diff -Nru temporalio-1.3.0/debian/changelog temporalio-1.3.0/debian/changelog --- temporalio-1.3.0/debian/changelog 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/debian/changelog 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,9 @@ +temporalio (1.3.0-17~ppa1) jammy; urgency=medium + + * v1.3.0 with updated rust dependencies (s390x and ppc64el support) + + -- Anton Troyanov Mon, 30 Oct 2023 19:40:00 +0000 + temporalio (1.3.0-5~ppa1) jammy; urgency=medium * Change package architecture to any diff -Nru temporalio-1.3.0/PKG-INFO temporalio-1.3.0/PKG-INFO --- temporalio-1.3.0/PKG-INFO 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/PKG-INFO 1970-01-01 00:00:00.000000000 +0000 @@ -17,7 +17,7 @@ Classifier: Programming Language :: Python :: 3.11 Provides-Extra: grpc Provides-Extra: opentelemetry -Requires-Dist: grpcio (>=1.48.0,<2.0.0) ; extra == "grpc" +Requires-Dist: grpcio (>=1.53.0,<2.0.0) ; extra == "grpc" Requires-Dist: opentelemetry-api (>=1.11.1,<2.0.0) ; extra == "opentelemetry" Requires-Dist: opentelemetry-sdk (>=1.11.1,<2.0.0) ; extra == "opentelemetry" Requires-Dist: protobuf (>=3.20) diff -Nru temporalio-1.3.0/pyproject.toml temporalio-1.3.0/pyproject.toml --- temporalio-1.3.0/pyproject.toml 2023-07-24 14:45:48.000000000 +0000 +++ temporalio-1.3.0/pyproject.toml 2023-10-30 19:40:00.000000000 +0000 @@ -31,7 +31,7 @@ "Bug Tracker" = "https://github.com/temporalio/sdk-python/issues" [tool.poetry.dependencies] -grpcio = { version = "^1.48.0", optional = true } +grpcio = {version = "^1.53.0", optional = true} opentelemetry-api = { version = "^1.11.1", optional = true } opentelemetry-sdk = { version = "^1.11.1", optional = true } protobuf = ">=3.20" diff -Nru temporalio-1.3.0/setup.py temporalio-1.3.0/setup.py --- temporalio-1.3.0/setup.py 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/setup.py 1970-01-01 00:00:00.000000000 +0000 @@ -84,6 +84,7 @@ 'sdk-core/client/src/workflow_handle/*', 'sdk-core/core-api/*', 'sdk-core/core-api/src/*', + 'sdk-core/core-api/src/telemetry/*', 'sdk-core/core/*', 'sdk-core/core/benches/*', 'sdk-core/core/src/*', @@ -170,7 +171,7 @@ extras_require = \ {':python_version < "3.11"': ['python-dateutil>=2.8.2,<3.0.0'], - 'grpc': ['grpcio>=1.48.0,<2.0.0'], + 'grpc': ['grpcio>=1.53.0,<2.0.0'], 'opentelemetry': ['opentelemetry-api>=1.11.1,<2.0.0', 'opentelemetry-sdk>=1.11.1,<2.0.0']} diff -Nru temporalio-1.3.0/temporalio/bridge/Cargo.lock temporalio-1.3.0/temporalio/bridge/Cargo.lock --- temporalio-1.3.0/temporalio/bridge/Cargo.lock 2023-07-24 14:45:48.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -4,9 +4,9 @@ [[package]] name = "addr2line" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -41,14 +41,20 @@ [[package]] name = "aho-corasick" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "6748e8def348ed4d14996fa801f4122cd763fff530258cdc03f64b25f89d3a5a" dependencies = [ "memchr", ] [[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] name = "android-tzdata" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -56,9 +62,9 @@ [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "arc-swap" @@ -85,18 +91,18 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.23", + "syn 2.0.29", ] [[package]] name = "async-trait" -version = "0.1.70" +version = "0.1.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79fa67157abdfd688a259b6648808757db9347af834624f27ec646da976aee5d" +checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.23", + "syn 2.0.29", ] [[package]] @@ -107,13 +113,13 @@ [[package]] name = "axum" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8175979259124331c1d7bf6586ee7e0da434155e4b2d48ec2c8386281d8df39" +checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" dependencies = [ "async-trait", "axum-core", - "bitflags", + "bitflags 1.3.2", "bytes", "futures-util", "http", @@ -163,9 +169,9 @@ [[package]] name = "backtrace" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", @@ -178,12 +184,6 @@ [[package]] name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" @@ -201,6 +201,12 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] +name = "bitflags" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" + +[[package]] name = "block-buffer" version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -250,11 +256,12 @@ [[package]] name = "cc" -version = "1.0.79" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "jobserver", + "libc", ] [[package]] @@ -444,12 +451,12 @@ [[package]] name = "dashmap" -version = "5.4.0" +version = "5.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" +checksum = "edd72493923899c6f10c641bdbdeddc7183d6396641d99c1a0d1597f37f92e28" dependencies = [ "cfg-if", - "hashbrown 0.12.3", + "hashbrown 0.14.0", "lock_api", "once_cell", "parking_lot_core", @@ -524,15 +531,15 @@ [[package]] name = "either" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if", ] @@ -554,35 +561,41 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.23", + "syn 2.0.29", ] [[package]] name = "enum_dispatch" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f36e95862220b211a6e2aa5eca09b4fa391b13cd52ceb8035a24bf65a79de2" +checksum = "8f33313078bb8d4d05a2733a94ac4c2d8a0df9a2b84424ebf4f33bfc224a890e" dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.29", ] [[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] name = "erased-serde" -version = "0.3.27" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f94c0e13118e7d7533271f754a168ae8400e6a1cc043f2bfd53cc7290f1a1de3" +checksum = "837c0466252947ada828b975e12daf82e18bb5444e4df87be6038d4469e2a3d2" dependencies = [ "serde", ] [[package]] name = "errno" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" dependencies = [ "errno-dragonfly", "libc", @@ -601,22 +614,19 @@ [[package]] name = "fastrand" -version = "1.9.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] +checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" [[package]] name = "filetime" -version = "0.2.21" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" +checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.2.16", + "redox_syscall", "windows-sys", ] @@ -628,9 +638,9 @@ [[package]] name = "flate2" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" dependencies = [ "crc32fast", "miniz_oxide", @@ -722,7 +732,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.23", + "syn 2.0.29", ] [[package]] @@ -790,20 +800,20 @@ dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", ] [[package]] name = "gimli" -version = "0.27.3" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "governor" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c390a940a5d157878dd057c78680a33ce3415bcd05b4799509ea44210914b4d5" +checksum = "821239e5672ff23e2a7060901fa622950bbd80b649cdaadd78d1c1767ed14eb4" dependencies = [ "cfg-if", "dashmap", @@ -819,9 +829,9 @@ [[package]] name = "h2" -version = "0.3.20" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ "bytes", "fnv", @@ -829,7 +839,7 @@ "futures-sink", "futures-util", "http", - "indexmap", + "indexmap 1.9.3", "slab", "tokio", "tokio-util", @@ -844,11 +854,12 @@ [[package]] name = "hashbrown" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" dependencies = [ "ahash", + "allocator-api2", ] [[package]] @@ -902,9 +913,9 @@ [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" @@ -923,7 +934,7 @@ "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.4.9", "tokio", "tower-service", "tracing", @@ -939,9 +950,9 @@ "futures-util", "http", "hyper", - "rustls 0.21.3", + "rustls", "tokio", - "tokio-rustls 0.24.1", + "tokio-rustls", ] [[package]] @@ -983,6 +994,16 @@ ] [[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", +] + +[[package]] name = "indoc" version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1008,20 +1029,9 @@ [[package]] name = "inventory" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c38a87a1e0e2752433cd4b26019a469112a25fb43b30f5ee9b3b898925c5a0f9" - -[[package]] -name = "io-lifetimes" -version = "1.0.11" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys", -] +checksum = "a53088c87cf71c9d4f3372a2cb9eea1e7b8a0b1bf8b7f7d23fe5b76dbb07e63b" [[package]] name = "ipnet" @@ -1039,10 +1049,19 @@ ] [[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] name = "itoa" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "jobserver" @@ -1076,9 +1095,9 @@ [[package]] name = "linux-raw-sys" -version = "0.3.8" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" [[package]] name = "lock_api" @@ -1092,24 +1111,24 @@ [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "lru" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" +checksum = "eedb2bdbad7e0634f83989bf596f497b070130daaa398ab22d84c39e266deec5" dependencies = [ - "hashbrown 0.13.2", + "hashbrown 0.14.0", ] [[package]] -name = "mach" -version = "0.3.2" +name = "mach2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +checksum = "6d0d1830bcd151a6fc4aea1369af235b36c1528fe976b8ff678683c9995eade8" dependencies = [ "libc", ] @@ -1125,9 +1144,9 @@ [[package]] name = "matchit" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40" +checksum = "ed1202b2a6f884ae56f04cff409ab315c5ce26b5e58d7412e484f01fd52f52ef" [[package]] name = "memchr" @@ -1184,7 +1203,7 @@ checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "windows-sys", ] @@ -1227,7 +1246,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cfg-if", "libc", "memoffset 0.7.1", @@ -1265,9 +1284,9 @@ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" dependencies = [ "autocfg", ] @@ -1284,9 +1303,9 @@ [[package]] name = "object" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +checksum = "77ac5bbd07aea88c60a577a1ce218075ffd59208b2d7ca97adf9bfc5aeb21ebe" dependencies = [ "memchr", ] @@ -1305,9 +1324,9 @@ [[package]] name = "opentelemetry" -version = "0.18.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d6c3d7288a106c0a363e4b0e8d308058d56902adefb16f4936f417ffef086e" +checksum = "9591d937bc0e6d2feb6f71a559540ab300ea49955229c347a517a28d27784c54" dependencies = [ "opentelemetry_api", "opentelemetry_sdk", @@ -1315,16 +1334,17 @@ [[package]] name = "opentelemetry-otlp" -version = "0.11.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1c928609d087790fc936a1067bdc310ae702bdf3b090c3f281b713622c8bbde" +checksum = "7e5e5a5c4135864099f3faafbe939eb4d7f9b80ebf68a8448da961b32a7c1275" dependencies = [ "async-trait", - "futures", - "futures-util", + "futures-core", "http", - "opentelemetry", "opentelemetry-proto", + "opentelemetry-semantic-conventions", + "opentelemetry_api", + "opentelemetry_sdk", "prost", "thiserror", "tokio", @@ -1333,68 +1353,87 @@ [[package]] name = "opentelemetry-prometheus" -version = "0.11.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06c3d833835a53cf91331d2cfb27e9121f5a95261f31f08a1f79ab31688b8da8" +checksum = "c7d81bc254e2d572120363a2b16cdb0d715d301b5789be0cfc26ad87e4e10e53" dependencies = [ - "opentelemetry", + "once_cell", + "opentelemetry_api", + "opentelemetry_sdk", "prometheus", "protobuf", ] [[package]] name = "opentelemetry-proto" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61a2f56df5574508dd86aaca016c917489e589ece4141df1b5e349af8d66c28" +checksum = "b1e3f814aa9f8c905d0ee4bde026afd3b2577a97c10e1699912e3e44f0c4cbeb" dependencies = [ - "futures", - "futures-util", - "opentelemetry", + "opentelemetry_api", + "opentelemetry_sdk", "prost", "tonic", - "tonic-build", +] + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73c9f9340ad135068800e7f1b24e9e09ed9e7143f5bf8518ded3d3ec69789269" +dependencies = [ + "opentelemetry", ] [[package]] name = "opentelemetry_api" -version = "0.18.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c24f96e21e7acc813c7a8394ee94978929db2bcc46cf6b5014fc612bf7760c22" +checksum = "8a81f725323db1b1206ca3da8bb19874bbd3f57c3bcd59471bfb04525b265b9b" dependencies = [ - "fnv", "futures-channel", "futures-util", - "indexmap", + "indexmap 1.9.3", "js-sys", "once_cell", "pin-project-lite", "thiserror", + "urlencoding", ] [[package]] name = "opentelemetry_sdk" -version = "0.18.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca41c4933371b61c2a2f214bf16931499af4ec90543604ec828f7a625c09113" +checksum = "fa8e705a0612d48139799fcbaba0d4a90f06277153e43dd2bdc16c6f0edd8026" dependencies = [ "async-trait", "crossbeam-channel", - "dashmap", - "fnv", "futures-channel", "futures-executor", "futures-util", "once_cell", "opentelemetry_api", + "ordered-float", "percent-encoding", "rand", + "regex", + "serde_json", "thiserror", "tokio", "tokio-stream", ] [[package]] +name = "ordered-float" +version = "3.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a54938017eacd63036332b4ae5c8a49fc8c0c1d6d629893057e4f13609edd06" +dependencies = [ + "num-traits", +] + +[[package]] name = "overload" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1418,7 +1457,7 @@ dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", + "redox_syscall", "smallvec", "windows-targets", ] @@ -1454,39 +1493,39 @@ [[package]] name = "petgraph" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap", + "indexmap 2.0.0", ] [[package]] name = "pin-project" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.23", + "syn 2.0.29", ] [[package]] name = "pin-project-lite" -version = "0.2.10" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" +checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" [[package]] name = "pin-utils" @@ -1514,7 +1553,7 @@ dependencies = [ "difflib", "float-cmp", - "itertools", + "itertools 0.10.5", "normalize-line-endings", "predicates-core", "regex", @@ -1548,9 +1587,9 @@ [[package]] name = "proc-macro2" -version = "1.0.63" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" dependencies = [ "unicode-ident", ] @@ -1588,7 +1627,7 @@ dependencies = [ "bytes", "heck", - "itertools", + "itertools 0.10.5", "lazy_static", "log", "multimap", @@ -1609,7 +1648,7 @@ checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" dependencies = [ "anyhow", - "itertools", + "itertools 0.10.5", "proc-macro2", "quote", "syn 1.0.109", @@ -1751,25 +1790,25 @@ [[package]] name = "quanta" -version = "0.9.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20afe714292d5e879d8b12740aa223c6a88f118af41870e8b6196e39a02238a8" +checksum = "a17e662a7a8291a865152364c20c7abc5e60486ab2001e8ec10b24862de0b9ab" dependencies = [ "crossbeam-utils", "libc", - "mach", + "mach2", "once_cell", "raw-cpuid", - "wasi 0.10.2+wasi-snapshot-preview1", + "wasi", "web-sys", "winapi", ] [[package]] name = "quote" -version = "1.0.29" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -1810,16 +1849,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332" dependencies = [ - "bitflags", -] - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] @@ -1828,19 +1858,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] name = "regex" -version = "1.9.0" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89089e897c013b3deb627116ae56a6955a72b8bed395c9526af31c9fe528b484" +checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.3.0", - "regex-syntax 0.7.3", + "regex-automata 0.3.6", + "regex-syntax 0.7.4", ] [[package]] @@ -1854,13 +1884,13 @@ [[package]] name = "regex-automata" -version = "0.3.0" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa250384981ea14565685dea16a9ccc4d1c541a13f82b9c168572264d1df8c56" +checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.3", + "regex-syntax 0.7.4", ] [[package]] @@ -1871,17 +1901,17 @@ [[package]] name = "regex-syntax" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab07dc67230e4a4718e70fd5c20055a4334b121f1f9db8fe63ef39ce9b8c846" +checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" [[package]] name = "reqwest" -version = "0.11.18" +version = "0.11.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" dependencies = [ - "base64 0.21.2", + "base64", "bytes", "encoding_rs", "futures-core", @@ -1898,13 +1928,13 @@ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.21.3", + "rustls", "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", "tokio", - "tokio-rustls 0.24.1", + "tokio-rustls", "tokio-util", "tower-service", "url", @@ -1918,17 +1948,16 @@ [[package]] name = "ring" -version = "0.16.20" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +checksum = "9babe80d5c16becf6594aa32ad2be8fe08498e7ae60b77de8df700e67f191d7e" dependencies = [ "cc", + "getrandom", "libc", - "once_cell", "spin", "untrusted", - "web-sys", - "winapi", + "windows-sys", ] [[package]] @@ -1971,7 +2000,7 @@ "proc-macro2", "quote", "rustfsm_trait", - "syn 1.0.109", + "syn 2.0.29", ] [[package]] @@ -1980,13 +2009,12 @@ [[package]] name = "rustix" -version = "0.37.23" +version = "0.38.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" +checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" dependencies = [ - "bitflags", + "bitflags 2.4.0", "errno", - "io-lifetimes", "libc", "linux-raw-sys", "windows-sys", @@ -1994,21 +2022,9 @@ [[package]] name = "rustls" -version = "0.20.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" -dependencies = [ - "log", - "ring", - "sct", - "webpki", -] - -[[package]] -name = "rustls" -version = "0.21.3" +version = "0.21.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b19faa85ecb5197342b54f987b142fb3e30d0c90da40f80ef4fa9a726e6676ed" +checksum = "446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c" dependencies = [ "log", "ring", @@ -2034,14 +2050,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" dependencies = [ - "base64 0.21.2", + "base64", ] [[package]] name = "rustls-webpki" -version = "0.101.0" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89efed4bd0af2a8de0feb22ba38030244c93db56112b8aa67d27022286852b1c" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ "ring", "untrusted", @@ -2049,15 +2065,15 @@ [[package]] name = "rustversion" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc31bd9b61a32c31f9650d18add92aa83a49ba979c143eefd27fe7177b05bd5f" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "schannel" @@ -2070,15 +2086,15 @@ [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sct" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ "ring", "untrusted", @@ -2086,11 +2102,11 @@ [[package]] name = "security-framework" -version = "2.9.1" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" dependencies = [ - "bitflags", + "bitflags 1.3.2", "core-foundation", "core-foundation-sys", "libc", @@ -2099,9 +2115,9 @@ [[package]] name = "security-framework-sys" -version = "2.9.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" dependencies = [ "core-foundation-sys", "libc", @@ -2109,35 +2125,35 @@ [[package]] name = "semver" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" [[package]] name = "serde" -version = "1.0.166" +version = "1.0.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d01b7404f9d441d3ad40e6a636a7782c377d2abdbe4fa2440e2edcc2f4f10db8" +checksum = "9f5db24220c009de9bd45e69fb2938f4b6d2df856aa9304ce377b3180f83b7c1" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.166" +version = "1.0.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd83d6dde2b6b2d466e14d9d1acce8816dedee94f735eac6395808b3483c6d6" +checksum = "5ad697f7e0b65af4983a4ce8f56ed5b357e8d3c36651bf6a7e13639c17b8e670" dependencies = [ "proc-macro2", "quote", - "syn 2.0.23", + "syn 2.0.29", ] [[package]] name = "serde_json" -version = "1.0.100" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f1e14e89be7aa4c4b78bdbdc9eb5bf8517829a600ae8eaa39a6e1d960b5185c" +checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" dependencies = [ "itoa", "ryu", @@ -2198,15 +2214,15 @@ [[package]] name = "siphasher" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] @@ -2222,9 +2238,9 @@ [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" [[package]] name = "socket2" @@ -2237,10 +2253,20 @@ ] [[package]] +name = "socket2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] name = "spin" -version = "0.5.2" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "static_assertions" @@ -2273,9 +2299,9 @@ [[package]] name = "syn" -version = "2.0.23" +version = "2.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737" +checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" dependencies = [ "proc-macro2", "quote", @@ -2290,9 +2316,9 @@ [[package]] name = "tar" -version = "0.4.38" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" +checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" dependencies = [ "filetime", "libc", @@ -2301,20 +2327,19 @@ [[package]] name = "target-lexicon" -version = "0.12.8" +version = "0.12.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1c7f239eb94671427157bd93b3694320f3668d4e1eff08c7285366fd777fac" +checksum = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a" [[package]] name = "tempfile" -version = "3.6.0" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ - "autocfg", "cfg-if", "fastrand", - "redox_syscall 0.3.5", + "redox_syscall", "rustix", "windows-sys", ] @@ -2335,6 +2360,7 @@ "opentelemetry", "parking_lot", "prost-types", + "temporal-sdk-core-api", "temporal-sdk-core-protos", "thiserror", "tokio", @@ -2374,7 +2400,7 @@ "anyhow", "arc-swap", "async-trait", - "base64 0.21.2", + "base64", "crossbeam", "dashmap", "derive_builder", @@ -2387,7 +2413,7 @@ "governor", "http", "hyper", - "itertools", + "itertools 0.11.0", "lazy_static", "lru", "mockall", @@ -2396,6 +2422,7 @@ "opentelemetry", "opentelemetry-otlp", "opentelemetry-prometheus", + "opentelemetry_sdk", "parking_lot", "pin-project", "prometheus", @@ -2421,7 +2448,6 @@ "tonic-build", "tracing", "tracing-futures", - "tracing-opentelemetry", "tracing-subscriber", "url", "uuid", @@ -2434,10 +2460,11 @@ dependencies = [ "async-trait", "derive_builder", + "derive_more", + "opentelemetry", "prost-types", "serde", "serde_json", - "temporal-client", "temporal-sdk-core-protos", "thiserror", "tokio", @@ -2451,7 +2478,7 @@ version = "0.1.0" dependencies = [ "anyhow", - "base64 0.21.2", + "base64", "derive_more", "prost", "prost-wkt", @@ -2474,22 +2501,22 @@ [[package]] name = "thiserror" -version = "1.0.41" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c16a64ba9387ef3fdae4f9c1a7f07a0997fce91985c0336f1ddc1822b3b37802" +checksum = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.41" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d14928354b01c4d6a4f0e549069adef399a284e7995c7ccca94e8a07a5346c59" +checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.23", + "syn 2.0.29", ] [[package]] @@ -2504,9 +2531,9 @@ [[package]] name = "time" -version = "0.3.22" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" +checksum = "59e399c068f43a5d116fedaf73b203fa4f9c519f17e2b34f63221d3792f81446" dependencies = [ "serde", "time-core", @@ -2535,11 +2562,10 @@ [[package]] name = "tokio" -version = "1.29.1" +version = "1.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" dependencies = [ - "autocfg", "backtrace", "bytes", "libc", @@ -2548,7 +2574,7 @@ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2", + "socket2 0.5.3", "tokio-macros", "windows-sys", ] @@ -2571,18 +2597,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.23", -] - -[[package]] -name = "tokio-rustls" -version = "0.23.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" -dependencies = [ - "rustls 0.20.8", - "tokio", - "webpki", + "syn 2.0.29", ] [[package]] @@ -2591,7 +2606,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.21.3", + "rustls", "tokio", ] @@ -2622,14 +2637,14 @@ [[package]] name = "tonic" -version = "0.8.3" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f219fad3b929bef19b1f86fbc0358d35daed8f2cac972037ac0dc10bbb8d5fb" +checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" dependencies = [ "async-stream", "async-trait", "axum", - "base64 0.13.1", + "base64", "bytes", "futures-core", "futures-util", @@ -2641,25 +2656,22 @@ "percent-encoding", "pin-project", "prost", - "prost-derive", "rustls-native-certs", "rustls-pemfile", "tokio", - "tokio-rustls 0.23.4", + "tokio-rustls", "tokio-stream", - "tokio-util", "tower", "tower-layer", "tower-service", "tracing", - "tracing-futures", ] [[package]] name = "tonic-build" -version = "0.8.4" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf5e9b9c0f7e0a7c027dcfaba7b2c60816c7049171f679d99ee2ff65d0de8c4" +checksum = "a6fdaae4c2c638bb70fe42803a26fbd6fc6ac8c72f5c59f67ecc2a2dcabf4b07" dependencies = [ "prettyplease", "proc-macro2", @@ -2676,7 +2688,7 @@ dependencies = [ "futures-core", "futures-util", - "indexmap", + "indexmap 1.9.3", "pin-project", "pin-project-lite", "rand", @@ -2721,7 +2733,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.23", + "syn 2.0.29", ] [[package]] @@ -2756,20 +2768,6 @@ ] [[package]] -name = "tracing-opentelemetry" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21ebb87a95ea13271332df069020513ab70bdb5637ca42d6e492dc3bbbad48de" -dependencies = [ - "once_cell", - "opentelemetry", - "tracing", - "tracing-core", - "tracing-log", - "tracing-subscriber", -] - -[[package]] name = "tracing-subscriber" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2802,9 +2800,9 @@ [[package]] name = "typetag" -version = "0.2.9" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "092e9b66a97c5f12e64f2d9c08c27d80342ff1ecde1d92288f939f55f5f1bcb3" +checksum = "80960fd143d4c96275c0e60b08f14b81fbb468e79bc0ef8fbda69fb0afafae43" dependencies = [ "erased-serde", "inventory", @@ -2815,13 +2813,13 @@ [[package]] name = "typetag-impl" -version = "0.2.9" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae02a82d555be0636f3157d90b6e0ccc6eda4cbc2af123187682143ce3035f1" +checksum = "bfc13d450dc4a695200da3074dacf43d449b968baee95e341920e47f61a3b40f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.23", + "syn 2.0.29", ] [[package]] @@ -2832,9 +2830,9 @@ [[package]] name = "unicode-ident" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unicode-normalization" @@ -2853,9 +2851,9 @@ [[package]] name = "untrusted" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" @@ -2869,10 +2867,16 @@ ] [[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] name = "uuid" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d023da39d1fde5a8a3fe1f3e01ca9632ada0a63e9797de55a879d6e2236277be" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" dependencies = [ "getrandom", ] @@ -2900,12 +2904,6 @@ [[package]] name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" - -[[package]] -name = "wasi" version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" @@ -2931,7 +2929,7 @@ "once_cell", "proc-macro2", "quote", - "syn 2.0.23", + "syn 2.0.29", "wasm-bindgen-shared", ] @@ -2965,7 +2963,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.23", + "syn 2.0.29", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2978,9 +2976,9 @@ [[package]] name = "wasm-streams" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bbae3363c08332cadccd13b67db371814cd214c2524020932f0804b8cf7c078" +checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7" dependencies = [ "futures-util", "js-sys", @@ -3000,23 +2998,10 @@ ] [[package]] -name = "webpki" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] name = "webpki-roots" -version = "0.22.6" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" -dependencies = [ - "webpki", -] +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" [[package]] name = "which" @@ -3062,9 +3047,9 @@ [[package]] name = "windows-targets" -version = "0.48.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -3077,60 +3062,61 @@ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if", + "windows-sys", ] [[package]] name = "xattr" -version = "0.2.3" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" +checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" dependencies = [ "libc", ] diff -Nru temporalio-1.3.0/temporalio/bridge/Cargo.toml temporalio-1.3.0/temporalio/bridge/Cargo.toml --- temporalio-1.3.0/temporalio/bridge/Cargo.toml 2023-07-24 14:45:48.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -21,7 +21,7 @@ temporal-sdk-core-protos = { version = "0.1.0", path = "./sdk-core/sdk-core-protos" } tokio = "1.26" tokio-stream = "0.1" -tonic = "0.8" +tonic = "0.9" tracing = "0.1" url = "2.2" diff -Nru temporalio-1.3.0/temporalio/bridge/runtime.py temporalio-1.3.0/temporalio/bridge/runtime.py --- temporalio-1.3.0/temporalio/bridge/runtime.py 2023-07-24 14:45:48.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/runtime.py 2023-10-30 19:40:00.000000000 +0000 @@ -27,14 +27,6 @@ @dataclass(frozen=True) -class TracingConfig: - """Python representation of the Rust struct for tracing config.""" - - filter: str - opentelemetry: OpenTelemetryConfig - - -@dataclass(frozen=True) class LoggingConfig: """Python representation of the Rust struct for logging config.""" @@ -48,6 +40,9 @@ opentelemetry: Optional[OpenTelemetryConfig] prometheus: Optional[PrometheusConfig] + attach_service_name: bool + global_tags: Optional[Mapping[str, str]] + metric_prefix: Optional[str] @dataclass(frozen=True) @@ -57,6 +52,7 @@ url: str headers: Mapping[str, str] metric_periodicity_millis: Optional[int] + metric_temporality_delta: bool @dataclass(frozen=True) @@ -64,13 +60,13 @@ """Python representation of the Rust struct for Prometheus config.""" bind_address: str + counters_total_suffix: bool + unit_suffix: bool @dataclass(frozen=True) class TelemetryConfig: """Python representation of the Rust struct for telemetry config.""" - tracing: Optional[TracingConfig] logging: Optional[LoggingConfig] metrics: Optional[MetricsConfig] - global_tags: Mapping[str, str] diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg temporalio-1.3.0/temporalio/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg --- temporalio-1.3.0/temporalio/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/.buildkite/docker/Dockerfile temporalio-1.3.0/temporalio/bridge/sdk-core/.buildkite/docker/Dockerfile --- temporalio-1.3.0/temporalio/bridge/sdk-core/.buildkite/docker/Dockerfile 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/.buildkite/docker/Dockerfile 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -FROM rust:1.68 +FROM rust:1.71 RUN rustup component add rustfmt && \ rustup component add clippy diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/Cargo.toml temporalio-1.3.0/temporalio/bridge/sdk-core/Cargo.toml --- temporalio-1.3.0/temporalio/bridge/sdk-core/Cargo.toml 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -1,2 +1,7 @@ [workspace] members = ["core", "client", "core-api", "fsm", "test-utils", "sdk-core-protos", "sdk"] + +[workspace.dependencies] +tonic = "0.9" +tonic-build = "0.9" +opentelemetry = "0.20" diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/client/Cargo.toml temporalio-1.3.0/temporalio/bridge/sdk-core/client/Cargo.toml --- temporalio-1.3.0/temporalio/bridge/sdk-core/client/Cargo.toml 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/client/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -20,12 +20,12 @@ futures-retry = "0.6.0" http = "0.2" once_cell = "1.13" -opentelemetry = { version = "0.18", features = ["metrics"] } +opentelemetry = { workspace = true, features = ["metrics"] } parking_lot = "0.12" prost-types = "0.11" thiserror = "1.0" tokio = "1.1" -tonic = { version = "0.8", features = ["tls", "tls-roots"] } +tonic = { workspace = true, features = ["tls", "tls-roots"] } tower = "0.4" tracing = "0.1" url = "2.2" @@ -33,7 +33,9 @@ [dependencies.temporal-sdk-core-protos] path = "../sdk-core-protos" -version = "0.1" + +[dependencies.temporal-sdk-core-api] +path = "../core-api" [dev-dependencies] assert_matches = "1" diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/client/src/lib.rs temporalio-1.3.0/temporalio/bridge/sdk-core/client/src/lib.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/client/src/lib.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/client/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,6 @@ mod workflow_handle; pub use crate::retry::{CallType, RetryClient, RETRYABLE_ERROR_CODES}; -pub use metrics::ClientMetricProvider; pub use raw::{HealthService, OperatorService, TestService, WorkflowService}; pub use temporal_sdk_core_protos::temporal::api::{ enums::v1::ArchivalState, @@ -44,6 +43,7 @@ sync::Arc, time::{Duration, Instant}, }; +use temporal_sdk_core_api::telemetry::metrics::TemporalMeter; use temporal_sdk_core_protos::{ coresdk::{workflow_commands::QueryResult, IntoPayloadsExt}, grpc::health::v1::health_client::HealthClient, @@ -294,7 +294,7 @@ pub async fn connect( &self, namespace: impl Into, - metrics_meter: Option<&dyn ClientMetricProvider>, + metrics_meter: Option, headers: Option>>>, ) -> Result, ClientInitError> { let client = self @@ -312,7 +312,7 @@ /// See [RetryClient] for more pub async fn connect_no_namespace( &self, - metrics_meter: Option<&dyn ClientMetricProvider>, + metrics_meter: Option, headers: Option>>>, ) -> Result>, ClientInitError> { @@ -325,9 +325,9 @@ }; let channel = channel.connect().await?; let service = ServiceBuilder::new() - .layer_fn(|channel| GrpcMetricSvc { + .layer_fn(move |channel| GrpcMetricSvc { inner: channel, - metrics: metrics_meter.map(|mm| MetricsContext::new(vec![], mm)), + metrics: metrics_meter.clone().map(MetricsContext::new), }) .service(channel); let headers = headers.unwrap_or_default(); diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/client/src/metrics.rs temporalio-1.3.0/temporalio/bridge/sdk-core/client/src/metrics.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/client/src/metrics.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/client/src/metrics.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,69 +1,84 @@ use crate::{AttachMetricLabels, LONG_POLL_METHOD_NAMES}; use futures::{future::BoxFuture, FutureExt}; -use opentelemetry::{ - metrics::{Counter, Histogram}, - KeyValue, -}; use std::{ sync::Arc, task::{Context, Poll}, time::{Duration, Instant}, }; +use temporal_sdk_core_api::telemetry::metrics::{ + CoreMeter, Counter, Histogram, MetricAttributes, MetricKeyValue, MetricParameters, + TemporalMeter, +}; use tonic::{body::BoxBody, transport::Channel}; use tower::Service; /// Used to track context associated with metrics, and record/update them // Possible improvement: make generic over some type tag so that methods are only exposed if the // appropriate k/vs have already been set. -#[derive(Clone, Debug)] +#[derive(Clone, derive_more::DebugCustom)] +#[debug(fmt = "MetricsContext {{ attribs: {kvs:?}, poll_is_long: {poll_is_long} }}")] pub struct MetricsContext { - ctx: opentelemetry::Context, - kvs: Arc>, + kvs: MetricAttributes, poll_is_long: bool, - svc_request: Counter, - svc_request_failed: Counter, - long_svc_request: Counter, - long_svc_request_failed: Counter, - - svc_request_latency: Histogram, - long_svc_request_latency: Histogram, -} + svc_request: Arc, + svc_request_failed: Arc, + long_svc_request: Arc, + long_svc_request_failed: Arc, -/// Things that can provide metrics for the client implement this. Trait exists to avoid having -/// to make a whole new lower-level crate just for a tiny shared wrapper around OTel meters. -pub trait ClientMetricProvider: Send + Sync { - /// Construct a counter metric - fn counter(&self, name: &'static str) -> Counter; - /// Construct a histogram metric - fn histogram(&self, name: &'static str) -> Histogram; + svc_request_latency: Arc, + long_svc_request_latency: Arc, } impl MetricsContext { - pub(crate) fn new(kvs: Vec, metric_provider: &dyn ClientMetricProvider) -> Self { + pub(crate) fn new(tm: TemporalMeter) -> Self { + let meter = tm.inner; Self { - ctx: opentelemetry::Context::current(), - kvs: Arc::new(kvs), + kvs: meter.new_attributes(tm.default_attribs), poll_is_long: false, - svc_request: metric_provider.counter("request"), - svc_request_failed: metric_provider.counter("request_failure"), - long_svc_request: metric_provider.counter("long_request"), - long_svc_request_failed: metric_provider.counter("long_request_failure"), - svc_request_latency: metric_provider.histogram("request_latency"), - long_svc_request_latency: metric_provider.histogram("long_request_latency"), + svc_request: meter.counter(MetricParameters { + name: "request".into(), + description: "Count of client request successes by rpc name".into(), + unit: "".into(), + }), + svc_request_failed: meter.counter(MetricParameters { + name: "request_failure".into(), + description: "Count of client request failures by rpc name".into(), + unit: "".into(), + }), + long_svc_request: meter.counter(MetricParameters { + name: "long_request".into(), + description: "Count of long-poll request successes by rpc name".into(), + unit: "".into(), + }), + long_svc_request_failed: meter.counter(MetricParameters { + name: "long_request_failure".into(), + description: "Count of long-poll request failures by rpc name".into(), + unit: "".into(), + }), + svc_request_latency: meter.histogram(MetricParameters { + name: "request_latency".into(), + unit: "ms".into(), + description: "Histogram of client request latencies".into(), + }), + long_svc_request_latency: meter.histogram(MetricParameters { + name: "long_request_latency".into(), + unit: "ms".into(), + description: "Histogram of client long-poll request latencies".into(), + }), } } /// Extend an existing metrics context with new attributes, returning a new one - pub(crate) fn with_new_attrs(&self, new_kvs: impl IntoIterator) -> Self { + pub(crate) fn with_new_attrs(&self, new_kvs: impl IntoIterator) -> Self { let mut r = self.clone(); r.add_new_attrs(new_kvs); r } /// Add new attributes to the context, mutating it - pub(crate) fn add_new_attrs(&mut self, new_kvs: impl IntoIterator) { - Arc::make_mut(&mut self.kvs).extend(new_kvs); + pub(crate) fn add_new_attrs(&mut self, new_kvs: impl IntoIterator) { + self.kvs.add_new_attrs(new_kvs); } pub(crate) fn set_is_long_poll(&mut self) { @@ -73,18 +88,18 @@ /// A request to the temporal service was made pub(crate) fn svc_request(&self) { if self.poll_is_long { - self.long_svc_request.add(&self.ctx, 1, &self.kvs); + self.long_svc_request.add(1, &self.kvs); } else { - self.svc_request.add(&self.ctx, 1, &self.kvs); + self.svc_request.add(1, &self.kvs); } } /// A request to the temporal service failed pub(crate) fn svc_request_failed(&self) { if self.poll_is_long { - self.long_svc_request_failed.add(&self.ctx, 1, &self.kvs); + self.long_svc_request_failed.add(1, &self.kvs); } else { - self.svc_request_failed.add(&self.ctx, 1, &self.kvs); + self.svc_request_failed.add(1, &self.kvs); } } @@ -92,10 +107,10 @@ pub(crate) fn record_svc_req_latency(&self, dur: Duration) { if self.poll_is_long { self.long_svc_request_latency - .record(&self.ctx, dur.as_millis() as u64, &self.kvs); + .record(dur.as_millis() as u64, &self.kvs); } else { self.svc_request_latency - .record(&self.ctx, dur.as_millis() as u64, &self.kvs); + .record(dur.as_millis() as u64, &self.kvs); } } } @@ -104,16 +119,16 @@ const KEY_SVC_METHOD: &str = "operation"; const KEY_TASK_QUEUE: &str = "task_queue"; -pub(crate) fn namespace_kv(ns: String) -> KeyValue { - KeyValue::new(KEY_NAMESPACE, ns) +pub(crate) fn namespace_kv(ns: String) -> MetricKeyValue { + MetricKeyValue::new(KEY_NAMESPACE, ns) } -pub(crate) fn task_queue_kv(tq: String) -> KeyValue { - KeyValue::new(KEY_TASK_QUEUE, tq) +pub(crate) fn task_queue_kv(tq: String) -> MetricKeyValue { + MetricKeyValue::new(KEY_TASK_QUEUE, tq) } -pub(crate) fn svc_operation(op: String) -> KeyValue { - KeyValue::new(KEY_SVC_METHOD, op) +pub(crate) fn svc_operation(op: String) -> MetricKeyValue { + MetricKeyValue::new(KEY_SVC_METHOD, op) } /// Implements metrics functionality for gRPC (really, any http) calls diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/client/src/raw.rs temporalio-1.3.0/temporalio/bridge/sdk-core/client/src/raw.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/client/src/raw.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/client/src/raw.rs 2023-10-30 19:40:00.000000000 +0000 @@ -9,6 +9,7 @@ LONG_POLL_TIMEOUT, }; use futures::{future::BoxFuture, FutureExt, TryFutureExt}; +use temporal_sdk_core_api::telemetry::metrics::MetricKeyValue; use temporal_sdk_core_protos::{ grpc::health::v1::{health_client::HealthClient, *}, temporal::api::{ @@ -199,10 +200,10 @@ #[derive(Debug)] pub(super) struct AttachMetricLabels { - pub(super) labels: Vec, + pub(super) labels: Vec, } impl AttachMetricLabels { - pub fn new(kvs: impl Into>) -> Self { + pub fn new(kvs: impl Into>) -> Self { Self { labels: kvs.into() } } pub fn namespace(ns: impl Into) -> Self { diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/core/Cargo.toml temporalio-1.3.0/temporalio/bridge/sdk-core/core/Cargo.toml --- temporalio-1.3.0/temporalio/bridge/sdk-core/core/Cargo.toml 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/core/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -36,18 +36,19 @@ flate2 = { version = "1.0", optional = true } futures = "0.3" futures-util = "0.3" -governor = "0.5" +governor = "0.6" http = "0.2" hyper = "0.14" -itertools = "0.10" +itertools = "0.11" lazy_static = "1.4" -lru = "0.10" +lru = "0.11" mockall = "0.11" nix = { version = "0.26", optional = true } once_cell = "1.5" -opentelemetry = { version = "0.18", features = ["rt-tokio"] } -opentelemetry-otlp = { version = "0.11", features = ["tokio", "metrics"] } -opentelemetry-prometheus = "0.11" +opentelemetry = { workspace = true, features = ["rt-tokio", "metrics"] } +opentelemetry_sdk = { version = "0.20", features = ["metrics"] } +opentelemetry-otlp = { version = "0.13", features = ["tokio", "metrics"] } +opentelemetry-prometheus = "0.13" parking_lot = { version = "0.12", features = ["send_guard"] } pin-project = "1.0" prometheus = "0.13" @@ -66,10 +67,9 @@ tokio = { version = "1.26", features = ["rt", "rt-multi-thread", "parking_lot", "time", "fs", "process"] } tokio-util = { version = "0.7", features = ["io", "io-util"] } tokio-stream = "0.1" -tonic = { version = "0.8", features = ["tls", "tls-roots"] } +tonic = { workspace = true, features = ["tls", "tls-roots"] } tracing = "0.1" tracing-futures = "0.2" -tracing-opentelemetry = "0.18" tracing-subscriber = { version = "0.3", features = ["parking_lot", "env-filter", "registry"] } url = "2.2" uuid = { version = "1.1", features = ["v4"] } @@ -78,32 +78,29 @@ # 1st party local deps [dependencies.temporal-sdk-core-api] path = "../core-api" -version = "0.1" +features = ["otel_impls"] [dependencies.temporal-sdk-core-protos] path = "../sdk-core-protos" -version = "0.1" features = ["history_builders"] [dependencies.temporal-client] path = "../client" -version = "0.1" [dependencies.rustfsm] path = "../fsm" -version = "0.1" [dev-dependencies] assert_matches = "1.4" bimap = "0.6.1" clap = { version = "4.0", features = ["derive"] } -criterion = "0.4" -rstest = "0.17" +criterion = "0.5" +rstest = "0.18" temporal-sdk-core-test-utils = { path = "../test-utils" } temporal-sdk = { path = "../sdk" } [build-dependencies] -tonic-build = "0.8" +tonic-build = { workspace = true } [[test]] name = "integ_tests" diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/core_tests/replay_flag.rs temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/core_tests/replay_flag.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/core_tests/replay_flag.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/core_tests/replay_flag.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,21 @@ -use crate::{test_help::canned_histories, worker::ManagedWFFunc}; +use crate::{ + test_help::{ + build_mock_pollers, canned_histories, hist_to_poll_resp, mock_worker, MockPollCfg, + }, + worker::{client::mocks::mock_workflow_client, ManagedWFFunc, LEGACY_QUERY_ID}, +}; use rstest::{fixture, rstest}; -use std::time::Duration; +use std::{collections::VecDeque, time::Duration}; use temporal_sdk::{WfContext, WorkflowFunction}; -use temporal_sdk_core_protos::temporal::api::enums::v1::CommandType; +use temporal_sdk_core_api::Worker; +use temporal_sdk_core_protos::{ + coresdk::{ + workflow_commands::{workflow_command::Variant::RespondToQuery, QueryResult, QuerySuccess}, + workflow_completion::WorkflowActivationCompletion, + }, + temporal::api::{enums::v1::CommandType, query::v1::WorkflowQuery}, +}; +use temporal_sdk_core_test_utils::start_timer_cmd; fn timers_wf(num_timers: u32) -> WorkflowFunction { WorkflowFunction::new(move |command_sink: WfContext| async move { @@ -63,3 +76,60 @@ assert_eq!(commands[0].command_type, CommandType::StartTimer as i32); wfm.shutdown().await.unwrap(); } + +#[tokio::test] +async fn replay_flag_correct_with_query() { + let wfid = "fake_wf_id"; + let t = canned_histories::single_timer("1"); + let tasks = VecDeque::from(vec![ + { + let mut pr = hist_to_poll_resp(&t, wfid.to_owned(), 2.into()); + // Server can issue queries that contain the WFT completion and the subsequent + // commands, but not the consequences yet. + pr.query = Some(WorkflowQuery { + query_type: "query-type".to_string(), + query_args: Some(b"hi".into()), + header: None, + }); + let h = pr.history.as_mut().unwrap(); + h.events.truncate(5); + pr.started_event_id = 3; + dbg!(&pr.resp); + pr + }, + hist_to_poll_resp(&t, wfid.to_owned(), 2.into()), + ]); + let mut mock = MockPollCfg::from_resp_batches(wfid, t, tasks, mock_workflow_client()); + mock.num_expected_legacy_query_resps = 1; + let mut mock = build_mock_pollers(mock); + mock.worker_cfg(|wc| wc.max_cached_workflows = 10); + let core = mock_worker(mock); + + let task = core.poll_workflow_activation().await.unwrap(); + core.complete_workflow_activation(WorkflowActivationCompletion::from_cmd( + task.run_id, + start_timer_cmd(1, Duration::from_secs(1)), + )) + .await + .unwrap(); + + let task = core.poll_workflow_activation().await.unwrap(); + assert!(task.is_replaying); + core.complete_workflow_activation(WorkflowActivationCompletion::from_cmd( + task.run_id, + RespondToQuery(QueryResult { + query_id: LEGACY_QUERY_ID.to_string(), + variant: Some( + QuerySuccess { + response: Some("hi".into()), + } + .into(), + ), + }), + )) + .await + .unwrap(); + + let task = core.poll_workflow_activation().await.unwrap(); + assert!(!task.is_replaying); +} diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/lib.rs temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/lib.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/lib.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -45,9 +45,8 @@ use crate::{ replay::{mock_client_from_histories, Historator, HistoryForReplay}, telemetry::{ - metrics::{MetricsContext, TemporalMeter}, - remove_trace_subscriber_for_current_thread, set_trace_subscriber_for_current_thread, - telemetry_init, TelemetryInstance, + metrics::MetricsContext, remove_trace_subscriber_for_current_thread, + set_trace_subscriber_for_current_thread, telemetry_init, TelemetryInstance, }, worker::client::WorkerClientBag, }; @@ -263,22 +262,15 @@ self.runtime_handle.clone() } - /// Returns the metric meter used for recording metrics, if they were enabled. - pub fn metric_meter(&self) -> Option { - self.telemetry.get_metric_meter() - } - - /// Return the trace subscriber associated with the telemetry options/instance. Can be used - /// to manually set the default for a thread or globally using the `tracing` crate, or with - /// [set_trace_subscriber_for_current_thread] - pub fn trace_subscriber(&self) -> Arc { - self.telemetry.trace_subscriber() - } - /// Return a reference to the owned [TelemetryInstance] pub fn telemetry(&self) -> &TelemetryInstance { &self.telemetry } + + /// Return a mutable reference to the owned [TelemetryInstance] + pub fn telemetry_mut(&mut self) -> &mut TelemetryInstance { + &mut self.telemetry + } } impl Drop for CoreRuntime { diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/telemetry/metrics.rs temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/telemetry/metrics.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/telemetry/metrics.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/telemetry/metrics.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,17 +1,45 @@ -use crate::telemetry::TelemetryInstance; +use crate::{ + abstractions::dbg_panic, + telemetry::{ + default_resource, metric_temporality_to_selector, prometheus_server::PromServer, + TelemetryInstance, TELEM_SERVICE_NAME, + }, +}; use opentelemetry::{ - metrics::{noop::NoopMeterProvider, Counter, Histogram, Meter, MeterProvider}, - sdk::{ - export::metrics::AggregatorSelector, - metrics::{ - aggregators::{histogram, last_value, sum, Aggregator}, - sdk_api::{Descriptor, InstrumentKind}, - }, + self, + metrics::{Meter, MeterProvider as MeterProviderT, Unit}, + KeyValue, +}; +use opentelemetry_otlp::WithExportConfig; +use opentelemetry_sdk::{ + metrics::{ + new_view, + reader::{AggregationSelector, DefaultAggregationSelector}, + Aggregation, Instrument, InstrumentKind, MeterProvider, MeterProviderBuilder, + PeriodicReader, View, + }, + runtime, AttributeSet, +}; +use parking_lot::RwLock; +use std::{ + collections::{HashMap, HashSet}, + net::SocketAddr, + sync::{ + atomic::{AtomicU64, Ordering}, + Arc, }, - Context, KeyValue, + time::Duration, }; -use std::{ops::Deref, sync::Arc, time::Duration}; -use temporal_client::ClientMetricProvider; +use temporal_sdk_core_api::telemetry::{ + metrics::{ + CoreMeter, Counter, Gauge, Histogram, LangMetricAttributes, MetricAttributes, + MetricCallBufferer, MetricEvent, MetricKeyValue, MetricKind, MetricParameters, + MetricUpdateVal, MetricsAttributesOptions, NoOpCoreMeter, + }, + OtelCollectorOptions, PrometheusExporterOptions, +}; +use tokio::task::AbortHandle; +use tonic::metadata::MetadataMap; /// Used to track context associated with metrics, and record/update them /// @@ -19,111 +47,78 @@ /// appropriate k/vs have already been set. #[derive(Clone)] pub(crate) struct MetricsContext { - ctx: Context, - kvs: Arc>, + meter: Arc, + kvs: MetricAttributes, instruments: Arc, } -/// Wraps OTel's [Meter] to ensure we name our metrics properly, or any other temporal-specific -/// metrics customizations -#[derive(derive_more::Constructor)] -pub struct TemporalMeter<'a> { - inner: &'a Meter, - metrics_prefix: &'static str, -} - -impl<'a> TemporalMeter<'a> { - pub(crate) fn counter(&self, name: &'static str) -> Counter { - self.inner - .u64_counter(self.metrics_prefix.to_string() + name) - .init() - } - - pub(crate) fn histogram(&self, name: &'static str) -> Histogram { - self.inner - .u64_histogram(self.metrics_prefix.to_string() + name) - .init() - } -} - -impl<'a> ClientMetricProvider for TemporalMeter<'a> { - fn counter(&self, name: &'static str) -> Counter { - self.counter(name) - } - - fn histogram(&self, name: &'static str) -> Histogram { - self.histogram(name) - } -} - -impl<'a> Deref for TemporalMeter<'a> { - type Target = dyn ClientMetricProvider + 'a; - - fn deref(&self) -> &Self::Target { - self as &Self::Target - } -} - struct Instruments { - wf_completed_counter: Counter, - wf_canceled_counter: Counter, - wf_failed_counter: Counter, - wf_cont_counter: Counter, - wf_e2e_latency: Histogram, - wf_task_queue_poll_empty_counter: Counter, - wf_task_queue_poll_succeed_counter: Counter, - wf_task_execution_failure_counter: Counter, - wf_task_sched_to_start_latency: Histogram, - wf_task_replay_latency: Histogram, - wf_task_execution_latency: Histogram, - act_poll_no_task: Counter, - act_task_received_counter: Counter, - act_execution_failed: Counter, - act_sched_to_start_latency: Histogram, - act_exec_latency: Histogram, - worker_registered: Counter, - num_pollers: Histogram, - task_slots_available: Histogram, - sticky_cache_hit: Counter, - sticky_cache_miss: Counter, - sticky_cache_size: Histogram, - sticky_cache_evictions: Counter, + wf_completed_counter: Arc, + wf_canceled_counter: Arc, + wf_failed_counter: Arc, + wf_cont_counter: Arc, + wf_e2e_latency: Arc, + wf_task_queue_poll_empty_counter: Arc, + wf_task_queue_poll_succeed_counter: Arc, + wf_task_execution_failure_counter: Arc, + wf_task_sched_to_start_latency: Arc, + wf_task_replay_latency: Arc, + wf_task_execution_latency: Arc, + act_poll_no_task: Arc, + act_task_received_counter: Arc, + act_execution_failed: Arc, + act_sched_to_start_latency: Arc, + act_exec_latency: Arc, + worker_registered: Arc, + num_pollers: Arc, + task_slots_available: Arc, + sticky_cache_hit: Arc, + sticky_cache_miss: Arc, + sticky_cache_size: Arc, + sticky_cache_evictions: Arc, } impl MetricsContext { pub(crate) fn no_op() -> Self { + let meter = Arc::new(NoOpCoreMeter); Self { - ctx: Default::default(), - kvs: Default::default(), - instruments: Arc::new(Instruments::new_explicit(TemporalMeter::new( - &NoopMeterProvider::new().meter("fakemeter"), - "fakemetrics", - ))), + kvs: meter.new_attributes(Default::default()), + instruments: Arc::new(Instruments::new(meter.as_ref())), + meter, } } - pub(crate) fn top_level(namespace: String, telemetry: &TelemetryInstance) -> Self { - let kvs = vec![KeyValue::new(KEY_NAMESPACE, namespace)]; - Self { - ctx: Context::current(), - kvs: Arc::new(kvs), - instruments: Arc::new(Instruments::new(telemetry)), + pub(crate) fn top_level(namespace: String, tq: String, telemetry: &TelemetryInstance) -> Self { + if let Some(mut meter) = telemetry.get_temporal_metric_meter() { + meter + .default_attribs + .attributes + .push(MetricKeyValue::new(KEY_NAMESPACE, namespace)); + meter.default_attribs.attributes.push(task_queue(tq)); + let kvs = meter.inner.new_attributes(meter.default_attribs); + Self { + kvs, + instruments: Arc::new(Instruments::new(meter.inner.as_ref())), + meter: meter.inner, + } + } else { + Self::no_op() } } - pub(crate) fn with_task_q(mut self, tq: String) -> Self { - Arc::make_mut(&mut self.kvs).push(task_queue(tq)); - self - } - /// Extend an existing metrics context with new attributes - pub(crate) fn with_new_attrs(&self, new_kvs: impl IntoIterator) -> Self { - let mut kvs = self.kvs.clone(); - Arc::make_mut(&mut kvs).extend(new_kvs); + pub(crate) fn with_new_attrs( + &self, + new_attrs: impl IntoIterator, + ) -> Self { + let as_attrs = self.meter.new_attributes(MetricsAttributesOptions::new( + new_attrs.into_iter().collect(), + )); + let kvs = self.kvs.merge(as_attrs); Self { - ctx: Context::current(), kvs, instruments: self.instruments.clone(), + meter: self.meter.clone(), } } @@ -131,113 +126,91 @@ pub(crate) fn wf_tq_poll_ok(&self) { self.instruments .wf_task_queue_poll_succeed_counter - .add(&self.ctx, 1, &self.kvs); + .add(1, &self.kvs); } /// A workflow task queue poll timed out / had empty response pub(crate) fn wf_tq_poll_empty(&self) { self.instruments .wf_task_queue_poll_empty_counter - .add(&self.ctx, 1, &self.kvs); + .add(1, &self.kvs); } /// A workflow task execution failed pub(crate) fn wf_task_failed(&self) { self.instruments .wf_task_execution_failure_counter - .add(&self.ctx, 1, &self.kvs); + .add(1, &self.kvs); } /// A workflow completed successfully pub(crate) fn wf_completed(&self) { - self.instruments - .wf_completed_counter - .add(&self.ctx, 1, &self.kvs); + self.instruments.wf_completed_counter.add(1, &self.kvs); } /// A workflow ended cancelled pub(crate) fn wf_canceled(&self) { - self.instruments - .wf_canceled_counter - .add(&self.ctx, 1, &self.kvs); + self.instruments.wf_canceled_counter.add(1, &self.kvs); } /// A workflow ended failed pub(crate) fn wf_failed(&self) { - self.instruments - .wf_failed_counter - .add(&self.ctx, 1, &self.kvs); + self.instruments.wf_failed_counter.add(1, &self.kvs); } /// A workflow continued as new pub(crate) fn wf_continued_as_new(&self) { - self.instruments - .wf_cont_counter - .add(&self.ctx, 1, &self.kvs); + self.instruments.wf_cont_counter.add(1, &self.kvs); } /// Record workflow total execution time in milliseconds pub(crate) fn wf_e2e_latency(&self, dur: Duration) { self.instruments .wf_e2e_latency - .record(&self.ctx, dur.as_millis() as u64, &self.kvs); + .record(dur.as_millis() as u64, &self.kvs); } /// Record workflow task schedule to start time in millis pub(crate) fn wf_task_sched_to_start_latency(&self, dur: Duration) { - self.instruments.wf_task_sched_to_start_latency.record( - &self.ctx, - dur.as_millis() as u64, - &self.kvs, - ); + self.instruments + .wf_task_sched_to_start_latency + .record(dur.as_millis() as u64, &self.kvs); } /// Record workflow task execution time in milliseconds pub(crate) fn wf_task_latency(&self, dur: Duration) { - self.instruments.wf_task_execution_latency.record( - &self.ctx, - dur.as_millis() as u64, - &self.kvs, - ); + self.instruments + .wf_task_execution_latency + .record(dur.as_millis() as u64, &self.kvs); } /// Record time it takes to catch up on replaying a WFT pub(crate) fn wf_task_replay_latency(&self, dur: Duration) { - self.instruments.wf_task_replay_latency.record( - &self.ctx, - dur.as_millis() as u64, - &self.kvs, - ); + self.instruments + .wf_task_replay_latency + .record(dur.as_millis() as u64, &self.kvs); } /// An activity long poll timed out pub(crate) fn act_poll_timeout(&self) { - self.instruments - .act_poll_no_task - .add(&self.ctx, 1, &self.kvs); + self.instruments.act_poll_no_task.add(1, &self.kvs); } /// A count of activity tasks received pub(crate) fn act_task_received(&self) { - self.instruments - .act_task_received_counter - .add(&self.ctx, 1, &self.kvs); + self.instruments.act_task_received_counter.add(1, &self.kvs); } /// An activity execution failed pub(crate) fn act_execution_failed(&self) { - self.instruments - .act_execution_failed - .add(&self.ctx, 1, &self.kvs); + self.instruments.act_execution_failed.add(1, &self.kvs); } /// Record activity task schedule to start time in millis pub(crate) fn act_sched_to_start_latency(&self, dur: Duration) { - self.instruments.act_sched_to_start_latency.record( - &self.ctx, - dur.as_millis() as u64, - &self.kvs, - ); + self.instruments + .act_sched_to_start_latency + .record(dur.as_millis() as u64, &self.kvs); } /// Record time it took to complete activity execution, from the time core generated the @@ -245,97 +218,169 @@ pub(crate) fn act_execution_latency(&self, dur: Duration) { self.instruments .act_exec_latency - .record(&self.ctx, dur.as_millis() as u64, &self.kvs); + .record(dur.as_millis() as u64, &self.kvs); } /// A worker was registered pub(crate) fn worker_registered(&self) { - self.instruments - .worker_registered - .add(&self.ctx, 1, &self.kvs); + self.instruments.worker_registered.add(1, &self.kvs); } /// Record current number of available task slots. Context should have worker type set. pub(crate) fn available_task_slots(&self, num: usize) { self.instruments .task_slots_available - .record(&self.ctx, num as u64, &self.kvs) + .record(num as u64, &self.kvs) } /// Record current number of pollers. Context should include poller type / task queue tag. pub(crate) fn record_num_pollers(&self, num: usize) { - self.instruments - .num_pollers - .record(&self.ctx, num as u64, &self.kvs); + self.instruments.num_pollers.record(num as u64, &self.kvs); } /// A workflow task found a cached workflow to run against pub(crate) fn sticky_cache_hit(&self) { - self.instruments - .sticky_cache_hit - .add(&self.ctx, 1, &self.kvs); + self.instruments.sticky_cache_hit.add(1, &self.kvs); } /// A workflow task did not find a cached workflow pub(crate) fn sticky_cache_miss(&self) { - self.instruments - .sticky_cache_miss - .add(&self.ctx, 1, &self.kvs); + self.instruments.sticky_cache_miss.add(1, &self.kvs); } /// Record current cache size (in number of wfs, not bytes) pub(crate) fn cache_size(&self, size: u64) { - self.instruments - .sticky_cache_size - .record(&self.ctx, size, &self.kvs); + self.instruments.sticky_cache_size.record(size, &self.kvs); } /// Count a workflow being evicted from the cache pub(crate) fn cache_eviction(&self) { - self.instruments - .sticky_cache_evictions - .add(&self.ctx, 1, &self.kvs); + self.instruments.sticky_cache_evictions.add(1, &self.kvs); } } impl Instruments { - fn new(telem: &TelemetryInstance) -> Self { - let no_op_meter: Meter; - let meter = if let Some(meter) = telem.get_metric_meter() { - meter - } else { - no_op_meter = NoopMeterProvider::default().meter("no_op"); - TemporalMeter::new(&no_op_meter, "fakemetrics") - }; - Self::new_explicit(meter) - } - - fn new_explicit(meter: TemporalMeter) -> Self { + fn new(meter: &dyn CoreMeter) -> Self { Self { - wf_completed_counter: meter.counter("workflow_completed"), - wf_canceled_counter: meter.counter("workflow_canceled"), - wf_failed_counter: meter.counter("workflow_failed"), - wf_cont_counter: meter.counter("workflow_continue_as_new"), - wf_e2e_latency: meter.histogram(WF_E2E_LATENCY_NAME), - wf_task_queue_poll_empty_counter: meter.counter("workflow_task_queue_poll_empty"), - wf_task_queue_poll_succeed_counter: meter.counter("workflow_task_queue_poll_succeed"), - wf_task_execution_failure_counter: meter.counter("workflow_task_execution_failed"), - wf_task_sched_to_start_latency: meter.histogram(WF_TASK_SCHED_TO_START_LATENCY_NAME), - wf_task_replay_latency: meter.histogram(WF_TASK_REPLAY_LATENCY_NAME), - wf_task_execution_latency: meter.histogram(WF_TASK_EXECUTION_LATENCY_NAME), - act_poll_no_task: meter.counter("activity_poll_no_task"), - act_task_received_counter: meter.counter("activity_task_received"), - act_execution_failed: meter.counter("activity_execution_failed"), - act_sched_to_start_latency: meter.histogram(ACT_SCHED_TO_START_LATENCY_NAME), - act_exec_latency: meter.histogram(ACT_EXEC_LATENCY_NAME), + wf_completed_counter: meter.counter(MetricParameters { + name: "workflow_completed".into(), + description: "Count of successfully completed workflows".into(), + unit: "".into(), + }), + wf_canceled_counter: meter.counter(MetricParameters { + name: "workflow_canceled".into(), + description: "Count of canceled workflows".into(), + unit: "".into(), + }), + wf_failed_counter: meter.counter(MetricParameters { + name: "workflow_failed".into(), + description: "Count of failed workflows".into(), + unit: "".into(), + }), + wf_cont_counter: meter.counter(MetricParameters { + name: "workflow_continue_as_new".into(), + description: "Count of continued-as-new workflows".into(), + unit: "".into(), + }), + wf_e2e_latency: meter.histogram(MetricParameters { + name: WF_E2E_LATENCY_NAME.into(), + unit: "ms".into(), + description: "Histogram of total workflow execution latencies".into(), + }), + wf_task_queue_poll_empty_counter: meter.counter(MetricParameters { + name: "workflow_task_queue_poll_empty".into(), + description: "Count of workflow task queue poll timeouts (no new task)".into(), + unit: "".into(), + }), + wf_task_queue_poll_succeed_counter: meter.counter(MetricParameters { + name: "workflow_task_queue_poll_succeed".into(), + description: "Count of workflow task queue poll successes".into(), + unit: "".into(), + }), + wf_task_execution_failure_counter: meter.counter(MetricParameters { + name: "workflow_task_execution_failed".into(), + description: "Count of workflow task execution failures".into(), + unit: "".into(), + }), + wf_task_sched_to_start_latency: meter.histogram(MetricParameters { + name: WF_TASK_SCHED_TO_START_LATENCY_NAME.into(), + unit: "ms".into(), + description: "Histogram of workflow task schedule-to-start latencies".into(), + }), + wf_task_replay_latency: meter.histogram(MetricParameters { + name: WF_TASK_REPLAY_LATENCY_NAME.into(), + unit: "ms".into(), + description: "Histogram of workflow task replay latencies".into(), + }), + wf_task_execution_latency: meter.histogram(MetricParameters { + name: WF_TASK_EXECUTION_LATENCY_NAME.into(), + unit: "ms".into(), + description: "Histogram of workflow task execution (not replay) latencies".into(), + }), + act_poll_no_task: meter.counter(MetricParameters { + name: "activity_poll_no_task".into(), + description: "Count of activity task queue poll timeouts (no new task)".into(), + unit: "".into(), + }), + act_task_received_counter: meter.counter(MetricParameters { + name: "activity_task_received".into(), + description: "Count of activity task queue poll successes".into(), + unit: "".into(), + }), + act_execution_failed: meter.counter(MetricParameters { + name: "activity_execution_failed".into(), + description: "Count of activity task execution failures".into(), + unit: "".into(), + }), + act_sched_to_start_latency: meter.histogram(MetricParameters { + name: ACT_SCHED_TO_START_LATENCY_NAME.into(), + unit: "ms".into(), + description: "Histogram of activity schedule-to-start latencies".into(), + }), + act_exec_latency: meter.histogram(MetricParameters { + name: ACT_EXEC_LATENCY_NAME.into(), + unit: "ms".into(), + description: "Histogram of activity execution latencies".into(), + }), // name kept as worker start for compat with old sdk / what users expect - worker_registered: meter.counter("worker_start"), - num_pollers: meter.histogram(NUM_POLLERS_NAME), - task_slots_available: meter.histogram(TASK_SLOTS_AVAILABLE_NAME), - sticky_cache_hit: meter.counter("sticky_cache_hit"), - sticky_cache_miss: meter.counter("sticky_cache_miss"), - sticky_cache_size: meter.histogram(STICKY_CACHE_SIZE_NAME), - sticky_cache_evictions: meter.counter("sticky_cache_total_forced_eviction"), + worker_registered: meter.counter(MetricParameters { + name: "worker_start".into(), + description: "Count of the number of initialized workers".into(), + unit: "".into(), + }), + num_pollers: meter.gauge(MetricParameters { + name: NUM_POLLERS_NAME.into(), + description: "Current number of active pollers per queue type".into(), + unit: "".into(), + }), + task_slots_available: meter.gauge(MetricParameters { + name: TASK_SLOTS_AVAILABLE_NAME.into(), + description: "Current number of available slots per task type".into(), + unit: "".into(), + }), + sticky_cache_hit: meter.counter(MetricParameters { + name: "sticky_cache_hit".into(), + description: "Count of times the workflow cache was used for a new workflow task" + .into(), + unit: "".into(), + }), + sticky_cache_miss: meter.counter(MetricParameters { + name: "sticky_cache_miss".into(), + description: + "Count of times the workflow cache was missing a workflow for a sticky task" + .into(), + unit: "".into(), + }), + sticky_cache_size: meter.gauge(MetricParameters { + name: STICKY_CACHE_SIZE_NAME.into(), + description: "Current number of cached workflows".into(), + unit: "".into(), + }), + sticky_cache_evictions: meter.counter(MetricParameters { + name: "sticky_cache_total_forced_eviction".into(), + description: "Count of evictions of cached workflows".into(), + unit: "".into(), + }), } } } @@ -348,35 +393,35 @@ const KEY_WORKER_TYPE: &str = "worker_type"; const KEY_EAGER: &str = "eager"; -pub(crate) fn workflow_poller() -> KeyValue { - KeyValue::new(KEY_POLLER_TYPE, "workflow_task") +pub(crate) fn workflow_poller() -> MetricKeyValue { + MetricKeyValue::new(KEY_POLLER_TYPE, "workflow_task") } -pub(crate) fn workflow_sticky_poller() -> KeyValue { - KeyValue::new(KEY_POLLER_TYPE, "sticky_workflow_task") +pub(crate) fn workflow_sticky_poller() -> MetricKeyValue { + MetricKeyValue::new(KEY_POLLER_TYPE, "sticky_workflow_task") } -pub(crate) fn activity_poller() -> KeyValue { - KeyValue::new(KEY_POLLER_TYPE, "activity_task") +pub(crate) fn activity_poller() -> MetricKeyValue { + MetricKeyValue::new(KEY_POLLER_TYPE, "activity_task") } -pub(crate) fn task_queue(tq: String) -> KeyValue { - KeyValue::new(KEY_TASK_QUEUE, tq) +pub(crate) fn task_queue(tq: String) -> MetricKeyValue { + MetricKeyValue::new(KEY_TASK_QUEUE, tq) } -pub(crate) fn activity_type(ty: String) -> KeyValue { - KeyValue::new(KEY_ACT_TYPE, ty) +pub(crate) fn activity_type(ty: String) -> MetricKeyValue { + MetricKeyValue::new(KEY_ACT_TYPE, ty) } -pub(crate) fn workflow_type(ty: String) -> KeyValue { - KeyValue::new(KEY_WF_TYPE, ty) +pub(crate) fn workflow_type(ty: String) -> MetricKeyValue { + MetricKeyValue::new(KEY_WF_TYPE, ty) } -pub(crate) fn workflow_worker_type() -> KeyValue { - KeyValue::new(KEY_WORKER_TYPE, "WorkflowWorker") +pub(crate) fn workflow_worker_type() -> MetricKeyValue { + MetricKeyValue::new(KEY_WORKER_TYPE, "WorkflowWorker") } -pub(crate) fn activity_worker_type() -> KeyValue { - KeyValue::new(KEY_WORKER_TYPE, "ActivityWorker") +pub(crate) fn activity_worker_type() -> MetricKeyValue { + MetricKeyValue::new(KEY_WORKER_TYPE, "ActivityWorker") } -pub(crate) fn local_activity_worker_type() -> KeyValue { - KeyValue::new(KEY_WORKER_TYPE, "LocalActivityWorker") +pub(crate) fn local_activity_worker_type() -> MetricKeyValue { + MetricKeyValue::new(KEY_WORKER_TYPE, "LocalActivityWorker") } -pub(crate) fn eager(is_eager: bool) -> KeyValue { - KeyValue::new(KEY_EAGER, is_eager) +pub(crate) fn eager(is_eager: bool) -> MetricKeyValue { + MetricKeyValue::new(KEY_EAGER, is_eager) } const WF_E2E_LATENCY_NAME: &str = "workflow_endtoend_latency"; @@ -427,45 +472,507 @@ /// broadly it's trying to represent latencies in millis. pub(super) static DEFAULT_MS_BUCKETS: &[f64] = &[50., 100., 500., 1000., 2500., 10_000.]; +/// Returns the default histogram buckets that lang should use for a given metric name if they +/// have not been overridden by the user. +/// +/// The name must *not* be prefixed with `temporal_` +pub fn default_buckets_for(histo_name: &str) -> &'static [f64] { + match histo_name { + WF_E2E_LATENCY_NAME => WF_LATENCY_MS_BUCKETS, + WF_TASK_EXECUTION_LATENCY_NAME | WF_TASK_REPLAY_LATENCY_NAME => WF_TASK_MS_BUCKETS, + WF_TASK_SCHED_TO_START_LATENCY_NAME | ACT_SCHED_TO_START_LATENCY_NAME => { + TASK_SCHED_TO_START_MS_BUCKETS + } + ACT_EXEC_LATENCY_NAME => ACT_EXE_MS_BUCKETS, + _ => DEFAULT_MS_BUCKETS, + } +} + /// Chooses appropriate aggregators for our metrics -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Default)] pub struct SDKAggSelector { - pub metric_prefix: &'static str, + default: DefaultAggregationSelector, +} +impl AggregationSelector for SDKAggSelector { + fn aggregation(&self, kind: InstrumentKind) -> Aggregation { + match kind { + InstrumentKind::Histogram => Aggregation::ExplicitBucketHistogram { + boundaries: DEFAULT_MS_BUCKETS.to_vec(), + record_min_max: true, + }, + _ => self.default.aggregation(kind), + } + } } -impl AggregatorSelector for SDKAggSelector { - fn aggregator_for(&self, descriptor: &Descriptor) -> Option> { - // Gauges are always last value - if *descriptor.instrument_kind() == InstrumentKind::GaugeObserver { - return Some(Arc::new(last_value())); - } - - if *descriptor.instrument_kind() == InstrumentKind::Histogram { - let dname = descriptor - .name() - .strip_prefix(self.metric_prefix) - .unwrap_or_else(|| descriptor.name()); - // Some recorders are just gauges - match dname { - STICKY_CACHE_SIZE_NAME | NUM_POLLERS_NAME | TASK_SLOTS_AVAILABLE_NAME => { - return Some(Arc::new(last_value())) +fn histo_view( + metric_name: &'static str, + buckets: &[f64], +) -> opentelemetry::metrics::Result> { + new_view( + Instrument::new().name(format!("*{metric_name}")), + opentelemetry_sdk::metrics::Stream::new().aggregation( + Aggregation::ExplicitBucketHistogram { + boundaries: buckets.to_vec(), + record_min_max: true, + }, + ), + ) +} + +pub(super) fn augment_meter_provider_with_defaults( + mpb: MeterProviderBuilder, + global_tags: &HashMap, +) -> opentelemetry::metrics::Result { + // Some histograms are actually gauges, but we have to use histograms otherwise they forget + // their value between collections since we don't use callbacks. + Ok(mpb + .with_view(histo_view(WF_E2E_LATENCY_NAME, WF_LATENCY_MS_BUCKETS)?) + .with_view(histo_view( + WF_TASK_EXECUTION_LATENCY_NAME, + WF_TASK_MS_BUCKETS, + )?) + .with_view(histo_view(WF_TASK_REPLAY_LATENCY_NAME, WF_TASK_MS_BUCKETS)?) + .with_view(histo_view( + WF_TASK_SCHED_TO_START_LATENCY_NAME, + TASK_SCHED_TO_START_MS_BUCKETS, + )?) + .with_view(histo_view( + ACT_SCHED_TO_START_LATENCY_NAME, + TASK_SCHED_TO_START_MS_BUCKETS, + )?) + .with_view(histo_view(ACT_EXEC_LATENCY_NAME, ACT_EXE_MS_BUCKETS)?) + .with_resource(default_resource(global_tags))) +} + +/// OTel has no built-in synchronous Gauge. Histograms used to be able to serve that purpose, but +/// they broke that. Lovely. So, we need to implement one by hand. +pub(crate) struct MemoryGaugeU64 { + labels_to_values: Arc>>, +} + +impl MemoryGaugeU64 { + fn new(params: MetricParameters, meter: &Meter) -> Self { + let gauge = meter + .u64_observable_gauge(params.name) + .with_unit(Unit::new(params.unit)) + .with_description(params.description) + .init(); + let map = Arc::new(RwLock::new(HashMap::::new())); + let map_c = map.clone(); + meter + .register_callback(&[gauge.as_any()], move |o| { + // This whole thing is... extra stupid. + // See https://github.com/open-telemetry/opentelemetry-rust/issues/1181 + // The performance is likely bad here, but, given this is only called when metrics + // are exported it should be livable for now. + let map_rlock = map_c.read(); + for (kvs, val) in map_rlock.iter() { + let kvs: Vec<_> = kvs + .iter() + .map(|(k, v)| KeyValue::new(k.clone(), v.clone())) + .collect(); + o.observe_u64(&gauge, *val, kvs.as_slice()) } - _ => (), - } + }) + .expect("instrument must exist we just created it"); + MemoryGaugeU64 { + labels_to_values: map, + } + } + fn record(&self, val: u64, kvs: &[KeyValue]) { + self.labels_to_values + .write() + .insert(AttributeSet::from(kvs), val); + } +} + +/// Create an OTel meter that can be used as a [CoreMeter] to export metrics over OTLP. +pub fn build_otlp_metric_exporter( + opts: OtelCollectorOptions, +) -> Result { + let exporter = opentelemetry_otlp::MetricsExporter::new( + opentelemetry_otlp::TonicExporterBuilder::default() + .with_endpoint(opts.url.to_string()) + .with_metadata(MetadataMap::from_headers((&opts.headers).try_into()?)), + Box::new(metric_temporality_to_selector(opts.metric_temporality)), + Box::::default(), + )?; + let reader = PeriodicReader::builder(exporter, runtime::Tokio) + .with_interval(opts.metric_periodicity) + .build(); + let mp = augment_meter_provider_with_defaults( + MeterProvider::builder().with_reader(reader), + &opts.global_tags, + )? + .build(); + Ok::<_, anyhow::Error>(CoreOtelMeter(mp.meter(TELEM_SERVICE_NAME))) +} + +pub struct StartedPromServer { + pub meter: Arc, + pub bound_addr: SocketAddr, + pub abort_handle: AbortHandle, +} + +/// Builds and runs a prometheus endpoint which can be scraped by prom instances for metrics export. +/// Returns the meter that can be used as a [CoreMeter]. +pub fn start_prometheus_metric_exporter( + opts: PrometheusExporterOptions, +) -> Result { + let (srv, exporter) = PromServer::new(&opts, SDKAggSelector::default())?; + let meter_provider = augment_meter_provider_with_defaults( + MeterProvider::builder().with_reader(exporter), + &opts.global_tags, + )? + .build(); + let bound_addr = srv.bound_addr(); + let handle = tokio::spawn(async move { srv.run().await }); + Ok(StartedPromServer { + meter: Arc::new(CoreOtelMeter(meter_provider.meter(TELEM_SERVICE_NAME))), + bound_addr, + abort_handle: handle.abort_handle(), + }) +} + +/// Buffers [MetricEvent]s for periodic consumption by lang +#[derive(Debug)] +pub struct MetricsCallBuffer { + instrument_ids: AtomicU64, + attribute_ids: AtomicU64, + calls_rx: crossbeam::channel::Receiver, + calls_tx: crossbeam::channel::Sender, +} +impl MetricsCallBuffer { + /// Create a new buffer with the given capacity + pub fn new(buffer_size: usize) -> Self { + let (calls_tx, calls_rx) = crossbeam::channel::bounded(buffer_size); + MetricsCallBuffer { + instrument_ids: AtomicU64::new(0), + attribute_ids: AtomicU64::new(0), + calls_rx, + calls_tx, + } + } + fn new_instrument(&self, params: MetricParameters, kind: MetricKind) -> BufferInstrument { + let id = self.instrument_ids.fetch_add(1, Ordering::AcqRel); + let _ = self.calls_tx.send(MetricEvent::Create { params, id, kind }); + BufferInstrument { + kind, + id, + tx: self.calls_tx.clone(), + } + } +} +impl CoreMeter for MetricsCallBuffer { + fn new_attributes(&self, opts: MetricsAttributesOptions) -> MetricAttributes { + let id = self.attribute_ids.fetch_add(1, Ordering::AcqRel); + let _ = self.calls_tx.send(MetricEvent::CreateAttributes { + id, + attributes: opts.attributes, + }); + MetricAttributes::Lang(LangMetricAttributes { + ids: HashSet::from([id]), + new_attributes: vec![], + }) + } - // Other recorders will select their appropriate buckets - let buckets = match dname { - WF_E2E_LATENCY_NAME => WF_LATENCY_MS_BUCKETS, - WF_TASK_EXECUTION_LATENCY_NAME | WF_TASK_REPLAY_LATENCY_NAME => WF_TASK_MS_BUCKETS, - WF_TASK_SCHED_TO_START_LATENCY_NAME | ACT_SCHED_TO_START_LATENCY_NAME => { - TASK_SCHED_TO_START_MS_BUCKETS - } - ACT_EXEC_LATENCY_NAME => ACT_EXE_MS_BUCKETS, - _ => DEFAULT_MS_BUCKETS, - }; - return Some(Arc::new(histogram(buckets))); + fn counter(&self, params: MetricParameters) -> Arc { + Arc::new(self.new_instrument(params, MetricKind::Counter)) + } + + fn histogram(&self, params: MetricParameters) -> Arc { + Arc::new(self.new_instrument(params, MetricKind::Histogram)) + } + + fn gauge(&self, params: MetricParameters) -> Arc { + Arc::new(self.new_instrument(params, MetricKind::Gauge)) + } +} +impl MetricCallBufferer for MetricsCallBuffer { + fn retrieve(&self) -> Vec { + self.calls_rx.try_iter().collect() + } +} + +struct BufferInstrument { + kind: MetricKind, + id: u64, + tx: crossbeam::channel::Sender, +} +impl BufferInstrument { + fn send(&self, value: u64, attributes: &MetricAttributes) { + let attributes = match attributes { + MetricAttributes::Lang(l) => l.clone(), + _ => panic!("MetricsCallBuffer only works with MetricAttributes::Lang"), + }; + let _ = self.tx.send(MetricEvent::Update { + id: self.id, + update: match self.kind { + MetricKind::Counter => MetricUpdateVal::Delta(value), + MetricKind::Gauge | MetricKind::Histogram => MetricUpdateVal::Value(value), + }, + attributes: attributes.clone(), + }); + } +} +impl Counter for BufferInstrument { + fn add(&self, value: u64, attributes: &MetricAttributes) { + self.send(value, attributes) + } +} +impl Gauge for BufferInstrument { + fn record(&self, value: u64, attributes: &MetricAttributes) { + self.send(value, attributes) + } +} +impl Histogram for BufferInstrument { + fn record(&self, value: u64, attributes: &MetricAttributes) { + self.send(value, attributes) + } +} + +#[derive(Debug)] +pub struct CoreOtelMeter(Meter); +impl CoreMeter for CoreOtelMeter { + fn new_attributes(&self, attribs: MetricsAttributesOptions) -> MetricAttributes { + MetricAttributes::OTel { + kvs: Arc::new(attribs.attributes.into_iter().map(KeyValue::from).collect()), + } + } + + fn counter(&self, params: MetricParameters) -> Arc { + Arc::new( + self.0 + .u64_counter(params.name) + .with_unit(Unit::new(params.unit)) + .with_description(params.description) + .init(), + ) + } + + fn histogram(&self, params: MetricParameters) -> Arc { + Arc::new( + self.0 + .u64_histogram(params.name) + .with_unit(Unit::new(params.unit)) + .with_description(params.description) + .init(), + ) + } + + fn gauge(&self, params: MetricParameters) -> Arc { + Arc::new(MemoryGaugeU64::new(params, &self.0)) + } +} + +impl Gauge for MemoryGaugeU64 { + fn record(&self, value: u64, attributes: &MetricAttributes) { + if let MetricAttributes::OTel { kvs } = attributes { + self.record(value, kvs); + } else { + dbg_panic!("Must use OTel attributes with an OTel metric implementation"); } + } +} + +#[derive(Debug, derive_more::Constructor)] +pub(crate) struct PrefixedMetricsMeter { + prefix: String, + meter: CM, +} +impl CoreMeter for PrefixedMetricsMeter { + fn new_attributes(&self, attribs: MetricsAttributesOptions) -> MetricAttributes { + self.meter.new_attributes(attribs) + } + + fn counter(&self, mut params: MetricParameters) -> Arc { + params.name = (self.prefix.clone() + &*params.name).into(); + self.meter.counter(params) + } + + fn histogram(&self, mut params: MetricParameters) -> Arc { + params.name = (self.prefix.clone() + &*params.name).into(); + self.meter.histogram(params) + } - Some(Arc::new(sum())) + fn gauge(&self, mut params: MetricParameters) -> Arc { + params.name = (self.prefix.clone() + &*params.name).into(); + self.meter.gauge(params) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use temporal_sdk_core_api::telemetry::METRIC_PREFIX; + use tracing::subscriber::NoSubscriber; + + #[test] + fn test_buffered_core_context() { + let no_op_subscriber = Arc::new(NoSubscriber::new()); + let call_buffer = Arc::new(MetricsCallBuffer::new(100)); + let telem_instance = TelemetryInstance::new( + no_op_subscriber, + None, + METRIC_PREFIX.to_string(), + Some(call_buffer.clone()), + true, + ); + let mc = MetricsContext::top_level("foo".to_string(), "q".to_string(), &telem_instance); + mc.cache_eviction(); + let events = call_buffer.retrieve(); + assert_matches!( + &events[0], + MetricEvent::CreateAttributes { + id: 0, + attributes + } + if attributes[0].key == "service_name" && + attributes[1].key == "namespace" && + attributes[2].key == "task_queue" + ); + // Verify all metrics are created. This number will need to get updated any time a metric + // is added. + let num_metrics = 22; + #[allow(clippy::needless_range_loop)] // Sorry clippy, this reads easier. + for metric_num in 1..=num_metrics { + assert_matches!(&events[metric_num], + MetricEvent::Create { id, .. } + if *id == (metric_num - 1) as u64 + ); + } + assert_matches!( + &events[num_metrics + 2], // +2 for attrib creation (at start), then this update + MetricEvent::Update { + id: 22, + attributes, + update: MetricUpdateVal::Delta(1) + } + if attributes.ids == HashSet::from([0]) + ); + // Verify creating a new context with new attributes merges them properly + let mc2 = mc.with_new_attrs([MetricKeyValue::new("gotta", "go fast")]); + mc2.wf_task_latency(Duration::from_secs(1)); + let events = call_buffer.retrieve(); + assert_matches!( + &events[0], + MetricEvent::CreateAttributes { + id: 1, + attributes + } + if attributes[0].key == "gotta" + ); + assert_matches!( + &events[1], + MetricEvent::Update { + id: 10, + attributes, + update: MetricUpdateVal::Value(1000) // milliseconds + } + if attributes.ids == HashSet::from([0, 1]) + ); + } + + #[test] + fn metric_buffer() { + let call_buffer = MetricsCallBuffer::new(10); + let ctr = call_buffer.counter(MetricParameters { + name: "ctr".into(), + description: "a counter".into(), + unit: "grognaks".into(), + }); + let histo = call_buffer.histogram(MetricParameters { + name: "histo".into(), + description: "a histogram".into(), + unit: "flubarbs".into(), + }); + let gauge = call_buffer.gauge(MetricParameters { + name: "gauge".into(), + description: "a counter".into(), + unit: "bleezles".into(), + }); + let attrs_1 = call_buffer.new_attributes(MetricsAttributesOptions { + attributes: vec![MetricKeyValue::new("hi", "yo")], + }); + let attrs_2 = call_buffer.new_attributes(MetricsAttributesOptions { + attributes: vec![MetricKeyValue::new("run", "fast")], + }); + ctr.add(1, &attrs_1); + histo.record(2, &attrs_1); + gauge.record(3, &attrs_2); + + let mut calls = call_buffer.retrieve(); + calls.reverse(); + assert_matches!( + calls.pop(), + Some(MetricEvent::Create { + params, + id: 0, + kind: MetricKind::Counter + }) + if params.name == "ctr" + ); + assert_matches!( + calls.pop(), + Some(MetricEvent::Create { + params, + id: 1, + kind: MetricKind::Histogram + }) + if params.name == "histo" + ); + assert_matches!( + calls.pop(), + Some(MetricEvent::Create { + params, + id: 2, + kind: MetricKind::Gauge + }) + if params.name == "gauge" + ); + assert_matches!( + calls.pop(), + Some(MetricEvent::CreateAttributes { + id: 0, + attributes + }) + if attributes[0].key == "hi" + ); + assert_matches!( + calls.pop(), + Some(MetricEvent::CreateAttributes { + id: 1, + attributes + }) + if attributes[0].key == "run" + ); + assert_matches!( + calls.pop(), + Some(MetricEvent::Update{ + id: 0, + attributes, + update: MetricUpdateVal::Delta(1) + }) + if attributes.ids == HashSet::from([0]) + ); + assert_matches!( + calls.pop(), + Some(MetricEvent::Update{ + id: 1, + attributes, + update: MetricUpdateVal::Value(2) + }) + if attributes.ids == HashSet::from([0]) + ); + assert_matches!( + calls.pop(), + Some(MetricEvent::Update{ + id: 2, + attributes, + update: MetricUpdateVal::Value(3) + }) + if attributes.ids == HashSet::from([1]) + ); } } diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/telemetry/mod.rs temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/telemetry/mod.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/telemetry/mod.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/telemetry/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,43 +5,33 @@ pub(crate) mod metrics; mod prometheus_server; +pub use metrics::{ + build_otlp_metric_exporter, default_buckets_for, start_prometheus_metric_exporter, + MetricsCallBuffer, +}; + use crate::telemetry::{ log_export::{CoreLogExportLayer, CoreLogsOut}, - metrics::SDKAggSelector, - prometheus_server::PromServer, + metrics::PrefixedMetricsMeter, }; -use crossbeam::channel::Receiver; use itertools::Itertools; use once_cell::sync::OnceCell; -use opentelemetry::{ - metrics::{Meter, MeterProvider}, - runtime, - sdk::{ - export::metrics::aggregation::{self, Temporality, TemporalitySelector}, - trace::Config, - Resource, - }, - KeyValue, -}; -use opentelemetry_otlp::WithExportConfig; +use opentelemetry::{sdk::Resource, KeyValue}; +use opentelemetry_sdk::metrics::{data::Temporality, reader::TemporalitySelector, InstrumentKind}; use parking_lot::Mutex; use std::{ cell::RefCell, collections::{HashMap, VecDeque}, - convert::TryInto, env, - net::SocketAddr, sync::{ atomic::{AtomicBool, Ordering}, Arc, }, - time::Duration, }; use temporal_sdk_core_api::telemetry::{ - CoreLog, CoreTelemetry, Logger, MetricTemporality, MetricsExporter, OtelCollectorOptions, - TelemetryOptions, TraceExporter, + metrics::{CoreMeter, MetricKeyValue, MetricsAttributesOptions, TemporalMeter}, + CoreLog, CoreTelemetry, Logger, MetricTemporality, TelemetryOptions, }; -use tonic::metadata::MetadataMap; use tracing::{Level, Subscriber}; use tracing_subscriber::{layer::SubscriberExt, EnvFilter, Layer}; @@ -57,53 +47,73 @@ /// Holds initialized tracing/metrics exporters, etc pub struct TelemetryInstance { - metric_prefix: &'static str, + metric_prefix: String, logs_out: Option>, - metrics: Option<(Box, Meter)>, + metrics: Option>, trace_subscriber: Arc, - prom_binding: Option, - _keepalive_rx: Receiver<()>, + attach_service_name: bool, } impl TelemetryInstance { fn new( trace_subscriber: Arc, logs_out: Option>, - metric_prefix: &'static str, - mut meter_provider: Option>, - prom_binding: Option, - keepalive_rx: Receiver<()>, + metric_prefix: String, + metrics: Option>, + attach_service_name: bool, ) -> Self { - let metrics = meter_provider.take().map(|mp| { - let meter = mp.meter(TELEM_SERVICE_NAME); - (mp, meter) - }); Self { metric_prefix, logs_out, metrics, trace_subscriber, - prom_binding, - _keepalive_rx: keepalive_rx, + attach_service_name, } } - /// Returns a trace subscriber which can be used with the tracing crate, or with our own - /// [set_trace_subscriber_for_current_thread] function. + /// Return the trace subscriber associated with the telemetry options/instance. Can be used + /// to manually set the default for a thread or globally using the `tracing` crate, or with + /// [set_trace_subscriber_for_current_thread] pub fn trace_subscriber(&self) -> Arc { self.trace_subscriber.clone() } - /// Returns the address the Prometheus server is bound to if it is running - pub fn prom_port(&self) -> Option { - self.prom_binding + /// Some metric meters cannot be initialized until after a tokio runtime has started and after + /// other telemetry has initted (ex: prometheus). They can be attached here. + pub fn attach_late_init_metrics(&mut self, meter: Arc) { + self.metrics = Some(meter); + } + + /// Returns our wrapper for metric meters, including the `metric_prefix` from + /// [TelemetryOptions]. This should be used to initialize clients or for any other + /// temporal-owned metrics. User defined metrics should use [Self::get_metric_meter]. + pub fn get_temporal_metric_meter(&self) -> Option { + self.metrics.clone().map(|m| { + let kvs = self.default_kvs(); + let attribs = MetricsAttributesOptions::new(kvs); + TemporalMeter::new( + Arc::new(PrefixedMetricsMeter::new(self.metric_prefix.clone(), m)) + as Arc, + attribs, + ) + }) } - /// Returns our wrapper for OTel metric meters, can be used to, ex: initialize clients + /// Returns our wrapper for metric meters, including attaching the service name if enabled. pub fn get_metric_meter(&self) -> Option { - self.metrics - .as_ref() - .map(|(_, m)| TemporalMeter::new(m, self.metric_prefix)) + self.metrics.clone().map(|m| { + let kvs = self.default_kvs(); + let attribs = MetricsAttributesOptions::new(kvs); + TemporalMeter::new(m, attribs) + }) + } + + fn default_kvs(&self) -> Vec { + if self.attach_service_name { + vec![MetricKeyValue::new("service_name", TELEM_SERVICE_NAME)] + } else { + vec![] + } } } @@ -129,14 +139,6 @@ SUB_GUARD.with(|sg| sg.take()); } -fn metric_prefix(opts: &TelemetryOptions) -> &'static str { - if opts.no_temporal_prefix_for_metrics { - "" - } else { - "temporal_" - } -} - impl CoreTelemetry for TelemetryInstance { fn fetch_buffered_logs(&self) -> Vec { if let Some(logs_out) = self.logs_out.as_ref() { @@ -160,169 +162,67 @@ // in one case or the other. There does not seem to be a way to tell from the current runtime // handle if it is single or multithreaded. Additionally, we can isolate metrics work this // way which is nice. - let (tx, rx) = crossbeam::channel::bounded(0); - let (keepalive_tx, keepalive_rx) = crossbeam::channel::bounded(0); - let jh = std::thread::spawn(move || -> Result<(), anyhow::Error> { - let runtime = tokio::runtime::Builder::new_multi_thread() - .thread_name("telemetry") - .worker_threads(2) - .enable_all() - .build()?; - // Parts of telem dat ==== - let mut logs_out = None; - let metric_prefix = metric_prefix(&opts); - let mut prom_binding = None; - // ======================= - - // Tracing subscriber layers ========= - let mut console_pretty_layer = None; - let mut console_compact_layer = None; - let mut forward_layer = None; - let mut export_layer = None; - // =================================== - - if let Some(ref logger) = opts.logging { - match logger { - Logger::Console { filter } => { - // This is silly dupe but can't be avoided without boxing. - if env::var("TEMPORAL_CORE_PRETTY_LOGS").is_ok() { - console_pretty_layer = Some( - tracing_subscriber::fmt::layer() - .with_target(false) - .event_format( - tracing_subscriber::fmt::format() - .pretty() - .with_source_location(false), - ) - .with_filter(EnvFilter::new(filter)), - ) - } else { - console_compact_layer = Some( - tracing_subscriber::fmt::layer() - .with_target(false) - .event_format( - tracing_subscriber::fmt::format() - .compact() - .with_source_location(false), - ) - .with_filter(EnvFilter::new(filter)), - ) - } - } - Logger::Forward { filter } => { - let (export_layer, lo) = CoreLogExportLayer::new(); - logs_out = Some(Mutex::new(lo)); - forward_layer = Some(export_layer.with_filter(EnvFilter::new(filter))); - } - }; - }; - - let meter_provider = if let Some(ref metrics) = opts.metrics { - let aggregator = SDKAggSelector { metric_prefix }; - match metrics { - MetricsExporter::Prometheus(addr) => { - let srv = runtime.block_on(async { - PromServer::new( - *addr, - aggregator, - metric_temporality_to_selector(opts.metric_temporality), - &opts.global_tags, - ) - })?; - prom_binding = Some(srv.bound_addr()); - let mp = srv.exporter.meter_provider()?; - runtime.spawn(async move { srv.run().await }); - Some(Box::new(mp) as Box) - } - MetricsExporter::Otel(OtelCollectorOptions { - url, - headers, - metric_periodicity, - }) => runtime.block_on(async { - let metrics = opentelemetry_otlp::new_pipeline() - .metrics( - aggregator, - metric_temporality_to_selector(opts.metric_temporality), - runtime::Tokio, - ) - .with_period(metric_periodicity.unwrap_or_else(|| Duration::from_secs(1))) - .with_resource(default_resource(&opts.global_tags)) - .with_exporter( - opentelemetry_otlp::new_exporter() - .tonic() - .with_endpoint(url.to_string()) - .with_metadata(MetadataMap::from_headers(headers.try_into()?)), - ) - .build()?; - Ok::<_, anyhow::Error>(Some( - Box::new(metrics) as Box - )) - })?, - } - } else { - None - }; - - if let Some(ref tracing) = opts.tracing { - match &tracing.exporter { - TraceExporter::Otel(OtelCollectorOptions { url, headers, .. }) => { - runtime.block_on(async { - let tracer_cfg = - Config::default().with_resource(default_resource(&opts.global_tags)); - let tracer = opentelemetry_otlp::new_pipeline() - .tracing() - .with_exporter( - opentelemetry_otlp::new_exporter() - .tonic() - .with_endpoint(url.to_string()) - .with_metadata(MetadataMap::from_headers(headers.try_into()?)), + // Parts of telem dat ==== + let mut logs_out = None; + // ======================= + + // Tracing subscriber layers ========= + let mut console_pretty_layer = None; + let mut console_compact_layer = None; + let mut forward_layer = None; + // =================================== + + if let Some(ref logger) = opts.logging { + match logger { + Logger::Console { filter } => { + // This is silly dupe but can't be avoided without boxing. + if env::var("TEMPORAL_CORE_PRETTY_LOGS").is_ok() { + console_pretty_layer = Some( + tracing_subscriber::fmt::layer() + .with_target(false) + .event_format( + tracing_subscriber::fmt::format() + .pretty() + .with_source_location(false), ) - .with_trace_config(tracer_cfg) - .install_batch(runtime::Tokio)?; - - let opentelemetry = tracing_opentelemetry::layer() - .with_tracer(tracer) - .with_filter(EnvFilter::new(&tracing.filter)); - - export_layer = Some(opentelemetry); - Result::<(), anyhow::Error>::Ok(()) - })?; + .with_filter(EnvFilter::new(filter)), + ) + } else { + console_compact_layer = Some( + tracing_subscriber::fmt::layer() + .with_target(false) + .event_format( + tracing_subscriber::fmt::format() + .compact() + .with_source_location(false), + ) + .with_filter(EnvFilter::new(filter)), + ) } - }; + } + Logger::Forward { filter } => { + let (export_layer, lo) = CoreLogExportLayer::new(); + logs_out = Some(Mutex::new(lo)); + forward_layer = Some(export_layer.with_filter(EnvFilter::new(filter))); + } }; + }; - let reg = tracing_subscriber::registry() - .with(console_pretty_layer) - .with(console_compact_layer) - .with(forward_layer) - .with(export_layer); - - #[cfg(feature = "tokio-console")] - let reg = reg.with(console_subscriber::spawn()); - - tx.send(TelemetryInstance::new( - Arc::new(reg), - logs_out, - metric_prefix, - meter_provider, - prom_binding, - keepalive_rx, - )) - .expect("Must be able to send telem instance out of thread"); - // Now keep the thread alive until the telemetry instance is dropped by trying to send - // something forever - let _ = keepalive_tx.send(()); - Ok(()) - }); - match rx.recv() { - Ok(ti) => Ok(ti), - Err(_) => { - // Immediately join the thread since something went wrong in it - jh.join().expect("Telemetry must init cleanly")?; - // This can't happen. The rx channel can't be dropped unless the thread errored. - unreachable!("Impossible error in telemetry init thread"); - } - } + let reg = tracing_subscriber::registry() + .with(console_pretty_layer) + .with(console_compact_layer) + .with(forward_layer); + + #[cfg(feature = "tokio-console")] + let reg = reg.with(console_subscriber::spawn()); + + Ok(TelemetryInstance::new( + Arc::new(reg), + logs_out, + opts.metric_prefix, + opts.metrics, + opts.attach_service_name, + )) } /// Initialize telemetry/tracing globally. Useful for testing. Only takes affect when called @@ -351,21 +251,26 @@ Resource::new(default_resource_kvs().iter().cloned()).merge(&Resource::new(override_kvs)) } +#[derive(Clone)] +struct ConstantTemporality(Temporality); +impl TemporalitySelector for ConstantTemporality { + fn temporality(&self, _: InstrumentKind) -> Temporality { + self.0 + } +} fn metric_temporality_to_selector( t: MetricTemporality, ) -> impl TemporalitySelector + Send + Sync + Clone { match t { - MetricTemporality::Cumulative => { - aggregation::constant_temporality_selector(Temporality::Cumulative) - } - MetricTemporality::Delta => aggregation::constant_temporality_selector(Temporality::Delta), + MetricTemporality::Cumulative => ConstantTemporality(Temporality::Cumulative), + MetricTemporality::Delta => ConstantTemporality(Temporality::Delta), } } #[cfg(test)] pub mod test_initters { use super::*; - use temporal_sdk_core_api::telemetry::{TelemetryOptionsBuilder, TraceExportConfig}; + use temporal_sdk_core_api::telemetry::TelemetryOptionsBuilder; #[allow(dead_code)] // Not always used, called to enable for debugging when needed pub fn test_telem_console() { @@ -379,29 +284,7 @@ ) .unwrap(); } - - #[allow(dead_code)] // Not always used, called to enable for debugging when needed - pub fn test_telem_collector() { - telemetry_init_global( - TelemetryOptionsBuilder::default() - .logging(Logger::Console { - filter: construct_filter_string(Level::DEBUG, Level::WARN), - }) - .tracing(TraceExportConfig { - filter: construct_filter_string(Level::DEBUG, Level::WARN), - exporter: TraceExporter::Otel(OtelCollectorOptions { - url: "grpc://localhost:4317".parse().unwrap(), - headers: Default::default(), - metric_periodicity: None, - }), - }) - .build() - .unwrap(), - ) - .unwrap(); - } } -use crate::telemetry::metrics::TemporalMeter; #[cfg(test)] pub use test_initters::*; diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/telemetry/prometheus_server.rs temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/telemetry/prometheus_server.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/telemetry/prometheus_server.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/telemetry/prometheus_server.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,52 +1,57 @@ -use crate::telemetry::default_resource; use hyper::{ header::CONTENT_TYPE, server::conn::AddrIncoming, service::{make_service_fn, service_fn}, Body, Method, Request, Response, Server, }; -use opentelemetry::sdk::{ - export::metrics::{aggregation::TemporalitySelector, AggregatorSelector}, - metrics::{controllers, processors}, -}; -use opentelemetry_prometheus::{ExporterBuilder, PrometheusExporter}; -use prometheus::{Encoder, TextEncoder}; -use std::{collections::HashMap, convert::Infallible, net::SocketAddr, sync::Arc, time::Duration}; +use opentelemetry_prometheus::PrometheusExporter; +use opentelemetry_sdk::metrics::reader::AggregationSelector; +use prometheus::{Encoder, Registry, TextEncoder}; +use std::{convert::Infallible, net::SocketAddr}; +use temporal_sdk_core_api::telemetry::PrometheusExporterOptions; /// Exposes prometheus metrics for scraping pub(super) struct PromServer { bound_addr: AddrIncoming, - pub exporter: Arc, + registry: Registry, } impl PromServer { pub fn new( - addr: SocketAddr, - aggregation: impl AggregatorSelector + Send + Sync + 'static, - temporality: impl TemporalitySelector + Send + Sync + 'static, - tags: &HashMap, - ) -> Result { - let controller = - controllers::basic(processors::factory(aggregation, temporality).with_memory(true)) - // Because Prom is pull-based, make this always refresh - .with_collect_period(Duration::from_secs(0)) - .with_resource(default_resource(tags)) - .build(); - let exporter = ExporterBuilder::new(controller).try_init()?; - let bound_addr = AddrIncoming::bind(&addr)?; - Ok(Self { - exporter: Arc::new(exporter), - bound_addr, - }) + opts: &PrometheusExporterOptions, + aggregation: impl AggregationSelector + Send + Sync + 'static, + ) -> Result<(Self, PrometheusExporter), anyhow::Error> { + let registry = Registry::new(); + let exporter = opentelemetry_prometheus::exporter() + .with_aggregation_selector(aggregation) + .without_scope_info() + .with_registry(registry.clone()); + let exporter = if !opts.counters_total_suffix { + exporter.without_counter_suffixes() + } else { + exporter + }; + let exporter = if !opts.unit_suffix { + exporter.without_units() + } else { + exporter + }; + let bound_addr = AddrIncoming::bind(&opts.socket_addr)?; + Ok(( + Self { + bound_addr, + registry, + }, + exporter.build()?, + )) } pub async fn run(self) -> hyper::Result<()> { // Spin up hyper server to serve metrics for scraping. We use hyper since we already depend // on it via Tonic. - let expclone = self.exporter.clone(); let svc = make_service_fn(move |_conn| { - let expclone = expclone.clone(); - async move { Ok::<_, Infallible>(service_fn(move |req| metrics_req(req, expclone.clone()))) } + let regclone = self.registry.clone(); + async move { Ok::<_, Infallible>(service_fn(move |req| metrics_req(req, regclone.clone()))) } }); let server = Server::builder(self.bound_addr).serve(svc); server.await @@ -60,13 +65,13 @@ /// Serves prometheus metrics in the expected format for scraping async fn metrics_req( req: Request, - exporter: Arc, + registry: Registry, ) -> Result, hyper::Error> { let response = match (req.method(), req.uri().path()) { (&Method::GET, "/metrics") => { let mut buffer = vec![]; let encoder = TextEncoder::new(); - let metric_families = exporter.registry().gather(); + let metric_families = registry.gather(); encoder.encode(&metric_families, &mut buffer).unwrap(); Response::builder() diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/mod.rs temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/mod.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/mod.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -195,8 +195,7 @@ ) -> Self { info!(task_queue=%config.task_queue, namespace=%config.namespace, "Initializing worker"); let metrics = if let Some(ti) = telem_instance { - MetricsContext::top_level(config.namespace.clone(), ti) - .with_task_q(config.task_queue.clone()) + MetricsContext::top_level(config.namespace.clone(), config.task_queue.clone(), ti) } else { MetricsContext::no_op() }; diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs 2023-10-30 19:40:00.000000000 +0000 @@ -7,7 +7,10 @@ worker::workflow::{machines::HistEventData, InternalFlagsRef}, }; use rustfsm::{fsm, MachineError, StateMachine, TransitionResult}; -use std::convert::{TryFrom, TryInto}; +use std::{ + convert::{TryFrom, TryInto}, + string::ToString, +}; use temporal_sdk_core_protos::{ coresdk::{ child_workflow::{ @@ -79,6 +82,15 @@ Cancelled --(Cancel) --> Cancelled; Cancelled --(ChildWorkflowExecutionCancelled, on_child_workflow_execution_cancelled) --> Cancelled; + // Completions of any kind after cancellation are acceptable for abandoned children + Cancelled --(ChildWorkflowExecutionCompleted(Option), + shared on_child_workflow_execution_completed) --> Cancelled; + Cancelled --(ChildWorkflowExecutionFailed(ChildWorkflowExecutionFailedEventAttributes), + shared on_child_workflow_execution_failed) --> Cancelled; + Cancelled --(ChildWorkflowExecutionTimedOut(RetryState), + shared on_child_workflow_execution_timed_out) --> Cancelled; + Cancelled --(ChildWorkflowExecutionTerminated, + shared on_child_workflow_execution_terminated) --> Cancelled; Failed --(Cancel) --> Failed; StartFailed --(Cancel) --> StartFailed; TimedOut --(Cancel) --> TimedOut; @@ -120,6 +132,14 @@ seen_cancelled_event: bool, } +fn completion_of_not_abandoned_err() -> WFMachinesError { + WFMachinesError::Nondeterminism( + "Child workflows which don't have the ABANDON cancellation type cannot complete after \ + being cancelled." + .to_string(), + ) +} + impl Cancelled { pub(super) fn on_child_workflow_execution_cancelled( self, @@ -139,6 +159,49 @@ ) } } + + pub(super) fn on_child_workflow_execution_completed( + self, + state: &mut SharedState, + _: Option, + ) -> ChildWorkflowMachineTransition { + if !state.abandons() { + return ChildWorkflowMachineTransition::Err(completion_of_not_abandoned_err()); + } + ChildWorkflowMachineTransition::ok([], self) + } + + pub(super) fn on_child_workflow_execution_failed( + self, + state: &mut SharedState, + _: ChildWorkflowExecutionFailedEventAttributes, + ) -> ChildWorkflowMachineTransition { + if !state.abandons() { + return ChildWorkflowMachineTransition::Err(completion_of_not_abandoned_err()); + } + ChildWorkflowMachineTransition::ok([], self) + } + + pub(super) fn on_child_workflow_execution_timed_out( + self, + state: &mut SharedState, + _: RetryState, + ) -> ChildWorkflowMachineTransition { + if !state.abandons() { + return ChildWorkflowMachineTransition::Err(completion_of_not_abandoned_err()); + } + ChildWorkflowMachineTransition::ok([], self) + } + + pub(super) fn on_child_workflow_execution_terminated( + self, + state: &mut SharedState, + ) -> ChildWorkflowMachineTransition { + if !state.abandons() { + return ChildWorkflowMachineTransition::Err(completion_of_not_abandoned_err()); + } + ChildWorkflowMachineTransition::ok([], self) + } } #[derive(Default, Clone)] @@ -172,14 +235,14 @@ if event_dat.wf_id != state.workflow_id { return TransitionResult::Err(WFMachinesError::Nondeterminism(format!( "Child workflow id of scheduled event '{}' does not \ - match child workflow id of activity command '{}'", + match child workflow id of command '{}'", event_dat.wf_id, state.workflow_id ))); } if event_dat.wf_type != state.workflow_type { return TransitionResult::Err(WFMachinesError::Nondeterminism(format!( "Child workflow type of scheduled event '{}' does not \ - match child workflow type of activity command '{}'", + match child workflow type of command '{}'", event_dat.wf_type, state.workflow_type ))); } @@ -357,6 +420,12 @@ internal_flags: InternalFlagsRef, } +impl SharedState { + fn abandons(&self) -> bool { + matches!(self.cancel_type, ChildWorkflowCancellationType::Abandon) + } +} + impl ChildWorkflowMachine { /// Create a new child workflow and immediately schedule it. pub(super) fn new_scheduled( @@ -935,4 +1004,69 @@ assert_eq!(discriminant(&state), discriminant(s.state())); } } + + #[test] + fn abandoned_ok_with_completions() { + let mut shared = SharedState { + initiated_event_id: 0, + started_event_id: 0, + lang_sequence_number: 0, + namespace: "".to_string(), + workflow_id: "".to_string(), + run_id: "".to_string(), + workflow_type: "".to_string(), + cancelled_before_sent: false, + cancel_type: ChildWorkflowCancellationType::Abandon, + internal_flags: Rc::new(RefCell::new(InternalFlags::new(&Default::default()))), + }; + let state = Cancelled { + seen_cancelled_event: true, + }; + let res = state.on_child_workflow_execution_completed(&mut shared, None); + // Can't use assert_matches b/c not Debug. + assert!(matches!( + res, + TransitionResult::Ok { + commands, + new_state: Cancelled { .. } + } + if commands.is_empty() + )); + let state = Cancelled { + seen_cancelled_event: true, + }; + let res = state.on_child_workflow_execution_failed(&mut shared, Default::default()); + assert!(matches!( + res, + TransitionResult::Ok { + commands, + new_state: Cancelled { .. } + } + if commands.is_empty() + )); + let state = Cancelled { + seen_cancelled_event: true, + }; + let res = state.on_child_workflow_execution_timed_out(&mut shared, Default::default()); + assert!(matches!( + res, + TransitionResult::Ok { + commands, + new_state: Cancelled { .. } + } + if commands.is_empty() + )); + let state = Cancelled { + seen_cancelled_event: true, + }; + let res = state.on_child_workflow_execution_terminated(&mut shared); + assert!(matches!( + res, + TransitionResult::Ok { + commands, + new_state: Cancelled { .. } + } + if commands.is_empty() + )); + } } diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs 2023-10-30 19:40:00.000000000 +0000 @@ -270,6 +270,13 @@ } } +impl PatchMachine { + /// Returns true if this patch machine has the same id as the one provided + pub(crate) fn matches_patch(&self, id: &str) -> bool { + self.shared_state.patch_id == id + } +} + #[cfg(test)] mod tests { use crate::{ diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs 2023-10-30 19:40:00.000000000 +0000 @@ -138,7 +138,7 @@ current_wf_task_commands: VecDeque, /// Information about patch markers we have already seen while replaying history - encountered_change_markers: HashMap, + encountered_patch_markers: HashMap, /// Contains extra local-activity related data local_activity_data: LocalActivityData, @@ -255,7 +255,7 @@ id_to_machine: Default::default(), commands: Default::default(), current_wf_task_commands: Default::default(), - encountered_change_markers: Default::default(), + encountered_patch_markers: Default::default(), local_activity_data: LocalActivityData::default(), have_seen_terminal_event: false, } @@ -367,9 +367,17 @@ /// "no work" situation. Possibly, it may know about some work the machines don't, like queries. pub(crate) fn get_wf_activation(&mut self) -> WorkflowActivation { let jobs = self.drive_me.drain_jobs(); + // Even though technically we may have satisfied all the criteria to be done with replay, + // query only activations are always "replaying" to keep things sane. + let all_query = jobs.iter().all(|j| { + matches!( + j.variant, + Some(workflow_activation_job::Variant::QueryWorkflow(_)) + ) + }); WorkflowActivation { timestamp: self.current_wf_time.map(Into::into), - is_replaying: self.replaying, + is_replaying: self.replaying || all_query, run_id: self.run_id.clone(), history_length: self.last_processed_event as u32, jobs, @@ -488,7 +496,6 @@ } } - let mut saw_completed = false; let mut do_handle_event = true; let mut history = events.into_iter().peekable(); while let Some(event) = history.next() { @@ -504,17 +511,21 @@ // This definition of replaying here is that we are no longer replaying as soon as we // see new events that have never been seen or produced by the SDK. // - // Specifically, replay ends once we have seen the last command-event which was produced - // as a result of the last completed WFT. Thus, replay would be false for things like - // signals which were received and after the last completion, and thus generated the - // current WFT being handled. - if self.replaying && has_final_event && saw_completed && !event.is_command_event() { + // Specifically, replay ends once we have seen any non-command event (IE: events that + // aren't a result of something we produced in the SDK) on a WFT which has the final + // event in history (meaning we are processing the most recent WFT and there are no + // more subsequent WFTs). WFT Completed in this case does not count as a non-command + // event, because that will typically show up as the first event in an incremental + // history, and we want to ignore it and its associated commands since we "produced" + // them. + if self.replaying + && has_final_event + && event.event_type() != EventType::WorkflowTaskCompleted + && !event.is_command_event() + { // Replay is finished self.replaying = false; } - if event.event_type() == EventType::WorkflowTaskCompleted { - saw_completed = true; - } if do_handle_event { let eho = self.handle_event( @@ -547,7 +558,7 @@ .peek_next_wft_sequence(last_handled_wft_started_id) { if let Some((patch_id, _)) = e.get_patch_marker_details() { - self.encountered_change_markers.insert( + self.encountered_patch_markers.insert( patch_id.clone(), ChangeInfo { created_command: false, @@ -718,7 +729,7 @@ let consumed_cmd = loop { if let Some(peek_machine) = self.commands.front() { let mach = self.machine(peek_machine.machine); - match change_marker_handling(event, mach, next_event)? { + match patch_marker_handling(event, mach, next_event)? { EventHandlingOutcome::SkipCommand => { self.commands.pop_front(); continue; @@ -1138,7 +1149,7 @@ WFCommand::SetPatchMarker(attrs) => { // Do not create commands for change IDs that we have already created commands // for. - let encountered_entry = self.encountered_change_markers.get(&attrs.patch_id); + let encountered_entry = self.encountered_patch_markers.get(&attrs.patch_id); if !matches!(encountered_entry, Some(ChangeInfo {created_command}) if *created_command) { @@ -1147,17 +1158,17 @@ self.replaying, attrs.deprecated, encountered_entry.is_some(), - self.encountered_change_markers.keys().map(|s| s.as_str()), + self.encountered_patch_markers.keys().map(|s| s.as_str()), self.observed_internal_flags.clone(), )?; let mkey = self.add_cmd_to_wf_task(patch_machine, CommandIdKind::NeverResolves); self.process_machine_responses(mkey, other_cmds)?; - if let Some(ci) = self.encountered_change_markers.get_mut(&attrs.patch_id) { + if let Some(ci) = self.encountered_patch_markers.get_mut(&attrs.patch_id) { ci.created_command = true; } else { - self.encountered_change_markers.insert( + self.encountered_patch_markers.insert( attrs.patch_id, ChangeInfo { created_command: true, @@ -1360,45 +1371,62 @@ /// Special handling for patch markers, when handling command events as in /// [WorkflowMachines::handle_command_event] -fn change_marker_handling( +fn patch_marker_handling( event: &HistoryEvent, mach: &Machines, next_event: Option<&HistoryEvent>, ) -> Result { - if !mach.matches_event(event) { - // Version markers can be skipped in the event they are deprecated - if let Some((patch_name, deprecated)) = event.get_patch_marker_details() { + let patch_machine = match mach { + Machines::PatchMachine(pm) => Some(pm), + _ => None, + }; + let patch_details = event.get_patch_marker_details(); + fn skip_one_or_two_events(next_event: Option<&HistoryEvent>) -> Result { + // Also ignore the subsequent upsert event if present + let mut skip_next_event = false; + if let Some(Attributes::UpsertWorkflowSearchAttributesEventAttributes(atts)) = + next_event.and_then(|ne| ne.attributes.as_ref()) + { + if let Some(ref sa) = atts.search_attributes { + skip_next_event = sa.indexed_fields.contains_key(VERSION_SEARCH_ATTR_KEY); + } + } + + Ok(EventHandlingOutcome::SkipEvent { skip_next_event }) + } + + if let Some((patch_name, deprecated)) = patch_details { + if let Some(pm) = patch_machine { + // If the next machine *is* a patch machine, but this marker is deprecated, it may + // either apply to this machine (the `deprecate_patch` call is still in workflow code) - + // or it could be another `patched` or `deprecate_patch` call for a *different* patch, + // which we should also permit. In the latter case, we should skip this event. + if !pm.matches_patch(&patch_name) && deprecated { + skip_one_or_two_events(next_event) + } else { + Ok(EventHandlingOutcome::Normal) + } + } else { + // Version markers can be skipped in the event they are deprecated // Is deprecated. We can simply ignore this event, as deprecated change // markers are allowed without matching changed calls. if deprecated { - debug!("Deprecated patch marker tried against wrong machine, skipping."); - - // Also ignore the subsequent upsert event if present - let mut skip_next_event = false; - if let Some(Attributes::UpsertWorkflowSearchAttributesEventAttributes(atts)) = - next_event.and_then(|ne| ne.attributes.as_ref()) - { - if let Some(ref sa) = atts.search_attributes { - skip_next_event = sa.indexed_fields.contains_key(VERSION_SEARCH_ATTR_KEY); - } - } - - return Ok(EventHandlingOutcome::SkipEvent { skip_next_event }); + debug!("Deprecated patch marker tried against non-patch machine, skipping."); + skip_one_or_two_events(next_event) + } else { + Err(WFMachinesError::Nondeterminism(format!( + "Non-deprecated patch marker encountered for change {patch_name}, but there is \ + no corresponding change command!" + ))) } - return Err(WFMachinesError::Nondeterminism(format!( - "Non-deprecated patch marker encountered for change {patch_name}, \ - but there is no corresponding change command!" - ))); - } - // Patch machines themselves may also not *have* matching markers, where non-deprecated - // calls take the old path, and deprecated calls assume history is produced by a new-code - // worker. - if matches!(mach, Machines::PatchMachine(_)) { - debug!("Skipping non-matching event against patch machine"); - return Ok(EventHandlingOutcome::SkipCommand); } + } else if patch_machine.is_some() { + debug!("Skipping non-matching event against patch machine"); + Ok(EventHandlingOutcome::SkipCommand) + } else { + // Not a patch machine or a patch event + Ok(EventHandlingOutcome::Normal) } - Ok(EventHandlingOutcome::Normal) } #[derive(derive_more::From)] diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/workflow/mod.rs temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/workflow/mod.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/workflow/mod.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/core/src/worker/workflow/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -561,7 +561,7 @@ should_evict = Some(EvictionReason::TaskNotFound); } _ => { - warn!(error= %err, "Network error while completing workflow activation"); + warn!(error= %err, "Error while completing workflow activation"); should_evict = Some(EvictionReason::Fatal); } } diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/core-api/Cargo.toml temporalio-1.3.0/temporalio/bridge/sdk-core/core-api/Cargo.toml --- temporalio-1.3.0/temporalio/bridge/sdk-core/core-api/Cargo.toml 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/core-api/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,22 +12,23 @@ # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[features] +otel_impls = ["opentelemetry"] + [dependencies] async-trait = "0.1" derive_builder = "0.12" +derive_more = "0.99" +opentelemetry = { workspace = true, optional = true } prost-types = "0.11" serde = { version = "1.0", default_features = false, features = ["derive"] } serde_json = "1.0" thiserror = "1.0" tokio = "1.24" -tonic = "0.8" +tonic = { workspace = true } tracing-core = "0.1" url = "2.3" [dependencies.temporal-sdk-core-protos] path = "../sdk-core-protos" -version = "0.1" - -[dependencies.temporal-client] -path = "../client" -version = "0.1" +version = "0.1" \ No newline at end of file diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/core-api/src/telemetry/metrics.rs temporalio-1.3.0/temporalio/bridge/sdk-core/core-api/src/telemetry/metrics.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/core-api/src/telemetry/metrics.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/core-api/src/telemetry/metrics.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,281 @@ +use std::{borrow::Cow, collections::HashSet, fmt::Debug, sync::Arc}; + +/// Implementors of this trait are expected to be defined in each language's bridge. +/// The implementor is responsible for the allocation/instantiation of new metric meters which +/// Core has requested. +pub trait CoreMeter: Send + Sync + Debug { + fn new_attributes(&self, attribs: MetricsAttributesOptions) -> MetricAttributes; + fn counter(&self, params: MetricParameters) -> Arc; + fn histogram(&self, params: MetricParameters) -> Arc; + fn gauge(&self, params: MetricParameters) -> Arc; +} + +#[derive(Debug, Clone, derive_builder::Builder)] +pub struct MetricParameters { + /// The name for the new metric/instrument + #[builder(setter(into))] + pub name: Cow<'static, str>, + /// A description that will appear in metadata if the backend supports it + #[builder(setter(into), default = "\"\".into()")] + pub description: Cow<'static, str>, + /// Unit information that will appear in metadata if the backend supports it + #[builder(setter(into), default = "\"\".into()")] + pub unit: Cow<'static, str>, +} +impl From<&'static str> for MetricParameters { + fn from(value: &'static str) -> Self { + Self { + name: value.into(), + description: Default::default(), + unit: Default::default(), + } + } +} + +/// Wraps a [CoreMeter] to enable the attaching of default labels to metrics. Cloning is cheap. +#[derive(derive_more::Constructor, Clone, Debug)] +pub struct TemporalMeter { + pub inner: Arc, + pub default_attribs: MetricsAttributesOptions, +} + +#[derive(Debug, Clone)] +pub enum MetricEvent { + Create { + params: MetricParameters, + id: u64, + kind: MetricKind, + }, + CreateAttributes { + id: u64, + attributes: Vec, + }, + Update { + id: u64, + attributes: LangMetricAttributes, + update: MetricUpdateVal, + }, +} +#[derive(Debug, Clone, Copy)] +pub enum MetricKind { + Counter, + Gauge, + Histogram, +} +#[derive(Debug, Clone, Copy)] +pub enum MetricUpdateVal { + // Currently all deltas are natural numbers + Delta(u64), + // Currently all values are natural numbers + Value(u64), +} + +pub trait MetricCallBufferer: Send + Sync { + fn retrieve(&self) -> Vec; +} + +impl CoreMeter for Arc { + fn new_attributes(&self, attribs: MetricsAttributesOptions) -> MetricAttributes { + self.as_ref().new_attributes(attribs) + } + fn counter(&self, params: MetricParameters) -> Arc { + self.as_ref().counter(params) + } + fn histogram(&self, params: MetricParameters) -> Arc { + self.as_ref().histogram(params) + } + fn gauge(&self, params: MetricParameters) -> Arc { + self.as_ref().gauge(params) + } +} + +/// Attributes which are provided every time a call to record a specific metric is made. +/// Implementors must be very cheap to clone, as these attributes will be re-used frequently. +#[derive(Clone, Debug)] +#[non_exhaustive] +pub enum MetricAttributes { + #[cfg(feature = "otel_impls")] + OTel { + kvs: Arc>, + }, + Lang(LangMetricAttributes), +} +#[derive(Clone, Debug)] +pub struct LangMetricAttributes { + /// A set of references to attributes stored in lang memory. All referenced attributes should + /// be attached to the metric when recording. + pub ids: HashSet, + /// If populated, these key values should also be used in addition to the referred-to + /// existing attributes when recording + pub new_attributes: Vec, +} + +impl MetricAttributes { + /// Extend existing metrics attributes with others, returning a new instance + pub fn merge(&self, other: MetricAttributes) -> Self { + let mut me = self.clone(); + match (&mut me, other) { + #[cfg(feature = "otel_impls")] + (MetricAttributes::OTel { ref mut kvs }, MetricAttributes::OTel { kvs: other_kvs }) => { + Arc::make_mut(kvs).extend((*other_kvs).clone()); + } + (MetricAttributes::Lang(ref mut l), MetricAttributes::Lang(ol)) => { + l.ids.extend(ol.ids); + l.new_attributes.extend(ol.new_attributes); + } + _ => panic!("Cannot merge metric attributes of different kinds"), + } + me + } + + /// Mutate self to add new kvs + pub fn add_new_attrs(&mut self, new_kvs: impl IntoIterator) { + match self { + #[cfg(feature = "otel_impls")] + MetricAttributes::OTel { ref mut kvs, .. } => { + Arc::make_mut(kvs).extend(new_kvs.into_iter().map(Into::into)); + } + MetricAttributes::Lang(ref mut attrs, ..) => { + attrs.new_attributes.extend(new_kvs.into_iter()); + } + } + } +} + +/// Options that are attached to metrics on a per-call basis +#[derive(Clone, Debug, Default, derive_more::Constructor)] +pub struct MetricsAttributesOptions { + pub attributes: Vec, +} +impl MetricsAttributesOptions { + pub fn extend(&mut self, new_kvs: impl IntoIterator) { + self.attributes.extend(new_kvs.into_iter()) + } +} + +/// A K/V pair that can be used to label a specific recording of a metric +#[derive(Clone, Debug)] +pub struct MetricKeyValue { + pub key: String, + pub value: MetricValue, +} +impl MetricKeyValue { + pub fn new(key: impl Into, value: impl Into) -> Self { + Self { + key: key.into(), + value: value.into(), + } + } +} + +/// Values metric labels may assume +#[derive(Clone, Debug, derive_more::From)] +pub enum MetricValue { + String(String), + Int(i64), + Float(f64), + Bool(bool), + // can add array if needed +} +impl From<&'static str> for MetricValue { + fn from(value: &'static str) -> Self { + MetricValue::String(value.to_string()) + } +} + +pub trait Counter: Send + Sync { + fn add(&self, value: u64, attributes: &MetricAttributes); +} + +pub trait Histogram: Send + Sync { + // When referring to durations, this value is in millis + fn record(&self, value: u64, attributes: &MetricAttributes); +} + +pub trait Gauge: Send + Sync { + // When referring to durations, this value is in millis + fn record(&self, value: u64, attributes: &MetricAttributes); +} + +#[derive(Debug)] +pub struct NoOpCoreMeter; +impl CoreMeter for NoOpCoreMeter { + fn new_attributes(&self, _: MetricsAttributesOptions) -> MetricAttributes { + MetricAttributes::Lang(LangMetricAttributes { + ids: HashSet::new(), + new_attributes: vec![], + }) + } + + fn counter(&self, _: MetricParameters) -> Arc { + Arc::new(NoOpInstrument) + } + + fn histogram(&self, _: MetricParameters) -> Arc { + Arc::new(NoOpInstrument) + } + + fn gauge(&self, _: MetricParameters) -> Arc { + Arc::new(NoOpInstrument) + } +} + +pub struct NoOpInstrument; +impl Counter for NoOpInstrument { + fn add(&self, _: u64, _: &MetricAttributes) {} +} +impl Histogram for NoOpInstrument { + fn record(&self, _: u64, _: &MetricAttributes) {} +} +impl Gauge for NoOpInstrument { + fn record(&self, _: u64, _: &MetricAttributes) {} +} + +#[cfg(feature = "otel_impls")] +mod otel_impls { + use super::*; + use opentelemetry::{metrics, KeyValue}; + + impl From for KeyValue { + fn from(kv: MetricKeyValue) -> Self { + KeyValue::new(kv.key, kv.value) + } + } + + impl From for opentelemetry::Value { + fn from(mv: MetricValue) -> Self { + match mv { + MetricValue::String(s) => opentelemetry::Value::String(s.into()), + MetricValue::Int(i) => opentelemetry::Value::I64(i), + MetricValue::Float(f) => opentelemetry::Value::F64(f), + MetricValue::Bool(b) => opentelemetry::Value::Bool(b), + } + } + } + + impl Counter for metrics::Counter { + fn add(&self, value: u64, attributes: &MetricAttributes) { + if let MetricAttributes::OTel { kvs } = attributes { + self.add(value, kvs); + } else { + debug_assert!( + false, + "Must use OTel attributes with an OTel metric implementation" + ); + } + } + } + + impl Histogram for metrics::Histogram { + fn record(&self, value: u64, attributes: &MetricAttributes) { + if let MetricAttributes::OTel { kvs } = attributes { + self.record(value, kvs); + } else { + debug_assert!( + false, + "Must use OTel attributes with an OTel metric implementation" + ); + } + } + } +} diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/core-api/src/telemetry.rs temporalio-1.3.0/temporalio/bridge/sdk-core/core-api/src/telemetry.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/core-api/src/telemetry.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/core-api/src/telemetry.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,11 +1,17 @@ +pub mod metrics; + +use crate::telemetry::metrics::CoreMeter; use std::{ collections::HashMap, net::SocketAddr, + sync::Arc, time::{Duration, SystemTime, UNIX_EPOCH}, }; use tracing_core::Level; use url::Url; +pub static METRIC_PREFIX: &str = "temporal_"; + /// Each core runtime instance has a telemetry subsystem associated with it, this trait defines the /// operations that lang might want to perform on that telemetry after it's initialized. pub trait CoreTelemetry { @@ -23,32 +29,25 @@ #[derive(Debug, Clone, derive_builder::Builder)] #[non_exhaustive] pub struct TelemetryOptions { - /// Optional trace exporter - set as None to disable. - #[builder(setter(into, strip_option), default)] - pub tracing: Option, /// Optional logger - set as None to disable. #[builder(setter(into, strip_option), default)] pub logging: Option, /// Optional metrics exporter - set as None to disable. #[builder(setter(into, strip_option), default)] - pub metrics: Option, - - /// If set true, do not prefix metrics with `temporal_`. Will be removed eventually as - /// the prefix is consistent with other SDKs. - #[builder(default)] - pub no_temporal_prefix_for_metrics: bool, - - /// Specifies the aggregation temporality for metric export. Defaults to cumulative. - #[builder(default = "MetricTemporality::Cumulative")] - pub metric_temporality: MetricTemporality, - - // A map of tags to be applied to all metrics - #[builder(default)] - pub global_tags: HashMap, + pub metrics: Option>, + /// If set true (the default) explicitly attach a `service_name` label to all metrics. Turn this + /// off if your collection system supports the `target_info` metric from the OpenMetrics spec. + /// For more, see + /// [here](https://github.com/OpenObservability/OpenMetrics/blob/main/specification/OpenMetrics.md#supporting-target-metadata-in-both-push-based-and-pull-based-systems) + #[builder(default = "true")] + pub attach_service_name: bool, + /// A prefix to be applied to all core-created metrics. Defaults to "temporal_". + #[builder(default = "METRIC_PREFIX.to_string()")] + pub metric_prefix: String, } /// Options for exporting to an OpenTelemetry Collector -#[derive(Debug, Clone)] +#[derive(Debug, Clone, derive_builder::Builder)] pub struct OtelCollectorOptions { /// The url of the OTel collector to export telemetry and metrics to. Lang SDK should also /// export to this same collector. @@ -56,32 +55,30 @@ /// Optional set of HTTP headers to send to the Collector, e.g for authentication. pub headers: HashMap, /// Optionally specify how frequently metrics should be exported. Defaults to 1 second. - pub metric_periodicity: Option, -} - -/// Configuration for the external export of traces -#[derive(Debug, Clone)] -pub struct TraceExportConfig { - /// An [EnvFilter](https://docs.rs/tracing-subscriber/latest/tracing_subscriber/struct.EnvFilter.html) filter string. - pub filter: String, - /// Where they should go - pub exporter: TraceExporter, -} - -/// Control where traces are exported. -#[derive(Debug, Clone)] -pub enum TraceExporter { - /// Export traces to an OpenTelemetry Collector . - Otel(OtelCollectorOptions), + #[builder(default = "Duration::from_secs(1)")] + pub metric_periodicity: Duration, + /// Specifies the aggregation temporality for metric export. Defaults to cumulative. + #[builder(default = "MetricTemporality::Cumulative")] + pub metric_temporality: MetricTemporality, + // A map of tags to be applied to all metrics + #[builder(default)] + pub global_tags: HashMap, } -/// Control where metrics are exported -#[derive(Debug, Clone)] -pub enum MetricsExporter { - /// Export metrics to an OpenTelemetry Collector . - Otel(OtelCollectorOptions), - /// Expose metrics directly via an embedded http server bound to the provided address. - Prometheus(SocketAddr), +/// Options for exporting metrics to Prometheus +#[derive(Debug, Clone, derive_builder::Builder)] +pub struct PrometheusExporterOptions { + pub socket_addr: SocketAddr, + // A map of tags to be applied to all metrics + #[builder(default)] + pub global_tags: HashMap, + /// If set true, all counters will include a "_total" suffix + #[builder(default = "false")] + pub counters_total_suffix: bool, + /// If set true, all histograms will include the unit in their name as a suffix. + /// Ex: "_milliseconds". + #[builder(default = "false")] + pub unit_suffix: bool, } /// Control where logs go diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/core-api/src/worker.rs temporalio-1.3.0/temporalio/bridge/sdk-core/core-api/src/worker.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/core-api/src/worker.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/core-api/src/worker.rs 2023-10-30 19:40:00.000000000 +0000 @@ -115,6 +115,7 @@ #[builder(default = "5")] pub fetching_concurrency: usize, + // TODO: Move this out - dependency on tokio should not exist just for this /// If set, and the `save_wf_inputs` feature is enabled in core, will be sent a serialized /// instance of every input to workflow state in order. This is for testing purposes, SDK /// implementations never need to care about it. diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml temporalio-1.3.0/temporalio/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml --- temporalio-1.3.0/temporalio/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -16,7 +16,7 @@ [dependencies] derive_more = "0.99" proc-macro2 = "1.0" -syn = { version = "1.0", features = ["default", "extra-traits"] } +syn = { version = "2.0", features = ["default", "extra-traits"] } quote = "1.0" rustfsm_trait = { version = "0.1", path = "../rustfsm_trait" } diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs temporalio-1.3.0/temporalio/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,7 +5,6 @@ parenthesized, parse::{Parse, ParseStream, Result}, parse_macro_input, - punctuated::Punctuated, spanned::Spanned, Error, Fields, Ident, Token, Type, Variant, Visibility, }; @@ -212,8 +211,7 @@ })?; // Then the state machine definition is simply a sequence of transitions separated by // semicolons - let transitions: Punctuated = - input.parse_terminated(Transition::parse)?; + let transitions = input.parse_terminated(Transition::parse, Token![;])?; let transitions: Vec<_> = transitions.into_iter().collect(); // Check for and whine about any identical transitions. We do this here because preserving // the order transitions were defined in is important, so simply collecting to a set is diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr temporalio-1.3.0/temporalio/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr --- temporalio-1.3.0/temporalio/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr 2023-10-30 19:40:00.000000000 +0000 @@ -1,12 +1,15 @@ error[E0277]: the trait bound `One: From` is not satisfied - --> tests/trybuild/no_handle_conversions_require_into_fail.rs:11:18 - | -11 | Two --(B)--> One; - | ^^^ the trait `From` is not implemented for `One` - | - = note: required for `Two` to implement `Into` + --> tests/trybuild/no_handle_conversions_require_into_fail.rs:11:18 + | +11 | Two --(B)--> One; + | ^^^ the trait `From` is not implemented for `One` + | + = note: required for `Two` to implement `Into` note: required by a bound in `TransitionResult::::from` - --> $WORKSPACE/fsm/rustfsm_trait/src/lib.rs - | - | CurrentState: Into, - | ^^^^^^^^ required by this bound in `TransitionResult::::from` + --> $WORKSPACE/fsm/rustfsm_trait/src/lib.rs + | + | pub fn from(current_state: CurrentState) -> Self + | ---- required by a bound in this associated function + | where + | CurrentState: Into, + | ^^^^^^^^ required by this bound in `TransitionResult::::from` diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/sdk/Cargo.toml temporalio-1.3.0/temporalio/bridge/sdk-core/sdk/Cargo.toml --- temporalio-1.3.0/temporalio/bridge/sdk-core/sdk/Cargo.toml 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/sdk/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -28,7 +28,7 @@ tokio = { version = "1.26", features = ["rt", "rt-multi-thread", "parking_lot", "time", "fs"] } tokio-util = { version = "0.7" } tokio-stream = "0.1" -tonic = "0.8" +tonic = { workspace = true } tracing = "0.1" [dependencies.temporal-sdk-core] diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/sdk/src/lib.rs temporalio-1.3.0/temporalio/bridge/sdk-core/sdk/src/lib.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/sdk/src/lib.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/sdk/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -116,7 +116,7 @@ let mut builder = ClientOptionsBuilder::default(); builder .target_url(url) - .client_name("rust-sdk".to_string()) + .client_name("temporal-rust".to_string()) .client_version(VERSION.to_string()); builder diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/sdk/src/workflow_context.rs temporalio-1.3.0/temporalio/bridge/sdk-core/sdk/src/workflow_context.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/sdk/src/workflow_context.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/sdk/src/workflow_context.rs 2023-10-30 19:40:00.000000000 +0000 @@ -249,8 +249,8 @@ /// Record that this workflow history was created with the provided patch, and it is being /// phased out. - pub fn deprecate_patch(&self, patch_id: &str) { - self.patch_impl(patch_id, true); + pub fn deprecate_patch(&self, patch_id: &str) -> bool { + self.patch_impl(patch_id, true) } fn patch_impl(&self, patch_id: &str, deprecated: bool) -> bool { diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/sdk-core-protos/Cargo.toml temporalio-1.3.0/temporalio/bridge/sdk-core/sdk-core-protos/Cargo.toml --- temporalio-1.3.0/temporalio/bridge/sdk-core/sdk-core-protos/Cargo.toml 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/sdk-core-protos/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -25,9 +25,9 @@ serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" thiserror = "1.0" -tonic = "0.8" +tonic = { workspace = true } uuid = { version = "1.1", features = ["v4"], optional = true } [build-dependencies] -tonic-build = "0.8" +tonic-build = { workspace = true } prost-wkt-build = "0.4" diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/tests/integ_tests/metrics_tests.rs temporalio-1.3.0/temporalio/bridge/sdk-core/tests/integ_tests/metrics_tests.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/tests/integ_tests/metrics_tests.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/tests/integ_tests/metrics_tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,15 @@ use assert_matches::assert_matches; -use std::{sync::Arc, time::Duration}; +use std::{net::SocketAddr, sync::Arc, time::Duration}; use temporal_client::{WorkflowClientTrait, WorkflowOptions, WorkflowService}; -use temporal_sdk_core::{init_worker, CoreRuntime}; -use temporal_sdk_core_api::{telemetry::MetricsExporter, worker::WorkerConfigBuilder, Worker}; +use temporal_sdk_core::{init_worker, telemetry::start_prometheus_metric_exporter, CoreRuntime}; +use temporal_sdk_core_api::{ + telemetry::{ + metrics::{CoreMeter, MetricAttributes, MetricParameters}, + PrometheusExporterOptionsBuilder, TelemetryOptions, + }, + worker::WorkerConfigBuilder, + Worker, +}; use temporal_sdk_core_protos::{ coresdk::{ activity_result::ActivityExecutionResult, @@ -23,7 +30,7 @@ use temporal_sdk_core_test_utils::{ get_integ_server_options, get_integ_telem_options, CoreWfStarter, NAMESPACE, }; -use tokio::{join, sync::Barrier}; +use tokio::{join, sync::Barrier, task::AbortHandle}; static ANY_PORT: &str = "127.0.0.1:0"; @@ -31,15 +38,41 @@ reqwest::get(endpoint).await.unwrap().text().await.unwrap() } +struct AbortOnDrop { + ah: AbortHandle, +} +impl Drop for AbortOnDrop { + fn drop(&mut self) { + self.ah.abort(); + } +} + +fn prom_metrics() -> (TelemetryOptions, SocketAddr, AbortOnDrop) { + let mut telemopts = get_integ_telem_options(); + let prom_info = start_prometheus_metric_exporter( + PrometheusExporterOptionsBuilder::default() + .socket_addr(ANY_PORT.parse().unwrap()) + .build() + .unwrap(), + ) + .unwrap(); + telemopts.metrics = Some(prom_info.meter as Arc); + ( + telemopts, + prom_info.bound_addr, + AbortOnDrop { + ah: prom_info.abort_handle, + }, + ) +} + #[tokio::test] async fn prometheus_metrics_exported() { - let mut telemopts = get_integ_telem_options(); - telemopts.metrics = Some(MetricsExporter::Prometheus(ANY_PORT.parse().unwrap())); + let (telemopts, addr, _aborter) = prom_metrics(); let rt = CoreRuntime::new_assume_tokio(telemopts).unwrap(); - let addr = rt.telemetry().prom_port().unwrap(); let opts = get_integ_server_options(); let mut raw_client = opts - .connect_no_namespace(rt.metric_meter().as_deref(), None) + .connect_no_namespace(rt.telemetry().get_temporal_metric_meter(), None) .await .unwrap(); assert!(raw_client.get_client().capabilities().is_some()); @@ -56,15 +89,26 @@ assert!(body.contains( "temporal_request_latency_count{operation=\"GetSystemInfo\",service_name=\"temporal-core-sdk\"} 1" )); + // Verify counter names are appropriate (don't end w/ '_total') + assert!(body.contains("temporal_request{")); + // Verify non-temporal metrics meter does not prefix + let mm = rt.telemetry().get_metric_meter().unwrap(); + let g = mm.inner.gauge(MetricParameters::from("mygauge")); + g.record( + 42, + &MetricAttributes::OTel { + kvs: Arc::new(vec![]), + }, + ); + let body = get_text(format!("http://{addr}/metrics")).await; + assert!(body.contains("\nmygauge 42")); } #[tokio::test] async fn one_slot_worker_reports_available_slot() { - let mut telemopts = get_integ_telem_options(); + let (telemopts, addr, _aborter) = prom_metrics(); let tq = "one_slot_worker_tq"; - telemopts.metrics = Some(MetricsExporter::Prometheus(ANY_PORT.parse().unwrap())); let rt = CoreRuntime::new_assume_tokio(telemopts).unwrap(); - let addr = rt.telemetry().prom_port().unwrap(); let worker_cfg = WorkerConfigBuilder::default() .namespace(NAMESPACE) @@ -161,6 +205,16 @@ service_name=\"temporal-core-sdk\",task_queue=\"one_slot_worker_tq\",\ worker_type=\"WorkflowWorker\"}} 2" ))); + assert!(body.contains(&format!( + "temporal_worker_task_slots_available{{namespace=\"{NAMESPACE}\",\ + service_name=\"temporal-core-sdk\",task_queue=\"one_slot_worker_tq\",\ + worker_type=\"ActivityWorker\"}} 1" + ))); + assert!(body.contains(&format!( + "temporal_worker_task_slots_available{{namespace=\"{NAMESPACE}\",\ + service_name=\"temporal-core-sdk\",task_queue=\"one_slot_worker_tq\",\ + worker_type=\"LocalActivityWorker\"}} 1" + ))); // Start a workflow so that a task will get delivered client @@ -182,7 +236,7 @@ wf_task_barr.wait().await; // At this point the workflow task is outstanding, so there should be 0 slots, and - // the activities haven't started, so there should be 1 each. + // the activities haven't started, so there should still be 1 each. let body = get_text(format!("http://{addr}/metrics")).await; assert!(body.contains(&format!( "temporal_worker_task_slots_available{{namespace=\"{NAMESPACE}\",\ @@ -264,10 +318,8 @@ )] completion: workflow_command::Variant, ) { - let mut telemopts = get_integ_telem_options(); - telemopts.metrics = Some(MetricsExporter::Prometheus(ANY_PORT.parse().unwrap())); + let (telemopts, addr, _aborter) = prom_metrics(); let rt = CoreRuntime::new_assume_tokio(telemopts).unwrap(); - let addr = rt.telemetry().prom_port().unwrap(); let mut starter = CoreWfStarter::new_with_runtime("query_of_closed_workflow_doesnt_tick_terminal_metric", rt); // Disable cache to ensure replay happens completely @@ -275,7 +327,22 @@ let worker = starter.get_worker().await; let run_id = starter.start_wf().await; let task = worker.poll_workflow_activation().await.unwrap(); + // Fail wf task + worker + .complete_workflow_activation(WorkflowActivationCompletion::fail( + task.run_id, + "whatever".into(), + )) + .await + .unwrap(); + // Handle cache eviction + let task = worker.poll_workflow_activation().await.unwrap(); + worker + .complete_workflow_activation(WorkflowActivationCompletion::empty(task.run_id)) + .await + .unwrap(); // Immediately complete the workflow + let task = worker.poll_workflow_activation().await.unwrap(); worker .complete_workflow_activation(WorkflowActivationCompletion::from_cmd( task.run_id, @@ -370,3 +437,31 @@ .expect("Must find matching metric"); assert!(matching_line.ends_with('1')); } + +#[test] +fn runtime_new() { + let mut rt = CoreRuntime::new( + get_integ_telem_options(), + tokio::runtime::Builder::new_multi_thread(), + ) + .unwrap(); + let handle = rt.tokio_handle(); + let _rt = handle.enter(); + let (telemopts, addr, _aborter) = prom_metrics(); + rt.telemetry_mut() + .attach_late_init_metrics(telemopts.metrics.unwrap()); + let opts = get_integ_server_options(); + handle.block_on(async { + let mut raw_client = opts + .connect_no_namespace(rt.telemetry().get_temporal_metric_meter(), None) + .await + .unwrap(); + assert!(raw_client.get_client().capabilities().is_some()); + let _ = raw_client + .list_namespaces(ListNamespacesRequest::default()) + .await + .unwrap(); + let body = get_text(format!("http://{addr}/metrics")).await; + assert!(body.contains("temporal_request")); + }); +} diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs temporalio-1.3.0/temporalio/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs 2023-10-30 19:40:00.000000000 +0000 @@ -125,3 +125,69 @@ }; tokio::join!(canceller, runner); } + +#[tokio::test] +async fn abandoned_child_resolves_post_cancel() { + let mut starter = CoreWfStarter::new("child-workflow-resolves-post-cancel"); + starter.no_remote_activities(); + let mut worker = starter.worker().await; + let barr: &'static Barrier = Box::leak(Box::new(Barrier::new(2))); + + worker.register_wf( + PARENT_WF_TYPE.to_string(), + move |mut ctx: WfContext| async move { + let child = ctx.child_workflow(ChildWorkflowOptions { + workflow_id: "abandoned-child-resolve-post-cancel".to_owned(), + workflow_type: CHILD_WF_TYPE.to_owned(), + parent_close_policy: ParentClosePolicy::Abandon, + cancel_type: ChildWorkflowCancellationType::Abandon, + ..Default::default() + }); + + let started = child + .start(&ctx) + .await + .into_started() + .expect("Child chould start OK"); + barr.wait().await; + // Wait for cancel signal + ctx.cancelled().await; + // Cancel the child immediately + started.cancel(&ctx); + // Need to do something else, so we will see the child completing + ctx.timer(Duration::from_secs(1)).await; + started.result().await; + Ok(().into()) + }, + ); + worker.register_wf(CHILD_WF_TYPE.to_string(), |_: WfContext| async move { + Ok("I'm done".into()) + }); + + worker + .submit_wf( + "parent-abandoner-resolving".to_string(), + PARENT_WF_TYPE.to_owned(), + vec![], + WorkflowOptions::default(), + ) + .await + .unwrap(); + let client = starter.get_client().await; + let canceller = async { + barr.wait().await; + client + .cancel_workflow_execution( + "parent-abandoner-resolving".to_string(), + None, + "die".to_string(), + None, + ) + .await + .unwrap(); + }; + let runner = async move { + worker.run_until_done().await.unwrap(); + }; + tokio::join!(canceller, runner); +} diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs temporalio-1.3.0/temporalio/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,8 @@ use std::{ - sync::atomic::{AtomicBool, Ordering}, + sync::{ + atomic::{AtomicBool, Ordering}, + Arc, + }, time::Duration, }; @@ -115,5 +118,36 @@ }); starter.start_with_worker(wf_name, &mut worker).await; + worker.run_until_done().await.unwrap(); +} + +#[tokio::test] +async fn can_remove_deprecated_patch_near_other_patch() { + let wf_name = "can_add_change_markers"; + let mut starter = CoreWfStarter::new(wf_name); + starter.no_remote_activities(); + let mut worker = starter.worker().await; + let did_die = Arc::new(AtomicBool::new(false)); + worker.register_wf(wf_name.to_owned(), move |ctx: WfContext| { + let did_die = did_die.clone(); + async move { + ctx.timer(Duration::from_millis(200)).await; + if !did_die.load(Ordering::Acquire) { + assert!(ctx.deprecate_patch("getting-deprecated")); + assert!(ctx.patched("staying")); + } else { + assert!(ctx.patched("staying")); + } + ctx.timer(Duration::from_millis(200)).await; + + if !did_die.load(Ordering::Acquire) { + did_die.store(true, Ordering::Release); + ctx.force_task_fail(anyhow::anyhow!("i'm ded")); + } + Ok(().into()) + } + }); + + starter.start_with_worker(wf_name, &mut worker).await; worker.run_until_done().await.unwrap(); } diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/tests/main.rs temporalio-1.3.0/temporalio/bridge/sdk-core/tests/main.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/tests/main.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/tests/main.rs 2023-10-30 19:40:00.000000000 +0000 @@ -37,7 +37,7 @@ let opts = get_integ_server_options(); let runtime = CoreRuntime::new_assume_tokio(get_integ_telem_options()).unwrap(); let mut retrying_client = opts - .connect_no_namespace(runtime.metric_meter().as_deref(), None) + .connect_no_namespace(runtime.telemetry().get_temporal_metric_meter(), None) .await .unwrap(); diff -Nru temporalio-1.3.0/temporalio/bridge/sdk-core/test-utils/src/lib.rs temporalio-1.3.0/temporalio/bridge/sdk-core/test-utils/src/lib.rs --- temporalio-1.3.0/temporalio/bridge/sdk-core/test-utils/src/lib.rs 2023-07-24 14:45:49.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/sdk-core/test-utils/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -33,13 +33,14 @@ ephemeral_server::{EphemeralExe, EphemeralExeVersion}, init_replay_worker, init_worker, replay::HistoryForReplay, + telemetry::{build_otlp_metric_exporter, start_prometheus_metric_exporter}, ClientOptions, ClientOptionsBuilder, CoreRuntime, WorkerConfigBuilder, }; use temporal_sdk_core_api::{ errors::{PollActivityError, PollWfError}, telemetry::{ - Logger, MetricsExporter, OtelCollectorOptions, TelemetryOptions, TelemetryOptionsBuilder, - TraceExportConfig, TraceExporter, + metrics::CoreMeter, Logger, OtelCollectorOptionsBuilder, PrometheusExporterOptionsBuilder, + TelemetryOptions, TelemetryOptionsBuilder, }, Worker as CoreWorker, }; @@ -145,7 +146,7 @@ let telemetry_options = get_integ_telem_options(); let rt = CoreRuntime::new_assume_tokio(telemetry_options).expect("Core runtime inits cleanly"); - let _ = tracing::subscriber::set_global_default(rt.trace_subscriber()); + let _ = tracing::subscriber::set_global_default(rt.telemetry().trace_subscriber()); rt }); } @@ -585,22 +586,24 @@ .ok() .map(|x| x.parse::().unwrap()) { - let opts = OtelCollectorOptions { - url, - headers: Default::default(), - metric_periodicity: None, - }; - ob.tracing(TraceExportConfig { - filter: filter_string.clone(), - exporter: TraceExporter::Otel(opts.clone()), - }); - ob.metrics(MetricsExporter::Otel(opts)); + let opts = OtelCollectorOptionsBuilder::default() + .url(url) + .build() + .unwrap(); + ob.metrics(Arc::new(build_otlp_metric_exporter(opts).unwrap()) as Arc); } if let Some(addr) = env::var(PROM_ENABLE_ENV_VAR) .ok() .map(|x| SocketAddr::new([127, 0, 0, 1].into(), x.parse().unwrap())) { - ob.metrics(MetricsExporter::Prometheus(addr)); + let prom_info = start_prometheus_metric_exporter( + PrometheusExporterOptionsBuilder::default() + .socket_addr(addr) + .build() + .unwrap(), + ) + .unwrap(); + ob.metrics(prom_info.meter as Arc); } ob.logging(Logger::Console { filter: filter_string, diff -Nru temporalio-1.3.0/temporalio/bridge/src/client.rs temporalio-1.3.0/temporalio/bridge/src/client.rs --- temporalio-1.3.0/temporalio/bridge/src/client.rs 2023-07-24 14:45:48.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/src/client.rs 2023-10-30 19:40:00.000000000 +0000 @@ -78,7 +78,10 @@ runtime_ref.runtime.future_into_py(py, async move { Ok(ClientRef { retry_client: opts - .connect_no_namespace(runtime.core.metric_meter().as_deref(), headers) + .connect_no_namespace( + runtime.core.telemetry().get_temporal_metric_meter(), + headers, + ) .await .map_err(|err| { PyRuntimeError::new_err(format!("Failed client connect: {}", err)) diff -Nru temporalio-1.3.0/temporalio/bridge/src/runtime.rs temporalio-1.3.0/temporalio/bridge/src/runtime.rs --- temporalio-1.3.0/temporalio/bridge/src/runtime.rs 2023-07-24 14:45:48.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/src/runtime.rs 2023-10-30 19:40:00.000000000 +0000 @@ -8,10 +8,12 @@ use std::str::FromStr; use std::sync::Arc; use std::time::Duration; +use temporal_sdk_core::telemetry::{build_otlp_metric_exporter, start_prometheus_metric_exporter}; use temporal_sdk_core::CoreRuntime; +use temporal_sdk_core_api::telemetry::metrics::CoreMeter; use temporal_sdk_core_api::telemetry::{ - Logger, MetricsExporter, OtelCollectorOptions, TelemetryOptions, TelemetryOptionsBuilder, - TraceExportConfig, TraceExporter, + Logger, MetricTemporality, OtelCollectorOptionsBuilder, PrometheusExporterOptionsBuilder, + TelemetryOptions, TelemetryOptionsBuilder, }; use url::Url; @@ -27,16 +29,8 @@ #[derive(FromPyObject)] pub struct TelemetryConfig { - tracing: Option, logging: Option, metrics: Option, - global_tags: Option> -} - -#[derive(FromPyObject)] -pub struct TracingConfig { - filter: String, - opentelemetry: OpenTelemetryConfig, } #[derive(FromPyObject)] @@ -49,6 +43,9 @@ pub struct MetricsConfig { opentelemetry: Option, prometheus: Option, + attach_service_name: bool, + global_tags: Option>, + metric_prefix: Option, } #[derive(FromPyObject)] @@ -56,25 +53,34 @@ url: String, headers: HashMap, metric_periodicity_millis: Option, + metric_temporality_delta: bool, } #[derive(FromPyObject)] pub struct PrometheusConfig { bind_address: String, + counters_total_suffix: bool, + unit_suffix: bool, } pub fn init_runtime(telemetry_config: TelemetryConfig) -> PyResult { + let mut core = CoreRuntime::new( + // We don't move telemetry config here because we need it for + // late-binding metrics + (&telemetry_config).try_into()?, + tokio::runtime::Builder::new_multi_thread(), + ) + .map_err(|err| PyRuntimeError::new_err(format!("Failed initializing telemetry: {}", err)))?; + // We late-bind the metrics after core runtime is created since it needs + // the Tokio handle + if let Some(metrics_conf) = telemetry_config.metrics { + let _guard = core.tokio_handle().enter(); + core.telemetry_mut() + .attach_late_init_metrics(metrics_conf.try_into()?); + } Ok(RuntimeRef { runtime: Runtime { - core: Arc::new( - CoreRuntime::new( - telemetry_config.try_into()?, - tokio::runtime::Builder::new_multi_thread(), - ) - .map_err(|err| { - PyRuntimeError::new_err(format!("Failed initializing telemetry: {}", err)) - })?, - ), + core: Arc::new(core), }, }) } @@ -94,44 +100,28 @@ } } -impl TryFrom for TelemetryOptions { +impl TryFrom<&TelemetryConfig> for TelemetryOptions { type Error = PyErr; - fn try_from(conf: TelemetryConfig) -> PyResult { + fn try_from(conf: &TelemetryConfig) -> PyResult { let mut build = TelemetryOptionsBuilder::default(); - if let Some(v) = conf.tracing { - build.tracing(TraceExportConfig { - filter: v.filter, - exporter: TraceExporter::Otel(v.opentelemetry.try_into()?), - }); - } - if let Some(v) = conf.logging { - build.logging(if v.forward { - Logger::Forward { filter: v.filter } - } else { - Logger::Console { filter: v.filter } - }); - } - if let Some(v) = conf.metrics { - build.metrics(if let Some(t) = v.opentelemetry { - if v.prometheus.is_some() { - return Err(PyValueError::new_err( - "Cannot have OpenTelemetry and Prometheus metrics", - )); + if let Some(logging_conf) = &conf.logging { + build.logging(if logging_conf.forward { + Logger::Forward { + filter: logging_conf.filter.to_string(), } - MetricsExporter::Otel(t.try_into()?) - } else if let Some(t) = v.prometheus { - MetricsExporter::Prometheus(SocketAddr::from_str(&t.bind_address).map_err( - |err| PyValueError::new_err(format!("Invalid Prometheus address: {}", err)), - )?) } else { - return Err(PyValueError::new_err( - "Either OpenTelemetry or Prometheus config must be provided", - )); + Logger::Console { + filter: logging_conf.filter.to_string(), + } }); } - if let Some(v) = conf.global_tags { - build.global_tags(v); + if let Some(metrics_conf) = &conf.metrics { + // Note, actual metrics instance is late-bound in init_runtime + build.attach_service_name(metrics_conf.attach_service_name); + if let Some(prefix) = &metrics_conf.metric_prefix { + build.metric_prefix(prefix.to_string()); + } } build .build() @@ -139,16 +129,68 @@ } } -impl TryFrom for OtelCollectorOptions { +impl TryFrom for Arc { type Error = PyErr; - fn try_from(conf: OpenTelemetryConfig) -> PyResult { - Ok(OtelCollectorOptions { - url: Url::parse(&conf.url) - .map_err(|err| PyValueError::new_err(format!("Invalid OTel URL: {}", err)))?, - headers: conf.headers, - metric_periodicity: conf.metric_periodicity_millis.map(Duration::from_millis), - }) + fn try_from(conf: MetricsConfig) -> PyResult { + if let Some(otel_conf) = conf.opentelemetry { + if !conf.prometheus.is_none() { + return Err(PyValueError::new_err( + "Cannot have OpenTelemetry and Prometheus metrics", + )); + } + + // Build OTel exporter + let mut build = OtelCollectorOptionsBuilder::default(); + build + .url( + Url::parse(&otel_conf.url).map_err(|err| { + PyValueError::new_err(format!("Invalid OTel URL: {}", err)) + })?, + ) + .headers(otel_conf.headers); + if let Some(period) = otel_conf.metric_periodicity_millis { + build.metric_periodicity(Duration::from_millis(period)); + } + if otel_conf.metric_temporality_delta { + build.metric_temporality(MetricTemporality::Delta); + } + if let Some(global_tags) = conf.global_tags { + build.global_tags(global_tags); + } + let otel_options = build + .build() + .map_err(|err| PyValueError::new_err(format!("Invalid OTel config: {}", err)))?; + Ok(Arc::new(build_otlp_metric_exporter(otel_options).map_err( + |err| PyValueError::new_err(format!("Failed building OTel exporter: {}", err)), + )?)) + } else if let Some(prom_conf) = conf.prometheus { + // Start prom exporter + let mut build = PrometheusExporterOptionsBuilder::default(); + build + .socket_addr( + SocketAddr::from_str(&prom_conf.bind_address).map_err(|err| { + PyValueError::new_err(format!("Invalid Prometheus address: {}", err)) + })?, + ) + .counters_total_suffix(prom_conf.counters_total_suffix) + .unit_suffix(prom_conf.unit_suffix); + if let Some(global_tags) = conf.global_tags { + build.global_tags(global_tags); + } + let prom_options = build.build().map_err(|err| { + PyValueError::new_err(format!("Invalid Prometheus config: {}", err)) + })?; + Ok(start_prometheus_metric_exporter(prom_options) + .map_err(|err| { + PyValueError::new_err(format!("Failed starting Prometheus exporter: {}", err)) + })? + .meter) + } else { + Err(PyValueError::new_err( + "Either OpenTelemetry or Prometheus config must be provided", + )) + } } } diff -Nru temporalio-1.3.0/temporalio/bridge/src/worker.rs temporalio-1.3.0/temporalio/bridge/src/worker.rs --- temporalio-1.3.0/temporalio/bridge/src/worker.rs 2023-07-24 14:45:48.000000000 +0000 +++ temporalio-1.3.0/temporalio/bridge/src/worker.rs 2023-10-30 19:40:00.000000000 +0000 @@ -50,7 +50,7 @@ macro_rules! enter_sync { ($runtime:expr) => { temporal_sdk_core::telemetry::set_trace_subscriber_for_current_thread( - $runtime.core.trace_subscriber(), + $runtime.core.telemetry().trace_subscriber(), ); let _guard = $runtime.core.tokio_handle().enter(); }; diff -Nru temporalio-1.3.0/temporalio/contrib/opentelemetry.py temporalio-1.3.0/temporalio/contrib/opentelemetry.py --- temporalio-1.3.0/temporalio/contrib/opentelemetry.py 2023-07-24 14:45:48.000000000 +0000 +++ temporalio-1.3.0/temporalio/contrib/opentelemetry.py 2023-10-30 19:40:00.000000000 +0000 @@ -158,8 +158,9 @@ *, attributes: opentelemetry.util.types.Attributes, input: Optional[_InputWithHeaders] = None, + kind: opentelemetry.trace.SpanKind, ) -> Iterator[None]: - with self.tracer.start_as_current_span(name, attributes=attributes): + with self.tracer.start_as_current_span(name, attributes=attributes, kind=kind): if input: input.headers = self._context_to_headers(input.headers) yield None @@ -190,6 +191,7 @@ attributes=params.attributes, links=links, start_time=params.time_ns, + kind=params.kind, ) context = opentelemetry.trace.set_span_in_context(span, context) if params.exception: @@ -218,6 +220,7 @@ f"{prefix}:{input.workflow}", attributes={"temporalWorkflowID": input.id}, input=input, + kind=opentelemetry.trace.SpanKind.CLIENT, ): return await super().start_workflow(input) @@ -226,6 +229,7 @@ f"QueryWorkflow:{input.query}", attributes={"temporalWorkflowID": input.id}, input=input, + kind=opentelemetry.trace.SpanKind.CLIENT, ): return await super().query_workflow(input) @@ -236,6 +240,7 @@ f"SignalWorkflow:{input.signal}", attributes={"temporalWorkflowID": input.id}, input=input, + kind=opentelemetry.trace.SpanKind.CLIENT, ): return await super().signal_workflow(input) @@ -261,6 +266,7 @@ "temporalRunID": info.workflow_run_id, "temporalActivityID": info.activity_id, }, + kind=opentelemetry.trace.SpanKind.SERVER, ): return await super().execute_activity(input) @@ -283,6 +289,7 @@ time_ns: int link_context: Optional[_CarrierDict] exception: Optional[Exception] + kind: opentelemetry.trace.SpanKind _interceptor_context_key = opentelemetry.context.create_key( @@ -334,8 +341,10 @@ :py:meth:`temporalio.worker.WorkflowInboundInterceptor.execute_workflow`. """ with self._top_level_workflow_context(success_is_complete=True): + # Entrypoint of workflow should be `server` in OTel self._completed_span( - f"RunWorkflow:{temporalio.workflow.info().workflow_type}" + f"RunWorkflow:{temporalio.workflow.info().workflow_type}", + kind=opentelemetry.trace.SpanKind.SERVER, ) return await super().execute_workflow(input) @@ -355,6 +364,7 @@ self._completed_span( f"HandleSignal:{input.signal}", link_context_carrier=link_context_carrier, + kind=opentelemetry.trace.SpanKind.SERVER, ) await super().handle_signal(input) @@ -388,6 +398,7 @@ link_context_carrier=link_context_carrier, # Create even on replay for queries new_span_even_on_replay=True, + kind=opentelemetry.trace.SpanKind.SERVER, ) return await super().handle_query(input) finally: @@ -437,6 +448,7 @@ self._completed_span( f"CompleteWorkflow:{temporalio.workflow.info().workflow_type}", exception=exception, + kind=opentelemetry.trace.SpanKind.INTERNAL, ) opentelemetry.context.detach(token) @@ -468,6 +480,7 @@ new_span_even_on_replay: bool = False, additional_attributes: opentelemetry.util.types.Attributes = None, exception: Optional[Exception] = None, + kind: opentelemetry.trace.SpanKind = opentelemetry.trace.SpanKind.INTERNAL, ) -> None: # If there is no span on the context, we do not create a span if opentelemetry.trace.get_current_span() is opentelemetry.trace.INVALID_SPAN: @@ -499,6 +512,7 @@ time_ns=temporalio.workflow.time_ns(), link_context=link_context_carrier, exception=exception, + kind=kind, ) ) @@ -535,7 +549,9 @@ ) -> None: # Create new span and put on outbound input self.root._completed_span( - f"SignalChildWorkflow:{input.signal}", add_to_outbound=input + f"SignalChildWorkflow:{input.signal}", + add_to_outbound=input, + kind=opentelemetry.trace.SpanKind.SERVER, ) await super().signal_child_workflow(input) @@ -544,7 +560,9 @@ ) -> None: # Create new span and put on outbound input self.root._completed_span( - f"SignalExternalWorkflow:{input.signal}", add_to_outbound=input + f"SignalExternalWorkflow:{input.signal}", + add_to_outbound=input, + kind=opentelemetry.trace.SpanKind.CLIENT, ) await super().signal_external_workflow(input) @@ -553,7 +571,9 @@ ) -> temporalio.workflow.ActivityHandle: # Create new span and put on outbound input self.root._completed_span( - f"StartActivity:{input.activity}", add_to_outbound=input + f"StartActivity:{input.activity}", + add_to_outbound=input, + kind=opentelemetry.trace.SpanKind.CLIENT, ) return super().start_activity(input) @@ -562,7 +582,9 @@ ) -> temporalio.workflow.ChildWorkflowHandle: # Create new span and put on outbound input self.root._completed_span( - f"StartChildWorkflow:{input.workflow}", add_to_outbound=input + f"StartChildWorkflow:{input.workflow}", + add_to_outbound=input, + kind=opentelemetry.trace.SpanKind.CLIENT, ) return await super().start_child_workflow(input) @@ -571,7 +593,9 @@ ) -> temporalio.workflow.ActivityHandle: # Create new span and put on outbound input self.root._completed_span( - f"StartActivity:{input.activity}", add_to_outbound=input + f"StartActivity:{input.activity}", + add_to_outbound=input, + kind=opentelemetry.trace.SpanKind.CLIENT, ) return super().start_local_activity(input) diff -Nru temporalio-1.3.0/temporalio/converter.py temporalio-1.3.0/temporalio/converter.py --- temporalio-1.3.0/temporalio/converter.py 2023-07-24 14:45:48.000000000 +0000 +++ temporalio-1.3.0/temporalio/converter.py 2023-10-30 19:40:00.000000000 +0000 @@ -388,6 +388,16 @@ class JSONProtoPayloadConverter(EncodingPayloadConverter): """Converter for 'json/protobuf' payloads supporting protobuf Message values.""" + def __init__(self, ignore_unknown_fields: bool = False): + """Initialize a JSON proto converter. + + Args: + ignore_unknown_fields: Determines whether converter should error if + unknown fields are detected + """ + super().__init__() + self._ignore_unknown_fields = ignore_unknown_fields + @property def encoding(self) -> str: """See base class.""" @@ -424,7 +434,11 @@ message_type = payload.metadata.get("messageType", b"").decode() try: value = _sym_db.GetSymbol(message_type)() - return google.protobuf.json_format.Parse(payload.data, value) + return google.protobuf.json_format.Parse( + payload.data, + value, + ignore_unknown_fields=self._ignore_unknown_fields, + ) except KeyError as err: raise RuntimeError(f"Unknown Protobuf type {message_type}") from err except google.protobuf.json_format.ParseError as err: diff -Nru temporalio-1.3.0/temporalio/runtime.py temporalio-1.3.0/temporalio/runtime.py --- temporalio-1.3.0/temporalio/runtime.py 2023-07-24 14:45:48.000000000 +0000 +++ temporalio-1.3.0/temporalio/runtime.py 2023-10-30 19:40:00.000000000 +0000 @@ -7,6 +7,7 @@ from dataclasses import dataclass, field from datetime import timedelta +from enum import Enum from typing import ClassVar, Mapping, Optional, Union import temporalio.bridge.runtime @@ -87,25 +88,6 @@ @dataclass(frozen=True) -class TracingConfig: - """Configuration for runtime tracing.""" - - filter: Union[TelemetryFilter, str] - """Filter for tracing. Can use :py:class:`TelemetryFilter` or raw string.""" - - opentelemetry: OpenTelemetryConfig - """Configuration for OpenTelemetry tracing collector.""" - - def _to_bridge_config(self) -> temporalio.bridge.runtime.TracingConfig: - return temporalio.bridge.runtime.TracingConfig( - filter=self.filter - if isinstance(self.filter, str) - else self.filter.formatted(), - opentelemetry=self.opentelemetry._to_bridge_config(), - ) - - -@dataclass(frozen=True) class LoggingConfig: """Configuration for runtime logging.""" @@ -132,6 +114,13 @@ ) +class OpenTelemetryMetricTemporality(Enum): + """Temporality for OpenTelemetry metrics.""" + + CUMULATIVE = 1 + DELTA = 2 + + @dataclass(frozen=True) class OpenTelemetryConfig: """Configuration for OpenTelemetry collector.""" @@ -139,6 +128,9 @@ url: str headers: Optional[Mapping[str, str]] = None metric_periodicity: Optional[timedelta] = None + metric_temporality: OpenTelemetryMetricTemporality = ( + OpenTelemetryMetricTemporality.CUMULATIVE + ) def _to_bridge_config(self) -> temporalio.bridge.runtime.OpenTelemetryConfig: return temporalio.bridge.runtime.OpenTelemetryConfig( @@ -147,6 +139,8 @@ metric_periodicity_millis=None if not self.metric_periodicity else round(self.metric_periodicity.total_seconds() * 1000), + metric_temporality_delta=self.metric_temporality + == OpenTelemetryMetricTemporality.DELTA, ) @@ -155,10 +149,14 @@ """Configuration for Prometheus metrics endpoint.""" bind_address: str + counters_total_suffix: bool = False + unit_suffix: bool = False def _to_bridge_config(self) -> temporalio.bridge.runtime.PrometheusConfig: return temporalio.bridge.runtime.PrometheusConfig( - bind_address=self.bind_address + bind_address=self.bind_address, + counters_total_suffix=self.counters_total_suffix, + unit_suffix=self.unit_suffix, ) @@ -166,9 +164,6 @@ class TelemetryConfig: """Configuration for Core telemetry.""" - tracing: Optional[TracingConfig] = None - """Tracing configuration.""" - logging: Optional[LoggingConfig] = LoggingConfig.default """Logging configuration.""" @@ -176,11 +171,17 @@ """Metrics configuration.""" global_tags: Mapping[str, str] = field(default_factory=dict) - """OTel resource tags to be applied to all metrics and traces""" + """OTel resource tags to be applied to all metrics.""" + + attach_service_name: bool = True + """Whether to put the service_name on every metric.""" + + metric_prefix: Optional[str] = None + """Prefix to put on every Temporal metric. If unset, defaults to + ``temporal_``.""" def _to_bridge_config(self) -> temporalio.bridge.runtime.TelemetryConfig: return temporalio.bridge.runtime.TelemetryConfig( - tracing=None if not self.tracing else self.tracing._to_bridge_config(), logging=None if not self.logging else self.logging._to_bridge_config(), metrics=None if not self.metrics @@ -191,6 +192,8 @@ prometheus=None if not isinstance(self.metrics, PrometheusConfig) else self.metrics._to_bridge_config(), + attach_service_name=self.attach_service_name, + global_tags=self.global_tags or None, + metric_prefix=self.metric_prefix, ), - global_tags=self.global_tags, ) diff -Nru temporalio-1.3.0/temporalio/testing/_workflow.py temporalio-1.3.0/temporalio/testing/_workflow.py --- temporalio-1.3.0/temporalio/testing/_workflow.py 2023-07-24 14:45:48.000000000 +0000 +++ temporalio-1.3.0/temporalio/testing/_workflow.py 2023-10-30 19:40:00.000000000 +0000 @@ -562,5 +562,5 @@ config = client.config() config_interceptors = list(config["interceptors"]) config_interceptors.extend(interceptors) - config["interceptors"] = interceptors + config["interceptors"] = config_interceptors return temporalio.client.Client(**config) diff -Nru temporalio-1.3.0/temporalio/worker/_activity.py temporalio-1.3.0/temporalio/worker/_activity.py --- temporalio-1.3.0/temporalio/worker/_activity.py 2023-07-24 14:45:48.000000000 +0000 +++ temporalio-1.3.0/temporalio/worker/_activity.py 2023-10-30 19:40:00.000000000 +0000 @@ -195,6 +195,13 @@ except temporalio.bridge.worker.PollShutdownError: return + # Only call this after run()/drain_poll_queue() have returned. This will not + # raise an exception. + async def wait_all_completed(self) -> None: + running_tasks = [v.task for v in self._running_activities.values() if v.task] + if running_tasks: + await asyncio.gather(*running_tasks, return_exceptions=False) + def _cancel( self, task_token: bytes, cancel: temporalio.bridge.proto.activity_task.Cancel ) -> None: diff -Nru temporalio-1.3.0/temporalio/worker/_worker.py temporalio-1.3.0/temporalio/worker/_worker.py --- temporalio-1.3.0/temporalio/worker/_worker.py 2023-07-24 14:45:48.000000000 +0000 +++ temporalio-1.3.0/temporalio/worker/_worker.py 2023-10-30 19:40:00.000000000 +0000 @@ -467,6 +467,13 @@ for task in tasks: task.cancel() + # If there's an activity worker, we have to let all activity completions + # finish. We cannot guarantee that because poll shutdown completed + # (which means activities completed) that they got flushed to the + # server. + if self._activity_worker: + await self._activity_worker.wait_all_completed() + # Do final shutdown try: await self._bridge_worker.finalize_shutdown() diff -Nru temporalio-1.3.0/temporalio/worker/_workflow_instance.py temporalio-1.3.0/temporalio/worker/_workflow_instance.py --- temporalio-1.3.0/temporalio/worker/_workflow_instance.py 2023-07-24 14:45:48.000000000 +0000 +++ temporalio-1.3.0/temporalio/worker/_workflow_instance.py 2023-10-30 19:40:00.000000000 +0000 @@ -175,6 +175,8 @@ self._time_ns = 0 self._cancel_requested = False self._current_history_length = 0 + self._current_history_size = 0 + self._continue_as_new_suggested = False # Lazily loaded self._memo: Optional[Mapping[str, Any]] = None # Handles which are ready to run on the next event loop iteration @@ -272,6 +274,8 @@ self._current_completion.successful.SetInParent() self._current_activation_error: Optional[Exception] = None self._current_history_length = act.history_length + self._current_history_size = act.history_size_bytes + self._continue_as_new_suggested = act.continue_as_new_suggested self._time_ns = act.timestamp.ToNanoseconds() self._is_replaying = act.is_replaying @@ -738,6 +742,9 @@ def workflow_get_current_history_length(self) -> int: return self._current_history_length + def workflow_get_current_history_size(self) -> int: + return self._current_history_size + def workflow_get_external_workflow_handle( self, id: str, *, run_id: Optional[str] ) -> temporalio.workflow.ExternalWorkflowHandle[Any]: @@ -760,6 +767,9 @@ def workflow_info(self) -> temporalio.workflow.Info: return self._outbound.info() + def workflow_is_continue_as_new_suggested(self) -> bool: + return self._continue_as_new_suggested + def workflow_is_replaying(self) -> bool: return self._is_replaying @@ -784,6 +794,7 @@ )[0] def workflow_patch(self, id: str, *, deprecated: bool) -> bool: + self._assert_not_read_only("patch") # We use a previous memoized result of this if present. If this is being # deprecated, we can still use memoized result and skip the command. use_patch = self._patches_memoized.get(id) diff -Nru temporalio-1.3.0/temporalio/workflow.py temporalio-1.3.0/temporalio/workflow.py --- temporalio-1.3.0/temporalio/workflow.py 2023-07-24 14:45:48.000000000 +0000 +++ temporalio-1.3.0/temporalio/workflow.py 2023-10-30 19:40:00.000000000 +0000 @@ -336,11 +336,34 @@ def get_current_history_length(self) -> int: """Get the current number of events in history. + Note, this value may not be up to date if accessed inside a query. + Returns: Current number of events in history (up until the current task). """ return _Runtime.current().workflow_get_current_history_length() + def get_current_history_size(self) -> int: + """Get the current byte size of history. + + Note, this value may not be up to date if accessed inside a query. + + Returns: + Current byte-size of history (up until the current task). + """ + return _Runtime.current().workflow_get_current_history_size() + + def is_continue_as_new_suggested(self) -> bool: + """Get whether or not continue as new is suggested. + + Note, this value may not be up to date if accessed inside a query. + + Returns: + True if the server is configured to suggest continue as new and it + is suggested. + """ + return _Runtime.current().workflow_is_continue_as_new_suggested() + @dataclass(frozen=True) class ParentInfo: @@ -406,6 +429,10 @@ ... @abstractmethod + def workflow_get_current_history_size(self) -> int: + ... + + @abstractmethod def workflow_get_external_workflow_handle( self, id: str, *, run_id: Optional[str] ) -> ExternalWorkflowHandle[Any]: @@ -424,6 +451,10 @@ ... @abstractmethod + def workflow_is_continue_as_new_suggested(self) -> bool: + ... + + @abstractmethod def workflow_is_replaying(self) -> bool: ... diff -Nru temporalio-1.3.0/vendor/addr2line/.cargo-checksum.json temporalio-1.3.0/vendor/addr2line/.cargo-checksum.json --- temporalio-1.3.0/vendor/addr2line/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/addr2line/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"b278b1b797ac494c3653c85ede8a0f423a866300137117d2e914e4a52a87c08d","Cargo.lock":"ded666c16c5232c89b807781768ee73a4f8ed51d3b05a86850856d1a482dd5e6","Cargo.toml":"af4c88d2c7e685f9adf0f473fc9a0c33a2c8f54e3497f8eb92c8ec5d1dcfb1b5","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"e99d88d232bf57d70f0fb87f6b496d44b6653f99f8a63d250a54c61ea4bcde40","README.md":"76d28502bd2e83f6a9e3576bd45e9a7fe5308448c4b5384b0d249515b5f67a5c","bench.plot.r":"6a5d7a4d36ed6b3d9919be703a479bef47698bf947818b483ff03951df2d4e01","benchmark.sh":"b35f89b1ca2c1dc0476cdd07f0284b72d41920d1c7b6054072f50ffba296d78d","coverage.sh":"4677e81922d08a82e83068a911717a247c66af12e559f37b78b6be3337ac9f07","examples/addr2line.rs":"0ffdd45eeac7a2a5ddb71895009ea5e41306e22404bce375600b8371728e36ed","rustfmt.toml":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","src/builtin_split_dwarf_loader.rs":"dc6979de81b35f82e97275e6be27ec61f3c4225ea10574a9e031813e00185174","src/function.rs":"68f047e0c78afe18ad165db255c8254ee74c35cd6df0cc07e400252981f661ed","src/lazy.rs":"0bf23f7098f1902f181e43c2ffa82a3f86df2c0dbcb9bc0ebce6a0168dd8b060","src/lib.rs":"ebfdd66a4b553e6dcbb937903c4f30bfe3f4a0b6ae9fec810ec9eb9e6bf0ec2f","tests/correctness.rs":"4081f8019535305e3aa254c6a4e1436272dd873f9717c687ca0e66ea8d5871ed","tests/output_equivalence.rs":"b2cd7c59fa55808a2e66e9fe7f160d846867e3ecefe22c22a818f822c3c41f23","tests/parse.rs":"c2f7362e4679c1b4803b12ec6e8dca6da96aed7273fd210a857524a4182c30e7"},"package":"f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3"} \ No newline at end of file +{"files":{"CHANGELOG.md":"ef9fa958318e442f1da7d204494cefec75c144aa6d5d5c93b0a5d6fcdf4ef6c6","Cargo.lock":"20b23c454fc3127f08a1bcd2864bbf029793759e6411fba24d44d8f4b7831ad0","Cargo.toml":"d0f15fde73d42bdf00e93f960dff908447225bede9364cb1659e44740a536c04","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"e99d88d232bf57d70f0fb87f6b496d44b6653f99f8a63d250a54c61ea4bcde40","README.md":"76d28502bd2e83f6a9e3576bd45e9a7fe5308448c4b5384b0d249515b5f67a5c","bench.plot.r":"6a5d7a4d36ed6b3d9919be703a479bef47698bf947818b483ff03951df2d4e01","benchmark.sh":"b35f89b1ca2c1dc0476cdd07f0284b72d41920d1c7b6054072f50ffba296d78d","coverage.sh":"4677e81922d08a82e83068a911717a247c66af12e559f37b78b6be3337ac9f07","examples/addr2line.rs":"3c5eb5a6726634df6cf53e4d67ee9f90c9ac09838303947f45c3bea1e84548b5","rustfmt.toml":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","src/builtin_split_dwarf_loader.rs":"dc6979de81b35f82e97275e6be27ec61f3c4225ea10574a9e031813e00185174","src/function.rs":"68f047e0c78afe18ad165db255c8254ee74c35cd6df0cc07e400252981f661ed","src/lazy.rs":"0bf23f7098f1902f181e43c2ffa82a3f86df2c0dbcb9bc0ebce6a0168dd8b060","src/lib.rs":"9d6531f71fd138d31cc7596db9ab234198d0895a21ea9cb116434c19ec78b660","tests/correctness.rs":"4081f8019535305e3aa254c6a4e1436272dd873f9717c687ca0e66ea8d5871ed","tests/output_equivalence.rs":"b2cd7c59fa55808a2e66e9fe7f160d846867e3ecefe22c22a818f822c3c41f23","tests/parse.rs":"c2f7362e4679c1b4803b12ec6e8dca6da96aed7273fd210a857524a4182c30e7"},"package":"8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/addr2line/Cargo.lock temporalio-1.3.0/vendor/addr2line/Cargo.lock --- temporalio-1.3.0/vendor/addr2line/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/addr2line/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -8,12 +8,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" dependencies = [ - "gimli", + "gimli 0.27.2", ] [[package]] name = "addr2line" -version = "0.20.0" +version = "0.21.0" dependencies = [ "backtrace", "clap", @@ -21,10 +21,10 @@ "cpp_demangle", "fallible-iterator", "findshlibs", - "gimli", + "gimli 0.28.0", "libtest-mimic", "memmap2", - "object 0.31.0", + "object 0.32.0", "rustc-demangle", "rustc-std-workspace-alloc", "rustc-std-workspace-core", @@ -39,21 +39,53 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] -name = "atty" -version = "0.2.14" +name = "anstream" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is-terminal", + "utf8parse", ] [[package]] -name = "autocfg" -version = "1.1.0" +name = "anstyle" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" + +[[package]] +name = "anstyle-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "anstyle-wincon" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c" +dependencies = [ + "anstyle", + "windows-sys", +] [[package]] name = "backtrace" @@ -77,6 +109,12 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] +name = "bitflags" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" + +[[package]] name = "byteorder" version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -96,42 +134,51 @@ [[package]] name = "clap" -version = "3.2.23" +version = "4.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +checksum = "c27cdf28c0f604ba3f512b0c9a409f8de8513e4816705deb0498b627e7c3a3fd" dependencies = [ - "atty", - "bitflags", + "clap_builder", "clap_derive", - "clap_lex", - "indexmap", "once_cell", +] + +[[package]] +name = "clap_builder" +version = "4.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08a9f1ab5e9f01a9b81f202e8562eb9a10de70abf9eaeac1be465c28b75aa4aa" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", "strsim", - "termcolor", - "textwrap", + "terminal_size", ] [[package]] name = "clap_derive" -version = "3.2.18" +version = "4.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" +checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050" dependencies = [ "heck", - "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.15", ] [[package]] name = "clap_lex" -version = "0.2.4" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" -dependencies = [ - "os_str_bytes", -] +checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "compiler_builtins" @@ -158,10 +205,31 @@ ] [[package]] +name = "errno" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] name = "fallible-iterator" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] name = "findshlibs" @@ -190,6 +258,12 @@ version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" + +[[package]] +name = "gimli" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" dependencies = [ "compiler_builtins", "fallible-iterator", @@ -199,12 +273,6 @@ ] [[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] name = "heck" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -212,30 +280,39 @@ [[package]] name = "hermit-abi" -version = "0.1.19" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" dependencies = [ "libc", ] [[package]] name = "hermit-abi" -version = "0.2.6" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" + +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ + "hermit-abi 0.3.2", "libc", + "windows-sys", ] [[package]] -name = "indexmap" -version = "1.9.3" +name = "is-terminal" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "autocfg", - "hashbrown", + "hermit-abi 0.3.2", + "rustix 0.38.8", + "windows-sys", ] [[package]] @@ -246,15 +323,15 @@ [[package]] name = "libc" -version = "0.2.141" +version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "libtest-mimic" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79529479c298f5af41375b0c1a77ef670d450b4c9cd7949d2b43af08121b20ec" +checksum = "6d8de370f98a6cb8a4606618e53e802f93b094ddec0f96988eaec2c27e6e9ce7" dependencies = [ "clap", "termcolor", @@ -262,6 +339,18 @@ ] [[package]] +name = "linux-raw-sys" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + +[[package]] +name = "linux-raw-sys" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" + +[[package]] name = "memchr" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -306,9 +395,9 @@ [[package]] name = "object" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d08090140cfee2e09897d6be320b47a45b79eb68b414de87130f9532966e2f1d" +checksum = "77ac5bbd07aea88c60a577a1ce218075ffd59208b2d7ca97adf9bfc5aeb21ebe" dependencies = [ "flate2", "memchr", @@ -322,36 +411,6 @@ checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" [[package]] -name = "os_str_bytes" -version = "6.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267" - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] name = "proc-macro2" version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -388,13 +447,40 @@ checksum = "1956f5517128a2b6f23ab2dadf1a976f4f5b27962e7724c2bf3d45e539ec098c" [[package]] +name = "rustix" +version = "0.37.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys 0.3.8", + "windows-sys", +] + +[[package]] +name = "rustix" +version = "0.38.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" +dependencies = [ + "bitflags 2.4.0", + "errno", + "libc", + "linux-raw-sys 0.4.5", + "windows-sys", +] + +[[package]] name = "ruzstd" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a15e661f0f9dac21f3494fe5d23a6338c0ac116a2d22c2b63010acd89467ffe" +checksum = "ac3ffab8f9715a0d455df4bbb9d21e91135aab3cd3ca187af0cd0c3c3f868fdc" dependencies = [ "byteorder", - "thiserror", + "thiserror-core", "twox-hash", ] @@ -454,29 +540,33 @@ ] [[package]] -name = "textwrap" -version = "0.16.0" +name = "terminal_size" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" +checksum = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237" +dependencies = [ + "rustix 0.37.23", + "windows-sys", +] [[package]] -name = "thiserror" -version = "1.0.40" +name = "thiserror-core" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "0d97345f6437bb2004cd58819d8a9ef8e36cdd7661c2abc4bbde0a7c40d9f497" dependencies = [ - "thiserror-impl", + "thiserror-core-impl", ] [[package]] -name = "thiserror-impl" -version = "1.0.40" +name = "thiserror-core-impl" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "10ac1c5050e43014d16b2f94d0d2ce79e65ffdd8b38d8048f9c8f6a8a6da62ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 1.0.109", ] [[package]] @@ -511,10 +601,10 @@ checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" [[package]] -name = "version_check" -version = "0.9.4" +name = "utf8parse" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "winapi" @@ -546,3 +636,69 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" diff -Nru temporalio-1.3.0/vendor/addr2line/Cargo.toml temporalio-1.3.0/vendor/addr2line/Cargo.toml --- temporalio-1.3.0/vendor/addr2line/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/addr2line/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,8 +11,9 @@ [package] edition = "2018" +rust-version = "1.65" name = "addr2line" -version = "0.20.0" +version = "0.21.0" exclude = [ "/benches/*", "/fixtures/*", @@ -77,12 +78,12 @@ default-features = false [dependencies.fallible-iterator] -version = "0.2" +version = "0.3.0" optional = true default-features = false [dependencies.gimli] -version = "0.27.2" +version = "0.28.0" features = ["read"] default-features = false @@ -91,7 +92,7 @@ optional = true [dependencies.object] -version = "0.31.0" +version = "0.32.0" features = ["read"] optional = true default-features = false @@ -109,13 +110,14 @@ version = "0.3.13" [dev-dependencies.clap] -version = "3.1.6" +version = "4.3.21" +features = ["wrap_help"] [dev-dependencies.findshlibs] version = "0.10" [dev-dependencies.libtest-mimic] -version = "0.5.2" +version = "0.6.1" [dev-dependencies.typed-arena] version = "2" diff -Nru temporalio-1.3.0/vendor/addr2line/CHANGELOG.md temporalio-1.3.0/vendor/addr2line/CHANGELOG.md --- temporalio-1.3.0/vendor/addr2line/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/addr2line/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -2,6 +2,21 @@ -------------------------------------------------------------------------------- +## 0.21.0 (2023/08/12) + +### Breaking changes + +* Updated `gimli`, `object`, and `fallible-iterator` dependencies. + +### Changed + +* The minimum supported rust version is 1.65.0. + +* Store boxed slices instead of `Vec` objects in `Context`. + [#278](https://github.com/gimli-rs/addr2line/pull/278) + +-------------------------------------------------------------------------------- + ## 0.20.0 (2023/04/15) ### Breaking changes diff -Nru temporalio-1.3.0/vendor/addr2line/examples/addr2line.rs temporalio-1.3.0/vendor/addr2line/examples/addr2line.rs --- temporalio-1.3.0/vendor/addr2line/examples/addr2line.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/addr2line/examples/addr2line.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,7 +3,7 @@ use std::io::{BufRead, Lines, StdinLock, Write}; use std::path::{Path, PathBuf}; -use clap::{Arg, Command, Values}; +use clap::{Arg, ArgAction, Command}; use fallible_iterator::FallibleIterator; use object::{Object, ObjectSection, SymbolMap, SymbolMapName}; use typed_arena::Arena; @@ -19,7 +19,7 @@ } enum Addrs<'a> { - Args(Values<'a>), + Args(clap::parser::ValuesRef<'a, String>), Stdin(Lines>), } @@ -116,6 +116,7 @@ let matches = Command::new("addr2line") .version(env!("CARGO_PKG_VERSION")) .about("A fast addr2line Rust port") + .max_term_width(100) .args(&[ Arg::new("exe") .short('e') @@ -134,32 +135,42 @@ Arg::new("functions") .short('f') .long("functions") + .action(ArgAction::SetTrue) .help("Display function names as well as file and line number information."), - Arg::new("pretty").short('p').long("pretty-print").help( + Arg::new("pretty").short('p').long("pretty-print") + .action(ArgAction::SetTrue) + .help( "Make the output more human friendly: each location are printed on one line.", ), - Arg::new("inlines").short('i').long("inlines").help( + Arg::new("inlines").short('i').long("inlines") + .action(ArgAction::SetTrue) + .help( "If the address belongs to a function that was inlined, the source information for \ all enclosing scopes back to the first non-inlined function will also be printed.", ), - Arg::new("addresses").short('a').long("addresses").help( + Arg::new("addresses").short('a').long("addresses") + .action(ArgAction::SetTrue) + .help( "Display the address before the function name, file and line number information.", ), Arg::new("basenames") .short('s') .long("basenames") + .action(ArgAction::SetTrue) .help("Display only the base of each file name."), - Arg::new("demangle").short('C').long("demangle").help( + Arg::new("demangle").short('C').long("demangle") + .action(ArgAction::SetTrue) + .help( "Demangle function names. \ Specifying a specific demangling style (like GNU addr2line) is not supported. \ (TODO)" ), Arg::new("llvm") .long("llvm") + .action(ArgAction::SetTrue) .help("Display output in the same format as llvm-symbolizer."), Arg::new("addrs") - .takes_value(true) - .multiple_occurrences(true) + .action(ArgAction::Append) .help("Addresses to use instead of reading from stdin."), ]) .get_matches(); @@ -167,13 +178,13 @@ let arena_data = Arena::new(); let opts = Options { - do_functions: matches.is_present("functions"), - do_inlines: matches.is_present("inlines"), - pretty: matches.is_present("pretty"), - print_addrs: matches.is_present("addresses"), - basenames: matches.is_present("basenames"), - demangle: matches.is_present("demangle"), - llvm: matches.is_present("llvm"), + do_functions: matches.get_flag("functions"), + do_inlines: matches.get_flag("inlines"), + pretty: matches.get_flag("pretty"), + print_addrs: matches.get_flag("addresses"), + basenames: matches.get_flag("basenames"), + demangle: matches.get_flag("demangle"), + llvm: matches.get_flag("llvm"), exe: matches.get_one::("exe").unwrap(), sup: matches.get_one::("sup"), }; @@ -220,7 +231,7 @@ let stdin = std::io::stdin(); let addrs = matches - .values_of("addrs") + .get_many::("addrs") .map(Addrs::Args) .unwrap_or_else(|| Addrs::Stdin(stdin.lock().lines())); diff -Nru temporalio-1.3.0/vendor/addr2line/src/lib.rs temporalio-1.3.0/vendor/addr2line/src/lib.rs --- temporalio-1.3.0/vendor/addr2line/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/addr2line/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -183,9 +183,9 @@ /// when performing lookups for many addresses in the same executable. pub struct Context { sections: Arc>, - unit_ranges: Vec, - units: Vec>, - sup_units: Vec>, + unit_ranges: Box<[UnitRange]>, + units: Box<[ResUnit]>, + sup_units: Box<[SupUnit]>, } /// The type of `Context` that supports the `new` method. @@ -305,9 +305,9 @@ }; Ok(Context { sections, - unit_ranges, - units, - sup_units, + unit_ranges: unit_ranges.into_boxed_slice(), + units: units.into_boxed_slice(), + sup_units: sup_units.into_boxed_slice(), }) } @@ -531,7 +531,7 @@ /// Initialize all line data structures. This is used for benchmarks. #[doc(hidden)] pub fn parse_lines(&self) -> Result<(), Error> { - for unit in &self.units { + for unit in self.units.iter() { unit.parse_lines(&self.sections)?; } Ok(()) @@ -540,7 +540,7 @@ /// Initialize all function data structures. This is used for benchmarks. #[doc(hidden)] pub fn parse_functions(&self) -> Result<(), Error> { - for unit in &self.units { + for unit in self.units.iter() { unit.parse_functions(self).skip_all_loads()?; } Ok(()) @@ -549,7 +549,7 @@ /// Initialize all inlined function data structures. This is used for benchmarks. #[doc(hidden)] pub fn parse_inlined_functions(&self) -> Result<(), Error> { - for unit in &self.units { + for unit in self.units.iter() { unit.parse_inlined_functions(self).skip_all_loads()?; } Ok(()) diff -Nru temporalio-1.3.0/vendor/aho-corasick/.cargo-checksum.json temporalio-1.3.0/vendor/aho-corasick/.cargo-checksum.json --- temporalio-1.3.0/vendor/aho-corasick/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/aho-corasick/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.toml":"f4bc1885d8604ecad6f1de7c9861fc4518fb045af3dc618c9dc69b1ae181cf92","DESIGN.md":"d336d97838a16dbc2052658c8a361434829944e3d80373572d9e75bb04c24e78","LICENSE-MIT":"0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f","README.md":"6c36ae81ea9af36e6f964d7045d9719b427fe36f15db99b879feb5453734941e","UNLICENSE":"7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c","rustfmt.toml":"1ca600239a27401c4a43f363cf3f38183a212affc1f31bff3ae93234bbaec228","src/ahocorasick.rs":"ae1c8467caf0b3f4ca55cb9cadab416d30d8e7f103fa6adf4f72c0d102ca93b5","src/automaton.rs":"22258a3e118672413119f8f543a9b912cce954e63524575c0ebfdf9011f9c2dd","src/dfa.rs":"f3b46b1c7557ed1f18e7f15096c4f63a1cfa10214e7416d8f1f8fca14c4ccd4a","src/lib.rs":"2a92d5c5e930f2d306508802e8a929135e1f41c9f5f8deda8f7eb98947179dd2","src/macros.rs":"c6c52ae05b24433cffaca7b78b3645d797862c5d5feffddf9f54909095ed6e05","src/nfa/contiguous.rs":"c13ce913553cd7aafaa467fb0fec623eaff3adcf1d9eb04fa40f6e5acb64b1a4","src/nfa/mod.rs":"ee7b3109774d14bbad5239c16bb980dd6b8185ec136d94fbaf2f0dc27d5ffa15","src/nfa/noncontiguous.rs":"3fc777465842825dfca839fe354d88d77a6e94610481ad05497247ebccb0187a","src/packed/api.rs":"37a6580d3578d2244580ce2edc12105933c597f0c0b95d70e53a343e4d9f3582","src/packed/mod.rs":"b2c79103c1ed99b7d4261335909fff41a597a324325d62c3325afd656077bcb9","src/packed/pattern.rs":"dd74572178c20cf651ae272bf2c985fb0b3fadc5140cdcb1bff95a3fbcfe2ade","src/packed/rabinkarp.rs":"7bdabb91ec8a22a37a12edabf893270a04c57dea9d6714d507ba17f094285e15","src/packed/teddy/README.md":"b4b83fb5afafbbea6cb76fe70f49cc8ced888f682d98abe5ea5773e95d9ec2b0","src/packed/teddy/compile.rs":"6725dc38114953c0429652e2a4d31dcc33e54c0f5a6cee79f282c6a3d7b41683","src/packed/teddy/mod.rs":"0ce9fcba05a68301474fe30a71824650d05dcb8f04405fe9fc6b9326229f7db0","src/packed/teddy/runtime.rs":"2dc68cc08e24169eafcebbab35187d6aab38ef994267d2735b019b43bad0e6f2","src/packed/tests.rs":"f28307860843c36c9998657e3518c250ec2f4eac800cf912cad6d7aaa81bab7c","src/packed/vector.rs":"48909869f0ecf8832d338ed54c48a77d972bbcda57476d3b863078a18e59f709","src/tests.rs":"c68192ab97b6161d0d6ee96fefd80cc7d14e4486ddcd8d1f82b5c92432c24ed5","src/transducer.rs":"02daa33a5d6dac41dcfd67f51df7c0d4a91c5131c781fb54c4de3520c585a6e1","src/util/alphabet.rs":"6dc22658a38deddc0279892035b18870d4585069e35ba7c7e649a24509acfbcc","src/util/buffer.rs":"f9e37f662c46c6ecd734458dedbe76c3bb0e84a93b6b0117c0d4ad3042413891","src/util/byte_frequencies.rs":"2fb85b381c038c1e44ce94294531cdcd339dca48b1e61f41455666e802cbbc9e","src/util/debug.rs":"ab301ad59aa912529cb97233a54a05914dd3cb2ec43e6fec7334170b97ac5998","src/util/error.rs":"ecccd60e7406305023efcc6adcc826eeeb083ab8f7fbfe3d97469438cd4c4e5c","src/util/int.rs":"b735f3ae8d398849fe0ab1575d634df15803b21167945b894205fdde4a1a9e58","src/util/mod.rs":"7ab28d11323ecdbd982087f32eb8bceeee84f1a2583f3aae27039c36d58cf12c","src/util/prefilter.rs":"ef36a945b8f564771a031d98e0dbf85eea93d1fc66a1c60b7baa98fecf66bb69","src/util/primitives.rs":"f89f3fa1d8db4e37de9ca767c6d05e346404837cade6d063bba68972fafa610b","src/util/remapper.rs":"9f12d911583a325c11806eeceb46d0dfec863cfcfa241aed84d31af73da746e5","src/util/search.rs":"6af803e08b8b8c8a33db100623f1621b0d741616524ce40893d8316897f27ffe","src/util/special.rs":"7d2f9cb9dd9771f59816e829b2d96b1239996f32939ba98764e121696c52b146"},"package":"43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41"} \ No newline at end of file +{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.toml":"5423d481ecba20ac361e5e42a555f7f75a90d7343cf56111b493b9563b53c841","DESIGN.md":"d336d97838a16dbc2052658c8a361434829944e3d80373572d9e75bb04c24e78","LICENSE-MIT":"0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f","README.md":"6c36ae81ea9af36e6f964d7045d9719b427fe36f15db99b879feb5453734941e","UNLICENSE":"7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c","rustfmt.toml":"1ca600239a27401c4a43f363cf3f38183a212affc1f31bff3ae93234bbaec228","src/ahocorasick.rs":"c699c07df70be45c666e128509ad571a7649d2073e4ae16ac1efd6793c9c6890","src/automaton.rs":"22258a3e118672413119f8f543a9b912cce954e63524575c0ebfdf9011f9c2dd","src/dfa.rs":"b1e5e3a262dac5f563f390181f3de6601eaedd58c21fbf10477dbe69f684ecdc","src/lib.rs":"e8eea7336382c12638e3ba5d34d37f97813503c14cf646c6a88d1f4c2742c762","src/macros.rs":"c6c52ae05b24433cffaca7b78b3645d797862c5d5feffddf9f54909095ed6e05","src/nfa/contiguous.rs":"aeb6ee5fd80eea04decbc4b46aa27d1ab270b78d416a644da25b7934f009ee66","src/nfa/mod.rs":"ee7b3109774d14bbad5239c16bb980dd6b8185ec136d94fbaf2f0dc27d5ffa15","src/nfa/noncontiguous.rs":"5881a72393743505405a31d0cfc5727a607e08889b7f5948393757e8d02a9592","src/packed/api.rs":"37a6580d3578d2244580ce2edc12105933c597f0c0b95d70e53a343e4d9f3582","src/packed/mod.rs":"b2c79103c1ed99b7d4261335909fff41a597a324325d62c3325afd656077bcb9","src/packed/pattern.rs":"dd74572178c20cf651ae272bf2c985fb0b3fadc5140cdcb1bff95a3fbcfe2ade","src/packed/rabinkarp.rs":"7bdabb91ec8a22a37a12edabf893270a04c57dea9d6714d507ba17f094285e15","src/packed/teddy/README.md":"b4b83fb5afafbbea6cb76fe70f49cc8ced888f682d98abe5ea5773e95d9ec2b0","src/packed/teddy/compile.rs":"6725dc38114953c0429652e2a4d31dcc33e54c0f5a6cee79f282c6a3d7b41683","src/packed/teddy/mod.rs":"0ce9fcba05a68301474fe30a71824650d05dcb8f04405fe9fc6b9326229f7db0","src/packed/teddy/runtime.rs":"2dc68cc08e24169eafcebbab35187d6aab38ef994267d2735b019b43bad0e6f2","src/packed/tests.rs":"f28307860843c36c9998657e3518c250ec2f4eac800cf912cad6d7aaa81bab7c","src/packed/vector.rs":"48909869f0ecf8832d338ed54c48a77d972bbcda57476d3b863078a18e59f709","src/tests.rs":"c68192ab97b6161d0d6ee96fefd80cc7d14e4486ddcd8d1f82b5c92432c24ed5","src/transducer.rs":"02daa33a5d6dac41dcfd67f51df7c0d4a91c5131c781fb54c4de3520c585a6e1","src/util/alphabet.rs":"6dc22658a38deddc0279892035b18870d4585069e35ba7c7e649a24509acfbcc","src/util/buffer.rs":"f9e37f662c46c6ecd734458dedbe76c3bb0e84a93b6b0117c0d4ad3042413891","src/util/byte_frequencies.rs":"2fb85b381c038c1e44ce94294531cdcd339dca48b1e61f41455666e802cbbc9e","src/util/debug.rs":"ab301ad59aa912529cb97233a54a05914dd3cb2ec43e6fec7334170b97ac5998","src/util/error.rs":"ecccd60e7406305023efcc6adcc826eeeb083ab8f7fbfe3d97469438cd4c4e5c","src/util/int.rs":"b735f3ae8d398849fe0ab1575d634df15803b21167945b894205fdde4a1a9e58","src/util/mod.rs":"7ab28d11323ecdbd982087f32eb8bceeee84f1a2583f3aae27039c36d58cf12c","src/util/prefilter.rs":"ef36a945b8f564771a031d98e0dbf85eea93d1fc66a1c60b7baa98fecf66bb69","src/util/primitives.rs":"f89f3fa1d8db4e37de9ca767c6d05e346404837cade6d063bba68972fafa610b","src/util/remapper.rs":"9f12d911583a325c11806eeceb46d0dfec863cfcfa241aed84d31af73da746e5","src/util/search.rs":"6af803e08b8b8c8a33db100623f1621b0d741616524ce40893d8316897f27ffe","src/util/special.rs":"7d2f9cb9dd9771f59816e829b2d96b1239996f32939ba98764e121696c52b146"},"package":"6748e8def348ed4d14996fa801f4122cd763fff530258cdc03f64b25f89d3a5a"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/aho-corasick/Cargo.toml temporalio-1.3.0/vendor/aho-corasick/Cargo.toml --- temporalio-1.3.0/vendor/aho-corasick/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/aho-corasick/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ edition = "2021" rust-version = "1.60.0" name = "aho-corasick" -version = "1.0.2" +version = "1.0.4" authors = ["Andrew Gallant "] exclude = ["/aho-corasick-debug"] autotests = false @@ -36,6 +36,7 @@ rustdoc-args = [ "--cfg", "docsrs", + "--generate-link-to-definition", ] [profile.bench] diff -Nru temporalio-1.3.0/vendor/aho-corasick/src/ahocorasick.rs temporalio-1.3.0/vendor/aho-corasick/src/ahocorasick.rs --- temporalio-1.3.0/vendor/aho-corasick/src/ahocorasick.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/aho-corasick/src/ahocorasick.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1996,7 +1996,7 @@ /// .ascii_case_insensitive(true) /// .build(&["foobar", "bruce", "triskaidekaphobia", "springsteen"]) /// .unwrap(); - /// assert_eq!(9_128, ac.memory_usage()); + /// assert_eq!(10_879, ac.memory_usage()); /// /// let ac = AhoCorasick::builder() /// .kind(Some(AhoCorasickKind::ContiguousNFA)) @@ -2579,6 +2579,7 @@ /// More to the point, the memory usage increases superlinearly as this /// number increases. pub fn dense_depth(&mut self, depth: usize) -> &mut AhoCorasickBuilder { + self.nfa_noncontiguous.dense_depth(depth); self.nfa_contiguous.dense_depth(depth); self } diff -Nru temporalio-1.3.0/vendor/aho-corasick/src/dfa.rs temporalio-1.3.0/vendor/aho-corasick/src/dfa.rs --- temporalio-1.3.0/vendor/aho-corasick/src/dfa.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/aho-corasick/src/dfa.rs 2023-10-30 19:40:00.000000000 +0000 @@ -93,15 +93,9 @@ /// instead of the IDs being 0, 1, 2, 3, ..., they are 0*stride, 1*stride, /// 2*stride, 3*stride, ... trans: Vec, - /// The matches for every match state in this DFA. This is indexed by order - /// of match states in the DFA. Namely, as constructed, match states are - /// always laid out sequentially and contiguously in memory. Thus, after - /// converting a match state ID to a match state index, the indices are - /// all adjacent. - /// - /// More concretely, when a search enters a match state with id 'sid', then - /// the matching patterns are at 'matches[(sid >> stride2) - 2]'. The '- 2' - /// is to offset the first two states of a DFA: the dead and fail states. + /// The matches for every match state in this DFA. This is first indexed by + /// state index (so that's `sid >> stride2`) and then by order in which the + /// matches are meant to occur. matches: Vec>, /// The amount of heap memory used, in bytes, by the inner Vecs of /// 'matches'. @@ -174,13 +168,21 @@ /// Adds the given pattern IDs as matches to the given state and also /// records the added memory usage. - fn set_matches(&mut self, sid: StateID, pids: &[PatternID]) { + fn set_matches( + &mut self, + sid: StateID, + pids: impl Iterator, + ) { use core::mem::size_of; - assert!(!pids.is_empty(), "match state must have non-empty pids"); let index = (sid.as_usize() >> self.stride2).checked_sub(2).unwrap(); - self.matches[index].extend_from_slice(pids); - self.matches_memory_usage += size_of::() * pids.len(); + let mut at_least_one = false; + for pid in pids { + self.matches[index].push(pid); + self.matches_memory_usage += PatternID::SIZE; + at_least_one = true; + } + assert!(at_least_one, "match state must have non-empty pids"); } } @@ -524,6 +526,18 @@ dfa.byte_classes.alphabet_len(), dfa.byte_classes.stride(), ); + // The vectors can grow ~twice as big during construction because a + // Vec amortizes growth. But here, let's shrink things back down to + // what we actually need since we're never going to add more to it. + dfa.trans.shrink_to_fit(); + dfa.pattern_lens.shrink_to_fit(); + dfa.matches.shrink_to_fit(); + // TODO: We might also want to shrink each Vec inside of `dfa.matches`, + // or even better, convert it to one contiguous allocation. But I think + // I went with nested allocs for good reason (can't remember), so this + // may be tricky to do. I decided not to shrink them here because it + // might require a fair bit of work to do. It's unclear whether it's + // worth it. Ok(dfa) } @@ -543,11 +557,12 @@ }; for (oldsid, state) in nnfa.states().iter().with_state_ids() { let newsid = old2new(oldsid); - if !state.matches.is_empty() { - dfa.set_matches(newsid, &state.matches); + if state.is_match() { + dfa.set_matches(newsid, nnfa.iter_matches(oldsid)); } sparse_iter( - state, + nnfa, + oldsid, &dfa.byte_classes, |byte, class, mut oldnextsid| { if oldnextsid == noncontiguous::NFA::FAIL { @@ -556,7 +571,7 @@ } else { oldnextsid = nnfa.next_state( Anchored::No, - state.fail, + state.fail(), byte, ); } @@ -620,11 +635,12 @@ remap_anchored[oldsid] = newsid; is_anchored[newsid.as_usize() >> stride2] = true; } - if !state.matches.is_empty() { - dfa.set_matches(newsid, &state.matches); + if state.is_match() { + dfa.set_matches(newsid, nnfa.iter_matches(oldsid)); } sparse_iter( - state, + nnfa, + oldsid, &dfa.byte_classes, |_, class, oldnextsid| { let class = usize::from(class); @@ -645,18 +661,19 @@ remap_unanchored[oldsid] = unewsid; remap_anchored[oldsid] = anewsid; is_anchored[anewsid.as_usize() >> stride2] = true; - if !state.matches.is_empty() { - dfa.set_matches(unewsid, &state.matches); - dfa.set_matches(anewsid, &state.matches); + if state.is_match() { + dfa.set_matches(unewsid, nnfa.iter_matches(oldsid)); + dfa.set_matches(anewsid, nnfa.iter_matches(oldsid)); } sparse_iter( - state, + nnfa, + oldsid, &dfa.byte_classes, |byte, class, oldnextsid| { let class = usize::from(class); if oldnextsid == noncontiguous::NFA::FAIL { dfa.trans[unewsid.as_usize() + class] = nnfa - .next_state(Anchored::No, state.fail, byte); + .next_state(Anchored::No, state.fail(), byte); } else { dfa.trans[unewsid.as_usize() + class] = oldnextsid; dfa.trans[anewsid.as_usize() + class] = oldnextsid; @@ -763,14 +780,15 @@ /// `byte_classes.alphabet_len()` times, once for every possible class in /// ascending order. fn sparse_iter( - state: &noncontiguous::State, + nnfa: &noncontiguous::NFA, + oldsid: StateID, classes: &ByteClasses, mut f: F, ) { let mut prev_class = None; let mut byte = 0usize; - for &(b, id) in state.trans.iter() { - while byte < usize::from(b) { + for t in nnfa.iter_trans(oldsid) { + while byte < usize::from(t.byte()) { let rep = byte.as_u8(); let class = classes.get(rep); byte += 1; @@ -779,11 +797,11 @@ prev_class = Some(class); } } - let rep = b; + let rep = t.byte(); let class = classes.get(rep); byte += 1; if prev_class != Some(class) { - f(rep, class, id); + f(rep, class, t.next()); prev_class = Some(class); } } diff -Nru temporalio-1.3.0/vendor/aho-corasick/src/lib.rs temporalio-1.3.0/vendor/aho-corasick/src/lib.rs --- temporalio-1.3.0/vendor/aho-corasick/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/aho-corasick/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -224,6 +224,7 @@ diagnostics. This feature is disabled by default. */ +#![allow(warnings)] #![no_std] #![deny(missing_docs)] #![deny(rustdoc::broken_intra_doc_links)] diff -Nru temporalio-1.3.0/vendor/aho-corasick/src/nfa/contiguous.rs temporalio-1.3.0/vendor/aho-corasick/src/nfa/contiguous.rs --- temporalio-1.3.0/vendor/aho-corasick/src/nfa/contiguous.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/aho-corasick/src/nfa/contiguous.rs 2023-10-30 19:40:00.000000000 +0000 @@ -684,6 +684,8 @@ /// dense format. Otherwise, the choice between dense and sparse will be /// automatically chosen based on the old state. fn write( + nnfa: &noncontiguous::NFA, + oldsid: StateID, old: &noncontiguous::State, classes: &ByteClasses, dst: &mut Vec, @@ -692,45 +694,46 @@ let sid = StateID::new(dst.len()).map_err(|e| { BuildError::state_id_overflow(StateID::MAX.as_u64(), e.attempted()) })?; + let old_len = nnfa.iter_trans(oldsid).count(); // For states with a lot of transitions, we might as well just make // them dense. These kinds of hot states tend to be very rare, so we're // okay with it. This also gives us more sentinels in the state's // 'kind', which lets us create different state kinds to save on // space. - let kind = if force_dense - || old.trans.len() > State::MAX_SPARSE_TRANSITIONS - { + let kind = if force_dense || old_len > State::MAX_SPARSE_TRANSITIONS { State::KIND_DENSE - } else if old.trans.len() == 1 && old.matches.is_empty() { + } else if old_len == 1 && !old.is_match() { State::KIND_ONE } else { // For a sparse state, the kind is just the number of transitions. - u32::try_from(old.trans.len()).unwrap() + u32::try_from(old_len).unwrap() }; if kind == State::KIND_DENSE { dst.push(kind); - dst.push(old.fail.as_u32()); - State::write_dense_trans(old, classes, dst)?; + dst.push(old.fail().as_u32()); + State::write_dense_trans(nnfa, oldsid, classes, dst)?; } else if kind == State::KIND_ONE { - let class = u32::from(classes.get(old.trans[0].0)); + let t = nnfa.iter_trans(oldsid).next().unwrap(); + let class = u32::from(classes.get(t.byte())); dst.push(kind | (class << 8)); - dst.push(old.fail.as_u32()); - dst.push(old.trans[0].1.as_u32()); + dst.push(old.fail().as_u32()); + dst.push(t.next().as_u32()); } else { dst.push(kind); - dst.push(old.fail.as_u32()); - State::write_sparse_trans(old, classes, dst)?; + dst.push(old.fail().as_u32()); + State::write_sparse_trans(nnfa, oldsid, classes, dst)?; } // Now finally write the number of matches and the matches themselves. - if !old.matches.is_empty() { - if old.matches.len() == 1 { - let pid = old.matches[0].as_u32(); + if old.is_match() { + let matches_len = nnfa.iter_matches(oldsid).count(); + if matches_len == 1 { + let pid = nnfa.iter_matches(oldsid).next().unwrap().as_u32(); assert_eq!(0, pid & (1 << 31)); dst.push((1 << 31) | pid); } else { - assert_eq!(0, old.matches.len() & (1 << 31)); - dst.push(old.matches.len().as_u32()); - dst.extend(old.matches.iter().map(|pid| pid.as_u32())); + assert_eq!(0, matches_len & (1 << 31)); + dst.push(matches_len.as_u32()); + dst.extend(nnfa.iter_matches(oldsid).map(|pid| pid.as_u32())); } } Ok(sid) @@ -744,13 +747,14 @@ /// This returns an error if `dst` became so big that `StateID`s can no /// longer be created for new states. fn write_sparse_trans( - old: &noncontiguous::State, + nnfa: &noncontiguous::NFA, + oldsid: StateID, classes: &ByteClasses, dst: &mut Vec, ) -> Result<(), BuildError> { let (mut chunk, mut len) = ([0; 4], 0); - for &(byte, _) in old.trans.iter() { - chunk[len] = classes.get(byte); + for t in nnfa.iter_trans(oldsid) { + chunk[len] = classes.get(t.byte()); len += 1; if len == 4 { dst.push(u32::from_ne_bytes(chunk)); @@ -773,8 +777,8 @@ } dst.push(u32::from_ne_bytes(chunk)); } - for &(_, next) in old.trans.iter() { - dst.push(next.as_u32()); + for t in nnfa.iter_trans(oldsid) { + dst.push(t.next().as_u32()); } Ok(()) } @@ -787,7 +791,8 @@ /// This returns an error if `dst` became so big that `StateID`s can no /// longer be created for new states. fn write_dense_trans( - old: &noncontiguous::State, + nnfa: &noncontiguous::NFA, + oldsid: StateID, classes: &ByteClasses, dst: &mut Vec, ) -> Result<(), BuildError> { @@ -807,8 +812,9 @@ .take(classes.alphabet_len()), ); assert!(start < dst.len(), "equivalence classes are never empty"); - for &(byte, next) in old.trans.iter() { - dst[start + usize::from(classes.get(byte))] = next.as_u32(); + for t in nnfa.iter_trans(oldsid) { + dst[start + usize::from(classes.get(t.byte()))] = + t.next().as_u32(); } Ok(()) } @@ -960,8 +966,10 @@ index_to_state_id[oldsid] = NFA::FAIL; continue; } - let force_dense = state.depth.as_usize() < self.dense_depth; + let force_dense = state.depth().as_usize() < self.dense_depth; let newsid = State::write( + nnfa, + oldsid, state, &nfa.byte_classes, &mut nfa.repr, @@ -992,6 +1000,11 @@ nfa.memory_usage(), nfa.byte_classes.alphabet_len(), ); + // The vectors can grow ~twice as big during construction because a + // Vec amortizes growth. But here, let's shrink things back down to + // what we actually need since we're never going to add more to it. + nfa.repr.shrink_to_fit(); + nfa.pattern_lens.shrink_to_fit(); Ok(nfa) } diff -Nru temporalio-1.3.0/vendor/aho-corasick/src/nfa/noncontiguous.rs temporalio-1.3.0/vendor/aho-corasick/src/nfa/noncontiguous.rs --- temporalio-1.3.0/vendor/aho-corasick/src/nfa/noncontiguous.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/aho-corasick/src/nfa/noncontiguous.rs 2023-10-30 19:40:00.000000000 +0000 @@ -100,6 +100,38 @@ /// The third state (index 2) is generally intended to be the starting or /// "root" state. states: Vec, + /// Transitions stored in a sparse representation via a linked list. + /// + /// Each transition contains three pieces of information: the byte it + /// is defined for, the state it transitions to and a link to the next + /// transition in the same state (or `StateID::ZERO` if it is the last + /// transition). + /// + /// The first transition for each state is determined by `State::sparse`. + /// + /// Note that this contains a complete set of all transitions in this NFA, + /// including states that have a dense representation for transitions. + /// (Adding dense transitions for a state doesn't remove its sparse + /// transitions, since deleting transitions from this particular sparse + /// representation would be fairly expensive.) + sparse: Vec, + /// Transitions stored in a dense representation. + /// + /// A state has a row in this table if and only if `State::dense` is + /// not equal to `StateID::ZERO`. When not zero, there are precisely + /// `NFA::byte_classes::alphabet_len()` entries beginning at `State::dense` + /// in this table. + /// + /// Generally a very small minority of states have a dense representation + /// since it uses so much memory. + dense: Vec, + /// Matches stored in linked list for each state. + /// + /// Like sparse transitions, each match has a link to the next match in the + /// state. + /// + /// The first match for each state is determined by `State::matches`. + matches: Vec, /// The length, in bytes, of each pattern in this NFA. This slice is /// indexed by `PatternID`. /// @@ -140,8 +172,6 @@ /// states have been added, the states are shuffled such that the above /// predicates hold. special: Special, - /// The number of bytes of heap used by this sparse NFA. - memory_usage: usize, } impl NFA { @@ -229,12 +259,293 @@ /// Re-maps all state IDs in this NFA according to the `map` function /// given. pub(crate) fn remap(&mut self, map: impl Fn(StateID) -> StateID) { + let alphabet_len = self.byte_classes.alphabet_len(); for state in self.states.iter_mut() { state.fail = map(state.fail); - for (_, ref mut sid) in state.trans.iter_mut() { - *sid = map(*sid); + let mut link = state.sparse; + while link != StateID::ZERO { + let t = &mut self.sparse[link]; + t.next = map(t.next); + link = t.link; + } + if state.dense != StateID::ZERO { + let start = state.dense.as_usize(); + for next in self.dense[start..][..alphabet_len].iter_mut() { + *next = map(*next); + } + } + } + } + + /// Iterate over all of the transitions for the given state ID. + pub(crate) fn iter_trans( + &self, + sid: StateID, + ) -> impl Iterator + '_ { + let mut link = self.states[sid].sparse; + core::iter::from_fn(move || { + if link == StateID::ZERO { + return None; + } + let t = self.sparse[link]; + link = t.link; + Some(t) + }) + } + + /// Iterate over all of the matches for the given state ID. + pub(crate) fn iter_matches( + &self, + sid: StateID, + ) -> impl Iterator + '_ { + let mut link = self.states[sid].matches; + core::iter::from_fn(move || { + if link == StateID::ZERO { + return None; + } + let m = self.matches[link]; + link = m.link; + Some(m.pid) + }) + } + + /// Return the transition following the one given. If the one given is the + /// last transition for the given state, then return `None`. + /// + /// If no previous transition is given, then this returns the first + /// transition in the state, if one exists. + /// + /// This is useful for manually iterating over the transitions in a single + /// state without borrowing the NFA. This permits mutating other parts of + /// the NFA during iteration. + fn next_transition( + &self, + sid: StateID, + prev: Option, + ) -> Option { + let link = prev.map_or(self.states[sid].sparse, |t| t.link); + if link == StateID::ZERO { + None + } else { + Some(self.sparse[link]) + } + } + + /// Follow the transition for the given byte in the given state. If no such + /// transition exists, then the FAIL state ID is returned. + #[inline(always)] + fn follow_transition(&self, sid: StateID, byte: u8) -> StateID { + let s = &self.states[sid]; + // This is a special case that targets starting states and states + // near a start state. Namely, after the initial trie is constructed, + // we look for states close to the start state to convert to a dense + // representation for their transitions. This winds up using a lot more + // memory per state in exchange for faster transition lookups. But + // since we only do this for a small number of states (by default), the + // memory usage is usually minimal. + // + // This has *massive* benefit when executing searches because the + // unanchored starting state is by far the hottest state and is + // frequently visited. Moreover, the 'for' loop below that works + // decently on an actually sparse state is disastrous on a state that + // is nearly or completely dense. + if s.dense == StateID::ZERO { + self.follow_transition_sparse(sid, byte) + } else { + let class = usize::from(self.byte_classes.get(byte)); + self.dense[s.dense.as_usize() + class] + } + } + + /// Like `follow_transition`, but always uses the sparse representation. + #[inline(always)] + fn follow_transition_sparse(&self, sid: StateID, byte: u8) -> StateID { + for t in self.iter_trans(sid) { + if byte <= t.byte { + if byte == t.byte { + return t.next; + } + break; } } + NFA::FAIL + } + + /// Set the transition for the given byte to the state ID given. + /// + /// Note that one should not set transitions to the FAIL state. It is not + /// technically incorrect, but it wastes space. If a transition is not + /// defined, then it is automatically assumed to lead to the FAIL state. + fn add_transition( + &mut self, + prev: StateID, + byte: u8, + next: StateID, + ) -> Result<(), BuildError> { + if self.states[prev].dense != StateID::ZERO { + let dense = self.states[prev].dense; + let class = usize::from(self.byte_classes.get(byte)); + self.dense[dense.as_usize() + class] = next; + } + + let head = self.states[prev].sparse; + if head == StateID::ZERO || byte < self.sparse[head].byte { + let new_link = self.alloc_transition()?; + self.sparse[new_link] = Transition { byte, next, link: head }; + self.states[prev].sparse = new_link; + return Ok(()); + } else if byte == self.sparse[head].byte { + self.sparse[head].next = next; + return Ok(()); + } + + // We handled the only cases where the beginning of the transition + // chain needs to change. At this point, we now know that there is + // at least one entry in the transition chain and the byte for that + // transition is less than the byte for the transition we're adding. + let (mut link_prev, mut link_next) = (head, self.sparse[head].link); + while link_next != StateID::ZERO && byte > self.sparse[link_next].byte + { + link_prev = link_next; + link_next = self.sparse[link_next].link; + } + if link_next == StateID::ZERO || byte < self.sparse[link_next].byte { + let link = self.alloc_transition()?; + self.sparse[link] = Transition { byte, next, link: link_next }; + self.sparse[link_prev].link = link; + } else { + assert_eq!(byte, self.sparse[link_next].byte); + self.sparse[link_next].next = next; + } + Ok(()) + } + + /// Add a match for the given pattern ID to the state for the given ID. + fn add_match( + &mut self, + sid: StateID, + pid: PatternID, + ) -> Result<(), BuildError> { + let head = self.states[sid].matches; + let mut link = head; + while self.matches[link].link != StateID::ZERO { + link = self.matches[link].link; + } + let new_match_link = + StateID::new(self.matches.len()).map_err(|e| { + BuildError::state_id_overflow( + StateID::MAX.as_u64(), + e.attempted(), + ) + })?; + self.matches.push(Match { pid, link: StateID::ZERO }); + if link == StateID::ZERO { + self.states[sid].matches = new_match_link; + } else { + self.matches[link].link = new_match_link; + } + Ok(()) + } + + /// Copy matches from the `src` state to the `dst` state. This is useful + /// when a match state can be reached via a failure transition. In which + /// case, you'll want to copy the matches (if any) from the state reached + /// by the failure transition to the original state you were at. + fn copy_matches( + &mut self, + src: StateID, + dst: StateID, + ) -> Result<(), BuildError> { + let head_dst = self.states[dst].matches; + let mut link_dst = head_dst; + while self.matches[link_dst].link != StateID::ZERO { + link_dst = self.matches[link_dst].link; + } + let mut link_src = self.states[src].matches; + while link_src != StateID::ZERO { + let new_match_link = + StateID::new(self.matches.len()).map_err(|e| { + BuildError::state_id_overflow( + StateID::MAX.as_u64(), + e.attempted(), + ) + })?; + self.matches.push(Match { + pid: self.matches[link_src].pid, + link: StateID::ZERO, + }); + if link_dst == StateID::ZERO { + self.states[dst].matches = new_match_link; + } else { + self.matches[link_dst].link = new_match_link; + } + + link_dst = new_match_link; + link_src = self.matches[link_src].link; + } + Ok(()) + } + + /// Create a new entry in `NFA::trans`, if there's room, and return that + /// entry's ID. If there's no room, then an error is returned. + fn alloc_transition(&mut self) -> Result { + let id = StateID::new(self.sparse.len()).map_err(|e| { + BuildError::state_id_overflow(StateID::MAX.as_u64(), e.attempted()) + })?; + self.sparse.push(Transition::default()); + Ok(id) + } + + /// Create a new entry in `NFA::matches`, if there's room, and return that + /// entry's ID. If there's no room, then an error is returned. + fn alloc_match(&mut self) -> Result { + let id = StateID::new(self.matches.len()).map_err(|e| { + BuildError::state_id_overflow(StateID::MAX.as_u64(), e.attempted()) + })?; + self.matches.push(Match::default()); + Ok(id) + } + + /// Create a new set of `N` transitions in this NFA's dense transition + /// table. The ID return corresponds to the index at which the `N` + /// transitions begin. So `id+0` is the first transition and `id+(N-1)` is + /// the last. + /// + /// `N` is determined via `NFA::byte_classes::alphabet_len`. + fn alloc_dense_state(&mut self) -> Result { + let id = StateID::new(self.dense.len()).map_err(|e| { + BuildError::state_id_overflow(StateID::MAX.as_u64(), e.attempted()) + })?; + // We use FAIL because it's the correct default. If a state doesn't + // have a transition defined for every possible byte value, then the + // transition function should return NFA::FAIL. + self.dense.extend( + core::iter::repeat(NFA::FAIL) + .take(self.byte_classes.alphabet_len()), + ); + Ok(id) + } + + /// Allocate and add a fresh state to the underlying NFA and return its + /// ID (guaranteed to be one more than the ID of the previously allocated + /// state). If the ID would overflow `StateID`, then this returns an error. + fn alloc_state(&mut self, depth: usize) -> Result { + // This is OK because we error when building the trie if we see a + // pattern whose length cannot fit into a 'SmallIndex', and the longest + // possible depth corresponds to the length of the longest pattern. + let depth = SmallIndex::new(depth) + .expect("patterns longer than SmallIndex::MAX are not allowed"); + let id = StateID::new(self.states.len()).map_err(|e| { + BuildError::state_id_overflow(StateID::MAX.as_u64(), e.attempted()) + })?; + self.states.push(State { + sparse: StateID::ZERO, + dense: StateID::ZERO, + matches: StateID::ZERO, + fail: self.special.start_unanchored_id, + depth, + }); + Ok(id) } } @@ -263,8 +574,7 @@ // 2. All state.fail values point to a state closer to the start state. // 3. The start state has no transitions to the FAIL state. loop { - let state = &self.states[sid]; - let next = state.next_state(byte); + let next = self.follow_transition(sid, byte); if next != NFA::FAIL { return next; } @@ -275,7 +585,7 @@ if anchored.is_anchored() { return NFA::DEAD; } - sid = state.fail; + sid = self.states[sid].fail(); } } @@ -331,17 +641,23 @@ #[inline(always)] fn match_len(&self, sid: StateID) -> usize { - self.states[sid].matches.len() + self.iter_matches(sid).count() } #[inline(always)] fn match_pattern(&self, sid: StateID, index: usize) -> PatternID { - self.states[sid].matches[index] + self.iter_matches(sid).nth(index).unwrap() } #[inline(always)] fn memory_usage(&self) -> usize { - self.memory_usage + use core::mem::size_of; + + self.states.len() * core::mem::size_of::() + + self.sparse.len() * core::mem::size_of::() + + self.matches.len() * core::mem::size_of::() + + self.dense.len() * StateID::SIZE + + self.pattern_lens.len() * SmallIndex::SIZE + self.prefilter.as_ref().map_or(0, |p| p.memory_usage()) } @@ -351,27 +667,40 @@ } } +// BREADCRUMBS: Add `dense` field below that is non-zero when the state's +// transitions are defined in a dense table. + /// A representation of a sparse NFA state for an Aho-Corasick automaton. /// /// It contains the transitions to the next state, a failure transition for /// cases where there exists no other transition for the current input byte /// and the matches implied by visiting this state (if any). -#[derive(Clone)] +#[derive(Clone, Debug)] pub(crate) struct State { - /// The set of defined transitions for this state sorted by `u8`. In an - /// unanchored search, if a byte is not in this set of transitions, then - /// it should transition to `fail`. In an anchored search, it should - /// transition to the special DEAD state. - pub(crate) trans: Vec<(u8, StateID)>, - /// The patterns that match once this state is entered. Note that order - /// is important in the leftmost case. For example, if one adds 'foo' and - /// 'foo' (duplicate patterns are not disallowed), then in a leftmost-first - /// search, only the first 'foo' will ever match. - pub(crate) matches: Vec, + /// A pointer to `NFA::trans` corresponding to the head of a linked list + /// containing all of the transitions for this state. + /// + /// This is `StateID::ZERO` if and only if this state has zero transitions. + sparse: StateID, + /// A pointer to a row of `N` transitions in `NFA::dense`. These + /// transitions correspond precisely to what is obtained by traversing + /// `sparse`, but permits constant time lookup. + /// + /// When this is zero (which is true for most states in the default + /// configuration), then this state has no dense representation. + /// + /// Note that `N` is equal to `NFA::byte_classes::alphabet_len()`. This is + /// typically much less than 256 (the maximum value). + dense: StateID, + /// A pointer to `NFA::matches` corresponding to the head of a linked list + /// containing all of the matches for this state. + /// + /// This is `StateID::ZERO` if and only if this state is not a match state. + matches: StateID, /// The state that should be transitioned to if the current byte in the /// haystack does not have a corresponding transition defined in this /// state. - pub(crate) fail: StateID, + fail: StateID, /// The depth of this state. Specifically, this is the distance from this /// state to the starting state. (For the special sentinel states DEAD and /// FAIL, their depth is always 0.) The depth of a starting state is 0. @@ -384,96 +713,92 @@ /// a sparse representation for all states unconditionally.) In any case, /// this is really the only convenient place to compute and store this /// information, which we need when building the contiguous NFA. - pub(crate) depth: SmallIndex, + depth: SmallIndex, } impl State { - /// Return the heap memory used by this state. Note that if `State` is - /// itself on the heap, then callers need to call this in addition to - /// `size_of::()` to get the full heap memory used. - fn memory_usage(&self) -> usize { - use core::mem::size_of; + /// Return true if and only if this state is a match state. + pub(crate) fn is_match(&self) -> bool { + self.matches != StateID::ZERO + } - (self.trans.len() * size_of::<(u8, StateID)>()) - + (self.matches.len() * size_of::()) + /// Returns the failure transition for this state. + pub(crate) fn fail(&self) -> StateID { + self.fail } - /// Return true if and only if this state is a match state. - fn is_match(&self) -> bool { - !self.matches.is_empty() + /// Returns the depth of this state. That is, the number of transitions + /// this state is from the start state of the NFA. + pub(crate) fn depth(&self) -> SmallIndex { + self.depth } +} - /// Return the next state by following the transition for the given byte. - /// If no transition for the given byte is defined, then the FAIL state ID - /// is returned. - #[inline(always)] - fn next_state(&self, byte: u8) -> StateID { - // This is a special case that targets the unanchored starting state. - // By construction, the unanchored starting state is actually a dense - // state, because every possible transition is defined on it. Any - // transitions that weren't added as part of initial trie construction - // get explicitly added as a self-transition back to itself. Thus, we - // can treat it as if it were dense and do a constant time lookup. - // - // This has *massive* benefit when executing searches because the - // unanchored starting state is by far the hottest state and is - // frequently visited. Moreover, the 'for' loop below that works - // decently on an actually sparse state is disastrous on a state that - // is nearly or completely dense. - // - // This optimization also works in general, including for non-starting - // states that happen to have every transition defined. Namely, it - // is impossible for 'self.trans' to have duplicate transitions (by - // construction) and transitions are always in sorted ascending order. - // So if a state has 256 transitions, it is, by construction, dense and - // amenable to constant time indexing. - if self.trans.len() == 256 { - self.trans[usize::from(byte)].1 - } else { - for &(b, id) in self.trans.iter() { - if b == byte { - return id; - } - } - NFA::FAIL - } +/// A single transition in a non-contiguous NFA. +#[derive(Clone, Copy, Default)] +#[repr(packed)] +pub(crate) struct Transition { + byte: u8, + next: StateID, + link: StateID, +} + +impl Transition { + /// Return the byte for which this transition is defined. + pub(crate) fn byte(&self) -> u8 { + self.byte } - /// Set the transition for the given byte to the state ID given. - /// - /// Note that one should not set transitions to the FAIL state. It is not - /// technically incorrect, but it wastes space. If a transition is not - /// defined, then it is automatically assumed to lead to the FAIL state. - fn set_next_state(&mut self, byte: u8, next: StateID) { - match self.trans.binary_search_by_key(&byte, |&(b, _)| b) { - Ok(i) => self.trans[i] = (byte, next), - Err(i) => self.trans.insert(i, (byte, next)), - } + /// Return the ID of the state that this transition points to. + pub(crate) fn next(&self) -> StateID { + self.next + } + + /// Return the ID of the next transition. + fn link(&self) -> StateID { + self.link } } -impl core::fmt::Debug for State { +impl core::fmt::Debug for Transition { fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { - use crate::{automaton::sparse_transitions, util::debug::DebugByte}; + write!( + f, + "Transition(byte: {:X?}, next: {:?}, link: {:?})", + self.byte, + self.next().as_usize(), + self.link().as_usize() + ) + } +} - let it = sparse_transitions(self.trans.iter().copied()).enumerate(); - for (i, (start, end, sid)) in it { - if i > 0 { - write!(f, ", ")?; - } - if start == end { - write!(f, "{:?} => {:?}", DebugByte(start), sid.as_usize())?; - } else { - write!( - f, - "{:?}-{:?} => {:?}", - DebugByte(start), - DebugByte(end), - sid.as_usize() - )?; - } - } - Ok(()) +/// A single match in a non-contiguous NFA. +#[derive(Clone, Copy, Default)] +struct Match { + pid: PatternID, + link: StateID, +} + +impl Match { + /// Return the pattern ID for this match. + pub(crate) fn pattern(&self) -> PatternID { + self.pid + } + + /// Return the ID of the next match. + fn link(&self) -> StateID { + self.link + } +} + +impl core::fmt::Debug for Match { + fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + write!( + f, + "Match(pid: {:?}, link: {:?})", + self.pattern().as_usize(), + self.link().as_usize() + ) } } @@ -487,6 +812,7 @@ match_kind: MatchKind, prefilter: bool, ascii_case_insensitive: bool, + dense_depth: usize, } impl Default for Builder { @@ -495,6 +821,7 @@ match_kind: MatchKind::default(), prefilter: true, ascii_case_insensitive: false, + dense_depth: 3, } } } @@ -544,6 +871,17 @@ self } + /// Set the limit on how many states use a dense representation for their + /// transitions. Other states will generally use a sparse representation. + /// + /// See + /// [`AhoCorasickBuilder::dense_depth`](crate::AhoCorasickBuilder::dense_depth) + /// for more documentation and examples. + pub fn dense_depth(&mut self, depth: usize) -> &mut Builder { + self.dense_depth = depth; + self + } + /// Enable heuristic prefilter optimizations. /// /// See @@ -577,13 +915,15 @@ nfa: NFA { match_kind: builder.match_kind, states: vec![], + sparse: vec![], + dense: vec![], + matches: vec![], pattern_lens: vec![], prefilter: None, byte_classes: ByteClasses::singletons(), min_pattern_len: usize::MAX, max_pattern_len: 0, special: Special::zero(), - memory_usage: 0, }, byteset: ByteClassSet::empty(), }) @@ -594,27 +934,41 @@ I: IntoIterator, P: AsRef<[u8]>, { + // Add dummy transition/match links, so that no valid link will point + // to another link at index 0. + self.nfa.sparse.push(Transition::default()); + self.nfa.matches.push(Match::default()); + // Add a dummy dense transition so that no states can have dense==0 + // represent a valid pointer to dense transitions. This permits + // dense==0 to be a sentinel indicating "no dense transitions." + self.nfa.dense.push(NFA::DEAD); // the dead state, only used for leftmost and fixed to id==0 - self.add_state(0)?; + self.nfa.alloc_state(0)?; // the fail state, which is never entered and fixed to id==1 - self.add_state(0)?; + self.nfa.alloc_state(0)?; // unanchored start state, initially fixed to id==2 but later shuffled // to appear after all non-start match states. - self.nfa.special.start_unanchored_id = self.add_state(0)?; + self.nfa.special.start_unanchored_id = self.nfa.alloc_state(0)?; // anchored start state, initially fixed to id==3 but later shuffled // to appear after unanchored start state. - self.nfa.special.start_anchored_id = self.add_state(0)?; + self.nfa.special.start_anchored_id = self.nfa.alloc_state(0)?; // Initialize the unanchored starting state in order to make it dense, // and thus make transition lookups on this state faster. self.init_unanchored_start_state(); // Build the base trie from the given patterns. self.build_trie(patterns)?; + self.nfa.states.shrink_to_fit(); + // Turn our set of bytes into equivalent classes. This NFA + // implementation uses byte classes only for states that use a dense + // representation of transitions. (And that's why this comes before + // `self.densify()`, as the byte classes need to be set first.) + self.nfa.byte_classes = self.byteset.byte_classes(); // Add transitions (and maybe matches) to the anchored starting state. // The anchored starting state is used for anchored searches. The only // mechanical difference between it and the unanchored start state is // that missing transitions map to the DEAD state instead of the FAIL // state. - self.set_anchored_start_state(); + self.set_anchored_start_state()?; // Rewrite transitions to the FAIL state on the unanchored start state // as self-transitions. This keeps the start state active at all times. self.add_unanchored_start_state_loop(); @@ -622,11 +976,17 @@ // the DEAD state can never be escaped. It MUST be used as a sentinel // in any correct search. self.add_dead_state_loop(); + // Make some (possibly zero) states use a dense representation for + // transitions. It's important to do this right after the states + // and non-failure transitions are solidified. That way, subsequent + // accesses (particularly `fill_failure_transitions`) will benefit from + // the faster transition lookup in densified states. + self.densify()?; // The meat of the Aho-Corasick algorithm: compute and write failure // transitions. i.e., the state to move to when a transition isn't // defined in the current state. These are epsilon transitions and thus // make this formulation an NFA. - self.fill_failure_transitions(); + self.fill_failure_transitions()?; // Handle a special case under leftmost semantics when at least one // of the patterns is the empty string. self.close_start_state_loop_for_leftmost(); @@ -634,12 +994,7 @@ // NON-MATCH, ... This permits us to very quickly query the type of // the state we're currently in during a search. self.shuffle(); - // Turn our set of bytes into equivalent classes. This NFA - // implementation doesn't use byte classes directly, but any - // Aho-Corasick searcher built from this one might. - self.nfa.byte_classes = self.byteset.byte_classes(); self.nfa.prefilter = self.prefilter.build(); - self.calculate_memory_usage(); // Store the maximum ID of all *relevant* special states. Start states // are only relevant when we have a prefilter, otherwise, there is zero // reason to care about whether a state is a start state or not during @@ -657,6 +1012,10 @@ } else { self.nfa.special.max_match_id }; + self.nfa.sparse.shrink_to_fit(); + self.nfa.dense.shrink_to_fit(); + self.nfa.matches.shrink_to_fit(); + self.nfa.pattern_lens.shrink_to_fit(); Ok(self.nfa) } @@ -723,10 +1082,9 @@ continue 'PATTERNS; } - // Add this byte to our equivalence classes. We don't use these - // for NFA construction. These are instead used only if we're - // building a DFA. They would technically be useful for the - // NFA, but it would require a second pass over the patterns. + // Add this byte to our equivalence classes. These don't + // get used while building the trie, but other Aho-Corasick + // implementations may use them. self.byteset.set_range(b, b); if self.builder.ascii_case_insensitive { let b = opposite_ascii_case(b); @@ -740,22 +1098,22 @@ // use a dense representation that uses more memory but is // faster. Other states use a sparse representation that uses // less memory but is slower. - let next = self.nfa.states[prev].next_state(b); + let next = self.nfa.follow_transition(prev, b); if next != NFA::FAIL { prev = next; } else { - let next = self.add_state(depth)?; - self.nfa.states[prev].set_next_state(b, next); + let next = self.nfa.alloc_state(depth)?; + self.nfa.add_transition(prev, b, next); if self.builder.ascii_case_insensitive { let b = opposite_ascii_case(b); - self.nfa.states[prev].set_next_state(b, next); + self.nfa.add_transition(prev, b, next); } prev = next; } } // Once the pattern has been added, log the match in the final // state that it reached. - self.nfa.states[prev].matches.push(pid); + self.nfa.add_match(prev, pid); } Ok(()) } @@ -883,7 +1241,7 @@ /// automaton. There are also a couple Java libraries that support leftmost /// longest semantics, but they do it by building a queue of matches at /// search time, which is even worse than what Perl is doing. ---AG - fn fill_failure_transitions(&mut self) { + fn fill_failure_transitions(&mut self) -> Result<(), BuildError> { let is_leftmost = self.builder.match_kind.is_leftmost(); let start_uid = self.nfa.special.start_unanchored_id; // Initialize the queue for breadth first search with all transitions @@ -892,15 +1250,17 @@ // transitions, then this would never terminate. let mut queue = VecDeque::new(); let mut seen = self.queued_set(); - for i in 0..self.nfa.states[start_uid].trans.len() { - let (_, next) = self.nfa.states[start_uid].trans[i]; + let mut prevt = None; + while let Some(t) = self.nfa.next_transition(start_uid, prevt) { + prevt = Some(t); + // Skip anything we've seen before and any self-transitions on the // start state. - if next == start_uid || seen.contains(next) { + if start_uid == t.next() || seen.contains(t.next) { continue; } - queue.push_back(next); - seen.insert(next); + queue.push_back(t.next); + seen.insert(t.next); // Under leftmost semantics, if a state immediately following // the start state is a match state, then we never want to // follow its failure transition since the failure transition @@ -909,14 +1269,16 @@ // found. // // We apply the same logic to non-start states below as well. - if is_leftmost && self.nfa.states[next].is_match() { - self.nfa.states[next].fail = NFA::DEAD; + if is_leftmost && self.nfa.states[t.next].is_match() { + self.nfa.states[t.next].fail = NFA::DEAD; } } while let Some(id) = queue.pop_front() { - for i in 0..self.nfa.states[id].trans.len() { - let (b, next) = self.nfa.states[id].trans[i]; - if seen.contains(next) { + let mut prevt = None; + while let Some(t) = self.nfa.next_transition(id, prevt) { + prevt = Some(t); + + if seen.contains(t.next) { // The only way to visit a duplicate state in a transition // list is when ASCII case insensitivity is enabled. In // this case, we want to skip it since it's redundant work. @@ -925,8 +1287,8 @@ // See the 'acasei010' regression test. continue; } - queue.push_back(next); - seen.insert(next); + queue.push_back(t.next); + seen.insert(t.next); // As above for start states, under leftmost semantics, once // we see a match all subsequent states should have no failure @@ -949,17 +1311,17 @@ // transition to the dead state on all match states, the dead // state will automatically propagate to all subsequent states // via the failure state computation below. - if is_leftmost && self.nfa.states[next].is_match() { - self.nfa.states[next].fail = NFA::DEAD; + if is_leftmost && self.nfa.states[t.next].is_match() { + self.nfa.states[t.next].fail = NFA::DEAD; continue; } let mut fail = self.nfa.states[id].fail; - while self.nfa.states[fail].next_state(b) == NFA::FAIL { + while self.nfa.follow_transition(fail, t.byte) == NFA::FAIL { fail = self.nfa.states[fail].fail; } - fail = self.nfa.states[fail].next_state(b); - self.nfa.states[next].fail = fail; - self.copy_matches(fail, next); + fail = self.nfa.follow_transition(fail, t.byte); + self.nfa.states[t.next].fail = fail; + self.nfa.copy_matches(fail, t.next)?; } // If the start state is a match state, then this automaton can // match the empty string. This implies all states are match states @@ -971,9 +1333,11 @@ // states only report the first match, which is never empty since // it isn't a start state. if !is_leftmost { - self.copy_matches(self.nfa.special.start_unanchored_id, id); + self.nfa + .copy_matches(self.nfa.special.start_unanchored_id, id)?; } } + Ok(()) } /// Shuffle the states so that they appear in this sequence: @@ -1083,6 +1447,49 @@ remapper.remap(&mut self.nfa); } + /// Attempts to convert the transition representation of a subset of states + /// in this NFA from sparse to dense. This can greatly improve search + /// performance since states with a higher number of transitions tend to + /// correlate with very active states. + /// + /// We generally only densify states that are close to the start state. + /// These tend to be the most active states and thus benefit from a dense + /// representation more than other states. + /// + /// This tends to best balance between memory usage and performance. In + /// particular, the *vast majority* of all states in a typical Aho-Corasick + /// automaton have only 1 transition and are usually farther from the start + /// state and thus don't get densified. + /// + /// Note that this doesn't remove the sparse representation of transitions + /// for states that are densified. It could be done, but actually removing + /// entries from `NFA::sparse` is likely more expensive than it's worth. + fn densify(&mut self) -> Result<(), BuildError> { + for i in 0..self.nfa.states.len() { + let sid = StateID::new(i).unwrap(); + // Don't bother densifying states that are only used as sentinels. + if sid == NFA::DEAD || sid == NFA::FAIL { + continue; + } + // Only densify states that are "close enough" to the start state. + if self.nfa.states[sid].depth.as_usize() + >= self.builder.dense_depth + { + continue; + } + let dense = self.nfa.alloc_dense_state()?; + let mut prevt = None; + while let Some(t) = self.nfa.next_transition(sid, prevt) { + let class = usize::from(self.nfa.byte_classes.get(t.byte)); + let index = dense.as_usize() + class; + self.nfa.dense[index] = t.next; + prevt = Some(t); + } + self.nfa.states[sid].dense = dense; + } + Ok(()) + } + /// Returns a set that tracked queued states. /// /// This is only necessary when ASCII case insensitivity is enabled, since @@ -1107,7 +1514,7 @@ fn init_unanchored_start_state(&mut self) { let start_uid = self.nfa.special.start_unanchored_id; for byte in 0..=255 { - self.nfa.states[start_uid].set_next_state(byte, NFA::FAIL); + self.nfa.add_transition(start_uid, byte, NFA::FAIL); } } @@ -1115,12 +1522,15 @@ /// matches from the unanchored starting state with one change: the failure /// transition is changed to the DEAD state, so that for any undefined /// transitions, the search will stop. - fn set_anchored_start_state(&mut self) { + fn set_anchored_start_state(&mut self) -> Result<(), BuildError> { let start_uid = self.nfa.special.start_unanchored_id; let start_aid = self.nfa.special.start_anchored_id; - self.nfa.states[start_aid].trans = - self.nfa.states[start_uid].trans.clone(); - self.copy_matches(start_uid, start_aid); + let mut prevt = None; + while let Some(t) = self.nfa.next_transition(start_uid, prevt) { + prevt = Some(t); + self.nfa.add_transition(start_aid, t.byte, t.next)?; + } + self.nfa.copy_matches(start_uid, start_aid)?; // This is the main difference between the unanchored and anchored // starting states. If a lookup on an anchored starting state fails, // then the search should stop. @@ -1128,6 +1538,7 @@ // N.B. This assumes that the loop on the unanchored starting state // hasn't been created yet. self.nfa.states[start_aid].fail = NFA::DEAD; + Ok(()) } /// Set the failure transitions on the start state to loop back to the @@ -1141,10 +1552,9 @@ /// state already exists or not. fn add_unanchored_start_state_loop(&mut self) { let start_uid = self.nfa.special.start_unanchored_id; - let start = &mut self.nfa.states[start_uid]; for b in 0..=255 { - if start.next_state(b) == NFA::FAIL { - start.set_next_state(b, start_uid); + if self.nfa.follow_transition(start_uid, b) == NFA::FAIL { + self.nfa.add_transition(start_uid, b, start_uid); } } } @@ -1166,8 +1576,9 @@ let start = &mut self.nfa.states[start_uid]; if self.builder.match_kind.is_leftmost() && start.is_match() { for b in 0..=255 { - if start.next_state(b) == start_uid { - start.set_next_state(b, NFA::DEAD); + if self.nfa.follow_transition_sparse(start_uid, b) == start_uid + { + self.nfa.add_transition(start_uid, b, NFA::DEAD); } } } @@ -1177,49 +1588,8 @@ /// Normally, missing transitions map back to the failure state, but the /// point of the dead state is to act as a sink that can never be escaped. fn add_dead_state_loop(&mut self) { - let dead = &mut self.nfa.states[NFA::DEAD]; for b in 0..=255 { - dead.set_next_state(b, NFA::DEAD); - } - } - - /// Copy matches from the `src` state to the `dst` state. This is useful - /// when a match state can be reached via a failure transition. In which - /// case, you'll want to copy the matches (if any) from the state reached - /// by the failure transition to the original state you were at. - fn copy_matches(&mut self, src: StateID, dst: StateID) { - let (src, dst) = - get_two_mut(&mut self.nfa.states, src.as_usize(), dst.as_usize()); - dst.matches.extend_from_slice(&src.matches); - } - - /// Allocate and add a fresh state to the underlying NFA and return its - /// ID (guaranteed to be one more than the ID of the previously allocated - /// state). If the ID would overflow `StateID`, then this returns an error. - fn add_state(&mut self, depth: usize) -> Result { - // This is OK because we error when building the trie if we see a - // pattern whose length cannot fit into a 'SmallIndex', and the longest - // possible depth corresponds to the length of the longest pattern. - let depth = SmallIndex::new(depth) - .expect("patterns longer than SmallIndex::MAX are not allowed"); - let id = StateID::new(self.nfa.states.len()).map_err(|e| { - BuildError::state_id_overflow(StateID::MAX.as_u64(), e.attempted()) - })?; - self.nfa.states.push(State { - trans: vec![], - matches: vec![], - fail: self.nfa.special.start_unanchored_id, - depth, - }); - Ok(id) - } - - /// Computes the total amount of heap used by this NFA in bytes. - fn calculate_memory_usage(&mut self) { - use core::mem::size_of; - - for state in self.nfa.states.iter() { - self.nfa.memory_usage += size_of::() + state.memory_usage(); + self.nfa.add_transition(NFA::DEAD, b, NFA::DEAD); } } } @@ -1268,7 +1638,10 @@ impl core::fmt::Debug for NFA { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - use crate::automaton::fmt_state_indicator; + use crate::{ + automaton::{fmt_state_indicator, sparse_transitions}, + util::debug::DebugByte, + }; writeln!(f, "noncontiguous::NFA(")?; for (sid, state) in self.states.iter().with_state_ids() { @@ -1285,11 +1658,37 @@ sid.as_usize(), state.fail.as_usize() )?; - state.fmt(f)?; + + let it = sparse_transitions( + self.iter_trans(sid).map(|t| (t.byte, t.next)), + ) + .enumerate(); + for (i, (start, end, sid)) in it { + if i > 0 { + write!(f, ", ")?; + } + if start == end { + write!( + f, + "{:?} => {:?}", + DebugByte(start), + sid.as_usize() + )?; + } else { + write!( + f, + "{:?}-{:?} => {:?}", + DebugByte(start), + DebugByte(end), + sid.as_usize() + )?; + } + } + write!(f, "\n")?; if self.is_match(sid) { write!(f, " matches: ")?; - for (i, pid) in state.matches.iter().enumerate() { + for (i, pid) in self.iter_matches(sid).enumerate() { if i > 0 { write!(f, ", ")?; } @@ -1309,18 +1708,3 @@ Ok(()) } } - -/// Safely return two mutable borrows to two different locations in the given -/// slice. -/// -/// This panics if i == j. -fn get_two_mut(xs: &mut [T], i: usize, j: usize) -> (&mut T, &mut T) { - assert!(i != j, "{} must not be equal to {}", i, j); - if i < j { - let (before, after) = xs.split_at_mut(j); - (&mut before[i], &mut after[0]) - } else { - let (before, after) = xs.split_at_mut(i); - (&mut after[0], &mut before[j]) - } -} diff -Nru temporalio-1.3.0/vendor/allocator-api2/.cargo-checksum.json temporalio-1.3.0/vendor/allocator-api2/.cargo-checksum.json --- temporalio-1.3.0/vendor/allocator-api2/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +{"files":{"CHANGELOG.md":"b4d01c4b8a790e435dc0ab67a1ef8b6d8e39f87bec233540e247ef313737d855","COPYING":"aacc8f585552509941b8531442e43a8e3e1aabc7d92f1ff0736250b80f65361c","Cargo.toml":"2970819aad5ebe0a89647be22da6613623199255ff0d7dbb9238927ffea696f1","README.md":"85cecaf786f948c26510911416d7e0ab4c4f10367d963cad011589648084a986","license/APACHE":"65071d88cda37097d5579c272cf0db48b23acc4e2fe3ad16a5985cd714753cbc","license/MIT":"74d0d1e38a980edecb7c71d33f2056456e2cb6c37c16bd05a882d714b5e56661","src/lib.rs":"fc1294b60cbf4d9ca3f61a43b86aac9533cd6b5b87729a9bd32f7992186d1a49","src/nightly.rs":"fc84f98e2014bef66bd54671d8ec98db973fb46b80fb271d6783eb00d1f95228","src/stable/alloc/global.rs":"411208558701915ff0f7cf7ef6c64b8a3bc932944416c26fd832d03d10a76502","src/stable/alloc/mod.rs":"63db909472169a70ad5332f33f67b88e9ea361c13725c65540d7003c83d8d226","src/stable/alloc/system.rs":"7c9145f594869c3cb934e97d3eda1b0b8ed6bd8ba89b1aea7435fc6680465b6b","src/stable/boxed.rs":"2ac1c0ba02149192030460c2be123cf0614c4fb60ce6bc483cc2b62cce83c22a","src/stable/macros.rs":"ce3915ce7ee003d8790c695d70a4e77b1e63a908a5ae0825169270d0f4ab5941","src/stable/mod.rs":"fc44985d0d999e2bd52693a49bb1796451c0a9a2e6d4f7565629392a38ca54e1","src/stable/raw_vec.rs":"bc1cb45b661ae5786912d625351e6e0d33aac8e4edaf36873874184a136cd89c","src/stable/slice.rs":"14d6eb35e3557b5f78feb48fd4bea343f037e8f1f2d2707089db4dbed438b558","src/stable/vec/drain.rs":"f8209cbd76a57823f6583a84fee285727b6c00189ec299acc9f97a0829f0742f","src/stable/vec/into_iter.rs":"9b0e58c8cd6c34b3c706696cb9508c977cbfaa0eeb32d13f799a82520b5cd490","src/stable/vec/mod.rs":"19a6772a4e3053c55c83dd774d3b0154852080bb58734dd49052a4175f0b4df1","src/stable/vec/partial_eq.rs":"cb88615747b4413f26dcab206e026bbd50150bf7d97d8df174384e86151d875e","src/stable/vec/set_len_on_drop.rs":"36f2e8fdc9b0a838eb443d74bec0291d389e52bfe4f617e391d977f15e6893b5","src/stable/vec/splice.rs":"7ce9fa74764c36ab9043f7339548e96b0b68f7d1a16769c9cb066b9a538dcb14"},"package":"0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/allocator-api2/Cargo.toml temporalio-1.3.0/vendor/allocator-api2/Cargo.toml --- temporalio-1.3.0/vendor/allocator-api2/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -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 = "2018" +name = "allocator-api2" +version = "0.2.16" +authors = ["Zakarum "] +description = "Mirror of Rust's allocator API" +homepage = "https://github.com/zakarumych/allocator-api2" +documentation = "https://docs.rs/allocator-api2" +readme = "README.md" +license = "MIT OR Apache-2.0" +repository = "https://github.com/zakarumych/allocator-api2" + +[dependencies.serde] +version = "1.0" +optional = true + +[features] +alloc = [] +default = ["std"] +nightly = [] +std = ["alloc"] diff -Nru temporalio-1.3.0/vendor/allocator-api2/CHANGELOG.md temporalio-1.3.0/vendor/allocator-api2/CHANGELOG.md --- temporalio-1.3.0/vendor/allocator-api2/CHANGELOG.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,7 @@ +# 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). + +## [Unreleased] diff -Nru temporalio-1.3.0/vendor/allocator-api2/COPYING temporalio-1.3.0/vendor/allocator-api2/COPYING --- temporalio-1.3.0/vendor/allocator-api2/COPYING 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/COPYING 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,6 @@ +Copyright 2023 The allocator-api2 Project Developers + +Licensed under the Apache License, Version 2.0, or the MIT license , at your option. This file may not be +copied, modified, or distributed except according to those terms. diff -Nru temporalio-1.3.0/vendor/allocator-api2/license/APACHE temporalio-1.3.0/vendor/allocator-api2/license/APACHE --- temporalio-1.3.0/vendor/allocator-api2/license/APACHE 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/license/APACHE 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,13 @@ +Copyright 2023 The allocator-api2 project developers + +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. \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/allocator-api2/license/MIT temporalio-1.3.0/vendor/allocator-api2/license/MIT --- temporalio-1.3.0/vendor/allocator-api2/license/MIT 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/license/MIT 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,25 @@ +Copyright (c) 2023 The allocator-api2 project developers + +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. \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/allocator-api2/README.md temporalio-1.3.0/vendor/allocator-api2/README.md --- temporalio-1.3.0/vendor/allocator-api2/README.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,53 @@ +# allocator-api2 + +[![crates](https://img.shields.io/crates/v/allocator-api2.svg?style=for-the-badge&label=allocator-api2)](https://crates.io/crates/allocator-api2) +[![docs](https://img.shields.io/badge/docs.rs-allocator--api2-66c2a5?style=for-the-badge&labelColor=555555&logoColor=white)](https://docs.rs/allocator-api2) +[![actions](https://img.shields.io/github/actions/workflow/status/zakarumych/allocator-api2/badge.yml?branch=main&style=for-the-badge)](https://github.com/zakarumych/allocator-api2/actions/workflows/badge.yml) +[![MIT/Apache](https://img.shields.io/badge/license-MIT%2FApache-blue.svg?style=for-the-badge)](COPYING) +![loc](https://img.shields.io/tokei/lines/github/zakarumych/allocator-api2?style=for-the-badge) + +This crate mirrors types and traits from Rust's unstable [`allocator_api`] +The intention of this crate is to serve as substitution for actual thing +for libs when build on stable and beta channels. +The target users are library authors who implement allocators or collection types +that use allocators, or anyone else who wants using [`allocator_api`] + +The crate should be frequently updated with minor version bump. +When [`allocator_api`] is stable this crate will get version `1.0` and simply +re-export from `core`, `alloc` and `std`. + +The code is mostly verbatim copy from rust repository. +Mostly attributes are removed. + +## Usage + +This paragraph describes how to use this crate correctly to ensure +compatibility and interoperability on both stable and nightly channels. + +If you are writing a library that interacts with allocators API, you can +add this crate as a dependency and use the types and traits from this +crate instead of the ones in `core` or `alloc`. +This will allow your library to compile on stable and beta channels. + +Your library *MAY* provide a feature that will enable "allocator-api2/nightly". +When this feature is enabled, your library *MUST* enable +unstable `#![feature(allocator_api)]` or it may not compile. +If feature is not provided, your library may not be compatible with the +rest of the users and cause compilation errors on nightly channel +when some other crate enables "allocator-api2/nightly" feature. + +## 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. + +## Contributions + +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. + + +[`allocator_api`]: https://doc.rust-lang.org/unstable-book/library-features/allocator-api.html \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/allocator-api2/src/lib.rs temporalio-1.3.0/vendor/allocator-api2/src/lib.rs --- temporalio-1.3.0/vendor/allocator-api2/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,19 @@ +//! +//! allocator-api2 crate. +//! +#![cfg_attr(not(feature = "std"), no_std)] + +#[cfg(feature = "alloc")] +extern crate alloc as alloc_crate; + +#[cfg(not(feature = "nightly"))] +mod stable; + +#[cfg(feature = "nightly")] +mod nightly; + +#[cfg(not(feature = "nightly"))] +pub use self::stable::*; + +#[cfg(feature = "nightly")] +pub use self::nightly::*; diff -Nru temporalio-1.3.0/vendor/allocator-api2/src/nightly.rs temporalio-1.3.0/vendor/allocator-api2/src/nightly.rs --- temporalio-1.3.0/vendor/allocator-api2/src/nightly.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/src/nightly.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,5 @@ +#[cfg(not(feature = "alloc"))] +pub use core::alloc; + +#[cfg(feature = "alloc")] +pub use alloc_crate::{alloc, boxed, vec}; diff -Nru temporalio-1.3.0/vendor/allocator-api2/src/stable/alloc/global.rs temporalio-1.3.0/vendor/allocator-api2/src/stable/alloc/global.rs --- temporalio-1.3.0/vendor/allocator-api2/src/stable/alloc/global.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/src/stable/alloc/global.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,188 @@ +use core::ptr::NonNull; + +#[doc(inline)] +pub use alloc_crate::alloc::{alloc, alloc_zeroed, dealloc, handle_alloc_error, realloc}; + +use crate::stable::{assume, invalid_mut}; + +use super::{AllocError, Allocator, Layout}; + +/// The global memory allocator. +/// +/// This type implements the [`Allocator`] trait by forwarding calls +/// to the allocator registered with the `#[global_allocator]` attribute +/// if there is one, or the `std` crate’s default. +/// +/// Note: while this type is unstable, the functionality it provides can be +/// accessed through the [free functions in `alloc`](crate#functions). +#[derive(Copy, Clone, Default, Debug)] +pub struct Global; + +impl Global { + #[inline(always)] + fn alloc_impl(&self, layout: Layout, zeroed: bool) -> Result, AllocError> { + match layout.size() { + 0 => Ok(unsafe { + NonNull::new_unchecked(core::ptr::slice_from_raw_parts_mut( + invalid_mut(layout.align()), + 0, + )) + }), + // SAFETY: `layout` is non-zero in size, + size => unsafe { + let raw_ptr = if zeroed { + alloc_zeroed(layout) + } else { + alloc(layout) + }; + let ptr = NonNull::new(raw_ptr).ok_or(AllocError)?; + Ok(NonNull::new_unchecked(core::ptr::slice_from_raw_parts_mut( + ptr.as_ptr(), + size, + ))) + }, + } + } + + // SAFETY: Same as `Allocator::grow` + #[inline(always)] + unsafe fn grow_impl( + &self, + ptr: NonNull, + old_layout: Layout, + new_layout: Layout, + zeroed: bool, + ) -> Result, AllocError> { + debug_assert!( + new_layout.size() >= old_layout.size(), + "`new_layout.size()` must be greater than or equal to `old_layout.size()`" + ); + + match old_layout.size() { + 0 => self.alloc_impl(new_layout, zeroed), + + // SAFETY: `new_size` is non-zero as `old_size` is greater than or equal to `new_size` + // as required by safety conditions. Other conditions must be upheld by the caller + old_size if old_layout.align() == new_layout.align() => unsafe { + let new_size = new_layout.size(); + + // `realloc` probably checks for `new_size >= old_layout.size()` or something similar. + assume(new_size >= old_layout.size()); + + let raw_ptr = realloc(ptr.as_ptr(), old_layout, new_size); + let ptr = NonNull::new(raw_ptr).ok_or(AllocError)?; + if zeroed { + raw_ptr.add(old_size).write_bytes(0, new_size - old_size); + } + Ok(NonNull::new_unchecked(core::ptr::slice_from_raw_parts_mut( + ptr.as_ptr(), + new_size, + ))) + }, + + // SAFETY: because `new_layout.size()` must be greater than or equal to `old_size`, + // both the old and new memory allocation are valid for reads and writes for `old_size` + // bytes. Also, because the old allocation wasn't yet deallocated, it cannot overlap + // `new_ptr`. Thus, the call to `copy_nonoverlapping` is safe. The safety contract + // for `dealloc` must be upheld by the caller. + old_size => unsafe { + let new_ptr = self.alloc_impl(new_layout, zeroed)?; + core::ptr::copy_nonoverlapping(ptr.as_ptr(), new_ptr.as_ptr().cast(), old_size); + self.deallocate(ptr, old_layout); + Ok(new_ptr) + }, + } + } +} + +unsafe impl Allocator for Global { + #[inline(always)] + fn allocate(&self, layout: Layout) -> Result, AllocError> { + self.alloc_impl(layout, false) + } + + #[inline(always)] + fn allocate_zeroed(&self, layout: Layout) -> Result, AllocError> { + self.alloc_impl(layout, true) + } + + #[inline(always)] + unsafe fn deallocate(&self, ptr: NonNull, layout: Layout) { + if layout.size() != 0 { + // SAFETY: `layout` is non-zero in size, + // other conditions must be upheld by the caller + unsafe { dealloc(ptr.as_ptr(), layout) } + } + } + + #[inline(always)] + unsafe fn grow( + &self, + ptr: NonNull, + old_layout: Layout, + new_layout: Layout, + ) -> Result, AllocError> { + // SAFETY: all conditions must be upheld by the caller + unsafe { self.grow_impl(ptr, old_layout, new_layout, false) } + } + + #[inline(always)] + unsafe fn grow_zeroed( + &self, + ptr: NonNull, + old_layout: Layout, + new_layout: Layout, + ) -> Result, AllocError> { + // SAFETY: all conditions must be upheld by the caller + unsafe { self.grow_impl(ptr, old_layout, new_layout, true) } + } + + #[inline(always)] + unsafe fn shrink( + &self, + ptr: NonNull, + old_layout: Layout, + new_layout: Layout, + ) -> Result, AllocError> { + debug_assert!( + new_layout.size() <= old_layout.size(), + "`new_layout.size()` must be smaller than or equal to `old_layout.size()`" + ); + + match new_layout.size() { + // SAFETY: conditions must be upheld by the caller + 0 => unsafe { + self.deallocate(ptr, old_layout); + Ok(NonNull::new_unchecked(core::ptr::slice_from_raw_parts_mut( + invalid_mut(new_layout.align()), + 0, + ))) + }, + + // SAFETY: `new_size` is non-zero. Other conditions must be upheld by the caller + new_size if old_layout.align() == new_layout.align() => unsafe { + // `realloc` probably checks for `new_size <= old_layout.size()` or something similar. + assume(new_size <= old_layout.size()); + + let raw_ptr = realloc(ptr.as_ptr(), old_layout, new_size); + let ptr = NonNull::new(raw_ptr).ok_or(AllocError)?; + Ok(NonNull::new_unchecked(core::ptr::slice_from_raw_parts_mut( + ptr.as_ptr(), + new_size, + ))) + }, + + // SAFETY: because `new_size` must be smaller than or equal to `old_layout.size()`, + // both the old and new memory allocation are valid for reads and writes for `new_size` + // bytes. Also, because the old allocation wasn't yet deallocated, it cannot overlap + // `new_ptr`. Thus, the call to `copy_nonoverlapping` is safe. The safety contract + // for `dealloc` must be upheld by the caller. + new_size => unsafe { + let new_ptr = self.allocate(new_layout)?; + core::ptr::copy_nonoverlapping(ptr.as_ptr(), new_ptr.as_ptr().cast(), new_size); + self.deallocate(ptr, old_layout); + Ok(new_ptr) + }, + } + } +} diff -Nru temporalio-1.3.0/vendor/allocator-api2/src/stable/alloc/mod.rs temporalio-1.3.0/vendor/allocator-api2/src/stable/alloc/mod.rs --- temporalio-1.3.0/vendor/allocator-api2/src/stable/alloc/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/src/stable/alloc/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,416 @@ +//! Memory allocation APIs + +use core::{ + fmt, + ptr::{self, NonNull}, +}; + +#[cfg(feature = "alloc")] +mod global; + +#[cfg(feature = "std")] +mod system; + +pub use core::alloc::{GlobalAlloc, Layout, LayoutError}; + +#[cfg(feature = "alloc")] +pub use self::global::Global; + +#[cfg(feature = "std")] +pub use self::system::System; + +#[cfg(feature = "alloc")] +pub use alloc_crate::alloc::{alloc, alloc_zeroed, dealloc, realloc}; + +#[cfg(all(feature = "alloc", not(no_global_oom_handling)))] +pub use alloc_crate::alloc::handle_alloc_error; + +/// The `AllocError` error indicates an allocation failure +/// that may be due to resource exhaustion or to +/// something wrong when combining the given input arguments with this +/// allocator. +#[derive(Copy, Clone, PartialEq, Eq, Debug)] +pub struct AllocError; + +#[cfg(feature = "std")] +impl std::error::Error for AllocError {} + +// (we need this for downstream impl of trait Error) +impl fmt::Display for AllocError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("memory allocation failed") + } +} + +/// An implementation of `Allocator` can allocate, grow, shrink, and deallocate arbitrary blocks of +/// data described via [`Layout`][]. +/// +/// `Allocator` is designed to be implemented on ZSTs, references, or smart pointers because having +/// an allocator like `MyAlloc([u8; N])` cannot be moved, without updating the pointers to the +/// allocated memory. +/// +/// Unlike [`GlobalAlloc`][], zero-sized allocations are allowed in `Allocator`. If an underlying +/// allocator does not support this (like jemalloc) or return a null pointer (such as +/// `libc::malloc`), this must be caught by the implementation. +/// +/// ### Currently allocated memory +/// +/// Some of the methods require that a memory block be *currently allocated* via an allocator. This +/// means that: +/// +/// * the starting address for that memory block was previously returned by [`allocate`], [`grow`], or +/// [`shrink`], and +/// +/// * the memory block has not been subsequently deallocated, where blocks are either deallocated +/// directly by being passed to [`deallocate`] or were changed by being passed to [`grow`] or +/// [`shrink`] that returns `Ok`. If `grow` or `shrink` have returned `Err`, the passed pointer +/// remains valid. +/// +/// [`allocate`]: Allocator::allocate +/// [`grow`]: Allocator::grow +/// [`shrink`]: Allocator::shrink +/// [`deallocate`]: Allocator::deallocate +/// +/// ### Memory fitting +/// +/// Some of the methods require that a layout *fit* a memory block. What it means for a layout to +/// "fit" a memory block means (or equivalently, for a memory block to "fit" a layout) is that the +/// following conditions must hold: +/// +/// * The block must be allocated with the same alignment as [`layout.align()`], and +/// +/// * The provided [`layout.size()`] must fall in the range `min ..= max`, where: +/// - `min` is the size of the layout most recently used to allocate the block, and +/// - `max` is the latest actual size returned from [`allocate`], [`grow`], or [`shrink`]. +/// +/// [`layout.align()`]: Layout::align +/// [`layout.size()`]: Layout::size +/// +/// # Safety +/// +/// * Memory blocks returned from an allocator must point to valid memory and retain their validity +/// until the instance and all of its clones are dropped, +/// +/// * cloning or moving the allocator must not invalidate memory blocks returned from this +/// allocator. A cloned allocator must behave like the same allocator, and +/// +/// * any pointer to a memory block which is [*currently allocated*] may be passed to any other +/// method of the allocator. +/// +/// [*currently allocated*]: #currently-allocated-memory +pub unsafe trait Allocator { + /// Attempts to allocate a block of memory. + /// + /// On success, returns a [`NonNull<[u8]>`][NonNull] meeting the size and alignment guarantees of `layout`. + /// + /// The returned block may have a larger size than specified by `layout.size()`, and may or may + /// not have its contents initialized. + /// + /// # Errors + /// + /// Returning `Err` indicates that either memory is exhausted or `layout` does not meet + /// allocator's size or alignment constraints. + /// + /// Implementations are encouraged to return `Err` on memory exhaustion rather than panicking or + /// aborting, but this is not a strict requirement. (Specifically: it is *legal* to implement + /// this trait atop an underlying native allocation library that aborts on memory exhaustion.) + /// + /// Clients wishing to abort computation in response to an allocation error are encouraged to + /// call the [`handle_alloc_error`] function, rather than directly invoking `panic!` or similar. + /// + /// [`handle_alloc_error`]: ../../alloc/alloc/fn.handle_alloc_error.html + fn allocate(&self, layout: Layout) -> Result, AllocError>; + + /// Behaves like `allocate`, but also ensures that the returned memory is zero-initialized. + /// + /// # Errors + /// + /// Returning `Err` indicates that either memory is exhausted or `layout` does not meet + /// allocator's size or alignment constraints. + /// + /// Implementations are encouraged to return `Err` on memory exhaustion rather than panicking or + /// aborting, but this is not a strict requirement. (Specifically: it is *legal* to implement + /// this trait atop an underlying native allocation library that aborts on memory exhaustion.) + /// + /// Clients wishing to abort computation in response to an allocation error are encouraged to + /// call the [`handle_alloc_error`] function, rather than directly invoking `panic!` or similar. + /// + /// [`handle_alloc_error`]: ../../alloc/alloc/fn.handle_alloc_error.html + #[inline(always)] + fn allocate_zeroed(&self, layout: Layout) -> Result, AllocError> { + let ptr = self.allocate(layout)?; + // SAFETY: `alloc` returns a valid memory block + unsafe { ptr.cast::().as_ptr().write_bytes(0, ptr.len()) } + Ok(ptr) + } + + /// Deallocates the memory referenced by `ptr`. + /// + /// # Safety + /// + /// * `ptr` must denote a block of memory [*currently allocated*] via this allocator, and + /// * `layout` must [*fit*] that block of memory. + /// + /// [*currently allocated*]: #currently-allocated-memory + /// [*fit*]: #memory-fitting + unsafe fn deallocate(&self, ptr: NonNull, layout: Layout); + + /// Attempts to extend the memory block. + /// + /// Returns a new [`NonNull<[u8]>`][NonNull] containing a pointer and the actual size of the allocated + /// memory. The pointer is suitable for holding data described by `new_layout`. To accomplish + /// this, the allocator may extend the allocation referenced by `ptr` to fit the new layout. + /// + /// If this returns `Ok`, then ownership of the memory block referenced by `ptr` has been + /// transferred to this allocator. Any access to the old `ptr` is Undefined Behavior, even if the + /// allocation was grown in-place. The newly returned pointer is the only valid pointer + /// for accessing this memory now. + /// + /// If this method returns `Err`, then ownership of the memory block has not been transferred to + /// this allocator, and the contents of the memory block are unaltered. + /// + /// # Safety + /// + /// * `ptr` must denote a block of memory [*currently allocated*] via this allocator. + /// * `old_layout` must [*fit*] that block of memory (The `new_layout` argument need not fit it.). + /// * `new_layout.size()` must be greater than or equal to `old_layout.size()`. + /// + /// Note that `new_layout.align()` need not be the same as `old_layout.align()`. + /// + /// [*currently allocated*]: #currently-allocated-memory + /// [*fit*]: #memory-fitting + /// + /// # Errors + /// + /// Returns `Err` if the new layout does not meet the allocator's size and alignment + /// constraints of the allocator, or if growing otherwise fails. + /// + /// Implementations are encouraged to return `Err` on memory exhaustion rather than panicking or + /// aborting, but this is not a strict requirement. (Specifically: it is *legal* to implement + /// this trait atop an underlying native allocation library that aborts on memory exhaustion.) + /// + /// Clients wishing to abort computation in response to an allocation error are encouraged to + /// call the [`handle_alloc_error`] function, rather than directly invoking `panic!` or similar. + /// + /// [`handle_alloc_error`]: ../../alloc/alloc/fn.handle_alloc_error.html + #[inline(always)] + unsafe fn grow( + &self, + ptr: NonNull, + old_layout: Layout, + new_layout: Layout, + ) -> Result, AllocError> { + debug_assert!( + new_layout.size() >= old_layout.size(), + "`new_layout.size()` must be greater than or equal to `old_layout.size()`" + ); + + let new_ptr = self.allocate(new_layout)?; + + // SAFETY: because `new_layout.size()` must be greater than or equal to + // `old_layout.size()`, both the old and new memory allocation are valid for reads and + // writes for `old_layout.size()` bytes. Also, because the old allocation wasn't yet + // deallocated, it cannot overlap `new_ptr`. Thus, the call to `copy_nonoverlapping` is + // safe. The safety contract for `dealloc` must be upheld by the caller. + unsafe { + ptr::copy_nonoverlapping(ptr.as_ptr(), new_ptr.as_ptr().cast(), old_layout.size()); + self.deallocate(ptr, old_layout); + } + + Ok(new_ptr) + } + + /// Behaves like `grow`, but also ensures that the new contents are set to zero before being + /// returned. + /// + /// The memory block will contain the following contents after a successful call to + /// `grow_zeroed`: + /// * Bytes `0..old_layout.size()` are preserved from the original allocation. + /// * Bytes `old_layout.size()..old_size` will either be preserved or zeroed, depending on + /// the allocator implementation. `old_size` refers to the size of the memory block prior + /// to the `grow_zeroed` call, which may be larger than the size that was originally + /// requested when it was allocated. + /// * Bytes `old_size..new_size` are zeroed. `new_size` refers to the size of the memory + /// block returned by the `grow_zeroed` call. + /// + /// # Safety + /// + /// * `ptr` must denote a block of memory [*currently allocated*] via this allocator. + /// * `old_layout` must [*fit*] that block of memory (The `new_layout` argument need not fit it.). + /// * `new_layout.size()` must be greater than or equal to `old_layout.size()`. + /// + /// Note that `new_layout.align()` need not be the same as `old_layout.align()`. + /// + /// [*currently allocated*]: #currently-allocated-memory + /// [*fit*]: #memory-fitting + /// + /// # Errors + /// + /// Returns `Err` if the new layout does not meet the allocator's size and alignment + /// constraints of the allocator, or if growing otherwise fails. + /// + /// Implementations are encouraged to return `Err` on memory exhaustion rather than panicking or + /// aborting, but this is not a strict requirement. (Specifically: it is *legal* to implement + /// this trait atop an underlying native allocation library that aborts on memory exhaustion.) + /// + /// Clients wishing to abort computation in response to an allocation error are encouraged to + /// call the [`handle_alloc_error`] function, rather than directly invoking `panic!` or similar. + /// + /// [`handle_alloc_error`]: ../../alloc/alloc/fn.handle_alloc_error.html + #[inline(always)] + unsafe fn grow_zeroed( + &self, + ptr: NonNull, + old_layout: Layout, + new_layout: Layout, + ) -> Result, AllocError> { + debug_assert!( + new_layout.size() >= old_layout.size(), + "`new_layout.size()` must be greater than or equal to `old_layout.size()`" + ); + + let new_ptr = self.allocate_zeroed(new_layout)?; + + // SAFETY: because `new_layout.size()` must be greater than or equal to + // `old_layout.size()`, both the old and new memory allocation are valid for reads and + // writes for `old_layout.size()` bytes. Also, because the old allocation wasn't yet + // deallocated, it cannot overlap `new_ptr`. Thus, the call to `copy_nonoverlapping` is + // safe. The safety contract for `dealloc` must be upheld by the caller. + unsafe { + ptr::copy_nonoverlapping(ptr.as_ptr(), new_ptr.as_ptr().cast(), old_layout.size()); + self.deallocate(ptr, old_layout); + } + + Ok(new_ptr) + } + + /// Attempts to shrink the memory block. + /// + /// Returns a new [`NonNull<[u8]>`][NonNull] containing a pointer and the actual size of the allocated + /// memory. The pointer is suitable for holding data described by `new_layout`. To accomplish + /// this, the allocator may shrink the allocation referenced by `ptr` to fit the new layout. + /// + /// If this returns `Ok`, then ownership of the memory block referenced by `ptr` has been + /// transferred to this allocator. Any access to the old `ptr` is Undefined Behavior, even if the + /// allocation was shrunk in-place. The newly returned pointer is the only valid pointer + /// for accessing this memory now. + /// + /// If this method returns `Err`, then ownership of the memory block has not been transferred to + /// this allocator, and the contents of the memory block are unaltered. + /// + /// # Safety + /// + /// * `ptr` must denote a block of memory [*currently allocated*] via this allocator. + /// * `old_layout` must [*fit*] that block of memory (The `new_layout` argument need not fit it.). + /// * `new_layout.size()` must be smaller than or equal to `old_layout.size()`. + /// + /// Note that `new_layout.align()` need not be the same as `old_layout.align()`. + /// + /// [*currently allocated*]: #currently-allocated-memory + /// [*fit*]: #memory-fitting + /// + /// # Errors + /// + /// Returns `Err` if the new layout does not meet the allocator's size and alignment + /// constraints of the allocator, or if shrinking otherwise fails. + /// + /// Implementations are encouraged to return `Err` on memory exhaustion rather than panicking or + /// aborting, but this is not a strict requirement. (Specifically: it is *legal* to implement + /// this trait atop an underlying native allocation library that aborts on memory exhaustion.) + /// + /// Clients wishing to abort computation in response to an allocation error are encouraged to + /// call the [`handle_alloc_error`] function, rather than directly invoking `panic!` or similar. + /// + /// [`handle_alloc_error`]: ../../alloc/alloc/fn.handle_alloc_error.html + #[inline(always)] + unsafe fn shrink( + &self, + ptr: NonNull, + old_layout: Layout, + new_layout: Layout, + ) -> Result, AllocError> { + debug_assert!( + new_layout.size() <= old_layout.size(), + "`new_layout.size()` must be smaller than or equal to `old_layout.size()`" + ); + + let new_ptr = self.allocate(new_layout)?; + + // SAFETY: because `new_layout.size()` must be lower than or equal to + // `old_layout.size()`, both the old and new memory allocation are valid for reads and + // writes for `new_layout.size()` bytes. Also, because the old allocation wasn't yet + // deallocated, it cannot overlap `new_ptr`. Thus, the call to `copy_nonoverlapping` is + // safe. The safety contract for `dealloc` must be upheld by the caller. + unsafe { + ptr::copy_nonoverlapping(ptr.as_ptr(), new_ptr.as_ptr().cast(), new_layout.size()); + self.deallocate(ptr, old_layout); + } + + Ok(new_ptr) + } + + /// Creates a "by reference" adapter for this instance of `Allocator`. + /// + /// The returned adapter also implements `Allocator` and will simply borrow this. + #[inline(always)] + fn by_ref(&self) -> &Self + where + Self: Sized, + { + self + } +} + +unsafe impl Allocator for &A +where + A: Allocator + ?Sized, +{ + #[inline(always)] + fn allocate(&self, layout: Layout) -> Result, AllocError> { + (**self).allocate(layout) + } + + #[inline(always)] + fn allocate_zeroed(&self, layout: Layout) -> Result, AllocError> { + (**self).allocate_zeroed(layout) + } + + #[inline(always)] + unsafe fn deallocate(&self, ptr: NonNull, layout: Layout) { + // SAFETY: the safety contract must be upheld by the caller + unsafe { (**self).deallocate(ptr, layout) } + } + + #[inline(always)] + unsafe fn grow( + &self, + ptr: NonNull, + old_layout: Layout, + new_layout: Layout, + ) -> Result, AllocError> { + // SAFETY: the safety contract must be upheld by the caller + unsafe { (**self).grow(ptr, old_layout, new_layout) } + } + + #[inline(always)] + unsafe fn grow_zeroed( + &self, + ptr: NonNull, + old_layout: Layout, + new_layout: Layout, + ) -> Result, AllocError> { + // SAFETY: the safety contract must be upheld by the caller + unsafe { (**self).grow_zeroed(ptr, old_layout, new_layout) } + } + + #[inline(always)] + unsafe fn shrink( + &self, + ptr: NonNull, + old_layout: Layout, + new_layout: Layout, + ) -> Result, AllocError> { + // SAFETY: the safety contract must be upheld by the caller + unsafe { (**self).shrink(ptr, old_layout, new_layout) } + } +} diff -Nru temporalio-1.3.0/vendor/allocator-api2/src/stable/alloc/system.rs temporalio-1.3.0/vendor/allocator-api2/src/stable/alloc/system.rs --- temporalio-1.3.0/vendor/allocator-api2/src/stable/alloc/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/src/stable/alloc/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,172 @@ +use core::ptr::NonNull; +pub use std::alloc::System; + +use crate::stable::{assume, invalid_mut}; + +use super::{AllocError, Allocator, GlobalAlloc as _, Layout}; + +unsafe impl Allocator for System { + #[inline(always)] + fn allocate(&self, layout: Layout) -> Result, AllocError> { + alloc_impl(layout, false) + } + + #[inline(always)] + fn allocate_zeroed(&self, layout: Layout) -> Result, AllocError> { + alloc_impl(layout, true) + } + + #[inline(always)] + unsafe fn deallocate(&self, ptr: NonNull, layout: Layout) { + if layout.size() != 0 { + // SAFETY: `layout` is non-zero in size, + // other conditions must be upheld by the caller + unsafe { System.dealloc(ptr.as_ptr(), layout) } + } + } + + #[inline(always)] + unsafe fn grow( + &self, + ptr: NonNull, + old_layout: Layout, + new_layout: Layout, + ) -> Result, AllocError> { + // SAFETY: all conditions must be upheld by the caller + unsafe { grow_impl(ptr, old_layout, new_layout, false) } + } + + #[inline(always)] + unsafe fn grow_zeroed( + &self, + ptr: NonNull, + old_layout: Layout, + new_layout: Layout, + ) -> Result, AllocError> { + // SAFETY: all conditions must be upheld by the caller + unsafe { grow_impl(ptr, old_layout, new_layout, true) } + } + + #[inline(always)] + unsafe fn shrink( + &self, + ptr: NonNull, + old_layout: Layout, + new_layout: Layout, + ) -> Result, AllocError> { + debug_assert!( + new_layout.size() <= old_layout.size(), + "`new_layout.size()` must be smaller than or equal to `old_layout.size()`" + ); + + match new_layout.size() { + // SAFETY: conditions must be upheld by the caller + 0 => unsafe { + self.deallocate(ptr, old_layout); + Ok(NonNull::new_unchecked(core::ptr::slice_from_raw_parts_mut( + invalid_mut(new_layout.align()), + 0, + ))) + }, + + // SAFETY: `new_size` is non-zero. Other conditions must be upheld by the caller + new_size if old_layout.align() == new_layout.align() => unsafe { + // `realloc` probably checks for `new_size <= old_layout.size()` or something similar. + assume(new_size <= old_layout.size()); + + let raw_ptr = System.realloc(ptr.as_ptr(), old_layout, new_size); + let ptr = NonNull::new(raw_ptr).ok_or(AllocError)?; + Ok(NonNull::new_unchecked(core::ptr::slice_from_raw_parts_mut( + ptr.as_ptr(), + new_size, + ))) + }, + + // SAFETY: because `new_size` must be smaller than or equal to `old_layout.size()`, + // both the old and new memory allocation are valid for reads and writes for `new_size` + // bytes. Also, because the old allocation wasn't yet deallocated, it cannot overlap + // `new_ptr`. Thus, the call to `copy_nonoverlapping` is safe. The safety contract + // for `dealloc` must be upheld by the caller. + new_size => unsafe { + let new_ptr = self.allocate(new_layout)?; + core::ptr::copy_nonoverlapping(ptr.as_ptr(), new_ptr.as_ptr().cast(), new_size); + self.deallocate(ptr, old_layout); + Ok(new_ptr) + }, + } + } +} + +#[inline(always)] +fn alloc_impl(layout: Layout, zeroed: bool) -> Result, AllocError> { + match layout.size() { + 0 => Ok(unsafe { + NonNull::new_unchecked(core::ptr::slice_from_raw_parts_mut( + invalid_mut(layout.align()), + 0, + )) + }), + // SAFETY: `layout` is non-zero in size, + size => unsafe { + let raw_ptr = if zeroed { + System.alloc_zeroed(layout) + } else { + System.alloc(layout) + }; + let ptr = NonNull::new(raw_ptr).ok_or(AllocError)?; + Ok(NonNull::new_unchecked(core::ptr::slice_from_raw_parts_mut( + ptr.as_ptr(), + size, + ))) + }, + } +} + +// SAFETY: Same as `Allocator::grow` +#[inline(always)] +unsafe fn grow_impl( + ptr: NonNull, + old_layout: Layout, + new_layout: Layout, + zeroed: bool, +) -> Result, AllocError> { + debug_assert!( + new_layout.size() >= old_layout.size(), + "`new_layout.size()` must be greater than or equal to `old_layout.size()`" + ); + + match old_layout.size() { + 0 => alloc_impl(new_layout, zeroed), + + // SAFETY: `new_size` is non-zero as `old_size` is greater than or equal to `new_size` + // as required by safety conditions. Other conditions must be upheld by the caller + old_size if old_layout.align() == new_layout.align() => unsafe { + let new_size = new_layout.size(); + + // `realloc` probably checks for `new_size >= old_layout.size()` or something similar. + assume(new_size >= old_layout.size()); + + let raw_ptr = System.realloc(ptr.as_ptr(), old_layout, new_size); + let ptr = NonNull::new(raw_ptr).ok_or(AllocError)?; + if zeroed { + raw_ptr.add(old_size).write_bytes(0, new_size - old_size); + } + Ok(NonNull::new_unchecked(core::ptr::slice_from_raw_parts_mut( + ptr.as_ptr(), + new_size, + ))) + }, + + // SAFETY: because `new_layout.size()` must be greater than or equal to `old_size`, + // both the old and new memory allocation are valid for reads and writes for `old_size` + // bytes. Also, because the old allocation wasn't yet deallocated, it cannot overlap + // `new_ptr`. Thus, the call to `copy_nonoverlapping` is safe. The safety contract + // for `dealloc` must be upheld by the caller. + old_size => unsafe { + let new_ptr = alloc_impl(new_layout, zeroed)?; + core::ptr::copy_nonoverlapping(ptr.as_ptr(), new_ptr.as_ptr().cast(), old_size); + System.deallocate(ptr, old_layout); + Ok(new_ptr) + }, + } +} diff -Nru temporalio-1.3.0/vendor/allocator-api2/src/stable/boxed.rs temporalio-1.3.0/vendor/allocator-api2/src/stable/boxed.rs --- temporalio-1.3.0/vendor/allocator-api2/src/stable/boxed.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/src/stable/boxed.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,2155 @@ +//! The `Box` type for heap allocation. +//! +//! [`Box`], casually referred to as a 'box', provides the simplest form of +//! heap allocation in Rust. Boxes provide ownership for this allocation, and +//! drop their contents when they go out of scope. Boxes also ensure that they +//! never allocate more than `isize::MAX` bytes. +//! +//! # Examples +//! +//! Move a value from the stack to the heap by creating a [`Box`]: +//! +//! ``` +//! let val: u8 = 5; +//! let boxed: Box = Box::new(val); +//! ``` +//! +//! Move a value from a [`Box`] back to the stack by [dereferencing]: +//! +//! ``` +//! let boxed: Box = Box::new(5); +//! let val: u8 = *boxed; +//! ``` +//! +//! Creating a recursive data structure: +//! +//! ``` +//! #[derive(Debug)] +//! enum List { +//! Cons(T, Box>), +//! Nil, +//! } +//! +//! let list: List = List::Cons(1, Box::new(List::Cons(2, Box::new(List::Nil)))); +//! println!("{list:?}"); +//! ``` +//! +//! This will print `Cons(1, Cons(2, Nil))`. +//! +//! Recursive structures must be boxed, because if the definition of `Cons` +//! looked like this: +//! +//! ```compile_fail,E0072 +//! # enum List { +//! Cons(T, List), +//! # } +//! ``` +//! +//! It wouldn't work. This is because the size of a `List` depends on how many +//! elements are in the list, and so we don't know how much memory to allocate +//! for a `Cons`. By introducing a [`Box`], which has a defined size, we know how +//! big `Cons` needs to be. +//! +//! # Memory layout +//! +//! For non-zero-sized values, a [`Box`] will use the [`Global`] allocator for +//! its allocation. It is valid to convert both ways between a [`Box`] and a +//! raw pointer allocated with the [`Global`] allocator, given that the +//! [`Layout`] used with the allocator is correct for the type. More precisely, +//! a `value: *mut T` that has been allocated with the [`Global`] allocator +//! with `Layout::for_value(&*value)` may be converted into a box using +//! [`Box::::from_raw(value)`]. Conversely, the memory backing a `value: *mut +//! T` obtained from [`Box::::into_raw`] may be deallocated using the +//! [`Global`] allocator with [`Layout::for_value(&*value)`]. +//! +//! For zero-sized values, the `Box` pointer still has to be [valid] for reads +//! and writes and sufficiently aligned. In particular, casting any aligned +//! non-zero integer literal to a raw pointer produces a valid pointer, but a +//! pointer pointing into previously allocated memory that since got freed is +//! not valid. The recommended way to build a Box to a ZST if `Box::new` cannot +//! be used is to use [`ptr::NonNull::dangling`]. +//! +//! So long as `T: Sized`, a `Box` is guaranteed to be represented +//! as a single pointer and is also ABI-compatible with C pointers +//! (i.e. the C type `T*`). This means that if you have extern "C" +//! Rust functions that will be called from C, you can define those +//! Rust functions using `Box` types, and use `T*` as corresponding +//! type on the C side. As an example, consider this C header which +//! declares functions that create and destroy some kind of `Foo` +//! value: +//! +//! ```c +//! /* C header */ +//! +//! /* Returns ownership to the caller */ +//! struct Foo* foo_new(void); +//! +//! /* Takes ownership from the caller; no-op when invoked with null */ +//! void foo_delete(struct Foo*); +//! ``` +//! +//! These two functions might be implemented in Rust as follows. Here, the +//! `struct Foo*` type from C is translated to `Box`, which captures +//! the ownership constraints. Note also that the nullable argument to +//! `foo_delete` is represented in Rust as `Option>`, since `Box` +//! cannot be null. +//! +//! ``` +//! #[repr(C)] +//! pub struct Foo; +//! +//! #[no_mangle] +//! pub extern "C" fn foo_new() -> Box { +//! Box::new(Foo) +//! } +//! +//! #[no_mangle] +//! pub extern "C" fn foo_delete(_: Option>) {} +//! ``` +//! +//! Even though `Box` has the same representation and C ABI as a C pointer, +//! this does not mean that you can convert an arbitrary `T*` into a `Box` +//! and expect things to work. `Box` values will always be fully aligned, +//! non-null pointers. Moreover, the destructor for `Box` will attempt to +//! free the value with the global allocator. In general, the best practice +//! is to only use `Box` for pointers that originated from the global +//! allocator. +//! +//! **Important.** At least at present, you should avoid using +//! `Box` types for functions that are defined in C but invoked +//! from Rust. In those cases, you should directly mirror the C types +//! as closely as possible. Using types like `Box` where the C +//! definition is just using `T*` can lead to undefined behavior, as +//! described in [rust-lang/unsafe-code-guidelines#198][ucg#198]. +//! +//! # Considerations for unsafe code +//! +//! **Warning: This section is not normative and is subject to change, possibly +//! being relaxed in the future! It is a simplified summary of the rules +//! currently implemented in the compiler.** +//! +//! The aliasing rules for `Box` are the same as for `&mut T`. `Box` +//! asserts uniqueness over its content. Using raw pointers derived from a box +//! after that box has been mutated through, moved or borrowed as `&mut T` +//! is not allowed. For more guidance on working with box from unsafe code, see +//! [rust-lang/unsafe-code-guidelines#326][ucg#326]. +//! +//! +//! [ucg#198]: https://github.com/rust-lang/unsafe-code-guidelines/issues/198 +//! [ucg#326]: https://github.com/rust-lang/unsafe-code-guidelines/issues/326 +//! [dereferencing]: core::ops::Deref +//! [`Box::::from_raw(value)`]: Box::from_raw +//! [`Global`]: crate::alloc::Global +//! [`Layout`]: crate::alloc::Layout +//! [`Layout::for_value(&*value)`]: crate::alloc::Layout::for_value +//! [valid]: ptr#safety + +use core::any::Any; +use core::borrow; +use core::cmp::Ordering; +use core::convert::{From, TryFrom}; + +// use core::error::Error; +use core::fmt; +use core::future::Future; +use core::hash::{Hash, Hasher}; +#[cfg(not(no_global_oom_handling))] +use core::iter::FromIterator; +use core::iter::{FusedIterator, Iterator}; +use core::marker::Unpin; +use core::mem; +use core::ops::{Deref, DerefMut}; +use core::pin::Pin; +use core::ptr::{self, NonNull}; +use core::task::{Context, Poll}; + +use super::alloc::{AllocError, Allocator, Global, Layout}; +use super::raw_vec::RawVec; +#[cfg(not(no_global_oom_handling))] +use super::vec::Vec; +#[cfg(not(no_global_oom_handling))] +use alloc_crate::alloc::handle_alloc_error; + +/// A pointer type for heap allocation. +/// +/// See the [module-level documentation](../../std/boxed/index.html) for more. +pub struct Box(NonNull, A); + +// Safety: Box owns both T and A, so sending is safe if +// sending is safe for T and A. +unsafe impl Send for Box +where + T: Send, + A: Send, +{ +} + +// Safety: Box owns both T and A, so sharing is safe if +// sharing is safe for T and A. +unsafe impl Sync for Box +where + T: Sync, + A: Sync, +{ +} + +impl Box { + /// Allocates memory on the heap and then places `x` into it. + /// + /// This doesn't actually allocate if `T` is zero-sized. + /// + /// # Examples + /// + /// ``` + /// let five = Box::new(5); + /// ``` + #[cfg(all(not(no_global_oom_handling)))] + #[inline(always)] + #[must_use] + pub fn new(x: T) -> Self { + Self::new_in(x, Global) + } + + /// Constructs a new box with uninitialized contents. + /// + /// # Examples + /// + /// ``` + /// #![feature(new_uninit)] + /// + /// let mut five = Box::::new_uninit(); + /// + /// let five = unsafe { + /// // Deferred initialization: + /// five.as_mut_ptr().write(5); + /// + /// five.assume_init() + /// }; + /// + /// assert_eq!(*five, 5) + /// ``` + #[cfg(not(no_global_oom_handling))] + #[must_use] + #[inline(always)] + pub fn new_uninit() -> Box> { + Self::new_uninit_in(Global) + } + + /// Constructs a new `Box` with uninitialized contents, with the memory + /// being filled with `0` bytes. + /// + /// See [`MaybeUninit::zeroed`][zeroed] for examples of correct and incorrect usage + /// of this method. + /// + /// # Examples + /// + /// ``` + /// #![feature(new_uninit)] + /// + /// let zero = Box::::new_zeroed(); + /// let zero = unsafe { zero.assume_init() }; + /// + /// assert_eq!(*zero, 0) + /// ``` + /// + /// [zeroed]: mem::MaybeUninit::zeroed + #[cfg(not(no_global_oom_handling))] + #[must_use] + #[inline(always)] + pub fn new_zeroed() -> Box> { + Self::new_zeroed_in(Global) + } + + /// Constructs a new `Pin>`. If `T` does not implement [`Unpin`], then + /// `x` will be pinned in memory and unable to be moved. + /// + /// Constructing and pinning of the `Box` can also be done in two steps: `Box::pin(x)` + /// does the same as [Box::into_pin]\([Box::new]\(x)). Consider using + /// [`into_pin`](Box::into_pin) if you already have a `Box`, or if you want to + /// construct a (pinned) `Box` in a different way than with [`Box::new`]. + #[cfg(not(no_global_oom_handling))] + #[must_use] + #[inline(always)] + pub fn pin(x: T) -> Pin> { + Box::new(x).into() + } + + /// Allocates memory on the heap then places `x` into it, + /// returning an error if the allocation fails + /// + /// This doesn't actually allocate if `T` is zero-sized. + /// + /// # Examples + /// + /// ``` + /// #![feature(allocator_api)] + /// + /// let five = Box::try_new(5)?; + /// # Ok::<(), std::alloc::AllocError>(()) + /// ``` + #[inline(always)] + pub fn try_new(x: T) -> Result { + Self::try_new_in(x, Global) + } + + /// Constructs a new box with uninitialized contents on the heap, + /// returning an error if the allocation fails + /// + /// # Examples + /// + /// ``` + /// #![feature(allocator_api, new_uninit)] + /// + /// let mut five = Box::::try_new_uninit()?; + /// + /// let five = unsafe { + /// // Deferred initialization: + /// five.as_mut_ptr().write(5); + /// + /// five.assume_init() + /// }; + /// + /// assert_eq!(*five, 5); + /// # Ok::<(), std::alloc::AllocError>(()) + /// ``` + #[inline(always)] + pub fn try_new_uninit() -> Result>, AllocError> { + Box::try_new_uninit_in(Global) + } + + /// Constructs a new `Box` with uninitialized contents, with the memory + /// being filled with `0` bytes on the heap + /// + /// See [`MaybeUninit::zeroed`][zeroed] for examples of correct and incorrect usage + /// of this method. + /// + /// # Examples + /// + /// ``` + /// #![feature(allocator_api, new_uninit)] + /// + /// let zero = Box::::try_new_zeroed()?; + /// let zero = unsafe { zero.assume_init() }; + /// + /// assert_eq!(*zero, 0); + /// # Ok::<(), std::alloc::AllocError>(()) + /// ``` + /// + /// [zeroed]: mem::MaybeUninit::zeroed + #[inline(always)] + pub fn try_new_zeroed() -> Result>, AllocError> { + Box::try_new_zeroed_in(Global) + } +} + +impl Box { + /// Allocates memory in the given allocator then places `x` into it. + /// + /// This doesn't actually allocate if `T` is zero-sized. + /// + /// # Examples + /// + /// ``` + /// #![feature(allocator_api)] + /// + /// use std::alloc::System; + /// + /// let five = Box::new_in(5, System); + /// ``` + #[cfg(not(no_global_oom_handling))] + #[must_use] + #[inline(always)] + pub fn new_in(x: T, alloc: A) -> Self + where + A: Allocator, + { + let mut boxed = Self::new_uninit_in(alloc); + unsafe { + boxed.as_mut_ptr().write(x); + boxed.assume_init() + } + } + + /// Allocates memory in the given allocator then places `x` into it, + /// returning an error if the allocation fails + /// + /// This doesn't actually allocate if `T` is zero-sized. + /// + /// # Examples + /// + /// ``` + /// #![feature(allocator_api)] + /// + /// use std::alloc::System; + /// + /// let five = Box::try_new_in(5, System)?; + /// # Ok::<(), std::alloc::AllocError>(()) + /// ``` + #[inline(always)] + pub fn try_new_in(x: T, alloc: A) -> Result + where + A: Allocator, + { + let mut boxed = Self::try_new_uninit_in(alloc)?; + unsafe { + boxed.as_mut_ptr().write(x); + Ok(boxed.assume_init()) + } + } + + /// Constructs a new box with uninitialized contents in the provided allocator. + /// + /// # Examples + /// + /// ``` + /// #![feature(allocator_api, new_uninit)] + /// + /// use std::alloc::System; + /// + /// let mut five = Box::::new_uninit_in(System); + /// + /// let five = unsafe { + /// // Deferred initialization: + /// five.as_mut_ptr().write(5); + /// + /// five.assume_init() + /// }; + /// + /// assert_eq!(*five, 5) + /// ``` + #[cfg(not(no_global_oom_handling))] + #[must_use] + // #[unstable(feature = "new_uninit", issue = "63291")] + #[inline(always)] + pub fn new_uninit_in(alloc: A) -> Box, A> + where + A: Allocator, + { + let layout = Layout::new::>(); + // NOTE: Prefer match over unwrap_or_else since closure sometimes not inlineable. + // That would make code size bigger. + match Box::try_new_uninit_in(alloc) { + Ok(m) => m, + Err(_) => handle_alloc_error(layout), + } + } + + /// Constructs a new box with uninitialized contents in the provided allocator, + /// returning an error if the allocation fails + /// + /// # Examples + /// + /// ``` + /// #![feature(allocator_api, new_uninit)] + /// + /// use std::alloc::System; + /// + /// let mut five = Box::::try_new_uninit_in(System)?; + /// + /// let five = unsafe { + /// // Deferred initialization: + /// five.as_mut_ptr().write(5); + /// + /// five.assume_init() + /// }; + /// + /// assert_eq!(*five, 5); + /// # Ok::<(), std::alloc::AllocError>(()) + /// ``` + #[inline(always)] + pub fn try_new_uninit_in(alloc: A) -> Result, A>, AllocError> + where + A: Allocator, + { + let layout = Layout::new::>(); + let ptr = alloc.allocate(layout)?.cast(); + unsafe { Ok(Box::from_raw_in(ptr.as_ptr(), alloc)) } + } + + /// Constructs a new `Box` with uninitialized contents, with the memory + /// being filled with `0` bytes in the provided allocator. + /// + /// See [`MaybeUninit::zeroed`][zeroed] for examples of correct and incorrect usage + /// of this method. + /// + /// # Examples + /// + /// ``` + /// #![feature(allocator_api, new_uninit)] + /// + /// use std::alloc::System; + /// + /// let zero = Box::::new_zeroed_in(System); + /// let zero = unsafe { zero.assume_init() }; + /// + /// assert_eq!(*zero, 0) + /// ``` + /// + /// [zeroed]: mem::MaybeUninit::zeroed + #[cfg(not(no_global_oom_handling))] + // #[unstable(feature = "new_uninit", issue = "63291")] + #[must_use] + #[inline(always)] + pub fn new_zeroed_in(alloc: A) -> Box, A> + where + A: Allocator, + { + let layout = Layout::new::>(); + // NOTE: Prefer match over unwrap_or_else since closure sometimes not inlineable. + // That would make code size bigger. + match Box::try_new_zeroed_in(alloc) { + Ok(m) => m, + Err(_) => handle_alloc_error(layout), + } + } + + /// Constructs a new `Box` with uninitialized contents, with the memory + /// being filled with `0` bytes in the provided allocator, + /// returning an error if the allocation fails, + /// + /// See [`MaybeUninit::zeroed`][zeroed] for examples of correct and incorrect usage + /// of this method. + /// + /// # Examples + /// + /// ``` + /// #![feature(allocator_api, new_uninit)] + /// + /// use std::alloc::System; + /// + /// let zero = Box::::try_new_zeroed_in(System)?; + /// let zero = unsafe { zero.assume_init() }; + /// + /// assert_eq!(*zero, 0); + /// # Ok::<(), std::alloc::AllocError>(()) + /// ``` + /// + /// [zeroed]: mem::MaybeUninit::zeroed + #[inline(always)] + pub fn try_new_zeroed_in(alloc: A) -> Result, A>, AllocError> + where + A: Allocator, + { + let layout = Layout::new::>(); + let ptr = alloc.allocate_zeroed(layout)?.cast(); + unsafe { Ok(Box::from_raw_in(ptr.as_ptr(), alloc)) } + } + + /// Constructs a new `Pin>`. If `T` does not implement [`Unpin`], then + /// `x` will be pinned in memory and unable to be moved. + /// + /// Constructing and pinning of the `Box` can also be done in two steps: `Box::pin_in(x, alloc)` + /// does the same as [Box::into_pin]\([Box::new_in]\(x, alloc)). Consider using + /// [`into_pin`](Box::into_pin) if you already have a `Box`, or if you want to + /// construct a (pinned) `Box` in a different way than with [`Box::new_in`]. + #[cfg(not(no_global_oom_handling))] + #[must_use] + #[inline(always)] + pub fn pin_in(x: T, alloc: A) -> Pin + where + A: 'static + Allocator, + { + Self::into_pin(Self::new_in(x, alloc)) + } + + /// Converts a `Box` into a `Box<[T]>` + /// + /// This conversion does not allocate on the heap and happens in place. + #[inline(always)] + pub fn into_boxed_slice(boxed: Self) -> Box<[T], A> { + let (raw, alloc) = Box::into_raw_with_allocator(boxed); + unsafe { Box::from_raw_in(raw as *mut [T; 1], alloc) } + } + + /// Consumes the `Box`, returning the wrapped value. + /// + /// # Examples + /// + /// ``` + /// #![feature(box_into_inner)] + /// + /// let c = Box::new(5); + /// + /// assert_eq!(Box::into_inner(c), 5); + /// ``` + #[inline(always)] + pub fn into_inner(boxed: Self) -> T { + let ptr = boxed.0; + let unboxed = unsafe { ptr.as_ptr().read() }; + unsafe { boxed.1.deallocate(ptr.cast(), Layout::new::()) }; + unboxed + } +} + +impl Box<[T]> { + /// Constructs a new boxed slice with uninitialized contents. + /// + /// # Examples + /// + /// ``` + /// #![feature(new_uninit)] + /// + /// let mut values = Box::<[u32]>::new_uninit_slice(3); + /// + /// let values = unsafe { + /// // Deferred initialization: + /// values[0].as_mut_ptr().write(1); + /// values[1].as_mut_ptr().write(2); + /// values[2].as_mut_ptr().write(3); + /// + /// values.assume_init() + /// }; + /// + /// assert_eq!(*values, [1, 2, 3]) + /// ``` + #[cfg(not(no_global_oom_handling))] + #[must_use] + #[inline(always)] + pub fn new_uninit_slice(len: usize) -> Box<[mem::MaybeUninit]> { + unsafe { RawVec::with_capacity(len).into_box(len) } + } + + /// Constructs a new boxed slice with uninitialized contents, with the memory + /// being filled with `0` bytes. + /// + /// See [`MaybeUninit::zeroed`][zeroed] for examples of correct and incorrect usage + /// of this method. + /// + /// # Examples + /// + /// ``` + /// #![feature(new_uninit)] + /// + /// let values = Box::<[u32]>::new_zeroed_slice(3); + /// let values = unsafe { values.assume_init() }; + /// + /// assert_eq!(*values, [0, 0, 0]) + /// ``` + /// + /// [zeroed]: mem::MaybeUninit::zeroed + #[cfg(not(no_global_oom_handling))] + #[must_use] + #[inline(always)] + pub fn new_zeroed_slice(len: usize) -> Box<[mem::MaybeUninit]> { + unsafe { RawVec::with_capacity_zeroed(len).into_box(len) } + } + + /// Constructs a new boxed slice with uninitialized contents. Returns an error if + /// the allocation fails + /// + /// # Examples + /// + /// ``` + /// #![feature(allocator_api, new_uninit)] + /// + /// let mut values = Box::<[u32]>::try_new_uninit_slice(3)?; + /// let values = unsafe { + /// // Deferred initialization: + /// values[0].as_mut_ptr().write(1); + /// values[1].as_mut_ptr().write(2); + /// values[2].as_mut_ptr().write(3); + /// values.assume_init() + /// }; + /// + /// assert_eq!(*values, [1, 2, 3]); + /// # Ok::<(), std::alloc::AllocError>(()) + /// ``` + #[inline(always)] + pub fn try_new_uninit_slice(len: usize) -> Result]>, AllocError> { + unsafe { + let layout = match Layout::array::>(len) { + Ok(l) => l, + Err(_) => return Err(AllocError), + }; + let ptr = Global.allocate(layout)?; + Ok(RawVec::from_raw_parts_in(ptr.as_ptr() as *mut _, len, Global).into_box(len)) + } + } + + /// Constructs a new boxed slice with uninitialized contents, with the memory + /// being filled with `0` bytes. Returns an error if the allocation fails + /// + /// See [`MaybeUninit::zeroed`][zeroed] for examples of correct and incorrect usage + /// of this method. + /// + /// # Examples + /// + /// ``` + /// #![feature(allocator_api, new_uninit)] + /// + /// let values = Box::<[u32]>::try_new_zeroed_slice(3)?; + /// let values = unsafe { values.assume_init() }; + /// + /// assert_eq!(*values, [0, 0, 0]); + /// # Ok::<(), std::alloc::AllocError>(()) + /// ``` + /// + /// [zeroed]: mem::MaybeUninit::zeroed + #[inline(always)] + pub fn try_new_zeroed_slice(len: usize) -> Result]>, AllocError> { + unsafe { + let layout = match Layout::array::>(len) { + Ok(l) => l, + Err(_) => return Err(AllocError), + }; + let ptr = Global.allocate_zeroed(layout)?; + Ok(RawVec::from_raw_parts_in(ptr.as_ptr() as *mut _, len, Global).into_box(len)) + } + } +} + +impl Box<[T], A> { + /// Constructs a new boxed slice with uninitialized contents in the provided allocator. + /// + /// # Examples + /// + /// ``` + /// #![feature(allocator_api, new_uninit)] + /// + /// use std::alloc::System; + /// + /// let mut values = Box::<[u32], _>::new_uninit_slice_in(3, System); + /// + /// let values = unsafe { + /// // Deferred initialization: + /// values[0].as_mut_ptr().write(1); + /// values[1].as_mut_ptr().write(2); + /// values[2].as_mut_ptr().write(3); + /// + /// values.assume_init() + /// }; + /// + /// assert_eq!(*values, [1, 2, 3]) + /// ``` + #[cfg(not(no_global_oom_handling))] + #[must_use] + #[inline(always)] + pub fn new_uninit_slice_in(len: usize, alloc: A) -> Box<[mem::MaybeUninit], A> { + unsafe { RawVec::with_capacity_in(len, alloc).into_box(len) } + } + + /// Constructs a new boxed slice with uninitialized contents in the provided allocator, + /// with the memory being filled with `0` bytes. + /// + /// See [`MaybeUninit::zeroed`][zeroed] for examples of correct and incorrect usage + /// of this method. + /// + /// # Examples + /// + /// ``` + /// #![feature(allocator_api, new_uninit)] + /// + /// use std::alloc::System; + /// + /// let values = Box::<[u32], _>::new_zeroed_slice_in(3, System); + /// let values = unsafe { values.assume_init() }; + /// + /// assert_eq!(*values, [0, 0, 0]) + /// ``` + /// + /// [zeroed]: mem::MaybeUninit::zeroed + #[cfg(not(no_global_oom_handling))] + #[must_use] + #[inline(always)] + pub fn new_zeroed_slice_in(len: usize, alloc: A) -> Box<[mem::MaybeUninit], A> { + unsafe { RawVec::with_capacity_zeroed_in(len, alloc).into_box(len) } + } + + pub fn into_vec(self) -> Vec + where + A: Allocator, + { + unsafe { + let len = self.len(); + let (b, alloc) = Box::into_raw_with_allocator(self); + Vec::from_raw_parts_in(b as *mut T, len, len, alloc) + } + } +} + +impl Box, A> { + /// Converts to `Box`. + /// + /// # Safety + /// + /// As with [`MaybeUninit::assume_init`], + /// it is up to the caller to guarantee that the value + /// really is in an initialized state. + /// Calling this when the content is not yet fully initialized + /// causes immediate undefined behavior. + /// + /// [`MaybeUninit::assume_init`]: mem::MaybeUninit::assume_init + /// + /// # Examples + /// + /// ``` + /// #![feature(new_uninit)] + /// + /// let mut five = Box::::new_uninit(); + /// + /// let five: Box = unsafe { + /// // Deferred initialization: + /// five.as_mut_ptr().write(5); + /// + /// five.assume_init() + /// }; + /// + /// assert_eq!(*five, 5) + /// ``` + #[inline(always)] + pub unsafe fn assume_init(self) -> Box { + let (raw, alloc) = Box::into_raw_with_allocator(self); + unsafe { Box::from_raw_in(raw as *mut T, alloc) } + } + + /// Writes the value and converts to `Box`. + /// + /// This method converts the box similarly to [`Box::assume_init`] but + /// writes `value` into it before conversion thus guaranteeing safety. + /// In some scenarios use of this method may improve performance because + /// the compiler may be able to optimize copying from stack. + /// + /// # Examples + /// + /// ``` + /// #![feature(new_uninit)] + /// + /// let big_box = Box::<[usize; 1024]>::new_uninit(); + /// + /// let mut array = [0; 1024]; + /// for (i, place) in array.iter_mut().enumerate() { + /// *place = i; + /// } + /// + /// // The optimizer may be able to elide this copy, so previous code writes + /// // to heap directly. + /// let big_box = Box::write(big_box, array); + /// + /// for (i, x) in big_box.iter().enumerate() { + /// assert_eq!(*x, i); + /// } + /// ``` + #[inline(always)] + pub fn write(mut boxed: Self, value: T) -> Box { + unsafe { + (*boxed).write(value); + boxed.assume_init() + } + } +} + +impl Box<[mem::MaybeUninit], A> { + /// Converts to `Box<[T], A>`. + /// + /// # Safety + /// + /// As with [`MaybeUninit::assume_init`], + /// it is up to the caller to guarantee that the values + /// really are in an initialized state. + /// Calling this when the content is not yet fully initialized + /// causes immediate undefined behavior. + /// + /// [`MaybeUninit::assume_init`]: mem::MaybeUninit::assume_init + /// + /// # Examples + /// + /// ``` + /// #![feature(new_uninit)] + /// + /// let mut values = Box::<[u32]>::new_uninit_slice(3); + /// + /// let values = unsafe { + /// // Deferred initialization: + /// values[0].as_mut_ptr().write(1); + /// values[1].as_mut_ptr().write(2); + /// values[2].as_mut_ptr().write(3); + /// + /// values.assume_init() + /// }; + /// + /// assert_eq!(*values, [1, 2, 3]) + /// ``` + #[inline(always)] + pub unsafe fn assume_init(self) -> Box<[T], A> { + let (raw, alloc) = Box::into_raw_with_allocator(self); + unsafe { Box::from_raw_in(raw as *mut [T], alloc) } + } +} + +impl Box { + /// Constructs a box from a raw pointer. + /// + /// After calling this function, the raw pointer is owned by the + /// resulting `Box`. Specifically, the `Box` destructor will call + /// the destructor of `T` and free the allocated memory. For this + /// to be safe, the memory must have been allocated in accordance + /// with the [memory layout] used by `Box` . + /// + /// # Safety + /// + /// This function is unsafe because improper use may lead to + /// memory problems. For example, a double-free may occur if the + /// function is called twice on the same raw pointer. + /// + /// The safety conditions are described in the [memory layout] section. + /// + /// # Examples + /// + /// Recreate a `Box` which was previously converted to a raw pointer + /// using [`Box::into_raw`]: + /// ``` + /// let x = Box::new(5); + /// let ptr = Box::into_raw(x); + /// let x = unsafe { Box::from_raw(ptr) }; + /// ``` + /// Manually create a `Box` from scratch by using the global allocator: + /// ``` + /// use std::alloc::{alloc, Layout}; + /// + /// unsafe { + /// let ptr = alloc(Layout::new::()) as *mut i32; + /// // In general .write is required to avoid attempting to destruct + /// // the (uninitialized) previous contents of `ptr`, though for this + /// // simple example `*ptr = 5` would have worked as well. + /// ptr.write(5); + /// let x = Box::from_raw(ptr); + /// } + /// ``` + /// + /// [memory layout]: self#memory-layout + /// [`Layout`]: crate::Layout + #[must_use = "call `drop(from_raw(ptr))` if you intend to drop the `Box`"] + #[inline(always)] + pub unsafe fn from_raw(raw: *mut T) -> Self { + unsafe { Self::from_raw_in(raw, Global) } + } +} + +impl Box { + /// Constructs a box from a raw pointer in the given allocator. + /// + /// After calling this function, the raw pointer is owned by the + /// resulting `Box`. Specifically, the `Box` destructor will call + /// the destructor of `T` and free the allocated memory. For this + /// to be safe, the memory must have been allocated in accordance + /// with the [memory layout] used by `Box` . + /// + /// # Safety + /// + /// This function is unsafe because improper use may lead to + /// memory problems. For example, a double-free may occur if the + /// function is called twice on the same raw pointer. + /// + /// + /// # Examples + /// + /// Recreate a `Box` which was previously converted to a raw pointer + /// using [`Box::into_raw_with_allocator`]: + /// ``` + /// use std::alloc::System; + /// # use allocator_api2::boxed::Box; + /// + /// let x = Box::new_in(5, System); + /// let (ptr, alloc) = Box::into_raw_with_allocator(x); + /// let x = unsafe { Box::from_raw_in(ptr, alloc) }; + /// ``` + /// Manually create a `Box` from scratch by using the system allocator: + /// ``` + /// use allocator_api2::alloc::{Allocator, Layout, System}; + /// # use allocator_api2::boxed::Box; + /// + /// unsafe { + /// let ptr = System.allocate(Layout::new::())?.as_ptr().cast::(); + /// // In general .write is required to avoid attempting to destruct + /// // the (uninitialized) previous contents of `ptr`, though for this + /// // simple example `*ptr = 5` would have worked as well. + /// ptr.write(5); + /// let x = Box::from_raw_in(ptr, System); + /// } + /// # Ok::<(), allocator_api2::alloc::AllocError>(()) + /// ``` + /// + /// [memory layout]: self#memory-layout + /// [`Layout`]: crate::Layout + #[inline(always)] + pub const unsafe fn from_raw_in(raw: *mut T, alloc: A) -> Self { + Box(unsafe { NonNull::new_unchecked(raw) }, alloc) + } + + /// Consumes the `Box`, returning a wrapped raw pointer. + /// + /// The pointer will be properly aligned and non-null. + /// + /// After calling this function, the caller is responsible for the + /// memory previously managed by the `Box`. In particular, the + /// caller should properly destroy `T` and release the memory, taking + /// into account the [memory layout] used by `Box`. The easiest way to + /// do this is to convert the raw pointer back into a `Box` with the + /// [`Box::from_raw`] function, allowing the `Box` destructor to perform + /// the cleanup. + /// + /// Note: this is an associated function, which means that you have + /// to call it as `Box::into_raw(b)` instead of `b.into_raw()`. This + /// is so that there is no conflict with a method on the inner type. + /// + /// # Examples + /// Converting the raw pointer back into a `Box` with [`Box::from_raw`] + /// for automatic cleanup: + /// ``` + /// let x = Box::new(String::from("Hello")); + /// let ptr = Box::into_raw(x); + /// let x = unsafe { Box::from_raw(ptr) }; + /// ``` + /// Manual cleanup by explicitly running the destructor and deallocating + /// the memory: + /// ``` + /// use std::alloc::{dealloc, Layout}; + /// use std::ptr; + /// + /// let x = Box::new(String::from("Hello")); + /// let p = Box::into_raw(x); + /// unsafe { + /// ptr::drop_in_place(p); + /// dealloc(p as *mut u8, Layout::new::()); + /// } + /// ``` + /// + /// [memory layout]: self#memory-layout + #[inline(always)] + pub fn into_raw(b: Self) -> *mut T { + Self::into_raw_with_allocator(b).0 + } + + /// Consumes the `Box`, returning a wrapped raw pointer and the allocator. + /// + /// The pointer will be properly aligned and non-null. + /// + /// After calling this function, the caller is responsible for the + /// memory previously managed by the `Box`. In particular, the + /// caller should properly destroy `T` and release the memory, taking + /// into account the [memory layout] used by `Box`. The easiest way to + /// do this is to convert the raw pointer back into a `Box` with the + /// [`Box::from_raw_in`] function, allowing the `Box` destructor to perform + /// the cleanup. + /// + /// Note: this is an associated function, which means that you have + /// to call it as `Box::into_raw_with_allocator(b)` instead of `b.into_raw_with_allocator()`. This + /// is so that there is no conflict with a method on the inner type. + /// + /// # Examples + /// Converting the raw pointer back into a `Box` with [`Box::from_raw_in`] + /// for automatic cleanup: + /// ``` + /// #![feature(allocator_api)] + /// + /// use std::alloc::System; + /// + /// let x = Box::new_in(String::from("Hello"), System); + /// let (ptr, alloc) = Box::into_raw_with_allocator(x); + /// let x = unsafe { Box::from_raw_in(ptr, alloc) }; + /// ``` + /// Manual cleanup by explicitly running the destructor and deallocating + /// the memory: + /// ``` + /// #![feature(allocator_api)] + /// + /// use std::alloc::{Allocator, Layout, System}; + /// use std::ptr::{self, NonNull}; + /// + /// let x = Box::new_in(String::from("Hello"), System); + /// let (ptr, alloc) = Box::into_raw_with_allocator(x); + /// unsafe { + /// ptr::drop_in_place(ptr); + /// let non_null = NonNull::new_unchecked(ptr); + /// alloc.deallocate(non_null.cast(), Layout::new::()); + /// } + /// ``` + /// + /// [memory layout]: self#memory-layout + #[inline(always)] + pub fn into_raw_with_allocator(b: Self) -> (*mut T, A) { + let (leaked, alloc) = Box::into_non_null(b); + (leaked.as_ptr(), alloc) + } + + #[inline(always)] + pub fn into_non_null(b: Self) -> (NonNull, A) { + // Box is recognized as a "unique pointer" by Stacked Borrows, but internally it is a + // raw pointer for the type system. Turning it directly into a raw pointer would not be + // recognized as "releasing" the unique pointer to permit aliased raw accesses, + // so all raw pointer methods have to go through `Box::leak`. Turning *that* to a raw pointer + // behaves correctly. + let alloc = unsafe { ptr::read(&b.1) }; + (NonNull::from(Box::leak(b)), alloc) + } + + /// Returns a reference to the underlying allocator. + /// + /// Note: this is an associated function, which means that you have + /// to call it as `Box::allocator(&b)` instead of `b.allocator()`. This + /// is so that there is no conflict with a method on the inner type. + #[inline(always)] + pub const fn allocator(b: &Self) -> &A { + &b.1 + } + + /// Consumes and leaks the `Box`, returning a mutable reference, + /// `&'a mut T`. Note that the type `T` must outlive the chosen lifetime + /// `'a`. If the type has only static references, or none at all, then this + /// may be chosen to be `'static`. + /// + /// This function is mainly useful for data that lives for the remainder of + /// the program's life. Dropping the returned reference will cause a memory + /// leak. If this is not acceptable, the reference should first be wrapped + /// with the [`Box::from_raw`] function producing a `Box`. This `Box` can + /// then be dropped which will properly destroy `T` and release the + /// allocated memory. + /// + /// Note: this is an associated function, which means that you have + /// to call it as `Box::leak(b)` instead of `b.leak()`. This + /// is so that there is no conflict with a method on the inner type. + /// + /// # Examples + /// + /// Simple usage: + /// + /// ``` + /// let x = Box::new(41); + /// let static_ref: &'static mut usize = Box::leak(x); + /// *static_ref += 1; + /// assert_eq!(*static_ref, 42); + /// ``` + /// + /// Unsized data: + /// + /// ``` + /// let x = vec![1, 2, 3].into_boxed_slice(); + /// let static_ref = Box::leak(x); + /// static_ref[0] = 4; + /// assert_eq!(*static_ref, [4, 2, 3]); + /// ``` + #[inline(always)] + fn leak<'a>(b: Self) -> &'a mut T + where + A: 'a, + { + unsafe { &mut *mem::ManuallyDrop::new(b).0.as_ptr() } + } + + /// Converts a `Box` into a `Pin>`. If `T` does not implement [`Unpin`], then + /// `*boxed` will be pinned in memory and unable to be moved. + /// + /// This conversion does not allocate on the heap and happens in place. + /// + /// This is also available via [`From`]. + /// + /// Constructing and pinning a `Box` with Box::into_pin([Box::new]\(x)) + /// can also be written more concisely using [Box::pin]\(x). + /// This `into_pin` method is useful if you already have a `Box`, or you are + /// constructing a (pinned) `Box` in a different way than with [`Box::new`]. + /// + /// # Notes + /// + /// It's not recommended that crates add an impl like `From> for Pin`, + /// as it'll introduce an ambiguity when calling `Pin::from`. + /// A demonstration of such a poor impl is shown below. + /// + /// ```compile_fail + /// # use std::pin::Pin; + /// struct Foo; // A type defined in this crate. + /// impl From> for Pin { + /// fn from(_: Box<()>) -> Pin { + /// Pin::new(Foo) + /// } + /// } + /// + /// let foo = Box::new(()); + /// let bar = Pin::from(foo); + /// ``` + #[inline(always)] + pub fn into_pin(boxed: Self) -> Pin + where + A: 'static, + { + // It's not possible to move or replace the insides of a `Pin>` + // when `T: !Unpin`, so it's safe to pin it directly without any + // additional requirements. + unsafe { Pin::new_unchecked(boxed) } + } +} + +impl Drop for Box { + #[inline(always)] + fn drop(&mut self) { + let layout = Layout::for_value::(&**self); + unsafe { + ptr::drop_in_place(self.0.as_mut()); + self.1.deallocate(self.0.cast(), layout); + } + } +} + +#[cfg(not(no_global_oom_handling))] +impl Default for Box { + /// Creates a `Box`, with the `Default` value for T. + #[inline(always)] + fn default() -> Self { + Box::new(T::default()) + } +} + +impl Default for Box<[T], A> { + #[inline(always)] + fn default() -> Self { + let ptr: NonNull<[T]> = NonNull::<[T; 0]>::dangling(); + Box(ptr, A::default()) + } +} + +impl Default for Box { + #[inline(always)] + fn default() -> Self { + // SAFETY: This is the same as `Unique::cast` but with an unsized `U = str`. + let ptr: NonNull = unsafe { + let bytes: NonNull<[u8]> = NonNull::<[u8; 0]>::dangling(); + NonNull::new_unchecked(bytes.as_ptr() as *mut str) + }; + Box(ptr, A::default()) + } +} + +#[cfg(not(no_global_oom_handling))] +impl Clone for Box { + /// Returns a new box with a `clone()` of this box's contents. + /// + /// # Examples + /// + /// ``` + /// let x = Box::new(5); + /// let y = x.clone(); + /// + /// // The value is the same + /// assert_eq!(x, y); + /// + /// // But they are unique objects + /// assert_ne!(&*x as *const i32, &*y as *const i32); + /// ``` + #[inline(always)] + fn clone(&self) -> Self { + // Pre-allocate memory to allow writing the cloned value directly. + let mut boxed = Self::new_uninit_in(self.1.clone()); + unsafe { + boxed.write((**self).clone()); + boxed.assume_init() + } + } + + /// Copies `source`'s contents into `self` without creating a new allocation. + /// + /// # Examples + /// + /// ``` + /// let x = Box::new(5); + /// let mut y = Box::new(10); + /// let yp: *const i32 = &*y; + /// + /// y.clone_from(&x); + /// + /// // The value is the same + /// assert_eq!(x, y); + /// + /// // And no allocation occurred + /// assert_eq!(yp, &*y); + /// ``` + #[inline(always)] + fn clone_from(&mut self, source: &Self) { + (**self).clone_from(&(**source)); + } +} + +#[cfg(not(no_global_oom_handling))] +impl Clone for Box { + #[inline(always)] + fn clone(&self) -> Self { + // this makes a copy of the data + let buf: Box<[u8]> = self.as_bytes().into(); + unsafe { Box::from_raw(Box::into_raw(buf) as *mut str) } + } +} + +impl PartialEq for Box { + #[inline(always)] + fn eq(&self, other: &Self) -> bool { + PartialEq::eq(&**self, &**other) + } + #[inline(always)] + fn ne(&self, other: &Self) -> bool { + PartialEq::ne(&**self, &**other) + } +} + +impl PartialOrd for Box { + #[inline(always)] + fn partial_cmp(&self, other: &Self) -> Option { + PartialOrd::partial_cmp(&**self, &**other) + } + #[inline(always)] + fn lt(&self, other: &Self) -> bool { + PartialOrd::lt(&**self, &**other) + } + #[inline(always)] + fn le(&self, other: &Self) -> bool { + PartialOrd::le(&**self, &**other) + } + #[inline(always)] + fn ge(&self, other: &Self) -> bool { + PartialOrd::ge(&**self, &**other) + } + #[inline(always)] + fn gt(&self, other: &Self) -> bool { + PartialOrd::gt(&**self, &**other) + } +} + +impl Ord for Box { + #[inline(always)] + fn cmp(&self, other: &Self) -> Ordering { + Ord::cmp(&**self, &**other) + } +} + +impl Eq for Box {} + +impl Hash for Box { + #[inline(always)] + fn hash(&self, state: &mut H) { + (**self).hash(state); + } +} + +impl Hasher for Box { + #[inline(always)] + fn finish(&self) -> u64 { + (**self).finish() + } + #[inline(always)] + fn write(&mut self, bytes: &[u8]) { + (**self).write(bytes) + } + #[inline(always)] + fn write_u8(&mut self, i: u8) { + (**self).write_u8(i) + } + #[inline(always)] + fn write_u16(&mut self, i: u16) { + (**self).write_u16(i) + } + #[inline(always)] + fn write_u32(&mut self, i: u32) { + (**self).write_u32(i) + } + #[inline(always)] + fn write_u64(&mut self, i: u64) { + (**self).write_u64(i) + } + #[inline(always)] + fn write_u128(&mut self, i: u128) { + (**self).write_u128(i) + } + #[inline(always)] + fn write_usize(&mut self, i: usize) { + (**self).write_usize(i) + } + #[inline(always)] + fn write_i8(&mut self, i: i8) { + (**self).write_i8(i) + } + #[inline(always)] + fn write_i16(&mut self, i: i16) { + (**self).write_i16(i) + } + #[inline(always)] + fn write_i32(&mut self, i: i32) { + (**self).write_i32(i) + } + #[inline(always)] + fn write_i64(&mut self, i: i64) { + (**self).write_i64(i) + } + #[inline(always)] + fn write_i128(&mut self, i: i128) { + (**self).write_i128(i) + } + #[inline(always)] + fn write_isize(&mut self, i: isize) { + (**self).write_isize(i) + } +} + +#[cfg(not(no_global_oom_handling))] +impl From for Box { + /// Converts a `T` into a `Box` + /// + /// The conversion allocates on the heap and moves `t` + /// from the stack into it. + /// + /// # Examples + /// + /// ```rust + /// let x = 5; + /// let boxed = Box::new(5); + /// + /// assert_eq!(Box::from(x), boxed); + /// ``` + #[inline(always)] + fn from(t: T) -> Self { + Box::new(t) + } +} + +impl From> for Pin> +where + A: 'static, +{ + /// Converts a `Box` into a `Pin>`. If `T` does not implement [`Unpin`], then + /// `*boxed` will be pinned in memory and unable to be moved. + /// + /// This conversion does not allocate on the heap and happens in place. + /// + /// This is also available via [`Box::into_pin`]. + /// + /// Constructing and pinning a `Box` with >>::from([Box::new]\(x)) + /// can also be written more concisely using [Box::pin]\(x). + /// This `From` implementation is useful if you already have a `Box`, or you are + /// constructing a (pinned) `Box` in a different way than with [`Box::new`]. + #[inline(always)] + fn from(boxed: Box) -> Self { + Box::into_pin(boxed) + } +} + +#[cfg(not(no_global_oom_handling))] +impl From<&[T]> for Box<[T], A> { + /// Converts a `&[T]` into a `Box<[T]>` + /// + /// This conversion allocates on the heap + /// and performs a copy of `slice` and its contents. + /// + /// # Examples + /// ```rust + /// // create a &[u8] which will be used to create a Box<[u8]> + /// let slice: &[u8] = &[104, 101, 108, 108, 111]; + /// let boxed_slice: Box<[u8]> = Box::from(slice); + /// + /// println!("{boxed_slice:?}"); + /// ``` + #[inline(always)] + fn from(slice: &[T]) -> Box<[T], A> { + let len = slice.len(); + let buf = RawVec::with_capacity_in(len, A::default()); + unsafe { + ptr::copy_nonoverlapping(slice.as_ptr(), buf.ptr(), len); + buf.into_box(slice.len()).assume_init() + } + } +} + +#[cfg(not(no_global_oom_handling))] +impl From<&str> for Box { + /// Converts a `&str` into a `Box` + /// + /// This conversion allocates on the heap + /// and performs a copy of `s`. + /// + /// # Examples + /// + /// ```rust + /// let boxed: Box = Box::from("hello"); + /// println!("{boxed}"); + /// ``` + #[inline(always)] + fn from(s: &str) -> Box { + let (raw, alloc) = Box::into_raw_with_allocator(Box::<[u8], A>::from(s.as_bytes())); + unsafe { Box::from_raw_in(raw as *mut str, alloc) } + } +} + +impl From> for Box<[u8], A> { + /// Converts a `Box` into a `Box<[u8]>` + /// + /// This conversion does not allocate on the heap and happens in place. + /// + /// # Examples + /// ```rust + /// // create a Box which will be used to create a Box<[u8]> + /// let boxed: Box = Box::from("hello"); + /// let boxed_str: Box<[u8]> = Box::from(boxed); + /// + /// // create a &[u8] which will be used to create a Box<[u8]> + /// let slice: &[u8] = &[104, 101, 108, 108, 111]; + /// let boxed_slice = Box::from(slice); + /// + /// assert_eq!(boxed_slice, boxed_str); + /// ``` + #[inline(always)] + fn from(s: Box) -> Self { + let (raw, alloc) = Box::into_raw_with_allocator(s); + unsafe { Box::from_raw_in(raw as *mut [u8], alloc) } + } +} + +impl Box<[T; N], A> { + #[inline(always)] + pub fn slice(b: Self) -> Box<[T], A> { + let (ptr, alloc) = Box::into_raw_with_allocator(b); + unsafe { Box::from_raw_in(ptr, alloc) } + } + + pub fn into_vec(self) -> Vec + where + A: Allocator, + { + unsafe { + let (b, alloc) = Box::into_raw_with_allocator(self); + Vec::from_raw_parts_in(b as *mut T, N, N, alloc) + } + } +} + +#[cfg(not(no_global_oom_handling))] +impl From<[T; N]> for Box<[T]> { + /// Converts a `[T; N]` into a `Box<[T]>` + /// + /// This conversion moves the array to newly heap-allocated memory. + /// + /// # Examples + /// + /// ```rust + /// let boxed: Box<[u8]> = Box::from([4, 2]); + /// println!("{boxed:?}"); + /// ``` + #[inline(always)] + fn from(array: [T; N]) -> Box<[T]> { + Box::slice(Box::new(array)) + } +} + +impl TryFrom> for Box<[T; N], A> { + type Error = Box<[T], A>; + + /// Attempts to convert a `Box<[T]>` into a `Box<[T; N]>`. + /// + /// The conversion occurs in-place and does not require a + /// new memory allocation. + /// + /// # Errors + /// + /// Returns the old `Box<[T]>` in the `Err` variant if + /// `boxed_slice.len()` does not equal `N`. + #[inline(always)] + fn try_from(boxed_slice: Box<[T], A>) -> Result { + if boxed_slice.len() == N { + let (ptr, alloc) = Box::into_raw_with_allocator(boxed_slice); + Ok(unsafe { Box::from_raw_in(ptr as *mut [T; N], alloc) }) + } else { + Err(boxed_slice) + } + } +} + +impl Box { + /// Attempt to downcast the box to a concrete type. + /// + /// # Examples + /// + /// ``` + /// use std::any::Any; + /// + /// fn print_if_string(value: Box) { + /// if let Ok(string) = value.downcast::() { + /// println!("String ({}): {}", string.len(), string); + /// } + /// } + /// + /// let my_string = "Hello World".to_string(); + /// print_if_string(Box::new(my_string)); + /// print_if_string(Box::new(0i8)); + /// ``` + #[inline(always)] + pub fn downcast(self) -> Result, Self> { + if self.is::() { + unsafe { Ok(self.downcast_unchecked::()) } + } else { + Err(self) + } + } + + /// Downcasts the box to a concrete type. + /// + /// For a safe alternative see [`downcast`]. + /// + /// # Examples + /// + /// ``` + /// #![feature(downcast_unchecked)] + /// + /// use std::any::Any; + /// + /// let x: Box = Box::new(1_usize); + /// + /// unsafe { + /// assert_eq!(*x.downcast_unchecked::(), 1); + /// } + /// ``` + /// + /// # Safety + /// + /// The contained value must be of type `T`. Calling this method + /// with the incorrect type is *undefined behavior*. + /// + /// [`downcast`]: Self::downcast + #[inline(always)] + pub unsafe fn downcast_unchecked(self) -> Box { + debug_assert!(self.is::()); + unsafe { + let (raw, alloc): (*mut dyn Any, _) = Box::into_raw_with_allocator(self); + Box::from_raw_in(raw as *mut T, alloc) + } + } +} + +impl Box { + /// Attempt to downcast the box to a concrete type. + /// + /// # Examples + /// + /// ``` + /// use std::any::Any; + /// + /// fn print_if_string(value: Box) { + /// if let Ok(string) = value.downcast::() { + /// println!("String ({}): {}", string.len(), string); + /// } + /// } + /// + /// let my_string = "Hello World".to_string(); + /// print_if_string(Box::new(my_string)); + /// print_if_string(Box::new(0i8)); + /// ``` + #[inline(always)] + pub fn downcast(self) -> Result, Self> { + if self.is::() { + unsafe { Ok(self.downcast_unchecked::()) } + } else { + Err(self) + } + } + + /// Downcasts the box to a concrete type. + /// + /// For a safe alternative see [`downcast`]. + /// + /// # Examples + /// + /// ``` + /// #![feature(downcast_unchecked)] + /// + /// use std::any::Any; + /// + /// let x: Box = Box::new(1_usize); + /// + /// unsafe { + /// assert_eq!(*x.downcast_unchecked::(), 1); + /// } + /// ``` + /// + /// # Safety + /// + /// The contained value must be of type `T`. Calling this method + /// with the incorrect type is *undefined behavior*. + /// + /// [`downcast`]: Self::downcast + #[inline(always)] + pub unsafe fn downcast_unchecked(self) -> Box { + debug_assert!(self.is::()); + unsafe { + let (raw, alloc): (*mut (dyn Any + Send), _) = Box::into_raw_with_allocator(self); + Box::from_raw_in(raw as *mut T, alloc) + } + } +} + +impl Box { + /// Attempt to downcast the box to a concrete type. + /// + /// # Examples + /// + /// ``` + /// use std::any::Any; + /// + /// fn print_if_string(value: Box) { + /// if let Ok(string) = value.downcast::() { + /// println!("String ({}): {}", string.len(), string); + /// } + /// } + /// + /// let my_string = "Hello World".to_string(); + /// print_if_string(Box::new(my_string)); + /// print_if_string(Box::new(0i8)); + /// ``` + #[inline(always)] + pub fn downcast(self) -> Result, Self> { + if self.is::() { + unsafe { Ok(self.downcast_unchecked::()) } + } else { + Err(self) + } + } + + /// Downcasts the box to a concrete type. + /// + /// For a safe alternative see [`downcast`]. + /// + /// # Examples + /// + /// ``` + /// #![feature(downcast_unchecked)] + /// + /// use std::any::Any; + /// + /// let x: Box = Box::new(1_usize); + /// + /// unsafe { + /// assert_eq!(*x.downcast_unchecked::(), 1); + /// } + /// ``` + /// + /// # Safety + /// + /// The contained value must be of type `T`. Calling this method + /// with the incorrect type is *undefined behavior*. + /// + /// [`downcast`]: Self::downcast + #[inline(always)] + pub unsafe fn downcast_unchecked(self) -> Box { + debug_assert!(self.is::()); + unsafe { + let (raw, alloc): (*mut (dyn Any + Send + Sync), _) = + Box::into_raw_with_allocator(self); + Box::from_raw_in(raw as *mut T, alloc) + } + } +} + +impl fmt::Display for Box { + #[inline(always)] + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + fmt::Display::fmt(&**self, f) + } +} + +impl fmt::Debug for Box { + #[inline(always)] + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + fmt::Debug::fmt(&**self, f) + } +} + +impl fmt::Pointer for Box { + #[inline(always)] + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + // It's not possible to extract the inner Uniq directly from the Box, + // instead we cast it to a *const which aliases the Unique + let ptr: *const T = &**self; + fmt::Pointer::fmt(&ptr, f) + } +} + +impl Deref for Box { + type Target = T; + + #[inline(always)] + fn deref(&self) -> &T { + unsafe { self.0.as_ref() } + } +} + +impl DerefMut for Box { + #[inline(always)] + fn deref_mut(&mut self) -> &mut T { + unsafe { self.0.as_mut() } + } +} + +impl Iterator for Box { + type Item = I::Item; + + #[inline(always)] + fn next(&mut self) -> Option { + (**self).next() + } + + #[inline(always)] + fn size_hint(&self) -> (usize, Option) { + (**self).size_hint() + } + + #[inline(always)] + fn nth(&mut self, n: usize) -> Option { + (**self).nth(n) + } + + #[inline(always)] + fn last(self) -> Option { + BoxIter::last(self) + } +} + +trait BoxIter { + type Item; + fn last(self) -> Option; +} + +impl BoxIter for Box { + type Item = I::Item; + + #[inline(always)] + fn last(self) -> Option { + #[inline(always)] + fn some(_: Option, x: T) -> Option { + Some(x) + } + + self.fold(None, some) + } +} + +impl DoubleEndedIterator for Box { + #[inline(always)] + fn next_back(&mut self) -> Option { + (**self).next_back() + } + #[inline(always)] + fn nth_back(&mut self, n: usize) -> Option { + (**self).nth_back(n) + } +} + +impl ExactSizeIterator for Box { + #[inline(always)] + fn len(&self) -> usize { + (**self).len() + } +} + +impl FusedIterator for Box {} + +#[cfg(not(no_global_oom_handling))] +impl FromIterator for Box<[I]> { + #[inline(always)] + fn from_iter>(iter: T) -> Self { + iter.into_iter().collect::>().into_boxed_slice() + } +} + +#[cfg(not(no_global_oom_handling))] +impl Clone for Box<[T], A> { + #[inline(always)] + fn clone(&self) -> Self { + let alloc = Box::allocator(self).clone(); + let mut vec = Vec::with_capacity_in(self.len(), alloc); + vec.extend_from_slice(self); + vec.into_boxed_slice() + } + + #[inline(always)] + fn clone_from(&mut self, other: &Self) { + if self.len() == other.len() { + self.clone_from_slice(other); + } else { + *self = other.clone(); + } + } +} + +impl borrow::Borrow for Box { + #[inline(always)] + fn borrow(&self) -> &T { + self + } +} + +impl borrow::BorrowMut for Box { + #[inline(always)] + fn borrow_mut(&mut self) -> &mut T { + self + } +} + +impl AsRef for Box { + #[inline(always)] + fn as_ref(&self) -> &T { + self + } +} + +impl AsMut for Box { + #[inline(always)] + fn as_mut(&mut self) -> &mut T { + self + } +} + +/* Nota bene + * + * We could have chosen not to add this impl, and instead have written a + * function of Pin> to Pin. Such a function would not be sound, + * because Box implements Unpin even when T does not, as a result of + * this impl. + * + * We chose this API instead of the alternative for a few reasons: + * - Logically, it is helpful to understand pinning in regard to the + * memory region being pointed to. For this reason none of the + * standard library pointer types support projecting through a pin + * (Box is the only pointer type in std for which this would be + * safe.) + * - It is in practice very useful to have Box be unconditionally + * Unpin because of trait objects, for which the structural auto + * trait functionality does not apply (e.g., Box would + * otherwise not be Unpin). + * + * Another type with the same semantics as Box but only a conditional + * implementation of `Unpin` (where `T: Unpin`) would be valid/safe, and + * could have a method to project a Pin from it. + */ +impl Unpin for Box where A: 'static {} + +impl Future for Box +where + A: 'static, +{ + type Output = F::Output; + + #[inline(always)] + fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + F::poll(Pin::new(&mut *self), cx) + } +} + +#[cfg(feature = "std")] +mod error { + use std::error::Error; + + use super::Box; + + #[cfg(not(no_global_oom_handling))] + impl<'a, E: Error + 'a> From for Box { + /// Converts a type of [`Error`] into a box of dyn [`Error`]. + /// + /// # Examples + /// + /// ``` + /// use std::error::Error; + /// use std::fmt; + /// use std::mem; + /// + /// #[derive(Debug)] + /// struct AnError; + /// + /// impl fmt::Display for AnError { + /// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + /// write!(f, "An error") + /// } + /// } + /// + /// impl Error for AnError {} + /// + /// let an_error = AnError; + /// assert!(0 == mem::size_of_val(&an_error)); + /// let a_boxed_error = Box::::from(an_error); + /// assert!(mem::size_of::>() == mem::size_of_val(&a_boxed_error)) + /// ``` + #[inline(always)] + fn from(err: E) -> Box { + unsafe { Box::from_raw(Box::leak(Box::new(err))) } + } + } + + #[cfg(not(no_global_oom_handling))] + impl<'a, E: Error + Send + Sync + 'a> From for Box { + /// Converts a type of [`Error`] + [`Send`] + [`Sync`] into a box of + /// dyn [`Error`] + [`Send`] + [`Sync`]. + /// + /// # Examples + /// + /// ``` + /// use std::error::Error; + /// use std::fmt; + /// use std::mem; + /// + /// #[derive(Debug)] + /// struct AnError; + /// + /// impl fmt::Display for AnError { + /// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + /// write!(f, "An error") + /// } + /// } + /// + /// impl Error for AnError {} + /// + /// unsafe impl Send for AnError {} + /// + /// unsafe impl Sync for AnError {} + /// + /// let an_error = AnError; + /// assert!(0 == mem::size_of_val(&an_error)); + /// let a_boxed_error = Box::::from(an_error); + /// assert!( + /// mem::size_of::>() == mem::size_of_val(&a_boxed_error)) + /// ``` + #[inline(always)] + fn from(err: E) -> Box { + unsafe { Box::from_raw(Box::leak(Box::new(err))) } + } + } + + impl Error for Box { + #[inline(always)] + fn source(&self) -> Option<&(dyn Error + 'static)> { + Error::source(&**self) + } + } +} + +#[cfg(feature = "std")] +impl std::io::Read for Box { + #[inline] + fn read(&mut self, buf: &mut [u8]) -> std::io::Result { + (**self).read(buf) + } + + #[inline] + fn read_to_end(&mut self, buf: &mut std::vec::Vec) -> std::io::Result { + (**self).read_to_end(buf) + } + + #[inline] + fn read_to_string(&mut self, buf: &mut String) -> std::io::Result { + (**self).read_to_string(buf) + } + + #[inline] + fn read_exact(&mut self, buf: &mut [u8]) -> std::io::Result<()> { + (**self).read_exact(buf) + } +} + +#[cfg(feature = "std")] +impl std::io::Write for Box { + #[inline] + fn write(&mut self, buf: &[u8]) -> std::io::Result { + (**self).write(buf) + } + + #[inline] + fn flush(&mut self) -> std::io::Result<()> { + (**self).flush() + } + + #[inline] + fn write_all(&mut self, buf: &[u8]) -> std::io::Result<()> { + (**self).write_all(buf) + } + + #[inline] + fn write_fmt(&mut self, fmt: fmt::Arguments<'_>) -> std::io::Result<()> { + (**self).write_fmt(fmt) + } +} + +#[cfg(feature = "std")] +impl std::io::Seek for Box { + #[inline] + fn seek(&mut self, pos: std::io::SeekFrom) -> std::io::Result { + (**self).seek(pos) + } + + #[inline] + fn stream_position(&mut self) -> std::io::Result { + (**self).stream_position() + } +} + +#[cfg(feature = "std")] +impl std::io::BufRead for Box { + #[inline] + fn fill_buf(&mut self) -> std::io::Result<&[u8]> { + (**self).fill_buf() + } + + #[inline] + fn consume(&mut self, amt: usize) { + (**self).consume(amt) + } + + #[inline] + fn read_until(&mut self, byte: u8, buf: &mut std::vec::Vec) -> std::io::Result { + (**self).read_until(byte, buf) + } + + #[inline] + fn read_line(&mut self, buf: &mut std::string::String) -> std::io::Result { + (**self).read_line(buf) + } +} + +#[cfg(feature = "alloc")] +impl Extend> for alloc_crate::string::String { + fn extend>>(&mut self, iter: I) { + iter.into_iter().for_each(move |s| self.push_str(&s)); + } +} + +#[cfg(not(no_global_oom_handling))] +impl Clone for Box { + #[inline] + fn clone(&self) -> Self { + (**self).into() + } +} + +#[cfg(not(no_global_oom_handling))] +impl From<&core::ffi::CStr> for Box { + /// Converts a `&CStr` into a `Box`, + /// by copying the contents into a newly allocated [`Box`]. + fn from(s: &core::ffi::CStr) -> Box { + let boxed: Box<[u8]> = Box::from(s.to_bytes_with_nul()); + unsafe { Box::from_raw(Box::into_raw(boxed) as *mut core::ffi::CStr) } + } +} + +#[cfg(feature = "serde")] +impl serde::Serialize for Box +where + T: serde::Serialize, + A: Allocator, +{ + #[inline(always)] + fn serialize(&self, serializer: S) -> Result { + (**self).serialize(serializer) + } +} + +#[cfg(feature = "serde")] +impl<'de, T, A> serde::Deserialize<'de> for Box +where + T: serde::Deserialize<'de>, + A: Allocator + Default, +{ + #[inline(always)] + fn deserialize>(deserializer: D) -> Result { + let value = T::deserialize(deserializer)?; + Ok(Box::new_in(value, A::default())) + } +} diff -Nru temporalio-1.3.0/vendor/allocator-api2/src/stable/macros.rs temporalio-1.3.0/vendor/allocator-api2/src/stable/macros.rs --- temporalio-1.3.0/vendor/allocator-api2/src/stable/macros.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/src/stable/macros.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,83 @@ +/// Creates a [`Vec`] containing the arguments. +/// +/// `vec!` allows `Vec`s to be defined with the same syntax as array expressions. +/// There are two forms of this macro: +/// +/// - Create a [`Vec`] containing a given list of elements: +/// +/// ``` +/// use allocator_api2::vec; +/// let v = vec![1, 2, 3]; +/// assert_eq!(v[0], 1); +/// assert_eq!(v[1], 2); +/// assert_eq!(v[2], 3); +/// ``` +/// +/// +/// ``` +/// use allocator_api2::{vec, alloc::Global}; +/// let v = vec![in Global; 1, 2, 3]; +/// assert_eq!(v[0], 1); +/// assert_eq!(v[1], 2); +/// assert_eq!(v[2], 3); +/// ``` +/// +/// - Create a [`Vec`] from a given element and size: +/// +/// ``` +/// use allocator_api2::vec; +/// let v = vec![1; 3]; +/// assert_eq!(v, [1, 1, 1]); +/// ``` +/// +/// ``` +/// use allocator_api2::{vec, alloc::Global}; +/// let v = vec![in Global; 1; 3]; +/// assert_eq!(v, [1, 1, 1]); +/// ``` +/// +/// Note that unlike array expressions this syntax supports all elements +/// which implement [`Clone`] and the number of elements doesn't have to be +/// a constant. +/// +/// This will use `clone` to duplicate an expression, so one should be careful +/// using this with types having a nonstandard `Clone` implementation. For +/// example, `vec![Rc::new(1); 5]` will create a vector of five references +/// to the same boxed integer value, not five references pointing to independently +/// boxed integers. +/// +/// Also, note that `vec![expr; 0]` is allowed, and produces an empty vector. +/// This will still evaluate `expr`, however, and immediately drop the resulting value, so +/// be mindful of side effects. +/// +/// [`Vec`]: crate::vec::Vec +#[cfg(not(no_global_oom_handling))] +#[macro_export] +macro_rules! vec { + (in $alloc:expr $(;)?) => ( + $crate::vec::Vec::new() + ); + (in $alloc:expr; $elem:expr; $n:expr) => ( + $crate::vec::from_elem_in($elem, $n, $alloc) + ); + (in $alloc:expr; $($x:expr),+ $(,)?) => ( + $crate::boxed::Box::<[_]>::into_vec( + $crate::boxed::Box::slice( + $crate::boxed::Box::new_in([$($x),+], $alloc) + ) + ) + ); + () => ( + $crate::vec::Vec::new() + ); + ($elem:expr; $n:expr) => ( + $crate::vec::from_elem($elem, $n) + ); + ($($x:expr),+ $(,)?) => ( + $crate::boxed::Box::<[_]>::into_vec( + $crate::boxed::Box::slice( + $crate::boxed::Box::new([$($x),+]) + ) + ) + ); +} diff -Nru temporalio-1.3.0/vendor/allocator-api2/src/stable/mod.rs temporalio-1.3.0/vendor/allocator-api2/src/stable/mod.rs --- temporalio-1.3.0/vendor/allocator-api2/src/stable/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/src/stable/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,62 @@ +#![deny(unsafe_op_in_unsafe_fn)] +#![allow(clippy::needless_doctest_main, clippy::partialeq_ne_impl)] + +#[cfg(feature = "alloc")] +pub use self::slice::SliceExt; + +pub mod alloc; + +#[cfg(feature = "alloc")] +pub mod boxed; + +#[cfg(feature = "alloc")] +mod raw_vec; + +#[cfg(feature = "alloc")] +pub mod vec; + +#[cfg(feature = "alloc")] +mod macros; + +#[cfg(feature = "alloc")] +mod slice; + +#[cfg(feature = "alloc")] +#[track_caller] +#[inline(always)] +#[cfg(debug_assertions)] +unsafe fn assume(v: bool) { + if !v { + core::unreachable!() + } +} + +#[cfg(feature = "alloc")] +#[track_caller] +#[inline(always)] +#[cfg(not(debug_assertions))] +unsafe fn assume(v: bool) { + if !v { + unsafe { + core::hint::unreachable_unchecked(); + } + } +} + +#[cfg(feature = "alloc")] +#[inline(always)] +fn addr(x: *const T) -> usize { + #[allow(clippy::useless_transmute, clippy::transmutes_expressible_as_ptr_casts)] + unsafe { + core::mem::transmute(x) + } +} + +#[cfg(feature = "alloc")] +#[inline(always)] +fn invalid_mut(addr: usize) -> *mut T { + #[allow(clippy::useless_transmute, clippy::transmutes_expressible_as_ptr_casts)] + unsafe { + core::mem::transmute(addr) + } +} diff -Nru temporalio-1.3.0/vendor/allocator-api2/src/stable/raw_vec.rs temporalio-1.3.0/vendor/allocator-api2/src/stable/raw_vec.rs --- temporalio-1.3.0/vendor/allocator-api2/src/stable/raw_vec.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/src/stable/raw_vec.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,642 @@ +use core::alloc::LayoutError; +use core::mem::{self, ManuallyDrop, MaybeUninit}; +use core::ops::Drop; +use core::ptr::{self, NonNull}; +use core::slice; +use core::{cmp, fmt}; + +use super::{ + alloc::{Allocator, Global, Layout}, + assume, + boxed::Box, +}; + +#[cfg(not(no_global_oom_handling))] +use super::alloc::handle_alloc_error; + +/// The error type for `try_reserve` methods. +#[derive(Clone, PartialEq, Eq, Debug)] +pub struct TryReserveError { + kind: TryReserveErrorKind, +} + +impl TryReserveError { + /// Details about the allocation that caused the error + pub fn kind(&self) -> TryReserveErrorKind { + self.kind.clone() + } +} + +/// Details of the allocation that caused a `TryReserveError` +#[derive(Clone, PartialEq, Eq, Debug)] +pub enum TryReserveErrorKind { + /// Error due to the computed capacity exceeding the collection's maximum + /// (usually `isize::MAX` bytes). + CapacityOverflow, + + /// The memory allocator returned an error + AllocError { + /// The layout of allocation request that failed + layout: Layout, + + #[doc(hidden)] + non_exhaustive: (), + }, +} + +use TryReserveErrorKind::*; + +impl From for TryReserveError { + #[inline(always)] + fn from(kind: TryReserveErrorKind) -> Self { + Self { kind } + } +} + +impl From for TryReserveErrorKind { + /// Always evaluates to [`TryReserveErrorKind::CapacityOverflow`]. + #[inline(always)] + fn from(_: LayoutError) -> Self { + TryReserveErrorKind::CapacityOverflow + } +} + +impl fmt::Display for TryReserveError { + fn fmt( + &self, + fmt: &mut core::fmt::Formatter<'_>, + ) -> core::result::Result<(), core::fmt::Error> { + fmt.write_str("memory allocation failed")?; + let reason = match self.kind { + TryReserveErrorKind::CapacityOverflow => { + " because the computed capacity exceeded the collection's maximum" + } + TryReserveErrorKind::AllocError { .. } => { + " because the memory allocator returned an error" + } + }; + fmt.write_str(reason) + } +} + +#[cfg(feature = "std")] +impl std::error::Error for TryReserveError {} + +#[cfg(not(no_global_oom_handling))] +enum AllocInit { + /// The contents of the new memory are uninitialized. + Uninitialized, + /// The new memory is guaranteed to be zeroed. + Zeroed, +} + +/// A low-level utility for more ergonomically allocating, reallocating, and deallocating +/// a buffer of memory on the heap without having to worry about all the corner cases +/// involved. This type is excellent for building your own data structures like Vec and VecDeque. +/// In particular: +/// +/// * Produces `NonNull::dangling()` on zero-sized types. +/// * Produces `NonNull::dangling()` on zero-length allocations. +/// * Avoids freeing `NonNull::dangling()`. +/// * Catches all overflows in capacity computations (promotes them to "capacity overflow" panics). +/// * Guards against 32-bit systems allocating more than isize::MAX bytes. +/// * Guards against overflowing your length. +/// * Calls `handle_alloc_error` for fallible allocations. +/// * Contains a `ptr::NonNull` and thus endows the user with all related benefits. +/// * Uses the excess returned from the allocator to use the largest available capacity. +/// +/// This type does not in anyway inspect the memory that it manages. When dropped it *will* +/// free its memory, but it *won't* try to drop its contents. It is up to the user of `RawVec` +/// to handle the actual things *stored* inside of a `RawVec`. +/// +/// Note that the excess of a zero-sized types is always infinite, so `capacity()` always returns +/// `usize::MAX`. This means that you need to be careful when round-tripping this type with a +/// `Box<[T]>`, since `capacity()` won't yield the length. +#[allow(missing_debug_implementations)] +pub(crate) struct RawVec { + ptr: NonNull, + cap: usize, + alloc: A, +} + +// Safety: RawVec owns both T and A, so sending is safe if +// sending is safe for T and A. +unsafe impl Send for RawVec +where + T: Send, + A: Send, +{ +} + +// Safety: RawVec owns both T and A, so sharing is safe if +// sharing is safe for T and A. +unsafe impl Sync for RawVec +where + T: Sync, + A: Sync, +{ +} + +impl RawVec { + /// Creates the biggest possible `RawVec` (on the system heap) + /// without allocating. If `T` has positive size, then this makes a + /// `RawVec` with capacity `0`. If `T` is zero-sized, then it makes a + /// `RawVec` with capacity `usize::MAX`. Useful for implementing + /// delayed allocation. + #[must_use] + pub const fn new() -> Self { + Self::new_in(Global) + } + + /// Creates a `RawVec` (on the system heap) with exactly the + /// capacity and alignment requirements for a `[T; capacity]`. This is + /// equivalent to calling `RawVec::new` when `capacity` is `0` or `T` is + /// zero-sized. Note that if `T` is zero-sized this means you will + /// *not* get a `RawVec` with the requested capacity. + /// + /// # Panics + /// + /// Panics if the requested capacity exceeds `isize::MAX` bytes. + /// + /// # Aborts + /// + /// Aborts on OOM. + #[cfg(not(no_global_oom_handling))] + #[must_use] + #[inline(always)] + pub fn with_capacity(capacity: usize) -> Self { + Self::with_capacity_in(capacity, Global) + } + + /// Like `with_capacity`, but guarantees the buffer is zeroed. + #[cfg(not(no_global_oom_handling))] + #[must_use] + #[inline(always)] + pub fn with_capacity_zeroed(capacity: usize) -> Self { + Self::with_capacity_zeroed_in(capacity, Global) + } +} + +impl RawVec { + // Tiny Vecs are dumb. Skip to: + // - 8 if the element size is 1, because any heap allocators is likely + // to round up a request of less than 8 bytes to at least 8 bytes. + // - 4 if elements are moderate-sized (<= 1 KiB). + // - 1 otherwise, to avoid wasting too much space for very short Vecs. + pub(crate) const MIN_NON_ZERO_CAP: usize = if mem::size_of::() == 1 { + 8 + } else if mem::size_of::() <= 1024 { + 4 + } else { + 1 + }; + + /// Like `new`, but parameterized over the choice of allocator for + /// the returned `RawVec`. + #[inline(always)] + pub const fn new_in(alloc: A) -> Self { + // `cap: 0` means "unallocated". zero-sized types are ignored. + Self { + ptr: NonNull::dangling(), + cap: 0, + alloc, + } + } + + /// Like `with_capacity`, but parameterized over the choice of + /// allocator for the returned `RawVec`. + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn with_capacity_in(capacity: usize, alloc: A) -> Self { + Self::allocate_in(capacity, AllocInit::Uninitialized, alloc) + } + + /// Like `with_capacity_zeroed`, but parameterized over the choice + /// of allocator for the returned `RawVec`. + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn with_capacity_zeroed_in(capacity: usize, alloc: A) -> Self { + Self::allocate_in(capacity, AllocInit::Zeroed, alloc) + } + + /// Converts the entire buffer into `Box<[MaybeUninit]>` with the specified `len`. + /// + /// Note that this will correctly reconstitute any `cap` changes + /// that may have been performed. (See description of type for details.) + /// + /// # Safety + /// + /// * `len` must be greater than or equal to the most recently requested capacity, and + /// * `len` must be less than or equal to `self.capacity()`. + /// + /// Note, that the requested capacity and `self.capacity()` could differ, as + /// an allocator could overallocate and return a greater memory block than requested. + #[inline(always)] + pub unsafe fn into_box(self, len: usize) -> Box<[MaybeUninit], A> { + // Sanity-check one half of the safety requirement (we cannot check the other half). + debug_assert!( + len <= self.capacity(), + "`len` must be smaller than or equal to `self.capacity()`" + ); + + let me = ManuallyDrop::new(self); + unsafe { + let slice = slice::from_raw_parts_mut(me.ptr() as *mut MaybeUninit, len); + Box::from_raw_in(slice, ptr::read(&me.alloc)) + } + } + + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + fn allocate_in(capacity: usize, init: AllocInit, alloc: A) -> Self { + // Don't allocate here because `Drop` will not deallocate when `capacity` is 0. + if mem::size_of::() == 0 || capacity == 0 { + Self::new_in(alloc) + } else { + // We avoid `unwrap_or_else` here because it bloats the amount of + // LLVM IR generated. + let layout = match Layout::array::(capacity) { + Ok(layout) => layout, + Err(_) => capacity_overflow(), + }; + match alloc_guard(layout.size()) { + Ok(_) => {} + Err(_) => capacity_overflow(), + } + let result = match init { + AllocInit::Uninitialized => alloc.allocate(layout), + AllocInit::Zeroed => alloc.allocate_zeroed(layout), + }; + let ptr = match result { + Ok(ptr) => ptr, + Err(_) => handle_alloc_error(layout), + }; + + // Allocators currently return a `NonNull<[u8]>` whose length + // matches the size requested. If that ever changes, the capacity + // here should change to `ptr.len() / mem::size_of::()`. + Self { + ptr: unsafe { NonNull::new_unchecked(ptr.cast().as_ptr()) }, + cap: capacity, + alloc, + } + } + } + + /// Reconstitutes a `RawVec` from a pointer, capacity, and allocator. + /// + /// # Safety + /// + /// The `ptr` must be allocated (via the given allocator `alloc`), and with the given + /// `capacity`. + /// The `capacity` cannot exceed `isize::MAX` for sized types. (only a concern on 32-bit + /// systems). ZST vectors may have a capacity up to `usize::MAX`. + /// If the `ptr` and `capacity` come from a `RawVec` created via `alloc`, then this is + /// guaranteed. + #[inline(always)] + pub unsafe fn from_raw_parts_in(ptr: *mut T, capacity: usize, alloc: A) -> Self { + Self { + ptr: unsafe { NonNull::new_unchecked(ptr) }, + cap: capacity, + alloc, + } + } + + /// Gets a raw pointer to the start of the allocation. Note that this is + /// `NonNull::dangling()` if `capacity == 0` or `T` is zero-sized. In the former case, you must + /// be careful. + #[inline(always)] + pub fn ptr(&self) -> *mut T { + self.ptr.as_ptr() + } + + /// Gets the capacity of the allocation. + /// + /// This will always be `usize::MAX` if `T` is zero-sized. + #[inline(always)] + pub fn capacity(&self) -> usize { + if mem::size_of::() == 0 { + usize::MAX + } else { + self.cap + } + } + + /// Returns a shared reference to the allocator backing this `RawVec`. + #[inline(always)] + pub fn allocator(&self) -> &A { + &self.alloc + } + + #[inline(always)] + fn current_memory(&self) -> Option<(NonNull, Layout)> { + if mem::size_of::() == 0 || self.cap == 0 { + None + } else { + // We have an allocated chunk of memory, so we can bypass runtime + // checks to get our current layout. + unsafe { + let layout = Layout::array::(self.cap).unwrap_unchecked(); + Some((self.ptr.cast(), layout)) + } + } + } + + /// Ensures that the buffer contains at least enough space to hold `len + + /// additional` elements. If it doesn't already have enough capacity, will + /// reallocate enough space plus comfortable slack space to get amortized + /// *O*(1) behavior. Will limit this behavior if it would needlessly cause + /// itself to panic. + /// + /// If `len` exceeds `self.capacity()`, this may fail to actually allocate + /// the requested space. This is not really unsafe, but the unsafe + /// code *you* write that relies on the behavior of this function may break. + /// + /// This is ideal for implementing a bulk-push operation like `extend`. + /// + /// # Panics + /// + /// Panics if the new capacity exceeds `isize::MAX` bytes. + /// + /// # Aborts + /// + /// Aborts on OOM. + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn reserve(&mut self, len: usize, additional: usize) { + // Callers expect this function to be very cheap when there is already sufficient capacity. + // Therefore, we move all the resizing and error-handling logic from grow_amortized and + // handle_reserve behind a call, while making sure that this function is likely to be + // inlined as just a comparison and a call if the comparison fails. + #[cold] + #[inline(always)] + fn do_reserve_and_handle( + slf: &mut RawVec, + len: usize, + additional: usize, + ) { + handle_reserve(slf.grow_amortized(len, additional)); + } + + if self.needs_to_grow(len, additional) { + do_reserve_and_handle(self, len, additional); + } + } + + /// A specialized version of `reserve()` used only by the hot and + /// oft-instantiated `Vec::push()`, which does its own capacity check. + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn reserve_for_push(&mut self, len: usize) { + handle_reserve(self.grow_amortized(len, 1)); + } + + /// The same as `reserve`, but returns on errors instead of panicking or aborting. + #[inline(always)] + pub fn try_reserve(&mut self, len: usize, additional: usize) -> Result<(), TryReserveError> { + if self.needs_to_grow(len, additional) { + self.grow_amortized(len, additional) + } else { + Ok(()) + } + } + + /// Ensures that the buffer contains at least enough space to hold `len + + /// additional` elements. If it doesn't already, will reallocate the + /// minimum possible amount of memory necessary. Generally this will be + /// exactly the amount of memory necessary, but in principle the allocator + /// is free to give back more than we asked for. + /// + /// If `len` exceeds `self.capacity()`, this may fail to actually allocate + /// the requested space. This is not really unsafe, but the unsafe code + /// *you* write that relies on the behavior of this function may break. + /// + /// # Panics + /// + /// Panics if the new capacity exceeds `isize::MAX` bytes. + /// + /// # Aborts + /// + /// Aborts on OOM. + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn reserve_exact(&mut self, len: usize, additional: usize) { + handle_reserve(self.try_reserve_exact(len, additional)); + } + + /// The same as `reserve_exact`, but returns on errors instead of panicking or aborting. + #[inline(always)] + pub fn try_reserve_exact( + &mut self, + len: usize, + additional: usize, + ) -> Result<(), TryReserveError> { + if self.needs_to_grow(len, additional) { + self.grow_exact(len, additional) + } else { + Ok(()) + } + } + + /// Shrinks the buffer down to the specified capacity. If the given amount + /// is 0, actually completely deallocates. + /// + /// # Panics + /// + /// Panics if the given amount is *larger* than the current capacity. + /// + /// # Aborts + /// + /// Aborts on OOM. + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn shrink_to_fit(&mut self, cap: usize) { + handle_reserve(self.shrink(cap)); + } +} + +impl RawVec { + /// Returns if the buffer needs to grow to fulfill the needed extra capacity. + /// Mainly used to make inlining reserve-calls possible without inlining `grow`. + #[inline(always)] + fn needs_to_grow(&self, len: usize, additional: usize) -> bool { + additional > self.capacity().wrapping_sub(len) + } + + #[inline(always)] + fn set_ptr_and_cap(&mut self, ptr: NonNull<[u8]>, cap: usize) { + // Allocators currently return a `NonNull<[u8]>` whose length matches + // the size requested. If that ever changes, the capacity here should + // change to `ptr.len() / mem::size_of::()`. + self.ptr = unsafe { NonNull::new_unchecked(ptr.cast().as_ptr()) }; + self.cap = cap; + } + + // This method is usually instantiated many times. So we want it to be as + // small as possible, to improve compile times. But we also want as much of + // its contents to be statically computable as possible, to make the + // generated code run faster. Therefore, this method is carefully written + // so that all of the code that depends on `T` is within it, while as much + // of the code that doesn't depend on `T` as possible is in functions that + // are non-generic over `T`. + #[inline(always)] + fn grow_amortized(&mut self, len: usize, additional: usize) -> Result<(), TryReserveError> { + // This is ensured by the calling contexts. + debug_assert!(additional > 0); + + if mem::size_of::() == 0 { + // Since we return a capacity of `usize::MAX` when `elem_size` is + // 0, getting to here necessarily means the `RawVec` is overfull. + return Err(CapacityOverflow.into()); + } + + // Nothing we can really do about these checks, sadly. + let required_cap = len.checked_add(additional).ok_or(CapacityOverflow)?; + + // This guarantees exponential growth. The doubling cannot overflow + // because `cap <= isize::MAX` and the type of `cap` is `usize`. + let cap = cmp::max(self.cap * 2, required_cap); + let cap = cmp::max(Self::MIN_NON_ZERO_CAP, cap); + + let new_layout = Layout::array::(cap); + + // `finish_grow` is non-generic over `T`. + let ptr = finish_grow(new_layout, self.current_memory(), &mut self.alloc)?; + self.set_ptr_and_cap(ptr, cap); + Ok(()) + } + + // The constraints on this method are much the same as those on + // `grow_amortized`, but this method is usually instantiated less often so + // it's less critical. + #[inline(always)] + fn grow_exact(&mut self, len: usize, additional: usize) -> Result<(), TryReserveError> { + if mem::size_of::() == 0 { + // Since we return a capacity of `usize::MAX` when the type size is + // 0, getting to here necessarily means the `RawVec` is overfull. + return Err(CapacityOverflow.into()); + } + + let cap = len.checked_add(additional).ok_or(CapacityOverflow)?; + let new_layout = Layout::array::(cap); + + // `finish_grow` is non-generic over `T`. + let ptr = finish_grow(new_layout, self.current_memory(), &mut self.alloc)?; + self.set_ptr_and_cap(ptr, cap); + Ok(()) + } + + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + fn shrink(&mut self, cap: usize) -> Result<(), TryReserveError> { + assert!( + cap <= self.capacity(), + "Tried to shrink to a larger capacity" + ); + + let (ptr, layout) = if let Some(mem) = self.current_memory() { + mem + } else { + return Ok(()); + }; + + let ptr = unsafe { + // `Layout::array` cannot overflow here because it would have + // overflowed earlier when capacity was larger. + let new_layout = Layout::array::(cap).unwrap_unchecked(); + self.alloc + .shrink(ptr, layout, new_layout) + .map_err(|_| AllocError { + layout: new_layout, + non_exhaustive: (), + })? + }; + self.set_ptr_and_cap(ptr, cap); + Ok(()) + } +} + +// This function is outside `RawVec` to minimize compile times. See the comment +// above `RawVec::grow_amortized` for details. (The `A` parameter isn't +// significant, because the number of different `A` types seen in practice is +// much smaller than the number of `T` types.) +#[inline(always)] +fn finish_grow( + new_layout: Result, + current_memory: Option<(NonNull, Layout)>, + alloc: &mut A, +) -> Result, TryReserveError> +where + A: Allocator, +{ + // Check for the error here to minimize the size of `RawVec::grow_*`. + let new_layout = new_layout.map_err(|_| CapacityOverflow)?; + + alloc_guard(new_layout.size())?; + + let memory = if let Some((ptr, old_layout)) = current_memory { + debug_assert_eq!(old_layout.align(), new_layout.align()); + unsafe { + // The allocator checks for alignment equality + assume(old_layout.align() == new_layout.align()); + alloc.grow(ptr, old_layout, new_layout) + } + } else { + alloc.allocate(new_layout) + }; + + memory.map_err(|_| { + AllocError { + layout: new_layout, + non_exhaustive: (), + } + .into() + }) +} + +impl Drop for RawVec { + /// Frees the memory owned by the `RawVec` *without* trying to drop its contents. + #[inline(always)] + fn drop(&mut self) { + if let Some((ptr, layout)) = self.current_memory() { + unsafe { self.alloc.deallocate(ptr, layout) } + } + } +} + +// Central function for reserve error handling. +#[cfg(not(no_global_oom_handling))] +#[inline(always)] +fn handle_reserve(result: Result<(), TryReserveError>) { + match result.map_err(|e| e.kind()) { + Err(CapacityOverflow) => capacity_overflow(), + Err(AllocError { layout, .. }) => handle_alloc_error(layout), + Ok(()) => { /* yay */ } + } +} + +// We need to guarantee the following: +// * We don't ever allocate `> isize::MAX` byte-size objects. +// * We don't overflow `usize::MAX` and actually allocate too little. +// +// On 64-bit we just need to check for overflow since trying to allocate +// `> isize::MAX` bytes will surely fail. On 32-bit and 16-bit we need to add +// an extra guard for this in case we're running on a platform which can use +// all 4GB in user-space, e.g., PAE or x32. + +#[inline(always)] +fn alloc_guard(alloc_size: usize) -> Result<(), TryReserveError> { + if usize::BITS < 64 && alloc_size > isize::MAX as usize { + Err(CapacityOverflow.into()) + } else { + Ok(()) + } +} + +// One central function responsible for reporting capacity overflows. This'll +// ensure that the code generation related to these panics is minimal as there's +// only one location which panics rather than a bunch throughout the module. +#[cfg(not(no_global_oom_handling))] +fn capacity_overflow() -> ! { + panic!("capacity overflow"); +} diff -Nru temporalio-1.3.0/vendor/allocator-api2/src/stable/slice.rs temporalio-1.3.0/vendor/allocator-api2/src/stable/slice.rs --- temporalio-1.3.0/vendor/allocator-api2/src/stable/slice.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/src/stable/slice.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,171 @@ +use crate::{ + alloc::{Allocator, Global}, + vec::Vec, +}; + +/// Slice methods that use `Box` and `Vec` from this crate. +pub trait SliceExt { + /// Copies `self` into a new `Vec`. + /// + /// # Examples + /// + /// ``` + /// let s = [10, 40, 30]; + /// let x = s.to_vec(); + /// // Here, `s` and `x` can be modified independently. + /// ``` + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + fn to_vec(&self) -> Vec + where + T: Clone, + { + self.to_vec_in(Global) + } + + /// Copies `self` into a new `Vec` with an allocator. + /// + /// # Examples + /// + /// ``` + /// #![feature(allocator_api)] + /// + /// use std::alloc::System; + /// + /// let s = [10, 40, 30]; + /// let x = s.to_vec_in(System); + /// // Here, `s` and `x` can be modified independently. + /// ``` + #[cfg(not(no_global_oom_handling))] + fn to_vec_in(&self, alloc: A) -> Vec + where + T: Clone; + + /// Creates a vector by copying a slice `n` times. + /// + /// # Panics + /// + /// This function will panic if the capacity would overflow. + /// + /// # Examples + /// + /// Basic usage: + /// + /// ``` + /// assert_eq!([1, 2].repeat(3), vec![1, 2, 1, 2, 1, 2]); + /// ``` + /// + /// A panic upon overflow: + /// + /// ```should_panic + /// // this will panic at runtime + /// b"0123456789abcdef".repeat(usize::MAX); + /// ``` + fn repeat(&self, n: usize) -> Vec + where + T: Copy; +} + +impl SliceExt for [T] { + #[cfg(not(no_global_oom_handling))] + #[inline] + fn to_vec_in(&self, alloc: A) -> Vec + where + T: Clone, + { + struct DropGuard<'a, T, A: Allocator> { + vec: &'a mut Vec, + num_init: usize, + } + impl<'a, T, A: Allocator> Drop for DropGuard<'a, T, A> { + #[inline] + fn drop(&mut self) { + // SAFETY: + // items were marked initialized in the loop below + unsafe { + self.vec.set_len(self.num_init); + } + } + } + + let mut vec = Vec::with_capacity_in(self.len(), alloc); + let mut guard = DropGuard { + vec: &mut vec, + num_init: 0, + }; + let slots = guard.vec.spare_capacity_mut(); + // .take(slots.len()) is necessary for LLVM to remove bounds checks + // and has better codegen than zip. + for (i, b) in self.iter().enumerate().take(slots.len()) { + guard.num_init = i; + slots[i].write(b.clone()); + } + core::mem::forget(guard); + // SAFETY: + // the vec was allocated and initialized above to at least this length. + unsafe { + vec.set_len(self.len()); + } + vec + } + + #[cfg(not(no_global_oom_handling))] + #[inline] + fn repeat(&self, n: usize) -> Vec + where + T: Copy, + { + if n == 0 { + return Vec::new(); + } + + // If `n` is larger than zero, it can be split as + // `n = 2^expn + rem (2^expn > rem, expn >= 0, rem >= 0)`. + // `2^expn` is the number represented by the leftmost '1' bit of `n`, + // and `rem` is the remaining part of `n`. + + // Using `Vec` to access `set_len()`. + let capacity = self.len().checked_mul(n).expect("capacity overflow"); + let mut buf = Vec::with_capacity(capacity); + + // `2^expn` repetition is done by doubling `buf` `expn`-times. + buf.extend(self); + { + let mut m = n >> 1; + // If `m > 0`, there are remaining bits up to the leftmost '1'. + while m > 0 { + // `buf.extend(buf)`: + unsafe { + core::ptr::copy_nonoverlapping( + buf.as_ptr(), + (buf.as_mut_ptr() as *mut T).add(buf.len()), + buf.len(), + ); + // `buf` has capacity of `self.len() * n`. + let buf_len = buf.len(); + buf.set_len(buf_len * 2); + } + + m >>= 1; + } + } + + // `rem` (`= n - 2^expn`) repetition is done by copying + // first `rem` repetitions from `buf` itself. + let rem_len = capacity - buf.len(); // `self.len() * rem` + if rem_len > 0 { + // `buf.extend(buf[0 .. rem_len])`: + unsafe { + // This is non-overlapping since `2^expn > rem`. + core::ptr::copy_nonoverlapping( + buf.as_ptr(), + (buf.as_mut_ptr() as *mut T).add(buf.len()), + rem_len, + ); + // `buf.len() + rem_len` equals to `buf.capacity()` (`= self.len() * n`). + buf.set_len(capacity); + } + } + buf + } +} diff -Nru temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/drain.rs temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/drain.rs --- temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/drain.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/drain.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,242 @@ +use core::fmt; +use core::iter::FusedIterator; +use core::mem::{self, size_of, ManuallyDrop}; +use core::ptr::{self, NonNull}; +use core::slice::{self}; + +use crate::stable::alloc::{Allocator, Global}; + +use super::Vec; + +/// A draining iterator for `Vec`. +/// +/// This `struct` is created by [`Vec::drain`]. +/// See its documentation for more. +/// +/// # Example +/// +/// ``` +/// let mut v = vec![0, 1, 2]; +/// let iter: std::vec::Drain<_> = v.drain(..); +/// ``` +pub struct Drain<'a, T: 'a, A: Allocator + 'a = Global> { + /// Index of tail to preserve + pub(super) tail_start: usize, + /// Length of tail + pub(super) tail_len: usize, + /// Current remaining range to remove + pub(super) iter: slice::Iter<'a, T>, + pub(super) vec: NonNull>, +} + +impl fmt::Debug for Drain<'_, T, A> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_tuple("Drain").field(&self.iter.as_slice()).finish() + } +} + +impl<'a, T, A: Allocator> Drain<'a, T, A> { + /// Returns the remaining items of this iterator as a slice. + /// + /// # Examples + /// + /// ``` + /// let mut vec = vec!['a', 'b', 'c']; + /// let mut drain = vec.drain(..); + /// assert_eq!(drain.as_slice(), &['a', 'b', 'c']); + /// let _ = drain.next().unwrap(); + /// assert_eq!(drain.as_slice(), &['b', 'c']); + /// ``` + #[must_use] + #[inline(always)] + pub fn as_slice(&self) -> &[T] { + self.iter.as_slice() + } + + /// Returns a reference to the underlying allocator. + #[must_use] + #[inline(always)] + pub fn allocator(&self) -> &A { + unsafe { self.vec.as_ref().allocator() } + } + + /// Keep unyielded elements in the source `Vec`. + /// + /// # Examples + /// + /// ``` + /// #![feature(drain_keep_rest)] + /// + /// let mut vec = vec!['a', 'b', 'c']; + /// let mut drain = vec.drain(..); + /// + /// assert_eq!(drain.next().unwrap(), 'a'); + /// + /// // This call keeps 'b' and 'c' in the vec. + /// drain.keep_rest(); + /// + /// // If we wouldn't call `keep_rest()`, + /// // `vec` would be empty. + /// assert_eq!(vec, ['b', 'c']); + /// ``` + #[inline(always)] + pub fn keep_rest(self) { + // At this moment layout looks like this: + // + // [head] [yielded by next] [unyielded] [yielded by next_back] [tail] + // ^-- start \_________/-- unyielded_len \____/-- self.tail_len + // ^-- unyielded_ptr ^-- tail + // + // Normally `Drop` impl would drop [unyielded] and then move [tail] to the `start`. + // Here we want to + // 1. Move [unyielded] to `start` + // 2. Move [tail] to a new start at `start + len(unyielded)` + // 3. Update length of the original vec to `len(head) + len(unyielded) + len(tail)` + // a. In case of ZST, this is the only thing we want to do + // 4. Do *not* drop self, as everything is put in a consistent state already, there is nothing to do + let mut this = ManuallyDrop::new(self); + + unsafe { + let source_vec = this.vec.as_mut(); + + let start = source_vec.len(); + let tail = this.tail_start; + + let unyielded_len = this.iter.len(); + let unyielded_ptr = this.iter.as_slice().as_ptr(); + + // ZSTs have no identity, so we don't need to move them around. + let needs_move = mem::size_of::() != 0; + + if needs_move { + let start_ptr = source_vec.as_mut_ptr().add(start); + + // memmove back unyielded elements + if unyielded_ptr != start_ptr { + let src = unyielded_ptr; + let dst = start_ptr; + + ptr::copy(src, dst, unyielded_len); + } + + // memmove back untouched tail + if tail != (start + unyielded_len) { + let src = source_vec.as_ptr().add(tail); + let dst = start_ptr.add(unyielded_len); + ptr::copy(src, dst, this.tail_len); + } + } + + source_vec.set_len(start + unyielded_len + this.tail_len); + } + } +} + +impl<'a, T, A: Allocator> AsRef<[T]> for Drain<'a, T, A> { + #[inline(always)] + fn as_ref(&self) -> &[T] { + self.as_slice() + } +} + +unsafe impl Sync for Drain<'_, T, A> {} + +unsafe impl Send for Drain<'_, T, A> {} + +impl Iterator for Drain<'_, T, A> { + type Item = T; + + #[inline(always)] + fn next(&mut self) -> Option { + self.iter + .next() + .map(|elt| unsafe { ptr::read(elt as *const _) }) + } + + #[inline(always)] + fn size_hint(&self) -> (usize, Option) { + self.iter.size_hint() + } +} + +impl DoubleEndedIterator for Drain<'_, T, A> { + #[inline(always)] + fn next_back(&mut self) -> Option { + self.iter + .next_back() + .map(|elt| unsafe { ptr::read(elt as *const _) }) + } +} + +impl Drop for Drain<'_, T, A> { + #[inline] + fn drop(&mut self) { + /// Moves back the un-`Drain`ed elements to restore the original `Vec`. + struct DropGuard<'r, 'a, T, A: Allocator>(&'r mut Drain<'a, T, A>); + + impl<'r, 'a, T, A: Allocator> Drop for DropGuard<'r, 'a, T, A> { + fn drop(&mut self) { + if self.0.tail_len > 0 { + unsafe { + let source_vec = self.0.vec.as_mut(); + // memmove back untouched tail, update to new length + let start = source_vec.len(); + let tail = self.0.tail_start; + if tail != start { + let src = source_vec.as_ptr().add(tail); + let dst = source_vec.as_mut_ptr().add(start); + ptr::copy(src, dst, self.0.tail_len); + } + source_vec.set_len(start + self.0.tail_len); + } + } + } + } + + let iter = mem::replace(&mut self.iter, [].iter()); + let drop_len = iter.len(); + + let mut vec = self.vec; + + if size_of::() == 0 { + // ZSTs have no identity, so we don't need to move them around, we only need to drop the correct amount. + // this can be achieved by manipulating the Vec length instead of moving values out from `iter`. + unsafe { + let vec = vec.as_mut(); + let old_len = vec.len(); + vec.set_len(old_len + drop_len + self.tail_len); + vec.truncate(old_len + self.tail_len); + } + + return; + } + + // ensure elements are moved back into their appropriate places, even when drop_in_place panics + let _guard = DropGuard(self); + + if drop_len == 0 { + return; + } + + // as_slice() must only be called when iter.len() is > 0 because + // vec::Splice modifies vec::Drain fields and may grow the vec which would invalidate + // the iterator's internal pointers. Creating a reference to deallocated memory + // is invalid even when it is zero-length + let drop_ptr = iter.as_slice().as_ptr(); + + unsafe { + // drop_ptr comes from a slice::Iter which only gives us a &[T] but for drop_in_place + // a pointer with mutable provenance is necessary. Therefore we must reconstruct + // it from the original vec but also avoid creating a &mut to the front since that could + // invalidate raw pointers to it which some unsafe code might rely on. + let vec_ptr = vec.as_mut().as_mut_ptr(); + let drop_offset = drop_ptr.offset_from(vec_ptr) as usize; + let to_drop = ptr::slice_from_raw_parts_mut(vec_ptr.add(drop_offset), drop_len); + ptr::drop_in_place(to_drop); + } + } +} + +impl ExactSizeIterator for Drain<'_, T, A> {} + +impl FusedIterator for Drain<'_, T, A> {} diff -Nru temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/into_iter.rs temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/into_iter.rs --- temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/into_iter.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/into_iter.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,198 @@ +use core::fmt; +use core::iter::FusedIterator; +use core::marker::PhantomData; +use core::mem::{self, size_of, ManuallyDrop}; + +use core::ptr::{self, NonNull}; +use core::slice::{self}; + +use crate::stable::addr; + +use super::{Allocator, Global, RawVec}; + +#[cfg(not(no_global_oom_handling))] +use super::Vec; + +/// An iterator that moves out of a vector. +/// +/// This `struct` is created by the `into_iter` method on [`Vec`](super::Vec) +/// (provided by the [`IntoIterator`] trait). +/// +/// # Example +/// +/// ``` +/// let v = vec![0, 1, 2]; +/// let iter: std::vec::IntoIter<_> = v.into_iter(); +/// ``` +pub struct IntoIter { + pub(super) buf: NonNull, + pub(super) phantom: PhantomData, + pub(super) cap: usize, + // the drop impl reconstructs a RawVec from buf, cap and alloc + // to avoid dropping the allocator twice we need to wrap it into ManuallyDrop + pub(super) alloc: ManuallyDrop, + pub(super) ptr: *const T, + pub(super) end: *const T, +} + +impl fmt::Debug for IntoIter { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_tuple("IntoIter").field(&self.as_slice()).finish() + } +} + +impl IntoIter { + /// Returns the remaining items of this iterator as a slice. + /// + /// # Examples + /// + /// ``` + /// let vec = vec!['a', 'b', 'c']; + /// let mut into_iter = vec.into_iter(); + /// assert_eq!(into_iter.as_slice(), &['a', 'b', 'c']); + /// let _ = into_iter.next().unwrap(); + /// assert_eq!(into_iter.as_slice(), &['b', 'c']); + /// ``` + pub fn as_slice(&self) -> &[T] { + unsafe { slice::from_raw_parts(self.ptr, self.len()) } + } + + /// Returns the remaining items of this iterator as a mutable slice. + /// + /// # Examples + /// + /// ``` + /// let vec = vec!['a', 'b', 'c']; + /// let mut into_iter = vec.into_iter(); + /// assert_eq!(into_iter.as_slice(), &['a', 'b', 'c']); + /// into_iter.as_mut_slice()[2] = 'z'; + /// assert_eq!(into_iter.next().unwrap(), 'a'); + /// assert_eq!(into_iter.next().unwrap(), 'b'); + /// assert_eq!(into_iter.next().unwrap(), 'z'); + /// ``` + pub fn as_mut_slice(&mut self) -> &mut [T] { + unsafe { &mut *self.as_raw_mut_slice() } + } + + /// Returns a reference to the underlying allocator. + #[inline(always)] + pub fn allocator(&self) -> &A { + &self.alloc + } + + fn as_raw_mut_slice(&mut self) -> *mut [T] { + ptr::slice_from_raw_parts_mut(self.ptr as *mut T, self.len()) + } +} + +impl AsRef<[T]> for IntoIter { + fn as_ref(&self) -> &[T] { + self.as_slice() + } +} + +unsafe impl Send for IntoIter {} + +unsafe impl Sync for IntoIter {} + +impl Iterator for IntoIter { + type Item = T; + + #[inline(always)] + fn next(&mut self) -> Option { + if self.ptr == self.end { + None + } else if size_of::() == 0 { + // purposefully don't use 'ptr.offset' because for + // vectors with 0-size elements this would return the + // same pointer. + self.ptr = self.ptr.cast::().wrapping_add(1).cast(); + + // Make up a value of this ZST. + Some(unsafe { mem::zeroed() }) + } else { + let old = self.ptr; + self.ptr = unsafe { self.ptr.add(1) }; + + Some(unsafe { ptr::read(old) }) + } + } + + #[inline(always)] + fn size_hint(&self) -> (usize, Option) { + let exact = if size_of::() == 0 { + addr(self.end).wrapping_sub(addr(self.ptr)) + } else { + unsafe { self.end.offset_from(self.ptr) as usize } + }; + (exact, Some(exact)) + } + + #[inline(always)] + fn count(self) -> usize { + self.len() + } +} + +impl DoubleEndedIterator for IntoIter { + #[inline(always)] + fn next_back(&mut self) -> Option { + if self.end == self.ptr { + None + } else if size_of::() == 0 { + // See above for why 'ptr.offset' isn't used + self.end = self.end.cast::().wrapping_add(1).cast(); + + // Make up a value of this ZST. + Some(unsafe { mem::zeroed() }) + } else { + self.end = unsafe { self.end.sub(1) }; + + Some(unsafe { ptr::read(self.end) }) + } + } +} + +impl ExactSizeIterator for IntoIter {} + +impl FusedIterator for IntoIter {} + +#[doc(hidden)] +pub trait NonDrop {} + +// T: Copy as approximation for !Drop since get_unchecked does not advance self.ptr +// and thus we can't implement drop-handling +impl NonDrop for T {} + +#[cfg(not(no_global_oom_handling))] +impl Clone for IntoIter { + fn clone(&self) -> Self { + let mut vec = Vec::::with_capacity_in(self.len(), (*self.alloc).clone()); + vec.extend(self.as_slice().iter().cloned()); + vec.into_iter() + } +} + +impl Drop for IntoIter { + fn drop(&mut self) { + struct DropGuard<'a, T, A: Allocator>(&'a mut IntoIter); + + impl Drop for DropGuard<'_, T, A> { + fn drop(&mut self) { + unsafe { + // `IntoIter::alloc` is not used anymore after this and will be dropped by RawVec + let alloc = ManuallyDrop::take(&mut self.0.alloc); + // RawVec handles deallocation + let _ = RawVec::from_raw_parts_in(self.0.buf.as_ptr(), self.0.cap, alloc); + } + } + } + + let guard = DropGuard(self); + // destroy the remaining elements + unsafe { + ptr::drop_in_place(guard.0.as_raw_mut_slice()); + } + // now `guard` will be dropped and do the rest + } +} diff -Nru temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/mod.rs temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/mod.rs --- temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,3253 @@ +//! A contiguous growable array type with heap-allocated contents, written +//! `Vec`. +//! +//! Vectors have *O*(1) indexing, amortized *O*(1) push (to the end) and +//! *O*(1) pop (from the end). +//! +//! Vectors ensure they never allocate more than `isize::MAX` bytes. +//! +//! # Examples +//! +//! You can explicitly create a [`Vec`] with [`Vec::new`]: +//! +//! ``` +//! let v: Vec = Vec::new(); +//! ``` +//! +//! ...or by using the [`vec!`] macro: +//! +//! ``` +//! let v: Vec = vec![]; +//! +//! let v = vec![1, 2, 3, 4, 5]; +//! +//! let v = vec![0; 10]; // ten zeroes +//! ``` +//! +//! You can [`push`] values onto the end of a vector (which will grow the vector +//! as needed): +//! +//! ``` +//! let mut v = vec![1, 2]; +//! +//! v.push(3); +//! ``` +//! +//! Popping values works in much the same way: +//! +//! ``` +//! let mut v = vec![1, 2]; +//! +//! let two = v.pop(); +//! ``` +//! +//! Vectors also support indexing (through the [`Index`] and [`IndexMut`] traits): +//! +//! ``` +//! let mut v = vec![1, 2, 3]; +//! let three = v[2]; +//! v[1] = v[1] + 5; +//! ``` +//! +//! [`push`]: Vec::push + +#[cfg(not(no_global_oom_handling))] +use core::cmp; +use core::cmp::Ordering; +use core::convert::TryFrom; +use core::fmt; +use core::hash::{Hash, Hasher}; +#[cfg(not(no_global_oom_handling))] +use core::iter; +#[cfg(not(no_global_oom_handling))] +use core::iter::FromIterator; +use core::marker::PhantomData; +use core::mem::{self, size_of, ManuallyDrop, MaybeUninit}; +use core::ops::{self, Bound, Index, IndexMut, Range, RangeBounds}; +use core::ptr::{self, NonNull}; +use core::slice::{self, SliceIndex}; + +use super::{ + alloc::{Allocator, Global}, + assume, + boxed::Box, + raw_vec::{RawVec, TryReserveError}, +}; + +#[cfg(not(no_global_oom_handling))] +pub use self::splice::Splice; + +#[cfg(not(no_global_oom_handling))] +mod splice; + +pub use self::drain::Drain; + +mod drain; + +pub use self::into_iter::IntoIter; + +mod into_iter; + +mod partial_eq; + +#[cfg(not(no_global_oom_handling))] +mod set_len_on_drop; + +#[cfg(not(no_global_oom_handling))] +use self::set_len_on_drop::SetLenOnDrop; + +/// A contiguous growable array type, written as `Vec`, short for 'vector'. +/// +/// # Examples +/// +/// ``` +/// let mut vec = Vec::new(); +/// vec.push(1); +/// vec.push(2); +/// +/// assert_eq!(vec.len(), 2); +/// assert_eq!(vec[0], 1); +/// +/// assert_eq!(vec.pop(), Some(2)); +/// assert_eq!(vec.len(), 1); +/// +/// vec[0] = 7; +/// assert_eq!(vec[0], 7); +/// +/// vec.extend([1, 2, 3].iter().copied()); +/// +/// for x in &vec { +/// println!("{x}"); +/// } +/// assert_eq!(vec, [7, 1, 2, 3]); +/// ``` +/// +/// The [`vec!`] macro is provided for convenient initialization: +/// +/// ``` +/// let mut vec1 = vec![1, 2, 3]; +/// vec1.push(4); +/// let vec2 = Vec::from([1, 2, 3, 4]); +/// assert_eq!(vec1, vec2); +/// ``` +/// +/// It can also initialize each element of a `Vec` with a given value. +/// This may be more efficient than performing allocation and initialization +/// in separate steps, especially when initializing a vector of zeros: +/// +/// ``` +/// let vec = vec![0; 5]; +/// assert_eq!(vec, [0, 0, 0, 0, 0]); +/// +/// // The following is equivalent, but potentially slower: +/// let mut vec = Vec::with_capacity(5); +/// vec.resize(5, 0); +/// assert_eq!(vec, [0, 0, 0, 0, 0]); +/// ``` +/// +/// For more information, see +/// [Capacity and Reallocation](#capacity-and-reallocation). +/// +/// Use a `Vec` as an efficient stack: +/// +/// ``` +/// let mut stack = Vec::new(); +/// +/// stack.push(1); +/// stack.push(2); +/// stack.push(3); +/// +/// while let Some(top) = stack.pop() { +/// // Prints 3, 2, 1 +/// println!("{top}"); +/// } +/// ``` +/// +/// # Indexing +/// +/// The `Vec` type allows to access values by index, because it implements the +/// [`Index`] trait. An example will be more explicit: +/// +/// ``` +/// let v = vec![0, 2, 4, 6]; +/// println!("{}", v[1]); // it will display '2' +/// ``` +/// +/// However be careful: if you try to access an index which isn't in the `Vec`, +/// your software will panic! You cannot do this: +/// +/// ```should_panic +/// let v = vec![0, 2, 4, 6]; +/// println!("{}", v[6]); // it will panic! +/// ``` +/// +/// Use [`get`] and [`get_mut`] if you want to check whether the index is in +/// the `Vec`. +/// +/// # Slicing +/// +/// A `Vec` can be mutable. On the other hand, slices are read-only objects. +/// To get a [slice][prim@slice], use [`&`]. Example: +/// +/// ``` +/// fn read_slice(slice: &[usize]) { +/// // ... +/// } +/// +/// let v = vec![0, 1]; +/// read_slice(&v); +/// +/// // ... and that's all! +/// // you can also do it like this: +/// let u: &[usize] = &v; +/// // or like this: +/// let u: &[_] = &v; +/// ``` +/// +/// In Rust, it's more common to pass slices as arguments rather than vectors +/// when you just want to provide read access. The same goes for [`String`] and +/// [`&str`]. +/// +/// # Capacity and reallocation +/// +/// The capacity of a vector is the amount of space allocated for any future +/// elements that will be added onto the vector. This is not to be confused with +/// the *length* of a vector, which specifies the number of actual elements +/// within the vector. If a vector's length exceeds its capacity, its capacity +/// will automatically be increased, but its elements will have to be +/// reallocated. +/// +/// For example, a vector with capacity 10 and length 0 would be an empty vector +/// with space for 10 more elements. Pushing 10 or fewer elements onto the +/// vector will not change its capacity or cause reallocation to occur. However, +/// if the vector's length is increased to 11, it will have to reallocate, which +/// can be slow. For this reason, it is recommended to use [`Vec::with_capacity`] +/// whenever possible to specify how big the vector is expected to get. +/// +/// # Guarantees +/// +/// Due to its incredibly fundamental nature, `Vec` makes a lot of guarantees +/// about its design. This ensures that it's as low-overhead as possible in +/// the general case, and can be correctly manipulated in primitive ways +/// by unsafe code. Note that these guarantees refer to an unqualified `Vec`. +/// If additional type parameters are added (e.g., to support custom allocators), +/// overriding their defaults may change the behavior. +/// +/// Most fundamentally, `Vec` is and always will be a (pointer, capacity, length) +/// triplet. No more, no less. The order of these fields is completely +/// unspecified, and you should use the appropriate methods to modify these. +/// The pointer will never be null, so this type is null-pointer-optimized. +/// +/// However, the pointer might not actually point to allocated memory. In particular, +/// if you construct a `Vec` with capacity 0 via [`Vec::new`], [`vec![]`][`vec!`], +/// [`Vec::with_capacity(0)`][`Vec::with_capacity`], or by calling [`shrink_to_fit`] +/// on an empty Vec, it will not allocate memory. Similarly, if you store zero-sized +/// types inside a `Vec`, it will not allocate space for them. *Note that in this case +/// the `Vec` might not report a [`capacity`] of 0*. `Vec` will allocate if and only +/// if [mem::size_of::\]\() * [capacity]\() > 0. In general, `Vec`'s allocation +/// details are very subtle --- if you intend to allocate memory using a `Vec` +/// and use it for something else (either to pass to unsafe code, or to build your +/// own memory-backed collection), be sure to deallocate this memory by using +/// `from_raw_parts` to recover the `Vec` and then dropping it. +/// +/// If a `Vec` *has* allocated memory, then the memory it points to is on the heap +/// (as defined by the allocator Rust is configured to use by default), and its +/// pointer points to [`len`] initialized, contiguous elements in order (what +/// you would see if you coerced it to a slice), followed by [capacity] - [len] +/// logically uninitialized, contiguous elements. +/// +/// A vector containing the elements `'a'` and `'b'` with capacity 4 can be +/// visualized as below. The top part is the `Vec` struct, it contains a +/// pointer to the head of the allocation in the heap, length and capacity. +/// The bottom part is the allocation on the heap, a contiguous memory block. +/// +/// ```text +/// ptr len capacity +/// +--------+--------+--------+ +/// | 0x0123 | 2 | 4 | +/// +--------+--------+--------+ +/// | +/// v +/// Heap +--------+--------+--------+--------+ +/// | 'a' | 'b' | uninit | uninit | +/// +--------+--------+--------+--------+ +/// ``` +/// +/// - **uninit** represents memory that is not initialized, see [`MaybeUninit`]. +/// - Note: the ABI is not stable and `Vec` makes no guarantees about its memory +/// layout (including the order of fields). +/// +/// `Vec` will never perform a "small optimization" where elements are actually +/// stored on the stack for two reasons: +/// +/// * It would make it more difficult for unsafe code to correctly manipulate +/// a `Vec`. The contents of a `Vec` wouldn't have a stable address if it were +/// only moved, and it would be more difficult to determine if a `Vec` had +/// actually allocated memory. +/// +/// * It would penalize the general case, incurring an additional branch +/// on every access. +/// +/// `Vec` will never automatically shrink itself, even if completely empty. This +/// ensures no unnecessary allocations or deallocations occur. Emptying a `Vec` +/// and then filling it back up to the same [`len`] should incur no calls to +/// the allocator. If you wish to free up unused memory, use +/// [`shrink_to_fit`] or [`shrink_to`]. +/// +/// [`push`] and [`insert`] will never (re)allocate if the reported capacity is +/// sufficient. [`push`] and [`insert`] *will* (re)allocate if +/// [len] == [capacity]. That is, the reported capacity is completely +/// accurate, and can be relied on. It can even be used to manually free the memory +/// allocated by a `Vec` if desired. Bulk insertion methods *may* reallocate, even +/// when not necessary. +/// +/// `Vec` does not guarantee any particular growth strategy when reallocating +/// when full, nor when [`reserve`] is called. The current strategy is basic +/// and it may prove desirable to use a non-constant growth factor. Whatever +/// strategy is used will of course guarantee *O*(1) amortized [`push`]. +/// +/// `vec![x; n]`, `vec![a, b, c, d]`, and +/// [`Vec::with_capacity(n)`][`Vec::with_capacity`], will all produce a `Vec` +/// with exactly the requested capacity. If [len] == [capacity], +/// (as is the case for the [`vec!`] macro), then a `Vec` can be converted to +/// and from a [`Box<[T]>`][owned slice] without reallocating or moving the elements. +/// +/// `Vec` will not specifically overwrite any data that is removed from it, +/// but also won't specifically preserve it. Its uninitialized memory is +/// scratch space that it may use however it wants. It will generally just do +/// whatever is most efficient or otherwise easy to implement. Do not rely on +/// removed data to be erased for security purposes. Even if you drop a `Vec`, its +/// buffer may simply be reused by another allocation. Even if you zero a `Vec`'s memory +/// first, that might not actually happen because the optimizer does not consider +/// this a side-effect that must be preserved. There is one case which we will +/// not break, however: using `unsafe` code to write to the excess capacity, +/// and then increasing the length to match, is always valid. +/// +/// Currently, `Vec` does not guarantee the order in which elements are dropped. +/// The order has changed in the past and may change again. +/// +/// [`get`]: ../../std/vec/struct.Vec.html#method.get +/// [`get_mut`]: ../../std/vec/struct.Vec.html#method.get_mut +/// [`String`]: alloc_crate::string::String +/// [`&str`]: type@str +/// [`shrink_to_fit`]: Vec::shrink_to_fit +/// [`shrink_to`]: Vec::shrink_to +/// [capacity]: Vec::capacity +/// [`capacity`]: Vec::capacity +/// [mem::size_of::\]: core::mem::size_of +/// [len]: Vec::len +/// [`len`]: Vec::len +/// [`push`]: Vec::push +/// [`insert`]: Vec::insert +/// [`reserve`]: Vec::reserve +/// [`MaybeUninit`]: core::mem::MaybeUninit +/// [owned slice]: Box +pub struct Vec { + buf: RawVec, + len: usize, +} + +//////////////////////////////////////////////////////////////////////////////// +// Inherent methods +//////////////////////////////////////////////////////////////////////////////// + +impl Vec { + /// Constructs a new, empty `Vec`. + /// + /// The vector will not allocate until elements are pushed onto it. + /// + /// # Examples + /// + /// ``` + /// # #![allow(unused_mut)] + /// let mut vec: Vec = Vec::new(); + /// ``` + #[inline(always)] + #[must_use] + pub const fn new() -> Self { + Vec { + buf: RawVec::new(), + len: 0, + } + } + + /// Constructs a new, empty `Vec` with at least the specified capacity. + /// + /// The vector will be able to hold at least `capacity` elements without + /// reallocating. This method is allowed to allocate for more elements than + /// `capacity`. If `capacity` is 0, the vector will not allocate. + /// + /// It is important to note that although the returned vector has the + /// minimum *capacity* specified, the vector will have a zero *length*. For + /// an explanation of the difference between length and capacity, see + /// *[Capacity and reallocation]*. + /// + /// If it is important to know the exact allocated capacity of a `Vec`, + /// always use the [`capacity`] method after construction. + /// + /// For `Vec` where `T` is a zero-sized type, there will be no allocation + /// and the capacity will always be `usize::MAX`. + /// + /// [Capacity and reallocation]: #capacity-and-reallocation + /// [`capacity`]: Vec::capacity + /// + /// # Panics + /// + /// Panics if the new capacity exceeds `isize::MAX` bytes. + /// + /// # Examples + /// + /// ``` + /// let mut vec = Vec::with_capacity(10); + /// + /// // The vector contains no items, even though it has capacity for more + /// assert_eq!(vec.len(), 0); + /// assert!(vec.capacity() >= 10); + /// + /// // These are all done without reallocating... + /// for i in 0..10 { + /// vec.push(i); + /// } + /// assert_eq!(vec.len(), 10); + /// assert!(vec.capacity() >= 10); + /// + /// // ...but this may make the vector reallocate + /// vec.push(11); + /// assert_eq!(vec.len(), 11); + /// assert!(vec.capacity() >= 11); + /// + /// // A vector of a zero-sized type will always over-allocate, since no + /// // allocation is necessary + /// let vec_units = Vec::<()>::with_capacity(10); + /// assert_eq!(vec_units.capacity(), usize::MAX); + /// ``` + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + #[must_use] + pub fn with_capacity(capacity: usize) -> Self { + Self::with_capacity_in(capacity, Global) + } + + /// Creates a `Vec` directly from a pointer, a capacity, and a length. + /// + /// # Safety + /// + /// This is highly unsafe, due to the number of invariants that aren't + /// checked: + /// + /// * `T` needs to have the same alignment as what `ptr` was allocated with. + /// (`T` having a less strict alignment is not sufficient, the alignment really + /// needs to be equal to satisfy the [`dealloc`] requirement that memory must be + /// allocated and deallocated with the same layout.) + /// * The size of `T` times the `capacity` (ie. the allocated size in bytes) needs + /// to be the same size as the pointer was allocated with. (Because similar to + /// alignment, [`dealloc`] must be called with the same layout `size`.) + /// * `length` needs to be less than or equal to `capacity`. + /// * The first `length` values must be properly initialized values of type `T`. + /// * `capacity` needs to be the capacity that the pointer was allocated with. + /// * The allocated size in bytes must be no larger than `isize::MAX`. + /// See the safety documentation of [`pointer::offset`](https://doc.rust-lang.org/nightly/std/primitive.pointer.html#method.offset). + /// + /// These requirements are always upheld by any `ptr` that has been allocated + /// via `Vec`. Other allocation sources are allowed if the invariants are + /// upheld. + /// + /// Violating these may cause problems like corrupting the allocator's + /// internal data structures. For example it is normally **not** safe + /// to build a `Vec` from a pointer to a C `char` array with length + /// `size_t`, doing so is only safe if the array was initially allocated by + /// a `Vec` or `String`. + /// It's also not safe to build one from a `Vec` and its length, because + /// the allocator cares about the alignment, and these two types have different + /// alignments. The buffer was allocated with alignment 2 (for `u16`), but after + /// turning it into a `Vec` it'll be deallocated with alignment 1. To avoid + /// these issues, it is often preferable to do casting/transmuting using + /// [`slice::from_raw_parts`] instead. + /// + /// The ownership of `ptr` is effectively transferred to the + /// `Vec` which may then deallocate, reallocate or change the + /// contents of memory pointed to by the pointer at will. Ensure + /// that nothing else uses the pointer after calling this + /// function. + /// + /// [`String`]: alloc_crate::string::String + /// [`dealloc`]: crate::alloc::GlobalAlloc::dealloc + /// + /// # Examples + /// + /// ``` + /// use std::ptr; + /// use std::mem; + /// + /// let v = vec![1, 2, 3]; + /// + // FIXME Update this when vec_into_raw_parts is stabilized + /// // Prevent running `v`'s destructor so we are in complete control + /// // of the allocation. + /// let mut v = mem::ManuallyDrop::new(v); + /// + /// // Pull out the various important pieces of information about `v` + /// let p = v.as_mut_ptr(); + /// let len = v.len(); + /// let cap = v.capacity(); + /// + /// unsafe { + /// // Overwrite memory with 4, 5, 6 + /// for i in 0..len { + /// ptr::write(p.add(i), 4 + i); + /// } + /// + /// // Put everything back together into a Vec + /// let rebuilt = Vec::from_raw_parts(p, len, cap); + /// assert_eq!(rebuilt, [4, 5, 6]); + /// } + /// ``` + /// + /// Using memory that was allocated elsewhere: + /// + /// ```rust + /// #![feature(allocator_api)] + /// + /// use std::alloc::{AllocError, Allocator, Global, Layout}; + /// + /// fn main() { + /// let layout = Layout::array::(16).expect("overflow cannot happen"); + /// + /// let vec = unsafe { + /// let mem = match Global.allocate(layout) { + /// Ok(mem) => mem.cast::().as_ptr(), + /// Err(AllocError) => return, + /// }; + /// + /// mem.write(1_000_000); + /// + /// Vec::from_raw_parts_in(mem, 1, 16, Global) + /// }; + /// + /// assert_eq!(vec, &[1_000_000]); + /// assert_eq!(vec.capacity(), 16); + /// } + /// ``` + #[inline(always)] + pub unsafe fn from_raw_parts(ptr: *mut T, length: usize, capacity: usize) -> Self { + unsafe { Self::from_raw_parts_in(ptr, length, capacity, Global) } + } +} + +impl Vec { + /// Constructs a new, empty `Vec`. + /// + /// The vector will not allocate until elements are pushed onto it. + /// + /// # Examples + /// + /// ``` + /// use std::alloc::System; + /// + /// # #[allow(unused_mut)] + /// let mut vec: Vec = Vec::new_in(System); + /// ``` + #[inline(always)] + pub const fn new_in(alloc: A) -> Self { + Vec { + buf: RawVec::new_in(alloc), + len: 0, + } + } + + /// Constructs a new, empty `Vec` with at least the specified capacity + /// with the provided allocator. + /// + /// The vector will be able to hold at least `capacity` elements without + /// reallocating. This method is allowed to allocate for more elements than + /// `capacity`. If `capacity` is 0, the vector will not allocate. + /// + /// It is important to note that although the returned vector has the + /// minimum *capacity* specified, the vector will have a zero *length*. For + /// an explanation of the difference between length and capacity, see + /// *[Capacity and reallocation]*. + /// + /// If it is important to know the exact allocated capacity of a `Vec`, + /// always use the [`capacity`] method after construction. + /// + /// For `Vec` where `T` is a zero-sized type, there will be no allocation + /// and the capacity will always be `usize::MAX`. + /// + /// [Capacity and reallocation]: #capacity-and-reallocation + /// [`capacity`]: Vec::capacity + /// + /// # Panics + /// + /// Panics if the new capacity exceeds `isize::MAX` bytes. + /// + /// # Examples + /// + /// ``` + /// use std::alloc::System; + /// + /// let mut vec = Vec::with_capacity_in(10, System); + /// + /// // The vector contains no items, even though it has capacity for more + /// assert_eq!(vec.len(), 0); + /// assert_eq!(vec.capacity(), 10); + /// + /// // These are all done without reallocating... + /// for i in 0..10 { + /// vec.push(i); + /// } + /// assert_eq!(vec.len(), 10); + /// assert_eq!(vec.capacity(), 10); + /// + /// // ...but this may make the vector reallocate + /// vec.push(11); + /// assert_eq!(vec.len(), 11); + /// assert!(vec.capacity() >= 11); + /// + /// // A vector of a zero-sized type will always over-allocate, since no + /// // allocation is necessary + /// let vec_units = Vec::<(), System>::with_capacity_in(10, System); + /// assert_eq!(vec_units.capacity(), usize::MAX); + /// ``` + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn with_capacity_in(capacity: usize, alloc: A) -> Self { + Vec { + buf: RawVec::with_capacity_in(capacity, alloc), + len: 0, + } + } + + /// Creates a `Vec` directly from a pointer, a capacity, a length, + /// and an allocator. + /// + /// # Safety + /// + /// This is highly unsafe, due to the number of invariants that aren't + /// checked: + /// + /// * `T` needs to have the same alignment as what `ptr` was allocated with. + /// (`T` having a less strict alignment is not sufficient, the alignment really + /// needs to be equal to satisfy the [`dealloc`] requirement that memory must be + /// allocated and deallocated with the same layout.) + /// * The size of `T` times the `capacity` (ie. the allocated size in bytes) needs + /// to be the same size as the pointer was allocated with. (Because similar to + /// alignment, [`dealloc`] must be called with the same layout `size`.) + /// * `length` needs to be less than or equal to `capacity`. + /// * The first `length` values must be properly initialized values of type `T`. + /// * `capacity` needs to [*fit*] the layout size that the pointer was allocated with. + /// * The allocated size in bytes must be no larger than `isize::MAX`. + /// See the safety documentation of [`pointer::offset`](https://doc.rust-lang.org/nightly/std/primitive.pointer.html#method.offset). + /// + /// These requirements are always upheld by any `ptr` that has been allocated + /// via `Vec`. Other allocation sources are allowed if the invariants are + /// upheld. + /// + /// Violating these may cause problems like corrupting the allocator's + /// internal data structures. For example it is **not** safe + /// to build a `Vec` from a pointer to a C `char` array with length `size_t`. + /// It's also not safe to build one from a `Vec` and its length, because + /// the allocator cares about the alignment, and these two types have different + /// alignments. The buffer was allocated with alignment 2 (for `u16`), but after + /// turning it into a `Vec` it'll be deallocated with alignment 1. + /// + /// The ownership of `ptr` is effectively transferred to the + /// `Vec` which may then deallocate, reallocate or change the + /// contents of memory pointed to by the pointer at will. Ensure + /// that nothing else uses the pointer after calling this + /// function. + /// + /// [`String`]: alloc_crate::string::String + /// [`dealloc`]: crate::alloc::GlobalAlloc::dealloc + /// [*fit*]: crate::alloc::Allocator#memory-fitting + /// + /// # Examples + /// + /// ``` + /// use std::alloc::System; + /// + /// use std::ptr; + /// use std::mem; + /// + /// + /// # use allocator_api2::vec::Vec; + /// let mut v = Vec::with_capacity_in(3, System); + /// v.push(1); + /// v.push(2); + /// v.push(3); + /// + // FIXME Update this when vec_into_raw_parts is stabilized + /// // Prevent running `v`'s destructor so we are in complete control + /// // of the allocation. + /// let mut v = mem::ManuallyDrop::new(v); + /// + /// // Pull out the various important pieces of information about `v` + /// let p = v.as_mut_ptr(); + /// let len = v.len(); + /// let cap = v.capacity(); + /// let alloc = v.allocator(); + /// + /// unsafe { + /// // Overwrite memory with 4, 5, 6 + /// for i in 0..len { + /// ptr::write(p.add(i), 4 + i); + /// } + /// + /// // Put everything back together into a Vec + /// let rebuilt = Vec::from_raw_parts_in(p, len, cap, alloc.clone()); + /// assert_eq!(rebuilt, [4, 5, 6]); + /// } + /// ``` + /// + /// Using memory that was allocated elsewhere: + /// + /// ```rust + /// use std::alloc::{alloc, Layout}; + /// + /// fn main() { + /// let layout = Layout::array::(16).expect("overflow cannot happen"); + /// let vec = unsafe { + /// let mem = alloc(layout).cast::(); + /// if mem.is_null() { + /// return; + /// } + /// + /// mem.write(1_000_000); + /// + /// Vec::from_raw_parts(mem, 1, 16) + /// }; + /// + /// assert_eq!(vec, &[1_000_000]); + /// assert_eq!(vec.capacity(), 16); + /// } + /// ``` + #[inline(always)] + pub unsafe fn from_raw_parts_in(ptr: *mut T, length: usize, capacity: usize, alloc: A) -> Self { + unsafe { + Vec { + buf: RawVec::from_raw_parts_in(ptr, capacity, alloc), + len: length, + } + } + } + + /// Decomposes a `Vec` into its raw components. + /// + /// Returns the raw pointer to the underlying data, the length of + /// the vector (in elements), and the allocated capacity of the + /// data (in elements). These are the same arguments in the same + /// order as the arguments to [`from_raw_parts`]. + /// + /// After calling this function, the caller is responsible for the + /// memory previously managed by the `Vec`. The only way to do + /// this is to convert the raw pointer, length, and capacity back + /// into a `Vec` with the [`from_raw_parts`] function, allowing + /// the destructor to perform the cleanup. + /// + /// [`from_raw_parts`]: Vec::from_raw_parts + /// + /// # Examples + /// + /// ``` + /// #![feature(vec_into_raw_parts)] + /// let v: Vec = vec![-1, 0, 1]; + /// + /// let (ptr, len, cap) = v.into_raw_parts(); + /// + /// let rebuilt = unsafe { + /// // We can now make changes to the components, such as + /// // transmuting the raw pointer to a compatible type. + /// let ptr = ptr as *mut u32; + /// + /// Vec::from_raw_parts(ptr, len, cap) + /// }; + /// assert_eq!(rebuilt, [4294967295, 0, 1]); + /// ``` + pub fn into_raw_parts(self) -> (*mut T, usize, usize) { + let mut me = ManuallyDrop::new(self); + (me.as_mut_ptr(), me.len(), me.capacity()) + } + + /// Decomposes a `Vec` into its raw components. + /// + /// Returns the raw pointer to the underlying data, the length of the vector (in elements), + /// the allocated capacity of the data (in elements), and the allocator. These are the same + /// arguments in the same order as the arguments to [`from_raw_parts_in`]. + /// + /// After calling this function, the caller is responsible for the + /// memory previously managed by the `Vec`. The only way to do + /// this is to convert the raw pointer, length, and capacity back + /// into a `Vec` with the [`from_raw_parts_in`] function, allowing + /// the destructor to perform the cleanup. + /// + /// [`from_raw_parts_in`]: Vec::from_raw_parts_in + /// + /// # Examples + /// + /// ``` + /// #![feature(allocator_api, vec_into_raw_parts)] + /// + /// use std::alloc::System; + /// + /// let mut v: Vec = Vec::new_in(System); + /// v.push(-1); + /// v.push(0); + /// v.push(1); + /// + /// let (ptr, len, cap, alloc) = v.into_raw_parts_with_alloc(); + /// + /// let rebuilt = unsafe { + /// // We can now make changes to the components, such as + /// // transmuting the raw pointer to a compatible type. + /// let ptr = ptr as *mut u32; + /// + /// Vec::from_raw_parts_in(ptr, len, cap, alloc) + /// }; + /// assert_eq!(rebuilt, [4294967295, 0, 1]); + /// ``` + // #[unstable(feature = "vec_into_raw_parts", reason = "new API", issue = "65816")] + pub fn into_raw_parts_with_alloc(self) -> (*mut T, usize, usize, A) { + let mut me = ManuallyDrop::new(self); + let len = me.len(); + let capacity = me.capacity(); + let ptr = me.as_mut_ptr(); + let alloc = unsafe { ptr::read(me.allocator()) }; + (ptr, len, capacity, alloc) + } + + /// Returns the total number of elements the vector can hold without + /// reallocating. + /// + /// # Examples + /// + /// ``` + /// let mut vec: Vec = Vec::with_capacity(10); + /// vec.push(42); + /// assert_eq!(vec.capacity(), 10); + /// ``` + #[inline(always)] + pub fn capacity(&self) -> usize { + self.buf.capacity() + } + + /// Reserves capacity for at least `additional` more elements to be inserted + /// in the given `Vec`. The collection may reserve more space to + /// speculatively avoid frequent reallocations. After calling `reserve`, + /// capacity will be greater than or equal to `self.len() + additional`. + /// Does nothing if capacity is already sufficient. + /// + /// # Panics + /// + /// Panics if the new capacity exceeds `isize::MAX` bytes. + /// + /// # Examples + /// + /// ``` + /// let mut vec = vec![1]; + /// vec.reserve(10); + /// assert!(vec.capacity() >= 11); + /// ``` + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn reserve(&mut self, additional: usize) { + self.buf.reserve(self.len, additional); + } + + /// Reserves the minimum capacity for at least `additional` more elements to + /// be inserted in the given `Vec`. Unlike [`reserve`], this will not + /// deliberately over-allocate to speculatively avoid frequent allocations. + /// After calling `reserve_exact`, capacity will be greater than or equal to + /// `self.len() + additional`. Does nothing if the capacity is already + /// sufficient. + /// + /// Note that the allocator may give the collection more space than it + /// requests. Therefore, capacity can not be relied upon to be precisely + /// minimal. Prefer [`reserve`] if future insertions are expected. + /// + /// [`reserve`]: Vec::reserve + /// + /// # Panics + /// + /// Panics if the new capacity exceeds `isize::MAX` bytes. + /// + /// # Examples + /// + /// ``` + /// let mut vec = vec![1]; + /// vec.reserve_exact(10); + /// assert!(vec.capacity() >= 11); + /// ``` + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn reserve_exact(&mut self, additional: usize) { + self.buf.reserve_exact(self.len, additional); + } + + /// Tries to reserve capacity for at least `additional` more elements to be inserted + /// in the given `Vec`. The collection may reserve more space to speculatively avoid + /// frequent reallocations. After calling `try_reserve`, capacity will be + /// greater than or equal to `self.len() + additional` if it returns + /// `Ok(())`. Does nothing if capacity is already sufficient. This method + /// preserves the contents even if an error occurs. + /// + /// # Errors + /// + /// If the capacity overflows, or the allocator reports a failure, then an error + /// is returned. + /// + /// # Examples + /// + /// ``` + /// use std::collections::TryReserveError; + /// + /// fn process_data(data: &[u32]) -> Result, TryReserveError> { + /// let mut output = Vec::new(); + /// + /// // Pre-reserve the memory, exiting if we can't + /// output.try_reserve(data.len())?; + /// + /// // Now we know this can't OOM in the middle of our complex work + /// output.extend(data.iter().map(|&val| { + /// val * 2 + 5 // very complicated + /// })); + /// + /// Ok(output) + /// } + /// # process_data(&[1, 2, 3]).expect("why is the test harness OOMing on 12 bytes?"); + /// ``` + #[inline(always)] + pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError> { + self.buf.try_reserve(self.len, additional) + } + + /// Tries to reserve the minimum capacity for at least `additional` + /// elements to be inserted in the given `Vec`. Unlike [`try_reserve`], + /// this will not deliberately over-allocate to speculatively avoid frequent + /// allocations. After calling `try_reserve_exact`, capacity will be greater + /// than or equal to `self.len() + additional` if it returns `Ok(())`. + /// Does nothing if the capacity is already sufficient. + /// + /// Note that the allocator may give the collection more space than it + /// requests. Therefore, capacity can not be relied upon to be precisely + /// minimal. Prefer [`try_reserve`] if future insertions are expected. + /// + /// [`try_reserve`]: Vec::try_reserve + /// + /// # Errors + /// + /// If the capacity overflows, or the allocator reports a failure, then an error + /// is returned. + /// + /// # Examples + /// + /// ``` + /// use std::collections::TryReserveError; + /// + /// fn process_data(data: &[u32]) -> Result, TryReserveError> { + /// let mut output = Vec::new(); + /// + /// // Pre-reserve the memory, exiting if we can't + /// output.try_reserve_exact(data.len())?; + /// + /// // Now we know this can't OOM in the middle of our complex work + /// output.extend(data.iter().map(|&val| { + /// val * 2 + 5 // very complicated + /// })); + /// + /// Ok(output) + /// } + /// # process_data(&[1, 2, 3]).expect("why is the test harness OOMing on 12 bytes?"); + /// ``` + #[inline(always)] + pub fn try_reserve_exact(&mut self, additional: usize) -> Result<(), TryReserveError> { + self.buf.try_reserve_exact(self.len, additional) + } + + /// Shrinks the capacity of the vector as much as possible. + /// + /// It will drop down as close as possible to the length but the allocator + /// may still inform the vector that there is space for a few more elements. + /// + /// # Examples + /// + /// ``` + /// let mut vec = Vec::with_capacity(10); + /// vec.extend([1, 2, 3]); + /// assert_eq!(vec.capacity(), 10); + /// vec.shrink_to_fit(); + /// assert!(vec.capacity() >= 3); + /// ``` + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn shrink_to_fit(&mut self) { + // The capacity is never less than the length, and there's nothing to do when + // they are equal, so we can avoid the panic case in `RawVec::shrink_to_fit` + // by only calling it with a greater capacity. + if self.capacity() > self.len { + self.buf.shrink_to_fit(self.len); + } + } + + /// Shrinks the capacity of the vector with a lower bound. + /// + /// The capacity will remain at least as large as both the length + /// and the supplied value. + /// + /// If the current capacity is less than the lower limit, this is a no-op. + /// + /// # Examples + /// + /// ``` + /// let mut vec = Vec::with_capacity(10); + /// vec.extend([1, 2, 3]); + /// assert_eq!(vec.capacity(), 10); + /// vec.shrink_to(4); + /// assert!(vec.capacity() >= 4); + /// vec.shrink_to(0); + /// assert!(vec.capacity() >= 3); + /// ``` + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn shrink_to(&mut self, min_capacity: usize) { + if self.capacity() > min_capacity { + self.buf.shrink_to_fit(cmp::max(self.len, min_capacity)); + } + } + + /// Converts the vector into [`Box<[T]>`][owned slice]. + /// + /// If the vector has excess capacity, its items will be moved into a + /// newly-allocated buffer with exactly the right capacity. + /// + /// [owned slice]: Box + /// + /// # Examples + /// + /// ``` + /// let v = vec![1, 2, 3]; + /// + /// let slice = v.into_boxed_slice(); + /// ``` + /// + /// Any excess capacity is removed: + /// + /// ``` + /// let mut vec = Vec::with_capacity(10); + /// vec.extend([1, 2, 3]); + /// + /// assert_eq!(vec.capacity(), 10); + /// let slice = vec.into_boxed_slice(); + /// assert_eq!(slice.into_vec().capacity(), 3); + /// ``` + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn into_boxed_slice(mut self) -> Box<[T], A> { + unsafe { + self.shrink_to_fit(); + let me = ManuallyDrop::new(self); + let buf = ptr::read(&me.buf); + let len = me.len(); + buf.into_box(len).assume_init() + } + } + + /// Shortens the vector, keeping the first `len` elements and dropping + /// the rest. + /// + /// If `len` is greater than the vector's current length, this has no + /// effect. + /// + /// The [`drain`] method can emulate `truncate`, but causes the excess + /// elements to be returned instead of dropped. + /// + /// Note that this method has no effect on the allocated capacity + /// of the vector. + /// + /// # Examples + /// + /// Truncating a five element vector to two elements: + /// + /// ``` + /// let mut vec = vec![1, 2, 3, 4, 5]; + /// vec.truncate(2); + /// assert_eq!(vec, [1, 2]); + /// ``` + /// + /// No truncation occurs when `len` is greater than the vector's current + /// length: + /// + /// ``` + /// let mut vec = vec![1, 2, 3]; + /// vec.truncate(8); + /// assert_eq!(vec, [1, 2, 3]); + /// ``` + /// + /// Truncating when `len == 0` is equivalent to calling the [`clear`] + /// method. + /// + /// ``` + /// let mut vec = vec![1, 2, 3]; + /// vec.truncate(0); + /// assert_eq!(vec, []); + /// ``` + /// + /// [`clear`]: Vec::clear + /// [`drain`]: Vec::drain + #[inline(always)] + pub fn truncate(&mut self, len: usize) { + // This is safe because: + // + // * the slice passed to `drop_in_place` is valid; the `len > self.len` + // case avoids creating an invalid slice, and + // * the `len` of the vector is shrunk before calling `drop_in_place`, + // such that no value will be dropped twice in case `drop_in_place` + // were to panic once (if it panics twice, the program aborts). + unsafe { + // Note: It's intentional that this is `>` and not `>=`. + // Changing it to `>=` has negative performance + // implications in some cases. See #78884 for more. + if len > self.len { + return; + } + let remaining_len = self.len - len; + let s = ptr::slice_from_raw_parts_mut(self.as_mut_ptr().add(len), remaining_len); + self.len = len; + ptr::drop_in_place(s); + } + } + + /// Extracts a slice containing the entire vector. + /// + /// Equivalent to `&s[..]`. + /// + /// # Examples + /// + /// ``` + /// use std::io::{self, Write}; + /// let buffer = vec![1, 2, 3, 5, 8]; + /// io::sink().write(buffer.as_slice()).unwrap(); + /// ``` + #[inline(always)] + pub fn as_slice(&self) -> &[T] { + self + } + + /// Extracts a mutable slice of the entire vector. + /// + /// Equivalent to `&mut s[..]`. + /// + /// # Examples + /// + /// ``` + /// use std::io::{self, Read}; + /// let mut buffer = vec![0; 3]; + /// io::repeat(0b101).read_exact(buffer.as_mut_slice()).unwrap(); + /// ``` + #[inline(always)] + pub fn as_mut_slice(&mut self) -> &mut [T] { + self + } + + /// Returns a raw pointer to the vector's buffer, or a dangling raw pointer + /// valid for zero sized reads if the vector didn't allocate. + /// + /// The caller must ensure that the vector outlives the pointer this + /// function returns, or else it will end up pointing to garbage. + /// Modifying the vector may cause its buffer to be reallocated, + /// which would also make any pointers to it invalid. + /// + /// The caller must also ensure that the memory the pointer (non-transitively) points to + /// is never written to (except inside an `UnsafeCell`) using this pointer or any pointer + /// derived from it. If you need to mutate the contents of the slice, use [`as_mut_ptr`]. + /// + /// # Examples + /// + /// ``` + /// let x = vec![1, 2, 4]; + /// let x_ptr = x.as_ptr(); + /// + /// unsafe { + /// for i in 0..x.len() { + /// assert_eq!(*x_ptr.add(i), 1 << i); + /// } + /// } + /// ``` + /// + /// [`as_mut_ptr`]: Vec::as_mut_ptr + #[inline(always)] + pub fn as_ptr(&self) -> *const T { + // We shadow the slice method of the same name to avoid going through + // `deref`, which creates an intermediate reference. + let ptr = self.buf.ptr(); + unsafe { + assume(!ptr.is_null()); + } + ptr + } + + /// Returns an unsafe mutable pointer to the vector's buffer, or a dangling + /// raw pointer valid for zero sized reads if the vector didn't allocate. + /// + /// The caller must ensure that the vector outlives the pointer this + /// function returns, or else it will end up pointing to garbage. + /// Modifying the vector may cause its buffer to be reallocated, + /// which would also make any pointers to it invalid. + /// + /// # Examples + /// + /// ``` + /// // Allocate vector big enough for 4 elements. + /// let size = 4; + /// let mut x: Vec = Vec::with_capacity(size); + /// let x_ptr = x.as_mut_ptr(); + /// + /// // Initialize elements via raw pointer writes, then set length. + /// unsafe { + /// for i in 0..size { + /// *x_ptr.add(i) = i as i32; + /// } + /// x.set_len(size); + /// } + /// assert_eq!(&*x, &[0, 1, 2, 3]); + /// ``` + #[inline(always)] + pub fn as_mut_ptr(&mut self) -> *mut T { + // We shadow the slice method of the same name to avoid going through + // `deref_mut`, which creates an intermediate reference. + let ptr = self.buf.ptr(); + unsafe { + assume(!ptr.is_null()); + } + ptr + } + + /// Returns a reference to the underlying allocator. + #[inline(always)] + pub fn allocator(&self) -> &A { + self.buf.allocator() + } + + /// Forces the length of the vector to `new_len`. + /// + /// This is a low-level operation that maintains none of the normal + /// invariants of the type. Normally changing the length of a vector + /// is done using one of the safe operations instead, such as + /// [`truncate`], [`resize`], [`extend`], or [`clear`]. + /// + /// [`truncate`]: Vec::truncate + /// [`resize`]: Vec::resize + /// [`extend`]: Extend::extend + /// [`clear`]: Vec::clear + /// + /// # Safety + /// + /// - `new_len` must be less than or equal to [`capacity()`]. + /// - The elements at `old_len..new_len` must be initialized. + /// + /// [`capacity()`]: Vec::capacity + /// + /// # Examples + /// + /// This method can be useful for situations in which the vector + /// is serving as a buffer for other code, particularly over FFI: + /// + /// ```no_run + /// # #![allow(dead_code)] + /// # // This is just a minimal skeleton for the doc example; + /// # // don't use this as a starting point for a real library. + /// # pub struct StreamWrapper { strm: *mut std::ffi::c_void } + /// # const Z_OK: i32 = 0; + /// # extern "C" { + /// # fn deflateGetDictionary( + /// # strm: *mut std::ffi::c_void, + /// # dictionary: *mut u8, + /// # dictLength: *mut usize, + /// # ) -> i32; + /// # } + /// # impl StreamWrapper { + /// pub fn get_dictionary(&self) -> Option> { + /// // Per the FFI method's docs, "32768 bytes is always enough". + /// let mut dict = Vec::with_capacity(32_768); + /// let mut dict_length = 0; + /// // SAFETY: When `deflateGetDictionary` returns `Z_OK`, it holds that: + /// // 1. `dict_length` elements were initialized. + /// // 2. `dict_length` <= the capacity (32_768) + /// // which makes `set_len` safe to call. + /// unsafe { + /// // Make the FFI call... + /// let r = deflateGetDictionary(self.strm, dict.as_mut_ptr(), &mut dict_length); + /// if r == Z_OK { + /// // ...and update the length to what was initialized. + /// dict.set_len(dict_length); + /// Some(dict) + /// } else { + /// None + /// } + /// } + /// } + /// # } + /// ``` + /// + /// While the following example is sound, there is a memory leak since + /// the inner vectors were not freed prior to the `set_len` call: + /// + /// ``` + /// let mut vec = vec![vec![1, 0, 0], + /// vec![0, 1, 0], + /// vec![0, 0, 1]]; + /// // SAFETY: + /// // 1. `old_len..0` is empty so no elements need to be initialized. + /// // 2. `0 <= capacity` always holds whatever `capacity` is. + /// unsafe { + /// vec.set_len(0); + /// } + /// ``` + /// + /// Normally, here, one would use [`clear`] instead to correctly drop + /// the contents and thus not leak memory. + #[inline(always)] + pub unsafe fn set_len(&mut self, new_len: usize) { + debug_assert!(new_len <= self.capacity()); + + self.len = new_len; + } + + /// Removes an element from the vector and returns it. + /// + /// The removed element is replaced by the last element of the vector. + /// + /// This does not preserve ordering, but is *O*(1). + /// If you need to preserve the element order, use [`remove`] instead. + /// + /// [`remove`]: Vec::remove + /// + /// # Panics + /// + /// Panics if `index` is out of bounds. + /// + /// # Examples + /// + /// ``` + /// let mut v = vec!["foo", "bar", "baz", "qux"]; + /// + /// assert_eq!(v.swap_remove(1), "bar"); + /// assert_eq!(v, ["foo", "qux", "baz"]); + /// + /// assert_eq!(v.swap_remove(0), "foo"); + /// assert_eq!(v, ["baz", "qux"]); + /// ``` + #[inline(always)] + pub fn swap_remove(&mut self, index: usize) -> T { + #[cold] + #[inline(never)] + fn assert_failed(index: usize, len: usize) -> ! { + panic!( + "swap_remove index (is {}) should be < len (is {})", + index, len + ); + } + + let len = self.len(); + if index >= len { + assert_failed(index, len); + } + unsafe { + // We replace self[index] with the last element. Note that if the + // bounds check above succeeds there must be a last element (which + // can be self[index] itself). + let value = ptr::read(self.as_ptr().add(index)); + let base_ptr = self.as_mut_ptr(); + ptr::copy(base_ptr.add(len - 1), base_ptr.add(index), 1); + self.set_len(len - 1); + value + } + } + + /// Inserts an element at position `index` within the vector, shifting all + /// elements after it to the right. + /// + /// # Panics + /// + /// Panics if `index > len`. + /// + /// # Examples + /// + /// ``` + /// let mut vec = vec![1, 2, 3]; + /// vec.insert(1, 4); + /// assert_eq!(vec, [1, 4, 2, 3]); + /// vec.insert(4, 5); + /// assert_eq!(vec, [1, 4, 2, 3, 5]); + /// ``` + #[cfg(not(no_global_oom_handling))] + pub fn insert(&mut self, index: usize, element: T) { + #[cold] + #[inline(never)] + fn assert_failed(index: usize, len: usize) -> ! { + panic!( + "insertion index (is {}) should be <= len (is {})", + index, len + ); + } + + let len = self.len(); + + // space for the new element + if len == self.buf.capacity() { + self.reserve(1); + } + + unsafe { + // infallible + // The spot to put the new value + { + let p = self.as_mut_ptr().add(index); + match cmp::Ord::cmp(&index, &len) { + Ordering::Less => { + // Shift everything over to make space. (Duplicating the + // `index`th element into two consecutive places.) + ptr::copy(p, p.add(1), len - index); + } + Ordering::Equal => { + // No elements need shifting. + } + Ordering::Greater => { + assert_failed(index, len); + } + } + // Write it in, overwriting the first copy of the `index`th + // element. + ptr::write(p, element); + } + self.set_len(len + 1); + } + } + + /// Removes and returns the element at position `index` within the vector, + /// shifting all elements after it to the left. + /// + /// Note: Because this shifts over the remaining elements, it has a + /// worst-case performance of *O*(*n*). If you don't need the order of elements + /// to be preserved, use [`swap_remove`] instead. If you'd like to remove + /// elements from the beginning of the `Vec`, consider using + /// [`VecDeque::pop_front`] instead. + /// + /// [`swap_remove`]: Vec::swap_remove + /// [`VecDeque::pop_front`]: alloc_crate::collections::VecDeque::pop_front + /// + /// # Panics + /// + /// Panics if `index` is out of bounds. + /// + /// # Examples + /// + /// ``` + /// let mut v = vec![1, 2, 3]; + /// assert_eq!(v.remove(1), 2); + /// assert_eq!(v, [1, 3]); + /// ``` + #[track_caller] + #[inline(always)] + pub fn remove(&mut self, index: usize) -> T { + #[cold] + #[inline(never)] + #[track_caller] + fn assert_failed(index: usize, len: usize) -> ! { + panic!("removal index (is {}) should be < len (is {})", index, len); + } + + let len = self.len(); + if index >= len { + assert_failed(index, len); + } + unsafe { + // infallible + let ret; + { + // the place we are taking from. + let ptr = self.as_mut_ptr().add(index); + // copy it out, unsafely having a copy of the value on + // the stack and in the vector at the same time. + ret = ptr::read(ptr); + + // Shift everything down to fill in that spot. + ptr::copy(ptr.add(1), ptr, len - index - 1); + } + self.set_len(len - 1); + ret + } + } + + /// Retains only the elements specified by the predicate. + /// + /// In other words, remove all elements `e` for which `f(&e)` returns `false`. + /// This method operates in place, visiting each element exactly once in the + /// original order, and preserves the order of the retained elements. + /// + /// # Examples + /// + /// ``` + /// let mut vec = vec![1, 2, 3, 4]; + /// vec.retain(|&x| x % 2 == 0); + /// assert_eq!(vec, [2, 4]); + /// ``` + /// + /// Because the elements are visited exactly once in the original order, + /// external state may be used to decide which elements to keep. + /// + /// ``` + /// let mut vec = vec![1, 2, 3, 4, 5]; + /// let keep = [false, true, true, false, true]; + /// let mut iter = keep.iter(); + /// vec.retain(|_| *iter.next().unwrap()); + /// assert_eq!(vec, [2, 3, 5]); + /// ``` + #[inline(always)] + pub fn retain(&mut self, mut f: F) + where + F: FnMut(&T) -> bool, + { + self.retain_mut(|elem| f(elem)); + } + + /// Retains only the elements specified by the predicate, passing a mutable reference to it. + /// + /// In other words, remove all elements `e` such that `f(&mut e)` returns `false`. + /// This method operates in place, visiting each element exactly once in the + /// original order, and preserves the order of the retained elements. + /// + /// # Examples + /// + /// ``` + /// let mut vec = vec![1, 2, 3, 4]; + /// vec.retain_mut(|x| if *x <= 3 { + /// *x += 1; + /// true + /// } else { + /// false + /// }); + /// assert_eq!(vec, [2, 3, 4]); + /// ``` + #[inline] + pub fn retain_mut(&mut self, mut f: F) + where + F: FnMut(&mut T) -> bool, + { + let original_len = self.len(); + // Avoid double drop if the drop guard is not executed, + // since we may make some holes during the process. + unsafe { self.set_len(0) }; + + // Vec: [Kept, Kept, Hole, Hole, Hole, Hole, Unchecked, Unchecked] + // |<- processed len ->| ^- next to check + // |<- deleted cnt ->| + // |<- original_len ->| + // Kept: Elements which predicate returns true on. + // Hole: Moved or dropped element slot. + // Unchecked: Unchecked valid elements. + // + // This drop guard will be invoked when predicate or `drop` of element panicked. + // It shifts unchecked elements to cover holes and `set_len` to the correct length. + // In cases when predicate and `drop` never panick, it will be optimized out. + struct BackshiftOnDrop<'a, T, A: Allocator> { + v: &'a mut Vec, + processed_len: usize, + deleted_cnt: usize, + original_len: usize, + } + + impl Drop for BackshiftOnDrop<'_, T, A> { + fn drop(&mut self) { + if self.deleted_cnt > 0 { + // SAFETY: Trailing unchecked items must be valid since we never touch them. + unsafe { + ptr::copy( + self.v.as_ptr().add(self.processed_len), + self.v + .as_mut_ptr() + .add(self.processed_len - self.deleted_cnt), + self.original_len - self.processed_len, + ); + } + } + // SAFETY: After filling holes, all items are in contiguous memory. + unsafe { + self.v.set_len(self.original_len - self.deleted_cnt); + } + } + } + + let mut g = BackshiftOnDrop { + v: self, + processed_len: 0, + deleted_cnt: 0, + original_len, + }; + + fn process_loop( + original_len: usize, + f: &mut F, + g: &mut BackshiftOnDrop<'_, T, A>, + ) where + F: FnMut(&mut T) -> bool, + { + while g.processed_len != original_len { + // SAFETY: Unchecked element must be valid. + let cur = unsafe { &mut *g.v.as_mut_ptr().add(g.processed_len) }; + if !f(cur) { + // Advance early to avoid double drop if `drop_in_place` panicked. + g.processed_len += 1; + g.deleted_cnt += 1; + // SAFETY: We never touch this element again after dropped. + unsafe { ptr::drop_in_place(cur) }; + // We already advanced the counter. + if DELETED { + continue; + } else { + break; + } + } + if DELETED { + // SAFETY: `deleted_cnt` > 0, so the hole slot must not overlap with current element. + // We use copy for move, and never touch this element again. + unsafe { + let hole_slot = g.v.as_mut_ptr().add(g.processed_len - g.deleted_cnt); + ptr::copy_nonoverlapping(cur, hole_slot, 1); + } + } + g.processed_len += 1; + } + } + + // Stage 1: Nothing was deleted. + process_loop::(original_len, &mut f, &mut g); + + // Stage 2: Some elements were deleted. + process_loop::(original_len, &mut f, &mut g); + + // All item are processed. This can be optimized to `set_len` by LLVM. + drop(g); + } + + /// Removes all but the first of consecutive elements in the vector that resolve to the same + /// key. + /// + /// If the vector is sorted, this removes all duplicates. + /// + /// # Examples + /// + /// ``` + /// let mut vec = vec![10, 20, 21, 30, 20]; + /// + /// vec.dedup_by_key(|i| *i / 10); + /// + /// assert_eq!(vec, [10, 20, 30, 20]); + /// ``` + #[inline(always)] + pub fn dedup_by_key(&mut self, mut key: F) + where + F: FnMut(&mut T) -> K, + K: PartialEq, + { + self.dedup_by(|a, b| key(a) == key(b)) + } + + /// Removes all but the first of consecutive elements in the vector satisfying a given equality + /// relation. + /// + /// The `same_bucket` function is passed references to two elements from the vector and + /// must determine if the elements compare equal. The elements are passed in opposite order + /// from their order in the slice, so if `same_bucket(a, b)` returns `true`, `a` is removed. + /// + /// If the vector is sorted, this removes all duplicates. + /// + /// # Examples + /// + /// ``` + /// let mut vec = vec!["foo", "bar", "Bar", "baz", "bar"]; + /// + /// vec.dedup_by(|a, b| a.eq_ignore_ascii_case(b)); + /// + /// assert_eq!(vec, ["foo", "bar", "baz", "bar"]); + /// ``` + #[inline] + pub fn dedup_by(&mut self, mut same_bucket: F) + where + F: FnMut(&mut T, &mut T) -> bool, + { + let len = self.len(); + if len <= 1 { + return; + } + + /* INVARIANT: vec.len() > read >= write > write-1 >= 0 */ + struct FillGapOnDrop<'a, T, A: Allocator> { + /* Offset of the element we want to check if it is duplicate */ + read: usize, + + /* Offset of the place where we want to place the non-duplicate + * when we find it. */ + write: usize, + + /* The Vec that would need correction if `same_bucket` panicked */ + vec: &'a mut Vec, + } + + impl<'a, T, A: Allocator> Drop for FillGapOnDrop<'a, T, A> { + fn drop(&mut self) { + /* This code gets executed when `same_bucket` panics */ + + /* SAFETY: invariant guarantees that `read - write` + * and `len - read` never overflow and that the copy is always + * in-bounds. */ + unsafe { + let ptr = self.vec.as_mut_ptr(); + let len = self.vec.len(); + + /* How many items were left when `same_bucket` panicked. + * Basically vec[read..].len() */ + let items_left = len.wrapping_sub(self.read); + + /* Pointer to first item in vec[write..write+items_left] slice */ + let dropped_ptr = ptr.add(self.write); + /* Pointer to first item in vec[read..] slice */ + let valid_ptr = ptr.add(self.read); + + /* Copy `vec[read..]` to `vec[write..write+items_left]`. + * The slices can overlap, so `copy_nonoverlapping` cannot be used */ + ptr::copy(valid_ptr, dropped_ptr, items_left); + + /* How many items have been already dropped + * Basically vec[read..write].len() */ + let dropped = self.read.wrapping_sub(self.write); + + self.vec.set_len(len - dropped); + } + } + } + + let mut gap = FillGapOnDrop { + read: 1, + write: 1, + vec: self, + }; + let ptr = gap.vec.as_mut_ptr(); + + /* Drop items while going through Vec, it should be more efficient than + * doing slice partition_dedup + truncate */ + + /* SAFETY: Because of the invariant, read_ptr, prev_ptr and write_ptr + * are always in-bounds and read_ptr never aliases prev_ptr */ + unsafe { + while gap.read < len { + let read_ptr = ptr.add(gap.read); + let prev_ptr = ptr.add(gap.write.wrapping_sub(1)); + + if same_bucket(&mut *read_ptr, &mut *prev_ptr) { + // Increase `gap.read` now since the drop may panic. + gap.read += 1; + /* We have found duplicate, drop it in-place */ + ptr::drop_in_place(read_ptr); + } else { + let write_ptr = ptr.add(gap.write); + + /* Because `read_ptr` can be equal to `write_ptr`, we either + * have to use `copy` or conditional `copy_nonoverlapping`. + * Looks like the first option is faster. */ + ptr::copy(read_ptr, write_ptr, 1); + + /* We have filled that place, so go further */ + gap.write += 1; + gap.read += 1; + } + } + + /* Technically we could let `gap` clean up with its Drop, but + * when `same_bucket` is guaranteed to not panic, this bloats a little + * the codegen, so we just do it manually */ + gap.vec.set_len(gap.write); + mem::forget(gap); + } + } + + /// Appends an element to the back of a collection. + /// + /// # Panics + /// + /// Panics if the new capacity exceeds `isize::MAX` bytes. + /// + /// # Examples + /// + /// ``` + /// let mut vec = vec![1, 2]; + /// vec.push(3); + /// assert_eq!(vec, [1, 2, 3]); + /// ``` + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn push(&mut self, value: T) { + // This will panic or abort if we would allocate > isize::MAX bytes + // or if the length increment would overflow for zero-sized types. + if self.len == self.buf.capacity() { + self.buf.reserve_for_push(self.len); + } + unsafe { + let end = self.as_mut_ptr().add(self.len); + ptr::write(end, value); + self.len += 1; + } + } + + /// Appends an element if there is sufficient spare capacity, otherwise an error is returned + /// with the element. + /// + /// Unlike [`push`] this method will not reallocate when there's insufficient capacity. + /// The caller should use [`reserve`] or [`try_reserve`] to ensure that there is enough capacity. + /// + /// [`push`]: Vec::push + /// [`reserve`]: Vec::reserve + /// [`try_reserve`]: Vec::try_reserve + /// + /// # Examples + /// + /// A manual, panic-free alternative to [`FromIterator`]: + /// + /// ``` + /// #![feature(vec_push_within_capacity)] + /// + /// use std::collections::TryReserveError; + /// fn from_iter_fallible(iter: impl Iterator) -> Result, TryReserveError> { + /// let mut vec = Vec::new(); + /// for value in iter { + /// if let Err(value) = vec.push_within_capacity(value) { + /// vec.try_reserve(1)?; + /// // this cannot fail, the previous line either returned or added at least 1 free slot + /// let _ = vec.push_within_capacity(value); + /// } + /// } + /// Ok(vec) + /// } + /// assert_eq!(from_iter_fallible(0..100), Ok(Vec::from_iter(0..100))); + /// ``` + #[inline(always)] + pub fn push_within_capacity(&mut self, value: T) -> Result<(), T> { + if self.len == self.buf.capacity() { + return Err(value); + } + unsafe { + let end = self.as_mut_ptr().add(self.len); + ptr::write(end, value); + self.len += 1; + } + Ok(()) + } + + /// Removes the last element from a vector and returns it, or [`None`] if it + /// is empty. + /// + /// If you'd like to pop the first element, consider using + /// [`VecDeque::pop_front`] instead. + /// + /// [`VecDeque::pop_front`]: alloc_crate::collections::VecDeque::pop_front + /// + /// # Examples + /// + /// ``` + /// let mut vec = vec![1, 2, 3]; + /// assert_eq!(vec.pop(), Some(3)); + /// assert_eq!(vec, [1, 2]); + /// ``` + #[inline(always)] + pub fn pop(&mut self) -> Option { + if self.len == 0 { + None + } else { + unsafe { + self.len -= 1; + Some(ptr::read(self.as_ptr().add(self.len()))) + } + } + } + + /// Moves all the elements of `other` into `self`, leaving `other` empty. + /// + /// # Panics + /// + /// Panics if the new capacity exceeds `isize::MAX` bytes. + /// + /// # Examples + /// + /// ``` + /// let mut vec = vec![1, 2, 3]; + /// let mut vec2 = vec![4, 5, 6]; + /// vec.append(&mut vec2); + /// assert_eq!(vec, [1, 2, 3, 4, 5, 6]); + /// assert_eq!(vec2, []); + /// ``` + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn append(&mut self, other: &mut Self) { + unsafe { + self.append_elements(other.as_slice() as _); + other.set_len(0); + } + } + + /// Appends elements to `self` from other buffer. + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + unsafe fn append_elements(&mut self, other: *const [T]) { + let count = unsafe { (*other).len() }; + self.reserve(count); + let len = self.len(); + unsafe { ptr::copy_nonoverlapping(other as *const T, self.as_mut_ptr().add(len), count) }; + self.len += count; + } + + /// Removes the specified range from the vector in bulk, returning all + /// removed elements as an iterator. If the iterator is dropped before + /// being fully consumed, it drops the remaining removed elements. + /// + /// The returned iterator keeps a mutable borrow on the vector to optimize + /// its implementation. + /// + /// # Panics + /// + /// Panics if the starting point is greater than the end point or if + /// the end point is greater than the length of the vector. + /// + /// # Leaking + /// + /// If the returned iterator goes out of scope without being dropped (due to + /// [`mem::forget`], for example), the vector may have lost and leaked + /// elements arbitrarily, including elements outside the range. + /// + /// # Examples + /// + /// ``` + /// let mut v = vec![1, 2, 3]; + /// let u: Vec<_> = v.drain(1..).collect(); + /// assert_eq!(v, &[1]); + /// assert_eq!(u, &[2, 3]); + /// + /// // A full range clears the vector, like `clear()` does + /// v.drain(..); + /// assert_eq!(v, &[]); + /// ``` + #[inline(always)] + pub fn drain(&mut self, range: R) -> Drain<'_, T, A> + where + R: RangeBounds, + { + // 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. + // + // Drain will ptr::read out the values to remove. + // When finished, remaining tail of the vec is copied back to cover + // the hole, and the vector length is restored to the new length. + // + let len = self.len(); + + // Replaced by code below + // let Range { start, end } = slice::range(range, ..len); + + // Panics if range is out of bounds + let _ = &self.as_slice()[(range.start_bound().cloned(), range.end_bound().cloned())]; + + let start = match range.start_bound() { + Bound::Included(&n) => n, + Bound::Excluded(&n) => n + 1, + Bound::Unbounded => 0, + }; + let end = match range.end_bound() { + Bound::Included(&n) => n + 1, + Bound::Excluded(&n) => n, + Bound::Unbounded => len, + }; + + unsafe { + // set self.vec length's to start, to be safe in case Drain is leaked + self.set_len(start); + let range_slice = slice::from_raw_parts(self.as_ptr().add(start), end - start); + Drain { + tail_start: end, + tail_len: len - end, + iter: range_slice.iter(), + vec: NonNull::from(self), + } + } + } + + /// Clears the vector, removing all values. + /// + /// Note that this method has no effect on the allocated capacity + /// of the vector. + /// + /// # Examples + /// + /// ``` + /// let mut v = vec![1, 2, 3]; + /// + /// v.clear(); + /// + /// assert!(v.is_empty()); + /// ``` + #[inline(always)] + pub fn clear(&mut self) { + let elems: *mut [T] = self.as_mut_slice(); + + // SAFETY: + // - `elems` comes directly from `as_mut_slice` and is therefore valid. + // - Setting `self.len` before calling `drop_in_place` means that, + // if an element's `Drop` impl panics, the vector's `Drop` impl will + // do nothing (leaking the rest of the elements) instead of dropping + // some twice. + unsafe { + self.len = 0; + ptr::drop_in_place(elems); + } + } + + /// Returns the number of elements in the vector, also referred to + /// as its 'length'. + /// + /// # Examples + /// + /// ``` + /// let a = vec![1, 2, 3]; + /// assert_eq!(a.len(), 3); + /// ``` + #[inline(always)] + pub fn len(&self) -> usize { + self.len + } + + /// Returns `true` if the vector contains no elements. + /// + /// # Examples + /// + /// ``` + /// let mut v = Vec::new(); + /// assert!(v.is_empty()); + /// + /// v.push(1); + /// assert!(!v.is_empty()); + /// ``` + #[inline(always)] + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + + /// Splits the collection into two at the given index. + /// + /// Returns a newly allocated vector containing the elements in the range + /// `[at, len)`. After the call, the original vector will be left containing + /// the elements `[0, at)` with its previous capacity unchanged. + /// + /// # Panics + /// + /// Panics if `at > len`. + /// + /// # Examples + /// + /// ``` + /// let mut vec = vec![1, 2, 3]; + /// let vec2 = vec.split_off(1); + /// assert_eq!(vec, [1]); + /// assert_eq!(vec2, [2, 3]); + /// ``` + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + #[must_use = "use `.truncate()` if you don't need the other half"] + pub fn split_off(&mut self, at: usize) -> Self + where + A: Clone, + { + #[cold] + #[inline(never)] + fn assert_failed(at: usize, len: usize) -> ! { + panic!("`at` split index (is {}) should be <= len (is {})", at, len); + } + + if at > self.len() { + assert_failed(at, self.len()); + } + + if at == 0 { + // the new vector can take over the original buffer and avoid the copy + return mem::replace( + self, + Vec::with_capacity_in(self.capacity(), self.allocator().clone()), + ); + } + + let other_len = self.len - at; + let mut other = Vec::with_capacity_in(other_len, self.allocator().clone()); + + // Unsafely `set_len` and copy items to `other`. + unsafe { + self.set_len(at); + other.set_len(other_len); + + ptr::copy_nonoverlapping(self.as_ptr().add(at), other.as_mut_ptr(), other.len()); + } + other + } + + /// Resizes the `Vec` in-place so that `len` is equal to `new_len`. + /// + /// If `new_len` is greater than `len`, the `Vec` is extended by the + /// difference, with each additional slot filled with the result of + /// calling the closure `f`. The return values from `f` will end up + /// in the `Vec` in the order they have been generated. + /// + /// If `new_len` is less than `len`, the `Vec` is simply truncated. + /// + /// This method uses a closure to create new values on every push. If + /// you'd rather [`Clone`] a given value, use [`Vec::resize`]. If you + /// want to use the [`Default`] trait to generate values, you can + /// pass [`Default::default`] as the second argument. + /// + /// # Examples + /// + /// ``` + /// let mut vec = vec![1, 2, 3]; + /// vec.resize_with(5, Default::default); + /// assert_eq!(vec, [1, 2, 3, 0, 0]); + /// + /// let mut vec = vec![]; + /// let mut p = 1; + /// vec.resize_with(4, || { p *= 2; p }); + /// assert_eq!(vec, [2, 4, 8, 16]); + /// ``` + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn resize_with(&mut self, new_len: usize, f: F) + where + F: FnMut() -> T, + { + let len = self.len(); + if new_len > len { + self.extend(iter::repeat_with(f).take(new_len - len)); + } else { + self.truncate(new_len); + } + } + + /// Consumes and leaks the `Vec`, returning a mutable reference to the contents, + /// `&'a mut [T]`. Note that the type `T` must outlive the chosen lifetime + /// `'a`. If the type has only static references, or none at all, then this + /// may be chosen to be `'static`. + /// + /// As of Rust 1.57, this method does not reallocate or shrink the `Vec`, + /// so the leaked allocation may include unused capacity that is not part + /// of the returned slice. + /// + /// This function is mainly useful for data that lives for the remainder of + /// the program's life. Dropping the returned reference will cause a memory + /// leak. + /// + /// # Examples + /// + /// Simple usage: + /// + /// ``` + /// let x = vec![1, 2, 3]; + /// let static_ref: &'static mut [usize] = x.leak(); + /// static_ref[0] += 1; + /// assert_eq!(static_ref, &[2, 2, 3]); + /// ``` + #[inline(always)] + pub fn leak<'a>(self) -> &'a mut [T] + where + A: 'a, + { + let mut me = ManuallyDrop::new(self); + unsafe { slice::from_raw_parts_mut(me.as_mut_ptr(), me.len) } + } + + /// Returns the remaining spare capacity of the vector as a slice of + /// `MaybeUninit`. + /// + /// The returned slice can be used to fill the vector with data (e.g. by + /// reading from a file) before marking the data as initialized using the + /// [`set_len`] method. + /// + /// [`set_len`]: Vec::set_len + /// + /// # Examples + /// + /// ``` + /// // Allocate vector big enough for 10 elements. + /// let mut v = Vec::with_capacity(10); + /// + /// // Fill in the first 3 elements. + /// let uninit = v.spare_capacity_mut(); + /// uninit[0].write(0); + /// uninit[1].write(1); + /// uninit[2].write(2); + /// + /// // Mark the first 3 elements of the vector as being initialized. + /// unsafe { + /// v.set_len(3); + /// } + /// + /// assert_eq!(&v, &[0, 1, 2]); + /// ``` + #[inline(always)] + pub fn spare_capacity_mut(&mut self) -> &mut [MaybeUninit] { + // Note: + // This method is not implemented in terms of `split_at_spare_mut`, + // to prevent invalidation of pointers to the buffer. + unsafe { + slice::from_raw_parts_mut( + self.as_mut_ptr().add(self.len) as *mut MaybeUninit, + self.buf.capacity() - self.len, + ) + } + } + + /// Returns vector content as a slice of `T`, along with the remaining spare + /// capacity of the vector as a slice of `MaybeUninit`. + /// + /// The returned spare capacity slice can be used to fill the vector with data + /// (e.g. by reading from a file) before marking the data as initialized using + /// the [`set_len`] method. + /// + /// [`set_len`]: Vec::set_len + /// + /// Note that this is a low-level API, which should be used with care for + /// optimization purposes. If you need to append data to a `Vec` + /// you can use [`push`], [`extend`], [`extend_from_slice`], + /// [`extend_from_within`], [`insert`], [`append`], [`resize`] or + /// [`resize_with`], depending on your exact needs. + /// + /// [`push`]: Vec::push + /// [`extend`]: Vec::extend + /// [`extend_from_slice`]: Vec::extend_from_slice + /// [`extend_from_within`]: Vec::extend_from_within + /// [`insert`]: Vec::insert + /// [`append`]: Vec::append + /// [`resize`]: Vec::resize + /// [`resize_with`]: Vec::resize_with + /// + /// # Examples + /// + /// ``` + /// #![feature(vec_split_at_spare)] + /// + /// let mut v = vec![1, 1, 2]; + /// + /// // Reserve additional space big enough for 10 elements. + /// v.reserve(10); + /// + /// let (init, uninit) = v.split_at_spare_mut(); + /// let sum = init.iter().copied().sum::(); + /// + /// // Fill in the next 4 elements. + /// uninit[0].write(sum); + /// uninit[1].write(sum * 2); + /// uninit[2].write(sum * 3); + /// uninit[3].write(sum * 4); + /// + /// // Mark the 4 elements of the vector as being initialized. + /// unsafe { + /// let len = v.len(); + /// v.set_len(len + 4); + /// } + /// + /// assert_eq!(&v, &[1, 1, 2, 4, 8, 12, 16]); + /// ``` + #[inline(always)] + pub fn split_at_spare_mut(&mut self) -> (&mut [T], &mut [MaybeUninit]) { + // SAFETY: + // - len is ignored and so never changed + let (init, spare, _) = unsafe { self.split_at_spare_mut_with_len() }; + (init, spare) + } + + /// Safety: changing returned .2 (&mut usize) is considered the same as calling `.set_len(_)`. + /// + /// This method provides unique access to all vec parts at once in `extend_from_within`. + unsafe fn split_at_spare_mut_with_len( + &mut self, + ) -> (&mut [T], &mut [MaybeUninit], &mut usize) { + let ptr = self.as_mut_ptr(); + // SAFETY: + // - `ptr` is guaranteed to be valid for `self.len` elements + // - but the allocation extends out to `self.buf.capacity()` elements, possibly + // uninitialized + let spare_ptr = unsafe { ptr.add(self.len) }; + let spare_ptr = spare_ptr.cast::>(); + let spare_len = self.buf.capacity() - self.len; + + // SAFETY: + // - `ptr` is guaranteed to be valid for `self.len` elements + // - `spare_ptr` is pointing one element past the buffer, so it doesn't overlap with `initialized` + unsafe { + let initialized = slice::from_raw_parts_mut(ptr, self.len); + let spare = slice::from_raw_parts_mut(spare_ptr, spare_len); + + (initialized, spare, &mut self.len) + } + } +} + +impl Vec { + /// Resizes the `Vec` in-place so that `len` is equal to `new_len`. + /// + /// If `new_len` is greater than `len`, the `Vec` is extended by the + /// difference, with each additional slot filled with `value`. + /// If `new_len` is less than `len`, the `Vec` is simply truncated. + /// + /// This method requires `T` to implement [`Clone`], + /// in order to be able to clone the passed value. + /// If you need more flexibility (or want to rely on [`Default`] instead of + /// [`Clone`]), use [`Vec::resize_with`]. + /// If you only need to resize to a smaller size, use [`Vec::truncate`]. + /// + /// # Examples + /// + /// ``` + /// let mut vec = vec!["hello"]; + /// vec.resize(3, "world"); + /// assert_eq!(vec, ["hello", "world", "world"]); + /// + /// let mut vec = vec![1, 2, 3, 4]; + /// vec.resize(2, 0); + /// assert_eq!(vec, [1, 2]); + /// ``` + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn resize(&mut self, new_len: usize, value: T) { + let len = self.len(); + + if new_len > len { + self.extend_with(new_len - len, ExtendElement(value)) + } else { + self.truncate(new_len); + } + } + + /// Clones and appends all elements in a slice to the `Vec`. + /// + /// Iterates over the slice `other`, clones each element, and then appends + /// it to this `Vec`. The `other` slice is traversed in-order. + /// + /// Note that this function is same as [`extend`] except that it is + /// specialized to work with slices instead. If and when Rust gets + /// specialization this function will likely be deprecated (but still + /// available). + /// + /// # Examples + /// + /// ``` + /// let mut vec = vec![1]; + /// vec.extend_from_slice(&[2, 3, 4]); + /// assert_eq!(vec, [1, 2, 3, 4]); + /// ``` + /// + /// [`extend`]: Vec::extend + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn extend_from_slice(&mut self, other: &[T]) { + self.extend(other.iter().cloned()) + } + + /// Copies elements from `src` range to the end of the vector. + /// + /// # Panics + /// + /// Panics if the starting point is greater than the end point or if + /// the end point is greater than the length of the vector. + /// + /// # Examples + /// + /// ``` + /// let mut vec = vec![0, 1, 2, 3, 4]; + /// + /// vec.extend_from_within(2..); + /// assert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4]); + /// + /// vec.extend_from_within(..2); + /// assert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1]); + /// + /// vec.extend_from_within(4..8); + /// assert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1, 4, 2, 3, 4]); + /// ``` + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn extend_from_within(&mut self, src: R) + where + R: RangeBounds, + { + // let range = slice::range(src, ..self.len()); + + let _ = &self.as_slice()[(src.start_bound().cloned(), src.end_bound().cloned())]; + + let len = self.len(); + + let start: ops::Bound<&usize> = src.start_bound(); + let start = match start { + ops::Bound::Included(&start) => start, + ops::Bound::Excluded(start) => start + 1, + ops::Bound::Unbounded => 0, + }; + + let end: ops::Bound<&usize> = src.end_bound(); + let end = match end { + ops::Bound::Included(end) => end + 1, + ops::Bound::Excluded(&end) => end, + ops::Bound::Unbounded => len, + }; + + let range = start..end; + + self.reserve(range.len()); + + // SAFETY: + // - len is increased only after initializing elements + let (this, spare, len) = unsafe { self.split_at_spare_mut_with_len() }; + + // SAFETY: + // - caller guarantees that src is a valid index + let to_clone = unsafe { this.get_unchecked(range) }; + + iter::zip(to_clone, spare) + .map(|(src, dst)| dst.write(src.clone())) + // Note: + // - Element was just initialized with `MaybeUninit::write`, so it's ok to increase len + // - len is increased after each element to prevent leaks (see issue #82533) + .for_each(|_| *len += 1); + } +} + +impl Vec<[T; N], A> { + /// Takes a `Vec<[T; N]>` and flattens it into a `Vec`. + /// + /// # Panics + /// + /// Panics if the length of the resulting vector would overflow a `usize`. + /// + /// This is only possible when flattening a vector of arrays of zero-sized + /// types, and thus tends to be irrelevant in practice. If + /// `size_of::() > 0`, this will never panic. + /// + /// # Examples + /// + /// ``` + /// #![feature(slice_flatten)] + /// + /// let mut vec = vec![[1, 2, 3], [4, 5, 6], [7, 8, 9]]; + /// assert_eq!(vec.pop(), Some([7, 8, 9])); + /// + /// let mut flattened = vec.into_flattened(); + /// assert_eq!(flattened.pop(), Some(6)); + /// ``` + #[inline(always)] + pub fn into_flattened(self) -> Vec { + let (ptr, len, cap, alloc) = self.into_raw_parts_with_alloc(); + let (new_len, new_cap) = if size_of::() == 0 { + (len.checked_mul(N).expect("vec len overflow"), usize::MAX) + } else { + // SAFETY: + // - `cap * N` cannot overflow because the allocation is already in + // the address space. + // - Each `[T; N]` has `N` valid elements, so there are `len * N` + // valid elements in the allocation. + (len * N, cap * N) + }; + // SAFETY: + // - `ptr` was allocated by `self` + // - `ptr` is well-aligned because `[T; N]` has the same alignment as `T`. + // - `new_cap` refers to the same sized allocation as `cap` because + // `new_cap * size_of::()` == `cap * size_of::<[T; N]>()` + // - `len` <= `cap`, so `len * N` <= `cap * N`. + unsafe { Vec::::from_raw_parts_in(ptr.cast(), new_len, new_cap, alloc) } + } +} + +// This code generalizes `extend_with_{element,default}`. +trait ExtendWith { + fn next(&mut self) -> T; + fn last(self) -> T; +} + +struct ExtendElement(T); +impl ExtendWith for ExtendElement { + #[inline(always)] + fn next(&mut self) -> T { + self.0.clone() + } + + #[inline(always)] + fn last(self) -> T { + self.0 + } +} + +impl Vec { + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + /// Extend the vector by `n` values, using the given generator. + fn extend_with>(&mut self, n: usize, mut value: E) { + self.reserve(n); + + unsafe { + let mut ptr = self.as_mut_ptr().add(self.len()); + // Use SetLenOnDrop to work around bug where compiler + // might not realize the store through `ptr` through self.set_len() + // don't alias. + let mut local_len = SetLenOnDrop::new(&mut self.len); + + // Write all elements except the last one + for _ in 1..n { + ptr::write(ptr, value.next()); + ptr = ptr.add(1); + // Increment the length in every step in case next() panics + local_len.increment_len(1); + } + + if n > 0 { + // We can write the last element directly without cloning needlessly + ptr::write(ptr, value.last()); + local_len.increment_len(1); + } + + // len set by scope guard + } + } +} + +impl Vec { + /// Removes consecutive repeated elements in the vector according to the + /// [`PartialEq`] trait implementation. + /// + /// If the vector is sorted, this removes all duplicates. + /// + /// # Examples + /// + /// ``` + /// let mut vec = vec![1, 2, 2, 3, 2]; + /// + /// vec.dedup(); + /// + /// assert_eq!(vec, [1, 2, 3, 2]); + /// ``` + #[inline(always)] + pub fn dedup(&mut self) { + self.dedup_by(|a, b| a == b) + } +} + +trait ExtendFromWithinSpec { + /// # Safety + /// + /// - `src` needs to be valid index + /// - `self.capacity() - self.len()` must be `>= src.len()` + unsafe fn spec_extend_from_within(&mut self, src: Range); +} + +// impl ExtendFromWithinSpec for Vec { +// default unsafe fn spec_extend_from_within(&mut self, src: Range) { +// // SAFETY: +// // - len is increased only after initializing elements +// let (this, spare, len) = unsafe { self.split_at_spare_mut_with_len() }; + +// // SAFETY: +// // - caller guarantees that src is a valid index +// let to_clone = unsafe { this.get_unchecked(src) }; + +// iter::zip(to_clone, spare) +// .map(|(src, dst)| dst.write(src.clone())) +// // Note: +// // - Element was just initialized with `MaybeUninit::write`, so it's ok to increase len +// // - len is increased after each element to prevent leaks (see issue #82533) +// .for_each(|_| *len += 1); +// } +// } + +impl ExtendFromWithinSpec for Vec { + #[inline(always)] + unsafe fn spec_extend_from_within(&mut self, src: Range) { + let count = src.len(); + { + let (init, spare) = self.split_at_spare_mut(); + + // SAFETY: + // - caller guarantees that `src` is a valid index + let source = unsafe { init.get_unchecked(src) }; + + // SAFETY: + // - Both pointers are created from unique slice references (`&mut [_]`) + // so they are valid and do not overlap. + // - Elements are :Copy so it's OK to copy them, without doing + // anything with the original values + // - `count` is equal to the len of `source`, so source is valid for + // `count` reads + // - `.reserve(count)` guarantees that `spare.len() >= count` so spare + // is valid for `count` writes + unsafe { ptr::copy_nonoverlapping(source.as_ptr(), spare.as_mut_ptr() as _, count) }; + } + + // SAFETY: + // - The elements were just initialized by `copy_nonoverlapping` + self.len += count; + } +} + +//////////////////////////////////////////////////////////////////////////////// +// Common trait implementations for Vec +//////////////////////////////////////////////////////////////////////////////// + +impl ops::Deref for Vec { + type Target = [T]; + + #[inline(always)] + fn deref(&self) -> &[T] { + unsafe { slice::from_raw_parts(self.as_ptr(), self.len) } + } +} + +impl ops::DerefMut for Vec { + #[inline(always)] + fn deref_mut(&mut self) -> &mut [T] { + unsafe { slice::from_raw_parts_mut(self.as_mut_ptr(), self.len) } + } +} + +#[cfg(not(no_global_oom_handling))] +impl Clone for Vec { + #[inline(always)] + fn clone(&self) -> Self { + let alloc = self.allocator().clone(); + let mut vec = Vec::with_capacity_in(self.len(), alloc); + vec.extend_from_slice(self); + vec + } + + #[inline(always)] + fn clone_from(&mut self, other: &Self) { + // drop anything that will not be overwritten + self.truncate(other.len()); + + // self.len <= other.len due to the truncate above, so the + // slices here are always in-bounds. + let (init, tail) = other.split_at(self.len()); + + // reuse the contained values' allocations/resources. + self.clone_from_slice(init); + self.extend_from_slice(tail); + } +} + +/// The hash of a vector is the same as that of the corresponding slice, +/// as required by the `core::borrow::Borrow` implementation. +/// +/// ``` +/// #![feature(build_hasher_simple_hash_one)] +/// use std::hash::BuildHasher; +/// +/// let b = std::collections::hash_map::RandomState::new(); +/// let v: Vec = vec![0xa8, 0x3c, 0x09]; +/// let s: &[u8] = &[0xa8, 0x3c, 0x09]; +/// assert_eq!(b.hash_one(v), b.hash_one(s)); +/// ``` +impl Hash for Vec { + #[inline(always)] + fn hash(&self, state: &mut H) { + Hash::hash(&**self, state) + } +} + +impl, A: Allocator> Index for Vec { + type Output = I::Output; + + #[inline(always)] + fn index(&self, index: I) -> &Self::Output { + Index::index(&**self, index) + } +} + +impl, A: Allocator> IndexMut for Vec { + #[inline(always)] + fn index_mut(&mut self, index: I) -> &mut Self::Output { + IndexMut::index_mut(&mut **self, index) + } +} + +#[cfg(not(no_global_oom_handling))] +impl FromIterator for Vec { + #[inline(always)] + fn from_iter>(iter: I) -> Vec { + let mut vec = Vec::new(); + vec.extend(iter); + vec + } +} + +impl IntoIterator for Vec { + type Item = T; + type IntoIter = IntoIter; + + /// Creates a consuming iterator, that is, one that moves each value out of + /// the vector (from start to end). The vector cannot be used after calling + /// this. + /// + /// # Examples + /// + /// ``` + /// let v = vec!["a".to_string(), "b".to_string()]; + /// let mut v_iter = v.into_iter(); + /// + /// let first_element: Option = v_iter.next(); + /// + /// assert_eq!(first_element, Some("a".to_string())); + /// assert_eq!(v_iter.next(), Some("b".to_string())); + /// assert_eq!(v_iter.next(), None); + /// ``` + #[inline(always)] + fn into_iter(self) -> Self::IntoIter { + unsafe { + let mut me = ManuallyDrop::new(self); + let alloc = ManuallyDrop::new(ptr::read(me.allocator())); + let begin = me.as_mut_ptr(); + let end = if size_of::() == 0 { + begin.cast::().wrapping_add(me.len()).cast() + } else { + begin.add(me.len()) as *const T + }; + let cap = me.buf.capacity(); + IntoIter { + buf: NonNull::new_unchecked(begin), + phantom: PhantomData, + cap, + alloc, + ptr: begin, + end, + } + } + } +} + +impl<'a, T, A: Allocator> IntoIterator for &'a Vec { + type Item = &'a T; + type IntoIter = slice::Iter<'a, T>; + + #[inline(always)] + fn into_iter(self) -> Self::IntoIter { + self.iter() + } +} + +impl<'a, T, A: Allocator> IntoIterator for &'a mut Vec { + type Item = &'a mut T; + type IntoIter = slice::IterMut<'a, T>; + + fn into_iter(self) -> Self::IntoIter { + self.iter_mut() + } +} + +#[cfg(not(no_global_oom_handling))] +impl Extend for Vec { + #[inline(always)] + fn extend>(&mut self, iter: I) { + // This is the case for a general iter. + // + // This function should be the moral equivalent of: + // + // for item in iter { + // self.push(item); + // } + + let mut iter = iter.into_iter(); + while let Some(element) = iter.next() { + let len = self.len(); + if len == self.capacity() { + let (lower, _) = iter.size_hint(); + self.reserve(lower.saturating_add(1)); + } + unsafe { + ptr::write(self.as_mut_ptr().add(len), element); + // Since next() executes user code which can panic we have to bump the length + // after each step. + // NB can't overflow since we would have had to alloc the address space + self.set_len(len + 1); + } + } + } +} + +impl Vec { + /// Creates a splicing iterator that replaces the specified range in the vector + /// with the given `replace_with` iterator and yields the removed items. + /// `replace_with` does not need to be the same length as `range`. + /// + /// `range` is removed even if the iterator is not consumed until the end. + /// + /// It is unspecified how many elements are removed from the vector + /// if the `Splice` value is leaked. + /// + /// The input iterator `replace_with` is only consumed when the `Splice` value is dropped. + /// + /// This is optimal if: + /// + /// * The tail (elements in the vector after `range`) is empty, + /// * or `replace_with` yields fewer or equal elements than `range`’s length + /// * or the lower bound of its `size_hint()` is exact. + /// + /// Otherwise, a temporary vector is allocated and the tail is moved twice. + /// + /// # Panics + /// + /// Panics if the starting point is greater than the end point or if + /// the end point is greater than the length of the vector. + /// + /// # Examples + /// + /// ``` + /// let mut v = vec![1, 2, 3, 4]; + /// let new = [7, 8, 9]; + /// let u: Vec<_> = v.splice(1..3, new).collect(); + /// assert_eq!(v, &[1, 7, 8, 9, 4]); + /// assert_eq!(u, &[2, 3]); + /// ``` + #[cfg(not(no_global_oom_handling))] + #[inline(always)] + pub fn splice(&mut self, range: R, replace_with: I) -> Splice<'_, I::IntoIter, A> + where + R: RangeBounds, + I: IntoIterator, + { + Splice { + drain: self.drain(range), + replace_with: replace_with.into_iter(), + } + } +} + +/// Extend implementation that copies elements out of references before pushing them onto the Vec. +/// +/// This implementation is specialized for slice iterators, where it uses [`copy_from_slice`] to +/// append the entire slice at once. +/// +/// [`copy_from_slice`]: slice::copy_from_slice +#[cfg(not(no_global_oom_handling))] +impl<'a, T: Copy + 'a, A: Allocator + 'a> Extend<&'a T> for Vec { + #[inline(always)] + fn extend>(&mut self, iter: I) { + let mut iter = iter.into_iter(); + while let Some(element) = iter.next() { + let len = self.len(); + if len == self.capacity() { + let (lower, _) = iter.size_hint(); + self.reserve(lower.saturating_add(1)); + } + unsafe { + ptr::write(self.as_mut_ptr().add(len), *element); + // Since next() executes user code which can panic we have to bump the length + // after each step. + // NB can't overflow since we would have had to alloc the address space + self.set_len(len + 1); + } + } + } +} + +/// Implements comparison of vectors, [lexicographically](core::cmp::Ord#lexicographical-comparison). +impl PartialOrd for Vec { + #[inline(always)] + fn partial_cmp(&self, other: &Self) -> Option { + PartialOrd::partial_cmp(&**self, &**other) + } +} + +impl Eq for Vec {} + +/// Implements ordering of vectors, [lexicographically](core::cmp::Ord#lexicographical-comparison). +impl Ord for Vec { + #[inline(always)] + fn cmp(&self, other: &Self) -> Ordering { + Ord::cmp(&**self, &**other) + } +} + +impl Drop for Vec { + #[inline(always)] + fn drop(&mut self) { + unsafe { + // use drop for [T] + // use a raw slice to refer to the elements of the vector as weakest necessary type; + // could avoid questions of validity in certain cases + ptr::drop_in_place(ptr::slice_from_raw_parts_mut(self.as_mut_ptr(), self.len)) + } + // RawVec handles deallocation + } +} + +impl Default for Vec { + /// Creates an empty `Vec`. + /// + /// The vector will not allocate until elements are pushed onto it. + #[inline(always)] + fn default() -> Vec { + Vec::new() + } +} + +impl fmt::Debug for Vec { + #[inline(always)] + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + fmt::Debug::fmt(&**self, f) + } +} + +impl AsRef> for Vec { + #[inline(always)] + fn as_ref(&self) -> &Vec { + self + } +} + +impl AsMut> for Vec { + #[inline(always)] + fn as_mut(&mut self) -> &mut Vec { + self + } +} + +impl AsRef<[T]> for Vec { + #[inline(always)] + fn as_ref(&self) -> &[T] { + self + } +} + +impl AsMut<[T]> for Vec { + #[inline(always)] + fn as_mut(&mut self) -> &mut [T] { + self + } +} + +#[cfg(not(no_global_oom_handling))] +impl From<&[T]> for Vec { + /// Allocate a `Vec` and fill it by cloning `s`'s items. + /// + /// # Examples + /// + /// ``` + /// assert_eq!(Vec::from(&[1, 2, 3][..]), vec![1, 2, 3]); + /// ``` + #[inline(always)] + fn from(s: &[T]) -> Vec { + let mut vec = Vec::with_capacity(s.len()); + vec.extend_from_slice(s); + vec + } +} + +#[cfg(not(no_global_oom_handling))] +impl From<&mut [T]> for Vec { + /// Allocate a `Vec` and fill it by cloning `s`'s items. + /// + /// # Examples + /// + /// ``` + /// assert_eq!(Vec::from(&mut [1, 2, 3][..]), vec![1, 2, 3]); + /// ``` + #[inline(always)] + fn from(s: &mut [T]) -> Vec { + let mut vec = Vec::with_capacity(s.len()); + vec.extend_from_slice(s); + vec + } +} + +#[cfg(not(no_global_oom_handling))] +impl From<[T; N]> for Vec { + #[inline(always)] + fn from(s: [T; N]) -> Vec { + Box::slice(Box::new(s)).into_vec() + } +} + +impl From> for Vec { + /// Convert a boxed slice into a vector by transferring ownership of + /// the existing heap allocation. + /// + /// # Examples + /// + /// ``` + /// let b: Box<[i32]> = vec![1, 2, 3].into_boxed_slice(); + /// assert_eq!(Vec::from(b), vec![1, 2, 3]); + /// ``` + #[inline(always)] + fn from(s: Box<[T], A>) -> Self { + s.into_vec() + } +} + +impl From> for Vec { + /// Convert a boxed array into a vector by transferring ownership of + /// the existing heap allocation. + /// + /// # Examples + /// + /// ``` + /// let b: Box<[i32; 3]> = Box::new([1, 2, 3]); + /// assert_eq!(Vec::from(b), vec![1, 2, 3]); + /// ``` + #[inline(always)] + fn from(s: Box<[T; N], A>) -> Self { + s.into_vec() + } +} + +// note: test pulls in libstd, which causes errors here +#[cfg(not(no_global_oom_handling))] +impl From> for Box<[T], A> { + /// Convert a vector into a boxed slice. + /// + /// If `v` has excess capacity, its items will be moved into a + /// newly-allocated buffer with exactly the right capacity. + /// + /// # Examples + /// + /// ``` + /// assert_eq!(Box::from(vec![1, 2, 3]), vec![1, 2, 3].into_boxed_slice()); + /// ``` + /// + /// Any excess capacity is removed: + /// ``` + /// let mut vec = Vec::with_capacity(10); + /// vec.extend([1, 2, 3]); + /// + /// assert_eq!(Box::from(vec), vec![1, 2, 3].into_boxed_slice()); + /// ``` + #[inline(always)] + fn from(v: Vec) -> Self { + v.into_boxed_slice() + } +} + +#[cfg(not(no_global_oom_handling))] +impl From<&str> for Vec { + /// Allocate a `Vec` and fill it with a UTF-8 string. + /// + /// # Examples + /// + /// ``` + /// assert_eq!(Vec::from("123"), vec![b'1', b'2', b'3']); + /// ``` + #[inline(always)] + fn from(s: &str) -> Vec { + From::from(s.as_bytes()) + } +} + +impl TryFrom> for [T; N] { + type Error = Vec; + + /// Gets the entire contents of the `Vec` as an array, + /// if its size exactly matches that of the requested array. + /// + /// # Examples + /// + /// ``` + /// assert_eq!(vec![1, 2, 3].try_into(), Ok([1, 2, 3])); + /// assert_eq!(>::new().try_into(), Ok([])); + /// ``` + /// + /// If the length doesn't match, the input comes back in `Err`: + /// ``` + /// let r: Result<[i32; 4], _> = (0..10).collect::>().try_into(); + /// assert_eq!(r, Err(vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9])); + /// ``` + /// + /// If you're fine with just getting a prefix of the `Vec`, + /// you can call [`.truncate(N)`](Vec::truncate) first. + /// ``` + /// let mut v = String::from("hello world").into_bytes(); + /// v.sort(); + /// v.truncate(2); + /// let [a, b]: [_; 2] = v.try_into().unwrap(); + /// assert_eq!(a, b' '); + /// assert_eq!(b, b'd'); + /// ``` + #[inline(always)] + fn try_from(mut vec: Vec) -> Result<[T; N], Vec> { + if vec.len() != N { + return Err(vec); + } + + // SAFETY: `.set_len(0)` is always sound. + unsafe { vec.set_len(0) }; + + // SAFETY: A `Vec`'s pointer is always aligned properly, and + // the alignment the array needs is the same as the items. + // We checked earlier that we have sufficient items. + // The items will not double-drop as the `set_len` + // tells the `Vec` not to also drop them. + let array = unsafe { ptr::read(vec.as_ptr() as *const [T; N]) }; + Ok(array) + } +} + +#[inline(always)] +#[cfg(not(no_global_oom_handling))] +#[doc(hidden)] +pub fn from_elem_in(elem: T, n: usize, alloc: A) -> Vec { + let mut v = Vec::with_capacity_in(n, alloc); + v.extend_with(n, ExtendElement(elem)); + v +} + +#[inline(always)] +#[cfg(not(no_global_oom_handling))] +#[doc(hidden)] +pub fn from_elem(elem: T, n: usize) -> Vec { + let mut v = Vec::with_capacity(n); + v.extend_with(n, ExtendElement(elem)); + v +} + +#[cfg(feature = "serde")] +impl serde::Serialize for Vec +where + T: serde::Serialize, + A: Allocator, +{ + #[inline(always)] + fn serialize(&self, serializer: S) -> Result + where + S: serde::ser::Serializer, + { + serializer.collect_seq(self) + } +} + +#[cfg(feature = "serde")] +impl<'de, T, A> serde::de::Deserialize<'de> for Vec +where + T: serde::de::Deserialize<'de>, + A: Allocator + Default, +{ + #[inline(always)] + fn deserialize(deserializer: D) -> Result + where + D: serde::de::Deserializer<'de>, + { + struct VecVisitor { + marker: PhantomData<(T, A)>, + } + + impl<'de, T, A> serde::de::Visitor<'de> for VecVisitor + where + T: serde::de::Deserialize<'de>, + A: Allocator + Default, + { + type Value = Vec; + + fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { + formatter.write_str("a sequence") + } + + fn visit_seq(self, mut seq: S) -> Result + where + S: serde::de::SeqAccess<'de>, + { + let mut values = Vec::with_capacity_in(cautious(seq.size_hint()), A::default()); + + while let Some(value) = seq.next_element()? { + values.push(value); + } + + Ok(values) + } + } + + let visitor = VecVisitor { + marker: PhantomData, + }; + deserializer.deserialize_seq(visitor) + } + + #[inline(always)] + fn deserialize_in_place(deserializer: D, place: &mut Self) -> Result<(), D::Error> + where + D: serde::de::Deserializer<'de>, + { + struct VecInPlaceVisitor<'a, T: 'a, A: Allocator + 'a>(&'a mut Vec); + + impl<'a, 'de, T, A> serde::de::Visitor<'de> for VecInPlaceVisitor<'a, T, A> + where + T: serde::de::Deserialize<'de>, + A: Allocator + Default, + { + type Value = (); + + fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { + formatter.write_str("a sequence") + } + + fn visit_seq(self, mut seq: S) -> Result + where + S: serde::de::SeqAccess<'de>, + { + let hint = cautious(seq.size_hint()); + if let Some(additional) = hint.checked_sub(self.0.len()) { + self.0.reserve(additional); + } + + for i in 0..self.0.len() { + let next = { + let next_place = InPlaceSeed(&mut self.0[i]); + seq.next_element_seed(next_place)? + }; + if next.is_none() { + self.0.truncate(i); + return Ok(()); + } + } + + while let Some(value) = seq.next_element()? { + self.0.push(value); + } + + Ok(()) + } + } + + deserializer.deserialize_seq(VecInPlaceVisitor(place)) + } +} + +#[cfg(feature = "serde")] +pub fn cautious(hint: Option) -> usize { + cmp::min(hint.unwrap_or(0), 4096) +} + +/// A DeserializeSeed helper for implementing deserialize_in_place Visitors. +/// +/// Wraps a mutable reference and calls deserialize_in_place on it. + +#[cfg(feature = "serde")] +pub struct InPlaceSeed<'a, T: 'a>(pub &'a mut T); + +#[cfg(feature = "serde")] +impl<'a, 'de, T> serde::de::DeserializeSeed<'de> for InPlaceSeed<'a, T> +where + T: serde::de::Deserialize<'de>, +{ + type Value = (); + fn deserialize(self, deserializer: D) -> Result + where + D: serde::de::Deserializer<'de>, + { + T::deserialize_in_place(deserializer, self.0) + } +} diff -Nru temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/partial_eq.rs temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/partial_eq.rs --- temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/partial_eq.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/partial_eq.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,43 @@ +#[cfg(not(no_global_oom_handling))] +use alloc_crate::borrow::Cow; + +use crate::stable::alloc::Allocator; + +use super::Vec; + +macro_rules! __impl_slice_eq1 { + ([$($vars:tt)*] $lhs:ty, $rhs:ty $(where $ty:ty: $bound:ident)?) => { + impl PartialEq<$rhs> for $lhs + where + T: PartialEq, + $($ty: $bound)? + { + #[inline(always)] + fn eq(&self, other: &$rhs) -> bool { self[..] == other[..] } + #[inline(always)] + fn ne(&self, other: &$rhs) -> bool { self[..] != other[..] } + } + } +} + +__impl_slice_eq1! { [A1: Allocator, A2: Allocator] Vec, Vec } +__impl_slice_eq1! { [A: Allocator] Vec, &[U] } +__impl_slice_eq1! { [A: Allocator] Vec, &mut [U] } +__impl_slice_eq1! { [A: Allocator] &[T], Vec } +__impl_slice_eq1! { [A: Allocator] &mut [T], Vec } +__impl_slice_eq1! { [A: Allocator] Vec, [U] } +__impl_slice_eq1! { [A: Allocator] [T], Vec } +#[cfg(not(no_global_oom_handling))] +__impl_slice_eq1! { [A: Allocator] Cow<'_, [T]>, Vec where T: Clone } +__impl_slice_eq1! { [A: Allocator, const N: usize] Vec, [U; N] } +__impl_slice_eq1! { [A: Allocator, const N: usize] Vec, &[U; N] } + +// NOTE: some less important impls are omitted to reduce code bloat +// FIXME(Centril): Reconsider this? +//__impl_slice_eq1! { [const N: usize] Vec, &mut [B; N], } +//__impl_slice_eq1! { [const N: usize] [A; N], Vec, } +//__impl_slice_eq1! { [const N: usize] &[A; N], Vec, } +//__impl_slice_eq1! { [const N: usize] &mut [A; N], Vec, } +//__impl_slice_eq1! { [const N: usize] Cow<'a, [A]>, [B; N], } +//__impl_slice_eq1! { [const N: usize] Cow<'a, [A]>, &[B; N], } +//__impl_slice_eq1! { [const N: usize] Cow<'a, [A]>, &mut [B; N], } diff -Nru temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/set_len_on_drop.rs temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/set_len_on_drop.rs --- temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/set_len_on_drop.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/set_len_on_drop.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,31 @@ +// Set the length of the vec when the `SetLenOnDrop` value goes out of scope. +// +// The idea is: The length field in SetLenOnDrop is a local variable +// that the optimizer will see does not alias with any stores through the Vec's data +// pointer. This is a workaround for alias analysis issue #32155 +pub(super) struct SetLenOnDrop<'a> { + len: &'a mut usize, + local_len: usize, +} + +impl<'a> SetLenOnDrop<'a> { + #[inline(always)] + pub(super) fn new(len: &'a mut usize) -> Self { + SetLenOnDrop { + local_len: *len, + len, + } + } + + #[inline(always)] + pub(super) fn increment_len(&mut self, increment: usize) { + self.local_len += increment; + } +} + +impl Drop for SetLenOnDrop<'_> { + #[inline(always)] + fn drop(&mut self) { + *self.len = self.local_len; + } +} diff -Nru temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/splice.rs temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/splice.rs --- temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/splice.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/allocator-api2/src/stable/vec/splice.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,135 @@ +use core::ptr::{self}; +use core::slice::{self}; + +use crate::stable::alloc::{Allocator, Global}; + +use super::{Drain, Vec}; + +/// A splicing iterator for `Vec`. +/// +/// This struct is created by [`Vec::splice()`]. +/// See its documentation for more. +/// +/// # Example +/// +/// ``` +/// let mut v = vec![0, 1, 2]; +/// let new = [7, 8]; +/// let iter: std::vec::Splice<_> = v.splice(1.., new); +/// ``` +#[derive(Debug)] +pub struct Splice<'a, I: Iterator + 'a, A: Allocator + 'a = Global> { + pub(super) drain: Drain<'a, I::Item, A>, + pub(super) replace_with: I, +} + +impl Iterator for Splice<'_, I, A> { + type Item = I::Item; + + #[inline(always)] + fn next(&mut self) -> Option { + self.drain.next() + } + + #[inline(always)] + fn size_hint(&self) -> (usize, Option) { + self.drain.size_hint() + } +} + +impl DoubleEndedIterator for Splice<'_, I, A> { + #[inline(always)] + fn next_back(&mut self) -> Option { + self.drain.next_back() + } +} + +impl ExactSizeIterator for Splice<'_, I, A> {} + +impl Drop for Splice<'_, I, A> { + #[inline] + fn drop(&mut self) { + self.drain.by_ref().for_each(drop); + + unsafe { + if self.drain.tail_len == 0 { + self.drain.vec.as_mut().extend(self.replace_with.by_ref()); + return; + } + + // First fill the range left by drain(). + if !self.drain.fill(&mut self.replace_with) { + return; + } + + // There may be more elements. Use the lower bound as an estimate. + // FIXME: Is the upper bound a better guess? Or something else? + let (lower_bound, _upper_bound) = self.replace_with.size_hint(); + if lower_bound > 0 { + self.drain.move_tail(lower_bound); + if !self.drain.fill(&mut self.replace_with) { + return; + } + } + + // Collect any remaining elements. + // This is a zero-length vector which does not allocate if `lower_bound` was exact. + let mut collected = self + .replace_with + .by_ref() + .collect::>() + .into_iter(); + // Now we have an exact count. + if collected.len() > 0 { + self.drain.move_tail(collected.len()); + let filled = self.drain.fill(&mut collected); + debug_assert!(filled); + debug_assert_eq!(collected.len(), 0); + } + } + // Let `Drain::drop` move the tail back if necessary and restore `vec.len`. + } +} + +/// Private helper methods for `Splice::drop` +impl Drain<'_, T, A> { + /// The range from `self.vec.len` to `self.tail_start` contains elements + /// that have been moved out. + /// Fill that range as much as possible with new elements from the `replace_with` iterator. + /// Returns `true` if we filled the entire range. (`replace_with.next()` didn’t return `None`.) + #[inline(always)] + unsafe fn fill>(&mut self, replace_with: &mut I) -> bool { + let vec = unsafe { self.vec.as_mut() }; + let range_start = vec.len; + let range_end = self.tail_start; + let range_slice = unsafe { + slice::from_raw_parts_mut(vec.as_mut_ptr().add(range_start), range_end - range_start) + }; + + for place in range_slice { + if let Some(new_item) = replace_with.next() { + unsafe { ptr::write(place, new_item) }; + vec.len += 1; + } else { + return false; + } + } + true + } + + /// Makes room for inserting more elements before the tail. + #[inline(always)] + unsafe fn move_tail(&mut self, additional: usize) { + let vec = unsafe { self.vec.as_mut() }; + let len = self.tail_start + self.tail_len; + vec.buf.reserve(len, additional); + + let new_tail_start = self.tail_start + additional; + unsafe { + let src = vec.as_ptr().add(self.tail_start); + let dst = vec.as_mut_ptr().add(new_tail_start); + ptr::copy(src, dst, self.tail_len); + } + self.tail_start = new_tail_start; + } +} diff -Nru temporalio-1.3.0/vendor/anyhow/build.rs temporalio-1.3.0/vendor/anyhow/build.rs --- temporalio-1.3.0/vendor/anyhow/build.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/anyhow/build.rs 2023-10-30 19:40:00.000000000 +0000 @@ -11,49 +11,38 @@ "`backtrace` feature without `std` feature is not supported" } -// This code exercises the surface area that we expect of the std Backtrace -// type. If the current toolchain is able to compile it, we go ahead and use -// backtrace in anyhow. +// This code exercises the surface area that we expect of the Error generic +// member access API. If the current toolchain is able to compile it, then +// anyhow is able to provide backtrace support. const PROBE: &str = r#" - #![feature(error_generic_member_access, provide_any)] + #![feature(error_generic_member_access)] - use std::any::{Demand, Provider}; - use std::backtrace::{Backtrace, BacktraceStatus}; - use std::error::Error; - use std::fmt::{self, Display}; + use std::backtrace::Backtrace; + use std::error::{self, Error, Request}; + use std::fmt::{self, Debug, Display}; - #[derive(Debug)] - struct E { - backtrace: Backtrace, - } + struct MyError(Thing); + struct Thing; - impl Display for E { + impl Debug for MyError { fn fmt(&self, _formatter: &mut fmt::Formatter) -> fmt::Result { unimplemented!() } } - impl Error for E { - fn provide<'a>(&'a self, demand: &mut Demand<'a>) { - demand.provide_ref(&self.backtrace); + impl Display for MyError { + fn fmt(&self, _formatter: &mut fmt::Formatter) -> fmt::Result { + unimplemented!() } } - struct P; - - impl Provider for P { - fn provide<'a>(&'a self, _demand: &mut Demand<'a>) {} - } - - const _: fn() = || { - let backtrace: Backtrace = Backtrace::capture(); - let status: BacktraceStatus = backtrace.status(); - match status { - BacktraceStatus::Captured | BacktraceStatus::Disabled | _ => {} + impl Error for MyError { + fn provide<'a>(&'a self, request: &mut Request<'a>) { + request.provide_ref(&self.0); } - }; + } - const _: fn(&dyn Error) -> Option<&Backtrace> = |err| err.request_ref::(); + const _: fn(&dyn Error) -> Option<&Backtrace> = |err| error::request_ref::(err); "#; fn main() { @@ -79,6 +68,17 @@ } fn compile_probe() -> Option { + if env::var_os("RUSTC_STAGE").is_some() { + // We are running inside rustc bootstrap. This is a highly non-standard + // environment with issues such as: + // + // https://github.com/rust-lang/cargo/issues/11138 + // https://github.com/rust-lang/rust/issues/114839 + // + // Let's just not use nightly features here. + return None; + } + let rustc = env::var_os("RUSTC")?; let out_dir = env::var_os("OUT_DIR")?; let probefile = Path::new(&out_dir).join("probe.rs"); diff -Nru temporalio-1.3.0/vendor/anyhow/.cargo-checksum.json temporalio-1.3.0/vendor/anyhow/.cargo-checksum.json --- temporalio-1.3.0/vendor/anyhow/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/anyhow/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"61a7e72e9ca8c17098974ca463d99fe99da9b362aa8d54ea234b3959a353a26b","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"62fc2a591c37e781f76fe4d89bcd964eca4fbde246bc43cd4e2fe9db2d30ee70","build.rs":"88bf7100143c79c0af683da7f28deaac031c9b9b213a6426560dc089b0ba45aa","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/backtrace.rs":"5b4103a7d24d6f438a64b8cc0fafe28d55fc0ca090368174ce44d64e3940badd","src/chain.rs":"6edefc5f3c7d69683095862e54e3bb56faba5b3387bf2eeaed429da090007a0a","src/context.rs":"e129c580b5c2f3017dd977e4122a93f9fbc04b451e930d68f390f51e6be3bdcb","src/ensure.rs":"d4c2588608e529275bfee1c1afc8860d7def868ab01e95a692a995ee06b2936e","src/error.rs":"e45d4dcfe64b1823b42fbf9bb260e6437987e8c2d51f92434db9d808b36e700a","src/fmt.rs":"c2d4aad6ce20625a70a7c091e3087b6a2c19a4a87c7a12edb4c98978307245ea","src/kind.rs":"332854c5eb07d44447c356a2e7dc585634b0da1ffbbfa81269c369deaefbc247","src/lib.rs":"69b94ccae4c28f4340e7cbe09da3a362178526cda1ef44e8466201608d682350","src/macros.rs":"dd35f2ec2a0a25e4504fb04bcd42f6d0963bc0035aaaefc412f5ee1d78945fe1","src/ptr.rs":"f4e28bc9feba1e84160ca9d185008a51b5d72e168e6546f3e942f4258c361e19","src/wrapper.rs":"ff3ad72065a30cc32e9acb0614a30703c49c57b941a335c348b6439af684316b","tests/common/mod.rs":"f9088c2d7afafa64ff730b629272045b776bfafc2f5957508242da630635f2e1","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/drop/mod.rs":"08c3e553c1cc0d2dbd936fc45f4b5b1105057186affd6865e8d261e05f0f0646","tests/test_autotrait.rs":"ecccf9202a33611f64b76598806aa82abec2560ae058e32f63fb2fb3ef225be9","tests/test_backtrace.rs":"ed144f90bf62cc441de067f6cee09ece94bca9da8f9b492d11d3dc652ba83e26","tests/test_boxed.rs":"6b26db0e2eb72afe9af7352ea820837aab90f8d486294616dd5dc34c1b94038c","tests/test_chain.rs":"3a8a8d7569913bd98c0e27c69d0bda35101e7fde7c056ed57cdd8ed018e4cbcb","tests/test_context.rs":"8409c53b328562c11e822bd6c3cd17e0d4d50b9bbb8fc3617333fd77303a6a33","tests/test_convert.rs":"7e7a8b4772a427a911014ac4d1083f9519000e786177f898808980dd9bdfde61","tests/test_downcast.rs":"797e69a72d125758c4c4897e5dc776d549d52cc9a6a633e0a33193f588a62b88","tests/test_ensure.rs":"3224fe4d9917944292e2458959feead9f80fa45ea1c80fae54b37951d631723a","tests/test_ffi.rs":"d0cb4c1d6d9154090982dee72ae3ebe05a5981f976058c3250f1c9da5a45edef","tests/test_fmt.rs":"17572596f257aac9aa2ec4620e292ca6a954128b94772bb948399fab53832e70","tests/test_macros.rs":"11f05010bc9b16319884c1286444100e30cddc2ecd1ffe5e0fd3fee5ffb32683","tests/test_repr.rs":"b3fa96b52a98b2111e845b59974910acb107a6526514c80fc5d9db7eed402682","tests/test_source.rs":"b80723cf635a4f8c4df21891b34bfab9ed2b2aa407e7a2f826d24e334cd5f88e","tests/ui/chained-comparison.rs":"6504b03d95b5acc232a7f4defc9f343b2be6733bf475fa0992e8e6545b912bd4","tests/ui/chained-comparison.stderr":"7f1d0a8c251b0ede2d30b3087ec157fc660945c97a642c4a5acf5a14ec58de34","tests/ui/empty-ensure.rs":"ab5bf37c846a0d689f26ce9257a27228411ed64154f9c950f1602d88a355d94b","tests/ui/empty-ensure.stderr":"315782f5f4246290fe190e3767b22c3dcaffaabc19c5ace0373537d53e765278","tests/ui/must-use.rs":"fb59860b43f673bf4a430a6036ba463e95028844d8dd4243cfe5ebc7f2be582f","tests/ui/must-use.stderr":"c2848c5f254b4c061eea6714d9baf709924aba06619eaf2a8b3aee1266b75f9e","tests/ui/no-impl.rs":"fab6cbf2f6ea510b86f567dfb3b7c31250a9fd71ae5d110dbb9188be569ec593","tests/ui/no-impl.stderr":"04415aeaa14995f47f06f35fb1f6971d332d2110aabca920c30ab0803d6a0a5e","tests/ui/temporary-value.rs":"4dcc96271b2403e6372cf4cfc813445e5ce4365fc6e156b6bc38274098499a70","tests/ui/temporary-value.stderr":"171f6c1c962503855480696e5d39e68946ec2a027b61a6f36ca1ad1b40265c5d","tests/ui/wrong-interpolation.rs":"9c44d4674c2dccd27b9dedd03341346ec02d993b41793ee89b5755202e7e367e","tests/ui/wrong-interpolation.stderr":"301e60e2eb9401782c7dc0b3580613a4cb2aafd4cc8065734a630a62e1161aa5"},"package":"9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8"} \ No newline at end of file +{"files":{"Cargo.toml":"ad4ba159037235f4b84b0e5cde145868821e2b796a43b0da91b371864fb375ca","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"62fc2a591c37e781f76fe4d89bcd964eca4fbde246bc43cd4e2fe9db2d30ee70","build.rs":"dd4a590f26ffb846c2b9c6c441e090277750278679a2fad4bd08cf9dc33783d6","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/backtrace.rs":"c63d72e7fb139e986bba63ec43e3f4754e520a88225afbd379110fdee40f3cc6","src/chain.rs":"6edefc5f3c7d69683095862e54e3bb56faba5b3387bf2eeaed429da090007a0a","src/context.rs":"22e9d2f53d69e74987f22f37140ce2118cb251d415407408b6e3f6a7de2a2a85","src/ensure.rs":"d4c2588608e529275bfee1c1afc8860d7def868ab01e95a692a995ee06b2936e","src/error.rs":"f1877655eb07f01aa208293e6b39902fa54bbcb3e5248a3dfad74702fa10a120","src/fmt.rs":"c2d4aad6ce20625a70a7c091e3087b6a2c19a4a87c7a12edb4c98978307245ea","src/kind.rs":"89883cd3287921355ee99c988fb7687beb77644c3dec6fb3bb1308db5d6dc51a","src/lib.rs":"50cbebfd1844cd63f4ad13da0f77c2a013d9bc80adf701ebda19f94cc3d11896","src/macros.rs":"dd35f2ec2a0a25e4504fb04bcd42f6d0963bc0035aaaefc412f5ee1d78945fe1","src/ptr.rs":"f4e28bc9feba1e84160ca9d185008a51b5d72e168e6546f3e942f4258c361e19","src/wrapper.rs":"3211e4dfe6fe3c5433041443a685fe283770b7962b39e565171ccf853585367c","tests/common/mod.rs":"f9088c2d7afafa64ff730b629272045b776bfafc2f5957508242da630635f2e1","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/drop/mod.rs":"08c3e553c1cc0d2dbd936fc45f4b5b1105057186affd6865e8d261e05f0f0646","tests/test_autotrait.rs":"ecccf9202a33611f64b76598806aa82abec2560ae058e32f63fb2fb3ef225be9","tests/test_backtrace.rs":"ed144f90bf62cc441de067f6cee09ece94bca9da8f9b492d11d3dc652ba83e26","tests/test_boxed.rs":"6b26db0e2eb72afe9af7352ea820837aab90f8d486294616dd5dc34c1b94038c","tests/test_chain.rs":"3a8a8d7569913bd98c0e27c69d0bda35101e7fde7c056ed57cdd8ed018e4cbcb","tests/test_context.rs":"8409c53b328562c11e822bd6c3cd17e0d4d50b9bbb8fc3617333fd77303a6a33","tests/test_convert.rs":"7e7a8b4772a427a911014ac4d1083f9519000e786177f898808980dd9bdfde61","tests/test_downcast.rs":"797e69a72d125758c4c4897e5dc776d549d52cc9a6a633e0a33193f588a62b88","tests/test_ensure.rs":"89bb15f2a6288037bcf6ad976705038d9bea714da4244dee8314c720f88393c8","tests/test_ffi.rs":"d0cb4c1d6d9154090982dee72ae3ebe05a5981f976058c3250f1c9da5a45edef","tests/test_fmt.rs":"17572596f257aac9aa2ec4620e292ca6a954128b94772bb948399fab53832e70","tests/test_macros.rs":"11f05010bc9b16319884c1286444100e30cddc2ecd1ffe5e0fd3fee5ffb32683","tests/test_repr.rs":"b3fa96b52a98b2111e845b59974910acb107a6526514c80fc5d9db7eed402682","tests/test_source.rs":"b80723cf635a4f8c4df21891b34bfab9ed2b2aa407e7a2f826d24e334cd5f88e","tests/ui/chained-comparison.rs":"6504b03d95b5acc232a7f4defc9f343b2be6733bf475fa0992e8e6545b912bd4","tests/ui/chained-comparison.stderr":"7f1d0a8c251b0ede2d30b3087ec157fc660945c97a642c4a5acf5a14ec58de34","tests/ui/empty-ensure.rs":"ab5bf37c846a0d689f26ce9257a27228411ed64154f9c950f1602d88a355d94b","tests/ui/empty-ensure.stderr":"315782f5f4246290fe190e3767b22c3dcaffaabc19c5ace0373537d53e765278","tests/ui/must-use.rs":"fb59860b43f673bf4a430a6036ba463e95028844d8dd4243cfe5ebc7f2be582f","tests/ui/must-use.stderr":"c2848c5f254b4c061eea6714d9baf709924aba06619eaf2a8b3aee1266b75f9e","tests/ui/no-impl.rs":"fab6cbf2f6ea510b86f567dfb3b7c31250a9fd71ae5d110dbb9188be569ec593","tests/ui/no-impl.stderr":"04415aeaa14995f47f06f35fb1f6971d332d2110aabca920c30ab0803d6a0a5e","tests/ui/temporary-value.rs":"4dcc96271b2403e6372cf4cfc813445e5ce4365fc6e156b6bc38274098499a70","tests/ui/temporary-value.stderr":"171f6c1c962503855480696e5d39e68946ec2a027b61a6f36ca1ad1b40265c5d","tests/ui/wrong-interpolation.rs":"9c44d4674c2dccd27b9dedd03341346ec02d993b41793ee89b5755202e7e367e","tests/ui/wrong-interpolation.stderr":"301e60e2eb9401782c7dc0b3580613a4cb2aafd4cc8065734a630a62e1161aa5"},"package":"a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/anyhow/Cargo.toml temporalio-1.3.0/vendor/anyhow/Cargo.toml --- temporalio-1.3.0/vendor/anyhow/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/anyhow/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ edition = "2018" rust-version = "1.39" name = "anyhow" -version = "1.0.71" +version = "1.0.75" authors = ["David Tolnay "] description = "Flexible concrete Error type built on std::error::Error" documentation = "https://docs.rs/anyhow" @@ -33,6 +33,7 @@ rustdoc-args = [ "--cfg", "doc_cfg", + "--generate-link-to-definition", ] targets = ["x86_64-unknown-linux-gnu"] @@ -55,7 +56,7 @@ features = ["full"] [dev-dependencies.thiserror] -version = "1.0" +version = "1.0.45" [dev-dependencies.trybuild] version = "1.0.66" diff -Nru temporalio-1.3.0/vendor/anyhow/src/backtrace.rs temporalio-1.3.0/vendor/anyhow/src/backtrace.rs --- temporalio-1.3.0/vendor/anyhow/src/backtrace.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/anyhow/src/backtrace.rs 2023-10-30 19:40:00.000000000 +0000 @@ -38,7 +38,7 @@ #[cfg(backtrace)] macro_rules! backtrace_if_absent { ($err:expr) => { - match ($err as &dyn std::error::Error).request_ref::() { + match std::error::request_ref::($err as &dyn std::error::Error) { Some(_) => None, None => backtrace!(), } diff -Nru temporalio-1.3.0/vendor/anyhow/src/context.rs temporalio-1.3.0/vendor/anyhow/src/context.rs --- temporalio-1.3.0/vendor/anyhow/src/context.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/anyhow/src/context.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,7 +4,7 @@ use core::fmt::{self, Debug, Display, Write}; #[cfg(backtrace)] -use std::any::{Demand, Provider}; +use std::error::Request; mod ext { use super::*; @@ -144,8 +144,8 @@ } #[cfg(backtrace)] - fn provide<'a>(&'a self, demand: &mut Demand<'a>) { - StdError::provide(&self.error, demand); + fn provide<'a>(&'a self, request: &mut Request<'a>) { + StdError::provide(&self.error, request); } } @@ -158,8 +158,8 @@ } #[cfg(backtrace)] - fn provide<'a>(&'a self, demand: &mut Demand<'a>) { - Provider::provide(&self.error, demand); + fn provide<'a>(&'a self, request: &mut Request<'a>) { + Error::provide(&self.error, request); } } diff -Nru temporalio-1.3.0/vendor/anyhow/src/error.rs temporalio-1.3.0/vendor/anyhow/src/error.rs --- temporalio-1.3.0/vendor/anyhow/src/error.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/anyhow/src/error.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,14 +5,14 @@ use crate::ptr::{Own, Ref}; use crate::{Error, StdError}; use alloc::boxed::Box; -#[cfg(backtrace)] -use core::any::Demand; use core::any::TypeId; use core::fmt::{self, Debug, Display}; use core::mem::ManuallyDrop; #[cfg(not(anyhow_no_ptr_addr_of))] use core::ptr; use core::ptr::NonNull; +#[cfg(backtrace)] +use std::error::{self, Request}; #[cfg(feature = "std")] use core::ops::{Deref, DerefMut}; @@ -522,17 +522,21 @@ Some(addr.cast::().deref_mut()) } } -} -#[cfg(backtrace)] -impl std::any::Provider for Error { + #[cfg(backtrace)] + pub(crate) fn provide<'a>(&'a self, request: &mut Request<'a>) { + unsafe { ErrorImpl::provide(self.inner.by_ref(), request) } + } + // Called by thiserror when you have `#[source] anyhow::Error`. This provide // implementation includes the anyhow::Error's Backtrace if any, unlike // deref'ing to dyn Error where the provide implementation would include // only the original error's Backtrace from before it got wrapped into an // anyhow::Error. - fn provide<'a>(&'a self, demand: &mut Demand<'a>) { - unsafe { ErrorImpl::provide(self.inner.by_ref(), demand) } + #[cfg(backtrace)] + #[doc(hidden)] + pub fn thiserror_provide<'a>(&'a self, request: &mut Request<'a>) { + Self::provide(self, request); } } @@ -900,7 +904,7 @@ .as_ref() .or_else(|| { #[cfg(backtrace)] - return Self::error(this).request_ref::(); + return error::request_ref::(Self::error(this)); #[cfg(not(backtrace))] return (vtable(this.ptr).object_backtrace)(this); }) @@ -908,11 +912,11 @@ } #[cfg(backtrace)] - unsafe fn provide<'a>(this: Ref<'a, Self>, demand: &mut Demand<'a>) { + unsafe fn provide<'a>(this: Ref<'a, Self>, request: &mut Request<'a>) { if let Some(backtrace) = &this.deref().backtrace { - demand.provide_ref(backtrace); + request.provide_ref(backtrace); } - Self::error(this).provide(demand); + Self::error(this).provide(request); } #[cold] @@ -930,8 +934,8 @@ } #[cfg(backtrace)] - fn provide<'a>(&'a self, demand: &mut Demand<'a>) { - unsafe { ErrorImpl::provide(self.erase(), demand) } + fn provide<'a>(&'a self, request: &mut Request<'a>) { + unsafe { ErrorImpl::provide(self.erase(), request) } } } diff -Nru temporalio-1.3.0/vendor/anyhow/src/kind.rs temporalio-1.3.0/vendor/anyhow/src/kind.rs --- temporalio-1.3.0/vendor/anyhow/src/kind.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/anyhow/src/kind.rs 2023-10-30 19:40:00.000000000 +0000 @@ -52,6 +52,7 @@ pub struct Adhoc; +#[doc(hidden)] pub trait AdhocKind: Sized { #[inline] fn anyhow_kind(&self) -> Adhoc { @@ -73,6 +74,7 @@ pub struct Trait; +#[doc(hidden)] pub trait TraitKind: Sized { #[inline] fn anyhow_kind(&self) -> Trait { @@ -96,6 +98,7 @@ pub struct Boxed; #[cfg(feature = "std")] +#[doc(hidden)] pub trait BoxedKind: Sized { #[inline] fn anyhow_kind(&self) -> Boxed { diff -Nru temporalio-1.3.0/vendor/anyhow/src/lib.rs temporalio-1.3.0/vendor/anyhow/src/lib.rs --- temporalio-1.3.0/vendor/anyhow/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/anyhow/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -210,8 +210,8 @@ //! will require an explicit `.map_err(Error::msg)` when working with a //! non-Anyhow error type inside a function that returns Anyhow's error type. -#![doc(html_root_url = "https://docs.rs/anyhow/1.0.71")] -#![cfg_attr(backtrace, feature(error_generic_member_access, provide_any))] +#![doc(html_root_url = "https://docs.rs/anyhow/1.0.75")] +#![cfg_attr(backtrace, feature(error_generic_member_access))] #![cfg_attr(doc_cfg, feature(doc_cfg))] #![cfg_attr(not(feature = "std"), no_std)] #![deny(dead_code, unused_imports, unused_mut)] @@ -642,16 +642,22 @@ use alloc::fmt; use core::fmt::Arguments; + #[doc(hidden)] pub use crate::ensure::{BothDebug, NotBothDebug}; + #[doc(hidden)] pub use alloc::format; + #[doc(hidden)] pub use core::result::Result::Err; + #[doc(hidden)] pub use core::{concat, format_args, stringify}; #[doc(hidden)] pub mod kind { + #[doc(hidden)] pub use crate::kind::{AdhocKind, TraitKind}; #[cfg(feature = "std")] + #[doc(hidden)] pub use crate::kind::BoxedKind; } diff -Nru temporalio-1.3.0/vendor/anyhow/src/wrapper.rs temporalio-1.3.0/vendor/anyhow/src/wrapper.rs --- temporalio-1.3.0/vendor/anyhow/src/wrapper.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/anyhow/src/wrapper.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,7 @@ use core::fmt::{self, Debug, Display}; #[cfg(backtrace)] -use std::any::Demand; +use std::error::Request; #[repr(transparent)] pub struct MessageError(pub M); @@ -75,7 +75,7 @@ } #[cfg(backtrace)] - fn provide<'a>(&'a self, demand: &mut Demand<'a>) { - self.0.provide(demand); + fn provide<'a>(&'a self, request: &mut Request<'a>) { + self.0.provide(request); } } diff -Nru temporalio-1.3.0/vendor/anyhow/tests/test_ensure.rs temporalio-1.3.0/vendor/anyhow/tests/test_ensure.rs --- temporalio-1.3.0/vendor/anyhow/tests/test_ensure.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/anyhow/tests/test_ensure.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,10 +4,12 @@ clippy::extra_unused_type_parameters, clippy::if_same_then_else, clippy::ifs_same_cond, + clippy::ignored_unit_patterns, clippy::items_after_statements, clippy::let_and_return, clippy::let_underscore_untyped, clippy::match_bool, + clippy::needless_else, clippy::never_loop, clippy::overly_complex_bool_expr, clippy::redundant_closure_call, diff -Nru temporalio-1.3.0/vendor/async-trait/.cargo-checksum.json temporalio-1.3.0/vendor/async-trait/.cargo-checksum.json --- temporalio-1.3.0/vendor/async-trait/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/async-trait/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"90ab29b316aeedee1e1bbab2aed06f3b11aa27fac34efc14c58766c6425c44f9","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"5b94948e52c1410eae55fb8e4084e8837d0f8eb0c000698dc13fac591c70dc1b","build.rs":"626c9fc3a055a6b64b6cf85f5aad1b22c9f6a49f9ff163316fa8dac3b34aef75","src/args.rs":"6eed5497db91752b3aae597943c39e769f60406b37055304e69e4699f1f87b15","src/bound.rs":"ea6a8d0c1a33521163e5546463f68f6dbda0d35a59e75597be6bf04e0b7b23ad","src/expand.rs":"60c1fdb032d1735697596aadfb15c4602501685d6cca88739b2547b00f2b26d0","src/lib.rs":"966aaa00e972c876c0aa132210783e6530f10e48b23276dad64079ba4a617480","src/lifetime.rs":"e5ccfba2fa7ecb226cba247286c661f20a84e9a0ad2d789bdfee166cd5250160","src/parse.rs":"cd9032fe2c6dcf41050b3a59b9fb98eb9700a29bbe2fa011ee2854014c1666b7","src/receiver.rs":"57ce64e282ba537da5e8d14c1fd49574f20255379bf001905809ace6013c4c3e","src/verbatim.rs":"45d0b691fab21f20d3414733f00d82845442d23b6f2547f8d6880a709d0d3b2a","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/executor/mod.rs":"3cf48614288715f625514a73ae642f649c2635a402a3ad90278bbee116a7234c","tests/test.rs":"49d5afba71d11119b542e9badb650e212d0857e7ff1ab1b07fbacc5f17560ba8","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":"bbdad7cb35b3a92026b85941532964410ae837ea75ea0db0d2ba56a809f20fe9","tests/ui/consider-restricting.rs":"bff794222d9324241155568d541e7beac0238b66ce14039b242d4392f4e531b6","tests/ui/consider-restricting.stderr":"e208539fdbdbedb501f3bff6c4f998e0ffb02e281aae8884a6da3abb70f26a58","tests/ui/delimiter-span.rs":"f4fd804223ce3be0d4eecdfd222afdd835c5393e2473ff4932116163943c0bc9","tests/ui/delimiter-span.stderr":"7b5bbe4be3be533d31d1302649b317465bc28cc7f042b98ec78e8b9a82828155","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":"db67c5078ab66725227b8f4c612ff97b39cb45d5d6b7a4191766a34a6c711547","tests/ui/missing-async-in-impl.rs":"5a5538d08d11c145211a92af0d8973eee8b21f33b90adda85430805bd3dbbc83","tests/ui/missing-async-in-impl.stderr":"2916bc8a51e25f4dd18eaf433b916d533943eac2c1afbee64e9a89e7b928040d","tests/ui/missing-async-in-trait.rs":"dc67241593f270233ba885df92e59164126416e68d49d8d62edc251666b5db6e","tests/ui/missing-async-in-trait.stderr":"67e66e7b19358830deff3ba01f5d701a9ae05c4e6fa9c081c49c1c75efbb7ade","tests/ui/missing-body.rs":"d06c0da8c6044e7c790b924136f167e2edc0d0d3fa01f23521f3f08ca605929b","tests/ui/missing-body.stderr":"e5ee994398bf8294324d61df02467a4229f68f4113bf5acc004851c03d66ec6a","tests/ui/must-use.rs":"75090c7df984df0996464337f60371d198bd0caf3f9f44b10d1e131f15fd4fca","tests/ui/must-use.stderr":"e9989ec6ae4e87f117cd9ffd73e774b5477eb28c9df5b508dbd3654b783e5bf4","tests/ui/self-span.rs":"67ddde05907d7014bfb3f2c63d427b1d72d6c4369a9108a4335dac6bee5832b2","tests/ui/self-span.stderr":"016ef4f29156250f073f4f6cd3096d2889325709bd693938e0d368077b752551","tests/ui/send-not-implemented.rs":"affbbe8bc9c3501d3db3a024e06daa9d076f1d142dba290c7aa1ea119daebd19","tests/ui/send-not-implemented.stderr":"fb5dca648e30669b710aba0f8b6e7619a231b0b5195a1f97972f8b67ef33acdb","tests/ui/unreachable.rs":"be0aa7cc129fe42a1fbd85e36b3f08c6a2bd16c90ed2e33fc4c50e40ce085bcd","tests/ui/unreachable.stderr":"73beb71cb74076f2cb45485271de31658cf59f4143e62daa34b9f2a8980ddfcd","tests/ui/unsupported-self.rs":"f7855bc39dab1fd2f533fb2e873a27c3757dcb9fb57001e4b19f58d3dda36d01","tests/ui/unsupported-self.stderr":"64fc5d45cb51330f0a1e85e69a28b69ddda12a109aa6a8ba3eaee1ac58d93b5f"},"package":"79fa67157abdfd688a259b6648808757db9347af834624f27ec646da976aee5d"} \ No newline at end of file +{"files":{"Cargo.toml":"8228349e4996caac1be8cf30980db8cc83473b3245e80405a9281eb90f545521","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"5b94948e52c1410eae55fb8e4084e8837d0f8eb0c000698dc13fac591c70dc1b","build.rs":"626c9fc3a055a6b64b6cf85f5aad1b22c9f6a49f9ff163316fa8dac3b34aef75","src/args.rs":"6eed5497db91752b3aae597943c39e769f60406b37055304e69e4699f1f87b15","src/bound.rs":"ea6a8d0c1a33521163e5546463f68f6dbda0d35a59e75597be6bf04e0b7b23ad","src/expand.rs":"2d0b0f122c3ec393ce67db6fa177626d8fca0c4f5558b42f4fee219f31b97f9e","src/lib.rs":"7426f0d3a6b4efc3e9ecc90b3d8b2794922a38bc19497e483cda98da97115fed","src/lifetime.rs":"e5ccfba2fa7ecb226cba247286c661f20a84e9a0ad2d789bdfee166cd5250160","src/parse.rs":"cd9032fe2c6dcf41050b3a59b9fb98eb9700a29bbe2fa011ee2854014c1666b7","src/receiver.rs":"356b4ac3e45607d041927799b12c1390c28e6333079343a38799d31ff5dfbe33","src/verbatim.rs":"45d0b691fab21f20d3414733f00d82845442d23b6f2547f8d6880a709d0d3b2a","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/executor/mod.rs":"3cf48614288715f625514a73ae642f649c2635a402a3ad90278bbee116a7234c","tests/test.rs":"203646366ce6959bf7e727372eaaf16c8f6e7b7c6c7cc5e12c259244d7254550","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":"0e1d5902f1ed99a60c6126416806b7c40f4ac9bdd78f26d8e6d866738cc332df","tests/ui/consider-restricting.rs":"bff794222d9324241155568d541e7beac0238b66ce14039b242d4392f4e531b6","tests/ui/consider-restricting.stderr":"193ce320db84851f0b7d5dc18d8949e46cc3ec41e1dfac5668255af6e0d40c03","tests/ui/delimiter-span.rs":"f4fd804223ce3be0d4eecdfd222afdd835c5393e2473ff4932116163943c0bc9","tests/ui/delimiter-span.stderr":"7b5bbe4be3be533d31d1302649b317465bc28cc7f042b98ec78e8b9a82828155","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":"db67c5078ab66725227b8f4c612ff97b39cb45d5d6b7a4191766a34a6c711547","tests/ui/missing-async-in-impl.rs":"5a5538d08d11c145211a92af0d8973eee8b21f33b90adda85430805bd3dbbc83","tests/ui/missing-async-in-impl.stderr":"2916bc8a51e25f4dd18eaf433b916d533943eac2c1afbee64e9a89e7b928040d","tests/ui/missing-async-in-trait.rs":"dc67241593f270233ba885df92e59164126416e68d49d8d62edc251666b5db6e","tests/ui/missing-async-in-trait.stderr":"67e66e7b19358830deff3ba01f5d701a9ae05c4e6fa9c081c49c1c75efbb7ade","tests/ui/missing-body.rs":"d06c0da8c6044e7c790b924136f167e2edc0d0d3fa01f23521f3f08ca605929b","tests/ui/missing-body.stderr":"e5ee994398bf8294324d61df02467a4229f68f4113bf5acc004851c03d66ec6a","tests/ui/must-use.rs":"75090c7df984df0996464337f60371d198bd0caf3f9f44b10d1e131f15fd4fca","tests/ui/must-use.stderr":"e9989ec6ae4e87f117cd9ffd73e774b5477eb28c9df5b508dbd3654b783e5bf4","tests/ui/self-span.rs":"67ddde05907d7014bfb3f2c63d427b1d72d6c4369a9108a4335dac6bee5832b2","tests/ui/self-span.stderr":"016ef4f29156250f073f4f6cd3096d2889325709bd693938e0d368077b752551","tests/ui/send-not-implemented.rs":"affbbe8bc9c3501d3db3a024e06daa9d076f1d142dba290c7aa1ea119daebd19","tests/ui/send-not-implemented.stderr":"de65542b3904669cdab88fcfa594f31f21191cc86ae82d9768652bc770118be2","tests/ui/unreachable.rs":"be0aa7cc129fe42a1fbd85e36b3f08c6a2bd16c90ed2e33fc4c50e40ce085bcd","tests/ui/unreachable.stderr":"73beb71cb74076f2cb45485271de31658cf59f4143e62daa34b9f2a8980ddfcd","tests/ui/unsupported-self.rs":"f7855bc39dab1fd2f533fb2e873a27c3757dcb9fb57001e4b19f58d3dda36d01","tests/ui/unsupported-self.stderr":"64fc5d45cb51330f0a1e85e69a28b69ddda12a109aa6a8ba3eaee1ac58d93b5f"},"package":"bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/async-trait/Cargo.toml temporalio-1.3.0/vendor/async-trait/Cargo.toml --- temporalio-1.3.0/vendor/async-trait/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/async-trait/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,10 +10,10 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" +edition = "2021" rust-version = "1.56" name = "async-trait" -version = "0.1.70" +version = "0.1.73" authors = ["David Tolnay "] description = "Type erasure for async trait methods" documentation = "https://docs.rs/async-trait" @@ -27,6 +27,7 @@ repository = "https://github.com/dtolnay/async-trait" [package.metadata.docs.rs] +rustdoc-args = ["--generate-link-to-definition"] targets = ["x86_64-unknown-linux-gnu"] [lib] diff -Nru temporalio-1.3.0/vendor/async-trait/src/expand.rs temporalio-1.3.0/vendor/async-trait/src/expand.rs --- temporalio-1.3.0/vendor/async-trait/src/expand.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/async-trait/src/expand.rs 2023-10-30 19:40:00.000000000 +0000 @@ -406,7 +406,7 @@ let let_ret = match &mut sig.output { ReturnType::Default => quote_spanned! {block.brace_token.span=> #(#decls)* - let _: () = { #(#stmts)* }; + let () = { #(#stmts)* }; }, ReturnType::Type(_, ret) => { if contains_associated_type_impl_trait(context, ret) { diff -Nru temporalio-1.3.0/vendor/async-trait/src/lib.rs temporalio-1.3.0/vendor/async-trait/src/lib.rs --- temporalio-1.3.0/vendor/async-trait/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/async-trait/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -118,7 +118,7 @@ //! # Explanation //! //! Async fns get transformed into methods that return `Pin>` and delegate to a private async freestanding function. +//! Send + 'async_trait>>` and delegate to a private async freestanding function. //! //! For example the `impl Advertisement for AutoplayingVideo` above would be //! expanded as: @@ -126,11 +126,11 @@ //! ``` //! # const IGNORE: &str = stringify! { //! impl Advertisement for AutoplayingVideo { -//! fn run<'async>( -//! &'async self, -//! ) -> Pin + Send + 'async>> +//! fn run<'async_trait>( +//! &'async_trait self, +//! ) -> Pin + Send + 'async_trait>> //! where -//! Self: Sync + 'async, +//! Self: Sync + 'async_trait, //! { //! async fn run(_self: &AutoplayingVideo) { //! /* the original method body */ @@ -303,7 +303,7 @@ //! let object = &value as &dyn ObjectSafe; //! ``` -#![doc(html_root_url = "https://docs.rs/async-trait/0.1.70")] +#![doc(html_root_url = "https://docs.rs/async-trait/0.1.73")] #![allow( clippy::default_trait_access, clippy::doc_markdown, diff -Nru temporalio-1.3.0/vendor/async-trait/src/receiver.rs temporalio-1.3.0/vendor/async-trait/src/receiver.rs --- temporalio-1.3.0/vendor/async-trait/src/receiver.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/async-trait/src/receiver.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,4 @@ use proc_macro2::{Group, Span, TokenStream, TokenTree}; -use std::iter::FromIterator; use syn::visit_mut::{self, VisitMut}; use syn::{ Block, ExprPath, Ident, Item, Macro, Pat, PatIdent, Path, Receiver, Signature, Token, TypePath, diff -Nru temporalio-1.3.0/vendor/async-trait/tests/test.rs temporalio-1.3.0/vendor/async-trait/tests/test.rs --- temporalio-1.3.0/vendor/async-trait/tests/test.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/async-trait/tests/test.rs 2023-10-30 19:40:00.000000000 +0000 @@ -873,7 +873,7 @@ } #[async_trait] - impl Trait for Send + Sync { + impl Trait for dyn Send + Sync { async fn f(&self) {} } @@ -947,7 +947,7 @@ mac!(let _ = ::associated1();); // trait items - mac!(let _: ::Associated2;); + mac!(let (): ::Associated2;); mac!(Self::ASSOCIATED2;); mac!(::ASSOCIATED2;); mac!(::ASSOCIATED2;); @@ -1355,7 +1355,7 @@ impl Trait for MyStruct { async fn f(self: Arc) { futures::select! { - _ = async { + () = async { println!("{}", self.0); }.fuse() => {} } diff -Nru temporalio-1.3.0/vendor/async-trait/tests/ui/bare-trait-object.stderr temporalio-1.3.0/vendor/async-trait/tests/ui/bare-trait-object.stderr --- temporalio-1.3.0/vendor/async-trait/tests/ui/bare-trait-object.stderr 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/async-trait/tests/ui/bare-trait-object.stderr 2023-10-30 19:40:00.000000000 +0000 @@ -1,17 +1,10 @@ -error: trait objects without an explicit `dyn` are deprecated +error[E0782]: trait objects must include the `dyn` keyword --> tests/ui/bare-trait-object.rs:11:16 | 11 | impl Trait for Send + Sync { | ^^^^^^^^^^^ | - = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021! - = note: for more information, see -note: the lint level is defined here - --> tests/ui/bare-trait-object.rs:1:9 - | -1 | #![deny(bare_trait_objects)] - | ^^^^^^^^^^^^^^^^^^ -help: use `dyn` +help: add `dyn` keyword before this trait | 11 | impl Trait for dyn Send + Sync { | +++ diff -Nru temporalio-1.3.0/vendor/async-trait/tests/ui/consider-restricting.stderr temporalio-1.3.0/vendor/async-trait/tests/ui/consider-restricting.stderr --- temporalio-1.3.0/vendor/async-trait/tests/ui/consider-restricting.stderr 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/async-trait/tests/ui/consider-restricting.stderr 2023-10-30 19:40:00.000000000 +0000 @@ -4,6 +4,7 @@ 16 | async fn publish(&self, url: T) {} | ^^ future created by async block is not `Send` | + = note: consider using `std::sync::Arc`; for more information visit note: captured value is not `Send` --> tests/ui/consider-restricting.rs:16:41 | @@ -21,6 +22,7 @@ 23 | async fn publish(&self, url: T) {} | ^^ future created by async block is not `Send` | + = note: consider using `std::sync::Arc`; for more information visit note: captured value is not `Send` --> tests/ui/consider-restricting.rs:23:32 | diff -Nru temporalio-1.3.0/vendor/async-trait/tests/ui/send-not-implemented.stderr temporalio-1.3.0/vendor/async-trait/tests/ui/send-not-implemented.stderr --- temporalio-1.3.0/vendor/async-trait/tests/ui/send-not-implemented.stderr 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/async-trait/tests/ui/send-not-implemented.stderr 2023-10-30 19:40:00.000000000 +0000 @@ -10,6 +10,7 @@ | |_____^ future created by async block is not `Send` | = help: within `[async block@$DIR/tests/ui/send-not-implemented.rs:8:26: 12:6]`, the trait `Send` is not implemented for `MutexGuard<'_, ()>` + = note: consider using `std::sync::Arc>`; for more information visit note: future is not `Send` as this value is used across an await --> tests/ui/send-not-implemented.rs:11:13 | @@ -34,6 +35,7 @@ | |_____^ future created by async block is not `Send` | = help: within `[async block@$DIR/tests/ui/send-not-implemented.rs:14:38: 19:6]`, the trait `Send` is not implemented for `MutexGuard<'_, ()>` + = note: consider using `std::sync::Arc>`; for more information visit note: future is not `Send` as this value is used across an await --> tests/ui/send-not-implemented.rs:17:13 | diff -Nru temporalio-1.3.0/vendor/axum/.cargo-checksum.json temporalio-1.3.0/vendor/axum/.cargo-checksum.json --- temporalio-1.3.0/vendor/axum/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"3c89aa015c578cc69de7d86ed99d7b721d916bfaa3bdd2f0d5173c0a29cf89aa","Cargo.toml":"fcc25cd9be8226516ed36bf342a803242111e73ebc01ebbc4c8a0bb05c4e86ad","LICENSE":"c14b6ed9d732322af9bae1551f6ca373b3893d7ce6e9d46429fc378478d00dfb","README.md":"9c67e4f6faa74979221128032bf84575be3c639404f362a8a8cfff017de3c23b","benches/benches.rs":"7075f086f3150ab1ab61f20c7bd1859ce067b4bec51f2c9a19db880ffff448f9","build.rs":"3bad731d51fd3a32b235ebd437bc9a2788b35bcae4779237cd26696e13840bcb","src/body/mod.rs":"6ff16a4400248a601d68ee976bfdde784027db67ba0e9917432ea8184dd0db03","src/body/stream_body.rs":"7e6bccdcb868692e39597973fbf8589758e146349a1bbebdfe816608a999d294","src/boxed.rs":"6a24163de5a9a386c5a1626493922ea0f9bd36550829d2716733b5ef81828193","src/docs/debugging_handler_type_errors.md":"37c05a2aac5ae2cb9824cda699657c9d0876b7dfa5ef2a5aef5ed224943ab051","src/docs/error_handling.md":"d7d6b2a058014330f8e462a8bf0f50201817f3e4d34163a953b729b04ee5869f","src/docs/extract.md":"88232c7a57b13abbaa528c5481db8abb8c0cf4732990475c79fea8ba329abb54","src/docs/handlers_intro.md":"44be7d8c2087380d3e512b6724cba41c9637dd7177c9b545d45cda244b6ec861","src/docs/method_routing/fallback.md":"c13a5fe4998bf86917fd1e2caed8090ebedd1e3b8e4d32ae6cc1907384e7ce08","src/docs/method_routing/layer.md":"b8c95e2777123f2aa99cbd7e0f11127f612ca0dab56b4959965f01b2e2433873","src/docs/method_routing/merge.md":"2e39d29f0a829609033213aaf670d67193f11cc1baf7d76c5d7ae9daf7b0020d","src/docs/method_routing/route_layer.md":"35a47515bd7405ceb9cd44cf789dc3a2b4fcb239dda89aa568d2de5c2b2a794a","src/docs/middleware.md":"13f67c80abcaafc6a927a0e9b83e2d0a86f23f74e2ffd1b39216430ee17cd79c","src/docs/response.md":"9846185ad98b58e4dce723cdd473a3793e7568b31f04790e5e2a17167f811c18","src/docs/routing/fallback.md":"545232927a5070a593492808ee888a4a145a67b7a22cce56848fed02abf0c321","src/docs/routing/into_make_service_with_connect_info.md":"6fd508c749946433d879def8d4d38865c086e601b038690ee95a044d2cb26c2b","src/docs/routing/layer.md":"574b295f64d4571df834ca0140c385755b7f67b334e887fc92f96801df9956c6","src/docs/routing/merge.md":"072780e46e7b25d58f77fd72fa3b8ca2e8801ee49a76e33845e39a144e21f0bc","src/docs/routing/nest.md":"81ebb477536150dba95db8315471ab31af8bec1814e6b5c7e99c82826a92f1ff","src/docs/routing/route.md":"5d1e6070dbdef5e63faa3389bede5e557228ae8b9d1d7b6d2e042b16678285a7","src/docs/routing/route_layer.md":"4d3d2ed962f218d61d87db22339d26f94453a0501433e483794893d58991f1fa","src/docs/routing/route_service.md":"dcd44e5453475a775cca8ffdb1253c85bbd6a7785e32acdfbd1190285b4366c6","src/docs/routing/with_state.md":"6568e11a4388bba3a45221d1c6a707ebc9d8ac6e3a765b7df5381c76bce563d6","src/error_handling/mod.rs":"cada6274f59087113e40856d9e1ff7ff323ca2b2eaafe37f95eb12ac3b0d081a","src/extension.rs":"719cae16da05818ed770c6f8339db8beda05f5d00f53a72ec08a1a92f977978f","src/extract/connect_info.rs":"fd8fc767544fe0370eefd04fd0b36e2777596ed1bc108e66763cbb70a9fba3f2","src/extract/host.rs":"442742ba452085b6dd54f46f50543f9d8f6971c056851b8956477dc3dc0240cc","src/extract/matched_path.rs":"1a974d6954cf3e7fff1844958b43444bd28de5d6d0c1147eeeb2637556f148f2","src/extract/mod.rs":"17472a21a6d00ce6d7896fa0e294ea5e7e346f777948607dcdc312b55ee0d044","src/extract/multipart.rs":"3ab93f683718202d9312b2abee9bd2a15904bba12bca699ecfeac26cb67f033b","src/extract/path/de.rs":"18687adc341b7d692d354429701847e40e3d3ae251f7e44517e65dede9aacc4e","src/extract/path/mod.rs":"f5ca11744b5bca18d29eb0bba1da3cc7d5d9133ee9c29b8a3d1186242219bf6b","src/extract/query.rs":"eb9750764a8976ffba9ea0541b11fc53259d90b4ec20a9e889276c6e2bcd0a2e","src/extract/raw_form.rs":"d2bad0683f9312d79f62b84ae0cb33ff869a2b4beb2a7d99fb8472cf56755e0c","src/extract/raw_query.rs":"a09431e77038b90152d0ea7fdbdfdc0ff890f3b1f2317707136ba6b0d3e8409d","src/extract/rejection.rs":"d551b5044b86c845821df46e8b37239a8b1cc625c05450eff7454062f790d5a0","src/extract/request_parts.rs":"ba5de7430e93f20056f5f25d72d971f30eeee8a94808530abc70f8e7317660de","src/extract/state.rs":"6abacbc54b559cf4a6c08ca965aa0bc192c1cdee49ebb65405fb7e73cdc410de","src/extract/ws.rs":"5e6ce46667e4e83080bbcb409e3b9e002e15239e15c27c92a1395383f178d2a9","src/form.rs":"18aaa66e7fede1c50c9fc873508bbdc2c8e47d7f93e511f98e975447f3592579","src/handler/future.rs":"c9dbf8e313c87437fd83fadd09ae4585eb1b573aabefa420a8eec0afda6560de","src/handler/into_service_state_in_extension.rs":"ea5fd70b1b56b3287416e92814f9f02fbca11dbc4969c355c89ade61cebad6a0","src/handler/mod.rs":"0e3968a001e79130fc00998c00fc1f139e4c18aaf13e865257ba8326c76f3598","src/handler/service.rs":"941977b1c66fba5670a8a24b0f755d881988b7cd05bb285001d89cad83ae5e3b","src/json.rs":"beeaeb3611be08e97eee19c368bef17ba9aad5c02b2de7b69d9a8b4d3d8b7826","src/lib.rs":"32b7910b38d6571043deb6dc24b01dea61bdb365f34de7201faafcb7315b5311","src/macros.rs":"6567e7ecaeef04071ced390360f314eb3d8b4d01aae603611039e799009db59e","src/middleware/from_extractor.rs":"ffe078c788ea8142d4b0cc992400008cee0958409db1410fcae0c68fac648a6a","src/middleware/from_fn.rs":"32084741acf5fe99aae5f114d3694b6ff618b1062157fbfd3cb83bf459aca57b","src/middleware/map_request.rs":"6ae78a54bc6090f441ba99eb0e8972b1bbb75ecafa8920c145477e376856e573","src/middleware/map_response.rs":"775d8d932aaa48c6f378ef7282c2c659232ba08a3ae0160fb8582a44a9817094","src/middleware/mod.rs":"5b7fccd72e7dc87e321516f9656995f701efc9eacffc322861d931c4de21629e","src/response/mod.rs":"c6537b8aa8f4b2da441409370934b108551cbe844081b7229cf6b828dff30497","src/response/redirect.rs":"b94d9118e86de3224ad8d198f374a768cb49b3e9ed4cf5b069fbd059bb4dce01","src/response/sse.rs":"3e1892a5dceb9a08ebdda24c029d2458bc80ddbf72cc8113ed613d14c9e08908","src/routing/future.rs":"c0610a9b104f64f02deec5fdf79e148c09e72e6f325b62afc174f42b36f295c5","src/routing/into_make_service.rs":"eb259a904f471078cf4942573a99ab11a3f9836a85c7d0daf5a92bcb8d69fda6","src/routing/method_filter.rs":"f4eef4a2f3b06b711ffeeee826c3e817e41fc6bf1b3a2bd38117e5d9c7a584fb","src/routing/method_routing.rs":"15cece49bbd94999e2ce5345b1318c24ccdd1334233a50642ea4f386d49f567d","src/routing/mod.rs":"403d976790d927067f5d5704e3f5612d85e32bd0b9ddf6be55cec948fb02b07e","src/routing/not_found.rs":"14145bf876006a603a1819d28454a7e8c2d45fdbc23046ea041b4e62cda4d2a4","src/routing/path_router.rs":"68dfde32f4ea2a8fa0d6f908c3b3237f3912222adea2b34b469736248aa9310e","src/routing/route.rs":"7f8e8e61ac95cf2c9d7bd3b714e37ef71056f2b7162f5ef60026d2cae29d01a5","src/routing/strip_prefix.rs":"437a82ee5bfa3112058032cbf511b4abd11c3fc2ebc38d92f4c54e903ad3a906","src/routing/tests/fallback.rs":"512cfe0181ec9daf703614cf93dad3fc2dee42046baaa91921989608393a0e42","src/routing/tests/get_to_head.rs":"85659b88e83ecf829efc5293bedc9243eaffdb0dc568b3f79a125e12f0c68b21","src/routing/tests/handle_error.rs":"b56b085f9ee666a3c3ca669971e9c0250f786433e046261e05b3253869103690","src/routing/tests/merge.rs":"76b09c9c3554676624b7ef98b23bc9d0a74494a5b0fb7bdc21d1a13e3a0b7870","src/routing/tests/mod.rs":"6de84f13ae3e2d58ef0dc61419da6534f27f4045e3fb59cb3fb01be7be57c391","src/routing/tests/nest.rs":"b84f3e708f2c8c6eef930c40d5bc6655eb652cef6b9b7651d7274e8b3084171c","src/routing/url_params.rs":"c9f1d2ce2044bd61df4a4db704990e6b0b10c9f809e516cf63eb116d2b0cb73b","src/service_ext.rs":"cacb02bae694edd667a176a9ffd5621434997bf1395ee635a407d9d98787265b","src/test_helpers/mod.rs":"288076f58a86276a31e8652f41f6960c446acfbe74169ab3cc05705e7c6edc3e","src/test_helpers/test_client.rs":"0ed24f8a249e728a9d28c93eb767c0bfe0cab9dca2b4252a879c92db2455cbe6","src/test_helpers/tracing_helpers.rs":"d664f080c7827137e82236c9dc94b87f0eb9f1fe0a8dc373ae5f82202a94eff2","src/typed_header.rs":"441ea68bdee820f5f126fed2da9eb9fb7bbfe14bd65395b52ab85dadc72a9486","src/util.rs":"bcc9ffb205e84d5ef265d2703a84e91cfb73fa0e9846d078d38ea78fd04b7131"},"package":"f8175979259124331c1d7bf6586ee7e0da434155e4b2d48ec2c8386281d8df39"} \ No newline at end of file +{"files":{"CHANGELOG.md":"80dbfc358bb9cea214f573bebb357878969c7d02e469be5c86b9432495860850","Cargo.toml":"a64509897a25122183449245546d644616ada3f0b3ecc667c43a9fb23ae1df4f","LICENSE":"c14b6ed9d732322af9bae1551f6ca373b3893d7ce6e9d46429fc378478d00dfb","README.md":"30bdfac17f1b03d7de708981458d1ceae159ba89e4927b92c27277d7efb34d18","benches/benches.rs":"7075f086f3150ab1ab61f20c7bd1859ce067b4bec51f2c9a19db880ffff448f9","build.rs":"3bad731d51fd3a32b235ebd437bc9a2788b35bcae4779237cd26696e13840bcb","src/body/mod.rs":"6ff16a4400248a601d68ee976bfdde784027db67ba0e9917432ea8184dd0db03","src/body/stream_body.rs":"7e6bccdcb868692e39597973fbf8589758e146349a1bbebdfe816608a999d294","src/boxed.rs":"6a24163de5a9a386c5a1626493922ea0f9bd36550829d2716733b5ef81828193","src/docs/debugging_handler_type_errors.md":"37c05a2aac5ae2cb9824cda699657c9d0876b7dfa5ef2a5aef5ed224943ab051","src/docs/error_handling.md":"9380e158554d390fa272e64d79c20c000b7125b3b6b618833620573d12140757","src/docs/extract.md":"1fa27266b4709b353abfe3968016472292735b524dd5286d4a94296aa88299e0","src/docs/handlers_intro.md":"44be7d8c2087380d3e512b6724cba41c9637dd7177c9b545d45cda244b6ec861","src/docs/method_routing/fallback.md":"c13a5fe4998bf86917fd1e2caed8090ebedd1e3b8e4d32ae6cc1907384e7ce08","src/docs/method_routing/layer.md":"b8c95e2777123f2aa99cbd7e0f11127f612ca0dab56b4959965f01b2e2433873","src/docs/method_routing/merge.md":"2e39d29f0a829609033213aaf670d67193f11cc1baf7d76c5d7ae9daf7b0020d","src/docs/method_routing/route_layer.md":"35a47515bd7405ceb9cd44cf789dc3a2b4fcb239dda89aa568d2de5c2b2a794a","src/docs/middleware.md":"8fe5565535722c833bc7b41b104e8370494f471ae6d6e139454c28af32d6669f","src/docs/response.md":"9846185ad98b58e4dce723cdd473a3793e7568b31f04790e5e2a17167f811c18","src/docs/routing/fallback.md":"545232927a5070a593492808ee888a4a145a67b7a22cce56848fed02abf0c321","src/docs/routing/into_make_service_with_connect_info.md":"6fd508c749946433d879def8d4d38865c086e601b038690ee95a044d2cb26c2b","src/docs/routing/layer.md":"574b295f64d4571df834ca0140c385755b7f67b334e887fc92f96801df9956c6","src/docs/routing/merge.md":"ad49169d947274bf02fd60bb075040ee2ead934cfc1bc748f0533ef9876ff58a","src/docs/routing/nest.md":"81ebb477536150dba95db8315471ab31af8bec1814e6b5c7e99c82826a92f1ff","src/docs/routing/route.md":"d4389881c31f721ad23ede7287c0ef2c8f2aa7ad505044fac6ce63700f52d018","src/docs/routing/route_layer.md":"4d3d2ed962f218d61d87db22339d26f94453a0501433e483794893d58991f1fa","src/docs/routing/route_service.md":"dcd44e5453475a775cca8ffdb1253c85bbd6a7785e32acdfbd1190285b4366c6","src/docs/routing/with_state.md":"6568e11a4388bba3a45221d1c6a707ebc9d8ac6e3a765b7df5381c76bce563d6","src/error_handling/mod.rs":"cada6274f59087113e40856d9e1ff7ff323ca2b2eaafe37f95eb12ac3b0d081a","src/extension.rs":"719cae16da05818ed770c6f8339db8beda05f5d00f53a72ec08a1a92f977978f","src/extract/connect_info.rs":"fd8fc767544fe0370eefd04fd0b36e2777596ed1bc108e66763cbb70a9fba3f2","src/extract/host.rs":"442742ba452085b6dd54f46f50543f9d8f6971c056851b8956477dc3dc0240cc","src/extract/matched_path.rs":"2620141b0c40eedd18956326f6b7f9c202a6e0e103f6b3aeb0da9a230f6fc105","src/extract/mod.rs":"17472a21a6d00ce6d7896fa0e294ea5e7e346f777948607dcdc312b55ee0d044","src/extract/multipart.rs":"64f10470b701df9b87b3b29c50a03b3c1c773045ba23c9892fe92c95c77231f2","src/extract/path/de.rs":"18687adc341b7d692d354429701847e40e3d3ae251f7e44517e65dede9aacc4e","src/extract/path/mod.rs":"f5ca11744b5bca18d29eb0bba1da3cc7d5d9133ee9c29b8a3d1186242219bf6b","src/extract/query.rs":"89e3371946f784576d3ebfc3317c5114c31859eaf945f52e0c7b8a8b11ffb1cb","src/extract/raw_form.rs":"d2bad0683f9312d79f62b84ae0cb33ff869a2b4beb2a7d99fb8472cf56755e0c","src/extract/raw_query.rs":"a09431e77038b90152d0ea7fdbdfdc0ff890f3b1f2317707136ba6b0d3e8409d","src/extract/rejection.rs":"5d92312fc8ccee8b3b9eb2408d6b00979ec43a990e5c047a928063ae557e79ba","src/extract/request_parts.rs":"ba5de7430e93f20056f5f25d72d971f30eeee8a94808530abc70f8e7317660de","src/extract/state.rs":"6abacbc54b559cf4a6c08ca965aa0bc192c1cdee49ebb65405fb7e73cdc410de","src/extract/ws.rs":"eca2d282443413661155fd30ac75389e50ceaabf95bc5edc9ad3b15a1bc7171d","src/form.rs":"9ac7535d25d54923d2749e699c7a3b3ba5399625b39373233de35e1b8b9e51bd","src/handler/future.rs":"c9dbf8e313c87437fd83fadd09ae4585eb1b573aabefa420a8eec0afda6560de","src/handler/into_service_state_in_extension.rs":"ea5fd70b1b56b3287416e92814f9f02fbca11dbc4969c355c89ade61cebad6a0","src/handler/mod.rs":"0d30a48a4d5f12d1ca79b14b4b3ee0c767682d489657913856b8fa83200af46c","src/handler/service.rs":"941977b1c66fba5670a8a24b0f755d881988b7cd05bb285001d89cad83ae5e3b","src/json.rs":"5df4e4f3e6de94b0619f7c4c12257275035f51b9d0b8129a7d53ab3d2cd6c901","src/lib.rs":"32b7910b38d6571043deb6dc24b01dea61bdb365f34de7201faafcb7315b5311","src/macros.rs":"6567e7ecaeef04071ced390360f314eb3d8b4d01aae603611039e799009db59e","src/middleware/from_extractor.rs":"ffe078c788ea8142d4b0cc992400008cee0958409db1410fcae0c68fac648a6a","src/middleware/from_fn.rs":"32084741acf5fe99aae5f114d3694b6ff618b1062157fbfd3cb83bf459aca57b","src/middleware/map_request.rs":"6ae78a54bc6090f441ba99eb0e8972b1bbb75ecafa8920c145477e376856e573","src/middleware/map_response.rs":"775d8d932aaa48c6f378ef7282c2c659232ba08a3ae0160fb8582a44a9817094","src/middleware/mod.rs":"5b7fccd72e7dc87e321516f9656995f701efc9eacffc322861d931c4de21629e","src/response/mod.rs":"c6537b8aa8f4b2da441409370934b108551cbe844081b7229cf6b828dff30497","src/response/redirect.rs":"b94d9118e86de3224ad8d198f374a768cb49b3e9ed4cf5b069fbd059bb4dce01","src/response/sse.rs":"3e1892a5dceb9a08ebdda24c029d2458bc80ddbf72cc8113ed613d14c9e08908","src/routing/future.rs":"c0610a9b104f64f02deec5fdf79e148c09e72e6f325b62afc174f42b36f295c5","src/routing/into_make_service.rs":"eb259a904f471078cf4942573a99ab11a3f9836a85c7d0daf5a92bcb8d69fda6","src/routing/method_filter.rs":"f4eef4a2f3b06b711ffeeee826c3e817e41fc6bf1b3a2bd38117e5d9c7a584fb","src/routing/method_routing.rs":"564b9095988f1de20473132b03b153af04e12f4c44a6998509a2954b26cf293e","src/routing/mod.rs":"c1e8181edd462c8d8911cb249104eccce47cafb71e2772bf74577e0da73eb7b5","src/routing/not_found.rs":"14145bf876006a603a1819d28454a7e8c2d45fdbc23046ea041b4e62cda4d2a4","src/routing/path_router.rs":"64c50cebebf570b7747a330c28c66ac489393451d76a9d616010f174cbec89f3","src/routing/route.rs":"7f8e8e61ac95cf2c9d7bd3b714e37ef71056f2b7162f5ef60026d2cae29d01a5","src/routing/strip_prefix.rs":"437a82ee5bfa3112058032cbf511b4abd11c3fc2ebc38d92f4c54e903ad3a906","src/routing/tests/fallback.rs":"644fa72a277a09a4309fbc1abda7d3d74d48ff60dd33e22a1c23f900020653b8","src/routing/tests/get_to_head.rs":"85659b88e83ecf829efc5293bedc9243eaffdb0dc568b3f79a125e12f0c68b21","src/routing/tests/handle_error.rs":"b56b085f9ee666a3c3ca669971e9c0250f786433e046261e05b3253869103690","src/routing/tests/merge.rs":"76b09c9c3554676624b7ef98b23bc9d0a74494a5b0fb7bdc21d1a13e3a0b7870","src/routing/tests/mod.rs":"dce57b4a04f63b78ad989fb640a37604cfeb6b1f38eee87db07bd94efd2b3892","src/routing/tests/nest.rs":"b84f3e708f2c8c6eef930c40d5bc6655eb652cef6b9b7651d7274e8b3084171c","src/routing/url_params.rs":"c9f1d2ce2044bd61df4a4db704990e6b0b10c9f809e516cf63eb116d2b0cb73b","src/service_ext.rs":"cacb02bae694edd667a176a9ffd5621434997bf1395ee635a407d9d98787265b","src/test_helpers/mod.rs":"288076f58a86276a31e8652f41f6960c446acfbe74169ab3cc05705e7c6edc3e","src/test_helpers/test_client.rs":"0ed24f8a249e728a9d28c93eb767c0bfe0cab9dca2b4252a879c92db2455cbe6","src/test_helpers/tracing_helpers.rs":"d664f080c7827137e82236c9dc94b87f0eb9f1fe0a8dc373ae5f82202a94eff2","src/typed_header.rs":"441ea68bdee820f5f126fed2da9eb9fb7bbfe14bd65395b52ab85dadc72a9486","src/util.rs":"bcc9ffb205e84d5ef265d2703a84e91cfb73fa0e9846d078d38ea78fd04b7131"},"package":"3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/axum/Cargo.toml temporalio-1.3.0/vendor/axum/Cargo.toml --- temporalio-1.3.0/vendor/axum/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,9 +11,9 @@ [package] edition = "2021" -rust-version = "1.60" +rust-version = "1.63" name = "axum" -version = "0.6.18" +version = "0.6.20" description = "Web framework that focuses on ergonomics and modularity" homepage = "https://github.com/tokio-rs/axum" readme = "README.md" @@ -77,7 +77,7 @@ version = "0.3.4" [dependencies.axum-macros] -version = "0.3.7" +version = "0.3.8" optional = true [dependencies.base64] @@ -161,7 +161,7 @@ package = "tokio" [dependencies.tokio-tungstenite] -version = "0.18.0" +version = "0.20" optional = true [dependencies.tower] @@ -217,7 +217,7 @@ version = "1.0" [dev-dependencies.axum-macros] -version = "0.3.7" +version = "0.3.8" features = ["__private"] [dev-dependencies.quickcheck] diff -Nru temporalio-1.3.0/vendor/axum/CHANGELOG.md temporalio-1.3.0/vendor/axum/CHANGELOG.md --- temporalio-1.3.0/vendor/axum/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -9,6 +9,32 @@ - None. +# 0.6.20 (03. August, 2023) + +- **added:** `WebSocketUpgrade::write_buffer_size` and `WebSocketUpgrade::max_write_buffer_size` +- **changed:** Deprecate `WebSocketUpgrade::max_send_queue` +- **change:** Update tokio-tungstenite to 0.20 +- **added:** Implement `Handler` for `T: IntoResponse` ([#2140]) + +[#2140]: https://github.com/tokio-rs/axum/pull/2140 + +# 0.6.19 (17. July, 2023) + +- **added:** Add `axum::extract::Query::try_from_uri` ([#2058]) +- **added:** Implement `IntoResponse` for `Box` and `Box<[u8]>` ([#2035]) +- **fixed:** Fix bugs around merging routers with nested fallbacks ([#2096]) +- **fixed:** Fix `.source()` of composite rejections ([#2030]) +- **fixed:** Allow unreachable code in `#[debug_handler]` ([#2014]) +- **change:** Update tokio-tungstenite to 0.19 ([#2021]) +- **change:** axum's MSRV is now 1.63 ([#2021]) + +[#2014]: https://github.com/tokio-rs/axum/pull/2014 +[#2021]: https://github.com/tokio-rs/axum/pull/2021 +[#2030]: https://github.com/tokio-rs/axum/pull/2030 +[#2035]: https://github.com/tokio-rs/axum/pull/2035 +[#2058]: https://github.com/tokio-rs/axum/pull/2058 +[#2096]: https://github.com/tokio-rs/axum/pull/2096 + # 0.6.18 (30. April, 2023) - **fixed:** Don't remove the `Sec-WebSocket-Key` header in `WebSocketUpgrade` ([#1972]) diff -Nru temporalio-1.3.0/vendor/axum/README.md temporalio-1.3.0/vendor/axum/README.md --- temporalio-1.3.0/vendor/axum/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -111,7 +111,7 @@ ## Minimum supported Rust version -axum's MSRV is 1.60. +axum's MSRV is 1.63. ## Examples @@ -130,7 +130,7 @@ ## Contributing -:balloon: Thanks for your help improving the project! We are so happy to have +🎈 Thanks for your help improving the project! We are so happy to have you! We have a [contributing guide][contributing] to help you get involved in the `axum` project. diff -Nru temporalio-1.3.0/vendor/axum/src/docs/error_handling.md temporalio-1.3.0/vendor/axum/src/docs/error_handling.md --- temporalio-1.3.0/vendor/axum/src/docs/error_handling.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/src/docs/error_handling.md 2023-10-30 19:40:00.000000000 +0000 @@ -38,6 +38,16 @@ `Err(StatusCode::INTERNAL_SERVER_ERROR)`. These are not considered errors in axum. +Instead of a direct `StatusCode`, it makes sense to use intermediate error type +that can ultimately be converted to `Response`. This allows using `?` operator +in handlers. See those examples: + +* [`anyhow-error-response`][anyhow] for generic boxed errors +* [`error-handling-and-dependency-injection`][ehdi] for application-specific detailed errors + +[anyhow]: https://github.com/tokio-rs/axum/blob/main/examples/anyhow-error-response/src/main.rs +[ehdi]: https://github.com/tokio-rs/axum/blob/main/examples/error-handling-and-dependency-injection/src/main.rs + This also applies to extractors. If an extractor doesn't match the request the request will be rejected and a response will be returned without calling your handler. See [`extract`](crate::extract) to learn more about handling extractor diff -Nru temporalio-1.3.0/vendor/axum/src/docs/extract.md temporalio-1.3.0/vendor/axum/src/docs/extract.md --- temporalio-1.3.0/vendor/axum/src/docs/extract.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/src/docs/extract.md 2023-10-30 19:40:00.000000000 +0000 @@ -366,13 +366,16 @@ } } -// attempt to extract the inner `serde_json::Error`, if that succeeds we can -// provide a more specific error +// attempt to extract the inner `serde_path_to_error::Error`, +// if that succeeds we can provide a more specific error. +// +// `Json` uses `serde_path_to_error` so the error will be wrapped in `serde_path_to_error::Error`. fn serde_json_error_response(err: E) -> (StatusCode, String) where E: Error + 'static, { - if let Some(serde_json_err) = find_error_source::(&err) { + if let Some(err) = find_error_source::>(&err) { + let serde_json_err = err.inner(); ( StatusCode::BAD_REQUEST, format!( @@ -400,6 +403,24 @@ None } } +# +# #[tokio::main] +# async fn main() { +# use axum::extract::FromRequest; +# +# let req = axum::http::Request::builder() +# .header("content-type", "application/json") +# .body(axum::body::Body::from("{")) +# .unwrap(); +# +# let err = match Json::::from_request(req, &()).await.unwrap_err() { +# JsonRejection::JsonSyntaxError(err) => err, +# _ => panic!(), +# }; +# +# let (_, body) = serde_json_error_response(err); +# assert_eq!(body, "Invalid JSON at line 1 column 1"); +# } ``` Note that while this approach works it might break in the future if axum changes diff -Nru temporalio-1.3.0/vendor/axum/src/docs/middleware.md temporalio-1.3.0/vendor/axum/src/docs/middleware.md --- temporalio-1.3.0/vendor/axum/src/docs/middleware.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/src/docs/middleware.md 2023-10-30 19:40:00.000000000 +0000 @@ -127,7 +127,7 @@ - It then does its thing and passes the request onto `layer_two` - Which passes the request onto `layer_one` - Which passes the request onto `handler` where a response is produced -- That response is then passes to `layer_one` +- That response is then passed to `layer_one` - Then to `layer_two` - And finally to `layer_three` where it's returned out of your app diff -Nru temporalio-1.3.0/vendor/axum/src/docs/routing/merge.md temporalio-1.3.0/vendor/axum/src/docs/routing/merge.md --- temporalio-1.3.0/vendor/axum/src/docs/routing/merge.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/src/docs/routing/merge.md 2023-10-30 19:40:00.000000000 +0000 @@ -31,7 +31,7 @@ // Our app now accepts // - GET /users // - GET /users/:id -// - POST /teams +// - GET /teams # async { # hyper::Server::bind(&"".parse().unwrap()).serve(app.into_make_service()).await.unwrap(); # }; diff -Nru temporalio-1.3.0/vendor/axum/src/docs/routing/route.md temporalio-1.3.0/vendor/axum/src/docs/routing/route.md --- temporalio-1.3.0/vendor/axum/src/docs/routing/route.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/src/docs/routing/route.md 2023-10-30 19:40:00.000000000 +0000 @@ -61,7 +61,7 @@ # Accepting multiple methods -To accept multiple methods for the same route you must add all handlers at the +To accept multiple methods for the same route you can add all handlers at the same time: ```rust @@ -82,6 +82,23 @@ # }; ``` +Or you can add them one by one: + +```rust +# use axum::Router; +# use axum::routing::{get, post, delete}; +# +let app = Router::new() + .route("/", get(get_root)) + .route("/", post(post_root)) + .route("/", delete(delete_root)); +# +# let _: Router = app; +# async fn get_root() {} +# async fn post_root() {} +# async fn delete_root() {} +``` + # More examples ```rust diff -Nru temporalio-1.3.0/vendor/axum/src/extract/matched_path.rs temporalio-1.3.0/vendor/axum/src/extract/matched_path.rs --- temporalio-1.3.0/vendor/axum/src/extract/matched_path.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/src/extract/matched_path.rs 2023-10-30 19:40:00.000000000 +0000 @@ -143,7 +143,7 @@ if matched_path.ends_with(NEST_TAIL_PARAM_CAPTURE) { extensions.insert(MatchedNestedPath(matched_path)); - debug_assert!(matches!(extensions.remove::(), None)); + debug_assert!(extensions.remove::().is_none()); } else { extensions.insert(MatchedPath(matched_path)); extensions.remove::(); diff -Nru temporalio-1.3.0/vendor/axum/src/extract/multipart.rs temporalio-1.3.0/vendor/axum/src/extract/multipart.rs --- temporalio-1.3.0/vendor/axum/src/extract/multipart.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/src/extract/multipart.rs 2023-10-30 19:40:00.000000000 +0000 @@ -22,7 +22,7 @@ /// Extractor that parses `multipart/form-data` requests (commonly used with file uploads). /// -/// Since extracting multipart form data from the request requires consuming the body, the +/// âš ï¸ Since extracting multipart form data from the request requires consuming the body, the /// `Multipart` extractor must be *last* if there are multiple extractors in a handler. /// See ["the order of extractors"][order-of-extractors] /// diff -Nru temporalio-1.3.0/vendor/axum/src/extract/query.rs temporalio-1.3.0/vendor/axum/src/extract/query.rs --- temporalio-1.3.0/vendor/axum/src/extract/query.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/src/extract/query.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ use super::{rejection::*, FromRequestParts}; use async_trait::async_trait; -use http::request::Parts; +use http::{request::Parts, Uri}; use serde::de::DeserializeOwned; /// Extractor that deserializes query strings into some type. @@ -57,10 +57,38 @@ type Rejection = QueryRejection; async fn from_request_parts(parts: &mut Parts, _state: &S) -> Result { - let query = parts.uri.query().unwrap_or_default(); - let value = + Self::try_from_uri(&parts.uri) + } +} + +impl Query +where + T: DeserializeOwned, +{ + /// Attempts to construct a [`Query`] from a reference to a [`Uri`]. + /// + /// # Example + /// ``` + /// use axum::extract::Query; + /// use http::Uri; + /// use serde::Deserialize; + /// + /// #[derive(Deserialize)] + /// struct ExampleParams { + /// foo: String, + /// bar: u32, + /// } + /// + /// let uri: Uri = "http://example.com/path?foo=hello&bar=42".parse().unwrap(); + /// let result: Query = Query::try_from_uri(&uri).unwrap(); + /// assert_eq!(result.foo, String::from("hello")); + /// assert_eq!(result.bar, 42); + /// ``` + pub fn try_from_uri(value: &Uri) -> Result { + let query = value.query().unwrap_or_default(); + let params = serde_urlencoded::from_str(query).map_err(FailedToDeserializeQueryString::from_err)?; - Ok(Query(value)) + Ok(Query(params)) } } @@ -136,4 +164,32 @@ let res = client.get("/?n=hi").send().await; assert_eq!(res.status(), StatusCode::BAD_REQUEST); } + + #[test] + fn test_try_from_uri() { + #[derive(Deserialize)] + struct TestQueryParams { + foo: String, + bar: u32, + } + let uri: Uri = "http://example.com/path?foo=hello&bar=42".parse().unwrap(); + let result: Query = Query::try_from_uri(&uri).unwrap(); + assert_eq!(result.foo, String::from("hello")); + assert_eq!(result.bar, 42); + } + + #[test] + fn test_try_from_uri_with_invalid_query() { + #[derive(Deserialize)] + struct TestQueryParams { + _foo: String, + _bar: u32, + } + let uri: Uri = "http://example.com/path?foo=hello&bar=invalid" + .parse() + .unwrap(); + let result: Result, _> = Query::try_from_uri(&uri); + + assert!(result.is_err()); + } } diff -Nru temporalio-1.3.0/vendor/axum/src/extract/rejection.rs temporalio-1.3.0/vendor/axum/src/extract/rejection.rs --- temporalio-1.3.0/vendor/axum/src/extract/rejection.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/src/extract/rejection.rs 2023-10-30 19:40:00.000000000 +0000 @@ -93,7 +93,7 @@ #[status = BAD_REQUEST] #[body = "Failed to deserialize query string"] /// Rejection type used if the [`Query`](super::Query) extractor is unable to - /// deserialize the form into the target type. + /// deserialize the query string into the target type. pub struct FailedToDeserializeQueryString(Error); } diff -Nru temporalio-1.3.0/vendor/axum/src/extract/ws.rs temporalio-1.3.0/vendor/axum/src/extract/ws.rs --- temporalio-1.3.0/vendor/axum/src/extract/ws.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/src/extract/ws.rs 2023-10-30 19:40:00.000000000 +0000 @@ -157,9 +157,39 @@ } impl WebSocketUpgrade { - /// Set the size of the internal message send queue. - pub fn max_send_queue(mut self, max: usize) -> Self { - self.config.max_send_queue = Some(max); + /// Does nothing, instead use `max_write_buffer_size`. + #[deprecated] + pub fn max_send_queue(self, _: usize) -> Self { + self + } + + /// The target minimum size of the write buffer to reach before writing the data + /// to the underlying stream. + /// + /// The default value is 128 KiB. + /// + /// If set to `0` each message will be eagerly written to the underlying stream. + /// It is often more optimal to allow them to buffer a little, hence the default value. + /// + /// Note: [`flush`](SinkExt::flush) will always fully write the buffer regardless. + pub fn write_buffer_size(mut self, size: usize) -> Self { + self.config.write_buffer_size = size; + self + } + + /// The max size of the write buffer in bytes. Setting this can provide backpressure + /// in the case the write buffer is filling up due to write errors. + /// + /// The default value is unlimited. + /// + /// Note: The write buffer only builds up past [`write_buffer_size`](Self::write_buffer_size) + /// when writes to the underlying stream are failing. So the **write buffer can not + /// fill up if you are not observing write errors even if not flushing**. + /// + /// Note: Should always be at least [`write_buffer_size + 1 message`](Self::write_buffer_size) + /// and probably a little more depending on error handling strategy. + pub fn max_write_buffer_size(mut self, max: usize) -> Self { + self.config.max_write_buffer_size = max; self } diff -Nru temporalio-1.3.0/vendor/axum/src/form.rs temporalio-1.3.0/vendor/axum/src/form.rs --- temporalio-1.3.0/vendor/axum/src/form.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/src/form.rs 2023-10-30 19:40:00.000000000 +0000 @@ -17,7 +17,7 @@ /// requests and `application/x-www-form-urlencoded` encoded request bodies for other methods. It /// supports any type that implements [`serde::Deserialize`]. /// -/// Since parsing form data might require consuming the request body, the `Form` extractor must be +/// âš ï¸ Since parsing form data might require consuming the request body, the `Form` extractor must be /// *last* if there are multiple extractors in a handler. See ["the order of /// extractors"][order-of-extractors] /// diff -Nru temporalio-1.3.0/vendor/axum/src/handler/mod.rs temporalio-1.3.0/vendor/axum/src/handler/mod.rs --- temporalio-1.3.0/vendor/axum/src/handler/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/src/handler/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -32,6 +32,16 @@ //! } //! ``` //! +//! Instead of a direct `StatusCode`, it makes sense to use intermediate error type +//! that can ultimately be converted to `Response`. This allows using `?` operator +//! in handlers. See those examples: +//! +//! * [`anyhow-error-response`][anyhow] for generic boxed errors +//! * [`error-handling-and-dependency-injection`][ehdi] for application-specific detailed errors +//! +//! [anyhow]: https://github.com/tokio-rs/axum/blob/main/examples/anyhow-error-response/src/main.rs +//! [ehdi]: https://github.com/tokio-rs/axum/blob/main/examples/error-handling-and-dependency-injection/src/main.rs +//! #![doc = include_str!("../docs/debugging_handler_type_errors.md")] #[cfg(feature = "tokio")] @@ -93,6 +103,31 @@ /// {} /// ``` #[doc = include_str!("../docs/debugging_handler_type_errors.md")] +/// +/// # Handlers that aren't functions +/// +/// The `Handler` trait is also implemented for `T: IntoResponse`. That allows easily returning +/// fixed data for routes: +/// +/// ``` +/// use axum::{ +/// Router, +/// routing::{get, post}, +/// Json, +/// http::StatusCode, +/// }; +/// use serde_json::json; +/// +/// let app = Router::new() +/// // respond with a fixed string +/// .route("/", get("Hello, World!")) +/// // or return some mock data +/// .route("/users", post(( +/// StatusCode::CREATED, +/// Json(json!({ "id": 1, "username": "alice" })), +/// ))); +/// # let _: Router = app; +/// ``` #[cfg_attr( nightly_error_messages, rustc_on_unimplemented( @@ -221,6 +256,24 @@ all_the_tuples!(impl_handler); +mod private { + // Marker type for `impl Handler for T` + #[allow(missing_debug_implementations)] + pub enum IntoResponseHandler {} +} + +impl Handler for T +where + T: IntoResponse + Clone + Send + 'static, + B: Send + 'static, +{ + type Future = std::future::Ready; + + fn call(self, _req: Request, _state: S) -> Self::Future { + std::future::ready(self.into_response()) + } +} + /// A [`Service`] created from a [`Handler`] by applying a Tower middleware. /// /// Created with [`Handler::layer`]. See that method for more details. diff -Nru temporalio-1.3.0/vendor/axum/src/json.rs temporalio-1.3.0/vendor/axum/src/json.rs --- temporalio-1.3.0/vendor/axum/src/json.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/src/json.rs 2023-10-30 19:40:00.000000000 +0000 @@ -24,7 +24,7 @@ /// type. /// - Buffering the request body fails. /// -/// Since parsing JSON requires consuming the request body, the `Json` extractor must be +/// âš ï¸ Since parsing JSON requires consuming the request body, the `Json` extractor must be /// *last* if there are multiple extractors in a handler. /// See ["the order of extractors"][order-of-extractors] /// diff -Nru temporalio-1.3.0/vendor/axum/src/routing/method_routing.rs temporalio-1.3.0/vendor/axum/src/routing/method_routing.rs --- temporalio-1.3.0/vendor/axum/src/routing/method_routing.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/src/routing/method_routing.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1375,7 +1375,7 @@ fn buiding_complex_router() { let app = crate::Router::new().route( "/", - // use the all the things :bomb: + // use the all the things ðŸ’£ï¸ get(ok) .post(ok) .route_layer(ValidateRequestHeaderLayer::bearer("password")) diff -Nru temporalio-1.3.0/vendor/axum/src/routing/mod.rs temporalio-1.3.0/vendor/axum/src/routing/mod.rs --- temporalio-1.3.0/vendor/axum/src/routing/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/src/routing/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -98,6 +98,7 @@ pub(crate) const NEST_TAIL_PARAM: &str = "__private__axum_nest_tail_param"; pub(crate) const NEST_TAIL_PARAM_CAPTURE: &str = "/*__private__axum_nest_tail_param"; pub(crate) const FALLBACK_PARAM: &str = "__private__axum_fallback"; +pub(crate) const FALLBACK_PARAM_PATH: &str = "/*__private__axum_fallback"; impl Router where @@ -185,9 +186,12 @@ where R: Into>, { + const PANIC_MSG: &str = + "Failed to merge fallbacks. This is a bug in axum. Please file an issue"; + let Router { path_router, - fallback_router: other_fallback, + fallback_router: mut other_fallback, default_fallback, catch_all_fallback, } = other.into(); @@ -198,16 +202,19 @@ // both have the default fallback // use the one from other (true, true) => { - self.fallback_router = other_fallback; + self.fallback_router.merge(other_fallback).expect(PANIC_MSG); } // self has default fallback, other has a custom fallback (true, false) => { - self.fallback_router = other_fallback; + self.fallback_router.merge(other_fallback).expect(PANIC_MSG); self.default_fallback = false; } // self has a custom fallback, other has a default - // nothing to do - (false, true) => {} + (false, true) => { + let fallback_router = std::mem::take(&mut self.fallback_router); + other_fallback.merge(fallback_router).expect(PANIC_MSG); + self.fallback_router = other_fallback; + } // both have a custom fallback, not allowed (false, false) => { panic!("Cannot merge two `Router`s that both have a fallback") diff -Nru temporalio-1.3.0/vendor/axum/src/routing/path_router.rs temporalio-1.3.0/vendor/axum/src/routing/path_router.rs --- temporalio-1.3.0/vendor/axum/src/routing/path_router.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/src/routing/path_router.rs 2023-10-30 19:40:00.000000000 +0000 @@ -8,7 +8,7 @@ use super::{ future::RouteFuture, not_found::NotFound, strip_prefix::StripPrefix, url_params, Endpoint, - MethodRouter, Route, RouteId, FALLBACK_PARAM, NEST_TAIL_PARAM, + MethodRouter, Route, RouteId, FALLBACK_PARAM_PATH, NEST_TAIL_PARAM, }; pub(super) struct PathRouter { @@ -30,7 +30,7 @@ pub(super) fn set_fallback(&mut self, endpoint: Endpoint) { self.replace_endpoint("/", endpoint.clone()); - self.replace_endpoint(&format!("/*{FALLBACK_PARAM}"), endpoint); + self.replace_endpoint(FALLBACK_PARAM_PATH, endpoint); } } @@ -139,10 +139,26 @@ .route_id_to_path .get(&id) .expect("no path for route id. This is a bug in axum. Please file an issue"); - match route { - Endpoint::MethodRouter(method_router) => self.route(path, method_router)?, - Endpoint::Route(route) => self.route_service(path, route)?, - }; + + if IS_FALLBACK && (&**path == "/" || &**path == FALLBACK_PARAM_PATH) { + // when merging two routers it doesn't matter if you do `a.merge(b)` or + // `b.merge(a)`. This must also be true for fallbacks. + // + // However all fallback routers will have routes for `/` and `/*` so when merging + // we have to ignore the top level fallbacks on one side otherwise we get + // conflicts. + // + // `Router::merge` makes sure that when merging fallbacks `other` always has the + // fallback we want to keep. It panics if both routers have a custom fallback. Thus + // it is always okay to ignore one fallback and `Router::merge` also makes sure the + // one we can ignore is that of `self`. + self.replace_endpoint(path, route); + } else { + match route { + Endpoint::MethodRouter(method_router) => self.route(path, method_router)?, + Endpoint::Route(route) => self.route_service(path, route)?, + } + } } Ok(()) diff -Nru temporalio-1.3.0/vendor/axum/src/routing/tests/fallback.rs temporalio-1.3.0/vendor/axum/src/routing/tests/fallback.rs --- temporalio-1.3.0/vendor/axum/src/routing/tests/fallback.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/src/routing/tests/fallback.rs 2023-10-30 19:40:00.000000000 +0000 @@ -241,3 +241,122 @@ let res = client.get("/foobar").send().await; assert_eq!(res.status(), StatusCode::OK); } + +#[crate::test] +async fn issue_2072() { + let nested_routes = Router::new().fallback(inner_fallback); + + let app = Router::new() + .nest("/nested", nested_routes) + .merge(Router::new()); + + let client = TestClient::new(app); + + let res = client.get("/nested/does-not-exist").send().await; + assert_eq!(res.status(), StatusCode::NOT_FOUND); + assert_eq!(res.text().await, "inner"); + + let res = client.get("/does-not-exist").send().await; + assert_eq!(res.status(), StatusCode::NOT_FOUND); + assert_eq!(res.text().await, ""); +} + +#[crate::test] +async fn issue_2072_outer_fallback_before_merge() { + let nested_routes = Router::new().fallback(inner_fallback); + + let app = Router::new() + .nest("/nested", nested_routes) + .fallback(outer_fallback) + .merge(Router::new()); + + let client = TestClient::new(app); + + let res = client.get("/nested/does-not-exist").send().await; + assert_eq!(res.status(), StatusCode::NOT_FOUND); + assert_eq!(res.text().await, "inner"); + + let res = client.get("/does-not-exist").send().await; + assert_eq!(res.status(), StatusCode::NOT_FOUND); + assert_eq!(res.text().await, "outer"); +} + +#[crate::test] +async fn issue_2072_outer_fallback_after_merge() { + let nested_routes = Router::new().fallback(inner_fallback); + + let app = Router::new() + .nest("/nested", nested_routes) + .merge(Router::new()) + .fallback(outer_fallback); + + let client = TestClient::new(app); + + let res = client.get("/nested/does-not-exist").send().await; + assert_eq!(res.status(), StatusCode::NOT_FOUND); + assert_eq!(res.text().await, "inner"); + + let res = client.get("/does-not-exist").send().await; + assert_eq!(res.status(), StatusCode::NOT_FOUND); + assert_eq!(res.text().await, "outer"); +} + +#[crate::test] +async fn merge_router_with_fallback_into_nested_router_with_fallback() { + let nested_routes = Router::new().fallback(inner_fallback); + + let app = Router::new() + .nest("/nested", nested_routes) + .merge(Router::new().fallback(outer_fallback)); + + let client = TestClient::new(app); + + let res = client.get("/nested/does-not-exist").send().await; + assert_eq!(res.status(), StatusCode::NOT_FOUND); + assert_eq!(res.text().await, "inner"); + + let res = client.get("/does-not-exist").send().await; + assert_eq!(res.status(), StatusCode::NOT_FOUND); + assert_eq!(res.text().await, "outer"); +} + +#[crate::test] +async fn merging_nested_router_with_fallback_into_router_with_fallback() { + let nested_routes = Router::new().fallback(inner_fallback); + + let app = Router::new() + .fallback(outer_fallback) + .merge(Router::new().nest("/nested", nested_routes)); + + let client = TestClient::new(app); + + let res = client.get("/nested/does-not-exist").send().await; + assert_eq!(res.status(), StatusCode::NOT_FOUND); + assert_eq!(res.text().await, "inner"); + + let res = client.get("/does-not-exist").send().await; + assert_eq!(res.status(), StatusCode::NOT_FOUND); + assert_eq!(res.text().await, "outer"); +} + +#[crate::test] +async fn merge_empty_into_router_with_fallback() { + let app = Router::new().fallback(outer_fallback).merge(Router::new()); + + let client = TestClient::new(app); + + let res = client.get("/does-not-exist").send().await; + assert_eq!(res.status(), StatusCode::NOT_FOUND); + assert_eq!(res.text().await, "outer"); +} + +#[crate::test] +async fn merge_router_with_fallback_into_empty() { + let app = Router::new().merge(Router::new().fallback(outer_fallback)); + + let client = TestClient::new(app); + + let res = client.get("/does-not-exist").send().await; + assert_eq!(res.status(), StatusCode::NOT_FOUND); + assert_eq!(res.text().await, "outer"); +} diff -Nru temporalio-1.3.0/vendor/axum/src/routing/tests/mod.rs temporalio-1.3.0/vendor/axum/src/routing/tests/mod.rs --- temporalio-1.3.0/vendor/axum/src/routing/tests/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/axum/src/routing/tests/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1026,3 +1026,14 @@ let body = hyper::body::to_bytes(res).await.unwrap(); assert!(body.is_empty()); } + +#[crate::test] +async fn impl_handler_for_into_response() { + let app = Router::new().route("/things", post((StatusCode::CREATED, "thing created"))); + + let client = TestClient::new(app); + + let res = client.post("/things").send().await; + assert_eq!(res.status(), StatusCode::CREATED); + assert_eq!(res.text().await, "thing created"); +} diff -Nru temporalio-1.3.0/vendor/backtrace/build.rs temporalio-1.3.0/vendor/backtrace/build.rs --- temporalio-1.3.0/vendor/backtrace/build.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/build.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,10 @@ extern crate cc; use std::env; +use std::path::Path; -fn main() { +// Must be public so the build script of `std` can call it. +pub fn main() { match env::var("CARGO_CFG_TARGET_OS").unwrap_or_default().as_str() { "android" => build_android(), _ => {} @@ -10,7 +12,13 @@ } fn build_android() { - let expansion = match cc::Build::new().file("src/android-api.c").try_expand() { + // Resolve `src/android-api.c` relative to this file. + // Required to support calling this from the `std` build script. + let android_api_c = Path::new(file!()) + .parent() + .unwrap() + .join("src/android-api.c"); + let expansion = match cc::Build::new().file(android_api_c).try_expand() { Ok(result) => result, Err(e) => { println!("failed to run C compiler: {}", e); diff -Nru temporalio-1.3.0/vendor/backtrace/.cargo-checksum.json temporalio-1.3.0/vendor/backtrace/.cargo-checksum.json --- temporalio-1.3.0/vendor/backtrace/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.lock":"f31feb9df764e7218aedb67711229342357ec7d5f42d864483a8a922803ffcab","Cargo.toml":"9027cbc60eb972c10a49815c896ebf4e47299ec4ee739e5eed5eb9ac3832ed11","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"6007ea91612793f8c77d499d2065acd2255fc5f3c3268fd8bd1ae5f7bb40d6de","benches/benchmarks.rs":"029b78bb79052ec940eecfd18067b743925189202fc16015d3c4c25b05eb6d67","build.rs":"8d5e860da109f86c67596b10b5613ff6d19f9d24c2970f491a55261fb1973692","ci/android-ndk.sh":"66a384ed28980c3fdf42e773925938d56f045c27fa34487525a6d41bc5ef6d56","ci/android-sdk.sh":"69a953f70f32064d1d2a57c7082a50336b90a12d10c75e5416dbb1d6d718016c","ci/debuglink-docker.sh":"3a16131df8c69fef37331cb6f01a6623d169177474f475159d05bab61df077a9","ci/debuglink.sh":"164a961b930de8c9aedf45a11076c3d41081846a8e6a9566ba2b6ad615179e0b","ci/docker/aarch64-linux-android/Dockerfile":"e9736941e1de9664dca7055898b74bd7148a455b3d3c208c97b2fae2a060fd27","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"a7b7aae0d8e2f826cf1c6c7c3160f8e5e9a30478b83c394b6575ce15b0ff0802","ci/docker/arm-linux-androideabi/Dockerfile":"435a6b1c68a3e33503e01e382eb4c0d69907d15ffe4e2d466307b4643afb1a72","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"5156382ff639b11801c1bd7ddc6e03e8834505a74ecf7160e92182603cd5d96f","ci/docker/armv7-linux-androideabi/Dockerfile":"4a779ddce215f7552a5bb77a10587b9a3cc03ef94434546b6ac2da458d598b19","ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile":"4aaceef14ba700ea3719fe30fcb46f1bb154a47aa52cdb64fa6ed7eff96d6c85","ci/docker/i586-unknown-linux-gnu/Dockerfile":"0816c89b79a74be7ccfc34e95cd718ce29a8698a2ab56903b4b0712470f5c8bb","ci/docker/i686-linux-android/Dockerfile":"08bfb5d56443fc03f513a631a1ae2a1d9665338c25d3c3e4f021533a2805a336","ci/docker/i686-unknown-linux-gnu/Dockerfile":"0816c89b79a74be7ccfc34e95cd718ce29a8698a2ab56903b4b0712470f5c8bb","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"270de99179c925e6284a8283fdb4e40a8c813a569b24930d6cfe79a4c470ab61","ci/docker/s390x-unknown-linux-gnu/Dockerfile":"4aa8ca641efd2f1937ef669eda2f3e357b2fb926911722b3afc6cf25ce4bcac2","ci/docker/x86_64-linux-android/Dockerfile":"0a6e8f5adc84d4d426104fbf0606fd6aabfb7550fc105d62539a8516d631e8ad","ci/docker/x86_64-pc-windows-gnu/Dockerfile":"654988c5c008610f90d5159a8dd0ab6fd491e9c0d16ad65b03ef53f694a5400c","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"9f89f080551fff6678b1efcc0925fc8c16316f69cdd150e89f9e95cdab583510","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"4db3cb7d315588f363eb9f377bf1c27d8e8886c07b6c0d0c5cf7ee91114a718b","ci/run-docker.sh":"70760696a608b0d89eb3dcc4b08f176d709dd9f98e50297f2b7e0bb9b0f3b458","ci/run.sh":"0bb5c8256019779f3e1db20fcc2c01416ffd4679428f3e395ef5f3e55d2d642c","ci/runtest-android.rs":"be2e49bb296b92a8e3643a6c0a70917fe7b130fa43b71a29c4e7514f45c00e7e","examples/backtrace.rs":"5da0c95ccebfaffbbe7b5a92b0e488017dc375cbb5b8fb2b7712dd65b2dfb2ba","examples/raw.rs":"575ec6037f597ba7ab0eaf9dd699fadfabef918ba2affea7dc20cdbde55de5ec","src/android-api.c":"b75f16de578451464f49b83dc817b76aa9a0be0d86ea71d1659cc78f99e94fbd","src/backtrace/dbghelp.rs":"ea2f175d6c62259d86e7e9bb04328e03657d7259d4459aab70734f1cf1cd9d72","src/backtrace/libunwind.rs":"0034180e37da7b155cfe87136f07aecf6e67d51848a2db9689b19cf757bd30ee","src/backtrace/miri.rs":"c0dcb1e430eea92fcbad3e293124010f39c1f8ff1bbbf1a0275c53b05880cd5f","src/backtrace/mod.rs":"c782a02a0f9abd1eab79b1271cb6b793102a3c5b516b5dac2977ec634e158bfc","src/backtrace/noop.rs":"a8550b70b3c83f6852a1dba83cf97b1325238b5aa3ce7b35437e9382cdafd924","src/capture.rs":"8701657803f04ea9e0b9dd6a4ca619761edb8a42cfd2f7c9c9e4ee31d9357159","src/dbghelp.rs":"eae2d15fdf7a894ff4c0641f801b687337c07640a80b3a60f2b66013195ca7b4","src/lib.rs":"897d98f5db9ba97802b853b2aaab79645808c0570e840e22c661bae43ba7f111","src/print.rs":"c158bb0c995b3048482e4caebbf7afaa1361300ee8a4d48e50cfb47a9e09a117","src/print/fuchsia.rs":"cd760acf0c5b5f866ef9dbc83ef8895d8d459ad5146afd79f89be453d8bdcad4","src/symbolize/dbghelp.rs":"58aeda764a27702e0abb3af62bae8a162d8b6cb8c80ffd141ee794d81a8ace15","src/symbolize/gimli.rs":"4f93f6d6652a518ca4c4866fdefb928aa8cf7f547cbdffe0eec081760d1a2507","src/symbolize/gimli/coff.rs":"1a6d69aeb9c79d1acdeb054c1af050251c774d1328ef1a964d08f01c27f2bd2f","src/symbolize/gimli/elf.rs":"0b11415c75302bd4f70abf5147e83595fba38fcd54344170aedce1cb70049807","src/symbolize/gimli/libs_dl_iterate_phdr.rs":"bc64242857dd82288d6e7d6b183e651d05ab7bc4f037f19b9e42719f04fc2c83","src/symbolize/gimli/libs_haiku.rs":"0a0d4b37145e898f7068cadacccf362d8216e463e7026af2ce38d75ebfd74bea","src/symbolize/gimli/libs_illumos.rs":"523e96272b46bdaab2abb0dd0201cb8032bf86558cbed986a20d7e2cc02fa8be","src/symbolize/gimli/libs_libnx.rs":"4116eceadb2d9916d4f5602712eacec647f185d4c53c723aced8de5fc471b14d","src/symbolize/gimli/libs_macos.rs":"c24cb480ae029b350325873ac4358104e5943ad61b62eb22bb6b65b2f05bbd29","src/symbolize/gimli/libs_windows.rs":"6459f8610ca1a0fd7456539ec604f5276c94b3d0d7331357eaed338e49220a02","src/symbolize/gimli/macho.rs":"3cb44a7ff72d0b8c619463c2346f2cfdc378996bb523ceb0c5ab22b1443035b6","src/symbolize/gimli/mmap_fake.rs":"9564fcf47000e70d521b31518e205c8e6ee09b7410fb1eb1e452721757ff54ba","src/symbolize/gimli/mmap_unix.rs":"7d3d7bc6e5d34e3ecb1fe8b30d36bed404b4b9cd79d3b771c91215abfabb9ad1","src/symbolize/gimli/mmap_windows.rs":"a80bada1cef7e2ba1cff7b211eaa53b816248a7c89713c8cc6a70996f727efe4","src/symbolize/gimli/parse_running_mmaps_unix.rs":"0b343cf9ceacd57661b7d86cf5e1df7cc65559f5f684b85fa92014cd6214802d","src/symbolize/gimli/stash.rs":"69153136df5cb9bf955430c0a2f43c6131834cb7846631f39b58c074496a6ef0","src/symbolize/miri.rs":"f5201cc8a7de24ad3424d2472cb0af59cd28563d09cc0c21e998f4cee4367ade","src/symbolize/mod.rs":"a7177603810aca1cd9cd4a59027a1dd2c792dc9d345435b5dc866eb7c8b66baf","src/symbolize/noop.rs":"5d4432079b8ae2b9382945a57ae43df57bb4b7ed2e5956d4167e051a44567388","src/types.rs":"f43c94b99d57ca66a5cfe939a46016c95b2d69d82695fb52480f7a3e5b344fd9","src/windows.rs":"b0bbbf4088021fd646024ad01de1a60bf12bf62b6b744f0f5952681f77cd49e6","tests/accuracy/auxiliary.rs":"71d2238da401042e007ef5ee20336d6834724bae96d93c8c52d11a5a332d7d34","tests/accuracy/main.rs":"f8e42aeeb50b35fca380db2e9fe52820cc0bc3133167289c5710e3290701e78e","tests/common/mod.rs":"733101288a48cf94d5a87a1957724deaf2650c3e4e8aa0190a4a7db62aa90d01","tests/concurrent-panics.rs":"b60279ad5c4fb9b2754807f35179cbc8fbd7acbe6e92ac6d0f416ae75db38705","tests/current-exe-mismatch.rs":"540523069f005a9a0822497c6e1c5b7f0df442f0cef6b6e411d6f600bcd0be15","tests/long_fn_name.rs":"ebef58e34543ed4d47048faa9b6525f68fc71e12255af734523a513c5d4baa6f","tests/skip_inner_frames.rs":"6c03cd0ad9facf0aa81e59cf970504785b6ada9993a2dfc2aea0b18b79419aeb","tests/smoke.rs":"33014495f9158aea2d0ee2ee3335ffe82105c7ed894f96eaf7d23845a60f7439"},"package":"4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12"} \ No newline at end of file +{"files":{"Cargo.lock":"d2dfb97c75e40290ddadf7f5f11eb154d0398088acdb893afeef0ce8f9be5929","Cargo.toml":"b509b390f54dbe9df8e5572dcc27a2f828686b35aab1c83a2dd88640c515bd9c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"6007ea91612793f8c77d499d2065acd2255fc5f3c3268fd8bd1ae5f7bb40d6de","benches/benchmarks.rs":"029b78bb79052ec940eecfd18067b743925189202fc16015d3c4c25b05eb6d67","build.rs":"0e30892bba823f9a1143d6d15995951b65a25f917af5443ba96cc8323bddb67f","examples/backtrace.rs":"5da0c95ccebfaffbbe7b5a92b0e488017dc375cbb5b8fb2b7712dd65b2dfb2ba","examples/raw.rs":"575ec6037f597ba7ab0eaf9dd699fadfabef918ba2affea7dc20cdbde55de5ec","src/android-api.c":"b75f16de578451464f49b83dc817b76aa9a0be0d86ea71d1659cc78f99e94fbd","src/backtrace/dbghelp.rs":"ea2f175d6c62259d86e7e9bb04328e03657d7259d4459aab70734f1cf1cd9d72","src/backtrace/libunwind.rs":"0034180e37da7b155cfe87136f07aecf6e67d51848a2db9689b19cf757bd30ee","src/backtrace/miri.rs":"c0dcb1e430eea92fcbad3e293124010f39c1f8ff1bbbf1a0275c53b05880cd5f","src/backtrace/mod.rs":"c782a02a0f9abd1eab79b1271cb6b793102a3c5b516b5dac2977ec634e158bfc","src/backtrace/noop.rs":"a8550b70b3c83f6852a1dba83cf97b1325238b5aa3ce7b35437e9382cdafd924","src/capture.rs":"8701657803f04ea9e0b9dd6a4ca619761edb8a42cfd2f7c9c9e4ee31d9357159","src/dbghelp.rs":"eae2d15fdf7a894ff4c0641f801b687337c07640a80b3a60f2b66013195ca7b4","src/lib.rs":"897d98f5db9ba97802b853b2aaab79645808c0570e840e22c661bae43ba7f111","src/print.rs":"a550d6c11e70ff8e5d0ff6d6034db0e33567f29d8ac7596459af67abef9e6300","src/print/fuchsia.rs":"2c04b3125edf93b47c07489646f5fffa3f7614f7925d0a95886ac0c81368a945","src/symbolize/dbghelp.rs":"58aeda764a27702e0abb3af62bae8a162d8b6cb8c80ffd141ee794d81a8ace15","src/symbolize/gimli.rs":"4f93f6d6652a518ca4c4866fdefb928aa8cf7f547cbdffe0eec081760d1a2507","src/symbolize/gimli/coff.rs":"1a6d69aeb9c79d1acdeb054c1af050251c774d1328ef1a964d08f01c27f2bd2f","src/symbolize/gimli/elf.rs":"0b11415c75302bd4f70abf5147e83595fba38fcd54344170aedce1cb70049807","src/symbolize/gimli/libs_dl_iterate_phdr.rs":"bc64242857dd82288d6e7d6b183e651d05ab7bc4f037f19b9e42719f04fc2c83","src/symbolize/gimli/libs_haiku.rs":"0a0d4b37145e898f7068cadacccf362d8216e463e7026af2ce38d75ebfd74bea","src/symbolize/gimli/libs_illumos.rs":"523e96272b46bdaab2abb0dd0201cb8032bf86558cbed986a20d7e2cc02fa8be","src/symbolize/gimli/libs_libnx.rs":"4116eceadb2d9916d4f5602712eacec647f185d4c53c723aced8de5fc471b14d","src/symbolize/gimli/libs_macos.rs":"c24cb480ae029b350325873ac4358104e5943ad61b62eb22bb6b65b2f05bbd29","src/symbolize/gimli/libs_windows.rs":"6459f8610ca1a0fd7456539ec604f5276c94b3d0d7331357eaed338e49220a02","src/symbolize/gimli/macho.rs":"3cb44a7ff72d0b8c619463c2346f2cfdc378996bb523ceb0c5ab22b1443035b6","src/symbolize/gimli/mmap_fake.rs":"9564fcf47000e70d521b31518e205c8e6ee09b7410fb1eb1e452721757ff54ba","src/symbolize/gimli/mmap_unix.rs":"7d3d7bc6e5d34e3ecb1fe8b30d36bed404b4b9cd79d3b771c91215abfabb9ad1","src/symbolize/gimli/mmap_windows.rs":"a80bada1cef7e2ba1cff7b211eaa53b816248a7c89713c8cc6a70996f727efe4","src/symbolize/gimli/parse_running_mmaps_unix.rs":"b0bffbe15bc55920ecbeb6afe547f81a19a6e428e1a5038d33b8a5a837fe8c3b","src/symbolize/gimli/stash.rs":"69153136df5cb9bf955430c0a2f43c6131834cb7846631f39b58c074496a6ef0","src/symbolize/miri.rs":"f5201cc8a7de24ad3424d2472cb0af59cd28563d09cc0c21e998f4cee4367ade","src/symbolize/mod.rs":"b8248e5210a3a6ddd32c09dbb46c67efaceba7638a6688a5c27f30af7b991534","src/symbolize/noop.rs":"5d4432079b8ae2b9382945a57ae43df57bb4b7ed2e5956d4167e051a44567388","src/types.rs":"f43c94b99d57ca66a5cfe939a46016c95b2d69d82695fb52480f7a3e5b344fd9","src/windows.rs":"c45d95310d787f0be05f1a297b8a954defcd7bdfa48bab38c7196f5875b89852","tests/accuracy/auxiliary.rs":"71d2238da401042e007ef5ee20336d6834724bae96d93c8c52d11a5a332d7d34","tests/accuracy/main.rs":"f8e42aeeb50b35fca380db2e9fe52820cc0bc3133167289c5710e3290701e78e","tests/common/mod.rs":"733101288a48cf94d5a87a1957724deaf2650c3e4e8aa0190a4a7db62aa90d01","tests/concurrent-panics.rs":"b60279ad5c4fb9b2754807f35179cbc8fbd7acbe6e92ac6d0f416ae75db38705","tests/current-exe-mismatch.rs":"540523069f005a9a0822497c6e1c5b7f0df442f0cef6b6e411d6f600bcd0be15","tests/long_fn_name.rs":"ebef58e34543ed4d47048faa9b6525f68fc71e12255af734523a513c5d4baa6f","tests/skip_inner_frames.rs":"6c03cd0ad9facf0aa81e59cf970504785b6ada9993a2dfc2aea0b18b79419aeb","tests/smoke.rs":"33014495f9158aea2d0ee2ee3335ffe82105c7ed894f96eaf7d23845a60f7439"},"package":"2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/backtrace/Cargo.lock temporalio-1.3.0/vendor/backtrace/Cargo.lock --- temporalio-1.3.0/vendor/backtrace/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -4,9 +4,9 @@ [[package]] name = "addr2line" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -19,7 +19,7 @@ [[package]] name = "backtrace" -version = "0.3.68" +version = "0.3.69" dependencies = [ "addr2line", "cc", @@ -37,9 +37,9 @@ [[package]] name = "cc" -version = "1.0.79" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" [[package]] name = "cfg-if" @@ -49,30 +49,30 @@ [[package]] name = "cpp_demangle" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c76f98bdfc7f66172e6c7065f981ebb576ffc903fe4c0561d9f0c2509226dc6" +checksum = "7e8227005286ec39567949b33df9896bcadfa6051bccca2488129f108ca23119" dependencies = [ "cfg-if", ] [[package]] name = "gimli" -version = "0.27.3" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "libc" -version = "0.2.146" +version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "libloading" -version = "0.7.4" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" dependencies = [ "cfg-if", "winapi", @@ -80,9 +80,9 @@ [[package]] name = "memchr" -version = "2.5.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" [[package]] name = "miniz_oxide" @@ -95,36 +95,36 @@ [[package]] name = "object" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +checksum = "77ac5bbd07aea88c60a577a1ce218075ffd59208b2d7ca97adf9bfc5aeb21ebe" dependencies = [ "memchr", ] [[package]] name = "proc-macro2" -version = "1.0.60" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" +checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" dependencies = [ - "unicode-ident", + "unicode-xid", ] [[package]] name = "quote" -version = "1.0.28" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" dependencies = [ "proc-macro2", ] [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" [[package]] name = "rustc-serialize" @@ -134,18 +134,18 @@ [[package]] name = "serde" -version = "1.0.164" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" dependencies = [ "proc-macro2", "quote", @@ -154,20 +154,20 @@ [[package]] name = "syn" -version = "2.0.18" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b" dependencies = [ "proc-macro2", "quote", - "unicode-ident", + "unicode-xid", ] [[package]] -name = "unicode-ident" -version = "1.0.9" +name = "unicode-xid" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "winapi" diff -Nru temporalio-1.3.0/vendor/backtrace/Cargo.toml temporalio-1.3.0/vendor/backtrace/Cargo.toml --- temporalio-1.3.0/vendor/backtrace/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,9 +12,10 @@ [package] edition = "2018" name = "backtrace" -version = "0.3.68" +version = "0.3.69" authors = ["The Rust Project Developers"] build = "build.rs" +exclude = ["/ci/"] autoexamples = true autotests = true description = """ @@ -62,10 +63,6 @@ harness = false required-features = ["std"] -[dependencies.addr2line] -version = "0.20.0" -default-features = false - [dependencies.cfg-if] version = "1.0" @@ -75,26 +72,6 @@ optional = true default-features = false -[dependencies.libc] -version = "0.2.146" -default-features = false - -[dependencies.miniz_oxide] -version = "0.7.0" -default-features = false - -[dependencies.object] -version = "0.31.1" -features = [ - "read_core", - "elf", - "macho", - "pe", - "unaligned", - "archive", -] -default-features = false - [dependencies.rustc-demangle] version = "0.1.4" @@ -139,6 +116,30 @@ "winapi/winnt", ] +[target."cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))".dependencies.addr2line] +version = "0.21.0" +default-features = false + +[target."cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))".dependencies.libc] +version = "0.2.146" +default-features = false + +[target."cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))".dependencies.miniz_oxide] +version = "0.7.0" +default-features = false + +[target."cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))".dependencies.object] +version = "0.32.0" +features = [ + "read_core", + "elf", + "macho", + "pe", + "unaligned", + "archive", +] +default-features = false + [target."cfg(windows)".dependencies.winapi] version = "0.3.9" optional = true diff -Nru temporalio-1.3.0/vendor/backtrace/ci/android-ndk.sh temporalio-1.3.0/vendor/backtrace/ci/android-ndk.sh --- temporalio-1.3.0/vendor/backtrace/ci/android-ndk.sh 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/android-ndk.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -set -ex - -ANDROID_NDK_URL=https://dl.google.com/android/repository -ANDROID_NDK_ARCHIVE=android-ndk-r25b-linux.zip - -mkdir /android-toolchain -cd /android-toolchain -curl -fO $ANDROID_NDK_URL/$ANDROID_NDK_ARCHIVE -unzip -q $ANDROID_NDK_ARCHIVE -rm $ANDROID_NDK_ARCHIVE -mv android-ndk-* ndk - -cd /tmp -rm -rf android diff -Nru temporalio-1.3.0/vendor/backtrace/ci/android-sdk.sh temporalio-1.3.0/vendor/backtrace/ci/android-sdk.sh --- temporalio-1.3.0/vendor/backtrace/ci/android-sdk.sh 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/android-sdk.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,65 +0,0 @@ -#!/usr/bin/env sh - -set -ex - -# Prep the SDK and emulator -# -# Note that the update process requires that we accept a bunch of licenses, and -# we can't just pipe `yes` into it for some reason, so we take the same strategy -# located in https://github.com/appunite/docker by just wrapping it in a script -# which apparently magically accepts the licenses. - -SDK=4333796 -mkdir sdk -curl --retry 20 https://dl.google.com/android/repository/sdk-tools-linux-${SDK}.zip -O -unzip -q -d sdk sdk-tools-linux-${SDK}.zip - -case "$1" in - arm | armv7) - api=24 - image="system-images;android-${api};google_apis;armeabi-v7a" - ;; - aarch64) - api=24 - image="system-images;android-${api};google_apis;arm64-v8a" - ;; - i686) - api=28 - image="system-images;android-${api};default;x86" - ;; - x86_64) - api=28 - image="system-images;android-${api};default;x86_64" - ;; - *) - echo "invalid arch: $1" - exit 1 - ;; -esac; - -# Try to fix warning about missing file. -# See https://askubuntu.com/a/1078784 -mkdir -p /root/.android/ -echo '### User Sources for Android SDK Manager' >> /root/.android/repositories.cfg -echo '#Fri Nov 03 10:11:27 CET 2017 count=0' >> /root/.android/repositories.cfg - -# Print all available packages -# yes | ./sdk/tools/bin/sdkmanager --list --verbose - -# --no_https avoids -# javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found -# -# | grep -v = || true removes the progress bar output from the sdkmanager -# which produces an insane amount of output. -yes | ./sdk/tools/bin/sdkmanager --licenses --no_https | grep -v = || true -yes | ./sdk/tools/bin/sdkmanager --no_https \ - "emulator" \ - "platform-tools" \ - "platforms;android-${api}" \ - "${image}" | grep -v = || true - -echo "no" | - ./sdk/tools/bin/avdmanager create avd \ - --name "${1}" \ - --package "${image}" | grep -v = || true - diff -Nru temporalio-1.3.0/vendor/backtrace/ci/debuglink-docker.sh temporalio-1.3.0/vendor/backtrace/ci/debuglink-docker.sh --- temporalio-1.3.0/vendor/backtrace/ci/debuglink-docker.sh 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/debuglink-docker.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,29 +0,0 @@ -# Small script to run debuglink tests inside a docker image. -# Creates a writable mount on /usr/lib/debug. - -set -ex - -run() { - cargo generate-lockfile --manifest-path crates/debuglink/Cargo.toml - mkdir -p target crates/debuglink/target debug - docker build -t backtrace -f ci/docker/$1/Dockerfile ci - docker run \ - --user `id -u`:`id -g` \ - --rm \ - --init \ - --volume $(dirname $(dirname `which cargo`)):/cargo \ - --env CARGO_HOME=/cargo \ - --volume `rustc --print sysroot`:/rust:ro \ - --env TARGET=$1 \ - --volume `pwd`:/checkout:ro \ - --volume `pwd`/target:/checkout/crates/debuglink/target \ - --workdir /checkout \ - --volume `pwd`/debug:/usr/lib/debug \ - --privileged \ - --env RUSTFLAGS \ - backtrace \ - bash \ - -c 'PATH=$PATH:/rust/bin exec ci/debuglink.sh' -} - -run x86_64-unknown-linux-gnu diff -Nru temporalio-1.3.0/vendor/backtrace/ci/debuglink.sh temporalio-1.3.0/vendor/backtrace/ci/debuglink.sh --- temporalio-1.3.0/vendor/backtrace/ci/debuglink.sh 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/debuglink.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,75 +0,0 @@ -#!/bin/bash - -# Debuglink tests. -# We build crates/debuglink and then move its debuginfo around -# and test that it can still find the debuginfo. - -set -ex - -cratedir=`pwd`/crates/debuglink -exefile=crates/debuglink/target/debug/debuglink - -# Baseline; no separate debug -cargo build --manifest-path crates/debuglink/Cargo.toml -$exefile $cratedir - -# Separate debug in same dir -debugfile1=`dirname $exefile`/debuglink.debug -objcopy --only-keep-debug $exefile $debugfile1 -strip -g $exefile -(cd `dirname $exefile` && objcopy --add-gnu-debuglink=debuglink.debug debuglink) -$exefile $cratedir - -# Separate debug in .debug subdir -debugfile2=`dirname $exefile`/.debug/debuglink.debug -mkdir -p `dirname $debugfile2` -mv $debugfile1 $debugfile2 -$exefile $cratedir - -# Separate debug in /usr/lib/debug subdir -debugfile3="/usr/lib/debug/$cratedir/target/debug/debuglink.debug" -mkdir -p `dirname $debugfile3` -mv $debugfile2 $debugfile3 -$exefile $cratedir - -# Separate debug in /usr/lib/debug/.build-id subdir -id=`readelf -n $exefile | grep '^ Build ID: [0-9a-f]' | cut -b 15-` -idfile="/usr/lib/debug/.build-id/${id:0:2}/${id:2}.debug" -mkdir -p `dirname $idfile` -mv $debugfile3 $idfile -$exefile $cratedir - -# Replace idfile with a symlink (this is the usual arrangement) -mv $idfile $debugfile3 -ln -s $debugfile3 $idfile -$exefile $cratedir - -# Supplementary object file using relative path -dwzfile="/usr/lib/debug/.dwz/debuglink.debug" -mkdir -p `dirname $dwzfile` -cp $debugfile3 $debugfile3.copy -dwz -m $dwzfile -rh $debugfile3 $debugfile3.copy -rm $debugfile3.copy -$exefile $cratedir - -# Supplementary object file using build ID -dwzid=`readelf -n $dwzfile | grep '^ Build ID: [0-9a-f]' | cut -b 15-` -dwzidfile="/usr/lib/debug/.build-id/${dwzid:0:2}/${dwzid:2}.debug" -mkdir -p `dirname $dwzidfile` -mv $dwzfile $dwzidfile -$exefile $cratedir -mv $dwzidfile $dwzfile - -# Missing debug should fail -mv $debugfile3 $debugfile3.tmp -! $exefile $cratedir -mv $debugfile3.tmp $debugfile3 - -# Missing dwz should fail -mv $dwzfile $dwzfile.tmp -! $exefile $cratedir -mv $dwzfile.tmp $dwzfile - -# Cleanup -rm $idfile $debugfile3 $dwzfile -echo Success diff -Nru temporalio-1.3.0/vendor/backtrace/ci/docker/aarch64-linux-android/Dockerfile temporalio-1.3.0/vendor/backtrace/ci/docker/aarch64-linux-android/Dockerfile --- temporalio-1.3.0/vendor/backtrace/ci/docker/aarch64-linux-android/Dockerfile 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/docker/aarch64-linux-android/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -FROM ubuntu:20.04 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - curl \ - ca-certificates \ - unzip \ - openjdk-8-jre \ - python \ - gcc \ - libc6-dev - -COPY android-ndk.sh / -RUN /android-ndk.sh -ENV PATH=$PATH:/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin - -# TODO: run tests in an emulator eventually -ENV CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=aarch64-linux-android21-clang \ - CARGO_TARGET_AARCH64_LINUX_ANDROID_RUNNER=echo diff -Nru temporalio-1.3.0/vendor/backtrace/ci/docker/aarch64-unknown-linux-gnu/Dockerfile temporalio-1.3.0/vendor/backtrace/ci/docker/aarch64-unknown-linux-gnu/Dockerfile --- temporalio-1.3.0/vendor/backtrace/ci/docker/aarch64-unknown-linux-gnu/Dockerfile 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/docker/aarch64-unknown-linux-gnu/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -FROM ubuntu:20.04 -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc \ - ca-certificates \ - libc6-dev \ - gcc-aarch64-linux-gnu \ - libc6-dev-arm64-cross \ - qemu-user - -ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \ - CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER="qemu-aarch64 -L /usr/aarch64-linux-gnu" diff -Nru temporalio-1.3.0/vendor/backtrace/ci/docker/arm-linux-androideabi/Dockerfile temporalio-1.3.0/vendor/backtrace/ci/docker/arm-linux-androideabi/Dockerfile --- temporalio-1.3.0/vendor/backtrace/ci/docker/arm-linux-androideabi/Dockerfile 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/docker/arm-linux-androideabi/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -FROM ubuntu:20.04 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - curl \ - ca-certificates \ - unzip \ - openjdk-8-jre \ - python \ - gcc \ - libc6-dev - -COPY android-ndk.sh / -RUN /android-ndk.sh -ENV PATH=$PATH:/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin - -# TODO: run tests in an emulator eventually -ENV CARGO_TARGET_ARM_LINUX_ANDROIDEABI_LINKER=armv7a-linux-androideabi19-clang \ - CARGO_TARGET_ARM_LINUX_ANDROIDEABI_RUNNER=echo diff -Nru temporalio-1.3.0/vendor/backtrace/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile temporalio-1.3.0/vendor/backtrace/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile --- temporalio-1.3.0/vendor/backtrace/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -FROM ubuntu:20.04 -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc \ - ca-certificates \ - libc6-dev \ - gcc-arm-linux-gnueabihf \ - libc6-dev-armhf-cross \ - qemu-user -ENV CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \ - CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -L /usr/arm-linux-gnueabihf" diff -Nru temporalio-1.3.0/vendor/backtrace/ci/docker/armv7-linux-androideabi/Dockerfile temporalio-1.3.0/vendor/backtrace/ci/docker/armv7-linux-androideabi/Dockerfile --- temporalio-1.3.0/vendor/backtrace/ci/docker/armv7-linux-androideabi/Dockerfile 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/docker/armv7-linux-androideabi/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -FROM ubuntu:20.04 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - curl \ - ca-certificates \ - unzip \ - openjdk-8-jre \ - python \ - gcc \ - libc6-dev - -COPY android-ndk.sh / -RUN /android-ndk.sh -ENV PATH=$PATH:/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin - -# TODO: run tests in an emulator eventually -ENV CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=armv7a-linux-androideabi19-clang \ - CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_RUNNER=echo diff -Nru temporalio-1.3.0/vendor/backtrace/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile temporalio-1.3.0/vendor/backtrace/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile --- temporalio-1.3.0/vendor/backtrace/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -FROM ubuntu:20.04 -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc \ - ca-certificates \ - libc6-dev \ - gcc-arm-linux-gnueabihf \ - libc6-dev-armhf-cross \ - qemu-user -ENV CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \ - CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -L /usr/arm-linux-gnueabihf" diff -Nru temporalio-1.3.0/vendor/backtrace/ci/docker/i586-unknown-linux-gnu/Dockerfile temporalio-1.3.0/vendor/backtrace/ci/docker/i586-unknown-linux-gnu/Dockerfile --- temporalio-1.3.0/vendor/backtrace/ci/docker/i586-unknown-linux-gnu/Dockerfile 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/docker/i586-unknown-linux-gnu/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -FROM ubuntu:20.04 -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc-multilib \ - libc6-dev \ - ca-certificates diff -Nru temporalio-1.3.0/vendor/backtrace/ci/docker/i686-linux-android/Dockerfile temporalio-1.3.0/vendor/backtrace/ci/docker/i686-linux-android/Dockerfile --- temporalio-1.3.0/vendor/backtrace/ci/docker/i686-linux-android/Dockerfile 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/docker/i686-linux-android/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -FROM ubuntu:20.04 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - curl \ - ca-certificates \ - unzip \ - openjdk-8-jre \ - python \ - gcc \ - libc6-dev - -COPY android-ndk.sh / -RUN /android-ndk.sh -ENV PATH=$PATH:/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin - -# TODO: run tests in an emulator eventually -ENV CARGO_TARGET_I686_LINUX_ANDROID_LINKER=i686-linux-android19-clang \ - CARGO_TARGET_I686_LINUX_ANDROID_RUNNER=echo diff -Nru temporalio-1.3.0/vendor/backtrace/ci/docker/i686-unknown-linux-gnu/Dockerfile temporalio-1.3.0/vendor/backtrace/ci/docker/i686-unknown-linux-gnu/Dockerfile --- temporalio-1.3.0/vendor/backtrace/ci/docker/i686-unknown-linux-gnu/Dockerfile 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/docker/i686-unknown-linux-gnu/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -FROM ubuntu:20.04 -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc-multilib \ - libc6-dev \ - ca-certificates diff -Nru temporalio-1.3.0/vendor/backtrace/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile temporalio-1.3.0/vendor/backtrace/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile --- temporalio-1.3.0/vendor/backtrace/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -FROM ubuntu:20.04 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc \ - ca-certificates \ - libc6-dev \ - gcc-powerpc64-linux-gnu \ - libc6-dev-ppc64-cross \ - qemu-user \ - qemu-system-ppc - -ENV CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_LINKER=powerpc64-linux-gnu-gcc \ - # TODO: should actually run these tests - #CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc64 -L /usr/powerpc64-linux-gnu" \ - CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_RUNNER=echo \ - CC=powerpc64-linux-gnu-gcc diff -Nru temporalio-1.3.0/vendor/backtrace/ci/docker/s390x-unknown-linux-gnu/Dockerfile temporalio-1.3.0/vendor/backtrace/ci/docker/s390x-unknown-linux-gnu/Dockerfile --- temporalio-1.3.0/vendor/backtrace/ci/docker/s390x-unknown-linux-gnu/Dockerfile 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/docker/s390x-unknown-linux-gnu/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -FROM ubuntu:20.04 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc \ - ca-certificates \ - libc6-dev \ - gcc-s390x-linux-gnu \ - libc6-dev-s390x-cross \ - qemu-user \ - # There seems to be a bug in processing mixed-architecture - # ld.so.cache files that causes crashes in some cases. Work - # around this by simply deleting the cache for now. - && rm /etc/ld.so.cache - -ENV CARGO_TARGET_S390X_UNKNOWN_LINUX_GNU_LINKER=s390x-linux-gnu-gcc \ - CARGO_TARGET_S390X_UNKNOWN_LINUX_GNU_RUNNER="qemu-s390x -L /usr/s390x-linux-gnu" \ - CC=s390x-linux-gnu-gcc diff -Nru temporalio-1.3.0/vendor/backtrace/ci/docker/x86_64-linux-android/Dockerfile temporalio-1.3.0/vendor/backtrace/ci/docker/x86_64-linux-android/Dockerfile --- temporalio-1.3.0/vendor/backtrace/ci/docker/x86_64-linux-android/Dockerfile 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/docker/x86_64-linux-android/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -FROM ubuntu:20.04 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - curl \ - ca-certificates \ - unzip \ - openjdk-8-jre \ - python \ - gcc \ - libc6-dev - -COPY android-ndk.sh / -RUN /android-ndk.sh -ENV PATH=$PATH:/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin - -# TODO: run tests in an emulator eventually -ENV CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android21-clang \ - CARGO_TARGET_X86_64_LINUX_ANDROID_RUNNER=echo diff -Nru temporalio-1.3.0/vendor/backtrace/ci/docker/x86_64-pc-windows-gnu/Dockerfile temporalio-1.3.0/vendor/backtrace/ci/docker/x86_64-pc-windows-gnu/Dockerfile --- temporalio-1.3.0/vendor/backtrace/ci/docker/x86_64-pc-windows-gnu/Dockerfile 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/docker/x86_64-pc-windows-gnu/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -FROM ubuntu:20.04 -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc \ - libc6-dev \ - ca-certificates \ - gcc-mingw-w64-x86-64 - -# No need to run tests, we're just testing that it compiles -ENV CARGO_TARGET_X86_64_PC_WINDOWS_GNU_RUNNER=echo \ - CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER=x86_64-w64-mingw32-gcc diff -Nru temporalio-1.3.0/vendor/backtrace/ci/docker/x86_64-unknown-linux-gnu/Dockerfile temporalio-1.3.0/vendor/backtrace/ci/docker/x86_64-unknown-linux-gnu/Dockerfile --- temporalio-1.3.0/vendor/backtrace/ci/docker/x86_64-unknown-linux-gnu/Dockerfile 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/docker/x86_64-unknown-linux-gnu/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -FROM ubuntu:20.04 -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc \ - libc6-dev \ - ca-certificates \ - dwz diff -Nru temporalio-1.3.0/vendor/backtrace/ci/docker/x86_64-unknown-linux-musl/Dockerfile temporalio-1.3.0/vendor/backtrace/ci/docker/x86_64-unknown-linux-musl/Dockerfile --- temporalio-1.3.0/vendor/backtrace/ci/docker/x86_64-unknown-linux-musl/Dockerfile 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/docker/x86_64-unknown-linux-musl/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -FROM ubuntu:20.04 -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc \ - libc6-dev \ - ca-certificates \ - musl-tools diff -Nru temporalio-1.3.0/vendor/backtrace/ci/run-docker.sh temporalio-1.3.0/vendor/backtrace/ci/run-docker.sh --- temporalio-1.3.0/vendor/backtrace/ci/run-docker.sh 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/run-docker.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -# Small script to run tests for a target (or all targets) inside all the -# respective docker images. - -set -ex - -run() { - docker build -t backtrace -f ci/docker/$1/Dockerfile ci - mkdir -p target - docker run \ - --user `id -u`:`id -g` \ - --rm \ - --init \ - --volume $(dirname $(dirname `which cargo`)):/cargo \ - --env CARGO_HOME=/cargo \ - --volume `rustc --print sysroot`:/rust:ro \ - --env TARGET=$1 \ - --volume `pwd`:/checkout:ro \ - --volume `pwd`/target:/checkout/target \ - --workdir /checkout \ - --privileged \ - --env RUSTFLAGS \ - backtrace \ - bash \ - -c 'PATH=$PATH:/rust/bin exec ci/run.sh' -} - -if [ -z "$1" ]; then - for d in `ls ci/docker/`; do - run $d - done -else - run $1 -fi diff -Nru temporalio-1.3.0/vendor/backtrace/ci/run.sh temporalio-1.3.0/vendor/backtrace/ci/run.sh --- temporalio-1.3.0/vendor/backtrace/ci/run.sh 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/run.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -#!/bin/sh - -set -ex - -cargo test --target $TARGET -cargo build --target $TARGET --manifest-path crates/as-if-std/Cargo.toml diff -Nru temporalio-1.3.0/vendor/backtrace/ci/runtest-android.rs temporalio-1.3.0/vendor/backtrace/ci/runtest-android.rs --- temporalio-1.3.0/vendor/backtrace/ci/runtest-android.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/ci/runtest-android.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -use std::env; -use std::process::Command; -use std::path::{Path, PathBuf}; - -fn main() { - let args = env::args_os() - .skip(1) - .filter(|arg| arg != "--quiet") - .collect::>(); - assert_eq!(args.len(), 1); - let test = PathBuf::from(&args[0]); - let dst = Path::new("/data/local/tmp").join(test.file_name().unwrap()); - - println!("waiting for device to come online..."); - let status = Command::new("adb") - .arg("wait-for-device") - .status() - .expect("failed to run: adb wait-for-device"); - assert!(status.success()); - - println!("pushing executable..."); - let status = Command::new("adb") - .arg("push") - .arg(&test) - .arg(&dst) - .status() - .expect("failed to run: adb pushr"); - assert!(status.success()); - - println!("executing tests..."); - let output = Command::new("adb") - .arg("shell") - .arg(&dst) - .output() - .expect("failed to run: adb shell"); - assert!(status.success()); - - println!("status: {}\nstdout ---\n{}\nstderr ---\n{}", - output.status, - String::from_utf8_lossy(&output.stdout), - String::from_utf8_lossy(&output.stderr)); - - let stdout = String::from_utf8_lossy(&output.stdout); - stdout.lines().find(|l| - (l.starts_with("PASSED ") && l.contains(" tests")) || - l.starts_with("test result: ok") - ).unwrap_or_else(|| { - panic!("failed to find successful test run"); - }); -} diff -Nru temporalio-1.3.0/vendor/backtrace/src/print/fuchsia.rs temporalio-1.3.0/vendor/backtrace/src/print/fuchsia.rs --- temporalio-1.3.0/vendor/backtrace/src/print/fuchsia.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/src/print/fuchsia.rs 2023-10-30 19:40:00.000000000 +0000 @@ -425,7 +425,7 @@ /// This function prints the Fuchsia symbolizer markup for all information contained in a DSO. pub fn print_dso_context(out: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - out.write_str("{{{reset}}}\n")?; + out.write_str("{{{reset:begin}}}\n")?; let mut visitor = DsoPrinter { writer: out, module_count: 0, @@ -434,3 +434,8 @@ for_each_dso(&mut visitor); visitor.error } + +/// This function prints the Fuchsia symbolizer markup to end the backtrace. +pub fn finish_context(out: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + out.write_str("{{{reset:end}}}\n") +} diff -Nru temporalio-1.3.0/vendor/backtrace/src/print.rs temporalio-1.3.0/vendor/backtrace/src/print.rs --- temporalio-1.3.0/vendor/backtrace/src/print.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/src/print.rs 2023-10-30 19:40:00.000000000 +0000 @@ -83,7 +83,8 @@ /// This is currently a no-op but is added for future compatibility with /// backtrace formats. pub fn finish(&mut self) -> fmt::Result { - // Currently a no-op-- including this hook to allow for future additions. + #[cfg(target_os = "fuchsia")] + fuchsia::finish_context(self.fmt)?; Ok(()) } diff -Nru temporalio-1.3.0/vendor/backtrace/src/symbolize/gimli/parse_running_mmaps_unix.rs temporalio-1.3.0/vendor/backtrace/src/symbolize/gimli/parse_running_mmaps_unix.rs --- temporalio-1.3.0/vendor/backtrace/src/symbolize/gimli/parse_running_mmaps_unix.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/src/symbolize/gimli/parse_running_mmaps_unix.rs 2023-10-30 19:40:00.000000000 +0000 @@ -85,16 +85,37 @@ // e.g.: "ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0 [vsyscall]" // e.g.: "7f5985f46000-7f5985f48000 rw-p 00039000 103:06 76021795 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2" // e.g.: "35b1a21000-35b1a22000 rw-p 00000000 00:00 0" + // + // Note that paths may contain spaces, so we can't use `str::split` for parsing (until + // Split::remainder is stabilized #77998). fn from_str(s: &str) -> Result { - let mut parts = s - .split(' ') // space-separated fields - .filter(|s| s.len() > 0); // multiple spaces implies empty strings that need to be skipped. - let range_str = parts.next().ok_or("Couldn't find address")?; - let perms_str = parts.next().ok_or("Couldn't find permissions")?; - let offset_str = parts.next().ok_or("Couldn't find offset")?; - let dev_str = parts.next().ok_or("Couldn't find dev")?; - let inode_str = parts.next().ok_or("Couldn't find inode")?; - let pathname_str = parts.next().unwrap_or(""); // pathname may be omitted. + let (range_str, s) = s.trim_start().split_once(' ').unwrap_or((s, "")); + if range_str.is_empty() { + return Err("Couldn't find address"); + } + + let (perms_str, s) = s.trim_start().split_once(' ').unwrap_or((s, "")); + if perms_str.is_empty() { + return Err("Couldn't find permissions"); + } + + let (offset_str, s) = s.trim_start().split_once(' ').unwrap_or((s, "")); + if offset_str.is_empty() { + return Err("Couldn't find offset"); + } + + let (dev_str, s) = s.trim_start().split_once(' ').unwrap_or((s, "")); + if dev_str.is_empty() { + return Err("Couldn't find dev"); + } + + let (inode_str, s) = s.trim_start().split_once(' ').unwrap_or((s, "")); + if inode_str.is_empty() { + return Err("Couldn't find inode"); + } + + // Pathname may be omitted in which case it will be empty + let pathname_str = s.trim_start(); let hex = |s| usize::from_str_radix(s, 16).map_err(|_| "Couldn't parse hex number"); let address = if let Some((start, limit)) = range_str.split_once('-') { @@ -229,4 +250,46 @@ pathname: Default::default(), } ); + assert_eq!( + "b7c79000-b7e02000 r--p 00000000 08:01 60662705 \ + /executable/path/with some spaces" + .parse::() + .unwrap(), + MapsEntry { + address: (0xb7c79000, 0xb7e02000), + perms: ['r', '-', '-', 'p'], + offset: 0x00000000, + dev: (0x08, 0x01), + inode: 0x60662705, + pathname: "/executable/path/with some spaces".into(), + } + ); + assert_eq!( + "b7c79000-b7e02000 r--p 00000000 08:01 60662705 \ + /executable/path/with multiple-continuous spaces " + .parse::() + .unwrap(), + MapsEntry { + address: (0xb7c79000, 0xb7e02000), + perms: ['r', '-', '-', 'p'], + offset: 0x00000000, + dev: (0x08, 0x01), + inode: 0x60662705, + pathname: "/executable/path/with multiple-continuous spaces ".into(), + } + ); + assert_eq!( + " b7c79000-b7e02000 r--p 00000000 08:01 60662705 \ + /executable/path/starts-with-spaces" + .parse::() + .unwrap(), + MapsEntry { + address: (0xb7c79000, 0xb7e02000), + perms: ['r', '-', '-', 'p'], + offset: 0x00000000, + dev: (0x08, 0x01), + inode: 0x60662705, + pathname: "/executable/path/starts-with-spaces".into(), + } + ); } diff -Nru temporalio-1.3.0/vendor/backtrace/src/symbolize/mod.rs temporalio-1.3.0/vendor/backtrace/src/symbolize/mod.rs --- temporalio-1.3.0/vendor/backtrace/src/symbolize/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/src/symbolize/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -471,7 +471,7 @@ mod dbghelp; use dbghelp as imp; } else if #[cfg(all( - any(unix, windows), + any(unix, all(windows, target_env = "gnu")), not(target_vendor = "uwp"), not(target_os = "emscripten"), any(not(backtrace_in_libstd), feature = "backtrace"), diff -Nru temporalio-1.3.0/vendor/backtrace/src/windows.rs temporalio-1.3.0/vendor/backtrace/src/windows.rs --- temporalio-1.3.0/vendor/backtrace/src/windows.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/backtrace/src/windows.rs 2023-10-30 19:40:00.000000000 +0000 @@ -177,9 +177,9 @@ assert_eq!($name as usize, winapi::$name as usize); let mut x: unsafe extern "system" fn($($args)*) -> $ret; x = $name; - drop(x); + let _ = x; x = winapi::$name; - drop(x); + let _ = x; } } )* diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/benches/benchmarks.rs temporalio-1.3.0/vendor/base64-0.13.1/benches/benchmarks.rs --- temporalio-1.3.0/vendor/base64-0.13.1/benches/benchmarks.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/benches/benchmarks.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,210 +0,0 @@ -extern crate base64; -#[macro_use] -extern crate criterion; -extern crate rand; - -use base64::display; -use base64::{ - decode, decode_config_buf, decode_config_slice, encode, encode_config_buf, encode_config_slice, - write, Config, -}; - -use criterion::{black_box, Bencher, Criterion, ParameterizedBenchmark, Throughput}; -use rand::{FromEntropy, Rng}; -use std::io::{self, Read, Write}; - -const TEST_CONFIG: Config = base64::STANDARD; - -fn do_decode_bench(b: &mut Bencher, &size: &usize) { - let mut v: Vec = Vec::with_capacity(size * 3 / 4); - fill(&mut v); - let encoded = encode(&v); - - b.iter(|| { - let orig = decode(&encoded); - black_box(&orig); - }); -} - -fn do_decode_bench_reuse_buf(b: &mut Bencher, &size: &usize) { - let mut v: Vec = Vec::with_capacity(size * 3 / 4); - fill(&mut v); - let encoded = encode(&v); - - let mut buf = Vec::new(); - b.iter(|| { - decode_config_buf(&encoded, TEST_CONFIG, &mut buf).unwrap(); - black_box(&buf); - buf.clear(); - }); -} - -fn do_decode_bench_slice(b: &mut Bencher, &size: &usize) { - let mut v: Vec = Vec::with_capacity(size * 3 / 4); - fill(&mut v); - let encoded = encode(&v); - - let mut buf = Vec::new(); - buf.resize(size, 0); - b.iter(|| { - decode_config_slice(&encoded, TEST_CONFIG, &mut buf).unwrap(); - black_box(&buf); - }); -} - -fn do_decode_bench_stream(b: &mut Bencher, &size: &usize) { - let mut v: Vec = Vec::with_capacity(size * 3 / 4); - fill(&mut v); - let encoded = encode(&v); - - let mut buf = Vec::new(); - buf.resize(size, 0); - buf.truncate(0); - - b.iter(|| { - let mut cursor = io::Cursor::new(&encoded[..]); - let mut decoder = base64::read::DecoderReader::new(&mut cursor, TEST_CONFIG); - decoder.read_to_end(&mut buf).unwrap(); - buf.clear(); - black_box(&buf); - }); -} - -fn do_encode_bench(b: &mut Bencher, &size: &usize) { - let mut v: Vec = Vec::with_capacity(size); - fill(&mut v); - b.iter(|| { - let e = encode(&v); - black_box(&e); - }); -} - -fn do_encode_bench_display(b: &mut Bencher, &size: &usize) { - let mut v: Vec = Vec::with_capacity(size); - fill(&mut v); - b.iter(|| { - let e = format!("{}", display::Base64Display::with_config(&v, TEST_CONFIG)); - black_box(&e); - }); -} - -fn do_encode_bench_reuse_buf(b: &mut Bencher, &size: &usize) { - let mut v: Vec = Vec::with_capacity(size); - fill(&mut v); - let mut buf = String::new(); - b.iter(|| { - encode_config_buf(&v, TEST_CONFIG, &mut buf); - buf.clear(); - }); -} - -fn do_encode_bench_slice(b: &mut Bencher, &size: &usize) { - let mut v: Vec = Vec::with_capacity(size); - fill(&mut v); - let mut buf = Vec::new(); - // conservative estimate of encoded size - buf.resize(v.len() * 2, 0); - b.iter(|| { - encode_config_slice(&v, TEST_CONFIG, &mut buf); - }); -} - -fn do_encode_bench_stream(b: &mut Bencher, &size: &usize) { - let mut v: Vec = Vec::with_capacity(size); - fill(&mut v); - let mut buf = Vec::new(); - - buf.reserve(size * 2); - b.iter(|| { - buf.clear(); - let mut stream_enc = write::EncoderWriter::new(&mut buf, TEST_CONFIG); - stream_enc.write_all(&v).unwrap(); - stream_enc.flush().unwrap(); - }); -} - -fn do_encode_bench_string_stream(b: &mut Bencher, &size: &usize) { - let mut v: Vec = Vec::with_capacity(size); - fill(&mut v); - - b.iter(|| { - let mut stream_enc = write::EncoderStringWriter::new(TEST_CONFIG); - stream_enc.write_all(&v).unwrap(); - stream_enc.flush().unwrap(); - let _ = stream_enc.into_inner(); - }); -} - -fn do_encode_bench_string_reuse_buf_stream(b: &mut Bencher, &size: &usize) { - let mut v: Vec = Vec::with_capacity(size); - fill(&mut v); - - let mut buf = String::new(); - b.iter(|| { - buf.clear(); - let mut stream_enc = write::EncoderStringWriter::from(&mut buf, TEST_CONFIG); - stream_enc.write_all(&v).unwrap(); - stream_enc.flush().unwrap(); - let _ = stream_enc.into_inner(); - }); -} - -fn fill(v: &mut Vec) { - let cap = v.capacity(); - // weak randomness is plenty; we just want to not be completely friendly to the branch predictor - let mut r = rand::rngs::SmallRng::from_entropy(); - while v.len() < cap { - v.push(r.gen::()); - } -} - -const BYTE_SIZES: [usize; 5] = [3, 50, 100, 500, 3 * 1024]; - -// Benchmarks over these byte sizes take longer so we will run fewer samples to -// keep the benchmark runtime reasonable. -const LARGE_BYTE_SIZES: [usize; 3] = [3 * 1024 * 1024, 10 * 1024 * 1024, 30 * 1024 * 1024]; - -fn encode_benchmarks(byte_sizes: &[usize]) -> ParameterizedBenchmark { - ParameterizedBenchmark::new("encode", do_encode_bench, byte_sizes.iter().cloned()) - .warm_up_time(std::time::Duration::from_millis(500)) - .measurement_time(std::time::Duration::from_secs(3)) - .throughput(|s| Throughput::Bytes(*s as u64)) - .with_function("encode_display", do_encode_bench_display) - .with_function("encode_reuse_buf", do_encode_bench_reuse_buf) - .with_function("encode_slice", do_encode_bench_slice) - .with_function("encode_reuse_buf_stream", do_encode_bench_stream) - .with_function("encode_string_stream", do_encode_bench_string_stream) - .with_function( - "encode_string_reuse_buf_stream", - do_encode_bench_string_reuse_buf_stream, - ) -} - -fn decode_benchmarks(byte_sizes: &[usize]) -> ParameterizedBenchmark { - ParameterizedBenchmark::new("decode", do_decode_bench, byte_sizes.iter().cloned()) - .warm_up_time(std::time::Duration::from_millis(500)) - .measurement_time(std::time::Duration::from_secs(3)) - .throughput(|s| Throughput::Bytes(*s as u64)) - .with_function("decode_reuse_buf", do_decode_bench_reuse_buf) - .with_function("decode_slice", do_decode_bench_slice) - .with_function("decode_stream", do_decode_bench_stream) -} - -fn bench(c: &mut Criterion) { - c.bench("bench_small_input", encode_benchmarks(&BYTE_SIZES[..])); - - c.bench( - "bench_large_input", - encode_benchmarks(&LARGE_BYTE_SIZES[..]).sample_size(10), - ); - - c.bench("bench_small_input", decode_benchmarks(&BYTE_SIZES[..])); - - c.bench( - "bench_large_input", - decode_benchmarks(&LARGE_BYTE_SIZES[..]).sample_size(10), - ); -} - -criterion_group!(benches, bench); -criterion_main!(benches); diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/.cargo-checksum.json temporalio-1.3.0/vendor/base64-0.13.1/.cargo-checksum.json --- temporalio-1.3.0/vendor/base64-0.13.1/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -{"files":{"Cargo.lock":"0ed67b0f1f68ba5e19475d679df711f1f2c421768462b58e327b5b3ae9111825","Cargo.toml":"ac3f54d7667cfc0baac784fcc6f0a6cc0da9b496af69917fe7abb95f7e3b4a36","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0dd882e53de11566d50f8e8e2d5a651bcf3fabee4987d70f306233cf39094ba7","README.md":"2810098d290f3df719e6f41ffca38bb954d0fe62d4e56905a9a2436c4784bebf","RELEASE-NOTES.md":"ef116f3596474c9920957f65e346d7d1954f194aa3458eac5b626781116c500b","benches/benchmarks.rs":"bc1f603c5aa87627a93eee71eaed64fbd767d013051bac00ea265c16fecb30b9","examples/base64.rs":"f397b8726df41fce0793a8c6ebe95d4651aa37ed746da305032f1e99d9c37235","examples/make_tables.rs":"392f51b3edb1b5a2c62b823337c7785a6b8535f39f09283b1913a5c68fb186bf","icon_CLion.svg":"cffa044ba75cb998ee3306991dc4a3755ec2f39ab95ddd4b74bc21988389020f","src/chunked_encoder.rs":"fba5ea5f1204b9bf11291ec3483bcb23d330101eb2f6635e33cd63e4de13b653","src/decode.rs":"ba67f53612c494281e2e4aae4350165d54ee827ea7e1170b8e02e2db81b55c6e","src/display.rs":"55f9cd05ba037b77689e2558fa174055fad5273959d1edce3a2289f94244fd5d","src/encode.rs":"8a0a6b71581b4c52c2844111a3611cf73522533452a27f5ef8d09eaa73594e2e","src/lib.rs":"c7b904fac8706bc4758c2763e7a43dc1edd99ed5641ac2355957f6aeff91eece","src/read/decoder.rs":"9a7b65e165f7aed6b007bf7436ac9ba9b03d3b03e9d5a1e16691874e21509ced","src/read/decoder_tests.rs":"aacb7624c33ed6b90e068ff9af6095c839b4088060b4c406c08dce25ce837f6d","src/read/mod.rs":"e0b714eda02d16b1ffa6f78fd09b2f963e01c881b1f7c17b39db4e904be5e746","src/tables.rs":"73ce100fd3f4917ec1e8d9277ff0b956cc2636b33145f101a7cf1a5a8b7bacc1","src/tests.rs":"202ddced9cf52205182c6202e583c4c4f929b9d225fd9d1ebdbfd389cb2df0ba","src/write/encoder.rs":"573f058a66f0a6af4215f5ae75a3e96b07a5e345975693abe30bd1e8ce2d235c","src/write/encoder_string_writer.rs":"3f9109585babe048230659f64973cb1633bbb2ed9de255177336260226127b81","src/write/encoder_tests.rs":"381d7c2871407157c36e909c928307ac0389b3d4504fb80607134e94ac59e68f","src/write/mod.rs":"1503b9457e4f5d2895b24136c3af893f0b7ce18dfe4de1096fc5d17f8d78e99b","tests/decode.rs":"da2cbd49b84e0d8b1d8a52136ba3d97cfb248920a45f9955db1e5bc5367218ce","tests/encode.rs":"5efb6904c36c6f899a05078e5c9be756fc58af1ee9940edfa8dea1ee53675364","tests/helpers.rs":"a76015e4a4e8f98213bdbaa592cd9574ccdc95a28e1b1f835a2753e09fa6037f","tests/tests.rs":"05753e5f1d4a6c75015a5342f9b5dc3073c00bdfe0a829a962f8723321c75549"},"package":"9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/Cargo.lock temporalio-1.3.0/vendor/base64-0.13.1/Cargo.lock --- temporalio-1.3.0/vendor/base64-0.13.1/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/Cargo.lock 1970-01-01 00:00:00.000000000 +0000 @@ -1,826 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78" -dependencies = [ - "autocfg 1.1.0", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "base64" -version = "0.13.1" -dependencies = [ - "criterion", - "rand", - "structopt", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bstr" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" -dependencies = [ - "lazy_static", - "memchr", - "regex-automata", - "serde", -] - -[[package]] -name = "bumpalo" -version = "3.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" - -[[package]] -name = "cast" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c24dab4283a142afa2fdca129b80ad2c6284e073930f964c3a1293c225ee39a" -dependencies = [ - "rustc_version", -] - -[[package]] -name = "cast" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "clap" -version = "2.34.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" -dependencies = [ - "ansi_term", - "atty", - "bitflags", - "strsim", - "textwrap", - "unicode-width", - "vec_map", -] - -[[package]] -name = "cloudabi" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -dependencies = [ - "bitflags", -] - -[[package]] -name = "criterion" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63f696897c88b57f4ffe3c69d8e1a0613c7d0e6c4833363c8560fbde9c47b966" -dependencies = [ - "atty", - "cast 0.2.7", - "clap", - "criterion-plot", - "csv", - "itertools 0.9.0", - "lazy_static", - "num-traits", - "oorandom", - "plotters", - "rayon", - "regex", - "serde", - "serde_derive", - "serde_json", - "tinytemplate", - "walkdir", -] - -[[package]] -name = "criterion-plot" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876" -dependencies = [ - "cast 0.3.0", - "itertools 0.10.5", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" -dependencies = [ - "cfg-if", - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348" -dependencies = [ - "autocfg 1.1.0", - "cfg-if", - "crossbeam-utils", - "memoffset", - "scopeguard", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "csv" -version = "1.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" -dependencies = [ - "bstr", - "csv-core", - "itoa 0.4.8", - "ryu", - "serde", -] - -[[package]] -name = "csv-core" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" -dependencies = [ - "memchr", -] - -[[package]] -name = "either" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" - -[[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" - -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "itertools" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - -[[package]] -name = "itoa" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" - -[[package]] -name = "js-sys" -version = "0.3.60" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.135" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c" - -[[package]] -name = "log" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg 1.1.0", -] - -[[package]] -name = "num-traits" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" -dependencies = [ - "autocfg 1.1.0", -] - -[[package]] -name = "num_cpus" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "once_cell" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" - -[[package]] -name = "oorandom" -version = "11.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" - -[[package]] -name = "plotters" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d1685fbe7beba33de0330629da9d955ac75bd54f33d7b79f9a895590124f6bb" -dependencies = [ - "js-sys", - "num-traits", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro2" -version = "1.0.47" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -dependencies = [ - "autocfg 0.1.8", - "libc", - "rand_chacha", - "rand_core 0.4.2", - "rand_hc", - "rand_isaac", - "rand_jitter", - "rand_os", - "rand_pcg", - "rand_xorshift", - "winapi", -] - -[[package]] -name = "rand_chacha" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -dependencies = [ - "autocfg 0.1.8", - "rand_core 0.3.1", -] - -[[package]] -name = "rand_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -dependencies = [ - "rand_core 0.4.2", -] - -[[package]] -name = "rand_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" - -[[package]] -name = "rand_hc" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "rand_isaac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "rand_jitter" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" -dependencies = [ - "libc", - "rand_core 0.4.2", - "winapi", -] - -[[package]] -name = "rand_os" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" -dependencies = [ - "cloudabi", - "fuchsia-cprng", - "libc", - "rand_core 0.4.2", - "rdrand", - "winapi", -] - -[[package]] -name = "rand_pcg" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" -dependencies = [ - "autocfg 0.1.8", - "rand_core 0.4.2", -] - -[[package]] -name = "rand_xorshift" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "rayon" -version = "1.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" -dependencies = [ - "autocfg 1.1.0", - "crossbeam-deque", - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" -dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-utils", - "num_cpus", -] - -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "regex" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" -dependencies = [ - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" - -[[package]] -name = "regex-syntax" -version = "0.6.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" - -[[package]] -name = "rustc_version" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" -dependencies = [ - "semver", -] - -[[package]] -name = "ryu" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "semver" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" - -[[package]] -name = "serde" -version = "1.0.146" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6df50b7a60a0ad48e1b42eb38373eac8ff785d619fb14db917b4e63d5439361f" - -[[package]] -name = "serde_derive" -version = "1.0.146" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a714fd32ba1d66047ce7d53dabd809e9922d538f9047de13cc4cffca47b36205" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45" -dependencies = [ - "itoa 1.0.4", - "ryu", - "serde", -] - -[[package]] -name = "strsim" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" - -[[package]] -name = "structopt" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10" -dependencies = [ - "clap", - "lazy_static", - "structopt-derive", -] - -[[package]] -name = "structopt-derive" -version = "0.4.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" -dependencies = [ - "heck", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "syn" -version = "1.0.103" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "tinytemplate" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "unicode-ident" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" - -[[package]] -name = "unicode-segmentation" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" - -[[package]] -name = "unicode-width" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" - -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "walkdir" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" -dependencies = [ - "same-file", - "winapi", - "winapi-util", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" - -[[package]] -name = "web-sys" -version = "0.3.60" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/Cargo.toml temporalio-1.3.0/vendor/base64-0.13.1/Cargo.toml --- temporalio-1.3.0/vendor/base64-0.13.1/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 @@ -1,53 +0,0 @@ -# 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 = "base64" -version = "0.13.1" -authors = [ - "Alice Maz ", - "Marshall Pierce ", -] -description = "encodes and decodes base64 as bytes or utf8" -documentation = "https://docs.rs/base64" -readme = "README.md" -keywords = [ - "base64", - "utf8", - "encode", - "decode", - "no_std", -] -categories = ["encoding"] -license = "MIT/Apache-2.0" -repository = "https://github.com/marshallpierce/rust-base64" - -[profile.bench] -debug = true - -[[bench]] -name = "benchmarks" -harness = false - -[dev-dependencies.criterion] -version = "=0.3.2" - -[dev-dependencies.rand] -version = "0.6.1" - -[dev-dependencies.structopt] -version = "0.3" - -[features] -alloc = [] -default = ["std"] -std = [] diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/examples/base64.rs temporalio-1.3.0/vendor/base64-0.13.1/examples/base64.rs --- temporalio-1.3.0/vendor/base64-0.13.1/examples/base64.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/examples/base64.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -use std::fs::File; -use std::io::{self, Read}; -use std::path::PathBuf; -use std::process; -use std::str::FromStr; - -use base64::{read, write}; -use structopt::StructOpt; - -#[derive(Debug, StructOpt)] -enum CharacterSet { - Standard, - UrlSafe, -} - -impl Default for CharacterSet { - fn default() -> Self { - CharacterSet::Standard - } -} - -impl Into for CharacterSet { - fn into(self) -> base64::Config { - match self { - CharacterSet::Standard => base64::STANDARD, - CharacterSet::UrlSafe => base64::URL_SAFE, - } - } -} - -impl FromStr for CharacterSet { - type Err = String; - fn from_str(s: &str) -> Result { - match s { - "standard" => Ok(CharacterSet::Standard), - "urlsafe" => Ok(CharacterSet::UrlSafe), - _ => Err(format!("charset '{}' unrecognized", s)), - } - } -} - -/// Base64 encode or decode FILE (or standard input), to standard output. -#[derive(Debug, StructOpt)] -struct Opt { - /// decode data - #[structopt(short = "d", long = "decode")] - decode: bool, - /// The character set to choose. Defaults to the standard base64 character set. - /// Supported character sets include "standard" and "urlsafe". - #[structopt(long = "charset")] - charset: Option, - /// The file to encode/decode. - #[structopt(parse(from_os_str))] - file: Option, -} - -fn main() { - let opt = Opt::from_args(); - let stdin; - let mut input: Box = match opt.file { - None => { - stdin = io::stdin(); - Box::new(stdin.lock()) - } - Some(ref f) if f.as_os_str() == "-" => { - stdin = io::stdin(); - Box::new(stdin.lock()) - } - Some(f) => Box::new(File::open(f).unwrap()), - }; - let config = opt.charset.unwrap_or_default().into(); - let stdout = io::stdout(); - let mut stdout = stdout.lock(); - let r = if opt.decode { - let mut decoder = read::DecoderReader::new(&mut input, config); - io::copy(&mut decoder, &mut stdout) - } else { - let mut encoder = write::EncoderWriter::new(&mut stdout, config); - io::copy(&mut input, &mut encoder) - }; - if let Err(e) = r { - eprintln!( - "Base64 {} failed with {}", - if opt.decode { "decode" } else { "encode" }, - e - ); - process::exit(1); - } -} diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/examples/make_tables.rs temporalio-1.3.0/vendor/base64-0.13.1/examples/make_tables.rs --- temporalio-1.3.0/vendor/base64-0.13.1/examples/make_tables.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/examples/make_tables.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,179 +0,0 @@ -use std::collections::{HashMap, HashSet}; -use std::iter::Iterator; - -fn main() { - println!("pub const INVALID_VALUE: u8 = 255;"); - - // A-Z - let standard_alphabet: Vec = (0x41..0x5B) - // a-z - .chain(0x61..0x7B) - // 0-9 - .chain(0x30..0x3A) - // + - .chain(0x2B..0x2C) - // / - .chain(0x2F..0x30) - .collect(); - print_encode_table(&standard_alphabet, "STANDARD_ENCODE", 0); - print_decode_table(&standard_alphabet, "STANDARD_DECODE", 0); - - // A-Z - let url_alphabet: Vec = (0x41..0x5B) - // a-z - .chain(0x61..0x7B) - // 0-9 - .chain(0x30..0x3A) - // - - .chain(0x2D..0x2E) - // _ - .chain(0x5F..0x60) - .collect(); - print_encode_table(&url_alphabet, "URL_SAFE_ENCODE", 0); - print_decode_table(&url_alphabet, "URL_SAFE_DECODE", 0); - - // ./0123456789 - let crypt_alphabet: Vec = (b'.'..(b'9' + 1)) - // A-Z - .chain(b'A'..(b'Z' + 1)) - // a-z - .chain(b'a'..(b'z' + 1)) - .collect(); - print_encode_table(&crypt_alphabet, "CRYPT_ENCODE", 0); - print_decode_table(&crypt_alphabet, "CRYPT_DECODE", 0); - - // ./ - let bcrypt_alphabet: Vec = (b'.'..(b'/' + 1)) - // A-Z - .chain(b'A'..(b'Z' + 1)) - // a-z - .chain(b'a'..(b'z' + 1)) - // 0-9 - .chain(b'0'..(b'9' + 1)) - .collect(); - print_encode_table(&bcrypt_alphabet, "BCRYPT_ENCODE", 0); - print_decode_table(&bcrypt_alphabet, "BCRYPT_DECODE", 0); - - // A-Z - let imap_alphabet: Vec = (0x41..0x5B) - // a-z - .chain(0x61..0x7B) - // 0-9 - .chain(0x30..0x3A) - // + - .chain(0x2B..0x2C) - // , - .chain(0x2C..0x2D) - .collect(); - print_encode_table(&imap_alphabet, "IMAP_MUTF7_ENCODE", 0); - print_decode_table(&imap_alphabet, "IMAP_MUTF7_DECODE", 0); - - // '!' - '-' - let binhex_alphabet: Vec = (0x21..0x2E) - // 0-9 - .chain(0x30..0x3A) - // @-N - .chain(0x40..0x4F) - // P-V - .chain(0x50..0x57) - // X-[ - .chain(0x58..0x5C) - // `-f - .chain(0x60..0x66) - // h-m - .chain(0x68..0x6E) - // p-r - .chain(0x70..0x73) - .collect(); - print_encode_table(&binhex_alphabet, "BINHEX_ENCODE", 0); - print_decode_table(&binhex_alphabet, "BINHEX_DECODE", 0); -} - -fn print_encode_table(alphabet: &[u8], const_name: &str, indent_depth: usize) { - check_alphabet(alphabet); - println!("#[rustfmt::skip]"); - println!( - "{:width$}pub const {}: &[u8; 64] = &[", - "", - const_name, - width = indent_depth - ); - - for (i, b) in alphabet.iter().enumerate() { - println!( - "{:width$}{}, // input {} (0x{:X}) => '{}' (0x{:X})", - "", - b, - i, - i, - String::from_utf8(vec![*b as u8]).unwrap(), - b, - width = indent_depth + 4 - ); - } - - println!("{:width$}];", "", width = indent_depth); -} - -fn print_decode_table(alphabet: &[u8], const_name: &str, indent_depth: usize) { - check_alphabet(alphabet); - // map of alphabet bytes to 6-bit morsels - let mut input_to_morsel = HashMap::::new(); - - // standard base64 alphabet bytes, in order - for (morsel, ascii_byte) in alphabet.iter().enumerate() { - // truncation cast is fine here - let _ = input_to_morsel.insert(*ascii_byte, morsel as u8); - } - - println!("#[rustfmt::skip]"); - println!( - "{:width$}pub const {}: &[u8; 256] = &[", - "", - const_name, - width = indent_depth - ); - for ascii_byte in 0..256 { - let (value, comment) = match input_to_morsel.get(&(ascii_byte as u8)) { - None => ( - "INVALID_VALUE".to_string(), - format!("input {} (0x{:X})", ascii_byte, ascii_byte), - ), - Some(v) => ( - format!("{}", *v), - format!( - "input {} (0x{:X} char '{}') => {} (0x{:X})", - ascii_byte, - ascii_byte, - String::from_utf8(vec![ascii_byte as u8]).unwrap(), - *v, - *v - ), - ), - }; - - println!( - "{:width$}{}, // {}", - "", - value, - comment, - width = indent_depth + 4 - ); - } - println!("{:width$}];", "", width = indent_depth); -} - -fn check_alphabet(alphabet: &[u8]) { - // ensure all characters are distinct - assert_eq!(64, alphabet.len()); - let mut set: HashSet = HashSet::new(); - set.extend(alphabet); - assert_eq!(64, set.len()); - - // must be ASCII to be valid as single UTF-8 bytes - for &b in alphabet { - assert!(b <= 0x7F_u8); - // = is assumed to be padding, so cannot be used as a symbol - assert_ne!(b'=', b); - } -} diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/icon_CLion.svg temporalio-1.3.0/vendor/base64-0.13.1/icon_CLion.svg --- temporalio-1.3.0/vendor/base64-0.13.1/icon_CLion.svg 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/icon_CLion.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - icon_CLion - - - - - - - - - - - - - diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/LICENSE-APACHE temporalio-1.3.0/vendor/base64-0.13.1/LICENSE-APACHE --- temporalio-1.3.0/vendor/base64-0.13.1/LICENSE-APACHE 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/LICENSE-APACHE 1970-01-01 00:00:00.000000000 +0000 @@ -1,201 +0,0 @@ - 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 -Nru temporalio-1.3.0/vendor/base64-0.13.1/LICENSE-MIT temporalio-1.3.0/vendor/base64-0.13.1/LICENSE-MIT --- temporalio-1.3.0/vendor/base64-0.13.1/LICENSE-MIT 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/LICENSE-MIT 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Alice Maz - -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 -Nru temporalio-1.3.0/vendor/base64-0.13.1/README.md temporalio-1.3.0/vendor/base64-0.13.1/README.md --- temporalio-1.3.0/vendor/base64-0.13.1/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/README.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,114 +0,0 @@ -[base64](https://crates.io/crates/base64) -=== - -[![](https://img.shields.io/crates/v/base64.svg)](https://crates.io/crates/base64) [![Docs](https://docs.rs/base64/badge.svg)](https://docs.rs/base64) [![Build](https://travis-ci.org/marshallpierce/rust-base64.svg?branch=master)](https://travis-ci.org/marshallpierce/rust-base64) [![codecov](https://codecov.io/gh/marshallpierce/rust-base64/branch/master/graph/badge.svg)](https://codecov.io/gh/marshallpierce/rust-base64) [![unsafe forbidden](https://img.shields.io/badge/unsafe-forbidden-success.svg)](https://github.com/rust-secure-code/safety-dance/) - - - -Made with CLion. Thanks to JetBrains for supporting open source! - -It's base64. What more could anyone want? - -This library's goals are to be *correct* and *fast*. It's thoroughly tested and widely used. It exposes functionality at multiple levels of abstraction so you can choose the level of convenience vs performance that you want, e.g. `decode_config_slice` decodes into an existing `&mut [u8]` and is pretty fast (2.6GiB/s for a 3 KiB input), whereas `decode_config` allocates a new `Vec` and returns it, which might be more convenient in some cases, but is slower (although still fast enough for almost any purpose) at 2.1 GiB/s. - -Example ---- - -```rust -extern crate base64; - -use base64::{encode, decode}; - -fn main() { - let a = b"hello world"; - let b = "aGVsbG8gd29ybGQ="; - - assert_eq!(encode(a), b); - assert_eq!(a, &decode(b).unwrap()[..]); -} -``` - -See the [docs](https://docs.rs/base64) for all the details. - -Rust version compatibility ---- - -The minimum required Rust version is 1.34.0. - -Developing ---- - -Benchmarks are in `benches/`. Running them requires nightly rust, but `rustup` makes it easy: - -```bash -rustup run nightly cargo bench -``` - -Decoding is aided by some pre-calculated tables, which are generated by: - -```bash -cargo run --example make_tables > src/tables.rs.tmp && mv src/tables.rs.tmp src/tables.rs -``` - -no_std ---- - -This crate supports no_std. By default the crate targets std via the `std` feature. You can deactivate the `default-features` to target core instead. In that case you lose out on all the functionality revolving around `std::io`, `std::error::Error` and heap allocations. There is an additional `alloc` feature that you can activate to bring back the support for heap allocations. - -Profiling ---- - -On Linux, you can use [perf](https://perf.wiki.kernel.org/index.php/Main_Page) for profiling. Then compile the benchmarks with `rustup nightly run cargo bench --no-run`. - -Run the benchmark binary with `perf` (shown here filtering to one particular benchmark, which will make the results easier to read). `perf` is only available to the root user on most systems as it fiddles with event counters in your CPU, so use `sudo`. We need to run the actual benchmark binary, hence the path into `target`. You can see the actual full path with `rustup run nightly cargo bench -v`; it will print out the commands it runs. If you use the exact path that `bench` outputs, make sure you get the one that's for the benchmarks, not the tests. You may also want to `cargo clean` so you have only one `benchmarks-` binary (they tend to accumulate). - -```bash -sudo perf record target/release/deps/benchmarks-* --bench decode_10mib_reuse -``` - -Then analyze the results, again with perf: - -```bash -sudo perf annotate -l -``` - -You'll see a bunch of interleaved rust source and assembly like this. The section with `lib.rs:327` is telling us that 4.02% of samples saw the `movzbl` aka bit shift as the active instruction. However, this percentage is not as exact as it seems due to a phenomenon called *skid*. Basically, a consequence of how fancy modern CPUs are is that this sort of instruction profiling is inherently inaccurate, especially in branch-heavy code. - -```text - lib.rs:322 0.70 : 10698: mov %rdi,%rax - 2.82 : 1069b: shr $0x38,%rax - : if morsel == decode_tables::INVALID_VALUE { - : bad_byte_index = input_index; - : break; - : }; - : accum = (morsel as u64) << 58; - lib.rs:327 4.02 : 1069f: movzbl (%r9,%rax,1),%r15d - : // fast loop of 8 bytes at a time - : while input_index < length_of_full_chunks { - : let mut accum: u64; - : - : let input_chunk = BigEndian::read_u64(&input_bytes[input_index..(input_index + 8)]); - : morsel = decode_table[(input_chunk >> 56) as usize]; - lib.rs:322 3.68 : 106a4: cmp $0xff,%r15 - : if morsel == decode_tables::INVALID_VALUE { - 0.00 : 106ab: je 1090e -``` - - -Fuzzing ---- - -This uses [cargo-fuzz](https://github.com/rust-fuzz/cargo-fuzz). See `fuzz/fuzzers` for the available fuzzing scripts. To run, use an invocation like these: - -```bash -cargo +nightly fuzz run roundtrip -cargo +nightly fuzz run roundtrip_no_pad -cargo +nightly fuzz run roundtrip_random_config -- -max_len=10240 -cargo +nightly fuzz run decode_random -``` - - -License ---- - -This project is dual-licensed under MIT and Apache 2.0. diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/RELEASE-NOTES.md temporalio-1.3.0/vendor/base64-0.13.1/RELEASE-NOTES.md --- temporalio-1.3.0/vendor/base64-0.13.1/RELEASE-NOTES.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/RELEASE-NOTES.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,109 +0,0 @@ -# 0.13.1 - -- More precise decode buffer sizing, avoiding unnecessary allocation in `decode_config`. - -# 0.13.0 - -- Config methods are const -- Added `EncoderStringWriter` to allow encoding directly to a String -- `EncoderWriter` now owns its delegate writer rather than keeping a reference to it (though refs still work) - - As a consequence, it is now possible to extract the delegate writer from an `EncoderWriter` via `finish()`, which returns `Result` instead of `Result<()>`. If you were calling `finish()` explicitly, you will now need to use `let _ = foo.finish()` instead of just `foo.finish()` to avoid a warning about the unused value. -- When decoding input that has both an invalid length and an invalid symbol as the last byte, `InvalidByte` will be emitted instead of `InvalidLength` to make the problem more obvious. - -# 0.12.2 - -- Add `BinHex` alphabet - -# 0.12.1 - -- Add `Bcrypt` alphabet - -# 0.12.0 - -- A `Read` implementation (`DecoderReader`) to let users transparently decoded data from a b64 input source -- IMAP's modified b64 alphabet -- Relaxed type restrictions to just `AsRef<[ut8]>` for main `encode*`/`decode*` functions -- A minor performance improvement in encoding - -# 0.11.0 -- Minimum rust version 1.34.0 -- `no_std` is now supported via the two new features `alloc` and `std`. - -# 0.10.1 - -- Minimum rust version 1.27.2 -- Fix bug in streaming encoding ([#90](https://github.com/marshallpierce/rust-base64/pull/90)): if the underlying writer didn't write all the bytes given to it, the remaining bytes would not be retried later. See the docs on `EncoderWriter::write`. -- Make it configurable whether or not to return an error when decoding detects excess trailing bits. - -# 0.10.0 - -- Remove line wrapping. Line wrapping was never a great conceptual fit in this library, and other features (streaming encoding, etc) either couldn't support it or could support only special cases of it with a great increase in complexity. Line wrapping has been pulled out into a [line-wrap](https://crates.io/crates/line-wrap) crate, so it's still available if you need it. - - `Base64Display` creation no longer uses a `Result` because it can't fail, which means its helper methods for common - configs that `unwrap()` for you are no longer needed -- Add a streaming encoder `Write` impl to transparently base64 as you write. -- Remove the remaining `unsafe` code. -- Remove whitespace stripping to simplify `no_std` support. No out of the box configs use it, and it's trivial to do yourself if needed: `filter(|b| !b" \n\t\r\x0b\x0c".contains(b)`. -- Detect invalid trailing symbols when decoding and return an error rather than silently ignoring them. - -# 0.9.3 - -- Update safemem - -# 0.9.2 - -- Derive `Clone` for `DecodeError`. - -# 0.9.1 - -- Add support for `crypt(3)`'s base64 variant. - -# 0.9.0 - -- `decode_config_slice` function for no-allocation decoding, analogous to `encode_config_slice` -- Decode performance optimization - -# 0.8.0 - -- `encode_config_slice` function for no-allocation encoding - -# 0.7.0 - -- `STANDARD_NO_PAD` config -- `Base64Display` heap-free wrapper for use in format strings, etc - -# 0.6.0 - -- Decode performance improvements -- Use `unsafe` in fewer places -- Added fuzzers - -# 0.5.2 - -- Avoid usize overflow when calculating length -- Better line wrapping performance - -# 0.5.1 - -- Temporarily disable line wrapping -- Add Apache 2.0 license - -# 0.5.0 - -- MIME support, including configurable line endings and line wrapping -- Removed `decode_ws` -- Renamed `Base64Error` to `DecodeError` - -# 0.4.1 - -- Allow decoding a `AsRef<[u8]>` instead of just a `&str` - -# 0.4.0 - -- Configurable padding -- Encode performance improvements - -# 0.3.0 - -- Added encode/decode functions that do not allocate their own storage -- Decode performance improvements -- Extraneous padding bytes are no longer ignored. Now, an error will be returned. diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/src/chunked_encoder.rs temporalio-1.3.0/vendor/base64-0.13.1/src/chunked_encoder.rs --- temporalio-1.3.0/vendor/base64-0.13.1/src/chunked_encoder.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/src/chunked_encoder.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,247 +0,0 @@ -use crate::{ - encode::{add_padding, encode_to_slice}, - Config, -}; -#[cfg(any(feature = "alloc", feature = "std", test))] -use alloc::string::String; -use core::cmp; -#[cfg(any(feature = "alloc", feature = "std", test))] -use core::str; - -/// The output mechanism for ChunkedEncoder's encoded bytes. -pub trait Sink { - type Error; - - /// Handle a chunk of encoded base64 data (as UTF-8 bytes) - fn write_encoded_bytes(&mut self, encoded: &[u8]) -> Result<(), Self::Error>; -} - -const BUF_SIZE: usize = 1024; - -/// A base64 encoder that emits encoded bytes in chunks without heap allocation. -pub struct ChunkedEncoder { - config: Config, - max_input_chunk_len: usize, -} - -impl ChunkedEncoder { - pub fn new(config: Config) -> ChunkedEncoder { - ChunkedEncoder { - config, - max_input_chunk_len: max_input_length(BUF_SIZE, config), - } - } - - pub fn encode(&self, bytes: &[u8], sink: &mut S) -> Result<(), S::Error> { - let mut encode_buf: [u8; BUF_SIZE] = [0; BUF_SIZE]; - let encode_table = self.config.char_set.encode_table(); - - let mut input_index = 0; - - while input_index < bytes.len() { - // either the full input chunk size, or it's the last iteration - let input_chunk_len = cmp::min(self.max_input_chunk_len, bytes.len() - input_index); - - let chunk = &bytes[input_index..(input_index + input_chunk_len)]; - - let mut b64_bytes_written = encode_to_slice(chunk, &mut encode_buf, encode_table); - - input_index += input_chunk_len; - let more_input_left = input_index < bytes.len(); - - if self.config.pad && !more_input_left { - // no more input, add padding if needed. Buffer will have room because - // max_input_length leaves room for it. - b64_bytes_written += add_padding(bytes.len(), &mut encode_buf[b64_bytes_written..]); - } - - sink.write_encoded_bytes(&encode_buf[0..b64_bytes_written])?; - } - - Ok(()) - } -} - -/// Calculate the longest input that can be encoded for the given output buffer size. -/// -/// If the config requires padding, two bytes of buffer space will be set aside so that the last -/// chunk of input can be encoded safely. -/// -/// The input length will always be a multiple of 3 so that no encoding state has to be carried over -/// between chunks. -fn max_input_length(encoded_buf_len: usize, config: Config) -> usize { - let effective_buf_len = if config.pad { - // make room for padding - encoded_buf_len - .checked_sub(2) - .expect("Don't use a tiny buffer") - } else { - encoded_buf_len - }; - - // No padding, so just normal base64 expansion. - (effective_buf_len / 4) * 3 -} - -// A really simple sink that just appends to a string -#[cfg(any(feature = "alloc", feature = "std", test))] -pub(crate) struct StringSink<'a> { - string: &'a mut String, -} - -#[cfg(any(feature = "alloc", feature = "std", test))] -impl<'a> StringSink<'a> { - pub(crate) fn new(s: &mut String) -> StringSink { - StringSink { string: s } - } -} - -#[cfg(any(feature = "alloc", feature = "std", test))] -impl<'a> Sink for StringSink<'a> { - type Error = (); - - fn write_encoded_bytes(&mut self, s: &[u8]) -> Result<(), Self::Error> { - self.string.push_str(str::from_utf8(s).unwrap()); - - Ok(()) - } -} - -#[cfg(test)] -pub mod tests { - use super::*; - use crate::{encode_config_buf, tests::random_config, CharacterSet, STANDARD}; - - use rand::{ - distributions::{Distribution, Uniform}, - FromEntropy, Rng, - }; - - #[test] - fn chunked_encode_empty() { - assert_eq!("", chunked_encode_str(&[], STANDARD)); - } - - #[test] - fn chunked_encode_intermediate_fast_loop() { - // > 8 bytes input, will enter the pretty fast loop - assert_eq!( - "Zm9vYmFyYmF6cXV4", - chunked_encode_str(b"foobarbazqux", STANDARD) - ); - } - - #[test] - fn chunked_encode_fast_loop() { - // > 32 bytes input, will enter the uber fast loop - assert_eq!( - "Zm9vYmFyYmF6cXV4cXV1eGNvcmdlZ3JhdWx0Z2FycGx5eg==", - chunked_encode_str(b"foobarbazquxquuxcorgegraultgarplyz", STANDARD) - ); - } - - #[test] - fn chunked_encode_slow_loop_only() { - // < 8 bytes input, slow loop only - assert_eq!("Zm9vYmFy", chunked_encode_str(b"foobar", STANDARD)); - } - - #[test] - fn chunked_encode_matches_normal_encode_random_string_sink() { - let helper = StringSinkTestHelper; - chunked_encode_matches_normal_encode_random(&helper); - } - - #[test] - fn max_input_length_no_pad() { - let config = config_with_pad(false); - assert_eq!(768, max_input_length(1024, config)); - } - - #[test] - fn max_input_length_with_pad_decrements_one_triple() { - let config = config_with_pad(true); - assert_eq!(765, max_input_length(1024, config)); - } - - #[test] - fn max_input_length_with_pad_one_byte_short() { - let config = config_with_pad(true); - assert_eq!(765, max_input_length(1025, config)); - } - - #[test] - fn max_input_length_with_pad_fits_exactly() { - let config = config_with_pad(true); - assert_eq!(768, max_input_length(1026, config)); - } - - #[test] - fn max_input_length_cant_use_extra_single_encoded_byte() { - let config = Config::new(crate::CharacterSet::Standard, false); - assert_eq!(300, max_input_length(401, config)); - } - - pub fn chunked_encode_matches_normal_encode_random(sink_test_helper: &S) { - let mut input_buf: Vec = Vec::new(); - let mut output_buf = String::new(); - let mut rng = rand::rngs::SmallRng::from_entropy(); - let input_len_range = Uniform::new(1, 10_000); - - for _ in 0..5_000 { - input_buf.clear(); - output_buf.clear(); - - let buf_len = input_len_range.sample(&mut rng); - for _ in 0..buf_len { - input_buf.push(rng.gen()); - } - - let config = random_config(&mut rng); - - let chunk_encoded_string = sink_test_helper.encode_to_string(config, &input_buf); - encode_config_buf(&input_buf, config, &mut output_buf); - - assert_eq!( - output_buf, chunk_encoded_string, - "input len={}, config: pad={}", - buf_len, config.pad - ); - } - } - - fn chunked_encode_str(bytes: &[u8], config: Config) -> String { - let mut s = String::new(); - { - let mut sink = StringSink::new(&mut s); - let encoder = ChunkedEncoder::new(config); - encoder.encode(bytes, &mut sink).unwrap(); - } - - return s; - } - - fn config_with_pad(pad: bool) -> Config { - Config::new(CharacterSet::Standard, pad) - } - - // An abstraction around sinks so that we can have tests that easily to any sink implementation - pub trait SinkTestHelper { - fn encode_to_string(&self, config: Config, bytes: &[u8]) -> String; - } - - struct StringSinkTestHelper; - - impl SinkTestHelper for StringSinkTestHelper { - fn encode_to_string(&self, config: Config, bytes: &[u8]) -> String { - let encoder = ChunkedEncoder::new(config); - let mut s = String::new(); - { - let mut sink = StringSink::new(&mut s); - encoder.encode(bytes, &mut sink).unwrap(); - } - - s - } - } -} diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/src/decode.rs temporalio-1.3.0/vendor/base64-0.13.1/src/decode.rs --- temporalio-1.3.0/vendor/base64-0.13.1/src/decode.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/src/decode.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,893 +0,0 @@ -use crate::{tables, Config, PAD_BYTE}; - -#[cfg(any(feature = "alloc", feature = "std", test))] -use crate::STANDARD; -#[cfg(any(feature = "alloc", feature = "std", test))] -use alloc::vec::Vec; -use core::fmt; -#[cfg(any(feature = "std", test))] -use std::error; - -// decode logic operates on chunks of 8 input bytes without padding -const INPUT_CHUNK_LEN: usize = 8; -const DECODED_CHUNK_LEN: usize = 6; -// we read a u64 and write a u64, but a u64 of input only yields 6 bytes of output, so the last -// 2 bytes of any output u64 should not be counted as written to (but must be available in a -// slice). -const DECODED_CHUNK_SUFFIX: usize = 2; - -// how many u64's of input to handle at a time -const CHUNKS_PER_FAST_LOOP_BLOCK: usize = 4; -const INPUT_BLOCK_LEN: usize = CHUNKS_PER_FAST_LOOP_BLOCK * INPUT_CHUNK_LEN; -// includes the trailing 2 bytes for the final u64 write -const DECODED_BLOCK_LEN: usize = - CHUNKS_PER_FAST_LOOP_BLOCK * DECODED_CHUNK_LEN + DECODED_CHUNK_SUFFIX; - -/// Errors that can occur while decoding. -#[derive(Clone, Debug, PartialEq, Eq)] -pub enum DecodeError { - /// An invalid byte was found in the input. The offset and offending byte are provided. - InvalidByte(usize, u8), - /// The length of the input is invalid. - /// A typical cause of this is stray trailing whitespace or other separator bytes. - /// In the case where excess trailing bytes have produced an invalid length *and* the last byte - /// is also an invalid base64 symbol (as would be the case for whitespace, etc), `InvalidByte` - /// will be emitted instead of `InvalidLength` to make the issue easier to debug. - InvalidLength, - /// The last non-padding input symbol's encoded 6 bits have nonzero bits that will be discarded. - /// This is indicative of corrupted or truncated Base64. - /// Unlike InvalidByte, which reports symbols that aren't in the alphabet, this error is for - /// symbols that are in the alphabet but represent nonsensical encodings. - InvalidLastSymbol(usize, u8), -} - -impl fmt::Display for DecodeError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match *self { - DecodeError::InvalidByte(index, byte) => { - write!(f, "Invalid byte {}, offset {}.", byte, index) - } - DecodeError::InvalidLength => write!(f, "Encoded text cannot have a 6-bit remainder."), - DecodeError::InvalidLastSymbol(index, byte) => { - write!(f, "Invalid last symbol {}, offset {}.", byte, index) - } - } - } -} - -#[cfg(any(feature = "std", test))] -impl error::Error for DecodeError { - fn description(&self) -> &str { - match *self { - DecodeError::InvalidByte(_, _) => "invalid byte", - DecodeError::InvalidLength => "invalid length", - DecodeError::InvalidLastSymbol(_, _) => "invalid last symbol", - } - } - - fn cause(&self) -> Option<&dyn error::Error> { - None - } -} - -///Decode from string reference as octets. -///Returns a Result containing a Vec. -///Convenience `decode_config(input, base64::STANDARD);`. -/// -///# Example -/// -///```rust -///extern crate base64; -/// -///fn main() { -/// let bytes = base64::decode("aGVsbG8gd29ybGQ=").unwrap(); -/// println!("{:?}", bytes); -///} -///``` -#[cfg(any(feature = "alloc", feature = "std", test))] -pub fn decode>(input: T) -> Result, DecodeError> { - decode_config(input, STANDARD) -} - -///Decode from string reference as octets. -///Returns a Result containing a Vec. -/// -///# Example -/// -///```rust -///extern crate base64; -/// -///fn main() { -/// let bytes = base64::decode_config("aGVsbG8gd29ybGR+Cg==", base64::STANDARD).unwrap(); -/// println!("{:?}", bytes); -/// -/// let bytes_url = base64::decode_config("aGVsbG8gaW50ZXJuZXR-Cg==", base64::URL_SAFE).unwrap(); -/// println!("{:?}", bytes_url); -///} -///``` -#[cfg(any(feature = "alloc", feature = "std", test))] -pub fn decode_config>(input: T, config: Config) -> Result, DecodeError> { - let decoded_length_estimate = (input - .as_ref() - .len() - .checked_add(3) - .expect("decoded length calculation overflow")) - / 4 - * 3; - let mut buffer = Vec::::with_capacity(decoded_length_estimate); - - decode_config_buf(input, config, &mut buffer).map(|_| buffer) -} - -///Decode from string reference as octets. -///Writes into the supplied buffer to avoid allocation. -///Returns a Result containing an empty tuple, aka (). -/// -///# Example -/// -///```rust -///extern crate base64; -/// -///fn main() { -/// let mut buffer = Vec::::new(); -/// base64::decode_config_buf("aGVsbG8gd29ybGR+Cg==", base64::STANDARD, &mut buffer).unwrap(); -/// println!("{:?}", buffer); -/// -/// buffer.clear(); -/// -/// base64::decode_config_buf("aGVsbG8gaW50ZXJuZXR-Cg==", base64::URL_SAFE, &mut buffer) -/// .unwrap(); -/// println!("{:?}", buffer); -///} -///``` -#[cfg(any(feature = "alloc", feature = "std", test))] -pub fn decode_config_buf>( - input: T, - config: Config, - buffer: &mut Vec, -) -> Result<(), DecodeError> { - let input_bytes = input.as_ref(); - - let starting_output_len = buffer.len(); - - let num_chunks = num_chunks(input_bytes); - let decoded_len_estimate = num_chunks - .checked_mul(DECODED_CHUNK_LEN) - .and_then(|p| p.checked_add(starting_output_len)) - .expect("Overflow when calculating output buffer length"); - buffer.resize(decoded_len_estimate, 0); - - let bytes_written; - { - let buffer_slice = &mut buffer.as_mut_slice()[starting_output_len..]; - bytes_written = decode_helper(input_bytes, num_chunks, config, buffer_slice)?; - } - - buffer.truncate(starting_output_len + bytes_written); - - Ok(()) -} - -/// Decode the input into the provided output slice. -/// -/// This will not write any bytes past exactly what is decoded (no stray garbage bytes at the end). -/// -/// If you don't know ahead of time what the decoded length should be, size your buffer with a -/// conservative estimate for the decoded length of an input: 3 bytes of output for every 4 bytes of -/// input, rounded up, or in other words `(input_len + 3) / 4 * 3`. -/// -/// If the slice is not large enough, this will panic. -pub fn decode_config_slice>( - input: T, - config: Config, - output: &mut [u8], -) -> Result { - let input_bytes = input.as_ref(); - - decode_helper(input_bytes, num_chunks(input_bytes), config, output) -} - -/// Return the number of input chunks (including a possibly partial final chunk) in the input -fn num_chunks(input: &[u8]) -> usize { - input - .len() - .checked_add(INPUT_CHUNK_LEN - 1) - .expect("Overflow when calculating number of chunks in input") - / INPUT_CHUNK_LEN -} - -/// Helper to avoid duplicating num_chunks calculation, which is costly on short inputs. -/// Returns the number of bytes written, or an error. -// We're on the fragile edge of compiler heuristics here. If this is not inlined, slow. If this is -// inlined(always), a different slow. plain ol' inline makes the benchmarks happiest at the moment, -// but this is fragile and the best setting changes with only minor code modifications. -#[inline] -fn decode_helper( - input: &[u8], - num_chunks: usize, - config: Config, - output: &mut [u8], -) -> Result { - let char_set = config.char_set; - let decode_table = char_set.decode_table(); - - let remainder_len = input.len() % INPUT_CHUNK_LEN; - - // Because the fast decode loop writes in groups of 8 bytes (unrolled to - // CHUNKS_PER_FAST_LOOP_BLOCK times 8 bytes, where possible) and outputs 8 bytes at a time (of - // which only 6 are valid data), we need to be sure that we stop using the fast decode loop - // soon enough that there will always be 2 more bytes of valid data written after that loop. - let trailing_bytes_to_skip = match remainder_len { - // if input is a multiple of the chunk size, ignore the last chunk as it may have padding, - // and the fast decode logic cannot handle padding - 0 => INPUT_CHUNK_LEN, - // 1 and 5 trailing bytes are illegal: can't decode 6 bits of input into a byte - 1 | 5 => { - // trailing whitespace is so common that it's worth it to check the last byte to - // possibly return a better error message - if let Some(b) = input.last() { - if *b != PAD_BYTE && decode_table[*b as usize] == tables::INVALID_VALUE { - return Err(DecodeError::InvalidByte(input.len() - 1, *b)); - } - } - - return Err(DecodeError::InvalidLength); - } - // This will decode to one output byte, which isn't enough to overwrite the 2 extra bytes - // written by the fast decode loop. So, we have to ignore both these 2 bytes and the - // previous chunk. - 2 => INPUT_CHUNK_LEN + 2, - // If this is 3 unpadded chars, then it would actually decode to 2 bytes. However, if this - // is an erroneous 2 chars + 1 pad char that would decode to 1 byte, then it should fail - // with an error, not panic from going past the bounds of the output slice, so we let it - // use stage 3 + 4. - 3 => INPUT_CHUNK_LEN + 3, - // This can also decode to one output byte because it may be 2 input chars + 2 padding - // chars, which would decode to 1 byte. - 4 => INPUT_CHUNK_LEN + 4, - // Everything else is a legal decode len (given that we don't require padding), and will - // decode to at least 2 bytes of output. - _ => remainder_len, - }; - - // rounded up to include partial chunks - let mut remaining_chunks = num_chunks; - - let mut input_index = 0; - let mut output_index = 0; - - { - let length_of_fast_decode_chunks = input.len().saturating_sub(trailing_bytes_to_skip); - - // Fast loop, stage 1 - // manual unroll to CHUNKS_PER_FAST_LOOP_BLOCK of u64s to amortize slice bounds checks - if let Some(max_start_index) = length_of_fast_decode_chunks.checked_sub(INPUT_BLOCK_LEN) { - while input_index <= max_start_index { - let input_slice = &input[input_index..(input_index + INPUT_BLOCK_LEN)]; - let output_slice = &mut output[output_index..(output_index + DECODED_BLOCK_LEN)]; - - decode_chunk( - &input_slice[0..], - input_index, - decode_table, - &mut output_slice[0..], - )?; - decode_chunk( - &input_slice[8..], - input_index + 8, - decode_table, - &mut output_slice[6..], - )?; - decode_chunk( - &input_slice[16..], - input_index + 16, - decode_table, - &mut output_slice[12..], - )?; - decode_chunk( - &input_slice[24..], - input_index + 24, - decode_table, - &mut output_slice[18..], - )?; - - input_index += INPUT_BLOCK_LEN; - output_index += DECODED_BLOCK_LEN - DECODED_CHUNK_SUFFIX; - remaining_chunks -= CHUNKS_PER_FAST_LOOP_BLOCK; - } - } - - // Fast loop, stage 2 (aka still pretty fast loop) - // 8 bytes at a time for whatever we didn't do in stage 1. - if let Some(max_start_index) = length_of_fast_decode_chunks.checked_sub(INPUT_CHUNK_LEN) { - while input_index < max_start_index { - decode_chunk( - &input[input_index..(input_index + INPUT_CHUNK_LEN)], - input_index, - decode_table, - &mut output - [output_index..(output_index + DECODED_CHUNK_LEN + DECODED_CHUNK_SUFFIX)], - )?; - - output_index += DECODED_CHUNK_LEN; - input_index += INPUT_CHUNK_LEN; - remaining_chunks -= 1; - } - } - } - - // Stage 3 - // If input length was such that a chunk had to be deferred until after the fast loop - // because decoding it would have produced 2 trailing bytes that wouldn't then be - // overwritten, we decode that chunk here. This way is slower but doesn't write the 2 - // trailing bytes. - // However, we still need to avoid the last chunk (partial or complete) because it could - // have padding, so we always do 1 fewer to avoid the last chunk. - for _ in 1..remaining_chunks { - decode_chunk_precise( - &input[input_index..], - input_index, - decode_table, - &mut output[output_index..(output_index + DECODED_CHUNK_LEN)], - )?; - - input_index += INPUT_CHUNK_LEN; - output_index += DECODED_CHUNK_LEN; - } - - // always have one more (possibly partial) block of 8 input - debug_assert!(input.len() - input_index > 1 || input.is_empty()); - debug_assert!(input.len() - input_index <= 8); - - // Stage 4 - // Finally, decode any leftovers that aren't a complete input block of 8 bytes. - // Use a u64 as a stack-resident 8 byte buffer. - let mut leftover_bits: u64 = 0; - let mut morsels_in_leftover = 0; - let mut padding_bytes = 0; - let mut first_padding_index: usize = 0; - let mut last_symbol = 0_u8; - let start_of_leftovers = input_index; - for (i, b) in input[start_of_leftovers..].iter().enumerate() { - // '=' padding - if *b == PAD_BYTE { - // There can be bad padding in a few ways: - // 1 - Padding with non-padding characters after it - // 2 - Padding after zero or one non-padding characters before it - // in the current quad. - // 3 - More than two characters of padding. If 3 or 4 padding chars - // are in the same quad, that implies it will be caught by #2. - // If it spreads from one quad to another, it will be caught by - // #2 in the second quad. - - if i % 4 < 2 { - // Check for case #2. - let bad_padding_index = start_of_leftovers - + if padding_bytes > 0 { - // If we've already seen padding, report the first padding index. - // This is to be consistent with the faster logic above: it will report an - // error on the first padding character (since it doesn't expect to see - // anything but actual encoded data). - first_padding_index - } else { - // haven't seen padding before, just use where we are now - i - }; - return Err(DecodeError::InvalidByte(bad_padding_index, *b)); - } - - if padding_bytes == 0 { - first_padding_index = i; - } - - padding_bytes += 1; - continue; - } - - // Check for case #1. - // To make '=' handling consistent with the main loop, don't allow - // non-suffix '=' in trailing chunk either. Report error as first - // erroneous padding. - if padding_bytes > 0 { - return Err(DecodeError::InvalidByte( - start_of_leftovers + first_padding_index, - PAD_BYTE, - )); - } - last_symbol = *b; - - // can use up to 8 * 6 = 48 bits of the u64, if last chunk has no padding. - // To minimize shifts, pack the leftovers from left to right. - let shift = 64 - (morsels_in_leftover + 1) * 6; - // tables are all 256 elements, lookup with a u8 index always succeeds - let morsel = decode_table[*b as usize]; - if morsel == tables::INVALID_VALUE { - return Err(DecodeError::InvalidByte(start_of_leftovers + i, *b)); - } - - leftover_bits |= (morsel as u64) << shift; - morsels_in_leftover += 1; - } - - let leftover_bits_ready_to_append = match morsels_in_leftover { - 0 => 0, - 2 => 8, - 3 => 16, - 4 => 24, - 6 => 32, - 7 => 40, - 8 => 48, - _ => unreachable!( - "Impossible: must only have 0 to 8 input bytes in last chunk, with no invalid lengths" - ), - }; - - // if there are bits set outside the bits we care about, last symbol encodes trailing bits that - // will not be included in the output - let mask = !0 >> leftover_bits_ready_to_append; - if !config.decode_allow_trailing_bits && (leftover_bits & mask) != 0 { - // last morsel is at `morsels_in_leftover` - 1 - return Err(DecodeError::InvalidLastSymbol( - start_of_leftovers + morsels_in_leftover - 1, - last_symbol, - )); - } - - let mut leftover_bits_appended_to_buf = 0; - while leftover_bits_appended_to_buf < leftover_bits_ready_to_append { - // `as` simply truncates the higher bits, which is what we want here - let selected_bits = (leftover_bits >> (56 - leftover_bits_appended_to_buf)) as u8; - output[output_index] = selected_bits; - output_index += 1; - - leftover_bits_appended_to_buf += 8; - } - - Ok(output_index) -} - -#[inline] -fn write_u64(output: &mut [u8], value: u64) { - output[..8].copy_from_slice(&value.to_be_bytes()); -} - -/// Decode 8 bytes of input into 6 bytes of output. 8 bytes of output will be written, but only the -/// first 6 of those contain meaningful data. -/// -/// `input` is the bytes to decode, of which the first 8 bytes will be processed. -/// `index_at_start_of_input` is the offset in the overall input (used for reporting errors -/// accurately) -/// `decode_table` is the lookup table for the particular base64 alphabet. -/// `output` will have its first 8 bytes overwritten, of which only the first 6 are valid decoded -/// data. -// yes, really inline (worth 30-50% speedup) -#[inline(always)] -fn decode_chunk( - input: &[u8], - index_at_start_of_input: usize, - decode_table: &[u8; 256], - output: &mut [u8], -) -> Result<(), DecodeError> { - let mut accum: u64; - - let morsel = decode_table[input[0] as usize]; - if morsel == tables::INVALID_VALUE { - return Err(DecodeError::InvalidByte(index_at_start_of_input, input[0])); - } - accum = (morsel as u64) << 58; - - let morsel = decode_table[input[1] as usize]; - if morsel == tables::INVALID_VALUE { - return Err(DecodeError::InvalidByte( - index_at_start_of_input + 1, - input[1], - )); - } - accum |= (morsel as u64) << 52; - - let morsel = decode_table[input[2] as usize]; - if morsel == tables::INVALID_VALUE { - return Err(DecodeError::InvalidByte( - index_at_start_of_input + 2, - input[2], - )); - } - accum |= (morsel as u64) << 46; - - let morsel = decode_table[input[3] as usize]; - if morsel == tables::INVALID_VALUE { - return Err(DecodeError::InvalidByte( - index_at_start_of_input + 3, - input[3], - )); - } - accum |= (morsel as u64) << 40; - - let morsel = decode_table[input[4] as usize]; - if morsel == tables::INVALID_VALUE { - return Err(DecodeError::InvalidByte( - index_at_start_of_input + 4, - input[4], - )); - } - accum |= (morsel as u64) << 34; - - let morsel = decode_table[input[5] as usize]; - if morsel == tables::INVALID_VALUE { - return Err(DecodeError::InvalidByte( - index_at_start_of_input + 5, - input[5], - )); - } - accum |= (morsel as u64) << 28; - - let morsel = decode_table[input[6] as usize]; - if morsel == tables::INVALID_VALUE { - return Err(DecodeError::InvalidByte( - index_at_start_of_input + 6, - input[6], - )); - } - accum |= (morsel as u64) << 22; - - let morsel = decode_table[input[7] as usize]; - if morsel == tables::INVALID_VALUE { - return Err(DecodeError::InvalidByte( - index_at_start_of_input + 7, - input[7], - )); - } - accum |= (morsel as u64) << 16; - - write_u64(output, accum); - - Ok(()) -} - -/// Decode an 8-byte chunk, but only write the 6 bytes actually decoded instead of including 2 -/// trailing garbage bytes. -#[inline] -fn decode_chunk_precise( - input: &[u8], - index_at_start_of_input: usize, - decode_table: &[u8; 256], - output: &mut [u8], -) -> Result<(), DecodeError> { - let mut tmp_buf = [0_u8; 8]; - - decode_chunk( - input, - index_at_start_of_input, - decode_table, - &mut tmp_buf[..], - )?; - - output[0..6].copy_from_slice(&tmp_buf[0..6]); - - Ok(()) -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::{ - encode::encode_config_buf, - encode::encode_config_slice, - tests::{assert_encode_sanity, random_config}, - }; - - use rand::{ - distributions::{Distribution, Uniform}, - FromEntropy, Rng, - }; - - #[test] - fn decode_chunk_precise_writes_only_6_bytes() { - let input = b"Zm9vYmFy"; // "foobar" - let mut output = [0_u8, 1, 2, 3, 4, 5, 6, 7]; - decode_chunk_precise(&input[..], 0, tables::STANDARD_DECODE, &mut output).unwrap(); - assert_eq!(&vec![b'f', b'o', b'o', b'b', b'a', b'r', 6, 7], &output); - } - - #[test] - fn decode_chunk_writes_8_bytes() { - let input = b"Zm9vYmFy"; // "foobar" - let mut output = [0_u8, 1, 2, 3, 4, 5, 6, 7]; - decode_chunk(&input[..], 0, tables::STANDARD_DECODE, &mut output).unwrap(); - assert_eq!(&vec![b'f', b'o', b'o', b'b', b'a', b'r', 0, 0], &output); - } - - #[test] - fn decode_into_nonempty_vec_doesnt_clobber_existing_prefix() { - let mut orig_data = Vec::new(); - let mut encoded_data = String::new(); - let mut decoded_with_prefix = Vec::new(); - let mut decoded_without_prefix = Vec::new(); - let mut prefix = Vec::new(); - - let prefix_len_range = Uniform::new(0, 1000); - let input_len_range = Uniform::new(0, 1000); - - let mut rng = rand::rngs::SmallRng::from_entropy(); - - for _ in 0..10_000 { - orig_data.clear(); - encoded_data.clear(); - decoded_with_prefix.clear(); - decoded_without_prefix.clear(); - prefix.clear(); - - let input_len = input_len_range.sample(&mut rng); - - for _ in 0..input_len { - orig_data.push(rng.gen()); - } - - let config = random_config(&mut rng); - encode_config_buf(&orig_data, config, &mut encoded_data); - assert_encode_sanity(&encoded_data, config, input_len); - - let prefix_len = prefix_len_range.sample(&mut rng); - - // fill the buf with a prefix - for _ in 0..prefix_len { - prefix.push(rng.gen()); - } - - decoded_with_prefix.resize(prefix_len, 0); - decoded_with_prefix.copy_from_slice(&prefix); - - // decode into the non-empty buf - decode_config_buf(&encoded_data, config, &mut decoded_with_prefix).unwrap(); - // also decode into the empty buf - decode_config_buf(&encoded_data, config, &mut decoded_without_prefix).unwrap(); - - assert_eq!( - prefix_len + decoded_without_prefix.len(), - decoded_with_prefix.len() - ); - assert_eq!(orig_data, decoded_without_prefix); - - // append plain decode onto prefix - prefix.append(&mut decoded_without_prefix); - - assert_eq!(prefix, decoded_with_prefix); - } - } - - #[test] - fn decode_into_slice_doesnt_clobber_existing_prefix_or_suffix() { - let mut orig_data = Vec::new(); - let mut encoded_data = String::new(); - let mut decode_buf = Vec::new(); - let mut decode_buf_copy: Vec = Vec::new(); - - let input_len_range = Uniform::new(0, 1000); - - let mut rng = rand::rngs::SmallRng::from_entropy(); - - for _ in 0..10_000 { - orig_data.clear(); - encoded_data.clear(); - decode_buf.clear(); - decode_buf_copy.clear(); - - let input_len = input_len_range.sample(&mut rng); - - for _ in 0..input_len { - orig_data.push(rng.gen()); - } - - let config = random_config(&mut rng); - encode_config_buf(&orig_data, config, &mut encoded_data); - assert_encode_sanity(&encoded_data, config, input_len); - - // fill the buffer with random garbage, long enough to have some room before and after - for _ in 0..5000 { - decode_buf.push(rng.gen()); - } - - // keep a copy for later comparison - decode_buf_copy.extend(decode_buf.iter()); - - let offset = 1000; - - // decode into the non-empty buf - let decode_bytes_written = - decode_config_slice(&encoded_data, config, &mut decode_buf[offset..]).unwrap(); - - assert_eq!(orig_data.len(), decode_bytes_written); - assert_eq!( - orig_data, - &decode_buf[offset..(offset + decode_bytes_written)] - ); - assert_eq!(&decode_buf_copy[0..offset], &decode_buf[0..offset]); - assert_eq!( - &decode_buf_copy[offset + decode_bytes_written..], - &decode_buf[offset + decode_bytes_written..] - ); - } - } - - #[test] - fn decode_into_slice_fits_in_precisely_sized_slice() { - let mut orig_data = Vec::new(); - let mut encoded_data = String::new(); - let mut decode_buf = Vec::new(); - - let input_len_range = Uniform::new(0, 1000); - - let mut rng = rand::rngs::SmallRng::from_entropy(); - - for _ in 0..10_000 { - orig_data.clear(); - encoded_data.clear(); - decode_buf.clear(); - - let input_len = input_len_range.sample(&mut rng); - - for _ in 0..input_len { - orig_data.push(rng.gen()); - } - - let config = random_config(&mut rng); - encode_config_buf(&orig_data, config, &mut encoded_data); - assert_encode_sanity(&encoded_data, config, input_len); - - decode_buf.resize(input_len, 0); - - // decode into the non-empty buf - let decode_bytes_written = - decode_config_slice(&encoded_data, config, &mut decode_buf[..]).unwrap(); - - assert_eq!(orig_data.len(), decode_bytes_written); - assert_eq!(orig_data, decode_buf); - } - } - - #[test] - fn detect_invalid_last_symbol_two_bytes() { - let decode = - |input, forgiving| decode_config(input, STANDARD.decode_allow_trailing_bits(forgiving)); - - // example from https://github.com/marshallpierce/rust-base64/issues/75 - assert!(decode("iYU=", false).is_ok()); - // trailing 01 - assert_eq!( - Err(DecodeError::InvalidLastSymbol(2, b'V')), - decode("iYV=", false) - ); - assert_eq!(Ok(vec![137, 133]), decode("iYV=", true)); - // trailing 10 - assert_eq!( - Err(DecodeError::InvalidLastSymbol(2, b'W')), - decode("iYW=", false) - ); - assert_eq!(Ok(vec![137, 133]), decode("iYV=", true)); - // trailing 11 - assert_eq!( - Err(DecodeError::InvalidLastSymbol(2, b'X')), - decode("iYX=", false) - ); - assert_eq!(Ok(vec![137, 133]), decode("iYV=", true)); - - // also works when there are 2 quads in the last block - assert_eq!( - Err(DecodeError::InvalidLastSymbol(6, b'X')), - decode("AAAAiYX=", false) - ); - assert_eq!(Ok(vec![0, 0, 0, 137, 133]), decode("AAAAiYX=", true)); - } - - #[test] - fn detect_invalid_last_symbol_one_byte() { - // 0xFF -> "/w==", so all letters > w, 0-9, and '+', '/' should get InvalidLastSymbol - - assert!(decode("/w==").is_ok()); - // trailing 01 - assert_eq!(Err(DecodeError::InvalidLastSymbol(1, b'x')), decode("/x==")); - assert_eq!(Err(DecodeError::InvalidLastSymbol(1, b'z')), decode("/z==")); - assert_eq!(Err(DecodeError::InvalidLastSymbol(1, b'0')), decode("/0==")); - assert_eq!(Err(DecodeError::InvalidLastSymbol(1, b'9')), decode("/9==")); - assert_eq!(Err(DecodeError::InvalidLastSymbol(1, b'+')), decode("/+==")); - assert_eq!(Err(DecodeError::InvalidLastSymbol(1, b'/')), decode("//==")); - - // also works when there are 2 quads in the last block - assert_eq!( - Err(DecodeError::InvalidLastSymbol(5, b'x')), - decode("AAAA/x==") - ); - } - - #[test] - fn detect_invalid_last_symbol_every_possible_three_symbols() { - let mut base64_to_bytes = ::std::collections::HashMap::new(); - - let mut bytes = [0_u8; 2]; - for b1 in 0_u16..256 { - bytes[0] = b1 as u8; - for b2 in 0_u16..256 { - bytes[1] = b2 as u8; - let mut b64 = vec![0_u8; 4]; - assert_eq!(4, encode_config_slice(&bytes, STANDARD, &mut b64[..])); - let mut v = ::std::vec::Vec::with_capacity(2); - v.extend_from_slice(&bytes[..]); - - assert!(base64_to_bytes.insert(b64, v).is_none()); - } - } - - // every possible combination of symbols must either decode to 2 bytes or get InvalidLastSymbol - - let mut symbols = [0_u8; 4]; - for &s1 in STANDARD.char_set.encode_table().iter() { - symbols[0] = s1; - for &s2 in STANDARD.char_set.encode_table().iter() { - symbols[1] = s2; - for &s3 in STANDARD.char_set.encode_table().iter() { - symbols[2] = s3; - symbols[3] = PAD_BYTE; - - match base64_to_bytes.get(&symbols[..]) { - Some(bytes) => { - assert_eq!(Ok(bytes.to_vec()), decode_config(&symbols, STANDARD)) - } - None => assert_eq!( - Err(DecodeError::InvalidLastSymbol(2, s3)), - decode_config(&symbols[..], STANDARD) - ), - } - } - } - } - } - - #[test] - fn detect_invalid_last_symbol_every_possible_two_symbols() { - let mut base64_to_bytes = ::std::collections::HashMap::new(); - - for b in 0_u16..256 { - let mut b64 = vec![0_u8; 4]; - assert_eq!(4, encode_config_slice(&[b as u8], STANDARD, &mut b64[..])); - let mut v = ::std::vec::Vec::with_capacity(1); - v.push(b as u8); - - assert!(base64_to_bytes.insert(b64, v).is_none()); - } - - // every possible combination of symbols must either decode to 1 byte or get InvalidLastSymbol - - let mut symbols = [0_u8; 4]; - for &s1 in STANDARD.char_set.encode_table().iter() { - symbols[0] = s1; - for &s2 in STANDARD.char_set.encode_table().iter() { - symbols[1] = s2; - symbols[2] = PAD_BYTE; - symbols[3] = PAD_BYTE; - - match base64_to_bytes.get(&symbols[..]) { - Some(bytes) => { - assert_eq!(Ok(bytes.to_vec()), decode_config(&symbols, STANDARD)) - } - None => assert_eq!( - Err(DecodeError::InvalidLastSymbol(1, s2)), - decode_config(&symbols[..], STANDARD) - ), - } - } - } - } - - #[test] - fn decode_config_estimation_works_for_various_lengths() { - for num_prefix_quads in 0..100 { - for suffix in &["AA", "AAA", "AAAA"] { - let mut prefix = "AAAA".repeat(num_prefix_quads); - prefix.push_str(suffix); - // make sure no overflow (and thus a panic) occurs - let res = decode_config(prefix, STANDARD); - assert!(res.is_ok()); - } - } - } -} diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/src/display.rs temporalio-1.3.0/vendor/base64-0.13.1/src/display.rs --- temporalio-1.3.0/vendor/base64-0.13.1/src/display.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/src/display.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ -//! Enables base64'd output anywhere you might use a `Display` implementation, like a format string. -//! -//! ``` -//! use base64::display::Base64Display; -//! -//! let data = vec![0x0, 0x1, 0x2, 0x3]; -//! let wrapper = Base64Display::with_config(&data, base64::STANDARD); -//! -//! assert_eq!("base64: AAECAw==", format!("base64: {}", wrapper)); -//! ``` - -use super::chunked_encoder::ChunkedEncoder; -use super::Config; -use core::fmt::{Display, Formatter}; -use core::{fmt, str}; - -/// A convenience wrapper for base64'ing bytes into a format string without heap allocation. -pub struct Base64Display<'a> { - bytes: &'a [u8], - chunked_encoder: ChunkedEncoder, -} - -impl<'a> Base64Display<'a> { - /// Create a `Base64Display` with the provided config. - pub fn with_config(bytes: &[u8], config: Config) -> Base64Display { - Base64Display { - bytes, - chunked_encoder: ChunkedEncoder::new(config), - } - } -} - -impl<'a> Display for Base64Display<'a> { - fn fmt(&self, formatter: &mut Formatter) -> Result<(), fmt::Error> { - let mut sink = FormatterSink { f: formatter }; - self.chunked_encoder.encode(self.bytes, &mut sink) - } -} - -struct FormatterSink<'a, 'b: 'a> { - f: &'a mut Formatter<'b>, -} - -impl<'a, 'b: 'a> super::chunked_encoder::Sink for FormatterSink<'a, 'b> { - type Error = fmt::Error; - - fn write_encoded_bytes(&mut self, encoded: &[u8]) -> Result<(), Self::Error> { - // Avoid unsafe. If max performance is needed, write your own display wrapper that uses - // unsafe here to gain about 10-15%. - self.f - .write_str(str::from_utf8(encoded).expect("base64 data was not utf8")) - } -} - -#[cfg(test)] -mod tests { - use super::super::chunked_encoder::tests::{ - chunked_encode_matches_normal_encode_random, SinkTestHelper, - }; - use super::super::*; - use super::*; - - #[test] - fn basic_display() { - assert_eq!( - "~$Zm9vYmFy#*", - format!("~${}#*", Base64Display::with_config(b"foobar", STANDARD)) - ); - assert_eq!( - "~$Zm9vYmFyZg==#*", - format!("~${}#*", Base64Display::with_config(b"foobarf", STANDARD)) - ); - } - - #[test] - fn display_encode_matches_normal_encode() { - let helper = DisplaySinkTestHelper; - chunked_encode_matches_normal_encode_random(&helper); - } - - struct DisplaySinkTestHelper; - - impl SinkTestHelper for DisplaySinkTestHelper { - fn encode_to_string(&self, config: Config, bytes: &[u8]) -> String { - format!("{}", Base64Display::with_config(bytes, config)) - } - } -} diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/src/encode.rs temporalio-1.3.0/vendor/base64-0.13.1/src/encode.rs --- temporalio-1.3.0/vendor/base64-0.13.1/src/encode.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/src/encode.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,675 +0,0 @@ -use crate::{Config, PAD_BYTE}; -#[cfg(any(feature = "alloc", feature = "std", test))] -use crate::{chunked_encoder, STANDARD}; -#[cfg(any(feature = "alloc", feature = "std", test))] -use alloc::{string::String, vec}; -use core::convert::TryInto; - -///Encode arbitrary octets as base64. -///Returns a String. -///Convenience for `encode_config(input, base64::STANDARD);`. -/// -///# Example -/// -///```rust -///extern crate base64; -/// -///fn main() { -/// let b64 = base64::encode(b"hello world"); -/// println!("{}", b64); -///} -///``` -#[cfg(any(feature = "alloc", feature = "std", test))] -pub fn encode>(input: T) -> String { - encode_config(input, STANDARD) -} - -///Encode arbitrary octets as base64. -///Returns a String. -/// -///# Example -/// -///```rust -///extern crate base64; -/// -///fn main() { -/// let b64 = base64::encode_config(b"hello world~", base64::STANDARD); -/// println!("{}", b64); -/// -/// let b64_url = base64::encode_config(b"hello internet~", base64::URL_SAFE); -/// println!("{}", b64_url); -///} -///``` -#[cfg(any(feature = "alloc", feature = "std", test))] -pub fn encode_config>(input: T, config: Config) -> String { - let mut buf = match encoded_size(input.as_ref().len(), config) { - Some(n) => vec![0; n], - None => panic!("integer overflow when calculating buffer size"), - }; - - encode_with_padding(input.as_ref(), config, buf.len(), &mut buf[..]); - - String::from_utf8(buf).expect("Invalid UTF8") -} - -///Encode arbitrary octets as base64. -///Writes into the supplied output buffer, which will grow the buffer if needed. -/// -///# Example -/// -///```rust -///extern crate base64; -/// -///fn main() { -/// let mut buf = String::new(); -/// base64::encode_config_buf(b"hello world~", base64::STANDARD, &mut buf); -/// println!("{}", buf); -/// -/// buf.clear(); -/// base64::encode_config_buf(b"hello internet~", base64::URL_SAFE, &mut buf); -/// println!("{}", buf); -///} -///``` -#[cfg(any(feature = "alloc", feature = "std", test))] -pub fn encode_config_buf>(input: T, config: Config, buf: &mut String) { - let input_bytes = input.as_ref(); - - { - let mut sink = chunked_encoder::StringSink::new(buf); - let encoder = chunked_encoder::ChunkedEncoder::new(config); - - encoder - .encode(input_bytes, &mut sink) - .expect("Writing to a String shouldn't fail") - } -} - -/// Encode arbitrary octets as base64. -/// Writes into the supplied output buffer. -/// -/// This is useful if you wish to avoid allocation entirely (e.g. encoding into a stack-resident -/// or statically-allocated buffer). -/// -/// # Panics -/// -/// If `output` is too small to hold the encoded version of `input`, a panic will result. -/// -/// # Example -/// -/// ```rust -/// extern crate base64; -/// -/// fn main() { -/// let s = b"hello internet!"; -/// let mut buf = Vec::new(); -/// // make sure we'll have a slice big enough for base64 + padding -/// buf.resize(s.len() * 4 / 3 + 4, 0); -/// -/// let bytes_written = base64::encode_config_slice(s, -/// base64::STANDARD, &mut buf); -/// -/// // shorten our vec down to just what was written -/// buf.resize(bytes_written, 0); -/// -/// assert_eq!(s, base64::decode(&buf).unwrap().as_slice()); -/// } -/// ``` -pub fn encode_config_slice>(input: T, config: Config, output: &mut [u8]) -> usize { - let input_bytes = input.as_ref(); - - let encoded_size = encoded_size(input_bytes.len(), config) - .expect("usize overflow when calculating buffer size"); - - let mut b64_output = &mut output[0..encoded_size]; - - encode_with_padding(&input_bytes, config, encoded_size, &mut b64_output); - - encoded_size -} - -/// B64-encode and pad (if configured). -/// -/// This helper exists to avoid recalculating encoded_size, which is relatively expensive on short -/// inputs. -/// -/// `encoded_size` is the encoded size calculated for `input`. -/// -/// `output` must be of size `encoded_size`. -/// -/// All bytes in `output` will be written to since it is exactly the size of the output. -fn encode_with_padding(input: &[u8], config: Config, encoded_size: usize, output: &mut [u8]) { - debug_assert_eq!(encoded_size, output.len()); - - let b64_bytes_written = encode_to_slice(input, output, config.char_set.encode_table()); - - let padding_bytes = if config.pad { - add_padding(input.len(), &mut output[b64_bytes_written..]) - } else { - 0 - }; - - let encoded_bytes = b64_bytes_written - .checked_add(padding_bytes) - .expect("usize overflow when calculating b64 length"); - - debug_assert_eq!(encoded_size, encoded_bytes); -} - -#[inline] -fn read_u64(s: &[u8]) -> u64 { - u64::from_be_bytes(s[..8].try_into().unwrap()) -} - -/// Encode input bytes to utf8 base64 bytes. Does not pad. -/// `output` must be long enough to hold the encoded `input` without padding. -/// Returns the number of bytes written. -#[inline] -pub fn encode_to_slice(input: &[u8], output: &mut [u8], encode_table: &[u8; 64]) -> usize { - let mut input_index: usize = 0; - - const BLOCKS_PER_FAST_LOOP: usize = 4; - const LOW_SIX_BITS: u64 = 0x3F; - - // we read 8 bytes at a time (u64) but only actually consume 6 of those bytes. Thus, we need - // 2 trailing bytes to be available to read.. - let last_fast_index = input.len().saturating_sub(BLOCKS_PER_FAST_LOOP * 6 + 2); - let mut output_index = 0; - - if last_fast_index > 0 { - while input_index <= last_fast_index { - // Major performance wins from letting the optimizer do the bounds check once, mostly - // on the output side - let input_chunk = &input[input_index..(input_index + (BLOCKS_PER_FAST_LOOP * 6 + 2))]; - let output_chunk = &mut output[output_index..(output_index + BLOCKS_PER_FAST_LOOP * 8)]; - - // Hand-unrolling for 32 vs 16 or 8 bytes produces yields performance about equivalent - // to unsafe pointer code on a Xeon E5-1650v3. 64 byte unrolling was slightly better for - // large inputs but significantly worse for 50-byte input, unsurprisingly. I suspect - // that it's a not uncommon use case to encode smallish chunks of data (e.g. a 64-byte - // SHA-512 digest), so it would be nice if that fit in the unrolled loop at least once. - // Plus, single-digit percentage performance differences might well be quite different - // on different hardware. - - let input_u64 = read_u64(&input_chunk[0..]); - - output_chunk[0] = encode_table[((input_u64 >> 58) & LOW_SIX_BITS) as usize]; - output_chunk[1] = encode_table[((input_u64 >> 52) & LOW_SIX_BITS) as usize]; - output_chunk[2] = encode_table[((input_u64 >> 46) & LOW_SIX_BITS) as usize]; - output_chunk[3] = encode_table[((input_u64 >> 40) & LOW_SIX_BITS) as usize]; - output_chunk[4] = encode_table[((input_u64 >> 34) & LOW_SIX_BITS) as usize]; - output_chunk[5] = encode_table[((input_u64 >> 28) & LOW_SIX_BITS) as usize]; - output_chunk[6] = encode_table[((input_u64 >> 22) & LOW_SIX_BITS) as usize]; - output_chunk[7] = encode_table[((input_u64 >> 16) & LOW_SIX_BITS) as usize]; - - let input_u64 = read_u64(&input_chunk[6..]); - - output_chunk[8] = encode_table[((input_u64 >> 58) & LOW_SIX_BITS) as usize]; - output_chunk[9] = encode_table[((input_u64 >> 52) & LOW_SIX_BITS) as usize]; - output_chunk[10] = encode_table[((input_u64 >> 46) & LOW_SIX_BITS) as usize]; - output_chunk[11] = encode_table[((input_u64 >> 40) & LOW_SIX_BITS) as usize]; - output_chunk[12] = encode_table[((input_u64 >> 34) & LOW_SIX_BITS) as usize]; - output_chunk[13] = encode_table[((input_u64 >> 28) & LOW_SIX_BITS) as usize]; - output_chunk[14] = encode_table[((input_u64 >> 22) & LOW_SIX_BITS) as usize]; - output_chunk[15] = encode_table[((input_u64 >> 16) & LOW_SIX_BITS) as usize]; - - let input_u64 = read_u64(&input_chunk[12..]); - - output_chunk[16] = encode_table[((input_u64 >> 58) & LOW_SIX_BITS) as usize]; - output_chunk[17] = encode_table[((input_u64 >> 52) & LOW_SIX_BITS) as usize]; - output_chunk[18] = encode_table[((input_u64 >> 46) & LOW_SIX_BITS) as usize]; - output_chunk[19] = encode_table[((input_u64 >> 40) & LOW_SIX_BITS) as usize]; - output_chunk[20] = encode_table[((input_u64 >> 34) & LOW_SIX_BITS) as usize]; - output_chunk[21] = encode_table[((input_u64 >> 28) & LOW_SIX_BITS) as usize]; - output_chunk[22] = encode_table[((input_u64 >> 22) & LOW_SIX_BITS) as usize]; - output_chunk[23] = encode_table[((input_u64 >> 16) & LOW_SIX_BITS) as usize]; - - let input_u64 = read_u64(&input_chunk[18..]); - - output_chunk[24] = encode_table[((input_u64 >> 58) & LOW_SIX_BITS) as usize]; - output_chunk[25] = encode_table[((input_u64 >> 52) & LOW_SIX_BITS) as usize]; - output_chunk[26] = encode_table[((input_u64 >> 46) & LOW_SIX_BITS) as usize]; - output_chunk[27] = encode_table[((input_u64 >> 40) & LOW_SIX_BITS) as usize]; - output_chunk[28] = encode_table[((input_u64 >> 34) & LOW_SIX_BITS) as usize]; - output_chunk[29] = encode_table[((input_u64 >> 28) & LOW_SIX_BITS) as usize]; - output_chunk[30] = encode_table[((input_u64 >> 22) & LOW_SIX_BITS) as usize]; - output_chunk[31] = encode_table[((input_u64 >> 16) & LOW_SIX_BITS) as usize]; - - output_index += BLOCKS_PER_FAST_LOOP * 8; - input_index += BLOCKS_PER_FAST_LOOP * 6; - } - } - - // Encode what's left after the fast loop. - - const LOW_SIX_BITS_U8: u8 = 0x3F; - - let rem = input.len() % 3; - let start_of_rem = input.len() - rem; - - // start at the first index not handled by fast loop, which may be 0. - - while input_index < start_of_rem { - let input_chunk = &input[input_index..(input_index + 3)]; - let output_chunk = &mut output[output_index..(output_index + 4)]; - - output_chunk[0] = encode_table[(input_chunk[0] >> 2) as usize]; - output_chunk[1] = - encode_table[((input_chunk[0] << 4 | input_chunk[1] >> 4) & LOW_SIX_BITS_U8) as usize]; - output_chunk[2] = - encode_table[((input_chunk[1] << 2 | input_chunk[2] >> 6) & LOW_SIX_BITS_U8) as usize]; - output_chunk[3] = encode_table[(input_chunk[2] & LOW_SIX_BITS_U8) as usize]; - - input_index += 3; - output_index += 4; - } - - if rem == 2 { - output[output_index] = encode_table[(input[start_of_rem] >> 2) as usize]; - output[output_index + 1] = encode_table[((input[start_of_rem] << 4 - | input[start_of_rem + 1] >> 4) - & LOW_SIX_BITS_U8) as usize]; - output[output_index + 2] = - encode_table[((input[start_of_rem + 1] << 2) & LOW_SIX_BITS_U8) as usize]; - output_index += 3; - } else if rem == 1 { - output[output_index] = encode_table[(input[start_of_rem] >> 2) as usize]; - output[output_index + 1] = - encode_table[((input[start_of_rem] << 4) & LOW_SIX_BITS_U8) as usize]; - output_index += 2; - } - - output_index -} - -/// calculate the base64 encoded string size, including padding if appropriate -pub fn encoded_size(bytes_len: usize, config: Config) -> Option { - let rem = bytes_len % 3; - - let complete_input_chunks = bytes_len / 3; - let complete_chunk_output = complete_input_chunks.checked_mul(4); - - if rem > 0 { - if config.pad { - complete_chunk_output.and_then(|c| c.checked_add(4)) - } else { - let encoded_rem = match rem { - 1 => 2, - 2 => 3, - _ => unreachable!("Impossible remainder"), - }; - complete_chunk_output.and_then(|c| c.checked_add(encoded_rem)) - } - } else { - complete_chunk_output - } -} - -/// Write padding characters. -/// `output` is the slice where padding should be written, of length at least 2. -/// -/// Returns the number of padding bytes written. -pub fn add_padding(input_len: usize, output: &mut [u8]) -> usize { - let rem = input_len % 3; - let mut bytes_written = 0; - for _ in 0..((3 - rem) % 3) { - output[bytes_written] = PAD_BYTE; - bytes_written += 1; - } - - bytes_written -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::{ - decode::decode_config_buf, - tests::{assert_encode_sanity, random_config}, - Config, STANDARD, URL_SAFE_NO_PAD, - }; - - use rand::{ - distributions::{Distribution, Uniform}, - FromEntropy, Rng, - }; - use std; - use std::str; - - #[test] - fn encoded_size_correct_standard() { - assert_encoded_length(0, 0, STANDARD); - - assert_encoded_length(1, 4, STANDARD); - assert_encoded_length(2, 4, STANDARD); - assert_encoded_length(3, 4, STANDARD); - - assert_encoded_length(4, 8, STANDARD); - assert_encoded_length(5, 8, STANDARD); - assert_encoded_length(6, 8, STANDARD); - - assert_encoded_length(7, 12, STANDARD); - assert_encoded_length(8, 12, STANDARD); - assert_encoded_length(9, 12, STANDARD); - - assert_encoded_length(54, 72, STANDARD); - - assert_encoded_length(55, 76, STANDARD); - assert_encoded_length(56, 76, STANDARD); - assert_encoded_length(57, 76, STANDARD); - - assert_encoded_length(58, 80, STANDARD); - } - - #[test] - fn encoded_size_correct_no_pad() { - assert_encoded_length(0, 0, URL_SAFE_NO_PAD); - - assert_encoded_length(1, 2, URL_SAFE_NO_PAD); - assert_encoded_length(2, 3, URL_SAFE_NO_PAD); - assert_encoded_length(3, 4, URL_SAFE_NO_PAD); - - assert_encoded_length(4, 6, URL_SAFE_NO_PAD); - assert_encoded_length(5, 7, URL_SAFE_NO_PAD); - assert_encoded_length(6, 8, URL_SAFE_NO_PAD); - - assert_encoded_length(7, 10, URL_SAFE_NO_PAD); - assert_encoded_length(8, 11, URL_SAFE_NO_PAD); - assert_encoded_length(9, 12, URL_SAFE_NO_PAD); - - assert_encoded_length(54, 72, URL_SAFE_NO_PAD); - - assert_encoded_length(55, 74, URL_SAFE_NO_PAD); - assert_encoded_length(56, 75, URL_SAFE_NO_PAD); - assert_encoded_length(57, 76, URL_SAFE_NO_PAD); - - assert_encoded_length(58, 78, URL_SAFE_NO_PAD); - } - - #[test] - fn encoded_size_overflow() { - assert_eq!(None, encoded_size(std::usize::MAX, STANDARD)); - } - - #[test] - fn encode_config_buf_into_nonempty_buffer_doesnt_clobber_prefix() { - let mut orig_data = Vec::new(); - let mut prefix = String::new(); - let mut encoded_data_no_prefix = String::new(); - let mut encoded_data_with_prefix = String::new(); - let mut decoded = Vec::new(); - - let prefix_len_range = Uniform::new(0, 1000); - let input_len_range = Uniform::new(0, 1000); - - let mut rng = rand::rngs::SmallRng::from_entropy(); - - for _ in 0..10_000 { - orig_data.clear(); - prefix.clear(); - encoded_data_no_prefix.clear(); - encoded_data_with_prefix.clear(); - decoded.clear(); - - let input_len = input_len_range.sample(&mut rng); - - for _ in 0..input_len { - orig_data.push(rng.gen()); - } - - let prefix_len = prefix_len_range.sample(&mut rng); - for _ in 0..prefix_len { - // getting convenient random single-byte printable chars that aren't base64 is - // annoying - prefix.push('#'); - } - encoded_data_with_prefix.push_str(&prefix); - - let config = random_config(&mut rng); - encode_config_buf(&orig_data, config, &mut encoded_data_no_prefix); - encode_config_buf(&orig_data, config, &mut encoded_data_with_prefix); - - assert_eq!( - encoded_data_no_prefix.len() + prefix_len, - encoded_data_with_prefix.len() - ); - assert_encode_sanity(&encoded_data_no_prefix, config, input_len); - assert_encode_sanity(&encoded_data_with_prefix[prefix_len..], config, input_len); - - // append plain encode onto prefix - prefix.push_str(&mut encoded_data_no_prefix); - - assert_eq!(prefix, encoded_data_with_prefix); - - decode_config_buf(&encoded_data_no_prefix, config, &mut decoded).unwrap(); - assert_eq!(orig_data, decoded); - } - } - - #[test] - fn encode_config_slice_into_nonempty_buffer_doesnt_clobber_suffix() { - let mut orig_data = Vec::new(); - let mut encoded_data = Vec::new(); - let mut encoded_data_original_state = Vec::new(); - let mut decoded = Vec::new(); - - let input_len_range = Uniform::new(0, 1000); - - let mut rng = rand::rngs::SmallRng::from_entropy(); - - for _ in 0..10_000 { - orig_data.clear(); - encoded_data.clear(); - encoded_data_original_state.clear(); - decoded.clear(); - - let input_len = input_len_range.sample(&mut rng); - - for _ in 0..input_len { - orig_data.push(rng.gen()); - } - - // plenty of existing garbage in the encoded buffer - for _ in 0..10 * input_len { - encoded_data.push(rng.gen()); - } - - encoded_data_original_state.extend_from_slice(&encoded_data); - - let config = random_config(&mut rng); - - let encoded_size = encoded_size(input_len, config).unwrap(); - - assert_eq!( - encoded_size, - encode_config_slice(&orig_data, config, &mut encoded_data) - ); - - assert_encode_sanity( - std::str::from_utf8(&encoded_data[0..encoded_size]).unwrap(), - config, - input_len, - ); - - assert_eq!( - &encoded_data[encoded_size..], - &encoded_data_original_state[encoded_size..] - ); - - decode_config_buf(&encoded_data[0..encoded_size], config, &mut decoded).unwrap(); - assert_eq!(orig_data, decoded); - } - } - - #[test] - fn encode_config_slice_fits_into_precisely_sized_slice() { - let mut orig_data = Vec::new(); - let mut encoded_data = Vec::new(); - let mut decoded = Vec::new(); - - let input_len_range = Uniform::new(0, 1000); - - let mut rng = rand::rngs::SmallRng::from_entropy(); - - for _ in 0..10_000 { - orig_data.clear(); - encoded_data.clear(); - decoded.clear(); - - let input_len = input_len_range.sample(&mut rng); - - for _ in 0..input_len { - orig_data.push(rng.gen()); - } - - let config = random_config(&mut rng); - - let encoded_size = encoded_size(input_len, config).unwrap(); - - encoded_data.resize(encoded_size, 0); - - assert_eq!( - encoded_size, - encode_config_slice(&orig_data, config, &mut encoded_data) - ); - - assert_encode_sanity( - std::str::from_utf8(&encoded_data[0..encoded_size]).unwrap(), - config, - input_len, - ); - - decode_config_buf(&encoded_data[0..encoded_size], config, &mut decoded).unwrap(); - assert_eq!(orig_data, decoded); - } - } - - #[test] - fn encode_to_slice_random_valid_utf8() { - let mut input = Vec::new(); - let mut output = Vec::new(); - - let input_len_range = Uniform::new(0, 1000); - - let mut rng = rand::rngs::SmallRng::from_entropy(); - - for _ in 0..10_000 { - input.clear(); - output.clear(); - - let input_len = input_len_range.sample(&mut rng); - - for _ in 0..input_len { - input.push(rng.gen()); - } - - let config = random_config(&mut rng); - - // fill up the output buffer with garbage - let encoded_size = encoded_size(input_len, config).unwrap(); - for _ in 0..encoded_size { - output.push(rng.gen()); - } - - let orig_output_buf = output.to_vec(); - - let bytes_written = - encode_to_slice(&input, &mut output, config.char_set.encode_table()); - - // make sure the part beyond bytes_written is the same garbage it was before - assert_eq!(orig_output_buf[bytes_written..], output[bytes_written..]); - - // make sure the encoded bytes are UTF-8 - let _ = str::from_utf8(&output[0..bytes_written]).unwrap(); - } - } - - #[test] - fn encode_with_padding_random_valid_utf8() { - let mut input = Vec::new(); - let mut output = Vec::new(); - - let input_len_range = Uniform::new(0, 1000); - - let mut rng = rand::rngs::SmallRng::from_entropy(); - - for _ in 0..10_000 { - input.clear(); - output.clear(); - - let input_len = input_len_range.sample(&mut rng); - - for _ in 0..input_len { - input.push(rng.gen()); - } - - let config = random_config(&mut rng); - - // fill up the output buffer with garbage - let encoded_size = encoded_size(input_len, config).unwrap(); - for _ in 0..encoded_size + 1000 { - output.push(rng.gen()); - } - - let orig_output_buf = output.to_vec(); - - encode_with_padding(&input, config, encoded_size, &mut output[0..encoded_size]); - - // make sure the part beyond b64 is the same garbage it was before - assert_eq!(orig_output_buf[encoded_size..], output[encoded_size..]); - - // make sure the encoded bytes are UTF-8 - let _ = str::from_utf8(&output[0..encoded_size]).unwrap(); - } - } - - #[test] - fn add_padding_random_valid_utf8() { - let mut output = Vec::new(); - - let mut rng = rand::rngs::SmallRng::from_entropy(); - - // cover our bases for length % 3 - for input_len in 0..10 { - output.clear(); - - // fill output with random - for _ in 0..10 { - output.push(rng.gen()); - } - - let orig_output_buf = output.to_vec(); - - let bytes_written = add_padding(input_len, &mut output); - - // make sure the part beyond bytes_written is the same garbage it was before - assert_eq!(orig_output_buf[bytes_written..], output[bytes_written..]); - - // make sure the encoded bytes are UTF-8 - let _ = str::from_utf8(&output[0..bytes_written]).unwrap(); - } - } - - fn assert_encoded_length(input_len: usize, encoded_len: usize, config: Config) { - assert_eq!(encoded_len, encoded_size(input_len, config).unwrap()); - - let mut bytes: Vec = Vec::new(); - let mut rng = rand::rngs::SmallRng::from_entropy(); - - for _ in 0..input_len { - bytes.push(rng.gen()); - } - - let encoded = encode_config(&bytes, config); - assert_encode_sanity(&encoded, config, input_len); - - assert_eq!(encoded_len, encoded.len()); - } - - #[test] - fn encode_imap() { - assert_eq!( - encode_config(b"\xFB\xFF", crate::IMAP_MUTF7), - encode_config(b"\xFB\xFF", crate::STANDARD_NO_PAD).replace("/", ",") - ); - } -} diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/src/lib.rs temporalio-1.3.0/vendor/base64-0.13.1/src/lib.rs --- temporalio-1.3.0/vendor/base64-0.13.1/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,245 +0,0 @@ -//! # Configs -//! -//! There isn't just one type of Base64; that would be too simple. You need to choose a character -//! set (standard, URL-safe, etc) and padding suffix (yes/no). -//! The `Config` struct encapsulates this info. There are some common configs included: `STANDARD`, -//! `URL_SAFE`, etc. You can also make your own `Config` if needed. -//! -//! The functions that don't have `config` in the name (e.g. `encode()` and `decode()`) use the -//! `STANDARD` config . -//! -//! The functions that write to a slice (the ones that end in `_slice`) are generally the fastest -//! because they don't need to resize anything. If it fits in your workflow and you care about -//! performance, keep using the same buffer (growing as need be) and use the `_slice` methods for -//! the best performance. -//! -//! # Encoding -//! -//! Several different encoding functions are available to you depending on your desire for -//! convenience vs performance. -//! -//! | Function | Output | Allocates | -//! | ----------------------- | ---------------------------- | ------------------------------ | -//! | `encode` | Returns a new `String` | Always | -//! | `encode_config` | Returns a new `String` | Always | -//! | `encode_config_buf` | Appends to provided `String` | Only if `String` needs to grow | -//! | `encode_config_slice` | Writes to provided `&[u8]` | Never | -//! -//! All of the encoding functions that take a `Config` will pad as per the config. -//! -//! # Decoding -//! -//! Just as for encoding, there are different decoding functions available. -//! -//! | Function | Output | Allocates | -//! | ----------------------- | ----------------------------- | ------------------------------ | -//! | `decode` | Returns a new `Vec` | Always | -//! | `decode_config` | Returns a new `Vec` | Always | -//! | `decode_config_buf` | Appends to provided `Vec` | Only if `Vec` needs to grow | -//! | `decode_config_slice` | Writes to provided `&[u8]` | Never | -//! -//! Unlike encoding, where all possible input is valid, decoding can fail (see `DecodeError`). -//! -//! Input can be invalid because it has invalid characters or invalid padding. (No padding at all is -//! valid, but excess padding is not.) Whitespace in the input is invalid. -//! -//! # `Read` and `Write` -//! -//! To map a `Read` of b64 bytes to the decoded bytes, wrap a reader (file, network socket, etc) -//! with `base64::read::DecoderReader`. To write raw bytes and have them b64 encoded on the fly, -//! wrap a writer with `base64::write::EncoderWriter`. There is some performance overhead (15% or -//! so) because of the necessary buffer shuffling -- still fast enough that almost nobody cares. -//! Also, these implementations do not heap allocate. -//! -//! # Panics -//! -//! If length calculations result in overflowing `usize`, a panic will result. -//! -//! The `_slice` flavors of encode or decode will panic if the provided output slice is too small, - -#![cfg_attr(feature = "cargo-clippy", allow(clippy::cast_lossless))] -#![deny( - missing_docs, - trivial_casts, - trivial_numeric_casts, - unused_extern_crates, - unused_import_braces, - unused_results, - variant_size_differences, - warnings -)] -#![forbid(unsafe_code)] -#![cfg_attr(not(any(feature = "std", test)), no_std)] - -#[cfg(all(feature = "alloc", not(any(feature = "std", test))))] -extern crate alloc; -#[cfg(any(feature = "std", test))] -extern crate std as alloc; - -mod chunked_encoder; -pub mod display; -#[cfg(any(feature = "std", test))] -pub mod read; -mod tables; -#[cfg(any(feature = "std", test))] -pub mod write; - -mod encode; -pub use crate::encode::encode_config_slice; -#[cfg(any(feature = "alloc", feature = "std", test))] -pub use crate::encode::{encode, encode_config, encode_config_buf}; - -mod decode; -#[cfg(any(feature = "alloc", feature = "std", test))] -pub use crate::decode::{decode, decode_config, decode_config_buf}; -pub use crate::decode::{decode_config_slice, DecodeError}; - -#[cfg(test)] -mod tests; - -/// Available encoding character sets -#[derive(Clone, Copy, Debug)] -pub enum CharacterSet { - /// The standard character set (uses `+` and `/`). - /// - /// See [RFC 3548](https://tools.ietf.org/html/rfc3548#section-3). - Standard, - /// The URL safe character set (uses `-` and `_`). - /// - /// See [RFC 3548](https://tools.ietf.org/html/rfc3548#section-4). - UrlSafe, - /// The `crypt(3)` character set (uses `./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`). - /// - /// Not standardized, but folk wisdom on the net asserts that this alphabet is what crypt uses. - Crypt, - /// The bcrypt character set (uses `./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`). - Bcrypt, - /// The character set used in IMAP-modified UTF-7 (uses `+` and `,`). - /// - /// See [RFC 3501](https://tools.ietf.org/html/rfc3501#section-5.1.3) - ImapMutf7, - /// The character set used in BinHex 4.0 files. - /// - /// See [BinHex 4.0 Definition](http://files.stairways.com/other/binhex-40-specs-info.txt) - BinHex, -} - -impl CharacterSet { - fn encode_table(self) -> &'static [u8; 64] { - match self { - CharacterSet::Standard => tables::STANDARD_ENCODE, - CharacterSet::UrlSafe => tables::URL_SAFE_ENCODE, - CharacterSet::Crypt => tables::CRYPT_ENCODE, - CharacterSet::Bcrypt => tables::BCRYPT_ENCODE, - CharacterSet::ImapMutf7 => tables::IMAP_MUTF7_ENCODE, - CharacterSet::BinHex => tables::BINHEX_ENCODE, - } - } - - fn decode_table(self) -> &'static [u8; 256] { - match self { - CharacterSet::Standard => tables::STANDARD_DECODE, - CharacterSet::UrlSafe => tables::URL_SAFE_DECODE, - CharacterSet::Crypt => tables::CRYPT_DECODE, - CharacterSet::Bcrypt => tables::BCRYPT_DECODE, - CharacterSet::ImapMutf7 => tables::IMAP_MUTF7_DECODE, - CharacterSet::BinHex => tables::BINHEX_DECODE, - } - } -} - -/// Contains configuration parameters for base64 encoding -#[derive(Clone, Copy, Debug)] -pub struct Config { - /// Character set to use - char_set: CharacterSet, - /// True to pad output with `=` characters - pad: bool, - /// True to ignore excess nonzero bits in the last few symbols, otherwise an error is returned. - decode_allow_trailing_bits: bool, -} - -impl Config { - /// Create a new `Config`. - pub const fn new(char_set: CharacterSet, pad: bool) -> Config { - Config { - char_set, - pad, - decode_allow_trailing_bits: false, - } - } - - /// Sets whether to pad output with `=` characters. - pub const fn pad(self, pad: bool) -> Config { - Config { pad, ..self } - } - - /// Sets whether to emit errors for nonzero trailing bits. - /// - /// This is useful when implementing - /// [forgiving-base64 decode](https://infra.spec.whatwg.org/#forgiving-base64-decode). - pub const fn decode_allow_trailing_bits(self, allow: bool) -> Config { - Config { - decode_allow_trailing_bits: allow, - ..self - } - } -} - -/// Standard character set with padding. -pub const STANDARD: Config = Config { - char_set: CharacterSet::Standard, - pad: true, - decode_allow_trailing_bits: false, -}; - -/// Standard character set without padding. -pub const STANDARD_NO_PAD: Config = Config { - char_set: CharacterSet::Standard, - pad: false, - decode_allow_trailing_bits: false, -}; - -/// URL-safe character set with padding -pub const URL_SAFE: Config = Config { - char_set: CharacterSet::UrlSafe, - pad: true, - decode_allow_trailing_bits: false, -}; - -/// URL-safe character set without padding -pub const URL_SAFE_NO_PAD: Config = Config { - char_set: CharacterSet::UrlSafe, - pad: false, - decode_allow_trailing_bits: false, -}; - -/// As per `crypt(3)` requirements -pub const CRYPT: Config = Config { - char_set: CharacterSet::Crypt, - pad: false, - decode_allow_trailing_bits: false, -}; - -/// Bcrypt character set -pub const BCRYPT: Config = Config { - char_set: CharacterSet::Bcrypt, - pad: false, - decode_allow_trailing_bits: false, -}; - -/// IMAP modified UTF-7 requirements -pub const IMAP_MUTF7: Config = Config { - char_set: CharacterSet::ImapMutf7, - pad: false, - decode_allow_trailing_bits: false, -}; - -/// BinHex character set -pub const BINHEX: Config = Config { - char_set: CharacterSet::BinHex, - pad: false, - decode_allow_trailing_bits: false, -}; - -const PAD_BYTE: u8 = b'='; diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/src/read/decoder.rs temporalio-1.3.0/vendor/base64-0.13.1/src/read/decoder.rs --- temporalio-1.3.0/vendor/base64-0.13.1/src/read/decoder.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/src/read/decoder.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,282 +0,0 @@ -use crate::{decode_config_slice, Config, DecodeError}; -use std::io::Read; -use std::{cmp, fmt, io}; - -// This should be large, but it has to fit on the stack. -pub(crate) const BUF_SIZE: usize = 1024; - -// 4 bytes of base64 data encode 3 bytes of raw data (modulo padding). -const BASE64_CHUNK_SIZE: usize = 4; -const DECODED_CHUNK_SIZE: usize = 3; - -/// A `Read` implementation that decodes base64 data read from an underlying reader. -/// -/// # Examples -/// -/// ``` -/// use std::io::Read; -/// use std::io::Cursor; -/// -/// // use a cursor as the simplest possible `Read` -- in real code this is probably a file, etc. -/// let mut wrapped_reader = Cursor::new(b"YXNkZg=="); -/// let mut decoder = base64::read::DecoderReader::new( -/// &mut wrapped_reader, base64::STANDARD); -/// -/// // handle errors as you normally would -/// let mut result = Vec::new(); -/// decoder.read_to_end(&mut result).unwrap(); -/// -/// assert_eq!(b"asdf", &result[..]); -/// -/// ``` -pub struct DecoderReader<'a, R: 'a + io::Read> { - config: Config, - /// Where b64 data is read from - r: &'a mut R, - - // Holds b64 data read from the delegate reader. - b64_buffer: [u8; BUF_SIZE], - // The start of the pending buffered data in b64_buffer. - b64_offset: usize, - // The amount of buffered b64 data. - b64_len: usize, - // Since the caller may provide us with a buffer of size 1 or 2 that's too small to copy a - // decoded chunk in to, we have to be able to hang on to a few decoded bytes. - // Technically we only need to hold 2 bytes but then we'd need a separate temporary buffer to - // decode 3 bytes into and then juggle copying one byte into the provided read buf and the rest - // into here, which seems like a lot of complexity for 1 extra byte of storage. - decoded_buffer: [u8; 3], - // index of start of decoded data - decoded_offset: usize, - // length of decoded data - decoded_len: usize, - // used to provide accurate offsets in errors - total_b64_decoded: usize, -} - -impl<'a, R: io::Read> fmt::Debug for DecoderReader<'a, R> { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - f.debug_struct("DecoderReader") - .field("config", &self.config) - .field("b64_offset", &self.b64_offset) - .field("b64_len", &self.b64_len) - .field("decoded_buffer", &self.decoded_buffer) - .field("decoded_offset", &self.decoded_offset) - .field("decoded_len", &self.decoded_len) - .field("total_b64_decoded", &self.total_b64_decoded) - .finish() - } -} - -impl<'a, R: io::Read> DecoderReader<'a, R> { - /// Create a new decoder that will read from the provided reader `r`. - pub fn new(r: &'a mut R, config: Config) -> Self { - DecoderReader { - config, - r, - b64_buffer: [0; BUF_SIZE], - b64_offset: 0, - b64_len: 0, - decoded_buffer: [0; DECODED_CHUNK_SIZE], - decoded_offset: 0, - decoded_len: 0, - total_b64_decoded: 0, - } - } - - /// Write as much as possible of the decoded buffer into the target buffer. - /// Must only be called when there is something to write and space to write into. - /// Returns a Result with the number of (decoded) bytes copied. - fn flush_decoded_buf(&mut self, buf: &mut [u8]) -> io::Result { - debug_assert!(self.decoded_len > 0); - debug_assert!(buf.len() > 0); - - let copy_len = cmp::min(self.decoded_len, buf.len()); - debug_assert!(copy_len > 0); - debug_assert!(copy_len <= self.decoded_len); - - buf[..copy_len].copy_from_slice( - &self.decoded_buffer[self.decoded_offset..self.decoded_offset + copy_len], - ); - - self.decoded_offset += copy_len; - self.decoded_len -= copy_len; - - debug_assert!(self.decoded_len < DECODED_CHUNK_SIZE); - - Ok(copy_len) - } - - /// Read into the remaining space in the buffer after the current contents. - /// Must only be called when there is space to read into in the buffer. - /// Returns the number of bytes read. - fn read_from_delegate(&mut self) -> io::Result { - debug_assert!(self.b64_offset + self.b64_len < BUF_SIZE); - - let read = self - .r - .read(&mut self.b64_buffer[self.b64_offset + self.b64_len..])?; - self.b64_len += read; - - debug_assert!(self.b64_offset + self.b64_len <= BUF_SIZE); - - return Ok(read); - } - - /// Decode the requested number of bytes from the b64 buffer into the provided buffer. It's the - /// caller's responsibility to choose the number of b64 bytes to decode correctly. - /// - /// Returns a Result with the number of decoded bytes written to `buf`. - fn decode_to_buf(&mut self, num_bytes: usize, buf: &mut [u8]) -> io::Result { - debug_assert!(self.b64_len >= num_bytes); - debug_assert!(self.b64_offset + self.b64_len <= BUF_SIZE); - debug_assert!(buf.len() > 0); - - let decoded = decode_config_slice( - &self.b64_buffer[self.b64_offset..self.b64_offset + num_bytes], - self.config, - &mut buf[..], - ) - .map_err(|e| match e { - DecodeError::InvalidByte(offset, byte) => { - DecodeError::InvalidByte(self.total_b64_decoded + offset, byte) - } - DecodeError::InvalidLength => DecodeError::InvalidLength, - DecodeError::InvalidLastSymbol(offset, byte) => { - DecodeError::InvalidLastSymbol(self.total_b64_decoded + offset, byte) - } - }) - .map_err(|e| io::Error::new(io::ErrorKind::InvalidData, e))?; - - self.total_b64_decoded += num_bytes; - self.b64_offset += num_bytes; - self.b64_len -= num_bytes; - - debug_assert!(self.b64_offset + self.b64_len <= BUF_SIZE); - - Ok(decoded) - } -} - -impl<'a, R: Read> Read for DecoderReader<'a, R> { - /// Decode input from the wrapped reader. - /// - /// Under non-error circumstances, this returns `Ok` with the value being the number of bytes - /// written in `buf`. - /// - /// Where possible, this function buffers base64 to minimize the number of read() calls to the - /// delegate reader. - /// - /// # Errors - /// - /// Any errors emitted by the delegate reader are returned. Decoding errors due to invalid - /// base64 are also possible, and will have `io::ErrorKind::InvalidData`. - fn read(&mut self, buf: &mut [u8]) -> io::Result { - if buf.len() == 0 { - return Ok(0); - } - - // offset == BUF_SIZE when we copied it all last time - debug_assert!(self.b64_offset <= BUF_SIZE); - debug_assert!(self.b64_offset + self.b64_len <= BUF_SIZE); - debug_assert!(if self.b64_offset == BUF_SIZE { - self.b64_len == 0 - } else { - self.b64_len <= BUF_SIZE - }); - - debug_assert!(if self.decoded_len == 0 { - // can be = when we were able to copy the complete chunk - self.decoded_offset <= DECODED_CHUNK_SIZE - } else { - self.decoded_offset < DECODED_CHUNK_SIZE - }); - - // We shouldn't ever decode into here when we can't immediately write at least one byte into - // the provided buf, so the effective length should only be 3 momentarily between when we - // decode and when we copy into the target buffer. - debug_assert!(self.decoded_len < DECODED_CHUNK_SIZE); - debug_assert!(self.decoded_len + self.decoded_offset <= DECODED_CHUNK_SIZE); - - if self.decoded_len > 0 { - // we have a few leftover decoded bytes; flush that rather than pull in more b64 - self.flush_decoded_buf(buf) - } else { - let mut at_eof = false; - while self.b64_len < BASE64_CHUNK_SIZE { - // Work around lack of copy_within, which is only present in 1.37 - // Copy any bytes we have to the start of the buffer. - // We know we have < 1 chunk, so we can use a tiny tmp buffer. - let mut memmove_buf = [0_u8; BASE64_CHUNK_SIZE]; - memmove_buf[..self.b64_len].copy_from_slice( - &self.b64_buffer[self.b64_offset..self.b64_offset + self.b64_len], - ); - self.b64_buffer[0..self.b64_len].copy_from_slice(&memmove_buf[..self.b64_len]); - self.b64_offset = 0; - - // then fill in more data - let read = self.read_from_delegate()?; - if read == 0 { - // we never pass in an empty buf, so 0 => we've hit EOF - at_eof = true; - break; - } - } - - if self.b64_len == 0 { - debug_assert!(at_eof); - // we must be at EOF, and we have no data left to decode - return Ok(0); - }; - - debug_assert!(if at_eof { - // if we are at eof, we may not have a complete chunk - self.b64_len > 0 - } else { - // otherwise, we must have at least one chunk - self.b64_len >= BASE64_CHUNK_SIZE - }); - - debug_assert_eq!(0, self.decoded_len); - - if buf.len() < DECODED_CHUNK_SIZE { - // caller requested an annoyingly short read - // have to write to a tmp buf first to avoid double mutable borrow - let mut decoded_chunk = [0_u8; DECODED_CHUNK_SIZE]; - // if we are at eof, could have less than BASE64_CHUNK_SIZE, in which case we have - // to assume that these last few tokens are, in fact, valid (i.e. must be 2-4 b64 - // tokens, not 1, since 1 token can't decode to 1 byte). - let to_decode = cmp::min(self.b64_len, BASE64_CHUNK_SIZE); - - let decoded = self.decode_to_buf(to_decode, &mut decoded_chunk[..])?; - self.decoded_buffer[..decoded].copy_from_slice(&decoded_chunk[..decoded]); - - self.decoded_offset = 0; - self.decoded_len = decoded; - - // can be less than 3 on last block due to padding - debug_assert!(decoded <= 3); - - self.flush_decoded_buf(buf) - } else { - let b64_bytes_that_can_decode_into_buf = (buf.len() / DECODED_CHUNK_SIZE) - .checked_mul(BASE64_CHUNK_SIZE) - .expect("too many chunks"); - debug_assert!(b64_bytes_that_can_decode_into_buf >= BASE64_CHUNK_SIZE); - - let b64_bytes_available_to_decode = if at_eof { - self.b64_len - } else { - // only use complete chunks - self.b64_len - self.b64_len % 4 - }; - - let actual_decode_len = cmp::min( - b64_bytes_that_can_decode_into_buf, - b64_bytes_available_to_decode, - ); - self.decode_to_buf(actual_decode_len, buf) - } - } - } -} diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/src/read/decoder_tests.rs temporalio-1.3.0/vendor/base64-0.13.1/src/read/decoder_tests.rs --- temporalio-1.3.0/vendor/base64-0.13.1/src/read/decoder_tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/src/read/decoder_tests.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,335 +0,0 @@ -use std::io::{self, Read}; - -use rand::{Rng, RngCore}; -use std::{cmp, iter}; - -use super::decoder::{DecoderReader, BUF_SIZE}; -use crate::encode::encode_config_buf; -use crate::tests::random_config; -use crate::{decode_config_buf, DecodeError, STANDARD}; - -#[test] -fn simple() { - let tests: &[(&[u8], &[u8])] = &[ - (&b"0"[..], &b"MA=="[..]), - (b"01", b"MDE="), - (b"012", b"MDEy"), - (b"0123", b"MDEyMw=="), - (b"01234", b"MDEyMzQ="), - (b"012345", b"MDEyMzQ1"), - (b"0123456", b"MDEyMzQ1Ng=="), - (b"01234567", b"MDEyMzQ1Njc="), - (b"012345678", b"MDEyMzQ1Njc4"), - (b"0123456789", b"MDEyMzQ1Njc4OQ=="), - ][..]; - - for (text_expected, base64data) in tests.iter() { - // Read n bytes at a time. - for n in 1..base64data.len() + 1 { - let mut wrapped_reader = io::Cursor::new(base64data); - let mut decoder = DecoderReader::new(&mut wrapped_reader, STANDARD); - - // handle errors as you normally would - let mut text_got = Vec::new(); - let mut buffer = vec![0u8; n]; - while let Ok(read) = decoder.read(&mut buffer[..]) { - if read == 0 { - break; - } - text_got.extend_from_slice(&buffer[..read]); - } - - assert_eq!( - text_got, - *text_expected, - "\nGot: {}\nExpected: {}", - String::from_utf8_lossy(&text_got[..]), - String::from_utf8_lossy(text_expected) - ); - } - } -} - -// Make sure we error out on trailing junk. -#[test] -fn trailing_junk() { - let tests: &[&[u8]] = &[&b"MDEyMzQ1Njc4*!@#$%^&"[..], b"MDEyMzQ1Njc4OQ== "][..]; - - for base64data in tests.iter() { - // Read n bytes at a time. - for n in 1..base64data.len() + 1 { - let mut wrapped_reader = io::Cursor::new(base64data); - let mut decoder = DecoderReader::new(&mut wrapped_reader, STANDARD); - - // handle errors as you normally would - let mut buffer = vec![0u8; n]; - let mut saw_error = false; - loop { - match decoder.read(&mut buffer[..]) { - Err(_) => { - saw_error = true; - break; - } - Ok(read) if read == 0 => break, - Ok(_) => (), - } - } - - assert!(saw_error); - } - } -} - -#[test] -fn handles_short_read_from_delegate() { - let mut rng = rand::thread_rng(); - let mut bytes = Vec::new(); - let mut b64 = String::new(); - let mut decoded = Vec::new(); - - for _ in 0..10_000 { - bytes.clear(); - b64.clear(); - decoded.clear(); - - let size = rng.gen_range(0, 10 * BUF_SIZE); - bytes.extend(iter::repeat(0).take(size)); - bytes.truncate(size); - rng.fill_bytes(&mut bytes[..size]); - assert_eq!(size, bytes.len()); - - let config = random_config(&mut rng); - encode_config_buf(&bytes[..], config, &mut b64); - - let mut wrapped_reader = io::Cursor::new(b64.as_bytes()); - let mut short_reader = RandomShortRead { - delegate: &mut wrapped_reader, - rng: &mut rng, - }; - - let mut decoder = DecoderReader::new(&mut short_reader, config); - - let decoded_len = decoder.read_to_end(&mut decoded).unwrap(); - assert_eq!(size, decoded_len); - assert_eq!(&bytes[..], &decoded[..]); - } -} - -#[test] -fn read_in_short_increments() { - let mut rng = rand::thread_rng(); - let mut bytes = Vec::new(); - let mut b64 = String::new(); - let mut decoded = Vec::new(); - - for _ in 0..10_000 { - bytes.clear(); - b64.clear(); - decoded.clear(); - - let size = rng.gen_range(0, 10 * BUF_SIZE); - bytes.extend(iter::repeat(0).take(size)); - // leave room to play around with larger buffers - decoded.extend(iter::repeat(0).take(size * 3)); - - rng.fill_bytes(&mut bytes[..]); - assert_eq!(size, bytes.len()); - - let config = random_config(&mut rng); - - encode_config_buf(&bytes[..], config, &mut b64); - - let mut wrapped_reader = io::Cursor::new(&b64[..]); - let mut decoder = DecoderReader::new(&mut wrapped_reader, config); - - consume_with_short_reads_and_validate(&mut rng, &bytes[..], &mut decoded, &mut decoder); - } -} - -#[test] -fn read_in_short_increments_with_short_delegate_reads() { - let mut rng = rand::thread_rng(); - let mut bytes = Vec::new(); - let mut b64 = String::new(); - let mut decoded = Vec::new(); - - for _ in 0..10_000 { - bytes.clear(); - b64.clear(); - decoded.clear(); - - let size = rng.gen_range(0, 10 * BUF_SIZE); - bytes.extend(iter::repeat(0).take(size)); - // leave room to play around with larger buffers - decoded.extend(iter::repeat(0).take(size * 3)); - - rng.fill_bytes(&mut bytes[..]); - assert_eq!(size, bytes.len()); - - let config = random_config(&mut rng); - - encode_config_buf(&bytes[..], config, &mut b64); - - let mut base_reader = io::Cursor::new(&b64[..]); - let mut decoder = DecoderReader::new(&mut base_reader, config); - let mut short_reader = RandomShortRead { - delegate: &mut decoder, - rng: &mut rand::thread_rng(), - }; - - consume_with_short_reads_and_validate(&mut rng, &bytes[..], &mut decoded, &mut short_reader) - } -} - -#[test] -fn reports_invalid_last_symbol_correctly() { - let mut rng = rand::thread_rng(); - let mut bytes = Vec::new(); - let mut b64 = String::new(); - let mut b64_bytes = Vec::new(); - let mut decoded = Vec::new(); - let mut bulk_decoded = Vec::new(); - - for _ in 0..1_000 { - bytes.clear(); - b64.clear(); - b64_bytes.clear(); - - let size = rng.gen_range(1, 10 * BUF_SIZE); - bytes.extend(iter::repeat(0).take(size)); - decoded.extend(iter::repeat(0).take(size)); - rng.fill_bytes(&mut bytes[..]); - assert_eq!(size, bytes.len()); - - let mut config = random_config(&mut rng); - // changing padding will cause invalid padding errors when we twiddle the last byte - config.pad = false; - - encode_config_buf(&bytes[..], config, &mut b64); - b64_bytes.extend(b64.bytes()); - assert_eq!(b64_bytes.len(), b64.len()); - - // change the last character to every possible symbol. Should behave the same as bulk - // decoding whether invalid or valid. - for &s1 in config.char_set.encode_table().iter() { - decoded.clear(); - bulk_decoded.clear(); - - // replace the last - *b64_bytes.last_mut().unwrap() = s1; - let bulk_res = decode_config_buf(&b64_bytes[..], config, &mut bulk_decoded); - - let mut wrapped_reader = io::Cursor::new(&b64_bytes[..]); - let mut decoder = DecoderReader::new(&mut wrapped_reader, config); - - let stream_res = decoder.read_to_end(&mut decoded).map(|_| ()).map_err(|e| { - e.into_inner() - .and_then(|e| e.downcast::().ok()) - }); - - assert_eq!(bulk_res.map_err(|e| Some(Box::new(e))), stream_res); - } - } -} - -#[test] -fn reports_invalid_byte_correctly() { - let mut rng = rand::thread_rng(); - let mut bytes = Vec::new(); - let mut b64 = String::new(); - let mut decoded = Vec::new(); - - for _ in 0..10_000 { - bytes.clear(); - b64.clear(); - decoded.clear(); - - let size = rng.gen_range(1, 10 * BUF_SIZE); - bytes.extend(iter::repeat(0).take(size)); - rng.fill_bytes(&mut bytes[..size]); - assert_eq!(size, bytes.len()); - - let config = random_config(&mut rng); - encode_config_buf(&bytes[..], config, &mut b64); - // replace one byte, somewhere, with '*', which is invalid - let bad_byte_pos = rng.gen_range(0, &b64.len()); - let mut b64_bytes = b64.bytes().collect::>(); - b64_bytes[bad_byte_pos] = b'*'; - - let mut wrapped_reader = io::Cursor::new(b64_bytes.clone()); - let mut decoder = DecoderReader::new(&mut wrapped_reader, config); - - // some gymnastics to avoid double-moving the io::Error, which is not Copy - let read_decode_err = decoder - .read_to_end(&mut decoded) - .map_err(|e| { - let kind = e.kind(); - let inner = e - .into_inner() - .and_then(|e| e.downcast::().ok()); - inner.map(|i| (*i, kind)) - }) - .err() - .and_then(|o| o); - - let mut bulk_buf = Vec::new(); - let bulk_decode_err = decode_config_buf(&b64_bytes[..], config, &mut bulk_buf).err(); - - // it's tricky to predict where the invalid data's offset will be since if it's in the last - // chunk it will be reported at the first padding location because it's treated as invalid - // padding. So, we just check that it's the same as it is for decoding all at once. - assert_eq!( - bulk_decode_err.map(|e| (e, io::ErrorKind::InvalidData)), - read_decode_err - ); - } -} - -fn consume_with_short_reads_and_validate( - rng: &mut rand::rngs::ThreadRng, - expected_bytes: &[u8], - decoded: &mut Vec, - short_reader: &mut R, -) -> () { - let mut total_read = 0_usize; - loop { - assert!( - total_read <= expected_bytes.len(), - "tr {} size {}", - total_read, - expected_bytes.len() - ); - if total_read == expected_bytes.len() { - assert_eq!(expected_bytes, &decoded[..total_read]); - // should be done - assert_eq!(0, short_reader.read(&mut decoded[..]).unwrap()); - // didn't write anything - assert_eq!(expected_bytes, &decoded[..total_read]); - - break; - } - let decode_len = rng.gen_range(1, cmp::max(2, expected_bytes.len() * 2)); - - let read = short_reader - .read(&mut decoded[total_read..total_read + decode_len]) - .unwrap(); - total_read += read; - } -} - -/// Limits how many bytes a reader will provide in each read call. -/// Useful for shaking out code that may work fine only with typical input sources that always fill -/// the buffer. -struct RandomShortRead<'a, 'b, R: io::Read, N: rand::Rng> { - delegate: &'b mut R, - rng: &'a mut N, -} - -impl<'a, 'b, R: io::Read, N: rand::Rng> io::Read for RandomShortRead<'a, 'b, R, N> { - fn read(&mut self, buf: &mut [u8]) -> Result { - // avoid 0 since it means EOF for non-empty buffers - let effective_len = cmp::min(self.rng.gen_range(1, 20), buf.len()); - - self.delegate.read(&mut buf[..effective_len]) - } -} diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/src/read/mod.rs temporalio-1.3.0/vendor/base64-0.13.1/src/read/mod.rs --- temporalio-1.3.0/vendor/base64-0.13.1/src/read/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/src/read/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -//! Implementations of `io::Read` to transparently decode base64. -mod decoder; -pub use self::decoder::DecoderReader; - -#[cfg(test)] -mod decoder_tests; diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/src/tables.rs temporalio-1.3.0/vendor/base64-0.13.1/src/tables.rs --- temporalio-1.3.0/vendor/base64-0.13.1/src/tables.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/src/tables.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,1957 +0,0 @@ -pub const INVALID_VALUE: u8 = 255; -#[rustfmt::skip] -pub const STANDARD_ENCODE: &[u8; 64] = &[ - 65, // input 0 (0x0) => 'A' (0x41) - 66, // input 1 (0x1) => 'B' (0x42) - 67, // input 2 (0x2) => 'C' (0x43) - 68, // input 3 (0x3) => 'D' (0x44) - 69, // input 4 (0x4) => 'E' (0x45) - 70, // input 5 (0x5) => 'F' (0x46) - 71, // input 6 (0x6) => 'G' (0x47) - 72, // input 7 (0x7) => 'H' (0x48) - 73, // input 8 (0x8) => 'I' (0x49) - 74, // input 9 (0x9) => 'J' (0x4A) - 75, // input 10 (0xA) => 'K' (0x4B) - 76, // input 11 (0xB) => 'L' (0x4C) - 77, // input 12 (0xC) => 'M' (0x4D) - 78, // input 13 (0xD) => 'N' (0x4E) - 79, // input 14 (0xE) => 'O' (0x4F) - 80, // input 15 (0xF) => 'P' (0x50) - 81, // input 16 (0x10) => 'Q' (0x51) - 82, // input 17 (0x11) => 'R' (0x52) - 83, // input 18 (0x12) => 'S' (0x53) - 84, // input 19 (0x13) => 'T' (0x54) - 85, // input 20 (0x14) => 'U' (0x55) - 86, // input 21 (0x15) => 'V' (0x56) - 87, // input 22 (0x16) => 'W' (0x57) - 88, // input 23 (0x17) => 'X' (0x58) - 89, // input 24 (0x18) => 'Y' (0x59) - 90, // input 25 (0x19) => 'Z' (0x5A) - 97, // input 26 (0x1A) => 'a' (0x61) - 98, // input 27 (0x1B) => 'b' (0x62) - 99, // input 28 (0x1C) => 'c' (0x63) - 100, // input 29 (0x1D) => 'd' (0x64) - 101, // input 30 (0x1E) => 'e' (0x65) - 102, // input 31 (0x1F) => 'f' (0x66) - 103, // input 32 (0x20) => 'g' (0x67) - 104, // input 33 (0x21) => 'h' (0x68) - 105, // input 34 (0x22) => 'i' (0x69) - 106, // input 35 (0x23) => 'j' (0x6A) - 107, // input 36 (0x24) => 'k' (0x6B) - 108, // input 37 (0x25) => 'l' (0x6C) - 109, // input 38 (0x26) => 'm' (0x6D) - 110, // input 39 (0x27) => 'n' (0x6E) - 111, // input 40 (0x28) => 'o' (0x6F) - 112, // input 41 (0x29) => 'p' (0x70) - 113, // input 42 (0x2A) => 'q' (0x71) - 114, // input 43 (0x2B) => 'r' (0x72) - 115, // input 44 (0x2C) => 's' (0x73) - 116, // input 45 (0x2D) => 't' (0x74) - 117, // input 46 (0x2E) => 'u' (0x75) - 118, // input 47 (0x2F) => 'v' (0x76) - 119, // input 48 (0x30) => 'w' (0x77) - 120, // input 49 (0x31) => 'x' (0x78) - 121, // input 50 (0x32) => 'y' (0x79) - 122, // input 51 (0x33) => 'z' (0x7A) - 48, // input 52 (0x34) => '0' (0x30) - 49, // input 53 (0x35) => '1' (0x31) - 50, // input 54 (0x36) => '2' (0x32) - 51, // input 55 (0x37) => '3' (0x33) - 52, // input 56 (0x38) => '4' (0x34) - 53, // input 57 (0x39) => '5' (0x35) - 54, // input 58 (0x3A) => '6' (0x36) - 55, // input 59 (0x3B) => '7' (0x37) - 56, // input 60 (0x3C) => '8' (0x38) - 57, // input 61 (0x3D) => '9' (0x39) - 43, // input 62 (0x3E) => '+' (0x2B) - 47, // input 63 (0x3F) => '/' (0x2F) -]; -#[rustfmt::skip] -pub const STANDARD_DECODE: &[u8; 256] = &[ - INVALID_VALUE, // input 0 (0x0) - INVALID_VALUE, // input 1 (0x1) - INVALID_VALUE, // input 2 (0x2) - INVALID_VALUE, // input 3 (0x3) - INVALID_VALUE, // input 4 (0x4) - INVALID_VALUE, // input 5 (0x5) - INVALID_VALUE, // input 6 (0x6) - INVALID_VALUE, // input 7 (0x7) - INVALID_VALUE, // input 8 (0x8) - INVALID_VALUE, // input 9 (0x9) - INVALID_VALUE, // input 10 (0xA) - INVALID_VALUE, // input 11 (0xB) - INVALID_VALUE, // input 12 (0xC) - INVALID_VALUE, // input 13 (0xD) - INVALID_VALUE, // input 14 (0xE) - INVALID_VALUE, // input 15 (0xF) - INVALID_VALUE, // input 16 (0x10) - INVALID_VALUE, // input 17 (0x11) - INVALID_VALUE, // input 18 (0x12) - INVALID_VALUE, // input 19 (0x13) - INVALID_VALUE, // input 20 (0x14) - INVALID_VALUE, // input 21 (0x15) - INVALID_VALUE, // input 22 (0x16) - INVALID_VALUE, // input 23 (0x17) - INVALID_VALUE, // input 24 (0x18) - INVALID_VALUE, // input 25 (0x19) - INVALID_VALUE, // input 26 (0x1A) - INVALID_VALUE, // input 27 (0x1B) - INVALID_VALUE, // input 28 (0x1C) - INVALID_VALUE, // input 29 (0x1D) - INVALID_VALUE, // input 30 (0x1E) - INVALID_VALUE, // input 31 (0x1F) - INVALID_VALUE, // input 32 (0x20) - INVALID_VALUE, // input 33 (0x21) - INVALID_VALUE, // input 34 (0x22) - INVALID_VALUE, // input 35 (0x23) - INVALID_VALUE, // input 36 (0x24) - INVALID_VALUE, // input 37 (0x25) - INVALID_VALUE, // input 38 (0x26) - INVALID_VALUE, // input 39 (0x27) - INVALID_VALUE, // input 40 (0x28) - INVALID_VALUE, // input 41 (0x29) - INVALID_VALUE, // input 42 (0x2A) - 62, // input 43 (0x2B char '+') => 62 (0x3E) - INVALID_VALUE, // input 44 (0x2C) - INVALID_VALUE, // input 45 (0x2D) - INVALID_VALUE, // input 46 (0x2E) - 63, // input 47 (0x2F char '/') => 63 (0x3F) - 52, // input 48 (0x30 char '0') => 52 (0x34) - 53, // input 49 (0x31 char '1') => 53 (0x35) - 54, // input 50 (0x32 char '2') => 54 (0x36) - 55, // input 51 (0x33 char '3') => 55 (0x37) - 56, // input 52 (0x34 char '4') => 56 (0x38) - 57, // input 53 (0x35 char '5') => 57 (0x39) - 58, // input 54 (0x36 char '6') => 58 (0x3A) - 59, // input 55 (0x37 char '7') => 59 (0x3B) - 60, // input 56 (0x38 char '8') => 60 (0x3C) - 61, // input 57 (0x39 char '9') => 61 (0x3D) - INVALID_VALUE, // input 58 (0x3A) - INVALID_VALUE, // input 59 (0x3B) - INVALID_VALUE, // input 60 (0x3C) - INVALID_VALUE, // input 61 (0x3D) - INVALID_VALUE, // input 62 (0x3E) - INVALID_VALUE, // input 63 (0x3F) - INVALID_VALUE, // input 64 (0x40) - 0, // input 65 (0x41 char 'A') => 0 (0x0) - 1, // input 66 (0x42 char 'B') => 1 (0x1) - 2, // input 67 (0x43 char 'C') => 2 (0x2) - 3, // input 68 (0x44 char 'D') => 3 (0x3) - 4, // input 69 (0x45 char 'E') => 4 (0x4) - 5, // input 70 (0x46 char 'F') => 5 (0x5) - 6, // input 71 (0x47 char 'G') => 6 (0x6) - 7, // input 72 (0x48 char 'H') => 7 (0x7) - 8, // input 73 (0x49 char 'I') => 8 (0x8) - 9, // input 74 (0x4A char 'J') => 9 (0x9) - 10, // input 75 (0x4B char 'K') => 10 (0xA) - 11, // input 76 (0x4C char 'L') => 11 (0xB) - 12, // input 77 (0x4D char 'M') => 12 (0xC) - 13, // input 78 (0x4E char 'N') => 13 (0xD) - 14, // input 79 (0x4F char 'O') => 14 (0xE) - 15, // input 80 (0x50 char 'P') => 15 (0xF) - 16, // input 81 (0x51 char 'Q') => 16 (0x10) - 17, // input 82 (0x52 char 'R') => 17 (0x11) - 18, // input 83 (0x53 char 'S') => 18 (0x12) - 19, // input 84 (0x54 char 'T') => 19 (0x13) - 20, // input 85 (0x55 char 'U') => 20 (0x14) - 21, // input 86 (0x56 char 'V') => 21 (0x15) - 22, // input 87 (0x57 char 'W') => 22 (0x16) - 23, // input 88 (0x58 char 'X') => 23 (0x17) - 24, // input 89 (0x59 char 'Y') => 24 (0x18) - 25, // input 90 (0x5A char 'Z') => 25 (0x19) - INVALID_VALUE, // input 91 (0x5B) - INVALID_VALUE, // input 92 (0x5C) - INVALID_VALUE, // input 93 (0x5D) - INVALID_VALUE, // input 94 (0x5E) - INVALID_VALUE, // input 95 (0x5F) - INVALID_VALUE, // input 96 (0x60) - 26, // input 97 (0x61 char 'a') => 26 (0x1A) - 27, // input 98 (0x62 char 'b') => 27 (0x1B) - 28, // input 99 (0x63 char 'c') => 28 (0x1C) - 29, // input 100 (0x64 char 'd') => 29 (0x1D) - 30, // input 101 (0x65 char 'e') => 30 (0x1E) - 31, // input 102 (0x66 char 'f') => 31 (0x1F) - 32, // input 103 (0x67 char 'g') => 32 (0x20) - 33, // input 104 (0x68 char 'h') => 33 (0x21) - 34, // input 105 (0x69 char 'i') => 34 (0x22) - 35, // input 106 (0x6A char 'j') => 35 (0x23) - 36, // input 107 (0x6B char 'k') => 36 (0x24) - 37, // input 108 (0x6C char 'l') => 37 (0x25) - 38, // input 109 (0x6D char 'm') => 38 (0x26) - 39, // input 110 (0x6E char 'n') => 39 (0x27) - 40, // input 111 (0x6F char 'o') => 40 (0x28) - 41, // input 112 (0x70 char 'p') => 41 (0x29) - 42, // input 113 (0x71 char 'q') => 42 (0x2A) - 43, // input 114 (0x72 char 'r') => 43 (0x2B) - 44, // input 115 (0x73 char 's') => 44 (0x2C) - 45, // input 116 (0x74 char 't') => 45 (0x2D) - 46, // input 117 (0x75 char 'u') => 46 (0x2E) - 47, // input 118 (0x76 char 'v') => 47 (0x2F) - 48, // input 119 (0x77 char 'w') => 48 (0x30) - 49, // input 120 (0x78 char 'x') => 49 (0x31) - 50, // input 121 (0x79 char 'y') => 50 (0x32) - 51, // input 122 (0x7A char 'z') => 51 (0x33) - INVALID_VALUE, // input 123 (0x7B) - INVALID_VALUE, // input 124 (0x7C) - INVALID_VALUE, // input 125 (0x7D) - INVALID_VALUE, // input 126 (0x7E) - INVALID_VALUE, // input 127 (0x7F) - INVALID_VALUE, // input 128 (0x80) - INVALID_VALUE, // input 129 (0x81) - INVALID_VALUE, // input 130 (0x82) - INVALID_VALUE, // input 131 (0x83) - INVALID_VALUE, // input 132 (0x84) - INVALID_VALUE, // input 133 (0x85) - INVALID_VALUE, // input 134 (0x86) - INVALID_VALUE, // input 135 (0x87) - INVALID_VALUE, // input 136 (0x88) - INVALID_VALUE, // input 137 (0x89) - INVALID_VALUE, // input 138 (0x8A) - INVALID_VALUE, // input 139 (0x8B) - INVALID_VALUE, // input 140 (0x8C) - INVALID_VALUE, // input 141 (0x8D) - INVALID_VALUE, // input 142 (0x8E) - INVALID_VALUE, // input 143 (0x8F) - INVALID_VALUE, // input 144 (0x90) - INVALID_VALUE, // input 145 (0x91) - INVALID_VALUE, // input 146 (0x92) - INVALID_VALUE, // input 147 (0x93) - INVALID_VALUE, // input 148 (0x94) - INVALID_VALUE, // input 149 (0x95) - INVALID_VALUE, // input 150 (0x96) - INVALID_VALUE, // input 151 (0x97) - INVALID_VALUE, // input 152 (0x98) - INVALID_VALUE, // input 153 (0x99) - INVALID_VALUE, // input 154 (0x9A) - INVALID_VALUE, // input 155 (0x9B) - INVALID_VALUE, // input 156 (0x9C) - INVALID_VALUE, // input 157 (0x9D) - INVALID_VALUE, // input 158 (0x9E) - INVALID_VALUE, // input 159 (0x9F) - INVALID_VALUE, // input 160 (0xA0) - INVALID_VALUE, // input 161 (0xA1) - INVALID_VALUE, // input 162 (0xA2) - INVALID_VALUE, // input 163 (0xA3) - INVALID_VALUE, // input 164 (0xA4) - INVALID_VALUE, // input 165 (0xA5) - INVALID_VALUE, // input 166 (0xA6) - INVALID_VALUE, // input 167 (0xA7) - INVALID_VALUE, // input 168 (0xA8) - INVALID_VALUE, // input 169 (0xA9) - INVALID_VALUE, // input 170 (0xAA) - INVALID_VALUE, // input 171 (0xAB) - INVALID_VALUE, // input 172 (0xAC) - INVALID_VALUE, // input 173 (0xAD) - INVALID_VALUE, // input 174 (0xAE) - INVALID_VALUE, // input 175 (0xAF) - INVALID_VALUE, // input 176 (0xB0) - INVALID_VALUE, // input 177 (0xB1) - INVALID_VALUE, // input 178 (0xB2) - INVALID_VALUE, // input 179 (0xB3) - INVALID_VALUE, // input 180 (0xB4) - INVALID_VALUE, // input 181 (0xB5) - INVALID_VALUE, // input 182 (0xB6) - INVALID_VALUE, // input 183 (0xB7) - INVALID_VALUE, // input 184 (0xB8) - INVALID_VALUE, // input 185 (0xB9) - INVALID_VALUE, // input 186 (0xBA) - INVALID_VALUE, // input 187 (0xBB) - INVALID_VALUE, // input 188 (0xBC) - INVALID_VALUE, // input 189 (0xBD) - INVALID_VALUE, // input 190 (0xBE) - INVALID_VALUE, // input 191 (0xBF) - INVALID_VALUE, // input 192 (0xC0) - INVALID_VALUE, // input 193 (0xC1) - INVALID_VALUE, // input 194 (0xC2) - INVALID_VALUE, // input 195 (0xC3) - INVALID_VALUE, // input 196 (0xC4) - INVALID_VALUE, // input 197 (0xC5) - INVALID_VALUE, // input 198 (0xC6) - INVALID_VALUE, // input 199 (0xC7) - INVALID_VALUE, // input 200 (0xC8) - INVALID_VALUE, // input 201 (0xC9) - INVALID_VALUE, // input 202 (0xCA) - INVALID_VALUE, // input 203 (0xCB) - INVALID_VALUE, // input 204 (0xCC) - INVALID_VALUE, // input 205 (0xCD) - INVALID_VALUE, // input 206 (0xCE) - INVALID_VALUE, // input 207 (0xCF) - INVALID_VALUE, // input 208 (0xD0) - INVALID_VALUE, // input 209 (0xD1) - INVALID_VALUE, // input 210 (0xD2) - INVALID_VALUE, // input 211 (0xD3) - INVALID_VALUE, // input 212 (0xD4) - INVALID_VALUE, // input 213 (0xD5) - INVALID_VALUE, // input 214 (0xD6) - INVALID_VALUE, // input 215 (0xD7) - INVALID_VALUE, // input 216 (0xD8) - INVALID_VALUE, // input 217 (0xD9) - INVALID_VALUE, // input 218 (0xDA) - INVALID_VALUE, // input 219 (0xDB) - INVALID_VALUE, // input 220 (0xDC) - INVALID_VALUE, // input 221 (0xDD) - INVALID_VALUE, // input 222 (0xDE) - INVALID_VALUE, // input 223 (0xDF) - INVALID_VALUE, // input 224 (0xE0) - INVALID_VALUE, // input 225 (0xE1) - INVALID_VALUE, // input 226 (0xE2) - INVALID_VALUE, // input 227 (0xE3) - INVALID_VALUE, // input 228 (0xE4) - INVALID_VALUE, // input 229 (0xE5) - INVALID_VALUE, // input 230 (0xE6) - INVALID_VALUE, // input 231 (0xE7) - INVALID_VALUE, // input 232 (0xE8) - INVALID_VALUE, // input 233 (0xE9) - INVALID_VALUE, // input 234 (0xEA) - INVALID_VALUE, // input 235 (0xEB) - INVALID_VALUE, // input 236 (0xEC) - INVALID_VALUE, // input 237 (0xED) - INVALID_VALUE, // input 238 (0xEE) - INVALID_VALUE, // input 239 (0xEF) - INVALID_VALUE, // input 240 (0xF0) - INVALID_VALUE, // input 241 (0xF1) - INVALID_VALUE, // input 242 (0xF2) - INVALID_VALUE, // input 243 (0xF3) - INVALID_VALUE, // input 244 (0xF4) - INVALID_VALUE, // input 245 (0xF5) - INVALID_VALUE, // input 246 (0xF6) - INVALID_VALUE, // input 247 (0xF7) - INVALID_VALUE, // input 248 (0xF8) - INVALID_VALUE, // input 249 (0xF9) - INVALID_VALUE, // input 250 (0xFA) - INVALID_VALUE, // input 251 (0xFB) - INVALID_VALUE, // input 252 (0xFC) - INVALID_VALUE, // input 253 (0xFD) - INVALID_VALUE, // input 254 (0xFE) - INVALID_VALUE, // input 255 (0xFF) -]; -#[rustfmt::skip] -pub const URL_SAFE_ENCODE: &[u8; 64] = &[ - 65, // input 0 (0x0) => 'A' (0x41) - 66, // input 1 (0x1) => 'B' (0x42) - 67, // input 2 (0x2) => 'C' (0x43) - 68, // input 3 (0x3) => 'D' (0x44) - 69, // input 4 (0x4) => 'E' (0x45) - 70, // input 5 (0x5) => 'F' (0x46) - 71, // input 6 (0x6) => 'G' (0x47) - 72, // input 7 (0x7) => 'H' (0x48) - 73, // input 8 (0x8) => 'I' (0x49) - 74, // input 9 (0x9) => 'J' (0x4A) - 75, // input 10 (0xA) => 'K' (0x4B) - 76, // input 11 (0xB) => 'L' (0x4C) - 77, // input 12 (0xC) => 'M' (0x4D) - 78, // input 13 (0xD) => 'N' (0x4E) - 79, // input 14 (0xE) => 'O' (0x4F) - 80, // input 15 (0xF) => 'P' (0x50) - 81, // input 16 (0x10) => 'Q' (0x51) - 82, // input 17 (0x11) => 'R' (0x52) - 83, // input 18 (0x12) => 'S' (0x53) - 84, // input 19 (0x13) => 'T' (0x54) - 85, // input 20 (0x14) => 'U' (0x55) - 86, // input 21 (0x15) => 'V' (0x56) - 87, // input 22 (0x16) => 'W' (0x57) - 88, // input 23 (0x17) => 'X' (0x58) - 89, // input 24 (0x18) => 'Y' (0x59) - 90, // input 25 (0x19) => 'Z' (0x5A) - 97, // input 26 (0x1A) => 'a' (0x61) - 98, // input 27 (0x1B) => 'b' (0x62) - 99, // input 28 (0x1C) => 'c' (0x63) - 100, // input 29 (0x1D) => 'd' (0x64) - 101, // input 30 (0x1E) => 'e' (0x65) - 102, // input 31 (0x1F) => 'f' (0x66) - 103, // input 32 (0x20) => 'g' (0x67) - 104, // input 33 (0x21) => 'h' (0x68) - 105, // input 34 (0x22) => 'i' (0x69) - 106, // input 35 (0x23) => 'j' (0x6A) - 107, // input 36 (0x24) => 'k' (0x6B) - 108, // input 37 (0x25) => 'l' (0x6C) - 109, // input 38 (0x26) => 'm' (0x6D) - 110, // input 39 (0x27) => 'n' (0x6E) - 111, // input 40 (0x28) => 'o' (0x6F) - 112, // input 41 (0x29) => 'p' (0x70) - 113, // input 42 (0x2A) => 'q' (0x71) - 114, // input 43 (0x2B) => 'r' (0x72) - 115, // input 44 (0x2C) => 's' (0x73) - 116, // input 45 (0x2D) => 't' (0x74) - 117, // input 46 (0x2E) => 'u' (0x75) - 118, // input 47 (0x2F) => 'v' (0x76) - 119, // input 48 (0x30) => 'w' (0x77) - 120, // input 49 (0x31) => 'x' (0x78) - 121, // input 50 (0x32) => 'y' (0x79) - 122, // input 51 (0x33) => 'z' (0x7A) - 48, // input 52 (0x34) => '0' (0x30) - 49, // input 53 (0x35) => '1' (0x31) - 50, // input 54 (0x36) => '2' (0x32) - 51, // input 55 (0x37) => '3' (0x33) - 52, // input 56 (0x38) => '4' (0x34) - 53, // input 57 (0x39) => '5' (0x35) - 54, // input 58 (0x3A) => '6' (0x36) - 55, // input 59 (0x3B) => '7' (0x37) - 56, // input 60 (0x3C) => '8' (0x38) - 57, // input 61 (0x3D) => '9' (0x39) - 45, // input 62 (0x3E) => '-' (0x2D) - 95, // input 63 (0x3F) => '_' (0x5F) -]; -#[rustfmt::skip] -pub const URL_SAFE_DECODE: &[u8; 256] = &[ - INVALID_VALUE, // input 0 (0x0) - INVALID_VALUE, // input 1 (0x1) - INVALID_VALUE, // input 2 (0x2) - INVALID_VALUE, // input 3 (0x3) - INVALID_VALUE, // input 4 (0x4) - INVALID_VALUE, // input 5 (0x5) - INVALID_VALUE, // input 6 (0x6) - INVALID_VALUE, // input 7 (0x7) - INVALID_VALUE, // input 8 (0x8) - INVALID_VALUE, // input 9 (0x9) - INVALID_VALUE, // input 10 (0xA) - INVALID_VALUE, // input 11 (0xB) - INVALID_VALUE, // input 12 (0xC) - INVALID_VALUE, // input 13 (0xD) - INVALID_VALUE, // input 14 (0xE) - INVALID_VALUE, // input 15 (0xF) - INVALID_VALUE, // input 16 (0x10) - INVALID_VALUE, // input 17 (0x11) - INVALID_VALUE, // input 18 (0x12) - INVALID_VALUE, // input 19 (0x13) - INVALID_VALUE, // input 20 (0x14) - INVALID_VALUE, // input 21 (0x15) - INVALID_VALUE, // input 22 (0x16) - INVALID_VALUE, // input 23 (0x17) - INVALID_VALUE, // input 24 (0x18) - INVALID_VALUE, // input 25 (0x19) - INVALID_VALUE, // input 26 (0x1A) - INVALID_VALUE, // input 27 (0x1B) - INVALID_VALUE, // input 28 (0x1C) - INVALID_VALUE, // input 29 (0x1D) - INVALID_VALUE, // input 30 (0x1E) - INVALID_VALUE, // input 31 (0x1F) - INVALID_VALUE, // input 32 (0x20) - INVALID_VALUE, // input 33 (0x21) - INVALID_VALUE, // input 34 (0x22) - INVALID_VALUE, // input 35 (0x23) - INVALID_VALUE, // input 36 (0x24) - INVALID_VALUE, // input 37 (0x25) - INVALID_VALUE, // input 38 (0x26) - INVALID_VALUE, // input 39 (0x27) - INVALID_VALUE, // input 40 (0x28) - INVALID_VALUE, // input 41 (0x29) - INVALID_VALUE, // input 42 (0x2A) - INVALID_VALUE, // input 43 (0x2B) - INVALID_VALUE, // input 44 (0x2C) - 62, // input 45 (0x2D char '-') => 62 (0x3E) - INVALID_VALUE, // input 46 (0x2E) - INVALID_VALUE, // input 47 (0x2F) - 52, // input 48 (0x30 char '0') => 52 (0x34) - 53, // input 49 (0x31 char '1') => 53 (0x35) - 54, // input 50 (0x32 char '2') => 54 (0x36) - 55, // input 51 (0x33 char '3') => 55 (0x37) - 56, // input 52 (0x34 char '4') => 56 (0x38) - 57, // input 53 (0x35 char '5') => 57 (0x39) - 58, // input 54 (0x36 char '6') => 58 (0x3A) - 59, // input 55 (0x37 char '7') => 59 (0x3B) - 60, // input 56 (0x38 char '8') => 60 (0x3C) - 61, // input 57 (0x39 char '9') => 61 (0x3D) - INVALID_VALUE, // input 58 (0x3A) - INVALID_VALUE, // input 59 (0x3B) - INVALID_VALUE, // input 60 (0x3C) - INVALID_VALUE, // input 61 (0x3D) - INVALID_VALUE, // input 62 (0x3E) - INVALID_VALUE, // input 63 (0x3F) - INVALID_VALUE, // input 64 (0x40) - 0, // input 65 (0x41 char 'A') => 0 (0x0) - 1, // input 66 (0x42 char 'B') => 1 (0x1) - 2, // input 67 (0x43 char 'C') => 2 (0x2) - 3, // input 68 (0x44 char 'D') => 3 (0x3) - 4, // input 69 (0x45 char 'E') => 4 (0x4) - 5, // input 70 (0x46 char 'F') => 5 (0x5) - 6, // input 71 (0x47 char 'G') => 6 (0x6) - 7, // input 72 (0x48 char 'H') => 7 (0x7) - 8, // input 73 (0x49 char 'I') => 8 (0x8) - 9, // input 74 (0x4A char 'J') => 9 (0x9) - 10, // input 75 (0x4B char 'K') => 10 (0xA) - 11, // input 76 (0x4C char 'L') => 11 (0xB) - 12, // input 77 (0x4D char 'M') => 12 (0xC) - 13, // input 78 (0x4E char 'N') => 13 (0xD) - 14, // input 79 (0x4F char 'O') => 14 (0xE) - 15, // input 80 (0x50 char 'P') => 15 (0xF) - 16, // input 81 (0x51 char 'Q') => 16 (0x10) - 17, // input 82 (0x52 char 'R') => 17 (0x11) - 18, // input 83 (0x53 char 'S') => 18 (0x12) - 19, // input 84 (0x54 char 'T') => 19 (0x13) - 20, // input 85 (0x55 char 'U') => 20 (0x14) - 21, // input 86 (0x56 char 'V') => 21 (0x15) - 22, // input 87 (0x57 char 'W') => 22 (0x16) - 23, // input 88 (0x58 char 'X') => 23 (0x17) - 24, // input 89 (0x59 char 'Y') => 24 (0x18) - 25, // input 90 (0x5A char 'Z') => 25 (0x19) - INVALID_VALUE, // input 91 (0x5B) - INVALID_VALUE, // input 92 (0x5C) - INVALID_VALUE, // input 93 (0x5D) - INVALID_VALUE, // input 94 (0x5E) - 63, // input 95 (0x5F char '_') => 63 (0x3F) - INVALID_VALUE, // input 96 (0x60) - 26, // input 97 (0x61 char 'a') => 26 (0x1A) - 27, // input 98 (0x62 char 'b') => 27 (0x1B) - 28, // input 99 (0x63 char 'c') => 28 (0x1C) - 29, // input 100 (0x64 char 'd') => 29 (0x1D) - 30, // input 101 (0x65 char 'e') => 30 (0x1E) - 31, // input 102 (0x66 char 'f') => 31 (0x1F) - 32, // input 103 (0x67 char 'g') => 32 (0x20) - 33, // input 104 (0x68 char 'h') => 33 (0x21) - 34, // input 105 (0x69 char 'i') => 34 (0x22) - 35, // input 106 (0x6A char 'j') => 35 (0x23) - 36, // input 107 (0x6B char 'k') => 36 (0x24) - 37, // input 108 (0x6C char 'l') => 37 (0x25) - 38, // input 109 (0x6D char 'm') => 38 (0x26) - 39, // input 110 (0x6E char 'n') => 39 (0x27) - 40, // input 111 (0x6F char 'o') => 40 (0x28) - 41, // input 112 (0x70 char 'p') => 41 (0x29) - 42, // input 113 (0x71 char 'q') => 42 (0x2A) - 43, // input 114 (0x72 char 'r') => 43 (0x2B) - 44, // input 115 (0x73 char 's') => 44 (0x2C) - 45, // input 116 (0x74 char 't') => 45 (0x2D) - 46, // input 117 (0x75 char 'u') => 46 (0x2E) - 47, // input 118 (0x76 char 'v') => 47 (0x2F) - 48, // input 119 (0x77 char 'w') => 48 (0x30) - 49, // input 120 (0x78 char 'x') => 49 (0x31) - 50, // input 121 (0x79 char 'y') => 50 (0x32) - 51, // input 122 (0x7A char 'z') => 51 (0x33) - INVALID_VALUE, // input 123 (0x7B) - INVALID_VALUE, // input 124 (0x7C) - INVALID_VALUE, // input 125 (0x7D) - INVALID_VALUE, // input 126 (0x7E) - INVALID_VALUE, // input 127 (0x7F) - INVALID_VALUE, // input 128 (0x80) - INVALID_VALUE, // input 129 (0x81) - INVALID_VALUE, // input 130 (0x82) - INVALID_VALUE, // input 131 (0x83) - INVALID_VALUE, // input 132 (0x84) - INVALID_VALUE, // input 133 (0x85) - INVALID_VALUE, // input 134 (0x86) - INVALID_VALUE, // input 135 (0x87) - INVALID_VALUE, // input 136 (0x88) - INVALID_VALUE, // input 137 (0x89) - INVALID_VALUE, // input 138 (0x8A) - INVALID_VALUE, // input 139 (0x8B) - INVALID_VALUE, // input 140 (0x8C) - INVALID_VALUE, // input 141 (0x8D) - INVALID_VALUE, // input 142 (0x8E) - INVALID_VALUE, // input 143 (0x8F) - INVALID_VALUE, // input 144 (0x90) - INVALID_VALUE, // input 145 (0x91) - INVALID_VALUE, // input 146 (0x92) - INVALID_VALUE, // input 147 (0x93) - INVALID_VALUE, // input 148 (0x94) - INVALID_VALUE, // input 149 (0x95) - INVALID_VALUE, // input 150 (0x96) - INVALID_VALUE, // input 151 (0x97) - INVALID_VALUE, // input 152 (0x98) - INVALID_VALUE, // input 153 (0x99) - INVALID_VALUE, // input 154 (0x9A) - INVALID_VALUE, // input 155 (0x9B) - INVALID_VALUE, // input 156 (0x9C) - INVALID_VALUE, // input 157 (0x9D) - INVALID_VALUE, // input 158 (0x9E) - INVALID_VALUE, // input 159 (0x9F) - INVALID_VALUE, // input 160 (0xA0) - INVALID_VALUE, // input 161 (0xA1) - INVALID_VALUE, // input 162 (0xA2) - INVALID_VALUE, // input 163 (0xA3) - INVALID_VALUE, // input 164 (0xA4) - INVALID_VALUE, // input 165 (0xA5) - INVALID_VALUE, // input 166 (0xA6) - INVALID_VALUE, // input 167 (0xA7) - INVALID_VALUE, // input 168 (0xA8) - INVALID_VALUE, // input 169 (0xA9) - INVALID_VALUE, // input 170 (0xAA) - INVALID_VALUE, // input 171 (0xAB) - INVALID_VALUE, // input 172 (0xAC) - INVALID_VALUE, // input 173 (0xAD) - INVALID_VALUE, // input 174 (0xAE) - INVALID_VALUE, // input 175 (0xAF) - INVALID_VALUE, // input 176 (0xB0) - INVALID_VALUE, // input 177 (0xB1) - INVALID_VALUE, // input 178 (0xB2) - INVALID_VALUE, // input 179 (0xB3) - INVALID_VALUE, // input 180 (0xB4) - INVALID_VALUE, // input 181 (0xB5) - INVALID_VALUE, // input 182 (0xB6) - INVALID_VALUE, // input 183 (0xB7) - INVALID_VALUE, // input 184 (0xB8) - INVALID_VALUE, // input 185 (0xB9) - INVALID_VALUE, // input 186 (0xBA) - INVALID_VALUE, // input 187 (0xBB) - INVALID_VALUE, // input 188 (0xBC) - INVALID_VALUE, // input 189 (0xBD) - INVALID_VALUE, // input 190 (0xBE) - INVALID_VALUE, // input 191 (0xBF) - INVALID_VALUE, // input 192 (0xC0) - INVALID_VALUE, // input 193 (0xC1) - INVALID_VALUE, // input 194 (0xC2) - INVALID_VALUE, // input 195 (0xC3) - INVALID_VALUE, // input 196 (0xC4) - INVALID_VALUE, // input 197 (0xC5) - INVALID_VALUE, // input 198 (0xC6) - INVALID_VALUE, // input 199 (0xC7) - INVALID_VALUE, // input 200 (0xC8) - INVALID_VALUE, // input 201 (0xC9) - INVALID_VALUE, // input 202 (0xCA) - INVALID_VALUE, // input 203 (0xCB) - INVALID_VALUE, // input 204 (0xCC) - INVALID_VALUE, // input 205 (0xCD) - INVALID_VALUE, // input 206 (0xCE) - INVALID_VALUE, // input 207 (0xCF) - INVALID_VALUE, // input 208 (0xD0) - INVALID_VALUE, // input 209 (0xD1) - INVALID_VALUE, // input 210 (0xD2) - INVALID_VALUE, // input 211 (0xD3) - INVALID_VALUE, // input 212 (0xD4) - INVALID_VALUE, // input 213 (0xD5) - INVALID_VALUE, // input 214 (0xD6) - INVALID_VALUE, // input 215 (0xD7) - INVALID_VALUE, // input 216 (0xD8) - INVALID_VALUE, // input 217 (0xD9) - INVALID_VALUE, // input 218 (0xDA) - INVALID_VALUE, // input 219 (0xDB) - INVALID_VALUE, // input 220 (0xDC) - INVALID_VALUE, // input 221 (0xDD) - INVALID_VALUE, // input 222 (0xDE) - INVALID_VALUE, // input 223 (0xDF) - INVALID_VALUE, // input 224 (0xE0) - INVALID_VALUE, // input 225 (0xE1) - INVALID_VALUE, // input 226 (0xE2) - INVALID_VALUE, // input 227 (0xE3) - INVALID_VALUE, // input 228 (0xE4) - INVALID_VALUE, // input 229 (0xE5) - INVALID_VALUE, // input 230 (0xE6) - INVALID_VALUE, // input 231 (0xE7) - INVALID_VALUE, // input 232 (0xE8) - INVALID_VALUE, // input 233 (0xE9) - INVALID_VALUE, // input 234 (0xEA) - INVALID_VALUE, // input 235 (0xEB) - INVALID_VALUE, // input 236 (0xEC) - INVALID_VALUE, // input 237 (0xED) - INVALID_VALUE, // input 238 (0xEE) - INVALID_VALUE, // input 239 (0xEF) - INVALID_VALUE, // input 240 (0xF0) - INVALID_VALUE, // input 241 (0xF1) - INVALID_VALUE, // input 242 (0xF2) - INVALID_VALUE, // input 243 (0xF3) - INVALID_VALUE, // input 244 (0xF4) - INVALID_VALUE, // input 245 (0xF5) - INVALID_VALUE, // input 246 (0xF6) - INVALID_VALUE, // input 247 (0xF7) - INVALID_VALUE, // input 248 (0xF8) - INVALID_VALUE, // input 249 (0xF9) - INVALID_VALUE, // input 250 (0xFA) - INVALID_VALUE, // input 251 (0xFB) - INVALID_VALUE, // input 252 (0xFC) - INVALID_VALUE, // input 253 (0xFD) - INVALID_VALUE, // input 254 (0xFE) - INVALID_VALUE, // input 255 (0xFF) -]; -#[rustfmt::skip] -pub const CRYPT_ENCODE: &[u8; 64] = &[ - 46, // input 0 (0x0) => '.' (0x2E) - 47, // input 1 (0x1) => '/' (0x2F) - 48, // input 2 (0x2) => '0' (0x30) - 49, // input 3 (0x3) => '1' (0x31) - 50, // input 4 (0x4) => '2' (0x32) - 51, // input 5 (0x5) => '3' (0x33) - 52, // input 6 (0x6) => '4' (0x34) - 53, // input 7 (0x7) => '5' (0x35) - 54, // input 8 (0x8) => '6' (0x36) - 55, // input 9 (0x9) => '7' (0x37) - 56, // input 10 (0xA) => '8' (0x38) - 57, // input 11 (0xB) => '9' (0x39) - 65, // input 12 (0xC) => 'A' (0x41) - 66, // input 13 (0xD) => 'B' (0x42) - 67, // input 14 (0xE) => 'C' (0x43) - 68, // input 15 (0xF) => 'D' (0x44) - 69, // input 16 (0x10) => 'E' (0x45) - 70, // input 17 (0x11) => 'F' (0x46) - 71, // input 18 (0x12) => 'G' (0x47) - 72, // input 19 (0x13) => 'H' (0x48) - 73, // input 20 (0x14) => 'I' (0x49) - 74, // input 21 (0x15) => 'J' (0x4A) - 75, // input 22 (0x16) => 'K' (0x4B) - 76, // input 23 (0x17) => 'L' (0x4C) - 77, // input 24 (0x18) => 'M' (0x4D) - 78, // input 25 (0x19) => 'N' (0x4E) - 79, // input 26 (0x1A) => 'O' (0x4F) - 80, // input 27 (0x1B) => 'P' (0x50) - 81, // input 28 (0x1C) => 'Q' (0x51) - 82, // input 29 (0x1D) => 'R' (0x52) - 83, // input 30 (0x1E) => 'S' (0x53) - 84, // input 31 (0x1F) => 'T' (0x54) - 85, // input 32 (0x20) => 'U' (0x55) - 86, // input 33 (0x21) => 'V' (0x56) - 87, // input 34 (0x22) => 'W' (0x57) - 88, // input 35 (0x23) => 'X' (0x58) - 89, // input 36 (0x24) => 'Y' (0x59) - 90, // input 37 (0x25) => 'Z' (0x5A) - 97, // input 38 (0x26) => 'a' (0x61) - 98, // input 39 (0x27) => 'b' (0x62) - 99, // input 40 (0x28) => 'c' (0x63) - 100, // input 41 (0x29) => 'd' (0x64) - 101, // input 42 (0x2A) => 'e' (0x65) - 102, // input 43 (0x2B) => 'f' (0x66) - 103, // input 44 (0x2C) => 'g' (0x67) - 104, // input 45 (0x2D) => 'h' (0x68) - 105, // input 46 (0x2E) => 'i' (0x69) - 106, // input 47 (0x2F) => 'j' (0x6A) - 107, // input 48 (0x30) => 'k' (0x6B) - 108, // input 49 (0x31) => 'l' (0x6C) - 109, // input 50 (0x32) => 'm' (0x6D) - 110, // input 51 (0x33) => 'n' (0x6E) - 111, // input 52 (0x34) => 'o' (0x6F) - 112, // input 53 (0x35) => 'p' (0x70) - 113, // input 54 (0x36) => 'q' (0x71) - 114, // input 55 (0x37) => 'r' (0x72) - 115, // input 56 (0x38) => 's' (0x73) - 116, // input 57 (0x39) => 't' (0x74) - 117, // input 58 (0x3A) => 'u' (0x75) - 118, // input 59 (0x3B) => 'v' (0x76) - 119, // input 60 (0x3C) => 'w' (0x77) - 120, // input 61 (0x3D) => 'x' (0x78) - 121, // input 62 (0x3E) => 'y' (0x79) - 122, // input 63 (0x3F) => 'z' (0x7A) -]; -#[rustfmt::skip] -pub const CRYPT_DECODE: &[u8; 256] = &[ - INVALID_VALUE, // input 0 (0x0) - INVALID_VALUE, // input 1 (0x1) - INVALID_VALUE, // input 2 (0x2) - INVALID_VALUE, // input 3 (0x3) - INVALID_VALUE, // input 4 (0x4) - INVALID_VALUE, // input 5 (0x5) - INVALID_VALUE, // input 6 (0x6) - INVALID_VALUE, // input 7 (0x7) - INVALID_VALUE, // input 8 (0x8) - INVALID_VALUE, // input 9 (0x9) - INVALID_VALUE, // input 10 (0xA) - INVALID_VALUE, // input 11 (0xB) - INVALID_VALUE, // input 12 (0xC) - INVALID_VALUE, // input 13 (0xD) - INVALID_VALUE, // input 14 (0xE) - INVALID_VALUE, // input 15 (0xF) - INVALID_VALUE, // input 16 (0x10) - INVALID_VALUE, // input 17 (0x11) - INVALID_VALUE, // input 18 (0x12) - INVALID_VALUE, // input 19 (0x13) - INVALID_VALUE, // input 20 (0x14) - INVALID_VALUE, // input 21 (0x15) - INVALID_VALUE, // input 22 (0x16) - INVALID_VALUE, // input 23 (0x17) - INVALID_VALUE, // input 24 (0x18) - INVALID_VALUE, // input 25 (0x19) - INVALID_VALUE, // input 26 (0x1A) - INVALID_VALUE, // input 27 (0x1B) - INVALID_VALUE, // input 28 (0x1C) - INVALID_VALUE, // input 29 (0x1D) - INVALID_VALUE, // input 30 (0x1E) - INVALID_VALUE, // input 31 (0x1F) - INVALID_VALUE, // input 32 (0x20) - INVALID_VALUE, // input 33 (0x21) - INVALID_VALUE, // input 34 (0x22) - INVALID_VALUE, // input 35 (0x23) - INVALID_VALUE, // input 36 (0x24) - INVALID_VALUE, // input 37 (0x25) - INVALID_VALUE, // input 38 (0x26) - INVALID_VALUE, // input 39 (0x27) - INVALID_VALUE, // input 40 (0x28) - INVALID_VALUE, // input 41 (0x29) - INVALID_VALUE, // input 42 (0x2A) - INVALID_VALUE, // input 43 (0x2B) - INVALID_VALUE, // input 44 (0x2C) - INVALID_VALUE, // input 45 (0x2D) - 0, // input 46 (0x2E char '.') => 0 (0x0) - 1, // input 47 (0x2F char '/') => 1 (0x1) - 2, // input 48 (0x30 char '0') => 2 (0x2) - 3, // input 49 (0x31 char '1') => 3 (0x3) - 4, // input 50 (0x32 char '2') => 4 (0x4) - 5, // input 51 (0x33 char '3') => 5 (0x5) - 6, // input 52 (0x34 char '4') => 6 (0x6) - 7, // input 53 (0x35 char '5') => 7 (0x7) - 8, // input 54 (0x36 char '6') => 8 (0x8) - 9, // input 55 (0x37 char '7') => 9 (0x9) - 10, // input 56 (0x38 char '8') => 10 (0xA) - 11, // input 57 (0x39 char '9') => 11 (0xB) - INVALID_VALUE, // input 58 (0x3A) - INVALID_VALUE, // input 59 (0x3B) - INVALID_VALUE, // input 60 (0x3C) - INVALID_VALUE, // input 61 (0x3D) - INVALID_VALUE, // input 62 (0x3E) - INVALID_VALUE, // input 63 (0x3F) - INVALID_VALUE, // input 64 (0x40) - 12, // input 65 (0x41 char 'A') => 12 (0xC) - 13, // input 66 (0x42 char 'B') => 13 (0xD) - 14, // input 67 (0x43 char 'C') => 14 (0xE) - 15, // input 68 (0x44 char 'D') => 15 (0xF) - 16, // input 69 (0x45 char 'E') => 16 (0x10) - 17, // input 70 (0x46 char 'F') => 17 (0x11) - 18, // input 71 (0x47 char 'G') => 18 (0x12) - 19, // input 72 (0x48 char 'H') => 19 (0x13) - 20, // input 73 (0x49 char 'I') => 20 (0x14) - 21, // input 74 (0x4A char 'J') => 21 (0x15) - 22, // input 75 (0x4B char 'K') => 22 (0x16) - 23, // input 76 (0x4C char 'L') => 23 (0x17) - 24, // input 77 (0x4D char 'M') => 24 (0x18) - 25, // input 78 (0x4E char 'N') => 25 (0x19) - 26, // input 79 (0x4F char 'O') => 26 (0x1A) - 27, // input 80 (0x50 char 'P') => 27 (0x1B) - 28, // input 81 (0x51 char 'Q') => 28 (0x1C) - 29, // input 82 (0x52 char 'R') => 29 (0x1D) - 30, // input 83 (0x53 char 'S') => 30 (0x1E) - 31, // input 84 (0x54 char 'T') => 31 (0x1F) - 32, // input 85 (0x55 char 'U') => 32 (0x20) - 33, // input 86 (0x56 char 'V') => 33 (0x21) - 34, // input 87 (0x57 char 'W') => 34 (0x22) - 35, // input 88 (0x58 char 'X') => 35 (0x23) - 36, // input 89 (0x59 char 'Y') => 36 (0x24) - 37, // input 90 (0x5A char 'Z') => 37 (0x25) - INVALID_VALUE, // input 91 (0x5B) - INVALID_VALUE, // input 92 (0x5C) - INVALID_VALUE, // input 93 (0x5D) - INVALID_VALUE, // input 94 (0x5E) - INVALID_VALUE, // input 95 (0x5F) - INVALID_VALUE, // input 96 (0x60) - 38, // input 97 (0x61 char 'a') => 38 (0x26) - 39, // input 98 (0x62 char 'b') => 39 (0x27) - 40, // input 99 (0x63 char 'c') => 40 (0x28) - 41, // input 100 (0x64 char 'd') => 41 (0x29) - 42, // input 101 (0x65 char 'e') => 42 (0x2A) - 43, // input 102 (0x66 char 'f') => 43 (0x2B) - 44, // input 103 (0x67 char 'g') => 44 (0x2C) - 45, // input 104 (0x68 char 'h') => 45 (0x2D) - 46, // input 105 (0x69 char 'i') => 46 (0x2E) - 47, // input 106 (0x6A char 'j') => 47 (0x2F) - 48, // input 107 (0x6B char 'k') => 48 (0x30) - 49, // input 108 (0x6C char 'l') => 49 (0x31) - 50, // input 109 (0x6D char 'm') => 50 (0x32) - 51, // input 110 (0x6E char 'n') => 51 (0x33) - 52, // input 111 (0x6F char 'o') => 52 (0x34) - 53, // input 112 (0x70 char 'p') => 53 (0x35) - 54, // input 113 (0x71 char 'q') => 54 (0x36) - 55, // input 114 (0x72 char 'r') => 55 (0x37) - 56, // input 115 (0x73 char 's') => 56 (0x38) - 57, // input 116 (0x74 char 't') => 57 (0x39) - 58, // input 117 (0x75 char 'u') => 58 (0x3A) - 59, // input 118 (0x76 char 'v') => 59 (0x3B) - 60, // input 119 (0x77 char 'w') => 60 (0x3C) - 61, // input 120 (0x78 char 'x') => 61 (0x3D) - 62, // input 121 (0x79 char 'y') => 62 (0x3E) - 63, // input 122 (0x7A char 'z') => 63 (0x3F) - INVALID_VALUE, // input 123 (0x7B) - INVALID_VALUE, // input 124 (0x7C) - INVALID_VALUE, // input 125 (0x7D) - INVALID_VALUE, // input 126 (0x7E) - INVALID_VALUE, // input 127 (0x7F) - INVALID_VALUE, // input 128 (0x80) - INVALID_VALUE, // input 129 (0x81) - INVALID_VALUE, // input 130 (0x82) - INVALID_VALUE, // input 131 (0x83) - INVALID_VALUE, // input 132 (0x84) - INVALID_VALUE, // input 133 (0x85) - INVALID_VALUE, // input 134 (0x86) - INVALID_VALUE, // input 135 (0x87) - INVALID_VALUE, // input 136 (0x88) - INVALID_VALUE, // input 137 (0x89) - INVALID_VALUE, // input 138 (0x8A) - INVALID_VALUE, // input 139 (0x8B) - INVALID_VALUE, // input 140 (0x8C) - INVALID_VALUE, // input 141 (0x8D) - INVALID_VALUE, // input 142 (0x8E) - INVALID_VALUE, // input 143 (0x8F) - INVALID_VALUE, // input 144 (0x90) - INVALID_VALUE, // input 145 (0x91) - INVALID_VALUE, // input 146 (0x92) - INVALID_VALUE, // input 147 (0x93) - INVALID_VALUE, // input 148 (0x94) - INVALID_VALUE, // input 149 (0x95) - INVALID_VALUE, // input 150 (0x96) - INVALID_VALUE, // input 151 (0x97) - INVALID_VALUE, // input 152 (0x98) - INVALID_VALUE, // input 153 (0x99) - INVALID_VALUE, // input 154 (0x9A) - INVALID_VALUE, // input 155 (0x9B) - INVALID_VALUE, // input 156 (0x9C) - INVALID_VALUE, // input 157 (0x9D) - INVALID_VALUE, // input 158 (0x9E) - INVALID_VALUE, // input 159 (0x9F) - INVALID_VALUE, // input 160 (0xA0) - INVALID_VALUE, // input 161 (0xA1) - INVALID_VALUE, // input 162 (0xA2) - INVALID_VALUE, // input 163 (0xA3) - INVALID_VALUE, // input 164 (0xA4) - INVALID_VALUE, // input 165 (0xA5) - INVALID_VALUE, // input 166 (0xA6) - INVALID_VALUE, // input 167 (0xA7) - INVALID_VALUE, // input 168 (0xA8) - INVALID_VALUE, // input 169 (0xA9) - INVALID_VALUE, // input 170 (0xAA) - INVALID_VALUE, // input 171 (0xAB) - INVALID_VALUE, // input 172 (0xAC) - INVALID_VALUE, // input 173 (0xAD) - INVALID_VALUE, // input 174 (0xAE) - INVALID_VALUE, // input 175 (0xAF) - INVALID_VALUE, // input 176 (0xB0) - INVALID_VALUE, // input 177 (0xB1) - INVALID_VALUE, // input 178 (0xB2) - INVALID_VALUE, // input 179 (0xB3) - INVALID_VALUE, // input 180 (0xB4) - INVALID_VALUE, // input 181 (0xB5) - INVALID_VALUE, // input 182 (0xB6) - INVALID_VALUE, // input 183 (0xB7) - INVALID_VALUE, // input 184 (0xB8) - INVALID_VALUE, // input 185 (0xB9) - INVALID_VALUE, // input 186 (0xBA) - INVALID_VALUE, // input 187 (0xBB) - INVALID_VALUE, // input 188 (0xBC) - INVALID_VALUE, // input 189 (0xBD) - INVALID_VALUE, // input 190 (0xBE) - INVALID_VALUE, // input 191 (0xBF) - INVALID_VALUE, // input 192 (0xC0) - INVALID_VALUE, // input 193 (0xC1) - INVALID_VALUE, // input 194 (0xC2) - INVALID_VALUE, // input 195 (0xC3) - INVALID_VALUE, // input 196 (0xC4) - INVALID_VALUE, // input 197 (0xC5) - INVALID_VALUE, // input 198 (0xC6) - INVALID_VALUE, // input 199 (0xC7) - INVALID_VALUE, // input 200 (0xC8) - INVALID_VALUE, // input 201 (0xC9) - INVALID_VALUE, // input 202 (0xCA) - INVALID_VALUE, // input 203 (0xCB) - INVALID_VALUE, // input 204 (0xCC) - INVALID_VALUE, // input 205 (0xCD) - INVALID_VALUE, // input 206 (0xCE) - INVALID_VALUE, // input 207 (0xCF) - INVALID_VALUE, // input 208 (0xD0) - INVALID_VALUE, // input 209 (0xD1) - INVALID_VALUE, // input 210 (0xD2) - INVALID_VALUE, // input 211 (0xD3) - INVALID_VALUE, // input 212 (0xD4) - INVALID_VALUE, // input 213 (0xD5) - INVALID_VALUE, // input 214 (0xD6) - INVALID_VALUE, // input 215 (0xD7) - INVALID_VALUE, // input 216 (0xD8) - INVALID_VALUE, // input 217 (0xD9) - INVALID_VALUE, // input 218 (0xDA) - INVALID_VALUE, // input 219 (0xDB) - INVALID_VALUE, // input 220 (0xDC) - INVALID_VALUE, // input 221 (0xDD) - INVALID_VALUE, // input 222 (0xDE) - INVALID_VALUE, // input 223 (0xDF) - INVALID_VALUE, // input 224 (0xE0) - INVALID_VALUE, // input 225 (0xE1) - INVALID_VALUE, // input 226 (0xE2) - INVALID_VALUE, // input 227 (0xE3) - INVALID_VALUE, // input 228 (0xE4) - INVALID_VALUE, // input 229 (0xE5) - INVALID_VALUE, // input 230 (0xE6) - INVALID_VALUE, // input 231 (0xE7) - INVALID_VALUE, // input 232 (0xE8) - INVALID_VALUE, // input 233 (0xE9) - INVALID_VALUE, // input 234 (0xEA) - INVALID_VALUE, // input 235 (0xEB) - INVALID_VALUE, // input 236 (0xEC) - INVALID_VALUE, // input 237 (0xED) - INVALID_VALUE, // input 238 (0xEE) - INVALID_VALUE, // input 239 (0xEF) - INVALID_VALUE, // input 240 (0xF0) - INVALID_VALUE, // input 241 (0xF1) - INVALID_VALUE, // input 242 (0xF2) - INVALID_VALUE, // input 243 (0xF3) - INVALID_VALUE, // input 244 (0xF4) - INVALID_VALUE, // input 245 (0xF5) - INVALID_VALUE, // input 246 (0xF6) - INVALID_VALUE, // input 247 (0xF7) - INVALID_VALUE, // input 248 (0xF8) - INVALID_VALUE, // input 249 (0xF9) - INVALID_VALUE, // input 250 (0xFA) - INVALID_VALUE, // input 251 (0xFB) - INVALID_VALUE, // input 252 (0xFC) - INVALID_VALUE, // input 253 (0xFD) - INVALID_VALUE, // input 254 (0xFE) - INVALID_VALUE, // input 255 (0xFF) -]; -#[rustfmt::skip] -pub const BCRYPT_ENCODE: &[u8; 64] = &[ - 46, // input 0 (0x0) => '.' (0x2E) - 47, // input 1 (0x1) => '/' (0x2F) - 65, // input 2 (0x2) => 'A' (0x41) - 66, // input 3 (0x3) => 'B' (0x42) - 67, // input 4 (0x4) => 'C' (0x43) - 68, // input 5 (0x5) => 'D' (0x44) - 69, // input 6 (0x6) => 'E' (0x45) - 70, // input 7 (0x7) => 'F' (0x46) - 71, // input 8 (0x8) => 'G' (0x47) - 72, // input 9 (0x9) => 'H' (0x48) - 73, // input 10 (0xA) => 'I' (0x49) - 74, // input 11 (0xB) => 'J' (0x4A) - 75, // input 12 (0xC) => 'K' (0x4B) - 76, // input 13 (0xD) => 'L' (0x4C) - 77, // input 14 (0xE) => 'M' (0x4D) - 78, // input 15 (0xF) => 'N' (0x4E) - 79, // input 16 (0x10) => 'O' (0x4F) - 80, // input 17 (0x11) => 'P' (0x50) - 81, // input 18 (0x12) => 'Q' (0x51) - 82, // input 19 (0x13) => 'R' (0x52) - 83, // input 20 (0x14) => 'S' (0x53) - 84, // input 21 (0x15) => 'T' (0x54) - 85, // input 22 (0x16) => 'U' (0x55) - 86, // input 23 (0x17) => 'V' (0x56) - 87, // input 24 (0x18) => 'W' (0x57) - 88, // input 25 (0x19) => 'X' (0x58) - 89, // input 26 (0x1A) => 'Y' (0x59) - 90, // input 27 (0x1B) => 'Z' (0x5A) - 97, // input 28 (0x1C) => 'a' (0x61) - 98, // input 29 (0x1D) => 'b' (0x62) - 99, // input 30 (0x1E) => 'c' (0x63) - 100, // input 31 (0x1F) => 'd' (0x64) - 101, // input 32 (0x20) => 'e' (0x65) - 102, // input 33 (0x21) => 'f' (0x66) - 103, // input 34 (0x22) => 'g' (0x67) - 104, // input 35 (0x23) => 'h' (0x68) - 105, // input 36 (0x24) => 'i' (0x69) - 106, // input 37 (0x25) => 'j' (0x6A) - 107, // input 38 (0x26) => 'k' (0x6B) - 108, // input 39 (0x27) => 'l' (0x6C) - 109, // input 40 (0x28) => 'm' (0x6D) - 110, // input 41 (0x29) => 'n' (0x6E) - 111, // input 42 (0x2A) => 'o' (0x6F) - 112, // input 43 (0x2B) => 'p' (0x70) - 113, // input 44 (0x2C) => 'q' (0x71) - 114, // input 45 (0x2D) => 'r' (0x72) - 115, // input 46 (0x2E) => 's' (0x73) - 116, // input 47 (0x2F) => 't' (0x74) - 117, // input 48 (0x30) => 'u' (0x75) - 118, // input 49 (0x31) => 'v' (0x76) - 119, // input 50 (0x32) => 'w' (0x77) - 120, // input 51 (0x33) => 'x' (0x78) - 121, // input 52 (0x34) => 'y' (0x79) - 122, // input 53 (0x35) => 'z' (0x7A) - 48, // input 54 (0x36) => '0' (0x30) - 49, // input 55 (0x37) => '1' (0x31) - 50, // input 56 (0x38) => '2' (0x32) - 51, // input 57 (0x39) => '3' (0x33) - 52, // input 58 (0x3A) => '4' (0x34) - 53, // input 59 (0x3B) => '5' (0x35) - 54, // input 60 (0x3C) => '6' (0x36) - 55, // input 61 (0x3D) => '7' (0x37) - 56, // input 62 (0x3E) => '8' (0x38) - 57, // input 63 (0x3F) => '9' (0x39) -]; -#[rustfmt::skip] -pub const BCRYPT_DECODE: &[u8; 256] = &[ - INVALID_VALUE, // input 0 (0x0) - INVALID_VALUE, // input 1 (0x1) - INVALID_VALUE, // input 2 (0x2) - INVALID_VALUE, // input 3 (0x3) - INVALID_VALUE, // input 4 (0x4) - INVALID_VALUE, // input 5 (0x5) - INVALID_VALUE, // input 6 (0x6) - INVALID_VALUE, // input 7 (0x7) - INVALID_VALUE, // input 8 (0x8) - INVALID_VALUE, // input 9 (0x9) - INVALID_VALUE, // input 10 (0xA) - INVALID_VALUE, // input 11 (0xB) - INVALID_VALUE, // input 12 (0xC) - INVALID_VALUE, // input 13 (0xD) - INVALID_VALUE, // input 14 (0xE) - INVALID_VALUE, // input 15 (0xF) - INVALID_VALUE, // input 16 (0x10) - INVALID_VALUE, // input 17 (0x11) - INVALID_VALUE, // input 18 (0x12) - INVALID_VALUE, // input 19 (0x13) - INVALID_VALUE, // input 20 (0x14) - INVALID_VALUE, // input 21 (0x15) - INVALID_VALUE, // input 22 (0x16) - INVALID_VALUE, // input 23 (0x17) - INVALID_VALUE, // input 24 (0x18) - INVALID_VALUE, // input 25 (0x19) - INVALID_VALUE, // input 26 (0x1A) - INVALID_VALUE, // input 27 (0x1B) - INVALID_VALUE, // input 28 (0x1C) - INVALID_VALUE, // input 29 (0x1D) - INVALID_VALUE, // input 30 (0x1E) - INVALID_VALUE, // input 31 (0x1F) - INVALID_VALUE, // input 32 (0x20) - INVALID_VALUE, // input 33 (0x21) - INVALID_VALUE, // input 34 (0x22) - INVALID_VALUE, // input 35 (0x23) - INVALID_VALUE, // input 36 (0x24) - INVALID_VALUE, // input 37 (0x25) - INVALID_VALUE, // input 38 (0x26) - INVALID_VALUE, // input 39 (0x27) - INVALID_VALUE, // input 40 (0x28) - INVALID_VALUE, // input 41 (0x29) - INVALID_VALUE, // input 42 (0x2A) - INVALID_VALUE, // input 43 (0x2B) - INVALID_VALUE, // input 44 (0x2C) - INVALID_VALUE, // input 45 (0x2D) - 0, // input 46 (0x2E char '.') => 0 (0x0) - 1, // input 47 (0x2F char '/') => 1 (0x1) - 54, // input 48 (0x30 char '0') => 54 (0x36) - 55, // input 49 (0x31 char '1') => 55 (0x37) - 56, // input 50 (0x32 char '2') => 56 (0x38) - 57, // input 51 (0x33 char '3') => 57 (0x39) - 58, // input 52 (0x34 char '4') => 58 (0x3A) - 59, // input 53 (0x35 char '5') => 59 (0x3B) - 60, // input 54 (0x36 char '6') => 60 (0x3C) - 61, // input 55 (0x37 char '7') => 61 (0x3D) - 62, // input 56 (0x38 char '8') => 62 (0x3E) - 63, // input 57 (0x39 char '9') => 63 (0x3F) - INVALID_VALUE, // input 58 (0x3A) - INVALID_VALUE, // input 59 (0x3B) - INVALID_VALUE, // input 60 (0x3C) - INVALID_VALUE, // input 61 (0x3D) - INVALID_VALUE, // input 62 (0x3E) - INVALID_VALUE, // input 63 (0x3F) - INVALID_VALUE, // input 64 (0x40) - 2, // input 65 (0x41 char 'A') => 2 (0x2) - 3, // input 66 (0x42 char 'B') => 3 (0x3) - 4, // input 67 (0x43 char 'C') => 4 (0x4) - 5, // input 68 (0x44 char 'D') => 5 (0x5) - 6, // input 69 (0x45 char 'E') => 6 (0x6) - 7, // input 70 (0x46 char 'F') => 7 (0x7) - 8, // input 71 (0x47 char 'G') => 8 (0x8) - 9, // input 72 (0x48 char 'H') => 9 (0x9) - 10, // input 73 (0x49 char 'I') => 10 (0xA) - 11, // input 74 (0x4A char 'J') => 11 (0xB) - 12, // input 75 (0x4B char 'K') => 12 (0xC) - 13, // input 76 (0x4C char 'L') => 13 (0xD) - 14, // input 77 (0x4D char 'M') => 14 (0xE) - 15, // input 78 (0x4E char 'N') => 15 (0xF) - 16, // input 79 (0x4F char 'O') => 16 (0x10) - 17, // input 80 (0x50 char 'P') => 17 (0x11) - 18, // input 81 (0x51 char 'Q') => 18 (0x12) - 19, // input 82 (0x52 char 'R') => 19 (0x13) - 20, // input 83 (0x53 char 'S') => 20 (0x14) - 21, // input 84 (0x54 char 'T') => 21 (0x15) - 22, // input 85 (0x55 char 'U') => 22 (0x16) - 23, // input 86 (0x56 char 'V') => 23 (0x17) - 24, // input 87 (0x57 char 'W') => 24 (0x18) - 25, // input 88 (0x58 char 'X') => 25 (0x19) - 26, // input 89 (0x59 char 'Y') => 26 (0x1A) - 27, // input 90 (0x5A char 'Z') => 27 (0x1B) - INVALID_VALUE, // input 91 (0x5B) - INVALID_VALUE, // input 92 (0x5C) - INVALID_VALUE, // input 93 (0x5D) - INVALID_VALUE, // input 94 (0x5E) - INVALID_VALUE, // input 95 (0x5F) - INVALID_VALUE, // input 96 (0x60) - 28, // input 97 (0x61 char 'a') => 28 (0x1C) - 29, // input 98 (0x62 char 'b') => 29 (0x1D) - 30, // input 99 (0x63 char 'c') => 30 (0x1E) - 31, // input 100 (0x64 char 'd') => 31 (0x1F) - 32, // input 101 (0x65 char 'e') => 32 (0x20) - 33, // input 102 (0x66 char 'f') => 33 (0x21) - 34, // input 103 (0x67 char 'g') => 34 (0x22) - 35, // input 104 (0x68 char 'h') => 35 (0x23) - 36, // input 105 (0x69 char 'i') => 36 (0x24) - 37, // input 106 (0x6A char 'j') => 37 (0x25) - 38, // input 107 (0x6B char 'k') => 38 (0x26) - 39, // input 108 (0x6C char 'l') => 39 (0x27) - 40, // input 109 (0x6D char 'm') => 40 (0x28) - 41, // input 110 (0x6E char 'n') => 41 (0x29) - 42, // input 111 (0x6F char 'o') => 42 (0x2A) - 43, // input 112 (0x70 char 'p') => 43 (0x2B) - 44, // input 113 (0x71 char 'q') => 44 (0x2C) - 45, // input 114 (0x72 char 'r') => 45 (0x2D) - 46, // input 115 (0x73 char 's') => 46 (0x2E) - 47, // input 116 (0x74 char 't') => 47 (0x2F) - 48, // input 117 (0x75 char 'u') => 48 (0x30) - 49, // input 118 (0x76 char 'v') => 49 (0x31) - 50, // input 119 (0x77 char 'w') => 50 (0x32) - 51, // input 120 (0x78 char 'x') => 51 (0x33) - 52, // input 121 (0x79 char 'y') => 52 (0x34) - 53, // input 122 (0x7A char 'z') => 53 (0x35) - INVALID_VALUE, // input 123 (0x7B) - INVALID_VALUE, // input 124 (0x7C) - INVALID_VALUE, // input 125 (0x7D) - INVALID_VALUE, // input 126 (0x7E) - INVALID_VALUE, // input 127 (0x7F) - INVALID_VALUE, // input 128 (0x80) - INVALID_VALUE, // input 129 (0x81) - INVALID_VALUE, // input 130 (0x82) - INVALID_VALUE, // input 131 (0x83) - INVALID_VALUE, // input 132 (0x84) - INVALID_VALUE, // input 133 (0x85) - INVALID_VALUE, // input 134 (0x86) - INVALID_VALUE, // input 135 (0x87) - INVALID_VALUE, // input 136 (0x88) - INVALID_VALUE, // input 137 (0x89) - INVALID_VALUE, // input 138 (0x8A) - INVALID_VALUE, // input 139 (0x8B) - INVALID_VALUE, // input 140 (0x8C) - INVALID_VALUE, // input 141 (0x8D) - INVALID_VALUE, // input 142 (0x8E) - INVALID_VALUE, // input 143 (0x8F) - INVALID_VALUE, // input 144 (0x90) - INVALID_VALUE, // input 145 (0x91) - INVALID_VALUE, // input 146 (0x92) - INVALID_VALUE, // input 147 (0x93) - INVALID_VALUE, // input 148 (0x94) - INVALID_VALUE, // input 149 (0x95) - INVALID_VALUE, // input 150 (0x96) - INVALID_VALUE, // input 151 (0x97) - INVALID_VALUE, // input 152 (0x98) - INVALID_VALUE, // input 153 (0x99) - INVALID_VALUE, // input 154 (0x9A) - INVALID_VALUE, // input 155 (0x9B) - INVALID_VALUE, // input 156 (0x9C) - INVALID_VALUE, // input 157 (0x9D) - INVALID_VALUE, // input 158 (0x9E) - INVALID_VALUE, // input 159 (0x9F) - INVALID_VALUE, // input 160 (0xA0) - INVALID_VALUE, // input 161 (0xA1) - INVALID_VALUE, // input 162 (0xA2) - INVALID_VALUE, // input 163 (0xA3) - INVALID_VALUE, // input 164 (0xA4) - INVALID_VALUE, // input 165 (0xA5) - INVALID_VALUE, // input 166 (0xA6) - INVALID_VALUE, // input 167 (0xA7) - INVALID_VALUE, // input 168 (0xA8) - INVALID_VALUE, // input 169 (0xA9) - INVALID_VALUE, // input 170 (0xAA) - INVALID_VALUE, // input 171 (0xAB) - INVALID_VALUE, // input 172 (0xAC) - INVALID_VALUE, // input 173 (0xAD) - INVALID_VALUE, // input 174 (0xAE) - INVALID_VALUE, // input 175 (0xAF) - INVALID_VALUE, // input 176 (0xB0) - INVALID_VALUE, // input 177 (0xB1) - INVALID_VALUE, // input 178 (0xB2) - INVALID_VALUE, // input 179 (0xB3) - INVALID_VALUE, // input 180 (0xB4) - INVALID_VALUE, // input 181 (0xB5) - INVALID_VALUE, // input 182 (0xB6) - INVALID_VALUE, // input 183 (0xB7) - INVALID_VALUE, // input 184 (0xB8) - INVALID_VALUE, // input 185 (0xB9) - INVALID_VALUE, // input 186 (0xBA) - INVALID_VALUE, // input 187 (0xBB) - INVALID_VALUE, // input 188 (0xBC) - INVALID_VALUE, // input 189 (0xBD) - INVALID_VALUE, // input 190 (0xBE) - INVALID_VALUE, // input 191 (0xBF) - INVALID_VALUE, // input 192 (0xC0) - INVALID_VALUE, // input 193 (0xC1) - INVALID_VALUE, // input 194 (0xC2) - INVALID_VALUE, // input 195 (0xC3) - INVALID_VALUE, // input 196 (0xC4) - INVALID_VALUE, // input 197 (0xC5) - INVALID_VALUE, // input 198 (0xC6) - INVALID_VALUE, // input 199 (0xC7) - INVALID_VALUE, // input 200 (0xC8) - INVALID_VALUE, // input 201 (0xC9) - INVALID_VALUE, // input 202 (0xCA) - INVALID_VALUE, // input 203 (0xCB) - INVALID_VALUE, // input 204 (0xCC) - INVALID_VALUE, // input 205 (0xCD) - INVALID_VALUE, // input 206 (0xCE) - INVALID_VALUE, // input 207 (0xCF) - INVALID_VALUE, // input 208 (0xD0) - INVALID_VALUE, // input 209 (0xD1) - INVALID_VALUE, // input 210 (0xD2) - INVALID_VALUE, // input 211 (0xD3) - INVALID_VALUE, // input 212 (0xD4) - INVALID_VALUE, // input 213 (0xD5) - INVALID_VALUE, // input 214 (0xD6) - INVALID_VALUE, // input 215 (0xD7) - INVALID_VALUE, // input 216 (0xD8) - INVALID_VALUE, // input 217 (0xD9) - INVALID_VALUE, // input 218 (0xDA) - INVALID_VALUE, // input 219 (0xDB) - INVALID_VALUE, // input 220 (0xDC) - INVALID_VALUE, // input 221 (0xDD) - INVALID_VALUE, // input 222 (0xDE) - INVALID_VALUE, // input 223 (0xDF) - INVALID_VALUE, // input 224 (0xE0) - INVALID_VALUE, // input 225 (0xE1) - INVALID_VALUE, // input 226 (0xE2) - INVALID_VALUE, // input 227 (0xE3) - INVALID_VALUE, // input 228 (0xE4) - INVALID_VALUE, // input 229 (0xE5) - INVALID_VALUE, // input 230 (0xE6) - INVALID_VALUE, // input 231 (0xE7) - INVALID_VALUE, // input 232 (0xE8) - INVALID_VALUE, // input 233 (0xE9) - INVALID_VALUE, // input 234 (0xEA) - INVALID_VALUE, // input 235 (0xEB) - INVALID_VALUE, // input 236 (0xEC) - INVALID_VALUE, // input 237 (0xED) - INVALID_VALUE, // input 238 (0xEE) - INVALID_VALUE, // input 239 (0xEF) - INVALID_VALUE, // input 240 (0xF0) - INVALID_VALUE, // input 241 (0xF1) - INVALID_VALUE, // input 242 (0xF2) - INVALID_VALUE, // input 243 (0xF3) - INVALID_VALUE, // input 244 (0xF4) - INVALID_VALUE, // input 245 (0xF5) - INVALID_VALUE, // input 246 (0xF6) - INVALID_VALUE, // input 247 (0xF7) - INVALID_VALUE, // input 248 (0xF8) - INVALID_VALUE, // input 249 (0xF9) - INVALID_VALUE, // input 250 (0xFA) - INVALID_VALUE, // input 251 (0xFB) - INVALID_VALUE, // input 252 (0xFC) - INVALID_VALUE, // input 253 (0xFD) - INVALID_VALUE, // input 254 (0xFE) - INVALID_VALUE, // input 255 (0xFF) -]; -#[rustfmt::skip] -pub const IMAP_MUTF7_ENCODE: &[u8; 64] = &[ - 65, // input 0 (0x0) => 'A' (0x41) - 66, // input 1 (0x1) => 'B' (0x42) - 67, // input 2 (0x2) => 'C' (0x43) - 68, // input 3 (0x3) => 'D' (0x44) - 69, // input 4 (0x4) => 'E' (0x45) - 70, // input 5 (0x5) => 'F' (0x46) - 71, // input 6 (0x6) => 'G' (0x47) - 72, // input 7 (0x7) => 'H' (0x48) - 73, // input 8 (0x8) => 'I' (0x49) - 74, // input 9 (0x9) => 'J' (0x4A) - 75, // input 10 (0xA) => 'K' (0x4B) - 76, // input 11 (0xB) => 'L' (0x4C) - 77, // input 12 (0xC) => 'M' (0x4D) - 78, // input 13 (0xD) => 'N' (0x4E) - 79, // input 14 (0xE) => 'O' (0x4F) - 80, // input 15 (0xF) => 'P' (0x50) - 81, // input 16 (0x10) => 'Q' (0x51) - 82, // input 17 (0x11) => 'R' (0x52) - 83, // input 18 (0x12) => 'S' (0x53) - 84, // input 19 (0x13) => 'T' (0x54) - 85, // input 20 (0x14) => 'U' (0x55) - 86, // input 21 (0x15) => 'V' (0x56) - 87, // input 22 (0x16) => 'W' (0x57) - 88, // input 23 (0x17) => 'X' (0x58) - 89, // input 24 (0x18) => 'Y' (0x59) - 90, // input 25 (0x19) => 'Z' (0x5A) - 97, // input 26 (0x1A) => 'a' (0x61) - 98, // input 27 (0x1B) => 'b' (0x62) - 99, // input 28 (0x1C) => 'c' (0x63) - 100, // input 29 (0x1D) => 'd' (0x64) - 101, // input 30 (0x1E) => 'e' (0x65) - 102, // input 31 (0x1F) => 'f' (0x66) - 103, // input 32 (0x20) => 'g' (0x67) - 104, // input 33 (0x21) => 'h' (0x68) - 105, // input 34 (0x22) => 'i' (0x69) - 106, // input 35 (0x23) => 'j' (0x6A) - 107, // input 36 (0x24) => 'k' (0x6B) - 108, // input 37 (0x25) => 'l' (0x6C) - 109, // input 38 (0x26) => 'm' (0x6D) - 110, // input 39 (0x27) => 'n' (0x6E) - 111, // input 40 (0x28) => 'o' (0x6F) - 112, // input 41 (0x29) => 'p' (0x70) - 113, // input 42 (0x2A) => 'q' (0x71) - 114, // input 43 (0x2B) => 'r' (0x72) - 115, // input 44 (0x2C) => 's' (0x73) - 116, // input 45 (0x2D) => 't' (0x74) - 117, // input 46 (0x2E) => 'u' (0x75) - 118, // input 47 (0x2F) => 'v' (0x76) - 119, // input 48 (0x30) => 'w' (0x77) - 120, // input 49 (0x31) => 'x' (0x78) - 121, // input 50 (0x32) => 'y' (0x79) - 122, // input 51 (0x33) => 'z' (0x7A) - 48, // input 52 (0x34) => '0' (0x30) - 49, // input 53 (0x35) => '1' (0x31) - 50, // input 54 (0x36) => '2' (0x32) - 51, // input 55 (0x37) => '3' (0x33) - 52, // input 56 (0x38) => '4' (0x34) - 53, // input 57 (0x39) => '5' (0x35) - 54, // input 58 (0x3A) => '6' (0x36) - 55, // input 59 (0x3B) => '7' (0x37) - 56, // input 60 (0x3C) => '8' (0x38) - 57, // input 61 (0x3D) => '9' (0x39) - 43, // input 62 (0x3E) => '+' (0x2B) - 44, // input 63 (0x3F) => ',' (0x2C) -]; -#[rustfmt::skip] -pub const IMAP_MUTF7_DECODE: &[u8; 256] = &[ - INVALID_VALUE, // input 0 (0x0) - INVALID_VALUE, // input 1 (0x1) - INVALID_VALUE, // input 2 (0x2) - INVALID_VALUE, // input 3 (0x3) - INVALID_VALUE, // input 4 (0x4) - INVALID_VALUE, // input 5 (0x5) - INVALID_VALUE, // input 6 (0x6) - INVALID_VALUE, // input 7 (0x7) - INVALID_VALUE, // input 8 (0x8) - INVALID_VALUE, // input 9 (0x9) - INVALID_VALUE, // input 10 (0xA) - INVALID_VALUE, // input 11 (0xB) - INVALID_VALUE, // input 12 (0xC) - INVALID_VALUE, // input 13 (0xD) - INVALID_VALUE, // input 14 (0xE) - INVALID_VALUE, // input 15 (0xF) - INVALID_VALUE, // input 16 (0x10) - INVALID_VALUE, // input 17 (0x11) - INVALID_VALUE, // input 18 (0x12) - INVALID_VALUE, // input 19 (0x13) - INVALID_VALUE, // input 20 (0x14) - INVALID_VALUE, // input 21 (0x15) - INVALID_VALUE, // input 22 (0x16) - INVALID_VALUE, // input 23 (0x17) - INVALID_VALUE, // input 24 (0x18) - INVALID_VALUE, // input 25 (0x19) - INVALID_VALUE, // input 26 (0x1A) - INVALID_VALUE, // input 27 (0x1B) - INVALID_VALUE, // input 28 (0x1C) - INVALID_VALUE, // input 29 (0x1D) - INVALID_VALUE, // input 30 (0x1E) - INVALID_VALUE, // input 31 (0x1F) - INVALID_VALUE, // input 32 (0x20) - INVALID_VALUE, // input 33 (0x21) - INVALID_VALUE, // input 34 (0x22) - INVALID_VALUE, // input 35 (0x23) - INVALID_VALUE, // input 36 (0x24) - INVALID_VALUE, // input 37 (0x25) - INVALID_VALUE, // input 38 (0x26) - INVALID_VALUE, // input 39 (0x27) - INVALID_VALUE, // input 40 (0x28) - INVALID_VALUE, // input 41 (0x29) - INVALID_VALUE, // input 42 (0x2A) - 62, // input 43 (0x2B char '+') => 62 (0x3E) - 63, // input 44 (0x2C char ',') => 63 (0x3F) - INVALID_VALUE, // input 45 (0x2D) - INVALID_VALUE, // input 46 (0x2E) - INVALID_VALUE, // input 47 (0x2F) - 52, // input 48 (0x30 char '0') => 52 (0x34) - 53, // input 49 (0x31 char '1') => 53 (0x35) - 54, // input 50 (0x32 char '2') => 54 (0x36) - 55, // input 51 (0x33 char '3') => 55 (0x37) - 56, // input 52 (0x34 char '4') => 56 (0x38) - 57, // input 53 (0x35 char '5') => 57 (0x39) - 58, // input 54 (0x36 char '6') => 58 (0x3A) - 59, // input 55 (0x37 char '7') => 59 (0x3B) - 60, // input 56 (0x38 char '8') => 60 (0x3C) - 61, // input 57 (0x39 char '9') => 61 (0x3D) - INVALID_VALUE, // input 58 (0x3A) - INVALID_VALUE, // input 59 (0x3B) - INVALID_VALUE, // input 60 (0x3C) - INVALID_VALUE, // input 61 (0x3D) - INVALID_VALUE, // input 62 (0x3E) - INVALID_VALUE, // input 63 (0x3F) - INVALID_VALUE, // input 64 (0x40) - 0, // input 65 (0x41 char 'A') => 0 (0x0) - 1, // input 66 (0x42 char 'B') => 1 (0x1) - 2, // input 67 (0x43 char 'C') => 2 (0x2) - 3, // input 68 (0x44 char 'D') => 3 (0x3) - 4, // input 69 (0x45 char 'E') => 4 (0x4) - 5, // input 70 (0x46 char 'F') => 5 (0x5) - 6, // input 71 (0x47 char 'G') => 6 (0x6) - 7, // input 72 (0x48 char 'H') => 7 (0x7) - 8, // input 73 (0x49 char 'I') => 8 (0x8) - 9, // input 74 (0x4A char 'J') => 9 (0x9) - 10, // input 75 (0x4B char 'K') => 10 (0xA) - 11, // input 76 (0x4C char 'L') => 11 (0xB) - 12, // input 77 (0x4D char 'M') => 12 (0xC) - 13, // input 78 (0x4E char 'N') => 13 (0xD) - 14, // input 79 (0x4F char 'O') => 14 (0xE) - 15, // input 80 (0x50 char 'P') => 15 (0xF) - 16, // input 81 (0x51 char 'Q') => 16 (0x10) - 17, // input 82 (0x52 char 'R') => 17 (0x11) - 18, // input 83 (0x53 char 'S') => 18 (0x12) - 19, // input 84 (0x54 char 'T') => 19 (0x13) - 20, // input 85 (0x55 char 'U') => 20 (0x14) - 21, // input 86 (0x56 char 'V') => 21 (0x15) - 22, // input 87 (0x57 char 'W') => 22 (0x16) - 23, // input 88 (0x58 char 'X') => 23 (0x17) - 24, // input 89 (0x59 char 'Y') => 24 (0x18) - 25, // input 90 (0x5A char 'Z') => 25 (0x19) - INVALID_VALUE, // input 91 (0x5B) - INVALID_VALUE, // input 92 (0x5C) - INVALID_VALUE, // input 93 (0x5D) - INVALID_VALUE, // input 94 (0x5E) - INVALID_VALUE, // input 95 (0x5F) - INVALID_VALUE, // input 96 (0x60) - 26, // input 97 (0x61 char 'a') => 26 (0x1A) - 27, // input 98 (0x62 char 'b') => 27 (0x1B) - 28, // input 99 (0x63 char 'c') => 28 (0x1C) - 29, // input 100 (0x64 char 'd') => 29 (0x1D) - 30, // input 101 (0x65 char 'e') => 30 (0x1E) - 31, // input 102 (0x66 char 'f') => 31 (0x1F) - 32, // input 103 (0x67 char 'g') => 32 (0x20) - 33, // input 104 (0x68 char 'h') => 33 (0x21) - 34, // input 105 (0x69 char 'i') => 34 (0x22) - 35, // input 106 (0x6A char 'j') => 35 (0x23) - 36, // input 107 (0x6B char 'k') => 36 (0x24) - 37, // input 108 (0x6C char 'l') => 37 (0x25) - 38, // input 109 (0x6D char 'm') => 38 (0x26) - 39, // input 110 (0x6E char 'n') => 39 (0x27) - 40, // input 111 (0x6F char 'o') => 40 (0x28) - 41, // input 112 (0x70 char 'p') => 41 (0x29) - 42, // input 113 (0x71 char 'q') => 42 (0x2A) - 43, // input 114 (0x72 char 'r') => 43 (0x2B) - 44, // input 115 (0x73 char 's') => 44 (0x2C) - 45, // input 116 (0x74 char 't') => 45 (0x2D) - 46, // input 117 (0x75 char 'u') => 46 (0x2E) - 47, // input 118 (0x76 char 'v') => 47 (0x2F) - 48, // input 119 (0x77 char 'w') => 48 (0x30) - 49, // input 120 (0x78 char 'x') => 49 (0x31) - 50, // input 121 (0x79 char 'y') => 50 (0x32) - 51, // input 122 (0x7A char 'z') => 51 (0x33) - INVALID_VALUE, // input 123 (0x7B) - INVALID_VALUE, // input 124 (0x7C) - INVALID_VALUE, // input 125 (0x7D) - INVALID_VALUE, // input 126 (0x7E) - INVALID_VALUE, // input 127 (0x7F) - INVALID_VALUE, // input 128 (0x80) - INVALID_VALUE, // input 129 (0x81) - INVALID_VALUE, // input 130 (0x82) - INVALID_VALUE, // input 131 (0x83) - INVALID_VALUE, // input 132 (0x84) - INVALID_VALUE, // input 133 (0x85) - INVALID_VALUE, // input 134 (0x86) - INVALID_VALUE, // input 135 (0x87) - INVALID_VALUE, // input 136 (0x88) - INVALID_VALUE, // input 137 (0x89) - INVALID_VALUE, // input 138 (0x8A) - INVALID_VALUE, // input 139 (0x8B) - INVALID_VALUE, // input 140 (0x8C) - INVALID_VALUE, // input 141 (0x8D) - INVALID_VALUE, // input 142 (0x8E) - INVALID_VALUE, // input 143 (0x8F) - INVALID_VALUE, // input 144 (0x90) - INVALID_VALUE, // input 145 (0x91) - INVALID_VALUE, // input 146 (0x92) - INVALID_VALUE, // input 147 (0x93) - INVALID_VALUE, // input 148 (0x94) - INVALID_VALUE, // input 149 (0x95) - INVALID_VALUE, // input 150 (0x96) - INVALID_VALUE, // input 151 (0x97) - INVALID_VALUE, // input 152 (0x98) - INVALID_VALUE, // input 153 (0x99) - INVALID_VALUE, // input 154 (0x9A) - INVALID_VALUE, // input 155 (0x9B) - INVALID_VALUE, // input 156 (0x9C) - INVALID_VALUE, // input 157 (0x9D) - INVALID_VALUE, // input 158 (0x9E) - INVALID_VALUE, // input 159 (0x9F) - INVALID_VALUE, // input 160 (0xA0) - INVALID_VALUE, // input 161 (0xA1) - INVALID_VALUE, // input 162 (0xA2) - INVALID_VALUE, // input 163 (0xA3) - INVALID_VALUE, // input 164 (0xA4) - INVALID_VALUE, // input 165 (0xA5) - INVALID_VALUE, // input 166 (0xA6) - INVALID_VALUE, // input 167 (0xA7) - INVALID_VALUE, // input 168 (0xA8) - INVALID_VALUE, // input 169 (0xA9) - INVALID_VALUE, // input 170 (0xAA) - INVALID_VALUE, // input 171 (0xAB) - INVALID_VALUE, // input 172 (0xAC) - INVALID_VALUE, // input 173 (0xAD) - INVALID_VALUE, // input 174 (0xAE) - INVALID_VALUE, // input 175 (0xAF) - INVALID_VALUE, // input 176 (0xB0) - INVALID_VALUE, // input 177 (0xB1) - INVALID_VALUE, // input 178 (0xB2) - INVALID_VALUE, // input 179 (0xB3) - INVALID_VALUE, // input 180 (0xB4) - INVALID_VALUE, // input 181 (0xB5) - INVALID_VALUE, // input 182 (0xB6) - INVALID_VALUE, // input 183 (0xB7) - INVALID_VALUE, // input 184 (0xB8) - INVALID_VALUE, // input 185 (0xB9) - INVALID_VALUE, // input 186 (0xBA) - INVALID_VALUE, // input 187 (0xBB) - INVALID_VALUE, // input 188 (0xBC) - INVALID_VALUE, // input 189 (0xBD) - INVALID_VALUE, // input 190 (0xBE) - INVALID_VALUE, // input 191 (0xBF) - INVALID_VALUE, // input 192 (0xC0) - INVALID_VALUE, // input 193 (0xC1) - INVALID_VALUE, // input 194 (0xC2) - INVALID_VALUE, // input 195 (0xC3) - INVALID_VALUE, // input 196 (0xC4) - INVALID_VALUE, // input 197 (0xC5) - INVALID_VALUE, // input 198 (0xC6) - INVALID_VALUE, // input 199 (0xC7) - INVALID_VALUE, // input 200 (0xC8) - INVALID_VALUE, // input 201 (0xC9) - INVALID_VALUE, // input 202 (0xCA) - INVALID_VALUE, // input 203 (0xCB) - INVALID_VALUE, // input 204 (0xCC) - INVALID_VALUE, // input 205 (0xCD) - INVALID_VALUE, // input 206 (0xCE) - INVALID_VALUE, // input 207 (0xCF) - INVALID_VALUE, // input 208 (0xD0) - INVALID_VALUE, // input 209 (0xD1) - INVALID_VALUE, // input 210 (0xD2) - INVALID_VALUE, // input 211 (0xD3) - INVALID_VALUE, // input 212 (0xD4) - INVALID_VALUE, // input 213 (0xD5) - INVALID_VALUE, // input 214 (0xD6) - INVALID_VALUE, // input 215 (0xD7) - INVALID_VALUE, // input 216 (0xD8) - INVALID_VALUE, // input 217 (0xD9) - INVALID_VALUE, // input 218 (0xDA) - INVALID_VALUE, // input 219 (0xDB) - INVALID_VALUE, // input 220 (0xDC) - INVALID_VALUE, // input 221 (0xDD) - INVALID_VALUE, // input 222 (0xDE) - INVALID_VALUE, // input 223 (0xDF) - INVALID_VALUE, // input 224 (0xE0) - INVALID_VALUE, // input 225 (0xE1) - INVALID_VALUE, // input 226 (0xE2) - INVALID_VALUE, // input 227 (0xE3) - INVALID_VALUE, // input 228 (0xE4) - INVALID_VALUE, // input 229 (0xE5) - INVALID_VALUE, // input 230 (0xE6) - INVALID_VALUE, // input 231 (0xE7) - INVALID_VALUE, // input 232 (0xE8) - INVALID_VALUE, // input 233 (0xE9) - INVALID_VALUE, // input 234 (0xEA) - INVALID_VALUE, // input 235 (0xEB) - INVALID_VALUE, // input 236 (0xEC) - INVALID_VALUE, // input 237 (0xED) - INVALID_VALUE, // input 238 (0xEE) - INVALID_VALUE, // input 239 (0xEF) - INVALID_VALUE, // input 240 (0xF0) - INVALID_VALUE, // input 241 (0xF1) - INVALID_VALUE, // input 242 (0xF2) - INVALID_VALUE, // input 243 (0xF3) - INVALID_VALUE, // input 244 (0xF4) - INVALID_VALUE, // input 245 (0xF5) - INVALID_VALUE, // input 246 (0xF6) - INVALID_VALUE, // input 247 (0xF7) - INVALID_VALUE, // input 248 (0xF8) - INVALID_VALUE, // input 249 (0xF9) - INVALID_VALUE, // input 250 (0xFA) - INVALID_VALUE, // input 251 (0xFB) - INVALID_VALUE, // input 252 (0xFC) - INVALID_VALUE, // input 253 (0xFD) - INVALID_VALUE, // input 254 (0xFE) - INVALID_VALUE, // input 255 (0xFF) -]; -#[rustfmt::skip] -pub const BINHEX_ENCODE: &[u8; 64] = &[ - 33, // input 0 (0x0) => '!' (0x21) - 34, // input 1 (0x1) => '"' (0x22) - 35, // input 2 (0x2) => '#' (0x23) - 36, // input 3 (0x3) => '$' (0x24) - 37, // input 4 (0x4) => '%' (0x25) - 38, // input 5 (0x5) => '&' (0x26) - 39, // input 6 (0x6) => ''' (0x27) - 40, // input 7 (0x7) => '(' (0x28) - 41, // input 8 (0x8) => ')' (0x29) - 42, // input 9 (0x9) => '*' (0x2A) - 43, // input 10 (0xA) => '+' (0x2B) - 44, // input 11 (0xB) => ',' (0x2C) - 45, // input 12 (0xC) => '-' (0x2D) - 48, // input 13 (0xD) => '0' (0x30) - 49, // input 14 (0xE) => '1' (0x31) - 50, // input 15 (0xF) => '2' (0x32) - 51, // input 16 (0x10) => '3' (0x33) - 52, // input 17 (0x11) => '4' (0x34) - 53, // input 18 (0x12) => '5' (0x35) - 54, // input 19 (0x13) => '6' (0x36) - 55, // input 20 (0x14) => '7' (0x37) - 56, // input 21 (0x15) => '8' (0x38) - 57, // input 22 (0x16) => '9' (0x39) - 64, // input 23 (0x17) => '@' (0x40) - 65, // input 24 (0x18) => 'A' (0x41) - 66, // input 25 (0x19) => 'B' (0x42) - 67, // input 26 (0x1A) => 'C' (0x43) - 68, // input 27 (0x1B) => 'D' (0x44) - 69, // input 28 (0x1C) => 'E' (0x45) - 70, // input 29 (0x1D) => 'F' (0x46) - 71, // input 30 (0x1E) => 'G' (0x47) - 72, // input 31 (0x1F) => 'H' (0x48) - 73, // input 32 (0x20) => 'I' (0x49) - 74, // input 33 (0x21) => 'J' (0x4A) - 75, // input 34 (0x22) => 'K' (0x4B) - 76, // input 35 (0x23) => 'L' (0x4C) - 77, // input 36 (0x24) => 'M' (0x4D) - 78, // input 37 (0x25) => 'N' (0x4E) - 80, // input 38 (0x26) => 'P' (0x50) - 81, // input 39 (0x27) => 'Q' (0x51) - 82, // input 40 (0x28) => 'R' (0x52) - 83, // input 41 (0x29) => 'S' (0x53) - 84, // input 42 (0x2A) => 'T' (0x54) - 85, // input 43 (0x2B) => 'U' (0x55) - 86, // input 44 (0x2C) => 'V' (0x56) - 88, // input 45 (0x2D) => 'X' (0x58) - 89, // input 46 (0x2E) => 'Y' (0x59) - 90, // input 47 (0x2F) => 'Z' (0x5A) - 91, // input 48 (0x30) => '[' (0x5B) - 96, // input 49 (0x31) => '`' (0x60) - 97, // input 50 (0x32) => 'a' (0x61) - 98, // input 51 (0x33) => 'b' (0x62) - 99, // input 52 (0x34) => 'c' (0x63) - 100, // input 53 (0x35) => 'd' (0x64) - 101, // input 54 (0x36) => 'e' (0x65) - 104, // input 55 (0x37) => 'h' (0x68) - 105, // input 56 (0x38) => 'i' (0x69) - 106, // input 57 (0x39) => 'j' (0x6A) - 107, // input 58 (0x3A) => 'k' (0x6B) - 108, // input 59 (0x3B) => 'l' (0x6C) - 109, // input 60 (0x3C) => 'm' (0x6D) - 112, // input 61 (0x3D) => 'p' (0x70) - 113, // input 62 (0x3E) => 'q' (0x71) - 114, // input 63 (0x3F) => 'r' (0x72) -]; -#[rustfmt::skip] -pub const BINHEX_DECODE: &[u8; 256] = &[ - INVALID_VALUE, // input 0 (0x0) - INVALID_VALUE, // input 1 (0x1) - INVALID_VALUE, // input 2 (0x2) - INVALID_VALUE, // input 3 (0x3) - INVALID_VALUE, // input 4 (0x4) - INVALID_VALUE, // input 5 (0x5) - INVALID_VALUE, // input 6 (0x6) - INVALID_VALUE, // input 7 (0x7) - INVALID_VALUE, // input 8 (0x8) - INVALID_VALUE, // input 9 (0x9) - INVALID_VALUE, // input 10 (0xA) - INVALID_VALUE, // input 11 (0xB) - INVALID_VALUE, // input 12 (0xC) - INVALID_VALUE, // input 13 (0xD) - INVALID_VALUE, // input 14 (0xE) - INVALID_VALUE, // input 15 (0xF) - INVALID_VALUE, // input 16 (0x10) - INVALID_VALUE, // input 17 (0x11) - INVALID_VALUE, // input 18 (0x12) - INVALID_VALUE, // input 19 (0x13) - INVALID_VALUE, // input 20 (0x14) - INVALID_VALUE, // input 21 (0x15) - INVALID_VALUE, // input 22 (0x16) - INVALID_VALUE, // input 23 (0x17) - INVALID_VALUE, // input 24 (0x18) - INVALID_VALUE, // input 25 (0x19) - INVALID_VALUE, // input 26 (0x1A) - INVALID_VALUE, // input 27 (0x1B) - INVALID_VALUE, // input 28 (0x1C) - INVALID_VALUE, // input 29 (0x1D) - INVALID_VALUE, // input 30 (0x1E) - INVALID_VALUE, // input 31 (0x1F) - INVALID_VALUE, // input 32 (0x20) - 0, // input 33 (0x21 char '!') => 0 (0x0) - 1, // input 34 (0x22 char '"') => 1 (0x1) - 2, // input 35 (0x23 char '#') => 2 (0x2) - 3, // input 36 (0x24 char '$') => 3 (0x3) - 4, // input 37 (0x25 char '%') => 4 (0x4) - 5, // input 38 (0x26 char '&') => 5 (0x5) - 6, // input 39 (0x27 char ''') => 6 (0x6) - 7, // input 40 (0x28 char '(') => 7 (0x7) - 8, // input 41 (0x29 char ')') => 8 (0x8) - 9, // input 42 (0x2A char '*') => 9 (0x9) - 10, // input 43 (0x2B char '+') => 10 (0xA) - 11, // input 44 (0x2C char ',') => 11 (0xB) - 12, // input 45 (0x2D char '-') => 12 (0xC) - INVALID_VALUE, // input 46 (0x2E) - INVALID_VALUE, // input 47 (0x2F) - 13, // input 48 (0x30 char '0') => 13 (0xD) - 14, // input 49 (0x31 char '1') => 14 (0xE) - 15, // input 50 (0x32 char '2') => 15 (0xF) - 16, // input 51 (0x33 char '3') => 16 (0x10) - 17, // input 52 (0x34 char '4') => 17 (0x11) - 18, // input 53 (0x35 char '5') => 18 (0x12) - 19, // input 54 (0x36 char '6') => 19 (0x13) - 20, // input 55 (0x37 char '7') => 20 (0x14) - 21, // input 56 (0x38 char '8') => 21 (0x15) - 22, // input 57 (0x39 char '9') => 22 (0x16) - INVALID_VALUE, // input 58 (0x3A) - INVALID_VALUE, // input 59 (0x3B) - INVALID_VALUE, // input 60 (0x3C) - INVALID_VALUE, // input 61 (0x3D) - INVALID_VALUE, // input 62 (0x3E) - INVALID_VALUE, // input 63 (0x3F) - 23, // input 64 (0x40 char '@') => 23 (0x17) - 24, // input 65 (0x41 char 'A') => 24 (0x18) - 25, // input 66 (0x42 char 'B') => 25 (0x19) - 26, // input 67 (0x43 char 'C') => 26 (0x1A) - 27, // input 68 (0x44 char 'D') => 27 (0x1B) - 28, // input 69 (0x45 char 'E') => 28 (0x1C) - 29, // input 70 (0x46 char 'F') => 29 (0x1D) - 30, // input 71 (0x47 char 'G') => 30 (0x1E) - 31, // input 72 (0x48 char 'H') => 31 (0x1F) - 32, // input 73 (0x49 char 'I') => 32 (0x20) - 33, // input 74 (0x4A char 'J') => 33 (0x21) - 34, // input 75 (0x4B char 'K') => 34 (0x22) - 35, // input 76 (0x4C char 'L') => 35 (0x23) - 36, // input 77 (0x4D char 'M') => 36 (0x24) - 37, // input 78 (0x4E char 'N') => 37 (0x25) - INVALID_VALUE, // input 79 (0x4F) - 38, // input 80 (0x50 char 'P') => 38 (0x26) - 39, // input 81 (0x51 char 'Q') => 39 (0x27) - 40, // input 82 (0x52 char 'R') => 40 (0x28) - 41, // input 83 (0x53 char 'S') => 41 (0x29) - 42, // input 84 (0x54 char 'T') => 42 (0x2A) - 43, // input 85 (0x55 char 'U') => 43 (0x2B) - 44, // input 86 (0x56 char 'V') => 44 (0x2C) - INVALID_VALUE, // input 87 (0x57) - 45, // input 88 (0x58 char 'X') => 45 (0x2D) - 46, // input 89 (0x59 char 'Y') => 46 (0x2E) - 47, // input 90 (0x5A char 'Z') => 47 (0x2F) - 48, // input 91 (0x5B char '[') => 48 (0x30) - INVALID_VALUE, // input 92 (0x5C) - INVALID_VALUE, // input 93 (0x5D) - INVALID_VALUE, // input 94 (0x5E) - INVALID_VALUE, // input 95 (0x5F) - 49, // input 96 (0x60 char '`') => 49 (0x31) - 50, // input 97 (0x61 char 'a') => 50 (0x32) - 51, // input 98 (0x62 char 'b') => 51 (0x33) - 52, // input 99 (0x63 char 'c') => 52 (0x34) - 53, // input 100 (0x64 char 'd') => 53 (0x35) - 54, // input 101 (0x65 char 'e') => 54 (0x36) - INVALID_VALUE, // input 102 (0x66) - INVALID_VALUE, // input 103 (0x67) - 55, // input 104 (0x68 char 'h') => 55 (0x37) - 56, // input 105 (0x69 char 'i') => 56 (0x38) - 57, // input 106 (0x6A char 'j') => 57 (0x39) - 58, // input 107 (0x6B char 'k') => 58 (0x3A) - 59, // input 108 (0x6C char 'l') => 59 (0x3B) - 60, // input 109 (0x6D char 'm') => 60 (0x3C) - INVALID_VALUE, // input 110 (0x6E) - INVALID_VALUE, // input 111 (0x6F) - 61, // input 112 (0x70 char 'p') => 61 (0x3D) - 62, // input 113 (0x71 char 'q') => 62 (0x3E) - 63, // input 114 (0x72 char 'r') => 63 (0x3F) - INVALID_VALUE, // input 115 (0x73) - INVALID_VALUE, // input 116 (0x74) - INVALID_VALUE, // input 117 (0x75) - INVALID_VALUE, // input 118 (0x76) - INVALID_VALUE, // input 119 (0x77) - INVALID_VALUE, // input 120 (0x78) - INVALID_VALUE, // input 121 (0x79) - INVALID_VALUE, // input 122 (0x7A) - INVALID_VALUE, // input 123 (0x7B) - INVALID_VALUE, // input 124 (0x7C) - INVALID_VALUE, // input 125 (0x7D) - INVALID_VALUE, // input 126 (0x7E) - INVALID_VALUE, // input 127 (0x7F) - INVALID_VALUE, // input 128 (0x80) - INVALID_VALUE, // input 129 (0x81) - INVALID_VALUE, // input 130 (0x82) - INVALID_VALUE, // input 131 (0x83) - INVALID_VALUE, // input 132 (0x84) - INVALID_VALUE, // input 133 (0x85) - INVALID_VALUE, // input 134 (0x86) - INVALID_VALUE, // input 135 (0x87) - INVALID_VALUE, // input 136 (0x88) - INVALID_VALUE, // input 137 (0x89) - INVALID_VALUE, // input 138 (0x8A) - INVALID_VALUE, // input 139 (0x8B) - INVALID_VALUE, // input 140 (0x8C) - INVALID_VALUE, // input 141 (0x8D) - INVALID_VALUE, // input 142 (0x8E) - INVALID_VALUE, // input 143 (0x8F) - INVALID_VALUE, // input 144 (0x90) - INVALID_VALUE, // input 145 (0x91) - INVALID_VALUE, // input 146 (0x92) - INVALID_VALUE, // input 147 (0x93) - INVALID_VALUE, // input 148 (0x94) - INVALID_VALUE, // input 149 (0x95) - INVALID_VALUE, // input 150 (0x96) - INVALID_VALUE, // input 151 (0x97) - INVALID_VALUE, // input 152 (0x98) - INVALID_VALUE, // input 153 (0x99) - INVALID_VALUE, // input 154 (0x9A) - INVALID_VALUE, // input 155 (0x9B) - INVALID_VALUE, // input 156 (0x9C) - INVALID_VALUE, // input 157 (0x9D) - INVALID_VALUE, // input 158 (0x9E) - INVALID_VALUE, // input 159 (0x9F) - INVALID_VALUE, // input 160 (0xA0) - INVALID_VALUE, // input 161 (0xA1) - INVALID_VALUE, // input 162 (0xA2) - INVALID_VALUE, // input 163 (0xA3) - INVALID_VALUE, // input 164 (0xA4) - INVALID_VALUE, // input 165 (0xA5) - INVALID_VALUE, // input 166 (0xA6) - INVALID_VALUE, // input 167 (0xA7) - INVALID_VALUE, // input 168 (0xA8) - INVALID_VALUE, // input 169 (0xA9) - INVALID_VALUE, // input 170 (0xAA) - INVALID_VALUE, // input 171 (0xAB) - INVALID_VALUE, // input 172 (0xAC) - INVALID_VALUE, // input 173 (0xAD) - INVALID_VALUE, // input 174 (0xAE) - INVALID_VALUE, // input 175 (0xAF) - INVALID_VALUE, // input 176 (0xB0) - INVALID_VALUE, // input 177 (0xB1) - INVALID_VALUE, // input 178 (0xB2) - INVALID_VALUE, // input 179 (0xB3) - INVALID_VALUE, // input 180 (0xB4) - INVALID_VALUE, // input 181 (0xB5) - INVALID_VALUE, // input 182 (0xB6) - INVALID_VALUE, // input 183 (0xB7) - INVALID_VALUE, // input 184 (0xB8) - INVALID_VALUE, // input 185 (0xB9) - INVALID_VALUE, // input 186 (0xBA) - INVALID_VALUE, // input 187 (0xBB) - INVALID_VALUE, // input 188 (0xBC) - INVALID_VALUE, // input 189 (0xBD) - INVALID_VALUE, // input 190 (0xBE) - INVALID_VALUE, // input 191 (0xBF) - INVALID_VALUE, // input 192 (0xC0) - INVALID_VALUE, // input 193 (0xC1) - INVALID_VALUE, // input 194 (0xC2) - INVALID_VALUE, // input 195 (0xC3) - INVALID_VALUE, // input 196 (0xC4) - INVALID_VALUE, // input 197 (0xC5) - INVALID_VALUE, // input 198 (0xC6) - INVALID_VALUE, // input 199 (0xC7) - INVALID_VALUE, // input 200 (0xC8) - INVALID_VALUE, // input 201 (0xC9) - INVALID_VALUE, // input 202 (0xCA) - INVALID_VALUE, // input 203 (0xCB) - INVALID_VALUE, // input 204 (0xCC) - INVALID_VALUE, // input 205 (0xCD) - INVALID_VALUE, // input 206 (0xCE) - INVALID_VALUE, // input 207 (0xCF) - INVALID_VALUE, // input 208 (0xD0) - INVALID_VALUE, // input 209 (0xD1) - INVALID_VALUE, // input 210 (0xD2) - INVALID_VALUE, // input 211 (0xD3) - INVALID_VALUE, // input 212 (0xD4) - INVALID_VALUE, // input 213 (0xD5) - INVALID_VALUE, // input 214 (0xD6) - INVALID_VALUE, // input 215 (0xD7) - INVALID_VALUE, // input 216 (0xD8) - INVALID_VALUE, // input 217 (0xD9) - INVALID_VALUE, // input 218 (0xDA) - INVALID_VALUE, // input 219 (0xDB) - INVALID_VALUE, // input 220 (0xDC) - INVALID_VALUE, // input 221 (0xDD) - INVALID_VALUE, // input 222 (0xDE) - INVALID_VALUE, // input 223 (0xDF) - INVALID_VALUE, // input 224 (0xE0) - INVALID_VALUE, // input 225 (0xE1) - INVALID_VALUE, // input 226 (0xE2) - INVALID_VALUE, // input 227 (0xE3) - INVALID_VALUE, // input 228 (0xE4) - INVALID_VALUE, // input 229 (0xE5) - INVALID_VALUE, // input 230 (0xE6) - INVALID_VALUE, // input 231 (0xE7) - INVALID_VALUE, // input 232 (0xE8) - INVALID_VALUE, // input 233 (0xE9) - INVALID_VALUE, // input 234 (0xEA) - INVALID_VALUE, // input 235 (0xEB) - INVALID_VALUE, // input 236 (0xEC) - INVALID_VALUE, // input 237 (0xED) - INVALID_VALUE, // input 238 (0xEE) - INVALID_VALUE, // input 239 (0xEF) - INVALID_VALUE, // input 240 (0xF0) - INVALID_VALUE, // input 241 (0xF1) - INVALID_VALUE, // input 242 (0xF2) - INVALID_VALUE, // input 243 (0xF3) - INVALID_VALUE, // input 244 (0xF4) - INVALID_VALUE, // input 245 (0xF5) - INVALID_VALUE, // input 246 (0xF6) - INVALID_VALUE, // input 247 (0xF7) - INVALID_VALUE, // input 248 (0xF8) - INVALID_VALUE, // input 249 (0xF9) - INVALID_VALUE, // input 250 (0xFA) - INVALID_VALUE, // input 251 (0xFB) - INVALID_VALUE, // input 252 (0xFC) - INVALID_VALUE, // input 253 (0xFD) - INVALID_VALUE, // input 254 (0xFE) - INVALID_VALUE, // input 255 (0xFF) -]; diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/src/tests.rs temporalio-1.3.0/vendor/base64-0.13.1/src/tests.rs --- temporalio-1.3.0/vendor/base64-0.13.1/src/tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/src/tests.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -use crate::{decode_config, encode::encoded_size, encode_config_buf, CharacterSet, Config}; - -use std::str; - -use rand::{ - distributions::{Distribution, Uniform}, - seq::SliceRandom, - FromEntropy, Rng, -}; - -#[test] -fn roundtrip_random_config_short() { - // exercise the slower encode/decode routines that operate on shorter buffers more vigorously - roundtrip_random_config(Uniform::new(0, 50), 10_000); -} - -#[test] -fn roundtrip_random_config_long() { - roundtrip_random_config(Uniform::new(0, 1000), 10_000); -} - -pub fn assert_encode_sanity(encoded: &str, config: Config, input_len: usize) { - let input_rem = input_len % 3; - let expected_padding_len = if input_rem > 0 { - if config.pad { - 3 - input_rem - } else { - 0 - } - } else { - 0 - }; - - let expected_encoded_len = encoded_size(input_len, config).unwrap(); - - assert_eq!(expected_encoded_len, encoded.len()); - - let padding_len = encoded.chars().filter(|&c| c == '=').count(); - - assert_eq!(expected_padding_len, padding_len); - - let _ = str::from_utf8(encoded.as_bytes()).expect("Base64 should be valid utf8"); -} - -fn roundtrip_random_config(input_len_range: Uniform, iterations: u32) { - let mut input_buf: Vec = Vec::new(); - let mut encoded_buf = String::new(); - let mut rng = rand::rngs::SmallRng::from_entropy(); - - for _ in 0..iterations { - input_buf.clear(); - encoded_buf.clear(); - - let input_len = input_len_range.sample(&mut rng); - - let config = random_config(&mut rng); - - for _ in 0..input_len { - input_buf.push(rng.gen()); - } - - encode_config_buf(&input_buf, config, &mut encoded_buf); - - assert_encode_sanity(&encoded_buf, config, input_len); - - assert_eq!(input_buf, decode_config(&encoded_buf, config).unwrap()); - } -} - -pub fn random_config(rng: &mut R) -> Config { - const CHARSETS: &[CharacterSet] = &[ - CharacterSet::UrlSafe, - CharacterSet::Standard, - CharacterSet::Crypt, - CharacterSet::ImapMutf7, - CharacterSet::BinHex, - ]; - let charset = *CHARSETS.choose(rng).unwrap(); - - Config::new(charset, rng.gen()) -} diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/src/write/encoder.rs temporalio-1.3.0/vendor/base64-0.13.1/src/write/encoder.rs --- temporalio-1.3.0/vendor/base64-0.13.1/src/write/encoder.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/src/write/encoder.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,381 +0,0 @@ -use crate::encode::encode_to_slice; -use crate::{encode_config_slice, Config}; -use std::{ - cmp, fmt, - io::{ErrorKind, Result, Write}, -}; - -pub(crate) const BUF_SIZE: usize = 1024; -/// The most bytes whose encoding will fit in `BUF_SIZE` -const MAX_INPUT_LEN: usize = BUF_SIZE / 4 * 3; -// 3 bytes of input = 4 bytes of base64, always (because we don't allow line wrapping) -const MIN_ENCODE_CHUNK_SIZE: usize = 3; - -/// A `Write` implementation that base64 encodes data before delegating to the wrapped writer. -/// -/// Because base64 has special handling for the end of the input data (padding, etc), there's a -/// `finish()` method on this type that encodes any leftover input bytes and adds padding if -/// appropriate. It's called automatically when deallocated (see the `Drop` implementation), but -/// any error that occurs when invoking the underlying writer will be suppressed. If you want to -/// handle such errors, call `finish()` yourself. -/// -/// # Examples -/// -/// ``` -/// use std::io::Write; -/// -/// // use a vec as the simplest possible `Write` -- in real code this is probably a file, etc. -/// let mut enc = base64::write::EncoderWriter::new(Vec::new(), base64::STANDARD); -/// -/// // handle errors as you normally would -/// enc.write_all(b"asdf").unwrap(); -/// -/// // could leave this out to be called by Drop, if you don't care -/// // about handling errors or getting the delegate writer back -/// let delegate = enc.finish().unwrap(); -/// -/// // base64 was written to the writer -/// assert_eq!(b"YXNkZg==", &delegate[..]); -/// -/// ``` -/// -/// # Panics -/// -/// Calling `write()` (or related methods) or `finish()` after `finish()` has completed without -/// error is invalid and will panic. -/// -/// # Errors -/// -/// Base64 encoding itself does not generate errors, but errors from the wrapped writer will be -/// returned as per the contract of `Write`. -/// -/// # Performance -/// -/// It has some minor performance loss compared to encoding slices (a couple percent). -/// It does not do any heap allocation. -pub struct EncoderWriter { - config: Config, - /// Where encoded data is written to. It's an Option as it's None immediately before Drop is - /// called so that finish() can return the underlying writer. None implies that finish() has - /// been called successfully. - delegate: Option, - /// Holds a partial chunk, if any, after the last `write()`, so that we may then fill the chunk - /// with the next `write()`, encode it, then proceed with the rest of the input normally. - extra_input: [u8; MIN_ENCODE_CHUNK_SIZE], - /// How much of `extra` is occupied, in `[0, MIN_ENCODE_CHUNK_SIZE]`. - extra_input_occupied_len: usize, - /// Buffer to encode into. May hold leftover encoded bytes from a previous write call that the underlying writer - /// did not write last time. - output: [u8; BUF_SIZE], - /// How much of `output` is occupied with encoded data that couldn't be written last time - output_occupied_len: usize, - /// panic safety: don't write again in destructor if writer panicked while we were writing to it - panicked: bool, -} - -impl fmt::Debug for EncoderWriter { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!( - f, - "extra_input: {:?} extra_input_occupied_len:{:?} output[..5]: {:?} output_occupied_len: {:?}", - self.extra_input, - self.extra_input_occupied_len, - &self.output[0..5], - self.output_occupied_len - ) - } -} - -impl EncoderWriter { - /// Create a new encoder that will write to the provided delegate writer `w`. - pub fn new(w: W, config: Config) -> EncoderWriter { - EncoderWriter { - config, - delegate: Some(w), - extra_input: [0u8; MIN_ENCODE_CHUNK_SIZE], - extra_input_occupied_len: 0, - output: [0u8; BUF_SIZE], - output_occupied_len: 0, - panicked: false, - } - } - - /// Encode all remaining buffered data and write it, including any trailing incomplete input - /// triples and associated padding. - /// - /// Once this succeeds, no further writes or calls to this method are allowed. - /// - /// This may write to the delegate writer multiple times if the delegate writer does not accept - /// all input provided to its `write` each invocation. - /// - /// If you don't care about error handling, it is not necessary to call this function, as the - /// equivalent finalization is done by the Drop impl. - /// - /// Returns the writer that this was constructed around. - /// - /// # Errors - /// - /// The first error that is not of `ErrorKind::Interrupted` will be returned. - pub fn finish(&mut self) -> Result { - // If we could consume self in finish(), we wouldn't have to worry about this case, but - // finish() is retryable in the face of I/O errors, so we can't consume here. - if self.delegate.is_none() { - panic!("Encoder has already had finish() called") - }; - - self.write_final_leftovers()?; - - let writer = self.delegate.take().expect("Writer must be present"); - - Ok(writer) - } - - /// Write any remaining buffered data to the delegate writer. - fn write_final_leftovers(&mut self) -> Result<()> { - if self.delegate.is_none() { - // finish() has already successfully called this, and we are now in drop() with a None - // writer, so just no-op - return Ok(()); - } - - self.write_all_encoded_output()?; - - if self.extra_input_occupied_len > 0 { - let encoded_len = encode_config_slice( - &self.extra_input[..self.extra_input_occupied_len], - self.config, - &mut self.output[..], - ); - - self.output_occupied_len = encoded_len; - - self.write_all_encoded_output()?; - - // write succeeded, do not write the encoding of extra again if finish() is retried - self.extra_input_occupied_len = 0; - } - - Ok(()) - } - - /// Write as much of the encoded output to the delegate writer as it will accept, and store the - /// leftovers to be attempted at the next write() call. Updates `self.output_occupied_len`. - /// - /// # Errors - /// - /// Errors from the delegate writer are returned. In the case of an error, - /// `self.output_occupied_len` will not be updated, as errors from `write` are specified to mean - /// that no write took place. - fn write_to_delegate(&mut self, current_output_len: usize) -> Result<()> { - self.panicked = true; - let res = self - .delegate - .as_mut() - .expect("Writer must be present") - .write(&self.output[..current_output_len]); - self.panicked = false; - - res.map(|consumed| { - debug_assert!(consumed <= current_output_len); - - if consumed < current_output_len { - self.output_occupied_len = current_output_len.checked_sub(consumed).unwrap(); - // If we're blocking on I/O, the minor inefficiency of copying bytes to the - // start of the buffer is the least of our concerns... - // Rotate moves more than we need to, but copy_within isn't stabilized yet. - self.output.rotate_left(consumed); - } else { - self.output_occupied_len = 0; - } - }) - } - - /// Write all buffered encoded output. If this returns `Ok`, `self.output_occupied_len` is `0`. - /// - /// This is basically write_all for the remaining buffered data but without the undesirable - /// abort-on-`Ok(0)` behavior. - /// - /// # Errors - /// - /// Any error emitted by the delegate writer abort the write loop and is returned, unless it's - /// `Interrupted`, in which case the error is ignored and writes will continue. - fn write_all_encoded_output(&mut self) -> Result<()> { - while self.output_occupied_len > 0 { - let remaining_len = self.output_occupied_len; - match self.write_to_delegate(remaining_len) { - // try again on interrupts ala write_all - Err(ref e) if e.kind() == ErrorKind::Interrupted => {} - // other errors return - Err(e) => return Err(e), - // success no-ops because remaining length is already updated - Ok(_) => {} - }; - } - - debug_assert_eq!(0, self.output_occupied_len); - Ok(()) - } -} - -impl Write for EncoderWriter { - /// Encode input and then write to the delegate writer. - /// - /// Under non-error circumstances, this returns `Ok` with the value being the number of bytes - /// of `input` consumed. The value may be `0`, which interacts poorly with `write_all`, which - /// interprets `Ok(0)` as an error, despite it being allowed by the contract of `write`. See - /// for more on that. - /// - /// If the previous call to `write` provided more (encoded) data than the delegate writer could - /// accept in a single call to its `write`, the remaining data is buffered. As long as buffered - /// data is present, subsequent calls to `write` will try to write the remaining buffered data - /// to the delegate and return either `Ok(0)` -- and therefore not consume any of `input` -- or - /// an error. - /// - /// # Errors - /// - /// Any errors emitted by the delegate writer are returned. - fn write(&mut self, input: &[u8]) -> Result { - if self.delegate.is_none() { - panic!("Cannot write more after calling finish()"); - } - - if input.is_empty() { - return Ok(0); - } - - // The contract of `Write::write` places some constraints on this implementation: - // - a call to `write()` represents at most one call to a wrapped `Write`, so we can't - // iterate over the input and encode multiple chunks. - // - Errors mean that "no bytes were written to this writer", so we need to reset the - // internal state to what it was before the error occurred - - // before reading any input, write any leftover encoded output from last time - if self.output_occupied_len > 0 { - let current_len = self.output_occupied_len; - return self - .write_to_delegate(current_len) - // did not read any input - .map(|_| 0); - } - - debug_assert_eq!(0, self.output_occupied_len); - - // how many bytes, if any, were read into `extra` to create a triple to encode - let mut extra_input_read_len = 0; - let mut input = input; - - let orig_extra_len = self.extra_input_occupied_len; - - let mut encoded_size = 0; - // always a multiple of MIN_ENCODE_CHUNK_SIZE - let mut max_input_len = MAX_INPUT_LEN; - - // process leftover un-encoded input from last write - if self.extra_input_occupied_len > 0 { - debug_assert!(self.extra_input_occupied_len < 3); - if input.len() + self.extra_input_occupied_len >= MIN_ENCODE_CHUNK_SIZE { - // Fill up `extra`, encode that into `output`, and consume as much of the rest of - // `input` as possible. - // We could write just the encoding of `extra` by itself but then we'd have to - // return after writing only 4 bytes, which is inefficient if the underlying writer - // would make a syscall. - extra_input_read_len = MIN_ENCODE_CHUNK_SIZE - self.extra_input_occupied_len; - debug_assert!(extra_input_read_len > 0); - // overwrite only bytes that weren't already used. If we need to rollback extra_len - // (when the subsequent write errors), the old leading bytes will still be there. - self.extra_input[self.extra_input_occupied_len..MIN_ENCODE_CHUNK_SIZE] - .copy_from_slice(&input[0..extra_input_read_len]); - - let len = encode_to_slice( - &self.extra_input[0..MIN_ENCODE_CHUNK_SIZE], - &mut self.output[..], - self.config.char_set.encode_table(), - ); - debug_assert_eq!(4, len); - - input = &input[extra_input_read_len..]; - - // consider extra to be used up, since we encoded it - self.extra_input_occupied_len = 0; - // don't clobber where we just encoded to - encoded_size = 4; - // and don't read more than can be encoded - max_input_len = MAX_INPUT_LEN - MIN_ENCODE_CHUNK_SIZE; - - // fall through to normal encoding - } else { - // `extra` and `input` are non empty, but `|extra| + |input| < 3`, so there must be - // 1 byte in each. - debug_assert_eq!(1, input.len()); - debug_assert_eq!(1, self.extra_input_occupied_len); - - self.extra_input[self.extra_input_occupied_len] = input[0]; - self.extra_input_occupied_len += 1; - return Ok(1); - }; - } else if input.len() < MIN_ENCODE_CHUNK_SIZE { - // `extra` is empty, and `input` fits inside it - self.extra_input[0..input.len()].copy_from_slice(input); - self.extra_input_occupied_len = input.len(); - return Ok(input.len()); - }; - - // either 0 or 1 complete chunks encoded from extra - debug_assert!(encoded_size == 0 || encoded_size == 4); - debug_assert!( - // didn't encode extra input - MAX_INPUT_LEN == max_input_len - // encoded one triple - || MAX_INPUT_LEN == max_input_len + MIN_ENCODE_CHUNK_SIZE - ); - - // encode complete triples only - let input_complete_chunks_len = input.len() - (input.len() % MIN_ENCODE_CHUNK_SIZE); - let input_chunks_to_encode_len = cmp::min(input_complete_chunks_len, max_input_len); - debug_assert_eq!(0, max_input_len % MIN_ENCODE_CHUNK_SIZE); - debug_assert_eq!(0, input_chunks_to_encode_len % MIN_ENCODE_CHUNK_SIZE); - - encoded_size += encode_to_slice( - &input[..(input_chunks_to_encode_len)], - &mut self.output[encoded_size..], - self.config.char_set.encode_table(), - ); - - // not updating `self.output_occupied_len` here because if the below write fails, it should - // "never take place" -- the buffer contents we encoded are ignored and perhaps retried - // later, if the consumer chooses. - - self.write_to_delegate(encoded_size) - // no matter whether we wrote the full encoded buffer or not, we consumed the same - // input - .map(|_| extra_input_read_len + input_chunks_to_encode_len) - .map_err(|e| { - // in case we filled and encoded `extra`, reset extra_len - self.extra_input_occupied_len = orig_extra_len; - - e - }) - } - - /// Because this is usually treated as OK to call multiple times, it will *not* flush any - /// incomplete chunks of input or write padding. - /// # Errors - /// - /// The first error that is not of [`ErrorKind::Interrupted`] will be returned. - fn flush(&mut self) -> Result<()> { - self.write_all_encoded_output()?; - self.delegate - .as_mut() - .expect("Writer must be present") - .flush() - } -} - -impl Drop for EncoderWriter { - fn drop(&mut self) { - if !self.panicked { - // like `BufWriter`, ignore errors during drop - let _ = self.write_final_leftovers(); - } - } -} diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/src/write/encoder_string_writer.rs temporalio-1.3.0/vendor/base64-0.13.1/src/write/encoder_string_writer.rs --- temporalio-1.3.0/vendor/base64-0.13.1/src/write/encoder_string_writer.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/src/write/encoder_string_writer.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,176 +0,0 @@ -use super::encoder::EncoderWriter; -use crate::Config; -use std::io; -use std::io::Write; - -/// A `Write` implementation that base64-encodes data using the provided config and accumulates the -/// resulting base64 in memory, which is then exposed as a String via `into_inner()`. -/// -/// # Examples -/// -/// Buffer base64 in a new String: -/// -/// ``` -/// use std::io::Write; -/// -/// let mut enc = base64::write::EncoderStringWriter::new(base64::STANDARD); -/// -/// enc.write_all(b"asdf").unwrap(); -/// -/// // get the resulting String -/// let b64_string = enc.into_inner(); -/// -/// assert_eq!("YXNkZg==", &b64_string); -/// ``` -/// -/// Or, append to an existing String: -/// -/// ``` -/// use std::io::Write; -/// -/// let mut buf = String::from("base64: "); -/// -/// let mut enc = base64::write::EncoderStringWriter::from(&mut buf, base64::STANDARD); -/// -/// enc.write_all(b"asdf").unwrap(); -/// -/// // release the &mut reference on buf -/// let _ = enc.into_inner(); -/// -/// assert_eq!("base64: YXNkZg==", &buf); -/// ``` -/// -/// # Panics -/// -/// Calling `write()` (or related methods) or `finish()` after `finish()` has completed without -/// error is invalid and will panic. -/// -/// # Performance -/// -/// Because it has to validate that the base64 is UTF-8, it is about 80% as fast as writing plain -/// bytes to a `io::Write`. -pub struct EncoderStringWriter { - encoder: EncoderWriter>, -} - -impl EncoderStringWriter { - /// Create a EncoderStringWriter that will append to the provided `StrConsumer`. - pub fn from(str_consumer: S, config: Config) -> Self { - EncoderStringWriter { - encoder: EncoderWriter::new(Utf8SingleCodeUnitWriter { str_consumer }, config), - } - } - - /// Encode all remaining buffered data, including any trailing incomplete input triples and - /// associated padding. - /// - /// Once this succeeds, no further writes or calls to this method are allowed. - /// - /// Returns the base64-encoded form of the accumulated written data. - pub fn into_inner(mut self) -> S { - self.encoder - .finish() - .expect("Writing to a Vec should never fail") - .str_consumer - } -} - -impl EncoderStringWriter { - /// Create a EncoderStringWriter that will encode into a new String with the provided config. - pub fn new(config: Config) -> Self { - EncoderStringWriter::from(String::new(), config) - } -} - -impl Write for EncoderStringWriter { - fn write(&mut self, buf: &[u8]) -> io::Result { - self.encoder.write(buf) - } - - fn flush(&mut self) -> io::Result<()> { - self.encoder.flush() - } -} - -/// An abstraction around consuming `str`s produced by base64 encoding. -pub trait StrConsumer { - /// Consume the base64 encoded data in `buf` - fn consume(&mut self, buf: &str); -} - -/// As for io::Write, `StrConsumer` is implemented automatically for `&mut S`. -impl StrConsumer for &mut S { - fn consume(&mut self, buf: &str) { - (**self).consume(buf) - } -} - -/// Pushes the str onto the end of the String -impl StrConsumer for String { - fn consume(&mut self, buf: &str) { - self.push_str(buf) - } -} - -/// A `Write` that only can handle bytes that are valid single-byte UTF-8 code units. -/// -/// This is safe because we only use it when writing base64, which is always valid UTF-8. -struct Utf8SingleCodeUnitWriter { - str_consumer: S, -} - -impl io::Write for Utf8SingleCodeUnitWriter { - fn write(&mut self, buf: &[u8]) -> io::Result { - // Because we expect all input to be valid utf-8 individual bytes, we can encode any buffer - // length - let s = std::str::from_utf8(buf).expect("Input must be valid UTF-8"); - - self.str_consumer.consume(s); - - Ok(buf.len()) - } - - fn flush(&mut self) -> io::Result<()> { - // no op - Ok(()) - } -} - -#[cfg(test)] -mod tests { - use crate::encode_config_buf; - use crate::tests::random_config; - use crate::write::encoder_string_writer::EncoderStringWriter; - use rand::Rng; - use std::io::Write; - - #[test] - fn every_possible_split_of_input() { - let mut rng = rand::thread_rng(); - let mut orig_data = Vec::::new(); - let mut normal_encoded = String::new(); - - let size = 5_000; - - for i in 0..size { - orig_data.clear(); - normal_encoded.clear(); - - for _ in 0..size { - orig_data.push(rng.gen()); - } - - let config = random_config(&mut rng); - encode_config_buf(&orig_data, config, &mut normal_encoded); - - let mut stream_encoder = EncoderStringWriter::new(config); - // Write the first i bytes, then the rest - stream_encoder.write_all(&orig_data[0..i]).unwrap(); - stream_encoder.write_all(&orig_data[i..]).unwrap(); - - let stream_encoded = stream_encoder.into_inner(); - - assert_eq!(normal_encoded, stream_encoded); - } - } -} diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/src/write/encoder_tests.rs temporalio-1.3.0/vendor/base64-0.13.1/src/write/encoder_tests.rs --- temporalio-1.3.0/vendor/base64-0.13.1/src/write/encoder_tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/src/write/encoder_tests.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,568 +0,0 @@ -use super::EncoderWriter; -use crate::tests::random_config; -use crate::{encode_config, encode_config_buf, STANDARD_NO_PAD, URL_SAFE}; - -use std::io::{Cursor, Write}; -use std::{cmp, io, str}; - -use rand::Rng; - -#[test] -fn encode_three_bytes() { - let mut c = Cursor::new(Vec::new()); - { - let mut enc = EncoderWriter::new(&mut c, URL_SAFE); - - let sz = enc.write(b"abc").unwrap(); - assert_eq!(sz, 3); - } - assert_eq!(&c.get_ref()[..], encode_config("abc", URL_SAFE).as_bytes()); -} - -#[test] -fn encode_nine_bytes_two_writes() { - let mut c = Cursor::new(Vec::new()); - { - let mut enc = EncoderWriter::new(&mut c, URL_SAFE); - - let sz = enc.write(b"abcdef").unwrap(); - assert_eq!(sz, 6); - let sz = enc.write(b"ghi").unwrap(); - assert_eq!(sz, 3); - } - assert_eq!( - &c.get_ref()[..], - encode_config("abcdefghi", URL_SAFE).as_bytes() - ); -} - -#[test] -fn encode_one_then_two_bytes() { - let mut c = Cursor::new(Vec::new()); - { - let mut enc = EncoderWriter::new(&mut c, URL_SAFE); - - let sz = enc.write(b"a").unwrap(); - assert_eq!(sz, 1); - let sz = enc.write(b"bc").unwrap(); - assert_eq!(sz, 2); - } - assert_eq!(&c.get_ref()[..], encode_config("abc", URL_SAFE).as_bytes()); -} - -#[test] -fn encode_one_then_five_bytes() { - let mut c = Cursor::new(Vec::new()); - { - let mut enc = EncoderWriter::new(&mut c, URL_SAFE); - - let sz = enc.write(b"a").unwrap(); - assert_eq!(sz, 1); - let sz = enc.write(b"bcdef").unwrap(); - assert_eq!(sz, 5); - } - assert_eq!( - &c.get_ref()[..], - encode_config("abcdef", URL_SAFE).as_bytes() - ); -} - -#[test] -fn encode_1_2_3_bytes() { - let mut c = Cursor::new(Vec::new()); - { - let mut enc = EncoderWriter::new(&mut c, URL_SAFE); - - let sz = enc.write(b"a").unwrap(); - assert_eq!(sz, 1); - let sz = enc.write(b"bc").unwrap(); - assert_eq!(sz, 2); - let sz = enc.write(b"def").unwrap(); - assert_eq!(sz, 3); - } - assert_eq!( - &c.get_ref()[..], - encode_config("abcdef", URL_SAFE).as_bytes() - ); -} - -#[test] -fn encode_with_padding() { - let mut c = Cursor::new(Vec::new()); - { - let mut enc = EncoderWriter::new(&mut c, URL_SAFE); - - enc.write_all(b"abcd").unwrap(); - - enc.flush().unwrap(); - } - assert_eq!(&c.get_ref()[..], encode_config("abcd", URL_SAFE).as_bytes()); -} - -#[test] -fn encode_with_padding_multiple_writes() { - let mut c = Cursor::new(Vec::new()); - { - let mut enc = EncoderWriter::new(&mut c, URL_SAFE); - - assert_eq!(1, enc.write(b"a").unwrap()); - assert_eq!(2, enc.write(b"bc").unwrap()); - assert_eq!(3, enc.write(b"def").unwrap()); - assert_eq!(1, enc.write(b"g").unwrap()); - - enc.flush().unwrap(); - } - assert_eq!( - &c.get_ref()[..], - encode_config("abcdefg", URL_SAFE).as_bytes() - ); -} - -#[test] -fn finish_writes_extra_byte() { - let mut c = Cursor::new(Vec::new()); - { - let mut enc = EncoderWriter::new(&mut c, URL_SAFE); - - assert_eq!(6, enc.write(b"abcdef").unwrap()); - - // will be in extra - assert_eq!(1, enc.write(b"g").unwrap()); - - // 1 trailing byte = 2 encoded chars - let _ = enc.finish().unwrap(); - } - assert_eq!( - &c.get_ref()[..], - encode_config("abcdefg", URL_SAFE).as_bytes() - ); -} - -#[test] -fn write_partial_chunk_encodes_partial_chunk() { - let mut c = Cursor::new(Vec::new()); - { - let mut enc = EncoderWriter::new(&mut c, STANDARD_NO_PAD); - - // nothing encoded yet - assert_eq!(2, enc.write(b"ab").unwrap()); - // encoded here - let _ = enc.finish().unwrap(); - } - assert_eq!( - &c.get_ref()[..], - encode_config("ab", STANDARD_NO_PAD).as_bytes() - ); - assert_eq!(3, c.get_ref().len()); -} - -#[test] -fn write_1_chunk_encodes_complete_chunk() { - let mut c = Cursor::new(Vec::new()); - { - let mut enc = EncoderWriter::new(&mut c, STANDARD_NO_PAD); - - assert_eq!(3, enc.write(b"abc").unwrap()); - let _ = enc.finish().unwrap(); - } - assert_eq!( - &c.get_ref()[..], - encode_config("abc", STANDARD_NO_PAD).as_bytes() - ); - assert_eq!(4, c.get_ref().len()); -} - -#[test] -fn write_1_chunk_and_partial_encodes_only_complete_chunk() { - let mut c = Cursor::new(Vec::new()); - { - let mut enc = EncoderWriter::new(&mut c, STANDARD_NO_PAD); - - // "d" not written - assert_eq!(3, enc.write(b"abcd").unwrap()); - let _ = enc.finish().unwrap(); - } - assert_eq!( - &c.get_ref()[..], - encode_config("abc", STANDARD_NO_PAD).as_bytes() - ); - assert_eq!(4, c.get_ref().len()); -} - -#[test] -fn write_2_partials_to_exactly_complete_chunk_encodes_complete_chunk() { - let mut c = Cursor::new(Vec::new()); - { - let mut enc = EncoderWriter::new(&mut c, STANDARD_NO_PAD); - - assert_eq!(1, enc.write(b"a").unwrap()); - assert_eq!(2, enc.write(b"bc").unwrap()); - let _ = enc.finish().unwrap(); - } - assert_eq!( - &c.get_ref()[..], - encode_config("abc", STANDARD_NO_PAD).as_bytes() - ); - assert_eq!(4, c.get_ref().len()); -} - -#[test] -fn write_partial_then_enough_to_complete_chunk_but_not_complete_another_chunk_encodes_complete_chunk_without_consuming_remaining( -) { - let mut c = Cursor::new(Vec::new()); - { - let mut enc = EncoderWriter::new(&mut c, STANDARD_NO_PAD); - - assert_eq!(1, enc.write(b"a").unwrap()); - // doesn't consume "d" - assert_eq!(2, enc.write(b"bcd").unwrap()); - let _ = enc.finish().unwrap(); - } - assert_eq!( - &c.get_ref()[..], - encode_config("abc", STANDARD_NO_PAD).as_bytes() - ); - assert_eq!(4, c.get_ref().len()); -} - -#[test] -fn write_partial_then_enough_to_complete_chunk_and_another_chunk_encodes_complete_chunks() { - let mut c = Cursor::new(Vec::new()); - { - let mut enc = EncoderWriter::new(&mut c, STANDARD_NO_PAD); - - assert_eq!(1, enc.write(b"a").unwrap()); - // completes partial chunk, and another chunk - assert_eq!(5, enc.write(b"bcdef").unwrap()); - let _ = enc.finish().unwrap(); - } - assert_eq!( - &c.get_ref()[..], - encode_config("abcdef", STANDARD_NO_PAD).as_bytes() - ); - assert_eq!(8, c.get_ref().len()); -} - -#[test] -fn write_partial_then_enough_to_complete_chunk_and_another_chunk_and_another_partial_chunk_encodes_only_complete_chunks( -) { - let mut c = Cursor::new(Vec::new()); - { - let mut enc = EncoderWriter::new(&mut c, STANDARD_NO_PAD); - - assert_eq!(1, enc.write(b"a").unwrap()); - // completes partial chunk, and another chunk, with one more partial chunk that's not - // consumed - assert_eq!(5, enc.write(b"bcdefe").unwrap()); - let _ = enc.finish().unwrap(); - } - assert_eq!( - &c.get_ref()[..], - encode_config("abcdef", STANDARD_NO_PAD).as_bytes() - ); - assert_eq!(8, c.get_ref().len()); -} - -#[test] -fn drop_calls_finish_for_you() { - let mut c = Cursor::new(Vec::new()); - { - let mut enc = EncoderWriter::new(&mut c, STANDARD_NO_PAD); - assert_eq!(1, enc.write(b"a").unwrap()); - } - assert_eq!( - &c.get_ref()[..], - encode_config("a", STANDARD_NO_PAD).as_bytes() - ); - assert_eq!(2, c.get_ref().len()); -} - -#[test] -fn every_possible_split_of_input() { - let mut rng = rand::thread_rng(); - let mut orig_data = Vec::::new(); - let mut stream_encoded = Vec::::new(); - let mut normal_encoded = String::new(); - - let size = 5_000; - - for i in 0..size { - orig_data.clear(); - stream_encoded.clear(); - normal_encoded.clear(); - - for _ in 0..size { - orig_data.push(rng.gen()); - } - - let config = random_config(&mut rng); - encode_config_buf(&orig_data, config, &mut normal_encoded); - - { - let mut stream_encoder = EncoderWriter::new(&mut stream_encoded, config); - // Write the first i bytes, then the rest - stream_encoder.write_all(&orig_data[0..i]).unwrap(); - stream_encoder.write_all(&orig_data[i..]).unwrap(); - } - - assert_eq!(normal_encoded, str::from_utf8(&stream_encoded).unwrap()); - } -} - -#[test] -fn encode_random_config_matches_normal_encode_reasonable_input_len() { - // choose up to 2 * buf size, so ~half the time it'll use a full buffer - do_encode_random_config_matches_normal_encode(super::encoder::BUF_SIZE * 2) -} - -#[test] -fn encode_random_config_matches_normal_encode_tiny_input_len() { - do_encode_random_config_matches_normal_encode(10) -} - -#[test] -fn retrying_writes_that_error_with_interrupted_works() { - let mut rng = rand::thread_rng(); - let mut orig_data = Vec::::new(); - let mut stream_encoded = Vec::::new(); - let mut normal_encoded = String::new(); - - for _ in 0..1_000 { - orig_data.clear(); - stream_encoded.clear(); - normal_encoded.clear(); - - let orig_len: usize = rng.gen_range(100, 20_000); - for _ in 0..orig_len { - orig_data.push(rng.gen()); - } - - // encode the normal way - let config = random_config(&mut rng); - encode_config_buf(&orig_data, config, &mut normal_encoded); - - // encode via the stream encoder - { - let mut interrupt_rng = rand::thread_rng(); - let mut interrupting_writer = InterruptingWriter { - w: &mut stream_encoded, - rng: &mut interrupt_rng, - fraction: 0.8, - }; - - let mut stream_encoder = EncoderWriter::new(&mut interrupting_writer, config); - let mut bytes_consumed = 0; - while bytes_consumed < orig_len { - // use short inputs since we want to use `extra` a lot as that's what needs rollback - // when errors occur - let input_len: usize = cmp::min(rng.gen_range(0, 10), orig_len - bytes_consumed); - - retry_interrupted_write_all( - &mut stream_encoder, - &orig_data[bytes_consumed..bytes_consumed + input_len], - ) - .unwrap(); - - bytes_consumed += input_len; - } - - loop { - let res = stream_encoder.finish(); - match res { - Ok(_) => break, - Err(e) => match e.kind() { - io::ErrorKind::Interrupted => continue, - _ => Err(e).unwrap(), // bail - }, - } - } - - assert_eq!(orig_len, bytes_consumed); - } - - assert_eq!(normal_encoded, str::from_utf8(&stream_encoded).unwrap()); - } -} - -#[test] -fn writes_that_only_write_part_of_input_and_sometimes_interrupt_produce_correct_encoded_data() { - let mut rng = rand::thread_rng(); - let mut orig_data = Vec::::new(); - let mut stream_encoded = Vec::::new(); - let mut normal_encoded = String::new(); - - for _ in 0..1_000 { - orig_data.clear(); - stream_encoded.clear(); - normal_encoded.clear(); - - let orig_len: usize = rng.gen_range(100, 20_000); - for _ in 0..orig_len { - orig_data.push(rng.gen()); - } - - // encode the normal way - let config = random_config(&mut rng); - encode_config_buf(&orig_data, config, &mut normal_encoded); - - // encode via the stream encoder - { - let mut partial_rng = rand::thread_rng(); - let mut partial_writer = PartialInterruptingWriter { - w: &mut stream_encoded, - rng: &mut partial_rng, - full_input_fraction: 0.1, - no_interrupt_fraction: 0.1, - }; - - let mut stream_encoder = EncoderWriter::new(&mut partial_writer, config); - let mut bytes_consumed = 0; - while bytes_consumed < orig_len { - // use at most medium-length inputs to exercise retry logic more aggressively - let input_len: usize = cmp::min(rng.gen_range(0, 100), orig_len - bytes_consumed); - - let res = - stream_encoder.write(&orig_data[bytes_consumed..bytes_consumed + input_len]); - - // retry on interrupt - match res { - Ok(len) => bytes_consumed += len, - Err(e) => match e.kind() { - io::ErrorKind::Interrupted => continue, - _ => { - panic!("should not see other errors"); - } - }, - } - } - - let _ = stream_encoder.finish().unwrap(); - - assert_eq!(orig_len, bytes_consumed); - } - - assert_eq!(normal_encoded, str::from_utf8(&stream_encoded).unwrap()); - } -} - -/// Retry writes until all the data is written or an error that isn't Interrupted is returned. -fn retry_interrupted_write_all(w: &mut W, buf: &[u8]) -> io::Result<()> { - let mut bytes_consumed = 0; - - while bytes_consumed < buf.len() { - let res = w.write(&buf[bytes_consumed..]); - - match res { - Ok(len) => bytes_consumed += len, - Err(e) => match e.kind() { - io::ErrorKind::Interrupted => continue, - _ => return Err(e), - }, - } - } - - Ok(()) -} - -fn do_encode_random_config_matches_normal_encode(max_input_len: usize) { - let mut rng = rand::thread_rng(); - let mut orig_data = Vec::::new(); - let mut stream_encoded = Vec::::new(); - let mut normal_encoded = String::new(); - - for _ in 0..1_000 { - orig_data.clear(); - stream_encoded.clear(); - normal_encoded.clear(); - - let orig_len: usize = rng.gen_range(100, 20_000); - for _ in 0..orig_len { - orig_data.push(rng.gen()); - } - - // encode the normal way - let config = random_config(&mut rng); - encode_config_buf(&orig_data, config, &mut normal_encoded); - - // encode via the stream encoder - { - let mut stream_encoder = EncoderWriter::new(&mut stream_encoded, config); - let mut bytes_consumed = 0; - while bytes_consumed < orig_len { - let input_len: usize = - cmp::min(rng.gen_range(0, max_input_len), orig_len - bytes_consumed); - - // write a little bit of the data - stream_encoder - .write_all(&orig_data[bytes_consumed..bytes_consumed + input_len]) - .unwrap(); - - bytes_consumed += input_len; - } - - let _ = stream_encoder.finish().unwrap(); - - assert_eq!(orig_len, bytes_consumed); - } - - assert_eq!(normal_encoded, str::from_utf8(&stream_encoded).unwrap()); - } -} - -/// A `Write` implementation that returns Interrupted some fraction of the time, randomly. -struct InterruptingWriter<'a, W: 'a + Write, R: 'a + Rng> { - w: &'a mut W, - rng: &'a mut R, - /// In [0, 1]. If a random number in [0, 1] is `<= threshold`, `Write` methods will return - /// an `Interrupted` error - fraction: f64, -} - -impl<'a, W: Write, R: Rng> Write for InterruptingWriter<'a, W, R> { - fn write(&mut self, buf: &[u8]) -> io::Result { - if self.rng.gen_range(0.0, 1.0) <= self.fraction { - return Err(io::Error::new(io::ErrorKind::Interrupted, "interrupted")); - } - - self.w.write(buf) - } - - fn flush(&mut self) -> io::Result<()> { - if self.rng.gen_range(0.0, 1.0) <= self.fraction { - return Err(io::Error::new(io::ErrorKind::Interrupted, "interrupted")); - } - - self.w.flush() - } -} - -/// A `Write` implementation that sometimes will only write part of its input. -struct PartialInterruptingWriter<'a, W: 'a + Write, R: 'a + Rng> { - w: &'a mut W, - rng: &'a mut R, - /// In [0, 1]. If a random number in [0, 1] is `<= threshold`, `write()` will write all its - /// input. Otherwise, it will write a random substring - full_input_fraction: f64, - no_interrupt_fraction: f64, -} - -impl<'a, W: Write, R: Rng> Write for PartialInterruptingWriter<'a, W, R> { - fn write(&mut self, buf: &[u8]) -> io::Result { - if self.rng.gen_range(0.0, 1.0) > self.no_interrupt_fraction { - return Err(io::Error::new(io::ErrorKind::Interrupted, "interrupted")); - } - - if self.rng.gen_range(0.0, 1.0) <= self.full_input_fraction || buf.len() == 0 { - // pass through the buf untouched - self.w.write(buf) - } else { - // only use a prefix of it - self.w - .write(&buf[0..(self.rng.gen_range(0, buf.len() - 1))]) - } - } - - fn flush(&mut self) -> io::Result<()> { - self.w.flush() - } -} diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/src/write/mod.rs temporalio-1.3.0/vendor/base64-0.13.1/src/write/mod.rs --- temporalio-1.3.0/vendor/base64-0.13.1/src/write/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/src/write/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -//! Implementations of `io::Write` to transparently handle base64. -mod encoder; -mod encoder_string_writer; -pub use self::encoder::EncoderWriter; -pub use self::encoder_string_writer::EncoderStringWriter; - -#[cfg(test)] -mod encoder_tests; diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/tests/decode.rs temporalio-1.3.0/vendor/base64-0.13.1/tests/decode.rs --- temporalio-1.3.0/vendor/base64-0.13.1/tests/decode.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/tests/decode.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,330 +0,0 @@ -extern crate base64; - -use base64::*; - -mod helpers; - -use self::helpers::*; - -#[test] -fn decode_rfc4648_0() { - compare_decode("", ""); -} - -#[test] -fn decode_rfc4648_1() { - compare_decode("f", "Zg=="); -} - -#[test] -fn decode_rfc4648_1_just_a_bit_of_padding() { - // allows less padding than required - compare_decode("f", "Zg="); -} - -#[test] -fn decode_rfc4648_1_no_padding() { - compare_decode("f", "Zg"); -} - -#[test] -fn decode_rfc4648_2() { - compare_decode("fo", "Zm8="); -} - -#[test] -fn decode_rfc4648_2_no_padding() { - compare_decode("fo", "Zm8"); -} - -#[test] -fn decode_rfc4648_3() { - compare_decode("foo", "Zm9v"); -} - -#[test] -fn decode_rfc4648_4() { - compare_decode("foob", "Zm9vYg=="); -} - -#[test] -fn decode_rfc4648_4_no_padding() { - compare_decode("foob", "Zm9vYg"); -} - -#[test] -fn decode_rfc4648_5() { - compare_decode("fooba", "Zm9vYmE="); -} - -#[test] -fn decode_rfc4648_5_no_padding() { - compare_decode("fooba", "Zm9vYmE"); -} - -#[test] -fn decode_rfc4648_6() { - compare_decode("foobar", "Zm9vYmFy"); -} - -#[test] -fn decode_reject_null() { - assert_eq!( - DecodeError::InvalidByte(3, 0x0), - decode_config("YWx\0pY2U==", config_std_pad()).unwrap_err() - ); -} - -#[test] -fn decode_single_pad_byte_after_2_chars_in_trailing_quad_ok() { - for num_quads in 0..25 { - let mut s: String = std::iter::repeat("ABCD").take(num_quads).collect(); - s.push_str("Zg="); - - let input_len = num_quads * 3 + 1; - - // Since there are 3 bytes in the trailing quad, want to be sure this allows for the fact - // that it could be bad padding rather than assuming that it will decode to 2 bytes and - // therefore allow 1 extra round of fast decode logic (stage 1 / 2). - - let mut decoded = Vec::new(); - decoded.resize(input_len, 0); - - assert_eq!( - input_len, - decode_config_slice(&s, STANDARD, &mut decoded).unwrap() - ); - } -} - -//this is a MAY in the rfc: https://tools.ietf.org/html/rfc4648#section-3.3 -#[test] -fn decode_1_pad_byte_in_fast_loop_then_extra_padding_chunk_error() { - for num_quads in 0..25 { - let mut s: String = std::iter::repeat("ABCD").take(num_quads).collect(); - s.push_str("YWxpY2U====="); - - // since the first 8 bytes are handled in stage 1 or 2, the padding is detected as a - // generic invalid byte, not specifcally a padding issue. - // Could argue that the *next* padding byte (in the next quad) is technically the first - // erroneous one, but reporting that accurately is more complex and probably nobody cares - assert_eq!( - DecodeError::InvalidByte(num_quads * 4 + 7, b'='), - decode(&s).unwrap_err() - ); - } -} - -#[test] -fn decode_2_pad_bytes_in_leftovers_then_extra_padding_chunk_error() { - for num_quads in 0..25 { - let mut s: String = std::iter::repeat("ABCD").take(num_quads).collect(); - s.push_str("YWxpY2UABB===="); - - // 6 bytes (4 padding) after last 8-byte chunk, so it's decoded by stage 4. - // First padding byte is invalid. - assert_eq!( - DecodeError::InvalidByte(num_quads * 4 + 10, b'='), - decode(&s).unwrap_err() - ); - } -} - -#[test] -fn decode_valid_bytes_after_padding_in_leftovers_error() { - for num_quads in 0..25 { - let mut s: String = std::iter::repeat("ABCD").take(num_quads).collect(); - s.push_str("YWxpY2UABB=B"); - - // 4 bytes after last 8-byte chunk, so it's decoded by stage 4. - // First (and only) padding byte is invalid. - assert_eq!( - DecodeError::InvalidByte(num_quads * 4 + 10, b'='), - decode(&s).unwrap_err() - ); - } -} - -#[test] -fn decode_absurd_pad_error() { - for num_quads in 0..25 { - let mut s: String = std::iter::repeat("ABCD").take(num_quads).collect(); - s.push_str("==Y=Wx===pY=2U====="); - - // Plenty of remaining bytes, so handled by stage 1 or 2. - // first padding byte - assert_eq!( - DecodeError::InvalidByte(num_quads * 4, b'='), - decode(&s).unwrap_err() - ); - } -} - -#[test] -fn decode_extra_padding_after_1_pad_bytes_in_trailing_quad_returns_error() { - for num_quads in 0..25 { - let mut s: String = std::iter::repeat("ABCD").take(num_quads).collect(); - s.push_str("EEE==="); - - // handled by stage 1, 2, or 4 depending on length - // first padding byte -- which would be legal if it was the only padding - assert_eq!( - DecodeError::InvalidByte(num_quads * 4 + 3, b'='), - decode(&s).unwrap_err() - ); - } -} - -#[test] -fn decode_extra_padding_after_2_pad_bytes_in_trailing_quad_2_returns_error() { - for num_quads in 0..25 { - let mut s: String = std::iter::repeat("ABCD").take(num_quads).collect(); - s.push_str("EE===="); - - // handled by stage 1, 2, or 4 depending on length - // first padding byte -- which would be legal if it was by itself - assert_eq!( - DecodeError::InvalidByte(num_quads * 4 + 2, b'='), - decode(&s).unwrap_err() - ); - } -} - -#[test] -fn decode_start_quad_with_padding_returns_error() { - for num_quads in 0..25 { - // add enough padding to ensure that we'll hit all 4 stages at the different lengths - for pad_bytes in 1..32 { - let mut s: String = std::iter::repeat("ABCD").take(num_quads).collect(); - let padding: String = std::iter::repeat("=").take(pad_bytes).collect(); - s.push_str(&padding); - - if pad_bytes % 4 == 1 { - // detected in early length check - assert_eq!(DecodeError::InvalidLength, decode(&s).unwrap_err()); - } else { - // padding lengths 2 - 8 are handled by stage 4 - // padding length >= 8 will hit at least one chunk at stages 1, 2, 3 at different - // prefix lengths - assert_eq!( - DecodeError::InvalidByte(num_quads * 4, b'='), - decode(&s).unwrap_err() - ); - } - } - } -} - -#[test] -fn decode_padding_followed_by_non_padding_returns_error() { - for num_quads in 0..25 { - for pad_bytes in 0..31 { - let mut s: String = std::iter::repeat("ABCD").take(num_quads).collect(); - let padding: String = std::iter::repeat("=").take(pad_bytes).collect(); - s.push_str(&padding); - s.push_str("E"); - - if pad_bytes % 4 == 0 { - assert_eq!(DecodeError::InvalidLength, decode(&s).unwrap_err()); - } else { - // pad len 1 - 8 will be handled by stage 4 - // pad len 9 (suffix len 10) will have 8 bytes of padding handled by stage 3 - // first padding byte - assert_eq!( - DecodeError::InvalidByte(num_quads * 4, b'='), - decode(&s).unwrap_err() - ); - } - } - } -} - -#[test] -fn decode_one_char_in_quad_with_padding_error() { - for num_quads in 0..25 { - let mut s: String = std::iter::repeat("ABCD").take(num_quads).collect(); - s.push_str("E="); - - assert_eq!( - DecodeError::InvalidByte(num_quads * 4 + 1, b'='), - decode(&s).unwrap_err() - ); - - // more padding doesn't change the error - s.push_str("="); - assert_eq!( - DecodeError::InvalidByte(num_quads * 4 + 1, b'='), - decode(&s).unwrap_err() - ); - - s.push_str("="); - assert_eq!( - DecodeError::InvalidByte(num_quads * 4 + 1, b'='), - decode(&s).unwrap_err() - ); - } -} - -#[test] -fn decode_one_char_in_quad_without_padding_error() { - for num_quads in 0..25 { - let mut s: String = std::iter::repeat("ABCD").take(num_quads).collect(); - s.push('E'); - - assert_eq!(DecodeError::InvalidLength, decode(&s).unwrap_err()); - } -} - -#[test] -fn decode_reject_invalid_bytes_with_correct_error() { - for length in 1..100 { - for index in 0_usize..length { - for invalid_byte in " \t\n\r\x0C\x0B\x00%*.".bytes() { - let prefix: String = std::iter::repeat("A").take(index).collect(); - let suffix: String = std::iter::repeat("B").take(length - index - 1).collect(); - - let input = prefix + &String::from_utf8(vec![invalid_byte]).unwrap() + &suffix; - assert_eq!( - length, - input.len(), - "length {} error position {}", - length, - index - ); - - if length % 4 == 1 && !suffix.is_empty() { - assert_eq!(DecodeError::InvalidLength, decode(&input).unwrap_err()); - } else { - assert_eq!( - DecodeError::InvalidByte(index, invalid_byte), - decode(&input).unwrap_err() - ); - } - } - } - } -} - -#[test] -fn decode_imap() { - assert_eq!( - decode_config(b"+,,+", crate::IMAP_MUTF7), - decode_config(b"+//+", crate::STANDARD_NO_PAD) - ); -} - -#[test] -fn decode_invalid_trailing_bytes() { - // The case of trailing newlines is common enough to warrant a test for a good error - // message. - assert_eq!( - Err(DecodeError::InvalidByte(8, b'\n')), - decode(b"Zm9vCg==\n") - ); - // extra padding, however, is still InvalidLength - assert_eq!(Err(DecodeError::InvalidLength), decode(b"Zm9vCg===")); -} - -fn config_std_pad() -> Config { - Config::new(CharacterSet::Standard, true) -} diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/tests/encode.rs temporalio-1.3.0/vendor/base64-0.13.1/tests/encode.rs --- temporalio-1.3.0/vendor/base64-0.13.1/tests/encode.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/tests/encode.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,105 +0,0 @@ -extern crate base64; - -use base64::*; - -fn compare_encode(expected: &str, target: &[u8]) { - assert_eq!(expected, encode(target)); -} - -#[test] -fn encode_rfc4648_0() { - compare_encode("", b""); -} - -#[test] -fn encode_rfc4648_1() { - compare_encode("Zg==", b"f"); -} - -#[test] -fn encode_rfc4648_2() { - compare_encode("Zm8=", b"fo"); -} - -#[test] -fn encode_rfc4648_3() { - compare_encode("Zm9v", b"foo"); -} - -#[test] -fn encode_rfc4648_4() { - compare_encode("Zm9vYg==", b"foob"); -} - -#[test] -fn encode_rfc4648_5() { - compare_encode("Zm9vYmE=", b"fooba"); -} - -#[test] -fn encode_rfc4648_6() { - compare_encode("Zm9vYmFy", b"foobar"); -} - -#[test] -fn encode_all_ascii() { - let mut ascii = Vec::::with_capacity(128); - - for i in 0..128 { - ascii.push(i); - } - - compare_encode( - "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7P\ - D0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn8\ - =", - &ascii, - ); -} - -#[test] -fn encode_all_bytes() { - let mut bytes = Vec::::with_capacity(256); - - for i in 0..255 { - bytes.push(i); - } - bytes.push(255); //bug with "overflowing" ranges? - - compare_encode( - "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7P\ - D0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn\ - +AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6\ - /wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==", - &bytes, - ); -} - -#[test] -fn encode_all_bytes_url() { - let mut bytes = Vec::::with_capacity(256); - - for i in 0..255 { - bytes.push(i); - } - bytes.push(255); //bug with "overflowing" ranges? - - assert_eq!( - "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0\ - -P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn\ - -AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq\ - -wsbKztLW2t7i5uru8vb6_wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t_g4eLj5OXm5-jp6uvs7e7v8PHy\ - 8_T19vf4-fr7_P3-_w==", - encode_config(&bytes, URL_SAFE) - ); -} - -#[test] -fn encode_url_safe_without_padding() { - let encoded = encode_config(b"alice", URL_SAFE_NO_PAD); - assert_eq!(&encoded, "YWxpY2U"); - assert_eq!( - String::from_utf8(decode(&encoded).unwrap()).unwrap(), - "alice" - ); -} diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/tests/helpers.rs temporalio-1.3.0/vendor/base64-0.13.1/tests/helpers.rs --- temporalio-1.3.0/vendor/base64-0.13.1/tests/helpers.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/tests/helpers.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -extern crate base64; - -use base64::*; - -pub fn compare_decode(expected: &str, target: &str) { - assert_eq!( - expected, - String::from_utf8(decode(target).unwrap()).unwrap() - ); - assert_eq!( - expected, - String::from_utf8(decode(target.as_bytes()).unwrap()).unwrap() - ); -} diff -Nru temporalio-1.3.0/vendor/base64-0.13.1/tests/tests.rs temporalio-1.3.0/vendor/base64-0.13.1/tests/tests.rs --- temporalio-1.3.0/vendor/base64-0.13.1/tests/tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/base64-0.13.1/tests/tests.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,194 +0,0 @@ -extern crate base64; -extern crate rand; - -use rand::{FromEntropy, Rng}; - -use base64::*; - -mod helpers; -use self::helpers::*; - -// generate random contents of the specified length and test encode/decode roundtrip -fn roundtrip_random( - byte_buf: &mut Vec, - str_buf: &mut String, - config: Config, - byte_len: usize, - approx_values_per_byte: u8, - max_rounds: u64, -) { - // let the short ones be short but don't let it get too crazy large - let num_rounds = calculate_number_of_rounds(byte_len, approx_values_per_byte, max_rounds); - let mut r = rand::rngs::SmallRng::from_entropy(); - let mut decode_buf = Vec::new(); - - for _ in 0..num_rounds { - byte_buf.clear(); - str_buf.clear(); - decode_buf.clear(); - while byte_buf.len() < byte_len { - byte_buf.push(r.gen::()); - } - - encode_config_buf(&byte_buf, config, str_buf); - decode_config_buf(&str_buf, config, &mut decode_buf).unwrap(); - - assert_eq!(byte_buf, &decode_buf); - } -} - -fn calculate_number_of_rounds(byte_len: usize, approx_values_per_byte: u8, max: u64) -> u64 { - // don't overflow - let mut prod = approx_values_per_byte as u64; - - for _ in 0..byte_len { - if prod > max { - return max; - } - - prod = prod.saturating_mul(prod); - } - - prod -} - -fn no_pad_config() -> Config { - Config::new(CharacterSet::Standard, false) -} - -#[test] -fn roundtrip_random_short_standard() { - let mut byte_buf: Vec = Vec::new(); - let mut str_buf = String::new(); - - for input_len in 0..40 { - roundtrip_random(&mut byte_buf, &mut str_buf, STANDARD, input_len, 4, 10000); - } -} - -#[test] -fn roundtrip_random_with_fast_loop_standard() { - let mut byte_buf: Vec = Vec::new(); - let mut str_buf = String::new(); - - for input_len in 40..100 { - roundtrip_random(&mut byte_buf, &mut str_buf, STANDARD, input_len, 4, 1000); - } -} - -#[test] -fn roundtrip_random_short_no_padding() { - let mut byte_buf: Vec = Vec::new(); - let mut str_buf = String::new(); - - for input_len in 0..40 { - roundtrip_random( - &mut byte_buf, - &mut str_buf, - no_pad_config(), - input_len, - 4, - 10000, - ); - } -} - -#[test] -fn roundtrip_random_no_padding() { - let mut byte_buf: Vec = Vec::new(); - let mut str_buf = String::new(); - - for input_len in 40..100 { - roundtrip_random( - &mut byte_buf, - &mut str_buf, - no_pad_config(), - input_len, - 4, - 1000, - ); - } -} - -#[test] -fn roundtrip_decode_trailing_10_bytes() { - // This is a special case because we decode 8 byte blocks of input at a time as much as we can, - // ideally unrolled to 32 bytes at a time, in stages 1 and 2. Since we also write a u64's worth - // of bytes (8) to the output, we always write 2 garbage bytes that then will be overwritten by - // the NEXT block. However, if the next block only contains 2 bytes, it will decode to 1 byte, - // and therefore be too short to cover up the trailing 2 garbage bytes. Thus, we have stage 3 - // to handle that case. - - for num_quads in 0..25 { - let mut s: String = std::iter::repeat("ABCD").take(num_quads).collect(); - s.push_str("EFGHIJKLZg"); - - let decoded = decode(&s).unwrap(); - assert_eq!(num_quads * 3 + 7, decoded.len()); - - assert_eq!(s, encode_config(&decoded, STANDARD_NO_PAD)); - } -} - -#[test] -fn display_wrapper_matches_normal_encode() { - let mut bytes = Vec::::with_capacity(256); - - for i in 0..255 { - bytes.push(i); - } - bytes.push(255); - - assert_eq!( - encode(&bytes), - format!( - "{}", - base64::display::Base64Display::with_config(&bytes, STANDARD) - ) - ); -} - -#[test] -fn because_we_can() { - compare_decode("alice", "YWxpY2U="); - compare_decode("alice", &encode(b"alice")); - compare_decode("alice", &encode(&decode(&encode(b"alice")).unwrap())); -} - -#[test] -fn encode_config_slice_can_use_inline_buffer() { - let mut buf: [u8; 22] = [0; 22]; - let mut larger_buf: [u8; 24] = [0; 24]; - let mut input: [u8; 16] = [0; 16]; - - let mut rng = rand::rngs::SmallRng::from_entropy(); - for elt in &mut input { - *elt = rng.gen(); - } - - assert_eq!(22, encode_config_slice(&input, STANDARD_NO_PAD, &mut buf)); - let decoded = decode_config(&buf, STANDARD_NO_PAD).unwrap(); - - assert_eq!(decoded, input); - - // let's try it again with padding - - assert_eq!(24, encode_config_slice(&input, STANDARD, &mut larger_buf)); - let decoded = decode_config(&buf, STANDARD).unwrap(); - - assert_eq!(decoded, input); -} - -#[test] -#[should_panic(expected = "index 24 out of range for slice of length 22")] -fn encode_config_slice_panics_when_buffer_too_small() { - let mut buf: [u8; 22] = [0; 22]; - let mut input: [u8; 16] = [0; 16]; - - let mut rng = rand::rngs::SmallRng::from_entropy(); - for elt in &mut input { - *elt = rng.gen(); - } - - encode_config_slice(&input, STANDARD, &mut buf); -} diff -Nru temporalio-1.3.0/vendor/bitflags/benches/parse.rs temporalio-1.3.0/vendor/bitflags/benches/parse.rs --- temporalio-1.3.0/vendor/bitflags/benches/parse.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/benches/parse.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,96 @@ +#![feature(test)] + +extern crate test; + +use std::{ + fmt::{self, Display}, + str::FromStr, +}; + +bitflags::bitflags! { + struct Flags10: u32 { + const A = 0b0000_0000_0000_0001; + const B = 0b0000_0000_0000_0010; + const C = 0b0000_0000_0000_0100; + const D = 0b0000_0000_0000_1000; + const E = 0b0000_0000_0001_0000; + const F = 0b0000_0000_0010_0000; + const G = 0b0000_0000_0100_0000; + const H = 0b0000_0000_1000_0000; + const I = 0b0000_0001_0000_0000; + const J = 0b0000_0010_0000_0000; + } +} + +impl FromStr for Flags10 { + type Err = bitflags::parser::ParseError; + + fn from_str(flags: &str) -> Result { + Ok(Flags10(flags.parse()?)) + } +} + +impl Display for Flags10 { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + Display::fmt(&self.0, f) + } +} + +#[bench] +fn format_flags_1_present(b: &mut test::Bencher) { + b.iter(|| Flags10::J.to_string()) +} + +#[bench] +fn format_flags_5_present(b: &mut test::Bencher) { + b.iter(|| (Flags10::F | Flags10::G | Flags10::H | Flags10::I | Flags10::J).to_string()) +} + +#[bench] +fn format_flags_10_present(b: &mut test::Bencher) { + b.iter(|| { + (Flags10::A + | Flags10::B + | Flags10::C + | Flags10::D + | Flags10::E + | Flags10::F + | Flags10::G + | Flags10::H + | Flags10::I + | Flags10::J) + .to_string() + }) +} + +#[bench] +fn parse_flags_1_10(b: &mut test::Bencher) { + b.iter(|| { + let flags: Flags10 = "J".parse().unwrap(); + flags + }) +} + +#[bench] +fn parse_flags_5_10(b: &mut test::Bencher) { + b.iter(|| { + let flags: Flags10 = "F | G | H | I | J".parse().unwrap(); + flags + }) +} + +#[bench] +fn parse_flags_10_10(b: &mut test::Bencher) { + b.iter(|| { + let flags: Flags10 = "A | B | C | D | E | F | G | H | I | J".parse().unwrap(); + flags + }) +} + +#[bench] +fn parse_flags_1_10_hex(b: &mut test::Bencher) { + b.iter(|| { + let flags: Flags10 = "0xFF".parse().unwrap(); + flags + }) +} diff -Nru temporalio-1.3.0/vendor/bitflags/.cargo-checksum.json temporalio-1.3.0/vendor/bitflags/.cargo-checksum.json --- temporalio-1.3.0/vendor/bitflags/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","CODE_OF_CONDUCT.md":"42634d0f6d922f49857175af991802822f7f920487aefa2ee250a50d12251a66","Cargo.toml":"87aced7532a7974eb37ab5fe6037f0abafc36d6b2d74891ecd2bf2f14f50d11e","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"baa8604f8afb34fd93b9c79729daafb884dedcaf34023e4af8ad037d916061fd","src/example_generated.rs":"e43eb59e90f317f38d436670a6067d2fd9eb35fb319fe716184e4a04e24ed1b2","src/lib.rs":"e6477688535ee326d27238aeedc9cb4320ac35b9d17a4deda09e0587b0ccdbd4","tests/basic.rs":"146f1cbf6279bc609242cd3349f29cb21b41294f5e4921875f5ec95bd83529a2","tests/compile-fail/impls/copy.rs":"b791371237ddc75a7c04d2130e03b462c9c00a80dca08bd45aa97433d9c0d13a","tests/compile-fail/impls/copy.stderr.beta":"77d83484ce221d4b6ff2f7de843929a452d779fcfff428122710dd8218c298e3","tests/compile-fail/impls/eq.rs":"0cee8b9e07d537890e0189710293b53972d0fab63c09366f33c391065afafa99","tests/compile-fail/impls/eq.stderr.beta":"381fc6143d45ce76d7cecc47aa59cb69fe5e79c0b60a4a85d5c6163b400b3cc7","tests/compile-fail/non_integer_base/all_defined.rs":"95e14cad9e94560262f2862c3c01865ac30369b69da1001b0e7285cb55e6cb75","tests/compile-fail/non_integer_base/all_defined.stderr.beta":"1760739a276690903bb03844025587d37939f5dfcbfab309db3c86f32bdbf748","tests/compile-fail/non_integer_base/all_missing.rs":"b3d9da619d23213731ba2581aa7999c796c3c79aaf4f0ee6b11ceec08a11537f","tests/compile-fail/non_integer_base/all_missing.stderr.beta":"37e102290d3867e175b21976be798939f294efb17580d5b51e7b17b590d55132","tests/compile-fail/visibility/private_field.rs":"38e4d3fe6471829360d12c8d09b097f6a21aa93fb51eac3b215d96bdae23316b","tests/compile-fail/visibility/private_field.stderr.beta":"5aa24a3ebb39326f31927721c5017b8beb66c3e501fb865a3fa814c9763bfa0f","tests/compile-fail/visibility/private_flags.rs":"2ce4235802aa4e9c96c4e77d9e31d8401ef58dcda4741325184f0764ab1fe393","tests/compile-fail/visibility/private_flags.stderr.beta":"f3eb9f7baf2689258f3519ff7ee5c6ec3c237264ebcfe63f40c40f2023e5022f","tests/compile-fail/visibility/pub_const.rs":"8f813a97ac518c5ea8ac65b184101912452384afaf7b8d6c5e62f8370eca3c0a","tests/compile-fail/visibility/pub_const.stderr.beta":"823976ae1794d7f5372e2ec9aabba497e7bb88004722904c38da342ed98e8962","tests/compile-pass/impls/convert.rs":"88fe80bfb9cd5779f0e1d92c9ec02a8b6bb67e334c07f2309e9c0ba5ef776eb0","tests/compile-pass/impls/default.rs":"c508f9a461691f44b45142fa5ad599f02326e1de4c0cbca6c0593f4652eba109","tests/compile-pass/impls/inherent_methods.rs":"ecc26388e9a394bfa7a5bb69a5d621ab3d4d1e53f28f657bb8e78fe79f437913","tests/compile-pass/redefinition/core.rs":"ff5b6e72f87acc6ebb12405d3c0f6e3fa62e669933656a454bb63b30ea44179c","tests/compile-pass/redefinition/stringify.rs":"1edbce42b900c14425d7ffa14e83e165ebe452d7dccd8c0a8a821bdec64f5c93","tests/compile-pass/repr/c.rs":"6fda17f7c2edfcd155314579e83d0fc8a16209e400f1f9a5ca77bd9a799041f2","tests/compile-pass/repr/transparent.rs":"6cdc87a2137d8a4e0c8ce9b6cba83c82255f8ea125951bf614418685600489ce","tests/compile-pass/visibility/bits_field.rs":"1f3e5ba5a047440066a9f6bf7b7af33f5b06f6b1da3dd9af6886168199a7ea0a","tests/compile-pass/visibility/pub_in.rs":"e95312ff60966d42ec4bc00225507895a9b8ec24056ce6a9edd9145be35d730f","tests/compile.rs":"f27c67a7dd183ca30efea1b6e0880e3469a6dd63b92b1fd711c082df182c9eec"},"package":"bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"} \ No newline at end of file +{"files":{"CHANGELOG.md":"233d0b9c9c8e2c89cd0e0dc225a3cf76c0a6fae357d2a02743fb4dff09286194","CODE_OF_CONDUCT.md":"42634d0f6d922f49857175af991802822f7f920487aefa2ee250a50d12251a66","CONTRIBUTING.md":"6c9f96eacb20af877ae2d16f024904f3038b93448a8488e9dbcac0df7f6439a5","Cargo.lock":"4db44aa18134aa14828cc0f99ff4329fbc9026dc89bb0503b9dc054d9ab62bc6","Cargo.toml":"6e552ff8a664536eb76313b23c84e895c0ce364506acace410c80d67b335a6cb","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"892ef45ec866633a928ad55f3083fe71fb5d311ea9f5ca2f4ba7d680f50ad724","SECURITY.md":"68704c8128fa2e776ed7cbda741fbf61ad52f998a96350ee7ee4dbf64c6573bc","benches/parse.rs":"f1390d62322c6880d65bd931e183d49b313f287879a6bfaa36b1cb1921090b51","examples/custom_bits_type.rs":"e53b32051adc5d97860e0b48c8f3a301a041d73b4939c0d7caa5f0cfcc0b9739","examples/custom_derive.rs":"29dd7b845345a103ca31e91b579aeb01fb74935b8223c29184eb42223edadb65","examples/fmt.rs":"87ba37a1fb8528570c74ea26d8e8948e1179c3d867b928bea1080880258e0a99","examples/macro_free.rs":"69e7f284b53b5214d51228a686e87f127b52a3b74711e45537ebfa5583a180e5","examples/serde.rs":"08b21b35d5c10fdca132fe0f36c8067bb44f559e96617a9257ab6316a20cbc75","spec.md":"fcdd939df30c59b0643be09027df664b71cbea9b9989185441482c5576160fed","src/example_generated.rs":"d018caf059f6ffc4c2403b771a6d76679fa5af03c329a91bd9252957df695e7f","src/external.rs":"11599248db17d395c6b45bf2400266f221d3eb1523908e5f17715964bf8d99ed","src/external/arbitrary.rs":"fa8c9187028b9bc54856977b0914676f62101010e7a9450abd577fd78c89552f","src/external/bytemuck.rs":"3afcef382122867040fddd5e4153d633d1ed5596fe5d7dfac66a8e61c2513df5","src/external/serde.rs":"4a09db12534a20fe554a08dc5f1c8124b379292d41fa75628abcd2ca21587573","src/internal.rs":"fd939154cbebf43bfc329a4a3cd08618ca30a6a5f6e6abea07d23f75bf5b3b2d","src/iter.rs":"dbaa6437c1c044f689185ce3fafe43df8796bed19bbdd2c20334a52de5eeee73","src/lib.rs":"28d42a2e573955ab816b937f8024f2bfc97663647558ace10914c224f4ddd296","src/parser.rs":"52f6352620ce3d5973bc38b42d56a760307294162c9d5668eb774eb92a6ef941","src/public.rs":"72b41639711bab95e8e75f37401a487088e7be1a427715cea40563fb3f64ed60","src/tests.rs":"b120c27ff0c67a819527de9d8171f1f4c5d37ba4009c54abeb869c70e6035f14","src/traits.rs":"0a8764c3e2378043e2724cf1bfc514d4ff1985026db33509f6451a7897e2675d"},"package":"b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/bitflags/Cargo.lock temporalio-1.3.0/vendor/bitflags/Cargo.lock --- temporalio-1.3.0/vendor/bitflags/Cargo.lock 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,265 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "arbitrary" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d098ff73c1ca148721f37baad5ea6a465a13f9573aba8641fbbbae8164a54e" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "basic-toml" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bfc506e7a2370ec239e1d072507b2a80c833083699d3c6fa176fbb4de8448c6" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "2.4.0" +dependencies = [ + "arbitrary", + "bytemuck", + "compiler_builtins", + "rustc-std-workspace-core", + "rustversion", + "serde", + "serde_derive", + "serde_json", + "serde_test", + "trybuild", + "zerocopy", +] + +[[package]] +name = "bytemuck" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdde5c9cd29ebd706ce1b35600920a33550e402fc998a2e53ad3b42c3c47a192" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "compiler_builtins" +version = "0.1.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6c0f24437059853f0fa64afc51f338f93647a3de4cf3358ba1bb4171a199775" + +[[package]] +name = "derive_arbitrary" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e0efad4403bfc52dc201159c4b842a246a14b98c64b55dfd0f2d89729dfeb8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "proc-macro2" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rustc-std-workspace-core" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1956f5517128a2b6f23ab2dadf1a976f4f5b27962e7724c2bf3d45e539ec098c" + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "serde" +version = "1.0.183" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c" + +[[package]] +name = "serde_derive" +version = "1.0.183" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_test" +version = "1.0.176" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a2f49ace1498612d14f7e0b8245519584db8299541dfe31a06374a828d620ab" +dependencies = [ + "serde", +] + +[[package]] +name = "syn" +version = "2.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "termcolor" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "trybuild" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84e0202ea606ba5ebee8507ab2bfbe89b98551ed9b8f0be198109275cff284b" +dependencies = [ + "basic-toml", + "glob", + "once_cell", + "serde", + "serde_derive", + "serde_json", + "termcolor", +] + +[[package]] +name = "unicode-ident" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "zerocopy" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3b9c234616391070b0b173963ebc65a9195068e7ed3731c6edac2ec45ebe106" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f7f3a471f98d0a61c34322fbbfd10c384b07687f680d4119813713f72308d91" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff -Nru temporalio-1.3.0/vendor/bitflags/Cargo.toml temporalio-1.3.0/vendor/bitflags/Cargo.toml --- temporalio-1.3.0/vendor/bitflags/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -3,29 +3,49 @@ # 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 +# to registry (e.g., crates.io) dependencies. # -# If you believe there's an error in this file please file an -# issue against the rust-lang/cargo repository. If you're -# editing this file be aware that the upstream Cargo.toml -# will likely look very different (and much more reasonable) +# 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" +edition = "2021" +rust-version = "1.56.0" name = "bitflags" -version = "1.3.2" +version = "2.4.0" authors = ["The Rust Project Developers"] -exclude = ["bors.toml"] -description = "A macro to generate structures which behave like bitflags.\n" +exclude = [ + "tests", + ".github", +] +description = """ +A macro to generate structures which behave like bitflags. +""" homepage = "https://github.com/bitflags/bitflags" documentation = "https://docs.rs/bitflags" readme = "README.md" -keywords = ["bit", "bitmask", "bitflags", "flags"] +keywords = [ + "bit", + "bitmask", + "bitflags", + "flags", +] categories = ["no-std"] -license = "MIT/Apache-2.0" +license = "MIT OR Apache-2.0" repository = "https://github.com/bitflags/bitflags" + [package.metadata.docs.rs] features = ["example_generated"] + +[dependencies.arbitrary] +version = "1.0" +optional = true + +[dependencies.bytemuck] +version = "1.0" +optional = true + [dependencies.compiler_builtins] version = "0.1.2" optional = true @@ -34,10 +54,21 @@ version = "1.0.0" optional = true package = "rustc-std-workspace-core" -[dev-dependencies.rustversion] + +[dependencies.serde] version = "1.0" +optional = true +default-features = false -[dev-dependencies.serde] +[dev-dependencies.arbitrary] +version = "1.0" +features = ["derive"] + +[dev-dependencies.bytemuck] +version = "1.0" +features = ["derive"] + +[dev-dependencies.rustversion] version = "1.0" [dev-dependencies.serde_derive] @@ -46,13 +77,19 @@ [dev-dependencies.serde_json] version = "1.0" +[dev-dependencies.serde_test] +version = "1.0" + [dev-dependencies.trybuild] version = "1.0" -[dev-dependencies.walkdir] -version = "2.3" +[dev-dependencies.zerocopy] +version = "0.6" [features] -default = [] example_generated = [] -rustc-dep-of-std = ["core", "compiler_builtins"] +rustc-dep-of-std = [ + "core", + "compiler_builtins", +] +std = [] diff -Nru temporalio-1.3.0/vendor/bitflags/CHANGELOG.md temporalio-1.3.0/vendor/bitflags/CHANGELOG.md --- temporalio-1.3.0/vendor/bitflags/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,235 @@ +# 2.4.0 + +## What's Changed +* Remove html_root_url by @eldruin in https://github.com/bitflags/bitflags/pull/368 +* Support unnamed flags by @KodrAus in https://github.com/bitflags/bitflags/pull/371 +* Update smoke test to verify all Clippy and rustc lints by @MitMaro in https://github.com/bitflags/bitflags/pull/374 +* Specify the behavior of bitflags by @KodrAus in https://github.com/bitflags/bitflags/pull/369 + +## New Contributors +* @eldruin made their first contribution in https://github.com/bitflags/bitflags/pull/368 +* @MitMaro made their first contribution in https://github.com/bitflags/bitflags/pull/374 + +**Full Changelog**: https://github.com/bitflags/bitflags/compare/2.3.3...2.4.0 + +# 2.3.3 + +## Changes to `-=` + +The `-=` operator was incorrectly changed to truncate bits that didn't correspond to valid flags in `2.3.0`. This has +been fixed up so it once again behaves the same as `-` and `difference`. + +## Changes to `!` + +The `!` operator previously called `Self::from_bits_truncate`, which would truncate any bits that only partially +overlapped with a valid flag. It will now use `bits & Self::all().bits()`, so any bits that overlap any bits +specified by any flag will be respected. This is unlikely to have any practical implications, but enables defining +a flag like `const ALL = !0` as a way to signal that any bit pattern is a known set of flags. + +## Changes to formatting + +Zero-valued flags will never be printed. You'll either get `0x0` for empty flags using debug formatting, or the +set of flags with zero-valued flags omitted for others. + +Composite flags will no longer be redundantly printed if there are extra bits to print at the end that don't correspond +to a valid flag. + +## What's Changed +* Fix up incorrect sub assign behavior and other cleanups by @KodrAus in https://github.com/bitflags/bitflags/pull/366 + +**Full Changelog**: https://github.com/bitflags/bitflags/compare/2.3.2...2.3.3 + +# 2.3.2 + +## What's Changed +* [doc] [src/lib.rs] delete redundant path prefix by @OccupyMars2025 in https://github.com/bitflags/bitflags/pull/361 + +## New Contributors +* @OccupyMars2025 made their first contribution in https://github.com/bitflags/bitflags/pull/361 + +**Full Changelog**: https://github.com/bitflags/bitflags/compare/2.3.1...2.3.2 + +# 2.3.1 + +## What's Changed +* Fix Self in flags value expressions by @KodrAus in https://github.com/bitflags/bitflags/pull/355 + +**Full Changelog**: https://github.com/bitflags/bitflags/compare/2.3.0...2.3.1 + +# 2.3.0 + +## What's Changed +* Support ejecting flags types from the bitflags macro by @KodrAus in https://github.com/bitflags/bitflags/pull/351 + +**Full Changelog**: https://github.com/bitflags/bitflags/compare/2.2.1...2.3.0 + +# 2.2.1 + +## What's Changed +* Refactor attribute filtering to apply per-flag by @KodrAus in https://github.com/bitflags/bitflags/pull/345 + +**Full Changelog**: https://github.com/bitflags/bitflags/compare/2.2.0...2.2.1 + +# 2.2.0 + +## What's Changed +* Create SECURITY.md by @KodrAus in https://github.com/bitflags/bitflags/pull/338 +* add docs to describe the behavior of multi-bit flags by @nicholasbishop in https://github.com/bitflags/bitflags/pull/340 +* Add support for bytemuck by @KodrAus in https://github.com/bitflags/bitflags/pull/336 +* Add a top-level macro for filtering attributes by @KodrAus in https://github.com/bitflags/bitflags/pull/341 + +## New Contributors +* @nicholasbishop made their first contribution in https://github.com/bitflags/bitflags/pull/340 + +**Full Changelog**: https://github.com/bitflags/bitflags/compare/2.1.0...2.2.0 + +# 2.1.0 + +## What's Changed +* Add docs for the internal Field0 and examples of formatting/parsing by @KodrAus in https://github.com/bitflags/bitflags/pull/328 +* Add support for arbitrary by @KodrAus in https://github.com/bitflags/bitflags/pull/324 +* Fix up missing docs for consts within consts by @KodrAus in https://github.com/bitflags/bitflags/pull/330 +* Ignore clippy lint in generated code by @Jake-Shadle in https://github.com/bitflags/bitflags/pull/331 + +## New Contributors +* @Jake-Shadle made their first contribution in https://github.com/bitflags/bitflags/pull/331 + +**Full Changelog**: https://github.com/bitflags/bitflags/compare/2.0.2...2.1.0 + +# 2.0.2 + +## What's Changed +* Fix up missing isize and usize Bits impls by @KodrAus in https://github.com/bitflags/bitflags/pull/321 + +**Full Changelog**: https://github.com/bitflags/bitflags/compare/2.0.1...2.0.2 + +# 2.0.1 + +## What's Changed +* Fix up some docs issues by @KodrAus in https://github.com/bitflags/bitflags/pull/309 +* Make empty_flag() const. by @tormeh in https://github.com/bitflags/bitflags/pull/313 +* Fix formatting of multi-bit flags with partial overlap by @KodrAus in https://github.com/bitflags/bitflags/pull/316 + +## New Contributors +* @tormeh made their first contribution in https://github.com/bitflags/bitflags/pull/313 + +**Full Changelog**: https://github.com/bitflags/bitflags/compare/2.0.0...2.0.1 + +# 2.0.0 + +## What's Changed +* Fix a typo and call out MSRV bump by @KodrAus in https://github.com/bitflags/bitflags/pull/259 +* BitFlags trait by @arturoc in https://github.com/bitflags/bitflags/pull/220 +* Add a hidden trait to discourage manual impls of BitFlags by @KodrAus in https://github.com/bitflags/bitflags/pull/261 +* Sanitize `Ok` by @konsumlamm in https://github.com/bitflags/bitflags/pull/266 +* Fix bug in `Debug` implementation by @konsumlamm in https://github.com/bitflags/bitflags/pull/268 +* Fix a typo in the generated documentation by @wackbyte in https://github.com/bitflags/bitflags/pull/271 +* Use SPDX license format by @atouchet in https://github.com/bitflags/bitflags/pull/272 +* serde tests fail in CI by @arturoc in https://github.com/bitflags/bitflags/pull/277 +* Fix beta test output by @KodrAus in https://github.com/bitflags/bitflags/pull/279 +* Add example to the README.md file by @tiaanl in https://github.com/bitflags/bitflags/pull/270 +* Iterator over all the enabled options by @arturoc in https://github.com/bitflags/bitflags/pull/278 +* from_bits_(truncate) fail with composite flags by @arturoc in https://github.com/bitflags/bitflags/pull/276 +* Add more platform coverage to CI by @KodrAus in https://github.com/bitflags/bitflags/pull/280 +* rework the way cfgs are handled by @KodrAus in https://github.com/bitflags/bitflags/pull/281 +* Split generated code into two types by @KodrAus in https://github.com/bitflags/bitflags/pull/282 +* expose bitflags iters using nameable types by @KodrAus in https://github.com/bitflags/bitflags/pull/286 +* Support creating flags from their names by @KodrAus in https://github.com/bitflags/bitflags/pull/287 +* Update README.md by @KodrAus in https://github.com/bitflags/bitflags/pull/288 +* Prepare for 2.0.0-rc.1 release by @KodrAus in https://github.com/bitflags/bitflags/pull/289 +* Add missing "if" to contains doc-comment in traits.rs by @rusty-snake in https://github.com/bitflags/bitflags/pull/291 +* Forbid unsafe_code by @fintelia in https://github.com/bitflags/bitflags/pull/294 +* serde: enable no-std support by @nim65s in https://github.com/bitflags/bitflags/pull/296 +* Add a parser for flags formatted as bar-separated-values by @KodrAus in https://github.com/bitflags/bitflags/pull/297 +* Prepare for 2.0.0-rc.2 release by @KodrAus in https://github.com/bitflags/bitflags/pull/299 +* Use strip_prefix instead of starts_with + slice by @QuinnPainter in https://github.com/bitflags/bitflags/pull/301 +* Fix up some clippy lints by @KodrAus in https://github.com/bitflags/bitflags/pull/302 +* Prepare for 2.0.0-rc.3 release by @KodrAus in https://github.com/bitflags/bitflags/pull/303 +* feat: Add minimum permissions to rust.yml workflow by @gabibguti in https://github.com/bitflags/bitflags/pull/305 + +## New Contributors +* @wackbyte made their first contribution in https://github.com/bitflags/bitflags/pull/271 +* @atouchet made their first contribution in https://github.com/bitflags/bitflags/pull/272 +* @tiaanl made their first contribution in https://github.com/bitflags/bitflags/pull/270 +* @rusty-snake made their first contribution in https://github.com/bitflags/bitflags/pull/291 +* @fintelia made their first contribution in https://github.com/bitflags/bitflags/pull/294 +* @nim65s made their first contribution in https://github.com/bitflags/bitflags/pull/296 +* @QuinnPainter made their first contribution in https://github.com/bitflags/bitflags/pull/301 +* @gabibguti made their first contribution in https://github.com/bitflags/bitflags/pull/305 + +**Full Changelog**: https://github.com/bitflags/bitflags/compare/1.3.2...2.0.0 + +# 2.0.0-rc.3 + +## What's Changed +* Use strip_prefix instead of starts_with + slice by @QuinnPainter in https://github.com/bitflags/bitflags/pull/301 +* Fix up some clippy lints by @KodrAus in https://github.com/bitflags/bitflags/pull/302 + +## New Contributors +* @QuinnPainter made their first contribution in https://github.com/bitflags/bitflags/pull/301 + +**Full Changelog**: https://github.com/bitflags/bitflags/compare/2.0.0-rc.2...2.0.0-rc.3 + +# 2.0.0-rc.2 + +## Changes to `serde` serialization + +**âš ï¸ NOTE âš ï¸** This release changes the default serialization you'll get if you `#[derive(Serialize, Deserialize)]` +on your generated flags types. It will now use a formatted string for human-readable formats and the underlying bits +type for compact formats. + +To keep the old behavior, see the [`bitflags-serde-legacy`](https://github.com/KodrAus/bitflags-serde-legacy) library. + +## What's Changed + +* Add missing "if" to contains doc-comment in traits.rs by @rusty-snake in https://github.com/bitflags/bitflags/pull/291 +* Forbid unsafe_code by @fintelia in https://github.com/bitflags/bitflags/pull/294 +* serde: enable no-std support by @nim65s in https://github.com/bitflags/bitflags/pull/296 +* Add a parser for flags formatted as bar-separated-values by @KodrAus in https://github.com/bitflags/bitflags/pull/297 + +## New Contributors +* @rusty-snake made their first contribution in https://github.com/bitflags/bitflags/pull/291 +* @fintelia made their first contribution in https://github.com/bitflags/bitflags/pull/294 +* @nim65s made their first contribution in https://github.com/bitflags/bitflags/pull/296 + +**Full Changelog**: https://github.com/bitflags/bitflags/compare/2.0.0-rc.1...2.0.0-rc.2 + +# 2.0.0-rc.1 + +This is a big release including a few years worth of work on a new `BitFlags` trait, iteration, and better macro organization for future extensibility. + +## What's Changed +* Fix a typo and call out MSRV bump by @KodrAus in https://github.com/bitflags/bitflags/pull/259 +* BitFlags trait by @arturoc in https://github.com/bitflags/bitflags/pull/220 +* Add a hidden trait to discourage manual impls of BitFlags by @KodrAus in https://github.com/bitflags/bitflags/pull/261 +* Sanitize `Ok` by @konsumlamm in https://github.com/bitflags/bitflags/pull/266 +* Fix bug in `Debug` implementation by @konsumlamm in https://github.com/bitflags/bitflags/pull/268 +* Fix a typo in the generated documentation by @wackbyte in https://github.com/bitflags/bitflags/pull/271 +* Use SPDX license format by @atouchet in https://github.com/bitflags/bitflags/pull/272 +* serde tests fail in CI by @arturoc in https://github.com/bitflags/bitflags/pull/277 +* Fix beta test output by @KodrAus in https://github.com/bitflags/bitflags/pull/279 +* Add example to the README.md file by @tiaanl in https://github.com/bitflags/bitflags/pull/270 +* Iterator over all the enabled options by @arturoc in https://github.com/bitflags/bitflags/pull/278 +* from_bits_(truncate) fail with composite flags by @arturoc in https://github.com/bitflags/bitflags/pull/276 +* Add more platform coverage to CI by @KodrAus in https://github.com/bitflags/bitflags/pull/280 +* rework the way cfgs are handled by @KodrAus in https://github.com/bitflags/bitflags/pull/281 +* Split generated code into two types by @KodrAus in https://github.com/bitflags/bitflags/pull/282 +* expose bitflags iters using nameable types by @KodrAus in https://github.com/bitflags/bitflags/pull/286 +* Support creating flags from their names by @KodrAus in https://github.com/bitflags/bitflags/pull/287 +* Update README.md by @KodrAus in https://github.com/bitflags/bitflags/pull/288 + +## New Contributors +* @wackbyte made their first contribution in https://github.com/bitflags/bitflags/pull/271 +* @atouchet made their first contribution in https://github.com/bitflags/bitflags/pull/272 +* @tiaanl made their first contribution in https://github.com/bitflags/bitflags/pull/270 + +**Full Changelog**: https://github.com/bitflags/bitflags/compare/1.3.2...2.0.0-rc.1 + # 1.3.2 - Allow `non_snake_case` in generated flags types ([#256]) -[#252]: https://github.com/bitflags/bitflags/pull/256 +[#256]: https://github.com/bitflags/bitflags/pull/256 # 1.3.1 @@ -12,6 +239,8 @@ # 1.3.0 (yanked) +**This release bumps the Minimum Supported Rust Version to `1.46.0`** + - Add `#[repr(transparent)]` ([#187]) - End `empty` doc comment with full stop ([#202]) diff -Nru temporalio-1.3.0/vendor/bitflags/CONTRIBUTING.md temporalio-1.3.0/vendor/bitflags/CONTRIBUTING.md --- temporalio-1.3.0/vendor/bitflags/CONTRIBUTING.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/CONTRIBUTING.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,9 @@ +# Updating compile-fail test outputs + +`bitflags` uses the `trybuild` crate to integration test its macros. Since Rust error messages change frequently enough that `nightly` builds produce spurious failures, we only check the compiler output in `beta` builds. If you run: + +``` +TRYBUILD=overwrite cargo +beta test --all +``` + +it will run the tests and update the `trybuild` output files. diff -Nru temporalio-1.3.0/vendor/bitflags/examples/custom_bits_type.rs temporalio-1.3.0/vendor/bitflags/examples/custom_bits_type.rs --- temporalio-1.3.0/vendor/bitflags/examples/custom_bits_type.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/examples/custom_bits_type.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,97 @@ +use std::ops::{BitAnd, BitOr, BitXor, Not}; + +use bitflags::{Bits, Flag, Flags}; + +// Define a custom container that can be used in flags types +// Note custom bits types can't be used in `bitflags!` +// without making the trait impls `const`. This is currently +// unstable +#[derive(Clone, Copy, Debug)] +pub struct CustomBits([bool; 3]); + +impl Bits for CustomBits { + const EMPTY: Self = CustomBits([false; 3]); + + const ALL: Self = CustomBits([true; 3]); +} + +impl PartialEq for CustomBits { + fn eq(&self, other: &Self) -> bool { + self.0 == other.0 + } +} + +impl BitAnd for CustomBits { + type Output = Self; + + fn bitand(self, other: Self) -> Self { + CustomBits([ + self.0[0] & other.0[0], + self.0[1] & other.0[1], + self.0[2] & other.0[2], + ]) + } +} + +impl BitOr for CustomBits { + type Output = Self; + + fn bitor(self, other: Self) -> Self { + CustomBits([ + self.0[0] | other.0[0], + self.0[1] | other.0[1], + self.0[2] | other.0[2], + ]) + } +} + +impl BitXor for CustomBits { + type Output = Self; + + fn bitxor(self, other: Self) -> Self { + CustomBits([ + self.0[0] & other.0[0], + self.0[1] & other.0[1], + self.0[2] & other.0[2], + ]) + } +} + +impl Not for CustomBits { + type Output = Self; + + fn not(self) -> Self { + CustomBits([!self.0[0], !self.0[1], !self.0[2]]) + } +} + +#[derive(Clone, Copy, Debug)] +pub struct CustomFlags(CustomBits); + +impl CustomFlags { + pub const A: Self = CustomFlags(CustomBits([true, false, false])); + pub const B: Self = CustomFlags(CustomBits([false, true, false])); + pub const C: Self = CustomFlags(CustomBits([false, false, true])); +} + +impl Flags for CustomFlags { + const FLAGS: &'static [Flag] = &[ + Flag::new("A", Self::A), + Flag::new("B", Self::B), + Flag::new("C", Self::C), + ]; + + type Bits = CustomBits; + + fn bits(&self) -> Self::Bits { + self.0 + } + + fn from_bits_retain(bits: Self::Bits) -> Self { + CustomFlags(bits) + } +} + +fn main() { + println!("{:?}", CustomFlags::A.union(CustomFlags::C)); +} diff -Nru temporalio-1.3.0/vendor/bitflags/examples/custom_derive.rs temporalio-1.3.0/vendor/bitflags/examples/custom_derive.rs --- temporalio-1.3.0/vendor/bitflags/examples/custom_derive.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/examples/custom_derive.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,23 @@ +//! An example of implementing the `BitFlags` trait manually for a flags type. + +use std::str; + +use bitflags::bitflags; + +// Define a flags type outside of the `bitflags` macro as a newtype +// It can accept custom derives for libaries `bitflags` doesn't support natively +#[derive(zerocopy::AsBytes, zerocopy::FromBytes)] +#[repr(transparent)] +pub struct ManualFlags(u32); + +// Next: use `impl Flags` instead of `struct Flags` +bitflags! { + impl ManualFlags: u32 { + const A = 0b00000001; + const B = 0b00000010; + const C = 0b00000100; + const ABC = Self::A.bits() | Self::B.bits() | Self::C.bits(); + } +} + +fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags/examples/fmt.rs temporalio-1.3.0/vendor/bitflags/examples/fmt.rs --- temporalio-1.3.0/vendor/bitflags/examples/fmt.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/examples/fmt.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,49 @@ +//! An example of implementing Rust's standard formatting and parsing traits for flags types. + +use core::{fmt, str}; + +bitflags::bitflags! { + // You can `#[derive]` the `Debug` trait, but implementing it manually + // can produce output like `A | B` instead of `Flags(A | B)`. + // #[derive(Debug)] + #[derive(PartialEq, Eq)] + pub struct Flags: u32 { + const A = 1; + const B = 2; + const C = 4; + const D = 8; + } +} + +impl fmt::Debug for Flags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + bitflags::parser::to_writer(self, f) + } +} + +impl fmt::Display for Flags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + bitflags::parser::to_writer(self, f) + } +} + +impl str::FromStr for Flags { + type Err = bitflags::parser::ParseError; + + fn from_str(flags: &str) -> Result { + bitflags::parser::from_str(flags) + } +} + +fn main() -> Result<(), bitflags::parser::ParseError> { + let flags = Flags::A | Flags::B; + + println!("{}", flags); + + let formatted = flags.to_string(); + let parsed: Flags = formatted.parse()?; + + assert_eq!(flags, parsed); + + Ok(()) +} diff -Nru temporalio-1.3.0/vendor/bitflags/examples/macro_free.rs temporalio-1.3.0/vendor/bitflags/examples/macro_free.rs --- temporalio-1.3.0/vendor/bitflags/examples/macro_free.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/examples/macro_free.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,61 @@ +//! An example of implementing the `BitFlags` trait manually for a flags type. +//! +//! This example doesn't use any macros. + +use std::{fmt, str}; + +use bitflags::{Flag, Flags}; + +// First: Define your flags type. It just needs to be `Sized + 'static`. +pub struct ManualFlags(u32); + +// Not required: Define some constants for valid flags +impl ManualFlags { + pub const A: ManualFlags = ManualFlags(0b00000001); + pub const B: ManualFlags = ManualFlags(0b00000010); + pub const C: ManualFlags = ManualFlags(0b00000100); + pub const ABC: ManualFlags = ManualFlags(0b00000111); +} + +// Next: Implement the `BitFlags` trait, specifying your set of valid flags +// and iterators +impl Flags for ManualFlags { + const FLAGS: &'static [Flag] = &[ + Flag::new("A", Self::A), + Flag::new("B", Self::B), + Flag::new("C", Self::C), + ]; + + type Bits = u32; + + fn bits(&self) -> u32 { + self.0 + } + + fn from_bits_retain(bits: u32) -> Self { + Self(bits) + } +} + +// Not required: Add parsing support +impl str::FromStr for ManualFlags { + type Err = bitflags::parser::ParseError; + + fn from_str(input: &str) -> Result { + bitflags::parser::from_str(input) + } +} + +// Not required: Add formatting support +impl fmt::Display for ManualFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + bitflags::parser::to_writer(self, f) + } +} + +fn main() { + println!( + "{}", + ManualFlags::A.union(ManualFlags::B).union(ManualFlags::C) + ); +} diff -Nru temporalio-1.3.0/vendor/bitflags/examples/serde.rs temporalio-1.3.0/vendor/bitflags/examples/serde.rs --- temporalio-1.3.0/vendor/bitflags/examples/serde.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/examples/serde.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,36 @@ +//! An example of implementing `serde::Serialize` and `serde::Deserialize`. +//! The `#[serde(transparent)]` attribute is recommended to serialize directly +//! to the underlying bits type without wrapping it in a `serde` newtype. + +#[cfg(feature = "serde")] +fn main() { + use serde_derive::*; + + bitflags::bitflags! { + #[derive(Serialize, Deserialize, Debug, PartialEq, Eq)] + #[serde(transparent)] + pub struct Flags: u32 { + const A = 1; + const B = 2; + const C = 4; + const D = 8; + } + } + + let flags = Flags::A | Flags::B; + + let serialized = serde_json::to_string(&flags).unwrap(); + + println!("{:?} -> {}", flags, serialized); + + assert_eq!(serialized, r#""A | B""#); + + let deserialized: Flags = serde_json::from_str(&serialized).unwrap(); + + println!("{} -> {:?}", serialized, flags); + + assert_eq!(deserialized, flags); +} + +#[cfg(not(feature = "serde"))] +fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags/README.md temporalio-1.3.0/vendor/bitflags/README.md --- temporalio-1.3.0/vendor/bitflags/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -2,14 +2,24 @@ ======== [![Rust](https://github.com/bitflags/bitflags/workflows/Rust/badge.svg)](https://github.com/bitflags/bitflags/actions) -[![Join the chat at https://gitter.im/bitflags/Lobby](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/bitflags/Lobby?utm_source=badge&utm_medium=badge&utm_content=badge) [![Latest version](https://img.shields.io/crates/v/bitflags.svg)](https://crates.io/crates/bitflags) [![Documentation](https://docs.rs/bitflags/badge.svg)](https://docs.rs/bitflags) ![License](https://img.shields.io/crates/l/bitflags.svg) -A Rust macro to generate structures which behave like a set of bitflags +`bitflags` generates flags enums with well-defined semantics and ergonomic end-user APIs. + +You can use `bitflags` to: + +- provide more user-friendly bindings to C APIs where flags may or may not be fully known in advance. +- generate efficient options types with string parsing and formatting support. + +You can't use `bitflags` to: + +- guarantee only bits corresponding to defined flags will ever be set. `bitflags` allows access to the underlying bits type so arbitrary bits may be set. +- define bitfields. `bitflags` only generates types where set bits denote the presence of some combination of flags. - [Documentation](https://docs.rs/bitflags) +- [Specification](https://github.com/bitflags/bitflags/blob/main/spec.md) - [Release notes](https://github.com/bitflags/bitflags/releases) ## Usage @@ -18,7 +28,7 @@ ```toml [dependencies] -bitflags = "1.3" +bitflags = "2.4.0" ``` and this to your source code: @@ -27,6 +37,35 @@ use bitflags::bitflags; ``` +## Example + +Generate a flags structure: + +```rust +use bitflags::bitflags; + +// The `bitflags!` macro generates `struct`s that manage a set of flags. +bitflags! { + #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] + struct Flags: u32 { + const A = 0b00000001; + const B = 0b00000010; + const C = 0b00000100; + const ABC = Self::A.bits() | Self::B.bits() | Self::C.bits(); + } +} + +fn main() { + let e1 = Flags::A | Flags::C; + let e2 = Flags::B | Flags::C; + assert_eq!((e1 | e2), Flags::ABC); // union + assert_eq!((e1 & e2), Flags::C); // intersection + assert_eq!((e1 - e2), Flags::A); // set difference + assert_eq!(!e2, Flags::A); // set complement +} +``` + ## Rust Version Support -The minimum supported Rust version is 1.46 due to use of associated constants and const functions. +The minimum supported Rust version is documented in the `Cargo.toml` file. +This may be bumped in minor releases as necessary. diff -Nru temporalio-1.3.0/vendor/bitflags/SECURITY.md temporalio-1.3.0/vendor/bitflags/SECURITY.md --- temporalio-1.3.0/vendor/bitflags/SECURITY.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/SECURITY.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,13 @@ +# Security Policy + +## Supported Versions + +Security updates are applied only to the latest release. + +## Reporting a Vulnerability + +If you have discovered a security vulnerability in this project, please report it privately. **Do not disclose it as a public issue.** This gives us time to work with you to fix the issue before public exposure, reducing the chance that the exploit will be used before a patch is released. + +Please disclose it at [security advisory](https://github.com/bitflags/bitflags/security/advisories/new). + +This project is maintained by a team of volunteers on a reasonable-effort basis. As such, please give us at least 90 days to work on a fix before public exposure. diff -Nru temporalio-1.3.0/vendor/bitflags/spec.md temporalio-1.3.0/vendor/bitflags/spec.md --- temporalio-1.3.0/vendor/bitflags/spec.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/spec.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,552 @@ +# Bitflags + +`bitflags` generates flags enums with well-defined semantics and ergonomic end-user APIs. + +You can use `bitflags` to: + +- provide more user-friendly bindings to C APIs where flags may or may not be fully known in advance. +- generate efficient options types with string parsing and formatting support. + +You can't use `bitflags` to: + +- guarantee only bits corresponding to defined flags will ever be set. `bitflags` allows access to the underlying bits type so arbitrary bits may be set. +- define bitfields. `bitflags` only generates types where set bits denote the presence of some combination of flags. + +## Definitions + +This section formally defines the terminology and semantics of `bitflags`. It's organized so more fundamental concepts are introduced before those that build on them. It may be helpful to start from the bottom of the section and refer back up to concepts defined earlier. + +Examples use `bitflags` syntax with `u8` as the bits type. + +### Bits type + +A type that defines a fixed number of bits at specific locations. + +---- + +Bits types are typically fixed-width unsigned integers. For example, `u8` is a bits type that defines 8 bits; bit-0 through bit-7. + +### Bits value + +An instance of a bits type where each bit may be set (`1`) or unset (`0`). + +---- + +Some examples of bits values for the bits type `u8` are: + +```rust +0b0000_0000 +0b1111_1111 +0b1010_0101 +``` + +#### Equality + +Two bits values are equal if their bits are in the same configuration; set bits in one are set in the other, and unset bits in one are unset in the other. + +#### Operations + +Bits values define the bitwise operators and (`&`), or (`|`), exclusive-or (`^`), and negation (`!`) that apply to each of their bits. + +### Flag + +A set of bits in a bits type that may have a unique name. + +---- + +Bits are not required to be exclusive to a flag. Bits are not required to be contiguous. + +The following is a flag for `u8` with the name `A` that includes bit-0: + +```rust +const A = 0b0000_0001; +``` + +The following is a flag for `u8` with the name `B` that includes bit-0, and bit-5: + +```rust +const B = 0b0010_0001; +``` + +#### Named flag + +A flag with a name. + +---- + +The following is a named flag, where the name is `A`: + +```rust +const A = 0b0000_0001; +``` + +#### Unnamed flag + +A flag without a name. + +---- + +The following is an unnamed flag: + +```rust +const _ = 0b0000_0001; +``` + +#### Zero-bit flag + +A flag with a set of zero bits. + +---- + +The following is a zero-bit flag: + +```rust +const ZERO = 0b0000_0000; +``` + +#### Single-bit flag + +A flag with a set of one bit. + +---- + +The following are single-bit flags: + +```rust +const A = 0b0000_0001; +const B = 0b0000_0010; +``` + +#### Multi-bit flag + +A flag with a set of more than one bit. + +---- + +The following are multi-bit flags: + +```rust +const A = 0b0000_0011; +const B = 0b1111_1111; +``` + +### Flags type + +A set of defined flags over a specific bits type. + +#### Known bit + +A bit in any defined flag. + +---- + +In the following flags type: + +```rust +struct Flags { + const A = 0b0000_0001; + const B = 0b0000_0010; + const C = 0b0000_0100; +} +``` + +the known bits are: + +```rust +0b0000_0111 +``` + +#### Unknown bit + +A bit not in any defined flag. + +---- + +In the following flags type: + +```rust +struct Flags { + const A = 0b0000_0001; + const B = 0b0000_0010; + const C = 0b0000_0100; +} +``` + +the unknown bits are: + +```rust +0b1111_1000 +``` + +### Flags value + +An instance of a flags type using its specific bits value for storage. + +The flags value of a flag is one where each of its bits is set, and all others are unset. + +#### Contains + +Whether all set bits in a source flags value are also set in a target flags value. + +---- + +Given the flags value: + +```rust +0b0000_0011 +``` + +the following flags values are contained: + +```rust +0b0000_0000 +0b0000_0010 +0b0000_0001 +0b0000_0011 +``` + +but the following flags values are not contained: + +```rust +0b0000_1000 +0b0000_0110 +``` + +#### Intersects + +Whether any set bits in a source flags value are also set in a target flags value. + +---- + +Given the flags value: + +```rust +0b0000_0011 +``` + +the following flags intersect: + +```rust +0b0000_0010 +0b0000_0001 +0b1111_1111 +``` + +but the following flags values do not intersect: + +```rust +0b0000_0000 +0b1111_0000 +``` + +#### Empty + +Whether all bits in a flags value are unset. + +---- + +The following flags value is empty: + +```rust +0b0000_0000 +``` + +The following flags values are not empty: + +```rust +0b0000_0001 +0b0110_0000 +``` + +#### All + +Whether all defined flags are contained in a flags value. + +---- + +Given a flags type: + +```rust +struct Flags { + const A = 0b0000_0001; + const B = 0b0000_0010; +} +``` + +the following flags values all satisfy all: + +```rust +0b0000_0011 +0b1000_0011 +0b1111_1111 +``` + +### Operations + +Examples in this section all use the given flags type: + +```rust +struct Flags { + const A = 0b0000_0001; + const B = 0b0000_0010; + const C = 0b0000_1100; +} +``` + +#### Truncate + +Unset all unknown bits in a flags value. + +---- + +Given the flags value: + +```rust +0b1111_1111 +``` + +the result of truncation will be: + +```rust +0b0000_1111 +``` + +---- + +Truncating doesn't guarantee that a non-empty result will contain any defined flags. Given the following flags type: + +```rust +struct Flags { + const A = 0b0000_0101; +} +``` + +and the following flags value: + +```rust +0b0000_1110; +``` + +The result of truncation will be: + +```rust +0b0000_0100; +``` + +which intersects the flag `A`, but doesn't contain it. + +This behavior is possible even when only operating with flags values containing defined flags. Given the following flags type: + +```rust +struct Flags { + const A = 0b0000_0101; + const B = 0b0000_0001; +} +``` + +The result of `A ^ B` is `0b0000_0100`, which also doesn't contain any defined flag. + +---- + +If all known bits are in the set of at least one defined single-bit flag, then all operations that produce non-empty results will always contain defined flags. + +#### Union + +The bitwise or (`|`) of the bits in two flags values. + +---- + +The following are examples of the result of unioning flags values: + +```rust +0b0000_0001 | 0b0000_0010 = 0b0000_0011 +0b0000_0000 | 0b1111_1111 = 0b1111_1111 +``` + +#### Intersection + +The bitwise and (`&`) of the bits in two flags values. + +---- + +The following are examples of the result of intersecting flags values: + +```rust +0b0000_0001 & 0b0000_0010 = 0b0000_0000 +0b1111_1100 & 0b1111_0111 = 0b1111_0100 +0b1111_1111 & 0b1111_1111 = 0b1111_1111 +``` + +#### Symmetric difference + +The bitwise exclusive-or (`^`) of the bits in two flags values. + +---- + +The following are examples of the symmetric difference between two flags values: + +```rust +0b0000_0001 ^ 0b0000_0010 = 0b0000_0011 +0b0000_1111 ^ 0b0000_0011 = 0b0000_1100 +0b1100_0000 ^ 0b0011_0000 = 0b1111_0000 +``` + +#### Complement + +The bitwise negation (`!`) of the bits in a flags value, truncating the result. + +---- + +The following are examples of the complement of a flags value: + +```rust +!0b0000_0000 = 0b0000_1111 +!0b0000_1111 = 0b0000_0000 +!0b1111_1000 = 0b0000_0111 +``` + +#### Difference + +The bitwise union (`|`) of the bits in one flags value and the bitwise negation (`!`) of the bits in another. + +---- + +This operation is not equivalent to the intersection of one flags value with the complement of another (`&!`). +The former will truncate the result, where difference will not. + +---- + +The following are examples of the difference between two flags values: + +```rust +0b0000_0001 & !0b0000_0010 = 0b0000_0001 +0b0000_1101 & !0b0000_0011 = 0b0000_1100 +0b1111_1111 & !0b0000_0001 = 0b1111_1110 +``` + +### Iteration + +Yield the bits of a source flags value in a set of contained flags values. + +---- + +To be most useful, each yielded flags value should set exactly the bits of a defined flag contained in the source. Any known bits that aren't in the set of any contained flag should be yielded together as a final flags value. + +---- + +Given the following flags type: + +```rust +struct Flags { + const A = 0b0000_0001; + const B = 0b0000_0010; + const AB = 0b0000_0011; +} +``` + +and the following flags value: + +```rust +0b0000_1111 +``` + +When iterated it may yield a flags value for `A` and `B`, then a final flag with the unknown bits: + +```rust +0b0000_0001 +0b0000_0010 +0b0000_1100 +``` + +It may also yield a flags value for `AB`, then a final flag with the unknown bits: + +```rust +0b0000_0011 +0b0000_1100 +``` + +---- + +Given the following flags type: + +```rust +struct Flags { + const A = 0b0000_0011; +} +``` + +and the following flags value: + +```rust +0b0000_0001 +``` + +When iterated it will still yield a flags value for the known bit `0b0000_0001` even though it doesn't contain a flag. + +### Formatting + +Format and parse a flags value as text using the following grammar: + +- _Flags:_ (_Whitespace_ _Flag_ _Whitespace_)`|`* +- _Flag:_ _Name_ | _Hex Number_ +- _Name:_ The name of any defined flag +- _Hex Number_: `0x`([0-9a-fA-F])* +- _Whitespace_: (\s)* + +Flags values can be formatted as _Flags_ by iterating over them, formatting each yielded flags value as a _Flag_. Any yielded flags value that sets exactly the bits of a defined flag with a name should be formatted as a _Name_. Otherwise it must be formatted as a _Hex Number_. + +Formatting and parsing supports three modes: + +- **Retain**: Formatting and parsing roundtrips exactly the bits of the source flags value. This is the default behavior. +- **Truncate**: Flags values are truncated before formatting, and truncated after parsing. +- **Strict**: A _Flag_ may only be formatted and parsed as a _Name_. _Hex numbers_ are not allowed. A consequence of this is that unknown bits and any bits that aren't in a contained named flag will be ignored. This is recommended for flags values serialized across API boundaries, like web services. + +Text that is empty or whitespace is an empty flags value. + +---- + +Given the following flags type: + +```rust +struct Flags { + const A = 0b0000_0001; + const B = 0b0000_0010; + const AB = 0b0000_0011; + const C = 0b0000_1100; +} +``` + +The following are examples of how flags values can be formatted using any mode: + +```rust +0b0000_0000 = "" +0b0000_0001 = "A" +0b0000_0010 = "B" +0b0000_0011 = "A | B" +0b0000_0011 = "AB" +0b0000_1111 = "A | B | C" +``` + +Truncate mode will unset any unknown bits: + +```rust +0b1000_0000 = "" +0b1111_1111 = "A | B | C" +0b0000_1000 = "0x8" +``` + +Retain mode will include any unknown bits as a final _Flag_: + +```rust +0b1000_0000 = "0x80" +0b1111_1111 = "A | B | C | 0xf0" +0b0000_1000 = "0x8" +``` + +Strict mode will unset any unknown bits, as well as bits not contained in any defined named flags: + +```rust +0b1000_0000 = "" +0b1111_1111 = "A | B | C" +0b0000_1000 = "" +``` diff -Nru temporalio-1.3.0/vendor/bitflags/src/example_generated.rs temporalio-1.3.0/vendor/bitflags/src/example_generated.rs --- temporalio-1.3.0/vendor/bitflags/src/example_generated.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/src/example_generated.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,14 +1,65 @@ //! This module shows an example of code generated by the macro. **IT MUST NOT BE USED OUTSIDE THIS //! CRATE**. +//! +//! Usually, when you call the `bitflags!` macro, only the `Flags` type would be visible. In this +//! example, the `Field0`, `Iter`, and `IterRaw` types are also exposed so that you can explore +//! their APIs. The `Field0` type can be accessed as `self.0` on an instance of `Flags`. -bitflags! { +__declare_public_bitflags! { /// This is the same `Flags` struct defined in the [crate level example](../index.html#example). /// Note that this struct is just for documentation purposes only, it must not be used outside /// this crate. - pub struct Flags: u32 { + pub struct Flags +} + +__declare_internal_bitflags! { + pub struct Field0: u32 +} + +__impl_internal_bitflags! { + Field0: u32, Flags { + // Field `A`. + /// + /// This flag has the value `0b00000001`. + const A = 0b00000001; + /// Field `B`. + /// + /// This flag has the value `0b00000010`. + const B = 0b00000010; + /// Field `C`. + /// + /// This flag has the value `0b00000100`. + const C = 0b00000100; + const ABC = Self::A.bits() | Self::B.bits() | Self::C.bits(); + } +} + +__impl_public_bitflags_forward! { + Flags: u32, Field0 +} + +__impl_public_bitflags_ops! { + Flags +} + +__impl_public_bitflags_iter! { + Flags: u32, Flags +} + +__impl_public_bitflags_consts! { + Flags: u32 { + /// Field `A`. + /// + /// This flag has the value `0b00000001`. const A = 0b00000001; + /// Field `B`. + /// + /// This flag has the value `0b00000010`. const B = 0b00000010; + /// Field `C`. + /// + /// This flag has the value `0b00000100`. const C = 0b00000100; - const ABC = Self::A.bits | Self::B.bits | Self::C.bits; + const ABC = Self::A.bits() | Self::B.bits() | Self::C.bits(); } } diff -Nru temporalio-1.3.0/vendor/bitflags/src/external/arbitrary.rs temporalio-1.3.0/vendor/bitflags/src/external/arbitrary.rs --- temporalio-1.3.0/vendor/bitflags/src/external/arbitrary.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/src/external/arbitrary.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,33 @@ +//! Specialized fuzzing for flags types using `arbitrary`. + +use crate::Flags; + +/** +Generate some arbitrary flags value with only known bits set. +*/ +pub fn arbitrary<'a, B: Flags>(u: &mut arbitrary::Unstructured<'a>) -> arbitrary::Result +where + B::Bits: arbitrary::Arbitrary<'a>, +{ + B::from_bits(u.arbitrary()?).ok_or_else(|| arbitrary::Error::IncorrectFormat) +} + +#[cfg(test)] +mod tests { + use arbitrary::Arbitrary; + + bitflags! { + #[derive(Arbitrary)] + struct Color: u32 { + const RED = 0x1; + const GREEN = 0x2; + const BLUE = 0x4; + } + } + + #[test] + fn test_arbitrary() { + let mut unstructured = arbitrary::Unstructured::new(&[0_u8; 256]); + let _color = Color::arbitrary(&mut unstructured); + } +} diff -Nru temporalio-1.3.0/vendor/bitflags/src/external/bytemuck.rs temporalio-1.3.0/vendor/bitflags/src/external/bytemuck.rs --- temporalio-1.3.0/vendor/bitflags/src/external/bytemuck.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/src/external/bytemuck.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,19 @@ +#[cfg(test)] +mod tests { + use bytemuck::{Pod, Zeroable}; + + bitflags! { + #[derive(Pod, Zeroable, Clone, Copy)] + #[repr(transparent)] + struct Color: u32 { + const RED = 0x1; + const GREEN = 0x2; + const BLUE = 0x4; + } + } + + #[test] + fn test_bytemuck() { + assert_eq!(0x1, bytemuck::cast::(Color::RED)); + } +} diff -Nru temporalio-1.3.0/vendor/bitflags/src/external/serde.rs temporalio-1.3.0/vendor/bitflags/src/external/serde.rs --- temporalio-1.3.0/vendor/bitflags/src/external/serde.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/src/external/serde.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,93 @@ +//! Specialized serialization for flags types using `serde`. + +use crate::{ + parser::{self, ParseHex, WriteHex}, + Flags, +}; +use core::{fmt, str}; +use serde::{ + de::{Error, Visitor}, + Deserialize, Deserializer, Serialize, Serializer, +}; + +/** +Serialize a set of flags as a human-readable string or their underlying bits. + +Any unknown bits will be retained. +*/ +pub fn serialize(flags: &B, serializer: S) -> Result +where + B::Bits: WriteHex + Serialize, +{ + // Serialize human-readable flags as a string like `"A | B"` + if serializer.is_human_readable() { + serializer.collect_str(&parser::AsDisplay(flags)) + } + // Serialize non-human-readable flags directly as the underlying bits + else { + flags.bits().serialize(serializer) + } +} + +/** +Deserialize a set of flags from a human-readable string or their underlying bits. + +Any unknown bits will be retained. +*/ +pub fn deserialize<'de, B: Flags, D: Deserializer<'de>>(deserializer: D) -> Result +where + B::Bits: ParseHex + Deserialize<'de>, +{ + if deserializer.is_human_readable() { + // Deserialize human-readable flags by parsing them from strings like `"A | B"` + struct FlagsVisitor(core::marker::PhantomData); + + impl<'de, B: Flags> Visitor<'de> for FlagsVisitor + where + B::Bits: ParseHex, + { + type Value = B; + + fn expecting(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result { + formatter.write_str("a string value of `|` separated flags") + } + + fn visit_str(self, flags: &str) -> Result { + parser::from_str(flags).map_err(|e| E::custom(e)) + } + } + + deserializer.deserialize_str(FlagsVisitor(Default::default())) + } else { + // Deserialize non-human-readable flags directly from the underlying bits + let bits = B::Bits::deserialize(deserializer)?; + + Ok(B::from_bits_retain(bits)) + } +} + +#[cfg(test)] +mod tests { + use serde_test::{assert_tokens, Configure, Token::*}; + bitflags! { + #[derive(serde_derive::Serialize, serde_derive::Deserialize, Debug, PartialEq, Eq)] + #[serde(transparent)] + struct SerdeFlags: u32 { + const A = 1; + const B = 2; + const C = 4; + const D = 8; + } + } + + #[test] + fn test_serde_bitflags_default() { + assert_tokens(&SerdeFlags::empty().readable(), &[Str("")]); + + assert_tokens(&SerdeFlags::empty().compact(), &[U32(0)]); + + assert_tokens(&(SerdeFlags::A | SerdeFlags::B).readable(), &[Str("A | B")]); + + assert_tokens(&(SerdeFlags::A | SerdeFlags::B).compact(), &[U32(1 | 2)]); + } +} diff -Nru temporalio-1.3.0/vendor/bitflags/src/external.rs temporalio-1.3.0/vendor/bitflags/src/external.rs --- temporalio-1.3.0/vendor/bitflags/src/external.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/src/external.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,262 @@ +//! Conditional trait implementations for external libraries. + +/* +How do I support a new external library? + +Let's say we want to add support for `my_library`. + +First, we create a module under `external`, like `serde` with any specialized code. +Ideally, any utilities in here should just work off the `Flags` trait and maybe a +few other assumed bounds. + +Next, re-export the library from the `__private` module here. + +Next, define a macro like so: + +```rust +#[macro_export(local_inner_macros)] +#[doc(hidden)] +#[cfg(feature = "serde")] +macro_rules! __impl_external_bitflags_my_library { + ( + $InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident { + $( + $(#[$inner:ident $($args:tt)*])* + const $Flag:tt; + )* + } + ) => { + // Implementation goes here + }; +} + +#[macro_export(local_inner_macros)] +#[doc(hidden)] +#[cfg(not(feature = "my_library"))] +macro_rules! __impl_external_bitflags_my_library { + ( + $InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident { + $( + $(#[$inner:ident $($args:tt)*])* + const $Flag:tt; + )* + } + ) => {}; +} +``` + +Note that the macro is actually defined twice; once for when the `my_library` feature +is available, and once for when it's not. This is because the `__impl_external_bitflags_my_library` +macro is called in an end-user's library, not in `bitflags`. In an end-user's library we don't +know whether or not a particular feature of `bitflags` is enabled, so we unconditionally call +the macro, where the body of that macro depends on the feature flag. + +Now, we add our macro call to the `__impl_external_bitflags` macro body: + +```rust +__impl_external_bitflags_my_library! { + $InternalBitFlags: $T, $PublicBitFlags { + $( + $(#[$inner $($args)*])* + const $Flag; + )* + } +} +``` +*/ + +pub(crate) mod __private { + #[cfg(feature = "serde")] + pub use serde; + + #[cfg(feature = "arbitrary")] + pub use arbitrary; + + #[cfg(feature = "bytemuck")] + pub use bytemuck; +} + +/// Implements traits from external libraries for the internal bitflags type. +#[macro_export(local_inner_macros)] +#[doc(hidden)] +macro_rules! __impl_external_bitflags { + ( + $InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident { + $( + $(#[$inner:ident $($args:tt)*])* + const $Flag:tt; + )* + } + ) => { + // Any new library traits impls should be added here + // Use `serde` as an example: generate code when the feature is available, + // and a no-op when it isn't + + __impl_external_bitflags_serde! { + $InternalBitFlags: $T, $PublicBitFlags { + $( + $(#[$inner $($args)*])* + const $Flag; + )* + } + } + + __impl_external_bitflags_arbitrary! { + $InternalBitFlags: $T, $PublicBitFlags { + $( + $(#[$inner $($args)*])* + const $Flag; + )* + } + } + + __impl_external_bitflags_bytemuck! { + $InternalBitFlags: $T, $PublicBitFlags { + $( + $(#[$inner $($args)*])* + const $Flag; + )* + } + } + }; +} + +#[cfg(feature = "serde")] +pub mod serde; + +/// Implement `Serialize` and `Deserialize` for the internal bitflags type. +#[macro_export(local_inner_macros)] +#[doc(hidden)] +#[cfg(feature = "serde")] +macro_rules! __impl_external_bitflags_serde { + ( + $InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident { + $( + $(#[$inner:ident $($args:tt)*])* + const $Flag:tt; + )* + } + ) => { + impl $crate::__private::serde::Serialize for $InternalBitFlags { + fn serialize( + &self, + serializer: S, + ) -> $crate::__private::core::result::Result { + $crate::serde::serialize( + &$PublicBitFlags::from_bits_retain(self.bits()), + serializer, + ) + } + } + + impl<'de> $crate::__private::serde::Deserialize<'de> for $InternalBitFlags { + fn deserialize>( + deserializer: D, + ) -> $crate::__private::core::result::Result { + let flags: $PublicBitFlags = $crate::serde::deserialize(deserializer)?; + + Ok(flags.0) + } + } + }; +} + +#[macro_export(local_inner_macros)] +#[doc(hidden)] +#[cfg(not(feature = "serde"))] +macro_rules! __impl_external_bitflags_serde { + ( + $InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident { + $( + $(#[$inner:ident $($args:tt)*])* + const $Flag:tt; + )* + } + ) => {}; +} + +#[cfg(feature = "arbitrary")] +pub mod arbitrary; + +#[cfg(feature = "bytemuck")] +mod bytemuck; + +/// Implement `Arbitrary` for the internal bitflags type. +#[macro_export(local_inner_macros)] +#[doc(hidden)] +#[cfg(feature = "arbitrary")] +macro_rules! __impl_external_bitflags_arbitrary { + ( + $InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident { + $( + $(#[$inner:ident $($args:tt)*])* + const $Flag:tt; + )* + } + ) => { + impl<'a> $crate::__private::arbitrary::Arbitrary<'a> for $InternalBitFlags { + fn arbitrary( + u: &mut $crate::__private::arbitrary::Unstructured<'a>, + ) -> $crate::__private::arbitrary::Result { + $crate::arbitrary::arbitrary::<$PublicBitFlags>(u).map(|flags| flags.0) + } + } + }; +} + +#[macro_export(local_inner_macros)] +#[doc(hidden)] +#[cfg(not(feature = "arbitrary"))] +macro_rules! __impl_external_bitflags_arbitrary { + ( + $InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident { + $( + $(#[$inner:ident $($args:tt)*])* + const $Flag:tt; + )* + } + ) => {}; +} + +/// Implement `Pod` and `Zeroable` for the internal bitflags type. +#[macro_export(local_inner_macros)] +#[doc(hidden)] +#[cfg(feature = "bytemuck")] +macro_rules! __impl_external_bitflags_bytemuck { + ( + $InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident { + $( + $(#[$inner:ident $($args:tt)*])* + const $Flag:tt; + )* + } + ) => { + // SAFETY: $InternalBitFlags is guaranteed to have the same ABI as $T, + // and $T implements Pod + unsafe impl $crate::__private::bytemuck::Pod for $InternalBitFlags where + $T: $crate::__private::bytemuck::Pod + { + } + + // SAFETY: $InternalBitFlags is guaranteed to have the same ABI as $T, + // and $T implements Zeroable + unsafe impl $crate::__private::bytemuck::Zeroable for $InternalBitFlags where + $T: $crate::__private::bytemuck::Zeroable + { + } + }; +} + +#[macro_export(local_inner_macros)] +#[doc(hidden)] +#[cfg(not(feature = "bytemuck"))] +macro_rules! __impl_external_bitflags_bytemuck { + ( + $InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident { + $( + $(#[$inner:ident $($args:tt)*])* + const $Flag:tt; + )* + } + ) => {}; +} diff -Nru temporalio-1.3.0/vendor/bitflags/src/internal.rs temporalio-1.3.0/vendor/bitflags/src/internal.rs --- temporalio-1.3.0/vendor/bitflags/src/internal.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/src/internal.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,125 @@ +//! Generate the internal `bitflags`-facing flags type. +//! +//! The code generated here is owned by `bitflags`, but still part of its public API. +//! Changes to the types generated here need to be considered like any other public API change. + +/// Declare the `bitflags`-facing bitflags struct. +/// +/// This type is part of the `bitflags` crate's public API, but not part of the user's. +#[macro_export(local_inner_macros)] +#[doc(hidden)] +macro_rules! __declare_internal_bitflags { + ( + $vis:vis struct $InternalBitFlags:ident: $T:ty + ) => { + // NOTE: The ABI of this type is _guaranteed_ to be the same as `T` + // This is relied on by some external libraries like `bytemuck` to make + // its `unsafe` trait impls sound. + #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] + #[repr(transparent)] + $vis struct $InternalBitFlags($T); + }; +} + +/// Implement functions on the private (bitflags-facing) bitflags type. +/// +/// Methods and trait implementations can be freely added here without breaking end-users. +/// If we want to expose new functionality to `#[derive]`, this is the place to do it. +#[macro_export(local_inner_macros)] +#[doc(hidden)] +macro_rules! __impl_internal_bitflags { + ( + $InternalBitFlags:ident: $T:ty, $PublicBitFlags:ident { + $( + $(#[$inner:ident $($args:tt)*])* + const $Flag:tt = $value:expr; + )* + } + ) => { + // NOTE: This impl is also used to prevent using bits types from non-primitive types + // in the `bitflags` macro. If this approach is changed, this guard will need to be + // retained somehow + impl $crate::__private::PublicFlags for $PublicBitFlags { + type Primitive = $T; + type Internal = $InternalBitFlags; + } + + impl $crate::__private::core::default::Default for $InternalBitFlags { + #[inline] + fn default() -> Self { + $InternalBitFlags::empty() + } + } + + impl $crate::__private::core::fmt::Debug for $InternalBitFlags { + fn fmt(&self, f: &mut $crate::__private::core::fmt::Formatter<'_>) -> $crate::__private::core::fmt::Result { + if self.is_empty() { + // If no flags are set then write an empty hex flag to avoid + // writing an empty string. In some contexts, like serialization, + // an empty string is preferable, but it may be unexpected in + // others for a format not to produce any output. + // + // We can remove this `0x0` and remain compatible with `FromStr`, + // because an empty string will still parse to an empty set of flags, + // just like `0x0` does. + $crate::__private::core::write!(f, "{:#x}", <$T as $crate::Bits>::EMPTY) + } else { + $crate::__private::core::fmt::Display::fmt(self, f) + } + } + } + + impl $crate::__private::core::fmt::Display for $InternalBitFlags { + fn fmt(&self, f: &mut $crate::__private::core::fmt::Formatter<'_>) -> $crate::__private::core::fmt::Result { + $crate::parser::to_writer(&$PublicBitFlags(*self), f) + } + } + + impl $crate::__private::core::str::FromStr for $InternalBitFlags { + type Err = $crate::parser::ParseError; + + fn from_str(s: &str) -> $crate::__private::core::result::Result { + $crate::parser::from_str::<$PublicBitFlags>(s).map(|flags| flags.0) + } + } + + impl $crate::__private::core::convert::AsRef<$T> for $InternalBitFlags { + fn as_ref(&self) -> &$T { + &self.0 + } + } + + impl $crate::__private::core::convert::From<$T> for $InternalBitFlags { + fn from(bits: $T) -> Self { + Self::from_bits_retain(bits) + } + } + + // The internal flags type offers a similar API to the public one + + __impl_public_bitflags! { + $InternalBitFlags: $T, $PublicBitFlags { + $( + $(#[$inner $($args)*])* + const $Flag = $value; + )* + } + } + + __impl_public_bitflags_ops! { + $InternalBitFlags + } + + __impl_public_bitflags_iter! { + $InternalBitFlags: $T, $PublicBitFlags + } + + impl $InternalBitFlags { + /// Returns a mutable reference to the raw value of the flags currently stored. + #[inline] + pub fn bits_mut(&mut self) -> &mut $T { + &mut self.0 + } + } + }; +} diff -Nru temporalio-1.3.0/vendor/bitflags/src/iter.rs temporalio-1.3.0/vendor/bitflags/src/iter.rs --- temporalio-1.3.0/vendor/bitflags/src/iter.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/src/iter.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,145 @@ +/*! +Yield the bits of a source flags value in a set of contained flags values. +*/ + +use crate::{Flag, Flags}; + +/** +An iterator over flags values. + +This iterator will yield flags values for contained, defined flags first, with any remaining bits yielded +as a final flags value. +*/ +pub struct Iter { + inner: IterNames, + done: bool, +} + +impl Iter { + pub(crate) fn new(flags: &B) -> Self { + Iter { + inner: IterNames::new(flags), + done: false, + } + } +} + +impl Iter { + // Used by the `bitflags` macro + #[doc(hidden)] + pub const fn __private_const_new(flags: &'static [Flag], source: B, remaining: B) -> Self { + Iter { + inner: IterNames::__private_const_new(flags, source, remaining), + done: false, + } + } +} + +impl Iterator for Iter { + type Item = B; + + fn next(&mut self) -> Option { + match self.inner.next() { + Some((_, flag)) => Some(flag), + None if !self.done => { + self.done = true; + + // After iterating through valid names, if there are any bits left over + // then return one final value that includes them. This makes `into_iter` + // and `from_iter` roundtrip + if !self.inner.remaining().is_empty() { + Some(B::from_bits_retain(self.inner.remaining.bits())) + } else { + None + } + } + None => None, + } + } +} + +/** +An iterator over flags values. + +This iterator only yields flags values for contained, defined, named flags. Any remaining bits +won't be yielded, but can be found with the [`IterNames::remaining`] method. +*/ +pub struct IterNames { + flags: &'static [Flag], + idx: usize, + source: B, + remaining: B, +} + +impl IterNames { + pub(crate) fn new(flags: &B) -> Self { + IterNames { + flags: B::FLAGS, + idx: 0, + remaining: B::from_bits_retain(flags.bits()), + source: B::from_bits_retain(flags.bits()), + } + } +} + +impl IterNames { + // Used by the bitflags macro + #[doc(hidden)] + pub const fn __private_const_new(flags: &'static [Flag], source: B, remaining: B) -> Self { + IterNames { + flags, + idx: 0, + remaining, + source, + } + } + + /// Get a flags value of any remaining bits that haven't been yielded yet. + /// + /// Once the iterator has finished, this method can be used to + /// check whether or not there are any bits that didn't correspond + /// to a contained, defined, named flag remaining. + pub fn remaining(&self) -> &B { + &self.remaining + } +} + +impl Iterator for IterNames { + type Item = (&'static str, B); + + fn next(&mut self) -> Option { + while let Some(flag) = self.flags.get(self.idx) { + // Short-circuit if our state is empty + if self.remaining.is_empty() { + return None; + } + + self.idx += 1; + + // Skip unnamed flags + if flag.name().is_empty() { + continue; + } + + let bits = flag.value().bits(); + + // If the flag is set in the original source _and_ it has bits that haven't + // been covered by a previous flag yet then yield it. These conditions cover + // two cases for multi-bit flags: + // + // 1. When flags partially overlap, such as `0b00000001` and `0b00000101`, we'll + // yield both flags. + // 2. When flags fully overlap, such as in convenience flags that are a shorthand for others, + // we won't yield both flags. + if self.source.contains(B::from_bits_retain(bits)) + && self.remaining.intersects(B::from_bits_retain(bits)) + { + self.remaining.remove(B::from_bits_retain(bits)); + + return Some((flag.name(), B::from_bits_retain(bits))); + } + } + + None + } +} diff -Nru temporalio-1.3.0/vendor/bitflags/src/lib.rs temporalio-1.3.0/vendor/bitflags/src/lib.rs --- temporalio-1.3.0/vendor/bitflags/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -8,1722 +8,912 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -//! A typesafe bitmask flag generator useful for sets of C-style bitmask flags. -//! It can be used for creating typesafe wrappers around C APIs. -//! -//! The `bitflags!` macro generates `struct`s that manage a set of flags. The -//! flags should only be defined for integer types, otherwise unexpected type -//! errors may occur at compile time. -//! -//! # Example -//! -//! ``` -//! use bitflags::bitflags; -//! -//! bitflags! { -//! struct Flags: u32 { -//! const A = 0b00000001; -//! const B = 0b00000010; -//! const C = 0b00000100; -//! const ABC = Self::A.bits | Self::B.bits | Self::C.bits; -//! } -//! } -//! -//! fn main() { -//! let e1 = Flags::A | Flags::C; -//! let e2 = Flags::B | Flags::C; -//! assert_eq!((e1 | e2), Flags::ABC); // union -//! assert_eq!((e1 & e2), Flags::C); // intersection -//! assert_eq!((e1 - e2), Flags::A); // set difference -//! assert_eq!(!e2, Flags::A); // set complement -//! } -//! ``` -//! -//! See [`example_generated::Flags`](./example_generated/struct.Flags.html) for documentation of code -//! generated by the above `bitflags!` expansion. -//! -//! The generated `struct`s can also be extended with type and trait -//! implementations: -//! -//! ``` -//! use std::fmt; -//! -//! use bitflags::bitflags; -//! -//! bitflags! { -//! struct Flags: u32 { -//! const A = 0b00000001; -//! const B = 0b00000010; -//! } -//! } -//! -//! impl Flags { -//! pub fn clear(&mut self) { -//! self.bits = 0; // The `bits` field can be accessed from within the -//! // same module where the `bitflags!` macro was invoked. -//! } -//! } -//! -//! impl fmt::Display for Flags { -//! fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { -//! write!(f, "hi!") -//! } -//! } -//! -//! fn main() { -//! let mut flags = Flags::A | Flags::B; -//! flags.clear(); -//! assert!(flags.is_empty()); -//! assert_eq!(format!("{}", flags), "hi!"); -//! assert_eq!(format!("{:?}", Flags::A | Flags::B), "A | B"); -//! assert_eq!(format!("{:?}", Flags::B), "B"); -//! } -//! ``` -//! -//! # Visibility -//! -//! The generated structs and their associated flag constants are not exported -//! out of the current module by default. A definition can be exported out of -//! the current module by adding `pub` before `struct`: -//! -//! ``` -//! mod example { -//! use bitflags::bitflags; -//! -//! bitflags! { -//! pub struct Flags1: u32 { -//! const A = 0b00000001; -//! } -//! -//! # pub -//! struct Flags2: u32 { -//! const B = 0b00000010; -//! } -//! } -//! } -//! -//! fn main() { -//! let flag1 = example::Flags1::A; -//! let flag2 = example::Flags2::B; // error: const `B` is private -//! } -//! ``` -//! -//! # Attributes -//! -//! Attributes can be attached to the generated `struct`s by placing them -//! before the `struct` keyword. -//! -//! ## Representations -//! -//! It's valid to add a `#[repr(C)]` or `#[repr(transparent)]` attribute to a type -//! generated by `bitflags!`. In these cases, the type is guaranteed to be a newtype. -//! -//! ``` -//! use bitflags::bitflags; -//! -//! bitflags! { -//! #[repr(transparent)] -//! struct Flags: u32 { -//! const A = 0b00000001; -//! const B = 0b00000010; -//! const C = 0b00000100; -//! } -//! } -//! ``` -//! -//! # Trait implementations -//! -//! The `Copy`, `Clone`, `PartialEq`, `Eq`, `PartialOrd`, `Ord` and `Hash` -//! traits are automatically derived for the `struct`s using the `derive` attribute. -//! Additional traits can be derived by providing an explicit `derive` -//! attribute on `struct`. -//! -//! The `Extend` and `FromIterator` traits are implemented for the `struct`s, -//! too: `Extend` adds the union of the instances of the `struct` iterated over, -//! while `FromIterator` calculates the union. -//! -//! The `Binary`, `Debug`, `LowerHex`, `Octal` and `UpperHex` traits are also -//! implemented by displaying the bits value of the internal struct. -//! -//! ## Operators -//! -//! The following operator traits are implemented for the generated `struct`s: -//! -//! - `BitOr` and `BitOrAssign`: union -//! - `BitAnd` and `BitAndAssign`: intersection -//! - `BitXor` and `BitXorAssign`: toggle -//! - `Sub` and `SubAssign`: set difference -//! - `Not`: set complement -//! -//! # Methods -//! -//! The following methods are defined for the generated `struct`s: -//! -//! - `empty`: an empty set of flags -//! - `all`: the set of all defined flags -//! - `bits`: the raw value of the flags currently stored -//! - `from_bits`: convert from underlying bit representation, unless that -//! representation contains bits that do not correspond to a -//! defined flag -//! - `from_bits_truncate`: convert from underlying bit representation, dropping -//! any bits that do not correspond to defined flags -//! - `from_bits_unchecked`: convert from underlying bit representation, keeping -//! all bits (even those not corresponding to defined -//! flags) -//! - `is_empty`: `true` if no flags are currently stored -//! - `is_all`: `true` if currently set flags exactly equal all defined flags -//! - `intersects`: `true` if there are flags common to both `self` and `other` -//! - `contains`: `true` if all of the flags in `other` are contained within `self` -//! - `insert`: inserts the specified flags in-place -//! - `remove`: removes the specified flags in-place -//! - `toggle`: the specified flags will be inserted if not present, and removed -//! if they are. -//! - `set`: inserts or removes the specified flags depending on the passed value -//! - `intersection`: returns a new set of flags, containing only the flags present -//! in both `self` and `other` (the argument to the function). -//! - `union`: returns a new set of flags, containing any flags present in -//! either `self` or `other` (the argument to the function). -//! - `difference`: returns a new set of flags, containing all flags present in -//! `self` without any of the flags present in `other` (the -//! argument to the function). -//! - `symmetric_difference`: returns a new set of flags, containing all flags -//! present in either `self` or `other` (the argument -//! to the function), but not both. -//! - `complement`: returns a new set of flags, containing all flags which are -//! not set in `self`, but which are allowed for this type. -//! -//! ## Default -//! -//! The `Default` trait is not automatically implemented for the generated structs. -//! -//! If your default value is equal to `0` (which is the same value as calling `empty()` -//! on the generated struct), you can simply derive `Default`: -//! -//! ``` -//! use bitflags::bitflags; -//! -//! bitflags! { -//! // Results in default value with bits: 0 -//! #[derive(Default)] -//! struct Flags: u32 { -//! const A = 0b00000001; -//! const B = 0b00000010; -//! const C = 0b00000100; -//! } -//! } -//! -//! fn main() { -//! let derived_default: Flags = Default::default(); -//! assert_eq!(derived_default.bits(), 0); -//! } -//! ``` -//! -//! If your default value is not equal to `0` you need to implement `Default` yourself: -//! -//! ``` -//! use bitflags::bitflags; -//! -//! bitflags! { -//! struct Flags: u32 { -//! const A = 0b00000001; -//! const B = 0b00000010; -//! const C = 0b00000100; -//! } -//! } -//! -//! // explicit `Default` implementation -//! impl Default for Flags { -//! fn default() -> Flags { -//! Flags::A | Flags::C -//! } -//! } -//! -//! fn main() { -//! let implemented_default: Flags = Default::default(); -//! assert_eq!(implemented_default, (Flags::A | Flags::C)); -//! } -//! ``` -//! -//! # Zero Flags -//! -//! Flags with a value equal to zero will have some strange behavior that one should be aware of. -//! -//! ``` -//! use bitflags::bitflags; -//! -//! bitflags! { -//! struct Flags: u32 { -//! const NONE = 0b00000000; -//! const SOME = 0b00000001; -//! } -//! } -//! -//! fn main() { -//! let empty = Flags::empty(); -//! let none = Flags::NONE; -//! let some = Flags::SOME; -//! -//! // Zero flags are treated as always present -//! assert!(empty.contains(Flags::NONE)); -//! assert!(none.contains(Flags::NONE)); -//! assert!(some.contains(Flags::NONE)); -//! -//! // Zero flags will be ignored when testing for emptiness -//! assert!(none.is_empty()); -//! } -//! ``` -//! -//! Users should generally avoid defining a flag with a value of zero. +/*! +Generate types for C-style flags with ergonomic APIs. -#![cfg_attr(not(test), no_std)] -#![doc(html_root_url = "https://docs.rs/bitflags/1.3.2")] +# Getting started -#[doc(hidden)] -pub extern crate core as _core; +Add `bitflags` to your `Cargo.toml`: -/// The macro used to generate the flag structures. -/// -/// See the [crate level docs](../bitflags/index.html) for complete documentation. -/// -/// # Example -/// -/// ``` -/// use bitflags::bitflags; -/// -/// bitflags! { -/// struct Flags: u32 { -/// const A = 0b00000001; -/// const B = 0b00000010; -/// const C = 0b00000100; -/// const ABC = Self::A.bits | Self::B.bits | Self::C.bits; -/// } -/// } -/// -/// fn main() { -/// let e1 = Flags::A | Flags::C; -/// let e2 = Flags::B | Flags::C; -/// assert_eq!((e1 | e2), Flags::ABC); // union -/// assert_eq!((e1 & e2), Flags::C); // intersection -/// assert_eq!((e1 - e2), Flags::A); // set difference -/// assert_eq!(!e2, Flags::A); // set complement -/// } -/// ``` -/// -/// The generated `struct`s can also be extended with type and trait -/// implementations: -/// -/// ``` -/// use std::fmt; -/// -/// use bitflags::bitflags; -/// -/// bitflags! { -/// struct Flags: u32 { -/// const A = 0b00000001; -/// const B = 0b00000010; -/// } -/// } -/// -/// impl Flags { -/// pub fn clear(&mut self) { -/// self.bits = 0; // The `bits` field can be accessed from within the -/// // same module where the `bitflags!` macro was invoked. -/// } -/// } -/// -/// impl fmt::Display for Flags { -/// fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { -/// write!(f, "hi!") -/// } -/// } -/// -/// fn main() { -/// let mut flags = Flags::A | Flags::B; -/// flags.clear(); -/// assert!(flags.is_empty()); -/// assert_eq!(format!("{}", flags), "hi!"); -/// assert_eq!(format!("{:?}", Flags::A | Flags::B), "A | B"); -/// assert_eq!(format!("{:?}", Flags::B), "B"); -/// } -/// ``` -#[macro_export(local_inner_macros)] -macro_rules! bitflags { - ( - $(#[$outer:meta])* - $vis:vis struct $BitFlags:ident: $T:ty { - $( - $(#[$inner:ident $($args:tt)*])* - const $Flag:ident = $value:expr; - )* - } +```toml +[dependencies.bitflags] +version = "2.4.0" +``` - $($t:tt)* - ) => { - $(#[$outer])* - #[derive(Copy, PartialEq, Eq, Clone, PartialOrd, Ord, Hash)] - $vis struct $BitFlags { - bits: $T, - } +## Generating flags types - __impl_bitflags! { - $BitFlags: $T { - $( - $(#[$inner $($args)*])* - $Flag = $value; - )* - } - } +Use the [`bitflags`] macro to generate flags types: - bitflags! { - $($t)* - } - }; - () => {}; -} +```rust +use bitflags::bitflags; -// A helper macro to implement the `all` function. -#[macro_export(local_inner_macros)] -#[doc(hidden)] -macro_rules! __impl_all_bitflags { - ( - $BitFlags:ident: $T:ty { - $( - $(#[$attr:ident $($args:tt)*])* - $Flag:ident = $value:expr; - )+ - } - ) => { - // See `Debug::fmt` for why this approach is taken. - #[allow(non_snake_case)] - trait __BitFlags { - $( - const $Flag: $T = 0; - )+ - } - #[allow(non_snake_case)] - impl __BitFlags for $BitFlags { - $( - __impl_bitflags! { - #[allow(deprecated)] - $(? #[$attr $($args)*])* - const $Flag: $T = Self::$Flag.bits; - } - )+ - } - Self { bits: $(::$Flag)|+ } - }; - ( - $BitFlags:ident: $T:ty { } - ) => { - Self { bits: 0 } - }; +bitflags! { + pub struct Flags: u32 { + const A = 0b00000001; + const B = 0b00000010; + const C = 0b00000100; + } } +``` -#[macro_export(local_inner_macros)] -#[doc(hidden)] -macro_rules! __impl_bitflags { - ( - $BitFlags:ident: $T:ty { - $( - $(#[$attr:ident $($args:tt)*])* - $Flag:ident = $value:expr; - )* - } - ) => { - impl $crate::_core::fmt::Debug for $BitFlags { - fn fmt(&self, f: &mut $crate::_core::fmt::Formatter) -> $crate::_core::fmt::Result { - // This convoluted approach is to handle #[cfg]-based flag - // omission correctly. For example it needs to support: - // - // #[cfg(unix)] const A: Flag = /* ... */; - // #[cfg(windows)] const B: Flag = /* ... */; - - // Unconditionally define a check for every flag, even disabled - // ones. - #[allow(non_snake_case)] - trait __BitFlags { - $( - #[inline] - fn $Flag(&self) -> bool { false } - )* - } - - // Conditionally override the check for just those flags that - // are not #[cfg]ed away. - #[allow(non_snake_case)] - impl __BitFlags for $BitFlags { - $( - __impl_bitflags! { - #[allow(deprecated)] - #[inline] - $(? #[$attr $($args)*])* - fn $Flag(&self) -> bool { - if Self::$Flag.bits == 0 && self.bits != 0 { - false - } else { - self.bits & Self::$Flag.bits == Self::$Flag.bits - } - } - } - )* - } +See the docs for the `bitflags` macro for the full syntax. - let mut first = true; - $( - if ::$Flag(self) { - if !first { - f.write_str(" | ")?; - } - first = false; - f.write_str($crate::_core::stringify!($Flag))?; - } - )* - let extra_bits = self.bits & !Self::all().bits(); - if extra_bits != 0 { - if !first { - f.write_str(" | ")?; - } - first = false; - f.write_str("0x")?; - $crate::_core::fmt::LowerHex::fmt(&extra_bits, f)?; - } - if first { - f.write_str("(empty)")?; - } - Ok(()) - } - } - impl $crate::_core::fmt::Binary for $BitFlags { - fn fmt(&self, f: &mut $crate::_core::fmt::Formatter) -> $crate::_core::fmt::Result { - $crate::_core::fmt::Binary::fmt(&self.bits, f) - } - } - impl $crate::_core::fmt::Octal for $BitFlags { - fn fmt(&self, f: &mut $crate::_core::fmt::Formatter) -> $crate::_core::fmt::Result { - $crate::_core::fmt::Octal::fmt(&self.bits, f) - } - } - impl $crate::_core::fmt::LowerHex for $BitFlags { - fn fmt(&self, f: &mut $crate::_core::fmt::Formatter) -> $crate::_core::fmt::Result { - $crate::_core::fmt::LowerHex::fmt(&self.bits, f) - } - } - impl $crate::_core::fmt::UpperHex for $BitFlags { - fn fmt(&self, f: &mut $crate::_core::fmt::Formatter) -> $crate::_core::fmt::Result { - $crate::_core::fmt::UpperHex::fmt(&self.bits, f) - } - } +Also see the [`example_generated`] module for an example of what the `bitflags` macro generates for a flags type. - #[allow(dead_code)] - impl $BitFlags { - $( - $(#[$attr $($args)*])* - pub const $Flag: Self = Self { bits: $value }; - )* +### Externally defined flags - /// Returns an empty set of flags. - #[inline] - pub const fn empty() -> Self { - Self { bits: 0 } - } +If you're generating flags types for an external source, such as a C API, you can define +an extra unnamed flag as a mask of all bits the external source may ever set. Usually this would be all bits (`!0`): - /// Returns the set containing all flags. - #[inline] - pub const fn all() -> Self { - __impl_all_bitflags! { - $BitFlags: $T { - $( - $(#[$attr $($args)*])* - $Flag = $value; - )* - } - } - } +```rust +# use bitflags::bitflags; +bitflags! { + pub struct Flags: u32 { + const A = 0b00000001; + const B = 0b00000010; + const C = 0b00000100; - /// Returns the raw value of the flags currently stored. - #[inline] - pub const fn bits(&self) -> $T { - self.bits - } + // The source may set any bits + const _ = !0; + } +} +``` - /// Convert from underlying bit representation, unless that - /// representation contains bits that do not correspond to a flag. - #[inline] - pub const fn from_bits(bits: $T) -> $crate::_core::option::Option { - if (bits & !Self::all().bits()) == 0 { - $crate::_core::option::Option::Some(Self { bits }) - } else { - $crate::_core::option::Option::None - } - } +Why should you do this? Generated methods like `all` and truncating operators like `!` only consider +bits in defined flags. Adding an unnamed flag makes those methods consider additional bits, +without generating additional constants for them. It helps compatibility when the external source +may start setting additional bits at any time. The [known and unknown bits](#known-and-unknown-bits) +section has more details on this behavior. + +### Custom derives + +You can derive some traits on generated flags types if you enable Cargo features. The following +libraries are currently supported: + +- `serde`: Support `#[derive(Serialize, Deserialize)]`, using text for human-readable formats, +and a raw number for binary formats. +- `arbitrary`: Support `#[derive(Arbitrary)]`, only generating flags values with known bits. +- `bytemuck`: Support `#[derive(Pod, Zeroable)]`, for casting between flags values and their +underlying bits values. + +You can also define your own flags type outside of the [`bitflags`] macro and then use it to generate methods. +This can be useful if you need a custom `#[derive]` attribute for a library that `bitflags` doesn't +natively support: + +```rust +# use std::fmt::Debug as SomeTrait; +# use bitflags::bitflags; +#[derive(SomeTrait)] +pub struct Flags(u32); + +bitflags! { + impl Flags: u32 { + const A = 0b00000001; + const B = 0b00000010; + const C = 0b00000100; + } +} +``` - /// Convert from underlying bit representation, dropping any bits - /// that do not correspond to flags. - #[inline] - pub const fn from_bits_truncate(bits: $T) -> Self { - Self { bits: bits & Self::all().bits } - } +### Adding custom methods - /// Convert from underlying bit representation, preserving all - /// bits (even those not corresponding to a defined flag). - /// - /// # Safety - /// - /// The caller of the `bitflags!` macro can chose to allow or - /// disallow extra bits for their bitflags type. - /// - /// The caller of `from_bits_unchecked()` has to ensure that - /// all bits correspond to a defined flag or that extra bits - /// are valid for this bitflags type. - #[inline] - pub const unsafe fn from_bits_unchecked(bits: $T) -> Self { - Self { bits } - } +The [`bitflags`] macro supports attributes on generated flags types within the macro itself, while +`impl` blocks can be added outside of it: - /// Returns `true` if no flags are currently stored. - #[inline] - pub const fn is_empty(&self) -> bool { - self.bits() == Self::empty().bits() - } +```rust +# use bitflags::bitflags; +bitflags! { + // Attributes can be applied to flags types + #[repr(transparent)] + #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] + pub struct Flags: u32 { + const A = 0b00000001; + const B = 0b00000010; + const C = 0b00000100; + } +} - /// Returns `true` if all flags are currently set. - #[inline] - pub const fn is_all(&self) -> bool { - Self::all().bits | self.bits == self.bits - } +// Impl blocks can be added to flags types +impl Flags { + pub fn as_u64(&self) -> u64 { + self.bits() as u64 + } +} +``` - /// Returns `true` if there are flags common to both `self` and `other`. - #[inline] - pub const fn intersects(&self, other: Self) -> bool { - !(Self { bits: self.bits & other.bits}).is_empty() - } +## Working with flags values - /// Returns `true` if all of the flags in `other` are contained within `self`. - #[inline] - pub const fn contains(&self, other: Self) -> bool { - (self.bits & other.bits) == other.bits - } +Use generated constants and standard bitwise operators to interact with flags values: - /// Inserts the specified flags in-place. - #[inline] - pub fn insert(&mut self, other: Self) { - self.bits |= other.bits; - } +```rust +# use bitflags::bitflags; +# bitflags! { +# #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] +# pub struct Flags: u32 { +# const A = 0b00000001; +# const B = 0b00000010; +# const C = 0b00000100; +# } +# } +// union +let ab = Flags::A | Flags::B; - /// Removes the specified flags in-place. - #[inline] - pub fn remove(&mut self, other: Self) { - self.bits &= !other.bits; - } +// intersection +let a = ab & Flags::A; - /// Toggles the specified flags in-place. - #[inline] - pub fn toggle(&mut self, other: Self) { - self.bits ^= other.bits; - } +// difference +let b = ab - Flags::A; - /// Inserts or removes the specified flags depending on the passed value. - #[inline] - pub fn set(&mut self, other: Self, value: bool) { - if value { - self.insert(other); - } else { - self.remove(other); - } - } +// complement +let c = !ab; +``` - /// Returns the intersection between the flags in `self` and - /// `other`. - /// - /// Specifically, the returned set contains only the flags which are - /// present in *both* `self` *and* `other`. - /// - /// This is equivalent to using the `&` operator (e.g. - /// [`ops::BitAnd`]), as in `flags & other`. - /// - /// [`ops::BitAnd`]: https://doc.rust-lang.org/std/ops/trait.BitAnd.html - #[inline] - #[must_use] - pub const fn intersection(self, other: Self) -> Self { - Self { bits: self.bits & other.bits } - } +See the docs for the [`Flags`] trait for more details on operators and how they behave. - /// Returns the union of between the flags in `self` and `other`. - /// - /// Specifically, the returned set contains all flags which are - /// present in *either* `self` *or* `other`, including any which are - /// present in both (see [`Self::symmetric_difference`] if that - /// is undesirable). - /// - /// This is equivalent to using the `|` operator (e.g. - /// [`ops::BitOr`]), as in `flags | other`. - /// - /// [`ops::BitOr`]: https://doc.rust-lang.org/std/ops/trait.BitOr.html - #[inline] - #[must_use] - pub const fn union(self, other: Self) -> Self { - Self { bits: self.bits | other.bits } - } +# Formatting and parsing - /// Returns the difference between the flags in `self` and `other`. - /// - /// Specifically, the returned set contains all flags present in - /// `self`, except for the ones present in `other`. - /// - /// It is also conceptually equivalent to the "bit-clear" operation: - /// `flags & !other` (and this syntax is also supported). - /// - /// This is equivalent to using the `-` operator (e.g. - /// [`ops::Sub`]), as in `flags - other`. - /// - /// [`ops::Sub`]: https://doc.rust-lang.org/std/ops/trait.Sub.html - #[inline] - #[must_use] - pub const fn difference(self, other: Self) -> Self { - Self { bits: self.bits & !other.bits } - } +`bitflags` defines a text format that can be used to convert any flags value to and from strings. - /// Returns the [symmetric difference][sym-diff] between the flags - /// in `self` and `other`. - /// - /// Specifically, the returned set contains the flags present which - /// are present in `self` or `other`, but that are not present in - /// both. Equivalently, it contains the flags present in *exactly - /// one* of the sets `self` and `other`. - /// - /// This is equivalent to using the `^` operator (e.g. - /// [`ops::BitXor`]), as in `flags ^ other`. - /// - /// [sym-diff]: https://en.wikipedia.org/wiki/Symmetric_difference - /// [`ops::BitXor`]: https://doc.rust-lang.org/std/ops/trait.BitXor.html - #[inline] - #[must_use] - pub const fn symmetric_difference(self, other: Self) -> Self { - Self { bits: self.bits ^ other.bits } - } +See the [`parser`] module for more details. - /// Returns the complement of this set of flags. - /// - /// Specifically, the returned set contains all the flags which are - /// not set in `self`, but which are allowed for this type. - /// - /// Alternatively, it can be thought of as the set difference - /// between [`Self::all()`] and `self` (e.g. `Self::all() - self`) - /// - /// This is equivalent to using the `!` operator (e.g. - /// [`ops::Not`]), as in `!flags`. - /// - /// [`Self::all()`]: Self::all - /// [`ops::Not`]: https://doc.rust-lang.org/std/ops/trait.Not.html - #[inline] - #[must_use] - pub const fn complement(self) -> Self { - Self::from_bits_truncate(!self.bits) - } +# Specification - } +The terminology and behavior of generated flags types is +[specified in the source repository](https://github.com/bitflags/bitflags/blob/main/spec.md). +Details are repeated in these docs where appropriate, but is exhaustively listed in the spec. Some +things are worth calling out explicitly here. - impl $crate::_core::ops::BitOr for $BitFlags { - type Output = Self; +## Flags types, flags values, flags - /// Returns the union of the two sets of flags. - #[inline] - fn bitor(self, other: $BitFlags) -> Self { - Self { bits: self.bits | other.bits } - } - } +The spec and these docs use consistent terminology to refer to things in the bitflags domain: - impl $crate::_core::ops::BitOrAssign for $BitFlags { - /// Adds the set of flags. - #[inline] - fn bitor_assign(&mut self, other: Self) { - self.bits |= other.bits; - } - } +- **Bits type**: A type that defines a fixed number of bits at specific locations. +- **Flag**: A set of bits in a bits type that may have a unique name. +- **Flags type**: A set of defined flags over a specific bits type. +- **Flags value**: An instance of a flags type using its specific bits value for storage. - impl $crate::_core::ops::BitXor for $BitFlags { - type Output = Self; +``` +# use bitflags::bitflags; +bitflags! { + struct FlagsType: u8 { +// -- Bits type +// --------- Flags type + const A = 1; +// ----- Flag + } +} - /// Returns the left flags, but with all the right flags toggled. - #[inline] - fn bitxor(self, other: Self) -> Self { - Self { bits: self.bits ^ other.bits } - } - } +let flag = FlagsType::A; +// ---- Flags value +``` + +## Known and unknown bits + +Any bits in a flag you define are called _known bits_. Any other bits are _unknown bits_. +In the following flags type: + +``` +# use bitflags::bitflags; +bitflags! { + struct Flags: u8 { + const A = 1; + const B = 1 << 1; + const C = 1 << 2; + } +} +``` - impl $crate::_core::ops::BitXorAssign for $BitFlags { - /// Toggles the set of flags. - #[inline] - fn bitxor_assign(&mut self, other: Self) { - self.bits ^= other.bits; - } - } +The known bits are `0b0000_0111` and the unknown bits are `0b1111_1000`. - impl $crate::_core::ops::BitAnd for $BitFlags { - type Output = Self; +`bitflags` doesn't guarantee that a flags value will only ever have known bits set, but some operators +will unset any unknown bits they encounter. In a future version of `bitflags`, all operators will +unset unknown bits. - /// Returns the intersection between the two sets of flags. - #[inline] - fn bitand(self, other: Self) -> Self { - Self { bits: self.bits & other.bits } - } - } +If you're using `bitflags` for flags types defined externally, such as from C, you probably want all +bits to be considered known, in case that external source changes. You can do this using an unnamed +flag, as described in [externally defined flags](#externally-defined-flags). - impl $crate::_core::ops::BitAndAssign for $BitFlags { - /// Disables all flags disabled in the set. - #[inline] - fn bitand_assign(&mut self, other: Self) { - self.bits &= other.bits; - } - } +## Zero-bit flags - impl $crate::_core::ops::Sub for $BitFlags { - type Output = Self; +Flags with no bits set should be avoided because they interact strangely with [`Flags::contains`] +and [`Flags::intersects`]. A zero-bit flag is always contained, but is never intersected. The +names of zero-bit flags can be parsed, but are never formatted. - /// Returns the set difference of the two sets of flags. - #[inline] - fn sub(self, other: Self) -> Self { - Self { bits: self.bits & !other.bits } - } - } +## Multi-bit flags - impl $crate::_core::ops::SubAssign for $BitFlags { - /// Disables all flags enabled in the set. - #[inline] - fn sub_assign(&mut self, other: Self) { - self.bits &= !other.bits; - } - } +Flags that set multiple bits should be avoided unless each bit is also in a single-bit flag. +Take the following flags type as an example: - impl $crate::_core::ops::Not for $BitFlags { - type Output = Self; +``` +# use bitflags::bitflags; +bitflags! { + struct Flags: u8 { + const A = 1; + const B = 1 | 1 << 1; + } +} +``` - /// Returns the complement of this set of flags. - #[inline] - fn not(self) -> Self { - Self { bits: !self.bits } & Self::all() - } - } +The result of `Flags::A ^ Flags::B` is `0b0000_0010`, which doesn't correspond to either +`Flags::A` or `Flags::B` even though it's still a known bit. +*/ - impl $crate::_core::iter::Extend<$BitFlags> for $BitFlags { - fn extend>(&mut self, iterator: T) { - for item in iterator { - self.insert(item) - } - } - } +#![cfg_attr(not(any(feature = "std", test)), no_std)] +#![cfg_attr(not(test), forbid(unsafe_code))] +#![cfg_attr(test, allow(mixed_script_confusables))] - impl $crate::_core::iter::FromIterator<$BitFlags> for $BitFlags { - fn from_iter>(iterator: T) -> Self { - let mut result = Self::empty(); - result.extend(iterator); - result - } - } - }; +#[doc(inline)] +pub use traits::{Bits, Flag, Flags}; - // Every attribute that the user writes on a const is applied to the - // corresponding const that we generate, but within the implementation of - // Debug and all() we want to ignore everything but #[cfg] attributes. In - // particular, including a #[deprecated] attribute on those items would fail - // to compile. - // https://github.com/bitflags/bitflags/issues/109 - // - // Input: - // - // ? #[cfg(feature = "advanced")] - // ? #[deprecated(note = "Use something else.")] - // ? #[doc = r"High quality documentation."] - // fn f() -> i32 { /* ... */ } - // - // Output: - // - // #[cfg(feature = "advanced")] - // fn f() -> i32 { /* ... */ } - ( - $(#[$filtered:meta])* - ? #[cfg $($cfgargs:tt)*] - $(? #[$rest:ident $($restargs:tt)*])* - fn $($item:tt)* - ) => { - __impl_bitflags! { - $(#[$filtered])* - #[cfg $($cfgargs)*] - $(? #[$rest $($restargs)*])* - fn $($item)* - } - }; - ( - $(#[$filtered:meta])* - // $next != `cfg` - ? #[$next:ident $($nextargs:tt)*] - $(? #[$rest:ident $($restargs:tt)*])* - fn $($item:tt)* - ) => { - __impl_bitflags! { - $(#[$filtered])* - // $next filtered out - $(? #[$rest $($restargs)*])* - fn $($item)* - } - }; - ( - $(#[$filtered:meta])* - fn $($item:tt)* - ) => { - $(#[$filtered])* - fn $($item)* - }; +pub mod iter; +pub mod parser; - // Every attribute that the user writes on a const is applied to the - // corresponding const that we generate, but within the implementation of - // Debug and all() we want to ignore everything but #[cfg] attributes. In - // particular, including a #[deprecated] attribute on those items would fail - // to compile. - // https://github.com/bitflags/bitflags/issues/109 - // - // const version - // - // Input: - // - // ? #[cfg(feature = "advanced")] - // ? #[deprecated(note = "Use something else.")] - // ? #[doc = r"High quality documentation."] - // const f: i32 { /* ... */ } - // - // Output: - // - // #[cfg(feature = "advanced")] - // const f: i32 { /* ... */ } - ( - $(#[$filtered:meta])* - ? #[cfg $($cfgargs:tt)*] - $(? #[$rest:ident $($restargs:tt)*])* - const $($item:tt)* - ) => { - __impl_bitflags! { - $(#[$filtered])* - #[cfg $($cfgargs)*] - $(? #[$rest $($restargs)*])* - const $($item)* - } - }; - ( - $(#[$filtered:meta])* - // $next != `cfg` - ? #[$next:ident $($nextargs:tt)*] - $(? #[$rest:ident $($restargs:tt)*])* - const $($item:tt)* - ) => { - __impl_bitflags! { - $(#[$filtered])* - // $next filtered out - $(? #[$rest $($restargs)*])* - const $($item)* - } - }; - ( - $(#[$filtered:meta])* - const $($item:tt)* - ) => { - $(#[$filtered])* - const $($item)* - }; -} +mod traits; -#[cfg(feature = "example_generated")] -pub mod example_generated; +#[doc(hidden)] +pub mod __private { + pub use crate::{external::__private::*, traits::__private::*}; -#[cfg(test)] -mod tests { - use std::collections::hash_map::DefaultHasher; - use std::hash::{Hash, Hasher}; - - bitflags! { - #[doc = "> The first principle is that you must not fool yourself — and"] - #[doc = "> you are the easiest person to fool."] - #[doc = "> "] - #[doc = "> - Richard Feynman"] - #[derive(Default)] - struct Flags: u32 { - const A = 0b00000001; - #[doc = " macros are way better at generating code than trans is"] - const B = 0b00000010; - const C = 0b00000100; - #[doc = "* cmr bed"] - #[doc = "* strcat table"] - #[doc = " wait what?"] - const ABC = Self::A.bits | Self::B.bits | Self::C.bits; - } + pub use core; +} - struct _CfgFlags: u32 { - #[cfg(unix)] - const _CFG_A = 0b01; - #[cfg(windows)] - const _CFG_B = 0b01; - #[cfg(unix)] - const _CFG_C = Self::_CFG_A.bits | 0b10; - } +#[allow(unused_imports)] +pub use external::*; - struct AnotherSetOfFlags: i8 { - const ANOTHER_FLAG = -1_i8; - } +#[allow(deprecated)] +pub use traits::BitFlags; - struct LongFlags: u32 { - const LONG_A = 0b1111111111111111; - } - } +/* +How does the bitflags crate work? - bitflags! { - struct EmptyFlags: u32 { - } +This library generates a `struct` in the end-user's crate with a bunch of constants on it that represent flags. +The difference between `bitflags` and a lot of other libraries is that we don't actually control the generated `struct` in the end. +It's part of the end-user's crate, so it belongs to them. That makes it difficult to extend `bitflags` with new functionality +because we could end up breaking valid code that was already written. + +Our solution is to split the type we generate into two: the public struct owned by the end-user, and an internal struct owned by `bitflags` (us). +To give you an example, let's say we had a crate that called `bitflags!`: + +```rust +bitflags! { + pub struct MyFlags: u32 { + const A = 1; + const B = 2; } +} +``` - #[test] - fn test_bits() { - assert_eq!(Flags::empty().bits(), 0b00000000); - assert_eq!(Flags::A.bits(), 0b00000001); - assert_eq!(Flags::ABC.bits(), 0b00000111); +What they'd end up with looks something like this: - assert_eq!(AnotherSetOfFlags::empty().bits(), 0b00); - assert_eq!(AnotherSetOfFlags::ANOTHER_FLAG.bits(), !0_i8); +```rust +pub struct MyFlags(::InternalBitFlags); - assert_eq!(EmptyFlags::empty().bits(), 0b00000000); +const _: () = { + #[repr(transparent)] + #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] + pub struct MyInternalBitFlags { + bits: u32, } - #[test] - fn test_from_bits() { - assert_eq!(Flags::from_bits(0), Some(Flags::empty())); - assert_eq!(Flags::from_bits(0b1), Some(Flags::A)); - assert_eq!(Flags::from_bits(0b10), Some(Flags::B)); - assert_eq!(Flags::from_bits(0b11), Some(Flags::A | Flags::B)); - assert_eq!(Flags::from_bits(0b1000), None); - - assert_eq!( - AnotherSetOfFlags::from_bits(!0_i8), - Some(AnotherSetOfFlags::ANOTHER_FLAG) - ); - - assert_eq!(EmptyFlags::from_bits(0), Some(EmptyFlags::empty())); - assert_eq!(EmptyFlags::from_bits(0b1), None); + impl PublicFlags for MyFlags { + type Internal = InternalBitFlags; } +}; +``` - #[test] - fn test_from_bits_truncate() { - assert_eq!(Flags::from_bits_truncate(0), Flags::empty()); - assert_eq!(Flags::from_bits_truncate(0b1), Flags::A); - assert_eq!(Flags::from_bits_truncate(0b10), Flags::B); - assert_eq!(Flags::from_bits_truncate(0b11), (Flags::A | Flags::B)); - assert_eq!(Flags::from_bits_truncate(0b1000), Flags::empty()); - assert_eq!(Flags::from_bits_truncate(0b1001), Flags::A); - - assert_eq!( - AnotherSetOfFlags::from_bits_truncate(0_i8), - AnotherSetOfFlags::empty() - ); - - assert_eq!(EmptyFlags::from_bits_truncate(0), EmptyFlags::empty()); - assert_eq!(EmptyFlags::from_bits_truncate(0b1), EmptyFlags::empty()); - } - - #[test] - fn test_from_bits_unchecked() { - let extra = unsafe { Flags::from_bits_unchecked(0b1000) }; - assert_eq!(unsafe { Flags::from_bits_unchecked(0) }, Flags::empty()); - assert_eq!(unsafe { Flags::from_bits_unchecked(0b1) }, Flags::A); - assert_eq!(unsafe { Flags::from_bits_unchecked(0b10) }, Flags::B); - - assert_eq!( - unsafe { Flags::from_bits_unchecked(0b11) }, - (Flags::A | Flags::B) - ); - assert_eq!( - unsafe { Flags::from_bits_unchecked(0b1000) }, - (extra | Flags::empty()) - ); - assert_eq!( - unsafe { Flags::from_bits_unchecked(0b1001) }, - (extra | Flags::A) - ); - - let extra = unsafe { EmptyFlags::from_bits_unchecked(0b1000) }; - assert_eq!( - unsafe { EmptyFlags::from_bits_unchecked(0b1000) }, - (extra | EmptyFlags::empty()) - ); - } +If we want to expose something like a new trait impl for generated flags types, we add it to our generated `MyInternalBitFlags`, +and let `#[derive]` on `MyFlags` pick up that implementation, if an end-user chooses to add one. - #[test] - fn test_is_empty() { - assert!(Flags::empty().is_empty()); - assert!(!Flags::A.is_empty()); - assert!(!Flags::ABC.is_empty()); +The public API is generated in the `__impl_public_flags!` macro, and the internal API is generated in +the `__impl_internal_flags!` macro. - assert!(!AnotherSetOfFlags::ANOTHER_FLAG.is_empty()); +The macros are split into 3 modules: - assert!(EmptyFlags::empty().is_empty()); - assert!(EmptyFlags::all().is_empty()); - } +- `public`: where the user-facing flags types are generated. +- `internal`: where the `bitflags`-facing flags types are generated. +- `external`: where external library traits are implemented conditionally. +*/ - #[test] - fn test_is_all() { - assert!(Flags::all().is_all()); - assert!(!Flags::A.is_all()); - assert!(Flags::ABC.is_all()); - - let extra = unsafe { Flags::from_bits_unchecked(0b1000) }; - assert!(!extra.is_all()); - assert!(!(Flags::A | extra).is_all()); - assert!((Flags::ABC | extra).is_all()); +/** +Generate a flags type. - assert!(AnotherSetOfFlags::ANOTHER_FLAG.is_all()); +# `struct` mode - assert!(EmptyFlags::all().is_all()); - assert!(EmptyFlags::empty().is_all()); - } +A declaration that begins with `$vis struct` will generate a `struct` for a flags type, along with +methods and trait implementations for it. The body of the declaration defines flags as constants, +where each constant is a flags value of the generated flags type. - #[test] - fn test_two_empties_do_not_intersect() { - let e1 = Flags::empty(); - let e2 = Flags::empty(); - assert!(!e1.intersects(e2)); +## Examples - assert!(AnotherSetOfFlags::ANOTHER_FLAG.intersects(AnotherSetOfFlags::ANOTHER_FLAG)); - } +Generate a flags type using `u8` as the bits type: - #[test] - fn test_empty_does_not_intersect_with_full() { - let e1 = Flags::empty(); - let e2 = Flags::ABC; - assert!(!e1.intersects(e2)); +``` +# use bitflags::bitflags; +bitflags! { + struct Flags: u8 { + const A = 1; + const B = 1 << 1; + const C = 0b0000_0100; } +} +``` - #[test] - fn test_disjoint_intersects() { - let e1 = Flags::A; - let e2 = Flags::B; - assert!(!e1.intersects(e2)); - } +Flags types are private by default and accept standard visibility modifiers. Flags themselves +are always public: - #[test] - fn test_overlapping_intersects() { - let e1 = Flags::A; - let e2 = Flags::A | Flags::B; - assert!(e1.intersects(e2)); +``` +# use bitflags::bitflags; +bitflags! { + pub struct Flags: u8 { + // Constants are always `pub` + const A = 1; } +} +``` - #[test] - fn test_contains() { - let e1 = Flags::A; - let e2 = Flags::A | Flags::B; - assert!(!e1.contains(e2)); - assert!(e2.contains(e1)); - assert!(Flags::ABC.contains(e2)); - - assert!(AnotherSetOfFlags::ANOTHER_FLAG.contains(AnotherSetOfFlags::ANOTHER_FLAG)); +Flags may refer to other flags using their [`Flags::bits`] value: - assert!(EmptyFlags::empty().contains(EmptyFlags::empty())); +``` +# use bitflags::bitflags; +bitflags! { + struct Flags: u8 { + const A = 1; + const B = 1 << 1; + const AB = Flags::A.bits() | Flags::B.bits(); } +} +``` - #[test] - fn test_insert() { - let mut e1 = Flags::A; - let e2 = Flags::A | Flags::B; - e1.insert(e2); - assert_eq!(e1, e2); - - let mut e3 = AnotherSetOfFlags::empty(); - e3.insert(AnotherSetOfFlags::ANOTHER_FLAG); - assert_eq!(e3, AnotherSetOfFlags::ANOTHER_FLAG); - } +A single `bitflags` invocation may include zero or more flags type declarations: - #[test] - fn test_remove() { - let mut e1 = Flags::A | Flags::B; - let e2 = Flags::A | Flags::C; - e1.remove(e2); - assert_eq!(e1, Flags::B); - - let mut e3 = AnotherSetOfFlags::ANOTHER_FLAG; - e3.remove(AnotherSetOfFlags::ANOTHER_FLAG); - assert_eq!(e3, AnotherSetOfFlags::empty()); - } +``` +# use bitflags::bitflags; +bitflags! {} - #[test] - fn test_operators() { - let e1 = Flags::A | Flags::C; - let e2 = Flags::B | Flags::C; - assert_eq!((e1 | e2), Flags::ABC); // union - assert_eq!((e1 & e2), Flags::C); // intersection - assert_eq!((e1 - e2), Flags::A); // set difference - assert_eq!(!e2, Flags::A); // set complement - assert_eq!(e1 ^ e2, Flags::A | Flags::B); // toggle - let mut e3 = e1; - e3.toggle(e2); - assert_eq!(e3, Flags::A | Flags::B); - - let mut m4 = AnotherSetOfFlags::empty(); - m4.toggle(AnotherSetOfFlags::empty()); - assert_eq!(m4, AnotherSetOfFlags::empty()); +bitflags! { + struct Flags1: u8 { + const A = 1; } - #[test] - fn test_operators_unchecked() { - let extra = unsafe { Flags::from_bits_unchecked(0b1000) }; - let e1 = Flags::A | Flags::C | extra; - let e2 = Flags::B | Flags::C; - assert_eq!((e1 | e2), (Flags::ABC | extra)); // union - assert_eq!((e1 & e2), Flags::C); // intersection - assert_eq!((e1 - e2), (Flags::A | extra)); // set difference - assert_eq!(!e2, Flags::A); // set complement - assert_eq!(!e1, Flags::B); // set complement - assert_eq!(e1 ^ e2, Flags::A | Flags::B | extra); // toggle - let mut e3 = e1; - e3.toggle(e2); - assert_eq!(e3, Flags::A | Flags::B | extra); + struct Flags2: u8 { + const A = 1; } +} +``` - #[test] - fn test_set_ops_basic() { - let ab = Flags::A.union(Flags::B); - let ac = Flags::A.union(Flags::C); - let bc = Flags::B.union(Flags::C); - assert_eq!(ab.bits, 0b011); - assert_eq!(bc.bits, 0b110); - assert_eq!(ac.bits, 0b101); - - assert_eq!(ab, Flags::B.union(Flags::A)); - assert_eq!(ac, Flags::C.union(Flags::A)); - assert_eq!(bc, Flags::C.union(Flags::B)); - - assert_eq!(ac, Flags::A | Flags::C); - assert_eq!(bc, Flags::B | Flags::C); - assert_eq!(ab.union(bc), Flags::ABC); - - assert_eq!(ac, Flags::A | Flags::C); - assert_eq!(bc, Flags::B | Flags::C); - - assert_eq!(ac.union(bc), ac | bc); - assert_eq!(ac.union(bc), Flags::ABC); - assert_eq!(bc.union(ac), Flags::ABC); - - assert_eq!(ac.intersection(bc), ac & bc); - assert_eq!(ac.intersection(bc), Flags::C); - assert_eq!(bc.intersection(ac), Flags::C); - - assert_eq!(ac.difference(bc), ac - bc); - assert_eq!(bc.difference(ac), bc - ac); - assert_eq!(ac.difference(bc), Flags::A); - assert_eq!(bc.difference(ac), Flags::B); - - assert_eq!(bc.complement(), !bc); - assert_eq!(bc.complement(), Flags::A); - assert_eq!(ac.symmetric_difference(bc), Flags::A.union(Flags::B)); - assert_eq!(bc.symmetric_difference(ac), Flags::A.union(Flags::B)); - } +# `impl` mode - #[test] - fn test_set_ops_const() { - // These just test that these compile and don't cause use-site panics - // (would be possible if we had some sort of UB) - const INTERSECT: Flags = Flags::all().intersection(Flags::C); - const UNION: Flags = Flags::A.union(Flags::C); - const DIFFERENCE: Flags = Flags::all().difference(Flags::A); - const COMPLEMENT: Flags = Flags::C.complement(); - const SYM_DIFFERENCE: Flags = UNION.symmetric_difference(DIFFERENCE); - assert_eq!(INTERSECT, Flags::C); - assert_eq!(UNION, Flags::A | Flags::C); - assert_eq!(DIFFERENCE, Flags::all() - Flags::A); - assert_eq!(COMPLEMENT, !Flags::C); - assert_eq!(SYM_DIFFERENCE, (Flags::A | Flags::C) ^ (Flags::all() - Flags::A)); - } +A declaration that begins with `impl` will only generate methods and trait implementations for the +`struct` defined outside of the `bitflags` macro. - #[test] - fn test_set_ops_unchecked() { - let extra = unsafe { Flags::from_bits_unchecked(0b1000) }; - let e1 = Flags::A.union(Flags::C).union(extra); - let e2 = Flags::B.union(Flags::C); - assert_eq!(e1.bits, 0b1101); - assert_eq!(e1.union(e2), (Flags::ABC | extra)); - assert_eq!(e1.intersection(e2), Flags::C); - assert_eq!(e1.difference(e2), Flags::A | extra); - assert_eq!(e2.difference(e1), Flags::B); - assert_eq!(e2.complement(), Flags::A); - assert_eq!(e1.complement(), Flags::B); - assert_eq!(e1.symmetric_difference(e2), Flags::A | Flags::B | extra); // toggle - } +The struct itself must be a newtype using the bits type as its field. - #[test] - fn test_set_ops_exhaustive() { - // Define a flag that contains gaps to help exercise edge-cases, - // especially around "unknown" flags (e.g. ones outside of `all()` - // `from_bits_unchecked`). - // - when lhs and rhs both have different sets of unknown flags. - // - unknown flags at both ends, and in the middle - // - cases with "gaps". - bitflags! { - struct Test: u16 { - // Intentionally no `A` - const B = 0b000000010; - // Intentionally no `C` - const D = 0b000001000; - const E = 0b000010000; - const F = 0b000100000; - const G = 0b001000000; - // Intentionally no `H` - const I = 0b100000000; - } - } - let iter_test_flags = - || (0..=0b111_1111_1111).map(|bits| unsafe { Test::from_bits_unchecked(bits) }); +The syntax for `impl` mode is identical to `struct` mode besides the starting token. - for a in iter_test_flags() { - assert_eq!( - a.complement(), - Test::from_bits_truncate(!a.bits), - "wrong result: !({:?})", - a, - ); - assert_eq!(a.complement(), !a, "named != op: !({:?})", a); - for b in iter_test_flags() { - // Check that the named operations produce the expected bitwise - // values. - assert_eq!( - a.union(b).bits, - a.bits | b.bits, - "wrong result: `{:?}` | `{:?}`", - a, - b, - ); - assert_eq!( - a.intersection(b).bits, - a.bits & b.bits, - "wrong result: `{:?}` & `{:?}`", - a, - b, - ); - assert_eq!( - a.symmetric_difference(b).bits, - a.bits ^ b.bits, - "wrong result: `{:?}` ^ `{:?}`", - a, - b, - ); - assert_eq!( - a.difference(b).bits, - a.bits & !b.bits, - "wrong result: `{:?}` - `{:?}`", - a, - b, - ); - // Note: Difference is checked as both `a - b` and `b - a` - assert_eq!( - b.difference(a).bits, - b.bits & !a.bits, - "wrong result: `{:?}` - `{:?}`", - b, - a, - ); - // Check that the named set operations are equivalent to the - // bitwise equivalents - assert_eq!(a.union(b), a | b, "named != op: `{:?}` | `{:?}`", a, b,); - assert_eq!( - a.intersection(b), - a & b, - "named != op: `{:?}` & `{:?}`", - a, - b, - ); - assert_eq!( - a.symmetric_difference(b), - a ^ b, - "named != op: `{:?}` ^ `{:?}`", - a, - b, - ); - assert_eq!(a.difference(b), a - b, "named != op: `{:?}` - `{:?}`", a, b,); - // Note: Difference is checked as both `a - b` and `b - a` - assert_eq!(b.difference(a), b - a, "named != op: `{:?}` - `{:?}`", b, a,); - // Verify that the operations which should be symmetric are - // actually symmetric. - assert_eq!(a.union(b), b.union(a), "asymmetry: `{:?}` | `{:?}`", a, b,); - assert_eq!( - a.intersection(b), - b.intersection(a), - "asymmetry: `{:?}` & `{:?}`", - a, - b, - ); - assert_eq!( - a.symmetric_difference(b), - b.symmetric_difference(a), - "asymmetry: `{:?}` ^ `{:?}`", - a, - b, - ); - } - } - } +## Examples - #[test] - fn test_set() { - let mut e1 = Flags::A | Flags::C; - e1.set(Flags::B, true); - e1.set(Flags::C, false); +Implement flags methods and traits for a custom flags type using `u8` as its underlying bits type: - assert_eq!(e1, Flags::A | Flags::B); - } +``` +# use bitflags::bitflags; +struct Flags(u8); - #[test] - fn test_assignment_operators() { - let mut m1 = Flags::empty(); - let e1 = Flags::A | Flags::C; - // union - m1 |= Flags::A; - assert_eq!(m1, Flags::A); - // intersection - m1 &= e1; - assert_eq!(m1, Flags::A); - // set difference - m1 -= m1; - assert_eq!(m1, Flags::empty()); - // toggle - m1 ^= e1; - assert_eq!(m1, e1); +bitflags! { + impl Flags: u8 { + const A = 1; + const B = 1 << 1; + const C = 0b0000_0100; } +} +``` - #[test] - fn test_const_fn() { - const _M1: Flags = Flags::empty(); - - const M2: Flags = Flags::A; - assert_eq!(M2, Flags::A); - - const M3: Flags = Flags::C; - assert_eq!(M3, Flags::C); - } +# Named and unnamed flags - #[test] - fn test_extend() { - let mut flags; - - flags = Flags::empty(); - flags.extend([].iter().cloned()); - assert_eq!(flags, Flags::empty()); - - flags = Flags::empty(); - flags.extend([Flags::A, Flags::B].iter().cloned()); - assert_eq!(flags, Flags::A | Flags::B); - - flags = Flags::A; - flags.extend([Flags::A, Flags::B].iter().cloned()); - assert_eq!(flags, Flags::A | Flags::B); - - flags = Flags::B; - flags.extend([Flags::A, Flags::ABC].iter().cloned()); - assert_eq!(flags, Flags::ABC); - } +Constants in the body of a declaration are flags. The identifier of the constant is the name of +the flag. If the identifier is `_`, then the flag is unnamed. Unnamed flags don't appear in the +generated API, but affect how bits are truncated. - #[test] - fn test_from_iterator() { - assert_eq!([].iter().cloned().collect::(), Flags::empty()); - assert_eq!( - [Flags::A, Flags::B].iter().cloned().collect::(), - Flags::A | Flags::B - ); - assert_eq!( - [Flags::A, Flags::ABC].iter().cloned().collect::(), - Flags::ABC - ); - } +## Examples - #[test] - fn test_lt() { - let mut a = Flags::empty(); - let mut b = Flags::empty(); - - assert!(!(a < b) && !(b < a)); - b = Flags::B; - assert!(a < b); - a = Flags::C; - assert!(!(a < b) && b < a); - b = Flags::C | Flags::B; - assert!(a < b); - } +Adding an unnamed flag that makes all bits known: - #[test] - fn test_ord() { - let mut a = Flags::empty(); - let mut b = Flags::empty(); - - assert!(a <= b && a >= b); - a = Flags::A; - assert!(a > b && a >= b); - assert!(b < a && b <= a); - b = Flags::B; - assert!(b > a && b >= a); - assert!(a < b && a <= b); - } +``` +# use bitflags::bitflags; +bitflags! { + struct Flags: u8 { + const A = 1; + const B = 1 << 1; - fn hash(t: &T) -> u64 { - let mut s = DefaultHasher::new(); - t.hash(&mut s); - s.finish() + const _ = !0; } +} +``` - #[test] - fn test_hash() { - let mut x = Flags::empty(); - let mut y = Flags::empty(); - assert_eq!(hash(&x), hash(&y)); - x = Flags::all(); - y = Flags::ABC; - assert_eq!(hash(&x), hash(&y)); - } +Flags types may define multiple unnamed flags: - #[test] - fn test_default() { - assert_eq!(Flags::empty(), Flags::default()); +``` +# use bitflags::bitflags; +bitflags! { + struct Flags: u8 { + const _ = 1; + const _ = 1 << 1; } +} +``` +*/ +#[macro_export(local_inner_macros)] +macro_rules! bitflags { + ( + $(#[$outer:meta])* + $vis:vis struct $BitFlags:ident: $T:ty { + $( + $(#[$inner:ident $($args:tt)*])* + const $Flag:tt = $value:expr; + )* + } - #[test] - fn test_debug() { - assert_eq!(format!("{:?}", Flags::A | Flags::B), "A | B"); - assert_eq!(format!("{:?}", Flags::empty()), "(empty)"); - assert_eq!(format!("{:?}", Flags::ABC), "A | B | C | ABC"); - let extra = unsafe { Flags::from_bits_unchecked(0xb8) }; - assert_eq!(format!("{:?}", extra), "0xb8"); - assert_eq!(format!("{:?}", Flags::A | extra), "A | 0xb8"); - - assert_eq!( - format!("{:?}", Flags::ABC | extra), - "A | B | C | ABC | 0xb8" - ); + $($t:tt)* + ) => { + // Declared in the scope of the `bitflags!` call + // This type appears in the end-user's API + __declare_public_bitflags! { + $(#[$outer])* + $vis struct $BitFlags + } - assert_eq!(format!("{:?}", EmptyFlags::empty()), "(empty)"); - } + // Workaround for: https://github.com/bitflags/bitflags/issues/320 + __impl_public_bitflags_consts! { + $BitFlags: $T { + $( + $(#[$inner $($args)*])* + const $Flag = $value; + )* + } + } - #[test] - fn test_binary() { - assert_eq!(format!("{:b}", Flags::ABC), "111"); - assert_eq!(format!("{:#b}", Flags::ABC), "0b111"); - let extra = unsafe { Flags::from_bits_unchecked(0b1010000) }; - assert_eq!(format!("{:b}", Flags::ABC | extra), "1010111"); - assert_eq!(format!("{:#b}", Flags::ABC | extra), "0b1010111"); - } + #[allow( + dead_code, + deprecated, + unused_doc_comments, + unused_attributes, + unused_mut, + unused_imports, + non_upper_case_globals, + clippy::assign_op_pattern, + clippy::indexing_slicing, + clippy::same_name_method + )] + const _: () = { + // Declared in a "hidden" scope that can't be reached directly + // These types don't appear in the end-user's API + __declare_internal_bitflags! { + $vis struct InternalBitFlags: $T + } - #[test] - fn test_octal() { - assert_eq!(format!("{:o}", LongFlags::LONG_A), "177777"); - assert_eq!(format!("{:#o}", LongFlags::LONG_A), "0o177777"); - let extra = unsafe { LongFlags::from_bits_unchecked(0o5000000) }; - assert_eq!(format!("{:o}", LongFlags::LONG_A | extra), "5177777"); - assert_eq!(format!("{:#o}", LongFlags::LONG_A | extra), "0o5177777"); - } + __impl_internal_bitflags! { + InternalBitFlags: $T, $BitFlags { + $( + $(#[$inner $($args)*])* + const $Flag = $value; + )* + } + } - #[test] - fn test_lowerhex() { - assert_eq!(format!("{:x}", LongFlags::LONG_A), "ffff"); - assert_eq!(format!("{:#x}", LongFlags::LONG_A), "0xffff"); - let extra = unsafe { LongFlags::from_bits_unchecked(0xe00000) }; - assert_eq!(format!("{:x}", LongFlags::LONG_A | extra), "e0ffff"); - assert_eq!(format!("{:#x}", LongFlags::LONG_A | extra), "0xe0ffff"); - } + // This is where new library trait implementations can be added + __impl_external_bitflags! { + InternalBitFlags: $T, $BitFlags { + $( + $(#[$inner $($args)*])* + const $Flag; + )* + } + } - #[test] - fn test_upperhex() { - assert_eq!(format!("{:X}", LongFlags::LONG_A), "FFFF"); - assert_eq!(format!("{:#X}", LongFlags::LONG_A), "0xFFFF"); - let extra = unsafe { LongFlags::from_bits_unchecked(0xe00000) }; - assert_eq!(format!("{:X}", LongFlags::LONG_A | extra), "E0FFFF"); - assert_eq!(format!("{:#X}", LongFlags::LONG_A | extra), "0xE0FFFF"); - } + __impl_public_bitflags_forward! { + $BitFlags: $T, InternalBitFlags + } - mod submodule { - bitflags! { - pub struct PublicFlags: i8 { - const X = 0; + __impl_public_bitflags_ops! { + $BitFlags } - struct PrivateFlags: i8 { - const Y = 0; + __impl_public_bitflags_iter! { + $BitFlags: $T, $BitFlags } - } + }; - #[test] - fn test_private() { - let _ = PrivateFlags::Y; + bitflags! { + $($t)* } - } - - #[test] - fn test_public() { - let _ = submodule::PublicFlags::X; - } - - mod t1 { - mod foo { - pub type Bar = i32; + }; + ( + impl $BitFlags:ident: $T:ty { + $( + $(#[$inner:ident $($args:tt)*])* + const $Flag:tt = $value:expr; + )* } - bitflags! { - /// baz - struct Flags: foo::Bar { - const A = 0b00000001; - #[cfg(foo)] - const B = 0b00000010; - #[cfg(foo)] - const C = 0b00000010; + $($t:tt)* + ) => { + __impl_public_bitflags_consts! { + $BitFlags: $T { + $( + $(#[$inner $($args)*])* + const $Flag = $value; + )* } } - } - #[test] - fn test_in_function() { - bitflags! { - struct Flags: u8 { - const A = 1; - #[cfg(any())] // false - const B = 2; + #[allow( + dead_code, + deprecated, + unused_doc_comments, + unused_attributes, + unused_mut, + unused_imports, + non_upper_case_globals, + clippy::assign_op_pattern + )] + const _: () = { + __impl_public_bitflags! { + $BitFlags: $T, $BitFlags { + $( + $(#[$inner $($args)*])* + const $Flag = $value; + )* + } } - } - assert_eq!(Flags::all(), Flags::A); - assert_eq!(format!("{:?}", Flags::A), "A"); - } - #[test] - fn test_deprecated() { - bitflags! { - pub struct TestFlags: u32 { - #[deprecated(note = "Use something else.")] - const ONE = 1; + __impl_public_bitflags_ops! { + $BitFlags } - } - } - #[test] - fn test_pub_crate() { - mod module { - bitflags! { - pub (crate) struct Test: u8 { - const FOO = 1; - } + __impl_public_bitflags_iter! { + $BitFlags: $T, $BitFlags } + }; + + bitflags! { + $($t)* } + }; + () => {}; +} - assert_eq!(module::Test::FOO.bits(), 1); - } +/// Implement functions on bitflags types. +/// +/// We need to be careful about adding new methods and trait implementations here because they +/// could conflict with items added by the end-user. +#[macro_export(local_inner_macros)] +#[doc(hidden)] +macro_rules! __impl_bitflags { + ( + $PublicBitFlags:ident: $T:ty { + fn empty() $empty:block + fn all() $all:block + fn bits($bits0:ident) $bits:block + fn from_bits($from_bits0:ident) $from_bits:block + fn from_bits_truncate($from_bits_truncate0:ident) $from_bits_truncate:block + fn from_bits_retain($from_bits_retain0:ident) $from_bits_retain:block + fn from_name($from_name0:ident) $from_name:block + fn is_empty($is_empty0:ident) $is_empty:block + fn is_all($is_all0:ident) $is_all:block + fn intersects($intersects0:ident, $intersects1:ident) $intersects:block + fn contains($contains0:ident, $contains1:ident) $contains:block + fn insert($insert0:ident, $insert1:ident) $insert:block + fn remove($remove0:ident, $remove1:ident) $remove:block + fn toggle($toggle0:ident, $toggle1:ident) $toggle:block + fn set($set0:ident, $set1:ident, $set2:ident) $set:block + fn intersection($intersection0:ident, $intersection1:ident) $intersection:block + fn union($union0:ident, $union1:ident) $union:block + fn difference($difference0:ident, $difference1:ident) $difference:block + fn symmetric_difference($symmetric_difference0:ident, $symmetric_difference1:ident) $symmetric_difference:block + fn complement($complement0:ident) $complement:block + } + ) => { + #[allow(dead_code, deprecated, unused_attributes)] + impl $PublicBitFlags { + /// Get a flags value with all bits unset. + #[inline] + pub const fn empty() -> Self { + $empty + } - #[test] - fn test_pub_in_module() { - mod module { - mod submodule { - bitflags! { - // `pub (in super)` means only the module `module` will - // be able to access this. - pub (in super) struct Test: u8 { - const FOO = 1; - } - } + /// Get a flags value with all known bits set. + #[inline] + pub const fn all() -> Self { + $all } - mod test { - // Note: due to `pub (in super)`, - // this cannot be accessed directly by the testing code. - pub(super) fn value() -> u8 { - super::submodule::Test::FOO.bits() - } + /// Get the underlying bits value. + /// + /// The returned value is exactly the bits set in this flags value. + #[inline] + pub const fn bits(&self) -> $T { + let $bits0 = self; + $bits } - pub fn value() -> u8 { - test::value() + /// Convert from a bits value. + /// + /// This method will return `None` if any unknown bits are set. + #[inline] + pub const fn from_bits(bits: $T) -> $crate::__private::core::option::Option { + let $from_bits0 = bits; + $from_bits } - } - assert_eq!(module::value(), 1) - } + /// Convert from a bits value, unsetting any unknown bits. + #[inline] + pub const fn from_bits_truncate(bits: $T) -> Self { + let $from_bits_truncate0 = bits; + $from_bits_truncate + } - #[test] - fn test_zero_value_flags() { - bitflags! { - struct Flags: u32 { - const NONE = 0b0; - const SOME = 0b1; + /// Convert from a bits value exactly. + #[inline] + pub const fn from_bits_retain(bits: $T) -> Self { + let $from_bits_retain0 = bits; + $from_bits_retain } - } - assert!(Flags::empty().contains(Flags::NONE)); - assert!(Flags::SOME.contains(Flags::NONE)); - assert!(Flags::NONE.is_empty()); + /// Get a flags value with the bits of a flag with the given name set. + /// + /// This method will return `None` if `name` is empty or doesn't + /// correspond to any named flag. + #[inline] + pub fn from_name(name: &str) -> $crate::__private::core::option::Option { + let $from_name0 = name; + $from_name + } - assert_eq!(format!("{:?}", Flags::empty()), "NONE"); - assert_eq!(format!("{:?}", Flags::SOME), "SOME"); - } + /// Whether all bits in this flags value are unset. + #[inline] + pub const fn is_empty(&self) -> bool { + let $is_empty0 = self; + $is_empty + } - #[test] - fn test_empty_bitflags() { - bitflags! {} - } + /// Whether all known bits in this flags value are set. + #[inline] + pub const fn is_all(&self) -> bool { + let $is_all0 = self; + $is_all + } - #[test] - fn test_u128_bitflags() { - bitflags! { - struct Flags128: u128 { - const A = 0x0000_0000_0000_0000_0000_0000_0000_0001; - const B = 0x0000_0000_0000_1000_0000_0000_0000_0000; - const C = 0x8000_0000_0000_0000_0000_0000_0000_0000; - const ABC = Self::A.bits | Self::B.bits | Self::C.bits; + /// Whether any set bits in a source flags value are also set in a target flags value. + #[inline] + pub const fn intersects(&self, other: Self) -> bool { + let $intersects0 = self; + let $intersects1 = other; + $intersects } - } - assert_eq!(Flags128::ABC, Flags128::A | Flags128::B | Flags128::C); - assert_eq!(Flags128::A.bits, 0x0000_0000_0000_0000_0000_0000_0000_0001); - assert_eq!(Flags128::B.bits, 0x0000_0000_0000_1000_0000_0000_0000_0000); - assert_eq!(Flags128::C.bits, 0x8000_0000_0000_0000_0000_0000_0000_0000); - assert_eq!( - Flags128::ABC.bits, - 0x8000_0000_0000_1000_0000_0000_0000_0001 - ); - assert_eq!(format!("{:?}", Flags128::A), "A"); - assert_eq!(format!("{:?}", Flags128::B), "B"); - assert_eq!(format!("{:?}", Flags128::C), "C"); - assert_eq!(format!("{:?}", Flags128::ABC), "A | B | C | ABC"); - } + /// Whether all set bits in a source flags value are also set in a target flags value. + #[inline] + pub const fn contains(&self, other: Self) -> bool { + let $contains0 = self; + let $contains1 = other; + $contains + } + + /// The bitwise or (`|`) of the bits in two flags values. + #[inline] + pub fn insert(&mut self, other: Self) { + let $insert0 = self; + let $insert1 = other; + $insert + } - #[test] - fn test_serde_bitflags_serialize() { - let flags = SerdeFlags::A | SerdeFlags::B; + /// The intersection of a source flags value with the complement of a target flags value (`&!`). + /// + /// This method is not equivalent to `self & !other` when `other` has unknown bits set. + /// `remove` won't truncate `other`, but the `!` operator will. + #[inline] + pub fn remove(&mut self, other: Self) { + let $remove0 = self; + let $remove1 = other; + $remove + } - let serialized = serde_json::to_string(&flags).unwrap(); + /// The bitwise exclusive-or (`^`) of the bits in two flags values. + #[inline] + pub fn toggle(&mut self, other: Self) { + let $toggle0 = self; + let $toggle1 = other; + $toggle + } - assert_eq!(serialized, r#"{"bits":3}"#); - } + /// Call `insert` when `value` is `true` or `remove` when `value` is `false`. + #[inline] + pub fn set(&mut self, other: Self, value: bool) { + let $set0 = self; + let $set1 = other; + let $set2 = value; + $set + } - #[test] - fn test_serde_bitflags_deserialize() { - let deserialized: SerdeFlags = serde_json::from_str(r#"{"bits":12}"#).unwrap(); + /// The bitwise and (`&`) of the bits in two flags values. + #[inline] + #[must_use] + pub const fn intersection(self, other: Self) -> Self { + let $intersection0 = self; + let $intersection1 = other; + $intersection + } - let expected = SerdeFlags::C | SerdeFlags::D; + /// The bitwise or (`|`) of the bits in two flags values. + #[inline] + #[must_use] + pub const fn union(self, other: Self) -> Self { + let $union0 = self; + let $union1 = other; + $union + } - assert_eq!(deserialized.bits, expected.bits); - } + /// The intersection of a source flags value with the complement of a target flags value (`&!`). + /// + /// This method is not equivalent to `self & !other` when `other` has unknown bits set. + /// `difference` won't truncate `other`, but the `!` operator will. + #[inline] + #[must_use] + pub const fn difference(self, other: Self) -> Self { + let $difference0 = self; + let $difference1 = other; + $difference + } - #[test] - fn test_serde_bitflags_roundtrip() { - let flags = SerdeFlags::A | SerdeFlags::B; + /// The bitwise exclusive-or (`^`) of the bits in two flags values. + #[inline] + #[must_use] + pub const fn symmetric_difference(self, other: Self) -> Self { + let $symmetric_difference0 = self; + let $symmetric_difference1 = other; + $symmetric_difference + } - let deserialized: SerdeFlags = serde_json::from_str(&serde_json::to_string(&flags).unwrap()).unwrap(); + /// The bitwise negation (`!`) of the bits in a flags value, truncating the result. + #[inline] + #[must_use] + pub const fn complement(self) -> Self { + let $complement0 = self; + $complement + } + } + }; +} - assert_eq!(deserialized.bits, flags.bits); +/// A macro that processed the input to `bitflags!` and shuffles attributes around +/// based on whether or not they're "expression-safe". +/// +/// This macro is a token-tree muncher that works on 2 levels: +/// +/// For each attribute, we explicitly match on its identifier, like `cfg` to determine +/// whether or not it should be considered expression-safe. +/// +/// If you find yourself with an attribute that should be considered expression-safe +/// and isn't, it can be added here. +#[macro_export(local_inner_macros)] +#[doc(hidden)] +macro_rules! __bitflags_expr_safe_attrs { + // Entrypoint: Move all flags and all attributes into `unprocessed` lists + // where they'll be munched one-at-a-time + ( + $(#[$inner:ident $($args:tt)*])* + { $e:expr } + ) => { + __bitflags_expr_safe_attrs! { + expr: { $e }, + attrs: { + // All attributes start here + unprocessed: [$(#[$inner $($args)*])*], + // Attributes that are safe on expressions go here + processed: [], + }, + } + }; + // Process the next attribute on the current flag + // `cfg`: The next flag should be propagated to expressions + // NOTE: You can copy this rules block and replace `cfg` with + // your attribute name that should be considered expression-safe + ( + expr: { $e:expr }, + attrs: { + unprocessed: [ + // cfg matched here + #[cfg $($args:tt)*] + $($attrs_rest:tt)* + ], + processed: [$($expr:tt)*], + }, + ) => { + __bitflags_expr_safe_attrs! { + expr: { $e }, + attrs: { + unprocessed: [ + $($attrs_rest)* + ], + processed: [ + $($expr)* + // cfg added here + #[cfg $($args)*] + ], + }, + } + }; + // Process the next attribute on the current flag + // `$other`: The next flag should not be propagated to expressions + ( + expr: { $e:expr }, + attrs: { + unprocessed: [ + // $other matched here + #[$other:ident $($args:tt)*] + $($attrs_rest:tt)* + ], + processed: [$($expr:tt)*], + }, + ) => { + __bitflags_expr_safe_attrs! { + expr: { $e }, + attrs: { + unprocessed: [ + $($attrs_rest)* + ], + processed: [ + // $other not added here + $($expr)* + ], + }, + } + }; + // Once all attributes on all flags are processed, generate the actual code + ( + expr: { $e:expr }, + attrs: { + unprocessed: [], + processed: [$(#[$expr:ident $($exprargs:tt)*])*], + }, + ) => { + $(#[$expr $($exprargs)*])* + { $e } } +} - bitflags! { - #[derive(serde::Serialize, serde::Deserialize)] - struct SerdeFlags: u32 { - const A = 1; - const B = 2; - const C = 4; - const D = 8; +/// Implement a flag, which may be a wildcard `_`. +#[macro_export(local_inner_macros)] +#[doc(hidden)] +macro_rules! __bitflags_flag { + ( + { + name: _, + named: { $($named:tt)* }, + unnamed: { $($unnamed:tt)* }, } - } + ) => { + $($unnamed)* + }; + ( + { + name: $Flag:ident, + named: { $($named:tt)* }, + unnamed: { $($unnamed:tt)* }, + } + ) => { + $($named)* + }; } + +#[macro_use] +mod public; +#[macro_use] +mod internal; +#[macro_use] +mod external; + +#[cfg(feature = "example_generated")] +pub mod example_generated; + +#[cfg(test)] +mod tests; diff -Nru temporalio-1.3.0/vendor/bitflags/src/parser.rs temporalio-1.3.0/vendor/bitflags/src/parser.rs --- temporalio-1.3.0/vendor/bitflags/src/parser.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/src/parser.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,247 @@ +/*! +Parsing flags from text. + +Format and parse a flags value as text using the following grammar: + +- _Flags:_ (_Whitespace_ _Flag_ _Whitespace_)`|`* +- _Flag:_ _Name_ | _Hex Number_ +- _Name:_ The name of any defined flag +- _Hex Number_: `0x`([0-9a-fA-F])* +- _Whitespace_: (\s)* + +As an example, this is how `Flags::A | Flags::B | 0x0c` can be represented as text: + +```text +A | B | 0x0c +``` + +Alternatively, it could be represented without whitespace: + +```text +A|B|0x0C +``` + +Note that identifiers are *case-sensitive*, so the following is *not equivalent*: + +```text +a|b|0x0C +``` +*/ + +#![allow(clippy::let_unit_value)] + +use core::fmt::{self, Write}; + +use crate::{Bits, Flags}; + +/** +Write a flags value as text. + +Any bits that aren't part of a contained flag will be formatted as a hex number. +*/ +pub fn to_writer(flags: &B, mut writer: impl Write) -> Result<(), fmt::Error> +where + B::Bits: WriteHex, +{ + // A formatter for bitflags that produces text output like: + // + // A | B | 0xf6 + // + // The names of set flags are written in a bar-separated-format, + // followed by a hex number of any remaining bits that are set + // but don't correspond to any flags. + + // Iterate over known flag values + let mut first = true; + let mut iter = flags.iter_names(); + for (name, _) in &mut iter { + if !first { + writer.write_str(" | ")?; + } + + first = false; + writer.write_str(name)?; + } + + // Append any extra bits that correspond to flags to the end of the format + let remaining = iter.remaining().bits(); + if remaining != B::Bits::EMPTY { + if !first { + writer.write_str(" | ")?; + } + + writer.write_str("0x")?; + remaining.write_hex(writer)?; + } + + fmt::Result::Ok(()) +} + +pub(crate) struct AsDisplay<'a, B>(pub(crate) &'a B); + +impl<'a, B: Flags> fmt::Display for AsDisplay<'a, B> +where + B::Bits: WriteHex, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + to_writer(self.0, f) + } +} + +/** +Parse a flags value from text. + +This function will fail on any names that don't correspond to defined flags. +Unknown bits will be retained. +*/ +pub fn from_str(input: &str) -> Result +where + B::Bits: ParseHex, +{ + let mut parsed_flags = B::empty(); + + // If the input is empty then return an empty set of flags + if input.trim().is_empty() { + return Ok(parsed_flags); + } + + for flag in input.split('|') { + let flag = flag.trim(); + + // If the flag is empty then we've got missing input + if flag.is_empty() { + return Err(ParseError::empty_flag()); + } + + // If the flag starts with `0x` then it's a hex number + // Parse it directly to the underlying bits type + let parsed_flag = if let Some(flag) = flag.strip_prefix("0x") { + let bits = + ::parse_hex(flag).map_err(|_| ParseError::invalid_hex_flag(flag))?; + + B::from_bits_retain(bits) + } + // Otherwise the flag is a name + // The generated flags type will determine whether + // or not it's a valid identifier + else { + B::from_name(flag).ok_or_else(|| ParseError::invalid_named_flag(flag))? + }; + + parsed_flags.insert(parsed_flag); + } + + Ok(parsed_flags) +} + +/** +Encode a value as a hex string. + +Implementors of this trait should not write the `0x` prefix. +*/ +pub trait WriteHex { + /// Write the value as hex. + fn write_hex(&self, writer: W) -> fmt::Result; +} + +/** +Parse a value from a hex string. +*/ +pub trait ParseHex { + /// Parse the value from hex. + fn parse_hex(input: &str) -> Result + where + Self: Sized; +} + +/// An error encountered while parsing flags from text. +#[derive(Debug)] +pub struct ParseError(ParseErrorKind); + +#[derive(Debug)] +#[allow(clippy::enum_variant_names)] +enum ParseErrorKind { + EmptyFlag, + InvalidNamedFlag { + #[cfg(not(feature = "std"))] + got: (), + #[cfg(feature = "std")] + got: String, + }, + InvalidHexFlag { + #[cfg(not(feature = "std"))] + got: (), + #[cfg(feature = "std")] + got: String, + }, +} + +impl ParseError { + /// An invalid hex flag was encountered. + pub fn invalid_hex_flag(flag: impl fmt::Display) -> Self { + let _flag = flag; + + let got = { + #[cfg(feature = "std")] + { + _flag.to_string() + } + }; + + ParseError(ParseErrorKind::InvalidHexFlag { got }) + } + + /// A named flag that doesn't correspond to any on the flags type was encountered. + pub fn invalid_named_flag(flag: impl fmt::Display) -> Self { + let _flag = flag; + + let got = { + #[cfg(feature = "std")] + { + _flag.to_string() + } + }; + + ParseError(ParseErrorKind::InvalidNamedFlag { got }) + } + + /// A hex or named flag wasn't found between separators. + pub const fn empty_flag() -> Self { + ParseError(ParseErrorKind::EmptyFlag) + } +} + +impl fmt::Display for ParseError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match &self.0 { + ParseErrorKind::InvalidNamedFlag { got } => { + let _got = got; + + write!(f, "unrecognized named flag")?; + + #[cfg(feature = "std")] + { + write!(f, " `{}`", _got)?; + } + } + ParseErrorKind::InvalidHexFlag { got } => { + let _got = got; + + write!(f, "invalid hex flag")?; + + #[cfg(feature = "std")] + { + write!(f, " `{}`", _got)?; + } + } + ParseErrorKind::EmptyFlag => { + write!(f, "encountered empty flag")?; + } + } + + Ok(()) + } +} + +#[cfg(feature = "std")] +impl std::error::Error for ParseError {} diff -Nru temporalio-1.3.0/vendor/bitflags/src/public.rs temporalio-1.3.0/vendor/bitflags/src/public.rs --- temporalio-1.3.0/vendor/bitflags/src/public.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/src/public.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,543 @@ +//! Generate the user-facing flags type. +//! +//! The code here belongs to the end-user, so new trait implementations and methods can't be +//! added without potentially breaking users. + +/// Declare the user-facing bitflags struct. +/// +/// This type is guaranteed to be a newtype with a `bitflags`-facing type as its single field. +#[macro_export(local_inner_macros)] +#[doc(hidden)] +macro_rules! __declare_public_bitflags { + ( + $(#[$outer:meta])* + $vis:vis struct $PublicBitFlags:ident + ) => { + $(#[$outer])* + $vis struct $PublicBitFlags(<$PublicBitFlags as $crate::__private::PublicFlags>::Internal); + }; +} + +/// Implement functions on the public (user-facing) bitflags type. +/// +/// We need to be careful about adding new methods and trait implementations here because they +/// could conflict with items added by the end-user. +#[macro_export(local_inner_macros)] +#[doc(hidden)] +macro_rules! __impl_public_bitflags_forward { + ( + $PublicBitFlags:ident: $T:ty, $InternalBitFlags:ident + ) => { + __impl_bitflags! { + $PublicBitFlags: $T { + fn empty() { + Self($InternalBitFlags::empty()) + } + + fn all() { + Self($InternalBitFlags::all()) + } + + fn bits(f) { + f.0.bits() + } + + fn from_bits(bits) { + match $InternalBitFlags::from_bits(bits) { + $crate::__private::core::option::Option::Some(bits) => $crate::__private::core::option::Option::Some(Self(bits)), + $crate::__private::core::option::Option::None => $crate::__private::core::option::Option::None, + } + } + + fn from_bits_truncate(bits) { + Self($InternalBitFlags::from_bits_truncate(bits)) + } + + fn from_bits_retain(bits) { + Self($InternalBitFlags::from_bits_retain(bits)) + } + + fn from_name(name) { + match $InternalBitFlags::from_name(name) { + $crate::__private::core::option::Option::Some(bits) => $crate::__private::core::option::Option::Some(Self(bits)), + $crate::__private::core::option::Option::None => $crate::__private::core::option::Option::None, + } + } + + fn is_empty(f) { + f.0.is_empty() + } + + fn is_all(f) { + f.0.is_all() + } + + fn intersects(f, other) { + f.0.intersects(other.0) + } + + fn contains(f, other) { + f.0.contains(other.0) + } + + fn insert(f, other) { + f.0.insert(other.0) + } + + fn remove(f, other) { + f.0.remove(other.0) + } + + fn toggle(f, other) { + f.0.toggle(other.0) + } + + fn set(f, other, value) { + f.0.set(other.0, value) + } + + fn intersection(f, other) { + Self(f.0.intersection(other.0)) + } + + fn union(f, other) { + Self(f.0.union(other.0)) + } + + fn difference(f, other) { + Self(f.0.difference(other.0)) + } + + fn symmetric_difference(f, other) { + Self(f.0.symmetric_difference(other.0)) + } + + fn complement(f) { + Self(f.0.complement()) + } + } + } + }; +} + +/// Implement functions on the public (user-facing) bitflags type. +/// +/// We need to be careful about adding new methods and trait implementations here because they +/// could conflict with items added by the end-user. +#[macro_export(local_inner_macros)] +#[doc(hidden)] +macro_rules! __impl_public_bitflags { + ( + $BitFlags:ident: $T:ty, $PublicBitFlags:ident { + $( + $(#[$inner:ident $($args:tt)*])* + const $Flag:tt = $value:expr; + )* + } + ) => { + __impl_bitflags! { + $BitFlags: $T { + fn empty() { + Self(<$T as $crate::Bits>::EMPTY) + } + + fn all() { + let mut truncated = <$T as $crate::Bits>::EMPTY; + let mut i = 0; + + $( + __bitflags_expr_safe_attrs!( + $(#[$inner $($args)*])* + {{ + let flag = <$PublicBitFlags as $crate::Flags>::FLAGS[i].value().bits(); + + truncated = truncated | flag; + i += 1; + }} + ); + )* + + let _ = i; + Self::from_bits_retain(truncated) + } + + fn bits(f) { + f.0 + } + + fn from_bits(bits) { + let truncated = Self::from_bits_truncate(bits).0; + + if truncated == bits { + $crate::__private::core::option::Option::Some(Self(bits)) + } else { + $crate::__private::core::option::Option::None + } + } + + fn from_bits_truncate(bits) { + Self(bits & Self::all().bits()) + } + + fn from_bits_retain(bits) { + Self(bits) + } + + fn from_name(name) { + $( + __bitflags_flag!({ + name: $Flag, + named: { + __bitflags_expr_safe_attrs!( + $(#[$inner $($args)*])* + { + if name == $crate::__private::core::stringify!($Flag) { + return $crate::__private::core::option::Option::Some(Self($PublicBitFlags::$Flag.bits())); + } + } + ); + }, + unnamed: {}, + }); + )* + + let _ = name; + $crate::__private::core::option::Option::None + } + + fn is_empty(f) { + f.bits() == <$T as $crate::Bits>::EMPTY + } + + fn is_all(f) { + // NOTE: We check against `Self::all` here, not `Self::Bits::ALL` + // because the set of all flags may not use all bits + Self::all().bits() | f.bits() == f.bits() + } + + fn intersects(f, other) { + f.bits() & other.bits() != <$T as $crate::Bits>::EMPTY + } + + fn contains(f, other) { + f.bits() & other.bits() == other.bits() + } + + fn insert(f, other) { + *f = Self::from_bits_retain(f.bits()).union(other); + } + + fn remove(f, other) { + *f = Self::from_bits_retain(f.bits()).difference(other); + } + + fn toggle(f, other) { + *f = Self::from_bits_retain(f.bits()).symmetric_difference(other); + } + + fn set(f, other, value) { + if value { + f.insert(other); + } else { + f.remove(other); + } + } + + fn intersection(f, other) { + Self::from_bits_retain(f.bits() & other.bits()) + } + + fn union(f, other) { + Self::from_bits_retain(f.bits() | other.bits()) + } + + fn difference(f, other) { + Self::from_bits_retain(f.bits() & !other.bits()) + } + + fn symmetric_difference(f, other) { + Self::from_bits_retain(f.bits() ^ other.bits()) + } + + fn complement(f) { + Self::from_bits_truncate(!f.bits()) + } + } + } + }; +} + +/// Implement iterators on the public (user-facing) bitflags type. +#[macro_export(local_inner_macros)] +#[doc(hidden)] +macro_rules! __impl_public_bitflags_iter { + ($BitFlags:ident: $T:ty, $PublicBitFlags:ident) => { + impl $BitFlags { + /// Yield a set of contained flags values. + /// + /// Each yielded flags value will correspond to a defined named flag. Any unknown bits + /// will be yielded together as a final flags value. + #[inline] + pub const fn iter(&self) -> $crate::iter::Iter<$PublicBitFlags> { + $crate::iter::Iter::__private_const_new( + <$PublicBitFlags as $crate::Flags>::FLAGS, + $PublicBitFlags::from_bits_retain(self.bits()), + $PublicBitFlags::from_bits_retain(self.bits()), + ) + } + + /// Yield a set of contained named flags values. + /// + /// This method is like [`iter`](#method.iter), except only yields bits in contained named flags. + /// Any unknown bits, or bits not corresponding to a contained flag will not be yielded. + #[inline] + pub const fn iter_names(&self) -> $crate::iter::IterNames<$PublicBitFlags> { + $crate::iter::IterNames::__private_const_new( + <$PublicBitFlags as $crate::Flags>::FLAGS, + $PublicBitFlags::from_bits_retain(self.bits()), + $PublicBitFlags::from_bits_retain(self.bits()), + ) + } + } + + impl $crate::__private::core::iter::IntoIterator for $BitFlags { + type Item = $PublicBitFlags; + type IntoIter = $crate::iter::Iter<$PublicBitFlags>; + + fn into_iter(self) -> Self::IntoIter { + self.iter() + } + } + }; +} + +/// Implement traits on the public (user-facing) bitflags type. +#[macro_export(local_inner_macros)] +#[doc(hidden)] +macro_rules! __impl_public_bitflags_ops { + ($PublicBitFlags:ident) => { + impl $crate::__private::core::fmt::Binary for $PublicBitFlags { + fn fmt( + &self, + f: &mut $crate::__private::core::fmt::Formatter, + ) -> $crate::__private::core::fmt::Result { + $crate::__private::core::fmt::Binary::fmt(&self.0, f) + } + } + + impl $crate::__private::core::fmt::Octal for $PublicBitFlags { + fn fmt( + &self, + f: &mut $crate::__private::core::fmt::Formatter, + ) -> $crate::__private::core::fmt::Result { + $crate::__private::core::fmt::Octal::fmt(&self.0, f) + } + } + + impl $crate::__private::core::fmt::LowerHex for $PublicBitFlags { + fn fmt( + &self, + f: &mut $crate::__private::core::fmt::Formatter, + ) -> $crate::__private::core::fmt::Result { + $crate::__private::core::fmt::LowerHex::fmt(&self.0, f) + } + } + + impl $crate::__private::core::fmt::UpperHex for $PublicBitFlags { + fn fmt( + &self, + f: &mut $crate::__private::core::fmt::Formatter, + ) -> $crate::__private::core::fmt::Result { + $crate::__private::core::fmt::UpperHex::fmt(&self.0, f) + } + } + + impl $crate::__private::core::ops::BitOr for $PublicBitFlags { + type Output = Self; + + /// The bitwise or (`|`) of the bits in two flags values. + #[inline] + fn bitor(self, other: $PublicBitFlags) -> Self { + self.union(other) + } + } + + impl $crate::__private::core::ops::BitOrAssign for $PublicBitFlags { + /// The bitwise or (`|`) of the bits in two flags values. + #[inline] + fn bitor_assign(&mut self, other: Self) { + self.insert(other); + } + } + + impl $crate::__private::core::ops::BitXor for $PublicBitFlags { + type Output = Self; + + /// The bitwise exclusive-or (`^`) of the bits in two flags values. + #[inline] + fn bitxor(self, other: Self) -> Self { + self.symmetric_difference(other) + } + } + + impl $crate::__private::core::ops::BitXorAssign for $PublicBitFlags { + /// The bitwise exclusive-or (`^`) of the bits in two flags values. + #[inline] + fn bitxor_assign(&mut self, other: Self) { + self.toggle(other); + } + } + + impl $crate::__private::core::ops::BitAnd for $PublicBitFlags { + type Output = Self; + + /// The bitwise and (`&`) of the bits in two flags values. + #[inline] + fn bitand(self, other: Self) -> Self { + self.intersection(other) + } + } + + impl $crate::__private::core::ops::BitAndAssign for $PublicBitFlags { + /// The bitwise and (`&`) of the bits in two flags values. + #[inline] + fn bitand_assign(&mut self, other: Self) { + *self = Self::from_bits_retain(self.bits()).intersection(other); + } + } + + impl $crate::__private::core::ops::Sub for $PublicBitFlags { + type Output = Self; + + /// The intersection of a source flags value with the complement of a target flags value (`&!`). + /// + /// This method is not equivalent to `self & !other` when `other` has unknown bits set. + /// `difference` won't truncate `other`, but the `!` operator will. + #[inline] + fn sub(self, other: Self) -> Self { + self.difference(other) + } + } + + impl $crate::__private::core::ops::SubAssign for $PublicBitFlags { + /// The intersection of a source flags value with the complement of a target flags value (`&!`). + /// + /// This method is not equivalent to `self & !other` when `other` has unknown bits set. + /// `difference` won't truncate `other`, but the `!` operator will. + #[inline] + fn sub_assign(&mut self, other: Self) { + self.remove(other); + } + } + + impl $crate::__private::core::ops::Not for $PublicBitFlags { + type Output = Self; + + /// The bitwise negation (`!`) of the bits in a flags value, truncating the result. + #[inline] + fn not(self) -> Self { + self.complement() + } + } + + impl $crate::__private::core::iter::Extend<$PublicBitFlags> for $PublicBitFlags { + /// The bitwise or (`|`) of the bits in each flags value. + fn extend>( + &mut self, + iterator: T, + ) { + for item in iterator { + self.insert(item) + } + } + } + + impl $crate::__private::core::iter::FromIterator<$PublicBitFlags> for $PublicBitFlags { + /// The bitwise or (`|`) of the bits in each flags value. + fn from_iter>( + iterator: T, + ) -> Self { + use $crate::__private::core::iter::Extend; + + let mut result = Self::empty(); + result.extend(iterator); + result + } + } + }; +} + +/// Implement constants on the public (user-facing) bitflags type. +#[macro_export(local_inner_macros)] +#[doc(hidden)] +macro_rules! __impl_public_bitflags_consts { + ( + $PublicBitFlags:ident: $T:ty { + $( + $(#[$inner:ident $($args:tt)*])* + const $Flag:tt = $value:expr; + )* + } + ) => { + impl $PublicBitFlags { + $( + __bitflags_flag!({ + name: $Flag, + named: { + $(#[$inner $($args)*])* + #[allow( + deprecated, + non_upper_case_globals, + )] + pub const $Flag: Self = Self::from_bits_retain($value); + }, + unnamed: {}, + }); + )* + } + + impl $crate::Flags for $PublicBitFlags { + const FLAGS: &'static [$crate::Flag<$PublicBitFlags>] = &[ + $( + __bitflags_flag!({ + name: $Flag, + named: { + __bitflags_expr_safe_attrs!( + $(#[$inner $($args)*])* + { + #[allow( + deprecated, + non_upper_case_globals, + )] + $crate::Flag::new($crate::__private::core::stringify!($Flag), $PublicBitFlags::$Flag) + } + ) + }, + unnamed: { + __bitflags_expr_safe_attrs!( + $(#[$inner $($args)*])* + { + #[allow( + deprecated, + non_upper_case_globals, + )] + $crate::Flag::new("", $PublicBitFlags::from_bits_retain($value)) + } + ) + }, + }), + )* + ]; + + type Bits = $T; + + fn bits(&self) -> $T { + $PublicBitFlags::bits(self) + } + + fn from_bits_retain(bits: $T) -> $PublicBitFlags { + $PublicBitFlags::from_bits_retain(bits) + } + } + }; +} diff -Nru temporalio-1.3.0/vendor/bitflags/src/tests.rs temporalio-1.3.0/vendor/bitflags/src/tests.rs --- temporalio-1.3.0/vendor/bitflags/src/tests.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/src/tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,131 @@ +mod all; +mod bits; +mod complement; +mod contains; +mod difference; +mod empty; +mod eq; +mod extend; +mod flags; +mod fmt; +mod from_bits; +mod from_bits_retain; +mod from_bits_truncate; +mod from_name; +mod insert; +mod intersection; +mod intersects; +mod is_all; +mod is_empty; +mod iter; +mod parser; +mod remove; +mod symmetric_difference; +mod union; + +bitflags! { + #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)] + pub struct TestFlags: u8 { + /// 1 + const A = 1; + + /// 1 << 1 + const B = 1 << 1; + + /// 1 << 2 + const C = 1 << 2; + + /// 1 | (1 << 1) | (1 << 2) + const ABC = Self::A.bits() | Self::B.bits() | Self::C.bits(); + } + + #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)] + pub struct TestFlagsInvert: u8 { + /// 1 | (1 << 1) | (1 << 2) + const ABC = Self::A.bits() | Self::B.bits() | Self::C.bits(); + + /// 1 + const A = 1; + + /// 1 << 1 + const B = 1 << 1; + + /// 1 << 2 + const C = 1 << 2; + } + + #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)] + pub struct TestZero: u8 { + /// 0 + const ZERO = 0; + } + + #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)] + pub struct TestZeroOne: u8 { + /// 0 + const ZERO = 0; + + /// 1 + const ONE = 1; + } + + #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)] + pub struct TestUnicode: u8 { + /// 1 + const 一 = 1; + + /// 2 + const 二 = 1 << 1; + } + + #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)] + pub struct TestEmpty: u8 {} + + #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)] + pub struct TestOverlapping: u8 { + /// 1 | (1 << 1) + const AB = 1 | (1 << 1); + + /// (1 << 1) | (1 << 2) + const BC = (1 << 1) | (1 << 2); + } + + #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)] + pub struct TestOverlappingFull: u8 { + /// 1 + const A = 1; + + /// 1 + const B = 1; + + /// 1 + const C = 1; + + /// 2 + const D = 1 << 1; + } + + #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)] + pub struct TestExternal: u8 { + /// 1 + const A = 1; + + /// 1 << 1 + const B = 1 << 1; + + /// 1 << 2 + const C = 1 << 2; + + /// 1 | (1 << 1) | (1 << 2) + const ABC = Self::A.bits() | Self::B.bits() | Self::C.bits(); + + /// External + const _ = !0; + } + + #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)] + pub struct TestExternalFull: u8 { + /// External + const _ = !0; + } +} diff -Nru temporalio-1.3.0/vendor/bitflags/src/traits.rs temporalio-1.3.0/vendor/bitflags/src/traits.rs --- temporalio-1.3.0/vendor/bitflags/src/traits.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/src/traits.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,430 @@ +use core::{ + fmt, + ops::{BitAnd, BitOr, BitXor, Not}, +}; + +use crate::{ + iter, + parser::{ParseError, ParseHex, WriteHex}, +}; + +/** +A defined flags value that may be named or unnamed. +*/ +pub struct Flag { + name: &'static str, + value: B, +} + +impl Flag { + /** + Define a flag. + + If `name` is non-empty then the flag is named, otherwise it's unnamed. + */ + pub const fn new(name: &'static str, value: B) -> Self { + Flag { name, value } + } + + /** + Get the name of this flag. + + If the flag is unnamed then the returned string will be empty. + */ + pub const fn name(&self) -> &'static str { + self.name + } + + /** + Get the flags value of this flag. + */ + pub const fn value(&self) -> &B { + &self.value + } + + /** + Whether the flag is named. + + If [`Flag::name`] returns a non-empty string then this method will return `true`. + */ + pub const fn is_named(&self) -> bool { + !self.name.is_empty() + } + + /** + Whether the flag is unnamed. + + If [`Flag::name`] returns a non-empty string then this method will return `false`. + */ + pub const fn is_unnamed(&self) -> bool { + self.name.is_empty() + } +} + +/** +A set of defined flags using a bits type as storage. + +## Implementing `Flags` + +This trait is implemented by the [`bitflags`](macro.bitflags.html) macro: + +``` +use bitflags::bitflags; + +bitflags! { + struct MyFlags: u8 { + const A = 1; + const B = 1 << 1; + } +} +``` + +It can also be implemented manually: + +``` +use bitflags::{Flag, Flags}; + +struct MyFlags(u8); + +impl Flags for MyFlags { + const FLAGS: &'static [Flag] = &[ + Flag::new("A", MyFlags(1)), + Flag::new("B", MyFlags(1 << 1)), + ]; + + type Bits = u8; + + fn from_bits_retain(bits: Self::Bits) -> Self { + MyFlags(bits) + } + + fn bits(&self) -> Self::Bits { + self.0 + } +} +``` + +## Using `Flags` + +The `Flags` trait can be used generically to work with any flags types. In this example, +we can count the number of defined named flags: + +``` +# use bitflags::{bitflags, Flags}; +fn defined_flags() -> usize { + F::FLAGS.iter().filter(|f| f.is_named()).count() +} + +bitflags! { + struct MyFlags: u8 { + const A = 1; + const B = 1 << 1; + const C = 1 << 2; + + const _ = !0; + } +} + +assert_eq!(3, defined_flags::()); +``` +*/ +pub trait Flags: Sized + 'static { + /// The set of defined flags. + const FLAGS: &'static [Flag]; + + /// The underlying bits type. + type Bits: Bits; + + /// Get a flags value with all bits unset. + fn empty() -> Self { + Self::from_bits_retain(Self::Bits::EMPTY) + } + + /// Get a flags value with all known bits set. + fn all() -> Self { + let mut truncated = Self::Bits::EMPTY; + + for flag in Self::FLAGS.iter() { + truncated = truncated | flag.value().bits(); + } + + Self::from_bits_retain(truncated) + } + + /// Get the underlying bits value. + /// + /// The returned value is exactly the bits set in this flags value. + fn bits(&self) -> Self::Bits; + + /// Convert from a bits value. + /// + /// This method will return `None` if any unknown bits are set. + fn from_bits(bits: Self::Bits) -> Option { + let truncated = Self::from_bits_truncate(bits); + + if truncated.bits() == bits { + Some(truncated) + } else { + None + } + } + + /// Convert from a bits value, unsetting any unknown bits. + fn from_bits_truncate(bits: Self::Bits) -> Self { + Self::from_bits_retain(bits & Self::all().bits()) + } + + /// Convert from a bits value exactly. + fn from_bits_retain(bits: Self::Bits) -> Self; + + /// Get a flags value with the bits of a flag with the given name set. + /// + /// This method will return `None` if `name` is empty or doesn't + /// correspond to any named flag. + fn from_name(name: &str) -> Option { + // Don't parse empty names as empty flags + if name.is_empty() { + return None; + } + + for flag in Self::FLAGS { + if flag.name() == name { + return Some(Self::from_bits_retain(flag.value().bits())); + } + } + + None + } + + /// Yield a set of contained flags values. + /// + /// Each yielded flags value will correspond to a defined named flag. Any unknown bits + /// will be yielded together as a final flags value. + fn iter(&self) -> iter::Iter { + iter::Iter::new(self) + } + + /// Yield a set of contained named flags values. + /// + /// This method is like [`Flags::iter`], except only yields bits in contained named flags. + /// Any unknown bits, or bits not corresponding to a contained flag will not be yielded. + fn iter_names(&self) -> iter::IterNames { + iter::IterNames::new(self) + } + + /// Whether all bits in this flags value are unset. + fn is_empty(&self) -> bool { + self.bits() == Self::Bits::EMPTY + } + + /// Whether all known bits in this flags value are set. + fn is_all(&self) -> bool { + // NOTE: We check against `Self::all` here, not `Self::Bits::ALL` + // because the set of all flags may not use all bits + Self::all().bits() | self.bits() == self.bits() + } + + /// Whether any set bits in a source flags value are also set in a target flags value. + fn intersects(&self, other: Self) -> bool + where + Self: Sized, + { + self.bits() & other.bits() != Self::Bits::EMPTY + } + + /// Whether all set bits in a source flags value are also set in a target flags value. + fn contains(&self, other: Self) -> bool + where + Self: Sized, + { + self.bits() & other.bits() == other.bits() + } + + /// The bitwise or (`|`) of the bits in two flags values. + fn insert(&mut self, other: Self) + where + Self: Sized, + { + *self = Self::from_bits_retain(self.bits()).union(other); + } + + /// The intersection of a source flags value with the complement of a target flags value (`&!`). + /// + /// This method is not equivalent to `self & !other` when `other` has unknown bits set. + /// `remove` won't truncate `other`, but the `!` operator will. + fn remove(&mut self, other: Self) + where + Self: Sized, + { + *self = Self::from_bits_retain(self.bits()).difference(other); + } + + /// The bitwise exclusive-or (`^`) of the bits in two flags values. + fn toggle(&mut self, other: Self) + where + Self: Sized, + { + *self = Self::from_bits_retain(self.bits()).symmetric_difference(other); + } + + /// Call [`Flags::insert`] when `value` is `true` or [`Flags::remove`] when `value` is `false`. + fn set(&mut self, other: Self, value: bool) + where + Self: Sized, + { + if value { + self.insert(other); + } else { + self.remove(other); + } + } + + /// The bitwise and (`&`) of the bits in two flags values. + #[must_use] + fn intersection(self, other: Self) -> Self { + Self::from_bits_retain(self.bits() & other.bits()) + } + + /// The bitwise or (`|`) of the bits in two flags values. + #[must_use] + fn union(self, other: Self) -> Self { + Self::from_bits_retain(self.bits() | other.bits()) + } + + /// The intersection of a source flags value with the complement of a target flags value (`&!`). + /// + /// This method is not equivalent to `self & !other` when `other` has unknown bits set. + /// `difference` won't truncate `other`, but the `!` operator will. + #[must_use] + fn difference(self, other: Self) -> Self { + Self::from_bits_retain(self.bits() & !other.bits()) + } + + /// The bitwise exclusive-or (`^`) of the bits in two flags values. + #[must_use] + fn symmetric_difference(self, other: Self) -> Self { + Self::from_bits_retain(self.bits() ^ other.bits()) + } + + /// The bitwise negation (`!`) of the bits in a flags value, truncating the result. + #[must_use] + fn complement(self) -> Self { + Self::from_bits_truncate(!self.bits()) + } +} + +/** +A bits type that can be used as storage for a flags type. +*/ +pub trait Bits: + Clone + + Copy + + PartialEq + + BitAnd + + BitOr + + BitXor + + Not + + Sized + + 'static +{ + /// A value with all bits unset. + const EMPTY: Self; + + /// A value with all bits set. + const ALL: Self; +} + +// Not re-exported: prevent custom `Bits` impls being used in the `bitflags!` macro, +// or they may fail to compile based on crate features +pub trait Primitive {} + +macro_rules! impl_bits { + ($($u:ty, $i:ty,)*) => { + $( + impl Bits for $u { + const EMPTY: $u = 0; + const ALL: $u = <$u>::MAX; + } + + impl Bits for $i { + const EMPTY: $i = 0; + const ALL: $i = <$u>::MAX as $i; + } + + impl ParseHex for $u { + fn parse_hex(input: &str) -> Result { + <$u>::from_str_radix(input, 16).map_err(|_| ParseError::invalid_hex_flag(input)) + } + } + + impl ParseHex for $i { + fn parse_hex(input: &str) -> Result { + <$i>::from_str_radix(input, 16).map_err(|_| ParseError::invalid_hex_flag(input)) + } + } + + impl WriteHex for $u { + fn write_hex(&self, mut writer: W) -> fmt::Result { + write!(writer, "{:x}", self) + } + } + + impl WriteHex for $i { + fn write_hex(&self, mut writer: W) -> fmt::Result { + write!(writer, "{:x}", self) + } + } + + impl Primitive for $i {} + impl Primitive for $u {} + )* + } +} + +impl_bits! { + u8, i8, + u16, i16, + u32, i32, + u64, i64, + u128, i128, + usize, isize, +} + +/// A trait for referencing the `bitflags`-owned internal type +/// without exposing it publicly. +pub trait PublicFlags { + /// The type of the underlying storage. + type Primitive: Primitive; + + /// The type of the internal field on the generated flags type. + type Internal; +} + +#[doc(hidden)] +#[deprecated(note = "use the `Flags` trait instead")] +pub trait BitFlags: ImplementedByBitFlagsMacro + Flags { + /// An iterator over enabled flags in an instance of the type. + type Iter: Iterator; + + /// An iterator over the raw names and bits for enabled flags in an instance of the type. + type IterNames: Iterator; +} + +#[allow(deprecated)] +impl BitFlags for B { + type Iter = iter::Iter; + type IterNames = iter::IterNames; +} + +impl ImplementedByBitFlagsMacro for B {} + +/// A marker trait that signals that an implementation of `BitFlags` came from the `bitflags!` macro. +/// +/// There's nothing stopping an end-user from implementing this trait, but we don't guarantee their +/// manual implementations won't break between non-breaking releases. +#[doc(hidden)] +pub trait ImplementedByBitFlagsMacro {} + +pub(crate) mod __private { + pub use super::{ImplementedByBitFlagsMacro, PublicFlags}; +} diff -Nru temporalio-1.3.0/vendor/bitflags/tests/basic.rs temporalio-1.3.0/vendor/bitflags/tests/basic.rs --- temporalio-1.3.0/vendor/bitflags/tests/basic.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/basic.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -#![no_std] - -use bitflags::bitflags; - -bitflags! { - /// baz - struct Flags: u32 { - const A = 0b00000001; - #[doc = "bar"] - const B = 0b00000010; - const C = 0b00000100; - #[doc = "foo"] - const ABC = Flags::A.bits | Flags::B.bits | Flags::C.bits; - } -} - -#[test] -fn basic() { - assert_eq!(Flags::ABC, Flags::A | Flags::B | Flags::C); -} diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-fail/impls/copy.rs temporalio-1.3.0/vendor/bitflags/tests/compile-fail/impls/copy.rs --- temporalio-1.3.0/vendor/bitflags/tests/compile-fail/impls/copy.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-fail/impls/copy.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -use bitflags::bitflags; - -bitflags! { - #[derive(Clone, Copy)] - struct Flags: u32 { - const A = 0b00000001; - } -} - -fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-fail/impls/copy.stderr.beta temporalio-1.3.0/vendor/bitflags/tests/compile-fail/impls/copy.stderr.beta --- temporalio-1.3.0/vendor/bitflags/tests/compile-fail/impls/copy.stderr.beta 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-fail/impls/copy.stderr.beta 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -error[E0119]: conflicting implementations of trait `std::clone::Clone` for type `Flags` - --> $DIR/copy.rs:3:1 - | -3 | / bitflags! { -4 | | #[derive(Clone, Copy)] - | | ----- first implementation here -5 | | struct Flags: u32 { -6 | | const A = 0b00000001; -7 | | } -8 | | } - | |_^ conflicting implementation for `Flags` - | - = note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info) - -error[E0119]: conflicting implementations of trait `std::marker::Copy` for type `Flags` - --> $DIR/copy.rs:3:1 - | -3 | / bitflags! { -4 | | #[derive(Clone, Copy)] - | | ---- first implementation here -5 | | struct Flags: u32 { -6 | | const A = 0b00000001; -7 | | } -8 | | } - | |_^ conflicting implementation for `Flags` - | - = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info) diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-fail/impls/eq.rs temporalio-1.3.0/vendor/bitflags/tests/compile-fail/impls/eq.rs --- temporalio-1.3.0/vendor/bitflags/tests/compile-fail/impls/eq.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-fail/impls/eq.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -use bitflags::bitflags; - -bitflags! { - #[derive(PartialEq, Eq)] - struct Flags: u32 { - const A = 0b00000001; - } -} - -fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-fail/impls/eq.stderr.beta temporalio-1.3.0/vendor/bitflags/tests/compile-fail/impls/eq.stderr.beta --- temporalio-1.3.0/vendor/bitflags/tests/compile-fail/impls/eq.stderr.beta 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-fail/impls/eq.stderr.beta 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -error[E0119]: conflicting implementations of trait `std::cmp::PartialEq` for type `Flags` - --> $DIR/eq.rs:3:1 - | -3 | / bitflags! { -4 | | #[derive(PartialEq, Eq)] - | | --------- first implementation here -5 | | struct Flags: u32 { -6 | | const A = 0b00000001; -7 | | } -8 | | } - | |_^ conflicting implementation for `Flags` - | - = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info) - -error[E0119]: conflicting implementations of trait `std::cmp::Eq` for type `Flags` - --> $DIR/eq.rs:3:1 - | -3 | / bitflags! { -4 | | #[derive(PartialEq, Eq)] - | | -- first implementation here -5 | | struct Flags: u32 { -6 | | const A = 0b00000001; -7 | | } -8 | | } - | |_^ conflicting implementation for `Flags` - | - = note: this error originates in the derive macro `Eq` (in Nightly builds, run with -Z macro-backtrace for more info) - -error[E0119]: conflicting implementations of trait `std::marker::StructuralPartialEq` for type `Flags` - --> $DIR/eq.rs:3:1 - | -3 | / bitflags! { -4 | | #[derive(PartialEq, Eq)] - | | --------- first implementation here -5 | | struct Flags: u32 { -6 | | const A = 0b00000001; -7 | | } -8 | | } - | |_^ conflicting implementation for `Flags` - | - = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info) - -error[E0119]: conflicting implementations of trait `std::marker::StructuralEq` for type `Flags` - --> $DIR/eq.rs:3:1 - | -3 | / bitflags! { -4 | | #[derive(PartialEq, Eq)] - | | -- first implementation here -5 | | struct Flags: u32 { -6 | | const A = 0b00000001; -7 | | } -8 | | } - | |_^ conflicting implementation for `Flags` - | - = note: this error originates in the derive macro `Eq` (in Nightly builds, run with -Z macro-backtrace for more info) diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs temporalio-1.3.0/vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs --- temporalio-1.3.0/vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,123 +0,0 @@ -use std::{ - fmt::{ - self, - Debug, - Display, - LowerHex, - UpperHex, - Octal, - Binary, - }, - ops::{ - BitAnd, - BitOr, - BitXor, - BitAndAssign, - BitOrAssign, - BitXorAssign, - Not, - }, -}; - -use bitflags::bitflags; - -// Ideally we'd actually want this to work, but currently need something like `num`'s `Zero` -// With some design work it could be made possible -#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] -struct MyInt(u8); - -impl BitAnd for MyInt { - type Output = Self; - - fn bitand(self, other: Self) -> Self { - MyInt(self.0 & other.0) - } -} - -impl BitOr for MyInt { - type Output = Self; - - fn bitor(self, other: Self) -> Self { - MyInt(self.0 | other.0) - } -} - -impl BitXor for MyInt { - type Output = Self; - - fn bitxor(self, other: Self) -> Self { - MyInt(self.0 ^ other.0) - } -} - -impl BitAndAssign for MyInt { - fn bitand_assign(&mut self, other: Self) { - self.0 &= other.0 - } -} - -impl BitOrAssign for MyInt { - fn bitor_assign(&mut self, other: Self) { - self.0 |= other.0 - } -} - -impl BitXorAssign for MyInt { - fn bitxor_assign(&mut self, other: Self) { - self.0 ^= other.0 - } -} - -impl Debug for MyInt { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - Debug::fmt(&self.0, f) - } -} - -impl Display for MyInt { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - Display::fmt(&self.0, f) - } -} - -impl LowerHex for MyInt { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - LowerHex::fmt(&self.0, f) - } -} - -impl UpperHex for MyInt { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - UpperHex::fmt(&self.0, f) - } -} - -impl Octal for MyInt { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - Octal::fmt(&self.0, f) - } -} - -impl Binary for MyInt { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - Binary::fmt(&self.0, f) - } -} - -impl Not for MyInt { - type Output = MyInt; - - fn not(self) -> Self { - MyInt(!self.0) - } -} - -bitflags! { - struct Flags128: MyInt { - const A = MyInt(0b0000_0001u8); - const B = MyInt(0b0000_0010u8); - const C = MyInt(0b0000_0100u8); - } -} - -fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.stderr.beta temporalio-1.3.0/vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.stderr.beta --- temporalio-1.3.0/vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.stderr.beta 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.stderr.beta 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -error[E0308]: mismatched types - --> $DIR/all_defined.rs:115:1 - | -115 | / bitflags! { -116 | | struct Flags128: MyInt { -117 | | const A = MyInt(0b0000_0001u8); -118 | | const B = MyInt(0b0000_0010u8); -119 | | const C = MyInt(0b0000_0100u8); -120 | | } -121 | | } - | |_^ expected struct `MyInt`, found integer - | - = note: this error originates in the macro `__impl_all_bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) - -error[E0308]: mismatched types - --> $DIR/all_defined.rs:115:1 - | -115 | / bitflags! { -116 | | struct Flags128: MyInt { -117 | | const A = MyInt(0b0000_0001u8); -118 | | const B = MyInt(0b0000_0010u8); -119 | | const C = MyInt(0b0000_0100u8); -120 | | } -121 | | } - | |_^ expected struct `MyInt`, found integer - | - = note: this error originates in the macro `__impl_bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-fail/non_integer_base/all_missing.rs temporalio-1.3.0/vendor/bitflags/tests/compile-fail/non_integer_base/all_missing.rs --- temporalio-1.3.0/vendor/bitflags/tests/compile-fail/non_integer_base/all_missing.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-fail/non_integer_base/all_missing.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -use bitflags::bitflags; - -struct MyInt(u8); - -bitflags! { - struct Flags128: MyInt { - const A = MyInt(0b0000_0001); - const B = MyInt(0b0000_0010); - const C = MyInt(0b0000_0100); - } -} - -fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-fail/non_integer_base/all_missing.stderr.beta temporalio-1.3.0/vendor/bitflags/tests/compile-fail/non_integer_base/all_missing.stderr.beta --- temporalio-1.3.0/vendor/bitflags/tests/compile-fail/non_integer_base/all_missing.stderr.beta 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-fail/non_integer_base/all_missing.stderr.beta 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -error[E0204]: the trait `Copy` may not be implemented for this type - --> $DIR/all_missing.rs:5:1 - | -5 | / bitflags! { -6 | | struct Flags128: MyInt { -7 | | const A = MyInt(0b0000_0001); -8 | | const B = MyInt(0b0000_0010); -9 | | const C = MyInt(0b0000_0100); -10 | | } -11 | | } - | |_^ this field does not implement `Copy` - | - = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info) diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/private_field.rs temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/private_field.rs --- temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/private_field.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/private_field.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -mod example { - use bitflags::bitflags; - - bitflags! { - pub struct Flags1: u32 { - const FLAG_A = 0b00000001; - } - } -} - -fn main() { - let flag1 = example::Flags1::FLAG_A.bits; -} diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/private_field.stderr.beta temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/private_field.stderr.beta --- temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/private_field.stderr.beta 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/private_field.stderr.beta 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -error[E0616]: field `bits` of struct `Flags1` is private - --> $DIR/private_field.rs:12:41 - | -12 | let flag1 = example::Flags1::FLAG_A.bits; - | ^^^^ private field - | -help: a method `bits` also exists, call it with parentheses - | -12 | let flag1 = example::Flags1::FLAG_A.bits(); - | ^^ diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/private_flags.rs temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/private_flags.rs --- temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/private_flags.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/private_flags.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -mod example { - use bitflags::bitflags; - - bitflags! { - pub struct Flags1: u32 { - const FLAG_A = 0b00000001; - } - - struct Flags2: u32 { - const FLAG_B = 0b00000010; - } - } -} - -fn main() { - let flag1 = example::Flags1::FLAG_A; - let flag2 = example::Flags2::FLAG_B; -} diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/private_flags.stderr.beta temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/private_flags.stderr.beta --- temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/private_flags.stderr.beta 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/private_flags.stderr.beta 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -error[E0603]: struct `Flags2` is private - --> $DIR/private_flags.rs:17:26 - | -17 | let flag2 = example::Flags2::FLAG_B; - | ^^^^^^ private struct - | -note: the struct `Flags2` is defined here - --> $DIR/private_flags.rs:4:5 - | -4 | / bitflags! { -5 | | pub struct Flags1: u32 { -6 | | const FLAG_A = 0b00000001; -7 | | } -... | -11 | | } -12 | | } - | |_____^ - = note: this error originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/pub_const.rs temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/pub_const.rs --- temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/pub_const.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/pub_const.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -use bitflags::bitflags; - -bitflags! { - pub struct Flags1: u32 { - pub const FLAG_A = 0b00000001; - } -} - -fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/pub_const.stderr.beta temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/pub_const.stderr.beta --- temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/pub_const.stderr.beta 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-fail/visibility/pub_const.stderr.beta 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -error: no rules expected the token `pub` - --> $DIR/pub_const.rs:5:9 - | -5 | pub const FLAG_A = 0b00000001; - | ^^^ no rules expected this token in macro call diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-pass/impls/convert.rs temporalio-1.3.0/vendor/bitflags/tests/compile-pass/impls/convert.rs --- temporalio-1.3.0/vendor/bitflags/tests/compile-pass/impls/convert.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-pass/impls/convert.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -use bitflags::bitflags; - -bitflags! { - struct Flags: u32 { - const A = 0b00000001; - } -} - -impl From for Flags { - fn from(v: u32) -> Flags { - Flags::from_bits_truncate(v) - } -} - -fn main() { - -} diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-pass/impls/default.rs temporalio-1.3.0/vendor/bitflags/tests/compile-pass/impls/default.rs --- temporalio-1.3.0/vendor/bitflags/tests/compile-pass/impls/default.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-pass/impls/default.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -use bitflags::bitflags; - -bitflags! { - #[derive(Default)] - struct Flags: u32 { - const A = 0b00000001; - } -} - -fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-pass/impls/inherent_methods.rs temporalio-1.3.0/vendor/bitflags/tests/compile-pass/impls/inherent_methods.rs --- temporalio-1.3.0/vendor/bitflags/tests/compile-pass/impls/inherent_methods.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-pass/impls/inherent_methods.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -use bitflags::bitflags; - -bitflags! { - struct Flags: u32 { - const A = 0b00000001; - } -} - -impl Flags { - pub fn new() -> Flags { - Flags::A - } -} - -fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-pass/redefinition/core.rs temporalio-1.3.0/vendor/bitflags/tests/compile-pass/redefinition/core.rs --- temporalio-1.3.0/vendor/bitflags/tests/compile-pass/redefinition/core.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-pass/redefinition/core.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -use bitflags::bitflags; - -// Checks for possible errors caused by overriding names used by `bitflags!` internally. - -mod core {} -mod _core {} - -bitflags! { - struct Test: u8 { - const A = 1; - } -} - -fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-pass/redefinition/stringify.rs temporalio-1.3.0/vendor/bitflags/tests/compile-pass/redefinition/stringify.rs --- temporalio-1.3.0/vendor/bitflags/tests/compile-pass/redefinition/stringify.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-pass/redefinition/stringify.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -use bitflags::bitflags; - -// Checks for possible errors caused by overriding names used by `bitflags!` internally. - -#[allow(unused_macros)] -macro_rules! stringify { - ($($t:tt)*) => { "..." }; -} - -bitflags! { - struct Test: u8 { - const A = 1; - } -} - -fn main() { - // Just make sure we don't call the redefined `stringify` macro - assert_eq!(format!("{:?}", Test::A), "A"); -} diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-pass/repr/c.rs temporalio-1.3.0/vendor/bitflags/tests/compile-pass/repr/c.rs --- temporalio-1.3.0/vendor/bitflags/tests/compile-pass/repr/c.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-pass/repr/c.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -use bitflags::bitflags; - -bitflags! { - #[repr(C)] - struct Flags: u32 { - const A = 0b00000001; - } -} - -fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-pass/repr/transparent.rs temporalio-1.3.0/vendor/bitflags/tests/compile-pass/repr/transparent.rs --- temporalio-1.3.0/vendor/bitflags/tests/compile-pass/repr/transparent.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-pass/repr/transparent.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -use bitflags::bitflags; - -bitflags! { - #[repr(transparent)] - struct Flags: u32 { - const A = 0b00000001; - } -} - -fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-pass/visibility/bits_field.rs temporalio-1.3.0/vendor/bitflags/tests/compile-pass/visibility/bits_field.rs --- temporalio-1.3.0/vendor/bitflags/tests/compile-pass/visibility/bits_field.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-pass/visibility/bits_field.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -use bitflags::bitflags; - -bitflags! { - pub struct Flags1: u32 { - const FLAG_A = 0b00000001; - } -} - -fn main() { - assert_eq!(0b00000001, Flags1::FLAG_A.bits); -} diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile-pass/visibility/pub_in.rs temporalio-1.3.0/vendor/bitflags/tests/compile-pass/visibility/pub_in.rs --- temporalio-1.3.0/vendor/bitflags/tests/compile-pass/visibility/pub_in.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile-pass/visibility/pub_in.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -mod a { - mod b { - use bitflags::bitflags; - - bitflags! { - pub(in crate::a) struct Flags: u32 { - const FLAG_A = 0b00000001; - } - } - } - - pub fn flags() -> u32 { - b::Flags::FLAG_A.bits() - } -} - -fn main() { - assert_eq!(0b00000001, a::flags()); -} diff -Nru temporalio-1.3.0/vendor/bitflags/tests/compile.rs temporalio-1.3.0/vendor/bitflags/tests/compile.rs --- temporalio-1.3.0/vendor/bitflags/tests/compile.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags/tests/compile.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -use std::{ - fs, - ffi::OsStr, - io, - path::Path, -}; - -use walkdir::WalkDir; - -#[test] -fn fail() { - prepare_stderr_files("tests/compile-fail").unwrap(); - - let t = trybuild::TestCases::new(); - t.compile_fail("tests/compile-fail/**/*.rs"); -} - -#[test] -fn pass() { - let t = trybuild::TestCases::new(); - t.pass("tests/compile-pass/**/*.rs"); -} - -// Compiler messages may change between versions -// We don't want to have to track these too closely for `bitflags`, but -// having some message to check makes sure user-facing errors are sensical. -// -// The approach we use is to run the test on all compilers, but only check stderr -// output on beta (which is the next stable release). We do this by default ignoring -// any `.stderr` files in the `compile-fail` directory, and copying `.stderr.beta` files -// when we happen to be running on a beta compiler. -fn prepare_stderr_files(path: impl AsRef) -> io::Result<()> { - for entry in WalkDir::new(path) { - let entry = entry?; - - if entry.path().extension().and_then(OsStr::to_str) == Some("beta") { - let renamed = entry.path().with_extension(""); - - // Unconditionally remove a corresponding `.stderr` file for a `.stderr.beta` - // file if it exists. On `beta` compilers, we'll recreate it. On other compilers, - // we don't want to end up checking it anyways. - if renamed.exists() { - fs::remove_file(&renamed)?; - } - - rename_beta_stderr(entry.path(), renamed)?; - } - } - - Ok(()) -} - -#[rustversion::beta] -fn rename_beta_stderr(from: impl AsRef, to: impl AsRef) -> io::Result<()> { - fs::copy(from, to)?; - - Ok(()) -} - -#[rustversion::not(beta)] -fn rename_beta_stderr(_: impl AsRef, _: impl AsRef) -> io::Result<()> { - Ok(()) -} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/.cargo-checksum.json temporalio-1.3.0/vendor/bitflags-1.3.2/.cargo-checksum.json --- temporalio-1.3.0/vendor/bitflags-1.3.2/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","CODE_OF_CONDUCT.md":"42634d0f6d922f49857175af991802822f7f920487aefa2ee250a50d12251a66","Cargo.toml":"87aced7532a7974eb37ab5fe6037f0abafc36d6b2d74891ecd2bf2f14f50d11e","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"baa8604f8afb34fd93b9c79729daafb884dedcaf34023e4af8ad037d916061fd","src/example_generated.rs":"e43eb59e90f317f38d436670a6067d2fd9eb35fb319fe716184e4a04e24ed1b2","src/lib.rs":"e6477688535ee326d27238aeedc9cb4320ac35b9d17a4deda09e0587b0ccdbd4","tests/basic.rs":"146f1cbf6279bc609242cd3349f29cb21b41294f5e4921875f5ec95bd83529a2","tests/compile-fail/impls/copy.rs":"b791371237ddc75a7c04d2130e03b462c9c00a80dca08bd45aa97433d9c0d13a","tests/compile-fail/impls/copy.stderr.beta":"77d83484ce221d4b6ff2f7de843929a452d779fcfff428122710dd8218c298e3","tests/compile-fail/impls/eq.rs":"0cee8b9e07d537890e0189710293b53972d0fab63c09366f33c391065afafa99","tests/compile-fail/impls/eq.stderr.beta":"381fc6143d45ce76d7cecc47aa59cb69fe5e79c0b60a4a85d5c6163b400b3cc7","tests/compile-fail/non_integer_base/all_defined.rs":"95e14cad9e94560262f2862c3c01865ac30369b69da1001b0e7285cb55e6cb75","tests/compile-fail/non_integer_base/all_defined.stderr.beta":"1760739a276690903bb03844025587d37939f5dfcbfab309db3c86f32bdbf748","tests/compile-fail/non_integer_base/all_missing.rs":"b3d9da619d23213731ba2581aa7999c796c3c79aaf4f0ee6b11ceec08a11537f","tests/compile-fail/non_integer_base/all_missing.stderr.beta":"37e102290d3867e175b21976be798939f294efb17580d5b51e7b17b590d55132","tests/compile-fail/visibility/private_field.rs":"38e4d3fe6471829360d12c8d09b097f6a21aa93fb51eac3b215d96bdae23316b","tests/compile-fail/visibility/private_field.stderr.beta":"5aa24a3ebb39326f31927721c5017b8beb66c3e501fb865a3fa814c9763bfa0f","tests/compile-fail/visibility/private_flags.rs":"2ce4235802aa4e9c96c4e77d9e31d8401ef58dcda4741325184f0764ab1fe393","tests/compile-fail/visibility/private_flags.stderr.beta":"f3eb9f7baf2689258f3519ff7ee5c6ec3c237264ebcfe63f40c40f2023e5022f","tests/compile-fail/visibility/pub_const.rs":"8f813a97ac518c5ea8ac65b184101912452384afaf7b8d6c5e62f8370eca3c0a","tests/compile-fail/visibility/pub_const.stderr.beta":"823976ae1794d7f5372e2ec9aabba497e7bb88004722904c38da342ed98e8962","tests/compile-pass/impls/convert.rs":"88fe80bfb9cd5779f0e1d92c9ec02a8b6bb67e334c07f2309e9c0ba5ef776eb0","tests/compile-pass/impls/default.rs":"c508f9a461691f44b45142fa5ad599f02326e1de4c0cbca6c0593f4652eba109","tests/compile-pass/impls/inherent_methods.rs":"ecc26388e9a394bfa7a5bb69a5d621ab3d4d1e53f28f657bb8e78fe79f437913","tests/compile-pass/redefinition/core.rs":"ff5b6e72f87acc6ebb12405d3c0f6e3fa62e669933656a454bb63b30ea44179c","tests/compile-pass/redefinition/stringify.rs":"1edbce42b900c14425d7ffa14e83e165ebe452d7dccd8c0a8a821bdec64f5c93","tests/compile-pass/repr/c.rs":"6fda17f7c2edfcd155314579e83d0fc8a16209e400f1f9a5ca77bd9a799041f2","tests/compile-pass/repr/transparent.rs":"6cdc87a2137d8a4e0c8ce9b6cba83c82255f8ea125951bf614418685600489ce","tests/compile-pass/visibility/bits_field.rs":"1f3e5ba5a047440066a9f6bf7b7af33f5b06f6b1da3dd9af6886168199a7ea0a","tests/compile-pass/visibility/pub_in.rs":"e95312ff60966d42ec4bc00225507895a9b8ec24056ce6a9edd9145be35d730f","tests/compile.rs":"f27c67a7dd183ca30efea1b6e0880e3469a6dd63b92b1fd711c082df182c9eec"},"package":"bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/Cargo.toml temporalio-1.3.0/vendor/bitflags-1.3.2/Cargo.toml --- temporalio-1.3.0/vendor/bitflags-1.3.2/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,58 @@ +# 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 believe there's an error in this file please file an +# issue against the rust-lang/cargo repository. If you're +# editing this file be aware that the upstream Cargo.toml +# will likely look very different (and much more reasonable) + +[package] +edition = "2018" +name = "bitflags" +version = "1.3.2" +authors = ["The Rust Project Developers"] +exclude = ["bors.toml"] +description = "A macro to generate structures which behave like bitflags.\n" +homepage = "https://github.com/bitflags/bitflags" +documentation = "https://docs.rs/bitflags" +readme = "README.md" +keywords = ["bit", "bitmask", "bitflags", "flags"] +categories = ["no-std"] +license = "MIT/Apache-2.0" +repository = "https://github.com/bitflags/bitflags" +[package.metadata.docs.rs] +features = ["example_generated"] +[dependencies.compiler_builtins] +version = "0.1.2" +optional = true + +[dependencies.core] +version = "1.0.0" +optional = true +package = "rustc-std-workspace-core" +[dev-dependencies.rustversion] +version = "1.0" + +[dev-dependencies.serde] +version = "1.0" + +[dev-dependencies.serde_derive] +version = "1.0" + +[dev-dependencies.serde_json] +version = "1.0" + +[dev-dependencies.trybuild] +version = "1.0" + +[dev-dependencies.walkdir] +version = "2.3" + +[features] +default = [] +example_generated = [] +rustc-dep-of-std = ["core", "compiler_builtins"] diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/CHANGELOG.md temporalio-1.3.0/vendor/bitflags-1.3.2/CHANGELOG.md --- temporalio-1.3.0/vendor/bitflags-1.3.2/CHANGELOG.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,206 @@ +# 1.3.2 + +- Allow `non_snake_case` in generated flags types ([#256]) + +[#252]: https://github.com/bitflags/bitflags/pull/256 + +# 1.3.1 + +- Revert unconditional `#[repr(transparent)]` ([#252]) + +[#252]: https://github.com/bitflags/bitflags/pull/252 + +# 1.3.0 (yanked) + +- Add `#[repr(transparent)]` ([#187]) + +- End `empty` doc comment with full stop ([#202]) + +- Fix typo in crate root docs ([#206]) + +- Document from_bits_unchecked unsafety ([#207]) + +- Let `is_all` ignore extra bits ([#211]) + +- Allows empty flag definition ([#225]) + +- Making crate accessible from std ([#227]) + +- Make `from_bits` a const fn ([#229]) + +- Allow multiple bitflags structs in one macro invocation ([#235]) + +- Add named functions to perform set operations ([#244]) + +- Fix typos in method docs ([#245]) + +- Modernization of the `bitflags` macro to take advantage of newer features and 2018 idioms ([#246]) + +- Fix regression (in an unreleased feature) and simplify tests ([#247]) + +- Use `Self` and fix bug when overriding `stringify!` ([#249]) + +[#187]: https://github.com/bitflags/bitflags/pull/187 +[#202]: https://github.com/bitflags/bitflags/pull/202 +[#206]: https://github.com/bitflags/bitflags/pull/206 +[#207]: https://github.com/bitflags/bitflags/pull/207 +[#211]: https://github.com/bitflags/bitflags/pull/211 +[#225]: https://github.com/bitflags/bitflags/pull/225 +[#227]: https://github.com/bitflags/bitflags/pull/227 +[#229]: https://github.com/bitflags/bitflags/pull/229 +[#235]: https://github.com/bitflags/bitflags/pull/235 +[#244]: https://github.com/bitflags/bitflags/pull/244 +[#245]: https://github.com/bitflags/bitflags/pull/245 +[#246]: https://github.com/bitflags/bitflags/pull/246 +[#247]: https://github.com/bitflags/bitflags/pull/247 +[#249]: https://github.com/bitflags/bitflags/pull/249 + +# 1.2.1 + +- Remove extraneous `#[inline]` attributes ([#194]) + +[#194]: https://github.com/bitflags/bitflags/pull/194 + +# 1.2.0 + +- Fix typo: {Lower, Upper}Exp - {Lower, Upper}Hex ([#183]) + +- Add support for "unknown" bits ([#188]) + +[#183]: https://github.com/rust-lang-nursery/bitflags/pull/183 +[#188]: https://github.com/rust-lang-nursery/bitflags/pull/188 + +# 1.1.0 + +This is a re-release of `1.0.5`, which was yanked due to a bug in the RLS. + +# 1.0.5 + +- Use compiletest_rs flags supported by stable toolchain ([#171]) + +- Put the user provided attributes first ([#173]) + +- Make bitflags methods `const` on newer compilers ([#175]) + +[#171]: https://github.com/rust-lang-nursery/bitflags/pull/171 +[#173]: https://github.com/rust-lang-nursery/bitflags/pull/173 +[#175]: https://github.com/rust-lang-nursery/bitflags/pull/175 + +# 1.0.4 + +- Support Rust 2018 style macro imports ([#165]) + + ```rust + use bitflags::bitflags; + ``` + +[#165]: https://github.com/rust-lang-nursery/bitflags/pull/165 + +# 1.0.3 + +- Improve zero value flag handling and documentation ([#157]) + +[#157]: https://github.com/rust-lang-nursery/bitflags/pull/157 + +# 1.0.2 + +- 30% improvement in compile time of bitflags crate ([#156]) + +- Documentation improvements ([#153]) + +- Implementation cleanup ([#149]) + +[#156]: https://github.com/rust-lang-nursery/bitflags/pull/156 +[#153]: https://github.com/rust-lang-nursery/bitflags/pull/153 +[#149]: https://github.com/rust-lang-nursery/bitflags/pull/149 + +# 1.0.1 +- Add support for `pub(restricted)` specifier on the bitflags struct ([#135]) +- Optimize performance of `all()` when called from a separate crate ([#136]) + +[#135]: https://github.com/rust-lang-nursery/bitflags/pull/135 +[#136]: https://github.com/rust-lang-nursery/bitflags/pull/136 + +# 1.0.0 +- **[breaking change]** Macro now generates [associated constants](https://doc.rust-lang.org/reference/items.html#associated-constants) ([#24]) + +- **[breaking change]** Minimum supported version is Rust **1.20**, due to usage of associated constants + +- After being broken in 0.9, the `#[deprecated]` attribute is now supported again ([#112]) + +- Other improvements to unit tests and documentation ([#106] and [#115]) + +[#24]: https://github.com/rust-lang-nursery/bitflags/pull/24 +[#106]: https://github.com/rust-lang-nursery/bitflags/pull/106 +[#112]: https://github.com/rust-lang-nursery/bitflags/pull/112 +[#115]: https://github.com/rust-lang-nursery/bitflags/pull/115 + +## How to update your code to use associated constants +Assuming the following structure definition: +```rust +bitflags! { + struct Something: u8 { + const FOO = 0b01, + const BAR = 0b10 + } +} +``` +In 0.9 and older you could do: +```rust +let x = FOO.bits | BAR.bits; +``` +Now you must use: +```rust +let x = Something::FOO.bits | Something::BAR.bits; +``` + +# 0.9.1 +- Fix the implementation of `Formatting` traits when other formatting traits were present in scope ([#105]) + +[#105]: https://github.com/rust-lang-nursery/bitflags/pull/105 + +# 0.9.0 +- **[breaking change]** Use struct keyword instead of flags to define bitflag types ([#84]) + +- **[breaking change]** Terminate const items with semicolons instead of commas ([#87]) + +- Implement the `Hex`, `Octal`, and `Binary` formatting traits ([#86]) + +- Printing an empty flag value with the `Debug` trait now prints "(empty)" instead of nothing ([#85]) + +- The `bitflags!` macro can now be used inside of a fn body, to define a type local to that function ([#74]) + +[#74]: https://github.com/rust-lang-nursery/bitflags/pull/74 +[#84]: https://github.com/rust-lang-nursery/bitflags/pull/84 +[#85]: https://github.com/rust-lang-nursery/bitflags/pull/85 +[#86]: https://github.com/rust-lang-nursery/bitflags/pull/86 +[#87]: https://github.com/rust-lang-nursery/bitflags/pull/87 + +# 0.8.2 +- Update feature flag used when building bitflags as a dependency of the Rust toolchain + +# 0.8.1 +- Allow bitflags to be used as a dependency of the Rust toolchain + +# 0.8.0 +- Add support for the experimental `i128` and `u128` integer types ([#57]) +- Add set method: `flags.set(SOME_FLAG, true)` or `flags.set(SOME_FLAG, false)` ([#55]) + This may break code that defines its own set method + +[#55]: https://github.com/rust-lang-nursery/bitflags/pull/55 +[#57]: https://github.com/rust-lang-nursery/bitflags/pull/57 + +# 0.7.1 +*(yanked)* + +# 0.7.0 +- Implement the Extend trait ([#49]) +- Allow definitions inside the `bitflags!` macro to refer to items imported from other modules ([#51]) + +[#49]: https://github.com/rust-lang-nursery/bitflags/pull/49 +[#51]: https://github.com/rust-lang-nursery/bitflags/pull/51 + +# 0.6.0 +- The `no_std` feature was removed as it is now the default +- The `assignment_operators` feature was remove as it is now enabled by default +- Some clippy suggestions have been applied diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/CODE_OF_CONDUCT.md temporalio-1.3.0/vendor/bitflags-1.3.2/CODE_OF_CONDUCT.md --- temporalio-1.3.0/vendor/bitflags-1.3.2/CODE_OF_CONDUCT.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/CODE_OF_CONDUCT.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,73 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +education, socio-economic status, nationality, personal appearance, race, +religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers 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, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at coc@senaite.org. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/LICENSE-APACHE temporalio-1.3.0/vendor/bitflags-1.3.2/LICENSE-APACHE --- temporalio-1.3.0/vendor/bitflags-1.3.2/LICENSE-APACHE 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/LICENSE-APACHE 2023-10-30 19:40:00.000000000 +0000 @@ -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 -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/LICENSE-MIT temporalio-1.3.0/vendor/bitflags-1.3.2/LICENSE-MIT --- temporalio-1.3.0/vendor/bitflags-1.3.2/LICENSE-MIT 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/LICENSE-MIT 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,25 @@ +Copyright (c) 2014 The Rust Project Developers + +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 -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/README.md temporalio-1.3.0/vendor/bitflags-1.3.2/README.md --- temporalio-1.3.0/vendor/bitflags-1.3.2/README.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,32 @@ +bitflags +======== + +[![Rust](https://github.com/bitflags/bitflags/workflows/Rust/badge.svg)](https://github.com/bitflags/bitflags/actions) +[![Join the chat at https://gitter.im/bitflags/Lobby](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/bitflags/Lobby?utm_source=badge&utm_medium=badge&utm_content=badge) +[![Latest version](https://img.shields.io/crates/v/bitflags.svg)](https://crates.io/crates/bitflags) +[![Documentation](https://docs.rs/bitflags/badge.svg)](https://docs.rs/bitflags) +![License](https://img.shields.io/crates/l/bitflags.svg) + +A Rust macro to generate structures which behave like a set of bitflags + +- [Documentation](https://docs.rs/bitflags) +- [Release notes](https://github.com/bitflags/bitflags/releases) + +## Usage + +Add this to your `Cargo.toml`: + +```toml +[dependencies] +bitflags = "1.3" +``` + +and this to your source code: + +```rust +use bitflags::bitflags; +``` + +## Rust Version Support + +The minimum supported Rust version is 1.46 due to use of associated constants and const functions. diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/src/example_generated.rs temporalio-1.3.0/vendor/bitflags-1.3.2/src/example_generated.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/src/example_generated.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/src/example_generated.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,14 @@ +//! This module shows an example of code generated by the macro. **IT MUST NOT BE USED OUTSIDE THIS +//! CRATE**. + +bitflags! { + /// This is the same `Flags` struct defined in the [crate level example](../index.html#example). + /// Note that this struct is just for documentation purposes only, it must not be used outside + /// this crate. + pub struct Flags: u32 { + const A = 0b00000001; + const B = 0b00000010; + const C = 0b00000100; + const ABC = Self::A.bits | Self::B.bits | Self::C.bits; + } +} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/src/lib.rs temporalio-1.3.0/vendor/bitflags-1.3.2/src/lib.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1729 @@ +// Copyright 2014 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +//! A typesafe bitmask flag generator useful for sets of C-style bitmask flags. +//! It can be used for creating typesafe wrappers around C APIs. +//! +//! The `bitflags!` macro generates `struct`s that manage a set of flags. The +//! flags should only be defined for integer types, otherwise unexpected type +//! errors may occur at compile time. +//! +//! # Example +//! +//! ``` +//! use bitflags::bitflags; +//! +//! bitflags! { +//! struct Flags: u32 { +//! const A = 0b00000001; +//! const B = 0b00000010; +//! const C = 0b00000100; +//! const ABC = Self::A.bits | Self::B.bits | Self::C.bits; +//! } +//! } +//! +//! fn main() { +//! let e1 = Flags::A | Flags::C; +//! let e2 = Flags::B | Flags::C; +//! assert_eq!((e1 | e2), Flags::ABC); // union +//! assert_eq!((e1 & e2), Flags::C); // intersection +//! assert_eq!((e1 - e2), Flags::A); // set difference +//! assert_eq!(!e2, Flags::A); // set complement +//! } +//! ``` +//! +//! See [`example_generated::Flags`](./example_generated/struct.Flags.html) for documentation of code +//! generated by the above `bitflags!` expansion. +//! +//! The generated `struct`s can also be extended with type and trait +//! implementations: +//! +//! ``` +//! use std::fmt; +//! +//! use bitflags::bitflags; +//! +//! bitflags! { +//! struct Flags: u32 { +//! const A = 0b00000001; +//! const B = 0b00000010; +//! } +//! } +//! +//! impl Flags { +//! pub fn clear(&mut self) { +//! self.bits = 0; // The `bits` field can be accessed from within the +//! // same module where the `bitflags!` macro was invoked. +//! } +//! } +//! +//! impl fmt::Display for Flags { +//! fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { +//! write!(f, "hi!") +//! } +//! } +//! +//! fn main() { +//! let mut flags = Flags::A | Flags::B; +//! flags.clear(); +//! assert!(flags.is_empty()); +//! assert_eq!(format!("{}", flags), "hi!"); +//! assert_eq!(format!("{:?}", Flags::A | Flags::B), "A | B"); +//! assert_eq!(format!("{:?}", Flags::B), "B"); +//! } +//! ``` +//! +//! # Visibility +//! +//! The generated structs and their associated flag constants are not exported +//! out of the current module by default. A definition can be exported out of +//! the current module by adding `pub` before `struct`: +//! +//! ``` +//! mod example { +//! use bitflags::bitflags; +//! +//! bitflags! { +//! pub struct Flags1: u32 { +//! const A = 0b00000001; +//! } +//! +//! # pub +//! struct Flags2: u32 { +//! const B = 0b00000010; +//! } +//! } +//! } +//! +//! fn main() { +//! let flag1 = example::Flags1::A; +//! let flag2 = example::Flags2::B; // error: const `B` is private +//! } +//! ``` +//! +//! # Attributes +//! +//! Attributes can be attached to the generated `struct`s by placing them +//! before the `struct` keyword. +//! +//! ## Representations +//! +//! It's valid to add a `#[repr(C)]` or `#[repr(transparent)]` attribute to a type +//! generated by `bitflags!`. In these cases, the type is guaranteed to be a newtype. +//! +//! ``` +//! use bitflags::bitflags; +//! +//! bitflags! { +//! #[repr(transparent)] +//! struct Flags: u32 { +//! const A = 0b00000001; +//! const B = 0b00000010; +//! const C = 0b00000100; +//! } +//! } +//! ``` +//! +//! # Trait implementations +//! +//! The `Copy`, `Clone`, `PartialEq`, `Eq`, `PartialOrd`, `Ord` and `Hash` +//! traits are automatically derived for the `struct`s using the `derive` attribute. +//! Additional traits can be derived by providing an explicit `derive` +//! attribute on `struct`. +//! +//! The `Extend` and `FromIterator` traits are implemented for the `struct`s, +//! too: `Extend` adds the union of the instances of the `struct` iterated over, +//! while `FromIterator` calculates the union. +//! +//! The `Binary`, `Debug`, `LowerHex`, `Octal` and `UpperHex` traits are also +//! implemented by displaying the bits value of the internal struct. +//! +//! ## Operators +//! +//! The following operator traits are implemented for the generated `struct`s: +//! +//! - `BitOr` and `BitOrAssign`: union +//! - `BitAnd` and `BitAndAssign`: intersection +//! - `BitXor` and `BitXorAssign`: toggle +//! - `Sub` and `SubAssign`: set difference +//! - `Not`: set complement +//! +//! # Methods +//! +//! The following methods are defined for the generated `struct`s: +//! +//! - `empty`: an empty set of flags +//! - `all`: the set of all defined flags +//! - `bits`: the raw value of the flags currently stored +//! - `from_bits`: convert from underlying bit representation, unless that +//! representation contains bits that do not correspond to a +//! defined flag +//! - `from_bits_truncate`: convert from underlying bit representation, dropping +//! any bits that do not correspond to defined flags +//! - `from_bits_unchecked`: convert from underlying bit representation, keeping +//! all bits (even those not corresponding to defined +//! flags) +//! - `is_empty`: `true` if no flags are currently stored +//! - `is_all`: `true` if currently set flags exactly equal all defined flags +//! - `intersects`: `true` if there are flags common to both `self` and `other` +//! - `contains`: `true` if all of the flags in `other` are contained within `self` +//! - `insert`: inserts the specified flags in-place +//! - `remove`: removes the specified flags in-place +//! - `toggle`: the specified flags will be inserted if not present, and removed +//! if they are. +//! - `set`: inserts or removes the specified flags depending on the passed value +//! - `intersection`: returns a new set of flags, containing only the flags present +//! in both `self` and `other` (the argument to the function). +//! - `union`: returns a new set of flags, containing any flags present in +//! either `self` or `other` (the argument to the function). +//! - `difference`: returns a new set of flags, containing all flags present in +//! `self` without any of the flags present in `other` (the +//! argument to the function). +//! - `symmetric_difference`: returns a new set of flags, containing all flags +//! present in either `self` or `other` (the argument +//! to the function), but not both. +//! - `complement`: returns a new set of flags, containing all flags which are +//! not set in `self`, but which are allowed for this type. +//! +//! ## Default +//! +//! The `Default` trait is not automatically implemented for the generated structs. +//! +//! If your default value is equal to `0` (which is the same value as calling `empty()` +//! on the generated struct), you can simply derive `Default`: +//! +//! ``` +//! use bitflags::bitflags; +//! +//! bitflags! { +//! // Results in default value with bits: 0 +//! #[derive(Default)] +//! struct Flags: u32 { +//! const A = 0b00000001; +//! const B = 0b00000010; +//! const C = 0b00000100; +//! } +//! } +//! +//! fn main() { +//! let derived_default: Flags = Default::default(); +//! assert_eq!(derived_default.bits(), 0); +//! } +//! ``` +//! +//! If your default value is not equal to `0` you need to implement `Default` yourself: +//! +//! ``` +//! use bitflags::bitflags; +//! +//! bitflags! { +//! struct Flags: u32 { +//! const A = 0b00000001; +//! const B = 0b00000010; +//! const C = 0b00000100; +//! } +//! } +//! +//! // explicit `Default` implementation +//! impl Default for Flags { +//! fn default() -> Flags { +//! Flags::A | Flags::C +//! } +//! } +//! +//! fn main() { +//! let implemented_default: Flags = Default::default(); +//! assert_eq!(implemented_default, (Flags::A | Flags::C)); +//! } +//! ``` +//! +//! # Zero Flags +//! +//! Flags with a value equal to zero will have some strange behavior that one should be aware of. +//! +//! ``` +//! use bitflags::bitflags; +//! +//! bitflags! { +//! struct Flags: u32 { +//! const NONE = 0b00000000; +//! const SOME = 0b00000001; +//! } +//! } +//! +//! fn main() { +//! let empty = Flags::empty(); +//! let none = Flags::NONE; +//! let some = Flags::SOME; +//! +//! // Zero flags are treated as always present +//! assert!(empty.contains(Flags::NONE)); +//! assert!(none.contains(Flags::NONE)); +//! assert!(some.contains(Flags::NONE)); +//! +//! // Zero flags will be ignored when testing for emptiness +//! assert!(none.is_empty()); +//! } +//! ``` +//! +//! Users should generally avoid defining a flag with a value of zero. + +#![cfg_attr(not(test), no_std)] +#![doc(html_root_url = "https://docs.rs/bitflags/1.3.2")] + +#[doc(hidden)] +pub extern crate core as _core; + +/// The macro used to generate the flag structures. +/// +/// See the [crate level docs](../bitflags/index.html) for complete documentation. +/// +/// # Example +/// +/// ``` +/// use bitflags::bitflags; +/// +/// bitflags! { +/// struct Flags: u32 { +/// const A = 0b00000001; +/// const B = 0b00000010; +/// const C = 0b00000100; +/// const ABC = Self::A.bits | Self::B.bits | Self::C.bits; +/// } +/// } +/// +/// fn main() { +/// let e1 = Flags::A | Flags::C; +/// let e2 = Flags::B | Flags::C; +/// assert_eq!((e1 | e2), Flags::ABC); // union +/// assert_eq!((e1 & e2), Flags::C); // intersection +/// assert_eq!((e1 - e2), Flags::A); // set difference +/// assert_eq!(!e2, Flags::A); // set complement +/// } +/// ``` +/// +/// The generated `struct`s can also be extended with type and trait +/// implementations: +/// +/// ``` +/// use std::fmt; +/// +/// use bitflags::bitflags; +/// +/// bitflags! { +/// struct Flags: u32 { +/// const A = 0b00000001; +/// const B = 0b00000010; +/// } +/// } +/// +/// impl Flags { +/// pub fn clear(&mut self) { +/// self.bits = 0; // The `bits` field can be accessed from within the +/// // same module where the `bitflags!` macro was invoked. +/// } +/// } +/// +/// impl fmt::Display for Flags { +/// fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { +/// write!(f, "hi!") +/// } +/// } +/// +/// fn main() { +/// let mut flags = Flags::A | Flags::B; +/// flags.clear(); +/// assert!(flags.is_empty()); +/// assert_eq!(format!("{}", flags), "hi!"); +/// assert_eq!(format!("{:?}", Flags::A | Flags::B), "A | B"); +/// assert_eq!(format!("{:?}", Flags::B), "B"); +/// } +/// ``` +#[macro_export(local_inner_macros)] +macro_rules! bitflags { + ( + $(#[$outer:meta])* + $vis:vis struct $BitFlags:ident: $T:ty { + $( + $(#[$inner:ident $($args:tt)*])* + const $Flag:ident = $value:expr; + )* + } + + $($t:tt)* + ) => { + $(#[$outer])* + #[derive(Copy, PartialEq, Eq, Clone, PartialOrd, Ord, Hash)] + $vis struct $BitFlags { + bits: $T, + } + + __impl_bitflags! { + $BitFlags: $T { + $( + $(#[$inner $($args)*])* + $Flag = $value; + )* + } + } + + bitflags! { + $($t)* + } + }; + () => {}; +} + +// A helper macro to implement the `all` function. +#[macro_export(local_inner_macros)] +#[doc(hidden)] +macro_rules! __impl_all_bitflags { + ( + $BitFlags:ident: $T:ty { + $( + $(#[$attr:ident $($args:tt)*])* + $Flag:ident = $value:expr; + )+ + } + ) => { + // See `Debug::fmt` for why this approach is taken. + #[allow(non_snake_case)] + trait __BitFlags { + $( + const $Flag: $T = 0; + )+ + } + #[allow(non_snake_case)] + impl __BitFlags for $BitFlags { + $( + __impl_bitflags! { + #[allow(deprecated)] + $(? #[$attr $($args)*])* + const $Flag: $T = Self::$Flag.bits; + } + )+ + } + Self { bits: $(::$Flag)|+ } + }; + ( + $BitFlags:ident: $T:ty { } + ) => { + Self { bits: 0 } + }; +} + +#[macro_export(local_inner_macros)] +#[doc(hidden)] +macro_rules! __impl_bitflags { + ( + $BitFlags:ident: $T:ty { + $( + $(#[$attr:ident $($args:tt)*])* + $Flag:ident = $value:expr; + )* + } + ) => { + impl $crate::_core::fmt::Debug for $BitFlags { + fn fmt(&self, f: &mut $crate::_core::fmt::Formatter) -> $crate::_core::fmt::Result { + // This convoluted approach is to handle #[cfg]-based flag + // omission correctly. For example it needs to support: + // + // #[cfg(unix)] const A: Flag = /* ... */; + // #[cfg(windows)] const B: Flag = /* ... */; + + // Unconditionally define a check for every flag, even disabled + // ones. + #[allow(non_snake_case)] + trait __BitFlags { + $( + #[inline] + fn $Flag(&self) -> bool { false } + )* + } + + // Conditionally override the check for just those flags that + // are not #[cfg]ed away. + #[allow(non_snake_case)] + impl __BitFlags for $BitFlags { + $( + __impl_bitflags! { + #[allow(deprecated)] + #[inline] + $(? #[$attr $($args)*])* + fn $Flag(&self) -> bool { + if Self::$Flag.bits == 0 && self.bits != 0 { + false + } else { + self.bits & Self::$Flag.bits == Self::$Flag.bits + } + } + } + )* + } + + let mut first = true; + $( + if ::$Flag(self) { + if !first { + f.write_str(" | ")?; + } + first = false; + f.write_str($crate::_core::stringify!($Flag))?; + } + )* + let extra_bits = self.bits & !Self::all().bits(); + if extra_bits != 0 { + if !first { + f.write_str(" | ")?; + } + first = false; + f.write_str("0x")?; + $crate::_core::fmt::LowerHex::fmt(&extra_bits, f)?; + } + if first { + f.write_str("(empty)")?; + } + Ok(()) + } + } + impl $crate::_core::fmt::Binary for $BitFlags { + fn fmt(&self, f: &mut $crate::_core::fmt::Formatter) -> $crate::_core::fmt::Result { + $crate::_core::fmt::Binary::fmt(&self.bits, f) + } + } + impl $crate::_core::fmt::Octal for $BitFlags { + fn fmt(&self, f: &mut $crate::_core::fmt::Formatter) -> $crate::_core::fmt::Result { + $crate::_core::fmt::Octal::fmt(&self.bits, f) + } + } + impl $crate::_core::fmt::LowerHex for $BitFlags { + fn fmt(&self, f: &mut $crate::_core::fmt::Formatter) -> $crate::_core::fmt::Result { + $crate::_core::fmt::LowerHex::fmt(&self.bits, f) + } + } + impl $crate::_core::fmt::UpperHex for $BitFlags { + fn fmt(&self, f: &mut $crate::_core::fmt::Formatter) -> $crate::_core::fmt::Result { + $crate::_core::fmt::UpperHex::fmt(&self.bits, f) + } + } + + #[allow(dead_code)] + impl $BitFlags { + $( + $(#[$attr $($args)*])* + pub const $Flag: Self = Self { bits: $value }; + )* + + /// Returns an empty set of flags. + #[inline] + pub const fn empty() -> Self { + Self { bits: 0 } + } + + /// Returns the set containing all flags. + #[inline] + pub const fn all() -> Self { + __impl_all_bitflags! { + $BitFlags: $T { + $( + $(#[$attr $($args)*])* + $Flag = $value; + )* + } + } + } + + /// Returns the raw value of the flags currently stored. + #[inline] + pub const fn bits(&self) -> $T { + self.bits + } + + /// Convert from underlying bit representation, unless that + /// representation contains bits that do not correspond to a flag. + #[inline] + pub const fn from_bits(bits: $T) -> $crate::_core::option::Option { + if (bits & !Self::all().bits()) == 0 { + $crate::_core::option::Option::Some(Self { bits }) + } else { + $crate::_core::option::Option::None + } + } + + /// Convert from underlying bit representation, dropping any bits + /// that do not correspond to flags. + #[inline] + pub const fn from_bits_truncate(bits: $T) -> Self { + Self { bits: bits & Self::all().bits } + } + + /// Convert from underlying bit representation, preserving all + /// bits (even those not corresponding to a defined flag). + /// + /// # Safety + /// + /// The caller of the `bitflags!` macro can chose to allow or + /// disallow extra bits for their bitflags type. + /// + /// The caller of `from_bits_unchecked()` has to ensure that + /// all bits correspond to a defined flag or that extra bits + /// are valid for this bitflags type. + #[inline] + pub const unsafe fn from_bits_unchecked(bits: $T) -> Self { + Self { bits } + } + + /// Returns `true` if no flags are currently stored. + #[inline] + pub const fn is_empty(&self) -> bool { + self.bits() == Self::empty().bits() + } + + /// Returns `true` if all flags are currently set. + #[inline] + pub const fn is_all(&self) -> bool { + Self::all().bits | self.bits == self.bits + } + + /// Returns `true` if there are flags common to both `self` and `other`. + #[inline] + pub const fn intersects(&self, other: Self) -> bool { + !(Self { bits: self.bits & other.bits}).is_empty() + } + + /// Returns `true` if all of the flags in `other` are contained within `self`. + #[inline] + pub const fn contains(&self, other: Self) -> bool { + (self.bits & other.bits) == other.bits + } + + /// Inserts the specified flags in-place. + #[inline] + pub fn insert(&mut self, other: Self) { + self.bits |= other.bits; + } + + /// Removes the specified flags in-place. + #[inline] + pub fn remove(&mut self, other: Self) { + self.bits &= !other.bits; + } + + /// Toggles the specified flags in-place. + #[inline] + pub fn toggle(&mut self, other: Self) { + self.bits ^= other.bits; + } + + /// Inserts or removes the specified flags depending on the passed value. + #[inline] + pub fn set(&mut self, other: Self, value: bool) { + if value { + self.insert(other); + } else { + self.remove(other); + } + } + + /// Returns the intersection between the flags in `self` and + /// `other`. + /// + /// Specifically, the returned set contains only the flags which are + /// present in *both* `self` *and* `other`. + /// + /// This is equivalent to using the `&` operator (e.g. + /// [`ops::BitAnd`]), as in `flags & other`. + /// + /// [`ops::BitAnd`]: https://doc.rust-lang.org/std/ops/trait.BitAnd.html + #[inline] + #[must_use] + pub const fn intersection(self, other: Self) -> Self { + Self { bits: self.bits & other.bits } + } + + /// Returns the union of between the flags in `self` and `other`. + /// + /// Specifically, the returned set contains all flags which are + /// present in *either* `self` *or* `other`, including any which are + /// present in both (see [`Self::symmetric_difference`] if that + /// is undesirable). + /// + /// This is equivalent to using the `|` operator (e.g. + /// [`ops::BitOr`]), as in `flags | other`. + /// + /// [`ops::BitOr`]: https://doc.rust-lang.org/std/ops/trait.BitOr.html + #[inline] + #[must_use] + pub const fn union(self, other: Self) -> Self { + Self { bits: self.bits | other.bits } + } + + /// Returns the difference between the flags in `self` and `other`. + /// + /// Specifically, the returned set contains all flags present in + /// `self`, except for the ones present in `other`. + /// + /// It is also conceptually equivalent to the "bit-clear" operation: + /// `flags & !other` (and this syntax is also supported). + /// + /// This is equivalent to using the `-` operator (e.g. + /// [`ops::Sub`]), as in `flags - other`. + /// + /// [`ops::Sub`]: https://doc.rust-lang.org/std/ops/trait.Sub.html + #[inline] + #[must_use] + pub const fn difference(self, other: Self) -> Self { + Self { bits: self.bits & !other.bits } + } + + /// Returns the [symmetric difference][sym-diff] between the flags + /// in `self` and `other`. + /// + /// Specifically, the returned set contains the flags present which + /// are present in `self` or `other`, but that are not present in + /// both. Equivalently, it contains the flags present in *exactly + /// one* of the sets `self` and `other`. + /// + /// This is equivalent to using the `^` operator (e.g. + /// [`ops::BitXor`]), as in `flags ^ other`. + /// + /// [sym-diff]: https://en.wikipedia.org/wiki/Symmetric_difference + /// [`ops::BitXor`]: https://doc.rust-lang.org/std/ops/trait.BitXor.html + #[inline] + #[must_use] + pub const fn symmetric_difference(self, other: Self) -> Self { + Self { bits: self.bits ^ other.bits } + } + + /// Returns the complement of this set of flags. + /// + /// Specifically, the returned set contains all the flags which are + /// not set in `self`, but which are allowed for this type. + /// + /// Alternatively, it can be thought of as the set difference + /// between [`Self::all()`] and `self` (e.g. `Self::all() - self`) + /// + /// This is equivalent to using the `!` operator (e.g. + /// [`ops::Not`]), as in `!flags`. + /// + /// [`Self::all()`]: Self::all + /// [`ops::Not`]: https://doc.rust-lang.org/std/ops/trait.Not.html + #[inline] + #[must_use] + pub const fn complement(self) -> Self { + Self::from_bits_truncate(!self.bits) + } + + } + + impl $crate::_core::ops::BitOr for $BitFlags { + type Output = Self; + + /// Returns the union of the two sets of flags. + #[inline] + fn bitor(self, other: $BitFlags) -> Self { + Self { bits: self.bits | other.bits } + } + } + + impl $crate::_core::ops::BitOrAssign for $BitFlags { + /// Adds the set of flags. + #[inline] + fn bitor_assign(&mut self, other: Self) { + self.bits |= other.bits; + } + } + + impl $crate::_core::ops::BitXor for $BitFlags { + type Output = Self; + + /// Returns the left flags, but with all the right flags toggled. + #[inline] + fn bitxor(self, other: Self) -> Self { + Self { bits: self.bits ^ other.bits } + } + } + + impl $crate::_core::ops::BitXorAssign for $BitFlags { + /// Toggles the set of flags. + #[inline] + fn bitxor_assign(&mut self, other: Self) { + self.bits ^= other.bits; + } + } + + impl $crate::_core::ops::BitAnd for $BitFlags { + type Output = Self; + + /// Returns the intersection between the two sets of flags. + #[inline] + fn bitand(self, other: Self) -> Self { + Self { bits: self.bits & other.bits } + } + } + + impl $crate::_core::ops::BitAndAssign for $BitFlags { + /// Disables all flags disabled in the set. + #[inline] + fn bitand_assign(&mut self, other: Self) { + self.bits &= other.bits; + } + } + + impl $crate::_core::ops::Sub for $BitFlags { + type Output = Self; + + /// Returns the set difference of the two sets of flags. + #[inline] + fn sub(self, other: Self) -> Self { + Self { bits: self.bits & !other.bits } + } + } + + impl $crate::_core::ops::SubAssign for $BitFlags { + /// Disables all flags enabled in the set. + #[inline] + fn sub_assign(&mut self, other: Self) { + self.bits &= !other.bits; + } + } + + impl $crate::_core::ops::Not for $BitFlags { + type Output = Self; + + /// Returns the complement of this set of flags. + #[inline] + fn not(self) -> Self { + Self { bits: !self.bits } & Self::all() + } + } + + impl $crate::_core::iter::Extend<$BitFlags> for $BitFlags { + fn extend>(&mut self, iterator: T) { + for item in iterator { + self.insert(item) + } + } + } + + impl $crate::_core::iter::FromIterator<$BitFlags> for $BitFlags { + fn from_iter>(iterator: T) -> Self { + let mut result = Self::empty(); + result.extend(iterator); + result + } + } + }; + + // Every attribute that the user writes on a const is applied to the + // corresponding const that we generate, but within the implementation of + // Debug and all() we want to ignore everything but #[cfg] attributes. In + // particular, including a #[deprecated] attribute on those items would fail + // to compile. + // https://github.com/bitflags/bitflags/issues/109 + // + // Input: + // + // ? #[cfg(feature = "advanced")] + // ? #[deprecated(note = "Use something else.")] + // ? #[doc = r"High quality documentation."] + // fn f() -> i32 { /* ... */ } + // + // Output: + // + // #[cfg(feature = "advanced")] + // fn f() -> i32 { /* ... */ } + ( + $(#[$filtered:meta])* + ? #[cfg $($cfgargs:tt)*] + $(? #[$rest:ident $($restargs:tt)*])* + fn $($item:tt)* + ) => { + __impl_bitflags! { + $(#[$filtered])* + #[cfg $($cfgargs)*] + $(? #[$rest $($restargs)*])* + fn $($item)* + } + }; + ( + $(#[$filtered:meta])* + // $next != `cfg` + ? #[$next:ident $($nextargs:tt)*] + $(? #[$rest:ident $($restargs:tt)*])* + fn $($item:tt)* + ) => { + __impl_bitflags! { + $(#[$filtered])* + // $next filtered out + $(? #[$rest $($restargs)*])* + fn $($item)* + } + }; + ( + $(#[$filtered:meta])* + fn $($item:tt)* + ) => { + $(#[$filtered])* + fn $($item)* + }; + + // Every attribute that the user writes on a const is applied to the + // corresponding const that we generate, but within the implementation of + // Debug and all() we want to ignore everything but #[cfg] attributes. In + // particular, including a #[deprecated] attribute on those items would fail + // to compile. + // https://github.com/bitflags/bitflags/issues/109 + // + // const version + // + // Input: + // + // ? #[cfg(feature = "advanced")] + // ? #[deprecated(note = "Use something else.")] + // ? #[doc = r"High quality documentation."] + // const f: i32 { /* ... */ } + // + // Output: + // + // #[cfg(feature = "advanced")] + // const f: i32 { /* ... */ } + ( + $(#[$filtered:meta])* + ? #[cfg $($cfgargs:tt)*] + $(? #[$rest:ident $($restargs:tt)*])* + const $($item:tt)* + ) => { + __impl_bitflags! { + $(#[$filtered])* + #[cfg $($cfgargs)*] + $(? #[$rest $($restargs)*])* + const $($item)* + } + }; + ( + $(#[$filtered:meta])* + // $next != `cfg` + ? #[$next:ident $($nextargs:tt)*] + $(? #[$rest:ident $($restargs:tt)*])* + const $($item:tt)* + ) => { + __impl_bitflags! { + $(#[$filtered])* + // $next filtered out + $(? #[$rest $($restargs)*])* + const $($item)* + } + }; + ( + $(#[$filtered:meta])* + const $($item:tt)* + ) => { + $(#[$filtered])* + const $($item)* + }; +} + +#[cfg(feature = "example_generated")] +pub mod example_generated; + +#[cfg(test)] +mod tests { + use std::collections::hash_map::DefaultHasher; + use std::hash::{Hash, Hasher}; + + bitflags! { + #[doc = "> The first principle is that you must not fool yourself — and"] + #[doc = "> you are the easiest person to fool."] + #[doc = "> "] + #[doc = "> - Richard Feynman"] + #[derive(Default)] + struct Flags: u32 { + const A = 0b00000001; + #[doc = " macros are way better at generating code than trans is"] + const B = 0b00000010; + const C = 0b00000100; + #[doc = "* cmr bed"] + #[doc = "* strcat table"] + #[doc = " wait what?"] + const ABC = Self::A.bits | Self::B.bits | Self::C.bits; + } + + struct _CfgFlags: u32 { + #[cfg(unix)] + const _CFG_A = 0b01; + #[cfg(windows)] + const _CFG_B = 0b01; + #[cfg(unix)] + const _CFG_C = Self::_CFG_A.bits | 0b10; + } + + struct AnotherSetOfFlags: i8 { + const ANOTHER_FLAG = -1_i8; + } + + struct LongFlags: u32 { + const LONG_A = 0b1111111111111111; + } + } + + bitflags! { + struct EmptyFlags: u32 { + } + } + + #[test] + fn test_bits() { + assert_eq!(Flags::empty().bits(), 0b00000000); + assert_eq!(Flags::A.bits(), 0b00000001); + assert_eq!(Flags::ABC.bits(), 0b00000111); + + assert_eq!(AnotherSetOfFlags::empty().bits(), 0b00); + assert_eq!(AnotherSetOfFlags::ANOTHER_FLAG.bits(), !0_i8); + + assert_eq!(EmptyFlags::empty().bits(), 0b00000000); + } + + #[test] + fn test_from_bits() { + assert_eq!(Flags::from_bits(0), Some(Flags::empty())); + assert_eq!(Flags::from_bits(0b1), Some(Flags::A)); + assert_eq!(Flags::from_bits(0b10), Some(Flags::B)); + assert_eq!(Flags::from_bits(0b11), Some(Flags::A | Flags::B)); + assert_eq!(Flags::from_bits(0b1000), None); + + assert_eq!( + AnotherSetOfFlags::from_bits(!0_i8), + Some(AnotherSetOfFlags::ANOTHER_FLAG) + ); + + assert_eq!(EmptyFlags::from_bits(0), Some(EmptyFlags::empty())); + assert_eq!(EmptyFlags::from_bits(0b1), None); + } + + #[test] + fn test_from_bits_truncate() { + assert_eq!(Flags::from_bits_truncate(0), Flags::empty()); + assert_eq!(Flags::from_bits_truncate(0b1), Flags::A); + assert_eq!(Flags::from_bits_truncate(0b10), Flags::B); + assert_eq!(Flags::from_bits_truncate(0b11), (Flags::A | Flags::B)); + assert_eq!(Flags::from_bits_truncate(0b1000), Flags::empty()); + assert_eq!(Flags::from_bits_truncate(0b1001), Flags::A); + + assert_eq!( + AnotherSetOfFlags::from_bits_truncate(0_i8), + AnotherSetOfFlags::empty() + ); + + assert_eq!(EmptyFlags::from_bits_truncate(0), EmptyFlags::empty()); + assert_eq!(EmptyFlags::from_bits_truncate(0b1), EmptyFlags::empty()); + } + + #[test] + fn test_from_bits_unchecked() { + let extra = unsafe { Flags::from_bits_unchecked(0b1000) }; + assert_eq!(unsafe { Flags::from_bits_unchecked(0) }, Flags::empty()); + assert_eq!(unsafe { Flags::from_bits_unchecked(0b1) }, Flags::A); + assert_eq!(unsafe { Flags::from_bits_unchecked(0b10) }, Flags::B); + + assert_eq!( + unsafe { Flags::from_bits_unchecked(0b11) }, + (Flags::A | Flags::B) + ); + assert_eq!( + unsafe { Flags::from_bits_unchecked(0b1000) }, + (extra | Flags::empty()) + ); + assert_eq!( + unsafe { Flags::from_bits_unchecked(0b1001) }, + (extra | Flags::A) + ); + + let extra = unsafe { EmptyFlags::from_bits_unchecked(0b1000) }; + assert_eq!( + unsafe { EmptyFlags::from_bits_unchecked(0b1000) }, + (extra | EmptyFlags::empty()) + ); + } + + #[test] + fn test_is_empty() { + assert!(Flags::empty().is_empty()); + assert!(!Flags::A.is_empty()); + assert!(!Flags::ABC.is_empty()); + + assert!(!AnotherSetOfFlags::ANOTHER_FLAG.is_empty()); + + assert!(EmptyFlags::empty().is_empty()); + assert!(EmptyFlags::all().is_empty()); + } + + #[test] + fn test_is_all() { + assert!(Flags::all().is_all()); + assert!(!Flags::A.is_all()); + assert!(Flags::ABC.is_all()); + + let extra = unsafe { Flags::from_bits_unchecked(0b1000) }; + assert!(!extra.is_all()); + assert!(!(Flags::A | extra).is_all()); + assert!((Flags::ABC | extra).is_all()); + + assert!(AnotherSetOfFlags::ANOTHER_FLAG.is_all()); + + assert!(EmptyFlags::all().is_all()); + assert!(EmptyFlags::empty().is_all()); + } + + #[test] + fn test_two_empties_do_not_intersect() { + let e1 = Flags::empty(); + let e2 = Flags::empty(); + assert!(!e1.intersects(e2)); + + assert!(AnotherSetOfFlags::ANOTHER_FLAG.intersects(AnotherSetOfFlags::ANOTHER_FLAG)); + } + + #[test] + fn test_empty_does_not_intersect_with_full() { + let e1 = Flags::empty(); + let e2 = Flags::ABC; + assert!(!e1.intersects(e2)); + } + + #[test] + fn test_disjoint_intersects() { + let e1 = Flags::A; + let e2 = Flags::B; + assert!(!e1.intersects(e2)); + } + + #[test] + fn test_overlapping_intersects() { + let e1 = Flags::A; + let e2 = Flags::A | Flags::B; + assert!(e1.intersects(e2)); + } + + #[test] + fn test_contains() { + let e1 = Flags::A; + let e2 = Flags::A | Flags::B; + assert!(!e1.contains(e2)); + assert!(e2.contains(e1)); + assert!(Flags::ABC.contains(e2)); + + assert!(AnotherSetOfFlags::ANOTHER_FLAG.contains(AnotherSetOfFlags::ANOTHER_FLAG)); + + assert!(EmptyFlags::empty().contains(EmptyFlags::empty())); + } + + #[test] + fn test_insert() { + let mut e1 = Flags::A; + let e2 = Flags::A | Flags::B; + e1.insert(e2); + assert_eq!(e1, e2); + + let mut e3 = AnotherSetOfFlags::empty(); + e3.insert(AnotherSetOfFlags::ANOTHER_FLAG); + assert_eq!(e3, AnotherSetOfFlags::ANOTHER_FLAG); + } + + #[test] + fn test_remove() { + let mut e1 = Flags::A | Flags::B; + let e2 = Flags::A | Flags::C; + e1.remove(e2); + assert_eq!(e1, Flags::B); + + let mut e3 = AnotherSetOfFlags::ANOTHER_FLAG; + e3.remove(AnotherSetOfFlags::ANOTHER_FLAG); + assert_eq!(e3, AnotherSetOfFlags::empty()); + } + + #[test] + fn test_operators() { + let e1 = Flags::A | Flags::C; + let e2 = Flags::B | Flags::C; + assert_eq!((e1 | e2), Flags::ABC); // union + assert_eq!((e1 & e2), Flags::C); // intersection + assert_eq!((e1 - e2), Flags::A); // set difference + assert_eq!(!e2, Flags::A); // set complement + assert_eq!(e1 ^ e2, Flags::A | Flags::B); // toggle + let mut e3 = e1; + e3.toggle(e2); + assert_eq!(e3, Flags::A | Flags::B); + + let mut m4 = AnotherSetOfFlags::empty(); + m4.toggle(AnotherSetOfFlags::empty()); + assert_eq!(m4, AnotherSetOfFlags::empty()); + } + + #[test] + fn test_operators_unchecked() { + let extra = unsafe { Flags::from_bits_unchecked(0b1000) }; + let e1 = Flags::A | Flags::C | extra; + let e2 = Flags::B | Flags::C; + assert_eq!((e1 | e2), (Flags::ABC | extra)); // union + assert_eq!((e1 & e2), Flags::C); // intersection + assert_eq!((e1 - e2), (Flags::A | extra)); // set difference + assert_eq!(!e2, Flags::A); // set complement + assert_eq!(!e1, Flags::B); // set complement + assert_eq!(e1 ^ e2, Flags::A | Flags::B | extra); // toggle + let mut e3 = e1; + e3.toggle(e2); + assert_eq!(e3, Flags::A | Flags::B | extra); + } + + #[test] + fn test_set_ops_basic() { + let ab = Flags::A.union(Flags::B); + let ac = Flags::A.union(Flags::C); + let bc = Flags::B.union(Flags::C); + assert_eq!(ab.bits, 0b011); + assert_eq!(bc.bits, 0b110); + assert_eq!(ac.bits, 0b101); + + assert_eq!(ab, Flags::B.union(Flags::A)); + assert_eq!(ac, Flags::C.union(Flags::A)); + assert_eq!(bc, Flags::C.union(Flags::B)); + + assert_eq!(ac, Flags::A | Flags::C); + assert_eq!(bc, Flags::B | Flags::C); + assert_eq!(ab.union(bc), Flags::ABC); + + assert_eq!(ac, Flags::A | Flags::C); + assert_eq!(bc, Flags::B | Flags::C); + + assert_eq!(ac.union(bc), ac | bc); + assert_eq!(ac.union(bc), Flags::ABC); + assert_eq!(bc.union(ac), Flags::ABC); + + assert_eq!(ac.intersection(bc), ac & bc); + assert_eq!(ac.intersection(bc), Flags::C); + assert_eq!(bc.intersection(ac), Flags::C); + + assert_eq!(ac.difference(bc), ac - bc); + assert_eq!(bc.difference(ac), bc - ac); + assert_eq!(ac.difference(bc), Flags::A); + assert_eq!(bc.difference(ac), Flags::B); + + assert_eq!(bc.complement(), !bc); + assert_eq!(bc.complement(), Flags::A); + assert_eq!(ac.symmetric_difference(bc), Flags::A.union(Flags::B)); + assert_eq!(bc.symmetric_difference(ac), Flags::A.union(Flags::B)); + } + + #[test] + fn test_set_ops_const() { + // These just test that these compile and don't cause use-site panics + // (would be possible if we had some sort of UB) + const INTERSECT: Flags = Flags::all().intersection(Flags::C); + const UNION: Flags = Flags::A.union(Flags::C); + const DIFFERENCE: Flags = Flags::all().difference(Flags::A); + const COMPLEMENT: Flags = Flags::C.complement(); + const SYM_DIFFERENCE: Flags = UNION.symmetric_difference(DIFFERENCE); + assert_eq!(INTERSECT, Flags::C); + assert_eq!(UNION, Flags::A | Flags::C); + assert_eq!(DIFFERENCE, Flags::all() - Flags::A); + assert_eq!(COMPLEMENT, !Flags::C); + assert_eq!(SYM_DIFFERENCE, (Flags::A | Flags::C) ^ (Flags::all() - Flags::A)); + } + + #[test] + fn test_set_ops_unchecked() { + let extra = unsafe { Flags::from_bits_unchecked(0b1000) }; + let e1 = Flags::A.union(Flags::C).union(extra); + let e2 = Flags::B.union(Flags::C); + assert_eq!(e1.bits, 0b1101); + assert_eq!(e1.union(e2), (Flags::ABC | extra)); + assert_eq!(e1.intersection(e2), Flags::C); + assert_eq!(e1.difference(e2), Flags::A | extra); + assert_eq!(e2.difference(e1), Flags::B); + assert_eq!(e2.complement(), Flags::A); + assert_eq!(e1.complement(), Flags::B); + assert_eq!(e1.symmetric_difference(e2), Flags::A | Flags::B | extra); // toggle + } + + #[test] + fn test_set_ops_exhaustive() { + // Define a flag that contains gaps to help exercise edge-cases, + // especially around "unknown" flags (e.g. ones outside of `all()` + // `from_bits_unchecked`). + // - when lhs and rhs both have different sets of unknown flags. + // - unknown flags at both ends, and in the middle + // - cases with "gaps". + bitflags! { + struct Test: u16 { + // Intentionally no `A` + const B = 0b000000010; + // Intentionally no `C` + const D = 0b000001000; + const E = 0b000010000; + const F = 0b000100000; + const G = 0b001000000; + // Intentionally no `H` + const I = 0b100000000; + } + } + let iter_test_flags = + || (0..=0b111_1111_1111).map(|bits| unsafe { Test::from_bits_unchecked(bits) }); + + for a in iter_test_flags() { + assert_eq!( + a.complement(), + Test::from_bits_truncate(!a.bits), + "wrong result: !({:?})", + a, + ); + assert_eq!(a.complement(), !a, "named != op: !({:?})", a); + for b in iter_test_flags() { + // Check that the named operations produce the expected bitwise + // values. + assert_eq!( + a.union(b).bits, + a.bits | b.bits, + "wrong result: `{:?}` | `{:?}`", + a, + b, + ); + assert_eq!( + a.intersection(b).bits, + a.bits & b.bits, + "wrong result: `{:?}` & `{:?}`", + a, + b, + ); + assert_eq!( + a.symmetric_difference(b).bits, + a.bits ^ b.bits, + "wrong result: `{:?}` ^ `{:?}`", + a, + b, + ); + assert_eq!( + a.difference(b).bits, + a.bits & !b.bits, + "wrong result: `{:?}` - `{:?}`", + a, + b, + ); + // Note: Difference is checked as both `a - b` and `b - a` + assert_eq!( + b.difference(a).bits, + b.bits & !a.bits, + "wrong result: `{:?}` - `{:?}`", + b, + a, + ); + // Check that the named set operations are equivalent to the + // bitwise equivalents + assert_eq!(a.union(b), a | b, "named != op: `{:?}` | `{:?}`", a, b,); + assert_eq!( + a.intersection(b), + a & b, + "named != op: `{:?}` & `{:?}`", + a, + b, + ); + assert_eq!( + a.symmetric_difference(b), + a ^ b, + "named != op: `{:?}` ^ `{:?}`", + a, + b, + ); + assert_eq!(a.difference(b), a - b, "named != op: `{:?}` - `{:?}`", a, b,); + // Note: Difference is checked as both `a - b` and `b - a` + assert_eq!(b.difference(a), b - a, "named != op: `{:?}` - `{:?}`", b, a,); + // Verify that the operations which should be symmetric are + // actually symmetric. + assert_eq!(a.union(b), b.union(a), "asymmetry: `{:?}` | `{:?}`", a, b,); + assert_eq!( + a.intersection(b), + b.intersection(a), + "asymmetry: `{:?}` & `{:?}`", + a, + b, + ); + assert_eq!( + a.symmetric_difference(b), + b.symmetric_difference(a), + "asymmetry: `{:?}` ^ `{:?}`", + a, + b, + ); + } + } + } + + #[test] + fn test_set() { + let mut e1 = Flags::A | Flags::C; + e1.set(Flags::B, true); + e1.set(Flags::C, false); + + assert_eq!(e1, Flags::A | Flags::B); + } + + #[test] + fn test_assignment_operators() { + let mut m1 = Flags::empty(); + let e1 = Flags::A | Flags::C; + // union + m1 |= Flags::A; + assert_eq!(m1, Flags::A); + // intersection + m1 &= e1; + assert_eq!(m1, Flags::A); + // set difference + m1 -= m1; + assert_eq!(m1, Flags::empty()); + // toggle + m1 ^= e1; + assert_eq!(m1, e1); + } + + #[test] + fn test_const_fn() { + const _M1: Flags = Flags::empty(); + + const M2: Flags = Flags::A; + assert_eq!(M2, Flags::A); + + const M3: Flags = Flags::C; + assert_eq!(M3, Flags::C); + } + + #[test] + fn test_extend() { + let mut flags; + + flags = Flags::empty(); + flags.extend([].iter().cloned()); + assert_eq!(flags, Flags::empty()); + + flags = Flags::empty(); + flags.extend([Flags::A, Flags::B].iter().cloned()); + assert_eq!(flags, Flags::A | Flags::B); + + flags = Flags::A; + flags.extend([Flags::A, Flags::B].iter().cloned()); + assert_eq!(flags, Flags::A | Flags::B); + + flags = Flags::B; + flags.extend([Flags::A, Flags::ABC].iter().cloned()); + assert_eq!(flags, Flags::ABC); + } + + #[test] + fn test_from_iterator() { + assert_eq!([].iter().cloned().collect::(), Flags::empty()); + assert_eq!( + [Flags::A, Flags::B].iter().cloned().collect::(), + Flags::A | Flags::B + ); + assert_eq!( + [Flags::A, Flags::ABC].iter().cloned().collect::(), + Flags::ABC + ); + } + + #[test] + fn test_lt() { + let mut a = Flags::empty(); + let mut b = Flags::empty(); + + assert!(!(a < b) && !(b < a)); + b = Flags::B; + assert!(a < b); + a = Flags::C; + assert!(!(a < b) && b < a); + b = Flags::C | Flags::B; + assert!(a < b); + } + + #[test] + fn test_ord() { + let mut a = Flags::empty(); + let mut b = Flags::empty(); + + assert!(a <= b && a >= b); + a = Flags::A; + assert!(a > b && a >= b); + assert!(b < a && b <= a); + b = Flags::B; + assert!(b > a && b >= a); + assert!(a < b && a <= b); + } + + fn hash(t: &T) -> u64 { + let mut s = DefaultHasher::new(); + t.hash(&mut s); + s.finish() + } + + #[test] + fn test_hash() { + let mut x = Flags::empty(); + let mut y = Flags::empty(); + assert_eq!(hash(&x), hash(&y)); + x = Flags::all(); + y = Flags::ABC; + assert_eq!(hash(&x), hash(&y)); + } + + #[test] + fn test_default() { + assert_eq!(Flags::empty(), Flags::default()); + } + + #[test] + fn test_debug() { + assert_eq!(format!("{:?}", Flags::A | Flags::B), "A | B"); + assert_eq!(format!("{:?}", Flags::empty()), "(empty)"); + assert_eq!(format!("{:?}", Flags::ABC), "A | B | C | ABC"); + let extra = unsafe { Flags::from_bits_unchecked(0xb8) }; + assert_eq!(format!("{:?}", extra), "0xb8"); + assert_eq!(format!("{:?}", Flags::A | extra), "A | 0xb8"); + + assert_eq!( + format!("{:?}", Flags::ABC | extra), + "A | B | C | ABC | 0xb8" + ); + + assert_eq!(format!("{:?}", EmptyFlags::empty()), "(empty)"); + } + + #[test] + fn test_binary() { + assert_eq!(format!("{:b}", Flags::ABC), "111"); + assert_eq!(format!("{:#b}", Flags::ABC), "0b111"); + let extra = unsafe { Flags::from_bits_unchecked(0b1010000) }; + assert_eq!(format!("{:b}", Flags::ABC | extra), "1010111"); + assert_eq!(format!("{:#b}", Flags::ABC | extra), "0b1010111"); + } + + #[test] + fn test_octal() { + assert_eq!(format!("{:o}", LongFlags::LONG_A), "177777"); + assert_eq!(format!("{:#o}", LongFlags::LONG_A), "0o177777"); + let extra = unsafe { LongFlags::from_bits_unchecked(0o5000000) }; + assert_eq!(format!("{:o}", LongFlags::LONG_A | extra), "5177777"); + assert_eq!(format!("{:#o}", LongFlags::LONG_A | extra), "0o5177777"); + } + + #[test] + fn test_lowerhex() { + assert_eq!(format!("{:x}", LongFlags::LONG_A), "ffff"); + assert_eq!(format!("{:#x}", LongFlags::LONG_A), "0xffff"); + let extra = unsafe { LongFlags::from_bits_unchecked(0xe00000) }; + assert_eq!(format!("{:x}", LongFlags::LONG_A | extra), "e0ffff"); + assert_eq!(format!("{:#x}", LongFlags::LONG_A | extra), "0xe0ffff"); + } + + #[test] + fn test_upperhex() { + assert_eq!(format!("{:X}", LongFlags::LONG_A), "FFFF"); + assert_eq!(format!("{:#X}", LongFlags::LONG_A), "0xFFFF"); + let extra = unsafe { LongFlags::from_bits_unchecked(0xe00000) }; + assert_eq!(format!("{:X}", LongFlags::LONG_A | extra), "E0FFFF"); + assert_eq!(format!("{:#X}", LongFlags::LONG_A | extra), "0xE0FFFF"); + } + + mod submodule { + bitflags! { + pub struct PublicFlags: i8 { + const X = 0; + } + + struct PrivateFlags: i8 { + const Y = 0; + } + } + + #[test] + fn test_private() { + let _ = PrivateFlags::Y; + } + } + + #[test] + fn test_public() { + let _ = submodule::PublicFlags::X; + } + + mod t1 { + mod foo { + pub type Bar = i32; + } + + bitflags! { + /// baz + struct Flags: foo::Bar { + const A = 0b00000001; + #[cfg(foo)] + const B = 0b00000010; + #[cfg(foo)] + const C = 0b00000010; + } + } + } + + #[test] + fn test_in_function() { + bitflags! { + struct Flags: u8 { + const A = 1; + #[cfg(any())] // false + const B = 2; + } + } + assert_eq!(Flags::all(), Flags::A); + assert_eq!(format!("{:?}", Flags::A), "A"); + } + + #[test] + fn test_deprecated() { + bitflags! { + pub struct TestFlags: u32 { + #[deprecated(note = "Use something else.")] + const ONE = 1; + } + } + } + + #[test] + fn test_pub_crate() { + mod module { + bitflags! { + pub (crate) struct Test: u8 { + const FOO = 1; + } + } + } + + assert_eq!(module::Test::FOO.bits(), 1); + } + + #[test] + fn test_pub_in_module() { + mod module { + mod submodule { + bitflags! { + // `pub (in super)` means only the module `module` will + // be able to access this. + pub (in super) struct Test: u8 { + const FOO = 1; + } + } + } + + mod test { + // Note: due to `pub (in super)`, + // this cannot be accessed directly by the testing code. + pub(super) fn value() -> u8 { + super::submodule::Test::FOO.bits() + } + } + + pub fn value() -> u8 { + test::value() + } + } + + assert_eq!(module::value(), 1) + } + + #[test] + fn test_zero_value_flags() { + bitflags! { + struct Flags: u32 { + const NONE = 0b0; + const SOME = 0b1; + } + } + + assert!(Flags::empty().contains(Flags::NONE)); + assert!(Flags::SOME.contains(Flags::NONE)); + assert!(Flags::NONE.is_empty()); + + assert_eq!(format!("{:?}", Flags::empty()), "NONE"); + assert_eq!(format!("{:?}", Flags::SOME), "SOME"); + } + + #[test] + fn test_empty_bitflags() { + bitflags! {} + } + + #[test] + fn test_u128_bitflags() { + bitflags! { + struct Flags128: u128 { + const A = 0x0000_0000_0000_0000_0000_0000_0000_0001; + const B = 0x0000_0000_0000_1000_0000_0000_0000_0000; + const C = 0x8000_0000_0000_0000_0000_0000_0000_0000; + const ABC = Self::A.bits | Self::B.bits | Self::C.bits; + } + } + + assert_eq!(Flags128::ABC, Flags128::A | Flags128::B | Flags128::C); + assert_eq!(Flags128::A.bits, 0x0000_0000_0000_0000_0000_0000_0000_0001); + assert_eq!(Flags128::B.bits, 0x0000_0000_0000_1000_0000_0000_0000_0000); + assert_eq!(Flags128::C.bits, 0x8000_0000_0000_0000_0000_0000_0000_0000); + assert_eq!( + Flags128::ABC.bits, + 0x8000_0000_0000_1000_0000_0000_0000_0001 + ); + assert_eq!(format!("{:?}", Flags128::A), "A"); + assert_eq!(format!("{:?}", Flags128::B), "B"); + assert_eq!(format!("{:?}", Flags128::C), "C"); + assert_eq!(format!("{:?}", Flags128::ABC), "A | B | C | ABC"); + } + + #[test] + fn test_serde_bitflags_serialize() { + let flags = SerdeFlags::A | SerdeFlags::B; + + let serialized = serde_json::to_string(&flags).unwrap(); + + assert_eq!(serialized, r#"{"bits":3}"#); + } + + #[test] + fn test_serde_bitflags_deserialize() { + let deserialized: SerdeFlags = serde_json::from_str(r#"{"bits":12}"#).unwrap(); + + let expected = SerdeFlags::C | SerdeFlags::D; + + assert_eq!(deserialized.bits, expected.bits); + } + + #[test] + fn test_serde_bitflags_roundtrip() { + let flags = SerdeFlags::A | SerdeFlags::B; + + let deserialized: SerdeFlags = serde_json::from_str(&serde_json::to_string(&flags).unwrap()).unwrap(); + + assert_eq!(deserialized.bits, flags.bits); + } + + bitflags! { + #[derive(serde::Serialize, serde::Deserialize)] + struct SerdeFlags: u32 { + const A = 1; + const B = 2; + const C = 4; + const D = 8; + } + } +} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/basic.rs temporalio-1.3.0/vendor/bitflags-1.3.2/tests/basic.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/basic.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/basic.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,20 @@ +#![no_std] + +use bitflags::bitflags; + +bitflags! { + /// baz + struct Flags: u32 { + const A = 0b00000001; + #[doc = "bar"] + const B = 0b00000010; + const C = 0b00000100; + #[doc = "foo"] + const ABC = Flags::A.bits | Flags::B.bits | Flags::C.bits; + } +} + +#[test] +fn basic() { + assert_eq!(Flags::ABC, Flags::A | Flags::B | Flags::C); +} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.rs temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,10 @@ +use bitflags::bitflags; + +bitflags! { + #[derive(Clone, Copy)] + struct Flags: u32 { + const A = 0b00000001; + } +} + +fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.stderr.beta temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.stderr.beta --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.stderr.beta 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.stderr.beta 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,27 @@ +error[E0119]: conflicting implementations of trait `std::clone::Clone` for type `Flags` + --> $DIR/copy.rs:3:1 + | +3 | / bitflags! { +4 | | #[derive(Clone, Copy)] + | | ----- first implementation here +5 | | struct Flags: u32 { +6 | | const A = 0b00000001; +7 | | } +8 | | } + | |_^ conflicting implementation for `Flags` + | + = note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info) + +error[E0119]: conflicting implementations of trait `std::marker::Copy` for type `Flags` + --> $DIR/copy.rs:3:1 + | +3 | / bitflags! { +4 | | #[derive(Clone, Copy)] + | | ---- first implementation here +5 | | struct Flags: u32 { +6 | | const A = 0b00000001; +7 | | } +8 | | } + | |_^ conflicting implementation for `Flags` + | + = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info) diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.rs temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,10 @@ +use bitflags::bitflags; + +bitflags! { + #[derive(PartialEq, Eq)] + struct Flags: u32 { + const A = 0b00000001; + } +} + +fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.stderr.beta temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.stderr.beta --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.stderr.beta 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.stderr.beta 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,55 @@ +error[E0119]: conflicting implementations of trait `std::cmp::PartialEq` for type `Flags` + --> $DIR/eq.rs:3:1 + | +3 | / bitflags! { +4 | | #[derive(PartialEq, Eq)] + | | --------- first implementation here +5 | | struct Flags: u32 { +6 | | const A = 0b00000001; +7 | | } +8 | | } + | |_^ conflicting implementation for `Flags` + | + = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info) + +error[E0119]: conflicting implementations of trait `std::cmp::Eq` for type `Flags` + --> $DIR/eq.rs:3:1 + | +3 | / bitflags! { +4 | | #[derive(PartialEq, Eq)] + | | -- first implementation here +5 | | struct Flags: u32 { +6 | | const A = 0b00000001; +7 | | } +8 | | } + | |_^ conflicting implementation for `Flags` + | + = note: this error originates in the derive macro `Eq` (in Nightly builds, run with -Z macro-backtrace for more info) + +error[E0119]: conflicting implementations of trait `std::marker::StructuralPartialEq` for type `Flags` + --> $DIR/eq.rs:3:1 + | +3 | / bitflags! { +4 | | #[derive(PartialEq, Eq)] + | | --------- first implementation here +5 | | struct Flags: u32 { +6 | | const A = 0b00000001; +7 | | } +8 | | } + | |_^ conflicting implementation for `Flags` + | + = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info) + +error[E0119]: conflicting implementations of trait `std::marker::StructuralEq` for type `Flags` + --> $DIR/eq.rs:3:1 + | +3 | / bitflags! { +4 | | #[derive(PartialEq, Eq)] + | | -- first implementation here +5 | | struct Flags: u32 { +6 | | const A = 0b00000001; +7 | | } +8 | | } + | |_^ conflicting implementation for `Flags` + | + = note: this error originates in the derive macro `Eq` (in Nightly builds, run with -Z macro-backtrace for more info) diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.rs temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,123 @@ +use std::{ + fmt::{ + self, + Debug, + Display, + LowerHex, + UpperHex, + Octal, + Binary, + }, + ops::{ + BitAnd, + BitOr, + BitXor, + BitAndAssign, + BitOrAssign, + BitXorAssign, + Not, + }, +}; + +use bitflags::bitflags; + +// Ideally we'd actually want this to work, but currently need something like `num`'s `Zero` +// With some design work it could be made possible +#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] +struct MyInt(u8); + +impl BitAnd for MyInt { + type Output = Self; + + fn bitand(self, other: Self) -> Self { + MyInt(self.0 & other.0) + } +} + +impl BitOr for MyInt { + type Output = Self; + + fn bitor(self, other: Self) -> Self { + MyInt(self.0 | other.0) + } +} + +impl BitXor for MyInt { + type Output = Self; + + fn bitxor(self, other: Self) -> Self { + MyInt(self.0 ^ other.0) + } +} + +impl BitAndAssign for MyInt { + fn bitand_assign(&mut self, other: Self) { + self.0 &= other.0 + } +} + +impl BitOrAssign for MyInt { + fn bitor_assign(&mut self, other: Self) { + self.0 |= other.0 + } +} + +impl BitXorAssign for MyInt { + fn bitxor_assign(&mut self, other: Self) { + self.0 ^= other.0 + } +} + +impl Debug for MyInt { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + Debug::fmt(&self.0, f) + } +} + +impl Display for MyInt { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + Display::fmt(&self.0, f) + } +} + +impl LowerHex for MyInt { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + LowerHex::fmt(&self.0, f) + } +} + +impl UpperHex for MyInt { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + UpperHex::fmt(&self.0, f) + } +} + +impl Octal for MyInt { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + Octal::fmt(&self.0, f) + } +} + +impl Binary for MyInt { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + Binary::fmt(&self.0, f) + } +} + +impl Not for MyInt { + type Output = MyInt; + + fn not(self) -> Self { + MyInt(!self.0) + } +} + +bitflags! { + struct Flags128: MyInt { + const A = MyInt(0b0000_0001u8); + const B = MyInt(0b0000_0010u8); + const C = MyInt(0b0000_0100u8); + } +} + +fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.stderr.beta temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.stderr.beta --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.stderr.beta 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.stderr.beta 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,27 @@ +error[E0308]: mismatched types + --> $DIR/all_defined.rs:115:1 + | +115 | / bitflags! { +116 | | struct Flags128: MyInt { +117 | | const A = MyInt(0b0000_0001u8); +118 | | const B = MyInt(0b0000_0010u8); +119 | | const C = MyInt(0b0000_0100u8); +120 | | } +121 | | } + | |_^ expected struct `MyInt`, found integer + | + = note: this error originates in the macro `__impl_all_bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) + +error[E0308]: mismatched types + --> $DIR/all_defined.rs:115:1 + | +115 | / bitflags! { +116 | | struct Flags128: MyInt { +117 | | const A = MyInt(0b0000_0001u8); +118 | | const B = MyInt(0b0000_0010u8); +119 | | const C = MyInt(0b0000_0100u8); +120 | | } +121 | | } + | |_^ expected struct `MyInt`, found integer + | + = note: this error originates in the macro `__impl_bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.rs temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,13 @@ +use bitflags::bitflags; + +struct MyInt(u8); + +bitflags! { + struct Flags128: MyInt { + const A = MyInt(0b0000_0001); + const B = MyInt(0b0000_0010); + const C = MyInt(0b0000_0100); + } +} + +fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.stderr.beta temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.stderr.beta --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.stderr.beta 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.stderr.beta 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,13 @@ +error[E0204]: the trait `Copy` may not be implemented for this type + --> $DIR/all_missing.rs:5:1 + | +5 | / bitflags! { +6 | | struct Flags128: MyInt { +7 | | const A = MyInt(0b0000_0001); +8 | | const B = MyInt(0b0000_0010); +9 | | const C = MyInt(0b0000_0100); +10 | | } +11 | | } + | |_^ this field does not implement `Copy` + | + = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info) diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.rs temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,13 @@ +mod example { + use bitflags::bitflags; + + bitflags! { + pub struct Flags1: u32 { + const FLAG_A = 0b00000001; + } + } +} + +fn main() { + let flag1 = example::Flags1::FLAG_A.bits; +} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.stderr.beta temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.stderr.beta --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.stderr.beta 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.stderr.beta 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,10 @@ +error[E0616]: field `bits` of struct `Flags1` is private + --> $DIR/private_field.rs:12:41 + | +12 | let flag1 = example::Flags1::FLAG_A.bits; + | ^^^^ private field + | +help: a method `bits` also exists, call it with parentheses + | +12 | let flag1 = example::Flags1::FLAG_A.bits(); + | ^^ diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.rs temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,18 @@ +mod example { + use bitflags::bitflags; + + bitflags! { + pub struct Flags1: u32 { + const FLAG_A = 0b00000001; + } + + struct Flags2: u32 { + const FLAG_B = 0b00000010; + } + } +} + +fn main() { + let flag1 = example::Flags1::FLAG_A; + let flag2 = example::Flags2::FLAG_B; +} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.stderr.beta temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.stderr.beta --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.stderr.beta 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.stderr.beta 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,18 @@ +error[E0603]: struct `Flags2` is private + --> $DIR/private_flags.rs:17:26 + | +17 | let flag2 = example::Flags2::FLAG_B; + | ^^^^^^ private struct + | +note: the struct `Flags2` is defined here + --> $DIR/private_flags.rs:4:5 + | +4 | / bitflags! { +5 | | pub struct Flags1: u32 { +6 | | const FLAG_A = 0b00000001; +7 | | } +... | +11 | | } +12 | | } + | |_____^ + = note: this error originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.rs temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,9 @@ +use bitflags::bitflags; + +bitflags! { + pub struct Flags1: u32 { + pub const FLAG_A = 0b00000001; + } +} + +fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.stderr.beta temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.stderr.beta --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.stderr.beta 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.stderr.beta 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,5 @@ +error: no rules expected the token `pub` + --> $DIR/pub_const.rs:5:9 + | +5 | pub const FLAG_A = 0b00000001; + | ^^^ no rules expected this token in macro call diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/impls/convert.rs temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/impls/convert.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/impls/convert.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/impls/convert.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,17 @@ +use bitflags::bitflags; + +bitflags! { + struct Flags: u32 { + const A = 0b00000001; + } +} + +impl From for Flags { + fn from(v: u32) -> Flags { + Flags::from_bits_truncate(v) + } +} + +fn main() { + +} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/impls/default.rs temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/impls/default.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/impls/default.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/impls/default.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,10 @@ +use bitflags::bitflags; + +bitflags! { + #[derive(Default)] + struct Flags: u32 { + const A = 0b00000001; + } +} + +fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/impls/inherent_methods.rs temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/impls/inherent_methods.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/impls/inherent_methods.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/impls/inherent_methods.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,15 @@ +use bitflags::bitflags; + +bitflags! { + struct Flags: u32 { + const A = 0b00000001; + } +} + +impl Flags { + pub fn new() -> Flags { + Flags::A + } +} + +fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/redefinition/core.rs temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/redefinition/core.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/redefinition/core.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/redefinition/core.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,14 @@ +use bitflags::bitflags; + +// Checks for possible errors caused by overriding names used by `bitflags!` internally. + +mod core {} +mod _core {} + +bitflags! { + struct Test: u8 { + const A = 1; + } +} + +fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/redefinition/stringify.rs temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/redefinition/stringify.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/redefinition/stringify.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/redefinition/stringify.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,19 @@ +use bitflags::bitflags; + +// Checks for possible errors caused by overriding names used by `bitflags!` internally. + +#[allow(unused_macros)] +macro_rules! stringify { + ($($t:tt)*) => { "..." }; +} + +bitflags! { + struct Test: u8 { + const A = 1; + } +} + +fn main() { + // Just make sure we don't call the redefined `stringify` macro + assert_eq!(format!("{:?}", Test::A), "A"); +} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/repr/c.rs temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/repr/c.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/repr/c.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/repr/c.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,10 @@ +use bitflags::bitflags; + +bitflags! { + #[repr(C)] + struct Flags: u32 { + const A = 0b00000001; + } +} + +fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/repr/transparent.rs temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/repr/transparent.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/repr/transparent.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/repr/transparent.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,10 @@ +use bitflags::bitflags; + +bitflags! { + #[repr(transparent)] + struct Flags: u32 { + const A = 0b00000001; + } +} + +fn main() {} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/visibility/bits_field.rs temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/visibility/bits_field.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/visibility/bits_field.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/visibility/bits_field.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,11 @@ +use bitflags::bitflags; + +bitflags! { + pub struct Flags1: u32 { + const FLAG_A = 0b00000001; + } +} + +fn main() { + assert_eq!(0b00000001, Flags1::FLAG_A.bits); +} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/visibility/pub_in.rs temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/visibility/pub_in.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/visibility/pub_in.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile-pass/visibility/pub_in.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,19 @@ +mod a { + mod b { + use bitflags::bitflags; + + bitflags! { + pub(in crate::a) struct Flags: u32 { + const FLAG_A = 0b00000001; + } + } + } + + pub fn flags() -> u32 { + b::Flags::FLAG_A.bits() + } +} + +fn main() { + assert_eq!(0b00000001, a::flags()); +} diff -Nru temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile.rs temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile.rs --- temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/bitflags-1.3.2/tests/compile.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,63 @@ +use std::{ + fs, + ffi::OsStr, + io, + path::Path, +}; + +use walkdir::WalkDir; + +#[test] +fn fail() { + prepare_stderr_files("tests/compile-fail").unwrap(); + + let t = trybuild::TestCases::new(); + t.compile_fail("tests/compile-fail/**/*.rs"); +} + +#[test] +fn pass() { + let t = trybuild::TestCases::new(); + t.pass("tests/compile-pass/**/*.rs"); +} + +// Compiler messages may change between versions +// We don't want to have to track these too closely for `bitflags`, but +// having some message to check makes sure user-facing errors are sensical. +// +// The approach we use is to run the test on all compilers, but only check stderr +// output on beta (which is the next stable release). We do this by default ignoring +// any `.stderr` files in the `compile-fail` directory, and copying `.stderr.beta` files +// when we happen to be running on a beta compiler. +fn prepare_stderr_files(path: impl AsRef) -> io::Result<()> { + for entry in WalkDir::new(path) { + let entry = entry?; + + if entry.path().extension().and_then(OsStr::to_str) == Some("beta") { + let renamed = entry.path().with_extension(""); + + // Unconditionally remove a corresponding `.stderr` file for a `.stderr.beta` + // file if it exists. On `beta` compilers, we'll recreate it. On other compilers, + // we don't want to end up checking it anyways. + if renamed.exists() { + fs::remove_file(&renamed)?; + } + + rename_beta_stderr(entry.path(), renamed)?; + } + } + + Ok(()) +} + +#[rustversion::beta] +fn rename_beta_stderr(from: impl AsRef, to: impl AsRef) -> io::Result<()> { + fs::copy(from, to)?; + + Ok(()) +} + +#[rustversion::not(beta)] +fn rename_beta_stderr(_: impl AsRef, _: impl AsRef) -> io::Result<()> { + Ok(()) +} diff -Nru temporalio-1.3.0/vendor/cc/.cargo-checksum.json temporalio-1.3.0/vendor/cc/.cargo-checksum.json --- temporalio-1.3.0/vendor/cc/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/cc/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.lock":"dddb9c49058d411a098e98dc1c06e3bc89f859a2080d96c11b11aec67394bb8c","Cargo.toml":"1953a8bc4b98e351fe75917c151b1e08a46531d562aebba25a90add4aadecac2","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"58af5106352aafa62175a90f8a5f25fa114028bf909220dc0735d79745999ec1","src/bin/gcc-shim.rs":"36dc4e447428e73c548cc7106ca1e8f282c098463b014e13a729a44445de4880","src/com.rs":"29d0dee08a656ab1a4cc3e5fe24542e0fab5c1373cbc9b05059f7572cf9b8313","src/lib.rs":"17a4659710aa290c4ed9c23063c7b202c5bcf2a84de33aa1f01fc6fded69a1f8","src/registry.rs":"98ae2b71781acc49297e5544fa0cf059f735636f8f1338edef8dbf7232443945","src/setup_config.rs":"72deaf1927c0b713fd5c2b2d5b8f0ea3a303a00fda1579427895cac26a94122d","src/vs_instances.rs":"2d3f8278a803b0e7052f4eeb1979b29f963dd0143f4458e2cb5f33c4e5f0963b","src/winapi.rs":"e128e95b2d39ae7a02f54a7e25d33c488c14759b9f1a50a449e10545856950c3","src/windows_registry.rs":"1f973f804b4b451e48ff6d98ce660355772f164dfdf79a6ae514645c7c764005","tests/cc_env.rs":"e02b3b0824ad039b47e4462c5ef6dbe6c824c28e7953af94a0f28f7b5158042e","tests/cflags.rs":"57f06eb5ce1557e5b4a032d0c4673e18fbe6f8d26c1deb153126e368b96b41b3","tests/cxxflags.rs":"c2c6c6d8a0d7146616fa1caed26876ee7bc9fcfffd525eb4743593cade5f3371","tests/support/mod.rs":"a3c8d116973bb16066bf6ec4de5143183f97de7aad085d85f8118a2eaac3e1e0","tests/test.rs":"61fb35ae6dd5cf506ada000bdd82c92e9f8eac9cc053b63e83d3f897436fbf8f"},"package":"50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"} \ No newline at end of file +{"files":{"Cargo.lock":"f36b5fb99e6a2272cb5ad088fb7e21baa135c5335f9babfd3d6e79cd915d5082","Cargo.toml":"2be00f2836c949a6ff7120610ee0191a6d12d50f141aafd6622d4c2e932f0d71","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"fe18a56553aa54cbef39b659e98340ddf4dbb18f156e7b34a8be25d97e4d123f","src/bin/gcc-shim.rs":"36dc4e447428e73c548cc7106ca1e8f282c098463b014e13a729a44445de4880","src/com.rs":"cf188faf2651f613ee5c38fd6af29188ff4b0c3036b615874bce0e3b6e61a96f","src/lib.rs":"cdf0c6dc4e12ad313fb93ab42f994e26c7e5aaeb07ca61620032d8f4014dacd0","src/os_pipe.rs":"5b950b491b93226885c34a9070387c081f50029fdf19770bb983bca2a64aa705","src/os_pipe/unix.rs":"64a765352b3e94c4590d11f99824dc60a887fe5bc61eba81398aab1180908f55","src/os_pipe/windows.rs":"fa35d5b6adb83a8442ec06b08f3d30631ac7b8513f3cf8b3986d27b7ee58cf93","src/registry.rs":"d888d22abd8a32a61562529274b2d5d2f9e5a3bfa754589d6beb04b740144771","src/setup_config.rs":"5fee84b80d089ae4a92f10080b072ea2bb32c2edbcdc759cb9072e380404fc46","src/vs_instances.rs":"2d3f8278a803b0e7052f4eeb1979b29f963dd0143f4458e2cb5f33c4e5f0963b","src/winapi.rs":"132a7c23d57911db0bef03446cd106e7f75818096132522219d72b9d2a8f247f","src/windows_registry.rs":"c58ae361caf3b6f13dff515e25b3a7e5cf443bb9470d2d347784b5872c3de06d","src/windows_sys.rs":"ff7cdf4450db85c8704dfd3aa765dd62da24f0650825457094405af82958f688","tests/cc_env.rs":"e02b3b0824ad039b47e4462c5ef6dbe6c824c28e7953af94a0f28f7b5158042e","tests/cflags.rs":"57f06eb5ce1557e5b4a032d0c4673e18fbe6f8d26c1deb153126e368b96b41b3","tests/cxxflags.rs":"c2c6c6d8a0d7146616fa1caed26876ee7bc9fcfffd525eb4743593cade5f3371","tests/support/mod.rs":"a3c8d116973bb16066bf6ec4de5143183f97de7aad085d85f8118a2eaac3e1e0","tests/test.rs":"bab74eb7e7a383cb5da4143e74c26ddfa3e7162b5f46c1d46a722250e925444d"},"package":"f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/cc/Cargo.lock temporalio-1.3.0/vendor/cc/Cargo.lock --- temporalio-1.3.0/vendor/cc/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/cc/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -10,9 +10,10 @@ [[package]] name = "cc" -version = "1.0.79" +version = "1.0.83" dependencies = [ "jobserver", + "libc", "tempfile", ] @@ -51,9 +52,9 @@ [[package]] name = "libc" -version = "0.2.139" +version = "0.2.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" +checksum = "329c933548736bc49fd575ee68c89e8be4d260064184389a5b77517cddd99ffb" [[package]] name = "redox_syscall" diff -Nru temporalio-1.3.0/vendor/cc/Cargo.toml temporalio-1.3.0/vendor/cc/Cargo.toml --- temporalio-1.3.0/vendor/cc/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/cc/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2018" name = "cc" -version = "1.0.79" +version = "1.0.83" authors = ["Alex Crichton "] exclude = ["/.github"] description = """ @@ -37,3 +37,7 @@ [features] parallel = ["jobserver"] + +[target."cfg(unix)".dependencies.libc] +version = "0.2.62" +default-features = false diff -Nru temporalio-1.3.0/vendor/cc/README.md temporalio-1.3.0/vendor/cc/README.md --- temporalio-1.3.0/vendor/cc/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/cc/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -49,7 +49,7 @@ your Rust code like so: ```rust,no_run -extern { +extern "C" { fn foo_function(); fn bar_function(x: i32) -> i32; } @@ -83,9 +83,17 @@ certain `TARGET`s, it also is assumed to know about other flags (most common is `-fPIC`). * `AR` - the `ar` (archiver) executable to use to build the static library. -* `CRATE_CC_NO_DEFAULTS` - the default compiler flags may cause conflicts in some cross compiling scenarios. Setting this variable will disable the generation of default compiler flags. +* `CRATE_CC_NO_DEFAULTS` - the default compiler flags may cause conflicts in + some cross compiling scenarios. Setting this variable + will disable the generation of default compiler + flags. * `CXX...` - see [C++ Support](#c-support). +Furthermore, projects using this crate may specify custom environment variables +to be inspected, for example via the `Build::try_flags_from_environment` +function. Consult the project’s own documentation or its use of the `cc` crate +for any additional variables it may use. + Each of these variables can also be supplied with certain prefixes and suffixes, in the following prioritized order: @@ -94,7 +102,7 @@ 3. `_` - for example, `HOST_CC` or `TARGET_CFLAGS` 4. `` - a plain `CC`, `AR` as above. -If none of these variables exist, cc-rs uses built-in defaults +If none of these variables exist, cc-rs uses built-in defaults. In addition to the above optional environment variables, `cc-rs` has some functions with hard requirements on some variables supplied by [cargo's @@ -130,9 +138,9 @@ * Unix platforms require `cc` to be the C compiler. This can be found by installing cc/clang on Linux distributions and Xcode on macOS, for example. * Windows platforms targeting MSVC (e.g. your target triple ends in `-msvc`) - require `cl.exe` to be available and in `PATH`. This is typically found in - standard Visual Studio installations and the `PATH` can be set up by running - the appropriate developer tools shell. + require Visual Studio to be installed. `cc-rs` attempts to locate it, and + if it fails, `cl.exe` is expected to be available in `PATH`. This can be + set up by running the appropriate developer tools shell. * Windows platforms targeting MinGW (e.g. your target triple ends in `-gnu`) require `cc` to be available in `PATH`. We recommend the [MinGW-w64](https://www.mingw-w64.org/) distribution, which is using the @@ -155,7 +163,7 @@ cc::Build::new() .cpp(true) // Switch to C++ library compilation. .file("foo.cpp") - .compile("libfoo.a"); + .compile("foo"); } ``` @@ -170,7 +178,7 @@ .cpp(true) .file("foo.cpp") .cpp_link_stdlib("stdc++") // use libstdc++ - .compile("libfoo.a"); + .compile("foo"); } ``` 2. by setting the `CXXSTDLIB` environment variable. @@ -182,7 +190,7 @@ ## CUDA C++ support `cc-rs` also supports compiling CUDA C++ libraries by using the `cuda` method -on `Build` (currently for GNU/Clang toolchains only): +on `Build`: ```rust,no_run fn main() { @@ -200,8 +208,10 @@ .flag("-gencode").flag("arch=compute_60,code=sm_60") // Generate code for Pascal (Jetson TX2). .flag("-gencode").flag("arch=compute_62,code=sm_62") + // Generate code in parallel + .flag("-t0") .file("bar.cu") - .compile("libbar.a"); + .compile("bar"); } ``` diff -Nru temporalio-1.3.0/vendor/cc/src/com.rs temporalio-1.3.0/vendor/cc/src/com.rs --- temporalio-1.3.0/vendor/cc/src/com.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/cc/src/com.rs 2023-10-30 19:40:00.000000000 +0000 @@ -7,27 +7,30 @@ #![allow(unused)] -use crate::winapi::CoInitializeEx; -use crate::winapi::IUnknown; -use crate::winapi::Interface; -use crate::winapi::BSTR; -use crate::winapi::COINIT_MULTITHREADED; -use crate::winapi::{SysFreeString, SysStringLen}; -use crate::winapi::{HRESULT, S_FALSE, S_OK}; -use std::ffi::{OsStr, OsString}; -use std::mem::forget; -use std::ops::Deref; -use std::os::windows::ffi::{OsStrExt, OsStringExt}; -use std::ptr::null_mut; -use std::slice::from_raw_parts; +use crate::{ + winapi::{IUnknown, Interface}, + windows_sys::{ + CoInitializeEx, SysFreeString, SysStringLen, BSTR, COINIT_MULTITHREADED, HRESULT, S_FALSE, + S_OK, + }, +}; +use std::{ + ffi::{OsStr, OsString}, + mem::ManuallyDrop, + ops::Deref, + os::windows::ffi::{OsStrExt, OsStringExt}, + ptr::{null, null_mut}, + slice::from_raw_parts, +}; pub fn initialize() -> Result<(), HRESULT> { - let err = unsafe { CoInitializeEx(null_mut(), COINIT_MULTITHREADED) }; + let err = unsafe { CoInitializeEx(null(), COINIT_MULTITHREADED) }; if err != S_OK && err != S_FALSE { // S_FALSE just means COM is already initialized - return Err(err); + Err(err) + } else { + Ok(()) } - Ok(()) } pub struct ComPtr(*mut T) @@ -55,9 +58,7 @@ /// Extracts the raw pointer. /// You are now responsible for releasing it yourself. pub fn into_raw(self) -> *mut T { - let p = self.0; - forget(self); - p + ManuallyDrop::new(self).0 } /// For internal use only. fn as_unknown(&self) -> &IUnknown { diff -Nru temporalio-1.3.0/vendor/cc/src/lib.rs temporalio-1.3.0/vendor/cc/src/lib.rs --- temporalio-1.3.0/vendor/cc/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/cc/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -34,9 +34,6 @@ //! //! Cargo will also set this environment variable when executed with the `-jN` flag. //! -//! If `NUM_JOBS` is not set, the `RAYON_NUM_THREADS` environment variable can -//! also specify the build parallelism. -//! //! # Examples //! //! Use the `Build` struct to compile `src/foo.c`: @@ -56,11 +53,12 @@ #![allow(deprecated)] #![deny(missing_docs)] +use std::borrow::Cow; use std::collections::{hash_map, HashMap}; use std::env; use std::ffi::{OsStr, OsString}; use std::fmt::{self, Display, Formatter}; -use std::fs; +use std::fs::{self, File}; use std::hash::Hasher; use std::io::{self, BufRead, BufReader, Read, Write}; use std::path::{Component, Path, PathBuf}; @@ -68,6 +66,8 @@ use std::sync::{Arc, Mutex}; use std::thread::{self, JoinHandle}; +mod os_pipe; + // These modules are all glue to support reading the MSVC version from // the registry and from COM interfaces #[cfg(windows)] @@ -81,6 +81,8 @@ mod setup_config; #[cfg(windows)] mod vs_instances; +#[cfg(windows)] +mod windows_sys; pub mod windows_registry; @@ -91,33 +93,34 @@ /// documentation on each method itself. #[derive(Clone, Debug)] pub struct Build { - include_directories: Vec, - definitions: Vec<(String, Option)>, - objects: Vec, - flags: Vec, - flags_supported: Vec, + include_directories: Vec>, + definitions: Vec<(Arc, Option>)>, + objects: Vec>, + flags: Vec>, + flags_supported: Vec>, known_flag_support_status: Arc>>, - ar_flags: Vec, - asm_flags: Vec, + ar_flags: Vec>, + asm_flags: Vec>, no_default_flags: bool, - files: Vec, + files: Vec>, cpp: bool, - cpp_link_stdlib: Option>, - cpp_set_stdlib: Option, + cpp_link_stdlib: Option>>, + cpp_set_stdlib: Option>, cuda: bool, - cudart: Option, - target: Option, - host: Option, - out_dir: Option, - opt_level: Option, + cudart: Option>, + std: Option>, + target: Option>, + host: Option>, + out_dir: Option>, + opt_level: Option>, debug: Option, force_frame_pointer: Option, - env: Vec<(OsString, OsString)>, - compiler: Option, - archiver: Option, - ranlib: Option, + env: Vec<(Arc, Arc)>, + compiler: Option>, + archiver: Option>, + ranlib: Option>, cargo_metadata: bool, - link_lib_modifiers: Vec, + link_lib_modifiers: Vec>, pic: Option, use_plt: Option, static_crt: Option, @@ -126,7 +129,7 @@ warnings_into_errors: bool, warnings: Option, extra_warnings: Option, - env_cache: Arc>>>, + env_cache: Arc>>>>, apple_sdk_root_cache: Arc>>, emit_rerun_if_env_changed: bool, } @@ -154,21 +157,21 @@ /// Describes the kind of error that occurred. kind: ErrorKind, /// More explanation of error that occurred. - message: String, + message: Cow<'static, str>, } impl Error { - fn new(kind: ErrorKind, message: &str) -> Error { + fn new(kind: ErrorKind, message: impl Into>) -> Error { Error { - kind: kind, - message: message.to_owned(), + kind, + message: message.into(), } } } impl From for Error { fn from(e: io::Error) -> Error { - Error::new(ErrorKind::IOError, &format!("{}", e)) + Error::new(ErrorKind::IOError, format!("{}", e)) } } @@ -312,6 +315,7 @@ cpp_set_stdlib: None, cuda: false, cudart: None, + std: None, target: None, host: None, out_dir: None, @@ -352,7 +356,7 @@ /// .compile("foo"); /// ``` pub fn include>(&mut self, dir: P) -> &mut Build { - self.include_directories.push(dir.as_ref().to_path_buf()); + self.include_directories.push(dir.as_ref().into()); self } @@ -398,13 +402,13 @@ /// ``` pub fn define<'a, V: Into>>(&mut self, var: &str, val: V) -> &mut Build { self.definitions - .push((var.to_string(), val.into().map(|s| s.to_string()))); + .push((var.into(), val.into().map(Into::into))); self } /// Add an arbitrary object file to link in pub fn object>(&mut self, obj: P) -> &mut Build { - self.objects.push(obj.as_ref().to_path_buf()); + self.objects.push(obj.as_ref().into()); self } @@ -419,7 +423,7 @@ /// .compile("foo"); /// ``` pub fn flag(&mut self, flag: &str) -> &mut Build { - self.flags.push(flag.to_string()); + self.flags.push(flag.into()); self } @@ -435,7 +439,7 @@ /// .compile("foo"); /// ``` pub fn ar_flag(&mut self, flag: &str) -> &mut Build { - self.ar_flags.push(flag.to_string()); + self.ar_flags.push(flag.into()); self } @@ -454,7 +458,7 @@ /// .compile("foo"); /// ``` pub fn asm_flag(&mut self, flag: &str) -> &mut Build { - self.asm_flags.push(flag.to_string()); + self.asm_flags.push(flag.into()); self } @@ -521,12 +525,14 @@ let mut cmd = compiler.to_command(); let is_arm = target.contains("aarch64") || target.contains("arm"); let clang = compiler.family == ToolFamily::Clang; + let gnu = compiler.family == ToolFamily::Gnu; command_add_output_file( &mut cmd, &obj, self.cuda, target.contains("msvc"), clang, + gnu, false, is_arm, ); @@ -558,10 +564,39 @@ /// .compile("foo"); /// ``` pub fn flag_if_supported(&mut self, flag: &str) -> &mut Build { - self.flags_supported.push(flag.to_string()); + self.flags_supported.push(flag.into()); self } + /// Add flags from the specified environment variable. + /// + /// Normally the `cc` crate will consult with the standard set of environment + /// variables (such as `CFLAGS` and `CXXFLAGS`) to construct the compiler invocation. Use of + /// this method provides additional levers for the end user to use when configuring the build + /// process. + /// + /// Just like the standard variables, this method will search for an environment variable with + /// appropriate target prefixes, when appropriate. + /// + /// # Examples + /// + /// This method is particularly beneficial in introducing the ability to specify crate-specific + /// flags. + /// + /// ```no_run + /// cc::Build::new() + /// .file("src/foo.c") + /// .try_flags_from_environment(concat!(env!("CARGO_PKG_NAME"), "_CFLAGS")) + /// .expect("the environment variable must be specified and UTF-8") + /// .compile("foo"); + /// ``` + /// + pub fn try_flags_from_environment(&mut self, environ_key: &str) -> Result<&mut Build, Error> { + let flags = self.envflags(environ_key)?; + self.flags.extend(flags.into_iter().map(Into::into)); + Ok(self) + } + /// Set the `-shared` flag. /// /// When enabled, the compiler will produce a shared object which can @@ -612,7 +647,7 @@ /// Add a file which will be compiled pub fn file>(&mut self, p: P) -> &mut Build { - self.files.push(p.as_ref().to_path_buf()); + self.files.push(p.as_ref().into()); self } @@ -632,6 +667,12 @@ /// /// The other `cpp_*` options will only become active if this is set to /// `true`. + /// + /// The name of the C++ standard library to link is decided by: + /// 1. If [cpp_link_stdlib](Build::cpp_link_stdlib) is set, use its value. + /// 2. Else if the `CXXSTDLIB` environment variable is set, use its value. + /// 3. Else the default is `libc++` for OS X and BSDs, `libc++_shared` for Android, + /// `None` for MSVC and `libstdc++` for anything else. pub fn cpp(&mut self, cpp: bool) -> &mut Build { self.cpp = cpp; self @@ -639,17 +680,19 @@ /// Set CUDA C++ support. /// - /// Enabling CUDA will pass the detected C/C++ toolchain as an argument to - /// the CUDA compiler, NVCC. NVCC itself accepts some limited GNU-like args; - /// any other arguments for the C/C++ toolchain will be redirected using - /// "-Xcompiler" flags. + /// Enabling CUDA will invoke the CUDA compiler, NVCC. While NVCC accepts + /// the most common compiler flags, e.g. `-std=c++17`, some project-specific + /// flags might have to be prefixed with "-Xcompiler" flag, for example as + /// `.flag("-Xcompiler").flag("-fpermissive")`. See the documentation for + /// `nvcc`, the CUDA compiler driver, at https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/ + /// for more information. /// /// If enabled, this also implicitly enables C++ support. pub fn cuda(&mut self, cuda: bool) -> &mut Build { self.cuda = cuda; if cuda { self.cpp = true; - self.cudart = Some("static".to_string()); + self.cudart = Some("static".into()); } self } @@ -662,11 +705,42 @@ /// at all, if the default is right for the project. pub fn cudart(&mut self, cudart: &str) -> &mut Build { if self.cuda { - self.cudart = Some(cudart.to_string()); + self.cudart = Some(cudart.into()); } self } + /// Specify the C or C++ language standard version. + /// + /// These values are common to modern versions of GCC, Clang and MSVC: + /// - `c11` for ISO/IEC 9899:2011 + /// - `c17` for ISO/IEC 9899:2018 + /// - `c++14` for ISO/IEC 14882:2014 + /// - `c++17` for ISO/IEC 14882:2017 + /// - `c++20` for ISO/IEC 14882:2020 + /// + /// Other values have less broad support, e.g. MSVC does not support `c++11` + /// (`c++14` is the minimum), `c89` (omit the flag instead) or `c99`. + /// + /// For compiling C++ code, you should also set `.cpp(true)`. + /// + /// The default is that no standard flag is passed to the compiler, so the + /// language version will be the compiler's default. + /// + /// # Example + /// + /// ```no_run + /// cc::Build::new() + /// .file("src/modern.cpp") + /// .cpp(true) + /// .std("c++17") + /// .compile("modern"); + /// ``` + pub fn std(&mut self, std: &str) -> &mut Build { + self.std = Some(std.into()); + self + } + /// Set warnings into errors flag. /// /// Disabled by default. @@ -738,8 +812,6 @@ /// Set the standard library to link against when compiling with C++ /// support. /// - /// See [`get_cpp_link_stdlib`](cc::Build::get_cpp_link_stdlib) documentation - /// for the default value. /// If the `CXXSTDLIB` environment variable is set, its value will /// override the default value, but not the value explicitly set by calling /// this function. @@ -828,7 +900,7 @@ /// .compile("foo"); /// ``` pub fn target(&mut self, target: &str) -> &mut Build { - self.target = Some(target.to_string()); + self.target = Some(target.into()); self } @@ -846,7 +918,7 @@ /// .compile("foo"); /// ``` pub fn host(&mut self, host: &str) -> &mut Build { - self.host = Some(host.to_string()); + self.host = Some(host.into()); self } @@ -855,7 +927,7 @@ /// This option is automatically scraped from the `OPT_LEVEL` environment /// variable by build scripts, so it's not required to call this function. pub fn opt_level(&mut self, opt_level: u32) -> &mut Build { - self.opt_level = Some(opt_level.to_string()); + self.opt_level = Some(opt_level.to_string().into()); self } @@ -864,7 +936,7 @@ /// This option is automatically scraped from the `OPT_LEVEL` environment /// variable by build scripts, so it's not required to call this function. pub fn opt_level_str(&mut self, opt_level: &str) -> &mut Build { - self.opt_level = Some(opt_level.to_string()); + self.opt_level = Some(opt_level.into()); self } @@ -895,7 +967,7 @@ /// This option is automatically scraped from the `OUT_DIR` environment /// variable by build scripts, so it's not required to call this function. pub fn out_dir>(&mut self, out_dir: P) -> &mut Build { - self.out_dir = Some(out_dir.as_ref().to_owned()); + self.out_dir = Some(out_dir.as_ref().into()); self } @@ -905,7 +977,7 @@ /// number of environment variables, so it's not required to call this /// function. pub fn compiler>(&mut self, compiler: P) -> &mut Build { - self.compiler = Some(compiler.as_ref().to_owned()); + self.compiler = Some(compiler.as_ref().into()); self } @@ -915,7 +987,7 @@ /// number of environment variables, so it's not required to call this /// function. pub fn archiver>(&mut self, archiver: P) -> &mut Build { - self.archiver = Some(archiver.as_ref().to_owned()); + self.archiver = Some(archiver.as_ref().into()); self } @@ -925,7 +997,7 @@ /// number of environment variables, so it's not required to call this /// function. pub fn ranlib>(&mut self, ranlib: P) -> &mut Build { - self.ranlib = Some(ranlib.as_ref().to_owned()); + self.ranlib = Some(ranlib.as_ref().into()); self } @@ -951,7 +1023,7 @@ /// See https://doc.rust-lang.org/rustc/command-line-arguments.html#-l-link-the-generated-crate-to-a-native-library /// for the list of modifiers accepted by rustc. pub fn link_lib_modifier(&mut self, link_lib_modifier: &str) -> &mut Build { - self.link_lib_modifiers.push(link_lib_modifier.to_string()); + self.link_lib_modifiers.push(link_lib_modifier.into()); self } @@ -1004,8 +1076,7 @@ A: AsRef, B: AsRef, { - self.env - .push((a.as_ref().to_owned(), b.as_ref().to_owned())); + self.env.push((a.as_ref().into(), b.as_ref().into())); self } @@ -1037,9 +1108,10 @@ let mut objects = Vec::new(); for file in self.files.iter() { - let obj = if file.has_root() { - // If `file` is an absolute path, prefix the `basename` - // with the `dirname`'s hash to ensure name uniqueness. + let obj = if file.has_root() || file.components().any(|x| x == Component::ParentDir) { + // If `file` is an absolute path or might not be usable directly as a suffix due to + // using "..", use the `basename` prefixed with the `dirname`'s hash to ensure name + // uniqueness. let basename = file .file_name() .ok_or_else(|| Error::new(ErrorKind::InvalidArgument, "file_name() failure"))? @@ -1075,8 +1147,11 @@ objects.push(Object::new(file.to_path_buf(), obj)); } - self.compile_objects(&objects)?; - self.assemble(lib_name, &dst.join(gnu_lib_name), &objects)?; + + let print = PrintThread::new()?; + + self.compile_objects(&objects, &print)?; + self.assemble(lib_name, &dst.join(gnu_lib_name), &objects, &print)?; if self.get_target()?.contains("msvc") { let compiler = self.get_base_compiler()?; @@ -1092,7 +1167,7 @@ }); if let Some(atlmfc_lib) = atlmfc_lib { - self.print(&format!( + self.print(&format_args!( "cargo:rustc-link-search=native={}", atlmfc_lib.display() )); @@ -1100,26 +1175,32 @@ } if self.link_lib_modifiers.is_empty() { - self.print(&format!("cargo:rustc-link-lib=static={}", lib_name)); + self.print(&format_args!("cargo:rustc-link-lib=static={}", lib_name)); } else { let m = self.link_lib_modifiers.join(","); - self.print(&format!("cargo:rustc-link-lib=static:{}={}", m, lib_name)); + self.print(&format_args!( + "cargo:rustc-link-lib=static:{}={}", + m, lib_name + )); } - self.print(&format!("cargo:rustc-link-search=native={}", dst.display())); + self.print(&format_args!( + "cargo:rustc-link-search=native={}", + dst.display() + )); // Add specific C++ libraries, if enabled. if self.cpp { if let Some(stdlib) = self.get_cpp_link_stdlib()? { - self.print(&format!("cargo:rustc-link-lib={}", stdlib)); + self.print(&format_args!("cargo:rustc-link-lib={}", stdlib)); } } let cudart = match &self.cudart { - Some(opt) => opt.as_str(), // {none|shared|static} + Some(opt) => &*opt, // {none|shared|static} None => "none", }; if cudart != "none" { - if let Some(nvcc) = which(&self.get_compiler().path) { + if let Some(nvcc) = which(&self.get_compiler().path, None) { // Try to figure out the -L search path. If it fails, // it's on user to specify one by passing it through // RUSTFLAGS environment variable. @@ -1211,9 +1292,17 @@ } #[cfg(feature = "parallel")] - fn compile_objects<'me>(&'me self, objs: &[Object]) -> Result<(), Error> { - use std::sync::atomic::{AtomicBool, Ordering::SeqCst}; - use std::sync::Once; + fn compile_objects(&self, objs: &[Object], print: &PrintThread) -> Result<(), Error> { + use std::sync::{mpsc, Once}; + + if objs.len() <= 1 { + for obj in objs { + let (mut cmd, name) = self.create_compile_object_cmd(obj)?; + run(&mut cmd, &name, print)?; + } + + return Ok(()); + } // Limit our parallelism globally with a jobserver. Start off by // releasing our own token for this process so we can have a bit of an @@ -1221,7 +1310,8 @@ // on Windows with the main implicit token, so we just have a bit extra // parallelism for a bit and don't reacquire later. let server = jobserver(); - let reacquire = server.release_raw().is_ok(); + // Reacquire our process's token on drop + let _reacquire = server.release_raw().ok().map(|_| JobserverToken(server)); // When compiling objects in parallel we do a few dirty tricks to speed // things up: @@ -1235,75 +1325,110 @@ // Note that this jobserver is cached globally so we only used one per // process and only worry about creating it once. // - // * Next we use a raw `thread::spawn` per thread to actually compile - // objects in parallel. We only actually spawn a thread after we've - // acquired a token to perform some work - // - // * Finally though we want to keep the dependencies of this crate - // pretty light, so we avoid using a safe abstraction like `rayon` and - // instead rely on some bits of `unsafe` code. We know that this stack - // frame persists while everything is compiling so we use all the - // stack-allocated objects without cloning/reallocating. We use a - // transmute to `State` with a `'static` lifetime to persist - // everything we need across the boundary, and the join-on-drop - // semantics of `JoinOnDrop` should ensure that our stack frame is - // alive while threads are alive. + // * Next we use spawn the process to actually compile objects in + // parallel after we've acquired a token to perform some work // // With all that in mind we compile all objects in a loop here, after we // acquire the appropriate tokens, Once all objects have been compiled - // we join on all the threads and propagate the results of compilation. - // - // Note that as a slight optimization we try to break out as soon as - // possible as soon as any compilation fails to ensure that errors get - // out to the user as fast as possible. - let error = AtomicBool::new(false); - let mut threads = Vec::new(); - for obj in objs { - if error.load(SeqCst) { - break; - } - let token = server.acquire()?; - let state = State { - build: self, - obj, - error: &error, - }; - let state = unsafe { std::mem::transmute::>(state) }; - let thread = thread::spawn(|| { - let state: State<'me> = state; // erase the `'static` lifetime - let result = state.build.compile_object(state.obj); - if result.is_err() { - state.error.store(true, SeqCst); + // we wait on all the processes and propagate the results of compilation. + + let (tx, rx) = mpsc::channel::<(_, String, KillOnDrop, _)>(); + + // Since jobserver::Client::acquire can block, waiting + // must be done in parallel so that acquire won't block forever. + let wait_thread = thread::Builder::new().spawn(move || { + let mut error = None; + let mut pendings = Vec::new(); + // Buffer the stdout + let mut stdout = io::BufWriter::with_capacity(128, io::stdout()); + let mut backoff_cnt = 0; + + loop { + let mut has_made_progress = false; + + // Reading new pending tasks + loop { + match rx.try_recv() { + Ok(pending) => { + has_made_progress = true; + pendings.push(pending) + } + Err(mpsc::TryRecvError::Disconnected) if pendings.is_empty() => { + let _ = stdout.flush(); + return if let Some(err) = error { + Err(err) + } else { + Ok(()) + }; + } + _ => break, + } } - drop(token); // make sure our jobserver token is released after the compile - return result; - }); - threads.push(JoinOnDrop(Some(thread))); - } - for mut thread in threads { - if let Some(thread) = thread.0.take() { - thread.join().expect("thread should not panic")?; + // Try waiting on them. + pendings.retain_mut(|(cmd, program, child, _)| { + match try_wait_on_child(cmd, program, &mut child.0, &mut stdout) { + Ok(Some(())) => { + // Task done, remove the entry + has_made_progress = true; + false + } + Ok(None) => true, // Task still not finished, keep the entry + Err(err) => { + // Task fail, remove the entry. + has_made_progress = true; + + // Since we can only return one error, log the error to make + // sure users always see all the compilation failures. + let _ = writeln!(stdout, "cargo:warning={}", err); + error = Some(err); + + false + } + } + }); + + if !has_made_progress { + if backoff_cnt > 3 { + // We have yielded at least three times without making' + // any progress, so we will sleep for a while. + let duration = + std::time::Duration::from_millis(100 * (backoff_cnt - 3).min(10)); + thread::sleep(duration); + } else { + // Given that we spawned a lot of compilation tasks, it is unlikely + // that OS cannot find other ready task to execute. + // + // If all of them are done, then we will yield them and spawn more, + // or simply returns. + // + // Thus this will not be turned into a busy-wait loop and it will not + // waste CPU resource. + thread::yield_now(); + } + } + + backoff_cnt = if has_made_progress { + 0 + } else { + backoff_cnt + 1 + }; } - } + })?; - // Reacquire our process's token before we proceed, which we released - // before entering the loop above. - if reacquire { - server.acquire_raw()?; - } + for obj in objs { + let (mut cmd, program) = self.create_compile_object_cmd(obj)?; + let token = server.acquire()?; - return Ok(()); + let child = spawn(&mut cmd, &program, print.pipe_writer_cloned()?.unwrap())?; - /// Shared state from the parent thread to the child thread. This - /// package of pointers is temporarily transmuted to a `'static` - /// lifetime to cross the thread boundary and then once the thread is - /// running we erase the `'static` to go back to an anonymous lifetime. - struct State<'a> { - build: &'a Build, - obj: &'a Object, - error: &'a AtomicBool, + tx.send((cmd, program, KillOnDrop(child), token)) + .expect("Wait thread must be alive until all compilation jobs are done, otherwise we risk deadlock"); } + // Drop tx so that the wait_thread could return + drop(tx); + + return wait_thread.join().expect("wait_thread panics"); /// Returns a suitable `jobserver::Client` used to coordinate /// parallelism between build scripts. @@ -1350,32 +1475,42 @@ return client; } - struct JoinOnDrop(Option>>); + struct KillOnDrop(Child); - impl Drop for JoinOnDrop { + impl Drop for KillOnDrop { fn drop(&mut self) { - if let Some(thread) = self.0.take() { - drop(thread.join()); - } + let child = &mut self.0; + + child.kill().ok(); + } + } + + struct JobserverToken(&'static jobserver::Client); + impl Drop for JobserverToken { + fn drop(&mut self) { + let _ = self.0.acquire_raw(); } } } #[cfg(not(feature = "parallel"))] - fn compile_objects(&self, objs: &[Object]) -> Result<(), Error> { + fn compile_objects(&self, objs: &[Object], print: &PrintThread) -> Result<(), Error> { for obj in objs { - self.compile_object(obj)?; + let (mut cmd, name) = self.create_compile_object_cmd(obj)?; + run(&mut cmd, &name, print)?; } + Ok(()) } - fn compile_object(&self, obj: &Object) -> Result<(), Error> { + fn create_compile_object_cmd(&self, obj: &Object) -> Result<(Command, String), Error> { let asm_ext = AsmFileExt::from_path(&obj.src); let is_asm = asm_ext.is_some(); let target = self.get_target()?; let msvc = target.contains("msvc"); let compiler = self.try_get_compiler()?; let clang = compiler.family == ToolFamily::Clang; + let gnu = compiler.family == ToolFamily::Gnu; let (mut cmd, name) = if msvc && asm_ext == Some(AsmFileExt::DotAsm) { self.msvc_macro_assembler()? @@ -1395,7 +1530,9 @@ ) }; let is_arm = target.contains("aarch64") || target.contains("arm"); - command_add_output_file(&mut cmd, &obj.dst, self.cuda, msvc, clang, is_asm, is_arm); + command_add_output_file( + &mut cmd, &obj.dst, self.cuda, msvc, clang, gnu, is_asm, is_arm, + ); // armasm and armasm64 don't requrie -c option if !msvc || !is_asm || !is_arm { cmd.arg("-c"); @@ -1404,7 +1541,7 @@ cmd.arg("--device-c"); } if is_asm { - cmd.args(&self.asm_flags); + cmd.args(self.asm_flags.iter().map(std::ops::Deref::deref)); } if compiler.family == (ToolFamily::Msvc { clang_cl: true }) && !is_asm { // #513: For `clang-cl`, separate flags/options from the input file. @@ -1418,8 +1555,7 @@ self.fix_env_for_apple_os(&mut cmd)?; } - run(&mut cmd, &name)?; - Ok(()) + Ok((cmd, name)) } /// This will return a result instead of panicing; see expand() for the complete description. @@ -1436,9 +1572,7 @@ "Expand may only be called for a single file" ); - for file in self.files.iter() { - cmd.arg(file); - } + cmd.args(self.files.iter().map(std::ops::Deref::deref)); let name = compiler .path @@ -1502,7 +1636,6 @@ let target = self.get_target()?; let mut cmd = self.get_base_compiler()?; - let envflags = self.envflags(if self.cpp { "CXXFLAGS" } else { "CFLAGS" }); // Disable default flag generation via `no_default_flags` or environment variable let no_defaults = self.no_default_flags || self.getenv("CRATE_CC_NO_DEFAULTS").is_some(); @@ -1513,13 +1646,23 @@ println!("Info: default compiler flags are disabled"); } - for arg in envflags { - cmd.push_cc_arg(arg.into()); + if let Some(ref std) = self.std { + let separator = match cmd.family { + ToolFamily::Msvc { .. } => ':', + ToolFamily::Gnu | ToolFamily::Clang => '=', + }; + cmd.push_cc_arg(format!("-std{}{}", separator, std).into()); + } + + if let Ok(flags) = self.envflags(if self.cpp { "CXXFLAGS" } else { "CFLAGS" }) { + for arg in flags { + cmd.push_cc_arg(arg.into()); + } } for directory in self.include_directories.iter() { cmd.args.push("-I".into()); - cmd.args.push(directory.into()); + cmd.args.push((**directory).into()); } // If warnings and/or extra_warnings haven't been explicitly set, @@ -1545,12 +1688,12 @@ } for flag in self.flags.iter() { - cmd.args.push(flag.into()); + cmd.args.push((**flag).into()); } for flag in self.flags_supported.iter() { if self.is_flag_supported(flag).unwrap_or(false) { - cmd.push_cc_arg(flag.into()); + cmd.push_cc_arg((**flag).into()); } } @@ -1586,9 +1729,8 @@ Some(true) => "-MT", Some(false) => "-MD", None => { - let features = self - .getenv("CARGO_CFG_TARGET_FEATURE") - .unwrap_or(String::new()); + let features = self.getenv("CARGO_CFG_TARGET_FEATURE"); + let features = features.as_deref().unwrap_or_default(); if features.contains("crt-static") { "-MT" } else { @@ -1615,6 +1757,13 @@ cmd.push_opt_unless_duplicate(format!("-O{}", opt_level).into()); } + if cmd.family == ToolFamily::Clang && target.contains("windows") { + // Disambiguate mingw and msvc on Windows. Problem is that + // depending on the origin clang can default to a mismatchig + // run-time. + cmd.push_cc_arg(format!("--target={}", target).into()); + } + if cmd.family == ToolFamily::Clang && target.contains("android") { // For compatibility with code that doesn't use pre-defined `__ANDROID__` macro. // If compiler used via ndk-build or cmake (officially supported build methods) @@ -1722,6 +1871,30 @@ } else if target.contains("aarch64") { cmd.args.push("--target=aarch64-unknown-windows-gnu".into()) } + } else if target.ends_with("-freebsd") { + // FreeBSD only supports C++11 and above when compiling against libc++ + // (available from FreeBSD 10 onwards). Under FreeBSD, clang uses libc++ by + // default on FreeBSD 10 and newer unless `--target` is manually passed to + // the compiler, in which case its default behavior differs: + // * If --target=xxx-unknown-freebsdX(.Y) is specified and X is greater than + // or equal to 10, clang++ uses libc++ + // * If --target=xxx-unknown-freebsd is specified (without a version), + // clang++ cannot assume libc++ is available and reverts to a default of + // libstdc++ (this behavior was changed in llvm 14). + // + // This breaks C++11 (or greater) builds if targeting FreeBSD with the + // generic xxx-unknown-freebsd triple on clang 13 or below *without* + // explicitly specifying that libc++ should be used. + // When cross-compiling, we can't infer from the rust/cargo target triple + // which major version of FreeBSD we are targeting, so we need to make sure + // that libc++ is used (unless the user has explicitly specified otherwise). + // There's no compelling reason to use a different approach when compiling + // natively. + if self.cpp && self.cpp_set_stdlib.is_none() { + cmd.push_cc_arg("-stdlib=libc++".into()); + } + + cmd.push_cc_arg(format!("--target={}", target).into()); } else { cmd.push_cc_arg(format!("--target={}", target).into()); } @@ -1784,9 +1957,8 @@ } if self.static_flag.is_none() { - let features = self - .getenv("CARGO_CFG_TARGET_FEATURE") - .unwrap_or(String::new()); + let features = self.getenv("CARGO_CFG_TARGET_FEATURE"); + let features = features.as_deref().unwrap_or_default(); if features.contains("crt-static") { cmd.args.push("-static".into()); } @@ -1946,6 +2118,9 @@ } else if target.contains("freebsd") && arch.starts_with("64") { cmd.args.push(("-march=rv64gc").into()); cmd.args.push("-mabi=lp64d".into()); + } else if target.contains("netbsd") && arch.starts_with("64") { + cmd.args.push(("-march=rv64gc").into()); + cmd.args.push("-mabi=lp64d".into()); } else if target.contains("openbsd") && arch.starts_with("64") { cmd.args.push(("-march=rv64gc").into()); cmd.args.push("-mabi=lp64d".into()); @@ -1997,7 +2172,7 @@ fn has_flags(&self) -> bool { let flags_env_var_name = if self.cpp { "CXXFLAGS" } else { "CFLAGS" }; - let flags_env_var_value = self.get_var(flags_env_var_name); + let flags_env_var_value = self.getenv_with_target_prefixes(flags_env_var_name); if let Ok(_) = flags_env_var_value { true } else { @@ -2019,7 +2194,7 @@ let mut cmd = windows_registry::find(&target, tool).unwrap_or_else(|| self.cmd(tool)); cmd.arg("-nologo"); // undocumented, yet working with armasm[64] for directory in self.include_directories.iter() { - cmd.arg("-I").arg(directory); + cmd.arg("-I").arg(&**directory); } if target.contains("aarch64") || target.contains("arm") { if self.get_debug() { @@ -2045,27 +2220,33 @@ cmd.arg("-safeseh"); } for flag in self.flags.iter() { - cmd.arg(flag); + cmd.arg(&**flag); } Ok((cmd, tool.to_string())) } - fn assemble(&self, lib_name: &str, dst: &Path, objs: &[Object]) -> Result<(), Error> { + fn assemble( + &self, + lib_name: &str, + dst: &Path, + objs: &[Object], + print: &PrintThread, + ) -> Result<(), Error> { // Delete the destination if it exists as we want to // create on the first iteration instead of appending. - let _ = fs::remove_file(&dst); + let _ = fs::remove_file(dst); // Add objects to the archive in limited-length batches. This helps keep // the length of the command line within a reasonable length to avoid // blowing system limits on limiting platforms like Windows. let objs: Vec<_> = objs .iter() - .map(|o| o.dst.clone()) - .chain(self.objects.clone()) + .map(|o| o.dst.as_path()) + .chain(self.objects.iter().map(std::ops::Deref::deref)) .collect(); for chunk in objs.chunks(100) { - self.assemble_progressive(dst, chunk)?; + self.assemble_progressive(dst, chunk, print)?; } if self.cuda && self.cuda_file_count() > 0 { @@ -2075,12 +2256,9 @@ let out_dir = self.get_out_dir()?; let dlink = out_dir.join(lib_name.to_owned() + "_dlink.o"); let mut nvcc = self.get_compiler().to_command(); - nvcc.arg("--device-link") - .arg("-o") - .arg(dlink.clone()) - .arg(dst); - run(&mut nvcc, "nvcc")?; - self.assemble_progressive(dst, &[dlink])?; + nvcc.arg("--device-link").arg("-o").arg(&dlink).arg(dst); + run(&mut nvcc, "nvcc", print)?; + self.assemble_progressive(dst, &[dlink.as_path()], print)?; } let target = self.get_target()?; @@ -2112,13 +2290,18 @@ // NOTE: We add `s` even if flags were passed using $ARFLAGS/ar_flag, because `s` // here represents a _mode_, not an arbitrary flag. Further discussion of this choice // can be seen in https://github.com/rust-lang/cc-rs/pull/763. - run(ar.arg("s").arg(dst), &cmd)?; + run(ar.arg("s").arg(dst), &cmd, print)?; } Ok(()) } - fn assemble_progressive(&self, dst: &Path, objs: &[PathBuf]) -> Result<(), Error> { + fn assemble_progressive( + &self, + dst: &Path, + objs: &[&Path], + print: &PrintThread, + ) -> Result<(), Error> { let target = self.get_target()?; if target.contains("msvc") { @@ -2139,7 +2322,7 @@ cmd.arg(dst); } cmd.args(objs); - run(&mut cmd, &program)?; + run(&mut cmd, &program, print)?; } else { let (mut ar, cmd, _any_flags) = self.get_ar()?; @@ -2170,7 +2353,7 @@ // NOTE: We add cq here regardless of whether $ARFLAGS/ar_flag have been used because // it dictates the _mode_ ar runs in, which the setter of $ARFLAGS/ar_flag can't // dictate. See https://github.com/rust-lang/cc-rs/pull/763 for further discussion. - run(ar.arg("cq").arg(dst).args(objs), &cmd)?; + run(ar.arg("cq").arg(dst).args(objs), &cmd, print)?; } Ok(()) @@ -2206,7 +2389,7 @@ let arch = target.split('-').nth(0).ok_or_else(|| { Error::new( ErrorKind::ArchitectureInvalid, - format!("Unknown architecture for {} target.", os).as_str(), + format!("Unknown architecture for {} target.", os), ) })?; @@ -2256,7 +2439,7 @@ _ => { return Err(Error::new( ErrorKind::ArchitectureInvalid, - format!("Unknown architecture for {} target.", os).as_str(), + format!("Unknown architecture for {} target.", os), )); } } @@ -2298,7 +2481,7 @@ ArchSpec::Catalyst(_) => "macosx".to_owned(), }; - self.print(&format!("Detecting {} SDK path for {}", os, sdk)); + self.print(&format_args!("Detecting {} SDK path for {}", os, sdk)); let sdk_path = if let Some(sdkroot) = env::var_os("SDKROOT") { sdkroot } else { @@ -2322,11 +2505,12 @@ } fn get_base_compiler(&self) -> Result { - if let Some(ref c) = self.compiler { - return Ok(Tool::new(c.clone())); + if let Some(c) = &self.compiler { + return Ok(Tool::new((**c).to_owned())); } let host = self.get_host()?; let target = self.get_target()?; + let target = &*target; let (env, msvc, gnu, traditional, clang) = if self.cpp { ("CXX", "cl.exe", "g++", "c++", "clang++") } else { @@ -2358,7 +2542,7 @@ // semi-buggy build scripts which are shared in // makefiles/configure scripts (where spaces are far more // lenient) - let mut t = Tool::with_clang_driver(PathBuf::from(tool.trim()), driver_mode); + let mut t = Tool::with_clang_driver(tool, driver_mode); if let Some(cc_wrapper) = wrapper { t.cc_wrapper_path = Some(PathBuf::from(cc_wrapper)); } @@ -2418,7 +2602,7 @@ format!("arm-kmc-eabi-{}", gnu) } else if target.starts_with("aarch64-kmc-solid_") { format!("aarch64-kmc-elf-{}", gnu) - } else if self.get_host()? != target { + } else if &*self.get_host()? != target { let prefix = self.prefix_for_target(&target); match prefix { Some(prefix) => { @@ -2444,11 +2628,11 @@ tool.args.is_empty(), "CUDA compilation currently assumes empty pre-existing args" ); - let nvcc = match self.get_var("NVCC") { - Err(_) => "nvcc".into(), - Ok(nvcc) => nvcc, + let nvcc = match self.getenv_with_target_prefixes("NVCC") { + Err(_) => PathBuf::from("nvcc"), + Ok(nvcc) => PathBuf::from(&*nvcc), }; - let mut nvcc_tool = Tool::with_features(PathBuf::from(nvcc), None, self.cuda); + let mut nvcc_tool = Tool::with_features(nvcc, None, self.cuda); nvcc_tool .args .push(format!("-ccbin={}", tool.path.display()).into()); @@ -2513,35 +2697,11 @@ } } - Ok(tool) - } - - fn get_var(&self, var_base: &str) -> Result { - let target = self.get_target()?; - let host = self.get_host()?; - let kind = if host == target { "HOST" } else { "TARGET" }; - let target_u = target.replace("-", "_"); - let res = self - .getenv(&format!("{}_{}", var_base, target)) - .or_else(|| self.getenv(&format!("{}_{}", var_base, target_u))) - .or_else(|| self.getenv(&format!("{}_{}", kind, var_base))) - .or_else(|| self.getenv(var_base)); - - match res { - Some(res) => Ok(res), - None => Err(Error::new( - ErrorKind::EnvVarNotFound, - &format!("Could not find environment variable {}.", var_base), - )), + if target.contains("msvc") && tool.family == ToolFamily::Gnu { + println!("cargo:warning=GNU compiler is not supported for this target"); } - } - fn envflags(&self, name: &str) -> Vec { - self.get_var(name) - .unwrap_or(String::new()) - .split_ascii_whitespace() - .map(|slice| slice.to_string()) - .collect() + Ok(tool) } /// Returns a fallback `cc_compiler_wrapper` by introspecting `RUSTC_WRAPPER` @@ -2563,8 +2723,8 @@ } /// Returns compiler path, optional modifier name from whitelist, and arguments vec - fn env_tool(&self, name: &str) -> Option<(String, Option, Vec)> { - let tool = match self.get_var(name) { + fn env_tool(&self, name: &str) -> Option<(PathBuf, Option, Vec)> { + let tool = match self.getenv_with_target_prefixes(name) { Ok(tool) => tool, Err(_) => return None, }; @@ -2572,8 +2732,8 @@ // If this is an exact path on the filesystem we don't want to do any // interpretation at all, just pass it on through. This'll hopefully get // us to support spaces-in-paths. - if Path::new(&tool).exists() { - return Some((tool, None, Vec::new())); + if Path::new(&*tool).exists() { + return Some((PathBuf::from(&*tool), None, Vec::new())); } // Ok now we want to handle a couple of scenarios. We'll assume from @@ -2612,7 +2772,7 @@ if known_wrappers.contains(&file_stem) { if let Some(compiler) = parts.next() { return Some(( - compiler.to_string(), + compiler.into(), Some(maybe_wrapper.to_string()), parts.map(|s| s.to_string()).collect(), )); @@ -2620,7 +2780,7 @@ } Some(( - maybe_wrapper.to_string(), + maybe_wrapper.into(), Self::rustc_wrapper_fallback(), parts.map(|s| s.to_string()).collect(), )) @@ -2632,14 +2792,14 @@ /// 3. Else the default is `libc++` for OS X and BSDs, `libc++_shared` for Android, /// `None` for MSVC and `libstdc++` for anything else. fn get_cpp_link_stdlib(&self) -> Result, Error> { - match self.cpp_link_stdlib.clone() { - Some(s) => Ok(s), + match &self.cpp_link_stdlib { + Some(s) => Ok(s.as_ref().map(|s| (*s).to_string())), None => { - if let Ok(stdlib) = self.get_var("CXXSTDLIB") { + if let Ok(stdlib) = self.getenv_with_target_prefixes("CXXSTDLIB") { if stdlib.is_empty() { Ok(None) } else { - Ok(Some(stdlib)) + Ok(Some(stdlib.to_string())) } } else { let target = self.get_target()?; @@ -2651,6 +2811,8 @@ Ok(Some("c++".to_string())) } else if target.contains("openbsd") { Ok(Some("c++".to_string())) + } else if target.contains("aix") { + Ok(Some("c++".to_string())) } else if target.contains("android") { Ok(Some("c++_shared".to_string())) } else { @@ -2696,19 +2858,21 @@ fn try_get_archiver_and_flags(&self) -> Result<(Command, String, bool), Error> { let (mut cmd, name) = self.get_base_archiver()?; - let flags = self.envflags("ARFLAGS"); - let mut any_flags = !flags.is_empty(); - cmd.args(flags); + let mut any_flags = false; + if let Ok(flags) = self.envflags("ARFLAGS") { + any_flags = any_flags | !flags.is_empty(); + cmd.args(flags); + } for flag in &self.ar_flags { any_flags = true; - cmd.arg(flag); + cmd.arg(&**flag); } Ok((cmd, name, any_flags)) } fn get_base_archiver(&self) -> Result<(Command, String), Error> { if let Some(ref a) = self.archiver { - return Ok((self.cmd(a), a.to_string_lossy().into_owned())); + return Ok((self.cmd(&**a), a.to_string_lossy().into_owned())); } self.get_base_archiver_variant("AR", "ar") @@ -2741,13 +2905,15 @@ /// see [`get_ranlib()`] for the complete description. pub fn try_get_ranlib(&self) -> Result { let mut cmd = self.get_base_ranlib()?; - cmd.args(self.envflags("RANLIBFLAGS")); + if let Ok(flags) = self.envflags("RANLIBFLAGS") { + cmd.args(flags); + } Ok(cmd) } fn get_base_ranlib(&self) -> Result { if let Some(ref r) = self.ranlib { - return Ok(self.cmd(r)); + return Ok(self.cmd(&**r)); } Ok(self.get_base_archiver_variant("RANLIB", "ranlib")?.0) @@ -2775,6 +2941,20 @@ name = format!("em{}", tool); Some(self.cmd(&name)) } + } else if target.starts_with("wasm32") { + // Formally speaking one should be able to use this approach, + // parsing -print-search-dirs output, to cover all clang targets, + // including Android SDKs and other cross-compilation scenarios... + // And even extend it to gcc targets by seaching for "ar" instead + // of "llvm-ar"... + let compiler = self.get_base_compiler().ok()?; + if compiler.family == ToolFamily::Clang { + name = format!("llvm-{}", tool); + search_programs(&mut self.cmd(&compiler.path), &name) + .map(|name| self.cmd(&name)) + } else { + None + } } else { None } @@ -2801,10 +2981,10 @@ // next to 'clang-cl' and use 'search_programs()' to locate // 'llvm-lib'. This is because 'clang-cl' doesn't support // the -print-search-dirs option. - if let Some(mut cmd) = which(&compiler.path) { + if let Some(mut cmd) = which(&compiler.path, None) { cmd.pop(); cmd.push("llvm-lib.exe"); - if let Some(llvm_lib) = which(&cmd) { + if let Some(llvm_lib) = which(&cmd, None) { lib = llvm_lib.to_str().unwrap().to_owned(); } } @@ -2864,23 +3044,14 @@ } fn prefix_for_target(&self, target: &str) -> Option { - // Put aside RUSTC_LINKER's prefix to be used as last resort - let rustc_linker = self.getenv("RUSTC_LINKER").unwrap_or("".to_string()); - // let linker_prefix = rustc_linker.strip_suffix("-gcc"); // >=1.45.0 - let linker_prefix = if rustc_linker.len() > 4 { - let (prefix, suffix) = rustc_linker.split_at(rustc_linker.len() - 4); - if suffix == "-gcc" { - Some(prefix) - } else { - None - } - } else { - None - }; + // Put aside RUSTC_LINKER's prefix to be used as second choice, after CROSS_COMPILE + let linker_prefix = self + .getenv("RUSTC_LINKER") + .and_then(|var| var.strip_suffix("-gcc").map(str::to_string)); // CROSS_COMPILE is of the form: "arm-linux-gnueabi-" let cc_env = self.getenv("CROSS_COMPILE"); let cross_compile = cc_env.as_ref().map(|s| s.trim_end_matches('-').to_owned()); - cross_compile.or(match &target[..] { + cross_compile.or(linker_prefix).or(match &target[..] { // Note: there is no `aarch64-pc-windows-gnu` target, only `-gnullvm` "aarch64-pc-windows-gnullvm" => Some("aarch64-w64-mingw32"), "aarch64-uwp-windows-gnu" => Some("aarch64-w64-mingw32"), @@ -2917,6 +3088,7 @@ ]), // explicit None if not found, so caller knows to fall back "i686-unknown-linux-musl" => Some("musl"), "i686-unknown-netbsd" => Some("i486--netbsdelf"), + "loongarch64-unknown-linux-gnu" => Some("loongarch64-linux-gnu"), "mips-unknown-linux-gnu" => Some("mips-linux-gnu"), "mips-unknown-linux-musl" => Some("mips-linux-musl"), "mipsel-unknown-linux-gnu" => Some("mipsel-linux-gnu"), @@ -2967,6 +3139,7 @@ "riscv32gc-unknown-linux-gnu" => Some("riscv32-linux-gnu"), "riscv64gc-unknown-linux-musl" => Some("riscv64-linux-musl"), "riscv32gc-unknown-linux-musl" => Some("riscv32-linux-musl"), + "riscv64gc-unknown-netbsd" => Some("riscv64--netbsd"), "s390x-unknown-linux-gnu" => Some("s390x-linux-gnu"), "sparc-unknown-linux-gnu" => Some("sparc-linux-gnu"), "sparc64-unknown-linux-gnu" => Some("sparc64-linux-gnu"), @@ -2994,7 +3167,7 @@ ]), // explicit None if not found, so caller knows to fall back "x86_64-unknown-linux-musl" => Some("musl"), "x86_64-unknown-netbsd" => Some("x86_64--netbsd"), - _ => linker_prefix, + _ => None, } .map(|x| x.to_owned())) } @@ -3031,30 +3204,30 @@ prefixes.first().map(|prefix| *prefix)) } - fn get_target(&self) -> Result { - match self.target.clone() { - Some(t) => Ok(t), - None => Ok(self.getenv_unwrap("TARGET")?), + fn get_target(&self) -> Result, Error> { + match &self.target { + Some(t) => Ok(t.clone()), + None => self.getenv_unwrap("TARGET"), } } - fn get_host(&self) -> Result { - match self.host.clone() { - Some(h) => Ok(h), - None => Ok(self.getenv_unwrap("HOST")?), + fn get_host(&self) -> Result, Error> { + match &self.host { + Some(h) => Ok(h.clone()), + None => self.getenv_unwrap("HOST"), } } - fn get_opt_level(&self) -> Result { - match self.opt_level.as_ref().cloned() { - Some(ol) => Ok(ol), - None => Ok(self.getenv_unwrap("OPT_LEVEL")?), + fn get_opt_level(&self) -> Result, Error> { + match &self.opt_level { + Some(ol) => Ok(ol.clone()), + None => self.getenv_unwrap("OPT_LEVEL"), } } fn get_debug(&self) -> bool { self.debug.unwrap_or_else(|| match self.getenv("DEBUG") { - Some(s) => s != "false", + Some(s) => &*s != "false", None => false, }) } @@ -3082,19 +3255,22 @@ self.force_frame_pointer.unwrap_or_else(|| self.get_debug()) } - fn get_out_dir(&self) -> Result { - match self.out_dir.clone() { - Some(p) => Ok(p), - None => Ok(env::var_os("OUT_DIR").map(PathBuf::from).ok_or_else(|| { - Error::new( - ErrorKind::EnvVarNotFound, - "Environment variable OUT_DIR not defined.", - ) - })?), + fn get_out_dir(&self) -> Result, Error> { + match &self.out_dir { + Some(p) => Ok(Cow::Borrowed(&**p)), + None => env::var_os("OUT_DIR") + .map(PathBuf::from) + .map(Cow::Owned) + .ok_or_else(|| { + Error::new( + ErrorKind::EnvVarNotFound, + "Environment variable OUT_DIR not defined.", + ) + }), } } - fn getenv(&self, v: &str) -> Option { + fn getenv(&self, v: &str) -> Option> { // Returns true for environment variables cargo sets for build scripts: // https://doc.rust-lang.org/cargo/reference/environment-variables.html#environment-variables-cargo-sets-for-build-scripts // @@ -3114,25 +3290,53 @@ return val.clone(); } if self.emit_rerun_if_env_changed && !provided_by_cargo(v) { - self.print(&format!("cargo:rerun-if-env-changed={}", v)); + self.print(&format_args!("cargo:rerun-if-env-changed={}", v)); } - let r = env::var(v).ok(); - self.print(&format!("{} = {:?}", v, r)); + let r = env::var(v).ok().map(Arc::from); + self.print(&format_args!("{} = {:?}", v, r)); cache.insert(v.to_string(), r.clone()); r } - fn getenv_unwrap(&self, v: &str) -> Result { + fn getenv_unwrap(&self, v: &str) -> Result, Error> { match self.getenv(v) { Some(s) => Ok(s), None => Err(Error::new( ErrorKind::EnvVarNotFound, - &format!("Environment variable {} not defined.", v.to_string()), + format!("Environment variable {} not defined.", v), + )), + } + } + + fn getenv_with_target_prefixes(&self, var_base: &str) -> Result, Error> { + let target = self.get_target()?; + let host = self.get_host()?; + let kind = if host == target { "HOST" } else { "TARGET" }; + let target_u = target.replace("-", "_"); + let res = self + .getenv(&format!("{}_{}", var_base, target)) + .or_else(|| self.getenv(&format!("{}_{}", var_base, target_u))) + .or_else(|| self.getenv(&format!("{}_{}", kind, var_base))) + .or_else(|| self.getenv(var_base)); + + match res { + Some(res) => Ok(res), + None => Err(Error::new( + ErrorKind::EnvVarNotFound, + format!("Could not find environment variable {}.", var_base), )), } } - fn print(&self, s: &str) { + fn envflags(&self, name: &str) -> Result, Error> { + Ok(self + .getenv_with_target_prefixes(name)? + .split_ascii_whitespace() + .map(|slice| slice.to_string()) + .collect()) + } + + fn print(&self, s: &dyn Display) { if self.cargo_metadata { println!("{}", s); } @@ -3268,11 +3472,14 @@ self.removed_args.push(flag); } - /// Add a flag, and optionally prepend the NVCC wrapper flag "-Xcompiler". + /// Push an "exotic" flag to the end of the compiler's arguments list. /// - /// Currently this is only used for compiling CUDA sources, since NVCC only - /// accepts a limited set of GNU-like flags, and the rest must be prefixed - /// with a "-Xcompiler" flag to get passed to the underlying C++ compiler. + /// Nvidia compiler accepts only the most common compiler flags like `-D`, + /// `-I`, `-c`, etc. Options meant specifically for the underlying + /// host C++ compiler have to be prefixed with '-Xcompiler`. + /// [Another possible future application for this function is passing + /// clang-specific flags to clang-cl, which otherwise accepts only + /// MSVC-specific options.] fn push_cc_arg(&mut self, flag: OsString) { if self.cuda { self.args.push("-Xcompiler".into()); @@ -3280,6 +3487,9 @@ self.args.push(flag); } + /// Checks if an argument or flag has already been specified or conflicts. + /// + /// Currently only checks optimization flags. fn is_duplicate_opt_arg(&self, flag: &OsString) -> bool { let flag = flag.to_str().unwrap(); let mut chars = flag.chars(); @@ -3307,7 +3517,7 @@ return false; } - /// Don't push optimization arg if it conflicts with existing args + /// Don't push optimization arg if it conflicts with existing args. fn push_opt_unless_duplicate(&mut self, flag: OsString) { if self.is_duplicate_opt_arg(&flag) { println!("Info: Ignoring duplicate arg {:?}", &flag); @@ -3420,21 +3630,19 @@ } } -fn run(cmd: &mut Command, program: &str) -> Result<(), Error> { - let (mut child, print) = spawn(cmd, program)?; +fn wait_on_child(cmd: &Command, program: &str, child: &mut Child) -> Result<(), Error> { let status = match child.wait() { Ok(s) => s, - Err(_) => { + Err(e) => { return Err(Error::new( ErrorKind::ToolExecError, - &format!( - "Failed to wait on spawned child process, command {:?} with args {:?}.", - cmd, program + format!( + "Failed to wait on spawned child process, command {:?} with args {:?}: {}.", + cmd, program, e ), )); } }; - print.join().unwrap(); println!("{}", status); if status.success() { @@ -3442,7 +3650,7 @@ } else { Err(Error::new( ErrorKind::ToolExecError, - &format!( + format!( "Command {:?} with args {:?} did not execute successfully (status code {}).", cmd, program, status ), @@ -3450,9 +3658,57 @@ } } +#[cfg(feature = "parallel")] +fn try_wait_on_child( + cmd: &Command, + program: &str, + child: &mut Child, + stdout: &mut dyn io::Write, +) -> Result, Error> { + match child.try_wait() { + Ok(Some(status)) => { + let _ = writeln!(stdout, "{}", status); + + if status.success() { + Ok(Some(())) + } else { + Err(Error::new( + ErrorKind::ToolExecError, + format!( + "Command {:?} with args {:?} did not execute successfully (status code {}).", + cmd, program, status + ), + )) + } + } + Ok(None) => Ok(None), + Err(e) => Err(Error::new( + ErrorKind::ToolExecError, + format!( + "Failed to wait on spawned child process, command {:?} with args {:?}: {}.", + cmd, program, e + ), + )), + } +} + +fn run_inner(cmd: &mut Command, program: &str, pipe_writer: File) -> Result<(), Error> { + let mut child = spawn(cmd, program, pipe_writer)?; + wait_on_child(cmd, program, &mut child) +} + +fn run(cmd: &mut Command, program: &str, print: &PrintThread) -> Result<(), Error> { + run_inner(cmd, program, print.pipe_writer_cloned()?.unwrap())?; + + Ok(()) +} + fn run_output(cmd: &mut Command, program: &str) -> Result, Error> { cmd.stdout(Stdio::piped()); - let (mut child, print) = spawn(cmd, program)?; + + let mut print = PrintThread::new()?; + let mut child = spawn(cmd, program, print.pipe_writer().take().unwrap())?; + let mut stdout = vec![]; child .stdout @@ -3460,53 +3716,29 @@ .unwrap() .read_to_end(&mut stdout) .unwrap(); - let status = match child.wait() { - Ok(s) => s, - Err(_) => { - return Err(Error::new( - ErrorKind::ToolExecError, - &format!( - "Failed to wait on spawned child process, command {:?} with args {:?}.", - cmd, program - ), - )); - } - }; - print.join().unwrap(); - println!("{}", status); - if status.success() { - Ok(stdout) - } else { - Err(Error::new( - ErrorKind::ToolExecError, - &format!( - "Command {:?} with args {:?} did not execute successfully (status code {}).", - cmd, program, status - ), - )) - } + wait_on_child(cmd, program, &mut child)?; + + Ok(stdout) } -fn spawn(cmd: &mut Command, program: &str) -> Result<(Child, JoinHandle<()>), Error> { - println!("running: {:?}", cmd); +fn spawn(cmd: &mut Command, program: &str, pipe_writer: File) -> Result { + struct ResetStderr<'cmd>(&'cmd mut Command); - // Capture the standard error coming from these programs, and write it out - // with cargo:warning= prefixes. Note that this is a bit wonky to avoid - // requiring the output to be UTF-8, we instead just ship bytes from one - // location to another. - match cmd.stderr(Stdio::piped()).spawn() { - Ok(mut child) => { - let stderr = BufReader::new(child.stderr.take().unwrap()); - let print = thread::spawn(move || { - for line in stderr.split(b'\n').filter_map(|l| l.ok()) { - print!("cargo:warning="); - std::io::stdout().write_all(&line).unwrap(); - println!(""); - } - }); - Ok((child, print)) + impl Drop for ResetStderr<'_> { + fn drop(&mut self) { + // Reset stderr to default to release pipe_writer so that print thread will + // not block forever. + self.0.stderr(Stdio::inherit()); } + } + + println!("running: {:?}", cmd); + + let cmd = ResetStderr(cmd); + + match cmd.0.stderr(pipe_writer).spawn() { + Ok(child) => Ok(child), Err(ref e) if e.kind() == io::ErrorKind::NotFound => { let extra = if cfg!(windows) { " (see https://github.com/rust-lang/cc-rs#compile-time-requirements \ @@ -3516,14 +3748,14 @@ }; Err(Error::new( ErrorKind::ToolNotFound, - &format!("Failed to find tool. Is `{}` installed?{}", program, extra), + format!("Failed to find tool. Is `{}` installed?{}", program, extra), )) } - Err(ref e) => Err(Error::new( + Err(e) => Err(Error::new( ErrorKind::ToolExecError, - &format!( + format!( "Command {:?} with args {:?} failed to start: {:?}", - cmd, program, e + cmd.0, program, e ), )), } @@ -3540,10 +3772,11 @@ cuda: bool, msvc: bool, clang: bool, + gnu: bool, is_asm: bool, is_arm: bool, ) { - if msvc && !clang && !cuda && !(is_asm && is_arm) { + if msvc && !clang && !gnu && !cuda && !(is_asm && is_arm) { let mut s = OsString::from("-Fo"); s.push(&dst); cmd.arg(s); @@ -3573,13 +3806,12 @@ fn android_clang_compiler_uses_target_arg_internally(clang_path: &Path) -> bool { if let Some(filename) = clang_path.file_name() { if let Some(filename_str) = filename.to_str() { - filename_str.contains("android") - } else { - false + if let Some(idx) = filename_str.rfind("-") { + return filename_str.split_at(idx).0.contains("android"); + } } - } else { - false } + false } #[test] @@ -3593,6 +3825,9 @@ )); } assert!(!android_clang_compiler_uses_target_arg_internally( + &PathBuf::from("clang-i686-linux-android") + )); + assert!(!android_clang_compiler_uses_target_arg_internally( &PathBuf::from("clang") )); assert!(!android_clang_compiler_uses_target_arg_internally( @@ -3649,7 +3884,9 @@ // Rust and clang/cc don't agree on how to name the target. fn map_darwin_target_from_rust_to_compiler_architecture(target: &str) -> Option<&'static str> { - if target.contains("x86_64") { + if target.contains("x86_64h") { + Some("x86_64h") + } else if target.contains("x86_64") { Some("x86_64") } else if target.contains("arm64e") { Some("arm64e") @@ -3666,7 +3903,7 @@ } } -fn which(tool: &Path) -> Option { +fn which(tool: &Path, path_entries: Option) -> Option { fn check_exe(exe: &mut PathBuf) -> bool { let exe_ext = std::env::consts::EXE_EXTENSION; exe.exists() || (!exe_ext.is_empty() && exe.set_extension(exe_ext) && exe.exists()) @@ -3679,13 +3916,27 @@ } // Loop through PATH entries searching for the |tool|. - let path_entries = env::var_os("PATH")?; + let path_entries = path_entries.or(env::var_os("PATH"))?; env::split_paths(&path_entries).find_map(|path_entry| { let mut exe = path_entry.join(tool); return if check_exe(&mut exe) { Some(exe) } else { None }; }) } +// search for |prog| on 'programs' path in '|cc| -print-search-dirs' output +fn search_programs(cc: &mut Command, prog: &str) -> Option { + let search_dirs = run_output(cc.arg("-print-search-dirs"), "cc").ok()?; + // clang driver appears to be forcing UTF-8 output even on Windows, + // hence from_utf8 is assumed to be usable in all cases. + let search_dirs = std::str::from_utf8(&search_dirs).ok()?; + for dirs in search_dirs.split(|c| c == '\r' || c == '\n') { + if let Some(path) = dirs.strip_prefix("programs: =") { + return which(Path::new(prog), Some(OsString::from(path))); + } + } + None +} + #[derive(Clone, Copy, PartialEq)] enum AsmFileExt { /// `.asm` files. On MSVC targets, we assume these should be passed to MASM @@ -3710,3 +3961,64 @@ None } } + +struct PrintThread { + handle: Option>, + pipe_writer: Option, +} + +impl PrintThread { + fn new() -> Result { + let (pipe_reader, pipe_writer) = os_pipe::pipe()?; + + // Capture the standard error coming from compilation, and write it out + // with cargo:warning= prefixes. Note that this is a bit wonky to avoid + // requiring the output to be UTF-8, we instead just ship bytes from one + // location to another. + let print = thread::spawn(move || { + let mut stderr = BufReader::with_capacity(4096, pipe_reader); + let mut line = Vec::with_capacity(20); + let stdout = io::stdout(); + + // read_until returns 0 on Eof + while stderr.read_until(b'\n', &mut line).unwrap() != 0 { + { + let mut stdout = stdout.lock(); + + stdout.write_all(b"cargo:warning=").unwrap(); + stdout.write_all(&line).unwrap(); + stdout.write_all(b"\n").unwrap(); + } + + // read_until does not clear the buffer + line.clear(); + } + }); + + Ok(Self { + handle: Some(print), + pipe_writer: Some(pipe_writer), + }) + } + + fn pipe_writer(&mut self) -> &mut Option { + &mut self.pipe_writer + } + + fn pipe_writer_cloned(&self) -> Result, Error> { + self.pipe_writer + .as_ref() + .map(File::try_clone) + .transpose() + .map_err(From::from) + } +} + +impl Drop for PrintThread { + fn drop(&mut self) { + // Drop pipe_writer first to avoid deadlock + self.pipe_writer.take(); + + self.handle.take().unwrap().join().unwrap(); + } +} diff -Nru temporalio-1.3.0/vendor/cc/src/os_pipe/unix.rs temporalio-1.3.0/vendor/cc/src/os_pipe/unix.rs --- temporalio-1.3.0/vendor/cc/src/os_pipe/unix.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/cc/src/os_pipe/unix.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,121 @@ +use std::{ + fs::File, + io, + os::{raw::c_int, unix::io::FromRawFd}, +}; + +pub(super) fn pipe() -> io::Result<(File, File)> { + let mut fds = [0; 2]; + + // The only known way right now to create atomically set the CLOEXEC flag is + // to use the `pipe2` syscall. This was added to Linux in 2.6.27, glibc 2.9 + // and musl 0.9.3, and some other targets also have it. + #[cfg(any( + target_os = "dragonfly", + target_os = "freebsd", + target_os = "linux", + target_os = "netbsd", + target_os = "openbsd", + target_os = "redox" + ))] + { + unsafe { + cvt(libc::pipe2(fds.as_mut_ptr(), libc::O_CLOEXEC))?; + } + } + + #[cfg(not(any( + target_os = "dragonfly", + target_os = "freebsd", + target_os = "linux", + target_os = "netbsd", + target_os = "openbsd", + target_os = "redox" + )))] + { + unsafe { + cvt(libc::pipe(fds.as_mut_ptr()))?; + } + + cloexec::set_cloexec(fds[0])?; + cloexec::set_cloexec(fds[1])?; + } + + unsafe { Ok((File::from_raw_fd(fds[0]), File::from_raw_fd(fds[1]))) } +} + +fn cvt(t: c_int) -> io::Result { + if t == -1 { + Err(io::Error::last_os_error()) + } else { + Ok(t) + } +} + +#[cfg(not(any( + target_os = "dragonfly", + target_os = "freebsd", + target_os = "linux", + target_os = "netbsd", + target_os = "openbsd", + target_os = "redox" +)))] +mod cloexec { + use super::{c_int, cvt, io}; + + #[cfg(not(any( + target_env = "newlib", + target_os = "solaris", + target_os = "illumos", + target_os = "emscripten", + target_os = "fuchsia", + target_os = "l4re", + target_os = "linux", + target_os = "haiku", + target_os = "redox", + target_os = "vxworks", + target_os = "nto", + )))] + pub(super) fn set_cloexec(fd: c_int) -> io::Result<()> { + unsafe { + cvt(libc::ioctl(fd, libc::FIOCLEX))?; + } + + Ok(()) + } + + #[cfg(any( + all( + target_env = "newlib", + not(any(target_os = "espidf", target_os = "horizon")) + ), + target_os = "solaris", + target_os = "illumos", + target_os = "emscripten", + target_os = "fuchsia", + target_os = "l4re", + target_os = "linux", + target_os = "haiku", + target_os = "redox", + target_os = "vxworks", + target_os = "nto", + ))] + pub(super) fn set_cloexec(fd: c_int) -> io::Result<()> { + unsafe { + let previous = cvt(libc::fcntl(fd, libc::F_GETFD))?; + let new = previous | libc::FD_CLOEXEC; + if new != previous { + cvt(libc::fcntl(fd, libc::F_SETFD, new))?; + } + } + + Ok(()) + } + + // FD_CLOEXEC is not supported in ESP-IDF and Horizon OS but there's no need to, + // because neither supports spawning processes. + #[cfg(any(target_os = "espidf", target_os = "horizon"))] + pub(super) fn set_cloexec(_fd: c_int) -> io::Result<()> { + Ok(()) + } +} diff -Nru temporalio-1.3.0/vendor/cc/src/os_pipe/windows.rs temporalio-1.3.0/vendor/cc/src/os_pipe/windows.rs --- temporalio-1.3.0/vendor/cc/src/os_pipe/windows.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/cc/src/os_pipe/windows.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,24 @@ +use crate::windows_sys::{CreatePipe, INVALID_HANDLE_VALUE}; +use std::{fs::File, io, os::windows::prelude::*, ptr}; + +/// NOTE: These pipes do not support IOCP. +/// +/// If IOCP is needed, then you might want to emulate +/// anonymous pipes with CreateNamedPipe, as Rust's stdlib does. +pub(super) fn pipe() -> io::Result<(File, File)> { + let mut read_pipe = INVALID_HANDLE_VALUE; + let mut write_pipe = INVALID_HANDLE_VALUE; + + let ret = unsafe { CreatePipe(&mut read_pipe, &mut write_pipe, ptr::null_mut(), 0) }; + + if ret == 0 { + Err(io::Error::last_os_error()) + } else { + unsafe { + Ok(( + File::from_raw_handle(read_pipe as RawHandle), + File::from_raw_handle(write_pipe as RawHandle), + )) + } + } +} diff -Nru temporalio-1.3.0/vendor/cc/src/os_pipe.rs temporalio-1.3.0/vendor/cc/src/os_pipe.rs --- temporalio-1.3.0/vendor/cc/src/os_pipe.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/cc/src/os_pipe.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,28 @@ +//! Adapted from: +//! - https://doc.rust-lang.org/src/std/sys/unix/pipe.rs.html +//! - https://doc.rust-lang.org/src/std/sys/unix/fd.rs.html#385 +//! - https://github.com/rust-lang/rust/blob/master/library/std/src/sys/mod.rs#L57 +//! - https://github.com/oconnor663/os_pipe.rs +use std::fs::File; + +/// Open a new pipe and return a pair of [`File`] objects for the reader and writer. +/// +/// 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. +pub fn pipe() -> std::io::Result<(File, File)> { + sys::pipe() +} + +#[cfg(unix)] +#[path = "os_pipe/unix.rs"] +mod sys; + +#[cfg(windows)] +#[path = "os_pipe/windows.rs"] +mod sys; + +#[cfg(all(not(unix), not(windows)))] +compile_error!("Only unix and windows support os_pipe!"); diff -Nru temporalio-1.3.0/vendor/cc/src/registry.rs temporalio-1.3.0/vendor/cc/src/registry.rs --- temporalio-1.3.0/vendor/cc/src/registry.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/cc/src/registry.rs 2023-10-30 19:40:00.000000000 +0000 @@ -8,63 +8,22 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use std::ffi::{OsStr, OsString}; -use std::io; -use std::ops::RangeFrom; -use std::os::raw; -use std::os::windows::prelude::*; +use crate::windows_sys::{ + RegCloseKey, RegEnumKeyExW, RegOpenKeyExW, RegQueryValueExW, ERROR_NO_MORE_ITEMS, + ERROR_SUCCESS, HKEY, HKEY_LOCAL_MACHINE, KEY_READ, KEY_WOW64_32KEY, REG_SZ, +}; +use std::{ + ffi::{OsStr, OsString}, + io, + ops::RangeFrom, + os::windows::prelude::*, + ptr::null_mut, +}; /// Must never be `HKEY_PERFORMANCE_DATA`. pub(crate) struct RegistryKey(Repr); -type HKEY = *mut u8; type DWORD = u32; -type LPDWORD = *mut DWORD; -type LPCWSTR = *const u16; -type LPWSTR = *mut u16; -type LONG = raw::c_long; -type PHKEY = *mut HKEY; -type PFILETIME = *mut u8; -type LPBYTE = *mut u8; -type REGSAM = u32; - -const ERROR_SUCCESS: DWORD = 0; -const ERROR_NO_MORE_ITEMS: DWORD = 259; -// Sign-extend into 64 bits if needed. -const HKEY_LOCAL_MACHINE: HKEY = 0x80000002u32 as i32 as isize as HKEY; -const REG_SZ: DWORD = 1; -const KEY_READ: DWORD = 0x20019; -const KEY_WOW64_32KEY: DWORD = 0x200; - -#[link(name = "advapi32")] -extern "system" { - fn RegOpenKeyExW( - key: HKEY, - lpSubKey: LPCWSTR, - ulOptions: DWORD, - samDesired: REGSAM, - phkResult: PHKEY, - ) -> LONG; - fn RegEnumKeyExW( - key: HKEY, - dwIndex: DWORD, - lpName: LPWSTR, - lpcName: LPDWORD, - lpReserved: LPDWORD, - lpClass: LPWSTR, - lpcClass: LPDWORD, - lpftLastWriteTime: PFILETIME, - ) -> LONG; - fn RegQueryValueExW( - hKey: HKEY, - lpValueName: LPCWSTR, - lpReserved: LPDWORD, - lpType: LPDWORD, - lpData: LPBYTE, - lpcbData: LPDWORD, - ) -> LONG; - fn RegCloseKey(hKey: HKEY) -> LONG; -} struct OwnedKey(HKEY); @@ -97,7 +56,7 @@ /// Open a sub-key of `self`. pub fn open(&self, key: &OsStr) -> io::Result { let key = key.encode_wide().chain(Some(0)).collect::>(); - let mut ret = 0 as *mut _; + let mut ret = null_mut(); let err = unsafe { RegOpenKeyExW( self.raw(), @@ -107,7 +66,7 @@ &mut ret, ) }; - if err == ERROR_SUCCESS as LONG { + if err == ERROR_SUCCESS { Ok(RegistryKey(Repr::Owned(OwnedKey(ret)))) } else { Err(io::Error::from_raw_os_error(err as i32)) @@ -130,12 +89,12 @@ let err = RegQueryValueExW( self.raw(), name.as_ptr(), - 0 as *mut _, + null_mut(), &mut kind, - 0 as *mut _, + null_mut(), &mut len, ); - if err != ERROR_SUCCESS as LONG { + if err != ERROR_SUCCESS { return Err(io::Error::from_raw_os_error(err as i32)); } if kind != REG_SZ { @@ -156,8 +115,8 @@ let err = RegQueryValueExW( self.raw(), name.as_ptr(), - 0 as *mut _, - 0 as *mut _, + null_mut(), + null_mut(), v.as_mut_ptr() as *mut _, &mut len, ); @@ -165,7 +124,7 @@ // grew between the first and second call to `RegQueryValueExW`), // both because it's extremely unlikely, and this is a bit more // defensive more defensive against weird types of registry keys. - if err != ERROR_SUCCESS as LONG { + if err != ERROR_SUCCESS { return Err(io::Error::from_raw_os_error(err as i32)); } // The length is allowed to change, but should still be even, as @@ -213,14 +172,14 @@ i, v.as_mut_ptr(), &mut len, - 0 as *mut _, - 0 as *mut _, - 0 as *mut _, - 0 as *mut _, + null_mut(), + null_mut(), + null_mut(), + null_mut(), ); - if ret == ERROR_NO_MORE_ITEMS as LONG { + if ret == ERROR_NO_MORE_ITEMS { None - } else if ret != ERROR_SUCCESS as LONG { + } else if ret != ERROR_SUCCESS { Some(Err(io::Error::from_raw_os_error(ret as i32))) } else { v.set_len(len as usize); diff -Nru temporalio-1.3.0/vendor/cc/src/setup_config.rs temporalio-1.3.0/vendor/cc/src/setup_config.rs --- temporalio-1.3.0/vendor/cc/src/setup_config.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/cc/src/setup_config.rs 2023-10-30 19:40:00.000000000 +0000 @@ -8,19 +8,19 @@ #![allow(bad_style)] #![allow(unused)] -use crate::winapi::Interface; -use crate::winapi::BSTR; -use crate::winapi::LPCOLESTR; -use crate::winapi::LPSAFEARRAY; -use crate::winapi::S_FALSE; -use crate::winapi::{CoCreateInstance, CLSCTX_ALL}; -use crate::winapi::{IUnknown, IUnknownVtbl}; -use crate::winapi::{HRESULT, LCID, LPCWSTR, PULONGLONG}; -use crate::winapi::{LPFILETIME, ULONG}; -use std::ffi::OsString; -use std::ptr::null_mut; - -use crate::com::{BStr, ComPtr}; +use crate::{ + com::{BStr, ComPtr}, + winapi::{ + IUnknown, IUnknownVtbl, Interface, LCID, LPCOLESTR, LPCWSTR, LPFILETIME, LPSAFEARRAY, + PULONGLONG, ULONG, + }, + windows_sys::{CoCreateInstance, BSTR, CLSCTX_ALL, HRESULT, S_FALSE}, +}; + +use std::{ + ffi::OsString, + ptr::{null, null_mut}, +}; // Bindings to the Setup.Configuration stuff pub type InstanceState = u32; @@ -212,7 +212,7 @@ SetupInstance(ComPtr::from_raw(obj)) } pub fn instance_id(&self) -> Result { - let mut s = null_mut(); + let mut s = null(); let err = unsafe { self.0.GetInstanceId(&mut s) }; let bstr = unsafe { BStr::from_raw(s) }; if err < 0 { @@ -221,7 +221,7 @@ Ok(bstr.to_osstring()) } pub fn installation_name(&self) -> Result { - let mut s = null_mut(); + let mut s = null(); let err = unsafe { self.0.GetInstallationName(&mut s) }; let bstr = unsafe { BStr::from_raw(s) }; if err < 0 { @@ -230,7 +230,7 @@ Ok(bstr.to_osstring()) } pub fn installation_path(&self) -> Result { - let mut s = null_mut(); + let mut s = null(); let err = unsafe { self.0.GetInstallationPath(&mut s) }; let bstr = unsafe { BStr::from_raw(s) }; if err < 0 { @@ -239,7 +239,7 @@ Ok(bstr.to_osstring()) } pub fn installation_version(&self) -> Result { - let mut s = null_mut(); + let mut s = null(); let err = unsafe { self.0.GetInstallationVersion(&mut s) }; let bstr = unsafe { BStr::from_raw(s) }; if err < 0 { @@ -248,7 +248,7 @@ Ok(bstr.to_osstring()) } pub fn product_path(&self) -> Result { - let mut s = null_mut(); + let mut s = null(); let this = self.0.cast::()?; let err = unsafe { this.GetProductPath(&mut s) }; let bstr = unsafe { BStr::from_raw(s) }; diff -Nru temporalio-1.3.0/vendor/cc/src/winapi.rs temporalio-1.3.0/vendor/cc/src/winapi.rs --- temporalio-1.3.0/vendor/cc/src/winapi.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/cc/src/winapi.rs 2023-10-30 19:40:00.000000000 +0000 @@ -11,20 +11,13 @@ pub type wchar_t = u16; -pub type UINT = raw::c_uint; -pub type LPUNKNOWN = *mut IUnknown; +pub use crate::windows_sys::{FILETIME, GUID, HRESULT, SAFEARRAY, SAFEARRAYBOUND}; + pub type REFIID = *const IID; pub type IID = GUID; -pub type REFCLSID = *const IID; -pub type PVOID = *mut raw::c_void; -pub type USHORT = raw::c_ushort; pub type ULONG = raw::c_ulong; -pub type LONG = raw::c_long; pub type DWORD = u32; -pub type LPVOID = *mut raw::c_void; -pub type HRESULT = raw::c_long; pub type LPFILETIME = *mut FILETIME; -pub type BSTR = *mut OLECHAR; pub type OLECHAR = WCHAR; pub type WCHAR = wchar_t; pub type LPCOLESTR = *const OLECHAR; @@ -33,75 +26,10 @@ pub type PULONGLONG = *mut ULONGLONG; pub type ULONGLONG = u64; -pub const S_OK: HRESULT = 0; -pub const S_FALSE: HRESULT = 1; -pub const COINIT_MULTITHREADED: u32 = 0x0; - -pub type CLSCTX = u32; - -pub const CLSCTX_INPROC_SERVER: CLSCTX = 0x1; -pub const CLSCTX_INPROC_HANDLER: CLSCTX = 0x2; -pub const CLSCTX_LOCAL_SERVER: CLSCTX = 0x4; -pub const CLSCTX_REMOTE_SERVER: CLSCTX = 0x10; - -pub const CLSCTX_ALL: CLSCTX = - CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER; - -#[repr(C)] -#[derive(Copy, Clone)] -pub struct GUID { - pub Data1: raw::c_ulong, - pub Data2: raw::c_ushort, - pub Data3: raw::c_ushort, - pub Data4: [raw::c_uchar; 8], -} - -#[repr(C)] -#[derive(Copy, Clone)] -pub struct FILETIME { - pub dwLowDateTime: DWORD, - pub dwHighDateTime: DWORD, -} - pub trait Interface { fn uuidof() -> GUID; } -#[link(name = "ole32")] -#[link(name = "oleaut32")] -extern "C" {} - -extern "system" { - pub fn CoInitializeEx(pvReserved: LPVOID, dwCoInit: DWORD) -> HRESULT; - pub fn CoCreateInstance( - rclsid: REFCLSID, - pUnkOuter: LPUNKNOWN, - dwClsContext: DWORD, - riid: REFIID, - ppv: *mut LPVOID, - ) -> HRESULT; - pub fn SysFreeString(bstrString: BSTR); - pub fn SysStringLen(pbstr: BSTR) -> UINT; -} - -#[repr(C)] -#[derive(Copy, Clone)] -pub struct SAFEARRAYBOUND { - pub cElements: ULONG, - pub lLbound: LONG, -} - -#[repr(C)] -#[derive(Copy, Clone)] -pub struct SAFEARRAY { - pub cDims: USHORT, - pub fFeatures: USHORT, - pub cbElements: ULONG, - pub cLocks: ULONG, - pub pvData: PVOID, - pub rgsabound: [SAFEARRAYBOUND; 1], -} - pub type LPSAFEARRAY = *mut SAFEARRAY; macro_rules! DEFINE_GUID { @@ -110,10 +38,10 @@ $b1:expr, $b2:expr, $b3:expr, $b4:expr, $b5:expr, $b6:expr, $b7:expr, $b8:expr ) => { pub const $name: $crate::winapi::GUID = $crate::winapi::GUID { - Data1: $l, - Data2: $w1, - Data3: $w2, - Data4: [$b1, $b2, $b3, $b4, $b5, $b6, $b7, $b8], + data1: $l, + data2: $w1, + data3: $w2, + data4: [$b1, $b2, $b3, $b4, $b5, $b6, $b7, $b8], }; }; } @@ -197,10 +125,10 @@ #[inline] fn uuidof() -> $crate::winapi::GUID { $crate::winapi::GUID { - Data1: $l, - Data2: $w1, - Data3: $w2, - Data4: [$b1, $b2, $b3, $b4, $b5, $b6, $b7, $b8], + data1: $l, + data2: $w1, + data3: $w2, + data4: [$b1, $b2, $b3, $b4, $b5, $b6, $b7, $b8], } } } diff -Nru temporalio-1.3.0/vendor/cc/src/windows_registry.rs temporalio-1.3.0/vendor/cc/src/windows_registry.rs --- temporalio-1.3.0/vendor/cc/src/windows_registry.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/cc/src/windows_registry.rs 2023-10-30 19:40:00.000000000 +0000 @@ -80,6 +80,7 @@ /// A version of Visual Studio #[derive(Debug, PartialEq, Eq, Copy, Clone)] +#[non_exhaustive] pub enum VsVers { /// Visual Studio 12 (2013) Vs12, @@ -91,13 +92,6 @@ Vs16, /// Visual Studio 17 (2022) Vs17, - - /// Hidden variant that should not be matched on. Callers that want to - /// handle an enumeration of `VsVers` instances should always have a default - /// case meaning that it's a VS version they don't understand. - #[doc(hidden)] - #[allow(bad_style)] - __Nonexhaustive_do_not_match_this_or_your_code_will_break, } /// Find the most recent installed version of Visual Studio @@ -106,7 +100,7 @@ /// generator. #[cfg(not(windows))] pub fn find_vs_version() -> Result { - Err(format!("not windows")) + Err("not windows".to_string()) } /// Documented above diff -Nru temporalio-1.3.0/vendor/cc/src/windows_sys.rs temporalio-1.3.0/vendor/cc/src/windows_sys.rs --- temporalio-1.3.0/vendor/cc/src/windows_sys.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/cc/src/windows_sys.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,198 @@ +// This file is autogenerated. +// +// To add bindings, edit windows_sys.lst then run: +// +// ``` +// cd generate-windows-sys/ +// cargo run +// ``` +// Bindings generated by `windows-bindgen` 0.49.0 + +#![allow( + non_snake_case, + non_upper_case_globals, + non_camel_case_types, + dead_code, + clippy::all +)] +#[link(name = "advapi32")] +extern "system" { + pub fn RegCloseKey(hkey: HKEY) -> WIN32_ERROR; +} +#[link(name = "advapi32")] +extern "system" { + pub fn RegEnumKeyExW( + hkey: HKEY, + dwindex: u32, + lpname: PWSTR, + lpcchname: *mut u32, + lpreserved: *const u32, + lpclass: PWSTR, + lpcchclass: *mut u32, + lpftlastwritetime: *mut FILETIME, + ) -> WIN32_ERROR; +} +#[link(name = "advapi32")] +extern "system" { + pub fn RegOpenKeyExW( + hkey: HKEY, + lpsubkey: PCWSTR, + uloptions: u32, + samdesired: REG_SAM_FLAGS, + phkresult: *mut HKEY, + ) -> WIN32_ERROR; +} +#[link(name = "advapi32")] +extern "system" { + pub fn RegQueryValueExW( + hkey: HKEY, + lpvaluename: PCWSTR, + lpreserved: *const u32, + lptype: *mut REG_VALUE_TYPE, + lpdata: *mut u8, + lpcbdata: *mut u32, + ) -> WIN32_ERROR; +} +#[link(name = "kernel32")] +extern "system" { + pub fn CreatePipe( + hreadpipe: *mut HANDLE, + hwritepipe: *mut HANDLE, + lppipeattributes: *const SECURITY_ATTRIBUTES, + nsize: u32, + ) -> BOOL; +} +#[link(name = "ole32")] +extern "system" { + pub fn CoCreateInstance( + rclsid: *const GUID, + punkouter: IUnknown, + dwclscontext: CLSCTX, + riid: *const GUID, + ppv: *mut *mut ::core::ffi::c_void, + ) -> HRESULT; +} +#[link(name = "ole32")] +extern "system" { + pub fn CoInitializeEx(pvreserved: *const ::core::ffi::c_void, dwcoinit: COINIT) -> HRESULT; +} +#[link(name = "oleaut32")] +extern "system" { + pub fn SysFreeString(bstrstring: BSTR) -> (); +} +#[link(name = "oleaut32")] +extern "system" { + pub fn SysStringLen(pbstr: BSTR) -> u32; +} +pub type ADVANCED_FEATURE_FLAGS = u16; +pub type BOOL = i32; +pub type BSTR = *const u16; +pub type CLSCTX = u32; +pub const CLSCTX_ALL: CLSCTX = 23u32; +pub type COINIT = i32; +pub const COINIT_MULTITHREADED: COINIT = 0i32; +pub const ERROR_NO_MORE_ITEMS: WIN32_ERROR = 259u32; +pub const ERROR_SUCCESS: WIN32_ERROR = 0u32; +#[repr(C)] +pub struct FILETIME { + pub dwLowDateTime: u32, + pub dwHighDateTime: u32, +} +impl ::core::marker::Copy for FILETIME {} +impl ::core::clone::Clone for FILETIME { + fn clone(&self) -> Self { + *self + } +} +#[repr(C)] +pub struct GUID { + pub data1: u32, + pub data2: u16, + pub data3: u16, + pub data4: [u8; 8], +} +impl GUID { + pub const fn from_u128(uuid: u128) -> Self { + Self { + data1: (uuid >> 96) as u32, + data2: (uuid >> 80 & 0xffff) as u16, + data3: (uuid >> 64 & 0xffff) as u16, + data4: (uuid as u64).to_be_bytes(), + } + } +} +impl ::core::marker::Copy for GUID {} +impl ::core::clone::Clone for GUID { + fn clone(&self) -> Self { + *self + } +} +pub type HANDLE = *mut ::core::ffi::c_void; +pub type HKEY = *mut ::core::ffi::c_void; +pub const HKEY_LOCAL_MACHINE: HKEY = invalid_mut(-2147483646i32 as _); +pub type HRESULT = i32; +pub const INVALID_HANDLE_VALUE: HANDLE = invalid_mut(-1i32 as _); +pub type IUnknown = *mut ::core::ffi::c_void; +pub const KEY_READ: REG_SAM_FLAGS = 131097u32; +pub const KEY_WOW64_32KEY: REG_SAM_FLAGS = 512u32; +pub type PCWSTR = *const u16; +pub type PWSTR = *mut u16; +pub type REG_SAM_FLAGS = u32; +pub const REG_SZ: REG_VALUE_TYPE = 1u32; +pub type REG_VALUE_TYPE = u32; +#[repr(C)] +pub struct SAFEARRAY { + pub cDims: u16, + pub fFeatures: ADVANCED_FEATURE_FLAGS, + pub cbElements: u32, + pub cLocks: u32, + pub pvData: *mut ::core::ffi::c_void, + pub rgsabound: [SAFEARRAYBOUND; 1], +} +impl ::core::marker::Copy for SAFEARRAY {} +impl ::core::clone::Clone for SAFEARRAY { + fn clone(&self) -> Self { + *self + } +} +#[repr(C)] +pub struct SAFEARRAYBOUND { + pub cElements: u32, + pub lLbound: i32, +} +impl ::core::marker::Copy for SAFEARRAYBOUND {} +impl ::core::clone::Clone for SAFEARRAYBOUND { + fn clone(&self) -> Self { + *self + } +} +#[repr(C)] +pub struct SECURITY_ATTRIBUTES { + pub nLength: u32, + pub lpSecurityDescriptor: *mut ::core::ffi::c_void, + pub bInheritHandle: BOOL, +} +impl ::core::marker::Copy for SECURITY_ATTRIBUTES {} +impl ::core::clone::Clone for SECURITY_ATTRIBUTES { + fn clone(&self) -> Self { + *self + } +} +pub const S_FALSE: HRESULT = 1i32; +pub const S_OK: HRESULT = 0i32; +pub type WIN32_ERROR = u32; + +/// Adapted from +/// [`core::ptr::invalid_mut()`](https://doc.rust-lang.org/src/core/ptr/mod.rs.html#600-607). +/// +/// This function should actually use `core::mem::transmute` but due to msrv +/// we use `as` casting instead. +/// +/// Once msrv is bumped to 1.56, replace this with `core::mem::transmute` since +/// it is const stablised in 1.56 +/// +/// NOTE that once supports `strict_provenance` we would also have to update +/// this. +const fn invalid_mut(addr: usize) -> *mut T { + addr as *mut T +} diff -Nru temporalio-1.3.0/vendor/cc/tests/test.rs temporalio-1.3.0/vendor/cc/tests/test.rs --- temporalio-1.3.0/vendor/cc/tests/test.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/cc/tests/test.rs 2023-10-30 19:40:00.000000000 +0000 @@ -367,6 +367,14 @@ } #[test] +fn gnu_std_c() { + let test = Test::gnu(); + test.gcc().file("foo.c").std("c11").compile("foo"); + + test.cmd(0).must_have("-std=c11"); +} + +#[test] fn msvc_smoke() { reset_env(); @@ -443,6 +451,14 @@ test.cmd(0).must_not_have("--"); } +#[test] +fn msvc_std_c() { + let test = Test::msvc(); + test.gcc().file("foo.c").std("c11").compile("foo"); + + test.cmd(0).must_have("-std:c11"); +} + // Disable this test with the parallel feature because the execution // order is not deterministic. #[cfg(not(feature = "parallel"))] diff -Nru temporalio-1.3.0/vendor/dashmap/.cargo-checksum.json temporalio-1.3.0/vendor/dashmap/.cargo-checksum.json --- temporalio-1.3.0/vendor/dashmap/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/dashmap/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"8181631e0224f428c3c213850ce536d9d27c82b46e3eadcd0137f78470086fc2","LICENSE":"16692e8cee4aa06e3913787497eba2d47c42002014136f5da67be6ee640e28a3","README.md":"e1114aed5dfbd2892f2d81881c46f8e17b9b4774344ad3feb55bd2c1a41384fd","rust-toolchain":"06dc4c395690e7d6ff8b92d8d265a8cf1c02cbca414e15352072e378fcb4171a","src/iter.rs":"dec9cc68374a0a176b5840e37da4e83d0493d7dca6f776dc926bf511c84e70db","src/iter_set.rs":"5327da951dc93d30b293aeb7a805666ee4b8e6364881348ab5d86b23c29a0e13","src/lib.rs":"24935d49696b2d05a83287c6a5f08d59bc206a535bfa0f8893bfeff3cfd14ea8","src/lock.rs":"22b1013ee3cbd1598c26403552faf8e5b44fe98a8ff4c8812da15d57bdeee4b3","src/mapref/entry.rs":"ddcf788856330a4384ce987bb84ff36b494675b3b1f2460ae48376ac664491df","src/mapref/mod.rs":"15bd45cfc642a9e3e77bbfbf2d9fad9c5fac0ff6904214a3c501e262242ec8b0","src/mapref/multiple.rs":"17a87879229d78f75d71817d100aa0a210d764d6b66e4a05b17a3e092d17e306","src/mapref/one.rs":"ea46339e08c5033cf419c195e922e1ba6f606fc71c15ee31d1b3c38cfedfedcf","src/rayon/map.rs":"2df5ac8241d92e1811852abd65c5b3124a14d886ae4e3a8a5cbdfdb3d7dde929","src/rayon/read_only.rs":"99dc0083f6840f59b2090bc9c5f9767a44088832e63935cb8f6bc7eca8b86102","src/rayon/set.rs":"21fe2ca8c58c8ff1bc753f5e2eb6131afd598211eea375f2ac7190cd0f9abcba","src/read_only.rs":"d872ec78201ddc272aeeabdbeaccb26e069704b85aa2f6a4d56bd0c5defe7a2b","src/serde.rs":"57bbf2b255de966cc9c54011429495cc5308a1f76906846b29e015f860b79559","src/set.rs":"80271aa0d8a32845afdef5a35f18e5cac6f0f5ab8d2a6b11b02cd123152c91d4","src/setref/mod.rs":"cc39e406a333dc6c04398f4b1336fb400e3a8360c387466d8a91f5d7f4ed40a7","src/setref/multiple.rs":"2270749e83f80dbb4761448f0629ecd02b0b4268f76834236d1167844e6d5e37","src/setref/one.rs":"69738583f2a160f3907e540277ccd88e0036406b3ead66b3d4015ddd938d6937","src/t.rs":"9b40ebfba22369813bf159ed60fa70e742ae72bfaec6aee91a716cba91cb8f0d","src/try_result.rs":"81d1dd396f70b0aa2a6e1969851b706cbfdfb09c802ac9d33dcace882aa28dd1","src/util.rs":"7a8096a713cf04e60d6c9e38cd366314ed74472abab4bb8a3a9ed081a0e0301b"},"package":"907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc"} \ No newline at end of file +{"files":{"Cargo.toml":"413bd1d758f9c3018c60de376426c92299c4736ad5b77f2b342f4361c2403bb7","LICENSE":"16692e8cee4aa06e3913787497eba2d47c42002014136f5da67be6ee640e28a3","README.md":"3f21f1dab0ec2811209a8c9044b5573b0738b2dc76e5956e89d4719d366b8936","rust-toolchain.toml":"04efea63f01dbfbc8fc3dad7a48896d0a1ef294a15ce5855121845b60fd6d768","src/arbitrary.rs":"236abf377cbae8393961e0e4327ce2515d5aeeddfb1fabb1f2035c69dfea290c","src/iter.rs":"086a7be951241253b3ea60c64fb324aaa32742038461994e3946bdd8712ce452","src/iter_set.rs":"5327da951dc93d30b293aeb7a805666ee4b8e6364881348ab5d86b23c29a0e13","src/lib.rs":"cf60ab9db449b7b00e2d38385034fa070ecc11ccb06435d7900625afc85359d0","src/lock.rs":"22b1013ee3cbd1598c26403552faf8e5b44fe98a8ff4c8812da15d57bdeee4b3","src/mapref/entry.rs":"c03777d2b863a98fea517ad97037741930c766e7cbd17aea2aab1fbf0e11c719","src/mapref/mod.rs":"15bd45cfc642a9e3e77bbfbf2d9fad9c5fac0ff6904214a3c501e262242ec8b0","src/mapref/multiple.rs":"17a87879229d78f75d71817d100aa0a210d764d6b66e4a05b17a3e092d17e306","src/mapref/one.rs":"0026aff85dd5411b5c181396b8b5b9a9cbc524720a8f409fd4aa62c1b5501146","src/rayon/map.rs":"68d541bb6c9372fe13e44f09d9fcba4f214f52f16649e326486f8976dc03cd99","src/rayon/read_only.rs":"99dc0083f6840f59b2090bc9c5f9767a44088832e63935cb8f6bc7eca8b86102","src/rayon/set.rs":"21fe2ca8c58c8ff1bc753f5e2eb6131afd598211eea375f2ac7190cd0f9abcba","src/read_only.rs":"678ed7279bd366ce0af4c6b5d4636c026e3b06447edab8871db142ec0f48db18","src/serde.rs":"9854d44b05ebe400ef8ac8ea9c8f140e1c59870d74aaf3ccaf72e82c6dc40905","src/set.rs":"cf75d91db42d18afec314afe9a461cc6e86ddedd11ff9248ed7345780948e5e0","src/setref/mod.rs":"cc39e406a333dc6c04398f4b1336fb400e3a8360c387466d8a91f5d7f4ed40a7","src/setref/multiple.rs":"2270749e83f80dbb4761448f0629ecd02b0b4268f76834236d1167844e6d5e37","src/setref/one.rs":"69738583f2a160f3907e540277ccd88e0036406b3ead66b3d4015ddd938d6937","src/t.rs":"9b40ebfba22369813bf159ed60fa70e742ae72bfaec6aee91a716cba91cb8f0d","src/try_result.rs":"81d1dd396f70b0aa2a6e1969851b706cbfdfb09c802ac9d33dcace882aa28dd1","src/util.rs":"7a8096a713cf04e60d6c9e38cd366314ed74472abab4bb8a3a9ed081a0e0301b"},"package":"edd72493923899c6f10c641bdbdeddc7183d6396641d99c1a0d1597f37f92e28"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/dashmap/Cargo.toml temporalio-1.3.0/vendor/dashmap/Cargo.toml --- temporalio-1.3.0/vendor/dashmap/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/dashmap/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,44 +11,63 @@ [package] edition = "2018" -rust-version = "1.59" +rust-version = "1.64" name = "dashmap" -version = "5.4.0" +version = "5.5.1" authors = ["Acrimon "] description = "Blazing fast concurrent HashMap for Rust." homepage = "https://github.com/xacrimon/dashmap" documentation = "https://docs.rs/dashmap" readme = "README.md" -keywords = ["atomic", "concurrent", "hashmap"] -categories = ["concurrency", "algorithms", "data-structures"] +keywords = [ + "atomic", + "concurrent", + "hashmap", +] +categories = [ + "concurrency", + "algorithms", + "data-structures", +] license = "MIT" repository = "https://github.com/xacrimon/dashmap" + [package.metadata.docs.rs] -features = ["rayon", "raw-api", "serde"] +features = [ + "rayon", + "raw-api", + "serde", +] + +[dependencies.arbitrary] +version = "1.3.0" +optional = true + [dependencies.cfg-if] version = "1.0.0" [dependencies.hashbrown] -version = "0.12.3" +version = "0.14.0" default-features = false [dependencies.lock_api] -version = "0.4.8" +version = "0.4.10" [dependencies.once_cell] -version = "1.13.1" +version = "1.18.0" [dependencies.parking_lot_core] -version = "0.9.3" +version = "0.9.8" [dependencies.rayon] -version = "1.5.3" +version = "1.7.0" optional = true [dependencies.serde] -version = "1.0.144" +version = "1.0.171" features = ["derive"] optional = true [features] +inline = ["hashbrown/inline-more"] raw-api = [] diff -Nru temporalio-1.3.0/vendor/dashmap/README.md temporalio-1.3.0/vendor/dashmap/README.md --- temporalio-1.3.0/vendor/dashmap/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/dashmap/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -20,7 +20,7 @@ [![downloads](https://img.shields.io/crates/d/dashmap)](https://crates.io/crates/dashmap) -[![minimum rustc version](https://img.shields.io/badge/rustc-1.59-orange.svg)](https://crates.io/crates/dashmap) +[![minimum rustc version](https://img.shields.io/badge/rustc-1.64-orange.svg)](https://crates.io/crates/dashmap) ## Cargo features @@ -30,6 +30,10 @@ - `rayon` - Enables rayon support. +- `inline` - Enables `inline-more` feature from the `hashbrown` crate. Can lead to better performance, but with the cost of longer compile-time. + +- `arbitrary` - Enables support for the `arbitrary` crate. + ## Contributing DashMap gladly accepts contributions! diff -Nru temporalio-1.3.0/vendor/dashmap/rust-toolchain temporalio-1.3.0/vendor/dashmap/rust-toolchain --- temporalio-1.3.0/vendor/dashmap/rust-toolchain 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/dashmap/rust-toolchain 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -[toolchain] -channel = "1.59" -components = [ "rustfmt", "clippy" ] -profile = "minimal" diff -Nru temporalio-1.3.0/vendor/dashmap/rust-toolchain.toml temporalio-1.3.0/vendor/dashmap/rust-toolchain.toml --- temporalio-1.3.0/vendor/dashmap/rust-toolchain.toml 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/dashmap/rust-toolchain.toml 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,4 @@ +[toolchain] +channel = "stable-2022-09-22" +components = ["rustfmt", "clippy"] +profile = "minimal" diff -Nru temporalio-1.3.0/vendor/dashmap/src/arbitrary.rs temporalio-1.3.0/vendor/dashmap/src/arbitrary.rs --- temporalio-1.3.0/vendor/dashmap/src/arbitrary.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/dashmap/src/arbitrary.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,13 @@ +use arbitrary::{Arbitrary, Unstructured}; +use core::hash::BuildHasher; + +impl<'a, K, V, S> Arbitrary<'a> for crate::DashMap +where + K: Eq + std::hash::Hash + Arbitrary<'a>, + V: Arbitrary<'a>, + S: Default + BuildHasher + Clone, +{ + fn arbitrary(u: &mut Unstructured<'a>) -> arbitrary::Result { + u.arbitrary_iter()?.collect() + } +} diff -Nru temporalio-1.3.0/vendor/dashmap/src/iter.rs temporalio-1.3.0/vendor/dashmap/src/iter.rs --- temporalio-1.3.0/vendor/dashmap/src/iter.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/dashmap/src/iter.rs 2023-10-30 19:40:00.000000000 +0000 @@ -118,7 +118,7 @@ current: Option>, } -impl<'a, 'i, K: Clone + Hash + Eq, V: Clone, S: Clone + BuildHasher> Clone for Iter<'i, K, V, S> { +impl<'i, K: Clone + Hash + Eq, V: Clone, S: Clone + BuildHasher> Clone for Iter<'i, K, V, S> { fn clone(&self) -> Self { Iter::new(self.map) } diff -Nru temporalio-1.3.0/vendor/dashmap/src/lib.rs temporalio-1.3.0/vendor/dashmap/src/lib.rs --- temporalio-1.3.0/vendor/dashmap/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/dashmap/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,7 @@ #![allow(clippy::type_complexity)] +#[cfg(feature = "arbitrary")] +mod arbitrary; pub mod iter; pub mod iter_set; mod lock; @@ -32,6 +34,7 @@ use core::hash::{BuildHasher, Hash, Hasher}; use core::iter::FromIterator; use core::ops::{BitAnd, BitOr, Shl, Shr, Sub}; +use hashbrown::hash_map::RawEntryMut; use iter::{Iter, IterMut, OwningIter}; use mapref::entry::{Entry, OccupiedEntry, VacantEntry}; use mapref::multiple::RefMulti; @@ -268,7 +271,7 @@ hasher: S, shard_amount: usize, ) -> Self { - assert!(shard_amount > 0); + assert!(shard_amount > 1); assert!(shard_amount.is_power_of_two()); let shift = util::ptr_size_bits() - ncb(shard_amount); @@ -293,11 +296,15 @@ /// Hash a given item to produce a usize. /// Uses the provided or default HashBuilder. pub fn hash_usize(&self, item: &T) -> usize { + self.hash_u64(item) as usize + } + + fn hash_u64(&self, item: &T) -> u64 { let mut hasher = self.hasher.build_hasher(); item.hash(&mut hasher); - hasher.finish() as usize + hasher.finish() } cfg_if! { @@ -318,11 +325,51 @@ pub fn shards(&self) -> &[RwLock>] { &self.shards } + + /// Provides mutable access to the inner shards that store your data. + /// You should probably not use this unless you know what you are doing. + /// + /// Requires the `raw-api` feature to be enabled. + /// + /// # Examples + /// + /// ``` + /// use dashmap::DashMap; + /// use dashmap::SharedValue; + /// + /// let mut map = DashMap::::new(); + /// let shard_ind = map.determine_map(&42); + /// map.shards_mut()[shard_ind].get_mut().insert(42, SharedValue::new("forty two")); + /// assert_eq!(*map.get(&42).unwrap(), "forty two"); + /// ``` + pub fn shards_mut(&mut self) -> &mut [RwLock>] { + &mut self.shards + } + + /// Consumes this `DashMap` and returns the inner shards. + /// You should probably not use this unless you know what you are doing. + /// + /// Requires the `raw-api` feature to be enabled. + /// + /// See [`DashMap::shards()`] and [`DashMap::shards_mut()`] for more information. + pub fn into_shards(self) -> Box<[RwLock>]> { + self.shards + } } else { #[allow(dead_code)] pub(crate) fn shards(&self) -> &[RwLock>] { &self.shards } + + #[allow(dead_code)] + pub(crate) fn shards_mut(&mut self) -> &mut [RwLock>] { + &mut self.shards + } + + #[allow(dead_code)] + pub(crate) fn into_shards(self) -> Box<[RwLock>]> { + self.shards + } } } @@ -510,7 +557,7 @@ self._iter_mut() } - /// Get a immutable reference to an entry in the map + /// Get an immutable reference to an entry in the map /// /// **Locking behaviour:** May deadlock if called when holding a mutable reference into the map. /// @@ -874,9 +921,9 @@ } fn _insert(&self, key: K, value: V) -> Option { - let hash = self.hash_usize(&key); + let hash = self.hash_u64(&key); - let idx = self.determine_shard(hash); + let idx = self.determine_shard(hash as usize); let mut shard = unsafe { self._yield_write_shard(idx) }; @@ -890,9 +937,9 @@ K: Borrow, Q: Hash + Eq + ?Sized, { - let hash = self.hash_usize(&key); + let hash = self.hash_u64(&key); - let idx = self.determine_shard(hash); + let idx = self.determine_shard(hash as usize); let mut shard = unsafe { self._yield_write_shard(idx) }; @@ -904,22 +951,20 @@ K: Borrow, Q: Hash + Eq + ?Sized, { - let hash = self.hash_usize(&key); + let hash = self.hash_u64(&key); - let idx = self.determine_shard(hash); + let idx = self.determine_shard(hash as usize); let mut shard = unsafe { self._yield_write_shard(idx) }; - if let Some((kptr, vptr)) = shard.get_key_value(key) { - unsafe { - let kptr: *const K = kptr; - let vptr: *mut V = vptr.as_ptr(); - - if f(&*kptr, &mut *vptr) { - shard.remove_entry(key).map(|(k, v)| (k, v.into_inner())) - } else { - None - } + if let RawEntryMut::Occupied(entry) = + shard.raw_entry_mut().from_key_hashed_nocheck(hash, key) + { + if f(entry.key(), entry.get().get()) { + let (k, v) = entry.remove_entry(); + Some((k, v.into_inner())) + } else { + None } } else { None @@ -931,22 +976,21 @@ K: Borrow, Q: Hash + Eq + ?Sized, { - let hash = self.hash_usize(&key); + let hash = self.hash_u64(&key); - let idx = self.determine_shard(hash); + let idx = self.determine_shard(hash as usize); let mut shard = unsafe { self._yield_write_shard(idx) }; - if let Some((kptr, vptr)) = shard.get_key_value(key) { - unsafe { - let kptr: *const K = kptr; - let vptr: *mut V = vptr.as_ptr(); - - if f(&*kptr, &mut *vptr) { - shard.remove_entry(key).map(|(k, v)| (k, v.into_inner())) - } else { - None - } + if let RawEntryMut::Occupied(mut entry) = + shard.raw_entry_mut().from_key_hashed_nocheck(hash, key) + { + let (k, v) = entry.get_key_value_mut(); + if f(k, v.get_mut()) { + let (k, v) = entry.remove_entry(); + Some((k, v.into_inner())) + } else { + None } } else { None @@ -966,13 +1010,13 @@ K: Borrow, Q: Hash + Eq + ?Sized, { - let hash = self.hash_usize(&key); + let hash = self.hash_u64(&key); - let idx = self.determine_shard(hash); + let idx = self.determine_shard(hash as usize); let shard = unsafe { self._yield_read_shard(idx) }; - if let Some((kptr, vptr)) = shard.get_key_value(key) { + if let Some((kptr, vptr)) = shard.raw_entry().from_key_hashed_nocheck(hash, key) { unsafe { let kptr: *const K = kptr; let vptr: *const V = vptr.get(); @@ -988,16 +1032,18 @@ K: Borrow, Q: Hash + Eq + ?Sized, { - let hash = self.hash_usize(&key); + let hash = self.hash_u64(&key); - let idx = self.determine_shard(hash); + let idx = self.determine_shard(hash as usize); - let shard = unsafe { self._yield_write_shard(idx) }; + let mut shard = unsafe { self._yield_write_shard(idx) }; - if let Some((kptr, vptr)) = shard.get_key_value(key) { + if let RawEntryMut::Occupied(mut entry) = + shard.raw_entry_mut().from_key_hashed_nocheck(hash, key) + { unsafe { - let kptr: *const K = kptr; - let vptr: *mut V = vptr.as_ptr(); + let kptr: *const K = entry.key(); + let vptr: *mut V = entry.get_mut().as_ptr(); Some(RefMut::new(shard, kptr, vptr)) } } else { @@ -1010,16 +1056,16 @@ K: Borrow, Q: Hash + Eq + ?Sized, { - let hash = self.hash_usize(&key); + let hash = self.hash_u64(&key); - let idx = self.determine_shard(hash); + let idx = self.determine_shard(hash as usize); let shard = match unsafe { self._try_yield_read_shard(idx) } { Some(shard) => shard, None => return TryResult::Locked, }; - if let Some((kptr, vptr)) = shard.get_key_value(key) { + if let Some((kptr, vptr)) = shard.raw_entry().from_key_hashed_nocheck(hash, key) { unsafe { let kptr: *const K = kptr; let vptr: *const V = vptr.get(); @@ -1035,16 +1081,16 @@ K: Borrow, Q: Hash + Eq + ?Sized, { - let hash = self.hash_usize(&key); + let hash = self.hash_u64(&key); - let idx = self.determine_shard(hash); + let idx = self.determine_shard(hash as usize); let shard = match unsafe { self._try_yield_write_shard(idx) } { Some(shard) => shard, None => return TryResult::Locked, }; - if let Some((kptr, vptr)) = shard.get_key_value(key) { + if let Some((kptr, vptr)) = shard.raw_entry().from_key_hashed_nocheck(hash, key) { unsafe { let kptr: *const K = kptr; let vptr: *mut V = vptr.as_ptr(); @@ -1103,13 +1149,13 @@ } fn _entry(&'a self, key: K) -> Entry<'a, K, V, S> { - let hash = self.hash_usize(&key); + let hash = self.hash_u64(&key); - let idx = self.determine_shard(hash); + let idx = self.determine_shard(hash as usize); let shard = unsafe { self._yield_write_shard(idx) }; - if let Some((kptr, vptr)) = shard.get_key_value(&key) { + if let Some((kptr, vptr)) = shard.raw_entry().from_key_hashed_nocheck(hash, &key) { unsafe { let kptr: *const K = kptr; let vptr: *mut V = vptr.as_ptr(); @@ -1121,16 +1167,16 @@ } fn _try_entry(&'a self, key: K) -> Option> { - let hash = self.hash_usize(&key); + let hash = self.hash_u64(&key); - let idx = self.determine_shard(hash); + let idx = self.determine_shard(hash as usize); let shard = match unsafe { self._try_yield_write_shard(idx) } { Some(shard) => shard, None => return None, }; - if let Some((kptr, vptr)) = shard.get_key_value(&key) { + if let Some((kptr, vptr)) = shard.raw_entry().from_key_hashed_nocheck(hash, &key) { unsafe { let kptr: *const K = kptr; let vptr: *mut V = vptr.as_ptr(); @@ -1223,7 +1269,7 @@ } } -impl<'a, K: Eq + Hash, V, S: BuildHasher + Clone> IntoIterator for DashMap { +impl IntoIterator for DashMap { type Item = (K, V); type IntoIter = OwningIter; diff -Nru temporalio-1.3.0/vendor/dashmap/src/mapref/entry.rs temporalio-1.3.0/vendor/dashmap/src/mapref/entry.rs --- temporalio-1.3.0/vendor/dashmap/src/mapref/entry.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/dashmap/src/mapref/entry.rs 2023-10-30 19:40:00.000000000 +0000 @@ -82,6 +82,36 @@ Entry::Vacant(entry) => Ok(entry.insert(value()?)), } } + + /// Sets the value of the entry, and returns a reference to the inserted value. + pub fn insert(self, value: V) -> RefMut<'a, K, V, S> { + match self { + Entry::Occupied(mut entry) => { + entry.insert(value); + entry.into_ref() + } + Entry::Vacant(entry) => entry.insert(value), + } + } + + /// Sets the value of the entry, and returns an OccupiedEntry. + /// + /// If you are not interested in the occupied entry, + /// consider [`insert`] as it doesn't need to clone the key. + /// + /// [`insert`]: Entry::insert + pub fn insert_entry(self, value: V) -> OccupiedEntry<'a, K, V, S> + where + K: Clone, + { + match self { + Entry::Occupied(mut entry) => { + entry.insert(value); + entry + } + Entry::Vacant(entry) => entry.insert_entry(value), + } + } } pub struct VacantEntry<'a, K, V, S = RandomState> { @@ -117,6 +147,22 @@ } } + /// Sets the value of the entry with the VacantEntry’s key, and returns an OccupiedEntry. + pub fn insert_entry(mut self, value: V) -> OccupiedEntry<'a, K, V, S> + where + K: Clone, + { + unsafe { + self.shard.insert(self.key.clone(), SharedValue::new(value)); + + let (k, v) = self.shard.get_key_value(&self.key).unwrap(); + + let kptr: *const K = k; + let vptr: *mut V = v.as_ptr(); + OccupiedEntry::new(self.shard, self.key, (kptr, vptr)) + } + } + pub fn into_key(self) -> K { self.key } @@ -187,3 +233,46 @@ (k, v.into_inner()) } } + +#[cfg(test)] +mod tests { + use crate::DashMap; + + use super::*; + + #[test] + fn test_insert_entry_into_vacant() { + let map: DashMap = DashMap::new(); + + let entry = map.entry(1); + + assert!(matches!(entry, Entry::Vacant(_))); + + let entry = entry.insert_entry(2); + + assert_eq!(*entry.get(), 2); + + drop(entry); + + assert_eq!(*map.get(&1).unwrap(), 2); + } + + #[test] + fn test_insert_entry_into_occupied() { + let map: DashMap = DashMap::new(); + + map.insert(1, 1000); + + let entry = map.entry(1); + + assert!(matches!(&entry, Entry::Occupied(entry) if *entry.get() == 1000)); + + let entry = entry.insert_entry(2); + + assert_eq!(*entry.get(), 2); + + drop(entry); + + assert_eq!(*map.get(&1).unwrap(), 2); + } +} diff -Nru temporalio-1.3.0/vendor/dashmap/src/mapref/one.rs temporalio-1.3.0/vendor/dashmap/src/mapref/one.rs --- temporalio-1.3.0/vendor/dashmap/src/mapref/one.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/dashmap/src/mapref/one.rs 2023-10-30 19:40:00.000000000 +0000 @@ -241,6 +241,20 @@ } } +impl<'a, K: Eq + Hash, V, T: std::fmt::Display> std::fmt::Display for MappedRef<'a, K, V, T> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + std::fmt::Display::fmt(self.value(), f) + } +} + +impl<'a, K: Eq + Hash, V, T: AsRef, TDeref: ?Sized> AsRef + for MappedRef<'a, K, V, T> +{ + fn as_ref(&self) -> &TDeref { + self.value().as_ref() + } +} + pub struct MappedRefMut<'a, K, V, T, S = RandomState> { _guard: RwLockWriteGuard<'a, HashMap>, k: *const K, diff -Nru temporalio-1.3.0/vendor/dashmap/src/rayon/map.rs temporalio-1.3.0/vendor/dashmap/src/rayon/map.rs --- temporalio-1.3.0/vendor/dashmap/src/rayon/map.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/dashmap/src/rayon/map.rs 2023-10-30 19:40:00.000000000 +0000 @@ -173,7 +173,7 @@ } } -impl<'a, K, V, S> DashMap +impl DashMap where K: Send + Sync + Eq + Hash, V: Send + Sync, diff -Nru temporalio-1.3.0/vendor/dashmap/src/read_only.rs temporalio-1.3.0/vendor/dashmap/src/read_only.rs --- temporalio-1.3.0/vendor/dashmap/src/read_only.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/dashmap/src/read_only.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,7 @@ +use crate::lock::RwLock; use crate::t::Map; use crate::{DashMap, HashMap}; +use cfg_if::cfg_if; use core::borrow::Borrow; use core::fmt; use core::hash::{BuildHasher, Hash}; @@ -59,13 +61,7 @@ K: Borrow, Q: Hash + Eq + ?Sized, { - let hash = self.map.hash_usize(&key); - - let idx = self.map.determine_shard(hash); - - let shard = unsafe { self.map._get_read_shard(idx) }; - - shard.contains_key(key) + self.get(key).is_some() } /// Returns a reference to the value corresponding to the key. @@ -74,13 +70,7 @@ K: Borrow, Q: Hash + Eq + ?Sized, { - let hash = self.map.hash_usize(&key); - - let idx = self.map.determine_shard(hash); - - let shard = unsafe { self.map._get_read_shard(idx) }; - - shard.get(key).map(|v| v.get()) + self.get_key_value(key).map(|(_k, v)| v) } /// Returns the key-value pair corresponding to the supplied key. @@ -89,13 +79,16 @@ K: Borrow, Q: Hash + Eq + ?Sized, { - let hash = self.map.hash_usize(&key); + let hash = self.map.hash_u64(&key); - let idx = self.map.determine_shard(hash); + let idx = self.map.determine_shard(hash as usize); let shard = unsafe { self.map._get_read_shard(idx) }; - shard.get_key_value(key).map(|(k, v)| (k, v.get())) + shard + .raw_entry() + .from_key_hashed_nocheck(hash, key) + .map(|(k, v)| (k, v.get())) } fn shard_read_iter(&'a self) -> impl Iterator> + 'a { @@ -121,6 +114,32 @@ .flat_map(|shard| shard.values()) .map(|v| v.get()) } + + cfg_if! { + if #[cfg(feature = "raw-api")] { + /// Allows you to peek at the inner shards that store your data. + /// You should probably not use this unless you know what you are doing. + /// + /// Requires the `raw-api` feature to be enabled. + /// + /// # Examples + /// + /// ``` + /// use dashmap::DashMap; + /// + /// let map = DashMap::<(), ()>::new().into_read_only(); + /// println!("Amount of shards: {}", map.shards().len()); + /// ``` + pub fn shards(&self) -> &[RwLock>] { + &self.map.shards + } + } else { + #[allow(dead_code)] + pub(crate) fn shards(&self) -> &[RwLock>] { + &self.map.shards + } + } + } } #[cfg(test)] diff -Nru temporalio-1.3.0/vendor/dashmap/src/serde.rs temporalio-1.3.0/vendor/dashmap/src/serde.rs --- temporalio-1.3.0/vendor/dashmap/src/serde.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/dashmap/src/serde.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -use crate::{DashMap, DashSet}; +use crate::{mapref, setref, DashMap, DashSet}; use core::fmt; use core::hash::{BuildHasher, Hash}; use core::marker::PhantomData; @@ -156,3 +156,60 @@ seq.end() } } + +macro_rules! serialize_impl { + () => { + fn serialize(&self, serializer: Ser) -> Result + where + Ser: serde::Serializer, + { + std::ops::Deref::deref(self).serialize(serializer) + } + }; +} + +// Map +impl<'a, K: Eq + Hash, V: Serialize, S: BuildHasher> Serialize + for mapref::multiple::RefMulti<'a, K, V, S> +{ + serialize_impl! {} +} + +impl<'a, K: Eq + Hash, V: Serialize, S: BuildHasher> Serialize + for mapref::multiple::RefMutMulti<'a, K, V, S> +{ + serialize_impl! {} +} + +impl<'a, K: Eq + Hash, V: Serialize, S: BuildHasher> Serialize for mapref::one::Ref<'a, K, V, S> { + serialize_impl! {} +} + +impl<'a, K: Eq + Hash, V: Serialize, S: BuildHasher> Serialize + for mapref::one::RefMut<'a, K, V, S> +{ + serialize_impl! {} +} + +impl<'a, K: Eq + Hash, V, T: Serialize, S: BuildHasher> Serialize + for mapref::one::MappedRef<'a, K, V, T, S> +{ + serialize_impl! {} +} + +impl<'a, K: Eq + Hash, V, T: Serialize, S: BuildHasher> Serialize + for mapref::one::MappedRefMut<'a, K, V, T, S> +{ + serialize_impl! {} +} + +// Set +impl<'a, V: Hash + Eq + Serialize, S: BuildHasher> Serialize + for setref::multiple::RefMulti<'a, V, S> +{ + serialize_impl! {} +} + +impl<'a, V: Hash + Eq + Serialize, S: BuildHasher> Serialize for setref::one::Ref<'a, V, S> { + serialize_impl! {} +} diff -Nru temporalio-1.3.0/vendor/dashmap/src/set.rs temporalio-1.3.0/vendor/dashmap/src/set.rs --- temporalio-1.3.0/vendor/dashmap/src/set.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/dashmap/src/set.rs 2023-10-30 19:40:00.000000000 +0000 @@ -385,7 +385,7 @@ } } -impl<'a, K: Eq + Hash, S: BuildHasher + Clone> IntoIterator for DashSet { +impl IntoIterator for DashSet { type Item = K; type IntoIter = OwningIter; diff -Nru temporalio-1.3.0/vendor/either/.cargo-checksum.json temporalio-1.3.0/vendor/either/.cargo-checksum.json --- temporalio-1.3.0/vendor/either/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/either/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"b20d074285d90e1472c25d78afdf9e642b8b7eb0ffd5f2c5dd8d1eb895d2aa12","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7576269ea71f767b99297934c0b2367532690f8c4badc695edf8e04ab6a1e545","README-crates.io.md":"b775991a01ab4a0a8de6169f597775319d9ce8178f5c74ccdc634f13a286b20c","README.rst":"9b9a9a7712486d06a4d96068b76cf4ac2f0518f98b8b1a1587257868d1e9cce4","src/lib.rs":"bc950126c901ea5c12ce4d02a7e58e3b1e2b428caca68bd510bad1f2488e2ced","src/serde_untagged.rs":"e826ee0ab31616e49c3e3f3711c8441001ee424b3e7a8c4c466cfcc4f8a7701a","src/serde_untagged_optional.rs":"86265f09d0795428bb2ce013b070d1badf1e2210217844a9ff3f04b2795868ab"},"package":"7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"} \ No newline at end of file +{"files":{"Cargo.toml":"139ac63ca03225b8349feb97c89a5e0e0b1a266eed726a53a5633402f610841c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7576269ea71f767b99297934c0b2367532690f8c4badc695edf8e04ab6a1e545","README-crates.io.md":"b775991a01ab4a0a8de6169f597775319d9ce8178f5c74ccdc634f13a286b20c","README.rst":"28389277f35b722b5cc5872543e6a3c013b933b45e5a2178ec47d163cadcf602","src/lib.rs":"e4c683f2e3f029a1bb81def1f622427af2f5b95afda2bf25e5b2c3c8c8429127","src/serde_untagged.rs":"e826ee0ab31616e49c3e3f3711c8441001ee424b3e7a8c4c466cfcc4f8a7701a","src/serde_untagged_optional.rs":"86265f09d0795428bb2ce013b070d1badf1e2210217844a9ff3f04b2795868ab"},"package":"a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/either/Cargo.toml temporalio-1.3.0/vendor/either/Cargo.toml --- temporalio-1.3.0/vendor/either/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/either/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -3,46 +3,35 @@ # 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. +# 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. +# If you believe there's an error in this file please file an +# issue against the rust-lang/cargo repository. If you're +# editing this file be aware that the upstream Cargo.toml +# will likely look very different (and much more reasonable) [package] edition = "2018" -rust-version = "1.36" name = "either" -version = "1.8.1" +version = "1.9.0" authors = ["bluss"] -description = """ -The enum `Either` with variants `Left` and `Right` is a general purpose sum type with two cases. -""" +description = "The enum `Either` with variants `Left` and `Right` is a general purpose sum type with two cases.\n" documentation = "https://docs.rs/either/1/" readme = "README-crates.io.md" -keywords = [ - "data-structure", - "no_std", -] -categories = [ - "data-structures", - "no-std", -] +keywords = ["data-structure", "no_std"] +categories = ["data-structures", "no-std"] license = "MIT OR Apache-2.0" repository = "https://github.com/bluss/either" +[package.metadata.docs.rs] +features = ["serde"] [package.metadata.release] no-dev-version = true tag-name = "{{version}}" - -[package.metadata.docs.rs] -features = ["serde"] - [dependencies.serde] version = "1.0" features = ["derive"] optional = true - [dev-dependencies.serde_json] version = "1.0.0" diff -Nru temporalio-1.3.0/vendor/either/README.rst temporalio-1.3.0/vendor/either/README.rst --- temporalio-1.3.0/vendor/either/README.rst 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/either/README.rst 2023-10-30 19:40:00.000000000 +0000 @@ -31,6 +31,10 @@ Recent Changes -------------- +- 1.9.0 + + - Add new methods ``.map_either()`` and ``.map_either_with()``, by @nasadorian (#82) + - 1.8.1 - Clarified that the multiple licenses are combined with OR. diff -Nru temporalio-1.3.0/vendor/either/src/lib.rs temporalio-1.3.0/vendor/either/src/lib.rs --- temporalio-1.3.0/vendor/either/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/either/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -348,6 +348,65 @@ } } + /// Apply the functions `f` and `g` to the `Left` and `Right` variants + /// respectively. This is equivalent to + /// [bimap](https://hackage.haskell.org/package/bifunctors-5/docs/Data-Bifunctor.html) + /// in functional programming. + /// + /// ``` + /// use either::*; + /// + /// let f = |s: String| s.len(); + /// let g = |u: u8| u.to_string(); + /// + /// let left: Either = Left("loopy".into()); + /// assert_eq!(left.map_either(f, g), Left(5)); + /// + /// let right: Either = Right(42); + /// assert_eq!(right.map_either(f, g), Right("42".into())); + /// ``` + pub fn map_either(self, f: F, g: G) -> Either + where + F: FnOnce(L) -> M, + G: FnOnce(R) -> S, + { + match self { + Left(l) => Left(f(l)), + Right(r) => Right(g(r)), + } + } + + /// Similar to [`map_either`], with an added context `ctx` accessible to + /// both functions. + /// + /// ``` + /// use either::*; + /// + /// let mut sum = 0; + /// + /// // Both closures want to update the same value, so pass it as context. + /// let mut f = |sum: &mut usize, s: String| { *sum += s.len(); s.to_uppercase() }; + /// let mut g = |sum: &mut usize, u: usize| { *sum += u; u.to_string() }; + /// + /// let left: Either = Left("loopy".into()); + /// assert_eq!(left.map_either_with(&mut sum, &mut f, &mut g), Left("LOOPY".into())); + /// + /// let right: Either = Right(42); + /// assert_eq!(right.map_either_with(&mut sum, &mut f, &mut g), Right("42".into())); + /// + /// assert_eq!(sum, 47); + /// ``` + pub fn map_either_with(self, ctx: Ctx, f: F, g: G) -> Either + where + F: FnOnce(Ctx, L) -> M, + G: FnOnce(Ctx, R) -> S, + { + match self { + Left(l) => Left(f(ctx, l)), + Right(r) => Right(g(ctx, r)), + } + } + /// Apply one of two functions depending on contents, unifying their result. If the value is /// `Left(L)` then the first function `f` is applied; if it is `Right(R)` then the second /// function `g` is applied. diff -Nru temporalio-1.3.0/vendor/encoding_rs/.cargo-checksum.json temporalio-1.3.0/vendor/encoding_rs/.cargo-checksum.json --- temporalio-1.3.0/vendor/encoding_rs/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/encoding_rs/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"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 +{"files":{"CONTRIBUTING.md":"ca1901f3e8532fb4cec894fd3664f0eaa898c0c4b961d1b992d1ed54eacf362a","COPYRIGHT":"11789f45bb180841cd362a5eee6789c68ddb573a11105e30768c308a6add0190","Cargo.toml":"42fa83322aa9fd6723b77d35d0cacb92cbb6e7f573ce11c55f5225292866f8f4","Ideas.md":"b7452893f500163868d8de52c09addaf91e1632454ed02e892c467ed7ec39dbd","LICENSE-APACHE":"cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30","LICENSE-MIT":"3fa4ca83dcc9237839b1bdeb2e6d16bdfb5ec0c5ce42b24694d8bbf0dcbef72c","LICENSE-WHATWG":"838118388fe5c2e7f1dbbaeed13e1c7f3ebf88be91319c7c1d77c18e987d1a50","README.md":"d938e8ab0b9ab67e74a1a4f48f23fdce956d0ad3a3f6147ae7612a92763c88d5","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":"7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/encoding_rs/Cargo.toml temporalio-1.3.0/vendor/encoding_rs/Cargo.toml --- temporalio-1.3.0/vendor/encoding_rs/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/encoding_rs/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2018" name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" authors = ["Henri Sivonen "] description = "A Gecko-oriented implementation of the Encoding Standard" homepage = "https://docs.rs/encoding_rs/" @@ -40,9 +40,8 @@ version = "1.0" [dependencies.packed_simd] -version = "0.3.4" +version = "0.3.9" optional = true -package = "packed_simd_2" [dependencies.serde] version = "1.0" diff -Nru temporalio-1.3.0/vendor/encoding_rs/README.md temporalio-1.3.0/vendor/encoding_rs/README.md --- temporalio-1.3.0/vendor/encoding_rs/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/encoding_rs/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -167,7 +167,7 @@ ### `simd-accel` -Enables SIMD acceleration using the nightly-dependent `packed_simd_2` crate. +Enables SIMD acceleration using the nightly-dependent `packed_simd` crate. This is an opt-in feature, because enabling this feature _opts out_ of Rust's guarantees of future compilers compiling old code (aka. "stability story"). @@ -188,7 +188,7 @@ _Note!_ If you are compiling for a target that does not have 128-bit SIMD enabled as part of the target definition and you are enabling 128-bit SIMD using `-C target_feature`, you need to enable the `core_arch` Cargo feature -for `packed_simd_2` to compile a crates.io snapshot of `core_arch` instead of +for `packed_simd` to compile a crates.io snapshot of `core_arch` instead of using the standard-library copy of `core::arch`, because the `core::arch` module of the pre-compiled standard library has been compiled with the assumption that the CPU doesn't have 128-bit SIMD. At present this applies @@ -450,6 +450,10 @@ ## Release Notes +### 0.8.33 + +* Use `packed_simd` instead of `packed_simd_2` again now that updates are back under the `packed_simd` name. Only affects the `simd-accel` optional nightly feature. + ### 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.) diff -Nru temporalio-1.3.0/vendor/enum_dispatch/.cargo-checksum.json temporalio-1.3.0/vendor/enum_dispatch/.cargo-checksum.json --- temporalio-1.3.0/vendor/enum_dispatch/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/enum_dispatch/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"8073f6a4fc495f1203024961bd8f2ed9fdb5a0176ed0616c8639e6710db73289","Cargo.toml":"64d4fb54c1314651d2b08ab4cca465e73837f9b8761fda80e862e28315acc786","LICENSE":"1e5d3ddaf5cbc111c8517df39e6f252e4c16dbda26b7cc1ad54c9e3efb0586be","README.md":"46b26d242c9349673a4aca65e24463c1e682271165436cdd8f5a8ef88e1f549f","enum_dispatch.svg":"7f591991e5f7d2a2218a93681de0ccea2ee230402985bec9cfeb30ac1f736f6a","src/attributed_parser.rs":"b5572e2b2050075f20bc735b4cef107dae65647d74bdba5c21f7ea295c9a8808","src/cache.rs":"2ece3aab24347ee2c9152b7c5bcbfa0f0b870114ccb67953103ef10b8be3fc36","src/enum_dispatch_arg_list.rs":"94cfd08357eba9e0b09af8c7fed9cde7c661cf4e9bc219d774785fee942457b8","src/enum_dispatch_item.rs":"520ff7a019c180fc19970bd6191ee7f2a1611273ecfc726520182cf1e8cd1cdd","src/enum_dispatch_variant.rs":"31d4bd9dd8769582d41f6bca6b57ee632b7efabcb27877009b8ba435b25775ef","src/expansion.rs":"b202356908076ebf75bf83041c6af07d10ab4d10c94a586b1c946d8075fd41b3","src/filter_attrs.rs":"7538f1e48253df1defb686f1488da136eac89ff15059d9be4d341069e83c7f31","src/lib.rs":"c417340a33879f2867b67827a414f4058b73163e3818b5237b2a0201901220ab","src/supported_generics.rs":"75e425671649d3476de7ee1708df9b1cf23754c42ea8db5a9934de8e0eeabd8e","src/syn_utils.rs":"b51f709ce7f6ddb2c6ac32f789e349aa9efc81efb533a228691a3cc836661ea4"},"package":"11f36e95862220b211a6e2aa5eca09b4fa391b13cd52ceb8035a24bf65a79de2"} \ No newline at end of file +{"files":{"CHANGELOG.md":"1a71deb2adaff65ffda88b9b34af1161e83082f94d3a23d47920569b08a15201","Cargo.toml":"7388b17963b670f5f176fab4e433c126c260c2304625917349dd1b585195e204","LICENSE":"1e5d3ddaf5cbc111c8517df39e6f252e4c16dbda26b7cc1ad54c9e3efb0586be","README.md":"46b26d242c9349673a4aca65e24463c1e682271165436cdd8f5a8ef88e1f549f","enum_dispatch.svg":"7f591991e5f7d2a2218a93681de0ccea2ee230402985bec9cfeb30ac1f736f6a","src/attributed_parser.rs":"b5572e2b2050075f20bc735b4cef107dae65647d74bdba5c21f7ea295c9a8808","src/cache.rs":"2ece3aab24347ee2c9152b7c5bcbfa0f0b870114ccb67953103ef10b8be3fc36","src/enum_dispatch_arg_list.rs":"94cfd08357eba9e0b09af8c7fed9cde7c661cf4e9bc219d774785fee942457b8","src/enum_dispatch_item.rs":"8248a3d24bbd34f4cba3073fa58fd3270b3a1ab074859d498e9db89dc9a1ce20","src/enum_dispatch_variant.rs":"31d4bd9dd8769582d41f6bca6b57ee632b7efabcb27877009b8ba435b25775ef","src/expansion.rs":"9dbadcb69b21c9032ce516779798b54487b5712f96f0eada0acb1634bc1571f4","src/filter_attrs.rs":"7538f1e48253df1defb686f1488da136eac89ff15059d9be4d341069e83c7f31","src/lib.rs":"c417340a33879f2867b67827a414f4058b73163e3818b5237b2a0201901220ab","src/supported_generics.rs":"61fcb4c6d9366423ec93f03b322adbbe8b99b8b8c6d69c40974a37d44e2ec76f","src/syn_utils.rs":"b51f709ce7f6ddb2c6ac32f789e349aa9efc81efb533a228691a3cc836661ea4"},"package":"8f33313078bb8d4d05a2733a94ac4c2d8a0df9a2b84424ebf4f33bfc224a890e"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/enum_dispatch/Cargo.toml temporalio-1.3.0/vendor/enum_dispatch/Cargo.toml --- temporalio-1.3.0/vendor/enum_dispatch/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/enum_dispatch/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2018" name = "enum_dispatch" -version = "0.3.11" +version = "0.3.12" authors = ["Anton Lazarev "] exclude = [ "benches", @@ -30,7 +30,6 @@ categories = [ "rust-patterns", "development-tools::procedural-macro-helpers", - "development-tools::cargo-plugins", ] license = "MIT OR Apache-2.0" repository = "https://gitlab.com/antonok/enum_dispatch" @@ -48,7 +47,7 @@ version = "^1.0" [dependencies.syn] -version = "^1.0" +version = "^2.0" features = ["full"] [dev-dependencies.custom_derive] diff -Nru temporalio-1.3.0/vendor/enum_dispatch/CHANGELOG.md temporalio-1.3.0/vendor/enum_dispatch/CHANGELOG.md --- temporalio-1.3.0/vendor/enum_dispatch/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/enum_dispatch/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,9 @@ # Changelog +## 0.3.12 + +- Update to syn 2.0 (#69) + ## 0.3.11 - Add support for trait methods that return `Self` (#59, !29) diff -Nru temporalio-1.3.0/vendor/enum_dispatch/src/enum_dispatch_item.rs temporalio-1.3.0/vendor/enum_dispatch/src/enum_dispatch_item.rs --- temporalio-1.3.0/vendor/enum_dispatch/src/enum_dispatch_item.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/enum_dispatch/src/enum_dispatch_item.rs 2023-10-30 19:40:00.000000000 +0000 @@ -36,7 +36,7 @@ let where_clause = input.parse()?; let content; let brace_token = syn::braced!(content in input); - let variants = content.parse_terminated(EnumDispatchVariant::parse)?; + let variants = content.parse_terminated(EnumDispatchVariant::parse, syn::Token![,])?; Ok(Self { attrs, vis, @@ -88,6 +88,7 @@ ident: None, colon_token: Default::default(), ty: variant.ty.to_owned(), + mutability: syn::FieldMutability::None, }); punctuated }, diff -Nru temporalio-1.3.0/vendor/enum_dispatch/src/expansion.rs temporalio-1.3.0/vendor/enum_dispatch/src/expansion.rs --- temporalio-1.3.0/vendor/enum_dispatch/src/expansion.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/enum_dispatch/src/expansion.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ //! Provides a utility for generating `enum_dispatch` impl blocks given `EnumDispatchItem` and //! `syn::ItemTrait` definitions. -use crate::{cache, proc_macro}; +use crate::cache; use quote::{quote, ToTokens}; use syn::spanned::Spanned; @@ -78,7 +78,7 @@ /// Returns whether or not an attribute from an enum variant should be applied to other usages of /// that variant's identifier. fn use_attribute(attr: &&syn::Attribute) -> bool { - attr.path.is_ident("cfg") + attr.path().is_ident("cfg") } /// Generates impls of core::convert::From for each enum variant. @@ -218,7 +218,7 @@ /// Creates a method call that can be used in the match arms of all non-static method /// implementations. fn create_trait_fn_call( - trait_method: &syn::TraitItemMethod, + trait_method: &syn::TraitItemFn, trait_generics: &syn::TypeGenerics, trait_name: &syn::Ident, ) -> syn::Expr { @@ -286,7 +286,7 @@ /// Constructs a match expression that matches on all variants of the specified enum, creating a /// binding to their single field and calling the provided trait method on each. fn create_match_expr( - trait_method: &syn::TraitItemMethod, + trait_method: &syn::TraitItemFn, trait_generics: &syn::TypeGenerics, trait_name: &syn::Ident, enum_name: &syn::Ident, @@ -366,7 +366,7 @@ enumvariants: &[&EnumDispatchVariant], ) -> syn::ImplItem { match trait_item { - syn::TraitItem::Method(mut trait_method) => { + syn::TraitItem::Fn(mut trait_method) => { identify_signature_arguments(&mut trait_method.sig); let match_expr = create_match_expr( @@ -383,18 +383,17 @@ pound_token: Default::default(), style: syn::AttrStyle::Outer, bracket_token: Default::default(), - path: syn::parse_str("inline").unwrap(), - tokens: proc_macro::TokenStream::new().into(), + meta: syn::Meta::Path(syn::parse_str("inline").unwrap()), }); - syn::ImplItem::Method(syn::ImplItemMethod { + syn::ImplItem::Fn(syn::ImplItemFn { attrs: impl_attrs, vis: syn::Visibility::Inherited, defaultness: None, sig: trait_method.sig, block: syn::Block { brace_token: Default::default(), - stmts: vec![syn::Stmt::Expr(match_expr)], + stmts: vec![syn::Stmt::Expr(match_expr, None)], }, }) } @@ -430,8 +429,7 @@ ..pat_ident.clone() }), // Some of these aren't valid Rust syntax, but why not support all of them anyways! - syn::Pat::Box(syn::PatBox { attrs, .. }) - | syn::Pat::Lit(syn::PatLit { attrs, .. }) + syn::Pat::Lit(syn::PatLit { attrs, .. }) | syn::Pat::Macro(syn::PatMacro { attrs, .. }) | syn::Pat::Or(syn::PatOr { attrs, .. }) | syn::Pat::Path(syn::PatPath { attrs, .. }) @@ -443,11 +441,21 @@ | syn::Pat::Tuple(syn::PatTuple { attrs, .. }) | syn::Pat::TupleStruct(syn::PatTupleStruct { attrs, .. }) | syn::Pat::Type(syn::PatType { attrs, .. }) + | syn::Pat::Const(syn::PatConst { attrs, .. }) + | syn::Pat::Paren(syn::PatParen { attrs, .. }) | syn::Pat::Wild(syn::PatWild { attrs, .. }) => syn::Pat::Ident(syn::PatIdent { attrs: attrs.to_owned(), by_ref: None, mutability: None, ident: new_arg_ident(span, &mut arg_counter), + subpat: None, + }), + // This can occur for `box foo` syntax, which is no longer supported by syn 2.0. + syn::Pat::Verbatim(_) => syn::Pat::Ident(syn::PatIdent { + attrs: Default::default(), + by_ref: None, + mutability: None, + ident: new_arg_ident(span, &mut arg_counter), subpat: None, }), _ => panic!("Unsupported argument type"), diff -Nru temporalio-1.3.0/vendor/enum_dispatch/src/supported_generics.rs temporalio-1.3.0/vendor/enum_dispatch/src/supported_generics.rs --- temporalio-1.3.0/vendor/enum_dispatch/src/supported_generics.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/enum_dispatch/src/supported_generics.rs 2023-10-30 19:40:00.000000000 +0000 @@ -23,8 +23,10 @@ NonIdentifierType, NonIntegralConstGenericType, Lifetime, - Binding, Constraint, + AssocType, + AssocConst, + Unknown, } impl std::fmt::Display for UnsupportedGenericArg { @@ -33,8 +35,10 @@ Self::NonIdentifierType => write!(f, "Generic types in #[enum_dispatch(...)] must be identifiers"), Self::NonIntegralConstGenericType => write!(f, "Non-integral const generic types in #[enum_dispatch(...)] are not supported"), Self::Lifetime => write!(f, "Lifetime generics in #[enum_dispatch(...)] are not supported"), - Self::Binding => write!(f, "Generic equality constraints in #[enum_dispatch(...)] are not supported"), + Self::AssocType => write!(f, "Generic associated types in #[enum_dispatch(...)] are not supported"), + Self::AssocConst => write!(f, "Generic associated constants in #[enum_dispatch(...)] are not supported"), Self::Constraint => write!(f, "Generic trait constraints in #[enum_dispatch(...)] are not supported"), + Self::Unknown => write!(f, "Unsupported generic argument syntax in #[enum_dispatch(...)]"), } } } @@ -101,7 +105,9 @@ } syn::GenericArgument::Const(_) => Err((UnsupportedGenericArg::NonIntegralConstGenericType, span)), syn::GenericArgument::Lifetime(_) => Err((UnsupportedGenericArg::Lifetime, span)), - syn::GenericArgument::Binding(_) => Err((UnsupportedGenericArg::Binding, span)), syn::GenericArgument::Constraint(_) => Err((UnsupportedGenericArg::Constraint, span)), + syn::GenericArgument::AssocType(_) => Err((UnsupportedGenericArg::AssocType, span)), + syn::GenericArgument::AssocConst(_) => Err((UnsupportedGenericArg::AssocConst, span)), + _ => Err((UnsupportedGenericArg::Unknown, span)), } } diff -Nru temporalio-1.3.0/vendor/equivalent/.cargo-checksum.json temporalio-1.3.0/vendor/equivalent/.cargo-checksum.json --- temporalio-1.3.0/vendor/equivalent/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/equivalent/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +{"files":{"Cargo.toml":"87d7f4d5b05a14966f11c5e40940ca2687a3ae8e751bb15d7f537ae95310ab7b","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7365cc8878a1d7ce155a58c4ca09c3d7a6be413efa5334a80ea842912b669349","README.md":"bbcbb8419f9bb01a51d3d5e808fe35651d423014992a72be3e7acd518485f190","src/lib.rs":"1dd84363f561b30b1da713486c6b583900353e62c569d7ba1dd84eb2c04f1a14"},"package":"5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/equivalent/Cargo.toml temporalio-1.3.0/vendor/equivalent/Cargo.toml --- temporalio-1.3.0/vendor/equivalent/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/equivalent/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,27 @@ +# 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] +rust-version = "1.6" +name = "equivalent" +version = "1.0.1" +description = "Traits for key comparison in maps." +readme = "README.md" +keywords = [ + "hashmap", + "no_std", +] +categories = [ + "data-structures", + "no-std", +] +license = "Apache-2.0 OR MIT" +repository = "https://github.com/cuviper/equivalent" diff -Nru temporalio-1.3.0/vendor/equivalent/LICENSE-APACHE temporalio-1.3.0/vendor/equivalent/LICENSE-APACHE --- temporalio-1.3.0/vendor/equivalent/LICENSE-APACHE 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/equivalent/LICENSE-APACHE 2023-10-30 19:40:00.000000000 +0000 @@ -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 -Nru temporalio-1.3.0/vendor/equivalent/LICENSE-MIT temporalio-1.3.0/vendor/equivalent/LICENSE-MIT --- temporalio-1.3.0/vendor/equivalent/LICENSE-MIT 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/equivalent/LICENSE-MIT 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,25 @@ +Copyright (c) 2016--2023 + +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 -Nru temporalio-1.3.0/vendor/equivalent/README.md temporalio-1.3.0/vendor/equivalent/README.md --- temporalio-1.3.0/vendor/equivalent/README.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/equivalent/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,25 @@ +# Equivalent + +[![crates.io](https://img.shields.io/crates/v/equivalent.svg)](https://crates.io/crates/equivalent) +[![docs](https://docs.rs/equivalent/badge.svg)](https://docs.rs/equivalent) + +`Equivalent` and `Comparable` are Rust traits for key comparison in maps. + +These may be used in the implementation of maps where the lookup type `Q` +may be different than the stored key type `K`. + +* `Q: Equivalent` checks for equality, similar to the `HashMap` + constraint `K: Borrow, Q: Eq`. +* `Q: Comparable` checks the ordering, similar to the `BTreeMap` + constraint `K: Borrow, Q: Ord`. + +These traits are not used by the maps in the standard library, but they may +add more flexibility in third-party map implementations, especially in +situations where a strict `K: Borrow` relationship is not available. + +## License + +Equivalent is distributed under the terms of both the MIT license and the +Apache License (Version 2.0). See [LICENSE-APACHE](LICENSE-APACHE) and +[LICENSE-MIT](LICENSE-MIT) for details. Opening a pull request is +assumed to signal agreement with these licensing terms. diff -Nru temporalio-1.3.0/vendor/equivalent/src/lib.rs temporalio-1.3.0/vendor/equivalent/src/lib.rs --- temporalio-1.3.0/vendor/equivalent/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/equivalent/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,113 @@ +//! [`Equivalent`] and [`Comparable`] are traits for key comparison in maps. +//! +//! These may be used in the implementation of maps where the lookup type `Q` +//! may be different than the stored key type `K`. +//! +//! * `Q: Equivalent` checks for equality, similar to the `HashMap` +//! constraint `K: Borrow, Q: Eq`. +//! * `Q: Comparable` checks the ordering, similar to the `BTreeMap` +//! constraint `K: Borrow, Q: Ord`. +//! +//! These traits are not used by the maps in the standard library, but they may +//! add more flexibility in third-party map implementations, especially in +//! situations where a strict `K: Borrow` relationship is not available. +//! +//! # Examples +//! +//! ``` +//! use equivalent::*; +//! use std::cmp::Ordering; +//! +//! pub struct Pair(pub A, pub B); +//! +//! impl<'a, A: ?Sized, B: ?Sized, C, D> Equivalent<(C, D)> for Pair<&'a A, &'a B> +//! where +//! A: Equivalent, +//! B: Equivalent, +//! { +//! fn equivalent(&self, key: &(C, D)) -> bool { +//! self.0.equivalent(&key.0) && self.1.equivalent(&key.1) +//! } +//! } +//! +//! impl<'a, A: ?Sized, B: ?Sized, C, D> Comparable<(C, D)> for Pair<&'a A, &'a B> +//! where +//! A: Comparable, +//! B: Comparable, +//! { +//! fn compare(&self, key: &(C, D)) -> Ordering { +//! match self.0.compare(&key.0) { +//! Ordering::Equal => self.1.compare(&key.1), +//! not_equal => not_equal, +//! } +//! } +//! } +//! +//! fn main() { +//! let key = (String::from("foo"), String::from("bar")); +//! let q1 = Pair("foo", "bar"); +//! let q2 = Pair("boo", "bar"); +//! let q3 = Pair("foo", "baz"); +//! +//! assert!(q1.equivalent(&key)); +//! assert!(!q2.equivalent(&key)); +//! assert!(!q3.equivalent(&key)); +//! +//! assert_eq!(q1.compare(&key), Ordering::Equal); +//! assert_eq!(q2.compare(&key), Ordering::Less); +//! assert_eq!(q3.compare(&key), Ordering::Greater); +//! } +//! ``` + +#![no_std] + +use core::borrow::Borrow; +use core::cmp::Ordering; + +/// Key equivalence trait. +/// +/// This trait allows hash table lookup to be customized. It has one blanket +/// implementation that uses the regular solution with `Borrow` and `Eq`, just +/// like `HashMap` does, so that you can pass `&str` to lookup into a map with +/// `String` keys and so on. +/// +/// # Contract +/// +/// The implementor **must** hash like `K`, if it is hashable. +pub trait Equivalent { + /// Compare self to `key` and return `true` if they are equal. + fn equivalent(&self, key: &K) -> bool; +} + +impl Equivalent for Q +where + Q: Eq, + K: Borrow, +{ + #[inline] + fn equivalent(&self, key: &K) -> bool { + PartialEq::eq(self, key.borrow()) + } +} + +/// Key ordering trait. +/// +/// This trait allows ordered map lookup to be customized. It has one blanket +/// implementation that uses the regular solution with `Borrow` and `Ord`, just +/// like `BTreeMap` does, so that you can pass `&str` to lookup into a map with +/// `String` keys and so on. +pub trait Comparable: Equivalent { + /// Compare self to `key` and return their ordering. + fn compare(&self, key: &K) -> Ordering; +} + +impl Comparable for Q +where + Q: Ord, + K: Borrow, +{ + #[inline] + fn compare(&self, key: &K) -> Ordering { + Ord::cmp(self, key.borrow()) + } +} diff -Nru temporalio-1.3.0/vendor/erased-serde/.cargo-checksum.json temporalio-1.3.0/vendor/erased-serde/.cargo-checksum.json --- temporalio-1.3.0/vendor/erased-serde/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/erased-serde/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"33902ea62deaa104cf0e1c5a074af06e4ab49e70dee6a6a08bbde98afdc1037a","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"f6b87ecbc2801e77cbd1a52b3724e1e665d78222466fcb1460e6b96cb4ee42ac","build.rs":"2f7dab0f853b3e0a54f0dd82d386a51fbff11b351ebe6eb3ac12c859a06c4f8f","src/any.rs":"227965cb488f2b27e580ddcfacafd2959fad94f2f360d53e114c0c364288dc98","src/de.rs":"0053fc99ac7eb0f49bb6cdd69fa4d220366f83ccb27366287d06444445c680bd","src/error.rs":"f433eb3f6cce216e17f1d0d6ffc218185f72ea8f47eef97dd265f910098d6d84","src/features_check/error.rs":"1f2b5d89f9d59ad84a9b77566f9446d36ce430e45eaffdcc30701e8e4de289b9","src/features_check/mod.rs":"2209f8d5c46b50c8a3b8dc22338dcaf0135d192e8b05d2f456cbe6a73104e958","src/lib.rs":"cbf886f0db8e8eea9a4c1327fc87e1fb1480ad109f78ea55648b9d4707d16c82","src/macros.rs":"49a81da2c9d1d30f90fbb098f80a1087f452f2b040e8acdaea22882be6f7525f","src/map.rs":"56f8817b57c5b144575d2c20d3976adb90e1d56d5128cb3fda88c103144fd5da","src/private.rs":"3511e611e5d8ca469f1155cd5c3f090b088171757de0fa6e4d55c98980ebfb54","src/ser.rs":"4a4112ac70e219a38ba3a3327dea6d1181429c250356bf69318ef920028fbdb5","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/readme.rs":"5912a854d3c2d14d9da6b014c7af611b21217c9d5eadec3a874be41945742196","tests/traitobject.rs":"bbaae0d969b5b971e29efa16f7166850944006dc85abf6fa212e31f5e27d4cd0","tests/ui/missing-supertrait.rs":"4660ac0656579f2d7e4186c4a2158ac96a72b15c136cf06840be3812412c187d","tests/ui/missing-supertrait.stderr":"86edc9111421f57d7d59001a8a4e3b5266dc8200345dbae4df00a128bfe7aa6c"},"package":"f94c0e13118e7d7533271f754a168ae8400e6a1cc043f2bfd53cc7290f1a1de3"} \ No newline at end of file +{"files":{"Cargo.toml":"0b0bc37ffa7f4dcc85048f8e5c25ecc1da35bf1d9b20969cb790bd3f600c31cf","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"f6b87ecbc2801e77cbd1a52b3724e1e665d78222466fcb1460e6b96cb4ee42ac","build.rs":"2f7dab0f853b3e0a54f0dd82d386a51fbff11b351ebe6eb3ac12c859a06c4f8f","src/any.rs":"227965cb488f2b27e580ddcfacafd2959fad94f2f360d53e114c0c364288dc98","src/de.rs":"f232f3096e8b5d5e4fcc83a5ef330d3a0ed7169388f99827d3f2340db6140840","src/error.rs":"f433eb3f6cce216e17f1d0d6ffc218185f72ea8f47eef97dd265f910098d6d84","src/features_check/error.rs":"1f2b5d89f9d59ad84a9b77566f9446d36ce430e45eaffdcc30701e8e4de289b9","src/features_check/mod.rs":"2209f8d5c46b50c8a3b8dc22338dcaf0135d192e8b05d2f456cbe6a73104e958","src/lib.rs":"d2d97c7fe5d17cd0841dbd86dac20faf10b7d3e77b0b308bdee3b5b388a9e773","src/macros.rs":"49a81da2c9d1d30f90fbb098f80a1087f452f2b040e8acdaea22882be6f7525f","src/map.rs":"56f8817b57c5b144575d2c20d3976adb90e1d56d5128cb3fda88c103144fd5da","src/private.rs":"86d585e6d55e9f4752631d5af74cb857aabf7bfe5f21090e5664b4e3cfb4e69f","src/ser.rs":"637348ed7e53c59787370f04953e3a20af72ddc324fc8694483caa9a526b8b6f","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/readme.rs":"5912a854d3c2d14d9da6b014c7af611b21217c9d5eadec3a874be41945742196","tests/traitobject.rs":"bbaae0d969b5b971e29efa16f7166850944006dc85abf6fa212e31f5e27d4cd0","tests/ui/missing-supertrait.rs":"4660ac0656579f2d7e4186c4a2158ac96a72b15c136cf06840be3812412c187d","tests/ui/missing-supertrait.stderr":"86edc9111421f57d7d59001a8a4e3b5266dc8200345dbae4df00a128bfe7aa6c"},"package":"837c0466252947ada828b975e12daf82e18bb5444e4df87be6038d4469e2a3d2"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/erased-serde/Cargo.toml temporalio-1.3.0/vendor/erased-serde/Cargo.toml --- temporalio-1.3.0/vendor/erased-serde/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/erased-serde/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ edition = "2021" rust-version = "1.56" name = "erased-serde" -version = "0.3.27" +version = "0.3.30" authors = ["David Tolnay "] description = "Type-erased Serialize and Serializer traits" documentation = "https://docs.rs/erased-serde" @@ -31,6 +31,7 @@ repository = "https://github.com/dtolnay/erased-serde" [package.metadata.docs.rs] +rustdoc-args = ["--generate-link-to-definition"] targets = ["x86_64-unknown-linux-gnu"] [lib] @@ -57,7 +58,7 @@ version = "1.0.99" [dev-dependencies.trybuild] -version = "1.0.81" +version = "1.0.83" features = ["diff"] [features] diff -Nru temporalio-1.3.0/vendor/erased-serde/src/de.rs temporalio-1.3.0/vendor/erased-serde/src/de.rs --- temporalio-1.3.0/vendor/erased-serde/src/de.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/erased-serde/src/de.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,7 +3,6 @@ use crate::error::Error; use crate::map::{OptionExt, ResultExt}; use core::fmt::{self, Display}; -use serde::serde_if_integer128; /// Deserialize a value of type `T` from the given trait object. /// @@ -81,18 +80,16 @@ pub trait Deserializer<'de> { fn erased_deserialize_any(&mut self, v: &mut dyn Visitor<'de>) -> Result; fn erased_deserialize_bool(&mut self, v: &mut dyn Visitor<'de>) -> Result; - fn erased_deserialize_u8(&mut self, v: &mut dyn Visitor<'de>) -> Result; - fn erased_deserialize_u16(&mut self, v: &mut dyn Visitor<'de>) -> Result; - fn erased_deserialize_u32(&mut self, v: &mut dyn Visitor<'de>) -> Result; - fn erased_deserialize_u64(&mut self, v: &mut dyn Visitor<'de>) -> Result; fn erased_deserialize_i8(&mut self, v: &mut dyn Visitor<'de>) -> Result; fn erased_deserialize_i16(&mut self, v: &mut dyn Visitor<'de>) -> Result; fn erased_deserialize_i32(&mut self, v: &mut dyn Visitor<'de>) -> Result; fn erased_deserialize_i64(&mut self, v: &mut dyn Visitor<'de>) -> Result; - serde_if_integer128! { - fn erased_deserialize_i128(&mut self, v: &mut dyn Visitor<'de>) -> Result; - fn erased_deserialize_u128(&mut self, v: &mut dyn Visitor<'de>) -> Result; - } + fn erased_deserialize_i128(&mut self, v: &mut dyn Visitor<'de>) -> Result; + fn erased_deserialize_u8(&mut self, v: &mut dyn Visitor<'de>) -> Result; + fn erased_deserialize_u16(&mut self, v: &mut dyn Visitor<'de>) -> Result; + fn erased_deserialize_u32(&mut self, v: &mut dyn Visitor<'de>) -> Result; + fn erased_deserialize_u64(&mut self, v: &mut dyn Visitor<'de>) -> Result; + fn erased_deserialize_u128(&mut self, v: &mut dyn Visitor<'de>) -> Result; fn erased_deserialize_f32(&mut self, v: &mut dyn Visitor<'de>) -> Result; fn erased_deserialize_f64(&mut self, v: &mut dyn Visitor<'de>) -> Result; fn erased_deserialize_char(&mut self, v: &mut dyn Visitor<'de>) -> Result; @@ -149,14 +146,12 @@ fn erased_visit_i16(&mut self, v: i16) -> Result; fn erased_visit_i32(&mut self, v: i32) -> Result; fn erased_visit_i64(&mut self, v: i64) -> Result; + fn erased_visit_i128(&mut self, v: i128) -> Result; fn erased_visit_u8(&mut self, v: u8) -> Result; fn erased_visit_u16(&mut self, v: u16) -> Result; fn erased_visit_u32(&mut self, v: u32) -> Result; fn erased_visit_u64(&mut self, v: u64) -> Result; - serde_if_integer128! { - fn erased_visit_i128(&mut self, v: i128) -> Result; - fn erased_visit_u128(&mut self, v: u128) -> Result; - } + fn erased_visit_u128(&mut self, v: u128) -> Result; fn erased_visit_f32(&mut self, v: f32) -> Result; fn erased_visit_f64(&mut self, v: f64) -> Result; fn erased_visit_char(&mut self, v: char) -> Result; @@ -356,22 +351,6 @@ self.take().deserialize_bool(visitor).map_err(erase) } - fn erased_deserialize_u8(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { - self.take().deserialize_u8(visitor).map_err(erase) - } - - fn erased_deserialize_u16(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { - self.take().deserialize_u16(visitor).map_err(erase) - } - - fn erased_deserialize_u32(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { - self.take().deserialize_u32(visitor).map_err(erase) - } - - fn erased_deserialize_u64(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { - self.take().deserialize_u64(visitor).map_err(erase) - } - fn erased_deserialize_i8(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { self.take().deserialize_i8(visitor).map_err(erase) } @@ -388,14 +367,28 @@ self.take().deserialize_i64(visitor).map_err(erase) } - serde_if_integer128! { - fn erased_deserialize_i128(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { - self.take().deserialize_i128(visitor).map_err(erase) - } + fn erased_deserialize_i128(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { + self.take().deserialize_i128(visitor).map_err(erase) + } - fn erased_deserialize_u128(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { - self.take().deserialize_u128(visitor).map_err(erase) - } + fn erased_deserialize_u8(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { + self.take().deserialize_u8(visitor).map_err(erase) + } + + fn erased_deserialize_u16(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { + self.take().deserialize_u16(visitor).map_err(erase) + } + + fn erased_deserialize_u32(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { + self.take().deserialize_u32(visitor).map_err(erase) + } + + fn erased_deserialize_u64(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { + self.take().deserialize_u64(visitor).map_err(erase) + } + + fn erased_deserialize_u128(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { + self.take().deserialize_u128(visitor).map_err(erase) } fn erased_deserialize_f32(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { @@ -553,6 +546,10 @@ unsafe { self.take().visit_i64(v).unsafe_map(Out::new) } } + fn erased_visit_i128(&mut self, v: i128) -> Result { + unsafe { self.take().visit_i128(v).unsafe_map(Out::new) } + } + fn erased_visit_u8(&mut self, v: u8) -> Result { unsafe { self.take().visit_u8(v).unsafe_map(Out::new) } } @@ -569,14 +566,8 @@ unsafe { self.take().visit_u64(v).unsafe_map(Out::new) } } - serde_if_integer128! { - fn erased_visit_i128(&mut self, v: i128) -> Result { - unsafe { self.take().visit_i128(v).unsafe_map(Out::new) } - } - - fn erased_visit_u128(&mut self, v: u128) -> Result { - unsafe { self.take().visit_u128(v).unsafe_map(Out::new) } - } + fn erased_visit_u128(&mut self, v: u128) -> Result { + unsafe { self.take().visit_u128(v).unsafe_map(Out::new) } } fn erased_visit_f32(&mut self, v: f32) -> Result { @@ -782,7 +773,7 @@ // IMPL SERDE FOR ERASED SERDE ///////////////////////////////////////////////// -impl<'de, 'a> serde::de::DeserializeSeed<'de> for &'a mut dyn DeserializeSeed<'de> { +impl<'de> serde::de::DeserializeSeed<'de> for &mut (dyn DeserializeSeed<'de> + '_) { type Value = Out; fn deserialize(self, deserializer: D) -> Result where @@ -796,163 +787,254 @@ } macro_rules! impl_deserializer_for_trait_object { - ({$($generics:tt)*} {$($mut:tt)*} $ty:ty) => { - impl <$($generics)*> serde::Deserializer<'de> for $ty { + ({$($mut:tt)*} $ty:ty) => { + impl<'de> serde::Deserializer<'de> for $ty { type Error = Error; - fn deserialize_any($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_any($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_any(&mut erased).unsafe_map(Out::take) } } - fn deserialize_bool($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_bool($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_bool(&mut erased).unsafe_map(Out::take) } } - fn deserialize_u8($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_i8($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; - unsafe { self.erased_deserialize_u8(&mut erased).unsafe_map(Out::take) } + unsafe { self.erased_deserialize_i8(&mut erased).unsafe_map(Out::take) } } - fn deserialize_u16($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_i16($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; - unsafe { self.erased_deserialize_u16(&mut erased).unsafe_map(Out::take) } + unsafe { self.erased_deserialize_i16(&mut erased).unsafe_map(Out::take) } } - fn deserialize_u32($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_i32($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; - unsafe { self.erased_deserialize_u32(&mut erased).unsafe_map(Out::take) } + unsafe { self.erased_deserialize_i32(&mut erased).unsafe_map(Out::take) } } - fn deserialize_u64($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_i64($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; - unsafe { self.erased_deserialize_u64(&mut erased).unsafe_map(Out::take) } + unsafe { self.erased_deserialize_i64(&mut erased).unsafe_map(Out::take) } + } + + fn deserialize_i128($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + let mut erased = erase::Visitor { state: Some(visitor) }; + unsafe { self.erased_deserialize_i128(&mut erased).unsafe_map(Out::take) } } - fn deserialize_i8($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_u8($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; - unsafe { self.erased_deserialize_i8(&mut erased).unsafe_map(Out::take) } + unsafe { self.erased_deserialize_u8(&mut erased).unsafe_map(Out::take) } } - fn deserialize_i16($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_u16($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; - unsafe { self.erased_deserialize_i16(&mut erased).unsafe_map(Out::take) } + unsafe { self.erased_deserialize_u16(&mut erased).unsafe_map(Out::take) } } - fn deserialize_i32($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_u32($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; - unsafe { self.erased_deserialize_i32(&mut erased).unsafe_map(Out::take) } + unsafe { self.erased_deserialize_u32(&mut erased).unsafe_map(Out::take) } } - fn deserialize_i64($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_u64($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; - unsafe { self.erased_deserialize_i64(&mut erased).unsafe_map(Out::take) } + unsafe { self.erased_deserialize_u64(&mut erased).unsafe_map(Out::take) } } - serde_if_integer128! { - fn deserialize_i128($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { - let mut erased = erase::Visitor { state: Some(visitor) }; - unsafe { self.erased_deserialize_i128(&mut erased).unsafe_map(Out::take) } - } - - fn deserialize_u128($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { - let mut erased = erase::Visitor { state: Some(visitor) }; - unsafe { self.erased_deserialize_u128(&mut erased).unsafe_map(Out::take) } - } + fn deserialize_u128($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + let mut erased = erase::Visitor { state: Some(visitor) }; + unsafe { self.erased_deserialize_u128(&mut erased).unsafe_map(Out::take) } } - fn deserialize_f32($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_f32($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_f32(&mut erased).unsafe_map(Out::take) } } - fn deserialize_f64($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_f64($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_f64(&mut erased).unsafe_map(Out::take) } } - fn deserialize_char($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_char($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_char(&mut erased).unsafe_map(Out::take) } } - fn deserialize_str($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_str($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_str(&mut erased).unsafe_map(Out::take) } } - fn deserialize_string($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_string($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_string(&mut erased).unsafe_map(Out::take) } } - fn deserialize_bytes($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_bytes($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_bytes(&mut erased).unsafe_map(Out::take) } } - fn deserialize_byte_buf($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_byte_buf($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_byte_buf(&mut erased).unsafe_map(Out::take) } } - fn deserialize_option($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_option($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_option(&mut erased).unsafe_map(Out::take) } } - fn deserialize_unit($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_unit($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_unit(&mut erased).unsafe_map(Out::take) } } - fn deserialize_unit_struct($($mut)* self, name: &'static str, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_unit_struct($($mut)* self, name: &'static str, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_unit_struct(name, &mut erased).unsafe_map(Out::take) } } - fn deserialize_newtype_struct($($mut)* self, name: &'static str, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_newtype_struct($($mut)* self, name: &'static str, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_newtype_struct(name, &mut erased).unsafe_map(Out::take) } } - fn deserialize_seq($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_seq($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_seq(&mut erased).unsafe_map(Out::take) } } - fn deserialize_tuple($($mut)* self, len: usize, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_tuple($($mut)* self, len: usize, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_tuple(len, &mut erased).unsafe_map(Out::take) } } - fn deserialize_tuple_struct($($mut)* self, name: &'static str, len: usize, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_tuple_struct($($mut)* self, name: &'static str, len: usize, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_tuple_struct(name, len, &mut erased).unsafe_map(Out::take) } } - fn deserialize_map($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_map($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_map(&mut erased).unsafe_map(Out::take) } } - fn deserialize_struct($($mut)* self, name: &'static str, fields: &'static [&'static str], visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_struct($($mut)* self, name: &'static str, fields: &'static [&'static str], visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_struct(name, fields, &mut erased).unsafe_map(Out::take) } } - fn deserialize_identifier($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_identifier($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_identifier(&mut erased).unsafe_map(Out::take) } } - fn deserialize_enum($($mut)* self, name: &'static str, variants: &'static [&'static str], visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_enum($($mut)* self, name: &'static str, variants: &'static [&'static str], visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_enum(name, variants, &mut erased).unsafe_map(Out::take) } } - fn deserialize_ignored_any($($mut)* self, visitor: V) -> Result where V: serde::de::Visitor<'de> { + fn deserialize_ignored_any($($mut)* self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { let mut erased = erase::Visitor { state: Some(visitor) }; unsafe { self.erased_deserialize_ignored_any(&mut erased).unsafe_map(Out::take) } } @@ -964,16 +1046,16 @@ }; } -impl_deserializer_for_trait_object!({'de, 'a} {} &'a mut dyn Deserializer<'de>); -impl_deserializer_for_trait_object!({'de, 'a} {} &'a mut (dyn Deserializer<'de> + Send)); -impl_deserializer_for_trait_object!({'de, 'a} {} &'a mut (dyn Deserializer<'de> + Sync)); -impl_deserializer_for_trait_object!({'de, 'a} {} &'a mut (dyn Deserializer<'de> + Send + Sync)); -impl_deserializer_for_trait_object!({'de} {mut} Box>); -impl_deserializer_for_trait_object!({'de} {mut} Box + Send>); -impl_deserializer_for_trait_object!({'de} {mut} Box + Sync>); -impl_deserializer_for_trait_object!({'de} {mut} Box + Send + Sync>); +impl_deserializer_for_trait_object!({} &mut (dyn Deserializer<'de> + '_)); +impl_deserializer_for_trait_object!({} &mut (dyn Deserializer<'de> + Send + '_)); +impl_deserializer_for_trait_object!({} &mut (dyn Deserializer<'de> + Sync + '_)); +impl_deserializer_for_trait_object!({} &mut (dyn Deserializer<'de> + Send + Sync + '_)); +impl_deserializer_for_trait_object!({mut} Box + '_>); +impl_deserializer_for_trait_object!({mut} Box + Send + '_>); +impl_deserializer_for_trait_object!({mut} Box + Sync + '_>); +impl_deserializer_for_trait_object!({mut} Box + Send + Sync + '_>); -impl<'de, 'a> serde::de::Visitor<'de> for &'a mut dyn Visitor<'de> { +impl<'de> serde::de::Visitor<'de> for &mut (dyn Visitor<'de> + '_) { type Value = Out; fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { @@ -1015,6 +1097,13 @@ self.erased_visit_i64(v).map_err(unerase) } + fn visit_i128(self, v: i128) -> Result + where + E: serde::de::Error, + { + self.erased_visit_i128(v).map_err(unerase) + } + fn visit_u8(self, v: u8) -> Result where E: serde::de::Error, @@ -1043,14 +1132,11 @@ self.erased_visit_u64(v).map_err(unerase) } - serde_if_integer128! { - fn visit_i128(self, v: i128) -> Result where E: serde::de::Error { - self.erased_visit_i128(v).map_err(unerase) - } - - fn visit_u128(self, v: u128) -> Result where E: serde::de::Error { - self.erased_visit_u128(v).map_err(unerase) - } + fn visit_u128(self, v: u128) -> Result + where + E: serde::de::Error, + { + self.erased_visit_u128(v).map_err(unerase) } fn visit_f32(self, v: f32) -> Result @@ -1178,7 +1264,7 @@ } } -impl<'de, 'a> serde::de::SeqAccess<'de> for &'a mut dyn SeqAccess<'de> { +impl<'de> serde::de::SeqAccess<'de> for &mut (dyn SeqAccess<'de> + '_) { type Error = Error; fn next_element_seed(&mut self, seed: T) -> Result, Error> @@ -1198,7 +1284,7 @@ } } -impl<'de, 'a> serde::de::MapAccess<'de> for &'a mut dyn MapAccess<'de> { +impl<'de> serde::de::MapAccess<'de> for &mut (dyn MapAccess<'de> + '_) { type Error = Error; fn next_key_seed(&mut self, seed: K) -> Result, Error> @@ -1230,7 +1316,7 @@ } } -impl<'de, 'a> serde::de::EnumAccess<'de> for &'a mut dyn EnumAccess<'de> { +impl<'de> serde::de::EnumAccess<'de> for &mut (dyn EnumAccess<'de> + '_) { type Error = Error; type Variant = Variant<'de>; @@ -1311,22 +1397,6 @@ (**self).erased_deserialize_bool(visitor) } - fn erased_deserialize_u8(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { - (**self).erased_deserialize_u8(visitor) - } - - fn erased_deserialize_u16(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { - (**self).erased_deserialize_u16(visitor) - } - - fn erased_deserialize_u32(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { - (**self).erased_deserialize_u32(visitor) - } - - fn erased_deserialize_u64(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { - (**self).erased_deserialize_u64(visitor) - } - fn erased_deserialize_i8(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { (**self).erased_deserialize_i8(visitor) } @@ -1343,14 +1413,28 @@ (**self).erased_deserialize_i64(visitor) } - serde_if_integer128! { - fn erased_deserialize_i128(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { - (**self).erased_deserialize_i128(visitor) - } - - fn erased_deserialize_u128(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { - (**self).erased_deserialize_u128(visitor) - } + fn erased_deserialize_i128(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { + (**self).erased_deserialize_i128(visitor) + } + + fn erased_deserialize_u8(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { + (**self).erased_deserialize_u8(visitor) + } + + fn erased_deserialize_u16(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { + (**self).erased_deserialize_u16(visitor) + } + + fn erased_deserialize_u32(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { + (**self).erased_deserialize_u32(visitor) + } + + fn erased_deserialize_u64(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { + (**self).erased_deserialize_u64(visitor) + } + + fn erased_deserialize_u128(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { + (**self).erased_deserialize_u128(visitor) } fn erased_deserialize_f32(&mut self, visitor: &mut dyn Visitor<'de>) -> Result { @@ -1436,11 +1520,11 @@ }; } -deref_erased_deserializer!(<'de, 'a> Deserializer<'de> for Box + 'a>); -deref_erased_deserializer!(<'de, 'a> Deserializer<'de> for Box + Send + 'a>); -deref_erased_deserializer!(<'de, 'a> Deserializer<'de> for Box + Sync + 'a>); -deref_erased_deserializer!(<'de, 'a> Deserializer<'de> for Box + Send + Sync + 'a>); -deref_erased_deserializer!(<'de, 'a, T: ?Sized + Deserializer<'de>> Deserializer<'de> for &'a mut T); +deref_erased_deserializer!(<'de> Deserializer<'de> for Box + '_>); +deref_erased_deserializer!(<'de> Deserializer<'de> for Box + Send + '_>); +deref_erased_deserializer!(<'de> Deserializer<'de> for Box + Sync + '_>); +deref_erased_deserializer!(<'de> Deserializer<'de> for Box + Send + Sync + '_>); +deref_erased_deserializer!(<'de, T: ?Sized + Deserializer<'de>> Deserializer<'de> for &mut T); // ERROR /////////////////////////////////////////////////////////////////////// diff -Nru temporalio-1.3.0/vendor/erased-serde/src/lib.rs temporalio-1.3.0/vendor/erased-serde/src/lib.rs --- temporalio-1.3.0/vendor/erased-serde/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/erased-serde/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -95,7 +95,7 @@ //! } //! ``` -#![doc(html_root_url = "https://docs.rs/erased-serde/0.3.27")] +#![doc(html_root_url = "https://docs.rs/erased-serde/0.3.30")] #![cfg_attr(not(feature = "std"), no_std)] #![cfg_attr(not(no_unsafe_op_in_unsafe_fn_lint), deny(unsafe_op_in_unsafe_fn))] #![cfg_attr(no_unsafe_op_in_unsafe_fn_lint, allow(unused_unsafe))] @@ -106,6 +106,7 @@ clippy::manual_map, // https://github.com/rust-lang/rust-clippy/issues/7820 clippy::missing_errors_doc, clippy::needless_doctest_main, + clippy::needless_pass_by_ref_mut, clippy::semicolon_if_nothing_returned, // https://github.com/rust-lang/rust-clippy/issues/7324 clippy::unused_self, clippy::wildcard_imports diff -Nru temporalio-1.3.0/vendor/erased-serde/src/private.rs temporalio-1.3.0/vendor/erased-serde/src/private.rs --- temporalio-1.3.0/vendor/erased-serde/src/private.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/erased-serde/src/private.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,14 @@ //! Not public API. Used as `$crate::__private` by macros. +#[doc(hidden)] pub use core::marker::{Send, Sized, Sync}; -pub use core::result::Result; +#[doc(hidden)] pub use serde; +#[doc(hidden)] +pub type Result = core::result::Result; + +#[doc(hidden)] pub fn require_erased_serialize_impl() where T: ?Sized + crate::Serialize, diff -Nru temporalio-1.3.0/vendor/erased-serde/src/ser.rs temporalio-1.3.0/vendor/erased-serde/src/ser.rs --- temporalio-1.3.0/vendor/erased-serde/src/ser.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/erased-serde/src/ser.rs 2023-10-30 19:40:00.000000000 +0000 @@ -8,7 +8,6 @@ SerializeMap, SerializeSeq, SerializeStruct, SerializeStructVariant, SerializeTuple, SerializeTupleStruct, SerializeTupleVariant, }; -use serde::serde_if_integer128; // TRAITS ////////////////////////////////////////////////////////////////////// @@ -99,14 +98,12 @@ fn erased_serialize_i16(&mut self, v: i16) -> Result; fn erased_serialize_i32(&mut self, v: i32) -> Result; fn erased_serialize_i64(&mut self, v: i64) -> Result; + fn erased_serialize_i128(&mut self, v: i128) -> Result; fn erased_serialize_u8(&mut self, v: u8) -> Result; fn erased_serialize_u16(&mut self, v: u16) -> Result; fn erased_serialize_u32(&mut self, v: u32) -> Result; fn erased_serialize_u64(&mut self, v: u64) -> Result; - serde_if_integer128! { - fn erased_serialize_i128(&mut self, v: i128) -> Result; - fn erased_serialize_u128(&mut self, v: u128) -> Result; - } + fn erased_serialize_u128(&mut self, v: u128) -> Result; fn erased_serialize_f32(&mut self, v: f32) -> Result; fn erased_serialize_f64(&mut self, v: f64) -> Result; fn erased_serialize_char(&mut self, v: char) -> Result; @@ -309,6 +306,15 @@ } } + fn erased_serialize_i128(&mut self, v: i128) -> Result { + unsafe { + self.take() + .serialize_i128(v) + .unsafe_map(Ok::new) + .map_err(erase) + } + } + fn erased_serialize_u8(&mut self, v: u8) -> Result { unsafe { self.take() @@ -345,23 +351,12 @@ } } - serde_if_integer128! { - fn erased_serialize_i128(&mut self, v: i128) -> Result { - unsafe { - self.take() - .serialize_i128(v) - .unsafe_map(Ok::new) - .map_err(erase) - } - } - - fn erased_serialize_u128(&mut self, v: u128) -> Result { - unsafe { - self.take() - .serialize_u128(v) - .unsafe_map(Ok::new) - .map_err(erase) - } + fn erased_serialize_u128(&mut self, v: u128) -> Result { + unsafe { + self.take() + .serialize_u128(v) + .unsafe_map(Ok::new) + .map_err(erase) } } @@ -654,6 +649,10 @@ self.erased_serialize_i64(v) } + fn serialize_i128(self, v: i128) -> Result { + self.erased_serialize_i128(v) + } + fn serialize_u8(self, v: u8) -> Result { self.erased_serialize_u8(v) } @@ -670,14 +669,8 @@ self.erased_serialize_u64(v) } - serde_if_integer128! { - fn serialize_i128(self, v: i128) -> Result { - self.erased_serialize_i128(v) - } - - fn serialize_u128(self, v: u128) -> Result { - self.erased_serialize_u128(v) - } + fn serialize_u128(self, v: u128) -> Result { + self.erased_serialize_u128(v) } fn serialize_f32(self, v: f32) -> Result { @@ -807,10 +800,10 @@ }; } -impl_serializer_for_trait_object!(&'a mut dyn Serializer); -impl_serializer_for_trait_object!(&'a mut (dyn Serializer + Send)); -impl_serializer_for_trait_object!(&'a mut (dyn Serializer + Sync)); -impl_serializer_for_trait_object!(&'a mut (dyn Serializer + Send + Sync)); +impl_serializer_for_trait_object!(&'a mut (dyn Serializer + '_)); +impl_serializer_for_trait_object!(&'a mut (dyn Serializer + Send + '_)); +impl_serializer_for_trait_object!(&'a mut (dyn Serializer + Sync + '_)); +impl_serializer_for_trait_object!(&'a mut (dyn Serializer + Send + Sync + '_)); pub struct Seq<'a> { data: Any, @@ -1261,6 +1254,10 @@ (**self).erased_serialize_i64(v) } + fn erased_serialize_i128(&mut self, v: i128) -> Result { + (**self).erased_serialize_i128(v) + } + fn erased_serialize_u8(&mut self, v: u8) -> Result { (**self).erased_serialize_u8(v) } @@ -1277,14 +1274,8 @@ (**self).erased_serialize_u64(v) } - serde_if_integer128! { - fn erased_serialize_i128(&mut self, v: i128) -> Result { - (**self).erased_serialize_i128(v) - } - - fn erased_serialize_u128(&mut self, v: u128) -> Result { - (**self).erased_serialize_u128(v) - } + fn erased_serialize_u128(&mut self, v: u128) -> Result { + (**self).erased_serialize_u128(v) } fn erased_serialize_f32(&mut self, v: f32) -> Result { diff -Nru temporalio-1.3.0/vendor/errno/.cargo-checksum.json temporalio-1.3.0/vendor/errno/.cargo-checksum.json --- temporalio-1.3.0/vendor/errno/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/errno/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"de0a0148de26643113bc5a65e6954ecbd92ba99abc694da4944c7495cfd92b66","Cargo.toml":"7148d6f70b6070cb1b5714143c9695189121619232eafdef9bd0d5b7dbc3e930","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"8764a597675778ddfd4e25f81b08a05dbcf089ac05662df7613fe67f150e3aa2","README.md":"96a40903ea0fe68cf512d176a230f4a37df76de262f047f01a46f31de75402bd","clippy.toml":"2c27890fbf0454bb2405bdb013b1daeb78d57c5844b964bcac9afcc125fa46e4","src/hermit.rs":"a0d6839cbef77e2e93acafc629c76805b858311982f19b99c3389e43cfbebfbf","src/lib.rs":"318f864b8cb9296c85f70f9dfb855c552303630b3a9390f147bb4b581b8d8b5c","src/unix.rs":"6b884aad20e0bc015ec3a99c2f48c886345533fd92787c3b18742654071b7741","src/wasi.rs":"c606886ebda52b5dc7682c0f3aaf51e146692455acd5e303812cf0d634589d05","src/windows.rs":"7cbcdb8e74582f357fa945bb1c44c4d19c1a10bec958da1223305bf68ec35baf"},"package":"4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"} \ No newline at end of file +{"files":{"CHANGELOG.md":"3a41de28ca83286b98843bbc35c57b8d2e901125b4b7edb7b1bc2e5b37ee2dfb","Cargo.toml":"88ad5fde81b8618f167b79b370297291f0e445576fbb0fb78773b71df75ffc3a","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"8764a597675778ddfd4e25f81b08a05dbcf089ac05662df7613fe67f150e3aa2","README.md":"96a40903ea0fe68cf512d176a230f4a37df76de262f047f01a46f31de75402bd","clippy.toml":"2c27890fbf0454bb2405bdb013b1daeb78d57c5844b964bcac9afcc125fa46e4","src/hermit.rs":"ad03355bc4d79c180ab3210e1d3edd538eccaaea8d4f9a9b7eb8a0dc2d39b5df","src/lib.rs":"318f864b8cb9296c85f70f9dfb855c552303630b3a9390f147bb4b581b8d8b5c","src/unix.rs":"574e9df136366bd2afb91f4bf2daae64bdbc6f147006bcd1c864abf5a90d1679","src/wasi.rs":"c606886ebda52b5dc7682c0f3aaf51e146692455acd5e303812cf0d634589d05","src/windows.rs":"7cbcdb8e74582f357fa945bb1c44c4d19c1a10bec958da1223305bf68ec35baf"},"package":"6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/errno/Cargo.toml temporalio-1.3.0/vendor/errno/Cargo.toml --- temporalio-1.3.0/vendor/errno/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/errno/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ edition = "2018" rust-version = "1.48" name = "errno" -version = "0.3.1" +version = "0.3.2" authors = ["Chris Wong "] description = "Cross-platform interface to the `errno` variable." documentation = "https://docs.rs/errno" diff -Nru temporalio-1.3.0/vendor/errno/CHANGELOG.md temporalio-1.3.0/vendor/errno/CHANGELOG.md --- temporalio-1.3.0/vendor/errno/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/errno/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,13 @@ # [Unreleased] +# [0.3.2] - 2023-07-30 + +- Fix build on Hermit + [#73](https://github.com/lambda-fairy/rust-errno/pull/73) + +- Add support for QNX Neutrino + [#72](https://github.com/lambda-fairy/rust-errno/pull/72) + # [0.3.1] - 2023-04-08 - Correct link name on redox @@ -33,7 +41,8 @@ - Optionally support no_std [#31](https://github.com/lambda-fairy/rust-errno/pull/31) -[Unreleased]: https://github.com/lambda-fairy/rust-errno/compare/v0.3.1...HEAD +[Unreleased]: https://github.com/lambda-fairy/rust-errno/compare/v0.3.2...HEAD +[0.3.2]: https://github.com/lambda-fairy/rust-errno/compare/v0.3.1...v0.3.2 [0.3.1]: https://github.com/lambda-fairy/rust-errno/compare/v0.3.0...v0.3.1 [0.3.0]: https://github.com/lambda-fairy/rust-errno/compare/v0.2.8...v0.3.0 [0.2.8]: https://github.com/lambda-fairy/rust-errno/compare/v0.2.7...v0.2.8 diff -Nru temporalio-1.3.0/vendor/errno/src/hermit.rs temporalio-1.3.0/vendor/errno/src/hermit.rs --- temporalio-1.3.0/vendor/errno/src/hermit.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/errno/src/hermit.rs 2023-10-30 19:40:00.000000000 +0000 @@ -14,7 +14,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use Errno; +use crate::Errno; pub fn with_description(_err: Errno, callback: F) -> T where diff -Nru temporalio-1.3.0/vendor/errno/src/unix.rs temporalio-1.3.0/vendor/errno/src/unix.rs --- temporalio-1.3.0/vendor/errno/src/unix.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/errno/src/unix.rs 2023-10-30 19:40:00.000000000 +0000 @@ -81,6 +81,7 @@ link_name = "__errno_location" )] #[cfg_attr(target_os = "aix", link_name = "_Errno")] + #[cfg_attr(target_os = "nto", link_name = "__get_errno_ptr")] fn errno_location() -> *mut c_int; #[cfg_attr(target_os = "linux", link_name = "__xpg_strerror_r")] diff -Nru temporalio-1.3.0/vendor/fastrand/benches/bench.rs temporalio-1.3.0/vendor/fastrand/benches/bench.rs --- temporalio-1.3.0/vendor/fastrand/benches/bench.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/fastrand/benches/bench.rs 2023-10-30 19:40:00.000000000 +0000 @@ -18,7 +18,7 @@ #[bench] fn shuffle_fastrand(b: &mut Bencher) { - let rng = fastrand::Rng::new(); + let mut rng = fastrand::Rng::new(); let mut x = (0..100).collect::>(); b.iter(|| { rng.shuffle(&mut x); @@ -40,7 +40,7 @@ #[bench] fn u8_fastrand(b: &mut Bencher) { - let rng = fastrand::Rng::new(); + let mut rng = fastrand::Rng::new(); b.iter(|| { let mut sum = 0u8; for _ in 0..10_000 { @@ -64,7 +64,7 @@ #[bench] fn u32_fastrand(b: &mut Bencher) { - let rng = fastrand::Rng::new(); + let mut rng = fastrand::Rng::new(); b.iter(|| { let mut sum = 0u32; for _ in 0..10_000 { @@ -76,7 +76,7 @@ #[bench] fn fill(b: &mut Bencher) { - let rng = fastrand::Rng::new(); + let mut rng = fastrand::Rng::new(); b.iter(|| { // Pick a size that isn't divisble by 8. let mut bytes = [0u8; 367]; @@ -87,7 +87,7 @@ #[bench] fn fill_naive(b: &mut Bencher) { - let rng = fastrand::Rng::new(); + let mut rng = fastrand::Rng::new(); b.iter(|| { let mut bytes = [0u8; 367]; for item in &mut bytes { diff -Nru temporalio-1.3.0/vendor/fastrand/.cargo-checksum.json temporalio-1.3.0/vendor/fastrand/.cargo-checksum.json --- temporalio-1.3.0/vendor/fastrand/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/fastrand/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"64192695962b6d2ec5f1f57f3b7909c216611a5de5cd5d0d28d863477eef0a12","Cargo.toml":"9d3bf85fff7d7228a8aae6e0c20a43f19a846412e598ee0b7d1f6f2a30bac880","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"dec6b96d3549746937d7e0e62e35e206e6f5b7e2d1886451281905f4edf096d4","benches/bench.rs":"234b2e5f725102ed0ff7686def089de23e433eeecaf03542af31fc60725e85e3","src/lib.rs":"88bf8a952c723b28b989c7b998b2ec0de6a1351f6891088d6237300c8982f36d","tests/char.rs":"a530b41837f5bf43701d983ef0267d9b44779d455f24cbf30b881cd348de9ee1","tests/smoke.rs":"aac00322cce06f15378aacbf247a37e9602c46cfd2bd588a0887b266cbc4770a"},"package":"e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"} \ No newline at end of file +{"files":{"CHANGELOG.md":"a88b4ec120e965c0219c8d4a95e0868ed9396acb47d171ca864608eacda7efb8","Cargo.toml":"f0bc7071d293be9565d4a960fa914317f00f319901e9578e7a49a3a86959d90a","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"ba09e4125cf5450a26d1bd2236bd079d668b118df639d9055e61eaa4d3c23336","benches/bench.rs":"95df618eeb6f3432e11295d75267c0ececcda35a6d230e9ca504e5d772fa2b62","src/global_rng.rs":"43a74ba2c3c15ebdbbacff65d6da5a90b4c062dedc43c6bf3fcf05499beaeece","src/lib.rs":"67568c53a27b34c5e2eb5e613a9656bcc9da1688a85070c4c36b60c216e3da8b","tests/char.rs":"a530b41837f5bf43701d983ef0267d9b44779d455f24cbf30b881cd348de9ee1","tests/smoke.rs":"8eac48144705364d142882538be43b8d69018959579404c3b1e638827888e62e"},"package":"6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/fastrand/Cargo.toml temporalio-1.3.0/vendor/fastrand/Cargo.toml --- temporalio-1.3.0/vendor/fastrand/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/fastrand/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,9 +11,9 @@ [package] edition = "2018" -rust-version = "1.34" +rust-version = "1.36" name = "fastrand" -version = "1.9.0" +version = "2.0.0" authors = ["Stjepan Glavina "] exclude = ["/.*"] description = "A simple and fast random number generator" @@ -29,6 +29,13 @@ license = "Apache-2.0 OR MIT" repository = "https://github.com/smol-rs/fastrand" +[package.metadata.docs.rs] +all-features = true +rustdoc-args = [ + "--cfg", + "docsrs", +] + [dev-dependencies.getrandom] version = "0.2" @@ -38,16 +45,23 @@ [dev-dependencies.wyhash] version = "0.5" -[target."cfg(all(target_arch = \"wasm32\", not(target_os = \"wasi\")))".dependencies.instant] -version = "0.1" +[features] +alloc = [] +default = ["std"] +js = [ + "std", + "getrandom", +] +std = ["alloc"] -[target."cfg(all(target_arch = \"wasm32\", not(target_os = \"wasi\")))".dev-dependencies.getrandom] +[target."cfg(all(any(target_arch = \"wasm32\", target_arch = \"wasm64\"), target_os = \"unknown\"))".dependencies.getrandom] version = "0.2" features = ["js"] +optional = true -[target."cfg(all(target_arch = \"wasm32\", not(target_os = \"wasi\")))".dev-dependencies.instant] -version = "0.1" -features = ["wasm-bindgen"] +[target."cfg(all(any(target_arch = \"wasm32\", target_arch = \"wasm64\"), target_os = \"unknown\"))".dev-dependencies.getrandom] +version = "0.2" +features = ["js"] -[target."cfg(all(target_arch = \"wasm32\", not(target_os = \"wasi\")))".dev-dependencies.wasm-bindgen-test] +[target."cfg(all(any(target_arch = \"wasm32\", target_arch = \"wasm64\"), target_os = \"unknown\"))".dev-dependencies.wasm-bindgen-test] version = "0.3" diff -Nru temporalio-1.3.0/vendor/fastrand/CHANGELOG.md temporalio-1.3.0/vendor/fastrand/CHANGELOG.md --- temporalio-1.3.0/vendor/fastrand/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/fastrand/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,12 @@ +# Version 2.0.0 + +- **Breaking:** Remove interior mutability from `Rng`. (#47) +- Add a `fork()` method. (#49) +- Add a `no_std` mode. (#50) +- Add an iterator selection function. (#51) +- Add a `choose_multiple()` function for sampling several elements from an iterator. (#55) +- Use the `getrandom` crate for seeding on WebAssembly targets if the `js` feature is enabled. (#60) + # Version 1.9.0 - Add `Rng::fill()` (#35, #43) diff -Nru temporalio-1.3.0/vendor/fastrand/README.md temporalio-1.3.0/vendor/fastrand/README.md --- temporalio-1.3.0/vendor/fastrand/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/fastrand/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -40,6 +40,13 @@ let elem = v[i]; ``` +Sample values from an array with `O(n)` complexity (`n` is the length of array): + +```rust +fastrand::choose_multiple(vec![1, 4, 5].iter(), 2); +fastrand::choose_multiple(0..20, 12); +``` + Shuffle an array: ```rust @@ -76,6 +83,12 @@ let mut bytes: Vec = repeat_with(|| rng.u8(..)).take(10_000).collect(); ``` +# Features + +- `std` (enabled by default): Enables the `std` library. This is required for the global + generator and global entropy. Without this feature, [`Rng`] can only be instantiated using + the [`with_seed`](Rng::with_seed) method. + ## License Licensed under either of diff -Nru temporalio-1.3.0/vendor/fastrand/src/global_rng.rs temporalio-1.3.0/vendor/fastrand/src/global_rng.rs --- temporalio-1.3.0/vendor/fastrand/src/global_rng.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/fastrand/src/global_rng.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,218 @@ +//! A global, thread-local random number generator. + +use crate::Rng; + +use std::cell::Cell; +use std::ops::RangeBounds; + +// Chosen by fair roll of the dice. +const DEFAULT_RNG_SEED: u64 = 0xef6f79ed30ba75a; + +impl Default for Rng { + /// Initialize the `Rng` from the system's random number generator. + /// + /// This is equivalent to [`Rng::new()`]. + #[inline] + fn default() -> Rng { + Rng::new() + } +} + +impl Rng { + /// Creates a new random number generator. + #[inline] + pub fn new() -> Rng { + try_with_rng(Rng::fork).unwrap_or_else(|_| Rng::with_seed(0x4d595df4d0f33173)) + } +} + +thread_local! { + static RNG: Cell = Cell::new(Rng(random_seed().unwrap_or(DEFAULT_RNG_SEED))); +} + +/// Run an operation with the current thread-local generator. +#[inline] +fn with_rng(f: impl FnOnce(&mut Rng) -> R) -> R { + RNG.with(|rng| { + let current = rng.replace(Rng(0)); + + let mut restore = RestoreOnDrop { rng, current }; + + f(&mut restore.current) + }) +} + +/// Try to run an operation with the current thread-local generator. +#[inline] +fn try_with_rng(f: impl FnOnce(&mut Rng) -> R) -> Result { + RNG.try_with(|rng| { + let current = rng.replace(Rng(0)); + + let mut restore = RestoreOnDrop { rng, current }; + + f(&mut restore.current) + }) +} + +/// Make sure the original RNG is restored even on panic. +struct RestoreOnDrop<'a> { + rng: &'a Cell, + current: Rng, +} + +impl Drop for RestoreOnDrop<'_> { + fn drop(&mut self) { + self.rng.set(Rng(self.current.0)); + } +} + +/// Initializes the thread-local generator with the given seed. +#[inline] +pub fn seed(seed: u64) { + with_rng(|r| r.seed(seed)); +} + +/// Gives back **current** seed that is being held by the thread-local generator. +#[inline] +pub fn get_seed() -> u64 { + with_rng(|r| r.get_seed()) +} + +/// Generates a random `bool`. +#[inline] +pub fn bool() -> bool { + with_rng(|r| r.bool()) +} + +/// Generates a random `char` in ranges a-z and A-Z. +#[inline] +pub fn alphabetic() -> char { + with_rng(|r| r.alphabetic()) +} + +/// Generates a random `char` in ranges a-z, A-Z and 0-9. +#[inline] +pub fn alphanumeric() -> char { + with_rng(|r| r.alphanumeric()) +} + +/// Generates a random `char` in range a-z. +#[inline] +pub fn lowercase() -> char { + with_rng(|r| r.lowercase()) +} + +/// Generates a random `char` in range A-Z. +#[inline] +pub fn uppercase() -> char { + with_rng(|r| r.uppercase()) +} + +/// Choose an item from an iterator at random. +/// +/// This function may have an unexpected result if the `len()` property of the +/// iterator does not match the actual number of items in the iterator. If +/// the iterator is empty, this returns `None`. +#[inline] +pub fn choice(iter: I) -> Option +where + I: IntoIterator, + I::IntoIter: ExactSizeIterator, +{ + with_rng(|r| r.choice(iter)) +} + +/// Generates a random digit in the given `base`. +/// +/// Digits are represented by `char`s in ranges 0-9 and a-z. +/// +/// Panics if the base is zero or greater than 36. +#[inline] +pub fn digit(base: u32) -> char { + with_rng(|r| r.digit(base)) +} + +/// Shuffles a slice randomly. +#[inline] +pub fn shuffle(slice: &mut [T]) { + with_rng(|r| r.shuffle(slice)) +} + +macro_rules! integer { + ($t:tt, $doc:tt) => { + #[doc = $doc] + /// + /// Panics if the range is empty. + #[inline] + pub fn $t(range: impl RangeBounds<$t>) -> $t { + with_rng(|r| r.$t(range)) + } + }; +} + +integer!(u8, "Generates a random `u8` in the given range."); +integer!(i8, "Generates a random `i8` in the given range."); +integer!(u16, "Generates a random `u16` in the given range."); +integer!(i16, "Generates a random `i16` in the given range."); +integer!(u32, "Generates a random `u32` in the given range."); +integer!(i32, "Generates a random `i32` in the given range."); +integer!(u64, "Generates a random `u64` in the given range."); +integer!(i64, "Generates a random `i64` in the given range."); +integer!(u128, "Generates a random `u128` in the given range."); +integer!(i128, "Generates a random `i128` in the given range."); +integer!(usize, "Generates a random `usize` in the given range."); +integer!(isize, "Generates a random `isize` in the given range."); +integer!(char, "Generates a random `char` in the given range."); + +/// Generates a random `f32` in range `0..1`. +pub fn f32() -> f32 { + with_rng(|r| r.f32()) +} + +/// Generates a random `f64` in range `0..1`. +pub fn f64() -> f64 { + with_rng(|r| r.f64()) +} + +/// Collects `amount` values at random from the iterator into a vector. +pub fn choose_multiple(source: T, amount: usize) -> Vec { + with_rng(|rng| rng.choose_multiple(source, amount)) +} + +#[cfg(not(all( + any(target_arch = "wasm32", target_arch = "wasm64"), + target_os = "unknown" +)))] +fn random_seed() -> Option { + use std::collections::hash_map::DefaultHasher; + use std::hash::{Hash, Hasher}; + use std::thread; + use std::time::Instant; + + let mut hasher = DefaultHasher::new(); + Instant::now().hash(&mut hasher); + thread::current().id().hash(&mut hasher); + let hash = hasher.finish(); + Some((hash << 1) | 1) +} + +#[cfg(all( + any(target_arch = "wasm32", target_arch = "wasm64"), + target_os = "unknown", + feature = "js" +))] +fn random_seed() -> Option { + // TODO(notgull): Failures should be logged somewhere. + let mut seed = [0u8; 8]; + getrandom::getrandom(&mut seed).ok()?; + Some(u64::from_ne_bytes(seed)) +} + +#[cfg(all( + any(target_arch = "wasm32", target_arch = "wasm64"), + target_os = "unknown", + not(feature = "js") +))] +fn random_seed() -> Option { + None +} diff -Nru temporalio-1.3.0/vendor/fastrand/src/lib.rs temporalio-1.3.0/vendor/fastrand/src/lib.rs --- temporalio-1.3.0/vendor/fastrand/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/fastrand/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -29,6 +29,14 @@ //! let elem = v[i]; //! ``` //! +//! Sample values from an array with `O(n)` complexity (`n` is the length of array): +//! +//! ``` +//! fastrand::choose_multiple(vec![1, 4, 5].iter(), 2); +//! fastrand::choose_multiple(0..20, 12); +//! ``` +//! +//! //! Shuffle an array: //! //! ``` @@ -61,87 +69,88 @@ //! ``` //! use std::iter::repeat_with; //! -//! let rng = fastrand::Rng::new(); +//! let mut rng = fastrand::Rng::new(); //! let mut bytes: Vec = repeat_with(|| rng.u8(..)).take(10_000).collect(); //! ``` +//! +//! # Features +//! +//! - `std` (enabled by default): Enables the `std` library. This is required for the global +//! generator and global entropy. Without this feature, [`Rng`] can only be instantiated using +//! the [`with_seed`](Rng::with_seed) method. +//! - `js`: Assumes that WebAssembly targets are being run in a JavaScript environment. See the +//! [WebAssembly Notes](#webassembly-notes) section for more information. +//! +//! # WebAssembly Notes +//! +//! For non-WASI WASM targets, there is additional sublety to consider when utilizing the global RNG. +//! By default, `std` targets will use entropy sources in the standard library to seed the global RNG. +//! However, these sources are not available by default on WASM targets outside of WASI. +//! +//! If the `js` feature is enabled, this crate will assume that it is running in a JavaScript +//! environment. At this point, the [`getrandom`] crate will be used in order to access the available +//! entropy sources and seed the global RNG. If the `js` feature is not enabled, the global RNG will +//! use a predefined seed. +//! +//! [`getrandom`]: https://crates.io/crates/getrandom +#![cfg_attr(not(feature = "std"), no_std)] +#![cfg_attr(docsrs, feature(doc_cfg))] #![forbid(unsafe_code)] #![warn(missing_docs, missing_debug_implementations, rust_2018_idioms)] -use std::cell::Cell; -use std::collections::hash_map::DefaultHasher; -use std::convert::TryInto; -use std::hash::{Hash, Hasher}; -use std::ops::{Bound, RangeBounds}; -use std::thread; - -#[cfg(all(target_arch = "wasm32", not(target_os = "wasi")))] -use instant::Instant; -#[cfg(not(all(target_arch = "wasm32", not(target_os = "wasi"))))] -use std::time::Instant; +#[cfg(feature = "alloc")] +extern crate alloc; + +use core::convert::{TryFrom, TryInto}; +use core::ops::{Bound, RangeBounds}; + +#[cfg(feature = "alloc")] +use alloc::vec::Vec; + +#[cfg(feature = "std")] +#[cfg_attr(docsrs, doc(cfg(feature = "std")))] +mod global_rng; + +#[cfg(feature = "std")] +pub use global_rng::*; /// A random number generator. #[derive(Debug, PartialEq, Eq)] -pub struct Rng(Cell); - -impl Default for Rng { - #[inline] - fn default() -> Rng { - Rng::new() - } -} +pub struct Rng(u64); impl Clone for Rng { - /// Clones the generator by deterministically deriving a new generator based on the initial - /// seed. - /// - /// # Example - /// - /// ``` - /// // Seed two generators equally, and clone both of them. - /// let base1 = fastrand::Rng::new(); - /// base1.seed(0x4d595df4d0f33173); - /// base1.bool(); // Use the generator once. - /// - /// let base2 = fastrand::Rng::new(); - /// base2.seed(0x4d595df4d0f33173); - /// base2.bool(); // Use the generator once. - /// - /// let rng1 = base1.clone(); - /// let rng2 = base2.clone(); - /// - /// assert_eq!(rng1.u64(..), rng2.u64(..), "the cloned generators are identical"); - /// ``` + /// Clones the generator by creating a new generator with the same seed. fn clone(&self) -> Rng { - Rng::with_seed(self.gen_u64()) + Rng::with_seed(self.0) } } impl Rng { /// Generates a random `u32`. #[inline] - fn gen_u32(&self) -> u32 { + fn gen_u32(&mut self) -> u32 { self.gen_u64() as u32 } /// Generates a random `u64`. #[inline] - fn gen_u64(&self) -> u64 { - let s = self.0.get().wrapping_add(0xA0761D6478BD642F); - self.0.set(s); + fn gen_u64(&mut self) -> u64 { + let s = self.0.wrapping_add(0xA0761D6478BD642F); + self.0 = s; let t = u128::from(s) * u128::from(s ^ 0xE7037ED1A0B428DB); (t as u64) ^ (t >> 64) as u64 } /// Generates a random `u128`. #[inline] - fn gen_u128(&self) -> u128 { + fn gen_u128(&mut self) -> u128 { (u128::from(self.gen_u64()) << 64) | u128::from(self.gen_u64()) } /// Generates a random `u32` in `0..n`. #[inline] - fn gen_mod_u32(&self, n: u32) -> u32 { + fn gen_mod_u32(&mut self, n: u32) -> u32 { // Adapted from: https://lemire.me/blog/2016/06/30/fast-random-shuffling/ let mut r = self.gen_u32(); let mut hi = mul_high_u32(r, n); @@ -159,7 +168,7 @@ /// Generates a random `u64` in `0..n`. #[inline] - fn gen_mod_u64(&self, n: u64) -> u64 { + fn gen_mod_u64(&mut self, n: u64) -> u64 { // Adapted from: https://lemire.me/blog/2016/06/30/fast-random-shuffling/ let mut r = self.gen_u64(); let mut hi = mul_high_u64(r, n); @@ -177,7 +186,7 @@ /// Generates a random `u128` in `0..n`. #[inline] - fn gen_mod_u128(&self, n: u128) -> u128 { + fn gen_mod_u128(&mut self, n: u128) -> u128 { // Adapted from: https://lemire.me/blog/2016/06/30/fast-random-shuffling/ let mut r = self.gen_u128(); let mut hi = mul_high_u128(r, n); @@ -194,16 +203,6 @@ } } -thread_local! { - static RNG: Rng = Rng(Cell::new({ - let mut hasher = DefaultHasher::new(); - Instant::now().hash(&mut hasher); - thread::current().id().hash(&mut hasher); - let hash = hasher.finish(); - (hash << 1) | 1 - })); -} - /// Computes `(a * b) >> 32`. #[inline] fn mul_high_u32(a: u32, b: u32) -> u32 { @@ -235,7 +234,7 @@ /// /// Panics if the range is empty. #[inline] - pub fn $t(&self, range: impl RangeBounds<$t>) -> $t { + pub fn $t(&mut self, range: impl RangeBounds<$t>) -> $t { let panic_empty_range = || { panic!( "empty range: {:?}..{:?}", @@ -245,13 +244,13 @@ }; let low = match range.start_bound() { - Bound::Unbounded => std::$t::MIN, + Bound::Unbounded => core::$t::MIN, Bound::Included(&x) => x, Bound::Excluded(&x) => x.checked_add(1).unwrap_or_else(panic_empty_range), }; let high = match range.end_bound() { - Bound::Unbounded => std::$t::MAX, + Bound::Unbounded => core::$t::MAX, Bound::Included(&x) => x, Bound::Excluded(&x) => x.checked_sub(1).unwrap_or_else(panic_empty_range), }; @@ -260,7 +259,7 @@ panic_empty_range(); } - if low == std::$t::MIN && high == std::$t::MAX { + if low == core::$t::MIN && high == core::$t::MAX { self.$gen() as $t } else { let len = high.wrapping_sub(low).wrapping_add(1); @@ -271,46 +270,59 @@ } impl Rng { - /// Creates a new random number generator. - #[inline] - pub fn new() -> Rng { - Rng::with_seed( - RNG.try_with(|rng| rng.u64(..)) - .unwrap_or(0x4d595df4d0f33173), - ) - } - /// Creates a new random number generator with the initial seed. #[inline] #[must_use = "this creates a new instance of `Rng`; if you want to initialize the thread-local generator, use `fastrand::seed()` instead"] pub fn with_seed(seed: u64) -> Self { - let rng = Rng(Cell::new(0)); + let mut rng = Rng(0); rng.seed(seed); rng } + /// Clones the generator by deterministically deriving a new generator based on the initial + /// seed. + /// + /// # Example + /// + /// ``` + /// // Seed two generators equally, and clone both of them. + /// let mut base1 = fastrand::Rng::new(); + /// base1.seed(0x4d595df4d0f33173); + /// base1.bool(); // Use the generator once. + /// + /// let mut base2 = fastrand::Rng::new(); + /// base2.seed(0x4d595df4d0f33173); + /// base2.bool(); // Use the generator once. + /// + /// let mut rng1 = base1.clone(); + /// let mut rng2 = base2.clone(); + /// + /// assert_eq!(rng1.u64(..), rng2.u64(..), "the cloned generators are identical"); + /// ``` + #[inline] + #[must_use = "this creates a new instance of `Rng`"] + pub fn fork(&mut self) -> Self { + Rng::with_seed(self.gen_u64()) + } + /// Generates a random `char` in ranges a-z and A-Z. #[inline] - pub fn alphabetic(&self) -> char { + pub fn alphabetic(&mut self) -> char { const CHARS: &[u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - let len = CHARS.len() as u8; - let i = self.u8(..len); - CHARS[i as usize] as char + *self.choice(CHARS).unwrap() as char } /// Generates a random `char` in ranges a-z, A-Z and 0-9. #[inline] - pub fn alphanumeric(&self) -> char { + pub fn alphanumeric(&mut self) -> char { const CHARS: &[u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - let len = CHARS.len() as u8; - let i = self.u8(..len); - CHARS[i as usize] as char + *self.choice(CHARS).unwrap() as char } /// Generates a random `bool`. #[inline] - pub fn bool(&self) -> bool { + pub fn bool(&mut self) -> bool { self.u8(..) % 2 == 0 } @@ -320,7 +332,7 @@ /// /// Panics if the base is zero or greater than 36. #[inline] - pub fn digit(&self, base: u32) -> char { + pub fn digit(&mut self, base: u32) -> char { if base == 0 { panic!("base cannot be zero"); } @@ -336,19 +348,57 @@ } /// Generates a random `f32` in range `0..1`. - pub fn f32(&self) -> f32 { + pub fn f32(&mut self) -> f32 { let b = 32; - let f = std::f32::MANTISSA_DIGITS - 1; + let f = core::f32::MANTISSA_DIGITS - 1; f32::from_bits((1 << (b - 2)) - (1 << f) + (self.u32(..) >> (b - f))) - 1.0 } /// Generates a random `f64` in range `0..1`. - pub fn f64(&self) -> f64 { + pub fn f64(&mut self) -> f64 { let b = 64; - let f = std::f64::MANTISSA_DIGITS - 1; + let f = core::f64::MANTISSA_DIGITS - 1; f64::from_bits((1 << (b - 2)) - (1 << f) + (self.u64(..) >> (b - f))) - 1.0 } + /// Collects `amount` values at random from the iterator into a vector. + /// + /// The length of the returned vector equals `amount` unless the iterator + /// contains insufficient elements, in which case it equals the number of + /// elements available. + /// + /// Complexity is `O(n)` where `n` is the length of the iterator. + #[cfg(feature = "alloc")] + #[cfg_attr(docsrs, doc(cfg(feature = "alloc")))] + pub fn choose_multiple(&mut self, mut source: T, amount: usize) -> Vec { + // Adapted from: https://docs.rs/rand/latest/rand/seq/trait.IteratorRandom.html#method.choose_multiple + let mut reservoir = Vec::with_capacity(amount); + + reservoir.extend(source.by_ref().take(amount)); + + // Continue unless the iterator was exhausted + // + // note: this prevents iterators that "restart" from causing problems. + // If the iterator stops once, then so do we. + if reservoir.len() == amount { + for (i, elem) in source.enumerate() { + let end = i + 1 + amount; + let k = self.usize(0..end); + if let Some(slot) = reservoir.get_mut(k) { + *slot = elem; + } + } + } else { + // If less than one third of the `Vec` was used, reallocate + // so that the unused space is not wasted. There is a corner + // case where `amount` was much less than `self.len()`. + if reservoir.capacity() > 3 * reservoir.len() { + reservoir.shrink_to_fit(); + } + } + reservoir + } + rng_integer!( i8, u8, @@ -416,28 +466,49 @@ /// Generates a random `char` in range a-z. #[inline] - pub fn lowercase(&self) -> char { + pub fn lowercase(&mut self) -> char { const CHARS: &[u8] = b"abcdefghijklmnopqrstuvwxyz"; - let len = CHARS.len() as u8; - let i = self.u8(..len); - CHARS[i as usize] as char + *self.choice(CHARS).unwrap() as char } /// Initializes this generator with the given seed. #[inline] - pub fn seed(&self, seed: u64) { - self.0.set(seed); + pub fn seed(&mut self, seed: u64) { + self.0 = seed; } /// Gives back **current** seed that is being held by this generator. #[inline] pub fn get_seed(&self) -> u64 { - self.0.get() + self.0 + } + + /// Choose an item from an iterator at random. + /// + /// This function may have an unexpected result if the `len()` property of the + /// iterator does not match the actual number of items in the iterator. If + /// the iterator is empty, this returns `None`. + #[inline] + pub fn choice(&mut self, iter: I) -> Option + where + I: IntoIterator, + I::IntoIter: ExactSizeIterator, + { + let mut iter = iter.into_iter(); + + // Get the item at a random index. + let len = iter.len(); + if len == 0 { + return None; + } + let index = self.usize(0..len); + + iter.nth(index) } /// Shuffles a slice randomly. #[inline] - pub fn shuffle(&self, slice: &mut [T]) { + pub fn shuffle(&mut self, slice: &mut [T]) { for i in 1..slice.len() { slice.swap(i, self.usize(..=i)); } @@ -445,7 +516,7 @@ /// Fill a byte slice with random data. #[inline] - pub fn fill(&self, slice: &mut [u8]) { + pub fn fill(&mut self, slice: &mut [u8]) { // We fill the slice by chunks of 8 bytes, or one block of // WyRand output per new state. let mut chunks = slice.chunks_exact_mut(core::mem::size_of::()); @@ -542,20 +613,16 @@ /// Generates a random `char` in range A-Z. #[inline] - pub fn uppercase(&self) -> char { + pub fn uppercase(&mut self) -> char { const CHARS: &[u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - let len = CHARS.len() as u8; - let i = self.u8(..len); - CHARS[i as usize] as char + *self.choice(CHARS).unwrap() as char } /// Generates a random `char` in the given range. /// /// Panics if the range is empty. #[inline] - pub fn char(&self, range: impl RangeBounds) -> char { - use std::convert::TryFrom; - + pub fn char(&mut self, range: impl RangeBounds) -> char { let panic_empty_range = || { panic!( "empty range: {:?}..{:?}", @@ -581,7 +648,7 @@ }; let high = match range.end_bound() { - Bound::Unbounded => std::char::MAX, + Bound::Unbounded => core::char::MAX, Bound::Included(&x) => x, Bound::Excluded(&x) => { let scalar = if x as u32 == surrogate_start + surrogate_len { @@ -610,97 +677,3 @@ val.try_into().unwrap() } } - -/// Initializes the thread-local generator with the given seed. -#[inline] -pub fn seed(seed: u64) { - RNG.with(|rng| rng.seed(seed)) -} - -/// Gives back **current** seed that is being held by the thread-local generator. -#[inline] -pub fn get_seed() -> u64 { - RNG.with(|rng| rng.get_seed()) -} - -/// Generates a random `bool`. -#[inline] -pub fn bool() -> bool { - RNG.with(|rng| rng.bool()) -} - -/// Generates a random `char` in ranges a-z and A-Z. -#[inline] -pub fn alphabetic() -> char { - RNG.with(|rng| rng.alphabetic()) -} - -/// Generates a random `char` in ranges a-z, A-Z and 0-9. -#[inline] -pub fn alphanumeric() -> char { - RNG.with(|rng| rng.alphanumeric()) -} - -/// Generates a random `char` in range a-z. -#[inline] -pub fn lowercase() -> char { - RNG.with(|rng| rng.lowercase()) -} - -/// Generates a random `char` in range A-Z. -#[inline] -pub fn uppercase() -> char { - RNG.with(|rng| rng.uppercase()) -} - -/// Generates a random digit in the given `base`. -/// -/// Digits are represented by `char`s in ranges 0-9 and a-z. -/// -/// Panics if the base is zero or greater than 36. -#[inline] -pub fn digit(base: u32) -> char { - RNG.with(|rng| rng.digit(base)) -} - -/// Shuffles a slice randomly. -#[inline] -pub fn shuffle(slice: &mut [T]) { - RNG.with(|rng| rng.shuffle(slice)) -} - -macro_rules! integer { - ($t:tt, $doc:tt) => { - #[doc = $doc] - /// - /// Panics if the range is empty. - #[inline] - pub fn $t(range: impl RangeBounds<$t>) -> $t { - RNG.with(|rng| rng.$t(range)) - } - }; -} - -integer!(u8, "Generates a random `u8` in the given range."); -integer!(i8, "Generates a random `i8` in the given range."); -integer!(u16, "Generates a random `u16` in the given range."); -integer!(i16, "Generates a random `i16` in the given range."); -integer!(u32, "Generates a random `u32` in the given range."); -integer!(i32, "Generates a random `i32` in the given range."); -integer!(u64, "Generates a random `u64` in the given range."); -integer!(i64, "Generates a random `i64` in the given range."); -integer!(u128, "Generates a random `u128` in the given range."); -integer!(i128, "Generates a random `i128` in the given range."); -integer!(usize, "Generates a random `usize` in the given range."); -integer!(isize, "Generates a random `isize` in the given range."); -integer!(char, "Generates a random `char` in the given range."); - -/// Generates a random `f32` in range `0..1`. -pub fn f32() -> f32 { - RNG.with(|rng| rng.f32()) -} - -/// Generates a random `f64` in range `0..1`. -pub fn f64() -> f64 { - RNG.with(|rng| rng.f64()) -} diff -Nru temporalio-1.3.0/vendor/fastrand/tests/smoke.rs temporalio-1.3.0/vendor/fastrand/tests/smoke.rs --- temporalio-1.3.0/vendor/fastrand/tests/smoke.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/fastrand/tests/smoke.rs 2023-10-30 19:40:00.000000000 +0000 @@ -77,7 +77,7 @@ #[test] fn fill() { - let r = fastrand::Rng::new(); + let mut r = fastrand::Rng::new(); let mut a = [0u8; 64]; let mut b = [0u8; 64]; @@ -89,7 +89,7 @@ #[test] fn rng() { - let r = fastrand::Rng::new(); + let mut r = fastrand::Rng::new(); assert_ne!(r.u64(..), r.u64(..)); @@ -102,8 +102,8 @@ #[test] fn rng_init() { - let a = fastrand::Rng::new(); - let b = fastrand::Rng::new(); + let mut a = fastrand::Rng::new(); + let mut b = fastrand::Rng::new(); assert_ne!(a.u64(..), b.u64(..)); a.seed(7); @@ -113,8 +113,31 @@ #[test] fn with_seed() { - let a = fastrand::Rng::with_seed(7); - let b = fastrand::Rng::new(); + let mut a = fastrand::Rng::with_seed(7); + let mut b = fastrand::Rng::new(); b.seed(7); assert_eq!(a.u64(..), b.u64(..)); } + +#[test] +fn choose_multiple() { + let mut a = fastrand::Rng::new(); + let mut elements = (0..20).collect::>(); + + while !elements.is_empty() { + let chosen = a.choose_multiple(0..20, 5); + for &x in &chosen { + elements.retain(|&y| y != x); + } + } +} + +#[test] +fn choice() { + let items = [1, 4, 9, 5, 2, 3, 6, 7, 8, 0]; + let mut r = fastrand::Rng::new(); + + for item in &items { + while r.choice(&items).unwrap() != item {} + } +} diff -Nru temporalio-1.3.0/vendor/filetime/.cargo-checksum.json temporalio-1.3.0/vendor/filetime/.cargo-checksum.json --- temporalio-1.3.0/vendor/filetime/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/filetime/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"1887bab0963b5a66b36c1184b316467e388cbff1c2f503070a2621a385b9464e","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"6cd295d9f4efe412971b1855ecaf7b19ef3956006a652ea205c456a5d33550c1","src/lib.rs":"eec6b5e3be2c1d5e068a9724b503e729a1e11dae4cd1bc816110c94a0bc14fa0","src/redox.rs":"898997b73c20818cf4601a1f4bcdf1b7dbf3b5d9d071cdc9fce5d1652f6bfc43","src/unix/android.rs":"d929826a9a92003b7aaa6435adc220efbb70c15308f9eed5ee517d88451fcaf6","src/unix/linux.rs":"648498bdf715766eeffdc2dff6a58db51cf6b244c431a6d53c33cbc73f1998d4","src/unix/macos.rs":"1b19a24bee240aba8d564405991bb0ee36ba72217461c8ac6829144d28f7e046","src/unix/mod.rs":"52512c922e1dbb47a6c7f0354c6198ca1ac61ea4d540bc0d73d3a3fd08908ba1","src/unix/utimensat.rs":"0876aa32393689fcb5eec913c5d34954956a715913d611749b04243a2dbcf897","src/unix/utimes.rs":"d2d8ca5daed3d1ec0a0aed1fc03450deb4b7f1fcdb96ed40b8d2cfefd0e827ee","src/wasm.rs":"a82734259846a3349d42da011c1065d21f3981bd20d6eb43495e34808b83af9a","src/windows.rs":"3314a0def8028d8f2a4bc01377d5874ab9ddf8684aad13573c89b427bf2d9911"},"package":"5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153"} \ No newline at end of file +{"files":{"Cargo.toml":"ca0c0554a36d5523989bc1a47d85d71724bc4f2c881fdb3ad285b7e46bad234e","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"6cd295d9f4efe412971b1855ecaf7b19ef3956006a652ea205c456a5d33550c1","src/lib.rs":"eec6b5e3be2c1d5e068a9724b503e729a1e11dae4cd1bc816110c94a0bc14fa0","src/redox.rs":"898997b73c20818cf4601a1f4bcdf1b7dbf3b5d9d071cdc9fce5d1652f6bfc43","src/unix/android.rs":"d929826a9a92003b7aaa6435adc220efbb70c15308f9eed5ee517d88451fcaf6","src/unix/linux.rs":"648498bdf715766eeffdc2dff6a58db51cf6b244c431a6d53c33cbc73f1998d4","src/unix/macos.rs":"1b19a24bee240aba8d564405991bb0ee36ba72217461c8ac6829144d28f7e046","src/unix/mod.rs":"52512c922e1dbb47a6c7f0354c6198ca1ac61ea4d540bc0d73d3a3fd08908ba1","src/unix/utimensat.rs":"0876aa32393689fcb5eec913c5d34954956a715913d611749b04243a2dbcf897","src/unix/utimes.rs":"d2d8ca5daed3d1ec0a0aed1fc03450deb4b7f1fcdb96ed40b8d2cfefd0e827ee","src/wasm.rs":"a82734259846a3349d42da011c1065d21f3981bd20d6eb43495e34808b83af9a","src/windows.rs":"3314a0def8028d8f2a4bc01377d5874ab9ddf8684aad13573c89b427bf2d9911"},"package":"d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/filetime/Cargo.toml temporalio-1.3.0/vendor/filetime/Cargo.toml --- temporalio-1.3.0/vendor/filetime/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/filetime/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2018" name = "filetime" -version = "0.2.21" +version = "0.2.22" authors = ["Alex Crichton "] description = """ Platform-agnostic accessors of timestamps in File metadata @@ -34,7 +34,7 @@ version = "3" [target."cfg(target_os = \"redox\")".dependencies.redox_syscall] -version = "0.2.9" +version = "0.3.5" [target."cfg(unix)".dependencies.libc] version = "0.2.27" diff -Nru temporalio-1.3.0/vendor/flate2/.cargo-checksum.json temporalio-1.3.0/vendor/flate2/.cargo-checksum.json --- temporalio-1.3.0/vendor/flate2/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/flate2/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.lock":"0a017c2f667f52674287c7fa4fdebf43b6916f3df7d3f1d2e3b846fd8e2deaab","Cargo.toml":"59957475135594c9cc8a3f386d19e16badc96ae18947feb0c8ea9f46b0c92247","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"66e58be9308956987363ebbbea391ca48010bc1d87c738a56acac1aced940281","examples/compress_file.rs":"cbdb8b0c556409b82f894ad5326babb6dba42c219d2d675927e7f5820053b295","examples/decompress_file.rs":"cd50dfbaccc905b3e02d6c50b26586196a682880203a8694343e0391799b70d5","examples/deflatedecoder-bufread.rs":"5b8abebce157f9b7cc3f6b5c90b9d533890a514e5f8d91bb43439f52fdc9ddce","examples/deflatedecoder-read.rs":"921e13031c5436494d8af0a8705a0adda2da536edefef2e1e311dffa8acd120f","examples/deflatedecoder-write.rs":"cfce37e8758c6d543dd130c7bdff571af3c8cd11bafcc933740107a3576832df","examples/deflateencoder-bufread.rs":"9fdd7d632d861f099d19a3ec1de539d9600f8004a119dd2a70f6aba5965b2e1c","examples/deflateencoder-read.rs":"8740a942ec7d07ccb4b57c5baac7a4d649817bffe4e37ce9a06c7d6d70378e4c","examples/deflateencoder-write.rs":"8e45425684b2368ef95f3704dce6f8077f38b9a90a38d147594c7c570f0d1c6c","examples/gzbuilder.rs":"d09c83417e4a01a8593ce3462a33340e6fe17fa51b4b0b3a6005b68959df4d8c","examples/gzdecoder-bufread.rs":"76880f3e6e10ed4a0bf564be9ddae1c50811aeabf61fb573039538b81805f390","examples/gzdecoder-read.rs":"d99e9a9ce03a27f280244a24e8f5a3282e5af15b455270d99c4bfecd19238d0d","examples/gzdecoder-write.rs":"d0a982377ca1d2fd1786bb32f16454b4f0afdba5e1c7f0ab97e15e8827d351d5","examples/gzencoder-bufread.rs":"760670c124b1c5776b63c300c7e8a1dcd5e0ae633017dcf2e3d2d6e997dcc9c4","examples/gzencoder-read.rs":"27ec68675418bb7d1a110b8d1f33e7b1069f42bcce6f21f8d9235bde405cdf9f","examples/gzencoder-write.rs":"f127f2e398231d03269770fa18ac5d465f8d56d283f1118055f04f1d03369c31","examples/gzmultidecoder-bufread.rs":"bfa6c5554c3da5a61a7d1e1dad115b7ee784d136e2ac61272c87ad3e1eb4ec4c","examples/gzmultidecoder-read.rs":"c058d5eee5bf45b38132f8e487a714c9521191c7dabe2459362d2f8de689c6bf","examples/hello_world.txt":"d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27458ed8229da804a26","examples/hello_world.txt.gz":"8b4c5972b92b8ee8dc99116e278afb9165276ddb13c0d334c8da2770fd4d1f7d","examples/zlibdecoder-bufread.rs":"0f541ec64c635d45fc206a02718c0b90c49123a0441a95455d6a8a9e0d20e011","examples/zlibdecoder-read.rs":"bbd85b47b8b804c3294b3f23f978eaf6fb09a187cb46eb86ae1ae2790dfab8d9","examples/zlibdecoder-write.rs":"f347a831d7201d3efd604b006c88421fa2a5906c6377b47c7ae391d0809186e6","examples/zlibencoder-bufread.rs":"e0e05686ad4521ba18b742a5cbbc5937cec1fd8b9e8313070b32c6f178dfbaf6","examples/zlibencoder-read.rs":"4a3156dc73cd77e6ac56700680652be63a1270d95ce384ebcd5c014cce2d5179","examples/zlibencoder-write.rs":"822d4cd326ac7402ff8f828c1dbb3aa108c68a89fc04488da252ca6a74e624b0","src/bufreader.rs":"2d6a59330e8f838eb6474d19104f21cb98236125c189f36bdff75a069a4cea8f","src/crc.rs":"f02b9ffbedf06360c8164f98ecf51fe7f70c48cdb3bfc72e176421419c1de030","src/deflate/bufread.rs":"76af1e22d74571304f7a632751bf80ad946808ff516138696cc6b3d6c586529b","src/deflate/mod.rs":"d33ef6a3d502d599a4ba6ac99c6312b414002dba43c388d271fc1f8c9c609363","src/deflate/read.rs":"bfaf1b5b86bfd2255095cd8de27142e6ea8eec1432e1cd8448121f42a638fb10","src/deflate/write.rs":"fef4deebc0dc29d4ad481718613c694f6d1b733199e241a1f7f064e2707e4908","src/ffi/c.rs":"f564f9b27278e770006ffda9b078a6a9f5219ffd3fbbc9e315c27bc134b0c32f","src/ffi/mod.rs":"d90bfe6150d905c06755a3bf9355be69a7ffb664ca701d51ee1ffe93229abee1","src/ffi/rust.rs":"0a69aac9bd08728d212f503a16c0e7fb64a7822a7531bc3a96e78c89c09b6e80","src/gz/bufread.rs":"bb126633df2e56c5dad1871a056e25acb340dd024a94c9aa692b9f0cc44d6f08","src/gz/mod.rs":"367225fd0cc69f8234966c40340869b7bed869217e344d7385ca0316818258fc","src/gz/read.rs":"5f40c51bc4deb866552bdb65fffcc2d85384774d7d829c192600c8eb3970d849","src/gz/write.rs":"783834209030bf20598732f87a6b9aac0f76be1333436f15c8b349cb9ba0f579","src/lib.rs":"875426503cd8c1c70c45e7ff5b5cf58c46bd2ca396ce3b6495a99f6c5540ab15","src/mem.rs":"e563f95d7ab3343b4c86c968c8810b96d74d8cf7612818dd60cd1f6bc4f63eb3","src/zio.rs":"ed5f375f5d6c4f094dfdd43185c9af5e91d1129bfbfa31edc6902a1f7496920b","src/zlib/bufread.rs":"51abcf514cb4108d37e509f37d16cbcc0d061f98e3a5820a0a9cc027642dde37","src/zlib/mod.rs":"18ea5785b913d90191c6ad8483f57d0c5f98599137659e72f3c0c78324b4f8fa","src/zlib/read.rs":"6c4c15b154bda74bc11345ac6a32da7faf1b42113c4e2d41e99eed96fed200f4","src/zlib/write.rs":"330d6ebe93939c8a045c72fb2c8106bfad92e0ed80c60f729ebba40d11090338","tests/corrupt-gz-file.bin":"083dd284aa1621916a2d0f66ea048c8d3ba7a722b22d0d618722633f51e7d39c","tests/early-flush.rs":"9a4db8fcbac659c52cafe5e1ab647d86781cf8b1f298d8dee34223c0292e0d74","tests/empty-read.rs":"39143ff0383655bb115e995b2a953f11e82d0ac03b4bec080973be7c2d421054","tests/good-file.gz":"87296963e53024a74752179ce7e54087565d358a85d3e65c3b37ef36eaa3d4a6","tests/good-file.txt":"bc4e03658a441fe2ad2df7cd2197144b87e41696f01e327b380e869cd9b485a0","tests/gunzip.rs":"c00946db2147b23c4300c77fedf0a04e65c774101575e9828433831311416a50","tests/multi.gz":"efa3341da052f95056314cc6920e02a3da15bdef30234b2552fb407812db5cc6","tests/multi.txt":"dbea9325179efe46ea2add94f7b6b745ca983fabb208dc6d34aa064623d7ee23","tests/zero-write.rs":"cde1a675491d88e59a711103d3b0df4c77b60e8152b90d5a4f01b97879f8f8dc"},"package":"3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743"} \ No newline at end of file +{"files":{"Cargo.lock":"5b74a7b515d919a6daa450d673aca5b4a9e65d78883f4c59bf51ce9b5ac9d2dc","Cargo.toml":"abfa5f6669c976afea17a44d1c9249e0b3db8610322566083f48d4bfe33da10b","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","MAINTENANCE.md":"20ef2cb336c850d849652b110ec4806b71e69ed5dd50518a95eb9d453f8bf645","README.md":"a8fab33160befebe83eece4801f401da5932c0e1cca8e97a7ae4bce4aae1b061","examples/compress_file.rs":"cbdb8b0c556409b82f894ad5326babb6dba42c219d2d675927e7f5820053b295","examples/decompress_file.rs":"cd50dfbaccc905b3e02d6c50b26586196a682880203a8694343e0391799b70d5","examples/deflatedecoder-bufread.rs":"5b8abebce157f9b7cc3f6b5c90b9d533890a514e5f8d91bb43439f52fdc9ddce","examples/deflatedecoder-read.rs":"921e13031c5436494d8af0a8705a0adda2da536edefef2e1e311dffa8acd120f","examples/deflatedecoder-write.rs":"cfce37e8758c6d543dd130c7bdff571af3c8cd11bafcc933740107a3576832df","examples/deflateencoder-bufread.rs":"9fdd7d632d861f099d19a3ec1de539d9600f8004a119dd2a70f6aba5965b2e1c","examples/deflateencoder-read.rs":"8740a942ec7d07ccb4b57c5baac7a4d649817bffe4e37ce9a06c7d6d70378e4c","examples/deflateencoder-write.rs":"8e45425684b2368ef95f3704dce6f8077f38b9a90a38d147594c7c570f0d1c6c","examples/gzbuilder.rs":"d09c83417e4a01a8593ce3462a33340e6fe17fa51b4b0b3a6005b68959df4d8c","examples/gzdecoder-bufread.rs":"76880f3e6e10ed4a0bf564be9ddae1c50811aeabf61fb573039538b81805f390","examples/gzdecoder-read.rs":"d99e9a9ce03a27f280244a24e8f5a3282e5af15b455270d99c4bfecd19238d0d","examples/gzdecoder-write.rs":"d0a982377ca1d2fd1786bb32f16454b4f0afdba5e1c7f0ab97e15e8827d351d5","examples/gzencoder-bufread.rs":"760670c124b1c5776b63c300c7e8a1dcd5e0ae633017dcf2e3d2d6e997dcc9c4","examples/gzencoder-read.rs":"27ec68675418bb7d1a110b8d1f33e7b1069f42bcce6f21f8d9235bde405cdf9f","examples/gzencoder-write.rs":"f127f2e398231d03269770fa18ac5d465f8d56d283f1118055f04f1d03369c31","examples/gzmultidecoder-bufread.rs":"bfa6c5554c3da5a61a7d1e1dad115b7ee784d136e2ac61272c87ad3e1eb4ec4c","examples/gzmultidecoder-read.rs":"c058d5eee5bf45b38132f8e487a714c9521191c7dabe2459362d2f8de689c6bf","examples/hello_world.txt":"d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27458ed8229da804a26","examples/hello_world.txt.gz":"8b4c5972b92b8ee8dc99116e278afb9165276ddb13c0d334c8da2770fd4d1f7d","examples/zlibdecoder-bufread.rs":"0f541ec64c635d45fc206a02718c0b90c49123a0441a95455d6a8a9e0d20e011","examples/zlibdecoder-read.rs":"bbd85b47b8b804c3294b3f23f978eaf6fb09a187cb46eb86ae1ae2790dfab8d9","examples/zlibdecoder-write.rs":"f347a831d7201d3efd604b006c88421fa2a5906c6377b47c7ae391d0809186e6","examples/zlibencoder-bufread.rs":"e0e05686ad4521ba18b742a5cbbc5937cec1fd8b9e8313070b32c6f178dfbaf6","examples/zlibencoder-read.rs":"4a3156dc73cd77e6ac56700680652be63a1270d95ce384ebcd5c014cce2d5179","examples/zlibencoder-write.rs":"822d4cd326ac7402ff8f828c1dbb3aa108c68a89fc04488da252ca6a74e624b0","src/bufreader.rs":"2d6a59330e8f838eb6474d19104f21cb98236125c189f36bdff75a069a4cea8f","src/crc.rs":"f02b9ffbedf06360c8164f98ecf51fe7f70c48cdb3bfc72e176421419c1de030","src/deflate/bufread.rs":"76af1e22d74571304f7a632751bf80ad946808ff516138696cc6b3d6c586529b","src/deflate/mod.rs":"d33ef6a3d502d599a4ba6ac99c6312b414002dba43c388d271fc1f8c9c609363","src/deflate/read.rs":"122632aff99207af0d998b0890bad44cbc68bb671dcf086cf35adae847175c66","src/deflate/write.rs":"fef4deebc0dc29d4ad481718613c694f6d1b733199e241a1f7f064e2707e4908","src/ffi/c.rs":"f564f9b27278e770006ffda9b078a6a9f5219ffd3fbbc9e315c27bc134b0c32f","src/ffi/mod.rs":"2b811be787e23654e56a1a5748f64f6b6953a829594aef9bdb8f223fe9a1bba9","src/ffi/rust.rs":"0a69aac9bd08728d212f503a16c0e7fb64a7822a7531bc3a96e78c89c09b6e80","src/gz/bufread.rs":"ff18bb9bb6564e45ee2b6dbf4c9dbfe72b25982cd26748b6121f9cab8a7b0dab","src/gz/mod.rs":"2cbcf00c6372d9dd383197bdeceec80dacc8d73d8d5ff44a05fa88040681c5cb","src/gz/read.rs":"68c79bcd34ff14e7572b2f9862f3fb12a26885986783180b7fdce77ae4fb9260","src/gz/write.rs":"78954929f24229875503ffdc04944924120c199fa502a0742e195cffcc135631","src/lib.rs":"9651a09ff275d464ff4865974797a6dc8f2f786225e159b6bd0dbbfd5afc0cef","src/mem.rs":"e563f95d7ab3343b4c86c968c8810b96d74d8cf7612818dd60cd1f6bc4f63eb3","src/zio.rs":"ed5f375f5d6c4f094dfdd43185c9af5e91d1129bfbfa31edc6902a1f7496920b","src/zlib/bufread.rs":"4ef683b9035720d19eec5f21f46f70b7d8eaf9385caddcfd9e48533c619cbb26","src/zlib/mod.rs":"18ea5785b913d90191c6ad8483f57d0c5f98599137659e72f3c0c78324b4f8fa","src/zlib/read.rs":"7dea75ca1dec5a2175b0f45fb2445a345fbe1d220cf4c599e25dece43c520271","src/zlib/write.rs":"5cb973ffb9fc0e6ee8f3cc4537d0b32f826dbe7c367723752d2db708af8831bb","tests/corrupt-gz-file.bin":"083dd284aa1621916a2d0f66ea048c8d3ba7a722b22d0d618722633f51e7d39c","tests/early-flush.rs":"9a4db8fcbac659c52cafe5e1ab647d86781cf8b1f298d8dee34223c0292e0d74","tests/empty-read.rs":"39143ff0383655bb115e995b2a953f11e82d0ac03b4bec080973be7c2d421054","tests/good-file.gz":"87296963e53024a74752179ce7e54087565d358a85d3e65c3b37ef36eaa3d4a6","tests/good-file.txt":"bc4e03658a441fe2ad2df7cd2197144b87e41696f01e327b380e869cd9b485a0","tests/gunzip.rs":"c00946db2147b23c4300c77fedf0a04e65c774101575e9828433831311416a50","tests/multi.gz":"efa3341da052f95056314cc6920e02a3da15bdef30234b2552fb407812db5cc6","tests/multi.txt":"dbea9325179efe46ea2add94f7b6b745ca983fabb208dc6d34aa064623d7ee23","tests/zero-write.rs":"cde1a675491d88e59a711103d3b0df4c77b60e8152b90d5a4f01b97879f8f8dc"},"package":"c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/flate2/Cargo.lock temporalio-1.3.0/vendor/flate2/Cargo.lock --- temporalio-1.3.0/vendor/flate2/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/flate2/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -10,9 +10,9 @@ [[package]] name = "cc" -version = "1.0.73" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" [[package]] name = "cfg-if" @@ -31,9 +31,9 @@ [[package]] name = "cmake" -version = "0.1.48" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8ad8cef104ac57b68b89df3208164d228503abbdce70f6880ffa3d970e7443a" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" dependencies = [ "cc", ] @@ -49,7 +49,7 @@ [[package]] name = "flate2" -version = "1.0.26" +version = "1.0.27" dependencies = [ "cloudflare-zlib-sys", "crc32fast", @@ -62,9 +62,9 @@ [[package]] name = "getrandom" -version = "0.2.6" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" +checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" dependencies = [ "cfg-if", "libc", @@ -73,15 +73,15 @@ [[package]] name = "libc" -version = "0.2.124" +version = "0.2.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a41fed9d98f27ab1c6d161da622a4fa35e8a54a8adc24bbf3ddd0ef70b0e50" +checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1" [[package]] name = "libz-ng-sys" -version = "1.1.8" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4399ae96a9966bf581e726de86969f803a81b7ce795fcd5480e640589457e0f2" +checksum = "425fb6808068335c8c7c69d1cff0a7d1ed8f681e9ac040272f160a89e6f43b8b" dependencies = [ "cmake", "libc", @@ -89,9 +89,9 @@ [[package]] name = "libz-sys" -version = "1.1.8" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" +checksum = "24e6ab01971eb092ffe6a7d42f49f9ff42662f17604681e2843ad65077ba47dc" dependencies = [ "cc", "cmake", @@ -111,15 +111,15 @@ [[package]] name = "pkg-config" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "ppv-lite86" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "quickcheck" @@ -153,9 +153,9 @@ [[package]] name = "rand_core" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom", ] @@ -168,6 +168,6 @@ [[package]] name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" +version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" diff -Nru temporalio-1.3.0/vendor/flate2/Cargo.toml temporalio-1.3.0/vendor/flate2/Cargo.toml --- temporalio-1.3.0/vendor/flate2/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/flate2/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2018" name = "flate2" -version = "1.0.26" +version = "1.0.27" authors = [ "Alex Crichton ", "Josh Triplett ", @@ -76,14 +76,18 @@ version = "0.8" [features] -any_zlib = [] +any_impl = [] +any_zlib = ["any_impl"] cloudflare_zlib = [ "any_zlib", "cloudflare-zlib-sys", ] default = ["rust_backend"] miniz-sys = ["rust_backend"] -rust_backend = ["miniz_oxide"] +rust_backend = [ + "miniz_oxide", + "any_impl", +] zlib = [ "any_zlib", "libz-sys", diff -Nru temporalio-1.3.0/vendor/flate2/MAINTENANCE.md temporalio-1.3.0/vendor/flate2/MAINTENANCE.md --- temporalio-1.3.0/vendor/flate2/MAINTENANCE.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/flate2/MAINTENANCE.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,21 @@ +This document explains how to perform the project's maintenance tasks. + +### Creating a new release + +#### Artifacts + +* a tag of the version number +* a new [crate version](https://crates.io/crates/flate2/versions) + +#### Process + +To generate all the artifacts above, one proceeds as follows: + +1. `git checkout -b release-` - move to a branch to prepare making changes to the repository. *Changes cannot be made to `main` as it is protected.* +2. Edit `Cargo.toml` to the next package version. +3. `gh pr create` to create a new PR for the current branch and **get it merged**. +4. `cargo publish` to create a new release on `crates.io`. +5. `git tag ` to remember the commit. +6. `git push --tags` to push the new tag. +7. Go to the newly created release page on GitHub and edit it by pressing the "Generate Release Notes" and the `@` button. Save the release. + diff -Nru temporalio-1.3.0/vendor/flate2/README.md temporalio-1.3.0/vendor/flate2/README.md --- temporalio-1.3.0/vendor/flate2/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/flate2/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -6,7 +6,7 @@ A streaming compression/decompression library DEFLATE-based streams in Rust. This crate by default uses the `miniz_oxide` crate, a port of `miniz.c` to pure -Rust. This crate also supports other [backends](#Backends), such as the widely +Rust. This crate also supports other [backends](#backends), such as the widely available zlib library or the high-performance zlib-ng library. Supported formats: diff -Nru temporalio-1.3.0/vendor/flate2/src/deflate/read.rs temporalio-1.3.0/vendor/flate2/src/deflate/read.rs --- temporalio-1.3.0/vendor/flate2/src/deflate/read.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/flate2/src/deflate/read.rs 2023-10-30 19:40:00.000000000 +0000 @@ -25,11 +25,11 @@ /// # /// // Return a vector containing the Deflate compressed version of hello world /// fn deflateencoder_read_hello_world() -> io::Result> { -/// let mut ret_vec = [0;100]; +/// let mut ret_vec = Vec::new(); /// let c = b"hello world"; /// let mut deflater = DeflateEncoder::new(&c[..], Compression::fast()); -/// let count = deflater.read(&mut ret_vec)?; -/// Ok(ret_vec[0..count].to_vec()) +/// deflater.read_to_end(&mut ret_vec)?; +/// Ok(ret_vec) /// } /// ``` #[derive(Debug)] diff -Nru temporalio-1.3.0/vendor/flate2/src/ffi/mod.rs temporalio-1.3.0/vendor/flate2/src/ffi/mod.rs --- temporalio-1.3.0/vendor/flate2/src/ffi/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/flate2/src/ffi/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -40,9 +40,9 @@ #[cfg(feature = "any_zlib")] pub use self::c::*; -#[cfg(not(feature = "any_zlib"))] +#[cfg(all(not(feature = "any_zlib"), feature = "miniz_oxide"))] mod rust; -#[cfg(not(feature = "any_zlib"))] +#[cfg(all(not(feature = "any_zlib"), feature = "miniz_oxide"))] pub use self::rust::*; impl std::fmt::Debug for ErrorMessage { diff -Nru temporalio-1.3.0/vendor/flate2/src/gz/bufread.rs temporalio-1.3.0/vendor/flate2/src/gz/bufread.rs --- temporalio-1.3.0/vendor/flate2/src/gz/bufread.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/flate2/src/gz/bufread.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,9 +3,8 @@ use std::io::prelude::*; use std::mem; -use super::{GzBuilder, GzHeader}; -use super::{FCOMMENT, FEXTRA, FHCRC, FNAME}; -use crate::crc::{Crc, CrcReader}; +use super::{corrupt, read_into, GzBuilder, GzHeader, GzHeaderParser}; +use crate::crc::CrcReader; use crate::deflate; use crate::Compression; @@ -18,112 +17,6 @@ min } -pub(crate) fn corrupt() -> io::Error { - io::Error::new( - io::ErrorKind::InvalidInput, - "corrupt gzip stream does not have a matching checksum", - ) -} - -fn bad_header() -> io::Error { - io::Error::new(io::ErrorKind::InvalidInput, "invalid gzip header") -} - -fn read_le_u16(r: &mut Buffer) -> io::Result { - let mut b = [0; 2]; - r.read_and_forget(&mut b)?; - Ok((b[0] as u16) | ((b[1] as u16) << 8)) -} - -fn read_gz_header_part<'a, R: Read>(r: &'a mut Buffer<'a, R>) -> io::Result<()> { - loop { - match r.part.state { - GzHeaderParsingState::Start => { - let mut header = [0; 10]; - r.read_and_forget(&mut header)?; - - if header[0] != 0x1f || header[1] != 0x8b { - return Err(bad_header()); - } - if header[2] != 8 { - return Err(bad_header()); - } - - r.part.flg = header[3]; - r.part.header.mtime = ((header[4] as u32) << 0) - | ((header[5] as u32) << 8) - | ((header[6] as u32) << 16) - | ((header[7] as u32) << 24); - let _xfl = header[8]; - r.part.header.operating_system = header[9]; - r.part.state = GzHeaderParsingState::Xlen; - } - GzHeaderParsingState::Xlen => { - if r.part.flg & FEXTRA != 0 { - r.part.xlen = read_le_u16(r)?; - } - r.part.state = GzHeaderParsingState::Extra; - } - GzHeaderParsingState::Extra => { - if r.part.flg & FEXTRA != 0 { - let mut extra = vec![0; r.part.xlen as usize]; - r.read_and_forget(&mut extra)?; - r.part.header.extra = Some(extra); - } - r.part.state = GzHeaderParsingState::Filename; - } - GzHeaderParsingState::Filename => { - if r.part.flg & FNAME != 0 { - if r.part.header.filename.is_none() { - r.part.header.filename = Some(Vec::new()); - }; - for byte in r.bytes() { - let byte = byte?; - if byte == 0 { - break; - } - } - } - r.part.state = GzHeaderParsingState::Comment; - } - GzHeaderParsingState::Comment => { - if r.part.flg & FCOMMENT != 0 { - if r.part.header.comment.is_none() { - r.part.header.comment = Some(Vec::new()); - }; - for byte in r.bytes() { - let byte = byte?; - if byte == 0 { - break; - } - } - } - r.part.state = GzHeaderParsingState::Crc; - } - GzHeaderParsingState::Crc => { - if r.part.flg & FHCRC != 0 { - let stored_crc = read_le_u16(r)?; - let calced_crc = r.part.crc.sum() as u16; - if stored_crc != calced_crc { - return Err(corrupt()); - } - } - return Ok(()); - } - } - } -} - -pub(crate) fn read_gz_header(r: &mut R) -> io::Result { - let mut part = GzHeaderPartial::new(); - - let result = { - let mut reader = Buffer::new(&mut part, r); - read_gz_header_part(&mut reader) - }; - result.map(|()| part.take_header()) -} - /// A gzip streaming encoder /// /// This structure exposes a [`BufRead`] interface that will read uncompressed data @@ -270,11 +163,21 @@ } } -/// A gzip streaming decoder +/// A decoder for a single member of a [gzip file]. /// -/// This structure consumes a [`BufRead`] interface, reading compressed data +/// This structure exposes a [`BufRead`] interface, reading compressed data /// from the underlying reader, and emitting uncompressed data. /// +/// After reading a single member of the gzip data this reader will return +/// Ok(0) even if there are more bytes available in the underlying reader. +/// If you need the following bytes, call `into_inner()` after Ok(0) to +/// recover the underlying reader. +/// +/// To handle gzip files that may have multiple members, see [`MultiGzDecoder`] +/// or read more +/// [in the introduction](../index.html#about-multi-member-gzip-files). +/// +/// [gzip file]: https://www.rfc-editor.org/rfc/rfc1952#page-5 /// [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html /// /// # Examples @@ -305,161 +208,38 @@ /// ``` #[derive(Debug)] pub struct GzDecoder { - inner: GzState, - header: Option, + state: GzState, reader: CrcReader>, multi: bool, } #[derive(Debug)] -pub enum GzHeaderParsingState { - Start, - Xlen, - Extra, - Filename, - Comment, - Crc, -} - -#[derive(Debug)] -pub struct GzHeaderPartial { - buf: Vec, - state: GzHeaderParsingState, - flg: u8, - xlen: u16, - crc: Crc, - header: GzHeader, -} - -impl GzHeaderPartial { - fn new() -> GzHeaderPartial { - GzHeaderPartial { - buf: Vec::with_capacity(10), // minimum header length - state: GzHeaderParsingState::Start, - flg: 0, - xlen: 0, - crc: Crc::new(), - header: GzHeader { - extra: None, - filename: None, - comment: None, - operating_system: 0, - mtime: 0, - }, - } - } - - pub fn take_header(self) -> GzHeader { - self.header - } -} - -#[derive(Debug)] enum GzState { - Header(GzHeaderPartial), - Body, - Finished(usize, [u8; 8]), + Header(GzHeaderParser), + Body(GzHeader), + Finished(GzHeader, usize, [u8; 8]), Err(io::Error), - End, -} - -/// A small adapter which reads data originally from `buf` and then reads all -/// further data from `reader`. This will also buffer all data read from -/// `reader` into `buf` for reuse on a further call. -struct Buffer<'a, T: 'a> { - part: &'a mut GzHeaderPartial, - buf_cur: usize, - buf_max: usize, - reader: &'a mut T, -} - -impl<'a, T> Buffer<'a, T> { - fn new(part: &'a mut GzHeaderPartial, reader: &'a mut T) -> Buffer<'a, T> { - Buffer { - reader, - buf_cur: 0, - buf_max: part.buf.len(), - part, - } - } -} - -impl<'a, T: Read> Read for Buffer<'a, T> { - fn read(&mut self, buf: &mut [u8]) -> io::Result { - let mut bufref = match self.part.state { - GzHeaderParsingState::Filename => self.part.header.filename.as_mut(), - GzHeaderParsingState::Comment => self.part.header.comment.as_mut(), - _ => None, - }; - if let Some(ref mut b) = bufref { - // we have a direct reference to a buffer where to write - let len = self.reader.read(buf)?; - if len > 0 && buf[len - 1] == 0 { - // we do not append the final 0 - b.extend_from_slice(&buf[..len - 1]); - } else { - b.extend_from_slice(&buf[..len]); - } - self.part.crc.update(&buf[..len]); - Ok(len) - } else if self.buf_cur == self.buf_max { - // we read new bytes and also save them in self.part.buf - let len = self.reader.read(buf)?; - self.part.buf.extend_from_slice(&buf[..len]); - self.part.crc.update(&buf[..len]); - Ok(len) - } else { - // we first read the previously saved bytes - let len = (&self.part.buf[self.buf_cur..self.buf_max]).read(buf)?; - self.buf_cur += len; - Ok(len) - } - } -} - -impl<'a, T> Buffer<'a, T> -where - T: std::io::Read, -{ - // If we manage to read all the bytes, we reset the buffer - fn read_and_forget(&mut self, buf: &mut [u8]) -> io::Result { - self.read_exact(buf)?; - // we managed to read the whole buf - // we will no longer need the previously saved bytes in self.part.buf - let rlen = buf.len(); - self.part.buf.truncate(0); - self.buf_cur = 0; - self.buf_max = 0; - Ok(rlen) - } + End(Option), } impl GzDecoder { /// Creates a new decoder from the given reader, immediately parsing the /// gzip header. pub fn new(mut r: R) -> GzDecoder { - let mut part = GzHeaderPartial::new(); - let mut header = None; - - let result = { - let mut reader = Buffer::new(&mut part, &mut r); - read_gz_header_part(&mut reader) - }; + let mut header_parser = GzHeaderParser::new(); - let state = match result { - Ok(()) => { - header = Some(part.take_header()); - GzState::Body + let state = match header_parser.parse(&mut r) { + Ok(_) => GzState::Body(GzHeader::from(header_parser)), + Err(ref err) if io::ErrorKind::WouldBlock == err.kind() => { + GzState::Header(header_parser) } - Err(ref err) if io::ErrorKind::WouldBlock == err.kind() => GzState::Header(part), Err(err) => GzState::Err(err), }; GzDecoder { - inner: state, + state, reader: CrcReader::new(deflate::bufread::DeflateDecoder::new(r)), multi: false, - header, } } @@ -472,7 +252,11 @@ impl GzDecoder { /// Returns the header associated with this stream, if it was valid pub fn header(&self) -> Option<&GzHeader> { - self.header.as_ref() + match &self.state { + GzState::Body(header) | GzState::Finished(header, _, _) => Some(header), + GzState::End(header) => header.as_ref(), + _ => None, + } } /// Acquires a reference to the underlying reader. @@ -496,111 +280,61 @@ impl Read for GzDecoder { fn read(&mut self, into: &mut [u8]) -> io::Result { - let GzDecoder { - inner, - header, - reader, - multi, - } = self; - loop { - *inner = match mem::replace(inner, GzState::End) { - GzState::Header(mut part) => { - let result = { - let mut reader = Buffer::new(&mut part, reader.get_mut().get_mut()); - read_gz_header_part(&mut reader) - }; - match result { - Ok(()) => { - *header = Some(part.take_header()); - GzState::Body - } - Err(err) if io::ErrorKind::WouldBlock == err.kind() => { - *inner = GzState::Header(part); - return Err(err); - } - Err(err) => return Err(err), - } + match &mut self.state { + GzState::Header(parser) => { + parser.parse(self.reader.get_mut().get_mut())?; + self.state = GzState::Body(GzHeader::from(mem::take(parser))); } - GzState::Body => { + GzState::Body(header) => { if into.is_empty() { - *inner = GzState::Body; return Ok(0); } - - let n = reader.read(into).map_err(|err| { - if io::ErrorKind::WouldBlock == err.kind() { - *inner = GzState::Body; + match self.reader.read(into)? { + 0 => { + self.state = GzState::Finished(mem::take(header), 0, [0; 8]); } - - err - })?; - - match n { - 0 => GzState::Finished(0, [0; 8]), n => { - *inner = GzState::Body; return Ok(n); } } } - GzState::Finished(pos, mut buf) => { - if pos < buf.len() { - let n = reader - .get_mut() - .get_mut() - .read(&mut buf[pos..]) - .and_then(|n| { - if n == 0 { - Err(io::ErrorKind::UnexpectedEof.into()) - } else { - Ok(n) - } - }) - .map_err(|err| { - if io::ErrorKind::WouldBlock == err.kind() { - *inner = GzState::Finished(pos, buf); - } - - err - })?; - - GzState::Finished(pos + n, buf) + GzState::Finished(header, pos, buf) => { + if *pos < buf.len() { + *pos += read_into(self.reader.get_mut().get_mut(), &mut buf[*pos..])?; } else { let (crc, amt) = finish(&buf); - if crc != reader.crc().sum() || amt != reader.crc().amount() { + if crc != self.reader.crc().sum() || amt != self.reader.crc().amount() { + self.state = GzState::End(Some(mem::take(header))); return Err(corrupt()); - } else if *multi { - let is_eof = reader + } else if self.multi { + let is_eof = self + .reader .get_mut() .get_mut() .fill_buf() - .map(|buf| buf.is_empty()) - .map_err(|err| { - if io::ErrorKind::WouldBlock == err.kind() { - *inner = GzState::Finished(pos, buf); - } - - err - })?; + .map(|buf| buf.is_empty())?; if is_eof { - GzState::End + self.state = GzState::End(Some(mem::take(header))); } else { - reader.reset(); - reader.get_mut().reset_data(); - header.take(); - GzState::Header(GzHeaderPartial::new()) + self.reader.reset(); + self.reader.get_mut().reset_data(); + self.state = GzState::Header(GzHeaderParser::new()) } } else { - GzState::End + self.state = GzState::End(Some(mem::take(header))); } } } - GzState::Err(err) => return Err(err), - GzState::End => return Ok(0), - }; + GzState::Err(err) => { + let result = Err(mem::replace(err, io::ErrorKind::Other.into())); + self.state = GzState::End(None); + return result; + } + GzState::End(_) => return Ok(0), + } } } } @@ -615,18 +349,19 @@ } } -/// A gzip streaming decoder that decodes all members of a multistream +/// A gzip streaming decoder that decodes a [gzip file] that may have multiple members. +/// +/// This structure exposes a [`BufRead`] interface that will consume compressed +/// data from the underlying reader and emit uncompressed data. /// -/// A gzip member consists of a header, compressed data and a trailer. The [gzip -/// specification](https://tools.ietf.org/html/rfc1952), however, allows multiple -/// gzip members to be joined in a single stream. `MultiGzDecoder` will -/// decode all consecutive members while `GzDecoder` will only decompress -/// the first gzip member. The multistream format is commonly used in -/// bioinformatics, for example when using the BGZF compressed data. +/// A gzip file consists of a series of *members* concatenated one after another. +/// MultiGzDecoder decodes all members from the data and only returns Ok(0) when the +/// underlying reader does. For a file, this reads to the end of the file. /// -/// This structure exposes a [`BufRead`] interface that will consume all gzip members -/// from the underlying reader and emit uncompressed data. +/// To handle members seperately, see [GzDecoder] or read more +/// [in the introduction](../index.html#about-multi-member-gzip-files). /// +/// [gzip file]: https://www.rfc-editor.org/rfc/rfc1952#page-5 /// [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html /// /// # Examples @@ -699,154 +434,48 @@ } #[cfg(test)] -pub mod tests { - use crate::gz::bufread::*; - use std::io; - use std::io::{Cursor, Read, Write}; - - //a cursor turning EOF into blocking errors - #[derive(Debug)] - pub struct BlockingCursor { - pub cursor: Cursor>, - } - - impl BlockingCursor { - pub fn new() -> BlockingCursor { - BlockingCursor { - cursor: Cursor::new(Vec::new()), - } - } +mod test { + use crate::bufread::GzDecoder; + use crate::gz::write; + use crate::Compression; + use std::io::{Read, Write}; - pub fn set_position(&mut self, pos: u64) { - self.cursor.set_position(pos) - } - - pub fn position(&mut self) -> u64 { - self.cursor.position() - } - } - - impl Write for BlockingCursor { - fn write(&mut self, buf: &[u8]) -> io::Result { - self.cursor.write(buf) - } - fn flush(&mut self) -> io::Result<()> { - self.cursor.flush() - } - } - - impl Read for BlockingCursor { - fn read(&mut self, buf: &mut [u8]) -> io::Result { - //use the cursor, except it turns eof into blocking error - let r = self.cursor.read(buf); - match r { - Err(ref err) => { - if err.kind() == io::ErrorKind::UnexpectedEof { - return Err(io::ErrorKind::WouldBlock.into()); - } - } - Ok(0) => { - //regular EOF turned into blocking error - return Err(io::ErrorKind::WouldBlock.into()); - } - Ok(_n) => {} - } - r - } - } + // GzDecoder consumes one gzip member and then returns 0 for subsequent reads, allowing any + // additional data to be consumed by the caller. #[test] - // test function read_and_forget of Buffer - fn buffer_read_and_forget() { - // this is unused except for the buffering - let mut part = GzHeaderPartial::new(); - // this is a reader which receives data afterwards - let mut r = BlockingCursor::new(); - let data = vec![1, 2, 3]; - let mut out = Vec::with_capacity(7); - - match r.write_all(&data) { - Ok(()) => {} - _ => { - panic!("Unexpected result for write_all"); - } - } - r.set_position(0); - - // First read : successful for one byte - let mut reader = Buffer::new(&mut part, &mut r); - out.resize(1, 0); - match reader.read_and_forget(&mut out) { - Ok(1) => {} - _ => { - panic!("Unexpected result for read_and_forget with data"); - } - } - - // Second read : incomplete for 7 bytes (we have only 2) - out.resize(7, 0); - match reader.read_and_forget(&mut out) { - Err(ref err) => { - assert_eq!(io::ErrorKind::WouldBlock, err.kind()); - } - _ => { - panic!("Unexpected result for read_and_forget with incomplete"); - } - } - - // 3 more data bytes have arrived - let pos = r.position(); - let data2 = vec![4, 5, 6]; - match r.write_all(&data2) { - Ok(()) => {} - _ => { - panic!("Unexpected result for write_all"); - } - } - r.set_position(pos); - - // Third read : still incomplete for 7 bytes (we have 5) - let mut reader2 = Buffer::new(&mut part, &mut r); - match reader2.read_and_forget(&mut out) { - Err(ref err) => { - assert_eq!(io::ErrorKind::WouldBlock, err.kind()); - } - _ => { - panic!("Unexpected result for read_and_forget with more incomplete"); - } - } - - // 3 more data bytes have arrived again - let pos2 = r.position(); - let data3 = vec![7, 8, 9]; - match r.write_all(&data3) { - Ok(()) => {} - _ => { - panic!("Unexpected result for write_all"); - } - } - r.set_position(pos2); + fn decode_extra_data() { + let expected = "Hello World"; - // Fourth read : now successful for 7 bytes - let mut reader3 = Buffer::new(&mut part, &mut r); - match reader3.read_and_forget(&mut out) { - Ok(7) => { - assert_eq!(out[0], 2); - assert_eq!(out[6], 8); - } - _ => { - panic!("Unexpected result for read_and_forget with data"); - } - } + let compressed = { + let mut e = write::GzEncoder::new(Vec::new(), Compression::default()); + e.write(expected.as_ref()).unwrap(); + let mut b = e.finish().unwrap(); + b.push(b'x'); + b + }; - // Fifth read : successful for one more byte - out.resize(1, 0); - match reader3.read_and_forget(&mut out) { - Ok(1) => { - assert_eq!(out[0], 9); - } - _ => { - panic!("Unexpected result for read_and_forget with data"); - } - } + let mut output = Vec::new(); + let mut decoder = GzDecoder::new(compressed.as_slice()); + let decoded_bytes = decoder.read_to_end(&mut output).unwrap(); + assert_eq!(decoded_bytes, output.len()); + let actual = std::str::from_utf8(&output).expect("String parsing error"); + assert_eq!( + actual, expected, + "after decompression we obtain the original input" + ); + + output.clear(); + assert_eq!( + decoder.read(&mut output).unwrap(), + 0, + "subsequent read of decoder returns 0, but inner reader can return additional data" + ); + let mut reader = decoder.into_inner(); + assert_eq!( + reader.read_to_end(&mut output).unwrap(), + 1, + "extra data is accessible in underlying buf-read" + ); + assert_eq!(output, b"x"); } } diff -Nru temporalio-1.3.0/vendor/flate2/src/gz/mod.rs temporalio-1.3.0/vendor/flate2/src/gz/mod.rs --- temporalio-1.3.0/vendor/flate2/src/gz/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/flate2/src/gz/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,19 +1,24 @@ use std::ffi::CString; -use std::io::prelude::*; +use std::io::{BufRead, Error, ErrorKind, Read, Result, Write}; use std::time; use crate::bufreader::BufReader; -use crate::Compression; +use crate::{Compression, Crc}; pub static FHCRC: u8 = 1 << 1; pub static FEXTRA: u8 = 1 << 2; pub static FNAME: u8 = 1 << 3; pub static FCOMMENT: u8 = 1 << 4; +pub static FRESERVED: u8 = 1 << 5 | 1 << 6 | 1 << 7; pub mod bufread; pub mod read; pub mod write; +// The maximum length of the header filename and comment fields. More than +// enough for these fields in reasonable use, but prevents possible attacks. +const MAX_HEADER_BUF: usize = 65535; + /// A structure representing the header of a gzip stream. /// /// The header can contain metadata about the file that was compressed, if @@ -82,6 +87,205 @@ } } +#[derive(Debug, Default)] +pub enum GzHeaderState { + Start(u8, [u8; 10]), + Xlen(Option>, u8, [u8; 2]), + Extra(Option>, u16), + Filename(Option>), + Comment(Option>), + Crc(Option>, u8, [u8; 2]), + #[default] + Complete, +} + +#[derive(Debug, Default)] +pub struct GzHeaderParser { + state: GzHeaderState, + flags: u8, + header: GzHeader, +} + +impl GzHeaderParser { + fn new() -> Self { + GzHeaderParser { + state: GzHeaderState::Start(0, [0; 10]), + flags: 0, + header: GzHeader::default(), + } + } + + fn parse<'a, R: Read>(&mut self, r: &'a mut R) -> Result<()> { + loop { + match &mut self.state { + GzHeaderState::Start(count, buffer) => { + while (*count as usize) < buffer.len() { + *count += read_into(r, &mut buffer[*count as usize..])? as u8; + } + // Gzip identification bytes + if buffer[0] != 0x1f || buffer[1] != 0x8b { + return Err(bad_header()); + } + // Gzip compression method (8 = deflate) + if buffer[2] != 8 { + return Err(bad_header()); + } + self.flags = buffer[3]; + // RFC1952: "must give an error indication if any reserved bit is non-zero" + if self.flags & FRESERVED != 0 { + return Err(bad_header()); + } + self.header.mtime = ((buffer[4] as u32) << 0) + | ((buffer[5] as u32) << 8) + | ((buffer[6] as u32) << 16) + | ((buffer[7] as u32) << 24); + let _xfl = buffer[8]; + self.header.operating_system = buffer[9]; + let crc = if self.flags & FHCRC != 0 { + let mut crc = Box::new(Crc::new()); + crc.update(buffer); + Some(crc) + } else { + None + }; + self.state = GzHeaderState::Xlen(crc, 0, [0; 2]); + } + GzHeaderState::Xlen(crc, count, buffer) => { + if self.flags & FEXTRA != 0 { + while (*count as usize) < buffer.len() { + *count += read_into(r, &mut buffer[*count as usize..])? as u8; + } + if let Some(crc) = crc { + crc.update(buffer); + } + let xlen = parse_le_u16(&buffer); + self.header.extra = Some(vec![0; xlen as usize]); + self.state = GzHeaderState::Extra(crc.take(), 0); + } else { + self.state = GzHeaderState::Filename(crc.take()); + } + } + GzHeaderState::Extra(crc, count) => { + debug_assert!(self.header.extra.is_some()); + let extra = self.header.extra.as_mut().unwrap(); + while (*count as usize) < extra.len() { + *count += read_into(r, &mut extra[*count as usize..])? as u16; + } + if let Some(crc) = crc { + crc.update(extra); + } + self.state = GzHeaderState::Filename(crc.take()); + } + GzHeaderState::Filename(crc) => { + if self.flags & FNAME != 0 { + let filename = self.header.filename.get_or_insert_with(Vec::new); + read_to_nul(r, filename)?; + if let Some(crc) = crc { + crc.update(filename); + crc.update(b"\0"); + } + } + self.state = GzHeaderState::Comment(crc.take()); + } + GzHeaderState::Comment(crc) => { + if self.flags & FCOMMENT != 0 { + let comment = self.header.comment.get_or_insert_with(Vec::new); + read_to_nul(r, comment)?; + if let Some(crc) = crc { + crc.update(comment); + crc.update(b"\0"); + } + } + self.state = GzHeaderState::Crc(crc.take(), 0, [0; 2]); + } + GzHeaderState::Crc(crc, count, buffer) => { + if let Some(crc) = crc { + debug_assert!(self.flags & FHCRC != 0); + while (*count as usize) < buffer.len() { + *count += read_into(r, &mut buffer[*count as usize..])? as u8; + } + let stored_crc = parse_le_u16(&buffer); + let calced_crc = crc.sum() as u16; + if stored_crc != calced_crc { + return Err(corrupt()); + } + } + self.state = GzHeaderState::Complete; + } + GzHeaderState::Complete => { + return Ok(()); + } + } + } + } + + fn header(&self) -> Option<&GzHeader> { + match self.state { + GzHeaderState::Complete => Some(&self.header), + _ => None, + } + } +} + +impl From for GzHeader { + fn from(parser: GzHeaderParser) -> Self { + debug_assert!(matches!(parser.state, GzHeaderState::Complete)); + parser.header + } +} + +// Attempt to fill the `buffer` from `r`. Return the number of bytes read. +// Return an error if EOF is read before the buffer is full. This differs +// from `read` in that Ok(0) means that more data may be available. +fn read_into(r: &mut R, buffer: &mut [u8]) -> Result { + debug_assert!(!buffer.is_empty()); + match r.read(buffer) { + Ok(0) => Err(ErrorKind::UnexpectedEof.into()), + Ok(n) => Ok(n), + Err(ref e) if e.kind() == ErrorKind::Interrupted => Ok(0), + Err(e) => Err(e), + } +} + +// Read `r` up to the first nul byte, pushing non-nul bytes to `buffer`. +fn read_to_nul(r: &mut R, buffer: &mut Vec) -> Result<()> { + let mut bytes = r.bytes(); + loop { + match bytes.next().transpose()? { + Some(byte) if byte == 0 => { + return Ok(()); + } + Some(_) if buffer.len() == MAX_HEADER_BUF => { + return Err(Error::new( + ErrorKind::InvalidInput, + "gzip header field too long", + )); + } + Some(byte) => { + buffer.push(byte); + } + None => { + return Err(ErrorKind::UnexpectedEof.into()); + } + } + } +} + +fn parse_le_u16(buffer: &[u8; 2]) -> u16 { + (buffer[0] as u16) | ((buffer[1] as u16) << 8) +} + +fn bad_header() -> Error { + Error::new(ErrorKind::InvalidInput, "invalid gzip header") +} + +fn corrupt() -> Error { + Error::new( + ErrorKind::InvalidInput, + "corrupt gzip stream does not have a matching checksum", + ) +} + /// A builder structure to create a new gzip Encoder. /// /// This structure controls header configuration options such as the filename. @@ -253,8 +457,8 @@ mod tests { use std::io::prelude::*; - use super::{read, write, GzBuilder}; - use crate::Compression; + use super::{read, write, GzBuilder, GzHeaderParser}; + use crate::{Compression, GzHeader}; use rand::{thread_rng, Rng}; #[test] @@ -304,6 +508,85 @@ assert_eq!(res, v); } + // A Rust implementation of CRC that closely matches the C code in RFC1952. + // Only use this to create CRCs for tests. + struct Rfc1952Crc { + /* Table of CRCs of all 8-bit messages. */ + crc_table: [u32; 256], + } + + impl Rfc1952Crc { + fn new() -> Self { + let mut crc = Rfc1952Crc { + crc_table: [0; 256], + }; + /* Make the table for a fast CRC. */ + for n in 0usize..256 { + let mut c = n as u32; + for _k in 0..8 { + if c & 1 != 0 { + c = 0xedb88320 ^ (c >> 1); + } else { + c = c >> 1; + } + } + crc.crc_table[n] = c; + } + crc + } + + /* + Update a running crc with the bytes buf and return + the updated crc. The crc should be initialized to zero. Pre- and + post-conditioning (one's complement) is performed within this + function so it shouldn't be done by the caller. + */ + fn update_crc(&self, crc: u32, buf: &[u8]) -> u32 { + let mut c = crc ^ 0xffffffff; + + for b in buf { + c = self.crc_table[(c as u8 ^ *b) as usize] ^ (c >> 8); + } + c ^ 0xffffffff + } + + /* Return the CRC of the bytes buf. */ + fn crc(&self, buf: &[u8]) -> u32 { + self.update_crc(0, buf) + } + } + + #[test] + fn roundtrip_header() { + let mut header = GzBuilder::new() + .mtime(1234) + .operating_system(57) + .filename("filename") + .comment("comment") + .into_header(Compression::fast()); + + // Add a CRC to the header + header[3] = header[3] ^ super::FHCRC; + let rfc1952_crc = Rfc1952Crc::new(); + let crc32 = rfc1952_crc.crc(&header); + let crc16 = crc32 as u16; + header.extend(&crc16.to_le_bytes()); + + let mut parser = GzHeaderParser::new(); + parser.parse(&mut header.as_slice()).unwrap(); + let actual = parser.header().unwrap(); + assert_eq!( + actual, + &GzHeader { + extra: None, + filename: Some("filename".as_bytes().to_vec()), + comment: Some("comment".as_bytes().to_vec()), + operating_system: 57, + mtime: 1234 + } + ) + } + #[test] fn fields() { let r = vec![0, 2, 4, 6]; @@ -353,33 +636,4 @@ write!(f, "Hello world").unwrap(); f.flush().unwrap(); } - - use crate::gz::bufread::tests::BlockingCursor; - #[test] - // test function read_and_forget of Buffer - fn blocked_partial_header_read() { - // this is a reader which receives data afterwards - let mut r = BlockingCursor::new(); - let data = vec![1, 2, 3]; - - match r.write_all(&data) { - Ok(()) => {} - _ => { - panic!("Unexpected result for write_all"); - } - } - r.set_position(0); - - // this is unused except for the buffering - let mut decoder = read::GzDecoder::new(r); - let mut out = Vec::with_capacity(7); - match decoder.read(&mut out) { - Err(e) => { - assert_eq!(e.kind(), std::io::ErrorKind::WouldBlock); - } - _ => { - panic!("Unexpected result for decoder.read"); - } - } - } } diff -Nru temporalio-1.3.0/vendor/flate2/src/gz/read.rs temporalio-1.3.0/vendor/flate2/src/gz/read.rs --- temporalio-1.3.0/vendor/flate2/src/gz/read.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/flate2/src/gz/read.rs 2023-10-30 19:40:00.000000000 +0000 @@ -25,11 +25,11 @@ /// // Return a vector containing the GZ compressed version of hello world /// /// fn gzencode_hello_world() -> io::Result> { -/// let mut ret_vec = [0;100]; +/// let mut ret_vec = Vec::new(); /// let bytestring = b"hello world"; /// let mut gz = GzEncoder::new(&bytestring[..], Compression::fast()); -/// let count = gz.read(&mut ret_vec)?; -/// Ok(ret_vec[0..count].to_vec()) +/// gz.read_to_end(&mut ret_vec)?; +/// Ok(ret_vec) /// } /// ``` #[derive(Debug)] @@ -90,17 +90,26 @@ } } -/// A gzip streaming decoder +/// A decoder for a single member of a [gzip file]. /// /// This structure exposes a [`Read`] interface that will consume compressed /// data from the underlying reader and emit uncompressed data. /// -/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html +/// After reading a single member of the gzip data this reader will return +/// Ok(0) even if there are more bytes available in the underlying reader. +/// `GzDecoder` may have read additional bytes past the end of the gzip data. +/// If you need the following bytes, wrap the `Reader` in a `std::io::BufReader` +/// and use `bufread::GzDecoder` instead. +/// +/// To handle gzip files that may have multiple members, see [`MultiGzDecoder`] +/// or read more +/// [in the introduction](../index.html#about-multi-member-gzip-files). +/// +/// [gzip file]: https://www.rfc-editor.org/rfc/rfc1952#page-5 /// /// # Examples /// /// ``` -/// /// use std::io::prelude::*; /// use std::io; /// # use flate2::Compression; @@ -146,6 +155,9 @@ } /// Acquires a reference to the underlying reader. + /// + /// Note that the decoder may have read past the end of the gzip data. + /// To prevent this use [`bufread::GzDecoder`] instead. pub fn get_ref(&self) -> &R { self.inner.get_ref().get_ref() } @@ -153,12 +165,19 @@ /// Acquires a mutable reference to the underlying stream. /// /// Note that mutation of the stream may result in surprising results if - /// this decoder is continued to be used. + /// this decoder continues to be used. + /// + /// Note that the decoder may have read past the end of the gzip data. + /// To prevent this use [`bufread::GzDecoder`] instead. pub fn get_mut(&mut self) -> &mut R { self.inner.get_mut().get_mut() } /// Consumes this decoder, returning the underlying reader. + /// + /// Note that the decoder may have read past the end of the gzip data. + /// Subsequent reads will skip those bytes. To prevent this use + /// [`bufread::GzDecoder`] instead. pub fn into_inner(self) -> R { self.inner.into_inner().into_inner() } @@ -180,19 +199,19 @@ } } -/// A gzip streaming decoder that decodes all members of a multistream +/// A gzip streaming decoder that decodes a [gzip file] that may have multiple members. +/// +/// This structure exposes a [`Read`] interface that will consume compressed +/// data from the underlying reader and emit uncompressed data. /// -/// A gzip member consists of a header, compressed data and a trailer. The [gzip -/// specification](https://tools.ietf.org/html/rfc1952), however, allows multiple -/// gzip members to be joined in a single stream. `MultiGzDecoder` will -/// decode all consecutive members while `GzDecoder` will only decompress the -/// first gzip member. The multistream format is commonly used in bioinformatics, -/// for example when using the BGZF compressed data. +/// A gzip file consists of a series of *members* concatenated one after another. +/// MultiGzDecoder decodes all members of a file and returns Ok(0) once the +/// underlying reader does. /// -/// This structure exposes a [`Read`] interface that will consume all gzip members -/// from the underlying reader and emit uncompressed data. +/// To handle members seperately, see [GzDecoder] or read more +/// [in the introduction](../index.html#about-multi-member-gzip-files). /// -/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html +/// [gzip file]: https://www.rfc-editor.org/rfc/rfc1952#page-5 /// /// # Examples /// @@ -276,3 +295,84 @@ self.get_mut().flush() } } + +#[cfg(test)] +mod tests { + use std::io::{Cursor, ErrorKind, Read, Result, Write}; + + use super::GzDecoder; + + //a cursor turning EOF into blocking errors + #[derive(Debug)] + pub struct BlockingCursor { + pub cursor: Cursor>, + } + + impl BlockingCursor { + pub fn new() -> BlockingCursor { + BlockingCursor { + cursor: Cursor::new(Vec::new()), + } + } + + pub fn set_position(&mut self, pos: u64) { + return self.cursor.set_position(pos); + } + } + + impl Write for BlockingCursor { + fn write(&mut self, buf: &[u8]) -> Result { + return self.cursor.write(buf); + } + fn flush(&mut self) -> Result<()> { + return self.cursor.flush(); + } + } + + impl Read for BlockingCursor { + fn read(&mut self, buf: &mut [u8]) -> Result { + //use the cursor, except it turns eof into blocking error + let r = self.cursor.read(buf); + match r { + Err(ref err) => { + if err.kind() == ErrorKind::UnexpectedEof { + return Err(ErrorKind::WouldBlock.into()); + } + } + Ok(0) => { + //regular EOF turned into blocking error + return Err(ErrorKind::WouldBlock.into()); + } + Ok(_n) => {} + } + return r; + } + } + + #[test] + fn blocked_partial_header_read() { + // this is a reader which receives data afterwards + let mut r = BlockingCursor::new(); + let data = vec![1, 2, 3]; + + match r.write_all(&data) { + Ok(()) => {} + _ => { + panic!("Unexpected result for write_all"); + } + } + r.set_position(0); + + // this is unused except for the buffering + let mut decoder = GzDecoder::new(r); + let mut out = Vec::with_capacity(7); + match decoder.read(&mut out) { + Err(e) => { + assert_eq!(e.kind(), ErrorKind::WouldBlock); + } + _ => { + panic!("Unexpected result for decoder.read"); + } + } + } +} diff -Nru temporalio-1.3.0/vendor/flate2/src/gz/write.rs temporalio-1.3.0/vendor/flate2/src/gz/write.rs --- temporalio-1.3.0/vendor/flate2/src/gz/write.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/flate2/src/gz/write.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,8 +2,7 @@ use std::io; use std::io::prelude::*; -use super::bufread::{corrupt, read_gz_header}; -use super::{GzBuilder, GzHeader}; +use super::{corrupt, GzBuilder, GzHeader, GzHeaderParser}; use crate::crc::{Crc, CrcWriter}; use crate::zio; use crate::{Compress, Compression, Decompress, Status}; @@ -167,11 +166,20 @@ } } -/// A gzip streaming decoder +/// A decoder for a single member of a [gzip file]. /// -/// This structure exposes a [`Write`] interface that will emit uncompressed data -/// to the underlying writer `W`. +/// This structure exposes a [`Write`] interface, receiving compressed data and +/// writing uncompressed data to the underlying writer. +/// +/// After decoding a single member of the gzip data this writer will return the number of bytes up to +/// to the end of the gzip member and subsequent writes will return Ok(0) allowing the caller to +/// handle any data following the gzip member. +/// +/// To handle gzip files that may have multiple members, see [`MultiGzDecoder`] +/// or read more +/// [in the introduction](../index.html#about-multi-member-gzip-files). /// +/// [gzip file]: https://www.rfc-editor.org/rfc/rfc1952#page-5 /// [`Write`]: https://doc.rust-lang.org/std/io/trait.Write.html /// /// # Examples @@ -203,8 +211,7 @@ pub struct GzDecoder { inner: zio::Writer, Decompress>, crc_bytes: Vec, - header: Option, - header_buf: Vec, + header_parser: GzHeaderParser, } const CRC_BYTES_LEN: usize = 8; @@ -218,14 +225,13 @@ GzDecoder { inner: zio::Writer::new(CrcWriter::new(w), Decompress::new(false)), crc_bytes: Vec::with_capacity(CRC_BYTES_LEN), - header: None, - header_buf: Vec::new(), + header_parser: GzHeaderParser::new(), } } /// Returns the header associated with this stream. pub fn header(&self) -> Option<&GzHeader> { - self.header.as_ref() + self.header_parser.header() } /// Acquires a reference to the underlying writer. @@ -306,47 +312,24 @@ } } -struct Counter { - inner: T, - pos: usize, -} - -impl Read for Counter { - fn read(&mut self, buf: &mut [u8]) -> io::Result { - let pos = self.inner.read(buf)?; - self.pos += pos; - Ok(pos) - } -} - impl Write for GzDecoder { - fn write(&mut self, buf: &[u8]) -> io::Result { - if self.header.is_none() { - // trying to avoid buffer usage - let (res, pos) = { - let mut counter = Counter { - inner: self.header_buf.chain(buf), - pos: 0, - }; - let res = read_gz_header(&mut counter); - (res, counter.pos) - }; - - match res { + fn write(&mut self, mut buf: &[u8]) -> io::Result { + let buflen = buf.len(); + if self.header().is_none() { + match self.header_parser.parse(&mut buf) { Err(err) => { if err.kind() == io::ErrorKind::UnexpectedEof { - // not enough data for header, save to the buffer - self.header_buf.extend(buf); - Ok(buf.len()) + // all data read but header still not complete + Ok(buflen) } else { Err(err) } } - Ok(header) => { - self.header = Some(header); - let pos = pos - self.header_buf.len(); - self.header_buf.truncate(0); - Ok(pos) + Ok(_) => { + debug_assert!(self.header().is_some()); + // buf now contains the unread part of the original buf + let n = buflen - buf.len(); + Ok(n) } } } else { @@ -373,17 +356,19 @@ } } -/// A gzip streaming decoder that decodes all members of a multistream +/// A gzip streaming decoder that decodes a [gzip file] with multiple members. +/// +/// This structure exposes a [`Write`] interface that will consume compressed data and +/// write uncompressed data to the underlying writer. +/// +/// A gzip file consists of a series of *members* concatenated one after another. +/// `MultiGzDecoder` decodes all members of a file and writes them to the +/// underlying writer one after another. /// -/// A gzip member consists of a header, compressed data and a trailer. The [gzip -/// specification](https://tools.ietf.org/html/rfc1952), however, allows multiple -/// gzip members to be joined in a single stream. `MultiGzDecoder` will -/// decode all consecutive members while `GzDecoder` will only decompress -/// the first gzip member. The multistream format is commonly used in -/// bioinformatics, for example when using the BGZF compressed data. +/// To handle members separately, see [GzDecoder] or read more +/// [in the introduction](../index.html#about-multi-member-gzip-files). /// -/// This structure exposes a [`Write`] interface that will consume all gzip members -/// from the written buffers and write uncompressed data to the writer. +/// [gzip file]: https://www.rfc-editor.org/rfc/rfc1952#page-5 #[derive(Debug)] pub struct MultiGzDecoder { inner: GzDecoder, @@ -524,6 +509,56 @@ } #[test] + fn decode_writer_partial_header_filename() { + let filename = "test.txt"; + let mut e = GzBuilder::new() + .filename(filename) + .read(STR.as_bytes(), Compression::default()); + let mut bytes = Vec::new(); + e.read_to_end(&mut bytes).unwrap(); + + let mut writer = Vec::new(); + let mut decoder = GzDecoder::new(writer); + assert_eq!(decoder.write(&bytes[..12]).unwrap(), 12); + let n = decoder.write(&bytes[12..]).unwrap(); + if n < bytes.len() - 12 { + decoder.write(&bytes[n + 12..]).unwrap(); + } + assert_eq!( + decoder.header().unwrap().filename().unwrap(), + filename.as_bytes() + ); + writer = decoder.finish().unwrap(); + let return_string = String::from_utf8(writer).expect("String parsing error"); + assert_eq!(return_string, STR); + } + + #[test] + fn decode_writer_partial_header_comment() { + let comment = "test comment"; + let mut e = GzBuilder::new() + .comment(comment) + .read(STR.as_bytes(), Compression::default()); + let mut bytes = Vec::new(); + e.read_to_end(&mut bytes).unwrap(); + + let mut writer = Vec::new(); + let mut decoder = GzDecoder::new(writer); + assert_eq!(decoder.write(&bytes[..12]).unwrap(), 12); + let n = decoder.write(&bytes[12..]).unwrap(); + if n < bytes.len() - 12 { + decoder.write(&bytes[n + 12..]).unwrap(); + } + assert_eq!( + decoder.header().unwrap().comment().unwrap(), + comment.as_bytes() + ); + writer = decoder.finish().unwrap(); + let return_string = String::from_utf8(writer).expect("String parsing error"); + assert_eq!(return_string, STR); + } + + #[test] fn decode_writer_exact_header() { let mut e = GzEncoder::new(Vec::new(), Compression::default()); e.write(STR.as_ref()).unwrap(); @@ -575,4 +610,32 @@ let expected = STR.repeat(2); assert_eq!(return_string, expected); } + + // GzDecoder consumes one gzip member and then returns 0 for subsequent writes, allowing any + // additional data to be consumed by the caller. + #[test] + fn decode_extra_data() { + let compressed = { + let mut e = GzEncoder::new(Vec::new(), Compression::default()); + e.write(STR.as_ref()).unwrap(); + let mut b = e.finish().unwrap(); + b.push(b'x'); + b + }; + + let mut writer = Vec::new(); + let mut decoder = GzDecoder::new(writer); + let mut consumed_bytes = 0; + loop { + let n = decoder.write(&compressed[consumed_bytes..]).unwrap(); + if n == 0 { + break; + } + consumed_bytes += n; + } + writer = decoder.finish().unwrap(); + let actual = String::from_utf8(writer).expect("String parsing error"); + assert_eq!(actual, STR); + assert_eq!(&compressed[consumed_bytes..], b"x"); + } } diff -Nru temporalio-1.3.0/vendor/flate2/src/lib.rs temporalio-1.3.0/vendor/flate2/src/lib.rs --- temporalio-1.3.0/vendor/flate2/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/flate2/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -65,12 +65,30 @@ //! `Write` trait if `T: Write`. That is, the "dual trait" is forwarded directly //! to the underlying object if available. //! +//! # About multi-member Gzip files +//! +//! While most `gzip` files one encounters will have a single *member* that can be read +//! with the [`GzDecoder`], there may be some files which have multiple members. +//! +//! A [`GzDecoder`] will only read the first member of gzip data, which may unexpectedly +//! provide partial results when a multi-member gzip file is encountered. `GzDecoder` is appropriate +//! for data that is designed to be read as single members from a multi-member file. `bufread::GzDecoder` +//! and `write::GzDecoder` also allow non-gzip data following gzip data to be handled. +//! +//! The [`MultiGzDecoder`] on the other hand will decode all members of a `gzip` file +//! into one consecutive stream of bytes, which hides the underlying *members* entirely. +//! If a file contains contains non-gzip data after the gzip data, MultiGzDecoder will +//! emit an error after decoding the gzip data. This behavior matches the `gzip`, +//! `gunzip`, and `zcat` command line tools. +//! //! [`read`]: read/index.html //! [`bufread`]: bufread/index.html //! [`write`]: write/index.html //! [read]: https://doc.rust-lang.org/std/io/trait.Read.html //! [write]: https://doc.rust-lang.org/std/io/trait.Write.html //! [bufread]: https://doc.rust-lang.org/std/io/trait.BufRead.html +//! [`GzDecoder`]: read/struct.GzDecoder.html +//! [`MultiGzDecoder`]: read/struct.MultiGzDecoder.html #![doc(html_root_url = "https://docs.rs/flate2/0.2")] #![deny(missing_docs)] #![deny(missing_debug_implementations)] @@ -78,6 +96,9 @@ #![cfg_attr(test, deny(warnings))] #![cfg_attr(docsrs, feature(doc_auto_cfg))] +#[cfg(not(feature = "any_impl",))] +compile_error!("You need to choose a zlib backend"); + pub use crate::crc::{Crc, CrcReader, CrcWriter}; pub use crate::gz::GzBuilder; pub use crate::gz::GzHeader; @@ -96,7 +117,14 @@ /// Types which operate over [`Read`] streams, both encoders and decoders for /// various formats. /// +/// Note that the `read` decoder types may read past the end of the compressed +/// data while decoding. If the caller requires subsequent reads to start +/// immediately following the compressed data wrap the `Read` type in a +/// [`BufReader`] and use the `BufReader` with the equivalent decoder from the +/// `bufread` module and also for the subsequent reads. +/// /// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html +/// [`BufReader`]: https://doc.rust-lang.org/std/io/struct.BufReader.html pub mod read { pub use crate::deflate::read::DeflateDecoder; pub use crate::deflate::read::DeflateEncoder; @@ -154,7 +182,7 @@ } /// When compressing data, the compression level can be specified by a value in -/// this enum. +/// this struct. #[derive(Copy, Clone, PartialEq, Eq, Debug)] pub struct Compression(u32); diff -Nru temporalio-1.3.0/vendor/flate2/src/zlib/bufread.rs temporalio-1.3.0/vendor/flate2/src/zlib/bufread.rs --- temporalio-1.3.0/vendor/flate2/src/zlib/bufread.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/flate2/src/zlib/bufread.rs 2023-10-30 19:40:00.000000000 +0000 @@ -47,6 +47,15 @@ data: Compress::new(level, true), } } + + /// Creates a new encoder with the given `compression` settings which will + /// read uncompressed data from the given stream `r` and emit the compressed stream. + pub fn new_with_compress(r: R, compression: Compress) -> ZlibEncoder { + ZlibEncoder { + obj: r, + data: compression, + } + } } pub fn reset_encoder_data(zlib: &mut ZlibEncoder) { @@ -165,6 +174,15 @@ data: Decompress::new(true), } } + + /// Creates a new decoder which will decompress data read from the given + /// stream, using the given `decompression` settings. + pub fn new_with_decompress(r: R, decompression: Decompress) -> ZlibDecoder { + ZlibDecoder { + obj: r, + data: decompression, + } + } } pub fn reset_decoder_data(zlib: &mut ZlibDecoder) { diff -Nru temporalio-1.3.0/vendor/flate2/src/zlib/read.rs temporalio-1.3.0/vendor/flate2/src/zlib/read.rs --- temporalio-1.3.0/vendor/flate2/src/zlib/read.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/flate2/src/zlib/read.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,6 +3,7 @@ use super::bufread; use crate::bufreader::BufReader; +use crate::Decompress; /// A ZLIB encoder, or compressor. /// @@ -24,9 +25,9 @@ /// # fn open_hello_world() -> std::io::Result> { /// let f = File::open("examples/hello_world.txt")?; /// let mut z = ZlibEncoder::new(f, Compression::fast()); -/// let mut buffer = [0;50]; -/// let byte_count = z.read(&mut buffer)?; -/// # Ok(buffer[0..byte_count].to_vec()) +/// let mut buffer = Vec::new(); +/// z.read_to_end(&mut buffer)?; +/// # Ok(buffer) /// # } /// ``` #[derive(Debug)] @@ -42,6 +43,14 @@ inner: bufread::ZlibEncoder::new(BufReader::new(r), level), } } + + /// Creates a new encoder with the given `compression` settings which will + /// read uncompressed data from the given stream `r` and emit the compressed stream. + pub fn new_with_compress(r: R, compression: crate::Compress) -> ZlibEncoder { + ZlibEncoder { + inner: bufread::ZlibEncoder::new_with_compress(BufReader::new(r), compression), + } + } } impl ZlibEncoder { @@ -160,7 +169,8 @@ ZlibDecoder::new_with_buf(r, vec![0; 32 * 1024]) } - /// Same as `new`, but the intermediate buffer for data is specified. + /// Creates a new decoder which will decompress data read from the given + /// stream `r`, using `buf` as backing to speed up reading. /// /// Note that the specified buffer will only be used up to its current /// length. The buffer's capacity will also not grow over time. @@ -169,6 +179,31 @@ inner: bufread::ZlibDecoder::new(BufReader::with_buf(buf, r)), } } + + /// Creates a new decoder which will decompress data read from the given + /// stream `r`, along with `decompression` settings. + pub fn new_with_decompress(r: R, decompression: Decompress) -> ZlibDecoder { + ZlibDecoder::new_with_decompress_and_buf(r, vec![0; 32 * 1024], decompression) + } + + /// Creates a new decoder which will decompress data read from the given + /// stream `r`, using `buf` as backing to speed up reading, + /// along with `decompression` settings to configure decoder. + /// + /// Note that the specified buffer will only be used up to its current + /// length. The buffer's capacity will also not grow over time. + pub fn new_with_decompress_and_buf( + r: R, + buf: Vec, + decompression: Decompress, + ) -> ZlibDecoder { + ZlibDecoder { + inner: bufread::ZlibDecoder::new_with_decompress( + BufReader::with_buf(buf, r), + decompression, + ), + } + } } impl ZlibDecoder { diff -Nru temporalio-1.3.0/vendor/flate2/src/zlib/write.rs temporalio-1.3.0/vendor/flate2/src/zlib/write.rs --- temporalio-1.3.0/vendor/flate2/src/zlib/write.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/flate2/src/zlib/write.rs 2023-10-30 19:40:00.000000000 +0000 @@ -44,6 +44,14 @@ } } + /// Creates a new encoder which will write compressed data to the stream + /// `w` with the given `compression` settings. + pub fn new_with_compress(w: W, compression: Compress) -> ZlibEncoder { + ZlibEncoder { + inner: zio::Writer::new(w, compression), + } + } + /// Acquires a reference to the underlying writer. pub fn get_ref(&self) -> &W { self.inner.get_ref() @@ -218,6 +226,17 @@ } } + /// Creates a new decoder which will write uncompressed data to the stream `w` + /// using the given `decompression` settings. + /// + /// When this decoder is dropped or unwrapped the final pieces of data will + /// be flushed. + pub fn new_with_decompress(w: W, decompression: Decompress) -> ZlibDecoder { + ZlibDecoder { + inner: zio::Writer::new(w, decompression), + } + } + /// Acquires a reference to the underlying writer. pub fn get_ref(&self) -> &W { self.inner.get_ref() diff -Nru temporalio-1.3.0/vendor/gimli/.cargo-checksum.json temporalio-1.3.0/vendor/gimli/.cargo-checksum.json --- temporalio-1.3.0/vendor/gimli/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"1a3bd52a9c3f44f666787871bec160ebadd772ab25d472e8d9376ad0969fc70a","Cargo.lock":"fd085a0a3e1dfd99006465774994ef2a88587e2c96e6543d71a7c726008f9173","Cargo.toml":"d3863fc0eda244e97dd9ab8fce46c0c4f0d45793c5f5a1889b20c7f9a14b7b74","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0","README.md":"42f2f045fc8e92ba5b7125952aff2529ae7f058f8b19743b5860d4e561246d17","examples/dwarf-validate.rs":"4aac1045e3c08bf00878eeff75c0cfc30c06171c5eab2e71d757505786729687","examples/dwarfdump.rs":"1b79ad61a2d3a3f30895208b1c4e72ec97c83c9bda3c31feeaf2f72c52e3b0d6","examples/simple.rs":"4c3425e8bd1880d9522f5ed2581fb5ccd452d4be678eebc0e147c48722a7be1d","examples/simple_line.rs":"ac795f859a17650dde466b5b23b8c161b2e3b8eb57e32f5b6718a3072f6bfad0","src/arch.rs":"3a9b44d51a770b83e19c5420c7a6c090cf895fe668cbecea4e3c20acdfef871c","src/common.rs":"227d13db91b65d49b1b2d22033eb8374521731a50a7210ceb0ef49194a5d545c","src/constants.rs":"ac68a8c385842c5014d68be71803aa735d4bd4a4a4817dac4f54c782a65dedea","src/endianity.rs":"1f7e62ae34f540c06bedf1e7948739211556eea7dd83731a5ca52c7d687ed0fc","src/leb128.rs":"996d5c79d027f97c010ca487bc4ff5f8265f4b9e63d62b4e4fa291383c259ee9","src/lib.rs":"fa06aa7416971a6349c6a39af74e59acc885ba37ba46082259a53313f64798fa","src/read/abbrev.rs":"31f7e9544a30e35f49dca355981730c2eb145e55ddbf281161d842a566d0a88d","src/read/addr.rs":"f63f289edf889e87107bb2090fb1c50b48af7015f31b7c39c3d6ea09630a38e9","src/read/aranges.rs":"ba3302f87cffb7ee15f48b0530ebd707f45ad056934223078d25ae2a1b034f1c","src/read/cfi.rs":"85cb294cf6a932d31769a747c58d1767b83e64831d8c633ab0b517014fe1cdec","src/read/dwarf.rs":"bac3f10a4f813833cf337361dd13d7e9bcb177355488ec785e901c5369e12daf","src/read/endian_reader.rs":"320983a859c2bb0dd44a3e6fae55ff0a84dba3fa80c2edbc64aa8135c44eddf0","src/read/endian_slice.rs":"0ca18c1c89caa154281dbdfbdcf07c91874bdc17090b8f338c80412416a24dc5","src/read/index.rs":"e79b8d591b8e2007a37f5ea85a6d71b69d56ca3739a85cf7bf361724c5b829fa","src/read/lazy.rs":"85642e886ab3a94cea53534d1e133d1c4c17d2deaf291facdc316507e499ce22","src/read/line.rs":"f15196fa61955c40dfdd50f9034667143ab8d58efd8a51469ff7100c8c61f0be","src/read/lists.rs":"67ca9e1a36a91feb4996d035211de845205212bfda02163685d217818567ff93","src/read/loclists.rs":"857701a9e86aee809bfca3fd661e283b4f05038764dfc9c3cb1a349acc00bc47","src/read/lookup.rs":"0cf89ba12b9d48b1fe035dd3a497730323acb9427a9457abbc2f7c58c4c71165","src/read/mod.rs":"2d537e3c8dedc9b2096d27641d86edd598b51b4c26f476f8bc65e6eba5303acb","src/read/op.rs":"a7502462986453d773c28cd4a34d344738e58348290445792c60a8a29cb0857c","src/read/pubnames.rs":"ed752ee1a7017e6d3be42d81e4ddaaac960ef08081463a19106c9f041526d4a3","src/read/pubtypes.rs":"5e75b32c0923e827aff0bb2db456797a0e8d38ba46be992558a7990b3196bcf5","src/read/reader.rs":"3e8ce504b651e14b839ef63c080c705ba7aef956ac2c7a74e298c015b791e2d2","src/read/rnglists.rs":"4ec166e73fdfc85efa97b3b005b514bb64d454edb1ba0f201c45df4f2127e745","src/read/str.rs":"4c2f50014451621fea45969cd313f6840fcd3a99d7a2d081bfa1f8e0e434133a","src/read/unit.rs":"4e8af3c654faf8dc42b8bc62edf2f2402c6b42b31889662b0b48753c08b9893a","src/read/util.rs":"40f07a7b6623f29d03e15e41cda625a613ab1973969a4ddbb42365a8550b7e79","src/read/value.rs":"5ce8ef633f5af47bd367a5e4cde2c71bcef297c91a8d567192e460c890aef6de","src/test_util.rs":"291eefa6b51c6d934ba2f4a4c9bc7c403046fc1cccf4d43487820f0154bb89e2","src/write/abbrev.rs":"fa02163389e92e804d139cf84f833ab6af932083f0eb2d74464b4a70bd3237ff","src/write/cfi.rs":"3b04b0ebd82363738199cc673f64e0ceb60506a67c4f18b435a109caa62840f3","src/write/dwarf.rs":"8a1a0893e31134ad68993994594f3024ad0c8af7c1188b29e0ffc26b42edef21","src/write/endian_vec.rs":"1d5811986648816a677580b22630f5059757a381487d73e9adbb3008c9ae0c58","src/write/line.rs":"73bf3bab57433fe1dc891c48303cbc4e482306a1b9425f3483ad2985a9676ee9","src/write/loc.rs":"5c1f8d97d8e871a6663ad704f5e15694bddd54b85f2d801b52a520522f1258fd","src/write/mod.rs":"d8aa1da854cdee629d470d00d87e00dc6998e4bec1ca951f8d2f277730ab9d69","src/write/op.rs":"08fec7613aaa9061aae6e31d8b49933c812a6b7609f69e611a2a953af09aa18a","src/write/range.rs":"259e21e32bebbf7cdd8027d401862dee95cb5111e45bc4ff30bf54e3306d0262","src/write/section.rs":"effefef0d5e4557cb099431a20a7304392e6bf4ce04941d72b8bd2df9100e297","src/write/str.rs":"4850cc2fee55980f9cbb6b4169f9861ab9d05c2b28a85c2b790480b83a66f514","src/write/unit.rs":"4a96a5f302b3bdf03faf3ff404bbcbed60d295080853ab8dabff5efa53f9ba37","src/write/writer.rs":"7d5dd07b82ec3becebb060c106d4ea697cbd8b9b64a5de78403511a5244e08b1"},"package":"b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e"} \ No newline at end of file +{"files":{"CHANGELOG.md":"c4ed38f2fcbc511dfe7631a79d7fb154c782eac0dd8f1d390846ba257bcf66c7","Cargo.toml":"b5b1c07a6bd1b719ab1d79742fb6e5c83e23e41ea44c269a86cf47b368b7743c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0","README.md":"ca364ea6f4977f61d45064f656a3ed08a2dda69056a0f573c8e7b9d5bf45a510","src/arch.rs":"8c97cee9a199e0b3b9453e69517a6302ca582481406bdbc36dfc8a7d8506071f","src/common.rs":"301ec88e624ea0ab28a0b4c6819712feacc2886a3640b159f1a8b7eb007ac634","src/constants.rs":"cf37acb6703a3f7cbb5b26467721560a074a03f2a8dfd1a6104d916cb5255117","src/endianity.rs":"1f7e62ae34f540c06bedf1e7948739211556eea7dd83731a5ca52c7d687ed0fc","src/leb128.rs":"996d5c79d027f97c010ca487bc4ff5f8265f4b9e63d62b4e4fa291383c259ee9","src/lib.rs":"0dd6cff2e1fa56a79188b3b83c738b747af3288ef37f5e867e2a53971190818c","src/read/abbrev.rs":"31f7e9544a30e35f49dca355981730c2eb145e55ddbf281161d842a566d0a88d","src/read/addr.rs":"f63f289edf889e87107bb2090fb1c50b48af7015f31b7c39c3d6ea09630a38e9","src/read/aranges.rs":"ba3302f87cffb7ee15f48b0530ebd707f45ad056934223078d25ae2a1b034f1c","src/read/cfi.rs":"6eccbb361753bf2a68a647c100c1f5e29d8b3e5171a2cf1e4c6cdc3ba1ca4586","src/read/dwarf.rs":"bac3f10a4f813833cf337361dd13d7e9bcb177355488ec785e901c5369e12daf","src/read/endian_reader.rs":"320983a859c2bb0dd44a3e6fae55ff0a84dba3fa80c2edbc64aa8135c44eddf0","src/read/endian_slice.rs":"9163375a1d6403cd91b7b665ed42306252500c15d104c75a824c0b7a635ac7be","src/read/index.rs":"e79b8d591b8e2007a37f5ea85a6d71b69d56ca3739a85cf7bf361724c5b829fa","src/read/lazy.rs":"85642e886ab3a94cea53534d1e133d1c4c17d2deaf291facdc316507e499ce22","src/read/line.rs":"19d38cbd27645885c59c41f7b8e7a509e0be1d701e4b30be13780744384c674b","src/read/lists.rs":"67ca9e1a36a91feb4996d035211de845205212bfda02163685d217818567ff93","src/read/loclists.rs":"857701a9e86aee809bfca3fd661e283b4f05038764dfc9c3cb1a349acc00bc47","src/read/lookup.rs":"0cf89ba12b9d48b1fe035dd3a497730323acb9427a9457abbc2f7c58c4c71165","src/read/mod.rs":"45b203294b007cd5184a5b0d65facf8549461dacc0cf928f05b3fe3c479046e0","src/read/op.rs":"a7502462986453d773c28cd4a34d344738e58348290445792c60a8a29cb0857c","src/read/pubnames.rs":"ed752ee1a7017e6d3be42d81e4ddaaac960ef08081463a19106c9f041526d4a3","src/read/pubtypes.rs":"5e75b32c0923e827aff0bb2db456797a0e8d38ba46be992558a7990b3196bcf5","src/read/reader.rs":"3e8ce504b651e14b839ef63c080c705ba7aef956ac2c7a74e298c015b791e2d2","src/read/rnglists.rs":"4ec166e73fdfc85efa97b3b005b514bb64d454edb1ba0f201c45df4f2127e745","src/read/str.rs":"4c2f50014451621fea45969cd313f6840fcd3a99d7a2d081bfa1f8e0e434133a","src/read/unit.rs":"60ecb8099d9386d85119b45ab92d628f3d3409b04669489b76e732d338b27f65","src/read/util.rs":"40f07a7b6623f29d03e15e41cda625a613ab1973969a4ddbb42365a8550b7e79","src/read/value.rs":"5ce8ef633f5af47bd367a5e4cde2c71bcef297c91a8d567192e460c890aef6de","src/test_util.rs":"291eefa6b51c6d934ba2f4a4c9bc7c403046fc1cccf4d43487820f0154bb89e2","src/write/abbrev.rs":"fa02163389e92e804d139cf84f833ab6af932083f0eb2d74464b4a70bd3237ff","src/write/cfi.rs":"e274b8b28f4e58c49ce530a5c630a26c6074be12f0faffed09709b700748afd7","src/write/dwarf.rs":"8a1a0893e31134ad68993994594f3024ad0c8af7c1188b29e0ffc26b42edef21","src/write/endian_vec.rs":"1d5811986648816a677580b22630f5059757a381487d73e9adbb3008c9ae0c58","src/write/line.rs":"73bf3bab57433fe1dc891c48303cbc4e482306a1b9425f3483ad2985a9676ee9","src/write/loc.rs":"5c1f8d97d8e871a6663ad704f5e15694bddd54b85f2d801b52a520522f1258fd","src/write/mod.rs":"d8aa1da854cdee629d470d00d87e00dc6998e4bec1ca951f8d2f277730ab9d69","src/write/op.rs":"08fec7613aaa9061aae6e31d8b49933c812a6b7609f69e611a2a953af09aa18a","src/write/range.rs":"259e21e32bebbf7cdd8027d401862dee95cb5111e45bc4ff30bf54e3306d0262","src/write/section.rs":"effefef0d5e4557cb099431a20a7304392e6bf4ce04941d72b8bd2df9100e297","src/write/str.rs":"4850cc2fee55980f9cbb6b4169f9861ab9d05c2b28a85c2b790480b83a66f514","src/write/unit.rs":"4a96a5f302b3bdf03faf3ff404bbcbed60d295080853ab8dabff5efa53f9ba37","src/write/writer.rs":"7d5dd07b82ec3becebb060c106d4ea697cbd8b9b64a5de78403511a5244e08b1"},"package":"6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/gimli/Cargo.lock temporalio-1.3.0/vendor/gimli/Cargo.lock --- temporalio-1.3.0/vendor/gimli/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/Cargo.lock 1970-01-01 00:00:00.000000000 +0000 @@ -1,345 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "aho-corasick" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" -dependencies = [ - "memchr", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "compiler_builtins" -version = "0.1.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76630810d973ecea3dbf611e1b7aecfb1012751ef1ff8de3998f89014a166781" - -[[package]] -name = "crc32fast" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" -dependencies = [ - "cfg-if", - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-epoch", - "crossbeam-queue", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" -dependencies = [ - "cfg-if", - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" -dependencies = [ - "autocfg", - "cfg-if", - "crossbeam-utils", - "memoffset", - "scopeguard", -] - -[[package]] -name = "crossbeam-queue" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "either" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" - -[[package]] -name = "fallible-iterator" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" - -[[package]] -name = "flate2" -version = "1.0.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "getopts" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "gimli" -version = "0.27.3" -dependencies = [ - "compiler_builtins", - "crossbeam", - "fallible-iterator", - "getopts", - "indexmap", - "memmap2", - "num_cpus", - "object", - "rayon", - "regex", - "rustc-std-workspace-alloc", - "rustc-std-workspace-core", - "stable_deref_trait", - "test-assembler", - "typed-arena", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown", -] - -[[package]] -name = "libc" -version = "0.2.146" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" - -[[package]] -name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "memmap2" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d28bba84adfe6646737845bc5ebbfa2c08424eb1c37e94a1fd2a82adb56a872" -dependencies = [ - "libc", -] - -[[package]] -name = "memoffset" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] - -[[package]] -name = "miniz_oxide" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" -dependencies = [ - "adler", -] - -[[package]] -name = "num_cpus" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "object" -version = "0.30.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385" -dependencies = [ - "flate2", - "memchr", - "wasmparser", -] - -[[package]] -name = "rayon" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" -dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-utils", - "num_cpus", -] - -[[package]] -name = "regex" -version = "1.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" - -[[package]] -name = "rustc-std-workspace-alloc" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff66d57013a5686e1917ed6a025d54dd591fcda71a41fe07edf4d16726aefa86" - -[[package]] -name = "rustc-std-workspace-core" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1956f5517128a2b6f23ab2dadf1a976f4f5b27962e7724c2bf3d45e539ec098c" - -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "test-assembler" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a6da51de149453f5c43fa67d5e73cccd75b3c5727a38a2f18c5f3c47f2db582" -dependencies = [ - "byteorder", -] - -[[package]] -name = "typed-arena" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" - -[[package]] -name = "unicode-width" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" - -[[package]] -name = "wasmparser" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32fddd575d477c6e9702484139cf9f23dcd554b06d185ed0f56c857dd3a47aa6" diff -Nru temporalio-1.3.0/vendor/gimli/Cargo.toml temporalio-1.3.0/vendor/gimli/Cargo.toml --- temporalio-1.3.0/vendor/gimli/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,12 +11,12 @@ [package] edition = "2018" +rust-version = "1.60" name = "gimli" -version = "0.27.3" +version = "0.28.0" include = [ "/CHANGELOG.md", "/Cargo.toml", - "/examples", "/LICENSE-APACHE", "/LICENSE-MIT", "/README.md", @@ -38,6 +38,7 @@ ] license = "MIT OR Apache-2.0" repository = "https://github.com/gimli-rs/gimli" +resolver = "2" [profile.bench] codegen-units = 1 @@ -47,28 +48,6 @@ [profile.test] split-debuginfo = "packed" -[[example]] -name = "simple" -required-features = ["read"] - -[[example]] -name = "simple_line" -required-features = ["read"] - -[[example]] -name = "dwarfdump" -required-features = [ - "read", - "std", -] - -[[example]] -name = "dwarf-validate" -required-features = [ - "read", - "std", -] - [dependencies.alloc] version = "1.0.0" optional = true @@ -84,12 +63,12 @@ package = "rustc-std-workspace-core" [dependencies.fallible-iterator] -version = "0.2.0" +version = "0.3.0" optional = true default-features = false [dependencies.indexmap] -version = "1.0.2" +version = "2.0.0" optional = true [dependencies.stable_deref_trait] @@ -97,55 +76,34 @@ optional = true default-features = false -[dev-dependencies.crossbeam] -version = "0.8" - -[dev-dependencies.getopts] -version = "0.2" - -[dev-dependencies.memmap2] -version = "0.6.1" - -[dev-dependencies.num_cpus] -version = "1" - -[dev-dependencies.object] -version = "0.30.0" -features = ["wasm"] - -[dev-dependencies.rayon] -version = "1.0" - -[dev-dependencies.regex] -version = "1" - [dev-dependencies.test-assembler] version = "0.1.3" -[dev-dependencies.typed-arena] -version = "2" - [features] default = [ - "read", + "read-all", "write", - "std", - "fallible-iterator", - "endian-reader", ] endian-reader = [ "read", - "stable_deref_trait", + "dep:stable_deref_trait", ] +fallible-iterator = ["dep:fallible-iterator"] read = ["read-core"] +read-all = [ + "read", + "std", + "fallible-iterator", + "endian-reader", +] read-core = [] rustc-dep-of-std = [ - "core", - "alloc", - "compiler_builtins", + "dep:core", + "dep:alloc", + "dep:compiler_builtins", ] std = [ - "fallible-iterator/std", - "stable_deref_trait/std", + "fallible-iterator?/std", + "stable_deref_trait?/std", ] -write = ["indexmap"] +write = ["dep:indexmap"] diff -Nru temporalio-1.3.0/vendor/gimli/CHANGELOG.md temporalio-1.3.0/vendor/gimli/CHANGELOG.md --- temporalio-1.3.0/vendor/gimli/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -2,6 +2,50 @@ -------------------------------------------------------------------------------- +## 0.28.0 + +Released 2023/08/12. + +### Breaking changes + +* Deleted `impl From for &[u8]`. Use `EndianSlice::slice` instead. + [#669](https://github.com/gimli-rs/gimli/pull/669) + +* Deleted `impl Index for EndianSlice` and + `impl Index> for EndianSlice`. + [#669](https://github.com/gimli-rs/gimli/pull/669) + +* Replaced `impl From for u64` with `Pointer::pointer`. + [#670](https://github.com/gimli-rs/gimli/pull/670) + +* Updated `fallible-iterator` to 0.3.0. + [#672](https://github.com/gimli-rs/gimli/pull/672) + +* Changed some optional dependencies to use the `dep:` feature syntax. + [#672](https://github.com/gimli-rs/gimli/pull/672) + +* Added `non_exhaustive` attribute to `read::RegisterRule`, + `read::CallFrameInstruction`, and `write::CallFrameInstruction`. + [#673](https://github.com/gimli-rs/gimli/pull/673) + +### Changed + +* The minimum supported rust version for the `read` feature and its dependencies + increased to 1.60.0. + +* The minimum supported rust version for other features increased to 1.65.0. + +### Added + +* Added `Vendor`, `read::DebugFrame::set_vendor`, and `read::EhFrame::set_vendor`. + [#673](https://github.com/gimli-rs/gimli/pull/673) + +* Added more ARM and AArch64 register definitions, and + `DW_CFA_AARCH64_negate_ra_state` support. + [#673](https://github.com/gimli-rs/gimli/pull/673) + +-------------------------------------------------------------------------------- + ## 0.27.3 Released 2023/06/14. diff -Nru temporalio-1.3.0/vendor/gimli/examples/dwarfdump.rs temporalio-1.3.0/vendor/gimli/examples/dwarfdump.rs --- temporalio-1.3.0/vendor/gimli/examples/dwarfdump.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/examples/dwarfdump.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,2369 +0,0 @@ -// Allow clippy lints when building without clippy. -#![allow(unknown_lints)] - -use fallible_iterator::FallibleIterator; -use gimli::{Section, UnitHeader, UnitOffset, UnitSectionOffset, UnitType, UnwindSection}; -use object::{Object, ObjectSection, ObjectSymbol}; -use regex::bytes::Regex; -use std::borrow::Cow; -use std::cmp::min; -use std::collections::HashMap; -use std::env; -use std::fmt::{self, Debug}; -use std::fs; -use std::io; -use std::io::{BufWriter, Write}; -use std::iter::Iterator; -use std::mem; -use std::process; -use std::result; -use std::sync::{Condvar, Mutex}; -use typed_arena::Arena; - -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum Error { - GimliError(gimli::Error), - ObjectError(object::read::Error), - IoError, -} - -impl fmt::Display for Error { - #[inline] - fn fmt(&self, f: &mut fmt::Formatter) -> ::std::result::Result<(), fmt::Error> { - Debug::fmt(self, f) - } -} - -fn writeln_error( - w: &mut W, - dwarf: &gimli::Dwarf, - err: Error, - msg: &str, -) -> io::Result<()> { - writeln!( - w, - "{}: {}", - msg, - match err { - Error::GimliError(err) => dwarf.format_error(err), - Error::ObjectError(err) => - format!("{}:{:?}", "An object error occurred while reading", err), - Error::IoError => "An I/O error occurred while writing.".to_string(), - } - ) -} - -impl From for Error { - fn from(err: gimli::Error) -> Self { - Error::GimliError(err) - } -} - -impl From for Error { - fn from(_: io::Error) -> Self { - Error::IoError - } -} - -impl From for Error { - fn from(err: object::read::Error) -> Self { - Error::ObjectError(err) - } -} - -pub type Result = result::Result; - -fn parallel_output(w: &mut W, max_workers: usize, iter: II, f: F) -> Result<()> -where - W: Write + Send, - F: Sync + Fn(II::Item, &mut Vec) -> Result<()>, - II: IntoIterator, - II::IntoIter: Send, -{ - struct ParallelOutputState { - iterator: I, - current_worker: usize, - result: Result<()>, - w: W, - } - - let state = Mutex::new(ParallelOutputState { - iterator: iter.into_iter().fuse(), - current_worker: 0, - result: Ok(()), - w, - }); - let workers = min(max_workers, num_cpus::get()); - let mut condvars = Vec::new(); - for _ in 0..workers { - condvars.push(Condvar::new()); - } - { - let state_ref = &state; - let f_ref = &f; - let condvars_ref = &condvars; - crossbeam::scope(|scope| { - for i in 0..workers { - scope.spawn(move |_| { - let mut v = Vec::new(); - let mut lock = state_ref.lock().unwrap(); - while lock.current_worker != i { - lock = condvars_ref[i].wait(lock).unwrap(); - } - loop { - let item = if lock.result.is_ok() { - lock.iterator.next() - } else { - None - }; - lock.current_worker = (i + 1) % workers; - condvars_ref[lock.current_worker].notify_one(); - mem::drop(lock); - - let ret = if let Some(item) = item { - v.clear(); - f_ref(item, &mut v) - } else { - return; - }; - - lock = state_ref.lock().unwrap(); - while lock.current_worker != i { - lock = condvars_ref[i].wait(lock).unwrap(); - } - if lock.result.is_ok() { - let ret2 = lock.w.write_all(&v); - if ret.is_err() { - lock.result = ret; - } else { - lock.result = ret2.map_err(Error::from); - } - } - } - }); - } - }) - .unwrap(); - } - state.into_inner().unwrap().result -} - -trait Reader: gimli::Reader + Send + Sync {} - -impl<'input, Endian> Reader for gimli::EndianSlice<'input, Endian> where - Endian: gimli::Endianity + Send + Sync -{ -} - -type RelocationMap = HashMap; - -fn add_relocations( - relocations: &mut RelocationMap, - file: &object::File, - section: &object::Section, -) { - for (offset64, mut relocation) in section.relocations() { - let offset = offset64 as usize; - if offset as u64 != offset64 { - continue; - } - let offset = offset as usize; - match relocation.kind() { - object::RelocationKind::Absolute => { - match relocation.target() { - object::RelocationTarget::Symbol(symbol_idx) => { - match file.symbol_by_index(symbol_idx) { - Ok(symbol) => { - let addend = - symbol.address().wrapping_add(relocation.addend() as u64); - relocation.set_addend(addend as i64); - } - Err(_) => { - eprintln!( - "Relocation with invalid symbol for section {} at offset 0x{:08x}", - section.name().unwrap(), - offset - ); - } - } - } - _ => {} - } - if relocations.insert(offset, relocation).is_some() { - eprintln!( - "Multiple relocations for section {} at offset 0x{:08x}", - section.name().unwrap(), - offset - ); - } - } - _ => { - eprintln!( - "Unsupported relocation for section {} at offset 0x{:08x}", - section.name().unwrap(), - offset - ); - } - } - } -} - -/// Apply relocations to addresses and offsets during parsing, -/// instead of requiring the data to be fully relocated prior -/// to parsing. -/// -/// Pros -/// - allows readonly buffers, we don't need to implement writing of values back to buffers -/// - potentially allows us to handle addresses and offsets differently -/// - potentially allows us to add metadata from the relocation (eg symbol names) -/// Cons -/// - maybe incomplete -#[derive(Debug, Clone)] -struct Relocate<'a, R: gimli::Reader> { - relocations: &'a RelocationMap, - section: R, - reader: R, -} - -impl<'a, R: gimli::Reader> Relocate<'a, R> { - fn relocate(&self, offset: usize, value: u64) -> u64 { - if let Some(relocation) = self.relocations.get(&offset) { - match relocation.kind() { - object::RelocationKind::Absolute => { - if relocation.has_implicit_addend() { - // Use the explicit addend too, because it may have the symbol value. - return value.wrapping_add(relocation.addend() as u64); - } else { - return relocation.addend() as u64; - } - } - _ => {} - } - }; - value - } -} - -impl<'a, R: gimli::Reader> gimli::Reader for Relocate<'a, R> { - type Endian = R::Endian; - type Offset = R::Offset; - - fn read_address(&mut self, address_size: u8) -> gimli::Result { - let offset = self.reader.offset_from(&self.section); - let value = self.reader.read_address(address_size)?; - Ok(self.relocate(offset, value)) - } - - fn read_length(&mut self, format: gimli::Format) -> gimli::Result { - let offset = self.reader.offset_from(&self.section); - let value = self.reader.read_length(format)?; - ::from_u64(self.relocate(offset, value as u64)) - } - - fn read_offset(&mut self, format: gimli::Format) -> gimli::Result { - let offset = self.reader.offset_from(&self.section); - let value = self.reader.read_offset(format)?; - ::from_u64(self.relocate(offset, value as u64)) - } - - fn read_sized_offset(&mut self, size: u8) -> gimli::Result { - let offset = self.reader.offset_from(&self.section); - let value = self.reader.read_sized_offset(size)?; - ::from_u64(self.relocate(offset, value as u64)) - } - - #[inline] - fn split(&mut self, len: Self::Offset) -> gimli::Result { - let mut other = self.clone(); - other.reader.truncate(len)?; - self.reader.skip(len)?; - Ok(other) - } - - // All remaining methods simply delegate to `self.reader`. - - #[inline] - fn endian(&self) -> Self::Endian { - self.reader.endian() - } - - #[inline] - fn len(&self) -> Self::Offset { - self.reader.len() - } - - #[inline] - fn empty(&mut self) { - self.reader.empty() - } - - #[inline] - fn truncate(&mut self, len: Self::Offset) -> gimli::Result<()> { - self.reader.truncate(len) - } - - #[inline] - fn offset_from(&self, base: &Self) -> Self::Offset { - self.reader.offset_from(&base.reader) - } - - #[inline] - fn offset_id(&self) -> gimli::ReaderOffsetId { - self.reader.offset_id() - } - - #[inline] - fn lookup_offset_id(&self, id: gimli::ReaderOffsetId) -> Option { - self.reader.lookup_offset_id(id) - } - - #[inline] - fn find(&self, byte: u8) -> gimli::Result { - self.reader.find(byte) - } - - #[inline] - fn skip(&mut self, len: Self::Offset) -> gimli::Result<()> { - self.reader.skip(len) - } - - #[inline] - fn to_slice(&self) -> gimli::Result> { - self.reader.to_slice() - } - - #[inline] - fn to_string(&self) -> gimli::Result> { - self.reader.to_string() - } - - #[inline] - fn to_string_lossy(&self) -> gimli::Result> { - self.reader.to_string_lossy() - } - - #[inline] - fn read_slice(&mut self, buf: &mut [u8]) -> gimli::Result<()> { - self.reader.read_slice(buf) - } -} - -impl<'a, R: Reader> Reader for Relocate<'a, R> {} - -#[derive(Default)] -struct Flags<'a> { - eh_frame: bool, - goff: bool, - info: bool, - line: bool, - pubnames: bool, - pubtypes: bool, - aranges: bool, - dwo: bool, - dwp: bool, - dwo_parent: Option>, - sup: Option>, - raw: bool, - match_units: Option, -} - -fn print_usage(opts: &getopts::Options) -> ! { - let brief = format!("Usage: {} ", env::args().next().unwrap()); - write!(&mut io::stderr(), "{}", opts.usage(&brief)).ok(); - process::exit(1); -} - -fn main() { - let mut opts = getopts::Options::new(); - opts.optflag( - "", - "eh-frame", - "print .eh-frame exception handling frame information", - ); - opts.optflag("G", "", "show global die offsets"); - opts.optflag("i", "", "print .debug_info and .debug_types sections"); - opts.optflag("l", "", "print .debug_line section"); - opts.optflag("p", "", "print .debug_pubnames section"); - opts.optflag("r", "", "print .debug_aranges section"); - opts.optflag("y", "", "print .debug_pubtypes section"); - opts.optflag( - "", - "dwo", - "print the .dwo versions of the selected sections", - ); - opts.optflag( - "", - "dwp", - "print the .dwp versions of the selected sections", - ); - opts.optopt( - "", - "dwo-parent", - "use the specified file as the parent of the dwo or dwp (e.g. for .debug_addr)", - "library path", - ); - opts.optflag("", "raw", "print raw data values"); - opts.optopt( - "u", - "match-units", - "print compilation units whose output matches a regex", - "REGEX", - ); - opts.optopt("", "sup", "path to supplementary object file", "PATH"); - - let matches = match opts.parse(env::args().skip(1)) { - Ok(m) => m, - Err(e) => { - writeln!(&mut io::stderr(), "{:?}\n", e).ok(); - print_usage(&opts); - } - }; - if matches.free.is_empty() { - print_usage(&opts); - } - - let mut all = true; - let mut flags = Flags::default(); - if matches.opt_present("eh-frame") { - flags.eh_frame = true; - all = false; - } - if matches.opt_present("G") { - flags.goff = true; - } - if matches.opt_present("i") { - flags.info = true; - all = false; - } - if matches.opt_present("l") { - flags.line = true; - all = false; - } - if matches.opt_present("p") { - flags.pubnames = true; - all = false; - } - if matches.opt_present("y") { - flags.pubtypes = true; - all = false; - } - if matches.opt_present("r") { - flags.aranges = true; - all = false; - } - if matches.opt_present("dwo") { - flags.dwo = true; - } - if matches.opt_present("dwp") { - flags.dwp = true; - } - if matches.opt_present("raw") { - flags.raw = true; - } - if all { - // .eh_frame is excluded even when printing all information. - // cosmetic flags like -G must be set explicitly too. - flags.info = true; - flags.line = true; - flags.pubnames = true; - flags.pubtypes = true; - flags.aranges = true; - } - flags.match_units = if let Some(r) = matches.opt_str("u") { - match Regex::new(&r) { - Ok(r) => Some(r), - Err(e) => { - eprintln!("Invalid regular expression {}: {}", r, e); - process::exit(1); - } - } - } else { - None - }; - - let arena_mmap = Arena::new(); - let load_file = |path| { - let file = match fs::File::open(&path) { - Ok(file) => file, - Err(err) => { - eprintln!("Failed to open file '{}': {}", path, err); - process::exit(1); - } - }; - let mmap = match unsafe { memmap2::Mmap::map(&file) } { - Ok(mmap) => mmap, - Err(err) => { - eprintln!("Failed to map file '{}': {}", path, err); - process::exit(1); - } - }; - let mmap_ref = arena_mmap.alloc(mmap); - match object::File::parse(&**mmap_ref) { - Ok(file) => Some(file), - Err(err) => { - eprintln!("Failed to parse file '{}': {}", path, err); - process::exit(1); - } - } - }; - - flags.sup = matches.opt_str("sup").and_then(load_file); - flags.dwo_parent = matches.opt_str("dwo-parent").and_then(load_file); - if flags.dwo_parent.is_some() && !flags.dwo && !flags.dwp { - eprintln!("--dwo-parent also requires --dwo or --dwp"); - process::exit(1); - } - if flags.dwo_parent.is_none() && flags.dwp { - eprintln!("--dwp also requires --dwo-parent"); - process::exit(1); - } - - for file_path in &matches.free { - if matches.free.len() != 1 { - println!("{}", file_path); - println!(); - } - - let file = match fs::File::open(&file_path) { - Ok(file) => file, - Err(err) => { - eprintln!("Failed to open file '{}': {}", file_path, err); - continue; - } - }; - let file = match unsafe { memmap2::Mmap::map(&file) } { - Ok(mmap) => mmap, - Err(err) => { - eprintln!("Failed to map file '{}': {}", file_path, err); - continue; - } - }; - let file = match object::File::parse(&*file) { - Ok(file) => file, - Err(err) => { - eprintln!("Failed to parse file '{}': {}", file_path, err); - continue; - } - }; - - let endian = if file.is_little_endian() { - gimli::RunTimeEndian::Little - } else { - gimli::RunTimeEndian::Big - }; - let ret = dump_file(&file, endian, &flags); - match ret { - Ok(_) => (), - Err(err) => eprintln!("Failed to dump '{}': {}", file_path, err,), - } - } -} - -fn empty_file_section<'input, 'arena, Endian: gimli::Endianity>( - endian: Endian, - arena_relocations: &'arena Arena, -) -> Relocate<'arena, gimli::EndianSlice<'arena, Endian>> { - let reader = gimli::EndianSlice::new(&[], endian); - let section = reader; - let relocations = RelocationMap::default(); - let relocations = arena_relocations.alloc(relocations); - Relocate { - relocations, - section, - reader, - } -} - -fn load_file_section<'input, 'arena, Endian: gimli::Endianity>( - id: gimli::SectionId, - file: &object::File<'input>, - endian: Endian, - is_dwo: bool, - arena_data: &'arena Arena>, - arena_relocations: &'arena Arena, -) -> Result>> { - let mut relocations = RelocationMap::default(); - let name = if is_dwo { - id.dwo_name() - } else if file.format() == object::BinaryFormat::Xcoff { - id.xcoff_name() - } else { - Some(id.name()) - }; - - let data = match name.and_then(|name| file.section_by_name(&name)) { - Some(ref section) => { - // DWO sections never have relocations, so don't bother. - if !is_dwo { - add_relocations(&mut relocations, file, section); - } - section.uncompressed_data()? - } - // Use a non-zero capacity so that `ReaderOffsetId`s are unique. - None => Cow::Owned(Vec::with_capacity(1)), - }; - let data_ref = arena_data.alloc(data); - let reader = gimli::EndianSlice::new(data_ref, endian); - let section = reader; - let relocations = arena_relocations.alloc(relocations); - Ok(Relocate { - relocations, - section, - reader, - }) -} - -fn dump_file(file: &object::File, endian: Endian, flags: &Flags) -> Result<()> -where - Endian: gimli::Endianity + Send + Sync, -{ - let arena_data = Arena::new(); - let arena_relocations = Arena::new(); - - let dwo_parent = if let Some(dwo_parent_file) = flags.dwo_parent.as_ref() { - let mut load_dwo_parent_section = |id: gimli::SectionId| -> Result<_> { - load_file_section( - id, - dwo_parent_file, - endian, - false, - &arena_data, - &arena_relocations, - ) - }; - Some(gimli::Dwarf::load(&mut load_dwo_parent_section)?) - } else { - None - }; - let dwo_parent = dwo_parent.as_ref(); - - let dwo_parent_units = if let Some(dwo_parent) = dwo_parent { - Some( - match dwo_parent - .units() - .map(|unit_header| dwo_parent.unit(unit_header)) - .filter_map(|unit| Ok(unit.dwo_id.map(|dwo_id| (dwo_id, unit)))) - .collect() - { - Ok(units) => units, - Err(err) => { - eprintln!("Failed to process --dwo-parent units: {}", err); - return Ok(()); - } - }, - ) - } else { - None - }; - let dwo_parent_units = dwo_parent_units.as_ref(); - - let mut load_section = |id: gimli::SectionId| -> Result<_> { - load_file_section( - id, - file, - endian, - flags.dwo || flags.dwp, - &arena_data, - &arena_relocations, - ) - }; - - let w = &mut BufWriter::new(io::stdout()); - if flags.dwp { - let empty = empty_file_section(endian, &arena_relocations); - let dwp = gimli::DwarfPackage::load(&mut load_section, empty)?; - dump_dwp(w, &dwp, dwo_parent.unwrap(), dwo_parent_units, flags)?; - w.flush()?; - return Ok(()); - } - - let mut dwarf = gimli::Dwarf::load(&mut load_section)?; - if flags.dwo { - if let Some(dwo_parent) = dwo_parent { - dwarf.make_dwo(&dwo_parent); - } else { - dwarf.file_type = gimli::DwarfFileType::Dwo; - } - } - - if let Some(sup_file) = flags.sup.as_ref() { - let mut load_sup_section = |id: gimli::SectionId| -> Result<_> { - // Note: we really only need the `.debug_str` section, - // but for now we load them all. - load_file_section(id, sup_file, endian, false, &arena_data, &arena_relocations) - }; - dwarf.load_sup(&mut load_sup_section)?; - } - - if flags.eh_frame { - let eh_frame = gimli::EhFrame::load(&mut load_section).unwrap(); - dump_eh_frame(w, file, eh_frame)?; - } - if flags.info { - dump_info(w, &dwarf, dwo_parent_units, flags)?; - dump_types(w, &dwarf, dwo_parent_units, flags)?; - } - if flags.line { - dump_line(w, &dwarf)?; - } - if flags.pubnames { - let debug_pubnames = &gimli::Section::load(&mut load_section).unwrap(); - dump_pubnames(w, debug_pubnames, &dwarf.debug_info)?; - } - if flags.aranges { - let debug_aranges = &gimli::Section::load(&mut load_section).unwrap(); - dump_aranges(w, debug_aranges)?; - } - if flags.pubtypes { - let debug_pubtypes = &gimli::Section::load(&mut load_section).unwrap(); - dump_pubtypes(w, debug_pubtypes, &dwarf.debug_info)?; - } - w.flush()?; - Ok(()) -} - -fn dump_eh_frame( - w: &mut W, - file: &object::File, - mut eh_frame: gimli::EhFrame, -) -> Result<()> { - // TODO: this might be better based on the file format. - let address_size = file - .architecture() - .address_size() - .map(|w| w.bytes()) - .unwrap_or(mem::size_of::() as u8); - eh_frame.set_address_size(address_size); - - fn register_name_none(_: gimli::Register) -> Option<&'static str> { - None - } - let arch_register_name = match file.architecture() { - object::Architecture::Arm | object::Architecture::Aarch64 => gimli::Arm::register_name, - object::Architecture::I386 => gimli::X86::register_name, - object::Architecture::X86_64 => gimli::X86_64::register_name, - _ => register_name_none, - }; - let register_name = &|register| match arch_register_name(register) { - Some(name) => Cow::Borrowed(name), - None => Cow::Owned(format!("{}", register.0)), - }; - - let mut bases = gimli::BaseAddresses::default(); - if let Some(section) = file.section_by_name(".eh_frame_hdr") { - bases = bases.set_eh_frame_hdr(section.address()); - } - if let Some(section) = file.section_by_name(".eh_frame") { - bases = bases.set_eh_frame(section.address()); - } - if let Some(section) = file.section_by_name(".text") { - bases = bases.set_text(section.address()); - } - if let Some(section) = file.section_by_name(".got") { - bases = bases.set_got(section.address()); - } - - // TODO: Print "__eh_frame" here on macOS, and more generally use the - // section that we're actually looking at, which is what the canonical - // dwarfdump does. - writeln!( - w, - "Exception handling frame information for section .eh_frame" - )?; - - let mut cies = HashMap::new(); - - let mut entries = eh_frame.entries(&bases); - loop { - match entries.next()? { - None => return Ok(()), - Some(gimli::CieOrFde::Cie(cie)) => { - writeln!(w)?; - writeln!(w, "{:#010x}: CIE", cie.offset())?; - writeln!(w, " length: {:#010x}", cie.entry_len())?; - // TODO: CIE_id - writeln!(w, " version: {:#04x}", cie.version())?; - // TODO: augmentation - writeln!(w, " code_align: {}", cie.code_alignment_factor())?; - writeln!(w, " data_align: {}", cie.data_alignment_factor())?; - writeln!( - w, - " ra_register: {}", - register_name(cie.return_address_register()) - )?; - if let Some(encoding) = cie.lsda_encoding() { - writeln!( - w, - " lsda_encoding: {}/{}", - encoding.application(), - encoding.format() - )?; - } - if let Some((encoding, personality)) = cie.personality_with_encoding() { - write!( - w, - " personality: {}/{} ", - encoding.application(), - encoding.format() - )?; - dump_pointer(w, personality)?; - writeln!(w)?; - } - if let Some(encoding) = cie.fde_address_encoding() { - writeln!( - w, - " fde_encoding: {}/{}", - encoding.application(), - encoding.format() - )?; - } - let instructions = cie.instructions(&eh_frame, &bases); - dump_cfi_instructions(w, instructions, true, register_name)?; - writeln!(w)?; - } - Some(gimli::CieOrFde::Fde(partial)) => { - let mut offset = None; - let fde = partial.parse(|_, bases, o| { - offset = Some(o); - cies.entry(o) - .or_insert_with(|| eh_frame.cie_from_offset(bases, o)) - .clone() - })?; - - writeln!(w)?; - writeln!(w, "{:#010x}: FDE", fde.offset())?; - writeln!(w, " length: {:#010x}", fde.entry_len())?; - writeln!(w, " CIE_pointer: {:#010x}", offset.unwrap().0)?; - // TODO: symbolicate the start address like the canonical dwarfdump does. - writeln!(w, " start_addr: {:#018x}", fde.initial_address())?; - writeln!( - w, - " range_size: {:#018x} (end_addr = {:#018x})", - fde.len(), - fde.initial_address() + fde.len() - )?; - if let Some(lsda) = fde.lsda() { - write!(w, " lsda: ")?; - dump_pointer(w, lsda)?; - writeln!(w)?; - } - let instructions = fde.instructions(&eh_frame, &bases); - dump_cfi_instructions(w, instructions, false, register_name)?; - writeln!(w)?; - } - } - } -} - -fn dump_pointer(w: &mut W, p: gimli::Pointer) -> Result<()> { - match p { - gimli::Pointer::Direct(p) => { - write!(w, "{:#018x}", p)?; - } - gimli::Pointer::Indirect(p) => { - write!(w, "({:#018x})", p)?; - } - } - Ok(()) -} - -#[allow(clippy::unneeded_field_pattern)] -fn dump_cfi_instructions( - w: &mut W, - mut insns: gimli::CallFrameInstructionIter, - is_initial: bool, - register_name: &dyn Fn(gimli::Register) -> Cow<'static, str>, -) -> Result<()> { - use gimli::CallFrameInstruction::*; - - // TODO: we need to actually evaluate these instructions as we iterate them - // so we can print the initialized state for CIEs, and each unwind row's - // registers for FDEs. - // - // TODO: We should print DWARF expressions for the CFI instructions that - // embed DWARF expressions within themselves. - - if !is_initial { - writeln!(w, " Instructions:")?; - } - - loop { - match insns.next() { - Err(e) => { - writeln!(w, "Failed to decode CFI instruction: {}", e)?; - return Ok(()); - } - Ok(None) => { - if is_initial { - writeln!(w, " Instructions: Init State:")?; - } - return Ok(()); - } - Ok(Some(op)) => match op { - SetLoc { address } => { - writeln!(w, " DW_CFA_set_loc ({:#x})", address)?; - } - AdvanceLoc { delta } => { - writeln!(w, " DW_CFA_advance_loc ({})", delta)?; - } - DefCfa { register, offset } => { - writeln!( - w, - " DW_CFA_def_cfa ({}, {})", - register_name(register), - offset - )?; - } - DefCfaSf { - register, - factored_offset, - } => { - writeln!( - w, - " DW_CFA_def_cfa_sf ({}, {})", - register_name(register), - factored_offset - )?; - } - DefCfaRegister { register } => { - writeln!( - w, - " DW_CFA_def_cfa_register ({})", - register_name(register) - )?; - } - DefCfaOffset { offset } => { - writeln!(w, " DW_CFA_def_cfa_offset ({})", offset)?; - } - DefCfaOffsetSf { factored_offset } => { - writeln!( - w, - " DW_CFA_def_cfa_offset_sf ({})", - factored_offset - )?; - } - DefCfaExpression { expression: _ } => { - writeln!(w, " DW_CFA_def_cfa_expression (...)")?; - } - Undefined { register } => { - writeln!( - w, - " DW_CFA_undefined ({})", - register_name(register) - )?; - } - SameValue { register } => { - writeln!( - w, - " DW_CFA_same_value ({})", - register_name(register) - )?; - } - Offset { - register, - factored_offset, - } => { - writeln!( - w, - " DW_CFA_offset ({}, {})", - register_name(register), - factored_offset - )?; - } - OffsetExtendedSf { - register, - factored_offset, - } => { - writeln!( - w, - " DW_CFA_offset_extended_sf ({}, {})", - register_name(register), - factored_offset - )?; - } - ValOffset { - register, - factored_offset, - } => { - writeln!( - w, - " DW_CFA_val_offset ({}, {})", - register_name(register), - factored_offset - )?; - } - ValOffsetSf { - register, - factored_offset, - } => { - writeln!( - w, - " DW_CFA_val_offset_sf ({}, {})", - register_name(register), - factored_offset - )?; - } - Register { - dest_register, - src_register, - } => { - writeln!( - w, - " DW_CFA_register ({}, {})", - register_name(dest_register), - register_name(src_register) - )?; - } - Expression { - register, - expression: _, - } => { - writeln!( - w, - " DW_CFA_expression ({}, ...)", - register_name(register) - )?; - } - ValExpression { - register, - expression: _, - } => { - writeln!( - w, - " DW_CFA_val_expression ({}, ...)", - register_name(register) - )?; - } - Restore { register } => { - writeln!( - w, - " DW_CFA_restore ({})", - register_name(register) - )?; - } - RememberState => { - writeln!(w, " DW_CFA_remember_state")?; - } - RestoreState => { - writeln!(w, " DW_CFA_restore_state")?; - } - ArgsSize { size } => { - writeln!(w, " DW_CFA_GNU_args_size ({})", size)?; - } - Nop => { - writeln!(w, " DW_CFA_nop")?; - } - }, - } - } -} - -fn dump_dwp( - w: &mut W, - dwp: &gimli::DwarfPackage, - dwo_parent: &gimli::Dwarf, - dwo_parent_units: Option<&HashMap>>, - flags: &Flags, -) -> Result<()> -where - R::Endian: Send + Sync, -{ - if dwp.cu_index.unit_count() != 0 { - writeln!( - w, - "\n.debug_cu_index: version = {}, sections = {}, units = {}, slots = {}", - dwp.cu_index.version(), - dwp.cu_index.section_count(), - dwp.cu_index.unit_count(), - dwp.cu_index.slot_count(), - )?; - for i in 1..=dwp.cu_index.unit_count() { - writeln!(w, "\nCU index {}", i)?; - dump_dwp_sections( - w, - &dwp, - dwo_parent, - dwo_parent_units, - flags, - dwp.cu_index.sections(i)?, - )?; - } - } - - if dwp.tu_index.unit_count() != 0 { - writeln!( - w, - "\n.debug_tu_index: version = {}, sections = {}, units = {}, slots = {}", - dwp.tu_index.version(), - dwp.tu_index.section_count(), - dwp.tu_index.unit_count(), - dwp.tu_index.slot_count(), - )?; - for i in 1..=dwp.tu_index.unit_count() { - writeln!(w, "\nTU index {}", i)?; - dump_dwp_sections( - w, - &dwp, - dwo_parent, - dwo_parent_units, - flags, - dwp.tu_index.sections(i)?, - )?; - } - } - - Ok(()) -} - -fn dump_dwp_sections( - w: &mut W, - dwp: &gimli::DwarfPackage, - dwo_parent: &gimli::Dwarf, - dwo_parent_units: Option<&HashMap>>, - flags: &Flags, - sections: gimli::UnitIndexSectionIterator, -) -> Result<()> -where - R::Endian: Send + Sync, -{ - for section in sections.clone() { - writeln!( - w, - " {}: offset = 0x{:x}, size = 0x{:x}", - section.section.dwo_name().unwrap(), - section.offset, - section.size - )?; - } - let dwarf = dwp.sections(sections, dwo_parent)?; - if flags.info { - dump_info(w, &dwarf, dwo_parent_units, flags)?; - dump_types(w, &dwarf, dwo_parent_units, flags)?; - } - if flags.line { - dump_line(w, &dwarf)?; - } - Ok(()) -} - -fn dump_info( - w: &mut W, - dwarf: &gimli::Dwarf, - dwo_parent_units: Option<&HashMap>>, - flags: &Flags, -) -> Result<()> -where - R::Endian: Send + Sync, -{ - writeln!(w, "\n.debug_info")?; - - let units = match dwarf.units().collect::>() { - Ok(units) => units, - Err(err) => { - writeln_error( - w, - dwarf, - Error::GimliError(err), - "Failed to read unit headers", - )?; - return Ok(()); - } - }; - let process_unit = |header: UnitHeader, buf: &mut Vec| -> Result<()> { - dump_unit(buf, header, dwarf, dwo_parent_units, flags)?; - if !flags - .match_units - .as_ref() - .map(|r| r.is_match(&buf)) - .unwrap_or(true) - { - buf.clear(); - } - Ok(()) - }; - // Don't use more than 16 cores even if available. No point in soaking hundreds - // of cores if you happen to have them. - parallel_output(w, 16, units, process_unit) -} - -fn dump_types( - w: &mut W, - dwarf: &gimli::Dwarf, - dwo_parent_units: Option<&HashMap>>, - flags: &Flags, -) -> Result<()> { - writeln!(w, "\n.debug_types")?; - - let mut iter = dwarf.type_units(); - while let Some(header) = iter.next()? { - dump_unit(w, header, dwarf, dwo_parent_units, flags)?; - } - Ok(()) -} - -fn dump_unit( - w: &mut W, - header: UnitHeader, - dwarf: &gimli::Dwarf, - dwo_parent_units: Option<&HashMap>>, - flags: &Flags, -) -> Result<()> { - write!(w, "\nUNIT<")?; - match header.offset() { - UnitSectionOffset::DebugInfoOffset(o) => { - write!(w, ".debug_info+0x{:08x}", o.0)?; - } - UnitSectionOffset::DebugTypesOffset(o) => { - write!(w, ".debug_types+0x{:08x}", o.0)?; - } - } - writeln!(w, ">: length = 0x{:x}, format = {:?}, version = {}, address_size = {}, abbrev_offset = 0x{:x}", - header.unit_length(), - header.format(), - header.version(), - header.address_size(), - header.debug_abbrev_offset().0, - )?; - - match header.type_() { - UnitType::Compilation | UnitType::Partial => (), - UnitType::Type { - type_signature, - type_offset, - } - | UnitType::SplitType { - type_signature, - type_offset, - } => { - write!(w, " signature = ")?; - dump_type_signature(w, type_signature)?; - writeln!(w)?; - writeln!(w, " type_offset = 0x{:x}", type_offset.0,)?; - } - UnitType::Skeleton(dwo_id) | UnitType::SplitCompilation(dwo_id) => { - write!(w, " dwo_id = ")?; - writeln!(w, "0x{:016x}", dwo_id.0)?; - } - } - - let mut unit = match dwarf.unit(header) { - Ok(unit) => unit, - Err(err) => { - writeln_error(w, dwarf, err.into(), "Failed to parse unit root entry")?; - return Ok(()); - } - }; - - if let Some(dwo_parent_units) = dwo_parent_units { - if let Some(dwo_id) = unit.dwo_id { - if let Some(parent_unit) = dwo_parent_units.get(&dwo_id) { - unit.copy_relocated_attributes(parent_unit); - } - } - } - - let entries_result = dump_entries(w, unit, dwarf, flags); - if let Err(err) = entries_result { - writeln_error(w, dwarf, err, "Failed to dump entries")?; - } - Ok(()) -} - -fn spaces(buf: &mut String, len: usize) -> &str { - while buf.len() < len { - buf.push(' '); - } - &buf[..len] -} - -// " GOFF=0x{:08x}" adds exactly 16 spaces. -const GOFF_SPACES: usize = 16; - -fn write_offset( - w: &mut W, - unit: &gimli::Unit, - offset: gimli::UnitOffset, - flags: &Flags, -) -> Result<()> { - write!(w, "<0x{:08x}", offset.0)?; - if flags.goff { - let goff = match offset.to_unit_section_offset(unit) { - UnitSectionOffset::DebugInfoOffset(o) => o.0, - UnitSectionOffset::DebugTypesOffset(o) => o.0, - }; - write!(w, " GOFF=0x{:08x}", goff)?; - } - write!(w, ">")?; - Ok(()) -} - -fn dump_entries( - w: &mut W, - unit: gimli::Unit, - dwarf: &gimli::Dwarf, - flags: &Flags, -) -> Result<()> { - let mut spaces_buf = String::new(); - - let mut entries = unit.entries_raw(None)?; - while !entries.is_empty() { - let offset = entries.next_offset(); - let depth = entries.next_depth(); - let abbrev = entries.read_abbreviation()?; - - let mut indent = if depth >= 0 { - depth as usize * 2 + 2 - } else { - 2 - }; - write!(w, "<{}{}>", if depth < 10 { " " } else { "" }, depth)?; - write_offset(w, &unit, offset, flags)?; - writeln!( - w, - "{}{}", - spaces(&mut spaces_buf, indent), - abbrev.map(|x| x.tag()).unwrap_or(gimli::DW_TAG_null) - )?; - - indent += 18; - if flags.goff { - indent += GOFF_SPACES; - } - - for spec in abbrev.map(|x| x.attributes()).unwrap_or(&[]) { - let attr = entries.read_attribute(*spec)?; - w.write_all(spaces(&mut spaces_buf, indent).as_bytes())?; - if let Some(n) = attr.name().static_string() { - let right_padding = 27 - std::cmp::min(27, n.len()); - write!(w, "{}{} ", n, spaces(&mut spaces_buf, right_padding))?; - } else { - write!(w, "{:27} ", attr.name())?; - } - if flags.raw { - writeln!(w, "{:?}", attr.raw_value())?; - } else { - match dump_attr_value(w, &attr, &unit, dwarf) { - Ok(_) => (), - Err(err) => writeln_error(w, dwarf, err, "Failed to dump attribute value")?, - }; - } - } - } - Ok(()) -} - -fn dump_attr_value( - w: &mut W, - attr: &gimli::Attribute, - unit: &gimli::Unit, - dwarf: &gimli::Dwarf, -) -> Result<()> { - let value = attr.value(); - match value { - gimli::AttributeValue::Addr(address) => { - writeln!(w, "0x{:08x}", address)?; - } - gimli::AttributeValue::Block(data) => { - for byte in data.to_slice()?.iter() { - write!(w, "{:02x}", byte)?; - } - writeln!(w)?; - } - gimli::AttributeValue::Data1(_) - | gimli::AttributeValue::Data2(_) - | gimli::AttributeValue::Data4(_) - | gimli::AttributeValue::Data8(_) => { - if let (Some(udata), Some(sdata)) = (attr.udata_value(), attr.sdata_value()) { - if sdata >= 0 { - writeln!(w, "{}", udata)?; - } else { - writeln!(w, "{} ({})", udata, sdata)?; - } - } else { - writeln!(w, "{:?}", value)?; - } - } - gimli::AttributeValue::Sdata(data) => { - match attr.name() { - gimli::DW_AT_data_member_location => { - writeln!(w, "{}", data)?; - } - _ => { - if data >= 0 { - writeln!(w, "0x{:08x}", data)?; - } else { - writeln!(w, "0x{:08x} ({})", data, data)?; - } - } - }; - } - gimli::AttributeValue::Udata(data) => { - match attr.name() { - gimli::DW_AT_high_pc => { - writeln!(w, "{}", data)?; - } - gimli::DW_AT_data_member_location => { - if let Some(sdata) = attr.sdata_value() { - // This is a DW_FORM_data* value. - // libdwarf-dwarfdump displays this as signed too. - if sdata >= 0 { - writeln!(w, "{}", data)?; - } else { - writeln!(w, "{} ({})", data, sdata)?; - } - } else { - writeln!(w, "{}", data)?; - } - } - gimli::DW_AT_lower_bound | gimli::DW_AT_upper_bound => { - writeln!(w, "{}", data)?; - } - _ => { - writeln!(w, "0x{:08x}", data)?; - } - }; - } - gimli::AttributeValue::Exprloc(ref data) => { - if let gimli::AttributeValue::Exprloc(_) = attr.raw_value() { - write!(w, "len 0x{:04x}: ", data.0.len())?; - for byte in data.0.to_slice()?.iter() { - write!(w, "{:02x}", byte)?; - } - write!(w, ": ")?; - } - dump_exprloc(w, unit.encoding(), data)?; - writeln!(w)?; - } - gimli::AttributeValue::Flag(true) => { - writeln!(w, "yes")?; - } - gimli::AttributeValue::Flag(false) => { - writeln!(w, "no")?; - } - gimli::AttributeValue::SecOffset(offset) => { - writeln!(w, "0x{:08x}", offset)?; - } - gimli::AttributeValue::DebugAddrBase(base) => { - writeln!(w, "<.debug_addr+0x{:08x}>", base.0)?; - } - gimli::AttributeValue::DebugAddrIndex(index) => { - write!(w, "(indirect address, index {:#x}): ", index.0)?; - let address = dwarf.address(unit, index)?; - writeln!(w, "0x{:08x}", address)?; - } - gimli::AttributeValue::UnitRef(offset) => { - write!(w, "0x{:08x}", offset.0)?; - match offset.to_unit_section_offset(unit) { - UnitSectionOffset::DebugInfoOffset(goff) => { - write!(w, "<.debug_info+0x{:08x}>", goff.0)?; - } - UnitSectionOffset::DebugTypesOffset(goff) => { - write!(w, "<.debug_types+0x{:08x}>", goff.0)?; - } - } - writeln!(w)?; - } - gimli::AttributeValue::DebugInfoRef(offset) => { - writeln!(w, "<.debug_info+0x{:08x}>", offset.0)?; - } - gimli::AttributeValue::DebugInfoRefSup(offset) => { - writeln!(w, "<.debug_info(sup)+0x{:08x}>", offset.0)?; - } - gimli::AttributeValue::DebugLineRef(offset) => { - writeln!(w, "<.debug_line+0x{:08x}>", offset.0)?; - } - gimli::AttributeValue::LocationListsRef(offset) => { - dump_loc_list(w, offset, unit, dwarf)?; - } - gimli::AttributeValue::DebugLocListsBase(base) => { - writeln!(w, "<.debug_loclists+0x{:08x}>", base.0)?; - } - gimli::AttributeValue::DebugLocListsIndex(index) => { - write!(w, "(indirect location list, index {:#x}): ", index.0)?; - let offset = dwarf.locations_offset(unit, index)?; - dump_loc_list(w, offset, unit, dwarf)?; - } - gimli::AttributeValue::DebugMacinfoRef(offset) => { - writeln!(w, "<.debug_macinfo+0x{:08x}>", offset.0)?; - } - gimli::AttributeValue::DebugMacroRef(offset) => { - writeln!(w, "<.debug_macro+0x{:08x}>", offset.0)?; - } - gimli::AttributeValue::RangeListsRef(offset) => { - let offset = dwarf.ranges_offset_from_raw(unit, offset); - dump_range_list(w, offset, unit, dwarf)?; - } - gimli::AttributeValue::DebugRngListsBase(base) => { - writeln!(w, "<.debug_rnglists+0x{:08x}>", base.0)?; - } - gimli::AttributeValue::DebugRngListsIndex(index) => { - write!(w, "(indirect range list, index {:#x}): ", index.0)?; - let offset = dwarf.ranges_offset(unit, index)?; - dump_range_list(w, offset, unit, dwarf)?; - } - gimli::AttributeValue::DebugTypesRef(signature) => { - dump_type_signature(w, signature)?; - writeln!(w, " ")?; - } - gimli::AttributeValue::DebugStrRef(offset) => { - if let Ok(s) = dwarf.debug_str.get_str(offset) { - writeln!(w, "{}", s.to_string_lossy()?)?; - } else { - writeln!(w, "<.debug_str+0x{:08x}>", offset.0)?; - } - } - gimli::AttributeValue::DebugStrRefSup(offset) => { - if let Some(s) = dwarf - .sup() - .and_then(|sup| sup.debug_str.get_str(offset).ok()) - { - writeln!(w, "{}", s.to_string_lossy()?)?; - } else { - writeln!(w, "<.debug_str(sup)+0x{:08x}>", offset.0)?; - } - } - gimli::AttributeValue::DebugStrOffsetsBase(base) => { - writeln!(w, "<.debug_str_offsets+0x{:08x}>", base.0)?; - } - gimli::AttributeValue::DebugStrOffsetsIndex(index) => { - write!(w, "(indirect string, index {:#x}): ", index.0)?; - let offset = dwarf.debug_str_offsets.get_str_offset( - unit.encoding().format, - unit.str_offsets_base, - index, - )?; - if let Ok(s) = dwarf.debug_str.get_str(offset) { - writeln!(w, "{}", s.to_string_lossy()?)?; - } else { - writeln!(w, "<.debug_str+0x{:08x}>", offset.0)?; - } - } - gimli::AttributeValue::DebugLineStrRef(offset) => { - if let Ok(s) = dwarf.debug_line_str.get_str(offset) { - writeln!(w, "{}", s.to_string_lossy()?)?; - } else { - writeln!(w, "<.debug_line_str=0x{:08x}>", offset.0)?; - } - } - gimli::AttributeValue::String(s) => { - writeln!(w, "{}", s.to_string_lossy()?)?; - } - gimli::AttributeValue::Encoding(value) => { - writeln!(w, "{}", value)?; - } - gimli::AttributeValue::DecimalSign(value) => { - writeln!(w, "{}", value)?; - } - gimli::AttributeValue::Endianity(value) => { - writeln!(w, "{}", value)?; - } - gimli::AttributeValue::Accessibility(value) => { - writeln!(w, "{}", value)?; - } - gimli::AttributeValue::Visibility(value) => { - writeln!(w, "{}", value)?; - } - gimli::AttributeValue::Virtuality(value) => { - writeln!(w, "{}", value)?; - } - gimli::AttributeValue::Language(value) => { - writeln!(w, "{}", value)?; - } - gimli::AttributeValue::AddressClass(value) => { - writeln!(w, "{}", value)?; - } - gimli::AttributeValue::IdentifierCase(value) => { - writeln!(w, "{}", value)?; - } - gimli::AttributeValue::CallingConvention(value) => { - writeln!(w, "{}", value)?; - } - gimli::AttributeValue::Inline(value) => { - writeln!(w, "{}", value)?; - } - gimli::AttributeValue::Ordering(value) => { - writeln!(w, "{}", value)?; - } - gimli::AttributeValue::FileIndex(value) => { - write!(w, "0x{:08x}", value)?; - dump_file_index(w, value, unit, dwarf)?; - writeln!(w)?; - } - gimli::AttributeValue::DwoId(value) => { - writeln!(w, "0x{:016x}", value.0)?; - } - } - - Ok(()) -} - -fn dump_type_signature(w: &mut W, signature: gimli::DebugTypeSignature) -> Result<()> { - write!(w, "0x{:016x}", signature.0)?; - Ok(()) -} - -fn dump_file_index( - w: &mut W, - file_index: u64, - unit: &gimli::Unit, - dwarf: &gimli::Dwarf, -) -> Result<()> { - if file_index == 0 && unit.header.version() <= 4 { - return Ok(()); - } - let header = match unit.line_program { - Some(ref program) => program.header(), - None => return Ok(()), - }; - let file = match header.file(file_index) { - Some(file) => file, - None => { - writeln!(w, "Unable to get header for file {}", file_index)?; - return Ok(()); - } - }; - write!(w, " ")?; - if let Some(directory) = file.directory(header) { - let directory = dwarf.attr_string(unit, directory)?; - let directory = directory.to_string_lossy()?; - if file.directory_index() != 0 && !directory.starts_with('/') { - if let Some(ref comp_dir) = unit.comp_dir { - write!(w, "{}/", comp_dir.to_string_lossy()?,)?; - } - } - write!(w, "{}/", directory)?; - } - write!( - w, - "{}", - dwarf - .attr_string(unit, file.path_name())? - .to_string_lossy()? - )?; - Ok(()) -} - -fn dump_exprloc( - w: &mut W, - encoding: gimli::Encoding, - data: &gimli::Expression, -) -> Result<()> { - let mut pc = data.0.clone(); - let mut space = false; - while pc.len() != 0 { - let pc_clone = pc.clone(); - match gimli::Operation::parse(&mut pc, encoding) { - Ok(op) => { - if space { - write!(w, " ")?; - } else { - space = true; - } - dump_op(w, encoding, pc_clone, op)?; - } - Err(gimli::Error::InvalidExpression(op)) => { - writeln!(w, "WARNING: unsupported operation 0x{:02x}", op.0)?; - return Ok(()); - } - Err(gimli::Error::UnsupportedRegister(register)) => { - writeln!(w, "WARNING: unsupported register {}", register)?; - return Ok(()); - } - Err(gimli::Error::UnexpectedEof(_)) => { - writeln!(w, "WARNING: truncated or malformed expression")?; - return Ok(()); - } - Err(e) => { - writeln!(w, "WARNING: unexpected operation parse error: {}", e)?; - return Ok(()); - } - } - } - Ok(()) -} - -fn dump_op( - w: &mut W, - encoding: gimli::Encoding, - mut pc: R, - op: gimli::Operation, -) -> Result<()> { - let dwop = gimli::DwOp(pc.read_u8()?); - write!(w, "{}", dwop)?; - match op { - gimli::Operation::Deref { - base_type, size, .. - } => { - if dwop == gimli::DW_OP_deref_size || dwop == gimli::DW_OP_xderef_size { - write!(w, " {}", size)?; - } - if base_type != UnitOffset(0) { - write!(w, " type 0x{:08x}", base_type.0)?; - } - } - gimli::Operation::Pick { index } => { - if dwop == gimli::DW_OP_pick { - write!(w, " {}", index)?; - } - } - gimli::Operation::PlusConstant { value } => { - write!(w, " {}", value as i64)?; - } - gimli::Operation::Bra { target } => { - write!(w, " {}", target)?; - } - gimli::Operation::Skip { target } => { - write!(w, " {}", target)?; - } - gimli::Operation::SignedConstant { value } => match dwop { - gimli::DW_OP_const1s - | gimli::DW_OP_const2s - | gimli::DW_OP_const4s - | gimli::DW_OP_const8s - | gimli::DW_OP_consts => { - write!(w, " {}", value)?; - } - _ => {} - }, - gimli::Operation::UnsignedConstant { value } => match dwop { - gimli::DW_OP_const1u - | gimli::DW_OP_const2u - | gimli::DW_OP_const4u - | gimli::DW_OP_const8u - | gimli::DW_OP_constu => { - write!(w, " {}", value)?; - } - _ => { - // These have the value encoded in the operation, eg DW_OP_lit0. - } - }, - gimli::Operation::Register { register } => { - if dwop == gimli::DW_OP_regx { - write!(w, " {}", register.0)?; - } - } - gimli::Operation::RegisterOffset { - register, - offset, - base_type, - } => { - if dwop >= gimli::DW_OP_breg0 && dwop <= gimli::DW_OP_breg31 { - write!(w, "{:+}", offset)?; - } else { - write!(w, " {}", register.0)?; - if offset != 0 { - write!(w, "{:+}", offset)?; - } - if base_type != UnitOffset(0) { - write!(w, " type 0x{:08x}", base_type.0)?; - } - } - } - gimli::Operation::FrameOffset { offset } => { - write!(w, " {}", offset)?; - } - gimli::Operation::Call { offset } => match offset { - gimli::DieReference::UnitRef(gimli::UnitOffset(offset)) => { - write!(w, " 0x{:08x}", offset)?; - } - gimli::DieReference::DebugInfoRef(gimli::DebugInfoOffset(offset)) => { - write!(w, " 0x{:08x}", offset)?; - } - }, - gimli::Operation::Piece { - size_in_bits, - bit_offset: None, - } => { - write!(w, " {}", size_in_bits / 8)?; - } - gimli::Operation::Piece { - size_in_bits, - bit_offset: Some(bit_offset), - } => { - write!(w, " 0x{:08x} offset 0x{:08x}", size_in_bits, bit_offset)?; - } - gimli::Operation::ImplicitValue { data } => { - let data = data.to_slice()?; - write!(w, " 0x{:08x} contents 0x", data.len())?; - for byte in data.iter() { - write!(w, "{:02x}", byte)?; - } - } - gimli::Operation::ImplicitPointer { value, byte_offset } => { - write!(w, " 0x{:08x} {}", value.0, byte_offset)?; - } - gimli::Operation::EntryValue { expression } => { - write!(w, "(")?; - dump_exprloc(w, encoding, &gimli::Expression(expression))?; - write!(w, ")")?; - } - gimli::Operation::ParameterRef { offset } => { - write!(w, " 0x{:08x}", offset.0)?; - } - gimli::Operation::Address { address } => { - write!(w, " 0x{:08x}", address)?; - } - gimli::Operation::AddressIndex { index } => { - write!(w, " 0x{:08x}", index.0)?; - } - gimli::Operation::ConstantIndex { index } => { - write!(w, " 0x{:08x}", index.0)?; - } - gimli::Operation::TypedLiteral { base_type, value } => { - write!(w, " type 0x{:08x} contents 0x", base_type.0)?; - for byte in value.to_slice()?.iter() { - write!(w, "{:02x}", byte)?; - } - } - gimli::Operation::Convert { base_type } => { - write!(w, " type 0x{:08x}", base_type.0)?; - } - gimli::Operation::Reinterpret { base_type } => { - write!(w, " type 0x{:08x}", base_type.0)?; - } - gimli::Operation::WasmLocal { index } - | gimli::Operation::WasmGlobal { index } - | gimli::Operation::WasmStack { index } => { - let wasmop = pc.read_u8()?; - write!(w, " 0x{:x} 0x{:x}", wasmop, index)?; - } - gimli::Operation::Drop - | gimli::Operation::Swap - | gimli::Operation::Rot - | gimli::Operation::Abs - | gimli::Operation::And - | gimli::Operation::Div - | gimli::Operation::Minus - | gimli::Operation::Mod - | gimli::Operation::Mul - | gimli::Operation::Neg - | gimli::Operation::Not - | gimli::Operation::Or - | gimli::Operation::Plus - | gimli::Operation::Shl - | gimli::Operation::Shr - | gimli::Operation::Shra - | gimli::Operation::Xor - | gimli::Operation::Eq - | gimli::Operation::Ge - | gimli::Operation::Gt - | gimli::Operation::Le - | gimli::Operation::Lt - | gimli::Operation::Ne - | gimli::Operation::Nop - | gimli::Operation::PushObjectAddress - | gimli::Operation::TLS - | gimli::Operation::CallFrameCFA - | gimli::Operation::StackValue => {} - }; - Ok(()) -} - -fn dump_range(w: &mut W, range: Option) -> Result<()> { - if let Some(range) = range { - write!(w, " [0x{:08x}, 0x{:08x}]", range.begin, range.end)?; - } else { - write!(w, " [ignored]")?; - } - Ok(()) -} - -fn dump_loc_list( - w: &mut W, - offset: gimli::LocationListsOffset, - unit: &gimli::Unit, - dwarf: &gimli::Dwarf, -) -> Result<()> { - let mut locations = dwarf.locations(unit, offset)?; - writeln!( - w, - "", - if unit.encoding().version < 5 { - ".debug_loc" - } else { - ".debug_loclists" - }, - offset.0, - )?; - let mut i = 0; - while let Some(raw) = locations.next_raw()? { - write!(w, "\t\t\t[{:2}]", i)?; - i += 1; - let range = locations - .convert_raw(raw.clone())? - .map(|location| location.range); - match raw { - gimli::RawLocListEntry::BaseAddress { addr } => { - writeln!(w, "", addr)?; - } - gimli::RawLocListEntry::BaseAddressx { addr } => { - let addr_val = dwarf.address(unit, addr)?; - writeln!(w, "", addr.0, addr_val)?; - } - gimli::RawLocListEntry::StartxEndx { - begin, - end, - ref data, - } => { - let begin_val = dwarf.address(unit, begin)?; - let end_val = dwarf.address(unit, end)?; - write!( - w, - "", - begin.0, begin_val, end.0, end_val, - )?; - dump_range(w, range)?; - dump_exprloc(w, unit.encoding(), data)?; - writeln!(w)?; - } - gimli::RawLocListEntry::StartxLength { - begin, - length, - ref data, - } => { - let begin_val = dwarf.address(unit, begin)?; - write!( - w, - "", - begin.0, begin_val, length, - )?; - dump_range(w, range)?; - dump_exprloc(w, unit.encoding(), data)?; - writeln!(w)?; - } - gimli::RawLocListEntry::AddressOrOffsetPair { - begin, - end, - ref data, - } - | gimli::RawLocListEntry::OffsetPair { - begin, - end, - ref data, - } => { - write!(w, "", begin, end)?; - dump_range(w, range)?; - dump_exprloc(w, unit.encoding(), data)?; - writeln!(w)?; - } - gimli::RawLocListEntry::DefaultLocation { ref data } => { - write!(w, "")?; - dump_exprloc(w, unit.encoding(), data)?; - writeln!(w)?; - } - gimli::RawLocListEntry::StartEnd { - begin, - end, - ref data, - } => { - write!(w, "", begin, end)?; - dump_range(w, range)?; - dump_exprloc(w, unit.encoding(), data)?; - writeln!(w)?; - } - gimli::RawLocListEntry::StartLength { - begin, - length, - ref data, - } => { - write!(w, "", begin, length)?; - dump_range(w, range)?; - dump_exprloc(w, unit.encoding(), data)?; - writeln!(w)?; - } - }; - } - Ok(()) -} - -fn dump_range_list( - w: &mut W, - offset: gimli::RangeListsOffset, - unit: &gimli::Unit, - dwarf: &gimli::Dwarf, -) -> Result<()> { - let mut ranges = dwarf.ranges(unit, offset)?; - writeln!( - w, - "", - if unit.encoding().version < 5 { - ".debug_ranges" - } else { - ".debug_rnglists" - }, - offset.0, - )?; - let mut i = 0; - while let Some(raw) = ranges.next_raw()? { - write!(w, "\t\t\t[{:2}] ", i)?; - i += 1; - let range = ranges.convert_raw(raw.clone())?; - match raw { - gimli::RawRngListEntry::BaseAddress { addr } => { - writeln!(w, "", addr)?; - } - gimli::RawRngListEntry::BaseAddressx { addr } => { - let addr_val = dwarf.address(unit, addr)?; - writeln!(w, "", addr.0, addr_val)?; - } - gimli::RawRngListEntry::StartxEndx { begin, end } => { - let begin_val = dwarf.address(unit, begin)?; - let end_val = dwarf.address(unit, end)?; - write!( - w, - "", - begin.0, begin_val, end.0, end_val, - )?; - dump_range(w, range)?; - writeln!(w)?; - } - gimli::RawRngListEntry::StartxLength { begin, length } => { - let begin_val = dwarf.address(unit, begin)?; - write!( - w, - "", - begin.0, begin_val, length, - )?; - dump_range(w, range)?; - writeln!(w)?; - } - gimli::RawRngListEntry::AddressOrOffsetPair { begin, end } - | gimli::RawRngListEntry::OffsetPair { begin, end } => { - write!(w, "", begin, end)?; - dump_range(w, range)?; - writeln!(w)?; - } - gimli::RawRngListEntry::StartEnd { begin, end } => { - write!(w, "", begin, end)?; - dump_range(w, range)?; - writeln!(w)?; - } - gimli::RawRngListEntry::StartLength { begin, length } => { - write!(w, "", begin, length)?; - dump_range(w, range)?; - writeln!(w)?; - } - }; - } - Ok(()) -} - -fn dump_line(w: &mut W, dwarf: &gimli::Dwarf) -> Result<()> { - let mut iter = dwarf.units(); - while let Some(header) = iter.next()? { - writeln!( - w, - "\n.debug_line: line number info for unit at .debug_info offset 0x{:08x}", - header.offset().as_debug_info_offset().unwrap().0 - )?; - let unit = match dwarf.unit(header) { - Ok(unit) => unit, - Err(err) => { - writeln_error( - w, - dwarf, - err.into(), - "Failed to parse unit root entry for dump_line", - )?; - continue; - } - }; - match dump_line_program(w, &unit, dwarf) { - Ok(_) => (), - Err(Error::IoError) => return Err(Error::IoError), - Err(err) => writeln_error(w, dwarf, err, "Failed to dump line program")?, - } - } - Ok(()) -} - -fn dump_line_program( - w: &mut W, - unit: &gimli::Unit, - dwarf: &gimli::Dwarf, -) -> Result<()> { - if let Some(program) = unit.line_program.clone() { - { - let header = program.header(); - writeln!(w)?; - writeln!( - w, - "Offset: 0x{:x}", - header.offset().0 - )?; - writeln!( - w, - "Length: {}", - header.unit_length() - )?; - writeln!( - w, - "DWARF version: {}", - header.version() - )?; - writeln!( - w, - "Address size: {}", - header.address_size() - )?; - writeln!( - w, - "Prologue length: {}", - header.header_length() - )?; - writeln!( - w, - "Minimum instruction length: {}", - header.minimum_instruction_length() - )?; - writeln!( - w, - "Maximum operations per instruction: {}", - header.maximum_operations_per_instruction() - )?; - writeln!( - w, - "Default is_stmt: {}", - header.default_is_stmt() - )?; - writeln!( - w, - "Line base: {}", - header.line_base() - )?; - writeln!( - w, - "Line range: {}", - header.line_range() - )?; - writeln!( - w, - "Opcode base: {}", - header.opcode_base() - )?; - - writeln!(w)?; - writeln!(w, "Opcodes:")?; - for (i, length) in header - .standard_opcode_lengths() - .to_slice()? - .iter() - .enumerate() - { - writeln!(w, " Opcode {} has {} args", i + 1, length)?; - } - - let base = if header.version() >= 5 { 0 } else { 1 }; - writeln!(w)?; - writeln!(w, "The Directory Table:")?; - for (i, dir) in header.include_directories().iter().enumerate() { - writeln!( - w, - " {} {}", - base + i, - dwarf.attr_string(unit, dir.clone())?.to_string_lossy()? - )?; - } - - writeln!(w)?; - writeln!(w, "The File Name Table")?; - write!(w, " Entry\tDir\tTime\tSize")?; - if header.file_has_md5() { - write!(w, "\tMD5\t\t\t\t")?; - } - writeln!(w, "\tName")?; - for (i, file) in header.file_names().iter().enumerate() { - write!( - w, - " {}\t{}\t{}\t{}", - base + i, - file.directory_index(), - file.timestamp(), - file.size(), - )?; - if header.file_has_md5() { - let md5 = file.md5(); - write!(w, "\t")?; - for i in 0..16 { - write!(w, "{:02X}", md5[i])?; - } - } - writeln!( - w, - "\t{}", - dwarf - .attr_string(unit, file.path_name())? - .to_string_lossy()? - )?; - } - - writeln!(w)?; - writeln!(w, "Line Number Instructions:")?; - let mut instructions = header.instructions(); - while let Some(instruction) = instructions.next_instruction(header)? { - writeln!(w, " {}", instruction)?; - } - - writeln!(w)?; - writeln!(w, "Line Number Rows:")?; - writeln!(w, " [lno,col]")?; - } - let mut rows = program.rows(); - let mut file_index = std::u64::MAX; - while let Some((header, row)) = rows.next_row()? { - let line = match row.line() { - Some(line) => line.get(), - None => 0, - }; - let column = match row.column() { - gimli::ColumnType::Column(column) => column.get(), - gimli::ColumnType::LeftEdge => 0, - }; - write!(w, "0x{:08x} [{:4},{:2}]", row.address(), line, column)?; - if row.is_stmt() { - write!(w, " NS")?; - } - if row.basic_block() { - write!(w, " BB")?; - } - if row.end_sequence() { - write!(w, " ET")?; - } - if row.prologue_end() { - write!(w, " PE")?; - } - if row.epilogue_begin() { - write!(w, " EB")?; - } - if row.isa() != 0 { - write!(w, " IS={}", row.isa())?; - } - if row.discriminator() != 0 { - write!(w, " DI={}", row.discriminator())?; - } - if file_index != row.file_index() { - file_index = row.file_index(); - if let Some(file) = row.file(header) { - if let Some(directory) = file.directory(header) { - write!( - w, - " uri: \"{}/{}\"", - dwarf.attr_string(unit, directory)?.to_string_lossy()?, - dwarf - .attr_string(unit, file.path_name())? - .to_string_lossy()? - )?; - } else { - write!( - w, - " uri: \"{}\"", - dwarf - .attr_string(unit, file.path_name())? - .to_string_lossy()? - )?; - } - } - } - writeln!(w)?; - } - } - Ok(()) -} - -fn dump_pubnames( - w: &mut W, - debug_pubnames: &gimli::DebugPubNames, - debug_info: &gimli::DebugInfo, -) -> Result<()> { - writeln!(w, "\n.debug_pubnames")?; - - let mut cu_offset; - let mut cu_die_offset = gimli::DebugInfoOffset(0); - let mut prev_cu_offset = None; - let mut pubnames = debug_pubnames.items(); - while let Some(pubname) = pubnames.next()? { - cu_offset = pubname.unit_header_offset(); - if Some(cu_offset) != prev_cu_offset { - let cu = debug_info.header_from_offset(cu_offset)?; - cu_die_offset = gimli::DebugInfoOffset(cu_offset.0 + cu.header_size()); - prev_cu_offset = Some(cu_offset); - } - let die_in_cu = pubname.die_offset(); - let die_in_sect = cu_offset.0 + die_in_cu.0; - writeln!(w, - "global die-in-sect 0x{:08x}, cu-in-sect 0x{:08x}, die-in-cu 0x{:08x}, cu-header-in-sect 0x{:08x} '{}'", - die_in_sect, - cu_die_offset.0, - die_in_cu.0, - cu_offset.0, - pubname.name().to_string_lossy()? - )?; - } - Ok(()) -} - -fn dump_pubtypes( - w: &mut W, - debug_pubtypes: &gimli::DebugPubTypes, - debug_info: &gimli::DebugInfo, -) -> Result<()> { - writeln!(w, "\n.debug_pubtypes")?; - - let mut cu_offset; - let mut cu_die_offset = gimli::DebugInfoOffset(0); - let mut prev_cu_offset = None; - let mut pubtypes = debug_pubtypes.items(); - while let Some(pubtype) = pubtypes.next()? { - cu_offset = pubtype.unit_header_offset(); - if Some(cu_offset) != prev_cu_offset { - let cu = debug_info.header_from_offset(cu_offset)?; - cu_die_offset = gimli::DebugInfoOffset(cu_offset.0 + cu.header_size()); - prev_cu_offset = Some(cu_offset); - } - let die_in_cu = pubtype.die_offset(); - let die_in_sect = cu_offset.0 + die_in_cu.0; - writeln!(w, - "pubtype die-in-sect 0x{:08x}, cu-in-sect 0x{:08x}, die-in-cu 0x{:08x}, cu-header-in-sect 0x{:08x} '{}'", - die_in_sect, - cu_die_offset.0, - die_in_cu.0, - cu_offset.0, - pubtype.name().to_string_lossy()? - )?; - } - Ok(()) -} - -fn dump_aranges( - w: &mut W, - debug_aranges: &gimli::DebugAranges, -) -> Result<()> { - writeln!(w, "\n.debug_aranges")?; - - let mut headers = debug_aranges.headers(); - while let Some(header) = headers.next()? { - writeln!( - w, - "Address Range Header: length = 0x{:08x}, version = 0x{:04x}, cu_offset = 0x{:08x}, addr_size = 0x{:02x}, seg_size = 0x{:02x}", - header.length(), - header.encoding().version, - header.debug_info_offset().0, - header.encoding().address_size, - header.segment_size(), - )?; - let mut aranges = header.entries(); - while let Some(arange) = aranges.next()? { - let range = arange.range(); - if let Some(segment) = arange.segment() { - writeln!( - w, - "[0x{:016x}, 0x{:016x}) segment 0x{:x}", - range.begin, range.end, segment - )?; - } else { - writeln!(w, "[0x{:016x}, 0x{:016x})", range.begin, range.end)?; - } - } - } - Ok(()) -} diff -Nru temporalio-1.3.0/vendor/gimli/examples/dwarf-validate.rs temporalio-1.3.0/vendor/gimli/examples/dwarf-validate.rs --- temporalio-1.3.0/vendor/gimli/examples/dwarf-validate.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/examples/dwarf-validate.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,267 +0,0 @@ -// Allow clippy lints when building without clippy. -#![allow(unknown_lints)] - -use gimli::{AttributeValue, UnitHeader}; -use object::{Object, ObjectSection}; -use rayon::prelude::*; -use std::borrow::{Borrow, Cow}; -use std::env; -use std::fs; -use std::io::{self, BufWriter, Write}; -use std::iter::Iterator; -use std::path::{Path, PathBuf}; -use std::process; -use std::sync::Mutex; -use typed_arena::Arena; - -trait Reader: gimli::Reader + Send + Sync { - type SyncSendEndian: gimli::Endianity + Send + Sync; -} - -impl<'input, Endian> Reader for gimli::EndianSlice<'input, Endian> -where - Endian: gimli::Endianity + Send + Sync, -{ - type SyncSendEndian = Endian; -} - -struct ErrorWriter { - inner: Mutex<(W, usize)>, - path: PathBuf, -} - -impl ErrorWriter { - #[allow(clippy::needless_pass_by_value)] - fn error(&self, s: String) { - let mut lock = self.inner.lock().unwrap(); - writeln!(&mut lock.0, "DWARF error in {}: {}", self.path.display(), s).unwrap(); - lock.1 += 1; - } -} - -fn main() { - let mut w = BufWriter::new(io::stdout()); - let mut errors = 0; - for arg in env::args_os().skip(1) { - let path = Path::new(&arg); - let file = match fs::File::open(&path) { - Ok(file) => file, - Err(err) => { - eprintln!("Failed to open file '{}': {}", path.display(), err); - errors += 1; - continue; - } - }; - let file = match unsafe { memmap2::Mmap::map(&file) } { - Ok(mmap) => mmap, - Err(err) => { - eprintln!("Failed to map file '{}': {}", path.display(), &err); - errors += 1; - continue; - } - }; - let file = match object::File::parse(&*file) { - Ok(file) => file, - Err(err) => { - eprintln!("Failed to parse file '{}': {}", path.display(), err); - errors += 1; - continue; - } - }; - - let endian = if file.is_little_endian() { - gimli::RunTimeEndian::Little - } else { - gimli::RunTimeEndian::Big - }; - let mut error_writer = ErrorWriter { - inner: Mutex::new((&mut w, 0)), - path: path.to_owned(), - }; - validate_file(&mut error_writer, &file, endian); - errors += error_writer.inner.into_inner().unwrap().1; - } - // Flush any errors. - drop(w); - if errors > 0 { - process::exit(1); - } -} - -fn validate_file(w: &mut ErrorWriter, file: &object::File, endian: Endian) -where - W: Write + Send, - Endian: gimli::Endianity + Send + Sync, -{ - let arena = Arena::new(); - - fn load_section<'a, 'file, 'input, S, Endian>( - arena: &'a Arena>, - file: &'file object::File<'input>, - endian: Endian, - ) -> S - where - S: gimli::Section>, - Endian: gimli::Endianity + Send + Sync, - 'file: 'input, - 'a: 'file, - { - let data = match file.section_by_name(S::section_name()) { - Some(ref section) => section - .uncompressed_data() - .unwrap_or(Cow::Borrowed(&[][..])), - None => Cow::Borrowed(&[][..]), - }; - let data_ref = (*arena.alloc(data)).borrow(); - S::from(gimli::EndianSlice::new(data_ref, endian)) - } - - // Variables representing sections of the file. The type of each is inferred from its use in the - // validate_info function below. - let debug_abbrev = &load_section(&arena, file, endian); - let debug_info = &load_section(&arena, file, endian); - - validate_info(w, debug_info, debug_abbrev); -} - -struct UnitSummary { - // True if we successfully parsed all the DIEs and attributes in the compilation unit - internally_valid: bool, - offset: gimli::DebugInfoOffset, - die_offsets: Vec, - global_die_references: Vec<(gimli::UnitOffset, gimli::DebugInfoOffset)>, -} - -fn validate_info( - w: &mut ErrorWriter, - debug_info: &gimli::DebugInfo, - debug_abbrev: &gimli::DebugAbbrev, -) where - W: Write + Send, - R: Reader, -{ - let mut units = Vec::new(); - let mut units_iter = debug_info.units(); - let mut last_offset = 0; - loop { - let u = match units_iter.next() { - Err(err) => { - w.error(format!( - "Can't read unit header at offset {:#x}, stopping reading units: {}", - last_offset, err - )); - break; - } - Ok(None) => break, - Ok(Some(u)) => u, - }; - last_offset = u.offset().as_debug_info_offset().unwrap().0 + u.length_including_self(); - units.push(u); - } - let process_unit = |unit: UnitHeader| -> UnitSummary { - let unit_offset = unit.offset().as_debug_info_offset().unwrap(); - let mut ret = UnitSummary { - internally_valid: false, - offset: unit_offset, - die_offsets: Vec::new(), - global_die_references: Vec::new(), - }; - let abbrevs = match unit.abbreviations(debug_abbrev) { - Ok(abbrevs) => abbrevs, - Err(err) => { - w.error(format!( - "Invalid abbrevs for unit {:#x}: {}", - unit_offset.0, &err - )); - return ret; - } - }; - let mut entries = unit.entries(&abbrevs); - let mut unit_refs = Vec::new(); - loop { - let (_, entry) = match entries.next_dfs() { - Err(err) => { - w.error(format!( - "Invalid DIE for unit {:#x}: {}", - unit_offset.0, &err - )); - return ret; - } - Ok(None) => break, - Ok(Some(entry)) => entry, - }; - ret.die_offsets.push(entry.offset()); - - let mut attrs = entry.attrs(); - loop { - let attr = match attrs.next() { - Err(err) => { - w.error(format!( - "Invalid attribute for unit {:#x} at DIE {:#x}: {}", - unit_offset.0, - entry.offset().0, - &err - )); - return ret; - } - Ok(None) => break, - Ok(Some(attr)) => attr, - }; - match attr.value() { - AttributeValue::UnitRef(offset) => { - unit_refs.push((entry.offset(), offset)); - } - AttributeValue::DebugInfoRef(offset) => { - ret.global_die_references.push((entry.offset(), offset)); - } - _ => (), - } - } - } - ret.internally_valid = true; - ret.die_offsets.shrink_to_fit(); - ret.global_die_references.shrink_to_fit(); - - // Check intra-unit references - for (from, to) in unit_refs { - if ret.die_offsets.binary_search(&to).is_err() { - w.error(format!( - "Invalid intra-unit reference in unit {:#x} from DIE {:#x} to {:#x}", - unit_offset.0, from.0, to.0 - )); - } - } - - ret - }; - let processed_units = units.into_par_iter().map(process_unit).collect::>(); - - let check_unit = |summary: &UnitSummary| { - if !summary.internally_valid { - return; - } - for &(from, to) in summary.global_die_references.iter() { - let u = match processed_units.binary_search_by_key(&to, |v| v.offset) { - Ok(i) => &processed_units[i], - Err(i) => { - if i > 0 { - &processed_units[i - 1] - } else { - w.error(format!("Invalid cross-unit reference in unit {:#x} from DIE {:#x} to global DIE {:#x}: no unit found", - summary.offset.0, from.0, to.0)); - continue; - } - } - }; - if !u.internally_valid { - continue; - } - let to_offset = gimli::UnitOffset(to.0 - u.offset.0); - if u.die_offsets.binary_search(&to_offset).is_err() { - w.error(format!("Invalid cross-unit reference in unit {:#x} from DIE {:#x} to global DIE {:#x}: unit at {:#x} contains no DIE {:#x}", - summary.offset.0, from.0, to.0, u.offset.0, to_offset.0)); - } - } - }; - processed_units.par_iter().for_each(check_unit); -} diff -Nru temporalio-1.3.0/vendor/gimli/examples/simple_line.rs temporalio-1.3.0/vendor/gimli/examples/simple_line.rs --- temporalio-1.3.0/vendor/gimli/examples/simple_line.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/examples/simple_line.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,106 +0,0 @@ -//! A simple example of parsing `.debug_line`. - -use object::{Object, ObjectSection}; -use std::{borrow, env, fs, path}; - -fn main() { - for path in env::args().skip(1) { - let file = fs::File::open(&path).unwrap(); - let mmap = unsafe { memmap2::Mmap::map(&file).unwrap() }; - let object = object::File::parse(&*mmap).unwrap(); - let endian = if object.is_little_endian() { - gimli::RunTimeEndian::Little - } else { - gimli::RunTimeEndian::Big - }; - dump_file(&object, endian).unwrap(); - } -} - -fn dump_file(object: &object::File, endian: gimli::RunTimeEndian) -> Result<(), gimli::Error> { - // Load a section and return as `Cow<[u8]>`. - let load_section = |id: gimli::SectionId| -> Result, gimli::Error> { - match object.section_by_name(id.name()) { - Some(ref section) => Ok(section - .uncompressed_data() - .unwrap_or(borrow::Cow::Borrowed(&[][..]))), - None => Ok(borrow::Cow::Borrowed(&[][..])), - } - }; - - // Load all of the sections. - let dwarf_cow = gimli::Dwarf::load(&load_section)?; - - // Borrow a `Cow<[u8]>` to create an `EndianSlice`. - let borrow_section: &dyn for<'a> Fn( - &'a borrow::Cow<[u8]>, - ) -> gimli::EndianSlice<'a, gimli::RunTimeEndian> = - &|section| gimli::EndianSlice::new(&*section, endian); - - // Create `EndianSlice`s for all of the sections. - let dwarf = dwarf_cow.borrow(&borrow_section); - - // Iterate over the compilation units. - let mut iter = dwarf.units(); - while let Some(header) = iter.next()? { - println!( - "Line number info for unit at <.debug_info+0x{:x}>", - header.offset().as_debug_info_offset().unwrap().0 - ); - let unit = dwarf.unit(header)?; - - // Get the line program for the compilation unit. - if let Some(program) = unit.line_program.clone() { - let comp_dir = if let Some(ref dir) = unit.comp_dir { - path::PathBuf::from(dir.to_string_lossy().into_owned()) - } else { - path::PathBuf::new() - }; - - // Iterate over the line program rows. - let mut rows = program.rows(); - while let Some((header, row)) = rows.next_row()? { - if row.end_sequence() { - // End of sequence indicates a possible gap in addresses. - println!("{:x} end-sequence", row.address()); - } else { - // Determine the path. Real applications should cache this for performance. - let mut path = path::PathBuf::new(); - if let Some(file) = row.file(header) { - path = comp_dir.clone(); - - // The directory index 0 is defined to correspond to the compilation unit directory. - if file.directory_index() != 0 { - if let Some(dir) = file.directory(header) { - path.push( - dwarf.attr_string(&unit, dir)?.to_string_lossy().as_ref(), - ); - } - } - - path.push( - dwarf - .attr_string(&unit, file.path_name())? - .to_string_lossy() - .as_ref(), - ); - } - - // Determine line/column. DWARF line/column is never 0, so we use that - // but other applications may want to display this differently. - let line = match row.line() { - Some(line) => line.get(), - None => 0, - }; - let column = match row.column() { - gimli::ColumnType::LeftEdge => 0, - gimli::ColumnType::Column(column) => column.get(), - }; - - println!("{:x} {}:{}:{}", row.address(), path.display(), line, column); - } - } - } - } - Ok(()) -} diff -Nru temporalio-1.3.0/vendor/gimli/examples/simple.rs temporalio-1.3.0/vendor/gimli/examples/simple.rs --- temporalio-1.3.0/vendor/gimli/examples/simple.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/examples/simple.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -//! A simple example of parsing `.debug_info`. - -use object::{Object, ObjectSection}; -use std::{borrow, env, fs}; - -fn main() { - for path in env::args().skip(1) { - let file = fs::File::open(&path).unwrap(); - let mmap = unsafe { memmap2::Mmap::map(&file).unwrap() }; - let object = object::File::parse(&*mmap).unwrap(); - let endian = if object.is_little_endian() { - gimli::RunTimeEndian::Little - } else { - gimli::RunTimeEndian::Big - }; - dump_file(&object, endian).unwrap(); - } -} - -fn dump_file(object: &object::File, endian: gimli::RunTimeEndian) -> Result<(), gimli::Error> { - // Load a section and return as `Cow<[u8]>`. - let load_section = |id: gimli::SectionId| -> Result, gimli::Error> { - match object.section_by_name(id.name()) { - Some(ref section) => Ok(section - .uncompressed_data() - .unwrap_or(borrow::Cow::Borrowed(&[][..]))), - None => Ok(borrow::Cow::Borrowed(&[][..])), - } - }; - - // Load all of the sections. - let dwarf_cow = gimli::Dwarf::load(&load_section)?; - - // Borrow a `Cow<[u8]>` to create an `EndianSlice`. - let borrow_section: &dyn for<'a> Fn( - &'a borrow::Cow<[u8]>, - ) -> gimli::EndianSlice<'a, gimli::RunTimeEndian> = - &|section| gimli::EndianSlice::new(&*section, endian); - - // Create `EndianSlice`s for all of the sections. - let dwarf = dwarf_cow.borrow(&borrow_section); - - // Iterate over the compilation units. - let mut iter = dwarf.units(); - while let Some(header) = iter.next()? { - println!( - "Unit at <.debug_info+0x{:x}>", - header.offset().as_debug_info_offset().unwrap().0 - ); - let unit = dwarf.unit(header)?; - - // Iterate over the Debugging Information Entries (DIEs) in the unit. - let mut depth = 0; - let mut entries = unit.entries(); - while let Some((delta_depth, entry)) = entries.next_dfs()? { - depth += delta_depth; - println!("<{}><{:x}> {}", depth, entry.offset().0, entry.tag()); - - // Iterate over the attributes in the DIE. - let mut attrs = entry.attrs(); - while let Some(attr) = attrs.next()? { - println!(" {}: {:?}", attr.name(), attr.value()); - } - } - } - Ok(()) -} diff -Nru temporalio-1.3.0/vendor/gimli/README.md temporalio-1.3.0/vendor/gimli/README.md --- temporalio-1.3.0/vendor/gimli/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -22,7 +22,7 @@ * Unsure which object file parser to use? Try the cross-platform [`object`](https://github.com/gimli-rs/object) crate. See the - [`examples/`](./examples) directory for usage with `gimli`. + [`gimli-examples`](./crates/examples/src/bin) crate for usage with `gimli`. ## Install @@ -30,10 +30,13 @@ ```toml [dependencies] -gimli = "0.27.3" +gimli = "0.28.0" ``` -The minimum supported Rust version is 1.42.0. +The minimum supported Rust version is: + +* 1.60.0 for the `read` feature and its dependencies. +* 1.65.0 for other features. ## Documentation @@ -41,11 +44,11 @@ * Example programs: - * [A simple `.debug_info` parser](./examples/simple.rs) + * [A simple `.debug_info` parser](./crates/examples/src/bin/simple.rs) - * [A simple `.debug_line` parser](./examples/simple_line.rs) + * [A simple `.debug_line` parser](./crates/examples/src/bin/simple_line.rs) - * [A `dwarfdump` clone](./examples/dwarfdump.rs) + * [A `dwarfdump` clone](./crates/examples/src/bin/dwarfdump.rs) * [An `addr2line` clone](https://github.com/gimli-rs/addr2line) @@ -56,7 +59,7 @@ compilers used to create each compilation unit within a shared library or executable (via `DW_AT_producer`). - * [`dwarf-validate`](./examples/dwarf-validate.rs), a program to validate the + * [`dwarf-validate`](./crates/examples/src/bin/dwarf-validate.rs), a program to validate the integrity of some DWARF and its references between sections and compilation units. diff -Nru temporalio-1.3.0/vendor/gimli/src/arch.rs temporalio-1.3.0/vendor/gimli/src/arch.rs --- temporalio-1.3.0/vendor/gimli/src/arch.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/src/arch.rs 2023-10-30 19:40:00.000000000 +0000 @@ -44,7 +44,8 @@ /// ARM architecture specific definitions. /// -/// See [DWARF for the ARM Architecture](https://developer.arm.com/documentation/ihi0040/c/). +/// See [DWARF for the ARM Architecture]( +/// https://github.com/ARM-software/abi-aa/blob/main/aadwarf32/aadwarf32.rst). #[derive(Debug, Clone, Copy)] pub struct Arm; @@ -99,6 +100,8 @@ SPSR_UND = (132, "SPSR_UND"), SPSR_SVC = (133, "SPSR_SVC"), + RA_AUTH_CODE = (143, "RA_AUTH_CODE"), + R8_USR = (144, "R8_USR"), R9_USR = (145, "R9_USR"), R10_USR = (146, "R10_USR"), @@ -168,6 +171,11 @@ D29 = (285, "D29"), D30 = (286, "D30"), D31 = (287, "D31"), + + TPIDRURO = (320, "TPIDRURO"), + TPIDRURW = (321, "TPIDRURW"), + TPIDPR = (322, "TPIDPR"), + HTPIDPR = (323, "HTPIDPR"), }, aliases { SP = (13, "SP"), @@ -219,7 +227,8 @@ /// ARM 64-bit (AArch64) architecture specific definitions. /// -/// See [DWARF for the ARM 64-bit Architecture](https://developer.arm.com/documentation/ihi0057/b/). +/// See [DWARF for the ARM 64-bit Architecture]( +/// https://github.com/ARM-software/abi-aa/blob/main/aadwarf64/aadwarf64.rst). #[derive(Debug, Clone, Copy)] pub struct AArch64; @@ -256,6 +265,14 @@ X29 = (29, "X29"), X30 = (30, "X30"), SP = (31, "SP"), + PC = (32, "PC"), + ELR_MODE = (33, "ELR_mode"), + RA_SIGN_STATE = (34, "RA_SIGN_STATE"), + TPIDRRO_EL0 = (35, "TPIDRRO_EL0"), + TPIDR_EL0 = (36, "TPIDR_EL0"), + TPIDR_EL1 = (37, "TPIDR_EL1"), + TPIDR_EL2 = (38, "TPIDR_EL2"), + TPIDR_EL3 = (39, "TPIDR_EL3"), V0 = (64, "V0"), V1 = (65, "V1"), diff -Nru temporalio-1.3.0/vendor/gimli/src/common.rs temporalio-1.3.0/vendor/gimli/src/common.rs --- temporalio-1.3.0/vendor/gimli/src/common.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/src/common.rs 2023-10-30 19:40:00.000000000 +0000 @@ -27,6 +27,16 @@ } } +/// Which vendor extensions to support. +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +#[non_exhaustive] +pub enum Vendor { + /// A default set of extensions, including some common GNU extensions. + Default, + /// AAarch64 extensions. + AArch64, +} + /// Encoding parameters that are commonly used for multiple DWARF sections. /// /// This is intended to be small enough to pass by value. diff -Nru temporalio-1.3.0/vendor/gimli/src/constants.rs temporalio-1.3.0/vendor/gimli/src/constants.rs --- temporalio-1.3.0/vendor/gimli/src/constants.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/src/constants.rs 2023-10-30 19:40:00.000000000 +0000 @@ -56,7 +56,10 @@ // } // } macro_rules! dw { - ($(#[$meta:meta])* $struct_name:ident($struct_type:ty) { $($name:ident = $val:expr),+ $(,)? }) => { + ($(#[$meta:meta])* $struct_name:ident($struct_type:ty) + { $($name:ident = $val:expr),+ $(,)? } + $(, aliases { $($alias_name:ident = $alias_val:expr),+ $(,)? })? + ) => { $(#[$meta])* #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] pub struct $struct_name(pub $struct_type); @@ -64,6 +67,9 @@ $( pub const $name: $struct_name = $struct_name($val); )+ + $($( + pub const $alias_name: $struct_name = $struct_name($alias_val); + )+)* impl $struct_name { pub fn static_string(&self) -> Option<&'static str> { @@ -182,6 +188,9 @@ DW_CFA_GNU_window_save = 0x2d, DW_CFA_GNU_args_size = 0x2e, DW_CFA_GNU_negative_offset_extended = 0x2f, +}, +aliases { + DW_CFA_AARCH64_negate_ra_state = 0x2d, }); dw!( diff -Nru temporalio-1.3.0/vendor/gimli/src/lib.rs temporalio-1.3.0/vendor/gimli/src/lib.rs --- temporalio-1.3.0/vendor/gimli/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -48,7 +48,7 @@ #[macro_use] extern crate std; -#[cfg(feature = "stable_deref_trait")] +#[cfg(feature = "endian-reader")] pub use stable_deref_trait::{CloneStableDeref, StableDeref}; mod common; diff -Nru temporalio-1.3.0/vendor/gimli/src/read/cfi.rs temporalio-1.3.0/vendor/gimli/src/read/cfi.rs --- temporalio-1.3.0/vendor/gimli/src/read/cfi.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/src/read/cfi.rs 2023-10-30 19:40:00.000000000 +0000 @@ -8,7 +8,9 @@ use core::num::Wrapping; use super::util::{ArrayLike, ArrayVec}; -use crate::common::{DebugFrameOffset, EhFrameOffset, Encoding, Format, Register, SectionId}; +use crate::common::{ + DebugFrameOffset, EhFrameOffset, Encoding, Format, Register, SectionId, Vendor, +}; use crate::constants::{self, DwEhPe}; use crate::endianity::Endianity; use crate::read::{ @@ -34,6 +36,7 @@ section: R, address_size: u8, segment_size: u8, + vendor: Vendor, } impl DebugFrame { @@ -52,6 +55,13 @@ pub fn set_segment_size(&mut self, segment_size: u8) { self.segment_size = segment_size } + + /// Set the vendor extensions to use. + /// + /// This defaults to `Vendor::Default`. + pub fn set_vendor(&mut self, vendor: Vendor) { + self.vendor = vendor; + } } impl<'input, Endian> DebugFrame> @@ -95,6 +105,7 @@ section, address_size: mem::size_of::() as u8, segment_size: 0, + vendor: Vendor::Default, } } } @@ -158,11 +169,7 @@ if fde_count_enc == constants::DW_EH_PE_omit || table_enc == constants::DW_EH_PE_omit { fde_count = 0 } else { - let ptr = parse_encoded_pointer(fde_count_enc, ¶meters, &mut reader)?; - fde_count = match ptr { - Pointer::Direct(c) => c, - Pointer::Indirect(_) => return Err(Error::UnsupportedPointerEncoding), - } + fde_count = parse_encoded_pointer(fde_count_enc, ¶meters, &mut reader)?.direct()?; } Ok(ParsedEhFrameHdr { @@ -348,11 +355,8 @@ let head = reader.split(R::Offset::from_u64((len / 2) * row_size)?)?; let tail = reader.clone(); - let pivot = parse_encoded_pointer(self.hdr.table_enc, ¶meters, &mut reader)?; - let pivot = match pivot { - Pointer::Direct(x) => x, - Pointer::Indirect(_) => return Err(Error::UnsupportedPointerEncoding), - }; + let pivot = + parse_encoded_pointer(self.hdr.table_enc, ¶meters, &mut reader)?.direct()?; match pivot.cmp(&address) { Ordering::Equal => { @@ -379,15 +383,8 @@ /// /// This does not support indirect pointers. pub fn pointer_to_offset(&self, ptr: Pointer) -> Result> { - let ptr = match ptr { - Pointer::Direct(x) => x, - _ => return Err(Error::UnsupportedPointerEncoding), - }; - - let eh_frame_ptr = match self.hdr.eh_frame_ptr() { - Pointer::Direct(x) => x, - _ => return Err(Error::UnsupportedPointerEncoding), - }; + let ptr = ptr.direct()?; + let eh_frame_ptr = self.hdr.eh_frame_ptr().direct()?; // Calculate the offset in the EhFrame section R::Offset::from_u64(ptr - eh_frame_ptr).map(EhFrameOffset) @@ -496,6 +493,7 @@ pub struct EhFrame { section: R, address_size: u8, + vendor: Vendor, } impl EhFrame { @@ -505,6 +503,13 @@ pub fn set_address_size(&mut self, address_size: u8) { self.address_size = address_size } + + /// Set the vendor extensions to use. + /// + /// This defaults to `Vendor::Default`. + pub fn set_vendor(&mut self, vendor: Vendor) { + self.vendor = vendor; + } } impl<'input, Endian> EhFrame> @@ -547,6 +552,7 @@ EhFrame { section, address_size: mem::size_of::() as u8, + vendor: Vendor::Default, } } } @@ -627,6 +633,9 @@ /// The segment size to use if `has_address_and_segment_sizes` returns false. fn segment_size(&self) -> u8; + + /// The vendor extensions to use. + fn vendor(&self) -> Vendor; } /// A section holding unwind information: either `.debug_frame` or @@ -822,6 +831,10 @@ fn segment_size(&self) -> u8 { self.segment_size } + + fn vendor(&self) -> Vendor { + self.vendor + } } impl UnwindSection for DebugFrame { @@ -862,6 +875,10 @@ fn segment_size(&self) -> u8 { 0 } + + fn vendor(&self) -> Vendor { + self.vendor + } } impl UnwindSection for EhFrame { @@ -1435,6 +1452,7 @@ address_size: self.address_size, section: section.section(), }, + vendor: section.vendor(), } } @@ -1683,12 +1701,12 @@ let initial_address = parse_encoded_pointer(encoding, parameters, input)?; // Ignore indirection. - let initial_address = initial_address.into(); + let initial_address = initial_address.pointer(); // Address ranges cannot be relative to anything, so just grab the // data format bits from the encoding. let address_range = parse_encoded_pointer(encoding.format(), parameters, input)?; - Ok((initial_address, address_range.into())) + Ok((initial_address, address_range.pointer())) } else { let initial_address = input.read_address(cie.address_size)?; let address_range = input.read_address(cie.address_size)?; @@ -1778,6 +1796,7 @@ address_size: self.cie.address_size, section: section.section(), }, + vendor: section.vendor(), } } @@ -2414,6 +2433,18 @@ self.ctx.row_mut().saved_args_size = size; } + // AArch64 extension. + NegateRaState => { + let register = crate::AArch64::RA_SIGN_STATE; + let value = match self.ctx.row().register(register) { + RegisterRule::Undefined => 0, + RegisterRule::Constant(value) => value, + _ => return Err(Error::CfiInstructionInInvalidContext), + }; + self.ctx + .set_register_rule(register, RegisterRule::Constant(value ^ 1))?; + } + // No operation. Nop => {} }; @@ -2783,6 +2814,7 @@ /// has been saved and the rule to find the value for the register in the /// previous frame." #[derive(Clone, Debug, PartialEq, Eq)] +#[non_exhaustive] pub enum RegisterRule { /// > A register that has this rule has no recoverable value in the previous /// > frame. (By convention, it is not preserved by a callee.) @@ -2815,6 +2847,9 @@ /// "The rule is defined externally to this specification by the augmenter." Architectural, + + /// This is a pseudo-register with a constant value. + Constant(u64), } impl RegisterRule { @@ -2825,6 +2860,7 @@ /// A parsed call frame instruction. #[derive(Clone, Debug, PartialEq, Eq)] +#[non_exhaustive] pub enum CallFrameInstruction { // 6.4.2.1 Row Creation Methods /// > 1. DW_CFA_set_loc @@ -3102,6 +3138,17 @@ size: u64, }, + /// > DW_CFA_AARCH64_negate_ra_state + /// > + /// > AArch64 Extension + /// > + /// > The DW_CFA_AARCH64_negate_ra_state operation negates bit[0] of the + /// > RA_SIGN_STATE pseudo-register. It does not take any operands. The + /// > DW_CFA_AARCH64_negate_ra_state must not be mixed with other DWARF Register + /// > Rule Instructions on the RA_SIGN_STATE pseudo-register in one Common + /// > Information Entry (CIE) and Frame Descriptor Entry (FDE) program sequence. + NegateRaState, + // 6.4.2.5 Padding Instruction /// > 1. DW_CFA_nop /// > @@ -3118,6 +3165,7 @@ input: &mut R, address_encoding: Option, parameters: &PointerEncodingParameters, + vendor: Vendor, ) -> Result> { let instruction = input.read_u8()?; let high_bits = instruction & CFI_INSTRUCTION_HIGH_BITS_MASK; @@ -3151,10 +3199,7 @@ constants::DW_CFA_set_loc => { let address = if let Some(encoding) = address_encoding { - match parse_encoded_pointer(encoding, parameters, input)? { - Pointer::Direct(x) => x, - _ => return Err(Error::UnsupportedPointerEncoding), - } + parse_encoded_pointer(encoding, parameters, input)?.direct()? } else { input.read_address(parameters.address_size)? }; @@ -3309,6 +3354,10 @@ Ok(CallFrameInstruction::ArgsSize { size }) } + constants::DW_CFA_AARCH64_negate_ra_state if vendor == Vendor::AArch64 => { + Ok(CallFrameInstruction::NegateRaState) + } + otherwise => Err(Error::UnknownCallFrameInstruction(otherwise)), } } @@ -3323,6 +3372,7 @@ input: R, address_encoding: Option, parameters: PointerEncodingParameters<'a, R>, + vendor: Vendor, } impl<'a, R: Reader> CallFrameInstructionIter<'a, R> { @@ -3332,8 +3382,12 @@ return Ok(None); } - match CallFrameInstruction::parse(&mut self.input, self.address_encoding, &self.parameters) - { + match CallFrameInstruction::parse( + &mut self.input, + self.address_encoding, + &self.parameters, + self.vendor, + ) { Ok(instruction) => Ok(Some(instruction)), Err(e) => { self.input.empty(); @@ -3389,15 +3443,6 @@ } } -impl From for u64 { - #[inline] - fn from(p: Pointer) -> u64 { - match p { - Pointer::Direct(p) | Pointer::Indirect(p) => p, - } - } -} - impl Pointer { #[inline] fn new(encoding: constants::DwEhPe, address: u64) -> Pointer { @@ -3407,6 +3452,23 @@ Pointer::Direct(address) } } + + /// Return the direct pointer value. + #[inline] + pub fn direct(self) -> Result { + match self { + Pointer::Direct(p) => Ok(p), + Pointer::Indirect(_) => Err(Error::UnsupportedPointerEncoding), + } + } + + /// Return the pointer value, discarding indirectness information. + #[inline] + pub fn pointer(self) -> u64 { + match self { + Pointer::Direct(p) | Pointer::Indirect(p) => p, + } + } } #[derive(Clone, Debug)] @@ -3637,7 +3699,7 @@ .uleb(cie.code_alignment_factor) .sleb(cie.data_alignment_factor) .uleb(cie.return_address_register.0.into()) - .append_bytes(cie.initial_instructions.into()) + .append_bytes(cie.initial_instructions.slice()) .mark(&end); cie.length = (&end - &start) as usize; @@ -3714,11 +3776,11 @@ let section = section.uleb(u64::from(fde.cie.address_size)); match fde.cie.address_size { 4 => section.D32({ - let x: u64 = lsda.into(); + let x: u64 = lsda.pointer(); x as u32 }), 8 => section.D64({ - let x: u64 = lsda.into(); + let x: u64 = lsda.pointer(); x }), x => panic!("Unsupported address size: {}", x), @@ -3732,7 +3794,7 @@ section }; - let section = section.append_bytes(fde.instructions.into()).mark(&end); + let section = section.append_bytes(fde.instructions.slice()).mark(&end); fde.length = (&end - &start) as usize; length.set_const(fde.length as u64); @@ -4445,7 +4507,7 @@ address_size, section: &R::default(), }; - CallFrameInstruction::parse(input, None, parameters) + CallFrameInstruction::parse(input, None, parameters, Vendor::Default) } #[test] @@ -4558,7 +4620,12 @@ section: &EndianSlice::new(&[], LittleEndian), }; assert_eq!( - CallFrameInstruction::parse(input, Some(constants::DW_EH_PE_textrel), parameters), + CallFrameInstruction::parse( + input, + Some(constants::DW_EH_PE_textrel), + parameters, + Vendor::Default + ), Ok(CallFrameInstruction::SetLoc { address: expected_addr, }) @@ -5018,6 +5085,27 @@ } #[test] + fn test_parse_cfi_instruction_negate_ra_state() { + let expected_rest = [1, 2, 3, 4]; + let section = Section::with_endian(Endian::Little) + .D8(constants::DW_CFA_AARCH64_negate_ra_state.0) + .append_bytes(&expected_rest); + let contents = section.get_contents().unwrap(); + let input = &mut EndianSlice::new(&contents, LittleEndian); + let parameters = &PointerEncodingParameters { + bases: &SectionBaseAddresses::default(), + func_base: None, + address_size: 8, + section: &EndianSlice::default(), + }; + assert_eq!( + CallFrameInstruction::parse(input, None, parameters, Vendor::AArch64), + Ok(CallFrameInstruction::NegateRaState) + ); + assert_eq!(*input, EndianSlice::new(&expected_rest, LittleEndian)); + } + + #[test] fn test_parse_cfi_instruction_unknown_instruction() { let expected_rest = [1, 2, 3, 4]; let unknown_instr = constants::DwCfa(0b0011_1111); @@ -5065,6 +5153,7 @@ input, address_encoding: None, parameters, + vendor: Vendor::Default, }; assert_eq!( @@ -5102,6 +5191,7 @@ input, address_encoding: None, parameters, + vendor: Vendor::Default, }; assert_eq!( @@ -5580,6 +5670,55 @@ } #[test] + fn test_eval_negate_ra_state() { + let cie = make_test_cie(); + let ctx = UnwindContext::new(); + let mut expected = ctx.clone(); + expected + .set_register_rule(crate::AArch64::RA_SIGN_STATE, RegisterRule::Constant(1)) + .unwrap(); + let instructions = [(Ok(false), CallFrameInstruction::NegateRaState)]; + assert_eval(ctx, expected, cie, None, instructions); + + let cie = make_test_cie(); + let ctx = UnwindContext::new(); + let mut expected = ctx.clone(); + expected + .set_register_rule(crate::AArch64::RA_SIGN_STATE, RegisterRule::Constant(0)) + .unwrap(); + let instructions = [ + (Ok(false), CallFrameInstruction::NegateRaState), + (Ok(false), CallFrameInstruction::NegateRaState), + ]; + assert_eval(ctx, expected, cie, None, instructions); + + // NegateRaState can't be used with other instructions. + let cie = make_test_cie(); + let ctx = UnwindContext::new(); + let mut expected = ctx.clone(); + expected + .set_register_rule( + crate::AArch64::RA_SIGN_STATE, + RegisterRule::Offset(cie.data_alignment_factor as i64), + ) + .unwrap(); + let instructions = [ + ( + Ok(false), + CallFrameInstruction::Offset { + register: crate::AArch64::RA_SIGN_STATE, + factored_offset: 1, + }, + ), + ( + Err(Error::CfiInstructionInInvalidContext), + CallFrameInstruction::NegateRaState, + ), + ]; + assert_eval(ctx, expected, cie, None, instructions); + } + + #[test] fn test_eval_nop() { let cie = make_test_cie(); let ctx = UnwindContext::new(); @@ -6262,7 +6401,6 @@ section.start().set_const(0); let section = section.get_contents().unwrap(); - let section = EndianSlice::new(§ion, LittleEndian); let eh_frame = kind.section(§ion); // Setup eh_frame_hdr diff -Nru temporalio-1.3.0/vendor/gimli/src/read/endian_slice.rs temporalio-1.3.0/vendor/gimli/src/read/endian_slice.rs --- temporalio-1.3.0/vendor/gimli/src/read/endian_slice.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/src/read/endian_slice.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,7 +4,7 @@ use alloc::borrow::Cow; #[cfg(feature = "read")] use alloc::string::String; -use core::ops::{Deref, Index, Range, RangeFrom, RangeTo}; +use core::ops::{Deref, Range, RangeFrom, RangeTo}; use core::str; use crate::endianity::Endianity; @@ -167,26 +167,6 @@ } } -impl<'input, Endian> Index for EndianSlice<'input, Endian> -where - Endian: Endianity, -{ - type Output = u8; - fn index(&self, idx: usize) -> &Self::Output { - &self.slice[idx] - } -} - -impl<'input, Endian> Index> for EndianSlice<'input, Endian> -where - Endian: Endianity, -{ - type Output = [u8]; - fn index(&self, idx: RangeFrom) -> &Self::Output { - &self.slice[idx] - } -} - impl<'input, Endian> Deref for EndianSlice<'input, Endian> where Endian: Endianity, @@ -197,15 +177,6 @@ } } -impl<'input, Endian> From> for &'input [u8] -where - Endian: Endianity, -{ - fn from(endian_slice: EndianSlice<'input, Endian>) -> &'input [u8] { - endian_slice.slice - } -} - impl<'input, Endian> Reader for EndianSlice<'input, Endian> where Endian: Endianity, diff -Nru temporalio-1.3.0/vendor/gimli/src/read/line.rs temporalio-1.3.0/vendor/gimli/src/read/line.rs --- temporalio-1.3.0/vendor/gimli/src/read/line.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/src/read/line.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2327,7 +2327,7 @@ fn test_parse_unknown_standard_opcode_many_args() { let input = [OPCODE_BASE, 1, 2, 3]; let input = EndianSlice::new(&input, LittleEndian); - let args = EndianSlice::new(&input[1..], LittleEndian); + let args = input.range_from(1..); let mut standard_opcode_lengths = Vec::new(); let mut header = make_test_header(input); standard_opcode_lengths.extend(header.standard_opcode_lengths.slice()); diff -Nru temporalio-1.3.0/vendor/gimli/src/read/mod.rs temporalio-1.3.0/vendor/gimli/src/read/mod.rs --- temporalio-1.3.0/vendor/gimli/src/read/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/src/read/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -41,10 +41,10 @@ //! //! Full example programs: //! -//! * [A simple parser](https://github.com/gimli-rs/gimli/blob/master/examples/simple.rs) +//! * [A simple parser](https://github.com/gimli-rs/gimli/blob/master/crates/examples/src/bin/simple.rs) //! //! * [A `dwarfdump` -//! clone](https://github.com/gimli-rs/gimli/blob/master/examples/dwarfdump.rs) +//! clone](https://github.com/gimli-rs/gimli/blob/master/crates/examples/src/bin/dwarfdump.rs) //! //! * [An `addr2line` clone](https://github.com/gimli-rs/addr2line) //! @@ -55,7 +55,7 @@ //! compilers used to create each compilation unit within a shared library or //! executable (via `DW_AT_producer`) //! -//! * [`dwarf-validate`](https://github.com/gimli-rs/gimli/blob/master/examples/dwarf-validate.rs), +//! * [`dwarf-validate`](https://github.com/gimli-rs/gimli/blob/master/crates/examples/src/bin/dwarf-validate.rs), //! a program to validate the integrity of some DWARF and its references //! between sections and compilation units. //! diff -Nru temporalio-1.3.0/vendor/gimli/src/read/unit.rs temporalio-1.3.0/vendor/gimli/src/read/unit.rs --- temporalio-1.3.0/vendor/gimli/src/read/unit.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/src/read/unit.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3295,7 +3295,7 @@ } }; - let section = section.append_bytes(unit.entries_buf.into()).mark(&end); + let section = section.append_bytes(unit.entries_buf.slice()).mark(&end); unit.unit_length = (&end - &start) as usize; length.set_const(unit.unit_length as u64); diff -Nru temporalio-1.3.0/vendor/gimli/src/write/cfi.rs temporalio-1.3.0/vendor/gimli/src/write/cfi.rs --- temporalio-1.3.0/vendor/gimli/src/write/cfi.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/gimli/src/write/cfi.rs 2023-10-30 19:40:00.000000000 +0000 @@ -377,6 +377,7 @@ /// /// This may be a CFA definition, a register rule, or some other directive. #[derive(Debug, Clone, PartialEq, Eq, Hash)] +#[non_exhaustive] pub enum CallFrameInstruction { /// Define the CFA rule to use the provided register and offset. Cfa(Register, i32), @@ -410,6 +411,9 @@ RestoreState, /// The size of the arguments that have been pushed onto the stack. ArgsSize(u32), + + /// AAarch64 extension: negate the `RA_SIGN_STATE` pseudo-register. + NegateRaState, } impl CallFrameInstruction { @@ -523,6 +527,9 @@ w.write_u8(constants::DW_CFA_GNU_args_size.0)?; w.write_uleb128(size.into())?; } + CallFrameInstruction::NegateRaState => { + w.write_u8(constants::DW_CFA_AARCH64_negate_ra_state.0)?; + } } Ok(()) } @@ -834,6 +841,7 @@ read::CallFrameInstruction::ArgsSize { size } => { CallFrameInstruction::ArgsSize(size as u32) } + read::CallFrameInstruction::NegateRaState => CallFrameInstruction::NegateRaState, read::CallFrameInstruction::Nop => return Ok(None), })) } @@ -847,7 +855,7 @@ use crate::arch::X86_64; use crate::read; use crate::write::EndianVec; - use crate::LittleEndian; + use crate::{LittleEndian, Vendor}; #[test] fn test_frame_table() { @@ -980,44 +988,61 @@ (28 + 0x20280, CallFrameInstruction::ArgsSize(23)), ]; + let fde_instructions_aarch64 = [(0, CallFrameInstruction::NegateRaState)]; + for &version in &[1, 3, 4] { for &address_size in &[4, 8] { - for &format in &[Format::Dwarf32, Format::Dwarf64] { - let encoding = Encoding { - format, - version, - address_size, - }; - let mut frames = FrameTable::default(); + for &vendor in &[Vendor::Default, Vendor::AArch64] { + for &format in &[Format::Dwarf32, Format::Dwarf64] { + let encoding = Encoding { + format, + version, + address_size, + }; + let mut frames = FrameTable::default(); + + let mut cie = CommonInformationEntry::new(encoding, 2, 8, X86_64::RA); + for i in &cie_instructions { + cie.add_instruction(i.clone()); + } + let cie_id = frames.add_cie(cie); - let mut cie = CommonInformationEntry::new(encoding, 2, 8, X86_64::RA); - for i in &cie_instructions { - cie.add_instruction(i.clone()); - } - let cie_id = frames.add_cie(cie); + let mut fde = FrameDescriptionEntry::new(Address::Constant(0x1000), 0x10); + for (o, i) in &fde_instructions { + fde.add_instruction(*o, i.clone()); + } + frames.add_fde(cie_id, fde); - let mut fde = FrameDescriptionEntry::new(Address::Constant(0x1000), 0x10); - for (o, i) in &fde_instructions { - fde.add_instruction(*o, i.clone()); - } - frames.add_fde(cie_id, fde); + if vendor == Vendor::AArch64 { + let mut fde = + FrameDescriptionEntry::new(Address::Constant(0x2000), 0x10); + for (o, i) in &fde_instructions_aarch64 { + fde.add_instruction(*o, i.clone()); + } + frames.add_fde(cie_id, fde); + } - let mut debug_frame = DebugFrame::from(EndianVec::new(LittleEndian)); - frames.write_debug_frame(&mut debug_frame).unwrap(); + let mut debug_frame = DebugFrame::from(EndianVec::new(LittleEndian)); + frames.write_debug_frame(&mut debug_frame).unwrap(); - let mut read_debug_frame = - read::DebugFrame::new(debug_frame.slice(), LittleEndian); - read_debug_frame.set_address_size(address_size); - let frames = FrameTable::from(&read_debug_frame, &|address| { - Some(Address::Constant(address)) - }) - .unwrap(); + let mut read_debug_frame = + read::DebugFrame::new(debug_frame.slice(), LittleEndian); + read_debug_frame.set_address_size(address_size); + read_debug_frame.set_vendor(vendor); + let frames = FrameTable::from(&read_debug_frame, &|address| { + Some(Address::Constant(address)) + }) + .unwrap(); - assert_eq!( - &frames.cies.get_index(0).unwrap().instructions, - &cie_instructions - ); - assert_eq!(&frames.fdes[0].1.instructions, &fde_instructions); + assert_eq!( + &frames.cies.get_index(0).unwrap().instructions, + &cie_instructions + ); + assert_eq!(&frames.fdes[0].1.instructions, &fde_instructions); + if vendor == Vendor::AArch64 { + assert_eq!(&frames.fdes[1].1.instructions, &fde_instructions_aarch64); + } + } } } } diff -Nru temporalio-1.3.0/vendor/governor/.cargo-checksum.json temporalio-1.3.0/vendor/governor/.cargo-checksum.json --- temporalio-1.3.0/vendor/governor/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/governor/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"f06e27994ecb13192e20caa539222e1ed4350558a404a7c75e255ea3fa222440","Cargo.toml":"e05bd5ed1a17979eef514bcf986fb9d7f9ac2feafa38565b156ffe268f2cf98e","README.md":"621e516f7efe64b9993ce99d2de6220f008b6b2f4964e49b8d7f6605a5620558","benches/governor_criterion_benches.rs":"a53ad224e9700d4a3019a01a387a3f7baf1bcbdda08808bdb65493c205a005e8","benches/multi_threaded.rs":"2aa4e0c06d632cefa56e546652f27131f8de29390b97930c7d49b0df3c27b8b1","benches/realtime_clock.rs":"e24d7402dff164065e05c5795e13cd7cc7eb3413a933ec389df237a0001085ea","benches/single_threaded.rs":"79081b1aac63dcd044e7b306b98907647fc8247b9fd51ae65d3d5d6bc7b19647","doc/centrifugal-governor.png":"d499b0c8cd4d72e5c7419a52ca12e89d867f27d7c8c51b7d87a3df39c16034bd","release.toml":"48ffb067e63ebdc6c015982f3daa2e3b21ebdc89e0d399fe111d854d08ad27a6","src/_guide.rs":"2d86209b34e1d9dd260995a3ec6e2f41d76a7e9feb450815d0547a0672c206d0","src/clock.rs":"31c62ef1fe98c01821ca7f25af3895c0fb071633c57beb327183765769fec46f","src/clock/default.rs":"7e296f7294d703bcab0dc48b510a1c66977481bde4f4f6b30901c9376cf878ca","src/clock/quanta.rs":"43f3f577055d889da690984ca4c3ec07e46619b3a014cad5167e3b0c0d0db9e7","src/clock/with_std.rs":"9fd6addaa89ea561835aa5b071a822558bdfa8d0fc14fd380e19e392a55f89de","src/errors.rs":"e92f27269a0c106dccbf55685fab60e33bcefed280bb7a49b2610964730bd995","src/gcra.rs":"27e12e22d319c6659c15bc9c656daa017d1daff8a05b688543313605a5cb5fce","src/jitter.rs":"b678fcca2139f7b6c44cd97165166f9854088c316cd05fbe933ffb7cdf1e028e","src/lib.rs":"08f82324a8a56728e1b384460b8600eb2c98016c3f193ba05026b68b2a58f3e4","src/middleware.rs":"ffcc94025021f112c39df9ad16fee30392ca843c47ce851ff9211ace30c2c6a1","src/nanos.rs":"a2a74406ace60215b0655d7c86887a5e60a302a70af645f1de2a8c964a707845","src/quota.rs":"b26f8595c094fee1b63b9cf85c5dbf2bae2f2c875b648e2de2135c504aaf3b26","src/state.rs":"15768d300eee9ed723c23ba73a26c0d3266e01556a95b9f3113d6960894ee7e9","src/state/direct.rs":"27df1877fb43559ba21262d110e8c0f4fa7a87c6281bb19ba4da84eb4eb056a3","src/state/direct/future.rs":"9461677fb1bb7381ae9629037a709941f2cd0ec4f58270c5f08004b603e3fb5e","src/state/direct/sinks.rs":"c2cbe03d3aa42aa081f27bf07e0d93e1071de94bae7ae36ebe66affcb916c525","src/state/direct/streams.rs":"ea6ed4536c0b60f032cc68c40c53f6e9711ee2cea53e1f1c6a51158ca2ccc3ef","src/state/in_memory.rs":"b1fc58ca33ba3d99c3d3c51ee10940cb1e13711aec35627ae8d82fab0a6dbd44","src/state/keyed.rs":"9bc6e406232445e7def725ce3b63c6cf87319ce932a5c986066b7b6a3f81e06c","src/state/keyed/dashmap.rs":"a214fdc0432fa1e2bce8382b5c29b64ab7f35cff7b3014f8146bc678cf9190bf","src/state/keyed/future.rs":"5a0c449b9fad5de161b8fa4035f6c218cc829c2681150755683fc29f88423374","src/state/keyed/hashmap.rs":"f00df64d833bac847278c43b3c6bfb06e72fa8010260ff66eb8513e72d548cdc","tests/direct.rs":"becc53b9fddbe0dd7b69fdaf32b357e2dd08c09fdc44d9f65c60ee7a000dbce7","tests/future.rs":"b759cd21c0e2f9392675efe9b89cb38d4a85c7f0ca80a32baaeecce5e1f11d19","tests/keyed_dashmap.rs":"7707b57dd54a7830b7eafab728ae55be666c0e08c2ceaadec6da86f63c9c21a2","tests/keyed_hashmap.rs":"23d255e114e265569f63d5bd9a4e8ca1003f1a4c304f8d18f6260e528422a9fd","tests/memory_leaks.rs":"3e6de2b2638d4bb997f3b28305fd58f756da94879682288895bfb8b447969e89","tests/middleware.rs":"a874889955c9062bd994bcec7e845cb2c0cbad9b0dbccad60477c2b298835047","tests/proptests.regressions":"311cabbcf38957db4fe3d5854f4a1fba91f60cdf008f56b8a65881df35156c18","tests/proptests.rs":"458248b5763113f57306bb3cc9da1c7ff03b12366f3ebd02db41fc8b04c78fd7","tests/sinks.rs":"9c5e327463443ac29304d471fce23d1cfeba198455f6013e78cbdcb5e5a7042a","tests/streams.rs":"e46ad6a349376c54de7912765192c2805969f3d871ff4d5a082681988cc5740b"},"package":"c390a940a5d157878dd057c78680a33ce3415bcd05b4799509ea44210914b4d5"} \ No newline at end of file +{"files":{"CHANGELOG.md":"8a36b82017fda89883cfec4268023bd54909369e0620b3082e141bda0f0a3a09","Cargo.toml":"8b67fe74088e40316485d029f70aa0de95cff2d16ca2c81887dec273f7676343","README.md":"621e516f7efe64b9993ce99d2de6220f008b6b2f4964e49b8d7f6605a5620558","benches/governor_criterion_benches.rs":"a53ad224e9700d4a3019a01a387a3f7baf1bcbdda08808bdb65493c205a005e8","benches/multi_threaded.rs":"2aa4e0c06d632cefa56e546652f27131f8de29390b97930c7d49b0df3c27b8b1","benches/realtime_clock.rs":"e24d7402dff164065e05c5795e13cd7cc7eb3413a933ec389df237a0001085ea","benches/single_threaded.rs":"79081b1aac63dcd044e7b306b98907647fc8247b9fd51ae65d3d5d6bc7b19647","doc/centrifugal-governor.png":"d499b0c8cd4d72e5c7419a52ca12e89d867f27d7c8c51b7d87a3df39c16034bd","release.toml":"48ffb067e63ebdc6c015982f3daa2e3b21ebdc89e0d399fe111d854d08ad27a6","src/_guide.rs":"b7d2c6049928bcd3ac5c4c5e3fff4439a64a2067000c25a1f37cd0a707f0506c","src/clock.rs":"31c62ef1fe98c01821ca7f25af3895c0fb071633c57beb327183765769fec46f","src/clock/default.rs":"7e296f7294d703bcab0dc48b510a1c66977481bde4f4f6b30901c9376cf878ca","src/clock/quanta.rs":"05d00181c9ba57bf680b4bfb717242860fdac3b41625e3f58b844c4e8d22a258","src/clock/with_std.rs":"9fd6addaa89ea561835aa5b071a822558bdfa8d0fc14fd380e19e392a55f89de","src/errors.rs":"08f017ad55958539862174daffb1f1f4c1d0caaf178f1f3ab9bef005faa87109","src/gcra.rs":"ef7cf4695fe0f8b3c8e0e10430f636d66f2806ae24cdfffe0bfa8232f79d51ed","src/jitter.rs":"b678fcca2139f7b6c44cd97165166f9854088c316cd05fbe933ffb7cdf1e028e","src/lib.rs":"c9a13eb4967dff605dcc5a6ef8d2397c88fe135f388776761a700b9b63603696","src/middleware.rs":"ffcc94025021f112c39df9ad16fee30392ca843c47ce851ff9211ace30c2c6a1","src/nanos.rs":"a2a74406ace60215b0655d7c86887a5e60a302a70af645f1de2a8c964a707845","src/quota.rs":"8295090deae30eb8360a83c3fbf0bd22c3538cf95d4888b3835b604d45c61c9c","src/state.rs":"15768d300eee9ed723c23ba73a26c0d3266e01556a95b9f3113d6960894ee7e9","src/state/direct.rs":"89904fcc3d1aa9b35e2f9275dca600784212961b53d8a67a0722adf394b68f47","src/state/direct/future.rs":"17f5621cb4606926660f5a256da29d9a2e74ef7a690cfe8ffd962c77a8550f15","src/state/direct/sinks.rs":"c2cbe03d3aa42aa081f27bf07e0d93e1071de94bae7ae36ebe66affcb916c525","src/state/direct/streams.rs":"ea6ed4536c0b60f032cc68c40c53f6e9711ee2cea53e1f1c6a51158ca2ccc3ef","src/state/in_memory.rs":"b1fc58ca33ba3d99c3d3c51ee10940cb1e13711aec35627ae8d82fab0a6dbd44","src/state/keyed.rs":"4ba4ec5c33485d72243ce4789f02c215ac5187817f49121463a92872651170b7","src/state/keyed/dashmap.rs":"a214fdc0432fa1e2bce8382b5c29b64ab7f35cff7b3014f8146bc678cf9190bf","src/state/keyed/future.rs":"5a0c449b9fad5de161b8fa4035f6c218cc829c2681150755683fc29f88423374","src/state/keyed/hashmap.rs":"f00df64d833bac847278c43b3c6bfb06e72fa8010260ff66eb8513e72d548cdc","tests/direct.rs":"3dc3136cb95284d2d95e83fac9089fb6688ad1de2c0901806d47ee52c49ca49d","tests/future.rs":"b759cd21c0e2f9392675efe9b89cb38d4a85c7f0ca80a32baaeecce5e1f11d19","tests/keyed.rs":"91f799b93b38c8284eab1c9b108b70b0e212e7b815c311c5d471a44bc255c848","tests/keyed_dashmap.rs":"9ede04fa326e2d84f0da4b13a9f4f30608a1911154f9c329b896b24dce2e518a","tests/keyed_hashmap.rs":"56e7e136f63a53c2bb90130f2ede89c2e88cf4ec91d9cba21631f9db1fa97a87","tests/memory_leaks.rs":"3e6de2b2638d4bb997f3b28305fd58f756da94879682288895bfb8b447969e89","tests/middleware.rs":"a874889955c9062bd994bcec7e845cb2c0cbad9b0dbccad60477c2b298835047","tests/proptests.regressions":"311cabbcf38957db4fe3d5854f4a1fba91f60cdf008f56b8a65881df35156c18","tests/proptests.rs":"458248b5763113f57306bb3cc9da1c7ff03b12366f3ebd02db41fc8b04c78fd7","tests/sinks.rs":"9c5e327463443ac29304d471fce23d1cfeba198455f6013e78cbdcb5e5a7042a","tests/streams.rs":"e46ad6a349376c54de7912765192c2805969f3d871ff4d5a082681988cc5740b"},"package":"821239e5672ff23e2a7060901fa622950bbd80b649cdaadd78d1c1767ed14eb4"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/governor/Cargo.toml temporalio-1.3.0/vendor/governor/Cargo.toml --- temporalio-1.3.0/vendor/governor/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/governor/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2018" name = "governor" -version = "0.5.1" +version = "0.6.0" authors = ["Andreas Fuchs "] autobenches = false description = "A rate-limiting implementation in Rust" @@ -68,7 +68,7 @@ version = "0.12.0" [dependencies.quanta] -version = "0.9.0" +version = "0.11.1" optional = true [dependencies.rand] @@ -82,7 +82,7 @@ version = "2.2.0" [dev-dependencies.criterion] -version = "0.3.2" +version = "0.5.1" features = ["html_reports"] [dev-dependencies.crossbeam] @@ -109,6 +109,7 @@ ] jitter = ["rand"] no_std = ["no-std-compat/compat_hash"] +quanta = ["dep:quanta"] std = [ "no-std-compat/std", "nonzero_ext/std", diff -Nru temporalio-1.3.0/vendor/governor/CHANGELOG.md temporalio-1.3.0/vendor/governor/CHANGELOG.md --- temporalio-1.3.0/vendor/governor/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/governor/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -4,6 +4,31 @@ ## [Unreleased] - ReleaseDate +## [[0.6.0](https://docs.rs/governor/0.6.0/governor/)] - 2023-07-12 + +### Added +* Type aliases `DefaultDirectRateLimiter` and + `DefaultKeyedRateLimiter` to cut down on type-typing of typical rate + limiters in struct and function definitions. Requested in + [#85](https://github.com/antifuchs/governor/issues/85). + +### Changed +* The API for `.check_n` and `.until_n` (and their keyed counterpart) + have changed to return a nested `Result` - the outer indicating + whether the check could ever succeed and the inner one indicating + the rate limiting result, if it could succeed. +* Updated the [quanta dependency to + 0.11.1](https://github.com/metrics-rs/quanta/blob/main/CHANGELOG.md#0110---2023-03-24). + This change also adds a reference u64 instant to all instances of + the `QuantaUpkeepClock` structure. All lower-resolution quanta + timekeeping used by governor will now be relative to that reference + instant. +* Some parts of the documentation for burst sizes has been rephrased + to be less confusing. + +### Contributors +* [@brprkr](https://github.com/brprkr) + ## [[0.5.1](https://docs.rs/governor/0.5.1/governor/)] - 2022-11-29 ### Changed diff -Nru temporalio-1.3.0/vendor/governor/src/clock/quanta.rs temporalio-1.3.0/vendor/governor/src/clock/quanta.rs --- temporalio-1.3.0/vendor/governor/src/clock/quanta.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/governor/src/clock/quanta.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,12 +12,15 @@ /// clock that uses a quanta background upkeep thread (which allows retrieving the time with an /// atomic read, but requires a background thread that wakes up continually), /// see [`QuantaUpkeepClock`]. -#[derive(Debug, Clone, Default)] -pub struct QuantaClock(quanta::Clock); +#[derive(Debug, Clone)] +pub struct QuantaClock { + clock: quanta::Clock, +} -impl From for Nanos { - fn from(instant: quanta::Instant) -> Self { - instant.as_u64().into() +impl Default for QuantaClock { + fn default() -> Self { + let clock = quanta::Clock::default(); + Self { clock } } } @@ -25,7 +28,8 @@ type Instant = QuantaInstant; fn now(&self) -> Self::Instant { - QuantaInstant(Nanos::from(self.0.now())) + let nowish = self.clock.raw(); + QuantaInstant(Nanos::new(self.clock.delta_as_nanos(0, nowish))) } } @@ -65,7 +69,11 @@ /// and the upkeep interval that you pick; you should measure and compare performance before /// picking one or the other. #[derive(Debug, Clone)] -pub struct QuantaUpkeepClock(quanta::Clock, Arc); +pub struct QuantaUpkeepClock { + clock: quanta::Clock, + _handle: Arc, + reference: quanta::Instant, +} impl QuantaUpkeepClock { /// Returns a new `QuantaUpkeepClock` with an upkeep thread that wakes up once in `interval`. @@ -76,11 +84,14 @@ /// Returns a new `QuantaUpkeepClock` with an upkeep thread as specified by the given builder. pub fn from_builder(builder: quanta::Upkeep) -> Result { - let handle = builder.start()?; - Ok(QuantaUpkeepClock( - quanta::Clock::default(), - Arc::new(handle), - )) + let handle = Arc::new(builder.start()?); + let clock = quanta::Clock::default(); + let reference = clock.recent(); + Ok(QuantaUpkeepClock { + clock, + _handle: handle, + reference, + }) } } @@ -88,7 +99,10 @@ type Instant = QuantaInstant; fn now(&self) -> Self::Instant { - QuantaInstant(Nanos::from(self.0.recent())) + QuantaInstant(Nanos::from( + self.reference + .saturating_duration_since(self.clock.recent()), + )) } } diff -Nru temporalio-1.3.0/vendor/governor/src/errors.rs temporalio-1.3.0/vendor/governor/src/errors.rs --- temporalio-1.3.0/vendor/governor/src/errors.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/governor/src/errors.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,28 +1,37 @@ -/// Gives additional information about the negative outcome of a batch -/// cell decision. -/// -/// Since batch queries can be made for batch sizes bigger than the -/// rate limiter parameter could accomodate, there are now two -/// possible negative outcomes: -/// -/// * `BatchNonConforming` - the query is valid but the Decider can -/// not accomodate them. +use std::fmt; + +/// Error indicating that the number of cells tested (the first +/// argument) is larger than the bucket's capacity. /// -/// * `InsufficientCapacity` - the query was invalid as the rate -/// limite parameters can never accomodate the number of cells -/// queried for. -#[derive(Debug, PartialEq, Eq)] -pub enum NegativeMultiDecision { - /// A batch of cells (the first argument) is non-conforming and - /// can not be let through at this time. The second argument gives - /// information about when that batch of cells might be let - /// through again (not accounting for thundering herds and other, - /// simultaneous decisions). - BatchNonConforming(u32, E), +/// This means the decision can never have a conforming result. The +/// argument gives the maximum number of cells that could ever have a +/// conforming result. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct InsufficientCapacity(pub u32); + +impl fmt::Display for InsufficientCapacity { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!( + f, + "required number of cells {} exceeds bucket's capacity", + self.0 + ) + } +} + +#[cfg(feature = "std")] +impl std::error::Error for InsufficientCapacity {} + +#[cfg(all(feature = "std", test))] +mod test { + use super::*; - /// The number of cells tested (the first argument) is larger than - /// the bucket's capacity, which means the decision can never have - /// a conforming result. The argument gives the maximum number of - /// cells that could ever have a conforming result. - InsufficientCapacity(u32), + #[test] + fn coverage() { + let display_output = format!("{}", InsufficientCapacity(3)); + assert!(display_output.contains("3")); + let debug_output = format!("{:?}", InsufficientCapacity(3)); + assert!(debug_output.contains("3")); + assert_eq!(InsufficientCapacity(3), InsufficientCapacity(3)); + } } diff -Nru temporalio-1.3.0/vendor/governor/src/gcra.rs temporalio-1.3.0/vendor/governor/src/gcra.rs --- temporalio-1.3.0/vendor/governor/src/gcra.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/governor/src/gcra.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,6 @@ use crate::state::StateStore; -use crate::{clock, middleware::StateSnapshot, NegativeMultiDecision, Quota}; +use crate::InsufficientCapacity; +use crate::{clock, middleware::StateSnapshot, Quota}; use crate::{middleware::RateLimitingMiddleware, nanos::Nanos}; use std::num::NonZeroU32; use std::time::Duration; @@ -142,7 +143,7 @@ n: NonZeroU32, state: &S, t0: P, - ) -> Result> { + ) -> Result, InsufficientCapacity> { let t0 = t0.duration_since(start); let tau = self.tau; let t = self.t; @@ -151,21 +152,16 @@ // check that we can allow enough cells through. Note that `additional_weight` is the // value of the cells *in addition* to the first cell - so add that first cell back. if additional_weight + t > tau { - return Err(NegativeMultiDecision::InsufficientCapacity( - (tau.as_u64() / t.as_u64()) as u32, - )); + return Err(InsufficientCapacity((tau.as_u64() / t.as_u64()) as u32)); } - state.measure_and_replace(key, |tat| { + Ok(state.measure_and_replace(key, |tat| { let tat = tat.unwrap_or_else(|| self.starting_state(t0)); let earliest_time = (tat + additional_weight).saturating_sub(tau); if t0 < earliest_time { - Err(NegativeMultiDecision::BatchNonConforming( - n.get(), - MW::disallow( - key, - StateSnapshot::new(self.t, self.tau, earliest_time, earliest_time), - start, - ), + Err(MW::disallow( + key, + StateSnapshot::new(self.t, self.tau, earliest_time, earliest_time), + start, )) } else { let next = cmp::max(tat, t0) + t + additional_weight; @@ -174,7 +170,7 @@ next, )) } - }) + })) } } diff -Nru temporalio-1.3.0/vendor/governor/src/_guide.rs temporalio-1.3.0/vendor/governor/src/_guide.rs --- temporalio-1.3.0/vendor/governor/src/_guide.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/governor/src/_guide.rs 2023-10-30 19:40:00.000000000 +0000 @@ -85,6 +85,28 @@ //! [KeyedStateStore][crate::state::keyed::KeyedStateStore] trait, and optionally the //! [ShrinkableKeyedStateStore][crate::state::keyed::ShrinkableKeyedStateStore] trait. //! +//! # Type signatures for rate limiters +//! +//! Rate limiters tend to be long-lived, and need to be stored +//! somewhere - sometimes in struct fields, or even just to pass in +//! function arguments. The [`crate::RateLimiter`] type signatures +//! tend to be pretty unwieldy for that, so this crate exports a pair +//! of handy type aliases, [`crate::DefaultDirectRateLimiter`] and +//! [`crate::DefaultDirectRateLimiter`]. +//! +//! Here's an example for embedding a direct rate limiter in a struct: +//! +//! ```rust +//! # use governor::DefaultDirectRateLimiter; +//! struct MyApiClient { +//! limiter: DefaultDirectRateLimiter, +//! } +//! ``` +//! +//! If you need to provide a different clock, or a different +//! implementation of the keyed state, you will still have to fall +//! back to the regular type. +//! //! # Data ownership and references to rate limiters //! //! `governor`'s rate limiter state is not hidden behind an [interior diff -Nru temporalio-1.3.0/vendor/governor/src/lib.rs temporalio-1.3.0/vendor/governor/src/lib.rs --- temporalio-1.3.0/vendor/governor/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/governor/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -68,3 +68,18 @@ #[cfg(feature = "std")] pub use crate::state::direct::StreamRateLimitExt; } + +/// A rate limiter representing a single item of state in memory, running on the default clock. +/// +/// See the [`RateLimiter`] documentation for details. +pub type DefaultDirectRateLimiter< + MW = middleware::NoOpMiddleware<::Instant>, +> = RateLimiter; + +/// A rate limiter with one state per key, running on the default clock. +/// +/// See the [`RateLimiter`] documentation for details. +pub type DefaultKeyedRateLimiter< + K, + MW = middleware::NoOpMiddleware<::Instant>, +> = RateLimiter, clock::DefaultClock, MW>; diff -Nru temporalio-1.3.0/vendor/governor/src/quota.rs temporalio-1.3.0/vendor/governor/src/quota.rs --- temporalio-1.3.0/vendor/governor/src/quota.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/governor/src/quota.rs 2023-10-30 19:40:00.000000000 +0000 @@ -17,8 +17,9 @@ /// # Burst sizes /// There are multiple ways of expressing the same quota: a quota given as `Quota::per_second(1)` /// allows, on average, the same number of cells through as a quota given as `Quota::per_minute(60)`. -/// However, the quota of `Quota::per_minute(60)` has a burst size of 60 cells, meaning it is possible -/// to accommodate 60 cells in one go, followed by a minute of waiting. +/// However, the quota of `Quota::per_minute(60)` has a burst size of 60 cells, meaning it is +/// possible to accomodate 60 cells in one go, after which the equivalent of a minute of inactivity +/// is required for the burst allowance to be fully restored. /// /// Burst size gets really important when you construct a rate limiter that should allow multiple /// elements through at one time (using [`RateLimiter.check_n`](struct.RateLimiter.html#method.check_n) diff -Nru temporalio-1.3.0/vendor/governor/src/state/direct/future.rs temporalio-1.3.0/vendor/governor/src/state/direct/future.rs --- temporalio-1.3.0/vendor/governor/src/state/direct/future.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/governor/src/state/direct/future.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,31 +1,15 @@ -use std::{error::Error, fmt, num::NonZeroU32}; +use std::num::NonZeroU32; use super::RateLimiter; use crate::{ clock, + errors::InsufficientCapacity, middleware::RateLimitingMiddleware, state::{DirectStateStore, NotKeyed}, - Jitter, NegativeMultiDecision, NotUntil, + Jitter, NotUntil, }; use futures_timer::Delay; -/// An error that occurs when the number of cells required in `check_n` -/// exceeds the maximum capacity of the limiter. -#[derive(Debug, Clone)] -pub struct InsufficientCapacity(pub u32); - -impl fmt::Display for InsufficientCapacity { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!( - f, - "required number of cell {} exceeds bucket's capacity", - self.0 - ) - } -} - -impl Error for InsufficientCapacity {} - #[cfg(feature = "std")] /// # Direct rate limiters - `async`/`await` impl RateLimiter @@ -100,17 +84,14 @@ jitter: Jitter, ) -> Result { loop { - match self.check_n(n) { + match self.check_n(n)? { Ok(x) => { return Ok(x); } - Err(NegativeMultiDecision::BatchNonConforming(_, negative)) => { + Err(negative) => { let delay = Delay::new(jitter + negative.wait_time_from(self.clock.now())); delay.await; } - Err(NegativeMultiDecision::InsufficientCapacity(cap)) => { - return Err(InsufficientCapacity(cap)) - } } } } diff -Nru temporalio-1.3.0/vendor/governor/src/state/direct.rs temporalio-1.3.0/vendor/governor/src/state/direct.rs --- temporalio-1.3.0/vendor/governor/src/state/direct.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/governor/src/state/direct.rs 2023-10-30 19:40:00.000000000 +0000 @@ -9,9 +9,10 @@ use crate::{ clock, + errors::InsufficientCapacity, middleware::{NoOpMiddleware, RateLimitingMiddleware}, state::InMemoryState, - NegativeMultiDecision, Quota, + Quota, }; /// The "this state store does not use keys" key type. @@ -97,7 +98,7 @@ pub fn check_n( &self, n: NonZeroU32, - ) -> Result> { + ) -> Result, InsufficientCapacity> { self.gcra .test_n_all_and_update::( self.start, diff -Nru temporalio-1.3.0/vendor/governor/src/state/keyed.rs temporalio-1.3.0/vendor/governor/src/state/keyed.rs --- temporalio-1.3.0/vendor/governor/src/state/keyed.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/governor/src/state/keyed.rs 2023-10-30 19:40:00.000000000 +0000 @@ -14,9 +14,10 @@ use crate::state::StateStore; use crate::{ clock::{self, Reference}, + errors::InsufficientCapacity, middleware::RateLimitingMiddleware, nanos::Nanos, - NegativeMultiDecision, Quota, RateLimiter, + Quota, RateLimiter, }; /// A trait for state stores with one rate limiting state per key. @@ -101,12 +102,12 @@ /// Allow *only all* `n` cells through the rate limiter for the given key. /// /// This method can succeed in only one way and fail in two ways: - /// * Success: If all `n` cells can be accommodated, it returns `Ok(())`. + /// * Success: If all `n` cells can be accommodated, it returns `Ok(Ok(()))`. /// * Failure (but ok): Not all cells can make it through at the current time. - /// The result is `Err(NegativeMultiDecision::BatchNonConforming(NotUntil))`, which can + /// The result is `Ok(Err(NotUntil))`, which can /// be interrogated about when the batch might next conform. /// * Failure (the batch can never go through): The rate limit is too low for the given number - /// of cells. + /// of cells. The result is `Err(InsufficientCapacity)` /// /// ### Performance /// This method diverges a little from the GCRA algorithm, using @@ -116,7 +117,7 @@ &self, key: &K, n: NonZeroU32, - ) -> Result> { + ) -> Result, InsufficientCapacity> { self.gcra.test_n_all_and_update::( self.start, key, diff -Nru temporalio-1.3.0/vendor/governor/tests/direct.rs temporalio-1.3.0/vendor/governor/tests/direct.rs --- temporalio-1.3.0/vendor/governor/tests/direct.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/governor/tests/direct.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ use governor::{ clock::{Clock, FakeRelativeClock}, - NegativeMultiDecision, Quota, RateLimiter, + DefaultDirectRateLimiter, InsufficientCapacity, Quota, RateLimiter, }; use nonzero_ext::nonzero; use std::time::Duration; @@ -44,21 +44,21 @@ let one = nonzero!(1u32); // use up our burst capacity (2 in the first second): - assert_eq!(Ok(()), lb.check_n(one), "Now: {:?}", clock.now()); + assert_eq!(Ok(Ok(())), lb.check_n(one), "Now: {:?}", clock.now()); clock.advance(ms); - assert_eq!(Ok(()), lb.check_n(one), "Now: {:?}", clock.now()); + assert_eq!(Ok(Ok(())), lb.check_n(one), "Now: {:?}", clock.now()); clock.advance(ms); - assert_ne!(Ok(()), lb.check_n(one), "Now: {:?}", clock.now()); + assert_ne!(Ok(Ok(())), lb.check_n(one), "Now: {:?}", clock.now()); // should be ok again in 1s: clock.advance(ms * 1000); - assert_eq!(Ok(()), lb.check_n(one), "Now: {:?}", clock.now()); + assert_eq!(Ok(Ok(())), lb.check_n(one), "Now: {:?}", clock.now()); clock.advance(ms); - assert_eq!(Ok(()), lb.check_n(one)); + assert_eq!(Ok(Ok(())), lb.check_n(one)); clock.advance(ms); - assert_ne!(Ok(()), lb.check_n(one), "{:?}", lb); + assert_ne!(Ok(Ok(())), lb.check_n(one), "{:?}", lb); } #[test] @@ -68,20 +68,20 @@ let ms = Duration::from_millis(1); // Use up the burst capacity: - assert_eq!(Ok(()), lb.check_n(nonzero!(2u32)), "Now: {:?}", clock.now()); - assert_eq!(Ok(()), lb.check_n(nonzero!(2u32)), "Now: {:?}", clock.now()); + assert_eq!(Ok(Ok(())), lb.check_n(nonzero!(2u32))); + assert_eq!(Ok(Ok(())), lb.check_n(nonzero!(2u32))); clock.advance(ms); - assert_ne!(Ok(()), lb.check_n(nonzero!(2u32)), "Now: {:?}", clock.now()); + assert_ne!(Ok(Ok(())), lb.check_n(nonzero!(2u32))); // should be ok again in 1s: clock.advance(ms * 1000); - assert_eq!(Ok(()), lb.check_n(nonzero!(2u32)), "Now: {:?}", clock.now()); + assert_eq!(Ok(Ok(())), lb.check_n(nonzero!(2u32))); clock.advance(ms); - assert_eq!(Ok(()), lb.check_n(nonzero!(2u32))); + assert_eq!(Ok(Ok(())), lb.check_n(nonzero!(2u32))); clock.advance(ms); - assert_ne!(Ok(()), lb.check_n(nonzero!(2u32)), "{:?}", lb); + assert_ne!(Ok(Ok(())), lb.check_n(nonzero!(2u32)), "{:?}", lb); } #[test] @@ -91,11 +91,11 @@ let ms = Duration::from_millis(1); // Should not allow the first 15 cells on a capacity 5 bucket: - assert_ne!(Ok(()), lb.check_n(nonzero!(15u32))); + assert_ne!(Ok(Ok(())), lb.check_n(nonzero!(15u32))); // After 3 and 20 seconds, it should not allow 15 on that bucket either: clock.advance(ms * 3 * 1000); - assert_ne!(Ok(()), lb.check_n(nonzero!(15u32))); + assert_ne!(Ok(Ok(())), lb.check_n(nonzero!(15u32))); } #[test] @@ -103,18 +103,9 @@ let clock = FakeRelativeClock::default(); let lb = RateLimiter::direct_with_clock(Quota::per_second(nonzero!(5u32)), &clock); - assert_eq!( - Err(NegativeMultiDecision::InsufficientCapacity(5)), - lb.check_n(nonzero!(15u32)) - ); - assert_eq!( - Err(NegativeMultiDecision::InsufficientCapacity(5)), - lb.check_n(nonzero!(6u32)) - ); - assert_eq!( - Err(NegativeMultiDecision::InsufficientCapacity(5)), - lb.check_n(nonzero!(7u32)) - ); + assert_eq!(Err(InsufficientCapacity(5)), lb.check_n(nonzero!(15u32))); + assert_eq!(Err(InsufficientCapacity(5)), lb.check_n(nonzero!(6u32))); + assert_eq!(Err(InsufficientCapacity(5)), lb.check_n(nonzero!(7u32))); } #[test] @@ -163,3 +154,11 @@ clock.advance(ms * 998); assert_eq!(Ok(()), lim.check()); } + +#[test] +fn default_direct() { + let clock = governor::clock::DefaultClock::default(); + let limiter: DefaultDirectRateLimiter = + RateLimiter::direct_with_clock(Quota::per_second(nonzero!(20u32)), &clock); + assert_eq!(Ok(()), limiter.check()); +} diff -Nru temporalio-1.3.0/vendor/governor/tests/keyed_dashmap.rs temporalio-1.3.0/vendor/governor/tests/keyed_dashmap.rs --- temporalio-1.3.0/vendor/governor/tests/keyed_dashmap.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/governor/tests/keyed_dashmap.rs 2023-10-30 19:40:00.000000000 +0000 @@ -155,7 +155,7 @@ assert_eq!( lim.check_key_n(&"long-lived".to_string(), nonzero!(10_u32)), - Ok(()) + Ok(Ok(())) ); assert_eq!(lim.check_key(&"short-lived".to_string()), Ok(())); diff -Nru temporalio-1.3.0/vendor/governor/tests/keyed_hashmap.rs temporalio-1.3.0/vendor/governor/tests/keyed_hashmap.rs --- temporalio-1.3.0/vendor/governor/tests/keyed_hashmap.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/governor/tests/keyed_hashmap.rs 2023-10-30 19:40:00.000000000 +0000 @@ -149,7 +149,7 @@ assert_eq!( lim.check_key_n(&"long-lived".to_string(), nonzero!(10_u32)), - Ok(()) + Ok(Ok(())) ); assert_eq!(lim.check_key(&"short-lived".to_string()), Ok(())); diff -Nru temporalio-1.3.0/vendor/governor/tests/keyed.rs temporalio-1.3.0/vendor/governor/tests/keyed.rs --- temporalio-1.3.0/vendor/governor/tests/keyed.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/governor/tests/keyed.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,9 @@ +use governor::{DefaultKeyedRateLimiter, Quota, RateLimiter}; +use nonzero_ext::nonzero; + +#[test] +fn default_keyed() { + let limiter: DefaultKeyedRateLimiter = + RateLimiter::keyed(Quota::per_second(nonzero!(20u32))); + assert_eq!(Ok(()), limiter.check_key(&1)); +} diff -Nru temporalio-1.3.0/vendor/h2/.cargo-checksum.json temporalio-1.3.0/vendor/h2/.cargo-checksum.json --- temporalio-1.3.0/vendor/h2/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/h2/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"bdfe2f271df23cc208c87847ac79ed63c71061b28cf82b67483fc885c386f88e","CONTRIBUTING.md":"eff9610bd3a73e6c297b9b487a629bcdb40da9090e6e28c26e48fcfd3a899a6c","Cargo.lock":"9653a59f58d682639a03d53179b64d0c8d9246eeef34e1d52fbb8b1bc8c73a84","Cargo.toml":"a2f723b1eab34165d1dfbdde4130ba20ed992a923b7cb33c72a794d7fb715e65","LICENSE":"b21623012e6c453d944b0342c515b631cfcbf30704c2621b291526b69c10724d","README.md":"686a7e3e4b488fe813c4fb99b5082e00a168068cd80bdb29c496e8b68f1ce257","examples/akamai.rs":"03cf67ae79e2e33afaaad3d015fb56ed300e21d705898ead29c88a96ca7cddd8","examples/client.rs":"5ad136b838e9d55ae3d1fd8801cec4af88139b58864d6438f75d0e173eb3aeb3","examples/server.rs":"8cc7927c7fe98a2474c41ab0094ba2dc7a2ae6a7f58ce342a4c05bb8056a63a5","src/client.rs":"9fd1117e3fde1ecaa39054bf50d40ab916fe935ad5bda47513b0c87523489bf3","src/codec/error.rs":"e4b494d6234d8e44de22188540af5e3e0964bbaabc1d8339c7702d401c55afa2","src/codec/framed_read.rs":"4c6d474dc7c2611f2b24eed57cc31763898e18b287ba6196e96baa3854e03374","src/codec/framed_write.rs":"d88bd4355286be8d0f054ad104ce3e49ffb41d44f187229aaddc8469c7f0d025","src/codec/mod.rs":"75b18c4dbbb7314823a00cab2843a3ca8f12343214541e23f294af6145718809","src/error.rs":"62af97622e13ec30cc89fdcda7e449f551581356543a9f59437a081cb8f736e4","src/ext.rs":"2fb968f754829fc50392b6ccb4b90cc4c8b88657a5e3a7259f53916e13dc1c91","src/frame/data.rs":"3f524ce64bf4135c0f248419b1d3af973464a1748bf0d3bab437c5a088f7c22f","src/frame/go_away.rs":"6b3fe966ed96bb941e55e6af3352d7afa43e9bde78dc261251a38b09f5c73202","src/frame/head.rs":"4073eb70a8ed9ec0ca460e18fb470fca1dbe6900c1ac08d66397ab4d75414e4c","src/frame/headers.rs":"a0e2d02b9c33d97e78dd2886771bfecfb862132aec47d0365e4ab80133411e30","src/frame/mod.rs":"319bad5779e3ab0e74478f3be4e02d844f01d05e9752ad5395847e2c84965ccf","src/frame/ping.rs":"ff4e4059101300e7b03c23d271026b058da4315c3bd68280422e144c2aa1b9e6","src/frame/priority.rs":"9392b7aa2636157024dc645c92d0e450a4d3f7a53bc9de1188d3b61178c2b5fc","src/frame/reason.rs":"45b13202141b1d8b261d64624b276a9b034d8c3f7d9b6870ee41a204589f4e14","src/frame/reset.rs":"91c17a7391fcb516223fd0358f7770524023b33dd6489902ba23e47b8acc9a9e","src/frame/settings.rs":"5dc833335c9ac2512e5cbaf15d302da636b1e822936f94db926f7c5f948c5d9f","src/frame/stream_id.rs":"0aa72cc3d735aa31e4d0cca0a8b94bae75c97d041c3712fe8e49f687881a73fe","src/frame/util.rs":"1a1408ddefe35f9efe5faa5360cb5ecc461fc0846175d4b43031720da7f5188d","src/frame/window_update.rs":"05c1b84478208802d09154f5d6fb5eb886d45397f43ccc6ccbf40bf3be912819","src/fuzz_bridge.rs":"c27c716732c21a972a8bef43c00ee851a78de80259db62f0b6e793008ccf01a3","src/hpack/decoder.rs":"b4a285c20cdc2d4c7ed490aa984534cebbd03391f6661e72534e6c8e3f3b0a6d","src/hpack/encoder.rs":"f62a3dc317e17e3e0e8e13fd1e4dd1f7370d9831ec5c11675a4550952c7f3ede","src/hpack/header.rs":"b99153144455dcbe7f21161efb32cf5a3362aa7aa1180986e2e733348bb3796f","src/hpack/huffman/mod.rs":"01f3de4e479b96d1da31c242a02144aa8c431df540e7e4b984ee3aea5afcd212","src/hpack/huffman/table.rs":"6b7f94af0bb5d236d4e671eff4afe5dc254a20eaddd2d57dd6e8f53e2a60c337","src/hpack/mod.rs":"581033d44fd5525e9ccb546549a99f8357ab8f55d58b490d9980fb36323c5dbc","src/hpack/table.rs":"6efc933d47355050ed4119e8438513d31f966ccd20ac70a5c51721052184de81","src/hpack/test/fixture.rs":"8a0cfbdc314da9d6f98d0329e41f8b804011305d5f3047ef60faf39038541411","src/hpack/test/fuzz.rs":"89a8b1a79409e811c72897df479e2209f039b253fa6b9aa7510d615966b69d1f","src/hpack/test/mod.rs":"56ad5643e7f1e273e5bce8a6fc0552be39c326dacfffd7f9757ccdbe75e9b66e","src/lib.rs":"4531bf954245313be17a595120d0a76575f89d451f01aed34e75f7dcced719f1","src/proto/connection.rs":"a68bb62afbba9ab9b4d74e9bbedf9a1d7e7d0e7c7b62f1cf6a725456d01c298f","src/proto/error.rs":"ab9a68acb60753fbb7c7ad54b9aac627cfa5099cf922163f823be618040998a1","src/proto/go_away.rs":"51d467027bc30873fc76166ed731e968a23725e7b106b58ecadcb85044466a5f","src/proto/mod.rs":"c9c7e30c44df73d267296f5c1dbaaf8402041beb6e525d5f75cf2fde05d2a1c8","src/proto/peer.rs":"e26317f7d0a27441e15bf8b4ca4af3e4cca0ea01803027078a088eafb83e0910","src/proto/ping_pong.rs":"21b8f1886ffa18420c4d57a32e8dd2b0cd8665824ace2b44c4e20e101f5aa2c9","src/proto/settings.rs":"d937cfb44d952fe8034b67be603147360540e21654404862d18758fd80c51d22","src/proto/streams/buffer.rs":"cf2205c607f8a6b8aa8662983d9907fedeb14b5890e051d8e63d7bc2b0a960e9","src/proto/streams/counts.rs":"892ff036f29e8316d4fb1b125a43d407109250ef33406391f2749d71e8152b40","src/proto/streams/flow_control.rs":"a8b3c5cd24b1f83770576ba21d5fcd555f144afd88f246f7d5dbe9e39563c74a","src/proto/streams/mod.rs":"1bf49e6bf4b7f315acb66b887e27c340224715e2db824526f94cd578a1de9d76","src/proto/streams/prioritize.rs":"6ca563cd9ccd108598a0ebab953f2debcd74df946d96144ddf1b4817b28b365d","src/proto/streams/recv.rs":"4d90fdd2a8807d370e0b2cc4755d1601dcfc17589cc0925e5e7c0a85fe9dd337","src/proto/streams/send.rs":"6c29d7f9162afafa9e06d9c6aee7c7aacdf0dca8324e028a7e9fbb4e17dd4a9c","src/proto/streams/state.rs":"035e0379d9e52d87f56f8b60af801585ef1b531cd178820fbb317f7b94b0f9d4","src/proto/streams/store.rs":"b1cbbcef3048a79909c0e52cf83e83dfbe7d18b148dbf4d406c290d69db05ecc","src/proto/streams/stream.rs":"721af69c69d42410932dc72c8db33ab5e60733c1b2b747a817f1933b7dc8a095","src/proto/streams/streams.rs":"e4a4672a743199677914eb543ec7fb38e08364a29b1725bcedb0715c63df5134","src/server.rs":"7b8b81186682a23e8595653f5b03295960b020369c0b51217e9f77c6644ba080","src/share.rs":"9b9c48b3198f3856267a6927ee3cac57a8236b8847b515611f55d1ed7b6ba38d"},"package":"97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049"} \ No newline at end of file +{"files":{"CHANGELOG.md":"9273f266406969586e8401e0ff596ad571f0f8c316fee873c2a5874b87ede041","CONTRIBUTING.md":"eff9610bd3a73e6c297b9b487a629bcdb40da9090e6e28c26e48fcfd3a899a6c","Cargo.lock":"db01bca70094b5ecb3af89616569fb29b8e88d3c07047a7865d3c3cd5dc37d19","Cargo.toml":"a992aafd1bb50c07d74f295db884aaa99f37055ba5f7e4cb163c4965c922c896","LICENSE":"b21623012e6c453d944b0342c515b631cfcbf30704c2621b291526b69c10724d","README.md":"686a7e3e4b488fe813c4fb99b5082e00a168068cd80bdb29c496e8b68f1ce257","examples/akamai.rs":"03cf67ae79e2e33afaaad3d015fb56ed300e21d705898ead29c88a96ca7cddd8","examples/client.rs":"5ad136b838e9d55ae3d1fd8801cec4af88139b58864d6438f75d0e173eb3aeb3","examples/server.rs":"8cc7927c7fe98a2474c41ab0094ba2dc7a2ae6a7f58ce342a4c05bb8056a63a5","src/client.rs":"418b6965f7ca1eaa0681172f5e41c42ec7b9e86f8823b3a00e9fe9c358c6cc9b","src/codec/error.rs":"e4b494d6234d8e44de22188540af5e3e0964bbaabc1d8339c7702d401c55afa2","src/codec/framed_read.rs":"4c6d474dc7c2611f2b24eed57cc31763898e18b287ba6196e96baa3854e03374","src/codec/framed_write.rs":"d88bd4355286be8d0f054ad104ce3e49ffb41d44f187229aaddc8469c7f0d025","src/codec/mod.rs":"75b18c4dbbb7314823a00cab2843a3ca8f12343214541e23f294af6145718809","src/error.rs":"62af97622e13ec30cc89fdcda7e449f551581356543a9f59437a081cb8f736e4","src/ext.rs":"2fb968f754829fc50392b6ccb4b90cc4c8b88657a5e3a7259f53916e13dc1c91","src/frame/data.rs":"3f524ce64bf4135c0f248419b1d3af973464a1748bf0d3bab437c5a088f7c22f","src/frame/go_away.rs":"6b3fe966ed96bb941e55e6af3352d7afa43e9bde78dc261251a38b09f5c73202","src/frame/head.rs":"4073eb70a8ed9ec0ca460e18fb470fca1dbe6900c1ac08d66397ab4d75414e4c","src/frame/headers.rs":"a0e2d02b9c33d97e78dd2886771bfecfb862132aec47d0365e4ab80133411e30","src/frame/mod.rs":"319bad5779e3ab0e74478f3be4e02d844f01d05e9752ad5395847e2c84965ccf","src/frame/ping.rs":"ff4e4059101300e7b03c23d271026b058da4315c3bd68280422e144c2aa1b9e6","src/frame/priority.rs":"9392b7aa2636157024dc645c92d0e450a4d3f7a53bc9de1188d3b61178c2b5fc","src/frame/reason.rs":"45b13202141b1d8b261d64624b276a9b034d8c3f7d9b6870ee41a204589f4e14","src/frame/reset.rs":"91c17a7391fcb516223fd0358f7770524023b33dd6489902ba23e47b8acc9a9e","src/frame/settings.rs":"5dc833335c9ac2512e5cbaf15d302da636b1e822936f94db926f7c5f948c5d9f","src/frame/stream_id.rs":"0aa72cc3d735aa31e4d0cca0a8b94bae75c97d041c3712fe8e49f687881a73fe","src/frame/util.rs":"1a1408ddefe35f9efe5faa5360cb5ecc461fc0846175d4b43031720da7f5188d","src/frame/window_update.rs":"05c1b84478208802d09154f5d6fb5eb886d45397f43ccc6ccbf40bf3be912819","src/fuzz_bridge.rs":"c27c716732c21a972a8bef43c00ee851a78de80259db62f0b6e793008ccf01a3","src/hpack/decoder.rs":"5c909bfd48928cb040e1912b0c83505e9de00ed9f4bf5a4654e6d2aadd11a29f","src/hpack/encoder.rs":"f62a3dc317e17e3e0e8e13fd1e4dd1f7370d9831ec5c11675a4550952c7f3ede","src/hpack/header.rs":"b99153144455dcbe7f21161efb32cf5a3362aa7aa1180986e2e733348bb3796f","src/hpack/huffman/mod.rs":"01f3de4e479b96d1da31c242a02144aa8c431df540e7e4b984ee3aea5afcd212","src/hpack/huffman/table.rs":"6b7f94af0bb5d236d4e671eff4afe5dc254a20eaddd2d57dd6e8f53e2a60c337","src/hpack/mod.rs":"581033d44fd5525e9ccb546549a99f8357ab8f55d58b490d9980fb36323c5dbc","src/hpack/table.rs":"6efc933d47355050ed4119e8438513d31f966ccd20ac70a5c51721052184de81","src/hpack/test/fixture.rs":"8a0cfbdc314da9d6f98d0329e41f8b804011305d5f3047ef60faf39038541411","src/hpack/test/fuzz.rs":"89a8b1a79409e811c72897df479e2209f039b253fa6b9aa7510d615966b69d1f","src/hpack/test/mod.rs":"56ad5643e7f1e273e5bce8a6fc0552be39c326dacfffd7f9757ccdbe75e9b66e","src/lib.rs":"cc2c850d4005760bfefd02b99d898cc30553f2bdc5f0bc8bd5cd177a982a0be9","src/proto/connection.rs":"a68bb62afbba9ab9b4d74e9bbedf9a1d7e7d0e7c7b62f1cf6a725456d01c298f","src/proto/error.rs":"ab9a68acb60753fbb7c7ad54b9aac627cfa5099cf922163f823be618040998a1","src/proto/go_away.rs":"51d467027bc30873fc76166ed731e968a23725e7b106b58ecadcb85044466a5f","src/proto/mod.rs":"c9c7e30c44df73d267296f5c1dbaaf8402041beb6e525d5f75cf2fde05d2a1c8","src/proto/peer.rs":"e26317f7d0a27441e15bf8b4ca4af3e4cca0ea01803027078a088eafb83e0910","src/proto/ping_pong.rs":"21b8f1886ffa18420c4d57a32e8dd2b0cd8665824ace2b44c4e20e101f5aa2c9","src/proto/settings.rs":"d937cfb44d952fe8034b67be603147360540e21654404862d18758fd80c51d22","src/proto/streams/buffer.rs":"cf2205c607f8a6b8aa8662983d9907fedeb14b5890e051d8e63d7bc2b0a960e9","src/proto/streams/counts.rs":"b03d849fe4fd685ffb5da520a863fffb9cb55cd731cd2dcc78324aa55978a7ba","src/proto/streams/flow_control.rs":"a8b3c5cd24b1f83770576ba21d5fcd555f144afd88f246f7d5dbe9e39563c74a","src/proto/streams/mod.rs":"1bf49e6bf4b7f315acb66b887e27c340224715e2db824526f94cd578a1de9d76","src/proto/streams/prioritize.rs":"23398cc237d68a117dedda3fe806c54990f361ab37aca7476021ab023c5acf89","src/proto/streams/recv.rs":"88429a855ebde2a080a5279746bd1d9491e7f6daa44d5ecdf065049761d0df35","src/proto/streams/send.rs":"2ef000b5c24d94f997ee74152f7a810a4403087590d141310fc4835ab8261efc","src/proto/streams/state.rs":"8d818ffe4d2c0d0703f771c8770e396e9bc6a2b3568e64ba8e9d54606a6c6726","src/proto/streams/store.rs":"603ea7a0ad9d8c0ef709b230b74d28c95af1bdae55ff6e6ee0e89d0d14f093c8","src/proto/streams/stream.rs":"721af69c69d42410932dc72c8db33ab5e60733c1b2b747a817f1933b7dc8a095","src/proto/streams/streams.rs":"1c30a55600c84685f396c4862b81552f5e8d4cab5b93f6a16f58e404080e221c","src/server.rs":"7b8b81186682a23e8595653f5b03295960b020369c0b51217e9f77c6644ba080","src/share.rs":"9b9c48b3198f3856267a6927ee3cac57a8236b8847b515611f55d1ed7b6ba38d"},"package":"91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/h2/Cargo.lock temporalio-1.3.0/vendor/h2/Cargo.lock --- temporalio-1.3.0/vendor/h2/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/h2/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -3,28 +3,61 @@ version = 3 [[package]] +name = "addr2line" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] name = "autocfg" -version = "1.0.1" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] [[package]] name = "bumpalo" -version = "3.7.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" [[package]] name = "bytes" -version = "1.0.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" [[package]] name = "cc" -version = "1.0.69" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e70cc2f62c6ce1868963827bd677764c62d07c3d9a3e1fb1177ee1a9ab199eb2" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] [[package]] name = "cfg-if" @@ -34,9 +67,9 @@ [[package]] name = "env_logger" -version = "0.9.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" dependencies = [ "log", ] @@ -49,29 +82,28 @@ [[package]] name = "futures-core" -version = "0.3.16" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af51b1b4a7fdff033703db39de8802c673eb91855f2e0d47dcf3bf2c0ef01f99" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" [[package]] name = "futures-sink" -version = "0.3.16" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0f30aaa67363d119812743aa5f33c201a7a66329f97d1a887022971feea4b53" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" [[package]] name = "futures-task" -version = "0.3.16" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe54a98670017f3be909561f6ad13e810d9a51f3f061b902062ca3da80799f2" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" [[package]] name = "futures-util" -version = "0.3.16" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eb846bfd58e44a8481a00049e82c43e0ccb5d61f8dc071057cb19249dd4d78" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" dependencies = [ - "autocfg", "futures-core", "futures-task", "pin-project-lite", @@ -80,9 +112,9 @@ [[package]] name = "getrandom" -version = "0.2.6" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "libc", @@ -90,8 +122,14 @@ ] [[package]] +name = "gimli" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" + +[[package]] name = "h2" -version = "0.3.20" +version = "0.3.21" dependencies = [ "bytes", "env_logger", @@ -117,18 +155,15 @@ [[package]] name = "hashbrown" -version = "0.11.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hermit-abi" -version = "0.1.19" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" [[package]] name = "hex" @@ -138,9 +173,9 @@ [[package]] name = "http" -version = "0.2.4" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527e8c9ac747e28542699a951517aa9a6945af506cd1f2e1b53a576c17b6cc11" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ "bytes", "fnv", @@ -149,9 +184,9 @@ [[package]] name = "indexmap" -version = "1.7.0" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown", @@ -159,98 +194,87 @@ [[package]] name = "itoa" -version = "0.4.7" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "js-sys" -version = "0.3.53" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4bf49d50e2961077d9c99f4b7997d770a1114f087c3c2e0069b36c13fc2979d" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] [[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] name = "libc" -version = "0.2.126" +version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "log" -version = "0.4.14" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" -dependencies = [ - "cfg-if", -] +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memchr" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] -name = "mio" -version = "0.7.13" +name = "miniz_oxide" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c2bdb6314ec10835cd3293dd268473a835c02b7b352e788be788b3c6ca6bb16" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ - "libc", - "log", - "miow", - "ntapi", - "winapi", + "adler", ] [[package]] -name = "miow" -version = "0.3.7" +name = "mio" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ - "winapi", + "libc", + "wasi", + "windows-sys", ] [[package]] -name = "ntapi" -version = "0.3.6" +name = "num_cpus" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "winapi", + "hermit-abi", + "libc", ] [[package]] -name = "num_cpus" -version = "1.13.0" +name = "object" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" dependencies = [ - "hermit-abi", - "libc", + "memchr", ] [[package]] name = "once_cell" -version = "1.8.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "pin-project-lite" -version = "0.2.7" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443" +checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" [[package]] name = "pin-utils" @@ -260,17 +284,17 @@ [[package]] name = "ppv-lite86" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.28" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] @@ -284,9 +308,9 @@ [[package]] name = "quote" -version = "1.0.9" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -314,9 +338,9 @@ [[package]] name = "rand_core" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom", ] @@ -337,10 +361,16 @@ ] [[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] name = "rustls" -version = "0.20.6" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aab8ee6c7097ed6057f43c187a62418d0c05a4bd5f18b3571db50ee0f9ce033" +checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" dependencies = [ "log", "ring", @@ -350,9 +380,9 @@ [[package]] name = "ryu" -version = "1.0.5" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "same-file" @@ -375,15 +405,15 @@ [[package]] name = "serde" -version = "1.0.127" +version = "1.0.185" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f03b9878abf6d14e6779d3f24f07b2cfa90352cfec4acc5aab8f1ac7f146fae8" +checksum = "be9b6f69f1dfd54c3b568ffa45c310d6973a5e5148fd40cf515acaf38cf5bc31" [[package]] name = "serde_json" -version = "1.0.66" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "336b10da19a12ad094b59d870ebde26a45402e5b470add4b5fd03c5048a32127" +checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" dependencies = [ "itoa", "ryu", @@ -392,9 +422,22 @@ [[package]] name = "slab" -version = "0.4.4" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +dependencies = [ + "autocfg", +] + +[[package]] +name = "socket2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c307a32c1c5c437f38c7fd45d753050587732ba8628319fbdf12a7e289ccc590" +checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +dependencies = [ + "libc", + "windows-sys", +] [[package]] name = "spin" @@ -404,37 +447,37 @@ [[package]] name = "syn" -version = "1.0.74" +version = "2.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1873d832550d4588c3dbc20f01361ab00bfe741048f71e3fecf145a7cc18b29c" +checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] name = "tokio" -version = "1.10.0" +version = "1.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cf844b23c6131f624accf65ce0e4e9956a8bb329400ea5bcc26ae3a5c20b0b" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" dependencies = [ - "autocfg", + "backtrace", "bytes", "libc", - "memchr", "mio", "num_cpus", "pin-project-lite", + "socket2", "tokio-macros", - "winapi", + "windows-sys", ] [[package]] name = "tokio-macros" -version = "1.3.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54473be61f4ebe4efd09cec9bd5d16fa51d70ea0192213d754d2d500457db110" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", @@ -454,9 +497,9 @@ [[package]] name = "tokio-util" -version = "0.7.2" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f988a1a1adc2fb21f9c12aa96441da33a1728193ae0b95d2be22dbd17fcb4e5c" +checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" dependencies = [ "bytes", "futures-core", @@ -468,41 +511,29 @@ [[package]] name = "tracing" -version = "0.1.26" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if", "pin-project-lite", - "tracing-attributes", "tracing-core", ] [[package]] -name = "tracing-attributes" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] name = "tracing-core" -version = "0.1.26" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f54c8ca710e81886d498c2fd3331b56c93aa248d49de2222ad2742247c60072f" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" dependencies = [ - "lazy_static", + "once_cell", ] [[package]] -name = "unicode-xid" -version = "0.2.2" +name = "unicode-ident" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "untrusted" @@ -512,26 +543,25 @@ [[package]] name = "walkdir" -version = "2.3.2" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" dependencies = [ "same-file", - "winapi", "winapi-util", ] [[package]] name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" +version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.76" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce9b1b516211d33767048e5d47fa2a381ed8b76fc48d2ce4aa39877f9f183e0" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -539,13 +569,13 @@ [[package]] name = "wasm-bindgen-backend" -version = "0.2.76" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe8dc78e2326ba5f845f4b5bf548401604fa20b1dd1d365fb73b6c1d6364041" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", - "lazy_static", "log", + "once_cell", "proc-macro2", "quote", "syn", @@ -554,9 +584,9 @@ [[package]] name = "wasm-bindgen-macro" -version = "0.2.76" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44468aa53335841d9d6b6c023eaab07c0cd4bddbcfdee3e2bb1e8d2cb8069fef" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -564,9 +594,9 @@ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.76" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0195807922713af1e67dc66132c7328206ed9766af3858164fb583eedc25fbad" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", @@ -577,15 +607,15 @@ [[package]] name = "wasm-bindgen-shared" -version = "0.2.76" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdb075a845574a1fa5f09fd77e43f7747599301ea3417a9fbffdeedfc1f4a29" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "web-sys" -version = "0.3.53" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224b2f6b67919060055ef1a67807367c2066ed520c3862cc013d26cf893a783c" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -603,9 +633,9 @@ [[package]] name = "webpki-roots" -version = "0.22.3" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d8de8415c823c8abd270ad483c6feeac771fad964890779f9a8cb24fbbc1bf" +checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" dependencies = [ "webpki", ] @@ -640,3 +670,69 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" diff -Nru temporalio-1.3.0/vendor/h2/Cargo.toml temporalio-1.3.0/vendor/h2/Cargo.toml --- temporalio-1.3.0/vendor/h2/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/h2/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,9 +11,9 @@ [package] edition = "2018" -rust-version = "1.56" +rust-version = "1.63" name = "h2" -version = "0.3.20" +version = "0.3.21" authors = [ "Carl Lerche ", "Sean McArthur ", diff -Nru temporalio-1.3.0/vendor/h2/CHANGELOG.md temporalio-1.3.0/vendor/h2/CHANGELOG.md --- temporalio-1.3.0/vendor/h2/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/h2/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,9 @@ +# 0.3.21 (August 21, 2023) + +* Fix opening of new streams over peer's max concurrent limit. +* Fix `RecvStream` to return data even if it has received a `CANCEL` stream error. +* Update MSRV to 1.63. + # 0.3.20 (June 26, 2023) * Fix panic if a server received a request with a `:status` pseudo header in the 1xx range. diff -Nru temporalio-1.3.0/vendor/h2/src/client.rs temporalio-1.3.0/vendor/h2/src/client.rs --- temporalio-1.3.0/vendor/h2/src/client.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/h2/src/client.rs 2023-10-30 19:40:00.000000000 +0000 @@ -510,8 +510,10 @@ self.inner .send_request(request, end_of_stream, self.pending.as_ref()) .map_err(Into::into) - .map(|stream| { - if stream.is_pending_open() { + .map(|(stream, is_full)| { + if stream.is_pending_open() && is_full { + // Only prevent sending another request when the request queue + // is not full. self.pending = Some(stream.clone_to_opaque()); } diff -Nru temporalio-1.3.0/vendor/h2/src/hpack/decoder.rs temporalio-1.3.0/vendor/h2/src/hpack/decoder.rs --- temporalio-1.3.0/vendor/h2/src/hpack/decoder.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/h2/src/hpack/decoder.rs 2023-10-30 19:40:00.000000000 +0000 @@ -447,7 +447,7 @@ Err(DecoderError::NeedMore(NeedMore::IntegerUnderflow)) } -fn peek_u8(buf: &mut B) -> Option { +fn peek_u8(buf: &B) -> Option { if buf.has_remaining() { Some(buf.chunk()[0]) } else { @@ -835,9 +835,9 @@ fn test_peek_u8() { let b = 0xff; let mut buf = Cursor::new(vec![b]); - assert_eq!(peek_u8(&mut buf), Some(b)); + assert_eq!(peek_u8(&buf), Some(b)); assert_eq!(buf.get_u8(), b); - assert_eq!(peek_u8(&mut buf), None); + assert_eq!(peek_u8(&buf), None); } #[test] diff -Nru temporalio-1.3.0/vendor/h2/src/lib.rs temporalio-1.3.0/vendor/h2/src/lib.rs --- temporalio-1.3.0/vendor/h2/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/h2/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -78,7 +78,7 @@ //! [`server::handshake`]: server/fn.handshake.html //! [`client::handshake`]: client/fn.handshake.html -#![doc(html_root_url = "https://docs.rs/h2/0.3.20")] +#![doc(html_root_url = "https://docs.rs/h2/0.3.21")] #![deny( missing_debug_implementations, missing_docs, diff -Nru temporalio-1.3.0/vendor/h2/src/proto/streams/counts.rs temporalio-1.3.0/vendor/h2/src/proto/streams/counts.rs --- temporalio-1.3.0/vendor/h2/src/proto/streams/counts.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/h2/src/proto/streams/counts.rs 2023-10-30 19:40:00.000000000 +0000 @@ -49,6 +49,14 @@ } } + /// Returns true when the next opened stream will reach capacity of outbound streams + /// + /// The number of client send streams is incremented in prioritize; send_request has to guess if + /// it should wait before allowing another request to be sent. + pub fn next_send_stream_will_reach_capacity(&self) -> bool { + self.max_send_streams <= (self.num_send_streams + 1) + } + /// Returns the current peer pub fn peer(&self) -> peer::Dyn { self.peer diff -Nru temporalio-1.3.0/vendor/h2/src/proto/streams/prioritize.rs temporalio-1.3.0/vendor/h2/src/proto/streams/prioritize.rs --- temporalio-1.3.0/vendor/h2/src/proto/streams/prioritize.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/h2/src/proto/streams/prioritize.rs 2023-10-30 19:40:00.000000000 +0000 @@ -520,7 +520,9 @@ tracing::trace!("poll_complete"); loop { - self.schedule_pending_open(store, counts); + if let Some(mut stream) = self.pop_pending_open(store, counts) { + self.pending_send.push_front(&mut stream); + } match self.pop_frame(buffer, store, max_frame_len, counts) { Some(frame) => { @@ -874,20 +876,24 @@ } } - fn schedule_pending_open(&mut self, store: &mut Store, counts: &mut Counts) { + fn pop_pending_open<'s>( + &mut self, + store: &'s mut Store, + counts: &mut Counts, + ) -> Option> { tracing::trace!("schedule_pending_open"); // check for any pending open streams - while counts.can_inc_num_send_streams() { + if counts.can_inc_num_send_streams() { if let Some(mut stream) = self.pending_open.pop(store) { tracing::trace!("schedule_pending_open; stream={:?}", stream.id); counts.inc_num_send_streams(&mut stream); - self.pending_send.push(&mut stream); stream.notify_send(); - } else { - return; + return Some(stream); } } + + None } } diff -Nru temporalio-1.3.0/vendor/h2/src/proto/streams/recv.rs temporalio-1.3.0/vendor/h2/src/proto/streams/recv.rs --- temporalio-1.3.0/vendor/h2/src/proto/streams/recv.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/h2/src/proto/streams/recv.rs 2023-10-30 19:40:00.000000000 +0000 @@ -318,7 +318,13 @@ Some(Event::Headers(Client(response))) => Poll::Ready(Ok(response)), Some(_) => panic!("poll_response called after response returned"), None => { - stream.state.ensure_recv_open()?; + if !stream.state.ensure_recv_open()? { + proto_err!(stream: "poll_response: stream={:?} is not opened;", stream.id); + return Poll::Ready(Err(Error::library_reset( + stream.id, + Reason::PROTOCOL_ERROR, + ))); + } stream.recv_task = Some(cx.waker().clone()); Poll::Pending diff -Nru temporalio-1.3.0/vendor/h2/src/proto/streams/send.rs temporalio-1.3.0/vendor/h2/src/proto/streams/send.rs --- temporalio-1.3.0/vendor/h2/src/proto/streams/send.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/h2/src/proto/streams/send.rs 2023-10-30 19:40:00.000000000 +0000 @@ -143,22 +143,27 @@ // Update the state stream.state.send_open(end_stream)?; - if counts.peer().is_local_init(frame.stream_id()) { - // If we're waiting on a PushPromise anyway - // handle potentially queueing the stream at that point - if !stream.is_pending_push { - if counts.can_inc_num_send_streams() { - counts.inc_num_send_streams(stream); - } else { - self.prioritize.queue_open(stream); - } - } + let mut pending_open = false; + if counts.peer().is_local_init(frame.stream_id()) && !stream.is_pending_push { + self.prioritize.queue_open(stream); + pending_open = true; } // Queue the frame for sending + // + // This call expects that, since new streams are in the open queue, new + // streams won't be pushed on pending_send. self.prioritize .queue_frame(frame.into(), buffer, stream, task); + // Need to notify the connection when pushing onto pending_open since + // queue_frame only notifies for pending_send. + if pending_open { + if let Some(task) = task.take() { + task.wake(); + } + } + Ok(()) } diff -Nru temporalio-1.3.0/vendor/h2/src/proto/streams/state.rs temporalio-1.3.0/vendor/h2/src/proto/streams/state.rs --- temporalio-1.3.0/vendor/h2/src/proto/streams/state.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/h2/src/proto/streams/state.rs 2023-10-30 19:40:00.000000000 +0000 @@ -64,8 +64,9 @@ Closed(Cause), } -#[derive(Debug, Copy, Clone)] +#[derive(Debug, Copy, Clone, Default)] enum Peer { + #[default] AwaitingHeaders, Streaming, } @@ -466,9 +467,3 @@ State { inner: Inner::Idle } } } - -impl Default for Peer { - fn default() -> Self { - AwaitingHeaders - } -} diff -Nru temporalio-1.3.0/vendor/h2/src/proto/streams/store.rs temporalio-1.3.0/vendor/h2/src/proto/streams/store.rs --- temporalio-1.3.0/vendor/h2/src/proto/streams/store.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/h2/src/proto/streams/store.rs 2023-10-30 19:40:00.000000000 +0000 @@ -256,7 +256,7 @@ /// /// If the stream is already contained by the list, return `false`. pub fn push(&mut self, stream: &mut store::Ptr) -> bool { - tracing::trace!("Queue::push"); + tracing::trace!("Queue::push_back"); if N::is_queued(stream) { tracing::trace!(" -> already queued"); @@ -282,6 +282,46 @@ } None => { tracing::trace!(" -> first entry"); + self.indices = Some(store::Indices { + head: stream.key(), + tail: stream.key(), + }); + } + } + + true + } + + /// Queue the stream + /// + /// If the stream is already contained by the list, return `false`. + pub fn push_front(&mut self, stream: &mut store::Ptr) -> bool { + tracing::trace!("Queue::push_front"); + + if N::is_queued(stream) { + tracing::trace!(" -> already queued"); + return false; + } + + N::set_queued(stream, true); + + // The next pointer shouldn't be set + debug_assert!(N::next(stream).is_none()); + + // Queue the stream + match self.indices { + Some(ref mut idxs) => { + tracing::trace!(" -> existing entries"); + + // Update the provided stream to point to the head node + let head_key = stream.resolve(idxs.head).key(); + N::set_next(stream, Some(head_key)); + + // Update the head pointer + idxs.head = stream.key(); + } + None => { + tracing::trace!(" -> first entry"); self.indices = Some(store::Indices { head: stream.key(), tail: stream.key(), diff -Nru temporalio-1.3.0/vendor/h2/src/proto/streams/streams.rs temporalio-1.3.0/vendor/h2/src/proto/streams/streams.rs --- temporalio-1.3.0/vendor/h2/src/proto/streams/streams.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/h2/src/proto/streams/streams.rs 2023-10-30 19:40:00.000000000 +0000 @@ -216,7 +216,7 @@ mut request: Request<()>, end_of_stream: bool, pending: Option<&OpaqueStreamRef>, - ) -> Result, SendError> { + ) -> Result<(StreamRef, bool), SendError> { use super::stream::ContentLength; use http::Method; @@ -298,10 +298,14 @@ // the lock, so it can't. me.refs += 1; - Ok(StreamRef { - opaque: OpaqueStreamRef::new(self.inner.clone(), &mut stream), - send_buffer: self.send_buffer.clone(), - }) + let is_full = me.counts.next_send_stream_will_reach_capacity(); + Ok(( + StreamRef { + opaque: OpaqueStreamRef::new(self.inner.clone(), &mut stream), + send_buffer: self.send_buffer.clone(), + }, + is_full, + )) } pub(crate) fn is_extended_connect_protocol_enabled(&self) -> bool { @@ -726,7 +730,11 @@ } // The stream must be receive open - stream.state.ensure_recv_open()?; + if !stream.state.ensure_recv_open()? { + proto_err!(conn: "recv_push_promise: initiating stream is not opened"); + return Err(Error::library_go_away(Reason::PROTOCOL_ERROR)); + } + stream.key() } None => { diff -Nru temporalio-1.3.0/vendor/hashbrown/benches/bench.rs temporalio-1.3.0/vendor/hashbrown/benches/bench.rs --- temporalio-1.3.0/vendor/hashbrown/benches/bench.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/benches/bench.rs 2023-10-30 19:40:00.000000000 +0000 @@ -311,7 +311,7 @@ // Each loop triggers one rehash for _ in 0..10 { - for i in 0..224 { + for i in 0..223 { set.insert(i); } diff -Nru temporalio-1.3.0/vendor/hashbrown/.cargo-checksum.json temporalio-1.3.0/vendor/hashbrown/.cargo-checksum.json --- temporalio-1.3.0/vendor/hashbrown/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"9f6a99787d52bc87da929df9348c5e6db403c54995be5a006eea4b641efb7652","Cargo.toml":"da2b6aaf324e787d10a6a3626347dae7c1b101614a04eba0e13a5f455201bdc7","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"ff8f68cb076caf8cefe7a6430d4ac086ce6af2ca8ce2c4e5a2004d4552ef52a2","README.md":"292bb49a47b4f75f0a94fd2316d43349cd3238823e5b9b96b9ee4d963a88b998","benches/bench.rs":"aadc39d815eadf094ed9357d946319df2d93194203bbccb7c33cea6951d654df","benches/insert_unique_unchecked.rs":"cb84275f22d5f95a5ac995ac6b2df74ffcf342765b401d27c95f2955c7b7cb9f","clippy.toml":"7535949f908c6d9aea4f9a9f3a7625552c93fc29e963d059d40f4def9d77ea7b","src/external_trait_impls/mod.rs":"d69528827794524cfd9acbeacc1ac4f6131e3c7574311e6d919f818f65fbff07","src/external_trait_impls/rayon/helpers.rs":"ba105bf0853ebc45157f22116ad0f55d3bdab75e721d8e7a677c7b912d0c0c6d","src/external_trait_impls/rayon/map.rs":"2809e2a0071db8101c38789deb955f3830c5c3455eb1794ff64a0cf2ceb53fc7","src/external_trait_impls/rayon/mod.rs":"156de9c1ad0123334ea3b7e5a17444faf1b8bf971aa88a1f23e2f2d1c3021141","src/external_trait_impls/rayon/raw.rs":"e62c5f3ca5fffea47357e64b6f8c34cec94af62d9bd28a2b87934da46c22b66e","src/external_trait_impls/rayon/set.rs":"c4c44d44e56c2f59e9e1355662e29d8744ac96645ca4414127a359fb46cb0fbf","src/external_trait_impls/serde.rs":"0bc1a1f218d1ae7a5262557a5e3737b9334caf7d50c136dbdc75ff75680c223b","src/lib.rs":"486e1ea3445e8438f0fb6256471d80621f6c59195f0c198d02c7d951838dd35b","src/macros.rs":"36fe532656879c80f7753d13354b889f5b45caef451a1bb3a27dbc32d74c9878","src/map.rs":"83748649c382b608de5f57e7d64a30455ff4270a24ada22159f9a6d8e084f202","src/raw/alloc.rs":"184a0345bc2c7544b65c28724063be26b1f2b28dbaaa028a0b01192ccac25557","src/raw/bitmask.rs":"820d90b19b7e3433a1048ace008c9526331cd53a576cb0cfc1ff9960b6fe52f8","src/raw/generic.rs":"51720f27d4b76ab411a9658affd0c6faf423402c9def0879481657dd7b1a7928","src/raw/mod.rs":"156c574d7e64f845902ac66032be80356acb1bca758839a92f660a233da91108","src/raw/sse2.rs":"838cfdb1daa1e70951ed25f985283b8b7ab4b46fa130f92eda152047ce6086f6","src/rustc_entry.rs":"cdd70972cba5b79ca1cad79869cb5e184d6dc4798ef90822e966ef89679ba011","src/scopeguard.rs":"1a246e08a63c06cd8ad934bd7da229421bf804f991ae93cd7e242da27ca6c601","src/set.rs":"3e8e6ceb1728dd9a2fa0db1cf351413a608dc73df905a1546e268d0e8e527493","tests/equivalent_trait.rs":"84faa3fe9d67c375d03fec81f0f1412c47862477d42e84e7d235258236338d5b","tests/hasher.rs":"9a8fdf67e4415618e16729969c386eefe71408cded5d46cf7b67d969276a3452","tests/raw.rs":"43ed2f98877533a0905611d9a30f26b183dd3e103e3856eeab80e7b8ac7894d3","tests/rayon.rs":"83d5289771542203f539a41cccb889fbe7ce70f5adf5b903ac9f051e3ba13cfa","tests/serde.rs":"6bac8054db722dd049901b37a6e006535bac30f425eb5cd91af19b5bc1dfe78e","tests/set.rs":"01cf39efb04646ef4c63a809ebb96dfa63cfec472bf8bdb6c121f6526d40c40e"},"package":"43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"} \ No newline at end of file +{"files":{"CHANGELOG.md":"f4769b4c6f44e09c379f55694f89a189620a78586a030a6c6c8d183265c31c52","Cargo.toml":"7a3568541b22e0e7dd0a8c2227699c84474673870f5e46dbb7db61ac2eac391f","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"ff8f68cb076caf8cefe7a6430d4ac086ce6af2ca8ce2c4e5a2004d4552ef52a2","README.md":"00e45d59f6f8537aa0f8e3dec17e24e9838b52f35aa9c1815c71ab1e8f63888e","benches/bench.rs":"ef7bc025922f077d307c565640c005d056e3d6c1713448a95aae92d3c22c1005","benches/insert_unique_unchecked.rs":"cb84275f22d5f95a5ac995ac6b2df74ffcf342765b401d27c95f2955c7b7cb9f","clippy.toml":"7535949f908c6d9aea4f9a9f3a7625552c93fc29e963d059d40f4def9d77ea7b","src/external_trait_impls/mod.rs":"0625e6a5e3b8ecc8901a12aeeea54393fd84617fb3a14d98a34d2d2bddb8d257","src/external_trait_impls/rayon/helpers.rs":"ba105bf0853ebc45157f22116ad0f55d3bdab75e721d8e7a677c7b912d0c0c6d","src/external_trait_impls/rayon/map.rs":"c0f50c8c6f2f70c70994a3243d92de3bbda5e78519c906c4f81f207ed63e5cc3","src/external_trait_impls/rayon/mod.rs":"156de9c1ad0123334ea3b7e5a17444faf1b8bf971aa88a1f23e2f2d1c3021141","src/external_trait_impls/rayon/raw.rs":"e62c5f3ca5fffea47357e64b6f8c34cec94af62d9bd28a2b87934da46c22b66e","src/external_trait_impls/rayon/set.rs":"c4c44d44e56c2f59e9e1355662e29d8744ac96645ca4414127a359fb46cb0fbf","src/external_trait_impls/rkyv/hash_map.rs":"7abe24318143b776016052b05840656afc858b1ba5252f3d418d61972477f53d","src/external_trait_impls/rkyv/hash_set.rs":"38d969125d17d606492ec4ec9fc06b7e7118eb903240dacf40de21b9b06fa5c8","src/external_trait_impls/rkyv/mod.rs":"54399ce5574fd1d84b7b0cb4238fa3e898575e89a6724299be009d2172bda02e","src/external_trait_impls/serde.rs":"0bc1a1f218d1ae7a5262557a5e3737b9334caf7d50c136dbdc75ff75680c223b","src/lib.rs":"662765875308544b71a46e20f18782e7a3246fddb11496206e296a24b78b56a5","src/macros.rs":"98a26b908fc0fbe6a58d008a317e550013d615eb3cc17a5054a573c62c1d74cb","src/map.rs":"4f4bdc2a2eb3c4395d655f5ce12d217b82f6edeef3579efcb6b18d08345f1d52","src/raw/alloc.rs":"902f8588d0fdee3e5c3dc02410f41d4b38ac88843727387f929f3186b3a2d322","src/raw/bitmask.rs":"3b3dce8d6a48856ada19085abf43908f124ab3419fcf434b9ca64d7bff243f67","src/raw/generic.rs":"efc5e603be3e9a17935aef1836a38ce01c78a0093b2af0671548eb5459b37921","src/raw/mod.rs":"cecbe517b36042094818887d41226bdafd78c6f67657540a8c1ea020cd5d302f","src/raw/neon.rs":"9907d8ebc36fc3df562dde478ea9b72213fda65288a304718d8647f0029dc9ad","src/raw/sse2.rs":"39038e3344e49f4638e211bcdbf56565ac53e90dce56172cc3b526fea911c2af","src/rustc_entry.rs":"19d3346843bc62c7c0165e8824d26355ab2666086f3088b1150a8b3f59376a76","src/scopeguard.rs":"1a246e08a63c06cd8ad934bd7da229421bf804f991ae93cd7e242da27ca6c601","src/set.rs":"349a1523656a8a3f364b5313d98a969444717461a7ab7133c8e5f215ac2c329d","tests/equivalent_trait.rs":"84faa3fe9d67c375d03fec81f0f1412c47862477d42e84e7d235258236338d5b","tests/hasher.rs":"9a8fdf67e4415618e16729969c386eefe71408cded5d46cf7b67d969276a3452","tests/raw.rs":"43ed2f98877533a0905611d9a30f26b183dd3e103e3856eeab80e7b8ac7894d3","tests/rayon.rs":"39cb24ab45fce8087bb54948715c8b6973ebfba1a325292b5b3cd9aab50b5fd2","tests/serde.rs":"6bac8054db722dd049901b37a6e006535bac30f425eb5cd91af19b5bc1dfe78e","tests/set.rs":"9f8011c29d1059aadb54b6dd4623521d5178b4278b4a56021ef2cee4bbb19fd9"},"package":"2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/hashbrown/Cargo.toml temporalio-1.3.0/vendor/hashbrown/Cargo.toml --- temporalio-1.3.0/vendor/hashbrown/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,9 +11,9 @@ [package] edition = "2021" -rust-version = "1.61.0" +rust-version = "1.64.0" name = "hashbrown" -version = "0.13.2" +version = "0.14.0" authors = ["Amanieu d'Antras "] exclude = [ ".github", @@ -52,9 +52,11 @@ optional = true package = "rustc-std-workspace-alloc" -[dependencies.bumpalo] -version = "3.5.0" +[dependencies.allocator-api2] +version = "0.2.9" +features = ["alloc"] optional = true +default-features = false [dependencies.compiler_builtins] version = "0.1.2" @@ -69,11 +71,21 @@ version = "1.0" optional = true +[dependencies.rkyv] +version = "0.7.42" +features = ["alloc"] +optional = true +default-features = false + [dependencies.serde] version = "1.0.25" optional = true default-features = false +[dev-dependencies.bumpalo] +version = "3.13.0" +features = ["allocator-api2"] + [dev-dependencies.doc-comment] version = "0.3.1" @@ -90,6 +102,10 @@ [dev-dependencies.rayon] version = "1.0" +[dev-dependencies.rkyv] +version = "0.7.42" +features = ["validation"] + [dev-dependencies.serde_test] version = "1.0" @@ -97,9 +113,13 @@ default = [ "ahash", "inline-more", + "allocator-api2", ] inline-more = [] -nightly = [] +nightly = [ + "allocator-api2?/nightly", + "bumpalo/allocator_api", +] raw = [] rustc-dep-of-std = [ "nightly", diff -Nru temporalio-1.3.0/vendor/hashbrown/CHANGELOG.md temporalio-1.3.0/vendor/hashbrown/CHANGELOG.md --- temporalio-1.3.0/vendor/hashbrown/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -7,6 +7,43 @@ ## [Unreleased] +## [v0.14.0] - 2023-06-01 + +### Added + +- Support for `allocator-api2` crate + for interfacing with custom allocators on stable. (#417) +- Optimized implementation for ARM using NEON instructions. (#430) +- Support for rkyv serialization. (#432) +- `Equivalent` trait to look up values without `Borrow`. (#345) +- `Hash{Map,Set}::raw_table_mut` is added whic returns a mutable reference. (#404) +- Fast path for `clear` on empty tables. (#428) + +### Changed + +- Optimized insertion to only perform a single lookup. (#277) +- `DrainFilter` has been renamed to `ExtractIf` and no longer drops remaining + elements when the iterator is dropped. #(374) +- Bumped MSRV to 1.64.0. (#431) +- `{Map,Set}::raw_table` now returns an immutable reference. (#404) +- `VacantEntry` and `OccupiedEntry` now use the default hasher if none is + specified in generics. (#389) +- `RawTable::data_start` now returns a `NonNull` to match `RawTable::data_end`. (#387) +- `RawIter::{reflect_insert, reflect_remove}` are now unsafe. (#429) +- `RawTable::find_potential` is renamed to `find_or_find_insert_slot` and returns an `InsertSlot`. (#429) +- `RawTable::remove` now also returns an `InsertSlot`. (#429) +- `InsertSlot` can be used to insert an element with `RawTable::insert_in_slot`. (#429) +- `RawIterHash` no longer has a lifetime tied to that of the `RawTable`. (#427) +- The trait bounds of `HashSet::raw_table` have been relaxed to not require `Eq + Hash`. (#423) +- `EntryRef::and_replace_entry_with` and `OccupiedEntryRef::replace_entry_with` + were changed to give a `&K` instead of a `&Q` to the closure. + +### Removed + +- Support for `bumpalo` as an allocator with custom wrapper. + Use `allocator-api2` feature in `bumpalo` to use it as an allocator + for `hashbrown` collections. (#417) + ## [v0.13.2] - 2023-01-12 ### Fixed @@ -248,7 +285,7 @@ ## [v0.6.2] - 2019-10-23 ### Added -- Added an `inline-more` feature (enabled by default) which allows choosing a tradeoff between +- Added an `inline-more` feature (enabled by default) which allows choosing a tradeoff between runtime performance and compilation time. (#119) ## [v0.6.1] - 2019-10-04 @@ -396,7 +433,8 @@ - Initial release -[Unreleased]: https://github.com/rust-lang/hashbrown/compare/v0.13.2...HEAD +[Unreleased]: https://github.com/rust-lang/hashbrown/compare/v0.14.0...HEAD +[v0.14.0]: https://github.com/rust-lang/hashbrown/compare/v0.13.2...v0.14.0 [v0.13.2]: https://github.com/rust-lang/hashbrown/compare/v0.13.1...v0.13.2 [v0.13.1]: https://github.com/rust-lang/hashbrown/compare/v0.12.3...v0.13.1 [v0.12.3]: https://github.com/rust-lang/hashbrown/compare/v0.12.2...v0.12.3 diff -Nru temporalio-1.3.0/vendor/hashbrown/README.md temporalio-1.3.0/vendor/hashbrown/README.md --- temporalio-1.3.0/vendor/hashbrown/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -4,7 +4,7 @@ [![Build Status](https://github.com/rust-lang/hashbrown/actions/workflows/rust.yml/badge.svg)](https://github.com/rust-lang/hashbrown/actions) [![Crates.io](https://img.shields.io/crates/v/hashbrown.svg)](https://crates.io/crates/hashbrown) [![Documentation](https://docs.rs/hashbrown/badge.svg)](https://docs.rs/hashbrown) -[![Rust](https://img.shields.io/badge/rust-1.61.0%2B-blue.svg?maxAge=3600)](https://github.com/rust-lang/hashbrown) +[![Rust](https://img.shields.io/badge/rust-1.64.0%2B-blue.svg?maxAge=3600)](https://github.com/rust-lang/hashbrown) This crate is a Rust port of Google's high-performance [SwissTable] hash map, adapted to make it a drop-in replacement for Rust's standard `HashMap` @@ -40,44 +40,44 @@ With the hashbrown default AHash hasher: -| name | oldstdhash ns/iter | hashbrown ns/iter | diff ns/iter | diff % | speedup | -|:------------------------|:-------------------:|------------------:|:------------:|---------:|---------| -| insert_ahash_highbits | 18,865 | 8,020 | -10,845 | -57.49% | x 2.35 | -| insert_ahash_random | 19,711 | 8,019 | -11,692 | -59.32% | x 2.46 | -| insert_ahash_serial | 19,365 | 6,463 | -12,902 | -66.63% | x 3.00 | -| insert_erase_ahash_highbits | 51,136 | 17,916 | -33,220 | -64.96% | x 2.85 | -| insert_erase_ahash_random | 51,157 | 17,688 | -33,469 | -65.42% | x 2.89 | -| insert_erase_ahash_serial | 45,479 | 14,895 | -30,584 | -67.25% | x 3.05 | -| iter_ahash_highbits | 1,399 | 1,092 | -307 | -21.94% | x 1.28 | -| iter_ahash_random | 1,586 | 1,059 | -527 | -33.23% | x 1.50 | -| iter_ahash_serial | 3,168 | 1,079 | -2,089 | -65.94% | x 2.94 | -| lookup_ahash_highbits | 32,351 | 4,792 | -27,559 | -85.19% | x 6.75 | -| lookup_ahash_random | 17,419 | 4,817 | -12,602 | -72.35% | x 3.62 | -| lookup_ahash_serial | 15,254 | 3,606 | -11,648 | -76.36% | x 4.23 | -| lookup_fail_ahash_highbits | 21,187 | 4,369 | -16,818 | -79.38% | x 4.85 | -| lookup_fail_ahash_random | 21,550 | 4,395 | -17,155 | -79.61% | x 4.90 | -| lookup_fail_ahash_serial | 19,450 | 3,176 | -16,274 | -83.67% | x 6.12 | +| name | oldstdhash ns/iter | hashbrown ns/iter | diff ns/iter | diff % | speedup | +| :-------------------------- | :----------------: | ----------------: | :----------: | ------: | ------- | +| insert_ahash_highbits | 18,865 | 8,020 | -10,845 | -57.49% | x 2.35 | +| insert_ahash_random | 19,711 | 8,019 | -11,692 | -59.32% | x 2.46 | +| insert_ahash_serial | 19,365 | 6,463 | -12,902 | -66.63% | x 3.00 | +| insert_erase_ahash_highbits | 51,136 | 17,916 | -33,220 | -64.96% | x 2.85 | +| insert_erase_ahash_random | 51,157 | 17,688 | -33,469 | -65.42% | x 2.89 | +| insert_erase_ahash_serial | 45,479 | 14,895 | -30,584 | -67.25% | x 3.05 | +| iter_ahash_highbits | 1,399 | 1,092 | -307 | -21.94% | x 1.28 | +| iter_ahash_random | 1,586 | 1,059 | -527 | -33.23% | x 1.50 | +| iter_ahash_serial | 3,168 | 1,079 | -2,089 | -65.94% | x 2.94 | +| lookup_ahash_highbits | 32,351 | 4,792 | -27,559 | -85.19% | x 6.75 | +| lookup_ahash_random | 17,419 | 4,817 | -12,602 | -72.35% | x 3.62 | +| lookup_ahash_serial | 15,254 | 3,606 | -11,648 | -76.36% | x 4.23 | +| lookup_fail_ahash_highbits | 21,187 | 4,369 | -16,818 | -79.38% | x 4.85 | +| lookup_fail_ahash_random | 21,550 | 4,395 | -17,155 | -79.61% | x 4.90 | +| lookup_fail_ahash_serial | 19,450 | 3,176 | -16,274 | -83.67% | x 6.12 | With the libstd default SipHash hasher: -|name | oldstdhash ns/iter | hashbrown ns/iter | diff ns/iter | diff % | speedup | -|:------------------------|:-------------------:|------------------:|:------------:|---------:|---------| -|insert_std_highbits |19,216 |16,885 | -2,331 | -12.13% | x 1.14 | -|insert_std_random |19,179 |17,034 | -2,145 | -11.18% | x 1.13 | -|insert_std_serial |19,462 |17,493 | -1,969 | -10.12% | x 1.11 | -|insert_erase_std_highbits |50,825 |35,847 | -14,978 | -29.47% | x 1.42 | -|insert_erase_std_random |51,448 |35,392 | -16,056 | -31.21% | x 1.45 | -|insert_erase_std_serial |87,711 |38,091 | -49,620 | -56.57% | x 2.30 | -|iter_std_highbits |1,378 |1,159 | -219 | -15.89% | x 1.19 | -|iter_std_random |1,395 |1,132 | -263 | -18.85% | x 1.23 | -|iter_std_serial |1,704 |1,105 | -599 | -35.15% | x 1.54 | -|lookup_std_highbits |17,195 |13,642 | -3,553 | -20.66% | x 1.26 | -|lookup_std_random |17,181 |13,773 | -3,408 | -19.84% | x 1.25 | -|lookup_std_serial |15,483 |13,651 | -1,832 | -11.83% | x 1.13 | -|lookup_fail_std_highbits |20,926 |13,474 | -7,452 | -35.61% | x 1.55 | -|lookup_fail_std_random |21,766 |13,505 | -8,261 | -37.95% | x 1.61 | -|lookup_fail_std_serial |19,336 |13,519 | -5,817 | -30.08% | x 1.43 | +| name | oldstdhash ns/iter | hashbrown ns/iter | diff ns/iter | diff % | speedup | +| :------------------------ | :----------------: | ----------------: | :----------: | ------: | ------- | +| insert_std_highbits | 19,216 | 16,885 | -2,331 | -12.13% | x 1.14 | +| insert_std_random | 19,179 | 17,034 | -2,145 | -11.18% | x 1.13 | +| insert_std_serial | 19,462 | 17,493 | -1,969 | -10.12% | x 1.11 | +| insert_erase_std_highbits | 50,825 | 35,847 | -14,978 | -29.47% | x 1.42 | +| insert_erase_std_random | 51,448 | 35,392 | -16,056 | -31.21% | x 1.45 | +| insert_erase_std_serial | 87,711 | 38,091 | -49,620 | -56.57% | x 2.30 | +| iter_std_highbits | 1,378 | 1,159 | -219 | -15.89% | x 1.19 | +| iter_std_random | 1,395 | 1,132 | -263 | -18.85% | x 1.23 | +| iter_std_serial | 1,704 | 1,105 | -599 | -35.15% | x 1.54 | +| lookup_std_highbits | 17,195 | 13,642 | -3,553 | -20.66% | x 1.26 | +| lookup_std_random | 17,181 | 13,773 | -3,408 | -19.84% | x 1.25 | +| lookup_std_serial | 15,483 | 13,651 | -1,832 | -11.83% | x 1.13 | +| lookup_fail_std_highbits | 20,926 | 13,474 | -7,452 | -35.61% | x 1.55 | +| lookup_fail_std_random | 21,766 | 13,505 | -8,261 | -37.95% | x 1.61 | +| lookup_fail_std_serial | 19,336 | 13,519 | -5,817 | -30.08% | x 1.43 | ## Usage @@ -85,7 +85,7 @@ ```toml [dependencies] -hashbrown = "0.13" +hashbrown = "0.14" ``` Then: @@ -101,12 +101,13 @@ - `nightly`: Enables nightly-only features including: `#[may_dangle]`. - `serde`: Enables serde serialization support. +- `rkyv`: Enables rkyv serialization support. - `rayon`: Enables rayon parallel iterator support. - `raw`: Enables access to the experimental and unsafe `RawTable` API. - `inline-more`: Adds inline hints to most functions, improving run-time performance at the cost of compilation time. (enabled by default) -- `bumpalo`: Provides a `BumpWrapper` type which allows `bumpalo` to be used for memory allocation. - `ahash`: Compiles with ahash as default hasher. (enabled by default) +- `allocator-api2`: Enables support for allocators that support `allocator-api2`. (enabled by default) ## License diff -Nru temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/mod.rs temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/mod.rs --- temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,6 @@ #[cfg(feature = "rayon")] pub(crate) mod rayon; +#[cfg(feature = "rkyv")] +mod rkyv; #[cfg(feature = "serde")] mod serde; diff -Nru temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/rayon/map.rs temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/rayon/map.rs --- temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/rayon/map.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/rayon/map.rs 2023-10-30 19:40:00.000000000 +0000 @@ -561,10 +561,7 @@ assert_eq!(value.load(Ordering::Relaxed), 100); // retain only half - let _v: Vec<_> = hm - .into_par_iter() - .filter(|&(ref key, _)| key.k < 50) - .collect(); + let _v: Vec<_> = hm.into_par_iter().filter(|(key, _)| key.k < 50).collect(); assert_eq!(key.load(Ordering::Relaxed), 50); assert_eq!(value.load(Ordering::Relaxed), 50); @@ -611,7 +608,7 @@ assert_eq!(value.load(Ordering::Relaxed), 100); // retain only half - let _v: Vec<_> = hm.drain().filter(|&(ref key, _)| key.k < 50).collect(); + let _v: Vec<_> = hm.drain().filter(|(key, _)| key.k < 50).collect(); assert!(hm.is_empty()); assert_eq!(key.load(Ordering::Relaxed), 50); diff -Nru temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/rkyv/hash_map.rs temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/rkyv/hash_map.rs --- temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/rkyv/hash_map.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/rkyv/hash_map.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,125 @@ +use crate::HashMap; +use core::{ + borrow::Borrow, + hash::{BuildHasher, Hash}, +}; +use rkyv::{ + collections::hash_map::{ArchivedHashMap, HashMapResolver}, + ser::{ScratchSpace, Serializer}, + Archive, Deserialize, Fallible, Serialize, +}; + +impl Archive for HashMap +where + K::Archived: Hash + Eq, +{ + type Archived = ArchivedHashMap; + type Resolver = HashMapResolver; + + #[inline] + unsafe fn resolve(&self, pos: usize, resolver: Self::Resolver, out: *mut Self::Archived) { + ArchivedHashMap::resolve_from_len(self.len(), pos, resolver, out); + } +} + +impl Serialize for HashMap +where + K: Serialize + Hash + Eq, + K::Archived: Hash + Eq, + V: Serialize, + S: Serializer + ScratchSpace + ?Sized, +{ + #[inline] + fn serialize(&self, serializer: &mut S) -> Result { + unsafe { ArchivedHashMap::serialize_from_iter(self.iter(), serializer) } + } +} + +impl + Deserialize, D> for ArchivedHashMap +where + K::Archived: Deserialize + Hash + Eq, + V::Archived: Deserialize, +{ + #[inline] + fn deserialize(&self, deserializer: &mut D) -> Result, D::Error> { + let mut result = HashMap::with_capacity_and_hasher(self.len(), S::default()); + for (k, v) in self.iter() { + result.insert(k.deserialize(deserializer)?, v.deserialize(deserializer)?); + } + Ok(result) + } +} + +impl, V, AK: Hash + Eq, AV: PartialEq, S: BuildHasher> + PartialEq> for ArchivedHashMap +{ + #[inline] + fn eq(&self, other: &HashMap) -> bool { + if self.len() != other.len() { + false + } else { + self.iter() + .all(|(key, value)| other.get(key).map_or(false, |v| value.eq(v))) + } + } +} + +impl, V, AK: Hash + Eq, AV: PartialEq> + PartialEq> for HashMap +{ + #[inline] + fn eq(&self, other: &ArchivedHashMap) -> bool { + other.eq(self) + } +} + +#[cfg(test)] +mod tests { + use crate::HashMap; + use alloc::string::String; + use rkyv::{ + archived_root, check_archived_root, + ser::{serializers::AllocSerializer, Serializer}, + Deserialize, Infallible, + }; + + #[test] + fn index_map() { + let mut value = HashMap::new(); + value.insert(String::from("foo"), 10); + value.insert(String::from("bar"), 20); + value.insert(String::from("baz"), 40); + value.insert(String::from("bat"), 80); + + let mut serializer = AllocSerializer::<4096>::default(); + serializer.serialize_value(&value).unwrap(); + let result = serializer.into_serializer().into_inner(); + let archived = unsafe { archived_root::>(result.as_ref()) }; + + assert_eq!(value.len(), archived.len()); + for (k, v) in value.iter() { + let (ak, av) = archived.get_key_value(k.as_str()).unwrap(); + assert_eq!(k, ak); + assert_eq!(v, av); + } + + let deserialized: HashMap = archived.deserialize(&mut Infallible).unwrap(); + assert_eq!(value, deserialized); + } + + #[test] + fn validate_index_map() { + let mut value = HashMap::new(); + value.insert(String::from("foo"), 10); + value.insert(String::from("bar"), 20); + value.insert(String::from("baz"), 40); + value.insert(String::from("bat"), 80); + + let mut serializer = AllocSerializer::<4096>::default(); + serializer.serialize_value(&value).unwrap(); + let result = serializer.into_serializer().into_inner(); + check_archived_root::>(result.as_ref()) + .expect("failed to validate archived index map"); + } +} diff -Nru temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/rkyv/hash_set.rs temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/rkyv/hash_set.rs --- temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/rkyv/hash_set.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/rkyv/hash_set.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,123 @@ +use crate::HashSet; +use core::{ + borrow::Borrow, + hash::{BuildHasher, Hash}, +}; +use rkyv::{ + collections::hash_set::{ArchivedHashSet, HashSetResolver}, + ser::{ScratchSpace, Serializer}, + Archive, Deserialize, Fallible, Serialize, +}; + +impl Archive for HashSet +where + K::Archived: Hash + Eq, +{ + type Archived = ArchivedHashSet; + type Resolver = HashSetResolver; + + #[inline] + unsafe fn resolve(&self, pos: usize, resolver: Self::Resolver, out: *mut Self::Archived) { + ArchivedHashSet::::resolve_from_len(self.len(), pos, resolver, out); + } +} + +impl Serialize for HashSet +where + K::Archived: Hash + Eq, + K: Serialize + Hash + Eq, + S: ScratchSpace + Serializer + ?Sized, +{ + #[inline] + fn serialize(&self, serializer: &mut S) -> Result { + unsafe { ArchivedHashSet::serialize_from_iter(self.iter(), serializer) } + } +} + +impl Deserialize, D> for ArchivedHashSet +where + K: Archive + Hash + Eq, + K::Archived: Deserialize + Hash + Eq, + D: Fallible + ?Sized, + S: Default + BuildHasher, +{ + #[inline] + fn deserialize(&self, deserializer: &mut D) -> Result, D::Error> { + let mut result = HashSet::with_hasher(S::default()); + for k in self.iter() { + result.insert(k.deserialize(deserializer)?); + } + Ok(result) + } +} + +impl, AK: Hash + Eq, S: BuildHasher> PartialEq> + for ArchivedHashSet +{ + #[inline] + fn eq(&self, other: &HashSet) -> bool { + if self.len() != other.len() { + false + } else { + self.iter().all(|key| other.get(key).is_some()) + } + } +} + +impl, AK: Hash + Eq, S: BuildHasher> PartialEq> + for HashSet +{ + #[inline] + fn eq(&self, other: &ArchivedHashSet) -> bool { + other.eq(self) + } +} + +#[cfg(test)] +mod tests { + use crate::HashSet; + use alloc::string::String; + use rkyv::{ + archived_root, check_archived_root, + ser::{serializers::AllocSerializer, Serializer}, + Deserialize, Infallible, + }; + + #[test] + fn index_set() { + let mut value = HashSet::new(); + value.insert(String::from("foo")); + value.insert(String::from("bar")); + value.insert(String::from("baz")); + value.insert(String::from("bat")); + + let mut serializer = AllocSerializer::<4096>::default(); + serializer.serialize_value(&value).unwrap(); + let result = serializer.into_serializer().into_inner(); + let archived = unsafe { archived_root::>(result.as_ref()) }; + + assert_eq!(value.len(), archived.len()); + for k in value.iter() { + let ak = archived.get(k.as_str()).unwrap(); + assert_eq!(k, ak); + } + + let deserialized: HashSet = archived.deserialize(&mut Infallible).unwrap(); + assert_eq!(value, deserialized); + } + + #[test] + fn validate_index_set() { + let mut value = HashSet::new(); + value.insert(String::from("foo")); + value.insert(String::from("bar")); + value.insert(String::from("baz")); + value.insert(String::from("bat")); + + let mut serializer = AllocSerializer::<4096>::default(); + serializer.serialize_value(&value).unwrap(); + let result = serializer.into_serializer().into_inner(); + check_archived_root::>(result.as_ref()) + .expect("failed to validate archived index set"); + } +} diff -Nru temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/rkyv/mod.rs temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/rkyv/mod.rs --- temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/rkyv/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/src/external_trait_impls/rkyv/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,2 @@ +mod hash_map; +mod hash_set; diff -Nru temporalio-1.3.0/vendor/hashbrown/src/lib.rs temporalio-1.3.0/vendor/hashbrown/src/lib.rs --- temporalio-1.3.0/vendor/hashbrown/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -20,9 +20,8 @@ extend_one, allocator_api, slice_ptr_get, - nonnull_slice_from_raw_parts, maybe_uninit_array_assume_init, - build_hasher_simple_hash_one + strict_provenance ) )] #![allow( @@ -37,6 +36,7 @@ )] #![warn(missing_docs)] #![warn(rust_2018_idioms)] +#![cfg_attr(feature = "nightly", warn(fuzzy_provenance_casts))] #[cfg(test)] #[macro_use] @@ -163,21 +163,3 @@ layout: alloc::alloc::Layout, }, } - -/// Wrapper around `Bump` which allows it to be used as an allocator for -/// `HashMap`, `HashSet` and `RawTable`. -/// -/// `Bump` can be used directly without this wrapper on nightly if you enable -/// the `allocator-api` feature of the `bumpalo` crate. -#[cfg(feature = "bumpalo")] -#[derive(Clone, Copy, Debug)] -pub struct BumpWrapper<'a>(pub &'a bumpalo::Bump); - -#[cfg(feature = "bumpalo")] -#[test] -fn test_bumpalo() { - use bumpalo::Bump; - let bump = Bump::new(); - let mut map = HashMap::new_in(BumpWrapper(&bump)); - map.insert(0, 1); -} diff -Nru temporalio-1.3.0/vendor/hashbrown/src/macros.rs temporalio-1.3.0/vendor/hashbrown/src/macros.rs --- temporalio-1.3.0/vendor/hashbrown/src/macros.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/src/macros.rs 2023-10-30 19:40:00.000000000 +0000 @@ -37,7 +37,7 @@ // semicolon is all the remaining items (@__items ($($not:meta,)*) ; ) => {}; (@__items ($($not:meta,)*) ; ( ($($m:meta),*) ($($it:item)*) ), $($rest:tt)*) => { - // Emit all items within one block, applying an approprate #[cfg]. The + // Emit all items within one block, applying an appropriate #[cfg]. The // #[cfg] will require all `$m` matchers specified and must also negate // all previous matchers. cfg_if! { @__apply cfg(all($($m,)* not(any($($not),*)))), $($it)* } diff -Nru temporalio-1.3.0/vendor/hashbrown/src/map.rs temporalio-1.3.0/vendor/hashbrown/src/map.rs --- temporalio-1.3.0/vendor/hashbrown/src/map.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/src/map.rs 2023-10-30 19:40:00.000000000 +0000 @@ -260,29 +260,6 @@ hash_builder.hash_one(val) } -#[cfg(not(feature = "nightly"))] -#[cfg_attr(feature = "inline-more", inline)] -pub(crate) fn make_insert_hash(hash_builder: &S, val: &K) -> u64 -where - K: Hash, - S: BuildHasher, -{ - use core::hash::Hasher; - let mut state = hash_builder.build_hasher(); - val.hash(&mut state); - state.finish() -} - -#[cfg(feature = "nightly")] -#[cfg_attr(feature = "inline-more", inline)] -pub(crate) fn make_insert_hash(hash_builder: &S, val: &K) -> u64 -where - K: Hash, - S: BuildHasher, -{ - hash_builder.hash_one(val) -} - #[cfg(feature = "ahash")] impl HashMap { /// Creates an empty `HashMap`. @@ -368,13 +345,11 @@ /// # Examples /// /// ``` - /// # #[cfg(feature = "bumpalo")] - /// # fn test() { - /// use hashbrown::{HashMap, BumpWrapper}; + /// use hashbrown::HashMap; /// use bumpalo::Bump; /// /// let bump = Bump::new(); - /// let mut map = HashMap::new_in(BumpWrapper(&bump)); + /// let mut map = HashMap::new_in(&bump); /// /// // The created HashMap holds none elements /// assert_eq!(map.len(), 0); @@ -388,11 +363,6 @@ /// assert_eq!(map.len(), 1); /// // And it also allocates some capacity /// assert!(map.capacity() > 1); - /// # } - /// # fn main() { - /// # #[cfg(feature = "bumpalo")] - /// # test() - /// # } /// ``` #[cfg_attr(feature = "inline-more", inline)] pub fn new_in(alloc: A) -> Self { @@ -419,13 +389,11 @@ /// # Examples /// /// ``` - /// # #[cfg(feature = "bumpalo")] - /// # fn test() { - /// use hashbrown::{HashMap, BumpWrapper}; + /// use hashbrown::HashMap; /// use bumpalo::Bump; /// /// let bump = Bump::new(); - /// let mut map = HashMap::with_capacity_in(5, BumpWrapper(&bump)); + /// let mut map = HashMap::with_capacity_in(5, &bump); /// /// // The created HashMap holds none elements /// assert_eq!(map.len(), 0); @@ -444,11 +412,6 @@ /// assert_eq!(map.len(), 5); /// // But its capacity isn't changed /// assert_eq!(map.capacity(), empty_map_capacity) - /// # } - /// # fn main() { - /// # #[cfg(feature = "bumpalo")] - /// # test() - /// # } /// ``` #[cfg_attr(feature = "inline-more", inline)] pub fn with_capacity_in(capacity: usize, alloc: A) -> Self { @@ -972,15 +935,12 @@ /// In other words, move all pairs `(k, v)` such that `f(&k, &mut v)` returns `true` out /// into another iterator. /// - /// Note that `drain_filter` lets you mutate every value in the filter closure, regardless of + /// Note that `extract_if` lets you mutate every value in the filter closure, regardless of /// whether you choose to keep or remove it. /// - /// When the returned DrainedFilter is dropped, any remaining elements that satisfy - /// the predicate are dropped from the table. - /// - /// It is unspecified how many more elements will be subjected to the closure - /// if a panic occurs in the closure, or a panic occurs while dropping an element, - /// or if the `DrainFilter` value is leaked. + /// If the returned `ExtractIf` is not exhausted, e.g. because it is dropped without iterating + /// or the iteration short-circuits, then the remaining elements will be retained. + /// Use [`retain()`] with a negated predicate if you do not need the returned iterator. /// /// Keeps the allocated memory for reuse. /// @@ -991,7 +951,7 @@ /// /// let mut map: HashMap = (0..8).map(|x| (x, x)).collect(); /// - /// let drained: HashMap = map.drain_filter(|k, _v| k % 2 == 0).collect(); + /// let drained: HashMap = map.extract_if(|k, _v| k % 2 == 0).collect(); /// /// let mut evens = drained.keys().cloned().collect::>(); /// let mut odds = map.keys().cloned().collect::>(); @@ -1004,21 +964,20 @@ /// let mut map: HashMap = (0..8).map(|x| (x, x)).collect(); /// /// { // Iterator is dropped without being consumed. - /// let d = map.drain_filter(|k, _v| k % 2 != 0); + /// let d = map.extract_if(|k, _v| k % 2 != 0); /// } /// - /// // But the map lens have been reduced by half - /// // even if we do not use DrainFilter iterator. - /// assert_eq!(map.len(), 4); + /// // ExtractIf was not exhausted, therefore no elements were drained. + /// assert_eq!(map.len(), 8); /// ``` #[cfg_attr(feature = "inline-more", inline)] - pub fn drain_filter(&mut self, f: F) -> DrainFilter<'_, K, V, F, A> + pub fn extract_if(&mut self, f: F) -> ExtractIf<'_, K, V, F, A> where F: FnMut(&K, &mut V) -> bool, { - DrainFilter { + ExtractIf { f, - inner: DrainFilterInner { + inner: ExtractIfInner { iter: unsafe { self.table.iter() }, table: &mut self.table, }, @@ -1266,7 +1225,7 @@ /// ``` #[cfg_attr(feature = "inline-more", inline)] pub fn entry(&mut self, key: K) -> Entry<'_, K, V, S, A> { - let hash = make_insert_hash::(&self.hash_builder, &key); + let hash = make_hash::(&self.hash_builder, &key); if let Some(elem) = self.table.find(hash, equivalent_key(&key)) { Entry::Occupied(OccupiedEntry { hash, @@ -1348,7 +1307,7 @@ { // Avoid `Option::map` because it bloats LLVM IR. match self.get_inner(k) { - Some(&(_, ref v)) => Some(v), + Some((_, v)) => Some(v), None => None, } } @@ -1379,7 +1338,7 @@ { // Avoid `Option::map` because it bloats LLVM IR. match self.get_inner(k) { - Some(&(ref key, ref value)) => Some((key, value)), + Some((key, value)) => Some((key, value)), None => None, } } @@ -1786,13 +1745,19 @@ /// ``` #[cfg_attr(feature = "inline-more", inline)] pub fn insert(&mut self, k: K, v: V) -> Option { - let hash = make_insert_hash::(&self.hash_builder, &k); - if let Some((_, item)) = self.table.get_mut(hash, equivalent_key(&k)) { - Some(mem::replace(item, v)) - } else { - self.table - .insert(hash, (k, v), make_hasher::<_, V, S>(&self.hash_builder)); - None + let hash = make_hash::(&self.hash_builder, &k); + let hasher = make_hasher::<_, V, S>(&self.hash_builder); + match self + .table + .find_or_find_insert_slot(hash, equivalent_key(&k), hasher) + { + Ok(bucket) => Some(mem::replace(unsafe { &mut bucket.as_mut().1 }, v)), + Err(slot) => { + unsafe { + self.table.insert_in_slot(hash, slot, (k, v)); + } + None + } } } @@ -1847,7 +1812,7 @@ /// ``` #[cfg_attr(feature = "inline-more", inline)] pub fn insert_unique_unchecked(&mut self, k: K, v: V) -> (&K, &mut V) { - let hash = make_insert_hash::(&self.hash_builder, &k); + let hash = make_hash::(&self.hash_builder, &k); let bucket = self .table .insert(hash, (k, v), make_hasher::<_, V, S>(&self.hash_builder)); @@ -2123,6 +2088,18 @@ RawEntryBuilder { map: self } } + /// Returns a reference to the [`RawTable`] used underneath [`HashMap`]. + /// This function is only available if the `raw` feature of the crate is enabled. + /// + /// See [`raw_table_mut`] for more. + /// + /// [`raw_table_mut`]: Self::raw_table_mut + #[cfg(feature = "raw")] + #[cfg_attr(feature = "inline-more", inline)] + pub fn raw_table(&self) -> &RawTable<(K, V), A> { + &self.table + } + /// Returns a mutable reference to the [`RawTable`] used underneath [`HashMap`]. /// This function is only available if the `raw` feature of the crate is enabled. /// @@ -2159,9 +2136,9 @@ /// where /// F: Fn(&(K, V)) -> bool, /// { - /// let raw_table = map.raw_table(); + /// let raw_table = map.raw_table_mut(); /// match raw_table.find(hash, is_match) { - /// Some(bucket) => Some(unsafe { raw_table.remove(bucket) }), + /// Some(bucket) => Some(unsafe { raw_table.remove(bucket).0 }), /// None => None, /// } /// } @@ -2180,7 +2157,7 @@ /// ``` #[cfg(feature = "raw")] #[cfg_attr(feature = "inline-more", inline)] - pub fn raw_table(&mut self) -> &mut RawTable<(K, V), A> { + pub fn raw_table_mut(&mut self) -> &mut RawTable<(K, V), A> { &mut self.table } } @@ -2711,10 +2688,10 @@ /// A draining iterator over entries of a `HashMap` which don't satisfy the predicate /// `f(&k, &mut v)` in arbitrary order. The iterator element type is `(K, V)`. /// -/// This `struct` is created by the [`drain_filter`] method on [`HashMap`]. See its +/// This `struct` is created by the [`extract_if`] method on [`HashMap`]. See its /// documentation for more. /// -/// [`drain_filter`]: struct.HashMap.html#method.drain_filter +/// [`extract_if`]: struct.HashMap.html#method.extract_if /// [`HashMap`]: struct.HashMap.html /// /// # Examples @@ -2724,54 +2701,31 @@ /// /// let mut map: HashMap = [(1, "a"), (2, "b"), (3, "c")].into(); /// -/// let mut drain_filter = map.drain_filter(|k, _v| k % 2 != 0); -/// let mut vec = vec![drain_filter.next(), drain_filter.next()]; +/// let mut extract_if = map.extract_if(|k, _v| k % 2 != 0); +/// let mut vec = vec![extract_if.next(), extract_if.next()]; /// -/// // The `DrainFilter` iterator produces items in arbitrary order, so the +/// // The `ExtractIf` iterator produces items in arbitrary order, so the /// // items must be sorted to test them against a sorted array. /// vec.sort_unstable(); /// assert_eq!(vec, [Some((1, "a")),Some((3, "c"))]); /// /// // It is fused iterator -/// assert_eq!(drain_filter.next(), None); -/// assert_eq!(drain_filter.next(), None); -/// drop(drain_filter); +/// assert_eq!(extract_if.next(), None); +/// assert_eq!(extract_if.next(), None); +/// drop(extract_if); /// /// assert_eq!(map.len(), 1); /// ``` -pub struct DrainFilter<'a, K, V, F, A: Allocator + Clone = Global> +#[must_use = "Iterators are lazy unless consumed"] +pub struct ExtractIf<'a, K, V, F, A: Allocator + Clone = Global> where F: FnMut(&K, &mut V) -> bool, { f: F, - inner: DrainFilterInner<'a, K, V, A>, -} - -impl<'a, K, V, F, A> Drop for DrainFilter<'a, K, V, F, A> -where - F: FnMut(&K, &mut V) -> bool, - A: Allocator + Clone, -{ - #[cfg_attr(feature = "inline-more", inline)] - fn drop(&mut self) { - while let Some(item) = self.next() { - let guard = ConsumeAllOnDrop(self); - drop(item); - mem::forget(guard); - } - } + inner: ExtractIfInner<'a, K, V, A>, } -pub(super) struct ConsumeAllOnDrop<'a, T: Iterator>(pub &'a mut T); - -impl Drop for ConsumeAllOnDrop<'_, T> { - #[cfg_attr(feature = "inline-more", inline)] - fn drop(&mut self) { - self.0.for_each(drop); - } -} - -impl Iterator for DrainFilter<'_, K, V, F, A> +impl Iterator for ExtractIf<'_, K, V, F, A> where F: FnMut(&K, &mut V) -> bool, A: Allocator + Clone, @@ -2789,15 +2743,15 @@ } } -impl FusedIterator for DrainFilter<'_, K, V, F> where F: FnMut(&K, &mut V) -> bool {} +impl FusedIterator for ExtractIf<'_, K, V, F> where F: FnMut(&K, &mut V) -> bool {} -/// Portions of `DrainFilter` shared with `set::DrainFilter` -pub(super) struct DrainFilterInner<'a, K, V, A: Allocator + Clone> { +/// Portions of `ExtractIf` shared with `set::ExtractIf` +pub(super) struct ExtractIfInner<'a, K, V, A: Allocator + Clone> { pub iter: RawIter<(K, V)>, pub table: &'a mut RawTable<(K, V), A>, } -impl DrainFilterInner<'_, K, V, A> { +impl ExtractIfInner<'_, K, V, A> { #[cfg_attr(feature = "inline-more", inline)] pub(super) fn next(&mut self, f: &mut F) -> Option<(K, V)> where @@ -2807,7 +2761,7 @@ for item in &mut self.iter { let &mut (ref key, ref mut value) = item.as_mut(); if f(key, value) { - return Some(self.table.remove(item)); + return Some(self.table.remove(item).0); } } } @@ -3360,7 +3314,7 @@ F: FnMut(&K) -> bool, { match self.map.table.get(hash, |(k, _)| is_match(k)) { - Some(&(ref key, ref value)) => Some((key, value)), + Some((key, value)) => Some((key, value)), None => None, } } @@ -3756,7 +3710,7 @@ #[cfg_attr(feature = "inline-more", inline)] pub fn get_key_value(&self) -> (&K, &V) { unsafe { - let &(ref key, ref value) = self.elem.as_ref(); + let (key, value) = self.elem.as_ref(); (key, value) } } @@ -3928,7 +3882,7 @@ /// ``` #[cfg_attr(feature = "inline-more", inline)] pub fn remove_entry(self) -> (K, V) { - unsafe { self.table.remove(self.elem) } + unsafe { self.table.remove(self.elem).0 } } /// Provides shared access to the key and owned access to the value of @@ -4012,7 +3966,7 @@ K: Hash, S: BuildHasher, { - let hash = make_insert_hash::(self.hash_builder, &key); + let hash = make_hash::(self.hash_builder, &key); self.insert_hashed_nocheck(hash, key, value) } @@ -4120,7 +4074,7 @@ K: Hash, S: BuildHasher, { - let hash = make_insert_hash::(self.hash_builder, &key); + let hash = make_hash::(self.hash_builder, &key); let elem = self.table.insert( hash, (key, value), @@ -4297,7 +4251,7 @@ /// assert_eq!(map.get(&"c"), None); /// assert_eq!(map.len(), 2); /// ``` -pub struct OccupiedEntry<'a, K, V, S, A: Allocator + Clone = Global> { +pub struct OccupiedEntry<'a, K, V, S = DefaultHashBuilder, A: Allocator + Clone = Global> { hash: u64, key: Option, elem: Bucket<(K, V)>, @@ -4360,7 +4314,7 @@ /// } /// assert!(map[&"b"] == 20 && map.len() == 2); /// ``` -pub struct VacantEntry<'a, K, V, S, A: Allocator + Clone = Global> { +pub struct VacantEntry<'a, K, V, S = DefaultHashBuilder, A: Allocator + Clone = Global> { hash: u64, key: K, table: &'a mut HashMap, @@ -4568,7 +4522,7 @@ { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_struct("OccupiedEntryRef") - .field("key", &self.key()) + .field("key", &self.key().borrow()) .field("value", &self.get()) .finish() } @@ -5301,7 +5255,7 @@ /// ``` #[cfg_attr(feature = "inline-more", inline)] pub fn remove_entry(self) -> (K, V) { - unsafe { self.table.table.remove(self.elem) } + unsafe { self.table.table.remove(self.elem).0 } } /// Gets a reference to the value in the entry. @@ -5838,7 +5792,7 @@ K: Borrow, { match *self { - EntryRef::Occupied(ref entry) => entry.key(), + EntryRef::Occupied(ref entry) => entry.key().borrow(), EntryRef::Vacant(ref entry) => entry.key(), } } @@ -5934,8 +5888,7 @@ #[cfg_attr(feature = "inline-more", inline)] pub fn and_replace_entry_with(self, f: F) -> Self where - F: FnOnce(&Q, V) -> Option, - K: Borrow, + F: FnOnce(&K, V) -> Option, { match self { EntryRef::Occupied(entry) => entry.replace_entry_with(f), @@ -5994,11 +5947,8 @@ /// } /// ``` #[cfg_attr(feature = "inline-more", inline)] - pub fn key(&self) -> &Q - where - K: Borrow, - { - unsafe { &self.elem.as_ref().0 }.borrow() + pub fn key(&self) -> &K { + unsafe { &self.elem.as_ref().0 } } /// Take the ownership of the key and value from the map. @@ -6027,7 +5977,7 @@ /// ``` #[cfg_attr(feature = "inline-more", inline)] pub fn remove_entry(self) -> (K, V) { - unsafe { self.table.table.remove(self.elem) } + unsafe { self.table.table.remove(self.elem).0 } } /// Gets a reference to the value in the entry. @@ -6303,8 +6253,7 @@ #[cfg_attr(feature = "inline-more", inline)] pub fn replace_entry_with(self, f: F) -> EntryRef<'a, 'b, K, Q, V, S, A> where - F: FnOnce(&Q, V) -> Option, - K: Borrow, + F: FnOnce(&K, V) -> Option, { unsafe { let mut spare_key = None; @@ -6312,7 +6261,7 @@ self.table .table .replace_bucket_with(self.elem.clone(), |(key, value)| { - if let Some(new_value) = f(key.borrow(), value) { + if let Some(new_value) = f(&key, value) { Some((key, new_value)) } else { spare_key = Some(KeyOrRef::Owned(key)); @@ -6926,7 +6875,6 @@ } }); - #[allow(clippy::let_underscore_drop)] // kind-of a false positive for _ in half.by_ref() {} DROP_VECTOR.with(|v| { @@ -7254,10 +7202,10 @@ map.insert(1, 2); map.insert(3, 4); - let map_str = format!("{:?}", map); + let map_str = format!("{map:?}"); assert!(map_str == "{1: 2, 3: 4}" || map_str == "{3: 4, 1: 2}"); - assert_eq!(format!("{:?}", empty), "{}"); + assert_eq!(format!("{empty:?}"), "{}"); } #[test] @@ -7573,7 +7521,7 @@ // Test for #19292 fn check(m: &HashMap) { for k in m.keys() { - assert!(m.contains_key(k), "{} is in keys() but not in the map?", k); + assert!(m.contains_key(k), "{k} is in keys() but not in the map?"); } } @@ -7609,7 +7557,7 @@ // Test for #19292 fn check(m: &HashMap) { for k in m.keys() { - assert!(m.contains_key(k), "{} is in keys() but not in the map?", k); + assert!(m.contains_key(k), "{k} is in keys() but not in the map?"); } } @@ -7658,6 +7606,7 @@ } #[test] + #[allow(clippy::needless_borrow)] fn test_extend_ref_kv_tuple() { use std::ops::AddAssign; let mut a = HashMap::new(); @@ -8080,7 +8029,7 @@ // Test for #19292 fn check(m: &HashMap) { for k in m.keys() { - assert!(m.contains_key(k), "{} is in keys() but not in the map?", k); + assert!(m.contains_key(k), "{k} is in keys() but not in the map?"); } } @@ -8110,7 +8059,7 @@ // Test for #19292 fn check(m: &HashMap) { for k in m.keys() { - assert!(m.contains_key(k), "{} is in keys() but not in the map?", k); + assert!(m.contains_key(k), "{k} is in keys() but not in the map?"); } } @@ -8148,10 +8097,10 @@ } #[test] - fn test_drain_filter() { + fn test_extract_if() { { let mut map: HashMap = (0..8).map(|x| (x, x * 10)).collect(); - let drained = map.drain_filter(|&k, _| k % 2 == 0); + let drained = map.extract_if(|&k, _| k % 2 == 0); let mut out = drained.collect::>(); out.sort_unstable(); assert_eq!(vec![(0, 0), (2, 20), (4, 40), (6, 60)], out); @@ -8159,7 +8108,7 @@ } { let mut map: HashMap = (0..8).map(|x| (x, x * 10)).collect(); - drop(map.drain_filter(|&k, _| k % 2 == 0)); + map.extract_if(|&k, _| k % 2 == 0).for_each(drop); assert_eq!(map.len(), 4); } } @@ -8208,7 +8157,7 @@ let mut map: HashMap<_, _> = xs.iter().copied().collect(); let compute_hash = |map: &HashMap, k: i32| -> u64 { - super::make_insert_hash::(map.hasher(), &k) + super::make_hash::(map.hasher(), &k) }; // Existing key (insert) @@ -8370,17 +8319,17 @@ loop { // occasionally remove some elements if i < n && rng.gen_bool(0.1) { - let hash_value = super::make_insert_hash(&hash_builder, &i); + let hash_value = super::make_hash(&hash_builder, &i); unsafe { let e = map.table.find(hash_value, |q| q.0.eq(&i)); if let Some(e) = e { it.reflect_remove(&e); - let t = map.table.remove(e); + let t = map.table.remove(e).0; removed.push(t); left -= 1; } else { - assert!(removed.contains(&(i, 2 * i)), "{} not in {:?}", i, removed); + assert!(removed.contains(&(i, 2 * i)), "{i} not in {removed:?}"); let e = map.table.insert( hash_value, (i, 2 * i), @@ -8509,4 +8458,49 @@ map2.clone_from(&map1); } + + #[test] + #[should_panic = "panic in clone"] + fn test_clone_from_memory_leaks() { + use ::alloc::vec::Vec; + + struct CheckedClone { + panic_in_clone: bool, + need_drop: Vec, + } + impl Clone for CheckedClone { + fn clone(&self) -> Self { + if self.panic_in_clone { + panic!("panic in clone") + } + Self { + panic_in_clone: self.panic_in_clone, + need_drop: self.need_drop.clone(), + } + } + } + let mut map1 = HashMap::new(); + map1.insert( + 1, + CheckedClone { + panic_in_clone: false, + need_drop: vec![0, 1, 2], + }, + ); + map1.insert( + 2, + CheckedClone { + panic_in_clone: false, + need_drop: vec![3, 4, 5], + }, + ); + map1.insert( + 3, + CheckedClone { + panic_in_clone: true, + need_drop: vec![6, 7, 8], + }, + ); + let _map2 = map1.clone(); + } } diff -Nru temporalio-1.3.0/vendor/hashbrown/src/raw/alloc.rs temporalio-1.3.0/vendor/hashbrown/src/raw/alloc.rs --- temporalio-1.3.0/vendor/hashbrown/src/raw/alloc.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/src/raw/alloc.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,9 @@ pub(crate) use self::inner::{do_alloc, Allocator, Global}; +// Nightly-case. +// Use unstable `allocator_api` feature. +// This is compatible with `allocator-api2` which can be enabled or not. +// This is used when building for `std`. #[cfg(feature = "nightly")] mod inner { use crate::alloc::alloc::Layout; @@ -7,28 +11,44 @@ use core::ptr::NonNull; #[allow(clippy::map_err_ignore)] - pub fn do_alloc(alloc: &A, layout: Layout) -> Result, ()> { + pub(crate) fn do_alloc(alloc: &A, layout: Layout) -> Result, ()> { match alloc.allocate(layout) { Ok(ptr) => Ok(ptr.as_non_null_ptr()), Err(_) => Err(()), } } +} - #[cfg(feature = "bumpalo")] - unsafe impl Allocator for crate::BumpWrapper<'_> { - #[inline] - fn allocate(&self, layout: Layout) -> Result, core::alloc::AllocError> { - match self.0.try_alloc_layout(layout) { - Ok(ptr) => Ok(NonNull::slice_from_raw_parts(ptr, layout.size())), - Err(_) => Err(core::alloc::AllocError), - } +// Basic non-nightly case. +// This uses `allocator-api2` enabled by default. +// If any crate enables "nightly" in `allocator-api2`, +// this will be equivalent to the nightly case, +// since `allocator_api2::alloc::Allocator` would be re-export of +// `core::alloc::Allocator`. +#[cfg(all(not(feature = "nightly"), feature = "allocator-api2"))] +mod inner { + use crate::alloc::alloc::Layout; + pub use allocator_api2::alloc::{Allocator, Global}; + use core::ptr::NonNull; + + #[allow(clippy::map_err_ignore)] + pub(crate) fn do_alloc(alloc: &A, layout: Layout) -> Result, ()> { + match alloc.allocate(layout) { + Ok(ptr) => Ok(ptr.cast()), + Err(_) => Err(()), } - #[inline] - unsafe fn deallocate(&self, _ptr: NonNull, _layout: Layout) {} } } -#[cfg(not(feature = "nightly"))] +// No-defaults case. +// When building with default-features turned off and +// neither `nightly` nor `allocator-api2` is enabled, +// this will be used. +// Making it impossible to use any custom allocator with collections defined +// in this crate. +// Any crate in build-tree can enable `allocator-api2`, +// or `nightly` without disturbing users that don't want to use it. +#[cfg(not(any(feature = "nightly", feature = "allocator-api2")))] mod inner { use crate::alloc::alloc::{alloc, dealloc, Layout}; use core::ptr::NonNull; @@ -41,6 +61,7 @@ #[derive(Copy, Clone)] pub struct Global; + unsafe impl Allocator for Global { #[inline] fn allocate(&self, layout: Layout) -> Result, ()> { @@ -51,6 +72,7 @@ dealloc(ptr.as_ptr(), layout); } } + impl Default for Global { #[inline] fn default() -> Self { @@ -58,16 +80,7 @@ } } - pub fn do_alloc(alloc: &A, layout: Layout) -> Result, ()> { + pub(crate) fn do_alloc(alloc: &A, layout: Layout) -> Result, ()> { alloc.allocate(layout) } - - #[cfg(feature = "bumpalo")] - unsafe impl Allocator for crate::BumpWrapper<'_> { - #[allow(clippy::map_err_ignore)] - fn allocate(&self, layout: Layout) -> Result, ()> { - self.0.try_alloc_layout(layout).map_err(|_| ()) - } - unsafe fn deallocate(&self, _ptr: NonNull, _layout: Layout) {} - } } diff -Nru temporalio-1.3.0/vendor/hashbrown/src/raw/bitmask.rs temporalio-1.3.0/vendor/hashbrown/src/raw/bitmask.rs --- temporalio-1.3.0/vendor/hashbrown/src/raw/bitmask.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/src/raw/bitmask.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ -use super::imp::{BitMaskWord, BITMASK_MASK, BITMASK_STRIDE}; -#[cfg(feature = "nightly")] -use core::intrinsics; +use super::imp::{ + BitMaskWord, NonZeroBitMaskWord, BITMASK_ITER_MASK, BITMASK_MASK, BITMASK_STRIDE, +}; /// A bit mask which contains the result of a `Match` operation on a `Group` and /// allows iterating through them. @@ -8,75 +8,55 @@ /// The bit mask is arranged so that low-order bits represent lower memory /// addresses for group match results. /// -/// For implementation reasons, the bits in the set may be sparsely packed, so -/// that there is only one bit-per-byte used (the high bit, 7). If this is the +/// For implementation reasons, the bits in the set may be sparsely packed with +/// groups of 8 bits representing one element. If any of these bits are non-zero +/// then this element is considered to true in the mask. If this is the /// case, `BITMASK_STRIDE` will be 8 to indicate a divide-by-8 should be /// performed on counts/indices to normalize this difference. `BITMASK_MASK` is /// similarly a mask of all the actually-used bits. +/// +/// To iterate over a bit mask, it must be converted to a form where only 1 bit +/// is set per element. This is done by applying `BITMASK_ITER_MASK` on the +/// mask bits. #[derive(Copy, Clone)] -pub struct BitMask(pub BitMaskWord); +pub(crate) struct BitMask(pub(crate) BitMaskWord); #[allow(clippy::use_self)] impl BitMask { /// Returns a new `BitMask` with all bits inverted. #[inline] #[must_use] - pub fn invert(self) -> Self { + #[allow(dead_code)] + pub(crate) fn invert(self) -> Self { BitMask(self.0 ^ BITMASK_MASK) } - /// Flip the bit in the mask for the entry at the given index. - /// - /// Returns the bit's previous state. - #[inline] - #[allow(clippy::cast_ptr_alignment)] - #[cfg(feature = "raw")] - pub unsafe fn flip(&mut self, index: usize) -> bool { - // NOTE: The + BITMASK_STRIDE - 1 is to set the high bit. - let mask = 1 << (index * BITMASK_STRIDE + BITMASK_STRIDE - 1); - self.0 ^= mask; - // The bit was set if the bit is now 0. - self.0 & mask == 0 - } - /// Returns a new `BitMask` with the lowest bit removed. #[inline] #[must_use] - pub fn remove_lowest_bit(self) -> Self { + fn remove_lowest_bit(self) -> Self { BitMask(self.0 & (self.0 - 1)) } + /// Returns whether the `BitMask` has at least one set bit. #[inline] - pub fn any_bit_set(self) -> bool { + pub(crate) fn any_bit_set(self) -> bool { self.0 != 0 } /// Returns the first set bit in the `BitMask`, if there is one. #[inline] - pub fn lowest_set_bit(self) -> Option { - if self.0 == 0 { - None + pub(crate) fn lowest_set_bit(self) -> Option { + if let Some(nonzero) = NonZeroBitMaskWord::new(self.0) { + Some(Self::nonzero_trailing_zeros(nonzero)) } else { - Some(unsafe { self.lowest_set_bit_nonzero() }) + None } } - /// Returns the first set bit in the `BitMask`, if there is one. The - /// bitmask must not be empty. - #[inline] - #[cfg(feature = "nightly")] - pub unsafe fn lowest_set_bit_nonzero(self) -> usize { - intrinsics::cttz_nonzero(self.0) as usize / BITMASK_STRIDE - } - #[inline] - #[cfg(not(feature = "nightly"))] - pub unsafe fn lowest_set_bit_nonzero(self) -> usize { - self.trailing_zeros() - } - /// Returns the number of trailing zeroes in the `BitMask`. #[inline] - pub fn trailing_zeros(self) -> usize { + pub(crate) fn trailing_zeros(self) -> usize { // ARM doesn't have a trailing_zeroes instruction, and instead uses // reverse_bits (RBIT) + leading_zeroes (CLZ). However older ARM // versions (pre-ARMv7) don't have RBIT and need to emulate it @@ -89,9 +69,21 @@ } } + /// Same as above but takes a `NonZeroBitMaskWord`. + #[inline] + fn nonzero_trailing_zeros(nonzero: NonZeroBitMaskWord) -> usize { + if cfg!(target_arch = "arm") && BITMASK_STRIDE % 8 == 0 { + // SAFETY: A byte-swapped non-zero value is still non-zero. + let swapped = unsafe { NonZeroBitMaskWord::new_unchecked(nonzero.get().swap_bytes()) }; + swapped.leading_zeros() as usize / BITMASK_STRIDE + } else { + nonzero.trailing_zeros() as usize / BITMASK_STRIDE + } + } + /// Returns the number of leading zeroes in the `BitMask`. #[inline] - pub fn leading_zeros(self) -> usize { + pub(crate) fn leading_zeros(self) -> usize { self.0.leading_zeros() as usize / BITMASK_STRIDE } } @@ -102,13 +94,32 @@ #[inline] fn into_iter(self) -> BitMaskIter { - BitMaskIter(self) + // A BitMask only requires each element (group of bits) to be non-zero. + // However for iteration we need each element to only contain 1 bit. + BitMaskIter(BitMask(self.0 & BITMASK_ITER_MASK)) } } /// Iterator over the contents of a `BitMask`, returning the indices of set /// bits. -pub struct BitMaskIter(BitMask); +#[derive(Copy, Clone)] +pub(crate) struct BitMaskIter(pub(crate) BitMask); + +impl BitMaskIter { + /// Flip the bit in the mask for the entry at the given index. + /// + /// Returns the bit's previous state. + #[inline] + #[allow(clippy::cast_ptr_alignment)] + #[cfg(feature = "raw")] + pub(crate) unsafe fn flip(&mut self, index: usize) -> bool { + // NOTE: The + BITMASK_STRIDE - 1 is to set the high bit. + let mask = 1 << (index * BITMASK_STRIDE + BITMASK_STRIDE - 1); + self.0 .0 ^= mask; + // The bit was set if the bit is now 0. + self.0 .0 & mask == 0 + } +} impl Iterator for BitMaskIter { type Item = usize; diff -Nru temporalio-1.3.0/vendor/hashbrown/src/raw/generic.rs temporalio-1.3.0/vendor/hashbrown/src/raw/generic.rs --- temporalio-1.3.0/vendor/hashbrown/src/raw/generic.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/src/raw/generic.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,26 +5,29 @@ // Use the native word size as the group size. Using a 64-bit group size on // a 32-bit architecture will just end up being more expensive because // shifts and multiplies will need to be emulated. -#[cfg(any( - target_pointer_width = "64", - target_arch = "aarch64", - target_arch = "x86_64", - target_arch = "wasm32", -))] -type GroupWord = u64; -#[cfg(all( - any(target_pointer_width = "32", target_pointer_width = "16"), - not(target_arch = "aarch64"), - not(target_arch = "x86_64"), - not(target_arch = "wasm32"), -))] -type GroupWord = u32; -pub type BitMaskWord = GroupWord; -pub const BITMASK_STRIDE: usize = 8; +cfg_if! { + if #[cfg(any( + target_pointer_width = "64", + target_arch = "aarch64", + target_arch = "x86_64", + target_arch = "wasm32", + ))] { + type GroupWord = u64; + type NonZeroGroupWord = core::num::NonZeroU64; + } else { + type GroupWord = u32; + type NonZeroGroupWord = core::num::NonZeroU32; + } +} + +pub(crate) type BitMaskWord = GroupWord; +pub(crate) type NonZeroBitMaskWord = NonZeroGroupWord; +pub(crate) const BITMASK_STRIDE: usize = 8; // We only care about the highest bit of each byte for the mask. #[allow(clippy::cast_possible_truncation, clippy::unnecessary_cast)] -pub const BITMASK_MASK: BitMaskWord = 0x8080_8080_8080_8080_u64 as GroupWord; +pub(crate) const BITMASK_MASK: BitMaskWord = 0x8080_8080_8080_8080_u64 as GroupWord; +pub(crate) const BITMASK_ITER_MASK: BitMaskWord = !0; /// Helper function to replicate a byte across a `GroupWord`. #[inline] @@ -37,7 +40,7 @@ /// /// This implementation uses a word-sized integer. #[derive(Copy, Clone)] -pub struct Group(GroupWord); +pub(crate) struct Group(GroupWord); // We perform all operations in the native endianness, and convert to // little-endian just before creating a BitMask. The can potentially @@ -46,14 +49,14 @@ #[allow(clippy::use_self)] impl Group { /// Number of bytes in the group. - pub const WIDTH: usize = mem::size_of::(); + pub(crate) const WIDTH: usize = mem::size_of::(); /// Returns a full group of empty bytes, suitable for use as the initial /// value for an empty hash table. /// /// This is guaranteed to be aligned to the group size. #[inline] - pub const fn static_empty() -> &'static [u8; Group::WIDTH] { + pub(crate) const fn static_empty() -> &'static [u8; Group::WIDTH] { #[repr(C)] struct AlignedBytes { _align: [Group; 0], @@ -69,7 +72,7 @@ /// Loads a group of bytes starting at the given address. #[inline] #[allow(clippy::cast_ptr_alignment)] // unaligned load - pub unsafe fn load(ptr: *const u8) -> Self { + pub(crate) unsafe fn load(ptr: *const u8) -> Self { Group(ptr::read_unaligned(ptr.cast())) } @@ -77,7 +80,7 @@ /// aligned to `mem::align_of::()`. #[inline] #[allow(clippy::cast_ptr_alignment)] - pub unsafe fn load_aligned(ptr: *const u8) -> Self { + pub(crate) unsafe fn load_aligned(ptr: *const u8) -> Self { // FIXME: use align_offset once it stabilizes debug_assert_eq!(ptr as usize & (mem::align_of::() - 1), 0); Group(ptr::read(ptr.cast())) @@ -87,7 +90,7 @@ /// aligned to `mem::align_of::()`. #[inline] #[allow(clippy::cast_ptr_alignment)] - pub unsafe fn store_aligned(self, ptr: *mut u8) { + pub(crate) unsafe fn store_aligned(self, ptr: *mut u8) { // FIXME: use align_offset once it stabilizes debug_assert_eq!(ptr as usize & (mem::align_of::() - 1), 0); ptr::write(ptr.cast(), self.0); @@ -104,7 +107,7 @@ /// - This only happens if there is at least 1 true match. /// - The chance of this happening is very low (< 1% chance per byte). #[inline] - pub fn match_byte(self, byte: u8) -> BitMask { + pub(crate) fn match_byte(self, byte: u8) -> BitMask { // This algorithm is derived from // https://graphics.stanford.edu/~seander/bithacks.html##ValueInWord let cmp = self.0 ^ repeat(byte); @@ -114,7 +117,7 @@ /// Returns a `BitMask` indicating all bytes in the group which are /// `EMPTY`. #[inline] - pub fn match_empty(self) -> BitMask { + pub(crate) fn match_empty(self) -> BitMask { // If the high bit is set, then the byte must be either: // 1111_1111 (EMPTY) or 1000_0000 (DELETED). // So we can just check if the top two bits are 1 by ANDing them. @@ -124,14 +127,14 @@ /// Returns a `BitMask` indicating all bytes in the group which are /// `EMPTY` or `DELETED`. #[inline] - pub fn match_empty_or_deleted(self) -> BitMask { + pub(crate) fn match_empty_or_deleted(self) -> BitMask { // A byte is EMPTY or DELETED iff the high bit is set BitMask((self.0 & repeat(0x80)).to_le()) } /// Returns a `BitMask` indicating all bytes in the group which are full. #[inline] - pub fn match_full(self) -> BitMask { + pub(crate) fn match_full(self) -> BitMask { self.match_empty_or_deleted().invert() } @@ -140,7 +143,7 @@ /// - `DELETED => EMPTY` /// - `FULL => DELETED` #[inline] - pub fn convert_special_to_empty_and_full_to_deleted(self) -> Self { + pub(crate) fn convert_special_to_empty_and_full_to_deleted(self) -> Self { // Map high_bit = 1 (EMPTY or DELETED) to 1111_1111 // and high_bit = 0 (FULL) to 1000_0000 // diff -Nru temporalio-1.3.0/vendor/hashbrown/src/raw/mod.rs temporalio-1.3.0/vendor/hashbrown/src/raw/mod.rs --- temporalio-1.3.0/vendor/hashbrown/src/raw/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/src/raw/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -25,8 +25,10 @@ ))] { mod sse2; use sse2 as imp; + } else if #[cfg(all(target_arch = "aarch64", target_feature = "neon"))] { + mod neon; + use neon as imp; } else { - #[path = "generic.rs"] mod generic; use generic as imp; } @@ -37,36 +39,26 @@ mod bitmask; -use self::bitmask::{BitMask, BitMaskIter}; +use self::bitmask::BitMaskIter; use self::imp::Group; // Branch prediction hint. This is currently only available on nightly but it // consistently improves performance by 10-15%. +#[cfg(not(feature = "nightly"))] +use core::convert::identity as likely; +#[cfg(not(feature = "nightly"))] +use core::convert::identity as unlikely; #[cfg(feature = "nightly")] use core::intrinsics::{likely, unlikely}; -// On stable we can use #[cold] to get a equivalent effect: this attributes -// suggests that the function is unlikely to be called -#[cfg(not(feature = "nightly"))] -#[inline] -#[cold] -fn cold() {} - -#[cfg(not(feature = "nightly"))] -#[inline] -fn likely(b: bool) -> bool { - if !b { - cold(); - } - b -} +// Use strict provenance functions if available. +#[cfg(feature = "nightly")] +use core::ptr::invalid_mut; +// Implement it with a cast otherwise. #[cfg(not(feature = "nightly"))] -#[inline] -fn unlikely(b: bool) -> bool { - if b { - cold(); - } - b +#[inline(always)] +fn invalid_mut(addr: usize) -> *mut T { + addr as *mut T } #[inline] @@ -272,6 +264,11 @@ } } +/// A reference to an empty bucket into which an can be inserted. +pub struct InsertSlot { + index: usize, +} + /// A reference to a hash table bucket containing a `T`. /// /// This is usually just a pointer to the element itself. However if the element @@ -299,11 +296,79 @@ impl Bucket { const IS_ZERO_SIZED_TYPE: bool = mem::size_of::() == 0; + /// Creates a [`Bucket`] that contain pointer to the data. + /// The pointer calculation is performed by calculating the + /// offset from given `base` pointer (convenience for + /// `base.as_ptr().sub(index)`). + /// + /// `index` is in units of `T`; e.g., an `index` of 3 represents a pointer + /// offset of `3 * size_of::()` bytes. + /// + /// If the `T` is a ZST, then we instead track the index of the element + /// in the table so that `erase` works properly (return + /// `NonNull::new_unchecked((index + 1) as *mut T)`) + /// + /// # Safety + /// + /// If `mem::size_of::() != 0`, then the safety rules are directly derived + /// from the safety rules for [`<*mut T>::sub`] method of `*mut T` and the safety + /// rules of [`NonNull::new_unchecked`] function. + /// + /// Thus, in order to uphold the safety contracts for the [`<*mut T>::sub`] method + /// and [`NonNull::new_unchecked`] function, as well as for the correct + /// logic of the work of this crate, the following rules are necessary and + /// sufficient: + /// + /// * the `base` pointer must not be `dangling` and must points to the + /// end of the first `value element` from the `data part` of the table, i.e. + /// must be the pointer that returned by [`RawTable::data_end`] or by + /// [`RawTableInner::data_end`]; + /// + /// * `index` must not be greater than `RawTableInner.bucket_mask`, i.e. + /// `index <= RawTableInner.bucket_mask` or, in other words, `(index + 1)` + /// must be no greater than the number returned by the function + /// [`RawTable::buckets`] or [`RawTableInner::buckets`]. + /// + /// If `mem::size_of::() == 0`, then the only requirement is that the + /// `index` must not be greater than `RawTableInner.bucket_mask`, i.e. + /// `index <= RawTableInner.bucket_mask` or, in other words, `(index + 1)` + /// must be no greater than the number returned by the function + /// [`RawTable::buckets`] or [`RawTableInner::buckets`]. + /// + /// [`Bucket`]: crate::raw::Bucket + /// [`<*mut T>::sub`]: https://doc.rust-lang.org/core/primitive.pointer.html#method.sub-1 + /// [`NonNull::new_unchecked`]: https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.new_unchecked + /// [`RawTable::data_end`]: crate::raw::RawTable::data_end + /// [`RawTableInner::data_end`]: RawTableInner::data_end + /// [`RawTable::buckets`]: crate::raw::RawTable::buckets + /// [`RawTableInner::buckets`]: RawTableInner::buckets #[inline] unsafe fn from_base_index(base: NonNull, index: usize) -> Self { + // If mem::size_of::() != 0 then return a pointer to an `element` in + // the data part of the table (we start counting from "0", so that + // in the expression T[last], the "last" index actually one less than the + // "buckets" number in the table, i.e. "last = RawTableInner.bucket_mask"): + // + // `from_base_index(base, 1).as_ptr()` returns a pointer that + // points here in the data part of the table + // (to the start of T1) + // | + // | `base: NonNull` must point here + // | (to the end of T0 or to the start of C0) + // v v + // [Padding], Tlast, ..., |T1|, T0, |C0, C1, ..., Clast + // ^ + // `from_base_index(base, 1)` returns a pointer + // that points here in the data part of the table + // (to the end of T1) + // + // where: T0...Tlast - our stored data; C0...Clast - control bytes + // or metadata for data. let ptr = if Self::IS_ZERO_SIZED_TYPE { - // won't overflow because index must be less than length - (index + 1) as *mut T + // won't overflow because index must be less than length (bucket_mask) + // and bucket_mask is guaranteed to be less than `isize::MAX` + // (see TableLayout::calculate_layout_for method) + invalid_mut(index + 1) } else { base.as_ptr().sub(index) }; @@ -311,27 +376,183 @@ ptr: NonNull::new_unchecked(ptr), } } + + /// Calculates the index of a [`Bucket`] as distance between two pointers + /// (convenience for `base.as_ptr().offset_from(self.ptr.as_ptr()) as usize`). + /// The returned value is in units of T: the distance in bytes divided by + /// [`core::mem::size_of::()`]. + /// + /// If the `T` is a ZST, then we return the index of the element in + /// the table so that `erase` works properly (return `self.ptr.as_ptr() as usize - 1`). + /// + /// This function is the inverse of [`from_base_index`]. + /// + /// # Safety + /// + /// If `mem::size_of::() != 0`, then the safety rules are directly derived + /// from the safety rules for [`<*const T>::offset_from`] method of `*const T`. + /// + /// Thus, in order to uphold the safety contracts for [`<*const T>::offset_from`] + /// method, as well as for the correct logic of the work of this crate, the + /// following rules are necessary and sufficient: + /// + /// * `base` contained pointer must not be `dangling` and must point to the + /// end of the first `element` from the `data part` of the table, i.e. + /// must be a pointer that returns by [`RawTable::data_end`] or by + /// [`RawTableInner::data_end`]; + /// + /// * `self` also must not contain dangling pointer; + /// + /// * both `self` and `base` must be created from the same [`RawTable`] + /// (or [`RawTableInner`]). + /// + /// If `mem::size_of::() == 0`, this function is always safe. + /// + /// [`Bucket`]: crate::raw::Bucket + /// [`from_base_index`]: crate::raw::Bucket::from_base_index + /// [`RawTable::data_end`]: crate::raw::RawTable::data_end + /// [`RawTableInner::data_end`]: RawTableInner::data_end + /// [`RawTable`]: crate::raw::RawTable + /// [`RawTableInner`]: RawTableInner + /// [`<*const T>::offset_from`]: https://doc.rust-lang.org/nightly/core/primitive.pointer.html#method.offset_from #[inline] unsafe fn to_base_index(&self, base: NonNull) -> usize { + // If mem::size_of::() != 0 then return an index under which we used to store the + // `element` in the data part of the table (we start counting from "0", so + // that in the expression T[last], the "last" index actually is one less than the + // "buckets" number in the table, i.e. "last = RawTableInner.bucket_mask"). + // For example for 5th element in table calculation is performed like this: + // + // mem::size_of::() + // | + // | `self = from_base_index(base, 5)` that returns pointer + // | that points here in tha data part of the table + // | (to the end of T5) + // | | `base: NonNull` must point here + // v | (to the end of T0 or to the start of C0) + // /???\ v v + // [Padding], Tlast, ..., |T10|, ..., T5|, T4, T3, T2, T1, T0, |C0, C1, C2, C3, C4, C5, ..., C10, ..., Clast + // \__________ __________/ + // \/ + // `bucket.to_base_index(base)` = 5 + // (base.as_ptr() as usize - self.ptr.as_ptr() as usize) / mem::size_of::() + // + // where: T0...Tlast - our stored data; C0...Clast - control bytes or metadata for data. if Self::IS_ZERO_SIZED_TYPE { + // this can not be UB self.ptr.as_ptr() as usize - 1 } else { offset_from(base.as_ptr(), self.ptr.as_ptr()) } } + + /// Acquires the underlying raw pointer `*mut T` to `data`. + /// + /// # Note + /// + /// If `T` is not [`Copy`], do not use `*mut T` methods that can cause calling the + /// destructor of `T` (for example the [`<*mut T>::drop_in_place`] method), because + /// for properly dropping the data we also need to clear `data` control bytes. If we + /// drop data, but do not clear `data control byte` it leads to double drop when + /// [`RawTable`] goes out of scope. + /// + /// If you modify an already initialized `value`, so [`Hash`] and [`Eq`] on the new + /// `T` value and its borrowed form *must* match those for the old `T` value, as the map + /// will not re-evaluate where the new value should go, meaning the value may become + /// "lost" if their location does not reflect their state. + /// + /// [`RawTable`]: crate::raw::RawTable + /// [`<*mut T>::drop_in_place`]: https://doc.rust-lang.org/core/primitive.pointer.html#method.drop_in_place + /// [`Hash`]: https://doc.rust-lang.org/core/hash/trait.Hash.html + /// [`Eq`]: https://doc.rust-lang.org/core/cmp/trait.Eq.html + /// + /// # Examples + /// + /// ``` + /// # #[cfg(feature = "raw")] + /// # fn test() { + /// use core::hash::{BuildHasher, Hash}; + /// use hashbrown::raw::{Bucket, RawTable}; + /// + /// type NewHashBuilder = core::hash::BuildHasherDefault; + /// + /// fn make_hash(hash_builder: &S, key: &K) -> u64 { + /// use core::hash::Hasher; + /// let mut state = hash_builder.build_hasher(); + /// key.hash(&mut state); + /// state.finish() + /// } + /// + /// let hash_builder = NewHashBuilder::default(); + /// let mut table = RawTable::new(); + /// + /// let value = ("a", 100); + /// let hash = make_hash(&hash_builder, &value.0); + /// + /// table.insert(hash, value.clone(), |val| make_hash(&hash_builder, &val.0)); + /// + /// let bucket: Bucket<(&str, i32)> = table.find(hash, |(k1, _)| k1 == &value.0).unwrap(); + /// + /// assert_eq!(unsafe { &*bucket.as_ptr() }, &("a", 100)); + /// # } + /// # fn main() { + /// # #[cfg(feature = "raw")] + /// # test() + /// # } + /// ``` #[inline] pub fn as_ptr(&self) -> *mut T { if Self::IS_ZERO_SIZED_TYPE { // Just return an arbitrary ZST pointer which is properly aligned - mem::align_of::() as *mut T + // invalid pointer is good enough for ZST + invalid_mut(mem::align_of::()) } else { unsafe { self.ptr.as_ptr().sub(1) } } } + + /// Create a new [`Bucket`] that is offset from the `self` by the given + /// `offset`. The pointer calculation is performed by calculating the + /// offset from `self` pointer (convenience for `self.ptr.as_ptr().sub(offset)`). + /// This function is used for iterators. + /// + /// `offset` is in units of `T`; e.g., a `offset` of 3 represents a pointer + /// offset of `3 * size_of::()` bytes. + /// + /// # Safety + /// + /// If `mem::size_of::() != 0`, then the safety rules are directly derived + /// from the safety rules for [`<*mut T>::sub`] method of `*mut T` and safety + /// rules of [`NonNull::new_unchecked`] function. + /// + /// Thus, in order to uphold the safety contracts for [`<*mut T>::sub`] method + /// and [`NonNull::new_unchecked`] function, as well as for the correct + /// logic of the work of this crate, the following rules are necessary and + /// sufficient: + /// + /// * `self` contained pointer must not be `dangling`; + /// + /// * `self.to_base_index() + ofset` must not be greater than `RawTableInner.bucket_mask`, + /// i.e. `(self.to_base_index() + ofset) <= RawTableInner.bucket_mask` or, in other + /// words, `self.to_base_index() + ofset + 1` must be no greater than the number returned + /// by the function [`RawTable::buckets`] or [`RawTableInner::buckets`]. + /// + /// If `mem::size_of::() == 0`, then the only requirement is that the + /// `self.to_base_index() + ofset` must not be greater than `RawTableInner.bucket_mask`, + /// i.e. `(self.to_base_index() + ofset) <= RawTableInner.bucket_mask` or, in other words, + /// `self.to_base_index() + ofset + 1` must be no greater than the number returned by the + /// function [`RawTable::buckets`] or [`RawTableInner::buckets`]. + /// + /// [`Bucket`]: crate::raw::Bucket + /// [`<*mut T>::sub`]: https://doc.rust-lang.org/core/primitive.pointer.html#method.sub-1 + /// [`NonNull::new_unchecked`]: https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.new_unchecked + /// [`RawTable::buckets`]: crate::raw::RawTable::buckets + /// [`RawTableInner::buckets`]: RawTableInner::buckets #[inline] unsafe fn next_n(&self, offset: usize) -> Self { let ptr = if Self::IS_ZERO_SIZED_TYPE { - (self.ptr.as_ptr() as usize + offset) as *mut T + // invalid pointer is good enough for ZST + invalid_mut(self.ptr.as_ptr() as usize + offset) } else { self.ptr.as_ptr().sub(offset) }; @@ -339,26 +560,212 @@ ptr: NonNull::new_unchecked(ptr), } } + + /// Executes the destructor (if any) of the pointed-to `data`. + /// + /// # Safety + /// + /// See [`ptr::drop_in_place`] for safety concerns. + /// + /// You should use [`RawTable::erase`] instead of this function, + /// or be careful with calling this function directly, because for + /// properly dropping the data we need also clear `data` control bytes. + /// If we drop data, but do not erase `data control byte` it leads to + /// double drop when [`RawTable`] goes out of scope. + /// + /// [`ptr::drop_in_place`]: https://doc.rust-lang.org/core/ptr/fn.drop_in_place.html + /// [`RawTable`]: crate::raw::RawTable + /// [`RawTable::erase`]: crate::raw::RawTable::erase #[cfg_attr(feature = "inline-more", inline)] pub(crate) unsafe fn drop(&self) { self.as_ptr().drop_in_place(); } + + /// Reads the `value` from `self` without moving it. This leaves the + /// memory in `self` unchanged. + /// + /// # Safety + /// + /// See [`ptr::read`] for safety concerns. + /// + /// You should use [`RawTable::remove`] instead of this function, + /// or be careful with calling this function directly, because compiler + /// calls its destructor when readed `value` goes out of scope. It + /// can cause double dropping when [`RawTable`] goes out of scope, + /// because of not erased `data control byte`. + /// + /// [`ptr::read`]: https://doc.rust-lang.org/core/ptr/fn.read.html + /// [`RawTable`]: crate::raw::RawTable + /// [`RawTable::remove`]: crate::raw::RawTable::remove #[inline] pub(crate) unsafe fn read(&self) -> T { self.as_ptr().read() } + + /// Overwrites a memory location with the given `value` without reading + /// or dropping the old value (like [`ptr::write`] function). + /// + /// # Safety + /// + /// See [`ptr::write`] for safety concerns. + /// + /// # Note + /// + /// [`Hash`] and [`Eq`] on the new `T` value and its borrowed form *must* match + /// those for the old `T` value, as the map will not re-evaluate where the new + /// value should go, meaning the value may become "lost" if their location + /// does not reflect their state. + /// + /// [`ptr::write`]: https://doc.rust-lang.org/core/ptr/fn.write.html + /// [`Hash`]: https://doc.rust-lang.org/core/hash/trait.Hash.html + /// [`Eq`]: https://doc.rust-lang.org/core/cmp/trait.Eq.html #[inline] pub(crate) unsafe fn write(&self, val: T) { self.as_ptr().write(val); } + + /// Returns a shared immutable reference to the `value`. + /// + /// # Safety + /// + /// See [`NonNull::as_ref`] for safety concerns. + /// + /// [`NonNull::as_ref`]: https://doc.rust-lang.org/core/ptr/struct.NonNull.html#method.as_ref + /// + /// # Examples + /// + /// ``` + /// # #[cfg(feature = "raw")] + /// # fn test() { + /// use core::hash::{BuildHasher, Hash}; + /// use hashbrown::raw::{Bucket, RawTable}; + /// + /// type NewHashBuilder = core::hash::BuildHasherDefault; + /// + /// fn make_hash(hash_builder: &S, key: &K) -> u64 { + /// use core::hash::Hasher; + /// let mut state = hash_builder.build_hasher(); + /// key.hash(&mut state); + /// state.finish() + /// } + /// + /// let hash_builder = NewHashBuilder::default(); + /// let mut table = RawTable::new(); + /// + /// let value: (&str, String) = ("A pony", "is a small horse".to_owned()); + /// let hash = make_hash(&hash_builder, &value.0); + /// + /// table.insert(hash, value.clone(), |val| make_hash(&hash_builder, &val.0)); + /// + /// let bucket: Bucket<(&str, String)> = table.find(hash, |(k, _)| k == &value.0).unwrap(); + /// + /// assert_eq!( + /// unsafe { bucket.as_ref() }, + /// &("A pony", "is a small horse".to_owned()) + /// ); + /// # } + /// # fn main() { + /// # #[cfg(feature = "raw")] + /// # test() + /// # } + /// ``` #[inline] pub unsafe fn as_ref<'a>(&self) -> &'a T { &*self.as_ptr() } + + /// Returns a unique mutable reference to the `value`. + /// + /// # Safety + /// + /// See [`NonNull::as_mut`] for safety concerns. + /// + /// # Note + /// + /// [`Hash`] and [`Eq`] on the new `T` value and its borrowed form *must* match + /// those for the old `T` value, as the map will not re-evaluate where the new + /// value should go, meaning the value may become "lost" if their location + /// does not reflect their state. + /// + /// [`NonNull::as_mut`]: https://doc.rust-lang.org/core/ptr/struct.NonNull.html#method.as_mut + /// [`Hash`]: https://doc.rust-lang.org/core/hash/trait.Hash.html + /// [`Eq`]: https://doc.rust-lang.org/core/cmp/trait.Eq.html + /// + /// # Examples + /// + /// ``` + /// # #[cfg(feature = "raw")] + /// # fn test() { + /// use core::hash::{BuildHasher, Hash}; + /// use hashbrown::raw::{Bucket, RawTable}; + /// + /// type NewHashBuilder = core::hash::BuildHasherDefault; + /// + /// fn make_hash(hash_builder: &S, key: &K) -> u64 { + /// use core::hash::Hasher; + /// let mut state = hash_builder.build_hasher(); + /// key.hash(&mut state); + /// state.finish() + /// } + /// + /// let hash_builder = NewHashBuilder::default(); + /// let mut table = RawTable::new(); + /// + /// let value: (&str, String) = ("A pony", "is a small horse".to_owned()); + /// let hash = make_hash(&hash_builder, &value.0); + /// + /// table.insert(hash, value.clone(), |val| make_hash(&hash_builder, &val.0)); + /// + /// let bucket: Bucket<(&str, String)> = table.find(hash, |(k, _)| k == &value.0).unwrap(); + /// + /// unsafe { + /// bucket + /// .as_mut() + /// .1 + /// .push_str(" less than 147 cm at the withers") + /// }; + /// assert_eq!( + /// unsafe { bucket.as_ref() }, + /// &( + /// "A pony", + /// "is a small horse less than 147 cm at the withers".to_owned() + /// ) + /// ); + /// # } + /// # fn main() { + /// # #[cfg(feature = "raw")] + /// # test() + /// # } + /// ``` #[inline] pub unsafe fn as_mut<'a>(&self) -> &'a mut T { &mut *self.as_ptr() } + + /// Copies `size_of` bytes from `other` to `self`. The source + /// and destination may *not* overlap. + /// + /// # Safety + /// + /// See [`ptr::copy_nonoverlapping`] for safety concerns. + /// + /// Like [`read`], `copy_nonoverlapping` creates a bitwise copy of `T`, regardless of + /// whether `T` is [`Copy`]. If `T` is not [`Copy`], using *both* the values + /// in the region beginning at `*self` and the region beginning at `*other` can + /// [violate memory safety]. + /// + /// # Note + /// + /// [`Hash`] and [`Eq`] on the new `T` value and its borrowed form *must* match + /// those for the old `T` value, as the map will not re-evaluate where the new + /// value should go, meaning the value may become "lost" if their location + /// does not reflect their state. + /// + /// [`ptr::copy_nonoverlapping`]: https://doc.rust-lang.org/core/ptr/fn.copy_nonoverlapping.html + /// [`read`]: https://doc.rust-lang.org/core/ptr/fn.read.html + /// [violate memory safety]: https://doc.rust-lang.org/std/ptr/fn.read.html#ownership-of-the-returned-value + /// [`Hash`]: https://doc.rust-lang.org/core/hash/trait.Hash.html + /// [`Eq`]: https://doc.rust-lang.org/core/cmp/trait.Eq.html #[cfg(feature = "raw")] #[inline] pub unsafe fn copy_from_nonoverlapping(&self, other: &Self) { @@ -516,9 +923,9 @@ /// Returns pointer to start of data table. #[inline] - #[cfg(feature = "nightly")] - pub unsafe fn data_start(&self) -> *mut T { - self.data_end().as_ptr().wrapping_sub(self.buckets()) + #[cfg(any(feature = "raw", feature = "nightly"))] + pub unsafe fn data_start(&self) -> NonNull { + NonNull::new_unchecked(self.data_end().as_ptr().wrapping_sub(self.buckets())) } /// Return the information about memory allocated by the table. @@ -581,11 +988,18 @@ } /// Removes an element from the table, returning it. + /// + /// This also returns an `InsertSlot` pointing to the newly free bucket. #[cfg_attr(feature = "inline-more", inline)] #[allow(clippy::needless_pass_by_value)] - pub unsafe fn remove(&mut self, item: Bucket) -> T { + pub unsafe fn remove(&mut self, item: Bucket) -> (T, InsertSlot) { self.erase_no_drop(&item); - item.read() + ( + item.read(), + InsertSlot { + index: self.bucket_index(&item), + }, + ) } /// Finds and removes an element from the table, returning it. @@ -593,7 +1007,7 @@ pub fn remove_entry(&mut self, hash: u64, eq: impl FnMut(&T) -> bool) -> Option { // Avoid `Option::map` because it bloats LLVM IR. match self.find(hash, eq) { - Some(bucket) => Some(unsafe { self.remove(bucket) }), + Some(bucket) => Some(unsafe { self.remove(bucket).0 }), None => None, } } @@ -607,6 +1021,10 @@ /// Removes all elements from the table without freeing the backing memory. #[cfg_attr(feature = "inline-more", inline)] pub fn clear(&mut self) { + if self.is_empty() { + // Special case empty table to avoid surprising O(capacity) time. + return; + } // Ensure that the table is reset even if one of the drops panic let mut self_ = guard(self, |self_| self_.clear_no_drop()); unsafe { @@ -663,7 +1081,7 @@ /// without reallocation. #[cfg_attr(feature = "inline-more", inline)] pub fn reserve(&mut self, additional: usize, hasher: impl Fn(&T) -> u64) { - if additional > self.table.growth_left { + if unlikely(additional > self.table.growth_left) { // Avoid `Result::unwrap_or_else` because it bloats LLVM IR. if self .reserve_rehash(additional, hasher, Fallibility::Infallible) @@ -737,22 +1155,18 @@ #[cfg_attr(feature = "inline-more", inline)] pub fn insert(&mut self, hash: u64, value: T, hasher: impl Fn(&T) -> u64) -> Bucket { unsafe { - let mut index = self.table.find_insert_slot(hash); + let mut slot = self.table.find_insert_slot(hash); // We can avoid growing the table once we have reached our load // factor if we are replacing a tombstone. This works since the // number of EMPTY slots does not change in this case. - let old_ctrl = *self.table.ctrl(index); + let old_ctrl = *self.table.ctrl(slot.index); if unlikely(self.table.growth_left == 0 && special_is_empty(old_ctrl)) { self.reserve(1, hasher); - index = self.table.find_insert_slot(hash); + slot = self.table.find_insert_slot(hash); } - self.table.record_item_insert_at(index, old_ctrl, hash); - - let bucket = self.bucket(index); - bucket.write(value); - bucket + self.insert_in_slot(hash, slot, value) } } @@ -820,7 +1234,7 @@ let old_ctrl = *self.table.ctrl(index); debug_assert!(self.is_bucket_full(index)); let old_growth_left = self.table.growth_left; - let item = self.remove(bucket); + let item = self.remove(bucket).0; if let Some(new_item) = f(item) { self.table.growth_left = old_growth_left; self.table.set_ctrl(index, old_ctrl); @@ -832,6 +1246,49 @@ } } + /// Searches for an element in the table. If the element is not found, + /// returns `Err` with the position of a slot where an element with the + /// same hash could be inserted. + /// + /// This function may resize the table if additional space is required for + /// inserting an element. + #[inline] + pub fn find_or_find_insert_slot( + &mut self, + hash: u64, + mut eq: impl FnMut(&T) -> bool, + hasher: impl Fn(&T) -> u64, + ) -> Result, InsertSlot> { + self.reserve(1, hasher); + + match self + .table + .find_or_find_insert_slot_inner(hash, &mut |index| unsafe { + eq(self.bucket(index).as_ref()) + }) { + Ok(index) => Ok(unsafe { self.bucket(index) }), + Err(slot) => Err(slot), + } + } + + /// Inserts a new element into the table in the given slot, and returns its + /// raw bucket. + /// + /// # Safety + /// + /// `slot` must point to a slot previously returned by + /// `find_or_find_insert_slot`, and no mutation of the table must have + /// occurred since that call. + #[inline] + pub unsafe fn insert_in_slot(&mut self, hash: u64, slot: InsertSlot, value: T) -> Bucket { + let old_ctrl = *self.table.ctrl(slot.index); + self.table.record_item_insert_at(slot.index, old_ctrl, hash); + + let bucket = self.bucket(slot.index); + bucket.write(value); + bucket + } + /// Searches for an element in the table. #[inline] pub fn find(&self, hash: u64, mut eq: impl FnMut(&T) -> bool) -> Option> { @@ -984,7 +1441,7 @@ /// `RawIterHash` struct, we have to make the `iter_hash` method unsafe. #[cfg_attr(feature = "inline-more", inline)] #[cfg(feature = "raw")] - pub unsafe fn iter_hash(&self, hash: u64) -> RawIterHash<'_, T, A> { + pub unsafe fn iter_hash(&self, hash: u64) -> RawIterHash { RawIterHash::new(self, hash) } @@ -1072,6 +1529,11 @@ } impl RawTableInner { + /// Creates a new empty hash table without allocating any memory. + /// + /// In effect this returns a table with exactly 1 bucket. However we can + /// leave the data pointer dangling since that bucket is never accessed + /// due to our load factor forcing us to always have at least 1 free bucket. #[inline] const fn new_in(alloc: A) -> Self { Self { @@ -1086,6 +1548,18 @@ } impl RawTableInner { + /// Allocates a new [`RawTableInner`] with the given number of buckets. + /// The control bytes and buckets are left uninitialized. + /// + /// # Safety + /// + /// The caller of this function must ensure that the `buckets` is power of two + /// and also initialize all control bytes of the length `self.bucket_mask + 1 + + /// Group::WIDTH` with the [`EMPTY`] bytes. + /// + /// See also [`Allocator`] API for other safety concerns. + /// + /// [`Allocator`]: https://doc.rust-lang.org/alloc/alloc/trait.Allocator.html #[cfg_attr(feature = "inline-more", inline)] unsafe fn new_uninitialized( alloc: A, @@ -1106,6 +1580,7 @@ Err(_) => return Err(fallibility.alloc_err(layout)), }; + // SAFETY: null pointer will be caught in above check let ctrl = NonNull::new_unchecked(ptr.as_ptr().add(ctrl_offset)); Ok(Self { ctrl, @@ -1116,6 +1591,10 @@ }) } + /// Attempts to allocate a new [`RawTableInner`] with at least enough + /// capacity for inserting the given number of elements without reallocating. + /// + /// All the control bytes are initialized with the [`EMPTY`] bytes. #[inline] fn fallible_with_capacity( alloc: A, @@ -1126,11 +1605,16 @@ if capacity == 0 { Ok(Self::new_in(alloc)) } else { + // SAFETY: We checked that we could successfully allocate the new table, and then + // initialized all control bytes with the constant `EMPTY` byte. unsafe { let buckets = capacity_to_buckets(capacity).ok_or_else(|| fallibility.capacity_overflow())?; let result = Self::new_uninitialized(alloc, table_layout, buckets, fallibility)?; + // SAFETY: We checked that the table is allocated and therefore the table already has + // `self.bucket_mask + 1 + Group::WIDTH` number of control bytes (see TableLayout::calculate_layout_for) + // so writing `self.num_ctrl_bytes() == bucket_mask + 1 + Group::WIDTH` bytes is safe. result.ctrl(0).write_bytes(EMPTY, result.num_ctrl_bytes()); Ok(result) @@ -1138,66 +1622,200 @@ } } + /// Fixes up an insertion slot due to false positives for groups smaller than the group width. + /// This must only be used on insertion slots found by `find_insert_slot_in_group`. + #[inline] + unsafe fn fix_insert_slot(&self, mut index: usize) -> InsertSlot { + // In tables smaller than the group width + // (self.buckets() < Group::WIDTH), trailing control + // bytes outside the range of the table are filled with + // EMPTY entries. These will unfortunately trigger a + // match, but once masked may point to a full bucket that + // is already occupied. We detect this situation here and + // perform a second scan starting at the beginning of the + // table. This second scan is guaranteed to find an empty + // slot (due to the load factor) before hitting the trailing + // control bytes (containing EMPTY). + if unlikely(self.is_bucket_full(index)) { + debug_assert!(self.bucket_mask < Group::WIDTH); + // SAFETY: + // + // * We are in range and `ptr = self.ctrl(0)` are valid for reads + // and properly aligned, because the table is already allocated + // (see `TableLayout::calculate_layout_for` and `ptr::read`); + // + // * For tables larger than the group width (self.buckets() >= Group::WIDTH), + // we will never end up in the given branch, since + // `(probe_seq.pos + bit) & self.bucket_mask` in `find_insert_slot_in_group` cannot + // return a full bucket index. For tables smaller than the group width, calling the + // `unwrap_unchecked` function is also + // safe, as the trailing control bytes outside the range of the table are filled + // with EMPTY bytes, so this second scan either finds an empty slot (due to the + // load factor) or hits the trailing control bytes (containing EMPTY). + index = Group::load_aligned(self.ctrl(0)) + .match_empty_or_deleted() + .lowest_set_bit() + .unwrap_unchecked(); + } + InsertSlot { index } + } + + /// Finds the position to insert something in a group. + /// This may have false positives and must be fixed up with `fix_insert_slot` before it's used. + #[inline] + fn find_insert_slot_in_group(&self, group: &Group, probe_seq: &ProbeSeq) -> Option { + let bit = group.match_empty_or_deleted().lowest_set_bit(); + + if likely(bit.is_some()) { + Some((probe_seq.pos + bit.unwrap()) & self.bucket_mask) + } else { + None + } + } + + /// Searches for an element in the table, or a potential slot where that element could be + /// inserted. + /// + /// This uses dynamic dispatch to reduce the amount of code generated, but that is + /// eliminated by LLVM optimizations. + #[inline] + fn find_or_find_insert_slot_inner( + &self, + hash: u64, + eq: &mut dyn FnMut(usize) -> bool, + ) -> Result { + let mut insert_slot = None; + + let h2_hash = h2(hash); + let mut probe_seq = self.probe_seq(hash); + + loop { + let group = unsafe { Group::load(self.ctrl(probe_seq.pos)) }; + + for bit in group.match_byte(h2_hash) { + let index = (probe_seq.pos + bit) & self.bucket_mask; + + if likely(eq(index)) { + return Ok(index); + } + } + + // We didn't find the element we were looking for in the group, try to get an + // insertion slot from the group if we don't have one yet. + if likely(insert_slot.is_none()) { + insert_slot = self.find_insert_slot_in_group(&group, &probe_seq); + } + + // Only stop the search if the group contains at least one empty element. + // Otherwise, the element that we are looking for might be in a following group. + if likely(group.match_empty().any_bit_set()) { + // We must have found a insert slot by now, since the current group contains at + // least one. For tables smaller than the group width, there will still be an + // empty element in the current (and only) group due to the load factor. + unsafe { + return Err(self.fix_insert_slot(insert_slot.unwrap_unchecked())); + } + } + + probe_seq.move_next(self.bucket_mask); + } + } + /// Searches for an empty or deleted bucket which is suitable for inserting /// a new element and sets the hash for that slot. /// /// There must be at least 1 empty bucket in the table. #[inline] unsafe fn prepare_insert_slot(&self, hash: u64) -> (usize, u8) { - let index = self.find_insert_slot(hash); + let index = self.find_insert_slot(hash).index; let old_ctrl = *self.ctrl(index); self.set_ctrl_h2(index, hash); (index, old_ctrl) } /// Searches for an empty or deleted bucket which is suitable for inserting - /// a new element. + /// a new element, returning the `index` for the new [`Bucket`]. /// - /// There must be at least 1 empty bucket in the table. + /// This function does not make any changes to the `data` part of the table, or any + /// changes to the `items` or `growth_left` field of the table. + /// + /// The table must have at least 1 empty or deleted `bucket`, otherwise this function + /// will never return (will go into an infinite loop) for tables larger than the group + /// width, or return an index outside of the table indices range if the table is less + /// than the group width. + /// + /// # Note + /// + /// Calling this function is always safe, but attempting to write data at + /// the index returned by this function when the table is less than the group width + /// and if there was not at least one empty bucket in the table will cause immediate + /// [`undefined behavior`]. This is because in this case the function will return + /// `self.bucket_mask + 1` as an index due to the trailing EMPTY control bytes outside + /// the table range. + /// + /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html #[inline] - fn find_insert_slot(&self, hash: u64) -> usize { + fn find_insert_slot(&self, hash: u64) -> InsertSlot { let mut probe_seq = self.probe_seq(hash); loop { + // SAFETY: + // * `ProbeSeq.pos` cannot be greater than `self.bucket_mask = self.buckets() - 1` + // of the table due to masking with `self.bucket_mask` and also because mumber of + // buckets is a power of two (see comment for masking below). + // + // * Even if `ProbeSeq.pos` returns `position == self.bucket_mask`, it is safe to + // call `Group::load` due to the extended control bytes range, which is + // `self.bucket_mask + 1 + Group::WIDTH` (in fact, this means that the last control + // byte will never be read for the allocated table); + // + // * Also, even if `RawTableInner` is not already allocated, `ProbeSeq.pos` will + // always return "0" (zero), so Group::load will read unaligned `Group::static_empty()` + // bytes, which is safe (see RawTableInner::new_in). unsafe { let group = Group::load(self.ctrl(probe_seq.pos)); - if let Some(bit) = group.match_empty_or_deleted().lowest_set_bit() { - let result = (probe_seq.pos + bit) & self.bucket_mask; - - // In tables smaller than the group width, trailing control - // bytes outside the range of the table are filled with - // EMPTY entries. These will unfortunately trigger a - // match, but once masked may point to a full bucket that - // is already occupied. We detect this situation here and - // perform a second scan starting at the beginning of the - // table. This second scan is guaranteed to find an empty - // slot (due to the load factor) before hitting the trailing - // control bytes (containing EMPTY). - if unlikely(self.is_bucket_full(result)) { - debug_assert!(self.bucket_mask < Group::WIDTH); - debug_assert_ne!(probe_seq.pos, 0); - return Group::load_aligned(self.ctrl(0)) - .match_empty_or_deleted() - .lowest_set_bit_nonzero(); - } + let index = self.find_insert_slot_in_group(&group, &probe_seq); - return result; + if likely(index.is_some()) { + return self.fix_insert_slot(index.unwrap_unchecked()); } } probe_seq.move_next(self.bucket_mask); } } - /// Searches for an element in the table. This uses dynamic dispatch to reduce the amount of - /// code generated, but it is eliminated by LLVM optimizations. + /// Searches for an element in a table, returning the `index` of the found element. + /// This uses dynamic dispatch to reduce the amount of code generated, but it is + /// eliminated by LLVM optimizations. + /// + /// This function does not make any changes to the `data` part of the table, or any + /// changes to the `items` or `growth_left` field of the table. + /// + /// The table must have at least 1 empty `bucket`, otherwise, if the + /// `eq: &mut dyn FnMut(usize) -> bool` function does not return `true`, + /// this function will also never return (will go into an infinite loop). #[inline(always)] fn find_inner(&self, hash: u64, eq: &mut dyn FnMut(usize) -> bool) -> Option { let h2_hash = h2(hash); let mut probe_seq = self.probe_seq(hash); loop { + // SAFETY: + // * `ProbeSeq.pos` cannot be greater than `self.bucket_mask = self.buckets() - 1` + // of the table due to masking with `self.bucket_mask`. + // + // * Even if `ProbeSeq.pos` returns `position == self.bucket_mask`, it is safe to + // call `Group::load` due to the extended control bytes range, which is + // `self.bucket_mask + 1 + Group::WIDTH` (in fact, this means that the last control + // byte will never be read for the allocated table); + // + // * Also, even if `RawTableInner` is not already allocated, `ProbeSeq.pos` will + // always return "0" (zero), so Group::load will read unaligned `Group::static_empty()` + // bytes, which is safe (see RawTableInner::new_in). let group = unsafe { Group::load(self.ctrl(probe_seq.pos)) }; for bit in group.match_byte(h2_hash) { + // This is the same as `(probe_seq.pos + bit) % self.buckets()` because the number + // of buckets is a power of two, and `self.bucket_mask = self.buckets() - 1`. let index = (probe_seq.pos + bit) & self.bucket_mask; if likely(eq(index)) { @@ -1213,12 +1831,49 @@ } } + /// Prepares for rehashing data in place (that is, without allocating new memory). + /// Converts all full index `control bytes` to `DELETED` and all `DELETED` control + /// bytes to `EMPTY`, i.e. performs the following conversion: + /// + /// - `EMPTY` control bytes -> `EMPTY`; + /// - `DELETED` control bytes -> `EMPTY`; + /// - `FULL` control bytes -> `DELETED`. + /// + /// This function does not make any changes to the `data` parts of the table, + /// or any changes to the the `items` or `growth_left` field of the table. + /// + /// # Safety + /// + /// You must observe the following safety rules when calling this function: + /// + /// * The [`RawTableInner`] has already been allocated; + /// + /// * The caller of this function must convert the `DELETED` bytes back to `FULL` + /// bytes when re-inserting them into their ideal position (which was impossible + /// to do during the first insert due to tombstones). If the caller does not do + /// this, then calling this function may result in a memory leak. + /// + /// Calling this function on a table that has not been allocated results in + /// [`undefined behavior`]. + /// + /// See also [`Bucket::as_ptr`] method, for more information about of properly removing + /// or saving `data element` from / into the [`RawTable`] / [`RawTableInner`]. + /// + /// [`Bucket::as_ptr`]: Bucket::as_ptr + /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html #[allow(clippy::mut_mut)] #[inline] unsafe fn prepare_rehash_in_place(&mut self) { - // Bulk convert all full control bytes to DELETED, and all DELETED - // control bytes to EMPTY. This effectively frees up all buckets - // containing a DELETED entry. + // Bulk convert all full control bytes to DELETED, and all DELETED control bytes to EMPTY. + // This effectively frees up all buckets containing a DELETED entry. + // + // SAFETY: + // 1. `i` is guaranteed to be within bounds since we are iterating from zero to `buckets - 1`; + // 2. Even if `i` will be `i == self.bucket_mask`, it is safe to call `Group::load_aligned` + // due to the extended control bytes range, which is `self.bucket_mask + 1 + Group::WIDTH`; + // 3. The caller of this function guarantees that [`RawTableInner`] has already been allocated; + // 4. We can use `Group::load_aligned` and `Group::store_aligned` here since we start from 0 + // and go to the end with a step equal to `Group::WIDTH` (see TableLayout::calculate_layout_for). for i in (0..self.buckets()).step_by(Group::WIDTH) { let group = Group::load_aligned(self.ctrl(i)); let group = group.convert_special_to_empty_and_full_to_deleted(); @@ -1227,10 +1882,19 @@ // Fix up the trailing control bytes. See the comments in set_ctrl // for the handling of tables smaller than the group width. - if self.buckets() < Group::WIDTH { + // + // SAFETY: The caller of this function guarantees that [`RawTableInner`] + // has already been allocated + if unlikely(self.buckets() < Group::WIDTH) { + // SAFETY: We have `self.bucket_mask + 1 + Group::WIDTH` number of control bytes, + // so copying `self.buckets() == self.bucket_mask + 1` bytes with offset equal to + // `Group::WIDTH` is safe self.ctrl(0) .copy_to(self.ctrl(Group::WIDTH), self.buckets()); } else { + // SAFETY: We have `self.bucket_mask + 1 + Group::WIDTH` number of + // control bytes,so copying `Group::WIDTH` bytes with offset equal + // to `self.buckets() == self.bucket_mask + 1` is safe self.ctrl(0) .copy_to(self.ctrl(self.buckets()), Group::WIDTH); } @@ -1274,7 +1938,7 @@ #[cfg(feature = "raw")] #[inline] unsafe fn prepare_insert_no_grow(&mut self, hash: u64) -> Result { - let index = self.find_insert_slot(hash); + let index = self.find_insert_slot(hash).index; let old_ctrl = *self.ctrl(index); if unlikely(self.growth_left == 0 && special_is_empty(old_ctrl)) { Err(()) @@ -1301,13 +1965,68 @@ /// Sets a control byte to the hash, and possibly also the replicated control byte at /// the end of the array. + /// + /// This function does not make any changes to the `data` parts of the table, + /// or any changes to the the `items` or `growth_left` field of the table. + /// + /// # Safety + /// + /// The safety rules are directly derived from the safety rules for [`RawTableInner::set_ctrl`] + /// method. Thus, in order to uphold the safety contracts for the method, you must observe the + /// following rules when calling this function: + /// + /// * The [`RawTableInner`] has already been allocated; + /// + /// * The `index` must not be greater than the `RawTableInner.bucket_mask`, i.e. + /// `index <= RawTableInner.bucket_mask` or, in other words, `(index + 1)` must + /// be no greater than the number returned by the function [`RawTableInner::buckets`]. + /// + /// Calling this function on a table that has not been allocated results in [`undefined behavior`]. + /// + /// See also [`Bucket::as_ptr`] method, for more information about of properly removing + /// or saving `data element` from / into the [`RawTable`] / [`RawTableInner`]. + /// + /// [`RawTableInner::set_ctrl`]: RawTableInner::set_ctrl + /// [`RawTableInner::buckets`]: RawTableInner::buckets + /// [`Bucket::as_ptr`]: Bucket::as_ptr + /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html #[inline] unsafe fn set_ctrl_h2(&self, index: usize, hash: u64) { + // SAFETY: The caller must uphold the safety rules for the [`RawTableInner::set_ctrl_h2`] self.set_ctrl(index, h2(hash)); } + /// Replaces the hash in the control byte at the given index with the provided one, + /// and possibly also replicates the new control byte at the end of the array of control + /// bytes, returning the old control byte. + /// + /// This function does not make any changes to the `data` parts of the table, + /// or any changes to the the `items` or `growth_left` field of the table. + /// + /// # Safety + /// + /// The safety rules are directly derived from the safety rules for [`RawTableInner::set_ctrl_h2`] + /// and [`RawTableInner::ctrl`] methods. Thus, in order to uphold the safety contracts for both + /// methods, you must observe the following rules when calling this function: + /// + /// * The [`RawTableInner`] has already been allocated; + /// + /// * The `index` must not be greater than the `RawTableInner.bucket_mask`, i.e. + /// `index <= RawTableInner.bucket_mask` or, in other words, `(index + 1)` must + /// be no greater than the number returned by the function [`RawTableInner::buckets`]. + /// + /// Calling this function on a table that has not been allocated results in [`undefined behavior`]. + /// + /// See also [`Bucket::as_ptr`] method, for more information about of properly removing + /// or saving `data element` from / into the [`RawTable`] / [`RawTableInner`]. + /// + /// [`RawTableInner::set_ctrl_h2`]: RawTableInner::set_ctrl_h2 + /// [`RawTableInner::buckets`]: RawTableInner::buckets + /// [`Bucket::as_ptr`]: Bucket::as_ptr + /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html #[inline] unsafe fn replace_ctrl_h2(&self, index: usize, hash: u64) -> u8 { + // SAFETY: The caller must uphold the safety rules for the [`RawTableInner::replace_ctrl_h2`] let prev_ctrl = *self.ctrl(index); self.set_ctrl_h2(index, hash); prev_ctrl @@ -1315,6 +2034,28 @@ /// Sets a control byte, and possibly also the replicated control byte at /// the end of the array. + /// + /// This function does not make any changes to the `data` parts of the table, + /// or any changes to the the `items` or `growth_left` field of the table. + /// + /// # Safety + /// + /// You must observe the following safety rules when calling this function: + /// + /// * The [`RawTableInner`] has already been allocated; + /// + /// * The `index` must not be greater than the `RawTableInner.bucket_mask`, i.e. + /// `index <= RawTableInner.bucket_mask` or, in other words, `(index + 1)` must + /// be no greater than the number returned by the function [`RawTableInner::buckets`]. + /// + /// Calling this function on a table that has not been allocated results in [`undefined behavior`]. + /// + /// See also [`Bucket::as_ptr`] method, for more information about of properly removing + /// or saving `data element` from / into the [`RawTable`] / [`RawTableInner`]. + /// + /// [`RawTableInner::buckets`]: RawTableInner::buckets + /// [`Bucket::as_ptr`]: Bucket::as_ptr + /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html #[inline] unsafe fn set_ctrl(&self, index: usize, ctrl: u8) { // Replicate the first Group::WIDTH control bytes at the end of @@ -1335,16 +2076,43 @@ // --------------------------------------------- // | [A] | [B] | [EMPTY] | [EMPTY] | [A] | [B] | // --------------------------------------------- + + // This is the same as `(index.wrapping_sub(Group::WIDTH)) % self.buckets() + Group::WIDTH` + // because the number of buckets is a power of two, and `self.bucket_mask = self.buckets() - 1`. let index2 = ((index.wrapping_sub(Group::WIDTH)) & self.bucket_mask) + Group::WIDTH; + // SAFETY: The caller must uphold the safety rules for the [`RawTableInner::set_ctrl`] *self.ctrl(index) = ctrl; *self.ctrl(index2) = ctrl; } /// Returns a pointer to a control byte. + /// + /// # Safety + /// + /// For the allocated [`RawTableInner`], the result is [`Undefined Behavior`], + /// if the `index` is greater than the `self.bucket_mask + 1 + Group::WIDTH`. + /// In that case, calling this function with `index == self.bucket_mask + 1 + Group::WIDTH` + /// will return a pointer to the end of the allocated table and it is useless on its own. + /// + /// Calling this function with `index >= self.bucket_mask + 1 + Group::WIDTH` on a + /// table that has not been allocated results in [`Undefined Behavior`]. + /// + /// So to satisfy both requirements you should always follow the rule that + /// `index < self.bucket_mask + 1 + Group::WIDTH` + /// + /// Calling this function on [`RawTableInner`] that are not already allocated is safe + /// for read-only purpose. + /// + /// See also [`Bucket::as_ptr()`] method, for more information about of properly removing + /// or saving `data element` from / into the [`RawTable`] / [`RawTableInner`]. + /// + /// [`Bucket::as_ptr()`]: Bucket::as_ptr() + /// [`Undefined Behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html #[inline] unsafe fn ctrl(&self, index: usize) -> *mut u8 { debug_assert!(index < self.num_ctrl_bytes()); + // SAFETY: The caller must uphold the safety rules for the [`RawTableInner::ctrl`] self.ctrl.as_ptr().add(index) } @@ -1541,7 +2309,7 @@ let hash = hasher(*guard, i); // Search for a suitable place to put it - let new_i = guard.find_insert_slot(hash); + let new_i = guard.find_insert_slot(hash).index; // Probing works by scanning through all of the control // bytes in groups, which may not be aligned to the group @@ -1626,27 +2394,95 @@ self.growth_left = bucket_mask_to_capacity(self.bucket_mask); } + /// Erases the [`Bucket`]'s control byte at the given index so that it does not + /// triggered as full, decreases the `items` of the table and, if it can be done, + /// increases `self.growth_left`. + /// + /// This function does not actually erase / drop the [`Bucket`] itself, i.e. it + /// does not make any changes to the `data` parts of the table. The caller of this + /// function must take care to properly drop the `data`, otherwise calling this + /// function may result in a memory leak. + /// + /// # Safety + /// + /// You must observe the following safety rules when calling this function: + /// + /// * The [`RawTableInner`] has already been allocated; + /// + /// * It must be the full control byte at the given position; + /// + /// * The `index` must not be greater than the `RawTableInner.bucket_mask`, i.e. + /// `index <= RawTableInner.bucket_mask` or, in other words, `(index + 1)` must + /// be no greater than the number returned by the function [`RawTableInner::buckets`]. + /// + /// Calling this function on a table that has not been allocated results in [`undefined behavior`]. + /// + /// Calling this function on a table with no elements is unspecified, but calling subsequent + /// functions is likely to result in [`undefined behavior`] due to overflow subtraction + /// (`self.items -= 1 cause overflow when self.items == 0`). + /// + /// See also [`Bucket::as_ptr`] method, for more information about of properly removing + /// or saving `data element` from / into the [`RawTable`] / [`RawTableInner`]. + /// + /// [`RawTableInner::buckets`]: RawTableInner::buckets + /// [`Bucket::as_ptr`]: Bucket::as_ptr + /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html #[inline] unsafe fn erase(&mut self, index: usize) { debug_assert!(self.is_bucket_full(index)); + + // This is the same as `index.wrapping_sub(Group::WIDTH) % self.buckets()` because + // the number of buckets is a power of two, and `self.bucket_mask = self.buckets() - 1`. let index_before = index.wrapping_sub(Group::WIDTH) & self.bucket_mask; + // SAFETY: + // - The caller must uphold the safety contract for `erase` method; + // - `index_before` is guaranteed to be in range due to masking with `self.bucket_mask` let empty_before = Group::load(self.ctrl(index_before)).match_empty(); let empty_after = Group::load(self.ctrl(index)).match_empty(); - // If we are inside a continuous block of Group::WIDTH full or deleted - // cells then a probe window may have seen a full block when trying to - // insert. We therefore need to keep that block non-empty so that - // lookups will continue searching to the next probe window. + // Inserting and searching in the map is performed by two key functions: + // + // - The `find_insert_slot` function that looks up the index of any `EMPTY` or `DELETED` + // slot in a group to be able to insert. If it doesn't find an `EMPTY` or `DELETED` + // slot immediately in the first group, it jumps to the next `Group` looking for it, + // and so on until it has gone through all the groups in the control bytes. + // + // - The `find_inner` function that looks for the index of the desired element by looking + // at all the `FULL` bytes in the group. If it did not find the element right away, and + // there is no `EMPTY` byte in the group, then this means that the `find_insert_slot` + // function may have found a suitable slot in the next group. Therefore, `find_inner` + // jumps further, and if it does not find the desired element and again there is no `EMPTY` + // byte, then it jumps further, and so on. The search stops only if `find_inner` function + // finds the desired element or hits an `EMPTY` slot/byte. + // + // Accordingly, this leads to two consequences: + // + // - The map must have `EMPTY` slots (bytes); // - // Note that in this context `leading_zeros` refers to the bytes at the - // end of a group, while `trailing_zeros` refers to the bytes at the - // beginning of a group. + // - You can't just mark the byte to be erased as `EMPTY`, because otherwise the `find_inner` + // function may stumble upon an `EMPTY` byte before finding the desired element and stop + // searching. + // + // Thus it is necessary to check all bytes after and before the erased element. If we are in + // a contiguous `Group` of `FULL` or `DELETED` bytes (the number of `FULL` or `DELETED` bytes + // before and after is greater than or equal to `Group::WIDTH`), then we must mark our byte as + // `DELETED` in order for the `find_inner` function to go further. On the other hand, if there + // is at least one `EMPTY` slot in the `Group`, then the `find_inner` function will still stumble + // upon an `EMPTY` byte, so we can safely mark our erased byte as `EMPTY` as well. + // + // Finally, since `index_before == (index.wrapping_sub(Group::WIDTH) & self.bucket_mask) == index` + // and given all of the above, tables smaller than the group width (self.buckets() < Group::WIDTH) + // cannot have `DELETED` bytes. + // + // Note that in this context `leading_zeros` refers to the bytes at the end of a group, while + // `trailing_zeros` refers to the bytes at the beginning of a group. let ctrl = if empty_before.leading_zeros() + empty_after.trailing_zeros() >= Group::WIDTH { DELETED } else { self.growth_left += 1; EMPTY }; + // SAFETY: the caller must uphold the safety contract for `erase` method. self.set_ctrl(index, ctrl); self.items -= 1; } @@ -1752,7 +2588,8 @@ .copy_to_nonoverlapping(self.table.ctrl(0), self.table.num_ctrl_bytes()); source .data_start() - .copy_to_nonoverlapping(self.data_start(), self.table.buckets()); + .as_ptr() + .copy_to_nonoverlapping(self.data_start().as_ptr(), self.table.buckets()); self.table.items = source.table.items; self.table.growth_left = source.table.growth_left; @@ -1776,7 +2613,7 @@ // to make sure we drop only the elements that have been // cloned so far. let mut guard = guard((0, &mut *self), |(index, self_)| { - if Self::DATA_NEEDS_DROP && !self_.is_empty() { + if Self::DATA_NEEDS_DROP { for i in 0..=*index { if self_.is_bucket_full(i) { self_.bucket(i).drop(); @@ -1896,7 +2733,7 @@ pub(crate) struct RawIterRange { // Mask of full buckets in the current group. Bits are cleared from this // mask as each element is processed. - current_group: BitMask, + current_group: BitMaskIter, // Pointer to the buckets for the current group. data: Bucket, @@ -1924,7 +2761,7 @@ let next_ctrl = ctrl.add(Group::WIDTH); Self { - current_group, + current_group: current_group.into_iter(), data, next_ctrl, end, @@ -1981,8 +2818,7 @@ #[cfg_attr(feature = "inline-more", inline)] unsafe fn next_impl(&mut self) -> Option> { loop { - if let Some(index) = self.current_group.lowest_set_bit() { - self.current_group = self.current_group.remove_lowest_bit(); + if let Some(index) = self.current_group.next() { return Some(self.data.next_n(index)); } @@ -1995,7 +2831,7 @@ // than the group size where the trailing control bytes are all // EMPTY. On larger tables self.end is guaranteed to be aligned // to the group size (since tables are power-of-two sized). - self.current_group = Group::load_aligned(self.next_ctrl).match_full(); + self.current_group = Group::load_aligned(self.next_ctrl).match_full().into_iter(); self.data = self.data.next_n(Group::WIDTH); self.next_ctrl = self.next_ctrl.add(Group::WIDTH); } @@ -2074,7 +2910,7 @@ /// This method should be called _before_ the removal is made. It is not necessary to call this /// method if you are removing an item that this iterator yielded in the past. #[cfg(feature = "raw")] - pub fn reflect_remove(&mut self, b: &Bucket) { + pub unsafe fn reflect_remove(&mut self, b: &Bucket) { self.reflect_toggle_full(b, false); } @@ -2088,36 +2924,76 @@ /// /// This method should be called _after_ the given insert is made. #[cfg(feature = "raw")] - pub fn reflect_insert(&mut self, b: &Bucket) { + pub unsafe fn reflect_insert(&mut self, b: &Bucket) { self.reflect_toggle_full(b, true); } /// Refresh the iterator so that it reflects a change to the state of the given bucket. #[cfg(feature = "raw")] - fn reflect_toggle_full(&mut self, b: &Bucket, is_insert: bool) { - unsafe { - if b.as_ptr() > self.iter.data.as_ptr() { - // The iterator has already passed the bucket's group. - // So the toggle isn't relevant to this iterator. - return; + unsafe fn reflect_toggle_full(&mut self, b: &Bucket, is_insert: bool) { + if b.as_ptr() > self.iter.data.as_ptr() { + // The iterator has already passed the bucket's group. + // So the toggle isn't relevant to this iterator. + return; + } + + if self.iter.next_ctrl < self.iter.end + && b.as_ptr() <= self.iter.data.next_n(Group::WIDTH).as_ptr() + { + // The iterator has not yet reached the bucket's group. + // We don't need to reload anything, but we do need to adjust the item count. + + if cfg!(debug_assertions) { + // Double-check that the user isn't lying to us by checking the bucket state. + // To do that, we need to find its control byte. We know that self.iter.data is + // at self.iter.next_ctrl - Group::WIDTH, so we work from there: + let offset = offset_from(self.iter.data.as_ptr(), b.as_ptr()); + let ctrl = self.iter.next_ctrl.sub(Group::WIDTH).add(offset); + // This method should be called _before_ a removal, or _after_ an insert, + // so in both cases the ctrl byte should indicate that the bucket is full. + assert!(is_full(*ctrl)); } - if self.iter.next_ctrl < self.iter.end - && b.as_ptr() <= self.iter.data.next_n(Group::WIDTH).as_ptr() - { - // The iterator has not yet reached the bucket's group. - // We don't need to reload anything, but we do need to adjust the item count. + if is_insert { + self.items += 1; + } else { + self.items -= 1; + } - if cfg!(debug_assertions) { - // Double-check that the user isn't lying to us by checking the bucket state. - // To do that, we need to find its control byte. We know that self.iter.data is - // at self.iter.next_ctrl - Group::WIDTH, so we work from there: - let offset = offset_from(self.iter.data.as_ptr(), b.as_ptr()); - let ctrl = self.iter.next_ctrl.sub(Group::WIDTH).add(offset); - // This method should be called _before_ a removal, or _after_ an insert, - // so in both cases the ctrl byte should indicate that the bucket is full. - assert!(is_full(*ctrl)); - } + return; + } + + // The iterator is at the bucket group that the toggled bucket is in. + // We need to do two things: + // + // - Determine if the iterator already yielded the toggled bucket. + // If it did, we're done. + // - Otherwise, update the iterator cached group so that it won't + // yield a to-be-removed bucket, or _will_ yield a to-be-added bucket. + // We'll also need to update the item count accordingly. + if let Some(index) = self.iter.current_group.0.lowest_set_bit() { + let next_bucket = self.iter.data.next_n(index); + if b.as_ptr() > next_bucket.as_ptr() { + // The toggled bucket is "before" the bucket the iterator would yield next. We + // therefore don't need to do anything --- the iterator has already passed the + // bucket in question. + // + // The item count must already be correct, since a removal or insert "prior" to + // the iterator's position wouldn't affect the item count. + } else { + // The removed bucket is an upcoming bucket. We need to make sure it does _not_ + // get yielded, and also that it's no longer included in the item count. + // + // NOTE: We can't just reload the group here, both since that might reflect + // inserts we've already passed, and because that might inadvertently unset the + // bits for _other_ removals. If we do that, we'd have to also decrement the + // item count for those other bits that we unset. But the presumably subsequent + // call to reflect for those buckets might _also_ decrement the item count. + // Instead, we _just_ flip the bit for the particular bucket the caller asked + // us to reflect. + let our_bit = offset_from(self.iter.data.as_ptr(), b.as_ptr()); + let was_full = self.iter.current_group.flip(our_bit); + debug_assert_ne!(was_full, is_insert); if is_insert { self.items += 1; @@ -2125,60 +3001,18 @@ self.items -= 1; } - return; - } - - // The iterator is at the bucket group that the toggled bucket is in. - // We need to do two things: - // - // - Determine if the iterator already yielded the toggled bucket. - // If it did, we're done. - // - Otherwise, update the iterator cached group so that it won't - // yield a to-be-removed bucket, or _will_ yield a to-be-added bucket. - // We'll also need to update the item count accordingly. - if let Some(index) = self.iter.current_group.lowest_set_bit() { - let next_bucket = self.iter.data.next_n(index); - if b.as_ptr() > next_bucket.as_ptr() { - // The toggled bucket is "before" the bucket the iterator would yield next. We - // therefore don't need to do anything --- the iterator has already passed the - // bucket in question. - // - // The item count must already be correct, since a removal or insert "prior" to - // the iterator's position wouldn't affect the item count. - } else { - // The removed bucket is an upcoming bucket. We need to make sure it does _not_ - // get yielded, and also that it's no longer included in the item count. - // - // NOTE: We can't just reload the group here, both since that might reflect - // inserts we've already passed, and because that might inadvertently unset the - // bits for _other_ removals. If we do that, we'd have to also decrement the - // item count for those other bits that we unset. But the presumably subsequent - // call to reflect for those buckets might _also_ decrement the item count. - // Instead, we _just_ flip the bit for the particular bucket the caller asked - // us to reflect. - let our_bit = offset_from(self.iter.data.as_ptr(), b.as_ptr()); - let was_full = self.iter.current_group.flip(our_bit); - debug_assert_ne!(was_full, is_insert); - - if is_insert { - self.items += 1; + if cfg!(debug_assertions) { + if b.as_ptr() == next_bucket.as_ptr() { + // The removed bucket should no longer be next + debug_assert_ne!(self.iter.current_group.0.lowest_set_bit(), Some(index)); } else { - self.items -= 1; - } - - if cfg!(debug_assertions) { - if b.as_ptr() == next_bucket.as_ptr() { - // The removed bucket should no longer be next - debug_assert_ne!(self.iter.current_group.lowest_set_bit(), Some(index)); - } else { - // We should not have changed what bucket comes next. - debug_assert_eq!(self.iter.current_group.lowest_set_bit(), Some(index)); - } + // We should not have changed what bucket comes next. + debug_assert_eq!(self.iter.current_group.0.lowest_set_bit(), Some(index)); } } - } else { - // We must have already iterated past the removed item. } + } else { + // We must have already iterated past the removed item. } } @@ -2217,9 +3051,8 @@ self.iter.next_impl::() }; - if nxt.is_some() { - self.items -= 1; - } + debug_assert!(nxt.is_some()); + self.items -= 1; nxt } @@ -2388,13 +3221,28 @@ /// `RawTable` only stores 7 bits of the hash value, so this iterator may return /// items that have a hash value different than the one provided. You should /// always validate the returned values before using them. -pub struct RawIterHash<'a, T, A: Allocator + Clone = Global> { - inner: RawIterHashInner<'a, A>, +/// +/// For maximum flexibility this iterator is not bound by a lifetime, but you +/// must observe several rules when using it: +/// - You must not free the hash table while iterating (including via growing/shrinking). +/// - It is fine to erase a bucket that has been yielded by the iterator. +/// - Erasing a bucket that has not yet been yielded by the iterator may still +/// result in the iterator yielding that bucket. +/// - It is unspecified whether an element inserted after the iterator was +/// created will be yielded by that iterator. +/// - The order in which the iterator yields buckets is unspecified and may +/// change in the future. +pub struct RawIterHash { + inner: RawIterHashInner, _marker: PhantomData, } -struct RawIterHashInner<'a, A: Allocator + Clone> { - table: &'a RawTableInner, +struct RawIterHashInner { + // See `RawTableInner`'s corresponding fields for details. + // We can't store a `*const RawTableInner` as it would get + // invalidated by the user calling `&mut` methods on `RawTable`. + bucket_mask: usize, + ctrl: NonNull, // The top 7 bits of the hash. h2_hash: u8, @@ -2408,65 +3256,77 @@ bitmask: BitMaskIter, } -impl<'a, T, A: Allocator + Clone> RawIterHash<'a, T, A> { +impl RawIterHash { #[cfg_attr(feature = "inline-more", inline)] #[cfg(feature = "raw")] - fn new(table: &'a RawTable, hash: u64) -> Self { + unsafe fn new(table: &RawTable, hash: u64) -> Self { RawIterHash { inner: RawIterHashInner::new(&table.table, hash), _marker: PhantomData, } } } -impl<'a, A: Allocator + Clone> RawIterHashInner<'a, A> { +impl RawIterHashInner { #[cfg_attr(feature = "inline-more", inline)] #[cfg(feature = "raw")] - fn new(table: &'a RawTableInner, hash: u64) -> Self { - unsafe { - let h2_hash = h2(hash); - let probe_seq = table.probe_seq(hash); - let group = Group::load(table.ctrl(probe_seq.pos)); - let bitmask = group.match_byte(h2_hash).into_iter(); + unsafe fn new(table: &RawTableInner, hash: u64) -> Self { + let h2_hash = h2(hash); + let probe_seq = table.probe_seq(hash); + let group = Group::load(table.ctrl(probe_seq.pos)); + let bitmask = group.match_byte(h2_hash).into_iter(); - RawIterHashInner { - table, - h2_hash, - probe_seq, - group, - bitmask, - } + RawIterHashInner { + bucket_mask: table.bucket_mask, + ctrl: table.ctrl, + h2_hash, + probe_seq, + group, + bitmask, } } } -impl<'a, T, A: Allocator + Clone> Iterator for RawIterHash<'a, T, A> { +impl Iterator for RawIterHash { type Item = Bucket; fn next(&mut self) -> Option> { unsafe { match self.inner.next() { - Some(index) => Some(self.inner.table.bucket(index)), + Some(index) => { + // Can't use `RawTable::bucket` here as we don't have + // an actual `RawTable` reference to use. + debug_assert!(index <= self.inner.bucket_mask); + let bucket = Bucket::from_base_index(self.inner.ctrl.cast(), index); + Some(bucket) + } None => None, } } } } -impl<'a, A: Allocator + Clone> Iterator for RawIterHashInner<'a, A> { +impl Iterator for RawIterHashInner { type Item = usize; fn next(&mut self) -> Option { unsafe { loop { if let Some(bit) = self.bitmask.next() { - let index = (self.probe_seq.pos + bit) & self.table.bucket_mask; + let index = (self.probe_seq.pos + bit) & self.bucket_mask; return Some(index); } if likely(self.group.match_empty().any_bit_set()) { return None; } - self.probe_seq.move_next(self.table.bucket_mask); - self.group = Group::load(self.table.ctrl(self.probe_seq.pos)); + self.probe_seq.move_next(self.bucket_mask); + + // Can't use `RawTableInner::ctrl` here as we don't have + // an actual `RawTableInner` reference to use. + let index = self.probe_seq.pos; + debug_assert!(index < self.bucket_mask + 1 + Group::WIDTH); + let group_ctrl = self.ctrl.as_ptr().add(index); + + self.group = Group::load(group_ctrl); self.bitmask = self.group.match_byte(self.h2_hash).into_iter(); } } diff -Nru temporalio-1.3.0/vendor/hashbrown/src/raw/neon.rs temporalio-1.3.0/vendor/hashbrown/src/raw/neon.rs --- temporalio-1.3.0/vendor/hashbrown/src/raw/neon.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/src/raw/neon.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,124 @@ +use super::bitmask::BitMask; +use super::EMPTY; +use core::arch::aarch64 as neon; +use core::mem; +use core::num::NonZeroU64; + +pub(crate) type BitMaskWord = u64; +pub(crate) type NonZeroBitMaskWord = NonZeroU64; +pub(crate) const BITMASK_STRIDE: usize = 8; +pub(crate) const BITMASK_MASK: BitMaskWord = !0; +pub(crate) const BITMASK_ITER_MASK: BitMaskWord = 0x8080_8080_8080_8080; + +/// Abstraction over a group of control bytes which can be scanned in +/// parallel. +/// +/// This implementation uses a 64-bit NEON value. +#[derive(Copy, Clone)] +pub(crate) struct Group(neon::uint8x8_t); + +#[allow(clippy::use_self)] +impl Group { + /// Number of bytes in the group. + pub(crate) const WIDTH: usize = mem::size_of::(); + + /// Returns a full group of empty bytes, suitable for use as the initial + /// value for an empty hash table. + /// + /// This is guaranteed to be aligned to the group size. + #[inline] + pub(crate) const fn static_empty() -> &'static [u8; Group::WIDTH] { + #[repr(C)] + struct AlignedBytes { + _align: [Group; 0], + bytes: [u8; Group::WIDTH], + } + const ALIGNED_BYTES: AlignedBytes = AlignedBytes { + _align: [], + bytes: [EMPTY; Group::WIDTH], + }; + &ALIGNED_BYTES.bytes + } + + /// Loads a group of bytes starting at the given address. + #[inline] + #[allow(clippy::cast_ptr_alignment)] // unaligned load + pub(crate) unsafe fn load(ptr: *const u8) -> Self { + Group(neon::vld1_u8(ptr)) + } + + /// Loads a group of bytes starting at the given address, which must be + /// aligned to `mem::align_of::()`. + #[inline] + #[allow(clippy::cast_ptr_alignment)] + pub(crate) unsafe fn load_aligned(ptr: *const u8) -> Self { + // FIXME: use align_offset once it stabilizes + debug_assert_eq!(ptr as usize & (mem::align_of::() - 1), 0); + Group(neon::vld1_u8(ptr)) + } + + /// Stores the group of bytes to the given address, which must be + /// aligned to `mem::align_of::()`. + #[inline] + #[allow(clippy::cast_ptr_alignment)] + pub(crate) unsafe fn store_aligned(self, ptr: *mut u8) { + // FIXME: use align_offset once it stabilizes + debug_assert_eq!(ptr as usize & (mem::align_of::() - 1), 0); + neon::vst1_u8(ptr, self.0); + } + + /// Returns a `BitMask` indicating all bytes in the group which *may* + /// have the given value. + #[inline] + pub(crate) fn match_byte(self, byte: u8) -> BitMask { + unsafe { + let cmp = neon::vceq_u8(self.0, neon::vdup_n_u8(byte)); + BitMask(neon::vget_lane_u64(neon::vreinterpret_u64_u8(cmp), 0)) + } + } + + /// Returns a `BitMask` indicating all bytes in the group which are + /// `EMPTY`. + #[inline] + pub(crate) fn match_empty(self) -> BitMask { + self.match_byte(EMPTY) + } + + /// Returns a `BitMask` indicating all bytes in the group which are + /// `EMPTY` or `DELETED`. + #[inline] + pub(crate) fn match_empty_or_deleted(self) -> BitMask { + unsafe { + let cmp = neon::vcltz_s8(neon::vreinterpret_s8_u8(self.0)); + BitMask(neon::vget_lane_u64(neon::vreinterpret_u64_u8(cmp), 0)) + } + } + + /// Returns a `BitMask` indicating all bytes in the group which are full. + #[inline] + pub(crate) fn match_full(self) -> BitMask { + unsafe { + let cmp = neon::vcgez_s8(neon::vreinterpret_s8_u8(self.0)); + BitMask(neon::vget_lane_u64(neon::vreinterpret_u64_u8(cmp), 0)) + } + } + + /// Performs the following transformation on all bytes in the group: + /// - `EMPTY => EMPTY` + /// - `DELETED => EMPTY` + /// - `FULL => DELETED` + #[inline] + pub(crate) fn convert_special_to_empty_and_full_to_deleted(self) -> Self { + // Map high_bit = 1 (EMPTY or DELETED) to 1111_1111 + // and high_bit = 0 (FULL) to 1000_0000 + // + // Here's this logic expanded to concrete values: + // let special = 0 > byte = 1111_1111 (true) or 0000_0000 (false) + // 1111_1111 | 1000_0000 = 1111_1111 + // 0000_0000 | 1000_0000 = 1000_0000 + unsafe { + let special = neon::vcltz_s8(neon::vreinterpret_s8_u8(self.0)); + Group(neon::vorr_u8(special, neon::vdup_n_u8(0x80))) + } + } +} diff -Nru temporalio-1.3.0/vendor/hashbrown/src/raw/sse2.rs temporalio-1.3.0/vendor/hashbrown/src/raw/sse2.rs --- temporalio-1.3.0/vendor/hashbrown/src/raw/sse2.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/src/raw/sse2.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,28 +1,31 @@ use super::bitmask::BitMask; use super::EMPTY; use core::mem; +use core::num::NonZeroU16; #[cfg(target_arch = "x86")] use core::arch::x86; #[cfg(target_arch = "x86_64")] use core::arch::x86_64 as x86; -pub type BitMaskWord = u16; -pub const BITMASK_STRIDE: usize = 1; -pub const BITMASK_MASK: BitMaskWord = 0xffff; +pub(crate) type BitMaskWord = u16; +pub(crate) type NonZeroBitMaskWord = NonZeroU16; +pub(crate) const BITMASK_STRIDE: usize = 1; +pub(crate) const BITMASK_MASK: BitMaskWord = 0xffff; +pub(crate) const BITMASK_ITER_MASK: BitMaskWord = !0; /// Abstraction over a group of control bytes which can be scanned in /// parallel. /// /// This implementation uses a 128-bit SSE value. #[derive(Copy, Clone)] -pub struct Group(x86::__m128i); +pub(crate) struct Group(x86::__m128i); // FIXME: https://github.com/rust-lang/rust-clippy/issues/3859 #[allow(clippy::use_self)] impl Group { /// Number of bytes in the group. - pub const WIDTH: usize = mem::size_of::(); + pub(crate) const WIDTH: usize = mem::size_of::(); /// Returns a full group of empty bytes, suitable for use as the initial /// value for an empty hash table. @@ -30,7 +33,7 @@ /// This is guaranteed to be aligned to the group size. #[inline] #[allow(clippy::items_after_statements)] - pub const fn static_empty() -> &'static [u8; Group::WIDTH] { + pub(crate) const fn static_empty() -> &'static [u8; Group::WIDTH] { #[repr(C)] struct AlignedBytes { _align: [Group; 0], @@ -46,7 +49,7 @@ /// Loads a group of bytes starting at the given address. #[inline] #[allow(clippy::cast_ptr_alignment)] // unaligned load - pub unsafe fn load(ptr: *const u8) -> Self { + pub(crate) unsafe fn load(ptr: *const u8) -> Self { Group(x86::_mm_loadu_si128(ptr.cast())) } @@ -54,7 +57,7 @@ /// aligned to `mem::align_of::()`. #[inline] #[allow(clippy::cast_ptr_alignment)] - pub unsafe fn load_aligned(ptr: *const u8) -> Self { + pub(crate) unsafe fn load_aligned(ptr: *const u8) -> Self { // FIXME: use align_offset once it stabilizes debug_assert_eq!(ptr as usize & (mem::align_of::() - 1), 0); Group(x86::_mm_load_si128(ptr.cast())) @@ -64,7 +67,7 @@ /// aligned to `mem::align_of::()`. #[inline] #[allow(clippy::cast_ptr_alignment)] - pub unsafe fn store_aligned(self, ptr: *mut u8) { + pub(crate) unsafe fn store_aligned(self, ptr: *mut u8) { // FIXME: use align_offset once it stabilizes debug_assert_eq!(ptr as usize & (mem::align_of::() - 1), 0); x86::_mm_store_si128(ptr.cast(), self.0); @@ -73,7 +76,7 @@ /// Returns a `BitMask` indicating all bytes in the group which have /// the given value. #[inline] - pub fn match_byte(self, byte: u8) -> BitMask { + pub(crate) fn match_byte(self, byte: u8) -> BitMask { #[allow( clippy::cast_possible_wrap, // byte: u8 as i8 // byte: i32 as u16 @@ -91,14 +94,14 @@ /// Returns a `BitMask` indicating all bytes in the group which are /// `EMPTY`. #[inline] - pub fn match_empty(self) -> BitMask { + pub(crate) fn match_empty(self) -> BitMask { self.match_byte(EMPTY) } /// Returns a `BitMask` indicating all bytes in the group which are /// `EMPTY` or `DELETED`. #[inline] - pub fn match_empty_or_deleted(self) -> BitMask { + pub(crate) fn match_empty_or_deleted(self) -> BitMask { #[allow( // byte: i32 as u16 // note: _mm_movemask_epi8 returns a 16-bit mask in a i32, the @@ -114,7 +117,7 @@ /// Returns a `BitMask` indicating all bytes in the group which are full. #[inline] - pub fn match_full(&self) -> BitMask { + pub(crate) fn match_full(&self) -> BitMask { self.match_empty_or_deleted().invert() } @@ -123,7 +126,7 @@ /// - `DELETED => EMPTY` /// - `FULL => DELETED` #[inline] - pub fn convert_special_to_empty_and_full_to_deleted(self) -> Self { + pub(crate) fn convert_special_to_empty_and_full_to_deleted(self) -> Self { // Map high_bit = 1 (EMPTY or DELETED) to 1111_1111 // and high_bit = 0 (FULL) to 1000_0000 // diff -Nru temporalio-1.3.0/vendor/hashbrown/src/rustc_entry.rs temporalio-1.3.0/vendor/hashbrown/src/rustc_entry.rs --- temporalio-1.3.0/vendor/hashbrown/src/rustc_entry.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/src/rustc_entry.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ use self::RustcEntry::*; -use crate::map::{make_insert_hash, Drain, HashMap, IntoIter, Iter, IterMut}; +use crate::map::{make_hash, Drain, HashMap, IntoIter, Iter, IterMut}; use crate::raw::{Allocator, Bucket, Global, RawTable}; use core::fmt::{self, Debug}; use core::hash::{BuildHasher, Hash}; @@ -32,7 +32,7 @@ /// ``` #[cfg_attr(feature = "inline-more", inline)] pub fn rustc_entry(&mut self, key: K) -> RustcEntry<'_, K, V, A> { - let hash = make_insert_hash(&self.hash_builder, &key); + let hash = make_hash(&self.hash_builder, &key); if let Some(elem) = self.table.find(hash, |q| q.0.eq(&key)) { RustcEntry::Occupied(RustcOccupiedEntry { key: Some(key), @@ -330,7 +330,7 @@ /// ``` #[cfg_attr(feature = "inline-more", inline)] pub fn remove_entry(self) -> (K, V) { - unsafe { self.table.remove(self.elem) } + unsafe { self.table.remove(self.elem).0 } } /// Gets a reference to the value in the entry. diff -Nru temporalio-1.3.0/vendor/hashbrown/src/set.rs temporalio-1.3.0/vendor/hashbrown/src/set.rs --- temporalio-1.3.0/vendor/hashbrown/src/set.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/src/set.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,10 +5,9 @@ use core::fmt; use core::hash::{BuildHasher, Hash}; use core::iter::{Chain, FromIterator, FusedIterator}; -use core::mem; use core::ops::{BitAnd, BitOr, BitXor, Sub}; -use super::map::{self, ConsumeAllOnDrop, DefaultHashBuilder, DrainFilterInner, HashMap, Keys}; +use super::map::{self, DefaultHashBuilder, ExtractIfInner, HashMap, Keys}; use crate::raw::{Allocator, Global}; // Future Optimization (FIXME!) @@ -380,8 +379,9 @@ /// In other words, move all elements `e` such that `f(&e)` returns `true` out /// into another iterator. /// - /// When the returned DrainedFilter is dropped, any remaining elements that satisfy - /// the predicate are dropped from the set. + /// If the returned `ExtractIf` is not exhausted, e.g. because it is dropped without iterating + /// or the iteration short-circuits, then the remaining elements will be retained. + /// Use [`retain()`] with a negated predicate if you do not need the returned iterator. /// /// # Examples /// @@ -389,7 +389,7 @@ /// use hashbrown::HashSet; /// /// let mut set: HashSet = (0..8).collect(); - /// let drained: HashSet = set.drain_filter(|v| v % 2 == 0).collect(); + /// let drained: HashSet = set.extract_if(|v| v % 2 == 0).collect(); /// /// let mut evens = drained.into_iter().collect::>(); /// let mut odds = set.into_iter().collect::>(); @@ -400,13 +400,13 @@ /// assert_eq!(odds, vec![1, 3, 5, 7]); /// ``` #[cfg_attr(feature = "inline-more", inline)] - pub fn drain_filter(&mut self, f: F) -> DrainFilter<'_, T, F, A> + pub fn extract_if(&mut self, f: F) -> ExtractIf<'_, T, F, A> where F: FnMut(&T) -> bool, { - DrainFilter { + ExtractIf { f, - inner: DrainFilterInner { + inner: ExtractIfInner { iter: unsafe { self.map.table.iter() }, table: &mut self.map.table, }, @@ -1221,8 +1221,10 @@ None => None, } } +} - /// Returns a mutable reference to the [`RawTable`] used underneath [`HashSet`]. +impl HashSet { + /// Returns a reference to the [`RawTable`] used underneath [`HashSet`]. /// This function is only available if the `raw` feature of the crate is enabled. /// /// # Note @@ -1238,9 +1240,29 @@ /// [undefined behavior]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html #[cfg(feature = "raw")] #[cfg_attr(feature = "inline-more", inline)] - pub fn raw_table(&mut self) -> &mut RawTable<(T, ()), A> { + pub fn raw_table(&self) -> &RawTable<(T, ()), A> { self.map.raw_table() } + + /// Returns a mutable reference to the [`RawTable`] used underneath [`HashSet`]. + /// This function is only available if the `raw` feature of the crate is enabled. + /// + /// # Note + /// + /// Calling this function is safe, but using the raw hash table API may require + /// unsafe functions or blocks. + /// + /// `RawTable` API gives the lowest level of control under the set that can be useful + /// for extending the HashSet's API, but may lead to *[undefined behavior]*. + /// + /// [`HashSet`]: struct.HashSet.html + /// [`RawTable`]: crate::raw::RawTable + /// [undefined behavior]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html + #[cfg(feature = "raw")] + #[cfg_attr(feature = "inline-more", inline)] + pub fn raw_table_mut(&mut self) -> &mut RawTable<(T, ()), A> { + self.map.raw_table_mut() + } } impl PartialEq for HashSet @@ -1547,17 +1569,18 @@ /// A draining iterator over entries of a `HashSet` which don't satisfy the predicate `f`. /// -/// This `struct` is created by the [`drain_filter`] method on [`HashSet`]. See its +/// This `struct` is created by the [`extract_if`] method on [`HashSet`]. See its /// documentation for more. /// -/// [`drain_filter`]: struct.HashSet.html#method.drain_filter +/// [`extract_if`]: struct.HashSet.html#method.extract_if /// [`HashSet`]: struct.HashSet.html -pub struct DrainFilter<'a, K, F, A: Allocator + Clone = Global> +#[must_use = "Iterators are lazy unless consumed"] +pub struct ExtractIf<'a, K, F, A: Allocator + Clone = Global> where F: FnMut(&K) -> bool, { f: F, - inner: DrainFilterInner<'a, K, (), A>, + inner: ExtractIfInner<'a, K, (), A>, } /// A lazy iterator producing elements in the intersection of `HashSet`s. @@ -1748,21 +1771,7 @@ } } -impl<'a, K, F, A: Allocator + Clone> Drop for DrainFilter<'a, K, F, A> -where - F: FnMut(&K) -> bool, -{ - #[cfg_attr(feature = "inline-more", inline)] - fn drop(&mut self) { - while let Some(item) = self.next() { - let guard = ConsumeAllOnDrop(self); - drop(item); - mem::forget(guard); - } - } -} - -impl Iterator for DrainFilter<'_, K, F, A> +impl Iterator for ExtractIf<'_, K, F, A> where F: FnMut(&K) -> bool, { @@ -1781,10 +1790,7 @@ } } -impl FusedIterator for DrainFilter<'_, K, F, A> where - F: FnMut(&K) -> bool -{ -} +impl FusedIterator for ExtractIf<'_, K, F, A> where F: FnMut(&K) -> bool {} impl Clone for Intersection<'_, T, S, A> { #[cfg_attr(feature = "inline-more", inline)] @@ -2712,10 +2718,10 @@ set.insert(1); set.insert(2); - let set_str = format!("{:?}", set); + let set_str = format!("{set:?}"); assert!(set_str == "{1, 2}" || set_str == "{2, 1}"); - assert_eq!(format!("{:?}", empty), "{}"); + assert_eq!(format!("{empty:?}"), "{}"); } #[test] @@ -2790,6 +2796,7 @@ } #[test] + #[allow(clippy::needless_borrow)] fn test_extend_ref() { let mut a = HashSet::new(); a.insert(1); @@ -2829,10 +2836,10 @@ } #[test] - fn test_drain_filter() { + fn test_extract_if() { { let mut set: HashSet = (0..8).collect(); - let drained = set.drain_filter(|&k| k % 2 == 0); + let drained = set.extract_if(|&k| k % 2 == 0); let mut out = drained.collect::>(); out.sort_unstable(); assert_eq!(vec![0, 2, 4, 6], out); @@ -2840,7 +2847,7 @@ } { let mut set: HashSet = (0..8).collect(); - drop(set.drain_filter(|&k| k % 2 == 0)); + set.extract_if(|&k| k % 2 == 0).for_each(drop); assert_eq!(set.len(), 4, "Removes non-matching items on drop"); } } @@ -2886,4 +2893,11 @@ set.insert(i); } } + + #[test] + fn collect() { + // At the time of writing, this hits the ZST case in from_base_index + // (and without the `map`, it does not). + let mut _set: HashSet<_> = (0..3).map(|_| ()).collect(); + } } diff -Nru temporalio-1.3.0/vendor/hashbrown/tests/rayon.rs temporalio-1.3.0/vendor/hashbrown/tests/rayon.rs --- temporalio-1.3.0/vendor/hashbrown/tests/rayon.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/tests/rayon.rs 2023-10-30 19:40:00.000000000 +0000 @@ -356,7 +356,9 @@ let vec_seq = SET_EMPTY.clone().into_iter().collect::>(); let vec_par = SET_EMPTY.clone().into_par_iter().collect::>(); - assert_eq3!(vec_seq, vec_par, []); + // Work around type inference failure introduced by rend dev-dependency. + let empty: [char; 0] = []; + assert_eq3!(vec_seq, vec_par, empty); } #[test] diff -Nru temporalio-1.3.0/vendor/hashbrown/tests/set.rs temporalio-1.3.0/vendor/hashbrown/tests/set.rs --- temporalio-1.3.0/vendor/hashbrown/tests/set.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/hashbrown/tests/set.rs 2023-10-30 19:40:00.000000000 +0000 @@ -27,7 +27,7 @@ assert_eq!(m.insert(x.clone()), true); } for (i, x) in tx.iter().enumerate() { - println!("removing {} {:?}", i, x); + println!("removing {i} {x:?}"); assert_eq!(m.remove(x), true); } } diff -Nru temporalio-1.3.0/vendor/httpdate/.cargo-checksum.json temporalio-1.3.0/vendor/httpdate/.cargo-checksum.json --- temporalio-1.3.0/vendor/httpdate/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/httpdate/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"214f35d88fe24ad0bce0c89aa14912a083e7a3bd496cd6c39c915931ee32674f","LICENSE-APACHE":"4d10fe5f3aa176b05b229a248866bad70b834c173f1252a814ff4748d8a13837","LICENSE-MIT":"934887691e05d69d7c86ad3f2c360980fa30c15b035e351f3c9865e99da4debc","README.md":"26318a99a935b392b4fc7527e2376ee67e6b7bb75558882173d25c4408ce9273","benches/benchmarks.rs":"13f1208dfb86e3c02dcd67a4c08c2bae300c0a153de5df437eac4a136579ec23","src/date.rs":"bb1afb1189a9da7f8246f5fd4594d4b29c27bf8da3642fddd9bf54b7ce0b1bd8","src/lib.rs":"83e73452762adf92f4ab476276d6ad72bce9142ffbf730bd0c47549a8dff2699"},"package":"c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"} \ No newline at end of file +{"files":{"Cargo.toml":"d1adbc974f706b302bc844ce7b6d6323d30a1689b9e3bf53ab78ba0bb09a9ed9","LICENSE-APACHE":"4d10fe5f3aa176b05b229a248866bad70b834c173f1252a814ff4748d8a13837","LICENSE-MIT":"934887691e05d69d7c86ad3f2c360980fa30c15b035e351f3c9865e99da4debc","README.md":"276cab7dac6cc74706b2aec34e649ef09c5b0149dbf15329020781161bb13673","benches/benchmarks.rs":"13f1208dfb86e3c02dcd67a4c08c2bae300c0a153de5df437eac4a136579ec23","src/date.rs":"87e7de1394f6b0d37128bfbf5943e256c886c35ed3f9078d15a08309c2206c69","src/lib.rs":"1c5b99558a8b2fec28d003b58a198cb2aebd232f0a2d162906524c5e6ead162e"},"package":"df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/httpdate/Cargo.toml temporalio-1.3.0/vendor/httpdate/Cargo.toml --- temporalio-1.3.0/vendor/httpdate/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/httpdate/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,18 +10,26 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" +edition = "2021" +rust-version = "1.56" name = "httpdate" -version = "1.0.2" +version = "1.0.3" authors = ["Pyfisch "] description = "HTTP date parsing and formatting" readme = "README.md" -keywords = ["http", "date", "time", "simple", "timestamp"] -license = "MIT/Apache-2.0" +keywords = [ + "http", + "date", + "time", + "simple", + "timestamp", +] +license = "MIT OR Apache-2.0" repository = "https://github.com/pyfisch/httpdate" [[bench]] name = "benchmarks" harness = false + [dev-dependencies.criterion] -version = "0.3.5" +version = "0.5" diff -Nru temporalio-1.3.0/vendor/httpdate/README.md temporalio-1.3.0/vendor/httpdate/README.md --- temporalio-1.3.0/vendor/httpdate/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/httpdate/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ # Date and time utils for HTTP. -[![Build Status](https://travis-ci.org/pyfisch/httpdate.svg?branch=master)](https://travis-ci.org/pyfisch/httpdate) +[![Build Status](https://github.com/pyfisch/httpdate/actions/workflows/ci.yml/badge.svg)](https://github.com/pyfisch/httpdate/actions/workflows/ci.yml) [![Crates.io](https://img.shields.io/crates/v/httpdate.svg)](https://crates.io/crates/httpdate) [![Documentation](https://docs.rs/httpdate/badge.svg)](https://docs.rs/httpdate) @@ -18,7 +18,7 @@ In addition it exposes the `HttpDate` type that can be used to parse and format timestamps. Convert a sytem time to `HttpDate` and vice versa. -The `HttpType` (8 bytes) is smaller than `SystemTime` (16 bytes) and +The `HttpDate` (8 bytes) is smaller than `SystemTime` (16 bytes) and using the display impl avoids a temporary allocation. Read the [blog post](https://pyfisch.org/blog/http-datetime-handling/) to learn diff -Nru temporalio-1.3.0/vendor/httpdate/src/date.rs temporalio-1.3.0/vendor/httpdate/src/date.rs --- temporalio-1.3.0/vendor/httpdate/src/date.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/httpdate/src/date.rs 2023-10-30 19:40:00.000000000 +0000 @@ -209,8 +209,8 @@ buf[0] = wday[0]; buf[1] = wday[1]; buf[2] = wday[2]; - buf[5] = b'0' + (self.day / 10) as u8; - buf[6] = b'0' + (self.day % 10) as u8; + buf[5] = b'0' + (self.day / 10); + buf[6] = b'0' + (self.day % 10); buf[8] = mon[0]; buf[9] = mon[1]; buf[10] = mon[2]; @@ -218,12 +218,12 @@ buf[13] = b'0' + (self.year / 100 % 10) as u8; buf[14] = b'0' + (self.year / 10 % 10) as u8; buf[15] = b'0' + (self.year % 10) as u8; - buf[17] = b'0' + (self.hour / 10) as u8; - buf[18] = b'0' + (self.hour % 10) as u8; - buf[20] = b'0' + (self.min / 10) as u8; - buf[21] = b'0' + (self.min % 10) as u8; - buf[23] = b'0' + (self.sec / 10) as u8; - buf[24] = b'0' + (self.sec % 10) as u8; + buf[17] = b'0' + (self.hour / 10); + buf[18] = b'0' + (self.hour % 10); + buf[20] = b'0' + (self.min / 10); + buf[21] = b'0' + (self.min % 10); + buf[23] = b'0' + (self.sec / 10); + buf[24] = b'0' + (self.sec % 10); f.write_str(std::str::from_utf8(&buf[..]).unwrap()) } } diff -Nru temporalio-1.3.0/vendor/httpdate/src/lib.rs temporalio-1.3.0/vendor/httpdate/src/lib.rs --- temporalio-1.3.0/vendor/httpdate/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/httpdate/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -14,7 +14,7 @@ //! //! In addition it exposes the `HttpDate` type that can be used to parse //! and format timestamps. Convert a sytem time to `HttpDate` and vice versa. -//! The `HttpType` (8 bytes) is smaller than `SystemTime` (16 bytes) and +//! The `HttpDate` (8 bytes) is smaller than `SystemTime` (16 bytes) and //! using the display impl avoids a temporary allocation. #![forbid(unsafe_code)] diff -Nru temporalio-1.3.0/vendor/indexmap/build.rs temporalio-1.3.0/vendor/indexmap/build.rs --- temporalio-1.3.0/vendor/indexmap/build.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/build.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -fn main() { - // If "std" is explicitly requested, don't bother probing the target for it. - match std::env::var_os("CARGO_FEATURE_STD") { - Some(_) => autocfg::emit("has_std"), - None => autocfg::new().emit_sysroot_crate("std"), - } - autocfg::rerun_path("build.rs"); -} diff -Nru temporalio-1.3.0/vendor/indexmap/.cargo-checksum.json temporalio-1.3.0/vendor/indexmap/.cargo-checksum.json --- temporalio-1.3.0/vendor/indexmap/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"1290d383adfdcd24f158a4619afb5547d633c83c0a1ab3b5c1ee0dabe4fb1f36","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"ecc269ef87fd38a1d98e30bfac9ba964a9dbd9315c3770fed98d4d7cb5882055","README.md":"f8b02aa7c20fc0f5bc13de9e9e78899ec8cdbc16c2db880a1d0bc14c25b07542","RELEASES.md":"85d9d9bc78e94df7ce90300bb94099b9ab2696d1b3f6b815c22761522878e679","benches/bench.rs":"3b2900abbc9e8a60af78b0395222ee75e86bc68519a0f38477387d1572eed397","benches/faststring.rs":"5fdd6cdb19d0557ed58f241e809a240cf8939d9e5b87a72d5f127f81ab98380b","build.rs":"558b4d0b9e9b3a44f7e1a2b69f7a7567ea721cd45cb54f4e458e850bf702f35c","src/arbitrary.rs":"bb8bda10f686abe57eef1446d3fc3fc6fb251f95629b28c20e620a4838c43db8","src/equivalent.rs":"2e6ae24ef09a09b917f4e2b0f6288f901878e42f5080f61b1bd1afdcc90aba87","src/lib.rs":"ea2cbe4f6cc2c4a75f42c9fc936503e6bee0f136c60f6811a2a9907ed8886443","src/macros.rs":"80c22f630e7f81e6fa663ca4c9e50cf5f332c8905d72d1338bd16f24eb353c2a","src/map.rs":"2e9cbfa240865cfd6b6b972bdbdb39283e6302dd2d0d72b3c2bfce4414bf5729","src/map/core.rs":"8422cd774c5db7d83cdeb0c5836c10f29caa1bee8d95b0d674b01b32e7ce80d8","src/map/core/raw.rs":"4e5fac4fecccc352268351d8b1f82b345067b5c029bba7e6ab88e8f8bc799c6a","src/mutable_keys.rs":"a919065b59000286eb11c7d46f6896bf0a1d484c9dac5e61d80bb8990c9fbedb","src/rayon/map.rs":"1a508c7c95c5d56113b851f7ce140d62ad541f1c6129352a7ec62d5bea7af4a1","src/rayon/mod.rs":"019e9379ccab57a299ab5b5a2c0efc7561b77a715a5afe8f797c7e8330c6206c","src/rayon/set.rs":"ba00e88e90fb7ab803589f99f24b595d60309e541aae3d01fdde21bff3840194","src/rustc.rs":"fe7a348c5a10a66880cb6c737593fe79d3b6de40f44ba0d7b89204aa95e14a3a","src/serde.rs":"d45ec8fb9c02594ca6f2e9b20764778b2b4193a24a52f1e233160a33efc6e683","src/serde_seq.rs":"c54a52fa607b6ccddda1e76e829778ca304c49b5f434edc5e582a5386c35d662","src/set.rs":"0a57affb623fa6b28df18cc14841e4f076cbd1da5c809635d202f865640af1ee","src/util.rs":"ab712bce71b54cf2763e6010e64bb5944d1d59ce15e2f2beffa7ceed204d6a68","tests/equivalent_trait.rs":"efe9393069e3cfc893d2c9c0343679979578e437fdb98a10baefeced027ba310","tests/macros_full_path.rs":"c33c86d7341581fdd08e2e6375a4afca507fa603540c54a3b9e51c4cd011cd71","tests/quick.rs":"1addbc6cbcb1aae5b8bde0fb0e18197d947e8f13244e4ae7ebf97bdda00eafea","tests/tests.rs":"f6dbeeb0e2950402b0e66ac52bf74c9e4197d3c5d9c0dde64a7998a2ef74d327"},"package":"bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"} \ No newline at end of file +{"files":{"Cargo.toml":"22de53b350fe2ece033469dc50c449aed2d48b2e51bd95cd289e5a64281ad941","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"ecc269ef87fd38a1d98e30bfac9ba964a9dbd9315c3770fed98d4d7cb5882055","README.md":"8a6d3b3ddc2b028e309885d80152bea5434dd61c2dc9a64a68daf161fe00233b","RELEASES.md":"6caa90a493de65e6764415168586c647749ad49341f2de807ba70f212f8989b5","benches/bench.rs":"3b2900abbc9e8a60af78b0395222ee75e86bc68519a0f38477387d1572eed397","benches/faststring.rs":"5fdd6cdb19d0557ed58f241e809a240cf8939d9e5b87a72d5f127f81ab98380b","src/arbitrary.rs":"068713b1e8e762dbe9e4d19d555e77c17e59408335a40f4777d6100340605655","src/lib.rs":"f9d5ee25446660e93cbc6de314a8699c1f44da2a56ec3e1b432f61389f77af74","src/macros.rs":"32ab59dfb19713598769252e5fbcef31744dd0399bc839375c4edb5f00701b0d","src/map.rs":"ae2696a0c9746c6694db72d46e34b24d5f91e28d16d024be4d507b56e778ea56","src/map/core.rs":"55ecc1f83ac0b78d687008a057f912be2cfad270af29d1c880dde7b8ad269350","src/map/core/raw.rs":"b0aaa4cf58d789acd056c1d4cca914cd945e3f1f097479298e4432b909ccf9e4","src/map/iter.rs":"23278a1787d08dcbc30885c0653369d82a695a7b8f1084d7709fbf903e53a776","src/map/serde_seq.rs":"eff1ccbefe20c8f4338afa92732473e28fd0b752cb2bc153600ee5387d484627","src/map/slice.rs":"e264c31592ce382830281605846663ecc1694074d5b57b862de9fd090e022fc9","src/map/tests.rs":"7a192e8330a1df604d6a151e854d1d0638c068a8418f8922e92a65868ae5d569","src/mutable_keys.rs":"2bdd739bde1dd7f81c82e90595b877fbdb1cd9f963b180fcc819128bb1c750a7","src/rayon/map.rs":"22a30fa68437f69c24752c8ed17be6e084d02b0c12730e48e238a4e92f208b55","src/rayon/mod.rs":"019e9379ccab57a299ab5b5a2c0efc7561b77a715a5afe8f797c7e8330c6206c","src/rayon/set.rs":"cea2517db405ee64306e24b571ed773e129eae43ecfc866e93e365c118edc0ed","src/rustc.rs":"fe7a348c5a10a66880cb6c737593fe79d3b6de40f44ba0d7b89204aa95e14a3a","src/serde.rs":"91bbf14e3afbcf518aeb7f8a9b65011d0ede2f88d12857dfddda451f35574281","src/set.rs":"e78aa42ea1719f0398c83edd04512b1d7a699eab0578e1f6327a9eec094520ca","src/set/iter.rs":"9b90c736185889fca8b0a461293da4a1a1e50d9db539bd5b9f72254bee461a3e","src/set/slice.rs":"404cf6c749e220d2b29790180edb66b67056a5370f39955175b8f22d01fd21c1","src/set/tests.rs":"81bbb18834603479f26af1a1a6b676fe5ec949e23b2a358fcc868acedc886fa4","src/util.rs":"dbd57cfdac2a72db8c5ce83bf288bcaf33b5ae59adddcd088792a624c4c0e909","tests/equivalent_trait.rs":"efe9393069e3cfc893d2c9c0343679979578e437fdb98a10baefeced027ba310","tests/macros_full_path.rs":"c33c86d7341581fdd08e2e6375a4afca507fa603540c54a3b9e51c4cd011cd71","tests/quick.rs":"f34ae9ce8aa51d9338595c299a2088ab56dbb5c04786050009a2fa22a6bbfa32","tests/tests.rs":"f6dbeeb0e2950402b0e66ac52bf74c9e4197d3c5d9c0dde64a7998a2ef74d327"},"package":"d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/indexmap/Cargo.toml temporalio-1.3.0/vendor/indexmap/Cargo.toml --- temporalio-1.3.0/vendor/indexmap/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,9 +11,9 @@ [package] edition = "2021" -rust-version = "1.56" +rust-version = "1.64" name = "indexmap" -version = "1.9.3" +version = "2.0.0" description = "A hash table with consistent order and fast iteration." documentation = "https://docs.rs/indexmap/" readme = "README.md" @@ -28,17 +28,21 @@ license = "Apache-2.0 OR MIT" repository = "https://github.com/bluss/indexmap" -[package.metadata.release] -no-dev-version = true -tag-name = "{{version}}" - [package.metadata.docs.rs] features = [ "arbitrary", "quickcheck", - "serde-1", + "serde", "rayon", ] +rustdoc-args = [ + "--cfg", + "docsrs", +] + +[package.metadata.release] +no-dev-version = true +tag-name = "{{version}}" [profile.bench] debug = true @@ -51,8 +55,12 @@ optional = true default-features = false +[dependencies.equivalent] +version = "1.0" +default-features = false + [dependencies.hashbrown] -version = "0.12" +version = "0.14" features = ["raw"] default-features = false @@ -62,7 +70,7 @@ default-features = false [dependencies.rayon] -version = "1.4.1" +version = "1.5.3" optional = true [dependencies.rustc-rayon] @@ -98,11 +106,7 @@ [dev-dependencies.serde_derive] version = "1.0" -[build-dependencies.autocfg] -version = "1" - [features] -serde-1 = ["serde"] +default = ["std"] std = [] test_debug = [] -test_low_transition_point = [] diff -Nru temporalio-1.3.0/vendor/indexmap/README.md temporalio-1.3.0/vendor/indexmap/README.md --- temporalio-1.3.0/vendor/indexmap/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -3,7 +3,7 @@ [![build status](https://github.com/bluss/indexmap/workflows/Continuous%20integration/badge.svg?branch=master)](https://github.com/bluss/indexmap/actions) [![crates.io](https://img.shields.io/crates/v/indexmap.svg)](https://crates.io/crates/indexmap) [![docs](https://docs.rs/indexmap/badge.svg)](https://docs.rs/indexmap) -[![rustc](https://img.shields.io/badge/rust-1.56%2B-orange.svg)](https://img.shields.io/badge/rust-1.56%2B-orange.svg) +[![rustc](https://img.shields.io/badge/rust-1.64%2B-orange.svg)](https://img.shields.io/badge/rust-1.64%2B-orange.svg) A pure-Rust hash table which preserves (in a limited sense) insertion order. diff -Nru temporalio-1.3.0/vendor/indexmap/RELEASES.md temporalio-1.3.0/vendor/indexmap/RELEASES.md --- temporalio-1.3.0/vendor/indexmap/RELEASES.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/RELEASES.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,39 @@ +- 2.0.0 + + - **MSRV**: Rust 1.64.0 or later is now required. + + - The `"std"` feature is no longer auto-detected. It is included in the + default feature set, or else can be enabled like any other Cargo feature. + + - The `"serde-1"` feature has been removed, leaving just the optional + `"serde"` dependency to be enabled like a feature itself. + + - `IndexMap::get_index_mut` now returns `Option<(&K, &mut V)>`, changing + the key part from `&mut K` to `&K`. There is also a new alternative + `MutableKeys::get_index_mut2` to access the former behavior. + + - The new `map::Slice` and `set::Slice` offer a linear view of maps + and sets, behaving a lot like normal `[(K, V)]` and `[T]` slices. Notably, + comparison traits like `Eq` only consider items in order, rather than hash + lookups, and slices even implement `Hash`. + + - `IndexMap` and `IndexSet` now have `sort_by_cached_key` and + `par_sort_by_cached_key` methods which perform stable sorts in place + using a key extraction function. + + - `IndexMap` and `IndexSet` now have `reserve_exact`, `try_reserve`, and + `try_reserve_exact` methods that correspond to the same methods on `Vec`. + However, exactness only applies to the direct capacity for items, while the + raw hash table still follows its own rules for capacity and load factor. + + - The `Equivalent` trait is now re-exported from the `equivalent` crate, + intended as a common base to allow types to work with multiple map types. + + - The `hashbrown` dependency has been updated to version 0.14. + + - The `serde_seq` module has been moved from the crate root to below the + `map` module. + - 1.9.3 - Bump the `rustc-rayon` dependency, for compiler use only. diff -Nru temporalio-1.3.0/vendor/indexmap/src/arbitrary.rs temporalio-1.3.0/vendor/indexmap/src/arbitrary.rs --- temporalio-1.3.0/vendor/indexmap/src/arbitrary.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/arbitrary.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,5 @@ #[cfg(feature = "arbitrary")] +#[cfg_attr(docsrs, doc(cfg(feature = "arbitrary")))] mod impl_arbitrary { use crate::{IndexMap, IndexSet}; use arbitrary::{Arbitrary, Result, Unstructured}; @@ -35,6 +36,7 @@ } #[cfg(feature = "quickcheck")] +#[cfg_attr(docsrs, doc(cfg(feature = "quickcheck")))] mod impl_quickcheck { use crate::{IndexMap, IndexSet}; use alloc::boxed::Box; diff -Nru temporalio-1.3.0/vendor/indexmap/src/equivalent.rs temporalio-1.3.0/vendor/indexmap/src/equivalent.rs --- temporalio-1.3.0/vendor/indexmap/src/equivalent.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/equivalent.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -use core::borrow::Borrow; - -/// Key equivalence trait. -/// -/// This trait allows hash table lookup to be customized. -/// It has one blanket implementation that uses the regular `Borrow` solution, -/// just like `HashMap` and `BTreeMap` do, so that you can pass `&str` to lookup -/// into a map with `String` keys and so on. -/// -/// # Contract -/// -/// The implementor **must** hash like `K`, if it is hashable. -pub trait Equivalent { - /// Compare self to `key` and return `true` if they are equal. - fn equivalent(&self, key: &K) -> bool; -} - -impl Equivalent for Q -where - Q: Eq, - K: Borrow, -{ - #[inline] - fn equivalent(&self, key: &K) -> bool { - *self == *key.borrow() - } -} diff -Nru temporalio-1.3.0/vendor/indexmap/src/lib.rs temporalio-1.3.0/vendor/indexmap/src/lib.rs --- temporalio-1.3.0/vendor/indexmap/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -14,7 +14,7 @@ //! [`IndexSet`]: set/struct.IndexSet.html //! //! -//! ### Feature Highlights +//! ### Highlights //! //! [`IndexMap`] and [`IndexSet`] are drop-in compatible with the std `HashMap` //! and `HashSet`, but they also have some features of note: @@ -26,6 +26,34 @@ //! - The [`MutableKeys`][map::MutableKeys] trait, which gives opt-in mutable //! access to hash map keys. //! +//! ### Feature Flags +//! +//! To reduce the amount of compiled code in the crate by default, certain +//! features are gated behind [feature flags]. These allow you to opt in to (or +//! out of) functionality. Below is a list of the features available in this +//! crate. +//! +//! * `std`: Enables features which require the Rust standard library. For more +//! information see the section on [`no_std`]. +//! * `rayon`: Enables parallel iteration and other parallel methods. +//! * `serde`: Adds implementations for [`Serialize`] and [`Deserialize`] +//! to [`IndexMap`] and [`IndexSet`]. Alternative implementations for +//! (de)serializing [`IndexMap`] as an ordered sequence are available in the +//! [`map::serde_seq`] module. +//! * `arbitrary`: Adds implementations for the [`arbitrary::Arbitrary`] trait +//! to [`IndexMap`] and [`IndexSet`]. +//! * `quickcheck`: Adds implementations for the [`quickcheck::Arbitrary`] trait +//! to [`IndexMap`] and [`IndexSet`]. +//! +//! _Note: only the `std` feature is enabled by default._ +//! +//! [feature flags]: https://doc.rust-lang.org/cargo/reference/manifest.html#the-features-section +//! [`no_std`]: #no-standard-library-targets +//! [`Serialize`]: `::serde::Serialize` +//! [`Deserialize`]: `::serde::Deserialize` +//! [`arbitrary::Arbitrary`]: `::arbitrary::Arbitrary` +//! [`quickcheck::Arbitrary`]: `::quickcheck::Arbitrary` +//! //! ### Alternate Hashers //! //! [`IndexMap`] and [`IndexSet`] have a default hasher type `S = RandomState`, @@ -53,21 +81,20 @@ //! //! ### Rust Version //! -//! This version of indexmap requires Rust 1.56 or later. +//! This version of indexmap requires Rust 1.64 or later. //! -//! The indexmap 1.x release series will use a carefully considered version -//! upgrade policy, where in a later 1.x version, we will raise the minimum +//! The indexmap 2.x release series will use a carefully considered version +//! upgrade policy, where in a later 2.x version, we will raise the minimum //! required Rust version. //! //! ## No Standard Library Targets //! -//! This crate supports being built without `std`, requiring -//! `alloc` instead. This is enabled automatically when it is detected that -//! `std` is not available. There is no crate feature to enable/disable to -//! trigger this. It can be tested by building for a std-less target. +//! This crate supports being built without `std`, requiring `alloc` instead. +//! This is chosen by disabling the default "std" cargo feature, by adding +//! `default-features = false` to your dependency specification. //! //! - Creating maps and sets using [`new`][IndexMap::new] and -//! [`with_capacity`][IndexMap::with_capacity] is unavailable without `std`. +//! [`with_capacity`][IndexMap::with_capacity] is unavailable without `std`. //! Use methods [`IndexMap::default`][def], //! [`with_hasher`][IndexMap::with_hasher], //! [`with_capacity_and_hasher`][IndexMap::with_capacity_and_hasher] instead. @@ -77,9 +104,11 @@ //! //! [def]: map/struct.IndexMap.html#impl-Default +#![cfg_attr(docsrs, feature(doc_cfg))] + extern crate alloc; -#[cfg(has_std)] +#[cfg(feature = "std")] #[macro_use] extern crate std; @@ -88,12 +117,10 @@ mod arbitrary; #[macro_use] mod macros; -mod equivalent; mod mutable_keys; #[cfg(feature = "serde")] +#[cfg_attr(docsrs, doc(cfg(feature = "serde")))] mod serde; -#[cfg(feature = "serde")] -pub mod serde_seq; mod util; pub mod map; @@ -102,14 +129,15 @@ // Placed after `map` and `set` so new `rayon` methods on the types // are documented after the "normal" methods. #[cfg(feature = "rayon")] +#[cfg_attr(docsrs, doc(cfg(feature = "rayon")))] mod rayon; #[cfg(feature = "rustc-rayon")] mod rustc; -pub use crate::equivalent::Equivalent; pub use crate::map::IndexMap; pub use crate::set::IndexSet; +pub use equivalent::Equivalent; // shared private items @@ -192,3 +220,59 @@ where F: FnOnce(&mut [Self::Entry]); } + +/// The error type for `try_reserve` methods. +#[derive(Clone, PartialEq, Eq, Debug)] +pub struct TryReserveError { + kind: TryReserveErrorKind, +} + +#[derive(Clone, PartialEq, Eq, Debug)] +enum TryReserveErrorKind { + // The standard library's kind is currently opaque to us, otherwise we could unify this. + Std(alloc::collections::TryReserveError), + CapacityOverflow, + AllocError { layout: alloc::alloc::Layout }, +} + +// These are not `From` so we don't expose them in our public API. +impl TryReserveError { + fn from_alloc(error: alloc::collections::TryReserveError) -> Self { + Self { + kind: TryReserveErrorKind::Std(error), + } + } + + fn from_hashbrown(error: hashbrown::TryReserveError) -> Self { + Self { + kind: match error { + hashbrown::TryReserveError::CapacityOverflow => { + TryReserveErrorKind::CapacityOverflow + } + hashbrown::TryReserveError::AllocError { layout } => { + TryReserveErrorKind::AllocError { layout } + } + }, + } + } +} + +impl core::fmt::Display for TryReserveError { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let reason = match &self.kind { + TryReserveErrorKind::Std(e) => return core::fmt::Display::fmt(e, f), + TryReserveErrorKind::CapacityOverflow => { + " because the computed capacity exceeded the collection's maximum" + } + TryReserveErrorKind::AllocError { .. } => { + " because the memory allocator returned an error" + } + }; + f.write_str("memory allocation failed")?; + f.write_str(reason) + } +} + +#[cfg(feature = "std")] +#[cfg_attr(docsrs, doc(cfg(feature = "std")))] +impl std::error::Error for TryReserveError {} diff -Nru temporalio-1.3.0/vendor/indexmap/src/macros.rs temporalio-1.3.0/vendor/indexmap/src/macros.rs --- temporalio-1.3.0/vendor/indexmap/src/macros.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/macros.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,5 @@ -#[cfg(has_std)] +#[cfg(feature = "std")] +#[cfg_attr(docsrs, doc(cfg(feature = "std")))] #[macro_export] /// Create an `IndexMap` from a list of key-value pairs /// @@ -19,23 +20,23 @@ /// assert_eq!(map.keys().next(), Some(&"a")); /// ``` macro_rules! indexmap { - (@single $($x:tt)*) => (()); - (@count $($rest:expr),*) => (<[()]>::len(&[$($crate::indexmap!(@single $rest)),*])); - ($($key:expr => $value:expr,)+) => { $crate::indexmap!($($key => $value),+) }; ($($key:expr => $value:expr),*) => { { - let _cap = $crate::indexmap!(@count $($key),*); - let mut _map = $crate::IndexMap::with_capacity(_cap); + // Note: `stringify!($key)` is just here to consume the repetition, + // but we throw away that string literal during constant evaluation. + const CAP: usize = <[()]>::len(&[$({ stringify!($key); }),*]); + let mut map = $crate::IndexMap::with_capacity(CAP); $( - _map.insert($key, $value); + map.insert($key, $value); )* - _map + map } }; } -#[cfg(has_std)] +#[cfg(feature = "std")] +#[cfg_attr(docsrs, doc(cfg(feature = "std")))] #[macro_export] /// Create an `IndexSet` from a list of values /// @@ -56,18 +57,17 @@ /// assert_eq!(set.iter().next(), Some(&"a")); /// ``` macro_rules! indexset { - (@single $($x:tt)*) => (()); - (@count $($rest:expr),*) => (<[()]>::len(&[$($crate::indexset!(@single $rest)),*])); - ($($value:expr,)+) => { $crate::indexset!($($value),+) }; ($($value:expr),*) => { { - let _cap = $crate::indexset!(@count $($value),*); - let mut _set = $crate::IndexSet::with_capacity(_cap); + // Note: `stringify!($value)` is just here to consume the repetition, + // but we throw away that string literal during constant evaluation. + const CAP: usize = <[()]>::len(&[$({ stringify!($value); }),*]); + let mut set = $crate::IndexSet::with_capacity(CAP); $( - _set.insert($value); + set.insert($value); )* - _set + set } }; } diff -Nru temporalio-1.3.0/vendor/indexmap/src/map/core/raw.rs temporalio-1.3.0/vendor/indexmap/src/map/core/raw.rs --- temporalio-1.3.0/vendor/indexmap/src/map/core/raw.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/map/core/raw.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,7 @@ //! This module encapsulates the `unsafe` access to `hashbrown::raw::RawTable`, //! mostly in dealing with its bucket "pointers". -use super::{equivalent, Bucket, Entry, HashValue, IndexMapCore, VacantEntry}; +use super::{equivalent, get_hash, Bucket, Entry, HashValue, IndexMapCore, VacantEntry}; use core::fmt; use core::mem::replace; use hashbrown::raw::RawTable; @@ -26,7 +26,7 @@ impl fmt::Debug for DebugIndices<'_> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { // SAFETY: we're not letting any of the buckets escape this function - let indices = unsafe { self.0.iter().map(|raw_bucket| raw_bucket.read()) }; + let indices = unsafe { self.0.iter().map(|raw_bucket| *raw_bucket.as_ref()) }; f.debug_list().entries(indices).finish() } } @@ -38,16 +38,42 @@ unsafe { let offset = end - start; for bucket in self.indices.iter() { - let i = bucket.read(); - if i >= end { - bucket.write(i - offset); - } else if i >= start { + let i = bucket.as_mut(); + if *i >= end { + *i -= offset; + } else if *i >= start { self.indices.erase(bucket); } } } } + /// Search for a key in the table and return `Ok(entry_index)` if found. + /// Otherwise, insert the key and return `Err(new_index)`. + /// + /// Note that hashbrown may resize the table to reserve space for insertion, + /// even before checking if it's already present, so this is somewhat biased + /// towards new items. + pub(crate) fn find_or_insert(&mut self, hash: HashValue, key: &K) -> Result + where + K: Eq, + { + let hash = hash.get(); + let eq = equivalent(key, &self.entries); + let hasher = get_hash(&self.entries); + // SAFETY: We're not mutating between find and read/insert. + unsafe { + match self.indices.find_or_find_insert_slot(hash, eq, hasher) { + Ok(raw_bucket) => Ok(*raw_bucket.as_ref()), + Err(slot) => { + let index = self.indices.len(); + self.indices.insert_in_slot(hash, slot, index); + Err(index) + } + } + } + } + pub(crate) fn entry(&mut self, hash: HashValue, key: K) -> Entry<'_, K, V> where K: Eq, @@ -92,8 +118,8 @@ unsafe { let raw_bucket_a = self.find_index(a); let raw_bucket_b = self.find_index(b); - raw_bucket_a.write(b); - raw_bucket_b.write(a); + *raw_bucket_a.as_mut() = b; + *raw_bucket_b.as_mut() = a; } self.entries.swap(a, b); } @@ -151,7 +177,7 @@ #[inline] pub fn index(&self) -> usize { // SAFETY: we have &mut map keep keeping the bucket stable - unsafe { self.raw_bucket.read() } + unsafe { *self.raw_bucket.as_ref() } } /// Converts into a mutable reference to the entry's value in the map, @@ -171,7 +197,7 @@ pub fn swap_remove_entry(self) -> (K, V) { // SAFETY: This is safe because it can only happen once (self is consumed) // and map.indices have not been modified since entry construction - let index = unsafe { self.map.indices.remove(self.raw_bucket) }; + let (index, _slot) = unsafe { self.map.indices.remove(self.raw_bucket) }; self.map.swap_remove_finish(index) } @@ -185,7 +211,7 @@ pub fn shift_remove_entry(self) -> (K, V) { // SAFETY: This is safe because it can only happen once (self is consumed) // and map.indices have not been modified since entry construction - let index = unsafe { self.map.indices.remove(self.raw_bucket) }; + let (index, _slot) = unsafe { self.map.indices.remove(self.raw_bucket) }; self.map.shift_remove_finish(index) } } diff -Nru temporalio-1.3.0/vendor/indexmap/src/map/core.rs temporalio-1.3.0/vendor/indexmap/src/map/core.rs --- temporalio-1.3.0/vendor/indexmap/src/map/core.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/map/core.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,14 +12,13 @@ use hashbrown::raw::RawTable; use crate::vec::{Drain, Vec}; -use core::cmp; +use crate::TryReserveError; use core::fmt; -use core::mem::replace; +use core::mem; use core::ops::RangeBounds; -use crate::equivalent::Equivalent; use crate::util::simplify_range; -use crate::{Bucket, Entries, HashValue}; +use crate::{Bucket, Entries, Equivalent, HashValue}; /// Core of the map that does not depend on S pub(crate) struct IndexMapCore { @@ -62,18 +61,18 @@ V: Clone, { fn clone(&self) -> Self { - let indices = self.indices.clone(); - let mut entries = Vec::with_capacity(indices.capacity()); - entries.clone_from(&self.entries); - IndexMapCore { indices, entries } + let mut new = Self::new(); + new.clone_from(self); + new } fn clone_from(&mut self, other: &Self) { let hasher = get_hash(&other.entries); self.indices.clone_from_with_hasher(&other.indices, hasher); if self.entries.capacity() < other.entries.len() { - // If we must resize, match the indices capacity - self.reserve_entries(); + // If we must resize, match the indices capacity. + let additional = other.entries.len() - self.entries.len(); + self.reserve_entries(additional); } self.entries.clone_from(&other.entries); } @@ -120,6 +119,9 @@ } impl IndexMapCore { + /// The maximum capacity before the `entries` allocation would exceed `isize::MAX`. + const MAX_ENTRIES_CAPACITY: usize = (isize::MAX as usize) / mem::size_of::>(); + #[inline] pub(crate) const fn new() -> Self { IndexMapCore { @@ -143,7 +145,7 @@ #[inline] pub(crate) fn capacity(&self) -> usize { - cmp::min(self.indices.capacity(), self.entries.capacity()) + Ord::min(self.indices.capacity(), self.entries.capacity()) } pub(crate) fn clear(&mut self) { @@ -193,15 +195,67 @@ /// Reserve capacity for `additional` more key-value pairs. pub(crate) fn reserve(&mut self, additional: usize) { self.indices.reserve(additional, get_hash(&self.entries)); - self.reserve_entries(); + // Only grow entries if necessary, since we also round up capacity. + if additional > self.entries.capacity() - self.entries.len() { + self.reserve_entries(additional); + } } - /// Reserve entries capacity to match the indices - fn reserve_entries(&mut self) { - let additional = self.indices.capacity() - self.entries.len(); + /// Reserve entries capacity, rounded up to match the indices + fn reserve_entries(&mut self, additional: usize) { + // Use a soft-limit on the maximum capacity, but if the caller explicitly + // requested more, do it and let them have the resulting panic. + let new_capacity = Ord::min(self.indices.capacity(), Self::MAX_ENTRIES_CAPACITY); + let try_add = new_capacity - self.entries.len(); + if try_add > additional && self.entries.try_reserve_exact(try_add).is_ok() { + return; + } + self.entries.reserve_exact(additional); + } + + /// Reserve capacity for `additional` more key-value pairs, without over-allocating. + pub(crate) fn reserve_exact(&mut self, additional: usize) { + self.indices.reserve(additional, get_hash(&self.entries)); self.entries.reserve_exact(additional); } + /// Try to reserve capacity for `additional` more key-value pairs. + pub(crate) fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError> { + self.indices + .try_reserve(additional, get_hash(&self.entries)) + .map_err(TryReserveError::from_hashbrown)?; + // Only grow entries if necessary, since we also round up capacity. + if additional > self.entries.capacity() - self.entries.len() { + self.try_reserve_entries(additional) + } else { + Ok(()) + } + } + + /// Try to reserve entries capacity, rounded up to match the indices + fn try_reserve_entries(&mut self, additional: usize) -> Result<(), TryReserveError> { + // Use a soft-limit on the maximum capacity, but if the caller explicitly + // requested more, do it and let them have the resulting error. + let new_capacity = Ord::min(self.indices.capacity(), Self::MAX_ENTRIES_CAPACITY); + let try_add = new_capacity - self.entries.len(); + if try_add > additional && self.entries.try_reserve_exact(try_add).is_ok() { + return Ok(()); + } + self.entries + .try_reserve_exact(additional) + .map_err(TryReserveError::from_alloc) + } + + /// Try to reserve capacity for `additional` more key-value pairs, without over-allocating. + pub(crate) fn try_reserve_exact(&mut self, additional: usize) -> Result<(), TryReserveError> { + self.indices + .try_reserve(additional, get_hash(&self.entries)) + .map_err(TryReserveError::from_hashbrown)?; + self.entries + .try_reserve_exact(additional) + .map_err(TryReserveError::from_alloc) + } + /// Shrink the capacity of the map with a lower bound pub(crate) fn shrink_to(&mut self, min_capacity: usize) { self.indices @@ -220,18 +274,14 @@ } } - /// Append a key-value pair, *without* checking whether it already exists, - /// and return the pair's new index. - fn push(&mut self, hash: HashValue, key: K, value: V) -> usize { - let i = self.entries.len(); - self.indices.insert(hash.get(), i, get_hash(&self.entries)); - if i == self.entries.capacity() { + /// Append a key-value pair to `entries`, *without* checking whether it already exists. + fn push_entry(&mut self, hash: HashValue, key: K, value: V) { + if self.entries.len() == self.entries.capacity() { // Reserve our own capacity synced to the indices, // rather than letting `Vec::push` just double it. - self.reserve_entries(); + self.reserve_entries(1); } self.entries.push(Bucket { hash, key, value }); - i } /// Return the index in `entries` where an equivalent key can be found @@ -247,9 +297,13 @@ where K: Eq, { - match self.get_index_of(hash, &key) { - Some(i) => (i, Some(replace(&mut self.entries[i].value, value))), - None => (self.push(hash, key, value), None), + match self.find_or_insert(hash, &key) { + Ok(i) => (i, Some(mem::replace(&mut self.entries[i].value, value))), + Err(i) => { + debug_assert_eq!(i, self.entries.len()); + self.push_entry(hash, key, value); + (i, None) + } } } @@ -339,7 +393,7 @@ pub(super) fn move_index(&mut self, from: usize, to: usize) { let from_hash = self.entries[from].hash; if from != to { - // Use a sentinal index so other indices don't collide. + // Use a sentinel index so other indices don't collide. update_index(&mut self.indices, from_hash, from, usize::MAX); // Update all other indices and rotate the entry positions. @@ -351,7 +405,7 @@ self.entries[to..=from].rotate_right(1); } - // Change the sentinal index to its final position. + // Change the sentinel index to its final position. update_index(&mut self.indices, from_hash, usize::MAX, to); } } @@ -447,25 +501,9 @@ where F: FnMut(&mut K, &mut V) -> bool, { - // FIXME: This could use Vec::retain_mut with MSRV 1.61. - // Like Vec::retain in self.entries, but with mutable K and V. - // We swap-shift all the items we want to keep, truncate the rest, - // then rebuild the raw hash table with the new indexes. - let len = self.entries.len(); - let mut n_deleted = 0; - for i in 0..len { - let will_keep = { - let entry = &mut self.entries[i]; - keep(&mut entry.key, &mut entry.value) - }; - if !will_keep { - n_deleted += 1; - } else if n_deleted > 0 { - self.entries.swap(i - n_deleted, i); - } - } - if n_deleted > 0 { - self.entries.truncate(len - n_deleted); + self.entries + .retain_mut(|entry| keep(&mut entry.key, &mut entry.value)); + if self.entries.len() < self.indices.len() { self.rebuild_hash_table(); } } @@ -601,7 +639,7 @@ impl OccupiedEntry<'_, K, V> { /// Sets the value of the entry to `value`, and returns the entry's old value. pub fn insert(&mut self, value: V) -> V { - replace(self.get_mut(), value) + mem::replace(self.get_mut(), value) } /// Remove the key, value pair stored in the map for this entry, and return the value. @@ -673,14 +711,18 @@ /// Return the index where the key-value pair will be inserted. pub fn index(&self) -> usize { - self.map.len() + self.map.indices.len() } /// Inserts the entry's key and the given value into the map, and returns a mutable reference /// to the value. pub fn insert(self, value: V) -> &'a mut V { - let i = self.map.push(self.hash, self.key, value); - &mut self.map.entries[i].value + let i = self.index(); + let Self { map, hash, key } = self; + map.indices.insert(hash.get(), i, get_hash(&map.entries)); + debug_assert_eq!(i, map.entries.len()); + map.push_entry(hash, key, value); + &mut map.entries[i].value } } diff -Nru temporalio-1.3.0/vendor/indexmap/src/map/iter.rs temporalio-1.3.0/vendor/indexmap/src/map/iter.rs --- temporalio-1.3.0/vendor/indexmap/src/map/iter.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/map/iter.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,541 @@ +use super::{Bucket, Entries, IndexMap, Slice}; + +use alloc::vec::{self, Vec}; +use core::fmt; +use core::iter::FusedIterator; +use core::slice; + +impl<'a, K, V, S> IntoIterator for &'a IndexMap { + type Item = (&'a K, &'a V); + type IntoIter = Iter<'a, K, V>; + + fn into_iter(self) -> Self::IntoIter { + self.iter() + } +} + +impl<'a, K, V, S> IntoIterator for &'a mut IndexMap { + type Item = (&'a K, &'a mut V); + type IntoIter = IterMut<'a, K, V>; + + fn into_iter(self) -> Self::IntoIter { + self.iter_mut() + } +} + +impl IntoIterator for IndexMap { + type Item = (K, V); + type IntoIter = IntoIter; + + fn into_iter(self) -> Self::IntoIter { + IntoIter::new(self.into_entries()) + } +} + +/// An iterator over the entries of a `IndexMap`. +/// +/// This `struct` is created by the [`iter`] method on [`IndexMap`]. See its +/// documentation for more. +/// +/// [`iter`]: struct.IndexMap.html#method.iter +/// [`IndexMap`]: struct.IndexMap.html +pub struct Iter<'a, K, V> { + iter: slice::Iter<'a, Bucket>, +} + +impl<'a, K, V> Iter<'a, K, V> { + pub(super) fn new(entries: &'a [Bucket]) -> Self { + Self { + iter: entries.iter(), + } + } + + /// Returns a slice of the remaining entries in the iterator. + pub fn as_slice(&self) -> &'a Slice { + Slice::from_slice(self.iter.as_slice()) + } +} + +impl<'a, K, V> Iterator for Iter<'a, K, V> { + type Item = (&'a K, &'a V); + + iterator_methods!(Bucket::refs); +} + +impl DoubleEndedIterator for Iter<'_, K, V> { + double_ended_iterator_methods!(Bucket::refs); +} + +impl ExactSizeIterator for Iter<'_, K, V> { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for Iter<'_, K, V> {} + +// FIXME(#26925) Remove in favor of `#[derive(Clone)]` +impl Clone for Iter<'_, K, V> { + fn clone(&self) -> Self { + Iter { + iter: self.iter.clone(), + } + } +} + +impl fmt::Debug for Iter<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self.clone()).finish() + } +} + +impl Default for Iter<'_, K, V> { + fn default() -> Self { + Self { iter: [].iter() } + } +} + +/// A mutable iterator over the entries of a `IndexMap`. +/// +/// This `struct` is created by the [`iter_mut`] method on [`IndexMap`]. See its +/// documentation for more. +/// +/// [`iter_mut`]: struct.IndexMap.html#method.iter_mut +/// [`IndexMap`]: struct.IndexMap.html +pub struct IterMut<'a, K, V> { + iter: slice::IterMut<'a, Bucket>, +} + +impl<'a, K, V> IterMut<'a, K, V> { + pub(super) fn new(entries: &'a mut [Bucket]) -> Self { + Self { + iter: entries.iter_mut(), + } + } + + /// Returns a slice of the remaining entries in the iterator. + pub fn as_slice(&self) -> &Slice { + Slice::from_slice(self.iter.as_slice()) + } + + /// Returns a mutable slice of the remaining entries in the iterator. + /// + /// To avoid creating `&mut` references that alias, this is forced to consume the iterator. + pub fn into_slice(self) -> &'a mut Slice { + Slice::from_mut_slice(self.iter.into_slice()) + } +} + +impl<'a, K, V> Iterator for IterMut<'a, K, V> { + type Item = (&'a K, &'a mut V); + + iterator_methods!(Bucket::ref_mut); +} + +impl DoubleEndedIterator for IterMut<'_, K, V> { + double_ended_iterator_methods!(Bucket::ref_mut); +} + +impl ExactSizeIterator for IterMut<'_, K, V> { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for IterMut<'_, K, V> {} + +impl fmt::Debug for IterMut<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.iter.as_slice().iter().map(Bucket::refs); + f.debug_list().entries(iter).finish() + } +} + +impl Default for IterMut<'_, K, V> { + fn default() -> Self { + Self { + iter: [].iter_mut(), + } + } +} + +/// An owning iterator over the entries of a `IndexMap`. +/// +/// This `struct` is created by the [`into_iter`] method on [`IndexMap`] +/// (provided by the `IntoIterator` trait). See its documentation for more. +/// +/// [`into_iter`]: struct.IndexMap.html#method.into_iter +/// [`IndexMap`]: struct.IndexMap.html +pub struct IntoIter { + iter: vec::IntoIter>, +} + +impl IntoIter { + pub(super) fn new(entries: Vec>) -> Self { + Self { + iter: entries.into_iter(), + } + } + + /// Returns a slice of the remaining entries in the iterator. + pub fn as_slice(&self) -> &Slice { + Slice::from_slice(self.iter.as_slice()) + } + + /// Returns a mutable slice of the remaining entries in the iterator. + pub fn as_mut_slice(&mut self) -> &mut Slice { + Slice::from_mut_slice(self.iter.as_mut_slice()) + } +} + +impl Iterator for IntoIter { + type Item = (K, V); + + iterator_methods!(Bucket::key_value); +} + +impl DoubleEndedIterator for IntoIter { + double_ended_iterator_methods!(Bucket::key_value); +} + +impl ExactSizeIterator for IntoIter { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for IntoIter {} + +impl fmt::Debug for IntoIter { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.iter.as_slice().iter().map(Bucket::refs); + f.debug_list().entries(iter).finish() + } +} + +impl Default for IntoIter { + fn default() -> Self { + Self { + iter: Vec::new().into_iter(), + } + } +} + +/// A draining iterator over the entries of a `IndexMap`. +/// +/// This `struct` is created by the [`drain`] method on [`IndexMap`]. See its +/// documentation for more. +/// +/// [`drain`]: struct.IndexMap.html#method.drain +/// [`IndexMap`]: struct.IndexMap.html +pub struct Drain<'a, K, V> { + iter: vec::Drain<'a, Bucket>, +} + +impl<'a, K, V> Drain<'a, K, V> { + pub(super) fn new(iter: vec::Drain<'a, Bucket>) -> Self { + Self { iter } + } + + /// Returns a slice of the remaining entries in the iterator. + pub fn as_slice(&self) -> &Slice { + Slice::from_slice(self.iter.as_slice()) + } +} + +impl Iterator for Drain<'_, K, V> { + type Item = (K, V); + + iterator_methods!(Bucket::key_value); +} + +impl DoubleEndedIterator for Drain<'_, K, V> { + double_ended_iterator_methods!(Bucket::key_value); +} + +impl ExactSizeIterator for Drain<'_, K, V> { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for Drain<'_, K, V> {} + +impl fmt::Debug for Drain<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.iter.as_slice().iter().map(Bucket::refs); + f.debug_list().entries(iter).finish() + } +} + +/// An iterator over the keys of a `IndexMap`. +/// +/// This `struct` is created by the [`keys`] method on [`IndexMap`]. See its +/// documentation for more. +/// +/// [`keys`]: struct.IndexMap.html#method.keys +/// [`IndexMap`]: struct.IndexMap.html +pub struct Keys<'a, K, V> { + iter: slice::Iter<'a, Bucket>, +} + +impl<'a, K, V> Keys<'a, K, V> { + pub(super) fn new(entries: &'a [Bucket]) -> Self { + Self { + iter: entries.iter(), + } + } +} + +impl<'a, K, V> Iterator for Keys<'a, K, V> { + type Item = &'a K; + + iterator_methods!(Bucket::key_ref); +} + +impl DoubleEndedIterator for Keys<'_, K, V> { + double_ended_iterator_methods!(Bucket::key_ref); +} + +impl ExactSizeIterator for Keys<'_, K, V> { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for Keys<'_, K, V> {} + +// FIXME(#26925) Remove in favor of `#[derive(Clone)]` +impl Clone for Keys<'_, K, V> { + fn clone(&self) -> Self { + Keys { + iter: self.iter.clone(), + } + } +} + +impl fmt::Debug for Keys<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self.clone()).finish() + } +} + +impl Default for Keys<'_, K, V> { + fn default() -> Self { + Self { iter: [].iter() } + } +} + +/// An owning iterator over the keys of a `IndexMap`. +/// +/// This `struct` is created by the [`into_keys`] method on [`IndexMap`]. +/// See its documentation for more. +/// +/// [`IndexMap`]: struct.IndexMap.html +/// [`into_keys`]: struct.IndexMap.html#method.into_keys +pub struct IntoKeys { + iter: vec::IntoIter>, +} + +impl IntoKeys { + pub(super) fn new(entries: Vec>) -> Self { + Self { + iter: entries.into_iter(), + } + } +} + +impl Iterator for IntoKeys { + type Item = K; + + iterator_methods!(Bucket::key); +} + +impl DoubleEndedIterator for IntoKeys { + double_ended_iterator_methods!(Bucket::key); +} + +impl ExactSizeIterator for IntoKeys { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for IntoKeys {} + +impl fmt::Debug for IntoKeys { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.iter.as_slice().iter().map(Bucket::key_ref); + f.debug_list().entries(iter).finish() + } +} + +impl Default for IntoKeys { + fn default() -> Self { + Self { + iter: Vec::new().into_iter(), + } + } +} + +/// An iterator over the values of a `IndexMap`. +/// +/// This `struct` is created by the [`values`] method on [`IndexMap`]. See its +/// documentation for more. +/// +/// [`values`]: struct.IndexMap.html#method.values +/// [`IndexMap`]: struct.IndexMap.html +pub struct Values<'a, K, V> { + iter: slice::Iter<'a, Bucket>, +} + +impl<'a, K, V> Values<'a, K, V> { + pub(super) fn new(entries: &'a [Bucket]) -> Self { + Self { + iter: entries.iter(), + } + } +} + +impl<'a, K, V> Iterator for Values<'a, K, V> { + type Item = &'a V; + + iterator_methods!(Bucket::value_ref); +} + +impl DoubleEndedIterator for Values<'_, K, V> { + double_ended_iterator_methods!(Bucket::value_ref); +} + +impl ExactSizeIterator for Values<'_, K, V> { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for Values<'_, K, V> {} + +// FIXME(#26925) Remove in favor of `#[derive(Clone)]` +impl Clone for Values<'_, K, V> { + fn clone(&self) -> Self { + Values { + iter: self.iter.clone(), + } + } +} + +impl fmt::Debug for Values<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self.clone()).finish() + } +} + +impl Default for Values<'_, K, V> { + fn default() -> Self { + Self { iter: [].iter() } + } +} + +/// A mutable iterator over the values of a `IndexMap`. +/// +/// This `struct` is created by the [`values_mut`] method on [`IndexMap`]. See its +/// documentation for more. +/// +/// [`values_mut`]: struct.IndexMap.html#method.values_mut +/// [`IndexMap`]: struct.IndexMap.html +pub struct ValuesMut<'a, K, V> { + iter: slice::IterMut<'a, Bucket>, +} + +impl<'a, K, V> ValuesMut<'a, K, V> { + pub(super) fn new(entries: &'a mut [Bucket]) -> Self { + Self { + iter: entries.iter_mut(), + } + } +} + +impl<'a, K, V> Iterator for ValuesMut<'a, K, V> { + type Item = &'a mut V; + + iterator_methods!(Bucket::value_mut); +} + +impl DoubleEndedIterator for ValuesMut<'_, K, V> { + double_ended_iterator_methods!(Bucket::value_mut); +} + +impl ExactSizeIterator for ValuesMut<'_, K, V> { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for ValuesMut<'_, K, V> {} + +impl fmt::Debug for ValuesMut<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.iter.as_slice().iter().map(Bucket::value_ref); + f.debug_list().entries(iter).finish() + } +} + +impl Default for ValuesMut<'_, K, V> { + fn default() -> Self { + Self { + iter: [].iter_mut(), + } + } +} + +/// An owning iterator over the values of a `IndexMap`. +/// +/// This `struct` is created by the [`into_values`] method on [`IndexMap`]. +/// See its documentation for more. +/// +/// [`IndexMap`]: struct.IndexMap.html +/// [`into_values`]: struct.IndexMap.html#method.into_values +pub struct IntoValues { + iter: vec::IntoIter>, +} + +impl IntoValues { + pub(super) fn new(entries: Vec>) -> Self { + Self { + iter: entries.into_iter(), + } + } +} + +impl Iterator for IntoValues { + type Item = V; + + iterator_methods!(Bucket::value); +} + +impl DoubleEndedIterator for IntoValues { + double_ended_iterator_methods!(Bucket::value); +} + +impl ExactSizeIterator for IntoValues { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for IntoValues {} + +impl fmt::Debug for IntoValues { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.iter.as_slice().iter().map(Bucket::value_ref); + f.debug_list().entries(iter).finish() + } +} + +impl Default for IntoValues { + fn default() -> Self { + Self { + iter: Vec::new().into_iter(), + } + } +} diff -Nru temporalio-1.3.0/vendor/indexmap/src/map/serde_seq.rs temporalio-1.3.0/vendor/indexmap/src/map/serde_seq.rs --- temporalio-1.3.0/vendor/indexmap/src/map/serde_seq.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/map/serde_seq.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,138 @@ +//! Functions to serialize and deserialize an `IndexMap` as an ordered sequence. +//! +//! The default `serde` implementation serializes `IndexMap` as a normal map, +//! but there is no guarantee that serialization formats will preserve the order +//! of the key-value pairs. This module serializes `IndexMap` as a sequence of +//! `(key, value)` elements instead, in order. +//! +//! This module may be used in a field attribute for derived implementations: +//! +//! ``` +//! # use indexmap::IndexMap; +//! # use serde_derive::{Deserialize, Serialize}; +//! #[derive(Deserialize, Serialize)] +//! struct Data { +//! #[serde(with = "indexmap::map::serde_seq")] +//! map: IndexMap, +//! // ... +//! } +//! ``` + +use serde::de::{Deserialize, Deserializer, SeqAccess, Visitor}; +use serde::ser::{Serialize, Serializer}; + +use core::fmt::{self, Formatter}; +use core::hash::{BuildHasher, Hash}; +use core::marker::PhantomData; + +use crate::map::Slice as MapSlice; +use crate::set::Slice as SetSlice; +use crate::IndexMap; + +/// Serializes a `map::Slice` as an ordered sequence. +/// +/// This behaves like [`crate::map::serde_seq`] for `IndexMap`, serializing a sequence +/// of `(key, value)` pairs, rather than as a map that might not preserve order. +impl Serialize for MapSlice +where + K: Serialize, + V: Serialize, +{ + fn serialize(&self, serializer: T) -> Result + where + T: Serializer, + { + serializer.collect_seq(self) + } +} + +/// Serializes a `set::Slice` as an ordered sequence. +impl Serialize for SetSlice +where + T: Serialize, +{ + fn serialize(&self, serializer: Se) -> Result + where + Se: Serializer, + { + serializer.collect_seq(self) + } +} + +/// Serializes an `IndexMap` as an ordered sequence. +/// +/// This function may be used in a field attribute for deriving `Serialize`: +/// +/// ``` +/// # use indexmap::IndexMap; +/// # use serde_derive::Serialize; +/// #[derive(Serialize)] +/// struct Data { +/// #[serde(serialize_with = "indexmap::map::serde_seq::serialize")] +/// map: IndexMap, +/// // ... +/// } +/// ``` +pub fn serialize(map: &IndexMap, serializer: T) -> Result +where + K: Serialize + Hash + Eq, + V: Serialize, + S: BuildHasher, + T: Serializer, +{ + serializer.collect_seq(map) +} + +/// Visitor to deserialize a *sequenced* `IndexMap` +struct SeqVisitor(PhantomData<(K, V, S)>); + +impl<'de, K, V, S> Visitor<'de> for SeqVisitor +where + K: Deserialize<'de> + Eq + Hash, + V: Deserialize<'de>, + S: Default + BuildHasher, +{ + type Value = IndexMap; + + fn expecting(&self, formatter: &mut Formatter<'_>) -> fmt::Result { + write!(formatter, "a sequenced map") + } + + fn visit_seq(self, mut seq: A) -> Result + where + A: SeqAccess<'de>, + { + let capacity = seq.size_hint().unwrap_or(0); + let mut map = IndexMap::with_capacity_and_hasher(capacity, S::default()); + + while let Some((key, value)) = seq.next_element()? { + map.insert(key, value); + } + + Ok(map) + } +} + +/// Deserializes an `IndexMap` from an ordered sequence. +/// +/// This function may be used in a field attribute for deriving `Deserialize`: +/// +/// ``` +/// # use indexmap::IndexMap; +/// # use serde_derive::Deserialize; +/// #[derive(Deserialize)] +/// struct Data { +/// #[serde(deserialize_with = "indexmap::map::serde_seq::deserialize")] +/// map: IndexMap, +/// // ... +/// } +/// ``` +pub fn deserialize<'de, D, K, V, S>(deserializer: D) -> Result, D::Error> +where + D: Deserializer<'de>, + K: Deserialize<'de> + Eq + Hash, + V: Deserialize<'de>, + S: Default + BuildHasher, +{ + deserializer.deserialize_seq(SeqVisitor(PhantomData)) +} diff -Nru temporalio-1.3.0/vendor/indexmap/src/map/slice.rs temporalio-1.3.0/vendor/indexmap/src/map/slice.rs --- temporalio-1.3.0/vendor/indexmap/src/map/slice.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/map/slice.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,471 @@ +use super::{ + Bucket, Entries, IndexMap, IntoIter, IntoKeys, IntoValues, Iter, IterMut, Keys, Values, + ValuesMut, +}; +use crate::util::try_simplify_range; + +use alloc::boxed::Box; +use alloc::vec::Vec; +use core::cmp::Ordering; +use core::fmt; +use core::hash::{Hash, Hasher}; +use core::ops::{self, Bound, Index, IndexMut, RangeBounds}; + +/// A dynamically-sized slice of key-value pairs in an `IndexMap`. +/// +/// This supports indexed operations much like a `[(K, V)]` slice, +/// but not any hashed operations on the map keys. +/// +/// Unlike `IndexMap`, `Slice` does consider the order for `PartialEq` +/// and `Eq`, and it also implements `PartialOrd`, `Ord`, and `Hash`. +#[repr(transparent)] +pub struct Slice { + pub(crate) entries: [Bucket], +} + +// SAFETY: `Slice` is a transparent wrapper around `[Bucket]`, +// and reference lifetimes are bound together in function signatures. +#[allow(unsafe_code)] +impl Slice { + pub(super) fn from_slice(entries: &[Bucket]) -> &Self { + unsafe { &*(entries as *const [Bucket] as *const Self) } + } + + pub(super) fn from_mut_slice(entries: &mut [Bucket]) -> &mut Self { + unsafe { &mut *(entries as *mut [Bucket] as *mut Self) } + } + + pub(super) fn from_boxed(entries: Box<[Bucket]>) -> Box { + unsafe { Box::from_raw(Box::into_raw(entries) as *mut Self) } + } + + fn into_boxed(self: Box) -> Box<[Bucket]> { + unsafe { Box::from_raw(Box::into_raw(self) as *mut [Bucket]) } + } +} + +impl Slice { + pub(crate) fn into_entries(self: Box) -> Vec> { + self.into_boxed().into_vec() + } + + /// Return the number of key-value pairs in the map slice. + #[inline] + pub fn len(&self) -> usize { + self.entries.len() + } + + /// Returns true if the map slice contains no elements. + #[inline] + pub fn is_empty(&self) -> bool { + self.entries.is_empty() + } + + /// Get a key-value pair by index. + /// + /// Valid indices are *0 <= index < self.len()* + pub fn get_index(&self, index: usize) -> Option<(&K, &V)> { + self.entries.get(index).map(Bucket::refs) + } + + /// Get a key-value pair by index, with mutable access to the value. + /// + /// Valid indices are *0 <= index < self.len()* + pub fn get_index_mut(&mut self, index: usize) -> Option<(&K, &mut V)> { + self.entries.get_mut(index).map(Bucket::ref_mut) + } + + /// Returns a slice of key-value pairs in the given range of indices. + /// + /// Valid indices are *0 <= index < self.len()* + pub fn get_range>(&self, range: R) -> Option<&Self> { + let range = try_simplify_range(range, self.entries.len())?; + self.entries.get(range).map(Slice::from_slice) + } + + /// Returns a mutable slice of key-value pairs in the given range of indices. + /// + /// Valid indices are *0 <= index < self.len()* + pub fn get_range_mut>(&mut self, range: R) -> Option<&mut Self> { + let range = try_simplify_range(range, self.entries.len())?; + self.entries.get_mut(range).map(Slice::from_mut_slice) + } + + /// Get the first key-value pair. + pub fn first(&self) -> Option<(&K, &V)> { + self.entries.first().map(Bucket::refs) + } + + /// Get the first key-value pair, with mutable access to the value. + pub fn first_mut(&mut self) -> Option<(&K, &mut V)> { + self.entries.first_mut().map(Bucket::ref_mut) + } + + /// Get the last key-value pair. + pub fn last(&self) -> Option<(&K, &V)> { + self.entries.last().map(Bucket::refs) + } + + /// Get the last key-value pair, with mutable access to the value. + pub fn last_mut(&mut self) -> Option<(&K, &mut V)> { + self.entries.last_mut().map(Bucket::ref_mut) + } + + /// Divides one slice into two at an index. + /// + /// ***Panics*** if `index > len`. + pub fn split_at(&self, index: usize) -> (&Self, &Self) { + let (first, second) = self.entries.split_at(index); + (Self::from_slice(first), Self::from_slice(second)) + } + + /// Divides one mutable slice into two at an index. + /// + /// ***Panics*** if `index > len`. + pub fn split_at_mut(&mut self, index: usize) -> (&mut Self, &mut Self) { + let (first, second) = self.entries.split_at_mut(index); + (Self::from_mut_slice(first), Self::from_mut_slice(second)) + } + + /// Returns the first key-value pair and the rest of the slice, + /// or `None` if it is empty. + pub fn split_first(&self) -> Option<((&K, &V), &Self)> { + if let [first, rest @ ..] = &self.entries { + Some((first.refs(), Self::from_slice(rest))) + } else { + None + } + } + + /// Returns the first key-value pair and the rest of the slice, + /// with mutable access to the value, or `None` if it is empty. + pub fn split_first_mut(&mut self) -> Option<((&K, &mut V), &mut Self)> { + if let [first, rest @ ..] = &mut self.entries { + Some((first.ref_mut(), Self::from_mut_slice(rest))) + } else { + None + } + } + + /// Returns the last key-value pair and the rest of the slice, + /// or `None` if it is empty. + pub fn split_last(&self) -> Option<((&K, &V), &Self)> { + if let [rest @ .., last] = &self.entries { + Some((last.refs(), Self::from_slice(rest))) + } else { + None + } + } + + /// Returns the last key-value pair and the rest of the slice, + /// with mutable access to the value, or `None` if it is empty. + pub fn split_last_mut(&mut self) -> Option<((&K, &mut V), &mut Self)> { + if let [rest @ .., last] = &mut self.entries { + Some((last.ref_mut(), Self::from_mut_slice(rest))) + } else { + None + } + } + + /// Return an iterator over the key-value pairs of the map slice. + pub fn iter(&self) -> Iter<'_, K, V> { + Iter::new(&self.entries) + } + + /// Return an iterator over the key-value pairs of the map slice. + pub fn iter_mut(&mut self) -> IterMut<'_, K, V> { + IterMut::new(&mut self.entries) + } + + /// Return an iterator over the keys of the map slice. + pub fn keys(&self) -> Keys<'_, K, V> { + Keys::new(&self.entries) + } + + /// Return an owning iterator over the keys of the map slice. + pub fn into_keys(self: Box) -> IntoKeys { + IntoKeys::new(self.into_entries()) + } + + /// Return an iterator over the values of the map slice. + pub fn values(&self) -> Values<'_, K, V> { + Values::new(&self.entries) + } + + /// Return an iterator over mutable references to the the values of the map slice. + pub fn values_mut(&mut self) -> ValuesMut<'_, K, V> { + ValuesMut::new(&mut self.entries) + } + + /// Return an owning iterator over the values of the map slice. + pub fn into_values(self: Box) -> IntoValues { + IntoValues::new(self.into_entries()) + } +} + +impl<'a, K, V> IntoIterator for &'a Slice { + type IntoIter = Iter<'a, K, V>; + type Item = (&'a K, &'a V); + + fn into_iter(self) -> Self::IntoIter { + self.iter() + } +} + +impl<'a, K, V> IntoIterator for &'a mut Slice { + type IntoIter = IterMut<'a, K, V>; + type Item = (&'a K, &'a mut V); + + fn into_iter(self) -> Self::IntoIter { + self.iter_mut() + } +} + +impl IntoIterator for Box> { + type IntoIter = IntoIter; + type Item = (K, V); + + fn into_iter(self) -> Self::IntoIter { + IntoIter::new(self.into_entries()) + } +} + +impl Default for &'_ Slice { + fn default() -> Self { + Slice::from_slice(&[]) + } +} + +impl Default for &'_ mut Slice { + fn default() -> Self { + Slice::from_mut_slice(&mut []) + } +} + +impl Default for Box> { + fn default() -> Self { + Slice::from_boxed(Box::default()) + } +} + +impl Clone for Box> { + fn clone(&self) -> Self { + Slice::from_boxed(self.entries.to_vec().into_boxed_slice()) + } +} + +impl From<&Slice> for Box> { + fn from(slice: &Slice) -> Self { + Slice::from_boxed(Box::from(&slice.entries)) + } +} + +impl fmt::Debug for Slice { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self).finish() + } +} + +impl PartialEq for Slice { + fn eq(&self, other: &Self) -> bool { + self.len() == other.len() && self.iter().eq(other) + } +} + +impl Eq for Slice {} + +impl PartialOrd for Slice { + fn partial_cmp(&self, other: &Self) -> Option { + self.iter().partial_cmp(other) + } +} + +impl Ord for Slice { + fn cmp(&self, other: &Self) -> Ordering { + self.iter().cmp(other) + } +} + +impl Hash for Slice { + fn hash(&self, state: &mut H) { + self.len().hash(state); + for (key, value) in self { + key.hash(state); + value.hash(state); + } + } +} + +impl Index for Slice { + type Output = V; + + fn index(&self, index: usize) -> &V { + &self.entries[index].value + } +} + +impl IndexMut for Slice { + fn index_mut(&mut self, index: usize) -> &mut V { + &mut self.entries[index].value + } +} + +// We can't have `impl> Index` because that conflicts +// both upstream with `Index` and downstream with `Index<&Q>`. +// Instead, we repeat the implementations for all the core range types. +macro_rules! impl_index { + ($($range:ty),*) => {$( + impl Index<$range> for IndexMap { + type Output = Slice; + + fn index(&self, range: $range) -> &Self::Output { + Slice::from_slice(&self.as_entries()[range]) + } + } + + impl IndexMut<$range> for IndexMap { + fn index_mut(&mut self, range: $range) -> &mut Self::Output { + Slice::from_mut_slice(&mut self.as_entries_mut()[range]) + } + } + + impl Index<$range> for Slice { + type Output = Slice; + + fn index(&self, range: $range) -> &Self { + Self::from_slice(&self.entries[range]) + } + } + + impl IndexMut<$range> for Slice { + fn index_mut(&mut self, range: $range) -> &mut Self { + Self::from_mut_slice(&mut self.entries[range]) + } + } + )*} +} +impl_index!( + ops::Range, + ops::RangeFrom, + ops::RangeFull, + ops::RangeInclusive, + ops::RangeTo, + ops::RangeToInclusive, + (Bound, Bound) +); + +#[cfg(test)] +mod tests { + use super::*; + use alloc::vec::Vec; + + #[test] + fn slice_index() { + fn check( + vec_slice: &[(i32, i32)], + map_slice: &Slice, + sub_slice: &Slice, + ) { + assert_eq!(map_slice as *const _, sub_slice as *const _); + itertools::assert_equal( + vec_slice.iter().copied(), + map_slice.iter().map(|(&k, &v)| (k, v)), + ); + itertools::assert_equal(vec_slice.iter().map(|(k, _)| k), map_slice.keys()); + itertools::assert_equal(vec_slice.iter().map(|(_, v)| v), map_slice.values()); + } + + let vec: Vec<(i32, i32)> = (0..10).map(|i| (i, i * i)).collect(); + let map: IndexMap = vec.iter().cloned().collect(); + let slice = map.as_slice(); + + // RangeFull + check(&vec[..], &map[..], &slice[..]); + + for i in 0usize..10 { + // Index + assert_eq!(vec[i].1, map[i]); + assert_eq!(vec[i].1, slice[i]); + assert_eq!(map[&(i as i32)], map[i]); + assert_eq!(map[&(i as i32)], slice[i]); + + // RangeFrom + check(&vec[i..], &map[i..], &slice[i..]); + + // RangeTo + check(&vec[..i], &map[..i], &slice[..i]); + + // RangeToInclusive + check(&vec[..=i], &map[..=i], &slice[..=i]); + + // (Bound, Bound) + let bounds = (Bound::Excluded(i), Bound::Unbounded); + check(&vec[i + 1..], &map[bounds], &slice[bounds]); + + for j in i..=10 { + // Range + check(&vec[i..j], &map[i..j], &slice[i..j]); + } + + for j in i..10 { + // RangeInclusive + check(&vec[i..=j], &map[i..=j], &slice[i..=j]); + } + } + } + + #[test] + fn slice_index_mut() { + fn check_mut( + vec_slice: &[(i32, i32)], + map_slice: &mut Slice, + sub_slice: &mut Slice, + ) { + assert_eq!(map_slice, sub_slice); + itertools::assert_equal( + vec_slice.iter().copied(), + map_slice.iter_mut().map(|(&k, &mut v)| (k, v)), + ); + itertools::assert_equal( + vec_slice.iter().map(|&(_, v)| v), + map_slice.values_mut().map(|&mut v| v), + ); + } + + let vec: Vec<(i32, i32)> = (0..10).map(|i| (i, i * i)).collect(); + let mut map: IndexMap = vec.iter().cloned().collect(); + let mut map2 = map.clone(); + let slice = map2.as_mut_slice(); + + // RangeFull + check_mut(&vec[..], &mut map[..], &mut slice[..]); + + for i in 0usize..10 { + // IndexMut + assert_eq!(&mut map[i], &mut slice[i]); + + // RangeFrom + check_mut(&vec[i..], &mut map[i..], &mut slice[i..]); + + // RangeTo + check_mut(&vec[..i], &mut map[..i], &mut slice[..i]); + + // RangeToInclusive + check_mut(&vec[..=i], &mut map[..=i], &mut slice[..=i]); + + // (Bound, Bound) + let bounds = (Bound::Excluded(i), Bound::Unbounded); + check_mut(&vec[i + 1..], &mut map[bounds], &mut slice[bounds]); + + for j in i..=10 { + // Range + check_mut(&vec[i..j], &mut map[i..j], &mut slice[i..j]); + } + + for j in i..10 { + // RangeInclusive + check_mut(&vec[i..=j], &mut map[i..=j], &mut slice[i..=j]); + } + } + } +} diff -Nru temporalio-1.3.0/vendor/indexmap/src/map/tests.rs temporalio-1.3.0/vendor/indexmap/src/map/tests.rs --- temporalio-1.3.0/vendor/indexmap/src/map/tests.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/map/tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,449 @@ +use super::*; +use std::string::String; + +#[test] +fn it_works() { + let mut map = IndexMap::new(); + assert_eq!(map.is_empty(), true); + map.insert(1, ()); + map.insert(1, ()); + assert_eq!(map.len(), 1); + assert!(map.get(&1).is_some()); + assert_eq!(map.is_empty(), false); +} + +#[test] +fn new() { + let map = IndexMap::::new(); + println!("{:?}", map); + assert_eq!(map.capacity(), 0); + assert_eq!(map.len(), 0); + assert_eq!(map.is_empty(), true); +} + +#[test] +fn insert() { + let insert = [0, 4, 2, 12, 8, 7, 11, 5]; + let not_present = [1, 3, 6, 9, 10]; + let mut map = IndexMap::with_capacity(insert.len()); + + for (i, &elt) in insert.iter().enumerate() { + assert_eq!(map.len(), i); + map.insert(elt, elt); + assert_eq!(map.len(), i + 1); + assert_eq!(map.get(&elt), Some(&elt)); + assert_eq!(map[&elt], elt); + } + println!("{:?}", map); + + for &elt in ¬_present { + assert!(map.get(&elt).is_none()); + } +} + +#[test] +fn insert_full() { + let insert = vec![9, 2, 7, 1, 4, 6, 13]; + let present = vec![1, 6, 2]; + let mut map = IndexMap::with_capacity(insert.len()); + + for (i, &elt) in insert.iter().enumerate() { + assert_eq!(map.len(), i); + let (index, existing) = map.insert_full(elt, elt); + assert_eq!(existing, None); + assert_eq!(Some(index), map.get_full(&elt).map(|x| x.0)); + assert_eq!(map.len(), i + 1); + } + + let len = map.len(); + for &elt in &present { + let (index, existing) = map.insert_full(elt, elt); + assert_eq!(existing, Some(elt)); + assert_eq!(Some(index), map.get_full(&elt).map(|x| x.0)); + assert_eq!(map.len(), len); + } +} + +#[test] +fn insert_2() { + let mut map = IndexMap::with_capacity(16); + + let mut keys = vec![]; + keys.extend(0..16); + keys.extend(if cfg!(miri) { 32..64 } else { 128..267 }); + + for &i in &keys { + let old_map = map.clone(); + map.insert(i, ()); + for key in old_map.keys() { + if map.get(key).is_none() { + println!("old_map: {:?}", old_map); + println!("map: {:?}", map); + panic!("did not find {} in map", key); + } + } + } + + for &i in &keys { + assert!(map.get(&i).is_some(), "did not find {}", i); + } +} + +#[test] +fn insert_order() { + let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; + let mut map = IndexMap::new(); + + for &elt in &insert { + map.insert(elt, ()); + } + + assert_eq!(map.keys().count(), map.len()); + assert_eq!(map.keys().count(), insert.len()); + for (a, b) in insert.iter().zip(map.keys()) { + assert_eq!(a, b); + } + for (i, k) in (0..insert.len()).zip(map.keys()) { + assert_eq!(map.get_index(i).unwrap().0, k); + } +} + +#[test] +fn grow() { + let insert = [0, 4, 2, 12, 8, 7, 11]; + let not_present = [1, 3, 6, 9, 10]; + let mut map = IndexMap::with_capacity(insert.len()); + + for (i, &elt) in insert.iter().enumerate() { + assert_eq!(map.len(), i); + map.insert(elt, elt); + assert_eq!(map.len(), i + 1); + assert_eq!(map.get(&elt), Some(&elt)); + assert_eq!(map[&elt], elt); + } + + println!("{:?}", map); + for &elt in &insert { + map.insert(elt * 10, elt); + } + for &elt in &insert { + map.insert(elt * 100, elt); + } + for (i, &elt) in insert.iter().cycle().enumerate().take(100) { + map.insert(elt * 100 + i as i32, elt); + } + println!("{:?}", map); + for &elt in ¬_present { + assert!(map.get(&elt).is_none()); + } +} + +#[test] +fn reserve() { + let mut map = IndexMap::::new(); + assert_eq!(map.capacity(), 0); + map.reserve(100); + let capacity = map.capacity(); + assert!(capacity >= 100); + for i in 0..capacity { + assert_eq!(map.len(), i); + map.insert(i, i * i); + assert_eq!(map.len(), i + 1); + assert_eq!(map.capacity(), capacity); + assert_eq!(map.get(&i), Some(&(i * i))); + } + map.insert(capacity, std::usize::MAX); + assert_eq!(map.len(), capacity + 1); + assert!(map.capacity() > capacity); + assert_eq!(map.get(&capacity), Some(&std::usize::MAX)); +} + +#[test] +fn try_reserve() { + let mut map = IndexMap::::new(); + assert_eq!(map.capacity(), 0); + assert_eq!(map.try_reserve(100), Ok(())); + assert!(map.capacity() >= 100); + assert!(map.try_reserve(usize::MAX).is_err()); +} + +#[test] +fn shrink_to_fit() { + let mut map = IndexMap::::new(); + assert_eq!(map.capacity(), 0); + for i in 0..100 { + assert_eq!(map.len(), i); + map.insert(i, i * i); + assert_eq!(map.len(), i + 1); + assert!(map.capacity() >= i + 1); + assert_eq!(map.get(&i), Some(&(i * i))); + map.shrink_to_fit(); + assert_eq!(map.len(), i + 1); + assert_eq!(map.capacity(), i + 1); + assert_eq!(map.get(&i), Some(&(i * i))); + } +} + +#[test] +fn remove() { + let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; + let mut map = IndexMap::new(); + + for &elt in &insert { + map.insert(elt, elt); + } + + assert_eq!(map.keys().count(), map.len()); + assert_eq!(map.keys().count(), insert.len()); + for (a, b) in insert.iter().zip(map.keys()) { + assert_eq!(a, b); + } + + let remove_fail = [99, 77]; + let remove = [4, 12, 8, 7]; + + for &key in &remove_fail { + assert!(map.swap_remove_full(&key).is_none()); + } + println!("{:?}", map); + for &key in &remove { + //println!("{:?}", map); + let index = map.get_full(&key).unwrap().0; + assert_eq!(map.swap_remove_full(&key), Some((index, key, key))); + } + println!("{:?}", map); + + for key in &insert { + assert_eq!(map.get(key).is_some(), !remove.contains(key)); + } + assert_eq!(map.len(), insert.len() - remove.len()); + assert_eq!(map.keys().count(), insert.len() - remove.len()); +} + +#[test] +fn remove_to_empty() { + let mut map = indexmap! { 0 => 0, 4 => 4, 5 => 5 }; + map.swap_remove(&5).unwrap(); + map.swap_remove(&4).unwrap(); + map.swap_remove(&0).unwrap(); + assert!(map.is_empty()); +} + +#[test] +fn swap_remove_index() { + let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; + let mut map = IndexMap::new(); + + for &elt in &insert { + map.insert(elt, elt * 2); + } + + let mut vector = insert.to_vec(); + let remove_sequence = &[3, 3, 10, 4, 5, 4, 3, 0, 1]; + + // check that the same swap remove sequence on vec and map + // have the same result. + for &rm in remove_sequence { + let out_vec = vector.swap_remove(rm); + let (out_map, _) = map.swap_remove_index(rm).unwrap(); + assert_eq!(out_vec, out_map); + } + assert_eq!(vector.len(), map.len()); + for (a, b) in vector.iter().zip(map.keys()) { + assert_eq!(a, b); + } +} + +#[test] +fn partial_eq_and_eq() { + let mut map_a = IndexMap::new(); + map_a.insert(1, "1"); + map_a.insert(2, "2"); + let mut map_b = map_a.clone(); + assert_eq!(map_a, map_b); + map_b.swap_remove(&1); + assert_ne!(map_a, map_b); + + let map_c: IndexMap<_, String> = map_b.into_iter().map(|(k, v)| (k, v.into())).collect(); + assert_ne!(map_a, map_c); + assert_ne!(map_c, map_a); +} + +#[test] +fn extend() { + let mut map = IndexMap::new(); + map.extend(vec![(&1, &2), (&3, &4)]); + map.extend(vec![(5, 6)]); + assert_eq!( + map.into_iter().collect::>(), + vec![(1, 2), (3, 4), (5, 6)] + ); +} + +#[test] +fn entry() { + let mut map = IndexMap::new(); + + map.insert(1, "1"); + map.insert(2, "2"); + { + let e = map.entry(3); + assert_eq!(e.index(), 2); + let e = e.or_insert("3"); + assert_eq!(e, &"3"); + } + + let e = map.entry(2); + assert_eq!(e.index(), 1); + assert_eq!(e.key(), &2); + match e { + Entry::Occupied(ref e) => assert_eq!(e.get(), &"2"), + Entry::Vacant(_) => panic!(), + } + assert_eq!(e.or_insert("4"), &"2"); +} + +#[test] +fn entry_and_modify() { + let mut map = IndexMap::new(); + + map.insert(1, "1"); + map.entry(1).and_modify(|x| *x = "2"); + assert_eq!(Some(&"2"), map.get(&1)); + + map.entry(2).and_modify(|x| *x = "doesn't exist"); + assert_eq!(None, map.get(&2)); +} + +#[test] +fn entry_or_default() { + let mut map = IndexMap::new(); + + #[derive(Debug, PartialEq)] + enum TestEnum { + DefaultValue, + NonDefaultValue, + } + + impl Default for TestEnum { + fn default() -> Self { + TestEnum::DefaultValue + } + } + + map.insert(1, TestEnum::NonDefaultValue); + assert_eq!(&mut TestEnum::NonDefaultValue, map.entry(1).or_default()); + + assert_eq!(&mut TestEnum::DefaultValue, map.entry(2).or_default()); +} + +#[test] +fn occupied_entry_key() { + // These keys match hash and equality, but their addresses are distinct. + let (k1, k2) = (&mut 1, &mut 1); + let k1_ptr = k1 as *const i32; + let k2_ptr = k2 as *const i32; + assert_ne!(k1_ptr, k2_ptr); + + let mut map = IndexMap::new(); + map.insert(k1, "value"); + match map.entry(k2) { + Entry::Occupied(ref e) => { + // `OccupiedEntry::key` should reference the key in the map, + // not the key that was used to find the entry. + let ptr = *e.key() as *const i32; + assert_eq!(ptr, k1_ptr); + assert_ne!(ptr, k2_ptr); + } + Entry::Vacant(_) => panic!(), + } +} + +#[test] +fn keys() { + let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')]; + let map: IndexMap<_, _> = vec.into_iter().collect(); + let keys: Vec<_> = map.keys().copied().collect(); + assert_eq!(keys.len(), 3); + assert!(keys.contains(&1)); + assert!(keys.contains(&2)); + assert!(keys.contains(&3)); +} + +#[test] +fn into_keys() { + let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')]; + let map: IndexMap<_, _> = vec.into_iter().collect(); + let keys: Vec = map.into_keys().collect(); + assert_eq!(keys.len(), 3); + assert!(keys.contains(&1)); + assert!(keys.contains(&2)); + assert!(keys.contains(&3)); +} + +#[test] +fn values() { + let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')]; + let map: IndexMap<_, _> = vec.into_iter().collect(); + let values: Vec<_> = map.values().copied().collect(); + assert_eq!(values.len(), 3); + assert!(values.contains(&'a')); + assert!(values.contains(&'b')); + assert!(values.contains(&'c')); +} + +#[test] +fn values_mut() { + let vec = vec![(1, 1), (2, 2), (3, 3)]; + let mut map: IndexMap<_, _> = vec.into_iter().collect(); + for value in map.values_mut() { + *value *= 2 + } + let values: Vec<_> = map.values().copied().collect(); + assert_eq!(values.len(), 3); + assert!(values.contains(&2)); + assert!(values.contains(&4)); + assert!(values.contains(&6)); +} + +#[test] +fn into_values() { + let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')]; + let map: IndexMap<_, _> = vec.into_iter().collect(); + let values: Vec = map.into_values().collect(); + assert_eq!(values.len(), 3); + assert!(values.contains(&'a')); + assert!(values.contains(&'b')); + assert!(values.contains(&'c')); +} + +#[test] +#[cfg(feature = "std")] +fn from_array() { + let map = IndexMap::from([(1, 2), (3, 4)]); + let mut expected = IndexMap::new(); + expected.insert(1, 2); + expected.insert(3, 4); + + assert_eq!(map, expected) +} + +#[test] +fn iter_default() { + struct K; + struct V; + fn assert_default() + where + T: Default + Iterator, + { + assert!(T::default().next().is_none()); + } + assert_default::>(); + assert_default::>(); + assert_default::>(); + assert_default::>(); + assert_default::>(); + assert_default::>(); + assert_default::>(); + assert_default::>(); +} diff -Nru temporalio-1.3.0/vendor/indexmap/src/map.rs temporalio-1.3.0/vendor/indexmap/src/map.rs --- temporalio-1.3.0/vendor/indexmap/src/map.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/map.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,29 +2,39 @@ //! pairs is independent of the hash values of the keys. mod core; +mod iter; +mod slice; +#[cfg(feature = "serde")] +#[cfg_attr(docsrs, doc(cfg(feature = "serde")))] +pub mod serde_seq; + +#[cfg(test)] +mod tests; + +pub use self::core::{Entry, OccupiedEntry, VacantEntry}; +pub use self::iter::{ + Drain, IntoIter, IntoKeys, IntoValues, Iter, IterMut, Keys, Values, ValuesMut, +}; +pub use self::slice::Slice; pub use crate::mutable_keys::MutableKeys; #[cfg(feature = "rayon")] pub use crate::rayon::map as rayon; -use crate::vec::{self, Vec}; use ::core::cmp::Ordering; use ::core::fmt; use ::core::hash::{BuildHasher, Hash, Hasher}; -use ::core::iter::FusedIterator; use ::core::ops::{Index, IndexMut, RangeBounds}; -use ::core::slice::{Iter as SliceIter, IterMut as SliceIterMut}; +use alloc::boxed::Box; +use alloc::vec::Vec; -#[cfg(has_std)] +#[cfg(feature = "std")] use std::collections::hash_map::RandomState; use self::core::IndexMapCore; -use crate::equivalent::Equivalent; -use crate::util::third; -use crate::{Bucket, Entries, HashValue}; - -pub use self::core::{Entry, OccupiedEntry, VacantEntry}; +use crate::util::{third, try_simplify_range}; +use crate::{Bucket, Entries, Equivalent, HashValue, TryReserveError}; /// A hash table where the iteration order of the key-value pairs is independent /// of the hash values of the keys. @@ -67,12 +77,12 @@ /// assert_eq!(letters[&'u'], 1); /// assert_eq!(letters.get(&'y'), None); /// ``` -#[cfg(has_std)] +#[cfg(feature = "std")] pub struct IndexMap { pub(crate) core: IndexMapCore, hash_builder: S, } -#[cfg(not(has_std))] +#[cfg(not(feature = "std"))] pub struct IndexMap { pub(crate) core: IndexMapCore, hash_builder: S, @@ -140,7 +150,8 @@ } } -#[cfg(has_std)] +#[cfg(feature = "std")] +#[cfg_attr(docsrs, doc(cfg(feature = "std")))] impl IndexMap { /// Create a new map. (Does not allocate.) #[inline] @@ -186,6 +197,11 @@ } } + /// Return the number of elements the map can hold without reallocating. + /// + /// This number is a lower bound; the map might be able to hold more, + /// but is guaranteed to be able to hold at least this many. + /// /// Computes in **O(1)** time. pub fn capacity(&self) -> usize { self.core.capacity() @@ -214,52 +230,38 @@ /// Return an iterator over the key-value pairs of the map, in their order pub fn iter(&self) -> Iter<'_, K, V> { - Iter { - iter: self.as_entries().iter(), - } + Iter::new(self.as_entries()) } /// Return an iterator over the key-value pairs of the map, in their order pub fn iter_mut(&mut self) -> IterMut<'_, K, V> { - IterMut { - iter: self.as_entries_mut().iter_mut(), - } + IterMut::new(self.as_entries_mut()) } /// Return an iterator over the keys of the map, in their order pub fn keys(&self) -> Keys<'_, K, V> { - Keys { - iter: self.as_entries().iter(), - } + Keys::new(self.as_entries()) } /// Return an owning iterator over the keys of the map, in their order pub fn into_keys(self) -> IntoKeys { - IntoKeys { - iter: self.into_entries().into_iter(), - } + IntoKeys::new(self.into_entries()) } /// Return an iterator over the values of the map, in their order pub fn values(&self) -> Values<'_, K, V> { - Values { - iter: self.as_entries().iter(), - } + Values::new(self.as_entries()) } /// Return an iterator over mutable references to the values of the map, /// in their order pub fn values_mut(&mut self) -> ValuesMut<'_, K, V> { - ValuesMut { - iter: self.as_entries_mut().iter_mut(), - } + ValuesMut::new(self.as_entries_mut()) } /// Return an owning iterator over the values of the map, in their order pub fn into_values(self) -> IntoValues { - IntoValues { - iter: self.into_entries().into_iter(), - } + IntoValues::new(self.into_entries()) } /// Remove all key-value pairs in the map, while preserving its capacity. @@ -293,9 +295,7 @@ where R: RangeBounds, { - Drain { - iter: self.core.drain(range), - } + Drain::new(self.core.drain(range)) } /// Splits the collection into two at the given index. @@ -328,6 +328,37 @@ self.core.reserve(additional); } + /// Reserve capacity for `additional` more key-value pairs, without over-allocating. + /// + /// Unlike `reserve`, this does not deliberately over-allocate the entry capacity to avoid + /// frequent re-allocations. However, the underlying data structures may still have internal + /// capacity requirements, and the allocator itself may give more space than requested, so this + /// cannot be relied upon to be precisely minimal. + /// + /// Computes in **O(n)** time. + pub fn reserve_exact(&mut self, additional: usize) { + self.core.reserve_exact(additional); + } + + /// Try to reserve capacity for `additional` more key-value pairs. + /// + /// Computes in **O(n)** time. + pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError> { + self.core.try_reserve(additional) + } + + /// Try to reserve capacity for `additional` more key-value pairs, without over-allocating. + /// + /// Unlike `try_reserve`, this does not deliberately over-allocate the entry capacity to avoid + /// frequent re-allocations. However, the underlying data structures may still have internal + /// capacity requirements, and the allocator itself may give more space than requested, so this + /// cannot be relied upon to be precisely minimal. + /// + /// Computes in **O(n)** time. + pub fn try_reserve_exact(&mut self, additional: usize) -> Result<(), TryReserveError> { + self.core.try_reserve_exact(additional) + } + /// Shrink the capacity of the map as much as possible. /// /// Computes in **O(n)** time. @@ -486,21 +517,6 @@ } } - pub(crate) fn get_full_mut2_impl( - &mut self, - key: &Q, - ) -> Option<(usize, &mut K, &mut V)> - where - Q: Hash + Equivalent, - { - if let Some(i) = self.get_index_of(key) { - let entry = &mut self.as_entries_mut()[i]; - Some((i, &mut entry.key, &mut entry.value)) - } else { - None - } - } - /// Remove the key-value pair equivalent to `key` and return /// its value. /// @@ -713,9 +729,7 @@ { let mut entries = self.into_entries(); entries.sort_by(move |a, b| cmp(&a.key, &a.value, &b.key, &b.value)); - IntoIter { - iter: entries.into_iter(), - } + IntoIter::new(entries) } /// Sort the map's key-value pairs by the default ordering of the keys, but @@ -759,9 +773,25 @@ { let mut entries = self.into_entries(); entries.sort_unstable_by(move |a, b| cmp(&a.key, &a.value, &b.key, &b.value)); - IntoIter { - iter: entries.into_iter(), - } + IntoIter::new(entries) + } + + /// Sort the map’s key-value pairs in place using a sort-key extraction function. + /// + /// During sorting, the function is called at most once per entry, by using temporary storage + /// to remember the results of its evaluation. The order of calls to the function is + /// unspecified and may change between versions of `indexmap` or the standard library. + /// + /// Computes in **O(m n + n log n + c)** time () and **O(n)** space, where the function is + /// **O(m)**, *n* is the length of the map, and *c* the capacity. The sort is stable. + pub fn sort_by_cached_key(&mut self, mut sort_key: F) + where + T: Ord, + F: FnMut(&K, &V) -> T, + { + self.with_entries(move |entries| { + entries.sort_by_cached_key(move |a| sort_key(&a.key, &a.value)); + }); } /// Reverses the order of the map’s key-value pairs in place. @@ -773,6 +803,27 @@ } impl IndexMap { + /// Returns a slice of all the key-value pairs in the map. + /// + /// Computes in **O(1)** time. + pub fn as_slice(&self) -> &Slice { + Slice::from_slice(self.as_entries()) + } + + /// Returns a mutable slice of all the key-value pairs in the map. + /// + /// Computes in **O(1)** time. + pub fn as_mut_slice(&mut self) -> &mut Slice { + Slice::from_mut_slice(self.as_entries_mut()) + } + + /// Converts into a boxed slice of all the key-value pairs in the map. + /// + /// Note that this will drop the inner hash table and any excess capacity. + pub fn into_boxed_slice(self) -> Box> { + Slice::from_boxed(self.into_entries().into_boxed_slice()) + } + /// Get a key-value pair by index /// /// Valid indices are *0 <= index < self.len()* @@ -787,8 +838,30 @@ /// Valid indices are *0 <= index < self.len()* /// /// Computes in **O(1)** time. - pub fn get_index_mut(&mut self, index: usize) -> Option<(&mut K, &mut V)> { - self.as_entries_mut().get_mut(index).map(Bucket::muts) + pub fn get_index_mut(&mut self, index: usize) -> Option<(&K, &mut V)> { + self.as_entries_mut().get_mut(index).map(Bucket::ref_mut) + } + + /// Returns a slice of key-value pairs in the given range of indices. + /// + /// Valid indices are *0 <= index < self.len()* + /// + /// Computes in **O(1)** time. + pub fn get_range>(&self, range: R) -> Option<&Slice> { + let entries = self.as_entries(); + let range = try_simplify_range(range, entries.len())?; + entries.get(range).map(Slice::from_slice) + } + + /// Returns a mutable slice of key-value pairs in the given range of indices. + /// + /// Valid indices are *0 <= index < self.len()* + /// + /// Computes in **O(1)** time. + pub fn get_range_mut>(&mut self, range: R) -> Option<&mut Slice> { + let entries = self.as_entries_mut(); + let range = try_simplify_range(range, entries.len())?; + entries.get_mut(range).map(Slice::from_mut_slice) } /// Get the first key-value pair @@ -866,380 +939,6 @@ } } -/// An iterator over the keys of a `IndexMap`. -/// -/// This `struct` is created by the [`keys`] method on [`IndexMap`]. See its -/// documentation for more. -/// -/// [`keys`]: struct.IndexMap.html#method.keys -/// [`IndexMap`]: struct.IndexMap.html -pub struct Keys<'a, K, V> { - iter: SliceIter<'a, Bucket>, -} - -impl<'a, K, V> Iterator for Keys<'a, K, V> { - type Item = &'a K; - - iterator_methods!(Bucket::key_ref); -} - -impl DoubleEndedIterator for Keys<'_, K, V> { - double_ended_iterator_methods!(Bucket::key_ref); -} - -impl ExactSizeIterator for Keys<'_, K, V> { - fn len(&self) -> usize { - self.iter.len() - } -} - -impl FusedIterator for Keys<'_, K, V> {} - -// FIXME(#26925) Remove in favor of `#[derive(Clone)]` -impl Clone for Keys<'_, K, V> { - fn clone(&self) -> Self { - Keys { - iter: self.iter.clone(), - } - } -} - -impl fmt::Debug for Keys<'_, K, V> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_list().entries(self.clone()).finish() - } -} - -/// An owning iterator over the keys of a `IndexMap`. -/// -/// This `struct` is created by the [`into_keys`] method on [`IndexMap`]. -/// See its documentation for more. -/// -/// [`IndexMap`]: struct.IndexMap.html -/// [`into_keys`]: struct.IndexMap.html#method.into_keys -pub struct IntoKeys { - iter: vec::IntoIter>, -} - -impl Iterator for IntoKeys { - type Item = K; - - iterator_methods!(Bucket::key); -} - -impl DoubleEndedIterator for IntoKeys { - double_ended_iterator_methods!(Bucket::key); -} - -impl ExactSizeIterator for IntoKeys { - fn len(&self) -> usize { - self.iter.len() - } -} - -impl FusedIterator for IntoKeys {} - -impl fmt::Debug for IntoKeys { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let iter = self.iter.as_slice().iter().map(Bucket::key_ref); - f.debug_list().entries(iter).finish() - } -} - -/// An iterator over the values of a `IndexMap`. -/// -/// This `struct` is created by the [`values`] method on [`IndexMap`]. See its -/// documentation for more. -/// -/// [`values`]: struct.IndexMap.html#method.values -/// [`IndexMap`]: struct.IndexMap.html -pub struct Values<'a, K, V> { - iter: SliceIter<'a, Bucket>, -} - -impl<'a, K, V> Iterator for Values<'a, K, V> { - type Item = &'a V; - - iterator_methods!(Bucket::value_ref); -} - -impl DoubleEndedIterator for Values<'_, K, V> { - double_ended_iterator_methods!(Bucket::value_ref); -} - -impl ExactSizeIterator for Values<'_, K, V> { - fn len(&self) -> usize { - self.iter.len() - } -} - -impl FusedIterator for Values<'_, K, V> {} - -// FIXME(#26925) Remove in favor of `#[derive(Clone)]` -impl Clone for Values<'_, K, V> { - fn clone(&self) -> Self { - Values { - iter: self.iter.clone(), - } - } -} - -impl fmt::Debug for Values<'_, K, V> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_list().entries(self.clone()).finish() - } -} - -/// A mutable iterator over the values of a `IndexMap`. -/// -/// This `struct` is created by the [`values_mut`] method on [`IndexMap`]. See its -/// documentation for more. -/// -/// [`values_mut`]: struct.IndexMap.html#method.values_mut -/// [`IndexMap`]: struct.IndexMap.html -pub struct ValuesMut<'a, K, V> { - iter: SliceIterMut<'a, Bucket>, -} - -impl<'a, K, V> Iterator for ValuesMut<'a, K, V> { - type Item = &'a mut V; - - iterator_methods!(Bucket::value_mut); -} - -impl DoubleEndedIterator for ValuesMut<'_, K, V> { - double_ended_iterator_methods!(Bucket::value_mut); -} - -impl ExactSizeIterator for ValuesMut<'_, K, V> { - fn len(&self) -> usize { - self.iter.len() - } -} - -impl FusedIterator for ValuesMut<'_, K, V> {} - -impl fmt::Debug for ValuesMut<'_, K, V> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let iter = self.iter.as_slice().iter().map(Bucket::value_ref); - f.debug_list().entries(iter).finish() - } -} - -/// An owning iterator over the values of a `IndexMap`. -/// -/// This `struct` is created by the [`into_values`] method on [`IndexMap`]. -/// See its documentation for more. -/// -/// [`IndexMap`]: struct.IndexMap.html -/// [`into_values`]: struct.IndexMap.html#method.into_values -pub struct IntoValues { - iter: vec::IntoIter>, -} - -impl Iterator for IntoValues { - type Item = V; - - iterator_methods!(Bucket::value); -} - -impl DoubleEndedIterator for IntoValues { - double_ended_iterator_methods!(Bucket::value); -} - -impl ExactSizeIterator for IntoValues { - fn len(&self) -> usize { - self.iter.len() - } -} - -impl FusedIterator for IntoValues {} - -impl fmt::Debug for IntoValues { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let iter = self.iter.as_slice().iter().map(Bucket::value_ref); - f.debug_list().entries(iter).finish() - } -} - -/// An iterator over the entries of a `IndexMap`. -/// -/// This `struct` is created by the [`iter`] method on [`IndexMap`]. See its -/// documentation for more. -/// -/// [`iter`]: struct.IndexMap.html#method.iter -/// [`IndexMap`]: struct.IndexMap.html -pub struct Iter<'a, K, V> { - iter: SliceIter<'a, Bucket>, -} - -impl<'a, K, V> Iterator for Iter<'a, K, V> { - type Item = (&'a K, &'a V); - - iterator_methods!(Bucket::refs); -} - -impl DoubleEndedIterator for Iter<'_, K, V> { - double_ended_iterator_methods!(Bucket::refs); -} - -impl ExactSizeIterator for Iter<'_, K, V> { - fn len(&self) -> usize { - self.iter.len() - } -} - -impl FusedIterator for Iter<'_, K, V> {} - -// FIXME(#26925) Remove in favor of `#[derive(Clone)]` -impl Clone for Iter<'_, K, V> { - fn clone(&self) -> Self { - Iter { - iter: self.iter.clone(), - } - } -} - -impl fmt::Debug for Iter<'_, K, V> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_list().entries(self.clone()).finish() - } -} - -/// A mutable iterator over the entries of a `IndexMap`. -/// -/// This `struct` is created by the [`iter_mut`] method on [`IndexMap`]. See its -/// documentation for more. -/// -/// [`iter_mut`]: struct.IndexMap.html#method.iter_mut -/// [`IndexMap`]: struct.IndexMap.html -pub struct IterMut<'a, K, V> { - iter: SliceIterMut<'a, Bucket>, -} - -impl<'a, K, V> Iterator for IterMut<'a, K, V> { - type Item = (&'a K, &'a mut V); - - iterator_methods!(Bucket::ref_mut); -} - -impl DoubleEndedIterator for IterMut<'_, K, V> { - double_ended_iterator_methods!(Bucket::ref_mut); -} - -impl ExactSizeIterator for IterMut<'_, K, V> { - fn len(&self) -> usize { - self.iter.len() - } -} - -impl FusedIterator for IterMut<'_, K, V> {} - -impl fmt::Debug for IterMut<'_, K, V> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let iter = self.iter.as_slice().iter().map(Bucket::refs); - f.debug_list().entries(iter).finish() - } -} - -/// An owning iterator over the entries of a `IndexMap`. -/// -/// This `struct` is created by the [`into_iter`] method on [`IndexMap`] -/// (provided by the `IntoIterator` trait). See its documentation for more. -/// -/// [`into_iter`]: struct.IndexMap.html#method.into_iter -/// [`IndexMap`]: struct.IndexMap.html -pub struct IntoIter { - iter: vec::IntoIter>, -} - -impl Iterator for IntoIter { - type Item = (K, V); - - iterator_methods!(Bucket::key_value); -} - -impl DoubleEndedIterator for IntoIter { - double_ended_iterator_methods!(Bucket::key_value); -} - -impl ExactSizeIterator for IntoIter { - fn len(&self) -> usize { - self.iter.len() - } -} - -impl FusedIterator for IntoIter {} - -impl fmt::Debug for IntoIter { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let iter = self.iter.as_slice().iter().map(Bucket::refs); - f.debug_list().entries(iter).finish() - } -} - -/// A draining iterator over the entries of a `IndexMap`. -/// -/// This `struct` is created by the [`drain`] method on [`IndexMap`]. See its -/// documentation for more. -/// -/// [`drain`]: struct.IndexMap.html#method.drain -/// [`IndexMap`]: struct.IndexMap.html -pub struct Drain<'a, K, V> { - pub(crate) iter: vec::Drain<'a, Bucket>, -} - -impl Iterator for Drain<'_, K, V> { - type Item = (K, V); - - iterator_methods!(Bucket::key_value); -} - -impl DoubleEndedIterator for Drain<'_, K, V> { - double_ended_iterator_methods!(Bucket::key_value); -} - -impl ExactSizeIterator for Drain<'_, K, V> { - fn len(&self) -> usize { - self.iter.len() - } -} - -impl FusedIterator for Drain<'_, K, V> {} - -impl fmt::Debug for Drain<'_, K, V> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let iter = self.iter.as_slice().iter().map(Bucket::refs); - f.debug_list().entries(iter).finish() - } -} - -impl<'a, K, V, S> IntoIterator for &'a IndexMap { - type Item = (&'a K, &'a V); - type IntoIter = Iter<'a, K, V>; - fn into_iter(self) -> Self::IntoIter { - self.iter() - } -} - -impl<'a, K, V, S> IntoIterator for &'a mut IndexMap { - type Item = (&'a K, &'a mut V); - type IntoIter = IterMut<'a, K, V>; - fn into_iter(self) -> Self::IntoIter { - self.iter_mut() - } -} - -impl IntoIterator for IndexMap { - type Item = (K, V); - type IntoIter = IntoIter; - fn into_iter(self) -> Self::IntoIter { - IntoIter { - iter: self.into_entries().into_iter(), - } - } -} - /// Access `IndexMap` values corresponding to a key. /// /// # Examples @@ -1421,7 +1120,8 @@ } } -#[cfg(has_std)] +#[cfg(feature = "std")] +#[cfg_attr(docsrs, doc(cfg(feature = "std")))] impl From<[(K, V); N]> for IndexMap where K: Hash + Eq, @@ -1521,427 +1221,3 @@ S: BuildHasher, { } - -#[cfg(test)] -mod tests { - use super::*; - use std::string::String; - - #[test] - fn it_works() { - let mut map = IndexMap::new(); - assert_eq!(map.is_empty(), true); - map.insert(1, ()); - map.insert(1, ()); - assert_eq!(map.len(), 1); - assert!(map.get(&1).is_some()); - assert_eq!(map.is_empty(), false); - } - - #[test] - fn new() { - let map = IndexMap::::new(); - println!("{:?}", map); - assert_eq!(map.capacity(), 0); - assert_eq!(map.len(), 0); - assert_eq!(map.is_empty(), true); - } - - #[test] - fn insert() { - let insert = [0, 4, 2, 12, 8, 7, 11, 5]; - let not_present = [1, 3, 6, 9, 10]; - let mut map = IndexMap::with_capacity(insert.len()); - - for (i, &elt) in insert.iter().enumerate() { - assert_eq!(map.len(), i); - map.insert(elt, elt); - assert_eq!(map.len(), i + 1); - assert_eq!(map.get(&elt), Some(&elt)); - assert_eq!(map[&elt], elt); - } - println!("{:?}", map); - - for &elt in ¬_present { - assert!(map.get(&elt).is_none()); - } - } - - #[test] - fn insert_full() { - let insert = vec![9, 2, 7, 1, 4, 6, 13]; - let present = vec![1, 6, 2]; - let mut map = IndexMap::with_capacity(insert.len()); - - for (i, &elt) in insert.iter().enumerate() { - assert_eq!(map.len(), i); - let (index, existing) = map.insert_full(elt, elt); - assert_eq!(existing, None); - assert_eq!(Some(index), map.get_full(&elt).map(|x| x.0)); - assert_eq!(map.len(), i + 1); - } - - let len = map.len(); - for &elt in &present { - let (index, existing) = map.insert_full(elt, elt); - assert_eq!(existing, Some(elt)); - assert_eq!(Some(index), map.get_full(&elt).map(|x| x.0)); - assert_eq!(map.len(), len); - } - } - - #[test] - fn insert_2() { - let mut map = IndexMap::with_capacity(16); - - let mut keys = vec![]; - keys.extend(0..16); - keys.extend(if cfg!(miri) { 32..64 } else { 128..267 }); - - for &i in &keys { - let old_map = map.clone(); - map.insert(i, ()); - for key in old_map.keys() { - if map.get(key).is_none() { - println!("old_map: {:?}", old_map); - println!("map: {:?}", map); - panic!("did not find {} in map", key); - } - } - } - - for &i in &keys { - assert!(map.get(&i).is_some(), "did not find {}", i); - } - } - - #[test] - fn insert_order() { - let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; - let mut map = IndexMap::new(); - - for &elt in &insert { - map.insert(elt, ()); - } - - assert_eq!(map.keys().count(), map.len()); - assert_eq!(map.keys().count(), insert.len()); - for (a, b) in insert.iter().zip(map.keys()) { - assert_eq!(a, b); - } - for (i, k) in (0..insert.len()).zip(map.keys()) { - assert_eq!(map.get_index(i).unwrap().0, k); - } - } - - #[test] - fn grow() { - let insert = [0, 4, 2, 12, 8, 7, 11]; - let not_present = [1, 3, 6, 9, 10]; - let mut map = IndexMap::with_capacity(insert.len()); - - for (i, &elt) in insert.iter().enumerate() { - assert_eq!(map.len(), i); - map.insert(elt, elt); - assert_eq!(map.len(), i + 1); - assert_eq!(map.get(&elt), Some(&elt)); - assert_eq!(map[&elt], elt); - } - - println!("{:?}", map); - for &elt in &insert { - map.insert(elt * 10, elt); - } - for &elt in &insert { - map.insert(elt * 100, elt); - } - for (i, &elt) in insert.iter().cycle().enumerate().take(100) { - map.insert(elt * 100 + i as i32, elt); - } - println!("{:?}", map); - for &elt in ¬_present { - assert!(map.get(&elt).is_none()); - } - } - - #[test] - fn reserve() { - let mut map = IndexMap::::new(); - assert_eq!(map.capacity(), 0); - map.reserve(100); - let capacity = map.capacity(); - assert!(capacity >= 100); - for i in 0..capacity { - assert_eq!(map.len(), i); - map.insert(i, i * i); - assert_eq!(map.len(), i + 1); - assert_eq!(map.capacity(), capacity); - assert_eq!(map.get(&i), Some(&(i * i))); - } - map.insert(capacity, std::usize::MAX); - assert_eq!(map.len(), capacity + 1); - assert!(map.capacity() > capacity); - assert_eq!(map.get(&capacity), Some(&std::usize::MAX)); - } - - #[test] - fn shrink_to_fit() { - let mut map = IndexMap::::new(); - assert_eq!(map.capacity(), 0); - for i in 0..100 { - assert_eq!(map.len(), i); - map.insert(i, i * i); - assert_eq!(map.len(), i + 1); - assert!(map.capacity() >= i + 1); - assert_eq!(map.get(&i), Some(&(i * i))); - map.shrink_to_fit(); - assert_eq!(map.len(), i + 1); - assert_eq!(map.capacity(), i + 1); - assert_eq!(map.get(&i), Some(&(i * i))); - } - } - - #[test] - fn remove() { - let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; - let mut map = IndexMap::new(); - - for &elt in &insert { - map.insert(elt, elt); - } - - assert_eq!(map.keys().count(), map.len()); - assert_eq!(map.keys().count(), insert.len()); - for (a, b) in insert.iter().zip(map.keys()) { - assert_eq!(a, b); - } - - let remove_fail = [99, 77]; - let remove = [4, 12, 8, 7]; - - for &key in &remove_fail { - assert!(map.swap_remove_full(&key).is_none()); - } - println!("{:?}", map); - for &key in &remove { - //println!("{:?}", map); - let index = map.get_full(&key).unwrap().0; - assert_eq!(map.swap_remove_full(&key), Some((index, key, key))); - } - println!("{:?}", map); - - for key in &insert { - assert_eq!(map.get(key).is_some(), !remove.contains(key)); - } - assert_eq!(map.len(), insert.len() - remove.len()); - assert_eq!(map.keys().count(), insert.len() - remove.len()); - } - - #[test] - fn remove_to_empty() { - let mut map = indexmap! { 0 => 0, 4 => 4, 5 => 5 }; - map.swap_remove(&5).unwrap(); - map.swap_remove(&4).unwrap(); - map.swap_remove(&0).unwrap(); - assert!(map.is_empty()); - } - - #[test] - fn swap_remove_index() { - let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; - let mut map = IndexMap::new(); - - for &elt in &insert { - map.insert(elt, elt * 2); - } - - let mut vector = insert.to_vec(); - let remove_sequence = &[3, 3, 10, 4, 5, 4, 3, 0, 1]; - - // check that the same swap remove sequence on vec and map - // have the same result. - for &rm in remove_sequence { - let out_vec = vector.swap_remove(rm); - let (out_map, _) = map.swap_remove_index(rm).unwrap(); - assert_eq!(out_vec, out_map); - } - assert_eq!(vector.len(), map.len()); - for (a, b) in vector.iter().zip(map.keys()) { - assert_eq!(a, b); - } - } - - #[test] - fn partial_eq_and_eq() { - let mut map_a = IndexMap::new(); - map_a.insert(1, "1"); - map_a.insert(2, "2"); - let mut map_b = map_a.clone(); - assert_eq!(map_a, map_b); - map_b.swap_remove(&1); - assert_ne!(map_a, map_b); - - let map_c: IndexMap<_, String> = map_b.into_iter().map(|(k, v)| (k, v.into())).collect(); - assert_ne!(map_a, map_c); - assert_ne!(map_c, map_a); - } - - #[test] - fn extend() { - let mut map = IndexMap::new(); - map.extend(vec![(&1, &2), (&3, &4)]); - map.extend(vec![(5, 6)]); - assert_eq!( - map.into_iter().collect::>(), - vec![(1, 2), (3, 4), (5, 6)] - ); - } - - #[test] - fn entry() { - let mut map = IndexMap::new(); - - map.insert(1, "1"); - map.insert(2, "2"); - { - let e = map.entry(3); - assert_eq!(e.index(), 2); - let e = e.or_insert("3"); - assert_eq!(e, &"3"); - } - - let e = map.entry(2); - assert_eq!(e.index(), 1); - assert_eq!(e.key(), &2); - match e { - Entry::Occupied(ref e) => assert_eq!(e.get(), &"2"), - Entry::Vacant(_) => panic!(), - } - assert_eq!(e.or_insert("4"), &"2"); - } - - #[test] - fn entry_and_modify() { - let mut map = IndexMap::new(); - - map.insert(1, "1"); - map.entry(1).and_modify(|x| *x = "2"); - assert_eq!(Some(&"2"), map.get(&1)); - - map.entry(2).and_modify(|x| *x = "doesn't exist"); - assert_eq!(None, map.get(&2)); - } - - #[test] - fn entry_or_default() { - let mut map = IndexMap::new(); - - #[derive(Debug, PartialEq)] - enum TestEnum { - DefaultValue, - NonDefaultValue, - } - - impl Default for TestEnum { - fn default() -> Self { - TestEnum::DefaultValue - } - } - - map.insert(1, TestEnum::NonDefaultValue); - assert_eq!(&mut TestEnum::NonDefaultValue, map.entry(1).or_default()); - - assert_eq!(&mut TestEnum::DefaultValue, map.entry(2).or_default()); - } - - #[test] - fn occupied_entry_key() { - // These keys match hash and equality, but their addresses are distinct. - let (k1, k2) = (&mut 1, &mut 1); - let k1_ptr = k1 as *const i32; - let k2_ptr = k2 as *const i32; - assert_ne!(k1_ptr, k2_ptr); - - let mut map = IndexMap::new(); - map.insert(k1, "value"); - match map.entry(k2) { - Entry::Occupied(ref e) => { - // `OccupiedEntry::key` should reference the key in the map, - // not the key that was used to find the entry. - let ptr = *e.key() as *const i32; - assert_eq!(ptr, k1_ptr); - assert_ne!(ptr, k2_ptr); - } - Entry::Vacant(_) => panic!(), - } - } - - #[test] - fn keys() { - let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')]; - let map: IndexMap<_, _> = vec.into_iter().collect(); - let keys: Vec<_> = map.keys().copied().collect(); - assert_eq!(keys.len(), 3); - assert!(keys.contains(&1)); - assert!(keys.contains(&2)); - assert!(keys.contains(&3)); - } - - #[test] - fn into_keys() { - let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')]; - let map: IndexMap<_, _> = vec.into_iter().collect(); - let keys: Vec = map.into_keys().collect(); - assert_eq!(keys.len(), 3); - assert!(keys.contains(&1)); - assert!(keys.contains(&2)); - assert!(keys.contains(&3)); - } - - #[test] - fn values() { - let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')]; - let map: IndexMap<_, _> = vec.into_iter().collect(); - let values: Vec<_> = map.values().copied().collect(); - assert_eq!(values.len(), 3); - assert!(values.contains(&'a')); - assert!(values.contains(&'b')); - assert!(values.contains(&'c')); - } - - #[test] - fn values_mut() { - let vec = vec![(1, 1), (2, 2), (3, 3)]; - let mut map: IndexMap<_, _> = vec.into_iter().collect(); - for value in map.values_mut() { - *value *= 2 - } - let values: Vec<_> = map.values().copied().collect(); - assert_eq!(values.len(), 3); - assert!(values.contains(&2)); - assert!(values.contains(&4)); - assert!(values.contains(&6)); - } - - #[test] - fn into_values() { - let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')]; - let map: IndexMap<_, _> = vec.into_iter().collect(); - let values: Vec = map.into_values().collect(); - assert_eq!(values.len(), 3); - assert!(values.contains(&'a')); - assert!(values.contains(&'b')); - assert!(values.contains(&'c')); - } - - #[test] - #[cfg(has_std)] - fn from_array() { - let map = IndexMap::from([(1, 2), (3, 4)]); - let mut expected = IndexMap::new(); - expected.insert(1, 2); - expected.insert(3, 4); - - assert_eq!(map, expected) - } -} diff -Nru temporalio-1.3.0/vendor/indexmap/src/mutable_keys.rs temporalio-1.3.0/vendor/indexmap/src/mutable_keys.rs --- temporalio-1.3.0/vendor/indexmap/src/mutable_keys.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/mutable_keys.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,6 @@ use core::hash::{BuildHasher, Hash}; -use super::{Equivalent, IndexMap}; - -pub struct PrivateMarker {} +use super::{Bucket, Entries, Equivalent, IndexMap}; /// Opt-in mutable access to keys. /// @@ -16,11 +14,15 @@ /// implementing PartialEq, Eq, or Hash incorrectly would be). /// /// `use` this trait to enable its methods for `IndexMap`. -pub trait MutableKeys { +/// +/// This trait is sealed and cannot be implemented for types outside this crate. +pub trait MutableKeys: private::Sealed { type Key; type Value; /// Return item index, mutable reference to key and value + /// + /// Computes in **O(1)** time (average). fn get_full_mut2( &mut self, key: &Q, @@ -28,6 +30,13 @@ where Q: Hash + Equivalent; + /// Return mutable reference to key and value at an index. + /// + /// Valid indices are *0 <= index < self.len()* + /// + /// Computes in **O(1)** time. + fn get_index_mut2(&mut self, index: usize) -> Option<(&mut Self::Key, &mut Self::Value)>; + /// Scan through each key-value pair in the map and keep those where the /// closure `keep` returns `true`. /// @@ -38,11 +47,6 @@ fn retain2(&mut self, keep: F) where F: FnMut(&mut Self::Key, &mut Self::Value) -> bool; - - /// This method is not useful in itself – it is there to “seal†the trait - /// for external implementation, so that we can add methods without - /// causing breaking changes. - fn __private_marker(&self) -> PrivateMarker; } /// Opt-in mutable access to keys. @@ -55,11 +59,21 @@ { type Key = K; type Value = V; + fn get_full_mut2(&mut self, key: &Q) -> Option<(usize, &mut K, &mut V)> where Q: Hash + Equivalent, { - self.get_full_mut2_impl(key) + if let Some(i) = self.get_index_of(key) { + let entry = &mut self.as_entries_mut()[i]; + Some((i, &mut entry.key, &mut entry.value)) + } else { + None + } + } + + fn get_index_mut2(&mut self, index: usize) -> Option<(&mut K, &mut V)> { + self.as_entries_mut().get_mut(index).map(Bucket::muts) } fn retain2(&mut self, keep: F) @@ -68,8 +82,10 @@ { self.retain_mut(keep) } +} - fn __private_marker(&self) -> PrivateMarker { - PrivateMarker {} - } +mod private { + pub trait Sealed {} + + impl Sealed for super::IndexMap {} } diff -Nru temporalio-1.3.0/vendor/indexmap/src/rayon/map.rs temporalio-1.3.0/vendor/indexmap/src/rayon/map.rs --- temporalio-1.3.0/vendor/indexmap/src/rayon/map.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/rayon/map.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,24 +2,23 @@ //! //! You will rarely need to interact with this module directly unless you need to name one of the //! iterator types. -//! -//! Requires crate feature `"rayon"` use super::collect; use rayon::iter::plumbing::{Consumer, ProducerCallback, UnindexedConsumer}; use rayon::prelude::*; use crate::vec::Vec; +use alloc::boxed::Box; use core::cmp::Ordering; use core::fmt; use core::hash::{BuildHasher, Hash}; use core::ops::RangeBounds; +use crate::map::Slice; use crate::Bucket; use crate::Entries; use crate::IndexMap; -/// Requires crate feature `"rayon"`. impl IntoParallelIterator for IndexMap where K: Send, @@ -35,6 +34,21 @@ } } +impl IntoParallelIterator for Box> +where + K: Send, + V: Send, +{ + type Item = (K, V); + type Iter = IntoParIter; + + fn into_par_iter(self) -> Self::Iter { + IntoParIter { + entries: self.into_entries(), + } + } +} + /// A parallel owning iterator over the entries of a `IndexMap`. /// /// This `struct` is created by the [`into_par_iter`] method on [`IndexMap`] @@ -63,7 +77,6 @@ indexed_parallel_iterator_methods!(Bucket::key_value); } -/// Requires crate feature `"rayon"`. impl<'a, K, V, S> IntoParallelIterator for &'a IndexMap where K: Sync, @@ -79,6 +92,21 @@ } } +impl<'a, K, V> IntoParallelIterator for &'a Slice +where + K: Sync, + V: Sync, +{ + type Item = (&'a K, &'a V); + type Iter = ParIter<'a, K, V>; + + fn into_par_iter(self) -> Self::Iter { + ParIter { + entries: &self.entries, + } + } +} + /// A parallel iterator over the entries of a `IndexMap`. /// /// This `struct` is created by the [`par_iter`] method on [`IndexMap`] @@ -113,7 +141,6 @@ indexed_parallel_iterator_methods!(Bucket::refs); } -/// Requires crate feature `"rayon"`. impl<'a, K, V, S> IntoParallelIterator for &'a mut IndexMap where K: Sync + Send, @@ -129,6 +156,21 @@ } } +impl<'a, K, V> IntoParallelIterator for &'a mut Slice +where + K: Sync + Send, + V: Send, +{ + type Item = (&'a K, &'a mut V); + type Iter = ParIterMut<'a, K, V>; + + fn into_par_iter(self) -> Self::Iter { + ParIterMut { + entries: &mut self.entries, + } + } +} + /// A parallel mutable iterator over the entries of a `IndexMap`. /// /// This `struct` is created by the [`par_iter_mut`] method on [`IndexMap`] @@ -157,7 +199,6 @@ indexed_parallel_iterator_methods!(Bucket::ref_mut); } -/// Requires crate feature `"rayon"`. impl<'a, K, V, S> ParallelDrainRange for &'a mut IndexMap where K: Send, @@ -225,6 +266,37 @@ } } +/// Parallel iterator methods and other parallel methods. +/// +/// The following methods **require crate feature `"rayon"`**. +/// +/// See also the `IntoParallelIterator` implementations. +impl Slice +where + K: Sync, + V: Sync, +{ + /// Return a parallel iterator over the keys of the map slice. + /// + /// While parallel iterators can process items in any order, their relative order + /// in the slice is still preserved for operations like `reduce` and `collect`. + pub fn par_keys(&self) -> ParKeys<'_, K, V> { + ParKeys { + entries: &self.entries, + } + } + + /// Return a parallel iterator over the values of the map slice. + /// + /// While parallel iterators can process items in any order, their relative order + /// in the slice is still preserved for operations like `reduce` and `collect`. + pub fn par_values(&self) -> ParValues<'_, K, V> { + ParValues { + entries: &self.entries, + } + } +} + impl IndexMap where K: Hash + Eq + Sync, @@ -314,7 +386,6 @@ indexed_parallel_iterator_methods!(Bucket::value_ref); } -/// Requires crate feature `"rayon"`. impl IndexMap where K: Send, @@ -331,6 +402,22 @@ } } +impl Slice +where + K: Send, + V: Send, +{ + /// Return a parallel iterator over mutable references to the the values of the map slice. + /// + /// While parallel iterators can process items in any order, their relative order + /// in the slice is still preserved for operations like `reduce` and `collect`. + pub fn par_values_mut(&mut self) -> ParValuesMut<'_, K, V> { + ParValuesMut { + entries: &mut self.entries, + } + } +} + impl IndexMap where K: Hash + Eq + Send, @@ -406,6 +493,18 @@ entries.par_sort_unstable_by(move |a, b| cmp(&a.key, &a.value, &b.key, &b.value)); IntoParIter { entries } } + + /// Sort the map’s key-value pairs in place and in parallel, using a sort-key extraction + /// function. + pub fn par_sort_by_cached_key(&mut self, sort_key: F) + where + T: Ord + Send, + F: Fn(&K, &V) -> T + Sync, + { + self.with_entries(move |entries| { + entries.par_sort_by_cached_key(move |a| sort_key(&a.key, &a.value)); + }); + } } /// A parallel mutable iterator over the values of a `IndexMap`. @@ -436,7 +535,6 @@ indexed_parallel_iterator_methods!(Bucket::value_mut); } -/// Requires crate feature `"rayon"`. impl FromParallelIterator<(K, V)> for IndexMap where K: Eq + Hash + Send, @@ -457,7 +555,6 @@ } } -/// Requires crate feature `"rayon"`. impl ParallelExtend<(K, V)> for IndexMap where K: Eq + Hash + Send, @@ -474,7 +571,6 @@ } } -/// Requires crate feature `"rayon"`. impl<'a, K: 'a, V: 'a, S> ParallelExtend<(&'a K, &'a V)> for IndexMap where K: Copy + Eq + Hash + Send + Sync, diff -Nru temporalio-1.3.0/vendor/indexmap/src/rayon/set.rs temporalio-1.3.0/vendor/indexmap/src/rayon/set.rs --- temporalio-1.3.0/vendor/indexmap/src/rayon/set.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/rayon/set.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,25 +2,24 @@ //! //! You will rarely need to interact with this module directly unless you need to name one of the //! iterator types. -//! -//! Requires crate feature `"rayon"`. use super::collect; use rayon::iter::plumbing::{Consumer, ProducerCallback, UnindexedConsumer}; use rayon::prelude::*; use crate::vec::Vec; +use alloc::boxed::Box; use core::cmp::Ordering; use core::fmt; use core::hash::{BuildHasher, Hash}; use core::ops::RangeBounds; +use crate::set::Slice; use crate::Entries; use crate::IndexSet; type Bucket = crate::Bucket; -/// Requires crate feature `"rayon"`. impl IntoParallelIterator for IndexSet where T: Send, @@ -35,6 +34,20 @@ } } +impl IntoParallelIterator for Box> +where + T: Send, +{ + type Item = T; + type Iter = IntoParIter; + + fn into_par_iter(self) -> Self::Iter { + IntoParIter { + entries: self.into_entries(), + } + } +} + /// A parallel owning iterator over the items of a `IndexSet`. /// /// This `struct` is created by the [`into_par_iter`] method on [`IndexSet`] @@ -63,7 +76,6 @@ indexed_parallel_iterator_methods!(Bucket::key); } -/// Requires crate feature `"rayon"`. impl<'a, T, S> IntoParallelIterator for &'a IndexSet where T: Sync, @@ -78,6 +90,20 @@ } } +impl<'a, T> IntoParallelIterator for &'a Slice +where + T: Sync, +{ + type Item = &'a T; + type Iter = ParIter<'a, T>; + + fn into_par_iter(self) -> Self::Iter { + ParIter { + entries: &self.entries, + } + } +} + /// A parallel iterator over the items of a `IndexSet`. /// /// This `struct` is created by the [`par_iter`] method on [`IndexSet`] @@ -112,7 +138,6 @@ indexed_parallel_iterator_methods!(Bucket::key_ref); } -/// Requires crate feature `"rayon"`. impl<'a, T, S> ParallelDrainRange for &'a mut IndexSet where T: Send, @@ -540,9 +565,19 @@ entries.par_sort_unstable_by(move |a, b| cmp(&a.key, &b.key)); IntoParIter { entries } } + + /// Sort the set’s values in place and in parallel, using a key extraction function. + pub fn par_sort_by_cached_key(&mut self, sort_key: F) + where + K: Ord + Send, + F: Fn(&T) -> K + Sync, + { + self.with_entries(move |entries| { + entries.par_sort_by_cached_key(move |a| sort_key(&a.key)); + }); + } } -/// Requires crate feature `"rayon"`. impl FromParallelIterator for IndexSet where T: Eq + Hash + Send, @@ -562,7 +597,6 @@ } } -/// Requires crate feature `"rayon"`. impl ParallelExtend for IndexSet where T: Eq + Hash + Send, @@ -578,7 +612,6 @@ } } -/// Requires crate feature `"rayon"`. impl<'a, T: 'a, S> ParallelExtend<&'a T> for IndexSet where T: Copy + Eq + Hash + Send + Sync, diff -Nru temporalio-1.3.0/vendor/indexmap/src/serde.rs temporalio-1.3.0/vendor/indexmap/src/serde.rs --- temporalio-1.3.0/vendor/indexmap/src/serde.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/serde.rs 2023-10-30 19:40:00.000000000 +0000 @@ -10,7 +10,6 @@ use crate::IndexMap; -/// Requires crate feature `"serde"` or `"serde-1"` impl Serialize for IndexMap where K: Serialize + Hash + Eq, @@ -54,7 +53,6 @@ } } -/// Requires crate feature `"serde"` or `"serde-1"` impl<'de, K, V, S> Deserialize<'de> for IndexMap where K: Deserialize<'de> + Eq + Hash, @@ -85,7 +83,6 @@ use crate::IndexSet; -/// Requires crate feature `"serde"` or `"serde-1"` impl Serialize for IndexSet where T: Serialize + Hash + Eq, @@ -127,7 +124,6 @@ } } -/// Requires crate feature `"serde"` or `"serde-1"` impl<'de, T, S> Deserialize<'de> for IndexSet where T: Deserialize<'de> + Eq + Hash, diff -Nru temporalio-1.3.0/vendor/indexmap/src/serde_seq.rs temporalio-1.3.0/vendor/indexmap/src/serde_seq.rs --- temporalio-1.3.0/vendor/indexmap/src/serde_seq.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/serde_seq.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,112 +0,0 @@ -//! Functions to serialize and deserialize an `IndexMap` as an ordered sequence. -//! -//! The default `serde` implementation serializes `IndexMap` as a normal map, -//! but there is no guarantee that serialization formats will preserve the order -//! of the key-value pairs. This module serializes `IndexMap` as a sequence of -//! `(key, value)` elements instead, in order. -//! -//! This module may be used in a field attribute for derived implementations: -//! -//! ``` -//! # use indexmap::IndexMap; -//! # use serde_derive::{Deserialize, Serialize}; -//! #[derive(Deserialize, Serialize)] -//! struct Data { -//! #[serde(with = "indexmap::serde_seq")] -//! map: IndexMap, -//! // ... -//! } -//! ``` -//! -//! Requires crate feature `"serde"` or `"serde-1"` - -use serde::de::{Deserialize, Deserializer, SeqAccess, Visitor}; -use serde::ser::{Serialize, Serializer}; - -use core::fmt::{self, Formatter}; -use core::hash::{BuildHasher, Hash}; -use core::marker::PhantomData; - -use crate::IndexMap; - -/// Serializes an `IndexMap` as an ordered sequence. -/// -/// This function may be used in a field attribute for deriving `Serialize`: -/// -/// ``` -/// # use indexmap::IndexMap; -/// # use serde_derive::Serialize; -/// #[derive(Serialize)] -/// struct Data { -/// #[serde(serialize_with = "indexmap::serde_seq::serialize")] -/// map: IndexMap, -/// // ... -/// } -/// ``` -/// -/// Requires crate feature `"serde"` or `"serde-1"` -pub fn serialize(map: &IndexMap, serializer: T) -> Result -where - K: Serialize + Hash + Eq, - V: Serialize, - S: BuildHasher, - T: Serializer, -{ - serializer.collect_seq(map) -} - -/// Visitor to deserialize a *sequenced* `IndexMap` -struct SeqVisitor(PhantomData<(K, V, S)>); - -impl<'de, K, V, S> Visitor<'de> for SeqVisitor -where - K: Deserialize<'de> + Eq + Hash, - V: Deserialize<'de>, - S: Default + BuildHasher, -{ - type Value = IndexMap; - - fn expecting(&self, formatter: &mut Formatter<'_>) -> fmt::Result { - write!(formatter, "a sequenced map") - } - - fn visit_seq(self, mut seq: A) -> Result - where - A: SeqAccess<'de>, - { - let capacity = seq.size_hint().unwrap_or(0); - let mut map = IndexMap::with_capacity_and_hasher(capacity, S::default()); - - while let Some((key, value)) = seq.next_element()? { - map.insert(key, value); - } - - Ok(map) - } -} - -/// Deserializes an `IndexMap` from an ordered sequence. -/// -/// This function may be used in a field attribute for deriving `Deserialize`: -/// -/// ``` -/// # use indexmap::IndexMap; -/// # use serde_derive::Deserialize; -/// #[derive(Deserialize)] -/// struct Data { -/// #[serde(deserialize_with = "indexmap::serde_seq::deserialize")] -/// map: IndexMap, -/// // ... -/// } -/// ``` -/// -/// Requires crate feature `"serde"` or `"serde-1"` -pub fn deserialize<'de, D, K, V, S>(deserializer: D) -> Result, D::Error> -where - D: Deserializer<'de>, - K: Deserialize<'de> + Eq + Hash, - V: Deserialize<'de>, - S: Default + BuildHasher, -{ - deserializer.deserialize_seq(SeqVisitor(PhantomData)) -} diff -Nru temporalio-1.3.0/vendor/indexmap/src/set/iter.rs temporalio-1.3.0/vendor/indexmap/src/set/iter.rs --- temporalio-1.3.0/vendor/indexmap/src/set/iter.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/set/iter.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,543 @@ +use super::{Bucket, Entries, IndexSet, Slice}; + +use alloc::vec::{self, Vec}; +use core::fmt; +use core::hash::{BuildHasher, Hash}; +use core::iter::{Chain, FusedIterator}; +use core::slice::Iter as SliceIter; + +impl<'a, T, S> IntoIterator for &'a IndexSet { + type Item = &'a T; + type IntoIter = Iter<'a, T>; + + fn into_iter(self) -> Self::IntoIter { + self.iter() + } +} + +impl IntoIterator for IndexSet { + type Item = T; + type IntoIter = IntoIter; + + fn into_iter(self) -> Self::IntoIter { + IntoIter::new(self.into_entries()) + } +} + +/// An iterator over the items of a `IndexSet`. +/// +/// This `struct` is created by the [`iter`] method on [`IndexSet`]. +/// See its documentation for more. +/// +/// [`IndexSet`]: struct.IndexSet.html +/// [`iter`]: struct.IndexSet.html#method.iter +pub struct Iter<'a, T> { + iter: SliceIter<'a, Bucket>, +} + +impl<'a, T> Iter<'a, T> { + pub(super) fn new(entries: &'a [Bucket]) -> Self { + Self { + iter: entries.iter(), + } + } + + /// Returns a slice of the remaining entries in the iterator. + pub fn as_slice(&self) -> &'a Slice { + Slice::from_slice(self.iter.as_slice()) + } +} + +impl<'a, T> Iterator for Iter<'a, T> { + type Item = &'a T; + + iterator_methods!(Bucket::key_ref); +} + +impl DoubleEndedIterator for Iter<'_, T> { + double_ended_iterator_methods!(Bucket::key_ref); +} + +impl ExactSizeIterator for Iter<'_, T> { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for Iter<'_, T> {} + +impl Clone for Iter<'_, T> { + fn clone(&self) -> Self { + Iter { + iter: self.iter.clone(), + } + } +} + +impl fmt::Debug for Iter<'_, T> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self.clone()).finish() + } +} + +impl Default for Iter<'_, T> { + fn default() -> Self { + Self { iter: [].iter() } + } +} + +/// An owning iterator over the items of a `IndexSet`. +/// +/// This `struct` is created by the [`into_iter`] method on [`IndexSet`] +/// (provided by the `IntoIterator` trait). See its documentation for more. +/// +/// [`IndexSet`]: struct.IndexSet.html +/// [`into_iter`]: struct.IndexSet.html#method.into_iter +pub struct IntoIter { + iter: vec::IntoIter>, +} + +impl IntoIter { + pub(super) fn new(entries: Vec>) -> Self { + Self { + iter: entries.into_iter(), + } + } + + /// Returns a slice of the remaining entries in the iterator. + pub fn as_slice(&self) -> &Slice { + Slice::from_slice(self.iter.as_slice()) + } +} + +impl Iterator for IntoIter { + type Item = T; + + iterator_methods!(Bucket::key); +} + +impl DoubleEndedIterator for IntoIter { + double_ended_iterator_methods!(Bucket::key); +} + +impl ExactSizeIterator for IntoIter { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for IntoIter {} + +impl fmt::Debug for IntoIter { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.iter.as_slice().iter().map(Bucket::key_ref); + f.debug_list().entries(iter).finish() + } +} + +impl Default for IntoIter { + fn default() -> Self { + Self { + iter: Vec::new().into_iter(), + } + } +} + +/// A draining iterator over the items of a `IndexSet`. +/// +/// This `struct` is created by the [`drain`] method on [`IndexSet`]. +/// See its documentation for more. +/// +/// [`IndexSet`]: struct.IndexSet.html +/// [`drain`]: struct.IndexSet.html#method.drain +pub struct Drain<'a, T> { + iter: vec::Drain<'a, Bucket>, +} + +impl<'a, T> Drain<'a, T> { + pub(super) fn new(iter: vec::Drain<'a, Bucket>) -> Self { + Self { iter } + } + + /// Returns a slice of the remaining entries in the iterator. + pub fn as_slice(&self) -> &Slice { + Slice::from_slice(self.iter.as_slice()) + } +} + +impl Iterator for Drain<'_, T> { + type Item = T; + + iterator_methods!(Bucket::key); +} + +impl DoubleEndedIterator for Drain<'_, T> { + double_ended_iterator_methods!(Bucket::key); +} + +impl ExactSizeIterator for Drain<'_, T> { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for Drain<'_, T> {} + +impl fmt::Debug for Drain<'_, T> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.iter.as_slice().iter().map(Bucket::key_ref); + f.debug_list().entries(iter).finish() + } +} + +/// A lazy iterator producing elements in the difference of `IndexSet`s. +/// +/// This `struct` is created by the [`difference`] method on [`IndexSet`]. +/// See its documentation for more. +/// +/// [`IndexSet`]: struct.IndexSet.html +/// [`difference`]: struct.IndexSet.html#method.difference +pub struct Difference<'a, T, S> { + iter: Iter<'a, T>, + other: &'a IndexSet, +} + +impl<'a, T, S> Difference<'a, T, S> { + pub(super) fn new(set: &'a IndexSet, other: &'a IndexSet) -> Self { + Self { + iter: set.iter(), + other, + } + } +} + +impl<'a, T, S> Iterator for Difference<'a, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ + type Item = &'a T; + + fn next(&mut self) -> Option { + while let Some(item) = self.iter.next() { + if !self.other.contains(item) { + return Some(item); + } + } + None + } + + fn size_hint(&self) -> (usize, Option) { + (0, self.iter.size_hint().1) + } +} + +impl DoubleEndedIterator for Difference<'_, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ + fn next_back(&mut self) -> Option { + while let Some(item) = self.iter.next_back() { + if !self.other.contains(item) { + return Some(item); + } + } + None + } +} + +impl FusedIterator for Difference<'_, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ +} + +impl Clone for Difference<'_, T, S> { + fn clone(&self) -> Self { + Difference { + iter: self.iter.clone(), + ..*self + } + } +} + +impl fmt::Debug for Difference<'_, T, S> +where + T: fmt::Debug + Eq + Hash, + S: BuildHasher, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self.clone()).finish() + } +} + +/// A lazy iterator producing elements in the intersection of `IndexSet`s. +/// +/// This `struct` is created by the [`intersection`] method on [`IndexSet`]. +/// See its documentation for more. +/// +/// [`IndexSet`]: struct.IndexSet.html +/// [`intersection`]: struct.IndexSet.html#method.intersection +pub struct Intersection<'a, T, S> { + iter: Iter<'a, T>, + other: &'a IndexSet, +} + +impl<'a, T, S> Intersection<'a, T, S> { + pub(super) fn new(set: &'a IndexSet, other: &'a IndexSet) -> Self { + Self { + iter: set.iter(), + other, + } + } +} + +impl<'a, T, S> Iterator for Intersection<'a, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ + type Item = &'a T; + + fn next(&mut self) -> Option { + while let Some(item) = self.iter.next() { + if self.other.contains(item) { + return Some(item); + } + } + None + } + + fn size_hint(&self) -> (usize, Option) { + (0, self.iter.size_hint().1) + } +} + +impl DoubleEndedIterator for Intersection<'_, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ + fn next_back(&mut self) -> Option { + while let Some(item) = self.iter.next_back() { + if self.other.contains(item) { + return Some(item); + } + } + None + } +} + +impl FusedIterator for Intersection<'_, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ +} + +impl Clone for Intersection<'_, T, S> { + fn clone(&self) -> Self { + Intersection { + iter: self.iter.clone(), + ..*self + } + } +} + +impl fmt::Debug for Intersection<'_, T, S> +where + T: fmt::Debug + Eq + Hash, + S: BuildHasher, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self.clone()).finish() + } +} + +/// A lazy iterator producing elements in the symmetric difference of `IndexSet`s. +/// +/// This `struct` is created by the [`symmetric_difference`] method on +/// [`IndexSet`]. See its documentation for more. +/// +/// [`IndexSet`]: struct.IndexSet.html +/// [`symmetric_difference`]: struct.IndexSet.html#method.symmetric_difference +pub struct SymmetricDifference<'a, T, S1, S2> { + iter: Chain, Difference<'a, T, S1>>, +} + +impl<'a, T, S1, S2> SymmetricDifference<'a, T, S1, S2> +where + T: Eq + Hash, + S1: BuildHasher, + S2: BuildHasher, +{ + pub(super) fn new(set1: &'a IndexSet, set2: &'a IndexSet) -> Self { + let diff1 = set1.difference(set2); + let diff2 = set2.difference(set1); + Self { + iter: diff1.chain(diff2), + } + } +} + +impl<'a, T, S1, S2> Iterator for SymmetricDifference<'a, T, S1, S2> +where + T: Eq + Hash, + S1: BuildHasher, + S2: BuildHasher, +{ + type Item = &'a T; + + fn next(&mut self) -> Option { + self.iter.next() + } + + fn size_hint(&self) -> (usize, Option) { + self.iter.size_hint() + } + + fn fold(self, init: B, f: F) -> B + where + F: FnMut(B, Self::Item) -> B, + { + self.iter.fold(init, f) + } +} + +impl DoubleEndedIterator for SymmetricDifference<'_, T, S1, S2> +where + T: Eq + Hash, + S1: BuildHasher, + S2: BuildHasher, +{ + fn next_back(&mut self) -> Option { + self.iter.next_back() + } + + fn rfold(self, init: B, f: F) -> B + where + F: FnMut(B, Self::Item) -> B, + { + self.iter.rfold(init, f) + } +} + +impl FusedIterator for SymmetricDifference<'_, T, S1, S2> +where + T: Eq + Hash, + S1: BuildHasher, + S2: BuildHasher, +{ +} + +impl Clone for SymmetricDifference<'_, T, S1, S2> { + fn clone(&self) -> Self { + SymmetricDifference { + iter: self.iter.clone(), + } + } +} + +impl fmt::Debug for SymmetricDifference<'_, T, S1, S2> +where + T: fmt::Debug + Eq + Hash, + S1: BuildHasher, + S2: BuildHasher, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self.clone()).finish() + } +} + +/// A lazy iterator producing elements in the union of `IndexSet`s. +/// +/// This `struct` is created by the [`union`] method on [`IndexSet`]. +/// See its documentation for more. +/// +/// [`IndexSet`]: struct.IndexSet.html +/// [`union`]: struct.IndexSet.html#method.union +pub struct Union<'a, T, S> { + iter: Chain, Difference<'a, T, S>>, +} + +impl<'a, T, S> Union<'a, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ + pub(super) fn new(set1: &'a IndexSet, set2: &'a IndexSet) -> Self + where + S2: BuildHasher, + { + Self { + iter: set1.iter().chain(set2.difference(set1)), + } + } +} + +impl<'a, T, S> Iterator for Union<'a, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ + type Item = &'a T; + + fn next(&mut self) -> Option { + self.iter.next() + } + + fn size_hint(&self) -> (usize, Option) { + self.iter.size_hint() + } + + fn fold(self, init: B, f: F) -> B + where + F: FnMut(B, Self::Item) -> B, + { + self.iter.fold(init, f) + } +} + +impl DoubleEndedIterator for Union<'_, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ + fn next_back(&mut self) -> Option { + self.iter.next_back() + } + + fn rfold(self, init: B, f: F) -> B + where + F: FnMut(B, Self::Item) -> B, + { + self.iter.rfold(init, f) + } +} + +impl FusedIterator for Union<'_, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ +} + +impl Clone for Union<'_, T, S> { + fn clone(&self) -> Self { + Union { + iter: self.iter.clone(), + } + } +} + +impl fmt::Debug for Union<'_, T, S> +where + T: fmt::Debug + Eq + Hash, + S: BuildHasher, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self.clone()).finish() + } +} diff -Nru temporalio-1.3.0/vendor/indexmap/src/set/slice.rs temporalio-1.3.0/vendor/indexmap/src/set/slice.rs --- temporalio-1.3.0/vendor/indexmap/src/set/slice.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/set/slice.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,278 @@ +use super::{Bucket, Entries, IndexSet, IntoIter, Iter}; +use crate::util::try_simplify_range; + +use alloc::boxed::Box; +use alloc::vec::Vec; +use core::cmp::Ordering; +use core::fmt; +use core::hash::{Hash, Hasher}; +use core::ops::{self, Bound, Index, RangeBounds}; + +/// A dynamically-sized slice of values in an `IndexSet`. +/// +/// This supports indexed operations much like a `[T]` slice, +/// but not any hashed operations on the values. +/// +/// Unlike `IndexSet`, `Slice` does consider the order for `PartialEq` +/// and `Eq`, and it also implements `PartialOrd`, `Ord`, and `Hash`. +#[repr(transparent)] +pub struct Slice { + pub(crate) entries: [Bucket], +} + +// SAFETY: `Slice` is a transparent wrapper around `[Bucket]`, +// and reference lifetimes are bound together in function signatures. +#[allow(unsafe_code)] +impl Slice { + pub(super) fn from_slice(entries: &[Bucket]) -> &Self { + unsafe { &*(entries as *const [Bucket] as *const Self) } + } + + pub(super) fn from_boxed(entries: Box<[Bucket]>) -> Box { + unsafe { Box::from_raw(Box::into_raw(entries) as *mut Self) } + } + + fn into_boxed(self: Box) -> Box<[Bucket]> { + unsafe { Box::from_raw(Box::into_raw(self) as *mut [Bucket]) } + } +} + +impl Slice { + pub(crate) fn into_entries(self: Box) -> Vec> { + self.into_boxed().into_vec() + } + + /// Return the number of elements in the set slice. + pub fn len(&self) -> usize { + self.entries.len() + } + + /// Returns true if the set slice contains no elements. + pub fn is_empty(&self) -> bool { + self.entries.is_empty() + } + + /// Get a value by index. + /// + /// Valid indices are *0 <= index < self.len()* + pub fn get_index(&self, index: usize) -> Option<&T> { + self.entries.get(index).map(Bucket::key_ref) + } + + /// Returns a slice of values in the given range of indices. + /// + /// Valid indices are *0 <= index < self.len()* + pub fn get_range>(&self, range: R) -> Option<&Self> { + let range = try_simplify_range(range, self.entries.len())?; + self.entries.get(range).map(Self::from_slice) + } + + /// Get the first value. + pub fn first(&self) -> Option<&T> { + self.entries.first().map(Bucket::key_ref) + } + + /// Get the last value. + pub fn last(&self) -> Option<&T> { + self.entries.last().map(Bucket::key_ref) + } + + /// Divides one slice into two at an index. + /// + /// ***Panics*** if `index > len`. + pub fn split_at(&self, index: usize) -> (&Self, &Self) { + let (first, second) = self.entries.split_at(index); + (Self::from_slice(first), Self::from_slice(second)) + } + + /// Returns the first value and the rest of the slice, + /// or `None` if it is empty. + pub fn split_first(&self) -> Option<(&T, &Self)> { + if let [first, rest @ ..] = &self.entries { + Some((&first.key, Self::from_slice(rest))) + } else { + None + } + } + + /// Returns the last value and the rest of the slice, + /// or `None` if it is empty. + pub fn split_last(&self) -> Option<(&T, &Self)> { + if let [rest @ .., last] = &self.entries { + Some((&last.key, Self::from_slice(rest))) + } else { + None + } + } + + /// Return an iterator over the values of the set slice. + pub fn iter(&self) -> Iter<'_, T> { + Iter::new(&self.entries) + } +} + +impl<'a, T> IntoIterator for &'a Slice { + type IntoIter = Iter<'a, T>; + type Item = &'a T; + + fn into_iter(self) -> Self::IntoIter { + self.iter() + } +} + +impl IntoIterator for Box> { + type IntoIter = IntoIter; + type Item = T; + + fn into_iter(self) -> Self::IntoIter { + IntoIter::new(self.into_entries()) + } +} + +impl Default for &'_ Slice { + fn default() -> Self { + Slice::from_slice(&[]) + } +} + +impl Default for Box> { + fn default() -> Self { + Slice::from_boxed(Box::default()) + } +} + +impl Clone for Box> { + fn clone(&self) -> Self { + Slice::from_boxed(self.entries.to_vec().into_boxed_slice()) + } +} + +impl From<&Slice> for Box> { + fn from(slice: &Slice) -> Self { + Slice::from_boxed(Box::from(&slice.entries)) + } +} + +impl fmt::Debug for Slice { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self).finish() + } +} + +impl PartialEq for Slice { + fn eq(&self, other: &Self) -> bool { + self.len() == other.len() && self.iter().eq(other) + } +} + +impl Eq for Slice {} + +impl PartialOrd for Slice { + fn partial_cmp(&self, other: &Self) -> Option { + self.iter().partial_cmp(other) + } +} + +impl Ord for Slice { + fn cmp(&self, other: &Self) -> Ordering { + self.iter().cmp(other) + } +} + +impl Hash for Slice { + fn hash(&self, state: &mut H) { + self.len().hash(state); + for value in self { + value.hash(state); + } + } +} + +impl Index for Slice { + type Output = T; + + fn index(&self, index: usize) -> &Self::Output { + &self.entries[index].key + } +} + +// We can't have `impl> Index` because that conflicts with `Index`. +// Instead, we repeat the implementations for all the core range types. +macro_rules! impl_index { + ($($range:ty),*) => {$( + impl Index<$range> for IndexSet { + type Output = Slice; + + fn index(&self, range: $range) -> &Self::Output { + Slice::from_slice(&self.as_entries()[range]) + } + } + + impl Index<$range> for Slice { + type Output = Self; + + fn index(&self, range: $range) -> &Self::Output { + Slice::from_slice(&self.entries[range]) + } + } + )*} +} +impl_index!( + ops::Range, + ops::RangeFrom, + ops::RangeFull, + ops::RangeInclusive, + ops::RangeTo, + ops::RangeToInclusive, + (Bound, Bound) +); + +#[cfg(test)] +mod tests { + use super::*; + use alloc::vec::Vec; + + #[test] + fn slice_index() { + fn check(vec_slice: &[i32], set_slice: &Slice, sub_slice: &Slice) { + assert_eq!(set_slice as *const _, sub_slice as *const _); + itertools::assert_equal(vec_slice, set_slice); + } + + let vec: Vec = (0..10).map(|i| i * i).collect(); + let set: IndexSet = vec.iter().cloned().collect(); + let slice = set.as_slice(); + + // RangeFull + check(&vec[..], &set[..], &slice[..]); + + for i in 0usize..10 { + // Index + assert_eq!(vec[i], set[i]); + assert_eq!(vec[i], slice[i]); + + // RangeFrom + check(&vec[i..], &set[i..], &slice[i..]); + + // RangeTo + check(&vec[..i], &set[..i], &slice[..i]); + + // RangeToInclusive + check(&vec[..=i], &set[..=i], &slice[..=i]); + + // (Bound, Bound) + let bounds = (Bound::Excluded(i), Bound::Unbounded); + check(&vec[i + 1..], &set[bounds], &slice[bounds]); + + for j in i..=10 { + // Range + check(&vec[i..j], &set[i..j], &slice[i..j]); + } + + for j in i..10 { + // RangeInclusive + check(&vec[i..=j], &set[i..=j], &slice[i..=j]); + } + } + } +} diff -Nru temporalio-1.3.0/vendor/indexmap/src/set/tests.rs temporalio-1.3.0/vendor/indexmap/src/set/tests.rs --- temporalio-1.3.0/vendor/indexmap/src/set/tests.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/set/tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,545 @@ +use super::*; +use std::string::String; + +#[test] +fn it_works() { + let mut set = IndexSet::new(); + assert_eq!(set.is_empty(), true); + set.insert(1); + set.insert(1); + assert_eq!(set.len(), 1); + assert!(set.get(&1).is_some()); + assert_eq!(set.is_empty(), false); +} + +#[test] +fn new() { + let set = IndexSet::::new(); + println!("{:?}", set); + assert_eq!(set.capacity(), 0); + assert_eq!(set.len(), 0); + assert_eq!(set.is_empty(), true); +} + +#[test] +fn insert() { + let insert = [0, 4, 2, 12, 8, 7, 11, 5]; + let not_present = [1, 3, 6, 9, 10]; + let mut set = IndexSet::with_capacity(insert.len()); + + for (i, &elt) in insert.iter().enumerate() { + assert_eq!(set.len(), i); + set.insert(elt); + assert_eq!(set.len(), i + 1); + assert_eq!(set.get(&elt), Some(&elt)); + } + println!("{:?}", set); + + for &elt in ¬_present { + assert!(set.get(&elt).is_none()); + } +} + +#[test] +fn insert_full() { + let insert = vec![9, 2, 7, 1, 4, 6, 13]; + let present = vec![1, 6, 2]; + let mut set = IndexSet::with_capacity(insert.len()); + + for (i, &elt) in insert.iter().enumerate() { + assert_eq!(set.len(), i); + let (index, success) = set.insert_full(elt); + assert!(success); + assert_eq!(Some(index), set.get_full(&elt).map(|x| x.0)); + assert_eq!(set.len(), i + 1); + } + + let len = set.len(); + for &elt in &present { + let (index, success) = set.insert_full(elt); + assert!(!success); + assert_eq!(Some(index), set.get_full(&elt).map(|x| x.0)); + assert_eq!(set.len(), len); + } +} + +#[test] +fn insert_2() { + let mut set = IndexSet::with_capacity(16); + + let mut values = vec![]; + values.extend(0..16); + values.extend(if cfg!(miri) { 32..64 } else { 128..267 }); + + for &i in &values { + let old_set = set.clone(); + set.insert(i); + for value in old_set.iter() { + if set.get(value).is_none() { + println!("old_set: {:?}", old_set); + println!("set: {:?}", set); + panic!("did not find {} in set", value); + } + } + } + + for &i in &values { + assert!(set.get(&i).is_some(), "did not find {}", i); + } +} + +#[test] +fn insert_dup() { + let mut elements = vec![0, 2, 4, 6, 8]; + let mut set: IndexSet = elements.drain(..).collect(); + { + let (i, v) = set.get_full(&0).unwrap(); + assert_eq!(set.len(), 5); + assert_eq!(i, 0); + assert_eq!(*v, 0); + } + { + let inserted = set.insert(0); + let (i, v) = set.get_full(&0).unwrap(); + assert_eq!(set.len(), 5); + assert_eq!(inserted, false); + assert_eq!(i, 0); + assert_eq!(*v, 0); + } +} + +#[test] +fn insert_order() { + let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; + let mut set = IndexSet::new(); + + for &elt in &insert { + set.insert(elt); + } + + assert_eq!(set.iter().count(), set.len()); + assert_eq!(set.iter().count(), insert.len()); + for (a, b) in insert.iter().zip(set.iter()) { + assert_eq!(a, b); + } + for (i, v) in (0..insert.len()).zip(set.iter()) { + assert_eq!(set.get_index(i).unwrap(), v); + } +} + +#[test] +fn replace() { + let replace = [0, 4, 2, 12, 8, 7, 11, 5]; + let not_present = [1, 3, 6, 9, 10]; + let mut set = IndexSet::with_capacity(replace.len()); + + for (i, &elt) in replace.iter().enumerate() { + assert_eq!(set.len(), i); + set.replace(elt); + assert_eq!(set.len(), i + 1); + assert_eq!(set.get(&elt), Some(&elt)); + } + println!("{:?}", set); + + for &elt in ¬_present { + assert!(set.get(&elt).is_none()); + } +} + +#[test] +fn replace_full() { + let replace = vec![9, 2, 7, 1, 4, 6, 13]; + let present = vec![1, 6, 2]; + let mut set = IndexSet::with_capacity(replace.len()); + + for (i, &elt) in replace.iter().enumerate() { + assert_eq!(set.len(), i); + let (index, replaced) = set.replace_full(elt); + assert!(replaced.is_none()); + assert_eq!(Some(index), set.get_full(&elt).map(|x| x.0)); + assert_eq!(set.len(), i + 1); + } + + let len = set.len(); + for &elt in &present { + let (index, replaced) = set.replace_full(elt); + assert_eq!(Some(elt), replaced); + assert_eq!(Some(index), set.get_full(&elt).map(|x| x.0)); + assert_eq!(set.len(), len); + } +} + +#[test] +fn replace_2() { + let mut set = IndexSet::with_capacity(16); + + let mut values = vec![]; + values.extend(0..16); + values.extend(if cfg!(miri) { 32..64 } else { 128..267 }); + + for &i in &values { + let old_set = set.clone(); + set.replace(i); + for value in old_set.iter() { + if set.get(value).is_none() { + println!("old_set: {:?}", old_set); + println!("set: {:?}", set); + panic!("did not find {} in set", value); + } + } + } + + for &i in &values { + assert!(set.get(&i).is_some(), "did not find {}", i); + } +} + +#[test] +fn replace_dup() { + let mut elements = vec![0, 2, 4, 6, 8]; + let mut set: IndexSet = elements.drain(..).collect(); + { + let (i, v) = set.get_full(&0).unwrap(); + assert_eq!(set.len(), 5); + assert_eq!(i, 0); + assert_eq!(*v, 0); + } + { + let replaced = set.replace(0); + let (i, v) = set.get_full(&0).unwrap(); + assert_eq!(set.len(), 5); + assert_eq!(replaced, Some(0)); + assert_eq!(i, 0); + assert_eq!(*v, 0); + } +} + +#[test] +fn replace_order() { + let replace = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; + let mut set = IndexSet::new(); + + for &elt in &replace { + set.replace(elt); + } + + assert_eq!(set.iter().count(), set.len()); + assert_eq!(set.iter().count(), replace.len()); + for (a, b) in replace.iter().zip(set.iter()) { + assert_eq!(a, b); + } + for (i, v) in (0..replace.len()).zip(set.iter()) { + assert_eq!(set.get_index(i).unwrap(), v); + } +} + +#[test] +fn grow() { + let insert = [0, 4, 2, 12, 8, 7, 11]; + let not_present = [1, 3, 6, 9, 10]; + let mut set = IndexSet::with_capacity(insert.len()); + + for (i, &elt) in insert.iter().enumerate() { + assert_eq!(set.len(), i); + set.insert(elt); + assert_eq!(set.len(), i + 1); + assert_eq!(set.get(&elt), Some(&elt)); + } + + println!("{:?}", set); + for &elt in &insert { + set.insert(elt * 10); + } + for &elt in &insert { + set.insert(elt * 100); + } + for (i, &elt) in insert.iter().cycle().enumerate().take(100) { + set.insert(elt * 100 + i as i32); + } + println!("{:?}", set); + for &elt in ¬_present { + assert!(set.get(&elt).is_none()); + } +} + +#[test] +fn reserve() { + let mut set = IndexSet::::new(); + assert_eq!(set.capacity(), 0); + set.reserve(100); + let capacity = set.capacity(); + assert!(capacity >= 100); + for i in 0..capacity { + assert_eq!(set.len(), i); + set.insert(i); + assert_eq!(set.len(), i + 1); + assert_eq!(set.capacity(), capacity); + assert_eq!(set.get(&i), Some(&i)); + } + set.insert(capacity); + assert_eq!(set.len(), capacity + 1); + assert!(set.capacity() > capacity); + assert_eq!(set.get(&capacity), Some(&capacity)); +} + +#[test] +fn try_reserve() { + let mut set = IndexSet::::new(); + assert_eq!(set.capacity(), 0); + assert_eq!(set.try_reserve(100), Ok(())); + assert!(set.capacity() >= 100); + assert!(set.try_reserve(usize::MAX).is_err()); +} + +#[test] +fn shrink_to_fit() { + let mut set = IndexSet::::new(); + assert_eq!(set.capacity(), 0); + for i in 0..100 { + assert_eq!(set.len(), i); + set.insert(i); + assert_eq!(set.len(), i + 1); + assert!(set.capacity() >= i + 1); + assert_eq!(set.get(&i), Some(&i)); + set.shrink_to_fit(); + assert_eq!(set.len(), i + 1); + assert_eq!(set.capacity(), i + 1); + assert_eq!(set.get(&i), Some(&i)); + } +} + +#[test] +fn remove() { + let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; + let mut set = IndexSet::new(); + + for &elt in &insert { + set.insert(elt); + } + + assert_eq!(set.iter().count(), set.len()); + assert_eq!(set.iter().count(), insert.len()); + for (a, b) in insert.iter().zip(set.iter()) { + assert_eq!(a, b); + } + + let remove_fail = [99, 77]; + let remove = [4, 12, 8, 7]; + + for &value in &remove_fail { + assert!(set.swap_remove_full(&value).is_none()); + } + println!("{:?}", set); + for &value in &remove { + //println!("{:?}", set); + let index = set.get_full(&value).unwrap().0; + assert_eq!(set.swap_remove_full(&value), Some((index, value))); + } + println!("{:?}", set); + + for value in &insert { + assert_eq!(set.get(value).is_some(), !remove.contains(value)); + } + assert_eq!(set.len(), insert.len() - remove.len()); + assert_eq!(set.iter().count(), insert.len() - remove.len()); +} + +#[test] +fn swap_remove_index() { + let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; + let mut set = IndexSet::new(); + + for &elt in &insert { + set.insert(elt); + } + + let mut vector = insert.to_vec(); + let remove_sequence = &[3, 3, 10, 4, 5, 4, 3, 0, 1]; + + // check that the same swap remove sequence on vec and set + // have the same result. + for &rm in remove_sequence { + let out_vec = vector.swap_remove(rm); + let out_set = set.swap_remove_index(rm).unwrap(); + assert_eq!(out_vec, out_set); + } + assert_eq!(vector.len(), set.len()); + for (a, b) in vector.iter().zip(set.iter()) { + assert_eq!(a, b); + } +} + +#[test] +fn partial_eq_and_eq() { + let mut set_a = IndexSet::new(); + set_a.insert(1); + set_a.insert(2); + let mut set_b = set_a.clone(); + assert_eq!(set_a, set_b); + set_b.swap_remove(&1); + assert_ne!(set_a, set_b); + + let set_c: IndexSet<_> = set_b.into_iter().collect(); + assert_ne!(set_a, set_c); + assert_ne!(set_c, set_a); +} + +#[test] +fn extend() { + let mut set = IndexSet::new(); + set.extend(vec![&1, &2, &3, &4]); + set.extend(vec![5, 6]); + assert_eq!(set.into_iter().collect::>(), vec![1, 2, 3, 4, 5, 6]); +} + +#[test] +fn comparisons() { + let set_a: IndexSet<_> = (0..3).collect(); + let set_b: IndexSet<_> = (3..6).collect(); + let set_c: IndexSet<_> = (0..6).collect(); + let set_d: IndexSet<_> = (3..9).collect(); + + assert!(!set_a.is_disjoint(&set_a)); + assert!(set_a.is_subset(&set_a)); + assert!(set_a.is_superset(&set_a)); + + assert!(set_a.is_disjoint(&set_b)); + assert!(set_b.is_disjoint(&set_a)); + assert!(!set_a.is_subset(&set_b)); + assert!(!set_b.is_subset(&set_a)); + assert!(!set_a.is_superset(&set_b)); + assert!(!set_b.is_superset(&set_a)); + + assert!(!set_a.is_disjoint(&set_c)); + assert!(!set_c.is_disjoint(&set_a)); + assert!(set_a.is_subset(&set_c)); + assert!(!set_c.is_subset(&set_a)); + assert!(!set_a.is_superset(&set_c)); + assert!(set_c.is_superset(&set_a)); + + assert!(!set_c.is_disjoint(&set_d)); + assert!(!set_d.is_disjoint(&set_c)); + assert!(!set_c.is_subset(&set_d)); + assert!(!set_d.is_subset(&set_c)); + assert!(!set_c.is_superset(&set_d)); + assert!(!set_d.is_superset(&set_c)); +} + +#[test] +fn iter_comparisons() { + use std::iter::empty; + + fn check<'a, I1, I2>(iter1: I1, iter2: I2) + where + I1: Iterator, + I2: Iterator, + { + assert!(iter1.copied().eq(iter2)); + } + + let set_a: IndexSet<_> = (0..3).collect(); + let set_b: IndexSet<_> = (3..6).collect(); + let set_c: IndexSet<_> = (0..6).collect(); + let set_d: IndexSet<_> = (3..9).rev().collect(); + + check(set_a.difference(&set_a), empty()); + check(set_a.symmetric_difference(&set_a), empty()); + check(set_a.intersection(&set_a), 0..3); + check(set_a.union(&set_a), 0..3); + + check(set_a.difference(&set_b), 0..3); + check(set_b.difference(&set_a), 3..6); + check(set_a.symmetric_difference(&set_b), 0..6); + check(set_b.symmetric_difference(&set_a), (3..6).chain(0..3)); + check(set_a.intersection(&set_b), empty()); + check(set_b.intersection(&set_a), empty()); + check(set_a.union(&set_b), 0..6); + check(set_b.union(&set_a), (3..6).chain(0..3)); + + check(set_a.difference(&set_c), empty()); + check(set_c.difference(&set_a), 3..6); + check(set_a.symmetric_difference(&set_c), 3..6); + check(set_c.symmetric_difference(&set_a), 3..6); + check(set_a.intersection(&set_c), 0..3); + check(set_c.intersection(&set_a), 0..3); + check(set_a.union(&set_c), 0..6); + check(set_c.union(&set_a), 0..6); + + check(set_c.difference(&set_d), 0..3); + check(set_d.difference(&set_c), (6..9).rev()); + check( + set_c.symmetric_difference(&set_d), + (0..3).chain((6..9).rev()), + ); + check(set_d.symmetric_difference(&set_c), (6..9).rev().chain(0..3)); + check(set_c.intersection(&set_d), 3..6); + check(set_d.intersection(&set_c), (3..6).rev()); + check(set_c.union(&set_d), (0..6).chain((6..9).rev())); + check(set_d.union(&set_c), (3..9).rev().chain(0..3)); +} + +#[test] +fn ops() { + let empty = IndexSet::::new(); + let set_a: IndexSet<_> = (0..3).collect(); + let set_b: IndexSet<_> = (3..6).collect(); + let set_c: IndexSet<_> = (0..6).collect(); + let set_d: IndexSet<_> = (3..9).rev().collect(); + + #[allow(clippy::eq_op)] + { + assert_eq!(&set_a & &set_a, set_a); + assert_eq!(&set_a | &set_a, set_a); + assert_eq!(&set_a ^ &set_a, empty); + assert_eq!(&set_a - &set_a, empty); + } + + assert_eq!(&set_a & &set_b, empty); + assert_eq!(&set_b & &set_a, empty); + assert_eq!(&set_a | &set_b, set_c); + assert_eq!(&set_b | &set_a, set_c); + assert_eq!(&set_a ^ &set_b, set_c); + assert_eq!(&set_b ^ &set_a, set_c); + assert_eq!(&set_a - &set_b, set_a); + assert_eq!(&set_b - &set_a, set_b); + + assert_eq!(&set_a & &set_c, set_a); + assert_eq!(&set_c & &set_a, set_a); + assert_eq!(&set_a | &set_c, set_c); + assert_eq!(&set_c | &set_a, set_c); + assert_eq!(&set_a ^ &set_c, set_b); + assert_eq!(&set_c ^ &set_a, set_b); + assert_eq!(&set_a - &set_c, empty); + assert_eq!(&set_c - &set_a, set_b); + + assert_eq!(&set_c & &set_d, set_b); + assert_eq!(&set_d & &set_c, set_b); + assert_eq!(&set_c | &set_d, &set_a | &set_d); + assert_eq!(&set_d | &set_c, &set_a | &set_d); + assert_eq!(&set_c ^ &set_d, &set_a | &(&set_d - &set_b)); + assert_eq!(&set_d ^ &set_c, &set_a | &(&set_d - &set_b)); + assert_eq!(&set_c - &set_d, set_a); + assert_eq!(&set_d - &set_c, &set_d - &set_b); +} + +#[test] +#[cfg(feature = "std")] +fn from_array() { + let set1 = IndexSet::from([1, 2, 3, 4]); + let set2: IndexSet<_> = [1, 2, 3, 4].into(); + + assert_eq!(set1, set2); +} + +#[test] +fn iter_default() { + struct Item; + fn assert_default() + where + T: Default + Iterator, + { + assert!(T::default().next().is_none()); + } + assert_default::>(); + assert_default::>(); +} diff -Nru temporalio-1.3.0/vendor/indexmap/src/set.rs temporalio-1.3.0/vendor/indexmap/src/set.rs --- temporalio-1.3.0/vendor/indexmap/src/set.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/set.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,18 +1,28 @@ //! A hash set implemented using `IndexMap` +mod iter; +mod slice; + +#[cfg(test)] +mod tests; + +pub use self::iter::{Difference, Drain, Intersection, IntoIter, Iter, SymmetricDifference, Union}; +pub use self::slice::Slice; + #[cfg(feature = "rayon")] pub use crate::rayon::set as rayon; +use crate::TryReserveError; -#[cfg(has_std)] +#[cfg(feature = "std")] use std::collections::hash_map::RandomState; -use crate::vec::{self, Vec}; +use crate::util::try_simplify_range; +use alloc::boxed::Box; +use alloc::vec::Vec; use core::cmp::Ordering; use core::fmt; use core::hash::{BuildHasher, Hash}; -use core::iter::{Chain, FusedIterator}; use core::ops::{BitAnd, BitOr, BitXor, Index, RangeBounds, Sub}; -use core::slice; use super::{Entries, Equivalent, IndexMap}; @@ -59,11 +69,11 @@ /// assert!(letters.contains(&'u')); /// assert!(!letters.contains(&'y')); /// ``` -#[cfg(has_std)] +#[cfg(feature = "std")] pub struct IndexSet { pub(crate) map: IndexMap, } -#[cfg(not(has_std))] +#[cfg(not(feature = "std"))] pub struct IndexSet { pub(crate) map: IndexMap, } @@ -124,7 +134,8 @@ } } -#[cfg(has_std)] +#[cfg(feature = "std")] +#[cfg_attr(docsrs, doc(cfg(feature = "std")))] impl IndexSet { /// Create a new set. (Does not allocate.) pub fn new() -> Self { @@ -165,6 +176,11 @@ } } + /// Return the number of elements the set can hold without reallocating. + /// + /// This number is a lower bound; the set might be able to hold more, + /// but is guaranteed to be able to hold at least this many. + /// /// Computes in **O(1)** time. pub fn capacity(&self) -> usize { self.map.capacity() @@ -191,9 +207,7 @@ /// Return an iterator over the values of the set, in their order pub fn iter(&self) -> Iter<'_, T> { - Iter { - iter: self.map.as_entries().iter(), - } + Iter::new(self.as_entries()) } /// Remove all elements in the set, while preserving its capacity. @@ -227,9 +241,7 @@ where R: RangeBounds, { - Drain { - iter: self.map.drain(range).iter, - } + Drain::new(self.map.core.drain(range)) } /// Splits the collection into two at the given index. @@ -261,6 +273,37 @@ self.map.reserve(additional); } + /// Reserve capacity for `additional` more values, without over-allocating. + /// + /// Unlike `reserve`, this does not deliberately over-allocate the entry capacity to avoid + /// frequent re-allocations. However, the underlying data structures may still have internal + /// capacity requirements, and the allocator itself may give more space than requested, so this + /// cannot be relied upon to be precisely minimal. + /// + /// Computes in **O(n)** time. + pub fn reserve_exact(&mut self, additional: usize) { + self.map.reserve_exact(additional); + } + + /// Try to reserve capacity for `additional` more values. + /// + /// Computes in **O(n)** time. + pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError> { + self.map.try_reserve(additional) + } + + /// Try to reserve capacity for `additional` more values, without over-allocating. + /// + /// Unlike `try_reserve`, this does not deliberately over-allocate the entry capacity to avoid + /// frequent re-allocations. However, the underlying data structures may still have internal + /// capacity requirements, and the allocator itself may give more space than requested, so this + /// cannot be relied upon to be precisely minimal. + /// + /// Computes in **O(n)** time. + pub fn try_reserve_exact(&mut self, additional: usize) -> Result<(), TryReserveError> { + self.map.try_reserve_exact(additional) + } + /// Shrink the capacity of the set as much as possible. /// /// Computes in **O(n)** time. @@ -297,16 +340,8 @@ /// /// Computes in **O(1)** time (amortized average). pub fn insert_full(&mut self, value: T) -> (usize, bool) { - use super::map::Entry::*; - - match self.map.entry(value) { - Occupied(e) => (e.index(), false), - Vacant(e) => { - let index = e.index(); - e.insert(()); - (index, true) - } - } + let (index, existing) = self.map.insert_full(value, ()); + (index, existing.is_none()) } /// Return an iterator over the values that are in `self` but not `other`. @@ -316,10 +351,7 @@ where S2: BuildHasher, { - Difference { - iter: self.iter(), - other, - } + Difference::new(self, other) } /// Return an iterator over the values that are in `self` or `other`, @@ -334,9 +366,7 @@ where S2: BuildHasher, { - SymmetricDifference { - iter: self.difference(other).chain(other.difference(self)), - } + SymmetricDifference::new(self, other) } /// Return an iterator over the values that are in both `self` and `other`. @@ -346,10 +376,7 @@ where S2: BuildHasher, { - Intersection { - iter: self.iter(), - other, - } + Intersection::new(self, other) } /// Return an iterator over all values that are in `self` or `other`. @@ -360,9 +387,7 @@ where S2: BuildHasher, { - Union { - iter: self.iter().chain(other.difference(self)), - } + Union::new(self, other) } /// Return `true` if an equivalent to `value` exists in the set. @@ -604,9 +629,7 @@ { let mut entries = self.into_entries(); entries.sort_by(move |a, b| cmp(&a.key, &b.key)); - IntoIter { - iter: entries.into_iter(), - } + IntoIter::new(entries) } /// Sort the set's values by their default ordering. @@ -619,7 +642,7 @@ self.map.sort_unstable_keys() } - /// Sort the set's values in place using the comparison funtion `cmp`. + /// Sort the set's values in place using the comparison function `cmp`. /// /// Computes in **O(n log n)** time. The sort is unstable. pub fn sort_unstable_by(&mut self, mut cmp: F) @@ -637,9 +660,25 @@ { let mut entries = self.into_entries(); entries.sort_unstable_by(move |a, b| cmp(&a.key, &b.key)); - IntoIter { - iter: entries.into_iter(), - } + IntoIter::new(entries) + } + + /// Sort the set’s values in place using a key extraction function. + /// + /// During sorting, the function is called at most once per entry, by using temporary storage + /// to remember the results of its evaluation. The order of calls to the function is + /// unspecified and may change between versions of `indexmap` or the standard library. + /// + /// Computes in **O(m n + n log n + c)** time () and **O(n)** space, where the function is + /// **O(m)**, *n* is the length of the map, and *c* the capacity. The sort is stable. + pub fn sort_by_cached_key(&mut self, mut sort_key: F) + where + K: Ord, + F: FnMut(&T) -> K, + { + self.with_entries(move |entries| { + entries.sort_by_cached_key(move |a| sort_key(&a.key)); + }); } /// Reverses the order of the set’s values in place. @@ -651,6 +690,20 @@ } impl IndexSet { + /// Returns a slice of all the values in the set. + /// + /// Computes in **O(1)** time. + pub fn as_slice(&self) -> &Slice { + Slice::from_slice(self.as_entries()) + } + + /// Converts into a boxed slice of all the values in the set. + /// + /// Note that this will drop the inner hash table and any excess capacity. + pub fn into_boxed_slice(self) -> Box> { + Slice::from_boxed(self.into_entries().into_boxed_slice()) + } + /// Get a value by index /// /// Valid indices are *0 <= index < self.len()* @@ -660,6 +713,17 @@ self.as_entries().get(index).map(Bucket::key_ref) } + /// Returns a slice of values in the given range of indices. + /// + /// Valid indices are *0 <= index < self.len()* + /// + /// Computes in **O(1)** time. + pub fn get_range>(&self, range: R) -> Option<&Slice> { + let entries = self.as_entries(); + let range = try_simplify_range(range, entries.len())?; + entries.get(range).map(Slice::from_slice) + } + /// Get the first value /// /// Computes in **O(1)** time. @@ -761,141 +825,6 @@ } } -/// An owning iterator over the items of a `IndexSet`. -/// -/// This `struct` is created by the [`into_iter`] method on [`IndexSet`] -/// (provided by the `IntoIterator` trait). See its documentation for more. -/// -/// [`IndexSet`]: struct.IndexSet.html -/// [`into_iter`]: struct.IndexSet.html#method.into_iter -pub struct IntoIter { - iter: vec::IntoIter>, -} - -impl Iterator for IntoIter { - type Item = T; - - iterator_methods!(Bucket::key); -} - -impl DoubleEndedIterator for IntoIter { - double_ended_iterator_methods!(Bucket::key); -} - -impl ExactSizeIterator for IntoIter { - fn len(&self) -> usize { - self.iter.len() - } -} - -impl FusedIterator for IntoIter {} - -impl fmt::Debug for IntoIter { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let iter = self.iter.as_slice().iter().map(Bucket::key_ref); - f.debug_list().entries(iter).finish() - } -} - -/// An iterator over the items of a `IndexSet`. -/// -/// This `struct` is created by the [`iter`] method on [`IndexSet`]. -/// See its documentation for more. -/// -/// [`IndexSet`]: struct.IndexSet.html -/// [`iter`]: struct.IndexSet.html#method.iter -pub struct Iter<'a, T> { - iter: slice::Iter<'a, Bucket>, -} - -impl<'a, T> Iterator for Iter<'a, T> { - type Item = &'a T; - - iterator_methods!(Bucket::key_ref); -} - -impl DoubleEndedIterator for Iter<'_, T> { - double_ended_iterator_methods!(Bucket::key_ref); -} - -impl ExactSizeIterator for Iter<'_, T> { - fn len(&self) -> usize { - self.iter.len() - } -} - -impl FusedIterator for Iter<'_, T> {} - -impl Clone for Iter<'_, T> { - fn clone(&self) -> Self { - Iter { - iter: self.iter.clone(), - } - } -} - -impl fmt::Debug for Iter<'_, T> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_list().entries(self.clone()).finish() - } -} - -/// A draining iterator over the items of a `IndexSet`. -/// -/// This `struct` is created by the [`drain`] method on [`IndexSet`]. -/// See its documentation for more. -/// -/// [`IndexSet`]: struct.IndexSet.html -/// [`drain`]: struct.IndexSet.html#method.drain -pub struct Drain<'a, T> { - iter: vec::Drain<'a, Bucket>, -} - -impl Iterator for Drain<'_, T> { - type Item = T; - - iterator_methods!(Bucket::key); -} - -impl DoubleEndedIterator for Drain<'_, T> { - double_ended_iterator_methods!(Bucket::key); -} - -impl ExactSizeIterator for Drain<'_, T> { - fn len(&self) -> usize { - self.iter.len() - } -} - -impl FusedIterator for Drain<'_, T> {} - -impl fmt::Debug for Drain<'_, T> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let iter = self.iter.as_slice().iter().map(Bucket::key_ref); - f.debug_list().entries(iter).finish() - } -} - -impl<'a, T, S> IntoIterator for &'a IndexSet { - type Item = &'a T; - type IntoIter = Iter<'a, T>; - - fn into_iter(self) -> Self::IntoIter { - self.iter() - } -} - -impl IntoIterator for IndexSet { - type Item = T; - type IntoIter = IntoIter; - - fn into_iter(self) -> Self::IntoIter { - IntoIter { - iter: self.into_entries().into_iter(), - } - } -} - impl FromIterator for IndexSet where T: Hash + Eq, @@ -909,7 +838,8 @@ } } -#[cfg(has_std)] +#[cfg(feature = "std")] +#[cfg_attr(docsrs, doc(cfg(feature = "std")))] impl From<[T; N]> for IndexSet where T: Eq + Hash, @@ -1014,310 +944,6 @@ } } -/// A lazy iterator producing elements in the difference of `IndexSet`s. -/// -/// This `struct` is created by the [`difference`] method on [`IndexSet`]. -/// See its documentation for more. -/// -/// [`IndexSet`]: struct.IndexSet.html -/// [`difference`]: struct.IndexSet.html#method.difference -pub struct Difference<'a, T, S> { - iter: Iter<'a, T>, - other: &'a IndexSet, -} - -impl<'a, T, S> Iterator for Difference<'a, T, S> -where - T: Eq + Hash, - S: BuildHasher, -{ - type Item = &'a T; - - fn next(&mut self) -> Option { - while let Some(item) = self.iter.next() { - if !self.other.contains(item) { - return Some(item); - } - } - None - } - - fn size_hint(&self) -> (usize, Option) { - (0, self.iter.size_hint().1) - } -} - -impl DoubleEndedIterator for Difference<'_, T, S> -where - T: Eq + Hash, - S: BuildHasher, -{ - fn next_back(&mut self) -> Option { - while let Some(item) = self.iter.next_back() { - if !self.other.contains(item) { - return Some(item); - } - } - None - } -} - -impl FusedIterator for Difference<'_, T, S> -where - T: Eq + Hash, - S: BuildHasher, -{ -} - -impl Clone for Difference<'_, T, S> { - fn clone(&self) -> Self { - Difference { - iter: self.iter.clone(), - ..*self - } - } -} - -impl fmt::Debug for Difference<'_, T, S> -where - T: fmt::Debug + Eq + Hash, - S: BuildHasher, -{ - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_list().entries(self.clone()).finish() - } -} - -/// A lazy iterator producing elements in the intersection of `IndexSet`s. -/// -/// This `struct` is created by the [`intersection`] method on [`IndexSet`]. -/// See its documentation for more. -/// -/// [`IndexSet`]: struct.IndexSet.html -/// [`intersection`]: struct.IndexSet.html#method.intersection -pub struct Intersection<'a, T, S> { - iter: Iter<'a, T>, - other: &'a IndexSet, -} - -impl<'a, T, S> Iterator for Intersection<'a, T, S> -where - T: Eq + Hash, - S: BuildHasher, -{ - type Item = &'a T; - - fn next(&mut self) -> Option { - while let Some(item) = self.iter.next() { - if self.other.contains(item) { - return Some(item); - } - } - None - } - - fn size_hint(&self) -> (usize, Option) { - (0, self.iter.size_hint().1) - } -} - -impl DoubleEndedIterator for Intersection<'_, T, S> -where - T: Eq + Hash, - S: BuildHasher, -{ - fn next_back(&mut self) -> Option { - while let Some(item) = self.iter.next_back() { - if self.other.contains(item) { - return Some(item); - } - } - None - } -} - -impl FusedIterator for Intersection<'_, T, S> -where - T: Eq + Hash, - S: BuildHasher, -{ -} - -impl Clone for Intersection<'_, T, S> { - fn clone(&self) -> Self { - Intersection { - iter: self.iter.clone(), - ..*self - } - } -} - -impl fmt::Debug for Intersection<'_, T, S> -where - T: fmt::Debug + Eq + Hash, - S: BuildHasher, -{ - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_list().entries(self.clone()).finish() - } -} - -/// A lazy iterator producing elements in the symmetric difference of `IndexSet`s. -/// -/// This `struct` is created by the [`symmetric_difference`] method on -/// [`IndexSet`]. See its documentation for more. -/// -/// [`IndexSet`]: struct.IndexSet.html -/// [`symmetric_difference`]: struct.IndexSet.html#method.symmetric_difference -pub struct SymmetricDifference<'a, T, S1, S2> { - iter: Chain, Difference<'a, T, S1>>, -} - -impl<'a, T, S1, S2> Iterator for SymmetricDifference<'a, T, S1, S2> -where - T: Eq + Hash, - S1: BuildHasher, - S2: BuildHasher, -{ - type Item = &'a T; - - fn next(&mut self) -> Option { - self.iter.next() - } - - fn size_hint(&self) -> (usize, Option) { - self.iter.size_hint() - } - - fn fold(self, init: B, f: F) -> B - where - F: FnMut(B, Self::Item) -> B, - { - self.iter.fold(init, f) - } -} - -impl DoubleEndedIterator for SymmetricDifference<'_, T, S1, S2> -where - T: Eq + Hash, - S1: BuildHasher, - S2: BuildHasher, -{ - fn next_back(&mut self) -> Option { - self.iter.next_back() - } - - fn rfold(self, init: B, f: F) -> B - where - F: FnMut(B, Self::Item) -> B, - { - self.iter.rfold(init, f) - } -} - -impl FusedIterator for SymmetricDifference<'_, T, S1, S2> -where - T: Eq + Hash, - S1: BuildHasher, - S2: BuildHasher, -{ -} - -impl Clone for SymmetricDifference<'_, T, S1, S2> { - fn clone(&self) -> Self { - SymmetricDifference { - iter: self.iter.clone(), - } - } -} - -impl fmt::Debug for SymmetricDifference<'_, T, S1, S2> -where - T: fmt::Debug + Eq + Hash, - S1: BuildHasher, - S2: BuildHasher, -{ - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_list().entries(self.clone()).finish() - } -} - -/// A lazy iterator producing elements in the union of `IndexSet`s. -/// -/// This `struct` is created by the [`union`] method on [`IndexSet`]. -/// See its documentation for more. -/// -/// [`IndexSet`]: struct.IndexSet.html -/// [`union`]: struct.IndexSet.html#method.union -pub struct Union<'a, T, S> { - iter: Chain, Difference<'a, T, S>>, -} - -impl<'a, T, S> Iterator for Union<'a, T, S> -where - T: Eq + Hash, - S: BuildHasher, -{ - type Item = &'a T; - - fn next(&mut self) -> Option { - self.iter.next() - } - - fn size_hint(&self) -> (usize, Option) { - self.iter.size_hint() - } - - fn fold(self, init: B, f: F) -> B - where - F: FnMut(B, Self::Item) -> B, - { - self.iter.fold(init, f) - } -} - -impl DoubleEndedIterator for Union<'_, T, S> -where - T: Eq + Hash, - S: BuildHasher, -{ - fn next_back(&mut self) -> Option { - self.iter.next_back() - } - - fn rfold(self, init: B, f: F) -> B - where - F: FnMut(B, Self::Item) -> B, - { - self.iter.rfold(init, f) - } -} - -impl FusedIterator for Union<'_, T, S> -where - T: Eq + Hash, - S: BuildHasher, -{ -} - -impl Clone for Union<'_, T, S> { - fn clone(&self) -> Self { - Union { - iter: self.iter.clone(), - } - } -} - -impl fmt::Debug for Union<'_, T, S> -where - T: fmt::Debug + Eq + Hash, - S: BuildHasher, -{ - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_list().entries(self.clone()).finish() - } -} - impl BitAnd<&IndexSet> for &IndexSet where T: Eq + Hash + Clone, @@ -1383,530 +1009,3 @@ self.difference(other).cloned().collect() } } - -#[cfg(test)] -mod tests { - use super::*; - use std::string::String; - - #[test] - fn it_works() { - let mut set = IndexSet::new(); - assert_eq!(set.is_empty(), true); - set.insert(1); - set.insert(1); - assert_eq!(set.len(), 1); - assert!(set.get(&1).is_some()); - assert_eq!(set.is_empty(), false); - } - - #[test] - fn new() { - let set = IndexSet::::new(); - println!("{:?}", set); - assert_eq!(set.capacity(), 0); - assert_eq!(set.len(), 0); - assert_eq!(set.is_empty(), true); - } - - #[test] - fn insert() { - let insert = [0, 4, 2, 12, 8, 7, 11, 5]; - let not_present = [1, 3, 6, 9, 10]; - let mut set = IndexSet::with_capacity(insert.len()); - - for (i, &elt) in insert.iter().enumerate() { - assert_eq!(set.len(), i); - set.insert(elt); - assert_eq!(set.len(), i + 1); - assert_eq!(set.get(&elt), Some(&elt)); - } - println!("{:?}", set); - - for &elt in ¬_present { - assert!(set.get(&elt).is_none()); - } - } - - #[test] - fn insert_full() { - let insert = vec![9, 2, 7, 1, 4, 6, 13]; - let present = vec![1, 6, 2]; - let mut set = IndexSet::with_capacity(insert.len()); - - for (i, &elt) in insert.iter().enumerate() { - assert_eq!(set.len(), i); - let (index, success) = set.insert_full(elt); - assert!(success); - assert_eq!(Some(index), set.get_full(&elt).map(|x| x.0)); - assert_eq!(set.len(), i + 1); - } - - let len = set.len(); - for &elt in &present { - let (index, success) = set.insert_full(elt); - assert!(!success); - assert_eq!(Some(index), set.get_full(&elt).map(|x| x.0)); - assert_eq!(set.len(), len); - } - } - - #[test] - fn insert_2() { - let mut set = IndexSet::with_capacity(16); - - let mut values = vec![]; - values.extend(0..16); - values.extend(if cfg!(miri) { 32..64 } else { 128..267 }); - - for &i in &values { - let old_set = set.clone(); - set.insert(i); - for value in old_set.iter() { - if set.get(value).is_none() { - println!("old_set: {:?}", old_set); - println!("set: {:?}", set); - panic!("did not find {} in set", value); - } - } - } - - for &i in &values { - assert!(set.get(&i).is_some(), "did not find {}", i); - } - } - - #[test] - fn insert_dup() { - let mut elements = vec![0, 2, 4, 6, 8]; - let mut set: IndexSet = elements.drain(..).collect(); - { - let (i, v) = set.get_full(&0).unwrap(); - assert_eq!(set.len(), 5); - assert_eq!(i, 0); - assert_eq!(*v, 0); - } - { - let inserted = set.insert(0); - let (i, v) = set.get_full(&0).unwrap(); - assert_eq!(set.len(), 5); - assert_eq!(inserted, false); - assert_eq!(i, 0); - assert_eq!(*v, 0); - } - } - - #[test] - fn insert_order() { - let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; - let mut set = IndexSet::new(); - - for &elt in &insert { - set.insert(elt); - } - - assert_eq!(set.iter().count(), set.len()); - assert_eq!(set.iter().count(), insert.len()); - for (a, b) in insert.iter().zip(set.iter()) { - assert_eq!(a, b); - } - for (i, v) in (0..insert.len()).zip(set.iter()) { - assert_eq!(set.get_index(i).unwrap(), v); - } - } - - #[test] - fn replace() { - let replace = [0, 4, 2, 12, 8, 7, 11, 5]; - let not_present = [1, 3, 6, 9, 10]; - let mut set = IndexSet::with_capacity(replace.len()); - - for (i, &elt) in replace.iter().enumerate() { - assert_eq!(set.len(), i); - set.replace(elt); - assert_eq!(set.len(), i + 1); - assert_eq!(set.get(&elt), Some(&elt)); - } - println!("{:?}", set); - - for &elt in ¬_present { - assert!(set.get(&elt).is_none()); - } - } - - #[test] - fn replace_full() { - let replace = vec![9, 2, 7, 1, 4, 6, 13]; - let present = vec![1, 6, 2]; - let mut set = IndexSet::with_capacity(replace.len()); - - for (i, &elt) in replace.iter().enumerate() { - assert_eq!(set.len(), i); - let (index, replaced) = set.replace_full(elt); - assert!(replaced.is_none()); - assert_eq!(Some(index), set.get_full(&elt).map(|x| x.0)); - assert_eq!(set.len(), i + 1); - } - - let len = set.len(); - for &elt in &present { - let (index, replaced) = set.replace_full(elt); - assert_eq!(Some(elt), replaced); - assert_eq!(Some(index), set.get_full(&elt).map(|x| x.0)); - assert_eq!(set.len(), len); - } - } - - #[test] - fn replace_2() { - let mut set = IndexSet::with_capacity(16); - - let mut values = vec![]; - values.extend(0..16); - values.extend(if cfg!(miri) { 32..64 } else { 128..267 }); - - for &i in &values { - let old_set = set.clone(); - set.replace(i); - for value in old_set.iter() { - if set.get(value).is_none() { - println!("old_set: {:?}", old_set); - println!("set: {:?}", set); - panic!("did not find {} in set", value); - } - } - } - - for &i in &values { - assert!(set.get(&i).is_some(), "did not find {}", i); - } - } - - #[test] - fn replace_dup() { - let mut elements = vec![0, 2, 4, 6, 8]; - let mut set: IndexSet = elements.drain(..).collect(); - { - let (i, v) = set.get_full(&0).unwrap(); - assert_eq!(set.len(), 5); - assert_eq!(i, 0); - assert_eq!(*v, 0); - } - { - let replaced = set.replace(0); - let (i, v) = set.get_full(&0).unwrap(); - assert_eq!(set.len(), 5); - assert_eq!(replaced, Some(0)); - assert_eq!(i, 0); - assert_eq!(*v, 0); - } - } - - #[test] - fn replace_order() { - let replace = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; - let mut set = IndexSet::new(); - - for &elt in &replace { - set.replace(elt); - } - - assert_eq!(set.iter().count(), set.len()); - assert_eq!(set.iter().count(), replace.len()); - for (a, b) in replace.iter().zip(set.iter()) { - assert_eq!(a, b); - } - for (i, v) in (0..replace.len()).zip(set.iter()) { - assert_eq!(set.get_index(i).unwrap(), v); - } - } - - #[test] - fn grow() { - let insert = [0, 4, 2, 12, 8, 7, 11]; - let not_present = [1, 3, 6, 9, 10]; - let mut set = IndexSet::with_capacity(insert.len()); - - for (i, &elt) in insert.iter().enumerate() { - assert_eq!(set.len(), i); - set.insert(elt); - assert_eq!(set.len(), i + 1); - assert_eq!(set.get(&elt), Some(&elt)); - } - - println!("{:?}", set); - for &elt in &insert { - set.insert(elt * 10); - } - for &elt in &insert { - set.insert(elt * 100); - } - for (i, &elt) in insert.iter().cycle().enumerate().take(100) { - set.insert(elt * 100 + i as i32); - } - println!("{:?}", set); - for &elt in ¬_present { - assert!(set.get(&elt).is_none()); - } - } - - #[test] - fn reserve() { - let mut set = IndexSet::::new(); - assert_eq!(set.capacity(), 0); - set.reserve(100); - let capacity = set.capacity(); - assert!(capacity >= 100); - for i in 0..capacity { - assert_eq!(set.len(), i); - set.insert(i); - assert_eq!(set.len(), i + 1); - assert_eq!(set.capacity(), capacity); - assert_eq!(set.get(&i), Some(&i)); - } - set.insert(capacity); - assert_eq!(set.len(), capacity + 1); - assert!(set.capacity() > capacity); - assert_eq!(set.get(&capacity), Some(&capacity)); - } - - #[test] - fn shrink_to_fit() { - let mut set = IndexSet::::new(); - assert_eq!(set.capacity(), 0); - for i in 0..100 { - assert_eq!(set.len(), i); - set.insert(i); - assert_eq!(set.len(), i + 1); - assert!(set.capacity() >= i + 1); - assert_eq!(set.get(&i), Some(&i)); - set.shrink_to_fit(); - assert_eq!(set.len(), i + 1); - assert_eq!(set.capacity(), i + 1); - assert_eq!(set.get(&i), Some(&i)); - } - } - - #[test] - fn remove() { - let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; - let mut set = IndexSet::new(); - - for &elt in &insert { - set.insert(elt); - } - - assert_eq!(set.iter().count(), set.len()); - assert_eq!(set.iter().count(), insert.len()); - for (a, b) in insert.iter().zip(set.iter()) { - assert_eq!(a, b); - } - - let remove_fail = [99, 77]; - let remove = [4, 12, 8, 7]; - - for &value in &remove_fail { - assert!(set.swap_remove_full(&value).is_none()); - } - println!("{:?}", set); - for &value in &remove { - //println!("{:?}", set); - let index = set.get_full(&value).unwrap().0; - assert_eq!(set.swap_remove_full(&value), Some((index, value))); - } - println!("{:?}", set); - - for value in &insert { - assert_eq!(set.get(value).is_some(), !remove.contains(value)); - } - assert_eq!(set.len(), insert.len() - remove.len()); - assert_eq!(set.iter().count(), insert.len() - remove.len()); - } - - #[test] - fn swap_remove_index() { - let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; - let mut set = IndexSet::new(); - - for &elt in &insert { - set.insert(elt); - } - - let mut vector = insert.to_vec(); - let remove_sequence = &[3, 3, 10, 4, 5, 4, 3, 0, 1]; - - // check that the same swap remove sequence on vec and set - // have the same result. - for &rm in remove_sequence { - let out_vec = vector.swap_remove(rm); - let out_set = set.swap_remove_index(rm).unwrap(); - assert_eq!(out_vec, out_set); - } - assert_eq!(vector.len(), set.len()); - for (a, b) in vector.iter().zip(set.iter()) { - assert_eq!(a, b); - } - } - - #[test] - fn partial_eq_and_eq() { - let mut set_a = IndexSet::new(); - set_a.insert(1); - set_a.insert(2); - let mut set_b = set_a.clone(); - assert_eq!(set_a, set_b); - set_b.swap_remove(&1); - assert_ne!(set_a, set_b); - - let set_c: IndexSet<_> = set_b.into_iter().collect(); - assert_ne!(set_a, set_c); - assert_ne!(set_c, set_a); - } - - #[test] - fn extend() { - let mut set = IndexSet::new(); - set.extend(vec![&1, &2, &3, &4]); - set.extend(vec![5, 6]); - assert_eq!(set.into_iter().collect::>(), vec![1, 2, 3, 4, 5, 6]); - } - - #[test] - fn comparisons() { - let set_a: IndexSet<_> = (0..3).collect(); - let set_b: IndexSet<_> = (3..6).collect(); - let set_c: IndexSet<_> = (0..6).collect(); - let set_d: IndexSet<_> = (3..9).collect(); - - assert!(!set_a.is_disjoint(&set_a)); - assert!(set_a.is_subset(&set_a)); - assert!(set_a.is_superset(&set_a)); - - assert!(set_a.is_disjoint(&set_b)); - assert!(set_b.is_disjoint(&set_a)); - assert!(!set_a.is_subset(&set_b)); - assert!(!set_b.is_subset(&set_a)); - assert!(!set_a.is_superset(&set_b)); - assert!(!set_b.is_superset(&set_a)); - - assert!(!set_a.is_disjoint(&set_c)); - assert!(!set_c.is_disjoint(&set_a)); - assert!(set_a.is_subset(&set_c)); - assert!(!set_c.is_subset(&set_a)); - assert!(!set_a.is_superset(&set_c)); - assert!(set_c.is_superset(&set_a)); - - assert!(!set_c.is_disjoint(&set_d)); - assert!(!set_d.is_disjoint(&set_c)); - assert!(!set_c.is_subset(&set_d)); - assert!(!set_d.is_subset(&set_c)); - assert!(!set_c.is_superset(&set_d)); - assert!(!set_d.is_superset(&set_c)); - } - - #[test] - fn iter_comparisons() { - use std::iter::empty; - - fn check<'a, I1, I2>(iter1: I1, iter2: I2) - where - I1: Iterator, - I2: Iterator, - { - assert!(iter1.copied().eq(iter2)); - } - - let set_a: IndexSet<_> = (0..3).collect(); - let set_b: IndexSet<_> = (3..6).collect(); - let set_c: IndexSet<_> = (0..6).collect(); - let set_d: IndexSet<_> = (3..9).rev().collect(); - - check(set_a.difference(&set_a), empty()); - check(set_a.symmetric_difference(&set_a), empty()); - check(set_a.intersection(&set_a), 0..3); - check(set_a.union(&set_a), 0..3); - - check(set_a.difference(&set_b), 0..3); - check(set_b.difference(&set_a), 3..6); - check(set_a.symmetric_difference(&set_b), 0..6); - check(set_b.symmetric_difference(&set_a), (3..6).chain(0..3)); - check(set_a.intersection(&set_b), empty()); - check(set_b.intersection(&set_a), empty()); - check(set_a.union(&set_b), 0..6); - check(set_b.union(&set_a), (3..6).chain(0..3)); - - check(set_a.difference(&set_c), empty()); - check(set_c.difference(&set_a), 3..6); - check(set_a.symmetric_difference(&set_c), 3..6); - check(set_c.symmetric_difference(&set_a), 3..6); - check(set_a.intersection(&set_c), 0..3); - check(set_c.intersection(&set_a), 0..3); - check(set_a.union(&set_c), 0..6); - check(set_c.union(&set_a), 0..6); - - check(set_c.difference(&set_d), 0..3); - check(set_d.difference(&set_c), (6..9).rev()); - check( - set_c.symmetric_difference(&set_d), - (0..3).chain((6..9).rev()), - ); - check(set_d.symmetric_difference(&set_c), (6..9).rev().chain(0..3)); - check(set_c.intersection(&set_d), 3..6); - check(set_d.intersection(&set_c), (3..6).rev()); - check(set_c.union(&set_d), (0..6).chain((6..9).rev())); - check(set_d.union(&set_c), (3..9).rev().chain(0..3)); - } - - #[test] - fn ops() { - let empty = IndexSet::::new(); - let set_a: IndexSet<_> = (0..3).collect(); - let set_b: IndexSet<_> = (3..6).collect(); - let set_c: IndexSet<_> = (0..6).collect(); - let set_d: IndexSet<_> = (3..9).rev().collect(); - - #[allow(clippy::eq_op)] - { - assert_eq!(&set_a & &set_a, set_a); - assert_eq!(&set_a | &set_a, set_a); - assert_eq!(&set_a ^ &set_a, empty); - assert_eq!(&set_a - &set_a, empty); - } - - assert_eq!(&set_a & &set_b, empty); - assert_eq!(&set_b & &set_a, empty); - assert_eq!(&set_a | &set_b, set_c); - assert_eq!(&set_b | &set_a, set_c); - assert_eq!(&set_a ^ &set_b, set_c); - assert_eq!(&set_b ^ &set_a, set_c); - assert_eq!(&set_a - &set_b, set_a); - assert_eq!(&set_b - &set_a, set_b); - - assert_eq!(&set_a & &set_c, set_a); - assert_eq!(&set_c & &set_a, set_a); - assert_eq!(&set_a | &set_c, set_c); - assert_eq!(&set_c | &set_a, set_c); - assert_eq!(&set_a ^ &set_c, set_b); - assert_eq!(&set_c ^ &set_a, set_b); - assert_eq!(&set_a - &set_c, empty); - assert_eq!(&set_c - &set_a, set_b); - - assert_eq!(&set_c & &set_d, set_b); - assert_eq!(&set_d & &set_c, set_b); - assert_eq!(&set_c | &set_d, &set_a | &set_d); - assert_eq!(&set_d | &set_c, &set_a | &set_d); - assert_eq!(&set_c ^ &set_d, &set_a | &(&set_d - &set_b)); - assert_eq!(&set_d ^ &set_c, &set_a | &(&set_d - &set_b)); - assert_eq!(&set_c - &set_d, set_a); - assert_eq!(&set_d - &set_c, &set_d - &set_b); - } - - #[test] - #[cfg(has_std)] - fn from_array() { - let set1 = IndexSet::from([1, 2, 3, 4]); - let set2: IndexSet<_> = [1, 2, 3, 4].into(); - - assert_eq!(set1, set2); - } -} diff -Nru temporalio-1.3.0/vendor/indexmap/src/util.rs temporalio-1.3.0/vendor/indexmap/src/util.rs --- temporalio-1.3.0/vendor/indexmap/src/util.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/src/util.rs 2023-10-30 19:40:00.000000000 +0000 @@ -29,3 +29,25 @@ } start..end } + +pub(crate) fn try_simplify_range(range: R, len: usize) -> Option> +where + R: RangeBounds, +{ + let start = match range.start_bound() { + Bound::Unbounded => 0, + Bound::Included(&i) if i <= len => i, + Bound::Excluded(&i) if i < len => i + 1, + _ => return None, + }; + let end = match range.end_bound() { + Bound::Unbounded => len, + Bound::Excluded(&i) if i <= len => i, + Bound::Included(&i) if i < len => i + 1, + _ => return None, + }; + if start > end { + return None; + } + Some(start..end) +} diff -Nru temporalio-1.3.0/vendor/indexmap/tests/quick.rs temporalio-1.3.0/vendor/indexmap/tests/quick.rs --- temporalio-1.3.0/vendor/indexmap/tests/quick.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap/tests/quick.rs 2023-10-30 19:40:00.000000000 +0000 @@ -452,6 +452,12 @@ assert_sorted_by_key(map, |t| t.1); } + fn sort_3(keyvals: Large>) -> () { + let mut map: IndexMap<_, _> = IndexMap::from_iter(keyvals.to_vec()); + map.sort_by_cached_key(|&k, _| std::cmp::Reverse(k)); + assert_sorted_by_key(map, |t| std::cmp::Reverse(t.0)); + } + fn reverse(keyvals: Large>) -> () { let mut map: IndexMap<_, _> = IndexMap::from_iter(keyvals.to_vec()); diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/benches/bench.rs temporalio-1.3.0/vendor/indexmap-1.9.3/benches/bench.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/benches/bench.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/benches/bench.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,763 @@ +#![feature(test)] + +extern crate test; +#[macro_use] +extern crate lazy_static; + +use fnv::FnvHasher; +use std::hash::BuildHasherDefault; +use std::hash::Hash; +type FnvBuilder = BuildHasherDefault; + +use test::black_box; +use test::Bencher; + +use indexmap::IndexMap; + +use std::collections::HashMap; + +use rand::rngs::SmallRng; +use rand::seq::SliceRandom; +use rand::SeedableRng; + +/// Use a consistently seeded Rng for benchmark stability +fn small_rng() -> SmallRng { + let seed = u64::from_le_bytes(*b"indexmap"); + SmallRng::seed_from_u64(seed) +} + +#[bench] +fn new_hashmap(b: &mut Bencher) { + b.iter(|| HashMap::::new()); +} + +#[bench] +fn new_indexmap(b: &mut Bencher) { + b.iter(|| IndexMap::::new()); +} + +#[bench] +fn with_capacity_10e5_hashmap(b: &mut Bencher) { + b.iter(|| HashMap::::with_capacity(10_000)); +} + +#[bench] +fn with_capacity_10e5_indexmap(b: &mut Bencher) { + b.iter(|| IndexMap::::with_capacity(10_000)); +} + +#[bench] +fn insert_hashmap_10_000(b: &mut Bencher) { + let c = 10_000; + b.iter(|| { + let mut map = HashMap::with_capacity(c); + for x in 0..c { + map.insert(x, ()); + } + map + }); +} + +#[bench] +fn insert_indexmap_10_000(b: &mut Bencher) { + let c = 10_000; + b.iter(|| { + let mut map = IndexMap::with_capacity(c); + for x in 0..c { + map.insert(x, ()); + } + map + }); +} + +#[bench] +fn insert_hashmap_string_10_000(b: &mut Bencher) { + let c = 10_000; + b.iter(|| { + let mut map = HashMap::with_capacity(c); + for x in 0..c { + map.insert(x.to_string(), ()); + } + map + }); +} + +#[bench] +fn insert_indexmap_string_10_000(b: &mut Bencher) { + let c = 10_000; + b.iter(|| { + let mut map = IndexMap::with_capacity(c); + for x in 0..c { + map.insert(x.to_string(), ()); + } + map + }); +} + +#[bench] +fn insert_hashmap_str_10_000(b: &mut Bencher) { + let c = 10_000; + let ss = Vec::from_iter((0..c).map(|x| x.to_string())); + b.iter(|| { + let mut map = HashMap::with_capacity(c); + for key in &ss { + map.insert(&key[..], ()); + } + map + }); +} + +#[bench] +fn insert_indexmap_str_10_000(b: &mut Bencher) { + let c = 10_000; + let ss = Vec::from_iter((0..c).map(|x| x.to_string())); + b.iter(|| { + let mut map = IndexMap::with_capacity(c); + for key in &ss { + map.insert(&key[..], ()); + } + map + }); +} + +#[bench] +fn insert_hashmap_int_bigvalue_10_000(b: &mut Bencher) { + let c = 10_000; + let value = [0u64; 10]; + b.iter(|| { + let mut map = HashMap::with_capacity(c); + for i in 0..c { + map.insert(i, value); + } + map + }); +} + +#[bench] +fn insert_indexmap_int_bigvalue_10_000(b: &mut Bencher) { + let c = 10_000; + let value = [0u64; 10]; + b.iter(|| { + let mut map = IndexMap::with_capacity(c); + for i in 0..c { + map.insert(i, value); + } + map + }); +} + +#[bench] +fn insert_hashmap_100_000(b: &mut Bencher) { + let c = 100_000; + b.iter(|| { + let mut map = HashMap::with_capacity(c); + for x in 0..c { + map.insert(x, ()); + } + map + }); +} + +#[bench] +fn insert_indexmap_100_000(b: &mut Bencher) { + let c = 100_000; + b.iter(|| { + let mut map = IndexMap::with_capacity(c); + for x in 0..c { + map.insert(x, ()); + } + map + }); +} + +#[bench] +fn insert_hashmap_150(b: &mut Bencher) { + let c = 150; + b.iter(|| { + let mut map = HashMap::with_capacity(c); + for x in 0..c { + map.insert(x, ()); + } + map + }); +} + +#[bench] +fn insert_indexmap_150(b: &mut Bencher) { + let c = 150; + b.iter(|| { + let mut map = IndexMap::with_capacity(c); + for x in 0..c { + map.insert(x, ()); + } + map + }); +} + +#[bench] +fn entry_hashmap_150(b: &mut Bencher) { + let c = 150; + b.iter(|| { + let mut map = HashMap::with_capacity(c); + for x in 0..c { + map.entry(x).or_insert(()); + } + map + }); +} + +#[bench] +fn entry_indexmap_150(b: &mut Bencher) { + let c = 150; + b.iter(|| { + let mut map = IndexMap::with_capacity(c); + for x in 0..c { + map.entry(x).or_insert(()); + } + map + }); +} + +#[bench] +fn iter_sum_hashmap_10_000(b: &mut Bencher) { + let c = 10_000; + let mut map = HashMap::with_capacity(c); + let len = c - c / 10; + for x in 0..len { + map.insert(x, ()); + } + assert_eq!(map.len(), len); + b.iter(|| map.keys().sum::()); +} + +#[bench] +fn iter_sum_indexmap_10_000(b: &mut Bencher) { + let c = 10_000; + let mut map = IndexMap::with_capacity(c); + let len = c - c / 10; + for x in 0..len { + map.insert(x, ()); + } + assert_eq!(map.len(), len); + b.iter(|| map.keys().sum::()); +} + +#[bench] +fn iter_black_box_hashmap_10_000(b: &mut Bencher) { + let c = 10_000; + let mut map = HashMap::with_capacity(c); + let len = c - c / 10; + for x in 0..len { + map.insert(x, ()); + } + assert_eq!(map.len(), len); + b.iter(|| { + for &key in map.keys() { + black_box(key); + } + }); +} + +#[bench] +fn iter_black_box_indexmap_10_000(b: &mut Bencher) { + let c = 10_000; + let mut map = IndexMap::with_capacity(c); + let len = c - c / 10; + for x in 0..len { + map.insert(x, ()); + } + assert_eq!(map.len(), len); + b.iter(|| { + for &key in map.keys() { + black_box(key); + } + }); +} + +fn shuffled_keys(iter: I) -> Vec +where + I: IntoIterator, +{ + let mut v = Vec::from_iter(iter); + let mut rng = small_rng(); + v.shuffle(&mut rng); + v +} + +#[bench] +fn lookup_hashmap_10_000_exist(b: &mut Bencher) { + let c = 10_000; + let mut map = HashMap::with_capacity(c); + let keys = shuffled_keys(0..c); + for &key in &keys { + map.insert(key, 1); + } + b.iter(|| { + let mut found = 0; + for key in 5000..c { + found += map.get(&key).is_some() as i32; + } + found + }); +} + +#[bench] +fn lookup_hashmap_10_000_noexist(b: &mut Bencher) { + let c = 10_000; + let mut map = HashMap::with_capacity(c); + let keys = shuffled_keys(0..c); + for &key in &keys { + map.insert(key, 1); + } + b.iter(|| { + let mut found = 0; + for key in c..15000 { + found += map.get(&key).is_some() as i32; + } + found + }); +} + +#[bench] +fn lookup_indexmap_10_000_exist(b: &mut Bencher) { + let c = 10_000; + let mut map = IndexMap::with_capacity(c); + let keys = shuffled_keys(0..c); + for &key in &keys { + map.insert(key, 1); + } + b.iter(|| { + let mut found = 0; + for key in 5000..c { + found += map.get(&key).is_some() as i32; + } + found + }); +} + +#[bench] +fn lookup_indexmap_10_000_noexist(b: &mut Bencher) { + let c = 10_000; + let mut map = IndexMap::with_capacity(c); + let keys = shuffled_keys(0..c); + for &key in &keys { + map.insert(key, 1); + } + b.iter(|| { + let mut found = 0; + for key in c..15000 { + found += map.get(&key).is_some() as i32; + } + found + }); +} + +// number of items to look up +const LOOKUP_MAP_SIZE: u32 = 100_000_u32; +const LOOKUP_SAMPLE_SIZE: u32 = 5000; +const SORT_MAP_SIZE: usize = 10_000; + +// use lazy_static so that comparison benchmarks use the exact same inputs +lazy_static! { + static ref KEYS: Vec = shuffled_keys(0..LOOKUP_MAP_SIZE); +} + +lazy_static! { + static ref HMAP_100K: HashMap = { + let c = LOOKUP_MAP_SIZE; + let mut map = HashMap::with_capacity(c as usize); + let keys = &*KEYS; + for &key in keys { + map.insert(key, key); + } + map + }; +} + +lazy_static! { + static ref IMAP_100K: IndexMap = { + let c = LOOKUP_MAP_SIZE; + let mut map = IndexMap::with_capacity(c as usize); + let keys = &*KEYS; + for &key in keys { + map.insert(key, key); + } + map + }; +} + +lazy_static! { + static ref IMAP_SORT_U32: IndexMap = { + let mut map = IndexMap::with_capacity(SORT_MAP_SIZE); + for &key in &KEYS[..SORT_MAP_SIZE] { + map.insert(key, key); + } + map + }; +} +lazy_static! { + static ref IMAP_SORT_S: IndexMap = { + let mut map = IndexMap::with_capacity(SORT_MAP_SIZE); + for &key in &KEYS[..SORT_MAP_SIZE] { + map.insert(format!("{:^16x}", &key), String::new()); + } + map + }; +} + +#[bench] +fn lookup_hashmap_100_000_multi(b: &mut Bencher) { + let map = &*HMAP_100K; + b.iter(|| { + let mut found = 0; + for key in 0..LOOKUP_SAMPLE_SIZE { + found += map.get(&key).is_some() as u32; + } + found + }); +} + +#[bench] +fn lookup_indexmap_100_000_multi(b: &mut Bencher) { + let map = &*IMAP_100K; + b.iter(|| { + let mut found = 0; + for key in 0..LOOKUP_SAMPLE_SIZE { + found += map.get(&key).is_some() as u32; + } + found + }); +} + +// inorder: Test looking up keys in the same order as they were inserted +#[bench] +fn lookup_hashmap_100_000_inorder_multi(b: &mut Bencher) { + let map = &*HMAP_100K; + let keys = &*KEYS; + b.iter(|| { + let mut found = 0; + for key in &keys[0..LOOKUP_SAMPLE_SIZE as usize] { + found += map.get(key).is_some() as u32; + } + found + }); +} + +#[bench] +fn lookup_indexmap_100_000_inorder_multi(b: &mut Bencher) { + let map = &*IMAP_100K; + let keys = &*KEYS; + b.iter(|| { + let mut found = 0; + for key in &keys[0..LOOKUP_SAMPLE_SIZE as usize] { + found += map.get(key).is_some() as u32; + } + found + }); +} + +#[bench] +fn lookup_hashmap_100_000_single(b: &mut Bencher) { + let map = &*HMAP_100K; + let mut iter = (0..LOOKUP_MAP_SIZE + LOOKUP_SAMPLE_SIZE).cycle(); + b.iter(|| { + let key = iter.next().unwrap(); + map.get(&key).is_some() + }); +} + +#[bench] +fn lookup_indexmap_100_000_single(b: &mut Bencher) { + let map = &*IMAP_100K; + let mut iter = (0..LOOKUP_MAP_SIZE + LOOKUP_SAMPLE_SIZE).cycle(); + b.iter(|| { + let key = iter.next().unwrap(); + map.get(&key).is_some() + }); +} + +const GROW_SIZE: usize = 100_000; +type GrowKey = u32; + +// Test grow/resize without preallocation +#[bench] +fn grow_fnv_hashmap_100_000(b: &mut Bencher) { + b.iter(|| { + let mut map: HashMap<_, _, FnvBuilder> = HashMap::default(); + for x in 0..GROW_SIZE { + map.insert(x as GrowKey, x as GrowKey); + } + map + }); +} + +#[bench] +fn grow_fnv_indexmap_100_000(b: &mut Bencher) { + b.iter(|| { + let mut map: IndexMap<_, _, FnvBuilder> = IndexMap::default(); + for x in 0..GROW_SIZE { + map.insert(x as GrowKey, x as GrowKey); + } + map + }); +} + +const MERGE: u64 = 10_000; +#[bench] +fn hashmap_merge_simple(b: &mut Bencher) { + let first_map: HashMap = (0..MERGE).map(|i| (i, ())).collect(); + let second_map: HashMap = (MERGE..MERGE * 2).map(|i| (i, ())).collect(); + b.iter(|| { + let mut merged = first_map.clone(); + merged.extend(second_map.iter().map(|(&k, &v)| (k, v))); + merged + }); +} + +#[bench] +fn hashmap_merge_shuffle(b: &mut Bencher) { + let first_map: HashMap = (0..MERGE).map(|i| (i, ())).collect(); + let second_map: HashMap = (MERGE..MERGE * 2).map(|i| (i, ())).collect(); + let mut v = Vec::new(); + let mut rng = small_rng(); + b.iter(|| { + let mut merged = first_map.clone(); + v.extend(second_map.iter().map(|(&k, &v)| (k, v))); + v.shuffle(&mut rng); + merged.extend(v.drain(..)); + + merged + }); +} + +#[bench] +fn indexmap_merge_simple(b: &mut Bencher) { + let first_map: IndexMap = (0..MERGE).map(|i| (i, ())).collect(); + let second_map: IndexMap = (MERGE..MERGE * 2).map(|i| (i, ())).collect(); + b.iter(|| { + let mut merged = first_map.clone(); + merged.extend(second_map.iter().map(|(&k, &v)| (k, v))); + merged + }); +} + +#[bench] +fn indexmap_merge_shuffle(b: &mut Bencher) { + let first_map: IndexMap = (0..MERGE).map(|i| (i, ())).collect(); + let second_map: IndexMap = (MERGE..MERGE * 2).map(|i| (i, ())).collect(); + let mut v = Vec::new(); + let mut rng = small_rng(); + b.iter(|| { + let mut merged = first_map.clone(); + v.extend(second_map.iter().map(|(&k, &v)| (k, v))); + v.shuffle(&mut rng); + merged.extend(v.drain(..)); + + merged + }); +} + +#[bench] +fn swap_remove_indexmap_100_000(b: &mut Bencher) { + let map = IMAP_100K.clone(); + let mut keys = Vec::from_iter(map.keys().copied()); + let mut rng = small_rng(); + keys.shuffle(&mut rng); + + b.iter(|| { + let mut map = map.clone(); + for key in &keys { + map.swap_remove(key); + } + assert_eq!(map.len(), 0); + map + }); +} + +#[bench] +fn shift_remove_indexmap_100_000_few(b: &mut Bencher) { + let map = IMAP_100K.clone(); + let mut keys = Vec::from_iter(map.keys().copied()); + let mut rng = small_rng(); + keys.shuffle(&mut rng); + keys.truncate(50); + + b.iter(|| { + let mut map = map.clone(); + for key in &keys { + map.shift_remove(key); + } + assert_eq!(map.len(), IMAP_100K.len() - keys.len()); + map + }); +} + +#[bench] +fn shift_remove_indexmap_2_000_full(b: &mut Bencher) { + let mut keys = KEYS[..2_000].to_vec(); + let mut map = IndexMap::with_capacity(keys.len()); + for &key in &keys { + map.insert(key, key); + } + let mut rng = small_rng(); + keys.shuffle(&mut rng); + + b.iter(|| { + let mut map = map.clone(); + for key in &keys { + map.shift_remove(key); + } + assert_eq!(map.len(), 0); + map + }); +} + +#[bench] +fn pop_indexmap_100_000(b: &mut Bencher) { + let map = IMAP_100K.clone(); + + b.iter(|| { + let mut map = map.clone(); + while !map.is_empty() { + map.pop(); + } + assert_eq!(map.len(), 0); + map + }); +} + +#[bench] +fn few_retain_indexmap_100_000(b: &mut Bencher) { + let map = IMAP_100K.clone(); + + b.iter(|| { + let mut map = map.clone(); + map.retain(|k, _| *k % 7 == 0); + map + }); +} + +#[bench] +fn few_retain_hashmap_100_000(b: &mut Bencher) { + let map = HMAP_100K.clone(); + + b.iter(|| { + let mut map = map.clone(); + map.retain(|k, _| *k % 7 == 0); + map + }); +} + +#[bench] +fn half_retain_indexmap_100_000(b: &mut Bencher) { + let map = IMAP_100K.clone(); + + b.iter(|| { + let mut map = map.clone(); + map.retain(|k, _| *k % 2 == 0); + map + }); +} + +#[bench] +fn half_retain_hashmap_100_000(b: &mut Bencher) { + let map = HMAP_100K.clone(); + + b.iter(|| { + let mut map = map.clone(); + map.retain(|k, _| *k % 2 == 0); + map + }); +} + +#[bench] +fn many_retain_indexmap_100_000(b: &mut Bencher) { + let map = IMAP_100K.clone(); + + b.iter(|| { + let mut map = map.clone(); + map.retain(|k, _| *k % 100 != 0); + map + }); +} + +#[bench] +fn many_retain_hashmap_100_000(b: &mut Bencher) { + let map = HMAP_100K.clone(); + + b.iter(|| { + let mut map = map.clone(); + map.retain(|k, _| *k % 100 != 0); + map + }); +} + +// simple sort impl for comparison +pub fn simple_sort(m: &mut IndexMap) { + let mut ordered: Vec<_> = m.drain(..).collect(); + ordered.sort_by(|left, right| left.0.cmp(&right.0)); + m.extend(ordered); +} + +#[bench] +fn indexmap_sort_s(b: &mut Bencher) { + let map = IMAP_SORT_S.clone(); + + // there's a map clone there, but it's still useful to profile this + b.iter(|| { + let mut map = map.clone(); + map.sort_keys(); + map + }); +} + +#[bench] +fn indexmap_simple_sort_s(b: &mut Bencher) { + let map = IMAP_SORT_S.clone(); + + // there's a map clone there, but it's still useful to profile this + b.iter(|| { + let mut map = map.clone(); + simple_sort(&mut map); + map + }); +} + +#[bench] +fn indexmap_sort_u32(b: &mut Bencher) { + let map = IMAP_SORT_U32.clone(); + + // there's a map clone there, but it's still useful to profile this + b.iter(|| { + let mut map = map.clone(); + map.sort_keys(); + map + }); +} + +#[bench] +fn indexmap_simple_sort_u32(b: &mut Bencher) { + let map = IMAP_SORT_U32.clone(); + + // there's a map clone there, but it's still useful to profile this + b.iter(|| { + let mut map = map.clone(); + simple_sort(&mut map); + map + }); +} + +// measure the fixed overhead of cloning in sort benchmarks +#[bench] +fn indexmap_clone_for_sort_s(b: &mut Bencher) { + let map = IMAP_SORT_S.clone(); + + b.iter(|| map.clone()); +} + +#[bench] +fn indexmap_clone_for_sort_u32(b: &mut Bencher) { + let map = IMAP_SORT_U32.clone(); + + b.iter(|| map.clone()); +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/benches/faststring.rs temporalio-1.3.0/vendor/indexmap-1.9.3/benches/faststring.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/benches/faststring.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/benches/faststring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,185 @@ +#![feature(test)] + +extern crate test; + +use test::Bencher; + +use indexmap::IndexMap; + +use std::collections::HashMap; + +use rand::rngs::SmallRng; +use rand::seq::SliceRandom; +use rand::SeedableRng; + +use std::hash::{Hash, Hasher}; + +use std::borrow::Borrow; +use std::ops::Deref; + +/// Use a consistently seeded Rng for benchmark stability +fn small_rng() -> SmallRng { + let seed = u64::from_le_bytes(*b"indexmap"); + SmallRng::seed_from_u64(seed) +} + +#[derive(PartialEq, Eq, Copy, Clone)] +#[repr(transparent)] +pub struct OneShot(pub T); + +impl Hash for OneShot { + fn hash(&self, h: &mut H) { + h.write(self.0.as_bytes()) + } +} + +impl<'a, S> From<&'a S> for &'a OneShot +where + S: AsRef, +{ + fn from(s: &'a S) -> Self { + let s: &str = s.as_ref(); + unsafe { &*(s as *const str as *const OneShot) } + } +} + +impl Hash for OneShot { + fn hash(&self, h: &mut H) { + h.write(self.0.as_bytes()) + } +} + +impl Borrow> for OneShot { + fn borrow(&self) -> &OneShot { + <&OneShot>::from(&self.0) + } +} + +impl Deref for OneShot { + type Target = T; + fn deref(&self) -> &T { + &self.0 + } +} + +fn shuffled_keys(iter: I) -> Vec +where + I: IntoIterator, +{ + let mut v = Vec::from_iter(iter); + let mut rng = small_rng(); + v.shuffle(&mut rng); + v +} + +#[bench] +fn insert_hashmap_string_10_000(b: &mut Bencher) { + let c = 10_000; + b.iter(|| { + let mut map = HashMap::with_capacity(c); + for x in 0..c { + map.insert(x.to_string(), ()); + } + map + }); +} + +#[bench] +fn insert_hashmap_string_oneshot_10_000(b: &mut Bencher) { + let c = 10_000; + b.iter(|| { + let mut map = HashMap::with_capacity(c); + for x in 0..c { + map.insert(OneShot(x.to_string()), ()); + } + map + }); +} + +#[bench] +fn insert_indexmap_string_10_000(b: &mut Bencher) { + let c = 10_000; + b.iter(|| { + let mut map = IndexMap::with_capacity(c); + for x in 0..c { + map.insert(x.to_string(), ()); + } + map + }); +} + +#[bench] +fn lookup_hashmap_10_000_exist_string(b: &mut Bencher) { + let c = 10_000; + let mut map = HashMap::with_capacity(c); + let keys = shuffled_keys(0..c); + for &key in &keys { + map.insert(key.to_string(), 1); + } + let lookups = (5000..c).map(|x| x.to_string()).collect::>(); + b.iter(|| { + let mut found = 0; + for key in &lookups { + found += map.get(key).is_some() as i32; + } + found + }); +} + +#[bench] +fn lookup_hashmap_10_000_exist_string_oneshot(b: &mut Bencher) { + let c = 10_000; + let mut map = HashMap::with_capacity(c); + let keys = shuffled_keys(0..c); + for &key in &keys { + map.insert(OneShot(key.to_string()), 1); + } + let lookups = (5000..c) + .map(|x| OneShot(x.to_string())) + .collect::>(); + b.iter(|| { + let mut found = 0; + for key in &lookups { + found += map.get(key).is_some() as i32; + } + found + }); +} + +#[bench] +fn lookup_indexmap_10_000_exist_string(b: &mut Bencher) { + let c = 10_000; + let mut map = IndexMap::with_capacity(c); + let keys = shuffled_keys(0..c); + for &key in &keys { + map.insert(key.to_string(), 1); + } + let lookups = (5000..c).map(|x| x.to_string()).collect::>(); + b.iter(|| { + let mut found = 0; + for key in &lookups { + found += map.get(key).is_some() as i32; + } + found + }); +} + +#[bench] +fn lookup_indexmap_10_000_exist_string_oneshot(b: &mut Bencher) { + let c = 10_000; + let mut map = IndexMap::with_capacity(c); + let keys = shuffled_keys(0..c); + for &key in &keys { + map.insert(OneShot(key.to_string()), 1); + } + let lookups = (5000..c) + .map(|x| OneShot(x.to_string())) + .collect::>(); + b.iter(|| { + let mut found = 0; + for key in &lookups { + found += map.get(key).is_some() as i32; + } + found + }); +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/build.rs temporalio-1.3.0/vendor/indexmap-1.9.3/build.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/build.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/build.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,8 @@ +fn main() { + // If "std" is explicitly requested, don't bother probing the target for it. + match std::env::var_os("CARGO_FEATURE_STD") { + Some(_) => autocfg::emit("has_std"), + None => autocfg::new().emit_sysroot_crate("std"), + } + autocfg::rerun_path("build.rs"); +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/.cargo-checksum.json temporalio-1.3.0/vendor/indexmap-1.9.3/.cargo-checksum.json --- temporalio-1.3.0/vendor/indexmap-1.9.3/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +{"files":{"Cargo.toml":"1290d383adfdcd24f158a4619afb5547d633c83c0a1ab3b5c1ee0dabe4fb1f36","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"ecc269ef87fd38a1d98e30bfac9ba964a9dbd9315c3770fed98d4d7cb5882055","README.md":"f8b02aa7c20fc0f5bc13de9e9e78899ec8cdbc16c2db880a1d0bc14c25b07542","RELEASES.md":"85d9d9bc78e94df7ce90300bb94099b9ab2696d1b3f6b815c22761522878e679","benches/bench.rs":"3b2900abbc9e8a60af78b0395222ee75e86bc68519a0f38477387d1572eed397","benches/faststring.rs":"5fdd6cdb19d0557ed58f241e809a240cf8939d9e5b87a72d5f127f81ab98380b","build.rs":"558b4d0b9e9b3a44f7e1a2b69f7a7567ea721cd45cb54f4e458e850bf702f35c","src/arbitrary.rs":"bb8bda10f686abe57eef1446d3fc3fc6fb251f95629b28c20e620a4838c43db8","src/equivalent.rs":"2e6ae24ef09a09b917f4e2b0f6288f901878e42f5080f61b1bd1afdcc90aba87","src/lib.rs":"ea2cbe4f6cc2c4a75f42c9fc936503e6bee0f136c60f6811a2a9907ed8886443","src/macros.rs":"80c22f630e7f81e6fa663ca4c9e50cf5f332c8905d72d1338bd16f24eb353c2a","src/map.rs":"2e9cbfa240865cfd6b6b972bdbdb39283e6302dd2d0d72b3c2bfce4414bf5729","src/map/core.rs":"8422cd774c5db7d83cdeb0c5836c10f29caa1bee8d95b0d674b01b32e7ce80d8","src/map/core/raw.rs":"4e5fac4fecccc352268351d8b1f82b345067b5c029bba7e6ab88e8f8bc799c6a","src/mutable_keys.rs":"a919065b59000286eb11c7d46f6896bf0a1d484c9dac5e61d80bb8990c9fbedb","src/rayon/map.rs":"1a508c7c95c5d56113b851f7ce140d62ad541f1c6129352a7ec62d5bea7af4a1","src/rayon/mod.rs":"019e9379ccab57a299ab5b5a2c0efc7561b77a715a5afe8f797c7e8330c6206c","src/rayon/set.rs":"ba00e88e90fb7ab803589f99f24b595d60309e541aae3d01fdde21bff3840194","src/rustc.rs":"fe7a348c5a10a66880cb6c737593fe79d3b6de40f44ba0d7b89204aa95e14a3a","src/serde.rs":"d45ec8fb9c02594ca6f2e9b20764778b2b4193a24a52f1e233160a33efc6e683","src/serde_seq.rs":"c54a52fa607b6ccddda1e76e829778ca304c49b5f434edc5e582a5386c35d662","src/set.rs":"0a57affb623fa6b28df18cc14841e4f076cbd1da5c809635d202f865640af1ee","src/util.rs":"ab712bce71b54cf2763e6010e64bb5944d1d59ce15e2f2beffa7ceed204d6a68","tests/equivalent_trait.rs":"efe9393069e3cfc893d2c9c0343679979578e437fdb98a10baefeced027ba310","tests/macros_full_path.rs":"c33c86d7341581fdd08e2e6375a4afca507fa603540c54a3b9e51c4cd011cd71","tests/quick.rs":"1addbc6cbcb1aae5b8bde0fb0e18197d947e8f13244e4ae7ebf97bdda00eafea","tests/tests.rs":"f6dbeeb0e2950402b0e66ac52bf74c9e4197d3c5d9c0dde64a7998a2ef74d327"},"package":"bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/Cargo.toml temporalio-1.3.0/vendor/indexmap-1.9.3/Cargo.toml --- temporalio-1.3.0/vendor/indexmap-1.9.3/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,108 @@ +# 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.56" +name = "indexmap" +version = "1.9.3" +description = "A hash table with consistent order and fast iteration." +documentation = "https://docs.rs/indexmap/" +readme = "README.md" +keywords = [ + "hashmap", + "no_std", +] +categories = [ + "data-structures", + "no-std", +] +license = "Apache-2.0 OR MIT" +repository = "https://github.com/bluss/indexmap" + +[package.metadata.release] +no-dev-version = true +tag-name = "{{version}}" + +[package.metadata.docs.rs] +features = [ + "arbitrary", + "quickcheck", + "serde-1", + "rayon", +] + +[profile.bench] +debug = true + +[lib] +bench = false + +[dependencies.arbitrary] +version = "1.0" +optional = true +default-features = false + +[dependencies.hashbrown] +version = "0.12" +features = ["raw"] +default-features = false + +[dependencies.quickcheck] +version = "1.0" +optional = true +default-features = false + +[dependencies.rayon] +version = "1.4.1" +optional = true + +[dependencies.rustc-rayon] +version = "0.5" +optional = true +package = "rustc-rayon" + +[dependencies.serde] +version = "1.0" +optional = true +default-features = false + +[dev-dependencies.fnv] +version = "1.0" + +[dev-dependencies.fxhash] +version = "0.2.1" + +[dev-dependencies.itertools] +version = "0.10" + +[dev-dependencies.lazy_static] +version = "1.3" + +[dev-dependencies.quickcheck] +version = "1.0" +default-features = false + +[dev-dependencies.rand] +version = "0.8" +features = ["small_rng"] + +[dev-dependencies.serde_derive] +version = "1.0" + +[build-dependencies.autocfg] +version = "1" + +[features] +serde-1 = ["serde"] +std = [] +test_debug = [] +test_low_transition_point = [] diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/LICENSE-APACHE temporalio-1.3.0/vendor/indexmap-1.9.3/LICENSE-APACHE --- temporalio-1.3.0/vendor/indexmap-1.9.3/LICENSE-APACHE 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/LICENSE-APACHE 2023-10-30 19:40:00.000000000 +0000 @@ -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 -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/LICENSE-MIT temporalio-1.3.0/vendor/indexmap-1.9.3/LICENSE-MIT --- temporalio-1.3.0/vendor/indexmap-1.9.3/LICENSE-MIT 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/LICENSE-MIT 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,25 @@ +Copyright (c) 2016--2017 + +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 -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/README.md temporalio-1.3.0/vendor/indexmap-1.9.3/README.md --- temporalio-1.3.0/vendor/indexmap-1.9.3/README.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,55 @@ +# indexmap + +[![build status](https://github.com/bluss/indexmap/workflows/Continuous%20integration/badge.svg?branch=master)](https://github.com/bluss/indexmap/actions) +[![crates.io](https://img.shields.io/crates/v/indexmap.svg)](https://crates.io/crates/indexmap) +[![docs](https://docs.rs/indexmap/badge.svg)](https://docs.rs/indexmap) +[![rustc](https://img.shields.io/badge/rust-1.56%2B-orange.svg)](https://img.shields.io/badge/rust-1.56%2B-orange.svg) + +A pure-Rust hash table which preserves (in a limited sense) insertion order. + +This crate implements compact map and set data-structures, +where the iteration order of the keys is independent from their hash or +value. It preserves insertion order (except after removals), and it +allows lookup of entries by either hash table key or numerical index. + +Note: this crate was originally released under the name `ordermap`, +but it was renamed to `indexmap` to better reflect its features. + +# Background + +This was inspired by Python 3.6's new dict implementation (which remembers +the insertion order and is fast to iterate, and is compact in memory). + +Some of those features were translated to Rust, and some were not. The result +was indexmap, a hash table that has following properties: + +- Order is **independent of hash function** and hash values of keys. +- Fast to iterate. +- Indexed in compact space. +- Preserves insertion order **as long** as you don't call `.remove()`. +- Uses hashbrown for the inner table, just like Rust's libstd `HashMap` does. + +## Performance + +`IndexMap` derives a couple of performance facts directly from how it is constructed, +which is roughly: + +> A raw hash table of key-value indices, and a vector of key-value pairs. + +- Iteration is very fast since it is on the dense key-values. +- Removal is fast since it moves memory areas only in the table, + and uses a single swap in the vector. +- Lookup is fast-ish because the initial 7-bit hash lookup uses SIMD, and indices are + densely stored. Lookup also is slow-ish since the actual key-value pairs are stored + separately. (Visible when cpu caches size is limiting.) + +- In practice, `IndexMap` has been tested out as the hashmap in rustc in [PR45282] and + the performance was roughly on par across the whole workload. +- If you want the properties of `IndexMap`, or its strongest performance points + fits your workload, it might be the best hash table implementation. + +[PR45282]: https://github.com/rust-lang/rust/pull/45282 + +# Recent Changes + +See [RELEASES.md](https://github.com/bluss/indexmap/blob/master/RELEASES.md). diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/RELEASES.md temporalio-1.3.0/vendor/indexmap-1.9.3/RELEASES.md --- temporalio-1.3.0/vendor/indexmap-1.9.3/RELEASES.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/RELEASES.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,388 @@ +- 1.9.3 + + - Bump the `rustc-rayon` dependency, for compiler use only. + +- 1.9.2 + + - `IndexMap` and `IndexSet` both implement `arbitrary::Arbitrary<'_>` and + `quickcheck::Arbitrary` if those optional dependency features are enabled. + +- 1.9.1 + + - The MSRV now allows Rust 1.56.0 as well. However, currently `hashbrown` + 0.12.1 requires 1.56.1, so users on 1.56.0 should downgrade that to 0.12.0 + until there is a later published version relaxing its requirement. + +- 1.9.0 + + - **MSRV**: Rust 1.56.1 or later is now required. + + - The `hashbrown` dependency has been updated to version 0.12. + + - `IterMut` and `ValuesMut` now implement `Debug`. + + - The new `IndexMap::shrink_to` and `IndexSet::shrink_to` methods shrink + the capacity with a lower bound. + + - The new `IndexMap::move_index` and `IndexSet::move_index` methods change + the position of an item from one index to another, shifting the items + between to accommodate the move. + +- 1.8.2 + + - Bump the `rustc-rayon` dependency, for compiler use only. + +- 1.8.1 + + - The new `IndexSet::replace_full` will return the index of the item along + with the replaced value, if any, by @zakcutner in PR [222]. + +[222]: https://github.com/bluss/indexmap/pull/222 + +- 1.8.0 + + - The new `IndexMap::into_keys` and `IndexMap::into_values` will consume + the map into keys or values, respectively, matching Rust 1.54's `HashMap` + methods, by @taiki-e in PR [195]. + + - More of the iterator types implement `Debug`, `ExactSizeIterator`, and + `FusedIterator`, by @cuviper in PR [196]. + + - `IndexMap` and `IndexSet` now implement rayon's `ParallelDrainRange`, + by @cuviper in PR [197]. + + - `IndexMap::with_hasher` and `IndexSet::with_hasher` are now `const` + functions, allowing static maps and sets, by @mwillsey in PR [203]. + + - `IndexMap` and `IndexSet` now implement `From` for arrays, matching + Rust 1.56's implementation for `HashMap`, by @rouge8 in PR [205]. + + - `IndexMap` and `IndexSet` now have methods `sort_unstable_keys`, + `sort_unstable_by`, `sorted_unstable_by`, and `par_*` equivalents, + which sort in-place without preserving the order of equal items, by + @bhgomes in PR [211]. + +[195]: https://github.com/bluss/indexmap/pull/195 +[196]: https://github.com/bluss/indexmap/pull/196 +[197]: https://github.com/bluss/indexmap/pull/197 +[203]: https://github.com/bluss/indexmap/pull/203 +[205]: https://github.com/bluss/indexmap/pull/205 +[211]: https://github.com/bluss/indexmap/pull/211 + +- 1.7.0 + + - **MSRV**: Rust 1.49 or later is now required. + + - The `hashbrown` dependency has been updated to version 0.11. + +- 1.6.2 + + - Fixed to match `std` behavior, `OccupiedEntry::key` now references the + existing key in the map instead of the lookup key, by @cuviper in PR [170]. + + - The new `Entry::or_insert_with_key` matches Rust 1.50's `Entry` method, + passing `&K` to the callback to create a value, by @cuviper in PR [175]. + +[170]: https://github.com/bluss/indexmap/pull/170 +[175]: https://github.com/bluss/indexmap/pull/175 + +- 1.6.1 + + - The new `serde_seq` module implements `IndexMap` serialization as a + sequence to ensure order is preserved, by @cuviper in PR [158]. + + - New methods on maps and sets work like the `Vec`/slice methods by the same name: + `truncate`, `split_off`, `first`, `first_mut`, `last`, `last_mut`, and + `swap_indices`, by @cuviper in PR [160]. + +[158]: https://github.com/bluss/indexmap/pull/158 +[160]: https://github.com/bluss/indexmap/pull/160 + +- 1.6.0 + + - **MSRV**: Rust 1.36 or later is now required. + + - The `hashbrown` dependency has been updated to version 0.9. + +- 1.5.2 + + - The new "std" feature will force the use of `std` for users that explicitly + want the default `S = RandomState`, bypassing the autodetection added in 1.3.0, + by @cuviper in PR [145]. + +[145]: https://github.com/bluss/indexmap/pull/145 + +- 1.5.1 + + - Values can now be indexed by their `usize` position by @cuviper in PR [132]. + + - Some of the generic bounds have been relaxed to match `std` by @cuviper in PR [141]. + + - `drain` now accepts any `R: RangeBounds` by @cuviper in PR [142]. + +[132]: https://github.com/bluss/indexmap/pull/132 +[141]: https://github.com/bluss/indexmap/pull/141 +[142]: https://github.com/bluss/indexmap/pull/142 + +- 1.5.0 + + - **MSRV**: Rust 1.32 or later is now required. + + - The inner hash table is now based on `hashbrown` by @cuviper in PR [131]. + This also completes the method `reserve` and adds `shrink_to_fit`. + + - Add new methods `get_key_value`, `remove_entry`, `swap_remove_entry`, + and `shift_remove_entry`, by @cuviper in PR [136] + + - `Clone::clone_from` reuses allocations by @cuviper in PR [125] + + - Add new method `reverse` by @linclelinkpart5 in PR [128] + +[125]: https://github.com/bluss/indexmap/pull/125 +[128]: https://github.com/bluss/indexmap/pull/128 +[131]: https://github.com/bluss/indexmap/pull/131 +[136]: https://github.com/bluss/indexmap/pull/136 + +- 1.4.0 + + - Add new method `get_index_of` by @Thermatrix in PR [115] and [120] + + - Fix build script rebuild-if-changed configuration to use "build.rs"; + fixes issue [123]. Fix by @cuviper. + + - Dev-dependencies (rand and quickcheck) have been updated. The crate's tests + now run using Rust 1.32 or later (MSRV for building the crate has not changed). + by @kjeremy and @bluss + +[123]: https://github.com/bluss/indexmap/issues/123 +[115]: https://github.com/bluss/indexmap/pull/115 +[120]: https://github.com/bluss/indexmap/pull/120 + +- 1.3.2 + + - Maintenance update to regenerate the published `Cargo.toml`. + +- 1.3.1 + + - Maintenance update for formatting and `autocfg` 1.0. + +- 1.3.0 + + - The deprecation messages in the previous version have been removed. + (The methods have not otherwise changed.) Docs for removal methods have been + improved. + - From Rust 1.36, this crate supports being built **without std**, requiring + `alloc` instead. This is enabled automatically when it is detected that + `std` is not available. There is no crate feature to enable/disable to + trigger this. The new build-dep `autocfg` enables this. + +- 1.2.0 + + - Plain `.remove()` now has a deprecation message, it informs the user + about picking one of the removal functions `swap_remove` and `shift_remove` + which have different performance and order semantics. + Plain `.remove()` will not be removed, the warning message and method + will remain until further. + + - Add new method `shift_remove` for order preserving removal on the map, + and `shift_take` for the corresponding operation on the set. + + - Add methods `swap_remove`, `swap_remove_entry` to `Entry`. + + - Fix indexset/indexmap to support full paths, like `indexmap::indexmap!()` + + - Internal improvements: fix warnings, deprecations and style lints + +- 1.1.0 + + - Added optional feature `"rayon"` that adds parallel iterator support + to `IndexMap` and `IndexSet` using Rayon. This includes all the regular + iterators in parallel versions, and parallel sort. + + - Implemented `Clone` for `map::{Iter, Keys, Values}` and + `set::{Difference, Intersection, Iter, SymmetricDifference, Union}` + + - Implemented `Debug` for `map::{Entry, IntoIter, Iter, Keys, Values}` and + `set::{Difference, Intersection, IntoIter, Iter, SymmetricDifference, Union}` + + - Serde trait `IntoDeserializer` are implemented for `IndexMap` and `IndexSet`. + + - Minimum Rust version requirement increased to Rust 1.30 for development builds. + +- 1.0.2 + + - The new methods `IndexMap::insert_full` and `IndexSet::insert_full` are + both like `insert` with the index included in the return value. + + - The new method `Entry::and_modify` can be used to modify occupied + entries, matching the new methods of `std` maps in Rust 1.26. + + - The new method `Entry::or_default` inserts a default value in unoccupied + entries, matching the new methods of `std` maps in Rust 1.28. + +- 1.0.1 + + - Document Rust version policy for the crate (see rustdoc) + +- 1.0.0 + + - This is the 1.0 release for `indexmap`! (the crate and datastructure + formerly known as “ordermapâ€) + - `OccupiedEntry::insert` changed its signature, to use `&mut self` for + the method receiver, matching the equivalent method for a standard + `HashMap`. Thanks to @dtolnay for finding this bug. + - The deprecated old names from ordermap were removed: `OrderMap`, + `OrderSet`, `ordermap!{}`, `orderset!{}`. Use the new `IndexMap` + etc names instead. + +- 0.4.1 + + - Renamed crate to `indexmap`; the `ordermap` crate is now deprecated + and the types `OrderMap/Set` now have a deprecation notice. + +- 0.4.0 + + - This is the last release series for this `ordermap` under that name, + because the crate is **going to be renamed** to `indexmap` (with types + `IndexMap`, `IndexSet`) and no change in functionality! + - The map and its associated structs moved into the `map` submodule of the + crate, so that the map and set are symmetric + + + The iterators, `Entry` and other structs are now under `ordermap::map::` + + - Internally refactored `OrderMap` so that all the main algorithms + (insertion, lookup, removal etc) that don't use the `S` parameter (the + hasher) are compiled without depending on `S`, which reduces generics bloat. + + - `Entry` no longer has a type parameter `S`, which is just like + the standard `HashMap`'s entry. + + - Minimum Rust version requirement increased to Rust 1.18 + +- 0.3.5 + + - Documentation improvements + +- 0.3.4 + + - The `.retain()` methods for `OrderMap` and `OrderSet` now + traverse the elements in order, and the retained elements **keep their order** + - Added new methods `.sort_by()`, `.sort_keys()` to `OrderMap` and + `.sort_by()`, `.sort()` to `OrderSet`. These methods allow you to + sort the maps in place efficiently. + +- 0.3.3 + + - Document insertion behaviour better by @lucab + - Updated dependences (no feature changes) by @ignatenkobrain + +- 0.3.2 + + - Add `OrderSet` by @cuviper! + - `OrderMap::drain` is now (too) a double ended iterator. + +- 0.3.1 + + - In all ordermap iterators, forward the `collect` method to the underlying + iterator as well. + - Add crates.io categories. + +- 0.3.0 + + - The methods `get_pair`, `get_pair_index` were both replaced by + `get_full` (and the same for the mutable case). + - Method `swap_remove_pair` replaced by `swap_remove_full`. + - Add trait `MutableKeys` for opt-in mutable key access. Mutable key access + is only possible through the methods of this extension trait. + - Add new trait `Equivalent` for key equivalence. This extends the + `Borrow` trait mechanism for `OrderMap::get` in a backwards compatible + way, just some minor type inference related issues may become apparent. + See [#10] for more information. + - Implement `Extend<(&K, &V)>` by @xfix. + +[#10]: https://github.com/bluss/ordermap/pull/10 + +- 0.2.13 + + - Fix deserialization to support custom hashers by @Techcable. + - Add methods `.index()` on the entry types by @garro95. + +- 0.2.12 + + - Add methods `.with_hasher()`, `.hasher()`. + +- 0.2.11 + + - Support `ExactSizeIterator` for the iterators. By @Binero. + - Use `Box<[Pos]>` internally, saving a word in the `OrderMap` struct. + - Serde support, with crate feature `"serde-1"`. By @xfix. + +- 0.2.10 + + - Add iterator `.drain(..)` by @stevej. + +- 0.2.9 + + - Add method `.is_empty()` by @overvenus. + - Implement `PartialEq, Eq` by @overvenus. + - Add method `.sorted_by()`. + +- 0.2.8 + + - Add iterators `.values()` and `.values_mut()`. + - Fix compatibility with 32-bit platforms. + +- 0.2.7 + + - Add `.retain()`. + +- 0.2.6 + + - Add `OccupiedEntry::remove_entry` and other minor entry methods, + so that it now has all the features of `HashMap`'s entries. + +- 0.2.5 + + - Improved `.pop()` slightly. + +- 0.2.4 + + - Improved performance of `.insert()` ([#3]) by @pczarn. + +[#3]: https://github.com/bluss/ordermap/pull/3 + +- 0.2.3 + + - Generalize `Entry` for now, so that it works on hashmaps with non-default + hasher. However, there's a lingering compat issue since libstd `HashMap` + does not parameterize its entries by the hasher (`S` typarm). + - Special case some iterator methods like `.nth()`. + +- 0.2.2 + + - Disable the verbose `Debug` impl by default. + +- 0.2.1 + + - Fix doc links and clarify docs. + +- 0.2.0 + + - Add more `HashMap` methods & compat with its API. + - Experimental support for `.entry()` (the simplest parts of the API). + - Add `.reserve()` (placeholder impl). + - Add `.remove()` as synonym for `.swap_remove()`. + - Changed `.insert()` to swap value if the entry already exists, and + return `Option`. + - Experimental support as an *indexed* hash map! Added methods + `.get_index()`, `.get_index_mut()`, `.swap_remove_index()`, + `.get_pair_index()`, `.get_pair_index_mut()`. + +- 0.1.2 + + - Implement the 32/32 split idea for `Pos` which improves cache utilization + and lookup performance. + +- 0.1.1 + + - Initial release. diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/src/arbitrary.rs temporalio-1.3.0/vendor/indexmap-1.9.3/src/arbitrary.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/src/arbitrary.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/src/arbitrary.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,75 @@ +#[cfg(feature = "arbitrary")] +mod impl_arbitrary { + use crate::{IndexMap, IndexSet}; + use arbitrary::{Arbitrary, Result, Unstructured}; + use core::hash::{BuildHasher, Hash}; + + impl<'a, K, V, S> Arbitrary<'a> for IndexMap + where + K: Arbitrary<'a> + Hash + Eq, + V: Arbitrary<'a>, + S: BuildHasher + Default, + { + fn arbitrary(u: &mut Unstructured<'a>) -> Result { + u.arbitrary_iter()?.collect() + } + + fn arbitrary_take_rest(u: Unstructured<'a>) -> Result { + u.arbitrary_take_rest_iter()?.collect() + } + } + + impl<'a, T, S> Arbitrary<'a> for IndexSet + where + T: Arbitrary<'a> + Hash + Eq, + S: BuildHasher + Default, + { + fn arbitrary(u: &mut Unstructured<'a>) -> Result { + u.arbitrary_iter()?.collect() + } + + fn arbitrary_take_rest(u: Unstructured<'a>) -> Result { + u.arbitrary_take_rest_iter()?.collect() + } + } +} + +#[cfg(feature = "quickcheck")] +mod impl_quickcheck { + use crate::{IndexMap, IndexSet}; + use alloc::boxed::Box; + use alloc::vec::Vec; + use core::hash::{BuildHasher, Hash}; + use quickcheck::{Arbitrary, Gen}; + + impl Arbitrary for IndexMap + where + K: Arbitrary + Hash + Eq, + V: Arbitrary, + S: BuildHasher + Default + Clone + 'static, + { + fn arbitrary(g: &mut Gen) -> Self { + Self::from_iter(Vec::arbitrary(g)) + } + + fn shrink(&self) -> Box> { + let vec = Vec::from_iter(self.clone()); + Box::new(vec.shrink().map(Self::from_iter)) + } + } + + impl Arbitrary for IndexSet + where + T: Arbitrary + Hash + Eq, + S: BuildHasher + Default + Clone + 'static, + { + fn arbitrary(g: &mut Gen) -> Self { + Self::from_iter(Vec::arbitrary(g)) + } + + fn shrink(&self) -> Box> { + let vec = Vec::from_iter(self.clone()); + Box::new(vec.shrink().map(Self::from_iter)) + } + } +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/src/equivalent.rs temporalio-1.3.0/vendor/indexmap-1.9.3/src/equivalent.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/src/equivalent.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/src/equivalent.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,27 @@ +use core::borrow::Borrow; + +/// Key equivalence trait. +/// +/// This trait allows hash table lookup to be customized. +/// It has one blanket implementation that uses the regular `Borrow` solution, +/// just like `HashMap` and `BTreeMap` do, so that you can pass `&str` to lookup +/// into a map with `String` keys and so on. +/// +/// # Contract +/// +/// The implementor **must** hash like `K`, if it is hashable. +pub trait Equivalent { + /// Compare self to `key` and return `true` if they are equal. + fn equivalent(&self, key: &K) -> bool; +} + +impl Equivalent for Q +where + Q: Eq, + K: Borrow, +{ + #[inline] + fn equivalent(&self, key: &K) -> bool { + *self == *key.borrow() + } +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/src/lib.rs temporalio-1.3.0/vendor/indexmap-1.9.3/src/lib.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,194 @@ +// We *mostly* avoid unsafe code, but `map::core::raw` allows it to use `RawTable` buckets. +#![deny(unsafe_code)] +#![warn(rust_2018_idioms)] +#![doc(html_root_url = "https://docs.rs/indexmap/1/")] +#![no_std] + +//! [`IndexMap`] is a hash table where the iteration order of the key-value +//! pairs is independent of the hash values of the keys. +//! +//! [`IndexSet`] is a corresponding hash set using the same implementation and +//! with similar properties. +//! +//! [`IndexMap`]: map/struct.IndexMap.html +//! [`IndexSet`]: set/struct.IndexSet.html +//! +//! +//! ### Feature Highlights +//! +//! [`IndexMap`] and [`IndexSet`] are drop-in compatible with the std `HashMap` +//! and `HashSet`, but they also have some features of note: +//! +//! - The ordering semantics (see their documentation for details) +//! - Sorting methods and the [`.pop()`][IndexMap::pop] methods. +//! - The [`Equivalent`] trait, which offers more flexible equality definitions +//! between borrowed and owned versions of keys. +//! - The [`MutableKeys`][map::MutableKeys] trait, which gives opt-in mutable +//! access to hash map keys. +//! +//! ### Alternate Hashers +//! +//! [`IndexMap`] and [`IndexSet`] have a default hasher type `S = RandomState`, +//! just like the standard `HashMap` and `HashSet`, which is resistant to +//! HashDoS attacks but not the most performant. Type aliases can make it easier +//! to use alternate hashers: +//! +//! ``` +//! use fnv::FnvBuildHasher; +//! use fxhash::FxBuildHasher; +//! use indexmap::{IndexMap, IndexSet}; +//! +//! type FnvIndexMap = IndexMap; +//! type FnvIndexSet = IndexSet; +//! +//! type FxIndexMap = IndexMap; +//! type FxIndexSet = IndexSet; +//! +//! let std: IndexSet = (0..100).collect(); +//! let fnv: FnvIndexSet = (0..100).collect(); +//! let fx: FxIndexSet = (0..100).collect(); +//! assert_eq!(std, fnv); +//! assert_eq!(std, fx); +//! ``` +//! +//! ### Rust Version +//! +//! This version of indexmap requires Rust 1.56 or later. +//! +//! The indexmap 1.x release series will use a carefully considered version +//! upgrade policy, where in a later 1.x version, we will raise the minimum +//! required Rust version. +//! +//! ## No Standard Library Targets +//! +//! This crate supports being built without `std`, requiring +//! `alloc` instead. This is enabled automatically when it is detected that +//! `std` is not available. There is no crate feature to enable/disable to +//! trigger this. It can be tested by building for a std-less target. +//! +//! - Creating maps and sets using [`new`][IndexMap::new] and +//! [`with_capacity`][IndexMap::with_capacity] is unavailable without `std`. +//! Use methods [`IndexMap::default`][def], +//! [`with_hasher`][IndexMap::with_hasher], +//! [`with_capacity_and_hasher`][IndexMap::with_capacity_and_hasher] instead. +//! A no-std compatible hasher will be needed as well, for example +//! from the crate `twox-hash`. +//! - Macros [`indexmap!`] and [`indexset!`] are unavailable without `std`. +//! +//! [def]: map/struct.IndexMap.html#impl-Default + +extern crate alloc; + +#[cfg(has_std)] +#[macro_use] +extern crate std; + +use alloc::vec::{self, Vec}; + +mod arbitrary; +#[macro_use] +mod macros; +mod equivalent; +mod mutable_keys; +#[cfg(feature = "serde")] +mod serde; +#[cfg(feature = "serde")] +pub mod serde_seq; +mod util; + +pub mod map; +pub mod set; + +// Placed after `map` and `set` so new `rayon` methods on the types +// are documented after the "normal" methods. +#[cfg(feature = "rayon")] +mod rayon; + +#[cfg(feature = "rustc-rayon")] +mod rustc; + +pub use crate::equivalent::Equivalent; +pub use crate::map::IndexMap; +pub use crate::set::IndexSet; + +// shared private items + +/// Hash value newtype. Not larger than usize, since anything larger +/// isn't used for selecting position anyway. +#[derive(Clone, Copy, Debug, PartialEq)] +struct HashValue(usize); + +impl HashValue { + #[inline(always)] + fn get(self) -> u64 { + self.0 as u64 + } +} + +#[derive(Copy, Debug)] +struct Bucket { + hash: HashValue, + key: K, + value: V, +} + +impl Clone for Bucket +where + K: Clone, + V: Clone, +{ + fn clone(&self) -> Self { + Bucket { + hash: self.hash, + key: self.key.clone(), + value: self.value.clone(), + } + } + + fn clone_from(&mut self, other: &Self) { + self.hash = other.hash; + self.key.clone_from(&other.key); + self.value.clone_from(&other.value); + } +} + +impl Bucket { + // field accessors -- used for `f` instead of closures in `.map(f)` + fn key_ref(&self) -> &K { + &self.key + } + fn value_ref(&self) -> &V { + &self.value + } + fn value_mut(&mut self) -> &mut V { + &mut self.value + } + fn key(self) -> K { + self.key + } + fn value(self) -> V { + self.value + } + fn key_value(self) -> (K, V) { + (self.key, self.value) + } + fn refs(&self) -> (&K, &V) { + (&self.key, &self.value) + } + fn ref_mut(&mut self) -> (&K, &mut V) { + (&self.key, &mut self.value) + } + fn muts(&mut self) -> (&mut K, &mut V) { + (&mut self.key, &mut self.value) + } +} + +trait Entries { + type Entry; + fn into_entries(self) -> Vec; + fn as_entries(&self) -> &[Self::Entry]; + fn as_entries_mut(&mut self) -> &mut [Self::Entry]; + fn with_entries(&mut self, f: F) + where + F: FnOnce(&mut [Self::Entry]); +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/src/macros.rs temporalio-1.3.0/vendor/indexmap-1.9.3/src/macros.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/src/macros.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/src/macros.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,178 @@ +#[cfg(has_std)] +#[macro_export] +/// Create an `IndexMap` from a list of key-value pairs +/// +/// ## Example +/// +/// ``` +/// use indexmap::indexmap; +/// +/// let map = indexmap!{ +/// "a" => 1, +/// "b" => 2, +/// }; +/// assert_eq!(map["a"], 1); +/// assert_eq!(map["b"], 2); +/// assert_eq!(map.get("c"), None); +/// +/// // "a" is the first key +/// assert_eq!(map.keys().next(), Some(&"a")); +/// ``` +macro_rules! indexmap { + (@single $($x:tt)*) => (()); + (@count $($rest:expr),*) => (<[()]>::len(&[$($crate::indexmap!(@single $rest)),*])); + + ($($key:expr => $value:expr,)+) => { $crate::indexmap!($($key => $value),+) }; + ($($key:expr => $value:expr),*) => { + { + let _cap = $crate::indexmap!(@count $($key),*); + let mut _map = $crate::IndexMap::with_capacity(_cap); + $( + _map.insert($key, $value); + )* + _map + } + }; +} + +#[cfg(has_std)] +#[macro_export] +/// Create an `IndexSet` from a list of values +/// +/// ## Example +/// +/// ``` +/// use indexmap::indexset; +/// +/// let set = indexset!{ +/// "a", +/// "b", +/// }; +/// assert!(set.contains("a")); +/// assert!(set.contains("b")); +/// assert!(!set.contains("c")); +/// +/// // "a" is the first value +/// assert_eq!(set.iter().next(), Some(&"a")); +/// ``` +macro_rules! indexset { + (@single $($x:tt)*) => (()); + (@count $($rest:expr),*) => (<[()]>::len(&[$($crate::indexset!(@single $rest)),*])); + + ($($value:expr,)+) => { $crate::indexset!($($value),+) }; + ($($value:expr),*) => { + { + let _cap = $crate::indexset!(@count $($value),*); + let mut _set = $crate::IndexSet::with_capacity(_cap); + $( + _set.insert($value); + )* + _set + } + }; +} + +// generate all the Iterator methods by just forwarding to the underlying +// self.iter and mapping its element. +macro_rules! iterator_methods { + // $map_elt is the mapping function from the underlying iterator's element + // same mapping function for both options and iterators + ($map_elt:expr) => { + fn next(&mut self) -> Option { + self.iter.next().map($map_elt) + } + + fn size_hint(&self) -> (usize, Option) { + self.iter.size_hint() + } + + fn count(self) -> usize { + self.iter.len() + } + + fn nth(&mut self, n: usize) -> Option { + self.iter.nth(n).map($map_elt) + } + + fn last(mut self) -> Option { + self.next_back() + } + + fn collect(self) -> C + where + C: FromIterator, + { + // NB: forwarding this directly to standard iterators will + // allow it to leverage unstable traits like `TrustedLen`. + self.iter.map($map_elt).collect() + } + }; +} + +macro_rules! double_ended_iterator_methods { + // $map_elt is the mapping function from the underlying iterator's element + // same mapping function for both options and iterators + ($map_elt:expr) => { + fn next_back(&mut self) -> Option { + self.iter.next_back().map($map_elt) + } + + fn nth_back(&mut self, n: usize) -> Option { + self.iter.nth_back(n).map($map_elt) + } + }; +} + +// generate `ParallelIterator` methods by just forwarding to the underlying +// self.entries and mapping its elements. +#[cfg(any(feature = "rayon", feature = "rustc-rayon"))] +macro_rules! parallel_iterator_methods { + // $map_elt is the mapping function from the underlying iterator's element + ($map_elt:expr) => { + fn drive_unindexed(self, consumer: C) -> C::Result + where + C: UnindexedConsumer, + { + self.entries + .into_par_iter() + .map($map_elt) + .drive_unindexed(consumer) + } + + // NB: This allows indexed collection, e.g. directly into a `Vec`, but the + // underlying iterator must really be indexed. We should remove this if we + // start having tombstones that must be filtered out. + fn opt_len(&self) -> Option { + Some(self.entries.len()) + } + }; +} + +// generate `IndexedParallelIterator` methods by just forwarding to the underlying +// self.entries and mapping its elements. +#[cfg(any(feature = "rayon", feature = "rustc-rayon"))] +macro_rules! indexed_parallel_iterator_methods { + // $map_elt is the mapping function from the underlying iterator's element + ($map_elt:expr) => { + fn drive(self, consumer: C) -> C::Result + where + C: Consumer, + { + self.entries.into_par_iter().map($map_elt).drive(consumer) + } + + fn len(&self) -> usize { + self.entries.len() + } + + fn with_producer(self, callback: CB) -> CB::Output + where + CB: ProducerCallback, + { + self.entries + .into_par_iter() + .map($map_elt) + .with_producer(callback) + } + }; +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/src/map/core/raw.rs temporalio-1.3.0/vendor/indexmap-1.9.3/src/map/core/raw.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/src/map/core/raw.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/src/map/core/raw.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,191 @@ +#![allow(unsafe_code)] +//! This module encapsulates the `unsafe` access to `hashbrown::raw::RawTable`, +//! mostly in dealing with its bucket "pointers". + +use super::{equivalent, Bucket, Entry, HashValue, IndexMapCore, VacantEntry}; +use core::fmt; +use core::mem::replace; +use hashbrown::raw::RawTable; + +type RawBucket = hashbrown::raw::Bucket; + +/// Inserts many entries into a raw table without reallocating. +/// +/// ***Panics*** if there is not sufficient capacity already. +pub(super) fn insert_bulk_no_grow(indices: &mut RawTable, entries: &[Bucket]) { + assert!(indices.capacity() - indices.len() >= entries.len()); + for entry in entries { + // SAFETY: we asserted that sufficient capacity exists for all entries. + unsafe { + indices.insert_no_grow(entry.hash.get(), indices.len()); + } + } +} + +pub(super) struct DebugIndices<'a>(pub &'a RawTable); +impl fmt::Debug for DebugIndices<'_> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + // SAFETY: we're not letting any of the buckets escape this function + let indices = unsafe { self.0.iter().map(|raw_bucket| raw_bucket.read()) }; + f.debug_list().entries(indices).finish() + } +} + +impl IndexMapCore { + /// Sweep the whole table to erase indices start..end + pub(super) fn erase_indices_sweep(&mut self, start: usize, end: usize) { + // SAFETY: we're not letting any of the buckets escape this function + unsafe { + let offset = end - start; + for bucket in self.indices.iter() { + let i = bucket.read(); + if i >= end { + bucket.write(i - offset); + } else if i >= start { + self.indices.erase(bucket); + } + } + } + } + + pub(crate) fn entry(&mut self, hash: HashValue, key: K) -> Entry<'_, K, V> + where + K: Eq, + { + let eq = equivalent(&key, &self.entries); + match self.indices.find(hash.get(), eq) { + // SAFETY: The entry is created with a live raw bucket, at the same time + // we have a &mut reference to the map, so it can not be modified further. + Some(raw_bucket) => Entry::Occupied(OccupiedEntry { + map: self, + raw_bucket, + key, + }), + None => Entry::Vacant(VacantEntry { + map: self, + hash, + key, + }), + } + } + + pub(super) fn indices_mut(&mut self) -> impl Iterator { + // SAFETY: we're not letting any of the buckets escape this function, + // only the item references that are appropriately bound to `&mut self`. + unsafe { self.indices.iter().map(|bucket| bucket.as_mut()) } + } + + /// Return the raw bucket for the given index + fn find_index(&self, index: usize) -> RawBucket { + // We'll get a "nice" bounds-check from indexing `self.entries`, + // and then we expect to find it in the table as well. + let hash = self.entries[index].hash.get(); + self.indices + .find(hash, move |&i| i == index) + .expect("index not found") + } + + pub(crate) fn swap_indices(&mut self, a: usize, b: usize) { + // SAFETY: Can't take two `get_mut` references from one table, so we + // must use raw buckets to do the swap. This is still safe because we + // are locally sure they won't dangle, and we write them individually. + unsafe { + let raw_bucket_a = self.find_index(a); + let raw_bucket_b = self.find_index(b); + raw_bucket_a.write(b); + raw_bucket_b.write(a); + } + self.entries.swap(a, b); + } +} + +/// A view into an occupied entry in a `IndexMap`. +/// It is part of the [`Entry`] enum. +/// +/// [`Entry`]: enum.Entry.html +// SAFETY: The lifetime of the map reference also constrains the raw bucket, +// which is essentially a raw pointer into the map indices. +pub struct OccupiedEntry<'a, K, V> { + map: &'a mut IndexMapCore, + raw_bucket: RawBucket, + key: K, +} + +// `hashbrown::raw::Bucket` is only `Send`, not `Sync`. +// SAFETY: `&self` only accesses the bucket to read it. +unsafe impl Sync for OccupiedEntry<'_, K, V> {} + +// The parent module also adds methods that don't threaten the unsafe encapsulation. +impl<'a, K, V> OccupiedEntry<'a, K, V> { + /// Gets a reference to the entry's key in the map. + /// + /// Note that this is not the key that was used to find the entry. There may be an observable + /// difference if the key type has any distinguishing features outside of `Hash` and `Eq`, like + /// extra fields or the memory address of an allocation. + pub fn key(&self) -> &K { + &self.map.entries[self.index()].key + } + + /// Gets a reference to the entry's value in the map. + pub fn get(&self) -> &V { + &self.map.entries[self.index()].value + } + + /// Gets a mutable reference to the entry's value in the map. + /// + /// If you need a reference which may outlive the destruction of the + /// `Entry` value, see `into_mut`. + pub fn get_mut(&mut self) -> &mut V { + let index = self.index(); + &mut self.map.entries[index].value + } + + /// Put the new key in the occupied entry's key slot + pub(crate) fn replace_key(self) -> K { + let index = self.index(); + let old_key = &mut self.map.entries[index].key; + replace(old_key, self.key) + } + + /// Return the index of the key-value pair + #[inline] + pub fn index(&self) -> usize { + // SAFETY: we have &mut map keep keeping the bucket stable + unsafe { self.raw_bucket.read() } + } + + /// Converts into a mutable reference to the entry's value in the map, + /// with a lifetime bound to the map itself. + pub fn into_mut(self) -> &'a mut V { + let index = self.index(); + &mut self.map.entries[index].value + } + + /// Remove and return the key, value pair stored in the map for this entry + /// + /// Like `Vec::swap_remove`, the pair is removed by swapping it with the + /// last element of the map and popping it off. **This perturbs + /// the position of what used to be the last element!** + /// + /// Computes in **O(1)** time (average). + pub fn swap_remove_entry(self) -> (K, V) { + // SAFETY: This is safe because it can only happen once (self is consumed) + // and map.indices have not been modified since entry construction + let index = unsafe { self.map.indices.remove(self.raw_bucket) }; + self.map.swap_remove_finish(index) + } + + /// Remove and return the key, value pair stored in the map for this entry + /// + /// Like `Vec::remove`, the pair is removed by shifting all of the + /// elements that follow it, preserving their relative order. + /// **This perturbs the index of all of those elements!** + /// + /// Computes in **O(n)** time (average). + pub fn shift_remove_entry(self) -> (K, V) { + // SAFETY: This is safe because it can only happen once (self is consumed) + // and map.indices have not been modified since entry construction + let index = unsafe { self.map.indices.remove(self.raw_bucket) }; + self.map.shift_remove_finish(index) + } +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/src/map/core.rs temporalio-1.3.0/vendor/indexmap-1.9.3/src/map/core.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/src/map/core.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/src/map/core.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,700 @@ +//! This is the core implementation that doesn't depend on the hasher at all. +//! +//! The methods of `IndexMapCore` don't use any Hash properties of K. +//! +//! It's cleaner to separate them out, then the compiler checks that we are not +//! using Hash at all in these methods. +//! +//! However, we should probably not let this show in the public API or docs. + +mod raw; + +use hashbrown::raw::RawTable; + +use crate::vec::{Drain, Vec}; +use core::cmp; +use core::fmt; +use core::mem::replace; +use core::ops::RangeBounds; + +use crate::equivalent::Equivalent; +use crate::util::simplify_range; +use crate::{Bucket, Entries, HashValue}; + +/// Core of the map that does not depend on S +pub(crate) struct IndexMapCore { + /// indices mapping from the entry hash to its index. + indices: RawTable, + /// entries is a dense vec of entries in their order. + entries: Vec>, +} + +#[inline(always)] +fn get_hash(entries: &[Bucket]) -> impl Fn(&usize) -> u64 + '_ { + move |&i| entries[i].hash.get() +} + +#[inline] +fn equivalent<'a, K, V, Q: ?Sized + Equivalent>( + key: &'a Q, + entries: &'a [Bucket], +) -> impl Fn(&usize) -> bool + 'a { + move |&i| Q::equivalent(key, &entries[i].key) +} + +#[inline] +fn erase_index(table: &mut RawTable, hash: HashValue, index: usize) { + let erased = table.erase_entry(hash.get(), move |&i| i == index); + debug_assert!(erased); +} + +#[inline] +fn update_index(table: &mut RawTable, hash: HashValue, old: usize, new: usize) { + let index = table + .get_mut(hash.get(), move |&i| i == old) + .expect("index not found"); + *index = new; +} + +impl Clone for IndexMapCore +where + K: Clone, + V: Clone, +{ + fn clone(&self) -> Self { + let indices = self.indices.clone(); + let mut entries = Vec::with_capacity(indices.capacity()); + entries.clone_from(&self.entries); + IndexMapCore { indices, entries } + } + + fn clone_from(&mut self, other: &Self) { + let hasher = get_hash(&other.entries); + self.indices.clone_from_with_hasher(&other.indices, hasher); + if self.entries.capacity() < other.entries.len() { + // If we must resize, match the indices capacity + self.reserve_entries(); + } + self.entries.clone_from(&other.entries); + } +} + +impl fmt::Debug for IndexMapCore +where + K: fmt::Debug, + V: fmt::Debug, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("IndexMapCore") + .field("indices", &raw::DebugIndices(&self.indices)) + .field("entries", &self.entries) + .finish() + } +} + +impl Entries for IndexMapCore { + type Entry = Bucket; + + #[inline] + fn into_entries(self) -> Vec { + self.entries + } + + #[inline] + fn as_entries(&self) -> &[Self::Entry] { + &self.entries + } + + #[inline] + fn as_entries_mut(&mut self) -> &mut [Self::Entry] { + &mut self.entries + } + + fn with_entries(&mut self, f: F) + where + F: FnOnce(&mut [Self::Entry]), + { + f(&mut self.entries); + self.rebuild_hash_table(); + } +} + +impl IndexMapCore { + #[inline] + pub(crate) const fn new() -> Self { + IndexMapCore { + indices: RawTable::new(), + entries: Vec::new(), + } + } + + #[inline] + pub(crate) fn with_capacity(n: usize) -> Self { + IndexMapCore { + indices: RawTable::with_capacity(n), + entries: Vec::with_capacity(n), + } + } + + #[inline] + pub(crate) fn len(&self) -> usize { + self.indices.len() + } + + #[inline] + pub(crate) fn capacity(&self) -> usize { + cmp::min(self.indices.capacity(), self.entries.capacity()) + } + + pub(crate) fn clear(&mut self) { + self.indices.clear(); + self.entries.clear(); + } + + pub(crate) fn truncate(&mut self, len: usize) { + if len < self.len() { + self.erase_indices(len, self.entries.len()); + self.entries.truncate(len); + } + } + + pub(crate) fn drain(&mut self, range: R) -> Drain<'_, Bucket> + where + R: RangeBounds, + { + let range = simplify_range(range, self.entries.len()); + self.erase_indices(range.start, range.end); + self.entries.drain(range) + } + + #[cfg(feature = "rayon")] + pub(crate) fn par_drain(&mut self, range: R) -> rayon::vec::Drain<'_, Bucket> + where + K: Send, + V: Send, + R: RangeBounds, + { + use rayon::iter::ParallelDrainRange; + let range = simplify_range(range, self.entries.len()); + self.erase_indices(range.start, range.end); + self.entries.par_drain(range) + } + + pub(crate) fn split_off(&mut self, at: usize) -> Self { + assert!(at <= self.entries.len()); + self.erase_indices(at, self.entries.len()); + let entries = self.entries.split_off(at); + + let mut indices = RawTable::with_capacity(entries.len()); + raw::insert_bulk_no_grow(&mut indices, &entries); + Self { indices, entries } + } + + /// Reserve capacity for `additional` more key-value pairs. + pub(crate) fn reserve(&mut self, additional: usize) { + self.indices.reserve(additional, get_hash(&self.entries)); + self.reserve_entries(); + } + + /// Reserve entries capacity to match the indices + fn reserve_entries(&mut self) { + let additional = self.indices.capacity() - self.entries.len(); + self.entries.reserve_exact(additional); + } + + /// Shrink the capacity of the map with a lower bound + pub(crate) fn shrink_to(&mut self, min_capacity: usize) { + self.indices + .shrink_to(min_capacity, get_hash(&self.entries)); + self.entries.shrink_to(min_capacity); + } + + /// Remove the last key-value pair + pub(crate) fn pop(&mut self) -> Option<(K, V)> { + if let Some(entry) = self.entries.pop() { + let last = self.entries.len(); + erase_index(&mut self.indices, entry.hash, last); + Some((entry.key, entry.value)) + } else { + None + } + } + + /// Append a key-value pair, *without* checking whether it already exists, + /// and return the pair's new index. + fn push(&mut self, hash: HashValue, key: K, value: V) -> usize { + let i = self.entries.len(); + self.indices.insert(hash.get(), i, get_hash(&self.entries)); + if i == self.entries.capacity() { + // Reserve our own capacity synced to the indices, + // rather than letting `Vec::push` just double it. + self.reserve_entries(); + } + self.entries.push(Bucket { hash, key, value }); + i + } + + /// Return the index in `entries` where an equivalent key can be found + pub(crate) fn get_index_of(&self, hash: HashValue, key: &Q) -> Option + where + Q: ?Sized + Equivalent, + { + let eq = equivalent(key, &self.entries); + self.indices.get(hash.get(), eq).copied() + } + + pub(crate) fn insert_full(&mut self, hash: HashValue, key: K, value: V) -> (usize, Option) + where + K: Eq, + { + match self.get_index_of(hash, &key) { + Some(i) => (i, Some(replace(&mut self.entries[i].value, value))), + None => (self.push(hash, key, value), None), + } + } + + /// Remove an entry by shifting all entries that follow it + pub(crate) fn shift_remove_full(&mut self, hash: HashValue, key: &Q) -> Option<(usize, K, V)> + where + Q: ?Sized + Equivalent, + { + let eq = equivalent(key, &self.entries); + match self.indices.remove_entry(hash.get(), eq) { + Some(index) => { + let (key, value) = self.shift_remove_finish(index); + Some((index, key, value)) + } + None => None, + } + } + + /// Remove an entry by shifting all entries that follow it + pub(crate) fn shift_remove_index(&mut self, index: usize) -> Option<(K, V)> { + match self.entries.get(index) { + Some(entry) => { + erase_index(&mut self.indices, entry.hash, index); + Some(self.shift_remove_finish(index)) + } + None => None, + } + } + + /// Remove an entry by shifting all entries that follow it + /// + /// The index should already be removed from `self.indices`. + fn shift_remove_finish(&mut self, index: usize) -> (K, V) { + // Correct indices that point to the entries that followed the removed entry. + self.decrement_indices(index + 1, self.entries.len()); + + // Use Vec::remove to actually remove the entry. + let entry = self.entries.remove(index); + (entry.key, entry.value) + } + + /// Decrement all indices in the range `start..end`. + /// + /// The index `start - 1` should not exist in `self.indices`. + /// All entries should still be in their original positions. + fn decrement_indices(&mut self, start: usize, end: usize) { + // Use a heuristic between a full sweep vs. a `find()` for every shifted item. + let shifted_entries = &self.entries[start..end]; + if shifted_entries.len() > self.indices.buckets() / 2 { + // Shift all indices in range. + for i in self.indices_mut() { + if start <= *i && *i < end { + *i -= 1; + } + } + } else { + // Find each entry in range to shift its index. + for (i, entry) in (start..end).zip(shifted_entries) { + update_index(&mut self.indices, entry.hash, i, i - 1); + } + } + } + + /// Increment all indices in the range `start..end`. + /// + /// The index `end` should not exist in `self.indices`. + /// All entries should still be in their original positions. + fn increment_indices(&mut self, start: usize, end: usize) { + // Use a heuristic between a full sweep vs. a `find()` for every shifted item. + let shifted_entries = &self.entries[start..end]; + if shifted_entries.len() > self.indices.buckets() / 2 { + // Shift all indices in range. + for i in self.indices_mut() { + if start <= *i && *i < end { + *i += 1; + } + } + } else { + // Find each entry in range to shift its index, updated in reverse so + // we never have duplicated indices that might have a hash collision. + for (i, entry) in (start..end).zip(shifted_entries).rev() { + update_index(&mut self.indices, entry.hash, i, i + 1); + } + } + } + + pub(super) fn move_index(&mut self, from: usize, to: usize) { + let from_hash = self.entries[from].hash; + if from != to { + // Use a sentinal index so other indices don't collide. + update_index(&mut self.indices, from_hash, from, usize::MAX); + + // Update all other indices and rotate the entry positions. + if from < to { + self.decrement_indices(from + 1, to + 1); + self.entries[from..=to].rotate_left(1); + } else if to < from { + self.increment_indices(to, from); + self.entries[to..=from].rotate_right(1); + } + + // Change the sentinal index to its final position. + update_index(&mut self.indices, from_hash, usize::MAX, to); + } + } + + /// Remove an entry by swapping it with the last + pub(crate) fn swap_remove_full(&mut self, hash: HashValue, key: &Q) -> Option<(usize, K, V)> + where + Q: ?Sized + Equivalent, + { + let eq = equivalent(key, &self.entries); + match self.indices.remove_entry(hash.get(), eq) { + Some(index) => { + let (key, value) = self.swap_remove_finish(index); + Some((index, key, value)) + } + None => None, + } + } + + /// Remove an entry by swapping it with the last + pub(crate) fn swap_remove_index(&mut self, index: usize) -> Option<(K, V)> { + match self.entries.get(index) { + Some(entry) => { + erase_index(&mut self.indices, entry.hash, index); + Some(self.swap_remove_finish(index)) + } + None => None, + } + } + + /// Finish removing an entry by swapping it with the last + /// + /// The index should already be removed from `self.indices`. + fn swap_remove_finish(&mut self, index: usize) -> (K, V) { + // use swap_remove, but then we need to update the index that points + // to the other entry that has to move + let entry = self.entries.swap_remove(index); + + // correct index that points to the entry that had to swap places + if let Some(entry) = self.entries.get(index) { + // was not last element + // examine new element in `index` and find it in indices + let last = self.entries.len(); + update_index(&mut self.indices, entry.hash, last, index); + } + + (entry.key, entry.value) + } + + /// Erase `start..end` from `indices`, and shift `end..` indices down to `start..` + /// + /// All of these items should still be at their original location in `entries`. + /// This is used by `drain`, which will let `Vec::drain` do the work on `entries`. + fn erase_indices(&mut self, start: usize, end: usize) { + let (init, shifted_entries) = self.entries.split_at(end); + let (start_entries, erased_entries) = init.split_at(start); + + let erased = erased_entries.len(); + let shifted = shifted_entries.len(); + let half_capacity = self.indices.buckets() / 2; + + // Use a heuristic between different strategies + if erased == 0 { + // Degenerate case, nothing to do + } else if start + shifted < half_capacity && start < erased { + // Reinsert everything, as there are few kept indices + self.indices.clear(); + + // Reinsert stable indices, then shifted indices + raw::insert_bulk_no_grow(&mut self.indices, start_entries); + raw::insert_bulk_no_grow(&mut self.indices, shifted_entries); + } else if erased + shifted < half_capacity { + // Find each affected index, as there are few to adjust + + // Find erased indices + for (i, entry) in (start..).zip(erased_entries) { + erase_index(&mut self.indices, entry.hash, i); + } + + // Find shifted indices + for ((new, old), entry) in (start..).zip(end..).zip(shifted_entries) { + update_index(&mut self.indices, entry.hash, old, new); + } + } else { + // Sweep the whole table for adjustments + self.erase_indices_sweep(start, end); + } + + debug_assert_eq!(self.indices.len(), start + shifted); + } + + pub(crate) fn retain_in_order(&mut self, mut keep: F) + where + F: FnMut(&mut K, &mut V) -> bool, + { + // FIXME: This could use Vec::retain_mut with MSRV 1.61. + // Like Vec::retain in self.entries, but with mutable K and V. + // We swap-shift all the items we want to keep, truncate the rest, + // then rebuild the raw hash table with the new indexes. + let len = self.entries.len(); + let mut n_deleted = 0; + for i in 0..len { + let will_keep = { + let entry = &mut self.entries[i]; + keep(&mut entry.key, &mut entry.value) + }; + if !will_keep { + n_deleted += 1; + } else if n_deleted > 0 { + self.entries.swap(i - n_deleted, i); + } + } + if n_deleted > 0 { + self.entries.truncate(len - n_deleted); + self.rebuild_hash_table(); + } + } + + fn rebuild_hash_table(&mut self) { + self.indices.clear(); + raw::insert_bulk_no_grow(&mut self.indices, &self.entries); + } + + pub(crate) fn reverse(&mut self) { + self.entries.reverse(); + + // No need to save hash indices, can easily calculate what they should + // be, given that this is an in-place reversal. + let len = self.entries.len(); + for i in self.indices_mut() { + *i = len - *i - 1; + } + } +} + +/// Entry for an existing key-value pair or a vacant location to +/// insert one. +pub enum Entry<'a, K, V> { + /// Existing slot with equivalent key. + Occupied(OccupiedEntry<'a, K, V>), + /// Vacant slot (no equivalent key in the map). + Vacant(VacantEntry<'a, K, V>), +} + +impl<'a, K, V> Entry<'a, K, V> { + /// Inserts the given default value in the entry if it is vacant and returns a mutable + /// reference to it. Otherwise a mutable reference to an already existent value is returned. + /// + /// Computes in **O(1)** time (amortized average). + pub fn or_insert(self, default: V) -> &'a mut V { + match self { + Entry::Occupied(entry) => entry.into_mut(), + Entry::Vacant(entry) => entry.insert(default), + } + } + + /// Inserts the result of the `call` function in the entry if it is vacant and returns a mutable + /// reference to it. Otherwise a mutable reference to an already existent value is returned. + /// + /// Computes in **O(1)** time (amortized average). + pub fn or_insert_with(self, call: F) -> &'a mut V + where + F: FnOnce() -> V, + { + match self { + Entry::Occupied(entry) => entry.into_mut(), + Entry::Vacant(entry) => entry.insert(call()), + } + } + + /// Inserts the result of the `call` function with a reference to the entry's key if it is + /// vacant, and returns a mutable reference to the new value. Otherwise a mutable reference to + /// an already existent value is returned. + /// + /// Computes in **O(1)** time (amortized average). + pub fn or_insert_with_key(self, call: F) -> &'a mut V + where + F: FnOnce(&K) -> V, + { + match self { + Entry::Occupied(entry) => entry.into_mut(), + Entry::Vacant(entry) => { + let value = call(&entry.key); + entry.insert(value) + } + } + } + + /// Gets a reference to the entry's key, either within the map if occupied, + /// or else the new key that was used to find the entry. + pub fn key(&self) -> &K { + match *self { + Entry::Occupied(ref entry) => entry.key(), + Entry::Vacant(ref entry) => entry.key(), + } + } + + /// Return the index where the key-value pair exists or will be inserted. + pub fn index(&self) -> usize { + match *self { + Entry::Occupied(ref entry) => entry.index(), + Entry::Vacant(ref entry) => entry.index(), + } + } + + /// Modifies the entry if it is occupied. + pub fn and_modify(self, f: F) -> Self + where + F: FnOnce(&mut V), + { + match self { + Entry::Occupied(mut o) => { + f(o.get_mut()); + Entry::Occupied(o) + } + x => x, + } + } + + /// Inserts a default-constructed value in the entry if it is vacant and returns a mutable + /// reference to it. Otherwise a mutable reference to an already existent value is returned. + /// + /// Computes in **O(1)** time (amortized average). + pub fn or_default(self) -> &'a mut V + where + V: Default, + { + match self { + Entry::Occupied(entry) => entry.into_mut(), + Entry::Vacant(entry) => entry.insert(V::default()), + } + } +} + +impl fmt::Debug for Entry<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match *self { + Entry::Vacant(ref v) => f.debug_tuple(stringify!(Entry)).field(v).finish(), + Entry::Occupied(ref o) => f.debug_tuple(stringify!(Entry)).field(o).finish(), + } + } +} + +pub use self::raw::OccupiedEntry; + +// Extra methods that don't threaten the unsafe encapsulation. +impl OccupiedEntry<'_, K, V> { + /// Sets the value of the entry to `value`, and returns the entry's old value. + pub fn insert(&mut self, value: V) -> V { + replace(self.get_mut(), value) + } + + /// Remove the key, value pair stored in the map for this entry, and return the value. + /// + /// **NOTE:** This is equivalent to `.swap_remove()`. + pub fn remove(self) -> V { + self.swap_remove() + } + + /// Remove the key, value pair stored in the map for this entry, and return the value. + /// + /// Like `Vec::swap_remove`, the pair is removed by swapping it with the + /// last element of the map and popping it off. **This perturbs + /// the position of what used to be the last element!** + /// + /// Computes in **O(1)** time (average). + pub fn swap_remove(self) -> V { + self.swap_remove_entry().1 + } + + /// Remove the key, value pair stored in the map for this entry, and return the value. + /// + /// Like `Vec::remove`, the pair is removed by shifting all of the + /// elements that follow it, preserving their relative order. + /// **This perturbs the index of all of those elements!** + /// + /// Computes in **O(n)** time (average). + pub fn shift_remove(self) -> V { + self.shift_remove_entry().1 + } + + /// Remove and return the key, value pair stored in the map for this entry + /// + /// **NOTE:** This is equivalent to `.swap_remove_entry()`. + pub fn remove_entry(self) -> (K, V) { + self.swap_remove_entry() + } +} + +impl fmt::Debug for OccupiedEntry<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct(stringify!(OccupiedEntry)) + .field("key", self.key()) + .field("value", self.get()) + .finish() + } +} + +/// A view into a vacant entry in a `IndexMap`. +/// It is part of the [`Entry`] enum. +/// +/// [`Entry`]: enum.Entry.html +pub struct VacantEntry<'a, K, V> { + map: &'a mut IndexMapCore, + hash: HashValue, + key: K, +} + +impl<'a, K, V> VacantEntry<'a, K, V> { + /// Gets a reference to the key that was used to find the entry. + pub fn key(&self) -> &K { + &self.key + } + + /// Takes ownership of the key, leaving the entry vacant. + pub fn into_key(self) -> K { + self.key + } + + /// Return the index where the key-value pair will be inserted. + pub fn index(&self) -> usize { + self.map.len() + } + + /// Inserts the entry's key and the given value into the map, and returns a mutable reference + /// to the value. + pub fn insert(self, value: V) -> &'a mut V { + let i = self.map.push(self.hash, self.key, value); + &mut self.map.entries[i].value + } +} + +impl fmt::Debug for VacantEntry<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_tuple(stringify!(VacantEntry)) + .field(self.key()) + .finish() + } +} + +#[test] +fn assert_send_sync() { + fn assert_send_sync() {} + assert_send_sync::>(); + assert_send_sync::>(); +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/src/map.rs temporalio-1.3.0/vendor/indexmap-1.9.3/src/map.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/src/map.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/src/map.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1947 @@ +//! `IndexMap` is a hash table where the iteration order of the key-value +//! pairs is independent of the hash values of the keys. + +mod core; + +pub use crate::mutable_keys::MutableKeys; + +#[cfg(feature = "rayon")] +pub use crate::rayon::map as rayon; + +use crate::vec::{self, Vec}; +use ::core::cmp::Ordering; +use ::core::fmt; +use ::core::hash::{BuildHasher, Hash, Hasher}; +use ::core::iter::FusedIterator; +use ::core::ops::{Index, IndexMut, RangeBounds}; +use ::core::slice::{Iter as SliceIter, IterMut as SliceIterMut}; + +#[cfg(has_std)] +use std::collections::hash_map::RandomState; + +use self::core::IndexMapCore; +use crate::equivalent::Equivalent; +use crate::util::third; +use crate::{Bucket, Entries, HashValue}; + +pub use self::core::{Entry, OccupiedEntry, VacantEntry}; + +/// A hash table where the iteration order of the key-value pairs is independent +/// of the hash values of the keys. +/// +/// The interface is closely compatible with the standard `HashMap`, but also +/// has additional features. +/// +/// # Order +/// +/// The key-value pairs have a consistent order that is determined by +/// the sequence of insertion and removal calls on the map. The order does +/// not depend on the keys or the hash function at all. +/// +/// All iterators traverse the map in *the order*. +/// +/// The insertion order is preserved, with **notable exceptions** like the +/// `.remove()` or `.swap_remove()` methods. Methods such as `.sort_by()` of +/// course result in a new order, depending on the sorting order. +/// +/// # Indices +/// +/// The key-value pairs are indexed in a compact range without holes in the +/// range `0..self.len()`. For example, the method `.get_full` looks up the +/// index for a key, and the method `.get_index` looks up the key-value pair by +/// index. +/// +/// # Examples +/// +/// ``` +/// use indexmap::IndexMap; +/// +/// // count the frequency of each letter in a sentence. +/// let mut letters = IndexMap::new(); +/// for ch in "a short treatise on fungi".chars() { +/// *letters.entry(ch).or_insert(0) += 1; +/// } +/// +/// assert_eq!(letters[&'s'], 2); +/// assert_eq!(letters[&'t'], 3); +/// assert_eq!(letters[&'u'], 1); +/// assert_eq!(letters.get(&'y'), None); +/// ``` +#[cfg(has_std)] +pub struct IndexMap { + pub(crate) core: IndexMapCore, + hash_builder: S, +} +#[cfg(not(has_std))] +pub struct IndexMap { + pub(crate) core: IndexMapCore, + hash_builder: S, +} + +impl Clone for IndexMap +where + K: Clone, + V: Clone, + S: Clone, +{ + fn clone(&self) -> Self { + IndexMap { + core: self.core.clone(), + hash_builder: self.hash_builder.clone(), + } + } + + fn clone_from(&mut self, other: &Self) { + self.core.clone_from(&other.core); + self.hash_builder.clone_from(&other.hash_builder); + } +} + +impl Entries for IndexMap { + type Entry = Bucket; + + #[inline] + fn into_entries(self) -> Vec { + self.core.into_entries() + } + + #[inline] + fn as_entries(&self) -> &[Self::Entry] { + self.core.as_entries() + } + + #[inline] + fn as_entries_mut(&mut self) -> &mut [Self::Entry] { + self.core.as_entries_mut() + } + + fn with_entries(&mut self, f: F) + where + F: FnOnce(&mut [Self::Entry]), + { + self.core.with_entries(f); + } +} + +impl fmt::Debug for IndexMap +where + K: fmt::Debug, + V: fmt::Debug, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + if cfg!(not(feature = "test_debug")) { + f.debug_map().entries(self.iter()).finish() + } else { + // Let the inner `IndexMapCore` print all of its details + f.debug_struct("IndexMap") + .field("core", &self.core) + .finish() + } + } +} + +#[cfg(has_std)] +impl IndexMap { + /// Create a new map. (Does not allocate.) + #[inline] + pub fn new() -> Self { + Self::with_capacity(0) + } + + /// Create a new map with capacity for `n` key-value pairs. (Does not + /// allocate if `n` is zero.) + /// + /// Computes in **O(n)** time. + #[inline] + pub fn with_capacity(n: usize) -> Self { + Self::with_capacity_and_hasher(n, <_>::default()) + } +} + +impl IndexMap { + /// Create a new map with capacity for `n` key-value pairs. (Does not + /// allocate if `n` is zero.) + /// + /// Computes in **O(n)** time. + #[inline] + pub fn with_capacity_and_hasher(n: usize, hash_builder: S) -> Self { + if n == 0 { + Self::with_hasher(hash_builder) + } else { + IndexMap { + core: IndexMapCore::with_capacity(n), + hash_builder, + } + } + } + + /// Create a new map with `hash_builder`. + /// + /// This function is `const`, so it + /// can be called in `static` contexts. + pub const fn with_hasher(hash_builder: S) -> Self { + IndexMap { + core: IndexMapCore::new(), + hash_builder, + } + } + + /// Computes in **O(1)** time. + pub fn capacity(&self) -> usize { + self.core.capacity() + } + + /// Return a reference to the map's `BuildHasher`. + pub fn hasher(&self) -> &S { + &self.hash_builder + } + + /// Return the number of key-value pairs in the map. + /// + /// Computes in **O(1)** time. + #[inline] + pub fn len(&self) -> usize { + self.core.len() + } + + /// Returns true if the map contains no elements. + /// + /// Computes in **O(1)** time. + #[inline] + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + + /// Return an iterator over the key-value pairs of the map, in their order + pub fn iter(&self) -> Iter<'_, K, V> { + Iter { + iter: self.as_entries().iter(), + } + } + + /// Return an iterator over the key-value pairs of the map, in their order + pub fn iter_mut(&mut self) -> IterMut<'_, K, V> { + IterMut { + iter: self.as_entries_mut().iter_mut(), + } + } + + /// Return an iterator over the keys of the map, in their order + pub fn keys(&self) -> Keys<'_, K, V> { + Keys { + iter: self.as_entries().iter(), + } + } + + /// Return an owning iterator over the keys of the map, in their order + pub fn into_keys(self) -> IntoKeys { + IntoKeys { + iter: self.into_entries().into_iter(), + } + } + + /// Return an iterator over the values of the map, in their order + pub fn values(&self) -> Values<'_, K, V> { + Values { + iter: self.as_entries().iter(), + } + } + + /// Return an iterator over mutable references to the values of the map, + /// in their order + pub fn values_mut(&mut self) -> ValuesMut<'_, K, V> { + ValuesMut { + iter: self.as_entries_mut().iter_mut(), + } + } + + /// Return an owning iterator over the values of the map, in their order + pub fn into_values(self) -> IntoValues { + IntoValues { + iter: self.into_entries().into_iter(), + } + } + + /// Remove all key-value pairs in the map, while preserving its capacity. + /// + /// Computes in **O(n)** time. + pub fn clear(&mut self) { + self.core.clear(); + } + + /// Shortens the map, keeping the first `len` elements and dropping the rest. + /// + /// If `len` is greater than the map's current length, this has no effect. + pub fn truncate(&mut self, len: usize) { + self.core.truncate(len); + } + + /// Clears the `IndexMap` in the given index range, returning those + /// key-value pairs as a drain iterator. + /// + /// The range may be any type that implements `RangeBounds`, + /// including all of the `std::ops::Range*` types, or even a tuple pair of + /// `Bound` start and end values. To drain the map entirely, use `RangeFull` + /// like `map.drain(..)`. + /// + /// This shifts down all entries following the drained range to fill the + /// gap, and keeps the allocated memory for reuse. + /// + /// ***Panics*** if the starting point is greater than the end point or if + /// the end point is greater than the length of the map. + pub fn drain(&mut self, range: R) -> Drain<'_, K, V> + where + R: RangeBounds, + { + Drain { + iter: self.core.drain(range), + } + } + + /// Splits the collection into two at the given index. + /// + /// Returns a newly allocated map containing the elements in the range + /// `[at, len)`. After the call, the original map will be left containing + /// the elements `[0, at)` with its previous capacity unchanged. + /// + /// ***Panics*** if `at > len`. + pub fn split_off(&mut self, at: usize) -> Self + where + S: Clone, + { + Self { + core: self.core.split_off(at), + hash_builder: self.hash_builder.clone(), + } + } +} + +impl IndexMap +where + K: Hash + Eq, + S: BuildHasher, +{ + /// Reserve capacity for `additional` more key-value pairs. + /// + /// Computes in **O(n)** time. + pub fn reserve(&mut self, additional: usize) { + self.core.reserve(additional); + } + + /// Shrink the capacity of the map as much as possible. + /// + /// Computes in **O(n)** time. + pub fn shrink_to_fit(&mut self) { + self.core.shrink_to(0); + } + + /// Shrink the capacity of the map with a lower limit. + /// + /// Computes in **O(n)** time. + pub fn shrink_to(&mut self, min_capacity: usize) { + self.core.shrink_to(min_capacity); + } + + fn hash(&self, key: &Q) -> HashValue { + let mut h = self.hash_builder.build_hasher(); + key.hash(&mut h); + HashValue(h.finish() as usize) + } + + /// Insert a key-value pair in the map. + /// + /// If an equivalent key already exists in the map: the key remains and + /// retains in its place in the order, its corresponding value is updated + /// with `value` and the older value is returned inside `Some(_)`. + /// + /// If no equivalent key existed in the map: the new key-value pair is + /// inserted, last in order, and `None` is returned. + /// + /// Computes in **O(1)** time (amortized average). + /// + /// See also [`entry`](#method.entry) if you you want to insert *or* modify + /// or if you need to get the index of the corresponding key-value pair. + pub fn insert(&mut self, key: K, value: V) -> Option { + self.insert_full(key, value).1 + } + + /// Insert a key-value pair in the map, and get their index. + /// + /// If an equivalent key already exists in the map: the key remains and + /// retains in its place in the order, its corresponding value is updated + /// with `value` and the older value is returned inside `(index, Some(_))`. + /// + /// If no equivalent key existed in the map: the new key-value pair is + /// inserted, last in order, and `(index, None)` is returned. + /// + /// Computes in **O(1)** time (amortized average). + /// + /// See also [`entry`](#method.entry) if you you want to insert *or* modify + /// or if you need to get the index of the corresponding key-value pair. + pub fn insert_full(&mut self, key: K, value: V) -> (usize, Option) { + let hash = self.hash(&key); + self.core.insert_full(hash, key, value) + } + + /// Get the given key’s corresponding entry in the map for insertion and/or + /// in-place manipulation. + /// + /// Computes in **O(1)** time (amortized average). + pub fn entry(&mut self, key: K) -> Entry<'_, K, V> { + let hash = self.hash(&key); + self.core.entry(hash, key) + } + + /// Return `true` if an equivalent to `key` exists in the map. + /// + /// Computes in **O(1)** time (average). + pub fn contains_key(&self, key: &Q) -> bool + where + Q: Hash + Equivalent, + { + self.get_index_of(key).is_some() + } + + /// Return a reference to the value stored for `key`, if it is present, + /// else `None`. + /// + /// Computes in **O(1)** time (average). + pub fn get(&self, key: &Q) -> Option<&V> + where + Q: Hash + Equivalent, + { + if let Some(i) = self.get_index_of(key) { + let entry = &self.as_entries()[i]; + Some(&entry.value) + } else { + None + } + } + + /// Return references to the key-value pair stored for `key`, + /// if it is present, else `None`. + /// + /// Computes in **O(1)** time (average). + pub fn get_key_value(&self, key: &Q) -> Option<(&K, &V)> + where + Q: Hash + Equivalent, + { + if let Some(i) = self.get_index_of(key) { + let entry = &self.as_entries()[i]; + Some((&entry.key, &entry.value)) + } else { + None + } + } + + /// Return item index, key and value + pub fn get_full(&self, key: &Q) -> Option<(usize, &K, &V)> + where + Q: Hash + Equivalent, + { + if let Some(i) = self.get_index_of(key) { + let entry = &self.as_entries()[i]; + Some((i, &entry.key, &entry.value)) + } else { + None + } + } + + /// Return item index, if it exists in the map + /// + /// Computes in **O(1)** time (average). + pub fn get_index_of(&self, key: &Q) -> Option + where + Q: Hash + Equivalent, + { + if self.is_empty() { + None + } else { + let hash = self.hash(key); + self.core.get_index_of(hash, key) + } + } + + pub fn get_mut(&mut self, key: &Q) -> Option<&mut V> + where + Q: Hash + Equivalent, + { + if let Some(i) = self.get_index_of(key) { + let entry = &mut self.as_entries_mut()[i]; + Some(&mut entry.value) + } else { + None + } + } + + pub fn get_full_mut(&mut self, key: &Q) -> Option<(usize, &K, &mut V)> + where + Q: Hash + Equivalent, + { + if let Some(i) = self.get_index_of(key) { + let entry = &mut self.as_entries_mut()[i]; + Some((i, &entry.key, &mut entry.value)) + } else { + None + } + } + + pub(crate) fn get_full_mut2_impl( + &mut self, + key: &Q, + ) -> Option<(usize, &mut K, &mut V)> + where + Q: Hash + Equivalent, + { + if let Some(i) = self.get_index_of(key) { + let entry = &mut self.as_entries_mut()[i]; + Some((i, &mut entry.key, &mut entry.value)) + } else { + None + } + } + + /// Remove the key-value pair equivalent to `key` and return + /// its value. + /// + /// **NOTE:** This is equivalent to `.swap_remove(key)`, if you need to + /// preserve the order of the keys in the map, use `.shift_remove(key)` + /// instead. + /// + /// Computes in **O(1)** time (average). + pub fn remove(&mut self, key: &Q) -> Option + where + Q: Hash + Equivalent, + { + self.swap_remove(key) + } + + /// Remove and return the key-value pair equivalent to `key`. + /// + /// **NOTE:** This is equivalent to `.swap_remove_entry(key)`, if you need to + /// preserve the order of the keys in the map, use `.shift_remove_entry(key)` + /// instead. + /// + /// Computes in **O(1)** time (average). + pub fn remove_entry(&mut self, key: &Q) -> Option<(K, V)> + where + Q: Hash + Equivalent, + { + self.swap_remove_entry(key) + } + + /// Remove the key-value pair equivalent to `key` and return + /// its value. + /// + /// Like `Vec::swap_remove`, the pair is removed by swapping it with the + /// last element of the map and popping it off. **This perturbs + /// the position of what used to be the last element!** + /// + /// Return `None` if `key` is not in map. + /// + /// Computes in **O(1)** time (average). + pub fn swap_remove(&mut self, key: &Q) -> Option + where + Q: Hash + Equivalent, + { + self.swap_remove_full(key).map(third) + } + + /// Remove and return the key-value pair equivalent to `key`. + /// + /// Like `Vec::swap_remove`, the pair is removed by swapping it with the + /// last element of the map and popping it off. **This perturbs + /// the position of what used to be the last element!** + /// + /// Return `None` if `key` is not in map. + /// + /// Computes in **O(1)** time (average). + pub fn swap_remove_entry(&mut self, key: &Q) -> Option<(K, V)> + where + Q: Hash + Equivalent, + { + match self.swap_remove_full(key) { + Some((_, key, value)) => Some((key, value)), + None => None, + } + } + + /// Remove the key-value pair equivalent to `key` and return it and + /// the index it had. + /// + /// Like `Vec::swap_remove`, the pair is removed by swapping it with the + /// last element of the map and popping it off. **This perturbs + /// the position of what used to be the last element!** + /// + /// Return `None` if `key` is not in map. + /// + /// Computes in **O(1)** time (average). + pub fn swap_remove_full(&mut self, key: &Q) -> Option<(usize, K, V)> + where + Q: Hash + Equivalent, + { + if self.is_empty() { + return None; + } + let hash = self.hash(key); + self.core.swap_remove_full(hash, key) + } + + /// Remove the key-value pair equivalent to `key` and return + /// its value. + /// + /// Like `Vec::remove`, the pair is removed by shifting all of the + /// elements that follow it, preserving their relative order. + /// **This perturbs the index of all of those elements!** + /// + /// Return `None` if `key` is not in map. + /// + /// Computes in **O(n)** time (average). + pub fn shift_remove(&mut self, key: &Q) -> Option + where + Q: Hash + Equivalent, + { + self.shift_remove_full(key).map(third) + } + + /// Remove and return the key-value pair equivalent to `key`. + /// + /// Like `Vec::remove`, the pair is removed by shifting all of the + /// elements that follow it, preserving their relative order. + /// **This perturbs the index of all of those elements!** + /// + /// Return `None` if `key` is not in map. + /// + /// Computes in **O(n)** time (average). + pub fn shift_remove_entry(&mut self, key: &Q) -> Option<(K, V)> + where + Q: Hash + Equivalent, + { + match self.shift_remove_full(key) { + Some((_, key, value)) => Some((key, value)), + None => None, + } + } + + /// Remove the key-value pair equivalent to `key` and return it and + /// the index it had. + /// + /// Like `Vec::remove`, the pair is removed by shifting all of the + /// elements that follow it, preserving their relative order. + /// **This perturbs the index of all of those elements!** + /// + /// Return `None` if `key` is not in map. + /// + /// Computes in **O(n)** time (average). + pub fn shift_remove_full(&mut self, key: &Q) -> Option<(usize, K, V)> + where + Q: Hash + Equivalent, + { + if self.is_empty() { + return None; + } + let hash = self.hash(key); + self.core.shift_remove_full(hash, key) + } + + /// Remove the last key-value pair + /// + /// This preserves the order of the remaining elements. + /// + /// Computes in **O(1)** time (average). + pub fn pop(&mut self) -> Option<(K, V)> { + self.core.pop() + } + + /// Scan through each key-value pair in the map and keep those where the + /// closure `keep` returns `true`. + /// + /// The elements are visited in order, and remaining elements keep their + /// order. + /// + /// Computes in **O(n)** time (average). + pub fn retain(&mut self, mut keep: F) + where + F: FnMut(&K, &mut V) -> bool, + { + self.core.retain_in_order(move |k, v| keep(k, v)); + } + + pub(crate) fn retain_mut(&mut self, keep: F) + where + F: FnMut(&mut K, &mut V) -> bool, + { + self.core.retain_in_order(keep); + } + + /// Sort the map’s key-value pairs by the default ordering of the keys. + /// + /// See [`sort_by`](Self::sort_by) for details. + pub fn sort_keys(&mut self) + where + K: Ord, + { + self.with_entries(move |entries| { + entries.sort_by(move |a, b| K::cmp(&a.key, &b.key)); + }); + } + + /// Sort the map’s key-value pairs in place using the comparison + /// function `cmp`. + /// + /// The comparison function receives two key and value pairs to compare (you + /// can sort by keys or values or their combination as needed). + /// + /// Computes in **O(n log n + c)** time and **O(n)** space where *n* is + /// the length of the map and *c* the capacity. The sort is stable. + pub fn sort_by(&mut self, mut cmp: F) + where + F: FnMut(&K, &V, &K, &V) -> Ordering, + { + self.with_entries(move |entries| { + entries.sort_by(move |a, b| cmp(&a.key, &a.value, &b.key, &b.value)); + }); + } + + /// Sort the key-value pairs of the map and return a by-value iterator of + /// the key-value pairs with the result. + /// + /// The sort is stable. + pub fn sorted_by(self, mut cmp: F) -> IntoIter + where + F: FnMut(&K, &V, &K, &V) -> Ordering, + { + let mut entries = self.into_entries(); + entries.sort_by(move |a, b| cmp(&a.key, &a.value, &b.key, &b.value)); + IntoIter { + iter: entries.into_iter(), + } + } + + /// Sort the map's key-value pairs by the default ordering of the keys, but + /// may not preserve the order of equal elements. + /// + /// See [`sort_unstable_by`](Self::sort_unstable_by) for details. + pub fn sort_unstable_keys(&mut self) + where + K: Ord, + { + self.with_entries(move |entries| { + entries.sort_unstable_by(move |a, b| K::cmp(&a.key, &b.key)); + }); + } + + /// Sort the map's key-value pairs in place using the comparison function `cmp`, but + /// may not preserve the order of equal elements. + /// + /// The comparison function receives two key and value pairs to compare (you + /// can sort by keys or values or their combination as needed). + /// + /// Computes in **O(n log n + c)** time where *n* is + /// the length of the map and *c* is the capacity. The sort is unstable. + pub fn sort_unstable_by(&mut self, mut cmp: F) + where + F: FnMut(&K, &V, &K, &V) -> Ordering, + { + self.with_entries(move |entries| { + entries.sort_unstable_by(move |a, b| cmp(&a.key, &a.value, &b.key, &b.value)); + }); + } + + /// Sort the key-value pairs of the map and return a by-value iterator of + /// the key-value pairs with the result. + /// + /// The sort is unstable. + #[inline] + pub fn sorted_unstable_by(self, mut cmp: F) -> IntoIter + where + F: FnMut(&K, &V, &K, &V) -> Ordering, + { + let mut entries = self.into_entries(); + entries.sort_unstable_by(move |a, b| cmp(&a.key, &a.value, &b.key, &b.value)); + IntoIter { + iter: entries.into_iter(), + } + } + + /// Reverses the order of the map’s key-value pairs in place. + /// + /// Computes in **O(n)** time and **O(1)** space. + pub fn reverse(&mut self) { + self.core.reverse() + } +} + +impl IndexMap { + /// Get a key-value pair by index + /// + /// Valid indices are *0 <= index < self.len()* + /// + /// Computes in **O(1)** time. + pub fn get_index(&self, index: usize) -> Option<(&K, &V)> { + self.as_entries().get(index).map(Bucket::refs) + } + + /// Get a key-value pair by index + /// + /// Valid indices are *0 <= index < self.len()* + /// + /// Computes in **O(1)** time. + pub fn get_index_mut(&mut self, index: usize) -> Option<(&mut K, &mut V)> { + self.as_entries_mut().get_mut(index).map(Bucket::muts) + } + + /// Get the first key-value pair + /// + /// Computes in **O(1)** time. + pub fn first(&self) -> Option<(&K, &V)> { + self.as_entries().first().map(Bucket::refs) + } + + /// Get the first key-value pair, with mutable access to the value + /// + /// Computes in **O(1)** time. + pub fn first_mut(&mut self) -> Option<(&K, &mut V)> { + self.as_entries_mut().first_mut().map(Bucket::ref_mut) + } + + /// Get the last key-value pair + /// + /// Computes in **O(1)** time. + pub fn last(&self) -> Option<(&K, &V)> { + self.as_entries().last().map(Bucket::refs) + } + + /// Get the last key-value pair, with mutable access to the value + /// + /// Computes in **O(1)** time. + pub fn last_mut(&mut self) -> Option<(&K, &mut V)> { + self.as_entries_mut().last_mut().map(Bucket::ref_mut) + } + + /// Remove the key-value pair by index + /// + /// Valid indices are *0 <= index < self.len()* + /// + /// Like `Vec::swap_remove`, the pair is removed by swapping it with the + /// last element of the map and popping it off. **This perturbs + /// the position of what used to be the last element!** + /// + /// Computes in **O(1)** time (average). + pub fn swap_remove_index(&mut self, index: usize) -> Option<(K, V)> { + self.core.swap_remove_index(index) + } + + /// Remove the key-value pair by index + /// + /// Valid indices are *0 <= index < self.len()* + /// + /// Like `Vec::remove`, the pair is removed by shifting all of the + /// elements that follow it, preserving their relative order. + /// **This perturbs the index of all of those elements!** + /// + /// Computes in **O(n)** time (average). + pub fn shift_remove_index(&mut self, index: usize) -> Option<(K, V)> { + self.core.shift_remove_index(index) + } + + /// Moves the position of a key-value pair from one index to another + /// by shifting all other pairs in-between. + /// + /// * If `from < to`, the other pairs will shift down while the targeted pair moves up. + /// * If `from > to`, the other pairs will shift up while the targeted pair moves down. + /// + /// ***Panics*** if `from` or `to` are out of bounds. + /// + /// Computes in **O(n)** time (average). + pub fn move_index(&mut self, from: usize, to: usize) { + self.core.move_index(from, to) + } + + /// Swaps the position of two key-value pairs in the map. + /// + /// ***Panics*** if `a` or `b` are out of bounds. + pub fn swap_indices(&mut self, a: usize, b: usize) { + self.core.swap_indices(a, b) + } +} + +/// An iterator over the keys of a `IndexMap`. +/// +/// This `struct` is created by the [`keys`] method on [`IndexMap`]. See its +/// documentation for more. +/// +/// [`keys`]: struct.IndexMap.html#method.keys +/// [`IndexMap`]: struct.IndexMap.html +pub struct Keys<'a, K, V> { + iter: SliceIter<'a, Bucket>, +} + +impl<'a, K, V> Iterator for Keys<'a, K, V> { + type Item = &'a K; + + iterator_methods!(Bucket::key_ref); +} + +impl DoubleEndedIterator for Keys<'_, K, V> { + double_ended_iterator_methods!(Bucket::key_ref); +} + +impl ExactSizeIterator for Keys<'_, K, V> { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for Keys<'_, K, V> {} + +// FIXME(#26925) Remove in favor of `#[derive(Clone)]` +impl Clone for Keys<'_, K, V> { + fn clone(&self) -> Self { + Keys { + iter: self.iter.clone(), + } + } +} + +impl fmt::Debug for Keys<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self.clone()).finish() + } +} + +/// An owning iterator over the keys of a `IndexMap`. +/// +/// This `struct` is created by the [`into_keys`] method on [`IndexMap`]. +/// See its documentation for more. +/// +/// [`IndexMap`]: struct.IndexMap.html +/// [`into_keys`]: struct.IndexMap.html#method.into_keys +pub struct IntoKeys { + iter: vec::IntoIter>, +} + +impl Iterator for IntoKeys { + type Item = K; + + iterator_methods!(Bucket::key); +} + +impl DoubleEndedIterator for IntoKeys { + double_ended_iterator_methods!(Bucket::key); +} + +impl ExactSizeIterator for IntoKeys { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for IntoKeys {} + +impl fmt::Debug for IntoKeys { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.iter.as_slice().iter().map(Bucket::key_ref); + f.debug_list().entries(iter).finish() + } +} + +/// An iterator over the values of a `IndexMap`. +/// +/// This `struct` is created by the [`values`] method on [`IndexMap`]. See its +/// documentation for more. +/// +/// [`values`]: struct.IndexMap.html#method.values +/// [`IndexMap`]: struct.IndexMap.html +pub struct Values<'a, K, V> { + iter: SliceIter<'a, Bucket>, +} + +impl<'a, K, V> Iterator for Values<'a, K, V> { + type Item = &'a V; + + iterator_methods!(Bucket::value_ref); +} + +impl DoubleEndedIterator for Values<'_, K, V> { + double_ended_iterator_methods!(Bucket::value_ref); +} + +impl ExactSizeIterator for Values<'_, K, V> { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for Values<'_, K, V> {} + +// FIXME(#26925) Remove in favor of `#[derive(Clone)]` +impl Clone for Values<'_, K, V> { + fn clone(&self) -> Self { + Values { + iter: self.iter.clone(), + } + } +} + +impl fmt::Debug for Values<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self.clone()).finish() + } +} + +/// A mutable iterator over the values of a `IndexMap`. +/// +/// This `struct` is created by the [`values_mut`] method on [`IndexMap`]. See its +/// documentation for more. +/// +/// [`values_mut`]: struct.IndexMap.html#method.values_mut +/// [`IndexMap`]: struct.IndexMap.html +pub struct ValuesMut<'a, K, V> { + iter: SliceIterMut<'a, Bucket>, +} + +impl<'a, K, V> Iterator for ValuesMut<'a, K, V> { + type Item = &'a mut V; + + iterator_methods!(Bucket::value_mut); +} + +impl DoubleEndedIterator for ValuesMut<'_, K, V> { + double_ended_iterator_methods!(Bucket::value_mut); +} + +impl ExactSizeIterator for ValuesMut<'_, K, V> { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for ValuesMut<'_, K, V> {} + +impl fmt::Debug for ValuesMut<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.iter.as_slice().iter().map(Bucket::value_ref); + f.debug_list().entries(iter).finish() + } +} + +/// An owning iterator over the values of a `IndexMap`. +/// +/// This `struct` is created by the [`into_values`] method on [`IndexMap`]. +/// See its documentation for more. +/// +/// [`IndexMap`]: struct.IndexMap.html +/// [`into_values`]: struct.IndexMap.html#method.into_values +pub struct IntoValues { + iter: vec::IntoIter>, +} + +impl Iterator for IntoValues { + type Item = V; + + iterator_methods!(Bucket::value); +} + +impl DoubleEndedIterator for IntoValues { + double_ended_iterator_methods!(Bucket::value); +} + +impl ExactSizeIterator for IntoValues { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for IntoValues {} + +impl fmt::Debug for IntoValues { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.iter.as_slice().iter().map(Bucket::value_ref); + f.debug_list().entries(iter).finish() + } +} + +/// An iterator over the entries of a `IndexMap`. +/// +/// This `struct` is created by the [`iter`] method on [`IndexMap`]. See its +/// documentation for more. +/// +/// [`iter`]: struct.IndexMap.html#method.iter +/// [`IndexMap`]: struct.IndexMap.html +pub struct Iter<'a, K, V> { + iter: SliceIter<'a, Bucket>, +} + +impl<'a, K, V> Iterator for Iter<'a, K, V> { + type Item = (&'a K, &'a V); + + iterator_methods!(Bucket::refs); +} + +impl DoubleEndedIterator for Iter<'_, K, V> { + double_ended_iterator_methods!(Bucket::refs); +} + +impl ExactSizeIterator for Iter<'_, K, V> { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for Iter<'_, K, V> {} + +// FIXME(#26925) Remove in favor of `#[derive(Clone)]` +impl Clone for Iter<'_, K, V> { + fn clone(&self) -> Self { + Iter { + iter: self.iter.clone(), + } + } +} + +impl fmt::Debug for Iter<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self.clone()).finish() + } +} + +/// A mutable iterator over the entries of a `IndexMap`. +/// +/// This `struct` is created by the [`iter_mut`] method on [`IndexMap`]. See its +/// documentation for more. +/// +/// [`iter_mut`]: struct.IndexMap.html#method.iter_mut +/// [`IndexMap`]: struct.IndexMap.html +pub struct IterMut<'a, K, V> { + iter: SliceIterMut<'a, Bucket>, +} + +impl<'a, K, V> Iterator for IterMut<'a, K, V> { + type Item = (&'a K, &'a mut V); + + iterator_methods!(Bucket::ref_mut); +} + +impl DoubleEndedIterator for IterMut<'_, K, V> { + double_ended_iterator_methods!(Bucket::ref_mut); +} + +impl ExactSizeIterator for IterMut<'_, K, V> { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for IterMut<'_, K, V> {} + +impl fmt::Debug for IterMut<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.iter.as_slice().iter().map(Bucket::refs); + f.debug_list().entries(iter).finish() + } +} + +/// An owning iterator over the entries of a `IndexMap`. +/// +/// This `struct` is created by the [`into_iter`] method on [`IndexMap`] +/// (provided by the `IntoIterator` trait). See its documentation for more. +/// +/// [`into_iter`]: struct.IndexMap.html#method.into_iter +/// [`IndexMap`]: struct.IndexMap.html +pub struct IntoIter { + iter: vec::IntoIter>, +} + +impl Iterator for IntoIter { + type Item = (K, V); + + iterator_methods!(Bucket::key_value); +} + +impl DoubleEndedIterator for IntoIter { + double_ended_iterator_methods!(Bucket::key_value); +} + +impl ExactSizeIterator for IntoIter { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for IntoIter {} + +impl fmt::Debug for IntoIter { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.iter.as_slice().iter().map(Bucket::refs); + f.debug_list().entries(iter).finish() + } +} + +/// A draining iterator over the entries of a `IndexMap`. +/// +/// This `struct` is created by the [`drain`] method on [`IndexMap`]. See its +/// documentation for more. +/// +/// [`drain`]: struct.IndexMap.html#method.drain +/// [`IndexMap`]: struct.IndexMap.html +pub struct Drain<'a, K, V> { + pub(crate) iter: vec::Drain<'a, Bucket>, +} + +impl Iterator for Drain<'_, K, V> { + type Item = (K, V); + + iterator_methods!(Bucket::key_value); +} + +impl DoubleEndedIterator for Drain<'_, K, V> { + double_ended_iterator_methods!(Bucket::key_value); +} + +impl ExactSizeIterator for Drain<'_, K, V> { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for Drain<'_, K, V> {} + +impl fmt::Debug for Drain<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.iter.as_slice().iter().map(Bucket::refs); + f.debug_list().entries(iter).finish() + } +} + +impl<'a, K, V, S> IntoIterator for &'a IndexMap { + type Item = (&'a K, &'a V); + type IntoIter = Iter<'a, K, V>; + fn into_iter(self) -> Self::IntoIter { + self.iter() + } +} + +impl<'a, K, V, S> IntoIterator for &'a mut IndexMap { + type Item = (&'a K, &'a mut V); + type IntoIter = IterMut<'a, K, V>; + fn into_iter(self) -> Self::IntoIter { + self.iter_mut() + } +} + +impl IntoIterator for IndexMap { + type Item = (K, V); + type IntoIter = IntoIter; + fn into_iter(self) -> Self::IntoIter { + IntoIter { + iter: self.into_entries().into_iter(), + } + } +} + +/// Access `IndexMap` values corresponding to a key. +/// +/// # Examples +/// +/// ``` +/// use indexmap::IndexMap; +/// +/// let mut map = IndexMap::new(); +/// for word in "Lorem ipsum dolor sit amet".split_whitespace() { +/// map.insert(word.to_lowercase(), word.to_uppercase()); +/// } +/// assert_eq!(map["lorem"], "LOREM"); +/// assert_eq!(map["ipsum"], "IPSUM"); +/// ``` +/// +/// ```should_panic +/// use indexmap::IndexMap; +/// +/// let mut map = IndexMap::new(); +/// map.insert("foo", 1); +/// println!("{:?}", map["bar"]); // panics! +/// ``` +impl Index<&Q> for IndexMap +where + Q: Hash + Equivalent, + K: Hash + Eq, + S: BuildHasher, +{ + type Output = V; + + /// Returns a reference to the value corresponding to the supplied `key`. + /// + /// ***Panics*** if `key` is not present in the map. + fn index(&self, key: &Q) -> &V { + self.get(key).expect("IndexMap: key not found") + } +} + +/// Access `IndexMap` values corresponding to a key. +/// +/// Mutable indexing allows changing / updating values of key-value +/// pairs that are already present. +/// +/// You can **not** insert new pairs with index syntax, use `.insert()`. +/// +/// # Examples +/// +/// ``` +/// use indexmap::IndexMap; +/// +/// let mut map = IndexMap::new(); +/// for word in "Lorem ipsum dolor sit amet".split_whitespace() { +/// map.insert(word.to_lowercase(), word.to_string()); +/// } +/// let lorem = &mut map["lorem"]; +/// assert_eq!(lorem, "Lorem"); +/// lorem.retain(char::is_lowercase); +/// assert_eq!(map["lorem"], "orem"); +/// ``` +/// +/// ```should_panic +/// use indexmap::IndexMap; +/// +/// let mut map = IndexMap::new(); +/// map.insert("foo", 1); +/// map["bar"] = 1; // panics! +/// ``` +impl IndexMut<&Q> for IndexMap +where + Q: Hash + Equivalent, + K: Hash + Eq, + S: BuildHasher, +{ + /// Returns a mutable reference to the value corresponding to the supplied `key`. + /// + /// ***Panics*** if `key` is not present in the map. + fn index_mut(&mut self, key: &Q) -> &mut V { + self.get_mut(key).expect("IndexMap: key not found") + } +} + +/// Access `IndexMap` values at indexed positions. +/// +/// # Examples +/// +/// ``` +/// use indexmap::IndexMap; +/// +/// let mut map = IndexMap::new(); +/// for word in "Lorem ipsum dolor sit amet".split_whitespace() { +/// map.insert(word.to_lowercase(), word.to_uppercase()); +/// } +/// assert_eq!(map[0], "LOREM"); +/// assert_eq!(map[1], "IPSUM"); +/// map.reverse(); +/// assert_eq!(map[0], "AMET"); +/// assert_eq!(map[1], "SIT"); +/// map.sort_keys(); +/// assert_eq!(map[0], "AMET"); +/// assert_eq!(map[1], "DOLOR"); +/// ``` +/// +/// ```should_panic +/// use indexmap::IndexMap; +/// +/// let mut map = IndexMap::new(); +/// map.insert("foo", 1); +/// println!("{:?}", map[10]); // panics! +/// ``` +impl Index for IndexMap { + type Output = V; + + /// Returns a reference to the value at the supplied `index`. + /// + /// ***Panics*** if `index` is out of bounds. + fn index(&self, index: usize) -> &V { + self.get_index(index) + .expect("IndexMap: index out of bounds") + .1 + } +} + +/// Access `IndexMap` values at indexed positions. +/// +/// Mutable indexing allows changing / updating indexed values +/// that are already present. +/// +/// You can **not** insert new values with index syntax, use `.insert()`. +/// +/// # Examples +/// +/// ``` +/// use indexmap::IndexMap; +/// +/// let mut map = IndexMap::new(); +/// for word in "Lorem ipsum dolor sit amet".split_whitespace() { +/// map.insert(word.to_lowercase(), word.to_string()); +/// } +/// let lorem = &mut map[0]; +/// assert_eq!(lorem, "Lorem"); +/// lorem.retain(char::is_lowercase); +/// assert_eq!(map["lorem"], "orem"); +/// ``` +/// +/// ```should_panic +/// use indexmap::IndexMap; +/// +/// let mut map = IndexMap::new(); +/// map.insert("foo", 1); +/// map[10] = 1; // panics! +/// ``` +impl IndexMut for IndexMap { + /// Returns a mutable reference to the value at the supplied `index`. + /// + /// ***Panics*** if `index` is out of bounds. + fn index_mut(&mut self, index: usize) -> &mut V { + self.get_index_mut(index) + .expect("IndexMap: index out of bounds") + .1 + } +} + +impl FromIterator<(K, V)> for IndexMap +where + K: Hash + Eq, + S: BuildHasher + Default, +{ + /// Create an `IndexMap` from the sequence of key-value pairs in the + /// iterable. + /// + /// `from_iter` uses the same logic as `extend`. See + /// [`extend`](#method.extend) for more details. + fn from_iter>(iterable: I) -> Self { + let iter = iterable.into_iter(); + let (low, _) = iter.size_hint(); + let mut map = Self::with_capacity_and_hasher(low, <_>::default()); + map.extend(iter); + map + } +} + +#[cfg(has_std)] +impl From<[(K, V); N]> for IndexMap +where + K: Hash + Eq, +{ + /// # Examples + /// + /// ``` + /// use indexmap::IndexMap; + /// + /// let map1 = IndexMap::from([(1, 2), (3, 4)]); + /// let map2: IndexMap<_, _> = [(1, 2), (3, 4)].into(); + /// assert_eq!(map1, map2); + /// ``` + fn from(arr: [(K, V); N]) -> Self { + Self::from_iter(arr) + } +} + +impl Extend<(K, V)> for IndexMap +where + K: Hash + Eq, + S: BuildHasher, +{ + /// Extend the map with all key-value pairs in the iterable. + /// + /// This is equivalent to calling [`insert`](#method.insert) for each of + /// them in order, which means that for keys that already existed + /// in the map, their value is updated but it keeps the existing order. + /// + /// New keys are inserted in the order they appear in the sequence. If + /// equivalents of a key occur more than once, the last corresponding value + /// prevails. + fn extend>(&mut self, iterable: I) { + // (Note: this is a copy of `std`/`hashbrown`'s reservation logic.) + // 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 = iterable.into_iter(); + let reserve = if self.is_empty() { + iter.size_hint().0 + } else { + (iter.size_hint().0 + 1) / 2 + }; + self.reserve(reserve); + iter.for_each(move |(k, v)| { + self.insert(k, v); + }); + } +} + +impl<'a, K, V, S> Extend<(&'a K, &'a V)> for IndexMap +where + K: Hash + Eq + Copy, + V: Copy, + S: BuildHasher, +{ + /// Extend the map with all key-value pairs in the iterable. + /// + /// See the first extend method for more details. + fn extend>(&mut self, iterable: I) { + self.extend(iterable.into_iter().map(|(&key, &value)| (key, value))); + } +} + +impl Default for IndexMap +where + S: Default, +{ + /// Return an empty `IndexMap` + fn default() -> Self { + Self::with_capacity_and_hasher(0, S::default()) + } +} + +impl PartialEq> for IndexMap +where + K: Hash + Eq, + V1: PartialEq, + S1: BuildHasher, + S2: BuildHasher, +{ + fn eq(&self, other: &IndexMap) -> bool { + if self.len() != other.len() { + return false; + } + + self.iter() + .all(|(key, value)| other.get(key).map_or(false, |v| *value == *v)) + } +} + +impl Eq for IndexMap +where + K: Eq + Hash, + V: Eq, + S: BuildHasher, +{ +} + +#[cfg(test)] +mod tests { + use super::*; + use std::string::String; + + #[test] + fn it_works() { + let mut map = IndexMap::new(); + assert_eq!(map.is_empty(), true); + map.insert(1, ()); + map.insert(1, ()); + assert_eq!(map.len(), 1); + assert!(map.get(&1).is_some()); + assert_eq!(map.is_empty(), false); + } + + #[test] + fn new() { + let map = IndexMap::::new(); + println!("{:?}", map); + assert_eq!(map.capacity(), 0); + assert_eq!(map.len(), 0); + assert_eq!(map.is_empty(), true); + } + + #[test] + fn insert() { + let insert = [0, 4, 2, 12, 8, 7, 11, 5]; + let not_present = [1, 3, 6, 9, 10]; + let mut map = IndexMap::with_capacity(insert.len()); + + for (i, &elt) in insert.iter().enumerate() { + assert_eq!(map.len(), i); + map.insert(elt, elt); + assert_eq!(map.len(), i + 1); + assert_eq!(map.get(&elt), Some(&elt)); + assert_eq!(map[&elt], elt); + } + println!("{:?}", map); + + for &elt in ¬_present { + assert!(map.get(&elt).is_none()); + } + } + + #[test] + fn insert_full() { + let insert = vec![9, 2, 7, 1, 4, 6, 13]; + let present = vec![1, 6, 2]; + let mut map = IndexMap::with_capacity(insert.len()); + + for (i, &elt) in insert.iter().enumerate() { + assert_eq!(map.len(), i); + let (index, existing) = map.insert_full(elt, elt); + assert_eq!(existing, None); + assert_eq!(Some(index), map.get_full(&elt).map(|x| x.0)); + assert_eq!(map.len(), i + 1); + } + + let len = map.len(); + for &elt in &present { + let (index, existing) = map.insert_full(elt, elt); + assert_eq!(existing, Some(elt)); + assert_eq!(Some(index), map.get_full(&elt).map(|x| x.0)); + assert_eq!(map.len(), len); + } + } + + #[test] + fn insert_2() { + let mut map = IndexMap::with_capacity(16); + + let mut keys = vec![]; + keys.extend(0..16); + keys.extend(if cfg!(miri) { 32..64 } else { 128..267 }); + + for &i in &keys { + let old_map = map.clone(); + map.insert(i, ()); + for key in old_map.keys() { + if map.get(key).is_none() { + println!("old_map: {:?}", old_map); + println!("map: {:?}", map); + panic!("did not find {} in map", key); + } + } + } + + for &i in &keys { + assert!(map.get(&i).is_some(), "did not find {}", i); + } + } + + #[test] + fn insert_order() { + let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; + let mut map = IndexMap::new(); + + for &elt in &insert { + map.insert(elt, ()); + } + + assert_eq!(map.keys().count(), map.len()); + assert_eq!(map.keys().count(), insert.len()); + for (a, b) in insert.iter().zip(map.keys()) { + assert_eq!(a, b); + } + for (i, k) in (0..insert.len()).zip(map.keys()) { + assert_eq!(map.get_index(i).unwrap().0, k); + } + } + + #[test] + fn grow() { + let insert = [0, 4, 2, 12, 8, 7, 11]; + let not_present = [1, 3, 6, 9, 10]; + let mut map = IndexMap::with_capacity(insert.len()); + + for (i, &elt) in insert.iter().enumerate() { + assert_eq!(map.len(), i); + map.insert(elt, elt); + assert_eq!(map.len(), i + 1); + assert_eq!(map.get(&elt), Some(&elt)); + assert_eq!(map[&elt], elt); + } + + println!("{:?}", map); + for &elt in &insert { + map.insert(elt * 10, elt); + } + for &elt in &insert { + map.insert(elt * 100, elt); + } + for (i, &elt) in insert.iter().cycle().enumerate().take(100) { + map.insert(elt * 100 + i as i32, elt); + } + println!("{:?}", map); + for &elt in ¬_present { + assert!(map.get(&elt).is_none()); + } + } + + #[test] + fn reserve() { + let mut map = IndexMap::::new(); + assert_eq!(map.capacity(), 0); + map.reserve(100); + let capacity = map.capacity(); + assert!(capacity >= 100); + for i in 0..capacity { + assert_eq!(map.len(), i); + map.insert(i, i * i); + assert_eq!(map.len(), i + 1); + assert_eq!(map.capacity(), capacity); + assert_eq!(map.get(&i), Some(&(i * i))); + } + map.insert(capacity, std::usize::MAX); + assert_eq!(map.len(), capacity + 1); + assert!(map.capacity() > capacity); + assert_eq!(map.get(&capacity), Some(&std::usize::MAX)); + } + + #[test] + fn shrink_to_fit() { + let mut map = IndexMap::::new(); + assert_eq!(map.capacity(), 0); + for i in 0..100 { + assert_eq!(map.len(), i); + map.insert(i, i * i); + assert_eq!(map.len(), i + 1); + assert!(map.capacity() >= i + 1); + assert_eq!(map.get(&i), Some(&(i * i))); + map.shrink_to_fit(); + assert_eq!(map.len(), i + 1); + assert_eq!(map.capacity(), i + 1); + assert_eq!(map.get(&i), Some(&(i * i))); + } + } + + #[test] + fn remove() { + let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; + let mut map = IndexMap::new(); + + for &elt in &insert { + map.insert(elt, elt); + } + + assert_eq!(map.keys().count(), map.len()); + assert_eq!(map.keys().count(), insert.len()); + for (a, b) in insert.iter().zip(map.keys()) { + assert_eq!(a, b); + } + + let remove_fail = [99, 77]; + let remove = [4, 12, 8, 7]; + + for &key in &remove_fail { + assert!(map.swap_remove_full(&key).is_none()); + } + println!("{:?}", map); + for &key in &remove { + //println!("{:?}", map); + let index = map.get_full(&key).unwrap().0; + assert_eq!(map.swap_remove_full(&key), Some((index, key, key))); + } + println!("{:?}", map); + + for key in &insert { + assert_eq!(map.get(key).is_some(), !remove.contains(key)); + } + assert_eq!(map.len(), insert.len() - remove.len()); + assert_eq!(map.keys().count(), insert.len() - remove.len()); + } + + #[test] + fn remove_to_empty() { + let mut map = indexmap! { 0 => 0, 4 => 4, 5 => 5 }; + map.swap_remove(&5).unwrap(); + map.swap_remove(&4).unwrap(); + map.swap_remove(&0).unwrap(); + assert!(map.is_empty()); + } + + #[test] + fn swap_remove_index() { + let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; + let mut map = IndexMap::new(); + + for &elt in &insert { + map.insert(elt, elt * 2); + } + + let mut vector = insert.to_vec(); + let remove_sequence = &[3, 3, 10, 4, 5, 4, 3, 0, 1]; + + // check that the same swap remove sequence on vec and map + // have the same result. + for &rm in remove_sequence { + let out_vec = vector.swap_remove(rm); + let (out_map, _) = map.swap_remove_index(rm).unwrap(); + assert_eq!(out_vec, out_map); + } + assert_eq!(vector.len(), map.len()); + for (a, b) in vector.iter().zip(map.keys()) { + assert_eq!(a, b); + } + } + + #[test] + fn partial_eq_and_eq() { + let mut map_a = IndexMap::new(); + map_a.insert(1, "1"); + map_a.insert(2, "2"); + let mut map_b = map_a.clone(); + assert_eq!(map_a, map_b); + map_b.swap_remove(&1); + assert_ne!(map_a, map_b); + + let map_c: IndexMap<_, String> = map_b.into_iter().map(|(k, v)| (k, v.into())).collect(); + assert_ne!(map_a, map_c); + assert_ne!(map_c, map_a); + } + + #[test] + fn extend() { + let mut map = IndexMap::new(); + map.extend(vec![(&1, &2), (&3, &4)]); + map.extend(vec![(5, 6)]); + assert_eq!( + map.into_iter().collect::>(), + vec![(1, 2), (3, 4), (5, 6)] + ); + } + + #[test] + fn entry() { + let mut map = IndexMap::new(); + + map.insert(1, "1"); + map.insert(2, "2"); + { + let e = map.entry(3); + assert_eq!(e.index(), 2); + let e = e.or_insert("3"); + assert_eq!(e, &"3"); + } + + let e = map.entry(2); + assert_eq!(e.index(), 1); + assert_eq!(e.key(), &2); + match e { + Entry::Occupied(ref e) => assert_eq!(e.get(), &"2"), + Entry::Vacant(_) => panic!(), + } + assert_eq!(e.or_insert("4"), &"2"); + } + + #[test] + fn entry_and_modify() { + let mut map = IndexMap::new(); + + map.insert(1, "1"); + map.entry(1).and_modify(|x| *x = "2"); + assert_eq!(Some(&"2"), map.get(&1)); + + map.entry(2).and_modify(|x| *x = "doesn't exist"); + assert_eq!(None, map.get(&2)); + } + + #[test] + fn entry_or_default() { + let mut map = IndexMap::new(); + + #[derive(Debug, PartialEq)] + enum TestEnum { + DefaultValue, + NonDefaultValue, + } + + impl Default for TestEnum { + fn default() -> Self { + TestEnum::DefaultValue + } + } + + map.insert(1, TestEnum::NonDefaultValue); + assert_eq!(&mut TestEnum::NonDefaultValue, map.entry(1).or_default()); + + assert_eq!(&mut TestEnum::DefaultValue, map.entry(2).or_default()); + } + + #[test] + fn occupied_entry_key() { + // These keys match hash and equality, but their addresses are distinct. + let (k1, k2) = (&mut 1, &mut 1); + let k1_ptr = k1 as *const i32; + let k2_ptr = k2 as *const i32; + assert_ne!(k1_ptr, k2_ptr); + + let mut map = IndexMap::new(); + map.insert(k1, "value"); + match map.entry(k2) { + Entry::Occupied(ref e) => { + // `OccupiedEntry::key` should reference the key in the map, + // not the key that was used to find the entry. + let ptr = *e.key() as *const i32; + assert_eq!(ptr, k1_ptr); + assert_ne!(ptr, k2_ptr); + } + Entry::Vacant(_) => panic!(), + } + } + + #[test] + fn keys() { + let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')]; + let map: IndexMap<_, _> = vec.into_iter().collect(); + let keys: Vec<_> = map.keys().copied().collect(); + assert_eq!(keys.len(), 3); + assert!(keys.contains(&1)); + assert!(keys.contains(&2)); + assert!(keys.contains(&3)); + } + + #[test] + fn into_keys() { + let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')]; + let map: IndexMap<_, _> = vec.into_iter().collect(); + let keys: Vec = map.into_keys().collect(); + assert_eq!(keys.len(), 3); + assert!(keys.contains(&1)); + assert!(keys.contains(&2)); + assert!(keys.contains(&3)); + } + + #[test] + fn values() { + let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')]; + let map: IndexMap<_, _> = vec.into_iter().collect(); + let values: Vec<_> = map.values().copied().collect(); + assert_eq!(values.len(), 3); + assert!(values.contains(&'a')); + assert!(values.contains(&'b')); + assert!(values.contains(&'c')); + } + + #[test] + fn values_mut() { + let vec = vec![(1, 1), (2, 2), (3, 3)]; + let mut map: IndexMap<_, _> = vec.into_iter().collect(); + for value in map.values_mut() { + *value *= 2 + } + let values: Vec<_> = map.values().copied().collect(); + assert_eq!(values.len(), 3); + assert!(values.contains(&2)); + assert!(values.contains(&4)); + assert!(values.contains(&6)); + } + + #[test] + fn into_values() { + let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')]; + let map: IndexMap<_, _> = vec.into_iter().collect(); + let values: Vec = map.into_values().collect(); + assert_eq!(values.len(), 3); + assert!(values.contains(&'a')); + assert!(values.contains(&'b')); + assert!(values.contains(&'c')); + } + + #[test] + #[cfg(has_std)] + fn from_array() { + let map = IndexMap::from([(1, 2), (3, 4)]); + let mut expected = IndexMap::new(); + expected.insert(1, 2); + expected.insert(3, 4); + + assert_eq!(map, expected) + } +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/src/mutable_keys.rs temporalio-1.3.0/vendor/indexmap-1.9.3/src/mutable_keys.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/src/mutable_keys.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/src/mutable_keys.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,75 @@ +use core::hash::{BuildHasher, Hash}; + +use super::{Equivalent, IndexMap}; + +pub struct PrivateMarker {} + +/// Opt-in mutable access to keys. +/// +/// These methods expose `&mut K`, mutable references to the key as it is stored +/// in the map. +/// You are allowed to modify the keys in the hashmap **if the modification +/// does not change the key’s hash and equality**. +/// +/// If keys are modified erroneously, you can no longer look them up. +/// This is sound (memory safe) but a logical error hazard (just like +/// implementing PartialEq, Eq, or Hash incorrectly would be). +/// +/// `use` this trait to enable its methods for `IndexMap`. +pub trait MutableKeys { + type Key; + type Value; + + /// Return item index, mutable reference to key and value + fn get_full_mut2( + &mut self, + key: &Q, + ) -> Option<(usize, &mut Self::Key, &mut Self::Value)> + where + Q: Hash + Equivalent; + + /// Scan through each key-value pair in the map and keep those where the + /// closure `keep` returns `true`. + /// + /// The elements are visited in order, and remaining elements keep their + /// order. + /// + /// Computes in **O(n)** time (average). + fn retain2(&mut self, keep: F) + where + F: FnMut(&mut Self::Key, &mut Self::Value) -> bool; + + /// This method is not useful in itself – it is there to “seal†the trait + /// for external implementation, so that we can add methods without + /// causing breaking changes. + fn __private_marker(&self) -> PrivateMarker; +} + +/// Opt-in mutable access to keys. +/// +/// See [`MutableKeys`](trait.MutableKeys.html) for more information. +impl MutableKeys for IndexMap +where + K: Eq + Hash, + S: BuildHasher, +{ + type Key = K; + type Value = V; + fn get_full_mut2(&mut self, key: &Q) -> Option<(usize, &mut K, &mut V)> + where + Q: Hash + Equivalent, + { + self.get_full_mut2_impl(key) + } + + fn retain2(&mut self, keep: F) + where + F: FnMut(&mut K, &mut V) -> bool, + { + self.retain_mut(keep) + } + + fn __private_marker(&self) -> PrivateMarker { + PrivateMarker {} + } +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/src/rayon/map.rs temporalio-1.3.0/vendor/indexmap-1.9.3/src/rayon/map.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/src/rayon/map.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/src/rayon/map.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,583 @@ +//! Parallel iterator types for `IndexMap` with [rayon](https://docs.rs/rayon/1.0/rayon). +//! +//! You will rarely need to interact with this module directly unless you need to name one of the +//! iterator types. +//! +//! Requires crate feature `"rayon"` + +use super::collect; +use rayon::iter::plumbing::{Consumer, ProducerCallback, UnindexedConsumer}; +use rayon::prelude::*; + +use crate::vec::Vec; +use core::cmp::Ordering; +use core::fmt; +use core::hash::{BuildHasher, Hash}; +use core::ops::RangeBounds; + +use crate::Bucket; +use crate::Entries; +use crate::IndexMap; + +/// Requires crate feature `"rayon"`. +impl IntoParallelIterator for IndexMap +where + K: Send, + V: Send, +{ + type Item = (K, V); + type Iter = IntoParIter; + + fn into_par_iter(self) -> Self::Iter { + IntoParIter { + entries: self.into_entries(), + } + } +} + +/// A parallel owning iterator over the entries of a `IndexMap`. +/// +/// This `struct` is created by the [`into_par_iter`] method on [`IndexMap`] +/// (provided by rayon's `IntoParallelIterator` trait). See its documentation for more. +/// +/// [`into_par_iter`]: ../struct.IndexMap.html#method.into_par_iter +/// [`IndexMap`]: ../struct.IndexMap.html +pub struct IntoParIter { + entries: Vec>, +} + +impl fmt::Debug for IntoParIter { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.entries.iter().map(Bucket::refs); + f.debug_list().entries(iter).finish() + } +} + +impl ParallelIterator for IntoParIter { + type Item = (K, V); + + parallel_iterator_methods!(Bucket::key_value); +} + +impl IndexedParallelIterator for IntoParIter { + indexed_parallel_iterator_methods!(Bucket::key_value); +} + +/// Requires crate feature `"rayon"`. +impl<'a, K, V, S> IntoParallelIterator for &'a IndexMap +where + K: Sync, + V: Sync, +{ + type Item = (&'a K, &'a V); + type Iter = ParIter<'a, K, V>; + + fn into_par_iter(self) -> Self::Iter { + ParIter { + entries: self.as_entries(), + } + } +} + +/// A parallel iterator over the entries of a `IndexMap`. +/// +/// This `struct` is created by the [`par_iter`] method on [`IndexMap`] +/// (provided by rayon's `IntoParallelRefIterator` trait). See its documentation for more. +/// +/// [`par_iter`]: ../struct.IndexMap.html#method.par_iter +/// [`IndexMap`]: ../struct.IndexMap.html +pub struct ParIter<'a, K, V> { + entries: &'a [Bucket], +} + +impl Clone for ParIter<'_, K, V> { + fn clone(&self) -> Self { + ParIter { ..*self } + } +} + +impl fmt::Debug for ParIter<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.entries.iter().map(Bucket::refs); + f.debug_list().entries(iter).finish() + } +} + +impl<'a, K: Sync, V: Sync> ParallelIterator for ParIter<'a, K, V> { + type Item = (&'a K, &'a V); + + parallel_iterator_methods!(Bucket::refs); +} + +impl IndexedParallelIterator for ParIter<'_, K, V> { + indexed_parallel_iterator_methods!(Bucket::refs); +} + +/// Requires crate feature `"rayon"`. +impl<'a, K, V, S> IntoParallelIterator for &'a mut IndexMap +where + K: Sync + Send, + V: Send, +{ + type Item = (&'a K, &'a mut V); + type Iter = ParIterMut<'a, K, V>; + + fn into_par_iter(self) -> Self::Iter { + ParIterMut { + entries: self.as_entries_mut(), + } + } +} + +/// A parallel mutable iterator over the entries of a `IndexMap`. +/// +/// This `struct` is created by the [`par_iter_mut`] method on [`IndexMap`] +/// (provided by rayon's `IntoParallelRefMutIterator` trait). See its documentation for more. +/// +/// [`par_iter_mut`]: ../struct.IndexMap.html#method.par_iter_mut +/// [`IndexMap`]: ../struct.IndexMap.html +pub struct ParIterMut<'a, K, V> { + entries: &'a mut [Bucket], +} + +impl fmt::Debug for ParIterMut<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.entries.iter().map(Bucket::refs); + f.debug_list().entries(iter).finish() + } +} + +impl<'a, K: Sync + Send, V: Send> ParallelIterator for ParIterMut<'a, K, V> { + type Item = (&'a K, &'a mut V); + + parallel_iterator_methods!(Bucket::ref_mut); +} + +impl IndexedParallelIterator for ParIterMut<'_, K, V> { + indexed_parallel_iterator_methods!(Bucket::ref_mut); +} + +/// Requires crate feature `"rayon"`. +impl<'a, K, V, S> ParallelDrainRange for &'a mut IndexMap +where + K: Send, + V: Send, +{ + type Item = (K, V); + type Iter = ParDrain<'a, K, V>; + + fn par_drain>(self, range: R) -> Self::Iter { + ParDrain { + entries: self.core.par_drain(range), + } + } +} + +/// A parallel draining iterator over the entries of a `IndexMap`. +/// +/// This `struct` is created by the [`par_drain`] method on [`IndexMap`] +/// (provided by rayon's `ParallelDrainRange` trait). See its documentation for more. +/// +/// [`par_drain`]: ../struct.IndexMap.html#method.par_drain +/// [`IndexMap`]: ../struct.IndexMap.html +pub struct ParDrain<'a, K: Send, V: Send> { + entries: rayon::vec::Drain<'a, Bucket>, +} + +impl ParallelIterator for ParDrain<'_, K, V> { + type Item = (K, V); + + parallel_iterator_methods!(Bucket::key_value); +} + +impl IndexedParallelIterator for ParDrain<'_, K, V> { + indexed_parallel_iterator_methods!(Bucket::key_value); +} + +/// Parallel iterator methods and other parallel methods. +/// +/// The following methods **require crate feature `"rayon"`**. +/// +/// See also the `IntoParallelIterator` implementations. +impl IndexMap +where + K: Sync, + V: Sync, +{ + /// Return a parallel iterator over the keys of the map. + /// + /// While parallel iterators can process items in any order, their relative order + /// in the map is still preserved for operations like `reduce` and `collect`. + pub fn par_keys(&self) -> ParKeys<'_, K, V> { + ParKeys { + entries: self.as_entries(), + } + } + + /// Return a parallel iterator over the values of the map. + /// + /// While parallel iterators can process items in any order, their relative order + /// in the map is still preserved for operations like `reduce` and `collect`. + pub fn par_values(&self) -> ParValues<'_, K, V> { + ParValues { + entries: self.as_entries(), + } + } +} + +impl IndexMap +where + K: Hash + Eq + Sync, + V: Sync, + S: BuildHasher, +{ + /// Returns `true` if `self` contains all of the same key-value pairs as `other`, + /// regardless of each map's indexed order, determined in parallel. + pub fn par_eq(&self, other: &IndexMap) -> bool + where + V: PartialEq, + V2: Sync, + S2: BuildHasher + Sync, + { + self.len() == other.len() + && self + .par_iter() + .all(move |(key, value)| other.get(key).map_or(false, |v| *value == *v)) + } +} + +/// A parallel iterator over the keys of a `IndexMap`. +/// +/// This `struct` is created by the [`par_keys`] method on [`IndexMap`]. See its +/// documentation for more. +/// +/// [`par_keys`]: ../struct.IndexMap.html#method.par_keys +/// [`IndexMap`]: ../struct.IndexMap.html +pub struct ParKeys<'a, K, V> { + entries: &'a [Bucket], +} + +impl Clone for ParKeys<'_, K, V> { + fn clone(&self) -> Self { + ParKeys { ..*self } + } +} + +impl fmt::Debug for ParKeys<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.entries.iter().map(Bucket::key_ref); + f.debug_list().entries(iter).finish() + } +} + +impl<'a, K: Sync, V: Sync> ParallelIterator for ParKeys<'a, K, V> { + type Item = &'a K; + + parallel_iterator_methods!(Bucket::key_ref); +} + +impl IndexedParallelIterator for ParKeys<'_, K, V> { + indexed_parallel_iterator_methods!(Bucket::key_ref); +} + +/// A parallel iterator over the values of a `IndexMap`. +/// +/// This `struct` is created by the [`par_values`] method on [`IndexMap`]. See its +/// documentation for more. +/// +/// [`par_values`]: ../struct.IndexMap.html#method.par_values +/// [`IndexMap`]: ../struct.IndexMap.html +pub struct ParValues<'a, K, V> { + entries: &'a [Bucket], +} + +impl Clone for ParValues<'_, K, V> { + fn clone(&self) -> Self { + ParValues { ..*self } + } +} + +impl fmt::Debug for ParValues<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.entries.iter().map(Bucket::value_ref); + f.debug_list().entries(iter).finish() + } +} + +impl<'a, K: Sync, V: Sync> ParallelIterator for ParValues<'a, K, V> { + type Item = &'a V; + + parallel_iterator_methods!(Bucket::value_ref); +} + +impl IndexedParallelIterator for ParValues<'_, K, V> { + indexed_parallel_iterator_methods!(Bucket::value_ref); +} + +/// Requires crate feature `"rayon"`. +impl IndexMap +where + K: Send, + V: Send, +{ + /// Return a parallel iterator over mutable references to the values of the map + /// + /// While parallel iterators can process items in any order, their relative order + /// in the map is still preserved for operations like `reduce` and `collect`. + pub fn par_values_mut(&mut self) -> ParValuesMut<'_, K, V> { + ParValuesMut { + entries: self.as_entries_mut(), + } + } +} + +impl IndexMap +where + K: Hash + Eq + Send, + V: Send, + S: BuildHasher, +{ + /// Sort the map’s key-value pairs in parallel, by the default ordering of the keys. + pub fn par_sort_keys(&mut self) + where + K: Ord, + { + self.with_entries(|entries| { + entries.par_sort_by(|a, b| K::cmp(&a.key, &b.key)); + }); + } + + /// Sort the map’s key-value pairs in place and in parallel, using the comparison + /// function `cmp`. + /// + /// The comparison function receives two key and value pairs to compare (you + /// can sort by keys or values or their combination as needed). + pub fn par_sort_by(&mut self, cmp: F) + where + F: Fn(&K, &V, &K, &V) -> Ordering + Sync, + { + self.with_entries(|entries| { + entries.par_sort_by(move |a, b| cmp(&a.key, &a.value, &b.key, &b.value)); + }); + } + + /// Sort the key-value pairs of the map in parallel and return a by-value parallel + /// iterator of the key-value pairs with the result. + pub fn par_sorted_by(self, cmp: F) -> IntoParIter + where + F: Fn(&K, &V, &K, &V) -> Ordering + Sync, + { + let mut entries = self.into_entries(); + entries.par_sort_by(move |a, b| cmp(&a.key, &a.value, &b.key, &b.value)); + IntoParIter { entries } + } + + /// Sort the map's key-value pairs in parallel, by the default ordering of the keys. + pub fn par_sort_unstable_keys(&mut self) + where + K: Ord, + { + self.with_entries(|entries| { + entries.par_sort_unstable_by(|a, b| K::cmp(&a.key, &b.key)); + }); + } + + /// Sort the map's key-value pairs in place and in parallel, using the comparison + /// function `cmp`. + /// + /// The comparison function receives two key and value pairs to compare (you + /// can sort by keys or values or their combination as needed). + pub fn par_sort_unstable_by(&mut self, cmp: F) + where + F: Fn(&K, &V, &K, &V) -> Ordering + Sync, + { + self.with_entries(|entries| { + entries.par_sort_unstable_by(move |a, b| cmp(&a.key, &a.value, &b.key, &b.value)); + }); + } + + /// Sort the key-value pairs of the map in parallel and return a by-value parallel + /// iterator of the key-value pairs with the result. + pub fn par_sorted_unstable_by(self, cmp: F) -> IntoParIter + where + F: Fn(&K, &V, &K, &V) -> Ordering + Sync, + { + let mut entries = self.into_entries(); + entries.par_sort_unstable_by(move |a, b| cmp(&a.key, &a.value, &b.key, &b.value)); + IntoParIter { entries } + } +} + +/// A parallel mutable iterator over the values of a `IndexMap`. +/// +/// This `struct` is created by the [`par_values_mut`] method on [`IndexMap`]. See its +/// documentation for more. +/// +/// [`par_values_mut`]: ../struct.IndexMap.html#method.par_values_mut +/// [`IndexMap`]: ../struct.IndexMap.html +pub struct ParValuesMut<'a, K, V> { + entries: &'a mut [Bucket], +} + +impl fmt::Debug for ParValuesMut<'_, K, V> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.entries.iter().map(Bucket::value_ref); + f.debug_list().entries(iter).finish() + } +} + +impl<'a, K: Send, V: Send> ParallelIterator for ParValuesMut<'a, K, V> { + type Item = &'a mut V; + + parallel_iterator_methods!(Bucket::value_mut); +} + +impl IndexedParallelIterator for ParValuesMut<'_, K, V> { + indexed_parallel_iterator_methods!(Bucket::value_mut); +} + +/// Requires crate feature `"rayon"`. +impl FromParallelIterator<(K, V)> for IndexMap +where + K: Eq + Hash + Send, + V: Send, + S: BuildHasher + Default + Send, +{ + fn from_par_iter(iter: I) -> Self + where + I: IntoParallelIterator, + { + let list = collect(iter); + let len = list.iter().map(Vec::len).sum(); + let mut map = Self::with_capacity_and_hasher(len, S::default()); + for vec in list { + map.extend(vec); + } + map + } +} + +/// Requires crate feature `"rayon"`. +impl ParallelExtend<(K, V)> for IndexMap +where + K: Eq + Hash + Send, + V: Send, + S: BuildHasher + Send, +{ + fn par_extend(&mut self, iter: I) + where + I: IntoParallelIterator, + { + for vec in collect(iter) { + self.extend(vec); + } + } +} + +/// Requires crate feature `"rayon"`. +impl<'a, K: 'a, V: 'a, S> ParallelExtend<(&'a K, &'a V)> for IndexMap +where + K: Copy + Eq + Hash + Send + Sync, + V: Copy + Send + Sync, + S: BuildHasher + Send, +{ + fn par_extend(&mut self, iter: I) + where + I: IntoParallelIterator, + { + for vec in collect(iter) { + self.extend(vec); + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use std::string::String; + + #[test] + fn insert_order() { + let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; + let mut map = IndexMap::new(); + + for &elt in &insert { + map.insert(elt, ()); + } + + assert_eq!(map.par_keys().count(), map.len()); + assert_eq!(map.par_keys().count(), insert.len()); + insert.par_iter().zip(map.par_keys()).for_each(|(a, b)| { + assert_eq!(a, b); + }); + (0..insert.len()) + .into_par_iter() + .zip(map.par_keys()) + .for_each(|(i, k)| { + assert_eq!(map.get_index(i).unwrap().0, k); + }); + } + + #[test] + fn partial_eq_and_eq() { + let mut map_a = IndexMap::new(); + map_a.insert(1, "1"); + map_a.insert(2, "2"); + let mut map_b = map_a.clone(); + assert!(map_a.par_eq(&map_b)); + map_b.swap_remove(&1); + assert!(!map_a.par_eq(&map_b)); + map_b.insert(3, "3"); + assert!(!map_a.par_eq(&map_b)); + + let map_c: IndexMap<_, String> = + map_b.into_par_iter().map(|(k, v)| (k, v.into())).collect(); + assert!(!map_a.par_eq(&map_c)); + assert!(!map_c.par_eq(&map_a)); + } + + #[test] + fn extend() { + let mut map = IndexMap::new(); + map.par_extend(vec![(&1, &2), (&3, &4)]); + map.par_extend(vec![(5, 6)]); + assert_eq!( + map.into_par_iter().collect::>(), + vec![(1, 2), (3, 4), (5, 6)] + ); + } + + #[test] + fn keys() { + let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')]; + let map: IndexMap<_, _> = vec.into_par_iter().collect(); + let keys: Vec<_> = map.par_keys().copied().collect(); + assert_eq!(keys.len(), 3); + assert!(keys.contains(&1)); + assert!(keys.contains(&2)); + assert!(keys.contains(&3)); + } + + #[test] + fn values() { + let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')]; + let map: IndexMap<_, _> = vec.into_par_iter().collect(); + let values: Vec<_> = map.par_values().copied().collect(); + assert_eq!(values.len(), 3); + assert!(values.contains(&'a')); + assert!(values.contains(&'b')); + assert!(values.contains(&'c')); + } + + #[test] + fn values_mut() { + let vec = vec![(1, 1), (2, 2), (3, 3)]; + let mut map: IndexMap<_, _> = vec.into_par_iter().collect(); + map.par_values_mut().for_each(|value| *value *= 2); + let values: Vec<_> = map.par_values().copied().collect(); + assert_eq!(values.len(), 3); + assert!(values.contains(&2)); + assert!(values.contains(&4)); + assert!(values.contains(&6)); + } +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/src/rayon/mod.rs temporalio-1.3.0/vendor/indexmap-1.9.3/src/rayon/mod.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/src/rayon/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/src/rayon/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,27 @@ +use rayon::prelude::*; + +use alloc::collections::LinkedList; + +use crate::vec::Vec; + +pub mod map; +pub mod set; + +// This form of intermediate collection is also how Rayon collects `HashMap`. +// Note that the order will also be preserved! +fn collect(iter: I) -> LinkedList> { + iter.into_par_iter() + .fold(Vec::new, |mut vec, elem| { + vec.push(elem); + vec + }) + .map(|vec| { + let mut list = LinkedList::new(); + list.push_back(vec); + list + }) + .reduce(LinkedList::new, |mut list1, mut list2| { + list1.append(&mut list2); + list1 + }) +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/src/rayon/set.rs temporalio-1.3.0/vendor/indexmap-1.9.3/src/rayon/set.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/src/rayon/set.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/src/rayon/set.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,741 @@ +//! Parallel iterator types for `IndexSet` with [rayon](https://docs.rs/rayon/1.0/rayon). +//! +//! You will rarely need to interact with this module directly unless you need to name one of the +//! iterator types. +//! +//! Requires crate feature `"rayon"`. + +use super::collect; +use rayon::iter::plumbing::{Consumer, ProducerCallback, UnindexedConsumer}; +use rayon::prelude::*; + +use crate::vec::Vec; +use core::cmp::Ordering; +use core::fmt; +use core::hash::{BuildHasher, Hash}; +use core::ops::RangeBounds; + +use crate::Entries; +use crate::IndexSet; + +type Bucket = crate::Bucket; + +/// Requires crate feature `"rayon"`. +impl IntoParallelIterator for IndexSet +where + T: Send, +{ + type Item = T; + type Iter = IntoParIter; + + fn into_par_iter(self) -> Self::Iter { + IntoParIter { + entries: self.into_entries(), + } + } +} + +/// A parallel owning iterator over the items of a `IndexSet`. +/// +/// This `struct` is created by the [`into_par_iter`] method on [`IndexSet`] +/// (provided by rayon's `IntoParallelIterator` trait). See its documentation for more. +/// +/// [`IndexSet`]: ../struct.IndexSet.html +/// [`into_par_iter`]: ../struct.IndexSet.html#method.into_par_iter +pub struct IntoParIter { + entries: Vec>, +} + +impl fmt::Debug for IntoParIter { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.entries.iter().map(Bucket::key_ref); + f.debug_list().entries(iter).finish() + } +} + +impl ParallelIterator for IntoParIter { + type Item = T; + + parallel_iterator_methods!(Bucket::key); +} + +impl IndexedParallelIterator for IntoParIter { + indexed_parallel_iterator_methods!(Bucket::key); +} + +/// Requires crate feature `"rayon"`. +impl<'a, T, S> IntoParallelIterator for &'a IndexSet +where + T: Sync, +{ + type Item = &'a T; + type Iter = ParIter<'a, T>; + + fn into_par_iter(self) -> Self::Iter { + ParIter { + entries: self.as_entries(), + } + } +} + +/// A parallel iterator over the items of a `IndexSet`. +/// +/// This `struct` is created by the [`par_iter`] method on [`IndexSet`] +/// (provided by rayon's `IntoParallelRefIterator` trait). See its documentation for more. +/// +/// [`IndexSet`]: ../struct.IndexSet.html +/// [`par_iter`]: ../struct.IndexSet.html#method.par_iter +pub struct ParIter<'a, T> { + entries: &'a [Bucket], +} + +impl Clone for ParIter<'_, T> { + fn clone(&self) -> Self { + ParIter { ..*self } + } +} + +impl fmt::Debug for ParIter<'_, T> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.entries.iter().map(Bucket::key_ref); + f.debug_list().entries(iter).finish() + } +} + +impl<'a, T: Sync> ParallelIterator for ParIter<'a, T> { + type Item = &'a T; + + parallel_iterator_methods!(Bucket::key_ref); +} + +impl IndexedParallelIterator for ParIter<'_, T> { + indexed_parallel_iterator_methods!(Bucket::key_ref); +} + +/// Requires crate feature `"rayon"`. +impl<'a, T, S> ParallelDrainRange for &'a mut IndexSet +where + T: Send, +{ + type Item = T; + type Iter = ParDrain<'a, T>; + + fn par_drain>(self, range: R) -> Self::Iter { + ParDrain { + entries: self.map.core.par_drain(range), + } + } +} + +/// A parallel draining iterator over the items of a `IndexSet`. +/// +/// This `struct` is created by the [`par_drain`] method on [`IndexSet`] +/// (provided by rayon's `ParallelDrainRange` trait). See its documentation for more. +/// +/// [`par_drain`]: ../struct.IndexSet.html#method.par_drain +/// [`IndexSet`]: ../struct.IndexSet.html +pub struct ParDrain<'a, T: Send> { + entries: rayon::vec::Drain<'a, Bucket>, +} + +impl ParallelIterator for ParDrain<'_, T> { + type Item = T; + + parallel_iterator_methods!(Bucket::key); +} + +impl IndexedParallelIterator for ParDrain<'_, T> { + indexed_parallel_iterator_methods!(Bucket::key); +} + +/// Parallel iterator methods and other parallel methods. +/// +/// The following methods **require crate feature `"rayon"`**. +/// +/// See also the `IntoParallelIterator` implementations. +impl IndexSet +where + T: Hash + Eq + Sync, + S: BuildHasher + Sync, +{ + /// Return a parallel iterator over the values that are in `self` but not `other`. + /// + /// While parallel iterators can process items in any order, their relative order + /// in the `self` set is still preserved for operations like `reduce` and `collect`. + pub fn par_difference<'a, S2>( + &'a self, + other: &'a IndexSet, + ) -> ParDifference<'a, T, S, S2> + where + S2: BuildHasher + Sync, + { + ParDifference { + set1: self, + set2: other, + } + } + + /// Return a parallel iterator over the values that are in `self` or `other`, + /// but not in both. + /// + /// While parallel iterators can process items in any order, their relative order + /// in the sets is still preserved for operations like `reduce` and `collect`. + /// Values from `self` are produced in their original order, followed by + /// values from `other` in their original order. + pub fn par_symmetric_difference<'a, S2>( + &'a self, + other: &'a IndexSet, + ) -> ParSymmetricDifference<'a, T, S, S2> + where + S2: BuildHasher + Sync, + { + ParSymmetricDifference { + set1: self, + set2: other, + } + } + + /// Return a parallel iterator over the values that are in both `self` and `other`. + /// + /// While parallel iterators can process items in any order, their relative order + /// in the `self` set is still preserved for operations like `reduce` and `collect`. + pub fn par_intersection<'a, S2>( + &'a self, + other: &'a IndexSet, + ) -> ParIntersection<'a, T, S, S2> + where + S2: BuildHasher + Sync, + { + ParIntersection { + set1: self, + set2: other, + } + } + + /// Return a parallel iterator over all values that are in `self` or `other`. + /// + /// While parallel iterators can process items in any order, their relative order + /// in the sets is still preserved for operations like `reduce` and `collect`. + /// Values from `self` are produced in their original order, followed by + /// values that are unique to `other` in their original order. + pub fn par_union<'a, S2>(&'a self, other: &'a IndexSet) -> ParUnion<'a, T, S, S2> + where + S2: BuildHasher + Sync, + { + ParUnion { + set1: self, + set2: other, + } + } + + /// Returns `true` if `self` contains all of the same values as `other`, + /// regardless of each set's indexed order, determined in parallel. + pub fn par_eq(&self, other: &IndexSet) -> bool + where + S2: BuildHasher + Sync, + { + self.len() == other.len() && self.par_is_subset(other) + } + + /// Returns `true` if `self` has no elements in common with `other`, + /// determined in parallel. + pub fn par_is_disjoint(&self, other: &IndexSet) -> bool + where + S2: BuildHasher + Sync, + { + if self.len() <= other.len() { + self.par_iter().all(move |value| !other.contains(value)) + } else { + other.par_iter().all(move |value| !self.contains(value)) + } + } + + /// Returns `true` if all elements of `other` are contained in `self`, + /// determined in parallel. + pub fn par_is_superset(&self, other: &IndexSet) -> bool + where + S2: BuildHasher + Sync, + { + other.par_is_subset(self) + } + + /// Returns `true` if all elements of `self` are contained in `other`, + /// determined in parallel. + pub fn par_is_subset(&self, other: &IndexSet) -> bool + where + S2: BuildHasher + Sync, + { + self.len() <= other.len() && self.par_iter().all(move |value| other.contains(value)) + } +} + +/// A parallel iterator producing elements in the difference of `IndexSet`s. +/// +/// This `struct` is created by the [`par_difference`] method on [`IndexSet`]. +/// See its documentation for more. +/// +/// [`IndexSet`]: ../struct.IndexSet.html +/// [`par_difference`]: ../struct.IndexSet.html#method.par_difference +pub struct ParDifference<'a, T, S1, S2> { + set1: &'a IndexSet, + set2: &'a IndexSet, +} + +impl Clone for ParDifference<'_, T, S1, S2> { + fn clone(&self) -> Self { + ParDifference { ..*self } + } +} + +impl fmt::Debug for ParDifference<'_, T, S1, S2> +where + T: fmt::Debug + Eq + Hash, + S1: BuildHasher, + S2: BuildHasher, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list() + .entries(self.set1.difference(self.set2)) + .finish() + } +} + +impl<'a, T, S1, S2> ParallelIterator for ParDifference<'a, T, S1, S2> +where + T: Hash + Eq + Sync, + S1: BuildHasher + Sync, + S2: BuildHasher + Sync, +{ + type Item = &'a T; + + fn drive_unindexed(self, consumer: C) -> C::Result + where + C: UnindexedConsumer, + { + let Self { set1, set2 } = self; + + set1.par_iter() + .filter(move |&item| !set2.contains(item)) + .drive_unindexed(consumer) + } +} + +/// A parallel iterator producing elements in the intersection of `IndexSet`s. +/// +/// This `struct` is created by the [`par_intersection`] method on [`IndexSet`]. +/// See its documentation for more. +/// +/// [`IndexSet`]: ../struct.IndexSet.html +/// [`par_intersection`]: ../struct.IndexSet.html#method.par_intersection +pub struct ParIntersection<'a, T, S1, S2> { + set1: &'a IndexSet, + set2: &'a IndexSet, +} + +impl Clone for ParIntersection<'_, T, S1, S2> { + fn clone(&self) -> Self { + ParIntersection { ..*self } + } +} + +impl fmt::Debug for ParIntersection<'_, T, S1, S2> +where + T: fmt::Debug + Eq + Hash, + S1: BuildHasher, + S2: BuildHasher, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list() + .entries(self.set1.intersection(self.set2)) + .finish() + } +} + +impl<'a, T, S1, S2> ParallelIterator for ParIntersection<'a, T, S1, S2> +where + T: Hash + Eq + Sync, + S1: BuildHasher + Sync, + S2: BuildHasher + Sync, +{ + type Item = &'a T; + + fn drive_unindexed(self, consumer: C) -> C::Result + where + C: UnindexedConsumer, + { + let Self { set1, set2 } = self; + + set1.par_iter() + .filter(move |&item| set2.contains(item)) + .drive_unindexed(consumer) + } +} + +/// A parallel iterator producing elements in the symmetric difference of `IndexSet`s. +/// +/// This `struct` is created by the [`par_symmetric_difference`] method on +/// [`IndexSet`]. See its documentation for more. +/// +/// [`IndexSet`]: ../struct.IndexSet.html +/// [`par_symmetric_difference`]: ../struct.IndexSet.html#method.par_symmetric_difference +pub struct ParSymmetricDifference<'a, T, S1, S2> { + set1: &'a IndexSet, + set2: &'a IndexSet, +} + +impl Clone for ParSymmetricDifference<'_, T, S1, S2> { + fn clone(&self) -> Self { + ParSymmetricDifference { ..*self } + } +} + +impl fmt::Debug for ParSymmetricDifference<'_, T, S1, S2> +where + T: fmt::Debug + Eq + Hash, + S1: BuildHasher, + S2: BuildHasher, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list() + .entries(self.set1.symmetric_difference(self.set2)) + .finish() + } +} + +impl<'a, T, S1, S2> ParallelIterator for ParSymmetricDifference<'a, T, S1, S2> +where + T: Hash + Eq + Sync, + S1: BuildHasher + Sync, + S2: BuildHasher + Sync, +{ + type Item = &'a T; + + fn drive_unindexed(self, consumer: C) -> C::Result + where + C: UnindexedConsumer, + { + let Self { set1, set2 } = self; + + set1.par_difference(set2) + .chain(set2.par_difference(set1)) + .drive_unindexed(consumer) + } +} + +/// A parallel iterator producing elements in the union of `IndexSet`s. +/// +/// This `struct` is created by the [`par_union`] method on [`IndexSet`]. +/// See its documentation for more. +/// +/// [`IndexSet`]: ../struct.IndexSet.html +/// [`par_union`]: ../struct.IndexSet.html#method.par_union +pub struct ParUnion<'a, T, S1, S2> { + set1: &'a IndexSet, + set2: &'a IndexSet, +} + +impl Clone for ParUnion<'_, T, S1, S2> { + fn clone(&self) -> Self { + ParUnion { ..*self } + } +} + +impl fmt::Debug for ParUnion<'_, T, S1, S2> +where + T: fmt::Debug + Eq + Hash, + S1: BuildHasher, + S2: BuildHasher, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self.set1.union(self.set2)).finish() + } +} + +impl<'a, T, S1, S2> ParallelIterator for ParUnion<'a, T, S1, S2> +where + T: Hash + Eq + Sync, + S1: BuildHasher + Sync, + S2: BuildHasher + Sync, +{ + type Item = &'a T; + + fn drive_unindexed(self, consumer: C) -> C::Result + where + C: UnindexedConsumer, + { + let Self { set1, set2 } = self; + + set1.par_iter() + .chain(set2.par_difference(set1)) + .drive_unindexed(consumer) + } +} + +/// Parallel sorting methods. +/// +/// The following methods **require crate feature `"rayon"`**. +impl IndexSet +where + T: Hash + Eq + Send, + S: BuildHasher + Send, +{ + /// Sort the set’s values in parallel by their default ordering. + pub fn par_sort(&mut self) + where + T: Ord, + { + self.with_entries(|entries| { + entries.par_sort_by(|a, b| T::cmp(&a.key, &b.key)); + }); + } + + /// Sort the set’s values in place and in parallel, using the comparison function `cmp`. + pub fn par_sort_by(&mut self, cmp: F) + where + F: Fn(&T, &T) -> Ordering + Sync, + { + self.with_entries(|entries| { + entries.par_sort_by(move |a, b| cmp(&a.key, &b.key)); + }); + } + + /// Sort the values of the set in parallel and return a by-value parallel iterator of + /// the values with the result. + pub fn par_sorted_by(self, cmp: F) -> IntoParIter + where + F: Fn(&T, &T) -> Ordering + Sync, + { + let mut entries = self.into_entries(); + entries.par_sort_by(move |a, b| cmp(&a.key, &b.key)); + IntoParIter { entries } + } + + /// Sort the set's values in parallel by their default ordering. + pub fn par_sort_unstable(&mut self) + where + T: Ord, + { + self.with_entries(|entries| { + entries.par_sort_unstable_by(|a, b| T::cmp(&a.key, &b.key)); + }); + } + + /// Sort the set’s values in place and in parallel, using the comparison function `cmp`. + pub fn par_sort_unstable_by(&mut self, cmp: F) + where + F: Fn(&T, &T) -> Ordering + Sync, + { + self.with_entries(|entries| { + entries.par_sort_unstable_by(move |a, b| cmp(&a.key, &b.key)); + }); + } + + /// Sort the values of the set in parallel and return a by-value parallel iterator of + /// the values with the result. + pub fn par_sorted_unstable_by(self, cmp: F) -> IntoParIter + where + F: Fn(&T, &T) -> Ordering + Sync, + { + let mut entries = self.into_entries(); + entries.par_sort_unstable_by(move |a, b| cmp(&a.key, &b.key)); + IntoParIter { entries } + } +} + +/// Requires crate feature `"rayon"`. +impl FromParallelIterator for IndexSet +where + T: Eq + Hash + Send, + S: BuildHasher + Default + Send, +{ + fn from_par_iter(iter: I) -> Self + where + I: IntoParallelIterator, + { + let list = collect(iter); + let len = list.iter().map(Vec::len).sum(); + let mut set = Self::with_capacity_and_hasher(len, S::default()); + for vec in list { + set.extend(vec); + } + set + } +} + +/// Requires crate feature `"rayon"`. +impl ParallelExtend for IndexSet +where + T: Eq + Hash + Send, + S: BuildHasher + Send, +{ + fn par_extend(&mut self, iter: I) + where + I: IntoParallelIterator, + { + for vec in collect(iter) { + self.extend(vec); + } + } +} + +/// Requires crate feature `"rayon"`. +impl<'a, T: 'a, S> ParallelExtend<&'a T> for IndexSet +where + T: Copy + Eq + Hash + Send + Sync, + S: BuildHasher + Send, +{ + fn par_extend(&mut self, iter: I) + where + I: IntoParallelIterator, + { + for vec in collect(iter) { + self.extend(vec); + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn insert_order() { + let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; + let mut set = IndexSet::new(); + + for &elt in &insert { + set.insert(elt); + } + + assert_eq!(set.par_iter().count(), set.len()); + assert_eq!(set.par_iter().count(), insert.len()); + insert.par_iter().zip(&set).for_each(|(a, b)| { + assert_eq!(a, b); + }); + (0..insert.len()) + .into_par_iter() + .zip(&set) + .for_each(|(i, v)| { + assert_eq!(set.get_index(i).unwrap(), v); + }); + } + + #[test] + fn partial_eq_and_eq() { + let mut set_a = IndexSet::new(); + set_a.insert(1); + set_a.insert(2); + let mut set_b = set_a.clone(); + assert!(set_a.par_eq(&set_b)); + set_b.swap_remove(&1); + assert!(!set_a.par_eq(&set_b)); + set_b.insert(3); + assert!(!set_a.par_eq(&set_b)); + + let set_c: IndexSet<_> = set_b.into_par_iter().collect(); + assert!(!set_a.par_eq(&set_c)); + assert!(!set_c.par_eq(&set_a)); + } + + #[test] + fn extend() { + let mut set = IndexSet::new(); + set.par_extend(vec![&1, &2, &3, &4]); + set.par_extend(vec![5, 6]); + assert_eq!( + set.into_par_iter().collect::>(), + vec![1, 2, 3, 4, 5, 6] + ); + } + + #[test] + fn comparisons() { + let set_a: IndexSet<_> = (0..3).collect(); + let set_b: IndexSet<_> = (3..6).collect(); + let set_c: IndexSet<_> = (0..6).collect(); + let set_d: IndexSet<_> = (3..9).collect(); + + assert!(!set_a.par_is_disjoint(&set_a)); + assert!(set_a.par_is_subset(&set_a)); + assert!(set_a.par_is_superset(&set_a)); + + assert!(set_a.par_is_disjoint(&set_b)); + assert!(set_b.par_is_disjoint(&set_a)); + assert!(!set_a.par_is_subset(&set_b)); + assert!(!set_b.par_is_subset(&set_a)); + assert!(!set_a.par_is_superset(&set_b)); + assert!(!set_b.par_is_superset(&set_a)); + + assert!(!set_a.par_is_disjoint(&set_c)); + assert!(!set_c.par_is_disjoint(&set_a)); + assert!(set_a.par_is_subset(&set_c)); + assert!(!set_c.par_is_subset(&set_a)); + assert!(!set_a.par_is_superset(&set_c)); + assert!(set_c.par_is_superset(&set_a)); + + assert!(!set_c.par_is_disjoint(&set_d)); + assert!(!set_d.par_is_disjoint(&set_c)); + assert!(!set_c.par_is_subset(&set_d)); + assert!(!set_d.par_is_subset(&set_c)); + assert!(!set_c.par_is_superset(&set_d)); + assert!(!set_d.par_is_superset(&set_c)); + } + + #[test] + fn iter_comparisons() { + use std::iter::empty; + + fn check<'a, I1, I2>(iter1: I1, iter2: I2) + where + I1: ParallelIterator, + I2: Iterator, + { + let v1: Vec<_> = iter1.copied().collect(); + let v2: Vec<_> = iter2.collect(); + assert_eq!(v1, v2); + } + + let set_a: IndexSet<_> = (0..3).collect(); + let set_b: IndexSet<_> = (3..6).collect(); + let set_c: IndexSet<_> = (0..6).collect(); + let set_d: IndexSet<_> = (3..9).rev().collect(); + + check(set_a.par_difference(&set_a), empty()); + check(set_a.par_symmetric_difference(&set_a), empty()); + check(set_a.par_intersection(&set_a), 0..3); + check(set_a.par_union(&set_a), 0..3); + + check(set_a.par_difference(&set_b), 0..3); + check(set_b.par_difference(&set_a), 3..6); + check(set_a.par_symmetric_difference(&set_b), 0..6); + check(set_b.par_symmetric_difference(&set_a), (3..6).chain(0..3)); + check(set_a.par_intersection(&set_b), empty()); + check(set_b.par_intersection(&set_a), empty()); + check(set_a.par_union(&set_b), 0..6); + check(set_b.par_union(&set_a), (3..6).chain(0..3)); + + check(set_a.par_difference(&set_c), empty()); + check(set_c.par_difference(&set_a), 3..6); + check(set_a.par_symmetric_difference(&set_c), 3..6); + check(set_c.par_symmetric_difference(&set_a), 3..6); + check(set_a.par_intersection(&set_c), 0..3); + check(set_c.par_intersection(&set_a), 0..3); + check(set_a.par_union(&set_c), 0..6); + check(set_c.par_union(&set_a), 0..6); + + check(set_c.par_difference(&set_d), 0..3); + check(set_d.par_difference(&set_c), (6..9).rev()); + check( + set_c.par_symmetric_difference(&set_d), + (0..3).chain((6..9).rev()), + ); + check( + set_d.par_symmetric_difference(&set_c), + (6..9).rev().chain(0..3), + ); + check(set_c.par_intersection(&set_d), 3..6); + check(set_d.par_intersection(&set_c), (3..6).rev()); + check(set_c.par_union(&set_d), (0..6).chain((6..9).rev())); + check(set_d.par_union(&set_c), (3..9).rev().chain(0..3)); + } +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/src/rustc.rs temporalio-1.3.0/vendor/indexmap-1.9.3/src/rustc.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/src/rustc.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/src/rustc.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,158 @@ +//! Minimal support for `rustc-rayon`, not intended for general use. + +use crate::vec::Vec; +use crate::{Bucket, Entries, IndexMap, IndexSet}; + +use rustc_rayon::iter::plumbing::{Consumer, ProducerCallback, UnindexedConsumer}; +use rustc_rayon::iter::{IndexedParallelIterator, IntoParallelIterator, ParallelIterator}; + +mod map { + use super::*; + + impl IntoParallelIterator for IndexMap + where + K: Send, + V: Send, + { + type Item = (K, V); + type Iter = IntoParIter; + + fn into_par_iter(self) -> Self::Iter { + IntoParIter { + entries: self.into_entries(), + } + } + } + + pub struct IntoParIter { + entries: Vec>, + } + + impl ParallelIterator for IntoParIter { + type Item = (K, V); + + parallel_iterator_methods!(Bucket::key_value); + } + + impl IndexedParallelIterator for IntoParIter { + indexed_parallel_iterator_methods!(Bucket::key_value); + } + + impl<'a, K, V, S> IntoParallelIterator for &'a IndexMap + where + K: Sync, + V: Sync, + { + type Item = (&'a K, &'a V); + type Iter = ParIter<'a, K, V>; + + fn into_par_iter(self) -> Self::Iter { + ParIter { + entries: self.as_entries(), + } + } + } + + pub struct ParIter<'a, K, V> { + entries: &'a [Bucket], + } + + impl<'a, K: Sync, V: Sync> ParallelIterator for ParIter<'a, K, V> { + type Item = (&'a K, &'a V); + + parallel_iterator_methods!(Bucket::refs); + } + + impl IndexedParallelIterator for ParIter<'_, K, V> { + indexed_parallel_iterator_methods!(Bucket::refs); + } + + impl<'a, K, V, S> IntoParallelIterator for &'a mut IndexMap + where + K: Sync + Send, + V: Send, + { + type Item = (&'a K, &'a mut V); + type Iter = ParIterMut<'a, K, V>; + + fn into_par_iter(self) -> Self::Iter { + ParIterMut { + entries: self.as_entries_mut(), + } + } + } + + pub struct ParIterMut<'a, K, V> { + entries: &'a mut [Bucket], + } + + impl<'a, K: Sync + Send, V: Send> ParallelIterator for ParIterMut<'a, K, V> { + type Item = (&'a K, &'a mut V); + + parallel_iterator_methods!(Bucket::ref_mut); + } + + impl IndexedParallelIterator for ParIterMut<'_, K, V> { + indexed_parallel_iterator_methods!(Bucket::ref_mut); + } +} + +mod set { + use super::*; + + impl IntoParallelIterator for IndexSet + where + T: Send, + { + type Item = T; + type Iter = IntoParIter; + + fn into_par_iter(self) -> Self::Iter { + IntoParIter { + entries: self.into_entries(), + } + } + } + + pub struct IntoParIter { + entries: Vec>, + } + + impl ParallelIterator for IntoParIter { + type Item = T; + + parallel_iterator_methods!(Bucket::key); + } + + impl IndexedParallelIterator for IntoParIter { + indexed_parallel_iterator_methods!(Bucket::key); + } + + impl<'a, T, S> IntoParallelIterator for &'a IndexSet + where + T: Sync, + { + type Item = &'a T; + type Iter = ParIter<'a, T>; + + fn into_par_iter(self) -> Self::Iter { + ParIter { + entries: self.as_entries(), + } + } + } + + pub struct ParIter<'a, T> { + entries: &'a [Bucket], + } + + impl<'a, T: Sync> ParallelIterator for ParIter<'a, T> { + type Item = &'a T; + + parallel_iterator_methods!(Bucket::key_ref); + } + + impl IndexedParallelIterator for ParIter<'_, T> { + indexed_parallel_iterator_methods!(Bucket::key_ref); + } +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/src/serde.rs temporalio-1.3.0/vendor/indexmap-1.9.3/src/serde.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/src/serde.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/src/serde.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,155 @@ +use serde::de::value::{MapDeserializer, SeqDeserializer}; +use serde::de::{ + Deserialize, Deserializer, Error, IntoDeserializer, MapAccess, SeqAccess, Visitor, +}; +use serde::ser::{Serialize, Serializer}; + +use core::fmt::{self, Formatter}; +use core::hash::{BuildHasher, Hash}; +use core::marker::PhantomData; + +use crate::IndexMap; + +/// Requires crate feature `"serde"` or `"serde-1"` +impl Serialize for IndexMap +where + K: Serialize + Hash + Eq, + V: Serialize, + S: BuildHasher, +{ + fn serialize(&self, serializer: T) -> Result + where + T: Serializer, + { + serializer.collect_map(self) + } +} + +struct IndexMapVisitor(PhantomData<(K, V, S)>); + +impl<'de, K, V, S> Visitor<'de> for IndexMapVisitor +where + K: Deserialize<'de> + Eq + Hash, + V: Deserialize<'de>, + S: Default + BuildHasher, +{ + type Value = IndexMap; + + fn expecting(&self, formatter: &mut Formatter<'_>) -> fmt::Result { + write!(formatter, "a map") + } + + fn visit_map(self, mut map: A) -> Result + where + A: MapAccess<'de>, + { + let mut values = + IndexMap::with_capacity_and_hasher(map.size_hint().unwrap_or(0), S::default()); + + while let Some((key, value)) = map.next_entry()? { + values.insert(key, value); + } + + Ok(values) + } +} + +/// Requires crate feature `"serde"` or `"serde-1"` +impl<'de, K, V, S> Deserialize<'de> for IndexMap +where + K: Deserialize<'de> + Eq + Hash, + V: Deserialize<'de>, + S: Default + BuildHasher, +{ + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + deserializer.deserialize_map(IndexMapVisitor(PhantomData)) + } +} + +impl<'de, K, V, S, E> IntoDeserializer<'de, E> for IndexMap +where + K: IntoDeserializer<'de, E> + Eq + Hash, + V: IntoDeserializer<'de, E>, + S: BuildHasher, + E: Error, +{ + type Deserializer = MapDeserializer<'de, ::IntoIter, E>; + + fn into_deserializer(self) -> Self::Deserializer { + MapDeserializer::new(self.into_iter()) + } +} + +use crate::IndexSet; + +/// Requires crate feature `"serde"` or `"serde-1"` +impl Serialize for IndexSet +where + T: Serialize + Hash + Eq, + S: BuildHasher, +{ + fn serialize(&self, serializer: Se) -> Result + where + Se: Serializer, + { + serializer.collect_seq(self) + } +} + +struct IndexSetVisitor(PhantomData<(T, S)>); + +impl<'de, T, S> Visitor<'de> for IndexSetVisitor +where + T: Deserialize<'de> + Eq + Hash, + S: Default + BuildHasher, +{ + type Value = IndexSet; + + fn expecting(&self, formatter: &mut Formatter<'_>) -> fmt::Result { + write!(formatter, "a set") + } + + fn visit_seq(self, mut seq: A) -> Result + where + A: SeqAccess<'de>, + { + let mut values = + IndexSet::with_capacity_and_hasher(seq.size_hint().unwrap_or(0), S::default()); + + while let Some(value) = seq.next_element()? { + values.insert(value); + } + + Ok(values) + } +} + +/// Requires crate feature `"serde"` or `"serde-1"` +impl<'de, T, S> Deserialize<'de> for IndexSet +where + T: Deserialize<'de> + Eq + Hash, + S: Default + BuildHasher, +{ + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + deserializer.deserialize_seq(IndexSetVisitor(PhantomData)) + } +} + +impl<'de, T, S, E> IntoDeserializer<'de, E> for IndexSet +where + T: IntoDeserializer<'de, E> + Eq + Hash, + S: BuildHasher, + E: Error, +{ + type Deserializer = SeqDeserializer<::IntoIter, E>; + + fn into_deserializer(self) -> Self::Deserializer { + SeqDeserializer::new(self.into_iter()) + } +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/src/serde_seq.rs temporalio-1.3.0/vendor/indexmap-1.9.3/src/serde_seq.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/src/serde_seq.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/src/serde_seq.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,112 @@ +//! Functions to serialize and deserialize an `IndexMap` as an ordered sequence. +//! +//! The default `serde` implementation serializes `IndexMap` as a normal map, +//! but there is no guarantee that serialization formats will preserve the order +//! of the key-value pairs. This module serializes `IndexMap` as a sequence of +//! `(key, value)` elements instead, in order. +//! +//! This module may be used in a field attribute for derived implementations: +//! +//! ``` +//! # use indexmap::IndexMap; +//! # use serde_derive::{Deserialize, Serialize}; +//! #[derive(Deserialize, Serialize)] +//! struct Data { +//! #[serde(with = "indexmap::serde_seq")] +//! map: IndexMap, +//! // ... +//! } +//! ``` +//! +//! Requires crate feature `"serde"` or `"serde-1"` + +use serde::de::{Deserialize, Deserializer, SeqAccess, Visitor}; +use serde::ser::{Serialize, Serializer}; + +use core::fmt::{self, Formatter}; +use core::hash::{BuildHasher, Hash}; +use core::marker::PhantomData; + +use crate::IndexMap; + +/// Serializes an `IndexMap` as an ordered sequence. +/// +/// This function may be used in a field attribute for deriving `Serialize`: +/// +/// ``` +/// # use indexmap::IndexMap; +/// # use serde_derive::Serialize; +/// #[derive(Serialize)] +/// struct Data { +/// #[serde(serialize_with = "indexmap::serde_seq::serialize")] +/// map: IndexMap, +/// // ... +/// } +/// ``` +/// +/// Requires crate feature `"serde"` or `"serde-1"` +pub fn serialize(map: &IndexMap, serializer: T) -> Result +where + K: Serialize + Hash + Eq, + V: Serialize, + S: BuildHasher, + T: Serializer, +{ + serializer.collect_seq(map) +} + +/// Visitor to deserialize a *sequenced* `IndexMap` +struct SeqVisitor(PhantomData<(K, V, S)>); + +impl<'de, K, V, S> Visitor<'de> for SeqVisitor +where + K: Deserialize<'de> + Eq + Hash, + V: Deserialize<'de>, + S: Default + BuildHasher, +{ + type Value = IndexMap; + + fn expecting(&self, formatter: &mut Formatter<'_>) -> fmt::Result { + write!(formatter, "a sequenced map") + } + + fn visit_seq(self, mut seq: A) -> Result + where + A: SeqAccess<'de>, + { + let capacity = seq.size_hint().unwrap_or(0); + let mut map = IndexMap::with_capacity_and_hasher(capacity, S::default()); + + while let Some((key, value)) = seq.next_element()? { + map.insert(key, value); + } + + Ok(map) + } +} + +/// Deserializes an `IndexMap` from an ordered sequence. +/// +/// This function may be used in a field attribute for deriving `Deserialize`: +/// +/// ``` +/// # use indexmap::IndexMap; +/// # use serde_derive::Deserialize; +/// #[derive(Deserialize)] +/// struct Data { +/// #[serde(deserialize_with = "indexmap::serde_seq::deserialize")] +/// map: IndexMap, +/// // ... +/// } +/// ``` +/// +/// Requires crate feature `"serde"` or `"serde-1"` +pub fn deserialize<'de, D, K, V, S>(deserializer: D) -> Result, D::Error> +where + D: Deserializer<'de>, + K: Deserialize<'de> + Eq + Hash, + V: Deserialize<'de>, + S: Default + BuildHasher, +{ + deserializer.deserialize_seq(SeqVisitor(PhantomData)) +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/src/set.rs temporalio-1.3.0/vendor/indexmap-1.9.3/src/set.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/src/set.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/src/set.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1912 @@ +//! A hash set implemented using `IndexMap` + +#[cfg(feature = "rayon")] +pub use crate::rayon::set as rayon; + +#[cfg(has_std)] +use std::collections::hash_map::RandomState; + +use crate::vec::{self, Vec}; +use core::cmp::Ordering; +use core::fmt; +use core::hash::{BuildHasher, Hash}; +use core::iter::{Chain, FusedIterator}; +use core::ops::{BitAnd, BitOr, BitXor, Index, RangeBounds, Sub}; +use core::slice; + +use super::{Entries, Equivalent, IndexMap}; + +type Bucket = super::Bucket; + +/// A hash set where the iteration order of the values is independent of their +/// hash values. +/// +/// The interface is closely compatible with the standard `HashSet`, but also +/// has additional features. +/// +/// # Order +/// +/// The values have a consistent order that is determined by the sequence of +/// insertion and removal calls on the set. The order does not depend on the +/// values or the hash function at all. Note that insertion order and value +/// are not affected if a re-insertion is attempted once an element is +/// already present. +/// +/// All iterators traverse the set *in order*. Set operation iterators like +/// `union` produce a concatenated order, as do their matching "bitwise" +/// operators. See their documentation for specifics. +/// +/// The insertion order is preserved, with **notable exceptions** like the +/// `.remove()` or `.swap_remove()` methods. Methods such as `.sort_by()` of +/// course result in a new order, depending on the sorting order. +/// +/// # Indices +/// +/// The values are indexed in a compact range without holes in the range +/// `0..self.len()`. For example, the method `.get_full` looks up the index for +/// a value, and the method `.get_index` looks up the value by index. +/// +/// # Examples +/// +/// ``` +/// use indexmap::IndexSet; +/// +/// // Collects which letters appear in a sentence. +/// let letters: IndexSet<_> = "a short treatise on fungi".chars().collect(); +/// +/// assert!(letters.contains(&'s')); +/// assert!(letters.contains(&'t')); +/// assert!(letters.contains(&'u')); +/// assert!(!letters.contains(&'y')); +/// ``` +#[cfg(has_std)] +pub struct IndexSet { + pub(crate) map: IndexMap, +} +#[cfg(not(has_std))] +pub struct IndexSet { + pub(crate) map: IndexMap, +} + +impl Clone for IndexSet +where + T: Clone, + S: Clone, +{ + fn clone(&self) -> Self { + IndexSet { + map: self.map.clone(), + } + } + + fn clone_from(&mut self, other: &Self) { + self.map.clone_from(&other.map); + } +} + +impl Entries for IndexSet { + type Entry = Bucket; + + #[inline] + fn into_entries(self) -> Vec { + self.map.into_entries() + } + + #[inline] + fn as_entries(&self) -> &[Self::Entry] { + self.map.as_entries() + } + + #[inline] + fn as_entries_mut(&mut self) -> &mut [Self::Entry] { + self.map.as_entries_mut() + } + + fn with_entries(&mut self, f: F) + where + F: FnOnce(&mut [Self::Entry]), + { + self.map.with_entries(f); + } +} + +impl fmt::Debug for IndexSet +where + T: fmt::Debug, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + if cfg!(not(feature = "test_debug")) { + f.debug_set().entries(self.iter()).finish() + } else { + // Let the inner `IndexMap` print all of its details + f.debug_struct("IndexSet").field("map", &self.map).finish() + } + } +} + +#[cfg(has_std)] +impl IndexSet { + /// Create a new set. (Does not allocate.) + pub fn new() -> Self { + IndexSet { + map: IndexMap::new(), + } + } + + /// Create a new set with capacity for `n` elements. + /// (Does not allocate if `n` is zero.) + /// + /// Computes in **O(n)** time. + pub fn with_capacity(n: usize) -> Self { + IndexSet { + map: IndexMap::with_capacity(n), + } + } +} + +impl IndexSet { + /// Create a new set with capacity for `n` elements. + /// (Does not allocate if `n` is zero.) + /// + /// Computes in **O(n)** time. + pub fn with_capacity_and_hasher(n: usize, hash_builder: S) -> Self { + IndexSet { + map: IndexMap::with_capacity_and_hasher(n, hash_builder), + } + } + + /// Create a new set with `hash_builder`. + /// + /// This function is `const`, so it + /// can be called in `static` contexts. + pub const fn with_hasher(hash_builder: S) -> Self { + IndexSet { + map: IndexMap::with_hasher(hash_builder), + } + } + + /// Computes in **O(1)** time. + pub fn capacity(&self) -> usize { + self.map.capacity() + } + + /// Return a reference to the set's `BuildHasher`. + pub fn hasher(&self) -> &S { + self.map.hasher() + } + + /// Return the number of elements in the set. + /// + /// Computes in **O(1)** time. + pub fn len(&self) -> usize { + self.map.len() + } + + /// Returns true if the set contains no elements. + /// + /// Computes in **O(1)** time. + pub fn is_empty(&self) -> bool { + self.map.is_empty() + } + + /// Return an iterator over the values of the set, in their order + pub fn iter(&self) -> Iter<'_, T> { + Iter { + iter: self.map.as_entries().iter(), + } + } + + /// Remove all elements in the set, while preserving its capacity. + /// + /// Computes in **O(n)** time. + pub fn clear(&mut self) { + self.map.clear(); + } + + /// Shortens the set, keeping the first `len` elements and dropping the rest. + /// + /// If `len` is greater than the set's current length, this has no effect. + pub fn truncate(&mut self, len: usize) { + self.map.truncate(len); + } + + /// Clears the `IndexSet` in the given index range, returning those values + /// as a drain iterator. + /// + /// The range may be any type that implements `RangeBounds`, + /// including all of the `std::ops::Range*` types, or even a tuple pair of + /// `Bound` start and end values. To drain the set entirely, use `RangeFull` + /// like `set.drain(..)`. + /// + /// This shifts down all entries following the drained range to fill the + /// gap, and keeps the allocated memory for reuse. + /// + /// ***Panics*** if the starting point is greater than the end point or if + /// the end point is greater than the length of the set. + pub fn drain(&mut self, range: R) -> Drain<'_, T> + where + R: RangeBounds, + { + Drain { + iter: self.map.drain(range).iter, + } + } + + /// Splits the collection into two at the given index. + /// + /// Returns a newly allocated set containing the elements in the range + /// `[at, len)`. After the call, the original set will be left containing + /// the elements `[0, at)` with its previous capacity unchanged. + /// + /// ***Panics*** if `at > len`. + pub fn split_off(&mut self, at: usize) -> Self + where + S: Clone, + { + Self { + map: self.map.split_off(at), + } + } +} + +impl IndexSet +where + T: Hash + Eq, + S: BuildHasher, +{ + /// Reserve capacity for `additional` more values. + /// + /// Computes in **O(n)** time. + pub fn reserve(&mut self, additional: usize) { + self.map.reserve(additional); + } + + /// Shrink the capacity of the set as much as possible. + /// + /// Computes in **O(n)** time. + pub fn shrink_to_fit(&mut self) { + self.map.shrink_to_fit(); + } + + /// Shrink the capacity of the set with a lower limit. + /// + /// Computes in **O(n)** time. + pub fn shrink_to(&mut self, min_capacity: usize) { + self.map.shrink_to(min_capacity); + } + + /// Insert the value into the set. + /// + /// If an equivalent item already exists in the set, it returns + /// `false` leaving the original value in the set and without + /// altering its insertion order. Otherwise, it inserts the new + /// item and returns `true`. + /// + /// Computes in **O(1)** time (amortized average). + pub fn insert(&mut self, value: T) -> bool { + self.map.insert(value, ()).is_none() + } + + /// Insert the value into the set, and get its index. + /// + /// If an equivalent item already exists in the set, it returns + /// the index of the existing item and `false`, leaving the + /// original value in the set and without altering its insertion + /// order. Otherwise, it inserts the new item and returns the index + /// of the inserted item and `true`. + /// + /// Computes in **O(1)** time (amortized average). + pub fn insert_full(&mut self, value: T) -> (usize, bool) { + use super::map::Entry::*; + + match self.map.entry(value) { + Occupied(e) => (e.index(), false), + Vacant(e) => { + let index = e.index(); + e.insert(()); + (index, true) + } + } + } + + /// Return an iterator over the values that are in `self` but not `other`. + /// + /// Values are produced in the same order that they appear in `self`. + pub fn difference<'a, S2>(&'a self, other: &'a IndexSet) -> Difference<'a, T, S2> + where + S2: BuildHasher, + { + Difference { + iter: self.iter(), + other, + } + } + + /// Return an iterator over the values that are in `self` or `other`, + /// but not in both. + /// + /// Values from `self` are produced in their original order, followed by + /// values from `other` in their original order. + pub fn symmetric_difference<'a, S2>( + &'a self, + other: &'a IndexSet, + ) -> SymmetricDifference<'a, T, S, S2> + where + S2: BuildHasher, + { + SymmetricDifference { + iter: self.difference(other).chain(other.difference(self)), + } + } + + /// Return an iterator over the values that are in both `self` and `other`. + /// + /// Values are produced in the same order that they appear in `self`. + pub fn intersection<'a, S2>(&'a self, other: &'a IndexSet) -> Intersection<'a, T, S2> + where + S2: BuildHasher, + { + Intersection { + iter: self.iter(), + other, + } + } + + /// Return an iterator over all values that are in `self` or `other`. + /// + /// Values from `self` are produced in their original order, followed by + /// values that are unique to `other` in their original order. + pub fn union<'a, S2>(&'a self, other: &'a IndexSet) -> Union<'a, T, S> + where + S2: BuildHasher, + { + Union { + iter: self.iter().chain(other.difference(self)), + } + } + + /// Return `true` if an equivalent to `value` exists in the set. + /// + /// Computes in **O(1)** time (average). + pub fn contains(&self, value: &Q) -> bool + where + Q: Hash + Equivalent, + { + self.map.contains_key(value) + } + + /// Return a reference to the value stored in the set, if it is present, + /// else `None`. + /// + /// Computes in **O(1)** time (average). + pub fn get(&self, value: &Q) -> Option<&T> + where + Q: Hash + Equivalent, + { + self.map.get_key_value(value).map(|(x, &())| x) + } + + /// Return item index and value + pub fn get_full(&self, value: &Q) -> Option<(usize, &T)> + where + Q: Hash + Equivalent, + { + self.map.get_full(value).map(|(i, x, &())| (i, x)) + } + + /// Return item index, if it exists in the set + pub fn get_index_of(&self, value: &Q) -> Option + where + Q: Hash + Equivalent, + { + self.map.get_index_of(value) + } + + /// Adds a value to the set, replacing the existing value, if any, that is + /// equal to the given one, without altering its insertion order. Returns + /// the replaced value. + /// + /// Computes in **O(1)** time (average). + pub fn replace(&mut self, value: T) -> Option { + self.replace_full(value).1 + } + + /// Adds a value to the set, replacing the existing value, if any, that is + /// equal to the given one, without altering its insertion order. Returns + /// the index of the item and its replaced value. + /// + /// Computes in **O(1)** time (average). + pub fn replace_full(&mut self, value: T) -> (usize, Option) { + use super::map::Entry::*; + + match self.map.entry(value) { + Vacant(e) => { + let index = e.index(); + e.insert(()); + (index, None) + } + Occupied(e) => (e.index(), Some(e.replace_key())), + } + } + + /// Remove the value from the set, and return `true` if it was present. + /// + /// **NOTE:** This is equivalent to `.swap_remove(value)`, if you want + /// to preserve the order of the values in the set, use `.shift_remove(value)`. + /// + /// Computes in **O(1)** time (average). + pub fn remove(&mut self, value: &Q) -> bool + where + Q: Hash + Equivalent, + { + self.swap_remove(value) + } + + /// Remove the value from the set, and return `true` if it was present. + /// + /// Like `Vec::swap_remove`, the value is removed by swapping it with the + /// last element of the set and popping it off. **This perturbs + /// the position of what used to be the last element!** + /// + /// Return `false` if `value` was not in the set. + /// + /// Computes in **O(1)** time (average). + pub fn swap_remove(&mut self, value: &Q) -> bool + where + Q: Hash + Equivalent, + { + self.map.swap_remove(value).is_some() + } + + /// Remove the value from the set, and return `true` if it was present. + /// + /// Like `Vec::remove`, the value is removed by shifting all of the + /// elements that follow it, preserving their relative order. + /// **This perturbs the index of all of those elements!** + /// + /// Return `false` if `value` was not in the set. + /// + /// Computes in **O(n)** time (average). + pub fn shift_remove(&mut self, value: &Q) -> bool + where + Q: Hash + Equivalent, + { + self.map.shift_remove(value).is_some() + } + + /// Removes and returns the value in the set, if any, that is equal to the + /// given one. + /// + /// **NOTE:** This is equivalent to `.swap_take(value)`, if you need to + /// preserve the order of the values in the set, use `.shift_take(value)` + /// instead. + /// + /// Computes in **O(1)** time (average). + pub fn take(&mut self, value: &Q) -> Option + where + Q: Hash + Equivalent, + { + self.swap_take(value) + } + + /// Removes and returns the value in the set, if any, that is equal to the + /// given one. + /// + /// Like `Vec::swap_remove`, the value is removed by swapping it with the + /// last element of the set and popping it off. **This perturbs + /// the position of what used to be the last element!** + /// + /// Return `None` if `value` was not in the set. + /// + /// Computes in **O(1)** time (average). + pub fn swap_take(&mut self, value: &Q) -> Option + where + Q: Hash + Equivalent, + { + self.map.swap_remove_entry(value).map(|(x, ())| x) + } + + /// Removes and returns the value in the set, if any, that is equal to the + /// given one. + /// + /// Like `Vec::remove`, the value is removed by shifting all of the + /// elements that follow it, preserving their relative order. + /// **This perturbs the index of all of those elements!** + /// + /// Return `None` if `value` was not in the set. + /// + /// Computes in **O(n)** time (average). + pub fn shift_take(&mut self, value: &Q) -> Option + where + Q: Hash + Equivalent, + { + self.map.shift_remove_entry(value).map(|(x, ())| x) + } + + /// Remove the value from the set return it and the index it had. + /// + /// Like `Vec::swap_remove`, the value is removed by swapping it with the + /// last element of the set and popping it off. **This perturbs + /// the position of what used to be the last element!** + /// + /// Return `None` if `value` was not in the set. + pub fn swap_remove_full(&mut self, value: &Q) -> Option<(usize, T)> + where + Q: Hash + Equivalent, + { + self.map.swap_remove_full(value).map(|(i, x, ())| (i, x)) + } + + /// Remove the value from the set return it and the index it had. + /// + /// Like `Vec::remove`, the value is removed by shifting all of the + /// elements that follow it, preserving their relative order. + /// **This perturbs the index of all of those elements!** + /// + /// Return `None` if `value` was not in the set. + pub fn shift_remove_full(&mut self, value: &Q) -> Option<(usize, T)> + where + Q: Hash + Equivalent, + { + self.map.shift_remove_full(value).map(|(i, x, ())| (i, x)) + } + + /// Remove the last value + /// + /// This preserves the order of the remaining elements. + /// + /// Computes in **O(1)** time (average). + pub fn pop(&mut self) -> Option { + self.map.pop().map(|(x, ())| x) + } + + /// Scan through each value in the set and keep those where the + /// closure `keep` returns `true`. + /// + /// The elements are visited in order, and remaining elements keep their + /// order. + /// + /// Computes in **O(n)** time (average). + pub fn retain(&mut self, mut keep: F) + where + F: FnMut(&T) -> bool, + { + self.map.retain(move |x, &mut ()| keep(x)) + } + + /// Sort the set’s values by their default ordering. + /// + /// See [`sort_by`](Self::sort_by) for details. + pub fn sort(&mut self) + where + T: Ord, + { + self.map.sort_keys() + } + + /// Sort the set’s values in place using the comparison function `cmp`. + /// + /// Computes in **O(n log n)** time and **O(n)** space. The sort is stable. + pub fn sort_by(&mut self, mut cmp: F) + where + F: FnMut(&T, &T) -> Ordering, + { + self.map.sort_by(move |a, _, b, _| cmp(a, b)); + } + + /// Sort the values of the set and return a by-value iterator of + /// the values with the result. + /// + /// The sort is stable. + pub fn sorted_by(self, mut cmp: F) -> IntoIter + where + F: FnMut(&T, &T) -> Ordering, + { + let mut entries = self.into_entries(); + entries.sort_by(move |a, b| cmp(&a.key, &b.key)); + IntoIter { + iter: entries.into_iter(), + } + } + + /// Sort the set's values by their default ordering. + /// + /// See [`sort_unstable_by`](Self::sort_unstable_by) for details. + pub fn sort_unstable(&mut self) + where + T: Ord, + { + self.map.sort_unstable_keys() + } + + /// Sort the set's values in place using the comparison funtion `cmp`. + /// + /// Computes in **O(n log n)** time. The sort is unstable. + pub fn sort_unstable_by(&mut self, mut cmp: F) + where + F: FnMut(&T, &T) -> Ordering, + { + self.map.sort_unstable_by(move |a, _, b, _| cmp(a, b)) + } + + /// Sort the values of the set and return a by-value iterator of + /// the values with the result. + pub fn sorted_unstable_by(self, mut cmp: F) -> IntoIter + where + F: FnMut(&T, &T) -> Ordering, + { + let mut entries = self.into_entries(); + entries.sort_unstable_by(move |a, b| cmp(&a.key, &b.key)); + IntoIter { + iter: entries.into_iter(), + } + } + + /// Reverses the order of the set’s values in place. + /// + /// Computes in **O(n)** time and **O(1)** space. + pub fn reverse(&mut self) { + self.map.reverse() + } +} + +impl IndexSet { + /// Get a value by index + /// + /// Valid indices are *0 <= index < self.len()* + /// + /// Computes in **O(1)** time. + pub fn get_index(&self, index: usize) -> Option<&T> { + self.as_entries().get(index).map(Bucket::key_ref) + } + + /// Get the first value + /// + /// Computes in **O(1)** time. + pub fn first(&self) -> Option<&T> { + self.as_entries().first().map(Bucket::key_ref) + } + + /// Get the last value + /// + /// Computes in **O(1)** time. + pub fn last(&self) -> Option<&T> { + self.as_entries().last().map(Bucket::key_ref) + } + + /// Remove the value by index + /// + /// Valid indices are *0 <= index < self.len()* + /// + /// Like `Vec::swap_remove`, the value is removed by swapping it with the + /// last element of the set and popping it off. **This perturbs + /// the position of what used to be the last element!** + /// + /// Computes in **O(1)** time (average). + pub fn swap_remove_index(&mut self, index: usize) -> Option { + self.map.swap_remove_index(index).map(|(x, ())| x) + } + + /// Remove the value by index + /// + /// Valid indices are *0 <= index < self.len()* + /// + /// Like `Vec::remove`, the value is removed by shifting all of the + /// elements that follow it, preserving their relative order. + /// **This perturbs the index of all of those elements!** + /// + /// Computes in **O(n)** time (average). + pub fn shift_remove_index(&mut self, index: usize) -> Option { + self.map.shift_remove_index(index).map(|(x, ())| x) + } + + /// Moves the position of a value from one index to another + /// by shifting all other values in-between. + /// + /// * If `from < to`, the other values will shift down while the targeted value moves up. + /// * If `from > to`, the other values will shift up while the targeted value moves down. + /// + /// ***Panics*** if `from` or `to` are out of bounds. + /// + /// Computes in **O(n)** time (average). + pub fn move_index(&mut self, from: usize, to: usize) { + self.map.move_index(from, to) + } + + /// Swaps the position of two values in the set. + /// + /// ***Panics*** if `a` or `b` are out of bounds. + pub fn swap_indices(&mut self, a: usize, b: usize) { + self.map.swap_indices(a, b) + } +} + +/// Access `IndexSet` values at indexed positions. +/// +/// # Examples +/// +/// ``` +/// use indexmap::IndexSet; +/// +/// let mut set = IndexSet::new(); +/// for word in "Lorem ipsum dolor sit amet".split_whitespace() { +/// set.insert(word.to_string()); +/// } +/// assert_eq!(set[0], "Lorem"); +/// assert_eq!(set[1], "ipsum"); +/// set.reverse(); +/// assert_eq!(set[0], "amet"); +/// assert_eq!(set[1], "sit"); +/// set.sort(); +/// assert_eq!(set[0], "Lorem"); +/// assert_eq!(set[1], "amet"); +/// ``` +/// +/// ```should_panic +/// use indexmap::IndexSet; +/// +/// let mut set = IndexSet::new(); +/// set.insert("foo"); +/// println!("{:?}", set[10]); // panics! +/// ``` +impl Index for IndexSet { + type Output = T; + + /// Returns a reference to the value at the supplied `index`. + /// + /// ***Panics*** if `index` is out of bounds. + fn index(&self, index: usize) -> &T { + self.get_index(index) + .expect("IndexSet: index out of bounds") + } +} + +/// An owning iterator over the items of a `IndexSet`. +/// +/// This `struct` is created by the [`into_iter`] method on [`IndexSet`] +/// (provided by the `IntoIterator` trait). See its documentation for more. +/// +/// [`IndexSet`]: struct.IndexSet.html +/// [`into_iter`]: struct.IndexSet.html#method.into_iter +pub struct IntoIter { + iter: vec::IntoIter>, +} + +impl Iterator for IntoIter { + type Item = T; + + iterator_methods!(Bucket::key); +} + +impl DoubleEndedIterator for IntoIter { + double_ended_iterator_methods!(Bucket::key); +} + +impl ExactSizeIterator for IntoIter { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for IntoIter {} + +impl fmt::Debug for IntoIter { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.iter.as_slice().iter().map(Bucket::key_ref); + f.debug_list().entries(iter).finish() + } +} + +/// An iterator over the items of a `IndexSet`. +/// +/// This `struct` is created by the [`iter`] method on [`IndexSet`]. +/// See its documentation for more. +/// +/// [`IndexSet`]: struct.IndexSet.html +/// [`iter`]: struct.IndexSet.html#method.iter +pub struct Iter<'a, T> { + iter: slice::Iter<'a, Bucket>, +} + +impl<'a, T> Iterator for Iter<'a, T> { + type Item = &'a T; + + iterator_methods!(Bucket::key_ref); +} + +impl DoubleEndedIterator for Iter<'_, T> { + double_ended_iterator_methods!(Bucket::key_ref); +} + +impl ExactSizeIterator for Iter<'_, T> { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for Iter<'_, T> {} + +impl Clone for Iter<'_, T> { + fn clone(&self) -> Self { + Iter { + iter: self.iter.clone(), + } + } +} + +impl fmt::Debug for Iter<'_, T> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self.clone()).finish() + } +} + +/// A draining iterator over the items of a `IndexSet`. +/// +/// This `struct` is created by the [`drain`] method on [`IndexSet`]. +/// See its documentation for more. +/// +/// [`IndexSet`]: struct.IndexSet.html +/// [`drain`]: struct.IndexSet.html#method.drain +pub struct Drain<'a, T> { + iter: vec::Drain<'a, Bucket>, +} + +impl Iterator for Drain<'_, T> { + type Item = T; + + iterator_methods!(Bucket::key); +} + +impl DoubleEndedIterator for Drain<'_, T> { + double_ended_iterator_methods!(Bucket::key); +} + +impl ExactSizeIterator for Drain<'_, T> { + fn len(&self) -> usize { + self.iter.len() + } +} + +impl FusedIterator for Drain<'_, T> {} + +impl fmt::Debug for Drain<'_, T> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let iter = self.iter.as_slice().iter().map(Bucket::key_ref); + f.debug_list().entries(iter).finish() + } +} + +impl<'a, T, S> IntoIterator for &'a IndexSet { + type Item = &'a T; + type IntoIter = Iter<'a, T>; + + fn into_iter(self) -> Self::IntoIter { + self.iter() + } +} + +impl IntoIterator for IndexSet { + type Item = T; + type IntoIter = IntoIter; + + fn into_iter(self) -> Self::IntoIter { + IntoIter { + iter: self.into_entries().into_iter(), + } + } +} + +impl FromIterator for IndexSet +where + T: Hash + Eq, + S: BuildHasher + Default, +{ + fn from_iter>(iterable: I) -> Self { + let iter = iterable.into_iter().map(|x| (x, ())); + IndexSet { + map: IndexMap::from_iter(iter), + } + } +} + +#[cfg(has_std)] +impl From<[T; N]> for IndexSet +where + T: Eq + Hash, +{ + /// # Examples + /// + /// ``` + /// use indexmap::IndexSet; + /// + /// let set1 = IndexSet::from([1, 2, 3, 4]); + /// let set2: IndexSet<_> = [1, 2, 3, 4].into(); + /// assert_eq!(set1, set2); + /// ``` + fn from(arr: [T; N]) -> Self { + Self::from_iter(arr) + } +} + +impl Extend for IndexSet +where + T: Hash + Eq, + S: BuildHasher, +{ + fn extend>(&mut self, iterable: I) { + let iter = iterable.into_iter().map(|x| (x, ())); + self.map.extend(iter); + } +} + +impl<'a, T, S> Extend<&'a T> for IndexSet +where + T: Hash + Eq + Copy + 'a, + S: BuildHasher, +{ + fn extend>(&mut self, iterable: I) { + let iter = iterable.into_iter().copied(); + self.extend(iter); + } +} + +impl Default for IndexSet +where + S: Default, +{ + /// Return an empty `IndexSet` + fn default() -> Self { + IndexSet { + map: IndexMap::default(), + } + } +} + +impl PartialEq> for IndexSet +where + T: Hash + Eq, + S1: BuildHasher, + S2: BuildHasher, +{ + fn eq(&self, other: &IndexSet) -> bool { + self.len() == other.len() && self.is_subset(other) + } +} + +impl Eq for IndexSet +where + T: Eq + Hash, + S: BuildHasher, +{ +} + +impl IndexSet +where + T: Eq + Hash, + S: BuildHasher, +{ + /// Returns `true` if `self` has no elements in common with `other`. + pub fn is_disjoint(&self, other: &IndexSet) -> bool + where + S2: BuildHasher, + { + if self.len() <= other.len() { + self.iter().all(move |value| !other.contains(value)) + } else { + other.iter().all(move |value| !self.contains(value)) + } + } + + /// Returns `true` if all elements of `self` are contained in `other`. + pub fn is_subset(&self, other: &IndexSet) -> bool + where + S2: BuildHasher, + { + self.len() <= other.len() && self.iter().all(move |value| other.contains(value)) + } + + /// Returns `true` if all elements of `other` are contained in `self`. + pub fn is_superset(&self, other: &IndexSet) -> bool + where + S2: BuildHasher, + { + other.is_subset(self) + } +} + +/// A lazy iterator producing elements in the difference of `IndexSet`s. +/// +/// This `struct` is created by the [`difference`] method on [`IndexSet`]. +/// See its documentation for more. +/// +/// [`IndexSet`]: struct.IndexSet.html +/// [`difference`]: struct.IndexSet.html#method.difference +pub struct Difference<'a, T, S> { + iter: Iter<'a, T>, + other: &'a IndexSet, +} + +impl<'a, T, S> Iterator for Difference<'a, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ + type Item = &'a T; + + fn next(&mut self) -> Option { + while let Some(item) = self.iter.next() { + if !self.other.contains(item) { + return Some(item); + } + } + None + } + + fn size_hint(&self) -> (usize, Option) { + (0, self.iter.size_hint().1) + } +} + +impl DoubleEndedIterator for Difference<'_, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ + fn next_back(&mut self) -> Option { + while let Some(item) = self.iter.next_back() { + if !self.other.contains(item) { + return Some(item); + } + } + None + } +} + +impl FusedIterator for Difference<'_, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ +} + +impl Clone for Difference<'_, T, S> { + fn clone(&self) -> Self { + Difference { + iter: self.iter.clone(), + ..*self + } + } +} + +impl fmt::Debug for Difference<'_, T, S> +where + T: fmt::Debug + Eq + Hash, + S: BuildHasher, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self.clone()).finish() + } +} + +/// A lazy iterator producing elements in the intersection of `IndexSet`s. +/// +/// This `struct` is created by the [`intersection`] method on [`IndexSet`]. +/// See its documentation for more. +/// +/// [`IndexSet`]: struct.IndexSet.html +/// [`intersection`]: struct.IndexSet.html#method.intersection +pub struct Intersection<'a, T, S> { + iter: Iter<'a, T>, + other: &'a IndexSet, +} + +impl<'a, T, S> Iterator for Intersection<'a, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ + type Item = &'a T; + + fn next(&mut self) -> Option { + while let Some(item) = self.iter.next() { + if self.other.contains(item) { + return Some(item); + } + } + None + } + + fn size_hint(&self) -> (usize, Option) { + (0, self.iter.size_hint().1) + } +} + +impl DoubleEndedIterator for Intersection<'_, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ + fn next_back(&mut self) -> Option { + while let Some(item) = self.iter.next_back() { + if self.other.contains(item) { + return Some(item); + } + } + None + } +} + +impl FusedIterator for Intersection<'_, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ +} + +impl Clone for Intersection<'_, T, S> { + fn clone(&self) -> Self { + Intersection { + iter: self.iter.clone(), + ..*self + } + } +} + +impl fmt::Debug for Intersection<'_, T, S> +where + T: fmt::Debug + Eq + Hash, + S: BuildHasher, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self.clone()).finish() + } +} + +/// A lazy iterator producing elements in the symmetric difference of `IndexSet`s. +/// +/// This `struct` is created by the [`symmetric_difference`] method on +/// [`IndexSet`]. See its documentation for more. +/// +/// [`IndexSet`]: struct.IndexSet.html +/// [`symmetric_difference`]: struct.IndexSet.html#method.symmetric_difference +pub struct SymmetricDifference<'a, T, S1, S2> { + iter: Chain, Difference<'a, T, S1>>, +} + +impl<'a, T, S1, S2> Iterator for SymmetricDifference<'a, T, S1, S2> +where + T: Eq + Hash, + S1: BuildHasher, + S2: BuildHasher, +{ + type Item = &'a T; + + fn next(&mut self) -> Option { + self.iter.next() + } + + fn size_hint(&self) -> (usize, Option) { + self.iter.size_hint() + } + + fn fold(self, init: B, f: F) -> B + where + F: FnMut(B, Self::Item) -> B, + { + self.iter.fold(init, f) + } +} + +impl DoubleEndedIterator for SymmetricDifference<'_, T, S1, S2> +where + T: Eq + Hash, + S1: BuildHasher, + S2: BuildHasher, +{ + fn next_back(&mut self) -> Option { + self.iter.next_back() + } + + fn rfold(self, init: B, f: F) -> B + where + F: FnMut(B, Self::Item) -> B, + { + self.iter.rfold(init, f) + } +} + +impl FusedIterator for SymmetricDifference<'_, T, S1, S2> +where + T: Eq + Hash, + S1: BuildHasher, + S2: BuildHasher, +{ +} + +impl Clone for SymmetricDifference<'_, T, S1, S2> { + fn clone(&self) -> Self { + SymmetricDifference { + iter: self.iter.clone(), + } + } +} + +impl fmt::Debug for SymmetricDifference<'_, T, S1, S2> +where + T: fmt::Debug + Eq + Hash, + S1: BuildHasher, + S2: BuildHasher, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self.clone()).finish() + } +} + +/// A lazy iterator producing elements in the union of `IndexSet`s. +/// +/// This `struct` is created by the [`union`] method on [`IndexSet`]. +/// See its documentation for more. +/// +/// [`IndexSet`]: struct.IndexSet.html +/// [`union`]: struct.IndexSet.html#method.union +pub struct Union<'a, T, S> { + iter: Chain, Difference<'a, T, S>>, +} + +impl<'a, T, S> Iterator for Union<'a, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ + type Item = &'a T; + + fn next(&mut self) -> Option { + self.iter.next() + } + + fn size_hint(&self) -> (usize, Option) { + self.iter.size_hint() + } + + fn fold(self, init: B, f: F) -> B + where + F: FnMut(B, Self::Item) -> B, + { + self.iter.fold(init, f) + } +} + +impl DoubleEndedIterator for Union<'_, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ + fn next_back(&mut self) -> Option { + self.iter.next_back() + } + + fn rfold(self, init: B, f: F) -> B + where + F: FnMut(B, Self::Item) -> B, + { + self.iter.rfold(init, f) + } +} + +impl FusedIterator for Union<'_, T, S> +where + T: Eq + Hash, + S: BuildHasher, +{ +} + +impl Clone for Union<'_, T, S> { + fn clone(&self) -> Self { + Union { + iter: self.iter.clone(), + } + } +} + +impl fmt::Debug for Union<'_, T, S> +where + T: fmt::Debug + Eq + Hash, + S: BuildHasher, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_list().entries(self.clone()).finish() + } +} + +impl BitAnd<&IndexSet> for &IndexSet +where + T: Eq + Hash + Clone, + S1: BuildHasher + Default, + S2: BuildHasher, +{ + type Output = IndexSet; + + /// Returns the set intersection, cloned into a new set. + /// + /// Values are collected in the same order that they appear in `self`. + fn bitand(self, other: &IndexSet) -> Self::Output { + self.intersection(other).cloned().collect() + } +} + +impl BitOr<&IndexSet> for &IndexSet +where + T: Eq + Hash + Clone, + S1: BuildHasher + Default, + S2: BuildHasher, +{ + type Output = IndexSet; + + /// Returns the set union, cloned into a new set. + /// + /// Values from `self` are collected in their original order, followed by + /// values that are unique to `other` in their original order. + fn bitor(self, other: &IndexSet) -> Self::Output { + self.union(other).cloned().collect() + } +} + +impl BitXor<&IndexSet> for &IndexSet +where + T: Eq + Hash + Clone, + S1: BuildHasher + Default, + S2: BuildHasher, +{ + type Output = IndexSet; + + /// Returns the set symmetric-difference, cloned into a new set. + /// + /// Values from `self` are collected in their original order, followed by + /// values from `other` in their original order. + fn bitxor(self, other: &IndexSet) -> Self::Output { + self.symmetric_difference(other).cloned().collect() + } +} + +impl Sub<&IndexSet> for &IndexSet +where + T: Eq + Hash + Clone, + S1: BuildHasher + Default, + S2: BuildHasher, +{ + type Output = IndexSet; + + /// Returns the set difference, cloned into a new set. + /// + /// Values are collected in the same order that they appear in `self`. + fn sub(self, other: &IndexSet) -> Self::Output { + self.difference(other).cloned().collect() + } +} + +#[cfg(test)] +mod tests { + use super::*; + use std::string::String; + + #[test] + fn it_works() { + let mut set = IndexSet::new(); + assert_eq!(set.is_empty(), true); + set.insert(1); + set.insert(1); + assert_eq!(set.len(), 1); + assert!(set.get(&1).is_some()); + assert_eq!(set.is_empty(), false); + } + + #[test] + fn new() { + let set = IndexSet::::new(); + println!("{:?}", set); + assert_eq!(set.capacity(), 0); + assert_eq!(set.len(), 0); + assert_eq!(set.is_empty(), true); + } + + #[test] + fn insert() { + let insert = [0, 4, 2, 12, 8, 7, 11, 5]; + let not_present = [1, 3, 6, 9, 10]; + let mut set = IndexSet::with_capacity(insert.len()); + + for (i, &elt) in insert.iter().enumerate() { + assert_eq!(set.len(), i); + set.insert(elt); + assert_eq!(set.len(), i + 1); + assert_eq!(set.get(&elt), Some(&elt)); + } + println!("{:?}", set); + + for &elt in ¬_present { + assert!(set.get(&elt).is_none()); + } + } + + #[test] + fn insert_full() { + let insert = vec![9, 2, 7, 1, 4, 6, 13]; + let present = vec![1, 6, 2]; + let mut set = IndexSet::with_capacity(insert.len()); + + for (i, &elt) in insert.iter().enumerate() { + assert_eq!(set.len(), i); + let (index, success) = set.insert_full(elt); + assert!(success); + assert_eq!(Some(index), set.get_full(&elt).map(|x| x.0)); + assert_eq!(set.len(), i + 1); + } + + let len = set.len(); + for &elt in &present { + let (index, success) = set.insert_full(elt); + assert!(!success); + assert_eq!(Some(index), set.get_full(&elt).map(|x| x.0)); + assert_eq!(set.len(), len); + } + } + + #[test] + fn insert_2() { + let mut set = IndexSet::with_capacity(16); + + let mut values = vec![]; + values.extend(0..16); + values.extend(if cfg!(miri) { 32..64 } else { 128..267 }); + + for &i in &values { + let old_set = set.clone(); + set.insert(i); + for value in old_set.iter() { + if set.get(value).is_none() { + println!("old_set: {:?}", old_set); + println!("set: {:?}", set); + panic!("did not find {} in set", value); + } + } + } + + for &i in &values { + assert!(set.get(&i).is_some(), "did not find {}", i); + } + } + + #[test] + fn insert_dup() { + let mut elements = vec![0, 2, 4, 6, 8]; + let mut set: IndexSet = elements.drain(..).collect(); + { + let (i, v) = set.get_full(&0).unwrap(); + assert_eq!(set.len(), 5); + assert_eq!(i, 0); + assert_eq!(*v, 0); + } + { + let inserted = set.insert(0); + let (i, v) = set.get_full(&0).unwrap(); + assert_eq!(set.len(), 5); + assert_eq!(inserted, false); + assert_eq!(i, 0); + assert_eq!(*v, 0); + } + } + + #[test] + fn insert_order() { + let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; + let mut set = IndexSet::new(); + + for &elt in &insert { + set.insert(elt); + } + + assert_eq!(set.iter().count(), set.len()); + assert_eq!(set.iter().count(), insert.len()); + for (a, b) in insert.iter().zip(set.iter()) { + assert_eq!(a, b); + } + for (i, v) in (0..insert.len()).zip(set.iter()) { + assert_eq!(set.get_index(i).unwrap(), v); + } + } + + #[test] + fn replace() { + let replace = [0, 4, 2, 12, 8, 7, 11, 5]; + let not_present = [1, 3, 6, 9, 10]; + let mut set = IndexSet::with_capacity(replace.len()); + + for (i, &elt) in replace.iter().enumerate() { + assert_eq!(set.len(), i); + set.replace(elt); + assert_eq!(set.len(), i + 1); + assert_eq!(set.get(&elt), Some(&elt)); + } + println!("{:?}", set); + + for &elt in ¬_present { + assert!(set.get(&elt).is_none()); + } + } + + #[test] + fn replace_full() { + let replace = vec![9, 2, 7, 1, 4, 6, 13]; + let present = vec![1, 6, 2]; + let mut set = IndexSet::with_capacity(replace.len()); + + for (i, &elt) in replace.iter().enumerate() { + assert_eq!(set.len(), i); + let (index, replaced) = set.replace_full(elt); + assert!(replaced.is_none()); + assert_eq!(Some(index), set.get_full(&elt).map(|x| x.0)); + assert_eq!(set.len(), i + 1); + } + + let len = set.len(); + for &elt in &present { + let (index, replaced) = set.replace_full(elt); + assert_eq!(Some(elt), replaced); + assert_eq!(Some(index), set.get_full(&elt).map(|x| x.0)); + assert_eq!(set.len(), len); + } + } + + #[test] + fn replace_2() { + let mut set = IndexSet::with_capacity(16); + + let mut values = vec![]; + values.extend(0..16); + values.extend(if cfg!(miri) { 32..64 } else { 128..267 }); + + for &i in &values { + let old_set = set.clone(); + set.replace(i); + for value in old_set.iter() { + if set.get(value).is_none() { + println!("old_set: {:?}", old_set); + println!("set: {:?}", set); + panic!("did not find {} in set", value); + } + } + } + + for &i in &values { + assert!(set.get(&i).is_some(), "did not find {}", i); + } + } + + #[test] + fn replace_dup() { + let mut elements = vec![0, 2, 4, 6, 8]; + let mut set: IndexSet = elements.drain(..).collect(); + { + let (i, v) = set.get_full(&0).unwrap(); + assert_eq!(set.len(), 5); + assert_eq!(i, 0); + assert_eq!(*v, 0); + } + { + let replaced = set.replace(0); + let (i, v) = set.get_full(&0).unwrap(); + assert_eq!(set.len(), 5); + assert_eq!(replaced, Some(0)); + assert_eq!(i, 0); + assert_eq!(*v, 0); + } + } + + #[test] + fn replace_order() { + let replace = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; + let mut set = IndexSet::new(); + + for &elt in &replace { + set.replace(elt); + } + + assert_eq!(set.iter().count(), set.len()); + assert_eq!(set.iter().count(), replace.len()); + for (a, b) in replace.iter().zip(set.iter()) { + assert_eq!(a, b); + } + for (i, v) in (0..replace.len()).zip(set.iter()) { + assert_eq!(set.get_index(i).unwrap(), v); + } + } + + #[test] + fn grow() { + let insert = [0, 4, 2, 12, 8, 7, 11]; + let not_present = [1, 3, 6, 9, 10]; + let mut set = IndexSet::with_capacity(insert.len()); + + for (i, &elt) in insert.iter().enumerate() { + assert_eq!(set.len(), i); + set.insert(elt); + assert_eq!(set.len(), i + 1); + assert_eq!(set.get(&elt), Some(&elt)); + } + + println!("{:?}", set); + for &elt in &insert { + set.insert(elt * 10); + } + for &elt in &insert { + set.insert(elt * 100); + } + for (i, &elt) in insert.iter().cycle().enumerate().take(100) { + set.insert(elt * 100 + i as i32); + } + println!("{:?}", set); + for &elt in ¬_present { + assert!(set.get(&elt).is_none()); + } + } + + #[test] + fn reserve() { + let mut set = IndexSet::::new(); + assert_eq!(set.capacity(), 0); + set.reserve(100); + let capacity = set.capacity(); + assert!(capacity >= 100); + for i in 0..capacity { + assert_eq!(set.len(), i); + set.insert(i); + assert_eq!(set.len(), i + 1); + assert_eq!(set.capacity(), capacity); + assert_eq!(set.get(&i), Some(&i)); + } + set.insert(capacity); + assert_eq!(set.len(), capacity + 1); + assert!(set.capacity() > capacity); + assert_eq!(set.get(&capacity), Some(&capacity)); + } + + #[test] + fn shrink_to_fit() { + let mut set = IndexSet::::new(); + assert_eq!(set.capacity(), 0); + for i in 0..100 { + assert_eq!(set.len(), i); + set.insert(i); + assert_eq!(set.len(), i + 1); + assert!(set.capacity() >= i + 1); + assert_eq!(set.get(&i), Some(&i)); + set.shrink_to_fit(); + assert_eq!(set.len(), i + 1); + assert_eq!(set.capacity(), i + 1); + assert_eq!(set.get(&i), Some(&i)); + } + } + + #[test] + fn remove() { + let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; + let mut set = IndexSet::new(); + + for &elt in &insert { + set.insert(elt); + } + + assert_eq!(set.iter().count(), set.len()); + assert_eq!(set.iter().count(), insert.len()); + for (a, b) in insert.iter().zip(set.iter()) { + assert_eq!(a, b); + } + + let remove_fail = [99, 77]; + let remove = [4, 12, 8, 7]; + + for &value in &remove_fail { + assert!(set.swap_remove_full(&value).is_none()); + } + println!("{:?}", set); + for &value in &remove { + //println!("{:?}", set); + let index = set.get_full(&value).unwrap().0; + assert_eq!(set.swap_remove_full(&value), Some((index, value))); + } + println!("{:?}", set); + + for value in &insert { + assert_eq!(set.get(value).is_some(), !remove.contains(value)); + } + assert_eq!(set.len(), insert.len() - remove.len()); + assert_eq!(set.iter().count(), insert.len() - remove.len()); + } + + #[test] + fn swap_remove_index() { + let insert = [0, 4, 2, 12, 8, 7, 11, 5, 3, 17, 19, 22, 23]; + let mut set = IndexSet::new(); + + for &elt in &insert { + set.insert(elt); + } + + let mut vector = insert.to_vec(); + let remove_sequence = &[3, 3, 10, 4, 5, 4, 3, 0, 1]; + + // check that the same swap remove sequence on vec and set + // have the same result. + for &rm in remove_sequence { + let out_vec = vector.swap_remove(rm); + let out_set = set.swap_remove_index(rm).unwrap(); + assert_eq!(out_vec, out_set); + } + assert_eq!(vector.len(), set.len()); + for (a, b) in vector.iter().zip(set.iter()) { + assert_eq!(a, b); + } + } + + #[test] + fn partial_eq_and_eq() { + let mut set_a = IndexSet::new(); + set_a.insert(1); + set_a.insert(2); + let mut set_b = set_a.clone(); + assert_eq!(set_a, set_b); + set_b.swap_remove(&1); + assert_ne!(set_a, set_b); + + let set_c: IndexSet<_> = set_b.into_iter().collect(); + assert_ne!(set_a, set_c); + assert_ne!(set_c, set_a); + } + + #[test] + fn extend() { + let mut set = IndexSet::new(); + set.extend(vec![&1, &2, &3, &4]); + set.extend(vec![5, 6]); + assert_eq!(set.into_iter().collect::>(), vec![1, 2, 3, 4, 5, 6]); + } + + #[test] + fn comparisons() { + let set_a: IndexSet<_> = (0..3).collect(); + let set_b: IndexSet<_> = (3..6).collect(); + let set_c: IndexSet<_> = (0..6).collect(); + let set_d: IndexSet<_> = (3..9).collect(); + + assert!(!set_a.is_disjoint(&set_a)); + assert!(set_a.is_subset(&set_a)); + assert!(set_a.is_superset(&set_a)); + + assert!(set_a.is_disjoint(&set_b)); + assert!(set_b.is_disjoint(&set_a)); + assert!(!set_a.is_subset(&set_b)); + assert!(!set_b.is_subset(&set_a)); + assert!(!set_a.is_superset(&set_b)); + assert!(!set_b.is_superset(&set_a)); + + assert!(!set_a.is_disjoint(&set_c)); + assert!(!set_c.is_disjoint(&set_a)); + assert!(set_a.is_subset(&set_c)); + assert!(!set_c.is_subset(&set_a)); + assert!(!set_a.is_superset(&set_c)); + assert!(set_c.is_superset(&set_a)); + + assert!(!set_c.is_disjoint(&set_d)); + assert!(!set_d.is_disjoint(&set_c)); + assert!(!set_c.is_subset(&set_d)); + assert!(!set_d.is_subset(&set_c)); + assert!(!set_c.is_superset(&set_d)); + assert!(!set_d.is_superset(&set_c)); + } + + #[test] + fn iter_comparisons() { + use std::iter::empty; + + fn check<'a, I1, I2>(iter1: I1, iter2: I2) + where + I1: Iterator, + I2: Iterator, + { + assert!(iter1.copied().eq(iter2)); + } + + let set_a: IndexSet<_> = (0..3).collect(); + let set_b: IndexSet<_> = (3..6).collect(); + let set_c: IndexSet<_> = (0..6).collect(); + let set_d: IndexSet<_> = (3..9).rev().collect(); + + check(set_a.difference(&set_a), empty()); + check(set_a.symmetric_difference(&set_a), empty()); + check(set_a.intersection(&set_a), 0..3); + check(set_a.union(&set_a), 0..3); + + check(set_a.difference(&set_b), 0..3); + check(set_b.difference(&set_a), 3..6); + check(set_a.symmetric_difference(&set_b), 0..6); + check(set_b.symmetric_difference(&set_a), (3..6).chain(0..3)); + check(set_a.intersection(&set_b), empty()); + check(set_b.intersection(&set_a), empty()); + check(set_a.union(&set_b), 0..6); + check(set_b.union(&set_a), (3..6).chain(0..3)); + + check(set_a.difference(&set_c), empty()); + check(set_c.difference(&set_a), 3..6); + check(set_a.symmetric_difference(&set_c), 3..6); + check(set_c.symmetric_difference(&set_a), 3..6); + check(set_a.intersection(&set_c), 0..3); + check(set_c.intersection(&set_a), 0..3); + check(set_a.union(&set_c), 0..6); + check(set_c.union(&set_a), 0..6); + + check(set_c.difference(&set_d), 0..3); + check(set_d.difference(&set_c), (6..9).rev()); + check( + set_c.symmetric_difference(&set_d), + (0..3).chain((6..9).rev()), + ); + check(set_d.symmetric_difference(&set_c), (6..9).rev().chain(0..3)); + check(set_c.intersection(&set_d), 3..6); + check(set_d.intersection(&set_c), (3..6).rev()); + check(set_c.union(&set_d), (0..6).chain((6..9).rev())); + check(set_d.union(&set_c), (3..9).rev().chain(0..3)); + } + + #[test] + fn ops() { + let empty = IndexSet::::new(); + let set_a: IndexSet<_> = (0..3).collect(); + let set_b: IndexSet<_> = (3..6).collect(); + let set_c: IndexSet<_> = (0..6).collect(); + let set_d: IndexSet<_> = (3..9).rev().collect(); + + #[allow(clippy::eq_op)] + { + assert_eq!(&set_a & &set_a, set_a); + assert_eq!(&set_a | &set_a, set_a); + assert_eq!(&set_a ^ &set_a, empty); + assert_eq!(&set_a - &set_a, empty); + } + + assert_eq!(&set_a & &set_b, empty); + assert_eq!(&set_b & &set_a, empty); + assert_eq!(&set_a | &set_b, set_c); + assert_eq!(&set_b | &set_a, set_c); + assert_eq!(&set_a ^ &set_b, set_c); + assert_eq!(&set_b ^ &set_a, set_c); + assert_eq!(&set_a - &set_b, set_a); + assert_eq!(&set_b - &set_a, set_b); + + assert_eq!(&set_a & &set_c, set_a); + assert_eq!(&set_c & &set_a, set_a); + assert_eq!(&set_a | &set_c, set_c); + assert_eq!(&set_c | &set_a, set_c); + assert_eq!(&set_a ^ &set_c, set_b); + assert_eq!(&set_c ^ &set_a, set_b); + assert_eq!(&set_a - &set_c, empty); + assert_eq!(&set_c - &set_a, set_b); + + assert_eq!(&set_c & &set_d, set_b); + assert_eq!(&set_d & &set_c, set_b); + assert_eq!(&set_c | &set_d, &set_a | &set_d); + assert_eq!(&set_d | &set_c, &set_a | &set_d); + assert_eq!(&set_c ^ &set_d, &set_a | &(&set_d - &set_b)); + assert_eq!(&set_d ^ &set_c, &set_a | &(&set_d - &set_b)); + assert_eq!(&set_c - &set_d, set_a); + assert_eq!(&set_d - &set_c, &set_d - &set_b); + } + + #[test] + #[cfg(has_std)] + fn from_array() { + let set1 = IndexSet::from([1, 2, 3, 4]); + let set2: IndexSet<_> = [1, 2, 3, 4].into(); + + assert_eq!(set1, set2); + } +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/src/util.rs temporalio-1.3.0/vendor/indexmap-1.9.3/src/util.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/src/util.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/src/util.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,31 @@ +use core::ops::{Bound, Range, RangeBounds}; + +pub(crate) fn third(t: (A, B, C)) -> C { + t.2 +} + +pub(crate) fn simplify_range(range: R, len: usize) -> Range +where + R: RangeBounds, +{ + let start = match range.start_bound() { + Bound::Unbounded => 0, + Bound::Included(&i) if i <= len => i, + Bound::Excluded(&i) if i < len => i + 1, + bound => panic!("range start {:?} should be <= length {}", bound, len), + }; + let end = match range.end_bound() { + Bound::Unbounded => len, + Bound::Excluded(&i) if i <= len => i, + Bound::Included(&i) if i < len => i + 1, + bound => panic!("range end {:?} should be <= length {}", bound, len), + }; + if start > end { + panic!( + "range start {:?} should be <= range end {:?}", + range.start_bound(), + range.end_bound() + ); + } + start..end +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/tests/equivalent_trait.rs temporalio-1.3.0/vendor/indexmap-1.9.3/tests/equivalent_trait.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/tests/equivalent_trait.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/tests/equivalent_trait.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,53 @@ +use indexmap::indexmap; +use indexmap::Equivalent; + +use std::hash::Hash; + +#[derive(Debug, Hash)] +pub struct Pair(pub A, pub B); + +impl PartialEq<(A, B)> for Pair +where + C: PartialEq, + D: PartialEq, +{ + fn eq(&self, rhs: &(A, B)) -> bool { + self.0 == rhs.0 && self.1 == rhs.1 + } +} + +impl Equivalent for Pair +where + Pair: PartialEq, + A: Hash + Eq, + B: Hash + Eq, +{ + fn equivalent(&self, other: &X) -> bool { + *self == *other + } +} + +#[test] +fn test_lookup() { + let s = String::from; + let map = indexmap! { + (s("a"), s("b")) => 1, + (s("a"), s("x")) => 2, + }; + + assert!(map.contains_key(&Pair("a", "b"))); + assert!(!map.contains_key(&Pair("b", "a"))); +} + +#[test] +fn test_string_str() { + let s = String::from; + let mut map = indexmap! { + s("a") => 1, s("b") => 2, + s("x") => 3, s("y") => 4, + }; + + assert!(map.contains_key("a")); + assert!(!map.contains_key("z")); + assert_eq!(map.swap_remove("b"), Some(2)); +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/tests/macros_full_path.rs temporalio-1.3.0/vendor/indexmap-1.9.3/tests/macros_full_path.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/tests/macros_full_path.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/tests/macros_full_path.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,19 @@ +#[test] +fn test_create_map() { + let _m = indexmap::indexmap! { + 1 => 2, + 7 => 1, + 2 => 2, + 3 => 3, + }; +} + +#[test] +fn test_create_set() { + let _s = indexmap::indexset! { + 1, + 7, + 2, + 3, + }; +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/tests/quick.rs temporalio-1.3.0/vendor/indexmap-1.9.3/tests/quick.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/tests/quick.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/tests/quick.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,573 @@ +use indexmap::{IndexMap, IndexSet}; +use itertools::Itertools; + +use quickcheck::Arbitrary; +use quickcheck::Gen; +use quickcheck::QuickCheck; +use quickcheck::TestResult; + +use fnv::FnvHasher; +use std::hash::{BuildHasher, BuildHasherDefault}; +type FnvBuilder = BuildHasherDefault; +type IndexMapFnv = IndexMap; + +use std::cmp::min; +use std::collections::HashMap; +use std::collections::HashSet; +use std::fmt::Debug; +use std::hash::Hash; +use std::ops::Bound; +use std::ops::Deref; + +use indexmap::map::Entry as OEntry; +use std::collections::hash_map::Entry as HEntry; + +fn set<'a, T: 'a, I>(iter: I) -> HashSet +where + I: IntoIterator, + T: Copy + Hash + Eq, +{ + iter.into_iter().copied().collect() +} + +fn indexmap<'a, T: 'a, I>(iter: I) -> IndexMap +where + I: IntoIterator, + T: Copy + Hash + Eq, +{ + IndexMap::from_iter(iter.into_iter().copied().map(|k| (k, ()))) +} + +// Helper macro to allow us to use smaller quickcheck limits under miri. +macro_rules! quickcheck_limit { + (@as_items $($i:item)*) => ($($i)*); + { + $( + $(#[$m:meta])* + fn $fn_name:ident($($arg_name:ident : $arg_ty:ty),*) -> $ret:ty { + $($code:tt)* + } + )* + } => ( + quickcheck::quickcheck! { + @as_items + $( + #[test] + $(#[$m])* + fn $fn_name() { + fn prop($($arg_name: $arg_ty),*) -> $ret { + $($code)* + } + let mut quickcheck = QuickCheck::new(); + if cfg!(miri) { + quickcheck = quickcheck + .gen(Gen::new(10)) + .tests(10) + .max_tests(100); + } + + quickcheck.quickcheck(prop as fn($($arg_ty),*) -> $ret); + } + )* + } + ) +} + +quickcheck_limit! { + fn contains(insert: Vec) -> bool { + let mut map = IndexMap::new(); + for &key in &insert { + map.insert(key, ()); + } + insert.iter().all(|&key| map.get(&key).is_some()) + } + + fn contains_not(insert: Vec, not: Vec) -> bool { + let mut map = IndexMap::new(); + for &key in &insert { + map.insert(key, ()); + } + let nots = &set(¬) - &set(&insert); + nots.iter().all(|&key| map.get(&key).is_none()) + } + + fn insert_remove(insert: Vec, remove: Vec) -> bool { + let mut map = IndexMap::new(); + for &key in &insert { + map.insert(key, ()); + } + for &key in &remove { + map.swap_remove(&key); + } + let elements = &set(&insert) - &set(&remove); + map.len() == elements.len() && map.iter().count() == elements.len() && + elements.iter().all(|k| map.get(k).is_some()) + } + + fn insertion_order(insert: Vec) -> bool { + let mut map = IndexMap::new(); + for &key in &insert { + map.insert(key, ()); + } + itertools::assert_equal(insert.iter().unique(), map.keys()); + true + } + + fn pop(insert: Vec) -> bool { + let mut map = IndexMap::new(); + for &key in &insert { + map.insert(key, ()); + } + let mut pops = Vec::new(); + while let Some((key, _v)) = map.pop() { + pops.push(key); + } + pops.reverse(); + + itertools::assert_equal(insert.iter().unique(), &pops); + true + } + + fn with_cap(template: Vec<()>) -> bool { + let cap = template.len(); + let map: IndexMap = IndexMap::with_capacity(cap); + println!("wish: {}, got: {} (diff: {})", cap, map.capacity(), map.capacity() as isize - cap as isize); + map.capacity() >= cap + } + + fn drain_full(insert: Vec) -> bool { + let mut map = IndexMap::new(); + for &key in &insert { + map.insert(key, ()); + } + let mut clone = map.clone(); + let drained = clone.drain(..); + for (key, _) in drained { + map.swap_remove(&key); + } + map.is_empty() + } + + fn drain_bounds(insert: Vec, range: (Bound, Bound)) -> TestResult { + let mut map = IndexMap::new(); + for &key in &insert { + map.insert(key, ()); + } + + // First see if `Vec::drain` is happy with this range. + let result = std::panic::catch_unwind(|| { + let mut keys: Vec = map.keys().copied().collect(); + keys.drain(range); + keys + }); + + if let Ok(keys) = result { + map.drain(range); + // Check that our `drain` matches the same key order. + assert!(map.keys().eq(&keys)); + // Check that hash lookups all work too. + assert!(keys.iter().all(|key| map.contains_key(key))); + TestResult::passed() + } else { + // If `Vec::drain` panicked, so should we. + TestResult::must_fail(move || { map.drain(range); }) + } + } + + fn shift_remove(insert: Vec, remove: Vec) -> bool { + let mut map = IndexMap::new(); + for &key in &insert { + map.insert(key, ()); + } + for &key in &remove { + map.shift_remove(&key); + } + let elements = &set(&insert) - &set(&remove); + + // Check that order is preserved after removals + let mut iter = map.keys(); + for &key in insert.iter().unique() { + if elements.contains(&key) { + assert_eq!(Some(&key), iter.next()); + } + } + + map.len() == elements.len() && map.iter().count() == elements.len() && + elements.iter().all(|k| map.get(k).is_some()) + } + + fn indexing(insert: Vec) -> bool { + let mut map: IndexMap<_, _> = insert.into_iter().map(|x| (x, x)).collect(); + let set: IndexSet<_> = map.keys().copied().collect(); + assert_eq!(map.len(), set.len()); + + for (i, &key) in set.iter().enumerate() { + assert_eq!(map.get_index(i), Some((&key, &key))); + assert_eq!(set.get_index(i), Some(&key)); + assert_eq!(map[i], key); + assert_eq!(set[i], key); + + *map.get_index_mut(i).unwrap().1 >>= 1; + map[i] <<= 1; + } + + set.iter().enumerate().all(|(i, &key)| { + let value = key & !1; + map[&key] == value && map[i] == value + }) + } + + // Use `u8` test indices so quickcheck is less likely to go out of bounds. + fn swap_indices(vec: Vec, a: u8, b: u8) -> TestResult { + let mut set = IndexSet::::from_iter(vec); + let a = usize::from(a); + let b = usize::from(b); + + if a >= set.len() || b >= set.len() { + return TestResult::discard(); + } + + let mut vec = Vec::from_iter(set.iter().cloned()); + vec.swap(a, b); + + set.swap_indices(a, b); + + // Check both iteration order and hash lookups + assert!(set.iter().eq(vec.iter())); + assert!(vec.iter().enumerate().all(|(i, x)| { + set.get_index_of(x) == Some(i) + })); + TestResult::passed() + } + + // Use `u8` test indices so quickcheck is less likely to go out of bounds. + fn move_index(vec: Vec, from: u8, to: u8) -> TestResult { + let mut set = IndexSet::::from_iter(vec); + let from = usize::from(from); + let to = usize::from(to); + + if from >= set.len() || to >= set.len() { + return TestResult::discard(); + } + + let mut vec = Vec::from_iter(set.iter().cloned()); + let x = vec.remove(from); + vec.insert(to, x); + + set.move_index(from, to); + + // Check both iteration order and hash lookups + assert!(set.iter().eq(vec.iter())); + assert!(vec.iter().enumerate().all(|(i, x)| { + set.get_index_of(x) == Some(i) + })); + TestResult::passed() + } +} + +use crate::Op::*; +#[derive(Copy, Clone, Debug)] +enum Op { + Add(K, V), + Remove(K), + AddEntry(K, V), + RemoveEntry(K), +} + +impl Arbitrary for Op +where + K: Arbitrary, + V: Arbitrary, +{ + fn arbitrary(g: &mut Gen) -> Self { + match u32::arbitrary(g) % 4 { + 0 => Add(K::arbitrary(g), V::arbitrary(g)), + 1 => AddEntry(K::arbitrary(g), V::arbitrary(g)), + 2 => Remove(K::arbitrary(g)), + _ => RemoveEntry(K::arbitrary(g)), + } + } +} + +fn do_ops(ops: &[Op], a: &mut IndexMap, b: &mut HashMap) +where + K: Hash + Eq + Clone, + V: Clone, + S: BuildHasher, +{ + for op in ops { + match *op { + Add(ref k, ref v) => { + a.insert(k.clone(), v.clone()); + b.insert(k.clone(), v.clone()); + } + AddEntry(ref k, ref v) => { + a.entry(k.clone()).or_insert_with(|| v.clone()); + b.entry(k.clone()).or_insert_with(|| v.clone()); + } + Remove(ref k) => { + a.swap_remove(k); + b.remove(k); + } + RemoveEntry(ref k) => { + if let OEntry::Occupied(ent) = a.entry(k.clone()) { + ent.swap_remove_entry(); + } + if let HEntry::Occupied(ent) = b.entry(k.clone()) { + ent.remove_entry(); + } + } + } + //println!("{:?}", a); + } +} + +fn assert_maps_equivalent(a: &IndexMap, b: &HashMap) -> bool +where + K: Hash + Eq + Debug, + V: Eq + Debug, +{ + assert_eq!(a.len(), b.len()); + assert_eq!(a.iter().next().is_some(), b.iter().next().is_some()); + for key in a.keys() { + assert!(b.contains_key(key), "b does not contain {:?}", key); + } + for key in b.keys() { + assert!(a.get(key).is_some(), "a does not contain {:?}", key); + } + for key in a.keys() { + assert_eq!(a[key], b[key]); + } + true +} + +quickcheck_limit! { + fn operations_i8(ops: Large>>) -> bool { + let mut map = IndexMap::new(); + let mut reference = HashMap::new(); + do_ops(&ops, &mut map, &mut reference); + assert_maps_equivalent(&map, &reference) + } + + fn operations_string(ops: Vec>) -> bool { + let mut map = IndexMap::new(); + let mut reference = HashMap::new(); + do_ops(&ops, &mut map, &mut reference); + assert_maps_equivalent(&map, &reference) + } + + fn keys_values(ops: Large>>) -> bool { + let mut map = IndexMap::new(); + let mut reference = HashMap::new(); + do_ops(&ops, &mut map, &mut reference); + let mut visit = IndexMap::new(); + for (k, v) in map.keys().zip(map.values()) { + assert_eq!(&map[k], v); + assert!(!visit.contains_key(k)); + visit.insert(*k, *v); + } + assert_eq!(visit.len(), reference.len()); + true + } + + fn keys_values_mut(ops: Large>>) -> bool { + let mut map = IndexMap::new(); + let mut reference = HashMap::new(); + do_ops(&ops, &mut map, &mut reference); + let mut visit = IndexMap::new(); + let keys = Vec::from_iter(map.keys().copied()); + for (k, v) in keys.iter().zip(map.values_mut()) { + assert_eq!(&reference[k], v); + assert!(!visit.contains_key(k)); + visit.insert(*k, *v); + } + assert_eq!(visit.len(), reference.len()); + true + } + + fn equality(ops1: Vec>, removes: Vec) -> bool { + let mut map = IndexMap::new(); + let mut reference = HashMap::new(); + do_ops(&ops1, &mut map, &mut reference); + let mut ops2 = ops1.clone(); + for &r in &removes { + if !ops2.is_empty() { + let i = r % ops2.len(); + ops2.remove(i); + } + } + let mut map2 = IndexMapFnv::default(); + let mut reference2 = HashMap::new(); + do_ops(&ops2, &mut map2, &mut reference2); + assert_eq!(map == map2, reference == reference2); + true + } + + fn retain_ordered(keys: Large>, remove: Large>) -> () { + let mut map = indexmap(keys.iter()); + let initial_map = map.clone(); // deduplicated in-order input + let remove_map = indexmap(remove.iter()); + let keys_s = set(keys.iter()); + let remove_s = set(remove.iter()); + let answer = &keys_s - &remove_s; + map.retain(|k, _| !remove_map.contains_key(k)); + + // check the values + assert_eq!(map.len(), answer.len()); + for key in &answer { + assert!(map.contains_key(key)); + } + // check the order + itertools::assert_equal(map.keys(), initial_map.keys().filter(|&k| !remove_map.contains_key(k))); + } + + fn sort_1(keyvals: Large>) -> () { + let mut map: IndexMap<_, _> = IndexMap::from_iter(keyvals.to_vec()); + let mut answer = keyvals.0; + answer.sort_by_key(|t| t.0); + + // reverse dedup: Because IndexMap::from_iter keeps the last value for + // identical keys + answer.reverse(); + answer.dedup_by_key(|t| t.0); + answer.reverse(); + + map.sort_by(|k1, _, k2, _| Ord::cmp(k1, k2)); + + // check it contains all the values it should + for &(key, val) in &answer { + assert_eq!(map[&key], val); + } + + // check the order + + let mapv = Vec::from_iter(map); + assert_eq!(answer, mapv); + + } + + fn sort_2(keyvals: Large>) -> () { + let mut map: IndexMap<_, _> = IndexMap::from_iter(keyvals.to_vec()); + map.sort_by(|_, v1, _, v2| Ord::cmp(v1, v2)); + assert_sorted_by_key(map, |t| t.1); + } + + fn reverse(keyvals: Large>) -> () { + let mut map: IndexMap<_, _> = IndexMap::from_iter(keyvals.to_vec()); + + fn generate_answer(input: &Vec<(i8, i8)>) -> Vec<(i8, i8)> { + // to mimic what `IndexMap::from_iter` does: + // need to get (A) the unique keys in forward order, and (B) the + // last value of each of those keys. + + // create (A): an iterable that yields the unique keys in ltr order + let mut seen_keys = HashSet::new(); + let unique_keys_forward = input.iter().filter_map(move |(k, _)| { + if seen_keys.contains(k) { None } + else { seen_keys.insert(*k); Some(*k) } + }); + + // create (B): a mapping of keys to the last value seen for that key + // this is the same as reversing the input and taking the first + // value seen for that key! + let mut last_val_per_key = HashMap::new(); + for &(k, v) in input.iter().rev() { + if !last_val_per_key.contains_key(&k) { + last_val_per_key.insert(k, v); + } + } + + // iterate over the keys in (A) in order, and match each one with + // the corresponding last value from (B) + let mut ans: Vec<_> = unique_keys_forward + .map(|k| (k, *last_val_per_key.get(&k).unwrap())) + .collect(); + + // finally, since this test is testing `.reverse()`, reverse the + // answer in-place + ans.reverse(); + + ans + } + + let answer = generate_answer(&keyvals.0); + + // perform the work + map.reverse(); + + // check it contains all the values it should + for &(key, val) in &answer { + assert_eq!(map[&key], val); + } + + // check the order + let mapv = Vec::from_iter(map); + assert_eq!(answer, mapv); + } +} + +fn assert_sorted_by_key(iterable: I, key: Key) +where + I: IntoIterator, + I::Item: Ord + Clone + Debug, + Key: Fn(&I::Item) -> X, + X: Ord, +{ + let input = Vec::from_iter(iterable); + let mut sorted = input.clone(); + sorted.sort_by_key(key); + assert_eq!(input, sorted); +} + +#[derive(Clone, Debug, Hash, PartialEq, Eq)] +struct Alpha(String); + +impl Deref for Alpha { + type Target = String; + fn deref(&self) -> &String { + &self.0 + } +} + +const ALPHABET: &[u8] = b"abcdefghijklmnopqrstuvwxyz"; + +impl Arbitrary for Alpha { + fn arbitrary(g: &mut Gen) -> Self { + let len = usize::arbitrary(g) % g.size(); + let len = min(len, 16); + Alpha( + (0..len) + .map(|_| ALPHABET[usize::arbitrary(g) % ALPHABET.len()] as char) + .collect(), + ) + } + + fn shrink(&self) -> Box> { + Box::new((**self).shrink().map(Alpha)) + } +} + +/// quickcheck Arbitrary adaptor -- make a larger vec +#[derive(Clone, Debug)] +struct Large(T); + +impl Deref for Large { + type Target = T; + fn deref(&self) -> &T { + &self.0 + } +} + +impl Arbitrary for Large> +where + T: Arbitrary, +{ + fn arbitrary(g: &mut Gen) -> Self { + let len = usize::arbitrary(g) % (g.size() * 10); + Large((0..len).map(|_| T::arbitrary(g)).collect()) + } + + fn shrink(&self) -> Box> { + Box::new((**self).shrink().map(Large)) + } +} diff -Nru temporalio-1.3.0/vendor/indexmap-1.9.3/tests/tests.rs temporalio-1.3.0/vendor/indexmap-1.9.3/tests/tests.rs --- temporalio-1.3.0/vendor/indexmap-1.9.3/tests/tests.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/indexmap-1.9.3/tests/tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,28 @@ +use indexmap::{indexmap, indexset}; + +#[test] +fn test_sort() { + let m = indexmap! { + 1 => 2, + 7 => 1, + 2 => 2, + 3 => 3, + }; + + itertools::assert_equal( + m.sorted_by(|_k1, v1, _k2, v2| v1.cmp(v2)), + vec![(7, 1), (1, 2), (2, 2), (3, 3)], + ); +} + +#[test] +fn test_sort_set() { + let s = indexset! { + 1, + 7, + 2, + 3, + }; + + itertools::assert_equal(s.sorted_by(|v1, v2| v1.cmp(v2)), vec![1, 2, 3, 7]); +} diff -Nru temporalio-1.3.0/vendor/inventory/.cargo-checksum.json temporalio-1.3.0/vendor/inventory/.cargo-checksum.json --- temporalio-1.3.0/vendor/inventory/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/inventory/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.lock":"9194c1c35715279ef1b71a643b0a0f05b71a5d089598df6c8063e03485d36e69","Cargo.toml":"9fc6f8b96783e84866ff2058e70aa9197c4f9499374c7b26a14adf3a75d570b4","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"3eedca993e73fcc3760c26296c64b859c36d8f1be4f1ffa524183c3977a75a79","examples/flags.rs":"5705e0e14d6672f06ceb53ad17ec88181949d8c33dc507f9ea90e46873456fdd","src/lib.rs":"85cf2ba06fbffb9dba79da5830587d56273c7b21675e1a5692303d513213806d","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/test.rs":"172e27013e20420722ff8a9afe5b231a02a2a821a7d638f561c63bdc8a158568","tests/ui/collect-unsized.rs":"c2ae61ec8bf5f2e305ca627f7ee2ce36d55a0df2d31cee17022c169b3ffe3b1a","tests/ui/collect-unsized.stderr":"101a48e8060c866d0ddcf21afa1d6ebb69ceda0b9df50ef5dd095885f215fb25","tests/ui/non-sync.rs":"b08b9b3c30997b4fd3cb39e9c9b1f5261813a8fad69612d45806e566208aacaa","tests/ui/non-sync.stderr":"d56b640a7f52e33d27d8ede3fe0d3caa065692144b5a099db9d1b142e5130f38","tests/ui/outer-attr.rs":"5a5e5763c0042ca42cc0e32068c31982fcabf9cbfaed004eb8420d0388bda502","tests/ui/outer-attr.stderr":"fa4b926d7c3375b093030ae858de253533044f71f3b318b81b3965ccea2ca2b5","tests/ui/submit-nonconst.rs":"e91d3e1842032fb8113cb41d1b675f72a9fba006e9428013a877026268e65182","tests/ui/submit-nonconst.stderr":"7d3640dbb6b6bddf8ed32a454033f62cb302663d90e7b4365f7c7c323179c8a8","tests/ui/submit-unrecognized.rs":"a0903bc8cac95f355835fe60f509bcd8321d9ce6cab71e4ce5cf03df4e49d51e","tests/ui/submit-unrecognized.stderr":"524f1ab9ffaf956b427a2f3d41d2c7dfcde4fced562a49276e9c6c30ef9a600f","tests/ui/used-linker.rs":"1b548496563af4f74c8a75296a9d2da35950bff60d84b50ba3a74e66947806db","tests/ui/used-linker.stderr":"61834a88c17e757355300ae70315ac09039c8ed5195a6b48c4ac15c76315dbf1"},"package":"c38a87a1e0e2752433cd4b26019a469112a25fb43b30f5ee9b3b898925c5a0f9"} \ No newline at end of file +{"files":{"Cargo.lock":"5e7e3c75eb5e0b171aa4dce2a515ddd3cef54032f9e2b46315d4214ff9006c0e","Cargo.toml":"ddb6ca0d748cb9212925c67a0192c57a2f754a6160adb4aa94225364d0834e4c","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"3eedca993e73fcc3760c26296c64b859c36d8f1be4f1ffa524183c3977a75a79","examples/flags.rs":"5705e0e14d6672f06ceb53ad17ec88181949d8c33dc507f9ea90e46873456fdd","src/lib.rs":"c8a9c6cb4748113bf4230e7fc63dfcc65516854304a497d9ace344a863483d0e","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/test.rs":"172e27013e20420722ff8a9afe5b231a02a2a821a7d638f561c63bdc8a158568","tests/ui/collect-unsized.rs":"c2ae61ec8bf5f2e305ca627f7ee2ce36d55a0df2d31cee17022c169b3ffe3b1a","tests/ui/collect-unsized.stderr":"101a48e8060c866d0ddcf21afa1d6ebb69ceda0b9df50ef5dd095885f215fb25","tests/ui/non-sync.rs":"b08b9b3c30997b4fd3cb39e9c9b1f5261813a8fad69612d45806e566208aacaa","tests/ui/non-sync.stderr":"d56b640a7f52e33d27d8ede3fe0d3caa065692144b5a099db9d1b142e5130f38","tests/ui/outer-attr.rs":"5a5e5763c0042ca42cc0e32068c31982fcabf9cbfaed004eb8420d0388bda502","tests/ui/outer-attr.stderr":"fa4b926d7c3375b093030ae858de253533044f71f3b318b81b3965ccea2ca2b5","tests/ui/submit-nonconst.rs":"e91d3e1842032fb8113cb41d1b675f72a9fba006e9428013a877026268e65182","tests/ui/submit-nonconst.stderr":"7d3640dbb6b6bddf8ed32a454033f62cb302663d90e7b4365f7c7c323179c8a8","tests/ui/submit-unrecognized.rs":"a0903bc8cac95f355835fe60f509bcd8321d9ce6cab71e4ce5cf03df4e49d51e","tests/ui/submit-unrecognized.stderr":"524f1ab9ffaf956b427a2f3d41d2c7dfcde4fced562a49276e9c6c30ef9a600f","tests/ui/used-linker.rs":"1b548496563af4f74c8a75296a9d2da35950bff60d84b50ba3a74e66947806db","tests/ui/used-linker.stderr":"61834a88c17e757355300ae70315ac09039c8ed5195a6b48c4ac15c76315dbf1"},"package":"a53088c87cf71c9d4f3372a2cb9eea1e7b8a0b1bf8b7f7d23fe5b76dbb07e63b"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/inventory/Cargo.lock temporalio-1.3.0/vendor/inventory/Cargo.lock --- temporalio-1.3.0/vendor/inventory/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/inventory/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -4,18 +4,18 @@ [[package]] name = "basic-toml" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c0de75129aa8d0cceaf750b89013f0e08804d6ec61416da787b35ad0d7cddf1" +checksum = "7bfc506e7a2370ec239e1d072507b2a80c833083699d3c6fa176fbb4de8448c6" dependencies = [ "serde", ] [[package]] name = "dissimilar" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "210ec60ae7d710bed8683e333e9d2855a8a56a3e9892b38bad3bb0d4d29b0d5e" +checksum = "86e3bdc80eee6e16b2b6b0f87fbc98c04bee3455e35174c0de1a125d0688c632" [[package]] name = "glob" @@ -25,7 +25,7 @@ [[package]] name = "inventory" -version = "0.3.8" +version = "0.3.11" dependencies = [ "rustversion", "trybuild", @@ -33,9 +33,9 @@ [[package]] name = "itoa" -version = "1.0.7" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0aa48fab2893d8a49caa94082ae8488f4e1050d73b367881dcd2198f4199fd8" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "once_cell" @@ -45,45 +45,45 @@ [[package]] name = "proc-macro2" -version = "1.0.63" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.29" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" +checksum = "5fe8a65d69dd0808184ebb5f836ab526bb259db23c657efa38711b1072ee47f0" dependencies = [ "proc-macro2", ] [[package]] name = "rustversion" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "3b88756493a5bd5e5395d53baa70b194b05764ab85b59e43e4b8f4e1192fa9b1" [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "6e5c3a298c7f978e53536f95a63bdc4c4a64550582f31a0359a9afda6aede62e" dependencies = [ "proc-macro2", "quote", @@ -92,9 +92,9 @@ [[package]] name = "serde_json" -version = "1.0.99" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3" +checksum = "d03b412469450d4404fe8499a268edd7f8b79fecb074b0d812ad64ca21f4031b" dependencies = [ "itoa", "ryu", @@ -103,9 +103,9 @@ [[package]] name = "syn" -version = "2.0.23" +version = "2.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737" +checksum = "b60f673f44a8255b9c8c657daf66a596d435f2da81a555b06dc644d080ba45e0" dependencies = [ "proc-macro2", "quote", @@ -123,9 +123,9 @@ [[package]] name = "trybuild" -version = "1.0.80" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501dbdbb99861e4ab6b60eb6a7493956a9defb644fd034bc4a5ef27c693c8a3a" +checksum = "a84e0202ea606ba5ebee8507ab2bfbe89b98551ed9b8f0be198109275cff284b" dependencies = [ "basic-toml", "dissimilar", @@ -139,9 +139,9 @@ [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "winapi" diff -Nru temporalio-1.3.0/vendor/inventory/Cargo.toml temporalio-1.3.0/vendor/inventory/Cargo.toml --- temporalio-1.3.0/vendor/inventory/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/inventory/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ edition = "2021" rust-version = "1.62" name = "inventory" -version = "0.3.8" +version = "0.3.11" authors = ["David Tolnay "] description = "Typed distributed plugin registration" documentation = "https://docs.rs/inventory" @@ -29,6 +29,7 @@ repository = "https://github.com/dtolnay/inventory" [package.metadata.docs.rs] +rustdoc-args = ["--generate-link-to-definition"] targets = ["x86_64-unknown-linux-gnu"] [lib] diff -Nru temporalio-1.3.0/vendor/inventory/src/lib.rs temporalio-1.3.0/vendor/inventory/src/lib.rs --- temporalio-1.3.0/vendor/inventory/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/inventory/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -102,7 +102,7 @@ //! There is no guarantee about the order that plugins of the same type are //! visited by the iterator. They may be visited in any order. -#![doc(html_root_url = "https://docs.rs/inventory/0.3.8")] +#![doc(html_root_url = "https://docs.rs/inventory/0.3.11")] #![no_std] #![allow( clippy::doc_markdown, diff -Nru temporalio-1.3.0/vendor/io-lifetimes/build.rs temporalio-1.3.0/vendor/io-lifetimes/build.rs --- temporalio-1.3.0/vendor/io-lifetimes/build.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/build.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,113 +0,0 @@ -use std::env::var; -use std::io::Write; - -fn main() { - // I/O safety is stabilized in Rust 1.63. - if has_io_safety() { - use_feature("io_safety_is_in_std") - } - - // Work around - // . - use_feature_or_nothing("wasi_ext"); - - // Rust 1.56 and earlier don't support panic in const fn. - if has_panic_in_const_fn() { - use_feature("panic_in_const_fn") - } - - // Don't rerun this on changes other than build.rs, as we only depend on - // the rustc version. - println!("cargo:rerun-if-changed=build.rs"); -} - -fn use_feature_or_nothing(feature: &str) { - if has_feature(feature) { - use_feature(feature); - } -} - -fn use_feature(feature: &str) { - println!("cargo:rustc-cfg={}", feature); -} - -/// Test whether the rustc at `var("RUSTC")` supports the given feature. -fn has_feature(feature: &str) -> bool { - can_compile(format!( - "#![allow(stable_features)]\n#![feature({})]", - feature - )) -} - -/// Test whether the rustc at `var("RUSTC")` can compile the given code. -fn can_compile>(test: T) -> bool { - use std::process::Stdio; - - let out_dir = var("OUT_DIR").unwrap(); - let rustc = var("RUSTC").unwrap(); - let target = var("TARGET").unwrap(); - - // Use `RUSTC_WRAPPER` if it's set, unless it's set to an empty string, - // as documented [here]. - // [here]: https://doc.rust-lang.org/cargo/reference/environment-variables.html#environment-variables-cargo-reads - let wrapper = var("RUSTC_WRAPPER") - .ok() - .and_then(|w| if w.is_empty() { None } else { Some(w) }); - - let mut cmd = if let Some(wrapper) = wrapper { - let mut cmd = std::process::Command::new(wrapper); - // The wrapper's first argument is supposed to be the path to rustc. - cmd.arg(rustc); - cmd - } else { - std::process::Command::new(rustc) - }; - - cmd.arg("--crate-type=rlib") // Don't require `main`. - .arg("--emit=metadata") // Do as little as possible but still parse. - .arg("--target") - .arg(target) - .arg("--out-dir") - .arg(out_dir); // Put the output somewhere inconsequential. - - // If Cargo wants to set RUSTFLAGS, use that. - if let Ok(rustflags) = var("CARGO_ENCODED_RUSTFLAGS") { - if !rustflags.is_empty() { - for arg in rustflags.split('\x1f') { - cmd.arg(arg); - } - } - } - - let mut child = cmd - .arg("-") // Read from stdin. - .stdin(Stdio::piped()) // Stdin is a pipe. - .stderr(Stdio::null()) // Errors from feature detection aren't interesting and can be confusing. - .spawn() - .unwrap(); - - writeln!(child.stdin.take().unwrap(), "{}", test.as_ref()).unwrap(); - - child.wait().unwrap().success() -} - -/// Test whether the rustc at `var("RUSTC")` supports panic in `const fn`. -fn has_panic_in_const_fn() -> bool { - can_compile("const fn foo() {{ panic!() }}") -} - -/// Test whether the rustc at `var("RUSTC")` supports the I/O safety feature. -fn has_io_safety() -> bool { - can_compile( - "\ - #[cfg(unix)]\n\ - use std::os::unix::io::OwnedFd as Owned;\n\ - #[cfg(target_os = \"wasi\")]\n\ - use std::os::wasi::io::OwnedFd as Owned;\n\ - #[cfg(windows)]\n\ - use std::os::windows::io::OwnedHandle as Owned;\n\ - \n\ - pub type Success = Owned;\n\ - ", - ) -} diff -Nru temporalio-1.3.0/vendor/io-lifetimes/.cargo-checksum.json temporalio-1.3.0/vendor/io-lifetimes/.cargo-checksum.json --- temporalio-1.3.0/vendor/io-lifetimes/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -{"files":{"CODE_OF_CONDUCT.md":"e0bd80144c93b032dadb144d7cf8663c55d697ba2dd60382715c981dfc60e421","COPYRIGHT":"495c30b45120f8af07cfa26eb9cb1ebfe8324560dca2b3b1e76cad1b9b6b489a","Cargo.toml":"6134b9aec8e8e3183613d18b9fd28a7276cb789b63f1d50059896b0ed41a8161","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-Apache-2.0_WITH_LLVM-exception":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","ORG_CODE_OF_CONDUCT.md":"a62b69bf86e605ee1bcbb2f0a12ba79e4cebb6983a7b6491949750aecc4f2178","README.md":"c6fd1e6acd03d78ca69275d3fb7fe27b7148ff62e11e617eec25e3a886caf082","build.rs":"58379e213e1758e25de92a04a1a6b3feb283321c3652e2271fc688879320147c","src/example_ffi.rs":"9a7e509b23b0e44958bfe20ea9e399b22ebd7d0204813f68b4c1ce1e8f3bef84","src/impls_async_std.rs":"62f73e42a2e76a9287f72f1c3db322114d4a08a2d8e2715c04156df60df1f876","src/impls_fs_err.rs":"12333298a291377a8c24835c60dfa3338e413e6435576cede04ce780da84ebe6","src/impls_mio.rs":"32ba71c1912d7dedcb110cb91dd953bab05a039d576c55a7508fcdad1bebbc2b","src/impls_os_pipe.rs":"5075498711f2dfdd6795d3afdb81bd3aca26c033d2f8f7238de59016d3ead0a9","src/impls_socket2.rs":"deacb4dd2c1e19ef483c937b6a18034397d729c3df361de5e748d70f5457f48b","src/impls_std.rs":"d11c66589a19b431062c316eaa77e1648e73aacd4ffabf9f575e5ccd2dec4083","src/impls_tokio.rs":"4f5f3dbdfa9395cd7e5149658cbd3872fa6c3973e1c844b7f6b48ee2e39e9197","src/lib.rs":"ca2d5187b1c25c21c18dc2e81988d6b7fda54d60a431802c2e53caef62d0814d","src/portability.rs":"d01be95b82bd36e09cf196a7c5f596a3d64c947aca34224efff164c87f358bcf","src/raw.rs":"16ff59fcc9ed2e08df56de40e25337bfe929bf77ec69ff4742902f39af8cc968","src/traits.rs":"e4856985681aad7bdd9c3cbb84a20c7233e1daa242220a82ee10514474fa05c7","src/types.rs":"b2204542721026c047a944febe2a245c8101f77f4a4ba7e14bae71761cdb3ea0","src/views.rs":"a13342880bed2af759829ba4a5cf2502ef781612138c447820eb36da9450a843"},"package":"eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/io-lifetimes/Cargo.toml temporalio-1.3.0/vendor/io-lifetimes/Cargo.toml --- temporalio-1.3.0/vendor/io-lifetimes/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 @@ -1,99 +0,0 @@ -# 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 = "io-lifetimes" -version = "1.0.11" -authors = ["Dan Gohman "] -include = [ - "src", - "build.rs", - "Cargo.toml", - "COPYRIGHT", - "LICENSE*", - "/*.md", -] -description = "A low-level I/O ownership and borrowing library" -readme = "README.md" -keywords = [ - "api", - "io", -] -categories = [ - "os", - "rust-patterns", -] -license = "Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT" -repository = "https://github.com/sunfishcode/io-lifetimes" - -[dependencies.fs-err] -version = "2.6.0" -optional = true - -[features] -close = [ - "libc", - "hermit-abi", - "windows-sys", -] -default = ["close"] - -[target."cfg(not(target_os = \"wasi\"))".dependencies.async-std] -version = "1.12.0" -optional = true - -[target."cfg(not(target_os = \"wasi\"))".dependencies.mio] -version = "0.8.0" -features = [ - "net", - "os-ext", -] -optional = true - -[target."cfg(not(target_os = \"wasi\"))".dependencies.os_pipe] -version = "1.0.0" -features = ["io_safety"] -optional = true - -[target."cfg(not(target_os = \"wasi\"))".dependencies.socket2] -version = "0.4.0" -optional = true - -[target."cfg(not(target_os = \"wasi\"))".dependencies.tokio] -version = "1.6.0" -features = [ - "io-std", - "fs", - "net", - "process", -] -optional = true - -[target."cfg(not(windows))".dependencies.libc] -version = "0.2.96" -optional = true - -[target."cfg(target_os = \"hermit\")".dependencies.hermit-abi] -version = "0.3" -optional = true - -[target."cfg(windows)".dependencies.windows-sys] -version = "0.48.0" -features = [ - "Win32_Foundation", - "Win32_Storage_FileSystem", - "Win32_Networking_WinSock", - "Win32_Security", - "Win32_System_IO", - "Win32_System_Threading", -] -optional = true diff -Nru temporalio-1.3.0/vendor/io-lifetimes/CODE_OF_CONDUCT.md temporalio-1.3.0/vendor/io-lifetimes/CODE_OF_CONDUCT.md --- temporalio-1.3.0/vendor/io-lifetimes/CODE_OF_CONDUCT.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/CODE_OF_CONDUCT.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -# Contributor Covenant Code of Conduct - -*Note*: this Code of Conduct pertains to individuals' behavior. Please also see the [Organizational Code of Conduct][OCoC]. - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers 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, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the Bytecode Alliance CoC team at [report@bytecodealliance.org](mailto:report@bytecodealliance.org). The CoC team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The CoC team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the Bytecode Alliance's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] - -[OCoC]: https://github.com/sunfishcode/io-lifetimes/blob/main/ORG_CODE_OF_CONDUCT.md -[homepage]: https://www.contributor-covenant.org -[version]: https://www.contributor-covenant.org/version/1/4/ diff -Nru temporalio-1.3.0/vendor/io-lifetimes/COPYRIGHT temporalio-1.3.0/vendor/io-lifetimes/COPYRIGHT --- temporalio-1.3.0/vendor/io-lifetimes/COPYRIGHT 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/COPYRIGHT 1970-01-01 00:00:00.000000000 +0000 @@ -1,29 +0,0 @@ -Short version for non-lawyers: - -`io-lifetimes` is triple-licensed under Apache 2.0 with the LLVM Exception, -Apache 2.0, and MIT terms. - - -Longer version: - -Copyrights in the `io-lifetimes` project are retained by their contributors. -No copyright assignment is required to contribute to the `io-lifetimes` -project. - -Some files include code derived from Rust's `libstd`; see the comments in -the code for details. - -Except as otherwise noted (below and/or in individual files), `io-lifetimes` -is licensed under: - - - the Apache License, Version 2.0, with the LLVM Exception - or - - - the Apache License, Version 2.0 - or - , - - or the MIT license - or - , - -at your option. diff -Nru temporalio-1.3.0/vendor/io-lifetimes/LICENSE-APACHE temporalio-1.3.0/vendor/io-lifetimes/LICENSE-APACHE --- temporalio-1.3.0/vendor/io-lifetimes/LICENSE-APACHE 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/LICENSE-APACHE 1970-01-01 00:00:00.000000000 +0000 @@ -1,201 +0,0 @@ - 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 -Nru temporalio-1.3.0/vendor/io-lifetimes/LICENSE-Apache-2.0_WITH_LLVM-exception temporalio-1.3.0/vendor/io-lifetimes/LICENSE-Apache-2.0_WITH_LLVM-exception --- temporalio-1.3.0/vendor/io-lifetimes/LICENSE-Apache-2.0_WITH_LLVM-exception 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/LICENSE-Apache-2.0_WITH_LLVM-exception 1970-01-01 00:00:00.000000000 +0000 @@ -1,220 +0,0 @@ - - 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. - - ---- LLVM Exceptions to the Apache 2.0 License ---- - -As an exception, if, as a result of your compiling your source code, portions -of this Software are embedded into an Object form of such source code, you -may redistribute such embedded portions in such Object form without complying -with the conditions of Sections 4(a), 4(b) and 4(d) of the License. - -In addition, if you combine or link compiled forms of this Software with -software that is licensed under the GPLv2 ("Combined Software") and if a -court of competent jurisdiction determines that the patent provision (Section -3), the indemnity provision (Section 9) or other Section of the License -conflicts with the conditions of the GPLv2, you may retroactively and -prospectively choose to deem waived or otherwise exclude such Section(s) of -the License, but only in their entirety and only with respect to the Combined -Software. - diff -Nru temporalio-1.3.0/vendor/io-lifetimes/LICENSE-MIT temporalio-1.3.0/vendor/io-lifetimes/LICENSE-MIT --- temporalio-1.3.0/vendor/io-lifetimes/LICENSE-MIT 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/LICENSE-MIT 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -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 -Nru temporalio-1.3.0/vendor/io-lifetimes/ORG_CODE_OF_CONDUCT.md temporalio-1.3.0/vendor/io-lifetimes/ORG_CODE_OF_CONDUCT.md --- temporalio-1.3.0/vendor/io-lifetimes/ORG_CODE_OF_CONDUCT.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/ORG_CODE_OF_CONDUCT.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,143 +0,0 @@ -# Bytecode Alliance Organizational Code of Conduct (OCoC) - -*Note*: this Code of Conduct pertains to organizations' behavior. Please also see the [Individual Code of Conduct](CODE_OF_CONDUCT.md). - -## Preamble - -The Bytecode Alliance (BA) welcomes involvement from organizations, -including commercial organizations. This document is an -*organizational* code of conduct, intended particularly to provide -guidance to commercial organizations. It is distinct from the -[Individual Code of Conduct (ICoC)](CODE_OF_CONDUCT.md), and does not -replace the ICoC. This OCoC applies to any group of people acting in -concert as a BA member or as a participant in BA activities, whether -or not that group is formally incorporated in some jurisdiction. - -The code of conduct described below is not a set of rigid rules, and -we did not write it to encompass every conceivable scenario that might -arise. For example, it is theoretically possible there would be times -when asserting patents is in the best interest of the BA community as -a whole. In such instances, consult with the BA, strive for -consensus, and interpret these rules with an intent that is generous -to the community the BA serves. - -While we may revise these guidelines from time to time based on -real-world experience, overall they are based on a simple principle: - -*Bytecode Alliance members should observe the distinction between - public community functions and private functions — especially - commercial ones — and should ensure that the latter support, or at - least do not harm, the former.* - -## Guidelines - - * **Do not cause confusion about Wasm standards or interoperability.** - - Having an interoperable WebAssembly core is a high priority for - the BA, and members should strive to preserve that core. It is fine - to develop additional non-standard features or APIs, but they - should always be clearly distinguished from the core interoperable - Wasm. - - Treat the WebAssembly name and any BA-associated names with - respect, and follow BA trademark and branding guidelines. If you - distribute a customized version of software originally produced by - the BA, or if you build a product or service using BA-derived - software, use names that clearly distinguish your work from the - original. (You should still provide proper attribution to the - original, of course, wherever such attribution would normally be - given.) - - Further, do not use the WebAssembly name or BA-associated names in - other public namespaces in ways that could cause confusion, e.g., - in company names, names of commercial service offerings, domain - names, publicly-visible social media accounts or online service - accounts, etc. It may sometimes be reasonable, however, to - register such a name in a new namespace and then immediately donate - control of that account to the BA, because that would help the project - maintain its identity. - - For further guidance, see the BA Trademark and Branding Policy - [TODO: create policy, then insert link]. - - * **Do not restrict contributors.** If your company requires - employees or contractors to sign non-compete agreements, those - agreements must not prevent people from participating in the BA or - contributing to related projects. - - This does not mean that all non-compete agreements are incompatible - with this code of conduct. For example, a company may restrict an - employee's ability to solicit the company's customers. However, an - agreement must not block any form of technical or social - participation in BA activities, including but not limited to the - implementation of particular features. - - The accumulation of experience and expertise in individual persons, - who are ultimately free to direct their energy and attention as - they decide, is one of the most important drivers of progress in - open source projects. A company that limits this freedom may hinder - the success of the BA's efforts. - - * **Do not use patents as offensive weapons.** If any BA participant - prevents the adoption or development of BA technologies by - asserting its patents, that undermines the purpose of the - coalition. The collaboration fostered by the BA cannot include - members who act to undermine its work. - - * **Practice responsible disclosure** for security vulnerabilities. - Use designated, non-public reporting channels to disclose technical - vulnerabilities, and give the project a reasonable period to - respond, remediate, and patch. [TODO: optionally include the - security vulnerability reporting URL here.] - - Vulnerability reporters may patch their company's own offerings, as - long as that patching does not significantly delay the reporting of - the vulnerability. Vulnerability information should never be used - for unilateral commercial advantage. Vendors may legitimately - compete on the speed and reliability with which they deploy - security fixes, but withholding vulnerability information damages - everyone in the long run by risking harm to the BA project's - reputation and to the security of all users. - - * **Respect the letter and spirit of open source practice.** While - there is not space to list here all possible aspects of standard - open source practice, some examples will help show what we mean: - - * Abide by all applicable open source license terms. Do not engage - in copyright violation or misattribution of any kind. - - * Do not claim others' ideas or designs as your own. - - * When others engage in publicly visible work (e.g., an upcoming - demo that is coordinated in a public issue tracker), do not - unilaterally announce early releases or early demonstrations of - that work ahead of their schedule in order to secure private - advantage (such as marketplace advantage) for yourself. - - The BA reserves the right to determine what constitutes good open - source practices and to take action as it deems appropriate to - encourage, and if necessary enforce, such practices. - -## Enforcement - -Instances of organizational behavior in violation of the OCoC may -be reported by contacting the Bytecode Alliance CoC team at -[report@bytecodealliance.org](mailto:report@bytecodealliance.org). The -CoC team will review and investigate all complaints, and will respond -in a way that it deems appropriate to the circumstances. The CoC team -is obligated to maintain confidentiality with regard to the reporter of -an incident. Further details of specific enforcement policies may be -posted separately. - -When the BA deems an organization in violation of this OCoC, the BA -will, at its sole discretion, determine what action to take. The BA -will decide what type, degree, and duration of corrective action is -needed, if any, before a violating organization can be considered for -membership (if it was not already a member) or can have its membership -reinstated (if it was a member and the BA canceled its membership due -to the violation). - -In practice, the BA's first approach will be to start a conversation, -with punitive enforcement used only as a last resort. Violations -often turn out to be unintentional and swiftly correctable with all -parties acting in good faith. diff -Nru temporalio-1.3.0/vendor/io-lifetimes/README.md temporalio-1.3.0/vendor/io-lifetimes/README.md --- temporalio-1.3.0/vendor/io-lifetimes/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/README.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,179 +0,0 @@ - - -This library introduces `OwnedFd`, `BorrowedFd`, and supporting types and -traits, and corresponding features for Windows, which implement safe owning -and borrowing I/O lifetime patterns. - -This is associated with [RFC 3128], the I/O Safety RFC, which is now merged. -Work is now underway to move the `OwnedFd` and `BorrowedFd` types and `AsFd` -trait developed here into `std`. - -For a quick taste, check out the code examples: - - - [hello], a basic demo of this API, doing low-level I/O manually, using the - [provided example FFI bindings] - - [easy-conversions], demonstrating the `from_into` convenience feature for - converting from an `impl Into*` into an `impl From*`. - - [portable-views], demonstrating the convenience feature which allows one - to temporarily "view" a file descriptor as any owning type such as `File` - - [flexible-apis], demonstrating how to write library APIs that accept - untyped I/O resources. - - [owning-wrapper], demonstrating how to implement a type which wraps an - `Owned*` type. - -[hello]: https://github.com/sunfishcode/io-lifetimes/blob/main/examples/hello.rs -[easy-conversions]: https://github.com/sunfishcode/io-lifetimes/blob/main/examples/easy-conversions.rs -[portable-views]: https://github.com/sunfishcode/io-lifetimes/blob/main/examples/portable-views.rs -[flexible-apis]: https://github.com/sunfishcode/io-lifetimes/blob/main/examples/flexible-apis.rs -[owning-wrapper]: https://github.com/sunfishcode/io-lifetimes/blob/main/examples/owning-wrapper.rs -[provided example FFI bindings]: https://github.com/sunfishcode/io-lifetimes/blob/main/src/example_ffi.rs - -The core of the API is very simple, and consists of two main types and three -main traits: - -```rust -pub struct BorrowedFd<'fd> { ... } -pub struct OwnedFd { ... } - -pub trait AsFd { ... } -pub trait IntoFd { ... } -pub trait FromFd { ... } - -impl AsRawFd for BorrowedFd<'_> { ... } -impl AsRawFd for OwnedFd { ... } -impl IntoRawFd for OwnedFd { ... } -impl FromRawFd for OwnedFd { ... } - -impl Drop for OwnedFd { ... } - -impl AsFd for BorrowedFd<'_> { ... } -impl AsFd for OwnedFd { ... } -impl IntoFd for OwnedFd { ... } -impl FromFd for OwnedFd { ... } -``` - -On Windows, there are `Handle` and `Socket` versions of every `Fd` thing, and -a special `HandleOrInvalid` type to cope with inconsistent error reporting -in the Windows API. - -## The magic of transparency - -Here's the fun part. `BorrowedFd` and `OwnedFd` are `repr(transparent)` and -hold `RawFd` values, and `Option` and `Option` are -FFI-safe (on Rust >= 1.63), so they can all be used in FFI [directly]: - -[directly]: https://github.com/sunfishcode/io-lifetimes/blob/main/src/example_ffi.rs - -```rust -extern "C" { - pub fn open(pathname: *const c_char, flags: c_int, ...) -> Option; - pub fn read(fd: BorrowedFd<'_>, ptr: *mut c_void, size: size_t) -> ssize_t; - pub fn write(fd: BorrowedFd<'_>, ptr: *const c_void, size: size_t) -> ssize_t; - pub fn close(fd: OwnedFd) -> c_int; -} -``` - -With bindings like this, users never have to touch `RawFd` values. Of course, -not all code will do this, but it is a fun feature for code that can. This -is what motivates having `BorrowedFd` instead of just using `&OwnedFd`. - -Note the use of `Option` as the return value of `open`, representing -the fact that it can either succeed or fail. - -## I/O Safety in Rust - -I/O Safety feature is stablized in Rust 1.63. With this version or later, -io-lifetimes will use and re-export the standard-library types and traits. With -older versions, io-lifetimes defines its own copy of these types and traits. - -io-lifetimes also includes several features which are not (yet?) in std, -including the portability traits `AsFilelike`/`AsSocketlike`/etc., the -`from_into_*` functions in the `From*` traits, and [views]. - -[views]: https://docs.rs/io-lifetimes/*/io_lifetimes/views/index.html - -## Prior Art - -There are several similar crates: [fd](https://crates.io/crates/fd), -[filedesc](https://crates.io/crates/filedesc), -[filedescriptor](https://crates.io/crates/filedescriptor), -[owned-fd](https://crates.io/crates/owned-fd), and -[unsafe-io](https://crates.io/crates/unsafe-io). - -Some of these provide additional features such as the ability to create pipes -or sockets, to get and set flags, and to do read and write operations. -io-lifetimes omits these features, leaving them to to be provided as separate -layers on top. - -Most of these crates provide ways to duplicate a file descriptor. io-lifetimes -currently treats this as another feature that can be provided by a layer on -top, though if there are use cases where this is a common operation, it could -be added. - -io-lifetimes's distinguishing features are its use of `repr(transparent)` -to support direct FFI usage, niche optimizations so `Option` can support direct -FFI usafe as well (on Rust >= 1.63), lifetime-aware `As*`/`Into*`/`From*` -traits which leverage Rust's lifetime system and allow safe and checked -`from_*` and `as_*`/`into_*` functions, and powerful convenience features -enabled by its underlying safety. - -io-lifetimes also has full Windows support, as well as Unix/Windows -portability abstractions, covering both file-like and socket-like types. - -io-lifetimes's [`OwnedFd`] type is similar to -[fd](https://crates.io/crates/fd)'s -[`FileDesc`](https://docs.rs/fd/0.2.3/fd/struct.FileDesc.html). io-lifetimes -doesn't have a `close_on_drop` parameter, and instead uses [`OwnedFd`] and -[`BorrowedFd`] to represent dropping and non-dropping handles, respectively, in -a way that is checked at compile time rather than runtime. - -io-lifetimes's [`OwnedFd`] type is also similar to -[filedesc](https://crates.io/crates/filedesc)'s -[`FileDesc`](https://docs.rs/filedesc/0.3.0/filedesc/struct.FileDesc.html) -io-lifetimes's `OwnedFd` reserves the value -1, so it doesn't need to test for -`-1` in its `Drop`, and `Option` (on Rust >= 1.63) is the same size -as `FileDesc`. - -io-lifetimes's [`OwnedFd`] type is also similar to -[owned-fd](https://crates.io/crates/owned-fd)'s -[`OwnedFd`](https://docs.rs/owned-fd/0.1.0/owned_fd/struct.OwnedFd.html). -io-lifetimes doesn't implement `Clone`, because duplicating a file descriptor -can fail due to OS process limits, while `Clone` is an infallible interface. - -io-lifetimes's [`BorrowedFd`] is similar to -[owned-fd](https://crates.io/crates/owned-fd)'s -[`FdRef`](https://docs.rs/owned-fd/0.1.0/owned_fd/struct.FdRef.html), except it -uses a lifetime parameter and `PhantomData` rather than transmuting a raw file -descriptor value into a reference value. - -io-lifetimes's convenience features are similar to those of -[unsafe-io](https://crates.io/crates/unsafe-io), but io-lifetimes is built on -its own `As*`/`Into*`/`From*` traits, rather than extending -`AsRaw*`/`IntoRaw*`/`FromRaw*` with -[`OwnsRaw`](https://docs.rs/unsafe-io/0.6.9/unsafe_io/trait.OwnsRaw.html), so -they're simpler and safer to use. io-lifetimes doesn't include unsafe-io's -`*ReadWrite*` or `*HandleOrSocket*` abstractions, and leaves these as features -to be provided by separate layers on top. - -## Minimum Supported Rust Version (MSRV) - -This crate currently works on the version of [Rust on Debian stable], which is -currently Rust 1.48. This policy may change in the future, in minor version -releases, so users using a fixed version of Rust should pin to a specific -version of this crate. - -[`OwnedFd`]: https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html -[`BorrowedFd`]: https://doc.rust-lang.org/stable/std/os/fd/struct.BorrowedFd.html -[RFC 3128]: https://github.com/rust-lang/rfcs/blob/master/text/3128-io-safety.md diff -Nru temporalio-1.3.0/vendor/io-lifetimes/src/example_ffi.rs temporalio-1.3.0/vendor/io-lifetimes/src/example_ffi.rs --- temporalio-1.3.0/vendor/io-lifetimes/src/example_ffi.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/src/example_ffi.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,78 +0,0 @@ -//! This is just a sample of what FFI using this crate can look like. - -#![cfg_attr(not(io_safety_is_in_std), allow(unused_imports))] -#![allow(missing_docs)] - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -use crate::{BorrowedFd, OwnedFd}; -#[cfg(windows)] -use crate::{BorrowedHandle, HandleOrInvalid}; - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -use libc::{c_char, c_int, c_void, size_t, ssize_t}; -#[cfg(windows)] -use { - core::ffi::c_void, - windows_sys::core::PCWSTR, - windows_sys::Win32::Foundation::BOOL, - windows_sys::Win32::Security::SECURITY_ATTRIBUTES, - windows_sys::Win32::Storage::FileSystem::{ - FILE_CREATION_DISPOSITION, FILE_FLAGS_AND_ATTRIBUTES, FILE_SHARE_MODE, - }, - windows_sys::Win32::System::IO::OVERLAPPED, -}; - -// Declare a few FFI functions ourselves, to show off the FFI ergonomics. -#[cfg(all( - io_safety_is_in_std, - any(unix, target_os = "wasi", target_os = "hermit") -))] -extern "C" { - pub fn open(pathname: *const c_char, flags: c_int, ...) -> Option; -} -#[cfg(any(unix, target_os = "wasi"))] -extern "C" { - pub fn read(fd: BorrowedFd<'_>, ptr: *mut c_void, size: size_t) -> ssize_t; - pub fn write(fd: BorrowedFd<'_>, ptr: *const c_void, size: size_t) -> ssize_t; -} -#[cfg(any(unix, target_os = "wasi"))] -pub use libc::{O_CLOEXEC, O_CREAT, O_RDONLY, O_RDWR, O_TRUNC, O_WRONLY}; - -// The Windows analogs of the above. Note the use of [`HandleOrInvalid`] as -// the return type for `CreateFileW`, since that function is defined to return -// [`INVALID_HANDLE_VALUE`] on error instead of null. -#[cfg(windows)] -extern "system" { - pub fn CreateFileW( - lpfilename: PCWSTR, - dwdesiredaccess: u32, - dwsharemode: FILE_SHARE_MODE, - lpsecurityattributes: *const SECURITY_ATTRIBUTES, - dwcreationdisposition: FILE_CREATION_DISPOSITION, - dwflagsandattributes: FILE_FLAGS_AND_ATTRIBUTES, - htemplatefile: HANDLE, - ) -> HandleOrInvalid; - pub fn ReadFile( - hfile: BorrowedHandle<'_>, - lpbuffer: *mut c_void, - nnumberofbytestoread: u32, - lpnumberofbytesread: *mut u32, - lpoverlapped: *mut OVERLAPPED, - ) -> BOOL; - pub fn WriteFile( - hfile: BorrowedHandle<'_>, - lpbuffer: *const c_void, - nnumberofbytestowrite: u32, - lpnumberofbyteswritten: *mut u32, - lpoverlapped: *mut OVERLAPPED, - ) -> BOOL; -} - -#[cfg(windows)] -pub use { - windows_sys::Win32::Foundation::HANDLE, - windows_sys::Win32::Storage::FileSystem::{ - CREATE_ALWAYS, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, FILE_GENERIC_READ, FILE_GENERIC_WRITE, - OPEN_EXISTING, - }, -}; diff -Nru temporalio-1.3.0/vendor/io-lifetimes/src/impls_async_std.rs temporalio-1.3.0/vendor/io-lifetimes/src/impls_async_std.rs --- temporalio-1.3.0/vendor/io-lifetimes/src/impls_async_std.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/src/impls_async_std.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,509 +0,0 @@ -//! Implementations of io-lifetimes' traits for async-std's types. In the -//! future, we'll prefer to have crates provide their own impls; this is -//! just a temporary measure. - -#[cfg(any(unix, target_os = "wasi"))] -use crate::{AsFd, BorrowedFd, FromFd, IntoFd, OwnedFd}; -#[cfg(windows)] -use crate::{ - AsHandle, AsSocket, BorrowedHandle, BorrowedSocket, FromHandle, FromSocket, IntoHandle, - IntoSocket, OwnedHandle, OwnedSocket, -}; -#[cfg(unix)] -use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd}; -#[cfg(target_os = "wasi")] -use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd}; -#[cfg(windows)] -use std::os::windows::io::{ - AsRawHandle, AsRawSocket, FromRawHandle, FromRawSocket, IntoRawHandle, IntoRawSocket, -}; - -unsafe impl FilelikeViewType for async_std::fs::File {} - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for async_std::fs::File { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for async_std::fs::File { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl IntoFd for async_std::fs::File { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for OwnedFd { - #[inline] - fn from(owned: async_std::fs::File) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoHandle for async_std::fs::File { - #[inline] - fn into_handle(self) -> OwnedHandle { - unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl From for OwnedHandle { - #[inline] - fn from(owned: async_std::fs::File) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl FromFd for async_std::fs::File { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for async_std::fs::File { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl FromHandle for async_std::fs::File { - #[inline] - fn from_handle(owned: OwnedHandle) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl From for async_std::fs::File { - #[inline] - fn from(owned: OwnedHandle) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for async_std::net::TcpStream { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsSocket for async_std::net::TcpStream { - #[inline] - fn as_socket(&self) -> BorrowedSocket<'_> { - unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl IntoFd for async_std::net::TcpStream { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for OwnedFd { - #[inline] - fn from(owned: async_std::net::TcpStream) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoSocket for async_std::net::TcpStream { - #[inline] - fn into_socket(self) -> OwnedSocket { - unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for OwnedSocket { - #[inline] - fn from(owned: async_std::net::TcpStream) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl FromFd for async_std::net::TcpStream { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for async_std::net::TcpStream { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl FromSocket for async_std::net::TcpStream { - #[inline] - fn from_socket(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for async_std::net::TcpStream { - #[inline] - fn from(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for async_std::net::TcpListener { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsSocket for async_std::net::TcpListener { - #[inline] - fn as_socket(&self) -> BorrowedSocket<'_> { - unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl IntoFd for async_std::net::TcpListener { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for OwnedFd { - #[inline] - fn from(owned: async_std::net::TcpListener) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoSocket for async_std::net::TcpListener { - #[inline] - fn into_socket(self) -> OwnedSocket { - unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for OwnedSocket { - #[inline] - fn from(owned: async_std::net::TcpListener) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl FromFd for async_std::net::TcpListener { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for async_std::net::TcpListener { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl FromSocket for async_std::net::TcpListener { - #[inline] - fn from_socket(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for async_std::net::TcpListener { - #[inline] - fn from(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for async_std::net::UdpSocket { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsSocket for async_std::net::UdpSocket { - #[inline] - fn as_socket(&self) -> BorrowedSocket<'_> { - unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl IntoFd for async_std::net::UdpSocket { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for OwnedFd { - #[inline] - fn from(owned: async_std::net::UdpSocket) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoSocket for async_std::net::UdpSocket { - #[inline] - fn into_socket(self) -> OwnedSocket { - unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for OwnedSocket { - #[inline] - fn from(owned: async_std::net::UdpSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl FromFd for async_std::net::UdpSocket { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for async_std::net::UdpSocket { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl FromSocket for async_std::net::UdpSocket { - #[inline] - fn from_socket(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for async_std::net::UdpSocket { - #[inline] - fn from(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for async_std::io::Stdin { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for async_std::io::Stdin { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for async_std::io::Stdout { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for async_std::io::Stdout { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for async_std::io::Stderr { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for async_std::io::Stderr { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(unix)] -impl AsFd for async_std::os::unix::net::UnixStream { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(unix)] -impl IntoFd for async_std::os::unix::net::UnixStream { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for OwnedFd { - #[inline] - fn from(owned: async_std::os::unix::net::UnixStream) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl FromFd for async_std::os::unix::net::UnixStream { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for async_std::os::unix::net::UnixStream { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl AsFd for async_std::os::unix::net::UnixListener { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(unix)] -impl IntoFd for async_std::os::unix::net::UnixListener { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for OwnedFd { - #[inline] - fn from(owned: async_std::os::unix::net::UnixListener) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl FromFd for async_std::os::unix::net::UnixListener { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for async_std::os::unix::net::UnixListener { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl AsFd for async_std::os::unix::net::UnixDatagram { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(unix)] -impl IntoFd for async_std::os::unix::net::UnixDatagram { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for OwnedFd { - #[inline] - fn from(owned: async_std::os::unix::net::UnixDatagram) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl FromFd for async_std::os::unix::net::UnixDatagram { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for async_std::os::unix::net::UnixDatagram { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} diff -Nru temporalio-1.3.0/vendor/io-lifetimes/src/impls_fs_err.rs temporalio-1.3.0/vendor/io-lifetimes/src/impls_fs_err.rs --- temporalio-1.3.0/vendor/io-lifetimes/src/impls_fs_err.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/src/impls_fs_err.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -//! Implementations of io-lifetimes' traits for fs_err's types. In the -//! future, we'll prefer to have crates provide their own impls; this is -//! just a temporary measure. - -#[cfg(any(unix, target_os = "wasi"))] -use crate::{AsFd, BorrowedFd, IntoFd, OwnedFd}; -#[cfg(windows)] -use crate::{AsHandle, BorrowedHandle, IntoHandle, OwnedHandle}; -#[cfg(unix)] -use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd}; -#[cfg(target_os = "wasi")] -use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd}; -#[cfg(windows)] -use std::os::windows::io::{AsRawHandle, FromRawHandle, IntoRawHandle}; - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for fs_err::File { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for fs_err::File { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl IntoFd for fs_err::File { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for OwnedFd { - #[inline] - fn from(owned: fs_err::File) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoHandle for fs_err::File { - #[inline] - fn into_handle(self) -> OwnedHandle { - unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl From for OwnedHandle { - #[inline] - fn from(owned: fs_err::File) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} diff -Nru temporalio-1.3.0/vendor/io-lifetimes/src/impls_mio.rs temporalio-1.3.0/vendor/io-lifetimes/src/impls_mio.rs --- temporalio-1.3.0/vendor/io-lifetimes/src/impls_mio.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/src/impls_mio.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,454 +0,0 @@ -//! Implementations of io-lifetimes' traits for mio's types. In the -//! future, we'll prefer to have crates provide their own impls; this is -//! just a temporary measure. - -#[cfg(any(unix, target_os = "wasi"))] -use crate::{AsFd, BorrowedFd, FromFd, IntoFd, OwnedFd}; -#[cfg(windows)] -use crate::{AsSocket, BorrowedSocket, FromSocket, IntoSocket, OwnedSocket}; -#[cfg(unix)] -use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd}; -#[cfg(target_os = "wasi")] -use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd}; -#[cfg(windows)] -use std::os::windows::io::{AsRawSocket, FromRawSocket, IntoRawSocket}; - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for mio::net::TcpStream { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsSocket for mio::net::TcpStream { - #[inline] - fn as_socket(&self) -> BorrowedSocket<'_> { - unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl IntoFd for mio::net::TcpStream { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for OwnedFd { - #[inline] - fn from(owned: mio::net::TcpStream) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoSocket for mio::net::TcpStream { - #[inline] - fn into_socket(self) -> OwnedSocket { - unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for OwnedSocket { - #[inline] - fn from(owned: mio::net::TcpStream) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl FromFd for mio::net::TcpStream { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for mio::net::TcpStream { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl FromSocket for mio::net::TcpStream { - #[inline] - fn from_socket(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for mio::net::TcpStream { - #[inline] - fn from(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for mio::net::TcpListener { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsSocket for mio::net::TcpListener { - #[inline] - fn as_socket(&self) -> BorrowedSocket<'_> { - unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl IntoFd for mio::net::TcpListener { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for OwnedFd { - #[inline] - fn from(owned: mio::net::TcpListener) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoSocket for mio::net::TcpListener { - #[inline] - fn into_socket(self) -> OwnedSocket { - unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for OwnedSocket { - #[inline] - fn from(owned: mio::net::TcpListener) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl FromFd for mio::net::TcpListener { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for mio::net::TcpListener { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl FromSocket for mio::net::TcpListener { - #[inline] - fn from_socket(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for mio::net::TcpListener { - #[inline] - fn from(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for mio::net::UdpSocket { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsSocket for mio::net::UdpSocket { - #[inline] - fn as_socket(&self) -> BorrowedSocket<'_> { - unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl IntoFd for mio::net::UdpSocket { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for OwnedFd { - #[inline] - fn from(owned: mio::net::UdpSocket) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoSocket for mio::net::UdpSocket { - #[inline] - fn into_socket(self) -> OwnedSocket { - unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for OwnedSocket { - #[inline] - fn from(owned: mio::net::UdpSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl FromFd for mio::net::UdpSocket { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for mio::net::UdpSocket { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl FromSocket for mio::net::UdpSocket { - #[inline] - fn from_socket(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for mio::net::UdpSocket { - #[inline] - fn from(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(unix)] -impl AsFd for mio::net::UnixDatagram { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(unix)] -impl IntoFd for mio::net::UnixDatagram { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for OwnedFd { - #[inline] - fn from(owned: mio::net::UnixDatagram) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl FromFd for mio::net::UnixDatagram { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for mio::net::UnixDatagram { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl AsFd for mio::net::UnixListener { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(unix)] -impl IntoFd for mio::net::UnixListener { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for OwnedFd { - #[inline] - fn from(owned: mio::net::UnixListener) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl FromFd for mio::net::UnixListener { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for mio::net::UnixListener { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl AsFd for mio::net::UnixStream { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(unix)] -impl IntoFd for mio::net::UnixStream { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for OwnedFd { - #[inline] - fn from(owned: mio::net::UnixStream) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl FromFd for mio::net::UnixStream { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for mio::net::UnixStream { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl AsFd for mio::unix::pipe::Receiver { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(unix)] -impl IntoFd for mio::unix::pipe::Receiver { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for OwnedFd { - #[inline] - fn from(owned: mio::unix::pipe::Receiver) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl FromFd for mio::unix::pipe::Receiver { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for mio::unix::pipe::Receiver { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl AsFd for mio::unix::pipe::Sender { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(unix)] -impl IntoFd for mio::unix::pipe::Sender { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for OwnedFd { - #[inline] - fn from(owned: mio::unix::pipe::Sender) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl FromFd for mio::unix::pipe::Sender { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for mio::unix::pipe::Sender { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} diff -Nru temporalio-1.3.0/vendor/io-lifetimes/src/impls_os_pipe.rs temporalio-1.3.0/vendor/io-lifetimes/src/impls_os_pipe.rs --- temporalio-1.3.0/vendor/io-lifetimes/src/impls_os_pipe.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/src/impls_os_pipe.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,174 +0,0 @@ -//! Implementations of io-lifetimes' traits for os_pipe's types. In the -//! future, we'll prefer to have crates provide their own impls; this is -//! just a temporary measure. - -#[cfg(any(unix, target_os = "wasi"))] -use crate::{AsFd, BorrowedFd, FromFd, IntoFd, OwnedFd}; -#[cfg(windows)] -use crate::{AsHandle, BorrowedHandle, FromHandle, IntoHandle, OwnedHandle}; -#[cfg(unix)] -use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd}; -#[cfg(target_os = "wasi")] -use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd}; -#[cfg(windows)] -use std::os::windows::io::{AsRawHandle, FromRawHandle, IntoRawHandle}; - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for os_pipe::PipeReader { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for os_pipe::PipeReader { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl IntoFd for os_pipe::PipeReader { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for OwnedFd { - #[inline] - fn from(owned: os_pipe::PipeReader) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoHandle for os_pipe::PipeReader { - #[inline] - fn into_handle(self) -> OwnedHandle { - unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl From for OwnedHandle { - #[inline] - fn from(owned: os_pipe::PipeReader) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl FromFd for os_pipe::PipeReader { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for os_pipe::PipeReader { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl FromHandle for os_pipe::PipeReader { - #[inline] - fn from_handle(owned: OwnedHandle) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl From for os_pipe::PipeReader { - #[inline] - fn from(owned: OwnedHandle) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for os_pipe::PipeWriter { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for os_pipe::PipeWriter { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl IntoFd for os_pipe::PipeWriter { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for OwnedFd { - #[inline] - fn from(owned: os_pipe::PipeWriter) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoHandle for os_pipe::PipeWriter { - #[inline] - fn into_handle(self) -> OwnedHandle { - unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl From for OwnedHandle { - #[inline] - fn from(owned: os_pipe::PipeWriter) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl FromFd for os_pipe::PipeWriter { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for os_pipe::PipeWriter { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl FromHandle for os_pipe::PipeWriter { - #[inline] - fn from_handle(owned: OwnedHandle) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl From for os_pipe::PipeWriter { - #[inline] - fn from(owned: OwnedHandle) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} diff -Nru temporalio-1.3.0/vendor/io-lifetimes/src/impls_socket2.rs temporalio-1.3.0/vendor/io-lifetimes/src/impls_socket2.rs --- temporalio-1.3.0/vendor/io-lifetimes/src/impls_socket2.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/src/impls_socket2.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,94 +0,0 @@ -//! Implementations of io-lifetimes' traits for socket2's types. In the -//! future, we'll prefer to have crates provide their own impls; this is -//! just a temporary measure. - -#[cfg(any(unix, target_os = "wasi"))] -use crate::{AsFd, BorrowedFd, FromFd, IntoFd, OwnedFd}; -#[cfg(windows)] -use crate::{AsSocket, BorrowedSocket, FromSocket, IntoSocket, OwnedSocket}; -#[cfg(unix)] -use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd}; -#[cfg(target_os = "wasi")] -use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd}; -#[cfg(windows)] -use std::os::windows::io::{AsRawSocket, FromRawSocket, IntoRawSocket}; - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for socket2::Socket { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsSocket for socket2::Socket { - #[inline] - fn as_socket(&self) -> BorrowedSocket<'_> { - unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl IntoFd for socket2::Socket { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for OwnedFd { - #[inline] - fn from(owned: socket2::Socket) -> Self { - unsafe { OwnedFd::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoSocket for socket2::Socket { - #[inline] - fn into_socket(self) -> OwnedSocket { - unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for OwnedSocket { - #[inline] - fn from(owned: socket2::Socket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl FromFd for socket2::Socket { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for socket2::Socket { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl FromSocket for socket2::Socket { - #[inline] - fn from_socket(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for socket2::Socket { - #[inline] - fn from(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} diff -Nru temporalio-1.3.0/vendor/io-lifetimes/src/impls_std.rs temporalio-1.3.0/vendor/io-lifetimes/src/impls_std.rs --- temporalio-1.3.0/vendor/io-lifetimes/src/impls_std.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/src/impls_std.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,892 +0,0 @@ -#![allow(deprecated)] // Don't warn on `IntoFd` and `FromFd` impls. - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -use crate::{AsFd, FromFd, IntoFd}; -#[cfg(windows)] -use crate::{AsHandle, AsSocket, FromHandle, FromSocket, IntoHandle, IntoSocket}; -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -use crate::{BorrowedFd, OwnedFd}; -#[cfg(windows)] -use crate::{BorrowedHandle, BorrowedSocket, HandleOrInvalid, OwnedHandle, OwnedSocket}; -#[cfg(target_os = "hermit")] -use std::os::hermit::io::{AsRawFd, FromRawFd, IntoRawFd}; -#[cfg(unix)] -use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd}; -#[cfg(target_os = "wasi")] -use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd}; -#[cfg(windows)] -use std::os::windows::io::{ - AsRawHandle, AsRawSocket, FromRawHandle, FromRawSocket, IntoRawHandle, IntoRawSocket, -}; - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl AsFd for BorrowedFd<'_> { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for BorrowedHandle<'_> { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(windows)] -impl AsSocket for BorrowedSocket<'_> { - #[inline] - fn as_socket(&self) -> BorrowedSocket<'_> { - unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl AsFd for OwnedFd { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for OwnedHandle { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(windows)] -impl AsSocket for OwnedSocket { - #[inline] - fn as_socket(&self) -> BorrowedSocket<'_> { - unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl IntoFd for OwnedFd { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { Self::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoHandle for OwnedHandle { - #[inline] - fn into_handle(self) -> OwnedHandle { - unsafe { Self::from_raw_handle(self.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl IntoSocket for OwnedSocket { - #[inline] - fn into_socket(self) -> OwnedSocket { - unsafe { Self::from_raw_socket(self.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl FromFd for OwnedFd { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl FromHandle for OwnedHandle { - #[inline] - fn from_handle(owned: OwnedHandle) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl FromSocket for OwnedSocket { - #[inline] - fn from_socket(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl FromHandle for HandleOrInvalid { - #[inline] - fn from_handle(owned: OwnedHandle) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl From for HandleOrInvalid { - #[inline] - fn from(owned: OwnedHandle) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl AsFd for std::fs::File { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for std::fs::File { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl IntoFd for std::fs::File { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl From for OwnedFd { - #[inline] - fn from(owned: std::fs::File) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoHandle for std::fs::File { - #[inline] - fn into_handle(self) -> OwnedHandle { - unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl From for OwnedHandle { - #[inline] - fn from(owned: std::fs::File) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl FromFd for std::fs::File { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl From for std::fs::File { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl FromHandle for std::fs::File { - #[inline] - fn from_handle(owned: OwnedHandle) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl From for std::fs::File { - #[inline] - fn from(owned: OwnedHandle) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl AsFd for std::net::TcpStream { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsSocket for std::net::TcpStream { - #[inline] - fn as_socket(&self) -> BorrowedSocket<'_> { - unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl IntoFd for std::net::TcpStream { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl From for OwnedFd { - #[inline] - fn from(owned: std::net::TcpStream) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoSocket for std::net::TcpStream { - #[inline] - fn into_socket(self) -> OwnedSocket { - unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for OwnedSocket { - #[inline] - fn from(owned: std::net::TcpStream) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl FromFd for std::net::TcpStream { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl From for std::net::TcpStream { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl FromSocket for std::net::TcpStream { - #[inline] - fn from_socket(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for std::net::TcpStream { - #[inline] - fn from(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl AsFd for std::net::TcpListener { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsSocket for std::net::TcpListener { - #[inline] - fn as_socket(&self) -> BorrowedSocket<'_> { - unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl IntoFd for std::net::TcpListener { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl From for OwnedFd { - #[inline] - fn from(owned: std::net::TcpListener) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoSocket for std::net::TcpListener { - #[inline] - fn into_socket(self) -> OwnedSocket { - unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for OwnedSocket { - #[inline] - fn from(owned: std::net::TcpListener) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl FromFd for std::net::TcpListener { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl From for std::net::TcpListener { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl FromSocket for std::net::TcpListener { - #[inline] - fn from_socket(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for std::net::TcpListener { - #[inline] - fn from(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl AsFd for std::net::UdpSocket { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsSocket for std::net::UdpSocket { - #[inline] - fn as_socket(&self) -> BorrowedSocket { - unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl IntoFd for std::net::UdpSocket { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl From for OwnedFd { - #[inline] - fn from(owned: std::net::UdpSocket) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoSocket for std::net::UdpSocket { - #[inline] - fn into_socket(self) -> OwnedSocket { - unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for OwnedSocket { - #[inline] - fn from(owned: std::net::UdpSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl FromFd for std::net::UdpSocket { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl From for std::net::UdpSocket { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl FromSocket for std::net::UdpSocket { - #[inline] - fn from_socket(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(windows)] -impl From for std::net::UdpSocket { - #[inline] - fn from(owned: OwnedSocket) -> Self { - unsafe { Self::from_raw_socket(owned.into_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl AsFd for std::io::Stdin { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for std::io::Stdin { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl<'a> AsFd for std::io::StdinLock<'a> { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl<'a> AsHandle for std::io::StdinLock<'a> { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl AsFd for std::io::Stdout { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for std::io::Stdout { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl<'a> AsFd for std::io::StdoutLock<'a> { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl<'a> AsHandle for std::io::StdoutLock<'a> { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl AsFd for std::io::Stderr { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for std::io::Stderr { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl<'a> AsFd for std::io::StderrLock<'a> { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl<'a> AsHandle for std::io::StderrLock<'a> { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(unix)] -impl AsFd for std::process::ChildStdin { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for std::process::ChildStdin { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(unix)] -impl IntoFd for std::process::ChildStdin { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for OwnedFd { - #[inline] - fn from(owned: std::process::ChildStdin) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoHandle for std::process::ChildStdin { - #[inline] - fn into_handle(self) -> OwnedHandle { - unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl From for OwnedHandle { - #[inline] - fn from(owned: std::process::ChildStdin) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(unix)] -impl AsFd for std::process::ChildStdout { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for std::process::ChildStdout { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(unix)] -impl IntoFd for std::process::ChildStdout { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for OwnedFd { - #[inline] - fn from(owned: std::process::ChildStdout) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoHandle for std::process::ChildStdout { - #[inline] - fn into_handle(self) -> OwnedHandle { - unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl From for OwnedHandle { - #[inline] - fn from(owned: std::process::ChildStdout) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(unix)] -impl AsFd for std::process::ChildStderr { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for std::process::ChildStderr { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(unix)] -impl IntoFd for std::process::ChildStderr { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for OwnedFd { - #[inline] - fn from(owned: std::process::ChildStderr) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl IntoHandle for std::process::ChildStderr { - #[inline] - fn into_handle(self) -> OwnedHandle { - unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl From for OwnedHandle { - #[inline] - fn from(owned: std::process::ChildStderr) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(unix)] -impl FromFd for std::process::Stdio { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for std::process::Stdio { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl FromHandle for std::process::Stdio { - #[inline] - fn from_handle(owned: OwnedHandle) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl From for std::process::Stdio { - #[inline] - fn from(owned: OwnedHandle) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl AsHandle for std::process::Child { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(windows)] -impl IntoHandle for std::process::Child { - #[inline] - fn into_handle(self) -> OwnedHandle { - unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl From for OwnedHandle { - #[inline] - fn from(owned: std::process::Child) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(unix)] -impl AsFd for std::os::unix::net::UnixStream { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(unix)] -impl IntoFd for std::os::unix::net::UnixStream { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for OwnedFd { - #[inline] - fn from(owned: std::os::unix::net::UnixStream) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl FromFd for std::os::unix::net::UnixStream { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for std::os::unix::net::UnixStream { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl AsFd for std::os::unix::net::UnixListener { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(unix)] -impl IntoFd for std::os::unix::net::UnixListener { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for OwnedFd { - #[inline] - fn from(owned: std::os::unix::net::UnixListener) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl FromFd for std::os::unix::net::UnixListener { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for std::os::unix::net::UnixListener { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl AsFd for std::os::unix::net::UnixDatagram { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(unix)] -impl IntoFd for std::os::unix::net::UnixDatagram { - #[inline] - fn into_fd(self) -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for OwnedFd { - #[inline] - fn from(owned: std::os::unix::net::UnixDatagram) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl FromFd for std::os::unix::net::UnixDatagram { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(unix)] -impl From for std::os::unix::net::UnixDatagram { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for std::thread::JoinHandle { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(windows)] -impl IntoHandle for std::thread::JoinHandle { - #[inline] - fn into_handle(self) -> OwnedHandle { - unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl From> for OwnedHandle { - #[inline] - fn from(owned: std::thread::JoinHandle) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} diff -Nru temporalio-1.3.0/vendor/io-lifetimes/src/impls_tokio.rs temporalio-1.3.0/vendor/io-lifetimes/src/impls_tokio.rs --- temporalio-1.3.0/vendor/io-lifetimes/src/impls_tokio.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/src/impls_tokio.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,214 +0,0 @@ -//! Implementations of io-lifetimes' traits for tokio's types. In the -//! future, we'll prefer to have crates provide their own impls; this is -//! just a temporary measure. - -#[cfg(any(unix, target_os = "wasi"))] -use crate::{AsFd, BorrowedFd, FromFd, OwnedFd}; -#[cfg(windows)] -use crate::{AsHandle, AsSocket, BorrowedHandle, BorrowedSocket, FromHandle, OwnedHandle}; -#[cfg(unix)] -use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd}; -#[cfg(target_os = "wasi")] -use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd}; -#[cfg(windows)] -use std::os::windows::io::{AsRawHandle, AsRawSocket, FromRawHandle, IntoRawHandle}; - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for tokio::fs::File { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for tokio::fs::File { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl FromFd for tokio::fs::File { - #[inline] - fn from_fd(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl From for tokio::fs::File { - #[inline] - fn from(owned: OwnedFd) -> Self { - unsafe { Self::from_raw_fd(owned.into_raw_fd()) } - } -} - -#[cfg(windows)] -impl FromHandle for tokio::fs::File { - #[inline] - fn from_handle(owned: OwnedHandle) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(windows)] -impl From for tokio::fs::File { - #[inline] - fn from(owned: OwnedHandle) -> Self { - unsafe { Self::from_raw_handle(owned.into_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for tokio::net::TcpStream { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsSocket for tokio::net::TcpStream { - #[inline] - fn as_socket(&self) -> BorrowedSocket<'_> { - unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for tokio::net::TcpListener { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsSocket for tokio::net::TcpListener { - #[inline] - fn as_socket(&self) -> BorrowedSocket<'_> { - unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for tokio::net::UdpSocket { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsSocket for tokio::net::UdpSocket { - #[inline] - fn as_socket(&self) -> BorrowedSocket<'_> { - unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for tokio::io::Stdin { - #[inline] - fn as_fd(&self) -> BorrowedFd { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for tokio::io::Stdin { - #[inline] - fn as_handle(&self) -> BorrowedHandle { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for tokio::io::Stdout { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for tokio::io::Stdout { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for tokio::io::Stderr { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for tokio::io::Stderr { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(unix)] -impl AsFd for tokio::net::UnixStream { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(unix)] -impl AsFd for tokio::net::UnixListener { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(unix)] -impl AsFd for tokio::net::UnixDatagram { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl AsFd for tokio::process::ChildStdout { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} - -#[cfg(windows)] -impl AsHandle for tokio::process::ChildStdin { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(windows)] -impl AsHandle for tokio::process::ChildStdout { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} - -#[cfg(windows)] -impl AsHandle for tokio::process::ChildStderr { - #[inline] - fn as_handle(&self) -> BorrowedHandle { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } -} diff -Nru temporalio-1.3.0/vendor/io-lifetimes/src/lib.rs temporalio-1.3.0/vendor/io-lifetimes/src/lib.rs --- temporalio-1.3.0/vendor/io-lifetimes/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,190 +0,0 @@ -//! Experimental new types and traits to replace the `Raw` family of types and -//! traits. -//! -//! This API has much conceptual similarity with the `Raw` API, but introduces -//! explicit concepts of ownership and borrowing: -//! -//! | `Raw` API | This experimental API | -//! | ---------- | ------------------------ | -//! | `Raw*` | `Borrowed*` and `Owned*` | -//! | `AsRaw*` | `As*` | -//! | `IntoRaw*` | `Into*` | -//! | `FromRaw*` | `From*` | -//! -//! This gives it several advantages: -//! -//! - Less `unsafe` in user code! -//! -//! - Easier to understand ownership. -//! -//! - It avoids the inconsistency where `AsRawFd` and `IntoRawFd` return -//! `RawFd` values that users ought to be able to trust, but aren't unsafe, -//! so it's possible to fail to uphold this trust in purely safe Rust. -//! -//! - It enables a number of safe and portable convenience features, such as -//! [safe typed views] and [from+into conversions]. -//! -//! [safe typed views]: AsFilelike::as_filelike_view -//! [from+into conversions]: FromFilelike::from_into_filelike - -#![deny(missing_docs)] -// Work around . -#![cfg_attr(all(wasi_ext, target_os = "wasi"), feature(wasi_ext))] -// Currently supported platforms. -#![cfg(any(unix, windows, target_os = "wasi", target_os = "hermit"))] - -mod portability; -mod traits; -#[cfg(not(io_safety_is_in_std))] -mod types; - -#[cfg(not(io_safety_is_in_std))] -mod impls_std; - -#[cfg(not(io_safety_is_in_std))] -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub use traits::AsFd; -#[cfg(not(io_safety_is_in_std))] -#[cfg(windows)] -pub use traits::{AsHandle, AsSocket}; -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -#[allow(deprecated)] -pub use traits::{FromFd, IntoFd}; -#[cfg(windows)] -#[allow(deprecated)] -pub use traits::{FromHandle, FromSocket, IntoHandle, IntoSocket}; - -#[cfg(not(io_safety_is_in_std))] -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub use types::{BorrowedFd, OwnedFd}; -#[cfg(not(io_safety_is_in_std))] -#[cfg(windows)] -pub use types::{ - BorrowedHandle, BorrowedSocket, HandleOrInvalid, InvalidHandleError, NullHandleError, - OwnedHandle, OwnedSocket, -}; - -#[cfg(io_safety_is_in_std)] -#[cfg(target_os = "hermit")] -pub use std::os::hermit::io::{AsFd, BorrowedFd, OwnedFd}; -#[cfg(io_safety_is_in_std)] -#[cfg(unix)] -pub use std::os::unix::io::{AsFd, BorrowedFd, OwnedFd}; -#[cfg(io_safety_is_in_std)] -#[cfg(target_os = "wasi")] -pub use std::os::wasi::io::{AsFd, BorrowedFd, OwnedFd}; -#[cfg(io_safety_is_in_std)] -#[cfg(windows)] -pub use std::os::windows::io::{ - AsHandle, AsSocket, BorrowedHandle, BorrowedSocket, HandleOrInvalid, InvalidHandleError, - NullHandleError, OwnedHandle, OwnedSocket, -}; - -// io-lifetimes defined `FromFd`/`IntoFd` traits instead of just using -// `From`/`Into` because that allowed it to implement them for foreign types, -// including std types like File and TcpStream, and popular third-party types. -// -// std just uses `From`/`Into`, because it defines those traits itself so it -// can implement them for std types itself, and std won't be implementing them -// for third-party types. However, this means that until `OwnedFd` et al are -// stabilized, there will be no impls for third-party traits. -// -// So we define `FromFd`/`IntoFd` traits, and implement them in terms of -// `From`/`Into`, -#[cfg(io_safety_is_in_std)] -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -#[allow(deprecated)] -impl> FromFd for T { - #[inline] - fn from_fd(owned_fd: OwnedFd) -> Self { - owned_fd.into() - } -} -#[cfg(io_safety_is_in_std)] -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -#[allow(deprecated)] -impl IntoFd for T -where - OwnedFd: From, -{ - #[inline] - fn into_fd(self) -> OwnedFd { - self.into() - } -} - -#[cfg(io_safety_is_in_std)] -#[cfg(windows)] -#[allow(deprecated)] -impl> FromHandle for T { - #[inline] - fn from_handle(owned_handle: OwnedHandle) -> Self { - owned_handle.into() - } -} -#[cfg(io_safety_is_in_std)] -#[cfg(windows)] -#[allow(deprecated)] -impl IntoHandle for T -where - OwnedHandle: From, -{ - #[inline] - fn into_handle(self) -> OwnedHandle { - self.into() - } -} - -#[cfg(io_safety_is_in_std)] -#[cfg(windows)] -#[allow(deprecated)] -impl> FromSocket for T { - #[inline] - fn from_socket(owned_socket: OwnedSocket) -> Self { - owned_socket.into() - } -} -#[cfg(io_safety_is_in_std)] -#[cfg(windows)] -#[allow(deprecated)] -impl IntoSocket for T -where - OwnedSocket: From, -{ - #[inline] - fn into_socket(self) -> OwnedSocket { - self.into() - } -} - -pub use portability::{ - AsFilelike, AsSocketlike, BorrowedFilelike, BorrowedSocketlike, FromFilelike, FromSocketlike, - IntoFilelike, IntoSocketlike, OwnedFilelike, OwnedSocketlike, -}; - -#[cfg(feature = "close")] -pub mod example_ffi; -pub mod raw; -pub mod views; - -// Ideally, we'd want crates to implement our traits themselves. But for now, -// while we're prototyping, we provide a few impls on foreign types. -#[cfg(not(io_safety_is_in_std))] -#[cfg(feature = "async-std")] -mod impls_async_std; -#[cfg(not(io_safety_is_in_std))] -#[cfg(feature = "fs-err")] -mod impls_fs_err; -#[cfg(not(io_safety_is_in_std))] -#[cfg(feature = "mio")] -mod impls_mio; -#[cfg(not(target_os = "wasi"))] -#[cfg(not(io_safety_is_in_std))] -#[cfg(feature = "os_pipe")] -mod impls_os_pipe; -#[cfg(not(io_safety_is_in_std))] -#[cfg(feature = "socket2")] -mod impls_socket2; -#[cfg(not(io_safety_is_in_std))] -#[cfg(feature = "tokio")] -mod impls_tokio; diff -Nru temporalio-1.3.0/vendor/io-lifetimes/src/portability.rs temporalio-1.3.0/vendor/io-lifetimes/src/portability.rs --- temporalio-1.3.0/vendor/io-lifetimes/src/portability.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/src/portability.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,526 +0,0 @@ -//! Portability abstractions over `Owned*` and `Borrowed*`. -//! -//! On Unix, "everything is a file descriptor". On Windows, file/pipe/process -//! handles are distinct from socket descriptors. This file provides a minimal -//! layer of portability over this difference. - -use crate::views::{FilelikeView, FilelikeViewType, SocketlikeView, SocketlikeViewType}; -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -use crate::{AsFd, BorrowedFd, OwnedFd}; -#[cfg(windows)] -use crate::{AsHandle, AsSocket, BorrowedHandle, BorrowedSocket, OwnedHandle, OwnedSocket}; - -/// A reference to a filelike object. -/// -/// This is a portability abstraction over Unix-like [`BorrowedFd`] and -/// Windows' `BorrowedHandle`. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub type BorrowedFilelike<'filelike> = BorrowedFd<'filelike>; - -/// A reference to a filelike object. -/// -/// This is a portability abstraction over Unix-like `BorrowedFd` and -/// Windows' [`BorrowedHandle`]. -#[cfg(windows)] -pub type BorrowedFilelike<'filelike> = BorrowedHandle<'filelike>; - -/// A reference to a socketlike object. -/// -/// This is a portability abstraction over Unix-like [`BorrowedFd`] and -/// Windows' `BorrowedSocket`. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub type BorrowedSocketlike<'socketlike> = BorrowedFd<'socketlike>; - -/// A reference to a socketlike object. -/// -/// This is a portability abstraction over Unix-like `BorrowedFd` and -/// Windows' [`BorrowedSocket`]. -#[cfg(windows)] -pub type BorrowedSocketlike<'socketlike> = BorrowedSocket<'socketlike>; - -/// An owned filelike object. -/// -/// This is a portability abstraction over Unix-like [`OwnedFd`] and -/// Windows' `OwnedHandle`. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub type OwnedFilelike = OwnedFd; - -/// An owned filelike object. -/// -/// This is a portability abstraction over Unix-like `OwnedFd` and -/// Windows' [`OwnedHandle`]. -#[cfg(windows)] -pub type OwnedFilelike = OwnedHandle; - -/// An owned socketlike object. -/// -/// This is a portability abstraction over Unix-like [`OwnedFd`] and -/// Windows' `OwnedSocket`. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub type OwnedSocketlike = OwnedFd; - -/// An owned socketlike object. -/// -/// This is a portability abstraction over Unix-like `OwnedFd` and -/// Windows' [`OwnedSocket`]. -#[cfg(windows)] -pub type OwnedSocketlike = OwnedSocket; - -/// A portable trait to borrow a reference from an underlying filelike object. -/// -/// This is a portability abstraction over Unix-like [`AsFd`] and Windows' -/// `AsHandle`. It also provides the `as_filelike_view` convenience function -/// providing typed views. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub trait AsFilelike: AsFd { - /// Borrows the reference. - /// - /// # Example - /// - /// ```rust,no_run - /// use std::fs::File; - /// # use std::io; - /// use io_lifetimes::{AsFilelike, BorrowedFilelike}; - /// - /// let mut f = File::open("foo.txt")?; - /// let borrowed_filelike: BorrowedFilelike<'_> = f.as_filelike(); - /// # Ok::<(), io::Error>(()) - /// ``` - fn as_filelike(&self) -> BorrowedFilelike<'_>; - - /// Return a borrowing view of a resource which dereferences to a - /// `&Target`. - /// - /// Note that [`Read`] or [`Write`] require `&mut Target`, but in some - /// cases, such as [`File`], `Read` and `Write` are implemented for - /// `&Target` in addition to `Target`, and you can get a `&mut &Target` - /// by doing `&*` on the resuting view, like this: - /// - /// ```rust,ignore - /// let v = f.as_filelike_view::(); - /// (&*v).read(&mut buf).unwrap(); - /// ``` - /// - /// [`File`]: std::fs::File - /// [`Read`]: std::io::Read - /// [`Write`]: std::io::Write - fn as_filelike_view(&self) -> FilelikeView<'_, Target>; -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl AsFilelike for T { - #[inline] - fn as_filelike(&self) -> BorrowedFilelike<'_> { - self.as_fd() - } - - #[inline] - fn as_filelike_view(&self) -> FilelikeView<'_, Target> { - FilelikeView::new(self) - } -} - -/// A portable trait to borrow a reference from an underlying filelike object. -/// -/// This is a portability abstraction over Unix-like `AsFd` and Windows' -/// [`AsHandle`]. It also provides the `as_filelike_view` convenience function -/// providing typed views. -#[cfg(windows)] -pub trait AsFilelike: AsHandle { - /// Borrows the reference. - /// - /// # Example - /// - /// ```rust,no_run - /// use std::fs::File; - /// # use std::io; - /// use io_lifetimes::{AsFilelike, BorrowedFilelike}; - /// - /// let mut f = File::open("foo.txt")?; - /// let borrowed_filelike: BorrowedFilelike<'_> = f.as_filelike(); - /// # Ok::<(), io::Error>(()) - /// ``` - fn as_filelike(&self) -> BorrowedFilelike<'_>; - - /// Return a borrowing view of a resource which dereferences to a - /// `&Target`. - /// - /// Note that [`Read`] or [`Write`] require `&mut Target`, but in some - /// cases, such as [`File`], `Read` and `Write` are implemented for - /// `&Target` in addition to `Target`, and you can get a `&mut &Target` - /// by doing `&*` on the resuting view, like this: - /// - /// ```rust,ignore - /// let v = f.as_filelike_view::(); - /// (&*v).read(&mut buf).unwrap(); - /// ``` - /// - /// [`File`]: std::fs::File - /// [`Read`]: std::io::Read - /// [`Write`]: std::io::Write - fn as_filelike_view(&self) -> FilelikeView<'_, Target>; -} - -#[cfg(windows)] -impl AsFilelike for T { - #[inline] - fn as_filelike(&self) -> BorrowedFilelike<'_> { - self.as_handle() - } - - #[inline] - fn as_filelike_view(&self) -> FilelikeView<'_, Target> { - FilelikeView::new(self) - } -} - -/// A portable trait to borrow a reference from an underlying socketlike -/// object. -/// -/// This is a portability abstraction over Unix-like [`AsFd`] and Windows' -/// `AsSocket`. It also provides the `as_socketlike_view` convenience -/// function providing typed views. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub trait AsSocketlike: AsFd { - /// Borrows the reference. - fn as_socketlike(&self) -> BorrowedSocketlike<'_>; - - /// Return a borrowing view of a resource which dereferences to a - /// `&Target`. - /// - /// Note that [`Read`] or [`Write`] require `&mut Target`, but in some - /// cases, such as [`TcpStream`], `Read` and `Write` are implemented - /// for `&Target` in addition to `Target`, and you can get a `&mut - /// &Target` by doing `&*` on the resuting view, like this: - /// - /// ```rust,ignore - /// let v = s.as_socketlike_view::(); - /// (&*v).read(&mut buf).unwrap(); - /// ``` - /// - /// [`TcpStream`]: std::net::TcpStream - /// [`Read`]: std::io::Read - /// [`Write`]: std::io::Write - fn as_socketlike_view(&self) -> SocketlikeView<'_, Target>; -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl AsSocketlike for T { - #[inline] - fn as_socketlike(&self) -> BorrowedSocketlike<'_> { - self.as_fd() - } - - #[inline] - fn as_socketlike_view(&self) -> SocketlikeView<'_, Target> { - SocketlikeView::new(self) - } -} - -/// A portable trait to borrow a reference from an underlying socketlike -/// object. -/// -/// This is a portability abstraction over Unix-like `AsFd` and Windows' -/// [`AsSocket`]. It also provides the `as_socketlike_view` convenience -/// function providing typed views. -#[cfg(windows)] -pub trait AsSocketlike: AsSocket { - /// Borrows the reference. - fn as_socketlike(&self) -> BorrowedSocketlike; - - /// Return a borrowing view of a resource which dereferences to a - /// `&Target`. - /// - /// Note that [`Read`] or [`Write`] require `&mut Target`, but in some - /// cases, such as [`TcpStream`], `Read` and `Write` are implemented - /// for `&Target` in addition to `Target`, and you can get a `&mut - /// &Target` by doing `&*` on the resuting view, like this: - /// - /// ```rust,ignore - /// let v = s.as_socketlike_view::(); - /// (&*v).read(&mut buf).unwrap(); - /// ``` - /// - /// [`TcpStream`]: std::net::TcpStream - fn as_socketlike_view(&self) -> SocketlikeView<'_, Target>; -} - -#[cfg(windows)] -impl AsSocketlike for T { - #[inline] - fn as_socketlike(&self) -> BorrowedSocketlike<'_> { - self.as_socket() - } - - #[inline] - fn as_socketlike_view(&self) -> SocketlikeView<'_, Target> { - SocketlikeView::new(self) - } -} - -/// A portable trait to express the ability to consume an object and acquire -/// ownership of its filelike object. -/// -/// This is a portability abstraction over Unix-like [`Into`] and -/// Windows' `Into`. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub trait IntoFilelike: Into { - /// Consumes this object, returning the underlying filelike object. - /// - /// # Example - /// - /// ```rust,no_run - /// use std::fs::File; - /// # use std::io; - /// use io_lifetimes::{IntoFilelike, OwnedFilelike}; - /// - /// let f = File::open("foo.txt")?; - /// let owned_filelike: OwnedFilelike = f.into_filelike(); - /// # Ok::<(), io::Error>(()) - /// ``` - fn into_filelike(self) -> OwnedFilelike; -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl> IntoFilelike for T { - #[inline] - fn into_filelike(self) -> OwnedFilelike { - self.into() - } -} - -/// A portable trait to express the ability to consume an object and acquire -/// ownership of its filelike object. -/// -/// This is a portability abstraction over Unix-like `Into` and -/// Windows' [`Into`]. -#[cfg(windows)] -pub trait IntoFilelike: Into { - /// Consumes this object, returning the underlying filelike object. - fn into_filelike(self) -> OwnedFilelike; -} - -#[cfg(windows)] -impl> IntoFilelike for T { - #[inline] - fn into_filelike(self) -> OwnedFilelike { - self.into() - } -} - -/// A portable trait to express the ability to consume an object and acquire -/// ownership of its socketlike object. -/// -/// This is a portability abstraction over Unix-like [`Into`] and -/// Windows' `Into`. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub trait IntoSocketlike: Into { - /// Consumes this object, returning the underlying socketlike object. - fn into_socketlike(self) -> OwnedSocketlike; -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl> IntoSocketlike for T { - #[inline] - fn into_socketlike(self) -> OwnedSocketlike { - self.into() - } -} - -/// A portable trait to express the ability to consume an object and acquire -/// ownership of its socketlike object. -/// -/// This is a portability abstraction over Unix-like `Into` and -/// Windows' [`Into`]. -#[cfg(windows)] -pub trait IntoSocketlike: Into { - /// Consumes this object, returning the underlying socketlike object. - /// - /// # Example - /// - /// ```rust,no_run - /// use std::fs::File; - /// # use std::io; - /// use io_lifetimes::{IntoFilelike, OwnedFilelike}; - /// - /// let f = File::open("foo.txt")?; - /// let owned_filelike: OwnedFilelike = f.into_filelike(); - /// # Ok::<(), io::Error>(()) - /// ``` - fn into_socketlike(self) -> OwnedSocketlike; -} - -#[cfg(windows)] -impl> IntoSocketlike for T { - #[inline] - fn into_socketlike(self) -> OwnedSocketlike { - self.into() - } -} - -/// A portable trait to express the ability to construct an object from a -/// filelike object. -/// -/// This is a portability abstraction over Unix-like [`From`] and -/// Windows' `From`. It also provides the `from_into_filelike` -/// convenience function providing simplified from+into conversions. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub trait FromFilelike: From { - /// Constructs a new instance of `Self` from the given filelike object. - /// - /// # Example - /// - /// ```rust,no_run - /// use std::fs::File; - /// # use std::io; - /// use io_lifetimes::{FromFilelike, IntoFilelike, OwnedFilelike}; - /// - /// let f = File::open("foo.txt")?; - /// let owned_filelike: OwnedFilelike = f.into_filelike(); - /// let f = File::from_filelike(owned_filelike); - /// # Ok::<(), io::Error>(()) - /// ``` - fn from_filelike(owned: OwnedFilelike) -> Self; - - /// Constructs a new instance of `Self` from the given filelike object - /// converted from `into_owned`. - /// - /// # Example - /// - /// ```rust,no_run - /// use std::fs::File; - /// # use std::io; - /// use io_lifetimes::{FromFilelike, IntoFilelike}; - /// - /// let f = File::open("foo.txt")?; - /// let f = File::from_into_filelike(f); - /// # Ok::<(), io::Error>(()) - /// ``` - fn from_into_filelike(owned: Owned) -> Self; -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl> FromFilelike for T { - #[inline] - fn from_filelike(owned: OwnedFilelike) -> Self { - Self::from(owned) - } - - #[inline] - fn from_into_filelike(owned: Owned) -> Self { - Self::from_filelike(owned.into_filelike()) - } -} - -/// A portable trait to express the ability to construct an object from a -/// filelike object. -/// -/// This is a portability abstraction over Unix-like `From` and -/// Windows' [`From`]. It also provides the `from_into_filelike` -/// convenience function providing simplified from+into conversions. -#[cfg(windows)] -pub trait FromFilelike: From { - /// Constructs a new instance of `Self` from the given filelike object. - /// - /// # Example - /// - /// ```rust,no_run - /// use std::fs::File; - /// # use std::io; - /// use io_lifetimes::{FromFilelike, IntoFilelike, OwnedFilelike}; - /// - /// let f = File::open("foo.txt")?; - /// let owned_filelike: OwnedFilelike = f.into_filelike(); - /// let f = File::from_filelike(owned_filelike); - /// # Ok::<(), io::Error>(()) - /// ``` - fn from_filelike(owned: OwnedFilelike) -> Self; - - /// Constructs a new instance of `Self` from the given filelike object - /// converted from `into_owned`. - /// - /// # Example - /// - /// ```rust,no_run - /// use std::fs::File; - /// # use std::io; - /// use io_lifetimes::{FromFilelike, IntoFilelike}; - /// - /// let f = File::open("foo.txt")?; - /// let f = File::from_into_filelike(f); - /// # Ok::<(), io::Error>(()) - /// ``` - fn from_into_filelike(owned: Owned) -> Self; -} - -#[cfg(windows)] -impl> FromFilelike for T { - #[inline] - fn from_filelike(owned: OwnedFilelike) -> Self { - Self::from(owned) - } - - #[inline] - fn from_into_filelike(owned: Owned) -> Self { - Self::from_filelike(owned.into_filelike()) - } -} - -/// A portable trait to express the ability to construct an object from a -/// socketlike object. -/// -/// This is a portability abstraction over Unix-like [`From`] and -/// Windows' `From` It also provides the -/// `from_into_socketlike` convenience function providing simplified from+into -/// conversions. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub trait FromSocketlike: From { - /// Constructs a new instance of `Self` from the given socketlike object. - fn from_socketlike(owned: OwnedSocketlike) -> Self; - - /// Constructs a new instance of `Self` from the given socketlike object - /// converted from `into_owned`. - fn from_into_socketlike(owned: Owned) -> Self; -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl> FromSocketlike for T { - #[inline] - fn from_socketlike(owned: OwnedSocketlike) -> Self { - Self::from(owned) - } - - #[inline] - fn from_into_socketlike(owned: Owned) -> Self { - Self::from_socketlike(owned.into_socketlike()) - } -} - -/// A portable trait to express the ability to construct an object from a -/// socketlike object. -/// -/// This is a portability abstraction over Unix-like `From` and -/// Windows' [`From`]. It also provides the `from_into_socketlike` -/// convenience function providing simplified from+into conversions. -#[cfg(windows)] -pub trait FromSocketlike: From { - /// Constructs a new instance of `Self` from the given socketlike object. - fn from_socketlike(owned: OwnedSocketlike) -> Self; - - /// Constructs a new instance of `Self` from the given socketlike object - /// converted from `into_owned`. - fn from_into_socketlike(owned: Owned) -> Self; -} - -#[cfg(windows)] -impl> FromSocketlike for T { - #[inline] - fn from_socketlike(owned: OwnedSocketlike) -> Self { - Self::from(owned) - } - - #[inline] - fn from_into_socketlike(owned: Owned) -> Self { - Self::from_socketlike(owned.into_socketlike()) - } -} diff -Nru temporalio-1.3.0/vendor/io-lifetimes/src/raw.rs temporalio-1.3.0/vendor/io-lifetimes/src/raw.rs --- temporalio-1.3.0/vendor/io-lifetimes/src/raw.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/src/raw.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,255 +0,0 @@ -//! Portability abstractions over `Raw*`. -//! -//! On Unix, "everything is a file descriptor". On Windows, file/pipe/process -//! handles are distinct from socket descriptors. This file provides a minimal -//! layer of portability over this difference. - -#[cfg(target_os = "hermit")] -use std::os::hermit::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; -#[cfg(unix)] -use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; -#[cfg(target_os = "wasi")] -use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; -#[cfg(windows)] -use std::os::windows::io::{ - AsRawHandle, AsRawSocket, FromRawHandle, FromRawSocket, IntoRawHandle, IntoRawSocket, - RawHandle, RawSocket, -}; - -/// A raw filelike object. -/// -/// This is a portability abstraction over Unix-like [`RawFd`] and -/// Windows' `RawHandle`. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub type RawFilelike = RawFd; - -/// A raw filelike object. -/// -/// This is a portability abstraction over Unix-like `RawFd` and -/// Windows' [`RawHandle`]. -#[cfg(windows)] -pub type RawFilelike = RawHandle; - -/// A raw socketlike object. -/// -/// This is a portability abstraction over Unix-like [`RawFd`] and -/// Windows' `RawSocket`. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub type RawSocketlike = RawFd; - -/// A raw socketlike object. -/// -/// This is a portability abstraction over Unix-like `RawFd` and -/// Windows' [`RawSocket`]. -#[cfg(windows)] -pub type RawSocketlike = RawSocket; - -/// A portable trait to obtain the raw value of an underlying filelike object. -/// -/// This is a portability abstraction over Unix-like [`AsRawFd`] and Windows' -/// `AsRawHandle`. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub trait AsRawFilelike: AsRawFd { - /// Returns the raw value. - fn as_raw_filelike(&self) -> RawFilelike; -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl AsRawFilelike for T { - #[inline] - fn as_raw_filelike(&self) -> RawFilelike { - self.as_raw_fd() - } -} - -/// This is a portability abstraction over Unix-like `AsRawFd` and Windows' -/// [`AsRawHandle`]. -#[cfg(windows)] -pub trait AsRawFilelike: AsRawHandle { - /// Returns the raw value. - fn as_raw_filelike(&self) -> RawFilelike; -} - -#[cfg(windows)] -impl AsRawFilelike for T { - #[inline] - fn as_raw_filelike(&self) -> RawFilelike { - self.as_raw_handle() - } -} - -/// This is a portability abstraction over Unix-like [`AsRawFd`] and Windows' -/// `AsRawSocket`. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub trait AsRawSocketlike: AsRawFd { - /// Returns the raw value. - fn as_raw_socketlike(&self) -> RawSocketlike; -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl AsRawSocketlike for T { - #[inline] - fn as_raw_socketlike(&self) -> RawSocketlike { - self.as_raw_fd() - } -} - -/// This is a portability abstraction over Unix-like `AsRawFd` and Windows' -/// [`AsRawSocket`]. -#[cfg(windows)] -pub trait AsRawSocketlike: AsRawSocket { - /// Returns the raw value. - fn as_raw_socketlike(&self) -> RawSocketlike; -} - -#[cfg(windows)] -impl AsRawSocketlike for T { - #[inline] - fn as_raw_socketlike(&self) -> RawSocketlike { - self.as_raw_socket() - } -} - -/// This is a portability abstraction over Unix-like [`IntoRawFd`] and Windows' -/// `IntoRawHandle`. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub trait IntoRawFilelike: IntoRawFd { - /// Returns the raw value. - fn into_raw_filelike(self) -> RawFilelike; -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl IntoRawFilelike for T { - #[inline] - fn into_raw_filelike(self) -> RawFilelike { - self.into_raw_fd() - } -} - -/// This is a portability abstraction over Unix-like `IntoRawFd` and Windows' -/// [`IntoRawHandle`]. -#[cfg(windows)] -pub trait IntoRawFilelike: IntoRawHandle { - /// Returns the raw value. - fn into_raw_filelike(self) -> RawFilelike; -} - -#[cfg(windows)] -impl IntoRawFilelike for T { - #[inline] - fn into_raw_filelike(self) -> RawFilelike { - self.into_raw_handle() - } -} - -/// This is a portability abstraction over Unix-like [`IntoRawFd`] and Windows' -/// `IntoRawSocket`. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub trait IntoRawSocketlike: IntoRawFd { - /// Returns the raw value. - fn into_raw_socketlike(self) -> RawSocketlike; -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl IntoRawSocketlike for T { - #[inline] - fn into_raw_socketlike(self) -> RawSocketlike { - self.into_raw_fd() - } -} - -/// This is a portability abstraction over Unix-like `IntoRawFd` and Windows' -/// [`IntoRawSocket`]. -#[cfg(windows)] -pub trait IntoRawSocketlike: IntoRawSocket { - /// Returns the raw value. - fn into_raw_socketlike(self) -> RawSocketlike; -} - -#[cfg(windows)] -impl IntoRawSocketlike for T { - #[inline] - fn into_raw_socketlike(self) -> RawSocketlike { - self.into_raw_socket() - } -} - -/// This is a portability abstraction over Unix-like [`FromRawFd`] and Windows' -/// `FromRawHandle`. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub trait FromRawFilelike: FromRawFd { - /// Constructs `Self` from the raw value. - /// - /// # Safety - /// - /// This is `unsafe` for the same reason as [`from_raw_fd`] and - /// [`from_raw_handle`]. - /// - /// [`from_raw_fd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html#tymethod.from_raw_fd - /// [`from_raw_handle`]: https://doc.rust-lang.org/stable/std/os/windows/io/trait.FromRawHandle.html#tymethod.from_raw_handle - unsafe fn from_raw_filelike(raw: RawFilelike) -> Self; -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl FromRawFilelike for T { - #[inline] - unsafe fn from_raw_filelike(raw: RawFilelike) -> Self { - Self::from_raw_fd(raw) - } -} - -/// This is a portability abstraction over Unix-like `FromRawFd` and Windows' -/// [`FromRawHandle`]. -#[cfg(windows)] -pub trait FromRawFilelike: FromRawHandle { - /// Constructs `Self` from the raw value. - unsafe fn from_raw_filelike(raw: RawFilelike) -> Self; -} - -#[cfg(windows)] -impl FromRawFilelike for T { - #[inline] - unsafe fn from_raw_filelike(raw: RawFilelike) -> Self { - Self::from_raw_handle(raw) - } -} - -/// This is a portability abstraction over Unix-like [`FromRawFd`] and Windows' -/// `FromRawSocket`. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub trait FromRawSocketlike: FromRawFd { - /// Constructs `Self` from the raw value. - /// - /// # Safety - /// - /// This is `unsafe` for the same reason as [`from_raw_fd`] and - /// [`from_raw_socket`]. - /// - /// [`from_raw_fd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html#tymethod.from_raw_fd - /// [`from_raw_socket`]: https://doc.rust-lang.org/stable/std/os/windows/io/trait.FromRawSocket.html#tymethod.from_raw_socket - unsafe fn from_raw_socketlike(raw: RawSocketlike) -> Self; -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl FromRawSocketlike for T { - #[inline] - unsafe fn from_raw_socketlike(raw: RawSocketlike) -> Self { - Self::from_raw_fd(raw) - } -} - -/// This is a portability abstraction over Unix-like `FromRawFd` and Windows' -/// [`FromRawSocket`]. -#[cfg(windows)] -pub trait FromRawSocketlike: FromRawSocket { - /// Constructs `Self` from the raw value. - unsafe fn from_raw_socketlike(raw: RawSocketlike) -> Self; -} - -#[cfg(windows)] -impl FromRawSocketlike for T { - #[inline] - unsafe fn from_raw_socketlike(raw: RawSocketlike) -> Self { - Self::from_raw_socket(raw) - } -} diff -Nru temporalio-1.3.0/vendor/io-lifetimes/src/traits.rs temporalio-1.3.0/vendor/io-lifetimes/src/traits.rs --- temporalio-1.3.0/vendor/io-lifetimes/src/traits.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/src/traits.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,290 +0,0 @@ -#[cfg(not(io_safety_is_in_std))] -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -use crate::BorrowedFd; -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -use crate::OwnedFd; -#[cfg(not(io_safety_is_in_std))] -#[cfg(windows)] -use crate::{BorrowedHandle, BorrowedSocket}; -#[cfg(windows)] -use crate::{OwnedHandle, OwnedSocket}; - -/// A trait to borrow the file descriptor from an underlying object. -/// -/// This is only available on unix platforms and must be imported in order to -/// call the method. Windows platforms have a corresponding `AsHandle` and -/// `AsSocket` set of traits. -#[cfg(not(io_safety_is_in_std))] -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub trait AsFd { - /// Borrows the file descriptor. - /// - /// # Example - /// - /// ```rust,no_run - /// use std::fs::File; - /// # use std::io; - /// use io_lifetimes::{AsFd, BorrowedFd}; - /// - /// let mut f = File::open("foo.txt")?; - /// let borrowed_fd: BorrowedFd<'_> = f.as_fd(); - /// # Ok::<(), io::Error>(()) - /// ``` - fn as_fd(&self) -> BorrowedFd<'_>; -} - -/// A trait to borrow the handle from an underlying object. -#[cfg(not(io_safety_is_in_std))] -#[cfg(windows)] -pub trait AsHandle { - /// Borrows the handle. - /// - /// # Example - /// - /// ```rust,no_run - /// use std::fs::File; - /// # use std::io; - /// use io_lifetimes::{AsHandle, BorrowedHandle}; - /// - /// let mut f = File::open("foo.txt")?; - /// let borrowed_handle: BorrowedHandle<'_> = f.as_handle(); - /// # Ok::<(), io::Error>(()) - /// ``` - fn as_handle(&self) -> BorrowedHandle<'_>; -} - -/// A trait to borrow the socket from an underlying object. -#[cfg(not(io_safety_is_in_std))] -#[cfg(windows)] -pub trait AsSocket { - /// Borrows the socket. - fn as_socket(&self) -> BorrowedSocket<'_>; -} - -/// A trait to express the ability to consume an object and acquire ownership -/// of its file descriptor. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -#[deprecated( - since = "1.0.0", - note = "`IntoFd` is replaced by `From<...> for OwnedFd` or `Into`" -)] -pub trait IntoFd { - /// Consumes this object, returning the underlying file descriptor. - /// - /// # Example - /// - /// ```rust,no_run - /// use std::fs::File; - /// # use std::io; - /// use io_lifetimes::{IntoFd, OwnedFd}; - /// - /// let f = File::open("foo.txt")?; - /// let owned_fd: OwnedFd = f.into_fd(); - /// # Ok::<(), io::Error>(()) - /// ``` - fn into_fd(self) -> OwnedFd; -} - -/// A trait to express the ability to consume an object and acquire ownership -/// of its handle. -#[cfg(windows)] -#[deprecated( - since = "1.0.0", - note = "`IntoHandle` is replaced by `From<...> for OwnedHandle` or `Into`" -)] -pub trait IntoHandle { - /// Consumes this object, returning the underlying handle. - /// - /// # Example - /// - /// ```rust,no_run - /// use std::fs::File; - /// # use std::io; - /// use io_lifetimes::{IntoHandle, OwnedHandle}; - /// - /// let f = File::open("foo.txt")?; - /// let owned_handle: OwnedHandle = f.into_handle(); - /// # Ok::<(), io::Error>(()) - /// ``` - fn into_handle(self) -> OwnedHandle; -} - -/// A trait to express the ability to consume an object and acquire ownership -/// of its socket. -#[cfg(windows)] -#[deprecated( - since = "1.0.0", - note = "`IntoSocket` is replaced by `From<...> for OwnedSocket` or `Into`" -)] -pub trait IntoSocket { - /// Consumes this object, returning the underlying socket. - fn into_socket(self) -> OwnedSocket; -} - -/// A trait to express the ability to construct an object from a file -/// descriptor. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -pub trait FromFd { - /// Constructs a new instance of `Self` from the given file descriptor. - /// - /// # Example - /// - /// ```rust,no_run - /// use std::fs::File; - /// # use std::io; - /// use io_lifetimes::{FromFd, IntoFd, OwnedFd}; - /// - /// let f = File::open("foo.txt")?; - /// let owned_fd: OwnedFd = f.into_fd(); - /// let f = File::from_fd(owned_fd); - /// # Ok::<(), io::Error>(()) - /// ``` - #[deprecated( - since = "1.0.0", - note = "`FromFd::from_fd` is replaced by `From::from`" - )] - fn from_fd(owned: OwnedFd) -> Self; - - /// Constructs a new instance of `Self` from the given file descriptor - /// converted from `into_owned`. - /// - /// # Example - /// - /// ```rust,no_run - /// use std::fs::File; - /// # use std::io; - /// use io_lifetimes::{FromFd, IntoFd}; - /// - /// let f = File::open("foo.txt")?; - /// let f = File::from_into_fd(f); - /// # Ok::<(), io::Error>(()) - /// ``` - #[inline] - fn from_into_fd>(into_owned: Owned) -> Self - where - Self: Sized + From, - { - Self::from(into_owned.into()) - } -} - -/// A trait to express the ability to construct an object from a handle. -#[cfg(windows)] -pub trait FromHandle { - /// Constructs a new instance of `Self` from the given handle. - /// - /// # Example - /// - /// ```rust,no_run - /// use std::fs::File; - /// # use std::io; - /// use io_lifetimes::{FromHandle, IntoHandle, OwnedHandle}; - /// - /// let f = File::open("foo.txt")?; - /// let owned_handle: OwnedHandle = f.into_handle(); - /// let f = File::from_handle(owned_handle); - /// # Ok::<(), io::Error>(()) - /// ``` - #[deprecated( - since = "1.0.0", - note = "`FromHandle::from_handle` is replaced by `From::from`" - )] - fn from_handle(owned: OwnedHandle) -> Self; - - /// Constructs a new instance of `Self` from the given handle converted - /// from `into_owned`. - /// - /// # Example - /// - /// ```rust,no_run - /// use std::fs::File; - /// # use std::io; - /// use io_lifetimes::{FromHandle, IntoHandle}; - /// - /// let f = File::open("foo.txt")?; - /// let f = File::from_into_handle(f); - /// # Ok::<(), io::Error>(()) - /// ``` - #[inline] - fn from_into_handle>(into_owned: Owned) -> Self - where - Self: Sized + From, - { - Self::from(into_owned.into()) - } -} - -/// A trait to express the ability to construct an object from a socket. -#[cfg(windows)] -pub trait FromSocket { - /// Constructs a new instance of `Self` from the given socket. - #[deprecated( - since = "1.0.0", - note = "`FromSocket::from_socket` is replaced by `From::from`" - )] - fn from_socket(owned: OwnedSocket) -> Self; - - /// Constructs a new instance of `Self` from the given socket converted - /// from `into_owned`. - #[inline] - fn from_into_socket>(into_owned: Owned) -> Self - where - Self: Sized + From, - { - Self::from(into_owned.into()) - } -} - -#[cfg(not(io_safety_is_in_std))] -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl AsFd for &T { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - T::as_fd(self) - } -} - -#[cfg(not(io_safety_is_in_std))] -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl AsFd for &mut T { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - T::as_fd(self) - } -} - -#[cfg(not(io_safety_is_in_std))] -#[cfg(windows)] -impl AsHandle for &T { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - T::as_handle(self) - } -} - -#[cfg(not(io_safety_is_in_std))] -#[cfg(windows)] -impl AsHandle for &mut T { - #[inline] - fn as_handle(&self) -> BorrowedHandle<'_> { - T::as_handle(self) - } -} - -#[cfg(not(io_safety_is_in_std))] -#[cfg(windows)] -impl AsSocket for &T { - #[inline] - fn as_socket(&self) -> BorrowedSocket<'_> { - T::as_socket(self) - } -} - -#[cfg(not(io_safety_is_in_std))] -#[cfg(windows)] -impl AsSocket for &mut T { - #[inline] - fn as_socket(&self) -> BorrowedSocket<'_> { - T::as_socket(self) - } -} diff -Nru temporalio-1.3.0/vendor/io-lifetimes/src/types.rs temporalio-1.3.0/vendor/io-lifetimes/src/types.rs --- temporalio-1.3.0/vendor/io-lifetimes/src/types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/src/types.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,880 +0,0 @@ -use std::fmt; -use std::marker::PhantomData; -use std::mem::forget; -#[cfg(target_os = "hermit")] -use std::os::hermit::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; -#[cfg(unix)] -use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; -#[cfg(target_os = "wasi")] -use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; -#[cfg(windows)] -use std::{ - convert::TryFrom, - os::windows::io::{ - AsRawHandle, AsRawSocket, FromRawHandle, FromRawSocket, IntoRawHandle, IntoRawSocket, - RawHandle, RawSocket, - }, -}; -#[cfg(all(windows, feature = "close"))] -use { - windows_sys::Win32::Foundation::{ - CloseHandle, DuplicateHandle, SetHandleInformation, BOOL, DUPLICATE_HANDLE_OPTIONS, - DUPLICATE_SAME_ACCESS, HANDLE, HANDLE_FLAG_INHERIT, INVALID_HANDLE_VALUE, - }, - windows_sys::Win32::Networking::WinSock::{ - closesocket, WSADuplicateSocketW, WSAGetLastError, WSASocketW, INVALID_SOCKET, SOCKET, - SOCKET_ERROR, WSAEINVAL, WSAEPROTOTYPE, WSAPROTOCOL_INFOW, WSA_FLAG_NO_HANDLE_INHERIT, - WSA_FLAG_OVERLAPPED, - }, - windows_sys::Win32::System::Threading::{GetCurrentProcess, GetCurrentProcessId}, -}; - -#[cfg(all(windows, not(feature = "close")))] -type HANDLE = isize; -#[cfg(all(windows, not(feature = "close")))] -const INVALID_HANDLE_VALUE: HANDLE = !0 as _; -#[cfg(all(windows, not(feature = "close")))] -const INVALID_SOCKET: usize = !0 as _; - -/// A borrowed file descriptor. -/// -/// This has a lifetime parameter to tie it to the lifetime of something that -/// owns the file descriptor. -/// -/// This uses `repr(transparent)` and has the representation of a host file -/// descriptor, so it can be used in FFI in places where a file descriptor is -/// passed as an argument, it is not captured or consumed, and it never has the -/// value `-1`. -/// -/// This type's `.to_owned()` implementation returns another `BorrowedFd` -/// rather than an `OwnedFd`. It just makes a trivial copy of the raw file -/// descriptor, which is then borrowed under the same lifetime. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -#[derive(Copy, Clone)] -#[repr(transparent)] -pub struct BorrowedFd<'fd> { - fd: RawFd, - _phantom: PhantomData<&'fd OwnedFd>, -} - -/// A borrowed handle. -/// -/// This has a lifetime parameter to tie it to the lifetime of something that -/// owns the handle. -/// -/// This uses `repr(transparent)` and has the representation of a host handle, -/// so it can be used in FFI in places where a handle is passed as an argument, -/// it is not captured or consumed, and it is never null. -/// -/// Note that it *may* have the value `-1`, which in `BorrowedHandle` always -/// represents a valid handle value, such as [the current process handle], and -/// not `INVALID_HANDLE_VALUE`, despite the two having the same value. See -/// [here] for the full story. -/// -/// This type's `.to_owned()` implementation returns another `BorrowedHandle` -/// rather than an `OwnedHandle`. It just makes a trivial copy of the raw -/// handle, which is then borrowed under the same lifetime. -/// -/// [here]: https://devblogs.microsoft.com/oldnewthing/20040302-00/?p=40443 -/// [the current process handle]: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getcurrentprocess#remarks -#[cfg(windows)] -#[derive(Copy, Clone)] -#[repr(transparent)] -pub struct BorrowedHandle<'handle> { - handle: RawHandle, - _phantom: PhantomData<&'handle OwnedHandle>, -} - -/// A borrowed socket. -/// -/// This has a lifetime parameter to tie it to the lifetime of something that -/// owns the socket. -/// -/// This uses `repr(transparent)` and has the representation of a host socket, -/// so it can be used in FFI in places where a socket is passed as an argument, -/// it is not captured or consumed, and it never has the value -/// [`INVALID_SOCKET`]. -/// -/// This type's `.to_owned()` implementation returns another `BorrowedSocket` -/// rather than an `OwnedSocket`. It just makes a trivial copy of the raw -/// socket, which is then borrowed under the same lifetime. -#[cfg(windows)] -#[derive(Copy, Clone)] -#[repr(transparent)] -pub struct BorrowedSocket<'socket> { - socket: RawSocket, - _phantom: PhantomData<&'socket OwnedSocket>, -} - -/// An owned file descriptor. -/// -/// This closes the file descriptor on drop. -/// -/// This uses `repr(transparent)` and has the representation of a host file -/// descriptor, so it can be used in FFI in places where a file descriptor is -/// passed as a consumed argument or returned as an owned value, and it never -/// has the value `-1`. -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -#[repr(transparent)] -pub struct OwnedFd { - fd: RawFd, -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl OwnedFd { - /// Creates a new `OwnedFd` instance that shares the same underlying file - /// description as the existing `OwnedFd` instance. - pub fn try_clone(&self) -> std::io::Result { - crate::AsFd::as_fd(self).try_clone_to_owned() - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl BorrowedFd<'_> { - /// Creates a new `OwnedFd` instance that shares the same underlying file - /// description as the existing `BorrowedFd` instance. - pub fn try_clone_to_owned(&self) -> std::io::Result { - #[cfg(feature = "close")] - { - #[cfg(unix)] - { - // We want to atomically duplicate this file descriptor and set the - // CLOEXEC flag, and currently that's done via F_DUPFD_CLOEXEC. This - // is a POSIX flag that was added to Linux in 2.6.24. - #[cfg(not(target_os = "espidf"))] - let cmd = libc::F_DUPFD_CLOEXEC; - - // For ESP-IDF, F_DUPFD is used instead, because the CLOEXEC semantics - // will never be supported, as this is a bare metal framework with - // no capabilities for multi-process execution. While F_DUPFD is also - // not supported yet, it might be (currently it returns ENOSYS). - #[cfg(target_os = "espidf")] - let cmd = libc::F_DUPFD; - - let fd = match unsafe { libc::fcntl(self.as_raw_fd(), cmd, 0) } { - -1 => return Err(std::io::Error::last_os_error()), - fd => fd, - }; - - Ok(unsafe { OwnedFd::from_raw_fd(fd) }) - } - - #[cfg(any(target_os = "wasi", target_os = "hermit"))] - { - unreachable!("try_clone is not yet suppported on wasi"); - } - } - - // If the `close` feature is disabled, we expect users to avoid cloning - // `OwnedFd` instances, so that we don't have to call `fcntl`. - #[cfg(not(feature = "close"))] - { - unreachable!("try_clone_to_owned called without the \"close\" feature in io-lifetimes"); - } - } -} - -/// An owned handle. -/// -/// This closes the handle on drop. -/// -/// Note that it *may* have the value `-1`, which in `OwnedHandle` always -/// represents a valid handle value, such as [the current process handle], and -/// not `INVALID_HANDLE_VALUE`, despite the two having the same value. See -/// [here] for the full story. -/// -/// And, it *may* have the value `NULL` (0), which can occur when consoles are -/// detached from processes, or when `windows_subsystem` is used. -/// -/// `OwnedHandle` uses [`CloseHandle`] to close its handle on drop. As such, -/// it must not be used with handles to open registry keys which need to be -/// closed with [`RegCloseKey`] instead. -/// -/// [`CloseHandle`]: https://docs.microsoft.com/en-us/windows/win32/api/handleapi/nf-handleapi-closehandle -/// [`RegCloseKey`]: https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regclosekey -/// -/// [here]: https://devblogs.microsoft.com/oldnewthing/20040302-00/?p=40443 -/// [the current process handle]: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getcurrentprocess#remarks -#[cfg(windows)] -#[repr(transparent)] -pub struct OwnedHandle { - handle: RawHandle, -} - -#[cfg(windows)] -impl OwnedHandle { - /// Creates a new `OwnedHandle` instance that shares the same underlying - /// object as the existing `OwnedHandle` instance. - pub fn try_clone(&self) -> std::io::Result { - crate::AsHandle::as_handle(self).try_clone_to_owned() - } -} - -#[cfg(windows)] -impl BorrowedHandle<'_> { - /// Creates a new `OwnedHandle` instance that shares the same underlying - /// object as the existing `BorrowedHandle` instance. - pub fn try_clone_to_owned(&self) -> std::io::Result { - #[cfg(feature = "close")] - { - self.duplicate(0, false, DUPLICATE_SAME_ACCESS) - } - - // If the `close` feature is disabled, we expect users to avoid cloning - // `OwnedHandle` instances, so that we don't have to call `fcntl`. - #[cfg(not(feature = "close"))] - { - unreachable!("try_clone_to_owned called without the \"close\" feature in io-lifetimes"); - } - } - - #[cfg(feature = "close")] - pub(crate) fn duplicate( - &self, - access: u32, - inherit: bool, - options: DUPLICATE_HANDLE_OPTIONS, - ) -> std::io::Result { - let mut ret = 0 as HANDLE; - match unsafe { - let cur_proc = GetCurrentProcess(); - DuplicateHandle( - cur_proc, - self.as_raw_handle() as HANDLE, - cur_proc, - &mut ret, - access, - inherit as BOOL, - options, - ) - } { - 0 => return Err(std::io::Error::last_os_error()), - _ => (), - } - unsafe { Ok(OwnedHandle::from_raw_handle(ret as RawHandle)) } - } -} - -/// An owned socket. -/// -/// This closes the socket on drop. -/// -/// This uses `repr(transparent)` and has the representation of a host socket, -/// so it can be used in FFI in places where a socket is passed as a consumed -/// argument or returned as an owned value, and it never has the value -/// [`INVALID_SOCKET`]. -#[cfg(windows)] -#[repr(transparent)] -pub struct OwnedSocket { - socket: RawSocket, -} - -#[cfg(windows)] -impl OwnedSocket { - /// Creates a new `OwnedSocket` instance that shares the same underlying - /// object as the existing `OwnedSocket` instance. - pub fn try_clone(&self) -> std::io::Result { - crate::AsSocket::as_socket(self).try_clone_to_owned() - } - - #[cfg(feature = "close")] - #[cfg(not(target_vendor = "uwp"))] - fn set_no_inherit(&self) -> std::io::Result<()> { - match unsafe { - SetHandleInformation(self.as_raw_socket() as HANDLE, HANDLE_FLAG_INHERIT, 0) - } { - 0 => return Err(std::io::Error::last_os_error()), - _ => Ok(()), - } - } - - #[cfg(feature = "close")] - #[cfg(target_vendor = "uwp")] - fn set_no_inherit(&self) -> std::io::Result<()> { - Err(std::io::Error::new( - std::io::ErrorKind::Unsupported, - "Unavailable on UWP", - )) - } -} - -#[cfg(windows)] -impl BorrowedSocket<'_> { - /// Creates a new `OwnedSocket` instance that shares the same underlying - /// object as the existing `BorrowedSocket` instance. - pub fn try_clone_to_owned(&self) -> std::io::Result { - #[cfg(feature = "close")] - { - let mut info = unsafe { std::mem::zeroed::() }; - let result = unsafe { - WSADuplicateSocketW(self.as_raw_socket() as _, GetCurrentProcessId(), &mut info) - }; - match result { - SOCKET_ERROR => return Err(std::io::Error::last_os_error()), - 0 => (), - _ => panic!(), - } - let socket = unsafe { - WSASocketW( - info.iAddressFamily, - info.iSocketType, - info.iProtocol, - &mut info, - 0, - WSA_FLAG_OVERLAPPED | WSA_FLAG_NO_HANDLE_INHERIT, - ) - }; - - if socket != INVALID_SOCKET { - unsafe { Ok(OwnedSocket::from_raw_socket(socket as _)) } - } else { - let error = unsafe { WSAGetLastError() }; - - if error != WSAEPROTOTYPE && error != WSAEINVAL { - return Err(std::io::Error::from_raw_os_error(error)); - } - - let socket = unsafe { - WSASocketW( - info.iAddressFamily, - info.iSocketType, - info.iProtocol, - &mut info, - 0, - WSA_FLAG_OVERLAPPED, - ) - }; - - if socket == INVALID_SOCKET { - return Err(std::io::Error::last_os_error()); - } - - unsafe { - let socket = OwnedSocket::from_raw_socket(socket as _); - socket.set_no_inherit()?; - Ok(socket) - } - } - } - - // If the `close` feature is disabled, we expect users to avoid cloning - // `OwnedSocket` instances, so that we don't have to call `fcntl`. - #[cfg(not(feature = "close"))] - { - unreachable!("try_clone_to_owned called without the \"close\" feature in io-lifetimes"); - } - } -} - -/// FFI type for handles in return values or out parameters, where `INVALID_HANDLE_VALUE` is used -/// as a sentry value to indicate errors, such as in the return value of `CreateFileW`. This uses -/// `repr(transparent)` and has the representation of a host handle, so that it can be used in such -/// FFI declarations. -/// -/// The only thing you can usefully do with a `HandleOrInvalid` is to convert it into an -/// `OwnedHandle` using its [`TryFrom`] implementation; this conversion takes care of the check for -/// `INVALID_HANDLE_VALUE`. This ensures that such FFI calls cannot start using the handle without -/// checking for `INVALID_HANDLE_VALUE` first. -/// -/// This type may hold any handle value that [`OwnedHandle`] may hold, except that when it holds -/// `-1`, that value is interpreted to mean `INVALID_HANDLE_VALUE`. -/// -/// If holds a handle other than `INVALID_HANDLE_VALUE`, it will close the handle on drop. -#[cfg(windows)] -#[repr(transparent)] -#[derive(Debug)] -pub struct HandleOrInvalid(RawHandle); - -/// FFI type for handles in return values or out parameters, where `NULL` is used -/// as a sentry value to indicate errors, such as in the return value of `CreateThread`. This uses -/// `repr(transparent)` and has the representation of a host handle, so that it can be used in such -/// FFI declarations. -/// -/// The only thing you can usefully do with a `HandleOrNull` is to convert it into an -/// `OwnedHandle` using its [`TryFrom`] implementation; this conversion takes care of the check for -/// `NULL`. This ensures that such FFI calls cannot start using the handle without -/// checking for `NULL` first. -/// -/// This type may hold any handle value that [`OwnedHandle`] may hold. As with `OwnedHandle`, when -/// it holds `-1`, that value is interpreted as a valid handle value, such as -/// [the current process handle], and not `INVALID_HANDLE_VALUE`. -/// -/// If this holds a non-null handle, it will close the handle on drop. -/// -/// [the current process handle]: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getcurrentprocess#remarks -#[cfg(windows)] -#[repr(transparent)] -#[derive(Debug)] -pub struct HandleOrNull(RawHandle); - -// The Windows [`HANDLE`] type may be transferred across and shared between -// thread boundaries (despite containing a `*mut void`, which in general isn't -// `Send` or `Sync`). -// -// [`HANDLE`]: std::os::windows::raw::HANDLE -#[cfg(windows)] -unsafe impl Send for OwnedHandle {} -#[cfg(windows)] -unsafe impl Send for HandleOrInvalid {} -#[cfg(windows)] -unsafe impl Send for HandleOrNull {} -#[cfg(windows)] -unsafe impl Send for BorrowedHandle<'_> {} -#[cfg(windows)] -unsafe impl Sync for OwnedHandle {} -#[cfg(windows)] -unsafe impl Sync for HandleOrInvalid {} -#[cfg(windows)] -unsafe impl Sync for HandleOrNull {} -#[cfg(windows)] -unsafe impl Sync for BorrowedHandle<'_> {} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl BorrowedFd<'_> { - /// Return a `BorrowedFd` holding the given raw file descriptor. - /// - /// # Safety - /// - /// The resource pointed to by `raw` must remain open for the duration of - /// the returned `BorrowedFd`, and it must not have the value `-1`. - #[inline] - pub const unsafe fn borrow_raw(fd: RawFd) -> Self { - #[cfg(panic_in_const_fn)] - debug_assert!(fd != -1_i32 as RawFd); - - Self { - fd, - _phantom: PhantomData, - } - } -} - -#[cfg(windows)] -impl BorrowedHandle<'_> { - /// Return a `BorrowedHandle` holding the given raw handle. - /// - /// # Safety - /// - /// The resource pointed to by `handle` must be a valid open handle, it - /// must remain open for the duration of the returned `BorrowedHandle`. - /// - /// Note that it *may* have the value `INVALID_HANDLE_VALUE` (-1), which is - /// sometimes a valid handle value. See [here] for the full story. - /// - /// And, it *may* have the value `NULL` (0), which can occur when consoles are - /// detached from processes, or when `windows_subsystem` is used. - /// - /// [here]: https://devblogs.microsoft.com/oldnewthing/20040302-00/?p=40443 - #[inline] - pub const unsafe fn borrow_raw(handle: RawHandle) -> Self { - Self { - handle, - _phantom: PhantomData, - } - } -} - -#[cfg(windows)] -impl BorrowedSocket<'_> { - /// Return a `BorrowedSocket` holding the given raw socket. - /// - /// # Safety - /// - /// The resource pointed to by `raw` must remain open for the duration of - /// the returned `BorrowedSocket`, and it must not have the value - /// [`INVALID_SOCKET`]. - #[inline] - pub const unsafe fn borrow_raw(socket: RawSocket) -> Self { - #[cfg(panic_in_const_fn)] - debug_assert!(socket != INVALID_SOCKET as RawSocket); - Self { - socket, - _phantom: PhantomData, - } - } -} - -#[cfg(windows)] -impl TryFrom for OwnedHandle { - type Error = InvalidHandleError; - - #[inline] - fn try_from(handle_or_invalid: HandleOrInvalid) -> Result { - let raw = handle_or_invalid.0; - if raw as HANDLE == INVALID_HANDLE_VALUE { - // Don't call `CloseHandle`; it'd be harmless, except that it could - // overwrite the `GetLastError` error. - forget(handle_or_invalid); - - Err(InvalidHandleError(())) - } else { - Ok(OwnedHandle { handle: raw }) - } - } -} - -#[cfg(windows)] -impl TryFrom for OwnedHandle { - type Error = NullHandleError; - - #[inline] - fn try_from(handle_or_null: HandleOrNull) -> Result { - let raw = handle_or_null.0; - if raw.is_null() { - // Don't call `CloseHandle`; it'd be harmless, except that it could - // overwrite the `GetLastError` error. - forget(handle_or_null); - - Err(NullHandleError(())) - } else { - Ok(OwnedHandle { handle: raw }) - } - } -} - -/// This is the error type used by [`HandleOrNull`] when attempting to convert -/// into a handle, to indicate that the value is null. -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct NullHandleError(()); - -impl fmt::Display for NullHandleError { - fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { - "A HandleOrNull could not be converted to a handle because it was null".fmt(fmt) - } -} - -impl std::error::Error for NullHandleError {} - -/// This is the error type used by [`HandleOrInvalid`] when attempting to -/// convert into a handle, to indicate that the value is -/// `INVALID_HANDLE_VALUE`. -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct InvalidHandleError(()); - -impl fmt::Display for InvalidHandleError { - fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { - "A HandleOrInvalid could not be converted to a handle because it was INVALID_HANDLE_VALUE" - .fmt(fmt) - } -} - -impl std::error::Error for InvalidHandleError {} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl AsRawFd for BorrowedFd<'_> { - #[inline] - fn as_raw_fd(&self) -> RawFd { - self.fd - } -} - -#[cfg(windows)] -impl AsRawHandle for BorrowedHandle<'_> { - #[inline] - fn as_raw_handle(&self) -> RawHandle { - self.handle - } -} - -#[cfg(windows)] -impl AsRawSocket for BorrowedSocket<'_> { - #[inline] - fn as_raw_socket(&self) -> RawSocket { - self.socket - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl AsRawFd for OwnedFd { - #[inline] - fn as_raw_fd(&self) -> RawFd { - self.fd - } -} - -#[cfg(windows)] -impl AsRawHandle for OwnedHandle { - #[inline] - fn as_raw_handle(&self) -> RawHandle { - self.handle - } -} - -#[cfg(windows)] -impl AsRawSocket for OwnedSocket { - #[inline] - fn as_raw_socket(&self) -> RawSocket { - self.socket - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl IntoRawFd for OwnedFd { - #[inline] - fn into_raw_fd(self) -> RawFd { - let fd = self.fd; - forget(self); - fd - } -} - -#[cfg(windows)] -impl IntoRawHandle for OwnedHandle { - #[inline] - fn into_raw_handle(self) -> RawHandle { - let handle = self.handle; - forget(self); - handle - } -} - -#[cfg(windows)] -impl IntoRawSocket for OwnedSocket { - #[inline] - fn into_raw_socket(self) -> RawSocket { - let socket = self.socket; - forget(self); - socket - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl FromRawFd for OwnedFd { - /// Constructs a new instance of `Self` from the given raw file descriptor. - /// - /// # Safety - /// - /// The resource pointed to by `raw` must be open and suitable for assuming - /// ownership. - #[inline] - unsafe fn from_raw_fd(fd: RawFd) -> Self { - debug_assert_ne!(fd, -1_i32 as RawFd); - Self { fd } - } -} - -#[cfg(windows)] -impl FromRawHandle for OwnedHandle { - #[inline] - unsafe fn from_raw_handle(handle: RawHandle) -> Self { - Self { handle } - } -} - -#[cfg(windows)] -impl FromRawSocket for OwnedSocket { - #[inline] - unsafe fn from_raw_socket(socket: RawSocket) -> Self { - debug_assert_ne!(socket, INVALID_SOCKET as RawSocket); - Self { socket } - } -} - -#[cfg(windows)] -impl HandleOrInvalid { - /// Constructs a new instance of `Self` from the given `RawHandle` returned - /// from a Windows API that uses `INVALID_HANDLE_VALUE` to indicate - /// failure, such as `CreateFileW`. - /// - /// Use `HandleOrNull` instead of `HandleOrInvalid` for APIs that - /// use null to indicate failure. - /// - /// # Safety - /// - /// The passed `handle` value must either satisfy the safety requirements - /// of [`FromRawHandle::from_raw_handle`], or be - /// `INVALID_HANDLE_VALUE` (-1). Note that not all Windows APIs use - /// `INVALID_HANDLE_VALUE` for errors; see [here] for the full story. - /// - /// [here]: https://devblogs.microsoft.com/oldnewthing/20040302-00/?p=40443 - #[inline] - pub unsafe fn from_raw_handle(handle: RawHandle) -> Self { - Self(handle) - } -} - -#[cfg(windows)] -impl HandleOrNull { - /// Constructs a new instance of `Self` from the given `RawHandle` returned - /// from a Windows API that uses null to indicate failure, such as - /// `CreateThread`. - /// - /// Use `HandleOrInvalid` instead of `HandleOrNull` for APIs that - /// use `INVALID_HANDLE_VALUE` to indicate failure. - /// - /// # Safety - /// - /// The passed `handle` value must either satisfy the safety requirements - /// of [`FromRawHandle::from_raw_handle`], or be null. Note that not all - /// Windows APIs use null for errors; see [here] for the full story. - /// - /// [here]: https://devblogs.microsoft.com/oldnewthing/20040302-00/?p=40443 - #[inline] - pub unsafe fn from_raw_handle(handle: RawHandle) -> Self { - Self(handle) - } -} - -#[cfg(any(unix, target_os = "wasi"))] -impl Drop for OwnedFd { - #[inline] - fn drop(&mut self) { - #[cfg(feature = "close")] - unsafe { - let _ = libc::close(self.fd as std::os::raw::c_int); - } - - // If the `close` feature is disabled, we expect users to avoid letting - // `OwnedFd` instances drop, so that we don't have to call `close`. - #[cfg(not(feature = "close"))] - { - unreachable!("drop called without the \"close\" feature in io-lifetimes"); - } - } -} - -#[cfg(target_os = "hermit")] -impl Drop for OwnedFd { - #[inline] - fn drop(&mut self) { - #[cfg(feature = "close")] - unsafe { - let _ = hermit_abi::close(self.fd); - } - - // If the `close` feature is disabled, we expect users to avoid letting - // `OwnedFd` instances drop, so that we don't have to call `close`. - #[cfg(not(feature = "close"))] - { - unreachable!("drop called without the \"close\" feature in io-lifetimes"); - } - } -} - -#[cfg(windows)] -impl Drop for OwnedHandle { - #[inline] - fn drop(&mut self) { - #[cfg(feature = "close")] - unsafe { - let _ = CloseHandle(self.handle as HANDLE); - } - - // If the `close` feature is disabled, we expect users to avoid letting - // `OwnedHandle` instances drop, so that we don't have to call `close`. - #[cfg(not(feature = "close"))] - { - unreachable!("drop called without the \"close\" feature in io-lifetimes"); - } - } -} - -#[cfg(windows)] -impl Drop for HandleOrInvalid { - #[inline] - fn drop(&mut self) { - #[cfg(feature = "close")] - unsafe { - let _ = CloseHandle(self.0 as HANDLE); - } - - // If the `close` feature is disabled, we expect users to avoid letting - // `HandleOrInvalid` instances drop, so that we don't have to call `close`. - #[cfg(not(feature = "close"))] - { - unreachable!("drop called without the \"close\" feature in io-lifetimes"); - } - } -} - -#[cfg(windows)] -impl Drop for HandleOrNull { - #[inline] - fn drop(&mut self) { - #[cfg(feature = "close")] - unsafe { - let _ = CloseHandle(self.0 as HANDLE); - } - - // If the `close` feature is disabled, we expect users to avoid letting - // `HandleOrNull` instances drop, so that we don't have to call `close`. - #[cfg(not(feature = "close"))] - { - unreachable!("drop called without the \"close\" feature in io-lifetimes"); - } - } -} - -#[cfg(windows)] -impl Drop for OwnedSocket { - #[inline] - fn drop(&mut self) { - #[cfg(feature = "close")] - unsafe { - let _ = closesocket(self.socket as SOCKET); - } - - // If the `close` feature is disabled, we expect users to avoid letting - // `OwnedSocket` instances drop, so that we don't have to call `close`. - #[cfg(not(feature = "close"))] - { - unreachable!("drop called without the \"close\" feature in io-lifetimes"); - } - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl fmt::Debug for BorrowedFd<'_> { - #[allow(clippy::missing_inline_in_public_items)] - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("BorrowedFd").field("fd", &self.fd).finish() - } -} - -#[cfg(windows)] -impl fmt::Debug for BorrowedHandle<'_> { - #[allow(clippy::missing_inline_in_public_items)] - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("BorrowedHandle") - .field("handle", &self.handle) - .finish() - } -} - -#[cfg(windows)] -impl fmt::Debug for BorrowedSocket<'_> { - #[allow(clippy::missing_inline_in_public_items)] - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("BorrowedSocket") - .field("socket", &self.socket) - .finish() - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -impl fmt::Debug for OwnedFd { - #[allow(clippy::missing_inline_in_public_items)] - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("OwnedFd").field("fd", &self.fd).finish() - } -} - -#[cfg(windows)] -impl fmt::Debug for OwnedHandle { - #[allow(clippy::missing_inline_in_public_items)] - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("OwnedHandle") - .field("handle", &self.handle) - .finish() - } -} - -#[cfg(windows)] -impl fmt::Debug for OwnedSocket { - #[allow(clippy::missing_inline_in_public_items)] - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("OwnedSocket") - .field("socket", &self.socket) - .finish() - } -} diff -Nru temporalio-1.3.0/vendor/io-lifetimes/src/views.rs temporalio-1.3.0/vendor/io-lifetimes/src/views.rs --- temporalio-1.3.0/vendor/io-lifetimes/src/views.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/io-lifetimes/src/views.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,277 +0,0 @@ -//! Typed views using temporary objects. -//! -//! This module defines the return types for [`AsFilelike::as_filelike_view`] -//! and [`AsSocketlike::as_socketlike_view`]. -//! -//! [`AsSocketlike::as_socketlike_view`]: crate::AsSocketlike::as_socketlike_view - -use crate::raw::{ - AsRawFilelike, AsRawSocketlike, FromRawFilelike, FromRawSocketlike, IntoRawFilelike, - IntoRawSocketlike, RawFilelike, RawSocketlike, -}; -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -use crate::OwnedFd; -use crate::{ - AsFilelike, AsSocketlike, FromFilelike, FromSocketlike, IntoFilelike, IntoSocketlike, - OwnedFilelike, OwnedSocketlike, -}; -#[cfg(windows)] -use crate::{OwnedHandle, OwnedSocket}; -use std::fmt; -use std::marker::PhantomData; -use std::mem::ManuallyDrop; -use std::ops::Deref; - -/// Declare that a type is safe to use in a [`FilelikeView`]. -/// -/// # Safety -/// -/// Types implementing this trait declare that if they are constructed with -/// [`FromFilelike`] and consumed with [`IntoFilelike`], their `IntoFilelike` -/// will return the same `OwnedFd` value that was passed to their -/// `FromFilelike`. -pub unsafe trait FilelikeViewType: FromFilelike + IntoFilelike {} - -/// Declare that a type is safe to use in a [`SocketlikeView`]. -/// -/// # Safety -/// -/// Types implementing this trait declare that if they are constructed with -/// [`FromSocketlike`] and consumed with [`IntoSocketlike`], their -/// `IntoSocketlike` will return the same `OwnedFd` value that was passed to -/// their `FromSocketlike`. -pub unsafe trait SocketlikeViewType: FromSocketlike + IntoSocketlike {} - -/// A non-owning view of a resource which dereferences to a `&Target` or -/// `&mut Target`. These are returned by [`AsFilelike::as_filelike_view`]. -pub struct FilelikeView<'filelike, Target: FilelikeViewType> { - /// The value to dereference to. This is a `ManuallyDrop` so that we can - /// consume it in our `Drop` impl. - target: ManuallyDrop, - - /// `FilelikeViewType` implementors guarantee that their `Into` - /// returns the same fd as their `From` gave them. This field - /// allows us to verify this. - #[cfg(debug_assertions)] - orig: RawFilelike, - - /// This field exists because we don't otherwise explicitly use - /// `'filelike`. - _phantom: PhantomData<&'filelike OwnedFilelike>, -} - -/// A non-owning view of a resource which dereferences to a `&Target` or -/// `&mut Target`. These are returned by [`AsSocketlike::as_socketlike_view`]. -pub struct SocketlikeView<'socketlike, Target: SocketlikeViewType> { - /// The value to dereference to. This is a `ManuallyDrop` so that we can - /// consume it in our `Drop` impl. - target: ManuallyDrop, - - /// `SocketlikeViewType` implementors guarantee that their `Into` - /// returns the same fd as their `From` gave them. This field - /// allows us to verify this. - #[cfg(debug_assertions)] - orig: RawSocketlike, - - /// This field exists because we don't otherwise explicitly use - /// `'socketlike`. - _phantom: PhantomData<&'socketlike OwnedSocketlike>, -} - -impl FilelikeView<'_, Target> { - /// Construct a temporary `Target` and wrap it in a `FilelikeView` object. - #[inline] - pub(crate) fn new(filelike: &T) -> Self { - // Safety: The returned `FilelikeView` is scoped to the lifetime of - // `filelike`, which we've borrowed here, so the view won't outlive - // the object it's borrowed from. - unsafe { Self::view_raw(filelike.as_filelike().as_raw_filelike()) } - } - - /// Construct a temporary `Target` from raw and wrap it in a `FilelikeView` - /// object. - /// - /// # Safety - /// - /// `raw` must be a valid raw filelike referencing a resource that outlives - /// the resulting view. - #[inline] - pub unsafe fn view_raw(raw: RawFilelike) -> Self { - let owned = OwnedFilelike::from_raw_filelike(raw); - Self { - target: ManuallyDrop::new(Target::from_filelike(owned)), - #[cfg(debug_assertions)] - orig: raw, - _phantom: PhantomData, - } - } -} - -impl SocketlikeView<'_, Target> { - /// Construct a temporary `Target` and wrap it in a `SocketlikeView` - /// object. - #[inline] - pub(crate) fn new(socketlike: &T) -> Self { - // Safety: The returned `SocketlikeView` is scoped to the lifetime of - // `socketlike`, which we've borrowed here, so the view won't outlive - // the object it's borrowed from. - unsafe { Self::view_raw(socketlike.as_socketlike().as_raw_socketlike()) } - } - - /// Construct a temporary `Target` from raw and wrap it in a - /// `SocketlikeView` object. - /// - /// # Safety - /// - /// `raw` must be a valid raw socketlike referencing a resource that - /// outlives the resulting view. - #[inline] - pub unsafe fn view_raw(raw: RawSocketlike) -> Self { - let owned = OwnedSocketlike::from_raw_socketlike(raw); - Self { - target: ManuallyDrop::new(Target::from_socketlike(owned)), - #[cfg(debug_assertions)] - orig: raw, - _phantom: PhantomData, - } - } -} - -impl Deref for FilelikeView<'_, Target> { - type Target = Target; - - #[inline] - fn deref(&self) -> &Self::Target { - &self.target - } -} - -impl Deref for SocketlikeView<'_, Target> { - type Target = Target; - - #[inline] - fn deref(&self) -> &Self::Target { - &self.target - } -} - -impl Drop for FilelikeView<'_, Target> { - #[inline] - fn drop(&mut self) { - // Use `Into*` to consume `self.target` without freeing its resource. - // - // Safety: Using `ManuallyDrop::take` requires us to ensure that - // `self.target` is not used again. We don't use it again here, and - // this is the `drop` function, so we know it's not used afterward. - let _raw = unsafe { ManuallyDrop::take(&mut self.target) } - .into_filelike() - .into_raw_filelike(); - - #[cfg(debug_assertions)] - debug_assert_eq!(self.orig, _raw); - } -} - -impl Drop for SocketlikeView<'_, Target> { - #[inline] - fn drop(&mut self) { - // Use `Into*` to consume `self.target` without freeing its resource. - // - // Safety: Using `ManuallyDrop::take` requires us to ensure that - // `self.target` is not used again. We don't use it again here, and - // this is the `drop` function, so we know it's not used afterward. - let _raw = unsafe { ManuallyDrop::take(&mut self.target) } - .into_socketlike() - .into_raw_socketlike(); - - #[cfg(debug_assertions)] - debug_assert_eq!(self.orig, _raw); - } -} - -impl fmt::Debug for FilelikeView<'_, Target> { - #[allow(clippy::missing_inline_in_public_items)] - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("FilelikeView") - .field("target", &*self) - .finish() - } -} - -impl fmt::Debug for SocketlikeView<'_, Target> { - #[allow(clippy::missing_inline_in_public_items)] - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("SocketlikeView") - .field("target", &*self) - .finish() - } -} - -#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))] -unsafe impl FilelikeViewType for OwnedFd {} -#[cfg(windows)] -unsafe impl FilelikeViewType for OwnedHandle {} -#[cfg(windows)] -unsafe impl SocketlikeViewType for OwnedSocket {} -unsafe impl FilelikeViewType for std::fs::File {} -unsafe impl SocketlikeViewType for std::net::TcpStream {} -unsafe impl SocketlikeViewType for std::net::TcpListener {} -unsafe impl SocketlikeViewType for std::net::UdpSocket {} -#[cfg(unix)] -unsafe impl SocketlikeViewType for std::os::unix::net::UnixStream {} -#[cfg(unix)] -unsafe impl SocketlikeViewType for std::os::unix::net::UnixListener {} - -#[cfg(unix)] -unsafe impl SocketlikeViewType for std::os::unix::net::UnixDatagram {} -#[cfg(not(any(target_os = "wasi", target_os = "hermit")))] -#[cfg(feature = "os_pipe")] -unsafe impl FilelikeViewType for os_pipe::PipeWriter {} -#[cfg(not(any(target_os = "wasi", target_os = "hermit")))] -#[cfg(feature = "os_pipe")] -unsafe impl FilelikeViewType for os_pipe::PipeReader {} - -#[cfg(not(any(target_os = "wasi", target_os = "hermit")))] -#[cfg(feature = "socket2")] -unsafe impl SocketlikeViewType for socket2::Socket {} - -#[cfg(not(any(target_os = "wasi", target_os = "hermit")))] -#[cfg(feature = "async_std")] -unsafe impl SocketlikeViewType for async_std::net::TcpStream {} -#[cfg(not(any(target_os = "wasi", target_os = "hermit")))] -#[cfg(feature = "async_std")] -unsafe impl SocketlikeViewType for async_std::net::TcpListener {} -#[cfg(not(any(target_os = "wasi", target_os = "hermit")))] -#[cfg(feature = "async_std")] -unsafe impl SocketlikeViewType for async_std::net::UdpSocket {} -#[cfg(unix)] -#[cfg(feature = "async_std")] -unsafe impl SocketlikeViewType for async_std::os::unix::net::UnixStream {} -#[cfg(unix)] -#[cfg(feature = "async_std")] -unsafe impl SocketlikeViewType for async_std::os::unix::net::UnixListener {} -#[cfg(unix)] -#[cfg(feature = "async_std")] -unsafe impl SocketlikeViewType for async_std::os::unix::net::UnixDatagram {} - -#[cfg(feature = "mio")] -unsafe impl SocketlikeViewType for mio::net::TcpStream {} -#[cfg(feature = "mio")] -unsafe impl SocketlikeViewType for mio::net::TcpListener {} -#[cfg(feature = "mio")] -unsafe impl SocketlikeViewType for mio::net::UdpSocket {} -#[cfg(unix)] -#[cfg(feature = "mio")] -unsafe impl SocketlikeViewType for mio::net::UnixDatagram {} -#[cfg(unix)] -#[cfg(feature = "mio")] -unsafe impl SocketlikeViewType for mio::net::UnixListener {} -#[cfg(unix)] -#[cfg(feature = "mio")] -unsafe impl SocketlikeViewType for mio::net::UnixStream {} -#[cfg(unix)] -#[cfg(feature = "mio")] -unsafe impl FilelikeViewType for mio::unix::pipe::Receiver {} -#[cfg(unix)] -#[cfg(feature = "mio")] -unsafe impl FilelikeViewType for mio::unix::pipe::Sender {} diff -Nru temporalio-1.3.0/vendor/itertools/.cargo-checksum.json temporalio-1.3.0/vendor/itertools/.cargo-checksum.json --- temporalio-1.3.0/vendor/itertools/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"ed6c781d541c40d4a19eaecd794cadebb94b3f4d51e32367803542c88f0457ee","Cargo.toml":"6dcbab25126c0cdf64f5089156de0d4346914c6d47c557d370b8e20e039ca7d3","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7576269ea71f767b99297934c0b2367532690f8c4badc695edf8e04ab6a1e545","README.md":"3acfeb07424200ae70bf571ef63a96bae954c298bddf447c9bea0ea9394825cc","benches/bench1.rs":"bb06f39db0544b1380cd4929139ccf521a9eecab7ca3f910b9499f965ec0a047","benches/combinations.rs":"51523ee1ca438a56f14711f0b04ee943895062d35859fbe23a2714d2fca3289d","benches/combinations_with_replacement.rs":"11f29160652a2d90ce7ca4b1c339c4457888ab6867e2456ce1c62e3adf9be737","benches/extra/mod.rs":"6ca290d72302a1945078621610b5788060b0de29639decebbdc557a80044aa97","benches/extra/zipslices.rs":"40e9f68a7c00f8429193fca463caef18851fa49b33355cc136bad3ccc840d655","benches/fold_specialization.rs":"5a517bbe29d366a15f6f751660e17ab1aa3e7b21552a1983048c662e34f0d69e","benches/powerset.rs":"6fd9d69a3483b37dc2411f99fb4efa6131577696f2dbdc8d1de9e4d7642fe3a3","benches/tree_fold1.rs":"539232e74f9aaea295a42069ac5af707811e90dc1c71c6e0a9064ffc731999de","benches/tuple_combinations.rs":"16366158743307a0289fc1df423a3cec45009807d410a9fe9922d5b6f8b7d002","benches/tuples.rs":"5a620783ae203e9ff9623d10d2c7fe9911d8b6c811cbad7613afa30e390c759d","clippy.toml":"33ffb83bbddb772575b3aa565b7136a8158ee386c216ffc2588fed9e83fa3826","examples/iris.data":"596ffd580471ca4d4880f8e439c7281f3b50d8249a5960353cb200b1490f63a0","examples/iris.rs":"1b465ed6a417180913104bc95a545fd9d1a3d67d121871ab737ad87e31b8be37","src/adaptors/coalesce.rs":"a0073325d40f297d29101538d18a267aef81889a999338dc09cb43a31cb4ec8b","src/adaptors/map.rs":"241971e856e468d71323071fb4a09867fbcedb83877320be132dc03516fe60e8","src/adaptors/mod.rs":"7f3bd7d011a348ce5e4bea486ef2e6346b64c7fe27540334d56d3f147f981d59","src/adaptors/multi_product.rs":"bb43e6dce68c815c21006d5b01c56e038d54b0c3bb8ee6bb8a4de11e2952c7ad","src/combinations.rs":"fb25babb459389093f886721016c72bf9f00e51d02735f638d871bb3a447ffd0","src/combinations_with_replacement.rs":"463011a574facbdd84278386b533a90e4dd517f0417e05adb82d182049db1f50","src/concat_impl.rs":"03b1ed61cbed242c286c3c4c5c848dbd57e02ab83fcef264f3a592b58107f324","src/cons_tuples_impl.rs":"c253d03b861831c01d62cacc57b49715ee62f6171e69f6886bb5a6ca0863bc3a","src/diff.rs":"a7800e9ce7a87b53ebe2338481335751fb43d44fa6a1ca719aceaaab40e5c8fe","src/duplicates_impl.rs":"f62fe4b642f501f785721ce5a505cf622a771e457210726dd0fb8b30be7ebbbc","src/either_or_both.rs":"76b13fbfac6bc959b4c1d8b7c99ce51726e95f994ca5429477e523a3d3950e4a","src/exactly_one_err.rs":"aa50081f6a31b5109b30e3ed305e3ec2413c6908dedc8990ec5378a99cee2b39","src/extrema_set.rs":"2a25b0b86eed2fd5d05622d591a3085cab823973d450816c2c3b8cb76e9c187e","src/flatten_ok.rs":"fe209fd886ecd9cb98d99625aa0c7274af7e644eff4a10de15b4dec8bbbc934a","src/format.rs":"a8192d85c0f9de8e633c202456e3cde0f3bc50f19b6bd8a4b2cfa3ef5123de1a","src/free.rs":"dfc57b7f56a08d4986a96b679018b41346576a7a34b668e008cc01109e728750","src/group_map.rs":"f7b02c964f63505d3e36280cfdc1755e05287714201efe983dacf702eee61434","src/groupbylazy.rs":"4f2181c022a45ff8444597708861fc6863eceb6f7555ea81cf3eeba19b492971","src/grouping_map.rs":"cbc45ac563345c96f3ac50c78f73c83d870523436a7ab88c1c9a685d204461d3","src/impl_macros.rs":"4f829b458873bed556f1aff2ae4e88dbd576766e2b5bcc07ff3ac8756758e6f4","src/intersperse.rs":"b9717242495846a4a979c95d93d5681caccb7c07a0d889eab763ad3d49a46125","src/k_smallest.rs":"603eb34314c01769ff7f6def2a24cf7a7b38507e6f3658b7aafc23a3b2e9b322","src/kmerge_impl.rs":"a347b0f6fa7715afd8a54d85ce139ed5b14c9e58a16c2b3648f5b288fdb5375f","src/lazy_buffer.rs":"834f6ef7fdf9f00c8a6329beb38eaefb706847ceeec309c221dce705c2c1e05b","src/lib.rs":"fadb0045279aafe8e8cccb45fadc383c7b358197b83c9c38fba87ada4cb2f84a","src/merge_join.rs":"1016113f6c983a9498bae5dc0570190437e1357b3333f6e19ea95c88599a1225","src/minmax.rs":"96d3897c28c8c63284d4729becc9ada6855e0953cac6e1bd35cf6f38c50b0ec0","src/multipeek_impl.rs":"35162bca4456bfa20a08e8d40e4d1cc6783dc662778789fdcded60371e975122","src/pad_tail.rs":"04be2ca73abb85815b06b5524c99d6feb2919180c486a4646f9cc6c87462f67b","src/peek_nth.rs":"6a0a51f2f373ce14d3d58595c46464878a14976bf00841a7396c03f9f9ab07ac","src/peeking_take_while.rs":"2b1b77c8882be32cfd76e973d303aa62f73370efd470c60764add0cdcca524d5","src/permutations.rs":"97831e7e26904c3cae68c97e74f7c6981ceb2fb2f2217282a0e5e54083a565fc","src/powerset.rs":"e0ee6b1316b4dd314c1e81502b90ae8113e1cda12168322520c5a65410e584b2","src/process_results_impl.rs":"9ed7fa46c8316238272ef47577387a386c1a109b50377dd3caf4291b6587cb73","src/put_back_n_impl.rs":"821e047fecd6ca0036290029f4febe7638a3abf1faa05e1e747a3bf9d80ff464","src/rciter_impl.rs":"5b156082ef2d25a94a4ad01d94cba2813c4b3e72e212515a8ad0fc8588f8045d","src/repeatn.rs":"bfc8f9145c9d8a3ea651f012b7d5a8d2fbbcbefdee76eafd098d02e7c54cda90","src/size_hint.rs":"021e57aad7df8f1e70ef588e9e9b8a1695aab183b1098f1848561f96c5dc9bcb","src/sources.rs":"61637f32c2cea2290ecfc1980c0b2d0f68463839ac09bd81006f8258ab8ecaae","src/tee.rs":"665832aa547389a420c3441470ff2494249f0ed2841be0c6a578367fe9dbd381","src/tuple_impl.rs":"00a9b61942425fb477b9691c3348646c0f9f534ff94f6321027f38c61ce2478c","src/unique_impl.rs":"3b89cdd668b74cc0a0eabb1522489e2305a0d2d8da25d6a1884e8626bbdb5959","src/unziptuple.rs":"84b50e5d29b9ddbf21a46a1cc2fd7877729c7f7da9bdc8ae1966dbaf2d2f6f60","src/with_position.rs":"c8a9b3476b3b90986b004a8877c19ff54b4c6800c5ac7ca1458d914036dacfe9","src/zip_eq_impl.rs":"4a41dc6dfe99359585d50ce648bdc85f15276c602048872b1d152e90841d8cad","src/zip_longest.rs":"f7cf5fffc3ca053ee80b410a05b27de1a475021f6de3181aea981010d7e8453f","src/ziptuple.rs":"7f9df12bf6556f382bbd4ad8cf17eb8b60c1c47fadbce016141133ba0f3384a1","tests/adaptors_no_collect.rs":"f459f36d54f5d475b2b2e83f5a1c98109c15062756ae822fa379486f3eeed666","tests/flatten_ok.rs":"b7894874132918b8229c7150b2637511d8e3e14197d8eeb9382d46b2a514efa2","tests/macros_hygiene.rs":"522afa0106e3f11a5149e9218f89c2329e405546d2ef0ea756d6a27e8a0e9ca3","tests/merge_join.rs":"b08c4ee6529d234c68d411a413b8781455d18a1eab17872d1828bb75a4fcf79b","tests/peeking_take_while.rs":"4b1c394e44a9ef9bc0de707ae080b45803db722f79834c20f15b826d7c3f1f2e","tests/quick.rs":"6fcc0649b9270f024b169b1f499dd4cc7fecb0c9aec0dfc155b264916cc626e7","tests/specializations.rs":"fdd16dc663330033fedcc478609b393d4aa369dc07dc8cda31a75219fb793087","tests/test_core.rs":"32576ba90aa8e5db985b6e6ffe30e3046bc6a11d392db8f6b4bdd2ba48d9b24d","tests/test_std.rs":"f28a78a1912c950e7c37be1e82867e70dc585d60afecdebc7a97965194eee8e6","tests/tuples.rs":"014e4da776174bfe923270e2a359cd9c95b372fce4b952b8138909d6e2c52762","tests/zip.rs":"99af365fe6054ef1c6089d3e604e34da8fea66e55861ae4be9e7336ec8de4b56"},"package":"b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"} \ No newline at end of file +{"files":{"CHANGELOG.md":"9f94a3c5bdd8dd758864440205c84d73005b8619cd20833449db54f1f484c6bf","Cargo.lock":"b0443f54560491073ca861d8ed664a07a8039872568a527b2add8f362dd9734b","Cargo.toml":"e64e6e088ab537ba843f25a111af102dd434fd58cea3d446dff314cf42ad33e2","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7576269ea71f767b99297934c0b2367532690f8c4badc695edf8e04ab6a1e545","README.md":"9de81a03c86ca4573d5d0a98eaa4d938bc6c538816f421d1b7499301efb5a454","benches/bench1.rs":"bb06f39db0544b1380cd4929139ccf521a9eecab7ca3f910b9499f965ec0a047","benches/combinations.rs":"51523ee1ca438a56f14711f0b04ee943895062d35859fbe23a2714d2fca3289d","benches/combinations_with_replacement.rs":"11f29160652a2d90ce7ca4b1c339c4457888ab6867e2456ce1c62e3adf9be737","benches/extra/mod.rs":"6ca290d72302a1945078621610b5788060b0de29639decebbdc557a80044aa97","benches/extra/zipslices.rs":"40e9f68a7c00f8429193fca463caef18851fa49b33355cc136bad3ccc840d655","benches/fold_specialization.rs":"5a517bbe29d366a15f6f751660e17ab1aa3e7b21552a1983048c662e34f0d69e","benches/powerset.rs":"6fd9d69a3483b37dc2411f99fb4efa6131577696f2dbdc8d1de9e4d7642fe3a3","benches/tree_fold1.rs":"539232e74f9aaea295a42069ac5af707811e90dc1c71c6e0a9064ffc731999de","benches/tuple_combinations.rs":"16366158743307a0289fc1df423a3cec45009807d410a9fe9922d5b6f8b7d002","benches/tuples.rs":"5a620783ae203e9ff9623d10d2c7fe9911d8b6c811cbad7613afa30e390c759d","examples/iris.data":"596ffd580471ca4d4880f8e439c7281f3b50d8249a5960353cb200b1490f63a0","examples/iris.rs":"1b465ed6a417180913104bc95a545fd9d1a3d67d121871ab737ad87e31b8be37","src/adaptors/coalesce.rs":"a0073325d40f297d29101538d18a267aef81889a999338dc09cb43a31cb4ec8b","src/adaptors/map.rs":"241971e856e468d71323071fb4a09867fbcedb83877320be132dc03516fe60e8","src/adaptors/mod.rs":"7f3bd7d011a348ce5e4bea486ef2e6346b64c7fe27540334d56d3f147f981d59","src/adaptors/multi_product.rs":"bb43e6dce68c815c21006d5b01c56e038d54b0c3bb8ee6bb8a4de11e2952c7ad","src/combinations.rs":"fb25babb459389093f886721016c72bf9f00e51d02735f638d871bb3a447ffd0","src/combinations_with_replacement.rs":"463011a574facbdd84278386b533a90e4dd517f0417e05adb82d182049db1f50","src/concat_impl.rs":"03b1ed61cbed242c286c3c4c5c848dbd57e02ab83fcef264f3a592b58107f324","src/cons_tuples_impl.rs":"c253d03b861831c01d62cacc57b49715ee62f6171e69f6886bb5a6ca0863bc3a","src/diff.rs":"a7800e9ce7a87b53ebe2338481335751fb43d44fa6a1ca719aceaaab40e5c8fe","src/duplicates_impl.rs":"f62fe4b642f501f785721ce5a505cf622a771e457210726dd0fb8b30be7ebbbc","src/either_or_both.rs":"c7ffe60772350c470fb42a5e4ff5087587985206733fe9814eeefa249983239a","src/exactly_one_err.rs":"aa50081f6a31b5109b30e3ed305e3ec2413c6908dedc8990ec5378a99cee2b39","src/extrema_set.rs":"2a25b0b86eed2fd5d05622d591a3085cab823973d450816c2c3b8cb76e9c187e","src/flatten_ok.rs":"fe209fd886ecd9cb98d99625aa0c7274af7e644eff4a10de15b4dec8bbbc934a","src/format.rs":"20fbbe35a98315ceb77ad910ff92319e163ae16452b0c24a8f1eccbc71c9e171","src/free.rs":"dfc57b7f56a08d4986a96b679018b41346576a7a34b668e008cc01109e728750","src/group_map.rs":"f7b02c964f63505d3e36280cfdc1755e05287714201efe983dacf702eee61434","src/groupbylazy.rs":"57ebf7d8a5a752045f94b76db8b80073f46964c28cc0919510fbdea102244918","src/grouping_map.rs":"cbc45ac563345c96f3ac50c78f73c83d870523436a7ab88c1c9a685d204461d3","src/impl_macros.rs":"4f829b458873bed556f1aff2ae4e88dbd576766e2b5bcc07ff3ac8756758e6f4","src/intersperse.rs":"b9717242495846a4a979c95d93d5681caccb7c07a0d889eab763ad3d49a46125","src/k_smallest.rs":"603eb34314c01769ff7f6def2a24cf7a7b38507e6f3658b7aafc23a3b2e9b322","src/kmerge_impl.rs":"a347b0f6fa7715afd8a54d85ce139ed5b14c9e58a16c2b3648f5b288fdb5375f","src/lazy_buffer.rs":"834f6ef7fdf9f00c8a6329beb38eaefb706847ceeec309c221dce705c2c1e05b","src/lib.rs":"703fa755955007c2ddf1c1abe6a20e9a762ba09746c4eeae905e6d417bf3bf31","src/merge_join.rs":"20574fbb0ca610a6ac0ad89fb7e856a629235a14f285954760386cd0de3dc687","src/minmax.rs":"96d3897c28c8c63284d4729becc9ada6855e0953cac6e1bd35cf6f38c50b0ec0","src/multipeek_impl.rs":"35162bca4456bfa20a08e8d40e4d1cc6783dc662778789fdcded60371e975122","src/pad_tail.rs":"04be2ca73abb85815b06b5524c99d6feb2919180c486a4646f9cc6c87462f67b","src/peek_nth.rs":"6a0a51f2f373ce14d3d58595c46464878a14976bf00841a7396c03f9f9ab07ac","src/peeking_take_while.rs":"2293eaba60142f427a8bd1fa6d347b21469cadaaef69a70f28daed3a4166c1b4","src/permutations.rs":"97831e7e26904c3cae68c97e74f7c6981ceb2fb2f2217282a0e5e54083a565fc","src/powerset.rs":"e0ee6b1316b4dd314c1e81502b90ae8113e1cda12168322520c5a65410e584b2","src/process_results_impl.rs":"fd51b2a4785c3b65145703dea4c088c822e5592de939cf228917c6275bee0778","src/put_back_n_impl.rs":"821e047fecd6ca0036290029f4febe7638a3abf1faa05e1e747a3bf9d80ff464","src/rciter_impl.rs":"5b156082ef2d25a94a4ad01d94cba2813c4b3e72e212515a8ad0fc8588f8045d","src/repeatn.rs":"bfc8f9145c9d8a3ea651f012b7d5a8d2fbbcbefdee76eafd098d02e7c54cda90","src/size_hint.rs":"021e57aad7df8f1e70ef588e9e9b8a1695aab183b1098f1848561f96c5dc9bcb","src/sources.rs":"61637f32c2cea2290ecfc1980c0b2d0f68463839ac09bd81006f8258ab8ecaae","src/take_while_inclusive.rs":"f567e91a7f25ed785c3132ff408e3f17b59dce98909041a8c40cd14c0f350f55","src/tee.rs":"665832aa547389a420c3441470ff2494249f0ed2841be0c6a578367fe9dbd381","src/tuple_impl.rs":"8d6c52850bf7f3b9d03fcbaed0e60e5a5becc2f8421ca4bc79e876659804a258","src/unique_impl.rs":"3b89cdd668b74cc0a0eabb1522489e2305a0d2d8da25d6a1884e8626bbdb5959","src/unziptuple.rs":"84b50e5d29b9ddbf21a46a1cc2fd7877729c7f7da9bdc8ae1966dbaf2d2f6f60","src/with_position.rs":"a3652e3e97de78c5c7eeb9a5306225b5ce517d6165b96663820b5f00fae1bff9","src/zip_eq_impl.rs":"4a41dc6dfe99359585d50ce648bdc85f15276c602048872b1d152e90841d8cad","src/zip_longest.rs":"f7cf5fffc3ca053ee80b410a05b27de1a475021f6de3181aea981010d7e8453f","src/ziptuple.rs":"7f9df12bf6556f382bbd4ad8cf17eb8b60c1c47fadbce016141133ba0f3384a1","tests/adaptors_no_collect.rs":"f459f36d54f5d475b2b2e83f5a1c98109c15062756ae822fa379486f3eeed666","tests/flatten_ok.rs":"b7894874132918b8229c7150b2637511d8e3e14197d8eeb9382d46b2a514efa2","tests/macros_hygiene.rs":"522afa0106e3f11a5149e9218f89c2329e405546d2ef0ea756d6a27e8a0e9ca3","tests/merge_join.rs":"b08c4ee6529d234c68d411a413b8781455d18a1eab17872d1828bb75a4fcf79b","tests/peeking_take_while.rs":"f834361c5520dda15eb9e9ebe87507c905462201412b21859d9f83dab91d0e0b","tests/quick.rs":"203619d7de9ae068a5c0c61c398f65f15a878b6ac759cc4575d19f0c90dfd9fa","tests/specializations.rs":"fdd16dc663330033fedcc478609b393d4aa369dc07dc8cda31a75219fb793087","tests/test_core.rs":"32576ba90aa8e5db985b6e6ffe30e3046bc6a11d392db8f6b4bdd2ba48d9b24d","tests/test_std.rs":"16a03cfe359a570685b48b80473d1947a89a49ec9ef744ea175252e2b95c0336","tests/tuples.rs":"014e4da776174bfe923270e2a359cd9c95b372fce4b952b8138909d6e2c52762","tests/zip.rs":"99af365fe6054ef1c6089d3e604e34da8fea66e55861ae4be9e7336ec8de4b56"},"package":"b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/itertools/Cargo.lock temporalio-1.3.0/vendor/itertools/Cargo.lock --- temporalio-1.3.0/vendor/itertools/Cargo.lock 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,681 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bumpalo" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d" + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "ciborium" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369" + +[[package]] +name = "ciborium-ll" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "clap" +version = "3.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750" +dependencies = [ + "bitflags", + "clap_lex", + "indexmap", + "textwrap", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "criterion" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb" +dependencies = [ + "anes", + "atty", + "cast", + "ciborium", + "clap", + "criterion-plot", + "itertools 0.10.4", + "lazy_static", + "num-traits", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +dependencies = [ + "cast", + "itertools 0.10.4", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset", + "once_cell", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "either" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "half" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "indexmap" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "itertools" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8bf247779e67a9082a4790b45e71ac7cfd1321331a5c856a74a9faebdab78d0" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.11.0" +dependencies = [ + "criterion", + "either", + "paste", + "permutohedron", + "quickcheck", + "rand", +] + +[[package]] +name = "itoa" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" + +[[package]] +name = "js-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.133" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0f80d65747a3e43d1596c7c5492d95d5edddaabd45a7fcdb02b95f644164966" + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "once_cell" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f7254b99e31cad77da24b08ebf628882739a608578bb1bcdfc1f9c21260d7c0" + +[[package]] +name = "oorandom" +version = "11.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" + +[[package]] +name = "os_str_bytes" +version = "6.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff" + +[[package]] +name = "paste" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1" + +[[package]] +name = "permutohedron" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b687ff7b5da449d39e418ad391e5e08da53ec334903ddbb921db208908fc372c" + +[[package]] +name = "plotters" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" + +[[package]] +name = "plotters-svg" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" + +[[package]] +name = "proc-macro2" +version = "1.0.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quickcheck" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44883e74aa97ad63db83c4bf8ca490f02b2fc02f92575e720c8551e843c945f" +dependencies = [ + "rand", + "rand_core", +] + +[[package]] +name = "quote" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom", + "libc", + "rand_chacha", + "rand_core", + "rand_hc", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rayon" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" +dependencies = [ + "autocfg", + "crossbeam-deque", + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] +name = "regex" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" + +[[package]] +name = "ryu" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "serde" +version = "1.0.144" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.144" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "syn" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52205623b1b0f064a4e71182c3b18ae902267282930c6d5462c91b859668426e" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "textwrap" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16" + +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "unicode-ident" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd" + +[[package]] +name = "walkdir" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +dependencies = [ + "same-file", + "winapi", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasm-bindgen" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" + +[[package]] +name = "web-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff -Nru temporalio-1.3.0/vendor/itertools/Cargo.toml temporalio-1.3.0/vendor/itertools/Cargo.toml --- temporalio-1.3.0/vendor/itertools/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -3,30 +3,38 @@ # 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 +# to registry (e.g., crates.io) dependencies. # -# If you believe there's an error in this file please file an -# issue against the rust-lang/cargo repository. If you're -# editing this file be aware that the upstream Cargo.toml -# will likely look very different (and much more reasonable) +# 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.36.0" name = "itertools" -version = "0.10.5" +version = "0.11.0" authors = ["bluss"] exclude = ["/bors.toml"] description = "Extra iterator adaptors, iterator methods, free functions, and macros." documentation = "https://docs.rs/itertools/" readme = "README.md" -keywords = ["iterator", "data-structure", "zip", "product", "group-by"] -categories = ["algorithms", "rust-patterns"] -license = "MIT/Apache-2.0" +keywords = [ + "iterator", + "data-structure", + "zip", + "product", + "group-by", +] +categories = [ + "algorithms", + "rust-patterns", +] +license = "MIT OR Apache-2.0" repository = "https://github.com/rust-itertools/itertools" -[package.metadata.release] -no-dev-version = true + [profile.bench] -debug = true +debug = 2 [lib] test = false @@ -63,11 +71,13 @@ [[bench]] name = "powerset" harness = false + [dependencies.either] version = "1.0" default-features = false + [dev-dependencies.criterion] -version = "=0" +version = "0.4.0" [dev-dependencies.paste] version = "1.0.0" @@ -77,7 +87,7 @@ [dev-dependencies.quickcheck] version = "0.9" -default-features = false +default_features = false [dev-dependencies.rand] version = "0.7" @@ -85,4 +95,7 @@ [features] default = ["use_std"] use_alloc = [] -use_std = ["use_alloc", "either/use_std"] +use_std = [ + "use_alloc", + "either/use_std", +] diff -Nru temporalio-1.3.0/vendor/itertools/CHANGELOG.md temporalio-1.3.0/vendor/itertools/CHANGELOG.md --- temporalio-1.3.0/vendor/itertools/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,31 @@ # Changelog +## 0.11.0 + +### Breaking +- Make `Itertools::merge_join_by` also accept functions returning bool (#704) +- Implement `PeekingNext` transitively over mutable references (#643) +- Change `with_position` to yield `(Position, Item)` instead of `Position` (#699) + +### Added +- Add `Itertools::take_while_inclusive` (#616) +- Implement `PeekingNext` for `PeekingTakeWhile` (#644) +- Add `EitherOrBoth::{just_left, just_right, into_left, into_right, as_deref, as_deref_mut, left_or_insert, right_or_insert, left_or_insert_with, right_or_insert_with, insert_left, insert_right, insert_both}` (#629) +- Implement `Clone` for `CircularTupleWindows` (#686) +- Implement `Clone` for `Chunks` (#683) +- Add `Itertools::process_results` (#680) + +### Changed +- Use `Cell` instead of `RefCell` in `Format` and `FormatWith` (#608) +- CI tweaks (#674, #675) +- Document and test the difference between stable and unstable sorts (#653) +- Fix documentation error on `Itertools::max_set_by_key` (#692) +- Move MSRV metadata to `Cargo.toml` (#672) +- Implement `equal` with `Iterator::eq` (#591) + +## 0.10.5 + - Maintenance + ## 0.10.4 - Add `EitherOrBoth::or` and `EitherOrBoth::or_else` (#593) - Add `min_set`, `max_set` et al. (#613, #323) @@ -7,6 +33,9 @@ - Documentation fixes (#612, #625, #632, #633, #634, #638) - Code maintenance (#623, #624, #627, #630) +## 0.10.3 + - Maintenance + ## 0.10.2 - Add `Itertools::multiunzip` (#362, #565) - Add `intersperse` and `intersperse_with` free functions (#555) diff -Nru temporalio-1.3.0/vendor/itertools/clippy.toml temporalio-1.3.0/vendor/itertools/clippy.toml --- temporalio-1.3.0/vendor/itertools/clippy.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/clippy.toml 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -msrv = "1.36.0" diff -Nru temporalio-1.3.0/vendor/itertools/README.md temporalio-1.3.0/vendor/itertools/README.md --- temporalio-1.3.0/vendor/itertools/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -11,7 +11,7 @@ ```toml [dependencies] -itertools = "0.10.5" +itertools = "0.11.0" ``` How to use in your crate: diff -Nru temporalio-1.3.0/vendor/itertools/src/either_or_both.rs temporalio-1.3.0/vendor/itertools/src/either_or_both.rs --- temporalio-1.3.0/vendor/itertools/src/either_or_both.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/src/either_or_both.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,5 @@ +use core::ops::{Deref, DerefMut}; + use crate::EitherOrBoth::*; use either::Either; @@ -14,7 +16,7 @@ } impl EitherOrBoth { - /// If `Left`, or `Both`, return true, otherwise, return false. + /// If `Left`, or `Both`, return true. Otherwise, return false. pub fn has_left(&self) -> bool { self.as_ref().left().is_some() } @@ -24,7 +26,7 @@ self.as_ref().right().is_some() } - /// If Left, return true otherwise, return false. + /// If `Left`, return true. Otherwise, return false. /// Exclusive version of [`has_left`](EitherOrBoth::has_left). pub fn is_left(&self) -> bool { match *self { @@ -33,7 +35,7 @@ } } - /// If Right, return true otherwise, return false. + /// If `Right`, return true. Otherwise, return false. /// Exclusive version of [`has_right`](EitherOrBoth::has_right). pub fn is_right(&self) -> bool { match *self { @@ -42,13 +44,12 @@ } } - /// If Right, return true otherwise, return false. - /// Equivalent to `self.as_ref().both().is_some()`. + /// If `Both`, return true. Otherwise, return false. pub fn is_both(&self) -> bool { self.as_ref().both().is_some() } - /// If `Left`, or `Both`, return `Some` with the left value, otherwise, return `None`. + /// If `Left`, or `Both`, return `Some` with the left value. Otherwise, return `None`. pub fn left(self) -> Option { match self { Left(left) | Both(left, _) => Some(left), @@ -56,7 +57,7 @@ } } - /// If `Right`, or `Both`, return `Some` with the right value, otherwise, return `None`. + /// If `Right`, or `Both`, return `Some` with the right value. Otherwise, return `None`. pub fn right(self) -> Option { match self { Right(right) | Both(_, right) => Some(right), @@ -64,7 +65,57 @@ } } - /// If Both, return `Some` tuple containing left and right. + /// If `Left`, return `Some` with the left value. If `Right` or `Both`, return `None`. + /// + /// # Examples + /// + /// ``` + /// // On the `Left` variant. + /// # use itertools::{EitherOrBoth, EitherOrBoth::{Left, Right, Both}}; + /// let x: EitherOrBoth<_, ()> = Left("bonjour"); + /// assert_eq!(x.just_left(), Some("bonjour")); + /// + /// // On the `Right` variant. + /// let x: EitherOrBoth<(), _> = Right("hola"); + /// assert_eq!(x.just_left(), None); + /// + /// // On the `Both` variant. + /// let x = Both("bonjour", "hola"); + /// assert_eq!(x.just_left(), None); + /// ``` + pub fn just_left(self) -> Option { + match self { + Left(left) => Some(left), + _ => None, + } + } + + /// If `Right`, return `Some` with the right value. If `Left` or `Both`, return `None`. + /// + /// # Examples + /// + /// ``` + /// // On the `Left` variant. + /// # use itertools::{EitherOrBoth::{Left, Right, Both}, EitherOrBoth}; + /// let x: EitherOrBoth<_, ()> = Left("auf wiedersehen"); + /// assert_eq!(x.just_left(), Some("auf wiedersehen")); + /// + /// // On the `Right` variant. + /// let x: EitherOrBoth<(), _> = Right("adios"); + /// assert_eq!(x.just_left(), None); + /// + /// // On the `Both` variant. + /// let x = Both("auf wiedersehen", "adios"); + /// assert_eq!(x.just_left(), None); + /// ``` + pub fn just_right(self) -> Option { + match self { + Right(right) => Some(right), + _ => None, + } + } + + /// If `Both`, return `Some` containing the left and right values. Otherwise, return `None`. pub fn both(self) -> Option<(A, B)> { match self { Both(a, b) => Some((a, b)), @@ -72,6 +123,28 @@ } } + /// If `Left` or `Both`, return the left value. Otherwise, convert the right value and return it. + pub fn into_left(self) -> A + where + B: Into, + { + match self { + Left(a) | Both(a, _) => a, + Right(b) => b.into(), + } + } + + /// If `Right` or `Both`, return the right value. Otherwise, convert the left value and return it. + pub fn into_right(self) -> B + where + A: Into, + { + match self { + Right(b) | Both(_, b) => b, + Left(a) => a.into(), + } + } + /// Converts from `&EitherOrBoth` to `EitherOrBoth<&A, &B>`. pub fn as_ref(&self) -> EitherOrBoth<&A, &B> { match *self { @@ -90,6 +163,32 @@ } } + /// Converts from `&EitherOrBoth` to `EitherOrBoth<&_, &_>` using the [`Deref`] trait. + pub fn as_deref(&self) -> EitherOrBoth<&A::Target, &B::Target> + where + A: Deref, + B: Deref, + { + match *self { + Left(ref left) => Left(left), + Right(ref right) => Right(right), + Both(ref left, ref right) => Both(left, right), + } + } + + /// Converts from `&mut EitherOrBoth` to `EitherOrBoth<&mut _, &mut _>` using the [`DerefMut`] trait. + pub fn as_deref_mut(&mut self) -> EitherOrBoth<&mut A::Target, &mut B::Target> + where + A: DerefMut, + B: DerefMut, + { + match *self { + Left(ref mut left) => Left(left), + Right(ref mut right) => Right(right), + Both(ref mut left, ref mut right) => Both(left, right), + } + } + /// Convert `EitherOrBoth` to `EitherOrBoth`. pub fn flip(self) -> EitherOrBoth { match self { @@ -227,10 +326,152 @@ Both(inner_l, inner_r) => (inner_l, inner_r), } } + + /// Returns a mutable reference to the left value. If the left value is not present, + /// it is replaced with `val`. + pub fn left_or_insert(&mut self, val: A) -> &mut A { + self.left_or_insert_with(|| val) + } + + /// Returns a mutable reference to the right value. If the right value is not present, + /// it is replaced with `val`. + pub fn right_or_insert(&mut self, val: B) -> &mut B { + self.right_or_insert_with(|| val) + } + + /// If the left value is not present, replace it the value computed by the closure `f`. + /// Returns a mutable reference to the now-present left value. + pub fn left_or_insert_with(&mut self, f: F) -> &mut A + where + F: FnOnce() -> A, + { + match self { + Left(left) | Both(left, _) => left, + Right(_) => self.insert_left(f()), + } + } + + /// If the right value is not present, replace it the value computed by the closure `f`. + /// Returns a mutable reference to the now-present right value. + pub fn right_or_insert_with(&mut self, f: F) -> &mut B + where + F: FnOnce() -> B, + { + match self { + Right(right) | Both(_, right) => right, + Left(_) => self.insert_right(f()), + } + } + + /// Sets the `left` value of this instance, and returns a mutable reference to it. + /// Does not affect the `right` value. + /// + /// # Examples + /// ``` + /// # use itertools::{EitherOrBoth, EitherOrBoth::{Left, Right, Both}}; + /// + /// // Overwriting a pre-existing value. + /// let mut either: EitherOrBoth<_, ()> = Left(0_u32); + /// assert_eq!(*either.insert_left(69), 69); + /// + /// // Inserting a second value. + /// let mut either = Right("no"); + /// assert_eq!(*either.insert_left("yes"), "yes"); + /// assert_eq!(either, Both("yes", "no")); + /// ``` + pub fn insert_left(&mut self, val: A) -> &mut A { + match self { + Left(left) | Both(left, _) => { + *left = val; + left + } + Right(right) => { + // This is like a map in place operation. We move out of the reference, + // change the value, and then move back into the reference. + unsafe { + // SAFETY: We know this pointer is valid for reading since we got it from a reference. + let right = std::ptr::read(right as *mut _); + // SAFETY: Again, we know the pointer is valid since we got it from a reference. + std::ptr::write(self as *mut _, Both(val, right)); + } + + if let Both(left, _) = self { + left + } else { + // SAFETY: The above pattern will always match, since we just + // set `self` equal to `Both`. + unsafe { std::hint::unreachable_unchecked() } + } + } + } + } + + /// Sets the `right` value of this instance, and returns a mutable reference to it. + /// Does not affect the `left` value. + /// + /// # Examples + /// ``` + /// # use itertools::{EitherOrBoth, EitherOrBoth::{Left, Both}}; + /// // Overwriting a pre-existing value. + /// let mut either: EitherOrBoth<_, ()> = Left(0_u32); + /// assert_eq!(*either.insert_left(69), 69); + /// + /// // Inserting a second value. + /// let mut either = Left("what's"); + /// assert_eq!(*either.insert_right(9 + 10), 21 - 2); + /// assert_eq!(either, Both("what's", 9+10)); + /// ``` + pub fn insert_right(&mut self, val: B) -> &mut B { + match self { + Right(right) | Both(_, right) => { + *right = val; + right + } + Left(left) => { + // This is like a map in place operation. We move out of the reference, + // change the value, and then move back into the reference. + unsafe { + // SAFETY: We know this pointer is valid for reading since we got it from a reference. + let left = std::ptr::read(left as *mut _); + // SAFETY: Again, we know the pointer is valid since we got it from a reference. + std::ptr::write(self as *mut _, Both(left, val)); + } + if let Both(_, right) = self { + right + } else { + // SAFETY: The above pattern will always match, since we just + // set `self` equal to `Both`. + unsafe { std::hint::unreachable_unchecked() } + } + } + } + } + + /// Set `self` to `Both(..)`, containing the specified left and right values, + /// and returns a mutable reference to those values. + pub fn insert_both(&mut self, left: A, right: B) -> (&mut A, &mut B) { + *self = Both(left, right); + if let Both(left, right) = self { + (left, right) + } else { + // SAFETY: The above pattern will always match, since we just + // set `self` equal to `Both`. + unsafe { std::hint::unreachable_unchecked() } + } + } } impl EitherOrBoth { - /// Return either value of left, right, or the product of `f` applied where `Both` are present. + /// Return either value of left, right, or apply a function `f` to both values if both are present. + /// The input function has to return the same type as both Right and Left carry. + /// + /// # Examples + /// ``` + /// # use itertools::EitherOrBoth; + /// assert_eq!(EitherOrBoth::Both(3, 7).reduce(u32::max), 7); + /// assert_eq!(EitherOrBoth::Left(3).reduce(u32::max), 3); + /// assert_eq!(EitherOrBoth::Right(7).reduce(u32::max), 7); + /// ``` pub fn reduce(self, f: F) -> T where F: FnOnce(T, T) -> T, diff -Nru temporalio-1.3.0/vendor/itertools/src/format.rs temporalio-1.3.0/vendor/itertools/src/format.rs --- temporalio-1.3.0/vendor/itertools/src/format.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/src/format.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ +use std::cell::Cell; use std::fmt; -use std::cell::RefCell; /// Format all iterator elements lazily, separated by `sep`. /// @@ -7,11 +7,10 @@ /// exhausted. /// /// See [`.format_with()`](crate::Itertools::format_with) for more information. -#[derive(Clone)] pub struct FormatWith<'a, I, F> { sep: &'a str, /// FormatWith uses interior mutability because Display::fmt takes &self. - inner: RefCell>, + inner: Cell>, } /// Format all iterator elements lazily, separated by `sep`. @@ -21,38 +20,40 @@ /// /// See [`.format()`](crate::Itertools::format) /// for more information. -#[derive(Clone)] pub struct Format<'a, I> { sep: &'a str, /// Format uses interior mutability because Display::fmt takes &self. - inner: RefCell>, + inner: Cell>, } pub fn new_format(iter: I, separator: &str, f: F) -> FormatWith<'_, I, F> - where I: Iterator, - F: FnMut(I::Item, &mut dyn FnMut(&dyn fmt::Display) -> fmt::Result) -> fmt::Result +where + I: Iterator, + F: FnMut(I::Item, &mut dyn FnMut(&dyn fmt::Display) -> fmt::Result) -> fmt::Result, { FormatWith { sep: separator, - inner: RefCell::new(Some((iter, f))), + inner: Cell::new(Some((iter, f))), } } pub fn new_format_default(iter: I, separator: &str) -> Format<'_, I> - where I: Iterator, +where + I: Iterator, { Format { sep: separator, - inner: RefCell::new(Some(iter)), + inner: Cell::new(Some(iter)), } } impl<'a, I, F> fmt::Display for FormatWith<'a, I, F> - where I: Iterator, - F: FnMut(I::Item, &mut dyn FnMut(&dyn fmt::Display) -> fmt::Result) -> fmt::Result +where + I: Iterator, + F: FnMut(I::Item, &mut dyn FnMut(&dyn fmt::Display) -> fmt::Result) -> fmt::Result, { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let (mut iter, mut format) = match self.inner.borrow_mut().take() { + let (mut iter, mut format) = match self.inner.take() { Some(t) => t, None => panic!("FormatWith: was already formatted once"), }; @@ -71,12 +72,15 @@ } impl<'a, I> Format<'a, I> - where I: Iterator, +where + I: Iterator, { - fn format(&self, f: &mut fmt::Formatter, mut cb: F) -> fmt::Result - where F: FnMut(&I::Item, &mut fmt::Formatter) -> fmt::Result, - { - let mut iter = match self.inner.borrow_mut().take() { + fn format( + &self, + f: &mut fmt::Formatter, + cb: fn(&I::Item, &mut fmt::Formatter) -> fmt::Result, + ) -> fmt::Result { + let mut iter = match self.inner.take() { Some(t) => t, None => panic!("Format: was already formatted once"), }; @@ -109,5 +113,56 @@ } } -impl_format!{Display Debug - UpperExp LowerExp UpperHex LowerHex Octal Binary Pointer} +impl_format! {Display Debug UpperExp LowerExp UpperHex LowerHex Octal Binary Pointer} + +impl<'a, I, F> Clone for FormatWith<'a, I, F> +where + (I, F): Clone, +{ + fn clone(&self) -> Self { + struct PutBackOnDrop<'r, 'a, I, F> { + into: &'r FormatWith<'a, I, F>, + inner: Option<(I, F)>, + } + // This ensures we preserve the state of the original `FormatWith` if `Clone` panics + impl<'r, 'a, I, F> Drop for PutBackOnDrop<'r, 'a, I, F> { + fn drop(&mut self) { + self.into.inner.set(self.inner.take()) + } + } + let pbod = PutBackOnDrop { + inner: self.inner.take(), + into: self, + }; + Self { + inner: Cell::new(pbod.inner.clone()), + sep: self.sep, + } + } +} + +impl<'a, I> Clone for Format<'a, I> +where + I: Clone, +{ + fn clone(&self) -> Self { + struct PutBackOnDrop<'r, 'a, I> { + into: &'r Format<'a, I>, + inner: Option, + } + // This ensures we preserve the state of the original `FormatWith` if `Clone` panics + impl<'r, 'a, I> Drop for PutBackOnDrop<'r, 'a, I> { + fn drop(&mut self) { + self.into.inner.set(self.inner.take()) + } + } + let pbod = PutBackOnDrop { + inner: self.inner.take(), + into: self, + }; + Self { + inner: Cell::new(pbod.inner.clone()), + sep: self.sep, + } + } +} diff -Nru temporalio-1.3.0/vendor/itertools/src/groupbylazy.rs temporalio-1.3.0/vendor/itertools/src/groupbylazy.rs --- temporalio-1.3.0/vendor/itertools/src/groupbylazy.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/src/groupbylazy.rs 2023-10-30 19:40:00.000000000 +0000 @@ -19,7 +19,7 @@ /// `ChunkIndex` acts like the grouping key function for `IntoChunks` -#[derive(Debug)] +#[derive(Debug, Clone)] struct ChunkIndex { size: usize, index: usize, @@ -50,7 +50,7 @@ } } - +#[derive(Clone)] struct GroupInner where I: Iterator { @@ -471,6 +471,13 @@ index: Cell, } +impl Clone for IntoChunks + where I: Clone + Iterator, + I::Item: Clone, +{ + clone_fields!(inner, index); +} + impl IntoChunks where I: Iterator, @@ -507,6 +514,7 @@ /// /// See [`.chunks()`](crate::Itertools::chunks) for more information. #[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +#[derive(Clone)] pub struct Chunks<'a, I: 'a> where I: Iterator, I::Item: 'a, diff -Nru temporalio-1.3.0/vendor/itertools/src/lib.rs temporalio-1.3.0/vendor/itertools/src/lib.rs --- temporalio-1.3.0/vendor/itertools/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -146,6 +146,7 @@ pub use crate::repeatn::RepeatN; #[allow(deprecated)] pub use crate::sources::{RepeatCall, Unfold, Iterate}; + pub use crate::take_while_inclusive::TakeWhileInclusive; #[cfg(feature = "use_alloc")] pub use crate::tee::Tee; pub use crate::tuple_impl::{TupleBuffer, TupleWindows, CircularTupleWindows, Tuples}; @@ -233,6 +234,7 @@ mod repeatn; mod size_hint; mod sources; +mod take_while_inclusive; #[cfg(feature = "use_alloc")] mod tee; mod tuple_impl; @@ -904,7 +906,7 @@ /// Return an iterator adaptor that flattens every `Result::Ok` value into /// a series of `Result::Ok` values. `Result::Err` values are unchanged. - /// + /// /// This is useful when you have some common error type for your crate and /// need to propagate it upwards, but the `Result::Ok` case needs to be flattened. /// @@ -914,7 +916,7 @@ /// let input = vec![Ok(0..2), Err(false), Ok(2..4)]; /// let it = input.iter().cloned().flatten_ok(); /// itertools::assert_equal(it.clone(), vec![Ok(0), Ok(1), Err(false), Ok(2), Ok(3)]); - /// + /// /// // This can also be used to propagate errors when collecting. /// let output_result: Result, bool> = it.collect(); /// assert_eq!(output_result, Err(false)); @@ -926,6 +928,43 @@ flatten_ok::flatten_ok(self) } + /// “Lift†a function of the values of the current iterator so as to process + /// an iterator of `Result` values instead. + /// + /// `processor` is a closure that receives an adapted version of the iterator + /// as the only argument — the adapted iterator produces elements of type `T`, + /// as long as the original iterator produces `Ok` values. + /// + /// If the original iterable produces an error at any point, the adapted + /// iterator ends and it will return the error iself. + /// + /// Otherwise, the return value from the closure is returned wrapped + /// inside `Ok`. + /// + /// # Example + /// + /// ``` + /// use itertools::Itertools; + /// + /// type Item = Result; + /// + /// let first_values: Vec = vec![Ok(1), Ok(0), Ok(3)]; + /// let second_values: Vec = vec![Ok(2), Ok(1), Err("overflow")]; + /// + /// // “Lift†the iterator .max() method to work on the Ok-values. + /// let first_max = first_values.into_iter().process_results(|iter| iter.max().unwrap_or(0)); + /// let second_max = second_values.into_iter().process_results(|iter| iter.max().unwrap_or(0)); + /// + /// assert_eq!(first_max, Ok(3)); + /// assert!(second_max.is_err()); + /// ``` + fn process_results(self, processor: F) -> Result + where Self: Iterator> + Sized, + F: FnOnce(ProcessResults) -> R + { + process_results(self, processor) + } + /// Return an iterator adaptor that merges the two base iterators in /// ascending order. If both base iterators are sorted (ascending), the /// result is sorted. @@ -935,8 +974,8 @@ /// ``` /// use itertools::Itertools; /// - /// let a = (0..11).step(3); - /// let b = (0..11).step(5); + /// let a = (0..11).step_by(3); + /// let b = (0..11).step_by(5); /// let it = a.merge(b); /// itertools::assert_equal(it, vec![0, 0, 3, 5, 6, 9, 10]); /// ``` @@ -975,7 +1014,10 @@ /// Create an iterator that merges items from both this and the specified /// iterator in ascending order. /// - /// It chooses whether to pair elements based on the `Ordering` returned by the + /// The function can either return an `Ordering` variant or a boolean. + /// + /// If `cmp_fn` returns `Ordering`, + /// it chooses whether to pair elements based on the `Ordering` returned by the /// specified compare function. At any point, inspecting the tip of the /// iterators `I` and `J` as items `i` of type `I::Item` and `j` of type /// `J::Item` respectively, the resulting iterator will: @@ -991,18 +1033,46 @@ /// use itertools::Itertools; /// use itertools::EitherOrBoth::{Left, Right, Both}; /// - /// let multiples_of_2 = (0..10).step(2); - /// let multiples_of_3 = (0..10).step(3); + /// let a = vec![0, 2, 4, 6, 1].into_iter(); + /// let b = (0..10).step_by(3); + /// + /// itertools::assert_equal( + /// a.merge_join_by(b, |i, j| i.cmp(j)), + /// vec![Both(0, 0), Left(2), Right(3), Left(4), Both(6, 6), Left(1), Right(9)] + /// ); + /// ``` + /// + /// If `cmp_fn` returns `bool`, + /// it chooses whether to pair elements based on the boolean returned by the + /// specified function. At any point, inspecting the tip of the + /// iterators `I` and `J` as items `i` of type `I::Item` and `j` of type + /// `J::Item` respectively, the resulting iterator will: + /// + /// - Emit `Either::Left(i)` when `true`, + /// and remove `i` from its source iterator + /// - Emit `Either::Right(j)` when `false`, + /// and remove `j` from its source iterator + /// + /// It is similar to the `Ordering` case if the first argument is considered + /// "less" than the second argument. + /// + /// ``` + /// use itertools::Itertools; + /// use itertools::Either::{Left, Right}; + /// + /// let a = vec![0, 2, 4, 6, 1].into_iter(); + /// let b = (0..10).step_by(3); /// /// itertools::assert_equal( - /// multiples_of_2.merge_join_by(multiples_of_3, |i, j| i.cmp(j)), - /// vec![Both(0, 0), Left(2), Right(3), Left(4), Both(6, 6), Left(8), Right(9)] + /// a.merge_join_by(b, |i, j| i <= j), + /// vec![Left(0), Right(0), Left(2), Right(3), Left(4), Left(6), Left(1), Right(6), Right(9)] /// ); /// ``` #[inline] - fn merge_join_by(self, other: J, cmp_fn: F) -> MergeJoinBy + fn merge_join_by(self, other: J, cmp_fn: F) -> MergeJoinBy where J: IntoIterator, - F: FnMut(&Self::Item, &J::Item) -> std::cmp::Ordering, + F: FnMut(&Self::Item, &J::Item) -> T, + T: merge_join::OrderingOrBool, Self: Sized { merge_join_by(self, other, cmp_fn) @@ -1018,9 +1088,9 @@ /// ``` /// use itertools::Itertools; /// - /// let a = (0..6).step(3); - /// let b = (1..6).step(3); - /// let c = (2..6).step(3); + /// let a = (0..6).step_by(3); + /// let b = (1..6).step_by(3); + /// let c = (2..6).step_by(3); /// let it = vec![a, b, c].into_iter().kmerge(); /// itertools::assert_equal(it, vec![0, 1, 2, 3, 4, 5]); /// ``` @@ -1389,6 +1459,74 @@ adaptors::take_while_ref(self, accept) } + /// Returns an iterator adaptor that consumes elements while the given + /// predicate is `true`, *including* the element for which the predicate + /// first returned `false`. + /// + /// The [`.take_while()`][std::iter::Iterator::take_while] adaptor is useful + /// when you want items satisfying a predicate, but to know when to stop + /// taking elements, we have to consume that first element that doesn't + /// satisfy the predicate. This adaptor includes that element where + /// [`.take_while()`][std::iter::Iterator::take_while] would drop it. + /// + /// The [`.take_while_ref()`][crate::Itertools::take_while_ref] adaptor + /// serves a similar purpose, but this adaptor doesn't require [`Clone`]ing + /// the underlying elements. + /// + /// ```rust + /// # use itertools::Itertools; + /// let items = vec![1, 2, 3, 4, 5]; + /// let filtered: Vec<_> = items + /// .into_iter() + /// .take_while_inclusive(|&n| n % 3 != 0) + /// .collect(); + /// + /// assert_eq!(filtered, vec![1, 2, 3]); + /// ``` + /// + /// ```rust + /// # use itertools::Itertools; + /// let items = vec![1, 2, 3, 4, 5]; + /// + /// let take_while_inclusive_result: Vec<_> = items + /// .iter() + /// .copied() + /// .take_while_inclusive(|&n| n % 3 != 0) + /// .collect(); + /// let take_while_result: Vec<_> = items + /// .into_iter() + /// .take_while(|&n| n % 3 != 0) + /// .collect(); + /// + /// assert_eq!(take_while_inclusive_result, vec![1, 2, 3]); + /// assert_eq!(take_while_result, vec![1, 2]); + /// // both iterators have the same items remaining at this point---the 3 + /// // is lost from the `take_while` vec + /// ``` + /// + /// ```rust + /// # use itertools::Itertools; + /// #[derive(Debug, PartialEq)] + /// struct NoCloneImpl(i32); + /// + /// let non_clonable_items: Vec<_> = vec![1, 2, 3, 4, 5] + /// .into_iter() + /// .map(NoCloneImpl) + /// .collect(); + /// let filtered: Vec<_> = non_clonable_items + /// .into_iter() + /// .take_while_inclusive(|n| n.0 % 3 != 0) + /// .collect(); + /// let expected: Vec<_> = vec![1, 2, 3].into_iter().map(NoCloneImpl).collect(); + /// assert_eq!(filtered, expected); + fn take_while_inclusive(&mut self, accept: F) -> TakeWhileInclusive + where + Self: Sized, + F: FnMut(&Self::Item) -> bool, + { + take_while_inclusive::TakeWhileInclusive::new(self, accept) + } + /// Return an iterator adaptor that filters `Option` iterator elements /// and produces `A`. Stops on the first `None` encountered. /// @@ -1620,24 +1758,24 @@ pad_tail::pad_using(self, min, f) } - /// Return an iterator adaptor that wraps each element in a `Position` to + /// Return an iterator adaptor that combines each element with a `Position` to /// ease special-case handling of the first or last elements. /// /// Iterator element type is - /// [`Position`](Position) + /// [`(Position, Self::Item)`](Position) /// /// ``` /// use itertools::{Itertools, Position}; /// /// let it = (0..4).with_position(); /// itertools::assert_equal(it, - /// vec![Position::First(0), - /// Position::Middle(1), - /// Position::Middle(2), - /// Position::Last(3)]); + /// vec![(Position::First, 0), + /// (Position::Middle, 1), + /// (Position::Middle, 2), + /// (Position::Last, 3)]); /// /// let it = (0..1).with_position(); - /// itertools::assert_equal(it, vec![Position::Only(0)]); + /// itertools::assert_equal(it, vec![(Position::Only, 0)]); /// ``` fn with_position(self) -> WithPosition where Self: Sized, @@ -1810,14 +1948,14 @@ /// /// #[derive(PartialEq, Debug)] /// enum Enum { A, B, C, D, E, } - /// + /// /// let mut iter = vec![Enum::A, Enum::B, Enum::C, Enum::D].into_iter(); - /// + /// /// // search `iter` for `B` /// assert_eq!(iter.contains(&Enum::B), true); /// // `B` was found, so the iterator now rests at the item after `B` (i.e, `C`). /// assert_eq!(iter.next(), Some(Enum::C)); - /// + /// /// // search `iter` for `E` /// assert_eq!(iter.contains(&Enum::E), false); /// // `E` wasn't found, so `iter` is now exhausted @@ -1858,6 +1996,37 @@ } } + /// If there are elements and they are all equal, return a single copy of that element. + /// If there are no elements, return an Error containing None. + /// If there are elements and they are not all equal, return a tuple containing the first + /// two non-equal elements found. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let data = vec![1, 1, 1, 2, 2, 3, 3, 3, 4, 5, 5]; + /// assert_eq!(data.iter().all_equal_value(), Err(Some((&1, &2)))); + /// assert_eq!(data[0..3].iter().all_equal_value(), Ok(&1)); + /// assert_eq!(data[3..5].iter().all_equal_value(), Ok(&2)); + /// assert_eq!(data[5..8].iter().all_equal_value(), Ok(&3)); + /// + /// let data : Option = None; + /// assert_eq!(data.into_iter().all_equal_value(), Err(None)); + /// ``` + fn all_equal_value(&mut self) -> Result> + where + Self: Sized, + Self::Item: PartialEq + { + let first = self.next().ok_or(None)?; + let other = self.find(|x| x != &first); + if let Some(other) = other { + Err(Some((first, other))) + } else { + Ok(first) + } + } + /// Check whether all elements are unique (non equal). /// /// Empty iterators are considered to have unique elements: @@ -2481,6 +2650,8 @@ /// **Note:** This consumes the entire iterator, uses the /// [`slice::sort_unstable`] method and returns the result as a new /// iterator that owns its elements. + /// + /// This sort is unstable (i.e., may reorder equal elements). /// /// The sorted iterator, if directly collected to a `Vec`, is converted /// without any extra copying or allocation cost. @@ -2510,6 +2681,8 @@ /// **Note:** This consumes the entire iterator, uses the /// [`slice::sort_unstable_by`] method and returns the result as a new /// iterator that owns its elements. + /// + /// This sort is unstable (i.e., may reorder equal elements). /// /// The sorted iterator, if directly collected to a `Vec`, is converted /// without any extra copying or allocation cost. @@ -2543,6 +2716,8 @@ /// **Note:** This consumes the entire iterator, uses the /// [`slice::sort_unstable_by_key`] method and returns the result as a new /// iterator that owns its elements. + /// + /// This sort is unstable (i.e., may reorder equal elements). /// /// The sorted iterator, if directly collected to a `Vec`, is converted /// without any extra copying or allocation cost. @@ -2577,6 +2752,8 @@ /// **Note:** This consumes the entire iterator, uses the /// [`slice::sort`] method and returns the result as a new /// iterator that owns its elements. + /// + /// This sort is stable (i.e., does not reorder equal elements). /// /// The sorted iterator, if directly collected to a `Vec`, is converted /// without any extra copying or allocation cost. @@ -2606,6 +2783,8 @@ /// **Note:** This consumes the entire iterator, uses the /// [`slice::sort_by`] method and returns the result as a new /// iterator that owns its elements. + /// + /// This sort is stable (i.e., does not reorder equal elements). /// /// The sorted iterator, if directly collected to a `Vec`, is converted /// without any extra copying or allocation cost. @@ -2614,7 +2793,7 @@ /// use itertools::Itertools; /// /// // sort people in descending order by age - /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 27)]; + /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 30)]; /// /// let oldest_people_first = people /// .into_iter() @@ -2639,6 +2818,8 @@ /// **Note:** This consumes the entire iterator, uses the /// [`slice::sort_by_key`] method and returns the result as a new /// iterator that owns its elements. + /// + /// This sort is stable (i.e., does not reorder equal elements). /// /// The sorted iterator, if directly collected to a `Vec`, is converted /// without any extra copying or allocation cost. @@ -2647,7 +2828,7 @@ /// use itertools::Itertools; /// /// // sort people in descending order by age - /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 27)]; + /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 30)]; /// /// let oldest_people_first = people /// .into_iter() @@ -2674,6 +2855,8 @@ /// **Note:** This consumes the entire iterator, uses the /// [`slice::sort_by_cached_key`] method and returns the result as a new /// iterator that owns its elements. + /// + /// This sort is stable (i.e., does not reorder equal elements). /// /// The sorted iterator, if directly collected to a `Vec`, is converted /// without any extra copying or allocation cost. @@ -2682,7 +2865,7 @@ /// use itertools::Itertools; /// /// // sort people in descending order by age - /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 27)]; + /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 30)]; /// /// let oldest_people_first = people /// .into_iter() @@ -2867,13 +3050,13 @@ group_map::into_group_map_by(self, f) } - /// Constructs a `GroupingMap` to be used later with one of the efficient + /// Constructs a `GroupingMap` to be used later with one of the efficient /// group-and-fold operations it allows to perform. - /// + /// /// The input iterator must yield item in the form of `(K, V)` where the /// value of type `K` will be used as key to identify the groups and the /// value of type `V` as value for the folding operation. - /// + /// /// See [`GroupingMap`] for more informations /// on what operations are available. #[cfg(feature = "use_std")] @@ -2884,12 +3067,12 @@ grouping_map::new(self) } - /// Constructs a `GroupingMap` to be used later with one of the efficient + /// Constructs a `GroupingMap` to be used later with one of the efficient /// group-and-fold operations it allows to perform. - /// + /// /// The values from this iterator will be used as values for the folding operation /// while the keys will be obtained from the values by calling `key_mapper`. - /// + /// /// See [`GroupingMap`] for more informations /// on what operations are available. #[cfg(feature = "use_std")] @@ -3059,7 +3242,7 @@ ) } - /// Return all minimum elements of an iterator, as determined by + /// Return all maximum elements of an iterator, as determined by /// the specified function. /// /// # Examples @@ -3600,7 +3783,7 @@ /// first_name: &'static str, /// last_name: &'static str, /// } - /// + /// /// let characters = /// vec![ /// Character { first_name: "Amy", last_name: "Pond" }, @@ -3611,12 +3794,12 @@ /// Character { first_name: "James", last_name: "Norington" }, /// Character { first_name: "James", last_name: "Kirk" }, /// ]; - /// - /// let first_name_frequency = + /// + /// let first_name_frequency = /// characters /// .into_iter() /// .counts_by(|c| c.first_name); - /// + /// /// assert_eq!(first_name_frequency["Amy"], 3); /// assert_eq!(first_name_frequency["James"], 4); /// assert_eq!(first_name_frequency.contains_key("Asha"), false); @@ -3637,7 +3820,7 @@ /// column. /// /// This function is, in some sense, the opposite of [`multizip`]. - /// + /// /// ``` /// use itertools::Itertools; /// diff -Nru temporalio-1.3.0/vendor/itertools/src/merge_join.rs temporalio-1.3.0/vendor/itertools/src/merge_join.rs --- temporalio-1.3.0/vendor/itertools/src/merge_join.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/src/merge_join.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,19 +2,23 @@ use std::iter::Fuse; use std::fmt; +use either::Either; + use super::adaptors::{PutBack, put_back}; use crate::either_or_both::EitherOrBoth; +use crate::size_hint::{self, SizeHint}; #[cfg(doc)] use crate::Itertools; /// Return an iterator adaptor that merge-joins items from the two base iterators in ascending order. /// /// [`IntoIterator`] enabled version of [`Itertools::merge_join_by`]. -pub fn merge_join_by(left: I, right: J, cmp_fn: F) +pub fn merge_join_by(left: I, right: J, cmp_fn: F) -> MergeJoinBy where I: IntoIterator, J: IntoIterator, - F: FnMut(&I::Item, &J::Item) -> Ordering + F: FnMut(&I::Item, &J::Item) -> T, + T: OrderingOrBool, { MergeJoinBy { left: put_back(left.into_iter().fuse()), @@ -30,7 +34,66 @@ pub struct MergeJoinBy { left: PutBack>, right: PutBack>, - cmp_fn: F + cmp_fn: F, +} + +pub trait OrderingOrBool { + type MergeResult; + fn left(left: L) -> Self::MergeResult; + fn right(right: R) -> Self::MergeResult; + // "merge" never returns (Some(...), Some(...), ...) so Option> + // is appealing but it is always followed by two put_backs, so we think the compiler is + // smart enough to optimize it. Or we could move put_backs into "merge". + fn merge(self, left: L, right: R) -> (Option, Option, Self::MergeResult); + fn size_hint(left: SizeHint, right: SizeHint) -> SizeHint; +} + +impl OrderingOrBool for Ordering { + type MergeResult = EitherOrBoth; + fn left(left: L) -> Self::MergeResult { + EitherOrBoth::Left(left) + } + fn right(right: R) -> Self::MergeResult { + EitherOrBoth::Right(right) + } + fn merge(self, left: L, right: R) -> (Option, Option, Self::MergeResult) { + match self { + Ordering::Equal => (None, None, EitherOrBoth::Both(left, right)), + Ordering::Less => (None, Some(right), EitherOrBoth::Left(left)), + Ordering::Greater => (Some(left), None, EitherOrBoth::Right(right)), + } + } + fn size_hint(left: SizeHint, right: SizeHint) -> SizeHint { + let (a_lower, a_upper) = left; + let (b_lower, b_upper) = right; + let lower = ::std::cmp::max(a_lower, b_lower); + let upper = match (a_upper, b_upper) { + (Some(x), Some(y)) => x.checked_add(y), + _ => None, + }; + (lower, upper) + } +} + +impl OrderingOrBool for bool { + type MergeResult = Either; + fn left(left: L) -> Self::MergeResult { + Either::Left(left) + } + fn right(right: R) -> Self::MergeResult { + Either::Right(right) + } + fn merge(self, left: L, right: R) -> (Option, Option, Self::MergeResult) { + if self { + (None, Some(right), Either::Left(left)) + } else { + (Some(left), None, Either::Right(right)) + } + } + fn size_hint(left: SizeHint, right: SizeHint) -> SizeHint { + // Not ExactSizeIterator because size may be larger than usize + size_hint::add(left, right) + } } impl Clone for MergeJoinBy @@ -52,49 +115,34 @@ debug_fmt_fields!(MergeJoinBy, left, right); } -impl Iterator for MergeJoinBy +impl Iterator for MergeJoinBy where I: Iterator, J: Iterator, - F: FnMut(&I::Item, &J::Item) -> Ordering + F: FnMut(&I::Item, &J::Item) -> T, + T: OrderingOrBool, { - type Item = EitherOrBoth; + type Item = T::MergeResult; fn next(&mut self) -> Option { match (self.left.next(), self.right.next()) { (None, None) => None, - (Some(left), None) => - Some(EitherOrBoth::Left(left)), - (None, Some(right)) => - Some(EitherOrBoth::Right(right)), + (Some(left), None) => Some(T::left(left)), + (None, Some(right)) => Some(T::right(right)), (Some(left), Some(right)) => { - match (self.cmp_fn)(&left, &right) { - Ordering::Equal => - Some(EitherOrBoth::Both(left, right)), - Ordering::Less => { - self.right.put_back(right); - Some(EitherOrBoth::Left(left)) - }, - Ordering::Greater => { - self.left.put_back(left); - Some(EitherOrBoth::Right(right)) - } + let (left, right, next) = (self.cmp_fn)(&left, &right).merge(left, right); + if let Some(left) = left { + self.left.put_back(left); } + if let Some(right) = right { + self.right.put_back(right); + } + Some(next) } } } - fn size_hint(&self) -> (usize, Option) { - let (a_lower, a_upper) = self.left.size_hint(); - let (b_lower, b_upper) = self.right.size_hint(); - - let lower = ::std::cmp::max(a_lower, b_lower); - - let upper = match (a_upper, b_upper) { - (Some(x), Some(y)) => x.checked_add(y), - _ => None, - }; - - (lower, upper) + fn size_hint(&self) -> SizeHint { + T::size_hint(self.left.size_hint(), self.right.size_hint()) } fn count(mut self) -> usize { @@ -106,10 +154,12 @@ (None, Some(_right)) => break count + 1 + self.right.into_parts().1.count(), (Some(left), Some(right)) => { count += 1; - match (self.cmp_fn)(&left, &right) { - Ordering::Equal => {} - Ordering::Less => self.right.put_back(right), - Ordering::Greater => self.left.put_back(left), + let (left, right, _) = (self.cmp_fn)(&left, &right).merge(left, right); + if let Some(left) = left { + self.left.put_back(left); + } + if let Some(right) = right { + self.right.put_back(right); } } } @@ -122,27 +172,24 @@ match (self.left.next(), self.right.next()) { (None, None) => break previous_element, (Some(left), None) => { - break Some(EitherOrBoth::Left( + break Some(T::left( self.left.into_parts().1.last().unwrap_or(left), )) } (None, Some(right)) => { - break Some(EitherOrBoth::Right( + break Some(T::right( self.right.into_parts().1.last().unwrap_or(right), )) } (Some(left), Some(right)) => { - previous_element = match (self.cmp_fn)(&left, &right) { - Ordering::Equal => Some(EitherOrBoth::Both(left, right)), - Ordering::Less => { - self.right.put_back(right); - Some(EitherOrBoth::Left(left)) - } - Ordering::Greater => { - self.left.put_back(left); - Some(EitherOrBoth::Right(right)) - } + let (left, right, elem) = (self.cmp_fn)(&left, &right).merge(left, right); + if let Some(left) = left { + self.left.put_back(left); } + if let Some(right) = right { + self.right.put_back(right); + } + previous_element = Some(elem); } } } @@ -156,13 +203,17 @@ n -= 1; match (self.left.next(), self.right.next()) { (None, None) => break None, - (Some(_left), None) => break self.left.nth(n).map(EitherOrBoth::Left), - (None, Some(_right)) => break self.right.nth(n).map(EitherOrBoth::Right), - (Some(left), Some(right)) => match (self.cmp_fn)(&left, &right) { - Ordering::Equal => {} - Ordering::Less => self.right.put_back(right), - Ordering::Greater => self.left.put_back(left), - }, + (Some(_left), None) => break self.left.nth(n).map(T::left), + (None, Some(_right)) => break self.right.nth(n).map(T::right), + (Some(left), Some(right)) => { + let (left, right, _) = (self.cmp_fn)(&left, &right).merge(left, right); + if let Some(left) = left { + self.left.put_back(left); + } + if let Some(right) = right { + self.right.put_back(right); + } + } } } } diff -Nru temporalio-1.3.0/vendor/itertools/src/peeking_take_while.rs temporalio-1.3.0/vendor/itertools/src/peeking_take_while.rs --- temporalio-1.3.0/vendor/itertools/src/peeking_take_while.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/src/peeking_take_while.rs 2023-10-30 19:40:00.000000000 +0000 @@ -16,7 +16,18 @@ /// if `accept` returns true, return it as the next element, /// else None. fn peeking_next(&mut self, accept: F) -> Option - where F: FnOnce(&Self::Item) -> bool; + where Self: Sized, + F: FnOnce(&Self::Item) -> bool; +} + +impl<'a, I> PeekingNext for &'a mut I + where I: PeekingNext, +{ + fn peeking_next(&mut self, accept: F) -> Option + where F: FnOnce(&Self::Item) -> bool + { + (*self).peeking_next(accept) + } } impl PeekingNext for Peekable @@ -115,6 +126,18 @@ } } +impl<'a, I, F> PeekingNext for PeekingTakeWhile<'a, I, F> + where I: PeekingNext, + F: FnMut(&I::Item) -> bool, +{ + fn peeking_next(&mut self, g: G) -> Option + where G: FnOnce(&Self::Item) -> bool, + { + let f = &mut self.f; + self.iter.peeking_next(|r| f(r) && g(r)) + } +} + // Some iterators are so lightweight we can simply clone them to save their // state and use that for peeking. macro_rules! peeking_next_by_clone { diff -Nru temporalio-1.3.0/vendor/itertools/src/process_results_impl.rs temporalio-1.3.0/vendor/itertools/src/process_results_impl.rs --- temporalio-1.3.0/vendor/itertools/src/process_results_impl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/src/process_results_impl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,5 @@ +#[cfg(doc)] +use crate::Itertools; /// An iterator that produces only the `T` values as long as the /// inner iterator produces `Ok(T)`. @@ -52,38 +54,7 @@ /// “Lift†a function of the values of an iterator so that it can process /// an iterator of `Result` values instead. /// -/// `iterable` is an iterator or iterable with `Result` elements, where -/// `T` is the value type and `E` the error type. -/// -/// `processor` is a closure that receives an adapted version of the iterable -/// as the only argument — the adapted iterator produces elements of type `T`, -/// as long as the original iterator produces `Ok` values. -/// -/// If the original iterable produces an error at any point, the adapted -/// iterator ends and the `process_results` function will return the -/// error iself. -/// -/// Otherwise, the return value from the closure is returned wrapped -/// inside `Ok`. -/// -/// # Example -/// -/// ``` -/// use itertools::process_results; -/// -/// type R = Result; -/// -/// let first_values: Vec = vec![Ok(1), Ok(0), Ok(3)]; -/// let second_values: Vec = vec![Ok(2), Ok(1), Err("overflow")]; -/// -/// // “Lift†the iterator .max() method to work on the values in Results using process_results -/// -/// let first_max = process_results(first_values, |iter| iter.max().unwrap_or(0)); -/// let second_max = process_results(second_values, |iter| iter.max().unwrap_or(0)); -/// -/// assert_eq!(first_max, Ok(3)); -/// assert!(second_max.is_err()); -/// ``` +/// [`IntoIterator`] enabled version of [`Itertools::process_results`]. pub fn process_results(iterable: I, processor: F) -> Result where I: IntoIterator>, F: FnOnce(ProcessResults) -> R diff -Nru temporalio-1.3.0/vendor/itertools/src/take_while_inclusive.rs temporalio-1.3.0/vendor/itertools/src/take_while_inclusive.rs --- temporalio-1.3.0/vendor/itertools/src/take_while_inclusive.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/src/take_while_inclusive.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,68 @@ +use core::iter::FusedIterator; +use std::fmt; + +/// An iterator adaptor that consumes elements while the given predicate is +/// `true`, including the element for which the predicate first returned +/// `false`. +/// +/// See [`.take_while_inclusive()`](crate::Itertools::take_while_inclusive) +/// for more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct TakeWhileInclusive<'a, I: 'a, F> { + iter: &'a mut I, + predicate: F, + done: bool, +} + +impl<'a, I, F> TakeWhileInclusive<'a, I, F> +where + I: Iterator, + F: FnMut(&I::Item) -> bool, +{ + /// Create a new [`TakeWhileInclusive`] from an iterator and a predicate. + pub fn new(iter: &'a mut I, predicate: F) -> Self { + Self { iter, predicate, done: false} + } +} + +impl<'a, I, F> fmt::Debug for TakeWhileInclusive<'a, I, F> + where I: Iterator + fmt::Debug, +{ + debug_fmt_fields!(TakeWhileInclusive, iter); +} + +impl<'a, I, F> Iterator for TakeWhileInclusive<'a, I, F> +where + I: Iterator, + F: FnMut(&I::Item) -> bool +{ + type Item = I::Item; + + fn next(&mut self) -> Option { + if self.done { + None + } else { + self.iter.next().map(|item| { + if !(self.predicate)(&item) { + self.done = true; + } + item + }) + } + } + + fn size_hint(&self) -> (usize, Option) { + if self.done { + (0, Some(0)) + } else { + (0, self.iter.size_hint().1) + } + } +} + +impl FusedIterator for TakeWhileInclusive<'_, I, F> +where + I: Iterator, + F: FnMut(&I::Item) -> bool +{ +} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/itertools/src/tuple_impl.rs temporalio-1.3.0/vendor/itertools/src/tuple_impl.rs --- temporalio-1.3.0/vendor/itertools/src/tuple_impl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/src/tuple_impl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -194,14 +194,14 @@ T::Item: Clone {} -/// An iterator over all windows,wrapping back to the first elements when the +/// An iterator over all windows, wrapping back to the first elements when the /// window would otherwise exceed the length of the iterator, producing tuples /// of a specific size. /// /// See [`.circular_tuple_windows()`](crate::Itertools::circular_tuple_windows) for more /// information. #[must_use = "iterator adaptors are lazy and do nothing unless consumed"] -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct CircularTupleWindows where I: Iterator + Clone, T: TupleCollect + Clone diff -Nru temporalio-1.3.0/vendor/itertools/src/with_position.rs temporalio-1.3.0/vendor/itertools/src/with_position.rs --- temporalio-1.3.0/vendor/itertools/src/with_position.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/src/with_position.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,7 @@ /// An iterator adaptor that wraps each element in an [`Position`]. /// -/// Iterator element type is `Position`. +/// Iterator element type is `(Position, I::Item)`. /// /// See [`.with_position()`](crate::Itertools::with_position) for more information. #[must_use = "iterator adaptors are lazy and do nothing unless consumed"] @@ -30,36 +30,24 @@ } } -/// A value yielded by `WithPosition`. +/// The first component of the value yielded by `WithPosition`. /// Indicates the position of this element in the iterator results. /// /// See [`.with_position()`](crate::Itertools::with_position) for more information. #[derive(Copy, Clone, Debug, PartialEq)] -pub enum Position { +pub enum Position { /// This is the first element. - First(T), + First, /// This is neither the first nor the last element. - Middle(T), + Middle, /// This is the last element. - Last(T), + Last, /// This is the only element. - Only(T), -} - -impl Position { - /// Return the inner value. - pub fn into_inner(self) -> T { - match self { - Position::First(x) | - Position::Middle(x) | - Position::Last(x) | - Position::Only(x) => x, - } - } + Only, } impl Iterator for WithPosition { - type Item = Position; + type Item = (Position, I::Item); fn next(&mut self) -> Option { match self.peekable.next() { @@ -70,15 +58,15 @@ // Peek to see if this is also the last item, // in which case tag it as `Only`. match self.peekable.peek() { - Some(_) => Some(Position::First(item)), - None => Some(Position::Only(item)), + Some(_) => Some((Position::First, item)), + None => Some((Position::Only, item)), } } else { // Have seen the first item, and there's something left. // Peek to see if this is the last item. match self.peekable.peek() { - Some(_) => Some(Position::Middle(item)), - None => Some(Position::Last(item)), + Some(_) => Some((Position::Middle, item)), + None => Some((Position::Last, item)), } } } diff -Nru temporalio-1.3.0/vendor/itertools/tests/peeking_take_while.rs temporalio-1.3.0/vendor/itertools/tests/peeking_take_while.rs --- temporalio-1.3.0/vendor/itertools/tests/peeking_take_while.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/tests/peeking_take_while.rs 2023-10-30 19:40:00.000000000 +0000 @@ -48,3 +48,22 @@ r.peeking_take_while(|_| true).count(); assert_eq!(r.next(), None); } + +#[test] +fn peeking_take_while_nested() { + let mut xs = (0..10).peekable(); + let ys: Vec<_> = xs + .peeking_take_while(|x| *x < 6) + .peeking_take_while(|x| *x != 3) + .collect(); + assert_eq!(ys, vec![0, 1, 2]); + assert_eq!(xs.next(), Some(3)); + + let mut xs = (4..10).peekable(); + let ys: Vec<_> = xs + .peeking_take_while(|x| *x != 3) + .peeking_take_while(|x| *x < 6) + .collect(); + assert_eq!(ys, vec![4, 5]); + assert_eq!(xs.next(), Some(6)); +} diff -Nru temporalio-1.3.0/vendor/itertools/tests/quick.rs temporalio-1.3.0/vendor/itertools/tests/quick.rs --- temporalio-1.3.0/vendor/itertools/tests/quick.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/tests/quick.rs 2023-10-30 19:40:00.000000000 +0000 @@ -830,6 +830,31 @@ } quickcheck! { + fn merge_join_by_ordering_vs_bool(a: Vec, b: Vec) -> bool { + use either::Either; + use itertools::free::merge_join_by; + let mut has_equal = false; + let it_ord = merge_join_by(a.clone(), b.clone(), Ord::cmp).flat_map(|v| match v { + EitherOrBoth::Both(l, r) => { + has_equal = true; + vec![Either::Left(l), Either::Right(r)] + } + EitherOrBoth::Left(l) => vec![Either::Left(l)], + EitherOrBoth::Right(r) => vec![Either::Right(r)], + }); + let it_bool = merge_join_by(a, b, PartialOrd::le); + itertools::equal(it_ord, it_bool) || has_equal + } + fn merge_join_by_bool_unwrapped_is_merge_by(a: Vec, b: Vec) -> bool { + use either::Either; + use itertools::free::merge_join_by; + let it = a.clone().into_iter().merge_by(b.clone(), PartialOrd::ge); + let it_join = merge_join_by(a, b, PartialOrd::ge).map(Either::into_inner); + itertools::equal(it, it_join) + } +} + +quickcheck! { fn size_tee(a: Vec) -> bool { let (mut t1, mut t2) = a.iter().tee(); t1.next(); @@ -994,6 +1019,17 @@ } quickcheck! { + fn chunk_clone_equal(a: Vec, size: u8) -> () { + let mut size = size; + if size == 0 { + size += 1; + } + let it = a.chunks(size as usize); + itertools::assert_equal(it.clone(), it); + } +} + +quickcheck! { fn equal_chunks_lazy(a: Vec, size: u8) -> bool { let mut size = size; if size == 0 { @@ -1010,7 +1046,71 @@ } } +// tuple iterators quickcheck! { + fn equal_circular_tuple_windows_1(a: Vec) -> bool { + let x = a.iter().map(|e| (e,) ); + let y = a.iter().circular_tuple_windows::<(_,)>(); + itertools::assert_equal(x,y); + true + } + + fn equal_circular_tuple_windows_2(a: Vec) -> bool { + let x = (0..a.len()).map(|start_idx| ( + &a[start_idx], + &a[(start_idx + 1) % a.len()], + )); + let y = a.iter().circular_tuple_windows::<(_, _)>(); + itertools::assert_equal(x,y); + true + } + + fn equal_circular_tuple_windows_3(a: Vec) -> bool { + let x = (0..a.len()).map(|start_idx| ( + &a[start_idx], + &a[(start_idx + 1) % a.len()], + &a[(start_idx + 2) % a.len()], + )); + let y = a.iter().circular_tuple_windows::<(_, _, _)>(); + itertools::assert_equal(x,y); + true + } + + fn equal_circular_tuple_windows_4(a: Vec) -> bool { + let x = (0..a.len()).map(|start_idx| ( + &a[start_idx], + &a[(start_idx + 1) % a.len()], + &a[(start_idx + 2) % a.len()], + &a[(start_idx + 3) % a.len()], + )); + let y = a.iter().circular_tuple_windows::<(_, _, _, _)>(); + itertools::assert_equal(x,y); + true + } + + fn equal_cloned_circular_tuple_windows(a: Vec) -> bool { + let x = a.iter().circular_tuple_windows::<(_, _, _, _)>(); + let y = x.clone(); + itertools::assert_equal(x,y); + true + } + + fn equal_cloned_circular_tuple_windows_noninitial(a: Vec) -> bool { + let mut x = a.iter().circular_tuple_windows::<(_, _, _, _)>(); + let _ = x.next(); + let y = x.clone(); + itertools::assert_equal(x,y); + true + } + + fn equal_cloned_circular_tuple_windows_complete(a: Vec) -> bool { + let mut x = a.iter().circular_tuple_windows::<(_, _, _, _)>(); + for _ in x.by_ref() {} + let y = x.clone(); + itertools::assert_equal(x,y); + true + } + fn equal_tuple_windows_1(a: Vec) -> bool { let x = a.windows(1).map(|s| (&s[0], )); let y = a.iter().tuple_windows::<(_,)>(); diff -Nru temporalio-1.3.0/vendor/itertools/tests/test_std.rs temporalio-1.3.0/vendor/itertools/tests/test_std.rs --- temporalio-1.3.0/vendor/itertools/tests/test_std.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools/tests/test_std.rs 2023-10-30 19:40:00.000000000 +0000 @@ -221,6 +221,22 @@ } #[test] +fn all_equal_value() { + assert_eq!("".chars().all_equal_value(), Err(None)); + assert_eq!("A".chars().all_equal_value(), Ok('A')); + assert_eq!("AABBCCC".chars().all_equal_value(), Err(Some(('A', 'B')))); + assert_eq!("AAAAAAA".chars().all_equal_value(), Ok('A')); + { + let mut it = [1,2,3].iter().copied(); + let result = it.all_equal_value(); + assert_eq!(result, Err(Some((1, 2)))); + let remaining = it.next(); + assert_eq!(remaining, Some(3)); + assert!(it.next().is_none()); + } +} + +#[test] fn all_unique() { assert!("ABCDEFGH".chars().all_unique()); assert!(!"ABCDEFGA".chars().all_unique()); @@ -1160,9 +1176,9 @@ #[test] fn multiunzip() { - let (a, b, c): (Vec<_>, Vec<_>, Vec<_>) = [(0, 1, 2), (3, 4, 5), (6, 7, 8)].iter().cloned().multiunzip(); + let (a, b, c): (Vec<_>, Vec<_>, Vec<_>) = [(0, 1, 2), (3, 4, 5), (6, 7, 8)].iter().cloned().multiunzip(); assert_eq!((a, b, c), (vec![0, 3, 6], vec![1, 4, 7], vec![2, 5, 8])); let (): () = [(), (), ()].iter().cloned().multiunzip(); - let t: (Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>) = [(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)].iter().cloned().multiunzip(); + let t: (Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>) = [(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)].iter().cloned().multiunzip(); assert_eq!(t, (vec![0], vec![1], vec![2], vec![3], vec![4], vec![5], vec![6], vec![7], vec![8], vec![9], vec![10], vec![11])); } diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/benches/bench1.rs temporalio-1.3.0/vendor/itertools-0.10.5/benches/bench1.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/benches/bench1.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/benches/bench1.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,877 @@ +use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use itertools::Itertools; +use itertools::free::cloned; +use itertools::iproduct; + +use std::iter::repeat; +use std::cmp; +use std::ops::{Add, Range}; + +mod extra; + +use crate::extra::ZipSlices; + +fn slice_iter(c: &mut Criterion) { + let xs: Vec<_> = repeat(1i32).take(20).collect(); + + c.bench_function("slice iter", move |b| { + b.iter(|| for elt in xs.iter() { + black_box(elt); + }) + }); +} + +fn slice_iter_rev(c: &mut Criterion) { + let xs: Vec<_> = repeat(1i32).take(20).collect(); + + c.bench_function("slice iter rev", move |b| { + b.iter(|| for elt in xs.iter().rev() { + black_box(elt); + }) + }); +} + +fn zip_default_zip(c: &mut Criterion) { + let xs = vec![0; 1024]; + let ys = vec![0; 768]; + let xs = black_box(xs); + let ys = black_box(ys); + + c.bench_function("zip default zip", move |b| { + b.iter(|| { + for (&x, &y) in xs.iter().zip(&ys) { + black_box(x); + black_box(y); + } + }) + }); +} + +fn zipdot_i32_default_zip(c: &mut Criterion) { + let xs = vec![2; 1024]; + let ys = vec![2; 768]; + let xs = black_box(xs); + let ys = black_box(ys); + + c.bench_function("zipdot i32 default zip", move |b| { + b.iter(|| { + let mut s = 0; + for (&x, &y) in xs.iter().zip(&ys) { + s += x * y; + } + s + }) + }); +} + +fn zipdot_f32_default_zip(c: &mut Criterion) { + let xs = vec![2f32; 1024]; + let ys = vec![2f32; 768]; + let xs = black_box(xs); + let ys = black_box(ys); + + c.bench_function("zipdot f32 default zip", move |b| { + b.iter(|| { + let mut s = 0.; + for (&x, &y) in xs.iter().zip(&ys) { + s += x * y; + } + s + }) + }); +} + +fn zip_default_zip3(c: &mut Criterion) { + let xs = vec![0; 1024]; + let ys = vec![0; 768]; + let zs = vec![0; 766]; + let xs = black_box(xs); + let ys = black_box(ys); + let zs = black_box(zs); + + c.bench_function("zip default zip3", move |b| { + b.iter(|| { + for ((&x, &y), &z) in xs.iter().zip(&ys).zip(&zs) { + black_box(x); + black_box(y); + black_box(z); + } + }) + }); +} + +fn zip_slices_ziptuple(c: &mut Criterion) { + let xs = vec![0; 1024]; + let ys = vec![0; 768]; + + c.bench_function("zip slices ziptuple", move |b| { + b.iter(|| { + let xs = black_box(&xs); + let ys = black_box(&ys); + for (&x, &y) in itertools::multizip((xs, ys)) { + black_box(x); + black_box(y); + } + }) + }); +} + +fn zipslices(c: &mut Criterion) { + let xs = vec![0; 1024]; + let ys = vec![0; 768]; + let xs = black_box(xs); + let ys = black_box(ys); + + c.bench_function("zipslices", move |b| { + b.iter(|| { + for (&x, &y) in ZipSlices::new(&xs, &ys) { + black_box(x); + black_box(y); + } + }) + }); +} + +fn zipslices_mut(c: &mut Criterion) { + let xs = vec![0; 1024]; + let ys = vec![0; 768]; + let xs = black_box(xs); + let mut ys = black_box(ys); + + c.bench_function("zipslices mut", move |b| { + b.iter(|| { + for (&x, &mut y) in ZipSlices::from_slices(&xs[..], &mut ys[..]) { + black_box(x); + black_box(y); + } + }) + }); +} + +fn zipdot_i32_zipslices(c: &mut Criterion) { + let xs = vec![2; 1024]; + let ys = vec![2; 768]; + let xs = black_box(xs); + let ys = black_box(ys); + + c.bench_function("zipdot i32 zipslices", move |b| { + b.iter(|| { + let mut s = 0i32; + for (&x, &y) in ZipSlices::new(&xs, &ys) { + s += x * y; + } + s + }) + }); +} + +fn zipdot_f32_zipslices(c: &mut Criterion) { + let xs = vec![2f32; 1024]; + let ys = vec![2f32; 768]; + let xs = black_box(xs); + let ys = black_box(ys); + + c.bench_function("zipdot f32 zipslices", move |b| { + b.iter(|| { + let mut s = 0.; + for (&x, &y) in ZipSlices::new(&xs, &ys) { + s += x * y; + } + s + }) + }); +} + +fn zip_checked_counted_loop(c: &mut Criterion) { + let xs = vec![0; 1024]; + let ys = vec![0; 768]; + let xs = black_box(xs); + let ys = black_box(ys); + + c.bench_function("zip checked counted loop", move |b| { + b.iter(|| { + // Must slice to equal lengths, and then bounds checks are eliminated! + let len = cmp::min(xs.len(), ys.len()); + let xs = &xs[..len]; + let ys = &ys[..len]; + + for i in 0..len { + let x = xs[i]; + let y = ys[i]; + black_box(x); + black_box(y); + } + }) + }); +} + +fn zipdot_i32_checked_counted_loop(c: &mut Criterion) { + let xs = vec![2; 1024]; + let ys = vec![2; 768]; + let xs = black_box(xs); + let ys = black_box(ys); + + c.bench_function("zipdot i32 checked counted loop", move |b| { + b.iter(|| { + // Must slice to equal lengths, and then bounds checks are eliminated! + let len = cmp::min(xs.len(), ys.len()); + let xs = &xs[..len]; + let ys = &ys[..len]; + + let mut s = 0i32; + + for i in 0..len { + s += xs[i] * ys[i]; + } + s + }) + }); +} + +fn zipdot_f32_checked_counted_loop(c: &mut Criterion) { + let xs = vec![2f32; 1024]; + let ys = vec![2f32; 768]; + let xs = black_box(xs); + let ys = black_box(ys); + + c.bench_function("zipdot f32 checked counted loop", move |b| { + b.iter(|| { + // Must slice to equal lengths, and then bounds checks are eliminated! + let len = cmp::min(xs.len(), ys.len()); + let xs = &xs[..len]; + let ys = &ys[..len]; + + let mut s = 0.; + + for i in 0..len { + s += xs[i] * ys[i]; + } + s + }) + }); +} + +fn zipdot_f32_checked_counted_unrolled_loop(c: &mut Criterion) { + let xs = vec![2f32; 1024]; + let ys = vec![2f32; 768]; + let xs = black_box(xs); + let ys = black_box(ys); + + c.bench_function("zipdot f32 checked counted unrolled loop", move |b| { + b.iter(|| { + // Must slice to equal lengths, and then bounds checks are eliminated! + let len = cmp::min(xs.len(), ys.len()); + let mut xs = &xs[..len]; + let mut ys = &ys[..len]; + + let mut s = 0.; + let (mut p0, mut p1, mut p2, mut p3, mut p4, mut p5, mut p6, mut p7) = + (0., 0., 0., 0., 0., 0., 0., 0.); + + // how to unroll and have bounds checks eliminated (by cristicbz) + // split sum into eight parts to enable vectorization (by bluss) + while xs.len() >= 8 { + p0 += xs[0] * ys[0]; + p1 += xs[1] * ys[1]; + p2 += xs[2] * ys[2]; + p3 += xs[3] * ys[3]; + p4 += xs[4] * ys[4]; + p5 += xs[5] * ys[5]; + p6 += xs[6] * ys[6]; + p7 += xs[7] * ys[7]; + + xs = &xs[8..]; + ys = &ys[8..]; + } + s += p0 + p4; + s += p1 + p5; + s += p2 + p6; + s += p3 + p7; + + for i in 0..xs.len() { + s += xs[i] * ys[i]; + } + s + }) + }); +} + +fn zip_unchecked_counted_loop(c: &mut Criterion) { + let xs = vec![0; 1024]; + let ys = vec![0; 768]; + let xs = black_box(xs); + let ys = black_box(ys); + + c.bench_function("zip unchecked counted loop", move |b| { + b.iter(|| { + let len = cmp::min(xs.len(), ys.len()); + for i in 0..len { + unsafe { + let x = *xs.get_unchecked(i); + let y = *ys.get_unchecked(i); + black_box(x); + black_box(y); + } + } + }) + }); +} + +fn zipdot_i32_unchecked_counted_loop(c: &mut Criterion) { + let xs = vec![2; 1024]; + let ys = vec![2; 768]; + let xs = black_box(xs); + let ys = black_box(ys); + + c.bench_function("zipdot i32 unchecked counted loop", move |b| { + b.iter(|| { + let len = cmp::min(xs.len(), ys.len()); + let mut s = 0i32; + for i in 0..len { + unsafe { + let x = *xs.get_unchecked(i); + let y = *ys.get_unchecked(i); + s += x * y; + } + } + s + }) + }); +} + +fn zipdot_f32_unchecked_counted_loop(c: &mut Criterion) { + let xs = vec![2.; 1024]; + let ys = vec![2.; 768]; + let xs = black_box(xs); + let ys = black_box(ys); + + c.bench_function("zipdot f32 unchecked counted loop", move |b| { + b.iter(|| { + let len = cmp::min(xs.len(), ys.len()); + let mut s = 0f32; + for i in 0..len { + unsafe { + let x = *xs.get_unchecked(i); + let y = *ys.get_unchecked(i); + s += x * y; + } + } + s + }) + }); +} + +fn zip_unchecked_counted_loop3(c: &mut Criterion) { + let xs = vec![0; 1024]; + let ys = vec![0; 768]; + let zs = vec![0; 766]; + let xs = black_box(xs); + let ys = black_box(ys); + let zs = black_box(zs); + + c.bench_function("zip unchecked counted loop3", move |b| { + b.iter(|| { + let len = cmp::min(xs.len(), cmp::min(ys.len(), zs.len())); + for i in 0..len { + unsafe { + let x = *xs.get_unchecked(i); + let y = *ys.get_unchecked(i); + let z = *zs.get_unchecked(i); + black_box(x); + black_box(y); + black_box(z); + } + } + }) + }); +} + +fn group_by_lazy_1(c: &mut Criterion) { + let mut data = vec![0; 1024]; + for (index, elt) in data.iter_mut().enumerate() { + *elt = index / 10; + } + + let data = black_box(data); + + c.bench_function("group by lazy 1", move |b| { + b.iter(|| { + for (_key, group) in &data.iter().group_by(|elt| **elt) { + for elt in group { + black_box(elt); + } + } + }) + }); +} + +fn group_by_lazy_2(c: &mut Criterion) { + let mut data = vec![0; 1024]; + for (index, elt) in data.iter_mut().enumerate() { + *elt = index / 2; + } + + let data = black_box(data); + + c.bench_function("group by lazy 2", move |b| { + b.iter(|| { + for (_key, group) in &data.iter().group_by(|elt| **elt) { + for elt in group { + black_box(elt); + } + } + }) + }); +} + +fn slice_chunks(c: &mut Criterion) { + let data = vec![0; 1024]; + + let data = black_box(data); + let sz = black_box(10); + + c.bench_function("slice chunks", move |b| { + b.iter(|| { + for group in data.chunks(sz) { + for elt in group { + black_box(elt); + } + } + }) + }); +} + +fn chunks_lazy_1(c: &mut Criterion) { + let data = vec![0; 1024]; + + let data = black_box(data); + let sz = black_box(10); + + c.bench_function("chunks lazy 1", move |b| { + b.iter(|| { + for group in &data.iter().chunks(sz) { + for elt in group { + black_box(elt); + } + } + }) + }); +} + +fn equal(c: &mut Criterion) { + let data = vec![7; 1024]; + let l = data.len(); + let alpha = black_box(&data[1..]); + let beta = black_box(&data[..l - 1]); + + c.bench_function("equal", move |b| { + b.iter(|| { + itertools::equal(alpha, beta) + }) + }); +} + +fn merge_default(c: &mut Criterion) { + let mut data1 = vec![0; 1024]; + let mut data2 = vec![0; 800]; + let mut x = 0; + for (_, elt) in data1.iter_mut().enumerate() { + *elt = x; + x += 1; + } + + let mut y = 0; + for (i, elt) in data2.iter_mut().enumerate() { + *elt += y; + if i % 3 == 0 { + y += 3; + } else { + y += 0; + } + } + let data1 = black_box(data1); + let data2 = black_box(data2); + + c.bench_function("merge default", move |b| { + b.iter(|| { + data1.iter().merge(&data2).count() + }) + }); +} + +fn merge_by_cmp(c: &mut Criterion) { + let mut data1 = vec![0; 1024]; + let mut data2 = vec![0; 800]; + let mut x = 0; + for (_, elt) in data1.iter_mut().enumerate() { + *elt = x; + x += 1; + } + + let mut y = 0; + for (i, elt) in data2.iter_mut().enumerate() { + *elt += y; + if i % 3 == 0 { + y += 3; + } else { + y += 0; + } + } + let data1 = black_box(data1); + let data2 = black_box(data2); + + c.bench_function("merge by cmp", move |b| { + b.iter(|| { + data1.iter().merge_by(&data2, PartialOrd::le).count() + }) + }); +} + +fn merge_by_lt(c: &mut Criterion) { + let mut data1 = vec![0; 1024]; + let mut data2 = vec![0; 800]; + let mut x = 0; + for (_, elt) in data1.iter_mut().enumerate() { + *elt = x; + x += 1; + } + + let mut y = 0; + for (i, elt) in data2.iter_mut().enumerate() { + *elt += y; + if i % 3 == 0 { + y += 3; + } else { + y += 0; + } + } + let data1 = black_box(data1); + let data2 = black_box(data2); + + c.bench_function("merge by lt", move |b| { + b.iter(|| { + data1.iter().merge_by(&data2, |a, b| a <= b).count() + }) + }); +} + +fn kmerge_default(c: &mut Criterion) { + let mut data1 = vec![0; 1024]; + let mut data2 = vec![0; 800]; + let mut x = 0; + for (_, elt) in data1.iter_mut().enumerate() { + *elt = x; + x += 1; + } + + let mut y = 0; + for (i, elt) in data2.iter_mut().enumerate() { + *elt += y; + if i % 3 == 0 { + y += 3; + } else { + y += 0; + } + } + let data1 = black_box(data1); + let data2 = black_box(data2); + let its = &[data1.iter(), data2.iter()]; + + c.bench_function("kmerge default", move |b| { + b.iter(|| { + its.iter().cloned().kmerge().count() + }) + }); +} + +fn kmerge_tenway(c: &mut Criterion) { + let mut data = vec![0; 10240]; + + let mut state = 1729u16; + fn rng(state: &mut u16) -> u16 { + let new = state.wrapping_mul(31421) + 6927; + *state = new; + new + } + + for elt in &mut data { + *elt = rng(&mut state); + } + + let mut chunks = Vec::new(); + let mut rest = &mut data[..]; + while rest.len() > 0 { + let chunk_len = 1 + rng(&mut state) % 512; + let chunk_len = cmp::min(rest.len(), chunk_len as usize); + let (fst, tail) = {rest}.split_at_mut(chunk_len); + fst.sort(); + chunks.push(fst.iter().cloned()); + rest = tail; + } + + // println!("Chunk lengths: {}", chunks.iter().format_with(", ", |elt, f| f(&elt.len()))); + + c.bench_function("kmerge tenway", move |b| { + b.iter(|| { + chunks.iter().cloned().kmerge().count() + }) + }); +} + +fn fast_integer_sum(iter: I) -> I::Item + where I: IntoIterator, + I::Item: Default + Add +{ + iter.into_iter().fold(<_>::default(), |x, y| x + y) +} + +fn step_vec_2(c: &mut Criterion) { + let v = vec![0; 1024]; + + c.bench_function("step vec 2", move |b| { + b.iter(|| { + fast_integer_sum(cloned(v.iter().step_by(2))) + }) + }); +} + +fn step_vec_10(c: &mut Criterion) { + let v = vec![0; 1024]; + + c.bench_function("step vec 10", move |b| { + b.iter(|| { + fast_integer_sum(cloned(v.iter().step_by(10))) + }) + }); +} + +fn step_range_2(c: &mut Criterion) { + let v = black_box(0..1024); + + c.bench_function("step range 2", move |b| { + b.iter(|| { + fast_integer_sum(v.clone().step_by(2)) + }) + }); +} + +fn step_range_10(c: &mut Criterion) { + let v = black_box(0..1024); + + c.bench_function("step range 10", move |b| { + b.iter(|| { + fast_integer_sum(v.clone().step_by(10)) + }) + }); +} + +fn cartesian_product_iterator(c: &mut Criterion) { + let xs = vec![0; 16]; + + c.bench_function("cartesian product iterator", move |b| { + b.iter(|| { + let mut sum = 0; + for (&x, &y, &z) in iproduct!(&xs, &xs, &xs) { + sum += x; + sum += y; + sum += z; + } + sum + }) + }); +} + +fn cartesian_product_fold(c: &mut Criterion) { + let xs = vec![0; 16]; + + c.bench_function("cartesian product fold", move |b| { + b.iter(|| { + let mut sum = 0; + iproduct!(&xs, &xs, &xs).fold((), |(), (&x, &y, &z)| { + sum += x; + sum += y; + sum += z; + }); + sum + }) + }); +} + +fn multi_cartesian_product_iterator(c: &mut Criterion) { + let xs = [vec![0; 16], vec![0; 16], vec![0; 16]]; + + c.bench_function("multi cartesian product iterator", move |b| { + b.iter(|| { + let mut sum = 0; + for x in xs.iter().multi_cartesian_product() { + sum += x[0]; + sum += x[1]; + sum += x[2]; + } + sum + }) + }); +} + +fn multi_cartesian_product_fold(c: &mut Criterion) { + let xs = [vec![0; 16], vec![0; 16], vec![0; 16]]; + + c.bench_function("multi cartesian product fold", move |b| { + b.iter(|| { + let mut sum = 0; + xs.iter().multi_cartesian_product().fold((), |(), x| { + sum += x[0]; + sum += x[1]; + sum += x[2]; + }); + sum + }) + }); +} + +fn cartesian_product_nested_for(c: &mut Criterion) { + let xs = vec![0; 16]; + + c.bench_function("cartesian product nested for", move |b| { + b.iter(|| { + let mut sum = 0; + for &x in &xs { + for &y in &xs { + for &z in &xs { + sum += x; + sum += y; + sum += z; + } + } + } + sum + }) + }); +} + +fn all_equal(c: &mut Criterion) { + let mut xs = vec![0; 5_000_000]; + xs.extend(vec![1; 5_000_000]); + + c.bench_function("all equal", move |b| { + b.iter(|| xs.iter().all_equal()) + }); +} + +fn all_equal_for(c: &mut Criterion) { + let mut xs = vec![0; 5_000_000]; + xs.extend(vec![1; 5_000_000]); + + c.bench_function("all equal for", move |b| { + b.iter(|| { + for &x in &xs { + if x != xs[0] { + return false; + } + } + true + }) + }); +} + +fn all_equal_default(c: &mut Criterion) { + let mut xs = vec![0; 5_000_000]; + xs.extend(vec![1; 5_000_000]); + + c.bench_function("all equal default", move |b| { + b.iter(|| xs.iter().dedup().nth(1).is_none()) + }); +} + +const PERM_COUNT: usize = 6; + +fn permutations_iter(c: &mut Criterion) { + struct NewIterator(Range); + + impl Iterator for NewIterator { + type Item = usize; + + fn next(&mut self) -> Option { + self.0.next() + } + } + + c.bench_function("permutations iter", move |b| { + b.iter(|| { + for _ in NewIterator(0..PERM_COUNT).permutations(PERM_COUNT) { + + } + }) + }); +} + +fn permutations_range(c: &mut Criterion) { + c.bench_function("permutations range", move |b| { + b.iter(|| { + for _ in (0..PERM_COUNT).permutations(PERM_COUNT) { + + } + }) + }); +} + +fn permutations_slice(c: &mut Criterion) { + let v = (0..PERM_COUNT).collect_vec(); + + c.bench_function("permutations slice", move |b| { + b.iter(|| { + for _ in v.as_slice().iter().permutations(PERM_COUNT) { + + } + }) + }); +} + +criterion_group!( + benches, + slice_iter, + slice_iter_rev, + zip_default_zip, + zipdot_i32_default_zip, + zipdot_f32_default_zip, + zip_default_zip3, + zip_slices_ziptuple, + zipslices, + zipslices_mut, + zipdot_i32_zipslices, + zipdot_f32_zipslices, + zip_checked_counted_loop, + zipdot_i32_checked_counted_loop, + zipdot_f32_checked_counted_loop, + zipdot_f32_checked_counted_unrolled_loop, + zip_unchecked_counted_loop, + zipdot_i32_unchecked_counted_loop, + zipdot_f32_unchecked_counted_loop, + zip_unchecked_counted_loop3, + group_by_lazy_1, + group_by_lazy_2, + slice_chunks, + chunks_lazy_1, + equal, + merge_default, + merge_by_cmp, + merge_by_lt, + kmerge_default, + kmerge_tenway, + step_vec_2, + step_vec_10, + step_range_2, + step_range_10, + cartesian_product_iterator, + cartesian_product_fold, + multi_cartesian_product_iterator, + multi_cartesian_product_fold, + cartesian_product_nested_for, + all_equal, + all_equal_for, + all_equal_default, + permutations_iter, + permutations_range, + permutations_slice, +); +criterion_main!(benches); diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/benches/combinations.rs temporalio-1.3.0/vendor/itertools-0.10.5/benches/combinations.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/benches/combinations.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/benches/combinations.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,125 @@ +use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use itertools::Itertools; + +// approximate 100_000 iterations for each combination +const N1: usize = 100_000; +const N2: usize = 448; +const N3: usize = 86; +const N4: usize = 41; +const N14: usize = 21; + +fn comb_for1(c: &mut Criterion) { + c.bench_function("comb for1", move |b| { + b.iter(|| { + for i in 0..N1 { + black_box(vec![i]); + } + }) + }); +} + +fn comb_for2(c: &mut Criterion) { + c.bench_function("comb for2", move |b| { + b.iter(|| { + for i in 0..N2 { + for j in (i + 1)..N2 { + black_box(vec![i, j]); + } + } + }) + }); +} + +fn comb_for3(c: &mut Criterion) { + c.bench_function("comb for3", move |b| { + b.iter(|| { + for i in 0..N3 { + for j in (i + 1)..N3 { + for k in (j + 1)..N3 { + black_box(vec![i, j, k]); + } + } + } + }) + }); +} + +fn comb_for4(c: &mut Criterion) { + c.bench_function("comb for4", move |b| { + b.iter(|| { + for i in 0..N4 { + for j in (i + 1)..N4 { + for k in (j + 1)..N4 { + for l in (k + 1)..N4 { + black_box(vec![i, j, k, l]); + } + } + } + } + }) + }); +} + +fn comb_c1(c: &mut Criterion) { + c.bench_function("comb c1", move |b| { + b.iter(|| { + for combo in (0..N1).combinations(1) { + black_box(combo); + } + }) + }); +} + +fn comb_c2(c: &mut Criterion) { + c.bench_function("comb c2", move |b| { + b.iter(|| { + for combo in (0..N2).combinations(2) { + black_box(combo); + } + }) + }); +} + +fn comb_c3(c: &mut Criterion) { + c.bench_function("comb c3", move |b| { + b.iter(|| { + for combo in (0..N3).combinations(3) { + black_box(combo); + } + }) + }); +} + +fn comb_c4(c: &mut Criterion) { + c.bench_function("comb c4", move |b| { + b.iter(|| { + for combo in (0..N4).combinations(4) { + black_box(combo); + } + }) + }); +} + +fn comb_c14(c: &mut Criterion) { + c.bench_function("comb c14", move |b| { + b.iter(|| { + for combo in (0..N14).combinations(14) { + black_box(combo); + } + }) + }); +} + +criterion_group!( + benches, + comb_for1, + comb_for2, + comb_for3, + comb_for4, + comb_c1, + comb_c2, + comb_c3, + comb_c4, + comb_c14, +); +criterion_main!(benches); diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/benches/combinations_with_replacement.rs temporalio-1.3.0/vendor/itertools-0.10.5/benches/combinations_with_replacement.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/benches/combinations_with_replacement.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/benches/combinations_with_replacement.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,40 @@ +use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use itertools::Itertools; + +fn comb_replacement_n10_k5(c: &mut Criterion) { + c.bench_function("comb replacement n10k5", move |b| { + b.iter(|| { + for i in (0..10).combinations_with_replacement(5) { + black_box(i); + } + }) + }); +} + +fn comb_replacement_n5_k10(c: &mut Criterion) { + c.bench_function("comb replacement n5 k10", move |b| { + b.iter(|| { + for i in (0..5).combinations_with_replacement(10) { + black_box(i); + } + }) + }); +} + +fn comb_replacement_n10_k10(c: &mut Criterion) { + c.bench_function("comb replacement n10 k10", move |b| { + b.iter(|| { + for i in (0..10).combinations_with_replacement(10) { + black_box(i); + } + }) + }); +} + +criterion_group!( + benches, + comb_replacement_n10_k5, + comb_replacement_n5_k10, + comb_replacement_n10_k10, +); +criterion_main!(benches); diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/benches/extra/mod.rs temporalio-1.3.0/vendor/itertools-0.10.5/benches/extra/mod.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/benches/extra/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/benches/extra/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,2 @@ +pub use self::zipslices::ZipSlices; +mod zipslices; diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/benches/extra/zipslices.rs temporalio-1.3.0/vendor/itertools-0.10.5/benches/extra/zipslices.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/benches/extra/zipslices.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/benches/extra/zipslices.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,188 @@ +use std::cmp; + +// Note: There are different ways to implement ZipSlices. +// This version performed the best in benchmarks. +// +// I also implemented a version with three pointers (tptr, tend, uptr), +// that mimiced slice::Iter and only checked bounds by using tptr == tend, +// but that was inferior to this solution. + +/// An iterator which iterates two slices simultaneously. +/// +/// `ZipSlices` acts like a double-ended `.zip()` iterator. +/// +/// It was intended to be more efficient than `.zip()`, and it was, then +/// rustc changed how it optimizes so it can not promise improved performance +/// at this time. +/// +/// Note that elements past the end of the shortest of the two slices are ignored. +/// +/// Iterator element type for `ZipSlices` is `(T::Item, U::Item)`. For example, +/// for a `ZipSlices<&'a [A], &'b mut [B]>`, the element type is `(&'a A, &'b mut B)`. +#[derive(Clone)] +pub struct ZipSlices { + t: T, + u: U, + len: usize, + index: usize, +} + +impl<'a, 'b, A, B> ZipSlices<&'a [A], &'b [B]> { + /// Create a new `ZipSlices` from slices `a` and `b`. + /// + /// Act like a double-ended `.zip()` iterator, but more efficiently. + /// + /// Note that elements past the end of the shortest of the two slices are ignored. + #[inline(always)] + pub fn new(a: &'a [A], b: &'b [B]) -> Self { + let minl = cmp::min(a.len(), b.len()); + ZipSlices { + t: a, + u: b, + len: minl, + index: 0, + } + } +} + +impl ZipSlices + where T: Slice, + U: Slice +{ + /// Create a new `ZipSlices` from slices `a` and `b`. + /// + /// Act like a double-ended `.zip()` iterator, but more efficiently. + /// + /// Note that elements past the end of the shortest of the two slices are ignored. + #[inline(always)] + pub fn from_slices(a: T, b: U) -> Self { + let minl = cmp::min(a.len(), b.len()); + ZipSlices { + t: a, + u: b, + len: minl, + index: 0, + } + } +} + +impl Iterator for ZipSlices + where T: Slice, + U: Slice +{ + type Item = (T::Item, U::Item); + + #[inline(always)] + fn next(&mut self) -> Option { + unsafe { + if self.index >= self.len { + None + } else { + let i = self.index; + self.index += 1; + Some(( + self.t.get_unchecked(i), + self.u.get_unchecked(i))) + } + } + } + + #[inline] + fn size_hint(&self) -> (usize, Option) { + let len = self.len - self.index; + (len, Some(len)) + } +} + +impl DoubleEndedIterator for ZipSlices + where T: Slice, + U: Slice +{ + #[inline(always)] + fn next_back(&mut self) -> Option { + unsafe { + if self.index >= self.len { + None + } else { + self.len -= 1; + let i = self.len; + Some(( + self.t.get_unchecked(i), + self.u.get_unchecked(i))) + } + } + } +} + +impl ExactSizeIterator for ZipSlices + where T: Slice, + U: Slice +{} + +unsafe impl Slice for ZipSlices + where T: Slice, + U: Slice +{ + type Item = (T::Item, U::Item); + + fn len(&self) -> usize { + self.len - self.index + } + + unsafe fn get_unchecked(&mut self, i: usize) -> Self::Item { + (self.t.get_unchecked(i), + self.u.get_unchecked(i)) + } +} + +/// A helper trait to let `ZipSlices` accept both `&[T]` and `&mut [T]`. +/// +/// Unsafe trait because: +/// +/// - Implementors must guarantee that `get_unchecked` is valid for all indices `0..len()`. +pub unsafe trait Slice { + /// The type of a reference to the slice's elements + type Item; + #[doc(hidden)] + fn len(&self) -> usize; + #[doc(hidden)] + unsafe fn get_unchecked(&mut self, i: usize) -> Self::Item; +} + +unsafe impl<'a, T> Slice for &'a [T] { + type Item = &'a T; + #[inline(always)] + fn len(&self) -> usize { (**self).len() } + #[inline(always)] + unsafe fn get_unchecked(&mut self, i: usize) -> &'a T { + debug_assert!(i < self.len()); + (**self).get_unchecked(i) + } +} + +unsafe impl<'a, T> Slice for &'a mut [T] { + type Item = &'a mut T; + #[inline(always)] + fn len(&self) -> usize { (**self).len() } + #[inline(always)] + unsafe fn get_unchecked(&mut self, i: usize) -> &'a mut T { + debug_assert!(i < self.len()); + // override the lifetime constraints of &mut &'a mut [T] + (*(*self as *mut [T])).get_unchecked_mut(i) + } +} + +#[test] +fn zipslices() { + + let xs = [1, 2, 3, 4, 5, 6]; + let ys = [1, 2, 3, 7]; + ::itertools::assert_equal(ZipSlices::new(&xs, &ys), xs.iter().zip(&ys)); + + let xs = [1, 2, 3, 4, 5, 6]; + let mut ys = [0; 6]; + for (x, y) in ZipSlices::from_slices(&xs[..], &mut ys[..]) { + *y = *x; + } + ::itertools::assert_equal(&xs, &ys); +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/benches/fold_specialization.rs temporalio-1.3.0/vendor/itertools-0.10.5/benches/fold_specialization.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/benches/fold_specialization.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/benches/fold_specialization.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,73 @@ +use criterion::{criterion_group, criterion_main, Criterion}; +use itertools::Itertools; + +struct Unspecialized(I); + +impl Iterator for Unspecialized +where I: Iterator +{ + type Item = I::Item; + + #[inline(always)] + fn next(&mut self) -> Option { + self.0.next() + } + + #[inline(always)] + fn size_hint(&self) -> (usize, Option) { + self.0.size_hint() + } +} + +mod specialization { + use super::*; + + pub mod intersperse { + use super::*; + + pub fn external(c: &mut Criterion) + { + let arr = [1; 1024]; + + c.bench_function("external", move |b| { + b.iter(|| { + let mut sum = 0; + for &x in arr.iter().intersperse(&0) { + sum += x; + } + sum + }) + }); + } + + pub fn internal_specialized(c: &mut Criterion) + { + let arr = [1; 1024]; + + c.bench_function("internal specialized", move |b| { + b.iter(|| { + arr.iter().intersperse(&0).fold(0, |acc, x| acc + x) + }) + }); + } + + pub fn internal_unspecialized(c: &mut Criterion) + { + let arr = [1; 1024]; + + c.bench_function("internal unspecialized", move |b| { + b.iter(|| { + Unspecialized(arr.iter().intersperse(&0)).fold(0, |acc, x| acc + x) + }) + }); + } + } +} + +criterion_group!( + benches, + specialization::intersperse::external, + specialization::intersperse::internal_specialized, + specialization::intersperse::internal_unspecialized, +); +criterion_main!(benches); diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/benches/powerset.rs temporalio-1.3.0/vendor/itertools-0.10.5/benches/powerset.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/benches/powerset.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/benches/powerset.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,44 @@ +use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use itertools::Itertools; + +// Keep aggregate generated elements the same, regardless of powerset length. +const TOTAL_ELEMENTS: usize = 1 << 12; +const fn calc_iters(n: usize) -> usize { + TOTAL_ELEMENTS / (1 << n) +} + +fn powerset_n(c: &mut Criterion, n: usize) { + let id = format!("powerset {}", n); + c.bench_function(id.as_str(), move |b| { + b.iter(|| { + for _ in 0..calc_iters(n) { + for elt in (0..n).powerset() { + black_box(elt); + } + } + }) + }); +} + +fn powerset_0(c: &mut Criterion) { powerset_n(c, 0); } + +fn powerset_1(c: &mut Criterion) { powerset_n(c, 1); } + +fn powerset_2(c: &mut Criterion) { powerset_n(c, 2); } + +fn powerset_4(c: &mut Criterion) { powerset_n(c, 4); } + +fn powerset_8(c: &mut Criterion) { powerset_n(c, 8); } + +fn powerset_12(c: &mut Criterion) { powerset_n(c, 12); } + +criterion_group!( + benches, + powerset_0, + powerset_1, + powerset_2, + powerset_4, + powerset_8, + powerset_12, +); +criterion_main!(benches); \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/benches/tree_fold1.rs temporalio-1.3.0/vendor/itertools-0.10.5/benches/tree_fold1.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/benches/tree_fold1.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/benches/tree_fold1.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,144 @@ +use criterion::{criterion_group, criterion_main, Criterion}; +use itertools::{Itertools, cloned}; + +trait IterEx : Iterator { + // Another efficient implementation against which to compare, + // but needs `std` so is less desirable. + fn tree_fold1_vec(self, mut f: F) -> Option + where F: FnMut(Self::Item, Self::Item) -> Self::Item, + Self: Sized, + { + let hint = self.size_hint().0; + let cap = std::mem::size_of::() * 8 - hint.leading_zeros() as usize; + let mut stack = Vec::with_capacity(cap); + self.enumerate().for_each(|(mut i, mut x)| { + while (i & 1) != 0 { + x = f(stack.pop().unwrap(), x); + i >>= 1; + } + stack.push(x); + }); + stack.into_iter().fold1(f) + } +} +impl IterEx for T {} + +macro_rules! def_benchs { + ($N:expr, + $FUN:ident, + $BENCH_NAME:ident, + ) => ( + mod $BENCH_NAME { + use super::*; + + pub fn sum(c: &mut Criterion) { + let v: Vec = (0.. $N).collect(); + + c.bench_function(&(stringify!($BENCH_NAME).replace('_', " ") + " sum"), move |b| { + b.iter(|| { + cloned(&v).$FUN(|x, y| x + y) + }) + }); + } + + pub fn complex_iter(c: &mut Criterion) { + let u = (3..).take($N / 2); + let v = (5..).take($N / 2); + let it = u.chain(v); + + c.bench_function(&(stringify!($BENCH_NAME).replace('_', " ") + " complex iter"), move |b| { + b.iter(|| { + it.clone().map(|x| x as f32).$FUN(f32::atan2) + }) + }); + } + + pub fn string_format(c: &mut Criterion) { + // This goes quadratic with linear `fold1`, so use a smaller + // size to not waste too much time in travis. The allocations + // in here are so expensive anyway that it'll still take + // way longer per iteration than the other two benchmarks. + let v: Vec = (0.. ($N/4)).collect(); + + c.bench_function(&(stringify!($BENCH_NAME).replace('_', " ") + " string format"), move |b| { + b.iter(|| { + cloned(&v).map(|x| x.to_string()).$FUN(|x, y| format!("{} + {}", x, y)) + }) + }); + } + } + + criterion_group!( + $BENCH_NAME, + $BENCH_NAME::sum, + $BENCH_NAME::complex_iter, + $BENCH_NAME::string_format, + ); + ) +} + +def_benchs!{ + 10_000, + fold1, + fold1_10k, +} + +def_benchs!{ + 10_000, + tree_fold1, + tree_fold1_stack_10k, +} + +def_benchs!{ + 10_000, + tree_fold1_vec, + tree_fold1_vec_10k, +} + +def_benchs!{ + 100, + fold1, + fold1_100, +} + +def_benchs!{ + 100, + tree_fold1, + tree_fold1_stack_100, +} + +def_benchs!{ + 100, + tree_fold1_vec, + tree_fold1_vec_100, +} + +def_benchs!{ + 8, + fold1, + fold1_08, +} + +def_benchs!{ + 8, + tree_fold1, + tree_fold1_stack_08, +} + +def_benchs!{ + 8, + tree_fold1_vec, + tree_fold1_vec_08, +} + +criterion_main!( + fold1_10k, + tree_fold1_stack_10k, + tree_fold1_vec_10k, + fold1_100, + tree_fold1_stack_100, + tree_fold1_vec_100, + fold1_08, + tree_fold1_stack_08, + tree_fold1_vec_08, +); diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/benches/tuple_combinations.rs temporalio-1.3.0/vendor/itertools-0.10.5/benches/tuple_combinations.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/benches/tuple_combinations.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/benches/tuple_combinations.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,113 @@ +use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use itertools::Itertools; + +// approximate 100_000 iterations for each combination +const N1: usize = 100_000; +const N2: usize = 448; +const N3: usize = 86; +const N4: usize = 41; + +fn tuple_comb_for1(c: &mut Criterion) { + c.bench_function("tuple comb for1", move |b| { + b.iter(|| { + for i in 0..N1 { + black_box(i); + } + }) + }); +} + +fn tuple_comb_for2(c: &mut Criterion) { + c.bench_function("tuple comb for2", move |b| { + b.iter(|| { + for i in 0..N2 { + for j in (i + 1)..N2 { + black_box(i + j); + } + } + }) + }); +} + +fn tuple_comb_for3(c: &mut Criterion) { + c.bench_function("tuple comb for3", move |b| { + b.iter(|| { + for i in 0..N3 { + for j in (i + 1)..N3 { + for k in (j + 1)..N3 { + black_box(i + j + k); + } + } + } + }) + }); +} + +fn tuple_comb_for4(c: &mut Criterion) { + c.bench_function("tuple comb for4", move |b| { + b.iter(|| { + for i in 0..N4 { + for j in (i + 1)..N4 { + for k in (j + 1)..N4 { + for l in (k + 1)..N4 { + black_box(i + j + k + l); + } + } + } + } + }) + }); +} + +fn tuple_comb_c1(c: &mut Criterion) { + c.bench_function("tuple comb c1", move |b| { + b.iter(|| { + for (i,) in (0..N1).tuple_combinations() { + black_box(i); + } + }) + }); +} + +fn tuple_comb_c2(c: &mut Criterion) { + c.bench_function("tuple comb c2", move |b| { + b.iter(|| { + for (i, j) in (0..N2).tuple_combinations() { + black_box(i + j); + } + }) + }); +} + +fn tuple_comb_c3(c: &mut Criterion) { + c.bench_function("tuple comb c3", move |b| { + b.iter(|| { + for (i, j, k) in (0..N3).tuple_combinations() { + black_box(i + j + k); + } + }) + }); +} + +fn tuple_comb_c4(c: &mut Criterion) { + c.bench_function("tuple comb c4", move |b| { + b.iter(|| { + for (i, j, k, l) in (0..N4).tuple_combinations() { + black_box(i + j + k + l); + } + }) + }); +} + +criterion_group!( + benches, + tuple_comb_for1, + tuple_comb_for2, + tuple_comb_for3, + tuple_comb_for4, + tuple_comb_c1, + tuple_comb_c2, + tuple_comb_c3, + tuple_comb_c4, +); +criterion_main!(benches); diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/benches/tuples.rs temporalio-1.3.0/vendor/itertools-0.10.5/benches/tuples.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/benches/tuples.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/benches/tuples.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,213 @@ +use criterion::{criterion_group, criterion_main, Criterion}; +use itertools::Itertools; + +fn s1(a: u32) -> u32 { + a +} + +fn s2(a: u32, b: u32) -> u32 { + a + b +} + +fn s3(a: u32, b: u32, c: u32) -> u32 { + a + b + c +} + +fn s4(a: u32, b: u32, c: u32, d: u32) -> u32 { + a + b + c + d +} + +fn sum_s1(s: &[u32]) -> u32 { + s1(s[0]) +} + +fn sum_s2(s: &[u32]) -> u32 { + s2(s[0], s[1]) +} + +fn sum_s3(s: &[u32]) -> u32 { + s3(s[0], s[1], s[2]) +} + +fn sum_s4(s: &[u32]) -> u32 { + s4(s[0], s[1], s[2], s[3]) +} + +fn sum_t1(s: &(&u32, )) -> u32 { + s1(*s.0) +} + +fn sum_t2(s: &(&u32, &u32)) -> u32 { + s2(*s.0, *s.1) +} + +fn sum_t3(s: &(&u32, &u32, &u32)) -> u32 { + s3(*s.0, *s.1, *s.2) +} + +fn sum_t4(s: &(&u32, &u32, &u32, &u32)) -> u32 { + s4(*s.0, *s.1, *s.2, *s.3) +} + +macro_rules! def_benchs { + ($N:expr; + $BENCH_GROUP:ident, + $TUPLE_FUN:ident, + $TUPLES:ident, + $TUPLE_WINDOWS:ident; + $SLICE_FUN:ident, + $CHUNKS:ident, + $WINDOWS:ident; + $FOR_CHUNKS:ident, + $FOR_WINDOWS:ident + ) => ( + fn $FOR_CHUNKS(c: &mut Criterion) { + let v: Vec = (0.. $N * 1_000).collect(); + let mut s = 0; + c.bench_function(&stringify!($FOR_CHUNKS).replace('_', " "), move |b| { + b.iter(|| { + let mut j = 0; + for _ in 0..1_000 { + s += $SLICE_FUN(&v[j..(j + $N)]); + j += $N; + } + s + }) + }); + } + + fn $FOR_WINDOWS(c: &mut Criterion) { + let v: Vec = (0..1_000).collect(); + let mut s = 0; + c.bench_function(&stringify!($FOR_WINDOWS).replace('_', " "), move |b| { + b.iter(|| { + for i in 0..(1_000 - $N) { + s += $SLICE_FUN(&v[i..(i + $N)]); + } + s + }) + }); + } + + fn $TUPLES(c: &mut Criterion) { + let v: Vec = (0.. $N * 1_000).collect(); + let mut s = 0; + c.bench_function(&stringify!($TUPLES).replace('_', " "), move |b| { + b.iter(|| { + for x in v.iter().tuples() { + s += $TUPLE_FUN(&x); + } + s + }) + }); + } + + fn $CHUNKS(c: &mut Criterion) { + let v: Vec = (0.. $N * 1_000).collect(); + let mut s = 0; + c.bench_function(&stringify!($CHUNKS).replace('_', " "), move |b| { + b.iter(|| { + for x in v.chunks($N) { + s += $SLICE_FUN(x); + } + s + }) + }); + } + + fn $TUPLE_WINDOWS(c: &mut Criterion) { + let v: Vec = (0..1_000).collect(); + let mut s = 0; + c.bench_function(&stringify!($TUPLE_WINDOWS).replace('_', " "), move |b| { + b.iter(|| { + for x in v.iter().tuple_windows() { + s += $TUPLE_FUN(&x); + } + s + }) + }); + } + + fn $WINDOWS(c: &mut Criterion) { + let v: Vec = (0..1_000).collect(); + let mut s = 0; + c.bench_function(&stringify!($WINDOWS).replace('_', " "), move |b| { + b.iter(|| { + for x in v.windows($N) { + s += $SLICE_FUN(x); + } + s + }) + }); + } + + criterion_group!( + $BENCH_GROUP, + $FOR_CHUNKS, + $FOR_WINDOWS, + $TUPLES, + $CHUNKS, + $TUPLE_WINDOWS, + $WINDOWS, + ); + ) +} + +def_benchs!{ + 1; + benches_1, + sum_t1, + tuple_chunks_1, + tuple_windows_1; + sum_s1, + slice_chunks_1, + slice_windows_1; + for_chunks_1, + for_windows_1 +} + +def_benchs!{ + 2; + benches_2, + sum_t2, + tuple_chunks_2, + tuple_windows_2; + sum_s2, + slice_chunks_2, + slice_windows_2; + for_chunks_2, + for_windows_2 +} + +def_benchs!{ + 3; + benches_3, + sum_t3, + tuple_chunks_3, + tuple_windows_3; + sum_s3, + slice_chunks_3, + slice_windows_3; + for_chunks_3, + for_windows_3 +} + +def_benchs!{ + 4; + benches_4, + sum_t4, + tuple_chunks_4, + tuple_windows_4; + sum_s4, + slice_chunks_4, + slice_windows_4; + for_chunks_4, + for_windows_4 +} + +criterion_main!( + benches_1, + benches_2, + benches_3, + benches_4, +); diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/.cargo-checksum.json temporalio-1.3.0/vendor/itertools-0.10.5/.cargo-checksum.json --- temporalio-1.3.0/vendor/itertools-0.10.5/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +{"files":{"CHANGELOG.md":"ed6c781d541c40d4a19eaecd794cadebb94b3f4d51e32367803542c88f0457ee","Cargo.toml":"6dcbab25126c0cdf64f5089156de0d4346914c6d47c557d370b8e20e039ca7d3","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7576269ea71f767b99297934c0b2367532690f8c4badc695edf8e04ab6a1e545","README.md":"3acfeb07424200ae70bf571ef63a96bae954c298bddf447c9bea0ea9394825cc","benches/bench1.rs":"bb06f39db0544b1380cd4929139ccf521a9eecab7ca3f910b9499f965ec0a047","benches/combinations.rs":"51523ee1ca438a56f14711f0b04ee943895062d35859fbe23a2714d2fca3289d","benches/combinations_with_replacement.rs":"11f29160652a2d90ce7ca4b1c339c4457888ab6867e2456ce1c62e3adf9be737","benches/extra/mod.rs":"6ca290d72302a1945078621610b5788060b0de29639decebbdc557a80044aa97","benches/extra/zipslices.rs":"40e9f68a7c00f8429193fca463caef18851fa49b33355cc136bad3ccc840d655","benches/fold_specialization.rs":"5a517bbe29d366a15f6f751660e17ab1aa3e7b21552a1983048c662e34f0d69e","benches/powerset.rs":"6fd9d69a3483b37dc2411f99fb4efa6131577696f2dbdc8d1de9e4d7642fe3a3","benches/tree_fold1.rs":"539232e74f9aaea295a42069ac5af707811e90dc1c71c6e0a9064ffc731999de","benches/tuple_combinations.rs":"16366158743307a0289fc1df423a3cec45009807d410a9fe9922d5b6f8b7d002","benches/tuples.rs":"5a620783ae203e9ff9623d10d2c7fe9911d8b6c811cbad7613afa30e390c759d","clippy.toml":"33ffb83bbddb772575b3aa565b7136a8158ee386c216ffc2588fed9e83fa3826","examples/iris.data":"596ffd580471ca4d4880f8e439c7281f3b50d8249a5960353cb200b1490f63a0","examples/iris.rs":"1b465ed6a417180913104bc95a545fd9d1a3d67d121871ab737ad87e31b8be37","src/adaptors/coalesce.rs":"a0073325d40f297d29101538d18a267aef81889a999338dc09cb43a31cb4ec8b","src/adaptors/map.rs":"241971e856e468d71323071fb4a09867fbcedb83877320be132dc03516fe60e8","src/adaptors/mod.rs":"7f3bd7d011a348ce5e4bea486ef2e6346b64c7fe27540334d56d3f147f981d59","src/adaptors/multi_product.rs":"bb43e6dce68c815c21006d5b01c56e038d54b0c3bb8ee6bb8a4de11e2952c7ad","src/combinations.rs":"fb25babb459389093f886721016c72bf9f00e51d02735f638d871bb3a447ffd0","src/combinations_with_replacement.rs":"463011a574facbdd84278386b533a90e4dd517f0417e05adb82d182049db1f50","src/concat_impl.rs":"03b1ed61cbed242c286c3c4c5c848dbd57e02ab83fcef264f3a592b58107f324","src/cons_tuples_impl.rs":"c253d03b861831c01d62cacc57b49715ee62f6171e69f6886bb5a6ca0863bc3a","src/diff.rs":"a7800e9ce7a87b53ebe2338481335751fb43d44fa6a1ca719aceaaab40e5c8fe","src/duplicates_impl.rs":"f62fe4b642f501f785721ce5a505cf622a771e457210726dd0fb8b30be7ebbbc","src/either_or_both.rs":"76b13fbfac6bc959b4c1d8b7c99ce51726e95f994ca5429477e523a3d3950e4a","src/exactly_one_err.rs":"aa50081f6a31b5109b30e3ed305e3ec2413c6908dedc8990ec5378a99cee2b39","src/extrema_set.rs":"2a25b0b86eed2fd5d05622d591a3085cab823973d450816c2c3b8cb76e9c187e","src/flatten_ok.rs":"fe209fd886ecd9cb98d99625aa0c7274af7e644eff4a10de15b4dec8bbbc934a","src/format.rs":"a8192d85c0f9de8e633c202456e3cde0f3bc50f19b6bd8a4b2cfa3ef5123de1a","src/free.rs":"dfc57b7f56a08d4986a96b679018b41346576a7a34b668e008cc01109e728750","src/group_map.rs":"f7b02c964f63505d3e36280cfdc1755e05287714201efe983dacf702eee61434","src/groupbylazy.rs":"4f2181c022a45ff8444597708861fc6863eceb6f7555ea81cf3eeba19b492971","src/grouping_map.rs":"cbc45ac563345c96f3ac50c78f73c83d870523436a7ab88c1c9a685d204461d3","src/impl_macros.rs":"4f829b458873bed556f1aff2ae4e88dbd576766e2b5bcc07ff3ac8756758e6f4","src/intersperse.rs":"b9717242495846a4a979c95d93d5681caccb7c07a0d889eab763ad3d49a46125","src/k_smallest.rs":"603eb34314c01769ff7f6def2a24cf7a7b38507e6f3658b7aafc23a3b2e9b322","src/kmerge_impl.rs":"a347b0f6fa7715afd8a54d85ce139ed5b14c9e58a16c2b3648f5b288fdb5375f","src/lazy_buffer.rs":"834f6ef7fdf9f00c8a6329beb38eaefb706847ceeec309c221dce705c2c1e05b","src/lib.rs":"fadb0045279aafe8e8cccb45fadc383c7b358197b83c9c38fba87ada4cb2f84a","src/merge_join.rs":"1016113f6c983a9498bae5dc0570190437e1357b3333f6e19ea95c88599a1225","src/minmax.rs":"96d3897c28c8c63284d4729becc9ada6855e0953cac6e1bd35cf6f38c50b0ec0","src/multipeek_impl.rs":"35162bca4456bfa20a08e8d40e4d1cc6783dc662778789fdcded60371e975122","src/pad_tail.rs":"04be2ca73abb85815b06b5524c99d6feb2919180c486a4646f9cc6c87462f67b","src/peek_nth.rs":"6a0a51f2f373ce14d3d58595c46464878a14976bf00841a7396c03f9f9ab07ac","src/peeking_take_while.rs":"2b1b77c8882be32cfd76e973d303aa62f73370efd470c60764add0cdcca524d5","src/permutations.rs":"97831e7e26904c3cae68c97e74f7c6981ceb2fb2f2217282a0e5e54083a565fc","src/powerset.rs":"e0ee6b1316b4dd314c1e81502b90ae8113e1cda12168322520c5a65410e584b2","src/process_results_impl.rs":"9ed7fa46c8316238272ef47577387a386c1a109b50377dd3caf4291b6587cb73","src/put_back_n_impl.rs":"821e047fecd6ca0036290029f4febe7638a3abf1faa05e1e747a3bf9d80ff464","src/rciter_impl.rs":"5b156082ef2d25a94a4ad01d94cba2813c4b3e72e212515a8ad0fc8588f8045d","src/repeatn.rs":"bfc8f9145c9d8a3ea651f012b7d5a8d2fbbcbefdee76eafd098d02e7c54cda90","src/size_hint.rs":"021e57aad7df8f1e70ef588e9e9b8a1695aab183b1098f1848561f96c5dc9bcb","src/sources.rs":"61637f32c2cea2290ecfc1980c0b2d0f68463839ac09bd81006f8258ab8ecaae","src/tee.rs":"665832aa547389a420c3441470ff2494249f0ed2841be0c6a578367fe9dbd381","src/tuple_impl.rs":"00a9b61942425fb477b9691c3348646c0f9f534ff94f6321027f38c61ce2478c","src/unique_impl.rs":"3b89cdd668b74cc0a0eabb1522489e2305a0d2d8da25d6a1884e8626bbdb5959","src/unziptuple.rs":"84b50e5d29b9ddbf21a46a1cc2fd7877729c7f7da9bdc8ae1966dbaf2d2f6f60","src/with_position.rs":"c8a9b3476b3b90986b004a8877c19ff54b4c6800c5ac7ca1458d914036dacfe9","src/zip_eq_impl.rs":"4a41dc6dfe99359585d50ce648bdc85f15276c602048872b1d152e90841d8cad","src/zip_longest.rs":"f7cf5fffc3ca053ee80b410a05b27de1a475021f6de3181aea981010d7e8453f","src/ziptuple.rs":"7f9df12bf6556f382bbd4ad8cf17eb8b60c1c47fadbce016141133ba0f3384a1","tests/adaptors_no_collect.rs":"f459f36d54f5d475b2b2e83f5a1c98109c15062756ae822fa379486f3eeed666","tests/flatten_ok.rs":"b7894874132918b8229c7150b2637511d8e3e14197d8eeb9382d46b2a514efa2","tests/macros_hygiene.rs":"522afa0106e3f11a5149e9218f89c2329e405546d2ef0ea756d6a27e8a0e9ca3","tests/merge_join.rs":"b08c4ee6529d234c68d411a413b8781455d18a1eab17872d1828bb75a4fcf79b","tests/peeking_take_while.rs":"4b1c394e44a9ef9bc0de707ae080b45803db722f79834c20f15b826d7c3f1f2e","tests/quick.rs":"6fcc0649b9270f024b169b1f499dd4cc7fecb0c9aec0dfc155b264916cc626e7","tests/specializations.rs":"fdd16dc663330033fedcc478609b393d4aa369dc07dc8cda31a75219fb793087","tests/test_core.rs":"32576ba90aa8e5db985b6e6ffe30e3046bc6a11d392db8f6b4bdd2ba48d9b24d","tests/test_std.rs":"f28a78a1912c950e7c37be1e82867e70dc585d60afecdebc7a97965194eee8e6","tests/tuples.rs":"014e4da776174bfe923270e2a359cd9c95b372fce4b952b8138909d6e2c52762","tests/zip.rs":"99af365fe6054ef1c6089d3e604e34da8fea66e55861ae4be9e7336ec8de4b56"},"package":"b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/Cargo.toml temporalio-1.3.0/vendor/itertools-0.10.5/Cargo.toml --- temporalio-1.3.0/vendor/itertools-0.10.5/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,88 @@ +# 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 believe there's an error in this file please file an +# issue against the rust-lang/cargo repository. If you're +# editing this file be aware that the upstream Cargo.toml +# will likely look very different (and much more reasonable) + +[package] +edition = "2018" +name = "itertools" +version = "0.10.5" +authors = ["bluss"] +exclude = ["/bors.toml"] +description = "Extra iterator adaptors, iterator methods, free functions, and macros." +documentation = "https://docs.rs/itertools/" +readme = "README.md" +keywords = ["iterator", "data-structure", "zip", "product", "group-by"] +categories = ["algorithms", "rust-patterns"] +license = "MIT/Apache-2.0" +repository = "https://github.com/rust-itertools/itertools" +[package.metadata.release] +no-dev-version = true +[profile.bench] +debug = true + +[lib] +test = false +bench = false + +[[bench]] +name = "tuple_combinations" +harness = false + +[[bench]] +name = "tuples" +harness = false + +[[bench]] +name = "fold_specialization" +harness = false + +[[bench]] +name = "combinations_with_replacement" +harness = false + +[[bench]] +name = "tree_fold1" +harness = false + +[[bench]] +name = "bench1" +harness = false + +[[bench]] +name = "combinations" +harness = false + +[[bench]] +name = "powerset" +harness = false +[dependencies.either] +version = "1.0" +default-features = false +[dev-dependencies.criterion] +version = "=0" + +[dev-dependencies.paste] +version = "1.0.0" + +[dev-dependencies.permutohedron] +version = "0.2" + +[dev-dependencies.quickcheck] +version = "0.9" +default-features = false + +[dev-dependencies.rand] +version = "0.7" + +[features] +default = ["use_std"] +use_alloc = [] +use_std = ["use_alloc", "either/use_std"] diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/CHANGELOG.md temporalio-1.3.0/vendor/itertools-0.10.5/CHANGELOG.md --- temporalio-1.3.0/vendor/itertools-0.10.5/CHANGELOG.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,380 @@ +# Changelog + +## 0.10.4 + - Add `EitherOrBoth::or` and `EitherOrBoth::or_else` (#593) + - Add `min_set`, `max_set` et al. (#613, #323) + - Use `either/use_std` (#628) + - Documentation fixes (#612, #625, #632, #633, #634, #638) + - Code maintenance (#623, #624, #627, #630) + +## 0.10.2 + - Add `Itertools::multiunzip` (#362, #565) + - Add `intersperse` and `intersperse_with` free functions (#555) + - Add `Itertools::sorted_by_cached_key` (#424, #575) + - Specialize `ProcessResults::fold` (#563) + - Fix subtraction overflow in `DuplicatesBy::size_hint` (#552) + - Fix specialization tests (#574) + - More `Debug` impls (#573) + - Deprecate `fold1` (use `reduce` instead) (#580) + - Documentation fixes (`HomogenousTuple`, `into_group_map`, `into_group_map_by`, `MultiPeek::peek`) (#543 et al.) + +## 0.10.1 + - Add `Itertools::contains` (#514) + - Add `Itertools::counts_by` (#515) + - Add `Itertools::partition_result` (#511) + - Add `Itertools::all_unique` (#241) + - Add `Itertools::duplicates` and `Itertools::duplicates_by` (#502) + - Add `chain!` (#525) + - Add `Itertools::at_most_one` (#523) + - Add `Itertools::flatten_ok` (#527) + - Add `EitherOrBoth::or_default` (#583) + - Add `Itertools::find_or_last` and `Itertools::find_or_first` (#535) + - Implement `FusedIterator` for `FilterOk`, `FilterMapOk`, `InterleaveShortest`, `KMergeBy`, `MergeBy`, `PadUsing`, `Positions`, `Product` , `RcIter`, `TupleWindows`, `Unique`, `UniqueBy`, `Update`, `WhileSome`, `Combinations`, `CombinationsWithReplacement`, `Powerset`, `RepeatN`, and `WithPosition` (#550) + - Implement `FusedIterator` for `Interleave`, `IntersperseWith`, and `ZipLongest` (#548) + +## 0.10.0 + - **Increase minimum supported Rust version to 1.32.0** + - Improve macro hygiene (#507) + - Add `Itertools::powerset` (#335) + - Add `Itertools::sorted_unstable`, `Itertools::sorted_unstable_by`, and `Itertools::sorted_unstable_by_key` (#494) + - Implement `Error` for `ExactlyOneError` (#484) + - Undeprecate `Itertools::fold_while` (#476) + - Tuple-related adapters work for tuples of arity up to 12 (#475) + - `use_alloc` feature for users who have `alloc`, but not `std` (#474) + - Add `Itertools::k_smallest` (#473) + - Add `Itertools::into_grouping_map` and `GroupingMap` (#465) + - Add `Itertools::into_grouping_map_by` and `GroupingMapBy` (#465) + - Add `Itertools::counts` (#468) + - Add implementation of `DoubleEndedIterator` for `Unique` (#442) + - Add implementation of `DoubleEndedIterator` for `UniqueBy` (#442) + - Add implementation of `DoubleEndedIterator` for `Zip` (#346) + - Add `Itertools::multipeek` (#435) + - Add `Itertools::dedup_with_count` and `DedupWithCount` (#423) + - Add `Itertools::dedup_by_with_count` and `DedupByWithCount` (#423) + - Add `Itertools::intersperse_with` and `IntersperseWith` (#381) + - Add `Itertools::filter_ok` and `FilterOk` (#377) + - Add `Itertools::filter_map_ok` and `FilterMapOk` (#377) + - Deprecate `Itertools::fold_results`, use `Itertools::fold_ok` instead (#377) + - Deprecate `Itertools::map_results`, use `Itertools::map_ok` instead (#377) + - Deprecate `FoldResults`, use `FoldOk` instead (#377) + - Deprecate `MapResults`, use `MapOk` instead (#377) + - Add `Itertools::circular_tuple_windows` and `CircularTupleWindows` (#350) + - Add `peek_nth` and `PeekNth` (#303) + +## 0.9.0 + - Fix potential overflow in `MergeJoinBy::size_hint` (#385) + - Add `derive(Clone)` where possible (#382) + - Add `try_collect` method (#394) + - Add `HomogeneousTuple` trait (#389) + - Fix `combinations(0)` and `combinations_with_replacement(0)` (#383) + - Don't require `ParitalEq` to the `Item` of `DedupBy` (#397) + - Implement missing specializations on the `PutBack` adaptor and on the `MergeJoinBy` iterator (#372) + - Add `position_*` methods (#412) + - Derive `Hash` for `EitherOrBoth` (#417) + - Increase minimum supported Rust version to 1.32.0 + +## 0.8.2 + - Use `slice::iter` instead of `into_iter` to avoid future breakage (#378, by @LukasKalbertodt) +## 0.8.1 + - Added a [`.exactly_one()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.exactly_one) iterator method that, on success, extracts the single value of an iterator ; by @Xaeroxe + - Added combinatory iterator adaptors: + - [`.permutations(k)`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.permutations): + + `[0, 1, 2].iter().permutations(2)` yields + + ```rust + [ + vec![0, 1], + vec![0, 2], + vec![1, 0], + vec![1, 2], + vec![2, 0], + vec![2, 1], + ] + ``` + + ; by @tobz1000 + + - [`.combinations_with_replacement(k)`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.combinations_with_replacement): + + `[0, 1, 2].iter().combinations_with_replacement(2)` yields + + ```rust + [ + vec![0, 0], + vec![0, 1], + vec![0, 2], + vec![1, 1], + vec![1, 2], + vec![2, 2], + ] + ``` + + ; by @tommilligan + + - For reference, these methods join the already existing [`.combinations(k)`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.combinations): + + `[0, 1, 2].iter().combinations(2)` yields + + ```rust + [ + vec![0, 1], + vec![0, 2], + vec![1, 2], + ] + ``` + + - Improved the performance of [`.fold()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.fold)-based internal iteration for the [`.intersperse()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.intersperse) iterator ; by @jswrenn + - Added [`.dedup_by()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.dedup_by), [`.merge_by()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.merge_by) and [`.kmerge_by()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.kmerge_by) adaptors that work like [`.dedup()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.dedup), [`.merge()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.merge) and [`.kmerge()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.kmerge), but taking an additional custom comparison closure parameter. ; by @phimuemue + - Improved the performance of [`.all_equal()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.all_equal) ; by @fyrchik + - Loosened the bounds on [`.partition_map()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.partition_map) to take just a `FnMut` closure rather than a `Fn` closure, and made its implementation use internal iteration for better performance ; by @danielhenrymantilla + - Added convenience methods to [`EitherOrBoth`](https://docs.rs/itertools/0.8.1/itertools/enum.EitherOrBoth.html) elements yielded from the [`.zip_longest()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.zip_longest) iterator adaptor ; by @Avi-D-coder + - Added [`.sum1()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.sum1) and [`.product1()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.product1) iterator methods that respectively try to return the sum and the product of the elements of an iterator **when it is not empty**, otherwise they return `None` ; by @Emerentius +## 0.8.0 + - Added new adaptor `.map_into()` for conversions using `Into` by @vorner + - Improved `Itertools` docs by @JohnHeitmann + - The return type of `.sorted_by_by_key()` is now an iterator, not a Vec. + - The return type of the `izip!(x, y)` macro with exactly two arguments is now the usual `Iterator::zip`. + - Remove `.flatten()` in favour of std's `.flatten()` + - Deprecate `.foreach()` in favour of std's `.for_each()` + - Deprecate `.step()` in favour of std's `.step_by()` + - Deprecate `repeat_call` in favour of std's `repeat_with` + - Deprecate `.fold_while()` in favour of std's `.try_fold()` + - Require Rust 1.24 as minimal version. +## 0.7.11 + - Add convenience methods to `EitherOrBoth`, making it more similar to `Option` and `Either` by @jethrogb +## 0.7.10 + - No changes. +## 0.7.9 + - New inclusion policy: See the readme about suggesting features for std before accepting them in itertools. + - The `FoldWhile` type now implements `Eq` and `PartialEq` by @jturner314 +## 0.7.8 + - Add new iterator method `.tree_fold1()` which is like `.fold1()` except items are combined in a tree structure (see its docs). By @scottmcm + - Add more `Debug` impls by @phimuemue: KMerge, KMergeBy, MergeJoinBy, ConsTuples, Intersperse, ProcessResults, RcIter, Tee, TupleWindows, Tee, ZipLongest, ZipEq, Zip. +## 0.7.7 + - Add new iterator method `.into_group_map() -> HashMap>` which turns an iterator of `(K, V)` elements into such a hash table, where values are grouped by key. By @tobz1000 + - Add new free function `flatten` for the `.flatten()` adaptor. **NOTE:** recent Rust nightlies have `Iterator::flatten` and thus a clash with our flatten adaptor. One workaround is to use the itertools `flatten` free function. +## 0.7.6 + - Add new adaptor `.multi_cartesian_product()` which is an n-ary product iterator by @tobz1000 + - Add new method `.sorted_by_key()` by @Xion + - Provide simpler and faster `.count()` for `.unique()` and `.unique_by()` +## 0.7.5 + - `.multipeek()` now implements `PeekingNext`, by @nicopap. +## 0.7.4 + - Add new adaptor `.update()` by @lucasem; this adaptor is used to modify an element before passing it on in an iterator chain. +## 0.7.3 + - Add new method `.collect_tuple()` by @matklad; it makes a tuple out of the iterator's elements if the number of them matches **exactly**. + - Implement `fold` and `collect` for `.map_results()` which means it reuses the code of the standard `.map()` for these methods. +## 0.7.2 + - Add new adaptor `.merge_join_by` by @srijs; a heterogeneous merge join for two ordered sequences. +## 0.7.1 + - Iterator adaptors and iterators in itertools now use the same `must_use` reminder that the standard library adaptors do, by @matematikaedit and @bluss *“iterator adaptors are lazy and do nothing unless consumedâ€*. +## 0.7.0 + - Faster `izip!()` by @krdln + - `izip!()` is now a wrapper for repeated regular `.zip()` and a single `.map()`. This means it optimizes as well as the standard library `.zip()` it uses. **Note:** `multizip` and `izip!()` are now different! The former has a named type but the latter optimizes better. + - Faster `.unique()` + - `no_std` support, which is opt-in! + - Many lovable features are still there without std, like `izip!()` or `.format()` or `.merge()`, but not those that use collections. + - Trait bounds were required up front instead of just on the type: `group_by`'s `PartialEq` by @Phlosioneer and `repeat_call`'s `FnMut`. + - Removed deprecated constructor `Zip::new` — use `izip!()` or `multizip()` +## 0.6.5 + - Fix bug in `.cartesian_product()`'s fold (which only was visible for unfused iterators). +## 0.6.4 + - Add specific `fold` implementations for `.cartesian_product()` and `cons_tuples()`, which improves their performance in fold, foreach, and iterator consumers derived from them. +## 0.6.3 + - Add iterator adaptor `.positions(predicate)` by @tmccombs +## 0.6.2 + - Add function `process_results` which can “lift†a function of the regular values of an iterator so that it can process the `Ok` values from an iterator of `Results` instead, by @shepmaster + - Add iterator method `.concat()` which combines all iterator elements into a single collection using the `Extend` trait, by @srijs +## 0.6.1 + - Better size hint testing and subsequent size hint bugfixes by @rkarp. Fixes bugs in product, `interleave_shortest` size hints. + - New iterator method `.all_equal()` by @phimuemue +## 0.6.0 + - Deprecated names were removed in favour of their replacements + - `.flatten()` does not implement double ended iteration anymore + - `.fold_while()` uses `&mut self` and returns `FoldWhile`, for composability #168 + - `.foreach()` and `.fold1()` use `self`, like `.fold()` does. + - `.combinations(0)` now produces a single empty vector. #174 +## 0.5.10 + - Add itertools method `.kmerge_by()` (and corresponding free function) + - Relaxed trait requirement of `.kmerge()` and `.minmax()` to PartialOrd. +## 0.5.9 + - Add multipeek method `.reset_peek()` + - Add categories +## 0.5.8 + - Add iterator adaptor `.peeking_take_while()` and its trait `PeekingNext`. +## 0.5.7 + - Add iterator adaptor `.with_position()` + - Fix multipeek's performance for long peeks by using `VecDeque`. +## 0.5.6 + - Add `.map_results()` +## 0.5.5 + - Many more adaptors now implement `Debug` + - Add free function constructor `repeat_n`. `RepeatN::new` is now deprecated. +## 0.5.4 + - Add infinite generator function `iterate`, that takes a seed and a closure. +## 0.5.3 + - Special-cased `.fold()` for flatten and put back. `.foreach()` now uses fold on the iterator, to pick up any iterator specific loop implementation. + - `.combinations(n)` asserts up front that `n != 0`, instead of running into an error on the second iterator element. +## 0.5.2 + - Add `.tuples::()` that iterates by two, three or four elements at a time (where `T` is a tuple type). + - Add `.tuple_windows::()` that iterates using a window of the two, three or four most recent elements. + - Add `.next_tuple::()` method, that picks the next two, three or four elements in one go. + - `.interleave()` now has an accurate size hint. +## 0.5.1 + - Workaround module/function name clash that made racer crash on completing itertools. Only internal changes needed. +## 0.5.0 + - [Release announcement](https://bluss.github.io/rust/2016/09/26/itertools-0.5.0/) + - Renamed: + - `combinations` is now `tuple_combinations` + - `combinations_n` to `combinations` + - `group_by_lazy`, `chunks_lazy` to `group_by`, `chunks` + - `Unfold::new` to `unfold()` + - `RepeatCall::new` to `repeat_call()` + - `Zip::new` to `multizip` + - `PutBack::new`, `PutBackN::new` to `put_back`, `put_back_n` + - `PutBack::with_value` is now a builder setter, not a constructor + - `MultiPeek::new`, `.multipeek()` to `multipeek()` + - `format` to `format_with` and `format_default` to `format` + - `.into_rc()` to `rciter` + - `Partition` enum is now `Either` + - Module reorganization: + - All iterator structs are under `itertools::structs` but also reexported to the top level, for backwards compatibility + - All free functions are reexported at the root, `itertools::free` will be removed in the next version + - Removed: + - `ZipSlices`, use `.zip()` instead + - `.enumerate_from()`, `ZipTrusted`, due to being unstable + - `.mend_slices()`, moved to crate `odds` + - Stride, StrideMut, moved to crate `odds` + - `linspace()`, moved to crate `itertools-num` + - `.sort_by()`, use `.sorted_by()` + - `.is_empty_hint()`, use `.size_hint()` + - `.dropn()`, use `.dropping()` + - `.map_fn()`, use `.map()` + - `.slice()`, use `.take()` / `.skip()` + - helper traits in `misc` + - `new` constructors on iterator structs, use `Itertools` trait or free functions instead + - `itertools::size_hint` is now private + - Behaviour changes: + - `format` and `format_with` helpers now panic if you try to format them more than once. + - `repeat_call` is not double ended anymore + - New features: + - tuple flattening iterator is constructible with `cons_tuples` + - itertools reexports `Either` from the `either` crate. `Either` is an iterator when `L, R` are. + - `MinMaxResult` now implements `Copy` and `Clone` + - `tuple_combinations` supports 1-4 tuples of combinations (previously just 2) +## 0.4.19 + - Add `.minmax_by()` + - Add `itertools::free::cloned` + - Add `itertools::free::rciter` + - Improve `.step(n)` slightly to take advantage of specialized Fuse better. +## 0.4.18 + - Only changes related to the "unstable" crate feature. This feature is more or less deprecated. + - Use deprecated warnings when unstable is enabled. `.enumerate_from()` will be removed imminently since it's using a deprecated libstd trait. +## 0.4.17 + - Fix bug in `.kmerge()` that caused it to often produce the wrong order #134 +## 0.4.16 + - Improve precision of the `interleave_shortest` adaptor's size hint (it is now computed exactly when possible). +## 0.4.15 + - Fixup on top of the workaround in 0.4.14. A function in `itertools::free` was removed by mistake and now it is added back again. +## 0.4.14 + - Workaround an upstream regression in a Rust nightly build that broke compilation of of `itertools::free::{interleave, merge}` +## 0.4.13 + - Add `.minmax()` and `.minmax_by_key()`, iterator methods for finding both minimum and maximum in one scan. + - Add `.format_default()`, a simpler version of `.format()` (lazy formatting for iterators). +## 0.4.12 + - Add `.zip_eq()`, an adaptor like `.zip()` except it ensures iterators of inequal length don't pass silently (instead it panics). + - Add `.fold_while()`, an iterator method that is a fold that can short-circuit. + - Add `.partition_map()`, an iterator method that can separate elements into two collections. +## 0.4.11 + - Add `.get()` for `Stride{,Mut}` and `.get_mut()` for `StrideMut` +## 0.4.10 + - Improve performance of `.kmerge()` +## 0.4.9 + - Add k-ary merge adaptor `.kmerge()` + - Fix a bug in `.islice()` with ranges `a..b` where a `> b`. +## 0.4.8 + - Implement `Clone`, `Debug` for `Linspace` +## 0.4.7 + - Add function `diff_with()` that compares two iterators + - Add `.combinations_n()`, an n-ary combinations iterator + - Add methods `PutBack::with_value` and `PutBack::into_parts`. +## 0.4.6 + - Add method `.sorted()` + - Add module `itertools::free` with free function variants of common iterator adaptors and methods. For example `enumerate(iterable)`, `rev(iterable)`, and so on. +## 0.4.5 + - Add `.flatten()` +## 0.4.4 + - Allow composing `ZipSlices` with itself +## 0.4.3 + - Write `iproduct!()` as a single expression; this allows temporary values in its arguments. +## 0.4.2 + - Add `.fold_options()` + - Require Rust 1.1 or later +## 0.4.1 + - Update `.dropping()` to take advantage of `.nth()` +## 0.4.0 + - `.merge()`, `.unique()` and `.dedup()` now perform better due to not using function pointers + - Add free functions `enumerate()` and `rev()` + - Breaking changes: + - Return types of `.merge()` and `.merge_by()` renamed and changed + - Method `Merge::new` removed + - `.merge_by()` now takes a closure that returns bool. + - Return type of `.dedup()` changed + - Return type of `.mend_slices()` changed + - Return type of `.unique()` changed + - Removed function `times()`, struct `Times`: use a range instead + - Removed deprecated macro `icompr!()` + - Removed deprecated `FnMap` and method `.fn_map()`: use `.map_fn()` + - `.interleave_shortest()` is no longer guaranteed to act like fused +## 0.3.25 + - Rename `.sort_by()` to `.sorted_by()`. Old name is deprecated. + - Fix well-formedness warnings from RFC 1214, no user visible impact +## 0.3.24 + - Improve performance of `.merge()`'s ordering function slightly +## 0.3.23 + - Added `.chunks()`, similar to (and based on) `.group_by_lazy()`. + - Tweak linspace to match numpy.linspace and make it double ended. +## 0.3.22 + - Added `ZipSlices`, a fast zip for slices +## 0.3.21 + - Remove `Debug` impl for `Format`, it will have different use later +## 0.3.20 + - Optimize `.group_by_lazy()` +## 0.3.19 + - Added `.group_by_lazy()`, a possibly nonallocating group by + - Added `.format()`, a nonallocating formatting helper for iterators + - Remove uses of `RandomAccessIterator` since it has been deprecated in Rust. +## 0.3.17 + - Added (adopted) `Unfold` from Rust +## 0.3.16 + - Added adaptors `.unique()`, `.unique_by()` +## 0.3.15 + - Added method `.sort_by()` +## 0.3.14 + - Added adaptor `.while_some()` +## 0.3.13 + - Added adaptor `.interleave_shortest()` + - Added adaptor `.pad_using()` +## 0.3.11 + - Added `assert_equal` function +## 0.3.10 + - Bugfix `.combinations()` `size_hint`. +## 0.3.8 + - Added source `RepeatCall` +## 0.3.7 + - Added adaptor `PutBackN` + - Added adaptor `.combinations()` +## 0.3.6 + - Added `itertools::partition`, partition a sequence in place based on a predicate. + - Deprecate `icompr!()` with no replacement. +## 0.3.5 + - `.map_fn()` replaces deprecated `.fn_map()`. +## 0.3.4 + - `.take_while_ref()` *by-ref adaptor* + - `.coalesce()` *adaptor* + - `.mend_slices()` *adaptor* +## 0.3.3 + - `.dropping_back()` *method* + - `.fold1()` *method* + - `.is_empty_hint()` *method* diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/clippy.toml temporalio-1.3.0/vendor/itertools-0.10.5/clippy.toml --- temporalio-1.3.0/vendor/itertools-0.10.5/clippy.toml 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/clippy.toml 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +msrv = "1.36.0" diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/examples/iris.data temporalio-1.3.0/vendor/itertools-0.10.5/examples/iris.data --- temporalio-1.3.0/vendor/itertools-0.10.5/examples/iris.data 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/examples/iris.data 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,150 @@ +5.1,3.5,1.4,0.2,Iris-setosa +4.9,3.0,1.4,0.2,Iris-setosa +4.7,3.2,1.3,0.2,Iris-setosa +4.6,3.1,1.5,0.2,Iris-setosa +5.0,3.6,1.4,0.2,Iris-setosa +5.4,3.9,1.7,0.4,Iris-setosa +4.6,3.4,1.4,0.3,Iris-setosa +5.0,3.4,1.5,0.2,Iris-setosa +4.4,2.9,1.4,0.2,Iris-setosa +4.9,3.1,1.5,0.1,Iris-setosa +5.4,3.7,1.5,0.2,Iris-setosa +4.8,3.4,1.6,0.2,Iris-setosa +4.8,3.0,1.4,0.1,Iris-setosa +4.3,3.0,1.1,0.1,Iris-setosa +5.8,4.0,1.2,0.2,Iris-setosa +5.7,4.4,1.5,0.4,Iris-setosa +5.4,3.9,1.3,0.4,Iris-setosa +5.1,3.5,1.4,0.3,Iris-setosa +5.7,3.8,1.7,0.3,Iris-setosa +5.1,3.8,1.5,0.3,Iris-setosa +5.4,3.4,1.7,0.2,Iris-setosa +5.1,3.7,1.5,0.4,Iris-setosa +4.6,3.6,1.0,0.2,Iris-setosa +5.1,3.3,1.7,0.5,Iris-setosa +4.8,3.4,1.9,0.2,Iris-setosa +5.0,3.0,1.6,0.2,Iris-setosa +5.0,3.4,1.6,0.4,Iris-setosa +5.2,3.5,1.5,0.2,Iris-setosa +5.2,3.4,1.4,0.2,Iris-setosa +4.7,3.2,1.6,0.2,Iris-setosa +4.8,3.1,1.6,0.2,Iris-setosa +5.4,3.4,1.5,0.4,Iris-setosa +5.2,4.1,1.5,0.1,Iris-setosa +5.5,4.2,1.4,0.2,Iris-setosa +4.9,3.1,1.5,0.1,Iris-setosa +5.0,3.2,1.2,0.2,Iris-setosa +5.5,3.5,1.3,0.2,Iris-setosa +4.9,3.1,1.5,0.1,Iris-setosa +4.4,3.0,1.3,0.2,Iris-setosa +5.1,3.4,1.5,0.2,Iris-setosa +5.0,3.5,1.3,0.3,Iris-setosa +4.5,2.3,1.3,0.3,Iris-setosa +4.4,3.2,1.3,0.2,Iris-setosa +5.0,3.5,1.6,0.6,Iris-setosa +5.1,3.8,1.9,0.4,Iris-setosa +4.8,3.0,1.4,0.3,Iris-setosa +5.1,3.8,1.6,0.2,Iris-setosa +4.6,3.2,1.4,0.2,Iris-setosa +5.3,3.7,1.5,0.2,Iris-setosa +5.0,3.3,1.4,0.2,Iris-setosa +7.0,3.2,4.7,1.4,Iris-versicolor +6.4,3.2,4.5,1.5,Iris-versicolor +6.9,3.1,4.9,1.5,Iris-versicolor +5.5,2.3,4.0,1.3,Iris-versicolor +6.5,2.8,4.6,1.5,Iris-versicolor +5.7,2.8,4.5,1.3,Iris-versicolor +6.3,3.3,4.7,1.6,Iris-versicolor +4.9,2.4,3.3,1.0,Iris-versicolor +6.6,2.9,4.6,1.3,Iris-versicolor +5.2,2.7,3.9,1.4,Iris-versicolor +5.0,2.0,3.5,1.0,Iris-versicolor +5.9,3.0,4.2,1.5,Iris-versicolor +6.0,2.2,4.0,1.0,Iris-versicolor +6.1,2.9,4.7,1.4,Iris-versicolor +5.6,2.9,3.6,1.3,Iris-versicolor +6.7,3.1,4.4,1.4,Iris-versicolor +5.6,3.0,4.5,1.5,Iris-versicolor +5.8,2.7,4.1,1.0,Iris-versicolor +6.2,2.2,4.5,1.5,Iris-versicolor +5.6,2.5,3.9,1.1,Iris-versicolor +5.9,3.2,4.8,1.8,Iris-versicolor +6.1,2.8,4.0,1.3,Iris-versicolor +6.3,2.5,4.9,1.5,Iris-versicolor +6.1,2.8,4.7,1.2,Iris-versicolor +6.4,2.9,4.3,1.3,Iris-versicolor +6.6,3.0,4.4,1.4,Iris-versicolor +6.8,2.8,4.8,1.4,Iris-versicolor +6.7,3.0,5.0,1.7,Iris-versicolor +6.0,2.9,4.5,1.5,Iris-versicolor +5.7,2.6,3.5,1.0,Iris-versicolor +5.5,2.4,3.8,1.1,Iris-versicolor +5.5,2.4,3.7,1.0,Iris-versicolor +5.8,2.7,3.9,1.2,Iris-versicolor +6.0,2.7,5.1,1.6,Iris-versicolor +5.4,3.0,4.5,1.5,Iris-versicolor +6.0,3.4,4.5,1.6,Iris-versicolor +6.7,3.1,4.7,1.5,Iris-versicolor +6.3,2.3,4.4,1.3,Iris-versicolor +5.6,3.0,4.1,1.3,Iris-versicolor +5.5,2.5,4.0,1.3,Iris-versicolor +5.5,2.6,4.4,1.2,Iris-versicolor +6.1,3.0,4.6,1.4,Iris-versicolor +5.8,2.6,4.0,1.2,Iris-versicolor +5.0,2.3,3.3,1.0,Iris-versicolor +5.6,2.7,4.2,1.3,Iris-versicolor +5.7,3.0,4.2,1.2,Iris-versicolor +5.7,2.9,4.2,1.3,Iris-versicolor +6.2,2.9,4.3,1.3,Iris-versicolor +5.1,2.5,3.0,1.1,Iris-versicolor +5.7,2.8,4.1,1.3,Iris-versicolor +6.3,3.3,6.0,2.5,Iris-virginica +5.8,2.7,5.1,1.9,Iris-virginica +7.1,3.0,5.9,2.1,Iris-virginica +6.3,2.9,5.6,1.8,Iris-virginica +6.5,3.0,5.8,2.2,Iris-virginica +7.6,3.0,6.6,2.1,Iris-virginica +4.9,2.5,4.5,1.7,Iris-virginica +7.3,2.9,6.3,1.8,Iris-virginica +6.7,2.5,5.8,1.8,Iris-virginica +7.2,3.6,6.1,2.5,Iris-virginica +6.5,3.2,5.1,2.0,Iris-virginica +6.4,2.7,5.3,1.9,Iris-virginica +6.8,3.0,5.5,2.1,Iris-virginica +5.7,2.5,5.0,2.0,Iris-virginica +5.8,2.8,5.1,2.4,Iris-virginica +6.4,3.2,5.3,2.3,Iris-virginica +6.5,3.0,5.5,1.8,Iris-virginica +7.7,3.8,6.7,2.2,Iris-virginica +7.7,2.6,6.9,2.3,Iris-virginica +6.0,2.2,5.0,1.5,Iris-virginica +6.9,3.2,5.7,2.3,Iris-virginica +5.6,2.8,4.9,2.0,Iris-virginica +7.7,2.8,6.7,2.0,Iris-virginica +6.3,2.7,4.9,1.8,Iris-virginica +6.7,3.3,5.7,2.1,Iris-virginica +7.2,3.2,6.0,1.8,Iris-virginica +6.2,2.8,4.8,1.8,Iris-virginica +6.1,3.0,4.9,1.8,Iris-virginica +6.4,2.8,5.6,2.1,Iris-virginica +7.2,3.0,5.8,1.6,Iris-virginica +7.4,2.8,6.1,1.9,Iris-virginica +7.9,3.8,6.4,2.0,Iris-virginica +6.4,2.8,5.6,2.2,Iris-virginica +6.3,2.8,5.1,1.5,Iris-virginica +6.1,2.6,5.6,1.4,Iris-virginica +7.7,3.0,6.1,2.3,Iris-virginica +6.3,3.4,5.6,2.4,Iris-virginica +6.4,3.1,5.5,1.8,Iris-virginica +6.0,3.0,4.8,1.8,Iris-virginica +6.9,3.1,5.4,2.1,Iris-virginica +6.7,3.1,5.6,2.4,Iris-virginica +6.9,3.1,5.1,2.3,Iris-virginica +5.8,2.7,5.1,1.9,Iris-virginica +6.8,3.2,5.9,2.3,Iris-virginica +6.7,3.3,5.7,2.5,Iris-virginica +6.7,3.0,5.2,2.3,Iris-virginica +6.3,2.5,5.0,1.9,Iris-virginica +6.5,3.0,5.2,2.0,Iris-virginica +6.2,3.4,5.4,2.3,Iris-virginica +5.9,3.0,5.1,1.8,Iris-virginica diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/examples/iris.rs temporalio-1.3.0/vendor/itertools-0.10.5/examples/iris.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/examples/iris.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/examples/iris.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,137 @@ +/// +/// This example parses, sorts and groups the iris dataset +/// and does some simple manipulations. +/// +/// Iterators and itertools functionality are used throughout. + +use itertools::Itertools; +use std::collections::HashMap; +use std::iter::repeat; +use std::num::ParseFloatError; +use std::str::FromStr; + +static DATA: &'static str = include_str!("iris.data"); + +#[derive(Clone, Debug)] +struct Iris { + name: String, + data: [f32; 4], +} + +#[derive(Clone, Debug)] +enum ParseError { + Numeric(ParseFloatError), + Other(&'static str), +} + +impl From for ParseError { + fn from(err: ParseFloatError) -> Self { + ParseError::Numeric(err) + } +} + +/// Parse an Iris from a comma-separated line +impl FromStr for Iris { + type Err = ParseError; + + fn from_str(s: &str) -> Result { + let mut iris = Iris { name: "".into(), data: [0.; 4] }; + let mut parts = s.split(",").map(str::trim); + + // using Iterator::by_ref() + for (index, part) in parts.by_ref().take(4).enumerate() { + iris.data[index] = part.parse::()?; + } + if let Some(name) = parts.next() { + iris.name = name.into(); + } else { + return Err(ParseError::Other("Missing name")) + } + Ok(iris) + } +} + +fn main() { + // using Itertools::fold_results to create the result of parsing + let irises = DATA.lines() + .map(str::parse) + .fold_ok(Vec::new(), |mut v, iris: Iris| { + v.push(iris); + v + }); + let mut irises = match irises { + Err(e) => { + println!("Error parsing: {:?}", e); + std::process::exit(1); + } + Ok(data) => data, + }; + + // Sort them and group them + irises.sort_by(|a, b| Ord::cmp(&a.name, &b.name)); + + // using Iterator::cycle() + let mut plot_symbols = "+ox".chars().cycle(); + let mut symbolmap = HashMap::new(); + + // using Itertools::group_by + for (species, species_group) in &irises.iter().group_by(|iris| &iris.name) { + // assign a plot symbol + symbolmap.entry(species).or_insert_with(|| { + plot_symbols.next().unwrap() + }); + println!("{} (symbol={})", species, symbolmap[species]); + + for iris in species_group { + // using Itertools::format for lazy formatting + println!("{:>3.1}", iris.data.iter().format(", ")); + } + + } + + // Look at all combinations of the four columns + // + // See https://en.wikipedia.org/wiki/Iris_flower_data_set + // + let n = 30; // plot size + let mut plot = vec![' '; n * n]; + + // using Itertools::tuple_combinations + for (a, b) in (0..4).tuple_combinations() { + println!("Column {} vs {}:", a, b); + + // Clear plot + // + // using std::iter::repeat; + // using Itertools::set_from + plot.iter_mut().set_from(repeat(' ')); + + // using Itertools::minmax + let min_max = |data: &[Iris], col| { + data.iter() + .map(|iris| iris.data[col]) + .minmax() + .into_option() + .expect("Can't find min/max of empty iterator") + }; + let (min_x, max_x) = min_max(&irises, a); + let (min_y, max_y) = min_max(&irises, b); + + // Plot the data points + let round_to_grid = |x, min, max| ((x - min) / (max - min) * ((n - 1) as f32)) as usize; + let flip = |ix| n - 1 - ix; // reverse axis direction + + for iris in &irises { + let ix = round_to_grid(iris.data[a], min_x, max_x); + let iy = flip(round_to_grid(iris.data[b], min_y, max_y)); + plot[n * iy + ix] = symbolmap[&iris.name]; + } + + // render plot + // + // using Itertools::join + for line in plot.chunks(n) { + println!("{}", line.iter().join(" ")) + } + } +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/LICENSE-APACHE temporalio-1.3.0/vendor/itertools-0.10.5/LICENSE-APACHE --- temporalio-1.3.0/vendor/itertools-0.10.5/LICENSE-APACHE 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/LICENSE-APACHE 2023-10-30 19:40:00.000000000 +0000 @@ -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 -Nru temporalio-1.3.0/vendor/itertools-0.10.5/LICENSE-MIT temporalio-1.3.0/vendor/itertools-0.10.5/LICENSE-MIT --- temporalio-1.3.0/vendor/itertools-0.10.5/LICENSE-MIT 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/LICENSE-MIT 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,25 @@ +Copyright (c) 2015 + +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 -Nru temporalio-1.3.0/vendor/itertools-0.10.5/README.md temporalio-1.3.0/vendor/itertools-0.10.5/README.md --- temporalio-1.3.0/vendor/itertools-0.10.5/README.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,44 @@ +# Itertools + +Extra iterator adaptors, functions and macros. + +Please read the [API documentation here](https://docs.rs/itertools/). + +[![build_status](https://github.com/rust-itertools/itertools/actions/workflows/ci.yml/badge.svg)](https://github.com/rust-itertools/itertools/actions) +[![crates.io](https://img.shields.io/crates/v/itertools.svg)](https://crates.io/crates/itertools) + +How to use with Cargo: + +```toml +[dependencies] +itertools = "0.10.5" +``` + +How to use in your crate: + +```rust +use itertools::Itertools; +``` + +## How to contribute + +- Fix a bug or implement a new thing +- Include tests for your new feature, preferably a QuickCheck test +- Make a Pull Request + +For new features, please first consider filing a PR to [rust-lang/rust](https://github.com/rust-lang/rust), +adding your new feature to the `Iterator` trait of the standard library, if you believe it is reasonable. +If it isn't accepted there, proposing it for inclusion in ``itertools`` is a good idea. +The reason for doing is this is so that we avoid future breakage as with ``.flatten()``. +However, if your feature involves heap allocation, such as storing elements in a ``Vec``, +then it can't be accepted into ``libcore``, and you should propose it for ``itertools`` directly instead. + +## License + +Dual-licensed to be compatible with the Rust project. + +Licensed under the Apache License, Version 2.0 +https://www.apache.org/licenses/LICENSE-2.0 or the MIT license +https://opensource.org/licenses/MIT, at your +option. This file may not be copied, modified, or distributed +except according to those terms. diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/adaptors/coalesce.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/adaptors/coalesce.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/adaptors/coalesce.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/adaptors/coalesce.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,235 @@ +use std::fmt; +use std::iter::FusedIterator; + +use crate::size_hint; + +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct CoalesceBy +where + I: Iterator, +{ + iter: I, + last: Option, + f: F, +} + +impl Clone for CoalesceBy +where + I: Iterator, +{ + clone_fields!(last, iter, f); +} + +impl fmt::Debug for CoalesceBy +where + I: Iterator + fmt::Debug, + T: fmt::Debug, +{ + debug_fmt_fields!(CoalesceBy, iter); +} + +pub trait CoalescePredicate { + fn coalesce_pair(&mut self, t: T, item: Item) -> Result; +} + +impl Iterator for CoalesceBy +where + I: Iterator, + F: CoalescePredicate, +{ + type Item = T; + + fn next(&mut self) -> Option { + // this fuses the iterator + let last = self.last.take()?; + + let self_last = &mut self.last; + let self_f = &mut self.f; + Some( + self.iter + .try_fold(last, |last, next| match self_f.coalesce_pair(last, next) { + Ok(joined) => Ok(joined), + Err((last_, next_)) => { + *self_last = Some(next_); + Err(last_) + } + }) + .unwrap_or_else(|x| x), + ) + } + + fn size_hint(&self) -> (usize, Option) { + let (low, hi) = size_hint::add_scalar(self.iter.size_hint(), self.last.is_some() as usize); + ((low > 0) as usize, hi) + } + + fn fold(self, acc: Acc, mut fn_acc: FnAcc) -> Acc + where + FnAcc: FnMut(Acc, Self::Item) -> Acc, + { + if let Some(last) = self.last { + let mut f = self.f; + let (last, acc) = self.iter.fold((last, acc), |(last, acc), elt| { + match f.coalesce_pair(last, elt) { + Ok(joined) => (joined, acc), + Err((last_, next_)) => (next_, fn_acc(acc, last_)), + } + }); + fn_acc(acc, last) + } else { + acc + } + } +} + +impl, T> FusedIterator for CoalesceBy {} + +/// An iterator adaptor that may join together adjacent elements. +/// +/// See [`.coalesce()`](crate::Itertools::coalesce) for more information. +pub type Coalesce = CoalesceBy::Item>; + +impl CoalescePredicate for F +where + F: FnMut(T, Item) -> Result, +{ + fn coalesce_pair(&mut self, t: T, item: Item) -> Result { + self(t, item) + } +} + +/// Create a new `Coalesce`. +pub fn coalesce(mut iter: I, f: F) -> Coalesce +where + I: Iterator, +{ + Coalesce { + last: iter.next(), + iter, + f, + } +} + +/// An iterator adaptor that removes repeated duplicates, determining equality using a comparison function. +/// +/// See [`.dedup_by()`](crate::Itertools::dedup_by) or [`.dedup()`](crate::Itertools::dedup) for more information. +pub type DedupBy = CoalesceBy, ::Item>; + +#[derive(Clone)] +pub struct DedupPred2CoalescePred(DP); + +impl fmt::Debug for DedupPred2CoalescePred { + debug_fmt_fields!(DedupPred2CoalescePred,); +} + +pub trait DedupPredicate { + // TODO replace by Fn(&T, &T)->bool once Rust supports it + fn dedup_pair(&mut self, a: &T, b: &T) -> bool; +} + +impl CoalescePredicate for DedupPred2CoalescePred +where + DP: DedupPredicate, +{ + fn coalesce_pair(&mut self, t: T, item: T) -> Result { + if self.0.dedup_pair(&t, &item) { + Ok(t) + } else { + Err((t, item)) + } + } +} + +#[derive(Clone, Debug)] +pub struct DedupEq; + +impl DedupPredicate for DedupEq { + fn dedup_pair(&mut self, a: &T, b: &T) -> bool { + a == b + } +} + +impl bool> DedupPredicate for F { + fn dedup_pair(&mut self, a: &T, b: &T) -> bool { + self(a, b) + } +} + +/// Create a new `DedupBy`. +pub fn dedup_by(mut iter: I, dedup_pred: Pred) -> DedupBy +where + I: Iterator, +{ + DedupBy { + last: iter.next(), + iter, + f: DedupPred2CoalescePred(dedup_pred), + } +} + +/// An iterator adaptor that removes repeated duplicates. +/// +/// See [`.dedup()`](crate::Itertools::dedup) for more information. +pub type Dedup = DedupBy; + +/// Create a new `Dedup`. +pub fn dedup(iter: I) -> Dedup +where + I: Iterator, +{ + dedup_by(iter, DedupEq) +} + +/// An iterator adaptor that removes repeated duplicates, while keeping a count of how many +/// repeated elements were present. This will determine equality using a comparison function. +/// +/// See [`.dedup_by_with_count()`](crate::Itertools::dedup_by_with_count) or +/// [`.dedup_with_count()`](crate::Itertools::dedup_with_count) for more information. +pub type DedupByWithCount = + CoalesceBy, (usize, ::Item)>; + +#[derive(Clone, Debug)] +pub struct DedupPredWithCount2CoalescePred(DP); + +impl CoalescePredicate for DedupPredWithCount2CoalescePred +where + DP: DedupPredicate, +{ + fn coalesce_pair( + &mut self, + (c, t): (usize, T), + item: T, + ) -> Result<(usize, T), ((usize, T), (usize, T))> { + if self.0.dedup_pair(&t, &item) { + Ok((c + 1, t)) + } else { + Err(((c, t), (1, item))) + } + } +} + +/// An iterator adaptor that removes repeated duplicates, while keeping a count of how many +/// repeated elements were present. +/// +/// See [`.dedup_with_count()`](crate::Itertools::dedup_with_count) for more information. +pub type DedupWithCount = DedupByWithCount; + +/// Create a new `DedupByWithCount`. +pub fn dedup_by_with_count(mut iter: I, dedup_pred: Pred) -> DedupByWithCount +where + I: Iterator, +{ + DedupByWithCount { + last: iter.next().map(|v| (1, v)), + iter, + f: DedupPredWithCount2CoalescePred(dedup_pred), + } +} + +/// Create a new `DedupWithCount`. +pub fn dedup_with_count(iter: I) -> DedupWithCount +where + I: Iterator, +{ + dedup_by_with_count(iter, DedupEq) +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/adaptors/map.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/adaptors/map.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/adaptors/map.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/adaptors/map.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,124 @@ +use std::iter::FromIterator; +use std::marker::PhantomData; + +#[derive(Clone, Debug)] +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct MapSpecialCase { + iter: I, + f: F, +} + +pub trait MapSpecialCaseFn { + type Out; + fn call(&mut self, t: T) -> Self::Out; +} + +impl Iterator for MapSpecialCase +where + I: Iterator, + R: MapSpecialCaseFn, +{ + type Item = R::Out; + + fn next(&mut self) -> Option { + self.iter.next().map(|i| self.f.call(i)) + } + + fn size_hint(&self) -> (usize, Option) { + self.iter.size_hint() + } + + fn fold(self, init: Acc, mut fold_f: Fold) -> Acc + where + Fold: FnMut(Acc, Self::Item) -> Acc, + { + let mut f = self.f; + self.iter.fold(init, move |acc, v| fold_f(acc, f.call(v))) + } + + fn collect(self) -> C + where + C: FromIterator, + { + let mut f = self.f; + self.iter.map(move |v| f.call(v)).collect() + } +} + +impl DoubleEndedIterator for MapSpecialCase +where + I: DoubleEndedIterator, + R: MapSpecialCaseFn, +{ + fn next_back(&mut self) -> Option { + self.iter.next_back().map(|i| self.f.call(i)) + } +} + +impl ExactSizeIterator for MapSpecialCase +where + I: ExactSizeIterator, + R: MapSpecialCaseFn, +{ +} + +/// An iterator adapter to apply a transformation within a nested `Result::Ok`. +/// +/// See [`.map_ok()`](crate::Itertools::map_ok) for more information. +pub type MapOk = MapSpecialCase>; + +/// See [`MapOk`]. +#[deprecated(note = "Use MapOk instead", since = "0.10.0")] +pub type MapResults = MapOk; + +impl MapSpecialCaseFn> for MapSpecialCaseFnOk +where + F: FnMut(T) -> U, +{ + type Out = Result; + fn call(&mut self, t: Result) -> Self::Out { + t.map(|v| self.0(v)) + } +} + +#[derive(Clone)] +pub struct MapSpecialCaseFnOk(F); + +impl std::fmt::Debug for MapSpecialCaseFnOk { + debug_fmt_fields!(MapSpecialCaseFnOk,); +} + +/// Create a new `MapOk` iterator. +pub fn map_ok(iter: I, f: F) -> MapOk +where + I: Iterator>, + F: FnMut(T) -> U, +{ + MapSpecialCase { + iter, + f: MapSpecialCaseFnOk(f), + } +} + +/// An iterator adapter to apply `Into` conversion to each element. +/// +/// See [`.map_into()`](crate::Itertools::map_into) for more information. +pub type MapInto = MapSpecialCase>; + +impl, U> MapSpecialCaseFn for MapSpecialCaseFnInto { + type Out = U; + fn call(&mut self, t: T) -> Self::Out { + t.into() + } +} + +#[derive(Clone, Debug)] +pub struct MapSpecialCaseFnInto(PhantomData); + +/// Create a new [`MapInto`] iterator. +pub fn map_into(iter: I) -> MapInto { + MapSpecialCase { + iter, + f: MapSpecialCaseFnInto(PhantomData), + } +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/adaptors/mod.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/adaptors/mod.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/adaptors/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/adaptors/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1151 @@ +//! Licensed under the Apache License, Version 2.0 +//! or the MIT license +//! , at your +//! option. This file may not be copied, modified, or distributed +//! except according to those terms. + +mod coalesce; +mod map; +mod multi_product; +pub use self::coalesce::*; +pub use self::map::{map_into, map_ok, MapInto, MapOk}; +#[allow(deprecated)] +pub use self::map::MapResults; +#[cfg(feature = "use_alloc")] +pub use self::multi_product::*; + +use std::fmt; +use std::iter::{Fuse, Peekable, FromIterator, FusedIterator}; +use std::marker::PhantomData; +use crate::size_hint; + +/// An iterator adaptor that alternates elements from two iterators until both +/// run out. +/// +/// This iterator is *fused*. +/// +/// See [`.interleave()`](crate::Itertools::interleave) for more information. +#[derive(Clone, Debug)] +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct Interleave { + a: Fuse, + b: Fuse, + flag: bool, +} + +/// Create an iterator that interleaves elements in `i` and `j`. +/// +/// [`IntoIterator`] enabled version of `[Itertools::interleave]`. +pub fn interleave(i: I, j: J) -> Interleave<::IntoIter, ::IntoIter> + where I: IntoIterator, + J: IntoIterator +{ + Interleave { + a: i.into_iter().fuse(), + b: j.into_iter().fuse(), + flag: false, + } +} + +impl Iterator for Interleave + where I: Iterator, + J: Iterator +{ + type Item = I::Item; + #[inline] + fn next(&mut self) -> Option { + self.flag = !self.flag; + if self.flag { + match self.a.next() { + None => self.b.next(), + r => r, + } + } else { + match self.b.next() { + None => self.a.next(), + r => r, + } + } + } + + fn size_hint(&self) -> (usize, Option) { + size_hint::add(self.a.size_hint(), self.b.size_hint()) + } +} + +impl FusedIterator for Interleave + where I: Iterator, + J: Iterator +{} + +/// An iterator adaptor that alternates elements from the two iterators until +/// one of them runs out. +/// +/// This iterator is *fused*. +/// +/// See [`.interleave_shortest()`](crate::Itertools::interleave_shortest) +/// for more information. +#[derive(Clone, Debug)] +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct InterleaveShortest + where I: Iterator, + J: Iterator +{ + it0: I, + it1: J, + phase: bool, // false ==> it0, true ==> it1 +} + +/// Create a new `InterleaveShortest` iterator. +pub fn interleave_shortest(a: I, b: J) -> InterleaveShortest + where I: Iterator, + J: Iterator +{ + InterleaveShortest { + it0: a, + it1: b, + phase: false, + } +} + +impl Iterator for InterleaveShortest + where I: Iterator, + J: Iterator +{ + type Item = I::Item; + + #[inline] + fn next(&mut self) -> Option { + let e = if self.phase { self.it1.next() } else { self.it0.next() }; + if e.is_some() { + self.phase = !self.phase; + } + e + } + + #[inline] + fn size_hint(&self) -> (usize, Option) { + let (curr_hint, next_hint) = { + let it0_hint = self.it0.size_hint(); + let it1_hint = self.it1.size_hint(); + if self.phase { + (it1_hint, it0_hint) + } else { + (it0_hint, it1_hint) + } + }; + let (curr_lower, curr_upper) = curr_hint; + let (next_lower, next_upper) = next_hint; + let (combined_lower, combined_upper) = + size_hint::mul_scalar(size_hint::min(curr_hint, next_hint), 2); + let lower = + if curr_lower > next_lower { + combined_lower + 1 + } else { + combined_lower + }; + let upper = { + let extra_elem = match (curr_upper, next_upper) { + (_, None) => false, + (None, Some(_)) => true, + (Some(curr_max), Some(next_max)) => curr_max > next_max, + }; + if extra_elem { + combined_upper.and_then(|x| x.checked_add(1)) + } else { + combined_upper + } + }; + (lower, upper) + } +} + +impl FusedIterator for InterleaveShortest + where I: FusedIterator, + J: FusedIterator +{} + +#[derive(Clone, Debug)] +/// An iterator adaptor that allows putting back a single +/// item to the front of the iterator. +/// +/// Iterator element type is `I::Item`. +pub struct PutBack + where I: Iterator +{ + top: Option, + iter: I, +} + +/// Create an iterator where you can put back a single item +pub fn put_back(iterable: I) -> PutBack + where I: IntoIterator +{ + PutBack { + top: None, + iter: iterable.into_iter(), + } +} + +impl PutBack + where I: Iterator +{ + /// put back value `value` (builder method) + pub fn with_value(mut self, value: I::Item) -> Self { + self.put_back(value); + self + } + + /// Split the `PutBack` into its parts. + #[inline] + pub fn into_parts(self) -> (Option, I) { + let PutBack{top, iter} = self; + (top, iter) + } + + /// Put back a single value to the front of the iterator. + /// + /// If a value is already in the put back slot, it is overwritten. + #[inline] + pub fn put_back(&mut self, x: I::Item) { + self.top = Some(x); + } +} + +impl Iterator for PutBack + where I: Iterator +{ + type Item = I::Item; + #[inline] + fn next(&mut self) -> Option { + match self.top { + None => self.iter.next(), + ref mut some => some.take(), + } + } + #[inline] + fn size_hint(&self) -> (usize, Option) { + // Not ExactSizeIterator because size may be larger than usize + size_hint::add_scalar(self.iter.size_hint(), self.top.is_some() as usize) + } + + fn count(self) -> usize { + self.iter.count() + (self.top.is_some() as usize) + } + + fn last(self) -> Option { + self.iter.last().or(self.top) + } + + fn nth(&mut self, n: usize) -> Option { + match self.top { + None => self.iter.nth(n), + ref mut some => { + if n == 0 { + some.take() + } else { + *some = None; + self.iter.nth(n - 1) + } + } + } + } + + fn all(&mut self, mut f: G) -> bool + where G: FnMut(Self::Item) -> bool + { + if let Some(elt) = self.top.take() { + if !f(elt) { + return false; + } + } + self.iter.all(f) + } + + fn fold(mut self, init: Acc, mut f: G) -> Acc + where G: FnMut(Acc, Self::Item) -> Acc, + { + let mut accum = init; + if let Some(elt) = self.top.take() { + accum = f(accum, elt); + } + self.iter.fold(accum, f) + } +} + +#[derive(Debug, Clone)] +/// An iterator adaptor that iterates over the cartesian product of +/// the element sets of two iterators `I` and `J`. +/// +/// Iterator element type is `(I::Item, J::Item)`. +/// +/// See [`.cartesian_product()`](crate::Itertools::cartesian_product) for more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct Product + where I: Iterator +{ + a: I, + a_cur: Option, + b: J, + b_orig: J, +} + +/// Create a new cartesian product iterator +/// +/// Iterator element type is `(I::Item, J::Item)`. +pub fn cartesian_product(mut i: I, j: J) -> Product + where I: Iterator, + J: Clone + Iterator, + I::Item: Clone +{ + Product { + a_cur: i.next(), + a: i, + b: j.clone(), + b_orig: j, + } +} + +impl Iterator for Product + where I: Iterator, + J: Clone + Iterator, + I::Item: Clone +{ + type Item = (I::Item, J::Item); + + fn next(&mut self) -> Option { + let elt_b = match self.b.next() { + None => { + self.b = self.b_orig.clone(); + match self.b.next() { + None => return None, + Some(x) => { + self.a_cur = self.a.next(); + x + } + } + } + Some(x) => x + }; + self.a_cur.as_ref().map(|a| (a.clone(), elt_b)) + } + + fn size_hint(&self) -> (usize, Option) { + let has_cur = self.a_cur.is_some() as usize; + // Not ExactSizeIterator because size may be larger than usize + let (b_min, b_max) = self.b.size_hint(); + + // Compute a * b_orig + b for both lower and upper bound + size_hint::add( + size_hint::mul(self.a.size_hint(), self.b_orig.size_hint()), + (b_min * has_cur, b_max.map(move |x| x * has_cur))) + } + + fn fold(mut self, mut accum: Acc, mut f: G) -> Acc + where G: FnMut(Acc, Self::Item) -> Acc, + { + // use a split loop to handle the loose a_cur as well as avoiding to + // clone b_orig at the end. + if let Some(mut a) = self.a_cur.take() { + let mut b = self.b; + loop { + accum = b.fold(accum, |acc, elt| f(acc, (a.clone(), elt))); + + // we can only continue iterating a if we had a first element; + if let Some(next_a) = self.a.next() { + b = self.b_orig.clone(); + a = next_a; + } else { + break; + } + } + } + accum + } +} + +impl FusedIterator for Product + where I: FusedIterator, + J: Clone + FusedIterator, + I::Item: Clone +{} + +/// A “meta iterator adaptorâ€. Its closure receives a reference to the iterator +/// and may pick off as many elements as it likes, to produce the next iterator element. +/// +/// Iterator element type is *X*, if the return type of `F` is *Option\*. +/// +/// See [`.batching()`](crate::Itertools::batching) for more information. +#[derive(Clone)] +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct Batching { + f: F, + iter: I, +} + +impl fmt::Debug for Batching where I: fmt::Debug { + debug_fmt_fields!(Batching, iter); +} + +/// Create a new Batching iterator. +pub fn batching(iter: I, f: F) -> Batching { + Batching { f, iter } +} + +impl Iterator for Batching + where I: Iterator, + F: FnMut(&mut I) -> Option +{ + type Item = B; + #[inline] + fn next(&mut self) -> Option { + (self.f)(&mut self.iter) + } +} + +/// An iterator adaptor that steps a number elements in the base iterator +/// for each iteration. +/// +/// The iterator steps by yielding the next element from the base iterator, +/// then skipping forward *n-1* elements. +/// +/// See [`.step()`](crate::Itertools::step) for more information. +#[deprecated(note="Use std .step_by() instead", since="0.8.0")] +#[allow(deprecated)] +#[derive(Clone, Debug)] +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct Step { + iter: Fuse, + skip: usize, +} + +/// Create a `Step` iterator. +/// +/// **Panics** if the step is 0. +#[allow(deprecated)] +pub fn step(iter: I, step: usize) -> Step + where I: Iterator +{ + assert!(step != 0); + Step { + iter: iter.fuse(), + skip: step - 1, + } +} + +#[allow(deprecated)] +impl Iterator for Step + where I: Iterator +{ + type Item = I::Item; + #[inline] + fn next(&mut self) -> Option { + let elt = self.iter.next(); + if self.skip > 0 { + self.iter.nth(self.skip - 1); + } + elt + } + + fn size_hint(&self) -> (usize, Option) { + let (low, high) = self.iter.size_hint(); + let div = |x: usize| { + if x == 0 { + 0 + } else { + 1 + (x - 1) / (self.skip + 1) + } + }; + (div(low), high.map(div)) + } +} + +// known size +#[allow(deprecated)] +impl ExactSizeIterator for Step + where I: ExactSizeIterator +{} + +pub trait MergePredicate { + fn merge_pred(&mut self, a: &T, b: &T) -> bool; +} + +#[derive(Clone, Debug)] +pub struct MergeLte; + +impl MergePredicate for MergeLte { + fn merge_pred(&mut self, a: &T, b: &T) -> bool { + a <= b + } +} + +/// An iterator adaptor that merges the two base iterators in ascending order. +/// If both base iterators are sorted (ascending), the result is sorted. +/// +/// Iterator element type is `I::Item`. +/// +/// See [`.merge()`](crate::Itertools::merge_by) for more information. +pub type Merge = MergeBy; + +/// Create an iterator that merges elements in `i` and `j`. +/// +/// [`IntoIterator`] enabled version of [`Itertools::merge`](crate::Itertools::merge). +/// +/// ``` +/// use itertools::merge; +/// +/// for elt in merge(&[1, 2, 3], &[2, 3, 4]) { +/// /* loop body */ +/// } +/// ``` +pub fn merge(i: I, j: J) -> Merge<::IntoIter, ::IntoIter> + where I: IntoIterator, + J: IntoIterator, + I::Item: PartialOrd +{ + merge_by_new(i, j, MergeLte) +} + +/// An iterator adaptor that merges the two base iterators in ascending order. +/// If both base iterators are sorted (ascending), the result is sorted. +/// +/// Iterator element type is `I::Item`. +/// +/// See [`.merge_by()`](crate::Itertools::merge_by) for more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct MergeBy + where I: Iterator, + J: Iterator +{ + a: Peekable, + b: Peekable, + fused: Option, + cmp: F, +} + +impl fmt::Debug for MergeBy + where I: Iterator + fmt::Debug, J: Iterator + fmt::Debug, + I::Item: fmt::Debug, +{ + debug_fmt_fields!(MergeBy, a, b); +} + +implbool> MergePredicate for F { + fn merge_pred(&mut self, a: &T, b: &T) -> bool { + self(a, b) + } +} + +/// Create a `MergeBy` iterator. +pub fn merge_by_new(a: I, b: J, cmp: F) -> MergeBy + where I: IntoIterator, + J: IntoIterator, + F: MergePredicate, +{ + MergeBy { + a: a.into_iter().peekable(), + b: b.into_iter().peekable(), + fused: None, + cmp, + } +} + +impl Clone for MergeBy + where I: Iterator, + J: Iterator, + Peekable: Clone, + Peekable: Clone, + F: Clone +{ + clone_fields!(a, b, fused, cmp); +} + +impl Iterator for MergeBy + where I: Iterator, + J: Iterator, + F: MergePredicate +{ + type Item = I::Item; + + fn next(&mut self) -> Option { + let less_than = match self.fused { + Some(lt) => lt, + None => match (self.a.peek(), self.b.peek()) { + (Some(a), Some(b)) => self.cmp.merge_pred(a, b), + (Some(_), None) => { + self.fused = Some(true); + true + } + (None, Some(_)) => { + self.fused = Some(false); + false + } + (None, None) => return None, + } + }; + if less_than { + self.a.next() + } else { + self.b.next() + } + } + + fn size_hint(&self) -> (usize, Option) { + // Not ExactSizeIterator because size may be larger than usize + size_hint::add(self.a.size_hint(), self.b.size_hint()) + } +} + +impl FusedIterator for MergeBy + where I: FusedIterator, + J: FusedIterator, + F: MergePredicate +{} + +/// An iterator adaptor that borrows from a `Clone`-able iterator +/// to only pick off elements while the predicate returns `true`. +/// +/// See [`.take_while_ref()`](crate::Itertools::take_while_ref) for more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct TakeWhileRef<'a, I: 'a, F> { + iter: &'a mut I, + f: F, +} + +impl<'a, I, F> fmt::Debug for TakeWhileRef<'a, I, F> + where I: Iterator + fmt::Debug, +{ + debug_fmt_fields!(TakeWhileRef, iter); +} + +/// Create a new `TakeWhileRef` from a reference to clonable iterator. +pub fn take_while_ref(iter: &mut I, f: F) -> TakeWhileRef + where I: Iterator + Clone +{ + TakeWhileRef { iter, f } +} + +impl<'a, I, F> Iterator for TakeWhileRef<'a, I, F> + where I: Iterator + Clone, + F: FnMut(&I::Item) -> bool +{ + type Item = I::Item; + + fn next(&mut self) -> Option { + let old = self.iter.clone(); + match self.iter.next() { + None => None, + Some(elt) => { + if (self.f)(&elt) { + Some(elt) + } else { + *self.iter = old; + None + } + } + } + } + + fn size_hint(&self) -> (usize, Option) { + (0, self.iter.size_hint().1) + } +} + +/// An iterator adaptor that filters `Option` iterator elements +/// and produces `A`. Stops on the first `None` encountered. +/// +/// See [`.while_some()`](crate::Itertools::while_some) for more information. +#[derive(Clone, Debug)] +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct WhileSome { + iter: I, +} + +/// Create a new `WhileSome`. +pub fn while_some(iter: I) -> WhileSome { + WhileSome { iter } +} + +impl Iterator for WhileSome + where I: Iterator> +{ + type Item = A; + + fn next(&mut self) -> Option { + match self.iter.next() { + None | Some(None) => None, + Some(elt) => elt, + } + } + + fn size_hint(&self) -> (usize, Option) { + (0, self.iter.size_hint().1) + } +} + +/// An iterator to iterate through all combinations in a `Clone`-able iterator that produces tuples +/// of a specific size. +/// +/// See [`.tuple_combinations()`](crate::Itertools::tuple_combinations) for more +/// information. +#[derive(Clone, Debug)] +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct TupleCombinations + where I: Iterator, + T: HasCombination +{ + iter: T::Combination, + _mi: PhantomData, +} + +pub trait HasCombination: Sized { + type Combination: From + Iterator; +} + +/// Create a new `TupleCombinations` from a clonable iterator. +pub fn tuple_combinations(iter: I) -> TupleCombinations + where I: Iterator + Clone, + I::Item: Clone, + T: HasCombination, +{ + TupleCombinations { + iter: T::Combination::from(iter), + _mi: PhantomData, + } +} + +impl Iterator for TupleCombinations + where I: Iterator, + T: HasCombination, +{ + type Item = T; + + fn next(&mut self) -> Option { + self.iter.next() + } +} + +impl FusedIterator for TupleCombinations + where I: FusedIterator, + T: HasCombination, +{} + +#[derive(Clone, Debug)] +pub struct Tuple1Combination { + iter: I, +} + +impl From for Tuple1Combination { + fn from(iter: I) -> Self { + Tuple1Combination { iter } + } +} + +impl Iterator for Tuple1Combination { + type Item = (I::Item,); + + fn next(&mut self) -> Option { + self.iter.next().map(|x| (x,)) + } +} + +impl HasCombination for (I::Item,) { + type Combination = Tuple1Combination; +} + +macro_rules! impl_tuple_combination { + ($C:ident $P:ident ; $($X:ident)*) => ( + #[derive(Clone, Debug)] + pub struct $C { + item: Option, + iter: I, + c: $P, + } + + impl From for $C { + fn from(mut iter: I) -> Self { + Self { + item: iter.next(), + iter: iter.clone(), + c: iter.into(), + } + } + } + + impl From for $C> { + fn from(iter: I) -> Self { + Self::from(iter.fuse()) + } + } + + impl Iterator for $C + where I: Iterator + Clone, + I::Item: Clone + { + type Item = (A, $(ignore_ident!($X, A)),*); + + fn next(&mut self) -> Option { + if let Some(($($X),*,)) = self.c.next() { + let z = self.item.clone().unwrap(); + Some((z, $($X),*)) + } else { + self.item = self.iter.next(); + self.item.clone().and_then(|z| { + self.c = self.iter.clone().into(); + self.c.next().map(|($($X),*,)| (z, $($X),*)) + }) + } + } + } + + impl HasCombination for (A, $(ignore_ident!($X, A)),*) + where I: Iterator + Clone, + I::Item: Clone + { + type Combination = $C>; + } + ) +} + +// This snippet generates the twelve `impl_tuple_combination!` invocations: +// use core::iter; +// use itertools::Itertools; +// +// for i in 2..=12 { +// println!("impl_tuple_combination!(Tuple{arity}Combination Tuple{prev}Combination; {idents});", +// arity = i, +// prev = i - 1, +// idents = ('a'..'z').take(i - 1).join(" "), +// ); +// } +// It could probably be replaced by a bit more macro cleverness. +impl_tuple_combination!(Tuple2Combination Tuple1Combination; a); +impl_tuple_combination!(Tuple3Combination Tuple2Combination; a b); +impl_tuple_combination!(Tuple4Combination Tuple3Combination; a b c); +impl_tuple_combination!(Tuple5Combination Tuple4Combination; a b c d); +impl_tuple_combination!(Tuple6Combination Tuple5Combination; a b c d e); +impl_tuple_combination!(Tuple7Combination Tuple6Combination; a b c d e f); +impl_tuple_combination!(Tuple8Combination Tuple7Combination; a b c d e f g); +impl_tuple_combination!(Tuple9Combination Tuple8Combination; a b c d e f g h); +impl_tuple_combination!(Tuple10Combination Tuple9Combination; a b c d e f g h i); +impl_tuple_combination!(Tuple11Combination Tuple10Combination; a b c d e f g h i j); +impl_tuple_combination!(Tuple12Combination Tuple11Combination; a b c d e f g h i j k); + +/// An iterator adapter to filter values within a nested `Result::Ok`. +/// +/// See [`.filter_ok()`](crate::Itertools::filter_ok) for more information. +#[derive(Clone)] +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct FilterOk { + iter: I, + f: F +} + +impl fmt::Debug for FilterOk +where + I: fmt::Debug, +{ + debug_fmt_fields!(FilterOk, iter); +} + +/// Create a new `FilterOk` iterator. +pub fn filter_ok(iter: I, f: F) -> FilterOk + where I: Iterator>, + F: FnMut(&T) -> bool, +{ + FilterOk { + iter, + f, + } +} + +impl Iterator for FilterOk + where I: Iterator>, + F: FnMut(&T) -> bool, +{ + type Item = Result; + + fn next(&mut self) -> Option { + loop { + match self.iter.next() { + Some(Ok(v)) => { + if (self.f)(&v) { + return Some(Ok(v)); + } + }, + Some(Err(e)) => return Some(Err(e)), + None => return None, + } + } + } + + fn size_hint(&self) -> (usize, Option) { + (0, self.iter.size_hint().1) + } + + fn fold(self, init: Acc, fold_f: Fold) -> Acc + where Fold: FnMut(Acc, Self::Item) -> Acc, + { + let mut f = self.f; + self.iter.filter(|v| { + v.as_ref().map(&mut f).unwrap_or(true) + }).fold(init, fold_f) + } + + fn collect(self) -> C + where C: FromIterator + { + let mut f = self.f; + self.iter.filter(|v| { + v.as_ref().map(&mut f).unwrap_or(true) + }).collect() + } +} + +impl FusedIterator for FilterOk + where I: FusedIterator>, + F: FnMut(&T) -> bool, +{} + +/// An iterator adapter to filter and apply a transformation on values within a nested `Result::Ok`. +/// +/// See [`.filter_map_ok()`](crate::Itertools::filter_map_ok) for more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct FilterMapOk { + iter: I, + f: F +} + +impl fmt::Debug for FilterMapOk +where + I: fmt::Debug, +{ + debug_fmt_fields!(FilterMapOk, iter); +} + +fn transpose_result(result: Result, E>) -> Option> { + match result { + Ok(Some(v)) => Some(Ok(v)), + Ok(None) => None, + Err(e) => Some(Err(e)), + } +} + +/// Create a new `FilterOk` iterator. +pub fn filter_map_ok(iter: I, f: F) -> FilterMapOk + where I: Iterator>, + F: FnMut(T) -> Option, +{ + FilterMapOk { + iter, + f, + } +} + +impl Iterator for FilterMapOk + where I: Iterator>, + F: FnMut(T) -> Option, +{ + type Item = Result; + + fn next(&mut self) -> Option { + loop { + match self.iter.next() { + Some(Ok(v)) => { + if let Some(v) = (self.f)(v) { + return Some(Ok(v)); + } + }, + Some(Err(e)) => return Some(Err(e)), + None => return None, + } + } + } + + fn size_hint(&self) -> (usize, Option) { + (0, self.iter.size_hint().1) + } + + fn fold(self, init: Acc, fold_f: Fold) -> Acc + where Fold: FnMut(Acc, Self::Item) -> Acc, + { + let mut f = self.f; + self.iter.filter_map(|v| { + transpose_result(v.map(&mut f)) + }).fold(init, fold_f) + } + + fn collect(self) -> C + where C: FromIterator + { + let mut f = self.f; + self.iter.filter_map(|v| { + transpose_result(v.map(&mut f)) + }).collect() + } +} + +impl FusedIterator for FilterMapOk + where I: FusedIterator>, + F: FnMut(T) -> Option, +{} + +/// An iterator adapter to get the positions of each element that matches a predicate. +/// +/// See [`.positions()`](crate::Itertools::positions) for more information. +#[derive(Clone)] +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct Positions { + iter: I, + f: F, + count: usize, +} + +impl fmt::Debug for Positions +where + I: fmt::Debug, +{ + debug_fmt_fields!(Positions, iter, count); +} + +/// Create a new `Positions` iterator. +pub fn positions(iter: I, f: F) -> Positions + where I: Iterator, + F: FnMut(I::Item) -> bool, +{ + Positions { + iter, + f, + count: 0 + } +} + +impl Iterator for Positions + where I: Iterator, + F: FnMut(I::Item) -> bool, +{ + type Item = usize; + + fn next(&mut self) -> Option { + while let Some(v) = self.iter.next() { + let i = self.count; + self.count = i + 1; + if (self.f)(v) { + return Some(i); + } + } + None + } + + fn size_hint(&self) -> (usize, Option) { + (0, self.iter.size_hint().1) + } +} + +impl DoubleEndedIterator for Positions + where I: DoubleEndedIterator + ExactSizeIterator, + F: FnMut(I::Item) -> bool, +{ + fn next_back(&mut self) -> Option { + while let Some(v) = self.iter.next_back() { + if (self.f)(v) { + return Some(self.count + self.iter.len()) + } + } + None + } +} + +impl FusedIterator for Positions + where I: FusedIterator, + F: FnMut(I::Item) -> bool, +{} + +/// An iterator adapter to apply a mutating function to each element before yielding it. +/// +/// See [`.update()`](crate::Itertools::update) for more information. +#[derive(Clone)] +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct Update { + iter: I, + f: F, +} + +impl fmt::Debug for Update +where + I: fmt::Debug, +{ + debug_fmt_fields!(Update, iter); +} + +/// Create a new `Update` iterator. +pub fn update(iter: I, f: F) -> Update +where + I: Iterator, + F: FnMut(&mut I::Item), +{ + Update { iter, f } +} + +impl Iterator for Update +where + I: Iterator, + F: FnMut(&mut I::Item), +{ + type Item = I::Item; + + fn next(&mut self) -> Option { + if let Some(mut v) = self.iter.next() { + (self.f)(&mut v); + Some(v) + } else { + None + } + } + + fn size_hint(&self) -> (usize, Option) { + self.iter.size_hint() + } + + fn fold(self, init: Acc, mut g: G) -> Acc + where G: FnMut(Acc, Self::Item) -> Acc, + { + let mut f = self.f; + self.iter.fold(init, move |acc, mut v| { f(&mut v); g(acc, v) }) + } + + // if possible, re-use inner iterator specializations in collect + fn collect(self) -> C + where C: FromIterator + { + let mut f = self.f; + self.iter.map(move |mut v| { f(&mut v); v }).collect() + } +} + +impl ExactSizeIterator for Update +where + I: ExactSizeIterator, + F: FnMut(&mut I::Item), +{} + +impl DoubleEndedIterator for Update +where + I: DoubleEndedIterator, + F: FnMut(&mut I::Item), +{ + fn next_back(&mut self) -> Option { + if let Some(mut v) = self.iter.next_back() { + (self.f)(&mut v); + Some(v) + } else { + None + } + } +} + +impl FusedIterator for Update +where + I: FusedIterator, + F: FnMut(&mut I::Item), +{} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/adaptors/multi_product.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/adaptors/multi_product.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/adaptors/multi_product.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/adaptors/multi_product.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,230 @@ +#![cfg(feature = "use_alloc")] + +use crate::size_hint; +use crate::Itertools; + +use alloc::vec::Vec; + +#[derive(Clone)] +/// An iterator adaptor that iterates over the cartesian product of +/// multiple iterators of type `I`. +/// +/// An iterator element type is `Vec`. +/// +/// See [`.multi_cartesian_product()`](crate::Itertools::multi_cartesian_product) +/// for more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct MultiProduct(Vec>) + where I: Iterator + Clone, + I::Item: Clone; + +impl std::fmt::Debug for MultiProduct +where + I: Iterator + Clone + std::fmt::Debug, + I::Item: Clone + std::fmt::Debug, +{ + debug_fmt_fields!(CoalesceBy, 0); +} + +/// Create a new cartesian product iterator over an arbitrary number +/// of iterators of the same type. +/// +/// Iterator element is of type `Vec`. +pub fn multi_cartesian_product(iters: H) -> MultiProduct<::IntoIter> + where H: Iterator, + H::Item: IntoIterator, + ::IntoIter: Clone, + ::Item: Clone +{ + MultiProduct(iters.map(|i| MultiProductIter::new(i.into_iter())).collect()) +} + +#[derive(Clone, Debug)] +/// Holds the state of a single iterator within a `MultiProduct`. +struct MultiProductIter + where I: Iterator + Clone, + I::Item: Clone +{ + cur: Option, + iter: I, + iter_orig: I, +} + +/// Holds the current state during an iteration of a `MultiProduct`. +#[derive(Debug)] +enum MultiProductIterState { + StartOfIter, + MidIter { on_first_iter: bool }, +} + +impl MultiProduct + where I: Iterator + Clone, + I::Item: Clone +{ + /// Iterates the rightmost iterator, then recursively iterates iterators + /// to the left if necessary. + /// + /// Returns true if the iteration succeeded, else false. + fn iterate_last( + multi_iters: &mut [MultiProductIter], + mut state: MultiProductIterState + ) -> bool { + use self::MultiProductIterState::*; + + if let Some((last, rest)) = multi_iters.split_last_mut() { + let on_first_iter = match state { + StartOfIter => { + let on_first_iter = !last.in_progress(); + state = MidIter { on_first_iter }; + on_first_iter + }, + MidIter { on_first_iter } => on_first_iter + }; + + if !on_first_iter { + last.iterate(); + } + + if last.in_progress() { + true + } else if MultiProduct::iterate_last(rest, state) { + last.reset(); + last.iterate(); + // If iterator is None twice consecutively, then iterator is + // empty; whole product is empty. + last.in_progress() + } else { + false + } + } else { + // Reached end of iterator list. On initialisation, return true. + // At end of iteration (final iterator finishes), finish. + match state { + StartOfIter => false, + MidIter { on_first_iter } => on_first_iter + } + } + } + + /// Returns the unwrapped value of the next iteration. + fn curr_iterator(&self) -> Vec { + self.0.iter().map(|multi_iter| { + multi_iter.cur.clone().unwrap() + }).collect() + } + + /// Returns true if iteration has started and has not yet finished; false + /// otherwise. + fn in_progress(&self) -> bool { + if let Some(last) = self.0.last() { + last.in_progress() + } else { + false + } + } +} + +impl MultiProductIter + where I: Iterator + Clone, + I::Item: Clone +{ + fn new(iter: I) -> Self { + MultiProductIter { + cur: None, + iter: iter.clone(), + iter_orig: iter + } + } + + /// Iterate the managed iterator. + fn iterate(&mut self) { + self.cur = self.iter.next(); + } + + /// Reset the managed iterator. + fn reset(&mut self) { + self.iter = self.iter_orig.clone(); + } + + /// Returns true if the current iterator has been started and has not yet + /// finished; false otherwise. + fn in_progress(&self) -> bool { + self.cur.is_some() + } +} + +impl Iterator for MultiProduct + where I: Iterator + Clone, + I::Item: Clone +{ + type Item = Vec; + + fn next(&mut self) -> Option { + if MultiProduct::iterate_last( + &mut self.0, + MultiProductIterState::StartOfIter + ) { + Some(self.curr_iterator()) + } else { + None + } + } + + fn count(self) -> usize { + if self.0.is_empty() { + return 0; + } + + if !self.in_progress() { + return self.0.into_iter().fold(1, |acc, multi_iter| { + acc * multi_iter.iter.count() + }); + } + + self.0.into_iter().fold( + 0, + |acc, MultiProductIter { iter, iter_orig, cur: _ }| { + let total_count = iter_orig.count(); + let cur_count = iter.count(); + acc * total_count + cur_count + } + ) + } + + fn size_hint(&self) -> (usize, Option) { + // Not ExactSizeIterator because size may be larger than usize + if self.0.is_empty() { + return (0, Some(0)); + } + + if !self.in_progress() { + return self.0.iter().fold((1, Some(1)), |acc, multi_iter| { + size_hint::mul(acc, multi_iter.iter.size_hint()) + }); + } + + self.0.iter().fold( + (0, Some(0)), + |acc, &MultiProductIter { ref iter, ref iter_orig, cur: _ }| { + let cur_size = iter.size_hint(); + let total_size = iter_orig.size_hint(); + size_hint::add(size_hint::mul(acc, total_size), cur_size) + } + ) + } + + fn last(self) -> Option { + let iter_count = self.0.len(); + + let lasts: Self::Item = self.0.into_iter() + .map(|multi_iter| multi_iter.iter.last()) + .while_some() + .collect(); + + if lasts.len() == iter_count { + Some(lasts) + } else { + None + } + } +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/combinations.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/combinations.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/combinations.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/combinations.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,128 @@ +use std::fmt; +use std::iter::FusedIterator; + +use super::lazy_buffer::LazyBuffer; +use alloc::vec::Vec; + +/// An iterator to iterate through all the `k`-length combinations in an iterator. +/// +/// See [`.combinations()`](crate::Itertools::combinations) for more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct Combinations { + indices: Vec, + pool: LazyBuffer, + first: bool, +} + +impl Clone for Combinations + where I: Clone + Iterator, + I::Item: Clone, +{ + clone_fields!(indices, pool, first); +} + +impl fmt::Debug for Combinations + where I: Iterator + fmt::Debug, + I::Item: fmt::Debug, +{ + debug_fmt_fields!(Combinations, indices, pool, first); +} + +/// Create a new `Combinations` from a clonable iterator. +pub fn combinations(iter: I, k: usize) -> Combinations + where I: Iterator +{ + let mut pool = LazyBuffer::new(iter); + pool.prefill(k); + + Combinations { + indices: (0..k).collect(), + pool, + first: true, + } +} + +impl Combinations { + /// Returns the length of a combination produced by this iterator. + #[inline] + pub fn k(&self) -> usize { self.indices.len() } + + /// Returns the (current) length of the pool from which combination elements are + /// selected. This value can change between invocations of [`next`](Combinations::next). + #[inline] + pub fn n(&self) -> usize { self.pool.len() } + + /// Returns a reference to the source iterator. + #[inline] + pub(crate) fn src(&self) -> &I { &self.pool.it } + + /// Resets this `Combinations` back to an initial state for combinations of length + /// `k` over the same pool data source. If `k` is larger than the current length + /// of the data pool an attempt is made to prefill the pool so that it holds `k` + /// elements. + pub(crate) fn reset(&mut self, k: usize) { + self.first = true; + + if k < self.indices.len() { + self.indices.truncate(k); + for i in 0..k { + self.indices[i] = i; + } + + } else { + for i in 0..self.indices.len() { + self.indices[i] = i; + } + self.indices.extend(self.indices.len()..k); + self.pool.prefill(k); + } + } +} + +impl Iterator for Combinations + where I: Iterator, + I::Item: Clone +{ + type Item = Vec; + fn next(&mut self) -> Option { + if self.first { + if self.k() > self.n() { + return None; + } + self.first = false; + } else if self.indices.is_empty() { + return None; + } else { + // Scan from the end, looking for an index to increment + let mut i: usize = self.indices.len() - 1; + + // Check if we need to consume more from the iterator + if self.indices[i] == self.pool.len() - 1 { + self.pool.get_next(); // may change pool size + } + + while self.indices[i] == i + self.pool.len() - self.indices.len() { + if i > 0 { + i -= 1; + } else { + // Reached the last combination + return None; + } + } + + // Increment index, and reset the ones to its right + self.indices[i] += 1; + for j in i+1..self.indices.len() { + self.indices[j] = self.indices[j - 1] + 1; + } + } + + // Create result vector based on the indices + Some(self.indices.iter().map(|i| self.pool[*i].clone()).collect()) + } +} + +impl FusedIterator for Combinations + where I: Iterator, + I::Item: Clone +{} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/combinations_with_replacement.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/combinations_with_replacement.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/combinations_with_replacement.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/combinations_with_replacement.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,109 @@ +use alloc::vec::Vec; +use std::fmt; +use std::iter::FusedIterator; + +use super::lazy_buffer::LazyBuffer; + +/// An iterator to iterate through all the `n`-length combinations in an iterator, with replacement. +/// +/// See [`.combinations_with_replacement()`](crate::Itertools::combinations_with_replacement) +/// for more information. +#[derive(Clone)] +pub struct CombinationsWithReplacement +where + I: Iterator, + I::Item: Clone, +{ + indices: Vec, + pool: LazyBuffer, + first: bool, +} + +impl fmt::Debug for CombinationsWithReplacement +where + I: Iterator + fmt::Debug, + I::Item: fmt::Debug + Clone, +{ + debug_fmt_fields!(Combinations, indices, pool, first); +} + +impl CombinationsWithReplacement +where + I: Iterator, + I::Item: Clone, +{ + /// Map the current mask over the pool to get an output combination + fn current(&self) -> Vec { + self.indices.iter().map(|i| self.pool[*i].clone()).collect() + } +} + +/// Create a new `CombinationsWithReplacement` from a clonable iterator. +pub fn combinations_with_replacement(iter: I, k: usize) -> CombinationsWithReplacement +where + I: Iterator, + I::Item: Clone, +{ + let indices: Vec = alloc::vec![0; k]; + let pool: LazyBuffer = LazyBuffer::new(iter); + + CombinationsWithReplacement { + indices, + pool, + first: true, + } +} + +impl Iterator for CombinationsWithReplacement +where + I: Iterator, + I::Item: Clone, +{ + type Item = Vec; + fn next(&mut self) -> Option { + // If this is the first iteration, return early + if self.first { + // In empty edge cases, stop iterating immediately + return if !(self.indices.is_empty() || self.pool.get_next()) { + None + // Otherwise, yield the initial state + } else { + self.first = false; + Some(self.current()) + }; + } + + // Check if we need to consume more from the iterator + // This will run while we increment our first index digit + self.pool.get_next(); + + // Work out where we need to update our indices + let mut increment: Option<(usize, usize)> = None; + for (i, indices_int) in self.indices.iter().enumerate().rev() { + if *indices_int < self.pool.len()-1 { + increment = Some((i, indices_int + 1)); + break; + } + } + + match increment { + // If we can update the indices further + Some((increment_from, increment_value)) => { + // We need to update the rightmost non-max value + // and all those to the right + for indices_index in increment_from..self.indices.len() { + self.indices[indices_index] = increment_value; + } + Some(self.current()) + } + // Otherwise, we're done + None => None, + } + } +} + +impl FusedIterator for CombinationsWithReplacement +where + I: Iterator, + I::Item: Clone, +{} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/concat_impl.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/concat_impl.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/concat_impl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/concat_impl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,23 @@ +use crate::Itertools; + +/// Combine all an iterator's elements into one element by using [`Extend`]. +/// +/// [`IntoIterator`]-enabled version of [`Itertools::concat`]. +/// +/// This combinator will extend the first item with each of the rest of the +/// items of the iterator. If the iterator is empty, the default value of +/// `I::Item` is returned. +/// +/// ```rust +/// use itertools::concat; +/// +/// let input = vec![vec![1], vec![2, 3], vec![4, 5, 6]]; +/// assert_eq!(concat(input), vec![1, 2, 3, 4, 5, 6]); +/// ``` +pub fn concat(iterable: I) -> I::Item + where I: IntoIterator, + I::Item: Extend<<::Item as IntoIterator>::Item> + IntoIterator + Default +{ + #[allow(deprecated)] //TODO: once msrv hits 1.51. replace `fold1` with `reduce` + iterable.into_iter().fold1(|mut a, b| { a.extend(b); a }).unwrap_or_default() +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/cons_tuples_impl.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/cons_tuples_impl.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/cons_tuples_impl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/cons_tuples_impl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,64 @@ + +macro_rules! impl_cons_iter( + ($_A:ident, $_B:ident, ) => (); // stop + + ($A:ident, $($B:ident,)*) => ( + impl_cons_iter!($($B,)*); + #[allow(non_snake_case)] + impl Iterator for ConsTuples + where Iter: Iterator, + { + type Item = ($($B,)* X, ); + fn next(&mut self) -> Option { + self.iter.next().map(|(($($B,)*), x)| ($($B,)* x, )) + } + + fn size_hint(&self) -> (usize, Option) { + self.iter.size_hint() + } + fn fold(self, accum: Acc, mut f: Fold) -> Acc + where Fold: FnMut(Acc, Self::Item) -> Acc, + { + self.iter.fold(accum, move |acc, (($($B,)*), x)| f(acc, ($($B,)* x, ))) + } + } + + #[allow(non_snake_case)] + impl DoubleEndedIterator for ConsTuples + where Iter: DoubleEndedIterator, + { + fn next_back(&mut self) -> Option { + self.iter.next().map(|(($($B,)*), x)| ($($B,)* x, )) + } + } + + ); +); + +impl_cons_iter!(A, B, C, D, E, F, G, H, I, J, K, L,); + +/// An iterator that maps an iterator of tuples like +/// `((A, B), C)` to an iterator of `(A, B, C)`. +/// +/// Used by the `iproduct!()` macro. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +#[derive(Debug)] +pub struct ConsTuples + where I: Iterator, +{ + iter: I, +} + +impl Clone for ConsTuples + where I: Clone + Iterator, +{ + clone_fields!(iter); +} + +/// Create an iterator that maps for example iterators of +/// `((A, B), C)` to `(A, B, C)`. +pub fn cons_tuples(iterable: I) -> ConsTuples + where I: IntoIterator +{ + ConsTuples { iter: iterable.into_iter() } +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/diff.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/diff.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/diff.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/diff.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,61 @@ +//! "Diff"ing iterators for caching elements to sequential collections without requiring the new +//! elements' iterator to be `Clone`. +//! +//! - [`Diff`] (produced by the [`diff_with`] function) +//! describes the difference between two non-`Clone` iterators `I` and `J` after breaking ASAP from +//! a lock-step comparison. + +use crate::free::put_back; +use crate::structs::PutBack; + +/// A type returned by the [`diff_with`] function. +/// +/// `Diff` represents the way in which the elements yielded by the iterator `I` differ to some +/// iterator `J`. +pub enum Diff + where I: Iterator, + J: Iterator +{ + /// The index of the first non-matching element along with both iterator's remaining elements + /// starting with the first mis-match. + FirstMismatch(usize, PutBack, PutBack), + /// The total number of elements that were in `J` along with the remaining elements of `I`. + Shorter(usize, PutBack), + /// The total number of elements that were in `I` along with the remaining elements of `J`. + Longer(usize, PutBack), +} + +/// Compares every element yielded by both `i` and `j` with the given function in lock-step and +/// returns a [`Diff`] which describes how `j` differs from `i`. +/// +/// If the number of elements yielded by `j` is less than the number of elements yielded by `i`, +/// the number of `j` elements yielded will be returned along with `i`'s remaining elements as +/// `Diff::Shorter`. +/// +/// If the two elements of a step differ, the index of those elements along with the remaining +/// elements of both `i` and `j` are returned as `Diff::FirstMismatch`. +/// +/// If `i` becomes exhausted before `j` becomes exhausted, the number of elements in `i` along with +/// the remaining `j` elements will be returned as `Diff::Longer`. +pub fn diff_with(i: I, j: J, is_equal: F) + -> Option> + where I: IntoIterator, + J: IntoIterator, + F: Fn(&I::Item, &J::Item) -> bool +{ + let mut i = i.into_iter(); + let mut j = j.into_iter(); + let mut idx = 0; + while let Some(i_elem) = i.next() { + match j.next() { + None => return Some(Diff::Shorter(idx, put_back(i).with_value(i_elem))), + Some(j_elem) => if !is_equal(&i_elem, &j_elem) { + let remaining_i = put_back(i).with_value(i_elem); + let remaining_j = put_back(j).with_value(j_elem); + return Some(Diff::FirstMismatch(idx, remaining_i, remaining_j)); + }, + } + idx += 1; + } + j.next().map(|j_elem| Diff::Longer(idx, put_back(j).with_value(j_elem))) +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/duplicates_impl.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/duplicates_impl.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/duplicates_impl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/duplicates_impl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,216 @@ +use std::hash::Hash; + +mod private { + use std::collections::HashMap; + use std::hash::Hash; + use std::fmt; + + #[derive(Clone)] + #[must_use = "iterator adaptors are lazy and do nothing unless consumed"] + pub struct DuplicatesBy { + pub(crate) iter: I, + pub(crate) meta: Meta, + } + + impl fmt::Debug for DuplicatesBy + where + I: Iterator + fmt::Debug, + V: fmt::Debug + Hash + Eq, + { + debug_fmt_fields!(DuplicatesBy, iter, meta.used); + } + + impl DuplicatesBy { + pub(crate) fn new(iter: I, key_method: F) -> Self { + DuplicatesBy { + iter, + meta: Meta { + used: HashMap::new(), + pending: 0, + key_method, + }, + } + } + } + + #[derive(Clone)] + pub struct Meta { + used: HashMap, + pending: usize, + key_method: F, + } + + impl Meta + where + Key: Eq + Hash, + { + /// Takes an item and returns it back to the caller if it's the second time we see it. + /// Otherwise the item is consumed and None is returned + #[inline(always)] + fn filter(&mut self, item: I) -> Option + where + F: KeyMethod, + { + let kv = self.key_method.make(item); + match self.used.get_mut(kv.key_ref()) { + None => { + self.used.insert(kv.key(), false); + self.pending += 1; + None + } + Some(true) => None, + Some(produced) => { + *produced = true; + self.pending -= 1; + Some(kv.value()) + } + } + } + } + + impl Iterator for DuplicatesBy + where + I: Iterator, + Key: Eq + Hash, + F: KeyMethod, + { + type Item = I::Item; + + fn next(&mut self) -> Option { + let DuplicatesBy { iter, meta } = self; + iter.find_map(|v| meta.filter(v)) + } + + #[inline] + fn size_hint(&self) -> (usize, Option) { + let (_, hi) = self.iter.size_hint(); + let hi = hi.map(|hi| { + if hi <= self.meta.pending { + // fewer or equally many iter-remaining elements than pending elements + // => at most, each iter-remaining element is matched + hi + } else { + // fewer pending elements than iter-remaining elements + // => at most: + // * each pending element is matched + // * the other iter-remaining elements come in pairs + self.meta.pending + (hi - self.meta.pending) / 2 + } + }); + // The lower bound is always 0 since we might only get unique items from now on + (0, hi) + } + } + + impl DoubleEndedIterator for DuplicatesBy + where + I: DoubleEndedIterator, + Key: Eq + Hash, + F: KeyMethod, + { + fn next_back(&mut self) -> Option { + let DuplicatesBy { iter, meta } = self; + iter.rev().find_map(|v| meta.filter(v)) + } + } + + /// A keying method for use with `DuplicatesBy` + pub trait KeyMethod { + type Container: KeyXorValue; + + fn make(&mut self, value: V) -> Self::Container; + } + + /// Apply the identity function to elements before checking them for equality. + #[derive(Debug)] + pub struct ById; + impl KeyMethod for ById { + type Container = JustValue; + + fn make(&mut self, v: V) -> Self::Container { + JustValue(v) + } + } + + /// Apply a user-supplied function to elements before checking them for equality. + pub struct ByFn(pub(crate) F); + impl fmt::Debug for ByFn { + debug_fmt_fields!(ByFn,); + } + impl KeyMethod for ByFn + where + F: FnMut(&V) -> K, + { + type Container = KeyValue; + + fn make(&mut self, v: V) -> Self::Container { + KeyValue((self.0)(&v), v) + } + } + + // Implementors of this trait can hold onto a key and a value but only give access to one of them + // at a time. This allows the key and the value to be the same value internally + pub trait KeyXorValue { + fn key_ref(&self) -> &K; + fn key(self) -> K; + fn value(self) -> V; + } + + #[derive(Debug)] + pub struct KeyValue(K, V); + impl KeyXorValue for KeyValue { + fn key_ref(&self) -> &K { + &self.0 + } + fn key(self) -> K { + self.0 + } + fn value(self) -> V { + self.1 + } + } + + #[derive(Debug)] + pub struct JustValue(V); + impl KeyXorValue for JustValue { + fn key_ref(&self) -> &V { + &self.0 + } + fn key(self) -> V { + self.0 + } + fn value(self) -> V { + self.0 + } + } +} + +/// An iterator adapter to filter for duplicate elements. +/// +/// See [`.duplicates_by()`](crate::Itertools::duplicates_by) for more information. +pub type DuplicatesBy = private::DuplicatesBy>; + +/// Create a new `DuplicatesBy` iterator. +pub fn duplicates_by(iter: I, f: F) -> DuplicatesBy +where + Key: Eq + Hash, + F: FnMut(&I::Item) -> Key, + I: Iterator, +{ + DuplicatesBy::new(iter, private::ByFn(f)) +} + +/// An iterator adapter to filter out duplicate elements. +/// +/// See [`.duplicates()`](crate::Itertools::duplicates) for more information. +pub type Duplicates = private::DuplicatesBy::Item, private::ById>; + +/// Create a new `Duplicates` iterator. +pub fn duplicates(iter: I) -> Duplicates +where + I: Iterator, + I::Item: Eq + Hash, +{ + Duplicates::new(iter, private::ById) +} + diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/either_or_both.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/either_or_both.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/either_or_both.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/either_or_both.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,254 @@ +use crate::EitherOrBoth::*; + +use either::Either; + +/// Value that either holds a single A or B, or both. +#[derive(Clone, PartialEq, Eq, Hash, Debug)] +pub enum EitherOrBoth { + /// Both values are present. + Both(A, B), + /// Only the left value of type `A` is present. + Left(A), + /// Only the right value of type `B` is present. + Right(B), +} + +impl EitherOrBoth { + /// If `Left`, or `Both`, return true, otherwise, return false. + pub fn has_left(&self) -> bool { + self.as_ref().left().is_some() + } + + /// If `Right`, or `Both`, return true, otherwise, return false. + pub fn has_right(&self) -> bool { + self.as_ref().right().is_some() + } + + /// If Left, return true otherwise, return false. + /// Exclusive version of [`has_left`](EitherOrBoth::has_left). + pub fn is_left(&self) -> bool { + match *self { + Left(_) => true, + _ => false, + } + } + + /// If Right, return true otherwise, return false. + /// Exclusive version of [`has_right`](EitherOrBoth::has_right). + pub fn is_right(&self) -> bool { + match *self { + Right(_) => true, + _ => false, + } + } + + /// If Right, return true otherwise, return false. + /// Equivalent to `self.as_ref().both().is_some()`. + pub fn is_both(&self) -> bool { + self.as_ref().both().is_some() + } + + /// If `Left`, or `Both`, return `Some` with the left value, otherwise, return `None`. + pub fn left(self) -> Option { + match self { + Left(left) | Both(left, _) => Some(left), + _ => None, + } + } + + /// If `Right`, or `Both`, return `Some` with the right value, otherwise, return `None`. + pub fn right(self) -> Option { + match self { + Right(right) | Both(_, right) => Some(right), + _ => None, + } + } + + /// If Both, return `Some` tuple containing left and right. + pub fn both(self) -> Option<(A, B)> { + match self { + Both(a, b) => Some((a, b)), + _ => None, + } + } + + /// Converts from `&EitherOrBoth` to `EitherOrBoth<&A, &B>`. + pub fn as_ref(&self) -> EitherOrBoth<&A, &B> { + match *self { + Left(ref left) => Left(left), + Right(ref right) => Right(right), + Both(ref left, ref right) => Both(left, right), + } + } + + /// Converts from `&mut EitherOrBoth` to `EitherOrBoth<&mut A, &mut B>`. + pub fn as_mut(&mut self) -> EitherOrBoth<&mut A, &mut B> { + match *self { + Left(ref mut left) => Left(left), + Right(ref mut right) => Right(right), + Both(ref mut left, ref mut right) => Both(left, right), + } + } + + /// Convert `EitherOrBoth` to `EitherOrBoth`. + pub fn flip(self) -> EitherOrBoth { + match self { + Left(a) => Right(a), + Right(b) => Left(b), + Both(a, b) => Both(b, a), + } + } + + /// Apply the function `f` on the value `a` in `Left(a)` or `Both(a, b)` variants. If it is + /// present rewrapping the result in `self`'s original variant. + pub fn map_left(self, f: F) -> EitherOrBoth + where + F: FnOnce(A) -> M, + { + match self { + Both(a, b) => Both(f(a), b), + Left(a) => Left(f(a)), + Right(b) => Right(b), + } + } + + /// Apply the function `f` on the value `b` in `Right(b)` or `Both(a, b)` variants. + /// If it is present rewrapping the result in `self`'s original variant. + pub fn map_right(self, f: F) -> EitherOrBoth + where + F: FnOnce(B) -> M, + { + match self { + Left(a) => Left(a), + Right(b) => Right(f(b)), + Both(a, b) => Both(a, f(b)), + } + } + + /// Apply the functions `f` and `g` on the value `a` and `b` respectively; + /// found in `Left(a)`, `Right(b)`, or `Both(a, b)` variants. + /// The Result is rewrapped `self`'s original variant. + pub fn map_any(self, f: F, g: G) -> EitherOrBoth + where + F: FnOnce(A) -> L, + G: FnOnce(B) -> R, + { + match self { + Left(a) => Left(f(a)), + Right(b) => Right(g(b)), + Both(a, b) => Both(f(a), g(b)), + } + } + + /// Apply the function `f` on the value `a` in `Left(a)` or `Both(a, _)` variants if it is + /// present. + pub fn left_and_then(self, f: F) -> EitherOrBoth + where + F: FnOnce(A) -> EitherOrBoth, + { + match self { + Left(a) | Both(a, _) => f(a), + Right(b) => Right(b), + } + } + + /// Apply the function `f` on the value `b` + /// in `Right(b)` or `Both(_, b)` variants if it is present. + pub fn right_and_then(self, f: F) -> EitherOrBoth + where + F: FnOnce(B) -> EitherOrBoth, + { + match self { + Left(a) => Left(a), + Right(b) | Both(_, b) => f(b), + } + } + + /// Returns a tuple consisting of the `l` and `r` in `Both(l, r)`, if present. + /// Otherwise, returns the wrapped value for the present element, and the supplied + /// value for the other. The first (`l`) argument is used for a missing `Left` + /// value. The second (`r`) argument is used for a missing `Right` value. + /// + /// Arguments passed to `or` are eagerly evaluated; if you are passing + /// the result of a function call, it is recommended to use [`or_else`], + /// which is lazily evaluated. + /// + /// [`or_else`]: EitherOrBoth::or_else + /// + /// # Examples + /// + /// ``` + /// # use itertools::EitherOrBoth; + /// assert_eq!(EitherOrBoth::Both("tree", 1).or("stone", 5), ("tree", 1)); + /// assert_eq!(EitherOrBoth::Left("tree").or("stone", 5), ("tree", 5)); + /// assert_eq!(EitherOrBoth::Right(1).or("stone", 5), ("stone", 1)); + /// ``` + pub fn or(self, l: A, r: B) -> (A, B) { + match self { + Left(inner_l) => (inner_l, r), + Right(inner_r) => (l, inner_r), + Both(inner_l, inner_r) => (inner_l, inner_r), + } + } + + /// Returns a tuple consisting of the `l` and `r` in `Both(l, r)`, if present. + /// Otherwise, returns the wrapped value for the present element, and the [`default`](Default::default) + /// for the other. + pub fn or_default(self) -> (A, B) + where + A: Default, + B: Default, + { + match self { + EitherOrBoth::Left(l) => (l, B::default()), + EitherOrBoth::Right(r) => (A::default(), r), + EitherOrBoth::Both(l, r) => (l, r), + } + } + + /// Returns a tuple consisting of the `l` and `r` in `Both(l, r)`, if present. + /// Otherwise, returns the wrapped value for the present element, and computes the + /// missing value with the supplied closure. The first argument (`l`) is used for a + /// missing `Left` value. The second argument (`r`) is used for a missing `Right` value. + /// + /// # Examples + /// + /// ``` + /// # use itertools::EitherOrBoth; + /// let k = 10; + /// assert_eq!(EitherOrBoth::Both("tree", 1).or_else(|| "stone", || 2 * k), ("tree", 1)); + /// assert_eq!(EitherOrBoth::Left("tree").or_else(|| "stone", || 2 * k), ("tree", 20)); + /// assert_eq!(EitherOrBoth::Right(1).or_else(|| "stone", || 2 * k), ("stone", 1)); + /// ``` + pub fn or_else A, R: FnOnce() -> B>(self, l: L, r: R) -> (A, B) { + match self { + Left(inner_l) => (inner_l, r()), + Right(inner_r) => (l(), inner_r), + Both(inner_l, inner_r) => (inner_l, inner_r), + } + } +} + +impl EitherOrBoth { + /// Return either value of left, right, or the product of `f` applied where `Both` are present. + pub fn reduce(self, f: F) -> T + where + F: FnOnce(T, T) -> T, + { + match self { + Left(a) => a, + Right(b) => b, + Both(a, b) => f(a, b), + } + } +} + +impl Into>> for EitherOrBoth { + fn into(self) -> Option> { + match self { + EitherOrBoth::Left(l) => Some(Either::Left(l)), + EitherOrBoth::Right(r) => Some(Either::Right(r)), + _ => None, + } + } +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/exactly_one_err.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/exactly_one_err.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/exactly_one_err.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/exactly_one_err.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,110 @@ +#[cfg(feature = "use_std")] +use std::error::Error; +use std::fmt::{Debug, Display, Formatter, Result as FmtResult}; + +use std::iter::ExactSizeIterator; + +use either::Either; + +use crate::size_hint; + +/// Iterator returned for the error case of `IterTools::exactly_one()` +/// This iterator yields exactly the same elements as the input iterator. +/// +/// During the execution of `exactly_one` the iterator must be mutated. This wrapper +/// effectively "restores" the state of the input iterator when it's handed back. +/// +/// This is very similar to `PutBackN` except this iterator only supports 0-2 elements and does not +/// use a `Vec`. +#[derive(Clone)] +pub struct ExactlyOneError +where + I: Iterator, +{ + first_two: Option>, + inner: I, +} + +impl ExactlyOneError +where + I: Iterator, +{ + /// Creates a new `ExactlyOneErr` iterator. + pub(crate) fn new(first_two: Option>, inner: I) -> Self { + Self { first_two, inner } + } + + fn additional_len(&self) -> usize { + match self.first_two { + Some(Either::Left(_)) => 2, + Some(Either::Right(_)) => 1, + None => 0, + } + } +} + +impl Iterator for ExactlyOneError +where + I: Iterator, +{ + type Item = I::Item; + + fn next(&mut self) -> Option { + match self.first_two.take() { + Some(Either::Left([first, second])) => { + self.first_two = Some(Either::Right(second)); + Some(first) + }, + Some(Either::Right(second)) => { + Some(second) + } + None => { + self.inner.next() + } + } + } + + fn size_hint(&self) -> (usize, Option) { + size_hint::add_scalar(self.inner.size_hint(), self.additional_len()) + } +} + + +impl ExactSizeIterator for ExactlyOneError where I: ExactSizeIterator {} + +impl Display for ExactlyOneError + where I: Iterator, +{ + fn fmt(&self, f: &mut Formatter) -> FmtResult { + let additional = self.additional_len(); + if additional > 0 { + write!(f, "got at least 2 elements when exactly one was expected") + } else { + write!(f, "got zero elements when exactly one was expected") + } + } +} + +impl Debug for ExactlyOneError + where I: Iterator + Debug, + I::Item: Debug, +{ + fn fmt(&self, f: &mut Formatter) -> FmtResult { + match &self.first_two { + Some(Either::Left([first, second])) => { + write!(f, "ExactlyOneError[First: {:?}, Second: {:?}, RemainingIter: {:?}]", first, second, self.inner) + }, + Some(Either::Right(second)) => { + write!(f, "ExactlyOneError[Second: {:?}, RemainingIter: {:?}]", second, self.inner) + } + None => { + write!(f, "ExactlyOneError[RemainingIter: {:?}]", self.inner) + } + } + } +} + +#[cfg(feature = "use_std")] +impl Error for ExactlyOneError where I: Iterator + Debug, I::Item: Debug, {} + + diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/extrema_set.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/extrema_set.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/extrema_set.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/extrema_set.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,48 @@ +use std::cmp::Ordering; + +/// Implementation guts for `min_set`, `min_set_by`, and `min_set_by_key`. +pub fn min_set_impl( + mut it: I, + mut key_for: F, + mut compare: Compare, +) -> Vec +where + I: Iterator, + F: FnMut(&I::Item) -> K, + Compare: FnMut(&I::Item, &I::Item, &K, &K) -> Ordering, +{ + match it.next() { + None => Vec::new(), + Some(element) => { + let mut current_key = key_for(&element); + let mut result = vec![element]; + it.for_each(|element| { + let key = key_for(&element); + match compare(&element, &result[0], &key, ¤t_key) { + Ordering::Less => { + result.clear(); + result.push(element); + current_key = key; + } + Ordering::Equal => { + result.push(element); + } + Ordering::Greater => {} + } + }); + result + } + } +} + +/// Implementation guts for `ax_set`, `max_set_by`, and `max_set_by_key`. +pub fn max_set_impl(it: I, key_for: F, mut compare: Compare) -> Vec +where + I: Iterator, + F: FnMut(&I::Item) -> K, + Compare: FnMut(&I::Item, &I::Item, &K, &K) -> Ordering, +{ + min_set_impl(it, key_for, |it1, it2, key1, key2| { + compare(it2, it1, key2, key1) + }) +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/flatten_ok.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/flatten_ok.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/flatten_ok.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/flatten_ok.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,165 @@ +use crate::size_hint; +use std::{ + fmt, + iter::{DoubleEndedIterator, FusedIterator}, +}; + +pub fn flatten_ok(iter: I) -> FlattenOk +where + I: Iterator>, + T: IntoIterator, +{ + FlattenOk { + iter, + inner_front: None, + inner_back: None, + } +} + +/// An iterator adaptor that flattens `Result::Ok` values and +/// allows `Result::Err` values through unchanged. +/// +/// See [`.flatten_ok()`](crate::Itertools::flatten_ok) for more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct FlattenOk +where + I: Iterator>, + T: IntoIterator, +{ + iter: I, + inner_front: Option, + inner_back: Option, +} + +impl Iterator for FlattenOk +where + I: Iterator>, + T: IntoIterator, +{ + type Item = Result; + + fn next(&mut self) -> Option { + loop { + // Handle the front inner iterator. + if let Some(inner) = &mut self.inner_front { + if let Some(item) = inner.next() { + return Some(Ok(item)); + } + + // This is necessary for the iterator to implement `FusedIterator` + // with only the original iterator being fused. + self.inner_front = None; + } + + match self.iter.next() { + Some(Ok(ok)) => self.inner_front = Some(ok.into_iter()), + Some(Err(e)) => return Some(Err(e)), + None => { + // Handle the back inner iterator. + if let Some(inner) = &mut self.inner_back { + if let Some(item) = inner.next() { + return Some(Ok(item)); + } + + // This is necessary for the iterator to implement `FusedIterator` + // with only the original iterator being fused. + self.inner_back = None; + } else { + return None; + } + } + } + } + } + + fn size_hint(&self) -> (usize, Option) { + let inner_hint = |inner: &Option| { + inner + .as_ref() + .map(Iterator::size_hint) + .unwrap_or((0, Some(0))) + }; + let inner_front = inner_hint(&self.inner_front); + let inner_back = inner_hint(&self.inner_back); + // The outer iterator `Ok` case could be (0, None) as we don't know its size_hint yet. + let outer = match self.iter.size_hint() { + (0, Some(0)) => (0, Some(0)), + _ => (0, None), + }; + + size_hint::add(size_hint::add(inner_front, inner_back), outer) + } +} + +impl DoubleEndedIterator for FlattenOk +where + I: DoubleEndedIterator>, + T: IntoIterator, + T::IntoIter: DoubleEndedIterator, +{ + fn next_back(&mut self) -> Option { + loop { + // Handle the back inner iterator. + if let Some(inner) = &mut self.inner_back { + if let Some(item) = inner.next_back() { + return Some(Ok(item)); + } + + // This is necessary for the iterator to implement `FusedIterator` + // with only the original iterator being fused. + self.inner_back = None; + } + + match self.iter.next_back() { + Some(Ok(ok)) => self.inner_back = Some(ok.into_iter()), + Some(Err(e)) => return Some(Err(e)), + None => { + // Handle the front inner iterator. + if let Some(inner) = &mut self.inner_front { + if let Some(item) = inner.next_back() { + return Some(Ok(item)); + } + + // This is necessary for the iterator to implement `FusedIterator` + // with only the original iterator being fused. + self.inner_front = None; + } else { + return None; + } + } + } + } + } +} + +impl Clone for FlattenOk +where + I: Iterator> + Clone, + T: IntoIterator, + T::IntoIter: Clone, +{ + clone_fields!(iter, inner_front, inner_back); +} + +impl fmt::Debug for FlattenOk +where + I: Iterator> + fmt::Debug, + T: IntoIterator, + T::IntoIter: fmt::Debug, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("FlattenOk") + .field("iter", &self.iter) + .field("inner_front", &self.inner_front) + .field("inner_back", &self.inner_back) + .finish() + } +} + +/// Only the iterator being flattened needs to implement [`FusedIterator`]. +impl FusedIterator for FlattenOk +where + I: FusedIterator>, + T: IntoIterator, +{ +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/format.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/format.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/format.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/format.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,113 @@ +use std::fmt; +use std::cell::RefCell; + +/// Format all iterator elements lazily, separated by `sep`. +/// +/// The format value can only be formatted once, after that the iterator is +/// exhausted. +/// +/// See [`.format_with()`](crate::Itertools::format_with) for more information. +#[derive(Clone)] +pub struct FormatWith<'a, I, F> { + sep: &'a str, + /// FormatWith uses interior mutability because Display::fmt takes &self. + inner: RefCell>, +} + +/// Format all iterator elements lazily, separated by `sep`. +/// +/// The format value can only be formatted once, after that the iterator is +/// exhausted. +/// +/// See [`.format()`](crate::Itertools::format) +/// for more information. +#[derive(Clone)] +pub struct Format<'a, I> { + sep: &'a str, + /// Format uses interior mutability because Display::fmt takes &self. + inner: RefCell>, +} + +pub fn new_format(iter: I, separator: &str, f: F) -> FormatWith<'_, I, F> + where I: Iterator, + F: FnMut(I::Item, &mut dyn FnMut(&dyn fmt::Display) -> fmt::Result) -> fmt::Result +{ + FormatWith { + sep: separator, + inner: RefCell::new(Some((iter, f))), + } +} + +pub fn new_format_default(iter: I, separator: &str) -> Format<'_, I> + where I: Iterator, +{ + Format { + sep: separator, + inner: RefCell::new(Some(iter)), + } +} + +impl<'a, I, F> fmt::Display for FormatWith<'a, I, F> + where I: Iterator, + F: FnMut(I::Item, &mut dyn FnMut(&dyn fmt::Display) -> fmt::Result) -> fmt::Result +{ + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let (mut iter, mut format) = match self.inner.borrow_mut().take() { + Some(t) => t, + None => panic!("FormatWith: was already formatted once"), + }; + + if let Some(fst) = iter.next() { + format(fst, &mut |disp: &dyn fmt::Display| disp.fmt(f))?; + iter.try_for_each(|elt| { + if !self.sep.is_empty() { + f.write_str(self.sep)?; + } + format(elt, &mut |disp: &dyn fmt::Display| disp.fmt(f)) + })?; + } + Ok(()) + } +} + +impl<'a, I> Format<'a, I> + where I: Iterator, +{ + fn format(&self, f: &mut fmt::Formatter, mut cb: F) -> fmt::Result + where F: FnMut(&I::Item, &mut fmt::Formatter) -> fmt::Result, + { + let mut iter = match self.inner.borrow_mut().take() { + Some(t) => t, + None => panic!("Format: was already formatted once"), + }; + + if let Some(fst) = iter.next() { + cb(&fst, f)?; + iter.try_for_each(|elt| { + if !self.sep.is_empty() { + f.write_str(self.sep)?; + } + cb(&elt, f) + })?; + } + Ok(()) + } +} + +macro_rules! impl_format { + ($($fmt_trait:ident)*) => { + $( + impl<'a, I> fmt::$fmt_trait for Format<'a, I> + where I: Iterator, + I::Item: fmt::$fmt_trait, + { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + self.format(f, fmt::$fmt_trait::fmt) + } + } + )* + } +} + +impl_format!{Display Debug + UpperExp LowerExp UpperHex LowerHex Octal Binary Pointer} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/free.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/free.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/free.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/free.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,286 @@ +//! Free functions that create iterator adaptors or call iterator methods. +//! +//! The benefit of free functions is that they accept any [`IntoIterator`] as +//! argument, so the resulting code may be easier to read. + +#[cfg(feature = "use_alloc")] +use std::fmt::Display; +use std::iter::{self, Zip}; +#[cfg(feature = "use_alloc")] +type VecIntoIter = alloc::vec::IntoIter; + +#[cfg(feature = "use_alloc")] +use alloc::{ + string::String, +}; + +use crate::Itertools; +use crate::intersperse::{Intersperse, IntersperseWith}; + +pub use crate::adaptors::{ + interleave, + merge, + put_back, +}; +#[cfg(feature = "use_alloc")] +pub use crate::put_back_n_impl::put_back_n; +#[cfg(feature = "use_alloc")] +pub use crate::multipeek_impl::multipeek; +#[cfg(feature = "use_alloc")] +pub use crate::peek_nth::peek_nth; +#[cfg(feature = "use_alloc")] +pub use crate::kmerge_impl::kmerge; +pub use crate::zip_eq_impl::zip_eq; +pub use crate::merge_join::merge_join_by; +#[cfg(feature = "use_alloc")] +pub use crate::rciter_impl::rciter; + +/// Iterate `iterable` with a particular value inserted between each element. +/// +/// [`IntoIterator`] enabled version of [`Iterator::intersperse`]. +/// +/// ``` +/// use itertools::intersperse; +/// +/// itertools::assert_equal(intersperse((0..3), 8), vec![0, 8, 1, 8, 2]); +/// ``` +pub fn intersperse(iterable: I, element: I::Item) -> Intersperse + where I: IntoIterator, + ::Item: Clone +{ + Itertools::intersperse(iterable.into_iter(), element) +} + +/// Iterate `iterable` with a particular value created by a function inserted +/// between each element. +/// +/// [`IntoIterator`] enabled version of [`Iterator::intersperse_with`]. +/// +/// ``` +/// use itertools::intersperse_with; +/// +/// let mut i = 10; +/// itertools::assert_equal(intersperse_with((0..3), || { i -= 1; i }), vec![0, 9, 1, 8, 2]); +/// assert_eq!(i, 8); +/// ``` +pub fn intersperse_with(iterable: I, element: F) -> IntersperseWith + where I: IntoIterator, + F: FnMut() -> I::Item +{ + Itertools::intersperse_with(iterable.into_iter(), element) +} + +/// Iterate `iterable` with a running index. +/// +/// [`IntoIterator`] enabled version of [`Iterator::enumerate`]. +/// +/// ``` +/// use itertools::enumerate; +/// +/// for (i, elt) in enumerate(&[1, 2, 3]) { +/// /* loop body */ +/// } +/// ``` +pub fn enumerate(iterable: I) -> iter::Enumerate + where I: IntoIterator +{ + iterable.into_iter().enumerate() +} + +/// Iterate `iterable` in reverse. +/// +/// [`IntoIterator`] enabled version of [`Iterator::rev`]. +/// +/// ``` +/// use itertools::rev; +/// +/// for elt in rev(&[1, 2, 3]) { +/// /* loop body */ +/// } +/// ``` +pub fn rev(iterable: I) -> iter::Rev + where I: IntoIterator, + I::IntoIter: DoubleEndedIterator +{ + iterable.into_iter().rev() +} + +/// Converts the arguments to iterators and zips them. +/// +/// [`IntoIterator`] enabled version of [`Iterator::zip`]. +/// +/// ## Example +/// +/// ``` +/// use itertools::zip; +/// +/// let mut result: Vec<(i32, char)> = Vec::new(); +/// +/// for (a, b) in zip(&[1, 2, 3, 4, 5], &['a', 'b', 'c']) { +/// result.push((*a, *b)); +/// } +/// assert_eq!(result, vec![(1, 'a'),(2, 'b'),(3, 'c')]); +/// ``` +#[deprecated(note="Use [std::iter::zip](https://doc.rust-lang.org/std/iter/fn.zip.html) instead", since="0.10.4")] +pub fn zip(i: I, j: J) -> Zip + where I: IntoIterator, + J: IntoIterator +{ + i.into_iter().zip(j) +} + + +/// Takes two iterables and creates a new iterator over both in sequence. +/// +/// [`IntoIterator`] enabled version of [`Iterator::chain`]. +/// +/// ## Example +/// ``` +/// use itertools::chain; +/// +/// let mut result:Vec = Vec::new(); +/// +/// for element in chain(&[1, 2, 3], &[4]) { +/// result.push(*element); +/// } +/// assert_eq!(result, vec![1, 2, 3, 4]); +/// ``` +pub fn chain(i: I, j: J) -> iter::Chain<::IntoIter, ::IntoIter> + where I: IntoIterator, + J: IntoIterator +{ + i.into_iter().chain(j) +} + +/// Create an iterator that clones each element from &T to T +/// +/// [`IntoIterator`] enabled version of [`Iterator::cloned`]. +/// +/// ``` +/// use itertools::cloned; +/// +/// assert_eq!(cloned(b"abc").next(), Some(b'a')); +/// ``` +pub fn cloned<'a, I, T: 'a>(iterable: I) -> iter::Cloned + where I: IntoIterator, + T: Clone, +{ + iterable.into_iter().cloned() +} + +/// Perform a fold operation over the iterable. +/// +/// [`IntoIterator`] enabled version of [`Iterator::fold`]. +/// +/// ``` +/// use itertools::fold; +/// +/// assert_eq!(fold(&[1., 2., 3.], 0., |a, &b| f32::max(a, b)), 3.); +/// ``` +pub fn fold(iterable: I, init: B, f: F) -> B + where I: IntoIterator, + F: FnMut(B, I::Item) -> B +{ + iterable.into_iter().fold(init, f) +} + +/// Test whether the predicate holds for all elements in the iterable. +/// +/// [`IntoIterator`] enabled version of [`Iterator::all`]. +/// +/// ``` +/// use itertools::all; +/// +/// assert!(all(&[1, 2, 3], |elt| *elt > 0)); +/// ``` +pub fn all(iterable: I, f: F) -> bool + where I: IntoIterator, + F: FnMut(I::Item) -> bool +{ + iterable.into_iter().all(f) +} + +/// Test whether the predicate holds for any elements in the iterable. +/// +/// [`IntoIterator`] enabled version of [`Iterator::any`]. +/// +/// ``` +/// use itertools::any; +/// +/// assert!(any(&[0, -1, 2], |elt| *elt > 0)); +/// ``` +pub fn any(iterable: I, f: F) -> bool + where I: IntoIterator, + F: FnMut(I::Item) -> bool +{ + iterable.into_iter().any(f) +} + +/// Return the maximum value of the iterable. +/// +/// [`IntoIterator`] enabled version of [`Iterator::max`]. +/// +/// ``` +/// use itertools::max; +/// +/// assert_eq!(max(0..10), Some(9)); +/// ``` +pub fn max(iterable: I) -> Option + where I: IntoIterator, + I::Item: Ord +{ + iterable.into_iter().max() +} + +/// Return the minimum value of the iterable. +/// +/// [`IntoIterator`] enabled version of [`Iterator::min`]. +/// +/// ``` +/// use itertools::min; +/// +/// assert_eq!(min(0..10), Some(0)); +/// ``` +pub fn min(iterable: I) -> Option + where I: IntoIterator, + I::Item: Ord +{ + iterable.into_iter().min() +} + + +/// Combine all iterator elements into one String, separated by `sep`. +/// +/// [`IntoIterator`] enabled version of [`Itertools::join`]. +/// +/// ``` +/// use itertools::join; +/// +/// assert_eq!(join(&[1, 2, 3], ", "), "1, 2, 3"); +/// ``` +#[cfg(feature = "use_alloc")] +pub fn join(iterable: I, sep: &str) -> String + where I: IntoIterator, + I::Item: Display +{ + iterable.into_iter().join(sep) +} + +/// Sort all iterator elements into a new iterator in ascending order. +/// +/// [`IntoIterator`] enabled version of [`Itertools::sorted`]. +/// +/// ``` +/// use itertools::sorted; +/// use itertools::assert_equal; +/// +/// assert_equal(sorted("rust".chars()), "rstu".chars()); +/// ``` +#[cfg(feature = "use_alloc")] +pub fn sorted(iterable: I) -> VecIntoIter + where I: IntoIterator, + I::Item: Ord +{ + iterable.into_iter().sorted() +} + diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/groupbylazy.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/groupbylazy.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/groupbylazy.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/groupbylazy.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,571 @@ +use std::cell::{Cell, RefCell}; +use alloc::vec::{self, Vec}; + +/// A trait to unify `FnMut` for `GroupBy` with the chunk key in `IntoChunks` +trait KeyFunction { + type Key; + fn call_mut(&mut self, arg: A) -> Self::Key; +} + +impl KeyFunction for F + where F: FnMut(A) -> K +{ + type Key = K; + #[inline] + fn call_mut(&mut self, arg: A) -> Self::Key { + (*self)(arg) + } +} + + +/// `ChunkIndex` acts like the grouping key function for `IntoChunks` +#[derive(Debug)] +struct ChunkIndex { + size: usize, + index: usize, + key: usize, +} + +impl ChunkIndex { + #[inline(always)] + fn new(size: usize) -> Self { + ChunkIndex { + size, + index: 0, + key: 0, + } + } +} + +impl KeyFunction for ChunkIndex { + type Key = usize; + #[inline(always)] + fn call_mut(&mut self, _arg: A) -> Self::Key { + if self.index == self.size { + self.key += 1; + self.index = 0; + } + self.index += 1; + self.key + } +} + + +struct GroupInner + where I: Iterator +{ + key: F, + iter: I, + current_key: Option, + current_elt: Option, + /// flag set if iterator is exhausted + done: bool, + /// Index of group we are currently buffering or visiting + top_group: usize, + /// Least index for which we still have elements buffered + oldest_buffered_group: usize, + /// Group index for `buffer[0]` -- the slots + /// bottom_group..oldest_buffered_group are unused and will be erased when + /// that range is large enough. + bottom_group: usize, + /// Buffered groups, from `bottom_group` (index 0) to `top_group`. + buffer: Vec>, + /// index of last group iter that was dropped, usize::MAX == none + dropped_group: usize, +} + +impl GroupInner + where I: Iterator, + F: for<'a> KeyFunction<&'a I::Item, Key=K>, + K: PartialEq, +{ + /// `client`: Index of group that requests next element + #[inline(always)] + fn step(&mut self, client: usize) -> Option { + /* + println!("client={}, bottom_group={}, oldest_buffered_group={}, top_group={}, buffers=[{}]", + client, self.bottom_group, self.oldest_buffered_group, + self.top_group, + self.buffer.iter().map(|elt| elt.len()).format(", ")); + */ + if client < self.oldest_buffered_group { + None + } else if client < self.top_group || + (client == self.top_group && + self.buffer.len() > self.top_group - self.bottom_group) + { + self.lookup_buffer(client) + } else if self.done { + None + } else if self.top_group == client { + self.step_current() + } else { + self.step_buffering(client) + } + } + + #[inline(never)] + fn lookup_buffer(&mut self, client: usize) -> Option { + // if `bufidx` doesn't exist in self.buffer, it might be empty + let bufidx = client - self.bottom_group; + if client < self.oldest_buffered_group { + return None; + } + let elt = self.buffer.get_mut(bufidx).and_then(|queue| queue.next()); + if elt.is_none() && client == self.oldest_buffered_group { + // FIXME: VecDeque is unfortunately not zero allocation when empty, + // so we do this job manually. + // `bottom_group..oldest_buffered_group` is unused, and if it's large enough, erase it. + self.oldest_buffered_group += 1; + // skip forward further empty queues too + while self.buffer.get(self.oldest_buffered_group - self.bottom_group) + .map_or(false, |buf| buf.len() == 0) + { + self.oldest_buffered_group += 1; + } + + let nclear = self.oldest_buffered_group - self.bottom_group; + if nclear > 0 && nclear >= self.buffer.len() / 2 { + let mut i = 0; + self.buffer.retain(|buf| { + i += 1; + debug_assert!(buf.len() == 0 || i > nclear); + i > nclear + }); + self.bottom_group = self.oldest_buffered_group; + } + } + elt + } + + /// Take the next element from the iterator, and set the done + /// flag if exhausted. Must not be called after done. + #[inline(always)] + fn next_element(&mut self) -> Option { + debug_assert!(!self.done); + match self.iter.next() { + None => { self.done = true; None } + otherwise => otherwise, + } + } + + + #[inline(never)] + fn step_buffering(&mut self, client: usize) -> Option { + // requested a later group -- walk through the current group up to + // the requested group index, and buffer the elements (unless + // the group is marked as dropped). + // Because the `Groups` iterator is always the first to request + // each group index, client is the next index efter top_group. + debug_assert!(self.top_group + 1 == client); + let mut group = Vec::new(); + + if let Some(elt) = self.current_elt.take() { + if self.top_group != self.dropped_group { + group.push(elt); + } + } + let mut first_elt = None; // first element of the next group + + while let Some(elt) = self.next_element() { + let key = self.key.call_mut(&elt); + match self.current_key.take() { + None => {} + Some(old_key) => if old_key != key { + self.current_key = Some(key); + first_elt = Some(elt); + break; + }, + } + self.current_key = Some(key); + if self.top_group != self.dropped_group { + group.push(elt); + } + } + + if self.top_group != self.dropped_group { + self.push_next_group(group); + } + if first_elt.is_some() { + self.top_group += 1; + debug_assert!(self.top_group == client); + } + first_elt + } + + fn push_next_group(&mut self, group: Vec) { + // When we add a new buffered group, fill up slots between oldest_buffered_group and top_group + while self.top_group - self.bottom_group > self.buffer.len() { + if self.buffer.is_empty() { + self.bottom_group += 1; + self.oldest_buffered_group += 1; + } else { + self.buffer.push(Vec::new().into_iter()); + } + } + self.buffer.push(group.into_iter()); + debug_assert!(self.top_group + 1 - self.bottom_group == self.buffer.len()); + } + + /// This is the immediate case, where we use no buffering + #[inline] + fn step_current(&mut self) -> Option { + debug_assert!(!self.done); + if let elt @ Some(..) = self.current_elt.take() { + return elt; + } + match self.next_element() { + None => None, + Some(elt) => { + let key = self.key.call_mut(&elt); + match self.current_key.take() { + None => {} + Some(old_key) => if old_key != key { + self.current_key = Some(key); + self.current_elt = Some(elt); + self.top_group += 1; + return None; + }, + } + self.current_key = Some(key); + Some(elt) + } + } + } + + /// Request the just started groups' key. + /// + /// `client`: Index of group + /// + /// **Panics** if no group key is available. + fn group_key(&mut self, client: usize) -> K { + // This can only be called after we have just returned the first + // element of a group. + // Perform this by simply buffering one more element, grabbing the + // next key. + debug_assert!(!self.done); + debug_assert!(client == self.top_group); + debug_assert!(self.current_key.is_some()); + debug_assert!(self.current_elt.is_none()); + let old_key = self.current_key.take().unwrap(); + if let Some(elt) = self.next_element() { + let key = self.key.call_mut(&elt); + if old_key != key { + self.top_group += 1; + } + self.current_key = Some(key); + self.current_elt = Some(elt); + } + old_key + } +} + +impl GroupInner + where I: Iterator, +{ + /// Called when a group is dropped + fn drop_group(&mut self, client: usize) { + // It's only useful to track the maximal index + if self.dropped_group == !0 || client > self.dropped_group { + self.dropped_group = client; + } + } +} + +/// `GroupBy` is the storage for the lazy grouping operation. +/// +/// If the groups are consumed in their original order, or if each +/// group is dropped without keeping it around, then `GroupBy` uses +/// no allocations. It needs allocations only if several group iterators +/// are alive at the same time. +/// +/// This type implements [`IntoIterator`] (it is **not** an iterator +/// itself), because the group iterators need to borrow from this +/// value. It should be stored in a local variable or temporary and +/// iterated. +/// +/// See [`.group_by()`](crate::Itertools::group_by) for more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct GroupBy + where I: Iterator, +{ + inner: RefCell>, + // the group iterator's current index. Keep this in the main value + // so that simultaneous iterators all use the same state. + index: Cell, +} + +/// Create a new +pub fn new(iter: J, f: F) -> GroupBy + where J: IntoIterator, + F: FnMut(&J::Item) -> K, +{ + GroupBy { + inner: RefCell::new(GroupInner { + key: f, + iter: iter.into_iter(), + current_key: None, + current_elt: None, + done: false, + top_group: 0, + oldest_buffered_group: 0, + bottom_group: 0, + buffer: Vec::new(), + dropped_group: !0, + }), + index: Cell::new(0), + } +} + +impl GroupBy + where I: Iterator, +{ + /// `client`: Index of group that requests next element + fn step(&self, client: usize) -> Option + where F: FnMut(&I::Item) -> K, + K: PartialEq, + { + self.inner.borrow_mut().step(client) + } + + /// `client`: Index of group + fn drop_group(&self, client: usize) { + self.inner.borrow_mut().drop_group(client); + } +} + +impl<'a, K, I, F> IntoIterator for &'a GroupBy + where I: Iterator, + I::Item: 'a, + F: FnMut(&I::Item) -> K, + K: PartialEq +{ + type Item = (K, Group<'a, K, I, F>); + type IntoIter = Groups<'a, K, I, F>; + + fn into_iter(self) -> Self::IntoIter { + Groups { parent: self } + } +} + + +/// An iterator that yields the Group iterators. +/// +/// Iterator element type is `(K, Group)`: +/// the group's key `K` and the group's iterator. +/// +/// See [`.group_by()`](crate::Itertools::group_by) for more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct Groups<'a, K: 'a, I: 'a, F: 'a> + where I: Iterator, + I::Item: 'a +{ + parent: &'a GroupBy, +} + +impl<'a, K, I, F> Iterator for Groups<'a, K, I, F> + where I: Iterator, + I::Item: 'a, + F: FnMut(&I::Item) -> K, + K: PartialEq +{ + type Item = (K, Group<'a, K, I, F>); + + #[inline] + fn next(&mut self) -> Option { + let index = self.parent.index.get(); + self.parent.index.set(index + 1); + let inner = &mut *self.parent.inner.borrow_mut(); + inner.step(index).map(|elt| { + let key = inner.group_key(index); + (key, Group { + parent: self.parent, + index, + first: Some(elt), + }) + }) + } +} + +/// An iterator for the elements in a single group. +/// +/// Iterator element type is `I::Item`. +pub struct Group<'a, K: 'a, I: 'a, F: 'a> + where I: Iterator, + I::Item: 'a, +{ + parent: &'a GroupBy, + index: usize, + first: Option, +} + +impl<'a, K, I, F> Drop for Group<'a, K, I, F> + where I: Iterator, + I::Item: 'a, +{ + fn drop(&mut self) { + self.parent.drop_group(self.index); + } +} + +impl<'a, K, I, F> Iterator for Group<'a, K, I, F> + where I: Iterator, + I::Item: 'a, + F: FnMut(&I::Item) -> K, + K: PartialEq, +{ + type Item = I::Item; + #[inline] + fn next(&mut self) -> Option { + if let elt @ Some(..) = self.first.take() { + return elt; + } + self.parent.step(self.index) + } +} + +///// IntoChunks ///// + +/// Create a new +pub fn new_chunks(iter: J, size: usize) -> IntoChunks + where J: IntoIterator, +{ + IntoChunks { + inner: RefCell::new(GroupInner { + key: ChunkIndex::new(size), + iter: iter.into_iter(), + current_key: None, + current_elt: None, + done: false, + top_group: 0, + oldest_buffered_group: 0, + bottom_group: 0, + buffer: Vec::new(), + dropped_group: !0, + }), + index: Cell::new(0), + } +} + + +/// `ChunkLazy` is the storage for a lazy chunking operation. +/// +/// `IntoChunks` behaves just like `GroupBy`: it is iterable, and +/// it only buffers if several chunk iterators are alive at the same time. +/// +/// This type implements [`IntoIterator`] (it is **not** an iterator +/// itself), because the chunk iterators need to borrow from this +/// value. It should be stored in a local variable or temporary and +/// iterated. +/// +/// Iterator element type is `Chunk`, each chunk's iterator. +/// +/// See [`.chunks()`](crate::Itertools::chunks) for more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct IntoChunks + where I: Iterator, +{ + inner: RefCell>, + // the chunk iterator's current index. Keep this in the main value + // so that simultaneous iterators all use the same state. + index: Cell, +} + + +impl IntoChunks + where I: Iterator, +{ + /// `client`: Index of chunk that requests next element + fn step(&self, client: usize) -> Option { + self.inner.borrow_mut().step(client) + } + + /// `client`: Index of chunk + fn drop_group(&self, client: usize) { + self.inner.borrow_mut().drop_group(client); + } +} + +impl<'a, I> IntoIterator for &'a IntoChunks + where I: Iterator, + I::Item: 'a, +{ + type Item = Chunk<'a, I>; + type IntoIter = Chunks<'a, I>; + + fn into_iter(self) -> Self::IntoIter { + Chunks { + parent: self, + } + } +} + + +/// An iterator that yields the Chunk iterators. +/// +/// Iterator element type is `Chunk`. +/// +/// See [`.chunks()`](crate::Itertools::chunks) for more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct Chunks<'a, I: 'a> + where I: Iterator, + I::Item: 'a, +{ + parent: &'a IntoChunks, +} + +impl<'a, I> Iterator for Chunks<'a, I> + where I: Iterator, + I::Item: 'a, +{ + type Item = Chunk<'a, I>; + + #[inline] + fn next(&mut self) -> Option { + let index = self.parent.index.get(); + self.parent.index.set(index + 1); + let inner = &mut *self.parent.inner.borrow_mut(); + inner.step(index).map(|elt| { + Chunk { + parent: self.parent, + index, + first: Some(elt), + } + }) + } +} + +/// An iterator for the elements in a single chunk. +/// +/// Iterator element type is `I::Item`. +pub struct Chunk<'a, I: 'a> + where I: Iterator, + I::Item: 'a, +{ + parent: &'a IntoChunks, + index: usize, + first: Option, +} + +impl<'a, I> Drop for Chunk<'a, I> + where I: Iterator, + I::Item: 'a, +{ + fn drop(&mut self) { + self.parent.drop_group(self.index); + } +} + +impl<'a, I> Iterator for Chunk<'a, I> + where I: Iterator, + I::Item: 'a, +{ + type Item = I::Item; + #[inline] + fn next(&mut self) -> Option { + if let elt @ Some(..) = self.first.take() { + return elt; + } + self.parent.step(self.index) + } +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/grouping_map.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/grouping_map.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/grouping_map.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/grouping_map.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,535 @@ +#![cfg(feature = "use_std")] + +use crate::MinMaxResult; +use std::collections::HashMap; +use std::cmp::Ordering; +use std::hash::Hash; +use std::iter::Iterator; +use std::ops::{Add, Mul}; + +/// A wrapper to allow for an easy [`into_grouping_map_by`](crate::Itertools::into_grouping_map_by) +#[derive(Clone, Debug)] +pub struct MapForGrouping(I, F); + +impl MapForGrouping { + pub(crate) fn new(iter: I, key_mapper: F) -> Self { + Self(iter, key_mapper) + } +} + +impl Iterator for MapForGrouping + where I: Iterator, + K: Hash + Eq, + F: FnMut(&V) -> K, +{ + type Item = (K, V); + fn next(&mut self) -> Option { + self.0.next().map(|val| ((self.1)(&val), val)) + } +} + +/// Creates a new `GroupingMap` from `iter` +pub fn new(iter: I) -> GroupingMap + where I: Iterator, + K: Hash + Eq, +{ + GroupingMap { iter } +} + +/// `GroupingMapBy` is an intermediate struct for efficient group-and-fold operations. +/// +/// See [`GroupingMap`] for more informations. +pub type GroupingMapBy = GroupingMap>; + +/// `GroupingMap` is an intermediate struct for efficient group-and-fold operations. +/// It groups elements by their key and at the same time fold each group +/// using some aggregating operation. +/// +/// No method on this struct performs temporary allocations. +#[derive(Clone, Debug)] +#[must_use = "GroupingMap is lazy and do nothing unless consumed"] +pub struct GroupingMap { + iter: I, +} + +impl GroupingMap + where I: Iterator, + K: Hash + Eq, +{ + /// This is the generic way to perform any operation on a `GroupingMap`. + /// It's suggested to use this method only to implement custom operations + /// when the already provided ones are not enough. + /// + /// Groups elements from the `GroupingMap` source by key and applies `operation` to the elements + /// of each group sequentially, passing the previously accumulated value, a reference to the key + /// and the current element as arguments, and stores the results in an `HashMap`. + /// + /// The `operation` function is invoked on each element with the following parameters: + /// - the current value of the accumulator of the group if there is currently one; + /// - a reference to the key of the group this element belongs to; + /// - the element from the source being aggregated; + /// + /// If `operation` returns `Some(element)` then the accumulator is updated with `element`, + /// otherwise the previous accumulation is discarded. + /// + /// Return a `HashMap` associating the key of each group with the result of aggregation of + /// that group's elements. If the aggregation of the last element of a group discards the + /// accumulator then there won't be an entry associated to that group's key. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let data = vec![2, 8, 5, 7, 9, 0, 4, 10]; + /// let lookup = data.into_iter() + /// .into_grouping_map_by(|&n| n % 4) + /// .aggregate(|acc, _key, val| { + /// if val == 0 || val == 10 { + /// None + /// } else { + /// Some(acc.unwrap_or(0) + val) + /// } + /// }); + /// + /// assert_eq!(lookup[&0], 4); // 0 resets the accumulator so only 4 is summed + /// assert_eq!(lookup[&1], 5 + 9); + /// assert_eq!(lookup.get(&2), None); // 10 resets the accumulator and nothing is summed afterward + /// assert_eq!(lookup[&3], 7); + /// assert_eq!(lookup.len(), 3); // The final keys are only 0, 1 and 2 + /// ``` + pub fn aggregate(self, mut operation: FO) -> HashMap + where FO: FnMut(Option, &K, V) -> Option, + { + let mut destination_map = HashMap::new(); + + self.iter.for_each(|(key, val)| { + let acc = destination_map.remove(&key); + if let Some(op_res) = operation(acc, &key, val) { + destination_map.insert(key, op_res); + } + }); + + destination_map + } + + /// Groups elements from the `GroupingMap` source by key and applies `operation` to the elements + /// of each group sequentially, passing the previously accumulated value, a reference to the key + /// and the current element as arguments, and stores the results in a new map. + /// + /// `init` is the value from which will be cloned the initial value of each accumulator. + /// + /// `operation` is a function that is invoked on each element with the following parameters: + /// - the current value of the accumulator of the group; + /// - a reference to the key of the group this element belongs to; + /// - the element from the source being accumulated. + /// + /// Return a `HashMap` associating the key of each group with the result of folding that group's elements. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let lookup = (1..=7) + /// .into_grouping_map_by(|&n| n % 3) + /// .fold(0, |acc, _key, val| acc + val); + /// + /// assert_eq!(lookup[&0], 3 + 6); + /// assert_eq!(lookup[&1], 1 + 4 + 7); + /// assert_eq!(lookup[&2], 2 + 5); + /// assert_eq!(lookup.len(), 3); + /// ``` + pub fn fold(self, init: R, mut operation: FO) -> HashMap + where R: Clone, + FO: FnMut(R, &K, V) -> R, + { + self.aggregate(|acc, key, val| { + let acc = acc.unwrap_or_else(|| init.clone()); + Some(operation(acc, key, val)) + }) + } + + /// Groups elements from the `GroupingMap` source by key and applies `operation` to the elements + /// of each group sequentially, passing the previously accumulated value, a reference to the key + /// and the current element as arguments, and stores the results in a new map. + /// + /// This is similar to [`fold`] but the initial value of the accumulator is the first element of the group. + /// + /// `operation` is a function that is invoked on each element with the following parameters: + /// - the current value of the accumulator of the group; + /// - a reference to the key of the group this element belongs to; + /// - the element from the source being accumulated. + /// + /// Return a `HashMap` associating the key of each group with the result of folding that group's elements. + /// + /// [`fold`]: GroupingMap::fold + /// + /// ``` + /// use itertools::Itertools; + /// + /// let lookup = (1..=7) + /// .into_grouping_map_by(|&n| n % 3) + /// .fold_first(|acc, _key, val| acc + val); + /// + /// assert_eq!(lookup[&0], 3 + 6); + /// assert_eq!(lookup[&1], 1 + 4 + 7); + /// assert_eq!(lookup[&2], 2 + 5); + /// assert_eq!(lookup.len(), 3); + /// ``` + pub fn fold_first(self, mut operation: FO) -> HashMap + where FO: FnMut(V, &K, V) -> V, + { + self.aggregate(|acc, key, val| { + Some(match acc { + Some(acc) => operation(acc, key, val), + None => val, + }) + }) + } + + /// Groups elements from the `GroupingMap` source by key and collects the elements of each group in + /// an instance of `C`. The iteration order is preserved when inserting elements. + /// + /// Return a `HashMap` associating the key of each group with the collection containing that group's elements. + /// + /// ``` + /// use itertools::Itertools; + /// use std::collections::HashSet; + /// + /// let lookup = vec![0, 1, 2, 3, 4, 5, 6, 2, 3, 6].into_iter() + /// .into_grouping_map_by(|&n| n % 3) + /// .collect::>(); + /// + /// assert_eq!(lookup[&0], vec![0, 3, 6].into_iter().collect::>()); + /// assert_eq!(lookup[&1], vec![1, 4].into_iter().collect::>()); + /// assert_eq!(lookup[&2], vec![2, 5].into_iter().collect::>()); + /// assert_eq!(lookup.len(), 3); + /// ``` + pub fn collect(self) -> HashMap + where C: Default + Extend, + { + let mut destination_map = HashMap::new(); + + self.iter.for_each(|(key, val)| { + destination_map.entry(key).or_insert_with(C::default).extend(Some(val)); + }); + + destination_map + } + + /// Groups elements from the `GroupingMap` source by key and finds the maximum of each group. + /// + /// If several elements are equally maximum, the last element is picked. + /// + /// Returns a `HashMap` associating the key of each group with the maximum of that group's elements. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let lookup = vec![1, 3, 4, 5, 7, 8, 9, 12].into_iter() + /// .into_grouping_map_by(|&n| n % 3) + /// .max(); + /// + /// assert_eq!(lookup[&0], 12); + /// assert_eq!(lookup[&1], 7); + /// assert_eq!(lookup[&2], 8); + /// assert_eq!(lookup.len(), 3); + /// ``` + pub fn max(self) -> HashMap + where V: Ord, + { + self.max_by(|_, v1, v2| V::cmp(v1, v2)) + } + + /// Groups elements from the `GroupingMap` source by key and finds the maximum of each group + /// with respect to the specified comparison function. + /// + /// If several elements are equally maximum, the last element is picked. + /// + /// Returns a `HashMap` associating the key of each group with the maximum of that group's elements. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let lookup = vec![1, 3, 4, 5, 7, 8, 9, 12].into_iter() + /// .into_grouping_map_by(|&n| n % 3) + /// .max_by(|_key, x, y| y.cmp(x)); + /// + /// assert_eq!(lookup[&0], 3); + /// assert_eq!(lookup[&1], 1); + /// assert_eq!(lookup[&2], 5); + /// assert_eq!(lookup.len(), 3); + /// ``` + pub fn max_by(self, mut compare: F) -> HashMap + where F: FnMut(&K, &V, &V) -> Ordering, + { + self.fold_first(|acc, key, val| match compare(key, &acc, &val) { + Ordering::Less | Ordering::Equal => val, + Ordering::Greater => acc + }) + } + + /// Groups elements from the `GroupingMap` source by key and finds the element of each group + /// that gives the maximum from the specified function. + /// + /// If several elements are equally maximum, the last element is picked. + /// + /// Returns a `HashMap` associating the key of each group with the maximum of that group's elements. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let lookup = vec![1, 3, 4, 5, 7, 8, 9, 12].into_iter() + /// .into_grouping_map_by(|&n| n % 3) + /// .max_by_key(|_key, &val| val % 4); + /// + /// assert_eq!(lookup[&0], 3); + /// assert_eq!(lookup[&1], 7); + /// assert_eq!(lookup[&2], 5); + /// assert_eq!(lookup.len(), 3); + /// ``` + pub fn max_by_key(self, mut f: F) -> HashMap + where F: FnMut(&K, &V) -> CK, + CK: Ord, + { + self.max_by(|key, v1, v2| f(key, v1).cmp(&f(key, v2))) + } + + /// Groups elements from the `GroupingMap` source by key and finds the minimum of each group. + /// + /// If several elements are equally minimum, the first element is picked. + /// + /// Returns a `HashMap` associating the key of each group with the minimum of that group's elements. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let lookup = vec![1, 3, 4, 5, 7, 8, 9, 12].into_iter() + /// .into_grouping_map_by(|&n| n % 3) + /// .min(); + /// + /// assert_eq!(lookup[&0], 3); + /// assert_eq!(lookup[&1], 1); + /// assert_eq!(lookup[&2], 5); + /// assert_eq!(lookup.len(), 3); + /// ``` + pub fn min(self) -> HashMap + where V: Ord, + { + self.min_by(|_, v1, v2| V::cmp(v1, v2)) + } + + /// Groups elements from the `GroupingMap` source by key and finds the minimum of each group + /// with respect to the specified comparison function. + /// + /// If several elements are equally minimum, the first element is picked. + /// + /// Returns a `HashMap` associating the key of each group with the minimum of that group's elements. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let lookup = vec![1, 3, 4, 5, 7, 8, 9, 12].into_iter() + /// .into_grouping_map_by(|&n| n % 3) + /// .min_by(|_key, x, y| y.cmp(x)); + /// + /// assert_eq!(lookup[&0], 12); + /// assert_eq!(lookup[&1], 7); + /// assert_eq!(lookup[&2], 8); + /// assert_eq!(lookup.len(), 3); + /// ``` + pub fn min_by(self, mut compare: F) -> HashMap + where F: FnMut(&K, &V, &V) -> Ordering, + { + self.fold_first(|acc, key, val| match compare(key, &acc, &val) { + Ordering::Less | Ordering::Equal => acc, + Ordering::Greater => val + }) + } + + /// Groups elements from the `GroupingMap` source by key and finds the element of each group + /// that gives the minimum from the specified function. + /// + /// If several elements are equally minimum, the first element is picked. + /// + /// Returns a `HashMap` associating the key of each group with the minimum of that group's elements. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let lookup = vec![1, 3, 4, 5, 7, 8, 9, 12].into_iter() + /// .into_grouping_map_by(|&n| n % 3) + /// .min_by_key(|_key, &val| val % 4); + /// + /// assert_eq!(lookup[&0], 12); + /// assert_eq!(lookup[&1], 4); + /// assert_eq!(lookup[&2], 8); + /// assert_eq!(lookup.len(), 3); + /// ``` + pub fn min_by_key(self, mut f: F) -> HashMap + where F: FnMut(&K, &V) -> CK, + CK: Ord, + { + self.min_by(|key, v1, v2| f(key, v1).cmp(&f(key, v2))) + } + + /// Groups elements from the `GroupingMap` source by key and find the maximum and minimum of + /// each group. + /// + /// If several elements are equally maximum, the last element is picked. + /// If several elements are equally minimum, the first element is picked. + /// + /// See [.minmax()](crate::Itertools::minmax) for the non-grouping version. + /// + /// Differences from the non grouping version: + /// - It never produces a `MinMaxResult::NoElements` + /// - It doesn't have any speedup + /// + /// Returns a `HashMap` associating the key of each group with the minimum and maximum of that group's elements. + /// + /// ``` + /// use itertools::Itertools; + /// use itertools::MinMaxResult::{OneElement, MinMax}; + /// + /// let lookup = vec![1, 3, 4, 5, 7, 9, 12].into_iter() + /// .into_grouping_map_by(|&n| n % 3) + /// .minmax(); + /// + /// assert_eq!(lookup[&0], MinMax(3, 12)); + /// assert_eq!(lookup[&1], MinMax(1, 7)); + /// assert_eq!(lookup[&2], OneElement(5)); + /// assert_eq!(lookup.len(), 3); + /// ``` + pub fn minmax(self) -> HashMap> + where V: Ord, + { + self.minmax_by(|_, v1, v2| V::cmp(v1, v2)) + } + + /// Groups elements from the `GroupingMap` source by key and find the maximum and minimum of + /// each group with respect to the specified comparison function. + /// + /// If several elements are equally maximum, the last element is picked. + /// If several elements are equally minimum, the first element is picked. + /// + /// It has the same differences from the non-grouping version as `minmax`. + /// + /// Returns a `HashMap` associating the key of each group with the minimum and maximum of that group's elements. + /// + /// ``` + /// use itertools::Itertools; + /// use itertools::MinMaxResult::{OneElement, MinMax}; + /// + /// let lookup = vec![1, 3, 4, 5, 7, 9, 12].into_iter() + /// .into_grouping_map_by(|&n| n % 3) + /// .minmax_by(|_key, x, y| y.cmp(x)); + /// + /// assert_eq!(lookup[&0], MinMax(12, 3)); + /// assert_eq!(lookup[&1], MinMax(7, 1)); + /// assert_eq!(lookup[&2], OneElement(5)); + /// assert_eq!(lookup.len(), 3); + /// ``` + pub fn minmax_by(self, mut compare: F) -> HashMap> + where F: FnMut(&K, &V, &V) -> Ordering, + { + self.aggregate(|acc, key, val| { + Some(match acc { + Some(MinMaxResult::OneElement(e)) => { + if compare(key, &val, &e) == Ordering::Less { + MinMaxResult::MinMax(val, e) + } else { + MinMaxResult::MinMax(e, val) + } + } + Some(MinMaxResult::MinMax(min, max)) => { + if compare(key, &val, &min) == Ordering::Less { + MinMaxResult::MinMax(val, max) + } else if compare(key, &val, &max) != Ordering::Less { + MinMaxResult::MinMax(min, val) + } else { + MinMaxResult::MinMax(min, max) + } + } + None => MinMaxResult::OneElement(val), + Some(MinMaxResult::NoElements) => unreachable!(), + }) + }) + } + + /// Groups elements from the `GroupingMap` source by key and find the elements of each group + /// that gives the minimum and maximum from the specified function. + /// + /// If several elements are equally maximum, the last element is picked. + /// If several elements are equally minimum, the first element is picked. + /// + /// It has the same differences from the non-grouping version as `minmax`. + /// + /// Returns a `HashMap` associating the key of each group with the minimum and maximum of that group's elements. + /// + /// ``` + /// use itertools::Itertools; + /// use itertools::MinMaxResult::{OneElement, MinMax}; + /// + /// let lookup = vec![1, 3, 4, 5, 7, 9, 12].into_iter() + /// .into_grouping_map_by(|&n| n % 3) + /// .minmax_by_key(|_key, &val| val % 4); + /// + /// assert_eq!(lookup[&0], MinMax(12, 3)); + /// assert_eq!(lookup[&1], MinMax(4, 7)); + /// assert_eq!(lookup[&2], OneElement(5)); + /// assert_eq!(lookup.len(), 3); + /// ``` + pub fn minmax_by_key(self, mut f: F) -> HashMap> + where F: FnMut(&K, &V) -> CK, + CK: Ord, + { + self.minmax_by(|key, v1, v2| f(key, v1).cmp(&f(key, v2))) + } + + /// Groups elements from the `GroupingMap` source by key and sums them. + /// + /// This is just a shorthand for `self.fold_first(|acc, _, val| acc + val)`. + /// It is more limited than `Iterator::sum` since it doesn't use the `Sum` trait. + /// + /// Returns a `HashMap` associating the key of each group with the sum of that group's elements. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let lookup = vec![1, 3, 4, 5, 7, 8, 9, 12].into_iter() + /// .into_grouping_map_by(|&n| n % 3) + /// .sum(); + /// + /// assert_eq!(lookup[&0], 3 + 9 + 12); + /// assert_eq!(lookup[&1], 1 + 4 + 7); + /// assert_eq!(lookup[&2], 5 + 8); + /// assert_eq!(lookup.len(), 3); + /// ``` + pub fn sum(self) -> HashMap + where V: Add + { + self.fold_first(|acc, _, val| acc + val) + } + + /// Groups elements from the `GroupingMap` source by key and multiply them. + /// + /// This is just a shorthand for `self.fold_first(|acc, _, val| acc * val)`. + /// It is more limited than `Iterator::product` since it doesn't use the `Product` trait. + /// + /// Returns a `HashMap` associating the key of each group with the product of that group's elements. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let lookup = vec![1, 3, 4, 5, 7, 8, 9, 12].into_iter() + /// .into_grouping_map_by(|&n| n % 3) + /// .product(); + /// + /// assert_eq!(lookup[&0], 3 * 9 * 12); + /// assert_eq!(lookup[&1], 1 * 4 * 7); + /// assert_eq!(lookup[&2], 5 * 8); + /// assert_eq!(lookup.len(), 3); + /// ``` + pub fn product(self) -> HashMap + where V: Mul, + { + self.fold_first(|acc, _, val| acc * val) + } +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/group_map.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/group_map.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/group_map.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/group_map.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,32 @@ +#![cfg(feature = "use_std")] + +use std::collections::HashMap; +use std::hash::Hash; +use std::iter::Iterator; + +/// Return a `HashMap` of keys mapped to a list of their corresponding values. +/// +/// See [`.into_group_map()`](crate::Itertools::into_group_map) +/// for more information. +pub fn into_group_map(iter: I) -> HashMap> + where I: Iterator, + K: Hash + Eq, +{ + let mut lookup = HashMap::new(); + + iter.for_each(|(key, val)| { + lookup.entry(key).or_insert_with(Vec::new).push(val); + }); + + lookup +} + +pub fn into_group_map_by(iter: I, f: impl Fn(&V) -> K) -> HashMap> + where + I: Iterator, + K: Hash + Eq, +{ + into_group_map( + iter.map(|v| (f(&v), v)) + ) +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/impl_macros.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/impl_macros.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/impl_macros.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/impl_macros.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,29 @@ +//! +//! Implementation's internal macros + +macro_rules! debug_fmt_fields { + ($tyname:ident, $($($field:tt/*TODO ideally we would accept ident or tuple element here*/).+),*) => { + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(stringify!($tyname)) + $( + .field(stringify!($($field).+), &self.$($field).+) + )* + .finish() + } + } +} + +macro_rules! clone_fields { + ($($field:ident),*) => { + #[inline] // TODO is this sensible? + fn clone(&self) -> Self { + Self { + $($field: self.$field.clone(),)* + } + } + } +} + +macro_rules! ignore_ident{ + ($id:ident, $($t:tt)*) => {$($t)*}; +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/intersperse.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/intersperse.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/intersperse.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/intersperse.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,118 @@ +use std::iter::{Fuse, FusedIterator}; +use super::size_hint; + +pub trait IntersperseElement { + fn generate(&mut self) -> Item; +} + +#[derive(Debug, Clone)] +pub struct IntersperseElementSimple(Item); + +impl IntersperseElement for IntersperseElementSimple { + fn generate(&mut self) -> Item { + self.0.clone() + } +} + +/// An iterator adaptor to insert a particular value +/// between each element of the adapted iterator. +/// +/// Iterator element type is `I::Item` +/// +/// This iterator is *fused*. +/// +/// See [`.intersperse()`](crate::Itertools::intersperse) for more information. +pub type Intersperse = IntersperseWith::Item>>; + +/// Create a new Intersperse iterator +pub fn intersperse(iter: I, elt: I::Item) -> Intersperse + where I: Iterator, +{ + intersperse_with(iter, IntersperseElementSimple(elt)) +} + +implItem> IntersperseElement for F { + fn generate(&mut self) -> Item { + self() + } +} + +/// An iterator adaptor to insert a particular value created by a function +/// between each element of the adapted iterator. +/// +/// Iterator element type is `I::Item` +/// +/// This iterator is *fused*. +/// +/// See [`.intersperse_with()`](crate::Itertools::intersperse_with) for more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +#[derive(Clone, Debug)] +pub struct IntersperseWith + where I: Iterator, +{ + element: ElemF, + iter: Fuse, + peek: Option, +} + +/// Create a new `IntersperseWith` iterator +pub fn intersperse_with(iter: I, elt: ElemF) -> IntersperseWith + where I: Iterator, +{ + let mut iter = iter.fuse(); + IntersperseWith { + peek: iter.next(), + iter, + element: elt, + } +} + +impl Iterator for IntersperseWith + where I: Iterator, + ElemF: IntersperseElement +{ + type Item = I::Item; + #[inline] + fn next(&mut self) -> Option { + if self.peek.is_some() { + self.peek.take() + } else { + self.peek = self.iter.next(); + if self.peek.is_some() { + Some(self.element.generate()) + } else { + None + } + } + } + + fn size_hint(&self) -> (usize, Option) { + // 2 * SH + { 1 or 0 } + let has_peek = self.peek.is_some() as usize; + let sh = self.iter.size_hint(); + size_hint::add_scalar(size_hint::add(sh, sh), has_peek) + } + + fn fold(mut self, init: B, mut f: F) -> B where + Self: Sized, F: FnMut(B, Self::Item) -> B, + { + let mut accum = init; + + if let Some(x) = self.peek.take() { + accum = f(accum, x); + } + + let element = &mut self.element; + + self.iter.fold(accum, + |accum, x| { + let accum = f(accum, element.generate()); + f(accum, x) + }) + } +} + +impl FusedIterator for IntersperseWith + where I: Iterator, + ElemF: IntersperseElement +{} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/kmerge_impl.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/kmerge_impl.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/kmerge_impl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/kmerge_impl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,227 @@ +use crate::size_hint; +use crate::Itertools; + +use alloc::vec::Vec; +use std::iter::FusedIterator; +use std::mem::replace; +use std::fmt; + +/// Head element and Tail iterator pair +/// +/// `PartialEq`, `Eq`, `PartialOrd` and `Ord` are implemented by comparing sequences based on +/// first items (which are guaranteed to exist). +/// +/// The meanings of `PartialOrd` and `Ord` are reversed so as to turn the heap used in +/// `KMerge` into a min-heap. +#[derive(Debug)] +struct HeadTail + where I: Iterator +{ + head: I::Item, + tail: I, +} + +impl HeadTail + where I: Iterator +{ + /// Constructs a `HeadTail` from an `Iterator`. Returns `None` if the `Iterator` is empty. + fn new(mut it: I) -> Option> { + let head = it.next(); + head.map(|h| { + HeadTail { + head: h, + tail: it, + } + }) + } + + /// Get the next element and update `head`, returning the old head in `Some`. + /// + /// Returns `None` when the tail is exhausted (only `head` then remains). + fn next(&mut self) -> Option { + if let Some(next) = self.tail.next() { + Some(replace(&mut self.head, next)) + } else { + None + } + } + + /// Hints at the size of the sequence, same as the `Iterator` method. + fn size_hint(&self) -> (usize, Option) { + size_hint::add_scalar(self.tail.size_hint(), 1) + } +} + +impl Clone for HeadTail + where I: Iterator + Clone, + I::Item: Clone +{ + clone_fields!(head, tail); +} + +/// Make `data` a heap (min-heap w.r.t the sorting). +fn heapify(data: &mut [T], mut less_than: S) + where S: FnMut(&T, &T) -> bool +{ + for i in (0..data.len() / 2).rev() { + sift_down(data, i, &mut less_than); + } +} + +/// Sift down element at `index` (`heap` is a min-heap wrt the ordering) +fn sift_down(heap: &mut [T], index: usize, mut less_than: S) + where S: FnMut(&T, &T) -> bool +{ + debug_assert!(index <= heap.len()); + let mut pos = index; + let mut child = 2 * pos + 1; + // Require the right child to be present + // This allows to find the index of the smallest child without a branch + // that wouldn't be predicted if present + while child + 1 < heap.len() { + // pick the smaller of the two children + // use arithmetic to avoid an unpredictable branch + child += less_than(&heap[child+1], &heap[child]) as usize; + + // sift down is done if we are already in order + if !less_than(&heap[child], &heap[pos]) { + return; + } + heap.swap(pos, child); + pos = child; + child = 2 * pos + 1; + } + // Check if the last (left) child was an only child + // if it is then it has to be compared with the parent + if child + 1 == heap.len() && less_than(&heap[child], &heap[pos]) { + heap.swap(pos, child); + } +} + +/// An iterator adaptor that merges an abitrary number of base iterators in ascending order. +/// If all base iterators are sorted (ascending), the result is sorted. +/// +/// Iterator element type is `I::Item`. +/// +/// See [`.kmerge()`](crate::Itertools::kmerge) for more information. +pub type KMerge = KMergeBy; + +pub trait KMergePredicate { + fn kmerge_pred(&mut self, a: &T, b: &T) -> bool; +} + +#[derive(Clone, Debug)] +pub struct KMergeByLt; + +impl KMergePredicate for KMergeByLt { + fn kmerge_pred(&mut self, a: &T, b: &T) -> bool { + a < b + } +} + +implbool> KMergePredicate for F { + fn kmerge_pred(&mut self, a: &T, b: &T) -> bool { + self(a, b) + } +} + +/// Create an iterator that merges elements of the contained iterators using +/// the ordering function. +/// +/// [`IntoIterator`] enabled version of [`Itertools::kmerge`]. +/// +/// ``` +/// use itertools::kmerge; +/// +/// for elt in kmerge(vec![vec![0, 2, 4], vec![1, 3, 5], vec![6, 7]]) { +/// /* loop body */ +/// } +/// ``` +pub fn kmerge(iterable: I) -> KMerge<::IntoIter> + where I: IntoIterator, + I::Item: IntoIterator, + <::Item as IntoIterator>::Item: PartialOrd +{ + kmerge_by(iterable, KMergeByLt) +} + +/// An iterator adaptor that merges an abitrary number of base iterators +/// according to an ordering function. +/// +/// Iterator element type is `I::Item`. +/// +/// See [`.kmerge_by()`](crate::Itertools::kmerge_by) for more +/// information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct KMergeBy + where I: Iterator, +{ + heap: Vec>, + less_than: F, +} + +impl fmt::Debug for KMergeBy + where I: Iterator + fmt::Debug, + I::Item: fmt::Debug, +{ + debug_fmt_fields!(KMergeBy, heap); +} + +/// Create an iterator that merges elements of the contained iterators. +/// +/// [`IntoIterator`] enabled version of [`Itertools::kmerge_by`]. +pub fn kmerge_by(iterable: I, mut less_than: F) + -> KMergeBy<::IntoIter, F> + where I: IntoIterator, + I::Item: IntoIterator, + F: KMergePredicate<<::Item as IntoIterator>::Item>, +{ + let iter = iterable.into_iter(); + let (lower, _) = iter.size_hint(); + let mut heap: Vec<_> = Vec::with_capacity(lower); + heap.extend(iter.filter_map(|it| HeadTail::new(it.into_iter()))); + heapify(&mut heap, |a, b| less_than.kmerge_pred(&a.head, &b.head)); + KMergeBy { heap, less_than } +} + +impl Clone for KMergeBy + where I: Iterator + Clone, + I::Item: Clone, + F: Clone, +{ + clone_fields!(heap, less_than); +} + +impl Iterator for KMergeBy + where I: Iterator, + F: KMergePredicate +{ + type Item = I::Item; + + fn next(&mut self) -> Option { + if self.heap.is_empty() { + return None; + } + let result = if let Some(next) = self.heap[0].next() { + next + } else { + self.heap.swap_remove(0).head + }; + let less_than = &mut self.less_than; + sift_down(&mut self.heap, 0, |a, b| less_than.kmerge_pred(&a.head, &b.head)); + Some(result) + } + + fn size_hint(&self) -> (usize, Option) { + #[allow(deprecated)] //TODO: once msrv hits 1.51. replace `fold1` with `reduce` + self.heap.iter() + .map(|i| i.size_hint()) + .fold1(size_hint::add) + .unwrap_or((0, Some(0))) + } +} + +impl FusedIterator for KMergeBy + where I: Iterator, + F: KMergePredicate +{} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/k_smallest.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/k_smallest.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/k_smallest.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/k_smallest.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,20 @@ +use alloc::collections::BinaryHeap; +use core::cmp::Ord; + +pub(crate) fn k_smallest>(mut iter: I, k: usize) -> BinaryHeap { + if k == 0 { return BinaryHeap::new(); } + + let mut heap = iter.by_ref().take(k).collect::>(); + + iter.for_each(|i| { + debug_assert_eq!(heap.len(), k); + // Equivalent to heap.push(min(i, heap.pop())) but more efficient. + // This should be done with a single `.peek_mut().unwrap()` but + // `PeekMut` sifts-down unconditionally on Rust 1.46.0 and prior. + if *heap.peek().unwrap() > i { + *heap.peek_mut().unwrap() = i; + } + }); + + heap +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/lazy_buffer.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/lazy_buffer.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/lazy_buffer.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/lazy_buffer.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,63 @@ +use std::ops::Index; +use alloc::vec::Vec; + +#[derive(Debug, Clone)] +pub struct LazyBuffer { + pub it: I, + done: bool, + buffer: Vec, +} + +impl LazyBuffer +where + I: Iterator, +{ + pub fn new(it: I) -> LazyBuffer { + LazyBuffer { + it, + done: false, + buffer: Vec::new(), + } + } + + pub fn len(&self) -> usize { + self.buffer.len() + } + + pub fn get_next(&mut self) -> bool { + if self.done { + return false; + } + if let Some(x) = self.it.next() { + self.buffer.push(x); + true + } else { + self.done = true; + false + } + } + + pub fn prefill(&mut self, len: usize) { + let buffer_len = self.buffer.len(); + + if !self.done && len > buffer_len { + let delta = len - buffer_len; + + self.buffer.extend(self.it.by_ref().take(delta)); + self.done = self.buffer.len() < len; + } + } +} + +impl Index for LazyBuffer +where + I: Iterator, + I::Item: Sized, + Vec: Index +{ + type Output = as Index>::Output; + + fn index(&self, index: J) -> &Self::Output { + self.buffer.index(index) + } +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/lib.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/lib.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,3784 @@ +#![warn(missing_docs)] +#![crate_name="itertools"] +#![cfg_attr(not(feature = "use_std"), no_std)] + +//! Extra iterator adaptors, functions and macros. +//! +//! To extend [`Iterator`] with methods in this crate, import +//! the [`Itertools`] trait: +//! +//! ``` +//! use itertools::Itertools; +//! ``` +//! +//! Now, new methods like [`interleave`](Itertools::interleave) +//! are available on all iterators: +//! +//! ``` +//! use itertools::Itertools; +//! +//! let it = (1..3).interleave(vec![-1, -2]); +//! itertools::assert_equal(it, vec![1, -1, 2, -2]); +//! ``` +//! +//! Most iterator methods are also provided as functions (with the benefit +//! that they convert parameters using [`IntoIterator`]): +//! +//! ``` +//! use itertools::interleave; +//! +//! for elt in interleave(&[1, 2, 3], &[2, 3, 4]) { +//! /* loop body */ +//! } +//! ``` +//! +//! ## Crate Features +//! +//! - `use_std` +//! - Enabled by default. +//! - Disable to compile itertools using `#![no_std]`. This disables +//! any items that depend on collections (like `group_by`, `unique`, +//! `kmerge`, `join` and many more). +//! +//! ## Rust Version +//! +//! This version of itertools requires Rust 1.32 or later. +#![doc(html_root_url="https://docs.rs/itertools/0.8/")] + +#[cfg(not(feature = "use_std"))] +extern crate core as std; + +#[cfg(feature = "use_alloc")] +extern crate alloc; + +#[cfg(feature = "use_alloc")] +use alloc::{ + string::String, + vec::Vec, +}; + +pub use either::Either; + +use core::borrow::Borrow; +#[cfg(feature = "use_std")] +use std::collections::HashMap; +use std::iter::{IntoIterator, once}; +use std::cmp::Ordering; +use std::fmt; +#[cfg(feature = "use_std")] +use std::collections::HashSet; +#[cfg(feature = "use_std")] +use std::hash::Hash; +#[cfg(feature = "use_alloc")] +use std::fmt::Write; +#[cfg(feature = "use_alloc")] +type VecIntoIter = alloc::vec::IntoIter; +#[cfg(feature = "use_alloc")] +use std::iter::FromIterator; + +#[macro_use] +mod impl_macros; + +// for compatibility with no std and macros +#[doc(hidden)] +pub use std::iter as __std_iter; + +/// The concrete iterator types. +pub mod structs { + pub use crate::adaptors::{ + Dedup, + DedupBy, + DedupWithCount, + DedupByWithCount, + Interleave, + InterleaveShortest, + FilterMapOk, + FilterOk, + Product, + PutBack, + Batching, + MapInto, + MapOk, + Merge, + MergeBy, + TakeWhileRef, + WhileSome, + Coalesce, + TupleCombinations, + Positions, + Update, + }; + #[allow(deprecated)] + pub use crate::adaptors::{MapResults, Step}; + #[cfg(feature = "use_alloc")] + pub use crate::adaptors::MultiProduct; + #[cfg(feature = "use_alloc")] + pub use crate::combinations::Combinations; + #[cfg(feature = "use_alloc")] + pub use crate::combinations_with_replacement::CombinationsWithReplacement; + pub use crate::cons_tuples_impl::ConsTuples; + pub use crate::exactly_one_err::ExactlyOneError; + pub use crate::format::{Format, FormatWith}; + pub use crate::flatten_ok::FlattenOk; + #[cfg(feature = "use_std")] + pub use crate::grouping_map::{GroupingMap, GroupingMapBy}; + #[cfg(feature = "use_alloc")] + pub use crate::groupbylazy::{IntoChunks, Chunk, Chunks, GroupBy, Group, Groups}; + pub use crate::intersperse::{Intersperse, IntersperseWith}; + #[cfg(feature = "use_alloc")] + pub use crate::kmerge_impl::{KMerge, KMergeBy}; + pub use crate::merge_join::MergeJoinBy; + #[cfg(feature = "use_alloc")] + pub use crate::multipeek_impl::MultiPeek; + #[cfg(feature = "use_alloc")] + pub use crate::peek_nth::PeekNth; + pub use crate::pad_tail::PadUsing; + pub use crate::peeking_take_while::PeekingTakeWhile; + #[cfg(feature = "use_alloc")] + pub use crate::permutations::Permutations; + pub use crate::process_results_impl::ProcessResults; + #[cfg(feature = "use_alloc")] + pub use crate::powerset::Powerset; + #[cfg(feature = "use_alloc")] + pub use crate::put_back_n_impl::PutBackN; + #[cfg(feature = "use_alloc")] + pub use crate::rciter_impl::RcIter; + pub use crate::repeatn::RepeatN; + #[allow(deprecated)] + pub use crate::sources::{RepeatCall, Unfold, Iterate}; + #[cfg(feature = "use_alloc")] + pub use crate::tee::Tee; + pub use crate::tuple_impl::{TupleBuffer, TupleWindows, CircularTupleWindows, Tuples}; + #[cfg(feature = "use_std")] + pub use crate::duplicates_impl::{Duplicates, DuplicatesBy}; + #[cfg(feature = "use_std")] + pub use crate::unique_impl::{Unique, UniqueBy}; + pub use crate::with_position::WithPosition; + pub use crate::zip_eq_impl::ZipEq; + pub use crate::zip_longest::ZipLongest; + pub use crate::ziptuple::Zip; +} + +/// Traits helpful for using certain `Itertools` methods in generic contexts. +pub mod traits { + pub use crate::tuple_impl::HomogeneousTuple; +} + +#[allow(deprecated)] +pub use crate::structs::*; +pub use crate::concat_impl::concat; +pub use crate::cons_tuples_impl::cons_tuples; +pub use crate::diff::diff_with; +pub use crate::diff::Diff; +#[cfg(feature = "use_alloc")] +pub use crate::kmerge_impl::{kmerge_by}; +pub use crate::minmax::MinMaxResult; +pub use crate::peeking_take_while::PeekingNext; +pub use crate::process_results_impl::process_results; +pub use crate::repeatn::repeat_n; +#[allow(deprecated)] +pub use crate::sources::{repeat_call, unfold, iterate}; +pub use crate::with_position::Position; +pub use crate::unziptuple::{multiunzip, MultiUnzip}; +pub use crate::ziptuple::multizip; +mod adaptors; +mod either_or_both; +pub use crate::either_or_both::EitherOrBoth; +#[doc(hidden)] +pub mod free; +#[doc(inline)] +pub use crate::free::*; +mod concat_impl; +mod cons_tuples_impl; +#[cfg(feature = "use_alloc")] +mod combinations; +#[cfg(feature = "use_alloc")] +mod combinations_with_replacement; +mod exactly_one_err; +mod diff; +mod flatten_ok; +#[cfg(feature = "use_std")] +mod extrema_set; +mod format; +#[cfg(feature = "use_std")] +mod grouping_map; +#[cfg(feature = "use_alloc")] +mod group_map; +#[cfg(feature = "use_alloc")] +mod groupbylazy; +mod intersperse; +#[cfg(feature = "use_alloc")] +mod k_smallest; +#[cfg(feature = "use_alloc")] +mod kmerge_impl; +#[cfg(feature = "use_alloc")] +mod lazy_buffer; +mod merge_join; +mod minmax; +#[cfg(feature = "use_alloc")] +mod multipeek_impl; +mod pad_tail; +#[cfg(feature = "use_alloc")] +mod peek_nth; +mod peeking_take_while; +#[cfg(feature = "use_alloc")] +mod permutations; +#[cfg(feature = "use_alloc")] +mod powerset; +mod process_results_impl; +#[cfg(feature = "use_alloc")] +mod put_back_n_impl; +#[cfg(feature = "use_alloc")] +mod rciter_impl; +mod repeatn; +mod size_hint; +mod sources; +#[cfg(feature = "use_alloc")] +mod tee; +mod tuple_impl; +#[cfg(feature = "use_std")] +mod duplicates_impl; +#[cfg(feature = "use_std")] +mod unique_impl; +mod unziptuple; +mod with_position; +mod zip_eq_impl; +mod zip_longest; +mod ziptuple; + +#[macro_export] +/// Create an iterator over the “cartesian product†of iterators. +/// +/// Iterator element type is like `(A, B, ..., E)` if formed +/// from iterators `(I, J, ..., M)` with element types `I::Item = A`, `J::Item = B`, etc. +/// +/// ``` +/// # use itertools::iproduct; +/// # +/// # fn main() { +/// // Iterate over the coordinates of a 4 x 4 x 4 grid +/// // from (0, 0, 0), (0, 0, 1), .., (0, 1, 0), (0, 1, 1), .. etc until (3, 3, 3) +/// for (i, j, k) in iproduct!(0..4, 0..4, 0..4) { +/// // .. +/// } +/// # } +/// ``` +macro_rules! iproduct { + (@flatten $I:expr,) => ( + $I + ); + (@flatten $I:expr, $J:expr, $($K:expr,)*) => ( + $crate::iproduct!(@flatten $crate::cons_tuples($crate::iproduct!($I, $J)), $($K,)*) + ); + ($I:expr) => ( + $crate::__std_iter::IntoIterator::into_iter($I) + ); + ($I:expr, $J:expr) => ( + $crate::Itertools::cartesian_product($crate::iproduct!($I), $crate::iproduct!($J)) + ); + ($I:expr, $J:expr, $($K:expr),+) => ( + $crate::iproduct!(@flatten $crate::iproduct!($I, $J), $($K,)+) + ); +} + +#[macro_export] +/// Create an iterator running multiple iterators in lockstep. +/// +/// The `izip!` iterator yields elements until any subiterator +/// returns `None`. +/// +/// This is a version of the standard ``.zip()`` that's supporting more than +/// two iterators. The iterator element type is a tuple with one element +/// from each of the input iterators. Just like ``.zip()``, the iteration stops +/// when the shortest of the inputs reaches its end. +/// +/// **Note:** The result of this macro is in the general case an iterator +/// composed of repeated `.zip()` and a `.map()`; it has an anonymous type. +/// The special cases of one and two arguments produce the equivalent of +/// `$a.into_iter()` and `$a.into_iter().zip($b)` respectively. +/// +/// Prefer this macro `izip!()` over [`multizip`] for the performance benefits +/// of using the standard library `.zip()`. +/// +/// ``` +/// # use itertools::izip; +/// # +/// # fn main() { +/// +/// // iterate over three sequences side-by-side +/// let mut results = [0, 0, 0, 0]; +/// let inputs = [3, 7, 9, 6]; +/// +/// for (r, index, input) in izip!(&mut results, 0..10, &inputs) { +/// *r = index * 10 + input; +/// } +/// +/// assert_eq!(results, [0 + 3, 10 + 7, 29, 36]); +/// # } +/// ``` +macro_rules! izip { + // @closure creates a tuple-flattening closure for .map() call. usage: + // @closure partial_pattern => partial_tuple , rest , of , iterators + // eg. izip!( @closure ((a, b), c) => (a, b, c) , dd , ee ) + ( @closure $p:pat => $tup:expr ) => { + |$p| $tup + }; + + // The "b" identifier is a different identifier on each recursion level thanks to hygiene. + ( @closure $p:pat => ( $($tup:tt)* ) , $_iter:expr $( , $tail:expr )* ) => { + $crate::izip!(@closure ($p, b) => ( $($tup)*, b ) $( , $tail )*) + }; + + // unary + ($first:expr $(,)*) => { + $crate::__std_iter::IntoIterator::into_iter($first) + }; + + // binary + ($first:expr, $second:expr $(,)*) => { + $crate::izip!($first) + .zip($second) + }; + + // n-ary where n > 2 + ( $first:expr $( , $rest:expr )* $(,)* ) => { + $crate::izip!($first) + $( + .zip($rest) + )* + .map( + $crate::izip!(@closure a => (a) $( , $rest )*) + ) + }; +} + +#[macro_export] +/// [Chain][`chain`] zero or more iterators together into one sequence. +/// +/// The comma-separated arguments must implement [`IntoIterator`]. +/// The final argument may be followed by a trailing comma. +/// +/// [`chain`]: Iterator::chain +/// +/// # Examples +/// +/// Empty invocations of `chain!` expand to an invocation of [`std::iter::empty`]: +/// ``` +/// use std::iter; +/// use itertools::chain; +/// +/// let _: iter::Empty<()> = chain!(); +/// let _: iter::Empty = chain!(); +/// ``` +/// +/// Invocations of `chain!` with one argument expand to [`arg.into_iter()`](IntoIterator): +/// ``` +/// use std::{ops::Range, slice}; +/// use itertools::chain; +/// let _: as IntoIterator>::IntoIter = chain!((2..6),); // trailing comma optional! +/// let _: <&[_] as IntoIterator>::IntoIter = chain!(&[2, 3, 4]); +/// ``` +/// +/// Invocations of `chain!` with multiple arguments [`.into_iter()`](IntoIterator) each +/// argument, and then [`chain`] them together: +/// ``` +/// use std::{iter::*, ops::Range, slice}; +/// use itertools::{assert_equal, chain}; +/// +/// // e.g., this: +/// let with_macro: Chain, Take>>, slice::Iter<_>> = +/// chain![once(&0), repeat(&1).take(2), &[2, 3, 5],]; +/// +/// // ...is equivalent to this: +/// let with_method: Chain, Take>>, slice::Iter<_>> = +/// once(&0) +/// .chain(repeat(&1).take(2)) +/// .chain(&[2, 3, 5]); +/// +/// assert_equal(with_macro, with_method); +/// ``` +macro_rules! chain { + () => { + core::iter::empty() + }; + ($first:expr $(, $rest:expr )* $(,)?) => { + { + let iter = core::iter::IntoIterator::into_iter($first); + $( + let iter = + core::iter::Iterator::chain( + iter, + core::iter::IntoIterator::into_iter($rest)); + )* + iter + } + }; +} + +/// An [`Iterator`] blanket implementation that provides extra adaptors and +/// methods. +/// +/// This trait defines a number of methods. They are divided into two groups: +/// +/// * *Adaptors* take an iterator and parameter as input, and return +/// a new iterator value. These are listed first in the trait. An example +/// of an adaptor is [`.interleave()`](Itertools::interleave) +/// +/// * *Regular methods* are those that don't return iterators and instead +/// return a regular value of some other kind. +/// [`.next_tuple()`](Itertools::next_tuple) is an example and the first regular +/// method in the list. +pub trait Itertools : Iterator { + // adaptors + + /// Alternate elements from two iterators until both have run out. + /// + /// Iterator element type is `Self::Item`. + /// + /// This iterator is *fused*. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let it = (1..7).interleave(vec![-1, -2]); + /// itertools::assert_equal(it, vec![1, -1, 2, -2, 3, 4, 5, 6]); + /// ``` + fn interleave(self, other: J) -> Interleave + where J: IntoIterator, + Self: Sized + { + interleave(self, other) + } + + /// Alternate elements from two iterators until at least one of them has run + /// out. + /// + /// Iterator element type is `Self::Item`. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let it = (1..7).interleave_shortest(vec![-1, -2]); + /// itertools::assert_equal(it, vec![1, -1, 2, -2, 3]); + /// ``` + fn interleave_shortest(self, other: J) -> InterleaveShortest + where J: IntoIterator, + Self: Sized + { + adaptors::interleave_shortest(self, other.into_iter()) + } + + /// An iterator adaptor to insert a particular value + /// between each element of the adapted iterator. + /// + /// Iterator element type is `Self::Item`. + /// + /// This iterator is *fused*. + /// + /// ``` + /// use itertools::Itertools; + /// + /// itertools::assert_equal((0..3).intersperse(8), vec![0, 8, 1, 8, 2]); + /// ``` + fn intersperse(self, element: Self::Item) -> Intersperse + where Self: Sized, + Self::Item: Clone + { + intersperse::intersperse(self, element) + } + + /// An iterator adaptor to insert a particular value created by a function + /// between each element of the adapted iterator. + /// + /// Iterator element type is `Self::Item`. + /// + /// This iterator is *fused*. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let mut i = 10; + /// itertools::assert_equal((0..3).intersperse_with(|| { i -= 1; i }), vec![0, 9, 1, 8, 2]); + /// assert_eq!(i, 8); + /// ``` + fn intersperse_with(self, element: F) -> IntersperseWith + where Self: Sized, + F: FnMut() -> Self::Item + { + intersperse::intersperse_with(self, element) + } + + /// Create an iterator which iterates over both this and the specified + /// iterator simultaneously, yielding pairs of two optional elements. + /// + /// This iterator is *fused*. + /// + /// As long as neither input iterator is exhausted yet, it yields two values + /// via `EitherOrBoth::Both`. + /// + /// When the parameter iterator is exhausted, it only yields a value from the + /// `self` iterator via `EitherOrBoth::Left`. + /// + /// When the `self` iterator is exhausted, it only yields a value from the + /// parameter iterator via `EitherOrBoth::Right`. + /// + /// When both iterators return `None`, all further invocations of `.next()` + /// will return `None`. + /// + /// Iterator element type is + /// [`EitherOrBoth`](EitherOrBoth). + /// + /// ```rust + /// use itertools::EitherOrBoth::{Both, Right}; + /// use itertools::Itertools; + /// let it = (0..1).zip_longest(1..3); + /// itertools::assert_equal(it, vec![Both(0, 1), Right(2)]); + /// ``` + #[inline] + fn zip_longest(self, other: J) -> ZipLongest + where J: IntoIterator, + Self: Sized + { + zip_longest::zip_longest(self, other.into_iter()) + } + + /// Create an iterator which iterates over both this and the specified + /// iterator simultaneously, yielding pairs of elements. + /// + /// **Panics** if the iterators reach an end and they are not of equal + /// lengths. + #[inline] + fn zip_eq(self, other: J) -> ZipEq + where J: IntoIterator, + Self: Sized + { + zip_eq(self, other) + } + + /// A “meta iterator adaptorâ€. Its closure receives a reference to the + /// iterator and may pick off as many elements as it likes, to produce the + /// next iterator element. + /// + /// Iterator element type is `B`. + /// + /// ``` + /// use itertools::Itertools; + /// + /// // An adaptor that gathers elements in pairs + /// let pit = (0..4).batching(|it| { + /// match it.next() { + /// None => None, + /// Some(x) => match it.next() { + /// None => None, + /// Some(y) => Some((x, y)), + /// } + /// } + /// }); + /// + /// itertools::assert_equal(pit, vec![(0, 1), (2, 3)]); + /// ``` + /// + fn batching(self, f: F) -> Batching + where F: FnMut(&mut Self) -> Option, + Self: Sized + { + adaptors::batching(self, f) + } + + /// Return an *iterable* that can group iterator elements. + /// Consecutive elements that map to the same key (“runsâ€), are assigned + /// to the same group. + /// + /// `GroupBy` is the storage for the lazy grouping operation. + /// + /// If the groups are consumed in order, or if each group's iterator is + /// dropped without keeping it around, then `GroupBy` uses no + /// allocations. It needs allocations only if several group iterators + /// are alive at the same time. + /// + /// This type implements [`IntoIterator`] (it is **not** an iterator + /// itself), because the group iterators need to borrow from this + /// value. It should be stored in a local variable or temporary and + /// iterated. + /// + /// Iterator element type is `(K, Group)`: the group's key and the + /// group iterator. + /// + /// ``` + /// use itertools::Itertools; + /// + /// // group data into runs of larger than zero or not. + /// let data = vec![1, 3, -2, -2, 1, 0, 1, 2]; + /// // groups: |---->|------>|--------->| + /// + /// // Note: The `&` is significant here, `GroupBy` is iterable + /// // only by reference. You can also call `.into_iter()` explicitly. + /// let mut data_grouped = Vec::new(); + /// for (key, group) in &data.into_iter().group_by(|elt| *elt >= 0) { + /// data_grouped.push((key, group.collect())); + /// } + /// assert_eq!(data_grouped, vec![(true, vec![1, 3]), (false, vec![-2, -2]), (true, vec![1, 0, 1, 2])]); + /// ``` + #[cfg(feature = "use_alloc")] + fn group_by(self, key: F) -> GroupBy + where Self: Sized, + F: FnMut(&Self::Item) -> K, + K: PartialEq, + { + groupbylazy::new(self, key) + } + + /// Return an *iterable* that can chunk the iterator. + /// + /// Yield subiterators (chunks) that each yield a fixed number elements, + /// determined by `size`. The last chunk will be shorter if there aren't + /// enough elements. + /// + /// `IntoChunks` is based on `GroupBy`: it is iterable (implements + /// `IntoIterator`, **not** `Iterator`), and it only buffers if several + /// chunk iterators are alive at the same time. + /// + /// Iterator element type is `Chunk`, each chunk's iterator. + /// + /// **Panics** if `size` is 0. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let data = vec![1, 1, 2, -2, 6, 0, 3, 1]; + /// //chunk size=3 |------->|-------->|--->| + /// + /// // Note: The `&` is significant here, `IntoChunks` is iterable + /// // only by reference. You can also call `.into_iter()` explicitly. + /// for chunk in &data.into_iter().chunks(3) { + /// // Check that the sum of each chunk is 4. + /// assert_eq!(4, chunk.sum()); + /// } + /// ``` + #[cfg(feature = "use_alloc")] + fn chunks(self, size: usize) -> IntoChunks + where Self: Sized, + { + assert!(size != 0); + groupbylazy::new_chunks(self, size) + } + + /// Return an iterator over all contiguous windows producing tuples of + /// a specific size (up to 12). + /// + /// `tuple_windows` clones the iterator elements so that they can be + /// part of successive windows, this makes it most suited for iterators + /// of references and other values that are cheap to copy. + /// + /// ``` + /// use itertools::Itertools; + /// let mut v = Vec::new(); + /// + /// // pairwise iteration + /// for (a, b) in (1..5).tuple_windows() { + /// v.push((a, b)); + /// } + /// assert_eq!(v, vec![(1, 2), (2, 3), (3, 4)]); + /// + /// let mut it = (1..5).tuple_windows(); + /// assert_eq!(Some((1, 2, 3)), it.next()); + /// assert_eq!(Some((2, 3, 4)), it.next()); + /// assert_eq!(None, it.next()); + /// + /// // this requires a type hint + /// let it = (1..5).tuple_windows::<(_, _, _)>(); + /// itertools::assert_equal(it, vec![(1, 2, 3), (2, 3, 4)]); + /// + /// // you can also specify the complete type + /// use itertools::TupleWindows; + /// use std::ops::Range; + /// + /// let it: TupleWindows, (u32, u32, u32)> = (1..5).tuple_windows(); + /// itertools::assert_equal(it, vec![(1, 2, 3), (2, 3, 4)]); + /// ``` + fn tuple_windows(self) -> TupleWindows + where Self: Sized + Iterator, + T: traits::HomogeneousTuple, + T::Item: Clone + { + tuple_impl::tuple_windows(self) + } + + /// Return an iterator over all windows, wrapping back to the first + /// elements when the window would otherwise exceed the length of the + /// iterator, producing tuples of a specific size (up to 12). + /// + /// `circular_tuple_windows` clones the iterator elements so that they can be + /// part of successive windows, this makes it most suited for iterators + /// of references and other values that are cheap to copy. + /// + /// ``` + /// use itertools::Itertools; + /// let mut v = Vec::new(); + /// for (a, b) in (1..5).circular_tuple_windows() { + /// v.push((a, b)); + /// } + /// assert_eq!(v, vec![(1, 2), (2, 3), (3, 4), (4, 1)]); + /// + /// let mut it = (1..5).circular_tuple_windows(); + /// assert_eq!(Some((1, 2, 3)), it.next()); + /// assert_eq!(Some((2, 3, 4)), it.next()); + /// assert_eq!(Some((3, 4, 1)), it.next()); + /// assert_eq!(Some((4, 1, 2)), it.next()); + /// assert_eq!(None, it.next()); + /// + /// // this requires a type hint + /// let it = (1..5).circular_tuple_windows::<(_, _, _)>(); + /// itertools::assert_equal(it, vec![(1, 2, 3), (2, 3, 4), (3, 4, 1), (4, 1, 2)]); + /// ``` + fn circular_tuple_windows(self) -> CircularTupleWindows + where Self: Sized + Clone + Iterator + ExactSizeIterator, + T: tuple_impl::TupleCollect + Clone, + T::Item: Clone + { + tuple_impl::circular_tuple_windows(self) + } + /// Return an iterator that groups the items in tuples of a specific size + /// (up to 12). + /// + /// See also the method [`.next_tuple()`](Itertools::next_tuple). + /// + /// ``` + /// use itertools::Itertools; + /// let mut v = Vec::new(); + /// for (a, b) in (1..5).tuples() { + /// v.push((a, b)); + /// } + /// assert_eq!(v, vec![(1, 2), (3, 4)]); + /// + /// let mut it = (1..7).tuples(); + /// assert_eq!(Some((1, 2, 3)), it.next()); + /// assert_eq!(Some((4, 5, 6)), it.next()); + /// assert_eq!(None, it.next()); + /// + /// // this requires a type hint + /// let it = (1..7).tuples::<(_, _, _)>(); + /// itertools::assert_equal(it, vec![(1, 2, 3), (4, 5, 6)]); + /// + /// // you can also specify the complete type + /// use itertools::Tuples; + /// use std::ops::Range; + /// + /// let it: Tuples, (u32, u32, u32)> = (1..7).tuples(); + /// itertools::assert_equal(it, vec![(1, 2, 3), (4, 5, 6)]); + /// ``` + /// + /// See also [`Tuples::into_buffer`]. + fn tuples(self) -> Tuples + where Self: Sized + Iterator, + T: traits::HomogeneousTuple + { + tuple_impl::tuples(self) + } + + /// Split into an iterator pair that both yield all elements from + /// the original iterator. + /// + /// **Note:** If the iterator is clonable, prefer using that instead + /// of using this method. Cloning is likely to be more efficient. + /// + /// Iterator element type is `Self::Item`. + /// + /// ``` + /// use itertools::Itertools; + /// let xs = vec![0, 1, 2, 3]; + /// + /// let (mut t1, t2) = xs.into_iter().tee(); + /// itertools::assert_equal(t1.next(), Some(0)); + /// itertools::assert_equal(t2, 0..4); + /// itertools::assert_equal(t1, 1..4); + /// ``` + #[cfg(feature = "use_alloc")] + fn tee(self) -> (Tee, Tee) + where Self: Sized, + Self::Item: Clone + { + tee::new(self) + } + + /// Return an iterator adaptor that steps `n` elements in the base iterator + /// for each iteration. + /// + /// The iterator steps by yielding the next element from the base iterator, + /// then skipping forward `n - 1` elements. + /// + /// Iterator element type is `Self::Item`. + /// + /// **Panics** if the step is 0. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let it = (0..8).step(3); + /// itertools::assert_equal(it, vec![0, 3, 6]); + /// ``` + #[deprecated(note="Use std .step_by() instead", since="0.8.0")] + #[allow(deprecated)] + fn step(self, n: usize) -> Step + where Self: Sized + { + adaptors::step(self, n) + } + + /// Convert each item of the iterator using the [`Into`] trait. + /// + /// ```rust + /// use itertools::Itertools; + /// + /// (1i32..42i32).map_into::().collect_vec(); + /// ``` + fn map_into(self) -> MapInto + where Self: Sized, + Self::Item: Into, + { + adaptors::map_into(self) + } + + /// See [`.map_ok()`](Itertools::map_ok). + #[deprecated(note="Use .map_ok() instead", since="0.10.0")] + fn map_results(self, f: F) -> MapOk + where Self: Iterator> + Sized, + F: FnMut(T) -> U, + { + self.map_ok(f) + } + + /// Return an iterator adaptor that applies the provided closure + /// to every `Result::Ok` value. `Result::Err` values are + /// unchanged. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let input = vec![Ok(41), Err(false), Ok(11)]; + /// let it = input.into_iter().map_ok(|i| i + 1); + /// itertools::assert_equal(it, vec![Ok(42), Err(false), Ok(12)]); + /// ``` + fn map_ok(self, f: F) -> MapOk + where Self: Iterator> + Sized, + F: FnMut(T) -> U, + { + adaptors::map_ok(self, f) + } + + /// Return an iterator adaptor that filters every `Result::Ok` + /// value with the provided closure. `Result::Err` values are + /// unchanged. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let input = vec![Ok(22), Err(false), Ok(11)]; + /// let it = input.into_iter().filter_ok(|&i| i > 20); + /// itertools::assert_equal(it, vec![Ok(22), Err(false)]); + /// ``` + fn filter_ok(self, f: F) -> FilterOk + where Self: Iterator> + Sized, + F: FnMut(&T) -> bool, + { + adaptors::filter_ok(self, f) + } + + /// Return an iterator adaptor that filters and transforms every + /// `Result::Ok` value with the provided closure. `Result::Err` + /// values are unchanged. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let input = vec![Ok(22), Err(false), Ok(11)]; + /// let it = input.into_iter().filter_map_ok(|i| if i > 20 { Some(i * 2) } else { None }); + /// itertools::assert_equal(it, vec![Ok(44), Err(false)]); + /// ``` + fn filter_map_ok(self, f: F) -> FilterMapOk + where Self: Iterator> + Sized, + F: FnMut(T) -> Option, + { + adaptors::filter_map_ok(self, f) + } + + /// Return an iterator adaptor that flattens every `Result::Ok` value into + /// a series of `Result::Ok` values. `Result::Err` values are unchanged. + /// + /// This is useful when you have some common error type for your crate and + /// need to propagate it upwards, but the `Result::Ok` case needs to be flattened. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let input = vec![Ok(0..2), Err(false), Ok(2..4)]; + /// let it = input.iter().cloned().flatten_ok(); + /// itertools::assert_equal(it.clone(), vec![Ok(0), Ok(1), Err(false), Ok(2), Ok(3)]); + /// + /// // This can also be used to propagate errors when collecting. + /// let output_result: Result, bool> = it.collect(); + /// assert_eq!(output_result, Err(false)); + /// ``` + fn flatten_ok(self) -> FlattenOk + where Self: Iterator> + Sized, + T: IntoIterator + { + flatten_ok::flatten_ok(self) + } + + /// Return an iterator adaptor that merges the two base iterators in + /// ascending order. If both base iterators are sorted (ascending), the + /// result is sorted. + /// + /// Iterator element type is `Self::Item`. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let a = (0..11).step(3); + /// let b = (0..11).step(5); + /// let it = a.merge(b); + /// itertools::assert_equal(it, vec![0, 0, 3, 5, 6, 9, 10]); + /// ``` + fn merge(self, other: J) -> Merge + where Self: Sized, + Self::Item: PartialOrd, + J: IntoIterator + { + merge(self, other) + } + + /// Return an iterator adaptor that merges the two base iterators in order. + /// This is much like [`.merge()`](Itertools::merge) but allows for a custom ordering. + /// + /// This can be especially useful for sequences of tuples. + /// + /// Iterator element type is `Self::Item`. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let a = (0..).zip("bc".chars()); + /// let b = (0..).zip("ad".chars()); + /// let it = a.merge_by(b, |x, y| x.1 <= y.1); + /// itertools::assert_equal(it, vec![(0, 'a'), (0, 'b'), (1, 'c'), (1, 'd')]); + /// ``` + + fn merge_by(self, other: J, is_first: F) -> MergeBy + where Self: Sized, + J: IntoIterator, + F: FnMut(&Self::Item, &Self::Item) -> bool + { + adaptors::merge_by_new(self, other.into_iter(), is_first) + } + + /// Create an iterator that merges items from both this and the specified + /// iterator in ascending order. + /// + /// It chooses whether to pair elements based on the `Ordering` returned by the + /// specified compare function. At any point, inspecting the tip of the + /// iterators `I` and `J` as items `i` of type `I::Item` and `j` of type + /// `J::Item` respectively, the resulting iterator will: + /// + /// - Emit `EitherOrBoth::Left(i)` when `i < j`, + /// and remove `i` from its source iterator + /// - Emit `EitherOrBoth::Right(j)` when `i > j`, + /// and remove `j` from its source iterator + /// - Emit `EitherOrBoth::Both(i, j)` when `i == j`, + /// and remove both `i` and `j` from their respective source iterators + /// + /// ``` + /// use itertools::Itertools; + /// use itertools::EitherOrBoth::{Left, Right, Both}; + /// + /// let multiples_of_2 = (0..10).step(2); + /// let multiples_of_3 = (0..10).step(3); + /// + /// itertools::assert_equal( + /// multiples_of_2.merge_join_by(multiples_of_3, |i, j| i.cmp(j)), + /// vec![Both(0, 0), Left(2), Right(3), Left(4), Both(6, 6), Left(8), Right(9)] + /// ); + /// ``` + #[inline] + fn merge_join_by(self, other: J, cmp_fn: F) -> MergeJoinBy + where J: IntoIterator, + F: FnMut(&Self::Item, &J::Item) -> std::cmp::Ordering, + Self: Sized + { + merge_join_by(self, other, cmp_fn) + } + + /// Return an iterator adaptor that flattens an iterator of iterators by + /// merging them in ascending order. + /// + /// If all base iterators are sorted (ascending), the result is sorted. + /// + /// Iterator element type is `Self::Item`. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let a = (0..6).step(3); + /// let b = (1..6).step(3); + /// let c = (2..6).step(3); + /// let it = vec![a, b, c].into_iter().kmerge(); + /// itertools::assert_equal(it, vec![0, 1, 2, 3, 4, 5]); + /// ``` + #[cfg(feature = "use_alloc")] + fn kmerge(self) -> KMerge<::IntoIter> + where Self: Sized, + Self::Item: IntoIterator, + ::Item: PartialOrd, + { + kmerge(self) + } + + /// Return an iterator adaptor that flattens an iterator of iterators by + /// merging them according to the given closure. + /// + /// The closure `first` is called with two elements *a*, *b* and should + /// return `true` if *a* is ordered before *b*. + /// + /// If all base iterators are sorted according to `first`, the result is + /// sorted. + /// + /// Iterator element type is `Self::Item`. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let a = vec![-1f64, 2., 3., -5., 6., -7.]; + /// let b = vec![0., 2., -4.]; + /// let mut it = vec![a, b].into_iter().kmerge_by(|a, b| a.abs() < b.abs()); + /// assert_eq!(it.next(), Some(0.)); + /// assert_eq!(it.last(), Some(-7.)); + /// ``` + #[cfg(feature = "use_alloc")] + fn kmerge_by(self, first: F) + -> KMergeBy<::IntoIter, F> + where Self: Sized, + Self::Item: IntoIterator, + F: FnMut(&::Item, + &::Item) -> bool + { + kmerge_by(self, first) + } + + /// Return an iterator adaptor that iterates over the cartesian product of + /// the element sets of two iterators `self` and `J`. + /// + /// Iterator element type is `(Self::Item, J::Item)`. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let it = (0..2).cartesian_product("αβ".chars()); + /// itertools::assert_equal(it, vec![(0, 'α'), (0, 'β'), (1, 'α'), (1, 'β')]); + /// ``` + fn cartesian_product(self, other: J) -> Product + where Self: Sized, + Self::Item: Clone, + J: IntoIterator, + J::IntoIter: Clone + { + adaptors::cartesian_product(self, other.into_iter()) + } + + /// Return an iterator adaptor that iterates over the cartesian product of + /// all subiterators returned by meta-iterator `self`. + /// + /// All provided iterators must yield the same `Item` type. To generate + /// the product of iterators yielding multiple types, use the + /// [`iproduct`] macro instead. + /// + /// + /// The iterator element type is `Vec`, where `T` is the iterator element + /// of the subiterators. + /// + /// ``` + /// use itertools::Itertools; + /// let mut multi_prod = (0..3).map(|i| (i * 2)..(i * 2 + 2)) + /// .multi_cartesian_product(); + /// assert_eq!(multi_prod.next(), Some(vec![0, 2, 4])); + /// assert_eq!(multi_prod.next(), Some(vec![0, 2, 5])); + /// assert_eq!(multi_prod.next(), Some(vec![0, 3, 4])); + /// assert_eq!(multi_prod.next(), Some(vec![0, 3, 5])); + /// assert_eq!(multi_prod.next(), Some(vec![1, 2, 4])); + /// assert_eq!(multi_prod.next(), Some(vec![1, 2, 5])); + /// assert_eq!(multi_prod.next(), Some(vec![1, 3, 4])); + /// assert_eq!(multi_prod.next(), Some(vec![1, 3, 5])); + /// assert_eq!(multi_prod.next(), None); + /// ``` + #[cfg(feature = "use_alloc")] + fn multi_cartesian_product(self) -> MultiProduct<::IntoIter> + where Self: Sized, + Self::Item: IntoIterator, + ::IntoIter: Clone, + ::Item: Clone + { + adaptors::multi_cartesian_product(self) + } + + /// Return an iterator adaptor that uses the passed-in closure to + /// optionally merge together consecutive elements. + /// + /// The closure `f` is passed two elements, `previous` and `current` and may + /// return either (1) `Ok(combined)` to merge the two values or + /// (2) `Err((previous', current'))` to indicate they can't be merged. + /// In (2), the value `previous'` is emitted by the iterator. + /// Either (1) `combined` or (2) `current'` becomes the previous value + /// when coalesce continues with the next pair of elements to merge. The + /// value that remains at the end is also emitted by the iterator. + /// + /// Iterator element type is `Self::Item`. + /// + /// This iterator is *fused*. + /// + /// ``` + /// use itertools::Itertools; + /// + /// // sum same-sign runs together + /// let data = vec![-1., -2., -3., 3., 1., 0., -1.]; + /// itertools::assert_equal(data.into_iter().coalesce(|x, y| + /// if (x >= 0.) == (y >= 0.) { + /// Ok(x + y) + /// } else { + /// Err((x, y)) + /// }), + /// vec![-6., 4., -1.]); + /// ``` + fn coalesce(self, f: F) -> Coalesce + where Self: Sized, + F: FnMut(Self::Item, Self::Item) + -> Result + { + adaptors::coalesce(self, f) + } + + /// Remove duplicates from sections of consecutive identical elements. + /// If the iterator is sorted, all elements will be unique. + /// + /// Iterator element type is `Self::Item`. + /// + /// This iterator is *fused*. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let data = vec![1., 1., 2., 3., 3., 2., 2.]; + /// itertools::assert_equal(data.into_iter().dedup(), + /// vec![1., 2., 3., 2.]); + /// ``` + fn dedup(self) -> Dedup + where Self: Sized, + Self::Item: PartialEq, + { + adaptors::dedup(self) + } + + /// Remove duplicates from sections of consecutive identical elements, + /// determining equality using a comparison function. + /// If the iterator is sorted, all elements will be unique. + /// + /// Iterator element type is `Self::Item`. + /// + /// This iterator is *fused*. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let data = vec![(0, 1.), (1, 1.), (0, 2.), (0, 3.), (1, 3.), (1, 2.), (2, 2.)]; + /// itertools::assert_equal(data.into_iter().dedup_by(|x, y| x.1 == y.1), + /// vec![(0, 1.), (0, 2.), (0, 3.), (1, 2.)]); + /// ``` + fn dedup_by(self, cmp: Cmp) -> DedupBy + where Self: Sized, + Cmp: FnMut(&Self::Item, &Self::Item)->bool, + { + adaptors::dedup_by(self, cmp) + } + + /// Remove duplicates from sections of consecutive identical elements, while keeping a count of + /// how many repeated elements were present. + /// If the iterator is sorted, all elements will be unique. + /// + /// Iterator element type is `(usize, Self::Item)`. + /// + /// This iterator is *fused*. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let data = vec!['a', 'a', 'b', 'c', 'c', 'b', 'b']; + /// itertools::assert_equal(data.into_iter().dedup_with_count(), + /// vec![(2, 'a'), (1, 'b'), (2, 'c'), (2, 'b')]); + /// ``` + fn dedup_with_count(self) -> DedupWithCount + where + Self: Sized, + { + adaptors::dedup_with_count(self) + } + + /// Remove duplicates from sections of consecutive identical elements, while keeping a count of + /// how many repeated elements were present. + /// This will determine equality using a comparison function. + /// If the iterator is sorted, all elements will be unique. + /// + /// Iterator element type is `(usize, Self::Item)`. + /// + /// This iterator is *fused*. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let data = vec![(0, 'a'), (1, 'a'), (0, 'b'), (0, 'c'), (1, 'c'), (1, 'b'), (2, 'b')]; + /// itertools::assert_equal(data.into_iter().dedup_by_with_count(|x, y| x.1 == y.1), + /// vec![(2, (0, 'a')), (1, (0, 'b')), (2, (0, 'c')), (2, (1, 'b'))]); + /// ``` + fn dedup_by_with_count(self, cmp: Cmp) -> DedupByWithCount + where + Self: Sized, + Cmp: FnMut(&Self::Item, &Self::Item) -> bool, + { + adaptors::dedup_by_with_count(self, cmp) + } + + /// Return an iterator adaptor that produces elements that appear more than once during the + /// iteration. Duplicates are detected using hash and equality. + /// + /// The iterator is stable, returning the duplicate items in the order in which they occur in + /// the adapted iterator. Each duplicate item is returned exactly once. If an item appears more + /// than twice, the second item is the item retained and the rest are discarded. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let data = vec![10, 20, 30, 20, 40, 10, 50]; + /// itertools::assert_equal(data.into_iter().duplicates(), + /// vec![20, 10]); + /// ``` + #[cfg(feature = "use_std")] + fn duplicates(self) -> Duplicates + where Self: Sized, + Self::Item: Eq + Hash + { + duplicates_impl::duplicates(self) + } + + /// Return an iterator adaptor that produces elements that appear more than once during the + /// iteration. Duplicates are detected using hash and equality. + /// + /// Duplicates are detected by comparing the key they map to with the keying function `f` by + /// hash and equality. The keys are stored in a hash map in the iterator. + /// + /// The iterator is stable, returning the duplicate items in the order in which they occur in + /// the adapted iterator. Each duplicate item is returned exactly once. If an item appears more + /// than twice, the second item is the item retained and the rest are discarded. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let data = vec!["a", "bb", "aa", "c", "ccc"]; + /// itertools::assert_equal(data.into_iter().duplicates_by(|s| s.len()), + /// vec!["aa", "c"]); + /// ``` + #[cfg(feature = "use_std")] + fn duplicates_by(self, f: F) -> DuplicatesBy + where Self: Sized, + V: Eq + Hash, + F: FnMut(&Self::Item) -> V + { + duplicates_impl::duplicates_by(self, f) + } + + /// Return an iterator adaptor that filters out elements that have + /// already been produced once during the iteration. Duplicates + /// are detected using hash and equality. + /// + /// Clones of visited elements are stored in a hash set in the + /// iterator. + /// + /// The iterator is stable, returning the non-duplicate items in the order + /// in which they occur in the adapted iterator. In a set of duplicate + /// items, the first item encountered is the item retained. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let data = vec![10, 20, 30, 20, 40, 10, 50]; + /// itertools::assert_equal(data.into_iter().unique(), + /// vec![10, 20, 30, 40, 50]); + /// ``` + #[cfg(feature = "use_std")] + fn unique(self) -> Unique + where Self: Sized, + Self::Item: Clone + Eq + Hash + { + unique_impl::unique(self) + } + + /// Return an iterator adaptor that filters out elements that have + /// already been produced once during the iteration. + /// + /// Duplicates are detected by comparing the key they map to + /// with the keying function `f` by hash and equality. + /// The keys are stored in a hash set in the iterator. + /// + /// The iterator is stable, returning the non-duplicate items in the order + /// in which they occur in the adapted iterator. In a set of duplicate + /// items, the first item encountered is the item retained. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let data = vec!["a", "bb", "aa", "c", "ccc"]; + /// itertools::assert_equal(data.into_iter().unique_by(|s| s.len()), + /// vec!["a", "bb", "ccc"]); + /// ``` + #[cfg(feature = "use_std")] + fn unique_by(self, f: F) -> UniqueBy + where Self: Sized, + V: Eq + Hash, + F: FnMut(&Self::Item) -> V + { + unique_impl::unique_by(self, f) + } + + /// Return an iterator adaptor that borrows from this iterator and + /// takes items while the closure `accept` returns `true`. + /// + /// This adaptor can only be used on iterators that implement `PeekingNext` + /// like `.peekable()`, `put_back` and a few other collection iterators. + /// + /// The last and rejected element (first `false`) is still available when + /// `peeking_take_while` is done. + /// + /// + /// See also [`.take_while_ref()`](Itertools::take_while_ref) + /// which is a similar adaptor. + fn peeking_take_while(&mut self, accept: F) -> PeekingTakeWhile + where Self: Sized + PeekingNext, + F: FnMut(&Self::Item) -> bool, + { + peeking_take_while::peeking_take_while(self, accept) + } + + /// Return an iterator adaptor that borrows from a `Clone`-able iterator + /// to only pick off elements while the predicate `accept` returns `true`. + /// + /// It uses the `Clone` trait to restore the original iterator so that the + /// last and rejected element (first `false`) is still available when + /// `take_while_ref` is done. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let mut hexadecimals = "0123456789abcdef".chars(); + /// + /// let decimals = hexadecimals.take_while_ref(|c| c.is_numeric()) + /// .collect::(); + /// assert_eq!(decimals, "0123456789"); + /// assert_eq!(hexadecimals.next(), Some('a')); + /// + /// ``` + fn take_while_ref(&mut self, accept: F) -> TakeWhileRef + where Self: Clone, + F: FnMut(&Self::Item) -> bool + { + adaptors::take_while_ref(self, accept) + } + + /// Return an iterator adaptor that filters `Option` iterator elements + /// and produces `A`. Stops on the first `None` encountered. + /// + /// Iterator element type is `A`, the unwrapped element. + /// + /// ``` + /// use itertools::Itertools; + /// + /// // List all hexadecimal digits + /// itertools::assert_equal( + /// (0..).map(|i| std::char::from_digit(i, 16)).while_some(), + /// "0123456789abcdef".chars()); + /// + /// ``` + fn while_some(self) -> WhileSome + where Self: Sized + Iterator> + { + adaptors::while_some(self) + } + + /// Return an iterator adaptor that iterates over the combinations of the + /// elements from an iterator. + /// + /// Iterator element can be any homogeneous tuple of type `Self::Item` with + /// size up to 12. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let mut v = Vec::new(); + /// for (a, b) in (1..5).tuple_combinations() { + /// v.push((a, b)); + /// } + /// assert_eq!(v, vec![(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]); + /// + /// let mut it = (1..5).tuple_combinations(); + /// assert_eq!(Some((1, 2, 3)), it.next()); + /// assert_eq!(Some((1, 2, 4)), it.next()); + /// assert_eq!(Some((1, 3, 4)), it.next()); + /// assert_eq!(Some((2, 3, 4)), it.next()); + /// assert_eq!(None, it.next()); + /// + /// // this requires a type hint + /// let it = (1..5).tuple_combinations::<(_, _, _)>(); + /// itertools::assert_equal(it, vec![(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]); + /// + /// // you can also specify the complete type + /// use itertools::TupleCombinations; + /// use std::ops::Range; + /// + /// let it: TupleCombinations, (u32, u32, u32)> = (1..5).tuple_combinations(); + /// itertools::assert_equal(it, vec![(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]); + /// ``` + fn tuple_combinations(self) -> TupleCombinations + where Self: Sized + Clone, + Self::Item: Clone, + T: adaptors::HasCombination, + { + adaptors::tuple_combinations(self) + } + + /// Return an iterator adaptor that iterates over the `k`-length combinations of + /// the elements from an iterator. + /// + /// Iterator element type is `Vec`. The iterator produces a new Vec per iteration, + /// and clones the iterator elements. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let it = (1..5).combinations(3); + /// itertools::assert_equal(it, vec![ + /// vec![1, 2, 3], + /// vec![1, 2, 4], + /// vec![1, 3, 4], + /// vec![2, 3, 4], + /// ]); + /// ``` + /// + /// Note: Combinations does not take into account the equality of the iterated values. + /// ``` + /// use itertools::Itertools; + /// + /// let it = vec![1, 2, 2].into_iter().combinations(2); + /// itertools::assert_equal(it, vec![ + /// vec![1, 2], // Note: these are the same + /// vec![1, 2], // Note: these are the same + /// vec![2, 2], + /// ]); + /// ``` + #[cfg(feature = "use_alloc")] + fn combinations(self, k: usize) -> Combinations + where Self: Sized, + Self::Item: Clone + { + combinations::combinations(self, k) + } + + /// Return an iterator that iterates over the `k`-length combinations of + /// the elements from an iterator, with replacement. + /// + /// Iterator element type is `Vec`. The iterator produces a new Vec per iteration, + /// and clones the iterator elements. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let it = (1..4).combinations_with_replacement(2); + /// itertools::assert_equal(it, vec![ + /// vec![1, 1], + /// vec![1, 2], + /// vec![1, 3], + /// vec![2, 2], + /// vec![2, 3], + /// vec![3, 3], + /// ]); + /// ``` + #[cfg(feature = "use_alloc")] + fn combinations_with_replacement(self, k: usize) -> CombinationsWithReplacement + where + Self: Sized, + Self::Item: Clone, + { + combinations_with_replacement::combinations_with_replacement(self, k) + } + + /// Return an iterator adaptor that iterates over all k-permutations of the + /// elements from an iterator. + /// + /// Iterator element type is `Vec` with length `k`. The iterator + /// produces a new Vec per iteration, and clones the iterator elements. + /// + /// If `k` is greater than the length of the input iterator, the resultant + /// iterator adaptor will be empty. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let perms = (5..8).permutations(2); + /// itertools::assert_equal(perms, vec![ + /// vec![5, 6], + /// vec![5, 7], + /// vec![6, 5], + /// vec![6, 7], + /// vec![7, 5], + /// vec![7, 6], + /// ]); + /// ``` + /// + /// Note: Permutations does not take into account the equality of the iterated values. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let it = vec![2, 2].into_iter().permutations(2); + /// itertools::assert_equal(it, vec![ + /// vec![2, 2], // Note: these are the same + /// vec![2, 2], // Note: these are the same + /// ]); + /// ``` + /// + /// Note: The source iterator is collected lazily, and will not be + /// re-iterated if the permutations adaptor is completed and re-iterated. + #[cfg(feature = "use_alloc")] + fn permutations(self, k: usize) -> Permutations + where Self: Sized, + Self::Item: Clone + { + permutations::permutations(self, k) + } + + /// Return an iterator that iterates through the powerset of the elements from an + /// iterator. + /// + /// Iterator element type is `Vec`. The iterator produces a new `Vec` + /// per iteration, and clones the iterator elements. + /// + /// The powerset of a set contains all subsets including the empty set and the full + /// input set. A powerset has length _2^n_ where _n_ is the length of the input + /// set. + /// + /// Each `Vec` produced by this iterator represents a subset of the elements + /// produced by the source iterator. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let sets = (1..4).powerset().collect::>(); + /// itertools::assert_equal(sets, vec![ + /// vec![], + /// vec![1], + /// vec![2], + /// vec![3], + /// vec![1, 2], + /// vec![1, 3], + /// vec![2, 3], + /// vec![1, 2, 3], + /// ]); + /// ``` + #[cfg(feature = "use_alloc")] + fn powerset(self) -> Powerset + where Self: Sized, + Self::Item: Clone, + { + powerset::powerset(self) + } + + /// Return an iterator adaptor that pads the sequence to a minimum length of + /// `min` by filling missing elements using a closure `f`. + /// + /// Iterator element type is `Self::Item`. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let it = (0..5).pad_using(10, |i| 2*i); + /// itertools::assert_equal(it, vec![0, 1, 2, 3, 4, 10, 12, 14, 16, 18]); + /// + /// let it = (0..10).pad_using(5, |i| 2*i); + /// itertools::assert_equal(it, vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); + /// + /// let it = (0..5).pad_using(10, |i| 2*i).rev(); + /// itertools::assert_equal(it, vec![18, 16, 14, 12, 10, 4, 3, 2, 1, 0]); + /// ``` + fn pad_using(self, min: usize, f: F) -> PadUsing + where Self: Sized, + F: FnMut(usize) -> Self::Item + { + pad_tail::pad_using(self, min, f) + } + + /// Return an iterator adaptor that wraps each element in a `Position` to + /// ease special-case handling of the first or last elements. + /// + /// Iterator element type is + /// [`Position`](Position) + /// + /// ``` + /// use itertools::{Itertools, Position}; + /// + /// let it = (0..4).with_position(); + /// itertools::assert_equal(it, + /// vec![Position::First(0), + /// Position::Middle(1), + /// Position::Middle(2), + /// Position::Last(3)]); + /// + /// let it = (0..1).with_position(); + /// itertools::assert_equal(it, vec![Position::Only(0)]); + /// ``` + fn with_position(self) -> WithPosition + where Self: Sized, + { + with_position::with_position(self) + } + + /// Return an iterator adaptor that yields the indices of all elements + /// satisfying a predicate, counted from the start of the iterator. + /// + /// Equivalent to `iter.enumerate().filter(|(_, v)| predicate(v)).map(|(i, _)| i)`. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let data = vec![1, 2, 3, 3, 4, 6, 7, 9]; + /// itertools::assert_equal(data.iter().positions(|v| v % 2 == 0), vec![1, 4, 5]); + /// + /// itertools::assert_equal(data.iter().positions(|v| v % 2 == 1).rev(), vec![7, 6, 3, 2, 0]); + /// ``` + fn positions

(self, predicate: P) -> Positions + where Self: Sized, + P: FnMut(Self::Item) -> bool, + { + adaptors::positions(self, predicate) + } + + /// Return an iterator adaptor that applies a mutating function + /// to each element before yielding it. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let input = vec![vec![1], vec![3, 2, 1]]; + /// let it = input.into_iter().update(|mut v| v.push(0)); + /// itertools::assert_equal(it, vec![vec![1, 0], vec![3, 2, 1, 0]]); + /// ``` + fn update(self, updater: F) -> Update + where Self: Sized, + F: FnMut(&mut Self::Item), + { + adaptors::update(self, updater) + } + + // non-adaptor methods + /// Advances the iterator and returns the next items grouped in a tuple of + /// a specific size (up to 12). + /// + /// If there are enough elements to be grouped in a tuple, then the tuple is + /// returned inside `Some`, otherwise `None` is returned. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let mut iter = 1..5; + /// + /// assert_eq!(Some((1, 2)), iter.next_tuple()); + /// ``` + fn next_tuple(&mut self) -> Option + where Self: Sized + Iterator, + T: traits::HomogeneousTuple + { + T::collect_from_iter_no_buf(self) + } + + /// Collects all items from the iterator into a tuple of a specific size + /// (up to 12). + /// + /// If the number of elements inside the iterator is **exactly** equal to + /// the tuple size, then the tuple is returned inside `Some`, otherwise + /// `None` is returned. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let iter = 1..3; + /// + /// if let Some((x, y)) = iter.collect_tuple() { + /// assert_eq!((x, y), (1, 2)) + /// } else { + /// panic!("Expected two elements") + /// } + /// ``` + fn collect_tuple(mut self) -> Option + where Self: Sized + Iterator, + T: traits::HomogeneousTuple + { + match self.next_tuple() { + elt @ Some(_) => match self.next() { + Some(_) => None, + None => elt, + }, + _ => None + } + } + + + /// Find the position and value of the first element satisfying a predicate. + /// + /// The iterator is not advanced past the first element found. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let text = "Hα"; + /// assert_eq!(text.chars().find_position(|ch| ch.is_lowercase()), Some((1, 'α'))); + /// ``` + fn find_position

(&mut self, mut pred: P) -> Option<(usize, Self::Item)> + where P: FnMut(&Self::Item) -> bool + { + for (index, elt) in self.enumerate() { + if pred(&elt) { + return Some((index, elt)); + } + } + None + } + /// Find the value of the first element satisfying a predicate or return the last element, if any. + /// + /// The iterator is not advanced past the first element found. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let numbers = [1, 2, 3, 4]; + /// assert_eq!(numbers.iter().find_or_last(|&&x| x > 5), Some(&4)); + /// assert_eq!(numbers.iter().find_or_last(|&&x| x > 2), Some(&3)); + /// assert_eq!(std::iter::empty::().find_or_last(|&x| x > 5), None); + /// ``` + fn find_or_last

(mut self, mut predicate: P) -> Option + where Self: Sized, + P: FnMut(&Self::Item) -> bool, + { + let mut prev = None; + self.find_map(|x| if predicate(&x) { Some(x) } else { prev = Some(x); None }) + .or(prev) + } + /// Find the value of the first element satisfying a predicate or return the first element, if any. + /// + /// The iterator is not advanced past the first element found. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let numbers = [1, 2, 3, 4]; + /// assert_eq!(numbers.iter().find_or_first(|&&x| x > 5), Some(&1)); + /// assert_eq!(numbers.iter().find_or_first(|&&x| x > 2), Some(&3)); + /// assert_eq!(std::iter::empty::().find_or_first(|&x| x > 5), None); + /// ``` + fn find_or_first

(mut self, mut predicate: P) -> Option + where Self: Sized, + P: FnMut(&Self::Item) -> bool, + { + let first = self.next()?; + Some(if predicate(&first) { + first + } else { + self.find(|x| predicate(x)).unwrap_or(first) + }) + } + /// Returns `true` if the given item is present in this iterator. + /// + /// This method is short-circuiting. If the given item is present in this + /// iterator, this method will consume the iterator up-to-and-including + /// the item. If the given item is not present in this iterator, the + /// iterator will be exhausted. + /// + /// ``` + /// use itertools::Itertools; + /// + /// #[derive(PartialEq, Debug)] + /// enum Enum { A, B, C, D, E, } + /// + /// let mut iter = vec![Enum::A, Enum::B, Enum::C, Enum::D].into_iter(); + /// + /// // search `iter` for `B` + /// assert_eq!(iter.contains(&Enum::B), true); + /// // `B` was found, so the iterator now rests at the item after `B` (i.e, `C`). + /// assert_eq!(iter.next(), Some(Enum::C)); + /// + /// // search `iter` for `E` + /// assert_eq!(iter.contains(&Enum::E), false); + /// // `E` wasn't found, so `iter` is now exhausted + /// assert_eq!(iter.next(), None); + /// ``` + fn contains(&mut self, query: &Q) -> bool + where + Self: Sized, + Self::Item: Borrow, + Q: PartialEq, + { + self.any(|x| x.borrow() == query) + } + + /// Check whether all elements compare equal. + /// + /// Empty iterators are considered to have equal elements: + /// + /// ``` + /// use itertools::Itertools; + /// + /// let data = vec![1, 1, 1, 2, 2, 3, 3, 3, 4, 5, 5]; + /// assert!(!data.iter().all_equal()); + /// assert!(data[0..3].iter().all_equal()); + /// assert!(data[3..5].iter().all_equal()); + /// assert!(data[5..8].iter().all_equal()); + /// + /// let data : Option = None; + /// assert!(data.into_iter().all_equal()); + /// ``` + fn all_equal(&mut self) -> bool + where Self: Sized, + Self::Item: PartialEq, + { + match self.next() { + None => true, + Some(a) => self.all(|x| a == x), + } + } + + /// Check whether all elements are unique (non equal). + /// + /// Empty iterators are considered to have unique elements: + /// + /// ``` + /// use itertools::Itertools; + /// + /// let data = vec![1, 2, 3, 4, 1, 5]; + /// assert!(!data.iter().all_unique()); + /// assert!(data[0..4].iter().all_unique()); + /// assert!(data[1..6].iter().all_unique()); + /// + /// let data : Option = None; + /// assert!(data.into_iter().all_unique()); + /// ``` + #[cfg(feature = "use_std")] + fn all_unique(&mut self) -> bool + where Self: Sized, + Self::Item: Eq + Hash + { + let mut used = HashSet::new(); + self.all(move |elt| used.insert(elt)) + } + + /// Consume the first `n` elements from the iterator eagerly, + /// and return the same iterator again. + /// + /// It works similarly to *.skip(* `n` *)* except it is eager and + /// preserves the iterator type. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let mut iter = "αβγ".chars().dropping(2); + /// itertools::assert_equal(iter, "γ".chars()); + /// ``` + /// + /// *Fusing notes: if the iterator is exhausted by dropping, + /// the result of calling `.next()` again depends on the iterator implementation.* + fn dropping(mut self, n: usize) -> Self + where Self: Sized + { + if n > 0 { + self.nth(n - 1); + } + self + } + + /// Consume the last `n` elements from the iterator eagerly, + /// and return the same iterator again. + /// + /// This is only possible on double ended iterators. `n` may be + /// larger than the number of elements. + /// + /// Note: This method is eager, dropping the back elements immediately and + /// preserves the iterator type. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let init = vec![0, 3, 6, 9].into_iter().dropping_back(1); + /// itertools::assert_equal(init, vec![0, 3, 6]); + /// ``` + fn dropping_back(mut self, n: usize) -> Self + where Self: Sized, + Self: DoubleEndedIterator + { + if n > 0 { + (&mut self).rev().nth(n - 1); + } + self + } + + /// Run the closure `f` eagerly on each element of the iterator. + /// + /// Consumes the iterator until its end. + /// + /// ``` + /// use std::sync::mpsc::channel; + /// use itertools::Itertools; + /// + /// let (tx, rx) = channel(); + /// + /// // use .foreach() to apply a function to each value -- sending it + /// (0..5).map(|x| x * 2 + 1).foreach(|x| { tx.send(x).unwrap(); } ); + /// + /// drop(tx); + /// + /// itertools::assert_equal(rx.iter(), vec![1, 3, 5, 7, 9]); + /// ``` + #[deprecated(note="Use .for_each() instead", since="0.8.0")] + fn foreach(self, f: F) + where F: FnMut(Self::Item), + Self: Sized, + { + self.for_each(f); + } + + /// Combine all an iterator's elements into one element by using [`Extend`]. + /// + /// This combinator will extend the first item with each of the rest of the + /// items of the iterator. If the iterator is empty, the default value of + /// `I::Item` is returned. + /// + /// ```rust + /// use itertools::Itertools; + /// + /// let input = vec![vec![1], vec![2, 3], vec![4, 5, 6]]; + /// assert_eq!(input.into_iter().concat(), + /// vec![1, 2, 3, 4, 5, 6]); + /// ``` + fn concat(self) -> Self::Item + where Self: Sized, + Self::Item: Extend<<::Item as IntoIterator>::Item> + IntoIterator + Default + { + concat(self) + } + + /// `.collect_vec()` is simply a type specialization of [`Iterator::collect`], + /// for convenience. + #[cfg(feature = "use_alloc")] + fn collect_vec(self) -> Vec + where Self: Sized + { + self.collect() + } + + /// `.try_collect()` is more convenient way of writing + /// `.collect::>()` + /// + /// # Example + /// + /// ``` + /// use std::{fs, io}; + /// use itertools::Itertools; + /// + /// fn process_dir_entries(entries: &[fs::DirEntry]) { + /// // ... + /// } + /// + /// fn do_stuff() -> std::io::Result<()> { + /// let entries: Vec<_> = fs::read_dir(".")?.try_collect()?; + /// process_dir_entries(&entries); + /// + /// Ok(()) + /// } + /// ``` + #[cfg(feature = "use_alloc")] + fn try_collect(self) -> Result + where + Self: Sized + Iterator>, + Result: FromIterator>, + { + self.collect() + } + + /// Assign to each reference in `self` from the `from` iterator, + /// stopping at the shortest of the two iterators. + /// + /// The `from` iterator is queried for its next element before the `self` + /// iterator, and if either is exhausted the method is done. + /// + /// Return the number of elements written. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let mut xs = [0; 4]; + /// xs.iter_mut().set_from(1..); + /// assert_eq!(xs, [1, 2, 3, 4]); + /// ``` + #[inline] + fn set_from<'a, A: 'a, J>(&mut self, from: J) -> usize + where Self: Iterator, + J: IntoIterator + { + let mut count = 0; + for elt in from { + match self.next() { + None => break, + Some(ptr) => *ptr = elt, + } + count += 1; + } + count + } + + /// Combine all iterator elements into one String, separated by `sep`. + /// + /// Use the `Display` implementation of each element. + /// + /// ``` + /// use itertools::Itertools; + /// + /// assert_eq!(["a", "b", "c"].iter().join(", "), "a, b, c"); + /// assert_eq!([1, 2, 3].iter().join(", "), "1, 2, 3"); + /// ``` + #[cfg(feature = "use_alloc")] + fn join(&mut self, sep: &str) -> String + where Self::Item: std::fmt::Display + { + match self.next() { + None => String::new(), + Some(first_elt) => { + // estimate lower bound of capacity needed + let (lower, _) = self.size_hint(); + let mut result = String::with_capacity(sep.len() * lower); + write!(&mut result, "{}", first_elt).unwrap(); + self.for_each(|elt| { + result.push_str(sep); + write!(&mut result, "{}", elt).unwrap(); + }); + result + } + } + } + + /// Format all iterator elements, separated by `sep`. + /// + /// All elements are formatted (any formatting trait) + /// with `sep` inserted between each element. + /// + /// **Panics** if the formatter helper is formatted more than once. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let data = [1.1, 2.71828, -3.]; + /// assert_eq!( + /// format!("{:.2}", data.iter().format(", ")), + /// "1.10, 2.72, -3.00"); + /// ``` + fn format(self, sep: &str) -> Format + where Self: Sized, + { + format::new_format_default(self, sep) + } + + /// Format all iterator elements, separated by `sep`. + /// + /// This is a customizable version of [`.format()`](Itertools::format). + /// + /// The supplied closure `format` is called once per iterator element, + /// with two arguments: the element and a callback that takes a + /// `&Display` value, i.e. any reference to type that implements `Display`. + /// + /// Using `&format_args!(...)` is the most versatile way to apply custom + /// element formatting. The callback can be called multiple times if needed. + /// + /// **Panics** if the formatter helper is formatted more than once. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let data = [1.1, 2.71828, -3.]; + /// let data_formatter = data.iter().format_with(", ", |elt, f| f(&format_args!("{:.2}", elt))); + /// assert_eq!(format!("{}", data_formatter), + /// "1.10, 2.72, -3.00"); + /// + /// // .format_with() is recursively composable + /// let matrix = [[1., 2., 3.], + /// [4., 5., 6.]]; + /// let matrix_formatter = matrix.iter().format_with("\n", |row, f| { + /// f(&row.iter().format_with(", ", |elt, g| g(&elt))) + /// }); + /// assert_eq!(format!("{}", matrix_formatter), + /// "1, 2, 3\n4, 5, 6"); + /// + /// + /// ``` + fn format_with(self, sep: &str, format: F) -> FormatWith + where Self: Sized, + F: FnMut(Self::Item, &mut dyn FnMut(&dyn fmt::Display) -> fmt::Result) -> fmt::Result, + { + format::new_format(self, sep, format) + } + + /// See [`.fold_ok()`](Itertools::fold_ok). + #[deprecated(note="Use .fold_ok() instead", since="0.10.0")] + fn fold_results(&mut self, start: B, f: F) -> Result + where Self: Iterator>, + F: FnMut(B, A) -> B + { + self.fold_ok(start, f) + } + + /// Fold `Result` values from an iterator. + /// + /// Only `Ok` values are folded. If no error is encountered, the folded + /// value is returned inside `Ok`. Otherwise, the operation terminates + /// and returns the first `Err` value it encounters. No iterator elements are + /// consumed after the first error. + /// + /// The first accumulator value is the `start` parameter. + /// Each iteration passes the accumulator value and the next value inside `Ok` + /// to the fold function `f` and its return value becomes the new accumulator value. + /// + /// For example the sequence *Ok(1), Ok(2), Ok(3)* will result in a + /// computation like this: + /// + /// ```ignore + /// let mut accum = start; + /// accum = f(accum, 1); + /// accum = f(accum, 2); + /// accum = f(accum, 3); + /// ``` + /// + /// With a `start` value of 0 and an addition as folding function, + /// this effectively results in *((0 + 1) + 2) + 3* + /// + /// ``` + /// use std::ops::Add; + /// use itertools::Itertools; + /// + /// let values = [1, 2, -2, -1, 2, 1]; + /// assert_eq!( + /// values.iter() + /// .map(Ok::<_, ()>) + /// .fold_ok(0, Add::add), + /// Ok(3) + /// ); + /// assert!( + /// values.iter() + /// .map(|&x| if x >= 0 { Ok(x) } else { Err("Negative number") }) + /// .fold_ok(0, Add::add) + /// .is_err() + /// ); + /// ``` + fn fold_ok(&mut self, mut start: B, mut f: F) -> Result + where Self: Iterator>, + F: FnMut(B, A) -> B + { + for elt in self { + match elt { + Ok(v) => start = f(start, v), + Err(u) => return Err(u), + } + } + Ok(start) + } + + /// Fold `Option` values from an iterator. + /// + /// Only `Some` values are folded. If no `None` is encountered, the folded + /// value is returned inside `Some`. Otherwise, the operation terminates + /// and returns `None`. No iterator elements are consumed after the `None`. + /// + /// This is the `Option` equivalent to [`fold_ok`](Itertools::fold_ok). + /// + /// ``` + /// use std::ops::Add; + /// use itertools::Itertools; + /// + /// let mut values = vec![Some(1), Some(2), Some(-2)].into_iter(); + /// assert_eq!(values.fold_options(5, Add::add), Some(5 + 1 + 2 - 2)); + /// + /// let mut more_values = vec![Some(2), None, Some(0)].into_iter(); + /// assert!(more_values.fold_options(0, Add::add).is_none()); + /// assert_eq!(more_values.next().unwrap(), Some(0)); + /// ``` + fn fold_options(&mut self, mut start: B, mut f: F) -> Option + where Self: Iterator>, + F: FnMut(B, A) -> B + { + for elt in self { + match elt { + Some(v) => start = f(start, v), + None => return None, + } + } + Some(start) + } + + /// Accumulator of the elements in the iterator. + /// + /// Like `.fold()`, without a base case. If the iterator is + /// empty, return `None`. With just one element, return it. + /// Otherwise elements are accumulated in sequence using the closure `f`. + /// + /// ``` + /// use itertools::Itertools; + /// + /// assert_eq!((0..10).fold1(|x, y| x + y).unwrap_or(0), 45); + /// assert_eq!((0..0).fold1(|x, y| x * y), None); + /// ``` + #[deprecated(since = "0.10.2", note = "Use `Iterator::reduce` instead")] + fn fold1(mut self, f: F) -> Option + where F: FnMut(Self::Item, Self::Item) -> Self::Item, + Self: Sized, + { + self.next().map(move |x| self.fold(x, f)) + } + + /// Accumulate the elements in the iterator in a tree-like manner. + /// + /// You can think of it as, while there's more than one item, repeatedly + /// combining adjacent items. It does so in bottom-up-merge-sort order, + /// however, so that it needs only logarithmic stack space. + /// + /// This produces a call tree like the following (where the calls under + /// an item are done after reading that item): + /// + /// ```text + /// 1 2 3 4 5 6 7 + /// │ │ │ │ │ │ │ + /// └─f └─f └─f │ + /// │ │ │ │ + /// └───f └─f + /// │ │ + /// └─────f + /// ``` + /// + /// Which, for non-associative functions, will typically produce a different + /// result than the linear call tree used by [`Iterator::reduce`]: + /// + /// ```text + /// 1 2 3 4 5 6 7 + /// │ │ │ │ │ │ │ + /// └─f─f─f─f─f─f + /// ``` + /// + /// If `f` is associative, prefer the normal [`Iterator::reduce`] instead. + /// + /// ``` + /// use itertools::Itertools; + /// + /// // The same tree as above + /// let num_strings = (1..8).map(|x| x.to_string()); + /// assert_eq!(num_strings.tree_fold1(|x, y| format!("f({}, {})", x, y)), + /// Some(String::from("f(f(f(1, 2), f(3, 4)), f(f(5, 6), 7))"))); + /// + /// // Like fold1, an empty iterator produces None + /// assert_eq!((0..0).tree_fold1(|x, y| x * y), None); + /// + /// // tree_fold1 matches fold1 for associative operations... + /// assert_eq!((0..10).tree_fold1(|x, y| x + y), + /// (0..10).fold1(|x, y| x + y)); + /// // ...but not for non-associative ones + /// assert_ne!((0..10).tree_fold1(|x, y| x - y), + /// (0..10).fold1(|x, y| x - y)); + /// ``` + fn tree_fold1(mut self, mut f: F) -> Option + where F: FnMut(Self::Item, Self::Item) -> Self::Item, + Self: Sized, + { + type State = Result>; + + fn inner0(it: &mut II, f: &mut FF) -> State + where + II: Iterator, + FF: FnMut(T, T) -> T + { + // This function could be replaced with `it.next().ok_or(None)`, + // but half the useful tree_fold1 work is combining adjacent items, + // so put that in a form that LLVM is more likely to optimize well. + + let a = + if let Some(v) = it.next() { v } + else { return Err(None) }; + let b = + if let Some(v) = it.next() { v } + else { return Err(Some(a)) }; + Ok(f(a, b)) + } + + fn inner(stop: usize, it: &mut II, f: &mut FF) -> State + where + II: Iterator, + FF: FnMut(T, T) -> T + { + let mut x = inner0(it, f)?; + for height in 0..stop { + // Try to get another tree the same size with which to combine it, + // creating a new tree that's twice as big for next time around. + let next = + if height == 0 { + inner0(it, f) + } else { + inner(height, it, f) + }; + match next { + Ok(y) => x = f(x, y), + + // If we ran out of items, combine whatever we did manage + // to get. It's better combined with the current value + // than something in a parent frame, because the tree in + // the parent is always as least as big as this one. + Err(None) => return Err(Some(x)), + Err(Some(y)) => return Err(Some(f(x, y))), + } + } + Ok(x) + } + + match inner(usize::max_value(), &mut self, &mut f) { + Err(x) => x, + _ => unreachable!(), + } + } + + /// An iterator method that applies a function, producing a single, final value. + /// + /// `fold_while()` is basically equivalent to [`Iterator::fold`] but with additional support for + /// early exit via short-circuiting. + /// + /// ``` + /// use itertools::Itertools; + /// use itertools::FoldWhile::{Continue, Done}; + /// + /// let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + /// + /// let mut result = 0; + /// + /// // for loop: + /// for i in &numbers { + /// if *i > 5 { + /// break; + /// } + /// result = result + i; + /// } + /// + /// // fold: + /// let result2 = numbers.iter().fold(0, |acc, x| { + /// if *x > 5 { acc } else { acc + x } + /// }); + /// + /// // fold_while: + /// let result3 = numbers.iter().fold_while(0, |acc, x| { + /// if *x > 5 { Done(acc) } else { Continue(acc + x) } + /// }).into_inner(); + /// + /// // they're the same + /// assert_eq!(result, result2); + /// assert_eq!(result2, result3); + /// ``` + /// + /// The big difference between the computations of `result2` and `result3` is that while + /// `fold()` called the provided closure for every item of the callee iterator, + /// `fold_while()` actually stopped iterating as soon as it encountered `Fold::Done(_)`. + fn fold_while(&mut self, init: B, mut f: F) -> FoldWhile + where Self: Sized, + F: FnMut(B, Self::Item) -> FoldWhile + { + use Result::{ + Ok as Continue, + Err as Break, + }; + + let result = self.try_fold(init, #[inline(always)] |acc, v| + match f(acc, v) { + FoldWhile::Continue(acc) => Continue(acc), + FoldWhile::Done(acc) => Break(acc), + } + ); + + match result { + Continue(acc) => FoldWhile::Continue(acc), + Break(acc) => FoldWhile::Done(acc), + } + } + + /// Iterate over the entire iterator and add all the elements. + /// + /// An empty iterator returns `None`, otherwise `Some(sum)`. + /// + /// # Panics + /// + /// When calling `sum1()` and a primitive integer type is being returned, this + /// method will panic if the computation overflows and debug assertions are + /// enabled. + /// + /// # Examples + /// + /// ``` + /// use itertools::Itertools; + /// + /// let empty_sum = (1..1).sum1::(); + /// assert_eq!(empty_sum, None); + /// + /// let nonempty_sum = (1..11).sum1::(); + /// assert_eq!(nonempty_sum, Some(55)); + /// ``` + fn sum1(mut self) -> Option + where Self: Sized, + S: std::iter::Sum, + { + self.next() + .map(|first| once(first).chain(self).sum()) + } + + /// Iterate over the entire iterator and multiply all the elements. + /// + /// An empty iterator returns `None`, otherwise `Some(product)`. + /// + /// # Panics + /// + /// When calling `product1()` and a primitive integer type is being returned, + /// method will panic if the computation overflows and debug assertions are + /// enabled. + /// + /// # Examples + /// ``` + /// use itertools::Itertools; + /// + /// let empty_product = (1..1).product1::(); + /// assert_eq!(empty_product, None); + /// + /// let nonempty_product = (1..11).product1::(); + /// assert_eq!(nonempty_product, Some(3628800)); + /// ``` + fn product1

(mut self) -> Option

+ where Self: Sized, + P: std::iter::Product, + { + self.next() + .map(|first| once(first).chain(self).product()) + } + + /// Sort all iterator elements into a new iterator in ascending order. + /// + /// **Note:** This consumes the entire iterator, uses the + /// [`slice::sort_unstable`] method and returns the result as a new + /// iterator that owns its elements. + /// + /// The sorted iterator, if directly collected to a `Vec`, is converted + /// without any extra copying or allocation cost. + /// + /// ``` + /// use itertools::Itertools; + /// + /// // sort the letters of the text in ascending order + /// let text = "bdacfe"; + /// itertools::assert_equal(text.chars().sorted_unstable(), + /// "abcdef".chars()); + /// ``` + #[cfg(feature = "use_alloc")] + fn sorted_unstable(self) -> VecIntoIter + where Self: Sized, + Self::Item: Ord + { + // Use .sort_unstable() directly since it is not quite identical with + // .sort_by(Ord::cmp) + let mut v = Vec::from_iter(self); + v.sort_unstable(); + v.into_iter() + } + + /// Sort all iterator elements into a new iterator in ascending order. + /// + /// **Note:** This consumes the entire iterator, uses the + /// [`slice::sort_unstable_by`] method and returns the result as a new + /// iterator that owns its elements. + /// + /// The sorted iterator, if directly collected to a `Vec`, is converted + /// without any extra copying or allocation cost. + /// + /// ``` + /// use itertools::Itertools; + /// + /// // sort people in descending order by age + /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 27)]; + /// + /// let oldest_people_first = people + /// .into_iter() + /// .sorted_unstable_by(|a, b| Ord::cmp(&b.1, &a.1)) + /// .map(|(person, _age)| person); + /// + /// itertools::assert_equal(oldest_people_first, + /// vec!["Jill", "Jack", "Jane", "John"]); + /// ``` + #[cfg(feature = "use_alloc")] + fn sorted_unstable_by(self, cmp: F) -> VecIntoIter + where Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering, + { + let mut v = Vec::from_iter(self); + v.sort_unstable_by(cmp); + v.into_iter() + } + + /// Sort all iterator elements into a new iterator in ascending order. + /// + /// **Note:** This consumes the entire iterator, uses the + /// [`slice::sort_unstable_by_key`] method and returns the result as a new + /// iterator that owns its elements. + /// + /// The sorted iterator, if directly collected to a `Vec`, is converted + /// without any extra copying or allocation cost. + /// + /// ``` + /// use itertools::Itertools; + /// + /// // sort people in descending order by age + /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 27)]; + /// + /// let oldest_people_first = people + /// .into_iter() + /// .sorted_unstable_by_key(|x| -x.1) + /// .map(|(person, _age)| person); + /// + /// itertools::assert_equal(oldest_people_first, + /// vec!["Jill", "Jack", "Jane", "John"]); + /// ``` + #[cfg(feature = "use_alloc")] + fn sorted_unstable_by_key(self, f: F) -> VecIntoIter + where Self: Sized, + K: Ord, + F: FnMut(&Self::Item) -> K, + { + let mut v = Vec::from_iter(self); + v.sort_unstable_by_key(f); + v.into_iter() + } + + /// Sort all iterator elements into a new iterator in ascending order. + /// + /// **Note:** This consumes the entire iterator, uses the + /// [`slice::sort`] method and returns the result as a new + /// iterator that owns its elements. + /// + /// The sorted iterator, if directly collected to a `Vec`, is converted + /// without any extra copying or allocation cost. + /// + /// ``` + /// use itertools::Itertools; + /// + /// // sort the letters of the text in ascending order + /// let text = "bdacfe"; + /// itertools::assert_equal(text.chars().sorted(), + /// "abcdef".chars()); + /// ``` + #[cfg(feature = "use_alloc")] + fn sorted(self) -> VecIntoIter + where Self: Sized, + Self::Item: Ord + { + // Use .sort() directly since it is not quite identical with + // .sort_by(Ord::cmp) + let mut v = Vec::from_iter(self); + v.sort(); + v.into_iter() + } + + /// Sort all iterator elements into a new iterator in ascending order. + /// + /// **Note:** This consumes the entire iterator, uses the + /// [`slice::sort_by`] method and returns the result as a new + /// iterator that owns its elements. + /// + /// The sorted iterator, if directly collected to a `Vec`, is converted + /// without any extra copying or allocation cost. + /// + /// ``` + /// use itertools::Itertools; + /// + /// // sort people in descending order by age + /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 27)]; + /// + /// let oldest_people_first = people + /// .into_iter() + /// .sorted_by(|a, b| Ord::cmp(&b.1, &a.1)) + /// .map(|(person, _age)| person); + /// + /// itertools::assert_equal(oldest_people_first, + /// vec!["Jill", "Jack", "Jane", "John"]); + /// ``` + #[cfg(feature = "use_alloc")] + fn sorted_by(self, cmp: F) -> VecIntoIter + where Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering, + { + let mut v = Vec::from_iter(self); + v.sort_by(cmp); + v.into_iter() + } + + /// Sort all iterator elements into a new iterator in ascending order. + /// + /// **Note:** This consumes the entire iterator, uses the + /// [`slice::sort_by_key`] method and returns the result as a new + /// iterator that owns its elements. + /// + /// The sorted iterator, if directly collected to a `Vec`, is converted + /// without any extra copying or allocation cost. + /// + /// ``` + /// use itertools::Itertools; + /// + /// // sort people in descending order by age + /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 27)]; + /// + /// let oldest_people_first = people + /// .into_iter() + /// .sorted_by_key(|x| -x.1) + /// .map(|(person, _age)| person); + /// + /// itertools::assert_equal(oldest_people_first, + /// vec!["Jill", "Jack", "Jane", "John"]); + /// ``` + #[cfg(feature = "use_alloc")] + fn sorted_by_key(self, f: F) -> VecIntoIter + where Self: Sized, + K: Ord, + F: FnMut(&Self::Item) -> K, + { + let mut v = Vec::from_iter(self); + v.sort_by_key(f); + v.into_iter() + } + + /// Sort all iterator elements into a new iterator in ascending order. The key function is + /// called exactly once per key. + /// + /// **Note:** This consumes the entire iterator, uses the + /// [`slice::sort_by_cached_key`] method and returns the result as a new + /// iterator that owns its elements. + /// + /// The sorted iterator, if directly collected to a `Vec`, is converted + /// without any extra copying or allocation cost. + /// + /// ``` + /// use itertools::Itertools; + /// + /// // sort people in descending order by age + /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 27)]; + /// + /// let oldest_people_first = people + /// .into_iter() + /// .sorted_by_cached_key(|x| -x.1) + /// .map(|(person, _age)| person); + /// + /// itertools::assert_equal(oldest_people_first, + /// vec!["Jill", "Jack", "Jane", "John"]); + /// ``` + #[cfg(feature = "use_alloc")] + fn sorted_by_cached_key(self, f: F) -> VecIntoIter + where + Self: Sized, + K: Ord, + F: FnMut(&Self::Item) -> K, + { + let mut v = Vec::from_iter(self); + v.sort_by_cached_key(f); + v.into_iter() + } + + /// Sort the k smallest elements into a new iterator, in ascending order. + /// + /// **Note:** This consumes the entire iterator, and returns the result + /// as a new iterator that owns its elements. If the input contains + /// less than k elements, the result is equivalent to `self.sorted()`. + /// + /// This is guaranteed to use `k * sizeof(Self::Item) + O(1)` memory + /// and `O(n log k)` time, with `n` the number of elements in the input. + /// + /// The sorted iterator, if directly collected to a `Vec`, is converted + /// without any extra copying or allocation cost. + /// + /// **Note:** This is functionally-equivalent to `self.sorted().take(k)` + /// but much more efficient. + /// + /// ``` + /// use itertools::Itertools; + /// + /// // A random permutation of 0..15 + /// let numbers = vec![6, 9, 1, 14, 0, 4, 8, 7, 11, 2, 10, 3, 13, 12, 5]; + /// + /// let five_smallest = numbers + /// .into_iter() + /// .k_smallest(5); + /// + /// itertools::assert_equal(five_smallest, 0..5); + /// ``` + #[cfg(feature = "use_alloc")] + fn k_smallest(self, k: usize) -> VecIntoIter + where Self: Sized, + Self::Item: Ord + { + crate::k_smallest::k_smallest(self, k) + .into_sorted_vec() + .into_iter() + } + + /// Collect all iterator elements into one of two + /// partitions. Unlike [`Iterator::partition`], each partition may + /// have a distinct type. + /// + /// ``` + /// use itertools::{Itertools, Either}; + /// + /// let successes_and_failures = vec![Ok(1), Err(false), Err(true), Ok(2)]; + /// + /// let (successes, failures): (Vec<_>, Vec<_>) = successes_and_failures + /// .into_iter() + /// .partition_map(|r| { + /// match r { + /// Ok(v) => Either::Left(v), + /// Err(v) => Either::Right(v), + /// } + /// }); + /// + /// assert_eq!(successes, [1, 2]); + /// assert_eq!(failures, [false, true]); + /// ``` + fn partition_map(self, mut predicate: F) -> (A, B) + where Self: Sized, + F: FnMut(Self::Item) -> Either, + A: Default + Extend, + B: Default + Extend, + { + let mut left = A::default(); + let mut right = B::default(); + + self.for_each(|val| match predicate(val) { + Either::Left(v) => left.extend(Some(v)), + Either::Right(v) => right.extend(Some(v)), + }); + + (left, right) + } + + /// Partition a sequence of `Result`s into one list of all the `Ok` elements + /// and another list of all the `Err` elements. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let successes_and_failures = vec![Ok(1), Err(false), Err(true), Ok(2)]; + /// + /// let (successes, failures): (Vec<_>, Vec<_>) = successes_and_failures + /// .into_iter() + /// .partition_result(); + /// + /// assert_eq!(successes, [1, 2]); + /// assert_eq!(failures, [false, true]); + /// ``` + fn partition_result(self) -> (A, B) + where + Self: Iterator> + Sized, + A: Default + Extend, + B: Default + Extend, + { + self.partition_map(|r| match r { + Ok(v) => Either::Left(v), + Err(v) => Either::Right(v), + }) + } + + /// Return a `HashMap` of keys mapped to `Vec`s of values. Keys and values + /// are taken from `(Key, Value)` tuple pairs yielded by the input iterator. + /// + /// Essentially a shorthand for `.into_grouping_map().collect::>()`. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let data = vec![(0, 10), (2, 12), (3, 13), (0, 20), (3, 33), (2, 42)]; + /// let lookup = data.into_iter().into_group_map(); + /// + /// assert_eq!(lookup[&0], vec![10, 20]); + /// assert_eq!(lookup.get(&1), None); + /// assert_eq!(lookup[&2], vec![12, 42]); + /// assert_eq!(lookup[&3], vec![13, 33]); + /// ``` + #[cfg(feature = "use_std")] + fn into_group_map(self) -> HashMap> + where Self: Iterator + Sized, + K: Hash + Eq, + { + group_map::into_group_map(self) + } + + /// Return an `Iterator` on a `HashMap`. Keys mapped to `Vec`s of values. The key is specified + /// in the closure. + /// + /// Essentially a shorthand for `.into_grouping_map_by(f).collect::>()`. + /// + /// ``` + /// use itertools::Itertools; + /// use std::collections::HashMap; + /// + /// let data = vec![(0, 10), (2, 12), (3, 13), (0, 20), (3, 33), (2, 42)]; + /// let lookup: HashMap> = + /// data.clone().into_iter().into_group_map_by(|a| a.0); + /// + /// assert_eq!(lookup[&0], vec![(0,10),(0,20)]); + /// assert_eq!(lookup.get(&1), None); + /// assert_eq!(lookup[&2], vec![(2,12), (2,42)]); + /// assert_eq!(lookup[&3], vec![(3,13), (3,33)]); + /// + /// assert_eq!( + /// data.into_iter() + /// .into_group_map_by(|x| x.0) + /// .into_iter() + /// .map(|(key, values)| (key, values.into_iter().fold(0,|acc, (_,v)| acc + v ))) + /// .collect::>()[&0], + /// 30, + /// ); + /// ``` + #[cfg(feature = "use_std")] + fn into_group_map_by(self, f: F) -> HashMap> + where + Self: Iterator + Sized, + K: Hash + Eq, + F: Fn(&V) -> K, + { + group_map::into_group_map_by(self, f) + } + + /// Constructs a `GroupingMap` to be used later with one of the efficient + /// group-and-fold operations it allows to perform. + /// + /// The input iterator must yield item in the form of `(K, V)` where the + /// value of type `K` will be used as key to identify the groups and the + /// value of type `V` as value for the folding operation. + /// + /// See [`GroupingMap`] for more informations + /// on what operations are available. + #[cfg(feature = "use_std")] + fn into_grouping_map(self) -> GroupingMap + where Self: Iterator + Sized, + K: Hash + Eq, + { + grouping_map::new(self) + } + + /// Constructs a `GroupingMap` to be used later with one of the efficient + /// group-and-fold operations it allows to perform. + /// + /// The values from this iterator will be used as values for the folding operation + /// while the keys will be obtained from the values by calling `key_mapper`. + /// + /// See [`GroupingMap`] for more informations + /// on what operations are available. + #[cfg(feature = "use_std")] + fn into_grouping_map_by(self, key_mapper: F) -> GroupingMapBy + where Self: Iterator + Sized, + K: Hash + Eq, + F: FnMut(&V) -> K + { + grouping_map::new(grouping_map::MapForGrouping::new(self, key_mapper)) + } + + /// Return all minimum elements of an iterator. + /// + /// # Examples + /// + /// ``` + /// use itertools::Itertools; + /// + /// let a: [i32; 0] = []; + /// assert_eq!(a.iter().min_set(), Vec::<&i32>::new()); + /// + /// let a = [1]; + /// assert_eq!(a.iter().min_set(), vec![&1]); + /// + /// let a = [1, 2, 3, 4, 5]; + /// assert_eq!(a.iter().min_set(), vec![&1]); + /// + /// let a = [1, 1, 1, 1]; + /// assert_eq!(a.iter().min_set(), vec![&1, &1, &1, &1]); + /// ``` + /// + /// The elements can be floats but no particular result is guaranteed + /// if an element is NaN. + #[cfg(feature = "use_std")] + fn min_set(self) -> Vec + where Self: Sized, Self::Item: Ord + { + extrema_set::min_set_impl(self, |_| (), |x, y, _, _| x.cmp(y)) + } + + /// Return all minimum elements of an iterator, as determined by + /// the specified function. + /// + /// # Examples + /// + /// ``` + /// # use std::cmp::Ordering; + /// use itertools::Itertools; + /// + /// let a: [(i32, i32); 0] = []; + /// assert_eq!(a.iter().min_set_by(|_, _| Ordering::Equal), Vec::<&(i32, i32)>::new()); + /// + /// let a = [(1, 2)]; + /// assert_eq!(a.iter().min_set_by(|&&(k1,_), &&(k2, _)| k1.cmp(&k2)), vec![&(1, 2)]); + /// + /// let a = [(1, 2), (2, 2), (3, 9), (4, 8), (5, 9)]; + /// assert_eq!(a.iter().min_set_by(|&&(_,k1), &&(_,k2)| k1.cmp(&k2)), vec![&(1, 2), &(2, 2)]); + /// + /// let a = [(1, 2), (1, 3), (1, 4), (1, 5)]; + /// assert_eq!(a.iter().min_set_by(|&&(k1,_), &&(k2, _)| k1.cmp(&k2)), vec![&(1, 2), &(1, 3), &(1, 4), &(1, 5)]); + /// ``` + /// + /// The elements can be floats but no particular result is guaranteed + /// if an element is NaN. + #[cfg(feature = "use_std")] + fn min_set_by(self, mut compare: F) -> Vec + where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering + { + extrema_set::min_set_impl( + self, + |_| (), + |x, y, _, _| compare(x, y) + ) + } + + /// Return all minimum elements of an iterator, as determined by + /// the specified function. + /// + /// # Examples + /// + /// ``` + /// use itertools::Itertools; + /// + /// let a: [(i32, i32); 0] = []; + /// assert_eq!(a.iter().min_set_by_key(|_| ()), Vec::<&(i32, i32)>::new()); + /// + /// let a = [(1, 2)]; + /// assert_eq!(a.iter().min_set_by_key(|&&(k,_)| k), vec![&(1, 2)]); + /// + /// let a = [(1, 2), (2, 2), (3, 9), (4, 8), (5, 9)]; + /// assert_eq!(a.iter().min_set_by_key(|&&(_, k)| k), vec![&(1, 2), &(2, 2)]); + /// + /// let a = [(1, 2), (1, 3), (1, 4), (1, 5)]; + /// assert_eq!(a.iter().min_set_by_key(|&&(k, _)| k), vec![&(1, 2), &(1, 3), &(1, 4), &(1, 5)]); + /// ``` + /// + /// The elements can be floats but no particular result is guaranteed + /// if an element is NaN. + #[cfg(feature = "use_std")] + fn min_set_by_key(self, key: F) -> Vec + where Self: Sized, K: Ord, F: FnMut(&Self::Item) -> K + { + extrema_set::min_set_impl(self, key, |_, _, kx, ky| kx.cmp(ky)) + } + + /// Return all maximum elements of an iterator. + /// + /// # Examples + /// + /// ``` + /// use itertools::Itertools; + /// + /// let a: [i32; 0] = []; + /// assert_eq!(a.iter().max_set(), Vec::<&i32>::new()); + /// + /// let a = [1]; + /// assert_eq!(a.iter().max_set(), vec![&1]); + /// + /// let a = [1, 2, 3, 4, 5]; + /// assert_eq!(a.iter().max_set(), vec![&5]); + /// + /// let a = [1, 1, 1, 1]; + /// assert_eq!(a.iter().max_set(), vec![&1, &1, &1, &1]); + /// ``` + /// + /// The elements can be floats but no particular result is guaranteed + /// if an element is NaN. + #[cfg(feature = "use_std")] + fn max_set(self) -> Vec + where Self: Sized, Self::Item: Ord + { + extrema_set::max_set_impl(self, |_| (), |x, y, _, _| x.cmp(y)) + } + + /// Return all maximum elements of an iterator, as determined by + /// the specified function. + /// + /// # Examples + /// + /// ``` + /// # use std::cmp::Ordering; + /// use itertools::Itertools; + /// + /// let a: [(i32, i32); 0] = []; + /// assert_eq!(a.iter().max_set_by(|_, _| Ordering::Equal), Vec::<&(i32, i32)>::new()); + /// + /// let a = [(1, 2)]; + /// assert_eq!(a.iter().max_set_by(|&&(k1,_), &&(k2, _)| k1.cmp(&k2)), vec![&(1, 2)]); + /// + /// let a = [(1, 2), (2, 2), (3, 9), (4, 8), (5, 9)]; + /// assert_eq!(a.iter().max_set_by(|&&(_,k1), &&(_,k2)| k1.cmp(&k2)), vec![&(3, 9), &(5, 9)]); + /// + /// let a = [(1, 2), (1, 3), (1, 4), (1, 5)]; + /// assert_eq!(a.iter().max_set_by(|&&(k1,_), &&(k2, _)| k1.cmp(&k2)), vec![&(1, 2), &(1, 3), &(1, 4), &(1, 5)]); + /// ``` + /// + /// The elements can be floats but no particular result is guaranteed + /// if an element is NaN. + #[cfg(feature = "use_std")] + fn max_set_by(self, mut compare: F) -> Vec + where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering + { + extrema_set::max_set_impl( + self, + |_| (), + |x, y, _, _| compare(x, y) + ) + } + + /// Return all minimum elements of an iterator, as determined by + /// the specified function. + /// + /// # Examples + /// + /// ``` + /// use itertools::Itertools; + /// + /// let a: [(i32, i32); 0] = []; + /// assert_eq!(a.iter().max_set_by_key(|_| ()), Vec::<&(i32, i32)>::new()); + /// + /// let a = [(1, 2)]; + /// assert_eq!(a.iter().max_set_by_key(|&&(k,_)| k), vec![&(1, 2)]); + /// + /// let a = [(1, 2), (2, 2), (3, 9), (4, 8), (5, 9)]; + /// assert_eq!(a.iter().max_set_by_key(|&&(_, k)| k), vec![&(3, 9), &(5, 9)]); + /// + /// let a = [(1, 2), (1, 3), (1, 4), (1, 5)]; + /// assert_eq!(a.iter().max_set_by_key(|&&(k, _)| k), vec![&(1, 2), &(1, 3), &(1, 4), &(1, 5)]); + /// ``` + /// + /// The elements can be floats but no particular result is guaranteed + /// if an element is NaN. + #[cfg(feature = "use_std")] + fn max_set_by_key(self, key: F) -> Vec + where Self: Sized, K: Ord, F: FnMut(&Self::Item) -> K + { + extrema_set::max_set_impl(self, key, |_, _, kx, ky| kx.cmp(ky)) + } + + /// Return the minimum and maximum elements in the iterator. + /// + /// The return type `MinMaxResult` is an enum of three variants: + /// + /// - `NoElements` if the iterator is empty. + /// - `OneElement(x)` if the iterator has exactly one element. + /// - `MinMax(x, y)` is returned otherwise, where `x <= y`. Two + /// values are equal if and only if there is more than one + /// element in the iterator and all elements are equal. + /// + /// On an iterator of length `n`, `minmax` does `1.5 * n` comparisons, + /// and so is faster than calling `min` and `max` separately which does + /// `2 * n` comparisons. + /// + /// # Examples + /// + /// ``` + /// use itertools::Itertools; + /// use itertools::MinMaxResult::{NoElements, OneElement, MinMax}; + /// + /// let a: [i32; 0] = []; + /// assert_eq!(a.iter().minmax(), NoElements); + /// + /// let a = [1]; + /// assert_eq!(a.iter().minmax(), OneElement(&1)); + /// + /// let a = [1, 2, 3, 4, 5]; + /// assert_eq!(a.iter().minmax(), MinMax(&1, &5)); + /// + /// let a = [1, 1, 1, 1]; + /// assert_eq!(a.iter().minmax(), MinMax(&1, &1)); + /// ``` + /// + /// The elements can be floats but no particular result is guaranteed + /// if an element is NaN. + fn minmax(self) -> MinMaxResult + where Self: Sized, Self::Item: PartialOrd + { + minmax::minmax_impl(self, |_| (), |x, y, _, _| x < y) + } + + /// Return the minimum and maximum element of an iterator, as determined by + /// the specified function. + /// + /// The return value is a variant of [`MinMaxResult`] like for [`.minmax()`](Itertools::minmax). + /// + /// For the minimum, the first minimal element is returned. For the maximum, + /// the last maximal element wins. This matches the behavior of the standard + /// [`Iterator::min`] and [`Iterator::max`] methods. + /// + /// The keys can be floats but no particular result is guaranteed + /// if a key is NaN. + fn minmax_by_key(self, key: F) -> MinMaxResult + where Self: Sized, K: PartialOrd, F: FnMut(&Self::Item) -> K + { + minmax::minmax_impl(self, key, |_, _, xk, yk| xk < yk) + } + + /// Return the minimum and maximum element of an iterator, as determined by + /// the specified comparison function. + /// + /// The return value is a variant of [`MinMaxResult`] like for [`.minmax()`](Itertools::minmax). + /// + /// For the minimum, the first minimal element is returned. For the maximum, + /// the last maximal element wins. This matches the behavior of the standard + /// [`Iterator::min`] and [`Iterator::max`] methods. + fn minmax_by(self, mut compare: F) -> MinMaxResult + where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering + { + minmax::minmax_impl( + self, + |_| (), + |x, y, _, _| Ordering::Less == compare(x, y) + ) + } + + /// Return the position of the maximum element in the iterator. + /// + /// If several elements are equally maximum, the position of the + /// last of them is returned. + /// + /// # Examples + /// + /// ``` + /// use itertools::Itertools; + /// + /// let a: [i32; 0] = []; + /// assert_eq!(a.iter().position_max(), None); + /// + /// let a = [-3, 0, 1, 5, -10]; + /// assert_eq!(a.iter().position_max(), Some(3)); + /// + /// let a = [1, 1, -1, -1]; + /// assert_eq!(a.iter().position_max(), Some(1)); + /// ``` + fn position_max(self) -> Option + where Self: Sized, Self::Item: Ord + { + self.enumerate() + .max_by(|x, y| Ord::cmp(&x.1, &y.1)) + .map(|x| x.0) + } + + /// Return the position of the maximum element in the iterator, as + /// determined by the specified function. + /// + /// If several elements are equally maximum, the position of the + /// last of them is returned. + /// + /// # Examples + /// + /// ``` + /// use itertools::Itertools; + /// + /// let a: [i32; 0] = []; + /// assert_eq!(a.iter().position_max_by_key(|x| x.abs()), None); + /// + /// let a = [-3_i32, 0, 1, 5, -10]; + /// assert_eq!(a.iter().position_max_by_key(|x| x.abs()), Some(4)); + /// + /// let a = [1_i32, 1, -1, -1]; + /// assert_eq!(a.iter().position_max_by_key(|x| x.abs()), Some(3)); + /// ``` + fn position_max_by_key(self, mut key: F) -> Option + where Self: Sized, K: Ord, F: FnMut(&Self::Item) -> K + { + self.enumerate() + .max_by(|x, y| Ord::cmp(&key(&x.1), &key(&y.1))) + .map(|x| x.0) + } + + /// Return the position of the maximum element in the iterator, as + /// determined by the specified comparison function. + /// + /// If several elements are equally maximum, the position of the + /// last of them is returned. + /// + /// # Examples + /// + /// ``` + /// use itertools::Itertools; + /// + /// let a: [i32; 0] = []; + /// assert_eq!(a.iter().position_max_by(|x, y| x.cmp(y)), None); + /// + /// let a = [-3_i32, 0, 1, 5, -10]; + /// assert_eq!(a.iter().position_max_by(|x, y| x.cmp(y)), Some(3)); + /// + /// let a = [1_i32, 1, -1, -1]; + /// assert_eq!(a.iter().position_max_by(|x, y| x.cmp(y)), Some(1)); + /// ``` + fn position_max_by(self, mut compare: F) -> Option + where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering + { + self.enumerate() + .max_by(|x, y| compare(&x.1, &y.1)) + .map(|x| x.0) + } + + /// Return the position of the minimum element in the iterator. + /// + /// If several elements are equally minimum, the position of the + /// first of them is returned. + /// + /// # Examples + /// + /// ``` + /// use itertools::Itertools; + /// + /// let a: [i32; 0] = []; + /// assert_eq!(a.iter().position_min(), None); + /// + /// let a = [-3, 0, 1, 5, -10]; + /// assert_eq!(a.iter().position_min(), Some(4)); + /// + /// let a = [1, 1, -1, -1]; + /// assert_eq!(a.iter().position_min(), Some(2)); + /// ``` + fn position_min(self) -> Option + where Self: Sized, Self::Item: Ord + { + self.enumerate() + .min_by(|x, y| Ord::cmp(&x.1, &y.1)) + .map(|x| x.0) + } + + /// Return the position of the minimum element in the iterator, as + /// determined by the specified function. + /// + /// If several elements are equally minimum, the position of the + /// first of them is returned. + /// + /// # Examples + /// + /// ``` + /// use itertools::Itertools; + /// + /// let a: [i32; 0] = []; + /// assert_eq!(a.iter().position_min_by_key(|x| x.abs()), None); + /// + /// let a = [-3_i32, 0, 1, 5, -10]; + /// assert_eq!(a.iter().position_min_by_key(|x| x.abs()), Some(1)); + /// + /// let a = [1_i32, 1, -1, -1]; + /// assert_eq!(a.iter().position_min_by_key(|x| x.abs()), Some(0)); + /// ``` + fn position_min_by_key(self, mut key: F) -> Option + where Self: Sized, K: Ord, F: FnMut(&Self::Item) -> K + { + self.enumerate() + .min_by(|x, y| Ord::cmp(&key(&x.1), &key(&y.1))) + .map(|x| x.0) + } + + /// Return the position of the minimum element in the iterator, as + /// determined by the specified comparison function. + /// + /// If several elements are equally minimum, the position of the + /// first of them is returned. + /// + /// # Examples + /// + /// ``` + /// use itertools::Itertools; + /// + /// let a: [i32; 0] = []; + /// assert_eq!(a.iter().position_min_by(|x, y| x.cmp(y)), None); + /// + /// let a = [-3_i32, 0, 1, 5, -10]; + /// assert_eq!(a.iter().position_min_by(|x, y| x.cmp(y)), Some(4)); + /// + /// let a = [1_i32, 1, -1, -1]; + /// assert_eq!(a.iter().position_min_by(|x, y| x.cmp(y)), Some(2)); + /// ``` + fn position_min_by(self, mut compare: F) -> Option + where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering + { + self.enumerate() + .min_by(|x, y| compare(&x.1, &y.1)) + .map(|x| x.0) + } + + /// Return the positions of the minimum and maximum elements in + /// the iterator. + /// + /// The return type [`MinMaxResult`] is an enum of three variants: + /// + /// - `NoElements` if the iterator is empty. + /// - `OneElement(xpos)` if the iterator has exactly one element. + /// - `MinMax(xpos, ypos)` is returned otherwise, where the + /// element at `xpos` ≤ the element at `ypos`. While the + /// referenced elements themselves may be equal, `xpos` cannot + /// be equal to `ypos`. + /// + /// On an iterator of length `n`, `position_minmax` does `1.5 * n` + /// comparisons, and so is faster than calling `position_min` and + /// `position_max` separately which does `2 * n` comparisons. + /// + /// For the minimum, if several elements are equally minimum, the + /// position of the first of them is returned. For the maximum, if + /// several elements are equally maximum, the position of the last + /// of them is returned. + /// + /// The elements can be floats but no particular result is + /// guaranteed if an element is NaN. + /// + /// # Examples + /// + /// ``` + /// use itertools::Itertools; + /// use itertools::MinMaxResult::{NoElements, OneElement, MinMax}; + /// + /// let a: [i32; 0] = []; + /// assert_eq!(a.iter().position_minmax(), NoElements); + /// + /// let a = [10]; + /// assert_eq!(a.iter().position_minmax(), OneElement(0)); + /// + /// let a = [-3, 0, 1, 5, -10]; + /// assert_eq!(a.iter().position_minmax(), MinMax(4, 3)); + /// + /// let a = [1, 1, -1, -1]; + /// assert_eq!(a.iter().position_minmax(), MinMax(2, 1)); + /// ``` + fn position_minmax(self) -> MinMaxResult + where Self: Sized, Self::Item: PartialOrd + { + use crate::MinMaxResult::{NoElements, OneElement, MinMax}; + match minmax::minmax_impl(self.enumerate(), |_| (), |x, y, _, _| x.1 < y.1) { + NoElements => NoElements, + OneElement(x) => OneElement(x.0), + MinMax(x, y) => MinMax(x.0, y.0), + } + } + + /// Return the postions of the minimum and maximum elements of an + /// iterator, as determined by the specified function. + /// + /// The return value is a variant of [`MinMaxResult`] like for + /// [`position_minmax`]. + /// + /// For the minimum, if several elements are equally minimum, the + /// position of the first of them is returned. For the maximum, if + /// several elements are equally maximum, the position of the last + /// of them is returned. + /// + /// The keys can be floats but no particular result is guaranteed + /// if a key is NaN. + /// + /// # Examples + /// + /// ``` + /// use itertools::Itertools; + /// use itertools::MinMaxResult::{NoElements, OneElement, MinMax}; + /// + /// let a: [i32; 0] = []; + /// assert_eq!(a.iter().position_minmax_by_key(|x| x.abs()), NoElements); + /// + /// let a = [10_i32]; + /// assert_eq!(a.iter().position_minmax_by_key(|x| x.abs()), OneElement(0)); + /// + /// let a = [-3_i32, 0, 1, 5, -10]; + /// assert_eq!(a.iter().position_minmax_by_key(|x| x.abs()), MinMax(1, 4)); + /// + /// let a = [1_i32, 1, -1, -1]; + /// assert_eq!(a.iter().position_minmax_by_key(|x| x.abs()), MinMax(0, 3)); + /// ``` + /// + /// [`position_minmax`]: Self::position_minmax + fn position_minmax_by_key(self, mut key: F) -> MinMaxResult + where Self: Sized, K: PartialOrd, F: FnMut(&Self::Item) -> K + { + use crate::MinMaxResult::{NoElements, OneElement, MinMax}; + match self.enumerate().minmax_by_key(|e| key(&e.1)) { + NoElements => NoElements, + OneElement(x) => OneElement(x.0), + MinMax(x, y) => MinMax(x.0, y.0), + } + } + + /// Return the postions of the minimum and maximum elements of an + /// iterator, as determined by the specified comparison function. + /// + /// The return value is a variant of [`MinMaxResult`] like for + /// [`position_minmax`]. + /// + /// For the minimum, if several elements are equally minimum, the + /// position of the first of them is returned. For the maximum, if + /// several elements are equally maximum, the position of the last + /// of them is returned. + /// + /// # Examples + /// + /// ``` + /// use itertools::Itertools; + /// use itertools::MinMaxResult::{NoElements, OneElement, MinMax}; + /// + /// let a: [i32; 0] = []; + /// assert_eq!(a.iter().position_minmax_by(|x, y| x.cmp(y)), NoElements); + /// + /// let a = [10_i32]; + /// assert_eq!(a.iter().position_minmax_by(|x, y| x.cmp(y)), OneElement(0)); + /// + /// let a = [-3_i32, 0, 1, 5, -10]; + /// assert_eq!(a.iter().position_minmax_by(|x, y| x.cmp(y)), MinMax(4, 3)); + /// + /// let a = [1_i32, 1, -1, -1]; + /// assert_eq!(a.iter().position_minmax_by(|x, y| x.cmp(y)), MinMax(2, 1)); + /// ``` + /// + /// [`position_minmax`]: Self::position_minmax + fn position_minmax_by(self, mut compare: F) -> MinMaxResult + where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering + { + use crate::MinMaxResult::{NoElements, OneElement, MinMax}; + match self.enumerate().minmax_by(|x, y| compare(&x.1, &y.1)) { + NoElements => NoElements, + OneElement(x) => OneElement(x.0), + MinMax(x, y) => MinMax(x.0, y.0), + } + } + + /// If the iterator yields exactly one element, that element will be returned, otherwise + /// an error will be returned containing an iterator that has the same output as the input + /// iterator. + /// + /// This provides an additional layer of validation over just calling `Iterator::next()`. + /// If your assumption that there should only be one element yielded is false this provides + /// the opportunity to detect and handle that, preventing errors at a distance. + /// + /// # Examples + /// ``` + /// use itertools::Itertools; + /// + /// assert_eq!((0..10).filter(|&x| x == 2).exactly_one().unwrap(), 2); + /// assert!((0..10).filter(|&x| x > 1 && x < 4).exactly_one().unwrap_err().eq(2..4)); + /// assert!((0..10).filter(|&x| x > 1 && x < 5).exactly_one().unwrap_err().eq(2..5)); + /// assert!((0..10).filter(|&_| false).exactly_one().unwrap_err().eq(0..0)); + /// ``` + fn exactly_one(mut self) -> Result> + where + Self: Sized, + { + match self.next() { + Some(first) => { + match self.next() { + Some(second) => { + Err(ExactlyOneError::new(Some(Either::Left([first, second])), self)) + } + None => { + Ok(first) + } + } + } + None => Err(ExactlyOneError::new(None, self)), + } + } + + /// If the iterator yields no elements, Ok(None) will be returned. If the iterator yields + /// exactly one element, that element will be returned, otherwise an error will be returned + /// containing an iterator that has the same output as the input iterator. + /// + /// This provides an additional layer of validation over just calling `Iterator::next()`. + /// If your assumption that there should be at most one element yielded is false this provides + /// the opportunity to detect and handle that, preventing errors at a distance. + /// + /// # Examples + /// ``` + /// use itertools::Itertools; + /// + /// assert_eq!((0..10).filter(|&x| x == 2).at_most_one().unwrap(), Some(2)); + /// assert!((0..10).filter(|&x| x > 1 && x < 4).at_most_one().unwrap_err().eq(2..4)); + /// assert!((0..10).filter(|&x| x > 1 && x < 5).at_most_one().unwrap_err().eq(2..5)); + /// assert_eq!((0..10).filter(|&_| false).at_most_one().unwrap(), None); + /// ``` + fn at_most_one(mut self) -> Result, ExactlyOneError> + where + Self: Sized, + { + match self.next() { + Some(first) => { + match self.next() { + Some(second) => { + Err(ExactlyOneError::new(Some(Either::Left([first, second])), self)) + } + None => { + Ok(Some(first)) + } + } + } + None => Ok(None), + } + } + + /// An iterator adaptor that allows the user to peek at multiple `.next()` + /// values without advancing the base iterator. + /// + /// # Examples + /// ``` + /// use itertools::Itertools; + /// + /// let mut iter = (0..10).multipeek(); + /// assert_eq!(iter.peek(), Some(&0)); + /// assert_eq!(iter.peek(), Some(&1)); + /// assert_eq!(iter.peek(), Some(&2)); + /// assert_eq!(iter.next(), Some(0)); + /// assert_eq!(iter.peek(), Some(&1)); + /// ``` + #[cfg(feature = "use_alloc")] + fn multipeek(self) -> MultiPeek + where + Self: Sized, + { + multipeek_impl::multipeek(self) + } + + /// Collect the items in this iterator and return a `HashMap` which + /// contains each item that appears in the iterator and the number + /// of times it appears. + /// + /// # Examples + /// ``` + /// # use itertools::Itertools; + /// let counts = [1, 1, 1, 3, 3, 5].into_iter().counts(); + /// assert_eq!(counts[&1], 3); + /// assert_eq!(counts[&3], 2); + /// assert_eq!(counts[&5], 1); + /// assert_eq!(counts.get(&0), None); + /// ``` + #[cfg(feature = "use_std")] + fn counts(self) -> HashMap + where + Self: Sized, + Self::Item: Eq + Hash, + { + let mut counts = HashMap::new(); + self.for_each(|item| *counts.entry(item).or_default() += 1); + counts + } + + /// Collect the items in this iterator and return a `HashMap` which + /// contains each item that appears in the iterator and the number + /// of times it appears, + /// determining identity using a keying function. + /// + /// ``` + /// # use itertools::Itertools; + /// struct Character { + /// first_name: &'static str, + /// last_name: &'static str, + /// } + /// + /// let characters = + /// vec![ + /// Character { first_name: "Amy", last_name: "Pond" }, + /// Character { first_name: "Amy", last_name: "Wong" }, + /// Character { first_name: "Amy", last_name: "Santiago" }, + /// Character { first_name: "James", last_name: "Bond" }, + /// Character { first_name: "James", last_name: "Sullivan" }, + /// Character { first_name: "James", last_name: "Norington" }, + /// Character { first_name: "James", last_name: "Kirk" }, + /// ]; + /// + /// let first_name_frequency = + /// characters + /// .into_iter() + /// .counts_by(|c| c.first_name); + /// + /// assert_eq!(first_name_frequency["Amy"], 3); + /// assert_eq!(first_name_frequency["James"], 4); + /// assert_eq!(first_name_frequency.contains_key("Asha"), false); + /// ``` + #[cfg(feature = "use_std")] + fn counts_by(self, f: F) -> HashMap + where + Self: Sized, + K: Eq + Hash, + F: FnMut(Self::Item) -> K, + { + self.map(f).counts() + } + + /// Converts an iterator of tuples into a tuple of containers. + /// + /// `unzip()` consumes an entire iterator of n-ary tuples, producing `n` collections, one for each + /// column. + /// + /// This function is, in some sense, the opposite of [`multizip`]. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let inputs = vec![(1, 2, 3), (4, 5, 6), (7, 8, 9)]; + /// + /// let (a, b, c): (Vec<_>, Vec<_>, Vec<_>) = inputs + /// .into_iter() + /// .multiunzip(); + /// + /// assert_eq!(a, vec![1, 4, 7]); + /// assert_eq!(b, vec![2, 5, 8]); + /// assert_eq!(c, vec![3, 6, 9]); + /// ``` + fn multiunzip(self) -> FromI + where + Self: Sized + MultiUnzip, + { + MultiUnzip::multiunzip(self) + } +} + +impl Itertools for T where T: Iterator { } + +/// Return `true` if both iterables produce equal sequences +/// (elements pairwise equal and sequences of the same length), +/// `false` otherwise. +/// +/// [`IntoIterator`] enabled version of [`Iterator::eq`]. +/// +/// ``` +/// assert!(itertools::equal(vec![1, 2, 3], 1..4)); +/// assert!(!itertools::equal(&[0, 0], &[0, 0, 0])); +/// ``` +pub fn equal(a: I, b: J) -> bool + where I: IntoIterator, + J: IntoIterator, + I::Item: PartialEq +{ + a.into_iter().eq(b) +} + +/// Assert that two iterables produce equal sequences, with the same +/// semantics as [`equal(a, b)`](equal). +/// +/// **Panics** on assertion failure with a message that shows the +/// two iteration elements. +/// +/// ```ignore +/// assert_equal("exceed".split('c'), "excess".split('c')); +/// // ^PANIC: panicked at 'Failed assertion Some("eed") == Some("ess") for iteration 1', +/// ``` +pub fn assert_equal(a: I, b: J) + where I: IntoIterator, + J: IntoIterator, + I::Item: fmt::Debug + PartialEq, + J::Item: fmt::Debug, +{ + let mut ia = a.into_iter(); + let mut ib = b.into_iter(); + let mut i = 0; + loop { + match (ia.next(), ib.next()) { + (None, None) => return, + (a, b) => { + let equal = match (&a, &b) { + (&Some(ref a), &Some(ref b)) => a == b, + _ => false, + }; + assert!(equal, "Failed assertion {a:?} == {b:?} for iteration {i}", + i=i, a=a, b=b); + i += 1; + } + } + } +} + +/// Partition a sequence using predicate `pred` so that elements +/// that map to `true` are placed before elements which map to `false`. +/// +/// The order within the partitions is arbitrary. +/// +/// Return the index of the split point. +/// +/// ``` +/// use itertools::partition; +/// +/// # // use repeated numbers to not promise any ordering +/// let mut data = [7, 1, 1, 7, 1, 1, 7]; +/// let split_index = partition(&mut data, |elt| *elt >= 3); +/// +/// assert_eq!(data, [7, 7, 7, 1, 1, 1, 1]); +/// assert_eq!(split_index, 3); +/// ``` +pub fn partition<'a, A: 'a, I, F>(iter: I, mut pred: F) -> usize + where I: IntoIterator, + I::IntoIter: DoubleEndedIterator, + F: FnMut(&A) -> bool +{ + let mut split_index = 0; + let mut iter = iter.into_iter(); + 'main: while let Some(front) = iter.next() { + if !pred(front) { + loop { + match iter.next_back() { + Some(back) => if pred(back) { + std::mem::swap(front, back); + break; + }, + None => break 'main, + } + } + } + split_index += 1; + } + split_index +} + +/// An enum used for controlling the execution of `fold_while`. +/// +/// See [`.fold_while()`](Itertools::fold_while) for more information. +#[derive(Copy, Clone, Debug, Eq, PartialEq)] +pub enum FoldWhile { + /// Continue folding with this value + Continue(T), + /// Fold is complete and will return this value + Done(T), +} + +impl FoldWhile { + /// Return the value in the continue or done. + pub fn into_inner(self) -> T { + match self { + FoldWhile::Continue(x) | FoldWhile::Done(x) => x, + } + } + + /// Return true if `self` is `Done`, false if it is `Continue`. + pub fn is_done(&self) -> bool { + match *self { + FoldWhile::Continue(_) => false, + FoldWhile::Done(_) => true, + } + } +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/merge_join.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/merge_join.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/merge_join.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/merge_join.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,169 @@ +use std::cmp::Ordering; +use std::iter::Fuse; +use std::fmt; + +use super::adaptors::{PutBack, put_back}; +use crate::either_or_both::EitherOrBoth; +#[cfg(doc)] +use crate::Itertools; + +/// Return an iterator adaptor that merge-joins items from the two base iterators in ascending order. +/// +/// [`IntoIterator`] enabled version of [`Itertools::merge_join_by`]. +pub fn merge_join_by(left: I, right: J, cmp_fn: F) + -> MergeJoinBy + where I: IntoIterator, + J: IntoIterator, + F: FnMut(&I::Item, &J::Item) -> Ordering +{ + MergeJoinBy { + left: put_back(left.into_iter().fuse()), + right: put_back(right.into_iter().fuse()), + cmp_fn, + } +} + +/// An iterator adaptor that merge-joins items from the two base iterators in ascending order. +/// +/// See [`.merge_join_by()`](crate::Itertools::merge_join_by) for more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct MergeJoinBy { + left: PutBack>, + right: PutBack>, + cmp_fn: F +} + +impl Clone for MergeJoinBy + where I: Iterator, + J: Iterator, + PutBack>: Clone, + PutBack>: Clone, + F: Clone, +{ + clone_fields!(left, right, cmp_fn); +} + +impl fmt::Debug for MergeJoinBy + where I: Iterator + fmt::Debug, + I::Item: fmt::Debug, + J: Iterator + fmt::Debug, + J::Item: fmt::Debug, +{ + debug_fmt_fields!(MergeJoinBy, left, right); +} + +impl Iterator for MergeJoinBy + where I: Iterator, + J: Iterator, + F: FnMut(&I::Item, &J::Item) -> Ordering +{ + type Item = EitherOrBoth; + + fn next(&mut self) -> Option { + match (self.left.next(), self.right.next()) { + (None, None) => None, + (Some(left), None) => + Some(EitherOrBoth::Left(left)), + (None, Some(right)) => + Some(EitherOrBoth::Right(right)), + (Some(left), Some(right)) => { + match (self.cmp_fn)(&left, &right) { + Ordering::Equal => + Some(EitherOrBoth::Both(left, right)), + Ordering::Less => { + self.right.put_back(right); + Some(EitherOrBoth::Left(left)) + }, + Ordering::Greater => { + self.left.put_back(left); + Some(EitherOrBoth::Right(right)) + } + } + } + } + } + + fn size_hint(&self) -> (usize, Option) { + let (a_lower, a_upper) = self.left.size_hint(); + let (b_lower, b_upper) = self.right.size_hint(); + + let lower = ::std::cmp::max(a_lower, b_lower); + + let upper = match (a_upper, b_upper) { + (Some(x), Some(y)) => x.checked_add(y), + _ => None, + }; + + (lower, upper) + } + + fn count(mut self) -> usize { + let mut count = 0; + loop { + match (self.left.next(), self.right.next()) { + (None, None) => break count, + (Some(_left), None) => break count + 1 + self.left.into_parts().1.count(), + (None, Some(_right)) => break count + 1 + self.right.into_parts().1.count(), + (Some(left), Some(right)) => { + count += 1; + match (self.cmp_fn)(&left, &right) { + Ordering::Equal => {} + Ordering::Less => self.right.put_back(right), + Ordering::Greater => self.left.put_back(left), + } + } + } + } + } + + fn last(mut self) -> Option { + let mut previous_element = None; + loop { + match (self.left.next(), self.right.next()) { + (None, None) => break previous_element, + (Some(left), None) => { + break Some(EitherOrBoth::Left( + self.left.into_parts().1.last().unwrap_or(left), + )) + } + (None, Some(right)) => { + break Some(EitherOrBoth::Right( + self.right.into_parts().1.last().unwrap_or(right), + )) + } + (Some(left), Some(right)) => { + previous_element = match (self.cmp_fn)(&left, &right) { + Ordering::Equal => Some(EitherOrBoth::Both(left, right)), + Ordering::Less => { + self.right.put_back(right); + Some(EitherOrBoth::Left(left)) + } + Ordering::Greater => { + self.left.put_back(left); + Some(EitherOrBoth::Right(right)) + } + } + } + } + } + } + + fn nth(&mut self, mut n: usize) -> Option { + loop { + if n == 0 { + break self.next(); + } + n -= 1; + match (self.left.next(), self.right.next()) { + (None, None) => break None, + (Some(_left), None) => break self.left.nth(n).map(EitherOrBoth::Left), + (None, Some(_right)) => break self.right.nth(n).map(EitherOrBoth::Right), + (Some(left), Some(right)) => match (self.cmp_fn)(&left, &right) { + Ordering::Equal => {} + Ordering::Less => self.right.put_back(right), + Ordering::Greater => self.left.put_back(left), + }, + } + } + } +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/minmax.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/minmax.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/minmax.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/minmax.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,115 @@ + +/// `MinMaxResult` is an enum returned by `minmax`. +/// +/// See [`.minmax()`](crate::Itertools::minmax) for more detail. +#[derive(Copy, Clone, PartialEq, Debug)] +pub enum MinMaxResult { + /// Empty iterator + NoElements, + + /// Iterator with one element, so the minimum and maximum are the same + OneElement(T), + + /// More than one element in the iterator, the first element is not larger + /// than the second + MinMax(T, T) +} + +impl MinMaxResult { + /// `into_option` creates an `Option` of type `(T, T)`. The returned `Option` + /// has variant `None` if and only if the `MinMaxResult` has variant + /// `NoElements`. Otherwise `Some((x, y))` is returned where `x <= y`. + /// If the `MinMaxResult` has variant `OneElement(x)`, performing this + /// operation will make one clone of `x`. + /// + /// # Examples + /// + /// ``` + /// use itertools::MinMaxResult::{self, NoElements, OneElement, MinMax}; + /// + /// let r: MinMaxResult = NoElements; + /// assert_eq!(r.into_option(), None); + /// + /// let r = OneElement(1); + /// assert_eq!(r.into_option(), Some((1, 1))); + /// + /// let r = MinMax(1, 2); + /// assert_eq!(r.into_option(), Some((1, 2))); + /// ``` + pub fn into_option(self) -> Option<(T,T)> { + match self { + MinMaxResult::NoElements => None, + MinMaxResult::OneElement(x) => Some((x.clone(), x)), + MinMaxResult::MinMax(x, y) => Some((x, y)) + } + } +} + +/// Implementation guts for `minmax` and `minmax_by_key`. +pub fn minmax_impl(mut it: I, mut key_for: F, + mut lt: L) -> MinMaxResult + where I: Iterator, + F: FnMut(&I::Item) -> K, + L: FnMut(&I::Item, &I::Item, &K, &K) -> bool, +{ + let (mut min, mut max, mut min_key, mut max_key) = match it.next() { + None => return MinMaxResult::NoElements, + Some(x) => { + match it.next() { + None => return MinMaxResult::OneElement(x), + Some(y) => { + let xk = key_for(&x); + let yk = key_for(&y); + if !lt(&y, &x, &yk, &xk) {(x, y, xk, yk)} else {(y, x, yk, xk)} + } + } + } + }; + + loop { + // `first` and `second` are the two next elements we want to look + // at. We first compare `first` and `second` (#1). The smaller one + // is then compared to current minimum (#2). The larger one is + // compared to current maximum (#3). This way we do 3 comparisons + // for 2 elements. + let first = match it.next() { + None => break, + Some(x) => x + }; + let second = match it.next() { + None => { + let first_key = key_for(&first); + if lt(&first, &min, &first_key, &min_key) { + min = first; + } else if !lt(&first, &max, &first_key, &max_key) { + max = first; + } + break; + } + Some(x) => x + }; + let first_key = key_for(&first); + let second_key = key_for(&second); + if !lt(&second, &first, &second_key, &first_key) { + if lt(&first, &min, &first_key, &min_key) { + min = first; + min_key = first_key; + } + if !lt(&second, &max, &second_key, &max_key) { + max = second; + max_key = second_key; + } + } else { + if lt(&second, &min, &second_key, &min_key) { + min = second; + min_key = second_key; + } + if !lt(&first, &max, &first_key, &max_key) { + max = first; + max_key = first_key; + } + } + } + + MinMaxResult::MinMax(min, max) +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/multipeek_impl.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/multipeek_impl.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/multipeek_impl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/multipeek_impl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,101 @@ +use std::iter::Fuse; +use alloc::collections::VecDeque; +use crate::size_hint; +use crate::PeekingNext; +#[cfg(doc)] +use crate::Itertools; + +/// See [`multipeek()`] for more information. +#[derive(Clone, Debug)] +pub struct MultiPeek + where I: Iterator +{ + iter: Fuse, + buf: VecDeque, + index: usize, +} + +/// An iterator adaptor that allows the user to peek at multiple `.next()` +/// values without advancing the base iterator. +/// +/// [`IntoIterator`] enabled version of [`Itertools::multipeek`]. +pub fn multipeek(iterable: I) -> MultiPeek + where I: IntoIterator +{ + MultiPeek { + iter: iterable.into_iter().fuse(), + buf: VecDeque::new(), + index: 0, + } +} + +impl MultiPeek + where I: Iterator +{ + /// Reset the peeking “cursor†+ pub fn reset_peek(&mut self) { + self.index = 0; + } +} + +impl MultiPeek { + /// Works exactly like `.next()` with the only difference that it doesn't + /// advance itself. `.peek()` can be called multiple times, to peek + /// further ahead. + /// When `.next()` is called, reset the peeking “cursorâ€. + pub fn peek(&mut self) -> Option<&I::Item> { + let ret = if self.index < self.buf.len() { + Some(&self.buf[self.index]) + } else { + match self.iter.next() { + Some(x) => { + self.buf.push_back(x); + Some(&self.buf[self.index]) + } + None => return None, + } + }; + + self.index += 1; + ret + } +} + +impl PeekingNext for MultiPeek + where I: Iterator, +{ + fn peeking_next(&mut self, accept: F) -> Option + where F: FnOnce(&Self::Item) -> bool + { + if self.buf.is_empty() { + if let Some(r) = self.peek() { + if !accept(r) { return None } + } + } else if let Some(r) = self.buf.get(0) { + if !accept(r) { return None } + } + self.next() + } +} + +impl Iterator for MultiPeek + where I: Iterator +{ + type Item = I::Item; + + fn next(&mut self) -> Option { + self.index = 0; + self.buf.pop_front().or_else(|| self.iter.next()) + } + + fn size_hint(&self) -> (usize, Option) { + size_hint::add_scalar(self.iter.size_hint(), self.buf.len()) + } +} + +// Same size +impl ExactSizeIterator for MultiPeek + where I: ExactSizeIterator +{} + + diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/pad_tail.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/pad_tail.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/pad_tail.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/pad_tail.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,96 @@ +use std::iter::{Fuse, FusedIterator}; +use crate::size_hint; + +/// An iterator adaptor that pads a sequence to a minimum length by filling +/// missing elements using a closure. +/// +/// Iterator element type is `I::Item`. +/// +/// See [`.pad_using()`](crate::Itertools::pad_using) for more information. +#[derive(Clone)] +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct PadUsing { + iter: Fuse, + min: usize, + pos: usize, + filler: F, +} + +impl std::fmt::Debug for PadUsing +where + I: std::fmt::Debug, +{ + debug_fmt_fields!(PadUsing, iter, min, pos); +} + +/// Create a new `PadUsing` iterator. +pub fn pad_using(iter: I, min: usize, filler: F) -> PadUsing + where I: Iterator, + F: FnMut(usize) -> I::Item +{ + PadUsing { + iter: iter.fuse(), + min, + pos: 0, + filler, + } +} + +impl Iterator for PadUsing + where I: Iterator, + F: FnMut(usize) -> I::Item +{ + type Item = I::Item; + + #[inline] + fn next(&mut self) -> Option { + match self.iter.next() { + None => { + if self.pos < self.min { + let e = Some((self.filler)(self.pos)); + self.pos += 1; + e + } else { + None + } + }, + e => { + self.pos += 1; + e + } + } + } + + fn size_hint(&self) -> (usize, Option) { + let tail = self.min.saturating_sub(self.pos); + size_hint::max(self.iter.size_hint(), (tail, Some(tail))) + } +} + +impl DoubleEndedIterator for PadUsing + where I: DoubleEndedIterator + ExactSizeIterator, + F: FnMut(usize) -> I::Item +{ + fn next_back(&mut self) -> Option { + if self.min == 0 { + self.iter.next_back() + } else if self.iter.len() >= self.min { + self.min -= 1; + self.iter.next_back() + } else { + self.min -= 1; + Some((self.filler)(self.min)) + } + } +} + +impl ExactSizeIterator for PadUsing + where I: ExactSizeIterator, + F: FnMut(usize) -> I::Item +{} + + +impl FusedIterator for PadUsing + where I: FusedIterator, + F: FnMut(usize) -> I::Item +{} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/peeking_take_while.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/peeking_take_while.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/peeking_take_while.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/peeking_take_while.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,154 @@ +use std::iter::Peekable; +use crate::PutBack; +#[cfg(feature = "use_alloc")] +use crate::PutBackN; + +/// An iterator that allows peeking at an element before deciding to accept it. +/// +/// See [`.peeking_take_while()`](crate::Itertools::peeking_take_while) +/// for more information. +/// +/// This is implemented by peeking adaptors like peekable and put back, +/// but also by a few iterators that can be peeked natively, like the slice’s +/// by reference iterator (`std::slice::Iter`). +pub trait PeekingNext : Iterator { + /// Pass a reference to the next iterator element to the closure `accept`; + /// if `accept` returns true, return it as the next element, + /// else None. + fn peeking_next(&mut self, accept: F) -> Option + where F: FnOnce(&Self::Item) -> bool; +} + +impl PeekingNext for Peekable + where I: Iterator, +{ + fn peeking_next(&mut self, accept: F) -> Option + where F: FnOnce(&Self::Item) -> bool + { + if let Some(r) = self.peek() { + if !accept(r) { + return None; + } + } + self.next() + } +} + +impl PeekingNext for PutBack + where I: Iterator, +{ + fn peeking_next(&mut self, accept: F) -> Option + where F: FnOnce(&Self::Item) -> bool + { + if let Some(r) = self.next() { + if !accept(&r) { + self.put_back(r); + return None; + } + Some(r) + } else { + None + } + } +} + +#[cfg(feature = "use_alloc")] +impl PeekingNext for PutBackN + where I: Iterator, +{ + fn peeking_next(&mut self, accept: F) -> Option + where F: FnOnce(&Self::Item) -> bool + { + if let Some(r) = self.next() { + if !accept(&r) { + self.put_back(r); + return None; + } + Some(r) + } else { + None + } + } +} + +/// An iterator adaptor that takes items while a closure returns `true`. +/// +/// See [`.peeking_take_while()`](crate::Itertools::peeking_take_while) +/// for more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct PeekingTakeWhile<'a, I: 'a, F> + where I: Iterator, +{ + iter: &'a mut I, + f: F, +} + +impl<'a, I: 'a, F> std::fmt::Debug for PeekingTakeWhile<'a, I, F> +where + I: Iterator + std::fmt::Debug, +{ + debug_fmt_fields!(PeekingTakeWhile, iter); +} + +/// Create a `PeekingTakeWhile` +pub fn peeking_take_while(iter: &mut I, f: F) -> PeekingTakeWhile + where I: Iterator, +{ + PeekingTakeWhile { + iter, + f, + } +} + +impl<'a, I, F> Iterator for PeekingTakeWhile<'a, I, F> + where I: PeekingNext, + F: FnMut(&I::Item) -> bool, + +{ + type Item = I::Item; + fn next(&mut self) -> Option { + self.iter.peeking_next(&mut self.f) + } + + fn size_hint(&self) -> (usize, Option) { + (0, self.iter.size_hint().1) + } +} + +// Some iterators are so lightweight we can simply clone them to save their +// state and use that for peeking. +macro_rules! peeking_next_by_clone { + ([$($typarm:tt)*] $type_:ty) => { + impl<$($typarm)*> PeekingNext for $type_ { + fn peeking_next(&mut self, accept: F) -> Option + where F: FnOnce(&Self::Item) -> bool + { + let saved_state = self.clone(); + if let Some(r) = self.next() { + if !accept(&r) { + *self = saved_state; + } else { + return Some(r) + } + } + None + } + } + } +} + +peeking_next_by_clone! { ['a, T] ::std::slice::Iter<'a, T> } +peeking_next_by_clone! { ['a] ::std::str::Chars<'a> } +peeking_next_by_clone! { ['a] ::std::str::CharIndices<'a> } +peeking_next_by_clone! { ['a] ::std::str::Bytes<'a> } +peeking_next_by_clone! { ['a, T] ::std::option::Iter<'a, T> } +peeking_next_by_clone! { ['a, T] ::std::result::Iter<'a, T> } +peeking_next_by_clone! { [T] ::std::iter::Empty } +#[cfg(feature = "use_alloc")] +peeking_next_by_clone! { ['a, T] alloc::collections::linked_list::Iter<'a, T> } +#[cfg(feature = "use_alloc")] +peeking_next_by_clone! { ['a, T] alloc::collections::vec_deque::Iter<'a, T> } + +// cloning a Rev has no extra overhead; peekable and put backs are never DEI. +peeking_next_by_clone! { [I: Clone + PeekingNext + DoubleEndedIterator] + ::std::iter::Rev } diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/peek_nth.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/peek_nth.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/peek_nth.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/peek_nth.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,102 @@ +use crate::size_hint; +use crate::PeekingNext; +use alloc::collections::VecDeque; +use std::iter::Fuse; + +/// See [`peek_nth()`] for more information. +#[derive(Clone, Debug)] +pub struct PeekNth +where + I: Iterator, +{ + iter: Fuse, + buf: VecDeque, +} + +/// A drop-in replacement for [`std::iter::Peekable`] which adds a `peek_nth` +/// method allowing the user to `peek` at a value several iterations forward +/// without advancing the base iterator. +/// +/// This differs from `multipeek` in that subsequent calls to `peek` or +/// `peek_nth` will always return the same value until `next` is called +/// (making `reset_peek` unnecessary). +pub fn peek_nth(iterable: I) -> PeekNth +where + I: IntoIterator, +{ + PeekNth { + iter: iterable.into_iter().fuse(), + buf: VecDeque::new(), + } +} + +impl PeekNth +where + I: Iterator, +{ + /// Works exactly like the `peek` method in `std::iter::Peekable` + pub fn peek(&mut self) -> Option<&I::Item> { + self.peek_nth(0) + } + + /// Returns a reference to the `nth` value without advancing the iterator. + /// + /// # Examples + /// + /// Basic usage: + /// + /// ```rust + /// use itertools::peek_nth; + /// + /// let xs = vec![1,2,3]; + /// let mut iter = peek_nth(xs.iter()); + /// + /// assert_eq!(iter.peek_nth(0), Some(&&1)); + /// assert_eq!(iter.next(), Some(&1)); + /// + /// // The iterator does not advance even if we call `peek_nth` multiple times + /// assert_eq!(iter.peek_nth(0), Some(&&2)); + /// assert_eq!(iter.peek_nth(1), Some(&&3)); + /// assert_eq!(iter.next(), Some(&2)); + /// + /// // Calling `peek_nth` past the end of the iterator will return `None` + /// assert_eq!(iter.peek_nth(1), None); + /// ``` + pub fn peek_nth(&mut self, n: usize) -> Option<&I::Item> { + let unbuffered_items = (n + 1).saturating_sub(self.buf.len()); + + self.buf.extend(self.iter.by_ref().take(unbuffered_items)); + + self.buf.get(n) + } +} + +impl Iterator for PeekNth +where + I: Iterator, +{ + type Item = I::Item; + + fn next(&mut self) -> Option { + self.buf.pop_front().or_else(|| self.iter.next()) + } + + fn size_hint(&self) -> (usize, Option) { + size_hint::add_scalar(self.iter.size_hint(), self.buf.len()) + } +} + +impl ExactSizeIterator for PeekNth where I: ExactSizeIterator {} + +impl PeekingNext for PeekNth +where + I: Iterator, +{ + fn peeking_next(&mut self, accept: F) -> Option + where + F: FnOnce(&Self::Item) -> bool, + { + self.peek().filter(|item| accept(item))?; + self.next() + } +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/permutations.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/permutations.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/permutations.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/permutations.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,277 @@ +use alloc::vec::Vec; +use std::fmt; +use std::iter::once; + +use super::lazy_buffer::LazyBuffer; + +/// An iterator adaptor that iterates through all the `k`-permutations of the +/// elements from an iterator. +/// +/// See [`.permutations()`](crate::Itertools::permutations) for +/// more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct Permutations { + vals: LazyBuffer, + state: PermutationState, +} + +impl Clone for Permutations + where I: Clone + Iterator, + I::Item: Clone, +{ + clone_fields!(vals, state); +} + +#[derive(Clone, Debug)] +enum PermutationState { + StartUnknownLen { + k: usize, + }, + OngoingUnknownLen { + k: usize, + min_n: usize, + }, + Complete(CompleteState), + Empty, +} + +#[derive(Clone, Debug)] +enum CompleteState { + Start { + n: usize, + k: usize, + }, + Ongoing { + indices: Vec, + cycles: Vec, + } +} + +enum CompleteStateRemaining { + Known(usize), + Overflow, +} + +impl fmt::Debug for Permutations + where I: Iterator + fmt::Debug, + I::Item: fmt::Debug, +{ + debug_fmt_fields!(Permutations, vals, state); +} + +pub fn permutations(iter: I, k: usize) -> Permutations { + let mut vals = LazyBuffer::new(iter); + + if k == 0 { + // Special case, yields single empty vec; `n` is irrelevant + let state = PermutationState::Complete(CompleteState::Start { n: 0, k: 0 }); + + return Permutations { + vals, + state + }; + } + + let mut enough_vals = true; + + while vals.len() < k { + if !vals.get_next() { + enough_vals = false; + break; + } + } + + let state = if enough_vals { + PermutationState::StartUnknownLen { k } + } else { + PermutationState::Empty + }; + + Permutations { + vals, + state + } +} + +impl Iterator for Permutations +where + I: Iterator, + I::Item: Clone +{ + type Item = Vec; + + fn next(&mut self) -> Option { + self.advance(); + + let &mut Permutations { ref vals, ref state } = self; + + match *state { + PermutationState::StartUnknownLen { .. } => panic!("unexpected iterator state"), + PermutationState::OngoingUnknownLen { k, min_n } => { + let latest_idx = min_n - 1; + let indices = (0..(k - 1)).chain(once(latest_idx)); + + Some(indices.map(|i| vals[i].clone()).collect()) + } + PermutationState::Complete(CompleteState::Ongoing { ref indices, ref cycles }) => { + let k = cycles.len(); + Some(indices[0..k].iter().map(|&i| vals[i].clone()).collect()) + }, + PermutationState::Complete(CompleteState::Start { .. }) | PermutationState::Empty => None + } + } + + fn count(self) -> usize { + fn from_complete(complete_state: CompleteState) -> usize { + match complete_state.remaining() { + CompleteStateRemaining::Known(count) => count, + CompleteStateRemaining::Overflow => { + panic!("Iterator count greater than usize::MAX"); + } + } + } + + let Permutations { vals, state } = self; + match state { + PermutationState::StartUnknownLen { k } => { + let n = vals.len() + vals.it.count(); + let complete_state = CompleteState::Start { n, k }; + + from_complete(complete_state) + } + PermutationState::OngoingUnknownLen { k, min_n } => { + let prev_iteration_count = min_n - k + 1; + let n = vals.len() + vals.it.count(); + let complete_state = CompleteState::Start { n, k }; + + from_complete(complete_state) - prev_iteration_count + }, + PermutationState::Complete(state) => from_complete(state), + PermutationState::Empty => 0 + } + } + + fn size_hint(&self) -> (usize, Option) { + match self.state { + PermutationState::StartUnknownLen { .. } | + PermutationState::OngoingUnknownLen { .. } => (0, None), // TODO can we improve this lower bound? + PermutationState::Complete(ref state) => match state.remaining() { + CompleteStateRemaining::Known(count) => (count, Some(count)), + CompleteStateRemaining::Overflow => (::std::usize::MAX, None) + } + PermutationState::Empty => (0, Some(0)) + } + } +} + +impl Permutations +where + I: Iterator, + I::Item: Clone +{ + fn advance(&mut self) { + let &mut Permutations { ref mut vals, ref mut state } = self; + + *state = match *state { + PermutationState::StartUnknownLen { k } => { + PermutationState::OngoingUnknownLen { k, min_n: k } + } + PermutationState::OngoingUnknownLen { k, min_n } => { + if vals.get_next() { + PermutationState::OngoingUnknownLen { k, min_n: min_n + 1 } + } else { + let n = min_n; + let prev_iteration_count = n - k + 1; + let mut complete_state = CompleteState::Start { n, k }; + + // Advance the complete-state iterator to the correct point + for _ in 0..(prev_iteration_count + 1) { + complete_state.advance(); + } + + PermutationState::Complete(complete_state) + } + } + PermutationState::Complete(ref mut state) => { + state.advance(); + + return; + } + PermutationState::Empty => { return; } + }; + } +} + +impl CompleteState { + fn advance(&mut self) { + *self = match *self { + CompleteState::Start { n, k } => { + let indices = (0..n).collect(); + let cycles = ((n - k)..n).rev().collect(); + + CompleteState::Ongoing { + cycles, + indices + } + }, + CompleteState::Ongoing { ref mut indices, ref mut cycles } => { + let n = indices.len(); + let k = cycles.len(); + + for i in (0..k).rev() { + if cycles[i] == 0 { + cycles[i] = n - i - 1; + + let to_push = indices.remove(i); + indices.push(to_push); + } else { + let swap_index = n - cycles[i]; + indices.swap(i, swap_index); + + cycles[i] -= 1; + return; + } + } + + CompleteState::Start { n, k } + } + } + } + + fn remaining(&self) -> CompleteStateRemaining { + use self::CompleteStateRemaining::{Known, Overflow}; + + match *self { + CompleteState::Start { n, k } => { + if n < k { + return Known(0); + } + + let count: Option = (n - k + 1..n + 1).fold(Some(1), |acc, i| { + acc.and_then(|acc| acc.checked_mul(i)) + }); + + match count { + Some(count) => Known(count), + None => Overflow + } + } + CompleteState::Ongoing { ref indices, ref cycles } => { + let mut count: usize = 0; + + for (i, &c) in cycles.iter().enumerate() { + let radix = indices.len() - i; + let next_count = count.checked_mul(radix) + .and_then(|count| count.checked_add(c)); + + count = match next_count { + Some(count) => count, + None => { return Overflow; } + }; + } + + Known(count) + } + } + } +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/powerset.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/powerset.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/powerset.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/powerset.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,90 @@ +use std::fmt; +use std::iter::FusedIterator; +use std::usize; +use alloc::vec::Vec; + +use super::combinations::{Combinations, combinations}; +use super::size_hint; + +/// An iterator to iterate through the powerset of the elements from an iterator. +/// +/// See [`.powerset()`](crate::Itertools::powerset) for more +/// information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct Powerset { + combs: Combinations, + // Iterator `position` (equal to count of yielded elements). + pos: usize, +} + +impl Clone for Powerset + where I: Clone + Iterator, + I::Item: Clone, +{ + clone_fields!(combs, pos); +} + +impl fmt::Debug for Powerset + where I: Iterator + fmt::Debug, + I::Item: fmt::Debug, +{ + debug_fmt_fields!(Powerset, combs, pos); +} + +/// Create a new `Powerset` from a clonable iterator. +pub fn powerset(src: I) -> Powerset + where I: Iterator, + I::Item: Clone, +{ + Powerset { + combs: combinations(src, 0), + pos: 0, + } +} + +impl Iterator for Powerset + where + I: Iterator, + I::Item: Clone, +{ + type Item = Vec; + + fn next(&mut self) -> Option { + if let Some(elt) = self.combs.next() { + self.pos = self.pos.saturating_add(1); + Some(elt) + } else if self.combs.k() < self.combs.n() + || self.combs.k() == 0 + { + self.combs.reset(self.combs.k() + 1); + self.combs.next().map(|elt| { + self.pos = self.pos.saturating_add(1); + elt + }) + } else { + None + } + } + + fn size_hint(&self) -> (usize, Option) { + // Total bounds for source iterator. + let src_total = size_hint::add_scalar(self.combs.src().size_hint(), self.combs.n()); + + // Total bounds for self ( length(powerset(set) == 2 ^ length(set) ) + let self_total = size_hint::pow_scalar_base(2, src_total); + + if self.pos < usize::MAX { + // Subtract count of elements already yielded from total. + size_hint::sub_scalar(self_total, self.pos) + } else { + // Fallback: self.pos is saturated and no longer reliable. + (0, self_total.1) + } + } +} + +impl FusedIterator for Powerset + where + I: Iterator, + I::Item: Clone, +{} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/process_results_impl.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/process_results_impl.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/process_results_impl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/process_results_impl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,97 @@ + +/// An iterator that produces only the `T` values as long as the +/// inner iterator produces `Ok(T)`. +/// +/// Used by [`process_results`](crate::process_results), see its docs +/// for more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +#[derive(Debug)] +pub struct ProcessResults<'a, I, E: 'a> { + error: &'a mut Result<(), E>, + iter: I, +} + +impl<'a, I, T, E> Iterator for ProcessResults<'a, I, E> + where I: Iterator> +{ + type Item = T; + + fn next(&mut self) -> Option { + match self.iter.next() { + Some(Ok(x)) => Some(x), + Some(Err(e)) => { + *self.error = Err(e); + None + } + None => None, + } + } + + fn size_hint(&self) -> (usize, Option) { + (0, self.iter.size_hint().1) + } + + fn fold(mut self, init: B, mut f: F) -> B + where + Self: Sized, + F: FnMut(B, Self::Item) -> B, + { + let error = self.error; + self.iter + .try_fold(init, |acc, opt| match opt { + Ok(x) => Ok(f(acc, x)), + Err(e) => { + *error = Err(e); + Err(acc) + } + }) + .unwrap_or_else(|e| e) + } +} + +/// “Lift†a function of the values of an iterator so that it can process +/// an iterator of `Result` values instead. +/// +/// `iterable` is an iterator or iterable with `Result` elements, where +/// `T` is the value type and `E` the error type. +/// +/// `processor` is a closure that receives an adapted version of the iterable +/// as the only argument — the adapted iterator produces elements of type `T`, +/// as long as the original iterator produces `Ok` values. +/// +/// If the original iterable produces an error at any point, the adapted +/// iterator ends and the `process_results` function will return the +/// error iself. +/// +/// Otherwise, the return value from the closure is returned wrapped +/// inside `Ok`. +/// +/// # Example +/// +/// ``` +/// use itertools::process_results; +/// +/// type R = Result; +/// +/// let first_values: Vec = vec![Ok(1), Ok(0), Ok(3)]; +/// let second_values: Vec = vec![Ok(2), Ok(1), Err("overflow")]; +/// +/// // “Lift†the iterator .max() method to work on the values in Results using process_results +/// +/// let first_max = process_results(first_values, |iter| iter.max().unwrap_or(0)); +/// let second_max = process_results(second_values, |iter| iter.max().unwrap_or(0)); +/// +/// assert_eq!(first_max, Ok(3)); +/// assert!(second_max.is_err()); +/// ``` +pub fn process_results(iterable: I, processor: F) -> Result + where I: IntoIterator>, + F: FnOnce(ProcessResults) -> R +{ + let iter = iterable.into_iter(); + let mut error = Ok(()); + + let result = processor(ProcessResults { error: &mut error, iter }); + + error.map(|_| result) +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/put_back_n_impl.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/put_back_n_impl.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/put_back_n_impl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/put_back_n_impl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,61 @@ +use alloc::vec::Vec; + +use crate::size_hint; + +/// An iterator adaptor that allows putting multiple +/// items in front of the iterator. +/// +/// Iterator element type is `I::Item`. +#[derive(Debug, Clone)] +pub struct PutBackN { + top: Vec, + iter: I, +} + +/// Create an iterator where you can put back multiple values to the front +/// of the iteration. +/// +/// Iterator element type is `I::Item`. +pub fn put_back_n(iterable: I) -> PutBackN + where I: IntoIterator +{ + PutBackN { + top: Vec::new(), + iter: iterable.into_iter(), + } +} + +impl PutBackN { + /// Puts x in front of the iterator. + /// The values are yielded in order of the most recently put back + /// values first. + /// + /// ```rust + /// use itertools::put_back_n; + /// + /// let mut it = put_back_n(1..5); + /// it.next(); + /// it.put_back(1); + /// it.put_back(0); + /// + /// assert!(itertools::equal(it, 0..5)); + /// ``` + #[inline] + pub fn put_back(&mut self, x: I::Item) { + self.top.push(x); + } +} + +impl Iterator for PutBackN { + type Item = I::Item; + #[inline] + fn next(&mut self) -> Option { + self.top.pop().or_else(|| self.iter.next()) + } + + #[inline] + fn size_hint(&self) -> (usize, Option) { + size_hint::add_scalar(self.iter.size_hint(), self.top.len()) + } +} + diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/rciter_impl.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/rciter_impl.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/rciter_impl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/rciter_impl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,99 @@ + +use std::iter::{FusedIterator, IntoIterator}; +use alloc::rc::Rc; +use std::cell::RefCell; + +/// A wrapper for `Rc>`, that implements the `Iterator` trait. +#[derive(Debug)] +pub struct RcIter { + /// The boxed iterator. + pub rciter: Rc>, +} + +/// Return an iterator inside a `Rc>` wrapper. +/// +/// The returned `RcIter` can be cloned, and each clone will refer back to the +/// same original iterator. +/// +/// `RcIter` allows doing interesting things like using `.zip()` on an iterator with +/// itself, at the cost of runtime borrow checking which may have a performance +/// penalty. +/// +/// Iterator element type is `Self::Item`. +/// +/// ``` +/// use itertools::rciter; +/// use itertools::zip; +/// +/// // In this example a range iterator is created and we iterate it using +/// // three separate handles (two of them given to zip). +/// // We also use the IntoIterator implementation for `&RcIter`. +/// +/// let mut iter = rciter(0..9); +/// let mut z = zip(&iter, &iter); +/// +/// assert_eq!(z.next(), Some((0, 1))); +/// assert_eq!(z.next(), Some((2, 3))); +/// assert_eq!(z.next(), Some((4, 5))); +/// assert_eq!(iter.next(), Some(6)); +/// assert_eq!(z.next(), Some((7, 8))); +/// assert_eq!(z.next(), None); +/// ``` +/// +/// **Panics** in iterator methods if a borrow error is encountered in the +/// iterator methods. It can only happen if the `RcIter` is reentered in +/// `.next()`, i.e. if it somehow participates in an “iterator knot†+/// where it is an adaptor of itself. +pub fn rciter(iterable: I) -> RcIter + where I: IntoIterator +{ + RcIter { rciter: Rc::new(RefCell::new(iterable.into_iter())) } +} + +impl Clone for RcIter { + clone_fields!(rciter); +} + +impl Iterator for RcIter + where I: Iterator +{ + type Item = A; + #[inline] + fn next(&mut self) -> Option { + self.rciter.borrow_mut().next() + } + + #[inline] + fn size_hint(&self) -> (usize, Option) { + // To work sanely with other API that assume they own an iterator, + // so it can't change in other places, we can't guarantee as much + // in our size_hint. Other clones may drain values under our feet. + (0, self.rciter.borrow().size_hint().1) + } +} + +impl DoubleEndedIterator for RcIter + where I: DoubleEndedIterator +{ + #[inline] + fn next_back(&mut self) -> Option { + self.rciter.borrow_mut().next_back() + } +} + +/// Return an iterator from `&RcIter` (by simply cloning it). +impl<'a, I> IntoIterator for &'a RcIter + where I: Iterator +{ + type Item = I::Item; + type IntoIter = RcIter; + + fn into_iter(self) -> RcIter { + self.clone() + } +} + + +impl FusedIterator for RcIter + where I: FusedIterator +{} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/repeatn.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/repeatn.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/repeatn.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/repeatn.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,59 @@ +use std::iter::FusedIterator; + +/// An iterator that produces *n* repetitions of an element. +/// +/// See [`repeat_n()`](crate::repeat_n) for more information. +#[must_use = "iterators are lazy and do nothing unless consumed"] +#[derive(Clone, Debug)] +pub struct RepeatN { + elt: Option, + n: usize, +} + +/// Create an iterator that produces `n` repetitions of `element`. +pub fn repeat_n(element: A, n: usize) -> RepeatN + where A: Clone, +{ + if n == 0 { + RepeatN { elt: None, n, } + } else { + RepeatN { elt: Some(element), n, } + } +} + +impl Iterator for RepeatN + where A: Clone +{ + type Item = A; + + fn next(&mut self) -> Option { + if self.n > 1 { + self.n -= 1; + self.elt.as_ref().cloned() + } else { + self.n = 0; + self.elt.take() + } + } + + fn size_hint(&self) -> (usize, Option) { + (self.n, Some(self.n)) + } +} + +impl DoubleEndedIterator for RepeatN + where A: Clone +{ + #[inline] + fn next_back(&mut self) -> Option { + self.next() + } +} + +impl ExactSizeIterator for RepeatN + where A: Clone +{} + +impl FusedIterator for RepeatN + where A: Clone +{} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/size_hint.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/size_hint.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/size_hint.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/size_hint.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,119 @@ +//! Arithmetic on `Iterator.size_hint()` values. +//! + +use std::usize; +use std::cmp; +use std::u32; + +/// `SizeHint` is the return type of `Iterator::size_hint()`. +pub type SizeHint = (usize, Option); + +/// Add `SizeHint` correctly. +#[inline] +pub fn add(a: SizeHint, b: SizeHint) -> SizeHint { + let min = a.0.saturating_add(b.0); + let max = match (a.1, b.1) { + (Some(x), Some(y)) => x.checked_add(y), + _ => None, + }; + + (min, max) +} + +/// Add `x` correctly to a `SizeHint`. +#[inline] +pub fn add_scalar(sh: SizeHint, x: usize) -> SizeHint { + let (mut low, mut hi) = sh; + low = low.saturating_add(x); + hi = hi.and_then(|elt| elt.checked_add(x)); + (low, hi) +} + +/// Subtract `x` correctly from a `SizeHint`. +#[inline] +#[allow(dead_code)] +pub fn sub_scalar(sh: SizeHint, x: usize) -> SizeHint { + let (mut low, mut hi) = sh; + low = low.saturating_sub(x); + hi = hi.map(|elt| elt.saturating_sub(x)); + (low, hi) +} + + +/// Multiply `SizeHint` correctly +/// +/// ```ignore +/// use std::usize; +/// use itertools::size_hint; +/// +/// assert_eq!(size_hint::mul((3, Some(4)), (3, Some(4))), +/// (9, Some(16))); +/// +/// assert_eq!(size_hint::mul((3, Some(4)), (usize::MAX, None)), +/// (usize::MAX, None)); +/// +/// assert_eq!(size_hint::mul((3, None), (0, Some(0))), +/// (0, Some(0))); +/// ``` +#[inline] +pub fn mul(a: SizeHint, b: SizeHint) -> SizeHint { + let low = a.0.saturating_mul(b.0); + let hi = match (a.1, b.1) { + (Some(x), Some(y)) => x.checked_mul(y), + (Some(0), None) | (None, Some(0)) => Some(0), + _ => None, + }; + (low, hi) +} + +/// Multiply `x` correctly with a `SizeHint`. +#[inline] +pub fn mul_scalar(sh: SizeHint, x: usize) -> SizeHint { + let (mut low, mut hi) = sh; + low = low.saturating_mul(x); + hi = hi.and_then(|elt| elt.checked_mul(x)); + (low, hi) +} + +/// Raise `base` correctly by a `SizeHint` exponent. +#[inline] +pub fn pow_scalar_base(base: usize, exp: SizeHint) -> SizeHint { + let exp_low = cmp::min(exp.0, u32::MAX as usize) as u32; + let low = base.saturating_pow(exp_low); + + let hi = exp.1.and_then(|exp| { + let exp_hi = cmp::min(exp, u32::MAX as usize) as u32; + base.checked_pow(exp_hi) + }); + + (low, hi) +} + +/// Return the maximum +#[inline] +pub fn max(a: SizeHint, b: SizeHint) -> SizeHint { + let (a_lower, a_upper) = a; + let (b_lower, b_upper) = b; + + let lower = cmp::max(a_lower, b_lower); + + let upper = match (a_upper, b_upper) { + (Some(x), Some(y)) => Some(cmp::max(x, y)), + _ => None, + }; + + (lower, upper) +} + +/// Return the minimum +#[inline] +pub fn min(a: SizeHint, b: SizeHint) -> SizeHint { + let (a_lower, a_upper) = a; + let (b_lower, b_upper) = b; + let lower = cmp::min(a_lower, b_lower); + let upper = match (a_upper, b_upper) { + (Some(u1), Some(u2)) => Some(cmp::min(u1, u2)), + _ => a_upper.or(b_upper), + }; + (lower, upper) +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/sources.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/sources.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/sources.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/sources.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,183 @@ +//! Iterators that are sources (produce elements from parameters, +//! not from another iterator). +#![allow(deprecated)] + +use std::fmt; +use std::mem; + +/// See [`repeat_call`](crate::repeat_call) for more information. +#[derive(Clone)] +#[deprecated(note="Use std repeat_with() instead", since="0.8.0")] +pub struct RepeatCall { + f: F, +} + +impl fmt::Debug for RepeatCall +{ + debug_fmt_fields!(RepeatCall, ); +} + +/// An iterator source that produces elements indefinitely by calling +/// a given closure. +/// +/// Iterator element type is the return type of the closure. +/// +/// ``` +/// use itertools::repeat_call; +/// use itertools::Itertools; +/// use std::collections::BinaryHeap; +/// +/// let mut heap = BinaryHeap::from(vec![2, 5, 3, 7, 8]); +/// +/// // extract each element in sorted order +/// for element in repeat_call(|| heap.pop()).while_some() { +/// print!("{}", element); +/// } +/// +/// itertools::assert_equal( +/// repeat_call(|| 1).take(5), +/// vec![1, 1, 1, 1, 1] +/// ); +/// ``` +#[deprecated(note="Use std repeat_with() instead", since="0.8.0")] +pub fn repeat_call(function: F) -> RepeatCall + where F: FnMut() -> A +{ + RepeatCall { f: function } +} + +impl Iterator for RepeatCall + where F: FnMut() -> A +{ + type Item = A; + + #[inline] + fn next(&mut self) -> Option { + Some((self.f)()) + } + + fn size_hint(&self) -> (usize, Option) { + (usize::max_value(), None) + } +} + +/// Creates a new unfold source with the specified closure as the "iterator +/// function" and an initial state to eventually pass to the closure +/// +/// `unfold` is a general iterator builder: it has a mutable state value, +/// and a closure with access to the state that produces the next value. +/// +/// This more or less equivalent to a regular struct with an [`Iterator`] +/// implementation, and is useful for one-off iterators. +/// +/// ``` +/// // an iterator that yields sequential Fibonacci numbers, +/// // and stops at the maximum representable value. +/// +/// use itertools::unfold; +/// +/// let mut fibonacci = unfold((1u32, 1u32), |(x1, x2)| { +/// // Attempt to get the next Fibonacci number +/// let next = x1.saturating_add(*x2); +/// +/// // Shift left: ret <- x1 <- x2 <- next +/// let ret = *x1; +/// *x1 = *x2; +/// *x2 = next; +/// +/// // If addition has saturated at the maximum, we are finished +/// if ret == *x1 && ret > 1 { +/// None +/// } else { +/// Some(ret) +/// } +/// }); +/// +/// itertools::assert_equal(fibonacci.by_ref().take(8), +/// vec![1, 1, 2, 3, 5, 8, 13, 21]); +/// assert_eq!(fibonacci.last(), Some(2_971_215_073)) +/// ``` +pub fn unfold(initial_state: St, f: F) -> Unfold + where F: FnMut(&mut St) -> Option +{ + Unfold { + f, + state: initial_state, + } +} + +impl fmt::Debug for Unfold + where St: fmt::Debug, +{ + debug_fmt_fields!(Unfold, state); +} + +/// See [`unfold`](crate::unfold) for more information. +#[derive(Clone)] +#[must_use = "iterators are lazy and do nothing unless consumed"] +pub struct Unfold { + f: F, + /// Internal state that will be passed to the closure on the next iteration + pub state: St, +} + +impl Iterator for Unfold + where F: FnMut(&mut St) -> Option +{ + type Item = A; + + #[inline] + fn next(&mut self) -> Option { + (self.f)(&mut self.state) + } +} + +/// An iterator that infinitely applies function to value and yields results. +/// +/// This `struct` is created by the [`iterate()`](crate::iterate) function. +/// See its documentation for more. +#[derive(Clone)] +#[must_use = "iterators are lazy and do nothing unless consumed"] +pub struct Iterate { + state: St, + f: F, +} + +impl fmt::Debug for Iterate + where St: fmt::Debug, +{ + debug_fmt_fields!(Iterate, state); +} + +impl Iterator for Iterate + where F: FnMut(&St) -> St +{ + type Item = St; + + #[inline] + fn next(&mut self) -> Option { + let next_state = (self.f)(&self.state); + Some(mem::replace(&mut self.state, next_state)) + } + + #[inline] + fn size_hint(&self) -> (usize, Option) { + (usize::max_value(), None) + } +} + +/// Creates a new iterator that infinitely applies function to value and yields results. +/// +/// ``` +/// use itertools::iterate; +/// +/// itertools::assert_equal(iterate(1, |&i| i * 3).take(5), vec![1, 3, 9, 27, 81]); +/// ``` +pub fn iterate(initial_value: St, f: F) -> Iterate + where F: FnMut(&St) -> St +{ + Iterate { + state: initial_value, + f, + } +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/tee.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/tee.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/tee.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/tee.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,78 @@ +use super::size_hint; + +use std::cell::RefCell; +use alloc::collections::VecDeque; +use alloc::rc::Rc; + +/// Common buffer object for the two tee halves +#[derive(Debug)] +struct TeeBuffer { + backlog: VecDeque, + iter: I, + /// The owner field indicates which id should read from the backlog + owner: bool, +} + +/// One half of an iterator pair where both return the same elements. +/// +/// See [`.tee()`](crate::Itertools::tee) for more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +#[derive(Debug)] +pub struct Tee + where I: Iterator +{ + rcbuffer: Rc>>, + id: bool, +} + +pub fn new(iter: I) -> (Tee, Tee) + where I: Iterator +{ + let buffer = TeeBuffer{backlog: VecDeque::new(), iter, owner: false}; + let t1 = Tee{rcbuffer: Rc::new(RefCell::new(buffer)), id: true}; + let t2 = Tee{rcbuffer: t1.rcbuffer.clone(), id: false}; + (t1, t2) +} + +impl Iterator for Tee + where I: Iterator, + I::Item: Clone +{ + type Item = I::Item; + fn next(&mut self) -> Option { + // .borrow_mut may fail here -- but only if the user has tied some kind of weird + // knot where the iterator refers back to itself. + let mut buffer = self.rcbuffer.borrow_mut(); + if buffer.owner == self.id { + match buffer.backlog.pop_front() { + None => {} + some_elt => return some_elt, + } + } + match buffer.iter.next() { + None => None, + Some(elt) => { + buffer.backlog.push_back(elt.clone()); + buffer.owner = !self.id; + Some(elt) + } + } + } + + fn size_hint(&self) -> (usize, Option) { + let buffer = self.rcbuffer.borrow(); + let sh = buffer.iter.size_hint(); + + if buffer.owner == self.id { + let log_len = buffer.backlog.len(); + size_hint::add_scalar(sh, log_len) + } else { + sh + } + } +} + +impl ExactSizeIterator for Tee + where I: ExactSizeIterator, + I::Item: Clone +{} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/tuple_impl.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/tuple_impl.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/tuple_impl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/tuple_impl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,331 @@ +//! Some iterator that produces tuples + +use std::iter::Fuse; +use std::iter::FusedIterator; +use std::iter::Take; +use std::iter::Cycle; +use std::marker::PhantomData; + +// `HomogeneousTuple` is a public facade for `TupleCollect`, allowing +// tuple-related methods to be used by clients in generic contexts, while +// hiding the implementation details of `TupleCollect`. +// See https://github.com/rust-itertools/itertools/issues/387 + +/// Implemented for homogeneous tuples of size up to 12. +pub trait HomogeneousTuple + : TupleCollect +{} + +impl HomogeneousTuple for T {} + +/// An iterator over a incomplete tuple. +/// +/// See [`.tuples()`](crate::Itertools::tuples) and +/// [`Tuples::into_buffer()`]. +#[derive(Clone, Debug)] +pub struct TupleBuffer + where T: HomogeneousTuple +{ + cur: usize, + buf: T::Buffer, +} + +impl TupleBuffer + where T: HomogeneousTuple +{ + fn new(buf: T::Buffer) -> Self { + TupleBuffer { + cur: 0, + buf, + } + } +} + +impl Iterator for TupleBuffer + where T: HomogeneousTuple +{ + type Item = T::Item; + + fn next(&mut self) -> Option { + let s = self.buf.as_mut(); + if let Some(ref mut item) = s.get_mut(self.cur) { + self.cur += 1; + item.take() + } else { + None + } + } + + fn size_hint(&self) -> (usize, Option) { + let buffer = &self.buf.as_ref()[self.cur..]; + let len = if buffer.is_empty() { + 0 + } else { + buffer.iter() + .position(|x| x.is_none()) + .unwrap_or_else(|| buffer.len()) + }; + (len, Some(len)) + } +} + +impl ExactSizeIterator for TupleBuffer + where T: HomogeneousTuple +{ +} + +/// An iterator that groups the items in tuples of a specific size. +/// +/// See [`.tuples()`](crate::Itertools::tuples) for more information. +#[derive(Clone, Debug)] +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct Tuples + where I: Iterator, + T: HomogeneousTuple +{ + iter: Fuse, + buf: T::Buffer, +} + +/// Create a new tuples iterator. +pub fn tuples(iter: I) -> Tuples + where I: Iterator, + T: HomogeneousTuple +{ + Tuples { + iter: iter.fuse(), + buf: Default::default(), + } +} + +impl Iterator for Tuples + where I: Iterator, + T: HomogeneousTuple +{ + type Item = T; + + fn next(&mut self) -> Option { + T::collect_from_iter(&mut self.iter, &mut self.buf) + } +} + +impl Tuples + where I: Iterator, + T: HomogeneousTuple +{ + /// Return a buffer with the produced items that was not enough to be grouped in a tuple. + /// + /// ``` + /// use itertools::Itertools; + /// + /// let mut iter = (0..5).tuples(); + /// assert_eq!(Some((0, 1, 2)), iter.next()); + /// assert_eq!(None, iter.next()); + /// itertools::assert_equal(vec![3, 4], iter.into_buffer()); + /// ``` + pub fn into_buffer(self) -> TupleBuffer { + TupleBuffer::new(self.buf) + } +} + + +/// An iterator over all contiguous windows that produces tuples of a specific size. +/// +/// See [`.tuple_windows()`](crate::Itertools::tuple_windows) for more +/// information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +#[derive(Clone, Debug)] +pub struct TupleWindows + where I: Iterator, + T: HomogeneousTuple +{ + iter: I, + last: Option, +} + +/// Create a new tuple windows iterator. +pub fn tuple_windows(mut iter: I) -> TupleWindows + where I: Iterator, + T: HomogeneousTuple, + T::Item: Clone +{ + use std::iter::once; + + let mut last = None; + if T::num_items() != 1 { + // put in a duplicate item in front of the tuple; this simplifies + // .next() function. + if let Some(item) = iter.next() { + let iter = once(item.clone()).chain(once(item)).chain(&mut iter); + last = T::collect_from_iter_no_buf(iter); + } + } + + TupleWindows { + iter, + last, + } +} + +impl Iterator for TupleWindows + where I: Iterator, + T: HomogeneousTuple + Clone, + T::Item: Clone +{ + type Item = T; + + fn next(&mut self) -> Option { + if T::num_items() == 1 { + return T::collect_from_iter_no_buf(&mut self.iter) + } + if let Some(ref mut last) = self.last { + if let Some(new) = self.iter.next() { + last.left_shift_push(new); + return Some(last.clone()); + } + } + None + } +} + +impl FusedIterator for TupleWindows + where I: FusedIterator, + T: HomogeneousTuple + Clone, + T::Item: Clone +{} + +/// An iterator over all windows,wrapping back to the first elements when the +/// window would otherwise exceed the length of the iterator, producing tuples +/// of a specific size. +/// +/// See [`.circular_tuple_windows()`](crate::Itertools::circular_tuple_windows) for more +/// information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +#[derive(Debug)] +pub struct CircularTupleWindows + where I: Iterator + Clone, + T: TupleCollect + Clone +{ + iter: Take, T>>, + phantom_data: PhantomData +} + +pub fn circular_tuple_windows(iter: I) -> CircularTupleWindows + where I: Iterator + Clone + ExactSizeIterator, + T: TupleCollect + Clone, + T::Item: Clone +{ + let len = iter.len(); + let iter = tuple_windows(iter.cycle()).take(len); + + CircularTupleWindows { + iter, + phantom_data: PhantomData{} + } +} + +impl Iterator for CircularTupleWindows + where I: Iterator + Clone, + T: TupleCollect + Clone, + T::Item: Clone +{ + type Item = T; + + fn next(&mut self) -> Option { + self.iter.next() + } +} + +pub trait TupleCollect: Sized { + type Item; + type Buffer: Default + AsRef<[Option]> + AsMut<[Option]>; + + fn collect_from_iter(iter: I, buf: &mut Self::Buffer) -> Option + where I: IntoIterator; + + fn collect_from_iter_no_buf(iter: I) -> Option + where I: IntoIterator; + + fn num_items() -> usize; + + fn left_shift_push(&mut self, item: Self::Item); +} + +macro_rules! count_ident{ + () => {0}; + ($i0:ident, $($i:ident,)*) => {1 + count_ident!($($i,)*)}; +} +macro_rules! rev_for_each_ident{ + ($m:ident, ) => {}; + ($m:ident, $i0:ident, $($i:ident,)*) => { + rev_for_each_ident!($m, $($i,)*); + $m!($i0); + }; +} + +macro_rules! impl_tuple_collect { + ($dummy:ident,) => {}; // stop + ($dummy:ident, $($Y:ident,)*) => ( + impl_tuple_collect!($($Y,)*); + impl TupleCollect for ($(ignore_ident!($Y, A),)*) { + type Item = A; + type Buffer = [Option; count_ident!($($Y,)*) - 1]; + + #[allow(unused_assignments, unused_mut)] + fn collect_from_iter(iter: I, buf: &mut Self::Buffer) -> Option + where I: IntoIterator + { + let mut iter = iter.into_iter(); + $( + let mut $Y = None; + )* + + loop { + $( + $Y = iter.next(); + if $Y.is_none() { + break + } + )* + return Some(($($Y.unwrap()),*,)) + } + + let mut i = 0; + let mut s = buf.as_mut(); + $( + if i < s.len() { + s[i] = $Y; + i += 1; + } + )* + return None; + } + + fn collect_from_iter_no_buf(iter: I) -> Option + where I: IntoIterator + { + let mut iter = iter.into_iter(); + + Some(($( + { let $Y = iter.next()?; $Y }, + )*)) + } + + fn num_items() -> usize { + count_ident!($($Y,)*) + } + + fn left_shift_push(&mut self, mut item: A) { + use std::mem::replace; + + let &mut ($(ref mut $Y),*,) = self; + macro_rules! replace_item{($i:ident) => { + item = replace($i, item); + }} + rev_for_each_ident!(replace_item, $($Y,)*); + drop(item); + } + } + ) +} +impl_tuple_collect!(dummy, a, b, c, d, e, f, g, h, i, j, k, l,); diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/unique_impl.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/unique_impl.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/unique_impl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/unique_impl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,179 @@ +use std::collections::HashMap; +use std::collections::hash_map::Entry; +use std::hash::Hash; +use std::fmt; +use std::iter::FusedIterator; + +/// An iterator adapter to filter out duplicate elements. +/// +/// See [`.unique_by()`](crate::Itertools::unique) for more information. +#[derive(Clone)] +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct UniqueBy { + iter: I, + // Use a Hashmap for the Entry API in order to prevent hashing twice. + // This can maybe be replaced with a HashSet once `get_or_insert_with` + // or a proper Entry API for Hashset is stable and meets this msrv + used: HashMap, + f: F, +} + +impl fmt::Debug for UniqueBy + where I: Iterator + fmt::Debug, + V: fmt::Debug + Hash + Eq, +{ + debug_fmt_fields!(UniqueBy, iter, used); +} + +/// Create a new `UniqueBy` iterator. +pub fn unique_by(iter: I, f: F) -> UniqueBy + where V: Eq + Hash, + F: FnMut(&I::Item) -> V, + I: Iterator, +{ + UniqueBy { + iter, + used: HashMap::new(), + f, + } +} + +// count the number of new unique keys in iterable (`used` is the set already seen) +fn count_new_keys(mut used: HashMap, iterable: I) -> usize + where I: IntoIterator, + K: Hash + Eq, +{ + let iter = iterable.into_iter(); + let current_used = used.len(); + used.extend(iter.map(|key| (key, ()))); + used.len() - current_used +} + +impl Iterator for UniqueBy + where I: Iterator, + V: Eq + Hash, + F: FnMut(&I::Item) -> V +{ + type Item = I::Item; + + fn next(&mut self) -> Option { + while let Some(v) = self.iter.next() { + let key = (self.f)(&v); + if self.used.insert(key, ()).is_none() { + return Some(v); + } + } + None + } + + #[inline] + fn size_hint(&self) -> (usize, Option) { + let (low, hi) = self.iter.size_hint(); + ((low > 0 && self.used.is_empty()) as usize, hi) + } + + fn count(self) -> usize { + let mut key_f = self.f; + count_new_keys(self.used, self.iter.map(move |elt| key_f(&elt))) + } +} + +impl DoubleEndedIterator for UniqueBy + where I: DoubleEndedIterator, + V: Eq + Hash, + F: FnMut(&I::Item) -> V +{ + fn next_back(&mut self) -> Option { + while let Some(v) = self.iter.next_back() { + let key = (self.f)(&v); + if self.used.insert(key, ()).is_none() { + return Some(v); + } + } + None + } +} + +impl FusedIterator for UniqueBy + where I: FusedIterator, + V: Eq + Hash, + F: FnMut(&I::Item) -> V +{} + +impl Iterator for Unique + where I: Iterator, + I::Item: Eq + Hash + Clone +{ + type Item = I::Item; + + fn next(&mut self) -> Option { + while let Some(v) = self.iter.iter.next() { + if let Entry::Vacant(entry) = self.iter.used.entry(v) { + let elt = entry.key().clone(); + entry.insert(()); + return Some(elt); + } + } + None + } + + #[inline] + fn size_hint(&self) -> (usize, Option) { + let (low, hi) = self.iter.iter.size_hint(); + ((low > 0 && self.iter.used.is_empty()) as usize, hi) + } + + fn count(self) -> usize { + count_new_keys(self.iter.used, self.iter.iter) + } +} + +impl DoubleEndedIterator for Unique + where I: DoubleEndedIterator, + I::Item: Eq + Hash + Clone +{ + fn next_back(&mut self) -> Option { + while let Some(v) = self.iter.iter.next_back() { + if let Entry::Vacant(entry) = self.iter.used.entry(v) { + let elt = entry.key().clone(); + entry.insert(()); + return Some(elt); + } + } + None + } +} + +impl FusedIterator for Unique + where I: FusedIterator, + I::Item: Eq + Hash + Clone +{} + +/// An iterator adapter to filter out duplicate elements. +/// +/// See [`.unique()`](crate::Itertools::unique) for more information. +#[derive(Clone)] +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct Unique { + iter: UniqueBy, +} + +impl fmt::Debug for Unique + where I: Iterator + fmt::Debug, + I::Item: Hash + Eq + fmt::Debug, +{ + debug_fmt_fields!(Unique, iter); +} + +pub fn unique(iter: I) -> Unique + where I: Iterator, + I::Item: Eq + Hash, +{ + Unique { + iter: UniqueBy { + iter, + used: HashMap::new(), + f: (), + } + } +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/unziptuple.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/unziptuple.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/unziptuple.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/unziptuple.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,80 @@ +/// Converts an iterator of tuples into a tuple of containers. +/// +/// `unzip()` consumes an entire iterator of n-ary tuples, producing `n` collections, one for each +/// column. +/// +/// This function is, in some sense, the opposite of [`multizip`]. +/// +/// ``` +/// use itertools::multiunzip; +/// +/// let inputs = vec![(1, 2, 3), (4, 5, 6), (7, 8, 9)]; +/// +/// let (a, b, c): (Vec<_>, Vec<_>, Vec<_>) = multiunzip(inputs); +/// +/// assert_eq!(a, vec![1, 4, 7]); +/// assert_eq!(b, vec![2, 5, 8]); +/// assert_eq!(c, vec![3, 6, 9]); +/// ``` +/// +/// [`multizip`]: crate::multizip +pub fn multiunzip(i: I) -> FromI +where + I: IntoIterator, + I::IntoIter: MultiUnzip, +{ + i.into_iter().multiunzip() +} + +/// An iterator that can be unzipped into multiple collections. +/// +/// See [`.multiunzip()`](crate::Itertools::multiunzip) for more information. +pub trait MultiUnzip: Iterator { + /// Unzip this iterator into multiple collections. + fn multiunzip(self) -> FromI; +} + +macro_rules! impl_unzip_iter { + ($($T:ident => $FromT:ident),*) => ( + #[allow(non_snake_case)] + impl, $($T, $FromT: Default + Extend<$T>),* > MultiUnzip<($($FromT,)*)> for IT { + fn multiunzip(self) -> ($($FromT,)*) { + // This implementation mirrors the logic of Iterator::unzip resp. Extend for (A, B) as close as possible. + // Unfortunately a lot of the used api there is still unstable (https://github.com/rust-lang/rust/issues/72631). + // + // Iterator::unzip: https://doc.rust-lang.org/src/core/iter/traits/iterator.rs.html#2825-2865 + // Extend for (A, B): https://doc.rust-lang.org/src/core/iter/traits/collect.rs.html#370-411 + + let mut res = ($($FromT::default(),)*); + let ($($FromT,)*) = &mut res; + + // Still unstable #72631 + // let (lower_bound, _) = self.size_hint(); + // if lower_bound > 0 { + // $($FromT.extend_reserve(lower_bound);)* + // } + + self.fold((), |(), ($($T,)*)| { + // Still unstable #72631 + // $( $FromT.extend_one($T); )* + $( $FromT.extend(std::iter::once($T)); )* + }); + res + } + } + ); +} + +impl_unzip_iter!(); +impl_unzip_iter!(A => FromA); +impl_unzip_iter!(A => FromA, B => FromB); +impl_unzip_iter!(A => FromA, B => FromB, C => FromC); +impl_unzip_iter!(A => FromA, B => FromB, C => FromC, D => FromD); +impl_unzip_iter!(A => FromA, B => FromB, C => FromC, D => FromD, E => FromE); +impl_unzip_iter!(A => FromA, B => FromB, C => FromC, D => FromD, E => FromE, F => FromF); +impl_unzip_iter!(A => FromA, B => FromB, C => FromC, D => FromD, E => FromE, F => FromF, G => FromG); +impl_unzip_iter!(A => FromA, B => FromB, C => FromC, D => FromD, E => FromE, F => FromF, G => FromG, H => FromH); +impl_unzip_iter!(A => FromA, B => FromB, C => FromC, D => FromD, E => FromE, F => FromF, G => FromG, H => FromH, I => FromI); +impl_unzip_iter!(A => FromA, B => FromB, C => FromC, D => FromD, E => FromE, F => FromF, G => FromG, H => FromH, I => FromI, J => FromJ); +impl_unzip_iter!(A => FromA, B => FromB, C => FromC, D => FromD, E => FromE, F => FromF, G => FromG, H => FromH, I => FromI, J => FromJ, K => FromK); +impl_unzip_iter!(A => FromA, B => FromB, C => FromC, D => FromD, E => FromE, F => FromF, G => FromG, H => FromH, I => FromI, J => FromJ, K => FromK, L => FromL); diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/with_position.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/with_position.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/with_position.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/with_position.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,100 @@ +use std::iter::{Fuse,Peekable, FusedIterator}; + +/// An iterator adaptor that wraps each element in an [`Position`]. +/// +/// Iterator element type is `Position`. +/// +/// See [`.with_position()`](crate::Itertools::with_position) for more information. +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct WithPosition + where I: Iterator, +{ + handled_first: bool, + peekable: Peekable>, +} + +impl Clone for WithPosition + where I: Clone + Iterator, + I::Item: Clone, +{ + clone_fields!(handled_first, peekable); +} + +/// Create a new `WithPosition` iterator. +pub fn with_position(iter: I) -> WithPosition + where I: Iterator, +{ + WithPosition { + handled_first: false, + peekable: iter.fuse().peekable(), + } +} + +/// A value yielded by `WithPosition`. +/// Indicates the position of this element in the iterator results. +/// +/// See [`.with_position()`](crate::Itertools::with_position) for more information. +#[derive(Copy, Clone, Debug, PartialEq)] +pub enum Position { + /// This is the first element. + First(T), + /// This is neither the first nor the last element. + Middle(T), + /// This is the last element. + Last(T), + /// This is the only element. + Only(T), +} + +impl Position { + /// Return the inner value. + pub fn into_inner(self) -> T { + match self { + Position::First(x) | + Position::Middle(x) | + Position::Last(x) | + Position::Only(x) => x, + } + } +} + +impl Iterator for WithPosition { + type Item = Position; + + fn next(&mut self) -> Option { + match self.peekable.next() { + Some(item) => { + if !self.handled_first { + // Haven't seen the first item yet, and there is one to give. + self.handled_first = true; + // Peek to see if this is also the last item, + // in which case tag it as `Only`. + match self.peekable.peek() { + Some(_) => Some(Position::First(item)), + None => Some(Position::Only(item)), + } + } else { + // Have seen the first item, and there's something left. + // Peek to see if this is the last item. + match self.peekable.peek() { + Some(_) => Some(Position::Middle(item)), + None => Some(Position::Last(item)), + } + } + } + // Iterator is finished. + None => None, + } + } + + fn size_hint(&self) -> (usize, Option) { + self.peekable.size_hint() + } +} + +impl ExactSizeIterator for WithPosition + where I: ExactSizeIterator, +{ } + +impl FusedIterator for WithPosition +{} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/zip_eq_impl.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/zip_eq_impl.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/zip_eq_impl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/zip_eq_impl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,60 @@ +use super::size_hint; + +/// An iterator which iterates two other iterators simultaneously +/// +/// See [`.zip_eq()`](crate::Itertools::zip_eq) for more information. +#[derive(Clone, Debug)] +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct ZipEq { + a: I, + b: J, +} + +/// Iterate `i` and `j` in lock step. +/// +/// **Panics** if the iterators are not of the same length. +/// +/// [`IntoIterator`] enabled version of [`Itertools::zip_eq`](crate::Itertools::zip_eq). +/// +/// ``` +/// use itertools::zip_eq; +/// +/// let data = [1, 2, 3, 4, 5]; +/// for (a, b) in zip_eq(&data[..data.len() - 1], &data[1..]) { +/// /* loop body */ +/// } +/// ``` +pub fn zip_eq(i: I, j: J) -> ZipEq + where I: IntoIterator, + J: IntoIterator +{ + ZipEq { + a: i.into_iter(), + b: j.into_iter(), + } +} + +impl Iterator for ZipEq + where I: Iterator, + J: Iterator +{ + type Item = (I::Item, J::Item); + + fn next(&mut self) -> Option { + match (self.a.next(), self.b.next()) { + (None, None) => None, + (Some(a), Some(b)) => Some((a, b)), + (None, Some(_)) | (Some(_), None) => + panic!("itertools: .zip_eq() reached end of one iterator before the other") + } + } + + fn size_hint(&self) -> (usize, Option) { + size_hint::min(self.a.size_hint(), self.b.size_hint()) + } +} + +impl ExactSizeIterator for ZipEq + where I: ExactSizeIterator, + J: ExactSizeIterator +{} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/zip_longest.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/zip_longest.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/zip_longest.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/zip_longest.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,83 @@ +use std::cmp::Ordering::{Equal, Greater, Less}; +use super::size_hint; +use std::iter::{Fuse, FusedIterator}; + +use crate::either_or_both::EitherOrBoth; + +// ZipLongest originally written by SimonSapin, +// and dedicated to itertools https://github.com/rust-lang/rust/pull/19283 + +/// An iterator which iterates two other iterators simultaneously +/// +/// This iterator is *fused*. +/// +/// See [`.zip_longest()`](crate::Itertools::zip_longest) for more information. +#[derive(Clone, Debug)] +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct ZipLongest { + a: Fuse, + b: Fuse, +} + +/// Create a new `ZipLongest` iterator. +pub fn zip_longest(a: T, b: U) -> ZipLongest + where T: Iterator, + U: Iterator +{ + ZipLongest { + a: a.fuse(), + b: b.fuse(), + } +} + +impl Iterator for ZipLongest + where T: Iterator, + U: Iterator +{ + type Item = EitherOrBoth; + + #[inline] + fn next(&mut self) -> Option { + match (self.a.next(), self.b.next()) { + (None, None) => None, + (Some(a), None) => Some(EitherOrBoth::Left(a)), + (None, Some(b)) => Some(EitherOrBoth::Right(b)), + (Some(a), Some(b)) => Some(EitherOrBoth::Both(a, b)), + } + } + + #[inline] + fn size_hint(&self) -> (usize, Option) { + size_hint::max(self.a.size_hint(), self.b.size_hint()) + } +} + +impl DoubleEndedIterator for ZipLongest + where T: DoubleEndedIterator + ExactSizeIterator, + U: DoubleEndedIterator + ExactSizeIterator +{ + #[inline] + fn next_back(&mut self) -> Option { + match self.a.len().cmp(&self.b.len()) { + Equal => match (self.a.next_back(), self.b.next_back()) { + (None, None) => None, + (Some(a), Some(b)) => Some(EitherOrBoth::Both(a, b)), + // These can only happen if .len() is inconsistent with .next_back() + (Some(a), None) => Some(EitherOrBoth::Left(a)), + (None, Some(b)) => Some(EitherOrBoth::Right(b)), + }, + Greater => self.a.next_back().map(EitherOrBoth::Left), + Less => self.b.next_back().map(EitherOrBoth::Right), + } + } +} + +impl ExactSizeIterator for ZipLongest + where T: ExactSizeIterator, + U: ExactSizeIterator +{} + +impl FusedIterator for ZipLongest + where T: Iterator, + U: Iterator +{} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/src/ziptuple.rs temporalio-1.3.0/vendor/itertools-0.10.5/src/ziptuple.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/src/ziptuple.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/src/ziptuple.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,138 @@ +use super::size_hint; + +/// See [`multizip`] for more information. +#[derive(Clone, Debug)] +#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] +pub struct Zip { + t: T, +} + +/// An iterator that generalizes *.zip()* and allows running multiple iterators in lockstep. +/// +/// The iterator `Zip<(I, J, ..., M)>` is formed from a tuple of iterators (or values that +/// implement [`IntoIterator`]) and yields elements +/// until any of the subiterators yields `None`. +/// +/// The iterator element type is a tuple like like `(A, B, ..., E)` where `A` to `E` are the +/// element types of the subiterator. +/// +/// **Note:** The result of this macro is a value of a named type (`Zip<(I, J, +/// ..)>` of each component iterator `I, J, ...`) if each component iterator is +/// nameable. +/// +/// Prefer [`izip!()`] over `multizip` for the performance benefits of using the +/// standard library `.zip()`. Prefer `multizip` if a nameable type is needed. +/// +/// ``` +/// use itertools::multizip; +/// +/// // iterate over three sequences side-by-side +/// let mut results = [0, 0, 0, 0]; +/// let inputs = [3, 7, 9, 6]; +/// +/// for (r, index, input) in multizip((&mut results, 0..10, &inputs)) { +/// *r = index * 10 + input; +/// } +/// +/// assert_eq!(results, [0 + 3, 10 + 7, 29, 36]); +/// ``` +/// [`izip!()`]: crate::izip +pub fn multizip(t: U) -> Zip + where Zip: From, + Zip: Iterator, +{ + Zip::from(t) +} + +macro_rules! impl_zip_iter { + ($($B:ident),*) => ( + #[allow(non_snake_case)] + impl<$($B: IntoIterator),*> From<($($B,)*)> for Zip<($($B::IntoIter,)*)> { + fn from(t: ($($B,)*)) -> Self { + let ($($B,)*) = t; + Zip { t: ($($B.into_iter(),)*) } + } + } + + #[allow(non_snake_case)] + #[allow(unused_assignments)] + impl<$($B),*> Iterator for Zip<($($B,)*)> + where + $( + $B: Iterator, + )* + { + type Item = ($($B::Item,)*); + + fn next(&mut self) -> Option + { + let ($(ref mut $B,)*) = self.t; + + // NOTE: Just like iter::Zip, we check the iterators + // for None in order. We may finish unevenly (some + // iterators gave n + 1 elements, some only n). + $( + let $B = match $B.next() { + None => return None, + Some(elt) => elt + }; + )* + Some(($($B,)*)) + } + + fn size_hint(&self) -> (usize, Option) + { + let sh = (::std::usize::MAX, None); + let ($(ref $B,)*) = self.t; + $( + let sh = size_hint::min($B.size_hint(), sh); + )* + sh + } + } + + #[allow(non_snake_case)] + impl<$($B),*> ExactSizeIterator for Zip<($($B,)*)> where + $( + $B: ExactSizeIterator, + )* + { } + + #[allow(non_snake_case)] + impl<$($B),*> DoubleEndedIterator for Zip<($($B,)*)> where + $( + $B: DoubleEndedIterator + ExactSizeIterator, + )* + { + #[inline] + fn next_back(&mut self) -> Option { + let ($(ref mut $B,)*) = self.t; + let size = *[$( $B.len(), )*].iter().min().unwrap(); + + $( + if $B.len() != size { + for _ in 0..$B.len() - size { $B.next_back(); } + } + )* + + match ($($B.next_back(),)*) { + ($(Some($B),)*) => Some(($($B,)*)), + _ => None, + } + } + } + ); +} + +impl_zip_iter!(A); +impl_zip_iter!(A, B); +impl_zip_iter!(A, B, C); +impl_zip_iter!(A, B, C, D); +impl_zip_iter!(A, B, C, D, E); +impl_zip_iter!(A, B, C, D, E, F); +impl_zip_iter!(A, B, C, D, E, F, G); +impl_zip_iter!(A, B, C, D, E, F, G, H); +impl_zip_iter!(A, B, C, D, E, F, G, H, I); +impl_zip_iter!(A, B, C, D, E, F, G, H, I, J); +impl_zip_iter!(A, B, C, D, E, F, G, H, I, J, K); +impl_zip_iter!(A, B, C, D, E, F, G, H, I, J, K, L); diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/tests/adaptors_no_collect.rs temporalio-1.3.0/vendor/itertools-0.10.5/tests/adaptors_no_collect.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/tests/adaptors_no_collect.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/tests/adaptors_no_collect.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,46 @@ +use itertools::Itertools; + +struct PanickingCounter { + curr: usize, + max: usize, +} + +impl Iterator for PanickingCounter { + type Item = (); + + fn next(&mut self) -> Option { + self.curr += 1; + + assert_ne!( + self.curr, self.max, + "Input iterator reached maximum of {} suggesting collection by adaptor", + self.max + ); + + Some(()) + } +} + +fn no_collect_test(to_adaptor: T) + where A: Iterator, T: Fn(PanickingCounter) -> A +{ + let counter = PanickingCounter { curr: 0, max: 10_000 }; + let adaptor = to_adaptor(counter); + + for _ in adaptor.take(5) {} +} + +#[test] +fn permutations_no_collect() { + no_collect_test(|iter| iter.permutations(5)) +} + +#[test] +fn combinations_no_collect() { + no_collect_test(|iter| iter.combinations(5)) +} + +#[test] +fn combinations_with_replacement_no_collect() { + no_collect_test(|iter| iter.combinations_with_replacement(5)) +} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/tests/flatten_ok.rs temporalio-1.3.0/vendor/itertools-0.10.5/tests/flatten_ok.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/tests/flatten_ok.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/tests/flatten_ok.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,76 @@ +use itertools::{assert_equal, Itertools}; +use std::{ops::Range, vec::IntoIter}; + +fn mix_data() -> IntoIter, bool>> { + vec![Ok(0..2), Err(false), Ok(2..4), Err(true), Ok(4..6)].into_iter() +} + +fn ok_data() -> IntoIter, bool>> { + vec![Ok(0..2), Ok(2..4), Ok(4..6)].into_iter() +} + +#[test] +fn flatten_ok_mixed_expected_forward() { + assert_equal( + mix_data().flatten_ok(), + vec![ + Ok(0), + Ok(1), + Err(false), + Ok(2), + Ok(3), + Err(true), + Ok(4), + Ok(5), + ], + ); +} + +#[test] +fn flatten_ok_mixed_expected_reverse() { + assert_equal( + mix_data().flatten_ok().rev(), + vec![ + Ok(5), + Ok(4), + Err(true), + Ok(3), + Ok(2), + Err(false), + Ok(1), + Ok(0), + ], + ); +} + +#[test] +fn flatten_ok_collect_mixed_forward() { + assert_eq!( + mix_data().flatten_ok().collect::, _>>(), + Err(false) + ); +} + +#[test] +fn flatten_ok_collect_mixed_reverse() { + assert_eq!( + mix_data().flatten_ok().rev().collect::, _>>(), + Err(true) + ); +} + +#[test] +fn flatten_ok_collect_ok_forward() { + assert_eq!( + ok_data().flatten_ok().collect::, _>>(), + Ok((0..6).collect()) + ); +} + +#[test] +fn flatten_ok_collect_ok_reverse() { + assert_eq!( + ok_data().flatten_ok().rev().collect::, _>>(), + Ok((0..6).rev().collect()) + ); +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/tests/macros_hygiene.rs temporalio-1.3.0/vendor/itertools-0.10.5/tests/macros_hygiene.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/tests/macros_hygiene.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/tests/macros_hygiene.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,13 @@ +#[test] +fn iproduct_hygiene() { + let _ = itertools::iproduct!(0..6); + let _ = itertools::iproduct!(0..6, 0..9); + let _ = itertools::iproduct!(0..6, 0..9, 0..12); +} + +#[test] +fn izip_hygiene() { + let _ = itertools::izip!(0..6); + let _ = itertools::izip!(0..6, 0..9); + let _ = itertools::izip!(0..6, 0..9, 0..12); +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/tests/merge_join.rs temporalio-1.3.0/vendor/itertools-0.10.5/tests/merge_join.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/tests/merge_join.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/tests/merge_join.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,108 @@ +use itertools::EitherOrBoth; +use itertools::free::merge_join_by; + +#[test] +fn empty() { + let left: Vec = vec![]; + let right: Vec = vec![]; + let expected_result: Vec> = vec![]; + let actual_result = merge_join_by(left, right, |l, r| l.cmp(r)) + .collect::>(); + assert_eq!(expected_result, actual_result); +} + +#[test] +fn left_only() { + let left: Vec = vec![1,2,3]; + let right: Vec = vec![]; + let expected_result: Vec> = vec![ + EitherOrBoth::Left(1), + EitherOrBoth::Left(2), + EitherOrBoth::Left(3) + ]; + let actual_result = merge_join_by(left, right, |l, r| l.cmp(r)) + .collect::>(); + assert_eq!(expected_result, actual_result); +} + +#[test] +fn right_only() { + let left: Vec = vec![]; + let right: Vec = vec![1,2,3]; + let expected_result: Vec> = vec![ + EitherOrBoth::Right(1), + EitherOrBoth::Right(2), + EitherOrBoth::Right(3) + ]; + let actual_result = merge_join_by(left, right, |l, r| l.cmp(r)) + .collect::>(); + assert_eq!(expected_result, actual_result); +} + +#[test] +fn first_left_then_right() { + let left: Vec = vec![1,2,3]; + let right: Vec = vec![4,5,6]; + let expected_result: Vec> = vec![ + EitherOrBoth::Left(1), + EitherOrBoth::Left(2), + EitherOrBoth::Left(3), + EitherOrBoth::Right(4), + EitherOrBoth::Right(5), + EitherOrBoth::Right(6) + ]; + let actual_result = merge_join_by(left, right, |l, r| l.cmp(r)) + .collect::>(); + assert_eq!(expected_result, actual_result); +} + +#[test] +fn first_right_then_left() { + let left: Vec = vec![4,5,6]; + let right: Vec = vec![1,2,3]; + let expected_result: Vec> = vec![ + EitherOrBoth::Right(1), + EitherOrBoth::Right(2), + EitherOrBoth::Right(3), + EitherOrBoth::Left(4), + EitherOrBoth::Left(5), + EitherOrBoth::Left(6) + ]; + let actual_result = merge_join_by(left, right, |l, r| l.cmp(r)) + .collect::>(); + assert_eq!(expected_result, actual_result); +} + +#[test] +fn interspersed_left_and_right() { + let left: Vec = vec![1,3,5]; + let right: Vec = vec![2,4,6]; + let expected_result: Vec> = vec![ + EitherOrBoth::Left(1), + EitherOrBoth::Right(2), + EitherOrBoth::Left(3), + EitherOrBoth::Right(4), + EitherOrBoth::Left(5), + EitherOrBoth::Right(6) + ]; + let actual_result = merge_join_by(left, right, |l, r| l.cmp(r)) + .collect::>(); + assert_eq!(expected_result, actual_result); +} + +#[test] +fn overlapping_left_and_right() { + let left: Vec = vec![1,3,4,6]; + let right: Vec = vec![2,3,4,5]; + let expected_result: Vec> = vec![ + EitherOrBoth::Left(1), + EitherOrBoth::Right(2), + EitherOrBoth::Both(3, 3), + EitherOrBoth::Both(4, 4), + EitherOrBoth::Right(5), + EitherOrBoth::Left(6) + ]; + let actual_result = merge_join_by(left, right, |l, r| l.cmp(r)) + .collect::>(); + assert_eq!(expected_result, actual_result); +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/tests/peeking_take_while.rs temporalio-1.3.0/vendor/itertools-0.10.5/tests/peeking_take_while.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/tests/peeking_take_while.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/tests/peeking_take_while.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,50 @@ +use itertools::Itertools; +use itertools::{put_back, put_back_n}; + +#[test] +fn peeking_take_while_peekable() { + let mut r = (0..10).peekable(); + r.peeking_take_while(|x| *x <= 3).count(); + assert_eq!(r.next(), Some(4)); +} + +#[test] +fn peeking_take_while_put_back() { + let mut r = put_back(0..10); + r.peeking_take_while(|x| *x <= 3).count(); + assert_eq!(r.next(), Some(4)); + r.peeking_take_while(|_| true).count(); + assert_eq!(r.next(), None); +} + +#[test] +fn peeking_take_while_put_back_n() { + let mut r = put_back_n(6..10); + for elt in (0..6).rev() { + r.put_back(elt); + } + r.peeking_take_while(|x| *x <= 3).count(); + assert_eq!(r.next(), Some(4)); + r.peeking_take_while(|_| true).count(); + assert_eq!(r.next(), None); +} + +#[test] +fn peeking_take_while_slice_iter() { + let v = [1, 2, 3, 4, 5, 6]; + let mut r = v.iter(); + r.peeking_take_while(|x| **x <= 3).count(); + assert_eq!(r.next(), Some(&4)); + r.peeking_take_while(|_| true).count(); + assert_eq!(r.next(), None); +} + +#[test] +fn peeking_take_while_slice_iter_rev() { + let v = [1, 2, 3, 4, 5, 6]; + let mut r = v.iter().rev(); + r.peeking_take_while(|x| **x >= 3).count(); + assert_eq!(r.next(), Some(&2)); + r.peeking_take_while(|_| true).count(); + assert_eq!(r.next(), None); +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/tests/quick.rs temporalio-1.3.0/vendor/itertools-0.10.5/tests/quick.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/tests/quick.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/tests/quick.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1749 @@ +//! The purpose of these tests is to cover corner cases of iterators +//! and adaptors. +//! +//! In particular we test the tedious size_hint and exact size correctness. + +use quickcheck as qc; +use std::default::Default; +use std::num::Wrapping; +use std::ops::Range; +use std::cmp::{max, min, Ordering}; +use std::collections::{HashMap, HashSet}; +use itertools::Itertools; +use itertools::{ + multizip, + EitherOrBoth, + iproduct, + izip, +}; +use itertools::free::{ + cloned, + enumerate, + multipeek, + peek_nth, + put_back, + put_back_n, + rciter, + zip, + zip_eq, +}; + +use rand::Rng; +use rand::seq::SliceRandom; +use quickcheck::TestResult; + +/// Trait for size hint modifier types +trait HintKind: Copy + Send + qc::Arbitrary { + fn loosen_bounds(&self, org_hint: (usize, Option)) -> (usize, Option); +} + +/// Exact size hint variant that leaves hints unchanged +#[derive(Clone, Copy, Debug)] +struct Exact {} + +impl HintKind for Exact { + fn loosen_bounds(&self, org_hint: (usize, Option)) -> (usize, Option) { + org_hint + } +} + +impl qc::Arbitrary for Exact { + fn arbitrary(_: &mut G) -> Self { + Exact {} + } +} + +/// Inexact size hint variant to simulate imprecise (but valid) size hints +/// +/// Will always decrease the lower bound and increase the upper bound +/// of the size hint by set amounts. +#[derive(Clone, Copy, Debug)] +struct Inexact { + underestimate: usize, + overestimate: usize, +} + +impl HintKind for Inexact { + fn loosen_bounds(&self, org_hint: (usize, Option)) -> (usize, Option) { + let (org_lower, org_upper) = org_hint; + (org_lower.saturating_sub(self.underestimate), + org_upper.and_then(move |x| x.checked_add(self.overestimate))) + } +} + +impl qc::Arbitrary for Inexact { + fn arbitrary(g: &mut G) -> Self { + let ue_value = usize::arbitrary(g); + let oe_value = usize::arbitrary(g); + // Compensate for quickcheck using extreme values too rarely + let ue_choices = &[0, ue_value, usize::max_value()]; + let oe_choices = &[0, oe_value, usize::max_value()]; + Inexact { + underestimate: *ue_choices.choose(g).unwrap(), + overestimate: *oe_choices.choose(g).unwrap(), + } + } + + fn shrink(&self) -> Box> { + let underestimate_value = self.underestimate; + let overestimate_value = self.overestimate; + Box::new( + underestimate_value.shrink().flat_map(move |ue_value| + overestimate_value.shrink().map(move |oe_value| + Inexact { + underestimate: ue_value, + overestimate: oe_value, + } + ) + ) + ) + } +} + +/// Our base iterator that we can impl Arbitrary for +/// +/// By default we'll return inexact bounds estimates for size_hint +/// to make tests harder to pass. +/// +/// NOTE: Iter is tricky and is not fused, to help catch bugs. +/// At the end it will return None once, then return Some(0), +/// then return None again. +#[derive(Clone, Debug)] +struct Iter { + iterator: Range, + // fuse/done flag + fuse_flag: i32, + hint_kind: SK, +} + +impl Iter where HK: HintKind +{ + fn new(it: Range, hint_kind: HK) -> Self { + Iter { + iterator: it, + fuse_flag: 0, + hint_kind, + } + } +} + +impl Iterator for Iter + where Range: Iterator, + as Iterator>::Item: Default, + HK: HintKind, +{ + type Item = as Iterator>::Item; + + fn next(&mut self) -> Option + { + let elt = self.iterator.next(); + if elt.is_none() { + self.fuse_flag += 1; + // check fuse flag + if self.fuse_flag == 2 { + return Some(Default::default()) + } + } + elt + } + + fn size_hint(&self) -> (usize, Option) + { + let org_hint = self.iterator.size_hint(); + self.hint_kind.loosen_bounds(org_hint) + } +} + +impl DoubleEndedIterator for Iter + where Range: DoubleEndedIterator, + as Iterator>::Item: Default, + HK: HintKind +{ + fn next_back(&mut self) -> Option { self.iterator.next_back() } +} + +impl ExactSizeIterator for Iter where Range: ExactSizeIterator, + as Iterator>::Item: Default, +{ } + +impl qc::Arbitrary for Iter + where T: qc::Arbitrary, + HK: HintKind, +{ + fn arbitrary(g: &mut G) -> Self + { + Iter::new(T::arbitrary(g)..T::arbitrary(g), HK::arbitrary(g)) + } + + fn shrink(&self) -> Box>> + { + let r = self.iterator.clone(); + let hint_kind = self.hint_kind; + Box::new( + r.start.shrink().flat_map(move |a| + r.end.shrink().map(move |b| + Iter::new(a.clone()..b, hint_kind) + ) + ) + ) + } +} + +/// A meta-iterator which yields `Iter`s whose start/endpoints are +/// increased or decreased linearly on each iteration. +#[derive(Clone, Debug)] +struct ShiftRange { + range_start: i32, + range_end: i32, + start_step: i32, + end_step: i32, + iter_count: u32, + hint_kind: HK, +} + +impl Iterator for ShiftRange where HK: HintKind { + type Item = Iter; + + fn next(&mut self) -> Option { + if self.iter_count == 0 { + return None; + } + + let iter = Iter::new(self.range_start..self.range_end, self.hint_kind); + + self.range_start += self.start_step; + self.range_end += self.end_step; + self.iter_count -= 1; + + Some(iter) + } +} + +impl ExactSizeIterator for ShiftRange { } + +impl qc::Arbitrary for ShiftRange + where HK: HintKind +{ + fn arbitrary(g: &mut G) -> Self { + const MAX_STARTING_RANGE_DIFF: i32 = 32; + const MAX_STEP_MODULO: i32 = 8; + const MAX_ITER_COUNT: u32 = 3; + + let range_start = qc::Arbitrary::arbitrary(g); + let range_end = range_start + g.gen_range(0, MAX_STARTING_RANGE_DIFF + 1); + let start_step = g.gen_range(-MAX_STEP_MODULO, MAX_STEP_MODULO + 1); + let end_step = g.gen_range(-MAX_STEP_MODULO, MAX_STEP_MODULO + 1); + let iter_count = g.gen_range(0, MAX_ITER_COUNT + 1); + let hint_kind = qc::Arbitrary::arbitrary(g); + + ShiftRange { + range_start, + range_end, + start_step, + end_step, + iter_count, + hint_kind, + } + } +} + +fn correct_count(get_it: F) -> bool +where + I: Iterator, + F: Fn() -> I +{ + let mut counts = vec![get_it().count()]; + + 'outer: loop { + let mut it = get_it(); + + for _ in 0..(counts.len() - 1) { + #[allow(clippy::manual_assert)] + if it.next().is_none() { + panic!("Iterator shouldn't be finished, may not be deterministic"); + } + } + + if it.next().is_none() { + break 'outer; + } + + counts.push(it.count()); + } + + let total_actual_count = counts.len() - 1; + + for (i, returned_count) in counts.into_iter().enumerate() { + let actual_count = total_actual_count - i; + if actual_count != returned_count { + println!("Total iterations: {} True count: {} returned count: {}", i, actual_count, returned_count); + + return false; + } + } + + true +} + +fn correct_size_hint(mut it: I) -> bool { + // record size hint at each iteration + let initial_hint = it.size_hint(); + let mut hints = Vec::with_capacity(initial_hint.0 + 1); + hints.push(initial_hint); + while let Some(_) = it.next() { + hints.push(it.size_hint()) + } + + let mut true_count = hints.len(); // start off +1 too much + + // check all the size hints + for &(low, hi) in &hints { + true_count -= 1; + if low > true_count || + (hi.is_some() && hi.unwrap() < true_count) + { + println!("True size: {:?}, size hint: {:?}", true_count, (low, hi)); + //println!("All hints: {:?}", hints); + return false + } + } + true +} + +fn exact_size(mut it: I) -> bool { + // check every iteration + let (mut low, mut hi) = it.size_hint(); + if Some(low) != hi { return false; } + while let Some(_) = it.next() { + let (xlow, xhi) = it.size_hint(); + if low != xlow + 1 { return false; } + low = xlow; + hi = xhi; + if Some(low) != hi { return false; } + } + let (low, hi) = it.size_hint(); + low == 0 && hi == Some(0) +} + +// Exact size for this case, without ExactSizeIterator +fn exact_size_for_this(mut it: I) -> bool { + // check every iteration + let (mut low, mut hi) = it.size_hint(); + if Some(low) != hi { return false; } + while let Some(_) = it.next() { + let (xlow, xhi) = it.size_hint(); + if low != xlow + 1 { return false; } + low = xlow; + hi = xhi; + if Some(low) != hi { return false; } + } + let (low, hi) = it.size_hint(); + low == 0 && hi == Some(0) +} + +/* + * NOTE: Range is broken! + * (all signed ranges are) +#[quickcheck] +fn size_range_i8(a: Iter) -> bool { + exact_size(a) +} + +#[quickcheck] +fn size_range_i16(a: Iter) -> bool { + exact_size(a) +} + +#[quickcheck] +fn size_range_u8(a: Iter) -> bool { + exact_size(a) +} + */ + +macro_rules! quickcheck { + // accept several property function definitions + // The property functions can use pattern matching and `mut` as usual + // in the function arguments, but the functions can not be generic. + {$($(#$attr:tt)* fn $fn_name:ident($($arg:tt)*) -> $ret:ty { $($code:tt)* })*} => ( + $( + #[test] + $(#$attr)* + fn $fn_name() { + fn prop($($arg)*) -> $ret { + $($code)* + } + ::quickcheck::quickcheck(quickcheck!(@fn prop [] $($arg)*)); + } + )* + ); + // parse argument list (with patterns allowed) into prop as fn(_, _) -> _ + (@fn $f:ident [$($t:tt)*]) => { + $f as fn($($t),*) -> _ + }; + (@fn $f:ident [$($p:tt)*] : $($tail:tt)*) => { + quickcheck!(@fn $f [$($p)* _] $($tail)*) + }; + (@fn $f:ident [$($p:tt)*] $t:tt $($tail:tt)*) => { + quickcheck!(@fn $f [$($p)*] $($tail)*) + }; +} + +quickcheck! { + + fn size_product(a: Iter, b: Iter) -> bool { + correct_size_hint(a.cartesian_product(b)) + } + fn size_product3(a: Iter, b: Iter, c: Iter) -> bool { + correct_size_hint(iproduct!(a, b, c)) + } + + fn correct_cartesian_product3(a: Iter, b: Iter, c: Iter, + take_manual: usize) -> () + { + // test correctness of iproduct through regular iteration (take) + // and through fold. + let ac = a.clone(); + let br = &b.clone(); + let cr = &c.clone(); + let answer: Vec<_> = ac.flat_map(move |ea| br.clone().flat_map(move |eb| cr.clone().map(move |ec| (ea, eb, ec)))).collect(); + let mut product_iter = iproduct!(a, b, c); + let mut actual = Vec::new(); + + actual.extend((&mut product_iter).take(take_manual)); + if actual.len() == take_manual { + product_iter.fold((), |(), elt| actual.push(elt)); + } + assert_eq!(answer, actual); + } + + fn size_multi_product(a: ShiftRange) -> bool { + correct_size_hint(a.multi_cartesian_product()) + } + fn correct_multi_product3(a: ShiftRange, take_manual: usize) -> () { + // Fix no. of iterators at 3 + let a = ShiftRange { iter_count: 3, ..a }; + + // test correctness of MultiProduct through regular iteration (take) + // and through fold. + let mut iters = a.clone(); + let i0 = iters.next().unwrap(); + let i1r = &iters.next().unwrap(); + let i2r = &iters.next().unwrap(); + let answer: Vec<_> = i0.flat_map(move |ei0| i1r.clone().flat_map(move |ei1| i2r.clone().map(move |ei2| vec![ei0, ei1, ei2]))).collect(); + let mut multi_product = a.clone().multi_cartesian_product(); + let mut actual = Vec::new(); + + actual.extend((&mut multi_product).take(take_manual)); + if actual.len() == take_manual { + multi_product.fold((), |(), elt| actual.push(elt)); + } + assert_eq!(answer, actual); + + assert_eq!(answer.into_iter().last(), a.multi_cartesian_product().last()); + } + + #[allow(deprecated)] + fn size_step(a: Iter, s: usize) -> bool { + let mut s = s; + if s == 0 { + s += 1; // never zero + } + let filt = a.clone().dedup(); + correct_size_hint(filt.step(s)) && + exact_size(a.step(s)) + } + + #[allow(deprecated)] + fn equal_step(a: Iter, s: usize) -> bool { + let mut s = s; + if s == 0 { + s += 1; // never zero + } + let mut i = 0; + itertools::equal(a.clone().step(s), a.filter(|_| { + let keep = i % s == 0; + i += 1; + keep + })) + } + + #[allow(deprecated)] + fn equal_step_vec(a: Vec, s: usize) -> bool { + let mut s = s; + if s == 0 { + s += 1; // never zero + } + let mut i = 0; + itertools::equal(a.iter().step(s), a.iter().filter(|_| { + let keep = i % s == 0; + i += 1; + keep + })) + } + + fn size_multipeek(a: Iter, s: u8) -> bool { + let mut it = multipeek(a); + // peek a few times + for _ in 0..s { + it.peek(); + } + exact_size(it) + } + + fn size_peek_nth(a: Iter, s: u8) -> bool { + let mut it = peek_nth(a); + // peek a few times + for n in 0..s { + it.peek_nth(n as usize); + } + exact_size(it) + } + + fn equal_merge(mut a: Vec, mut b: Vec) -> bool { + a.sort(); + b.sort(); + let mut merged = a.clone(); + merged.extend(b.iter().cloned()); + merged.sort(); + itertools::equal(&merged, a.iter().merge(&b)) + } + fn size_merge(a: Iter, b: Iter) -> bool { + correct_size_hint(a.merge(b)) + } + fn size_zip(a: Iter, b: Iter, c: Iter) -> bool { + let filt = a.clone().dedup(); + correct_size_hint(multizip((filt, b.clone(), c.clone()))) && + exact_size(multizip((a, b, c))) + } + fn size_zip_rc(a: Iter, b: Iter) -> bool { + let rc = rciter(a); + correct_size_hint(multizip((&rc, &rc, b))) + } + + fn size_zip_macro(a: Iter, b: Iter, c: Iter) -> bool { + let filt = a.clone().dedup(); + correct_size_hint(izip!(filt, b.clone(), c.clone())) && + exact_size(izip!(a, b, c)) + } + fn equal_kmerge(mut a: Vec, mut b: Vec, mut c: Vec) -> bool { + use itertools::free::kmerge; + a.sort(); + b.sort(); + c.sort(); + let mut merged = a.clone(); + merged.extend(b.iter().cloned()); + merged.extend(c.iter().cloned()); + merged.sort(); + itertools::equal(merged.into_iter(), kmerge(vec![a, b, c])) + } + + // Any number of input iterators + fn equal_kmerge_2(mut inputs: Vec>) -> bool { + use itertools::free::kmerge; + // sort the inputs + for input in &mut inputs { + input.sort(); + } + let mut merged = inputs.concat(); + merged.sort(); + itertools::equal(merged.into_iter(), kmerge(inputs)) + } + + // Any number of input iterators + fn equal_kmerge_by_ge(mut inputs: Vec>) -> bool { + // sort the inputs + for input in &mut inputs { + input.sort(); + input.reverse(); + } + let mut merged = inputs.concat(); + merged.sort(); + merged.reverse(); + itertools::equal(merged.into_iter(), + inputs.into_iter().kmerge_by(|x, y| x >= y)) + } + + // Any number of input iterators + fn equal_kmerge_by_lt(mut inputs: Vec>) -> bool { + // sort the inputs + for input in &mut inputs { + input.sort(); + } + let mut merged = inputs.concat(); + merged.sort(); + itertools::equal(merged.into_iter(), + inputs.into_iter().kmerge_by(|x, y| x < y)) + } + + // Any number of input iterators + fn equal_kmerge_by_le(mut inputs: Vec>) -> bool { + // sort the inputs + for input in &mut inputs { + input.sort(); + } + let mut merged = inputs.concat(); + merged.sort(); + itertools::equal(merged.into_iter(), + inputs.into_iter().kmerge_by(|x, y| x <= y)) + } + fn size_kmerge(a: Iter, b: Iter, c: Iter) -> bool { + use itertools::free::kmerge; + correct_size_hint(kmerge(vec![a, b, c])) + } + fn equal_zip_eq(a: Vec, b: Vec) -> bool { + let len = std::cmp::min(a.len(), b.len()); + let a = &a[..len]; + let b = &b[..len]; + itertools::equal(zip_eq(a, b), zip(a, b)) + } + fn size_zip_longest(a: Iter, b: Iter) -> bool { + let filt = a.clone().dedup(); + let filt2 = b.clone().dedup(); + correct_size_hint(filt.zip_longest(b.clone())) && + correct_size_hint(a.clone().zip_longest(filt2)) && + exact_size(a.zip_longest(b)) + } + fn size_2_zip_longest(a: Iter, b: Iter) -> bool { + let it = a.clone().zip_longest(b.clone()); + let jt = a.clone().zip_longest(b.clone()); + itertools::equal(a, + it.filter_map(|elt| match elt { + EitherOrBoth::Both(x, _) => Some(x), + EitherOrBoth::Left(x) => Some(x), + _ => None, + } + )) + && + itertools::equal(b, + jt.filter_map(|elt| match elt { + EitherOrBoth::Both(_, y) => Some(y), + EitherOrBoth::Right(y) => Some(y), + _ => None, + } + )) + } + fn size_interleave(a: Iter, b: Iter) -> bool { + correct_size_hint(a.interleave(b)) + } + fn exact_interleave(a: Iter, b: Iter) -> bool { + exact_size_for_this(a.interleave(b)) + } + fn size_interleave_shortest(a: Iter, b: Iter) -> bool { + correct_size_hint(a.interleave_shortest(b)) + } + fn exact_interleave_shortest(a: Vec<()>, b: Vec<()>) -> bool { + exact_size_for_this(a.iter().interleave_shortest(&b)) + } + fn size_intersperse(a: Iter, x: i16) -> bool { + correct_size_hint(a.intersperse(x)) + } + fn equal_intersperse(a: Vec, x: i32) -> bool { + let mut inter = false; + let mut i = 0; + for elt in a.iter().cloned().intersperse(x) { + if inter { + if elt != x { return false } + } else { + if elt != a[i] { return false } + i += 1; + } + inter = !inter; + } + true + } + + fn equal_combinations_2(a: Vec) -> bool { + let mut v = Vec::new(); + for (i, x) in enumerate(&a) { + for y in &a[i + 1..] { + v.push((x, y)); + } + } + itertools::equal(a.iter().tuple_combinations::<(_, _)>(), v) + } + + fn collect_tuple_matches_size(a: Iter) -> bool { + let size = a.clone().count(); + a.collect_tuple::<(_, _, _)>().is_some() == (size == 3) + } + + fn correct_permutations(vals: HashSet, k: usize) -> () { + // Test permutations only on iterators of distinct integers, to prevent + // false positives. + + const MAX_N: usize = 5; + + let n = min(vals.len(), MAX_N); + let vals: HashSet = vals.into_iter().take(n).collect(); + + let perms = vals.iter().permutations(k); + + let mut actual = HashSet::new(); + + for perm in perms { + assert_eq!(perm.len(), k); + + let all_items_valid = perm.iter().all(|p| vals.contains(p)); + assert!(all_items_valid, "perm contains value not from input: {:?}", perm); + + // Check that all perm items are distinct + let distinct_len = { + let perm_set: HashSet<_> = perm.iter().collect(); + perm_set.len() + }; + assert_eq!(perm.len(), distinct_len); + + // Check that the perm is new + assert!(actual.insert(perm.clone()), "perm already encountered: {:?}", perm); + } + } + + fn permutations_lexic_order(a: usize, b: usize) -> () { + let a = a % 6; + let b = b % 6; + + let n = max(a, b); + let k = min (a, b); + + let expected_first: Vec = (0..k).collect(); + let expected_last: Vec = ((n - k)..n).rev().collect(); + + let mut perms = (0..n).permutations(k); + + let mut curr_perm = match perms.next() { + Some(p) => p, + None => { return; } + }; + + assert_eq!(expected_first, curr_perm); + + for next_perm in perms { + assert!( + next_perm > curr_perm, + "next perm isn't greater-than current; next_perm={:?} curr_perm={:?} n={}", + next_perm, curr_perm, n + ); + + curr_perm = next_perm; + } + + assert_eq!(expected_last, curr_perm); + + } + + fn permutations_count(n: usize, k: usize) -> bool { + let n = n % 6; + + correct_count(|| (0..n).permutations(k)) + } + + fn permutations_size(a: Iter, k: usize) -> bool { + correct_size_hint(a.take(5).permutations(k)) + } + + fn permutations_k0_yields_once(n: usize) -> () { + let k = 0; + let expected: Vec> = vec![vec![]]; + let actual = (0..n).permutations(k).collect_vec(); + + assert_eq!(expected, actual); + } +} + +quickcheck! { + fn dedup_via_coalesce(a: Vec) -> bool { + let mut b = a.clone(); + b.dedup(); + itertools::equal( + &b, + a + .iter() + .coalesce(|x, y| { + if x==y { + Ok(x) + } else { + Err((x, y)) + } + }) + .fold(vec![], |mut v, n| { + v.push(n); + v + }) + ) + } +} + +quickcheck! { + fn equal_dedup(a: Vec) -> bool { + let mut b = a.clone(); + b.dedup(); + itertools::equal(&b, a.iter().dedup()) + } +} + +quickcheck! { + fn equal_dedup_by(a: Vec<(i32, i32)>) -> bool { + let mut b = a.clone(); + b.dedup_by(|x, y| x.0==y.0); + itertools::equal(&b, a.iter().dedup_by(|x, y| x.0==y.0)) + } +} + +quickcheck! { + fn size_dedup(a: Vec) -> bool { + correct_size_hint(a.iter().dedup()) + } +} + +quickcheck! { + fn size_dedup_by(a: Vec<(i32, i32)>) -> bool { + correct_size_hint(a.iter().dedup_by(|x, y| x.0==y.0)) + } +} + +quickcheck! { + fn exact_repeatn((n, x): (usize, i32)) -> bool { + let it = itertools::repeat_n(x, n); + exact_size(it) + } +} + +quickcheck! { + fn size_put_back(a: Vec, x: Option) -> bool { + let mut it = put_back(a.into_iter()); + match x { + Some(t) => it.put_back(t), + None => {} + } + correct_size_hint(it) + } +} + +quickcheck! { + fn size_put_backn(a: Vec, b: Vec) -> bool { + let mut it = put_back_n(a.into_iter()); + for elt in b { + it.put_back(elt) + } + correct_size_hint(it) + } +} + +quickcheck! { + fn size_tee(a: Vec) -> bool { + let (mut t1, mut t2) = a.iter().tee(); + t1.next(); + t1.next(); + t2.next(); + exact_size(t1) && exact_size(t2) + } +} + +quickcheck! { + fn size_tee_2(a: Vec) -> bool { + let (mut t1, mut t2) = a.iter().dedup().tee(); + t1.next(); + t1.next(); + t2.next(); + correct_size_hint(t1) && correct_size_hint(t2) + } +} + +quickcheck! { + fn size_take_while_ref(a: Vec, stop: u8) -> bool { + correct_size_hint(a.iter().take_while_ref(|x| **x != stop)) + } +} + +quickcheck! { + fn equal_partition(a: Vec) -> bool { + let mut a = a; + let mut ap = a.clone(); + let split_index = itertools::partition(&mut ap, |x| *x >= 0); + let parted = (0..split_index).all(|i| ap[i] >= 0) && + (split_index..a.len()).all(|i| ap[i] < 0); + + a.sort(); + ap.sort(); + parted && (a == ap) + } +} + +quickcheck! { + fn size_combinations(it: Iter) -> bool { + correct_size_hint(it.tuple_combinations::<(_, _)>()) + } +} + +quickcheck! { + fn equal_combinations(it: Iter) -> bool { + let values = it.clone().collect_vec(); + let mut cmb = it.tuple_combinations(); + for i in 0..values.len() { + for j in i+1..values.len() { + let pair = (values[i], values[j]); + if pair != cmb.next().unwrap() { + return false; + } + } + } + cmb.next() == None + } +} + +quickcheck! { + fn size_pad_tail(it: Iter, pad: u8) -> bool { + correct_size_hint(it.clone().pad_using(pad as usize, |_| 0)) && + correct_size_hint(it.dropping(1).rev().pad_using(pad as usize, |_| 0)) + } +} + +quickcheck! { + fn size_pad_tail2(it: Iter, pad: u8) -> bool { + exact_size(it.pad_using(pad as usize, |_| 0)) + } +} + +quickcheck! { + fn size_powerset(it: Iter) -> bool { + // Powerset cardinality gets large very quickly, limit input to keep test fast. + correct_size_hint(it.take(12).powerset()) + } +} + +quickcheck! { + fn size_duplicates(it: Iter) -> bool { + correct_size_hint(it.duplicates()) + } +} + +quickcheck! { + fn size_unique(it: Iter) -> bool { + correct_size_hint(it.unique()) + } + + fn count_unique(it: Vec, take_first: u8) -> () { + let answer = { + let mut v = it.clone(); + v.sort(); v.dedup(); + v.len() + }; + let mut iter = cloned(&it).unique(); + let first_count = (&mut iter).take(take_first as usize).count(); + let rest_count = iter.count(); + assert_eq!(answer, first_count + rest_count); + } +} + +quickcheck! { + fn fuzz_group_by_lazy_1(it: Iter) -> bool { + let jt = it.clone(); + let groups = it.group_by(|k| *k); + itertools::equal(jt, groups.into_iter().flat_map(|(_, x)| x)) + } +} + +quickcheck! { + fn fuzz_group_by_lazy_2(data: Vec) -> bool { + let groups = data.iter().group_by(|k| *k / 10); + let res = itertools::equal(data.iter(), groups.into_iter().flat_map(|(_, x)| x)); + res + } +} + +quickcheck! { + fn fuzz_group_by_lazy_3(data: Vec) -> bool { + let grouper = data.iter().group_by(|k| *k / 10); + let groups = grouper.into_iter().collect_vec(); + let res = itertools::equal(data.iter(), groups.into_iter().flat_map(|(_, x)| x)); + res + } +} + +quickcheck! { + fn fuzz_group_by_lazy_duo(data: Vec, order: Vec<(bool, bool)>) -> bool { + let grouper = data.iter().group_by(|k| *k / 3); + let mut groups1 = grouper.into_iter(); + let mut groups2 = grouper.into_iter(); + let mut elts = Vec::<&u8>::new(); + let mut old_groups = Vec::new(); + + let tup1 = |(_, b)| b; + for &(ord, consume_now) in &order { + let iter = &mut [&mut groups1, &mut groups2][ord as usize]; + match iter.next() { + Some((_, gr)) => if consume_now { + for og in old_groups.drain(..) { + elts.extend(og); + } + elts.extend(gr); + } else { + old_groups.push(gr); + }, + None => break, + } + } + for og in old_groups.drain(..) { + elts.extend(og); + } + for gr in groups1.map(&tup1) { elts.extend(gr); } + for gr in groups2.map(&tup1) { elts.extend(gr); } + itertools::assert_equal(&data, elts); + true + } +} + +quickcheck! { + fn equal_chunks_lazy(a: Vec, size: u8) -> bool { + let mut size = size; + if size == 0 { + size += 1; + } + let chunks = a.iter().chunks(size as usize); + let it = a.chunks(size as usize); + for (a, b) in chunks.into_iter().zip(it) { + if !itertools::equal(a, b) { + return false; + } + } + true + } +} + +quickcheck! { + fn equal_tuple_windows_1(a: Vec) -> bool { + let x = a.windows(1).map(|s| (&s[0], )); + let y = a.iter().tuple_windows::<(_,)>(); + itertools::equal(x, y) + } + + fn equal_tuple_windows_2(a: Vec) -> bool { + let x = a.windows(2).map(|s| (&s[0], &s[1])); + let y = a.iter().tuple_windows::<(_, _)>(); + itertools::equal(x, y) + } + + fn equal_tuple_windows_3(a: Vec) -> bool { + let x = a.windows(3).map(|s| (&s[0], &s[1], &s[2])); + let y = a.iter().tuple_windows::<(_, _, _)>(); + itertools::equal(x, y) + } + + fn equal_tuple_windows_4(a: Vec) -> bool { + let x = a.windows(4).map(|s| (&s[0], &s[1], &s[2], &s[3])); + let y = a.iter().tuple_windows::<(_, _, _, _)>(); + itertools::equal(x, y) + } + + fn equal_tuples_1(a: Vec) -> bool { + let x = a.chunks(1).map(|s| (&s[0], )); + let y = a.iter().tuples::<(_,)>(); + itertools::equal(x, y) + } + + fn equal_tuples_2(a: Vec) -> bool { + let x = a.chunks(2).filter(|s| s.len() == 2).map(|s| (&s[0], &s[1])); + let y = a.iter().tuples::<(_, _)>(); + itertools::equal(x, y) + } + + fn equal_tuples_3(a: Vec) -> bool { + let x = a.chunks(3).filter(|s| s.len() == 3).map(|s| (&s[0], &s[1], &s[2])); + let y = a.iter().tuples::<(_, _, _)>(); + itertools::equal(x, y) + } + + fn equal_tuples_4(a: Vec) -> bool { + let x = a.chunks(4).filter(|s| s.len() == 4).map(|s| (&s[0], &s[1], &s[2], &s[3])); + let y = a.iter().tuples::<(_, _, _, _)>(); + itertools::equal(x, y) + } + + fn exact_tuple_buffer(a: Vec) -> bool { + let mut iter = a.iter().tuples::<(_, _, _, _)>(); + (&mut iter).last(); + let buffer = iter.into_buffer(); + assert_eq!(buffer.len(), a.len() % 4); + exact_size(buffer) + } +} + +// with_position +quickcheck! { + fn with_position_exact_size_1(a: Vec) -> bool { + exact_size_for_this(a.iter().with_position()) + } + fn with_position_exact_size_2(a: Iter) -> bool { + exact_size_for_this(a.with_position()) + } +} + +quickcheck! { + fn correct_group_map_modulo_key(a: Vec, modulo: u8) -> () { + let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0` + let count = a.len(); + let lookup = a.into_iter().map(|i| (i % modulo, i)).into_group_map(); + + assert_eq!(lookup.values().flat_map(|vals| vals.iter()).count(), count); + + for (&key, vals) in lookup.iter() { + assert!(vals.iter().all(|&val| val % modulo == key)); + } + } +} + +/// A peculiar type: Equality compares both tuple items, but ordering only the +/// first item. This is so we can check the stability property easily. +#[derive(Clone, Debug, PartialEq, Eq)] +struct Val(u32, u32); + +impl PartialOrd for Val { + fn partial_cmp(&self, other: &Val) -> Option { + self.0.partial_cmp(&other.0) + } +} + +impl Ord for Val { + fn cmp(&self, other: &Val) -> Ordering { + self.0.cmp(&other.0) + } +} + +impl qc::Arbitrary for Val { + fn arbitrary(g: &mut G) -> Self { + let (x, y) = <(u32, u32)>::arbitrary(g); + Val(x, y) + } + fn shrink(&self) -> Box> { + Box::new((self.0, self.1).shrink().map(|(x, y)| Val(x, y))) + } +} + +quickcheck! { + fn minmax(a: Vec) -> bool { + use itertools::MinMaxResult; + + + let minmax = a.iter().minmax(); + let expected = match a.len() { + 0 => MinMaxResult::NoElements, + 1 => MinMaxResult::OneElement(&a[0]), + _ => MinMaxResult::MinMax(a.iter().min().unwrap(), + a.iter().max().unwrap()), + }; + minmax == expected + } +} + +quickcheck! { + fn minmax_f64(a: Vec) -> TestResult { + use itertools::MinMaxResult; + + if a.iter().any(|x| x.is_nan()) { + return TestResult::discard(); + } + + let min = cloned(&a).fold1(f64::min); + let max = cloned(&a).fold1(f64::max); + + let minmax = cloned(&a).minmax(); + let expected = match a.len() { + 0 => MinMaxResult::NoElements, + 1 => MinMaxResult::OneElement(min.unwrap()), + _ => MinMaxResult::MinMax(min.unwrap(), max.unwrap()), + }; + TestResult::from_bool(minmax == expected) + } +} + +quickcheck! { + #[allow(deprecated)] + fn tree_fold1_f64(mut a: Vec) -> TestResult { + fn collapse_adjacent(x: Vec, mut f: F) -> Vec + where F: FnMut(f64, f64) -> f64 + { + let mut out = Vec::new(); + for i in (0..x.len()).step(2) { + if i == x.len()-1 { + out.push(x[i]) + } else { + out.push(f(x[i], x[i+1])); + } + } + out + } + + if a.iter().any(|x| x.is_nan()) { + return TestResult::discard(); + } + + let actual = a.iter().cloned().tree_fold1(f64::atan2); + + while a.len() > 1 { + a = collapse_adjacent(a, f64::atan2); + } + let expected = a.pop(); + + TestResult::from_bool(actual == expected) + } +} + +quickcheck! { + fn exactly_one_i32(a: Vec) -> TestResult { + let ret = a.iter().cloned().exactly_one(); + match a.len() { + 1 => TestResult::from_bool(ret.unwrap() == a[0]), + _ => TestResult::from_bool(ret.unwrap_err().eq(a.iter().cloned())), + } + } +} + +quickcheck! { + fn at_most_one_i32(a: Vec) -> TestResult { + let ret = a.iter().cloned().at_most_one(); + match a.len() { + 0 => TestResult::from_bool(ret.unwrap() == None), + 1 => TestResult::from_bool(ret.unwrap() == Some(a[0])), + _ => TestResult::from_bool(ret.unwrap_err().eq(a.iter().cloned())), + } + } +} + +quickcheck! { + fn consistent_grouping_map_with_by(a: Vec, modulo: u8) -> () { + let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0` + + let lookup_grouping_map = a.iter().copied().map(|i| (i % modulo, i)).into_grouping_map().collect::>(); + let lookup_grouping_map_by = a.iter().copied().into_grouping_map_by(|i| i % modulo).collect::>(); + + assert_eq!(lookup_grouping_map, lookup_grouping_map_by); + } + + fn correct_grouping_map_by_aggregate_modulo_key(a: Vec, modulo: u8) -> () { + let modulo = if modulo < 2 { 2 } else { modulo } as u64; // Avoid `% 0` + let lookup = a.iter() + .map(|&b| b as u64) // Avoid overflows + .into_grouping_map_by(|i| i % modulo) + .aggregate(|acc, &key, val| { + assert!(val % modulo == key); + if val % (modulo - 1) == 0 { + None + } else { + Some(acc.unwrap_or(0) + val) + } + }); + + let group_map_lookup = a.iter() + .map(|&b| b as u64) + .map(|i| (i % modulo, i)) + .into_group_map() + .into_iter() + .filter_map(|(key, vals)| { + vals.into_iter().fold(None, |acc, val| { + if val % (modulo - 1) == 0 { + None + } else { + Some(acc.unwrap_or(0) + val) + } + }).map(|new_val| (key, new_val)) + }) + .collect::>(); + assert_eq!(lookup, group_map_lookup); + + for m in 0..modulo { + assert_eq!( + lookup.get(&m).copied(), + a.iter() + .map(|&b| b as u64) + .filter(|&val| val % modulo == m) + .fold(None, |acc, val| { + if val % (modulo - 1) == 0 { + None + } else { + Some(acc.unwrap_or(0) + val) + } + }) + ); + } + } + + fn correct_grouping_map_by_fold_modulo_key(a: Vec, modulo: u8) -> () { + let modulo = if modulo == 0 { 1 } else { modulo } as u64; // Avoid `% 0` + let lookup = a.iter().map(|&b| b as u64) // Avoid overflows + .into_grouping_map_by(|i| i % modulo) + .fold(0u64, |acc, &key, val| { + assert!(val % modulo == key); + acc + val + }); + + let group_map_lookup = a.iter() + .map(|&b| b as u64) + .map(|i| (i % modulo, i)) + .into_group_map() + .into_iter() + .map(|(key, vals)| (key, vals.into_iter().sum())) + .collect::>(); + assert_eq!(lookup, group_map_lookup); + + for (&key, &sum) in lookup.iter() { + assert_eq!(sum, a.iter().map(|&b| b as u64).filter(|&val| val % modulo == key).sum::()); + } + } + + fn correct_grouping_map_by_fold_first_modulo_key(a: Vec, modulo: u8) -> () { + let modulo = if modulo == 0 { 1 } else { modulo } as u64; // Avoid `% 0` + let lookup = a.iter().map(|&b| b as u64) // Avoid overflows + .into_grouping_map_by(|i| i % modulo) + .fold_first(|acc, &key, val| { + assert!(val % modulo == key); + acc + val + }); + + // TODO: Swap `fold1` with stdlib's `fold_first` when it's stabilized + let group_map_lookup = a.iter() + .map(|&b| b as u64) + .map(|i| (i % modulo, i)) + .into_group_map() + .into_iter() + .map(|(key, vals)| (key, vals.into_iter().fold1(|acc, val| acc + val).unwrap())) + .collect::>(); + assert_eq!(lookup, group_map_lookup); + + for (&key, &sum) in lookup.iter() { + assert_eq!(sum, a.iter().map(|&b| b as u64).filter(|&val| val % modulo == key).sum::()); + } + } + + fn correct_grouping_map_by_collect_modulo_key(a: Vec, modulo: u8) -> () { + let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0` + let lookup_grouping_map = a.iter().copied().into_grouping_map_by(|i| i % modulo).collect::>(); + let lookup_group_map = a.iter().copied().map(|i| (i % modulo, i)).into_group_map(); + + assert_eq!(lookup_grouping_map, lookup_group_map); + } + + fn correct_grouping_map_by_max_modulo_key(a: Vec, modulo: u8) -> () { + let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0` + let lookup = a.iter().copied().into_grouping_map_by(|i| i % modulo).max(); + + let group_map_lookup = a.iter().copied() + .map(|i| (i % modulo, i)) + .into_group_map() + .into_iter() + .map(|(key, vals)| (key, vals.into_iter().max().unwrap())) + .collect::>(); + assert_eq!(lookup, group_map_lookup); + + for (&key, &max) in lookup.iter() { + assert_eq!(Some(max), a.iter().copied().filter(|&val| val % modulo == key).max()); + } + } + + fn correct_grouping_map_by_max_by_modulo_key(a: Vec, modulo: u8) -> () { + let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0` + let lookup = a.iter().copied().into_grouping_map_by(|i| i % modulo).max_by(|_, v1, v2| v1.cmp(v2)); + + let group_map_lookup = a.iter().copied() + .map(|i| (i % modulo, i)) + .into_group_map() + .into_iter() + .map(|(key, vals)| (key, vals.into_iter().max_by(|v1, v2| v1.cmp(v2)).unwrap())) + .collect::>(); + assert_eq!(lookup, group_map_lookup); + + for (&key, &max) in lookup.iter() { + assert_eq!(Some(max), a.iter().copied().filter(|&val| val % modulo == key).max_by(|v1, v2| v1.cmp(v2))); + } + } + + fn correct_grouping_map_by_max_by_key_modulo_key(a: Vec, modulo: u8) -> () { + let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0` + let lookup = a.iter().copied().into_grouping_map_by(|i| i % modulo).max_by_key(|_, &val| val); + + let group_map_lookup = a.iter().copied() + .map(|i| (i % modulo, i)) + .into_group_map() + .into_iter() + .map(|(key, vals)| (key, vals.into_iter().max_by_key(|&val| val).unwrap())) + .collect::>(); + assert_eq!(lookup, group_map_lookup); + + for (&key, &max) in lookup.iter() { + assert_eq!(Some(max), a.iter().copied().filter(|&val| val % modulo == key).max_by_key(|&val| val)); + } + } + + fn correct_grouping_map_by_min_modulo_key(a: Vec, modulo: u8) -> () { + let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0` + let lookup = a.iter().copied().into_grouping_map_by(|i| i % modulo).min(); + + let group_map_lookup = a.iter().copied() + .map(|i| (i % modulo, i)) + .into_group_map() + .into_iter() + .map(|(key, vals)| (key, vals.into_iter().min().unwrap())) + .collect::>(); + assert_eq!(lookup, group_map_lookup); + + for (&key, &min) in lookup.iter() { + assert_eq!(Some(min), a.iter().copied().filter(|&val| val % modulo == key).min()); + } + } + + fn correct_grouping_map_by_min_by_modulo_key(a: Vec, modulo: u8) -> () { + let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0` + let lookup = a.iter().copied().into_grouping_map_by(|i| i % modulo).min_by(|_, v1, v2| v1.cmp(v2)); + + let group_map_lookup = a.iter().copied() + .map(|i| (i % modulo, i)) + .into_group_map() + .into_iter() + .map(|(key, vals)| (key, vals.into_iter().min_by(|v1, v2| v1.cmp(v2)).unwrap())) + .collect::>(); + assert_eq!(lookup, group_map_lookup); + + for (&key, &min) in lookup.iter() { + assert_eq!(Some(min), a.iter().copied().filter(|&val| val % modulo == key).min_by(|v1, v2| v1.cmp(v2))); + } + } + + fn correct_grouping_map_by_min_by_key_modulo_key(a: Vec, modulo: u8) -> () { + let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0` + let lookup = a.iter().copied().into_grouping_map_by(|i| i % modulo).min_by_key(|_, &val| val); + + let group_map_lookup = a.iter().copied() + .map(|i| (i % modulo, i)) + .into_group_map() + .into_iter() + .map(|(key, vals)| (key, vals.into_iter().min_by_key(|&val| val).unwrap())) + .collect::>(); + assert_eq!(lookup, group_map_lookup); + + for (&key, &min) in lookup.iter() { + assert_eq!(Some(min), a.iter().copied().filter(|&val| val % modulo == key).min_by_key(|&val| val)); + } + } + + fn correct_grouping_map_by_minmax_modulo_key(a: Vec, modulo: u8) -> () { + let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0` + let lookup = a.iter().copied().into_grouping_map_by(|i| i % modulo).minmax(); + + let group_map_lookup = a.iter().copied() + .map(|i| (i % modulo, i)) + .into_group_map() + .into_iter() + .map(|(key, vals)| (key, vals.into_iter().minmax())) + .collect::>(); + assert_eq!(lookup, group_map_lookup); + + for (&key, &minmax) in lookup.iter() { + assert_eq!(minmax, a.iter().copied().filter(|&val| val % modulo == key).minmax()); + } + } + + fn correct_grouping_map_by_minmax_by_modulo_key(a: Vec, modulo: u8) -> () { + let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0` + let lookup = a.iter().copied().into_grouping_map_by(|i| i % modulo).minmax_by(|_, v1, v2| v1.cmp(v2)); + + let group_map_lookup = a.iter().copied() + .map(|i| (i % modulo, i)) + .into_group_map() + .into_iter() + .map(|(key, vals)| (key, vals.into_iter().minmax_by(|v1, v2| v1.cmp(v2)))) + .collect::>(); + assert_eq!(lookup, group_map_lookup); + + for (&key, &minmax) in lookup.iter() { + assert_eq!(minmax, a.iter().copied().filter(|&val| val % modulo == key).minmax_by(|v1, v2| v1.cmp(v2))); + } + } + + fn correct_grouping_map_by_minmax_by_key_modulo_key(a: Vec, modulo: u8) -> () { + let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0` + let lookup = a.iter().copied().into_grouping_map_by(|i| i % modulo).minmax_by_key(|_, &val| val); + + let group_map_lookup = a.iter().copied() + .map(|i| (i % modulo, i)) + .into_group_map() + .into_iter() + .map(|(key, vals)| (key, vals.into_iter().minmax_by_key(|&val| val))) + .collect::>(); + assert_eq!(lookup, group_map_lookup); + + for (&key, &minmax) in lookup.iter() { + assert_eq!(minmax, a.iter().copied().filter(|&val| val % modulo == key).minmax_by_key(|&val| val)); + } + } + + fn correct_grouping_map_by_sum_modulo_key(a: Vec, modulo: u8) -> () { + let modulo = if modulo == 0 { 1 } else { modulo } as u64; // Avoid `% 0` + let lookup = a.iter().map(|&b| b as u64) // Avoid overflows + .into_grouping_map_by(|i| i % modulo) + .sum(); + + let group_map_lookup = a.iter().map(|&b| b as u64) + .map(|i| (i % modulo, i)) + .into_group_map() + .into_iter() + .map(|(key, vals)| (key, vals.into_iter().sum())) + .collect::>(); + assert_eq!(lookup, group_map_lookup); + + for (&key, &sum) in lookup.iter() { + assert_eq!(sum, a.iter().map(|&b| b as u64).filter(|&val| val % modulo == key).sum::()); + } + } + + fn correct_grouping_map_by_product_modulo_key(a: Vec, modulo: u8) -> () { + let modulo = Wrapping(if modulo == 0 { 1 } else { modulo } as u64); // Avoid `% 0` + let lookup = a.iter().map(|&b| Wrapping(b as u64)) // Avoid overflows + .into_grouping_map_by(|i| i % modulo) + .product(); + + let group_map_lookup = a.iter().map(|&b| Wrapping(b as u64)) + .map(|i| (i % modulo, i)) + .into_group_map() + .into_iter() + .map(|(key, vals)| (key, vals.into_iter().product::>())) + .collect::>(); + assert_eq!(lookup, group_map_lookup); + + for (&key, &prod) in lookup.iter() { + assert_eq!( + prod, + a.iter() + .map(|&b| Wrapping(b as u64)) + .filter(|&val| val % modulo == key) + .product::>() + ); + } + } + + // This should check that if multiple elements are equally minimum or maximum + // then `max`, `min` and `minmax` pick the first minimum and the last maximum. + // This is to be consistent with `std::iter::max` and `std::iter::min`. + fn correct_grouping_map_by_min_max_minmax_order_modulo_key() -> () { + use itertools::MinMaxResult; + + let lookup = (0..=10) + .into_grouping_map_by(|_| 0) + .max_by(|_, _, _| Ordering::Equal); + + assert_eq!(lookup[&0], 10); + + let lookup = (0..=10) + .into_grouping_map_by(|_| 0) + .min_by(|_, _, _| Ordering::Equal); + + assert_eq!(lookup[&0], 0); + + let lookup = (0..=10) + .into_grouping_map_by(|_| 0) + .minmax_by(|_, _, _| Ordering::Equal); + + assert_eq!(lookup[&0], MinMaxResult::MinMax(0, 10)); + } +} + +quickcheck! { + fn counts(nums: Vec) -> TestResult { + let counts = nums.iter().counts(); + for (&item, &count) in counts.iter() { + #[allow(clippy::absurd_extreme_comparisons)] + if count <= 0 { + return TestResult::failed(); + } + if count != nums.iter().filter(|&x| x == item).count() { + return TestResult::failed(); + } + } + for item in nums.iter() { + if !counts.contains_key(item) { + return TestResult::failed(); + } + } + TestResult::passed() + } +} + +quickcheck! { + fn test_double_ended_zip_2(a: Vec, b: Vec) -> TestResult { + let mut x = + multizip((a.clone().into_iter(), b.clone().into_iter())) + .collect_vec(); + x.reverse(); + + let y = + multizip((a.into_iter(), b.into_iter())) + .rfold(Vec::new(), |mut vec, e| { vec.push(e); vec }); + + TestResult::from_bool(itertools::equal(x, y)) + } + + fn test_double_ended_zip_3(a: Vec, b: Vec, c: Vec) -> TestResult { + let mut x = + multizip((a.clone().into_iter(), b.clone().into_iter(), c.clone().into_iter())) + .collect_vec(); + x.reverse(); + + let y = + multizip((a.into_iter(), b.into_iter(), c.into_iter())) + .rfold(Vec::new(), |mut vec, e| { vec.push(e); vec }); + + TestResult::from_bool(itertools::equal(x, y)) + } +} + + +fn is_fused(mut it: I) -> bool +{ + for _ in it.by_ref() {} + for _ in 0..10{ + if it.next().is_some(){ + return false; + } + } + true +} + +quickcheck! { + fn fused_combination(a: Iter) -> bool + { + is_fused(a.clone().combinations(1)) && + is_fused(a.combinations(3)) + } + + fn fused_combination_with_replacement(a: Iter) -> bool + { + is_fused(a.clone().combinations_with_replacement(1)) && + is_fused(a.combinations_with_replacement(3)) + } + + fn fused_tuple_combination(a: Iter) -> bool + { + is_fused(a.clone().fuse().tuple_combinations::<(_,)>()) && + is_fused(a.fuse().tuple_combinations::<(_,_,_)>()) + } + + fn fused_unique(a: Iter) -> bool + { + is_fused(a.fuse().unique()) + } + + fn fused_unique_by(a: Iter) -> bool + { + is_fused(a.fuse().unique_by(|x| x % 100)) + } + + fn fused_interleave_shortest(a: Iter, b: Iter) -> bool + { + !is_fused(a.clone().interleave_shortest(b.clone())) && + is_fused(a.fuse().interleave_shortest(b.fuse())) + } + + fn fused_product(a: Iter, b: Iter) -> bool + { + is_fused(a.fuse().cartesian_product(b.fuse())) + } + + fn fused_merge(a: Iter, b: Iter) -> bool + { + is_fused(a.fuse().merge(b.fuse())) + } + + fn fused_filter_ok(a: Iter) -> bool + { + is_fused(a.map(|x| if x % 2 == 0 {Ok(x)} else {Err(x)} ) + .filter_ok(|x| x % 3 == 0) + .fuse()) + } + + fn fused_filter_map_ok(a: Iter) -> bool + { + is_fused(a.map(|x| if x % 2 == 0 {Ok(x)} else {Err(x)} ) + .filter_map_ok(|x| if x % 3 == 0 {Some(x / 3)} else {None}) + .fuse()) + } + + fn fused_positions(a: Iter) -> bool + { + !is_fused(a.clone().positions(|x|x%2==0)) && + is_fused(a.fuse().positions(|x|x%2==0)) + } + + fn fused_update(a: Iter) -> bool + { + !is_fused(a.clone().update(|x|*x+=1)) && + is_fused(a.fuse().update(|x|*x+=1)) + } + + fn fused_tuple_windows(a: Iter) -> bool + { + is_fused(a.fuse().tuple_windows::<(_,_)>()) + } + + fn fused_pad_using(a: Iter) -> bool + { + is_fused(a.fuse().pad_using(100,|_|0)) + } +} + +quickcheck! { + fn min_set_contains_min(a: Vec<(usize, char)>) -> bool { + let result_set = a.iter().min_set(); + if let Some(result_element) = a.iter().min() { + result_set.contains(&result_element) + } else { + result_set.is_empty() + } + } + + fn min_set_by_contains_min(a: Vec<(usize, char)>) -> bool { + let compare = |x: &&(usize, char), y: &&(usize, char)| x.1.cmp(&y.1); + let result_set = a.iter().min_set_by(compare); + if let Some(result_element) = a.iter().min_by(compare) { + result_set.contains(&result_element) + } else { + result_set.is_empty() + } + } + + fn min_set_by_key_contains_min(a: Vec<(usize, char)>) -> bool { + let key = |x: &&(usize, char)| x.1; + let result_set = a.iter().min_set_by_key(&key); + if let Some(result_element) = a.iter().min_by_key(&key) { + result_set.contains(&result_element) + } else { + result_set.is_empty() + } + } + + fn max_set_contains_max(a: Vec<(usize, char)>) -> bool { + let result_set = a.iter().max_set(); + if let Some(result_element) = a.iter().max() { + result_set.contains(&result_element) + } else { + result_set.is_empty() + } + } + + fn max_set_by_contains_max(a: Vec<(usize, char)>) -> bool { + let compare = |x: &&(usize, char), y: &&(usize, char)| x.1.cmp(&y.1); + let result_set = a.iter().max_set_by(compare); + if let Some(result_element) = a.iter().max_by(compare) { + result_set.contains(&result_element) + } else { + result_set.is_empty() + } + } + + fn max_set_by_key_contains_max(a: Vec<(usize, char)>) -> bool { + let key = |x: &&(usize, char)| x.1; + let result_set = a.iter().max_set_by_key(&key); + if let Some(result_element) = a.iter().max_by_key(&key) { + result_set.contains(&result_element) + } else { + result_set.is_empty() + } + } +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/tests/specializations.rs temporalio-1.3.0/vendor/itertools-0.10.5/tests/specializations.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/tests/specializations.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/tests/specializations.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,153 @@ +use itertools::Itertools; +use std::fmt::Debug; +use quickcheck::quickcheck; + +struct Unspecialized(I); +impl Iterator for Unspecialized +where + I: Iterator, +{ + type Item = I::Item; + + #[inline(always)] + fn next(&mut self) -> Option { + self.0.next() + } +} + +macro_rules! check_specialized { + ($src:expr, |$it:pat| $closure:expr) => { + let $it = $src.clone(); + let v1 = $closure; + + let $it = Unspecialized($src.clone()); + let v2 = $closure; + + assert_eq!(v1, v2); + } +} + +fn test_specializations( + it: &Iter, +) where + IterItem: Eq + Debug + Clone, + Iter: Iterator + Clone, +{ + check_specialized!(it, |i| i.count()); + check_specialized!(it, |i| i.last()); + check_specialized!(it, |i| i.collect::>()); + check_specialized!(it, |i| { + let mut parameters_from_fold = vec![]; + let fold_result = i.fold(vec![], |mut acc, v: IterItem| { + parameters_from_fold.push((acc.clone(), v.clone())); + acc.push(v); + acc + }); + (parameters_from_fold, fold_result) + }); + check_specialized!(it, |mut i| { + let mut parameters_from_all = vec![]; + let first = i.next(); + let all_result = i.all(|x| { + parameters_from_all.push(x.clone()); + Some(x)==first + }); + (parameters_from_all, all_result) + }); + let size = it.clone().count(); + for n in 0..size + 2 { + check_specialized!(it, |mut i| i.nth(n)); + } + // size_hint is a bit harder to check + let mut it_sh = it.clone(); + for n in 0..size + 2 { + let len = it_sh.clone().count(); + let (min, max) = it_sh.size_hint(); + assert_eq!(size - n.min(size), len); + assert!(min <= len); + if let Some(max) = max { + assert!(len <= max); + } + it_sh.next(); + } +} + +quickcheck! { + fn intersperse(v: Vec) -> () { + test_specializations(&v.into_iter().intersperse(0)); + } +} + +quickcheck! { + fn put_back_qc(test_vec: Vec) -> () { + test_specializations(&itertools::put_back(test_vec.iter())); + let mut pb = itertools::put_back(test_vec.into_iter()); + pb.put_back(1); + test_specializations(&pb); + } +} + +quickcheck! { + fn merge_join_by_qc(i1: Vec, i2: Vec) -> () { + test_specializations(&i1.into_iter().merge_join_by(i2.into_iter(), std::cmp::Ord::cmp)); + } +} + +quickcheck! { + fn map_into(v: Vec) -> () { + test_specializations(&v.into_iter().map_into::()); + } +} + +quickcheck! { + fn map_ok(v: Vec>) -> () { + test_specializations(&v.into_iter().map_ok(|u| u.checked_add(1))); + } +} + +quickcheck! { + fn process_results(v: Vec>) -> () { + helper(v.iter().copied()); + helper(v.iter().copied().filter(Result::is_ok)); + + fn helper(it: impl Iterator> + Clone) { + macro_rules! check_results_specialized { + ($src:expr, |$it:pat| $closure:expr) => { + assert_eq!( + itertools::process_results($src.clone(), |$it| $closure), + itertools::process_results($src.clone(), |i| { + let $it = Unspecialized(i); + $closure + }), + ) + } + } + + check_results_specialized!(it, |i| i.count()); + check_results_specialized!(it, |i| i.last()); + check_results_specialized!(it, |i| i.collect::>()); + check_results_specialized!(it, |i| { + let mut parameters_from_fold = vec![]; + let fold_result = i.fold(vec![], |mut acc, v| { + parameters_from_fold.push((acc.clone(), v)); + acc.push(v); + acc + }); + (parameters_from_fold, fold_result) + }); + check_results_specialized!(it, |mut i| { + let mut parameters_from_all = vec![]; + let first = i.next(); + let all_result = i.all(|x| { + parameters_from_all.push(x); + Some(x)==first + }); + (parameters_from_all, all_result) + }); + let size = it.clone().count(); + for n in 0..size + 2 { + check_results_specialized!(it, |mut i| i.nth(n)); + } + } + } +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/tests/test_core.rs temporalio-1.3.0/vendor/itertools-0.10.5/tests/test_core.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/tests/test_core.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/tests/test_core.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,317 @@ +//! Licensed under the Apache License, Version 2.0 +//! https://www.apache.org/licenses/LICENSE-2.0 or the MIT license +//! https://opensource.org/licenses/MIT, at your +//! option. This file may not be copied, modified, or distributed +//! except according to those terms. +#![no_std] + +use core::iter; +use itertools as it; +use crate::it::Itertools; +use crate::it::interleave; +use crate::it::intersperse; +use crate::it::intersperse_with; +use crate::it::multizip; +use crate::it::free::put_back; +use crate::it::iproduct; +use crate::it::izip; +use crate::it::chain; + +#[test] +fn product2() { + let s = "αβ"; + + let mut prod = iproduct!(s.chars(), 0..2); + assert!(prod.next() == Some(('α', 0))); + assert!(prod.next() == Some(('α', 1))); + assert!(prod.next() == Some(('β', 0))); + assert!(prod.next() == Some(('β', 1))); + assert!(prod.next() == None); +} + +#[test] +fn product_temporary() { + for (_x, _y, _z) in iproduct!( + [0, 1, 2].iter().cloned(), + [0, 1, 2].iter().cloned(), + [0, 1, 2].iter().cloned()) + { + // ok + } +} + + +#[test] +fn izip_macro() { + let mut zip = izip!(2..3); + assert!(zip.next() == Some(2)); + assert!(zip.next().is_none()); + + let mut zip = izip!(0..3, 0..2, 0..2i8); + for i in 0..2 { + assert!((i as usize, i, i as i8) == zip.next().unwrap()); + } + assert!(zip.next().is_none()); + + let xs: [isize; 0] = []; + let mut zip = izip!(0..3, 0..2, 0..2i8, &xs); + assert!(zip.next().is_none()); +} + +#[test] +fn izip2() { + let _zip1: iter::Zip<_, _> = izip!(1.., 2..); + let _zip2: iter::Zip<_, _> = izip!(1.., 2.., ); +} + +#[test] +fn izip3() { + let mut zip: iter::Map, _> = izip!(0..3, 0..2, 0..2i8); + for i in 0..2 { + assert!((i as usize, i, i as i8) == zip.next().unwrap()); + } + assert!(zip.next().is_none()); +} + +#[test] +fn multizip3() { + let mut zip = multizip((0..3, 0..2, 0..2i8)); + for i in 0..2 { + assert!((i as usize, i, i as i8) == zip.next().unwrap()); + } + assert!(zip.next().is_none()); + + let xs: [isize; 0] = []; + let mut zip = multizip((0..3, 0..2, 0..2i8, xs.iter())); + assert!(zip.next().is_none()); + + for (_, _, _, _, _) in multizip((0..3, 0..2, xs.iter(), &xs, xs.to_vec())) { + /* test compiles */ + } +} + +#[test] +fn chain_macro() { + let mut chain = chain!(2..3); + assert!(chain.next() == Some(2)); + assert!(chain.next().is_none()); + + let mut chain = chain!(0..2, 2..3, 3..5i8); + for i in 0..5i8 { + assert_eq!(Some(i), chain.next()); + } + assert!(chain.next().is_none()); + + let mut chain = chain!(); + assert_eq!(chain.next(), Option::<()>::None); +} + +#[test] +fn chain2() { + let _ = chain!(1.., 2..); + let _ = chain!(1.., 2.., ); +} + +#[test] +fn write_to() { + let xs = [7, 9, 8]; + let mut ys = [0; 5]; + let cnt = ys.iter_mut().set_from(xs.iter().copied()); + assert!(cnt == xs.len()); + assert!(ys == [7, 9, 8, 0, 0]); + + let cnt = ys.iter_mut().set_from(0..10); + assert!(cnt == ys.len()); + assert!(ys == [0, 1, 2, 3, 4]); +} + +#[test] +fn test_interleave() { + let xs: [u8; 0] = []; + let ys = [7u8, 9, 8, 10]; + let zs = [2u8, 77]; + let it = interleave(xs.iter(), ys.iter()); + it::assert_equal(it, ys.iter()); + + let rs = [7u8, 2, 9, 77, 8, 10]; + let it = interleave(ys.iter(), zs.iter()); + it::assert_equal(it, rs.iter()); +} + +#[test] +fn test_intersperse() { + let xs = [1u8, 2, 3]; + let ys = [1u8, 0, 2, 0, 3]; + let it = intersperse(&xs, &0); + it::assert_equal(it, ys.iter()); +} + +#[test] +fn test_intersperse_with() { + let xs = [1u8, 2, 3]; + let ys = [1u8, 10, 2, 10, 3]; + let i = 10; + let it = intersperse_with(&xs, || &i); + it::assert_equal(it, ys.iter()); +} + +#[allow(deprecated)] +#[test] +fn foreach() { + let xs = [1i32, 2, 3]; + let mut sum = 0; + xs.iter().foreach(|elt| sum += *elt); + assert!(sum == 6); +} + +#[test] +fn dropping() { + let xs = [1, 2, 3]; + let mut it = xs.iter().dropping(2); + assert_eq!(it.next(), Some(&3)); + assert!(it.next().is_none()); + let mut it = xs.iter().dropping(5); + assert!(it.next().is_none()); +} + +#[test] +fn batching() { + let xs = [0, 1, 2, 1, 3]; + let ys = [(0, 1), (2, 1)]; + + // An iterator that gathers elements up in pairs + let pit = xs + .iter() + .cloned() + .batching(|it| it.next().and_then(|x| it.next().map(|y| (x, y)))); + it::assert_equal(pit, ys.iter().cloned()); +} + +#[test] +fn test_put_back() { + let xs = [0, 1, 1, 1, 2, 1, 3, 3]; + let mut pb = put_back(xs.iter().cloned()); + pb.next(); + pb.put_back(1); + pb.put_back(0); + it::assert_equal(pb, xs.iter().cloned()); +} + +#[allow(deprecated)] +#[test] +fn step() { + it::assert_equal((0..10).step(1), 0..10); + it::assert_equal((0..10).step(2), (0..10).filter(|x: &i32| *x % 2 == 0)); + it::assert_equal((0..10).step(10), 0..1); +} + +#[allow(deprecated)] +#[test] +fn merge() { + it::assert_equal((0..10).step(2).merge((1..10).step(2)), 0..10); +} + + +#[test] +fn repeatn() { + let s = "α"; + let mut it = it::repeat_n(s, 3); + assert_eq!(it.len(), 3); + assert_eq!(it.next(), Some(s)); + assert_eq!(it.next(), Some(s)); + assert_eq!(it.next(), Some(s)); + assert_eq!(it.next(), None); + assert_eq!(it.next(), None); +} + +#[test] +fn count_clones() { + // Check that RepeatN only clones N - 1 times. + + use core::cell::Cell; + #[derive(PartialEq, Debug)] + struct Foo { + n: Cell + } + + impl Clone for Foo + { + fn clone(&self) -> Self + { + let n = self.n.get(); + self.n.set(n + 1); + Foo { n: Cell::new(n + 1) } + } + } + + + for n in 0..10 { + let f = Foo{n: Cell::new(0)}; + let it = it::repeat_n(f, n); + // drain it + let last = it.last(); + if n == 0 { + assert_eq!(last, None); + } else { + assert_eq!(last, Some(Foo{n: Cell::new(n - 1)})); + } + } +} + +#[test] +fn part() { + let mut data = [7, 1, 1, 9, 1, 1, 3]; + let i = it::partition(&mut data, |elt| *elt >= 3); + assert_eq!(i, 3); + assert_eq!(data, [7, 3, 9, 1, 1, 1, 1]); + + let i = it::partition(&mut data, |elt| *elt == 1); + assert_eq!(i, 4); + assert_eq!(data, [1, 1, 1, 1, 9, 3, 7]); + + let mut data = [1, 2, 3, 4, 5, 6, 7, 8, 9]; + let i = it::partition(&mut data, |elt| *elt % 3 == 0); + assert_eq!(i, 3); + assert_eq!(data, [9, 6, 3, 4, 5, 2, 7, 8, 1]); +} + +#[test] +fn tree_fold1() { + for i in 0..100 { + assert_eq!((0..i).tree_fold1(|x, y| x + y), (0..i).fold1(|x, y| x + y)); + } +} + +#[test] +fn exactly_one() { + assert_eq!((0..10).filter(|&x| x == 2).exactly_one().unwrap(), 2); + assert!((0..10).filter(|&x| x > 1 && x < 4).exactly_one().unwrap_err().eq(2..4)); + assert!((0..10).filter(|&x| x > 1 && x < 5).exactly_one().unwrap_err().eq(2..5)); + assert!((0..10).filter(|&_| false).exactly_one().unwrap_err().eq(0..0)); +} + +#[test] +fn at_most_one() { + assert_eq!((0..10).filter(|&x| x == 2).at_most_one().unwrap(), Some(2)); + assert!((0..10).filter(|&x| x > 1 && x < 4).at_most_one().unwrap_err().eq(2..4)); + assert!((0..10).filter(|&x| x > 1 && x < 5).at_most_one().unwrap_err().eq(2..5)); + assert_eq!((0..10).filter(|&_| false).at_most_one().unwrap(), None); +} + +#[test] +fn sum1() { + let v: &[i32] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + assert_eq!(v[..0].iter().cloned().sum1::(), None); + assert_eq!(v[1..2].iter().cloned().sum1::(), Some(1)); + assert_eq!(v[1..3].iter().cloned().sum1::(), Some(3)); + assert_eq!(v.iter().cloned().sum1::(), Some(55)); +} + +#[test] +fn product1() { + let v: &[i32] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + assert_eq!(v[..0].iter().cloned().product1::(), None); + assert_eq!(v[..1].iter().cloned().product1::(), Some(0)); + assert_eq!(v[1..3].iter().cloned().product1::(), Some(2)); + assert_eq!(v[1..5].iter().cloned().product1::(), Some(24)); +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/tests/test_std.rs temporalio-1.3.0/vendor/itertools-0.10.5/tests/test_std.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/tests/test_std.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/tests/test_std.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1168 @@ +use quickcheck as qc; +use rand::{distributions::{Distribution, Standard}, Rng, SeedableRng, rngs::StdRng}; +use rand::{seq::SliceRandom, thread_rng}; +use std::{cmp::min, fmt::Debug, marker::PhantomData}; +use itertools as it; +use crate::it::Itertools; +use crate::it::ExactlyOneError; +use crate::it::multizip; +use crate::it::multipeek; +use crate::it::peek_nth; +use crate::it::free::rciter; +use crate::it::free::put_back_n; +use crate::it::FoldWhile; +use crate::it::cloned; +use crate::it::iproduct; +use crate::it::izip; + +#[test] +fn product3() { + let prod = iproduct!(0..3, 0..2, 0..2); + assert_eq!(prod.size_hint(), (12, Some(12))); + let v = prod.collect_vec(); + for i in 0..3 { + for j in 0..2 { + for k in 0..2 { + assert!((i, j, k) == v[(i * 2 * 2 + j * 2 + k) as usize]); + } + } + } + for (_, _, _, _) in iproduct!(0..3, 0..2, 0..2, 0..3) { + /* test compiles */ + } +} + +#[test] +fn interleave_shortest() { + let v0: Vec = vec![0, 2, 4]; + let v1: Vec = vec![1, 3, 5, 7]; + let it = v0.into_iter().interleave_shortest(v1.into_iter()); + assert_eq!(it.size_hint(), (6, Some(6))); + assert_eq!(it.collect_vec(), vec![0, 1, 2, 3, 4, 5]); + + let v0: Vec = vec![0, 2, 4, 6, 8]; + let v1: Vec = vec![1, 3, 5]; + let it = v0.into_iter().interleave_shortest(v1.into_iter()); + assert_eq!(it.size_hint(), (7, Some(7))); + assert_eq!(it.collect_vec(), vec![0, 1, 2, 3, 4, 5, 6]); + + let i0 = ::std::iter::repeat(0); + let v1: Vec<_> = vec![1, 3, 5]; + let it = i0.interleave_shortest(v1.into_iter()); + assert_eq!(it.size_hint(), (7, Some(7))); + + let v0: Vec<_> = vec![0, 2, 4]; + let i1 = ::std::iter::repeat(1); + let it = v0.into_iter().interleave_shortest(i1); + assert_eq!(it.size_hint(), (6, Some(6))); +} + +#[test] +fn duplicates_by() { + let xs = ["aaa", "bbbbb", "aa", "ccc", "bbbb", "aaaaa", "cccc"]; + let ys = ["aa", "bbbb", "cccc"]; + it::assert_equal(ys.iter(), xs.iter().duplicates_by(|x| x[..2].to_string())); + it::assert_equal(ys.iter(), xs.iter().rev().duplicates_by(|x| x[..2].to_string()).rev()); + let ys_rev = ["ccc", "aa", "bbbbb"]; + it::assert_equal(ys_rev.iter(), xs.iter().duplicates_by(|x| x[..2].to_string()).rev()); +} + +#[test] +fn duplicates() { + let xs = [0, 1, 2, 3, 2, 1, 3]; + let ys = [2, 1, 3]; + it::assert_equal(ys.iter(), xs.iter().duplicates()); + it::assert_equal(ys.iter(), xs.iter().rev().duplicates().rev()); + let ys_rev = [3, 2, 1]; + it::assert_equal(ys_rev.iter(), xs.iter().duplicates().rev()); + + let xs = [0, 1, 0, 1]; + let ys = [0, 1]; + it::assert_equal(ys.iter(), xs.iter().duplicates()); + it::assert_equal(ys.iter(), xs.iter().rev().duplicates().rev()); + let ys_rev = [1, 0]; + it::assert_equal(ys_rev.iter(), xs.iter().duplicates().rev()); + + let xs = vec![0, 1, 2, 1, 2]; + let ys = vec![1, 2]; + assert_eq!(ys, xs.iter().duplicates().cloned().collect_vec()); + assert_eq!(ys, xs.iter().rev().duplicates().rev().cloned().collect_vec()); + let ys_rev = vec![2, 1]; + assert_eq!(ys_rev, xs.iter().duplicates().rev().cloned().collect_vec()); +} + +#[test] +fn unique_by() { + let xs = ["aaa", "bbbbb", "aa", "ccc", "bbbb", "aaaaa", "cccc"]; + let ys = ["aaa", "bbbbb", "ccc"]; + it::assert_equal(ys.iter(), xs.iter().unique_by(|x| x[..2].to_string())); + it::assert_equal(ys.iter(), xs.iter().rev().unique_by(|x| x[..2].to_string()).rev()); + let ys_rev = ["cccc", "aaaaa", "bbbb"]; + it::assert_equal(ys_rev.iter(), xs.iter().unique_by(|x| x[..2].to_string()).rev()); +} + +#[test] +fn unique() { + let xs = [0, 1, 2, 3, 2, 1, 3]; + let ys = [0, 1, 2, 3]; + it::assert_equal(ys.iter(), xs.iter().unique()); + it::assert_equal(ys.iter(), xs.iter().rev().unique().rev()); + let ys_rev = [3, 1, 2, 0]; + it::assert_equal(ys_rev.iter(), xs.iter().unique().rev()); + + let xs = [0, 1]; + let ys = [0, 1]; + it::assert_equal(ys.iter(), xs.iter().unique()); + it::assert_equal(ys.iter(), xs.iter().rev().unique().rev()); + let ys_rev = [1, 0]; + it::assert_equal(ys_rev.iter(), xs.iter().unique().rev()); +} + +#[test] +fn intersperse() { + let xs = ["a", "", "b", "c"]; + let v: Vec<&str> = xs.iter().cloned().intersperse(", ").collect(); + let text: String = v.concat(); + assert_eq!(text, "a, , b, c".to_string()); + + let ys = [0, 1, 2, 3]; + let mut it = ys[..0].iter().copied().intersperse(1); + assert!(it.next() == None); +} + +#[test] +fn dedup() { + let xs = [0, 1, 1, 1, 2, 1, 3, 3]; + let ys = [0, 1, 2, 1, 3]; + it::assert_equal(ys.iter(), xs.iter().dedup()); + let xs = [0, 0, 0, 0, 0]; + let ys = [0]; + it::assert_equal(ys.iter(), xs.iter().dedup()); + + let xs = [0, 1, 1, 1, 2, 1, 3, 3]; + let ys = [0, 1, 2, 1, 3]; + let mut xs_d = Vec::new(); + xs.iter().dedup().fold((), |(), &elt| xs_d.push(elt)); + assert_eq!(&xs_d, &ys); +} + +#[test] +fn coalesce() { + let data = vec![-1., -2., -3., 3., 1., 0., -1.]; + let it = data.iter().cloned().coalesce(|x, y| + if (x >= 0.) == (y >= 0.) { + Ok(x + y) + } else { + Err((x, y)) + } + ); + itertools::assert_equal(it.clone(), vec![-6., 4., -1.]); + assert_eq!( + it.fold(vec![], |mut v, n| { + v.push(n); + v + }), + vec![-6., 4., -1.] + ); +} + +#[test] +fn dedup_by() { + let xs = [(0, 0), (0, 1), (1, 1), (2, 1), (0, 2), (3, 1), (0, 3), (1, 3)]; + let ys = [(0, 0), (0, 1), (0, 2), (3, 1), (0, 3)]; + it::assert_equal(ys.iter(), xs.iter().dedup_by(|x, y| x.1==y.1)); + let xs = [(0, 1), (0, 2), (0, 3), (0, 4), (0, 5)]; + let ys = [(0, 1)]; + it::assert_equal(ys.iter(), xs.iter().dedup_by(|x, y| x.0==y.0)); + + let xs = [(0, 0), (0, 1), (1, 1), (2, 1), (0, 2), (3, 1), (0, 3), (1, 3)]; + let ys = [(0, 0), (0, 1), (0, 2), (3, 1), (0, 3)]; + let mut xs_d = Vec::new(); + xs.iter().dedup_by(|x, y| x.1==y.1).fold((), |(), &elt| xs_d.push(elt)); + assert_eq!(&xs_d, &ys); +} + +#[test] +fn dedup_with_count() { + let xs: [i32; 8] = [0, 1, 1, 1, 2, 1, 3, 3]; + let ys: [(usize, &i32); 5] = [(1, &0), (3, &1), (1, &2), (1, &1), (2, &3)]; + + it::assert_equal(ys.iter().cloned(), xs.iter().dedup_with_count()); + + let xs: [i32; 5] = [0, 0, 0, 0, 0]; + let ys: [(usize, &i32); 1] = [(5, &0)]; + + it::assert_equal(ys.iter().cloned(), xs.iter().dedup_with_count()); +} + + +#[test] +fn dedup_by_with_count() { + let xs = [(0, 0), (0, 1), (1, 1), (2, 1), (0, 2), (3, 1), (0, 3), (1, 3)]; + let ys = [(1, &(0, 0)), (3, &(0, 1)), (1, &(0, 2)), (1, &(3, 1)), (2, &(0, 3))]; + + it::assert_equal(ys.iter().cloned(), xs.iter().dedup_by_with_count(|x, y| x.1==y.1)); + + let xs = [(0, 1), (0, 2), (0, 3), (0, 4), (0, 5)]; + let ys = [( 5, &(0, 1))]; + + it::assert_equal(ys.iter().cloned(), xs.iter().dedup_by_with_count(|x, y| x.0==y.0)); +} + +#[test] +fn all_equal() { + assert!("".chars().all_equal()); + assert!("A".chars().all_equal()); + assert!(!"AABBCCC".chars().all_equal()); + assert!("AAAAAAA".chars().all_equal()); + for (_key, mut sub) in &"AABBCCC".chars().group_by(|&x| x) { + assert!(sub.all_equal()); + } +} + +#[test] +fn all_unique() { + assert!("ABCDEFGH".chars().all_unique()); + assert!(!"ABCDEFGA".chars().all_unique()); + assert!(::std::iter::empty::().all_unique()); +} + +#[test] +fn test_put_back_n() { + let xs = [0, 1, 1, 1, 2, 1, 3, 3]; + let mut pb = put_back_n(xs.iter().cloned()); + pb.next(); + pb.next(); + pb.put_back(1); + pb.put_back(0); + it::assert_equal(pb, xs.iter().cloned()); +} + +#[test] +fn tee() { + let xs = [0, 1, 2, 3]; + let (mut t1, mut t2) = xs.iter().cloned().tee(); + assert_eq!(t1.next(), Some(0)); + assert_eq!(t2.next(), Some(0)); + assert_eq!(t1.next(), Some(1)); + assert_eq!(t1.next(), Some(2)); + assert_eq!(t1.next(), Some(3)); + assert_eq!(t1.next(), None); + assert_eq!(t2.next(), Some(1)); + assert_eq!(t2.next(), Some(2)); + assert_eq!(t1.next(), None); + assert_eq!(t2.next(), Some(3)); + assert_eq!(t2.next(), None); + assert_eq!(t1.next(), None); + assert_eq!(t2.next(), None); + + let (t1, t2) = xs.iter().cloned().tee(); + it::assert_equal(t1, xs.iter().cloned()); + it::assert_equal(t2, xs.iter().cloned()); + + let (t1, t2) = xs.iter().cloned().tee(); + it::assert_equal(t1.zip(t2), xs.iter().cloned().zip(xs.iter().cloned())); +} + + +#[test] +fn test_rciter() { + let xs = [0, 1, 1, 1, 2, 1, 3, 5, 6]; + + let mut r1 = rciter(xs.iter().cloned()); + let mut r2 = r1.clone(); + assert_eq!(r1.next(), Some(0)); + assert_eq!(r2.next(), Some(1)); + let mut z = r1.zip(r2); + assert_eq!(z.next(), Some((1, 1))); + assert_eq!(z.next(), Some((2, 1))); + assert_eq!(z.next(), Some((3, 5))); + assert_eq!(z.next(), None); + + // test intoiterator + let r1 = rciter(0..5); + let mut z = izip!(&r1, r1); + assert_eq!(z.next(), Some((0, 1))); +} + +#[allow(deprecated)] +#[test] +fn trait_pointers() { + struct ByRef<'r, I: ?Sized>(&'r mut I) ; + + impl<'r, X, I: ?Sized> Iterator for ByRef<'r, I> where + I: 'r + Iterator + { + type Item = X; + fn next(&mut self) -> Option + { + self.0.next() + } + } + + let mut it = Box::new(0..10) as Box>; + assert_eq!(it.next(), Some(0)); + + { + /* make sure foreach works on non-Sized */ + let jt: &mut dyn Iterator = &mut *it; + assert_eq!(jt.next(), Some(1)); + + { + let mut r = ByRef(jt); + assert_eq!(r.next(), Some(2)); + } + + assert_eq!(jt.find_position(|x| *x == 4), Some((1, 4))); + jt.foreach(|_| ()); + } +} + +#[test] +fn merge_by() { + let odd : Vec<(u32, &str)> = vec![(1, "hello"), (3, "world"), (5, "!")]; + let even = vec![(2, "foo"), (4, "bar"), (6, "baz")]; + let expected = vec![(1, "hello"), (2, "foo"), (3, "world"), (4, "bar"), (5, "!"), (6, "baz")]; + let results = odd.iter().merge_by(even.iter(), |a, b| a.0 <= b.0); + it::assert_equal(results, expected.iter()); +} + +#[test] +fn merge_by_btree() { + use std::collections::BTreeMap; + let mut bt1 = BTreeMap::new(); + bt1.insert("hello", 1); + bt1.insert("world", 3); + let mut bt2 = BTreeMap::new(); + bt2.insert("foo", 2); + bt2.insert("bar", 4); + let results = bt1.into_iter().merge_by(bt2.into_iter(), |a, b| a.0 <= b.0 ); + let expected = vec![("bar", 4), ("foo", 2), ("hello", 1), ("world", 3)]; + it::assert_equal(results, expected.into_iter()); +} + +#[allow(deprecated)] +#[test] +fn kmerge() { + let its = (0..4).map(|s| (s..10).step(4)); + + it::assert_equal(its.kmerge(), 0..10); +} + +#[allow(deprecated)] +#[test] +fn kmerge_2() { + let its = vec![3, 2, 1, 0].into_iter().map(|s| (s..10).step(4)); + + it::assert_equal(its.kmerge(), 0..10); +} + +#[test] +fn kmerge_empty() { + let its = (0..4).map(|_| 0..0); + assert_eq!(its.kmerge().next(), None); +} + +#[test] +fn kmerge_size_hint() { + let its = (0..5).map(|_| (0..10)); + assert_eq!(its.kmerge().size_hint(), (50, Some(50))); +} + +#[test] +fn kmerge_empty_size_hint() { + let its = (0..5).map(|_| (0..0)); + assert_eq!(its.kmerge().size_hint(), (0, Some(0))); +} + +#[test] +fn join() { + let many = [1, 2, 3]; + let one = [1]; + let none: Vec = vec![]; + + assert_eq!(many.iter().join(", "), "1, 2, 3"); + assert_eq!( one.iter().join(", "), "1"); + assert_eq!(none.iter().join(", "), ""); +} + +#[test] +fn sorted_unstable_by() { + let sc = [3, 4, 1, 2].iter().cloned().sorted_by(|&a, &b| { + a.cmp(&b) + }); + it::assert_equal(sc, vec![1, 2, 3, 4]); + + let v = (0..5).sorted_unstable_by(|&a, &b| a.cmp(&b).reverse()); + it::assert_equal(v, vec![4, 3, 2, 1, 0]); +} + +#[test] +fn sorted_unstable_by_key() { + let sc = [3, 4, 1, 2].iter().cloned().sorted_unstable_by_key(|&x| x); + it::assert_equal(sc, vec![1, 2, 3, 4]); + + let v = (0..5).sorted_unstable_by_key(|&x| -x); + it::assert_equal(v, vec![4, 3, 2, 1, 0]); +} + +#[test] +fn sorted_by() { + let sc = [3, 4, 1, 2].iter().cloned().sorted_by(|&a, &b| { + a.cmp(&b) + }); + it::assert_equal(sc, vec![1, 2, 3, 4]); + + let v = (0..5).sorted_by(|&a, &b| a.cmp(&b).reverse()); + it::assert_equal(v, vec![4, 3, 2, 1, 0]); +} + +qc::quickcheck! { + fn k_smallest_range(n: u64, m: u16, k: u16) -> () { + // u16 is used to constrain k and m to 0..2¹â¶, + // otherwise the test could use too much memory. + let (k, m) = (k as u64, m as u64); + + // Generate a random permutation of n..n+m + let i = { + let mut v: Vec = (n..n.saturating_add(m)).collect(); + v.shuffle(&mut thread_rng()); + v.into_iter() + }; + + // Check that taking the k smallest elements yields n..n+min(k, m) + it::assert_equal( + i.k_smallest(k as usize), + n..n.saturating_add(min(k, m)) + ); + } +} + +#[derive(Clone, Debug)] +struct RandIter { + idx: usize, + len: usize, + rng: R, + _t: PhantomData +} + +impl Iterator for RandIter +where Standard: Distribution { + type Item = T; + fn next(&mut self) -> Option { + if self.idx == self.len { + None + } else { + self.idx += 1; + Some(self.rng.gen()) + } + } +} + +impl qc::Arbitrary for RandIter { + fn arbitrary(g: &mut G) -> Self { + RandIter { + idx: 0, + len: g.size(), + rng: R::seed_from_u64(g.next_u64()), + _t : PhantomData{}, + } + } +} + +// Check that taking the k smallest is the same as +// sorting then taking the k first elements +fn k_smallest_sort(i: I, k: u16) +where + I: Iterator + Clone, + I::Item: Ord + Debug, +{ + let j = i.clone(); + let k = k as usize; + it::assert_equal( + i.k_smallest(k), + j.sorted().take(k) + ) +} + +macro_rules! generic_test { + ($f:ident, $($t:ty),+) => { + $(paste::item! { + qc::quickcheck! { + fn [< $f _ $t >](i: RandIter<$t>, k: u16) -> () { + $f(i, k) + } + } + })+ + }; +} + +generic_test!(k_smallest_sort, u8, u16, u32, u64, i8, i16, i32, i64); + +#[test] +fn sorted_by_key() { + let sc = [3, 4, 1, 2].iter().cloned().sorted_by_key(|&x| x); + it::assert_equal(sc, vec![1, 2, 3, 4]); + + let v = (0..5).sorted_by_key(|&x| -x); + it::assert_equal(v, vec![4, 3, 2, 1, 0]); +} + +#[test] +fn sorted_by_cached_key() { + // Track calls to key function + let mut ncalls = 0; + + let sorted = [3, 4, 1, 2].iter().cloned().sorted_by_cached_key(|&x| { + ncalls += 1; + x.to_string() + }); + it::assert_equal(sorted, vec![1, 2, 3, 4]); + // Check key function called once per element + assert_eq!(ncalls, 4); + + let mut ncalls = 0; + + let sorted = (0..5).sorted_by_cached_key(|&x| { + ncalls += 1; + -x + }); + it::assert_equal(sorted, vec![4, 3, 2, 1, 0]); + // Check key function called once per element + assert_eq!(ncalls, 5); +} + +#[test] +fn test_multipeek() { + let nums = vec![1u8,2,3,4,5]; + + let mp = multipeek(nums.iter().copied()); + assert_eq!(nums, mp.collect::>()); + + let mut mp = multipeek(nums.iter().copied()); + assert_eq!(mp.peek(), Some(&1)); + assert_eq!(mp.next(), Some(1)); + assert_eq!(mp.peek(), Some(&2)); + assert_eq!(mp.peek(), Some(&3)); + assert_eq!(mp.next(), Some(2)); + assert_eq!(mp.peek(), Some(&3)); + assert_eq!(mp.peek(), Some(&4)); + assert_eq!(mp.peek(), Some(&5)); + assert_eq!(mp.peek(), None); + assert_eq!(mp.next(), Some(3)); + assert_eq!(mp.next(), Some(4)); + assert_eq!(mp.peek(), Some(&5)); + assert_eq!(mp.peek(), None); + assert_eq!(mp.next(), Some(5)); + assert_eq!(mp.next(), None); + assert_eq!(mp.peek(), None); +} + +#[test] +fn test_multipeek_reset() { + let data = [1, 2, 3, 4]; + + let mut mp = multipeek(cloned(&data)); + assert_eq!(mp.peek(), Some(&1)); + assert_eq!(mp.next(), Some(1)); + assert_eq!(mp.peek(), Some(&2)); + assert_eq!(mp.peek(), Some(&3)); + mp.reset_peek(); + assert_eq!(mp.peek(), Some(&2)); + assert_eq!(mp.next(), Some(2)); +} + +#[test] +fn test_multipeek_peeking_next() { + use crate::it::PeekingNext; + let nums = vec![1u8,2,3,4,5,6,7]; + + let mut mp = multipeek(nums.iter().copied()); + assert_eq!(mp.peeking_next(|&x| x != 0), Some(1)); + assert_eq!(mp.next(), Some(2)); + assert_eq!(mp.peek(), Some(&3)); + assert_eq!(mp.peek(), Some(&4)); + assert_eq!(mp.peeking_next(|&x| x == 3), Some(3)); + assert_eq!(mp.peek(), Some(&4)); + assert_eq!(mp.peeking_next(|&x| x != 4), None); + assert_eq!(mp.peeking_next(|&x| x == 4), Some(4)); + assert_eq!(mp.peek(), Some(&5)); + assert_eq!(mp.peek(), Some(&6)); + assert_eq!(mp.peeking_next(|&x| x != 5), None); + assert_eq!(mp.peek(), Some(&7)); + assert_eq!(mp.peeking_next(|&x| x == 5), Some(5)); + assert_eq!(mp.peeking_next(|&x| x == 6), Some(6)); + assert_eq!(mp.peek(), Some(&7)); + assert_eq!(mp.peek(), None); + assert_eq!(mp.next(), Some(7)); + assert_eq!(mp.peek(), None); +} + +#[test] +fn test_peek_nth() { + let nums = vec![1u8,2,3,4,5]; + + let iter = peek_nth(nums.iter().copied()); + assert_eq!(nums, iter.collect::>()); + + let mut iter = peek_nth(nums.iter().copied()); + + assert_eq!(iter.peek_nth(0), Some(&1)); + assert_eq!(iter.peek_nth(0), Some(&1)); + assert_eq!(iter.next(), Some(1)); + + assert_eq!(iter.peek_nth(0), Some(&2)); + assert_eq!(iter.peek_nth(1), Some(&3)); + assert_eq!(iter.next(), Some(2)); + + assert_eq!(iter.peek_nth(0), Some(&3)); + assert_eq!(iter.peek_nth(1), Some(&4)); + assert_eq!(iter.peek_nth(2), Some(&5)); + assert_eq!(iter.peek_nth(3), None); + + assert_eq!(iter.next(), Some(3)); + assert_eq!(iter.next(), Some(4)); + + assert_eq!(iter.peek_nth(0), Some(&5)); + assert_eq!(iter.peek_nth(1), None); + assert_eq!(iter.next(), Some(5)); + assert_eq!(iter.next(), None); + + assert_eq!(iter.peek_nth(0), None); + assert_eq!(iter.peek_nth(1), None); +} + +#[test] +fn test_peek_nth_peeking_next() { + use it::PeekingNext; + let nums = vec![1u8,2,3,4,5,6,7]; + let mut iter = peek_nth(nums.iter().copied()); + + assert_eq!(iter.peeking_next(|&x| x != 0), Some(1)); + assert_eq!(iter.next(), Some(2)); + + assert_eq!(iter.peek_nth(0), Some(&3)); + assert_eq!(iter.peek_nth(1), Some(&4)); + assert_eq!(iter.peeking_next(|&x| x == 3), Some(3)); + assert_eq!(iter.peek(), Some(&4)); + + assert_eq!(iter.peeking_next(|&x| x != 4), None); + assert_eq!(iter.peeking_next(|&x| x == 4), Some(4)); + assert_eq!(iter.peek_nth(0), Some(&5)); + assert_eq!(iter.peek_nth(1), Some(&6)); + + assert_eq!(iter.peeking_next(|&x| x != 5), None); + assert_eq!(iter.peek(), Some(&5)); + + assert_eq!(iter.peeking_next(|&x| x == 5), Some(5)); + assert_eq!(iter.peeking_next(|&x| x == 6), Some(6)); + assert_eq!(iter.peek_nth(0), Some(&7)); + assert_eq!(iter.peek_nth(1), None); + assert_eq!(iter.next(), Some(7)); + assert_eq!(iter.peek(), None); +} + +#[test] +fn pad_using() { + it::assert_equal((0..0).pad_using(1, |_| 1), 1..2); + + let v: Vec = vec![0, 1, 2]; + let r = v.into_iter().pad_using(5, |n| n); + it::assert_equal(r, vec![0, 1, 2, 3, 4]); + + let v: Vec = vec![0, 1, 2]; + let r = v.into_iter().pad_using(1, |_| panic!()); + it::assert_equal(r, vec![0, 1, 2]); +} + +#[test] +fn group_by() { + for (ch1, sub) in &"AABBCCC".chars().group_by(|&x| x) { + for ch2 in sub { + assert_eq!(ch1, ch2); + } + } + + for (ch1, sub) in &"AAABBBCCCCDDDD".chars().group_by(|&x| x) { + for ch2 in sub { + assert_eq!(ch1, ch2); + if ch1 == 'C' { + break; + } + } + } + + let toupper = |ch: &char| ch.to_uppercase().next().unwrap(); + + // try all possible orderings + for indices in permutohedron::Heap::new(&mut [0, 1, 2, 3]) { + let groups = "AaaBbbccCcDDDD".chars().group_by(&toupper); + let mut subs = groups.into_iter().collect_vec(); + + for &idx in &indices[..] { + let (key, text) = match idx { + 0 => ('A', "Aaa".chars()), + 1 => ('B', "Bbb".chars()), + 2 => ('C', "ccCc".chars()), + 3 => ('D', "DDDD".chars()), + _ => unreachable!(), + }; + assert_eq!(key, subs[idx].0); + it::assert_equal(&mut subs[idx].1, text); + } + } + + let groups = "AAABBBCCCCDDDD".chars().group_by(|&x| x); + let mut subs = groups.into_iter().map(|(_, g)| g).collect_vec(); + + let sd = subs.pop().unwrap(); + let sc = subs.pop().unwrap(); + let sb = subs.pop().unwrap(); + let sa = subs.pop().unwrap(); + for (a, b, c, d) in multizip((sa, sb, sc, sd)) { + assert_eq!(a, 'A'); + assert_eq!(b, 'B'); + assert_eq!(c, 'C'); + assert_eq!(d, 'D'); + } + + // check that the key closure is called exactly n times + { + let mut ntimes = 0; + let text = "AABCCC"; + for (_, sub) in &text.chars().group_by(|&x| { ntimes += 1; x}) { + for _ in sub { + } + } + assert_eq!(ntimes, text.len()); + } + + { + let mut ntimes = 0; + let text = "AABCCC"; + for _ in &text.chars().group_by(|&x| { ntimes += 1; x}) { + } + assert_eq!(ntimes, text.len()); + } + + { + let text = "ABCCCDEEFGHIJJKK"; + let gr = text.chars().group_by(|&x| x); + it::assert_equal(gr.into_iter().flat_map(|(_, sub)| sub), text.chars()); + } +} + +#[test] +fn group_by_lazy_2() { + let data = vec![0, 1]; + let groups = data.iter().group_by(|k| *k); + let gs = groups.into_iter().collect_vec(); + it::assert_equal(data.iter(), gs.into_iter().flat_map(|(_k, g)| g)); + + let data = vec![0, 1, 1, 0, 0]; + let groups = data.iter().group_by(|k| *k); + let mut gs = groups.into_iter().collect_vec(); + gs[1..].reverse(); + it::assert_equal(&[0, 0, 0, 1, 1], gs.into_iter().flat_map(|(_, g)| g)); + + let grouper = data.iter().group_by(|k| *k); + let mut groups = Vec::new(); + for (k, group) in &grouper { + if *k == 1 { + groups.push(group); + } + } + it::assert_equal(&mut groups[0], &[1, 1]); + + let data = vec![0, 0, 0, 1, 1, 0, 0, 2, 2, 3, 3]; + let grouper = data.iter().group_by(|k| *k); + let mut groups = Vec::new(); + for (i, (_, group)) in grouper.into_iter().enumerate() { + if i < 2 { + groups.push(group); + } else if i < 4 { + for _ in group { + } + } else { + groups.push(group); + } + } + it::assert_equal(&mut groups[0], &[0, 0, 0]); + it::assert_equal(&mut groups[1], &[1, 1]); + it::assert_equal(&mut groups[2], &[3, 3]); + + // use groups as chunks + let data = vec![0, 0, 0, 1, 1, 0, 0, 2, 2, 3, 3]; + let mut i = 0; + let grouper = data.iter().group_by(move |_| { let k = i / 3; i += 1; k }); + for (i, group) in &grouper { + match i { + 0 => it::assert_equal(group, &[0, 0, 0]), + 1 => it::assert_equal(group, &[1, 1, 0]), + 2 => it::assert_equal(group, &[0, 2, 2]), + 3 => it::assert_equal(group, &[3, 3]), + _ => unreachable!(), + } + } +} + +#[test] +fn group_by_lazy_3() { + // test consuming each group on the lap after it was produced + let data = vec![0, 0, 0, 1, 1, 0, 0, 1, 1, 2, 2]; + let grouper = data.iter().group_by(|elt| *elt); + let mut last = None; + for (key, group) in &grouper { + if let Some(gr) = last.take() { + for elt in gr { + assert!(elt != key && i32::abs(elt - key) == 1); + } + } + last = Some(group); + } +} + +#[test] +fn chunks() { + let data = vec![0, 0, 0, 1, 1, 0, 0, 2, 2, 3, 3]; + let grouper = data.iter().chunks(3); + for (i, chunk) in grouper.into_iter().enumerate() { + match i { + 0 => it::assert_equal(chunk, &[0, 0, 0]), + 1 => it::assert_equal(chunk, &[1, 1, 0]), + 2 => it::assert_equal(chunk, &[0, 2, 2]), + 3 => it::assert_equal(chunk, &[3, 3]), + _ => unreachable!(), + } + } +} + +#[test] +fn concat_empty() { + let data: Vec> = Vec::new(); + assert_eq!(data.into_iter().concat(), Vec::new()) +} + +#[test] +fn concat_non_empty() { + let data = vec![vec![1,2,3], vec![4,5,6], vec![7,8,9]]; + assert_eq!(data.into_iter().concat(), vec![1,2,3,4,5,6,7,8,9]) +} + +#[test] +fn combinations() { + assert!((1..3).combinations(5).next().is_none()); + + let it = (1..3).combinations(2); + it::assert_equal(it, vec![ + vec![1, 2], + ]); + + let it = (1..5).combinations(2); + it::assert_equal(it, vec![ + vec![1, 2], + vec![1, 3], + vec![1, 4], + vec![2, 3], + vec![2, 4], + vec![3, 4], + ]); + + it::assert_equal((0..0).tuple_combinations::<(_, _)>(), >::new()); + it::assert_equal((0..1).tuple_combinations::<(_, _)>(), >::new()); + it::assert_equal((0..2).tuple_combinations::<(_, _)>(), vec![(0, 1)]); + + it::assert_equal((0..0).combinations(2), >>::new()); + it::assert_equal((0..1).combinations(1), vec![vec![0]]); + it::assert_equal((0..2).combinations(1), vec![vec![0], vec![1]]); + it::assert_equal((0..2).combinations(2), vec![vec![0, 1]]); +} + +#[test] +fn combinations_of_too_short() { + for i in 1..10 { + assert!((0..0).combinations(i).next().is_none()); + assert!((0..i - 1).combinations(i).next().is_none()); + } +} + + +#[test] +fn combinations_zero() { + it::assert_equal((1..3).combinations(0), vec![vec![]]); + it::assert_equal((0..0).combinations(0), vec![vec![]]); +} + +#[test] +fn permutations_zero() { + it::assert_equal((1..3).permutations(0), vec![vec![]]); + it::assert_equal((0..0).permutations(0), vec![vec![]]); +} + +#[test] +fn combinations_with_replacement() { + // Pool smaller than n + it::assert_equal((0..1).combinations_with_replacement(2), vec![vec![0, 0]]); + // Pool larger than n + it::assert_equal( + (0..3).combinations_with_replacement(2), + vec![ + vec![0, 0], + vec![0, 1], + vec![0, 2], + vec![1, 1], + vec![1, 2], + vec![2, 2], + ], + ); + // Zero size + it::assert_equal( + (0..3).combinations_with_replacement(0), + vec![vec![]], + ); + // Zero size on empty pool + it::assert_equal( + (0..0).combinations_with_replacement(0), + vec![vec![]], + ); + // Empty pool + it::assert_equal( + (0..0).combinations_with_replacement(2), + >>::new(), + ); +} + +#[test] +fn powerset() { + it::assert_equal((0..0).powerset(), vec![vec![]]); + it::assert_equal((0..1).powerset(), vec![vec![], vec![0]]); + it::assert_equal((0..2).powerset(), vec![vec![], vec![0], vec![1], vec![0, 1]]); + it::assert_equal((0..3).powerset(), vec![ + vec![], + vec![0], vec![1], vec![2], + vec![0, 1], vec![0, 2], vec![1, 2], + vec![0, 1, 2] + ]); + + assert_eq!((0..4).powerset().count(), 1 << 4); + assert_eq!((0..8).powerset().count(), 1 << 8); + assert_eq!((0..16).powerset().count(), 1 << 16); +} + +#[test] +fn diff_mismatch() { + let a = vec![1, 2, 3, 4]; + let b = vec![1.0, 5.0, 3.0, 4.0]; + let b_map = b.into_iter().map(|f| f as i32); + let diff = it::diff_with(a.iter(), b_map, |a, b| *a == b); + + assert!(match diff { + Some(it::Diff::FirstMismatch(1, _, from_diff)) => + from_diff.collect::>() == vec![5, 3, 4], + _ => false, + }); +} + +#[test] +fn diff_longer() { + let a = vec![1, 2, 3, 4]; + let b = vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0]; + let b_map = b.into_iter().map(|f| f as i32); + let diff = it::diff_with(a.iter(), b_map, |a, b| *a == b); + + assert!(match diff { + Some(it::Diff::Longer(_, remaining)) => + remaining.collect::>() == vec![5, 6], + _ => false, + }); +} + +#[test] +fn diff_shorter() { + let a = vec![1, 2, 3, 4]; + let b = vec![1.0, 2.0]; + let b_map = b.into_iter().map(|f| f as i32); + let diff = it::diff_with(a.iter(), b_map, |a, b| *a == b); + + assert!(match diff { + Some(it::Diff::Shorter(len, _)) => len == 2, + _ => false, + }); +} + +#[test] +fn extrema_set() { + use std::cmp::Ordering; + + // A peculiar type: Equality compares both tuple items, but ordering only the + // first item. Used to distinguish equal elements. + #[derive(Clone, Debug, PartialEq, Eq)] + struct Val(u32, u32); + + impl PartialOrd for Val { + fn partial_cmp(&self, other: &Val) -> Option { + self.0.partial_cmp(&other.0) + } + } + + impl Ord for Val { + fn cmp(&self, other: &Val) -> Ordering { + self.0.cmp(&other.0) + } + } + + assert_eq!(None::.iter().min_set(), Vec::<&u32>::new()); + assert_eq!(None::.iter().max_set(), Vec::<&u32>::new()); + + assert_eq!(Some(1u32).iter().min_set(), vec![&1]); + assert_eq!(Some(1u32).iter().max_set(), vec![&1]); + + let data = vec![Val(0, 1), Val(2, 0), Val(0, 2), Val(1, 0), Val(2, 1)]; + + let min_set = data.iter().min_set(); + assert_eq!(min_set, vec![&Val(0, 1), &Val(0, 2)]); + + let min_set_by_key = data.iter().min_set_by_key(|v| v.1); + assert_eq!(min_set_by_key, vec![&Val(2, 0), &Val(1, 0)]); + + let min_set_by = data.iter().min_set_by(|x, y| x.1.cmp(&y.1)); + assert_eq!(min_set_by, vec![&Val(2, 0), &Val(1, 0)]); + + let max_set = data.iter().max_set(); + assert_eq!(max_set, vec![&Val(2, 0), &Val(2, 1)]); + + let max_set_by_key = data.iter().max_set_by_key(|v| v.1); + assert_eq!(max_set_by_key, vec![&Val(0, 2)]); + + let max_set_by = data.iter().max_set_by(|x, y| x.1.cmp(&y.1)); + assert_eq!(max_set_by, vec![&Val(0, 2)]); +} + +#[test] +fn minmax() { + use std::cmp::Ordering; + use crate::it::MinMaxResult; + + // A peculiar type: Equality compares both tuple items, but ordering only the + // first item. This is so we can check the stability property easily. + #[derive(Clone, Debug, PartialEq, Eq)] + struct Val(u32, u32); + + impl PartialOrd for Val { + fn partial_cmp(&self, other: &Val) -> Option { + self.0.partial_cmp(&other.0) + } + } + + impl Ord for Val { + fn cmp(&self, other: &Val) -> Ordering { + self.0.cmp(&other.0) + } + } + + assert_eq!(None::>.iter().minmax(), MinMaxResult::NoElements); + + assert_eq!(Some(1u32).iter().minmax(), MinMaxResult::OneElement(&1)); + + let data = vec![Val(0, 1), Val(2, 0), Val(0, 2), Val(1, 0), Val(2, 1)]; + + let minmax = data.iter().minmax(); + assert_eq!(minmax, MinMaxResult::MinMax(&Val(0, 1), &Val(2, 1))); + + let (min, max) = data.iter().minmax_by_key(|v| v.1).into_option().unwrap(); + assert_eq!(min, &Val(2, 0)); + assert_eq!(max, &Val(0, 2)); + + let (min, max) = data.iter().minmax_by(|x, y| x.1.cmp(&y.1)).into_option().unwrap(); + assert_eq!(min, &Val(2, 0)); + assert_eq!(max, &Val(0, 2)); +} + +#[test] +fn format() { + let data = [0, 1, 2, 3]; + let ans1 = "0, 1, 2, 3"; + let ans2 = "0--1--2--3"; + + let t1 = format!("{}", data.iter().format(", ")); + assert_eq!(t1, ans1); + let t2 = format!("{:?}", data.iter().format("--")); + assert_eq!(t2, ans2); + + let dataf = [1.1, 5.71828, -22.]; + let t3 = format!("{:.2e}", dataf.iter().format(", ")); + assert_eq!(t3, "1.10e0, 5.72e0, -2.20e1"); +} + +#[test] +fn while_some() { + let ns = (1..10).map(|x| if x % 5 != 0 { Some(x) } else { None }) + .while_some(); + it::assert_equal(ns, vec![1, 2, 3, 4]); +} + +#[allow(deprecated)] +#[test] +fn fold_while() { + let mut iterations = 0; + let vec = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + let sum = vec.into_iter().fold_while(0, |acc, item| { + iterations += 1; + let new_sum = acc + item; + if new_sum <= 20 { + FoldWhile::Continue(new_sum) + } else { + FoldWhile::Done(acc) + } + }).into_inner(); + assert_eq!(iterations, 6); + assert_eq!(sum, 15); +} + +#[test] +fn tree_fold1() { + let x = [ + "", + "0", + "0 1 x", + "0 1 x 2 x", + "0 1 x 2 3 x x", + "0 1 x 2 3 x x 4 x", + "0 1 x 2 3 x x 4 5 x x", + "0 1 x 2 3 x x 4 5 x 6 x x", + "0 1 x 2 3 x x 4 5 x 6 7 x x x", + "0 1 x 2 3 x x 4 5 x 6 7 x x x 8 x", + "0 1 x 2 3 x x 4 5 x 6 7 x x x 8 9 x x", + "0 1 x 2 3 x x 4 5 x 6 7 x x x 8 9 x 10 x x", + "0 1 x 2 3 x x 4 5 x 6 7 x x x 8 9 x 10 11 x x x", + "0 1 x 2 3 x x 4 5 x 6 7 x x x 8 9 x 10 11 x x 12 x x", + "0 1 x 2 3 x x 4 5 x 6 7 x x x 8 9 x 10 11 x x 12 13 x x x", + "0 1 x 2 3 x x 4 5 x 6 7 x x x 8 9 x 10 11 x x 12 13 x 14 x x x", + "0 1 x 2 3 x x 4 5 x 6 7 x x x 8 9 x 10 11 x x 12 13 x 14 15 x x x x", + ]; + for (i, &s) in x.iter().enumerate() { + let expected = if s.is_empty() { None } else { Some(s.to_string()) }; + let num_strings = (0..i).map(|x| x.to_string()); + let actual = num_strings.tree_fold1(|a, b| format!("{} {} x", a, b)); + assert_eq!(actual, expected); + } +} + +#[test] +fn exactly_one_question_mark_syntax_works() { + exactly_one_question_mark_return().unwrap_err(); +} + +fn exactly_one_question_mark_return() -> Result<(), ExactlyOneError>> { + [].iter().exactly_one()?; + Ok(()) +} + +#[test] +fn multiunzip() { + let (a, b, c): (Vec<_>, Vec<_>, Vec<_>) = [(0, 1, 2), (3, 4, 5), (6, 7, 8)].iter().cloned().multiunzip(); + assert_eq!((a, b, c), (vec![0, 3, 6], vec![1, 4, 7], vec![2, 5, 8])); + let (): () = [(), (), ()].iter().cloned().multiunzip(); + let t: (Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>) = [(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)].iter().cloned().multiunzip(); + assert_eq!(t, (vec![0], vec![1], vec![2], vec![3], vec![4], vec![5], vec![6], vec![7], vec![8], vec![9], vec![10], vec![11])); +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/tests/tuples.rs temporalio-1.3.0/vendor/itertools-0.10.5/tests/tuples.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/tests/tuples.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/tests/tuples.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,86 @@ +use itertools::Itertools; + +#[test] +fn tuples() { + let v = [1, 2, 3, 4, 5]; + let mut iter = v.iter().cloned().tuples(); + assert_eq!(Some((1,)), iter.next()); + assert_eq!(Some((2,)), iter.next()); + assert_eq!(Some((3,)), iter.next()); + assert_eq!(Some((4,)), iter.next()); + assert_eq!(Some((5,)), iter.next()); + assert_eq!(None, iter.next()); + assert_eq!(None, iter.into_buffer().next()); + + let mut iter = v.iter().cloned().tuples(); + assert_eq!(Some((1, 2)), iter.next()); + assert_eq!(Some((3, 4)), iter.next()); + assert_eq!(None, iter.next()); + itertools::assert_equal(vec![5], iter.into_buffer()); + + let mut iter = v.iter().cloned().tuples(); + assert_eq!(Some((1, 2, 3)), iter.next()); + assert_eq!(None, iter.next()); + itertools::assert_equal(vec![4, 5], iter.into_buffer()); + + let mut iter = v.iter().cloned().tuples(); + assert_eq!(Some((1, 2, 3, 4)), iter.next()); + assert_eq!(None, iter.next()); + itertools::assert_equal(vec![5], iter.into_buffer()); +} + +#[test] +fn tuple_windows() { + let v = [1, 2, 3, 4, 5]; + + let mut iter = v.iter().cloned().tuple_windows(); + assert_eq!(Some((1,)), iter.next()); + assert_eq!(Some((2,)), iter.next()); + assert_eq!(Some((3,)), iter.next()); + + let mut iter = v.iter().cloned().tuple_windows(); + assert_eq!(Some((1, 2)), iter.next()); + assert_eq!(Some((2, 3)), iter.next()); + assert_eq!(Some((3, 4)), iter.next()); + assert_eq!(Some((4, 5)), iter.next()); + assert_eq!(None, iter.next()); + + let mut iter = v.iter().cloned().tuple_windows(); + assert_eq!(Some((1, 2, 3)), iter.next()); + assert_eq!(Some((2, 3, 4)), iter.next()); + assert_eq!(Some((3, 4, 5)), iter.next()); + assert_eq!(None, iter.next()); + + let mut iter = v.iter().cloned().tuple_windows(); + assert_eq!(Some((1, 2, 3, 4)), iter.next()); + assert_eq!(Some((2, 3, 4, 5)), iter.next()); + assert_eq!(None, iter.next()); + + let v = [1, 2, 3]; + let mut iter = v.iter().cloned().tuple_windows::<(_, _, _, _)>(); + assert_eq!(None, iter.next()); +} + +#[test] +fn next_tuple() { + let v = [1, 2, 3, 4, 5]; + let mut iter = v.iter(); + assert_eq!(iter.next_tuple().map(|(&x, &y)| (x, y)), Some((1, 2))); + assert_eq!(iter.next_tuple().map(|(&x, &y)| (x, y)), Some((3, 4))); + assert_eq!(iter.next_tuple::<(_, _)>(), None); +} + +#[test] +fn collect_tuple() { + let v = [1, 2]; + let iter = v.iter().cloned(); + assert_eq!(iter.collect_tuple(), Some((1, 2))); + + let v = [1]; + let iter = v.iter().cloned(); + assert_eq!(iter.collect_tuple::<(_, _)>(), None); + + let v = [1, 2, 3]; + let iter = v.iter().cloned(); + assert_eq!(iter.collect_tuple::<(_, _)>(), None); +} diff -Nru temporalio-1.3.0/vendor/itertools-0.10.5/tests/zip.rs temporalio-1.3.0/vendor/itertools-0.10.5/tests/zip.rs --- temporalio-1.3.0/vendor/itertools-0.10.5/tests/zip.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/itertools-0.10.5/tests/zip.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,77 @@ +use itertools::Itertools; +use itertools::EitherOrBoth::{Both, Left, Right}; +use itertools::free::zip_eq; +use itertools::multizip; + +#[test] +fn zip_longest_fused() { + let a = [Some(1), None, Some(3), Some(4)]; + let b = [1, 2, 3]; + + let unfused = a.iter().batching(|it| *it.next().unwrap()) + .zip_longest(b.iter().cloned()); + itertools::assert_equal(unfused, + vec![Both(1, 1), Right(2), Right(3)]); +} + +#[test] +fn test_zip_longest_size_hint() { + let c = (1..10).cycle(); + let v: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + let v2 = &[10, 11, 12]; + + assert_eq!(c.zip_longest(v.iter()).size_hint(), (std::usize::MAX, None)); + + assert_eq!(v.iter().zip_longest(v2.iter()).size_hint(), (10, Some(10))); +} + +#[test] +fn test_double_ended_zip_longest() { + let xs = [1, 2, 3, 4, 5, 6]; + let ys = [1, 2, 3, 7]; + let a = xs.iter().copied(); + let b = ys.iter().copied(); + let mut it = a.zip_longest(b); + assert_eq!(it.next(), Some(Both(1, 1))); + assert_eq!(it.next(), Some(Both(2, 2))); + assert_eq!(it.next_back(), Some(Left(6))); + assert_eq!(it.next_back(), Some(Left(5))); + assert_eq!(it.next_back(), Some(Both(4, 7))); + assert_eq!(it.next(), Some(Both(3, 3))); + assert_eq!(it.next(), None); +} + +#[test] +fn test_double_ended_zip() { + let xs = [1, 2, 3, 4, 5, 6]; + let ys = [1, 2, 3, 7]; + let a = xs.iter().copied(); + let b = ys.iter().copied(); + let mut it = multizip((a, b)); + assert_eq!(it.next_back(), Some((4, 7))); + assert_eq!(it.next_back(), Some((3, 3))); + assert_eq!(it.next_back(), Some((2, 2))); + assert_eq!(it.next_back(), Some((1, 1))); + assert_eq!(it.next_back(), None); +} + + +#[should_panic] +#[test] +fn zip_eq_panic1() +{ + let a = [1, 2]; + let b = [1, 2, 3]; + + zip_eq(&a, &b).count(); +} + +#[should_panic] +#[test] +fn zip_eq_panic2() +{ + let a: [i32; 0] = []; + let b = [1, 2, 3]; + + zip_eq(&a, &b).count(); +} diff -Nru temporalio-1.3.0/vendor/itoa/.cargo-checksum.json temporalio-1.3.0/vendor/itoa/.cargo-checksum.json --- temporalio-1.3.0/vendor/itoa/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itoa/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"80533280303e23d6cbd3b527de1cfeaaca6dc69984368af9d3d1a104d97b21f2","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"48573443063fa4e0786c3b46f42b6efd1f171c6b73408a64afc1b34de89f31fe","benches/bench.rs":"636f3093bd461210ad3063289d455f90669c4a1be3273bcd30898de39f02c641","src/lib.rs":"2a2f7535c539bd6653fbd26dfd56f3a1400ea71b5a9b93013de538c42ab75c1b","src/udiv128.rs":"d28c1872c37ee2185931babcb20a221b8706a5aa8abc4963419763888023ff17","tests/test.rs":"f7404fc5f7cd1bdaf74a3b64a70d5b30586241ddc1ce2c82bd1b564999fcce0e"},"package":"62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a"} \ No newline at end of file +{"files":{"Cargo.toml":"4df6cfa068258938a81aa6aadeb436552a6823b14efb4471120fb2a79f5e02cc","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"48573443063fa4e0786c3b46f42b6efd1f171c6b73408a64afc1b34de89f31fe","benches/bench.rs":"636f3093bd461210ad3063289d455f90669c4a1be3273bcd30898de39f02c641","src/lib.rs":"9c02e4ae0ea923175fb036799702ff97203f577f5de0e5f4b6c048627775d656","src/udiv128.rs":"d28c1872c37ee2185931babcb20a221b8706a5aa8abc4963419763888023ff17","tests/test.rs":"f7404fc5f7cd1bdaf74a3b64a70d5b30586241ddc1ce2c82bd1b564999fcce0e"},"package":"af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/itoa/Cargo.toml temporalio-1.3.0/vendor/itoa/Cargo.toml --- temporalio-1.3.0/vendor/itoa/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itoa/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ edition = "2018" rust-version = "1.36" name = "itoa" -version = "1.0.8" +version = "1.0.9" authors = ["David Tolnay "] exclude = [ "performance.png", @@ -32,6 +32,7 @@ repository = "https://github.com/dtolnay/itoa" [package.metadata.docs.rs] +rustdoc-args = ["--generate-link-to-definition"] targets = ["x86_64-unknown-linux-gnu"] [lib] diff -Nru temporalio-1.3.0/vendor/itoa/src/lib.rs temporalio-1.3.0/vendor/itoa/src/lib.rs --- temporalio-1.3.0/vendor/itoa/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/itoa/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -30,7 +30,7 @@ //! //! ![performance](https://raw.githubusercontent.com/dtolnay/itoa/master/performance.png) -#![doc(html_root_url = "https://docs.rs/itoa/1.0.8")] +#![doc(html_root_url = "https://docs.rs/itoa/1.0.9")] #![no_std] #![allow( clippy::cast_lossless, diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/.cargo-checksum.json temporalio-1.3.0/vendor/linux-raw-sys/.cargo-checksum.json --- temporalio-1.3.0/vendor/linux-raw-sys/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CODE_OF_CONDUCT.md":"ccd9e538ce44713a2486cc8e4c01b8c8b846d1ccff15de728d8d6fa9a7f846cd","COPYRIGHT":"3290ae0fbc9ddb77d2239121d710f0bb9d31b3b4744e6d97fe01e652b4c1870b","Cargo.toml":"4b5149cb9b96307af9c9e3c0baf2598d701790344d206b9ea7a9d267a435208b","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-Apache-2.0_WITH_LLVM-exception":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","ORG_CODE_OF_CONDUCT.md":"a62b69bf86e605ee1bcbb2f0a12ba79e4cebb6983a7b6491949750aecc4f2178","README.md":"018c6f3402f53659e773ed3d9f7b340fb0f76cba6354c0f13705960a7ba23d61","src/aarch64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/aarch64/general.rs":"fa5309dd3c771eb79512e9c0f15f30fe3db9966ffd2f016acb802599b218522c","src/aarch64/ioctl.rs":"d1228d2e9f14dc8b9113fe99fda4bb9113d43a2020302d642fa4a343b756aa08","src/aarch64/netlink.rs":"7ffc74f90d9c8d2de6a1edc118d9d38d2a5b553d9496bd2979623a0afcc70b82","src/arm/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/arm/general.rs":"1ac7868fce241eb935ce8aa134ddf2254faf5da505b298e3efcd6e480b2cc671","src/arm/ioctl.rs":"28ed2611eff61171ba982804747da475ced7c80cd29a4ad44565b330a813598d","src/arm/netlink.rs":"526f51f05f13311e611c11280a98005d3b6766a316a7a4f510f013583b7b429a","src/lib.rs":"1364b0f82e7687b36476cb64f6835d8e899d23899d28f82eb18a4552f64bfa52","src/loongarch64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/loongarch64/general.rs":"1e816bc6ff6ae54f1649f8eaa4606edfb1526be6327f969cd2e30381418ba96c","src/loongarch64/ioctl.rs":"1c30870cf3977bc4aec3ae0b3eae27429576409a1f34faa1a9494e56676ba4c8","src/loongarch64/netlink.rs":"de2354cadcc5907637ca71ec8e592317db85f9f193d847cd31fd8308251d4fe6","src/mips/errno.rs":"4e2c1dbfd013d8701edc010da77e36e0693c9d434ddaa68a299fd338cadb2c06","src/mips/general.rs":"5b43b2a84d854da69f3d39e93a3674cfaac1e6a0db6d45a82601e31593bedd0e","src/mips/ioctl.rs":"f27afcaf2cbc29474d0eff497b89590621a10ba72be81292aec8bab520dd3e41","src/mips/netlink.rs":"28c24de4606061aa980f4915d15e4aa47bc823859f2cb206afe878a3074ddddf","src/mips64/errno.rs":"4e2c1dbfd013d8701edc010da77e36e0693c9d434ddaa68a299fd338cadb2c06","src/mips64/general.rs":"d1f4563f3c1097410c4c54f2c89c9e593751e1667c28367868af94b25bd79f1a","src/mips64/ioctl.rs":"d41ce976386a7e1f4294d022ddaddd8b3702572fefe778c62cc187c7577b9a8c","src/mips64/netlink.rs":"bfe9b9bc1d5ac40466aaca9b2819c2fed6829e1347c17979f0e4ca8088bef201","src/powerpc/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/powerpc/general.rs":"4da1ccc1f17b86806633367595b8412d3314aa3cddd000a9184d5ec2b7ce292a","src/powerpc/ioctl.rs":"24e29933b4c95ebeb6772b155a1781381a519463d03d9d86d7b9ea63e86d6940","src/powerpc/netlink.rs":"4a652d87529acc4a4748f96652ca7672782d27b9870846605dc7fde885c5fb50","src/powerpc64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/powerpc64/general.rs":"e1bdffdcebfaabeae8dcac4e9d118a90cae03b28bc0eb309ec219d37c112c029","src/powerpc64/ioctl.rs":"24e29933b4c95ebeb6772b155a1781381a519463d03d9d86d7b9ea63e86d6940","src/powerpc64/netlink.rs":"3904411d988ecd8d94612aabe9bc51b6d2e1736180bdc66af2b2dc48cdc2217b","src/riscv32/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/riscv32/general.rs":"f94518dc9d134172ecc511465535999190831268c8e9e16d31998b1373c6a9f4","src/riscv32/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/riscv32/netlink.rs":"e04f987ba9a69758428260fe99338cec6add0814597ce535a7bd5a0f723a02c7","src/riscv64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/riscv64/general.rs":"915012eb8e6f1788e908ea37dd8d321bd0c113e03255ca916cbb6f4c7eb1a3d5","src/riscv64/ioctl.rs":"1c30870cf3977bc4aec3ae0b3eae27429576409a1f34faa1a9494e56676ba4c8","src/riscv64/netlink.rs":"de2354cadcc5907637ca71ec8e592317db85f9f193d847cd31fd8308251d4fe6","src/s390x/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/s390x/general.rs":"6a7254cfaea63ceaff81a42e733f86c81034029c511e697e8ed919ed7770c688","src/s390x/ioctl.rs":"e583044dd0f672b5430ea5ef3cf249cafaef6224d8c346354c0b2399b707d7fe","src/s390x/netlink.rs":"236cd03efc7eef18fc6aefefda329e4a7fcae170b11270d65c055f42c6a5c4f4","src/sparc/errno.rs":"41ed2550f56eab092ceeed642290811c05f48be68cd557dc3020c7fb4a92b877","src/sparc/general.rs":"63964156cd08db7bc3cd0dcb66fa6d3cb6b5bc175f217e76c13740ddd1bdccec","src/sparc/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/sparc/netlink.rs":"a0ed1d057e5d60051e551c7b09d993f465f1ef39206c86a1c7f82e8890d725a7","src/sparc64/errno.rs":"41ed2550f56eab092ceeed642290811c05f48be68cd557dc3020c7fb4a92b877","src/sparc64/general.rs":"214fcfeea82d7f23cff25b59b701c2eace4ab8515dd4ed2a9a8db21d027c7d4c","src/sparc64/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/sparc64/netlink.rs":"af164f51ac55d666abb1261f950d0e938dc480f1faa6910a74fe87aad6db5361","src/x32/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/x32/general.rs":"e237eb7b60afda64413a462e61843756ac8cd270628751fb074300894034aaa9","src/x32/ioctl.rs":"72126eff23d807526d3f55779ab1c201cbae004d2655c0552b5b79ac87fd54f6","src/x32/netlink.rs":"75a9db7a7d8dc2a0b5f0256e4709e05f100115598919f67c474f77d049f570ad","src/x86/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/x86/general.rs":"e57e1df50dd86ce5f0b9028f237e0045908fba4833ade8c63e801bd097a4cf0a","src/x86/ioctl.rs":"1a7a12ec70e66743dfb4dfb8f5c7ff6f493e9a108f71f575b8d06d0a68cfb407","src/x86/netlink.rs":"526f51f05f13311e611c11280a98005d3b6766a316a7a4f510f013583b7b429a","src/x86_64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/x86_64/general.rs":"05883f894a27c2af3d71976d7742331584a22c08aa2ae002df6fcd8f210a7b9c","src/x86_64/ioctl.rs":"72126eff23d807526d3f55779ab1c201cbae004d2655c0552b5b79ac87fd54f6","src/x86_64/netlink.rs":"db5963bf2d890cac5d4f97ec5dc2cbe967be5fe5d433299249b50f5f7ed0705b"},"package":"ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"} \ No newline at end of file +{"files":{"CODE_OF_CONDUCT.md":"ccd9e538ce44713a2486cc8e4c01b8c8b846d1ccff15de728d8d6fa9a7f846cd","COPYRIGHT":"3290ae0fbc9ddb77d2239121d710f0bb9d31b3b4744e6d97fe01e652b4c1870b","Cargo.toml":"3f7fbc8067889a39c33eb48ba790863395c1825ec6eb1ea53fe13eb00948d84b","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-Apache-2.0_WITH_LLVM-exception":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","ORG_CODE_OF_CONDUCT.md":"a62b69bf86e605ee1bcbb2f0a12ba79e4cebb6983a7b6491949750aecc4f2178","README.md":"3d4ae2ec9429adfd329b4506f7ca6faa84dca30d1c3b416f8f4e6f57bdb3aa96","src/aarch64/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/aarch64/general.rs":"a5be5de0f98244a28265c46588c324ba3f8dee51717e6222a1241b10a9ac593d","src/aarch64/if_ether.rs":"f558bfec1f5e80235db79f507e4afd3120647a5caddf17a87b7ad5540e5c1462","src/aarch64/io_uring.rs":"9ce4c9005b5b99e041b9d58be6866367605e4bee1e30a7096235cb234ed73e1b","src/aarch64/ioctl.rs":"f83af7f7cab6611c9f316b2289998d3276d844ac8f96111bc65f6c3340c3301a","src/aarch64/net.rs":"b88bcacd7cd153d417cb3adb176bbc441dda1e90880e53d89404439adf47ab88","src/aarch64/netlink.rs":"f6642310b8bd37b5775ba1a52cfe638beddd7c880f8dfacab62c3180255fb75f","src/aarch64/prctl.rs":"a80e2f89aa978210d980538e1d9c5b922bb073d118ee51b1f14c1f397c7cd576","src/aarch64/system.rs":"851a95c0d1b76782970a28c373a313954eea0db35f6ebce562e6047095f587c4","src/arm/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/arm/general.rs":"eb33bd0c5835ecf0a33e582e8460f056ef79d9a2fca06c7607568ed0605d1391","src/arm/if_ether.rs":"3873beb1f57bdcc52da345608c5deda5937d7b92b114b414ce6161784173b925","src/arm/io_uring.rs":"5e2e254d5853ed30568e17fab184f8cc458607465d19dcee6c87ca1b565d6d2d","src/arm/ioctl.rs":"54cb9bdc5fe4ee7cff30e087bb0d04f1d811b55be7604bb056387f859120935a","src/arm/net.rs":"3192a24c15f0f4e4d856678fd05e82d7ae3585921f6243e907c539d603873896","src/arm/netlink.rs":"2f98b8c0349c2d3d538164e4d06c28fa1fb9308f7691aa097526ce2fb3ac176f","src/arm/prctl.rs":"5477c74fec958d9f9d2028f58e95657840ead28445956e53fe0894e45922f8a5","src/arm/system.rs":"9aca94a4a553e09e6d2d43741fb8c120c05a193822e850951dc469bbd89cc703","src/lib.rs":"e79affd8f9f4bc3a7bd9c177d10580956983df7909e126d01250e34dd40d03e3","src/loongarch64/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/loongarch64/general.rs":"95fbc2507feb167109ce386f939e72b8c5f5a16c18f8ab0389a74516c3ca288e","src/loongarch64/if_ether.rs":"a7b0918afc9dbf8e79490f83a809e4bd563af20ab2b3432d58b763ff31418daf","src/loongarch64/io_uring.rs":"ef851913c86bc2d629048e781edc76b59c63e659f8bd4bcd7fa7ff982186ed6d","src/loongarch64/ioctl.rs":"6f631e0ac37f2c2398168683a1523d1559b85369ffe4cdcc284ffe7455672c18","src/loongarch64/net.rs":"50ef111f314db8683e0f2f845f930e7e2209b97a17aa3e9fa774832ee9ef0599","src/loongarch64/netlink.rs":"789357343b94276e6f8fc8f3a32f06f3d3efd464c7850b2568dc609a49d1f305","src/loongarch64/prctl.rs":"624e4d3b8f3b4f1d6dcb1540c124ed03ce47f0580aa3425c0baed431dcd267ea","src/loongarch64/system.rs":"4cfcd4c28481b9ff5fc0330d5c713d637d3615c0184830d3a4391882eaed68f5","src/mips/errno.rs":"9ab1ed2bf371a27401745c2a6f9692f7e66dfd481d032cb40a354826d394ea8e","src/mips/general.rs":"ff31df33aa8a2ff9c1fdca63224130d2503bc3a1ff75bd86c16562069df4e9dd","src/mips/if_ether.rs":"1ecdc654cb3eda633bb7192829b1001a0a5ae5a126110b4208bbee5b41f87f5e","src/mips/io_uring.rs":"c69479bb1f862febe78e0989745c202146aaef7e8ceaa0d7bf291af584748992","src/mips/ioctl.rs":"f7464d2cd0548ab4735a1ca8deba47f13ea0946a9bf86adfec1a77feb3a0f475","src/mips/net.rs":"89b8cc80411dadd23843b037ceb06cef47af1e57244d974a805c3914d7ffa4aa","src/mips/netlink.rs":"5045dece259abaa5b5974500a20a9325e4cd6eb87c344dd7448056dff469994f","src/mips/prctl.rs":"cd59615adf6f561ef6c542df59cf25f75877693ca1c4c489f5e460eb7e798d4d","src/mips/system.rs":"acbc69a1fe7299860f8bd142bc2ff5595a410e1528994139062fc680d1a87e71","src/mips32r6/errno.rs":"9ab1ed2bf371a27401745c2a6f9692f7e66dfd481d032cb40a354826d394ea8e","src/mips32r6/general.rs":"a8cfa4b85043689e4bf124304e90d9dc37c669fb89bc4c11e3b73c82861be11e","src/mips32r6/if_ether.rs":"1ecdc654cb3eda633bb7192829b1001a0a5ae5a126110b4208bbee5b41f87f5e","src/mips32r6/io_uring.rs":"aa3345e6790b5870a73ae15ccb54d34490549de9ddcecca78f33ab2762633c88","src/mips32r6/ioctl.rs":"f7464d2cd0548ab4735a1ca8deba47f13ea0946a9bf86adfec1a77feb3a0f475","src/mips32r6/net.rs":"2cba812b3eeca4c09490a9c1d14c03dbb0c097d0ddd6e7b7cc29589a8bba24e8","src/mips32r6/netlink.rs":"cfeb63530e44ad1289222cab547646eca7c5d334d26266aa4d04292caa02d69f","src/mips32r6/prctl.rs":"59d0c9560727a6aa2bc88ac4a1085bd1c4716b362f3ad01754de2eb7c70bc14e","src/mips32r6/system.rs":"acbc69a1fe7299860f8bd142bc2ff5595a410e1528994139062fc680d1a87e71","src/mips64/errno.rs":"9ab1ed2bf371a27401745c2a6f9692f7e66dfd481d032cb40a354826d394ea8e","src/mips64/general.rs":"c7eaf11b39338a76aa1647a2ca90fbb8657e9811558aa831ad979da56e5a6a60","src/mips64/if_ether.rs":"6d24518acba5bc8fa2a775d039ed9594de8349d6028621134626ccaa8ea18bcd","src/mips64/io_uring.rs":"18bd5d96c53aff44f4a37a71f16fa12c11b7c934b395bf841e47d98283146a50","src/mips64/ioctl.rs":"39f3276ec6f36ba78f5635bd418310b21bc228902d4da889fa01094c26f9b57d","src/mips64/net.rs":"f979c44d7d0bd12847664a2864b2c38bfd8f5b90826e9e31d5c6e64ba6365859","src/mips64/netlink.rs":"18f139573337be18fb9bd56de4d0bd8af5c80828cdf68ef68751c18dcb39c761","src/mips64/prctl.rs":"a8d9ae240ce582d7b66e13937b99df73c7247ce9f69bfdd12109903d7c6dfb0e","src/mips64/system.rs":"95805c533a8eb8f53c28f138e6a2d12064681cc9db55d3042ee748c655a5d7cd","src/mips64r6/errno.rs":"9ab1ed2bf371a27401745c2a6f9692f7e66dfd481d032cb40a354826d394ea8e","src/mips64r6/general.rs":"aa6ecb5c25c09c512f51ae8dda303e7c87d1d9997f5975e0dd22dcbd3e151111","src/mips64r6/if_ether.rs":"6d24518acba5bc8fa2a775d039ed9594de8349d6028621134626ccaa8ea18bcd","src/mips64r6/io_uring.rs":"ee4dfec06270f6689c07d2583d3cd1bac4565cea0e257d9a01187b80ed222072","src/mips64r6/ioctl.rs":"39f3276ec6f36ba78f5635bd418310b21bc228902d4da889fa01094c26f9b57d","src/mips64r6/net.rs":"15cf366647af9739797dc9ffb3da317c1ccda8e51d0bf51e7bbe4bb9219eab90","src/mips64r6/netlink.rs":"ae4029f03ab30a99f33747f54f34301170323e86aa0c0126606c9c0f637bb926","src/mips64r6/prctl.rs":"f4e413984133a53b8e499aa804cc4216b0b94dcf4dad85cfa66f6811747bc21c","src/mips64r6/system.rs":"95805c533a8eb8f53c28f138e6a2d12064681cc9db55d3042ee748c655a5d7cd","src/powerpc/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/powerpc/general.rs":"f88e1b68f45f544c80b639d0aa8b9dba1ab79f4a0c47f3f65ece335cf36df8c7","src/powerpc/if_ether.rs":"56ab5fbf8c9d0dd0654412fabdca6759cbb421a876e5cebe2fec10e25728b55c","src/powerpc/io_uring.rs":"38ead79180c96e8af69929dacbc36e8cfbccec96875c61f094e531e6860639db","src/powerpc/ioctl.rs":"513a1dda33b2cd6c57212263c1bf0d8d443e54af6efe75e938fd700c1ca2b630","src/powerpc/net.rs":"86d206a03f980402d580fd872c26c2156acf6ea64cde4cc9379201a36bd3330a","src/powerpc/netlink.rs":"4f10870fbd23de17efd4cba6d5a40ba85564effc5d0b71f9d7f928a42cb77b20","src/powerpc/prctl.rs":"f236987bc8ae993ab2b0e88b2eacbae51eee4da170ac075552070a76c717d803","src/powerpc/system.rs":"3e01e5e145adb87263f04c9e053faac0c0758689fd32917d2c7c2eec1d89f9e6","src/powerpc64/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/powerpc64/general.rs":"87d30f8909dc64b9fa914139db7f0aad8544015b197f2113807a7baa31b1eacf","src/powerpc64/if_ether.rs":"15e12d56b1367cb5c9d8fd1b9995acf1429a923bf603698bd732efe1acc30cd6","src/powerpc64/io_uring.rs":"50018e504d78c584beaec3b1a6d477d30d566d25cb1a40b0a2adfb23d726674f","src/powerpc64/ioctl.rs":"513a1dda33b2cd6c57212263c1bf0d8d443e54af6efe75e938fd700c1ca2b630","src/powerpc64/net.rs":"70622d7df4f2c89941eee6b629e77b09c3b69d7b4b5ad40b1425843a470ab8cd","src/powerpc64/netlink.rs":"352a06995f7de6e4fc1c2ff54c1eccb93a3d833a923e834ec75c6a4d30ea5051","src/powerpc64/prctl.rs":"1fcccc5b6dac472a30b7701b5c9e436c238410077cfe158d600b51d55bcc074a","src/powerpc64/system.rs":"500116b7613a504ebad028cec1ba37323310e29864d885ae62191ccb1f86d333","src/riscv32/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/riscv32/general.rs":"7bd0740d489d74f2e4af6cf17ff4c5a0201bb8b1e074c0ef51c2af2a54a46243","src/riscv32/if_ether.rs":"aac7a069000195b9b18c6d25b2d7c338efb1062347a84e31cda7c93de374b3c6","src/riscv32/io_uring.rs":"5c67dde8fdb3641407d4ebd744171606b82596176343fe6766afd3220eda2ab1","src/riscv32/ioctl.rs":"b2a4c7d649b18a4d2a1142400de687d48c195dcf8a86b58ac261413c33809d7b","src/riscv32/net.rs":"6df28547fc867f3e66dab6561e494573a416add67c1968ec2371c43d8e28da86","src/riscv32/netlink.rs":"9fc99e88df0efc15d39b397c9d653c32b4729e31a2434e730435fbdfcb362da4","src/riscv32/prctl.rs":"8df2f33387d5b4865d9417f796cc4d43b3cf549cfa41d7ce7d41dd367ed8b6c9","src/riscv32/system.rs":"a2913685b359e60bbfae413b89a6fd37ea38fa448f980ffadef42d227b33ada5","src/riscv64/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/riscv64/general.rs":"bb8edd39188ced7f8e3f404c7559af11e1d80c8f18126e83ce03272d89e8ef0d","src/riscv64/if_ether.rs":"a7b0918afc9dbf8e79490f83a809e4bd563af20ab2b3432d58b763ff31418daf","src/riscv64/io_uring.rs":"ef851913c86bc2d629048e781edc76b59c63e659f8bd4bcd7fa7ff982186ed6d","src/riscv64/ioctl.rs":"6f631e0ac37f2c2398168683a1523d1559b85369ffe4cdcc284ffe7455672c18","src/riscv64/net.rs":"50ef111f314db8683e0f2f845f930e7e2209b97a17aa3e9fa774832ee9ef0599","src/riscv64/netlink.rs":"789357343b94276e6f8fc8f3a32f06f3d3efd464c7850b2568dc609a49d1f305","src/riscv64/prctl.rs":"624e4d3b8f3b4f1d6dcb1540c124ed03ce47f0580aa3425c0baed431dcd267ea","src/riscv64/system.rs":"4cfcd4c28481b9ff5fc0330d5c713d637d3615c0184830d3a4391882eaed68f5","src/s390x/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/s390x/general.rs":"f7fb19059aca9182d4cc97a807fbe1727b4082791e316c63365d115803948d18","src/s390x/if_ether.rs":"2a6b2132be1aebe126eb64ea230a82c2ab18433ece37226c9dacd81392ad6ca2","src/s390x/io_uring.rs":"57790b4ce46a4a2a87a329ff935033dfb430117bcc2154fa066c5d681f115319","src/s390x/ioctl.rs":"f806407c91520bc994c7cd638576686710700a4cfa30c8ca3f81d55ce1d6ecdd","src/s390x/net.rs":"28abfbe5beca5dff444ed226f90ea9e37e2f7bb5c12e564c1efb59600322d773","src/s390x/netlink.rs":"c3c11102a55d15dfb534d748c8bc8ece58c9d56170b6afe07d1f2cc783fd6372","src/s390x/prctl.rs":"6fe9f5349f9a694b391f309f208235c1d4669430d3f051ef64467576e91df7a1","src/s390x/system.rs":"f68e8afbd02bc87a8fec2cae4e367f296873f2c1a651032da4ccc4f1c0ed4670","src/sparc/errno.rs":"b3c5e1a6c8378d613c6ef3dd44e2199ea7455da65e83d6bb19582a79de880f80","src/sparc/general.rs":"13c5b4e0c6f9f2cfb9c062de637f88ff0b9114aaf940278cd7b4161b3d52c0c4","src/sparc/if_ether.rs":"c574c6d1ea11a8bb213b18928fe2d342c897d8ff04458991a5192eb401fbbc57","src/sparc/io_uring.rs":"d813aabc93f383c8522773ed431209627d810c78bcdb4dae931a702aae55e09f","src/sparc/ioctl.rs":"b2a4c7d649b18a4d2a1142400de687d48c195dcf8a86b58ac261413c33809d7b","src/sparc/net.rs":"aee68381686374b66f05b33d2b8235530af957831121c17c4583caef2e515855","src/sparc/netlink.rs":"0f176c24de7b2b19ac16dd95625947b8047d48bc7b871e12a3acd31f8e97c6f5","src/sparc/prctl.rs":"5f5686fe04d8cc5e746d789340331095044f244c123ecf1468dcb089bbb931cd","src/sparc/system.rs":"6f1f8ce9978693845621880031ac4805f00027315a691cfe1d466703c7a96e8d","src/sparc64/errno.rs":"b3c5e1a6c8378d613c6ef3dd44e2199ea7455da65e83d6bb19582a79de880f80","src/sparc64/general.rs":"a026441b0dbfc2dd3138bd7fc15c99a0843b13ff194a610dbe97498d068ef769","src/sparc64/if_ether.rs":"e51661cb54922c3c01853617a61b3d141768adf5b94162c4aefb326d31ef55f5","src/sparc64/io_uring.rs":"688f4678c259eb940aa0216c0183843d436b918d214e13bed56a38ddb55132db","src/sparc64/ioctl.rs":"b2a4c7d649b18a4d2a1142400de687d48c195dcf8a86b58ac261413c33809d7b","src/sparc64/net.rs":"a9ee3df43212c6f5016fd59b8fcf28b8b49016b4e143e2de97b7b60093f326d5","src/sparc64/netlink.rs":"7cec2a77af7ec17cad96d63027fd4a9164f0e6503f2e6cc2a99e79aa1bba3147","src/sparc64/prctl.rs":"ff897312b99274ce4eefecccc9797e34accc69efce1299712ab631e9542cb8ca","src/sparc64/system.rs":"becb2e706ed6df77860a2a3884b28181dca606db22fcd604a8a1803f937e8baf","src/x32/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/x32/general.rs":"ab1327fc01e9529abded9429e6720ec84b441744b68898f1a1cf8ce48d7de85d","src/x32/if_ether.rs":"859047581be4a3ae923b88516e86230a4f9a447a5203285dd8bcc539038c5c4f","src/x32/io_uring.rs":"40834d29cf819e43a23f9a2e075e2ea0c001be817f7200aa059c24eae6d29123","src/x32/ioctl.rs":"085227ec906237903b5e8b2e90b80fd078ddb4f9e44bbd6c9bee54ea7d5d6b1a","src/x32/net.rs":"c3133d3ac4cafff36bf8e0e374a788bd6aae6b36d0cd28be0cc1ee140529962a","src/x32/netlink.rs":"f74042f6cf0eabccfa6b8008a89ee7ab347fb7eaa89499757a786b13b2403982","src/x32/prctl.rs":"2d1eb6873dc5b72a8252f12e695d98a045e01026f730302a6515f53a394bba7c","src/x32/system.rs":"69c125aea6b21f2c4981f3386602283a691524671fef1da7d67de3b67fffdc42","src/x86/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/x86/general.rs":"8f48e3f5136a3aadf0282674937c4748dabc59dbb3cce4b9f2f73f8d2d25d52f","src/x86/if_ether.rs":"3873beb1f57bdcc52da345608c5deda5937d7b92b114b414ce6161784173b925","src/x86/io_uring.rs":"3f60400dfc11a5eafa5a54466f7f9ca74a63219feda2278c388529bf40c0a6a3","src/x86/ioctl.rs":"8dd0afaa7c3017c3866e579705699be75acc1a095694232b2903a12b3c07a770","src/x86/net.rs":"3192a24c15f0f4e4d856678fd05e82d7ae3585921f6243e907c539d603873896","src/x86/netlink.rs":"2f98b8c0349c2d3d538164e4d06c28fa1fb9308f7691aa097526ce2fb3ac176f","src/x86/prctl.rs":"5477c74fec958d9f9d2028f58e95657840ead28445956e53fe0894e45922f8a5","src/x86/system.rs":"9aca94a4a553e09e6d2d43741fb8c120c05a193822e850951dc469bbd89cc703","src/x86_64/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/x86_64/general.rs":"24f147e5800b36d49645997571cffab9d6e562c4b317000278f743dc41e3ef71","src/x86_64/if_ether.rs":"feb5362d90fbd5113b6f1f22fcc77a7b3bb7c8f5081be7eacb2e270d2f24a293","src/x86_64/io_uring.rs":"6c008c59b6905b7872b788e30d546efa3b5bb03a0fe17e33b90bfc8beec23f29","src/x86_64/ioctl.rs":"085227ec906237903b5e8b2e90b80fd078ddb4f9e44bbd6c9bee54ea7d5d6b1a","src/x86_64/net.rs":"d0f08df0ce735b8c75b6a7f466b97a199330395ccc04e8a8d5899f8426a9e798","src/x86_64/netlink.rs":"d47b8b117007b1c29db325dad68ed1b92562b98f90916b1b192f57a935a98038","src/x86_64/prctl.rs":"6d0f63fff8d76cc2f4678f38e40a68d072d7da4094d5217ce92872370bb4df9b","src/x86_64/system.rs":"6a415f104e7dd34829b36c19ad89e0cfcfbc69a846c87f81e202411386d46966"},"package":"57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/Cargo.toml temporalio-1.3.0/vendor/linux-raw-sys/Cargo.toml --- temporalio-1.3.0/vendor/linux-raw-sys/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,10 +10,10 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" -rust-version = "1.48" +edition = "2021" +rust-version = "1.63" name = "linux-raw-sys" -version = "0.3.8" +version = "0.4.5" authors = ["Dan Gohman "] exclude = [ "/gen", @@ -65,12 +65,17 @@ ] errno = [] general = [] +if_ether = [] +io_uring = [] ioctl = [] +net = [] netlink = [] no_std = [] +prctl = [] rustc-dep-of-std = [ "core", "compiler_builtins", "no_std", ] std = [] +system = [] diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/README.md temporalio-1.3.0/vendor/linux-raw-sys/README.md --- temporalio-1.3.0/vendor/linux-raw-sys/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -36,7 +36,7 @@ # Minimum Supported Rust Version (MSRV) This crate currently works on the version of [Rust on Debian stable], which is -currently Rust 1.48. This policy may change in the future, in minor version +currently Rust 1.63. This policy may change in the future, in minor version releases, so users using a fixed version of Rust should pin to a specific version of this crate. diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/errno.rs temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/errno.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/errno.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const EPERM: u32 = 1; pub const ENOENT: u32 = 2; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/general.rs temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/general.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/general.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/general.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,2749 +1,216 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_sighandler_t = ::core::option::Option; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type cap_user_header_t = *mut __user_cap_header_struct; +pub type cap_user_data_t = *mut __user_cap_data_struct; +pub type __kernel_rwf_t = crate::ctypes::c_int; +pub type old_sigset_t = crate::ctypes::c_ulong; +pub type __signalfn_t = ::core::option::Option; +pub type __sighandler_t = __signalfn_t; +pub type __restorefn_t = ::core::option::Option; +pub type __sigrestore_t = __restorefn_t; +pub type stack_t = sigaltstack; +pub type sigval_t = sigval; +pub type siginfo_t = siginfo; +pub type sigevent_t = sigevent; +pub type cc_t = crate::ctypes::c_uchar; +pub type speed_t = crate::ctypes::c_uint; +pub type tcflag_t = crate::ctypes::c_uint; +pub type __fsword_t = __kernel_long_t; #[repr(C)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct __BindgenBitfieldUnit { storage: Storage, } -impl __BindgenBitfieldUnit { -#[inline] -pub const fn new(storage: Storage) -> Self { -Self { storage } -} -} -impl __BindgenBitfieldUnit -where -Storage: AsRef<[u8]> + AsMut<[u8]>, -{ -#[inline] -pub fn get_bit(&self, index: usize) -> bool { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = self.storage.as_ref()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -byte & mask == mask -} -#[inline] -pub fn set_bit(&mut self, index: usize, val: bool) { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = &mut self.storage.as_mut()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -if val { -*byte |= mask; -} else { -*byte &= !mask; -} -} -#[inline] -pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -let mut val = 0; -for i in 0..(bit_width as usize) { -if self.get_bit(i + bit_offset) { -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -val |= 1 << index; -} -} -val -} -#[inline] -pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -for i in 0..(bit_width as usize) { -let mask = 1 << i; -let val_bit_is_set = val & mask == mask; -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -self.set_bit(index + bit_offset, val_bit_is_set); -} -} -} #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) -} -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fd_set { +pub fds_bits: [crate::ctypes::c_ulong; 16usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fsid_t { +pub val: [crate::ctypes::c_int; 2usize], } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_header_struct { +pub version: __u32, +pub pid: crate::ctypes::c_int, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_data_struct { +pub effective: __u32, +pub permitted: __u32, +pub inheritable: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data { +pub magic_etc: __le32, +pub data: [vfs_cap_data__bindgen_ty_1; 2usize], } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data { +pub magic_etc: __le32, +pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], +pub rootid: __le32, } #[repr(C)] -pub struct __BindgenUnionField(::core::marker::PhantomData); -impl __BindgenUnionField { -#[inline] -pub const fn new() -> Self { -__BindgenUnionField(::core::marker::PhantomData) +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } -#[inline] -pub unsafe fn as_ref(&self) -> &T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct f_owner_ex { +pub type_: crate::ctypes::c_int, +pub pid: __kernel_pid_t, } -#[inline] -pub unsafe fn as_mut(&mut self) -> &mut T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_off_t, +pub l_len: __kernel_off_t, +pub l_pid: __kernel_pid_t, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock64 { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_loff_t, +pub l_len: __kernel_loff_t, +pub l_pid: __kernel_pid_t, } -impl ::core::default::Default for __BindgenUnionField { -#[inline] -fn default() -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct open_how { +pub flags: __u64, +pub mode: __u64, +pub resolve: __u64, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct epoll_event { +pub events: __poll_t, +pub data: __u64, } -impl ::core::clone::Clone for __BindgenUnionField { -#[inline] -fn clone(&self) -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, } -impl ::core::marker::Copy for __BindgenUnionField {} -impl ::core::fmt::Debug for __BindgenUnionField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__BindgenUnionField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, } -impl ::core::hash::Hash for __BindgenUnionField { -fn hash(&self, _state: &mut H) {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, } -impl ::core::cmp::PartialEq for __BindgenUnionField { -fn eq(&self, _other: &__BindgenUnionField) -> bool { -true +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, } -} -impl ::core::cmp::Eq for __BindgenUnionField {} -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const AT_SYSINFO_EHDR: u32 = 33; -pub const AT_MINSIGSTKSZ: u32 = 51; -pub const AT_VECTOR_SIZE_ARCH: u32 = 2; -pub const AT_NULL: u32 = 0; -pub const AT_IGNORE: u32 = 1; -pub const AT_EXECFD: u32 = 2; -pub const AT_PHDR: u32 = 3; -pub const AT_PHENT: u32 = 4; -pub const AT_PHNUM: u32 = 5; -pub const AT_PAGESZ: u32 = 6; -pub const AT_BASE: u32 = 7; -pub const AT_FLAGS: u32 = 8; -pub const AT_ENTRY: u32 = 9; -pub const AT_NOTELF: u32 = 10; -pub const AT_UID: u32 = 11; -pub const AT_EUID: u32 = 12; -pub const AT_GID: u32 = 13; -pub const AT_EGID: u32 = 14; -pub const AT_PLATFORM: u32 = 15; -pub const AT_HWCAP: u32 = 16; -pub const AT_CLKTCK: u32 = 17; -pub const AT_SECURE: u32 = 23; -pub const AT_BASE_PLATFORM: u32 = 24; -pub const AT_RANDOM: u32 = 25; -pub const AT_HWCAP2: u32 = 26; -pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; -pub const AT_RSEQ_ALIGN: u32 = 28; -pub const AT_EXECFN: u32 = 31; -pub const __BITS_PER_LONG: u32 = 64; -pub const __FD_SETSIZE: u32 = 1024; -pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; -pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; -pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; -pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; -pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; -pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; -pub const VFS_CAP_REVISION_SHIFT: u32 = 24; -pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; -pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; -pub const VFS_CAP_REVISION_1: u32 = 16777216; -pub const VFS_CAP_U32_1: u32 = 1; -pub const VFS_CAP_REVISION_2: u32 = 33554432; -pub const VFS_CAP_U32_2: u32 = 2; -pub const VFS_CAP_REVISION_3: u32 = 50331648; -pub const VFS_CAP_U32_3: u32 = 2; -pub const VFS_CAP_U32: u32 = 2; -pub const VFS_CAP_REVISION: u32 = 50331648; -pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S: u32 = 1; -pub const CAP_CHOWN: u32 = 0; -pub const CAP_DAC_OVERRIDE: u32 = 1; -pub const CAP_DAC_READ_SEARCH: u32 = 2; -pub const CAP_FOWNER: u32 = 3; -pub const CAP_FSETID: u32 = 4; -pub const CAP_KILL: u32 = 5; -pub const CAP_SETGID: u32 = 6; -pub const CAP_SETUID: u32 = 7; -pub const CAP_SETPCAP: u32 = 8; -pub const CAP_LINUX_IMMUTABLE: u32 = 9; -pub const CAP_NET_BIND_SERVICE: u32 = 10; -pub const CAP_NET_BROADCAST: u32 = 11; -pub const CAP_NET_ADMIN: u32 = 12; -pub const CAP_NET_RAW: u32 = 13; -pub const CAP_IPC_LOCK: u32 = 14; -pub const CAP_IPC_OWNER: u32 = 15; -pub const CAP_SYS_MODULE: u32 = 16; -pub const CAP_SYS_RAWIO: u32 = 17; -pub const CAP_SYS_CHROOT: u32 = 18; -pub const CAP_SYS_PTRACE: u32 = 19; -pub const CAP_SYS_PACCT: u32 = 20; -pub const CAP_SYS_ADMIN: u32 = 21; -pub const CAP_SYS_BOOT: u32 = 22; -pub const CAP_SYS_NICE: u32 = 23; -pub const CAP_SYS_RESOURCE: u32 = 24; -pub const CAP_SYS_TIME: u32 = 25; -pub const CAP_SYS_TTY_CONFIG: u32 = 26; -pub const CAP_MKNOD: u32 = 27; -pub const CAP_LEASE: u32 = 28; -pub const CAP_AUDIT_WRITE: u32 = 29; -pub const CAP_AUDIT_CONTROL: u32 = 30; -pub const CAP_SETFCAP: u32 = 31; -pub const CAP_MAC_OVERRIDE: u32 = 32; -pub const CAP_MAC_ADMIN: u32 = 33; -pub const CAP_SYSLOG: u32 = 34; -pub const CAP_WAKE_ALARM: u32 = 35; -pub const CAP_BLOCK_SUSPEND: u32 = 36; -pub const CAP_AUDIT_READ: u32 = 37; -pub const CAP_PERFMON: u32 = 38; -pub const CAP_BPF: u32 = 39; -pub const CAP_CHECKPOINT_RESTORE: u32 = 40; -pub const CAP_LAST_CAP: u32 = 40; -pub const O_DIRECTORY: u32 = 16384; -pub const O_NOFOLLOW: u32 = 32768; -pub const O_DIRECT: u32 = 65536; -pub const O_LARGEFILE: u32 = 131072; -pub const O_ACCMODE: u32 = 3; -pub const O_RDONLY: u32 = 0; -pub const O_WRONLY: u32 = 1; -pub const O_RDWR: u32 = 2; -pub const O_CREAT: u32 = 64; -pub const O_EXCL: u32 = 128; -pub const O_NOCTTY: u32 = 256; -pub const O_TRUNC: u32 = 512; -pub const O_APPEND: u32 = 1024; -pub const O_NONBLOCK: u32 = 2048; -pub const O_DSYNC: u32 = 4096; -pub const FASYNC: u32 = 8192; -pub const O_NOATIME: u32 = 262144; -pub const O_CLOEXEC: u32 = 524288; -pub const __O_SYNC: u32 = 1048576; -pub const O_SYNC: u32 = 1052672; -pub const O_PATH: u32 = 2097152; -pub const __O_TMPFILE: u32 = 4194304; -pub const O_TMPFILE: u32 = 4210688; -pub const O_TMPFILE_MASK: u32 = 4210752; -pub const O_NDELAY: u32 = 2048; -pub const F_DUPFD: u32 = 0; -pub const F_GETFD: u32 = 1; -pub const F_SETFD: u32 = 2; -pub const F_GETFL: u32 = 3; -pub const F_SETFL: u32 = 4; -pub const F_GETLK: u32 = 5; -pub const F_SETLK: u32 = 6; -pub const F_SETLKW: u32 = 7; -pub const F_SETOWN: u32 = 8; -pub const F_GETOWN: u32 = 9; -pub const F_SETSIG: u32 = 10; -pub const F_GETSIG: u32 = 11; -pub const F_SETOWN_EX: u32 = 15; -pub const F_GETOWN_EX: u32 = 16; -pub const F_GETOWNER_UIDS: u32 = 17; -pub const F_OFD_GETLK: u32 = 36; -pub const F_OFD_SETLK: u32 = 37; -pub const F_OFD_SETLKW: u32 = 38; -pub const F_OWNER_TID: u32 = 0; -pub const F_OWNER_PID: u32 = 1; -pub const F_OWNER_PGRP: u32 = 2; -pub const FD_CLOEXEC: u32 = 1; -pub const F_RDLCK: u32 = 0; -pub const F_WRLCK: u32 = 1; -pub const F_UNLCK: u32 = 2; -pub const F_EXLCK: u32 = 4; -pub const F_SHLCK: u32 = 8; -pub const LOCK_SH: u32 = 1; -pub const LOCK_EX: u32 = 2; -pub const LOCK_NB: u32 = 4; -pub const LOCK_UN: u32 = 8; -pub const LOCK_MAND: u32 = 32; -pub const LOCK_READ: u32 = 64; -pub const LOCK_WRITE: u32 = 128; -pub const LOCK_RW: u32 = 192; -pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; -pub const RESOLVE_NO_XDEV: u32 = 1; -pub const RESOLVE_NO_MAGICLINKS: u32 = 2; -pub const RESOLVE_NO_SYMLINKS: u32 = 4; -pub const RESOLVE_BENEATH: u32 = 8; -pub const RESOLVE_IN_ROOT: u32 = 16; -pub const RESOLVE_CACHED: u32 = 32; -pub const F_SETLEASE: u32 = 1024; -pub const F_GETLEASE: u32 = 1025; -pub const F_CANCELLK: u32 = 1029; -pub const F_DUPFD_CLOEXEC: u32 = 1030; -pub const F_NOTIFY: u32 = 1026; -pub const F_SETPIPE_SZ: u32 = 1031; -pub const F_GETPIPE_SZ: u32 = 1032; -pub const F_ADD_SEALS: u32 = 1033; -pub const F_GET_SEALS: u32 = 1034; -pub const F_SEAL_SEAL: u32 = 1; -pub const F_SEAL_SHRINK: u32 = 2; -pub const F_SEAL_GROW: u32 = 4; -pub const F_SEAL_WRITE: u32 = 8; -pub const F_SEAL_FUTURE_WRITE: u32 = 16; -pub const F_SEAL_EXEC: u32 = 32; -pub const F_GET_RW_HINT: u32 = 1035; -pub const F_SET_RW_HINT: u32 = 1036; -pub const F_GET_FILE_RW_HINT: u32 = 1037; -pub const F_SET_FILE_RW_HINT: u32 = 1038; -pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; -pub const RWH_WRITE_LIFE_NONE: u32 = 1; -pub const RWH_WRITE_LIFE_SHORT: u32 = 2; -pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; -pub const RWH_WRITE_LIFE_LONG: u32 = 4; -pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; -pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; -pub const DN_ACCESS: u32 = 1; -pub const DN_MODIFY: u32 = 2; -pub const DN_CREATE: u32 = 4; -pub const DN_DELETE: u32 = 8; -pub const DN_RENAME: u32 = 16; -pub const DN_ATTRIB: u32 = 32; -pub const DN_MULTISHOT: u32 = 2147483648; -pub const AT_FDCWD: i32 = -100; -pub const AT_SYMLINK_NOFOLLOW: u32 = 256; -pub const AT_EACCESS: u32 = 512; -pub const AT_REMOVEDIR: u32 = 512; -pub const AT_SYMLINK_FOLLOW: u32 = 1024; -pub const AT_NO_AUTOMOUNT: u32 = 2048; -pub const AT_EMPTY_PATH: u32 = 4096; -pub const AT_STATX_SYNC_TYPE: u32 = 24576; -pub const AT_STATX_SYNC_AS_STAT: u32 = 0; -pub const AT_STATX_FORCE_SYNC: u32 = 8192; -pub const AT_STATX_DONT_SYNC: u32 = 16384; -pub const AT_RECURSIVE: u32 = 32768; -pub const EPOLL_CLOEXEC: u32 = 524288; -pub const EPOLL_CTL_ADD: u32 = 1; -pub const EPOLL_CTL_DEL: u32 = 2; -pub const EPOLL_CTL_MOD: u32 = 3; -pub const POSIX_FADV_NORMAL: u32 = 0; -pub const POSIX_FADV_RANDOM: u32 = 1; -pub const POSIX_FADV_SEQUENTIAL: u32 = 2; -pub const POSIX_FADV_WILLNEED: u32 = 3; -pub const POSIX_FADV_DONTNEED: u32 = 4; -pub const POSIX_FADV_NOREUSE: u32 = 5; -pub const FALLOC_FL_KEEP_SIZE: u32 = 1; -pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; -pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; -pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; -pub const FALLOC_FL_ZERO_RANGE: u32 = 16; -pub const FALLOC_FL_INSERT_RANGE: u32 = 32; -pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; -pub const NR_OPEN: u32 = 1024; -pub const NGROUPS_MAX: u32 = 65536; -pub const ARG_MAX: u32 = 131072; -pub const LINK_MAX: u32 = 127; -pub const MAX_CANON: u32 = 255; -pub const MAX_INPUT: u32 = 255; -pub const NAME_MAX: u32 = 255; -pub const PATH_MAX: u32 = 4096; -pub const PIPE_BUF: u32 = 4096; -pub const XATTR_NAME_MAX: u32 = 255; -pub const XATTR_SIZE_MAX: u32 = 65536; -pub const XATTR_LIST_MAX: u32 = 65536; -pub const RTSIG_MAX: u32 = 32; -pub const _IOC_NRBITS: u32 = 8; -pub const _IOC_TYPEBITS: u32 = 8; -pub const _IOC_SIZEBITS: u32 = 14; -pub const _IOC_DIRBITS: u32 = 2; -pub const _IOC_NRMASK: u32 = 255; -pub const _IOC_TYPEMASK: u32 = 255; -pub const _IOC_SIZEMASK: u32 = 16383; -pub const _IOC_DIRMASK: u32 = 3; -pub const _IOC_NRSHIFT: u32 = 0; -pub const _IOC_TYPESHIFT: u32 = 8; -pub const _IOC_SIZESHIFT: u32 = 16; -pub const _IOC_DIRSHIFT: u32 = 30; -pub const _IOC_NONE: u32 = 0; -pub const _IOC_WRITE: u32 = 1; -pub const _IOC_READ: u32 = 2; -pub const IOC_IN: u32 = 1073741824; -pub const IOC_OUT: u32 = 2147483648; -pub const IOC_INOUT: u32 = 3221225472; -pub const IOCSIZE_MASK: u32 = 1073676288; -pub const IOCSIZE_SHIFT: u32 = 16; -pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; -pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; -pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; -pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; -pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; -pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; -pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; -pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; -pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; -pub const FSCRYPT_POLICY_V1: u32 = 0; -pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; -pub const FSCRYPT_POLICY_V2: u32 = 2; -pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; -pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; -pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; -pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; -pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; -pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; -pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; -pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FS_POLICY_FLAGS_VALID: u32 = 7; -pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; -pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; -pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; -pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; -pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; -pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; -pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; -pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; -pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FS_MAX_KEY_SIZE: u32 = 64; -pub const MS_RDONLY: u32 = 1; -pub const MS_NOSUID: u32 = 2; -pub const MS_NODEV: u32 = 4; -pub const MS_NOEXEC: u32 = 8; -pub const MS_SYNCHRONOUS: u32 = 16; -pub const MS_REMOUNT: u32 = 32; -pub const MS_MANDLOCK: u32 = 64; -pub const MS_DIRSYNC: u32 = 128; -pub const MS_NOSYMFOLLOW: u32 = 256; -pub const MS_NOATIME: u32 = 1024; -pub const MS_NODIRATIME: u32 = 2048; -pub const MS_BIND: u32 = 4096; -pub const MS_MOVE: u32 = 8192; -pub const MS_REC: u32 = 16384; -pub const MS_VERBOSE: u32 = 32768; -pub const MS_SILENT: u32 = 32768; -pub const MS_POSIXACL: u32 = 65536; -pub const MS_UNBINDABLE: u32 = 131072; -pub const MS_PRIVATE: u32 = 262144; -pub const MS_SLAVE: u32 = 524288; -pub const MS_SHARED: u32 = 1048576; -pub const MS_RELATIME: u32 = 2097152; -pub const MS_KERNMOUNT: u32 = 4194304; -pub const MS_I_VERSION: u32 = 8388608; -pub const MS_STRICTATIME: u32 = 16777216; -pub const MS_LAZYTIME: u32 = 33554432; -pub const MS_SUBMOUNT: u32 = 67108864; -pub const MS_NOREMOTELOCK: u32 = 134217728; -pub const MS_NOSEC: u32 = 268435456; -pub const MS_BORN: u32 = 536870912; -pub const MS_ACTIVE: u32 = 1073741824; -pub const MS_NOUSER: u32 = 2147483648; -pub const MS_RMT_MASK: u32 = 41943121; -pub const MS_MGC_VAL: u32 = 3236757504; -pub const MS_MGC_MSK: u32 = 4294901760; -pub const OPEN_TREE_CLONE: u32 = 1; -pub const OPEN_TREE_CLOEXEC: u32 = 524288; -pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; -pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; -pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; -pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; -pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; -pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; -pub const MOVE_MOUNT_SET_GROUP: u32 = 256; -pub const MOVE_MOUNT__MASK: u32 = 375; -pub const FSOPEN_CLOEXEC: u32 = 1; -pub const FSPICK_CLOEXEC: u32 = 1; -pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; -pub const FSPICK_NO_AUTOMOUNT: u32 = 4; -pub const FSPICK_EMPTY_PATH: u32 = 8; -pub const FSMOUNT_CLOEXEC: u32 = 1; -pub const MOUNT_ATTR_RDONLY: u32 = 1; -pub const MOUNT_ATTR_NOSUID: u32 = 2; -pub const MOUNT_ATTR_NODEV: u32 = 4; -pub const MOUNT_ATTR_NOEXEC: u32 = 8; -pub const MOUNT_ATTR__ATIME: u32 = 112; -pub const MOUNT_ATTR_RELATIME: u32 = 0; -pub const MOUNT_ATTR_NOATIME: u32 = 16; -pub const MOUNT_ATTR_STRICTATIME: u32 = 32; -pub const MOUNT_ATTR_NODIRATIME: u32 = 128; -pub const MOUNT_ATTR_IDMAP: u32 = 1048576; -pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; -pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; -pub const INR_OPEN_CUR: u32 = 1024; -pub const INR_OPEN_MAX: u32 = 4096; -pub const BLOCK_SIZE_BITS: u32 = 10; -pub const BLOCK_SIZE: u32 = 1024; -pub const SEEK_SET: u32 = 0; -pub const SEEK_CUR: u32 = 1; -pub const SEEK_END: u32 = 2; -pub const SEEK_DATA: u32 = 3; -pub const SEEK_HOLE: u32 = 4; -pub const SEEK_MAX: u32 = 4; -pub const RENAME_NOREPLACE: u32 = 1; -pub const RENAME_EXCHANGE: u32 = 2; -pub const RENAME_WHITEOUT: u32 = 4; -pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; -pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; -pub const NR_FILE: u32 = 8192; -pub const FS_XFLAG_REALTIME: u32 = 1; -pub const FS_XFLAG_PREALLOC: u32 = 2; -pub const FS_XFLAG_IMMUTABLE: u32 = 8; -pub const FS_XFLAG_APPEND: u32 = 16; -pub const FS_XFLAG_SYNC: u32 = 32; -pub const FS_XFLAG_NOATIME: u32 = 64; -pub const FS_XFLAG_NODUMP: u32 = 128; -pub const FS_XFLAG_RTINHERIT: u32 = 256; -pub const FS_XFLAG_PROJINHERIT: u32 = 512; -pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; -pub const FS_XFLAG_EXTSIZE: u32 = 2048; -pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; -pub const FS_XFLAG_NODEFRAG: u32 = 8192; -pub const FS_XFLAG_FILESTREAM: u32 = 16384; -pub const FS_XFLAG_DAX: u32 = 32768; -pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; -pub const FS_XFLAG_HASATTR: u32 = 2147483648; -pub const BMAP_IOCTL: u32 = 1; -pub const FSLABEL_MAX: u32 = 256; -pub const FS_SECRM_FL: u32 = 1; -pub const FS_UNRM_FL: u32 = 2; -pub const FS_COMPR_FL: u32 = 4; -pub const FS_SYNC_FL: u32 = 8; -pub const FS_IMMUTABLE_FL: u32 = 16; -pub const FS_APPEND_FL: u32 = 32; -pub const FS_NODUMP_FL: u32 = 64; -pub const FS_NOATIME_FL: u32 = 128; -pub const FS_DIRTY_FL: u32 = 256; -pub const FS_COMPRBLK_FL: u32 = 512; -pub const FS_NOCOMP_FL: u32 = 1024; -pub const FS_ENCRYPT_FL: u32 = 2048; -pub const FS_BTREE_FL: u32 = 4096; -pub const FS_INDEX_FL: u32 = 4096; -pub const FS_IMAGIC_FL: u32 = 8192; -pub const FS_JOURNAL_DATA_FL: u32 = 16384; -pub const FS_NOTAIL_FL: u32 = 32768; -pub const FS_DIRSYNC_FL: u32 = 65536; -pub const FS_TOPDIR_FL: u32 = 131072; -pub const FS_HUGE_FILE_FL: u32 = 262144; -pub const FS_EXTENT_FL: u32 = 524288; -pub const FS_VERITY_FL: u32 = 1048576; -pub const FS_EA_INODE_FL: u32 = 2097152; -pub const FS_EOFBLOCKS_FL: u32 = 4194304; -pub const FS_NOCOW_FL: u32 = 8388608; -pub const FS_DAX_FL: u32 = 33554432; -pub const FS_INLINE_DATA_FL: u32 = 268435456; -pub const FS_PROJINHERIT_FL: u32 = 536870912; -pub const FS_CASEFOLD_FL: u32 = 1073741824; -pub const FS_RESERVED_FL: u32 = 2147483648; -pub const FS_FL_USER_VISIBLE: u32 = 253951; -pub const FS_FL_USER_MODIFIABLE: u32 = 229631; -pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; -pub const SYNC_FILE_RANGE_WRITE: u32 = 2; -pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; -pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; -pub const FUTEX_WAIT: u32 = 0; -pub const FUTEX_WAKE: u32 = 1; -pub const FUTEX_FD: u32 = 2; -pub const FUTEX_REQUEUE: u32 = 3; -pub const FUTEX_CMP_REQUEUE: u32 = 4; -pub const FUTEX_WAKE_OP: u32 = 5; -pub const FUTEX_LOCK_PI: u32 = 6; -pub const FUTEX_UNLOCK_PI: u32 = 7; -pub const FUTEX_TRYLOCK_PI: u32 = 8; -pub const FUTEX_WAIT_BITSET: u32 = 9; -pub const FUTEX_WAKE_BITSET: u32 = 10; -pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; -pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; -pub const FUTEX_LOCK_PI2: u32 = 13; -pub const FUTEX_PRIVATE_FLAG: u32 = 128; -pub const FUTEX_CLOCK_REALTIME: u32 = 256; -pub const FUTEX_CMD_MASK: i32 = -385; -pub const FUTEX_WAIT_PRIVATE: u32 = 128; -pub const FUTEX_WAKE_PRIVATE: u32 = 129; -pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; -pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; -pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; -pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; -pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; -pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; -pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; -pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; -pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; -pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; -pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; -pub const FUTEX_32: u32 = 2; -pub const FUTEX_WAITV_MAX: u32 = 128; -pub const FUTEX_WAITERS: u32 = 2147483648; -pub const FUTEX_OWNER_DIED: u32 = 1073741824; -pub const FUTEX_TID_MASK: u32 = 1073741823; -pub const ROBUST_LIST_LIMIT: u32 = 2048; -pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; -pub const FUTEX_OP_SET: u32 = 0; -pub const FUTEX_OP_ADD: u32 = 1; -pub const FUTEX_OP_OR: u32 = 2; -pub const FUTEX_OP_ANDN: u32 = 3; -pub const FUTEX_OP_XOR: u32 = 4; -pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; -pub const FUTEX_OP_CMP_EQ: u32 = 0; -pub const FUTEX_OP_CMP_NE: u32 = 1; -pub const FUTEX_OP_CMP_LT: u32 = 2; -pub const FUTEX_OP_CMP_LE: u32 = 3; -pub const FUTEX_OP_CMP_GT: u32 = 4; -pub const FUTEX_OP_CMP_GE: u32 = 5; -pub const __UAPI_DEF_IF_IFCONF: u32 = 1; -pub const __UAPI_DEF_IF_IFMAP: u32 = 1; -pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1; -pub const __UAPI_DEF_IF_IFREQ: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1; -pub const __UAPI_DEF_IN_ADDR: u32 = 1; -pub const __UAPI_DEF_IN_IPPROTO: u32 = 1; -pub const __UAPI_DEF_IN_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP_MREQ: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1; -pub const __UAPI_DEF_IN_CLASS: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1; -pub const __UAPI_DEF_IPV6_MREQ: u32 = 1; -pub const __UAPI_DEF_IPPROTO_V6: u32 = 1; -pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1; -pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1; -pub const __UAPI_DEF_XATTR: u32 = 1; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const IP_TOS: u32 = 1; -pub const IP_TTL: u32 = 2; -pub const IP_HDRINCL: u32 = 3; -pub const IP_OPTIONS: u32 = 4; -pub const IP_ROUTER_ALERT: u32 = 5; -pub const IP_RECVOPTS: u32 = 6; -pub const IP_RETOPTS: u32 = 7; -pub const IP_PKTINFO: u32 = 8; -pub const IP_PKTOPTIONS: u32 = 9; -pub const IP_MTU_DISCOVER: u32 = 10; -pub const IP_RECVERR: u32 = 11; -pub const IP_RECVTTL: u32 = 12; -pub const IP_RECVTOS: u32 = 13; -pub const IP_MTU: u32 = 14; -pub const IP_FREEBIND: u32 = 15; -pub const IP_IPSEC_POLICY: u32 = 16; -pub const IP_XFRM_POLICY: u32 = 17; -pub const IP_PASSSEC: u32 = 18; -pub const IP_TRANSPARENT: u32 = 19; -pub const IP_RECVRETOPTS: u32 = 7; -pub const IP_ORIGDSTADDR: u32 = 20; -pub const IP_RECVORIGDSTADDR: u32 = 20; -pub const IP_MINTTL: u32 = 21; -pub const IP_NODEFRAG: u32 = 22; -pub const IP_CHECKSUM: u32 = 23; -pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; -pub const IP_RECVFRAGSIZE: u32 = 25; -pub const IP_RECVERR_RFC4884: u32 = 26; -pub const IP_PMTUDISC_DONT: u32 = 0; -pub const IP_PMTUDISC_WANT: u32 = 1; -pub const IP_PMTUDISC_DO: u32 = 2; -pub const IP_PMTUDISC_PROBE: u32 = 3; -pub const IP_PMTUDISC_INTERFACE: u32 = 4; -pub const IP_PMTUDISC_OMIT: u32 = 5; -pub const IP_MULTICAST_IF: u32 = 32; -pub const IP_MULTICAST_TTL: u32 = 33; -pub const IP_MULTICAST_LOOP: u32 = 34; -pub const IP_ADD_MEMBERSHIP: u32 = 35; -pub const IP_DROP_MEMBERSHIP: u32 = 36; -pub const IP_UNBLOCK_SOURCE: u32 = 37; -pub const IP_BLOCK_SOURCE: u32 = 38; -pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; -pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; -pub const IP_MSFILTER: u32 = 41; -pub const MCAST_JOIN_GROUP: u32 = 42; -pub const MCAST_BLOCK_SOURCE: u32 = 43; -pub const MCAST_UNBLOCK_SOURCE: u32 = 44; -pub const MCAST_LEAVE_GROUP: u32 = 45; -pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; -pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; -pub const MCAST_MSFILTER: u32 = 48; -pub const IP_MULTICAST_ALL: u32 = 49; -pub const IP_UNICAST_IF: u32 = 50; -pub const IP_LOCAL_PORT_RANGE: u32 = 51; -pub const MCAST_EXCLUDE: u32 = 0; -pub const MCAST_INCLUDE: u32 = 1; -pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; -pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const __SOCK_SIZE__: u32 = 16; -pub const IN_CLASSA_NET: u32 = 4278190080; -pub const IN_CLASSA_NSHIFT: u32 = 24; -pub const IN_CLASSA_HOST: u32 = 16777215; -pub const IN_CLASSA_MAX: u32 = 128; -pub const IN_CLASSB_NET: u32 = 4294901760; -pub const IN_CLASSB_NSHIFT: u32 = 16; -pub const IN_CLASSB_HOST: u32 = 65535; -pub const IN_CLASSB_MAX: u32 = 65536; -pub const IN_CLASSC_NET: u32 = 4294967040; -pub const IN_CLASSC_NSHIFT: u32 = 8; -pub const IN_CLASSC_HOST: u32 = 255; -pub const IN_MULTICAST_NET: u32 = 3758096384; -pub const IN_CLASSE_NET: u32 = 4294967295; -pub const IN_CLASSE_NSHIFT: u32 = 0; -pub const IN_LOOPBACKNET: u32 = 127; -pub const INADDR_LOOPBACK: u32 = 2130706433; -pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; -pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; -pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; -pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; -pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; -pub const __LITTLE_ENDIAN: u32 = 1234; -pub const IN_ACCESS: u32 = 1; -pub const IN_MODIFY: u32 = 2; -pub const IN_ATTRIB: u32 = 4; -pub const IN_CLOSE_WRITE: u32 = 8; -pub const IN_CLOSE_NOWRITE: u32 = 16; -pub const IN_OPEN: u32 = 32; -pub const IN_MOVED_FROM: u32 = 64; -pub const IN_MOVED_TO: u32 = 128; -pub const IN_CREATE: u32 = 256; -pub const IN_DELETE: u32 = 512; -pub const IN_DELETE_SELF: u32 = 1024; -pub const IN_MOVE_SELF: u32 = 2048; -pub const IN_UNMOUNT: u32 = 8192; -pub const IN_Q_OVERFLOW: u32 = 16384; -pub const IN_IGNORED: u32 = 32768; -pub const IN_CLOSE: u32 = 24; -pub const IN_MOVE: u32 = 192; -pub const IN_ONLYDIR: u32 = 16777216; -pub const IN_DONT_FOLLOW: u32 = 33554432; -pub const IN_EXCL_UNLINK: u32 = 67108864; -pub const IN_MASK_CREATE: u32 = 268435456; -pub const IN_MASK_ADD: u32 = 536870912; -pub const IN_ISDIR: u32 = 1073741824; -pub const IN_ONESHOT: u32 = 2147483648; -pub const IN_ALL_EVENTS: u32 = 4095; -pub const IN_CLOEXEC: u32 = 524288; -pub const IN_NONBLOCK: u32 = 2048; -pub const IPTOS_TOS_MASK: u32 = 30; -pub const IPTOS_LOWDELAY: u32 = 16; -pub const IPTOS_THROUGHPUT: u32 = 8; -pub const IPTOS_RELIABILITY: u32 = 4; -pub const IPTOS_MINCOST: u32 = 2; -pub const IPTOS_PREC_MASK: u32 = 224; -pub const IPTOS_PREC_NETCONTROL: u32 = 224; -pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; -pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; -pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; -pub const IPTOS_PREC_FLASH: u32 = 96; -pub const IPTOS_PREC_IMMEDIATE: u32 = 64; -pub const IPTOS_PREC_PRIORITY: u32 = 32; -pub const IPTOS_PREC_ROUTINE: u32 = 0; -pub const IPOPT_COPY: u32 = 128; -pub const IPOPT_CLASS_MASK: u32 = 96; -pub const IPOPT_NUMBER_MASK: u32 = 31; -pub const IPOPT_CONTROL: u32 = 0; -pub const IPOPT_RESERVED1: u32 = 32; -pub const IPOPT_MEASUREMENT: u32 = 64; -pub const IPOPT_RESERVED2: u32 = 96; -pub const IPOPT_END: u32 = 0; -pub const IPOPT_NOOP: u32 = 1; -pub const IPOPT_SEC: u32 = 130; -pub const IPOPT_LSRR: u32 = 131; -pub const IPOPT_TIMESTAMP: u32 = 68; -pub const IPOPT_CIPSO: u32 = 134; -pub const IPOPT_RR: u32 = 7; -pub const IPOPT_SID: u32 = 136; -pub const IPOPT_SSRR: u32 = 137; -pub const IPOPT_RA: u32 = 148; -pub const IPVERSION: u32 = 4; -pub const MAXTTL: u32 = 255; -pub const IPDEFTTL: u32 = 64; -pub const IPOPT_OPTVAL: u32 = 0; -pub const IPOPT_OLEN: u32 = 1; -pub const IPOPT_OFFSET: u32 = 2; -pub const IPOPT_MINOFF: u32 = 4; -pub const MAX_IPOPTLEN: u32 = 40; -pub const IPOPT_NOP: u32 = 1; -pub const IPOPT_EOL: u32 = 0; -pub const IPOPT_TS: u32 = 68; -pub const IPOPT_TS_TSONLY: u32 = 0; -pub const IPOPT_TS_TSANDADDR: u32 = 1; -pub const IPOPT_TS_PRESPEC: u32 = 3; -pub const IPV4_BEET_PHMAXLEN: u32 = 8; -pub const IPV6_FL_A_GET: u32 = 0; -pub const IPV6_FL_A_PUT: u32 = 1; -pub const IPV6_FL_A_RENEW: u32 = 2; -pub const IPV6_FL_F_CREATE: u32 = 1; -pub const IPV6_FL_F_EXCL: u32 = 2; -pub const IPV6_FL_F_REFLECT: u32 = 4; -pub const IPV6_FL_F_REMOTE: u32 = 8; -pub const IPV6_FL_S_NONE: u32 = 0; -pub const IPV6_FL_S_EXCL: u32 = 1; -pub const IPV6_FL_S_PROCESS: u32 = 2; -pub const IPV6_FL_S_USER: u32 = 3; -pub const IPV6_FL_S_ANY: u32 = 255; -pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; -pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; -pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; -pub const IPV6_PRIORITY_FILLER: u32 = 256; -pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; -pub const IPV6_PRIORITY_RESERVED1: u32 = 768; -pub const IPV6_PRIORITY_BULK: u32 = 1024; -pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; -pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; -pub const IPV6_PRIORITY_CONTROL: u32 = 1792; -pub const IPV6_PRIORITY_8: u32 = 2048; -pub const IPV6_PRIORITY_9: u32 = 2304; -pub const IPV6_PRIORITY_10: u32 = 2560; -pub const IPV6_PRIORITY_11: u32 = 2816; -pub const IPV6_PRIORITY_12: u32 = 3072; -pub const IPV6_PRIORITY_13: u32 = 3328; -pub const IPV6_PRIORITY_14: u32 = 3584; -pub const IPV6_PRIORITY_15: u32 = 3840; -pub const IPPROTO_HOPOPTS: u32 = 0; -pub const IPPROTO_ROUTING: u32 = 43; -pub const IPPROTO_FRAGMENT: u32 = 44; -pub const IPPROTO_ICMPV6: u32 = 58; -pub const IPPROTO_NONE: u32 = 59; -pub const IPPROTO_DSTOPTS: u32 = 60; -pub const IPPROTO_MH: u32 = 135; -pub const IPV6_TLV_PAD1: u32 = 0; -pub const IPV6_TLV_PADN: u32 = 1; -pub const IPV6_TLV_ROUTERALERT: u32 = 5; -pub const IPV6_TLV_CALIPSO: u32 = 7; -pub const IPV6_TLV_IOAM: u32 = 49; -pub const IPV6_TLV_JUMBO: u32 = 194; -pub const IPV6_TLV_HAO: u32 = 201; -pub const IPV6_ADDRFORM: u32 = 1; -pub const IPV6_2292PKTINFO: u32 = 2; -pub const IPV6_2292HOPOPTS: u32 = 3; -pub const IPV6_2292DSTOPTS: u32 = 4; -pub const IPV6_2292RTHDR: u32 = 5; -pub const IPV6_2292PKTOPTIONS: u32 = 6; -pub const IPV6_CHECKSUM: u32 = 7; -pub const IPV6_2292HOPLIMIT: u32 = 8; -pub const IPV6_NEXTHOP: u32 = 9; -pub const IPV6_AUTHHDR: u32 = 10; -pub const IPV6_FLOWINFO: u32 = 11; -pub const IPV6_UNICAST_HOPS: u32 = 16; -pub const IPV6_MULTICAST_IF: u32 = 17; -pub const IPV6_MULTICAST_HOPS: u32 = 18; -pub const IPV6_MULTICAST_LOOP: u32 = 19; -pub const IPV6_ADD_MEMBERSHIP: u32 = 20; -pub const IPV6_DROP_MEMBERSHIP: u32 = 21; -pub const IPV6_ROUTER_ALERT: u32 = 22; -pub const IPV6_MTU_DISCOVER: u32 = 23; -pub const IPV6_MTU: u32 = 24; -pub const IPV6_RECVERR: u32 = 25; -pub const IPV6_V6ONLY: u32 = 26; -pub const IPV6_JOIN_ANYCAST: u32 = 27; -pub const IPV6_LEAVE_ANYCAST: u32 = 28; -pub const IPV6_MULTICAST_ALL: u32 = 29; -pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; -pub const IPV6_RECVERR_RFC4884: u32 = 31; -pub const IPV6_PMTUDISC_DONT: u32 = 0; -pub const IPV6_PMTUDISC_WANT: u32 = 1; -pub const IPV6_PMTUDISC_DO: u32 = 2; -pub const IPV6_PMTUDISC_PROBE: u32 = 3; -pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; -pub const IPV6_PMTUDISC_OMIT: u32 = 5; -pub const IPV6_FLOWLABEL_MGR: u32 = 32; -pub const IPV6_FLOWINFO_SEND: u32 = 33; -pub const IPV6_IPSEC_POLICY: u32 = 34; -pub const IPV6_XFRM_POLICY: u32 = 35; -pub const IPV6_HDRINCL: u32 = 36; -pub const IPV6_RECVPKTINFO: u32 = 49; -pub const IPV6_PKTINFO: u32 = 50; -pub const IPV6_RECVHOPLIMIT: u32 = 51; -pub const IPV6_HOPLIMIT: u32 = 52; -pub const IPV6_RECVHOPOPTS: u32 = 53; -pub const IPV6_HOPOPTS: u32 = 54; -pub const IPV6_RTHDRDSTOPTS: u32 = 55; -pub const IPV6_RECVRTHDR: u32 = 56; -pub const IPV6_RTHDR: u32 = 57; -pub const IPV6_RECVDSTOPTS: u32 = 58; -pub const IPV6_DSTOPTS: u32 = 59; -pub const IPV6_RECVPATHMTU: u32 = 60; -pub const IPV6_PATHMTU: u32 = 61; -pub const IPV6_DONTFRAG: u32 = 62; -pub const IPV6_RECVTCLASS: u32 = 66; -pub const IPV6_TCLASS: u32 = 67; -pub const IPV6_AUTOFLOWLABEL: u32 = 70; -pub const IPV6_ADDR_PREFERENCES: u32 = 72; -pub const IPV6_PREFER_SRC_TMP: u32 = 1; -pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; -pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; -pub const IPV6_PREFER_SRC_COA: u32 = 4; -pub const IPV6_PREFER_SRC_HOME: u32 = 1024; -pub const IPV6_PREFER_SRC_CGA: u32 = 8; -pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; -pub const IPV6_MINHOPCOUNT: u32 = 73; -pub const IPV6_ORIGDSTADDR: u32 = 74; -pub const IPV6_RECVORIGDSTADDR: u32 = 74; -pub const IPV6_TRANSPARENT: u32 = 75; -pub const IPV6_UNICAST_IF: u32 = 76; -pub const IPV6_RECVFRAGSIZE: u32 = 77; -pub const IPV6_FREEBIND: u32 = 78; -pub const IPV6_MIN_MTU: u32 = 1280; -pub const IPV6_SRCRT_STRICT: u32 = 1; -pub const IPV6_SRCRT_TYPE_0: u32 = 0; -pub const IPV6_SRCRT_TYPE_2: u32 = 2; -pub const IPV6_SRCRT_TYPE_3: u32 = 3; -pub const IPV6_SRCRT_TYPE_4: u32 = 4; -pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; -pub const ADFS_SUPER_MAGIC: u32 = 44533; -pub const AFFS_SUPER_MAGIC: u32 = 44543; -pub const AFS_SUPER_MAGIC: u32 = 1397113167; -pub const AUTOFS_SUPER_MAGIC: u32 = 391; -pub const CEPH_SUPER_MAGIC: u32 = 12805120; -pub const CODA_SUPER_MAGIC: u32 = 1937076805; -pub const CRAMFS_MAGIC: u32 = 684539205; -pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; -pub const DEBUGFS_MAGIC: u32 = 1684170528; -pub const SECURITYFS_MAGIC: u32 = 1935894131; -pub const SELINUX_MAGIC: u32 = 4185718668; -pub const SMACK_MAGIC: u32 = 1128357203; -pub const RAMFS_MAGIC: u32 = 2240043254; -pub const TMPFS_MAGIC: u32 = 16914836; -pub const HUGETLBFS_MAGIC: u32 = 2508478710; -pub const SQUASHFS_MAGIC: u32 = 1936814952; -pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; -pub const EFS_SUPER_MAGIC: u32 = 4278867; -pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; -pub const EXT2_SUPER_MAGIC: u32 = 61267; -pub const EXT3_SUPER_MAGIC: u32 = 61267; -pub const XENFS_SUPER_MAGIC: u32 = 2881100148; -pub const EXT4_SUPER_MAGIC: u32 = 61267; -pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; -pub const NILFS_SUPER_MAGIC: u32 = 13364; -pub const F2FS_SUPER_MAGIC: u32 = 4076150800; -pub const HPFS_SUPER_MAGIC: u32 = 4187351113; -pub const ISOFS_SUPER_MAGIC: u32 = 38496; -pub const JFFS2_SUPER_MAGIC: u32 = 29366; -pub const XFS_SUPER_MAGIC: u32 = 1481003842; -pub const PSTOREFS_MAGIC: u32 = 1634035564; -pub const EFIVARFS_MAGIC: u32 = 3730735588; -pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; -pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; -pub const FUSE_SUPER_MAGIC: u32 = 1702057286; -pub const MINIX_SUPER_MAGIC: u32 = 4991; -pub const MINIX_SUPER_MAGIC2: u32 = 5007; -pub const MINIX2_SUPER_MAGIC: u32 = 9320; -pub const MINIX2_SUPER_MAGIC2: u32 = 9336; -pub const MINIX3_SUPER_MAGIC: u32 = 19802; -pub const MSDOS_SUPER_MAGIC: u32 = 19780; -pub const EXFAT_SUPER_MAGIC: u32 = 538032816; -pub const NCP_SUPER_MAGIC: u32 = 22092; -pub const NFS_SUPER_MAGIC: u32 = 26985; -pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; -pub const OPENPROM_SUPER_MAGIC: u32 = 40865; -pub const QNX4_SUPER_MAGIC: u32 = 47; -pub const QNX6_SUPER_MAGIC: u32 = 1746473250; -pub const AFS_FS_MAGIC: u32 = 1799439955; -pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; -pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0"; -pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0"; -pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0"; -pub const SMB_SUPER_MAGIC: u32 = 20859; -pub const CIFS_SUPER_MAGIC: u32 = 4283649346; -pub const SMB2_SUPER_MAGIC: u32 = 4266872130; -pub const CGROUP_SUPER_MAGIC: u32 = 2613483; -pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; -pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; -pub const STACK_END_MAGIC: u32 = 1470918301; -pub const TRACEFS_MAGIC: u32 = 1953653091; -pub const V9FS_MAGIC: u32 = 16914839; -pub const BDEVFS_MAGIC: u32 = 1650746742; -pub const DAXFS_MAGIC: u32 = 1684300152; -pub const BINFMTFS_MAGIC: u32 = 1112100429; -pub const DEVPTS_SUPER_MAGIC: u32 = 7377; -pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; -pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; -pub const PIPEFS_MAGIC: u32 = 1346981957; -pub const PROC_SUPER_MAGIC: u32 = 40864; -pub const SOCKFS_MAGIC: u32 = 1397703499; -pub const SYSFS_MAGIC: u32 = 1650812274; -pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; -pub const MTD_INODE_FS_MAGIC: u32 = 288389204; -pub const ANON_INODE_FS_MAGIC: u32 = 151263540; -pub const BTRFS_TEST_MAGIC: u32 = 1936880249; -pub const NSFS_MAGIC: u32 = 1853056627; -pub const BPF_FS_MAGIC: u32 = 3405662737; -pub const AAFS_MAGIC: u32 = 1513908720; -pub const ZONEFS_MAGIC: u32 = 1515144787; -pub const UDF_SUPER_MAGIC: u32 = 352400198; -pub const DMA_BUF_MAGIC: u32 = 1145913666; -pub const DEVMEM_MAGIC: u32 = 1162691661; -pub const SECRETMEM_MAGIC: u32 = 1397048141; -pub const PROT_READ: u32 = 1; -pub const PROT_WRITE: u32 = 2; -pub const PROT_EXEC: u32 = 4; -pub const PROT_SEM: u32 = 8; -pub const PROT_NONE: u32 = 0; -pub const PROT_GROWSDOWN: u32 = 16777216; -pub const PROT_GROWSUP: u32 = 33554432; -pub const MAP_TYPE: u32 = 15; -pub const MAP_FIXED: u32 = 16; -pub const MAP_ANONYMOUS: u32 = 32; -pub const MAP_POPULATE: u32 = 32768; -pub const MAP_NONBLOCK: u32 = 65536; -pub const MAP_STACK: u32 = 131072; -pub const MAP_HUGETLB: u32 = 262144; -pub const MAP_SYNC: u32 = 524288; -pub const MAP_FIXED_NOREPLACE: u32 = 1048576; -pub const MAP_UNINITIALIZED: u32 = 67108864; -pub const MLOCK_ONFAULT: u32 = 1; -pub const MS_ASYNC: u32 = 1; -pub const MS_INVALIDATE: u32 = 2; -pub const MS_SYNC: u32 = 4; -pub const MADV_NORMAL: u32 = 0; -pub const MADV_RANDOM: u32 = 1; -pub const MADV_SEQUENTIAL: u32 = 2; -pub const MADV_WILLNEED: u32 = 3; -pub const MADV_DONTNEED: u32 = 4; -pub const MADV_FREE: u32 = 8; -pub const MADV_REMOVE: u32 = 9; -pub const MADV_DONTFORK: u32 = 10; -pub const MADV_DOFORK: u32 = 11; -pub const MADV_HWPOISON: u32 = 100; -pub const MADV_SOFT_OFFLINE: u32 = 101; -pub const MADV_MERGEABLE: u32 = 12; -pub const MADV_UNMERGEABLE: u32 = 13; -pub const MADV_HUGEPAGE: u32 = 14; -pub const MADV_NOHUGEPAGE: u32 = 15; -pub const MADV_DONTDUMP: u32 = 16; -pub const MADV_DODUMP: u32 = 17; -pub const MADV_WIPEONFORK: u32 = 18; -pub const MADV_KEEPONFORK: u32 = 19; -pub const MADV_COLD: u32 = 20; -pub const MADV_PAGEOUT: u32 = 21; -pub const MADV_POPULATE_READ: u32 = 22; -pub const MADV_POPULATE_WRITE: u32 = 23; -pub const MADV_DONTNEED_LOCKED: u32 = 24; -pub const MADV_COLLAPSE: u32 = 25; -pub const MAP_FILE: u32 = 0; -pub const PKEY_DISABLE_ACCESS: u32 = 1; -pub const PKEY_DISABLE_WRITE: u32 = 2; -pub const PKEY_ACCESS_MASK: u32 = 3; -pub const MAP_GROWSDOWN: u32 = 256; -pub const MAP_DENYWRITE: u32 = 2048; -pub const MAP_EXECUTABLE: u32 = 4096; -pub const MAP_LOCKED: u32 = 8192; -pub const MAP_NORESERVE: u32 = 16384; -pub const MCL_CURRENT: u32 = 1; -pub const MCL_FUTURE: u32 = 2; -pub const MCL_ONFAULT: u32 = 4; -pub const PROT_BTI: u32 = 16; -pub const PROT_MTE: u32 = 32; -pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; -pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; -pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; -pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; -pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; -pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; -pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; -pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; -pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; -pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; -pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; -pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; -pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; -pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; -pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; -pub const MREMAP_MAYMOVE: u32 = 1; -pub const MREMAP_FIXED: u32 = 2; -pub const MREMAP_DONTUNMAP: u32 = 4; -pub const OVERCOMMIT_GUESS: u32 = 0; -pub const OVERCOMMIT_ALWAYS: u32 = 1; -pub const OVERCOMMIT_NEVER: u32 = 2; -pub const MAP_SHARED: u32 = 1; -pub const MAP_PRIVATE: u32 = 2; -pub const MAP_SHARED_VALIDATE: u32 = 3; -pub const MAP_HUGE_SHIFT: u32 = 26; -pub const MAP_HUGE_MASK: u32 = 63; -pub const MAP_HUGE_16KB: u32 = 939524096; -pub const MAP_HUGE_64KB: u32 = 1073741824; -pub const MAP_HUGE_512KB: u32 = 1275068416; -pub const MAP_HUGE_1MB: u32 = 1342177280; -pub const MAP_HUGE_2MB: u32 = 1409286144; -pub const MAP_HUGE_8MB: u32 = 1543503872; -pub const MAP_HUGE_16MB: u32 = 1610612736; -pub const MAP_HUGE_32MB: u32 = 1677721600; -pub const MAP_HUGE_256MB: u32 = 1879048192; -pub const MAP_HUGE_512MB: u32 = 1946157056; -pub const MAP_HUGE_1GB: u32 = 2013265920; -pub const MAP_HUGE_2GB: u32 = 2080374784; -pub const MAP_HUGE_16GB: u32 = 2281701376; -pub const SIOCGSTAMP_OLD: u32 = 35078; -pub const SIOCGSTAMPNS_OLD: u32 = 35079; -pub const SOL_SOCKET: u32 = 1; -pub const SO_DEBUG: u32 = 1; -pub const SO_REUSEADDR: u32 = 2; -pub const SO_TYPE: u32 = 3; -pub const SO_ERROR: u32 = 4; -pub const SO_DONTROUTE: u32 = 5; -pub const SO_BROADCAST: u32 = 6; -pub const SO_SNDBUF: u32 = 7; -pub const SO_RCVBUF: u32 = 8; -pub const SO_SNDBUFFORCE: u32 = 32; -pub const SO_RCVBUFFORCE: u32 = 33; -pub const SO_KEEPALIVE: u32 = 9; -pub const SO_OOBINLINE: u32 = 10; -pub const SO_NO_CHECK: u32 = 11; -pub const SO_PRIORITY: u32 = 12; -pub const SO_LINGER: u32 = 13; -pub const SO_BSDCOMPAT: u32 = 14; -pub const SO_REUSEPORT: u32 = 15; -pub const SO_PASSCRED: u32 = 16; -pub const SO_PEERCRED: u32 = 17; -pub const SO_RCVLOWAT: u32 = 18; -pub const SO_SNDLOWAT: u32 = 19; -pub const SO_RCVTIMEO_OLD: u32 = 20; -pub const SO_SNDTIMEO_OLD: u32 = 21; -pub const SO_SECURITY_AUTHENTICATION: u32 = 22; -pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; -pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; -pub const SO_BINDTODEVICE: u32 = 25; -pub const SO_ATTACH_FILTER: u32 = 26; -pub const SO_DETACH_FILTER: u32 = 27; -pub const SO_GET_FILTER: u32 = 26; -pub const SO_PEERNAME: u32 = 28; -pub const SO_ACCEPTCONN: u32 = 30; -pub const SO_PEERSEC: u32 = 31; -pub const SO_PASSSEC: u32 = 34; -pub const SO_MARK: u32 = 36; -pub const SO_PROTOCOL: u32 = 38; -pub const SO_DOMAIN: u32 = 39; -pub const SO_RXQ_OVFL: u32 = 40; -pub const SO_WIFI_STATUS: u32 = 41; -pub const SCM_WIFI_STATUS: u32 = 41; -pub const SO_PEEK_OFF: u32 = 42; -pub const SO_NOFCS: u32 = 43; -pub const SO_LOCK_FILTER: u32 = 44; -pub const SO_SELECT_ERR_QUEUE: u32 = 45; -pub const SO_BUSY_POLL: u32 = 46; -pub const SO_MAX_PACING_RATE: u32 = 47; -pub const SO_BPF_EXTENSIONS: u32 = 48; -pub const SO_INCOMING_CPU: u32 = 49; -pub const SO_ATTACH_BPF: u32 = 50; -pub const SO_DETACH_BPF: u32 = 27; -pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; -pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; -pub const SO_CNX_ADVICE: u32 = 53; -pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; -pub const SO_MEMINFO: u32 = 55; -pub const SO_INCOMING_NAPI_ID: u32 = 56; -pub const SO_COOKIE: u32 = 57; -pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; -pub const SO_PEERGROUPS: u32 = 59; -pub const SO_ZEROCOPY: u32 = 60; -pub const SO_TXTIME: u32 = 61; -pub const SCM_TXTIME: u32 = 61; -pub const SO_BINDTOIFINDEX: u32 = 62; -pub const SO_TIMESTAMP_OLD: u32 = 29; -pub const SO_TIMESTAMPNS_OLD: u32 = 35; -pub const SO_TIMESTAMPING_OLD: u32 = 37; -pub const SO_TIMESTAMP_NEW: u32 = 63; -pub const SO_TIMESTAMPNS_NEW: u32 = 64; -pub const SO_TIMESTAMPING_NEW: u32 = 65; -pub const SO_RCVTIMEO_NEW: u32 = 66; -pub const SO_SNDTIMEO_NEW: u32 = 67; -pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; -pub const SO_PREFER_BUSY_POLL: u32 = 69; -pub const SO_BUSY_POLL_BUDGET: u32 = 70; -pub const SO_NETNS_COOKIE: u32 = 71; -pub const SO_BUF_LOCK: u32 = 72; -pub const SO_RESERVE_MEM: u32 = 73; -pub const SO_TXREHASH: u32 = 74; -pub const SO_RCVMARK: u32 = 75; -pub const SO_TIMESTAMP: u32 = 29; -pub const SO_TIMESTAMPNS: u32 = 35; -pub const SO_TIMESTAMPING: u32 = 37; -pub const SO_RCVTIMEO: u32 = 20; -pub const SO_SNDTIMEO: u32 = 21; -pub const SCM_TIMESTAMP: u32 = 29; -pub const SCM_TIMESTAMPNS: u32 = 35; -pub const SCM_TIMESTAMPING: u32 = 37; -pub const SYS_SOCKET: u32 = 1; -pub const SYS_BIND: u32 = 2; -pub const SYS_CONNECT: u32 = 3; -pub const SYS_LISTEN: u32 = 4; -pub const SYS_ACCEPT: u32 = 5; -pub const SYS_GETSOCKNAME: u32 = 6; -pub const SYS_GETPEERNAME: u32 = 7; -pub const SYS_SOCKETPAIR: u32 = 8; -pub const SYS_SEND: u32 = 9; -pub const SYS_RECV: u32 = 10; -pub const SYS_SENDTO: u32 = 11; -pub const SYS_RECVFROM: u32 = 12; -pub const SYS_SHUTDOWN: u32 = 13; -pub const SYS_SETSOCKOPT: u32 = 14; -pub const SYS_GETSOCKOPT: u32 = 15; -pub const SYS_SENDMSG: u32 = 16; -pub const SYS_RECVMSG: u32 = 17; -pub const SYS_ACCEPT4: u32 = 18; -pub const SYS_RECVMMSG: u32 = 19; -pub const SYS_SENDMMSG: u32 = 20; -pub const __SO_ACCEPTCON: u32 = 65536; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const POLLWRNORM: u32 = 256; -pub const POLLWRBAND: u32 = 512; -pub const POLLMSG: u32 = 1024; -pub const POLLREMOVE: u32 = 4096; -pub const POLLRDHUP: u32 = 8192; -pub const PR_SET_PDEATHSIG: u32 = 1; -pub const PR_GET_PDEATHSIG: u32 = 2; -pub const PR_GET_DUMPABLE: u32 = 3; -pub const PR_SET_DUMPABLE: u32 = 4; -pub const PR_GET_UNALIGN: u32 = 5; -pub const PR_SET_UNALIGN: u32 = 6; -pub const PR_UNALIGN_NOPRINT: u32 = 1; -pub const PR_UNALIGN_SIGBUS: u32 = 2; -pub const PR_GET_KEEPCAPS: u32 = 7; -pub const PR_SET_KEEPCAPS: u32 = 8; -pub const PR_GET_FPEMU: u32 = 9; -pub const PR_SET_FPEMU: u32 = 10; -pub const PR_FPEMU_NOPRINT: u32 = 1; -pub const PR_FPEMU_SIGFPE: u32 = 2; -pub const PR_GET_FPEXC: u32 = 11; -pub const PR_SET_FPEXC: u32 = 12; -pub const PR_FP_EXC_SW_ENABLE: u32 = 128; -pub const PR_FP_EXC_DIV: u32 = 65536; -pub const PR_FP_EXC_OVF: u32 = 131072; -pub const PR_FP_EXC_UND: u32 = 262144; -pub const PR_FP_EXC_RES: u32 = 524288; -pub const PR_FP_EXC_INV: u32 = 1048576; -pub const PR_FP_EXC_DISABLED: u32 = 0; -pub const PR_FP_EXC_NONRECOV: u32 = 1; -pub const PR_FP_EXC_ASYNC: u32 = 2; -pub const PR_FP_EXC_PRECISE: u32 = 3; -pub const PR_GET_TIMING: u32 = 13; -pub const PR_SET_TIMING: u32 = 14; -pub const PR_TIMING_STATISTICAL: u32 = 0; -pub const PR_TIMING_TIMESTAMP: u32 = 1; -pub const PR_SET_NAME: u32 = 15; -pub const PR_GET_NAME: u32 = 16; -pub const PR_GET_ENDIAN: u32 = 19; -pub const PR_SET_ENDIAN: u32 = 20; -pub const PR_ENDIAN_BIG: u32 = 0; -pub const PR_ENDIAN_LITTLE: u32 = 1; -pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; -pub const PR_GET_SECCOMP: u32 = 21; -pub const PR_SET_SECCOMP: u32 = 22; -pub const PR_CAPBSET_READ: u32 = 23; -pub const PR_CAPBSET_DROP: u32 = 24; -pub const PR_GET_TSC: u32 = 25; -pub const PR_SET_TSC: u32 = 26; -pub const PR_TSC_ENABLE: u32 = 1; -pub const PR_TSC_SIGSEGV: u32 = 2; -pub const PR_GET_SECUREBITS: u32 = 27; -pub const PR_SET_SECUREBITS: u32 = 28; -pub const PR_SET_TIMERSLACK: u32 = 29; -pub const PR_GET_TIMERSLACK: u32 = 30; -pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; -pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; -pub const PR_MCE_KILL: u32 = 33; -pub const PR_MCE_KILL_CLEAR: u32 = 0; -pub const PR_MCE_KILL_SET: u32 = 1; -pub const PR_MCE_KILL_LATE: u32 = 0; -pub const PR_MCE_KILL_EARLY: u32 = 1; -pub const PR_MCE_KILL_DEFAULT: u32 = 2; -pub const PR_MCE_KILL_GET: u32 = 34; -pub const PR_SET_MM: u32 = 35; -pub const PR_SET_MM_START_CODE: u32 = 1; -pub const PR_SET_MM_END_CODE: u32 = 2; -pub const PR_SET_MM_START_DATA: u32 = 3; -pub const PR_SET_MM_END_DATA: u32 = 4; -pub const PR_SET_MM_START_STACK: u32 = 5; -pub const PR_SET_MM_START_BRK: u32 = 6; -pub const PR_SET_MM_BRK: u32 = 7; -pub const PR_SET_MM_ARG_START: u32 = 8; -pub const PR_SET_MM_ARG_END: u32 = 9; -pub const PR_SET_MM_ENV_START: u32 = 10; -pub const PR_SET_MM_ENV_END: u32 = 11; -pub const PR_SET_MM_AUXV: u32 = 12; -pub const PR_SET_MM_EXE_FILE: u32 = 13; -pub const PR_SET_MM_MAP: u32 = 14; -pub const PR_SET_MM_MAP_SIZE: u32 = 15; -pub const PR_SET_PTRACER: u32 = 1499557217; -pub const PR_SET_CHILD_SUBREAPER: u32 = 36; -pub const PR_GET_CHILD_SUBREAPER: u32 = 37; -pub const PR_SET_NO_NEW_PRIVS: u32 = 38; -pub const PR_GET_NO_NEW_PRIVS: u32 = 39; -pub const PR_GET_TID_ADDRESS: u32 = 40; -pub const PR_SET_THP_DISABLE: u32 = 41; -pub const PR_GET_THP_DISABLE: u32 = 42; -pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; -pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; -pub const PR_SET_FP_MODE: u32 = 45; -pub const PR_GET_FP_MODE: u32 = 46; -pub const PR_FP_MODE_FR: u32 = 1; -pub const PR_FP_MODE_FRE: u32 = 2; -pub const PR_CAP_AMBIENT: u32 = 47; -pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; -pub const PR_CAP_AMBIENT_RAISE: u32 = 2; -pub const PR_CAP_AMBIENT_LOWER: u32 = 3; -pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; -pub const PR_SVE_SET_VL: u32 = 50; -pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SVE_GET_VL: u32 = 51; -pub const PR_SVE_VL_LEN_MASK: u32 = 65535; -pub const PR_SVE_VL_INHERIT: u32 = 131072; -pub const PR_GET_SPECULATION_CTRL: u32 = 52; -pub const PR_SET_SPECULATION_CTRL: u32 = 53; -pub const PR_SPEC_STORE_BYPASS: u32 = 0; -pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; -pub const PR_SPEC_L1D_FLUSH: u32 = 2; -pub const PR_SPEC_NOT_AFFECTED: u32 = 0; -pub const PR_SPEC_PRCTL: u32 = 1; -pub const PR_SPEC_ENABLE: u32 = 2; -pub const PR_SPEC_DISABLE: u32 = 4; -pub const PR_SPEC_FORCE_DISABLE: u32 = 8; -pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; -pub const PR_PAC_RESET_KEYS: u32 = 54; -pub const PR_PAC_APIAKEY: u32 = 1; -pub const PR_PAC_APIBKEY: u32 = 2; -pub const PR_PAC_APDAKEY: u32 = 4; -pub const PR_PAC_APDBKEY: u32 = 8; -pub const PR_PAC_APGAKEY: u32 = 16; -pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; -pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; -pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; -pub const PR_MTE_TCF_NONE: u32 = 0; -pub const PR_MTE_TCF_SYNC: u32 = 2; -pub const PR_MTE_TCF_ASYNC: u32 = 4; -pub const PR_MTE_TCF_MASK: u32 = 6; -pub const PR_MTE_TAG_SHIFT: u32 = 3; -pub const PR_MTE_TAG_MASK: u32 = 524280; -pub const PR_MTE_TCF_SHIFT: u32 = 1; -pub const PR_SET_IO_FLUSHER: u32 = 57; -pub const PR_GET_IO_FLUSHER: u32 = 58; -pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; -pub const PR_SYS_DISPATCH_OFF: u32 = 0; -pub const PR_SYS_DISPATCH_ON: u32 = 1; -pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; -pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; -pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; -pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; -pub const PR_SCHED_CORE: u32 = 62; -pub const PR_SCHED_CORE_GET: u32 = 0; -pub const PR_SCHED_CORE_CREATE: u32 = 1; -pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; -pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; -pub const PR_SCHED_CORE_MAX: u32 = 4; -pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; -pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; -pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; -pub const PR_SME_SET_VL: u32 = 63; -pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SME_GET_VL: u32 = 64; -pub const PR_SME_VL_LEN_MASK: u32 = 65535; -pub const PR_SME_VL_INHERIT: u32 = 131072; -pub const PR_SET_MDWE: u32 = 65; -pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; -pub const PR_GET_MDWE: u32 = 66; -pub const PR_SET_VMA: u32 = 1398164801; -pub const PR_SET_VMA_ANON_NAME: u32 = 0; -pub const GRND_NONBLOCK: u32 = 1; -pub const GRND_RANDOM: u32 = 2; -pub const GRND_INSECURE: u32 = 4; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -pub const CLOCK_REALTIME: u32 = 0; -pub const CLOCK_MONOTONIC: u32 = 1; -pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; -pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; -pub const CLOCK_MONOTONIC_RAW: u32 = 4; -pub const CLOCK_REALTIME_COARSE: u32 = 5; -pub const CLOCK_MONOTONIC_COARSE: u32 = 6; -pub const CLOCK_BOOTTIME: u32 = 7; -pub const CLOCK_REALTIME_ALARM: u32 = 8; -pub const CLOCK_BOOTTIME_ALARM: u32 = 9; -pub const CLOCK_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const RUSAGE_SELF: u32 = 0; -pub const RUSAGE_CHILDREN: i32 = -1; -pub const RUSAGE_BOTH: i32 = -2; -pub const RUSAGE_THREAD: u32 = 1; -pub const RLIM64_INFINITY: i32 = -1; -pub const PRIO_MIN: i32 = -20; -pub const PRIO_MAX: u32 = 20; -pub const PRIO_PROCESS: u32 = 0; -pub const PRIO_PGRP: u32 = 1; -pub const PRIO_USER: u32 = 2; -pub const _STK_LIM: u32 = 8388608; -pub const MLOCK_LIMIT: u32 = 8388608; -pub const RLIMIT_CPU: u32 = 0; -pub const RLIMIT_FSIZE: u32 = 1; -pub const RLIMIT_DATA: u32 = 2; -pub const RLIMIT_STACK: u32 = 3; -pub const RLIMIT_CORE: u32 = 4; -pub const RLIMIT_RSS: u32 = 5; -pub const RLIMIT_NPROC: u32 = 6; -pub const RLIMIT_NOFILE: u32 = 7; -pub const RLIMIT_MEMLOCK: u32 = 8; -pub const RLIMIT_AS: u32 = 9; -pub const RLIMIT_LOCKS: u32 = 10; -pub const RLIMIT_SIGPENDING: u32 = 11; -pub const RLIMIT_MSGQUEUE: u32 = 12; -pub const RLIMIT_NICE: u32 = 13; -pub const RLIMIT_RTPRIO: u32 = 14; -pub const RLIMIT_RTTIME: u32 = 15; -pub const RLIM_NLIMITS: u32 = 16; -pub const RLIM_INFINITY: i32 = -1; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const SA_RESTORER: u32 = 67108864; -pub const MINSIGSTKSZ: u32 = 5120; -pub const SIGSTKSZ: u32 = 16384; -pub const _NSIG: u32 = 64; -pub const _NSIG_BPW: u32 = 64; -pub const _NSIG_WORDS: u32 = 1; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGBUS: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGUSR1: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGUSR2: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGSTKFLT: u32 = 16; -pub const SIGCHLD: u32 = 17; -pub const SIGCONT: u32 = 18; -pub const SIGSTOP: u32 = 19; -pub const SIGTSTP: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGURG: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGIO: u32 = 29; -pub const SIGPOLL: u32 = 29; -pub const SIGPWR: u32 = 30; -pub const SIGSYS: u32 = 31; -pub const SIGUNUSED: u32 = 31; -pub const SIGRTMIN: u32 = 32; -pub const SIGRTMAX: u32 = 64; -pub const SA_NOCLDSTOP: u32 = 1; -pub const SA_NOCLDWAIT: u32 = 2; -pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; -pub const SA_ONSTACK: u32 = 134217728; -pub const SA_RESTART: u32 = 268435456; -pub const SA_NODEFER: u32 = 1073741824; -pub const SA_RESETHAND: u32 = 2147483648; -pub const SA_NOMASK: u32 = 1073741824; -pub const SA_ONESHOT: u32 = 2147483648; -pub const SIG_BLOCK: u32 = 0; -pub const SIG_UNBLOCK: u32 = 1; -pub const SIG_SETMASK: u32 = 2; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; -pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const S_IFMT: u32 = 61440; -pub const S_IFSOCK: u32 = 49152; -pub const S_IFLNK: u32 = 40960; -pub const S_IFREG: u32 = 32768; -pub const S_IFBLK: u32 = 24576; -pub const S_IFDIR: u32 = 16384; -pub const S_IFCHR: u32 = 8192; -pub const S_IFIFO: u32 = 4096; -pub const S_ISUID: u32 = 2048; -pub const S_ISGID: u32 = 1024; -pub const S_ISVTX: u32 = 512; -pub const S_IRWXU: u32 = 448; -pub const S_IRUSR: u32 = 256; -pub const S_IWUSR: u32 = 128; -pub const S_IXUSR: u32 = 64; -pub const S_IRWXG: u32 = 56; -pub const S_IRGRP: u32 = 32; -pub const S_IWGRP: u32 = 16; -pub const S_IXGRP: u32 = 8; -pub const S_IRWXO: u32 = 7; -pub const S_IROTH: u32 = 4; -pub const S_IWOTH: u32 = 2; -pub const S_IXOTH: u32 = 1; -pub const STATX_TYPE: u32 = 1; -pub const STATX_MODE: u32 = 2; -pub const STATX_NLINK: u32 = 4; -pub const STATX_UID: u32 = 8; -pub const STATX_GID: u32 = 16; -pub const STATX_ATIME: u32 = 32; -pub const STATX_MTIME: u32 = 64; -pub const STATX_CTIME: u32 = 128; -pub const STATX_INO: u32 = 256; -pub const STATX_SIZE: u32 = 512; -pub const STATX_BLOCKS: u32 = 1024; -pub const STATX_BASIC_STATS: u32 = 2047; -pub const STATX_BTIME: u32 = 2048; -pub const STATX_MNT_ID: u32 = 4096; -pub const STATX_DIOALIGN: u32 = 8192; -pub const STATX__RESERVED: u32 = 2147483648; -pub const STATX_ALL: u32 = 4095; -pub const STATX_ATTR_COMPRESSED: u32 = 4; -pub const STATX_ATTR_IMMUTABLE: u32 = 16; -pub const STATX_ATTR_APPEND: u32 = 32; -pub const STATX_ATTR_NODUMP: u32 = 64; -pub const STATX_ATTR_ENCRYPTED: u32 = 2048; -pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; -pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; -pub const STATX_ATTR_VERITY: u32 = 1048576; -pub const STATX_ATTR_DAX: u32 = 2097152; -pub const SI_LOAD_SHIFT: u32 = 16; -pub const TCP_MSS_DEFAULT: u32 = 536; -pub const TCP_MSS_DESIRED: u32 = 1220; -pub const TCP_NODELAY: u32 = 1; -pub const TCP_MAXSEG: u32 = 2; -pub const TCP_CORK: u32 = 3; -pub const TCP_KEEPIDLE: u32 = 4; -pub const TCP_KEEPINTVL: u32 = 5; -pub const TCP_KEEPCNT: u32 = 6; -pub const TCP_SYNCNT: u32 = 7; -pub const TCP_LINGER2: u32 = 8; -pub const TCP_DEFER_ACCEPT: u32 = 9; -pub const TCP_WINDOW_CLAMP: u32 = 10; -pub const TCP_INFO: u32 = 11; -pub const TCP_QUICKACK: u32 = 12; -pub const TCP_CONGESTION: u32 = 13; -pub const TCP_MD5SIG: u32 = 14; -pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; -pub const TCP_THIN_DUPACK: u32 = 17; -pub const TCP_USER_TIMEOUT: u32 = 18; -pub const TCP_REPAIR: u32 = 19; -pub const TCP_REPAIR_QUEUE: u32 = 20; -pub const TCP_QUEUE_SEQ: u32 = 21; -pub const TCP_REPAIR_OPTIONS: u32 = 22; -pub const TCP_FASTOPEN: u32 = 23; -pub const TCP_TIMESTAMP: u32 = 24; -pub const TCP_NOTSENT_LOWAT: u32 = 25; -pub const TCP_CC_INFO: u32 = 26; -pub const TCP_SAVE_SYN: u32 = 27; -pub const TCP_SAVED_SYN: u32 = 28; -pub const TCP_REPAIR_WINDOW: u32 = 29; -pub const TCP_FASTOPEN_CONNECT: u32 = 30; -pub const TCP_ULP: u32 = 31; -pub const TCP_MD5SIG_EXT: u32 = 32; -pub const TCP_FASTOPEN_KEY: u32 = 33; -pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; -pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; -pub const TCP_INQ: u32 = 36; -pub const TCP_CM_INQ: u32 = 36; -pub const TCP_TX_DELAY: u32 = 37; -pub const TCP_REPAIR_ON: u32 = 1; -pub const TCP_REPAIR_OFF: u32 = 0; -pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; -pub const TCPI_OPT_TIMESTAMPS: u32 = 1; -pub const TCPI_OPT_SACK: u32 = 2; -pub const TCPI_OPT_WSCALE: u32 = 4; -pub const TCPI_OPT_ECN: u32 = 8; -pub const TCPI_OPT_ECN_SEEN: u32 = 16; -pub const TCPI_OPT_SYN_DATA: u32 = 32; -pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; -pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; -pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; -pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; -pub const IGNBRK: u32 = 1; -pub const BRKINT: u32 = 2; -pub const IGNPAR: u32 = 4; -pub const PARMRK: u32 = 8; -pub const INPCK: u32 = 16; -pub const ISTRIP: u32 = 32; -pub const INLCR: u32 = 64; -pub const IGNCR: u32 = 128; -pub const ICRNL: u32 = 256; -pub const IXANY: u32 = 2048; -pub const OPOST: u32 = 1; -pub const OCRNL: u32 = 8; -pub const ONOCR: u32 = 16; -pub const ONLRET: u32 = 32; -pub const OFILL: u32 = 64; -pub const OFDEL: u32 = 128; -pub const B0: u32 = 0; -pub const B50: u32 = 1; -pub const B75: u32 = 2; -pub const B110: u32 = 3; -pub const B134: u32 = 4; -pub const B150: u32 = 5; -pub const B200: u32 = 6; -pub const B300: u32 = 7; -pub const B600: u32 = 8; -pub const B1200: u32 = 9; -pub const B1800: u32 = 10; -pub const B2400: u32 = 11; -pub const B4800: u32 = 12; -pub const B9600: u32 = 13; -pub const B19200: u32 = 14; -pub const B38400: u32 = 15; -pub const EXTA: u32 = 14; -pub const EXTB: u32 = 15; -pub const ADDRB: u32 = 536870912; -pub const CMSPAR: u32 = 1073741824; -pub const CRTSCTS: u32 = 2147483648; -pub const IBSHIFT: u32 = 16; -pub const TCOOFF: u32 = 0; -pub const TCOON: u32 = 1; -pub const TCIOFF: u32 = 2; -pub const TCION: u32 = 3; -pub const TCIFLUSH: u32 = 0; -pub const TCOFLUSH: u32 = 1; -pub const TCIOFLUSH: u32 = 2; -pub const NCCS: u32 = 19; -pub const VINTR: u32 = 0; -pub const VQUIT: u32 = 1; -pub const VERASE: u32 = 2; -pub const VKILL: u32 = 3; -pub const VEOF: u32 = 4; -pub const VTIME: u32 = 5; -pub const VMIN: u32 = 6; -pub const VSWTC: u32 = 7; -pub const VSTART: u32 = 8; -pub const VSTOP: u32 = 9; -pub const VSUSP: u32 = 10; -pub const VEOL: u32 = 11; -pub const VREPRINT: u32 = 12; -pub const VDISCARD: u32 = 13; -pub const VWERASE: u32 = 14; -pub const VLNEXT: u32 = 15; -pub const VEOL2: u32 = 16; -pub const IUCLC: u32 = 512; -pub const IXON: u32 = 1024; -pub const IXOFF: u32 = 4096; -pub const IMAXBEL: u32 = 8192; -pub const IUTF8: u32 = 16384; -pub const OLCUC: u32 = 2; -pub const ONLCR: u32 = 4; -pub const NLDLY: u32 = 256; -pub const NL0: u32 = 0; -pub const NL1: u32 = 256; -pub const CRDLY: u32 = 1536; -pub const CR0: u32 = 0; -pub const CR1: u32 = 512; -pub const CR2: u32 = 1024; -pub const CR3: u32 = 1536; -pub const TABDLY: u32 = 6144; -pub const TAB0: u32 = 0; -pub const TAB1: u32 = 2048; -pub const TAB2: u32 = 4096; -pub const TAB3: u32 = 6144; -pub const XTABS: u32 = 6144; -pub const BSDLY: u32 = 8192; -pub const BS0: u32 = 0; -pub const BS1: u32 = 8192; -pub const VTDLY: u32 = 16384; -pub const VT0: u32 = 0; -pub const VT1: u32 = 16384; -pub const FFDLY: u32 = 32768; -pub const FF0: u32 = 0; -pub const FF1: u32 = 32768; -pub const CBAUD: u32 = 4111; -pub const CSIZE: u32 = 48; -pub const CS5: u32 = 0; -pub const CS6: u32 = 16; -pub const CS7: u32 = 32; -pub const CS8: u32 = 48; -pub const CSTOPB: u32 = 64; -pub const CREAD: u32 = 128; -pub const PARENB: u32 = 256; -pub const PARODD: u32 = 512; -pub const HUPCL: u32 = 1024; -pub const CLOCAL: u32 = 2048; -pub const CBAUDEX: u32 = 4096; -pub const BOTHER: u32 = 4096; -pub const B57600: u32 = 4097; -pub const B115200: u32 = 4098; -pub const B230400: u32 = 4099; -pub const B460800: u32 = 4100; -pub const B500000: u32 = 4101; -pub const B576000: u32 = 4102; -pub const B921600: u32 = 4103; -pub const B1000000: u32 = 4104; -pub const B1152000: u32 = 4105; -pub const B1500000: u32 = 4106; -pub const B2000000: u32 = 4107; -pub const B2500000: u32 = 4108; -pub const B3000000: u32 = 4109; -pub const B3500000: u32 = 4110; -pub const B4000000: u32 = 4111; -pub const CIBAUD: u32 = 269418496; -pub const ISIG: u32 = 1; -pub const ICANON: u32 = 2; -pub const XCASE: u32 = 4; -pub const ECHO: u32 = 8; -pub const ECHOE: u32 = 16; -pub const ECHOK: u32 = 32; -pub const ECHONL: u32 = 64; -pub const NOFLSH: u32 = 128; -pub const TOSTOP: u32 = 256; -pub const ECHOCTL: u32 = 512; -pub const ECHOPRT: u32 = 1024; -pub const ECHOKE: u32 = 2048; -pub const FLUSHO: u32 = 4096; -pub const PENDIN: u32 = 16384; -pub const IEXTEN: u32 = 32768; -pub const EXTPROC: u32 = 65536; -pub const TCSANOW: u32 = 0; -pub const TCSADRAIN: u32 = 1; -pub const TCSAFLUSH: u32 = 2; -pub const TIOCPKT_DATA: u32 = 0; -pub const TIOCPKT_FLUSHREAD: u32 = 1; -pub const TIOCPKT_FLUSHWRITE: u32 = 2; -pub const TIOCPKT_STOP: u32 = 4; -pub const TIOCPKT_START: u32 = 8; -pub const TIOCPKT_NOSTOP: u32 = 16; -pub const TIOCPKT_DOSTOP: u32 = 32; -pub const TIOCPKT_IOCTL: u32 = 64; -pub const TIOCSER_TEMT: u32 = 1; -pub const NCC: u32 = 8; -pub const TIOCM_LE: u32 = 1; -pub const TIOCM_DTR: u32 = 2; -pub const TIOCM_RTS: u32 = 4; -pub const TIOCM_ST: u32 = 8; -pub const TIOCM_SR: u32 = 16; -pub const TIOCM_CTS: u32 = 32; -pub const TIOCM_CAR: u32 = 64; -pub const TIOCM_RNG: u32 = 128; -pub const TIOCM_DSR: u32 = 256; -pub const TIOCM_CD: u32 = 64; -pub const TIOCM_RI: u32 = 128; -pub const TIOCM_OUT1: u32 = 8192; -pub const TIOCM_OUT2: u32 = 16384; -pub const TIOCM_LOOP: u32 = 32768; -pub const UIO_FASTIOV: u32 = 8; -pub const UIO_MAXIOV: u32 = 1024; -pub const UNIX_PATH_MAX: u32 = 108; -pub const __NR_io_setup: u32 = 0; -pub const __NR_io_destroy: u32 = 1; -pub const __NR_io_submit: u32 = 2; -pub const __NR_io_cancel: u32 = 3; -pub const __NR_io_getevents: u32 = 4; -pub const __NR_setxattr: u32 = 5; -pub const __NR_lsetxattr: u32 = 6; -pub const __NR_fsetxattr: u32 = 7; -pub const __NR_getxattr: u32 = 8; -pub const __NR_lgetxattr: u32 = 9; -pub const __NR_fgetxattr: u32 = 10; -pub const __NR_listxattr: u32 = 11; -pub const __NR_llistxattr: u32 = 12; -pub const __NR_flistxattr: u32 = 13; -pub const __NR_removexattr: u32 = 14; -pub const __NR_lremovexattr: u32 = 15; -pub const __NR_fremovexattr: u32 = 16; -pub const __NR_getcwd: u32 = 17; -pub const __NR_lookup_dcookie: u32 = 18; -pub const __NR_eventfd2: u32 = 19; -pub const __NR_epoll_create1: u32 = 20; -pub const __NR_epoll_ctl: u32 = 21; -pub const __NR_epoll_pwait: u32 = 22; -pub const __NR_dup: u32 = 23; -pub const __NR_dup3: u32 = 24; -pub const __NR3264_fcntl: u32 = 25; -pub const __NR_inotify_init1: u32 = 26; -pub const __NR_inotify_add_watch: u32 = 27; -pub const __NR_inotify_rm_watch: u32 = 28; -pub const __NR_ioctl: u32 = 29; -pub const __NR_ioprio_set: u32 = 30; -pub const __NR_ioprio_get: u32 = 31; -pub const __NR_flock: u32 = 32; -pub const __NR_mknodat: u32 = 33; -pub const __NR_mkdirat: u32 = 34; -pub const __NR_unlinkat: u32 = 35; -pub const __NR_symlinkat: u32 = 36; -pub const __NR_linkat: u32 = 37; -pub const __NR_renameat: u32 = 38; -pub const __NR_umount2: u32 = 39; -pub const __NR_mount: u32 = 40; -pub const __NR_pivot_root: u32 = 41; -pub const __NR_nfsservctl: u32 = 42; -pub const __NR3264_statfs: u32 = 43; -pub const __NR3264_fstatfs: u32 = 44; -pub const __NR3264_truncate: u32 = 45; -pub const __NR3264_ftruncate: u32 = 46; -pub const __NR_fallocate: u32 = 47; -pub const __NR_faccessat: u32 = 48; -pub const __NR_chdir: u32 = 49; -pub const __NR_fchdir: u32 = 50; -pub const __NR_chroot: u32 = 51; -pub const __NR_fchmod: u32 = 52; -pub const __NR_fchmodat: u32 = 53; -pub const __NR_fchownat: u32 = 54; -pub const __NR_fchown: u32 = 55; -pub const __NR_openat: u32 = 56; -pub const __NR_close: u32 = 57; -pub const __NR_vhangup: u32 = 58; -pub const __NR_pipe2: u32 = 59; -pub const __NR_quotactl: u32 = 60; -pub const __NR_getdents64: u32 = 61; -pub const __NR3264_lseek: u32 = 62; -pub const __NR_read: u32 = 63; -pub const __NR_write: u32 = 64; -pub const __NR_readv: u32 = 65; -pub const __NR_writev: u32 = 66; -pub const __NR_pread64: u32 = 67; -pub const __NR_pwrite64: u32 = 68; -pub const __NR_preadv: u32 = 69; -pub const __NR_pwritev: u32 = 70; -pub const __NR3264_sendfile: u32 = 71; -pub const __NR_pselect6: u32 = 72; -pub const __NR_ppoll: u32 = 73; -pub const __NR_signalfd4: u32 = 74; -pub const __NR_vmsplice: u32 = 75; -pub const __NR_splice: u32 = 76; -pub const __NR_tee: u32 = 77; -pub const __NR_readlinkat: u32 = 78; -pub const __NR3264_fstatat: u32 = 79; -pub const __NR3264_fstat: u32 = 80; -pub const __NR_sync: u32 = 81; -pub const __NR_fsync: u32 = 82; -pub const __NR_fdatasync: u32 = 83; -pub const __NR_sync_file_range: u32 = 84; -pub const __NR_timerfd_create: u32 = 85; -pub const __NR_timerfd_settime: u32 = 86; -pub const __NR_timerfd_gettime: u32 = 87; -pub const __NR_utimensat: u32 = 88; -pub const __NR_acct: u32 = 89; -pub const __NR_capget: u32 = 90; -pub const __NR_capset: u32 = 91; -pub const __NR_personality: u32 = 92; -pub const __NR_exit: u32 = 93; -pub const __NR_exit_group: u32 = 94; -pub const __NR_waitid: u32 = 95; -pub const __NR_set_tid_address: u32 = 96; -pub const __NR_unshare: u32 = 97; -pub const __NR_futex: u32 = 98; -pub const __NR_set_robust_list: u32 = 99; -pub const __NR_get_robust_list: u32 = 100; -pub const __NR_nanosleep: u32 = 101; -pub const __NR_getitimer: u32 = 102; -pub const __NR_setitimer: u32 = 103; -pub const __NR_kexec_load: u32 = 104; -pub const __NR_init_module: u32 = 105; -pub const __NR_delete_module: u32 = 106; -pub const __NR_timer_create: u32 = 107; -pub const __NR_timer_gettime: u32 = 108; -pub const __NR_timer_getoverrun: u32 = 109; -pub const __NR_timer_settime: u32 = 110; -pub const __NR_timer_delete: u32 = 111; -pub const __NR_clock_settime: u32 = 112; -pub const __NR_clock_gettime: u32 = 113; -pub const __NR_clock_getres: u32 = 114; -pub const __NR_clock_nanosleep: u32 = 115; -pub const __NR_syslog: u32 = 116; -pub const __NR_ptrace: u32 = 117; -pub const __NR_sched_setparam: u32 = 118; -pub const __NR_sched_setscheduler: u32 = 119; -pub const __NR_sched_getscheduler: u32 = 120; -pub const __NR_sched_getparam: u32 = 121; -pub const __NR_sched_setaffinity: u32 = 122; -pub const __NR_sched_getaffinity: u32 = 123; -pub const __NR_sched_yield: u32 = 124; -pub const __NR_sched_get_priority_max: u32 = 125; -pub const __NR_sched_get_priority_min: u32 = 126; -pub const __NR_sched_rr_get_interval: u32 = 127; -pub const __NR_restart_syscall: u32 = 128; -pub const __NR_kill: u32 = 129; -pub const __NR_tkill: u32 = 130; -pub const __NR_tgkill: u32 = 131; -pub const __NR_sigaltstack: u32 = 132; -pub const __NR_rt_sigsuspend: u32 = 133; -pub const __NR_rt_sigaction: u32 = 134; -pub const __NR_rt_sigprocmask: u32 = 135; -pub const __NR_rt_sigpending: u32 = 136; -pub const __NR_rt_sigtimedwait: u32 = 137; -pub const __NR_rt_sigqueueinfo: u32 = 138; -pub const __NR_rt_sigreturn: u32 = 139; -pub const __NR_setpriority: u32 = 140; -pub const __NR_getpriority: u32 = 141; -pub const __NR_reboot: u32 = 142; -pub const __NR_setregid: u32 = 143; -pub const __NR_setgid: u32 = 144; -pub const __NR_setreuid: u32 = 145; -pub const __NR_setuid: u32 = 146; -pub const __NR_setresuid: u32 = 147; -pub const __NR_getresuid: u32 = 148; -pub const __NR_setresgid: u32 = 149; -pub const __NR_getresgid: u32 = 150; -pub const __NR_setfsuid: u32 = 151; -pub const __NR_setfsgid: u32 = 152; -pub const __NR_times: u32 = 153; -pub const __NR_setpgid: u32 = 154; -pub const __NR_getpgid: u32 = 155; -pub const __NR_getsid: u32 = 156; -pub const __NR_setsid: u32 = 157; -pub const __NR_getgroups: u32 = 158; -pub const __NR_setgroups: u32 = 159; -pub const __NR_uname: u32 = 160; -pub const __NR_sethostname: u32 = 161; -pub const __NR_setdomainname: u32 = 162; -pub const __NR_getrlimit: u32 = 163; -pub const __NR_setrlimit: u32 = 164; -pub const __NR_getrusage: u32 = 165; -pub const __NR_umask: u32 = 166; -pub const __NR_prctl: u32 = 167; -pub const __NR_getcpu: u32 = 168; -pub const __NR_gettimeofday: u32 = 169; -pub const __NR_settimeofday: u32 = 170; -pub const __NR_adjtimex: u32 = 171; -pub const __NR_getpid: u32 = 172; -pub const __NR_getppid: u32 = 173; -pub const __NR_getuid: u32 = 174; -pub const __NR_geteuid: u32 = 175; -pub const __NR_getgid: u32 = 176; -pub const __NR_getegid: u32 = 177; -pub const __NR_gettid: u32 = 178; -pub const __NR_sysinfo: u32 = 179; -pub const __NR_mq_open: u32 = 180; -pub const __NR_mq_unlink: u32 = 181; -pub const __NR_mq_timedsend: u32 = 182; -pub const __NR_mq_timedreceive: u32 = 183; -pub const __NR_mq_notify: u32 = 184; -pub const __NR_mq_getsetattr: u32 = 185; -pub const __NR_msgget: u32 = 186; -pub const __NR_msgctl: u32 = 187; -pub const __NR_msgrcv: u32 = 188; -pub const __NR_msgsnd: u32 = 189; -pub const __NR_semget: u32 = 190; -pub const __NR_semctl: u32 = 191; -pub const __NR_semtimedop: u32 = 192; -pub const __NR_semop: u32 = 193; -pub const __NR_shmget: u32 = 194; -pub const __NR_shmctl: u32 = 195; -pub const __NR_shmat: u32 = 196; -pub const __NR_shmdt: u32 = 197; -pub const __NR_socket: u32 = 198; -pub const __NR_socketpair: u32 = 199; -pub const __NR_bind: u32 = 200; -pub const __NR_listen: u32 = 201; -pub const __NR_accept: u32 = 202; -pub const __NR_connect: u32 = 203; -pub const __NR_getsockname: u32 = 204; -pub const __NR_getpeername: u32 = 205; -pub const __NR_sendto: u32 = 206; -pub const __NR_recvfrom: u32 = 207; -pub const __NR_setsockopt: u32 = 208; -pub const __NR_getsockopt: u32 = 209; -pub const __NR_shutdown: u32 = 210; -pub const __NR_sendmsg: u32 = 211; -pub const __NR_recvmsg: u32 = 212; -pub const __NR_readahead: u32 = 213; -pub const __NR_brk: u32 = 214; -pub const __NR_munmap: u32 = 215; -pub const __NR_mremap: u32 = 216; -pub const __NR_add_key: u32 = 217; -pub const __NR_request_key: u32 = 218; -pub const __NR_keyctl: u32 = 219; -pub const __NR_clone: u32 = 220; -pub const __NR_execve: u32 = 221; -pub const __NR3264_mmap: u32 = 222; -pub const __NR3264_fadvise64: u32 = 223; -pub const __NR_swapon: u32 = 224; -pub const __NR_swapoff: u32 = 225; -pub const __NR_mprotect: u32 = 226; -pub const __NR_msync: u32 = 227; -pub const __NR_mlock: u32 = 228; -pub const __NR_munlock: u32 = 229; -pub const __NR_mlockall: u32 = 230; -pub const __NR_munlockall: u32 = 231; -pub const __NR_mincore: u32 = 232; -pub const __NR_madvise: u32 = 233; -pub const __NR_remap_file_pages: u32 = 234; -pub const __NR_mbind: u32 = 235; -pub const __NR_get_mempolicy: u32 = 236; -pub const __NR_set_mempolicy: u32 = 237; -pub const __NR_migrate_pages: u32 = 238; -pub const __NR_move_pages: u32 = 239; -pub const __NR_rt_tgsigqueueinfo: u32 = 240; -pub const __NR_perf_event_open: u32 = 241; -pub const __NR_accept4: u32 = 242; -pub const __NR_recvmmsg: u32 = 243; -pub const __NR_arch_specific_syscall: u32 = 244; -pub const __NR_wait4: u32 = 260; -pub const __NR_prlimit64: u32 = 261; -pub const __NR_fanotify_init: u32 = 262; -pub const __NR_fanotify_mark: u32 = 263; -pub const __NR_name_to_handle_at: u32 = 264; -pub const __NR_open_by_handle_at: u32 = 265; -pub const __NR_clock_adjtime: u32 = 266; -pub const __NR_syncfs: u32 = 267; -pub const __NR_setns: u32 = 268; -pub const __NR_sendmmsg: u32 = 269; -pub const __NR_process_vm_readv: u32 = 270; -pub const __NR_process_vm_writev: u32 = 271; -pub const __NR_kcmp: u32 = 272; -pub const __NR_finit_module: u32 = 273; -pub const __NR_sched_setattr: u32 = 274; -pub const __NR_sched_getattr: u32 = 275; -pub const __NR_renameat2: u32 = 276; -pub const __NR_seccomp: u32 = 277; -pub const __NR_getrandom: u32 = 278; -pub const __NR_memfd_create: u32 = 279; -pub const __NR_bpf: u32 = 280; -pub const __NR_execveat: u32 = 281; -pub const __NR_userfaultfd: u32 = 282; -pub const __NR_membarrier: u32 = 283; -pub const __NR_mlock2: u32 = 284; -pub const __NR_copy_file_range: u32 = 285; -pub const __NR_preadv2: u32 = 286; -pub const __NR_pwritev2: u32 = 287; -pub const __NR_pkey_mprotect: u32 = 288; -pub const __NR_pkey_alloc: u32 = 289; -pub const __NR_pkey_free: u32 = 290; -pub const __NR_statx: u32 = 291; -pub const __NR_io_pgetevents: u32 = 292; -pub const __NR_rseq: u32 = 293; -pub const __NR_kexec_file_load: u32 = 294; -pub const __NR_pidfd_send_signal: u32 = 424; -pub const __NR_io_uring_setup: u32 = 425; -pub const __NR_io_uring_enter: u32 = 426; -pub const __NR_io_uring_register: u32 = 427; -pub const __NR_open_tree: u32 = 428; -pub const __NR_move_mount: u32 = 429; -pub const __NR_fsopen: u32 = 430; -pub const __NR_fsconfig: u32 = 431; -pub const __NR_fsmount: u32 = 432; -pub const __NR_fspick: u32 = 433; -pub const __NR_pidfd_open: u32 = 434; -pub const __NR_clone3: u32 = 435; -pub const __NR_close_range: u32 = 436; -pub const __NR_openat2: u32 = 437; -pub const __NR_pidfd_getfd: u32 = 438; -pub const __NR_faccessat2: u32 = 439; -pub const __NR_process_madvise: u32 = 440; -pub const __NR_epoll_pwait2: u32 = 441; -pub const __NR_mount_setattr: u32 = 442; -pub const __NR_quotactl_fd: u32 = 443; -pub const __NR_landlock_create_ruleset: u32 = 444; -pub const __NR_landlock_add_rule: u32 = 445; -pub const __NR_landlock_restrict_self: u32 = 446; -pub const __NR_memfd_secret: u32 = 447; -pub const __NR_process_mrelease: u32 = 448; -pub const __NR_futex_waitv: u32 = 449; -pub const __NR_set_mempolicy_home_node: u32 = 450; -pub const __NR_syscalls: u32 = 451; -pub const __NR_fcntl: u32 = 25; -pub const __NR_statfs: u32 = 43; -pub const __NR_fstatfs: u32 = 44; -pub const __NR_truncate: u32 = 45; -pub const __NR_ftruncate: u32 = 46; -pub const __NR_lseek: u32 = 62; -pub const __NR_sendfile: u32 = 71; -pub const __NR_newfstatat: u32 = 79; -pub const __NR_fstat: u32 = 80; -pub const __NR_mmap: u32 = 222; -pub const __NR_fadvise64: u32 = 223; -pub const __OLD_UTS_LEN: u32 = 8; -pub const __NEW_UTS_LEN: u32 = 64; -pub const WNOHANG: u32 = 1; -pub const WUNTRACED: u32 = 2; -pub const WSTOPPED: u32 = 2; -pub const WEXITED: u32 = 4; -pub const WCONTINUED: u32 = 8; -pub const WNOWAIT: u32 = 16777216; -pub const __WNOTHREAD: u32 = 536870912; -pub const __WALL: u32 = 1073741824; -pub const __WCLONE: u32 = 2147483648; -pub const P_ALL: u32 = 0; -pub const P_PID: u32 = 1; -pub const P_PGID: u32 = 2; -pub const P_PIDFD: u32 = 3; -pub const XATTR_CREATE: u32 = 1; -pub const XATTR_REPLACE: u32 = 2; -pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0"; -pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0"; -pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0"; -pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0"; -pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0"; -pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0"; -pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0"; -pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0"; -pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0"; -pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0"; -pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0"; -pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0"; -pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0"; -pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0"; -pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0"; -pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0"; -pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0"; -pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0"; -pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0"; -pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0"; -pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0"; -pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0"; -pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0"; -pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0"; -pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0"; -pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0"; -pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0"; -pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0"; -pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0"; -pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0"; -pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0"; -pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0"; -pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0"; -pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0"; -pub const MFD_CLOEXEC: u32 = 1; -pub const MFD_ALLOW_SEALING: u32 = 2; -pub const MFD_HUGETLB: u32 = 4; -pub const MFD_NOEXEC_SEAL: u32 = 8; -pub const MFD_EXEC: u32 = 16; -pub const MFD_HUGE_SHIFT: u32 = 26; -pub const MFD_HUGE_MASK: u32 = 63; -pub const MFD_HUGE_64KB: u32 = 1073741824; -pub const MFD_HUGE_512KB: u32 = 1275068416; -pub const MFD_HUGE_1MB: u32 = 1342177280; -pub const MFD_HUGE_2MB: u32 = 1409286144; -pub const MFD_HUGE_8MB: u32 = 1543503872; -pub const MFD_HUGE_16MB: u32 = 1610612736; -pub const MFD_HUGE_32MB: u32 = 1677721600; -pub const MFD_HUGE_256MB: u32 = 1879048192; -pub const MFD_HUGE_512MB: u32 = 1946157056; -pub const MFD_HUGE_1GB: u32 = 2013265920; -pub const MFD_HUGE_2GB: u32 = 2080374784; -pub const MFD_HUGE_16GB: u32 = 2281701376; -pub const TFD_TIMER_ABSTIME: u32 = 1; -pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; -pub const TFD_CLOEXEC: u32 = 524288; -pub const TFD_NONBLOCK: u32 = 2048; -pub const USERFAULTFD_IOC: u32 = 170; -pub const _UFFDIO_REGISTER: u32 = 0; -pub const _UFFDIO_UNREGISTER: u32 = 1; -pub const _UFFDIO_WAKE: u32 = 2; -pub const _UFFDIO_COPY: u32 = 3; -pub const _UFFDIO_ZEROPAGE: u32 = 4; -pub const _UFFDIO_WRITEPROTECT: u32 = 6; -pub const _UFFDIO_CONTINUE: u32 = 7; -pub const _UFFDIO_API: u32 = 63; -pub const UFFDIO: u32 = 170; -pub const UFFD_EVENT_PAGEFAULT: u32 = 18; -pub const UFFD_EVENT_FORK: u32 = 19; -pub const UFFD_EVENT_REMAP: u32 = 20; -pub const UFFD_EVENT_REMOVE: u32 = 21; -pub const UFFD_EVENT_UNMAP: u32 = 22; -pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; -pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; -pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; -pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; -pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; -pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; -pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; -pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; -pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; -pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; -pub const UFFD_FEATURE_SIGBUS: u32 = 128; -pub const UFFD_FEATURE_THREAD_ID: u32 = 256; -pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; -pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; -pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; -pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; -pub const UFFD_USER_MODE_ONLY: u32 = 1; -pub const IORING_FILE_INDEX_ALLOC: i32 = -1; -pub const IORING_SETUP_IOPOLL: u32 = 1; -pub const IORING_SETUP_SQPOLL: u32 = 2; -pub const IORING_SETUP_SQ_AFF: u32 = 4; -pub const IORING_SETUP_CQSIZE: u32 = 8; -pub const IORING_SETUP_CLAMP: u32 = 16; -pub const IORING_SETUP_ATTACH_WQ: u32 = 32; -pub const IORING_SETUP_R_DISABLED: u32 = 64; -pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; -pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; -pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; -pub const IORING_SETUP_SQE128: u32 = 1024; -pub const IORING_SETUP_CQE32: u32 = 2048; -pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; -pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; -pub const IORING_URING_CMD_FIXED: u32 = 1; -pub const IORING_FSYNC_DATASYNC: u32 = 1; -pub const IORING_TIMEOUT_ABS: u32 = 1; -pub const IORING_TIMEOUT_UPDATE: u32 = 2; -pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; -pub const IORING_TIMEOUT_REALTIME: u32 = 8; -pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; -pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; -pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; -pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; -pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; -pub const IORING_POLL_ADD_MULTI: u32 = 1; -pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; -pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; -pub const IORING_POLL_ADD_LEVEL: u32 = 8; -pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; -pub const IORING_ASYNC_CANCEL_FD: u32 = 2; -pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; -pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; -pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; -pub const IORING_RECV_MULTISHOT: u32 = 2; -pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; -pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; -pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; -pub const IORING_ACCEPT_MULTISHOT: u32 = 1; -pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; -pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; -pub const IORING_CQE_F_BUFFER: u32 = 1; -pub const IORING_CQE_F_MORE: u32 = 2; -pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; -pub const IORING_CQE_F_NOTIF: u32 = 8; -pub const IORING_OFF_SQ_RING: u32 = 0; -pub const IORING_OFF_CQ_RING: u32 = 134217728; -pub const IORING_OFF_SQES: u32 = 268435456; -pub const IORING_SQ_NEED_WAKEUP: u32 = 1; -pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; -pub const IORING_SQ_TASKRUN: u32 = 4; -pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; -pub const IORING_ENTER_GETEVENTS: u32 = 1; -pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; -pub const IORING_ENTER_SQ_WAIT: u32 = 4; -pub const IORING_ENTER_EXT_ARG: u32 = 8; -pub const IORING_ENTER_REGISTERED_RING: u32 = 16; -pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; -pub const IORING_FEAT_NODROP: u32 = 2; -pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; -pub const IORING_FEAT_RW_CUR_POS: u32 = 8; -pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; -pub const IORING_FEAT_FAST_POLL: u32 = 32; -pub const IORING_FEAT_POLL_32BITS: u32 = 64; -pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; -pub const IORING_FEAT_EXT_ARG: u32 = 256; -pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; -pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; -pub const IORING_FEAT_CQE_SKIP: u32 = 2048; -pub const IORING_FEAT_LINKED_FILE: u32 = 4096; -pub const IORING_FEAT_REG_REG_RING: u32 = 8192; -pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; -pub const IORING_REGISTER_FILES_SKIP: i32 = -2; -pub const IO_URING_OP_SUPPORTED: u32 = 1; -pub const DT_UNKNOWN: u32 = 0; -pub const DT_FIFO: u32 = 1; -pub const DT_CHR: u32 = 2; -pub const DT_DIR: u32 = 4; -pub const DT_BLK: u32 = 6; -pub const DT_REG: u32 = 8; -pub const DT_LNK: u32 = 10; -pub const DT_SOCK: u32 = 12; -pub const SHUT_RD: u32 = 0; -pub const SHUT_WR: u32 = 1; -pub const SHUT_RDWR: u32 = 2; -pub const STAT_HAVE_NSEC: u32 = 1; -pub const SOCK_STREAM: u32 = 1; -pub const SOCK_DGRAM: u32 = 2; -pub const SOCK_RAW: u32 = 3; -pub const SOCK_RDM: u32 = 4; -pub const SOCK_SEQPACKET: u32 = 5; -pub const F_OK: u32 = 0; -pub const R_OK: u32 = 4; -pub const W_OK: u32 = 2; -pub const X_OK: u32 = 1; -pub const UTIME_NOW: u32 = 1073741823; -pub const UTIME_OMIT: u32 = 1073741822; -pub const MSG_DONTWAIT: u32 = 64; -pub const AF_UNSPEC: u32 = 0; -pub const AF_UNIX: u32 = 1; -pub const AF_INET: u32 = 2; -pub const AF_AX25: u32 = 3; -pub const AF_IPX: u32 = 4; -pub const AF_APPLETALK: u32 = 5; -pub const AF_NETROM: u32 = 6; -pub const AF_BRIDGE: u32 = 7; -pub const AF_ATMPVC: u32 = 8; -pub const AF_X25: u32 = 9; -pub const AF_INET6: u32 = 10; -pub const AF_ROSE: u32 = 11; -pub const AF_DECnet: u32 = 12; -pub const AF_NETBEUI: u32 = 13; -pub const AF_SECURITY: u32 = 14; -pub const AF_KEY: u32 = 15; -pub const AF_NETLINK: u32 = 16; -pub const AF_PACKET: u32 = 17; -pub const AF_ASH: u32 = 18; -pub const AF_ECONET: u32 = 19; -pub const AF_ATMSVC: u32 = 20; -pub const AF_RDS: u32 = 21; -pub const AF_SNA: u32 = 22; -pub const AF_IRDA: u32 = 23; -pub const AF_PPPOX: u32 = 24; -pub const AF_WANPIPE: u32 = 25; -pub const AF_LLC: u32 = 26; -pub const AF_CAN: u32 = 29; -pub const AF_TIPC: u32 = 30; -pub const AF_BLUETOOTH: u32 = 31; -pub const AF_IUCV: u32 = 32; -pub const AF_RXRPC: u32 = 33; -pub const AF_ISDN: u32 = 34; -pub const AF_PHONET: u32 = 35; -pub const AF_IEEE802154: u32 = 36; -pub const AF_MAX: u32 = 37; -pub const MSG_OOB: u32 = 1; -pub const MSG_PEEK: u32 = 2; -pub const MSG_DONTROUTE: u32 = 4; -pub const MSG_CTRUNC: u32 = 8; -pub const MSG_PROBE: u32 = 16; -pub const MSG_TRUNC: u32 = 32; -pub const MSG_EOR: u32 = 128; -pub const MSG_WAITALL: u32 = 256; -pub const MSG_FIN: u32 = 512; -pub const MSG_SYN: u32 = 1024; -pub const MSG_CONFIRM: u32 = 2048; -pub const MSG_RST: u32 = 4096; -pub const MSG_ERRQUEUE: u32 = 8192; -pub const MSG_NOSIGNAL: u32 = 16384; -pub const MSG_MORE: u32 = 32768; -pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; -pub const STDIN_FILENO: u32 = 0; -pub const STDOUT_FILENO: u32 = 1; -pub const STDERR_FILENO: u32 = 2; -pub const RWF_HIPRI: u32 = 1; -pub const RWF_DSYNC: u32 = 2; -pub const RWF_SYNC: u32 = 4; -pub const RWF_NOWAIT: u32 = 8; -pub const RWF_APPEND: u32 = 16; -pub const EFD_SEMAPHORE: u32 = 1; -pub const EFD_CLOEXEC: u32 = 524288; -pub const EFD_NONBLOCK: u32 = 2048; -pub const EPOLLIN: u32 = 1; -pub const EPOLLPRI: u32 = 2; -pub const EPOLLOUT: u32 = 4; -pub const EPOLLERR: u32 = 8; -pub const EPOLLHUP: u32 = 16; -pub const EPOLLNVAL: u32 = 32; -pub const EPOLLRDNORM: u32 = 64; -pub const EPOLLRDBAND: u32 = 128; -pub const EPOLLWRNORM: u32 = 256; -pub const EPOLLWRBAND: u32 = 512; -pub const EPOLLMSG: u32 = 1024; -pub const EPOLLRDHUP: u32 = 8192; -pub const EPOLLEXCLUSIVE: u32 = 268435456; -pub const EPOLLWAKEUP: u32 = 536870912; -pub const EPOLLONESHOT: u32 = 1073741824; -pub const EPOLLET: u32 = 2147483648; -pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; -pub const TFD_CREATE_FLAGS: u32 = 526336; -pub const TFD_SETTIME_FLAGS: u32 = 1; -pub const SCM_RIGHTS: u32 = 1; -pub const SCM_CREDENTIALS: u32 = 2; -pub const SCM_SECURITY: u32 = 3; -pub const UFFD_API: u32 = 170; -pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; -pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; -pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; -pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; -pub const UFFDIO_COPY_MODE_WP: u32 = 2; -pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; -pub const SPLICE_F_MOVE: u32 = 1; -pub const SPLICE_F_NONBLOCK: u32 = 2; -pub const SPLICE_F_MORE: u32 = 4; -pub const SPLICE_F_GIFT: u32 = 8; -pub const MNT_FORCE: u32 = 1; -pub const MNT_DETACH: u32 = 2; -pub const MNT_EXPIRE: u32 = 4; -pub const UMOUNT_NOFOLLOW: u32 = 8; -pub const UMOUNT_UNUSED: u32 = 2147483648; -pub type size_t = crate::ctypes::c_ulong; -pub type ssize_t = crate::ctypes::c_long; -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 16usize], -} -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_old_uid_t = crate::ctypes::c_ushort; -pub type __kernel_old_gid_t = crate::ctypes::c_ushort; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_dev_t = crate::ctypes::c_uint; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_header_struct { -pub version: __u32, -pub pid: crate::ctypes::c_int, -} -pub type cap_user_header_t = *mut __user_cap_header_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_data_struct { -pub effective: __u32, -pub permitted: __u32, -pub inheritable: __u32, -} -pub type cap_user_data_t = *mut __user_cap_data_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data { -pub magic_etc: __le32, -pub data: [vfs_cap_data__bindgen_ty_1; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data { -pub magic_etc: __le32, -pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], -pub rootid: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct f_owner_ex { -pub type_: crate::ctypes::c_int, -pub pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_off_t, -pub l_len: __kernel_off_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock64 { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_loff_t, -pub l_len: __kernel_loff_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct open_how { -pub flags: __u64, -pub mode: __u64, -pub resolve: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct epoll_event { -pub events: __poll_t, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v1 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub master_key_descriptor: [__u8; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_key { -pub mode: __u32, -pub raw: [__u8; 64usize], -pub size: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v2 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub __reserved: [__u8; 4usize], -pub master_key_identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_get_policy_ex_arg { -pub policy_size: __u64, -pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { -pub version: __u8, -pub v1: fscrypt_policy_v1, -pub v2: fscrypt_policy_v2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_key_specifier { -pub type_: __u32, -pub __reserved: __u32, -pub u: fscrypt_key_specifier__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_key_specifier__bindgen_ty_1 { -pub __reserved: [__u8; 32usize], -pub descriptor: [__u8; 8usize], -pub identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct fscrypt_provisioning_key_payload { -pub type_: __u32, -pub __reserved: __u32, -pub raw: __IncompleteArrayField<__u8>, -} -#[repr(C)] -pub struct fscrypt_add_key_arg { -pub key_spec: fscrypt_key_specifier, -pub raw_size: __u32, -pub key_id: __u32, -pub __reserved: [__u32; 8usize], -pub raw: __IncompleteArrayField<__u8>, +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, } #[repr(C)] #[derive(Copy, Clone)] @@ -2762,19 +229,6 @@ pub user_count: __u32, pub __out_reserved: [__u32; 13usize], } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum fsconfig_command { -FSCONFIG_SET_FLAG = 0, -FSCONFIG_SET_STRING = 1, -FSCONFIG_SET_BINARY = 2, -FSCONFIG_SET_PATH = 3, -FSCONFIG_SET_PATH_EMPTY = 4, -FSCONFIG_SET_FD = 5, -FSCONFIG_CMD_CREATE = 6, -FSCONFIG_CMD_RECONFIGURE = 7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct mount_attr { @@ -2841,7 +295,6 @@ pub fsx_cowextsize: __u32, pub fsx_pad: [crate::ctypes::c_uchar; 8usize], } -pub type __kernel_rwf_t = crate::ctypes::c_int; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct futex_waitv { @@ -2855,670 +308,21 @@ pub struct robust_list { pub next: *mut robust_list, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct robust_list_head { -pub list: robust_list, -pub futex_offset: crate::ctypes::c_long, -pub list_op_pending: *mut robust_list, -} -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], -} -pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; -pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; -pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; -pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; -pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; -pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; -pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; -pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; -pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; -pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; -pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; -pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; -pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; -pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; -pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; -pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; -pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; -pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; -pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; -pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; -pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; -pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; -pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; -pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; -pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; -pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; -pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; -pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; -pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_1 { -IPPROTO_IP = 0, -IPPROTO_ICMP = 1, -IPPROTO_IGMP = 2, -IPPROTO_IPIP = 4, -IPPROTO_TCP = 6, -IPPROTO_EGP = 8, -IPPROTO_PUP = 12, -IPPROTO_UDP = 17, -IPPROTO_IDP = 22, -IPPROTO_TP = 29, -IPPROTO_DCCP = 33, -IPPROTO_IPV6 = 41, -IPPROTO_RSVP = 46, -IPPROTO_GRE = 47, -IPPROTO_ESP = 50, -IPPROTO_AH = 51, -IPPROTO_MTP = 92, -IPPROTO_BEETPH = 94, -IPPROTO_ENCAP = 98, -IPPROTO_PIM = 103, -IPPROTO_COMP = 108, -IPPROTO_L2TP = 115, -IPPROTO_SCTP = 132, -IPPROTO_UDPLITE = 136, -IPPROTO_MPLS = 137, -IPPROTO_ETHERNET = 143, -IPPROTO_RAW = 255, -IPPROTO_MPTCP = 262, -IPPROTO_MAX = 263, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_addr { -pub s_addr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq { -pub imr_multiaddr: in_addr, -pub imr_interface: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreqn { -pub imr_multiaddr: in_addr, -pub imr_address: in_addr, -pub imr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq_source { -pub imr_multiaddr: __be32, -pub imr_interface: __be32, -pub imr_sourceaddr: __be32, -} -#[repr(C)] -pub struct ip_msfilter { -pub imsf_multiaddr: __be32, -pub imsf_interface: __be32, -pub imsf_fmode: __u32, -pub imsf_numsrc: __u32, -pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, -} -#[repr(C)] -pub struct ip_msfilter__bindgen_ty_1 { -pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, -pub __bindgen_anon_1: __BindgenUnionField, -pub bindgen_union_field: u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { -pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -pub imsf_slist_flex: __IncompleteArrayField<__be32>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_req { -pub gr_interface: __u32, -pub gr_group: __kernel_sockaddr_storage, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_source_req { -pub gsr_interface: __u32, -pub gsr_group: __kernel_sockaddr_storage, -pub gsr_source: __kernel_sockaddr_storage, -} -#[repr(C)] -pub struct group_filter { -pub __bindgen_anon_1: group_filter__bindgen_ty_1, -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 34usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { -pub gf_interface_aux: __u32, -pub gf_group_aux: __kernel_sockaddr_storage, -pub gf_fmode_aux: __u32, -pub gf_numsrc_aux: __u32, -pub gf_slist: [__kernel_sockaddr_storage; 1usize], -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { -pub gf_interface: __u32, -pub gf_group: __kernel_sockaddr_storage, -pub gf_fmode: __u32, -pub gf_numsrc: __u32, -pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_pktinfo { -pub ipi_ifindex: crate::ctypes::c_int, -pub ipi_spec_dst: in_addr, -pub ipi_addr: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_in { -pub sin_family: __kernel_sa_family_t, -pub sin_port: __be16, -pub sin_addr: in_addr, -pub __pad: [crate::ctypes::c_uchar; 8usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct inotify_event { -pub wd: __s32, -pub mask: __u32, -pub cookie: __u32, -pub len: __u32, -pub name: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct iphdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub tos: __u8, -pub tot_len: __be16, -pub id: __be16, -pub frag_off: __be16, -pub ttl: __u8, -pub protocol: __u8, -pub check: __sum16, -pub __bindgen_anon_1: iphdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union iphdr__bindgen_ty_1 { -pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: __be32, -pub daddr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: __be32, -pub daddr: __be32, -} -impl iphdr { -#[inline] -pub fn ihl(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_ihl(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; -ihl as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_auth_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub reserved: __be16, -pub spi: __be32, -pub seq_no: __be32, -pub auth_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_esp_hdr { -pub spi: __be32, -pub seq_no: __be32, -pub enc_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_comp_hdr { -pub nexthdr: __u8, -pub flags: __u8, -pub cpi: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_beet_phdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub padlen: __u8, -pub reserved: __u8, -} -pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; -pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; -pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; -pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; -pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; -pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; -pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; -pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; -pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; -pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; -pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; -pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; -pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; -pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; -pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; -pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; -pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; -pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; -pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; -pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; -pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; -pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; -pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; -pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; -pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; -pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; -pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; -pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; -pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_2 { -IPV4_DEVCONF_FORWARDING = 1, -IPV4_DEVCONF_MC_FORWARDING = 2, -IPV4_DEVCONF_PROXY_ARP = 3, -IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, -IPV4_DEVCONF_SECURE_REDIRECTS = 5, -IPV4_DEVCONF_SEND_REDIRECTS = 6, -IPV4_DEVCONF_SHARED_MEDIA = 7, -IPV4_DEVCONF_RP_FILTER = 8, -IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, -IPV4_DEVCONF_BOOTP_RELAY = 10, -IPV4_DEVCONF_LOG_MARTIANS = 11, -IPV4_DEVCONF_TAG = 12, -IPV4_DEVCONF_ARPFILTER = 13, -IPV4_DEVCONF_MEDIUM_ID = 14, -IPV4_DEVCONF_NOXFRM = 15, -IPV4_DEVCONF_NOPOLICY = 16, -IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, -IPV4_DEVCONF_ARP_ANNOUNCE = 18, -IPV4_DEVCONF_ARP_IGNORE = 19, -IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, -IPV4_DEVCONF_ARP_ACCEPT = 21, -IPV4_DEVCONF_ARP_NOTIFY = 22, -IPV4_DEVCONF_ACCEPT_LOCAL = 23, -IPV4_DEVCONF_SRC_VMARK = 24, -IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, -IPV4_DEVCONF_ROUTE_LOCALNET = 26, -IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, -IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, -IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, -IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, -IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, -IPV4_DEVCONF_BC_FORWARDING = 32, -IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, -__IPV4_DEVCONF_MAX = 34, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_addr { -pub in6_u: in6_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union in6_addr__bindgen_ty_1 { -pub u6_addr8: [__u8; 16usize], -pub u6_addr16: [__be16; 8usize], -pub u6_addr32: [__be32; 4usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_in6 { -pub sin6_family: crate::ctypes::c_ushort, -pub sin6_port: __be16, -pub sin6_flowinfo: __be32, -pub sin6_addr: in6_addr, -pub sin6_scope_id: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6_mreq { -pub ipv6mr_multiaddr: in6_addr, -pub ipv6mr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_flowlabel_req { -pub flr_dst: in6_addr, -pub flr_label: __be32, -pub flr_action: __u8, -pub flr_share: __u8, -pub flr_flags: __u16, -pub flr_expires: __u16, -pub flr_linger: __u16, -pub __flr_pad: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_pktinfo { -pub ipi6_addr: in6_addr, -pub ipi6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ip6_mtuinfo { -pub ip6m_addr: sockaddr_in6, -pub ip6m_mtu: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_ifreq { -pub ifr6_addr: in6_addr, -pub ifr6_prefixlen: __u32, -pub ifr6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_rt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub type_: __u8, -pub segments_left: __u8, -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_opt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -} -#[repr(C)] -pub struct rt0_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rt2_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: in6_addr, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct ipv6_destopt_hao { -pub type_: __u8, -pub length: __u8, -pub addr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub flow_lbl: [__u8; 3usize], -pub payload_len: __be16, -pub nexthdr: __u8, -pub hop_limit: __u8, -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ipv6hdr__bindgen_ty_1 { -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -impl ipv6hdr { -#[inline] -pub fn priority(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_priority(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let priority: u8 = unsafe { ::core::mem::transmute(priority) }; -priority as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit -} -} -pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; -pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; -pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; -pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; -pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; -pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; -pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; -pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; -pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; -pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; -pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; -pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; -pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; -pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; -pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; -pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; -pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; -pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; -pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; -pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; -pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; -pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; -pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; -pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; -pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; -pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; -pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; -pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; -pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; -pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; -pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; -pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; -pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; -pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; -pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; -pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; -pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; -pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; -pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; -pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; -pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; -pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; -pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; -pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; -pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; -pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; -pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; -pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; -pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; -pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; -pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; -pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_3 { -DEVCONF_FORWARDING = 0, -DEVCONF_HOPLIMIT = 1, -DEVCONF_MTU6 = 2, -DEVCONF_ACCEPT_RA = 3, -DEVCONF_ACCEPT_REDIRECTS = 4, -DEVCONF_AUTOCONF = 5, -DEVCONF_DAD_TRANSMITS = 6, -DEVCONF_RTR_SOLICITS = 7, -DEVCONF_RTR_SOLICIT_INTERVAL = 8, -DEVCONF_RTR_SOLICIT_DELAY = 9, -DEVCONF_USE_TEMPADDR = 10, -DEVCONF_TEMP_VALID_LFT = 11, -DEVCONF_TEMP_PREFERED_LFT = 12, -DEVCONF_REGEN_MAX_RETRY = 13, -DEVCONF_MAX_DESYNC_FACTOR = 14, -DEVCONF_MAX_ADDRESSES = 15, -DEVCONF_FORCE_MLD_VERSION = 16, -DEVCONF_ACCEPT_RA_DEFRTR = 17, -DEVCONF_ACCEPT_RA_PINFO = 18, -DEVCONF_ACCEPT_RA_RTR_PREF = 19, -DEVCONF_RTR_PROBE_INTERVAL = 20, -DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, -DEVCONF_PROXY_NDP = 22, -DEVCONF_OPTIMISTIC_DAD = 23, -DEVCONF_ACCEPT_SOURCE_ROUTE = 24, -DEVCONF_MC_FORWARDING = 25, -DEVCONF_DISABLE_IPV6 = 26, -DEVCONF_ACCEPT_DAD = 27, -DEVCONF_FORCE_TLLAO = 28, -DEVCONF_NDISC_NOTIFY = 29, -DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, -DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, -DEVCONF_SUPPRESS_FRAG_NDISC = 32, -DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, -DEVCONF_USE_OPTIMISTIC = 34, -DEVCONF_ACCEPT_RA_MTU = 35, -DEVCONF_STABLE_SECRET = 36, -DEVCONF_USE_OIF_ADDRS_ONLY = 37, -DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, -DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, -DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, -DEVCONF_DROP_UNSOLICITED_NA = 41, -DEVCONF_KEEP_ADDR_ON_DOWN = 42, -DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, -DEVCONF_SEG6_ENABLED = 44, -DEVCONF_SEG6_REQUIRE_HMAC = 45, -DEVCONF_ENHANCED_DAD = 46, -DEVCONF_ADDR_GEN_MODE = 47, -DEVCONF_DISABLE_POLICY = 48, -DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, -DEVCONF_NDISC_TCLASS = 50, -DEVCONF_RPL_SEG_ENABLED = 51, -DEVCONF_RA_DEFRTR_METRIC = 52, -DEVCONF_IOAM6_ENABLED = 53, -DEVCONF_IOAM6_ID = 54, -DEVCONF_IOAM6_ID_WIDE = 55, -DEVCONF_NDISC_EVICT_NOCARRIER = 56, -DEVCONF_ACCEPT_UNTRACKED_NA = 57, -DEVCONF_MAX = 58, +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct robust_list_head { +pub list: robust_list, +pub futex_offset: crate::ctypes::c_long, +pub list_op_pending: *mut robust_list, } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum socket_state { -SS_FREE = 0, -SS_UNCONNECTED = 1, -SS_CONNECTING = 2, -SS_CONNECTED = 3, -SS_DISCONNECTING = 4, +#[repr(C)] +#[derive(Debug)] +pub struct inotify_event { +pub wd: __s32, +pub mask: __u32, +pub cookie: __u32, +pub len: __u32, +pub name: __IncompleteArrayField, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -3528,24 +332,6 @@ pub revents: crate::ctypes::c_short, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prctl_mm_map { -pub start_code: __u64, -pub end_code: __u64, -pub start_data: __u64, -pub end_data: __u64, -pub start_brk: __u64, -pub brk: __u64, -pub start_stack: __u64, -pub arg_start: __u64, -pub arg_end: __u64, -pub env_start: __u64, -pub env_end: __u64, -pub auxv: *mut __u64, -pub auxv_size: __u32, -pub exe_fd: __u32, -} -#[repr(C)] #[derive(Debug)] pub struct rand_pool_info { pub entropy_count: crate::ctypes::c_int, @@ -3670,11 +456,6 @@ pub struct sigset_t { pub sig: [crate::ctypes::c_ulong; 1usize], } -pub type old_sigset_t = crate::ctypes::c_ulong; -pub type __signalfn_t = ::core::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::core::option::Option; -pub type __sigrestore_t = __restorefn_t; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct sigaction { @@ -3690,25 +471,6 @@ pub ss_flags: crate::ctypes::c_int, pub ss_size: __kernel_size_t, } -pub type stack_t = sigaltstack; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { -pub sival_int: crate::ctypes::c_int, -pub sival_ptr: *mut crate::ctypes::c_void, -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { -pub _kill: __sifields__bindgen_ty_1, -pub _timer: __sifields__bindgen_ty_2, -pub _rt: __sifields__bindgen_ty_3, -pub _sigchld: __sifields__bindgen_ty_4, -pub _sigfault: __sifields__bindgen_ty_5, -pub _sigpoll: __sifields__bindgen_ty_6, -pub _sigsys: __sifields__bindgen_ty_7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_1 { @@ -3746,15 +508,6 @@ pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { -pub _trapno: crate::ctypes::c_int, -pub _addr_lsb: crate::ctypes::c_short, -pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, -pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { pub _dummy_bnd: [crate::ctypes::c_char; 8usize], @@ -3794,568 +547,61 @@ } #[repr(C)] #[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { -pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, -pub _si_pad: [crate::ctypes::c_int; 32usize], -} -#[repr(C)] -#[derive(Copy, Clone)] pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { pub si_signo: crate::ctypes::c_int, pub si_errno: crate::ctypes::c_int, pub si_code: crate::ctypes::c_int, pub _sifields: __sifields, } -pub type siginfo_t = siginfo; #[repr(C)] #[derive(Copy, Clone)] pub struct sigevent { pub sigev_value: sigval_t, -pub sigev_signo: crate::ctypes::c_int, -pub sigev_notify: crate::ctypes::c_int, -pub _sigev_un: sigevent__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { -pub _pad: [crate::ctypes::c_int; 12usize], -pub _tid: crate::ctypes::c_int, -pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { -pub _function: ::core::option::Option, -pub _attribute: *mut crate::ctypes::c_void, -} -pub type sigevent_t = sigevent; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statx_timestamp { -pub tv_sec: __s64, -pub tv_nsec: __u32, -pub __reserved: __s32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statx { -pub stx_mask: __u32, -pub stx_blksize: __u32, -pub stx_attributes: __u64, -pub stx_nlink: __u32, -pub stx_uid: __u32, -pub stx_gid: __u32, -pub stx_mode: __u16, -pub __spare0: [__u16; 1usize], -pub stx_ino: __u64, -pub stx_size: __u64, -pub stx_blocks: __u64, -pub stx_attributes_mask: __u64, -pub stx_atime: statx_timestamp, -pub stx_btime: statx_timestamp, -pub stx_ctime: statx_timestamp, -pub stx_mtime: statx_timestamp, -pub stx_rdev_major: __u32, -pub stx_rdev_minor: __u32, -pub stx_dev_major: __u32, -pub stx_dev_minor: __u32, -pub stx_mnt_id: __u64, -pub stx_dio_mem_align: __u32, -pub stx_dio_offset_align: __u32, -pub __spare3: [__u64; 12usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct sysinfo { -pub uptime: __kernel_long_t, -pub loads: [__kernel_ulong_t; 3usize], -pub totalram: __kernel_ulong_t, -pub freeram: __kernel_ulong_t, -pub sharedram: __kernel_ulong_t, -pub bufferram: __kernel_ulong_t, -pub totalswap: __kernel_ulong_t, -pub freeswap: __kernel_ulong_t, -pub procs: __u16, -pub pad: __u16, -pub totalhigh: __kernel_ulong_t, -pub freehigh: __kernel_ulong_t, -pub mem_unit: __u32, -pub _f: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcphdr { -pub source: __be16, -pub dest: __be16, -pub seq: __be32, -pub ack_seq: __be32, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub window: __be16, -pub check: __sum16, -pub urg_ptr: __be16, -} -impl tcphdr { -#[inline] -pub fn res1(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } -} -#[inline] -pub fn set_res1(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn doff(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } -} -#[inline] -pub fn set_doff(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn fin(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } -} -#[inline] -pub fn set_fin(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn syn(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } -} -#[inline] -pub fn set_syn(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 1u8, val as u64) -} -} -#[inline] -pub fn rst(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } -} -#[inline] -pub fn set_rst(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(10usize, 1u8, val as u64) -} -} -#[inline] -pub fn psh(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } -} -#[inline] -pub fn set_psh(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(11usize, 1u8, val as u64) -} -} -#[inline] -pub fn ack(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } -} -#[inline] -pub fn set_ack(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(12usize, 1u8, val as u64) -} -} -#[inline] -pub fn urg(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } -} -#[inline] -pub fn set_urg(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(13usize, 1u8, val as u64) -} -} -#[inline] -pub fn ece(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } -} -#[inline] -pub fn set_ece(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(14usize, 1u8, val as u64) -} -} -#[inline] -pub fn cwr(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } -} -#[inline] -pub fn set_cwr(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(15usize, 1u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let res1: u16 = unsafe { ::core::mem::transmute(res1) }; -res1 as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let doff: u16 = unsafe { ::core::mem::transmute(doff) }; -doff as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let fin: u16 = unsafe { ::core::mem::transmute(fin) }; -fin as u64 -}); -__bindgen_bitfield_unit.set(9usize, 1u8, { -let syn: u16 = unsafe { ::core::mem::transmute(syn) }; -syn as u64 -}); -__bindgen_bitfield_unit.set(10usize, 1u8, { -let rst: u16 = unsafe { ::core::mem::transmute(rst) }; -rst as u64 -}); -__bindgen_bitfield_unit.set(11usize, 1u8, { -let psh: u16 = unsafe { ::core::mem::transmute(psh) }; -psh as u64 -}); -__bindgen_bitfield_unit.set(12usize, 1u8, { -let ack: u16 = unsafe { ::core::mem::transmute(ack) }; -ack as u64 -}); -__bindgen_bitfield_unit.set(13usize, 1u8, { -let urg: u16 = unsafe { ::core::mem::transmute(urg) }; -urg as u64 -}); -__bindgen_bitfield_unit.set(14usize, 1u8, { -let ece: u16 = unsafe { ::core::mem::transmute(ece) }; -ece as u64 -}); -__bindgen_bitfield_unit.set(15usize, 1u8, { -let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; -cwr as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union tcp_word_hdr { -pub hdr: tcphdr, -pub words: [__be32; 5usize], -} -pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; -pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; -pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; -pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; -pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; -pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; -pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; -pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; -pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; -pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_4 { -TCP_FLAG_CWR = 32768, -TCP_FLAG_ECE = 16384, -TCP_FLAG_URG = 8192, -TCP_FLAG_ACK = 4096, -TCP_FLAG_PSH = 2048, -TCP_FLAG_RST = 1024, -TCP_FLAG_SYN = 512, -TCP_FLAG_FIN = 256, -TCP_RESERVED_BITS = 15, -TCP_DATA_OFFSET = 240, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_repair_opt { -pub opt_code: __u32, -pub opt_val: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_repair_window { -pub snd_wl1: __u32, -pub snd_wnd: __u32, -pub max_window: __u32, -pub rcv_wnd: __u32, -pub rcv_wup: __u32, -} -pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; -pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; -pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; -pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_5 { -TCP_NO_QUEUE = 0, -TCP_RECV_QUEUE = 1, -TCP_SEND_QUEUE = 2, -TCP_QUEUES_NR = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_fastopen_client_fail { -TFO_STATUS_UNSPEC = 0, -TFO_COOKIE_UNAVAILABLE = 1, -TFO_DATA_NOT_ACKED = 2, -TFO_SYN_RETRANSMITTED = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_ca_state { -TCP_CA_Open = 0, -TCP_CA_Disorder = 1, -TCP_CA_CWR = 2, -TCP_CA_Recovery = 3, -TCP_CA_Loss = 4, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_info { -pub tcpi_state: __u8, -pub tcpi_ca_state: __u8, -pub tcpi_retransmits: __u8, -pub tcpi_probes: __u8, -pub tcpi_backoff: __u8, -pub tcpi_options: __u8, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub tcpi_rto: __u32, -pub tcpi_ato: __u32, -pub tcpi_snd_mss: __u32, -pub tcpi_rcv_mss: __u32, -pub tcpi_unacked: __u32, -pub tcpi_sacked: __u32, -pub tcpi_lost: __u32, -pub tcpi_retrans: __u32, -pub tcpi_fackets: __u32, -pub tcpi_last_data_sent: __u32, -pub tcpi_last_ack_sent: __u32, -pub tcpi_last_data_recv: __u32, -pub tcpi_last_ack_recv: __u32, -pub tcpi_pmtu: __u32, -pub tcpi_rcv_ssthresh: __u32, -pub tcpi_rtt: __u32, -pub tcpi_rttvar: __u32, -pub tcpi_snd_ssthresh: __u32, -pub tcpi_snd_cwnd: __u32, -pub tcpi_advmss: __u32, -pub tcpi_reordering: __u32, -pub tcpi_rcv_rtt: __u32, -pub tcpi_rcv_space: __u32, -pub tcpi_total_retrans: __u32, -pub tcpi_pacing_rate: __u64, -pub tcpi_max_pacing_rate: __u64, -pub tcpi_bytes_acked: __u64, -pub tcpi_bytes_received: __u64, -pub tcpi_segs_out: __u32, -pub tcpi_segs_in: __u32, -pub tcpi_notsent_bytes: __u32, -pub tcpi_min_rtt: __u32, -pub tcpi_data_segs_in: __u32, -pub tcpi_data_segs_out: __u32, -pub tcpi_delivery_rate: __u64, -pub tcpi_busy_time: __u64, -pub tcpi_rwnd_limited: __u64, -pub tcpi_sndbuf_limited: __u64, -pub tcpi_delivered: __u32, -pub tcpi_delivered_ce: __u32, -pub tcpi_bytes_sent: __u64, -pub tcpi_bytes_retrans: __u64, -pub tcpi_dsack_dups: __u32, -pub tcpi_reord_seen: __u32, -pub tcpi_rcv_ooopack: __u32, -pub tcpi_snd_wnd: __u32, -pub tcpi_rcv_wnd: __u32, -pub tcpi_rehash: __u32, -} -impl tcp_info { -#[inline] -pub fn tcpi_snd_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_rcv_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } -} -#[inline] -pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn tcpi_fastopen_client_fail(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } -} -#[inline] -pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 2u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; -tcpi_snd_wscale as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; -tcpi_rcv_wscale as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; -tcpi_delivery_rate_app_limited as u64 -}); -__bindgen_bitfield_unit.set(9usize, 2u8, { -let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; -tcpi_fastopen_client_fail as u64 -}); -__bindgen_bitfield_unit -} -} -pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; -pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; -pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; -pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; -pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; -pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; -pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; -pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; -pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; -pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; -pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; -pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; -pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; -pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; -pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; -pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; -pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; -pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; -pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; -pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; -pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; -pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; -pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; -pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; -pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; -pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; -pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; -pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_6 { -TCP_NLA_PAD = 0, -TCP_NLA_BUSY = 1, -TCP_NLA_RWND_LIMITED = 2, -TCP_NLA_SNDBUF_LIMITED = 3, -TCP_NLA_DATA_SEGS_OUT = 4, -TCP_NLA_TOTAL_RETRANS = 5, -TCP_NLA_PACING_RATE = 6, -TCP_NLA_DELIVERY_RATE = 7, -TCP_NLA_SND_CWND = 8, -TCP_NLA_REORDERING = 9, -TCP_NLA_MIN_RTT = 10, -TCP_NLA_RECUR_RETRANS = 11, -TCP_NLA_DELIVERY_RATE_APP_LMT = 12, -TCP_NLA_SNDQ_SIZE = 13, -TCP_NLA_CA_STATE = 14, -TCP_NLA_SND_SSTHRESH = 15, -TCP_NLA_DELIVERED = 16, -TCP_NLA_DELIVERED_CE = 17, -TCP_NLA_BYTES_SENT = 18, -TCP_NLA_BYTES_RETRANS = 19, -TCP_NLA_DSACK_DUPS = 20, -TCP_NLA_REORD_SEEN = 21, -TCP_NLA_SRTT = 22, -TCP_NLA_TIMEOUT_REHASH = 23, -TCP_NLA_BYTES_NOTSENT = 24, -TCP_NLA_EDT = 25, -TCP_NLA_TTL = 26, -TCP_NLA_REHASH = 27, +pub sigev_signo: crate::ctypes::c_int, +pub sigev_notify: crate::ctypes::c_int, +pub _sigev_un: sigevent__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub struct tcp_md5sig { -pub tcpm_addr: __kernel_sockaddr_storage, -pub tcpm_flags: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_ifindex: crate::ctypes::c_int, -pub tcpm_key: [__u8; 80usize], +#[derive(Debug, Copy, Clone)] +pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { +pub _function: ::core::option::Option, +pub _attribute: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_diag_md5sig { -pub tcpm_family: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_addr: [__be32; 4usize], -pub tcpm_key: [__u8; 80usize], +pub struct statx_timestamp { +pub tv_sec: __s64, +pub tv_nsec: __u32, +pub __reserved: __s32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_zerocopy_receive { -pub address: __u64, -pub length: __u32, -pub recv_skip_hint: __u32, -pub inq: __u32, -pub err: __s32, -pub copybuf_address: __u64, -pub copybuf_len: __s32, -pub flags: __u32, -pub msg_control: __u64, -pub msg_controllen: __u64, -pub msg_flags: __u32, -pub reserved: __u32, +pub struct statx { +pub stx_mask: __u32, +pub stx_blksize: __u32, +pub stx_attributes: __u64, +pub stx_nlink: __u32, +pub stx_uid: __u32, +pub stx_gid: __u32, +pub stx_mode: __u16, +pub __spare0: [__u16; 1usize], +pub stx_ino: __u64, +pub stx_size: __u64, +pub stx_blocks: __u64, +pub stx_attributes_mask: __u64, +pub stx_atime: statx_timestamp, +pub stx_btime: statx_timestamp, +pub stx_ctime: statx_timestamp, +pub stx_mtime: statx_timestamp, +pub stx_rdev_major: __u32, +pub stx_rdev_minor: __u32, +pub stx_dev_major: __u32, +pub stx_dev_minor: __u32, +pub stx_mnt_id: __u64, +pub stx_dio_mem_align: __u32, +pub stx_dio_offset_align: __u32, +pub __spare3: [__u64; 12usize], } -pub type cc_t = crate::ctypes::c_uchar; -pub type speed_t = crate::ctypes::c_uint; -pub type tcflag_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct termios { @@ -4414,42 +660,1873 @@ pub iov_base: *mut crate::ctypes::c_void, pub iov_len: __kernel_size_t, } +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct uffd_msg { +pub event: __u8, +pub reserved1: __u8, +pub reserved2: __u16, +pub reserved3: __u32, +pub arg: uffd_msg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { +pub flags: __u64, +pub address: __u64, +pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { +pub ufd: __u32, +} #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_un { -pub sun_family: __kernel_sa_family_t, -pub sun_path: [crate::ctypes::c_char; 108usize], +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { +pub from: __u64, +pub to: __u64, +pub len: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct oldold_utsname { -pub sysname: [crate::ctypes::c_char; 9usize], -pub nodename: [crate::ctypes::c_char; 9usize], -pub release: [crate::ctypes::c_char; 9usize], -pub version: [crate::ctypes::c_char; 9usize], -pub machine: [crate::ctypes::c_char; 9usize], +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { +pub start: __u64, +pub end: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct old_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { +pub reserved1: __u64, +pub reserved2: __u64, +pub reserved3: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct new_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], -pub domainname: [crate::ctypes::c_char; 65usize], +pub struct uffdio_api { +pub api: __u64, +pub features: __u64, +pub ioctls: __u64, } -impl membarrier_cmd { -pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_range { +pub start: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_register { +pub range: uffdio_range, +pub mode: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_copy { +pub dst: __u64, +pub src: __u64, +pub len: __u64, +pub mode: __u64, +pub copy: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_zeropage { +pub range: uffdio_range, +pub mode: __u64, +pub zeropage: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_writeprotect { +pub range: uffdio_range, +pub mode: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_continue { +pub range: uffdio_range, +pub mode: __u64, +pub mapped: __s64, +} +#[repr(C)] +#[derive(Debug)] +pub struct linux_dirent64 { +pub d_ino: crate::ctypes::c_ulong, +pub d_off: crate::ctypes::c_long, +pub d_reclen: __u16, +pub d_type: __u8, +pub d_name: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat { +pub st_dev: crate::ctypes::c_ulong, +pub st_ino: crate::ctypes::c_ulong, +pub st_mode: crate::ctypes::c_uint, +pub st_nlink: crate::ctypes::c_uint, +pub st_uid: crate::ctypes::c_uint, +pub st_gid: crate::ctypes::c_uint, +pub st_rdev: crate::ctypes::c_ulong, +pub __pad1: crate::ctypes::c_ulong, +pub st_size: crate::ctypes::c_long, +pub st_blksize: crate::ctypes::c_int, +pub __pad2: crate::ctypes::c_int, +pub st_blocks: crate::ctypes::c_long, +pub st_atime: crate::ctypes::c_long, +pub st_atime_nsec: crate::ctypes::c_ulong, +pub st_mtime: crate::ctypes::c_long, +pub st_mtime_nsec: crate::ctypes::c_ulong, +pub st_ctime: crate::ctypes::c_long, +pub st_ctime_nsec: crate::ctypes::c_ulong, +pub __unused4: crate::ctypes::c_uint, +pub __unused5: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs { +pub f_type: __kernel_long_t, +pub f_bsize: __kernel_long_t, +pub f_blocks: __kernel_long_t, +pub f_bfree: __kernel_long_t, +pub f_bavail: __kernel_long_t, +pub f_files: __kernel_long_t, +pub f_ffree: __kernel_long_t, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __kernel_long_t, +pub f_frsize: __kernel_long_t, +pub f_flags: __kernel_long_t, +pub f_spare: [__kernel_long_t; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs64 { +pub f_type: __kernel_long_t, +pub f_bsize: __kernel_long_t, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __kernel_long_t, +pub f_frsize: __kernel_long_t, +pub f_flags: __kernel_long_t, +pub f_spare: [__kernel_long_t; 4usize], +} +#[repr(C, packed(4))] +#[derive(Debug, Copy, Clone)] +pub struct compat_statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct user_desc { +pub entry_number: crate::ctypes::c_uint, +pub base_addr: crate::ctypes::c_uint, +pub limit: crate::ctypes::c_uint, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub __bindgen_padding_0: [u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct kernel_sigset_t { +pub sig: [crate::ctypes::c_ulong; 1usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct kernel_sigaction { +pub sa_handler_kernel: __kernel_sighandler_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_restorer: __sigrestore_t, +pub sa_mask: kernel_sigset_t, +} +pub const LINUX_VERSION_CODE: u32 = 393984; +pub const LINUX_VERSION_MAJOR: u32 = 6; +pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; +pub const LINUX_VERSION_SUBLEVEL: u32 = 0; +pub const AT_SYSINFO_EHDR: u32 = 33; +pub const AT_MINSIGSTKSZ: u32 = 51; +pub const AT_VECTOR_SIZE_ARCH: u32 = 2; +pub const AT_NULL: u32 = 0; +pub const AT_IGNORE: u32 = 1; +pub const AT_EXECFD: u32 = 2; +pub const AT_PHDR: u32 = 3; +pub const AT_PHENT: u32 = 4; +pub const AT_PHNUM: u32 = 5; +pub const AT_PAGESZ: u32 = 6; +pub const AT_BASE: u32 = 7; +pub const AT_FLAGS: u32 = 8; +pub const AT_ENTRY: u32 = 9; +pub const AT_NOTELF: u32 = 10; +pub const AT_UID: u32 = 11; +pub const AT_EUID: u32 = 12; +pub const AT_GID: u32 = 13; +pub const AT_EGID: u32 = 14; +pub const AT_PLATFORM: u32 = 15; +pub const AT_HWCAP: u32 = 16; +pub const AT_CLKTCK: u32 = 17; +pub const AT_SECURE: u32 = 23; +pub const AT_BASE_PLATFORM: u32 = 24; +pub const AT_RANDOM: u32 = 25; +pub const AT_HWCAP2: u32 = 26; +pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; +pub const AT_RSEQ_ALIGN: u32 = 28; +pub const AT_EXECFN: u32 = 31; +pub const __FD_SETSIZE: u32 = 1024; +pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; +pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; +pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; +pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; +pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; +pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; +pub const VFS_CAP_REVISION_SHIFT: u32 = 24; +pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; +pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; +pub const VFS_CAP_REVISION_1: u32 = 16777216; +pub const VFS_CAP_U32_1: u32 = 1; +pub const VFS_CAP_REVISION_2: u32 = 33554432; +pub const VFS_CAP_U32_2: u32 = 2; +pub const VFS_CAP_REVISION_3: u32 = 50331648; +pub const VFS_CAP_U32_3: u32 = 2; +pub const VFS_CAP_U32: u32 = 2; +pub const VFS_CAP_REVISION: u32 = 50331648; +pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S: u32 = 1; +pub const CAP_CHOWN: u32 = 0; +pub const CAP_DAC_OVERRIDE: u32 = 1; +pub const CAP_DAC_READ_SEARCH: u32 = 2; +pub const CAP_FOWNER: u32 = 3; +pub const CAP_FSETID: u32 = 4; +pub const CAP_KILL: u32 = 5; +pub const CAP_SETGID: u32 = 6; +pub const CAP_SETUID: u32 = 7; +pub const CAP_SETPCAP: u32 = 8; +pub const CAP_LINUX_IMMUTABLE: u32 = 9; +pub const CAP_NET_BIND_SERVICE: u32 = 10; +pub const CAP_NET_BROADCAST: u32 = 11; +pub const CAP_NET_ADMIN: u32 = 12; +pub const CAP_NET_RAW: u32 = 13; +pub const CAP_IPC_LOCK: u32 = 14; +pub const CAP_IPC_OWNER: u32 = 15; +pub const CAP_SYS_MODULE: u32 = 16; +pub const CAP_SYS_RAWIO: u32 = 17; +pub const CAP_SYS_CHROOT: u32 = 18; +pub const CAP_SYS_PTRACE: u32 = 19; +pub const CAP_SYS_PACCT: u32 = 20; +pub const CAP_SYS_ADMIN: u32 = 21; +pub const CAP_SYS_BOOT: u32 = 22; +pub const CAP_SYS_NICE: u32 = 23; +pub const CAP_SYS_RESOURCE: u32 = 24; +pub const CAP_SYS_TIME: u32 = 25; +pub const CAP_SYS_TTY_CONFIG: u32 = 26; +pub const CAP_MKNOD: u32 = 27; +pub const CAP_LEASE: u32 = 28; +pub const CAP_AUDIT_WRITE: u32 = 29; +pub const CAP_AUDIT_CONTROL: u32 = 30; +pub const CAP_SETFCAP: u32 = 31; +pub const CAP_MAC_OVERRIDE: u32 = 32; +pub const CAP_MAC_ADMIN: u32 = 33; +pub const CAP_SYSLOG: u32 = 34; +pub const CAP_WAKE_ALARM: u32 = 35; +pub const CAP_BLOCK_SUSPEND: u32 = 36; +pub const CAP_AUDIT_READ: u32 = 37; +pub const CAP_PERFMON: u32 = 38; +pub const CAP_BPF: u32 = 39; +pub const CAP_CHECKPOINT_RESTORE: u32 = 40; +pub const CAP_LAST_CAP: u32 = 40; +pub const O_DIRECTORY: u32 = 16384; +pub const O_NOFOLLOW: u32 = 32768; +pub const O_DIRECT: u32 = 65536; +pub const O_LARGEFILE: u32 = 131072; +pub const O_ACCMODE: u32 = 3; +pub const O_RDONLY: u32 = 0; +pub const O_WRONLY: u32 = 1; +pub const O_RDWR: u32 = 2; +pub const O_CREAT: u32 = 64; +pub const O_EXCL: u32 = 128; +pub const O_NOCTTY: u32 = 256; +pub const O_TRUNC: u32 = 512; +pub const O_APPEND: u32 = 1024; +pub const O_NONBLOCK: u32 = 2048; +pub const O_DSYNC: u32 = 4096; +pub const FASYNC: u32 = 8192; +pub const O_NOATIME: u32 = 262144; +pub const O_CLOEXEC: u32 = 524288; +pub const __O_SYNC: u32 = 1048576; +pub const O_SYNC: u32 = 1052672; +pub const O_PATH: u32 = 2097152; +pub const __O_TMPFILE: u32 = 4194304; +pub const O_TMPFILE: u32 = 4210688; +pub const O_TMPFILE_MASK: u32 = 4210752; +pub const O_NDELAY: u32 = 2048; +pub const F_DUPFD: u32 = 0; +pub const F_GETFD: u32 = 1; +pub const F_SETFD: u32 = 2; +pub const F_GETFL: u32 = 3; +pub const F_SETFL: u32 = 4; +pub const F_GETLK: u32 = 5; +pub const F_SETLK: u32 = 6; +pub const F_SETLKW: u32 = 7; +pub const F_SETOWN: u32 = 8; +pub const F_GETOWN: u32 = 9; +pub const F_SETSIG: u32 = 10; +pub const F_GETSIG: u32 = 11; +pub const F_SETOWN_EX: u32 = 15; +pub const F_GETOWN_EX: u32 = 16; +pub const F_GETOWNER_UIDS: u32 = 17; +pub const F_OFD_GETLK: u32 = 36; +pub const F_OFD_SETLK: u32 = 37; +pub const F_OFD_SETLKW: u32 = 38; +pub const F_OWNER_TID: u32 = 0; +pub const F_OWNER_PID: u32 = 1; +pub const F_OWNER_PGRP: u32 = 2; +pub const FD_CLOEXEC: u32 = 1; +pub const F_RDLCK: u32 = 0; +pub const F_WRLCK: u32 = 1; +pub const F_UNLCK: u32 = 2; +pub const F_EXLCK: u32 = 4; +pub const F_SHLCK: u32 = 8; +pub const LOCK_SH: u32 = 1; +pub const LOCK_EX: u32 = 2; +pub const LOCK_NB: u32 = 4; +pub const LOCK_UN: u32 = 8; +pub const LOCK_MAND: u32 = 32; +pub const LOCK_READ: u32 = 64; +pub const LOCK_WRITE: u32 = 128; +pub const LOCK_RW: u32 = 192; +pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; +pub const RESOLVE_NO_XDEV: u32 = 1; +pub const RESOLVE_NO_MAGICLINKS: u32 = 2; +pub const RESOLVE_NO_SYMLINKS: u32 = 4; +pub const RESOLVE_BENEATH: u32 = 8; +pub const RESOLVE_IN_ROOT: u32 = 16; +pub const RESOLVE_CACHED: u32 = 32; +pub const F_SETLEASE: u32 = 1024; +pub const F_GETLEASE: u32 = 1025; +pub const F_CANCELLK: u32 = 1029; +pub const F_DUPFD_CLOEXEC: u32 = 1030; +pub const F_NOTIFY: u32 = 1026; +pub const F_SETPIPE_SZ: u32 = 1031; +pub const F_GETPIPE_SZ: u32 = 1032; +pub const F_ADD_SEALS: u32 = 1033; +pub const F_GET_SEALS: u32 = 1034; +pub const F_SEAL_SEAL: u32 = 1; +pub const F_SEAL_SHRINK: u32 = 2; +pub const F_SEAL_GROW: u32 = 4; +pub const F_SEAL_WRITE: u32 = 8; +pub const F_SEAL_FUTURE_WRITE: u32 = 16; +pub const F_SEAL_EXEC: u32 = 32; +pub const F_GET_RW_HINT: u32 = 1035; +pub const F_SET_RW_HINT: u32 = 1036; +pub const F_GET_FILE_RW_HINT: u32 = 1037; +pub const F_SET_FILE_RW_HINT: u32 = 1038; +pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; +pub const RWH_WRITE_LIFE_NONE: u32 = 1; +pub const RWH_WRITE_LIFE_SHORT: u32 = 2; +pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; +pub const RWH_WRITE_LIFE_LONG: u32 = 4; +pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; +pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; +pub const DN_ACCESS: u32 = 1; +pub const DN_MODIFY: u32 = 2; +pub const DN_CREATE: u32 = 4; +pub const DN_DELETE: u32 = 8; +pub const DN_RENAME: u32 = 16; +pub const DN_ATTRIB: u32 = 32; +pub const DN_MULTISHOT: u32 = 2147483648; +pub const AT_FDCWD: i32 = -100; +pub const AT_SYMLINK_NOFOLLOW: u32 = 256; +pub const AT_EACCESS: u32 = 512; +pub const AT_REMOVEDIR: u32 = 512; +pub const AT_SYMLINK_FOLLOW: u32 = 1024; +pub const AT_NO_AUTOMOUNT: u32 = 2048; +pub const AT_EMPTY_PATH: u32 = 4096; +pub const AT_STATX_SYNC_TYPE: u32 = 24576; +pub const AT_STATX_SYNC_AS_STAT: u32 = 0; +pub const AT_STATX_FORCE_SYNC: u32 = 8192; +pub const AT_STATX_DONT_SYNC: u32 = 16384; +pub const AT_RECURSIVE: u32 = 32768; +pub const EPOLL_CLOEXEC: u32 = 524288; +pub const EPOLL_CTL_ADD: u32 = 1; +pub const EPOLL_CTL_DEL: u32 = 2; +pub const EPOLL_CTL_MOD: u32 = 3; +pub const POSIX_FADV_NORMAL: u32 = 0; +pub const POSIX_FADV_RANDOM: u32 = 1; +pub const POSIX_FADV_SEQUENTIAL: u32 = 2; +pub const POSIX_FADV_WILLNEED: u32 = 3; +pub const POSIX_FADV_DONTNEED: u32 = 4; +pub const POSIX_FADV_NOREUSE: u32 = 5; +pub const FALLOC_FL_KEEP_SIZE: u32 = 1; +pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; +pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; +pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; +pub const FALLOC_FL_ZERO_RANGE: u32 = 16; +pub const FALLOC_FL_INSERT_RANGE: u32 = 32; +pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 14; +pub const _IOC_DIRBITS: u32 = 2; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 3; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 30; +pub const _IOC_NONE: u32 = 0; +pub const _IOC_WRITE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const IOC_IN: u32 = 1073741824; +pub const IOC_OUT: u32 = 2147483648; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const OPEN_TREE_CLOEXEC: u32 = 524288; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const FUTEX_WAIT: u32 = 0; +pub const FUTEX_WAKE: u32 = 1; +pub const FUTEX_FD: u32 = 2; +pub const FUTEX_REQUEUE: u32 = 3; +pub const FUTEX_CMP_REQUEUE: u32 = 4; +pub const FUTEX_WAKE_OP: u32 = 5; +pub const FUTEX_LOCK_PI: u32 = 6; +pub const FUTEX_UNLOCK_PI: u32 = 7; +pub const FUTEX_TRYLOCK_PI: u32 = 8; +pub const FUTEX_WAIT_BITSET: u32 = 9; +pub const FUTEX_WAKE_BITSET: u32 = 10; +pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; +pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; +pub const FUTEX_LOCK_PI2: u32 = 13; +pub const FUTEX_PRIVATE_FLAG: u32 = 128; +pub const FUTEX_CLOCK_REALTIME: u32 = 256; +pub const FUTEX_CMD_MASK: i32 = -385; +pub const FUTEX_WAIT_PRIVATE: u32 = 128; +pub const FUTEX_WAKE_PRIVATE: u32 = 129; +pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; +pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; +pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; +pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; +pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; +pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; +pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; +pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; +pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; +pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; +pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; +pub const FUTEX_32: u32 = 2; +pub const FUTEX_WAITV_MAX: u32 = 128; +pub const FUTEX_WAITERS: u32 = 2147483648; +pub const FUTEX_OWNER_DIED: u32 = 1073741824; +pub const FUTEX_TID_MASK: u32 = 1073741823; +pub const ROBUST_LIST_LIMIT: u32 = 2048; +pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; +pub const FUTEX_OP_SET: u32 = 0; +pub const FUTEX_OP_ADD: u32 = 1; +pub const FUTEX_OP_OR: u32 = 2; +pub const FUTEX_OP_ANDN: u32 = 3; +pub const FUTEX_OP_XOR: u32 = 4; +pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; +pub const FUTEX_OP_CMP_EQ: u32 = 0; +pub const FUTEX_OP_CMP_NE: u32 = 1; +pub const FUTEX_OP_CMP_LT: u32 = 2; +pub const FUTEX_OP_CMP_LE: u32 = 3; +pub const FUTEX_OP_CMP_GT: u32 = 4; +pub const FUTEX_OP_CMP_GE: u32 = 5; +pub const IN_ACCESS: u32 = 1; +pub const IN_MODIFY: u32 = 2; +pub const IN_ATTRIB: u32 = 4; +pub const IN_CLOSE_WRITE: u32 = 8; +pub const IN_CLOSE_NOWRITE: u32 = 16; +pub const IN_OPEN: u32 = 32; +pub const IN_MOVED_FROM: u32 = 64; +pub const IN_MOVED_TO: u32 = 128; +pub const IN_CREATE: u32 = 256; +pub const IN_DELETE: u32 = 512; +pub const IN_DELETE_SELF: u32 = 1024; +pub const IN_MOVE_SELF: u32 = 2048; +pub const IN_UNMOUNT: u32 = 8192; +pub const IN_Q_OVERFLOW: u32 = 16384; +pub const IN_IGNORED: u32 = 32768; +pub const IN_CLOSE: u32 = 24; +pub const IN_MOVE: u32 = 192; +pub const IN_ONLYDIR: u32 = 16777216; +pub const IN_DONT_FOLLOW: u32 = 33554432; +pub const IN_EXCL_UNLINK: u32 = 67108864; +pub const IN_MASK_CREATE: u32 = 268435456; +pub const IN_MASK_ADD: u32 = 536870912; +pub const IN_ISDIR: u32 = 1073741824; +pub const IN_ONESHOT: u32 = 2147483648; +pub const IN_ALL_EVENTS: u32 = 4095; +pub const IN_CLOEXEC: u32 = 524288; +pub const IN_NONBLOCK: u32 = 2048; +pub const ADFS_SUPER_MAGIC: u32 = 44533; +pub const AFFS_SUPER_MAGIC: u32 = 44543; +pub const AFS_SUPER_MAGIC: u32 = 1397113167; +pub const AUTOFS_SUPER_MAGIC: u32 = 391; +pub const CEPH_SUPER_MAGIC: u32 = 12805120; +pub const CODA_SUPER_MAGIC: u32 = 1937076805; +pub const CRAMFS_MAGIC: u32 = 684539205; +pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; +pub const DEBUGFS_MAGIC: u32 = 1684170528; +pub const SECURITYFS_MAGIC: u32 = 1935894131; +pub const SELINUX_MAGIC: u32 = 4185718668; +pub const SMACK_MAGIC: u32 = 1128357203; +pub const RAMFS_MAGIC: u32 = 2240043254; +pub const TMPFS_MAGIC: u32 = 16914836; +pub const HUGETLBFS_MAGIC: u32 = 2508478710; +pub const SQUASHFS_MAGIC: u32 = 1936814952; +pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; +pub const EFS_SUPER_MAGIC: u32 = 4278867; +pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; +pub const EXT2_SUPER_MAGIC: u32 = 61267; +pub const EXT3_SUPER_MAGIC: u32 = 61267; +pub const XENFS_SUPER_MAGIC: u32 = 2881100148; +pub const EXT4_SUPER_MAGIC: u32 = 61267; +pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; +pub const NILFS_SUPER_MAGIC: u32 = 13364; +pub const F2FS_SUPER_MAGIC: u32 = 4076150800; +pub const HPFS_SUPER_MAGIC: u32 = 4187351113; +pub const ISOFS_SUPER_MAGIC: u32 = 38496; +pub const JFFS2_SUPER_MAGIC: u32 = 29366; +pub const XFS_SUPER_MAGIC: u32 = 1481003842; +pub const PSTOREFS_MAGIC: u32 = 1634035564; +pub const EFIVARFS_MAGIC: u32 = 3730735588; +pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; +pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; +pub const FUSE_SUPER_MAGIC: u32 = 1702057286; +pub const MINIX_SUPER_MAGIC: u32 = 4991; +pub const MINIX_SUPER_MAGIC2: u32 = 5007; +pub const MINIX2_SUPER_MAGIC: u32 = 9320; +pub const MINIX2_SUPER_MAGIC2: u32 = 9336; +pub const MINIX3_SUPER_MAGIC: u32 = 19802; +pub const MSDOS_SUPER_MAGIC: u32 = 19780; +pub const EXFAT_SUPER_MAGIC: u32 = 538032816; +pub const NCP_SUPER_MAGIC: u32 = 22092; +pub const NFS_SUPER_MAGIC: u32 = 26985; +pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; +pub const OPENPROM_SUPER_MAGIC: u32 = 40865; +pub const QNX4_SUPER_MAGIC: u32 = 47; +pub const QNX6_SUPER_MAGIC: u32 = 1746473250; +pub const AFS_FS_MAGIC: u32 = 1799439955; +pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; +pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9] = b"ReIsErFs\0"; +pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr2Fs\0"; +pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr3Fs\0"; +pub const SMB_SUPER_MAGIC: u32 = 20859; +pub const CIFS_SUPER_MAGIC: u32 = 4283649346; +pub const SMB2_SUPER_MAGIC: u32 = 4266872130; +pub const CGROUP_SUPER_MAGIC: u32 = 2613483; +pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; +pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; +pub const STACK_END_MAGIC: u32 = 1470918301; +pub const TRACEFS_MAGIC: u32 = 1953653091; +pub const V9FS_MAGIC: u32 = 16914839; +pub const BDEVFS_MAGIC: u32 = 1650746742; +pub const DAXFS_MAGIC: u32 = 1684300152; +pub const BINFMTFS_MAGIC: u32 = 1112100429; +pub const DEVPTS_SUPER_MAGIC: u32 = 7377; +pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; +pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; +pub const PIPEFS_MAGIC: u32 = 1346981957; +pub const PROC_SUPER_MAGIC: u32 = 40864; +pub const SOCKFS_MAGIC: u32 = 1397703499; +pub const SYSFS_MAGIC: u32 = 1650812274; +pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; +pub const MTD_INODE_FS_MAGIC: u32 = 288389204; +pub const ANON_INODE_FS_MAGIC: u32 = 151263540; +pub const BTRFS_TEST_MAGIC: u32 = 1936880249; +pub const NSFS_MAGIC: u32 = 1853056627; +pub const BPF_FS_MAGIC: u32 = 3405662737; +pub const AAFS_MAGIC: u32 = 1513908720; +pub const ZONEFS_MAGIC: u32 = 1515144787; +pub const UDF_SUPER_MAGIC: u32 = 352400198; +pub const DMA_BUF_MAGIC: u32 = 1145913666; +pub const DEVMEM_MAGIC: u32 = 1162691661; +pub const SECRETMEM_MAGIC: u32 = 1397048141; +pub const PROT_READ: u32 = 1; +pub const PROT_WRITE: u32 = 2; +pub const PROT_EXEC: u32 = 4; +pub const PROT_SEM: u32 = 8; +pub const PROT_NONE: u32 = 0; +pub const PROT_GROWSDOWN: u32 = 16777216; +pub const PROT_GROWSUP: u32 = 33554432; +pub const MAP_TYPE: u32 = 15; +pub const MAP_FIXED: u32 = 16; +pub const MAP_ANONYMOUS: u32 = 32; +pub const MAP_POPULATE: u32 = 32768; +pub const MAP_NONBLOCK: u32 = 65536; +pub const MAP_STACK: u32 = 131072; +pub const MAP_HUGETLB: u32 = 262144; +pub const MAP_SYNC: u32 = 524288; +pub const MAP_FIXED_NOREPLACE: u32 = 1048576; +pub const MAP_UNINITIALIZED: u32 = 67108864; +pub const MLOCK_ONFAULT: u32 = 1; +pub const MS_ASYNC: u32 = 1; +pub const MS_INVALIDATE: u32 = 2; +pub const MS_SYNC: u32 = 4; +pub const MADV_NORMAL: u32 = 0; +pub const MADV_RANDOM: u32 = 1; +pub const MADV_SEQUENTIAL: u32 = 2; +pub const MADV_WILLNEED: u32 = 3; +pub const MADV_DONTNEED: u32 = 4; +pub const MADV_FREE: u32 = 8; +pub const MADV_REMOVE: u32 = 9; +pub const MADV_DONTFORK: u32 = 10; +pub const MADV_DOFORK: u32 = 11; +pub const MADV_HWPOISON: u32 = 100; +pub const MADV_SOFT_OFFLINE: u32 = 101; +pub const MADV_MERGEABLE: u32 = 12; +pub const MADV_UNMERGEABLE: u32 = 13; +pub const MADV_HUGEPAGE: u32 = 14; +pub const MADV_NOHUGEPAGE: u32 = 15; +pub const MADV_DONTDUMP: u32 = 16; +pub const MADV_DODUMP: u32 = 17; +pub const MADV_WIPEONFORK: u32 = 18; +pub const MADV_KEEPONFORK: u32 = 19; +pub const MADV_COLD: u32 = 20; +pub const MADV_PAGEOUT: u32 = 21; +pub const MADV_POPULATE_READ: u32 = 22; +pub const MADV_POPULATE_WRITE: u32 = 23; +pub const MADV_DONTNEED_LOCKED: u32 = 24; +pub const MADV_COLLAPSE: u32 = 25; +pub const MAP_FILE: u32 = 0; +pub const PKEY_DISABLE_ACCESS: u32 = 1; +pub const PKEY_DISABLE_WRITE: u32 = 2; +pub const PKEY_ACCESS_MASK: u32 = 3; +pub const MAP_GROWSDOWN: u32 = 256; +pub const MAP_DENYWRITE: u32 = 2048; +pub const MAP_EXECUTABLE: u32 = 4096; +pub const MAP_LOCKED: u32 = 8192; +pub const MAP_NORESERVE: u32 = 16384; +pub const MCL_CURRENT: u32 = 1; +pub const MCL_FUTURE: u32 = 2; +pub const MCL_ONFAULT: u32 = 4; +pub const PROT_BTI: u32 = 16; +pub const PROT_MTE: u32 = 32; +pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; +pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; +pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; +pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; +pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; +pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; +pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; +pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; +pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; +pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; +pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; +pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; +pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; +pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; +pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; +pub const MREMAP_MAYMOVE: u32 = 1; +pub const MREMAP_FIXED: u32 = 2; +pub const MREMAP_DONTUNMAP: u32 = 4; +pub const OVERCOMMIT_GUESS: u32 = 0; +pub const OVERCOMMIT_ALWAYS: u32 = 1; +pub const OVERCOMMIT_NEVER: u32 = 2; +pub const MAP_SHARED: u32 = 1; +pub const MAP_PRIVATE: u32 = 2; +pub const MAP_SHARED_VALIDATE: u32 = 3; +pub const MAP_HUGE_SHIFT: u32 = 26; +pub const MAP_HUGE_MASK: u32 = 63; +pub const MAP_HUGE_16KB: u32 = 939524096; +pub const MAP_HUGE_64KB: u32 = 1073741824; +pub const MAP_HUGE_512KB: u32 = 1275068416; +pub const MAP_HUGE_1MB: u32 = 1342177280; +pub const MAP_HUGE_2MB: u32 = 1409286144; +pub const MAP_HUGE_8MB: u32 = 1543503872; +pub const MAP_HUGE_16MB: u32 = 1610612736; +pub const MAP_HUGE_32MB: u32 = 1677721600; +pub const MAP_HUGE_256MB: u32 = 1879048192; +pub const MAP_HUGE_512MB: u32 = 1946157056; +pub const MAP_HUGE_1GB: u32 = 2013265920; +pub const MAP_HUGE_2GB: u32 = 2080374784; +pub const MAP_HUGE_16GB: u32 = 2281701376; +pub const POLLIN: u32 = 1; +pub const POLLPRI: u32 = 2; +pub const POLLOUT: u32 = 4; +pub const POLLERR: u32 = 8; +pub const POLLHUP: u32 = 16; +pub const POLLNVAL: u32 = 32; +pub const POLLRDNORM: u32 = 64; +pub const POLLRDBAND: u32 = 128; +pub const POLLWRNORM: u32 = 256; +pub const POLLWRBAND: u32 = 512; +pub const POLLMSG: u32 = 1024; +pub const POLLREMOVE: u32 = 4096; +pub const POLLRDHUP: u32 = 8192; +pub const GRND_NONBLOCK: u32 = 1; +pub const GRND_RANDOM: u32 = 2; +pub const GRND_INSECURE: u32 = 4; +pub const ITIMER_REAL: u32 = 0; +pub const ITIMER_VIRTUAL: u32 = 1; +pub const ITIMER_PROF: u32 = 2; +pub const CLOCK_REALTIME: u32 = 0; +pub const CLOCK_MONOTONIC: u32 = 1; +pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; +pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; +pub const CLOCK_MONOTONIC_RAW: u32 = 4; +pub const CLOCK_REALTIME_COARSE: u32 = 5; +pub const CLOCK_MONOTONIC_COARSE: u32 = 6; +pub const CLOCK_BOOTTIME: u32 = 7; +pub const CLOCK_REALTIME_ALARM: u32 = 8; +pub const CLOCK_BOOTTIME_ALARM: u32 = 9; +pub const CLOCK_SGI_CYCLE: u32 = 10; +pub const CLOCK_TAI: u32 = 11; +pub const MAX_CLOCKS: u32 = 16; +pub const CLOCKS_MASK: u32 = 1; +pub const CLOCKS_MONO: u32 = 1; +pub const TIMER_ABSTIME: u32 = 1; +pub const RUSAGE_SELF: u32 = 0; +pub const RUSAGE_CHILDREN: i32 = -1; +pub const RUSAGE_BOTH: i32 = -2; +pub const RUSAGE_THREAD: u32 = 1; +pub const RLIM64_INFINITY: i32 = -1; +pub const PRIO_MIN: i32 = -20; +pub const PRIO_MAX: u32 = 20; +pub const PRIO_PROCESS: u32 = 0; +pub const PRIO_PGRP: u32 = 1; +pub const PRIO_USER: u32 = 2; +pub const _STK_LIM: u32 = 8388608; +pub const MLOCK_LIMIT: u32 = 8388608; +pub const RLIMIT_CPU: u32 = 0; +pub const RLIMIT_FSIZE: u32 = 1; +pub const RLIMIT_DATA: u32 = 2; +pub const RLIMIT_STACK: u32 = 3; +pub const RLIMIT_CORE: u32 = 4; +pub const RLIMIT_RSS: u32 = 5; +pub const RLIMIT_NPROC: u32 = 6; +pub const RLIMIT_NOFILE: u32 = 7; +pub const RLIMIT_MEMLOCK: u32 = 8; +pub const RLIMIT_AS: u32 = 9; +pub const RLIMIT_LOCKS: u32 = 10; +pub const RLIMIT_SIGPENDING: u32 = 11; +pub const RLIMIT_MSGQUEUE: u32 = 12; +pub const RLIMIT_NICE: u32 = 13; +pub const RLIMIT_RTPRIO: u32 = 14; +pub const RLIMIT_RTTIME: u32 = 15; +pub const RLIM_NLIMITS: u32 = 16; +pub const RLIM_INFINITY: i32 = -1; +pub const CSIGNAL: u32 = 255; +pub const CLONE_VM: u32 = 256; +pub const CLONE_FS: u32 = 512; +pub const CLONE_FILES: u32 = 1024; +pub const CLONE_SIGHAND: u32 = 2048; +pub const CLONE_PIDFD: u32 = 4096; +pub const CLONE_PTRACE: u32 = 8192; +pub const CLONE_VFORK: u32 = 16384; +pub const CLONE_PARENT: u32 = 32768; +pub const CLONE_THREAD: u32 = 65536; +pub const CLONE_NEWNS: u32 = 131072; +pub const CLONE_SYSVSEM: u32 = 262144; +pub const CLONE_SETTLS: u32 = 524288; +pub const CLONE_PARENT_SETTID: u32 = 1048576; +pub const CLONE_CHILD_CLEARTID: u32 = 2097152; +pub const CLONE_DETACHED: u32 = 4194304; +pub const CLONE_UNTRACED: u32 = 8388608; +pub const CLONE_CHILD_SETTID: u32 = 16777216; +pub const CLONE_NEWCGROUP: u32 = 33554432; +pub const CLONE_NEWUTS: u32 = 67108864; +pub const CLONE_NEWIPC: u32 = 134217728; +pub const CLONE_NEWUSER: u32 = 268435456; +pub const CLONE_NEWPID: u32 = 536870912; +pub const CLONE_NEWNET: u32 = 1073741824; +pub const CLONE_IO: u32 = 2147483648; +pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; +pub const CLONE_INTO_CGROUP: u64 = 8589934592; +pub const CLONE_NEWTIME: u32 = 128; +pub const CLONE_ARGS_SIZE_VER0: u32 = 64; +pub const CLONE_ARGS_SIZE_VER1: u32 = 80; +pub const CLONE_ARGS_SIZE_VER2: u32 = 88; +pub const SCHED_NORMAL: u32 = 0; +pub const SCHED_FIFO: u32 = 1; +pub const SCHED_RR: u32 = 2; +pub const SCHED_BATCH: u32 = 3; +pub const SCHED_IDLE: u32 = 5; +pub const SCHED_DEADLINE: u32 = 6; +pub const SCHED_RESET_ON_FORK: u32 = 1073741824; +pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; +pub const SCHED_FLAG_RECLAIM: u32 = 2; +pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; +pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; +pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; +pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; +pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; +pub const SCHED_FLAG_KEEP_ALL: u32 = 24; +pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; +pub const SCHED_FLAG_ALL: u32 = 127; +pub const SA_RESTORER: u32 = 67108864; +pub const MINSIGSTKSZ: u32 = 5120; +pub const SIGSTKSZ: u32 = 16384; +pub const _NSIG: u32 = 64; +pub const _NSIG_BPW: u32 = 64; +pub const _NSIG_WORDS: u32 = 1; +pub const SIGHUP: u32 = 1; +pub const SIGINT: u32 = 2; +pub const SIGQUIT: u32 = 3; +pub const SIGILL: u32 = 4; +pub const SIGTRAP: u32 = 5; +pub const SIGABRT: u32 = 6; +pub const SIGIOT: u32 = 6; +pub const SIGBUS: u32 = 7; +pub const SIGFPE: u32 = 8; +pub const SIGKILL: u32 = 9; +pub const SIGUSR1: u32 = 10; +pub const SIGSEGV: u32 = 11; +pub const SIGUSR2: u32 = 12; +pub const SIGPIPE: u32 = 13; +pub const SIGALRM: u32 = 14; +pub const SIGTERM: u32 = 15; +pub const SIGSTKFLT: u32 = 16; +pub const SIGCHLD: u32 = 17; +pub const SIGCONT: u32 = 18; +pub const SIGSTOP: u32 = 19; +pub const SIGTSTP: u32 = 20; +pub const SIGTTIN: u32 = 21; +pub const SIGTTOU: u32 = 22; +pub const SIGURG: u32 = 23; +pub const SIGXCPU: u32 = 24; +pub const SIGXFSZ: u32 = 25; +pub const SIGVTALRM: u32 = 26; +pub const SIGPROF: u32 = 27; +pub const SIGWINCH: u32 = 28; +pub const SIGIO: u32 = 29; +pub const SIGPOLL: u32 = 29; +pub const SIGPWR: u32 = 30; +pub const SIGSYS: u32 = 31; +pub const SIGUNUSED: u32 = 31; +pub const SIGRTMIN: u32 = 32; +pub const SIGRTMAX: u32 = 64; +pub const SA_NOCLDSTOP: u32 = 1; +pub const SA_NOCLDWAIT: u32 = 2; +pub const SA_SIGINFO: u32 = 4; +pub const SA_UNSUPPORTED: u32 = 1024; +pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SA_ONSTACK: u32 = 134217728; +pub const SA_RESTART: u32 = 268435456; +pub const SA_NODEFER: u32 = 1073741824; +pub const SA_RESETHAND: u32 = 2147483648; +pub const SA_NOMASK: u32 = 1073741824; +pub const SA_ONESHOT: u32 = 2147483648; +pub const SIG_BLOCK: u32 = 0; +pub const SIG_UNBLOCK: u32 = 1; +pub const SIG_SETMASK: u32 = 2; +pub const SI_MAX_SIZE: u32 = 128; +pub const SI_USER: u32 = 0; +pub const SI_KERNEL: u32 = 128; +pub const SI_QUEUE: i32 = -1; +pub const SI_TIMER: i32 = -2; +pub const SI_MESGQ: i32 = -3; +pub const SI_ASYNCIO: i32 = -4; +pub const SI_SIGIO: i32 = -5; +pub const SI_TKILL: i32 = -6; +pub const SI_DETHREAD: i32 = -7; +pub const SI_ASYNCNL: i32 = -60; +pub const ILL_ILLOPC: u32 = 1; +pub const ILL_ILLOPN: u32 = 2; +pub const ILL_ILLADR: u32 = 3; +pub const ILL_ILLTRP: u32 = 4; +pub const ILL_PRVOPC: u32 = 5; +pub const ILL_PRVREG: u32 = 6; +pub const ILL_COPROC: u32 = 7; +pub const ILL_BADSTK: u32 = 8; +pub const ILL_BADIADDR: u32 = 9; +pub const __ILL_BREAK: u32 = 10; +pub const __ILL_BNDMOD: u32 = 11; +pub const NSIGILL: u32 = 11; +pub const FPE_INTDIV: u32 = 1; +pub const FPE_INTOVF: u32 = 2; +pub const FPE_FLTDIV: u32 = 3; +pub const FPE_FLTOVF: u32 = 4; +pub const FPE_FLTUND: u32 = 5; +pub const FPE_FLTRES: u32 = 6; +pub const FPE_FLTINV: u32 = 7; +pub const FPE_FLTSUB: u32 = 8; +pub const __FPE_DECOVF: u32 = 9; +pub const __FPE_DECDIV: u32 = 10; +pub const __FPE_DECERR: u32 = 11; +pub const __FPE_INVASC: u32 = 12; +pub const __FPE_INVDEC: u32 = 13; +pub const FPE_FLTUNK: u32 = 14; +pub const FPE_CONDTRAP: u32 = 15; +pub const NSIGFPE: u32 = 15; +pub const SEGV_MAPERR: u32 = 1; +pub const SEGV_ACCERR: u32 = 2; +pub const SEGV_BNDERR: u32 = 3; +pub const SEGV_PKUERR: u32 = 4; +pub const SEGV_ACCADI: u32 = 5; +pub const SEGV_ADIDERR: u32 = 6; +pub const SEGV_ADIPERR: u32 = 7; +pub const SEGV_MTEAERR: u32 = 8; +pub const SEGV_MTESERR: u32 = 9; +pub const NSIGSEGV: u32 = 9; +pub const BUS_ADRALN: u32 = 1; +pub const BUS_ADRERR: u32 = 2; +pub const BUS_OBJERR: u32 = 3; +pub const BUS_MCEERR_AR: u32 = 4; +pub const BUS_MCEERR_AO: u32 = 5; +pub const NSIGBUS: u32 = 5; +pub const TRAP_BRKPT: u32 = 1; +pub const TRAP_TRACE: u32 = 2; +pub const TRAP_BRANCH: u32 = 3; +pub const TRAP_HWBKPT: u32 = 4; +pub const TRAP_UNK: u32 = 5; +pub const TRAP_PERF: u32 = 6; +pub const NSIGTRAP: u32 = 6; +pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; +pub const CLD_EXITED: u32 = 1; +pub const CLD_KILLED: u32 = 2; +pub const CLD_DUMPED: u32 = 3; +pub const CLD_TRAPPED: u32 = 4; +pub const CLD_STOPPED: u32 = 5; +pub const CLD_CONTINUED: u32 = 6; +pub const NSIGCHLD: u32 = 6; +pub const POLL_IN: u32 = 1; +pub const POLL_OUT: u32 = 2; +pub const POLL_MSG: u32 = 3; +pub const POLL_ERR: u32 = 4; +pub const POLL_PRI: u32 = 5; +pub const POLL_HUP: u32 = 6; +pub const NSIGPOLL: u32 = 6; +pub const SYS_SECCOMP: u32 = 1; +pub const SYS_USER_DISPATCH: u32 = 2; +pub const NSIGSYS: u32 = 2; +pub const EMT_TAGOVF: u32 = 1; +pub const NSIGEMT: u32 = 1; +pub const SIGEV_SIGNAL: u32 = 0; +pub const SIGEV_NONE: u32 = 1; +pub const SIGEV_THREAD: u32 = 2; +pub const SIGEV_THREAD_ID: u32 = 4; +pub const SIGEV_MAX_SIZE: u32 = 64; +pub const SS_ONSTACK: u32 = 1; +pub const SS_DISABLE: u32 = 2; +pub const SS_AUTODISARM: u32 = 2147483648; +pub const SS_FLAG_BITS: u32 = 2147483648; +pub const S_IFMT: u32 = 61440; +pub const S_IFSOCK: u32 = 49152; +pub const S_IFLNK: u32 = 40960; +pub const S_IFREG: u32 = 32768; +pub const S_IFBLK: u32 = 24576; +pub const S_IFDIR: u32 = 16384; +pub const S_IFCHR: u32 = 8192; +pub const S_IFIFO: u32 = 4096; +pub const S_ISUID: u32 = 2048; +pub const S_ISGID: u32 = 1024; +pub const S_ISVTX: u32 = 512; +pub const S_IRWXU: u32 = 448; +pub const S_IRUSR: u32 = 256; +pub const S_IWUSR: u32 = 128; +pub const S_IXUSR: u32 = 64; +pub const S_IRWXG: u32 = 56; +pub const S_IRGRP: u32 = 32; +pub const S_IWGRP: u32 = 16; +pub const S_IXGRP: u32 = 8; +pub const S_IRWXO: u32 = 7; +pub const S_IROTH: u32 = 4; +pub const S_IWOTH: u32 = 2; +pub const S_IXOTH: u32 = 1; +pub const STATX_TYPE: u32 = 1; +pub const STATX_MODE: u32 = 2; +pub const STATX_NLINK: u32 = 4; +pub const STATX_UID: u32 = 8; +pub const STATX_GID: u32 = 16; +pub const STATX_ATIME: u32 = 32; +pub const STATX_MTIME: u32 = 64; +pub const STATX_CTIME: u32 = 128; +pub const STATX_INO: u32 = 256; +pub const STATX_SIZE: u32 = 512; +pub const STATX_BLOCKS: u32 = 1024; +pub const STATX_BASIC_STATS: u32 = 2047; +pub const STATX_BTIME: u32 = 2048; +pub const STATX_MNT_ID: u32 = 4096; +pub const STATX_DIOALIGN: u32 = 8192; +pub const STATX__RESERVED: u32 = 2147483648; +pub const STATX_ALL: u32 = 4095; +pub const STATX_ATTR_COMPRESSED: u32 = 4; +pub const STATX_ATTR_IMMUTABLE: u32 = 16; +pub const STATX_ATTR_APPEND: u32 = 32; +pub const STATX_ATTR_NODUMP: u32 = 64; +pub const STATX_ATTR_ENCRYPTED: u32 = 2048; +pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; +pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; +pub const STATX_ATTR_VERITY: u32 = 1048576; +pub const STATX_ATTR_DAX: u32 = 2097152; +pub const IGNBRK: u32 = 1; +pub const BRKINT: u32 = 2; +pub const IGNPAR: u32 = 4; +pub const PARMRK: u32 = 8; +pub const INPCK: u32 = 16; +pub const ISTRIP: u32 = 32; +pub const INLCR: u32 = 64; +pub const IGNCR: u32 = 128; +pub const ICRNL: u32 = 256; +pub const IXANY: u32 = 2048; +pub const OPOST: u32 = 1; +pub const OCRNL: u32 = 8; +pub const ONOCR: u32 = 16; +pub const ONLRET: u32 = 32; +pub const OFILL: u32 = 64; +pub const OFDEL: u32 = 128; +pub const B0: u32 = 0; +pub const B50: u32 = 1; +pub const B75: u32 = 2; +pub const B110: u32 = 3; +pub const B134: u32 = 4; +pub const B150: u32 = 5; +pub const B200: u32 = 6; +pub const B300: u32 = 7; +pub const B600: u32 = 8; +pub const B1200: u32 = 9; +pub const B1800: u32 = 10; +pub const B2400: u32 = 11; +pub const B4800: u32 = 12; +pub const B9600: u32 = 13; +pub const B19200: u32 = 14; +pub const B38400: u32 = 15; +pub const EXTA: u32 = 14; +pub const EXTB: u32 = 15; +pub const ADDRB: u32 = 536870912; +pub const CMSPAR: u32 = 1073741824; +pub const CRTSCTS: u32 = 2147483648; +pub const IBSHIFT: u32 = 16; +pub const TCOOFF: u32 = 0; +pub const TCOON: u32 = 1; +pub const TCIOFF: u32 = 2; +pub const TCION: u32 = 3; +pub const TCIFLUSH: u32 = 0; +pub const TCOFLUSH: u32 = 1; +pub const TCIOFLUSH: u32 = 2; +pub const NCCS: u32 = 19; +pub const VINTR: u32 = 0; +pub const VQUIT: u32 = 1; +pub const VERASE: u32 = 2; +pub const VKILL: u32 = 3; +pub const VEOF: u32 = 4; +pub const VTIME: u32 = 5; +pub const VMIN: u32 = 6; +pub const VSWTC: u32 = 7; +pub const VSTART: u32 = 8; +pub const VSTOP: u32 = 9; +pub const VSUSP: u32 = 10; +pub const VEOL: u32 = 11; +pub const VREPRINT: u32 = 12; +pub const VDISCARD: u32 = 13; +pub const VWERASE: u32 = 14; +pub const VLNEXT: u32 = 15; +pub const VEOL2: u32 = 16; +pub const IUCLC: u32 = 512; +pub const IXON: u32 = 1024; +pub const IXOFF: u32 = 4096; +pub const IMAXBEL: u32 = 8192; +pub const IUTF8: u32 = 16384; +pub const OLCUC: u32 = 2; +pub const ONLCR: u32 = 4; +pub const NLDLY: u32 = 256; +pub const NL0: u32 = 0; +pub const NL1: u32 = 256; +pub const CRDLY: u32 = 1536; +pub const CR0: u32 = 0; +pub const CR1: u32 = 512; +pub const CR2: u32 = 1024; +pub const CR3: u32 = 1536; +pub const TABDLY: u32 = 6144; +pub const TAB0: u32 = 0; +pub const TAB1: u32 = 2048; +pub const TAB2: u32 = 4096; +pub const TAB3: u32 = 6144; +pub const XTABS: u32 = 6144; +pub const BSDLY: u32 = 8192; +pub const BS0: u32 = 0; +pub const BS1: u32 = 8192; +pub const VTDLY: u32 = 16384; +pub const VT0: u32 = 0; +pub const VT1: u32 = 16384; +pub const FFDLY: u32 = 32768; +pub const FF0: u32 = 0; +pub const FF1: u32 = 32768; +pub const CBAUD: u32 = 4111; +pub const CSIZE: u32 = 48; +pub const CS5: u32 = 0; +pub const CS6: u32 = 16; +pub const CS7: u32 = 32; +pub const CS8: u32 = 48; +pub const CSTOPB: u32 = 64; +pub const CREAD: u32 = 128; +pub const PARENB: u32 = 256; +pub const PARODD: u32 = 512; +pub const HUPCL: u32 = 1024; +pub const CLOCAL: u32 = 2048; +pub const CBAUDEX: u32 = 4096; +pub const BOTHER: u32 = 4096; +pub const B57600: u32 = 4097; +pub const B115200: u32 = 4098; +pub const B230400: u32 = 4099; +pub const B460800: u32 = 4100; +pub const B500000: u32 = 4101; +pub const B576000: u32 = 4102; +pub const B921600: u32 = 4103; +pub const B1000000: u32 = 4104; +pub const B1152000: u32 = 4105; +pub const B1500000: u32 = 4106; +pub const B2000000: u32 = 4107; +pub const B2500000: u32 = 4108; +pub const B3000000: u32 = 4109; +pub const B3500000: u32 = 4110; +pub const B4000000: u32 = 4111; +pub const CIBAUD: u32 = 269418496; +pub const ISIG: u32 = 1; +pub const ICANON: u32 = 2; +pub const XCASE: u32 = 4; +pub const ECHO: u32 = 8; +pub const ECHOE: u32 = 16; +pub const ECHOK: u32 = 32; +pub const ECHONL: u32 = 64; +pub const NOFLSH: u32 = 128; +pub const TOSTOP: u32 = 256; +pub const ECHOCTL: u32 = 512; +pub const ECHOPRT: u32 = 1024; +pub const ECHOKE: u32 = 2048; +pub const FLUSHO: u32 = 4096; +pub const PENDIN: u32 = 16384; +pub const IEXTEN: u32 = 32768; +pub const EXTPROC: u32 = 65536; +pub const TCSANOW: u32 = 0; +pub const TCSADRAIN: u32 = 1; +pub const TCSAFLUSH: u32 = 2; +pub const TIOCPKT_DATA: u32 = 0; +pub const TIOCPKT_FLUSHREAD: u32 = 1; +pub const TIOCPKT_FLUSHWRITE: u32 = 2; +pub const TIOCPKT_STOP: u32 = 4; +pub const TIOCPKT_START: u32 = 8; +pub const TIOCPKT_NOSTOP: u32 = 16; +pub const TIOCPKT_DOSTOP: u32 = 32; +pub const TIOCPKT_IOCTL: u32 = 64; +pub const TIOCSER_TEMT: u32 = 1; +pub const NCC: u32 = 8; +pub const TIOCM_LE: u32 = 1; +pub const TIOCM_DTR: u32 = 2; +pub const TIOCM_RTS: u32 = 4; +pub const TIOCM_ST: u32 = 8; +pub const TIOCM_SR: u32 = 16; +pub const TIOCM_CTS: u32 = 32; +pub const TIOCM_CAR: u32 = 64; +pub const TIOCM_RNG: u32 = 128; +pub const TIOCM_DSR: u32 = 256; +pub const TIOCM_CD: u32 = 64; +pub const TIOCM_RI: u32 = 128; +pub const TIOCM_OUT1: u32 = 8192; +pub const TIOCM_OUT2: u32 = 16384; +pub const TIOCM_LOOP: u32 = 32768; +pub const UIO_FASTIOV: u32 = 8; +pub const UIO_MAXIOV: u32 = 1024; +pub const __NR_io_setup: u32 = 0; +pub const __NR_io_destroy: u32 = 1; +pub const __NR_io_submit: u32 = 2; +pub const __NR_io_cancel: u32 = 3; +pub const __NR_io_getevents: u32 = 4; +pub const __NR_setxattr: u32 = 5; +pub const __NR_lsetxattr: u32 = 6; +pub const __NR_fsetxattr: u32 = 7; +pub const __NR_getxattr: u32 = 8; +pub const __NR_lgetxattr: u32 = 9; +pub const __NR_fgetxattr: u32 = 10; +pub const __NR_listxattr: u32 = 11; +pub const __NR_llistxattr: u32 = 12; +pub const __NR_flistxattr: u32 = 13; +pub const __NR_removexattr: u32 = 14; +pub const __NR_lremovexattr: u32 = 15; +pub const __NR_fremovexattr: u32 = 16; +pub const __NR_getcwd: u32 = 17; +pub const __NR_lookup_dcookie: u32 = 18; +pub const __NR_eventfd2: u32 = 19; +pub const __NR_epoll_create1: u32 = 20; +pub const __NR_epoll_ctl: u32 = 21; +pub const __NR_epoll_pwait: u32 = 22; +pub const __NR_dup: u32 = 23; +pub const __NR_dup3: u32 = 24; +pub const __NR3264_fcntl: u32 = 25; +pub const __NR_inotify_init1: u32 = 26; +pub const __NR_inotify_add_watch: u32 = 27; +pub const __NR_inotify_rm_watch: u32 = 28; +pub const __NR_ioctl: u32 = 29; +pub const __NR_ioprio_set: u32 = 30; +pub const __NR_ioprio_get: u32 = 31; +pub const __NR_flock: u32 = 32; +pub const __NR_mknodat: u32 = 33; +pub const __NR_mkdirat: u32 = 34; +pub const __NR_unlinkat: u32 = 35; +pub const __NR_symlinkat: u32 = 36; +pub const __NR_linkat: u32 = 37; +pub const __NR_renameat: u32 = 38; +pub const __NR_umount2: u32 = 39; +pub const __NR_mount: u32 = 40; +pub const __NR_pivot_root: u32 = 41; +pub const __NR_nfsservctl: u32 = 42; +pub const __NR3264_statfs: u32 = 43; +pub const __NR3264_fstatfs: u32 = 44; +pub const __NR3264_truncate: u32 = 45; +pub const __NR3264_ftruncate: u32 = 46; +pub const __NR_fallocate: u32 = 47; +pub const __NR_faccessat: u32 = 48; +pub const __NR_chdir: u32 = 49; +pub const __NR_fchdir: u32 = 50; +pub const __NR_chroot: u32 = 51; +pub const __NR_fchmod: u32 = 52; +pub const __NR_fchmodat: u32 = 53; +pub const __NR_fchownat: u32 = 54; +pub const __NR_fchown: u32 = 55; +pub const __NR_openat: u32 = 56; +pub const __NR_close: u32 = 57; +pub const __NR_vhangup: u32 = 58; +pub const __NR_pipe2: u32 = 59; +pub const __NR_quotactl: u32 = 60; +pub const __NR_getdents64: u32 = 61; +pub const __NR3264_lseek: u32 = 62; +pub const __NR_read: u32 = 63; +pub const __NR_write: u32 = 64; +pub const __NR_readv: u32 = 65; +pub const __NR_writev: u32 = 66; +pub const __NR_pread64: u32 = 67; +pub const __NR_pwrite64: u32 = 68; +pub const __NR_preadv: u32 = 69; +pub const __NR_pwritev: u32 = 70; +pub const __NR3264_sendfile: u32 = 71; +pub const __NR_pselect6: u32 = 72; +pub const __NR_ppoll: u32 = 73; +pub const __NR_signalfd4: u32 = 74; +pub const __NR_vmsplice: u32 = 75; +pub const __NR_splice: u32 = 76; +pub const __NR_tee: u32 = 77; +pub const __NR_readlinkat: u32 = 78; +pub const __NR3264_fstatat: u32 = 79; +pub const __NR3264_fstat: u32 = 80; +pub const __NR_sync: u32 = 81; +pub const __NR_fsync: u32 = 82; +pub const __NR_fdatasync: u32 = 83; +pub const __NR_sync_file_range: u32 = 84; +pub const __NR_timerfd_create: u32 = 85; +pub const __NR_timerfd_settime: u32 = 86; +pub const __NR_timerfd_gettime: u32 = 87; +pub const __NR_utimensat: u32 = 88; +pub const __NR_acct: u32 = 89; +pub const __NR_capget: u32 = 90; +pub const __NR_capset: u32 = 91; +pub const __NR_personality: u32 = 92; +pub const __NR_exit: u32 = 93; +pub const __NR_exit_group: u32 = 94; +pub const __NR_waitid: u32 = 95; +pub const __NR_set_tid_address: u32 = 96; +pub const __NR_unshare: u32 = 97; +pub const __NR_futex: u32 = 98; +pub const __NR_set_robust_list: u32 = 99; +pub const __NR_get_robust_list: u32 = 100; +pub const __NR_nanosleep: u32 = 101; +pub const __NR_getitimer: u32 = 102; +pub const __NR_setitimer: u32 = 103; +pub const __NR_kexec_load: u32 = 104; +pub const __NR_init_module: u32 = 105; +pub const __NR_delete_module: u32 = 106; +pub const __NR_timer_create: u32 = 107; +pub const __NR_timer_gettime: u32 = 108; +pub const __NR_timer_getoverrun: u32 = 109; +pub const __NR_timer_settime: u32 = 110; +pub const __NR_timer_delete: u32 = 111; +pub const __NR_clock_settime: u32 = 112; +pub const __NR_clock_gettime: u32 = 113; +pub const __NR_clock_getres: u32 = 114; +pub const __NR_clock_nanosleep: u32 = 115; +pub const __NR_syslog: u32 = 116; +pub const __NR_ptrace: u32 = 117; +pub const __NR_sched_setparam: u32 = 118; +pub const __NR_sched_setscheduler: u32 = 119; +pub const __NR_sched_getscheduler: u32 = 120; +pub const __NR_sched_getparam: u32 = 121; +pub const __NR_sched_setaffinity: u32 = 122; +pub const __NR_sched_getaffinity: u32 = 123; +pub const __NR_sched_yield: u32 = 124; +pub const __NR_sched_get_priority_max: u32 = 125; +pub const __NR_sched_get_priority_min: u32 = 126; +pub const __NR_sched_rr_get_interval: u32 = 127; +pub const __NR_restart_syscall: u32 = 128; +pub const __NR_kill: u32 = 129; +pub const __NR_tkill: u32 = 130; +pub const __NR_tgkill: u32 = 131; +pub const __NR_sigaltstack: u32 = 132; +pub const __NR_rt_sigsuspend: u32 = 133; +pub const __NR_rt_sigaction: u32 = 134; +pub const __NR_rt_sigprocmask: u32 = 135; +pub const __NR_rt_sigpending: u32 = 136; +pub const __NR_rt_sigtimedwait: u32 = 137; +pub const __NR_rt_sigqueueinfo: u32 = 138; +pub const __NR_rt_sigreturn: u32 = 139; +pub const __NR_setpriority: u32 = 140; +pub const __NR_getpriority: u32 = 141; +pub const __NR_reboot: u32 = 142; +pub const __NR_setregid: u32 = 143; +pub const __NR_setgid: u32 = 144; +pub const __NR_setreuid: u32 = 145; +pub const __NR_setuid: u32 = 146; +pub const __NR_setresuid: u32 = 147; +pub const __NR_getresuid: u32 = 148; +pub const __NR_setresgid: u32 = 149; +pub const __NR_getresgid: u32 = 150; +pub const __NR_setfsuid: u32 = 151; +pub const __NR_setfsgid: u32 = 152; +pub const __NR_times: u32 = 153; +pub const __NR_setpgid: u32 = 154; +pub const __NR_getpgid: u32 = 155; +pub const __NR_getsid: u32 = 156; +pub const __NR_setsid: u32 = 157; +pub const __NR_getgroups: u32 = 158; +pub const __NR_setgroups: u32 = 159; +pub const __NR_uname: u32 = 160; +pub const __NR_sethostname: u32 = 161; +pub const __NR_setdomainname: u32 = 162; +pub const __NR_getrlimit: u32 = 163; +pub const __NR_setrlimit: u32 = 164; +pub const __NR_getrusage: u32 = 165; +pub const __NR_umask: u32 = 166; +pub const __NR_prctl: u32 = 167; +pub const __NR_getcpu: u32 = 168; +pub const __NR_gettimeofday: u32 = 169; +pub const __NR_settimeofday: u32 = 170; +pub const __NR_adjtimex: u32 = 171; +pub const __NR_getpid: u32 = 172; +pub const __NR_getppid: u32 = 173; +pub const __NR_getuid: u32 = 174; +pub const __NR_geteuid: u32 = 175; +pub const __NR_getgid: u32 = 176; +pub const __NR_getegid: u32 = 177; +pub const __NR_gettid: u32 = 178; +pub const __NR_sysinfo: u32 = 179; +pub const __NR_mq_open: u32 = 180; +pub const __NR_mq_unlink: u32 = 181; +pub const __NR_mq_timedsend: u32 = 182; +pub const __NR_mq_timedreceive: u32 = 183; +pub const __NR_mq_notify: u32 = 184; +pub const __NR_mq_getsetattr: u32 = 185; +pub const __NR_msgget: u32 = 186; +pub const __NR_msgctl: u32 = 187; +pub const __NR_msgrcv: u32 = 188; +pub const __NR_msgsnd: u32 = 189; +pub const __NR_semget: u32 = 190; +pub const __NR_semctl: u32 = 191; +pub const __NR_semtimedop: u32 = 192; +pub const __NR_semop: u32 = 193; +pub const __NR_shmget: u32 = 194; +pub const __NR_shmctl: u32 = 195; +pub const __NR_shmat: u32 = 196; +pub const __NR_shmdt: u32 = 197; +pub const __NR_socket: u32 = 198; +pub const __NR_socketpair: u32 = 199; +pub const __NR_bind: u32 = 200; +pub const __NR_listen: u32 = 201; +pub const __NR_accept: u32 = 202; +pub const __NR_connect: u32 = 203; +pub const __NR_getsockname: u32 = 204; +pub const __NR_getpeername: u32 = 205; +pub const __NR_sendto: u32 = 206; +pub const __NR_recvfrom: u32 = 207; +pub const __NR_setsockopt: u32 = 208; +pub const __NR_getsockopt: u32 = 209; +pub const __NR_shutdown: u32 = 210; +pub const __NR_sendmsg: u32 = 211; +pub const __NR_recvmsg: u32 = 212; +pub const __NR_readahead: u32 = 213; +pub const __NR_brk: u32 = 214; +pub const __NR_munmap: u32 = 215; +pub const __NR_mremap: u32 = 216; +pub const __NR_add_key: u32 = 217; +pub const __NR_request_key: u32 = 218; +pub const __NR_keyctl: u32 = 219; +pub const __NR_clone: u32 = 220; +pub const __NR_execve: u32 = 221; +pub const __NR3264_mmap: u32 = 222; +pub const __NR3264_fadvise64: u32 = 223; +pub const __NR_swapon: u32 = 224; +pub const __NR_swapoff: u32 = 225; +pub const __NR_mprotect: u32 = 226; +pub const __NR_msync: u32 = 227; +pub const __NR_mlock: u32 = 228; +pub const __NR_munlock: u32 = 229; +pub const __NR_mlockall: u32 = 230; +pub const __NR_munlockall: u32 = 231; +pub const __NR_mincore: u32 = 232; +pub const __NR_madvise: u32 = 233; +pub const __NR_remap_file_pages: u32 = 234; +pub const __NR_mbind: u32 = 235; +pub const __NR_get_mempolicy: u32 = 236; +pub const __NR_set_mempolicy: u32 = 237; +pub const __NR_migrate_pages: u32 = 238; +pub const __NR_move_pages: u32 = 239; +pub const __NR_rt_tgsigqueueinfo: u32 = 240; +pub const __NR_perf_event_open: u32 = 241; +pub const __NR_accept4: u32 = 242; +pub const __NR_recvmmsg: u32 = 243; +pub const __NR_arch_specific_syscall: u32 = 244; +pub const __NR_wait4: u32 = 260; +pub const __NR_prlimit64: u32 = 261; +pub const __NR_fanotify_init: u32 = 262; +pub const __NR_fanotify_mark: u32 = 263; +pub const __NR_name_to_handle_at: u32 = 264; +pub const __NR_open_by_handle_at: u32 = 265; +pub const __NR_clock_adjtime: u32 = 266; +pub const __NR_syncfs: u32 = 267; +pub const __NR_setns: u32 = 268; +pub const __NR_sendmmsg: u32 = 269; +pub const __NR_process_vm_readv: u32 = 270; +pub const __NR_process_vm_writev: u32 = 271; +pub const __NR_kcmp: u32 = 272; +pub const __NR_finit_module: u32 = 273; +pub const __NR_sched_setattr: u32 = 274; +pub const __NR_sched_getattr: u32 = 275; +pub const __NR_renameat2: u32 = 276; +pub const __NR_seccomp: u32 = 277; +pub const __NR_getrandom: u32 = 278; +pub const __NR_memfd_create: u32 = 279; +pub const __NR_bpf: u32 = 280; +pub const __NR_execveat: u32 = 281; +pub const __NR_userfaultfd: u32 = 282; +pub const __NR_membarrier: u32 = 283; +pub const __NR_mlock2: u32 = 284; +pub const __NR_copy_file_range: u32 = 285; +pub const __NR_preadv2: u32 = 286; +pub const __NR_pwritev2: u32 = 287; +pub const __NR_pkey_mprotect: u32 = 288; +pub const __NR_pkey_alloc: u32 = 289; +pub const __NR_pkey_free: u32 = 290; +pub const __NR_statx: u32 = 291; +pub const __NR_io_pgetevents: u32 = 292; +pub const __NR_rseq: u32 = 293; +pub const __NR_kexec_file_load: u32 = 294; +pub const __NR_pidfd_send_signal: u32 = 424; +pub const __NR_io_uring_setup: u32 = 425; +pub const __NR_io_uring_enter: u32 = 426; +pub const __NR_io_uring_register: u32 = 427; +pub const __NR_open_tree: u32 = 428; +pub const __NR_move_mount: u32 = 429; +pub const __NR_fsopen: u32 = 430; +pub const __NR_fsconfig: u32 = 431; +pub const __NR_fsmount: u32 = 432; +pub const __NR_fspick: u32 = 433; +pub const __NR_pidfd_open: u32 = 434; +pub const __NR_clone3: u32 = 435; +pub const __NR_close_range: u32 = 436; +pub const __NR_openat2: u32 = 437; +pub const __NR_pidfd_getfd: u32 = 438; +pub const __NR_faccessat2: u32 = 439; +pub const __NR_process_madvise: u32 = 440; +pub const __NR_epoll_pwait2: u32 = 441; +pub const __NR_mount_setattr: u32 = 442; +pub const __NR_quotactl_fd: u32 = 443; +pub const __NR_landlock_create_ruleset: u32 = 444; +pub const __NR_landlock_add_rule: u32 = 445; +pub const __NR_landlock_restrict_self: u32 = 446; +pub const __NR_memfd_secret: u32 = 447; +pub const __NR_process_mrelease: u32 = 448; +pub const __NR_futex_waitv: u32 = 449; +pub const __NR_set_mempolicy_home_node: u32 = 450; +pub const __NR_syscalls: u32 = 451; +pub const __NR_fcntl: u32 = 25; +pub const __NR_statfs: u32 = 43; +pub const __NR_fstatfs: u32 = 44; +pub const __NR_truncate: u32 = 45; +pub const __NR_ftruncate: u32 = 46; +pub const __NR_lseek: u32 = 62; +pub const __NR_sendfile: u32 = 71; +pub const __NR_newfstatat: u32 = 79; +pub const __NR_fstat: u32 = 80; +pub const __NR_mmap: u32 = 222; +pub const __NR_fadvise64: u32 = 223; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const P_ALL: u32 = 0; +pub const P_PID: u32 = 1; +pub const P_PGID: u32 = 2; +pub const P_PIDFD: u32 = 3; +pub const XATTR_CREATE: u32 = 1; +pub const XATTR_REPLACE: u32 = 2; +pub const XATTR_OS2_PREFIX: &[u8; 5] = b"os2.\0"; +pub const XATTR_MAC_OSX_PREFIX: &[u8; 5] = b"osx.\0"; +pub const XATTR_BTRFS_PREFIX: &[u8; 7] = b"btrfs.\0"; +pub const XATTR_HURD_PREFIX: &[u8; 5] = b"gnu.\0"; +pub const XATTR_SECURITY_PREFIX: &[u8; 10] = b"security.\0"; +pub const XATTR_SYSTEM_PREFIX: &[u8; 8] = b"system.\0"; +pub const XATTR_TRUSTED_PREFIX: &[u8; 9] = b"trusted.\0"; +pub const XATTR_USER_PREFIX: &[u8; 6] = b"user.\0"; +pub const XATTR_EVM_SUFFIX: &[u8; 4] = b"evm\0"; +pub const XATTR_NAME_EVM: &[u8; 13] = b"security.evm\0"; +pub const XATTR_IMA_SUFFIX: &[u8; 4] = b"ima\0"; +pub const XATTR_NAME_IMA: &[u8; 13] = b"security.ima\0"; +pub const XATTR_SELINUX_SUFFIX: &[u8; 8] = b"selinux\0"; +pub const XATTR_NAME_SELINUX: &[u8; 17] = b"security.selinux\0"; +pub const XATTR_SMACK_SUFFIX: &[u8; 8] = b"SMACK64\0"; +pub const XATTR_SMACK_IPIN: &[u8; 12] = b"SMACK64IPIN\0"; +pub const XATTR_SMACK_IPOUT: &[u8; 13] = b"SMACK64IPOUT\0"; +pub const XATTR_SMACK_EXEC: &[u8; 12] = b"SMACK64EXEC\0"; +pub const XATTR_SMACK_TRANSMUTE: &[u8; 17] = b"SMACK64TRANSMUTE\0"; +pub const XATTR_SMACK_MMAP: &[u8; 12] = b"SMACK64MMAP\0"; +pub const XATTR_NAME_SMACK: &[u8; 17] = b"security.SMACK64\0"; +pub const XATTR_NAME_SMACKIPIN: &[u8; 21] = b"security.SMACK64IPIN\0"; +pub const XATTR_NAME_SMACKIPOUT: &[u8; 22] = b"security.SMACK64IPOUT\0"; +pub const XATTR_NAME_SMACKEXEC: &[u8; 21] = b"security.SMACK64EXEC\0"; +pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26] = b"security.SMACK64TRANSMUTE\0"; +pub const XATTR_NAME_SMACKMMAP: &[u8; 21] = b"security.SMACK64MMAP\0"; +pub const XATTR_APPARMOR_SUFFIX: &[u8; 9] = b"apparmor\0"; +pub const XATTR_NAME_APPARMOR: &[u8; 18] = b"security.apparmor\0"; +pub const XATTR_CAPS_SUFFIX: &[u8; 11] = b"capability\0"; +pub const XATTR_NAME_CAPS: &[u8; 20] = b"security.capability\0"; +pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17] = b"posix_acl_access\0"; +pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24] = b"system.posix_acl_access\0"; +pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18] = b"posix_acl_default\0"; +pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25] = b"system.posix_acl_default\0"; +pub const MFD_CLOEXEC: u32 = 1; +pub const MFD_ALLOW_SEALING: u32 = 2; +pub const MFD_HUGETLB: u32 = 4; +pub const MFD_NOEXEC_SEAL: u32 = 8; +pub const MFD_EXEC: u32 = 16; +pub const MFD_HUGE_SHIFT: u32 = 26; +pub const MFD_HUGE_MASK: u32 = 63; +pub const MFD_HUGE_64KB: u32 = 1073741824; +pub const MFD_HUGE_512KB: u32 = 1275068416; +pub const MFD_HUGE_1MB: u32 = 1342177280; +pub const MFD_HUGE_2MB: u32 = 1409286144; +pub const MFD_HUGE_8MB: u32 = 1543503872; +pub const MFD_HUGE_16MB: u32 = 1610612736; +pub const MFD_HUGE_32MB: u32 = 1677721600; +pub const MFD_HUGE_256MB: u32 = 1879048192; +pub const MFD_HUGE_512MB: u32 = 1946157056; +pub const MFD_HUGE_1GB: u32 = 2013265920; +pub const MFD_HUGE_2GB: u32 = 2080374784; +pub const MFD_HUGE_16GB: u32 = 2281701376; +pub const TFD_TIMER_ABSTIME: u32 = 1; +pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; +pub const TFD_CLOEXEC: u32 = 524288; +pub const TFD_NONBLOCK: u32 = 2048; +pub const USERFAULTFD_IOC: u32 = 170; +pub const _UFFDIO_REGISTER: u32 = 0; +pub const _UFFDIO_UNREGISTER: u32 = 1; +pub const _UFFDIO_WAKE: u32 = 2; +pub const _UFFDIO_COPY: u32 = 3; +pub const _UFFDIO_ZEROPAGE: u32 = 4; +pub const _UFFDIO_WRITEPROTECT: u32 = 6; +pub const _UFFDIO_CONTINUE: u32 = 7; +pub const _UFFDIO_API: u32 = 63; +pub const UFFDIO: u32 = 170; +pub const UFFD_EVENT_PAGEFAULT: u32 = 18; +pub const UFFD_EVENT_FORK: u32 = 19; +pub const UFFD_EVENT_REMAP: u32 = 20; +pub const UFFD_EVENT_REMOVE: u32 = 21; +pub const UFFD_EVENT_UNMAP: u32 = 22; +pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; +pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; +pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; +pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; +pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; +pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; +pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; +pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; +pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; +pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; +pub const UFFD_FEATURE_SIGBUS: u32 = 128; +pub const UFFD_FEATURE_THREAD_ID: u32 = 256; +pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; +pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; +pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; +pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; +pub const UFFD_USER_MODE_ONLY: u32 = 1; +pub const DT_UNKNOWN: u32 = 0; +pub const DT_FIFO: u32 = 1; +pub const DT_CHR: u32 = 2; +pub const DT_DIR: u32 = 4; +pub const DT_BLK: u32 = 6; +pub const DT_REG: u32 = 8; +pub const DT_LNK: u32 = 10; +pub const DT_SOCK: u32 = 12; +pub const STAT_HAVE_NSEC: u32 = 1; +pub const F_OK: u32 = 0; +pub const R_OK: u32 = 4; +pub const W_OK: u32 = 2; +pub const X_OK: u32 = 1; +pub const UTIME_NOW: u32 = 1073741823; +pub const UTIME_OMIT: u32 = 1073741822; +pub const MNT_FORCE: u32 = 1; +pub const MNT_DETACH: u32 = 2; +pub const MNT_EXPIRE: u32 = 4; +pub const UMOUNT_NOFOLLOW: u32 = 8; +pub const UMOUNT_UNUSED: u32 = 2147483648; +pub const STDIN_FILENO: u32 = 0; +pub const STDOUT_FILENO: u32 = 1; +pub const STDERR_FILENO: u32 = 2; +pub const RWF_HIPRI: u32 = 1; +pub const RWF_DSYNC: u32 = 2; +pub const RWF_SYNC: u32 = 4; +pub const RWF_NOWAIT: u32 = 8; +pub const RWF_APPEND: u32 = 16; +pub const EFD_SEMAPHORE: u32 = 1; +pub const EFD_CLOEXEC: u32 = 524288; +pub const EFD_NONBLOCK: u32 = 2048; +pub const EPOLLIN: u32 = 1; +pub const EPOLLPRI: u32 = 2; +pub const EPOLLOUT: u32 = 4; +pub const EPOLLERR: u32 = 8; +pub const EPOLLHUP: u32 = 16; +pub const EPOLLNVAL: u32 = 32; +pub const EPOLLRDNORM: u32 = 64; +pub const EPOLLRDBAND: u32 = 128; +pub const EPOLLWRNORM: u32 = 256; +pub const EPOLLWRBAND: u32 = 512; +pub const EPOLLMSG: u32 = 1024; +pub const EPOLLRDHUP: u32 = 8192; +pub const EPOLLEXCLUSIVE: u32 = 268435456; +pub const EPOLLWAKEUP: u32 = 536870912; +pub const EPOLLONESHOT: u32 = 1073741824; +pub const EPOLLET: u32 = 2147483648; +pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; +pub const TFD_CREATE_FLAGS: u32 = 526336; +pub const TFD_SETTIME_FLAGS: u32 = 1; +pub const UFFD_API: u32 = 170; +pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; +pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; +pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; +pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; +pub const UFFDIO_COPY_MODE_WP: u32 = 2; +pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; +pub const SPLICE_F_MOVE: u32 = 1; +pub const SPLICE_F_NONBLOCK: u32 = 2; +pub const SPLICE_F_MORE: u32 = 4; +pub const SPLICE_F_GIFT: u32 = 8; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, } #[repr(u32)] #[non_exhaustive] @@ -4473,681 +2550,161 @@ pub enum membarrier_cmd_flag { MEMBARRIER_CMD_FLAG_CPU = 1, } -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct uffd_msg { -pub event: __u8, -pub reserved1: __u8, -pub reserved2: __u16, -pub reserved3: __u32, -pub arg: uffd_msg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1 { -pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, -pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, -pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, -pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, -pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { -pub flags: __u64, -pub address: __u64, -pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { -pub ptid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { -pub ufd: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { -pub from: __u64, -pub to: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { -pub start: __u64, -pub end: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { -pub reserved1: __u64, -pub reserved2: __u64, -pub reserved3: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_api { -pub api: __u64, -pub features: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_range { -pub start: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_register { -pub range: uffdio_range, -pub mode: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_copy { -pub dst: __u64, -pub src: __u64, -pub len: __u64, -pub mode: __u64, -pub copy: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_zeropage { -pub range: uffdio_range, -pub mode: __u64, -pub zeropage: __s64, -} #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_writeprotect { -pub range: uffdio_range, -pub mode: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_continue { -pub range: uffdio_range, -pub mode: __u64, -pub mapped: __s64, -} -#[repr(C)] -pub struct io_uring_sqe { -pub opcode: __u8, -pub flags: __u8, -pub ioprio: __u16, -pub fd: __s32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, -pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, -pub len: __u32, -pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, -pub user_data: __u64, -pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, -pub personality: __u16, -pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, -pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_1 { -pub off: __u64, -pub addr2: __u64, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { -pub cmd_op: __u32, -pub __pad1: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_2 { -pub addr: __u64, -pub splice_off_in: __u64, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_3 { -pub rw_flags: __kernel_rwf_t, -pub fsync_flags: __u32, -pub poll_events: __u16, -pub poll32_events: __u32, -pub sync_range_flags: __u32, -pub msg_flags: __u32, -pub timeout_flags: __u32, -pub accept_flags: __u32, -pub cancel_flags: __u32, -pub open_flags: __u32, -pub statx_flags: __u32, -pub fadvise_advice: __u32, -pub splice_flags: __u32, -pub rename_flags: __u32, -pub unlink_flags: __u32, -pub hardlink_flags: __u32, -pub xattr_flags: __u32, -pub msg_ring_flags: __u32, -pub uring_cmd_flags: __u32, -} -#[repr(C, packed)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_4 { -pub buf_index: __u16, -pub buf_group: __u16, +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_5 { -pub splice_fd_in: __s32, -pub file_index: __u32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { -pub addr_len: __u16, -pub __pad3: [__u16; 1usize], -} -#[repr(C)] -pub struct io_uring_sqe__bindgen_ty_6 { -pub __bindgen_anon_1: __BindgenUnionField, -pub cmd: __BindgenUnionField<[__u8; 0usize]>, -pub bindgen_union_field: [u64; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { -pub addr3: __u64, -pub __pad2: [__u64; 1usize], -} -pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT; -pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT; -pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT; -pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT; -pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT; -pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT; -pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -IOSQE_FIXED_FILE_BIT = 0, -IOSQE_IO_DRAIN_BIT = 1, -IOSQE_IO_LINK_BIT = 2, -IOSQE_IO_HARDLINK_BIT = 3, -IOSQE_ASYNC_BIT = 4, -IOSQE_BUFFER_SELECT_BIT = 5, -IOSQE_CQE_SKIP_SUCCESS_BIT = 6, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum io_uring_op { -IORING_OP_NOP = 0, -IORING_OP_READV = 1, -IORING_OP_WRITEV = 2, -IORING_OP_FSYNC = 3, -IORING_OP_READ_FIXED = 4, -IORING_OP_WRITE_FIXED = 5, -IORING_OP_POLL_ADD = 6, -IORING_OP_POLL_REMOVE = 7, -IORING_OP_SYNC_FILE_RANGE = 8, -IORING_OP_SENDMSG = 9, -IORING_OP_RECVMSG = 10, -IORING_OP_TIMEOUT = 11, -IORING_OP_TIMEOUT_REMOVE = 12, -IORING_OP_ACCEPT = 13, -IORING_OP_ASYNC_CANCEL = 14, -IORING_OP_LINK_TIMEOUT = 15, -IORING_OP_CONNECT = 16, -IORING_OP_FALLOCATE = 17, -IORING_OP_OPENAT = 18, -IORING_OP_CLOSE = 19, -IORING_OP_FILES_UPDATE = 20, -IORING_OP_STATX = 21, -IORING_OP_READ = 22, -IORING_OP_WRITE = 23, -IORING_OP_FADVISE = 24, -IORING_OP_MADVISE = 25, -IORING_OP_SEND = 26, -IORING_OP_RECV = 27, -IORING_OP_OPENAT2 = 28, -IORING_OP_EPOLL_CTL = 29, -IORING_OP_SPLICE = 30, -IORING_OP_PROVIDE_BUFFERS = 31, -IORING_OP_REMOVE_BUFFERS = 32, -IORING_OP_TEE = 33, -IORING_OP_SHUTDOWN = 34, -IORING_OP_RENAMEAT = 35, -IORING_OP_UNLINKAT = 36, -IORING_OP_MKDIRAT = 37, -IORING_OP_SYMLINKAT = 38, -IORING_OP_LINKAT = 39, -IORING_OP_MSG_RING = 40, -IORING_OP_FSETXATTR = 41, -IORING_OP_SETXATTR = 42, -IORING_OP_FGETXATTR = 43, -IORING_OP_GETXATTR = 44, -IORING_OP_SOCKET = 45, -IORING_OP_URING_CMD = 46, -IORING_OP_SEND_ZC = 47, -IORING_OP_SENDMSG_ZC = 48, -IORING_OP_LAST = 49, -} -pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA; -pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_8 { -IORING_MSG_DATA = 0, -IORING_MSG_SEND_FD = 1, -} -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_cqe { -pub user_data: __u64, -pub res: __s32, -pub flags: __u32, -pub big_cqe: __IncompleteArrayField<__u64>, -} -pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_9 { -IORING_CQE_BUFFER_SHIFT = 16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_sqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub flags: __u32, -pub dropped: __u32, -pub array: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_cqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub overflow: __u32, -pub cqes: __u32, -pub flags: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_params { -pub sq_entries: __u32, -pub cq_entries: __u32, -pub flags: __u32, -pub sq_thread_cpu: __u32, -pub sq_thread_idle: __u32, -pub features: __u32, -pub wq_fd: __u32, -pub resv: [__u32; 3usize], -pub sq_off: io_sqring_offsets, -pub cq_off: io_cqring_offsets, -} -pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS; -pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS; -pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES; -pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES; -pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD; -pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD; -pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE; -pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC; -pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE; -pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY; -pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY; -pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS; -pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS; -pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2; -pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2; -pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2; -pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE; -pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF; -pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF; -pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS; -pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS; -pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS; -pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING; -pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING; -pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL; -pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE; -pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST; -pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_USE_REGISTERED_RING; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_10 { -IORING_REGISTER_BUFFERS = 0, -IORING_UNREGISTER_BUFFERS = 1, -IORING_REGISTER_FILES = 2, -IORING_UNREGISTER_FILES = 3, -IORING_REGISTER_EVENTFD = 4, -IORING_UNREGISTER_EVENTFD = 5, -IORING_REGISTER_FILES_UPDATE = 6, -IORING_REGISTER_EVENTFD_ASYNC = 7, -IORING_REGISTER_PROBE = 8, -IORING_REGISTER_PERSONALITY = 9, -IORING_UNREGISTER_PERSONALITY = 10, -IORING_REGISTER_RESTRICTIONS = 11, -IORING_REGISTER_ENABLE_RINGS = 12, -IORING_REGISTER_FILES2 = 13, -IORING_REGISTER_FILES_UPDATE2 = 14, -IORING_REGISTER_BUFFERS2 = 15, -IORING_REGISTER_BUFFERS_UPDATE = 16, -IORING_REGISTER_IOWQ_AFF = 17, -IORING_UNREGISTER_IOWQ_AFF = 18, -IORING_REGISTER_IOWQ_MAX_WORKERS = 19, -IORING_REGISTER_RING_FDS = 20, -IORING_UNREGISTER_RING_FDS = 21, -IORING_REGISTER_PBUF_RING = 22, -IORING_UNREGISTER_PBUF_RING = 23, -IORING_REGISTER_SYNC_CANCEL = 24, -IORING_REGISTER_FILE_ALLOC_RANGE = 25, -IORING_REGISTER_LAST = 26, -IORING_REGISTER_USE_REGISTERED_RING = 2147483648, -} -pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND; -pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_11 { -IO_WQ_BOUND = 0, -IO_WQ_UNBOUND = 1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_files_update { -pub offset: __u32, -pub resv: __u32, -pub fds: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_register { -pub nr: __u32, -pub flags: __u32, -pub resv2: __u64, -pub data: __u64, -pub tags: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update2 { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -pub tags: __u64, -pub nr: __u32, -pub resv2: __u32, +#[derive(Copy, Clone)] +pub union sigval { +pub sival_int: crate::ctypes::c_int, +pub sival_ptr: *mut crate::ctypes::c_void, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_slot { -pub tag: __u64, -pub resv: [__u64; 3usize], +#[derive(Copy, Clone)] +pub union __sifields { +pub _kill: __sifields__bindgen_ty_1, +pub _timer: __sifields__bindgen_ty_2, +pub _rt: __sifields__bindgen_ty_3, +pub _sigchld: __sifields__bindgen_ty_4, +pub _sigfault: __sifields__bindgen_ty_5, +pub _sigpoll: __sifields__bindgen_ty_6, +pub _sigsys: __sifields__bindgen_ty_7, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_register { -pub nr_slots: __u32, -pub resv: __u32, -pub resv2: __u64, -pub data: __u64, -pub resv3: __u64, +#[derive(Copy, Clone)] +pub union __sifields__bindgen_ty_5__bindgen_ty_1 { +pub _trapno: crate::ctypes::c_int, +pub _addr_lsb: crate::ctypes::c_short, +pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, +pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, +pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_probe_op { -pub op: __u8, -pub resv: __u8, -pub flags: __u16, -pub resv2: __u32, +#[derive(Copy, Clone)] +pub union siginfo__bindgen_ty_1 { +pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, +pub _si_pad: [crate::ctypes::c_int; 32usize], } #[repr(C)] -#[derive(Debug)] -pub struct io_uring_probe { -pub last_op: __u8, -pub ops_len: __u8, -pub resv: __u16, -pub resv2: [__u32; 3usize], -pub ops: __IncompleteArrayField, +#[derive(Copy, Clone)] +pub union sigevent__bindgen_ty_1 { +pub _pad: [crate::ctypes::c_int; 12usize], +pub _tid: crate::ctypes::c_int, +pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] -pub struct io_uring_restriction { -pub opcode: __u16, -pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, -pub resv: __u8, -pub resv2: [__u32; 3usize], +pub union uffd_msg__bindgen_ty_1 { +pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, +pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, +pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, +pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, +pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_restriction__bindgen_ty_1 { -pub register_op: __u8, -pub sqe_op: __u8, -pub sqe_flags: __u8, +pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { +pub ptid: __u32, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf { -pub addr: __u64, -pub len: __u32, -pub bid: __u16, -pub resv: __u16, +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } } -#[repr(C)] -pub struct io_uring_buf_ring { -pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, } -#[repr(C)] -pub struct io_uring_buf_ring__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 2usize], +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { -pub resv1: __u64, -pub resv2: __u32, -pub resv3: __u16, -pub tail: __u16, +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; } -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { -pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, -pub bufs: __IncompleteArrayField, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_reg { -pub ring_addr: __u64, -pub ring_entries: __u32, -pub bgid: __u16, -pub pad: __u16, -pub resv: [__u64; 3usize], +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; } -pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP; -pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP; -pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; -pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; -pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_12 { -IORING_RESTRICTION_REGISTER_OP = 0, -IORING_RESTRICTION_SQE_OP = 1, -IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, -IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, -IORING_RESTRICTION_LAST = 4, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_getevents_arg { -pub sigmask: __u64, -pub sigmask_sz: __u32, -pub pad: __u32, -pub ts: __u64, +val } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sync_cancel_reg { -pub addr: __u64, -pub fd: __s32, -pub flags: __u32, -pub timeout: __kernel_timespec, -pub pad: [__u64; 4usize], +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_file_index_range { -pub off: __u32, -pub len: __u32, -pub resv: __u64, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_recvmsg_out { -pub namelen: __u32, -pub controllen: __u32, -pub payloadlen: __u32, -pub flags: __u32, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr { -pub __storage: __kernel_sockaddr_storage, +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct linger { -pub l_onoff: crate::ctypes::c_int, -pub l_linger: crate::ctypes::c_int, +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T } -#[repr(C)] -#[derive(Debug)] -pub struct linux_dirent64 { -pub d_ino: crate::ctypes::c_ulong, -pub d_off: crate::ctypes::c_long, -pub d_reclen: __u16, -pub d_type: __u8, -pub d_name: __IncompleteArrayField, +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T } -pub type socklen_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat { -pub st_dev: crate::ctypes::c_ulong, -pub st_ino: crate::ctypes::c_ulong, -pub st_mode: crate::ctypes::c_uint, -pub st_nlink: crate::ctypes::c_uint, -pub st_uid: crate::ctypes::c_uint, -pub st_gid: crate::ctypes::c_uint, -pub st_rdev: crate::ctypes::c_ulong, -pub __pad1: crate::ctypes::c_ulong, -pub st_size: crate::ctypes::c_long, -pub st_blksize: crate::ctypes::c_int, -pub __pad2: crate::ctypes::c_int, -pub st_blocks: crate::ctypes::c_long, -pub st_atime: crate::ctypes::c_long, -pub st_atime_nsec: crate::ctypes::c_ulong, -pub st_mtime: crate::ctypes::c_long, -pub st_mtime_nsec: crate::ctypes::c_ulong, -pub st_ctime: crate::ctypes::c_long, -pub st_ctime_nsec: crate::ctypes::c_ulong, -pub __unused4: crate::ctypes::c_uint, -pub __unused5: crate::ctypes::c_uint, +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs { -pub f_type: __kernel_long_t, -pub f_bsize: __kernel_long_t, -pub f_blocks: __kernel_long_t, -pub f_bfree: __kernel_long_t, -pub f_bavail: __kernel_long_t, -pub f_files: __kernel_long_t, -pub f_ffree: __kernel_long_t, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __kernel_long_t, -pub f_frsize: __kernel_long_t, -pub f_flags: __kernel_long_t, -pub f_spare: [__kernel_long_t; 4usize], +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs64 { -pub f_type: __kernel_long_t, -pub f_bsize: __kernel_long_t, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __kernel_long_t, -pub f_frsize: __kernel_long_t, -pub f_flags: __kernel_long_t, -pub f_spare: [__kernel_long_t; 4usize], } -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct compat_statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") } -pub type __fsword_t = __kernel_long_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_desc { -pub entry_number: crate::ctypes::c_uint, -pub base_addr: crate::ctypes::c_uint, -pub limit: crate::ctypes::c_uint, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub __bindgen_padding_0: [u8; 3usize], +} +impl membarrier_cmd { +pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; } impl user_desc { #[inline] @@ -5246,47 +2803,3 @@ __bindgen_bitfield_unit } } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr { -pub msg_name: *mut crate::ctypes::c_void, -pub msg_namelen: crate::ctypes::c_int, -pub msg_iov: *mut iovec, -pub msg_iovlen: size_t, -pub msg_control: *mut crate::ctypes::c_void, -pub msg_controllen: size_t, -pub msg_flags: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsghdr { -pub cmsg_len: size_t, -pub cmsg_level: crate::ctypes::c_int, -pub cmsg_type: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ucred { -pub pid: __u32, -pub uid: __u32, -pub gid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mmsghdr { -pub msg_hdr: msghdr, -pub msg_len: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigset_t { -pub sig: [crate::ctypes::c_ulong; 1usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigaction { -pub sa_handler_kernel: __kernel_sighandler_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_restorer: __sigrestore_t, -pub sa_mask: kernel_sigset_t, -} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/if_ether.rs temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/if_ether.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/if_ether.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/if_ether.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,167 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ethhdr { +pub h_dest: [crate::ctypes::c_uchar; 6usize], +pub h_source: [crate::ctypes::c_uchar; 6usize], +pub h_proto: __be16, +} +pub const ETH_ALEN: u32 = 6; +pub const ETH_TLEN: u32 = 2; +pub const ETH_HLEN: u32 = 14; +pub const ETH_ZLEN: u32 = 60; +pub const ETH_DATA_LEN: u32 = 1500; +pub const ETH_FRAME_LEN: u32 = 1514; +pub const ETH_FCS_LEN: u32 = 4; +pub const ETH_MIN_MTU: u32 = 68; +pub const ETH_MAX_MTU: u32 = 65535; +pub const ETH_P_LOOP: u32 = 96; +pub const ETH_P_PUP: u32 = 512; +pub const ETH_P_PUPAT: u32 = 513; +pub const ETH_P_TSN: u32 = 8944; +pub const ETH_P_ERSPAN2: u32 = 8939; +pub const ETH_P_IP: u32 = 2048; +pub const ETH_P_X25: u32 = 2053; +pub const ETH_P_ARP: u32 = 2054; +pub const ETH_P_BPQ: u32 = 2303; +pub const ETH_P_IEEEPUP: u32 = 2560; +pub const ETH_P_IEEEPUPAT: u32 = 2561; +pub const ETH_P_BATMAN: u32 = 17157; +pub const ETH_P_DEC: u32 = 24576; +pub const ETH_P_DNA_DL: u32 = 24577; +pub const ETH_P_DNA_RC: u32 = 24578; +pub const ETH_P_DNA_RT: u32 = 24579; +pub const ETH_P_LAT: u32 = 24580; +pub const ETH_P_DIAG: u32 = 24581; +pub const ETH_P_CUST: u32 = 24582; +pub const ETH_P_SCA: u32 = 24583; +pub const ETH_P_TEB: u32 = 25944; +pub const ETH_P_RARP: u32 = 32821; +pub const ETH_P_ATALK: u32 = 32923; +pub const ETH_P_AARP: u32 = 33011; +pub const ETH_P_8021Q: u32 = 33024; +pub const ETH_P_ERSPAN: u32 = 35006; +pub const ETH_P_IPX: u32 = 33079; +pub const ETH_P_IPV6: u32 = 34525; +pub const ETH_P_PAUSE: u32 = 34824; +pub const ETH_P_SLOW: u32 = 34825; +pub const ETH_P_WCCP: u32 = 34878; +pub const ETH_P_MPLS_UC: u32 = 34887; +pub const ETH_P_MPLS_MC: u32 = 34888; +pub const ETH_P_ATMMPOA: u32 = 34892; +pub const ETH_P_PPP_DISC: u32 = 34915; +pub const ETH_P_PPP_SES: u32 = 34916; +pub const ETH_P_LINK_CTL: u32 = 34924; +pub const ETH_P_ATMFATE: u32 = 34948; +pub const ETH_P_PAE: u32 = 34958; +pub const ETH_P_PROFINET: u32 = 34962; +pub const ETH_P_REALTEK: u32 = 34969; +pub const ETH_P_AOE: u32 = 34978; +pub const ETH_P_ETHERCAT: u32 = 34980; +pub const ETH_P_8021AD: u32 = 34984; +pub const ETH_P_802_EX1: u32 = 34997; +pub const ETH_P_PREAUTH: u32 = 35015; +pub const ETH_P_TIPC: u32 = 35018; +pub const ETH_P_LLDP: u32 = 35020; +pub const ETH_P_MRP: u32 = 35043; +pub const ETH_P_MACSEC: u32 = 35045; +pub const ETH_P_8021AH: u32 = 35047; +pub const ETH_P_MVRP: u32 = 35061; +pub const ETH_P_1588: u32 = 35063; +pub const ETH_P_NCSI: u32 = 35064; +pub const ETH_P_PRP: u32 = 35067; +pub const ETH_P_CFM: u32 = 35074; +pub const ETH_P_FCOE: u32 = 35078; +pub const ETH_P_IBOE: u32 = 35093; +pub const ETH_P_TDLS: u32 = 35085; +pub const ETH_P_FIP: u32 = 35092; +pub const ETH_P_80221: u32 = 35095; +pub const ETH_P_HSR: u32 = 35119; +pub const ETH_P_NSH: u32 = 35151; +pub const ETH_P_LOOPBACK: u32 = 36864; +pub const ETH_P_QINQ1: u32 = 37120; +pub const ETH_P_QINQ2: u32 = 37376; +pub const ETH_P_QINQ3: u32 = 37632; +pub const ETH_P_EDSA: u32 = 56026; +pub const ETH_P_DSA_8021Q: u32 = 56027; +pub const ETH_P_DSA_A5PSW: u32 = 57345; +pub const ETH_P_IFE: u32 = 60734; +pub const ETH_P_AF_IUCV: u32 = 64507; +pub const ETH_P_802_3_MIN: u32 = 1536; +pub const ETH_P_802_3: u32 = 1; +pub const ETH_P_AX25: u32 = 2; +pub const ETH_P_ALL: u32 = 3; +pub const ETH_P_802_2: u32 = 4; +pub const ETH_P_SNAP: u32 = 5; +pub const ETH_P_DDCMP: u32 = 6; +pub const ETH_P_WAN_PPP: u32 = 7; +pub const ETH_P_PPP_MP: u32 = 8; +pub const ETH_P_LOCALTALK: u32 = 9; +pub const ETH_P_CAN: u32 = 12; +pub const ETH_P_CANFD: u32 = 13; +pub const ETH_P_CANXL: u32 = 14; +pub const ETH_P_PPPTALK: u32 = 16; +pub const ETH_P_TR_802_2: u32 = 17; +pub const ETH_P_MOBITEX: u32 = 21; +pub const ETH_P_CONTROL: u32 = 22; +pub const ETH_P_IRDA: u32 = 23; +pub const ETH_P_ECONET: u32 = 24; +pub const ETH_P_HDLC: u32 = 25; +pub const ETH_P_ARCNET: u32 = 26; +pub const ETH_P_DSA: u32 = 27; +pub const ETH_P_TRAILER: u32 = 28; +pub const ETH_P_PHONET: u32 = 245; +pub const ETH_P_IEEE802154: u32 = 246; +pub const ETH_P_CAIF: u32 = 247; +pub const ETH_P_XDSA: u32 = 248; +pub const ETH_P_MAP: u32 = 249; +pub const ETH_P_MCTP: u32 = 250; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/ioctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/ioctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/ioctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const FIONREAD: u32 = 21531; pub const FIONBIO: u32 = 21537; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/io_uring.rs temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/io_uring.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/io_uring.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/io_uring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1083 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_rwf_t = crate::ctypes::c_int; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +pub struct io_uring_sqe { +pub opcode: __u8, +pub flags: __u8, +pub ioprio: __u16, +pub fd: __s32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, +pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, +pub len: __u32, +pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, +pub user_data: __u64, +pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, +pub personality: __u16, +pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, +pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { +pub cmd_op: __u32, +pub __pad1: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { +pub addr_len: __u16, +pub __pad3: [__u16; 1usize], +} +#[repr(C)] +pub struct io_uring_sqe__bindgen_ty_6 { +pub __bindgen_anon_1: __BindgenUnionField, +pub cmd: __BindgenUnionField<[__u8; 0usize]>, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { +pub addr3: __u64, +pub __pad2: [__u64; 1usize], +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_cqe { +pub user_data: __u64, +pub res: __s32, +pub flags: __u32, +pub big_cqe: __IncompleteArrayField<__u64>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_sqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub flags: __u32, +pub dropped: __u32, +pub array: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_cqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub overflow: __u32, +pub cqes: __u32, +pub flags: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_params { +pub sq_entries: __u32, +pub cq_entries: __u32, +pub flags: __u32, +pub sq_thread_cpu: __u32, +pub sq_thread_idle: __u32, +pub features: __u32, +pub wq_fd: __u32, +pub resv: [__u32; 3usize], +pub sq_off: io_sqring_offsets, +pub cq_off: io_cqring_offsets, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_files_update { +pub offset: __u32, +pub resv: __u32, +pub fds: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_register { +pub nr: __u32, +pub flags: __u32, +pub resv2: __u64, +pub data: __u64, +pub tags: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update2 { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +pub tags: __u64, +pub nr: __u32, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_slot { +pub tag: __u64, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_register { +pub nr_slots: __u32, +pub resv: __u32, +pub resv2: __u64, +pub data: __u64, +pub resv3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_probe_op { +pub op: __u8, +pub resv: __u8, +pub flags: __u16, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_probe { +pub last_op: __u8, +pub ops_len: __u8, +pub resv: __u16, +pub resv2: [__u32; 3usize], +pub ops: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_restriction { +pub opcode: __u16, +pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, +pub resv: __u8, +pub resv2: [__u32; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf { +pub addr: __u64, +pub len: __u32, +pub bid: __u16, +pub resv: __u16, +} +#[repr(C)] +pub struct io_uring_buf_ring { +pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +} +#[repr(C)] +pub struct io_uring_buf_ring__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { +pub resv1: __u64, +pub resv2: __u32, +pub resv3: __u16, +pub tail: __u16, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { +pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, +pub bufs: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_reg { +pub ring_addr: __u64, +pub ring_entries: __u32, +pub bgid: __u16, +pub pad: __u16, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_getevents_arg { +pub sigmask: __u64, +pub sigmask_sz: __u32, +pub pad: __u32, +pub ts: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sync_cancel_reg { +pub addr: __u64, +pub fd: __s32, +pub flags: __u32, +pub timeout: __kernel_timespec, +pub pad: [__u64; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_file_index_range { +pub off: __u32, +pub len: __u32, +pub resv: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_recvmsg_out { +pub namelen: __u32, +pub controllen: __u32, +pub payloadlen: __u32, +pub flags: __u32, +} +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 14; +pub const _IOC_DIRBITS: u32 = 2; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 3; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 30; +pub const _IOC_NONE: u32 = 0; +pub const _IOC_WRITE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const IOC_IN: u32 = 1073741824; +pub const IOC_OUT: u32 = 2147483648; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const IORING_FILE_INDEX_ALLOC: i32 = -1; +pub const IORING_SETUP_IOPOLL: u32 = 1; +pub const IORING_SETUP_SQPOLL: u32 = 2; +pub const IORING_SETUP_SQ_AFF: u32 = 4; +pub const IORING_SETUP_CQSIZE: u32 = 8; +pub const IORING_SETUP_CLAMP: u32 = 16; +pub const IORING_SETUP_ATTACH_WQ: u32 = 32; +pub const IORING_SETUP_R_DISABLED: u32 = 64; +pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; +pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; +pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; +pub const IORING_SETUP_SQE128: u32 = 1024; +pub const IORING_SETUP_CQE32: u32 = 2048; +pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; +pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; +pub const IORING_URING_CMD_FIXED: u32 = 1; +pub const IORING_FSYNC_DATASYNC: u32 = 1; +pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; +pub const IORING_POLL_ADD_LEVEL: u32 = 8; +pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; +pub const IORING_ASYNC_CANCEL_FD: u32 = 2; +pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; +pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; +pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; +pub const IORING_RECV_MULTISHOT: u32 = 2; +pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; +pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; +pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; +pub const IORING_ACCEPT_MULTISHOT: u32 = 1; +pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; +pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; +pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; +pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; +pub const IORING_CQE_F_NOTIF: u32 = 8; +pub const IORING_OFF_SQ_RING: u32 = 0; +pub const IORING_OFF_CQ_RING: u32 = 134217728; +pub const IORING_OFF_SQES: u32 = 268435456; +pub const IORING_SQ_NEED_WAKEUP: u32 = 1; +pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; +pub const IORING_SQ_TASKRUN: u32 = 4; +pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; +pub const IORING_ENTER_GETEVENTS: u32 = 1; +pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; +pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; +pub const IORING_ENTER_REGISTERED_RING: u32 = 16; +pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; +pub const IORING_FEAT_NODROP: u32 = 2; +pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; +pub const IORING_FEAT_RW_CUR_POS: u32 = 8; +pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; +pub const IORING_FEAT_FAST_POLL: u32 = 32; +pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_FEAT_CQE_SKIP: u32 = 2048; +pub const IORING_FEAT_LINKED_FILE: u32 = 4096; +pub const IORING_FEAT_REG_REG_RING: u32 = 8192; +pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; +pub const IO_URING_OP_SUPPORTED: u32 = 1; +pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_FIXED_FILE_BIT; +pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_DRAIN_BIT; +pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_LINK_BIT; +pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_HARDLINK_BIT; +pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_ASYNC_BIT; +pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_BUFFER_SELECT_BIT; +pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_CQE_SKIP_SUCCESS_BIT; +pub const IORING_MSG_DATA: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_DATA; +pub const IORING_MSG_SEND_FD: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_SEND_FD; +pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = _bindgen_ty_3::IORING_CQE_BUFFER_SHIFT; +pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS; +pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_BUFFERS; +pub const IORING_REGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES; +pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_FILES; +pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD; +pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_EVENTFD; +pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE; +pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD_ASYNC; +pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PROBE; +pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PERSONALITY; +pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PERSONALITY; +pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RESTRICTIONS; +pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_ENABLE_RINGS; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES2; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE2; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS2; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS_UPDATE; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_AFF; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_IOWQ_AFF; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_MAX_WORKERS; +pub const IORING_REGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RING_FDS; +pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_RING_FDS; +pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PBUF_RING; +pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PBUF_RING; +pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_SYNC_CANCEL; +pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILE_ALLOC_RANGE; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_LAST; +pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_USE_REGISTERED_RING; +pub const IO_WQ_BOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_BOUND; +pub const IO_WQ_UNBOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_UNBOUND; +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_REGISTER_OP; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_OP; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_LAST; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IOSQE_FIXED_FILE_BIT = 0, +IOSQE_IO_DRAIN_BIT = 1, +IOSQE_IO_LINK_BIT = 2, +IOSQE_IO_HARDLINK_BIT = 3, +IOSQE_ASYNC_BIT = 4, +IOSQE_BUFFER_SELECT_BIT = 5, +IOSQE_CQE_SKIP_SUCCESS_BIT = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum io_uring_op { +IORING_OP_NOP = 0, +IORING_OP_READV = 1, +IORING_OP_WRITEV = 2, +IORING_OP_FSYNC = 3, +IORING_OP_READ_FIXED = 4, +IORING_OP_WRITE_FIXED = 5, +IORING_OP_POLL_ADD = 6, +IORING_OP_POLL_REMOVE = 7, +IORING_OP_SYNC_FILE_RANGE = 8, +IORING_OP_SENDMSG = 9, +IORING_OP_RECVMSG = 10, +IORING_OP_TIMEOUT = 11, +IORING_OP_TIMEOUT_REMOVE = 12, +IORING_OP_ACCEPT = 13, +IORING_OP_ASYNC_CANCEL = 14, +IORING_OP_LINK_TIMEOUT = 15, +IORING_OP_CONNECT = 16, +IORING_OP_FALLOCATE = 17, +IORING_OP_OPENAT = 18, +IORING_OP_CLOSE = 19, +IORING_OP_FILES_UPDATE = 20, +IORING_OP_STATX = 21, +IORING_OP_READ = 22, +IORING_OP_WRITE = 23, +IORING_OP_FADVISE = 24, +IORING_OP_MADVISE = 25, +IORING_OP_SEND = 26, +IORING_OP_RECV = 27, +IORING_OP_OPENAT2 = 28, +IORING_OP_EPOLL_CTL = 29, +IORING_OP_SPLICE = 30, +IORING_OP_PROVIDE_BUFFERS = 31, +IORING_OP_REMOVE_BUFFERS = 32, +IORING_OP_TEE = 33, +IORING_OP_SHUTDOWN = 34, +IORING_OP_RENAMEAT = 35, +IORING_OP_UNLINKAT = 36, +IORING_OP_MKDIRAT = 37, +IORING_OP_SYMLINKAT = 38, +IORING_OP_LINKAT = 39, +IORING_OP_MSG_RING = 40, +IORING_OP_FSETXATTR = 41, +IORING_OP_SETXATTR = 42, +IORING_OP_FGETXATTR = 43, +IORING_OP_GETXATTR = 44, +IORING_OP_SOCKET = 45, +IORING_OP_URING_CMD = 46, +IORING_OP_SEND_ZC = 47, +IORING_OP_SENDMSG_ZC = 48, +IORING_OP_LAST = 49, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IORING_MSG_DATA = 0, +IORING_MSG_SEND_FD = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IORING_CQE_BUFFER_SHIFT = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IORING_REGISTER_BUFFERS = 0, +IORING_UNREGISTER_BUFFERS = 1, +IORING_REGISTER_FILES = 2, +IORING_UNREGISTER_FILES = 3, +IORING_REGISTER_EVENTFD = 4, +IORING_UNREGISTER_EVENTFD = 5, +IORING_REGISTER_FILES_UPDATE = 6, +IORING_REGISTER_EVENTFD_ASYNC = 7, +IORING_REGISTER_PROBE = 8, +IORING_REGISTER_PERSONALITY = 9, +IORING_UNREGISTER_PERSONALITY = 10, +IORING_REGISTER_RESTRICTIONS = 11, +IORING_REGISTER_ENABLE_RINGS = 12, +IORING_REGISTER_FILES2 = 13, +IORING_REGISTER_FILES_UPDATE2 = 14, +IORING_REGISTER_BUFFERS2 = 15, +IORING_REGISTER_BUFFERS_UPDATE = 16, +IORING_REGISTER_IOWQ_AFF = 17, +IORING_UNREGISTER_IOWQ_AFF = 18, +IORING_REGISTER_IOWQ_MAX_WORKERS = 19, +IORING_REGISTER_RING_FDS = 20, +IORING_UNREGISTER_RING_FDS = 21, +IORING_REGISTER_PBUF_RING = 22, +IORING_UNREGISTER_PBUF_RING = 23, +IORING_REGISTER_SYNC_CANCEL = 24, +IORING_REGISTER_FILE_ALLOC_RANGE = 25, +IORING_REGISTER_LAST = 26, +IORING_REGISTER_USE_REGISTERED_RING = 2147483648, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IO_WQ_BOUND = 0, +IO_WQ_UNBOUND = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IORING_RESTRICTION_REGISTER_OP = 0, +IORING_RESTRICTION_SQE_OP = 1, +IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, +IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, +IORING_RESTRICTION_LAST = 4, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_1 { +pub off: __u64, +pub addr2: __u64, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_2 { +pub addr: __u64, +pub splice_off_in: __u64, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_3 { +pub rw_flags: __kernel_rwf_t, +pub fsync_flags: __u32, +pub poll_events: __u16, +pub poll32_events: __u32, +pub sync_range_flags: __u32, +pub msg_flags: __u32, +pub timeout_flags: __u32, +pub accept_flags: __u32, +pub cancel_flags: __u32, +pub open_flags: __u32, +pub statx_flags: __u32, +pub fadvise_advice: __u32, +pub splice_flags: __u32, +pub rename_flags: __u32, +pub unlink_flags: __u32, +pub hardlink_flags: __u32, +pub xattr_flags: __u32, +pub msg_ring_flags: __u32, +pub uring_cmd_flags: __u32, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_4 { +pub buf_index: __u16, +pub buf_group: __u16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { +pub splice_fd_in: __s32, +pub file_index: __u32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_restriction__bindgen_ty_1 { +pub register_op: __u8, +pub sqe_op: __u8, +pub sqe_flags: __u8, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/netlink.rs temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/netlink.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/netlink.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/netlink.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,357 +1,1492 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_nl { +pub nl_family: __kernel_sa_family_t, +pub nl_pad: crate::ctypes::c_ushort, +pub nl_pid: __u32, +pub nl_groups: __u32, } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsghdr { +pub nlmsg_len: __u32, +pub nlmsg_type: __u16, +pub nlmsg_flags: __u16, +pub nlmsg_seq: __u32, +pub nlmsg_pid: __u32, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsgerr { +pub error: crate::ctypes::c_int, +pub msg: nlmsghdr, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_pktinfo { +pub group: __u32, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_req { +pub nm_block_size: crate::ctypes::c_uint, +pub nm_block_nr: crate::ctypes::c_uint, +pub nm_frame_size: crate::ctypes::c_uint, +pub nm_frame_nr: crate::ctypes::c_uint, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_hdr { +pub nm_status: crate::ctypes::c_uint, +pub nm_len: crate::ctypes::c_uint, +pub nm_group: __u32, +pub nm_pid: __u32, +pub nm_uid: __u32, +pub nm_gid: __u32, } -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const __BITS_PER_LONG: u32 = 64; -pub const __FD_SETSIZE: u32 = 1024; -pub const NETLINK_ROUTE: u32 = 0; -pub const NETLINK_UNUSED: u32 = 1; -pub const NETLINK_USERSOCK: u32 = 2; -pub const NETLINK_FIREWALL: u32 = 3; -pub const NETLINK_SOCK_DIAG: u32 = 4; -pub const NETLINK_NFLOG: u32 = 5; -pub const NETLINK_XFRM: u32 = 6; -pub const NETLINK_SELINUX: u32 = 7; -pub const NETLINK_ISCSI: u32 = 8; -pub const NETLINK_AUDIT: u32 = 9; -pub const NETLINK_FIB_LOOKUP: u32 = 10; -pub const NETLINK_CONNECTOR: u32 = 11; -pub const NETLINK_NETFILTER: u32 = 12; -pub const NETLINK_IP6_FW: u32 = 13; -pub const NETLINK_DNRTMSG: u32 = 14; -pub const NETLINK_KOBJECT_UEVENT: u32 = 15; -pub const NETLINK_GENERIC: u32 = 16; -pub const NETLINK_SCSITRANSPORT: u32 = 18; -pub const NETLINK_ECRYPTFS: u32 = 19; -pub const NETLINK_RDMA: u32 = 20; -pub const NETLINK_CRYPTO: u32 = 21; -pub const NETLINK_SMC: u32 = 22; -pub const NETLINK_INET_DIAG: u32 = 4; -pub const MAX_LINKS: u32 = 32; -pub const NLM_F_REQUEST: u32 = 1; -pub const NLM_F_MULTI: u32 = 2; -pub const NLM_F_ACK: u32 = 4; -pub const NLM_F_ECHO: u32 = 8; -pub const NLM_F_DUMP_INTR: u32 = 16; -pub const NLM_F_DUMP_FILTERED: u32 = 32; -pub const NLM_F_ROOT: u32 = 256; -pub const NLM_F_MATCH: u32 = 512; -pub const NLM_F_ATOMIC: u32 = 1024; -pub const NLM_F_DUMP: u32 = 768; -pub const NLM_F_REPLACE: u32 = 256; -pub const NLM_F_EXCL: u32 = 512; -pub const NLM_F_CREATE: u32 = 1024; -pub const NLM_F_APPEND: u32 = 2048; -pub const NLM_F_NONREC: u32 = 256; -pub const NLM_F_BULK: u32 = 512; -pub const NLM_F_CAPPED: u32 = 256; -pub const NLM_F_ACK_TLVS: u32 = 512; -pub const NLMSG_ALIGNTO: u32 = 4; -pub const NLMSG_NOOP: u32 = 1; -pub const NLMSG_ERROR: u32 = 2; -pub const NLMSG_DONE: u32 = 3; -pub const NLMSG_OVERRUN: u32 = 4; -pub const NLMSG_MIN_TYPE: u32 = 16; -pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; -pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; -pub const NETLINK_PKTINFO: u32 = 3; -pub const NETLINK_BROADCAST_ERROR: u32 = 4; -pub const NETLINK_NO_ENOBUFS: u32 = 5; -pub const NETLINK_RX_RING: u32 = 6; -pub const NETLINK_TX_RING: u32 = 7; -pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; -pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; -pub const NETLINK_CAP_ACK: u32 = 10; -pub const NETLINK_EXT_ACK: u32 = 11; -pub const NETLINK_GET_STRICT_CHK: u32 = 12; -pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; -pub const NET_MAJOR: u32 = 36; -pub const NLA_F_NESTED: u32 = 32768; -pub const NLA_F_NET_BYTEORDER: u32 = 16384; -pub const NLA_TYPE_MASK: i32 = -49153; -pub const NLA_ALIGNTO: u32 = 4; -pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; -pub const MACVLAN_FLAG_NODST: u32 = 2; -pub const IPVLAN_F_PRIVATE: u32 = 1; -pub const IPVLAN_F_VEPA: u32 = 2; -pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; -pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; -pub const MAX_VLAN_LIST_LEN: u32 = 1; -pub const PORT_PROFILE_MAX: u32 = 40; -pub const PORT_UUID_MAX: u32 = 16; -pub const PORT_SELF_VF: i32 = -1; -pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; -pub const XDP_FLAGS_SKB_MODE: u32 = 2; -pub const XDP_FLAGS_DRV_MODE: u32 = 4; -pub const XDP_FLAGS_HW_MODE: u32 = 8; -pub const XDP_FLAGS_REPLACE: u32 = 16; -pub const XDP_FLAGS_MODES: u32 = 14; -pub const XDP_FLAGS_MASK: u32 = 31; -pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; -pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; -pub const IFA_F_SECONDARY: u32 = 1; -pub const IFA_F_TEMPORARY: u32 = 1; -pub const IFA_F_NODAD: u32 = 2; -pub const IFA_F_OPTIMISTIC: u32 = 4; -pub const IFA_F_DADFAILED: u32 = 8; -pub const IFA_F_HOMEADDRESS: u32 = 16; -pub const IFA_F_DEPRECATED: u32 = 32; -pub const IFA_F_TENTATIVE: u32 = 64; -pub const IFA_F_PERMANENT: u32 = 128; -pub const IFA_F_MANAGETEMPADDR: u32 = 256; -pub const IFA_F_NOPREFIXROUTE: u32 = 512; -pub const IFA_F_MCAUTOJOIN: u32 = 1024; -pub const IFA_F_STABLE_PRIVACY: u32 = 2048; -pub const IFAPROT_UNSPEC: u32 = 0; -pub const IFAPROT_KERNEL_LO: u32 = 1; -pub const IFAPROT_KERNEL_RA: u32 = 2; -pub const IFAPROT_KERNEL_LL: u32 = 3; -pub const NTF_USE: u32 = 1; -pub const NTF_SELF: u32 = 2; -pub const NTF_MASTER: u32 = 4; -pub const NTF_PROXY: u32 = 8; -pub const NTF_EXT_LEARNED: u32 = 16; -pub const NTF_OFFLOADED: u32 = 32; -pub const NTF_STICKY: u32 = 64; -pub const NTF_ROUTER: u32 = 128; -pub const NTF_EXT_MANAGED: u32 = 1; -pub const NTF_EXT_LOCKED: u32 = 2; -pub const NUD_INCOMPLETE: u32 = 1; -pub const NUD_REACHABLE: u32 = 2; -pub const NUD_STALE: u32 = 4; -pub const NUD_DELAY: u32 = 8; -pub const NUD_PROBE: u32 = 16; -pub const NUD_FAILED: u32 = 32; -pub const NUD_NOARP: u32 = 64; -pub const NUD_PERMANENT: u32 = 128; -pub const NUD_NONE: u32 = 0; -pub const RTNL_FAMILY_IPMR: u32 = 128; -pub const RTNL_FAMILY_IP6MR: u32 = 129; -pub const RTNL_FAMILY_MAX: u32 = 129; -pub const RTA_ALIGNTO: u32 = 4; -pub const RTPROT_UNSPEC: u32 = 0; -pub const RTPROT_REDIRECT: u32 = 1; -pub const RTPROT_KERNEL: u32 = 2; -pub const RTPROT_BOOT: u32 = 3; -pub const RTPROT_STATIC: u32 = 4; -pub const RTPROT_GATED: u32 = 8; -pub const RTPROT_RA: u32 = 9; -pub const RTPROT_MRT: u32 = 10; -pub const RTPROT_ZEBRA: u32 = 11; -pub const RTPROT_BIRD: u32 = 12; -pub const RTPROT_DNROUTED: u32 = 13; -pub const RTPROT_XORP: u32 = 14; -pub const RTPROT_NTK: u32 = 15; -pub const RTPROT_DHCP: u32 = 16; -pub const RTPROT_MROUTED: u32 = 17; -pub const RTPROT_KEEPALIVED: u32 = 18; -pub const RTPROT_BABEL: u32 = 42; -pub const RTPROT_OPENR: u32 = 99; -pub const RTPROT_BGP: u32 = 186; -pub const RTPROT_ISIS: u32 = 187; -pub const RTPROT_OSPF: u32 = 188; -pub const RTPROT_RIP: u32 = 189; -pub const RTPROT_EIGRP: u32 = 192; -pub const RTM_F_NOTIFY: u32 = 256; -pub const RTM_F_CLONED: u32 = 512; -pub const RTM_F_EQUALIZE: u32 = 1024; -pub const RTM_F_PREFIX: u32 = 2048; -pub const RTM_F_LOOKUP_TABLE: u32 = 4096; -pub const RTM_F_FIB_MATCH: u32 = 8192; -pub const RTM_F_OFFLOAD: u32 = 16384; -pub const RTM_F_TRAP: u32 = 32768; -pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; -pub const RTNH_F_DEAD: u32 = 1; -pub const RTNH_F_PERVASIVE: u32 = 2; -pub const RTNH_F_ONLINK: u32 = 4; -pub const RTNH_F_OFFLOAD: u32 = 8; -pub const RTNH_F_LINKDOWN: u32 = 16; -pub const RTNH_F_UNRESOLVED: u32 = 32; -pub const RTNH_F_TRAP: u32 = 64; -pub const RTNH_COMPARE_MASK: u32 = 89; -pub const RTNH_ALIGNTO: u32 = 4; -pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; -pub const RTAX_FEATURE_ECN: u32 = 1; -pub const RTAX_FEATURE_SACK: u32 = 2; -pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; -pub const RTAX_FEATURE_ALLFRAG: u32 = 8; -pub const RTAX_FEATURE_MASK: u32 = 15; -pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; -pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; -pub const RTMGRP_LINK: u32 = 1; -pub const RTMGRP_NOTIFY: u32 = 2; -pub const RTMGRP_NEIGH: u32 = 4; -pub const RTMGRP_TC: u32 = 8; -pub const RTMGRP_IPV4_IFADDR: u32 = 16; -pub const RTMGRP_IPV4_MROUTE: u32 = 32; -pub const RTMGRP_IPV4_ROUTE: u32 = 64; -pub const RTMGRP_IPV4_RULE: u32 = 128; -pub const RTMGRP_IPV6_IFADDR: u32 = 256; -pub const RTMGRP_IPV6_MROUTE: u32 = 512; -pub const RTMGRP_IPV6_ROUTE: u32 = 1024; -pub const RTMGRP_IPV6_IFINFO: u32 = 2048; -pub const RTMGRP_DECnet_IFADDR: u32 = 4096; -pub const RTMGRP_DECnet_ROUTE: u32 = 16384; -pub const RTMGRP_IPV6_PREFIX: u32 = 131072; -pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; -pub const RTEXT_FILTER_VF: u32 = 1; -pub const RTEXT_FILTER_BRVLAN: u32 = 2; -pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; -pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; -pub const RTEXT_FILTER_MRP: u32 = 16; -pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; -pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; -pub const RTEXT_FILTER_MST: u32 = 128; -pub type size_t = crate::ctypes::c_ulong; -pub type ssize_t = crate::ctypes::c_long; -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; #[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct nlattr { +pub nla_len: __u16, +pub nla_type: __u16, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, +#[derive(Debug, Copy, Clone)] +pub struct nla_bitfield32 { +pub value: __u32, +pub selector: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], +pub struct rtnl_link_stats { +pub rx_packets: __u32, +pub tx_packets: __u32, +pub rx_bytes: __u32, +pub tx_bytes: __u32, +pub rx_errors: __u32, +pub tx_errors: __u32, +pub rx_dropped: __u32, +pub tx_dropped: __u32, +pub multicast: __u32, +pub collisions: __u32, +pub rx_length_errors: __u32, +pub rx_over_errors: __u32, +pub rx_crc_errors: __u32, +pub rx_frame_errors: __u32, +pub rx_fifo_errors: __u32, +pub rx_missed_errors: __u32, +pub tx_aborted_errors: __u32, +pub tx_carrier_errors: __u32, +pub tx_fifo_errors: __u32, +pub tx_heartbeat_errors: __u32, +pub tx_window_errors: __u32, +pub rx_compressed: __u32, +pub tx_compressed: __u32, +pub rx_nohandler: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnl_link_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +pub collisions: __u64, +pub rx_length_errors: __u64, +pub rx_over_errors: __u64, +pub rx_crc_errors: __u64, +pub rx_frame_errors: __u64, +pub rx_fifo_errors: __u64, +pub rx_missed_errors: __u64, +pub tx_aborted_errors: __u64, +pub tx_carrier_errors: __u64, +pub tx_fifo_errors: __u64, +pub tx_heartbeat_errors: __u64, +pub tx_window_errors: __u64, +pub rx_compressed: __u64, +pub tx_compressed: __u64, +pub rx_nohandler: __u64, +pub rx_otherhost_dropped: __u64, } -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 16usize], +pub struct rtnl_hw_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, } -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_old_uid_t = crate::ctypes::c_ushort; -pub type __kernel_old_gid_t = crate::ctypes::c_ushort; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_dev_t = crate::ctypes::c_uint; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], +pub struct rtnl_link_ifmap { +pub mem_start: __u64, +pub mem_end: __u64, +pub base_addr: __u64, +pub irq: __u16, +pub dma: __u8, +pub port: __u8, } -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_nl { -pub nl_family: __kernel_sa_family_t, -pub nl_pad: crate::ctypes::c_ushort, -pub nl_pid: __u32, -pub nl_groups: __u32, +pub struct ifla_bridge_id { +pub prio: [__u8; 2usize], +pub addr: [__u8; 6usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsghdr { -pub nlmsg_len: __u32, -pub nlmsg_type: __u16, -pub nlmsg_flags: __u16, -pub nlmsg_seq: __u32, -pub nlmsg_pid: __u32, +pub struct ifla_cacheinfo { +pub max_reasm_len: __u32, +pub tstamp: __u32, +pub reachable_time: __u32, +pub retrans_time: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsgerr { -pub error: crate::ctypes::c_int, -pub msg: nlmsghdr, +pub struct ifla_vlan_flags { +pub flags: __u32, +pub mask: __u32, } -impl nlmsgerr_attrs { -pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_qos_mapping { +pub from: __u32, +pub to: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tunnel_msg { +pub family: __u8, +pub flags: __u8, +pub reserved2: __u16, +pub ifindex: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vxlan_port_range { +pub low: __be16, +pub high: __be16, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_mac { +pub vf: __u32, +pub mac: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_broadcast { +pub broadcast: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan_info { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +pub vlan_proto: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_tx_rate { +pub vf: __u32, +pub rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rate { +pub vf: __u32, +pub min_tx_rate: __u32, +pub max_tx_rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_spoofchk { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_guid { +pub vf: __u32, +pub guid: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_link_state { +pub vf: __u32, +pub link_state: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rss_query_en { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_trust { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_port_vsi { +pub vsi_mgr_id: __u8, +pub vsi_type_id: [__u8; 3usize], +pub vsi_type_version: __u8, +pub pad: [__u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct if_stats_msg { +pub family: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub ifindex: __u32, +pub filter_mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_rmnet_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifaddrmsg { +pub ifa_family: __u8, +pub ifa_prefixlen: __u8, +pub ifa_flags: __u8, +pub ifa_scope: __u8, +pub ifa_index: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifa_cacheinfo { +pub ifa_prefered: __u32, +pub ifa_valid: __u32, +pub cstamp: __u32, +pub tstamp: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndmsg { +pub ndm_family: __u8, +pub ndm_pad1: __u8, +pub ndm_pad2: __u16, +pub ndm_ifindex: __s32, +pub ndm_state: __u16, +pub ndm_flags: __u8, +pub ndm_type: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nda_cacheinfo { +pub ndm_confirmed: __u32, +pub ndm_used: __u32, +pub ndm_updated: __u32, +pub ndm_refcnt: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_stats { +pub ndts_allocs: __u64, +pub ndts_destroys: __u64, +pub ndts_hash_grows: __u64, +pub ndts_res_failed: __u64, +pub ndts_lookups: __u64, +pub ndts_hits: __u64, +pub ndts_rcv_probes_mcast: __u64, +pub ndts_rcv_probes_ucast: __u64, +pub ndts_periodic_gc_runs: __u64, +pub ndts_forced_gc_runs: __u64, +pub ndts_table_fulls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndtmsg { +pub ndtm_family: __u8, +pub ndtm_pad1: __u8, +pub ndtm_pad2: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_config { +pub ndtc_key_len: __u16, +pub ndtc_entry_size: __u16, +pub ndtc_entries: __u32, +pub ndtc_last_flush: __u32, +pub ndtc_last_rand: __u32, +pub ndtc_hash_rnd: __u32, +pub ndtc_hash_mask: __u32, +pub ndtc_hash_chain_gc: __u32, +pub ndtc_proxy_qlen: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtattr { +pub rta_len: crate::ctypes::c_ushort, +pub rta_type: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtmsg { +pub rtm_family: crate::ctypes::c_uchar, +pub rtm_dst_len: crate::ctypes::c_uchar, +pub rtm_src_len: crate::ctypes::c_uchar, +pub rtm_tos: crate::ctypes::c_uchar, +pub rtm_table: crate::ctypes::c_uchar, +pub rtm_protocol: crate::ctypes::c_uchar, +pub rtm_scope: crate::ctypes::c_uchar, +pub rtm_type: crate::ctypes::c_uchar, +pub rtm_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnexthop { +pub rtnh_len: crate::ctypes::c_ushort, +pub rtnh_flags: crate::ctypes::c_uchar, +pub rtnh_hops: crate::ctypes::c_uchar, +pub rtnh_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug)] +pub struct rtvia { +pub rtvia_family: __kernel_sa_family_t, +pub rtvia_addr: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_cacheinfo { +pub rta_clntref: __u32, +pub rta_lastuse: __u32, +pub rta_expires: __s32, +pub rta_error: __u32, +pub rta_used: __u32, +pub rta_id: __u32, +pub rta_ts: __u32, +pub rta_tsage: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rta_session { +pub proto: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub u: rta_session__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { +pub sport: __u16, +pub dport: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { +pub type_: __u8, +pub code: __u8, +pub ident: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_mfc_stats { +pub mfcs_packets: __u64, +pub mfcs_bytes: __u64, +pub mfcs_wrong_if: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtgenmsg { +pub rtgen_family: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifinfomsg { +pub ifi_family: crate::ctypes::c_uchar, +pub __ifi_pad: crate::ctypes::c_uchar, +pub ifi_type: crate::ctypes::c_ushort, +pub ifi_index: crate::ctypes::c_int, +pub ifi_flags: crate::ctypes::c_uint, +pub ifi_change: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefixmsg { +pub prefix_family: crate::ctypes::c_uchar, +pub prefix_pad1: crate::ctypes::c_uchar, +pub prefix_pad2: crate::ctypes::c_ushort, +pub prefix_ifindex: crate::ctypes::c_int, +pub prefix_type: crate::ctypes::c_uchar, +pub prefix_len: crate::ctypes::c_uchar, +pub prefix_flags: crate::ctypes::c_uchar, +pub prefix_pad3: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefix_cacheinfo { +pub preferred_time: __u32, +pub valid_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcmsg { +pub tcm_family: crate::ctypes::c_uchar, +pub tcm__pad1: crate::ctypes::c_uchar, +pub tcm__pad2: crate::ctypes::c_ushort, +pub tcm_ifindex: crate::ctypes::c_int, +pub tcm_handle: __u32, +pub tcm_parent: __u32, +pub tcm_info: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nduseroptmsg { +pub nduseropt_family: crate::ctypes::c_uchar, +pub nduseropt_pad1: crate::ctypes::c_uchar, +pub nduseropt_opts_len: crate::ctypes::c_ushort, +pub nduseropt_ifindex: crate::ctypes::c_int, +pub nduseropt_icmp_type: __u8, +pub nduseropt_icmp_code: __u8, +pub nduseropt_pad2: crate::ctypes::c_ushort, +pub nduseropt_pad3: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcamsg { +pub tca_family: crate::ctypes::c_uchar, +pub tca__pad1: crate::ctypes::c_uchar, +pub tca__pad2: crate::ctypes::c_ushort, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const NETLINK_ROUTE: u32 = 0; +pub const NETLINK_UNUSED: u32 = 1; +pub const NETLINK_USERSOCK: u32 = 2; +pub const NETLINK_FIREWALL: u32 = 3; +pub const NETLINK_SOCK_DIAG: u32 = 4; +pub const NETLINK_NFLOG: u32 = 5; +pub const NETLINK_XFRM: u32 = 6; +pub const NETLINK_SELINUX: u32 = 7; +pub const NETLINK_ISCSI: u32 = 8; +pub const NETLINK_AUDIT: u32 = 9; +pub const NETLINK_FIB_LOOKUP: u32 = 10; +pub const NETLINK_CONNECTOR: u32 = 11; +pub const NETLINK_NETFILTER: u32 = 12; +pub const NETLINK_IP6_FW: u32 = 13; +pub const NETLINK_DNRTMSG: u32 = 14; +pub const NETLINK_KOBJECT_UEVENT: u32 = 15; +pub const NETLINK_GENERIC: u32 = 16; +pub const NETLINK_SCSITRANSPORT: u32 = 18; +pub const NETLINK_ECRYPTFS: u32 = 19; +pub const NETLINK_RDMA: u32 = 20; +pub const NETLINK_CRYPTO: u32 = 21; +pub const NETLINK_SMC: u32 = 22; +pub const NETLINK_INET_DIAG: u32 = 4; +pub const MAX_LINKS: u32 = 32; +pub const NLM_F_REQUEST: u32 = 1; +pub const NLM_F_MULTI: u32 = 2; +pub const NLM_F_ACK: u32 = 4; +pub const NLM_F_ECHO: u32 = 8; +pub const NLM_F_DUMP_INTR: u32 = 16; +pub const NLM_F_DUMP_FILTERED: u32 = 32; +pub const NLM_F_ROOT: u32 = 256; +pub const NLM_F_MATCH: u32 = 512; +pub const NLM_F_ATOMIC: u32 = 1024; +pub const NLM_F_DUMP: u32 = 768; +pub const NLM_F_REPLACE: u32 = 256; +pub const NLM_F_EXCL: u32 = 512; +pub const NLM_F_CREATE: u32 = 1024; +pub const NLM_F_APPEND: u32 = 2048; +pub const NLM_F_NONREC: u32 = 256; +pub const NLM_F_BULK: u32 = 512; +pub const NLM_F_CAPPED: u32 = 256; +pub const NLM_F_ACK_TLVS: u32 = 512; +pub const NLMSG_ALIGNTO: u32 = 4; +pub const NLMSG_NOOP: u32 = 1; +pub const NLMSG_ERROR: u32 = 2; +pub const NLMSG_DONE: u32 = 3; +pub const NLMSG_OVERRUN: u32 = 4; +pub const NLMSG_MIN_TYPE: u32 = 16; +pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; +pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; +pub const NETLINK_PKTINFO: u32 = 3; +pub const NETLINK_BROADCAST_ERROR: u32 = 4; +pub const NETLINK_NO_ENOBUFS: u32 = 5; +pub const NETLINK_RX_RING: u32 = 6; +pub const NETLINK_TX_RING: u32 = 7; +pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; +pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; +pub const NETLINK_CAP_ACK: u32 = 10; +pub const NETLINK_EXT_ACK: u32 = 11; +pub const NETLINK_GET_STRICT_CHK: u32 = 12; +pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; +pub const NET_MAJOR: u32 = 36; +pub const NLA_F_NESTED: u32 = 32768; +pub const NLA_F_NET_BYTEORDER: u32 = 16384; +pub const NLA_TYPE_MASK: i32 = -49153; +pub const NLA_ALIGNTO: u32 = 4; +pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; +pub const MACVLAN_FLAG_NODST: u32 = 2; +pub const IPVLAN_F_PRIVATE: u32 = 1; +pub const IPVLAN_F_VEPA: u32 = 2; +pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; +pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; +pub const MAX_VLAN_LIST_LEN: u32 = 1; +pub const PORT_PROFILE_MAX: u32 = 40; +pub const PORT_UUID_MAX: u32 = 16; +pub const PORT_SELF_VF: i32 = -1; +pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; +pub const XDP_FLAGS_SKB_MODE: u32 = 2; +pub const XDP_FLAGS_DRV_MODE: u32 = 4; +pub const XDP_FLAGS_HW_MODE: u32 = 8; +pub const XDP_FLAGS_REPLACE: u32 = 16; +pub const XDP_FLAGS_MODES: u32 = 14; +pub const XDP_FLAGS_MASK: u32 = 31; +pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; +pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; +pub const IFA_F_SECONDARY: u32 = 1; +pub const IFA_F_TEMPORARY: u32 = 1; +pub const IFA_F_NODAD: u32 = 2; +pub const IFA_F_OPTIMISTIC: u32 = 4; +pub const IFA_F_DADFAILED: u32 = 8; +pub const IFA_F_HOMEADDRESS: u32 = 16; +pub const IFA_F_DEPRECATED: u32 = 32; +pub const IFA_F_TENTATIVE: u32 = 64; +pub const IFA_F_PERMANENT: u32 = 128; +pub const IFA_F_MANAGETEMPADDR: u32 = 256; +pub const IFA_F_NOPREFIXROUTE: u32 = 512; +pub const IFA_F_MCAUTOJOIN: u32 = 1024; +pub const IFA_F_STABLE_PRIVACY: u32 = 2048; +pub const IFAPROT_UNSPEC: u32 = 0; +pub const IFAPROT_KERNEL_LO: u32 = 1; +pub const IFAPROT_KERNEL_RA: u32 = 2; +pub const IFAPROT_KERNEL_LL: u32 = 3; +pub const NTF_USE: u32 = 1; +pub const NTF_SELF: u32 = 2; +pub const NTF_MASTER: u32 = 4; +pub const NTF_PROXY: u32 = 8; +pub const NTF_EXT_LEARNED: u32 = 16; +pub const NTF_OFFLOADED: u32 = 32; +pub const NTF_STICKY: u32 = 64; +pub const NTF_ROUTER: u32 = 128; +pub const NTF_EXT_MANAGED: u32 = 1; +pub const NTF_EXT_LOCKED: u32 = 2; +pub const NUD_INCOMPLETE: u32 = 1; +pub const NUD_REACHABLE: u32 = 2; +pub const NUD_STALE: u32 = 4; +pub const NUD_DELAY: u32 = 8; +pub const NUD_PROBE: u32 = 16; +pub const NUD_FAILED: u32 = 32; +pub const NUD_NOARP: u32 = 64; +pub const NUD_PERMANENT: u32 = 128; +pub const NUD_NONE: u32 = 0; +pub const RTNL_FAMILY_IPMR: u32 = 128; +pub const RTNL_FAMILY_IP6MR: u32 = 129; +pub const RTNL_FAMILY_MAX: u32 = 129; +pub const RTA_ALIGNTO: u32 = 4; +pub const RTPROT_UNSPEC: u32 = 0; +pub const RTPROT_REDIRECT: u32 = 1; +pub const RTPROT_KERNEL: u32 = 2; +pub const RTPROT_BOOT: u32 = 3; +pub const RTPROT_STATIC: u32 = 4; +pub const RTPROT_GATED: u32 = 8; +pub const RTPROT_RA: u32 = 9; +pub const RTPROT_MRT: u32 = 10; +pub const RTPROT_ZEBRA: u32 = 11; +pub const RTPROT_BIRD: u32 = 12; +pub const RTPROT_DNROUTED: u32 = 13; +pub const RTPROT_XORP: u32 = 14; +pub const RTPROT_NTK: u32 = 15; +pub const RTPROT_DHCP: u32 = 16; +pub const RTPROT_MROUTED: u32 = 17; +pub const RTPROT_KEEPALIVED: u32 = 18; +pub const RTPROT_BABEL: u32 = 42; +pub const RTPROT_OPENR: u32 = 99; +pub const RTPROT_BGP: u32 = 186; +pub const RTPROT_ISIS: u32 = 187; +pub const RTPROT_OSPF: u32 = 188; +pub const RTPROT_RIP: u32 = 189; +pub const RTPROT_EIGRP: u32 = 192; +pub const RTM_F_NOTIFY: u32 = 256; +pub const RTM_F_CLONED: u32 = 512; +pub const RTM_F_EQUALIZE: u32 = 1024; +pub const RTM_F_PREFIX: u32 = 2048; +pub const RTM_F_LOOKUP_TABLE: u32 = 4096; +pub const RTM_F_FIB_MATCH: u32 = 8192; +pub const RTM_F_OFFLOAD: u32 = 16384; +pub const RTM_F_TRAP: u32 = 32768; +pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; +pub const RTNH_F_DEAD: u32 = 1; +pub const RTNH_F_PERVASIVE: u32 = 2; +pub const RTNH_F_ONLINK: u32 = 4; +pub const RTNH_F_OFFLOAD: u32 = 8; +pub const RTNH_F_LINKDOWN: u32 = 16; +pub const RTNH_F_UNRESOLVED: u32 = 32; +pub const RTNH_F_TRAP: u32 = 64; +pub const RTNH_COMPARE_MASK: u32 = 89; +pub const RTNH_ALIGNTO: u32 = 4; +pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; +pub const RTAX_FEATURE_ECN: u32 = 1; +pub const RTAX_FEATURE_SACK: u32 = 2; +pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; +pub const RTAX_FEATURE_ALLFRAG: u32 = 8; +pub const RTAX_FEATURE_MASK: u32 = 15; +pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; +pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; +pub const RTMGRP_LINK: u32 = 1; +pub const RTMGRP_NOTIFY: u32 = 2; +pub const RTMGRP_NEIGH: u32 = 4; +pub const RTMGRP_TC: u32 = 8; +pub const RTMGRP_IPV4_IFADDR: u32 = 16; +pub const RTMGRP_IPV4_MROUTE: u32 = 32; +pub const RTMGRP_IPV4_ROUTE: u32 = 64; +pub const RTMGRP_IPV4_RULE: u32 = 128; +pub const RTMGRP_IPV6_IFADDR: u32 = 256; +pub const RTMGRP_IPV6_MROUTE: u32 = 512; +pub const RTMGRP_IPV6_ROUTE: u32 = 1024; +pub const RTMGRP_IPV6_IFINFO: u32 = 2048; +pub const RTMGRP_DECnet_IFADDR: u32 = 4096; +pub const RTMGRP_DECnet_ROUTE: u32 = 16384; +pub const RTMGRP_IPV6_PREFIX: u32 = 131072; +pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; +pub const RTEXT_FILTER_VF: u32 = 1; +pub const RTEXT_FILTER_BRVLAN: u32 = 2; +pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; +pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; +pub const RTEXT_FILTER_MRP: u32 = 16; +pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; +pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; +pub const RTEXT_FILTER_MST: u32 = 128; +pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; +pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; +pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; +pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; +pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; +pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; +pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; +pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; +pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; +pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; +pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; +pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; +pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; +pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; +pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; +pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; +pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; +pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; +pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; +pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; +pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; +pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; +pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; +pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; +pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; +pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; +pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; +pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; +pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; +pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; +pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; +pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; +pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; +pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; +pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; +pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; +pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; +pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; +pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; +pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; +pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; +pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; +pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; +pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; +pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; +pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; +pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; +pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; +pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; +pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; +pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; +pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; +pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; +pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; +pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; +pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; +pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; +pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; +pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; +pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; +pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; +pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; +pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; +pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; +pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; +pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; +pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; +pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; +pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; +pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; +pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; +pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; +pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; +pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; +pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; +pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; +pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; +pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; +pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; +pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; +pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; +pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; +pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; +pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; +pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; +pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; +pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; +pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; +pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; +pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; +pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; +pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; +pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; +pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; +pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; +pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; +pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; +pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; +pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; +pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; +pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; +pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; +pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; +pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; +pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; +pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; +pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; +pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; +pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; +pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; +pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; +pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; +pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; +pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; +pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; +pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; +pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; +pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; +pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; +pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; +pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; +pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; +pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; +pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; +pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; +pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; +pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; +pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; +pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; +pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; +pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; +pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; +pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; +pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; +pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; +pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; +pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; +pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; +pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; +pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; +pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; +pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; +pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; +pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; +pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; +pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; +pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; +pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; +pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; +pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; +pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; +pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; +pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; +pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; +pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; +pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; +pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; +pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; +pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; +pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; +pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; +pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; +pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; +pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; +pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; +pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; +pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; +pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; +pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; +pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; +pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; +pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; +pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; +pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; +pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; +pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; +pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; +pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; +pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; +pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; +pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; +pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; +pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; +pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; +pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; +pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; +pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; +pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; +pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; +pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; +pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; +pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; +pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; +pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; +pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; +pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; +pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; +pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; +pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; +pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; +pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; +pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; +pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; +pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; +pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; +pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; +pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; +pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; +pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; +pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; +pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; +pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; +pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; +pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; +pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; +pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; +pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; +pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; +pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; +pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; +pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; +pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; +pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; +pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; +pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; +pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; +pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; +pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; +pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; +pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; +pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; +pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; +pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; +pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; +pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; +pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; +pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; +pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; +pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; +pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; +pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; +pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; +pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; +pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; +pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; +pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; +pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; +pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; +pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; +pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; +pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; +pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; +pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; +pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; +pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; +pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; +pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; +pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; +pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; +pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; +pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; +pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; +pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; +pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; +pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; +pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; +pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; +pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; +pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; +pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; +pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; +pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; +pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; +pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; +pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; +pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; +pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; +pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; +pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; +pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; +pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; +pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; +pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; +pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; +pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; +pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; +pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; +pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; +pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; +pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; +pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; +pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; +pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; +pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; +pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; +pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; +pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; +pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; +pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; +pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; +pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; +pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; +pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; +pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; +pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; +pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; +pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; +pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; +pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; +pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; +pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; +pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; +pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; +pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; +pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; +pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; +pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; +pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; +pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; +pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; +pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; +pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; +pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; +pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; +pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; +pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; +pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; +pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; +pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; +pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; +pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; +pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; +pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; +pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; +pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; +pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; +pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; +pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; +pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; +pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; +pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; +pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; +pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; +pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; +pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; +pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; +pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; +pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; +pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; +pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; +pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; +pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; +pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; +pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; +pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; +pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; +pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; +pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; +pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; +pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; +pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; +pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; +pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; +pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; +pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; +pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; +pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; +pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; +pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; +pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; +pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; +pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; +pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; +pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; +pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; +pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; +pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; +pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; +pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; +pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; +pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; +pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; +pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; +pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; +pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; +pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; +pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; +pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; +pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; +pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; +pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; +pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; +pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; +pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; +pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; +pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; +pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; +pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; +pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; +pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; +pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; +pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; +pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; +pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; +pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; +pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; +pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; +pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; +pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; +pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; +pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; +pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; +pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; +pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; +pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; +pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; +pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; +pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; +pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; +pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; +pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; +pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; +pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; +pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; +pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; +pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; +pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; +pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; +pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; +pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; +pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; +pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; +pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; +pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; +pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; +pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; +pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; +pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; +pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; +pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; +pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; +pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; +pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; +pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; +pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; +pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; +pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; +pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; +pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; +pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; +pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; +pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; +pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; +pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; +pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; +pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; +pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; +pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; +pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; +pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; +pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; +pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; +pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; +pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; +pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; +pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; +pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; +pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; +pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; +pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; +pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; +pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; +pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; +pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; +pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; +pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; +pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; +pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; +pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; +pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; +pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; +pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; +pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; +pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; +pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; +pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; +pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; +pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; +pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; +pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; +pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; +pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; +pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; +pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; +pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; +pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; +pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; +pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; +pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; +pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; +pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; +pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; +pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; +pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; +pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; +pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; +pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; +pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; +pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; +pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; +pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; +pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; +pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; +pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; +pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; +pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; +pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; +pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; +pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; +pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; +pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; +pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; +pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; +pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; +pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; +pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; +pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; +pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; +pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; +pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; +pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; +pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; +pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; +pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; +pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; +pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; +pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; +pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; +pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; +pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; +pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; +pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; +pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; +pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; +pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; +pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; +pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; +pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; +pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; +pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; +pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; +pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; +pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; +pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; +pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; +pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; +pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; +pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; +pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; +pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; +pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; +pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; +pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; +pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; +pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; +pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; +pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; +pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; +pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; +pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; +pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; +pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; +pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; +pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; +pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; +pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; +pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; +pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; +pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; +pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; +pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; +pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; +pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; +pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; +pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; +pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; +pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; +pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; +pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; +pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; +pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; +pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; +pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; +pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; +pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; +pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; +pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; +pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; +pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; +pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; +pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; +pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; +pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; +pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; +pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; +pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; +pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; +pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; +pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; +pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; +pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; +pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; +pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; +pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; +pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; +pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; +pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; +pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; +pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; +pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; +pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; +pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; +pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; +pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; +pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; +pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; +pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; +pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; +pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; +pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; +pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; +pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; +pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; +pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; +pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; +pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; +pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; +pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; +pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; +pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; +pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; +pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; +pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; +pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; +pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; +pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; +pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; +pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; +pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; +pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; +pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; +pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; +pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; +pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; +pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; +pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; +pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; +pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; +pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; +pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; +pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; +pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; +pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; +pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; +pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; +pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; +pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; +pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; +pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; +pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; +pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; +pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; +pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; +pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; +pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; +pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; +pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; +pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; +pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; +pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; +pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; +pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; +pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; +pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; +pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; +pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; +pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; +pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; +pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; +pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; +pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; +pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; +pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; +pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; +pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; +pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; +pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; +pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; +pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; +pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; +pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; +pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; +pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; +pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -365,29 +1500,6 @@ NLMSGERR_ATTR_MISS_NEST = 6, __NLMSGERR_ATTR_MAX = 7, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_pktinfo { -pub group: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_req { -pub nm_block_size: crate::ctypes::c_uint, -pub nm_block_nr: crate::ctypes::c_uint, -pub nm_frame_size: crate::ctypes::c_uint, -pub nm_frame_nr: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_hdr { -pub nm_status: crate::ctypes::c_uint, -pub nm_len: crate::ctypes::c_uint, -pub nm_group: __u32, -pub nm_pid: __u32, -pub nm_uid: __u32, -pub nm_gid: __u32, -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -398,8 +1510,6 @@ NL_MMAP_STATUS_COPY = 3, NL_MMAP_STATUS_SKIP = 4, } -pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; -pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -407,208 +1517,46 @@ NETLINK_UNCONNECTED = 0, NETLINK_CONNECTED = 1, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nlattr { -pub nla_len: __u16, -pub nla_type: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nla_bitfield32 { -pub value: __u32, -pub selector: __u32, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_attribute_type { -NL_ATTR_TYPE_INVALID = 0, -NL_ATTR_TYPE_FLAG = 1, -NL_ATTR_TYPE_U8 = 2, -NL_ATTR_TYPE_U16 = 3, -NL_ATTR_TYPE_U32 = 4, -NL_ATTR_TYPE_U64 = 5, -NL_ATTR_TYPE_S8 = 6, -NL_ATTR_TYPE_S16 = 7, -NL_ATTR_TYPE_S32 = 8, -NL_ATTR_TYPE_S64 = 9, -NL_ATTR_TYPE_BINARY = 10, -NL_ATTR_TYPE_STRING = 11, -NL_ATTR_TYPE_NUL_STRING = 12, -NL_ATTR_TYPE_NESTED = 13, -NL_ATTR_TYPE_NESTED_ARRAY = 14, -NL_ATTR_TYPE_BITFIELD32 = 15, -} -impl netlink_policy_type_attr { -pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_policy_type_attr { -NL_POLICY_TYPE_ATTR_UNSPEC = 0, -NL_POLICY_TYPE_ATTR_TYPE = 1, -NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, -NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, -NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, -NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, -NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, -NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, -NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, -NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, -NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, -NL_POLICY_TYPE_ATTR_PAD = 11, -NL_POLICY_TYPE_ATTR_MASK = 12, -__NL_POLICY_TYPE_ATTR_MAX = 13, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats { -pub rx_packets: __u32, -pub tx_packets: __u32, -pub rx_bytes: __u32, -pub tx_bytes: __u32, -pub rx_errors: __u32, -pub tx_errors: __u32, -pub rx_dropped: __u32, -pub tx_dropped: __u32, -pub multicast: __u32, -pub collisions: __u32, -pub rx_length_errors: __u32, -pub rx_over_errors: __u32, -pub rx_crc_errors: __u32, -pub rx_frame_errors: __u32, -pub rx_fifo_errors: __u32, -pub rx_missed_errors: __u32, -pub tx_aborted_errors: __u32, -pub tx_carrier_errors: __u32, -pub tx_fifo_errors: __u32, -pub tx_heartbeat_errors: __u32, -pub tx_window_errors: __u32, -pub rx_compressed: __u32, -pub tx_compressed: __u32, -pub rx_nohandler: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, -pub collisions: __u64, -pub rx_length_errors: __u64, -pub rx_over_errors: __u64, -pub rx_crc_errors: __u64, -pub rx_frame_errors: __u64, -pub rx_fifo_errors: __u64, -pub rx_missed_errors: __u64, -pub tx_aborted_errors: __u64, -pub tx_carrier_errors: __u64, -pub tx_fifo_errors: __u64, -pub tx_heartbeat_errors: __u64, -pub tx_window_errors: __u64, -pub rx_compressed: __u64, -pub tx_compressed: __u64, -pub rx_nohandler: __u64, -pub rx_otherhost_dropped: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_hw_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, +pub enum netlink_attribute_type { +NL_ATTR_TYPE_INVALID = 0, +NL_ATTR_TYPE_FLAG = 1, +NL_ATTR_TYPE_U8 = 2, +NL_ATTR_TYPE_U16 = 3, +NL_ATTR_TYPE_U32 = 4, +NL_ATTR_TYPE_U64 = 5, +NL_ATTR_TYPE_S8 = 6, +NL_ATTR_TYPE_S16 = 7, +NL_ATTR_TYPE_S32 = 8, +NL_ATTR_TYPE_S64 = 9, +NL_ATTR_TYPE_BINARY = 10, +NL_ATTR_TYPE_STRING = 11, +NL_ATTR_TYPE_NUL_STRING = 12, +NL_ATTR_TYPE_NESTED = 13, +NL_ATTR_TYPE_NESTED_ARRAY = 14, +NL_ATTR_TYPE_BITFIELD32 = 15, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_ifmap { -pub mem_start: __u64, -pub mem_end: __u64, -pub base_addr: __u64, -pub irq: __u16, -pub dma: __u8, -pub port: __u8, +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_policy_type_attr { +NL_POLICY_TYPE_ATTR_UNSPEC = 0, +NL_POLICY_TYPE_ATTR_TYPE = 1, +NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, +NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, +NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, +NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, +NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, +NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, +NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, +NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, +NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, +NL_POLICY_TYPE_ATTR_PAD = 11, +NL_POLICY_TYPE_ATTR_MASK = 12, +__NL_POLICY_TYPE_ATTR_MAX = 13, } -pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; -pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; -pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; -pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; -pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; -pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; -pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; -pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; -pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; -pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; -pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; -pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; -pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; -pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; -pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; -pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; -pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; -pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; -pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; -pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; -pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; -pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; -pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; -pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; -pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; -pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; -pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; -pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; -pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; -pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; -pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; -pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; -pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; -pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; -pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; -pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; -pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; -pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; -pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; -pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; -pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; -pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; -pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; -pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; -pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; -pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; -pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; -pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; -pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; -pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; -pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; -pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; -pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; -pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; -pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; -pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; -pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; -pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; -pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; -pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; -pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; -pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; -pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; -pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; -pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -680,11 +1628,6 @@ IFLA_GRO_IPV4_MAX_SIZE = 64, __IFLA_MAX = 65, } -pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; -pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; -pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; -pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; -pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -694,9 +1637,6 @@ IFLA_PROTO_DOWN_REASON_VALUE = 2, __IFLA_PROTO_DOWN_REASON_CNT = 3, } -pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; -pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; -pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -705,17 +1645,6 @@ IFLA_INET_CONF = 1, __IFLA_INET_MAX = 2, } -pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; -pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; -pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; -pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; -pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; -pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; -pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; -pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; -pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; -pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; -pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -741,55 +1670,6 @@ IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, IN6_ADDR_GEN_MODE_RANDOM = 3, } -pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; -pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; -pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; -pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; -pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; -pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; -pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; -pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; -pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; -pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; -pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; -pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; -pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; -pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; -pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; -pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; -pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; -pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; -pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; -pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; -pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; -pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; -pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; -pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; -pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; -pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; -pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; -pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; -pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; -pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; -pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; -pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; -pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; -pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; -pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; -pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; -pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; -pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; -pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; -pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; -pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; -pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; -pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; -pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; -pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; -pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; -pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; -pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; -pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -826,83 +1706,31 @@ IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29, IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30, IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, -IFLA_BR_MCAST_QUERIER_INTVL = 32, -IFLA_BR_MCAST_QUERY_INTVL = 33, -IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, -IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, -IFLA_BR_NF_CALL_IPTABLES = 36, -IFLA_BR_NF_CALL_IP6TABLES = 37, -IFLA_BR_NF_CALL_ARPTABLES = 38, -IFLA_BR_VLAN_DEFAULT_PVID = 39, -IFLA_BR_PAD = 40, -IFLA_BR_VLAN_STATS_ENABLED = 41, -IFLA_BR_MCAST_STATS_ENABLED = 42, -IFLA_BR_MCAST_IGMP_VERSION = 43, -IFLA_BR_MCAST_MLD_VERSION = 44, -IFLA_BR_VLAN_STATS_PER_PORT = 45, -IFLA_BR_MULTI_BOOLOPT = 46, -IFLA_BR_MCAST_QUERIER_STATE = 47, -__IFLA_BR_MAX = 48, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_bridge_id { -pub prio: [__u8; 2usize], -pub addr: [__u8; 6usize], -} -pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; -pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -BRIDGE_MODE_UNSPEC = 0, -BRIDGE_MODE_HAIRPIN = 1, -} -pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; -pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; -pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; -pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; -pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; -pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; -pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; -pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; -pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; -pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; -pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; -pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; -pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; -pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; -pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; -pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; -pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; -pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; -pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; -pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; -pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; -pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; -pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; -pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; -pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; -pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; -pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; -pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; -pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; -pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; -pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; -pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; -pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; -pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; -pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; -pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; -pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; -pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; -pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; -pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; -pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; -pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +IFLA_BR_MCAST_QUERIER_INTVL = 32, +IFLA_BR_MCAST_QUERY_INTVL = 33, +IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, +IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, +IFLA_BR_NF_CALL_IPTABLES = 36, +IFLA_BR_NF_CALL_IP6TABLES = 37, +IFLA_BR_NF_CALL_ARPTABLES = 38, +IFLA_BR_VLAN_DEFAULT_PVID = 39, +IFLA_BR_PAD = 40, +IFLA_BR_VLAN_STATS_ENABLED = 41, +IFLA_BR_MCAST_STATS_ENABLED = 42, +IFLA_BR_MCAST_IGMP_VERSION = 43, +IFLA_BR_MCAST_MLD_VERSION = 44, +IFLA_BR_VLAN_STATS_PER_PORT = 45, +IFLA_BR_MULTI_BOOLOPT = 46, +IFLA_BR_MCAST_QUERIER_STATE = 47, +__IFLA_BR_MAX = 48, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +BRIDGE_MODE_UNSPEC = 0, +BRIDGE_MODE_HAIRPIN = 1, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -952,21 +1780,6 @@ IFLA_BRPORT_MCAST_MAX_GROUPS = 42, __IFLA_BRPORT_MAX = 43, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_cacheinfo { -pub max_reasm_len: __u32, -pub tstamp: __u32, -pub reachable_time: __u32, -pub retrans_time: __u32, -} -pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; -pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; -pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; -pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; -pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; -pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; -pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -979,13 +1792,6 @@ IFLA_INFO_SLAVE_DATA = 5, __IFLA_INFO_MAX = 6, } -pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; -pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; -pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; -pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; -pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; -pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; -pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -998,15 +1804,6 @@ IFLA_VLAN_PROTOCOL = 5, __IFLA_VLAN_MAX = 6, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; -pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; -pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1015,22 +1812,6 @@ IFLA_VLAN_QOS_MAPPING = 1, __IFLA_VLAN_QOS_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_qos_mapping { -pub from: __u32, -pub to: __u32, -} -pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; -pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; -pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; -pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; -pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; -pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; -pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; -pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; -pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; -pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1065,9 +1846,6 @@ MACVLAN_MACADDR_FLUSH = 2, MACVLAN_MACADDR_SET = 3, } -pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; -pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; -pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1076,9 +1854,6 @@ IFLA_VRF_TABLE = 1, __IFLA_VRF_MAX = 2, } -pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; -pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; -pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1087,23 +1862,6 @@ IFLA_VRF_PORT_TABLE = 1, __IFLA_VRF_PORT_MAX = 2, } -pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; -pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; -pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; -pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; -pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; -pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; -pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; -pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; -pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; -pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; -pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; -pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; -pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; -pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; -pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; -pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; -pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1126,11 +1884,6 @@ IFLA_MACSEC_OFFLOAD = 15, __IFLA_MACSEC_MAX = 16, } -pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; -pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; -pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; -pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; -pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1141,9 +1894,6 @@ IFLA_XFRM_COLLECT_METADATA = 3, __IFLA_XFRM_MAX = 4, } -impl macsec_validation_type { -pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1153,9 +1903,6 @@ MACSEC_VALIDATE_STRICT = 2, __MACSEC_VALIDATE_END = 3, } -impl macsec_offload { -pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1165,10 +1912,6 @@ MACSEC_OFFLOAD_MAC = 2, __MACSEC_OFFLOAD_END = 3, } -pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; -pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; -pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; -pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1187,25 +1930,6 @@ IPVLAN_MODE_L3S = 2, IPVLAN_MODE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tunnel_msg { -pub family: __u8, -pub flags: __u8, -pub reserved2: __u16, -pub ifindex: __u32, -} -pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; -pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; -pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; -pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; -pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; -pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; -pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; -pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; -pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1222,13 +1946,6 @@ VNIFILTER_ENTRY_STATS_PAD = 9, __VNIFILTER_ENTRY_STATS_MAX = 10, } -pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; -pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; -pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; -pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; -pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; -pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1241,9 +1958,6 @@ VXLAN_VNIFILTER_ENTRY_STATS = 5, __VXLAN_VNIFILTER_ENTRY_MAX = 6, } -pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; -pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1252,38 +1966,6 @@ VXLAN_VNIFILTER_ENTRY = 1, __VXLAN_VNIFILTER_MAX = 2, } -pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; -pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; -pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; -pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; -pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; -pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; -pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; -pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; -pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; -pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; -pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; -pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; -pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; -pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; -pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; -pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; -pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; -pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; -pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; -pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; -pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; -pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; -pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; -pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; -pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; -pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; -pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; -pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; -pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; -pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1321,15 +2003,6 @@ IFLA_VXLAN_VNIFILTER = 30, __IFLA_VXLAN_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vxlan_port_range { -pub low: __be16, -pub high: __be16, -} -impl ifla_vxlan_df { -pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1339,22 +2012,6 @@ VXLAN_DF_INHERIT = 2, __VXLAN_DF_END = 3, } -pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; -pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; -pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; -pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; -pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; -pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; -pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; -pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; -pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; -pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; -pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; -pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; -pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; -pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1376,9 +2033,6 @@ IFLA_GENEVE_INNER_PROTO_INHERIT = 14, __IFLA_GENEVE_MAX = 15, } -impl ifla_geneve_df { -pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1388,12 +2042,6 @@ GENEVE_DF_INHERIT = 2, __GENEVE_DF_END = 3, } -pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; -pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; -pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; -pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; -pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; -pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1405,9 +2053,6 @@ IFLA_BAREUDP_MULTIPROTO_MODE = 4, __IFLA_BAREUDP_MAX = 5, } -pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; -pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; -pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1423,60 +2068,19 @@ GTP_ROLE_GGSN = 0, GTP_ROLE_SGSN = 1, } -pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; -pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; -pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; -pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; -pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; -pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; -pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; -pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub enum _bindgen_ty_25 { IFLA_GTP_UNSPEC = 0, IFLA_GTP_FD0 = 1, -IFLA_GTP_FD1 = 2, -IFLA_GTP_PDP_HASHSIZE = 3, -IFLA_GTP_ROLE = 4, -IFLA_GTP_CREATE_SOCKETS = 5, -IFLA_GTP_RESTART_COUNT = 6, -__IFLA_GTP_MAX = 7, -} -pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; -pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; -pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; -pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; -pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; -pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; -pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; -pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; -pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; -pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; -pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; -pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; -pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; -pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; -pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; -pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; -pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; -pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; -pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; -pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; -pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; -pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; -pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; -pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; -pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; -pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; -pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; -pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; -pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; -pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; -pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; -pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; -pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +IFLA_GTP_FD1 = 2, +IFLA_GTP_PDP_HASHSIZE = 3, +IFLA_GTP_ROLE = 4, +IFLA_GTP_CREATE_SOCKETS = 5, +IFLA_GTP_RESTART_COUNT = 6, +__IFLA_GTP_MAX = 7, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1515,13 +2119,6 @@ IFLA_BOND_NS_IP6_TARGET = 31, __IFLA_BOND_MAX = 32, } -pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; -pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; -pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; -pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; -pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1534,17 +2131,6 @@ IFLA_BOND_AD_INFO_PARTNER_MAC = 5, __IFLA_BOND_AD_INFO_MAX = 6, } -pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; -pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; -pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; -pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; -pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; -pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; -pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; -pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; -pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1561,9 +2147,6 @@ IFLA_BOND_SLAVE_PRIO = 9, __IFLA_BOND_SLAVE_MAX = 10, } -pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; -pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; -pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1572,21 +2155,6 @@ IFLA_VF_INFO = 1, __IFLA_VF_INFO_MAX = 2, } -pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; -pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; -pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; -pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; -pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; -pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; -pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; -pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; -pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; -pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; -pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; -pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; -pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; -pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; -pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1607,27 +2175,6 @@ IFLA_VF_BROADCAST = 13, __IFLA_VF_MAX = 14, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_mac { -pub vf: __u32, -pub mac: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_broadcast { -pub broadcast: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -} -pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; -pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; -pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1636,43 +2183,6 @@ IFLA_VF_VLAN_INFO = 1, __IFLA_VF_VLAN_INFO_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan_info { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -pub vlan_proto: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_tx_rate { -pub vf: __u32, -pub rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rate { -pub vf: __u32, -pub min_tx_rate: __u32, -pub max_tx_rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_spoofchk { -pub vf: __u32, -pub setting: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_guid { -pub vf: __u32, -pub guid: __u64, -} -pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; -pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; -pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; -pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1682,28 +2192,6 @@ IFLA_VF_LINK_STATE_DISABLE = 2, __IFLA_VF_LINK_STATE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_link_state { -pub vf: __u32, -pub link_state: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rss_query_en { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; -pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; -pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; -pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; -pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; -pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; -pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; -pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; -pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; -pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1719,15 +2207,6 @@ IFLA_VF_STATS_TX_DROPPED = 8, __IFLA_VF_STATS_MAX = 9, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_trust { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; -pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; -pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1736,15 +2215,6 @@ IFLA_VF_PORT = 1, __IFLA_VF_PORT_MAX = 2, } -pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; -pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; -pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; -pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; -pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; -pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; -pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; -pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; -pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1759,10 +2229,6 @@ IFLA_PORT_RESPONSE = 7, __IFLA_PORT_MAX = 8, } -pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; -pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; -pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; -pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1772,19 +2238,6 @@ PORT_REQUEST_ASSOCIATE = 2, PORT_REQUEST_DISASSOCIATE = 3, } -pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; -pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; -pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; -pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; -pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; -pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; -pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; -pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; -pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; -pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; -pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1803,19 +2256,6 @@ PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, PORT_PROFILE_RESPONSE_ERROR = 261, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_port_vsi { -pub vsi_mgr_id: __u8, -pub vsi_type_id: [__u8; 3usize], -pub vsi_type_version: __u8, -pub pad: [__u8; 3usize], -} -pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; -pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; -pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; -pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; -pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1826,8 +2266,6 @@ IFLA_IPOIB_UMCAST = 3, __IFLA_IPOIB_MAX = 4, } -pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; -pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1835,9 +2273,6 @@ IPOIB_MODE_DATAGRAM = 0, IPOIB_MODE_CONNECTED = 1, } -pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; -pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; -pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1846,15 +2281,6 @@ HSR_PROTOCOL_PRP = 1, HSR_PROTOCOL_MAX = 2, } -pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; -pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; -pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; -pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; -pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; -pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; -pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; -pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; -pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1869,22 +2295,6 @@ IFLA_HSR_PROTOCOL = 7, __IFLA_HSR_MAX = 8, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_stats_msg { -pub family: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub ifindex: __u32, -pub filter_mask: __u32, -} -pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; -pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; -pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; -pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; -pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; -pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; -pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1897,10 +2307,6 @@ IFLA_STATS_AF_SPEC = 5, __IFLA_STATS_MAX = 6, } -pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; -pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; -pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1910,10 +2316,6 @@ IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, __IFLA_STATS_GETSET_MAX = 3, } -pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; -pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; -pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; -pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1923,11 +2325,6 @@ LINK_XSTATS_TYPE_BOND = 2, __LINK_XSTATS_TYPE_MAX = 3, } -pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; -pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1938,10 +2335,6 @@ IFLA_OFFLOAD_XSTATS_L3_STATS = 3, __IFLA_OFFLOAD_XSTATS_MAX = 4, } -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; -pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1951,11 +2344,6 @@ IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, } -pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; -pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; -pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; -pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; -pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1966,16 +2354,6 @@ XDP_ATTACHED_HW = 3, XDP_ATTACHED_MULTI = 4, } -pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; -pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; -pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; -pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; -pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; -pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; -pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; -pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; -pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; -pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1991,13 +2369,6 @@ IFLA_XDP_EXPECTED_FD = 8, __IFLA_XDP_MAX = 9, } -pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; -pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; -pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; -pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; -pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; -pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; -pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2010,17 +2381,6 @@ IFLA_EVENT_IGMP_RESEND = 5, IFLA_EVENT_BONDING_OPTIONS = 6, } -pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; -pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; -pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; -pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; -pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; -pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; -pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; -pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; -pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; -pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; -pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2036,11 +2396,7 @@ IFLA_TUN_NUM_QUEUES = 8, IFLA_TUN_NUM_DISABLED_QUEUES = 9, __IFLA_TUN_MAX = 10, -} -pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; -pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; -pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; -pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2050,15 +2406,6 @@ IFLA_RMNET_FLAGS = 2, __IFLA_RMNET_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_rmnet_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; -pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; -pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2067,9 +2414,6 @@ IFLA_MCTP_NET = 1, __IFLA_MCTP_MAX = 2, } -pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; -pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; -pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2078,28 +2422,6 @@ IFLA_DSA_MASTER = 1, __IFLA_DSA_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifaddrmsg { -pub ifa_family: __u8, -pub ifa_prefixlen: __u8, -pub ifa_flags: __u8, -pub ifa_scope: __u8, -pub ifa_index: __u32, -} -pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; -pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; -pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; -pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; -pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; -pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; -pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; -pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; -pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; -pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; -pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; -pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; -pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2118,44 +2440,6 @@ IFA_PROTO = 11, __IFA_MAX = 12, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifa_cacheinfo { -pub ifa_prefered: __u32, -pub ifa_valid: __u32, -pub cstamp: __u32, -pub tstamp: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndmsg { -pub ndm_family: __u8, -pub ndm_pad1: __u8, -pub ndm_pad2: __u16, -pub ndm_ifindex: __s32, -pub ndm_state: __u16, -pub ndm_flags: __u8, -pub ndm_type: __u8, -} -pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; -pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; -pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; -pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; -pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; -pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; -pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; -pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; -pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; -pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; -pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; -pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; -pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; -pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; -pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; -pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; -pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; -pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; -pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2180,50 +2464,6 @@ NDA_NDM_FLAGS_MASK = 17, __NDA_MAX = 18, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nda_cacheinfo { -pub ndm_confirmed: __u32, -pub ndm_used: __u32, -pub ndm_updated: __u32, -pub ndm_refcnt: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_stats { -pub ndts_allocs: __u64, -pub ndts_destroys: __u64, -pub ndts_hash_grows: __u64, -pub ndts_res_failed: __u64, -pub ndts_lookups: __u64, -pub ndts_hits: __u64, -pub ndts_rcv_probes_mcast: __u64, -pub ndts_rcv_probes_ucast: __u64, -pub ndts_periodic_gc_runs: __u64, -pub ndts_forced_gc_runs: __u64, -pub ndts_table_fulls: __u64, -} -pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; -pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; -pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; -pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; -pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; -pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; -pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; -pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; -pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; -pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; -pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; -pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; -pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; -pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; -pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; -pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; -pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; -pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; -pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; -pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; -pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2250,37 +2490,6 @@ NDTPA_INTERVAL_PROBE_TIME_MS = 19, __NDTPA_MAX = 20, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndtmsg { -pub ndtm_family: __u8, -pub ndtm_pad1: __u8, -pub ndtm_pad2: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_config { -pub ndtc_key_len: __u16, -pub ndtc_entry_size: __u16, -pub ndtc_entries: __u32, -pub ndtc_last_flush: __u32, -pub ndtc_last_rand: __u32, -pub ndtc_hash_rnd: __u32, -pub ndtc_hash_mask: __u32, -pub ndtc_hash_chain_gc: __u32, -pub ndtc_proxy_qlen: __u32, -} -pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; -pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; -pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; -pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; -pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; -pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; -pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; -pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; -pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; -pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; -pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2297,8 +2506,6 @@ NDTA_PAD = 9, __NDTA_MAX = 10, } -pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; -pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2306,10 +2513,6 @@ FDB_NOTIFY_BIT = 1, FDB_NOTIFY_INACTIVE_BIT = 2, } -pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; -pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; -pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; -pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2319,79 +2522,6 @@ NFEA_DONT_REFRESH = 2, __NFEA_MAX = 3, } -pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; -pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; -pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; -pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; -pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; -pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; -pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; -pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; -pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; -pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; -pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; -pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; -pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; -pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; -pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; -pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; -pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; -pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; -pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; -pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; -pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; -pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; -pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; -pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; -pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; -pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; -pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; -pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; -pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; -pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; -pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; -pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; -pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; -pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; -pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; -pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; -pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; -pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; -pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; -pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; -pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; -pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; -pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; -pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; -pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; -pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; -pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; -pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; -pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; -pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; -pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; -pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; -pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; -pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; -pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; -pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; -pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; -pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; -pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; -pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; -pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; -pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; -pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; -pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; -pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; -pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; -pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; -pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; -pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; -pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; -pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2458,49 +2588,17 @@ RTM_NEWLINKPROP = 108, RTM_DELLINKPROP = 109, RTM_GETLINKPROP = 110, -RTM_NEWVLAN = 112, -RTM_DELVLAN = 113, -RTM_GETVLAN = 114, -RTM_NEWNEXTHOPBUCKET = 116, -RTM_DELNEXTHOPBUCKET = 117, -RTM_GETNEXTHOPBUCKET = 118, -RTM_NEWTUNNEL = 120, -RTM_DELTUNNEL = 121, -RTM_GETTUNNEL = 122, -__RTM_MAX = 123, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtattr { -pub rta_len: crate::ctypes::c_ushort, -pub rta_type: crate::ctypes::c_ushort, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtmsg { -pub rtm_family: crate::ctypes::c_uchar, -pub rtm_dst_len: crate::ctypes::c_uchar, -pub rtm_src_len: crate::ctypes::c_uchar, -pub rtm_tos: crate::ctypes::c_uchar, -pub rtm_table: crate::ctypes::c_uchar, -pub rtm_protocol: crate::ctypes::c_uchar, -pub rtm_scope: crate::ctypes::c_uchar, -pub rtm_type: crate::ctypes::c_uchar, -pub rtm_flags: crate::ctypes::c_uint, +RTM_NEWVLAN = 112, +RTM_DELVLAN = 113, +RTM_GETVLAN = 114, +RTM_NEWNEXTHOPBUCKET = 116, +RTM_DELNEXTHOPBUCKET = 117, +RTM_GETNEXTHOPBUCKET = 118, +RTM_NEWTUNNEL = 120, +RTM_DELTUNNEL = 121, +RTM_GETTUNNEL = 122, +__RTM_MAX = 123, } -pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; -pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; -pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; -pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; -pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; -pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; -pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; -pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; -pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; -pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; -pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; -pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; -pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2577,51 +2675,6 @@ RTA_NH_ID = 30, __RTA_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnexthop { -pub rtnh_len: crate::ctypes::c_ushort, -pub rtnh_flags: crate::ctypes::c_uchar, -pub rtnh_hops: crate::ctypes::c_uchar, -pub rtnh_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug)] -pub struct rtvia { -pub rtvia_family: __kernel_sa_family_t, -pub rtvia_addr: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_cacheinfo { -pub rta_clntref: __u32, -pub rta_lastuse: __u32, -pub rta_expires: __s32, -pub rta_error: __u32, -pub rta_used: __u32, -pub rta_id: __u32, -pub rta_ts: __u32, -pub rta_tsage: __u32, -} -pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; -pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; -pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; -pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; -pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; -pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; -pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; -pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; -pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; -pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; -pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; -pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; -pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; -pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; -pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; -pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; -pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; -pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; -pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2646,72 +2699,6 @@ RTAX_FASTOPEN_NO_COOKIE = 17, __RTAX_MAX = 18, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rta_session { -pub proto: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub u: rta_session__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union rta_session__bindgen_ty_1 { -pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, -pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, -pub spi: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { -pub sport: __u16, -pub dport: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { -pub type_: __u8, -pub code: __u8, -pub ident: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_mfc_stats { -pub mfcs_packets: __u64, -pub mfcs_bytes: __u64, -pub mfcs_wrong_if: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtgenmsg { -pub rtgen_family: crate::ctypes::c_uchar, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifinfomsg { -pub ifi_family: crate::ctypes::c_uchar, -pub __ifi_pad: crate::ctypes::c_uchar, -pub ifi_type: crate::ctypes::c_ushort, -pub ifi_index: crate::ctypes::c_int, -pub ifi_flags: crate::ctypes::c_uint, -pub ifi_change: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefixmsg { -pub prefix_family: crate::ctypes::c_uchar, -pub prefix_pad1: crate::ctypes::c_uchar, -pub prefix_pad2: crate::ctypes::c_ushort, -pub prefix_ifindex: crate::ctypes::c_int, -pub prefix_type: crate::ctypes::c_uchar, -pub prefix_len: crate::ctypes::c_uchar, -pub prefix_flags: crate::ctypes::c_uchar, -pub prefix_pad3: crate::ctypes::c_uchar, -} -pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; -pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; -pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; -pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2721,41 +2708,6 @@ PREFIX_CACHEINFO = 2, __PREFIX_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefix_cacheinfo { -pub preferred_time: __u32, -pub valid_time: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcmsg { -pub tcm_family: crate::ctypes::c_uchar, -pub tcm__pad1: crate::ctypes::c_uchar, -pub tcm__pad2: crate::ctypes::c_ushort, -pub tcm_ifindex: crate::ctypes::c_int, -pub tcm_handle: __u32, -pub tcm_parent: __u32, -pub tcm_info: __u32, -} -pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; -pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; -pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; -pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; -pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; -pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; -pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; -pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; -pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; -pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; -pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; -pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; -pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; -pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; -pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; -pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; -pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; -pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2779,21 +2731,6 @@ TCA_EXT_WARN_MSG = 16, __TCA_MAX = 17, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nduseroptmsg { -pub nduseropt_family: crate::ctypes::c_uchar, -pub nduseropt_pad1: crate::ctypes::c_uchar, -pub nduseropt_opts_len: crate::ctypes::c_ushort, -pub nduseropt_ifindex: crate::ctypes::c_int, -pub nduseropt_icmp_type: __u8, -pub nduseropt_icmp_code: __u8, -pub nduseropt_pad2: crate::ctypes::c_ushort, -pub nduseropt_pad3: crate::ctypes::c_uint, -} -pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; -pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; -pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2845,20 +2782,6 @@ RTNLGRP_STATS = 36, __RTNLGRP_MAX = 37, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcamsg { -pub tca_family: crate::ctypes::c_uchar, -pub tca__pad1: crate::ctypes::c_uchar, -pub tca__pad2: crate::ctypes::c_ushort, -} -pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; -pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; -pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; -pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; -pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; -pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; -pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2871,3 +2794,61 @@ TCA_ROOT_EXT_WARN_MSG = 5, __TCA_ROOT_MAX = 6, } +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union rta_session__bindgen_ty_1 { +pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, +pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, +pub spi: __u32, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl nlmsgerr_attrs { +pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +} +impl netlink_policy_type_attr { +pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; +} +impl macsec_validation_type { +pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; +} +impl macsec_offload { +pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; +} +impl ifla_vxlan_df { +pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; +} +impl ifla_geneve_df { +pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/net.rs temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/net.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/net.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/net.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1844 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type socklen_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_addr { +pub s_addr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq { +pub imr_multiaddr: in_addr, +pub imr_interface: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreqn { +pub imr_multiaddr: in_addr, +pub imr_address: in_addr, +pub imr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq_source { +pub imr_multiaddr: __be32, +pub imr_interface: __be32, +pub imr_sourceaddr: __be32, +} +#[repr(C)] +pub struct ip_msfilter { +pub imsf_multiaddr: __be32, +pub imsf_interface: __be32, +pub imsf_fmode: __u32, +pub imsf_numsrc: __u32, +pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, +} +#[repr(C)] +pub struct ip_msfilter__bindgen_ty_1 { +pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, +pub __bindgen_anon_1: __BindgenUnionField, +pub bindgen_union_field: u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { +pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub imsf_slist_flex: __IncompleteArrayField<__be32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_req { +pub gr_interface: __u32, +pub gr_group: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_source_req { +pub gsr_interface: __u32, +pub gsr_group: __kernel_sockaddr_storage, +pub gsr_source: __kernel_sockaddr_storage, +} +#[repr(C)] +pub struct group_filter { +pub __bindgen_anon_1: group_filter__bindgen_ty_1, +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 34usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { +pub gf_interface_aux: __u32, +pub gf_group_aux: __kernel_sockaddr_storage, +pub gf_fmode_aux: __u32, +pub gf_numsrc_aux: __u32, +pub gf_slist: [__kernel_sockaddr_storage; 1usize], +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { +pub gf_interface: __u32, +pub gf_group: __kernel_sockaddr_storage, +pub gf_fmode: __u32, +pub gf_numsrc: __u32, +pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_pktinfo { +pub ipi_ifindex: crate::ctypes::c_int, +pub ipi_spec_dst: in_addr, +pub ipi_addr: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_in { +pub sin_family: __kernel_sa_family_t, +pub sin_port: __be16, +pub sin_addr: in_addr, +pub __pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct iphdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub tos: __u8, +pub tot_len: __be16, +pub id: __be16, +pub frag_off: __be16, +pub ttl: __u8, +pub protocol: __u8, +pub check: __sum16, +pub __bindgen_anon_1: iphdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_auth_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub reserved: __be16, +pub spi: __be32, +pub seq_no: __be32, +pub auth_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_esp_hdr { +pub spi: __be32, +pub seq_no: __be32, +pub enc_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_comp_hdr { +pub nexthdr: __u8, +pub flags: __u8, +pub cpi: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_beet_phdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub padlen: __u8, +pub reserved: __u8, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_addr { +pub in6_u: in6_addr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr_in6 { +pub sin6_family: crate::ctypes::c_ushort, +pub sin6_port: __be16, +pub sin6_flowinfo: __be32, +pub sin6_addr: in6_addr, +pub sin6_scope_id: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6_mreq { +pub ipv6mr_multiaddr: in6_addr, +pub ipv6mr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_flowlabel_req { +pub flr_dst: in6_addr, +pub flr_label: __be32, +pub flr_action: __u8, +pub flr_share: __u8, +pub flr_flags: __u16, +pub flr_expires: __u16, +pub flr_linger: __u16, +pub __flr_pad: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_pktinfo { +pub ipi6_addr: in6_addr, +pub ipi6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ip6_mtuinfo { +pub ip6m_addr: sockaddr_in6, +pub ip6m_mtu: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_ifreq { +pub ifr6_addr: in6_addr, +pub ifr6_prefixlen: __u32, +pub ifr6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_rt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub type_: __u8, +pub segments_left: __u8, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_opt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +} +#[repr(C)] +pub struct rt0_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rt2_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: in6_addr, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct ipv6_destopt_hao { +pub type_: __u8, +pub length: __u8, +pub addr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub flow_lbl: [__u8; 3usize], +pub payload_len: __be16, +pub nexthdr: __u8, +pub hop_limit: __u8, +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcphdr { +pub source: __be16, +pub dest: __be16, +pub seq: __be32, +pub ack_seq: __be32, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub window: __be16, +pub check: __sum16, +pub urg_ptr: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_opt { +pub opt_code: __u32, +pub opt_val: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_window { +pub snd_wl1: __u32, +pub snd_wnd: __u32, +pub max_window: __u32, +pub rcv_wnd: __u32, +pub rcv_wup: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_info { +pub tcpi_state: __u8, +pub tcpi_ca_state: __u8, +pub tcpi_retransmits: __u8, +pub tcpi_probes: __u8, +pub tcpi_backoff: __u8, +pub tcpi_options: __u8, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub tcpi_rto: __u32, +pub tcpi_ato: __u32, +pub tcpi_snd_mss: __u32, +pub tcpi_rcv_mss: __u32, +pub tcpi_unacked: __u32, +pub tcpi_sacked: __u32, +pub tcpi_lost: __u32, +pub tcpi_retrans: __u32, +pub tcpi_fackets: __u32, +pub tcpi_last_data_sent: __u32, +pub tcpi_last_ack_sent: __u32, +pub tcpi_last_data_recv: __u32, +pub tcpi_last_ack_recv: __u32, +pub tcpi_pmtu: __u32, +pub tcpi_rcv_ssthresh: __u32, +pub tcpi_rtt: __u32, +pub tcpi_rttvar: __u32, +pub tcpi_snd_ssthresh: __u32, +pub tcpi_snd_cwnd: __u32, +pub tcpi_advmss: __u32, +pub tcpi_reordering: __u32, +pub tcpi_rcv_rtt: __u32, +pub tcpi_rcv_space: __u32, +pub tcpi_total_retrans: __u32, +pub tcpi_pacing_rate: __u64, +pub tcpi_max_pacing_rate: __u64, +pub tcpi_bytes_acked: __u64, +pub tcpi_bytes_received: __u64, +pub tcpi_segs_out: __u32, +pub tcpi_segs_in: __u32, +pub tcpi_notsent_bytes: __u32, +pub tcpi_min_rtt: __u32, +pub tcpi_data_segs_in: __u32, +pub tcpi_data_segs_out: __u32, +pub tcpi_delivery_rate: __u64, +pub tcpi_busy_time: __u64, +pub tcpi_rwnd_limited: __u64, +pub tcpi_sndbuf_limited: __u64, +pub tcpi_delivered: __u32, +pub tcpi_delivered_ce: __u32, +pub tcpi_bytes_sent: __u64, +pub tcpi_bytes_retrans: __u64, +pub tcpi_dsack_dups: __u32, +pub tcpi_reord_seen: __u32, +pub tcpi_rcv_ooopack: __u32, +pub tcpi_snd_wnd: __u32, +pub tcpi_rcv_wnd: __u32, +pub tcpi_rehash: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct tcp_md5sig { +pub tcpm_addr: __kernel_sockaddr_storage, +pub tcpm_flags: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_ifindex: crate::ctypes::c_int, +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_diag_md5sig { +pub tcpm_family: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_addr: [__be32; 4usize], +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_zerocopy_receive { +pub address: __u64, +pub length: __u32, +pub recv_skip_hint: __u32, +pub inq: __u32, +pub err: __s32, +pub copybuf_address: __u64, +pub copybuf_len: __s32, +pub flags: __u32, +pub msg_control: __u64, +pub msg_controllen: __u64, +pub msg_flags: __u32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_un { +pub sun_family: __kernel_sa_family_t, +pub sun_path: [crate::ctypes::c_char; 108usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr { +pub __storage: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct linger { +pub l_onoff: crate::ctypes::c_int, +pub l_linger: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct msghdr { +pub msg_name: *mut crate::ctypes::c_void, +pub msg_namelen: crate::ctypes::c_int, +pub msg_iov: *mut iovec, +pub msg_iovlen: usize, +pub msg_control: *mut crate::ctypes::c_void, +pub msg_controllen: usize, +pub msg_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct cmsghdr { +pub cmsg_len: usize, +pub cmsg_level: crate::ctypes::c_int, +pub cmsg_type: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ucred { +pub pid: __u32, +pub uid: __u32, +pub gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mmsghdr { +pub msg_hdr: msghdr, +pub msg_len: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub _address: u8, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const IP_TOS: u32 = 1; +pub const IP_TTL: u32 = 2; +pub const IP_HDRINCL: u32 = 3; +pub const IP_OPTIONS: u32 = 4; +pub const IP_ROUTER_ALERT: u32 = 5; +pub const IP_RECVOPTS: u32 = 6; +pub const IP_RETOPTS: u32 = 7; +pub const IP_PKTINFO: u32 = 8; +pub const IP_PKTOPTIONS: u32 = 9; +pub const IP_MTU_DISCOVER: u32 = 10; +pub const IP_RECVERR: u32 = 11; +pub const IP_RECVTTL: u32 = 12; +pub const IP_RECVTOS: u32 = 13; +pub const IP_MTU: u32 = 14; +pub const IP_FREEBIND: u32 = 15; +pub const IP_IPSEC_POLICY: u32 = 16; +pub const IP_XFRM_POLICY: u32 = 17; +pub const IP_PASSSEC: u32 = 18; +pub const IP_TRANSPARENT: u32 = 19; +pub const IP_RECVRETOPTS: u32 = 7; +pub const IP_ORIGDSTADDR: u32 = 20; +pub const IP_RECVORIGDSTADDR: u32 = 20; +pub const IP_MINTTL: u32 = 21; +pub const IP_NODEFRAG: u32 = 22; +pub const IP_CHECKSUM: u32 = 23; +pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; +pub const IP_RECVFRAGSIZE: u32 = 25; +pub const IP_RECVERR_RFC4884: u32 = 26; +pub const IP_PMTUDISC_DONT: u32 = 0; +pub const IP_PMTUDISC_WANT: u32 = 1; +pub const IP_PMTUDISC_DO: u32 = 2; +pub const IP_PMTUDISC_PROBE: u32 = 3; +pub const IP_PMTUDISC_INTERFACE: u32 = 4; +pub const IP_PMTUDISC_OMIT: u32 = 5; +pub const IP_MULTICAST_IF: u32 = 32; +pub const IP_MULTICAST_TTL: u32 = 33; +pub const IP_MULTICAST_LOOP: u32 = 34; +pub const IP_ADD_MEMBERSHIP: u32 = 35; +pub const IP_DROP_MEMBERSHIP: u32 = 36; +pub const IP_UNBLOCK_SOURCE: u32 = 37; +pub const IP_BLOCK_SOURCE: u32 = 38; +pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; +pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; +pub const IP_MSFILTER: u32 = 41; +pub const MCAST_JOIN_GROUP: u32 = 42; +pub const MCAST_BLOCK_SOURCE: u32 = 43; +pub const MCAST_UNBLOCK_SOURCE: u32 = 44; +pub const MCAST_LEAVE_GROUP: u32 = 45; +pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; +pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; +pub const MCAST_MSFILTER: u32 = 48; +pub const IP_MULTICAST_ALL: u32 = 49; +pub const IP_UNICAST_IF: u32 = 50; +pub const IP_LOCAL_PORT_RANGE: u32 = 51; +pub const MCAST_EXCLUDE: u32 = 0; +pub const MCAST_INCLUDE: u32 = 1; +pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; +pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; +pub const __SOCK_SIZE__: u32 = 16; +pub const IN_CLASSA_NET: u32 = 4278190080; +pub const IN_CLASSA_NSHIFT: u32 = 24; +pub const IN_CLASSA_HOST: u32 = 16777215; +pub const IN_CLASSA_MAX: u32 = 128; +pub const IN_CLASSB_NET: u32 = 4294901760; +pub const IN_CLASSB_NSHIFT: u32 = 16; +pub const IN_CLASSB_HOST: u32 = 65535; +pub const IN_CLASSB_MAX: u32 = 65536; +pub const IN_CLASSC_NET: u32 = 4294967040; +pub const IN_CLASSC_NSHIFT: u32 = 8; +pub const IN_CLASSC_HOST: u32 = 255; +pub const IN_MULTICAST_NET: u32 = 3758096384; +pub const IN_CLASSE_NET: u32 = 4294967295; +pub const IN_CLASSE_NSHIFT: u32 = 0; +pub const IN_LOOPBACKNET: u32 = 127; +pub const INADDR_LOOPBACK: u32 = 2130706433; +pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; +pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; +pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; +pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; +pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; +pub const __LITTLE_ENDIAN: u32 = 1234; +pub const IPTOS_TOS_MASK: u32 = 30; +pub const IPTOS_LOWDELAY: u32 = 16; +pub const IPTOS_THROUGHPUT: u32 = 8; +pub const IPTOS_RELIABILITY: u32 = 4; +pub const IPTOS_MINCOST: u32 = 2; +pub const IPTOS_PREC_MASK: u32 = 224; +pub const IPTOS_PREC_NETCONTROL: u32 = 224; +pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; +pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; +pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; +pub const IPTOS_PREC_FLASH: u32 = 96; +pub const IPTOS_PREC_IMMEDIATE: u32 = 64; +pub const IPTOS_PREC_PRIORITY: u32 = 32; +pub const IPTOS_PREC_ROUTINE: u32 = 0; +pub const IPOPT_COPY: u32 = 128; +pub const IPOPT_CLASS_MASK: u32 = 96; +pub const IPOPT_NUMBER_MASK: u32 = 31; +pub const IPOPT_CONTROL: u32 = 0; +pub const IPOPT_RESERVED1: u32 = 32; +pub const IPOPT_MEASUREMENT: u32 = 64; +pub const IPOPT_RESERVED2: u32 = 96; +pub const IPOPT_END: u32 = 0; +pub const IPOPT_NOOP: u32 = 1; +pub const IPOPT_SEC: u32 = 130; +pub const IPOPT_LSRR: u32 = 131; +pub const IPOPT_TIMESTAMP: u32 = 68; +pub const IPOPT_CIPSO: u32 = 134; +pub const IPOPT_RR: u32 = 7; +pub const IPOPT_SID: u32 = 136; +pub const IPOPT_SSRR: u32 = 137; +pub const IPOPT_RA: u32 = 148; +pub const IPVERSION: u32 = 4; +pub const MAXTTL: u32 = 255; +pub const IPDEFTTL: u32 = 64; +pub const IPOPT_OPTVAL: u32 = 0; +pub const IPOPT_OLEN: u32 = 1; +pub const IPOPT_OFFSET: u32 = 2; +pub const IPOPT_MINOFF: u32 = 4; +pub const MAX_IPOPTLEN: u32 = 40; +pub const IPOPT_NOP: u32 = 1; +pub const IPOPT_EOL: u32 = 0; +pub const IPOPT_TS: u32 = 68; +pub const IPOPT_TS_TSONLY: u32 = 0; +pub const IPOPT_TS_TSANDADDR: u32 = 1; +pub const IPOPT_TS_PRESPEC: u32 = 3; +pub const IPV4_BEET_PHMAXLEN: u32 = 8; +pub const IPV6_FL_A_GET: u32 = 0; +pub const IPV6_FL_A_PUT: u32 = 1; +pub const IPV6_FL_A_RENEW: u32 = 2; +pub const IPV6_FL_F_CREATE: u32 = 1; +pub const IPV6_FL_F_EXCL: u32 = 2; +pub const IPV6_FL_F_REFLECT: u32 = 4; +pub const IPV6_FL_F_REMOTE: u32 = 8; +pub const IPV6_FL_S_NONE: u32 = 0; +pub const IPV6_FL_S_EXCL: u32 = 1; +pub const IPV6_FL_S_PROCESS: u32 = 2; +pub const IPV6_FL_S_USER: u32 = 3; +pub const IPV6_FL_S_ANY: u32 = 255; +pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; +pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; +pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; +pub const IPV6_PRIORITY_FILLER: u32 = 256; +pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; +pub const IPV6_PRIORITY_RESERVED1: u32 = 768; +pub const IPV6_PRIORITY_BULK: u32 = 1024; +pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; +pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; +pub const IPV6_PRIORITY_CONTROL: u32 = 1792; +pub const IPV6_PRIORITY_8: u32 = 2048; +pub const IPV6_PRIORITY_9: u32 = 2304; +pub const IPV6_PRIORITY_10: u32 = 2560; +pub const IPV6_PRIORITY_11: u32 = 2816; +pub const IPV6_PRIORITY_12: u32 = 3072; +pub const IPV6_PRIORITY_13: u32 = 3328; +pub const IPV6_PRIORITY_14: u32 = 3584; +pub const IPV6_PRIORITY_15: u32 = 3840; +pub const IPPROTO_HOPOPTS: u32 = 0; +pub const IPPROTO_ROUTING: u32 = 43; +pub const IPPROTO_FRAGMENT: u32 = 44; +pub const IPPROTO_ICMPV6: u32 = 58; +pub const IPPROTO_NONE: u32 = 59; +pub const IPPROTO_DSTOPTS: u32 = 60; +pub const IPPROTO_MH: u32 = 135; +pub const IPV6_TLV_PAD1: u32 = 0; +pub const IPV6_TLV_PADN: u32 = 1; +pub const IPV6_TLV_ROUTERALERT: u32 = 5; +pub const IPV6_TLV_CALIPSO: u32 = 7; +pub const IPV6_TLV_IOAM: u32 = 49; +pub const IPV6_TLV_JUMBO: u32 = 194; +pub const IPV6_TLV_HAO: u32 = 201; +pub const IPV6_ADDRFORM: u32 = 1; +pub const IPV6_2292PKTINFO: u32 = 2; +pub const IPV6_2292HOPOPTS: u32 = 3; +pub const IPV6_2292DSTOPTS: u32 = 4; +pub const IPV6_2292RTHDR: u32 = 5; +pub const IPV6_2292PKTOPTIONS: u32 = 6; +pub const IPV6_CHECKSUM: u32 = 7; +pub const IPV6_2292HOPLIMIT: u32 = 8; +pub const IPV6_NEXTHOP: u32 = 9; +pub const IPV6_AUTHHDR: u32 = 10; +pub const IPV6_FLOWINFO: u32 = 11; +pub const IPV6_UNICAST_HOPS: u32 = 16; +pub const IPV6_MULTICAST_IF: u32 = 17; +pub const IPV6_MULTICAST_HOPS: u32 = 18; +pub const IPV6_MULTICAST_LOOP: u32 = 19; +pub const IPV6_ADD_MEMBERSHIP: u32 = 20; +pub const IPV6_DROP_MEMBERSHIP: u32 = 21; +pub const IPV6_ROUTER_ALERT: u32 = 22; +pub const IPV6_MTU_DISCOVER: u32 = 23; +pub const IPV6_MTU: u32 = 24; +pub const IPV6_RECVERR: u32 = 25; +pub const IPV6_V6ONLY: u32 = 26; +pub const IPV6_JOIN_ANYCAST: u32 = 27; +pub const IPV6_LEAVE_ANYCAST: u32 = 28; +pub const IPV6_MULTICAST_ALL: u32 = 29; +pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; +pub const IPV6_RECVERR_RFC4884: u32 = 31; +pub const IPV6_PMTUDISC_DONT: u32 = 0; +pub const IPV6_PMTUDISC_WANT: u32 = 1; +pub const IPV6_PMTUDISC_DO: u32 = 2; +pub const IPV6_PMTUDISC_PROBE: u32 = 3; +pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; +pub const IPV6_PMTUDISC_OMIT: u32 = 5; +pub const IPV6_FLOWLABEL_MGR: u32 = 32; +pub const IPV6_FLOWINFO_SEND: u32 = 33; +pub const IPV6_IPSEC_POLICY: u32 = 34; +pub const IPV6_XFRM_POLICY: u32 = 35; +pub const IPV6_HDRINCL: u32 = 36; +pub const IPV6_RECVPKTINFO: u32 = 49; +pub const IPV6_PKTINFO: u32 = 50; +pub const IPV6_RECVHOPLIMIT: u32 = 51; +pub const IPV6_HOPLIMIT: u32 = 52; +pub const IPV6_RECVHOPOPTS: u32 = 53; +pub const IPV6_HOPOPTS: u32 = 54; +pub const IPV6_RTHDRDSTOPTS: u32 = 55; +pub const IPV6_RECVRTHDR: u32 = 56; +pub const IPV6_RTHDR: u32 = 57; +pub const IPV6_RECVDSTOPTS: u32 = 58; +pub const IPV6_DSTOPTS: u32 = 59; +pub const IPV6_RECVPATHMTU: u32 = 60; +pub const IPV6_PATHMTU: u32 = 61; +pub const IPV6_DONTFRAG: u32 = 62; +pub const IPV6_RECVTCLASS: u32 = 66; +pub const IPV6_TCLASS: u32 = 67; +pub const IPV6_AUTOFLOWLABEL: u32 = 70; +pub const IPV6_ADDR_PREFERENCES: u32 = 72; +pub const IPV6_PREFER_SRC_TMP: u32 = 1; +pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; +pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; +pub const IPV6_PREFER_SRC_COA: u32 = 4; +pub const IPV6_PREFER_SRC_HOME: u32 = 1024; +pub const IPV6_PREFER_SRC_CGA: u32 = 8; +pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; +pub const IPV6_MINHOPCOUNT: u32 = 73; +pub const IPV6_ORIGDSTADDR: u32 = 74; +pub const IPV6_RECVORIGDSTADDR: u32 = 74; +pub const IPV6_TRANSPARENT: u32 = 75; +pub const IPV6_UNICAST_IF: u32 = 76; +pub const IPV6_RECVFRAGSIZE: u32 = 77; +pub const IPV6_FREEBIND: u32 = 78; +pub const IPV6_MIN_MTU: u32 = 1280; +pub const IPV6_SRCRT_STRICT: u32 = 1; +pub const IPV6_SRCRT_TYPE_0: u32 = 0; +pub const IPV6_SRCRT_TYPE_2: u32 = 2; +pub const IPV6_SRCRT_TYPE_3: u32 = 3; +pub const IPV6_SRCRT_TYPE_4: u32 = 4; +pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; +pub const SIOCGSTAMP_OLD: u32 = 35078; +pub const SIOCGSTAMPNS_OLD: u32 = 35079; +pub const SOL_SOCKET: u32 = 1; +pub const SO_DEBUG: u32 = 1; +pub const SO_REUSEADDR: u32 = 2; +pub const SO_TYPE: u32 = 3; +pub const SO_ERROR: u32 = 4; +pub const SO_DONTROUTE: u32 = 5; +pub const SO_BROADCAST: u32 = 6; +pub const SO_SNDBUF: u32 = 7; +pub const SO_RCVBUF: u32 = 8; +pub const SO_SNDBUFFORCE: u32 = 32; +pub const SO_RCVBUFFORCE: u32 = 33; +pub const SO_KEEPALIVE: u32 = 9; +pub const SO_OOBINLINE: u32 = 10; +pub const SO_NO_CHECK: u32 = 11; +pub const SO_PRIORITY: u32 = 12; +pub const SO_LINGER: u32 = 13; +pub const SO_BSDCOMPAT: u32 = 14; +pub const SO_REUSEPORT: u32 = 15; +pub const SO_PASSCRED: u32 = 16; +pub const SO_PEERCRED: u32 = 17; +pub const SO_RCVLOWAT: u32 = 18; +pub const SO_SNDLOWAT: u32 = 19; +pub const SO_RCVTIMEO_OLD: u32 = 20; +pub const SO_SNDTIMEO_OLD: u32 = 21; +pub const SO_SECURITY_AUTHENTICATION: u32 = 22; +pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; +pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; +pub const SO_BINDTODEVICE: u32 = 25; +pub const SO_ATTACH_FILTER: u32 = 26; +pub const SO_DETACH_FILTER: u32 = 27; +pub const SO_GET_FILTER: u32 = 26; +pub const SO_PEERNAME: u32 = 28; +pub const SO_ACCEPTCONN: u32 = 30; +pub const SO_PEERSEC: u32 = 31; +pub const SO_PASSSEC: u32 = 34; +pub const SO_MARK: u32 = 36; +pub const SO_PROTOCOL: u32 = 38; +pub const SO_DOMAIN: u32 = 39; +pub const SO_RXQ_OVFL: u32 = 40; +pub const SO_WIFI_STATUS: u32 = 41; +pub const SCM_WIFI_STATUS: u32 = 41; +pub const SO_PEEK_OFF: u32 = 42; +pub const SO_NOFCS: u32 = 43; +pub const SO_LOCK_FILTER: u32 = 44; +pub const SO_SELECT_ERR_QUEUE: u32 = 45; +pub const SO_BUSY_POLL: u32 = 46; +pub const SO_MAX_PACING_RATE: u32 = 47; +pub const SO_BPF_EXTENSIONS: u32 = 48; +pub const SO_INCOMING_CPU: u32 = 49; +pub const SO_ATTACH_BPF: u32 = 50; +pub const SO_DETACH_BPF: u32 = 27; +pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; +pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; +pub const SO_CNX_ADVICE: u32 = 53; +pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; +pub const SO_MEMINFO: u32 = 55; +pub const SO_INCOMING_NAPI_ID: u32 = 56; +pub const SO_COOKIE: u32 = 57; +pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; +pub const SO_PEERGROUPS: u32 = 59; +pub const SO_ZEROCOPY: u32 = 60; +pub const SO_TXTIME: u32 = 61; +pub const SCM_TXTIME: u32 = 61; +pub const SO_BINDTOIFINDEX: u32 = 62; +pub const SO_TIMESTAMP_OLD: u32 = 29; +pub const SO_TIMESTAMPNS_OLD: u32 = 35; +pub const SO_TIMESTAMPING_OLD: u32 = 37; +pub const SO_TIMESTAMP_NEW: u32 = 63; +pub const SO_TIMESTAMPNS_NEW: u32 = 64; +pub const SO_TIMESTAMPING_NEW: u32 = 65; +pub const SO_RCVTIMEO_NEW: u32 = 66; +pub const SO_SNDTIMEO_NEW: u32 = 67; +pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; +pub const SO_PREFER_BUSY_POLL: u32 = 69; +pub const SO_BUSY_POLL_BUDGET: u32 = 70; +pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; +pub const SO_TXREHASH: u32 = 74; +pub const SO_RCVMARK: u32 = 75; +pub const SO_TIMESTAMP: u32 = 29; +pub const SO_TIMESTAMPNS: u32 = 35; +pub const SO_TIMESTAMPING: u32 = 37; +pub const SO_RCVTIMEO: u32 = 20; +pub const SO_SNDTIMEO: u32 = 21; +pub const SCM_TIMESTAMP: u32 = 29; +pub const SCM_TIMESTAMPNS: u32 = 35; +pub const SCM_TIMESTAMPING: u32 = 37; +pub const SYS_SOCKET: u32 = 1; +pub const SYS_BIND: u32 = 2; +pub const SYS_CONNECT: u32 = 3; +pub const SYS_LISTEN: u32 = 4; +pub const SYS_ACCEPT: u32 = 5; +pub const SYS_GETSOCKNAME: u32 = 6; +pub const SYS_GETPEERNAME: u32 = 7; +pub const SYS_SOCKETPAIR: u32 = 8; +pub const SYS_SEND: u32 = 9; +pub const SYS_RECV: u32 = 10; +pub const SYS_SENDTO: u32 = 11; +pub const SYS_RECVFROM: u32 = 12; +pub const SYS_SHUTDOWN: u32 = 13; +pub const SYS_SETSOCKOPT: u32 = 14; +pub const SYS_GETSOCKOPT: u32 = 15; +pub const SYS_SENDMSG: u32 = 16; +pub const SYS_RECVMSG: u32 = 17; +pub const SYS_ACCEPT4: u32 = 18; +pub const SYS_RECVMMSG: u32 = 19; +pub const SYS_SENDMMSG: u32 = 20; +pub const __SO_ACCEPTCON: u32 = 65536; +pub const TCP_MSS_DEFAULT: u32 = 536; +pub const TCP_MSS_DESIRED: u32 = 1220; +pub const TCP_NODELAY: u32 = 1; +pub const TCP_MAXSEG: u32 = 2; +pub const TCP_CORK: u32 = 3; +pub const TCP_KEEPIDLE: u32 = 4; +pub const TCP_KEEPINTVL: u32 = 5; +pub const TCP_KEEPCNT: u32 = 6; +pub const TCP_SYNCNT: u32 = 7; +pub const TCP_LINGER2: u32 = 8; +pub const TCP_DEFER_ACCEPT: u32 = 9; +pub const TCP_WINDOW_CLAMP: u32 = 10; +pub const TCP_INFO: u32 = 11; +pub const TCP_QUICKACK: u32 = 12; +pub const TCP_CONGESTION: u32 = 13; +pub const TCP_MD5SIG: u32 = 14; +pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; +pub const TCP_THIN_DUPACK: u32 = 17; +pub const TCP_USER_TIMEOUT: u32 = 18; +pub const TCP_REPAIR: u32 = 19; +pub const TCP_REPAIR_QUEUE: u32 = 20; +pub const TCP_QUEUE_SEQ: u32 = 21; +pub const TCP_REPAIR_OPTIONS: u32 = 22; +pub const TCP_FASTOPEN: u32 = 23; +pub const TCP_TIMESTAMP: u32 = 24; +pub const TCP_NOTSENT_LOWAT: u32 = 25; +pub const TCP_CC_INFO: u32 = 26; +pub const TCP_SAVE_SYN: u32 = 27; +pub const TCP_SAVED_SYN: u32 = 28; +pub const TCP_REPAIR_WINDOW: u32 = 29; +pub const TCP_FASTOPEN_CONNECT: u32 = 30; +pub const TCP_ULP: u32 = 31; +pub const TCP_MD5SIG_EXT: u32 = 32; +pub const TCP_FASTOPEN_KEY: u32 = 33; +pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; +pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; +pub const TCP_INQ: u32 = 36; +pub const TCP_CM_INQ: u32 = 36; +pub const TCP_TX_DELAY: u32 = 37; +pub const TCP_REPAIR_ON: u32 = 1; +pub const TCP_REPAIR_OFF: u32 = 0; +pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; +pub const TCPI_OPT_TIMESTAMPS: u32 = 1; +pub const TCPI_OPT_SACK: u32 = 2; +pub const TCPI_OPT_WSCALE: u32 = 4; +pub const TCPI_OPT_ECN: u32 = 8; +pub const TCPI_OPT_ECN_SEEN: u32 = 16; +pub const TCPI_OPT_SYN_DATA: u32 = 32; +pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; +pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; +pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; +pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; +pub const UNIX_PATH_MAX: u32 = 108; +pub const SHUT_RD: u32 = 0; +pub const SHUT_WR: u32 = 1; +pub const SHUT_RDWR: u32 = 2; +pub const SOCK_STREAM: u32 = 1; +pub const SOCK_DGRAM: u32 = 2; +pub const SOCK_RAW: u32 = 3; +pub const SOCK_RDM: u32 = 4; +pub const SOCK_SEQPACKET: u32 = 5; +pub const MSG_DONTWAIT: u32 = 64; +pub const AF_UNSPEC: u32 = 0; +pub const AF_UNIX: u32 = 1; +pub const AF_INET: u32 = 2; +pub const AF_AX25: u32 = 3; +pub const AF_IPX: u32 = 4; +pub const AF_APPLETALK: u32 = 5; +pub const AF_NETROM: u32 = 6; +pub const AF_BRIDGE: u32 = 7; +pub const AF_ATMPVC: u32 = 8; +pub const AF_X25: u32 = 9; +pub const AF_INET6: u32 = 10; +pub const AF_ROSE: u32 = 11; +pub const AF_DECnet: u32 = 12; +pub const AF_NETBEUI: u32 = 13; +pub const AF_SECURITY: u32 = 14; +pub const AF_KEY: u32 = 15; +pub const AF_NETLINK: u32 = 16; +pub const AF_PACKET: u32 = 17; +pub const AF_ASH: u32 = 18; +pub const AF_ECONET: u32 = 19; +pub const AF_ATMSVC: u32 = 20; +pub const AF_RDS: u32 = 21; +pub const AF_SNA: u32 = 22; +pub const AF_IRDA: u32 = 23; +pub const AF_PPPOX: u32 = 24; +pub const AF_WANPIPE: u32 = 25; +pub const AF_LLC: u32 = 26; +pub const AF_CAN: u32 = 29; +pub const AF_TIPC: u32 = 30; +pub const AF_BLUETOOTH: u32 = 31; +pub const AF_IUCV: u32 = 32; +pub const AF_RXRPC: u32 = 33; +pub const AF_ISDN: u32 = 34; +pub const AF_PHONET: u32 = 35; +pub const AF_IEEE802154: u32 = 36; +pub const AF_MAX: u32 = 37; +pub const MSG_OOB: u32 = 1; +pub const MSG_PEEK: u32 = 2; +pub const MSG_DONTROUTE: u32 = 4; +pub const MSG_CTRUNC: u32 = 8; +pub const MSG_PROBE: u32 = 16; +pub const MSG_TRUNC: u32 = 32; +pub const MSG_EOR: u32 = 128; +pub const MSG_WAITALL: u32 = 256; +pub const MSG_FIN: u32 = 512; +pub const MSG_SYN: u32 = 1024; +pub const MSG_CONFIRM: u32 = 2048; +pub const MSG_RST: u32 = 4096; +pub const MSG_ERRQUEUE: u32 = 8192; +pub const MSG_NOSIGNAL: u32 = 16384; +pub const MSG_MORE: u32 = 32768; +pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; +pub const SCM_RIGHTS: u32 = 1; +pub const SCM_CREDENTIALS: u32 = 2; +pub const SCM_SECURITY: u32 = 3; +pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; +pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; +pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; +pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; +pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; +pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; +pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; +pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; +pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; +pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; +pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; +pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; +pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; +pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; +pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; +pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; +pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; +pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; +pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; +pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; +pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; +pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; +pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; +pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; +pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; +pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; +pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; +pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; +pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; +pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; +pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; +pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; +pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; +pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; +pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; +pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; +pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; +pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; +pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; +pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; +pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; +pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; +pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; +pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; +pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; +pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; +pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; +pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; +pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; +pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; +pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; +pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; +pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; +pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; +pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; +pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; +pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; +pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; +pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; +pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; +pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; +pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; +pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; +pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; +pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; +pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; +pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; +pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; +pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; +pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; +pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; +pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; +pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; +pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; +pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; +pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; +pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; +pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; +pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; +pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; +pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; +pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; +pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; +pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; +pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; +pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; +pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; +pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; +pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; +pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; +pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; +pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; +pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; +pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; +pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; +pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; +pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; +pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; +pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; +pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; +pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; +pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; +pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; +pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; +pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; +pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; +pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; +pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; +pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; +pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; +pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; +pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; +pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; +pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; +pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; +pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; +pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; +pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; +pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; +pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; +pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; +pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; +pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; +pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; +pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; +pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; +pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; +pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; +pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; +pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; +pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; +pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; +pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; +pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; +pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; +pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; +pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; +pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; +pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; +pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; +pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; +pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; +pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; +pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; +pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; +pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; +pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; +pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; +pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; +pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; +pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; +pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IPPROTO_IP = 0, +IPPROTO_ICMP = 1, +IPPROTO_IGMP = 2, +IPPROTO_IPIP = 4, +IPPROTO_TCP = 6, +IPPROTO_EGP = 8, +IPPROTO_PUP = 12, +IPPROTO_UDP = 17, +IPPROTO_IDP = 22, +IPPROTO_TP = 29, +IPPROTO_DCCP = 33, +IPPROTO_IPV6 = 41, +IPPROTO_RSVP = 46, +IPPROTO_GRE = 47, +IPPROTO_ESP = 50, +IPPROTO_AH = 51, +IPPROTO_MTP = 92, +IPPROTO_BEETPH = 94, +IPPROTO_ENCAP = 98, +IPPROTO_PIM = 103, +IPPROTO_COMP = 108, +IPPROTO_L2TP = 115, +IPPROTO_SCTP = 132, +IPPROTO_UDPLITE = 136, +IPPROTO_MPLS = 137, +IPPROTO_ETHERNET = 143, +IPPROTO_RAW = 255, +IPPROTO_MPTCP = 262, +IPPROTO_MAX = 263, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IPV4_DEVCONF_FORWARDING = 1, +IPV4_DEVCONF_MC_FORWARDING = 2, +IPV4_DEVCONF_PROXY_ARP = 3, +IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, +IPV4_DEVCONF_SECURE_REDIRECTS = 5, +IPV4_DEVCONF_SEND_REDIRECTS = 6, +IPV4_DEVCONF_SHARED_MEDIA = 7, +IPV4_DEVCONF_RP_FILTER = 8, +IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, +IPV4_DEVCONF_BOOTP_RELAY = 10, +IPV4_DEVCONF_LOG_MARTIANS = 11, +IPV4_DEVCONF_TAG = 12, +IPV4_DEVCONF_ARPFILTER = 13, +IPV4_DEVCONF_MEDIUM_ID = 14, +IPV4_DEVCONF_NOXFRM = 15, +IPV4_DEVCONF_NOPOLICY = 16, +IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, +IPV4_DEVCONF_ARP_ANNOUNCE = 18, +IPV4_DEVCONF_ARP_IGNORE = 19, +IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, +IPV4_DEVCONF_ARP_ACCEPT = 21, +IPV4_DEVCONF_ARP_NOTIFY = 22, +IPV4_DEVCONF_ACCEPT_LOCAL = 23, +IPV4_DEVCONF_SRC_VMARK = 24, +IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, +IPV4_DEVCONF_ROUTE_LOCALNET = 26, +IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, +IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, +IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, +IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, +IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, +IPV4_DEVCONF_BC_FORWARDING = 32, +IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, +__IPV4_DEVCONF_MAX = 34, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +DEVCONF_FORWARDING = 0, +DEVCONF_HOPLIMIT = 1, +DEVCONF_MTU6 = 2, +DEVCONF_ACCEPT_RA = 3, +DEVCONF_ACCEPT_REDIRECTS = 4, +DEVCONF_AUTOCONF = 5, +DEVCONF_DAD_TRANSMITS = 6, +DEVCONF_RTR_SOLICITS = 7, +DEVCONF_RTR_SOLICIT_INTERVAL = 8, +DEVCONF_RTR_SOLICIT_DELAY = 9, +DEVCONF_USE_TEMPADDR = 10, +DEVCONF_TEMP_VALID_LFT = 11, +DEVCONF_TEMP_PREFERED_LFT = 12, +DEVCONF_REGEN_MAX_RETRY = 13, +DEVCONF_MAX_DESYNC_FACTOR = 14, +DEVCONF_MAX_ADDRESSES = 15, +DEVCONF_FORCE_MLD_VERSION = 16, +DEVCONF_ACCEPT_RA_DEFRTR = 17, +DEVCONF_ACCEPT_RA_PINFO = 18, +DEVCONF_ACCEPT_RA_RTR_PREF = 19, +DEVCONF_RTR_PROBE_INTERVAL = 20, +DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, +DEVCONF_PROXY_NDP = 22, +DEVCONF_OPTIMISTIC_DAD = 23, +DEVCONF_ACCEPT_SOURCE_ROUTE = 24, +DEVCONF_MC_FORWARDING = 25, +DEVCONF_DISABLE_IPV6 = 26, +DEVCONF_ACCEPT_DAD = 27, +DEVCONF_FORCE_TLLAO = 28, +DEVCONF_NDISC_NOTIFY = 29, +DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, +DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, +DEVCONF_SUPPRESS_FRAG_NDISC = 32, +DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, +DEVCONF_USE_OPTIMISTIC = 34, +DEVCONF_ACCEPT_RA_MTU = 35, +DEVCONF_STABLE_SECRET = 36, +DEVCONF_USE_OIF_ADDRS_ONLY = 37, +DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, +DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, +DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, +DEVCONF_DROP_UNSOLICITED_NA = 41, +DEVCONF_KEEP_ADDR_ON_DOWN = 42, +DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, +DEVCONF_SEG6_ENABLED = 44, +DEVCONF_SEG6_REQUIRE_HMAC = 45, +DEVCONF_ENHANCED_DAD = 46, +DEVCONF_ADDR_GEN_MODE = 47, +DEVCONF_DISABLE_POLICY = 48, +DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, +DEVCONF_NDISC_TCLASS = 50, +DEVCONF_RPL_SEG_ENABLED = 51, +DEVCONF_RA_DEFRTR_METRIC = 52, +DEVCONF_IOAM6_ENABLED = 53, +DEVCONF_IOAM6_ID = 54, +DEVCONF_IOAM6_ID_WIDE = 55, +DEVCONF_NDISC_EVICT_NOCARRIER = 56, +DEVCONF_ACCEPT_UNTRACKED_NA = 57, +DEVCONF_MAX = 58, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum socket_state { +SS_FREE = 0, +SS_UNCONNECTED = 1, +SS_CONNECTING = 2, +SS_CONNECTED = 3, +SS_DISCONNECTING = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +TCP_FLAG_CWR = 32768, +TCP_FLAG_ECE = 16384, +TCP_FLAG_URG = 8192, +TCP_FLAG_ACK = 4096, +TCP_FLAG_PSH = 2048, +TCP_FLAG_RST = 1024, +TCP_FLAG_SYN = 512, +TCP_FLAG_FIN = 256, +TCP_RESERVED_BITS = 15, +TCP_DATA_OFFSET = 240, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +TCP_NO_QUEUE = 0, +TCP_RECV_QUEUE = 1, +TCP_SEND_QUEUE = 2, +TCP_QUEUES_NR = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_fastopen_client_fail { +TFO_STATUS_UNSPEC = 0, +TFO_COOKIE_UNAVAILABLE = 1, +TFO_DATA_NOT_ACKED = 2, +TFO_SYN_RETRANSMITTED = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_ca_state { +TCP_CA_Open = 0, +TCP_CA_Disorder = 1, +TCP_CA_CWR = 2, +TCP_CA_Recovery = 3, +TCP_CA_Loss = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +TCP_NLA_PAD = 0, +TCP_NLA_BUSY = 1, +TCP_NLA_RWND_LIMITED = 2, +TCP_NLA_SNDBUF_LIMITED = 3, +TCP_NLA_DATA_SEGS_OUT = 4, +TCP_NLA_TOTAL_RETRANS = 5, +TCP_NLA_PACING_RATE = 6, +TCP_NLA_DELIVERY_RATE = 7, +TCP_NLA_SND_CWND = 8, +TCP_NLA_REORDERING = 9, +TCP_NLA_MIN_RTT = 10, +TCP_NLA_RECUR_RETRANS = 11, +TCP_NLA_DELIVERY_RATE_APP_LMT = 12, +TCP_NLA_SNDQ_SIZE = 13, +TCP_NLA_CA_STATE = 14, +TCP_NLA_SND_SSTHRESH = 15, +TCP_NLA_DELIVERED = 16, +TCP_NLA_DELIVERED_CE = 17, +TCP_NLA_BYTES_SENT = 18, +TCP_NLA_BYTES_RETRANS = 19, +TCP_NLA_DSACK_DUPS = 20, +TCP_NLA_REORD_SEEN = 21, +TCP_NLA_SRTT = 22, +TCP_NLA_TIMEOUT_REHASH = 23, +TCP_NLA_BYTES_NOTSENT = 24, +TCP_NLA_EDT = 25, +TCP_NLA_TTL = 26, +TCP_NLA_REHASH = 27, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union iphdr__bindgen_ty_1 { +pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union in6_addr__bindgen_ty_1 { +pub u6_addr8: [__u8; 16usize], +pub u6_addr16: [__be16; 8usize], +pub u6_addr32: [__be32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ipv6hdr__bindgen_ty_1 { +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union tcp_word_hdr { +pub hdr: tcphdr, +pub words: [__be32; 5usize], +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} +impl iphdr { +#[inline] +pub fn ihl(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_ihl(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; +ihl as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit +} +} +impl ipv6hdr { +#[inline] +pub fn priority(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_priority(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let priority: u8 = unsafe { ::core::mem::transmute(priority) }; +priority as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcphdr { +#[inline] +pub fn res1(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } +} +#[inline] +pub fn set_res1(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn doff(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } +} +#[inline] +pub fn set_doff(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn fin(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } +} +#[inline] +pub fn set_fin(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn syn(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } +} +#[inline] +pub fn set_syn(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 1u8, val as u64) +} +} +#[inline] +pub fn rst(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } +} +#[inline] +pub fn set_rst(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(10usize, 1u8, val as u64) +} +} +#[inline] +pub fn psh(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } +} +#[inline] +pub fn set_psh(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(11usize, 1u8, val as u64) +} +} +#[inline] +pub fn ack(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } +} +#[inline] +pub fn set_ack(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(12usize, 1u8, val as u64) +} +} +#[inline] +pub fn urg(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } +} +#[inline] +pub fn set_urg(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(13usize, 1u8, val as u64) +} +} +#[inline] +pub fn ece(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } +} +#[inline] +pub fn set_ece(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(14usize, 1u8, val as u64) +} +} +#[inline] +pub fn cwr(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +} +#[inline] +pub fn set_cwr(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(15usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let res1: u16 = unsafe { ::core::mem::transmute(res1) }; +res1 as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let doff: u16 = unsafe { ::core::mem::transmute(doff) }; +doff as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let fin: u16 = unsafe { ::core::mem::transmute(fin) }; +fin as u64 +}); +__bindgen_bitfield_unit.set(9usize, 1u8, { +let syn: u16 = unsafe { ::core::mem::transmute(syn) }; +syn as u64 +}); +__bindgen_bitfield_unit.set(10usize, 1u8, { +let rst: u16 = unsafe { ::core::mem::transmute(rst) }; +rst as u64 +}); +__bindgen_bitfield_unit.set(11usize, 1u8, { +let psh: u16 = unsafe { ::core::mem::transmute(psh) }; +psh as u64 +}); +__bindgen_bitfield_unit.set(12usize, 1u8, { +let ack: u16 = unsafe { ::core::mem::transmute(ack) }; +ack as u64 +}); +__bindgen_bitfield_unit.set(13usize, 1u8, { +let urg: u16 = unsafe { ::core::mem::transmute(urg) }; +urg as u64 +}); +__bindgen_bitfield_unit.set(14usize, 1u8, { +let ece: u16 = unsafe { ::core::mem::transmute(ece) }; +ece as u64 +}); +__bindgen_bitfield_unit.set(15usize, 1u8, { +let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; +cwr as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcp_info { +#[inline] +pub fn tcpi_snd_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_rcv_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +} +#[inline] +pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn tcpi_fastopen_client_fail(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +} +#[inline] +pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 2u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; +tcpi_snd_wscale as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; +tcpi_rcv_wscale as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; +tcpi_delivery_rate_app_limited as u64 +}); +__bindgen_bitfield_unit.set(9usize, 2u8, { +let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; +tcpi_fastopen_client_fail as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/prctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/prctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/prctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,221 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prctl_mm_map { +pub start_code: __u64, +pub end_code: __u64, +pub start_data: __u64, +pub end_data: __u64, +pub start_brk: __u64, +pub brk: __u64, +pub start_stack: __u64, +pub arg_start: __u64, +pub arg_end: __u64, +pub env_start: __u64, +pub env_end: __u64, +pub auxv: *mut __u64, +pub auxv_size: __u32, +pub exe_fd: __u32, +} +pub const PR_SET_PDEATHSIG: u32 = 1; +pub const PR_GET_PDEATHSIG: u32 = 2; +pub const PR_GET_DUMPABLE: u32 = 3; +pub const PR_SET_DUMPABLE: u32 = 4; +pub const PR_GET_UNALIGN: u32 = 5; +pub const PR_SET_UNALIGN: u32 = 6; +pub const PR_UNALIGN_NOPRINT: u32 = 1; +pub const PR_UNALIGN_SIGBUS: u32 = 2; +pub const PR_GET_KEEPCAPS: u32 = 7; +pub const PR_SET_KEEPCAPS: u32 = 8; +pub const PR_GET_FPEMU: u32 = 9; +pub const PR_SET_FPEMU: u32 = 10; +pub const PR_FPEMU_NOPRINT: u32 = 1; +pub const PR_FPEMU_SIGFPE: u32 = 2; +pub const PR_GET_FPEXC: u32 = 11; +pub const PR_SET_FPEXC: u32 = 12; +pub const PR_FP_EXC_SW_ENABLE: u32 = 128; +pub const PR_FP_EXC_DIV: u32 = 65536; +pub const PR_FP_EXC_OVF: u32 = 131072; +pub const PR_FP_EXC_UND: u32 = 262144; +pub const PR_FP_EXC_RES: u32 = 524288; +pub const PR_FP_EXC_INV: u32 = 1048576; +pub const PR_FP_EXC_DISABLED: u32 = 0; +pub const PR_FP_EXC_NONRECOV: u32 = 1; +pub const PR_FP_EXC_ASYNC: u32 = 2; +pub const PR_FP_EXC_PRECISE: u32 = 3; +pub const PR_GET_TIMING: u32 = 13; +pub const PR_SET_TIMING: u32 = 14; +pub const PR_TIMING_STATISTICAL: u32 = 0; +pub const PR_TIMING_TIMESTAMP: u32 = 1; +pub const PR_SET_NAME: u32 = 15; +pub const PR_GET_NAME: u32 = 16; +pub const PR_GET_ENDIAN: u32 = 19; +pub const PR_SET_ENDIAN: u32 = 20; +pub const PR_ENDIAN_BIG: u32 = 0; +pub const PR_ENDIAN_LITTLE: u32 = 1; +pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; +pub const PR_GET_SECCOMP: u32 = 21; +pub const PR_SET_SECCOMP: u32 = 22; +pub const PR_CAPBSET_READ: u32 = 23; +pub const PR_CAPBSET_DROP: u32 = 24; +pub const PR_GET_TSC: u32 = 25; +pub const PR_SET_TSC: u32 = 26; +pub const PR_TSC_ENABLE: u32 = 1; +pub const PR_TSC_SIGSEGV: u32 = 2; +pub const PR_GET_SECUREBITS: u32 = 27; +pub const PR_SET_SECUREBITS: u32 = 28; +pub const PR_SET_TIMERSLACK: u32 = 29; +pub const PR_GET_TIMERSLACK: u32 = 30; +pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; +pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; +pub const PR_MCE_KILL: u32 = 33; +pub const PR_MCE_KILL_CLEAR: u32 = 0; +pub const PR_MCE_KILL_SET: u32 = 1; +pub const PR_MCE_KILL_LATE: u32 = 0; +pub const PR_MCE_KILL_EARLY: u32 = 1; +pub const PR_MCE_KILL_DEFAULT: u32 = 2; +pub const PR_MCE_KILL_GET: u32 = 34; +pub const PR_SET_MM: u32 = 35; +pub const PR_SET_MM_START_CODE: u32 = 1; +pub const PR_SET_MM_END_CODE: u32 = 2; +pub const PR_SET_MM_START_DATA: u32 = 3; +pub const PR_SET_MM_END_DATA: u32 = 4; +pub const PR_SET_MM_START_STACK: u32 = 5; +pub const PR_SET_MM_START_BRK: u32 = 6; +pub const PR_SET_MM_BRK: u32 = 7; +pub const PR_SET_MM_ARG_START: u32 = 8; +pub const PR_SET_MM_ARG_END: u32 = 9; +pub const PR_SET_MM_ENV_START: u32 = 10; +pub const PR_SET_MM_ENV_END: u32 = 11; +pub const PR_SET_MM_AUXV: u32 = 12; +pub const PR_SET_MM_EXE_FILE: u32 = 13; +pub const PR_SET_MM_MAP: u32 = 14; +pub const PR_SET_MM_MAP_SIZE: u32 = 15; +pub const PR_SET_PTRACER: u32 = 1499557217; +pub const PR_SET_CHILD_SUBREAPER: u32 = 36; +pub const PR_GET_CHILD_SUBREAPER: u32 = 37; +pub const PR_SET_NO_NEW_PRIVS: u32 = 38; +pub const PR_GET_NO_NEW_PRIVS: u32 = 39; +pub const PR_GET_TID_ADDRESS: u32 = 40; +pub const PR_SET_THP_DISABLE: u32 = 41; +pub const PR_GET_THP_DISABLE: u32 = 42; +pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; +pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; +pub const PR_SET_FP_MODE: u32 = 45; +pub const PR_GET_FP_MODE: u32 = 46; +pub const PR_FP_MODE_FR: u32 = 1; +pub const PR_FP_MODE_FRE: u32 = 2; +pub const PR_CAP_AMBIENT: u32 = 47; +pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; +pub const PR_CAP_AMBIENT_RAISE: u32 = 2; +pub const PR_CAP_AMBIENT_LOWER: u32 = 3; +pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; +pub const PR_SVE_SET_VL: u32 = 50; +pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SVE_GET_VL: u32 = 51; +pub const PR_SVE_VL_LEN_MASK: u32 = 65535; +pub const PR_SVE_VL_INHERIT: u32 = 131072; +pub const PR_GET_SPECULATION_CTRL: u32 = 52; +pub const PR_SET_SPECULATION_CTRL: u32 = 53; +pub const PR_SPEC_STORE_BYPASS: u32 = 0; +pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; +pub const PR_SPEC_L1D_FLUSH: u32 = 2; +pub const PR_SPEC_NOT_AFFECTED: u32 = 0; +pub const PR_SPEC_PRCTL: u32 = 1; +pub const PR_SPEC_ENABLE: u32 = 2; +pub const PR_SPEC_DISABLE: u32 = 4; +pub const PR_SPEC_FORCE_DISABLE: u32 = 8; +pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; +pub const PR_PAC_RESET_KEYS: u32 = 54; +pub const PR_PAC_APIAKEY: u32 = 1; +pub const PR_PAC_APIBKEY: u32 = 2; +pub const PR_PAC_APDAKEY: u32 = 4; +pub const PR_PAC_APDBKEY: u32 = 8; +pub const PR_PAC_APGAKEY: u32 = 16; +pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; +pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; +pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; +pub const PR_MTE_TCF_NONE: u32 = 0; +pub const PR_MTE_TCF_SYNC: u32 = 2; +pub const PR_MTE_TCF_ASYNC: u32 = 4; +pub const PR_MTE_TCF_MASK: u32 = 6; +pub const PR_MTE_TAG_SHIFT: u32 = 3; +pub const PR_MTE_TAG_MASK: u32 = 524280; +pub const PR_MTE_TCF_SHIFT: u32 = 1; +pub const PR_SET_IO_FLUSHER: u32 = 57; +pub const PR_GET_IO_FLUSHER: u32 = 58; +pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; +pub const PR_SYS_DISPATCH_OFF: u32 = 0; +pub const PR_SYS_DISPATCH_ON: u32 = 1; +pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; +pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; +pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; +pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; +pub const PR_SCHED_CORE: u32 = 62; +pub const PR_SCHED_CORE_GET: u32 = 0; +pub const PR_SCHED_CORE_CREATE: u32 = 1; +pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; +pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; +pub const PR_SCHED_CORE_MAX: u32 = 4; +pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; +pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; +pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; +pub const PR_SME_SET_VL: u32 = 63; +pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SME_GET_VL: u32 = 64; +pub const PR_SME_VL_LEN_MASK: u32 = 65535; +pub const PR_SME_VL_INHERIT: u32 = 131072; +pub const PR_SET_MDWE: u32 = 65; +pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; +pub const PR_GET_MDWE: u32 = 66; +pub const PR_SET_VMA: u32 = 1398164801; +pub const PR_SET_VMA_ANON_NAME: u32 = 0; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/system.rs temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/system.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/aarch64/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,129 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +#[derive(Debug)] +pub struct sysinfo { +pub uptime: __kernel_long_t, +pub loads: [__kernel_ulong_t; 3usize], +pub totalram: __kernel_ulong_t, +pub freeram: __kernel_ulong_t, +pub sharedram: __kernel_ulong_t, +pub bufferram: __kernel_ulong_t, +pub totalswap: __kernel_ulong_t, +pub freeswap: __kernel_ulong_t, +pub procs: __u16, +pub pad: __u16, +pub totalhigh: __kernel_ulong_t, +pub freehigh: __kernel_ulong_t, +pub mem_unit: __u32, +pub _f: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct oldold_utsname { +pub sysname: [crate::ctypes::c_char; 9usize], +pub nodename: [crate::ctypes::c_char; 9usize], +pub release: [crate::ctypes::c_char; 9usize], +pub version: [crate::ctypes::c_char; 9usize], +pub machine: [crate::ctypes::c_char; 9usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct old_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct new_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +pub domainname: [crate::ctypes::c_char; 65usize], +} +pub const SI_LOAD_SHIFT: u32 = 16; +pub const __OLD_UTS_LEN: u32 = 8; +pub const __NEW_UTS_LEN: u32 = 64; +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/arm/errno.rs temporalio-1.3.0/vendor/linux-raw-sys/src/arm/errno.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/arm/errno.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/arm/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const EPERM: u32 = 1; pub const ENOENT: u32 = 2; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/arm/general.rs temporalio-1.3.0/vendor/linux-raw-sys/src/arm/general.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/arm/general.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/arm/general.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4449 +1,602 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_sighandler_t = ::core::option::Option; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type cap_user_header_t = *mut __user_cap_header_struct; +pub type cap_user_data_t = *mut __user_cap_data_struct; +pub type __kernel_rwf_t = crate::ctypes::c_int; +pub type sigset_t = crate::ctypes::c_ulong; +pub type __signalfn_t = ::core::option::Option; +pub type __sighandler_t = __signalfn_t; +pub type __restorefn_t = ::core::option::Option; +pub type __sigrestore_t = __restorefn_t; +pub type stack_t = sigaltstack; +pub type sigval_t = sigval; +pub type siginfo_t = siginfo; +pub type sigevent_t = sigevent; +pub type cc_t = crate::ctypes::c_uchar; +pub type speed_t = crate::ctypes::c_uint; +pub type tcflag_t = crate::ctypes::c_uint; +pub type __fsword_t = __u32; #[repr(C)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct __BindgenBitfieldUnit { storage: Storage, } -impl __BindgenBitfieldUnit { -#[inline] -pub const fn new(storage: Storage) -> Self { -Self { storage } -} -} -impl __BindgenBitfieldUnit -where -Storage: AsRef<[u8]> + AsMut<[u8]>, -{ -#[inline] -pub fn get_bit(&self, index: usize) -> bool { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = self.storage.as_ref()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -byte & mask == mask -} -#[inline] -pub fn set_bit(&mut self, index: usize, val: bool) { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = &mut self.storage.as_mut()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -if val { -*byte |= mask; -} else { -*byte &= !mask; -} -} -#[inline] -pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -let mut val = 0; -for i in 0..(bit_width as usize) { -if self.get_bit(i + bit_offset) { -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -val |= 1 << index; -} -} -val -} -#[inline] -pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -for i in 0..(bit_width as usize) { -let mask = 1 << i; -let val_bit_is_set = val & mask == mask; -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -self.set_bit(index + bit_offset, val_bit_is_set); -} -} -} #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) -} -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fd_set { +pub fds_bits: [crate::ctypes::c_ulong; 32usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fsid_t { +pub val: [crate::ctypes::c_int; 2usize], } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_header_struct { +pub version: __u32, +pub pid: crate::ctypes::c_int, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_data_struct { +pub effective: __u32, +pub permitted: __u32, +pub inheritable: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data { +pub magic_etc: __le32, +pub data: [vfs_cap_data__bindgen_ty_1; 2usize], } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data { +pub magic_etc: __le32, +pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], +pub rootid: __le32, } #[repr(C)] -pub struct __BindgenUnionField(::core::marker::PhantomData); -impl __BindgenUnionField { -#[inline] -pub const fn new() -> Self { -__BindgenUnionField(::core::marker::PhantomData) +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } -#[inline] -pub unsafe fn as_ref(&self) -> &T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct f_owner_ex { +pub type_: crate::ctypes::c_int, +pub pid: __kernel_pid_t, } -#[inline] -pub unsafe fn as_mut(&mut self) -> &mut T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_off_t, +pub l_len: __kernel_off_t, +pub l_pid: __kernel_pid_t, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock64 { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_loff_t, +pub l_len: __kernel_loff_t, +pub l_pid: __kernel_pid_t, } -impl ::core::default::Default for __BindgenUnionField { -#[inline] -fn default() -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct open_how { +pub flags: __u64, +pub mode: __u64, +pub resolve: __u64, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct epoll_event { +pub events: __poll_t, +pub data: __u64, } -impl ::core::clone::Clone for __BindgenUnionField { -#[inline] -fn clone(&self) -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, } -impl ::core::marker::Copy for __BindgenUnionField {} -impl ::core::fmt::Debug for __BindgenUnionField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__BindgenUnionField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, } -impl ::core::hash::Hash for __BindgenUnionField { -fn hash(&self, _state: &mut H) {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, } -impl ::core::cmp::PartialEq for __BindgenUnionField { -fn eq(&self, _other: &__BindgenUnionField) -> bool { -true +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, } -} -impl ::core::cmp::Eq for __BindgenUnionField {} -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const AT_SYSINFO_EHDR: u32 = 33; -pub const AT_NULL: u32 = 0; -pub const AT_IGNORE: u32 = 1; -pub const AT_EXECFD: u32 = 2; -pub const AT_PHDR: u32 = 3; -pub const AT_PHENT: u32 = 4; -pub const AT_PHNUM: u32 = 5; -pub const AT_PAGESZ: u32 = 6; -pub const AT_BASE: u32 = 7; -pub const AT_FLAGS: u32 = 8; -pub const AT_ENTRY: u32 = 9; -pub const AT_NOTELF: u32 = 10; -pub const AT_UID: u32 = 11; -pub const AT_EUID: u32 = 12; -pub const AT_GID: u32 = 13; -pub const AT_EGID: u32 = 14; -pub const AT_PLATFORM: u32 = 15; -pub const AT_HWCAP: u32 = 16; -pub const AT_CLKTCK: u32 = 17; -pub const AT_SECURE: u32 = 23; -pub const AT_BASE_PLATFORM: u32 = 24; -pub const AT_RANDOM: u32 = 25; -pub const AT_HWCAP2: u32 = 26; -pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; -pub const AT_RSEQ_ALIGN: u32 = 28; -pub const AT_EXECFN: u32 = 31; -pub const AT_MINSIGSTKSZ: u32 = 51; -pub const __BITS_PER_LONG: u32 = 32; -pub const __FD_SETSIZE: u32 = 1024; -pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; -pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; -pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; -pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; -pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; -pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; -pub const VFS_CAP_REVISION_SHIFT: u32 = 24; -pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; -pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; -pub const VFS_CAP_REVISION_1: u32 = 16777216; -pub const VFS_CAP_U32_1: u32 = 1; -pub const VFS_CAP_REVISION_2: u32 = 33554432; -pub const VFS_CAP_U32_2: u32 = 2; -pub const VFS_CAP_REVISION_3: u32 = 50331648; -pub const VFS_CAP_U32_3: u32 = 2; -pub const VFS_CAP_U32: u32 = 2; -pub const VFS_CAP_REVISION: u32 = 50331648; -pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S: u32 = 1; -pub const CAP_CHOWN: u32 = 0; -pub const CAP_DAC_OVERRIDE: u32 = 1; -pub const CAP_DAC_READ_SEARCH: u32 = 2; -pub const CAP_FOWNER: u32 = 3; -pub const CAP_FSETID: u32 = 4; -pub const CAP_KILL: u32 = 5; -pub const CAP_SETGID: u32 = 6; -pub const CAP_SETUID: u32 = 7; -pub const CAP_SETPCAP: u32 = 8; -pub const CAP_LINUX_IMMUTABLE: u32 = 9; -pub const CAP_NET_BIND_SERVICE: u32 = 10; -pub const CAP_NET_BROADCAST: u32 = 11; -pub const CAP_NET_ADMIN: u32 = 12; -pub const CAP_NET_RAW: u32 = 13; -pub const CAP_IPC_LOCK: u32 = 14; -pub const CAP_IPC_OWNER: u32 = 15; -pub const CAP_SYS_MODULE: u32 = 16; -pub const CAP_SYS_RAWIO: u32 = 17; -pub const CAP_SYS_CHROOT: u32 = 18; -pub const CAP_SYS_PTRACE: u32 = 19; -pub const CAP_SYS_PACCT: u32 = 20; -pub const CAP_SYS_ADMIN: u32 = 21; -pub const CAP_SYS_BOOT: u32 = 22; -pub const CAP_SYS_NICE: u32 = 23; -pub const CAP_SYS_RESOURCE: u32 = 24; -pub const CAP_SYS_TIME: u32 = 25; -pub const CAP_SYS_TTY_CONFIG: u32 = 26; -pub const CAP_MKNOD: u32 = 27; -pub const CAP_LEASE: u32 = 28; -pub const CAP_AUDIT_WRITE: u32 = 29; -pub const CAP_AUDIT_CONTROL: u32 = 30; -pub const CAP_SETFCAP: u32 = 31; -pub const CAP_MAC_OVERRIDE: u32 = 32; -pub const CAP_MAC_ADMIN: u32 = 33; -pub const CAP_SYSLOG: u32 = 34; -pub const CAP_WAKE_ALARM: u32 = 35; -pub const CAP_BLOCK_SUSPEND: u32 = 36; -pub const CAP_AUDIT_READ: u32 = 37; -pub const CAP_PERFMON: u32 = 38; -pub const CAP_BPF: u32 = 39; -pub const CAP_CHECKPOINT_RESTORE: u32 = 40; -pub const CAP_LAST_CAP: u32 = 40; -pub const O_DIRECTORY: u32 = 16384; -pub const O_NOFOLLOW: u32 = 32768; -pub const O_DIRECT: u32 = 65536; -pub const O_LARGEFILE: u32 = 131072; -pub const O_ACCMODE: u32 = 3; -pub const O_RDONLY: u32 = 0; -pub const O_WRONLY: u32 = 1; -pub const O_RDWR: u32 = 2; -pub const O_CREAT: u32 = 64; -pub const O_EXCL: u32 = 128; -pub const O_NOCTTY: u32 = 256; -pub const O_TRUNC: u32 = 512; -pub const O_APPEND: u32 = 1024; -pub const O_NONBLOCK: u32 = 2048; -pub const O_DSYNC: u32 = 4096; -pub const FASYNC: u32 = 8192; -pub const O_NOATIME: u32 = 262144; -pub const O_CLOEXEC: u32 = 524288; -pub const __O_SYNC: u32 = 1048576; -pub const O_SYNC: u32 = 1052672; -pub const O_PATH: u32 = 2097152; -pub const __O_TMPFILE: u32 = 4194304; -pub const O_TMPFILE: u32 = 4210688; -pub const O_TMPFILE_MASK: u32 = 4210752; -pub const O_NDELAY: u32 = 2048; -pub const F_DUPFD: u32 = 0; -pub const F_GETFD: u32 = 1; -pub const F_SETFD: u32 = 2; -pub const F_GETFL: u32 = 3; -pub const F_SETFL: u32 = 4; -pub const F_GETLK: u32 = 5; -pub const F_SETLK: u32 = 6; -pub const F_SETLKW: u32 = 7; -pub const F_SETOWN: u32 = 8; -pub const F_GETOWN: u32 = 9; -pub const F_SETSIG: u32 = 10; -pub const F_GETSIG: u32 = 11; -pub const F_GETLK64: u32 = 12; -pub const F_SETLK64: u32 = 13; -pub const F_SETLKW64: u32 = 14; -pub const F_SETOWN_EX: u32 = 15; -pub const F_GETOWN_EX: u32 = 16; -pub const F_GETOWNER_UIDS: u32 = 17; -pub const F_OFD_GETLK: u32 = 36; -pub const F_OFD_SETLK: u32 = 37; -pub const F_OFD_SETLKW: u32 = 38; -pub const F_OWNER_TID: u32 = 0; -pub const F_OWNER_PID: u32 = 1; -pub const F_OWNER_PGRP: u32 = 2; -pub const FD_CLOEXEC: u32 = 1; -pub const F_RDLCK: u32 = 0; -pub const F_WRLCK: u32 = 1; -pub const F_UNLCK: u32 = 2; -pub const F_EXLCK: u32 = 4; -pub const F_SHLCK: u32 = 8; -pub const LOCK_SH: u32 = 1; -pub const LOCK_EX: u32 = 2; -pub const LOCK_NB: u32 = 4; -pub const LOCK_UN: u32 = 8; -pub const LOCK_MAND: u32 = 32; -pub const LOCK_READ: u32 = 64; -pub const LOCK_WRITE: u32 = 128; -pub const LOCK_RW: u32 = 192; -pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; -pub const RESOLVE_NO_XDEV: u32 = 1; -pub const RESOLVE_NO_MAGICLINKS: u32 = 2; -pub const RESOLVE_NO_SYMLINKS: u32 = 4; -pub const RESOLVE_BENEATH: u32 = 8; -pub const RESOLVE_IN_ROOT: u32 = 16; -pub const RESOLVE_CACHED: u32 = 32; -pub const F_SETLEASE: u32 = 1024; -pub const F_GETLEASE: u32 = 1025; -pub const F_CANCELLK: u32 = 1029; -pub const F_DUPFD_CLOEXEC: u32 = 1030; -pub const F_NOTIFY: u32 = 1026; -pub const F_SETPIPE_SZ: u32 = 1031; -pub const F_GETPIPE_SZ: u32 = 1032; -pub const F_ADD_SEALS: u32 = 1033; -pub const F_GET_SEALS: u32 = 1034; -pub const F_SEAL_SEAL: u32 = 1; -pub const F_SEAL_SHRINK: u32 = 2; -pub const F_SEAL_GROW: u32 = 4; -pub const F_SEAL_WRITE: u32 = 8; -pub const F_SEAL_FUTURE_WRITE: u32 = 16; -pub const F_SEAL_EXEC: u32 = 32; -pub const F_GET_RW_HINT: u32 = 1035; -pub const F_SET_RW_HINT: u32 = 1036; -pub const F_GET_FILE_RW_HINT: u32 = 1037; -pub const F_SET_FILE_RW_HINT: u32 = 1038; -pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; -pub const RWH_WRITE_LIFE_NONE: u32 = 1; -pub const RWH_WRITE_LIFE_SHORT: u32 = 2; -pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; -pub const RWH_WRITE_LIFE_LONG: u32 = 4; -pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; -pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; -pub const DN_ACCESS: u32 = 1; -pub const DN_MODIFY: u32 = 2; -pub const DN_CREATE: u32 = 4; -pub const DN_DELETE: u32 = 8; -pub const DN_RENAME: u32 = 16; -pub const DN_ATTRIB: u32 = 32; -pub const DN_MULTISHOT: u32 = 2147483648; -pub const AT_FDCWD: i32 = -100; -pub const AT_SYMLINK_NOFOLLOW: u32 = 256; -pub const AT_EACCESS: u32 = 512; -pub const AT_REMOVEDIR: u32 = 512; -pub const AT_SYMLINK_FOLLOW: u32 = 1024; -pub const AT_NO_AUTOMOUNT: u32 = 2048; -pub const AT_EMPTY_PATH: u32 = 4096; -pub const AT_STATX_SYNC_TYPE: u32 = 24576; -pub const AT_STATX_SYNC_AS_STAT: u32 = 0; -pub const AT_STATX_FORCE_SYNC: u32 = 8192; -pub const AT_STATX_DONT_SYNC: u32 = 16384; -pub const AT_RECURSIVE: u32 = 32768; -pub const EPOLL_CLOEXEC: u32 = 524288; -pub const EPOLL_CTL_ADD: u32 = 1; -pub const EPOLL_CTL_DEL: u32 = 2; -pub const EPOLL_CTL_MOD: u32 = 3; -pub const POSIX_FADV_NORMAL: u32 = 0; -pub const POSIX_FADV_RANDOM: u32 = 1; -pub const POSIX_FADV_SEQUENTIAL: u32 = 2; -pub const POSIX_FADV_WILLNEED: u32 = 3; -pub const POSIX_FADV_DONTNEED: u32 = 4; -pub const POSIX_FADV_NOREUSE: u32 = 5; -pub const FALLOC_FL_KEEP_SIZE: u32 = 1; -pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; -pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; -pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; -pub const FALLOC_FL_ZERO_RANGE: u32 = 16; -pub const FALLOC_FL_INSERT_RANGE: u32 = 32; -pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; -pub const NR_OPEN: u32 = 1024; -pub const NGROUPS_MAX: u32 = 65536; -pub const ARG_MAX: u32 = 131072; -pub const LINK_MAX: u32 = 127; -pub const MAX_CANON: u32 = 255; -pub const MAX_INPUT: u32 = 255; -pub const NAME_MAX: u32 = 255; -pub const PATH_MAX: u32 = 4096; -pub const PIPE_BUF: u32 = 4096; -pub const XATTR_NAME_MAX: u32 = 255; -pub const XATTR_SIZE_MAX: u32 = 65536; -pub const XATTR_LIST_MAX: u32 = 65536; -pub const RTSIG_MAX: u32 = 32; -pub const _IOC_NRBITS: u32 = 8; -pub const _IOC_TYPEBITS: u32 = 8; -pub const _IOC_SIZEBITS: u32 = 14; -pub const _IOC_DIRBITS: u32 = 2; -pub const _IOC_NRMASK: u32 = 255; -pub const _IOC_TYPEMASK: u32 = 255; -pub const _IOC_SIZEMASK: u32 = 16383; -pub const _IOC_DIRMASK: u32 = 3; -pub const _IOC_NRSHIFT: u32 = 0; -pub const _IOC_TYPESHIFT: u32 = 8; -pub const _IOC_SIZESHIFT: u32 = 16; -pub const _IOC_DIRSHIFT: u32 = 30; -pub const _IOC_NONE: u32 = 0; -pub const _IOC_WRITE: u32 = 1; -pub const _IOC_READ: u32 = 2; -pub const IOC_IN: u32 = 1073741824; -pub const IOC_OUT: u32 = 2147483648; -pub const IOC_INOUT: u32 = 3221225472; -pub const IOCSIZE_MASK: u32 = 1073676288; -pub const IOCSIZE_SHIFT: u32 = 16; -pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; -pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; -pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; -pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; -pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; -pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; -pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; -pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; -pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; -pub const FSCRYPT_POLICY_V1: u32 = 0; -pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; -pub const FSCRYPT_POLICY_V2: u32 = 2; -pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; -pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; -pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; -pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; -pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; -pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; -pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; -pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FS_POLICY_FLAGS_VALID: u32 = 7; -pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; -pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; -pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; -pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; -pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; -pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; -pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; -pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; -pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FS_MAX_KEY_SIZE: u32 = 64; -pub const MS_RDONLY: u32 = 1; -pub const MS_NOSUID: u32 = 2; -pub const MS_NODEV: u32 = 4; -pub const MS_NOEXEC: u32 = 8; -pub const MS_SYNCHRONOUS: u32 = 16; -pub const MS_REMOUNT: u32 = 32; -pub const MS_MANDLOCK: u32 = 64; -pub const MS_DIRSYNC: u32 = 128; -pub const MS_NOSYMFOLLOW: u32 = 256; -pub const MS_NOATIME: u32 = 1024; -pub const MS_NODIRATIME: u32 = 2048; -pub const MS_BIND: u32 = 4096; -pub const MS_MOVE: u32 = 8192; -pub const MS_REC: u32 = 16384; -pub const MS_VERBOSE: u32 = 32768; -pub const MS_SILENT: u32 = 32768; -pub const MS_POSIXACL: u32 = 65536; -pub const MS_UNBINDABLE: u32 = 131072; -pub const MS_PRIVATE: u32 = 262144; -pub const MS_SLAVE: u32 = 524288; -pub const MS_SHARED: u32 = 1048576; -pub const MS_RELATIME: u32 = 2097152; -pub const MS_KERNMOUNT: u32 = 4194304; -pub const MS_I_VERSION: u32 = 8388608; -pub const MS_STRICTATIME: u32 = 16777216; -pub const MS_LAZYTIME: u32 = 33554432; -pub const MS_SUBMOUNT: u32 = 67108864; -pub const MS_NOREMOTELOCK: u32 = 134217728; -pub const MS_NOSEC: u32 = 268435456; -pub const MS_BORN: u32 = 536870912; -pub const MS_ACTIVE: u32 = 1073741824; -pub const MS_NOUSER: u32 = 2147483648; -pub const MS_RMT_MASK: u32 = 41943121; -pub const MS_MGC_VAL: u32 = 3236757504; -pub const MS_MGC_MSK: u32 = 4294901760; -pub const OPEN_TREE_CLONE: u32 = 1; -pub const OPEN_TREE_CLOEXEC: u32 = 524288; -pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; -pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; -pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; -pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; -pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; -pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; -pub const MOVE_MOUNT_SET_GROUP: u32 = 256; -pub const MOVE_MOUNT__MASK: u32 = 375; -pub const FSOPEN_CLOEXEC: u32 = 1; -pub const FSPICK_CLOEXEC: u32 = 1; -pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; -pub const FSPICK_NO_AUTOMOUNT: u32 = 4; -pub const FSPICK_EMPTY_PATH: u32 = 8; -pub const FSMOUNT_CLOEXEC: u32 = 1; -pub const MOUNT_ATTR_RDONLY: u32 = 1; -pub const MOUNT_ATTR_NOSUID: u32 = 2; -pub const MOUNT_ATTR_NODEV: u32 = 4; -pub const MOUNT_ATTR_NOEXEC: u32 = 8; -pub const MOUNT_ATTR__ATIME: u32 = 112; -pub const MOUNT_ATTR_RELATIME: u32 = 0; -pub const MOUNT_ATTR_NOATIME: u32 = 16; -pub const MOUNT_ATTR_STRICTATIME: u32 = 32; -pub const MOUNT_ATTR_NODIRATIME: u32 = 128; -pub const MOUNT_ATTR_IDMAP: u32 = 1048576; -pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; -pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; -pub const INR_OPEN_CUR: u32 = 1024; -pub const INR_OPEN_MAX: u32 = 4096; -pub const BLOCK_SIZE_BITS: u32 = 10; -pub const BLOCK_SIZE: u32 = 1024; -pub const SEEK_SET: u32 = 0; -pub const SEEK_CUR: u32 = 1; -pub const SEEK_END: u32 = 2; -pub const SEEK_DATA: u32 = 3; -pub const SEEK_HOLE: u32 = 4; -pub const SEEK_MAX: u32 = 4; -pub const RENAME_NOREPLACE: u32 = 1; -pub const RENAME_EXCHANGE: u32 = 2; -pub const RENAME_WHITEOUT: u32 = 4; -pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; -pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; -pub const NR_FILE: u32 = 8192; -pub const FS_XFLAG_REALTIME: u32 = 1; -pub const FS_XFLAG_PREALLOC: u32 = 2; -pub const FS_XFLAG_IMMUTABLE: u32 = 8; -pub const FS_XFLAG_APPEND: u32 = 16; -pub const FS_XFLAG_SYNC: u32 = 32; -pub const FS_XFLAG_NOATIME: u32 = 64; -pub const FS_XFLAG_NODUMP: u32 = 128; -pub const FS_XFLAG_RTINHERIT: u32 = 256; -pub const FS_XFLAG_PROJINHERIT: u32 = 512; -pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; -pub const FS_XFLAG_EXTSIZE: u32 = 2048; -pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; -pub const FS_XFLAG_NODEFRAG: u32 = 8192; -pub const FS_XFLAG_FILESTREAM: u32 = 16384; -pub const FS_XFLAG_DAX: u32 = 32768; -pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; -pub const FS_XFLAG_HASATTR: u32 = 2147483648; -pub const BMAP_IOCTL: u32 = 1; -pub const FSLABEL_MAX: u32 = 256; -pub const FS_SECRM_FL: u32 = 1; -pub const FS_UNRM_FL: u32 = 2; -pub const FS_COMPR_FL: u32 = 4; -pub const FS_SYNC_FL: u32 = 8; -pub const FS_IMMUTABLE_FL: u32 = 16; -pub const FS_APPEND_FL: u32 = 32; -pub const FS_NODUMP_FL: u32 = 64; -pub const FS_NOATIME_FL: u32 = 128; -pub const FS_DIRTY_FL: u32 = 256; -pub const FS_COMPRBLK_FL: u32 = 512; -pub const FS_NOCOMP_FL: u32 = 1024; -pub const FS_ENCRYPT_FL: u32 = 2048; -pub const FS_BTREE_FL: u32 = 4096; -pub const FS_INDEX_FL: u32 = 4096; -pub const FS_IMAGIC_FL: u32 = 8192; -pub const FS_JOURNAL_DATA_FL: u32 = 16384; -pub const FS_NOTAIL_FL: u32 = 32768; -pub const FS_DIRSYNC_FL: u32 = 65536; -pub const FS_TOPDIR_FL: u32 = 131072; -pub const FS_HUGE_FILE_FL: u32 = 262144; -pub const FS_EXTENT_FL: u32 = 524288; -pub const FS_VERITY_FL: u32 = 1048576; -pub const FS_EA_INODE_FL: u32 = 2097152; -pub const FS_EOFBLOCKS_FL: u32 = 4194304; -pub const FS_NOCOW_FL: u32 = 8388608; -pub const FS_DAX_FL: u32 = 33554432; -pub const FS_INLINE_DATA_FL: u32 = 268435456; -pub const FS_PROJINHERIT_FL: u32 = 536870912; -pub const FS_CASEFOLD_FL: u32 = 1073741824; -pub const FS_RESERVED_FL: u32 = 2147483648; -pub const FS_FL_USER_VISIBLE: u32 = 253951; -pub const FS_FL_USER_MODIFIABLE: u32 = 229631; -pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; -pub const SYNC_FILE_RANGE_WRITE: u32 = 2; -pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; -pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; -pub const FUTEX_WAIT: u32 = 0; -pub const FUTEX_WAKE: u32 = 1; -pub const FUTEX_FD: u32 = 2; -pub const FUTEX_REQUEUE: u32 = 3; -pub const FUTEX_CMP_REQUEUE: u32 = 4; -pub const FUTEX_WAKE_OP: u32 = 5; -pub const FUTEX_LOCK_PI: u32 = 6; -pub const FUTEX_UNLOCK_PI: u32 = 7; -pub const FUTEX_TRYLOCK_PI: u32 = 8; -pub const FUTEX_WAIT_BITSET: u32 = 9; -pub const FUTEX_WAKE_BITSET: u32 = 10; -pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; -pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; -pub const FUTEX_LOCK_PI2: u32 = 13; -pub const FUTEX_PRIVATE_FLAG: u32 = 128; -pub const FUTEX_CLOCK_REALTIME: u32 = 256; -pub const FUTEX_CMD_MASK: i32 = -385; -pub const FUTEX_WAIT_PRIVATE: u32 = 128; -pub const FUTEX_WAKE_PRIVATE: u32 = 129; -pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; -pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; -pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; -pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; -pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; -pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; -pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; -pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; -pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; -pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; -pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; -pub const FUTEX_32: u32 = 2; -pub const FUTEX_WAITV_MAX: u32 = 128; -pub const FUTEX_WAITERS: u32 = 2147483648; -pub const FUTEX_OWNER_DIED: u32 = 1073741824; -pub const FUTEX_TID_MASK: u32 = 1073741823; -pub const ROBUST_LIST_LIMIT: u32 = 2048; -pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; -pub const FUTEX_OP_SET: u32 = 0; -pub const FUTEX_OP_ADD: u32 = 1; -pub const FUTEX_OP_OR: u32 = 2; -pub const FUTEX_OP_ANDN: u32 = 3; -pub const FUTEX_OP_XOR: u32 = 4; -pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; -pub const FUTEX_OP_CMP_EQ: u32 = 0; -pub const FUTEX_OP_CMP_NE: u32 = 1; -pub const FUTEX_OP_CMP_LT: u32 = 2; -pub const FUTEX_OP_CMP_LE: u32 = 3; -pub const FUTEX_OP_CMP_GT: u32 = 4; -pub const FUTEX_OP_CMP_GE: u32 = 5; -pub const __UAPI_DEF_IF_IFCONF: u32 = 1; -pub const __UAPI_DEF_IF_IFMAP: u32 = 1; -pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1; -pub const __UAPI_DEF_IF_IFREQ: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1; -pub const __UAPI_DEF_IN_ADDR: u32 = 1; -pub const __UAPI_DEF_IN_IPPROTO: u32 = 1; -pub const __UAPI_DEF_IN_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP_MREQ: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1; -pub const __UAPI_DEF_IN_CLASS: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1; -pub const __UAPI_DEF_IPV6_MREQ: u32 = 1; -pub const __UAPI_DEF_IPPROTO_V6: u32 = 1; -pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1; -pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1; -pub const __UAPI_DEF_XATTR: u32 = 1; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const IP_TOS: u32 = 1; -pub const IP_TTL: u32 = 2; -pub const IP_HDRINCL: u32 = 3; -pub const IP_OPTIONS: u32 = 4; -pub const IP_ROUTER_ALERT: u32 = 5; -pub const IP_RECVOPTS: u32 = 6; -pub const IP_RETOPTS: u32 = 7; -pub const IP_PKTINFO: u32 = 8; -pub const IP_PKTOPTIONS: u32 = 9; -pub const IP_MTU_DISCOVER: u32 = 10; -pub const IP_RECVERR: u32 = 11; -pub const IP_RECVTTL: u32 = 12; -pub const IP_RECVTOS: u32 = 13; -pub const IP_MTU: u32 = 14; -pub const IP_FREEBIND: u32 = 15; -pub const IP_IPSEC_POLICY: u32 = 16; -pub const IP_XFRM_POLICY: u32 = 17; -pub const IP_PASSSEC: u32 = 18; -pub const IP_TRANSPARENT: u32 = 19; -pub const IP_RECVRETOPTS: u32 = 7; -pub const IP_ORIGDSTADDR: u32 = 20; -pub const IP_RECVORIGDSTADDR: u32 = 20; -pub const IP_MINTTL: u32 = 21; -pub const IP_NODEFRAG: u32 = 22; -pub const IP_CHECKSUM: u32 = 23; -pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; -pub const IP_RECVFRAGSIZE: u32 = 25; -pub const IP_RECVERR_RFC4884: u32 = 26; -pub const IP_PMTUDISC_DONT: u32 = 0; -pub const IP_PMTUDISC_WANT: u32 = 1; -pub const IP_PMTUDISC_DO: u32 = 2; -pub const IP_PMTUDISC_PROBE: u32 = 3; -pub const IP_PMTUDISC_INTERFACE: u32 = 4; -pub const IP_PMTUDISC_OMIT: u32 = 5; -pub const IP_MULTICAST_IF: u32 = 32; -pub const IP_MULTICAST_TTL: u32 = 33; -pub const IP_MULTICAST_LOOP: u32 = 34; -pub const IP_ADD_MEMBERSHIP: u32 = 35; -pub const IP_DROP_MEMBERSHIP: u32 = 36; -pub const IP_UNBLOCK_SOURCE: u32 = 37; -pub const IP_BLOCK_SOURCE: u32 = 38; -pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; -pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; -pub const IP_MSFILTER: u32 = 41; -pub const MCAST_JOIN_GROUP: u32 = 42; -pub const MCAST_BLOCK_SOURCE: u32 = 43; -pub const MCAST_UNBLOCK_SOURCE: u32 = 44; -pub const MCAST_LEAVE_GROUP: u32 = 45; -pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; -pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; -pub const MCAST_MSFILTER: u32 = 48; -pub const IP_MULTICAST_ALL: u32 = 49; -pub const IP_UNICAST_IF: u32 = 50; -pub const IP_LOCAL_PORT_RANGE: u32 = 51; -pub const MCAST_EXCLUDE: u32 = 0; -pub const MCAST_INCLUDE: u32 = 1; -pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; -pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const __SOCK_SIZE__: u32 = 16; -pub const IN_CLASSA_NET: u32 = 4278190080; -pub const IN_CLASSA_NSHIFT: u32 = 24; -pub const IN_CLASSA_HOST: u32 = 16777215; -pub const IN_CLASSA_MAX: u32 = 128; -pub const IN_CLASSB_NET: u32 = 4294901760; -pub const IN_CLASSB_NSHIFT: u32 = 16; -pub const IN_CLASSB_HOST: u32 = 65535; -pub const IN_CLASSB_MAX: u32 = 65536; -pub const IN_CLASSC_NET: u32 = 4294967040; -pub const IN_CLASSC_NSHIFT: u32 = 8; -pub const IN_CLASSC_HOST: u32 = 255; -pub const IN_MULTICAST_NET: u32 = 3758096384; -pub const IN_CLASSE_NET: u32 = 4294967295; -pub const IN_CLASSE_NSHIFT: u32 = 0; -pub const IN_LOOPBACKNET: u32 = 127; -pub const INADDR_LOOPBACK: u32 = 2130706433; -pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; -pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; -pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; -pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; -pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; -pub const __LITTLE_ENDIAN: u32 = 1234; -pub const IN_ACCESS: u32 = 1; -pub const IN_MODIFY: u32 = 2; -pub const IN_ATTRIB: u32 = 4; -pub const IN_CLOSE_WRITE: u32 = 8; -pub const IN_CLOSE_NOWRITE: u32 = 16; -pub const IN_OPEN: u32 = 32; -pub const IN_MOVED_FROM: u32 = 64; -pub const IN_MOVED_TO: u32 = 128; -pub const IN_CREATE: u32 = 256; -pub const IN_DELETE: u32 = 512; -pub const IN_DELETE_SELF: u32 = 1024; -pub const IN_MOVE_SELF: u32 = 2048; -pub const IN_UNMOUNT: u32 = 8192; -pub const IN_Q_OVERFLOW: u32 = 16384; -pub const IN_IGNORED: u32 = 32768; -pub const IN_CLOSE: u32 = 24; -pub const IN_MOVE: u32 = 192; -pub const IN_ONLYDIR: u32 = 16777216; -pub const IN_DONT_FOLLOW: u32 = 33554432; -pub const IN_EXCL_UNLINK: u32 = 67108864; -pub const IN_MASK_CREATE: u32 = 268435456; -pub const IN_MASK_ADD: u32 = 536870912; -pub const IN_ISDIR: u32 = 1073741824; -pub const IN_ONESHOT: u32 = 2147483648; -pub const IN_ALL_EVENTS: u32 = 4095; -pub const IN_CLOEXEC: u32 = 524288; -pub const IN_NONBLOCK: u32 = 2048; -pub const IPTOS_TOS_MASK: u32 = 30; -pub const IPTOS_LOWDELAY: u32 = 16; -pub const IPTOS_THROUGHPUT: u32 = 8; -pub const IPTOS_RELIABILITY: u32 = 4; -pub const IPTOS_MINCOST: u32 = 2; -pub const IPTOS_PREC_MASK: u32 = 224; -pub const IPTOS_PREC_NETCONTROL: u32 = 224; -pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; -pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; -pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; -pub const IPTOS_PREC_FLASH: u32 = 96; -pub const IPTOS_PREC_IMMEDIATE: u32 = 64; -pub const IPTOS_PREC_PRIORITY: u32 = 32; -pub const IPTOS_PREC_ROUTINE: u32 = 0; -pub const IPOPT_COPY: u32 = 128; -pub const IPOPT_CLASS_MASK: u32 = 96; -pub const IPOPT_NUMBER_MASK: u32 = 31; -pub const IPOPT_CONTROL: u32 = 0; -pub const IPOPT_RESERVED1: u32 = 32; -pub const IPOPT_MEASUREMENT: u32 = 64; -pub const IPOPT_RESERVED2: u32 = 96; -pub const IPOPT_END: u32 = 0; -pub const IPOPT_NOOP: u32 = 1; -pub const IPOPT_SEC: u32 = 130; -pub const IPOPT_LSRR: u32 = 131; -pub const IPOPT_TIMESTAMP: u32 = 68; -pub const IPOPT_CIPSO: u32 = 134; -pub const IPOPT_RR: u32 = 7; -pub const IPOPT_SID: u32 = 136; -pub const IPOPT_SSRR: u32 = 137; -pub const IPOPT_RA: u32 = 148; -pub const IPVERSION: u32 = 4; -pub const MAXTTL: u32 = 255; -pub const IPDEFTTL: u32 = 64; -pub const IPOPT_OPTVAL: u32 = 0; -pub const IPOPT_OLEN: u32 = 1; -pub const IPOPT_OFFSET: u32 = 2; -pub const IPOPT_MINOFF: u32 = 4; -pub const MAX_IPOPTLEN: u32 = 40; -pub const IPOPT_NOP: u32 = 1; -pub const IPOPT_EOL: u32 = 0; -pub const IPOPT_TS: u32 = 68; -pub const IPOPT_TS_TSONLY: u32 = 0; -pub const IPOPT_TS_TSANDADDR: u32 = 1; -pub const IPOPT_TS_PRESPEC: u32 = 3; -pub const IPV4_BEET_PHMAXLEN: u32 = 8; -pub const IPV6_FL_A_GET: u32 = 0; -pub const IPV6_FL_A_PUT: u32 = 1; -pub const IPV6_FL_A_RENEW: u32 = 2; -pub const IPV6_FL_F_CREATE: u32 = 1; -pub const IPV6_FL_F_EXCL: u32 = 2; -pub const IPV6_FL_F_REFLECT: u32 = 4; -pub const IPV6_FL_F_REMOTE: u32 = 8; -pub const IPV6_FL_S_NONE: u32 = 0; -pub const IPV6_FL_S_EXCL: u32 = 1; -pub const IPV6_FL_S_PROCESS: u32 = 2; -pub const IPV6_FL_S_USER: u32 = 3; -pub const IPV6_FL_S_ANY: u32 = 255; -pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; -pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; -pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; -pub const IPV6_PRIORITY_FILLER: u32 = 256; -pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; -pub const IPV6_PRIORITY_RESERVED1: u32 = 768; -pub const IPV6_PRIORITY_BULK: u32 = 1024; -pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; -pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; -pub const IPV6_PRIORITY_CONTROL: u32 = 1792; -pub const IPV6_PRIORITY_8: u32 = 2048; -pub const IPV6_PRIORITY_9: u32 = 2304; -pub const IPV6_PRIORITY_10: u32 = 2560; -pub const IPV6_PRIORITY_11: u32 = 2816; -pub const IPV6_PRIORITY_12: u32 = 3072; -pub const IPV6_PRIORITY_13: u32 = 3328; -pub const IPV6_PRIORITY_14: u32 = 3584; -pub const IPV6_PRIORITY_15: u32 = 3840; -pub const IPPROTO_HOPOPTS: u32 = 0; -pub const IPPROTO_ROUTING: u32 = 43; -pub const IPPROTO_FRAGMENT: u32 = 44; -pub const IPPROTO_ICMPV6: u32 = 58; -pub const IPPROTO_NONE: u32 = 59; -pub const IPPROTO_DSTOPTS: u32 = 60; -pub const IPPROTO_MH: u32 = 135; -pub const IPV6_TLV_PAD1: u32 = 0; -pub const IPV6_TLV_PADN: u32 = 1; -pub const IPV6_TLV_ROUTERALERT: u32 = 5; -pub const IPV6_TLV_CALIPSO: u32 = 7; -pub const IPV6_TLV_IOAM: u32 = 49; -pub const IPV6_TLV_JUMBO: u32 = 194; -pub const IPV6_TLV_HAO: u32 = 201; -pub const IPV6_ADDRFORM: u32 = 1; -pub const IPV6_2292PKTINFO: u32 = 2; -pub const IPV6_2292HOPOPTS: u32 = 3; -pub const IPV6_2292DSTOPTS: u32 = 4; -pub const IPV6_2292RTHDR: u32 = 5; -pub const IPV6_2292PKTOPTIONS: u32 = 6; -pub const IPV6_CHECKSUM: u32 = 7; -pub const IPV6_2292HOPLIMIT: u32 = 8; -pub const IPV6_NEXTHOP: u32 = 9; -pub const IPV6_AUTHHDR: u32 = 10; -pub const IPV6_FLOWINFO: u32 = 11; -pub const IPV6_UNICAST_HOPS: u32 = 16; -pub const IPV6_MULTICAST_IF: u32 = 17; -pub const IPV6_MULTICAST_HOPS: u32 = 18; -pub const IPV6_MULTICAST_LOOP: u32 = 19; -pub const IPV6_ADD_MEMBERSHIP: u32 = 20; -pub const IPV6_DROP_MEMBERSHIP: u32 = 21; -pub const IPV6_ROUTER_ALERT: u32 = 22; -pub const IPV6_MTU_DISCOVER: u32 = 23; -pub const IPV6_MTU: u32 = 24; -pub const IPV6_RECVERR: u32 = 25; -pub const IPV6_V6ONLY: u32 = 26; -pub const IPV6_JOIN_ANYCAST: u32 = 27; -pub const IPV6_LEAVE_ANYCAST: u32 = 28; -pub const IPV6_MULTICAST_ALL: u32 = 29; -pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; -pub const IPV6_RECVERR_RFC4884: u32 = 31; -pub const IPV6_PMTUDISC_DONT: u32 = 0; -pub const IPV6_PMTUDISC_WANT: u32 = 1; -pub const IPV6_PMTUDISC_DO: u32 = 2; -pub const IPV6_PMTUDISC_PROBE: u32 = 3; -pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; -pub const IPV6_PMTUDISC_OMIT: u32 = 5; -pub const IPV6_FLOWLABEL_MGR: u32 = 32; -pub const IPV6_FLOWINFO_SEND: u32 = 33; -pub const IPV6_IPSEC_POLICY: u32 = 34; -pub const IPV6_XFRM_POLICY: u32 = 35; -pub const IPV6_HDRINCL: u32 = 36; -pub const IPV6_RECVPKTINFO: u32 = 49; -pub const IPV6_PKTINFO: u32 = 50; -pub const IPV6_RECVHOPLIMIT: u32 = 51; -pub const IPV6_HOPLIMIT: u32 = 52; -pub const IPV6_RECVHOPOPTS: u32 = 53; -pub const IPV6_HOPOPTS: u32 = 54; -pub const IPV6_RTHDRDSTOPTS: u32 = 55; -pub const IPV6_RECVRTHDR: u32 = 56; -pub const IPV6_RTHDR: u32 = 57; -pub const IPV6_RECVDSTOPTS: u32 = 58; -pub const IPV6_DSTOPTS: u32 = 59; -pub const IPV6_RECVPATHMTU: u32 = 60; -pub const IPV6_PATHMTU: u32 = 61; -pub const IPV6_DONTFRAG: u32 = 62; -pub const IPV6_RECVTCLASS: u32 = 66; -pub const IPV6_TCLASS: u32 = 67; -pub const IPV6_AUTOFLOWLABEL: u32 = 70; -pub const IPV6_ADDR_PREFERENCES: u32 = 72; -pub const IPV6_PREFER_SRC_TMP: u32 = 1; -pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; -pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; -pub const IPV6_PREFER_SRC_COA: u32 = 4; -pub const IPV6_PREFER_SRC_HOME: u32 = 1024; -pub const IPV6_PREFER_SRC_CGA: u32 = 8; -pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; -pub const IPV6_MINHOPCOUNT: u32 = 73; -pub const IPV6_ORIGDSTADDR: u32 = 74; -pub const IPV6_RECVORIGDSTADDR: u32 = 74; -pub const IPV6_TRANSPARENT: u32 = 75; -pub const IPV6_UNICAST_IF: u32 = 76; -pub const IPV6_RECVFRAGSIZE: u32 = 77; -pub const IPV6_FREEBIND: u32 = 78; -pub const IPV6_MIN_MTU: u32 = 1280; -pub const IPV6_SRCRT_STRICT: u32 = 1; -pub const IPV6_SRCRT_TYPE_0: u32 = 0; -pub const IPV6_SRCRT_TYPE_2: u32 = 2; -pub const IPV6_SRCRT_TYPE_3: u32 = 3; -pub const IPV6_SRCRT_TYPE_4: u32 = 4; -pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; -pub const ADFS_SUPER_MAGIC: u32 = 44533; -pub const AFFS_SUPER_MAGIC: u32 = 44543; -pub const AFS_SUPER_MAGIC: u32 = 1397113167; -pub const AUTOFS_SUPER_MAGIC: u32 = 391; -pub const CEPH_SUPER_MAGIC: u32 = 12805120; -pub const CODA_SUPER_MAGIC: u32 = 1937076805; -pub const CRAMFS_MAGIC: u32 = 684539205; -pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; -pub const DEBUGFS_MAGIC: u32 = 1684170528; -pub const SECURITYFS_MAGIC: u32 = 1935894131; -pub const SELINUX_MAGIC: u32 = 4185718668; -pub const SMACK_MAGIC: u32 = 1128357203; -pub const RAMFS_MAGIC: u32 = 2240043254; -pub const TMPFS_MAGIC: u32 = 16914836; -pub const HUGETLBFS_MAGIC: u32 = 2508478710; -pub const SQUASHFS_MAGIC: u32 = 1936814952; -pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; -pub const EFS_SUPER_MAGIC: u32 = 4278867; -pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; -pub const EXT2_SUPER_MAGIC: u32 = 61267; -pub const EXT3_SUPER_MAGIC: u32 = 61267; -pub const XENFS_SUPER_MAGIC: u32 = 2881100148; -pub const EXT4_SUPER_MAGIC: u32 = 61267; -pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; -pub const NILFS_SUPER_MAGIC: u32 = 13364; -pub const F2FS_SUPER_MAGIC: u32 = 4076150800; -pub const HPFS_SUPER_MAGIC: u32 = 4187351113; -pub const ISOFS_SUPER_MAGIC: u32 = 38496; -pub const JFFS2_SUPER_MAGIC: u32 = 29366; -pub const XFS_SUPER_MAGIC: u32 = 1481003842; -pub const PSTOREFS_MAGIC: u32 = 1634035564; -pub const EFIVARFS_MAGIC: u32 = 3730735588; -pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; -pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; -pub const FUSE_SUPER_MAGIC: u32 = 1702057286; -pub const MINIX_SUPER_MAGIC: u32 = 4991; -pub const MINIX_SUPER_MAGIC2: u32 = 5007; -pub const MINIX2_SUPER_MAGIC: u32 = 9320; -pub const MINIX2_SUPER_MAGIC2: u32 = 9336; -pub const MINIX3_SUPER_MAGIC: u32 = 19802; -pub const MSDOS_SUPER_MAGIC: u32 = 19780; -pub const EXFAT_SUPER_MAGIC: u32 = 538032816; -pub const NCP_SUPER_MAGIC: u32 = 22092; -pub const NFS_SUPER_MAGIC: u32 = 26985; -pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; -pub const OPENPROM_SUPER_MAGIC: u32 = 40865; -pub const QNX4_SUPER_MAGIC: u32 = 47; -pub const QNX6_SUPER_MAGIC: u32 = 1746473250; -pub const AFS_FS_MAGIC: u32 = 1799439955; -pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; -pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0"; -pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0"; -pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0"; -pub const SMB_SUPER_MAGIC: u32 = 20859; -pub const CIFS_SUPER_MAGIC: u32 = 4283649346; -pub const SMB2_SUPER_MAGIC: u32 = 4266872130; -pub const CGROUP_SUPER_MAGIC: u32 = 2613483; -pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; -pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; -pub const STACK_END_MAGIC: u32 = 1470918301; -pub const TRACEFS_MAGIC: u32 = 1953653091; -pub const V9FS_MAGIC: u32 = 16914839; -pub const BDEVFS_MAGIC: u32 = 1650746742; -pub const DAXFS_MAGIC: u32 = 1684300152; -pub const BINFMTFS_MAGIC: u32 = 1112100429; -pub const DEVPTS_SUPER_MAGIC: u32 = 7377; -pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; -pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; -pub const PIPEFS_MAGIC: u32 = 1346981957; -pub const PROC_SUPER_MAGIC: u32 = 40864; -pub const SOCKFS_MAGIC: u32 = 1397703499; -pub const SYSFS_MAGIC: u32 = 1650812274; -pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; -pub const MTD_INODE_FS_MAGIC: u32 = 288389204; -pub const ANON_INODE_FS_MAGIC: u32 = 151263540; -pub const BTRFS_TEST_MAGIC: u32 = 1936880249; -pub const NSFS_MAGIC: u32 = 1853056627; -pub const BPF_FS_MAGIC: u32 = 3405662737; -pub const AAFS_MAGIC: u32 = 1513908720; -pub const ZONEFS_MAGIC: u32 = 1515144787; -pub const UDF_SUPER_MAGIC: u32 = 352400198; -pub const DMA_BUF_MAGIC: u32 = 1145913666; -pub const DEVMEM_MAGIC: u32 = 1162691661; -pub const SECRETMEM_MAGIC: u32 = 1397048141; -pub const PROT_READ: u32 = 1; -pub const PROT_WRITE: u32 = 2; -pub const PROT_EXEC: u32 = 4; -pub const PROT_SEM: u32 = 8; -pub const PROT_NONE: u32 = 0; -pub const PROT_GROWSDOWN: u32 = 16777216; -pub const PROT_GROWSUP: u32 = 33554432; -pub const MAP_TYPE: u32 = 15; -pub const MAP_FIXED: u32 = 16; -pub const MAP_ANONYMOUS: u32 = 32; -pub const MAP_POPULATE: u32 = 32768; -pub const MAP_NONBLOCK: u32 = 65536; -pub const MAP_STACK: u32 = 131072; -pub const MAP_HUGETLB: u32 = 262144; -pub const MAP_SYNC: u32 = 524288; -pub const MAP_FIXED_NOREPLACE: u32 = 1048576; -pub const MAP_UNINITIALIZED: u32 = 67108864; -pub const MLOCK_ONFAULT: u32 = 1; -pub const MS_ASYNC: u32 = 1; -pub const MS_INVALIDATE: u32 = 2; -pub const MS_SYNC: u32 = 4; -pub const MADV_NORMAL: u32 = 0; -pub const MADV_RANDOM: u32 = 1; -pub const MADV_SEQUENTIAL: u32 = 2; -pub const MADV_WILLNEED: u32 = 3; -pub const MADV_DONTNEED: u32 = 4; -pub const MADV_FREE: u32 = 8; -pub const MADV_REMOVE: u32 = 9; -pub const MADV_DONTFORK: u32 = 10; -pub const MADV_DOFORK: u32 = 11; -pub const MADV_HWPOISON: u32 = 100; -pub const MADV_SOFT_OFFLINE: u32 = 101; -pub const MADV_MERGEABLE: u32 = 12; -pub const MADV_UNMERGEABLE: u32 = 13; -pub const MADV_HUGEPAGE: u32 = 14; -pub const MADV_NOHUGEPAGE: u32 = 15; -pub const MADV_DONTDUMP: u32 = 16; -pub const MADV_DODUMP: u32 = 17; -pub const MADV_WIPEONFORK: u32 = 18; -pub const MADV_KEEPONFORK: u32 = 19; -pub const MADV_COLD: u32 = 20; -pub const MADV_PAGEOUT: u32 = 21; -pub const MADV_POPULATE_READ: u32 = 22; -pub const MADV_POPULATE_WRITE: u32 = 23; -pub const MADV_DONTNEED_LOCKED: u32 = 24; -pub const MADV_COLLAPSE: u32 = 25; -pub const MAP_FILE: u32 = 0; -pub const PKEY_DISABLE_ACCESS: u32 = 1; -pub const PKEY_DISABLE_WRITE: u32 = 2; -pub const PKEY_ACCESS_MASK: u32 = 3; -pub const MAP_GROWSDOWN: u32 = 256; -pub const MAP_DENYWRITE: u32 = 2048; -pub const MAP_EXECUTABLE: u32 = 4096; -pub const MAP_LOCKED: u32 = 8192; -pub const MAP_NORESERVE: u32 = 16384; -pub const MCL_CURRENT: u32 = 1; -pub const MCL_FUTURE: u32 = 2; -pub const MCL_ONFAULT: u32 = 4; -pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; -pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; -pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; -pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; -pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; -pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; -pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; -pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; -pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; -pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; -pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; -pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; -pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; -pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; -pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; -pub const MREMAP_MAYMOVE: u32 = 1; -pub const MREMAP_FIXED: u32 = 2; -pub const MREMAP_DONTUNMAP: u32 = 4; -pub const OVERCOMMIT_GUESS: u32 = 0; -pub const OVERCOMMIT_ALWAYS: u32 = 1; -pub const OVERCOMMIT_NEVER: u32 = 2; -pub const MAP_SHARED: u32 = 1; -pub const MAP_PRIVATE: u32 = 2; -pub const MAP_SHARED_VALIDATE: u32 = 3; -pub const MAP_HUGE_SHIFT: u32 = 26; -pub const MAP_HUGE_MASK: u32 = 63; -pub const MAP_HUGE_16KB: u32 = 939524096; -pub const MAP_HUGE_64KB: u32 = 1073741824; -pub const MAP_HUGE_512KB: u32 = 1275068416; -pub const MAP_HUGE_1MB: u32 = 1342177280; -pub const MAP_HUGE_2MB: u32 = 1409286144; -pub const MAP_HUGE_8MB: u32 = 1543503872; -pub const MAP_HUGE_16MB: u32 = 1610612736; -pub const MAP_HUGE_32MB: u32 = 1677721600; -pub const MAP_HUGE_256MB: u32 = 1879048192; -pub const MAP_HUGE_512MB: u32 = 1946157056; -pub const MAP_HUGE_1GB: u32 = 2013265920; -pub const MAP_HUGE_2GB: u32 = 2080374784; -pub const MAP_HUGE_16GB: u32 = 2281701376; -pub const SIOCGSTAMP_OLD: u32 = 35078; -pub const SIOCGSTAMPNS_OLD: u32 = 35079; -pub const SOL_SOCKET: u32 = 1; -pub const SO_DEBUG: u32 = 1; -pub const SO_REUSEADDR: u32 = 2; -pub const SO_TYPE: u32 = 3; -pub const SO_ERROR: u32 = 4; -pub const SO_DONTROUTE: u32 = 5; -pub const SO_BROADCAST: u32 = 6; -pub const SO_SNDBUF: u32 = 7; -pub const SO_RCVBUF: u32 = 8; -pub const SO_SNDBUFFORCE: u32 = 32; -pub const SO_RCVBUFFORCE: u32 = 33; -pub const SO_KEEPALIVE: u32 = 9; -pub const SO_OOBINLINE: u32 = 10; -pub const SO_NO_CHECK: u32 = 11; -pub const SO_PRIORITY: u32 = 12; -pub const SO_LINGER: u32 = 13; -pub const SO_BSDCOMPAT: u32 = 14; -pub const SO_REUSEPORT: u32 = 15; -pub const SO_PASSCRED: u32 = 16; -pub const SO_PEERCRED: u32 = 17; -pub const SO_RCVLOWAT: u32 = 18; -pub const SO_SNDLOWAT: u32 = 19; -pub const SO_RCVTIMEO_OLD: u32 = 20; -pub const SO_SNDTIMEO_OLD: u32 = 21; -pub const SO_SECURITY_AUTHENTICATION: u32 = 22; -pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; -pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; -pub const SO_BINDTODEVICE: u32 = 25; -pub const SO_ATTACH_FILTER: u32 = 26; -pub const SO_DETACH_FILTER: u32 = 27; -pub const SO_GET_FILTER: u32 = 26; -pub const SO_PEERNAME: u32 = 28; -pub const SO_ACCEPTCONN: u32 = 30; -pub const SO_PEERSEC: u32 = 31; -pub const SO_PASSSEC: u32 = 34; -pub const SO_MARK: u32 = 36; -pub const SO_PROTOCOL: u32 = 38; -pub const SO_DOMAIN: u32 = 39; -pub const SO_RXQ_OVFL: u32 = 40; -pub const SO_WIFI_STATUS: u32 = 41; -pub const SCM_WIFI_STATUS: u32 = 41; -pub const SO_PEEK_OFF: u32 = 42; -pub const SO_NOFCS: u32 = 43; -pub const SO_LOCK_FILTER: u32 = 44; -pub const SO_SELECT_ERR_QUEUE: u32 = 45; -pub const SO_BUSY_POLL: u32 = 46; -pub const SO_MAX_PACING_RATE: u32 = 47; -pub const SO_BPF_EXTENSIONS: u32 = 48; -pub const SO_INCOMING_CPU: u32 = 49; -pub const SO_ATTACH_BPF: u32 = 50; -pub const SO_DETACH_BPF: u32 = 27; -pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; -pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; -pub const SO_CNX_ADVICE: u32 = 53; -pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; -pub const SO_MEMINFO: u32 = 55; -pub const SO_INCOMING_NAPI_ID: u32 = 56; -pub const SO_COOKIE: u32 = 57; -pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; -pub const SO_PEERGROUPS: u32 = 59; -pub const SO_ZEROCOPY: u32 = 60; -pub const SO_TXTIME: u32 = 61; -pub const SCM_TXTIME: u32 = 61; -pub const SO_BINDTOIFINDEX: u32 = 62; -pub const SO_TIMESTAMP_OLD: u32 = 29; -pub const SO_TIMESTAMPNS_OLD: u32 = 35; -pub const SO_TIMESTAMPING_OLD: u32 = 37; -pub const SO_TIMESTAMP_NEW: u32 = 63; -pub const SO_TIMESTAMPNS_NEW: u32 = 64; -pub const SO_TIMESTAMPING_NEW: u32 = 65; -pub const SO_RCVTIMEO_NEW: u32 = 66; -pub const SO_SNDTIMEO_NEW: u32 = 67; -pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; -pub const SO_PREFER_BUSY_POLL: u32 = 69; -pub const SO_BUSY_POLL_BUDGET: u32 = 70; -pub const SO_NETNS_COOKIE: u32 = 71; -pub const SO_BUF_LOCK: u32 = 72; -pub const SO_RESERVE_MEM: u32 = 73; -pub const SO_TXREHASH: u32 = 74; -pub const SO_RCVMARK: u32 = 75; -pub const SYS_SOCKET: u32 = 1; -pub const SYS_BIND: u32 = 2; -pub const SYS_CONNECT: u32 = 3; -pub const SYS_LISTEN: u32 = 4; -pub const SYS_ACCEPT: u32 = 5; -pub const SYS_GETSOCKNAME: u32 = 6; -pub const SYS_GETPEERNAME: u32 = 7; -pub const SYS_SOCKETPAIR: u32 = 8; -pub const SYS_SEND: u32 = 9; -pub const SYS_RECV: u32 = 10; -pub const SYS_SENDTO: u32 = 11; -pub const SYS_RECVFROM: u32 = 12; -pub const SYS_SHUTDOWN: u32 = 13; -pub const SYS_SETSOCKOPT: u32 = 14; -pub const SYS_GETSOCKOPT: u32 = 15; -pub const SYS_SENDMSG: u32 = 16; -pub const SYS_RECVMSG: u32 = 17; -pub const SYS_ACCEPT4: u32 = 18; -pub const SYS_RECVMMSG: u32 = 19; -pub const SYS_SENDMMSG: u32 = 20; -pub const __SO_ACCEPTCON: u32 = 65536; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const POLLWRNORM: u32 = 256; -pub const POLLWRBAND: u32 = 512; -pub const POLLMSG: u32 = 1024; -pub const POLLREMOVE: u32 = 4096; -pub const POLLRDHUP: u32 = 8192; -pub const PR_SET_PDEATHSIG: u32 = 1; -pub const PR_GET_PDEATHSIG: u32 = 2; -pub const PR_GET_DUMPABLE: u32 = 3; -pub const PR_SET_DUMPABLE: u32 = 4; -pub const PR_GET_UNALIGN: u32 = 5; -pub const PR_SET_UNALIGN: u32 = 6; -pub const PR_UNALIGN_NOPRINT: u32 = 1; -pub const PR_UNALIGN_SIGBUS: u32 = 2; -pub const PR_GET_KEEPCAPS: u32 = 7; -pub const PR_SET_KEEPCAPS: u32 = 8; -pub const PR_GET_FPEMU: u32 = 9; -pub const PR_SET_FPEMU: u32 = 10; -pub const PR_FPEMU_NOPRINT: u32 = 1; -pub const PR_FPEMU_SIGFPE: u32 = 2; -pub const PR_GET_FPEXC: u32 = 11; -pub const PR_SET_FPEXC: u32 = 12; -pub const PR_FP_EXC_SW_ENABLE: u32 = 128; -pub const PR_FP_EXC_DIV: u32 = 65536; -pub const PR_FP_EXC_OVF: u32 = 131072; -pub const PR_FP_EXC_UND: u32 = 262144; -pub const PR_FP_EXC_RES: u32 = 524288; -pub const PR_FP_EXC_INV: u32 = 1048576; -pub const PR_FP_EXC_DISABLED: u32 = 0; -pub const PR_FP_EXC_NONRECOV: u32 = 1; -pub const PR_FP_EXC_ASYNC: u32 = 2; -pub const PR_FP_EXC_PRECISE: u32 = 3; -pub const PR_GET_TIMING: u32 = 13; -pub const PR_SET_TIMING: u32 = 14; -pub const PR_TIMING_STATISTICAL: u32 = 0; -pub const PR_TIMING_TIMESTAMP: u32 = 1; -pub const PR_SET_NAME: u32 = 15; -pub const PR_GET_NAME: u32 = 16; -pub const PR_GET_ENDIAN: u32 = 19; -pub const PR_SET_ENDIAN: u32 = 20; -pub const PR_ENDIAN_BIG: u32 = 0; -pub const PR_ENDIAN_LITTLE: u32 = 1; -pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; -pub const PR_GET_SECCOMP: u32 = 21; -pub const PR_SET_SECCOMP: u32 = 22; -pub const PR_CAPBSET_READ: u32 = 23; -pub const PR_CAPBSET_DROP: u32 = 24; -pub const PR_GET_TSC: u32 = 25; -pub const PR_SET_TSC: u32 = 26; -pub const PR_TSC_ENABLE: u32 = 1; -pub const PR_TSC_SIGSEGV: u32 = 2; -pub const PR_GET_SECUREBITS: u32 = 27; -pub const PR_SET_SECUREBITS: u32 = 28; -pub const PR_SET_TIMERSLACK: u32 = 29; -pub const PR_GET_TIMERSLACK: u32 = 30; -pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; -pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; -pub const PR_MCE_KILL: u32 = 33; -pub const PR_MCE_KILL_CLEAR: u32 = 0; -pub const PR_MCE_KILL_SET: u32 = 1; -pub const PR_MCE_KILL_LATE: u32 = 0; -pub const PR_MCE_KILL_EARLY: u32 = 1; -pub const PR_MCE_KILL_DEFAULT: u32 = 2; -pub const PR_MCE_KILL_GET: u32 = 34; -pub const PR_SET_MM: u32 = 35; -pub const PR_SET_MM_START_CODE: u32 = 1; -pub const PR_SET_MM_END_CODE: u32 = 2; -pub const PR_SET_MM_START_DATA: u32 = 3; -pub const PR_SET_MM_END_DATA: u32 = 4; -pub const PR_SET_MM_START_STACK: u32 = 5; -pub const PR_SET_MM_START_BRK: u32 = 6; -pub const PR_SET_MM_BRK: u32 = 7; -pub const PR_SET_MM_ARG_START: u32 = 8; -pub const PR_SET_MM_ARG_END: u32 = 9; -pub const PR_SET_MM_ENV_START: u32 = 10; -pub const PR_SET_MM_ENV_END: u32 = 11; -pub const PR_SET_MM_AUXV: u32 = 12; -pub const PR_SET_MM_EXE_FILE: u32 = 13; -pub const PR_SET_MM_MAP: u32 = 14; -pub const PR_SET_MM_MAP_SIZE: u32 = 15; -pub const PR_SET_PTRACER: u32 = 1499557217; -pub const PR_SET_CHILD_SUBREAPER: u32 = 36; -pub const PR_GET_CHILD_SUBREAPER: u32 = 37; -pub const PR_SET_NO_NEW_PRIVS: u32 = 38; -pub const PR_GET_NO_NEW_PRIVS: u32 = 39; -pub const PR_GET_TID_ADDRESS: u32 = 40; -pub const PR_SET_THP_DISABLE: u32 = 41; -pub const PR_GET_THP_DISABLE: u32 = 42; -pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; -pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; -pub const PR_SET_FP_MODE: u32 = 45; -pub const PR_GET_FP_MODE: u32 = 46; -pub const PR_FP_MODE_FR: u32 = 1; -pub const PR_FP_MODE_FRE: u32 = 2; -pub const PR_CAP_AMBIENT: u32 = 47; -pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; -pub const PR_CAP_AMBIENT_RAISE: u32 = 2; -pub const PR_CAP_AMBIENT_LOWER: u32 = 3; -pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; -pub const PR_SVE_SET_VL: u32 = 50; -pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SVE_GET_VL: u32 = 51; -pub const PR_SVE_VL_LEN_MASK: u32 = 65535; -pub const PR_SVE_VL_INHERIT: u32 = 131072; -pub const PR_GET_SPECULATION_CTRL: u32 = 52; -pub const PR_SET_SPECULATION_CTRL: u32 = 53; -pub const PR_SPEC_STORE_BYPASS: u32 = 0; -pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; -pub const PR_SPEC_L1D_FLUSH: u32 = 2; -pub const PR_SPEC_NOT_AFFECTED: u32 = 0; -pub const PR_SPEC_PRCTL: u32 = 1; -pub const PR_SPEC_ENABLE: u32 = 2; -pub const PR_SPEC_DISABLE: u32 = 4; -pub const PR_SPEC_FORCE_DISABLE: u32 = 8; -pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; -pub const PR_PAC_RESET_KEYS: u32 = 54; -pub const PR_PAC_APIAKEY: u32 = 1; -pub const PR_PAC_APIBKEY: u32 = 2; -pub const PR_PAC_APDAKEY: u32 = 4; -pub const PR_PAC_APDBKEY: u32 = 8; -pub const PR_PAC_APGAKEY: u32 = 16; -pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; -pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; -pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; -pub const PR_MTE_TCF_NONE: u32 = 0; -pub const PR_MTE_TCF_SYNC: u32 = 2; -pub const PR_MTE_TCF_ASYNC: u32 = 4; -pub const PR_MTE_TCF_MASK: u32 = 6; -pub const PR_MTE_TAG_SHIFT: u32 = 3; -pub const PR_MTE_TAG_MASK: u32 = 524280; -pub const PR_MTE_TCF_SHIFT: u32 = 1; -pub const PR_SET_IO_FLUSHER: u32 = 57; -pub const PR_GET_IO_FLUSHER: u32 = 58; -pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; -pub const PR_SYS_DISPATCH_OFF: u32 = 0; -pub const PR_SYS_DISPATCH_ON: u32 = 1; -pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; -pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; -pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; -pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; -pub const PR_SCHED_CORE: u32 = 62; -pub const PR_SCHED_CORE_GET: u32 = 0; -pub const PR_SCHED_CORE_CREATE: u32 = 1; -pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; -pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; -pub const PR_SCHED_CORE_MAX: u32 = 4; -pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; -pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; -pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; -pub const PR_SME_SET_VL: u32 = 63; -pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SME_GET_VL: u32 = 64; -pub const PR_SME_VL_LEN_MASK: u32 = 65535; -pub const PR_SME_VL_INHERIT: u32 = 131072; -pub const PR_SET_MDWE: u32 = 65; -pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; -pub const PR_GET_MDWE: u32 = 66; -pub const PR_SET_VMA: u32 = 1398164801; -pub const PR_SET_VMA_ANON_NAME: u32 = 0; -pub const GRND_NONBLOCK: u32 = 1; -pub const GRND_RANDOM: u32 = 2; -pub const GRND_INSECURE: u32 = 4; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -pub const CLOCK_REALTIME: u32 = 0; -pub const CLOCK_MONOTONIC: u32 = 1; -pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; -pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; -pub const CLOCK_MONOTONIC_RAW: u32 = 4; -pub const CLOCK_REALTIME_COARSE: u32 = 5; -pub const CLOCK_MONOTONIC_COARSE: u32 = 6; -pub const CLOCK_BOOTTIME: u32 = 7; -pub const CLOCK_REALTIME_ALARM: u32 = 8; -pub const CLOCK_BOOTTIME_ALARM: u32 = 9; -pub const CLOCK_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const RUSAGE_SELF: u32 = 0; -pub const RUSAGE_CHILDREN: i32 = -1; -pub const RUSAGE_BOTH: i32 = -2; -pub const RUSAGE_THREAD: u32 = 1; -pub const RLIM64_INFINITY: i32 = -1; -pub const PRIO_MIN: i32 = -20; -pub const PRIO_MAX: u32 = 20; -pub const PRIO_PROCESS: u32 = 0; -pub const PRIO_PGRP: u32 = 1; -pub const PRIO_USER: u32 = 2; -pub const _STK_LIM: u32 = 8388608; -pub const MLOCK_LIMIT: u32 = 8388608; -pub const RLIMIT_CPU: u32 = 0; -pub const RLIMIT_FSIZE: u32 = 1; -pub const RLIMIT_DATA: u32 = 2; -pub const RLIMIT_STACK: u32 = 3; -pub const RLIMIT_CORE: u32 = 4; -pub const RLIMIT_RSS: u32 = 5; -pub const RLIMIT_NPROC: u32 = 6; -pub const RLIMIT_NOFILE: u32 = 7; -pub const RLIMIT_MEMLOCK: u32 = 8; -pub const RLIMIT_AS: u32 = 9; -pub const RLIMIT_LOCKS: u32 = 10; -pub const RLIMIT_SIGPENDING: u32 = 11; -pub const RLIMIT_MSGQUEUE: u32 = 12; -pub const RLIMIT_NICE: u32 = 13; -pub const RLIMIT_RTPRIO: u32 = 14; -pub const RLIMIT_RTTIME: u32 = 15; -pub const RLIM_NLIMITS: u32 = 16; -pub const RLIM_INFINITY: i32 = -1; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const NSIG: u32 = 32; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGBUS: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGUSR1: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGUSR2: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGSTKFLT: u32 = 16; -pub const SIGCHLD: u32 = 17; -pub const SIGCONT: u32 = 18; -pub const SIGSTOP: u32 = 19; -pub const SIGTSTP: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGURG: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGIO: u32 = 29; -pub const SIGPOLL: u32 = 29; -pub const SIGPWR: u32 = 30; -pub const SIGSYS: u32 = 31; -pub const SIGUNUSED: u32 = 31; -pub const SIGRTMIN: u32 = 32; -pub const SIGSWI: u32 = 32; -pub const SA_THIRTYTWO: u32 = 33554432; -pub const SA_RESTORER: u32 = 67108864; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; -pub const SA_NOCLDSTOP: u32 = 1; -pub const SA_NOCLDWAIT: u32 = 2; -pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; -pub const SA_ONSTACK: u32 = 134217728; -pub const SA_RESTART: u32 = 268435456; -pub const SA_NODEFER: u32 = 1073741824; -pub const SA_RESETHAND: u32 = 2147483648; -pub const SA_NOMASK: u32 = 1073741824; -pub const SA_ONESHOT: u32 = 2147483648; -pub const SIG_BLOCK: u32 = 0; -pub const SIG_UNBLOCK: u32 = 1; -pub const SIG_SETMASK: u32 = 2; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; -pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const S_IFMT: u32 = 61440; -pub const S_IFSOCK: u32 = 49152; -pub const S_IFLNK: u32 = 40960; -pub const S_IFREG: u32 = 32768; -pub const S_IFBLK: u32 = 24576; -pub const S_IFDIR: u32 = 16384; -pub const S_IFCHR: u32 = 8192; -pub const S_IFIFO: u32 = 4096; -pub const S_ISUID: u32 = 2048; -pub const S_ISGID: u32 = 1024; -pub const S_ISVTX: u32 = 512; -pub const S_IRWXU: u32 = 448; -pub const S_IRUSR: u32 = 256; -pub const S_IWUSR: u32 = 128; -pub const S_IXUSR: u32 = 64; -pub const S_IRWXG: u32 = 56; -pub const S_IRGRP: u32 = 32; -pub const S_IWGRP: u32 = 16; -pub const S_IXGRP: u32 = 8; -pub const S_IRWXO: u32 = 7; -pub const S_IROTH: u32 = 4; -pub const S_IWOTH: u32 = 2; -pub const S_IXOTH: u32 = 1; -pub const STATX_TYPE: u32 = 1; -pub const STATX_MODE: u32 = 2; -pub const STATX_NLINK: u32 = 4; -pub const STATX_UID: u32 = 8; -pub const STATX_GID: u32 = 16; -pub const STATX_ATIME: u32 = 32; -pub const STATX_MTIME: u32 = 64; -pub const STATX_CTIME: u32 = 128; -pub const STATX_INO: u32 = 256; -pub const STATX_SIZE: u32 = 512; -pub const STATX_BLOCKS: u32 = 1024; -pub const STATX_BASIC_STATS: u32 = 2047; -pub const STATX_BTIME: u32 = 2048; -pub const STATX_MNT_ID: u32 = 4096; -pub const STATX_DIOALIGN: u32 = 8192; -pub const STATX__RESERVED: u32 = 2147483648; -pub const STATX_ALL: u32 = 4095; -pub const STATX_ATTR_COMPRESSED: u32 = 4; -pub const STATX_ATTR_IMMUTABLE: u32 = 16; -pub const STATX_ATTR_APPEND: u32 = 32; -pub const STATX_ATTR_NODUMP: u32 = 64; -pub const STATX_ATTR_ENCRYPTED: u32 = 2048; -pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; -pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; -pub const STATX_ATTR_VERITY: u32 = 1048576; -pub const STATX_ATTR_DAX: u32 = 2097152; -pub const SI_LOAD_SHIFT: u32 = 16; -pub const TCP_MSS_DEFAULT: u32 = 536; -pub const TCP_MSS_DESIRED: u32 = 1220; -pub const TCP_NODELAY: u32 = 1; -pub const TCP_MAXSEG: u32 = 2; -pub const TCP_CORK: u32 = 3; -pub const TCP_KEEPIDLE: u32 = 4; -pub const TCP_KEEPINTVL: u32 = 5; -pub const TCP_KEEPCNT: u32 = 6; -pub const TCP_SYNCNT: u32 = 7; -pub const TCP_LINGER2: u32 = 8; -pub const TCP_DEFER_ACCEPT: u32 = 9; -pub const TCP_WINDOW_CLAMP: u32 = 10; -pub const TCP_INFO: u32 = 11; -pub const TCP_QUICKACK: u32 = 12; -pub const TCP_CONGESTION: u32 = 13; -pub const TCP_MD5SIG: u32 = 14; -pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; -pub const TCP_THIN_DUPACK: u32 = 17; -pub const TCP_USER_TIMEOUT: u32 = 18; -pub const TCP_REPAIR: u32 = 19; -pub const TCP_REPAIR_QUEUE: u32 = 20; -pub const TCP_QUEUE_SEQ: u32 = 21; -pub const TCP_REPAIR_OPTIONS: u32 = 22; -pub const TCP_FASTOPEN: u32 = 23; -pub const TCP_TIMESTAMP: u32 = 24; -pub const TCP_NOTSENT_LOWAT: u32 = 25; -pub const TCP_CC_INFO: u32 = 26; -pub const TCP_SAVE_SYN: u32 = 27; -pub const TCP_SAVED_SYN: u32 = 28; -pub const TCP_REPAIR_WINDOW: u32 = 29; -pub const TCP_FASTOPEN_CONNECT: u32 = 30; -pub const TCP_ULP: u32 = 31; -pub const TCP_MD5SIG_EXT: u32 = 32; -pub const TCP_FASTOPEN_KEY: u32 = 33; -pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; -pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; -pub const TCP_INQ: u32 = 36; -pub const TCP_CM_INQ: u32 = 36; -pub const TCP_TX_DELAY: u32 = 37; -pub const TCP_REPAIR_ON: u32 = 1; -pub const TCP_REPAIR_OFF: u32 = 0; -pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; -pub const TCPI_OPT_TIMESTAMPS: u32 = 1; -pub const TCPI_OPT_SACK: u32 = 2; -pub const TCPI_OPT_WSCALE: u32 = 4; -pub const TCPI_OPT_ECN: u32 = 8; -pub const TCPI_OPT_ECN_SEEN: u32 = 16; -pub const TCPI_OPT_SYN_DATA: u32 = 32; -pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; -pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; -pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; -pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; -pub const IGNBRK: u32 = 1; -pub const BRKINT: u32 = 2; -pub const IGNPAR: u32 = 4; -pub const PARMRK: u32 = 8; -pub const INPCK: u32 = 16; -pub const ISTRIP: u32 = 32; -pub const INLCR: u32 = 64; -pub const IGNCR: u32 = 128; -pub const ICRNL: u32 = 256; -pub const IXANY: u32 = 2048; -pub const OPOST: u32 = 1; -pub const OCRNL: u32 = 8; -pub const ONOCR: u32 = 16; -pub const ONLRET: u32 = 32; -pub const OFILL: u32 = 64; -pub const OFDEL: u32 = 128; -pub const B0: u32 = 0; -pub const B50: u32 = 1; -pub const B75: u32 = 2; -pub const B110: u32 = 3; -pub const B134: u32 = 4; -pub const B150: u32 = 5; -pub const B200: u32 = 6; -pub const B300: u32 = 7; -pub const B600: u32 = 8; -pub const B1200: u32 = 9; -pub const B1800: u32 = 10; -pub const B2400: u32 = 11; -pub const B4800: u32 = 12; -pub const B9600: u32 = 13; -pub const B19200: u32 = 14; -pub const B38400: u32 = 15; -pub const EXTA: u32 = 14; -pub const EXTB: u32 = 15; -pub const ADDRB: u32 = 536870912; -pub const CMSPAR: u32 = 1073741824; -pub const CRTSCTS: u32 = 2147483648; -pub const IBSHIFT: u32 = 16; -pub const TCOOFF: u32 = 0; -pub const TCOON: u32 = 1; -pub const TCIOFF: u32 = 2; -pub const TCION: u32 = 3; -pub const TCIFLUSH: u32 = 0; -pub const TCOFLUSH: u32 = 1; -pub const TCIOFLUSH: u32 = 2; -pub const NCCS: u32 = 19; -pub const VINTR: u32 = 0; -pub const VQUIT: u32 = 1; -pub const VERASE: u32 = 2; -pub const VKILL: u32 = 3; -pub const VEOF: u32 = 4; -pub const VTIME: u32 = 5; -pub const VMIN: u32 = 6; -pub const VSWTC: u32 = 7; -pub const VSTART: u32 = 8; -pub const VSTOP: u32 = 9; -pub const VSUSP: u32 = 10; -pub const VEOL: u32 = 11; -pub const VREPRINT: u32 = 12; -pub const VDISCARD: u32 = 13; -pub const VWERASE: u32 = 14; -pub const VLNEXT: u32 = 15; -pub const VEOL2: u32 = 16; -pub const IUCLC: u32 = 512; -pub const IXON: u32 = 1024; -pub const IXOFF: u32 = 4096; -pub const IMAXBEL: u32 = 8192; -pub const IUTF8: u32 = 16384; -pub const OLCUC: u32 = 2; -pub const ONLCR: u32 = 4; -pub const NLDLY: u32 = 256; -pub const NL0: u32 = 0; -pub const NL1: u32 = 256; -pub const CRDLY: u32 = 1536; -pub const CR0: u32 = 0; -pub const CR1: u32 = 512; -pub const CR2: u32 = 1024; -pub const CR3: u32 = 1536; -pub const TABDLY: u32 = 6144; -pub const TAB0: u32 = 0; -pub const TAB1: u32 = 2048; -pub const TAB2: u32 = 4096; -pub const TAB3: u32 = 6144; -pub const XTABS: u32 = 6144; -pub const BSDLY: u32 = 8192; -pub const BS0: u32 = 0; -pub const BS1: u32 = 8192; -pub const VTDLY: u32 = 16384; -pub const VT0: u32 = 0; -pub const VT1: u32 = 16384; -pub const FFDLY: u32 = 32768; -pub const FF0: u32 = 0; -pub const FF1: u32 = 32768; -pub const CBAUD: u32 = 4111; -pub const CSIZE: u32 = 48; -pub const CS5: u32 = 0; -pub const CS6: u32 = 16; -pub const CS7: u32 = 32; -pub const CS8: u32 = 48; -pub const CSTOPB: u32 = 64; -pub const CREAD: u32 = 128; -pub const PARENB: u32 = 256; -pub const PARODD: u32 = 512; -pub const HUPCL: u32 = 1024; -pub const CLOCAL: u32 = 2048; -pub const CBAUDEX: u32 = 4096; -pub const BOTHER: u32 = 4096; -pub const B57600: u32 = 4097; -pub const B115200: u32 = 4098; -pub const B230400: u32 = 4099; -pub const B460800: u32 = 4100; -pub const B500000: u32 = 4101; -pub const B576000: u32 = 4102; -pub const B921600: u32 = 4103; -pub const B1000000: u32 = 4104; -pub const B1152000: u32 = 4105; -pub const B1500000: u32 = 4106; -pub const B2000000: u32 = 4107; -pub const B2500000: u32 = 4108; -pub const B3000000: u32 = 4109; -pub const B3500000: u32 = 4110; -pub const B4000000: u32 = 4111; -pub const CIBAUD: u32 = 269418496; -pub const ISIG: u32 = 1; -pub const ICANON: u32 = 2; -pub const XCASE: u32 = 4; -pub const ECHO: u32 = 8; -pub const ECHOE: u32 = 16; -pub const ECHOK: u32 = 32; -pub const ECHONL: u32 = 64; -pub const NOFLSH: u32 = 128; -pub const TOSTOP: u32 = 256; -pub const ECHOCTL: u32 = 512; -pub const ECHOPRT: u32 = 1024; -pub const ECHOKE: u32 = 2048; -pub const FLUSHO: u32 = 4096; -pub const PENDIN: u32 = 16384; -pub const IEXTEN: u32 = 32768; -pub const EXTPROC: u32 = 65536; -pub const TCSANOW: u32 = 0; -pub const TCSADRAIN: u32 = 1; -pub const TCSAFLUSH: u32 = 2; -pub const TIOCPKT_DATA: u32 = 0; -pub const TIOCPKT_FLUSHREAD: u32 = 1; -pub const TIOCPKT_FLUSHWRITE: u32 = 2; -pub const TIOCPKT_STOP: u32 = 4; -pub const TIOCPKT_START: u32 = 8; -pub const TIOCPKT_NOSTOP: u32 = 16; -pub const TIOCPKT_DOSTOP: u32 = 32; -pub const TIOCPKT_IOCTL: u32 = 64; -pub const TIOCSER_TEMT: u32 = 1; -pub const NCC: u32 = 8; -pub const TIOCM_LE: u32 = 1; -pub const TIOCM_DTR: u32 = 2; -pub const TIOCM_RTS: u32 = 4; -pub const TIOCM_ST: u32 = 8; -pub const TIOCM_SR: u32 = 16; -pub const TIOCM_CTS: u32 = 32; -pub const TIOCM_CAR: u32 = 64; -pub const TIOCM_RNG: u32 = 128; -pub const TIOCM_DSR: u32 = 256; -pub const TIOCM_CD: u32 = 64; -pub const TIOCM_RI: u32 = 128; -pub const TIOCM_OUT1: u32 = 8192; -pub const TIOCM_OUT2: u32 = 16384; -pub const TIOCM_LOOP: u32 = 32768; -pub const UIO_FASTIOV: u32 = 8; -pub const UIO_MAXIOV: u32 = 1024; -pub const UNIX_PATH_MAX: u32 = 108; -pub const __NR_OABI_SYSCALL_BASE: u32 = 9437184; -pub const __NR_SYSCALL_MASK: u32 = 1048575; -pub const __NR_SYSCALL_BASE: u32 = 0; -pub const __NR_restart_syscall: u32 = 0; -pub const __NR_exit: u32 = 1; -pub const __NR_fork: u32 = 2; -pub const __NR_read: u32 = 3; -pub const __NR_write: u32 = 4; -pub const __NR_open: u32 = 5; -pub const __NR_close: u32 = 6; -pub const __NR_creat: u32 = 8; -pub const __NR_link: u32 = 9; -pub const __NR_unlink: u32 = 10; -pub const __NR_execve: u32 = 11; -pub const __NR_chdir: u32 = 12; -pub const __NR_mknod: u32 = 14; -pub const __NR_chmod: u32 = 15; -pub const __NR_lchown: u32 = 16; -pub const __NR_lseek: u32 = 19; -pub const __NR_getpid: u32 = 20; -pub const __NR_mount: u32 = 21; -pub const __NR_setuid: u32 = 23; -pub const __NR_getuid: u32 = 24; -pub const __NR_ptrace: u32 = 26; -pub const __NR_pause: u32 = 29; -pub const __NR_access: u32 = 33; -pub const __NR_nice: u32 = 34; -pub const __NR_sync: u32 = 36; -pub const __NR_kill: u32 = 37; -pub const __NR_rename: u32 = 38; -pub const __NR_mkdir: u32 = 39; -pub const __NR_rmdir: u32 = 40; -pub const __NR_dup: u32 = 41; -pub const __NR_pipe: u32 = 42; -pub const __NR_times: u32 = 43; -pub const __NR_brk: u32 = 45; -pub const __NR_setgid: u32 = 46; -pub const __NR_getgid: u32 = 47; -pub const __NR_geteuid: u32 = 49; -pub const __NR_getegid: u32 = 50; -pub const __NR_acct: u32 = 51; -pub const __NR_umount2: u32 = 52; -pub const __NR_ioctl: u32 = 54; -pub const __NR_fcntl: u32 = 55; -pub const __NR_setpgid: u32 = 57; -pub const __NR_umask: u32 = 60; -pub const __NR_chroot: u32 = 61; -pub const __NR_ustat: u32 = 62; -pub const __NR_dup2: u32 = 63; -pub const __NR_getppid: u32 = 64; -pub const __NR_getpgrp: u32 = 65; -pub const __NR_setsid: u32 = 66; -pub const __NR_sigaction: u32 = 67; -pub const __NR_setreuid: u32 = 70; -pub const __NR_setregid: u32 = 71; -pub const __NR_sigsuspend: u32 = 72; -pub const __NR_sigpending: u32 = 73; -pub const __NR_sethostname: u32 = 74; -pub const __NR_setrlimit: u32 = 75; -pub const __NR_getrusage: u32 = 77; -pub const __NR_gettimeofday: u32 = 78; -pub const __NR_settimeofday: u32 = 79; -pub const __NR_getgroups: u32 = 80; -pub const __NR_setgroups: u32 = 81; -pub const __NR_symlink: u32 = 83; -pub const __NR_readlink: u32 = 85; -pub const __NR_uselib: u32 = 86; -pub const __NR_swapon: u32 = 87; -pub const __NR_reboot: u32 = 88; -pub const __NR_munmap: u32 = 91; -pub const __NR_truncate: u32 = 92; -pub const __NR_ftruncate: u32 = 93; -pub const __NR_fchmod: u32 = 94; -pub const __NR_fchown: u32 = 95; -pub const __NR_getpriority: u32 = 96; -pub const __NR_setpriority: u32 = 97; -pub const __NR_statfs: u32 = 99; -pub const __NR_fstatfs: u32 = 100; -pub const __NR_syslog: u32 = 103; -pub const __NR_setitimer: u32 = 104; -pub const __NR_getitimer: u32 = 105; -pub const __NR_stat: u32 = 106; -pub const __NR_lstat: u32 = 107; -pub const __NR_fstat: u32 = 108; -pub const __NR_vhangup: u32 = 111; -pub const __NR_wait4: u32 = 114; -pub const __NR_swapoff: u32 = 115; -pub const __NR_sysinfo: u32 = 116; -pub const __NR_fsync: u32 = 118; -pub const __NR_sigreturn: u32 = 119; -pub const __NR_clone: u32 = 120; -pub const __NR_setdomainname: u32 = 121; -pub const __NR_uname: u32 = 122; -pub const __NR_adjtimex: u32 = 124; -pub const __NR_mprotect: u32 = 125; -pub const __NR_sigprocmask: u32 = 126; -pub const __NR_init_module: u32 = 128; -pub const __NR_delete_module: u32 = 129; -pub const __NR_quotactl: u32 = 131; -pub const __NR_getpgid: u32 = 132; -pub const __NR_fchdir: u32 = 133; -pub const __NR_bdflush: u32 = 134; -pub const __NR_sysfs: u32 = 135; -pub const __NR_personality: u32 = 136; -pub const __NR_setfsuid: u32 = 138; -pub const __NR_setfsgid: u32 = 139; -pub const __NR__llseek: u32 = 140; -pub const __NR_getdents: u32 = 141; -pub const __NR__newselect: u32 = 142; -pub const __NR_flock: u32 = 143; -pub const __NR_msync: u32 = 144; -pub const __NR_readv: u32 = 145; -pub const __NR_writev: u32 = 146; -pub const __NR_getsid: u32 = 147; -pub const __NR_fdatasync: u32 = 148; -pub const __NR__sysctl: u32 = 149; -pub const __NR_mlock: u32 = 150; -pub const __NR_munlock: u32 = 151; -pub const __NR_mlockall: u32 = 152; -pub const __NR_munlockall: u32 = 153; -pub const __NR_sched_setparam: u32 = 154; -pub const __NR_sched_getparam: u32 = 155; -pub const __NR_sched_setscheduler: u32 = 156; -pub const __NR_sched_getscheduler: u32 = 157; -pub const __NR_sched_yield: u32 = 158; -pub const __NR_sched_get_priority_max: u32 = 159; -pub const __NR_sched_get_priority_min: u32 = 160; -pub const __NR_sched_rr_get_interval: u32 = 161; -pub const __NR_nanosleep: u32 = 162; -pub const __NR_mremap: u32 = 163; -pub const __NR_setresuid: u32 = 164; -pub const __NR_getresuid: u32 = 165; -pub const __NR_poll: u32 = 168; -pub const __NR_nfsservctl: u32 = 169; -pub const __NR_setresgid: u32 = 170; -pub const __NR_getresgid: u32 = 171; -pub const __NR_prctl: u32 = 172; -pub const __NR_rt_sigreturn: u32 = 173; -pub const __NR_rt_sigaction: u32 = 174; -pub const __NR_rt_sigprocmask: u32 = 175; -pub const __NR_rt_sigpending: u32 = 176; -pub const __NR_rt_sigtimedwait: u32 = 177; -pub const __NR_rt_sigqueueinfo: u32 = 178; -pub const __NR_rt_sigsuspend: u32 = 179; -pub const __NR_pread64: u32 = 180; -pub const __NR_pwrite64: u32 = 181; -pub const __NR_chown: u32 = 182; -pub const __NR_getcwd: u32 = 183; -pub const __NR_capget: u32 = 184; -pub const __NR_capset: u32 = 185; -pub const __NR_sigaltstack: u32 = 186; -pub const __NR_sendfile: u32 = 187; -pub const __NR_vfork: u32 = 190; -pub const __NR_ugetrlimit: u32 = 191; -pub const __NR_mmap2: u32 = 192; -pub const __NR_truncate64: u32 = 193; -pub const __NR_ftruncate64: u32 = 194; -pub const __NR_stat64: u32 = 195; -pub const __NR_lstat64: u32 = 196; -pub const __NR_fstat64: u32 = 197; -pub const __NR_lchown32: u32 = 198; -pub const __NR_getuid32: u32 = 199; -pub const __NR_getgid32: u32 = 200; -pub const __NR_geteuid32: u32 = 201; -pub const __NR_getegid32: u32 = 202; -pub const __NR_setreuid32: u32 = 203; -pub const __NR_setregid32: u32 = 204; -pub const __NR_getgroups32: u32 = 205; -pub const __NR_setgroups32: u32 = 206; -pub const __NR_fchown32: u32 = 207; -pub const __NR_setresuid32: u32 = 208; -pub const __NR_getresuid32: u32 = 209; -pub const __NR_setresgid32: u32 = 210; -pub const __NR_getresgid32: u32 = 211; -pub const __NR_chown32: u32 = 212; -pub const __NR_setuid32: u32 = 213; -pub const __NR_setgid32: u32 = 214; -pub const __NR_setfsuid32: u32 = 215; -pub const __NR_setfsgid32: u32 = 216; -pub const __NR_getdents64: u32 = 217; -pub const __NR_pivot_root: u32 = 218; -pub const __NR_mincore: u32 = 219; -pub const __NR_madvise: u32 = 220; -pub const __NR_fcntl64: u32 = 221; -pub const __NR_gettid: u32 = 224; -pub const __NR_readahead: u32 = 225; -pub const __NR_setxattr: u32 = 226; -pub const __NR_lsetxattr: u32 = 227; -pub const __NR_fsetxattr: u32 = 228; -pub const __NR_getxattr: u32 = 229; -pub const __NR_lgetxattr: u32 = 230; -pub const __NR_fgetxattr: u32 = 231; -pub const __NR_listxattr: u32 = 232; -pub const __NR_llistxattr: u32 = 233; -pub const __NR_flistxattr: u32 = 234; -pub const __NR_removexattr: u32 = 235; -pub const __NR_lremovexattr: u32 = 236; -pub const __NR_fremovexattr: u32 = 237; -pub const __NR_tkill: u32 = 238; -pub const __NR_sendfile64: u32 = 239; -pub const __NR_futex: u32 = 240; -pub const __NR_sched_setaffinity: u32 = 241; -pub const __NR_sched_getaffinity: u32 = 242; -pub const __NR_io_setup: u32 = 243; -pub const __NR_io_destroy: u32 = 244; -pub const __NR_io_getevents: u32 = 245; -pub const __NR_io_submit: u32 = 246; -pub const __NR_io_cancel: u32 = 247; -pub const __NR_exit_group: u32 = 248; -pub const __NR_lookup_dcookie: u32 = 249; -pub const __NR_epoll_create: u32 = 250; -pub const __NR_epoll_ctl: u32 = 251; -pub const __NR_epoll_wait: u32 = 252; -pub const __NR_remap_file_pages: u32 = 253; -pub const __NR_set_tid_address: u32 = 256; -pub const __NR_timer_create: u32 = 257; -pub const __NR_timer_settime: u32 = 258; -pub const __NR_timer_gettime: u32 = 259; -pub const __NR_timer_getoverrun: u32 = 260; -pub const __NR_timer_delete: u32 = 261; -pub const __NR_clock_settime: u32 = 262; -pub const __NR_clock_gettime: u32 = 263; -pub const __NR_clock_getres: u32 = 264; -pub const __NR_clock_nanosleep: u32 = 265; -pub const __NR_statfs64: u32 = 266; -pub const __NR_fstatfs64: u32 = 267; -pub const __NR_tgkill: u32 = 268; -pub const __NR_utimes: u32 = 269; -pub const __NR_arm_fadvise64_64: u32 = 270; -pub const __NR_pciconfig_iobase: u32 = 271; -pub const __NR_pciconfig_read: u32 = 272; -pub const __NR_pciconfig_write: u32 = 273; -pub const __NR_mq_open: u32 = 274; -pub const __NR_mq_unlink: u32 = 275; -pub const __NR_mq_timedsend: u32 = 276; -pub const __NR_mq_timedreceive: u32 = 277; -pub const __NR_mq_notify: u32 = 278; -pub const __NR_mq_getsetattr: u32 = 279; -pub const __NR_waitid: u32 = 280; -pub const __NR_socket: u32 = 281; -pub const __NR_bind: u32 = 282; -pub const __NR_connect: u32 = 283; -pub const __NR_listen: u32 = 284; -pub const __NR_accept: u32 = 285; -pub const __NR_getsockname: u32 = 286; -pub const __NR_getpeername: u32 = 287; -pub const __NR_socketpair: u32 = 288; -pub const __NR_send: u32 = 289; -pub const __NR_sendto: u32 = 290; -pub const __NR_recv: u32 = 291; -pub const __NR_recvfrom: u32 = 292; -pub const __NR_shutdown: u32 = 293; -pub const __NR_setsockopt: u32 = 294; -pub const __NR_getsockopt: u32 = 295; -pub const __NR_sendmsg: u32 = 296; -pub const __NR_recvmsg: u32 = 297; -pub const __NR_semop: u32 = 298; -pub const __NR_semget: u32 = 299; -pub const __NR_semctl: u32 = 300; -pub const __NR_msgsnd: u32 = 301; -pub const __NR_msgrcv: u32 = 302; -pub const __NR_msgget: u32 = 303; -pub const __NR_msgctl: u32 = 304; -pub const __NR_shmat: u32 = 305; -pub const __NR_shmdt: u32 = 306; -pub const __NR_shmget: u32 = 307; -pub const __NR_shmctl: u32 = 308; -pub const __NR_add_key: u32 = 309; -pub const __NR_request_key: u32 = 310; -pub const __NR_keyctl: u32 = 311; -pub const __NR_semtimedop: u32 = 312; -pub const __NR_vserver: u32 = 313; -pub const __NR_ioprio_set: u32 = 314; -pub const __NR_ioprio_get: u32 = 315; -pub const __NR_inotify_init: u32 = 316; -pub const __NR_inotify_add_watch: u32 = 317; -pub const __NR_inotify_rm_watch: u32 = 318; -pub const __NR_mbind: u32 = 319; -pub const __NR_get_mempolicy: u32 = 320; -pub const __NR_set_mempolicy: u32 = 321; -pub const __NR_openat: u32 = 322; -pub const __NR_mkdirat: u32 = 323; -pub const __NR_mknodat: u32 = 324; -pub const __NR_fchownat: u32 = 325; -pub const __NR_futimesat: u32 = 326; -pub const __NR_fstatat64: u32 = 327; -pub const __NR_unlinkat: u32 = 328; -pub const __NR_renameat: u32 = 329; -pub const __NR_linkat: u32 = 330; -pub const __NR_symlinkat: u32 = 331; -pub const __NR_readlinkat: u32 = 332; -pub const __NR_fchmodat: u32 = 333; -pub const __NR_faccessat: u32 = 334; -pub const __NR_pselect6: u32 = 335; -pub const __NR_ppoll: u32 = 336; -pub const __NR_unshare: u32 = 337; -pub const __NR_set_robust_list: u32 = 338; -pub const __NR_get_robust_list: u32 = 339; -pub const __NR_splice: u32 = 340; -pub const __NR_arm_sync_file_range: u32 = 341; -pub const __NR_tee: u32 = 342; -pub const __NR_vmsplice: u32 = 343; -pub const __NR_move_pages: u32 = 344; -pub const __NR_getcpu: u32 = 345; -pub const __NR_epoll_pwait: u32 = 346; -pub const __NR_kexec_load: u32 = 347; -pub const __NR_utimensat: u32 = 348; -pub const __NR_signalfd: u32 = 349; -pub const __NR_timerfd_create: u32 = 350; -pub const __NR_eventfd: u32 = 351; -pub const __NR_fallocate: u32 = 352; -pub const __NR_timerfd_settime: u32 = 353; -pub const __NR_timerfd_gettime: u32 = 354; -pub const __NR_signalfd4: u32 = 355; -pub const __NR_eventfd2: u32 = 356; -pub const __NR_epoll_create1: u32 = 357; -pub const __NR_dup3: u32 = 358; -pub const __NR_pipe2: u32 = 359; -pub const __NR_inotify_init1: u32 = 360; -pub const __NR_preadv: u32 = 361; -pub const __NR_pwritev: u32 = 362; -pub const __NR_rt_tgsigqueueinfo: u32 = 363; -pub const __NR_perf_event_open: u32 = 364; -pub const __NR_recvmmsg: u32 = 365; -pub const __NR_accept4: u32 = 366; -pub const __NR_fanotify_init: u32 = 367; -pub const __NR_fanotify_mark: u32 = 368; -pub const __NR_prlimit64: u32 = 369; -pub const __NR_name_to_handle_at: u32 = 370; -pub const __NR_open_by_handle_at: u32 = 371; -pub const __NR_clock_adjtime: u32 = 372; -pub const __NR_syncfs: u32 = 373; -pub const __NR_sendmmsg: u32 = 374; -pub const __NR_setns: u32 = 375; -pub const __NR_process_vm_readv: u32 = 376; -pub const __NR_process_vm_writev: u32 = 377; -pub const __NR_kcmp: u32 = 378; -pub const __NR_finit_module: u32 = 379; -pub const __NR_sched_setattr: u32 = 380; -pub const __NR_sched_getattr: u32 = 381; -pub const __NR_renameat2: u32 = 382; -pub const __NR_seccomp: u32 = 383; -pub const __NR_getrandom: u32 = 384; -pub const __NR_memfd_create: u32 = 385; -pub const __NR_bpf: u32 = 386; -pub const __NR_execveat: u32 = 387; -pub const __NR_userfaultfd: u32 = 388; -pub const __NR_membarrier: u32 = 389; -pub const __NR_mlock2: u32 = 390; -pub const __NR_copy_file_range: u32 = 391; -pub const __NR_preadv2: u32 = 392; -pub const __NR_pwritev2: u32 = 393; -pub const __NR_pkey_mprotect: u32 = 394; -pub const __NR_pkey_alloc: u32 = 395; -pub const __NR_pkey_free: u32 = 396; -pub const __NR_statx: u32 = 397; -pub const __NR_rseq: u32 = 398; -pub const __NR_io_pgetevents: u32 = 399; -pub const __NR_migrate_pages: u32 = 400; -pub const __NR_kexec_file_load: u32 = 401; -pub const __NR_clock_gettime64: u32 = 403; -pub const __NR_clock_settime64: u32 = 404; -pub const __NR_clock_adjtime64: u32 = 405; -pub const __NR_clock_getres_time64: u32 = 406; -pub const __NR_clock_nanosleep_time64: u32 = 407; -pub const __NR_timer_gettime64: u32 = 408; -pub const __NR_timer_settime64: u32 = 409; -pub const __NR_timerfd_gettime64: u32 = 410; -pub const __NR_timerfd_settime64: u32 = 411; -pub const __NR_utimensat_time64: u32 = 412; -pub const __NR_pselect6_time64: u32 = 413; -pub const __NR_ppoll_time64: u32 = 414; -pub const __NR_io_pgetevents_time64: u32 = 416; -pub const __NR_recvmmsg_time64: u32 = 417; -pub const __NR_mq_timedsend_time64: u32 = 418; -pub const __NR_mq_timedreceive_time64: u32 = 419; -pub const __NR_semtimedop_time64: u32 = 420; -pub const __NR_rt_sigtimedwait_time64: u32 = 421; -pub const __NR_futex_time64: u32 = 422; -pub const __NR_sched_rr_get_interval_time64: u32 = 423; -pub const __NR_pidfd_send_signal: u32 = 424; -pub const __NR_io_uring_setup: u32 = 425; -pub const __NR_io_uring_enter: u32 = 426; -pub const __NR_io_uring_register: u32 = 427; -pub const __NR_open_tree: u32 = 428; -pub const __NR_move_mount: u32 = 429; -pub const __NR_fsopen: u32 = 430; -pub const __NR_fsconfig: u32 = 431; -pub const __NR_fsmount: u32 = 432; -pub const __NR_fspick: u32 = 433; -pub const __NR_pidfd_open: u32 = 434; -pub const __NR_clone3: u32 = 435; -pub const __NR_close_range: u32 = 436; -pub const __NR_openat2: u32 = 437; -pub const __NR_pidfd_getfd: u32 = 438; -pub const __NR_faccessat2: u32 = 439; -pub const __NR_process_madvise: u32 = 440; -pub const __NR_epoll_pwait2: u32 = 441; -pub const __NR_mount_setattr: u32 = 442; -pub const __NR_quotactl_fd: u32 = 443; -pub const __NR_landlock_create_ruleset: u32 = 444; -pub const __NR_landlock_add_rule: u32 = 445; -pub const __NR_landlock_restrict_self: u32 = 446; -pub const __NR_process_mrelease: u32 = 448; -pub const __NR_futex_waitv: u32 = 449; -pub const __NR_set_mempolicy_home_node: u32 = 450; -pub const __NR_sync_file_range2: u32 = 341; -pub const __ARM_NR_BASE: u32 = 983040; -pub const __ARM_NR_breakpoint: u32 = 983041; -pub const __ARM_NR_cacheflush: u32 = 983042; -pub const __ARM_NR_usr26: u32 = 983043; -pub const __ARM_NR_usr32: u32 = 983044; -pub const __ARM_NR_set_tls: u32 = 983045; -pub const __ARM_NR_get_tls: u32 = 983046; -pub const __OLD_UTS_LEN: u32 = 8; -pub const __NEW_UTS_LEN: u32 = 64; -pub const WNOHANG: u32 = 1; -pub const WUNTRACED: u32 = 2; -pub const WSTOPPED: u32 = 2; -pub const WEXITED: u32 = 4; -pub const WCONTINUED: u32 = 8; -pub const WNOWAIT: u32 = 16777216; -pub const __WNOTHREAD: u32 = 536870912; -pub const __WALL: u32 = 1073741824; -pub const __WCLONE: u32 = 2147483648; -pub const P_ALL: u32 = 0; -pub const P_PID: u32 = 1; -pub const P_PGID: u32 = 2; -pub const P_PIDFD: u32 = 3; -pub const XATTR_CREATE: u32 = 1; -pub const XATTR_REPLACE: u32 = 2; -pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0"; -pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0"; -pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0"; -pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0"; -pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0"; -pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0"; -pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0"; -pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0"; -pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0"; -pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0"; -pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0"; -pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0"; -pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0"; -pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0"; -pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0"; -pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0"; -pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0"; -pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0"; -pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0"; -pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0"; -pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0"; -pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0"; -pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0"; -pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0"; -pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0"; -pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0"; -pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0"; -pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0"; -pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0"; -pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0"; -pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0"; -pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0"; -pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0"; -pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0"; -pub const MFD_CLOEXEC: u32 = 1; -pub const MFD_ALLOW_SEALING: u32 = 2; -pub const MFD_HUGETLB: u32 = 4; -pub const MFD_NOEXEC_SEAL: u32 = 8; -pub const MFD_EXEC: u32 = 16; -pub const MFD_HUGE_SHIFT: u32 = 26; -pub const MFD_HUGE_MASK: u32 = 63; -pub const MFD_HUGE_64KB: u32 = 1073741824; -pub const MFD_HUGE_512KB: u32 = 1275068416; -pub const MFD_HUGE_1MB: u32 = 1342177280; -pub const MFD_HUGE_2MB: u32 = 1409286144; -pub const MFD_HUGE_8MB: u32 = 1543503872; -pub const MFD_HUGE_16MB: u32 = 1610612736; -pub const MFD_HUGE_32MB: u32 = 1677721600; -pub const MFD_HUGE_256MB: u32 = 1879048192; -pub const MFD_HUGE_512MB: u32 = 1946157056; -pub const MFD_HUGE_1GB: u32 = 2013265920; -pub const MFD_HUGE_2GB: u32 = 2080374784; -pub const MFD_HUGE_16GB: u32 = 2281701376; -pub const TFD_TIMER_ABSTIME: u32 = 1; -pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; -pub const TFD_CLOEXEC: u32 = 524288; -pub const TFD_NONBLOCK: u32 = 2048; -pub const USERFAULTFD_IOC: u32 = 170; -pub const _UFFDIO_REGISTER: u32 = 0; -pub const _UFFDIO_UNREGISTER: u32 = 1; -pub const _UFFDIO_WAKE: u32 = 2; -pub const _UFFDIO_COPY: u32 = 3; -pub const _UFFDIO_ZEROPAGE: u32 = 4; -pub const _UFFDIO_WRITEPROTECT: u32 = 6; -pub const _UFFDIO_CONTINUE: u32 = 7; -pub const _UFFDIO_API: u32 = 63; -pub const UFFDIO: u32 = 170; -pub const UFFD_EVENT_PAGEFAULT: u32 = 18; -pub const UFFD_EVENT_FORK: u32 = 19; -pub const UFFD_EVENT_REMAP: u32 = 20; -pub const UFFD_EVENT_REMOVE: u32 = 21; -pub const UFFD_EVENT_UNMAP: u32 = 22; -pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; -pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; -pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; -pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; -pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; -pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; -pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; -pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; -pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; -pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; -pub const UFFD_FEATURE_SIGBUS: u32 = 128; -pub const UFFD_FEATURE_THREAD_ID: u32 = 256; -pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; -pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; -pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; -pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; -pub const UFFD_USER_MODE_ONLY: u32 = 1; -pub const IORING_FILE_INDEX_ALLOC: i32 = -1; -pub const IORING_SETUP_IOPOLL: u32 = 1; -pub const IORING_SETUP_SQPOLL: u32 = 2; -pub const IORING_SETUP_SQ_AFF: u32 = 4; -pub const IORING_SETUP_CQSIZE: u32 = 8; -pub const IORING_SETUP_CLAMP: u32 = 16; -pub const IORING_SETUP_ATTACH_WQ: u32 = 32; -pub const IORING_SETUP_R_DISABLED: u32 = 64; -pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; -pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; -pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; -pub const IORING_SETUP_SQE128: u32 = 1024; -pub const IORING_SETUP_CQE32: u32 = 2048; -pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; -pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; -pub const IORING_URING_CMD_FIXED: u32 = 1; -pub const IORING_FSYNC_DATASYNC: u32 = 1; -pub const IORING_TIMEOUT_ABS: u32 = 1; -pub const IORING_TIMEOUT_UPDATE: u32 = 2; -pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; -pub const IORING_TIMEOUT_REALTIME: u32 = 8; -pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; -pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; -pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; -pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; -pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; -pub const IORING_POLL_ADD_MULTI: u32 = 1; -pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; -pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; -pub const IORING_POLL_ADD_LEVEL: u32 = 8; -pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; -pub const IORING_ASYNC_CANCEL_FD: u32 = 2; -pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; -pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; -pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; -pub const IORING_RECV_MULTISHOT: u32 = 2; -pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; -pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; -pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; -pub const IORING_ACCEPT_MULTISHOT: u32 = 1; -pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; -pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; -pub const IORING_CQE_F_BUFFER: u32 = 1; -pub const IORING_CQE_F_MORE: u32 = 2; -pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; -pub const IORING_CQE_F_NOTIF: u32 = 8; -pub const IORING_OFF_SQ_RING: u32 = 0; -pub const IORING_OFF_CQ_RING: u32 = 134217728; -pub const IORING_OFF_SQES: u32 = 268435456; -pub const IORING_SQ_NEED_WAKEUP: u32 = 1; -pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; -pub const IORING_SQ_TASKRUN: u32 = 4; -pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; -pub const IORING_ENTER_GETEVENTS: u32 = 1; -pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; -pub const IORING_ENTER_SQ_WAIT: u32 = 4; -pub const IORING_ENTER_EXT_ARG: u32 = 8; -pub const IORING_ENTER_REGISTERED_RING: u32 = 16; -pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; -pub const IORING_FEAT_NODROP: u32 = 2; -pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; -pub const IORING_FEAT_RW_CUR_POS: u32 = 8; -pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; -pub const IORING_FEAT_FAST_POLL: u32 = 32; -pub const IORING_FEAT_POLL_32BITS: u32 = 64; -pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; -pub const IORING_FEAT_EXT_ARG: u32 = 256; -pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; -pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; -pub const IORING_FEAT_CQE_SKIP: u32 = 2048; -pub const IORING_FEAT_LINKED_FILE: u32 = 4096; -pub const IORING_FEAT_REG_REG_RING: u32 = 8192; -pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; -pub const IORING_REGISTER_FILES_SKIP: i32 = -2; -pub const IO_URING_OP_SUPPORTED: u32 = 1; -pub const DT_UNKNOWN: u32 = 0; -pub const DT_FIFO: u32 = 1; -pub const DT_CHR: u32 = 2; -pub const DT_DIR: u32 = 4; -pub const DT_BLK: u32 = 6; -pub const DT_REG: u32 = 8; -pub const DT_LNK: u32 = 10; -pub const DT_SOCK: u32 = 12; -pub const SHUT_RD: u32 = 0; -pub const SHUT_WR: u32 = 1; -pub const SHUT_RDWR: u32 = 2; -pub const STAT64_HAS_BROKEN_ST_INO: u32 = 1; -pub const SOCK_STREAM: u32 = 1; -pub const SOCK_DGRAM: u32 = 2; -pub const SOCK_RAW: u32 = 3; -pub const SOCK_RDM: u32 = 4; -pub const SOCK_SEQPACKET: u32 = 5; -pub const F_OK: u32 = 0; -pub const R_OK: u32 = 4; -pub const W_OK: u32 = 2; -pub const X_OK: u32 = 1; -pub const UTIME_NOW: u32 = 1073741823; -pub const UTIME_OMIT: u32 = 1073741822; -pub const MSG_DONTWAIT: u32 = 64; -pub const AF_UNSPEC: u32 = 0; -pub const AF_UNIX: u32 = 1; -pub const AF_INET: u32 = 2; -pub const AF_AX25: u32 = 3; -pub const AF_IPX: u32 = 4; -pub const AF_APPLETALK: u32 = 5; -pub const AF_NETROM: u32 = 6; -pub const AF_BRIDGE: u32 = 7; -pub const AF_ATMPVC: u32 = 8; -pub const AF_X25: u32 = 9; -pub const AF_INET6: u32 = 10; -pub const AF_ROSE: u32 = 11; -pub const AF_DECnet: u32 = 12; -pub const AF_NETBEUI: u32 = 13; -pub const AF_SECURITY: u32 = 14; -pub const AF_KEY: u32 = 15; -pub const AF_NETLINK: u32 = 16; -pub const AF_PACKET: u32 = 17; -pub const AF_ASH: u32 = 18; -pub const AF_ECONET: u32 = 19; -pub const AF_ATMSVC: u32 = 20; -pub const AF_RDS: u32 = 21; -pub const AF_SNA: u32 = 22; -pub const AF_IRDA: u32 = 23; -pub const AF_PPPOX: u32 = 24; -pub const AF_WANPIPE: u32 = 25; -pub const AF_LLC: u32 = 26; -pub const AF_CAN: u32 = 29; -pub const AF_TIPC: u32 = 30; -pub const AF_BLUETOOTH: u32 = 31; -pub const AF_IUCV: u32 = 32; -pub const AF_RXRPC: u32 = 33; -pub const AF_ISDN: u32 = 34; -pub const AF_PHONET: u32 = 35; -pub const AF_IEEE802154: u32 = 36; -pub const AF_MAX: u32 = 37; -pub const MSG_OOB: u32 = 1; -pub const MSG_PEEK: u32 = 2; -pub const MSG_DONTROUTE: u32 = 4; -pub const MSG_CTRUNC: u32 = 8; -pub const MSG_PROBE: u32 = 16; -pub const MSG_TRUNC: u32 = 32; -pub const MSG_EOR: u32 = 128; -pub const MSG_WAITALL: u32 = 256; -pub const MSG_FIN: u32 = 512; -pub const MSG_SYN: u32 = 1024; -pub const MSG_CONFIRM: u32 = 2048; -pub const MSG_RST: u32 = 4096; -pub const MSG_ERRQUEUE: u32 = 8192; -pub const MSG_NOSIGNAL: u32 = 16384; -pub const MSG_MORE: u32 = 32768; -pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; -pub const STDIN_FILENO: u32 = 0; -pub const STDOUT_FILENO: u32 = 1; -pub const STDERR_FILENO: u32 = 2; -pub const RWF_HIPRI: u32 = 1; -pub const RWF_DSYNC: u32 = 2; -pub const RWF_SYNC: u32 = 4; -pub const RWF_NOWAIT: u32 = 8; -pub const RWF_APPEND: u32 = 16; -pub const EFD_SEMAPHORE: u32 = 1; -pub const EFD_CLOEXEC: u32 = 524288; -pub const EFD_NONBLOCK: u32 = 2048; -pub const EPOLLIN: u32 = 1; -pub const EPOLLPRI: u32 = 2; -pub const EPOLLOUT: u32 = 4; -pub const EPOLLERR: u32 = 8; -pub const EPOLLHUP: u32 = 16; -pub const EPOLLNVAL: u32 = 32; -pub const EPOLLRDNORM: u32 = 64; -pub const EPOLLRDBAND: u32 = 128; -pub const EPOLLWRNORM: u32 = 256; -pub const EPOLLWRBAND: u32 = 512; -pub const EPOLLMSG: u32 = 1024; -pub const EPOLLRDHUP: u32 = 8192; -pub const EPOLLEXCLUSIVE: u32 = 268435456; -pub const EPOLLWAKEUP: u32 = 536870912; -pub const EPOLLONESHOT: u32 = 1073741824; -pub const EPOLLET: u32 = 2147483648; -pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; -pub const TFD_CREATE_FLAGS: u32 = 526336; -pub const TFD_SETTIME_FLAGS: u32 = 1; -pub const SCM_RIGHTS: u32 = 1; -pub const SCM_CREDENTIALS: u32 = 2; -pub const SCM_SECURITY: u32 = 3; -pub const UFFD_API: u32 = 170; -pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; -pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; -pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; -pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; -pub const UFFDIO_COPY_MODE_WP: u32 = 2; -pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; -pub const SPLICE_F_MOVE: u32 = 1; -pub const SPLICE_F_NONBLOCK: u32 = 2; -pub const SPLICE_F_MORE: u32 = 4; -pub const SPLICE_F_GIFT: u32 = 8; -pub const MNT_FORCE: u32 = 1; -pub const MNT_DETACH: u32 = 2; -pub const MNT_EXPIRE: u32 = 4; -pub const UMOUNT_NOFOLLOW: u32 = 8; -pub const UMOUNT_UNUSED: u32 = 2147483648; -pub const _NSIG: u32 = 64; -pub type size_t = crate::ctypes::c_uint; -pub type ssize_t = crate::ctypes::c_int; -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 32usize], -} -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_mode_t = crate::ctypes::c_ushort; -pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; -pub type __kernel_uid_t = crate::ctypes::c_ushort; -pub type __kernel_gid_t = crate::ctypes::c_ushort; -pub type __kernel_old_dev_t = crate::ctypes::c_ushort; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_size_t = crate::ctypes::c_uint; -pub type __kernel_ssize_t = crate::ctypes::c_int; -pub type __kernel_ptrdiff_t = crate::ctypes::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_header_struct { -pub version: __u32, -pub pid: crate::ctypes::c_int, -} -pub type cap_user_header_t = *mut __user_cap_header_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_data_struct { -pub effective: __u32, -pub permitted: __u32, -pub inheritable: __u32, -} -pub type cap_user_data_t = *mut __user_cap_data_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data { -pub magic_etc: __le32, -pub data: [vfs_cap_data__bindgen_ty_1; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data { -pub magic_etc: __le32, -pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], -pub rootid: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct f_owner_ex { -pub type_: crate::ctypes::c_int, -pub pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_off_t, -pub l_len: __kernel_off_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock64 { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_loff_t, -pub l_len: __kernel_loff_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct open_how { -pub flags: __u64, -pub mode: __u64, -pub resolve: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct epoll_event { -pub events: __poll_t, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v1 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub master_key_descriptor: [__u8; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_key { -pub mode: __u32, -pub raw: [__u8; 64usize], -pub size: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v2 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub __reserved: [__u8; 4usize], -pub master_key_identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_get_policy_ex_arg { -pub policy_size: __u64, -pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { -pub version: __u8, -pub v1: fscrypt_policy_v1, -pub v2: fscrypt_policy_v2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_key_specifier { -pub type_: __u32, -pub __reserved: __u32, -pub u: fscrypt_key_specifier__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_key_specifier__bindgen_ty_1 { -pub __reserved: [__u8; 32usize], -pub descriptor: [__u8; 8usize], -pub identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct fscrypt_provisioning_key_payload { -pub type_: __u32, -pub __reserved: __u32, -pub raw: __IncompleteArrayField<__u8>, -} -#[repr(C)] -pub struct fscrypt_add_key_arg { -pub key_spec: fscrypt_key_specifier, -pub raw_size: __u32, -pub key_id: __u32, -pub __reserved: [__u32; 8usize], -pub raw: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_remove_key_arg { -pub key_spec: fscrypt_key_specifier, -pub removal_status_flags: __u32, -pub __reserved: [__u32; 5usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_get_key_status_arg { -pub key_spec: fscrypt_key_specifier, -pub __reserved: [__u32; 6usize], -pub status: __u32, -pub status_flags: __u32, -pub user_count: __u32, -pub __out_reserved: [__u32; 13usize], -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum fsconfig_command { -FSCONFIG_SET_FLAG = 0, -FSCONFIG_SET_STRING = 1, -FSCONFIG_SET_BINARY = 2, -FSCONFIG_SET_PATH = 3, -FSCONFIG_SET_PATH_EMPTY = 4, -FSCONFIG_SET_FD = 5, -FSCONFIG_CMD_CREATE = 6, -FSCONFIG_CMD_RECONFIGURE = 7, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mount_attr { -pub attr_set: __u64, -pub attr_clr: __u64, -pub propagation: __u64, -pub userns_fd: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct file_clone_range { -pub src_fd: __s64, -pub src_offset: __u64, -pub src_length: __u64, -pub dest_offset: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fstrim_range { -pub start: __u64, -pub len: __u64, -pub minlen: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct file_dedupe_range_info { -pub dest_fd: __s64, -pub dest_offset: __u64, -pub bytes_deduped: __u64, -pub status: __s32, -pub reserved: __u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct file_dedupe_range { -pub src_offset: __u64, -pub src_length: __u64, -pub dest_count: __u16, -pub reserved1: __u16, -pub reserved2: __u32, -pub info: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct files_stat_struct { -pub nr_files: crate::ctypes::c_ulong, -pub nr_free_files: crate::ctypes::c_ulong, -pub max_files: crate::ctypes::c_ulong, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct inodes_stat_t { -pub nr_inodes: crate::ctypes::c_long, -pub nr_unused: crate::ctypes::c_long, -pub dummy: [crate::ctypes::c_long; 5usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fsxattr { -pub fsx_xflags: __u32, -pub fsx_extsize: __u32, -pub fsx_nextents: __u32, -pub fsx_projid: __u32, -pub fsx_cowextsize: __u32, -pub fsx_pad: [crate::ctypes::c_uchar; 8usize], -} -pub type __kernel_rwf_t = crate::ctypes::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct futex_waitv { -pub val: __u64, -pub uaddr: __u64, -pub flags: __u32, -pub __reserved: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct robust_list { -pub next: *mut robust_list, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct robust_list_head { -pub list: robust_list, -pub futex_offset: crate::ctypes::c_long, -pub list_op_pending: *mut robust_list, -} -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], -} -pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; -pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; -pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; -pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; -pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; -pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; -pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; -pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; -pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; -pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; -pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; -pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; -pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; -pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; -pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; -pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; -pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; -pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; -pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; -pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; -pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; -pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; -pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; -pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; -pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; -pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; -pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; -pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; -pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_1 { -IPPROTO_IP = 0, -IPPROTO_ICMP = 1, -IPPROTO_IGMP = 2, -IPPROTO_IPIP = 4, -IPPROTO_TCP = 6, -IPPROTO_EGP = 8, -IPPROTO_PUP = 12, -IPPROTO_UDP = 17, -IPPROTO_IDP = 22, -IPPROTO_TP = 29, -IPPROTO_DCCP = 33, -IPPROTO_IPV6 = 41, -IPPROTO_RSVP = 46, -IPPROTO_GRE = 47, -IPPROTO_ESP = 50, -IPPROTO_AH = 51, -IPPROTO_MTP = 92, -IPPROTO_BEETPH = 94, -IPPROTO_ENCAP = 98, -IPPROTO_PIM = 103, -IPPROTO_COMP = 108, -IPPROTO_L2TP = 115, -IPPROTO_SCTP = 132, -IPPROTO_UDPLITE = 136, -IPPROTO_MPLS = 137, -IPPROTO_ETHERNET = 143, -IPPROTO_RAW = 255, -IPPROTO_MPTCP = 262, -IPPROTO_MAX = 263, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_addr { -pub s_addr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq { -pub imr_multiaddr: in_addr, -pub imr_interface: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreqn { -pub imr_multiaddr: in_addr, -pub imr_address: in_addr, -pub imr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq_source { -pub imr_multiaddr: __be32, -pub imr_interface: __be32, -pub imr_sourceaddr: __be32, -} -#[repr(C)] -pub struct ip_msfilter { -pub imsf_multiaddr: __be32, -pub imsf_interface: __be32, -pub imsf_fmode: __u32, -pub imsf_numsrc: __u32, -pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, -} -#[repr(C)] -pub struct ip_msfilter__bindgen_ty_1 { -pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, -pub __bindgen_anon_1: __BindgenUnionField, -pub bindgen_union_field: u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { -pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -pub imsf_slist_flex: __IncompleteArrayField<__be32>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_req { -pub gr_interface: __u32, -pub gr_group: __kernel_sockaddr_storage, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_source_req { -pub gsr_interface: __u32, -pub gsr_group: __kernel_sockaddr_storage, -pub gsr_source: __kernel_sockaddr_storage, -} -#[repr(C)] -pub struct group_filter { -pub __bindgen_anon_1: group_filter__bindgen_ty_1, -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u32; 67usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { -pub gf_interface_aux: __u32, -pub gf_group_aux: __kernel_sockaddr_storage, -pub gf_fmode_aux: __u32, -pub gf_numsrc_aux: __u32, -pub gf_slist: [__kernel_sockaddr_storage; 1usize], -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { -pub gf_interface: __u32, -pub gf_group: __kernel_sockaddr_storage, -pub gf_fmode: __u32, -pub gf_numsrc: __u32, -pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_pktinfo { -pub ipi_ifindex: crate::ctypes::c_int, -pub ipi_spec_dst: in_addr, -pub ipi_addr: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_in { -pub sin_family: __kernel_sa_family_t, -pub sin_port: __be16, -pub sin_addr: in_addr, -pub __pad: [crate::ctypes::c_uchar; 8usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct inotify_event { -pub wd: __s32, -pub mask: __u32, -pub cookie: __u32, -pub len: __u32, -pub name: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct iphdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub tos: __u8, -pub tot_len: __be16, -pub id: __be16, -pub frag_off: __be16, -pub ttl: __u8, -pub protocol: __u8, -pub check: __sum16, -pub __bindgen_anon_1: iphdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union iphdr__bindgen_ty_1 { -pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: __be32, -pub daddr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: __be32, -pub daddr: __be32, -} -impl iphdr { -#[inline] -pub fn ihl(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_ihl(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; -ihl as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_auth_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub reserved: __be16, -pub spi: __be32, -pub seq_no: __be32, -pub auth_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_esp_hdr { -pub spi: __be32, -pub seq_no: __be32, -pub enc_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_comp_hdr { -pub nexthdr: __u8, -pub flags: __u8, -pub cpi: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_beet_phdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub padlen: __u8, -pub reserved: __u8, -} -pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; -pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; -pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; -pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; -pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; -pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; -pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; -pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; -pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; -pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; -pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; -pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; -pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; -pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; -pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; -pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; -pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; -pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; -pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; -pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; -pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; -pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; -pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; -pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; -pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; -pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; -pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; -pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; -pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_2 { -IPV4_DEVCONF_FORWARDING = 1, -IPV4_DEVCONF_MC_FORWARDING = 2, -IPV4_DEVCONF_PROXY_ARP = 3, -IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, -IPV4_DEVCONF_SECURE_REDIRECTS = 5, -IPV4_DEVCONF_SEND_REDIRECTS = 6, -IPV4_DEVCONF_SHARED_MEDIA = 7, -IPV4_DEVCONF_RP_FILTER = 8, -IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, -IPV4_DEVCONF_BOOTP_RELAY = 10, -IPV4_DEVCONF_LOG_MARTIANS = 11, -IPV4_DEVCONF_TAG = 12, -IPV4_DEVCONF_ARPFILTER = 13, -IPV4_DEVCONF_MEDIUM_ID = 14, -IPV4_DEVCONF_NOXFRM = 15, -IPV4_DEVCONF_NOPOLICY = 16, -IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, -IPV4_DEVCONF_ARP_ANNOUNCE = 18, -IPV4_DEVCONF_ARP_IGNORE = 19, -IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, -IPV4_DEVCONF_ARP_ACCEPT = 21, -IPV4_DEVCONF_ARP_NOTIFY = 22, -IPV4_DEVCONF_ACCEPT_LOCAL = 23, -IPV4_DEVCONF_SRC_VMARK = 24, -IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, -IPV4_DEVCONF_ROUTE_LOCALNET = 26, -IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, -IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, -IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, -IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, -IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, -IPV4_DEVCONF_BC_FORWARDING = 32, -IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, -__IPV4_DEVCONF_MAX = 34, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_addr { -pub in6_u: in6_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union in6_addr__bindgen_ty_1 { -pub u6_addr8: [__u8; 16usize], -pub u6_addr16: [__be16; 8usize], -pub u6_addr32: [__be32; 4usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_in6 { -pub sin6_family: crate::ctypes::c_ushort, -pub sin6_port: __be16, -pub sin6_flowinfo: __be32, -pub sin6_addr: in6_addr, -pub sin6_scope_id: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6_mreq { -pub ipv6mr_multiaddr: in6_addr, -pub ipv6mr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_flowlabel_req { -pub flr_dst: in6_addr, -pub flr_label: __be32, -pub flr_action: __u8, -pub flr_share: __u8, -pub flr_flags: __u16, -pub flr_expires: __u16, -pub flr_linger: __u16, -pub __flr_pad: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_pktinfo { -pub ipi6_addr: in6_addr, -pub ipi6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ip6_mtuinfo { -pub ip6m_addr: sockaddr_in6, -pub ip6m_mtu: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_ifreq { -pub ifr6_addr: in6_addr, -pub ifr6_prefixlen: __u32, -pub ifr6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_rt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub type_: __u8, -pub segments_left: __u8, -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_opt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -} -#[repr(C)] -pub struct rt0_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rt2_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: in6_addr, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct ipv6_destopt_hao { -pub type_: __u8, -pub length: __u8, -pub addr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub flow_lbl: [__u8; 3usize], -pub payload_len: __be16, -pub nexthdr: __u8, -pub hop_limit: __u8, -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ipv6hdr__bindgen_ty_1 { -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -impl ipv6hdr { -#[inline] -pub fn priority(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_priority(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let priority: u8 = unsafe { ::core::mem::transmute(priority) }; -priority as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit -} -} -pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; -pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; -pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; -pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; -pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; -pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; -pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; -pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; -pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; -pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; -pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; -pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; -pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; -pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; -pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; -pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; -pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; -pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; -pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; -pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; -pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; -pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; -pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; -pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; -pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; -pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; -pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; -pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; -pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; -pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; -pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; -pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; -pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; -pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; -pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; -pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; -pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; -pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; -pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; -pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; -pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; -pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; -pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; -pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; -pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; -pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; -pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; -pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; -pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; -pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; -pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; -pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_3 { -DEVCONF_FORWARDING = 0, -DEVCONF_HOPLIMIT = 1, -DEVCONF_MTU6 = 2, -DEVCONF_ACCEPT_RA = 3, -DEVCONF_ACCEPT_REDIRECTS = 4, -DEVCONF_AUTOCONF = 5, -DEVCONF_DAD_TRANSMITS = 6, -DEVCONF_RTR_SOLICITS = 7, -DEVCONF_RTR_SOLICIT_INTERVAL = 8, -DEVCONF_RTR_SOLICIT_DELAY = 9, -DEVCONF_USE_TEMPADDR = 10, -DEVCONF_TEMP_VALID_LFT = 11, -DEVCONF_TEMP_PREFERED_LFT = 12, -DEVCONF_REGEN_MAX_RETRY = 13, -DEVCONF_MAX_DESYNC_FACTOR = 14, -DEVCONF_MAX_ADDRESSES = 15, -DEVCONF_FORCE_MLD_VERSION = 16, -DEVCONF_ACCEPT_RA_DEFRTR = 17, -DEVCONF_ACCEPT_RA_PINFO = 18, -DEVCONF_ACCEPT_RA_RTR_PREF = 19, -DEVCONF_RTR_PROBE_INTERVAL = 20, -DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, -DEVCONF_PROXY_NDP = 22, -DEVCONF_OPTIMISTIC_DAD = 23, -DEVCONF_ACCEPT_SOURCE_ROUTE = 24, -DEVCONF_MC_FORWARDING = 25, -DEVCONF_DISABLE_IPV6 = 26, -DEVCONF_ACCEPT_DAD = 27, -DEVCONF_FORCE_TLLAO = 28, -DEVCONF_NDISC_NOTIFY = 29, -DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, -DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, -DEVCONF_SUPPRESS_FRAG_NDISC = 32, -DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, -DEVCONF_USE_OPTIMISTIC = 34, -DEVCONF_ACCEPT_RA_MTU = 35, -DEVCONF_STABLE_SECRET = 36, -DEVCONF_USE_OIF_ADDRS_ONLY = 37, -DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, -DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, -DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, -DEVCONF_DROP_UNSOLICITED_NA = 41, -DEVCONF_KEEP_ADDR_ON_DOWN = 42, -DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, -DEVCONF_SEG6_ENABLED = 44, -DEVCONF_SEG6_REQUIRE_HMAC = 45, -DEVCONF_ENHANCED_DAD = 46, -DEVCONF_ADDR_GEN_MODE = 47, -DEVCONF_DISABLE_POLICY = 48, -DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, -DEVCONF_NDISC_TCLASS = 50, -DEVCONF_RPL_SEG_ENABLED = 51, -DEVCONF_RA_DEFRTR_METRIC = 52, -DEVCONF_IOAM6_ENABLED = 53, -DEVCONF_IOAM6_ID = 54, -DEVCONF_IOAM6_ID_WIDE = 55, -DEVCONF_NDISC_EVICT_NOCARRIER = 56, -DEVCONF_ACCEPT_UNTRACKED_NA = 57, -DEVCONF_MAX = 58, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum socket_state { -SS_FREE = 0, -SS_UNCONNECTED = 1, -SS_CONNECTING = 2, -SS_CONNECTED = 3, -SS_DISCONNECTING = 4, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pollfd { -pub fd: crate::ctypes::c_int, -pub events: crate::ctypes::c_short, -pub revents: crate::ctypes::c_short, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prctl_mm_map { -pub start_code: __u64, -pub end_code: __u64, -pub start_data: __u64, -pub end_data: __u64, -pub start_brk: __u64, -pub brk: __u64, -pub start_stack: __u64, -pub arg_start: __u64, -pub arg_end: __u64, -pub env_start: __u64, -pub env_end: __u64, -pub auxv: *mut __u64, -pub auxv_size: __u32, -pub exe_fd: __u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct rand_pool_info { -pub entropy_count: crate::ctypes::c_int, -pub buf_size: crate::ctypes::c_int, -pub buf: __IncompleteArrayField<__u32>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_timespec { -pub tv_sec: __kernel_time64_t, -pub tv_nsec: crate::ctypes::c_longlong, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_itimerspec { -pub it_interval: __kernel_timespec, -pub it_value: __kernel_timespec, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_old_timeval { -pub tv_sec: __kernel_long_t, -pub tv_usec: __kernel_long_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_old_timespec { -pub tv_sec: __kernel_old_time_t, -pub tv_nsec: crate::ctypes::c_long, +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_old_itimerval { -pub it_interval: __kernel_old_timeval, -pub it_value: __kernel_old_timeval, +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sock_timeval { -pub tv_sec: __s64, -pub tv_usec: __s64, +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct timespec { -pub tv_sec: __kernel_old_time_t, -pub tv_nsec: crate::ctypes::c_long, +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct timeval { -pub tv_sec: __kernel_old_time_t, -pub tv_usec: __kernel_suseconds_t, +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct itimerspec { -pub it_interval: timespec, -pub it_value: timespec, +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct itimerval { -pub it_interval: timeval, -pub it_value: timeval, +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timezone { -pub tz_minuteswest: crate::ctypes::c_int, -pub tz_dsttime: crate::ctypes::c_int, +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct rusage { -pub ru_utime: __kernel_old_timeval, -pub ru_stime: __kernel_old_timeval, -pub ru_maxrss: __kernel_long_t, -pub ru_ixrss: __kernel_long_t, -pub ru_idrss: __kernel_long_t, -pub ru_isrss: __kernel_long_t, -pub ru_minflt: __kernel_long_t, -pub ru_majflt: __kernel_long_t, -pub ru_nswap: __kernel_long_t, -pub ru_inblock: __kernel_long_t, -pub ru_oublock: __kernel_long_t, -pub ru_msgsnd: __kernel_long_t, -pub ru_msgrcv: __kernel_long_t, -pub ru_nsignals: __kernel_long_t, -pub ru_nvcsw: __kernel_long_t, -pub ru_nivcsw: __kernel_long_t, +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct rlimit { -pub rlim_cur: __kernel_ulong_t, -pub rlim_max: __kernel_ulong_t, +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct rlimit64 { -pub rlim_cur: __u64, -pub rlim_max: __u64, +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct clone_args { -pub flags: __u64, -pub pidfd: __u64, -pub child_tid: __u64, -pub parent_tid: __u64, -pub exit_signal: __u64, -pub stack: __u64, -pub stack_size: __u64, -pub tls: __u64, -pub set_tid: __u64, -pub set_tid_size: __u64, -pub cgroup: __u64, -} -pub type sigset_t = crate::ctypes::c_ulong; -pub type __signalfn_t = ::core::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::core::option::Option; -pub type __sigrestore_t = __restorefn_t; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigaction { -pub _u: sigaction__bindgen_ty_1, -pub sa_mask: sigset_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_restorer: ::core::option::Option, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigaction__bindgen_ty_1 { -pub _sa_handler: __sighandler_t, -pub _sa_sigaction: ::core::option::Option, +pub struct futex_waitv { +pub val: __u64, +pub uaddr: __u64, +pub flags: __u32, +pub __reserved: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sigaltstack { -pub ss_sp: *mut crate::ctypes::c_void, -pub ss_flags: crate::ctypes::c_int, -pub ss_size: __kernel_size_t, -} -pub type stack_t = sigaltstack; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { -pub sival_int: crate::ctypes::c_int, -pub sival_ptr: *mut crate::ctypes::c_void, -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { -pub _kill: __sifields__bindgen_ty_1, -pub _timer: __sifields__bindgen_ty_2, -pub _rt: __sifields__bindgen_ty_3, -pub _sigchld: __sifields__bindgen_ty_4, -pub _sigfault: __sifields__bindgen_ty_5, -pub _sigpoll: __sifields__bindgen_ty_6, -pub _sigsys: __sifields__bindgen_ty_7, +pub struct robust_list { +pub next: *mut robust_list, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_1 { -pub _pid: __kernel_pid_t, -pub _uid: __kernel_uid32_t, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sifields__bindgen_ty_2 { -pub _tid: __kernel_timer_t, -pub _overrun: crate::ctypes::c_int, -pub _sigval: sigval_t, -pub _sys_private: crate::ctypes::c_int, +pub struct robust_list_head { +pub list: robust_list, +pub futex_offset: crate::ctypes::c_long, +pub list_op_pending: *mut robust_list, } #[repr(C)] -#[derive(Copy, Clone)] -pub struct __sifields__bindgen_ty_3 { -pub _pid: __kernel_pid_t, -pub _uid: __kernel_uid32_t, -pub _sigval: sigval_t, +#[derive(Debug)] +pub struct inotify_event { +pub wd: __s32, +pub mask: __u32, +pub cookie: __u32, +pub len: __u32, +pub name: __IncompleteArrayField, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_4 { -pub _pid: __kernel_pid_t, -pub _uid: __kernel_uid32_t, -pub _status: crate::ctypes::c_int, -pub _utime: __kernel_clock_t, -pub _stime: __kernel_clock_t, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sifields__bindgen_ty_5 { -pub _addr: *mut crate::ctypes::c_void, -pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, +pub struct pollfd { +pub fd: crate::ctypes::c_int, +pub events: crate::ctypes::c_short, +pub revents: crate::ctypes::c_short, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { -pub _trapno: crate::ctypes::c_int, -pub _addr_lsb: crate::ctypes::c_short, -pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, -pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, +#[derive(Debug)] +pub struct rand_pool_info { +pub entropy_count: crate::ctypes::c_int, +pub buf_size: crate::ctypes::c_int, +pub buf: __IncompleteArrayField<__u32>, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { -pub _dummy_bnd: [crate::ctypes::c_char; 4usize], -pub _lower: *mut crate::ctypes::c_void, -pub _upper: *mut crate::ctypes::c_void, +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 { -pub _dummy_pkey: [crate::ctypes::c_char; 4usize], -pub _pkey: __u32, +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { -pub _data: crate::ctypes::c_ulong, -pub _type: __u32, -pub _flags: __u32, +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_6 { -pub _band: crate::ctypes::c_long, -pub _fd: crate::ctypes::c_int, +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_7 { -pub _call_addr: *mut crate::ctypes::c_void, -pub _syscall: crate::ctypes::c_int, -pub _arch: crate::ctypes::c_uint, +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, } #[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo { -pub __bindgen_anon_1: siginfo__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, } #[repr(C)] -#[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { -pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, -pub _si_pad: [crate::ctypes::c_int; 32usize], +#[derive(Debug, Copy, Clone)] +pub struct timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, } #[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { -pub si_signo: crate::ctypes::c_int, -pub si_errno: crate::ctypes::c_int, -pub si_code: crate::ctypes::c_int, -pub _sifields: __sifields, +#[derive(Debug, Copy, Clone)] +pub struct timeval { +pub tv_sec: __kernel_old_time_t, +pub tv_usec: __kernel_suseconds_t, } -pub type siginfo_t = siginfo; #[repr(C)] -#[derive(Copy, Clone)] -pub struct sigevent { -pub sigev_value: sigval_t, -pub sigev_signo: crate::ctypes::c_int, -pub sigev_notify: crate::ctypes::c_int, -pub _sigev_un: sigevent__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct itimerspec { +pub it_interval: timespec, +pub it_value: timespec, } #[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { -pub _pad: [crate::ctypes::c_int; 13usize], -pub _tid: crate::ctypes::c_int, -pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct itimerval { +pub it_interval: timeval, +pub it_value: timeval, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { -pub _function: ::core::option::Option, -pub _attribute: *mut crate::ctypes::c_void, +pub struct timezone { +pub tz_minuteswest: crate::ctypes::c_int, +pub tz_dsttime: crate::ctypes::c_int, } -pub type sigevent_t = sigevent; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct statx_timestamp { -pub tv_sec: __s64, -pub tv_nsec: __u32, -pub __reserved: __s32, +pub struct rusage { +pub ru_utime: __kernel_old_timeval, +pub ru_stime: __kernel_old_timeval, +pub ru_maxrss: __kernel_long_t, +pub ru_ixrss: __kernel_long_t, +pub ru_idrss: __kernel_long_t, +pub ru_isrss: __kernel_long_t, +pub ru_minflt: __kernel_long_t, +pub ru_majflt: __kernel_long_t, +pub ru_nswap: __kernel_long_t, +pub ru_inblock: __kernel_long_t, +pub ru_oublock: __kernel_long_t, +pub ru_msgsnd: __kernel_long_t, +pub ru_msgrcv: __kernel_long_t, +pub ru_nsignals: __kernel_long_t, +pub ru_nvcsw: __kernel_long_t, +pub ru_nivcsw: __kernel_long_t, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct statx { -pub stx_mask: __u32, -pub stx_blksize: __u32, -pub stx_attributes: __u64, -pub stx_nlink: __u32, -pub stx_uid: __u32, -pub stx_gid: __u32, -pub stx_mode: __u16, -pub __spare0: [__u16; 1usize], -pub stx_ino: __u64, -pub stx_size: __u64, -pub stx_blocks: __u64, -pub stx_attributes_mask: __u64, -pub stx_atime: statx_timestamp, -pub stx_btime: statx_timestamp, -pub stx_ctime: statx_timestamp, -pub stx_mtime: statx_timestamp, -pub stx_rdev_major: __u32, -pub stx_rdev_minor: __u32, -pub stx_dev_major: __u32, -pub stx_dev_minor: __u32, -pub stx_mnt_id: __u64, -pub stx_dio_mem_align: __u32, -pub stx_dio_offset_align: __u32, -pub __spare3: [__u64; 12usize], +pub struct rlimit { +pub rlim_cur: __kernel_ulong_t, +pub rlim_max: __kernel_ulong_t, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sysinfo { -pub uptime: __kernel_long_t, -pub loads: [__kernel_ulong_t; 3usize], -pub totalram: __kernel_ulong_t, -pub freeram: __kernel_ulong_t, -pub sharedram: __kernel_ulong_t, -pub bufferram: __kernel_ulong_t, -pub totalswap: __kernel_ulong_t, -pub freeswap: __kernel_ulong_t, -pub procs: __u16, -pub pad: __u16, -pub totalhigh: __kernel_ulong_t, -pub freehigh: __kernel_ulong_t, -pub mem_unit: __u32, -pub _f: [crate::ctypes::c_char; 8usize], +pub struct rlimit64 { +pub rlim_cur: __u64, +pub rlim_max: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcphdr { -pub source: __be16, -pub dest: __be16, -pub seq: __be32, -pub ack_seq: __be32, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub window: __be16, -pub check: __sum16, -pub urg_ptr: __be16, -} -impl tcphdr { -#[inline] -pub fn res1(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } -} -#[inline] -pub fn set_res1(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn doff(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } -} -#[inline] -pub fn set_doff(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn fin(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } -} -#[inline] -pub fn set_fin(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn syn(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } -} -#[inline] -pub fn set_syn(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 1u8, val as u64) -} -} -#[inline] -pub fn rst(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } -} -#[inline] -pub fn set_rst(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(10usize, 1u8, val as u64) -} -} -#[inline] -pub fn psh(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } -} -#[inline] -pub fn set_psh(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(11usize, 1u8, val as u64) -} -} -#[inline] -pub fn ack(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } -} -#[inline] -pub fn set_ack(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(12usize, 1u8, val as u64) -} -} -#[inline] -pub fn urg(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } -} -#[inline] -pub fn set_urg(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(13usize, 1u8, val as u64) -} -} -#[inline] -pub fn ece(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } -} -#[inline] -pub fn set_ece(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(14usize, 1u8, val as u64) -} -} -#[inline] -pub fn cwr(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } -} -#[inline] -pub fn set_cwr(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(15usize, 1u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let res1: u16 = unsafe { ::core::mem::transmute(res1) }; -res1 as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let doff: u16 = unsafe { ::core::mem::transmute(doff) }; -doff as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let fin: u16 = unsafe { ::core::mem::transmute(fin) }; -fin as u64 -}); -__bindgen_bitfield_unit.set(9usize, 1u8, { -let syn: u16 = unsafe { ::core::mem::transmute(syn) }; -syn as u64 -}); -__bindgen_bitfield_unit.set(10usize, 1u8, { -let rst: u16 = unsafe { ::core::mem::transmute(rst) }; -rst as u64 -}); -__bindgen_bitfield_unit.set(11usize, 1u8, { -let psh: u16 = unsafe { ::core::mem::transmute(psh) }; -psh as u64 -}); -__bindgen_bitfield_unit.set(12usize, 1u8, { -let ack: u16 = unsafe { ::core::mem::transmute(ack) }; -ack as u64 -}); -__bindgen_bitfield_unit.set(13usize, 1u8, { -let urg: u16 = unsafe { ::core::mem::transmute(urg) }; -urg as u64 -}); -__bindgen_bitfield_unit.set(14usize, 1u8, { -let ece: u16 = unsafe { ::core::mem::transmute(ece) }; -ece as u64 -}); -__bindgen_bitfield_unit.set(15usize, 1u8, { -let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; -cwr as u64 -}); -__bindgen_bitfield_unit -} +pub struct clone_args { +pub flags: __u64, +pub pidfd: __u64, +pub child_tid: __u64, +pub parent_tid: __u64, +pub exit_signal: __u64, +pub stack: __u64, +pub stack_size: __u64, +pub tls: __u64, +pub set_tid: __u64, +pub set_tid_size: __u64, +pub cgroup: __u64, } #[repr(C)] #[derive(Copy, Clone)] -pub union tcp_word_hdr { -pub hdr: tcphdr, -pub words: [__be32; 5usize], -} -pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; -pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; -pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; -pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; -pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; -pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; -pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; -pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; -pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; -pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_4 { -TCP_FLAG_CWR = 32768, -TCP_FLAG_ECE = 16384, -TCP_FLAG_URG = 8192, -TCP_FLAG_ACK = 4096, -TCP_FLAG_PSH = 2048, -TCP_FLAG_RST = 1024, -TCP_FLAG_SYN = 512, -TCP_FLAG_FIN = 256, -TCP_RESERVED_BITS = 15, -TCP_DATA_OFFSET = 240, +pub struct sigaction { +pub _u: sigaction__bindgen_ty_1, +pub sa_mask: sigset_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_restorer: ::core::option::Option, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_repair_opt { -pub opt_code: __u32, -pub opt_val: __u32, +pub struct sigaltstack { +pub ss_sp: *mut crate::ctypes::c_void, +pub ss_flags: crate::ctypes::c_int, +pub ss_size: __kernel_size_t, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_repair_window { -pub snd_wl1: __u32, -pub snd_wnd: __u32, -pub max_window: __u32, -pub rcv_wnd: __u32, -pub rcv_wup: __u32, -} -pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; -pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; -pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; -pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_5 { -TCP_NO_QUEUE = 0, -TCP_RECV_QUEUE = 1, -TCP_SEND_QUEUE = 2, -TCP_QUEUES_NR = 3, +pub struct __sifields__bindgen_ty_1 { +pub _pid: __kernel_pid_t, +pub _uid: __kernel_uid32_t, } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_fastopen_client_fail { -TFO_STATUS_UNSPEC = 0, -TFO_COOKIE_UNAVAILABLE = 1, -TFO_DATA_NOT_ACKED = 2, -TFO_SYN_RETRANSMITTED = 3, +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __sifields__bindgen_ty_2 { +pub _tid: __kernel_timer_t, +pub _overrun: crate::ctypes::c_int, +pub _sigval: sigval_t, +pub _sys_private: crate::ctypes::c_int, } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_ca_state { -TCP_CA_Open = 0, -TCP_CA_Disorder = 1, -TCP_CA_CWR = 2, -TCP_CA_Recovery = 3, -TCP_CA_Loss = 4, +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __sifields__bindgen_ty_3 { +pub _pid: __kernel_pid_t, +pub _uid: __kernel_uid32_t, +pub _sigval: sigval_t, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_info { -pub tcpi_state: __u8, -pub tcpi_ca_state: __u8, -pub tcpi_retransmits: __u8, -pub tcpi_probes: __u8, -pub tcpi_backoff: __u8, -pub tcpi_options: __u8, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub tcpi_rto: __u32, -pub tcpi_ato: __u32, -pub tcpi_snd_mss: __u32, -pub tcpi_rcv_mss: __u32, -pub tcpi_unacked: __u32, -pub tcpi_sacked: __u32, -pub tcpi_lost: __u32, -pub tcpi_retrans: __u32, -pub tcpi_fackets: __u32, -pub tcpi_last_data_sent: __u32, -pub tcpi_last_ack_sent: __u32, -pub tcpi_last_data_recv: __u32, -pub tcpi_last_ack_recv: __u32, -pub tcpi_pmtu: __u32, -pub tcpi_rcv_ssthresh: __u32, -pub tcpi_rtt: __u32, -pub tcpi_rttvar: __u32, -pub tcpi_snd_ssthresh: __u32, -pub tcpi_snd_cwnd: __u32, -pub tcpi_advmss: __u32, -pub tcpi_reordering: __u32, -pub tcpi_rcv_rtt: __u32, -pub tcpi_rcv_space: __u32, -pub tcpi_total_retrans: __u32, -pub tcpi_pacing_rate: __u64, -pub tcpi_max_pacing_rate: __u64, -pub tcpi_bytes_acked: __u64, -pub tcpi_bytes_received: __u64, -pub tcpi_segs_out: __u32, -pub tcpi_segs_in: __u32, -pub tcpi_notsent_bytes: __u32, -pub tcpi_min_rtt: __u32, -pub tcpi_data_segs_in: __u32, -pub tcpi_data_segs_out: __u32, -pub tcpi_delivery_rate: __u64, -pub tcpi_busy_time: __u64, -pub tcpi_rwnd_limited: __u64, -pub tcpi_sndbuf_limited: __u64, -pub tcpi_delivered: __u32, -pub tcpi_delivered_ce: __u32, -pub tcpi_bytes_sent: __u64, -pub tcpi_bytes_retrans: __u64, -pub tcpi_dsack_dups: __u32, -pub tcpi_reord_seen: __u32, -pub tcpi_rcv_ooopack: __u32, -pub tcpi_snd_wnd: __u32, -pub tcpi_rcv_wnd: __u32, -pub tcpi_rehash: __u32, -} -impl tcp_info { -#[inline] -pub fn tcpi_snd_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_rcv_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +pub struct __sifields__bindgen_ty_4 { +pub _pid: __kernel_pid_t, +pub _uid: __kernel_uid32_t, +pub _status: crate::ctypes::c_int, +pub _utime: __kernel_clock_t, +pub _stime: __kernel_clock_t, } -#[inline] -pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __sifields__bindgen_ty_5 { +pub _addr: *mut crate::ctypes::c_void, +pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { +pub _dummy_bnd: [crate::ctypes::c_char; 4usize], +pub _lower: *mut crate::ctypes::c_void, +pub _upper: *mut crate::ctypes::c_void, } -#[inline] -pub fn tcpi_fastopen_client_fail(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 { +pub _dummy_pkey: [crate::ctypes::c_char; 4usize], +pub _pkey: __u32, } -#[inline] -pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 2u8, val as u64) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { +pub _data: crate::ctypes::c_ulong, +pub _type: __u32, +pub _flags: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_6 { +pub _band: crate::ctypes::c_long, +pub _fd: crate::ctypes::c_int, } -#[inline] -pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; -tcpi_snd_wscale as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; -tcpi_rcv_wscale as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; -tcpi_delivery_rate_app_limited as u64 -}); -__bindgen_bitfield_unit.set(9usize, 2u8, { -let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; -tcpi_fastopen_client_fail as u64 -}); -__bindgen_bitfield_unit +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_7 { +pub _call_addr: *mut crate::ctypes::c_void, +pub _syscall: crate::ctypes::c_int, +pub _arch: crate::ctypes::c_uint, } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo { +pub __bindgen_anon_1: siginfo__bindgen_ty_1, } -pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; -pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; -pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; -pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; -pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; -pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; -pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; -pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; -pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; -pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; -pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; -pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; -pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; -pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; -pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; -pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; -pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; -pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; -pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; -pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; -pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; -pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; -pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; -pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; -pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; -pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; -pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; -pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_6 { -TCP_NLA_PAD = 0, -TCP_NLA_BUSY = 1, -TCP_NLA_RWND_LIMITED = 2, -TCP_NLA_SNDBUF_LIMITED = 3, -TCP_NLA_DATA_SEGS_OUT = 4, -TCP_NLA_TOTAL_RETRANS = 5, -TCP_NLA_PACING_RATE = 6, -TCP_NLA_DELIVERY_RATE = 7, -TCP_NLA_SND_CWND = 8, -TCP_NLA_REORDERING = 9, -TCP_NLA_MIN_RTT = 10, -TCP_NLA_RECUR_RETRANS = 11, -TCP_NLA_DELIVERY_RATE_APP_LMT = 12, -TCP_NLA_SNDQ_SIZE = 13, -TCP_NLA_CA_STATE = 14, -TCP_NLA_SND_SSTHRESH = 15, -TCP_NLA_DELIVERED = 16, -TCP_NLA_DELIVERED_CE = 17, -TCP_NLA_BYTES_SENT = 18, -TCP_NLA_BYTES_RETRANS = 19, -TCP_NLA_DSACK_DUPS = 20, -TCP_NLA_REORD_SEEN = 21, -TCP_NLA_SRTT = 22, -TCP_NLA_TIMEOUT_REHASH = 23, -TCP_NLA_BYTES_NOTSENT = 24, -TCP_NLA_EDT = 25, -TCP_NLA_TTL = 26, -TCP_NLA_REHASH = 27, +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { +pub si_signo: crate::ctypes::c_int, +pub si_errno: crate::ctypes::c_int, +pub si_code: crate::ctypes::c_int, +pub _sifields: __sifields, } #[repr(C)] #[derive(Copy, Clone)] -pub struct tcp_md5sig { -pub tcpm_addr: __kernel_sockaddr_storage, -pub tcpm_flags: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_ifindex: crate::ctypes::c_int, -pub tcpm_key: [__u8; 80usize], +pub struct sigevent { +pub sigev_value: sigval_t, +pub sigev_signo: crate::ctypes::c_int, +pub sigev_notify: crate::ctypes::c_int, +pub _sigev_un: sigevent__bindgen_ty_1, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_diag_md5sig { -pub tcpm_family: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_addr: [__be32; 4usize], -pub tcpm_key: [__u8; 80usize], +pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { +pub _function: ::core::option::Option, +pub _attribute: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_zerocopy_receive { -pub address: __u64, -pub length: __u32, -pub recv_skip_hint: __u32, -pub inq: __u32, -pub err: __s32, -pub copybuf_address: __u64, -pub copybuf_len: __s32, -pub flags: __u32, -pub msg_control: __u64, -pub msg_controllen: __u64, -pub msg_flags: __u32, -pub reserved: __u32, +pub struct statx_timestamp { +pub tv_sec: __s64, +pub tv_nsec: __u32, +pub __reserved: __s32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statx { +pub stx_mask: __u32, +pub stx_blksize: __u32, +pub stx_attributes: __u64, +pub stx_nlink: __u32, +pub stx_uid: __u32, +pub stx_gid: __u32, +pub stx_mode: __u16, +pub __spare0: [__u16; 1usize], +pub stx_ino: __u64, +pub stx_size: __u64, +pub stx_blocks: __u64, +pub stx_attributes_mask: __u64, +pub stx_atime: statx_timestamp, +pub stx_btime: statx_timestamp, +pub stx_ctime: statx_timestamp, +pub stx_mtime: statx_timestamp, +pub stx_rdev_major: __u32, +pub stx_rdev_minor: __u32, +pub stx_dev_major: __u32, +pub stx_dev_minor: __u32, +pub stx_mnt_id: __u64, +pub stx_dio_mem_align: __u32, +pub stx_dio_offset_align: __u32, +pub __spare3: [__u64; 12usize], } -pub type cc_t = crate::ctypes::c_uchar; -pub type speed_t = crate::ctypes::c_uint; -pub type tcflag_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct termios { @@ -4480,64 +633,2026 @@ } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct winsize { -pub ws_row: crate::ctypes::c_ushort, -pub ws_col: crate::ctypes::c_ushort, -pub ws_xpixel: crate::ctypes::c_ushort, -pub ws_ypixel: crate::ctypes::c_ushort, +pub struct winsize { +pub ws_row: crate::ctypes::c_ushort, +pub ws_col: crate::ctypes::c_ushort, +pub ws_xpixel: crate::ctypes::c_ushort, +pub ws_ypixel: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct termio { +pub c_iflag: crate::ctypes::c_ushort, +pub c_oflag: crate::ctypes::c_ushort, +pub c_cflag: crate::ctypes::c_ushort, +pub c_lflag: crate::ctypes::c_ushort, +pub c_line: crate::ctypes::c_uchar, +pub c_cc: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub iov_base: *mut crate::ctypes::c_void, +pub iov_len: __kernel_size_t, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct uffd_msg { +pub event: __u8, +pub reserved1: __u8, +pub reserved2: __u16, +pub reserved3: __u32, +pub arg: uffd_msg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { +pub flags: __u64, +pub address: __u64, +pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { +pub ufd: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { +pub from: __u64, +pub to: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { +pub start: __u64, +pub end: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { +pub reserved1: __u64, +pub reserved2: __u64, +pub reserved3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_api { +pub api: __u64, +pub features: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_range { +pub start: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_register { +pub range: uffdio_range, +pub mode: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_copy { +pub dst: __u64, +pub src: __u64, +pub len: __u64, +pub mode: __u64, +pub copy: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_zeropage { +pub range: uffdio_range, +pub mode: __u64, +pub zeropage: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_writeprotect { +pub range: uffdio_range, +pub mode: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_continue { +pub range: uffdio_range, +pub mode: __u64, +pub mapped: __s64, +} +#[repr(C)] +#[derive(Debug)] +pub struct linux_dirent64 { +pub d_ino: crate::ctypes::c_ulonglong, +pub d_off: crate::ctypes::c_longlong, +pub d_reclen: __u16, +pub d_type: __u8, +pub d_name: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __old_kernel_stat { +pub st_dev: crate::ctypes::c_ushort, +pub st_ino: crate::ctypes::c_ushort, +pub st_mode: crate::ctypes::c_ushort, +pub st_nlink: crate::ctypes::c_ushort, +pub st_uid: crate::ctypes::c_ushort, +pub st_gid: crate::ctypes::c_ushort, +pub st_rdev: crate::ctypes::c_ushort, +pub st_size: crate::ctypes::c_ulong, +pub st_atime: crate::ctypes::c_ulong, +pub st_mtime: crate::ctypes::c_ulong, +pub st_ctime: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat { +pub st_dev: crate::ctypes::c_ulong, +pub st_ino: crate::ctypes::c_ulong, +pub st_mode: crate::ctypes::c_ushort, +pub st_nlink: crate::ctypes::c_ushort, +pub st_uid: crate::ctypes::c_ushort, +pub st_gid: crate::ctypes::c_ushort, +pub st_rdev: crate::ctypes::c_ulong, +pub st_size: crate::ctypes::c_ulong, +pub st_blksize: crate::ctypes::c_ulong, +pub st_blocks: crate::ctypes::c_ulong, +pub st_atime: crate::ctypes::c_ulong, +pub st_atime_nsec: crate::ctypes::c_ulong, +pub st_mtime: crate::ctypes::c_ulong, +pub st_mtime_nsec: crate::ctypes::c_ulong, +pub st_ctime: crate::ctypes::c_ulong, +pub st_ctime_nsec: crate::ctypes::c_ulong, +pub __unused4: crate::ctypes::c_ulong, +pub __unused5: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat64 { +pub st_dev: crate::ctypes::c_ulonglong, +pub __pad0: [crate::ctypes::c_uchar; 4usize], +pub __st_ino: crate::ctypes::c_ulong, +pub st_mode: crate::ctypes::c_uint, +pub st_nlink: crate::ctypes::c_uint, +pub st_uid: crate::ctypes::c_ulong, +pub st_gid: crate::ctypes::c_ulong, +pub st_rdev: crate::ctypes::c_ulonglong, +pub __pad3: [crate::ctypes::c_uchar; 4usize], +pub st_size: crate::ctypes::c_longlong, +pub st_blksize: crate::ctypes::c_ulong, +pub st_blocks: crate::ctypes::c_ulonglong, +pub st_atime: crate::ctypes::c_ulong, +pub st_atime_nsec: crate::ctypes::c_ulong, +pub st_mtime: crate::ctypes::c_ulong, +pub st_mtime_nsec: crate::ctypes::c_ulong, +pub st_ctime: crate::ctypes::c_ulong, +pub st_ctime_nsec: crate::ctypes::c_ulong, +pub st_ino: crate::ctypes::c_ulonglong, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct termio { -pub c_iflag: crate::ctypes::c_ushort, -pub c_oflag: crate::ctypes::c_ushort, -pub c_cflag: crate::ctypes::c_ushort, -pub c_lflag: crate::ctypes::c_ushort, -pub c_line: crate::ctypes::c_uchar, -pub c_cc: [crate::ctypes::c_uchar; 8usize], +pub struct statfs { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u32, +pub f_bfree: __u32, +pub f_bavail: __u32, +pub f_files: __u32, +pub f_ffree: __u32, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], } -#[repr(C)] +#[repr(C, packed(4))] #[derive(Debug, Copy, Clone)] -pub struct iovec { -pub iov_base: *mut crate::ctypes::c_void, -pub iov_len: __kernel_size_t, +pub struct statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_un { -pub sun_family: __kernel_sa_family_t, -pub sun_path: [crate::ctypes::c_char; 108usize], +pub struct compat_statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct oldold_utsname { -pub sysname: [crate::ctypes::c_char; 9usize], -pub nodename: [crate::ctypes::c_char; 9usize], -pub release: [crate::ctypes::c_char; 9usize], -pub version: [crate::ctypes::c_char; 9usize], -pub machine: [crate::ctypes::c_char; 9usize], +pub struct user_desc { +pub entry_number: crate::ctypes::c_uint, +pub base_addr: crate::ctypes::c_uint, +pub limit: crate::ctypes::c_uint, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub __bindgen_padding_0: [u8; 3usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct old_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], +pub struct kernel_sigset_t { +pub sig: [crate::ctypes::c_ulong; 2usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct new_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], -pub domainname: [crate::ctypes::c_char; 65usize], +pub struct kernel_sigaction { +pub sa_handler_kernel: __kernel_sighandler_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_restorer: __sigrestore_t, +pub sa_mask: kernel_sigset_t, } -impl membarrier_cmd { -pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; +pub const LINUX_VERSION_CODE: u32 = 393984; +pub const LINUX_VERSION_MAJOR: u32 = 6; +pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; +pub const LINUX_VERSION_SUBLEVEL: u32 = 0; +pub const AT_SYSINFO_EHDR: u32 = 33; +pub const AT_NULL: u32 = 0; +pub const AT_IGNORE: u32 = 1; +pub const AT_EXECFD: u32 = 2; +pub const AT_PHDR: u32 = 3; +pub const AT_PHENT: u32 = 4; +pub const AT_PHNUM: u32 = 5; +pub const AT_PAGESZ: u32 = 6; +pub const AT_BASE: u32 = 7; +pub const AT_FLAGS: u32 = 8; +pub const AT_ENTRY: u32 = 9; +pub const AT_NOTELF: u32 = 10; +pub const AT_UID: u32 = 11; +pub const AT_EUID: u32 = 12; +pub const AT_GID: u32 = 13; +pub const AT_EGID: u32 = 14; +pub const AT_PLATFORM: u32 = 15; +pub const AT_HWCAP: u32 = 16; +pub const AT_CLKTCK: u32 = 17; +pub const AT_SECURE: u32 = 23; +pub const AT_BASE_PLATFORM: u32 = 24; +pub const AT_RANDOM: u32 = 25; +pub const AT_HWCAP2: u32 = 26; +pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; +pub const AT_RSEQ_ALIGN: u32 = 28; +pub const AT_EXECFN: u32 = 31; +pub const AT_MINSIGSTKSZ: u32 = 51; +pub const __FD_SETSIZE: u32 = 1024; +pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; +pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; +pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; +pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; +pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; +pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; +pub const VFS_CAP_REVISION_SHIFT: u32 = 24; +pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; +pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; +pub const VFS_CAP_REVISION_1: u32 = 16777216; +pub const VFS_CAP_U32_1: u32 = 1; +pub const VFS_CAP_REVISION_2: u32 = 33554432; +pub const VFS_CAP_U32_2: u32 = 2; +pub const VFS_CAP_REVISION_3: u32 = 50331648; +pub const VFS_CAP_U32_3: u32 = 2; +pub const VFS_CAP_U32: u32 = 2; +pub const VFS_CAP_REVISION: u32 = 50331648; +pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S: u32 = 1; +pub const CAP_CHOWN: u32 = 0; +pub const CAP_DAC_OVERRIDE: u32 = 1; +pub const CAP_DAC_READ_SEARCH: u32 = 2; +pub const CAP_FOWNER: u32 = 3; +pub const CAP_FSETID: u32 = 4; +pub const CAP_KILL: u32 = 5; +pub const CAP_SETGID: u32 = 6; +pub const CAP_SETUID: u32 = 7; +pub const CAP_SETPCAP: u32 = 8; +pub const CAP_LINUX_IMMUTABLE: u32 = 9; +pub const CAP_NET_BIND_SERVICE: u32 = 10; +pub const CAP_NET_BROADCAST: u32 = 11; +pub const CAP_NET_ADMIN: u32 = 12; +pub const CAP_NET_RAW: u32 = 13; +pub const CAP_IPC_LOCK: u32 = 14; +pub const CAP_IPC_OWNER: u32 = 15; +pub const CAP_SYS_MODULE: u32 = 16; +pub const CAP_SYS_RAWIO: u32 = 17; +pub const CAP_SYS_CHROOT: u32 = 18; +pub const CAP_SYS_PTRACE: u32 = 19; +pub const CAP_SYS_PACCT: u32 = 20; +pub const CAP_SYS_ADMIN: u32 = 21; +pub const CAP_SYS_BOOT: u32 = 22; +pub const CAP_SYS_NICE: u32 = 23; +pub const CAP_SYS_RESOURCE: u32 = 24; +pub const CAP_SYS_TIME: u32 = 25; +pub const CAP_SYS_TTY_CONFIG: u32 = 26; +pub const CAP_MKNOD: u32 = 27; +pub const CAP_LEASE: u32 = 28; +pub const CAP_AUDIT_WRITE: u32 = 29; +pub const CAP_AUDIT_CONTROL: u32 = 30; +pub const CAP_SETFCAP: u32 = 31; +pub const CAP_MAC_OVERRIDE: u32 = 32; +pub const CAP_MAC_ADMIN: u32 = 33; +pub const CAP_SYSLOG: u32 = 34; +pub const CAP_WAKE_ALARM: u32 = 35; +pub const CAP_BLOCK_SUSPEND: u32 = 36; +pub const CAP_AUDIT_READ: u32 = 37; +pub const CAP_PERFMON: u32 = 38; +pub const CAP_BPF: u32 = 39; +pub const CAP_CHECKPOINT_RESTORE: u32 = 40; +pub const CAP_LAST_CAP: u32 = 40; +pub const O_DIRECTORY: u32 = 16384; +pub const O_NOFOLLOW: u32 = 32768; +pub const O_DIRECT: u32 = 65536; +pub const O_LARGEFILE: u32 = 131072; +pub const O_ACCMODE: u32 = 3; +pub const O_RDONLY: u32 = 0; +pub const O_WRONLY: u32 = 1; +pub const O_RDWR: u32 = 2; +pub const O_CREAT: u32 = 64; +pub const O_EXCL: u32 = 128; +pub const O_NOCTTY: u32 = 256; +pub const O_TRUNC: u32 = 512; +pub const O_APPEND: u32 = 1024; +pub const O_NONBLOCK: u32 = 2048; +pub const O_DSYNC: u32 = 4096; +pub const FASYNC: u32 = 8192; +pub const O_NOATIME: u32 = 262144; +pub const O_CLOEXEC: u32 = 524288; +pub const __O_SYNC: u32 = 1048576; +pub const O_SYNC: u32 = 1052672; +pub const O_PATH: u32 = 2097152; +pub const __O_TMPFILE: u32 = 4194304; +pub const O_TMPFILE: u32 = 4210688; +pub const O_TMPFILE_MASK: u32 = 4210752; +pub const O_NDELAY: u32 = 2048; +pub const F_DUPFD: u32 = 0; +pub const F_GETFD: u32 = 1; +pub const F_SETFD: u32 = 2; +pub const F_GETFL: u32 = 3; +pub const F_SETFL: u32 = 4; +pub const F_GETLK: u32 = 5; +pub const F_SETLK: u32 = 6; +pub const F_SETLKW: u32 = 7; +pub const F_SETOWN: u32 = 8; +pub const F_GETOWN: u32 = 9; +pub const F_SETSIG: u32 = 10; +pub const F_GETSIG: u32 = 11; +pub const F_GETLK64: u32 = 12; +pub const F_SETLK64: u32 = 13; +pub const F_SETLKW64: u32 = 14; +pub const F_SETOWN_EX: u32 = 15; +pub const F_GETOWN_EX: u32 = 16; +pub const F_GETOWNER_UIDS: u32 = 17; +pub const F_OFD_GETLK: u32 = 36; +pub const F_OFD_SETLK: u32 = 37; +pub const F_OFD_SETLKW: u32 = 38; +pub const F_OWNER_TID: u32 = 0; +pub const F_OWNER_PID: u32 = 1; +pub const F_OWNER_PGRP: u32 = 2; +pub const FD_CLOEXEC: u32 = 1; +pub const F_RDLCK: u32 = 0; +pub const F_WRLCK: u32 = 1; +pub const F_UNLCK: u32 = 2; +pub const F_EXLCK: u32 = 4; +pub const F_SHLCK: u32 = 8; +pub const LOCK_SH: u32 = 1; +pub const LOCK_EX: u32 = 2; +pub const LOCK_NB: u32 = 4; +pub const LOCK_UN: u32 = 8; +pub const LOCK_MAND: u32 = 32; +pub const LOCK_READ: u32 = 64; +pub const LOCK_WRITE: u32 = 128; +pub const LOCK_RW: u32 = 192; +pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; +pub const RESOLVE_NO_XDEV: u32 = 1; +pub const RESOLVE_NO_MAGICLINKS: u32 = 2; +pub const RESOLVE_NO_SYMLINKS: u32 = 4; +pub const RESOLVE_BENEATH: u32 = 8; +pub const RESOLVE_IN_ROOT: u32 = 16; +pub const RESOLVE_CACHED: u32 = 32; +pub const F_SETLEASE: u32 = 1024; +pub const F_GETLEASE: u32 = 1025; +pub const F_CANCELLK: u32 = 1029; +pub const F_DUPFD_CLOEXEC: u32 = 1030; +pub const F_NOTIFY: u32 = 1026; +pub const F_SETPIPE_SZ: u32 = 1031; +pub const F_GETPIPE_SZ: u32 = 1032; +pub const F_ADD_SEALS: u32 = 1033; +pub const F_GET_SEALS: u32 = 1034; +pub const F_SEAL_SEAL: u32 = 1; +pub const F_SEAL_SHRINK: u32 = 2; +pub const F_SEAL_GROW: u32 = 4; +pub const F_SEAL_WRITE: u32 = 8; +pub const F_SEAL_FUTURE_WRITE: u32 = 16; +pub const F_SEAL_EXEC: u32 = 32; +pub const F_GET_RW_HINT: u32 = 1035; +pub const F_SET_RW_HINT: u32 = 1036; +pub const F_GET_FILE_RW_HINT: u32 = 1037; +pub const F_SET_FILE_RW_HINT: u32 = 1038; +pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; +pub const RWH_WRITE_LIFE_NONE: u32 = 1; +pub const RWH_WRITE_LIFE_SHORT: u32 = 2; +pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; +pub const RWH_WRITE_LIFE_LONG: u32 = 4; +pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; +pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; +pub const DN_ACCESS: u32 = 1; +pub const DN_MODIFY: u32 = 2; +pub const DN_CREATE: u32 = 4; +pub const DN_DELETE: u32 = 8; +pub const DN_RENAME: u32 = 16; +pub const DN_ATTRIB: u32 = 32; +pub const DN_MULTISHOT: u32 = 2147483648; +pub const AT_FDCWD: i32 = -100; +pub const AT_SYMLINK_NOFOLLOW: u32 = 256; +pub const AT_EACCESS: u32 = 512; +pub const AT_REMOVEDIR: u32 = 512; +pub const AT_SYMLINK_FOLLOW: u32 = 1024; +pub const AT_NO_AUTOMOUNT: u32 = 2048; +pub const AT_EMPTY_PATH: u32 = 4096; +pub const AT_STATX_SYNC_TYPE: u32 = 24576; +pub const AT_STATX_SYNC_AS_STAT: u32 = 0; +pub const AT_STATX_FORCE_SYNC: u32 = 8192; +pub const AT_STATX_DONT_SYNC: u32 = 16384; +pub const AT_RECURSIVE: u32 = 32768; +pub const EPOLL_CLOEXEC: u32 = 524288; +pub const EPOLL_CTL_ADD: u32 = 1; +pub const EPOLL_CTL_DEL: u32 = 2; +pub const EPOLL_CTL_MOD: u32 = 3; +pub const POSIX_FADV_NORMAL: u32 = 0; +pub const POSIX_FADV_RANDOM: u32 = 1; +pub const POSIX_FADV_SEQUENTIAL: u32 = 2; +pub const POSIX_FADV_WILLNEED: u32 = 3; +pub const POSIX_FADV_DONTNEED: u32 = 4; +pub const POSIX_FADV_NOREUSE: u32 = 5; +pub const FALLOC_FL_KEEP_SIZE: u32 = 1; +pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; +pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; +pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; +pub const FALLOC_FL_ZERO_RANGE: u32 = 16; +pub const FALLOC_FL_INSERT_RANGE: u32 = 32; +pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 14; +pub const _IOC_DIRBITS: u32 = 2; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 3; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 30; +pub const _IOC_NONE: u32 = 0; +pub const _IOC_WRITE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const IOC_IN: u32 = 1073741824; +pub const IOC_OUT: u32 = 2147483648; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const OPEN_TREE_CLOEXEC: u32 = 524288; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const FUTEX_WAIT: u32 = 0; +pub const FUTEX_WAKE: u32 = 1; +pub const FUTEX_FD: u32 = 2; +pub const FUTEX_REQUEUE: u32 = 3; +pub const FUTEX_CMP_REQUEUE: u32 = 4; +pub const FUTEX_WAKE_OP: u32 = 5; +pub const FUTEX_LOCK_PI: u32 = 6; +pub const FUTEX_UNLOCK_PI: u32 = 7; +pub const FUTEX_TRYLOCK_PI: u32 = 8; +pub const FUTEX_WAIT_BITSET: u32 = 9; +pub const FUTEX_WAKE_BITSET: u32 = 10; +pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; +pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; +pub const FUTEX_LOCK_PI2: u32 = 13; +pub const FUTEX_PRIVATE_FLAG: u32 = 128; +pub const FUTEX_CLOCK_REALTIME: u32 = 256; +pub const FUTEX_CMD_MASK: i32 = -385; +pub const FUTEX_WAIT_PRIVATE: u32 = 128; +pub const FUTEX_WAKE_PRIVATE: u32 = 129; +pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; +pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; +pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; +pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; +pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; +pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; +pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; +pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; +pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; +pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; +pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; +pub const FUTEX_32: u32 = 2; +pub const FUTEX_WAITV_MAX: u32 = 128; +pub const FUTEX_WAITERS: u32 = 2147483648; +pub const FUTEX_OWNER_DIED: u32 = 1073741824; +pub const FUTEX_TID_MASK: u32 = 1073741823; +pub const ROBUST_LIST_LIMIT: u32 = 2048; +pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; +pub const FUTEX_OP_SET: u32 = 0; +pub const FUTEX_OP_ADD: u32 = 1; +pub const FUTEX_OP_OR: u32 = 2; +pub const FUTEX_OP_ANDN: u32 = 3; +pub const FUTEX_OP_XOR: u32 = 4; +pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; +pub const FUTEX_OP_CMP_EQ: u32 = 0; +pub const FUTEX_OP_CMP_NE: u32 = 1; +pub const FUTEX_OP_CMP_LT: u32 = 2; +pub const FUTEX_OP_CMP_LE: u32 = 3; +pub const FUTEX_OP_CMP_GT: u32 = 4; +pub const FUTEX_OP_CMP_GE: u32 = 5; +pub const IN_ACCESS: u32 = 1; +pub const IN_MODIFY: u32 = 2; +pub const IN_ATTRIB: u32 = 4; +pub const IN_CLOSE_WRITE: u32 = 8; +pub const IN_CLOSE_NOWRITE: u32 = 16; +pub const IN_OPEN: u32 = 32; +pub const IN_MOVED_FROM: u32 = 64; +pub const IN_MOVED_TO: u32 = 128; +pub const IN_CREATE: u32 = 256; +pub const IN_DELETE: u32 = 512; +pub const IN_DELETE_SELF: u32 = 1024; +pub const IN_MOVE_SELF: u32 = 2048; +pub const IN_UNMOUNT: u32 = 8192; +pub const IN_Q_OVERFLOW: u32 = 16384; +pub const IN_IGNORED: u32 = 32768; +pub const IN_CLOSE: u32 = 24; +pub const IN_MOVE: u32 = 192; +pub const IN_ONLYDIR: u32 = 16777216; +pub const IN_DONT_FOLLOW: u32 = 33554432; +pub const IN_EXCL_UNLINK: u32 = 67108864; +pub const IN_MASK_CREATE: u32 = 268435456; +pub const IN_MASK_ADD: u32 = 536870912; +pub const IN_ISDIR: u32 = 1073741824; +pub const IN_ONESHOT: u32 = 2147483648; +pub const IN_ALL_EVENTS: u32 = 4095; +pub const IN_CLOEXEC: u32 = 524288; +pub const IN_NONBLOCK: u32 = 2048; +pub const ADFS_SUPER_MAGIC: u32 = 44533; +pub const AFFS_SUPER_MAGIC: u32 = 44543; +pub const AFS_SUPER_MAGIC: u32 = 1397113167; +pub const AUTOFS_SUPER_MAGIC: u32 = 391; +pub const CEPH_SUPER_MAGIC: u32 = 12805120; +pub const CODA_SUPER_MAGIC: u32 = 1937076805; +pub const CRAMFS_MAGIC: u32 = 684539205; +pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; +pub const DEBUGFS_MAGIC: u32 = 1684170528; +pub const SECURITYFS_MAGIC: u32 = 1935894131; +pub const SELINUX_MAGIC: u32 = 4185718668; +pub const SMACK_MAGIC: u32 = 1128357203; +pub const RAMFS_MAGIC: u32 = 2240043254; +pub const TMPFS_MAGIC: u32 = 16914836; +pub const HUGETLBFS_MAGIC: u32 = 2508478710; +pub const SQUASHFS_MAGIC: u32 = 1936814952; +pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; +pub const EFS_SUPER_MAGIC: u32 = 4278867; +pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; +pub const EXT2_SUPER_MAGIC: u32 = 61267; +pub const EXT3_SUPER_MAGIC: u32 = 61267; +pub const XENFS_SUPER_MAGIC: u32 = 2881100148; +pub const EXT4_SUPER_MAGIC: u32 = 61267; +pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; +pub const NILFS_SUPER_MAGIC: u32 = 13364; +pub const F2FS_SUPER_MAGIC: u32 = 4076150800; +pub const HPFS_SUPER_MAGIC: u32 = 4187351113; +pub const ISOFS_SUPER_MAGIC: u32 = 38496; +pub const JFFS2_SUPER_MAGIC: u32 = 29366; +pub const XFS_SUPER_MAGIC: u32 = 1481003842; +pub const PSTOREFS_MAGIC: u32 = 1634035564; +pub const EFIVARFS_MAGIC: u32 = 3730735588; +pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; +pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; +pub const FUSE_SUPER_MAGIC: u32 = 1702057286; +pub const MINIX_SUPER_MAGIC: u32 = 4991; +pub const MINIX_SUPER_MAGIC2: u32 = 5007; +pub const MINIX2_SUPER_MAGIC: u32 = 9320; +pub const MINIX2_SUPER_MAGIC2: u32 = 9336; +pub const MINIX3_SUPER_MAGIC: u32 = 19802; +pub const MSDOS_SUPER_MAGIC: u32 = 19780; +pub const EXFAT_SUPER_MAGIC: u32 = 538032816; +pub const NCP_SUPER_MAGIC: u32 = 22092; +pub const NFS_SUPER_MAGIC: u32 = 26985; +pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; +pub const OPENPROM_SUPER_MAGIC: u32 = 40865; +pub const QNX4_SUPER_MAGIC: u32 = 47; +pub const QNX6_SUPER_MAGIC: u32 = 1746473250; +pub const AFS_FS_MAGIC: u32 = 1799439955; +pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; +pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9] = b"ReIsErFs\0"; +pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr2Fs\0"; +pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr3Fs\0"; +pub const SMB_SUPER_MAGIC: u32 = 20859; +pub const CIFS_SUPER_MAGIC: u32 = 4283649346; +pub const SMB2_SUPER_MAGIC: u32 = 4266872130; +pub const CGROUP_SUPER_MAGIC: u32 = 2613483; +pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; +pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; +pub const STACK_END_MAGIC: u32 = 1470918301; +pub const TRACEFS_MAGIC: u32 = 1953653091; +pub const V9FS_MAGIC: u32 = 16914839; +pub const BDEVFS_MAGIC: u32 = 1650746742; +pub const DAXFS_MAGIC: u32 = 1684300152; +pub const BINFMTFS_MAGIC: u32 = 1112100429; +pub const DEVPTS_SUPER_MAGIC: u32 = 7377; +pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; +pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; +pub const PIPEFS_MAGIC: u32 = 1346981957; +pub const PROC_SUPER_MAGIC: u32 = 40864; +pub const SOCKFS_MAGIC: u32 = 1397703499; +pub const SYSFS_MAGIC: u32 = 1650812274; +pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; +pub const MTD_INODE_FS_MAGIC: u32 = 288389204; +pub const ANON_INODE_FS_MAGIC: u32 = 151263540; +pub const BTRFS_TEST_MAGIC: u32 = 1936880249; +pub const NSFS_MAGIC: u32 = 1853056627; +pub const BPF_FS_MAGIC: u32 = 3405662737; +pub const AAFS_MAGIC: u32 = 1513908720; +pub const ZONEFS_MAGIC: u32 = 1515144787; +pub const UDF_SUPER_MAGIC: u32 = 352400198; +pub const DMA_BUF_MAGIC: u32 = 1145913666; +pub const DEVMEM_MAGIC: u32 = 1162691661; +pub const SECRETMEM_MAGIC: u32 = 1397048141; +pub const PROT_READ: u32 = 1; +pub const PROT_WRITE: u32 = 2; +pub const PROT_EXEC: u32 = 4; +pub const PROT_SEM: u32 = 8; +pub const PROT_NONE: u32 = 0; +pub const PROT_GROWSDOWN: u32 = 16777216; +pub const PROT_GROWSUP: u32 = 33554432; +pub const MAP_TYPE: u32 = 15; +pub const MAP_FIXED: u32 = 16; +pub const MAP_ANONYMOUS: u32 = 32; +pub const MAP_POPULATE: u32 = 32768; +pub const MAP_NONBLOCK: u32 = 65536; +pub const MAP_STACK: u32 = 131072; +pub const MAP_HUGETLB: u32 = 262144; +pub const MAP_SYNC: u32 = 524288; +pub const MAP_FIXED_NOREPLACE: u32 = 1048576; +pub const MAP_UNINITIALIZED: u32 = 67108864; +pub const MLOCK_ONFAULT: u32 = 1; +pub const MS_ASYNC: u32 = 1; +pub const MS_INVALIDATE: u32 = 2; +pub const MS_SYNC: u32 = 4; +pub const MADV_NORMAL: u32 = 0; +pub const MADV_RANDOM: u32 = 1; +pub const MADV_SEQUENTIAL: u32 = 2; +pub const MADV_WILLNEED: u32 = 3; +pub const MADV_DONTNEED: u32 = 4; +pub const MADV_FREE: u32 = 8; +pub const MADV_REMOVE: u32 = 9; +pub const MADV_DONTFORK: u32 = 10; +pub const MADV_DOFORK: u32 = 11; +pub const MADV_HWPOISON: u32 = 100; +pub const MADV_SOFT_OFFLINE: u32 = 101; +pub const MADV_MERGEABLE: u32 = 12; +pub const MADV_UNMERGEABLE: u32 = 13; +pub const MADV_HUGEPAGE: u32 = 14; +pub const MADV_NOHUGEPAGE: u32 = 15; +pub const MADV_DONTDUMP: u32 = 16; +pub const MADV_DODUMP: u32 = 17; +pub const MADV_WIPEONFORK: u32 = 18; +pub const MADV_KEEPONFORK: u32 = 19; +pub const MADV_COLD: u32 = 20; +pub const MADV_PAGEOUT: u32 = 21; +pub const MADV_POPULATE_READ: u32 = 22; +pub const MADV_POPULATE_WRITE: u32 = 23; +pub const MADV_DONTNEED_LOCKED: u32 = 24; +pub const MADV_COLLAPSE: u32 = 25; +pub const MAP_FILE: u32 = 0; +pub const PKEY_DISABLE_ACCESS: u32 = 1; +pub const PKEY_DISABLE_WRITE: u32 = 2; +pub const PKEY_ACCESS_MASK: u32 = 3; +pub const MAP_GROWSDOWN: u32 = 256; +pub const MAP_DENYWRITE: u32 = 2048; +pub const MAP_EXECUTABLE: u32 = 4096; +pub const MAP_LOCKED: u32 = 8192; +pub const MAP_NORESERVE: u32 = 16384; +pub const MCL_CURRENT: u32 = 1; +pub const MCL_FUTURE: u32 = 2; +pub const MCL_ONFAULT: u32 = 4; +pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; +pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; +pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; +pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; +pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; +pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; +pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; +pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; +pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; +pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; +pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; +pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; +pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; +pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; +pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; +pub const MREMAP_MAYMOVE: u32 = 1; +pub const MREMAP_FIXED: u32 = 2; +pub const MREMAP_DONTUNMAP: u32 = 4; +pub const OVERCOMMIT_GUESS: u32 = 0; +pub const OVERCOMMIT_ALWAYS: u32 = 1; +pub const OVERCOMMIT_NEVER: u32 = 2; +pub const MAP_SHARED: u32 = 1; +pub const MAP_PRIVATE: u32 = 2; +pub const MAP_SHARED_VALIDATE: u32 = 3; +pub const MAP_HUGE_SHIFT: u32 = 26; +pub const MAP_HUGE_MASK: u32 = 63; +pub const MAP_HUGE_16KB: u32 = 939524096; +pub const MAP_HUGE_64KB: u32 = 1073741824; +pub const MAP_HUGE_512KB: u32 = 1275068416; +pub const MAP_HUGE_1MB: u32 = 1342177280; +pub const MAP_HUGE_2MB: u32 = 1409286144; +pub const MAP_HUGE_8MB: u32 = 1543503872; +pub const MAP_HUGE_16MB: u32 = 1610612736; +pub const MAP_HUGE_32MB: u32 = 1677721600; +pub const MAP_HUGE_256MB: u32 = 1879048192; +pub const MAP_HUGE_512MB: u32 = 1946157056; +pub const MAP_HUGE_1GB: u32 = 2013265920; +pub const MAP_HUGE_2GB: u32 = 2080374784; +pub const MAP_HUGE_16GB: u32 = 2281701376; +pub const POLLIN: u32 = 1; +pub const POLLPRI: u32 = 2; +pub const POLLOUT: u32 = 4; +pub const POLLERR: u32 = 8; +pub const POLLHUP: u32 = 16; +pub const POLLNVAL: u32 = 32; +pub const POLLRDNORM: u32 = 64; +pub const POLLRDBAND: u32 = 128; +pub const POLLWRNORM: u32 = 256; +pub const POLLWRBAND: u32 = 512; +pub const POLLMSG: u32 = 1024; +pub const POLLREMOVE: u32 = 4096; +pub const POLLRDHUP: u32 = 8192; +pub const GRND_NONBLOCK: u32 = 1; +pub const GRND_RANDOM: u32 = 2; +pub const GRND_INSECURE: u32 = 4; +pub const ITIMER_REAL: u32 = 0; +pub const ITIMER_VIRTUAL: u32 = 1; +pub const ITIMER_PROF: u32 = 2; +pub const CLOCK_REALTIME: u32 = 0; +pub const CLOCK_MONOTONIC: u32 = 1; +pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; +pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; +pub const CLOCK_MONOTONIC_RAW: u32 = 4; +pub const CLOCK_REALTIME_COARSE: u32 = 5; +pub const CLOCK_MONOTONIC_COARSE: u32 = 6; +pub const CLOCK_BOOTTIME: u32 = 7; +pub const CLOCK_REALTIME_ALARM: u32 = 8; +pub const CLOCK_BOOTTIME_ALARM: u32 = 9; +pub const CLOCK_SGI_CYCLE: u32 = 10; +pub const CLOCK_TAI: u32 = 11; +pub const MAX_CLOCKS: u32 = 16; +pub const CLOCKS_MASK: u32 = 1; +pub const CLOCKS_MONO: u32 = 1; +pub const TIMER_ABSTIME: u32 = 1; +pub const RUSAGE_SELF: u32 = 0; +pub const RUSAGE_CHILDREN: i32 = -1; +pub const RUSAGE_BOTH: i32 = -2; +pub const RUSAGE_THREAD: u32 = 1; +pub const RLIM64_INFINITY: i32 = -1; +pub const PRIO_MIN: i32 = -20; +pub const PRIO_MAX: u32 = 20; +pub const PRIO_PROCESS: u32 = 0; +pub const PRIO_PGRP: u32 = 1; +pub const PRIO_USER: u32 = 2; +pub const _STK_LIM: u32 = 8388608; +pub const MLOCK_LIMIT: u32 = 8388608; +pub const RLIMIT_CPU: u32 = 0; +pub const RLIMIT_FSIZE: u32 = 1; +pub const RLIMIT_DATA: u32 = 2; +pub const RLIMIT_STACK: u32 = 3; +pub const RLIMIT_CORE: u32 = 4; +pub const RLIMIT_RSS: u32 = 5; +pub const RLIMIT_NPROC: u32 = 6; +pub const RLIMIT_NOFILE: u32 = 7; +pub const RLIMIT_MEMLOCK: u32 = 8; +pub const RLIMIT_AS: u32 = 9; +pub const RLIMIT_LOCKS: u32 = 10; +pub const RLIMIT_SIGPENDING: u32 = 11; +pub const RLIMIT_MSGQUEUE: u32 = 12; +pub const RLIMIT_NICE: u32 = 13; +pub const RLIMIT_RTPRIO: u32 = 14; +pub const RLIMIT_RTTIME: u32 = 15; +pub const RLIM_NLIMITS: u32 = 16; +pub const RLIM_INFINITY: i32 = -1; +pub const CSIGNAL: u32 = 255; +pub const CLONE_VM: u32 = 256; +pub const CLONE_FS: u32 = 512; +pub const CLONE_FILES: u32 = 1024; +pub const CLONE_SIGHAND: u32 = 2048; +pub const CLONE_PIDFD: u32 = 4096; +pub const CLONE_PTRACE: u32 = 8192; +pub const CLONE_VFORK: u32 = 16384; +pub const CLONE_PARENT: u32 = 32768; +pub const CLONE_THREAD: u32 = 65536; +pub const CLONE_NEWNS: u32 = 131072; +pub const CLONE_SYSVSEM: u32 = 262144; +pub const CLONE_SETTLS: u32 = 524288; +pub const CLONE_PARENT_SETTID: u32 = 1048576; +pub const CLONE_CHILD_CLEARTID: u32 = 2097152; +pub const CLONE_DETACHED: u32 = 4194304; +pub const CLONE_UNTRACED: u32 = 8388608; +pub const CLONE_CHILD_SETTID: u32 = 16777216; +pub const CLONE_NEWCGROUP: u32 = 33554432; +pub const CLONE_NEWUTS: u32 = 67108864; +pub const CLONE_NEWIPC: u32 = 134217728; +pub const CLONE_NEWUSER: u32 = 268435456; +pub const CLONE_NEWPID: u32 = 536870912; +pub const CLONE_NEWNET: u32 = 1073741824; +pub const CLONE_IO: u32 = 2147483648; +pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; +pub const CLONE_INTO_CGROUP: u64 = 8589934592; +pub const CLONE_NEWTIME: u32 = 128; +pub const CLONE_ARGS_SIZE_VER0: u32 = 64; +pub const CLONE_ARGS_SIZE_VER1: u32 = 80; +pub const CLONE_ARGS_SIZE_VER2: u32 = 88; +pub const SCHED_NORMAL: u32 = 0; +pub const SCHED_FIFO: u32 = 1; +pub const SCHED_RR: u32 = 2; +pub const SCHED_BATCH: u32 = 3; +pub const SCHED_IDLE: u32 = 5; +pub const SCHED_DEADLINE: u32 = 6; +pub const SCHED_RESET_ON_FORK: u32 = 1073741824; +pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; +pub const SCHED_FLAG_RECLAIM: u32 = 2; +pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; +pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; +pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; +pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; +pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; +pub const SCHED_FLAG_KEEP_ALL: u32 = 24; +pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; +pub const SCHED_FLAG_ALL: u32 = 127; +pub const NSIG: u32 = 32; +pub const SIGHUP: u32 = 1; +pub const SIGINT: u32 = 2; +pub const SIGQUIT: u32 = 3; +pub const SIGILL: u32 = 4; +pub const SIGTRAP: u32 = 5; +pub const SIGABRT: u32 = 6; +pub const SIGIOT: u32 = 6; +pub const SIGBUS: u32 = 7; +pub const SIGFPE: u32 = 8; +pub const SIGKILL: u32 = 9; +pub const SIGUSR1: u32 = 10; +pub const SIGSEGV: u32 = 11; +pub const SIGUSR2: u32 = 12; +pub const SIGPIPE: u32 = 13; +pub const SIGALRM: u32 = 14; +pub const SIGTERM: u32 = 15; +pub const SIGSTKFLT: u32 = 16; +pub const SIGCHLD: u32 = 17; +pub const SIGCONT: u32 = 18; +pub const SIGSTOP: u32 = 19; +pub const SIGTSTP: u32 = 20; +pub const SIGTTIN: u32 = 21; +pub const SIGTTOU: u32 = 22; +pub const SIGURG: u32 = 23; +pub const SIGXCPU: u32 = 24; +pub const SIGXFSZ: u32 = 25; +pub const SIGVTALRM: u32 = 26; +pub const SIGPROF: u32 = 27; +pub const SIGWINCH: u32 = 28; +pub const SIGIO: u32 = 29; +pub const SIGPOLL: u32 = 29; +pub const SIGPWR: u32 = 30; +pub const SIGSYS: u32 = 31; +pub const SIGUNUSED: u32 = 31; +pub const SIGRTMIN: u32 = 32; +pub const SIGSWI: u32 = 32; +pub const SA_THIRTYTWO: u32 = 33554432; +pub const SA_RESTORER: u32 = 67108864; +pub const MINSIGSTKSZ: u32 = 2048; +pub const SIGSTKSZ: u32 = 8192; +pub const SA_NOCLDSTOP: u32 = 1; +pub const SA_NOCLDWAIT: u32 = 2; +pub const SA_SIGINFO: u32 = 4; +pub const SA_UNSUPPORTED: u32 = 1024; +pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SA_ONSTACK: u32 = 134217728; +pub const SA_RESTART: u32 = 268435456; +pub const SA_NODEFER: u32 = 1073741824; +pub const SA_RESETHAND: u32 = 2147483648; +pub const SA_NOMASK: u32 = 1073741824; +pub const SA_ONESHOT: u32 = 2147483648; +pub const SIG_BLOCK: u32 = 0; +pub const SIG_UNBLOCK: u32 = 1; +pub const SIG_SETMASK: u32 = 2; +pub const SI_MAX_SIZE: u32 = 128; +pub const SI_USER: u32 = 0; +pub const SI_KERNEL: u32 = 128; +pub const SI_QUEUE: i32 = -1; +pub const SI_TIMER: i32 = -2; +pub const SI_MESGQ: i32 = -3; +pub const SI_ASYNCIO: i32 = -4; +pub const SI_SIGIO: i32 = -5; +pub const SI_TKILL: i32 = -6; +pub const SI_DETHREAD: i32 = -7; +pub const SI_ASYNCNL: i32 = -60; +pub const ILL_ILLOPC: u32 = 1; +pub const ILL_ILLOPN: u32 = 2; +pub const ILL_ILLADR: u32 = 3; +pub const ILL_ILLTRP: u32 = 4; +pub const ILL_PRVOPC: u32 = 5; +pub const ILL_PRVREG: u32 = 6; +pub const ILL_COPROC: u32 = 7; +pub const ILL_BADSTK: u32 = 8; +pub const ILL_BADIADDR: u32 = 9; +pub const __ILL_BREAK: u32 = 10; +pub const __ILL_BNDMOD: u32 = 11; +pub const NSIGILL: u32 = 11; +pub const FPE_INTDIV: u32 = 1; +pub const FPE_INTOVF: u32 = 2; +pub const FPE_FLTDIV: u32 = 3; +pub const FPE_FLTOVF: u32 = 4; +pub const FPE_FLTUND: u32 = 5; +pub const FPE_FLTRES: u32 = 6; +pub const FPE_FLTINV: u32 = 7; +pub const FPE_FLTSUB: u32 = 8; +pub const __FPE_DECOVF: u32 = 9; +pub const __FPE_DECDIV: u32 = 10; +pub const __FPE_DECERR: u32 = 11; +pub const __FPE_INVASC: u32 = 12; +pub const __FPE_INVDEC: u32 = 13; +pub const FPE_FLTUNK: u32 = 14; +pub const FPE_CONDTRAP: u32 = 15; +pub const NSIGFPE: u32 = 15; +pub const SEGV_MAPERR: u32 = 1; +pub const SEGV_ACCERR: u32 = 2; +pub const SEGV_BNDERR: u32 = 3; +pub const SEGV_PKUERR: u32 = 4; +pub const SEGV_ACCADI: u32 = 5; +pub const SEGV_ADIDERR: u32 = 6; +pub const SEGV_ADIPERR: u32 = 7; +pub const SEGV_MTEAERR: u32 = 8; +pub const SEGV_MTESERR: u32 = 9; +pub const NSIGSEGV: u32 = 9; +pub const BUS_ADRALN: u32 = 1; +pub const BUS_ADRERR: u32 = 2; +pub const BUS_OBJERR: u32 = 3; +pub const BUS_MCEERR_AR: u32 = 4; +pub const BUS_MCEERR_AO: u32 = 5; +pub const NSIGBUS: u32 = 5; +pub const TRAP_BRKPT: u32 = 1; +pub const TRAP_TRACE: u32 = 2; +pub const TRAP_BRANCH: u32 = 3; +pub const TRAP_HWBKPT: u32 = 4; +pub const TRAP_UNK: u32 = 5; +pub const TRAP_PERF: u32 = 6; +pub const NSIGTRAP: u32 = 6; +pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; +pub const CLD_EXITED: u32 = 1; +pub const CLD_KILLED: u32 = 2; +pub const CLD_DUMPED: u32 = 3; +pub const CLD_TRAPPED: u32 = 4; +pub const CLD_STOPPED: u32 = 5; +pub const CLD_CONTINUED: u32 = 6; +pub const NSIGCHLD: u32 = 6; +pub const POLL_IN: u32 = 1; +pub const POLL_OUT: u32 = 2; +pub const POLL_MSG: u32 = 3; +pub const POLL_ERR: u32 = 4; +pub const POLL_PRI: u32 = 5; +pub const POLL_HUP: u32 = 6; +pub const NSIGPOLL: u32 = 6; +pub const SYS_SECCOMP: u32 = 1; +pub const SYS_USER_DISPATCH: u32 = 2; +pub const NSIGSYS: u32 = 2; +pub const EMT_TAGOVF: u32 = 1; +pub const NSIGEMT: u32 = 1; +pub const SIGEV_SIGNAL: u32 = 0; +pub const SIGEV_NONE: u32 = 1; +pub const SIGEV_THREAD: u32 = 2; +pub const SIGEV_THREAD_ID: u32 = 4; +pub const SIGEV_MAX_SIZE: u32 = 64; +pub const SS_ONSTACK: u32 = 1; +pub const SS_DISABLE: u32 = 2; +pub const SS_AUTODISARM: u32 = 2147483648; +pub const SS_FLAG_BITS: u32 = 2147483648; +pub const S_IFMT: u32 = 61440; +pub const S_IFSOCK: u32 = 49152; +pub const S_IFLNK: u32 = 40960; +pub const S_IFREG: u32 = 32768; +pub const S_IFBLK: u32 = 24576; +pub const S_IFDIR: u32 = 16384; +pub const S_IFCHR: u32 = 8192; +pub const S_IFIFO: u32 = 4096; +pub const S_ISUID: u32 = 2048; +pub const S_ISGID: u32 = 1024; +pub const S_ISVTX: u32 = 512; +pub const S_IRWXU: u32 = 448; +pub const S_IRUSR: u32 = 256; +pub const S_IWUSR: u32 = 128; +pub const S_IXUSR: u32 = 64; +pub const S_IRWXG: u32 = 56; +pub const S_IRGRP: u32 = 32; +pub const S_IWGRP: u32 = 16; +pub const S_IXGRP: u32 = 8; +pub const S_IRWXO: u32 = 7; +pub const S_IROTH: u32 = 4; +pub const S_IWOTH: u32 = 2; +pub const S_IXOTH: u32 = 1; +pub const STATX_TYPE: u32 = 1; +pub const STATX_MODE: u32 = 2; +pub const STATX_NLINK: u32 = 4; +pub const STATX_UID: u32 = 8; +pub const STATX_GID: u32 = 16; +pub const STATX_ATIME: u32 = 32; +pub const STATX_MTIME: u32 = 64; +pub const STATX_CTIME: u32 = 128; +pub const STATX_INO: u32 = 256; +pub const STATX_SIZE: u32 = 512; +pub const STATX_BLOCKS: u32 = 1024; +pub const STATX_BASIC_STATS: u32 = 2047; +pub const STATX_BTIME: u32 = 2048; +pub const STATX_MNT_ID: u32 = 4096; +pub const STATX_DIOALIGN: u32 = 8192; +pub const STATX__RESERVED: u32 = 2147483648; +pub const STATX_ALL: u32 = 4095; +pub const STATX_ATTR_COMPRESSED: u32 = 4; +pub const STATX_ATTR_IMMUTABLE: u32 = 16; +pub const STATX_ATTR_APPEND: u32 = 32; +pub const STATX_ATTR_NODUMP: u32 = 64; +pub const STATX_ATTR_ENCRYPTED: u32 = 2048; +pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; +pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; +pub const STATX_ATTR_VERITY: u32 = 1048576; +pub const STATX_ATTR_DAX: u32 = 2097152; +pub const IGNBRK: u32 = 1; +pub const BRKINT: u32 = 2; +pub const IGNPAR: u32 = 4; +pub const PARMRK: u32 = 8; +pub const INPCK: u32 = 16; +pub const ISTRIP: u32 = 32; +pub const INLCR: u32 = 64; +pub const IGNCR: u32 = 128; +pub const ICRNL: u32 = 256; +pub const IXANY: u32 = 2048; +pub const OPOST: u32 = 1; +pub const OCRNL: u32 = 8; +pub const ONOCR: u32 = 16; +pub const ONLRET: u32 = 32; +pub const OFILL: u32 = 64; +pub const OFDEL: u32 = 128; +pub const B0: u32 = 0; +pub const B50: u32 = 1; +pub const B75: u32 = 2; +pub const B110: u32 = 3; +pub const B134: u32 = 4; +pub const B150: u32 = 5; +pub const B200: u32 = 6; +pub const B300: u32 = 7; +pub const B600: u32 = 8; +pub const B1200: u32 = 9; +pub const B1800: u32 = 10; +pub const B2400: u32 = 11; +pub const B4800: u32 = 12; +pub const B9600: u32 = 13; +pub const B19200: u32 = 14; +pub const B38400: u32 = 15; +pub const EXTA: u32 = 14; +pub const EXTB: u32 = 15; +pub const ADDRB: u32 = 536870912; +pub const CMSPAR: u32 = 1073741824; +pub const CRTSCTS: u32 = 2147483648; +pub const IBSHIFT: u32 = 16; +pub const TCOOFF: u32 = 0; +pub const TCOON: u32 = 1; +pub const TCIOFF: u32 = 2; +pub const TCION: u32 = 3; +pub const TCIFLUSH: u32 = 0; +pub const TCOFLUSH: u32 = 1; +pub const TCIOFLUSH: u32 = 2; +pub const NCCS: u32 = 19; +pub const VINTR: u32 = 0; +pub const VQUIT: u32 = 1; +pub const VERASE: u32 = 2; +pub const VKILL: u32 = 3; +pub const VEOF: u32 = 4; +pub const VTIME: u32 = 5; +pub const VMIN: u32 = 6; +pub const VSWTC: u32 = 7; +pub const VSTART: u32 = 8; +pub const VSTOP: u32 = 9; +pub const VSUSP: u32 = 10; +pub const VEOL: u32 = 11; +pub const VREPRINT: u32 = 12; +pub const VDISCARD: u32 = 13; +pub const VWERASE: u32 = 14; +pub const VLNEXT: u32 = 15; +pub const VEOL2: u32 = 16; +pub const IUCLC: u32 = 512; +pub const IXON: u32 = 1024; +pub const IXOFF: u32 = 4096; +pub const IMAXBEL: u32 = 8192; +pub const IUTF8: u32 = 16384; +pub const OLCUC: u32 = 2; +pub const ONLCR: u32 = 4; +pub const NLDLY: u32 = 256; +pub const NL0: u32 = 0; +pub const NL1: u32 = 256; +pub const CRDLY: u32 = 1536; +pub const CR0: u32 = 0; +pub const CR1: u32 = 512; +pub const CR2: u32 = 1024; +pub const CR3: u32 = 1536; +pub const TABDLY: u32 = 6144; +pub const TAB0: u32 = 0; +pub const TAB1: u32 = 2048; +pub const TAB2: u32 = 4096; +pub const TAB3: u32 = 6144; +pub const XTABS: u32 = 6144; +pub const BSDLY: u32 = 8192; +pub const BS0: u32 = 0; +pub const BS1: u32 = 8192; +pub const VTDLY: u32 = 16384; +pub const VT0: u32 = 0; +pub const VT1: u32 = 16384; +pub const FFDLY: u32 = 32768; +pub const FF0: u32 = 0; +pub const FF1: u32 = 32768; +pub const CBAUD: u32 = 4111; +pub const CSIZE: u32 = 48; +pub const CS5: u32 = 0; +pub const CS6: u32 = 16; +pub const CS7: u32 = 32; +pub const CS8: u32 = 48; +pub const CSTOPB: u32 = 64; +pub const CREAD: u32 = 128; +pub const PARENB: u32 = 256; +pub const PARODD: u32 = 512; +pub const HUPCL: u32 = 1024; +pub const CLOCAL: u32 = 2048; +pub const CBAUDEX: u32 = 4096; +pub const BOTHER: u32 = 4096; +pub const B57600: u32 = 4097; +pub const B115200: u32 = 4098; +pub const B230400: u32 = 4099; +pub const B460800: u32 = 4100; +pub const B500000: u32 = 4101; +pub const B576000: u32 = 4102; +pub const B921600: u32 = 4103; +pub const B1000000: u32 = 4104; +pub const B1152000: u32 = 4105; +pub const B1500000: u32 = 4106; +pub const B2000000: u32 = 4107; +pub const B2500000: u32 = 4108; +pub const B3000000: u32 = 4109; +pub const B3500000: u32 = 4110; +pub const B4000000: u32 = 4111; +pub const CIBAUD: u32 = 269418496; +pub const ISIG: u32 = 1; +pub const ICANON: u32 = 2; +pub const XCASE: u32 = 4; +pub const ECHO: u32 = 8; +pub const ECHOE: u32 = 16; +pub const ECHOK: u32 = 32; +pub const ECHONL: u32 = 64; +pub const NOFLSH: u32 = 128; +pub const TOSTOP: u32 = 256; +pub const ECHOCTL: u32 = 512; +pub const ECHOPRT: u32 = 1024; +pub const ECHOKE: u32 = 2048; +pub const FLUSHO: u32 = 4096; +pub const PENDIN: u32 = 16384; +pub const IEXTEN: u32 = 32768; +pub const EXTPROC: u32 = 65536; +pub const TCSANOW: u32 = 0; +pub const TCSADRAIN: u32 = 1; +pub const TCSAFLUSH: u32 = 2; +pub const TIOCPKT_DATA: u32 = 0; +pub const TIOCPKT_FLUSHREAD: u32 = 1; +pub const TIOCPKT_FLUSHWRITE: u32 = 2; +pub const TIOCPKT_STOP: u32 = 4; +pub const TIOCPKT_START: u32 = 8; +pub const TIOCPKT_NOSTOP: u32 = 16; +pub const TIOCPKT_DOSTOP: u32 = 32; +pub const TIOCPKT_IOCTL: u32 = 64; +pub const TIOCSER_TEMT: u32 = 1; +pub const NCC: u32 = 8; +pub const TIOCM_LE: u32 = 1; +pub const TIOCM_DTR: u32 = 2; +pub const TIOCM_RTS: u32 = 4; +pub const TIOCM_ST: u32 = 8; +pub const TIOCM_SR: u32 = 16; +pub const TIOCM_CTS: u32 = 32; +pub const TIOCM_CAR: u32 = 64; +pub const TIOCM_RNG: u32 = 128; +pub const TIOCM_DSR: u32 = 256; +pub const TIOCM_CD: u32 = 64; +pub const TIOCM_RI: u32 = 128; +pub const TIOCM_OUT1: u32 = 8192; +pub const TIOCM_OUT2: u32 = 16384; +pub const TIOCM_LOOP: u32 = 32768; +pub const UIO_FASTIOV: u32 = 8; +pub const UIO_MAXIOV: u32 = 1024; +pub const __NR_OABI_SYSCALL_BASE: u32 = 9437184; +pub const __NR_SYSCALL_MASK: u32 = 1048575; +pub const __NR_SYSCALL_BASE: u32 = 0; +pub const __NR_restart_syscall: u32 = 0; +pub const __NR_exit: u32 = 1; +pub const __NR_fork: u32 = 2; +pub const __NR_read: u32 = 3; +pub const __NR_write: u32 = 4; +pub const __NR_open: u32 = 5; +pub const __NR_close: u32 = 6; +pub const __NR_creat: u32 = 8; +pub const __NR_link: u32 = 9; +pub const __NR_unlink: u32 = 10; +pub const __NR_execve: u32 = 11; +pub const __NR_chdir: u32 = 12; +pub const __NR_mknod: u32 = 14; +pub const __NR_chmod: u32 = 15; +pub const __NR_lchown: u32 = 16; +pub const __NR_lseek: u32 = 19; +pub const __NR_getpid: u32 = 20; +pub const __NR_mount: u32 = 21; +pub const __NR_setuid: u32 = 23; +pub const __NR_getuid: u32 = 24; +pub const __NR_ptrace: u32 = 26; +pub const __NR_pause: u32 = 29; +pub const __NR_access: u32 = 33; +pub const __NR_nice: u32 = 34; +pub const __NR_sync: u32 = 36; +pub const __NR_kill: u32 = 37; +pub const __NR_rename: u32 = 38; +pub const __NR_mkdir: u32 = 39; +pub const __NR_rmdir: u32 = 40; +pub const __NR_dup: u32 = 41; +pub const __NR_pipe: u32 = 42; +pub const __NR_times: u32 = 43; +pub const __NR_brk: u32 = 45; +pub const __NR_setgid: u32 = 46; +pub const __NR_getgid: u32 = 47; +pub const __NR_geteuid: u32 = 49; +pub const __NR_getegid: u32 = 50; +pub const __NR_acct: u32 = 51; +pub const __NR_umount2: u32 = 52; +pub const __NR_ioctl: u32 = 54; +pub const __NR_fcntl: u32 = 55; +pub const __NR_setpgid: u32 = 57; +pub const __NR_umask: u32 = 60; +pub const __NR_chroot: u32 = 61; +pub const __NR_ustat: u32 = 62; +pub const __NR_dup2: u32 = 63; +pub const __NR_getppid: u32 = 64; +pub const __NR_getpgrp: u32 = 65; +pub const __NR_setsid: u32 = 66; +pub const __NR_sigaction: u32 = 67; +pub const __NR_setreuid: u32 = 70; +pub const __NR_setregid: u32 = 71; +pub const __NR_sigsuspend: u32 = 72; +pub const __NR_sigpending: u32 = 73; +pub const __NR_sethostname: u32 = 74; +pub const __NR_setrlimit: u32 = 75; +pub const __NR_getrusage: u32 = 77; +pub const __NR_gettimeofday: u32 = 78; +pub const __NR_settimeofday: u32 = 79; +pub const __NR_getgroups: u32 = 80; +pub const __NR_setgroups: u32 = 81; +pub const __NR_symlink: u32 = 83; +pub const __NR_readlink: u32 = 85; +pub const __NR_uselib: u32 = 86; +pub const __NR_swapon: u32 = 87; +pub const __NR_reboot: u32 = 88; +pub const __NR_munmap: u32 = 91; +pub const __NR_truncate: u32 = 92; +pub const __NR_ftruncate: u32 = 93; +pub const __NR_fchmod: u32 = 94; +pub const __NR_fchown: u32 = 95; +pub const __NR_getpriority: u32 = 96; +pub const __NR_setpriority: u32 = 97; +pub const __NR_statfs: u32 = 99; +pub const __NR_fstatfs: u32 = 100; +pub const __NR_syslog: u32 = 103; +pub const __NR_setitimer: u32 = 104; +pub const __NR_getitimer: u32 = 105; +pub const __NR_stat: u32 = 106; +pub const __NR_lstat: u32 = 107; +pub const __NR_fstat: u32 = 108; +pub const __NR_vhangup: u32 = 111; +pub const __NR_wait4: u32 = 114; +pub const __NR_swapoff: u32 = 115; +pub const __NR_sysinfo: u32 = 116; +pub const __NR_fsync: u32 = 118; +pub const __NR_sigreturn: u32 = 119; +pub const __NR_clone: u32 = 120; +pub const __NR_setdomainname: u32 = 121; +pub const __NR_uname: u32 = 122; +pub const __NR_adjtimex: u32 = 124; +pub const __NR_mprotect: u32 = 125; +pub const __NR_sigprocmask: u32 = 126; +pub const __NR_init_module: u32 = 128; +pub const __NR_delete_module: u32 = 129; +pub const __NR_quotactl: u32 = 131; +pub const __NR_getpgid: u32 = 132; +pub const __NR_fchdir: u32 = 133; +pub const __NR_bdflush: u32 = 134; +pub const __NR_sysfs: u32 = 135; +pub const __NR_personality: u32 = 136; +pub const __NR_setfsuid: u32 = 138; +pub const __NR_setfsgid: u32 = 139; +pub const __NR__llseek: u32 = 140; +pub const __NR_getdents: u32 = 141; +pub const __NR__newselect: u32 = 142; +pub const __NR_flock: u32 = 143; +pub const __NR_msync: u32 = 144; +pub const __NR_readv: u32 = 145; +pub const __NR_writev: u32 = 146; +pub const __NR_getsid: u32 = 147; +pub const __NR_fdatasync: u32 = 148; +pub const __NR__sysctl: u32 = 149; +pub const __NR_mlock: u32 = 150; +pub const __NR_munlock: u32 = 151; +pub const __NR_mlockall: u32 = 152; +pub const __NR_munlockall: u32 = 153; +pub const __NR_sched_setparam: u32 = 154; +pub const __NR_sched_getparam: u32 = 155; +pub const __NR_sched_setscheduler: u32 = 156; +pub const __NR_sched_getscheduler: u32 = 157; +pub const __NR_sched_yield: u32 = 158; +pub const __NR_sched_get_priority_max: u32 = 159; +pub const __NR_sched_get_priority_min: u32 = 160; +pub const __NR_sched_rr_get_interval: u32 = 161; +pub const __NR_nanosleep: u32 = 162; +pub const __NR_mremap: u32 = 163; +pub const __NR_setresuid: u32 = 164; +pub const __NR_getresuid: u32 = 165; +pub const __NR_poll: u32 = 168; +pub const __NR_nfsservctl: u32 = 169; +pub const __NR_setresgid: u32 = 170; +pub const __NR_getresgid: u32 = 171; +pub const __NR_prctl: u32 = 172; +pub const __NR_rt_sigreturn: u32 = 173; +pub const __NR_rt_sigaction: u32 = 174; +pub const __NR_rt_sigprocmask: u32 = 175; +pub const __NR_rt_sigpending: u32 = 176; +pub const __NR_rt_sigtimedwait: u32 = 177; +pub const __NR_rt_sigqueueinfo: u32 = 178; +pub const __NR_rt_sigsuspend: u32 = 179; +pub const __NR_pread64: u32 = 180; +pub const __NR_pwrite64: u32 = 181; +pub const __NR_chown: u32 = 182; +pub const __NR_getcwd: u32 = 183; +pub const __NR_capget: u32 = 184; +pub const __NR_capset: u32 = 185; +pub const __NR_sigaltstack: u32 = 186; +pub const __NR_sendfile: u32 = 187; +pub const __NR_vfork: u32 = 190; +pub const __NR_ugetrlimit: u32 = 191; +pub const __NR_mmap2: u32 = 192; +pub const __NR_truncate64: u32 = 193; +pub const __NR_ftruncate64: u32 = 194; +pub const __NR_stat64: u32 = 195; +pub const __NR_lstat64: u32 = 196; +pub const __NR_fstat64: u32 = 197; +pub const __NR_lchown32: u32 = 198; +pub const __NR_getuid32: u32 = 199; +pub const __NR_getgid32: u32 = 200; +pub const __NR_geteuid32: u32 = 201; +pub const __NR_getegid32: u32 = 202; +pub const __NR_setreuid32: u32 = 203; +pub const __NR_setregid32: u32 = 204; +pub const __NR_getgroups32: u32 = 205; +pub const __NR_setgroups32: u32 = 206; +pub const __NR_fchown32: u32 = 207; +pub const __NR_setresuid32: u32 = 208; +pub const __NR_getresuid32: u32 = 209; +pub const __NR_setresgid32: u32 = 210; +pub const __NR_getresgid32: u32 = 211; +pub const __NR_chown32: u32 = 212; +pub const __NR_setuid32: u32 = 213; +pub const __NR_setgid32: u32 = 214; +pub const __NR_setfsuid32: u32 = 215; +pub const __NR_setfsgid32: u32 = 216; +pub const __NR_getdents64: u32 = 217; +pub const __NR_pivot_root: u32 = 218; +pub const __NR_mincore: u32 = 219; +pub const __NR_madvise: u32 = 220; +pub const __NR_fcntl64: u32 = 221; +pub const __NR_gettid: u32 = 224; +pub const __NR_readahead: u32 = 225; +pub const __NR_setxattr: u32 = 226; +pub const __NR_lsetxattr: u32 = 227; +pub const __NR_fsetxattr: u32 = 228; +pub const __NR_getxattr: u32 = 229; +pub const __NR_lgetxattr: u32 = 230; +pub const __NR_fgetxattr: u32 = 231; +pub const __NR_listxattr: u32 = 232; +pub const __NR_llistxattr: u32 = 233; +pub const __NR_flistxattr: u32 = 234; +pub const __NR_removexattr: u32 = 235; +pub const __NR_lremovexattr: u32 = 236; +pub const __NR_fremovexattr: u32 = 237; +pub const __NR_tkill: u32 = 238; +pub const __NR_sendfile64: u32 = 239; +pub const __NR_futex: u32 = 240; +pub const __NR_sched_setaffinity: u32 = 241; +pub const __NR_sched_getaffinity: u32 = 242; +pub const __NR_io_setup: u32 = 243; +pub const __NR_io_destroy: u32 = 244; +pub const __NR_io_getevents: u32 = 245; +pub const __NR_io_submit: u32 = 246; +pub const __NR_io_cancel: u32 = 247; +pub const __NR_exit_group: u32 = 248; +pub const __NR_lookup_dcookie: u32 = 249; +pub const __NR_epoll_create: u32 = 250; +pub const __NR_epoll_ctl: u32 = 251; +pub const __NR_epoll_wait: u32 = 252; +pub const __NR_remap_file_pages: u32 = 253; +pub const __NR_set_tid_address: u32 = 256; +pub const __NR_timer_create: u32 = 257; +pub const __NR_timer_settime: u32 = 258; +pub const __NR_timer_gettime: u32 = 259; +pub const __NR_timer_getoverrun: u32 = 260; +pub const __NR_timer_delete: u32 = 261; +pub const __NR_clock_settime: u32 = 262; +pub const __NR_clock_gettime: u32 = 263; +pub const __NR_clock_getres: u32 = 264; +pub const __NR_clock_nanosleep: u32 = 265; +pub const __NR_statfs64: u32 = 266; +pub const __NR_fstatfs64: u32 = 267; +pub const __NR_tgkill: u32 = 268; +pub const __NR_utimes: u32 = 269; +pub const __NR_arm_fadvise64_64: u32 = 270; +pub const __NR_pciconfig_iobase: u32 = 271; +pub const __NR_pciconfig_read: u32 = 272; +pub const __NR_pciconfig_write: u32 = 273; +pub const __NR_mq_open: u32 = 274; +pub const __NR_mq_unlink: u32 = 275; +pub const __NR_mq_timedsend: u32 = 276; +pub const __NR_mq_timedreceive: u32 = 277; +pub const __NR_mq_notify: u32 = 278; +pub const __NR_mq_getsetattr: u32 = 279; +pub const __NR_waitid: u32 = 280; +pub const __NR_socket: u32 = 281; +pub const __NR_bind: u32 = 282; +pub const __NR_connect: u32 = 283; +pub const __NR_listen: u32 = 284; +pub const __NR_accept: u32 = 285; +pub const __NR_getsockname: u32 = 286; +pub const __NR_getpeername: u32 = 287; +pub const __NR_socketpair: u32 = 288; +pub const __NR_send: u32 = 289; +pub const __NR_sendto: u32 = 290; +pub const __NR_recv: u32 = 291; +pub const __NR_recvfrom: u32 = 292; +pub const __NR_shutdown: u32 = 293; +pub const __NR_setsockopt: u32 = 294; +pub const __NR_getsockopt: u32 = 295; +pub const __NR_sendmsg: u32 = 296; +pub const __NR_recvmsg: u32 = 297; +pub const __NR_semop: u32 = 298; +pub const __NR_semget: u32 = 299; +pub const __NR_semctl: u32 = 300; +pub const __NR_msgsnd: u32 = 301; +pub const __NR_msgrcv: u32 = 302; +pub const __NR_msgget: u32 = 303; +pub const __NR_msgctl: u32 = 304; +pub const __NR_shmat: u32 = 305; +pub const __NR_shmdt: u32 = 306; +pub const __NR_shmget: u32 = 307; +pub const __NR_shmctl: u32 = 308; +pub const __NR_add_key: u32 = 309; +pub const __NR_request_key: u32 = 310; +pub const __NR_keyctl: u32 = 311; +pub const __NR_semtimedop: u32 = 312; +pub const __NR_vserver: u32 = 313; +pub const __NR_ioprio_set: u32 = 314; +pub const __NR_ioprio_get: u32 = 315; +pub const __NR_inotify_init: u32 = 316; +pub const __NR_inotify_add_watch: u32 = 317; +pub const __NR_inotify_rm_watch: u32 = 318; +pub const __NR_mbind: u32 = 319; +pub const __NR_get_mempolicy: u32 = 320; +pub const __NR_set_mempolicy: u32 = 321; +pub const __NR_openat: u32 = 322; +pub const __NR_mkdirat: u32 = 323; +pub const __NR_mknodat: u32 = 324; +pub const __NR_fchownat: u32 = 325; +pub const __NR_futimesat: u32 = 326; +pub const __NR_fstatat64: u32 = 327; +pub const __NR_unlinkat: u32 = 328; +pub const __NR_renameat: u32 = 329; +pub const __NR_linkat: u32 = 330; +pub const __NR_symlinkat: u32 = 331; +pub const __NR_readlinkat: u32 = 332; +pub const __NR_fchmodat: u32 = 333; +pub const __NR_faccessat: u32 = 334; +pub const __NR_pselect6: u32 = 335; +pub const __NR_ppoll: u32 = 336; +pub const __NR_unshare: u32 = 337; +pub const __NR_set_robust_list: u32 = 338; +pub const __NR_get_robust_list: u32 = 339; +pub const __NR_splice: u32 = 340; +pub const __NR_arm_sync_file_range: u32 = 341; +pub const __NR_tee: u32 = 342; +pub const __NR_vmsplice: u32 = 343; +pub const __NR_move_pages: u32 = 344; +pub const __NR_getcpu: u32 = 345; +pub const __NR_epoll_pwait: u32 = 346; +pub const __NR_kexec_load: u32 = 347; +pub const __NR_utimensat: u32 = 348; +pub const __NR_signalfd: u32 = 349; +pub const __NR_timerfd_create: u32 = 350; +pub const __NR_eventfd: u32 = 351; +pub const __NR_fallocate: u32 = 352; +pub const __NR_timerfd_settime: u32 = 353; +pub const __NR_timerfd_gettime: u32 = 354; +pub const __NR_signalfd4: u32 = 355; +pub const __NR_eventfd2: u32 = 356; +pub const __NR_epoll_create1: u32 = 357; +pub const __NR_dup3: u32 = 358; +pub const __NR_pipe2: u32 = 359; +pub const __NR_inotify_init1: u32 = 360; +pub const __NR_preadv: u32 = 361; +pub const __NR_pwritev: u32 = 362; +pub const __NR_rt_tgsigqueueinfo: u32 = 363; +pub const __NR_perf_event_open: u32 = 364; +pub const __NR_recvmmsg: u32 = 365; +pub const __NR_accept4: u32 = 366; +pub const __NR_fanotify_init: u32 = 367; +pub const __NR_fanotify_mark: u32 = 368; +pub const __NR_prlimit64: u32 = 369; +pub const __NR_name_to_handle_at: u32 = 370; +pub const __NR_open_by_handle_at: u32 = 371; +pub const __NR_clock_adjtime: u32 = 372; +pub const __NR_syncfs: u32 = 373; +pub const __NR_sendmmsg: u32 = 374; +pub const __NR_setns: u32 = 375; +pub const __NR_process_vm_readv: u32 = 376; +pub const __NR_process_vm_writev: u32 = 377; +pub const __NR_kcmp: u32 = 378; +pub const __NR_finit_module: u32 = 379; +pub const __NR_sched_setattr: u32 = 380; +pub const __NR_sched_getattr: u32 = 381; +pub const __NR_renameat2: u32 = 382; +pub const __NR_seccomp: u32 = 383; +pub const __NR_getrandom: u32 = 384; +pub const __NR_memfd_create: u32 = 385; +pub const __NR_bpf: u32 = 386; +pub const __NR_execveat: u32 = 387; +pub const __NR_userfaultfd: u32 = 388; +pub const __NR_membarrier: u32 = 389; +pub const __NR_mlock2: u32 = 390; +pub const __NR_copy_file_range: u32 = 391; +pub const __NR_preadv2: u32 = 392; +pub const __NR_pwritev2: u32 = 393; +pub const __NR_pkey_mprotect: u32 = 394; +pub const __NR_pkey_alloc: u32 = 395; +pub const __NR_pkey_free: u32 = 396; +pub const __NR_statx: u32 = 397; +pub const __NR_rseq: u32 = 398; +pub const __NR_io_pgetevents: u32 = 399; +pub const __NR_migrate_pages: u32 = 400; +pub const __NR_kexec_file_load: u32 = 401; +pub const __NR_clock_gettime64: u32 = 403; +pub const __NR_clock_settime64: u32 = 404; +pub const __NR_clock_adjtime64: u32 = 405; +pub const __NR_clock_getres_time64: u32 = 406; +pub const __NR_clock_nanosleep_time64: u32 = 407; +pub const __NR_timer_gettime64: u32 = 408; +pub const __NR_timer_settime64: u32 = 409; +pub const __NR_timerfd_gettime64: u32 = 410; +pub const __NR_timerfd_settime64: u32 = 411; +pub const __NR_utimensat_time64: u32 = 412; +pub const __NR_pselect6_time64: u32 = 413; +pub const __NR_ppoll_time64: u32 = 414; +pub const __NR_io_pgetevents_time64: u32 = 416; +pub const __NR_recvmmsg_time64: u32 = 417; +pub const __NR_mq_timedsend_time64: u32 = 418; +pub const __NR_mq_timedreceive_time64: u32 = 419; +pub const __NR_semtimedop_time64: u32 = 420; +pub const __NR_rt_sigtimedwait_time64: u32 = 421; +pub const __NR_futex_time64: u32 = 422; +pub const __NR_sched_rr_get_interval_time64: u32 = 423; +pub const __NR_pidfd_send_signal: u32 = 424; +pub const __NR_io_uring_setup: u32 = 425; +pub const __NR_io_uring_enter: u32 = 426; +pub const __NR_io_uring_register: u32 = 427; +pub const __NR_open_tree: u32 = 428; +pub const __NR_move_mount: u32 = 429; +pub const __NR_fsopen: u32 = 430; +pub const __NR_fsconfig: u32 = 431; +pub const __NR_fsmount: u32 = 432; +pub const __NR_fspick: u32 = 433; +pub const __NR_pidfd_open: u32 = 434; +pub const __NR_clone3: u32 = 435; +pub const __NR_close_range: u32 = 436; +pub const __NR_openat2: u32 = 437; +pub const __NR_pidfd_getfd: u32 = 438; +pub const __NR_faccessat2: u32 = 439; +pub const __NR_process_madvise: u32 = 440; +pub const __NR_epoll_pwait2: u32 = 441; +pub const __NR_mount_setattr: u32 = 442; +pub const __NR_quotactl_fd: u32 = 443; +pub const __NR_landlock_create_ruleset: u32 = 444; +pub const __NR_landlock_add_rule: u32 = 445; +pub const __NR_landlock_restrict_self: u32 = 446; +pub const __NR_process_mrelease: u32 = 448; +pub const __NR_futex_waitv: u32 = 449; +pub const __NR_set_mempolicy_home_node: u32 = 450; +pub const __NR_sync_file_range2: u32 = 341; +pub const __ARM_NR_BASE: u32 = 983040; +pub const __ARM_NR_breakpoint: u32 = 983041; +pub const __ARM_NR_cacheflush: u32 = 983042; +pub const __ARM_NR_usr26: u32 = 983043; +pub const __ARM_NR_usr32: u32 = 983044; +pub const __ARM_NR_set_tls: u32 = 983045; +pub const __ARM_NR_get_tls: u32 = 983046; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const P_ALL: u32 = 0; +pub const P_PID: u32 = 1; +pub const P_PGID: u32 = 2; +pub const P_PIDFD: u32 = 3; +pub const XATTR_CREATE: u32 = 1; +pub const XATTR_REPLACE: u32 = 2; +pub const XATTR_OS2_PREFIX: &[u8; 5] = b"os2.\0"; +pub const XATTR_MAC_OSX_PREFIX: &[u8; 5] = b"osx.\0"; +pub const XATTR_BTRFS_PREFIX: &[u8; 7] = b"btrfs.\0"; +pub const XATTR_HURD_PREFIX: &[u8; 5] = b"gnu.\0"; +pub const XATTR_SECURITY_PREFIX: &[u8; 10] = b"security.\0"; +pub const XATTR_SYSTEM_PREFIX: &[u8; 8] = b"system.\0"; +pub const XATTR_TRUSTED_PREFIX: &[u8; 9] = b"trusted.\0"; +pub const XATTR_USER_PREFIX: &[u8; 6] = b"user.\0"; +pub const XATTR_EVM_SUFFIX: &[u8; 4] = b"evm\0"; +pub const XATTR_NAME_EVM: &[u8; 13] = b"security.evm\0"; +pub const XATTR_IMA_SUFFIX: &[u8; 4] = b"ima\0"; +pub const XATTR_NAME_IMA: &[u8; 13] = b"security.ima\0"; +pub const XATTR_SELINUX_SUFFIX: &[u8; 8] = b"selinux\0"; +pub const XATTR_NAME_SELINUX: &[u8; 17] = b"security.selinux\0"; +pub const XATTR_SMACK_SUFFIX: &[u8; 8] = b"SMACK64\0"; +pub const XATTR_SMACK_IPIN: &[u8; 12] = b"SMACK64IPIN\0"; +pub const XATTR_SMACK_IPOUT: &[u8; 13] = b"SMACK64IPOUT\0"; +pub const XATTR_SMACK_EXEC: &[u8; 12] = b"SMACK64EXEC\0"; +pub const XATTR_SMACK_TRANSMUTE: &[u8; 17] = b"SMACK64TRANSMUTE\0"; +pub const XATTR_SMACK_MMAP: &[u8; 12] = b"SMACK64MMAP\0"; +pub const XATTR_NAME_SMACK: &[u8; 17] = b"security.SMACK64\0"; +pub const XATTR_NAME_SMACKIPIN: &[u8; 21] = b"security.SMACK64IPIN\0"; +pub const XATTR_NAME_SMACKIPOUT: &[u8; 22] = b"security.SMACK64IPOUT\0"; +pub const XATTR_NAME_SMACKEXEC: &[u8; 21] = b"security.SMACK64EXEC\0"; +pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26] = b"security.SMACK64TRANSMUTE\0"; +pub const XATTR_NAME_SMACKMMAP: &[u8; 21] = b"security.SMACK64MMAP\0"; +pub const XATTR_APPARMOR_SUFFIX: &[u8; 9] = b"apparmor\0"; +pub const XATTR_NAME_APPARMOR: &[u8; 18] = b"security.apparmor\0"; +pub const XATTR_CAPS_SUFFIX: &[u8; 11] = b"capability\0"; +pub const XATTR_NAME_CAPS: &[u8; 20] = b"security.capability\0"; +pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17] = b"posix_acl_access\0"; +pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24] = b"system.posix_acl_access\0"; +pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18] = b"posix_acl_default\0"; +pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25] = b"system.posix_acl_default\0"; +pub const MFD_CLOEXEC: u32 = 1; +pub const MFD_ALLOW_SEALING: u32 = 2; +pub const MFD_HUGETLB: u32 = 4; +pub const MFD_NOEXEC_SEAL: u32 = 8; +pub const MFD_EXEC: u32 = 16; +pub const MFD_HUGE_SHIFT: u32 = 26; +pub const MFD_HUGE_MASK: u32 = 63; +pub const MFD_HUGE_64KB: u32 = 1073741824; +pub const MFD_HUGE_512KB: u32 = 1275068416; +pub const MFD_HUGE_1MB: u32 = 1342177280; +pub const MFD_HUGE_2MB: u32 = 1409286144; +pub const MFD_HUGE_8MB: u32 = 1543503872; +pub const MFD_HUGE_16MB: u32 = 1610612736; +pub const MFD_HUGE_32MB: u32 = 1677721600; +pub const MFD_HUGE_256MB: u32 = 1879048192; +pub const MFD_HUGE_512MB: u32 = 1946157056; +pub const MFD_HUGE_1GB: u32 = 2013265920; +pub const MFD_HUGE_2GB: u32 = 2080374784; +pub const MFD_HUGE_16GB: u32 = 2281701376; +pub const TFD_TIMER_ABSTIME: u32 = 1; +pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; +pub const TFD_CLOEXEC: u32 = 524288; +pub const TFD_NONBLOCK: u32 = 2048; +pub const USERFAULTFD_IOC: u32 = 170; +pub const _UFFDIO_REGISTER: u32 = 0; +pub const _UFFDIO_UNREGISTER: u32 = 1; +pub const _UFFDIO_WAKE: u32 = 2; +pub const _UFFDIO_COPY: u32 = 3; +pub const _UFFDIO_ZEROPAGE: u32 = 4; +pub const _UFFDIO_WRITEPROTECT: u32 = 6; +pub const _UFFDIO_CONTINUE: u32 = 7; +pub const _UFFDIO_API: u32 = 63; +pub const UFFDIO: u32 = 170; +pub const UFFD_EVENT_PAGEFAULT: u32 = 18; +pub const UFFD_EVENT_FORK: u32 = 19; +pub const UFFD_EVENT_REMAP: u32 = 20; +pub const UFFD_EVENT_REMOVE: u32 = 21; +pub const UFFD_EVENT_UNMAP: u32 = 22; +pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; +pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; +pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; +pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; +pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; +pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; +pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; +pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; +pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; +pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; +pub const UFFD_FEATURE_SIGBUS: u32 = 128; +pub const UFFD_FEATURE_THREAD_ID: u32 = 256; +pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; +pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; +pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; +pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; +pub const UFFD_USER_MODE_ONLY: u32 = 1; +pub const DT_UNKNOWN: u32 = 0; +pub const DT_FIFO: u32 = 1; +pub const DT_CHR: u32 = 2; +pub const DT_DIR: u32 = 4; +pub const DT_BLK: u32 = 6; +pub const DT_REG: u32 = 8; +pub const DT_LNK: u32 = 10; +pub const DT_SOCK: u32 = 12; +pub const STAT64_HAS_BROKEN_ST_INO: u32 = 1; +pub const F_OK: u32 = 0; +pub const R_OK: u32 = 4; +pub const W_OK: u32 = 2; +pub const X_OK: u32 = 1; +pub const UTIME_NOW: u32 = 1073741823; +pub const UTIME_OMIT: u32 = 1073741822; +pub const MNT_FORCE: u32 = 1; +pub const MNT_DETACH: u32 = 2; +pub const MNT_EXPIRE: u32 = 4; +pub const UMOUNT_NOFOLLOW: u32 = 8; +pub const UMOUNT_UNUSED: u32 = 2147483648; +pub const STDIN_FILENO: u32 = 0; +pub const STDOUT_FILENO: u32 = 1; +pub const STDERR_FILENO: u32 = 2; +pub const RWF_HIPRI: u32 = 1; +pub const RWF_DSYNC: u32 = 2; +pub const RWF_SYNC: u32 = 4; +pub const RWF_NOWAIT: u32 = 8; +pub const RWF_APPEND: u32 = 16; +pub const EFD_SEMAPHORE: u32 = 1; +pub const EFD_CLOEXEC: u32 = 524288; +pub const EFD_NONBLOCK: u32 = 2048; +pub const EPOLLIN: u32 = 1; +pub const EPOLLPRI: u32 = 2; +pub const EPOLLOUT: u32 = 4; +pub const EPOLLERR: u32 = 8; +pub const EPOLLHUP: u32 = 16; +pub const EPOLLNVAL: u32 = 32; +pub const EPOLLRDNORM: u32 = 64; +pub const EPOLLRDBAND: u32 = 128; +pub const EPOLLWRNORM: u32 = 256; +pub const EPOLLWRBAND: u32 = 512; +pub const EPOLLMSG: u32 = 1024; +pub const EPOLLRDHUP: u32 = 8192; +pub const EPOLLEXCLUSIVE: u32 = 268435456; +pub const EPOLLWAKEUP: u32 = 536870912; +pub const EPOLLONESHOT: u32 = 1073741824; +pub const EPOLLET: u32 = 2147483648; +pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; +pub const TFD_CREATE_FLAGS: u32 = 526336; +pub const TFD_SETTIME_FLAGS: u32 = 1; +pub const UFFD_API: u32 = 170; +pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; +pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; +pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; +pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; +pub const UFFDIO_COPY_MODE_WP: u32 = 2; +pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; +pub const SPLICE_F_MOVE: u32 = 1; +pub const SPLICE_F_NONBLOCK: u32 = 2; +pub const SPLICE_F_MORE: u32 = 4; +pub const SPLICE_F_GIFT: u32 = 8; +pub const _NSIG: u32 = 64; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, } #[repr(u32)] #[non_exhaustive] @@ -4561,717 +2676,167 @@ pub enum membarrier_cmd_flag { MEMBARRIER_CMD_FLAG_CPU = 1, } -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct uffd_msg { -pub event: __u8, -pub reserved1: __u8, -pub reserved2: __u16, -pub reserved3: __u32, -pub arg: uffd_msg__bindgen_ty_1, -} #[repr(C)] #[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1 { -pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, -pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, -pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, -pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, -pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, } #[repr(C)] #[derive(Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { -pub flags: __u64, -pub address: __u64, -pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], } #[repr(C)] #[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { -pub ptid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { -pub ufd: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { -pub from: __u64, -pub to: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { -pub start: __u64, -pub end: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { -pub reserved1: __u64, -pub reserved2: __u64, -pub reserved3: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_api { -pub api: __u64, -pub features: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_range { -pub start: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_register { -pub range: uffdio_range, -pub mode: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_copy { -pub dst: __u64, -pub src: __u64, -pub len: __u64, -pub mode: __u64, -pub copy: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_zeropage { -pub range: uffdio_range, -pub mode: __u64, -pub zeropage: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_writeprotect { -pub range: uffdio_range, -pub mode: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_continue { -pub range: uffdio_range, -pub mode: __u64, -pub mapped: __s64, -} -#[repr(C)] -pub struct io_uring_sqe { -pub opcode: __u8, -pub flags: __u8, -pub ioprio: __u16, -pub fd: __s32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, -pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, -pub len: __u32, -pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, -pub user_data: __u64, -pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, -pub personality: __u16, -pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, -pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +pub union sigaction__bindgen_ty_1 { +pub _sa_handler: __sighandler_t, +pub _sa_sigaction: ::core::option::Option, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_1 { -pub off: __u64, -pub addr2: __u64, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { -pub cmd_op: __u32, -pub __pad1: __u32, +pub union sigval { +pub sival_int: crate::ctypes::c_int, +pub sival_ptr: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_2 { -pub addr: __u64, -pub splice_off_in: __u64, +pub union __sifields { +pub _kill: __sifields__bindgen_ty_1, +pub _timer: __sifields__bindgen_ty_2, +pub _rt: __sifields__bindgen_ty_3, +pub _sigchld: __sifields__bindgen_ty_4, +pub _sigfault: __sifields__bindgen_ty_5, +pub _sigpoll: __sifields__bindgen_ty_6, +pub _sigsys: __sifields__bindgen_ty_7, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_3 { -pub rw_flags: __kernel_rwf_t, -pub fsync_flags: __u32, -pub poll_events: __u16, -pub poll32_events: __u32, -pub sync_range_flags: __u32, -pub msg_flags: __u32, -pub timeout_flags: __u32, -pub accept_flags: __u32, -pub cancel_flags: __u32, -pub open_flags: __u32, -pub statx_flags: __u32, -pub fadvise_advice: __u32, -pub splice_flags: __u32, -pub rename_flags: __u32, -pub unlink_flags: __u32, -pub hardlink_flags: __u32, -pub xattr_flags: __u32, -pub msg_ring_flags: __u32, -pub uring_cmd_flags: __u32, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_4 { -pub buf_index: __u16, -pub buf_group: __u16, +pub union __sifields__bindgen_ty_5__bindgen_ty_1 { +pub _trapno: crate::ctypes::c_int, +pub _addr_lsb: crate::ctypes::c_short, +pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, +pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, +pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_5 { -pub splice_fd_in: __s32, -pub file_index: __u32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { -pub addr_len: __u16, -pub __pad3: [__u16; 1usize], -} -#[repr(C)] -pub struct io_uring_sqe__bindgen_ty_6 { -pub __bindgen_anon_1: __BindgenUnionField, -pub cmd: __BindgenUnionField<[__u8; 0usize]>, -pub bindgen_union_field: [u64; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { -pub addr3: __u64, -pub __pad2: [__u64; 1usize], -} -pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT; -pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT; -pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT; -pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT; -pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT; -pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT; -pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -IOSQE_FIXED_FILE_BIT = 0, -IOSQE_IO_DRAIN_BIT = 1, -IOSQE_IO_LINK_BIT = 2, -IOSQE_IO_HARDLINK_BIT = 3, -IOSQE_ASYNC_BIT = 4, -IOSQE_BUFFER_SELECT_BIT = 5, -IOSQE_CQE_SKIP_SUCCESS_BIT = 6, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum io_uring_op { -IORING_OP_NOP = 0, -IORING_OP_READV = 1, -IORING_OP_WRITEV = 2, -IORING_OP_FSYNC = 3, -IORING_OP_READ_FIXED = 4, -IORING_OP_WRITE_FIXED = 5, -IORING_OP_POLL_ADD = 6, -IORING_OP_POLL_REMOVE = 7, -IORING_OP_SYNC_FILE_RANGE = 8, -IORING_OP_SENDMSG = 9, -IORING_OP_RECVMSG = 10, -IORING_OP_TIMEOUT = 11, -IORING_OP_TIMEOUT_REMOVE = 12, -IORING_OP_ACCEPT = 13, -IORING_OP_ASYNC_CANCEL = 14, -IORING_OP_LINK_TIMEOUT = 15, -IORING_OP_CONNECT = 16, -IORING_OP_FALLOCATE = 17, -IORING_OP_OPENAT = 18, -IORING_OP_CLOSE = 19, -IORING_OP_FILES_UPDATE = 20, -IORING_OP_STATX = 21, -IORING_OP_READ = 22, -IORING_OP_WRITE = 23, -IORING_OP_FADVISE = 24, -IORING_OP_MADVISE = 25, -IORING_OP_SEND = 26, -IORING_OP_RECV = 27, -IORING_OP_OPENAT2 = 28, -IORING_OP_EPOLL_CTL = 29, -IORING_OP_SPLICE = 30, -IORING_OP_PROVIDE_BUFFERS = 31, -IORING_OP_REMOVE_BUFFERS = 32, -IORING_OP_TEE = 33, -IORING_OP_SHUTDOWN = 34, -IORING_OP_RENAMEAT = 35, -IORING_OP_UNLINKAT = 36, -IORING_OP_MKDIRAT = 37, -IORING_OP_SYMLINKAT = 38, -IORING_OP_LINKAT = 39, -IORING_OP_MSG_RING = 40, -IORING_OP_FSETXATTR = 41, -IORING_OP_SETXATTR = 42, -IORING_OP_FGETXATTR = 43, -IORING_OP_GETXATTR = 44, -IORING_OP_SOCKET = 45, -IORING_OP_URING_CMD = 46, -IORING_OP_SEND_ZC = 47, -IORING_OP_SENDMSG_ZC = 48, -IORING_OP_LAST = 49, -} -pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA; -pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_8 { -IORING_MSG_DATA = 0, -IORING_MSG_SEND_FD = 1, -} -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_cqe { -pub user_data: __u64, -pub res: __s32, -pub flags: __u32, -pub big_cqe: __IncompleteArrayField<__u64>, -} -pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_9 { -IORING_CQE_BUFFER_SHIFT = 16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_sqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub flags: __u32, -pub dropped: __u32, -pub array: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_cqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub overflow: __u32, -pub cqes: __u32, -pub flags: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_params { -pub sq_entries: __u32, -pub cq_entries: __u32, -pub flags: __u32, -pub sq_thread_cpu: __u32, -pub sq_thread_idle: __u32, -pub features: __u32, -pub wq_fd: __u32, -pub resv: [__u32; 3usize], -pub sq_off: io_sqring_offsets, -pub cq_off: io_cqring_offsets, -} -pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS; -pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS; -pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES; -pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES; -pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD; -pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD; -pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE; -pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC; -pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE; -pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY; -pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY; -pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS; -pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS; -pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2; -pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2; -pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2; -pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE; -pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF; -pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF; -pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS; -pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS; -pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS; -pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING; -pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING; -pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL; -pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE; -pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST; -pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_USE_REGISTERED_RING; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_10 { -IORING_REGISTER_BUFFERS = 0, -IORING_UNREGISTER_BUFFERS = 1, -IORING_REGISTER_FILES = 2, -IORING_UNREGISTER_FILES = 3, -IORING_REGISTER_EVENTFD = 4, -IORING_UNREGISTER_EVENTFD = 5, -IORING_REGISTER_FILES_UPDATE = 6, -IORING_REGISTER_EVENTFD_ASYNC = 7, -IORING_REGISTER_PROBE = 8, -IORING_REGISTER_PERSONALITY = 9, -IORING_UNREGISTER_PERSONALITY = 10, -IORING_REGISTER_RESTRICTIONS = 11, -IORING_REGISTER_ENABLE_RINGS = 12, -IORING_REGISTER_FILES2 = 13, -IORING_REGISTER_FILES_UPDATE2 = 14, -IORING_REGISTER_BUFFERS2 = 15, -IORING_REGISTER_BUFFERS_UPDATE = 16, -IORING_REGISTER_IOWQ_AFF = 17, -IORING_UNREGISTER_IOWQ_AFF = 18, -IORING_REGISTER_IOWQ_MAX_WORKERS = 19, -IORING_REGISTER_RING_FDS = 20, -IORING_UNREGISTER_RING_FDS = 21, -IORING_REGISTER_PBUF_RING = 22, -IORING_UNREGISTER_PBUF_RING = 23, -IORING_REGISTER_SYNC_CANCEL = 24, -IORING_REGISTER_FILE_ALLOC_RANGE = 25, -IORING_REGISTER_LAST = 26, -IORING_REGISTER_USE_REGISTERED_RING = 2147483648, -} -pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND; -pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_11 { -IO_WQ_BOUND = 0, -IO_WQ_UNBOUND = 1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_files_update { -pub offset: __u32, -pub resv: __u32, -pub fds: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_register { -pub nr: __u32, -pub flags: __u32, -pub resv2: __u64, -pub data: __u64, -pub tags: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update2 { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -pub tags: __u64, -pub nr: __u32, -pub resv2: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_slot { -pub tag: __u64, -pub resv: [__u64; 3usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_register { -pub nr_slots: __u32, -pub resv: __u32, -pub resv2: __u64, -pub data: __u64, -pub resv3: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_probe_op { -pub op: __u8, -pub resv: __u8, -pub flags: __u16, -pub resv2: __u32, +pub union siginfo__bindgen_ty_1 { +pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, +pub _si_pad: [crate::ctypes::c_int; 32usize], } #[repr(C)] -#[derive(Debug)] -pub struct io_uring_probe { -pub last_op: __u8, -pub ops_len: __u8, -pub resv: __u16, -pub resv2: [__u32; 3usize], -pub ops: __IncompleteArrayField, +#[derive(Copy, Clone)] +pub union sigevent__bindgen_ty_1 { +pub _pad: [crate::ctypes::c_int; 13usize], +pub _tid: crate::ctypes::c_int, +pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] -pub struct io_uring_restriction { -pub opcode: __u16, -pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, -pub resv: __u8, -pub resv2: [__u32; 3usize], +pub union uffd_msg__bindgen_ty_1 { +pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, +pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, +pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, +pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, +pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_restriction__bindgen_ty_1 { -pub register_op: __u8, -pub sqe_op: __u8, -pub sqe_flags: __u8, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf { -pub addr: __u64, -pub len: __u32, -pub bid: __u16, -pub resv: __u16, +pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { +pub ptid: __u32, } -#[repr(C)] -pub struct io_uring_buf_ring { -pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } } -#[repr(C)] -pub struct io_uring_buf_ring__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 2usize], } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { -pub resv1: __u64, -pub resv2: __u32, -pub resv3: __u16, -pub tail: __u16, +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask } -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { -pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, -pub bufs: __IncompleteArrayField, +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_reg { -pub ring_addr: __u64, -pub ring_entries: __u32, -pub bgid: __u16, -pub pad: __u16, -pub resv: [__u64; 3usize], } -pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP; -pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP; -pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; -pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; -pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_12 { -IORING_RESTRICTION_REGISTER_OP = 0, -IORING_RESTRICTION_SQE_OP = 1, -IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, -IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, -IORING_RESTRICTION_LAST = 4, +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_getevents_arg { -pub sigmask: __u64, -pub sigmask_sz: __u32, -pub pad: __u32, -pub ts: __u64, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sync_cancel_reg { -pub addr: __u64, -pub fd: __s32, -pub flags: __u32, -pub timeout: __kernel_timespec, -pub pad: [__u64; 4usize], +val } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_file_index_range { -pub off: __u32, -pub len: __u32, -pub resv: __u64, +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_recvmsg_out { -pub namelen: __u32, -pub controllen: __u32, -pub payloadlen: __u32, -pub flags: __u32, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr { -pub __storage: __kernel_sockaddr_storage, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct linger { -pub l_onoff: crate::ctypes::c_int, -pub l_linger: crate::ctypes::c_int, +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) } -#[repr(C)] -#[derive(Debug)] -pub struct linux_dirent64 { -pub d_ino: crate::ctypes::c_ulonglong, -pub d_off: crate::ctypes::c_longlong, -pub d_reclen: __u16, -pub d_type: __u8, -pub d_name: __IncompleteArrayField, +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T } -pub type socklen_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __old_kernel_stat { -pub st_dev: crate::ctypes::c_ushort, -pub st_ino: crate::ctypes::c_ushort, -pub st_mode: crate::ctypes::c_ushort, -pub st_nlink: crate::ctypes::c_ushort, -pub st_uid: crate::ctypes::c_ushort, -pub st_gid: crate::ctypes::c_ushort, -pub st_rdev: crate::ctypes::c_ushort, -pub st_size: crate::ctypes::c_ulong, -pub st_atime: crate::ctypes::c_ulong, -pub st_mtime: crate::ctypes::c_ulong, -pub st_ctime: crate::ctypes::c_ulong, +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat { -pub st_dev: crate::ctypes::c_ulong, -pub st_ino: crate::ctypes::c_ulong, -pub st_mode: crate::ctypes::c_ushort, -pub st_nlink: crate::ctypes::c_ushort, -pub st_uid: crate::ctypes::c_ushort, -pub st_gid: crate::ctypes::c_ushort, -pub st_rdev: crate::ctypes::c_ulong, -pub st_size: crate::ctypes::c_ulong, -pub st_blksize: crate::ctypes::c_ulong, -pub st_blocks: crate::ctypes::c_ulong, -pub st_atime: crate::ctypes::c_ulong, -pub st_atime_nsec: crate::ctypes::c_ulong, -pub st_mtime: crate::ctypes::c_ulong, -pub st_mtime_nsec: crate::ctypes::c_ulong, -pub st_ctime: crate::ctypes::c_ulong, -pub st_ctime_nsec: crate::ctypes::c_ulong, -pub __unused4: crate::ctypes::c_ulong, -pub __unused5: crate::ctypes::c_ulong, +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat64 { -pub st_dev: crate::ctypes::c_ulonglong, -pub __pad0: [crate::ctypes::c_uchar; 4usize], -pub __st_ino: crate::ctypes::c_ulong, -pub st_mode: crate::ctypes::c_uint, -pub st_nlink: crate::ctypes::c_uint, -pub st_uid: crate::ctypes::c_ulong, -pub st_gid: crate::ctypes::c_ulong, -pub st_rdev: crate::ctypes::c_ulonglong, -pub __pad3: [crate::ctypes::c_uchar; 4usize], -pub st_size: crate::ctypes::c_longlong, -pub st_blksize: crate::ctypes::c_ulong, -pub st_blocks: crate::ctypes::c_ulonglong, -pub st_atime: crate::ctypes::c_ulong, -pub st_atime_nsec: crate::ctypes::c_ulong, -pub st_mtime: crate::ctypes::c_ulong, -pub st_mtime_nsec: crate::ctypes::c_ulong, -pub st_ctime: crate::ctypes::c_ulong, -pub st_ctime_nsec: crate::ctypes::c_ulong, -pub st_ino: crate::ctypes::c_ulonglong, +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u32, -pub f_bfree: __u32, -pub f_bavail: __u32, -pub f_files: __u32, -pub f_ffree: __u32, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], } -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct compat_statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], } -pub type __fsword_t = __u32; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_desc { -pub entry_number: crate::ctypes::c_uint, -pub base_addr: crate::ctypes::c_uint, -pub limit: crate::ctypes::c_uint, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub __bindgen_padding_0: [u8; 3usize], +impl membarrier_cmd { +pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; } impl user_desc { #[inline] @@ -5370,47 +2935,3 @@ __bindgen_bitfield_unit } } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr { -pub msg_name: *mut crate::ctypes::c_void, -pub msg_namelen: crate::ctypes::c_int, -pub msg_iov: *mut iovec, -pub msg_iovlen: size_t, -pub msg_control: *mut crate::ctypes::c_void, -pub msg_controllen: size_t, -pub msg_flags: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsghdr { -pub cmsg_len: size_t, -pub cmsg_level: crate::ctypes::c_int, -pub cmsg_type: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ucred { -pub pid: __u32, -pub uid: __u32, -pub gid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mmsghdr { -pub msg_hdr: msghdr, -pub msg_len: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigset_t { -pub sig: [crate::ctypes::c_ulong; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigaction { -pub sa_handler_kernel: __kernel_sighandler_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_restorer: __sigrestore_t, -pub sa_mask: kernel_sigset_t, -} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/arm/if_ether.rs temporalio-1.3.0/vendor/linux-raw-sys/src/arm/if_ether.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/arm/if_ether.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/arm/if_ether.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,167 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ethhdr { +pub h_dest: [crate::ctypes::c_uchar; 6usize], +pub h_source: [crate::ctypes::c_uchar; 6usize], +pub h_proto: __be16, +} +pub const ETH_ALEN: u32 = 6; +pub const ETH_TLEN: u32 = 2; +pub const ETH_HLEN: u32 = 14; +pub const ETH_ZLEN: u32 = 60; +pub const ETH_DATA_LEN: u32 = 1500; +pub const ETH_FRAME_LEN: u32 = 1514; +pub const ETH_FCS_LEN: u32 = 4; +pub const ETH_MIN_MTU: u32 = 68; +pub const ETH_MAX_MTU: u32 = 65535; +pub const ETH_P_LOOP: u32 = 96; +pub const ETH_P_PUP: u32 = 512; +pub const ETH_P_PUPAT: u32 = 513; +pub const ETH_P_TSN: u32 = 8944; +pub const ETH_P_ERSPAN2: u32 = 8939; +pub const ETH_P_IP: u32 = 2048; +pub const ETH_P_X25: u32 = 2053; +pub const ETH_P_ARP: u32 = 2054; +pub const ETH_P_BPQ: u32 = 2303; +pub const ETH_P_IEEEPUP: u32 = 2560; +pub const ETH_P_IEEEPUPAT: u32 = 2561; +pub const ETH_P_BATMAN: u32 = 17157; +pub const ETH_P_DEC: u32 = 24576; +pub const ETH_P_DNA_DL: u32 = 24577; +pub const ETH_P_DNA_RC: u32 = 24578; +pub const ETH_P_DNA_RT: u32 = 24579; +pub const ETH_P_LAT: u32 = 24580; +pub const ETH_P_DIAG: u32 = 24581; +pub const ETH_P_CUST: u32 = 24582; +pub const ETH_P_SCA: u32 = 24583; +pub const ETH_P_TEB: u32 = 25944; +pub const ETH_P_RARP: u32 = 32821; +pub const ETH_P_ATALK: u32 = 32923; +pub const ETH_P_AARP: u32 = 33011; +pub const ETH_P_8021Q: u32 = 33024; +pub const ETH_P_ERSPAN: u32 = 35006; +pub const ETH_P_IPX: u32 = 33079; +pub const ETH_P_IPV6: u32 = 34525; +pub const ETH_P_PAUSE: u32 = 34824; +pub const ETH_P_SLOW: u32 = 34825; +pub const ETH_P_WCCP: u32 = 34878; +pub const ETH_P_MPLS_UC: u32 = 34887; +pub const ETH_P_MPLS_MC: u32 = 34888; +pub const ETH_P_ATMMPOA: u32 = 34892; +pub const ETH_P_PPP_DISC: u32 = 34915; +pub const ETH_P_PPP_SES: u32 = 34916; +pub const ETH_P_LINK_CTL: u32 = 34924; +pub const ETH_P_ATMFATE: u32 = 34948; +pub const ETH_P_PAE: u32 = 34958; +pub const ETH_P_PROFINET: u32 = 34962; +pub const ETH_P_REALTEK: u32 = 34969; +pub const ETH_P_AOE: u32 = 34978; +pub const ETH_P_ETHERCAT: u32 = 34980; +pub const ETH_P_8021AD: u32 = 34984; +pub const ETH_P_802_EX1: u32 = 34997; +pub const ETH_P_PREAUTH: u32 = 35015; +pub const ETH_P_TIPC: u32 = 35018; +pub const ETH_P_LLDP: u32 = 35020; +pub const ETH_P_MRP: u32 = 35043; +pub const ETH_P_MACSEC: u32 = 35045; +pub const ETH_P_8021AH: u32 = 35047; +pub const ETH_P_MVRP: u32 = 35061; +pub const ETH_P_1588: u32 = 35063; +pub const ETH_P_NCSI: u32 = 35064; +pub const ETH_P_PRP: u32 = 35067; +pub const ETH_P_CFM: u32 = 35074; +pub const ETH_P_FCOE: u32 = 35078; +pub const ETH_P_IBOE: u32 = 35093; +pub const ETH_P_TDLS: u32 = 35085; +pub const ETH_P_FIP: u32 = 35092; +pub const ETH_P_80221: u32 = 35095; +pub const ETH_P_HSR: u32 = 35119; +pub const ETH_P_NSH: u32 = 35151; +pub const ETH_P_LOOPBACK: u32 = 36864; +pub const ETH_P_QINQ1: u32 = 37120; +pub const ETH_P_QINQ2: u32 = 37376; +pub const ETH_P_QINQ3: u32 = 37632; +pub const ETH_P_EDSA: u32 = 56026; +pub const ETH_P_DSA_8021Q: u32 = 56027; +pub const ETH_P_DSA_A5PSW: u32 = 57345; +pub const ETH_P_IFE: u32 = 60734; +pub const ETH_P_AF_IUCV: u32 = 64507; +pub const ETH_P_802_3_MIN: u32 = 1536; +pub const ETH_P_802_3: u32 = 1; +pub const ETH_P_AX25: u32 = 2; +pub const ETH_P_ALL: u32 = 3; +pub const ETH_P_802_2: u32 = 4; +pub const ETH_P_SNAP: u32 = 5; +pub const ETH_P_DDCMP: u32 = 6; +pub const ETH_P_WAN_PPP: u32 = 7; +pub const ETH_P_PPP_MP: u32 = 8; +pub const ETH_P_LOCALTALK: u32 = 9; +pub const ETH_P_CAN: u32 = 12; +pub const ETH_P_CANFD: u32 = 13; +pub const ETH_P_CANXL: u32 = 14; +pub const ETH_P_PPPTALK: u32 = 16; +pub const ETH_P_TR_802_2: u32 = 17; +pub const ETH_P_MOBITEX: u32 = 21; +pub const ETH_P_CONTROL: u32 = 22; +pub const ETH_P_IRDA: u32 = 23; +pub const ETH_P_ECONET: u32 = 24; +pub const ETH_P_HDLC: u32 = 25; +pub const ETH_P_ARCNET: u32 = 26; +pub const ETH_P_DSA: u32 = 27; +pub const ETH_P_TRAILER: u32 = 28; +pub const ETH_P_PHONET: u32 = 245; +pub const ETH_P_IEEE802154: u32 = 246; +pub const ETH_P_CAIF: u32 = 247; +pub const ETH_P_XDSA: u32 = 248; +pub const ETH_P_MAP: u32 = 249; +pub const ETH_P_MCTP: u32 = 250; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/arm/ioctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/arm/ioctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/arm/ioctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/arm/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const FIONREAD: u32 = 21531; pub const FIONBIO: u32 = 21537; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/arm/io_uring.rs temporalio-1.3.0/vendor/linux-raw-sys/src/arm/io_uring.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/arm/io_uring.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/arm/io_uring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1083 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_rwf_t = crate::ctypes::c_int; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +pub struct io_uring_sqe { +pub opcode: __u8, +pub flags: __u8, +pub ioprio: __u16, +pub fd: __s32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, +pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, +pub len: __u32, +pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, +pub user_data: __u64, +pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, +pub personality: __u16, +pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, +pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { +pub cmd_op: __u32, +pub __pad1: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { +pub addr_len: __u16, +pub __pad3: [__u16; 1usize], +} +#[repr(C)] +pub struct io_uring_sqe__bindgen_ty_6 { +pub __bindgen_anon_1: __BindgenUnionField, +pub cmd: __BindgenUnionField<[__u8; 0usize]>, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { +pub addr3: __u64, +pub __pad2: [__u64; 1usize], +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_cqe { +pub user_data: __u64, +pub res: __s32, +pub flags: __u32, +pub big_cqe: __IncompleteArrayField<__u64>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_sqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub flags: __u32, +pub dropped: __u32, +pub array: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_cqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub overflow: __u32, +pub cqes: __u32, +pub flags: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_params { +pub sq_entries: __u32, +pub cq_entries: __u32, +pub flags: __u32, +pub sq_thread_cpu: __u32, +pub sq_thread_idle: __u32, +pub features: __u32, +pub wq_fd: __u32, +pub resv: [__u32; 3usize], +pub sq_off: io_sqring_offsets, +pub cq_off: io_cqring_offsets, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_files_update { +pub offset: __u32, +pub resv: __u32, +pub fds: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_register { +pub nr: __u32, +pub flags: __u32, +pub resv2: __u64, +pub data: __u64, +pub tags: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update2 { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +pub tags: __u64, +pub nr: __u32, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_slot { +pub tag: __u64, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_register { +pub nr_slots: __u32, +pub resv: __u32, +pub resv2: __u64, +pub data: __u64, +pub resv3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_probe_op { +pub op: __u8, +pub resv: __u8, +pub flags: __u16, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_probe { +pub last_op: __u8, +pub ops_len: __u8, +pub resv: __u16, +pub resv2: [__u32; 3usize], +pub ops: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_restriction { +pub opcode: __u16, +pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, +pub resv: __u8, +pub resv2: [__u32; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf { +pub addr: __u64, +pub len: __u32, +pub bid: __u16, +pub resv: __u16, +} +#[repr(C)] +pub struct io_uring_buf_ring { +pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +} +#[repr(C)] +pub struct io_uring_buf_ring__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { +pub resv1: __u64, +pub resv2: __u32, +pub resv3: __u16, +pub tail: __u16, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { +pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, +pub bufs: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_reg { +pub ring_addr: __u64, +pub ring_entries: __u32, +pub bgid: __u16, +pub pad: __u16, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_getevents_arg { +pub sigmask: __u64, +pub sigmask_sz: __u32, +pub pad: __u32, +pub ts: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sync_cancel_reg { +pub addr: __u64, +pub fd: __s32, +pub flags: __u32, +pub timeout: __kernel_timespec, +pub pad: [__u64; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_file_index_range { +pub off: __u32, +pub len: __u32, +pub resv: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_recvmsg_out { +pub namelen: __u32, +pub controllen: __u32, +pub payloadlen: __u32, +pub flags: __u32, +} +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 14; +pub const _IOC_DIRBITS: u32 = 2; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 3; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 30; +pub const _IOC_NONE: u32 = 0; +pub const _IOC_WRITE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const IOC_IN: u32 = 1073741824; +pub const IOC_OUT: u32 = 2147483648; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const IORING_FILE_INDEX_ALLOC: i32 = -1; +pub const IORING_SETUP_IOPOLL: u32 = 1; +pub const IORING_SETUP_SQPOLL: u32 = 2; +pub const IORING_SETUP_SQ_AFF: u32 = 4; +pub const IORING_SETUP_CQSIZE: u32 = 8; +pub const IORING_SETUP_CLAMP: u32 = 16; +pub const IORING_SETUP_ATTACH_WQ: u32 = 32; +pub const IORING_SETUP_R_DISABLED: u32 = 64; +pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; +pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; +pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; +pub const IORING_SETUP_SQE128: u32 = 1024; +pub const IORING_SETUP_CQE32: u32 = 2048; +pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; +pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; +pub const IORING_URING_CMD_FIXED: u32 = 1; +pub const IORING_FSYNC_DATASYNC: u32 = 1; +pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; +pub const IORING_POLL_ADD_LEVEL: u32 = 8; +pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; +pub const IORING_ASYNC_CANCEL_FD: u32 = 2; +pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; +pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; +pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; +pub const IORING_RECV_MULTISHOT: u32 = 2; +pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; +pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; +pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; +pub const IORING_ACCEPT_MULTISHOT: u32 = 1; +pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; +pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; +pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; +pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; +pub const IORING_CQE_F_NOTIF: u32 = 8; +pub const IORING_OFF_SQ_RING: u32 = 0; +pub const IORING_OFF_CQ_RING: u32 = 134217728; +pub const IORING_OFF_SQES: u32 = 268435456; +pub const IORING_SQ_NEED_WAKEUP: u32 = 1; +pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; +pub const IORING_SQ_TASKRUN: u32 = 4; +pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; +pub const IORING_ENTER_GETEVENTS: u32 = 1; +pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; +pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; +pub const IORING_ENTER_REGISTERED_RING: u32 = 16; +pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; +pub const IORING_FEAT_NODROP: u32 = 2; +pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; +pub const IORING_FEAT_RW_CUR_POS: u32 = 8; +pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; +pub const IORING_FEAT_FAST_POLL: u32 = 32; +pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_FEAT_CQE_SKIP: u32 = 2048; +pub const IORING_FEAT_LINKED_FILE: u32 = 4096; +pub const IORING_FEAT_REG_REG_RING: u32 = 8192; +pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; +pub const IO_URING_OP_SUPPORTED: u32 = 1; +pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_FIXED_FILE_BIT; +pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_DRAIN_BIT; +pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_LINK_BIT; +pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_HARDLINK_BIT; +pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_ASYNC_BIT; +pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_BUFFER_SELECT_BIT; +pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_CQE_SKIP_SUCCESS_BIT; +pub const IORING_MSG_DATA: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_DATA; +pub const IORING_MSG_SEND_FD: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_SEND_FD; +pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = _bindgen_ty_3::IORING_CQE_BUFFER_SHIFT; +pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS; +pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_BUFFERS; +pub const IORING_REGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES; +pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_FILES; +pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD; +pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_EVENTFD; +pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE; +pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD_ASYNC; +pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PROBE; +pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PERSONALITY; +pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PERSONALITY; +pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RESTRICTIONS; +pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_ENABLE_RINGS; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES2; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE2; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS2; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS_UPDATE; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_AFF; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_IOWQ_AFF; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_MAX_WORKERS; +pub const IORING_REGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RING_FDS; +pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_RING_FDS; +pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PBUF_RING; +pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PBUF_RING; +pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_SYNC_CANCEL; +pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILE_ALLOC_RANGE; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_LAST; +pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_USE_REGISTERED_RING; +pub const IO_WQ_BOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_BOUND; +pub const IO_WQ_UNBOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_UNBOUND; +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_REGISTER_OP; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_OP; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_LAST; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IOSQE_FIXED_FILE_BIT = 0, +IOSQE_IO_DRAIN_BIT = 1, +IOSQE_IO_LINK_BIT = 2, +IOSQE_IO_HARDLINK_BIT = 3, +IOSQE_ASYNC_BIT = 4, +IOSQE_BUFFER_SELECT_BIT = 5, +IOSQE_CQE_SKIP_SUCCESS_BIT = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum io_uring_op { +IORING_OP_NOP = 0, +IORING_OP_READV = 1, +IORING_OP_WRITEV = 2, +IORING_OP_FSYNC = 3, +IORING_OP_READ_FIXED = 4, +IORING_OP_WRITE_FIXED = 5, +IORING_OP_POLL_ADD = 6, +IORING_OP_POLL_REMOVE = 7, +IORING_OP_SYNC_FILE_RANGE = 8, +IORING_OP_SENDMSG = 9, +IORING_OP_RECVMSG = 10, +IORING_OP_TIMEOUT = 11, +IORING_OP_TIMEOUT_REMOVE = 12, +IORING_OP_ACCEPT = 13, +IORING_OP_ASYNC_CANCEL = 14, +IORING_OP_LINK_TIMEOUT = 15, +IORING_OP_CONNECT = 16, +IORING_OP_FALLOCATE = 17, +IORING_OP_OPENAT = 18, +IORING_OP_CLOSE = 19, +IORING_OP_FILES_UPDATE = 20, +IORING_OP_STATX = 21, +IORING_OP_READ = 22, +IORING_OP_WRITE = 23, +IORING_OP_FADVISE = 24, +IORING_OP_MADVISE = 25, +IORING_OP_SEND = 26, +IORING_OP_RECV = 27, +IORING_OP_OPENAT2 = 28, +IORING_OP_EPOLL_CTL = 29, +IORING_OP_SPLICE = 30, +IORING_OP_PROVIDE_BUFFERS = 31, +IORING_OP_REMOVE_BUFFERS = 32, +IORING_OP_TEE = 33, +IORING_OP_SHUTDOWN = 34, +IORING_OP_RENAMEAT = 35, +IORING_OP_UNLINKAT = 36, +IORING_OP_MKDIRAT = 37, +IORING_OP_SYMLINKAT = 38, +IORING_OP_LINKAT = 39, +IORING_OP_MSG_RING = 40, +IORING_OP_FSETXATTR = 41, +IORING_OP_SETXATTR = 42, +IORING_OP_FGETXATTR = 43, +IORING_OP_GETXATTR = 44, +IORING_OP_SOCKET = 45, +IORING_OP_URING_CMD = 46, +IORING_OP_SEND_ZC = 47, +IORING_OP_SENDMSG_ZC = 48, +IORING_OP_LAST = 49, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IORING_MSG_DATA = 0, +IORING_MSG_SEND_FD = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IORING_CQE_BUFFER_SHIFT = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IORING_REGISTER_BUFFERS = 0, +IORING_UNREGISTER_BUFFERS = 1, +IORING_REGISTER_FILES = 2, +IORING_UNREGISTER_FILES = 3, +IORING_REGISTER_EVENTFD = 4, +IORING_UNREGISTER_EVENTFD = 5, +IORING_REGISTER_FILES_UPDATE = 6, +IORING_REGISTER_EVENTFD_ASYNC = 7, +IORING_REGISTER_PROBE = 8, +IORING_REGISTER_PERSONALITY = 9, +IORING_UNREGISTER_PERSONALITY = 10, +IORING_REGISTER_RESTRICTIONS = 11, +IORING_REGISTER_ENABLE_RINGS = 12, +IORING_REGISTER_FILES2 = 13, +IORING_REGISTER_FILES_UPDATE2 = 14, +IORING_REGISTER_BUFFERS2 = 15, +IORING_REGISTER_BUFFERS_UPDATE = 16, +IORING_REGISTER_IOWQ_AFF = 17, +IORING_UNREGISTER_IOWQ_AFF = 18, +IORING_REGISTER_IOWQ_MAX_WORKERS = 19, +IORING_REGISTER_RING_FDS = 20, +IORING_UNREGISTER_RING_FDS = 21, +IORING_REGISTER_PBUF_RING = 22, +IORING_UNREGISTER_PBUF_RING = 23, +IORING_REGISTER_SYNC_CANCEL = 24, +IORING_REGISTER_FILE_ALLOC_RANGE = 25, +IORING_REGISTER_LAST = 26, +IORING_REGISTER_USE_REGISTERED_RING = 2147483648, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IO_WQ_BOUND = 0, +IO_WQ_UNBOUND = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IORING_RESTRICTION_REGISTER_OP = 0, +IORING_RESTRICTION_SQE_OP = 1, +IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, +IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, +IORING_RESTRICTION_LAST = 4, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_1 { +pub off: __u64, +pub addr2: __u64, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_2 { +pub addr: __u64, +pub splice_off_in: __u64, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_3 { +pub rw_flags: __kernel_rwf_t, +pub fsync_flags: __u32, +pub poll_events: __u16, +pub poll32_events: __u32, +pub sync_range_flags: __u32, +pub msg_flags: __u32, +pub timeout_flags: __u32, +pub accept_flags: __u32, +pub cancel_flags: __u32, +pub open_flags: __u32, +pub statx_flags: __u32, +pub fadvise_advice: __u32, +pub splice_flags: __u32, +pub rename_flags: __u32, +pub unlink_flags: __u32, +pub hardlink_flags: __u32, +pub xattr_flags: __u32, +pub msg_ring_flags: __u32, +pub uring_cmd_flags: __u32, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_4 { +pub buf_index: __u16, +pub buf_group: __u16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { +pub splice_fd_in: __s32, +pub file_index: __u32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_restriction__bindgen_ty_1 { +pub register_op: __u8, +pub sqe_op: __u8, +pub sqe_flags: __u8, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/arm/netlink.rs temporalio-1.3.0/vendor/linux-raw-sys/src/arm/netlink.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/arm/netlink.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/arm/netlink.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,357 +1,1492 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_nl { +pub nl_family: __kernel_sa_family_t, +pub nl_pad: crate::ctypes::c_ushort, +pub nl_pid: __u32, +pub nl_groups: __u32, } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsghdr { +pub nlmsg_len: __u32, +pub nlmsg_type: __u16, +pub nlmsg_flags: __u16, +pub nlmsg_seq: __u32, +pub nlmsg_pid: __u32, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsgerr { +pub error: crate::ctypes::c_int, +pub msg: nlmsghdr, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_pktinfo { +pub group: __u32, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_req { +pub nm_block_size: crate::ctypes::c_uint, +pub nm_block_nr: crate::ctypes::c_uint, +pub nm_frame_size: crate::ctypes::c_uint, +pub nm_frame_nr: crate::ctypes::c_uint, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_hdr { +pub nm_status: crate::ctypes::c_uint, +pub nm_len: crate::ctypes::c_uint, +pub nm_group: __u32, +pub nm_pid: __u32, +pub nm_uid: __u32, +pub nm_gid: __u32, } -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const __BITS_PER_LONG: u32 = 32; -pub const __FD_SETSIZE: u32 = 1024; -pub const NETLINK_ROUTE: u32 = 0; -pub const NETLINK_UNUSED: u32 = 1; -pub const NETLINK_USERSOCK: u32 = 2; -pub const NETLINK_FIREWALL: u32 = 3; -pub const NETLINK_SOCK_DIAG: u32 = 4; -pub const NETLINK_NFLOG: u32 = 5; -pub const NETLINK_XFRM: u32 = 6; -pub const NETLINK_SELINUX: u32 = 7; -pub const NETLINK_ISCSI: u32 = 8; -pub const NETLINK_AUDIT: u32 = 9; -pub const NETLINK_FIB_LOOKUP: u32 = 10; -pub const NETLINK_CONNECTOR: u32 = 11; -pub const NETLINK_NETFILTER: u32 = 12; -pub const NETLINK_IP6_FW: u32 = 13; -pub const NETLINK_DNRTMSG: u32 = 14; -pub const NETLINK_KOBJECT_UEVENT: u32 = 15; -pub const NETLINK_GENERIC: u32 = 16; -pub const NETLINK_SCSITRANSPORT: u32 = 18; -pub const NETLINK_ECRYPTFS: u32 = 19; -pub const NETLINK_RDMA: u32 = 20; -pub const NETLINK_CRYPTO: u32 = 21; -pub const NETLINK_SMC: u32 = 22; -pub const NETLINK_INET_DIAG: u32 = 4; -pub const MAX_LINKS: u32 = 32; -pub const NLM_F_REQUEST: u32 = 1; -pub const NLM_F_MULTI: u32 = 2; -pub const NLM_F_ACK: u32 = 4; -pub const NLM_F_ECHO: u32 = 8; -pub const NLM_F_DUMP_INTR: u32 = 16; -pub const NLM_F_DUMP_FILTERED: u32 = 32; -pub const NLM_F_ROOT: u32 = 256; -pub const NLM_F_MATCH: u32 = 512; -pub const NLM_F_ATOMIC: u32 = 1024; -pub const NLM_F_DUMP: u32 = 768; -pub const NLM_F_REPLACE: u32 = 256; -pub const NLM_F_EXCL: u32 = 512; -pub const NLM_F_CREATE: u32 = 1024; -pub const NLM_F_APPEND: u32 = 2048; -pub const NLM_F_NONREC: u32 = 256; -pub const NLM_F_BULK: u32 = 512; -pub const NLM_F_CAPPED: u32 = 256; -pub const NLM_F_ACK_TLVS: u32 = 512; -pub const NLMSG_ALIGNTO: u32 = 4; -pub const NLMSG_NOOP: u32 = 1; -pub const NLMSG_ERROR: u32 = 2; -pub const NLMSG_DONE: u32 = 3; -pub const NLMSG_OVERRUN: u32 = 4; -pub const NLMSG_MIN_TYPE: u32 = 16; -pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; -pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; -pub const NETLINK_PKTINFO: u32 = 3; -pub const NETLINK_BROADCAST_ERROR: u32 = 4; -pub const NETLINK_NO_ENOBUFS: u32 = 5; -pub const NETLINK_RX_RING: u32 = 6; -pub const NETLINK_TX_RING: u32 = 7; -pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; -pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; -pub const NETLINK_CAP_ACK: u32 = 10; -pub const NETLINK_EXT_ACK: u32 = 11; -pub const NETLINK_GET_STRICT_CHK: u32 = 12; -pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; -pub const NET_MAJOR: u32 = 36; -pub const NLA_F_NESTED: u32 = 32768; -pub const NLA_F_NET_BYTEORDER: u32 = 16384; -pub const NLA_TYPE_MASK: i32 = -49153; -pub const NLA_ALIGNTO: u32 = 4; -pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; -pub const MACVLAN_FLAG_NODST: u32 = 2; -pub const IPVLAN_F_PRIVATE: u32 = 1; -pub const IPVLAN_F_VEPA: u32 = 2; -pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; -pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; -pub const MAX_VLAN_LIST_LEN: u32 = 1; -pub const PORT_PROFILE_MAX: u32 = 40; -pub const PORT_UUID_MAX: u32 = 16; -pub const PORT_SELF_VF: i32 = -1; -pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; -pub const XDP_FLAGS_SKB_MODE: u32 = 2; -pub const XDP_FLAGS_DRV_MODE: u32 = 4; -pub const XDP_FLAGS_HW_MODE: u32 = 8; -pub const XDP_FLAGS_REPLACE: u32 = 16; -pub const XDP_FLAGS_MODES: u32 = 14; -pub const XDP_FLAGS_MASK: u32 = 31; -pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; -pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; -pub const IFA_F_SECONDARY: u32 = 1; -pub const IFA_F_TEMPORARY: u32 = 1; -pub const IFA_F_NODAD: u32 = 2; -pub const IFA_F_OPTIMISTIC: u32 = 4; -pub const IFA_F_DADFAILED: u32 = 8; -pub const IFA_F_HOMEADDRESS: u32 = 16; -pub const IFA_F_DEPRECATED: u32 = 32; -pub const IFA_F_TENTATIVE: u32 = 64; -pub const IFA_F_PERMANENT: u32 = 128; -pub const IFA_F_MANAGETEMPADDR: u32 = 256; -pub const IFA_F_NOPREFIXROUTE: u32 = 512; -pub const IFA_F_MCAUTOJOIN: u32 = 1024; -pub const IFA_F_STABLE_PRIVACY: u32 = 2048; -pub const IFAPROT_UNSPEC: u32 = 0; -pub const IFAPROT_KERNEL_LO: u32 = 1; -pub const IFAPROT_KERNEL_RA: u32 = 2; -pub const IFAPROT_KERNEL_LL: u32 = 3; -pub const NTF_USE: u32 = 1; -pub const NTF_SELF: u32 = 2; -pub const NTF_MASTER: u32 = 4; -pub const NTF_PROXY: u32 = 8; -pub const NTF_EXT_LEARNED: u32 = 16; -pub const NTF_OFFLOADED: u32 = 32; -pub const NTF_STICKY: u32 = 64; -pub const NTF_ROUTER: u32 = 128; -pub const NTF_EXT_MANAGED: u32 = 1; -pub const NTF_EXT_LOCKED: u32 = 2; -pub const NUD_INCOMPLETE: u32 = 1; -pub const NUD_REACHABLE: u32 = 2; -pub const NUD_STALE: u32 = 4; -pub const NUD_DELAY: u32 = 8; -pub const NUD_PROBE: u32 = 16; -pub const NUD_FAILED: u32 = 32; -pub const NUD_NOARP: u32 = 64; -pub const NUD_PERMANENT: u32 = 128; -pub const NUD_NONE: u32 = 0; -pub const RTNL_FAMILY_IPMR: u32 = 128; -pub const RTNL_FAMILY_IP6MR: u32 = 129; -pub const RTNL_FAMILY_MAX: u32 = 129; -pub const RTA_ALIGNTO: u32 = 4; -pub const RTPROT_UNSPEC: u32 = 0; -pub const RTPROT_REDIRECT: u32 = 1; -pub const RTPROT_KERNEL: u32 = 2; -pub const RTPROT_BOOT: u32 = 3; -pub const RTPROT_STATIC: u32 = 4; -pub const RTPROT_GATED: u32 = 8; -pub const RTPROT_RA: u32 = 9; -pub const RTPROT_MRT: u32 = 10; -pub const RTPROT_ZEBRA: u32 = 11; -pub const RTPROT_BIRD: u32 = 12; -pub const RTPROT_DNROUTED: u32 = 13; -pub const RTPROT_XORP: u32 = 14; -pub const RTPROT_NTK: u32 = 15; -pub const RTPROT_DHCP: u32 = 16; -pub const RTPROT_MROUTED: u32 = 17; -pub const RTPROT_KEEPALIVED: u32 = 18; -pub const RTPROT_BABEL: u32 = 42; -pub const RTPROT_OPENR: u32 = 99; -pub const RTPROT_BGP: u32 = 186; -pub const RTPROT_ISIS: u32 = 187; -pub const RTPROT_OSPF: u32 = 188; -pub const RTPROT_RIP: u32 = 189; -pub const RTPROT_EIGRP: u32 = 192; -pub const RTM_F_NOTIFY: u32 = 256; -pub const RTM_F_CLONED: u32 = 512; -pub const RTM_F_EQUALIZE: u32 = 1024; -pub const RTM_F_PREFIX: u32 = 2048; -pub const RTM_F_LOOKUP_TABLE: u32 = 4096; -pub const RTM_F_FIB_MATCH: u32 = 8192; -pub const RTM_F_OFFLOAD: u32 = 16384; -pub const RTM_F_TRAP: u32 = 32768; -pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; -pub const RTNH_F_DEAD: u32 = 1; -pub const RTNH_F_PERVASIVE: u32 = 2; -pub const RTNH_F_ONLINK: u32 = 4; -pub const RTNH_F_OFFLOAD: u32 = 8; -pub const RTNH_F_LINKDOWN: u32 = 16; -pub const RTNH_F_UNRESOLVED: u32 = 32; -pub const RTNH_F_TRAP: u32 = 64; -pub const RTNH_COMPARE_MASK: u32 = 89; -pub const RTNH_ALIGNTO: u32 = 4; -pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; -pub const RTAX_FEATURE_ECN: u32 = 1; -pub const RTAX_FEATURE_SACK: u32 = 2; -pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; -pub const RTAX_FEATURE_ALLFRAG: u32 = 8; -pub const RTAX_FEATURE_MASK: u32 = 15; -pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; -pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; -pub const RTMGRP_LINK: u32 = 1; -pub const RTMGRP_NOTIFY: u32 = 2; -pub const RTMGRP_NEIGH: u32 = 4; -pub const RTMGRP_TC: u32 = 8; -pub const RTMGRP_IPV4_IFADDR: u32 = 16; -pub const RTMGRP_IPV4_MROUTE: u32 = 32; -pub const RTMGRP_IPV4_ROUTE: u32 = 64; -pub const RTMGRP_IPV4_RULE: u32 = 128; -pub const RTMGRP_IPV6_IFADDR: u32 = 256; -pub const RTMGRP_IPV6_MROUTE: u32 = 512; -pub const RTMGRP_IPV6_ROUTE: u32 = 1024; -pub const RTMGRP_IPV6_IFINFO: u32 = 2048; -pub const RTMGRP_DECnet_IFADDR: u32 = 4096; -pub const RTMGRP_DECnet_ROUTE: u32 = 16384; -pub const RTMGRP_IPV6_PREFIX: u32 = 131072; -pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; -pub const RTEXT_FILTER_VF: u32 = 1; -pub const RTEXT_FILTER_BRVLAN: u32 = 2; -pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; -pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; -pub const RTEXT_FILTER_MRP: u32 = 16; -pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; -pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; -pub const RTEXT_FILTER_MST: u32 = 128; -pub type size_t = crate::ctypes::c_uint; -pub type ssize_t = crate::ctypes::c_int; -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; #[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct nlattr { +pub nla_len: __u16, +pub nla_type: __u16, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, +#[derive(Debug, Copy, Clone)] +pub struct nla_bitfield32 { +pub value: __u32, +pub selector: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], +pub struct rtnl_link_stats { +pub rx_packets: __u32, +pub tx_packets: __u32, +pub rx_bytes: __u32, +pub tx_bytes: __u32, +pub rx_errors: __u32, +pub tx_errors: __u32, +pub rx_dropped: __u32, +pub tx_dropped: __u32, +pub multicast: __u32, +pub collisions: __u32, +pub rx_length_errors: __u32, +pub rx_over_errors: __u32, +pub rx_crc_errors: __u32, +pub rx_frame_errors: __u32, +pub rx_fifo_errors: __u32, +pub rx_missed_errors: __u32, +pub tx_aborted_errors: __u32, +pub tx_carrier_errors: __u32, +pub tx_fifo_errors: __u32, +pub tx_heartbeat_errors: __u32, +pub tx_window_errors: __u32, +pub rx_compressed: __u32, +pub tx_compressed: __u32, +pub rx_nohandler: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnl_link_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +pub collisions: __u64, +pub rx_length_errors: __u64, +pub rx_over_errors: __u64, +pub rx_crc_errors: __u64, +pub rx_frame_errors: __u64, +pub rx_fifo_errors: __u64, +pub rx_missed_errors: __u64, +pub tx_aborted_errors: __u64, +pub tx_carrier_errors: __u64, +pub tx_fifo_errors: __u64, +pub tx_heartbeat_errors: __u64, +pub tx_window_errors: __u64, +pub rx_compressed: __u64, +pub tx_compressed: __u64, +pub rx_nohandler: __u64, +pub rx_otherhost_dropped: __u64, } -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 32usize], +pub struct rtnl_hw_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, } -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_mode_t = crate::ctypes::c_ushort; -pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; -pub type __kernel_uid_t = crate::ctypes::c_ushort; -pub type __kernel_gid_t = crate::ctypes::c_ushort; -pub type __kernel_old_dev_t = crate::ctypes::c_ushort; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_size_t = crate::ctypes::c_uint; -pub type __kernel_ssize_t = crate::ctypes::c_int; -pub type __kernel_ptrdiff_t = crate::ctypes::c_int; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], +pub struct rtnl_link_ifmap { +pub mem_start: __u64, +pub mem_end: __u64, +pub base_addr: __u64, +pub irq: __u16, +pub dma: __u8, +pub port: __u8, } -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_nl { -pub nl_family: __kernel_sa_family_t, -pub nl_pad: crate::ctypes::c_ushort, -pub nl_pid: __u32, -pub nl_groups: __u32, +pub struct ifla_bridge_id { +pub prio: [__u8; 2usize], +pub addr: [__u8; 6usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsghdr { -pub nlmsg_len: __u32, -pub nlmsg_type: __u16, -pub nlmsg_flags: __u16, -pub nlmsg_seq: __u32, -pub nlmsg_pid: __u32, +pub struct ifla_cacheinfo { +pub max_reasm_len: __u32, +pub tstamp: __u32, +pub reachable_time: __u32, +pub retrans_time: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsgerr { -pub error: crate::ctypes::c_int, -pub msg: nlmsghdr, +pub struct ifla_vlan_flags { +pub flags: __u32, +pub mask: __u32, } -impl nlmsgerr_attrs { -pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_qos_mapping { +pub from: __u32, +pub to: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tunnel_msg { +pub family: __u8, +pub flags: __u8, +pub reserved2: __u16, +pub ifindex: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vxlan_port_range { +pub low: __be16, +pub high: __be16, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_mac { +pub vf: __u32, +pub mac: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_broadcast { +pub broadcast: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan_info { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +pub vlan_proto: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_tx_rate { +pub vf: __u32, +pub rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rate { +pub vf: __u32, +pub min_tx_rate: __u32, +pub max_tx_rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_spoofchk { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_guid { +pub vf: __u32, +pub guid: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_link_state { +pub vf: __u32, +pub link_state: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rss_query_en { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_trust { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_port_vsi { +pub vsi_mgr_id: __u8, +pub vsi_type_id: [__u8; 3usize], +pub vsi_type_version: __u8, +pub pad: [__u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct if_stats_msg { +pub family: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub ifindex: __u32, +pub filter_mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_rmnet_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifaddrmsg { +pub ifa_family: __u8, +pub ifa_prefixlen: __u8, +pub ifa_flags: __u8, +pub ifa_scope: __u8, +pub ifa_index: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifa_cacheinfo { +pub ifa_prefered: __u32, +pub ifa_valid: __u32, +pub cstamp: __u32, +pub tstamp: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndmsg { +pub ndm_family: __u8, +pub ndm_pad1: __u8, +pub ndm_pad2: __u16, +pub ndm_ifindex: __s32, +pub ndm_state: __u16, +pub ndm_flags: __u8, +pub ndm_type: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nda_cacheinfo { +pub ndm_confirmed: __u32, +pub ndm_used: __u32, +pub ndm_updated: __u32, +pub ndm_refcnt: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_stats { +pub ndts_allocs: __u64, +pub ndts_destroys: __u64, +pub ndts_hash_grows: __u64, +pub ndts_res_failed: __u64, +pub ndts_lookups: __u64, +pub ndts_hits: __u64, +pub ndts_rcv_probes_mcast: __u64, +pub ndts_rcv_probes_ucast: __u64, +pub ndts_periodic_gc_runs: __u64, +pub ndts_forced_gc_runs: __u64, +pub ndts_table_fulls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndtmsg { +pub ndtm_family: __u8, +pub ndtm_pad1: __u8, +pub ndtm_pad2: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_config { +pub ndtc_key_len: __u16, +pub ndtc_entry_size: __u16, +pub ndtc_entries: __u32, +pub ndtc_last_flush: __u32, +pub ndtc_last_rand: __u32, +pub ndtc_hash_rnd: __u32, +pub ndtc_hash_mask: __u32, +pub ndtc_hash_chain_gc: __u32, +pub ndtc_proxy_qlen: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtattr { +pub rta_len: crate::ctypes::c_ushort, +pub rta_type: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtmsg { +pub rtm_family: crate::ctypes::c_uchar, +pub rtm_dst_len: crate::ctypes::c_uchar, +pub rtm_src_len: crate::ctypes::c_uchar, +pub rtm_tos: crate::ctypes::c_uchar, +pub rtm_table: crate::ctypes::c_uchar, +pub rtm_protocol: crate::ctypes::c_uchar, +pub rtm_scope: crate::ctypes::c_uchar, +pub rtm_type: crate::ctypes::c_uchar, +pub rtm_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnexthop { +pub rtnh_len: crate::ctypes::c_ushort, +pub rtnh_flags: crate::ctypes::c_uchar, +pub rtnh_hops: crate::ctypes::c_uchar, +pub rtnh_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug)] +pub struct rtvia { +pub rtvia_family: __kernel_sa_family_t, +pub rtvia_addr: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_cacheinfo { +pub rta_clntref: __u32, +pub rta_lastuse: __u32, +pub rta_expires: __s32, +pub rta_error: __u32, +pub rta_used: __u32, +pub rta_id: __u32, +pub rta_ts: __u32, +pub rta_tsage: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rta_session { +pub proto: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub u: rta_session__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { +pub sport: __u16, +pub dport: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { +pub type_: __u8, +pub code: __u8, +pub ident: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_mfc_stats { +pub mfcs_packets: __u64, +pub mfcs_bytes: __u64, +pub mfcs_wrong_if: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtgenmsg { +pub rtgen_family: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifinfomsg { +pub ifi_family: crate::ctypes::c_uchar, +pub __ifi_pad: crate::ctypes::c_uchar, +pub ifi_type: crate::ctypes::c_ushort, +pub ifi_index: crate::ctypes::c_int, +pub ifi_flags: crate::ctypes::c_uint, +pub ifi_change: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefixmsg { +pub prefix_family: crate::ctypes::c_uchar, +pub prefix_pad1: crate::ctypes::c_uchar, +pub prefix_pad2: crate::ctypes::c_ushort, +pub prefix_ifindex: crate::ctypes::c_int, +pub prefix_type: crate::ctypes::c_uchar, +pub prefix_len: crate::ctypes::c_uchar, +pub prefix_flags: crate::ctypes::c_uchar, +pub prefix_pad3: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefix_cacheinfo { +pub preferred_time: __u32, +pub valid_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcmsg { +pub tcm_family: crate::ctypes::c_uchar, +pub tcm__pad1: crate::ctypes::c_uchar, +pub tcm__pad2: crate::ctypes::c_ushort, +pub tcm_ifindex: crate::ctypes::c_int, +pub tcm_handle: __u32, +pub tcm_parent: __u32, +pub tcm_info: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nduseroptmsg { +pub nduseropt_family: crate::ctypes::c_uchar, +pub nduseropt_pad1: crate::ctypes::c_uchar, +pub nduseropt_opts_len: crate::ctypes::c_ushort, +pub nduseropt_ifindex: crate::ctypes::c_int, +pub nduseropt_icmp_type: __u8, +pub nduseropt_icmp_code: __u8, +pub nduseropt_pad2: crate::ctypes::c_ushort, +pub nduseropt_pad3: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcamsg { +pub tca_family: crate::ctypes::c_uchar, +pub tca__pad1: crate::ctypes::c_uchar, +pub tca__pad2: crate::ctypes::c_ushort, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const NETLINK_ROUTE: u32 = 0; +pub const NETLINK_UNUSED: u32 = 1; +pub const NETLINK_USERSOCK: u32 = 2; +pub const NETLINK_FIREWALL: u32 = 3; +pub const NETLINK_SOCK_DIAG: u32 = 4; +pub const NETLINK_NFLOG: u32 = 5; +pub const NETLINK_XFRM: u32 = 6; +pub const NETLINK_SELINUX: u32 = 7; +pub const NETLINK_ISCSI: u32 = 8; +pub const NETLINK_AUDIT: u32 = 9; +pub const NETLINK_FIB_LOOKUP: u32 = 10; +pub const NETLINK_CONNECTOR: u32 = 11; +pub const NETLINK_NETFILTER: u32 = 12; +pub const NETLINK_IP6_FW: u32 = 13; +pub const NETLINK_DNRTMSG: u32 = 14; +pub const NETLINK_KOBJECT_UEVENT: u32 = 15; +pub const NETLINK_GENERIC: u32 = 16; +pub const NETLINK_SCSITRANSPORT: u32 = 18; +pub const NETLINK_ECRYPTFS: u32 = 19; +pub const NETLINK_RDMA: u32 = 20; +pub const NETLINK_CRYPTO: u32 = 21; +pub const NETLINK_SMC: u32 = 22; +pub const NETLINK_INET_DIAG: u32 = 4; +pub const MAX_LINKS: u32 = 32; +pub const NLM_F_REQUEST: u32 = 1; +pub const NLM_F_MULTI: u32 = 2; +pub const NLM_F_ACK: u32 = 4; +pub const NLM_F_ECHO: u32 = 8; +pub const NLM_F_DUMP_INTR: u32 = 16; +pub const NLM_F_DUMP_FILTERED: u32 = 32; +pub const NLM_F_ROOT: u32 = 256; +pub const NLM_F_MATCH: u32 = 512; +pub const NLM_F_ATOMIC: u32 = 1024; +pub const NLM_F_DUMP: u32 = 768; +pub const NLM_F_REPLACE: u32 = 256; +pub const NLM_F_EXCL: u32 = 512; +pub const NLM_F_CREATE: u32 = 1024; +pub const NLM_F_APPEND: u32 = 2048; +pub const NLM_F_NONREC: u32 = 256; +pub const NLM_F_BULK: u32 = 512; +pub const NLM_F_CAPPED: u32 = 256; +pub const NLM_F_ACK_TLVS: u32 = 512; +pub const NLMSG_ALIGNTO: u32 = 4; +pub const NLMSG_NOOP: u32 = 1; +pub const NLMSG_ERROR: u32 = 2; +pub const NLMSG_DONE: u32 = 3; +pub const NLMSG_OVERRUN: u32 = 4; +pub const NLMSG_MIN_TYPE: u32 = 16; +pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; +pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; +pub const NETLINK_PKTINFO: u32 = 3; +pub const NETLINK_BROADCAST_ERROR: u32 = 4; +pub const NETLINK_NO_ENOBUFS: u32 = 5; +pub const NETLINK_RX_RING: u32 = 6; +pub const NETLINK_TX_RING: u32 = 7; +pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; +pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; +pub const NETLINK_CAP_ACK: u32 = 10; +pub const NETLINK_EXT_ACK: u32 = 11; +pub const NETLINK_GET_STRICT_CHK: u32 = 12; +pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; +pub const NET_MAJOR: u32 = 36; +pub const NLA_F_NESTED: u32 = 32768; +pub const NLA_F_NET_BYTEORDER: u32 = 16384; +pub const NLA_TYPE_MASK: i32 = -49153; +pub const NLA_ALIGNTO: u32 = 4; +pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; +pub const MACVLAN_FLAG_NODST: u32 = 2; +pub const IPVLAN_F_PRIVATE: u32 = 1; +pub const IPVLAN_F_VEPA: u32 = 2; +pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; +pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; +pub const MAX_VLAN_LIST_LEN: u32 = 1; +pub const PORT_PROFILE_MAX: u32 = 40; +pub const PORT_UUID_MAX: u32 = 16; +pub const PORT_SELF_VF: i32 = -1; +pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; +pub const XDP_FLAGS_SKB_MODE: u32 = 2; +pub const XDP_FLAGS_DRV_MODE: u32 = 4; +pub const XDP_FLAGS_HW_MODE: u32 = 8; +pub const XDP_FLAGS_REPLACE: u32 = 16; +pub const XDP_FLAGS_MODES: u32 = 14; +pub const XDP_FLAGS_MASK: u32 = 31; +pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; +pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; +pub const IFA_F_SECONDARY: u32 = 1; +pub const IFA_F_TEMPORARY: u32 = 1; +pub const IFA_F_NODAD: u32 = 2; +pub const IFA_F_OPTIMISTIC: u32 = 4; +pub const IFA_F_DADFAILED: u32 = 8; +pub const IFA_F_HOMEADDRESS: u32 = 16; +pub const IFA_F_DEPRECATED: u32 = 32; +pub const IFA_F_TENTATIVE: u32 = 64; +pub const IFA_F_PERMANENT: u32 = 128; +pub const IFA_F_MANAGETEMPADDR: u32 = 256; +pub const IFA_F_NOPREFIXROUTE: u32 = 512; +pub const IFA_F_MCAUTOJOIN: u32 = 1024; +pub const IFA_F_STABLE_PRIVACY: u32 = 2048; +pub const IFAPROT_UNSPEC: u32 = 0; +pub const IFAPROT_KERNEL_LO: u32 = 1; +pub const IFAPROT_KERNEL_RA: u32 = 2; +pub const IFAPROT_KERNEL_LL: u32 = 3; +pub const NTF_USE: u32 = 1; +pub const NTF_SELF: u32 = 2; +pub const NTF_MASTER: u32 = 4; +pub const NTF_PROXY: u32 = 8; +pub const NTF_EXT_LEARNED: u32 = 16; +pub const NTF_OFFLOADED: u32 = 32; +pub const NTF_STICKY: u32 = 64; +pub const NTF_ROUTER: u32 = 128; +pub const NTF_EXT_MANAGED: u32 = 1; +pub const NTF_EXT_LOCKED: u32 = 2; +pub const NUD_INCOMPLETE: u32 = 1; +pub const NUD_REACHABLE: u32 = 2; +pub const NUD_STALE: u32 = 4; +pub const NUD_DELAY: u32 = 8; +pub const NUD_PROBE: u32 = 16; +pub const NUD_FAILED: u32 = 32; +pub const NUD_NOARP: u32 = 64; +pub const NUD_PERMANENT: u32 = 128; +pub const NUD_NONE: u32 = 0; +pub const RTNL_FAMILY_IPMR: u32 = 128; +pub const RTNL_FAMILY_IP6MR: u32 = 129; +pub const RTNL_FAMILY_MAX: u32 = 129; +pub const RTA_ALIGNTO: u32 = 4; +pub const RTPROT_UNSPEC: u32 = 0; +pub const RTPROT_REDIRECT: u32 = 1; +pub const RTPROT_KERNEL: u32 = 2; +pub const RTPROT_BOOT: u32 = 3; +pub const RTPROT_STATIC: u32 = 4; +pub const RTPROT_GATED: u32 = 8; +pub const RTPROT_RA: u32 = 9; +pub const RTPROT_MRT: u32 = 10; +pub const RTPROT_ZEBRA: u32 = 11; +pub const RTPROT_BIRD: u32 = 12; +pub const RTPROT_DNROUTED: u32 = 13; +pub const RTPROT_XORP: u32 = 14; +pub const RTPROT_NTK: u32 = 15; +pub const RTPROT_DHCP: u32 = 16; +pub const RTPROT_MROUTED: u32 = 17; +pub const RTPROT_KEEPALIVED: u32 = 18; +pub const RTPROT_BABEL: u32 = 42; +pub const RTPROT_OPENR: u32 = 99; +pub const RTPROT_BGP: u32 = 186; +pub const RTPROT_ISIS: u32 = 187; +pub const RTPROT_OSPF: u32 = 188; +pub const RTPROT_RIP: u32 = 189; +pub const RTPROT_EIGRP: u32 = 192; +pub const RTM_F_NOTIFY: u32 = 256; +pub const RTM_F_CLONED: u32 = 512; +pub const RTM_F_EQUALIZE: u32 = 1024; +pub const RTM_F_PREFIX: u32 = 2048; +pub const RTM_F_LOOKUP_TABLE: u32 = 4096; +pub const RTM_F_FIB_MATCH: u32 = 8192; +pub const RTM_F_OFFLOAD: u32 = 16384; +pub const RTM_F_TRAP: u32 = 32768; +pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; +pub const RTNH_F_DEAD: u32 = 1; +pub const RTNH_F_PERVASIVE: u32 = 2; +pub const RTNH_F_ONLINK: u32 = 4; +pub const RTNH_F_OFFLOAD: u32 = 8; +pub const RTNH_F_LINKDOWN: u32 = 16; +pub const RTNH_F_UNRESOLVED: u32 = 32; +pub const RTNH_F_TRAP: u32 = 64; +pub const RTNH_COMPARE_MASK: u32 = 89; +pub const RTNH_ALIGNTO: u32 = 4; +pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; +pub const RTAX_FEATURE_ECN: u32 = 1; +pub const RTAX_FEATURE_SACK: u32 = 2; +pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; +pub const RTAX_FEATURE_ALLFRAG: u32 = 8; +pub const RTAX_FEATURE_MASK: u32 = 15; +pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; +pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; +pub const RTMGRP_LINK: u32 = 1; +pub const RTMGRP_NOTIFY: u32 = 2; +pub const RTMGRP_NEIGH: u32 = 4; +pub const RTMGRP_TC: u32 = 8; +pub const RTMGRP_IPV4_IFADDR: u32 = 16; +pub const RTMGRP_IPV4_MROUTE: u32 = 32; +pub const RTMGRP_IPV4_ROUTE: u32 = 64; +pub const RTMGRP_IPV4_RULE: u32 = 128; +pub const RTMGRP_IPV6_IFADDR: u32 = 256; +pub const RTMGRP_IPV6_MROUTE: u32 = 512; +pub const RTMGRP_IPV6_ROUTE: u32 = 1024; +pub const RTMGRP_IPV6_IFINFO: u32 = 2048; +pub const RTMGRP_DECnet_IFADDR: u32 = 4096; +pub const RTMGRP_DECnet_ROUTE: u32 = 16384; +pub const RTMGRP_IPV6_PREFIX: u32 = 131072; +pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; +pub const RTEXT_FILTER_VF: u32 = 1; +pub const RTEXT_FILTER_BRVLAN: u32 = 2; +pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; +pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; +pub const RTEXT_FILTER_MRP: u32 = 16; +pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; +pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; +pub const RTEXT_FILTER_MST: u32 = 128; +pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; +pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; +pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; +pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; +pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; +pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; +pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; +pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; +pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; +pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; +pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; +pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; +pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; +pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; +pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; +pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; +pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; +pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; +pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; +pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; +pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; +pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; +pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; +pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; +pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; +pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; +pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; +pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; +pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; +pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; +pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; +pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; +pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; +pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; +pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; +pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; +pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; +pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; +pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; +pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; +pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; +pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; +pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; +pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; +pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; +pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; +pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; +pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; +pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; +pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; +pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; +pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; +pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; +pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; +pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; +pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; +pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; +pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; +pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; +pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; +pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; +pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; +pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; +pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; +pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; +pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; +pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; +pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; +pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; +pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; +pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; +pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; +pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; +pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; +pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; +pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; +pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; +pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; +pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; +pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; +pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; +pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; +pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; +pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; +pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; +pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; +pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; +pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; +pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; +pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; +pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; +pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; +pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; +pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; +pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; +pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; +pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; +pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; +pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; +pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; +pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; +pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; +pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; +pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; +pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; +pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; +pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; +pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; +pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; +pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; +pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; +pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; +pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; +pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; +pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; +pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; +pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; +pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; +pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; +pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; +pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; +pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; +pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; +pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; +pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; +pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; +pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; +pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; +pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; +pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; +pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; +pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; +pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; +pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; +pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; +pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; +pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; +pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; +pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; +pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; +pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; +pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; +pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; +pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; +pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; +pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; +pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; +pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; +pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; +pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; +pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; +pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; +pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; +pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; +pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; +pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; +pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; +pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; +pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; +pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; +pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; +pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; +pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; +pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; +pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; +pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; +pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; +pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; +pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; +pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; +pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; +pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; +pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; +pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; +pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; +pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; +pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; +pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; +pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; +pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; +pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; +pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; +pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; +pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; +pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; +pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; +pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; +pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; +pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; +pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; +pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; +pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; +pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; +pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; +pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; +pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; +pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; +pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; +pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; +pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; +pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; +pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; +pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; +pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; +pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; +pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; +pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; +pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; +pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; +pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; +pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; +pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; +pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; +pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; +pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; +pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; +pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; +pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; +pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; +pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; +pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; +pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; +pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; +pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; +pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; +pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; +pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; +pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; +pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; +pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; +pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; +pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; +pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; +pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; +pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; +pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; +pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; +pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; +pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; +pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; +pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; +pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; +pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; +pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; +pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; +pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; +pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; +pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; +pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; +pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; +pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; +pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; +pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; +pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; +pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; +pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; +pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; +pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; +pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; +pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; +pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; +pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; +pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; +pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; +pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; +pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; +pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; +pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; +pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; +pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; +pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; +pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; +pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; +pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; +pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; +pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; +pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; +pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; +pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; +pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; +pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; +pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; +pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; +pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; +pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; +pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; +pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; +pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; +pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; +pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; +pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; +pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; +pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; +pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; +pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; +pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; +pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; +pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; +pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; +pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; +pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; +pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; +pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; +pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; +pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; +pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; +pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; +pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; +pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; +pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; +pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; +pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; +pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; +pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; +pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; +pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; +pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; +pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; +pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; +pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; +pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; +pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; +pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; +pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; +pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; +pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; +pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; +pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; +pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; +pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; +pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; +pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; +pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; +pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; +pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; +pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; +pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; +pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; +pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; +pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; +pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; +pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; +pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; +pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; +pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; +pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; +pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; +pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; +pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; +pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; +pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; +pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; +pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; +pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; +pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; +pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; +pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; +pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; +pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; +pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; +pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; +pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; +pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; +pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; +pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; +pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; +pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; +pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; +pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; +pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; +pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; +pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; +pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; +pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; +pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; +pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; +pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; +pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; +pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; +pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; +pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; +pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; +pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; +pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; +pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; +pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; +pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; +pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; +pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; +pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; +pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; +pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; +pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; +pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; +pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; +pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; +pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; +pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; +pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; +pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; +pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; +pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; +pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; +pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; +pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; +pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; +pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; +pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; +pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; +pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; +pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; +pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; +pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; +pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; +pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; +pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; +pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; +pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; +pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; +pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; +pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; +pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; +pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; +pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; +pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; +pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; +pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; +pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; +pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; +pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; +pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; +pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; +pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; +pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; +pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; +pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; +pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; +pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; +pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; +pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; +pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; +pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; +pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; +pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; +pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; +pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; +pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; +pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; +pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; +pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; +pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; +pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; +pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; +pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; +pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; +pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; +pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; +pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; +pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; +pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; +pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; +pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; +pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; +pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; +pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; +pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; +pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; +pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; +pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; +pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; +pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; +pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; +pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; +pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; +pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; +pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; +pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; +pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; +pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; +pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; +pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; +pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; +pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; +pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; +pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; +pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; +pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; +pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; +pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; +pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; +pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; +pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; +pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; +pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; +pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; +pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; +pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; +pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; +pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; +pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; +pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; +pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; +pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; +pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; +pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; +pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; +pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; +pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; +pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; +pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; +pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; +pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; +pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; +pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; +pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; +pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; +pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; +pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; +pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; +pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; +pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; +pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; +pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; +pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; +pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; +pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; +pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; +pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; +pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; +pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; +pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; +pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; +pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; +pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; +pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; +pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; +pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; +pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; +pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; +pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; +pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; +pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; +pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; +pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; +pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; +pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; +pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; +pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; +pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; +pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; +pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; +pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; +pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; +pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; +pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; +pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; +pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; +pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; +pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; +pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; +pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; +pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; +pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; +pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; +pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; +pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; +pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; +pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; +pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; +pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; +pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; +pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; +pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; +pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; +pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; +pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; +pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; +pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; +pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; +pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; +pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; +pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; +pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; +pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; +pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; +pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; +pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; +pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; +pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; +pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; +pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; +pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; +pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; +pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; +pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; +pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; +pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; +pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; +pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; +pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; +pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; +pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; +pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; +pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; +pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; +pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; +pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; +pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; +pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; +pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; +pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; +pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; +pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; +pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; +pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; +pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; +pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; +pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; +pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; +pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; +pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; +pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; +pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; +pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; +pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; +pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; +pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; +pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; +pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; +pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; +pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; +pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; +pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; +pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; +pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; +pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; +pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; +pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; +pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; +pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; +pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; +pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; +pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; +pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; +pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; +pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; +pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; +pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; +pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; +pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; +pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; +pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; +pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; +pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; +pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; +pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; +pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; +pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; +pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; +pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; +pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; +pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; +pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; +pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; +pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; +pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; +pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; +pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; +pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; +pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; +pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; +pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; +pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; +pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; +pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; +pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; +pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; +pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; +pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; +pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; +pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; +pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; +pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; +pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; +pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; +pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; +pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; +pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; +pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; +pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; +pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; +pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; +pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; +pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; +pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; +pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; +pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; +pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; +pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; +pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; +pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; +pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; +pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; +pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -365,29 +1500,6 @@ NLMSGERR_ATTR_MISS_NEST = 6, __NLMSGERR_ATTR_MAX = 7, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_pktinfo { -pub group: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_req { -pub nm_block_size: crate::ctypes::c_uint, -pub nm_block_nr: crate::ctypes::c_uint, -pub nm_frame_size: crate::ctypes::c_uint, -pub nm_frame_nr: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_hdr { -pub nm_status: crate::ctypes::c_uint, -pub nm_len: crate::ctypes::c_uint, -pub nm_group: __u32, -pub nm_pid: __u32, -pub nm_uid: __u32, -pub nm_gid: __u32, -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -398,8 +1510,6 @@ NL_MMAP_STATUS_COPY = 3, NL_MMAP_STATUS_SKIP = 4, } -pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; -pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -407,208 +1517,46 @@ NETLINK_UNCONNECTED = 0, NETLINK_CONNECTED = 1, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nlattr { -pub nla_len: __u16, -pub nla_type: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nla_bitfield32 { -pub value: __u32, -pub selector: __u32, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_attribute_type { -NL_ATTR_TYPE_INVALID = 0, -NL_ATTR_TYPE_FLAG = 1, -NL_ATTR_TYPE_U8 = 2, -NL_ATTR_TYPE_U16 = 3, -NL_ATTR_TYPE_U32 = 4, -NL_ATTR_TYPE_U64 = 5, -NL_ATTR_TYPE_S8 = 6, -NL_ATTR_TYPE_S16 = 7, -NL_ATTR_TYPE_S32 = 8, -NL_ATTR_TYPE_S64 = 9, -NL_ATTR_TYPE_BINARY = 10, -NL_ATTR_TYPE_STRING = 11, -NL_ATTR_TYPE_NUL_STRING = 12, -NL_ATTR_TYPE_NESTED = 13, -NL_ATTR_TYPE_NESTED_ARRAY = 14, -NL_ATTR_TYPE_BITFIELD32 = 15, -} -impl netlink_policy_type_attr { -pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_policy_type_attr { -NL_POLICY_TYPE_ATTR_UNSPEC = 0, -NL_POLICY_TYPE_ATTR_TYPE = 1, -NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, -NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, -NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, -NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, -NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, -NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, -NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, -NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, -NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, -NL_POLICY_TYPE_ATTR_PAD = 11, -NL_POLICY_TYPE_ATTR_MASK = 12, -__NL_POLICY_TYPE_ATTR_MAX = 13, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats { -pub rx_packets: __u32, -pub tx_packets: __u32, -pub rx_bytes: __u32, -pub tx_bytes: __u32, -pub rx_errors: __u32, -pub tx_errors: __u32, -pub rx_dropped: __u32, -pub tx_dropped: __u32, -pub multicast: __u32, -pub collisions: __u32, -pub rx_length_errors: __u32, -pub rx_over_errors: __u32, -pub rx_crc_errors: __u32, -pub rx_frame_errors: __u32, -pub rx_fifo_errors: __u32, -pub rx_missed_errors: __u32, -pub tx_aborted_errors: __u32, -pub tx_carrier_errors: __u32, -pub tx_fifo_errors: __u32, -pub tx_heartbeat_errors: __u32, -pub tx_window_errors: __u32, -pub rx_compressed: __u32, -pub tx_compressed: __u32, -pub rx_nohandler: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, -pub collisions: __u64, -pub rx_length_errors: __u64, -pub rx_over_errors: __u64, -pub rx_crc_errors: __u64, -pub rx_frame_errors: __u64, -pub rx_fifo_errors: __u64, -pub rx_missed_errors: __u64, -pub tx_aborted_errors: __u64, -pub tx_carrier_errors: __u64, -pub tx_fifo_errors: __u64, -pub tx_heartbeat_errors: __u64, -pub tx_window_errors: __u64, -pub rx_compressed: __u64, -pub tx_compressed: __u64, -pub rx_nohandler: __u64, -pub rx_otherhost_dropped: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_hw_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, +pub enum netlink_attribute_type { +NL_ATTR_TYPE_INVALID = 0, +NL_ATTR_TYPE_FLAG = 1, +NL_ATTR_TYPE_U8 = 2, +NL_ATTR_TYPE_U16 = 3, +NL_ATTR_TYPE_U32 = 4, +NL_ATTR_TYPE_U64 = 5, +NL_ATTR_TYPE_S8 = 6, +NL_ATTR_TYPE_S16 = 7, +NL_ATTR_TYPE_S32 = 8, +NL_ATTR_TYPE_S64 = 9, +NL_ATTR_TYPE_BINARY = 10, +NL_ATTR_TYPE_STRING = 11, +NL_ATTR_TYPE_NUL_STRING = 12, +NL_ATTR_TYPE_NESTED = 13, +NL_ATTR_TYPE_NESTED_ARRAY = 14, +NL_ATTR_TYPE_BITFIELD32 = 15, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_ifmap { -pub mem_start: __u64, -pub mem_end: __u64, -pub base_addr: __u64, -pub irq: __u16, -pub dma: __u8, -pub port: __u8, +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_policy_type_attr { +NL_POLICY_TYPE_ATTR_UNSPEC = 0, +NL_POLICY_TYPE_ATTR_TYPE = 1, +NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, +NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, +NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, +NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, +NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, +NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, +NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, +NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, +NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, +NL_POLICY_TYPE_ATTR_PAD = 11, +NL_POLICY_TYPE_ATTR_MASK = 12, +__NL_POLICY_TYPE_ATTR_MAX = 13, } -pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; -pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; -pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; -pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; -pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; -pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; -pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; -pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; -pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; -pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; -pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; -pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; -pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; -pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; -pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; -pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; -pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; -pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; -pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; -pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; -pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; -pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; -pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; -pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; -pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; -pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; -pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; -pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; -pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; -pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; -pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; -pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; -pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; -pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; -pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; -pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; -pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; -pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; -pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; -pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; -pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; -pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; -pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; -pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; -pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; -pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; -pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; -pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; -pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; -pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; -pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; -pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; -pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; -pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; -pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; -pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; -pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; -pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; -pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; -pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; -pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; -pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; -pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; -pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; -pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -680,11 +1628,6 @@ IFLA_GRO_IPV4_MAX_SIZE = 64, __IFLA_MAX = 65, } -pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; -pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; -pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; -pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; -pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -694,9 +1637,6 @@ IFLA_PROTO_DOWN_REASON_VALUE = 2, __IFLA_PROTO_DOWN_REASON_CNT = 3, } -pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; -pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; -pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -705,17 +1645,6 @@ IFLA_INET_CONF = 1, __IFLA_INET_MAX = 2, } -pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; -pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; -pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; -pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; -pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; -pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; -pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; -pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; -pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; -pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; -pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -741,55 +1670,6 @@ IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, IN6_ADDR_GEN_MODE_RANDOM = 3, } -pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; -pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; -pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; -pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; -pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; -pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; -pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; -pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; -pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; -pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; -pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; -pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; -pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; -pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; -pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; -pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; -pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; -pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; -pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; -pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; -pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; -pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; -pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; -pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; -pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; -pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; -pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; -pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; -pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; -pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; -pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; -pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; -pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; -pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; -pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; -pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; -pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; -pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; -pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; -pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; -pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; -pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; -pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; -pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; -pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; -pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; -pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; -pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; -pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -826,83 +1706,31 @@ IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29, IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30, IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, -IFLA_BR_MCAST_QUERIER_INTVL = 32, -IFLA_BR_MCAST_QUERY_INTVL = 33, -IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, -IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, -IFLA_BR_NF_CALL_IPTABLES = 36, -IFLA_BR_NF_CALL_IP6TABLES = 37, -IFLA_BR_NF_CALL_ARPTABLES = 38, -IFLA_BR_VLAN_DEFAULT_PVID = 39, -IFLA_BR_PAD = 40, -IFLA_BR_VLAN_STATS_ENABLED = 41, -IFLA_BR_MCAST_STATS_ENABLED = 42, -IFLA_BR_MCAST_IGMP_VERSION = 43, -IFLA_BR_MCAST_MLD_VERSION = 44, -IFLA_BR_VLAN_STATS_PER_PORT = 45, -IFLA_BR_MULTI_BOOLOPT = 46, -IFLA_BR_MCAST_QUERIER_STATE = 47, -__IFLA_BR_MAX = 48, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_bridge_id { -pub prio: [__u8; 2usize], -pub addr: [__u8; 6usize], -} -pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; -pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -BRIDGE_MODE_UNSPEC = 0, -BRIDGE_MODE_HAIRPIN = 1, -} -pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; -pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; -pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; -pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; -pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; -pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; -pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; -pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; -pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; -pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; -pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; -pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; -pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; -pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; -pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; -pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; -pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; -pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; -pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; -pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; -pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; -pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; -pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; -pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; -pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; -pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; -pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; -pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; -pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; -pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; -pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; -pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; -pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; -pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; -pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; -pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; -pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; -pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; -pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; -pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; -pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; -pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +IFLA_BR_MCAST_QUERIER_INTVL = 32, +IFLA_BR_MCAST_QUERY_INTVL = 33, +IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, +IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, +IFLA_BR_NF_CALL_IPTABLES = 36, +IFLA_BR_NF_CALL_IP6TABLES = 37, +IFLA_BR_NF_CALL_ARPTABLES = 38, +IFLA_BR_VLAN_DEFAULT_PVID = 39, +IFLA_BR_PAD = 40, +IFLA_BR_VLAN_STATS_ENABLED = 41, +IFLA_BR_MCAST_STATS_ENABLED = 42, +IFLA_BR_MCAST_IGMP_VERSION = 43, +IFLA_BR_MCAST_MLD_VERSION = 44, +IFLA_BR_VLAN_STATS_PER_PORT = 45, +IFLA_BR_MULTI_BOOLOPT = 46, +IFLA_BR_MCAST_QUERIER_STATE = 47, +__IFLA_BR_MAX = 48, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +BRIDGE_MODE_UNSPEC = 0, +BRIDGE_MODE_HAIRPIN = 1, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -952,21 +1780,6 @@ IFLA_BRPORT_MCAST_MAX_GROUPS = 42, __IFLA_BRPORT_MAX = 43, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_cacheinfo { -pub max_reasm_len: __u32, -pub tstamp: __u32, -pub reachable_time: __u32, -pub retrans_time: __u32, -} -pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; -pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; -pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; -pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; -pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; -pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; -pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -979,13 +1792,6 @@ IFLA_INFO_SLAVE_DATA = 5, __IFLA_INFO_MAX = 6, } -pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; -pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; -pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; -pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; -pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; -pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; -pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -998,15 +1804,6 @@ IFLA_VLAN_PROTOCOL = 5, __IFLA_VLAN_MAX = 6, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; -pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; -pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1015,22 +1812,6 @@ IFLA_VLAN_QOS_MAPPING = 1, __IFLA_VLAN_QOS_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_qos_mapping { -pub from: __u32, -pub to: __u32, -} -pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; -pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; -pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; -pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; -pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; -pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; -pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; -pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; -pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; -pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1065,9 +1846,6 @@ MACVLAN_MACADDR_FLUSH = 2, MACVLAN_MACADDR_SET = 3, } -pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; -pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; -pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1076,9 +1854,6 @@ IFLA_VRF_TABLE = 1, __IFLA_VRF_MAX = 2, } -pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; -pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; -pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1087,23 +1862,6 @@ IFLA_VRF_PORT_TABLE = 1, __IFLA_VRF_PORT_MAX = 2, } -pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; -pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; -pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; -pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; -pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; -pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; -pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; -pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; -pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; -pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; -pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; -pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; -pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; -pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; -pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; -pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; -pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1126,11 +1884,6 @@ IFLA_MACSEC_OFFLOAD = 15, __IFLA_MACSEC_MAX = 16, } -pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; -pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; -pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; -pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; -pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1141,9 +1894,6 @@ IFLA_XFRM_COLLECT_METADATA = 3, __IFLA_XFRM_MAX = 4, } -impl macsec_validation_type { -pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1153,9 +1903,6 @@ MACSEC_VALIDATE_STRICT = 2, __MACSEC_VALIDATE_END = 3, } -impl macsec_offload { -pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1165,10 +1912,6 @@ MACSEC_OFFLOAD_MAC = 2, __MACSEC_OFFLOAD_END = 3, } -pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; -pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; -pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; -pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1187,25 +1930,6 @@ IPVLAN_MODE_L3S = 2, IPVLAN_MODE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tunnel_msg { -pub family: __u8, -pub flags: __u8, -pub reserved2: __u16, -pub ifindex: __u32, -} -pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; -pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; -pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; -pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; -pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; -pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; -pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; -pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; -pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1222,13 +1946,6 @@ VNIFILTER_ENTRY_STATS_PAD = 9, __VNIFILTER_ENTRY_STATS_MAX = 10, } -pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; -pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; -pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; -pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; -pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; -pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1241,9 +1958,6 @@ VXLAN_VNIFILTER_ENTRY_STATS = 5, __VXLAN_VNIFILTER_ENTRY_MAX = 6, } -pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; -pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1252,38 +1966,6 @@ VXLAN_VNIFILTER_ENTRY = 1, __VXLAN_VNIFILTER_MAX = 2, } -pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; -pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; -pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; -pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; -pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; -pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; -pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; -pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; -pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; -pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; -pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; -pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; -pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; -pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; -pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; -pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; -pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; -pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; -pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; -pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; -pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; -pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; -pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; -pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; -pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; -pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; -pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; -pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; -pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; -pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1321,15 +2003,6 @@ IFLA_VXLAN_VNIFILTER = 30, __IFLA_VXLAN_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vxlan_port_range { -pub low: __be16, -pub high: __be16, -} -impl ifla_vxlan_df { -pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1339,22 +2012,6 @@ VXLAN_DF_INHERIT = 2, __VXLAN_DF_END = 3, } -pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; -pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; -pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; -pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; -pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; -pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; -pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; -pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; -pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; -pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; -pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; -pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; -pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; -pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1376,9 +2033,6 @@ IFLA_GENEVE_INNER_PROTO_INHERIT = 14, __IFLA_GENEVE_MAX = 15, } -impl ifla_geneve_df { -pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1388,12 +2042,6 @@ GENEVE_DF_INHERIT = 2, __GENEVE_DF_END = 3, } -pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; -pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; -pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; -pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; -pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; -pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1405,9 +2053,6 @@ IFLA_BAREUDP_MULTIPROTO_MODE = 4, __IFLA_BAREUDP_MAX = 5, } -pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; -pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; -pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1423,60 +2068,19 @@ GTP_ROLE_GGSN = 0, GTP_ROLE_SGSN = 1, } -pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; -pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; -pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; -pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; -pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; -pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; -pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; -pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub enum _bindgen_ty_25 { IFLA_GTP_UNSPEC = 0, IFLA_GTP_FD0 = 1, -IFLA_GTP_FD1 = 2, -IFLA_GTP_PDP_HASHSIZE = 3, -IFLA_GTP_ROLE = 4, -IFLA_GTP_CREATE_SOCKETS = 5, -IFLA_GTP_RESTART_COUNT = 6, -__IFLA_GTP_MAX = 7, -} -pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; -pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; -pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; -pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; -pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; -pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; -pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; -pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; -pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; -pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; -pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; -pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; -pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; -pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; -pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; -pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; -pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; -pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; -pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; -pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; -pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; -pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; -pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; -pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; -pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; -pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; -pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; -pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; -pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; -pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; -pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; -pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; -pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +IFLA_GTP_FD1 = 2, +IFLA_GTP_PDP_HASHSIZE = 3, +IFLA_GTP_ROLE = 4, +IFLA_GTP_CREATE_SOCKETS = 5, +IFLA_GTP_RESTART_COUNT = 6, +__IFLA_GTP_MAX = 7, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1515,13 +2119,6 @@ IFLA_BOND_NS_IP6_TARGET = 31, __IFLA_BOND_MAX = 32, } -pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; -pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; -pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; -pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; -pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1534,17 +2131,6 @@ IFLA_BOND_AD_INFO_PARTNER_MAC = 5, __IFLA_BOND_AD_INFO_MAX = 6, } -pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; -pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; -pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; -pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; -pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; -pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; -pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; -pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; -pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1561,9 +2147,6 @@ IFLA_BOND_SLAVE_PRIO = 9, __IFLA_BOND_SLAVE_MAX = 10, } -pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; -pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; -pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1572,21 +2155,6 @@ IFLA_VF_INFO = 1, __IFLA_VF_INFO_MAX = 2, } -pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; -pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; -pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; -pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; -pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; -pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; -pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; -pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; -pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; -pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; -pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; -pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; -pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; -pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; -pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1607,27 +2175,6 @@ IFLA_VF_BROADCAST = 13, __IFLA_VF_MAX = 14, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_mac { -pub vf: __u32, -pub mac: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_broadcast { -pub broadcast: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -} -pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; -pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; -pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1636,43 +2183,6 @@ IFLA_VF_VLAN_INFO = 1, __IFLA_VF_VLAN_INFO_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan_info { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -pub vlan_proto: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_tx_rate { -pub vf: __u32, -pub rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rate { -pub vf: __u32, -pub min_tx_rate: __u32, -pub max_tx_rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_spoofchk { -pub vf: __u32, -pub setting: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_guid { -pub vf: __u32, -pub guid: __u64, -} -pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; -pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; -pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; -pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1682,28 +2192,6 @@ IFLA_VF_LINK_STATE_DISABLE = 2, __IFLA_VF_LINK_STATE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_link_state { -pub vf: __u32, -pub link_state: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rss_query_en { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; -pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; -pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; -pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; -pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; -pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; -pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; -pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; -pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; -pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1719,15 +2207,6 @@ IFLA_VF_STATS_TX_DROPPED = 8, __IFLA_VF_STATS_MAX = 9, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_trust { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; -pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; -pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1736,15 +2215,6 @@ IFLA_VF_PORT = 1, __IFLA_VF_PORT_MAX = 2, } -pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; -pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; -pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; -pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; -pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; -pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; -pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; -pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; -pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1759,10 +2229,6 @@ IFLA_PORT_RESPONSE = 7, __IFLA_PORT_MAX = 8, } -pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; -pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; -pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; -pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1772,19 +2238,6 @@ PORT_REQUEST_ASSOCIATE = 2, PORT_REQUEST_DISASSOCIATE = 3, } -pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; -pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; -pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; -pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; -pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; -pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; -pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; -pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; -pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; -pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; -pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1803,19 +2256,6 @@ PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, PORT_PROFILE_RESPONSE_ERROR = 261, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_port_vsi { -pub vsi_mgr_id: __u8, -pub vsi_type_id: [__u8; 3usize], -pub vsi_type_version: __u8, -pub pad: [__u8; 3usize], -} -pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; -pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; -pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; -pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; -pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1826,8 +2266,6 @@ IFLA_IPOIB_UMCAST = 3, __IFLA_IPOIB_MAX = 4, } -pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; -pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1835,9 +2273,6 @@ IPOIB_MODE_DATAGRAM = 0, IPOIB_MODE_CONNECTED = 1, } -pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; -pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; -pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1846,15 +2281,6 @@ HSR_PROTOCOL_PRP = 1, HSR_PROTOCOL_MAX = 2, } -pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; -pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; -pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; -pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; -pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; -pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; -pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; -pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; -pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1869,22 +2295,6 @@ IFLA_HSR_PROTOCOL = 7, __IFLA_HSR_MAX = 8, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_stats_msg { -pub family: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub ifindex: __u32, -pub filter_mask: __u32, -} -pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; -pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; -pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; -pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; -pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; -pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; -pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1897,10 +2307,6 @@ IFLA_STATS_AF_SPEC = 5, __IFLA_STATS_MAX = 6, } -pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; -pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; -pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1910,10 +2316,6 @@ IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, __IFLA_STATS_GETSET_MAX = 3, } -pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; -pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; -pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; -pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1923,11 +2325,6 @@ LINK_XSTATS_TYPE_BOND = 2, __LINK_XSTATS_TYPE_MAX = 3, } -pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; -pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1938,10 +2335,6 @@ IFLA_OFFLOAD_XSTATS_L3_STATS = 3, __IFLA_OFFLOAD_XSTATS_MAX = 4, } -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; -pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1951,11 +2344,6 @@ IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, } -pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; -pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; -pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; -pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; -pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1966,16 +2354,6 @@ XDP_ATTACHED_HW = 3, XDP_ATTACHED_MULTI = 4, } -pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; -pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; -pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; -pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; -pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; -pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; -pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; -pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; -pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; -pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1991,13 +2369,6 @@ IFLA_XDP_EXPECTED_FD = 8, __IFLA_XDP_MAX = 9, } -pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; -pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; -pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; -pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; -pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; -pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; -pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2010,17 +2381,6 @@ IFLA_EVENT_IGMP_RESEND = 5, IFLA_EVENT_BONDING_OPTIONS = 6, } -pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; -pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; -pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; -pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; -pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; -pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; -pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; -pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; -pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; -pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; -pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2036,11 +2396,7 @@ IFLA_TUN_NUM_QUEUES = 8, IFLA_TUN_NUM_DISABLED_QUEUES = 9, __IFLA_TUN_MAX = 10, -} -pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; -pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; -pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; -pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2050,15 +2406,6 @@ IFLA_RMNET_FLAGS = 2, __IFLA_RMNET_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_rmnet_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; -pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; -pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2067,9 +2414,6 @@ IFLA_MCTP_NET = 1, __IFLA_MCTP_MAX = 2, } -pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; -pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; -pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2078,28 +2422,6 @@ IFLA_DSA_MASTER = 1, __IFLA_DSA_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifaddrmsg { -pub ifa_family: __u8, -pub ifa_prefixlen: __u8, -pub ifa_flags: __u8, -pub ifa_scope: __u8, -pub ifa_index: __u32, -} -pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; -pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; -pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; -pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; -pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; -pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; -pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; -pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; -pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; -pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; -pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; -pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; -pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2118,44 +2440,6 @@ IFA_PROTO = 11, __IFA_MAX = 12, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifa_cacheinfo { -pub ifa_prefered: __u32, -pub ifa_valid: __u32, -pub cstamp: __u32, -pub tstamp: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndmsg { -pub ndm_family: __u8, -pub ndm_pad1: __u8, -pub ndm_pad2: __u16, -pub ndm_ifindex: __s32, -pub ndm_state: __u16, -pub ndm_flags: __u8, -pub ndm_type: __u8, -} -pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; -pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; -pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; -pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; -pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; -pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; -pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; -pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; -pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; -pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; -pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; -pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; -pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; -pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; -pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; -pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; -pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; -pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; -pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2180,50 +2464,6 @@ NDA_NDM_FLAGS_MASK = 17, __NDA_MAX = 18, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nda_cacheinfo { -pub ndm_confirmed: __u32, -pub ndm_used: __u32, -pub ndm_updated: __u32, -pub ndm_refcnt: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_stats { -pub ndts_allocs: __u64, -pub ndts_destroys: __u64, -pub ndts_hash_grows: __u64, -pub ndts_res_failed: __u64, -pub ndts_lookups: __u64, -pub ndts_hits: __u64, -pub ndts_rcv_probes_mcast: __u64, -pub ndts_rcv_probes_ucast: __u64, -pub ndts_periodic_gc_runs: __u64, -pub ndts_forced_gc_runs: __u64, -pub ndts_table_fulls: __u64, -} -pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; -pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; -pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; -pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; -pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; -pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; -pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; -pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; -pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; -pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; -pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; -pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; -pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; -pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; -pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; -pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; -pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; -pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; -pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; -pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; -pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2250,37 +2490,6 @@ NDTPA_INTERVAL_PROBE_TIME_MS = 19, __NDTPA_MAX = 20, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndtmsg { -pub ndtm_family: __u8, -pub ndtm_pad1: __u8, -pub ndtm_pad2: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_config { -pub ndtc_key_len: __u16, -pub ndtc_entry_size: __u16, -pub ndtc_entries: __u32, -pub ndtc_last_flush: __u32, -pub ndtc_last_rand: __u32, -pub ndtc_hash_rnd: __u32, -pub ndtc_hash_mask: __u32, -pub ndtc_hash_chain_gc: __u32, -pub ndtc_proxy_qlen: __u32, -} -pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; -pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; -pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; -pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; -pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; -pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; -pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; -pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; -pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; -pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; -pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2297,8 +2506,6 @@ NDTA_PAD = 9, __NDTA_MAX = 10, } -pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; -pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2306,10 +2513,6 @@ FDB_NOTIFY_BIT = 1, FDB_NOTIFY_INACTIVE_BIT = 2, } -pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; -pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; -pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; -pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2319,79 +2522,6 @@ NFEA_DONT_REFRESH = 2, __NFEA_MAX = 3, } -pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; -pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; -pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; -pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; -pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; -pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; -pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; -pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; -pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; -pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; -pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; -pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; -pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; -pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; -pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; -pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; -pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; -pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; -pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; -pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; -pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; -pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; -pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; -pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; -pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; -pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; -pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; -pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; -pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; -pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; -pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; -pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; -pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; -pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; -pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; -pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; -pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; -pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; -pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; -pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; -pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; -pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; -pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; -pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; -pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; -pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; -pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; -pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; -pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; -pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; -pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; -pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; -pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; -pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; -pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; -pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; -pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; -pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; -pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; -pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; -pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; -pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; -pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; -pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; -pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; -pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; -pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; -pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; -pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; -pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; -pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2458,49 +2588,17 @@ RTM_NEWLINKPROP = 108, RTM_DELLINKPROP = 109, RTM_GETLINKPROP = 110, -RTM_NEWVLAN = 112, -RTM_DELVLAN = 113, -RTM_GETVLAN = 114, -RTM_NEWNEXTHOPBUCKET = 116, -RTM_DELNEXTHOPBUCKET = 117, -RTM_GETNEXTHOPBUCKET = 118, -RTM_NEWTUNNEL = 120, -RTM_DELTUNNEL = 121, -RTM_GETTUNNEL = 122, -__RTM_MAX = 123, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtattr { -pub rta_len: crate::ctypes::c_ushort, -pub rta_type: crate::ctypes::c_ushort, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtmsg { -pub rtm_family: crate::ctypes::c_uchar, -pub rtm_dst_len: crate::ctypes::c_uchar, -pub rtm_src_len: crate::ctypes::c_uchar, -pub rtm_tos: crate::ctypes::c_uchar, -pub rtm_table: crate::ctypes::c_uchar, -pub rtm_protocol: crate::ctypes::c_uchar, -pub rtm_scope: crate::ctypes::c_uchar, -pub rtm_type: crate::ctypes::c_uchar, -pub rtm_flags: crate::ctypes::c_uint, +RTM_NEWVLAN = 112, +RTM_DELVLAN = 113, +RTM_GETVLAN = 114, +RTM_NEWNEXTHOPBUCKET = 116, +RTM_DELNEXTHOPBUCKET = 117, +RTM_GETNEXTHOPBUCKET = 118, +RTM_NEWTUNNEL = 120, +RTM_DELTUNNEL = 121, +RTM_GETTUNNEL = 122, +__RTM_MAX = 123, } -pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; -pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; -pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; -pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; -pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; -pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; -pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; -pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; -pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; -pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; -pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; -pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; -pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2577,51 +2675,6 @@ RTA_NH_ID = 30, __RTA_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnexthop { -pub rtnh_len: crate::ctypes::c_ushort, -pub rtnh_flags: crate::ctypes::c_uchar, -pub rtnh_hops: crate::ctypes::c_uchar, -pub rtnh_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug)] -pub struct rtvia { -pub rtvia_family: __kernel_sa_family_t, -pub rtvia_addr: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_cacheinfo { -pub rta_clntref: __u32, -pub rta_lastuse: __u32, -pub rta_expires: __s32, -pub rta_error: __u32, -pub rta_used: __u32, -pub rta_id: __u32, -pub rta_ts: __u32, -pub rta_tsage: __u32, -} -pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; -pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; -pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; -pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; -pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; -pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; -pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; -pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; -pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; -pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; -pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; -pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; -pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; -pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; -pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; -pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; -pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; -pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; -pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2646,72 +2699,6 @@ RTAX_FASTOPEN_NO_COOKIE = 17, __RTAX_MAX = 18, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rta_session { -pub proto: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub u: rta_session__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union rta_session__bindgen_ty_1 { -pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, -pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, -pub spi: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { -pub sport: __u16, -pub dport: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { -pub type_: __u8, -pub code: __u8, -pub ident: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_mfc_stats { -pub mfcs_packets: __u64, -pub mfcs_bytes: __u64, -pub mfcs_wrong_if: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtgenmsg { -pub rtgen_family: crate::ctypes::c_uchar, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifinfomsg { -pub ifi_family: crate::ctypes::c_uchar, -pub __ifi_pad: crate::ctypes::c_uchar, -pub ifi_type: crate::ctypes::c_ushort, -pub ifi_index: crate::ctypes::c_int, -pub ifi_flags: crate::ctypes::c_uint, -pub ifi_change: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefixmsg { -pub prefix_family: crate::ctypes::c_uchar, -pub prefix_pad1: crate::ctypes::c_uchar, -pub prefix_pad2: crate::ctypes::c_ushort, -pub prefix_ifindex: crate::ctypes::c_int, -pub prefix_type: crate::ctypes::c_uchar, -pub prefix_len: crate::ctypes::c_uchar, -pub prefix_flags: crate::ctypes::c_uchar, -pub prefix_pad3: crate::ctypes::c_uchar, -} -pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; -pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; -pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; -pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2721,41 +2708,6 @@ PREFIX_CACHEINFO = 2, __PREFIX_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefix_cacheinfo { -pub preferred_time: __u32, -pub valid_time: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcmsg { -pub tcm_family: crate::ctypes::c_uchar, -pub tcm__pad1: crate::ctypes::c_uchar, -pub tcm__pad2: crate::ctypes::c_ushort, -pub tcm_ifindex: crate::ctypes::c_int, -pub tcm_handle: __u32, -pub tcm_parent: __u32, -pub tcm_info: __u32, -} -pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; -pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; -pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; -pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; -pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; -pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; -pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; -pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; -pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; -pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; -pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; -pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; -pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; -pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; -pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; -pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; -pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; -pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2779,21 +2731,6 @@ TCA_EXT_WARN_MSG = 16, __TCA_MAX = 17, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nduseroptmsg { -pub nduseropt_family: crate::ctypes::c_uchar, -pub nduseropt_pad1: crate::ctypes::c_uchar, -pub nduseropt_opts_len: crate::ctypes::c_ushort, -pub nduseropt_ifindex: crate::ctypes::c_int, -pub nduseropt_icmp_type: __u8, -pub nduseropt_icmp_code: __u8, -pub nduseropt_pad2: crate::ctypes::c_ushort, -pub nduseropt_pad3: crate::ctypes::c_uint, -} -pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; -pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; -pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2845,20 +2782,6 @@ RTNLGRP_STATS = 36, __RTNLGRP_MAX = 37, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcamsg { -pub tca_family: crate::ctypes::c_uchar, -pub tca__pad1: crate::ctypes::c_uchar, -pub tca__pad2: crate::ctypes::c_ushort, -} -pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; -pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; -pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; -pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; -pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; -pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; -pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2871,3 +2794,61 @@ TCA_ROOT_EXT_WARN_MSG = 5, __TCA_ROOT_MAX = 6, } +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union rta_session__bindgen_ty_1 { +pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, +pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, +pub spi: __u32, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl nlmsgerr_attrs { +pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +} +impl netlink_policy_type_attr { +pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; +} +impl macsec_validation_type { +pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; +} +impl macsec_offload { +pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; +} +impl ifla_vxlan_df { +pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; +} +impl ifla_geneve_df { +pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/arm/net.rs temporalio-1.3.0/vendor/linux-raw-sys/src/arm/net.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/arm/net.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/arm/net.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1836 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type socklen_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_addr { +pub s_addr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq { +pub imr_multiaddr: in_addr, +pub imr_interface: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreqn { +pub imr_multiaddr: in_addr, +pub imr_address: in_addr, +pub imr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq_source { +pub imr_multiaddr: __be32, +pub imr_interface: __be32, +pub imr_sourceaddr: __be32, +} +#[repr(C)] +pub struct ip_msfilter { +pub imsf_multiaddr: __be32, +pub imsf_interface: __be32, +pub imsf_fmode: __u32, +pub imsf_numsrc: __u32, +pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, +} +#[repr(C)] +pub struct ip_msfilter__bindgen_ty_1 { +pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, +pub __bindgen_anon_1: __BindgenUnionField, +pub bindgen_union_field: u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { +pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub imsf_slist_flex: __IncompleteArrayField<__be32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_req { +pub gr_interface: __u32, +pub gr_group: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_source_req { +pub gsr_interface: __u32, +pub gsr_group: __kernel_sockaddr_storage, +pub gsr_source: __kernel_sockaddr_storage, +} +#[repr(C)] +pub struct group_filter { +pub __bindgen_anon_1: group_filter__bindgen_ty_1, +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u32; 67usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { +pub gf_interface_aux: __u32, +pub gf_group_aux: __kernel_sockaddr_storage, +pub gf_fmode_aux: __u32, +pub gf_numsrc_aux: __u32, +pub gf_slist: [__kernel_sockaddr_storage; 1usize], +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { +pub gf_interface: __u32, +pub gf_group: __kernel_sockaddr_storage, +pub gf_fmode: __u32, +pub gf_numsrc: __u32, +pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_pktinfo { +pub ipi_ifindex: crate::ctypes::c_int, +pub ipi_spec_dst: in_addr, +pub ipi_addr: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_in { +pub sin_family: __kernel_sa_family_t, +pub sin_port: __be16, +pub sin_addr: in_addr, +pub __pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct iphdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub tos: __u8, +pub tot_len: __be16, +pub id: __be16, +pub frag_off: __be16, +pub ttl: __u8, +pub protocol: __u8, +pub check: __sum16, +pub __bindgen_anon_1: iphdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_auth_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub reserved: __be16, +pub spi: __be32, +pub seq_no: __be32, +pub auth_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_esp_hdr { +pub spi: __be32, +pub seq_no: __be32, +pub enc_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_comp_hdr { +pub nexthdr: __u8, +pub flags: __u8, +pub cpi: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_beet_phdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub padlen: __u8, +pub reserved: __u8, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_addr { +pub in6_u: in6_addr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr_in6 { +pub sin6_family: crate::ctypes::c_ushort, +pub sin6_port: __be16, +pub sin6_flowinfo: __be32, +pub sin6_addr: in6_addr, +pub sin6_scope_id: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6_mreq { +pub ipv6mr_multiaddr: in6_addr, +pub ipv6mr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_flowlabel_req { +pub flr_dst: in6_addr, +pub flr_label: __be32, +pub flr_action: __u8, +pub flr_share: __u8, +pub flr_flags: __u16, +pub flr_expires: __u16, +pub flr_linger: __u16, +pub __flr_pad: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_pktinfo { +pub ipi6_addr: in6_addr, +pub ipi6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ip6_mtuinfo { +pub ip6m_addr: sockaddr_in6, +pub ip6m_mtu: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_ifreq { +pub ifr6_addr: in6_addr, +pub ifr6_prefixlen: __u32, +pub ifr6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_rt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub type_: __u8, +pub segments_left: __u8, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_opt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +} +#[repr(C)] +pub struct rt0_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rt2_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: in6_addr, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct ipv6_destopt_hao { +pub type_: __u8, +pub length: __u8, +pub addr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub flow_lbl: [__u8; 3usize], +pub payload_len: __be16, +pub nexthdr: __u8, +pub hop_limit: __u8, +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcphdr { +pub source: __be16, +pub dest: __be16, +pub seq: __be32, +pub ack_seq: __be32, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub window: __be16, +pub check: __sum16, +pub urg_ptr: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_opt { +pub opt_code: __u32, +pub opt_val: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_window { +pub snd_wl1: __u32, +pub snd_wnd: __u32, +pub max_window: __u32, +pub rcv_wnd: __u32, +pub rcv_wup: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_info { +pub tcpi_state: __u8, +pub tcpi_ca_state: __u8, +pub tcpi_retransmits: __u8, +pub tcpi_probes: __u8, +pub tcpi_backoff: __u8, +pub tcpi_options: __u8, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub tcpi_rto: __u32, +pub tcpi_ato: __u32, +pub tcpi_snd_mss: __u32, +pub tcpi_rcv_mss: __u32, +pub tcpi_unacked: __u32, +pub tcpi_sacked: __u32, +pub tcpi_lost: __u32, +pub tcpi_retrans: __u32, +pub tcpi_fackets: __u32, +pub tcpi_last_data_sent: __u32, +pub tcpi_last_ack_sent: __u32, +pub tcpi_last_data_recv: __u32, +pub tcpi_last_ack_recv: __u32, +pub tcpi_pmtu: __u32, +pub tcpi_rcv_ssthresh: __u32, +pub tcpi_rtt: __u32, +pub tcpi_rttvar: __u32, +pub tcpi_snd_ssthresh: __u32, +pub tcpi_snd_cwnd: __u32, +pub tcpi_advmss: __u32, +pub tcpi_reordering: __u32, +pub tcpi_rcv_rtt: __u32, +pub tcpi_rcv_space: __u32, +pub tcpi_total_retrans: __u32, +pub tcpi_pacing_rate: __u64, +pub tcpi_max_pacing_rate: __u64, +pub tcpi_bytes_acked: __u64, +pub tcpi_bytes_received: __u64, +pub tcpi_segs_out: __u32, +pub tcpi_segs_in: __u32, +pub tcpi_notsent_bytes: __u32, +pub tcpi_min_rtt: __u32, +pub tcpi_data_segs_in: __u32, +pub tcpi_data_segs_out: __u32, +pub tcpi_delivery_rate: __u64, +pub tcpi_busy_time: __u64, +pub tcpi_rwnd_limited: __u64, +pub tcpi_sndbuf_limited: __u64, +pub tcpi_delivered: __u32, +pub tcpi_delivered_ce: __u32, +pub tcpi_bytes_sent: __u64, +pub tcpi_bytes_retrans: __u64, +pub tcpi_dsack_dups: __u32, +pub tcpi_reord_seen: __u32, +pub tcpi_rcv_ooopack: __u32, +pub tcpi_snd_wnd: __u32, +pub tcpi_rcv_wnd: __u32, +pub tcpi_rehash: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct tcp_md5sig { +pub tcpm_addr: __kernel_sockaddr_storage, +pub tcpm_flags: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_ifindex: crate::ctypes::c_int, +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_diag_md5sig { +pub tcpm_family: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_addr: [__be32; 4usize], +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_zerocopy_receive { +pub address: __u64, +pub length: __u32, +pub recv_skip_hint: __u32, +pub inq: __u32, +pub err: __s32, +pub copybuf_address: __u64, +pub copybuf_len: __s32, +pub flags: __u32, +pub msg_control: __u64, +pub msg_controllen: __u64, +pub msg_flags: __u32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_un { +pub sun_family: __kernel_sa_family_t, +pub sun_path: [crate::ctypes::c_char; 108usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr { +pub __storage: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct linger { +pub l_onoff: crate::ctypes::c_int, +pub l_linger: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct msghdr { +pub msg_name: *mut crate::ctypes::c_void, +pub msg_namelen: crate::ctypes::c_int, +pub msg_iov: *mut iovec, +pub msg_iovlen: usize, +pub msg_control: *mut crate::ctypes::c_void, +pub msg_controllen: usize, +pub msg_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct cmsghdr { +pub cmsg_len: usize, +pub cmsg_level: crate::ctypes::c_int, +pub cmsg_type: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ucred { +pub pid: __u32, +pub uid: __u32, +pub gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mmsghdr { +pub msg_hdr: msghdr, +pub msg_len: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub _address: u8, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const IP_TOS: u32 = 1; +pub const IP_TTL: u32 = 2; +pub const IP_HDRINCL: u32 = 3; +pub const IP_OPTIONS: u32 = 4; +pub const IP_ROUTER_ALERT: u32 = 5; +pub const IP_RECVOPTS: u32 = 6; +pub const IP_RETOPTS: u32 = 7; +pub const IP_PKTINFO: u32 = 8; +pub const IP_PKTOPTIONS: u32 = 9; +pub const IP_MTU_DISCOVER: u32 = 10; +pub const IP_RECVERR: u32 = 11; +pub const IP_RECVTTL: u32 = 12; +pub const IP_RECVTOS: u32 = 13; +pub const IP_MTU: u32 = 14; +pub const IP_FREEBIND: u32 = 15; +pub const IP_IPSEC_POLICY: u32 = 16; +pub const IP_XFRM_POLICY: u32 = 17; +pub const IP_PASSSEC: u32 = 18; +pub const IP_TRANSPARENT: u32 = 19; +pub const IP_RECVRETOPTS: u32 = 7; +pub const IP_ORIGDSTADDR: u32 = 20; +pub const IP_RECVORIGDSTADDR: u32 = 20; +pub const IP_MINTTL: u32 = 21; +pub const IP_NODEFRAG: u32 = 22; +pub const IP_CHECKSUM: u32 = 23; +pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; +pub const IP_RECVFRAGSIZE: u32 = 25; +pub const IP_RECVERR_RFC4884: u32 = 26; +pub const IP_PMTUDISC_DONT: u32 = 0; +pub const IP_PMTUDISC_WANT: u32 = 1; +pub const IP_PMTUDISC_DO: u32 = 2; +pub const IP_PMTUDISC_PROBE: u32 = 3; +pub const IP_PMTUDISC_INTERFACE: u32 = 4; +pub const IP_PMTUDISC_OMIT: u32 = 5; +pub const IP_MULTICAST_IF: u32 = 32; +pub const IP_MULTICAST_TTL: u32 = 33; +pub const IP_MULTICAST_LOOP: u32 = 34; +pub const IP_ADD_MEMBERSHIP: u32 = 35; +pub const IP_DROP_MEMBERSHIP: u32 = 36; +pub const IP_UNBLOCK_SOURCE: u32 = 37; +pub const IP_BLOCK_SOURCE: u32 = 38; +pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; +pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; +pub const IP_MSFILTER: u32 = 41; +pub const MCAST_JOIN_GROUP: u32 = 42; +pub const MCAST_BLOCK_SOURCE: u32 = 43; +pub const MCAST_UNBLOCK_SOURCE: u32 = 44; +pub const MCAST_LEAVE_GROUP: u32 = 45; +pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; +pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; +pub const MCAST_MSFILTER: u32 = 48; +pub const IP_MULTICAST_ALL: u32 = 49; +pub const IP_UNICAST_IF: u32 = 50; +pub const IP_LOCAL_PORT_RANGE: u32 = 51; +pub const MCAST_EXCLUDE: u32 = 0; +pub const MCAST_INCLUDE: u32 = 1; +pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; +pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; +pub const __SOCK_SIZE__: u32 = 16; +pub const IN_CLASSA_NET: u32 = 4278190080; +pub const IN_CLASSA_NSHIFT: u32 = 24; +pub const IN_CLASSA_HOST: u32 = 16777215; +pub const IN_CLASSA_MAX: u32 = 128; +pub const IN_CLASSB_NET: u32 = 4294901760; +pub const IN_CLASSB_NSHIFT: u32 = 16; +pub const IN_CLASSB_HOST: u32 = 65535; +pub const IN_CLASSB_MAX: u32 = 65536; +pub const IN_CLASSC_NET: u32 = 4294967040; +pub const IN_CLASSC_NSHIFT: u32 = 8; +pub const IN_CLASSC_HOST: u32 = 255; +pub const IN_MULTICAST_NET: u32 = 3758096384; +pub const IN_CLASSE_NET: u32 = 4294967295; +pub const IN_CLASSE_NSHIFT: u32 = 0; +pub const IN_LOOPBACKNET: u32 = 127; +pub const INADDR_LOOPBACK: u32 = 2130706433; +pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; +pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; +pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; +pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; +pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; +pub const __LITTLE_ENDIAN: u32 = 1234; +pub const IPTOS_TOS_MASK: u32 = 30; +pub const IPTOS_LOWDELAY: u32 = 16; +pub const IPTOS_THROUGHPUT: u32 = 8; +pub const IPTOS_RELIABILITY: u32 = 4; +pub const IPTOS_MINCOST: u32 = 2; +pub const IPTOS_PREC_MASK: u32 = 224; +pub const IPTOS_PREC_NETCONTROL: u32 = 224; +pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; +pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; +pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; +pub const IPTOS_PREC_FLASH: u32 = 96; +pub const IPTOS_PREC_IMMEDIATE: u32 = 64; +pub const IPTOS_PREC_PRIORITY: u32 = 32; +pub const IPTOS_PREC_ROUTINE: u32 = 0; +pub const IPOPT_COPY: u32 = 128; +pub const IPOPT_CLASS_MASK: u32 = 96; +pub const IPOPT_NUMBER_MASK: u32 = 31; +pub const IPOPT_CONTROL: u32 = 0; +pub const IPOPT_RESERVED1: u32 = 32; +pub const IPOPT_MEASUREMENT: u32 = 64; +pub const IPOPT_RESERVED2: u32 = 96; +pub const IPOPT_END: u32 = 0; +pub const IPOPT_NOOP: u32 = 1; +pub const IPOPT_SEC: u32 = 130; +pub const IPOPT_LSRR: u32 = 131; +pub const IPOPT_TIMESTAMP: u32 = 68; +pub const IPOPT_CIPSO: u32 = 134; +pub const IPOPT_RR: u32 = 7; +pub const IPOPT_SID: u32 = 136; +pub const IPOPT_SSRR: u32 = 137; +pub const IPOPT_RA: u32 = 148; +pub const IPVERSION: u32 = 4; +pub const MAXTTL: u32 = 255; +pub const IPDEFTTL: u32 = 64; +pub const IPOPT_OPTVAL: u32 = 0; +pub const IPOPT_OLEN: u32 = 1; +pub const IPOPT_OFFSET: u32 = 2; +pub const IPOPT_MINOFF: u32 = 4; +pub const MAX_IPOPTLEN: u32 = 40; +pub const IPOPT_NOP: u32 = 1; +pub const IPOPT_EOL: u32 = 0; +pub const IPOPT_TS: u32 = 68; +pub const IPOPT_TS_TSONLY: u32 = 0; +pub const IPOPT_TS_TSANDADDR: u32 = 1; +pub const IPOPT_TS_PRESPEC: u32 = 3; +pub const IPV4_BEET_PHMAXLEN: u32 = 8; +pub const IPV6_FL_A_GET: u32 = 0; +pub const IPV6_FL_A_PUT: u32 = 1; +pub const IPV6_FL_A_RENEW: u32 = 2; +pub const IPV6_FL_F_CREATE: u32 = 1; +pub const IPV6_FL_F_EXCL: u32 = 2; +pub const IPV6_FL_F_REFLECT: u32 = 4; +pub const IPV6_FL_F_REMOTE: u32 = 8; +pub const IPV6_FL_S_NONE: u32 = 0; +pub const IPV6_FL_S_EXCL: u32 = 1; +pub const IPV6_FL_S_PROCESS: u32 = 2; +pub const IPV6_FL_S_USER: u32 = 3; +pub const IPV6_FL_S_ANY: u32 = 255; +pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; +pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; +pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; +pub const IPV6_PRIORITY_FILLER: u32 = 256; +pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; +pub const IPV6_PRIORITY_RESERVED1: u32 = 768; +pub const IPV6_PRIORITY_BULK: u32 = 1024; +pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; +pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; +pub const IPV6_PRIORITY_CONTROL: u32 = 1792; +pub const IPV6_PRIORITY_8: u32 = 2048; +pub const IPV6_PRIORITY_9: u32 = 2304; +pub const IPV6_PRIORITY_10: u32 = 2560; +pub const IPV6_PRIORITY_11: u32 = 2816; +pub const IPV6_PRIORITY_12: u32 = 3072; +pub const IPV6_PRIORITY_13: u32 = 3328; +pub const IPV6_PRIORITY_14: u32 = 3584; +pub const IPV6_PRIORITY_15: u32 = 3840; +pub const IPPROTO_HOPOPTS: u32 = 0; +pub const IPPROTO_ROUTING: u32 = 43; +pub const IPPROTO_FRAGMENT: u32 = 44; +pub const IPPROTO_ICMPV6: u32 = 58; +pub const IPPROTO_NONE: u32 = 59; +pub const IPPROTO_DSTOPTS: u32 = 60; +pub const IPPROTO_MH: u32 = 135; +pub const IPV6_TLV_PAD1: u32 = 0; +pub const IPV6_TLV_PADN: u32 = 1; +pub const IPV6_TLV_ROUTERALERT: u32 = 5; +pub const IPV6_TLV_CALIPSO: u32 = 7; +pub const IPV6_TLV_IOAM: u32 = 49; +pub const IPV6_TLV_JUMBO: u32 = 194; +pub const IPV6_TLV_HAO: u32 = 201; +pub const IPV6_ADDRFORM: u32 = 1; +pub const IPV6_2292PKTINFO: u32 = 2; +pub const IPV6_2292HOPOPTS: u32 = 3; +pub const IPV6_2292DSTOPTS: u32 = 4; +pub const IPV6_2292RTHDR: u32 = 5; +pub const IPV6_2292PKTOPTIONS: u32 = 6; +pub const IPV6_CHECKSUM: u32 = 7; +pub const IPV6_2292HOPLIMIT: u32 = 8; +pub const IPV6_NEXTHOP: u32 = 9; +pub const IPV6_AUTHHDR: u32 = 10; +pub const IPV6_FLOWINFO: u32 = 11; +pub const IPV6_UNICAST_HOPS: u32 = 16; +pub const IPV6_MULTICAST_IF: u32 = 17; +pub const IPV6_MULTICAST_HOPS: u32 = 18; +pub const IPV6_MULTICAST_LOOP: u32 = 19; +pub const IPV6_ADD_MEMBERSHIP: u32 = 20; +pub const IPV6_DROP_MEMBERSHIP: u32 = 21; +pub const IPV6_ROUTER_ALERT: u32 = 22; +pub const IPV6_MTU_DISCOVER: u32 = 23; +pub const IPV6_MTU: u32 = 24; +pub const IPV6_RECVERR: u32 = 25; +pub const IPV6_V6ONLY: u32 = 26; +pub const IPV6_JOIN_ANYCAST: u32 = 27; +pub const IPV6_LEAVE_ANYCAST: u32 = 28; +pub const IPV6_MULTICAST_ALL: u32 = 29; +pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; +pub const IPV6_RECVERR_RFC4884: u32 = 31; +pub const IPV6_PMTUDISC_DONT: u32 = 0; +pub const IPV6_PMTUDISC_WANT: u32 = 1; +pub const IPV6_PMTUDISC_DO: u32 = 2; +pub const IPV6_PMTUDISC_PROBE: u32 = 3; +pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; +pub const IPV6_PMTUDISC_OMIT: u32 = 5; +pub const IPV6_FLOWLABEL_MGR: u32 = 32; +pub const IPV6_FLOWINFO_SEND: u32 = 33; +pub const IPV6_IPSEC_POLICY: u32 = 34; +pub const IPV6_XFRM_POLICY: u32 = 35; +pub const IPV6_HDRINCL: u32 = 36; +pub const IPV6_RECVPKTINFO: u32 = 49; +pub const IPV6_PKTINFO: u32 = 50; +pub const IPV6_RECVHOPLIMIT: u32 = 51; +pub const IPV6_HOPLIMIT: u32 = 52; +pub const IPV6_RECVHOPOPTS: u32 = 53; +pub const IPV6_HOPOPTS: u32 = 54; +pub const IPV6_RTHDRDSTOPTS: u32 = 55; +pub const IPV6_RECVRTHDR: u32 = 56; +pub const IPV6_RTHDR: u32 = 57; +pub const IPV6_RECVDSTOPTS: u32 = 58; +pub const IPV6_DSTOPTS: u32 = 59; +pub const IPV6_RECVPATHMTU: u32 = 60; +pub const IPV6_PATHMTU: u32 = 61; +pub const IPV6_DONTFRAG: u32 = 62; +pub const IPV6_RECVTCLASS: u32 = 66; +pub const IPV6_TCLASS: u32 = 67; +pub const IPV6_AUTOFLOWLABEL: u32 = 70; +pub const IPV6_ADDR_PREFERENCES: u32 = 72; +pub const IPV6_PREFER_SRC_TMP: u32 = 1; +pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; +pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; +pub const IPV6_PREFER_SRC_COA: u32 = 4; +pub const IPV6_PREFER_SRC_HOME: u32 = 1024; +pub const IPV6_PREFER_SRC_CGA: u32 = 8; +pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; +pub const IPV6_MINHOPCOUNT: u32 = 73; +pub const IPV6_ORIGDSTADDR: u32 = 74; +pub const IPV6_RECVORIGDSTADDR: u32 = 74; +pub const IPV6_TRANSPARENT: u32 = 75; +pub const IPV6_UNICAST_IF: u32 = 76; +pub const IPV6_RECVFRAGSIZE: u32 = 77; +pub const IPV6_FREEBIND: u32 = 78; +pub const IPV6_MIN_MTU: u32 = 1280; +pub const IPV6_SRCRT_STRICT: u32 = 1; +pub const IPV6_SRCRT_TYPE_0: u32 = 0; +pub const IPV6_SRCRT_TYPE_2: u32 = 2; +pub const IPV6_SRCRT_TYPE_3: u32 = 3; +pub const IPV6_SRCRT_TYPE_4: u32 = 4; +pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; +pub const SIOCGSTAMP_OLD: u32 = 35078; +pub const SIOCGSTAMPNS_OLD: u32 = 35079; +pub const SOL_SOCKET: u32 = 1; +pub const SO_DEBUG: u32 = 1; +pub const SO_REUSEADDR: u32 = 2; +pub const SO_TYPE: u32 = 3; +pub const SO_ERROR: u32 = 4; +pub const SO_DONTROUTE: u32 = 5; +pub const SO_BROADCAST: u32 = 6; +pub const SO_SNDBUF: u32 = 7; +pub const SO_RCVBUF: u32 = 8; +pub const SO_SNDBUFFORCE: u32 = 32; +pub const SO_RCVBUFFORCE: u32 = 33; +pub const SO_KEEPALIVE: u32 = 9; +pub const SO_OOBINLINE: u32 = 10; +pub const SO_NO_CHECK: u32 = 11; +pub const SO_PRIORITY: u32 = 12; +pub const SO_LINGER: u32 = 13; +pub const SO_BSDCOMPAT: u32 = 14; +pub const SO_REUSEPORT: u32 = 15; +pub const SO_PASSCRED: u32 = 16; +pub const SO_PEERCRED: u32 = 17; +pub const SO_RCVLOWAT: u32 = 18; +pub const SO_SNDLOWAT: u32 = 19; +pub const SO_RCVTIMEO_OLD: u32 = 20; +pub const SO_SNDTIMEO_OLD: u32 = 21; +pub const SO_SECURITY_AUTHENTICATION: u32 = 22; +pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; +pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; +pub const SO_BINDTODEVICE: u32 = 25; +pub const SO_ATTACH_FILTER: u32 = 26; +pub const SO_DETACH_FILTER: u32 = 27; +pub const SO_GET_FILTER: u32 = 26; +pub const SO_PEERNAME: u32 = 28; +pub const SO_ACCEPTCONN: u32 = 30; +pub const SO_PEERSEC: u32 = 31; +pub const SO_PASSSEC: u32 = 34; +pub const SO_MARK: u32 = 36; +pub const SO_PROTOCOL: u32 = 38; +pub const SO_DOMAIN: u32 = 39; +pub const SO_RXQ_OVFL: u32 = 40; +pub const SO_WIFI_STATUS: u32 = 41; +pub const SCM_WIFI_STATUS: u32 = 41; +pub const SO_PEEK_OFF: u32 = 42; +pub const SO_NOFCS: u32 = 43; +pub const SO_LOCK_FILTER: u32 = 44; +pub const SO_SELECT_ERR_QUEUE: u32 = 45; +pub const SO_BUSY_POLL: u32 = 46; +pub const SO_MAX_PACING_RATE: u32 = 47; +pub const SO_BPF_EXTENSIONS: u32 = 48; +pub const SO_INCOMING_CPU: u32 = 49; +pub const SO_ATTACH_BPF: u32 = 50; +pub const SO_DETACH_BPF: u32 = 27; +pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; +pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; +pub const SO_CNX_ADVICE: u32 = 53; +pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; +pub const SO_MEMINFO: u32 = 55; +pub const SO_INCOMING_NAPI_ID: u32 = 56; +pub const SO_COOKIE: u32 = 57; +pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; +pub const SO_PEERGROUPS: u32 = 59; +pub const SO_ZEROCOPY: u32 = 60; +pub const SO_TXTIME: u32 = 61; +pub const SCM_TXTIME: u32 = 61; +pub const SO_BINDTOIFINDEX: u32 = 62; +pub const SO_TIMESTAMP_OLD: u32 = 29; +pub const SO_TIMESTAMPNS_OLD: u32 = 35; +pub const SO_TIMESTAMPING_OLD: u32 = 37; +pub const SO_TIMESTAMP_NEW: u32 = 63; +pub const SO_TIMESTAMPNS_NEW: u32 = 64; +pub const SO_TIMESTAMPING_NEW: u32 = 65; +pub const SO_RCVTIMEO_NEW: u32 = 66; +pub const SO_SNDTIMEO_NEW: u32 = 67; +pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; +pub const SO_PREFER_BUSY_POLL: u32 = 69; +pub const SO_BUSY_POLL_BUDGET: u32 = 70; +pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; +pub const SO_TXREHASH: u32 = 74; +pub const SO_RCVMARK: u32 = 75; +pub const SYS_SOCKET: u32 = 1; +pub const SYS_BIND: u32 = 2; +pub const SYS_CONNECT: u32 = 3; +pub const SYS_LISTEN: u32 = 4; +pub const SYS_ACCEPT: u32 = 5; +pub const SYS_GETSOCKNAME: u32 = 6; +pub const SYS_GETPEERNAME: u32 = 7; +pub const SYS_SOCKETPAIR: u32 = 8; +pub const SYS_SEND: u32 = 9; +pub const SYS_RECV: u32 = 10; +pub const SYS_SENDTO: u32 = 11; +pub const SYS_RECVFROM: u32 = 12; +pub const SYS_SHUTDOWN: u32 = 13; +pub const SYS_SETSOCKOPT: u32 = 14; +pub const SYS_GETSOCKOPT: u32 = 15; +pub const SYS_SENDMSG: u32 = 16; +pub const SYS_RECVMSG: u32 = 17; +pub const SYS_ACCEPT4: u32 = 18; +pub const SYS_RECVMMSG: u32 = 19; +pub const SYS_SENDMMSG: u32 = 20; +pub const __SO_ACCEPTCON: u32 = 65536; +pub const TCP_MSS_DEFAULT: u32 = 536; +pub const TCP_MSS_DESIRED: u32 = 1220; +pub const TCP_NODELAY: u32 = 1; +pub const TCP_MAXSEG: u32 = 2; +pub const TCP_CORK: u32 = 3; +pub const TCP_KEEPIDLE: u32 = 4; +pub const TCP_KEEPINTVL: u32 = 5; +pub const TCP_KEEPCNT: u32 = 6; +pub const TCP_SYNCNT: u32 = 7; +pub const TCP_LINGER2: u32 = 8; +pub const TCP_DEFER_ACCEPT: u32 = 9; +pub const TCP_WINDOW_CLAMP: u32 = 10; +pub const TCP_INFO: u32 = 11; +pub const TCP_QUICKACK: u32 = 12; +pub const TCP_CONGESTION: u32 = 13; +pub const TCP_MD5SIG: u32 = 14; +pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; +pub const TCP_THIN_DUPACK: u32 = 17; +pub const TCP_USER_TIMEOUT: u32 = 18; +pub const TCP_REPAIR: u32 = 19; +pub const TCP_REPAIR_QUEUE: u32 = 20; +pub const TCP_QUEUE_SEQ: u32 = 21; +pub const TCP_REPAIR_OPTIONS: u32 = 22; +pub const TCP_FASTOPEN: u32 = 23; +pub const TCP_TIMESTAMP: u32 = 24; +pub const TCP_NOTSENT_LOWAT: u32 = 25; +pub const TCP_CC_INFO: u32 = 26; +pub const TCP_SAVE_SYN: u32 = 27; +pub const TCP_SAVED_SYN: u32 = 28; +pub const TCP_REPAIR_WINDOW: u32 = 29; +pub const TCP_FASTOPEN_CONNECT: u32 = 30; +pub const TCP_ULP: u32 = 31; +pub const TCP_MD5SIG_EXT: u32 = 32; +pub const TCP_FASTOPEN_KEY: u32 = 33; +pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; +pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; +pub const TCP_INQ: u32 = 36; +pub const TCP_CM_INQ: u32 = 36; +pub const TCP_TX_DELAY: u32 = 37; +pub const TCP_REPAIR_ON: u32 = 1; +pub const TCP_REPAIR_OFF: u32 = 0; +pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; +pub const TCPI_OPT_TIMESTAMPS: u32 = 1; +pub const TCPI_OPT_SACK: u32 = 2; +pub const TCPI_OPT_WSCALE: u32 = 4; +pub const TCPI_OPT_ECN: u32 = 8; +pub const TCPI_OPT_ECN_SEEN: u32 = 16; +pub const TCPI_OPT_SYN_DATA: u32 = 32; +pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; +pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; +pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; +pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; +pub const UNIX_PATH_MAX: u32 = 108; +pub const SHUT_RD: u32 = 0; +pub const SHUT_WR: u32 = 1; +pub const SHUT_RDWR: u32 = 2; +pub const SOCK_STREAM: u32 = 1; +pub const SOCK_DGRAM: u32 = 2; +pub const SOCK_RAW: u32 = 3; +pub const SOCK_RDM: u32 = 4; +pub const SOCK_SEQPACKET: u32 = 5; +pub const MSG_DONTWAIT: u32 = 64; +pub const AF_UNSPEC: u32 = 0; +pub const AF_UNIX: u32 = 1; +pub const AF_INET: u32 = 2; +pub const AF_AX25: u32 = 3; +pub const AF_IPX: u32 = 4; +pub const AF_APPLETALK: u32 = 5; +pub const AF_NETROM: u32 = 6; +pub const AF_BRIDGE: u32 = 7; +pub const AF_ATMPVC: u32 = 8; +pub const AF_X25: u32 = 9; +pub const AF_INET6: u32 = 10; +pub const AF_ROSE: u32 = 11; +pub const AF_DECnet: u32 = 12; +pub const AF_NETBEUI: u32 = 13; +pub const AF_SECURITY: u32 = 14; +pub const AF_KEY: u32 = 15; +pub const AF_NETLINK: u32 = 16; +pub const AF_PACKET: u32 = 17; +pub const AF_ASH: u32 = 18; +pub const AF_ECONET: u32 = 19; +pub const AF_ATMSVC: u32 = 20; +pub const AF_RDS: u32 = 21; +pub const AF_SNA: u32 = 22; +pub const AF_IRDA: u32 = 23; +pub const AF_PPPOX: u32 = 24; +pub const AF_WANPIPE: u32 = 25; +pub const AF_LLC: u32 = 26; +pub const AF_CAN: u32 = 29; +pub const AF_TIPC: u32 = 30; +pub const AF_BLUETOOTH: u32 = 31; +pub const AF_IUCV: u32 = 32; +pub const AF_RXRPC: u32 = 33; +pub const AF_ISDN: u32 = 34; +pub const AF_PHONET: u32 = 35; +pub const AF_IEEE802154: u32 = 36; +pub const AF_MAX: u32 = 37; +pub const MSG_OOB: u32 = 1; +pub const MSG_PEEK: u32 = 2; +pub const MSG_DONTROUTE: u32 = 4; +pub const MSG_CTRUNC: u32 = 8; +pub const MSG_PROBE: u32 = 16; +pub const MSG_TRUNC: u32 = 32; +pub const MSG_EOR: u32 = 128; +pub const MSG_WAITALL: u32 = 256; +pub const MSG_FIN: u32 = 512; +pub const MSG_SYN: u32 = 1024; +pub const MSG_CONFIRM: u32 = 2048; +pub const MSG_RST: u32 = 4096; +pub const MSG_ERRQUEUE: u32 = 8192; +pub const MSG_NOSIGNAL: u32 = 16384; +pub const MSG_MORE: u32 = 32768; +pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; +pub const SCM_RIGHTS: u32 = 1; +pub const SCM_CREDENTIALS: u32 = 2; +pub const SCM_SECURITY: u32 = 3; +pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; +pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; +pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; +pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; +pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; +pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; +pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; +pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; +pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; +pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; +pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; +pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; +pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; +pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; +pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; +pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; +pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; +pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; +pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; +pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; +pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; +pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; +pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; +pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; +pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; +pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; +pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; +pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; +pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; +pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; +pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; +pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; +pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; +pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; +pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; +pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; +pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; +pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; +pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; +pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; +pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; +pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; +pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; +pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; +pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; +pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; +pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; +pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; +pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; +pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; +pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; +pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; +pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; +pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; +pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; +pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; +pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; +pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; +pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; +pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; +pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; +pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; +pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; +pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; +pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; +pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; +pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; +pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; +pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; +pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; +pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; +pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; +pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; +pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; +pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; +pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; +pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; +pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; +pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; +pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; +pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; +pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; +pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; +pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; +pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; +pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; +pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; +pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; +pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; +pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; +pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; +pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; +pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; +pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; +pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; +pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; +pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; +pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; +pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; +pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; +pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; +pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; +pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; +pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; +pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; +pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; +pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; +pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; +pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; +pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; +pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; +pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; +pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; +pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; +pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; +pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; +pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; +pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; +pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; +pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; +pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; +pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; +pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; +pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; +pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; +pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; +pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; +pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; +pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; +pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; +pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; +pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; +pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; +pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; +pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; +pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; +pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; +pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; +pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; +pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; +pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; +pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; +pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; +pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; +pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; +pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; +pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; +pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; +pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; +pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; +pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; +pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IPPROTO_IP = 0, +IPPROTO_ICMP = 1, +IPPROTO_IGMP = 2, +IPPROTO_IPIP = 4, +IPPROTO_TCP = 6, +IPPROTO_EGP = 8, +IPPROTO_PUP = 12, +IPPROTO_UDP = 17, +IPPROTO_IDP = 22, +IPPROTO_TP = 29, +IPPROTO_DCCP = 33, +IPPROTO_IPV6 = 41, +IPPROTO_RSVP = 46, +IPPROTO_GRE = 47, +IPPROTO_ESP = 50, +IPPROTO_AH = 51, +IPPROTO_MTP = 92, +IPPROTO_BEETPH = 94, +IPPROTO_ENCAP = 98, +IPPROTO_PIM = 103, +IPPROTO_COMP = 108, +IPPROTO_L2TP = 115, +IPPROTO_SCTP = 132, +IPPROTO_UDPLITE = 136, +IPPROTO_MPLS = 137, +IPPROTO_ETHERNET = 143, +IPPROTO_RAW = 255, +IPPROTO_MPTCP = 262, +IPPROTO_MAX = 263, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IPV4_DEVCONF_FORWARDING = 1, +IPV4_DEVCONF_MC_FORWARDING = 2, +IPV4_DEVCONF_PROXY_ARP = 3, +IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, +IPV4_DEVCONF_SECURE_REDIRECTS = 5, +IPV4_DEVCONF_SEND_REDIRECTS = 6, +IPV4_DEVCONF_SHARED_MEDIA = 7, +IPV4_DEVCONF_RP_FILTER = 8, +IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, +IPV4_DEVCONF_BOOTP_RELAY = 10, +IPV4_DEVCONF_LOG_MARTIANS = 11, +IPV4_DEVCONF_TAG = 12, +IPV4_DEVCONF_ARPFILTER = 13, +IPV4_DEVCONF_MEDIUM_ID = 14, +IPV4_DEVCONF_NOXFRM = 15, +IPV4_DEVCONF_NOPOLICY = 16, +IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, +IPV4_DEVCONF_ARP_ANNOUNCE = 18, +IPV4_DEVCONF_ARP_IGNORE = 19, +IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, +IPV4_DEVCONF_ARP_ACCEPT = 21, +IPV4_DEVCONF_ARP_NOTIFY = 22, +IPV4_DEVCONF_ACCEPT_LOCAL = 23, +IPV4_DEVCONF_SRC_VMARK = 24, +IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, +IPV4_DEVCONF_ROUTE_LOCALNET = 26, +IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, +IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, +IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, +IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, +IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, +IPV4_DEVCONF_BC_FORWARDING = 32, +IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, +__IPV4_DEVCONF_MAX = 34, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +DEVCONF_FORWARDING = 0, +DEVCONF_HOPLIMIT = 1, +DEVCONF_MTU6 = 2, +DEVCONF_ACCEPT_RA = 3, +DEVCONF_ACCEPT_REDIRECTS = 4, +DEVCONF_AUTOCONF = 5, +DEVCONF_DAD_TRANSMITS = 6, +DEVCONF_RTR_SOLICITS = 7, +DEVCONF_RTR_SOLICIT_INTERVAL = 8, +DEVCONF_RTR_SOLICIT_DELAY = 9, +DEVCONF_USE_TEMPADDR = 10, +DEVCONF_TEMP_VALID_LFT = 11, +DEVCONF_TEMP_PREFERED_LFT = 12, +DEVCONF_REGEN_MAX_RETRY = 13, +DEVCONF_MAX_DESYNC_FACTOR = 14, +DEVCONF_MAX_ADDRESSES = 15, +DEVCONF_FORCE_MLD_VERSION = 16, +DEVCONF_ACCEPT_RA_DEFRTR = 17, +DEVCONF_ACCEPT_RA_PINFO = 18, +DEVCONF_ACCEPT_RA_RTR_PREF = 19, +DEVCONF_RTR_PROBE_INTERVAL = 20, +DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, +DEVCONF_PROXY_NDP = 22, +DEVCONF_OPTIMISTIC_DAD = 23, +DEVCONF_ACCEPT_SOURCE_ROUTE = 24, +DEVCONF_MC_FORWARDING = 25, +DEVCONF_DISABLE_IPV6 = 26, +DEVCONF_ACCEPT_DAD = 27, +DEVCONF_FORCE_TLLAO = 28, +DEVCONF_NDISC_NOTIFY = 29, +DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, +DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, +DEVCONF_SUPPRESS_FRAG_NDISC = 32, +DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, +DEVCONF_USE_OPTIMISTIC = 34, +DEVCONF_ACCEPT_RA_MTU = 35, +DEVCONF_STABLE_SECRET = 36, +DEVCONF_USE_OIF_ADDRS_ONLY = 37, +DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, +DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, +DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, +DEVCONF_DROP_UNSOLICITED_NA = 41, +DEVCONF_KEEP_ADDR_ON_DOWN = 42, +DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, +DEVCONF_SEG6_ENABLED = 44, +DEVCONF_SEG6_REQUIRE_HMAC = 45, +DEVCONF_ENHANCED_DAD = 46, +DEVCONF_ADDR_GEN_MODE = 47, +DEVCONF_DISABLE_POLICY = 48, +DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, +DEVCONF_NDISC_TCLASS = 50, +DEVCONF_RPL_SEG_ENABLED = 51, +DEVCONF_RA_DEFRTR_METRIC = 52, +DEVCONF_IOAM6_ENABLED = 53, +DEVCONF_IOAM6_ID = 54, +DEVCONF_IOAM6_ID_WIDE = 55, +DEVCONF_NDISC_EVICT_NOCARRIER = 56, +DEVCONF_ACCEPT_UNTRACKED_NA = 57, +DEVCONF_MAX = 58, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum socket_state { +SS_FREE = 0, +SS_UNCONNECTED = 1, +SS_CONNECTING = 2, +SS_CONNECTED = 3, +SS_DISCONNECTING = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +TCP_FLAG_CWR = 32768, +TCP_FLAG_ECE = 16384, +TCP_FLAG_URG = 8192, +TCP_FLAG_ACK = 4096, +TCP_FLAG_PSH = 2048, +TCP_FLAG_RST = 1024, +TCP_FLAG_SYN = 512, +TCP_FLAG_FIN = 256, +TCP_RESERVED_BITS = 15, +TCP_DATA_OFFSET = 240, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +TCP_NO_QUEUE = 0, +TCP_RECV_QUEUE = 1, +TCP_SEND_QUEUE = 2, +TCP_QUEUES_NR = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_fastopen_client_fail { +TFO_STATUS_UNSPEC = 0, +TFO_COOKIE_UNAVAILABLE = 1, +TFO_DATA_NOT_ACKED = 2, +TFO_SYN_RETRANSMITTED = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_ca_state { +TCP_CA_Open = 0, +TCP_CA_Disorder = 1, +TCP_CA_CWR = 2, +TCP_CA_Recovery = 3, +TCP_CA_Loss = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +TCP_NLA_PAD = 0, +TCP_NLA_BUSY = 1, +TCP_NLA_RWND_LIMITED = 2, +TCP_NLA_SNDBUF_LIMITED = 3, +TCP_NLA_DATA_SEGS_OUT = 4, +TCP_NLA_TOTAL_RETRANS = 5, +TCP_NLA_PACING_RATE = 6, +TCP_NLA_DELIVERY_RATE = 7, +TCP_NLA_SND_CWND = 8, +TCP_NLA_REORDERING = 9, +TCP_NLA_MIN_RTT = 10, +TCP_NLA_RECUR_RETRANS = 11, +TCP_NLA_DELIVERY_RATE_APP_LMT = 12, +TCP_NLA_SNDQ_SIZE = 13, +TCP_NLA_CA_STATE = 14, +TCP_NLA_SND_SSTHRESH = 15, +TCP_NLA_DELIVERED = 16, +TCP_NLA_DELIVERED_CE = 17, +TCP_NLA_BYTES_SENT = 18, +TCP_NLA_BYTES_RETRANS = 19, +TCP_NLA_DSACK_DUPS = 20, +TCP_NLA_REORD_SEEN = 21, +TCP_NLA_SRTT = 22, +TCP_NLA_TIMEOUT_REHASH = 23, +TCP_NLA_BYTES_NOTSENT = 24, +TCP_NLA_EDT = 25, +TCP_NLA_TTL = 26, +TCP_NLA_REHASH = 27, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union iphdr__bindgen_ty_1 { +pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union in6_addr__bindgen_ty_1 { +pub u6_addr8: [__u8; 16usize], +pub u6_addr16: [__be16; 8usize], +pub u6_addr32: [__be32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ipv6hdr__bindgen_ty_1 { +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union tcp_word_hdr { +pub hdr: tcphdr, +pub words: [__be32; 5usize], +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} +impl iphdr { +#[inline] +pub fn ihl(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_ihl(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; +ihl as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit +} +} +impl ipv6hdr { +#[inline] +pub fn priority(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_priority(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let priority: u8 = unsafe { ::core::mem::transmute(priority) }; +priority as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcphdr { +#[inline] +pub fn res1(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } +} +#[inline] +pub fn set_res1(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn doff(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } +} +#[inline] +pub fn set_doff(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn fin(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } +} +#[inline] +pub fn set_fin(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn syn(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } +} +#[inline] +pub fn set_syn(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 1u8, val as u64) +} +} +#[inline] +pub fn rst(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } +} +#[inline] +pub fn set_rst(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(10usize, 1u8, val as u64) +} +} +#[inline] +pub fn psh(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } +} +#[inline] +pub fn set_psh(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(11usize, 1u8, val as u64) +} +} +#[inline] +pub fn ack(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } +} +#[inline] +pub fn set_ack(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(12usize, 1u8, val as u64) +} +} +#[inline] +pub fn urg(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } +} +#[inline] +pub fn set_urg(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(13usize, 1u8, val as u64) +} +} +#[inline] +pub fn ece(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } +} +#[inline] +pub fn set_ece(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(14usize, 1u8, val as u64) +} +} +#[inline] +pub fn cwr(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +} +#[inline] +pub fn set_cwr(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(15usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let res1: u16 = unsafe { ::core::mem::transmute(res1) }; +res1 as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let doff: u16 = unsafe { ::core::mem::transmute(doff) }; +doff as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let fin: u16 = unsafe { ::core::mem::transmute(fin) }; +fin as u64 +}); +__bindgen_bitfield_unit.set(9usize, 1u8, { +let syn: u16 = unsafe { ::core::mem::transmute(syn) }; +syn as u64 +}); +__bindgen_bitfield_unit.set(10usize, 1u8, { +let rst: u16 = unsafe { ::core::mem::transmute(rst) }; +rst as u64 +}); +__bindgen_bitfield_unit.set(11usize, 1u8, { +let psh: u16 = unsafe { ::core::mem::transmute(psh) }; +psh as u64 +}); +__bindgen_bitfield_unit.set(12usize, 1u8, { +let ack: u16 = unsafe { ::core::mem::transmute(ack) }; +ack as u64 +}); +__bindgen_bitfield_unit.set(13usize, 1u8, { +let urg: u16 = unsafe { ::core::mem::transmute(urg) }; +urg as u64 +}); +__bindgen_bitfield_unit.set(14usize, 1u8, { +let ece: u16 = unsafe { ::core::mem::transmute(ece) }; +ece as u64 +}); +__bindgen_bitfield_unit.set(15usize, 1u8, { +let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; +cwr as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcp_info { +#[inline] +pub fn tcpi_snd_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_rcv_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +} +#[inline] +pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn tcpi_fastopen_client_fail(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +} +#[inline] +pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 2u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; +tcpi_snd_wscale as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; +tcpi_rcv_wscale as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; +tcpi_delivery_rate_app_limited as u64 +}); +__bindgen_bitfield_unit.set(9usize, 2u8, { +let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; +tcpi_fastopen_client_fail as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/arm/prctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/arm/prctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/arm/prctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/arm/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,221 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prctl_mm_map { +pub start_code: __u64, +pub end_code: __u64, +pub start_data: __u64, +pub end_data: __u64, +pub start_brk: __u64, +pub brk: __u64, +pub start_stack: __u64, +pub arg_start: __u64, +pub arg_end: __u64, +pub env_start: __u64, +pub env_end: __u64, +pub auxv: *mut __u64, +pub auxv_size: __u32, +pub exe_fd: __u32, +} +pub const PR_SET_PDEATHSIG: u32 = 1; +pub const PR_GET_PDEATHSIG: u32 = 2; +pub const PR_GET_DUMPABLE: u32 = 3; +pub const PR_SET_DUMPABLE: u32 = 4; +pub const PR_GET_UNALIGN: u32 = 5; +pub const PR_SET_UNALIGN: u32 = 6; +pub const PR_UNALIGN_NOPRINT: u32 = 1; +pub const PR_UNALIGN_SIGBUS: u32 = 2; +pub const PR_GET_KEEPCAPS: u32 = 7; +pub const PR_SET_KEEPCAPS: u32 = 8; +pub const PR_GET_FPEMU: u32 = 9; +pub const PR_SET_FPEMU: u32 = 10; +pub const PR_FPEMU_NOPRINT: u32 = 1; +pub const PR_FPEMU_SIGFPE: u32 = 2; +pub const PR_GET_FPEXC: u32 = 11; +pub const PR_SET_FPEXC: u32 = 12; +pub const PR_FP_EXC_SW_ENABLE: u32 = 128; +pub const PR_FP_EXC_DIV: u32 = 65536; +pub const PR_FP_EXC_OVF: u32 = 131072; +pub const PR_FP_EXC_UND: u32 = 262144; +pub const PR_FP_EXC_RES: u32 = 524288; +pub const PR_FP_EXC_INV: u32 = 1048576; +pub const PR_FP_EXC_DISABLED: u32 = 0; +pub const PR_FP_EXC_NONRECOV: u32 = 1; +pub const PR_FP_EXC_ASYNC: u32 = 2; +pub const PR_FP_EXC_PRECISE: u32 = 3; +pub const PR_GET_TIMING: u32 = 13; +pub const PR_SET_TIMING: u32 = 14; +pub const PR_TIMING_STATISTICAL: u32 = 0; +pub const PR_TIMING_TIMESTAMP: u32 = 1; +pub const PR_SET_NAME: u32 = 15; +pub const PR_GET_NAME: u32 = 16; +pub const PR_GET_ENDIAN: u32 = 19; +pub const PR_SET_ENDIAN: u32 = 20; +pub const PR_ENDIAN_BIG: u32 = 0; +pub const PR_ENDIAN_LITTLE: u32 = 1; +pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; +pub const PR_GET_SECCOMP: u32 = 21; +pub const PR_SET_SECCOMP: u32 = 22; +pub const PR_CAPBSET_READ: u32 = 23; +pub const PR_CAPBSET_DROP: u32 = 24; +pub const PR_GET_TSC: u32 = 25; +pub const PR_SET_TSC: u32 = 26; +pub const PR_TSC_ENABLE: u32 = 1; +pub const PR_TSC_SIGSEGV: u32 = 2; +pub const PR_GET_SECUREBITS: u32 = 27; +pub const PR_SET_SECUREBITS: u32 = 28; +pub const PR_SET_TIMERSLACK: u32 = 29; +pub const PR_GET_TIMERSLACK: u32 = 30; +pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; +pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; +pub const PR_MCE_KILL: u32 = 33; +pub const PR_MCE_KILL_CLEAR: u32 = 0; +pub const PR_MCE_KILL_SET: u32 = 1; +pub const PR_MCE_KILL_LATE: u32 = 0; +pub const PR_MCE_KILL_EARLY: u32 = 1; +pub const PR_MCE_KILL_DEFAULT: u32 = 2; +pub const PR_MCE_KILL_GET: u32 = 34; +pub const PR_SET_MM: u32 = 35; +pub const PR_SET_MM_START_CODE: u32 = 1; +pub const PR_SET_MM_END_CODE: u32 = 2; +pub const PR_SET_MM_START_DATA: u32 = 3; +pub const PR_SET_MM_END_DATA: u32 = 4; +pub const PR_SET_MM_START_STACK: u32 = 5; +pub const PR_SET_MM_START_BRK: u32 = 6; +pub const PR_SET_MM_BRK: u32 = 7; +pub const PR_SET_MM_ARG_START: u32 = 8; +pub const PR_SET_MM_ARG_END: u32 = 9; +pub const PR_SET_MM_ENV_START: u32 = 10; +pub const PR_SET_MM_ENV_END: u32 = 11; +pub const PR_SET_MM_AUXV: u32 = 12; +pub const PR_SET_MM_EXE_FILE: u32 = 13; +pub const PR_SET_MM_MAP: u32 = 14; +pub const PR_SET_MM_MAP_SIZE: u32 = 15; +pub const PR_SET_PTRACER: u32 = 1499557217; +pub const PR_SET_CHILD_SUBREAPER: u32 = 36; +pub const PR_GET_CHILD_SUBREAPER: u32 = 37; +pub const PR_SET_NO_NEW_PRIVS: u32 = 38; +pub const PR_GET_NO_NEW_PRIVS: u32 = 39; +pub const PR_GET_TID_ADDRESS: u32 = 40; +pub const PR_SET_THP_DISABLE: u32 = 41; +pub const PR_GET_THP_DISABLE: u32 = 42; +pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; +pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; +pub const PR_SET_FP_MODE: u32 = 45; +pub const PR_GET_FP_MODE: u32 = 46; +pub const PR_FP_MODE_FR: u32 = 1; +pub const PR_FP_MODE_FRE: u32 = 2; +pub const PR_CAP_AMBIENT: u32 = 47; +pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; +pub const PR_CAP_AMBIENT_RAISE: u32 = 2; +pub const PR_CAP_AMBIENT_LOWER: u32 = 3; +pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; +pub const PR_SVE_SET_VL: u32 = 50; +pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SVE_GET_VL: u32 = 51; +pub const PR_SVE_VL_LEN_MASK: u32 = 65535; +pub const PR_SVE_VL_INHERIT: u32 = 131072; +pub const PR_GET_SPECULATION_CTRL: u32 = 52; +pub const PR_SET_SPECULATION_CTRL: u32 = 53; +pub const PR_SPEC_STORE_BYPASS: u32 = 0; +pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; +pub const PR_SPEC_L1D_FLUSH: u32 = 2; +pub const PR_SPEC_NOT_AFFECTED: u32 = 0; +pub const PR_SPEC_PRCTL: u32 = 1; +pub const PR_SPEC_ENABLE: u32 = 2; +pub const PR_SPEC_DISABLE: u32 = 4; +pub const PR_SPEC_FORCE_DISABLE: u32 = 8; +pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; +pub const PR_PAC_RESET_KEYS: u32 = 54; +pub const PR_PAC_APIAKEY: u32 = 1; +pub const PR_PAC_APIBKEY: u32 = 2; +pub const PR_PAC_APDAKEY: u32 = 4; +pub const PR_PAC_APDBKEY: u32 = 8; +pub const PR_PAC_APGAKEY: u32 = 16; +pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; +pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; +pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; +pub const PR_MTE_TCF_NONE: u32 = 0; +pub const PR_MTE_TCF_SYNC: u32 = 2; +pub const PR_MTE_TCF_ASYNC: u32 = 4; +pub const PR_MTE_TCF_MASK: u32 = 6; +pub const PR_MTE_TAG_SHIFT: u32 = 3; +pub const PR_MTE_TAG_MASK: u32 = 524280; +pub const PR_MTE_TCF_SHIFT: u32 = 1; +pub const PR_SET_IO_FLUSHER: u32 = 57; +pub const PR_GET_IO_FLUSHER: u32 = 58; +pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; +pub const PR_SYS_DISPATCH_OFF: u32 = 0; +pub const PR_SYS_DISPATCH_ON: u32 = 1; +pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; +pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; +pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; +pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; +pub const PR_SCHED_CORE: u32 = 62; +pub const PR_SCHED_CORE_GET: u32 = 0; +pub const PR_SCHED_CORE_CREATE: u32 = 1; +pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; +pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; +pub const PR_SCHED_CORE_MAX: u32 = 4; +pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; +pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; +pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; +pub const PR_SME_SET_VL: u32 = 63; +pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SME_GET_VL: u32 = 64; +pub const PR_SME_VL_LEN_MASK: u32 = 65535; +pub const PR_SME_VL_INHERIT: u32 = 131072; +pub const PR_SET_MDWE: u32 = 65; +pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; +pub const PR_GET_MDWE: u32 = 66; +pub const PR_SET_VMA: u32 = 1398164801; +pub const PR_SET_VMA_ANON_NAME: u32 = 0; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/arm/system.rs temporalio-1.3.0/vendor/linux-raw-sys/src/arm/system.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/arm/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/arm/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,99 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sysinfo { +pub uptime: __kernel_long_t, +pub loads: [__kernel_ulong_t; 3usize], +pub totalram: __kernel_ulong_t, +pub freeram: __kernel_ulong_t, +pub sharedram: __kernel_ulong_t, +pub bufferram: __kernel_ulong_t, +pub totalswap: __kernel_ulong_t, +pub freeswap: __kernel_ulong_t, +pub procs: __u16, +pub pad: __u16, +pub totalhigh: __kernel_ulong_t, +pub freehigh: __kernel_ulong_t, +pub mem_unit: __u32, +pub _f: [crate::ctypes::c_char; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct oldold_utsname { +pub sysname: [crate::ctypes::c_char; 9usize], +pub nodename: [crate::ctypes::c_char; 9usize], +pub release: [crate::ctypes::c_char; 9usize], +pub version: [crate::ctypes::c_char; 9usize], +pub machine: [crate::ctypes::c_char; 9usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct old_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct new_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +pub domainname: [crate::ctypes::c_char; 65usize], +} +pub const SI_LOAD_SHIFT: u32 = 16; +pub const __OLD_UTS_LEN: u32 = 8; +pub const __NEW_UTS_LEN: u32 = 64; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/lib.rs temporalio-1.3.0/vendor/linux-raw-sys/src/lib.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -78,10 +78,10 @@ #[cfg(feature = "general")] impl Eq for general::__kernel_timespec {} -#[cfg(feature = "general")] +#[cfg(feature = "net")] pub mod cmsg_macros { use crate::ctypes::{c_long, c_uchar, c_uint}; - use crate::general::{cmsghdr, msghdr}; + use crate::net::{cmsghdr, msghdr}; use core::mem::size_of; use core::ptr; @@ -90,8 +90,7 @@ (len + c_long_size - 1) & !(c_long_size - 1) } - // TODO: In Rust 1.63 we can make this a `const fn`. - pub unsafe fn CMSG_DATA(cmsg: *const cmsghdr) -> *mut c_uchar { + pub const unsafe fn CMSG_DATA(cmsg: *const cmsghdr) -> *mut c_uchar { (cmsg as *mut c_uchar).add(size_of::()) } @@ -103,8 +102,7 @@ size_of::() as c_uint + len } - // TODO: In Rust 1.63 we can make this a `const fn`. - pub unsafe fn CMSG_FIRSTHDR(mhdr: *const msghdr) -> *mut cmsghdr { + pub const unsafe fn CMSG_FIRSTHDR(mhdr: *const msghdr) -> *mut cmsghdr { if (*mhdr).msg_controllen < size_of::() as _ { return ptr::null_mut(); } @@ -178,9 +176,8 @@ /// `SIG_IGN` value into a function pointer in a `const` initializer, so /// we make it a function instead. /// - // TODO: In Rust 1.56 we can make this a `const fn`. #[inline] - pub fn sig_ign() -> super::general::__kernel_sighandler_t { + pub const fn sig_ign() -> super::general::__kernel_sighandler_t { // Safety: This creates an invalid pointer, but the pointer type // includes `unsafe`, which covers the safety of calling it. Some(unsafe { @@ -198,14 +195,34 @@ #[cfg(target_arch = "arm")] #[path = "arm/general.rs"] pub mod general; +#[cfg(feature = "if_ether")] +#[cfg(target_arch = "arm")] +#[path = "arm/if_ether.rs"] +pub mod if_ether; +#[cfg(feature = "io_uring")] +#[cfg(target_arch = "arm")] +#[path = "arm/io_uring.rs"] +pub mod io_uring; #[cfg(feature = "ioctl")] #[cfg(target_arch = "arm")] #[path = "arm/ioctl.rs"] pub mod ioctl; +#[cfg(feature = "net")] +#[cfg(target_arch = "arm")] +#[path = "arm/net.rs"] +pub mod net; #[cfg(feature = "netlink")] #[cfg(target_arch = "arm")] #[path = "arm/netlink.rs"] pub mod netlink; +#[cfg(feature = "prctl")] +#[cfg(target_arch = "arm")] +#[path = "arm/prctl.rs"] +pub mod prctl; +#[cfg(feature = "system")] +#[cfg(target_arch = "arm")] +#[path = "arm/system.rs"] +pub mod system; #[cfg(feature = "errno")] #[cfg(target_arch = "aarch64")] #[path = "aarch64/errno.rs"] @@ -214,14 +231,34 @@ #[cfg(target_arch = "aarch64")] #[path = "aarch64/general.rs"] pub mod general; +#[cfg(feature = "if_ether")] +#[cfg(target_arch = "aarch64")] +#[path = "aarch64/if_ether.rs"] +pub mod if_ether; +#[cfg(feature = "io_uring")] +#[cfg(target_arch = "aarch64")] +#[path = "aarch64/io_uring.rs"] +pub mod io_uring; #[cfg(feature = "ioctl")] #[cfg(target_arch = "aarch64")] #[path = "aarch64/ioctl.rs"] pub mod ioctl; +#[cfg(feature = "net")] +#[cfg(target_arch = "aarch64")] +#[path = "aarch64/net.rs"] +pub mod net; #[cfg(feature = "netlink")] #[cfg(target_arch = "aarch64")] #[path = "aarch64/netlink.rs"] pub mod netlink; +#[cfg(feature = "prctl")] +#[cfg(target_arch = "aarch64")] +#[path = "aarch64/prctl.rs"] +pub mod prctl; +#[cfg(feature = "system")] +#[cfg(target_arch = "aarch64")] +#[path = "aarch64/system.rs"] +pub mod system; #[cfg(feature = "errno")] #[cfg(target_arch = "loongarch64")] #[path = "loongarch64/errno.rs"] @@ -230,14 +267,34 @@ #[cfg(target_arch = "loongarch64")] #[path = "loongarch64/general.rs"] pub mod general; +#[cfg(feature = "if_ether")] +#[cfg(target_arch = "loongarch64")] +#[path = "loongarch64/if_ether.rs"] +pub mod if_ether; +#[cfg(feature = "io_uring")] +#[cfg(target_arch = "loongarch64")] +#[path = "loongarch64/io_uring.rs"] +pub mod io_uring; #[cfg(feature = "ioctl")] #[cfg(target_arch = "loongarch64")] #[path = "loongarch64/ioctl.rs"] pub mod ioctl; +#[cfg(feature = "net")] +#[cfg(target_arch = "loongarch64")] +#[path = "loongarch64/net.rs"] +pub mod net; #[cfg(feature = "netlink")] #[cfg(target_arch = "loongarch64")] #[path = "loongarch64/netlink.rs"] pub mod netlink; +#[cfg(feature = "prctl")] +#[cfg(target_arch = "loongarch64")] +#[path = "loongarch64/prctl.rs"] +pub mod prctl; +#[cfg(feature = "system")] +#[cfg(target_arch = "loongarch64")] +#[path = "loongarch64/system.rs"] +pub mod system; #[cfg(feature = "errno")] #[cfg(target_arch = "mips")] #[path = "mips/errno.rs"] @@ -246,14 +303,34 @@ #[cfg(target_arch = "mips")] #[path = "mips/general.rs"] pub mod general; +#[cfg(feature = "if_ether")] +#[cfg(target_arch = "mips")] +#[path = "mips/if_ether.rs"] +pub mod if_ether; +#[cfg(feature = "io_uring")] +#[cfg(target_arch = "mips")] +#[path = "mips/io_uring.rs"] +pub mod io_uring; #[cfg(feature = "ioctl")] #[cfg(target_arch = "mips")] #[path = "mips/ioctl.rs"] pub mod ioctl; +#[cfg(feature = "net")] +#[cfg(target_arch = "mips")] +#[path = "mips/net.rs"] +pub mod net; #[cfg(feature = "netlink")] #[cfg(target_arch = "mips")] #[path = "mips/netlink.rs"] pub mod netlink; +#[cfg(feature = "prctl")] +#[cfg(target_arch = "mips")] +#[path = "mips/prctl.rs"] +pub mod prctl; +#[cfg(feature = "system")] +#[cfg(target_arch = "mips")] +#[path = "mips/system.rs"] +pub mod system; #[cfg(feature = "errno")] #[cfg(target_arch = "mips64")] #[path = "mips64/errno.rs"] @@ -262,14 +339,106 @@ #[cfg(target_arch = "mips64")] #[path = "mips64/general.rs"] pub mod general; +#[cfg(feature = "if_ether")] +#[cfg(target_arch = "mips64")] +#[path = "mips64/if_ether.rs"] +pub mod if_ether; +#[cfg(feature = "io_uring")] +#[cfg(target_arch = "mips64")] +#[path = "mips64/io_uring.rs"] +pub mod io_uring; #[cfg(feature = "ioctl")] #[cfg(target_arch = "mips64")] #[path = "mips64/ioctl.rs"] pub mod ioctl; +#[cfg(feature = "net")] +#[cfg(target_arch = "mips64")] +#[path = "mips64/net.rs"] +pub mod net; #[cfg(feature = "netlink")] #[cfg(target_arch = "mips64")] #[path = "mips64/netlink.rs"] pub mod netlink; +#[cfg(feature = "prctl")] +#[cfg(target_arch = "mips64")] +#[path = "mips64/prctl.rs"] +pub mod prctl; +#[cfg(feature = "system")] +#[cfg(target_arch = "mips64")] +#[path = "mips64/system.rs"] +pub mod system; +#[cfg(feature = "errno")] +#[cfg(target_arch = "mips32r6")] +#[path = "mips32r6/errno.rs"] +pub mod errno; +#[cfg(feature = "general")] +#[cfg(target_arch = "mips32r6")] +#[path = "mips32r6/general.rs"] +pub mod general; +#[cfg(feature = "if_ether")] +#[cfg(target_arch = "mips32r6")] +#[path = "mips32r6/if_ether.rs"] +pub mod if_ether; +#[cfg(feature = "io_uring")] +#[cfg(target_arch = "mips32r6")] +#[path = "mips32r6/io_uring.rs"] +pub mod io_uring; +#[cfg(feature = "ioctl")] +#[cfg(target_arch = "mips32r6")] +#[path = "mips32r6/ioctl.rs"] +pub mod ioctl; +#[cfg(feature = "net")] +#[cfg(target_arch = "mips32r6")] +#[path = "mips32r6/net.rs"] +pub mod net; +#[cfg(feature = "netlink")] +#[cfg(target_arch = "mips32r6")] +#[path = "mips32r6/netlink.rs"] +pub mod netlink; +#[cfg(feature = "prctl")] +#[cfg(target_arch = "mips32r6")] +#[path = "mips32r6/prctl.rs"] +pub mod prctl; +#[cfg(feature = "system")] +#[cfg(target_arch = "mips32r6")] +#[path = "mips32r6/system.rs"] +pub mod system; +#[cfg(feature = "errno")] +#[cfg(target_arch = "mips64r6")] +#[path = "mips64r6/errno.rs"] +pub mod errno; +#[cfg(feature = "general")] +#[cfg(target_arch = "mips64r6")] +#[path = "mips64r6/general.rs"] +pub mod general; +#[cfg(feature = "if_ether")] +#[cfg(target_arch = "mips64r6")] +#[path = "mips64r6/if_ether.rs"] +pub mod if_ether; +#[cfg(feature = "io_uring")] +#[cfg(target_arch = "mips64r6")] +#[path = "mips64r6/io_uring.rs"] +pub mod io_uring; +#[cfg(feature = "ioctl")] +#[cfg(target_arch = "mips64r6")] +#[path = "mips64r6/ioctl.rs"] +pub mod ioctl; +#[cfg(feature = "net")] +#[cfg(target_arch = "mips64r6")] +#[path = "mips64r6/net.rs"] +pub mod net; +#[cfg(feature = "netlink")] +#[cfg(target_arch = "mips64r6")] +#[path = "mips64r6/netlink.rs"] +pub mod netlink; +#[cfg(feature = "prctl")] +#[cfg(target_arch = "mips64r6")] +#[path = "mips64r6/prctl.rs"] +pub mod prctl; +#[cfg(feature = "system")] +#[cfg(target_arch = "mips64r6")] +#[path = "mips64r6/system.rs"] +pub mod system; #[cfg(feature = "errno")] #[cfg(target_arch = "powerpc")] #[path = "powerpc/errno.rs"] @@ -278,14 +447,34 @@ #[cfg(target_arch = "powerpc")] #[path = "powerpc/general.rs"] pub mod general; +#[cfg(feature = "if_ether")] +#[cfg(target_arch = "powerpc")] +#[path = "powerpc/if_ether.rs"] +pub mod if_ether; +#[cfg(feature = "io_uring")] +#[cfg(target_arch = "powerpc")] +#[path = "powerpc/io_uring.rs"] +pub mod io_uring; #[cfg(feature = "ioctl")] #[cfg(target_arch = "powerpc")] #[path = "powerpc/ioctl.rs"] pub mod ioctl; +#[cfg(feature = "net")] +#[cfg(target_arch = "powerpc")] +#[path = "powerpc/net.rs"] +pub mod net; #[cfg(feature = "netlink")] #[cfg(target_arch = "powerpc")] #[path = "powerpc/netlink.rs"] pub mod netlink; +#[cfg(feature = "prctl")] +#[cfg(target_arch = "powerpc")] +#[path = "powerpc/prctl.rs"] +pub mod prctl; +#[cfg(feature = "system")] +#[cfg(target_arch = "powerpc")] +#[path = "powerpc/system.rs"] +pub mod system; #[cfg(feature = "errno")] #[cfg(target_arch = "powerpc64")] #[path = "powerpc64/errno.rs"] @@ -294,14 +483,34 @@ #[cfg(target_arch = "powerpc64")] #[path = "powerpc64/general.rs"] pub mod general; +#[cfg(feature = "if_ether")] +#[cfg(target_arch = "powerpc64")] +#[path = "powerpc64/if_ether.rs"] +pub mod if_ether; +#[cfg(feature = "io_uring")] +#[cfg(target_arch = "powerpc64")] +#[path = "powerpc64/io_uring.rs"] +pub mod io_uring; #[cfg(feature = "ioctl")] #[cfg(target_arch = "powerpc64")] #[path = "powerpc64/ioctl.rs"] pub mod ioctl; +#[cfg(feature = "net")] +#[cfg(target_arch = "powerpc64")] +#[path = "powerpc64/net.rs"] +pub mod net; #[cfg(feature = "netlink")] #[cfg(target_arch = "powerpc64")] #[path = "powerpc64/netlink.rs"] pub mod netlink; +#[cfg(feature = "prctl")] +#[cfg(target_arch = "powerpc64")] +#[path = "powerpc64/prctl.rs"] +pub mod prctl; +#[cfg(feature = "system")] +#[cfg(target_arch = "powerpc64")] +#[path = "powerpc64/system.rs"] +pub mod system; #[cfg(feature = "errno")] #[cfg(target_arch = "riscv32")] #[path = "riscv32/errno.rs"] @@ -310,14 +519,34 @@ #[cfg(target_arch = "riscv32")] #[path = "riscv32/general.rs"] pub mod general; +#[cfg(feature = "if_ether")] +#[cfg(target_arch = "riscv32")] +#[path = "riscv32/if_ether.rs"] +pub mod if_ether; +#[cfg(feature = "io_uring")] +#[cfg(target_arch = "riscv32")] +#[path = "riscv32/io_uring.rs"] +pub mod io_uring; #[cfg(feature = "ioctl")] #[cfg(target_arch = "riscv32")] #[path = "riscv32/ioctl.rs"] pub mod ioctl; +#[cfg(feature = "net")] +#[cfg(target_arch = "riscv32")] +#[path = "riscv32/net.rs"] +pub mod net; #[cfg(feature = "netlink")] #[cfg(target_arch = "riscv32")] #[path = "riscv32/netlink.rs"] pub mod netlink; +#[cfg(feature = "prctl")] +#[cfg(target_arch = "riscv32")] +#[path = "riscv32/prctl.rs"] +pub mod prctl; +#[cfg(feature = "system")] +#[cfg(target_arch = "riscv32")] +#[path = "riscv32/system.rs"] +pub mod system; #[cfg(feature = "errno")] #[cfg(target_arch = "riscv64")] #[path = "riscv64/errno.rs"] @@ -326,14 +555,34 @@ #[cfg(target_arch = "riscv64")] #[path = "riscv64/general.rs"] pub mod general; +#[cfg(feature = "if_ether")] +#[cfg(target_arch = "riscv64")] +#[path = "riscv64/if_ether.rs"] +pub mod if_ether; +#[cfg(feature = "io_uring")] +#[cfg(target_arch = "riscv64")] +#[path = "riscv64/io_uring.rs"] +pub mod io_uring; #[cfg(feature = "ioctl")] #[cfg(target_arch = "riscv64")] #[path = "riscv64/ioctl.rs"] pub mod ioctl; +#[cfg(feature = "net")] +#[cfg(target_arch = "riscv64")] +#[path = "riscv64/net.rs"] +pub mod net; #[cfg(feature = "netlink")] #[cfg(target_arch = "riscv64")] #[path = "riscv64/netlink.rs"] pub mod netlink; +#[cfg(feature = "prctl")] +#[cfg(target_arch = "riscv64")] +#[path = "riscv64/prctl.rs"] +pub mod prctl; +#[cfg(feature = "system")] +#[cfg(target_arch = "riscv64")] +#[path = "riscv64/system.rs"] +pub mod system; #[cfg(feature = "errno")] #[cfg(target_arch = "s390x")] #[path = "s390x/errno.rs"] @@ -342,14 +591,34 @@ #[cfg(target_arch = "s390x")] #[path = "s390x/general.rs"] pub mod general; +#[cfg(feature = "if_ether")] +#[cfg(target_arch = "s390x")] +#[path = "s390x/if_ether.rs"] +pub mod if_ether; +#[cfg(feature = "io_uring")] +#[cfg(target_arch = "s390x")] +#[path = "s390x/io_uring.rs"] +pub mod io_uring; #[cfg(feature = "ioctl")] #[cfg(target_arch = "s390x")] #[path = "s390x/ioctl.rs"] pub mod ioctl; +#[cfg(feature = "net")] +#[cfg(target_arch = "s390x")] +#[path = "s390x/net.rs"] +pub mod net; #[cfg(feature = "netlink")] #[cfg(target_arch = "s390x")] #[path = "s390x/netlink.rs"] pub mod netlink; +#[cfg(feature = "prctl")] +#[cfg(target_arch = "s390x")] +#[path = "s390x/prctl.rs"] +pub mod prctl; +#[cfg(feature = "system")] +#[cfg(target_arch = "s390x")] +#[path = "s390x/system.rs"] +pub mod system; #[cfg(feature = "errno")] #[cfg(target_arch = "sparc")] #[path = "sparc/errno.rs"] @@ -358,14 +627,34 @@ #[cfg(target_arch = "sparc")] #[path = "sparc/general.rs"] pub mod general; +#[cfg(feature = "if_ether")] +#[cfg(target_arch = "sparc")] +#[path = "sparc/if_ether.rs"] +pub mod if_ether; +#[cfg(feature = "io_uring")] +#[cfg(target_arch = "sparc")] +#[path = "sparc/io_uring.rs"] +pub mod io_uring; #[cfg(feature = "ioctl")] #[cfg(target_arch = "sparc")] #[path = "sparc/ioctl.rs"] pub mod ioctl; +#[cfg(feature = "net")] +#[cfg(target_arch = "sparc")] +#[path = "sparc/net.rs"] +pub mod net; #[cfg(feature = "netlink")] #[cfg(target_arch = "sparc")] #[path = "sparc/netlink.rs"] pub mod netlink; +#[cfg(feature = "prctl")] +#[cfg(target_arch = "sparc")] +#[path = "sparc/prctl.rs"] +pub mod prctl; +#[cfg(feature = "system")] +#[cfg(target_arch = "sparc")] +#[path = "sparc/system.rs"] +pub mod system; #[cfg(feature = "errno")] #[cfg(target_arch = "sparc64")] #[path = "sparc64/errno.rs"] @@ -374,14 +663,34 @@ #[cfg(target_arch = "sparc64")] #[path = "sparc64/general.rs"] pub mod general; +#[cfg(feature = "if_ether")] +#[cfg(target_arch = "sparc64")] +#[path = "sparc64/if_ether.rs"] +pub mod if_ether; +#[cfg(feature = "io_uring")] +#[cfg(target_arch = "sparc64")] +#[path = "sparc64/io_uring.rs"] +pub mod io_uring; #[cfg(feature = "ioctl")] #[cfg(target_arch = "sparc64")] #[path = "sparc64/ioctl.rs"] pub mod ioctl; +#[cfg(feature = "net")] +#[cfg(target_arch = "sparc64")] +#[path = "sparc64/net.rs"] +pub mod net; #[cfg(feature = "netlink")] #[cfg(target_arch = "sparc64")] #[path = "sparc64/netlink.rs"] pub mod netlink; +#[cfg(feature = "prctl")] +#[cfg(target_arch = "sparc64")] +#[path = "sparc64/prctl.rs"] +pub mod prctl; +#[cfg(feature = "system")] +#[cfg(target_arch = "sparc64")] +#[path = "sparc64/system.rs"] +pub mod system; #[cfg(feature = "errno")] #[cfg(target_arch = "x86")] #[path = "x86/errno.rs"] @@ -390,14 +699,34 @@ #[cfg(target_arch = "x86")] #[path = "x86/general.rs"] pub mod general; +#[cfg(feature = "if_ether")] +#[cfg(target_arch = "x86")] +#[path = "x86/if_ether.rs"] +pub mod if_ether; +#[cfg(feature = "io_uring")] +#[cfg(target_arch = "x86")] +#[path = "x86/io_uring.rs"] +pub mod io_uring; #[cfg(feature = "ioctl")] #[cfg(target_arch = "x86")] #[path = "x86/ioctl.rs"] pub mod ioctl; +#[cfg(feature = "net")] +#[cfg(target_arch = "x86")] +#[path = "x86/net.rs"] +pub mod net; #[cfg(feature = "netlink")] #[cfg(target_arch = "x86")] #[path = "x86/netlink.rs"] pub mod netlink; +#[cfg(feature = "prctl")] +#[cfg(target_arch = "x86")] +#[path = "x86/prctl.rs"] +pub mod prctl; +#[cfg(feature = "system")] +#[cfg(target_arch = "x86")] +#[path = "x86/system.rs"] +pub mod system; #[cfg(feature = "errno")] #[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] #[path = "x86_64/errno.rs"] @@ -406,14 +735,34 @@ #[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] #[path = "x86_64/general.rs"] pub mod general; +#[cfg(feature = "if_ether")] +#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] +#[path = "x86_64/if_ether.rs"] +pub mod if_ether; +#[cfg(feature = "io_uring")] +#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] +#[path = "x86_64/io_uring.rs"] +pub mod io_uring; #[cfg(feature = "ioctl")] #[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] #[path = "x86_64/ioctl.rs"] pub mod ioctl; +#[cfg(feature = "net")] +#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] +#[path = "x86_64/net.rs"] +pub mod net; #[cfg(feature = "netlink")] #[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] #[path = "x86_64/netlink.rs"] pub mod netlink; +#[cfg(feature = "prctl")] +#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] +#[path = "x86_64/prctl.rs"] +pub mod prctl; +#[cfg(feature = "system")] +#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] +#[path = "x86_64/system.rs"] +pub mod system; #[cfg(feature = "errno")] #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] #[path = "x32/errno.rs"] @@ -422,11 +771,31 @@ #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] #[path = "x32/general.rs"] pub mod general; +#[cfg(feature = "if_ether")] +#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] +#[path = "x32/if_ether.rs"] +pub mod if_ether; +#[cfg(feature = "io_uring")] +#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] +#[path = "x32/io_uring.rs"] +pub mod io_uring; #[cfg(feature = "ioctl")] #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] #[path = "x32/ioctl.rs"] pub mod ioctl; +#[cfg(feature = "net")] +#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] +#[path = "x32/net.rs"] +pub mod net; #[cfg(feature = "netlink")] #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] #[path = "x32/netlink.rs"] pub mod netlink; +#[cfg(feature = "prctl")] +#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] +#[path = "x32/prctl.rs"] +pub mod prctl; +#[cfg(feature = "system")] +#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] +#[path = "x32/system.rs"] +pub mod system; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/errno.rs temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/errno.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/errno.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const EPERM: u32 = 1; pub const ENOENT: u32 = 2; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/general.rs temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/general.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/general.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/general.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,2735 +1,216 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_sighandler_t = ::core::option::Option; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type cap_user_header_t = *mut __user_cap_header_struct; +pub type cap_user_data_t = *mut __user_cap_data_struct; +pub type __kernel_rwf_t = crate::ctypes::c_int; +pub type old_sigset_t = crate::ctypes::c_ulong; +pub type __signalfn_t = ::core::option::Option; +pub type __sighandler_t = __signalfn_t; +pub type __restorefn_t = ::core::option::Option; +pub type __sigrestore_t = __restorefn_t; +pub type stack_t = sigaltstack; +pub type sigval_t = sigval; +pub type siginfo_t = siginfo; +pub type sigevent_t = sigevent; +pub type cc_t = crate::ctypes::c_uchar; +pub type speed_t = crate::ctypes::c_uint; +pub type tcflag_t = crate::ctypes::c_uint; +pub type __fsword_t = __kernel_long_t; #[repr(C)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct __BindgenBitfieldUnit { storage: Storage, } -impl __BindgenBitfieldUnit { -#[inline] -pub const fn new(storage: Storage) -> Self { -Self { storage } -} -} -impl __BindgenBitfieldUnit -where -Storage: AsRef<[u8]> + AsMut<[u8]>, -{ -#[inline] -pub fn get_bit(&self, index: usize) -> bool { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = self.storage.as_ref()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -byte & mask == mask -} -#[inline] -pub fn set_bit(&mut self, index: usize, val: bool) { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = &mut self.storage.as_mut()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -if val { -*byte |= mask; -} else { -*byte &= !mask; -} -} -#[inline] -pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -let mut val = 0; -for i in 0..(bit_width as usize) { -if self.get_bit(i + bit_offset) { -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -val |= 1 << index; -} -} -val -} -#[inline] -pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -for i in 0..(bit_width as usize) { -let mask = 1 << i; -let val_bit_is_set = val & mask == mask; -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -self.set_bit(index + bit_offset, val_bit_is_set); -} -} -} #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) -} -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fd_set { +pub fds_bits: [crate::ctypes::c_ulong; 16usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fsid_t { +pub val: [crate::ctypes::c_int; 2usize], } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_header_struct { +pub version: __u32, +pub pid: crate::ctypes::c_int, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_data_struct { +pub effective: __u32, +pub permitted: __u32, +pub inheritable: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data { +pub magic_etc: __le32, +pub data: [vfs_cap_data__bindgen_ty_1; 2usize], } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data { +pub magic_etc: __le32, +pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], +pub rootid: __le32, } #[repr(C)] -pub struct __BindgenUnionField(::core::marker::PhantomData); -impl __BindgenUnionField { -#[inline] -pub const fn new() -> Self { -__BindgenUnionField(::core::marker::PhantomData) +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } -#[inline] -pub unsafe fn as_ref(&self) -> &T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct f_owner_ex { +pub type_: crate::ctypes::c_int, +pub pid: __kernel_pid_t, } -#[inline] -pub unsafe fn as_mut(&mut self) -> &mut T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_off_t, +pub l_len: __kernel_off_t, +pub l_pid: __kernel_pid_t, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock64 { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_loff_t, +pub l_len: __kernel_loff_t, +pub l_pid: __kernel_pid_t, } -impl ::core::default::Default for __BindgenUnionField { -#[inline] -fn default() -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct open_how { +pub flags: __u64, +pub mode: __u64, +pub resolve: __u64, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct epoll_event { +pub events: __poll_t, +pub data: __u64, } -impl ::core::clone::Clone for __BindgenUnionField { -#[inline] -fn clone(&self) -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, } -impl ::core::marker::Copy for __BindgenUnionField {} -impl ::core::fmt::Debug for __BindgenUnionField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__BindgenUnionField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, } -impl ::core::hash::Hash for __BindgenUnionField { -fn hash(&self, _state: &mut H) {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, } -impl ::core::cmp::PartialEq for __BindgenUnionField { -fn eq(&self, _other: &__BindgenUnionField) -> bool { -true +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, } -} -impl ::core::cmp::Eq for __BindgenUnionField {} -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const AT_SYSINFO_EHDR: u32 = 33; -pub const AT_VECTOR_SIZE_ARCH: u32 = 1; -pub const AT_NULL: u32 = 0; -pub const AT_IGNORE: u32 = 1; -pub const AT_EXECFD: u32 = 2; -pub const AT_PHDR: u32 = 3; -pub const AT_PHENT: u32 = 4; -pub const AT_PHNUM: u32 = 5; -pub const AT_PAGESZ: u32 = 6; -pub const AT_BASE: u32 = 7; -pub const AT_FLAGS: u32 = 8; -pub const AT_ENTRY: u32 = 9; -pub const AT_NOTELF: u32 = 10; -pub const AT_UID: u32 = 11; -pub const AT_EUID: u32 = 12; -pub const AT_GID: u32 = 13; -pub const AT_EGID: u32 = 14; -pub const AT_PLATFORM: u32 = 15; -pub const AT_HWCAP: u32 = 16; -pub const AT_CLKTCK: u32 = 17; -pub const AT_SECURE: u32 = 23; -pub const AT_BASE_PLATFORM: u32 = 24; -pub const AT_RANDOM: u32 = 25; -pub const AT_HWCAP2: u32 = 26; -pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; -pub const AT_RSEQ_ALIGN: u32 = 28; -pub const AT_EXECFN: u32 = 31; -pub const AT_MINSIGSTKSZ: u32 = 51; -pub const __FD_SETSIZE: u32 = 1024; -pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; -pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; -pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; -pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; -pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; -pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; -pub const VFS_CAP_REVISION_SHIFT: u32 = 24; -pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; -pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; -pub const VFS_CAP_REVISION_1: u32 = 16777216; -pub const VFS_CAP_U32_1: u32 = 1; -pub const VFS_CAP_REVISION_2: u32 = 33554432; -pub const VFS_CAP_U32_2: u32 = 2; -pub const VFS_CAP_REVISION_3: u32 = 50331648; -pub const VFS_CAP_U32_3: u32 = 2; -pub const VFS_CAP_U32: u32 = 2; -pub const VFS_CAP_REVISION: u32 = 50331648; -pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S: u32 = 1; -pub const CAP_CHOWN: u32 = 0; -pub const CAP_DAC_OVERRIDE: u32 = 1; -pub const CAP_DAC_READ_SEARCH: u32 = 2; -pub const CAP_FOWNER: u32 = 3; -pub const CAP_FSETID: u32 = 4; -pub const CAP_KILL: u32 = 5; -pub const CAP_SETGID: u32 = 6; -pub const CAP_SETUID: u32 = 7; -pub const CAP_SETPCAP: u32 = 8; -pub const CAP_LINUX_IMMUTABLE: u32 = 9; -pub const CAP_NET_BIND_SERVICE: u32 = 10; -pub const CAP_NET_BROADCAST: u32 = 11; -pub const CAP_NET_ADMIN: u32 = 12; -pub const CAP_NET_RAW: u32 = 13; -pub const CAP_IPC_LOCK: u32 = 14; -pub const CAP_IPC_OWNER: u32 = 15; -pub const CAP_SYS_MODULE: u32 = 16; -pub const CAP_SYS_RAWIO: u32 = 17; -pub const CAP_SYS_CHROOT: u32 = 18; -pub const CAP_SYS_PTRACE: u32 = 19; -pub const CAP_SYS_PACCT: u32 = 20; -pub const CAP_SYS_ADMIN: u32 = 21; -pub const CAP_SYS_BOOT: u32 = 22; -pub const CAP_SYS_NICE: u32 = 23; -pub const CAP_SYS_RESOURCE: u32 = 24; -pub const CAP_SYS_TIME: u32 = 25; -pub const CAP_SYS_TTY_CONFIG: u32 = 26; -pub const CAP_MKNOD: u32 = 27; -pub const CAP_LEASE: u32 = 28; -pub const CAP_AUDIT_WRITE: u32 = 29; -pub const CAP_AUDIT_CONTROL: u32 = 30; -pub const CAP_SETFCAP: u32 = 31; -pub const CAP_MAC_OVERRIDE: u32 = 32; -pub const CAP_MAC_ADMIN: u32 = 33; -pub const CAP_SYSLOG: u32 = 34; -pub const CAP_WAKE_ALARM: u32 = 35; -pub const CAP_BLOCK_SUSPEND: u32 = 36; -pub const CAP_AUDIT_READ: u32 = 37; -pub const CAP_PERFMON: u32 = 38; -pub const CAP_BPF: u32 = 39; -pub const CAP_CHECKPOINT_RESTORE: u32 = 40; -pub const CAP_LAST_CAP: u32 = 40; -pub const O_ACCMODE: u32 = 3; -pub const O_RDONLY: u32 = 0; -pub const O_WRONLY: u32 = 1; -pub const O_RDWR: u32 = 2; -pub const O_CREAT: u32 = 64; -pub const O_EXCL: u32 = 128; -pub const O_NOCTTY: u32 = 256; -pub const O_TRUNC: u32 = 512; -pub const O_APPEND: u32 = 1024; -pub const O_NONBLOCK: u32 = 2048; -pub const O_DSYNC: u32 = 4096; -pub const FASYNC: u32 = 8192; -pub const O_DIRECT: u32 = 16384; -pub const O_LARGEFILE: u32 = 32768; -pub const O_DIRECTORY: u32 = 65536; -pub const O_NOFOLLOW: u32 = 131072; -pub const O_NOATIME: u32 = 262144; -pub const O_CLOEXEC: u32 = 524288; -pub const __O_SYNC: u32 = 1048576; -pub const O_SYNC: u32 = 1052672; -pub const O_PATH: u32 = 2097152; -pub const __O_TMPFILE: u32 = 4194304; -pub const O_TMPFILE: u32 = 4259840; -pub const O_TMPFILE_MASK: u32 = 4259904; -pub const O_NDELAY: u32 = 2048; -pub const F_DUPFD: u32 = 0; -pub const F_GETFD: u32 = 1; -pub const F_SETFD: u32 = 2; -pub const F_GETFL: u32 = 3; -pub const F_SETFL: u32 = 4; -pub const F_GETLK: u32 = 5; -pub const F_SETLK: u32 = 6; -pub const F_SETLKW: u32 = 7; -pub const F_SETOWN: u32 = 8; -pub const F_GETOWN: u32 = 9; -pub const F_SETSIG: u32 = 10; -pub const F_GETSIG: u32 = 11; -pub const F_SETOWN_EX: u32 = 15; -pub const F_GETOWN_EX: u32 = 16; -pub const F_GETOWNER_UIDS: u32 = 17; -pub const F_OFD_GETLK: u32 = 36; -pub const F_OFD_SETLK: u32 = 37; -pub const F_OFD_SETLKW: u32 = 38; -pub const F_OWNER_TID: u32 = 0; -pub const F_OWNER_PID: u32 = 1; -pub const F_OWNER_PGRP: u32 = 2; -pub const FD_CLOEXEC: u32 = 1; -pub const F_RDLCK: u32 = 0; -pub const F_WRLCK: u32 = 1; -pub const F_UNLCK: u32 = 2; -pub const F_EXLCK: u32 = 4; -pub const F_SHLCK: u32 = 8; -pub const LOCK_SH: u32 = 1; -pub const LOCK_EX: u32 = 2; -pub const LOCK_NB: u32 = 4; -pub const LOCK_UN: u32 = 8; -pub const LOCK_MAND: u32 = 32; -pub const LOCK_READ: u32 = 64; -pub const LOCK_WRITE: u32 = 128; -pub const LOCK_RW: u32 = 192; -pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; -pub const RESOLVE_NO_XDEV: u32 = 1; -pub const RESOLVE_NO_MAGICLINKS: u32 = 2; -pub const RESOLVE_NO_SYMLINKS: u32 = 4; -pub const RESOLVE_BENEATH: u32 = 8; -pub const RESOLVE_IN_ROOT: u32 = 16; -pub const RESOLVE_CACHED: u32 = 32; -pub const F_SETLEASE: u32 = 1024; -pub const F_GETLEASE: u32 = 1025; -pub const F_CANCELLK: u32 = 1029; -pub const F_DUPFD_CLOEXEC: u32 = 1030; -pub const F_NOTIFY: u32 = 1026; -pub const F_SETPIPE_SZ: u32 = 1031; -pub const F_GETPIPE_SZ: u32 = 1032; -pub const F_ADD_SEALS: u32 = 1033; -pub const F_GET_SEALS: u32 = 1034; -pub const F_SEAL_SEAL: u32 = 1; -pub const F_SEAL_SHRINK: u32 = 2; -pub const F_SEAL_GROW: u32 = 4; -pub const F_SEAL_WRITE: u32 = 8; -pub const F_SEAL_FUTURE_WRITE: u32 = 16; -pub const F_SEAL_EXEC: u32 = 32; -pub const F_GET_RW_HINT: u32 = 1035; -pub const F_SET_RW_HINT: u32 = 1036; -pub const F_GET_FILE_RW_HINT: u32 = 1037; -pub const F_SET_FILE_RW_HINT: u32 = 1038; -pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; -pub const RWH_WRITE_LIFE_NONE: u32 = 1; -pub const RWH_WRITE_LIFE_SHORT: u32 = 2; -pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; -pub const RWH_WRITE_LIFE_LONG: u32 = 4; -pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; -pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; -pub const DN_ACCESS: u32 = 1; -pub const DN_MODIFY: u32 = 2; -pub const DN_CREATE: u32 = 4; -pub const DN_DELETE: u32 = 8; -pub const DN_RENAME: u32 = 16; -pub const DN_ATTRIB: u32 = 32; -pub const DN_MULTISHOT: u32 = 2147483648; -pub const AT_FDCWD: i32 = -100; -pub const AT_SYMLINK_NOFOLLOW: u32 = 256; -pub const AT_EACCESS: u32 = 512; -pub const AT_REMOVEDIR: u32 = 512; -pub const AT_SYMLINK_FOLLOW: u32 = 1024; -pub const AT_NO_AUTOMOUNT: u32 = 2048; -pub const AT_EMPTY_PATH: u32 = 4096; -pub const AT_STATX_SYNC_TYPE: u32 = 24576; -pub const AT_STATX_SYNC_AS_STAT: u32 = 0; -pub const AT_STATX_FORCE_SYNC: u32 = 8192; -pub const AT_STATX_DONT_SYNC: u32 = 16384; -pub const AT_RECURSIVE: u32 = 32768; -pub const EPOLL_CLOEXEC: u32 = 524288; -pub const EPOLL_CTL_ADD: u32 = 1; -pub const EPOLL_CTL_DEL: u32 = 2; -pub const EPOLL_CTL_MOD: u32 = 3; -pub const POSIX_FADV_NORMAL: u32 = 0; -pub const POSIX_FADV_RANDOM: u32 = 1; -pub const POSIX_FADV_SEQUENTIAL: u32 = 2; -pub const POSIX_FADV_WILLNEED: u32 = 3; -pub const POSIX_FADV_DONTNEED: u32 = 4; -pub const POSIX_FADV_NOREUSE: u32 = 5; -pub const FALLOC_FL_KEEP_SIZE: u32 = 1; -pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; -pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; -pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; -pub const FALLOC_FL_ZERO_RANGE: u32 = 16; -pub const FALLOC_FL_INSERT_RANGE: u32 = 32; -pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; -pub const NR_OPEN: u32 = 1024; -pub const NGROUPS_MAX: u32 = 65536; -pub const ARG_MAX: u32 = 131072; -pub const LINK_MAX: u32 = 127; -pub const MAX_CANON: u32 = 255; -pub const MAX_INPUT: u32 = 255; -pub const NAME_MAX: u32 = 255; -pub const PATH_MAX: u32 = 4096; -pub const PIPE_BUF: u32 = 4096; -pub const XATTR_NAME_MAX: u32 = 255; -pub const XATTR_SIZE_MAX: u32 = 65536; -pub const XATTR_LIST_MAX: u32 = 65536; -pub const RTSIG_MAX: u32 = 32; -pub const _IOC_NRBITS: u32 = 8; -pub const _IOC_TYPEBITS: u32 = 8; -pub const _IOC_SIZEBITS: u32 = 14; -pub const _IOC_DIRBITS: u32 = 2; -pub const _IOC_NRMASK: u32 = 255; -pub const _IOC_TYPEMASK: u32 = 255; -pub const _IOC_SIZEMASK: u32 = 16383; -pub const _IOC_DIRMASK: u32 = 3; -pub const _IOC_NRSHIFT: u32 = 0; -pub const _IOC_TYPESHIFT: u32 = 8; -pub const _IOC_SIZESHIFT: u32 = 16; -pub const _IOC_DIRSHIFT: u32 = 30; -pub const _IOC_NONE: u32 = 0; -pub const _IOC_WRITE: u32 = 1; -pub const _IOC_READ: u32 = 2; -pub const IOC_IN: u32 = 1073741824; -pub const IOC_OUT: u32 = 2147483648; -pub const IOC_INOUT: u32 = 3221225472; -pub const IOCSIZE_MASK: u32 = 1073676288; -pub const IOCSIZE_SHIFT: u32 = 16; -pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; -pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; -pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; -pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; -pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; -pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; -pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; -pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; -pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; -pub const FSCRYPT_POLICY_V1: u32 = 0; -pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; -pub const FSCRYPT_POLICY_V2: u32 = 2; -pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; -pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; -pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; -pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; -pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; -pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; -pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; -pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FS_POLICY_FLAGS_VALID: u32 = 7; -pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; -pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; -pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; -pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; -pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; -pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; -pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; -pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; -pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FS_MAX_KEY_SIZE: u32 = 64; -pub const MS_RDONLY: u32 = 1; -pub const MS_NOSUID: u32 = 2; -pub const MS_NODEV: u32 = 4; -pub const MS_NOEXEC: u32 = 8; -pub const MS_SYNCHRONOUS: u32 = 16; -pub const MS_REMOUNT: u32 = 32; -pub const MS_MANDLOCK: u32 = 64; -pub const MS_DIRSYNC: u32 = 128; -pub const MS_NOSYMFOLLOW: u32 = 256; -pub const MS_NOATIME: u32 = 1024; -pub const MS_NODIRATIME: u32 = 2048; -pub const MS_BIND: u32 = 4096; -pub const MS_MOVE: u32 = 8192; -pub const MS_REC: u32 = 16384; -pub const MS_VERBOSE: u32 = 32768; -pub const MS_SILENT: u32 = 32768; -pub const MS_POSIXACL: u32 = 65536; -pub const MS_UNBINDABLE: u32 = 131072; -pub const MS_PRIVATE: u32 = 262144; -pub const MS_SLAVE: u32 = 524288; -pub const MS_SHARED: u32 = 1048576; -pub const MS_RELATIME: u32 = 2097152; -pub const MS_KERNMOUNT: u32 = 4194304; -pub const MS_I_VERSION: u32 = 8388608; -pub const MS_STRICTATIME: u32 = 16777216; -pub const MS_LAZYTIME: u32 = 33554432; -pub const MS_SUBMOUNT: u32 = 67108864; -pub const MS_NOREMOTELOCK: u32 = 134217728; -pub const MS_NOSEC: u32 = 268435456; -pub const MS_BORN: u32 = 536870912; -pub const MS_ACTIVE: u32 = 1073741824; -pub const MS_NOUSER: u32 = 2147483648; -pub const MS_RMT_MASK: u32 = 41943121; -pub const MS_MGC_VAL: u32 = 3236757504; -pub const MS_MGC_MSK: u32 = 4294901760; -pub const OPEN_TREE_CLONE: u32 = 1; -pub const OPEN_TREE_CLOEXEC: u32 = 524288; -pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; -pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; -pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; -pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; -pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; -pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; -pub const MOVE_MOUNT_SET_GROUP: u32 = 256; -pub const MOVE_MOUNT__MASK: u32 = 375; -pub const FSOPEN_CLOEXEC: u32 = 1; -pub const FSPICK_CLOEXEC: u32 = 1; -pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; -pub const FSPICK_NO_AUTOMOUNT: u32 = 4; -pub const FSPICK_EMPTY_PATH: u32 = 8; -pub const FSMOUNT_CLOEXEC: u32 = 1; -pub const MOUNT_ATTR_RDONLY: u32 = 1; -pub const MOUNT_ATTR_NOSUID: u32 = 2; -pub const MOUNT_ATTR_NODEV: u32 = 4; -pub const MOUNT_ATTR_NOEXEC: u32 = 8; -pub const MOUNT_ATTR__ATIME: u32 = 112; -pub const MOUNT_ATTR_RELATIME: u32 = 0; -pub const MOUNT_ATTR_NOATIME: u32 = 16; -pub const MOUNT_ATTR_STRICTATIME: u32 = 32; -pub const MOUNT_ATTR_NODIRATIME: u32 = 128; -pub const MOUNT_ATTR_IDMAP: u32 = 1048576; -pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; -pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; -pub const INR_OPEN_CUR: u32 = 1024; -pub const INR_OPEN_MAX: u32 = 4096; -pub const BLOCK_SIZE_BITS: u32 = 10; -pub const BLOCK_SIZE: u32 = 1024; -pub const SEEK_SET: u32 = 0; -pub const SEEK_CUR: u32 = 1; -pub const SEEK_END: u32 = 2; -pub const SEEK_DATA: u32 = 3; -pub const SEEK_HOLE: u32 = 4; -pub const SEEK_MAX: u32 = 4; -pub const RENAME_NOREPLACE: u32 = 1; -pub const RENAME_EXCHANGE: u32 = 2; -pub const RENAME_WHITEOUT: u32 = 4; -pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; -pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; -pub const NR_FILE: u32 = 8192; -pub const FS_XFLAG_REALTIME: u32 = 1; -pub const FS_XFLAG_PREALLOC: u32 = 2; -pub const FS_XFLAG_IMMUTABLE: u32 = 8; -pub const FS_XFLAG_APPEND: u32 = 16; -pub const FS_XFLAG_SYNC: u32 = 32; -pub const FS_XFLAG_NOATIME: u32 = 64; -pub const FS_XFLAG_NODUMP: u32 = 128; -pub const FS_XFLAG_RTINHERIT: u32 = 256; -pub const FS_XFLAG_PROJINHERIT: u32 = 512; -pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; -pub const FS_XFLAG_EXTSIZE: u32 = 2048; -pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; -pub const FS_XFLAG_NODEFRAG: u32 = 8192; -pub const FS_XFLAG_FILESTREAM: u32 = 16384; -pub const FS_XFLAG_DAX: u32 = 32768; -pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; -pub const FS_XFLAG_HASATTR: u32 = 2147483648; -pub const BMAP_IOCTL: u32 = 1; -pub const FSLABEL_MAX: u32 = 256; -pub const FS_SECRM_FL: u32 = 1; -pub const FS_UNRM_FL: u32 = 2; -pub const FS_COMPR_FL: u32 = 4; -pub const FS_SYNC_FL: u32 = 8; -pub const FS_IMMUTABLE_FL: u32 = 16; -pub const FS_APPEND_FL: u32 = 32; -pub const FS_NODUMP_FL: u32 = 64; -pub const FS_NOATIME_FL: u32 = 128; -pub const FS_DIRTY_FL: u32 = 256; -pub const FS_COMPRBLK_FL: u32 = 512; -pub const FS_NOCOMP_FL: u32 = 1024; -pub const FS_ENCRYPT_FL: u32 = 2048; -pub const FS_BTREE_FL: u32 = 4096; -pub const FS_INDEX_FL: u32 = 4096; -pub const FS_IMAGIC_FL: u32 = 8192; -pub const FS_JOURNAL_DATA_FL: u32 = 16384; -pub const FS_NOTAIL_FL: u32 = 32768; -pub const FS_DIRSYNC_FL: u32 = 65536; -pub const FS_TOPDIR_FL: u32 = 131072; -pub const FS_HUGE_FILE_FL: u32 = 262144; -pub const FS_EXTENT_FL: u32 = 524288; -pub const FS_VERITY_FL: u32 = 1048576; -pub const FS_EA_INODE_FL: u32 = 2097152; -pub const FS_EOFBLOCKS_FL: u32 = 4194304; -pub const FS_NOCOW_FL: u32 = 8388608; -pub const FS_DAX_FL: u32 = 33554432; -pub const FS_INLINE_DATA_FL: u32 = 268435456; -pub const FS_PROJINHERIT_FL: u32 = 536870912; -pub const FS_CASEFOLD_FL: u32 = 1073741824; -pub const FS_RESERVED_FL: u32 = 2147483648; -pub const FS_FL_USER_VISIBLE: u32 = 253951; -pub const FS_FL_USER_MODIFIABLE: u32 = 229631; -pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; -pub const SYNC_FILE_RANGE_WRITE: u32 = 2; -pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; -pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; -pub const FUTEX_WAIT: u32 = 0; -pub const FUTEX_WAKE: u32 = 1; -pub const FUTEX_FD: u32 = 2; -pub const FUTEX_REQUEUE: u32 = 3; -pub const FUTEX_CMP_REQUEUE: u32 = 4; -pub const FUTEX_WAKE_OP: u32 = 5; -pub const FUTEX_LOCK_PI: u32 = 6; -pub const FUTEX_UNLOCK_PI: u32 = 7; -pub const FUTEX_TRYLOCK_PI: u32 = 8; -pub const FUTEX_WAIT_BITSET: u32 = 9; -pub const FUTEX_WAKE_BITSET: u32 = 10; -pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; -pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; -pub const FUTEX_LOCK_PI2: u32 = 13; -pub const FUTEX_PRIVATE_FLAG: u32 = 128; -pub const FUTEX_CLOCK_REALTIME: u32 = 256; -pub const FUTEX_CMD_MASK: i32 = -385; -pub const FUTEX_WAIT_PRIVATE: u32 = 128; -pub const FUTEX_WAKE_PRIVATE: u32 = 129; -pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; -pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; -pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; -pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; -pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; -pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; -pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; -pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; -pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; -pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; -pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; -pub const FUTEX_32: u32 = 2; -pub const FUTEX_WAITV_MAX: u32 = 128; -pub const FUTEX_WAITERS: u32 = 2147483648; -pub const FUTEX_OWNER_DIED: u32 = 1073741824; -pub const FUTEX_TID_MASK: u32 = 1073741823; -pub const ROBUST_LIST_LIMIT: u32 = 2048; -pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; -pub const FUTEX_OP_SET: u32 = 0; -pub const FUTEX_OP_ADD: u32 = 1; -pub const FUTEX_OP_OR: u32 = 2; -pub const FUTEX_OP_ANDN: u32 = 3; -pub const FUTEX_OP_XOR: u32 = 4; -pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; -pub const FUTEX_OP_CMP_EQ: u32 = 0; -pub const FUTEX_OP_CMP_NE: u32 = 1; -pub const FUTEX_OP_CMP_LT: u32 = 2; -pub const FUTEX_OP_CMP_LE: u32 = 3; -pub const FUTEX_OP_CMP_GT: u32 = 4; -pub const FUTEX_OP_CMP_GE: u32 = 5; -pub const __UAPI_DEF_IF_IFCONF: u32 = 1; -pub const __UAPI_DEF_IF_IFMAP: u32 = 1; -pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1; -pub const __UAPI_DEF_IF_IFREQ: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1; -pub const __UAPI_DEF_IN_ADDR: u32 = 1; -pub const __UAPI_DEF_IN_IPPROTO: u32 = 1; -pub const __UAPI_DEF_IN_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP_MREQ: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1; -pub const __UAPI_DEF_IN_CLASS: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1; -pub const __UAPI_DEF_IPV6_MREQ: u32 = 1; -pub const __UAPI_DEF_IPPROTO_V6: u32 = 1; -pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1; -pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1; -pub const __UAPI_DEF_XATTR: u32 = 1; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const IP_TOS: u32 = 1; -pub const IP_TTL: u32 = 2; -pub const IP_HDRINCL: u32 = 3; -pub const IP_OPTIONS: u32 = 4; -pub const IP_ROUTER_ALERT: u32 = 5; -pub const IP_RECVOPTS: u32 = 6; -pub const IP_RETOPTS: u32 = 7; -pub const IP_PKTINFO: u32 = 8; -pub const IP_PKTOPTIONS: u32 = 9; -pub const IP_MTU_DISCOVER: u32 = 10; -pub const IP_RECVERR: u32 = 11; -pub const IP_RECVTTL: u32 = 12; -pub const IP_RECVTOS: u32 = 13; -pub const IP_MTU: u32 = 14; -pub const IP_FREEBIND: u32 = 15; -pub const IP_IPSEC_POLICY: u32 = 16; -pub const IP_XFRM_POLICY: u32 = 17; -pub const IP_PASSSEC: u32 = 18; -pub const IP_TRANSPARENT: u32 = 19; -pub const IP_RECVRETOPTS: u32 = 7; -pub const IP_ORIGDSTADDR: u32 = 20; -pub const IP_RECVORIGDSTADDR: u32 = 20; -pub const IP_MINTTL: u32 = 21; -pub const IP_NODEFRAG: u32 = 22; -pub const IP_CHECKSUM: u32 = 23; -pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; -pub const IP_RECVFRAGSIZE: u32 = 25; -pub const IP_RECVERR_RFC4884: u32 = 26; -pub const IP_PMTUDISC_DONT: u32 = 0; -pub const IP_PMTUDISC_WANT: u32 = 1; -pub const IP_PMTUDISC_DO: u32 = 2; -pub const IP_PMTUDISC_PROBE: u32 = 3; -pub const IP_PMTUDISC_INTERFACE: u32 = 4; -pub const IP_PMTUDISC_OMIT: u32 = 5; -pub const IP_MULTICAST_IF: u32 = 32; -pub const IP_MULTICAST_TTL: u32 = 33; -pub const IP_MULTICAST_LOOP: u32 = 34; -pub const IP_ADD_MEMBERSHIP: u32 = 35; -pub const IP_DROP_MEMBERSHIP: u32 = 36; -pub const IP_UNBLOCK_SOURCE: u32 = 37; -pub const IP_BLOCK_SOURCE: u32 = 38; -pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; -pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; -pub const IP_MSFILTER: u32 = 41; -pub const MCAST_JOIN_GROUP: u32 = 42; -pub const MCAST_BLOCK_SOURCE: u32 = 43; -pub const MCAST_UNBLOCK_SOURCE: u32 = 44; -pub const MCAST_LEAVE_GROUP: u32 = 45; -pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; -pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; -pub const MCAST_MSFILTER: u32 = 48; -pub const IP_MULTICAST_ALL: u32 = 49; -pub const IP_UNICAST_IF: u32 = 50; -pub const IP_LOCAL_PORT_RANGE: u32 = 51; -pub const MCAST_EXCLUDE: u32 = 0; -pub const MCAST_INCLUDE: u32 = 1; -pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; -pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const __SOCK_SIZE__: u32 = 16; -pub const IN_CLASSA_NET: u32 = 4278190080; -pub const IN_CLASSA_NSHIFT: u32 = 24; -pub const IN_CLASSA_HOST: u32 = 16777215; -pub const IN_CLASSA_MAX: u32 = 128; -pub const IN_CLASSB_NET: u32 = 4294901760; -pub const IN_CLASSB_NSHIFT: u32 = 16; -pub const IN_CLASSB_HOST: u32 = 65535; -pub const IN_CLASSB_MAX: u32 = 65536; -pub const IN_CLASSC_NET: u32 = 4294967040; -pub const IN_CLASSC_NSHIFT: u32 = 8; -pub const IN_CLASSC_HOST: u32 = 255; -pub const IN_MULTICAST_NET: u32 = 3758096384; -pub const IN_CLASSE_NET: u32 = 4294967295; -pub const IN_CLASSE_NSHIFT: u32 = 0; -pub const IN_LOOPBACKNET: u32 = 127; -pub const INADDR_LOOPBACK: u32 = 2130706433; -pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; -pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; -pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; -pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; -pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; -pub const __LITTLE_ENDIAN: u32 = 1234; -pub const IN_ACCESS: u32 = 1; -pub const IN_MODIFY: u32 = 2; -pub const IN_ATTRIB: u32 = 4; -pub const IN_CLOSE_WRITE: u32 = 8; -pub const IN_CLOSE_NOWRITE: u32 = 16; -pub const IN_OPEN: u32 = 32; -pub const IN_MOVED_FROM: u32 = 64; -pub const IN_MOVED_TO: u32 = 128; -pub const IN_CREATE: u32 = 256; -pub const IN_DELETE: u32 = 512; -pub const IN_DELETE_SELF: u32 = 1024; -pub const IN_MOVE_SELF: u32 = 2048; -pub const IN_UNMOUNT: u32 = 8192; -pub const IN_Q_OVERFLOW: u32 = 16384; -pub const IN_IGNORED: u32 = 32768; -pub const IN_CLOSE: u32 = 24; -pub const IN_MOVE: u32 = 192; -pub const IN_ONLYDIR: u32 = 16777216; -pub const IN_DONT_FOLLOW: u32 = 33554432; -pub const IN_EXCL_UNLINK: u32 = 67108864; -pub const IN_MASK_CREATE: u32 = 268435456; -pub const IN_MASK_ADD: u32 = 536870912; -pub const IN_ISDIR: u32 = 1073741824; -pub const IN_ONESHOT: u32 = 2147483648; -pub const IN_ALL_EVENTS: u32 = 4095; -pub const IN_CLOEXEC: u32 = 524288; -pub const IN_NONBLOCK: u32 = 2048; -pub const IPTOS_TOS_MASK: u32 = 30; -pub const IPTOS_LOWDELAY: u32 = 16; -pub const IPTOS_THROUGHPUT: u32 = 8; -pub const IPTOS_RELIABILITY: u32 = 4; -pub const IPTOS_MINCOST: u32 = 2; -pub const IPTOS_PREC_MASK: u32 = 224; -pub const IPTOS_PREC_NETCONTROL: u32 = 224; -pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; -pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; -pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; -pub const IPTOS_PREC_FLASH: u32 = 96; -pub const IPTOS_PREC_IMMEDIATE: u32 = 64; -pub const IPTOS_PREC_PRIORITY: u32 = 32; -pub const IPTOS_PREC_ROUTINE: u32 = 0; -pub const IPOPT_COPY: u32 = 128; -pub const IPOPT_CLASS_MASK: u32 = 96; -pub const IPOPT_NUMBER_MASK: u32 = 31; -pub const IPOPT_CONTROL: u32 = 0; -pub const IPOPT_RESERVED1: u32 = 32; -pub const IPOPT_MEASUREMENT: u32 = 64; -pub const IPOPT_RESERVED2: u32 = 96; -pub const IPOPT_END: u32 = 0; -pub const IPOPT_NOOP: u32 = 1; -pub const IPOPT_SEC: u32 = 130; -pub const IPOPT_LSRR: u32 = 131; -pub const IPOPT_TIMESTAMP: u32 = 68; -pub const IPOPT_CIPSO: u32 = 134; -pub const IPOPT_RR: u32 = 7; -pub const IPOPT_SID: u32 = 136; -pub const IPOPT_SSRR: u32 = 137; -pub const IPOPT_RA: u32 = 148; -pub const IPVERSION: u32 = 4; -pub const MAXTTL: u32 = 255; -pub const IPDEFTTL: u32 = 64; -pub const IPOPT_OPTVAL: u32 = 0; -pub const IPOPT_OLEN: u32 = 1; -pub const IPOPT_OFFSET: u32 = 2; -pub const IPOPT_MINOFF: u32 = 4; -pub const MAX_IPOPTLEN: u32 = 40; -pub const IPOPT_NOP: u32 = 1; -pub const IPOPT_EOL: u32 = 0; -pub const IPOPT_TS: u32 = 68; -pub const IPOPT_TS_TSONLY: u32 = 0; -pub const IPOPT_TS_TSANDADDR: u32 = 1; -pub const IPOPT_TS_PRESPEC: u32 = 3; -pub const IPV4_BEET_PHMAXLEN: u32 = 8; -pub const IPV6_FL_A_GET: u32 = 0; -pub const IPV6_FL_A_PUT: u32 = 1; -pub const IPV6_FL_A_RENEW: u32 = 2; -pub const IPV6_FL_F_CREATE: u32 = 1; -pub const IPV6_FL_F_EXCL: u32 = 2; -pub const IPV6_FL_F_REFLECT: u32 = 4; -pub const IPV6_FL_F_REMOTE: u32 = 8; -pub const IPV6_FL_S_NONE: u32 = 0; -pub const IPV6_FL_S_EXCL: u32 = 1; -pub const IPV6_FL_S_PROCESS: u32 = 2; -pub const IPV6_FL_S_USER: u32 = 3; -pub const IPV6_FL_S_ANY: u32 = 255; -pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; -pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; -pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; -pub const IPV6_PRIORITY_FILLER: u32 = 256; -pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; -pub const IPV6_PRIORITY_RESERVED1: u32 = 768; -pub const IPV6_PRIORITY_BULK: u32 = 1024; -pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; -pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; -pub const IPV6_PRIORITY_CONTROL: u32 = 1792; -pub const IPV6_PRIORITY_8: u32 = 2048; -pub const IPV6_PRIORITY_9: u32 = 2304; -pub const IPV6_PRIORITY_10: u32 = 2560; -pub const IPV6_PRIORITY_11: u32 = 2816; -pub const IPV6_PRIORITY_12: u32 = 3072; -pub const IPV6_PRIORITY_13: u32 = 3328; -pub const IPV6_PRIORITY_14: u32 = 3584; -pub const IPV6_PRIORITY_15: u32 = 3840; -pub const IPPROTO_HOPOPTS: u32 = 0; -pub const IPPROTO_ROUTING: u32 = 43; -pub const IPPROTO_FRAGMENT: u32 = 44; -pub const IPPROTO_ICMPV6: u32 = 58; -pub const IPPROTO_NONE: u32 = 59; -pub const IPPROTO_DSTOPTS: u32 = 60; -pub const IPPROTO_MH: u32 = 135; -pub const IPV6_TLV_PAD1: u32 = 0; -pub const IPV6_TLV_PADN: u32 = 1; -pub const IPV6_TLV_ROUTERALERT: u32 = 5; -pub const IPV6_TLV_CALIPSO: u32 = 7; -pub const IPV6_TLV_IOAM: u32 = 49; -pub const IPV6_TLV_JUMBO: u32 = 194; -pub const IPV6_TLV_HAO: u32 = 201; -pub const IPV6_ADDRFORM: u32 = 1; -pub const IPV6_2292PKTINFO: u32 = 2; -pub const IPV6_2292HOPOPTS: u32 = 3; -pub const IPV6_2292DSTOPTS: u32 = 4; -pub const IPV6_2292RTHDR: u32 = 5; -pub const IPV6_2292PKTOPTIONS: u32 = 6; -pub const IPV6_CHECKSUM: u32 = 7; -pub const IPV6_2292HOPLIMIT: u32 = 8; -pub const IPV6_NEXTHOP: u32 = 9; -pub const IPV6_AUTHHDR: u32 = 10; -pub const IPV6_FLOWINFO: u32 = 11; -pub const IPV6_UNICAST_HOPS: u32 = 16; -pub const IPV6_MULTICAST_IF: u32 = 17; -pub const IPV6_MULTICAST_HOPS: u32 = 18; -pub const IPV6_MULTICAST_LOOP: u32 = 19; -pub const IPV6_ADD_MEMBERSHIP: u32 = 20; -pub const IPV6_DROP_MEMBERSHIP: u32 = 21; -pub const IPV6_ROUTER_ALERT: u32 = 22; -pub const IPV6_MTU_DISCOVER: u32 = 23; -pub const IPV6_MTU: u32 = 24; -pub const IPV6_RECVERR: u32 = 25; -pub const IPV6_V6ONLY: u32 = 26; -pub const IPV6_JOIN_ANYCAST: u32 = 27; -pub const IPV6_LEAVE_ANYCAST: u32 = 28; -pub const IPV6_MULTICAST_ALL: u32 = 29; -pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; -pub const IPV6_RECVERR_RFC4884: u32 = 31; -pub const IPV6_PMTUDISC_DONT: u32 = 0; -pub const IPV6_PMTUDISC_WANT: u32 = 1; -pub const IPV6_PMTUDISC_DO: u32 = 2; -pub const IPV6_PMTUDISC_PROBE: u32 = 3; -pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; -pub const IPV6_PMTUDISC_OMIT: u32 = 5; -pub const IPV6_FLOWLABEL_MGR: u32 = 32; -pub const IPV6_FLOWINFO_SEND: u32 = 33; -pub const IPV6_IPSEC_POLICY: u32 = 34; -pub const IPV6_XFRM_POLICY: u32 = 35; -pub const IPV6_HDRINCL: u32 = 36; -pub const IPV6_RECVPKTINFO: u32 = 49; -pub const IPV6_PKTINFO: u32 = 50; -pub const IPV6_RECVHOPLIMIT: u32 = 51; -pub const IPV6_HOPLIMIT: u32 = 52; -pub const IPV6_RECVHOPOPTS: u32 = 53; -pub const IPV6_HOPOPTS: u32 = 54; -pub const IPV6_RTHDRDSTOPTS: u32 = 55; -pub const IPV6_RECVRTHDR: u32 = 56; -pub const IPV6_RTHDR: u32 = 57; -pub const IPV6_RECVDSTOPTS: u32 = 58; -pub const IPV6_DSTOPTS: u32 = 59; -pub const IPV6_RECVPATHMTU: u32 = 60; -pub const IPV6_PATHMTU: u32 = 61; -pub const IPV6_DONTFRAG: u32 = 62; -pub const IPV6_RECVTCLASS: u32 = 66; -pub const IPV6_TCLASS: u32 = 67; -pub const IPV6_AUTOFLOWLABEL: u32 = 70; -pub const IPV6_ADDR_PREFERENCES: u32 = 72; -pub const IPV6_PREFER_SRC_TMP: u32 = 1; -pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; -pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; -pub const IPV6_PREFER_SRC_COA: u32 = 4; -pub const IPV6_PREFER_SRC_HOME: u32 = 1024; -pub const IPV6_PREFER_SRC_CGA: u32 = 8; -pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; -pub const IPV6_MINHOPCOUNT: u32 = 73; -pub const IPV6_ORIGDSTADDR: u32 = 74; -pub const IPV6_RECVORIGDSTADDR: u32 = 74; -pub const IPV6_TRANSPARENT: u32 = 75; -pub const IPV6_UNICAST_IF: u32 = 76; -pub const IPV6_RECVFRAGSIZE: u32 = 77; -pub const IPV6_FREEBIND: u32 = 78; -pub const IPV6_MIN_MTU: u32 = 1280; -pub const IPV6_SRCRT_STRICT: u32 = 1; -pub const IPV6_SRCRT_TYPE_0: u32 = 0; -pub const IPV6_SRCRT_TYPE_2: u32 = 2; -pub const IPV6_SRCRT_TYPE_3: u32 = 3; -pub const IPV6_SRCRT_TYPE_4: u32 = 4; -pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; -pub const ADFS_SUPER_MAGIC: u32 = 44533; -pub const AFFS_SUPER_MAGIC: u32 = 44543; -pub const AFS_SUPER_MAGIC: u32 = 1397113167; -pub const AUTOFS_SUPER_MAGIC: u32 = 391; -pub const CEPH_SUPER_MAGIC: u32 = 12805120; -pub const CODA_SUPER_MAGIC: u32 = 1937076805; -pub const CRAMFS_MAGIC: u32 = 684539205; -pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; -pub const DEBUGFS_MAGIC: u32 = 1684170528; -pub const SECURITYFS_MAGIC: u32 = 1935894131; -pub const SELINUX_MAGIC: u32 = 4185718668; -pub const SMACK_MAGIC: u32 = 1128357203; -pub const RAMFS_MAGIC: u32 = 2240043254; -pub const TMPFS_MAGIC: u32 = 16914836; -pub const HUGETLBFS_MAGIC: u32 = 2508478710; -pub const SQUASHFS_MAGIC: u32 = 1936814952; -pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; -pub const EFS_SUPER_MAGIC: u32 = 4278867; -pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; -pub const EXT2_SUPER_MAGIC: u32 = 61267; -pub const EXT3_SUPER_MAGIC: u32 = 61267; -pub const XENFS_SUPER_MAGIC: u32 = 2881100148; -pub const EXT4_SUPER_MAGIC: u32 = 61267; -pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; -pub const NILFS_SUPER_MAGIC: u32 = 13364; -pub const F2FS_SUPER_MAGIC: u32 = 4076150800; -pub const HPFS_SUPER_MAGIC: u32 = 4187351113; -pub const ISOFS_SUPER_MAGIC: u32 = 38496; -pub const JFFS2_SUPER_MAGIC: u32 = 29366; -pub const XFS_SUPER_MAGIC: u32 = 1481003842; -pub const PSTOREFS_MAGIC: u32 = 1634035564; -pub const EFIVARFS_MAGIC: u32 = 3730735588; -pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; -pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; -pub const FUSE_SUPER_MAGIC: u32 = 1702057286; -pub const MINIX_SUPER_MAGIC: u32 = 4991; -pub const MINIX_SUPER_MAGIC2: u32 = 5007; -pub const MINIX2_SUPER_MAGIC: u32 = 9320; -pub const MINIX2_SUPER_MAGIC2: u32 = 9336; -pub const MINIX3_SUPER_MAGIC: u32 = 19802; -pub const MSDOS_SUPER_MAGIC: u32 = 19780; -pub const EXFAT_SUPER_MAGIC: u32 = 538032816; -pub const NCP_SUPER_MAGIC: u32 = 22092; -pub const NFS_SUPER_MAGIC: u32 = 26985; -pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; -pub const OPENPROM_SUPER_MAGIC: u32 = 40865; -pub const QNX4_SUPER_MAGIC: u32 = 47; -pub const QNX6_SUPER_MAGIC: u32 = 1746473250; -pub const AFS_FS_MAGIC: u32 = 1799439955; -pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; -pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0"; -pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0"; -pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0"; -pub const SMB_SUPER_MAGIC: u32 = 20859; -pub const CIFS_SUPER_MAGIC: u32 = 4283649346; -pub const SMB2_SUPER_MAGIC: u32 = 4266872130; -pub const CGROUP_SUPER_MAGIC: u32 = 2613483; -pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; -pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; -pub const STACK_END_MAGIC: u32 = 1470918301; -pub const TRACEFS_MAGIC: u32 = 1953653091; -pub const V9FS_MAGIC: u32 = 16914839; -pub const BDEVFS_MAGIC: u32 = 1650746742; -pub const DAXFS_MAGIC: u32 = 1684300152; -pub const BINFMTFS_MAGIC: u32 = 1112100429; -pub const DEVPTS_SUPER_MAGIC: u32 = 7377; -pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; -pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; -pub const PIPEFS_MAGIC: u32 = 1346981957; -pub const PROC_SUPER_MAGIC: u32 = 40864; -pub const SOCKFS_MAGIC: u32 = 1397703499; -pub const SYSFS_MAGIC: u32 = 1650812274; -pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; -pub const MTD_INODE_FS_MAGIC: u32 = 288389204; -pub const ANON_INODE_FS_MAGIC: u32 = 151263540; -pub const BTRFS_TEST_MAGIC: u32 = 1936880249; -pub const NSFS_MAGIC: u32 = 1853056627; -pub const BPF_FS_MAGIC: u32 = 3405662737; -pub const AAFS_MAGIC: u32 = 1513908720; -pub const ZONEFS_MAGIC: u32 = 1515144787; -pub const UDF_SUPER_MAGIC: u32 = 352400198; -pub const DMA_BUF_MAGIC: u32 = 1145913666; -pub const DEVMEM_MAGIC: u32 = 1162691661; -pub const SECRETMEM_MAGIC: u32 = 1397048141; -pub const PROT_READ: u32 = 1; -pub const PROT_WRITE: u32 = 2; -pub const PROT_EXEC: u32 = 4; -pub const PROT_SEM: u32 = 8; -pub const PROT_NONE: u32 = 0; -pub const PROT_GROWSDOWN: u32 = 16777216; -pub const PROT_GROWSUP: u32 = 33554432; -pub const MAP_TYPE: u32 = 15; -pub const MAP_FIXED: u32 = 16; -pub const MAP_ANONYMOUS: u32 = 32; -pub const MAP_POPULATE: u32 = 32768; -pub const MAP_NONBLOCK: u32 = 65536; -pub const MAP_STACK: u32 = 131072; -pub const MAP_HUGETLB: u32 = 262144; -pub const MAP_SYNC: u32 = 524288; -pub const MAP_FIXED_NOREPLACE: u32 = 1048576; -pub const MAP_UNINITIALIZED: u32 = 67108864; -pub const MLOCK_ONFAULT: u32 = 1; -pub const MS_ASYNC: u32 = 1; -pub const MS_INVALIDATE: u32 = 2; -pub const MS_SYNC: u32 = 4; -pub const MADV_NORMAL: u32 = 0; -pub const MADV_RANDOM: u32 = 1; -pub const MADV_SEQUENTIAL: u32 = 2; -pub const MADV_WILLNEED: u32 = 3; -pub const MADV_DONTNEED: u32 = 4; -pub const MADV_FREE: u32 = 8; -pub const MADV_REMOVE: u32 = 9; -pub const MADV_DONTFORK: u32 = 10; -pub const MADV_DOFORK: u32 = 11; -pub const MADV_HWPOISON: u32 = 100; -pub const MADV_SOFT_OFFLINE: u32 = 101; -pub const MADV_MERGEABLE: u32 = 12; -pub const MADV_UNMERGEABLE: u32 = 13; -pub const MADV_HUGEPAGE: u32 = 14; -pub const MADV_NOHUGEPAGE: u32 = 15; -pub const MADV_DONTDUMP: u32 = 16; -pub const MADV_DODUMP: u32 = 17; -pub const MADV_WIPEONFORK: u32 = 18; -pub const MADV_KEEPONFORK: u32 = 19; -pub const MADV_COLD: u32 = 20; -pub const MADV_PAGEOUT: u32 = 21; -pub const MADV_POPULATE_READ: u32 = 22; -pub const MADV_POPULATE_WRITE: u32 = 23; -pub const MADV_DONTNEED_LOCKED: u32 = 24; -pub const MADV_COLLAPSE: u32 = 25; -pub const MAP_FILE: u32 = 0; -pub const PKEY_DISABLE_ACCESS: u32 = 1; -pub const PKEY_DISABLE_WRITE: u32 = 2; -pub const PKEY_ACCESS_MASK: u32 = 3; -pub const MAP_GROWSDOWN: u32 = 256; -pub const MAP_DENYWRITE: u32 = 2048; -pub const MAP_EXECUTABLE: u32 = 4096; -pub const MAP_LOCKED: u32 = 8192; -pub const MAP_NORESERVE: u32 = 16384; -pub const MCL_CURRENT: u32 = 1; -pub const MCL_FUTURE: u32 = 2; -pub const MCL_ONFAULT: u32 = 4; -pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; -pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; -pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; -pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; -pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; -pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; -pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; -pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; -pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; -pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; -pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; -pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; -pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; -pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; -pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; -pub const MREMAP_MAYMOVE: u32 = 1; -pub const MREMAP_FIXED: u32 = 2; -pub const MREMAP_DONTUNMAP: u32 = 4; -pub const OVERCOMMIT_GUESS: u32 = 0; -pub const OVERCOMMIT_ALWAYS: u32 = 1; -pub const OVERCOMMIT_NEVER: u32 = 2; -pub const MAP_SHARED: u32 = 1; -pub const MAP_PRIVATE: u32 = 2; -pub const MAP_SHARED_VALIDATE: u32 = 3; -pub const MAP_HUGE_SHIFT: u32 = 26; -pub const MAP_HUGE_MASK: u32 = 63; -pub const MAP_HUGE_16KB: u32 = 939524096; -pub const MAP_HUGE_64KB: u32 = 1073741824; -pub const MAP_HUGE_512KB: u32 = 1275068416; -pub const MAP_HUGE_1MB: u32 = 1342177280; -pub const MAP_HUGE_2MB: u32 = 1409286144; -pub const MAP_HUGE_8MB: u32 = 1543503872; -pub const MAP_HUGE_16MB: u32 = 1610612736; -pub const MAP_HUGE_32MB: u32 = 1677721600; -pub const MAP_HUGE_256MB: u32 = 1879048192; -pub const MAP_HUGE_512MB: u32 = 1946157056; -pub const MAP_HUGE_1GB: u32 = 2013265920; -pub const MAP_HUGE_2GB: u32 = 2080374784; -pub const MAP_HUGE_16GB: u32 = 2281701376; -pub const SIOCGSTAMP_OLD: u32 = 35078; -pub const SIOCGSTAMPNS_OLD: u32 = 35079; -pub const SOL_SOCKET: u32 = 1; -pub const SO_DEBUG: u32 = 1; -pub const SO_REUSEADDR: u32 = 2; -pub const SO_TYPE: u32 = 3; -pub const SO_ERROR: u32 = 4; -pub const SO_DONTROUTE: u32 = 5; -pub const SO_BROADCAST: u32 = 6; -pub const SO_SNDBUF: u32 = 7; -pub const SO_RCVBUF: u32 = 8; -pub const SO_SNDBUFFORCE: u32 = 32; -pub const SO_RCVBUFFORCE: u32 = 33; -pub const SO_KEEPALIVE: u32 = 9; -pub const SO_OOBINLINE: u32 = 10; -pub const SO_NO_CHECK: u32 = 11; -pub const SO_PRIORITY: u32 = 12; -pub const SO_LINGER: u32 = 13; -pub const SO_BSDCOMPAT: u32 = 14; -pub const SO_REUSEPORT: u32 = 15; -pub const SO_PASSCRED: u32 = 16; -pub const SO_PEERCRED: u32 = 17; -pub const SO_RCVLOWAT: u32 = 18; -pub const SO_SNDLOWAT: u32 = 19; -pub const SO_RCVTIMEO_OLD: u32 = 20; -pub const SO_SNDTIMEO_OLD: u32 = 21; -pub const SO_SECURITY_AUTHENTICATION: u32 = 22; -pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; -pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; -pub const SO_BINDTODEVICE: u32 = 25; -pub const SO_ATTACH_FILTER: u32 = 26; -pub const SO_DETACH_FILTER: u32 = 27; -pub const SO_GET_FILTER: u32 = 26; -pub const SO_PEERNAME: u32 = 28; -pub const SO_ACCEPTCONN: u32 = 30; -pub const SO_PEERSEC: u32 = 31; -pub const SO_PASSSEC: u32 = 34; -pub const SO_MARK: u32 = 36; -pub const SO_PROTOCOL: u32 = 38; -pub const SO_DOMAIN: u32 = 39; -pub const SO_RXQ_OVFL: u32 = 40; -pub const SO_WIFI_STATUS: u32 = 41; -pub const SCM_WIFI_STATUS: u32 = 41; -pub const SO_PEEK_OFF: u32 = 42; -pub const SO_NOFCS: u32 = 43; -pub const SO_LOCK_FILTER: u32 = 44; -pub const SO_SELECT_ERR_QUEUE: u32 = 45; -pub const SO_BUSY_POLL: u32 = 46; -pub const SO_MAX_PACING_RATE: u32 = 47; -pub const SO_BPF_EXTENSIONS: u32 = 48; -pub const SO_INCOMING_CPU: u32 = 49; -pub const SO_ATTACH_BPF: u32 = 50; -pub const SO_DETACH_BPF: u32 = 27; -pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; -pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; -pub const SO_CNX_ADVICE: u32 = 53; -pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; -pub const SO_MEMINFO: u32 = 55; -pub const SO_INCOMING_NAPI_ID: u32 = 56; -pub const SO_COOKIE: u32 = 57; -pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; -pub const SO_PEERGROUPS: u32 = 59; -pub const SO_ZEROCOPY: u32 = 60; -pub const SO_TXTIME: u32 = 61; -pub const SCM_TXTIME: u32 = 61; -pub const SO_BINDTOIFINDEX: u32 = 62; -pub const SO_TIMESTAMP_OLD: u32 = 29; -pub const SO_TIMESTAMPNS_OLD: u32 = 35; -pub const SO_TIMESTAMPING_OLD: u32 = 37; -pub const SO_TIMESTAMP_NEW: u32 = 63; -pub const SO_TIMESTAMPNS_NEW: u32 = 64; -pub const SO_TIMESTAMPING_NEW: u32 = 65; -pub const SO_RCVTIMEO_NEW: u32 = 66; -pub const SO_SNDTIMEO_NEW: u32 = 67; -pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; -pub const SO_PREFER_BUSY_POLL: u32 = 69; -pub const SO_BUSY_POLL_BUDGET: u32 = 70; -pub const SO_NETNS_COOKIE: u32 = 71; -pub const SO_BUF_LOCK: u32 = 72; -pub const SO_RESERVE_MEM: u32 = 73; -pub const SO_TXREHASH: u32 = 74; -pub const SO_RCVMARK: u32 = 75; -pub const SO_TIMESTAMP: u32 = 29; -pub const SO_TIMESTAMPNS: u32 = 35; -pub const SO_TIMESTAMPING: u32 = 37; -pub const SO_RCVTIMEO: u32 = 20; -pub const SO_SNDTIMEO: u32 = 21; -pub const SCM_TIMESTAMP: u32 = 29; -pub const SCM_TIMESTAMPNS: u32 = 35; -pub const SCM_TIMESTAMPING: u32 = 37; -pub const SYS_SOCKET: u32 = 1; -pub const SYS_BIND: u32 = 2; -pub const SYS_CONNECT: u32 = 3; -pub const SYS_LISTEN: u32 = 4; -pub const SYS_ACCEPT: u32 = 5; -pub const SYS_GETSOCKNAME: u32 = 6; -pub const SYS_GETPEERNAME: u32 = 7; -pub const SYS_SOCKETPAIR: u32 = 8; -pub const SYS_SEND: u32 = 9; -pub const SYS_RECV: u32 = 10; -pub const SYS_SENDTO: u32 = 11; -pub const SYS_RECVFROM: u32 = 12; -pub const SYS_SHUTDOWN: u32 = 13; -pub const SYS_SETSOCKOPT: u32 = 14; -pub const SYS_GETSOCKOPT: u32 = 15; -pub const SYS_SENDMSG: u32 = 16; -pub const SYS_RECVMSG: u32 = 17; -pub const SYS_ACCEPT4: u32 = 18; -pub const SYS_RECVMMSG: u32 = 19; -pub const SYS_SENDMMSG: u32 = 20; -pub const __SO_ACCEPTCON: u32 = 65536; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const POLLWRNORM: u32 = 256; -pub const POLLWRBAND: u32 = 512; -pub const POLLMSG: u32 = 1024; -pub const POLLREMOVE: u32 = 4096; -pub const POLLRDHUP: u32 = 8192; -pub const PR_SET_PDEATHSIG: u32 = 1; -pub const PR_GET_PDEATHSIG: u32 = 2; -pub const PR_GET_DUMPABLE: u32 = 3; -pub const PR_SET_DUMPABLE: u32 = 4; -pub const PR_GET_UNALIGN: u32 = 5; -pub const PR_SET_UNALIGN: u32 = 6; -pub const PR_UNALIGN_NOPRINT: u32 = 1; -pub const PR_UNALIGN_SIGBUS: u32 = 2; -pub const PR_GET_KEEPCAPS: u32 = 7; -pub const PR_SET_KEEPCAPS: u32 = 8; -pub const PR_GET_FPEMU: u32 = 9; -pub const PR_SET_FPEMU: u32 = 10; -pub const PR_FPEMU_NOPRINT: u32 = 1; -pub const PR_FPEMU_SIGFPE: u32 = 2; -pub const PR_GET_FPEXC: u32 = 11; -pub const PR_SET_FPEXC: u32 = 12; -pub const PR_FP_EXC_SW_ENABLE: u32 = 128; -pub const PR_FP_EXC_DIV: u32 = 65536; -pub const PR_FP_EXC_OVF: u32 = 131072; -pub const PR_FP_EXC_UND: u32 = 262144; -pub const PR_FP_EXC_RES: u32 = 524288; -pub const PR_FP_EXC_INV: u32 = 1048576; -pub const PR_FP_EXC_DISABLED: u32 = 0; -pub const PR_FP_EXC_NONRECOV: u32 = 1; -pub const PR_FP_EXC_ASYNC: u32 = 2; -pub const PR_FP_EXC_PRECISE: u32 = 3; -pub const PR_GET_TIMING: u32 = 13; -pub const PR_SET_TIMING: u32 = 14; -pub const PR_TIMING_STATISTICAL: u32 = 0; -pub const PR_TIMING_TIMESTAMP: u32 = 1; -pub const PR_SET_NAME: u32 = 15; -pub const PR_GET_NAME: u32 = 16; -pub const PR_GET_ENDIAN: u32 = 19; -pub const PR_SET_ENDIAN: u32 = 20; -pub const PR_ENDIAN_BIG: u32 = 0; -pub const PR_ENDIAN_LITTLE: u32 = 1; -pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; -pub const PR_GET_SECCOMP: u32 = 21; -pub const PR_SET_SECCOMP: u32 = 22; -pub const PR_CAPBSET_READ: u32 = 23; -pub const PR_CAPBSET_DROP: u32 = 24; -pub const PR_GET_TSC: u32 = 25; -pub const PR_SET_TSC: u32 = 26; -pub const PR_TSC_ENABLE: u32 = 1; -pub const PR_TSC_SIGSEGV: u32 = 2; -pub const PR_GET_SECUREBITS: u32 = 27; -pub const PR_SET_SECUREBITS: u32 = 28; -pub const PR_SET_TIMERSLACK: u32 = 29; -pub const PR_GET_TIMERSLACK: u32 = 30; -pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; -pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; -pub const PR_MCE_KILL: u32 = 33; -pub const PR_MCE_KILL_CLEAR: u32 = 0; -pub const PR_MCE_KILL_SET: u32 = 1; -pub const PR_MCE_KILL_LATE: u32 = 0; -pub const PR_MCE_KILL_EARLY: u32 = 1; -pub const PR_MCE_KILL_DEFAULT: u32 = 2; -pub const PR_MCE_KILL_GET: u32 = 34; -pub const PR_SET_MM: u32 = 35; -pub const PR_SET_MM_START_CODE: u32 = 1; -pub const PR_SET_MM_END_CODE: u32 = 2; -pub const PR_SET_MM_START_DATA: u32 = 3; -pub const PR_SET_MM_END_DATA: u32 = 4; -pub const PR_SET_MM_START_STACK: u32 = 5; -pub const PR_SET_MM_START_BRK: u32 = 6; -pub const PR_SET_MM_BRK: u32 = 7; -pub const PR_SET_MM_ARG_START: u32 = 8; -pub const PR_SET_MM_ARG_END: u32 = 9; -pub const PR_SET_MM_ENV_START: u32 = 10; -pub const PR_SET_MM_ENV_END: u32 = 11; -pub const PR_SET_MM_AUXV: u32 = 12; -pub const PR_SET_MM_EXE_FILE: u32 = 13; -pub const PR_SET_MM_MAP: u32 = 14; -pub const PR_SET_MM_MAP_SIZE: u32 = 15; -pub const PR_SET_PTRACER: u32 = 1499557217; -pub const PR_SET_CHILD_SUBREAPER: u32 = 36; -pub const PR_GET_CHILD_SUBREAPER: u32 = 37; -pub const PR_SET_NO_NEW_PRIVS: u32 = 38; -pub const PR_GET_NO_NEW_PRIVS: u32 = 39; -pub const PR_GET_TID_ADDRESS: u32 = 40; -pub const PR_SET_THP_DISABLE: u32 = 41; -pub const PR_GET_THP_DISABLE: u32 = 42; -pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; -pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; -pub const PR_SET_FP_MODE: u32 = 45; -pub const PR_GET_FP_MODE: u32 = 46; -pub const PR_FP_MODE_FR: u32 = 1; -pub const PR_FP_MODE_FRE: u32 = 2; -pub const PR_CAP_AMBIENT: u32 = 47; -pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; -pub const PR_CAP_AMBIENT_RAISE: u32 = 2; -pub const PR_CAP_AMBIENT_LOWER: u32 = 3; -pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; -pub const PR_SVE_SET_VL: u32 = 50; -pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SVE_GET_VL: u32 = 51; -pub const PR_SVE_VL_LEN_MASK: u32 = 65535; -pub const PR_SVE_VL_INHERIT: u32 = 131072; -pub const PR_GET_SPECULATION_CTRL: u32 = 52; -pub const PR_SET_SPECULATION_CTRL: u32 = 53; -pub const PR_SPEC_STORE_BYPASS: u32 = 0; -pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; -pub const PR_SPEC_L1D_FLUSH: u32 = 2; -pub const PR_SPEC_NOT_AFFECTED: u32 = 0; -pub const PR_SPEC_PRCTL: u32 = 1; -pub const PR_SPEC_ENABLE: u32 = 2; -pub const PR_SPEC_DISABLE: u32 = 4; -pub const PR_SPEC_FORCE_DISABLE: u32 = 8; -pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; -pub const PR_PAC_RESET_KEYS: u32 = 54; -pub const PR_PAC_APIAKEY: u32 = 1; -pub const PR_PAC_APIBKEY: u32 = 2; -pub const PR_PAC_APDAKEY: u32 = 4; -pub const PR_PAC_APDBKEY: u32 = 8; -pub const PR_PAC_APGAKEY: u32 = 16; -pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; -pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; -pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; -pub const PR_MTE_TCF_NONE: u32 = 0; -pub const PR_MTE_TCF_SYNC: u32 = 2; -pub const PR_MTE_TCF_ASYNC: u32 = 4; -pub const PR_MTE_TCF_MASK: u32 = 6; -pub const PR_MTE_TAG_SHIFT: u32 = 3; -pub const PR_MTE_TAG_MASK: u32 = 524280; -pub const PR_MTE_TCF_SHIFT: u32 = 1; -pub const PR_SET_IO_FLUSHER: u32 = 57; -pub const PR_GET_IO_FLUSHER: u32 = 58; -pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; -pub const PR_SYS_DISPATCH_OFF: u32 = 0; -pub const PR_SYS_DISPATCH_ON: u32 = 1; -pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; -pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; -pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; -pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; -pub const PR_SCHED_CORE: u32 = 62; -pub const PR_SCHED_CORE_GET: u32 = 0; -pub const PR_SCHED_CORE_CREATE: u32 = 1; -pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; -pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; -pub const PR_SCHED_CORE_MAX: u32 = 4; -pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; -pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; -pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; -pub const PR_SME_SET_VL: u32 = 63; -pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SME_GET_VL: u32 = 64; -pub const PR_SME_VL_LEN_MASK: u32 = 65535; -pub const PR_SME_VL_INHERIT: u32 = 131072; -pub const PR_SET_MDWE: u32 = 65; -pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; -pub const PR_GET_MDWE: u32 = 66; -pub const PR_SET_VMA: u32 = 1398164801; -pub const PR_SET_VMA_ANON_NAME: u32 = 0; -pub const GRND_NONBLOCK: u32 = 1; -pub const GRND_RANDOM: u32 = 2; -pub const GRND_INSECURE: u32 = 4; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -pub const CLOCK_REALTIME: u32 = 0; -pub const CLOCK_MONOTONIC: u32 = 1; -pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; -pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; -pub const CLOCK_MONOTONIC_RAW: u32 = 4; -pub const CLOCK_REALTIME_COARSE: u32 = 5; -pub const CLOCK_MONOTONIC_COARSE: u32 = 6; -pub const CLOCK_BOOTTIME: u32 = 7; -pub const CLOCK_REALTIME_ALARM: u32 = 8; -pub const CLOCK_BOOTTIME_ALARM: u32 = 9; -pub const CLOCK_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const RUSAGE_SELF: u32 = 0; -pub const RUSAGE_CHILDREN: i32 = -1; -pub const RUSAGE_BOTH: i32 = -2; -pub const RUSAGE_THREAD: u32 = 1; -pub const RLIM64_INFINITY: i32 = -1; -pub const PRIO_MIN: i32 = -20; -pub const PRIO_MAX: u32 = 20; -pub const PRIO_PROCESS: u32 = 0; -pub const PRIO_PGRP: u32 = 1; -pub const PRIO_USER: u32 = 2; -pub const _STK_LIM: u32 = 8388608; -pub const MLOCK_LIMIT: u32 = 8388608; -pub const RLIMIT_CPU: u32 = 0; -pub const RLIMIT_FSIZE: u32 = 1; -pub const RLIMIT_DATA: u32 = 2; -pub const RLIMIT_STACK: u32 = 3; -pub const RLIMIT_CORE: u32 = 4; -pub const RLIMIT_RSS: u32 = 5; -pub const RLIMIT_NPROC: u32 = 6; -pub const RLIMIT_NOFILE: u32 = 7; -pub const RLIMIT_MEMLOCK: u32 = 8; -pub const RLIMIT_AS: u32 = 9; -pub const RLIMIT_LOCKS: u32 = 10; -pub const RLIMIT_SIGPENDING: u32 = 11; -pub const RLIMIT_MSGQUEUE: u32 = 12; -pub const RLIMIT_NICE: u32 = 13; -pub const RLIMIT_RTPRIO: u32 = 14; -pub const RLIMIT_RTTIME: u32 = 15; -pub const RLIM_NLIMITS: u32 = 16; -pub const RLIM_INFINITY: i32 = -1; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const MINSIGSTKSZ: u32 = 4096; -pub const SIGSTKSZ: u32 = 16384; -pub const _NSIG: u32 = 64; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGBUS: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGUSR1: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGUSR2: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGSTKFLT: u32 = 16; -pub const SIGCHLD: u32 = 17; -pub const SIGCONT: u32 = 18; -pub const SIGSTOP: u32 = 19; -pub const SIGTSTP: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGURG: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGIO: u32 = 29; -pub const SIGPOLL: u32 = 29; -pub const SIGPWR: u32 = 30; -pub const SIGSYS: u32 = 31; -pub const SIGUNUSED: u32 = 31; -pub const SIGRTMIN: u32 = 32; -pub const SIGRTMAX: u32 = 64; -pub const SA_NOCLDSTOP: u32 = 1; -pub const SA_NOCLDWAIT: u32 = 2; -pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; -pub const SA_ONSTACK: u32 = 134217728; -pub const SA_RESTART: u32 = 268435456; -pub const SA_NODEFER: u32 = 1073741824; -pub const SA_RESETHAND: u32 = 2147483648; -pub const SA_NOMASK: u32 = 1073741824; -pub const SA_ONESHOT: u32 = 2147483648; -pub const SIG_BLOCK: u32 = 0; -pub const SIG_UNBLOCK: u32 = 1; -pub const SIG_SETMASK: u32 = 2; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; -pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const S_IFMT: u32 = 61440; -pub const S_IFSOCK: u32 = 49152; -pub const S_IFLNK: u32 = 40960; -pub const S_IFREG: u32 = 32768; -pub const S_IFBLK: u32 = 24576; -pub const S_IFDIR: u32 = 16384; -pub const S_IFCHR: u32 = 8192; -pub const S_IFIFO: u32 = 4096; -pub const S_ISUID: u32 = 2048; -pub const S_ISGID: u32 = 1024; -pub const S_ISVTX: u32 = 512; -pub const S_IRWXU: u32 = 448; -pub const S_IRUSR: u32 = 256; -pub const S_IWUSR: u32 = 128; -pub const S_IXUSR: u32 = 64; -pub const S_IRWXG: u32 = 56; -pub const S_IRGRP: u32 = 32; -pub const S_IWGRP: u32 = 16; -pub const S_IXGRP: u32 = 8; -pub const S_IRWXO: u32 = 7; -pub const S_IROTH: u32 = 4; -pub const S_IWOTH: u32 = 2; -pub const S_IXOTH: u32 = 1; -pub const STATX_TYPE: u32 = 1; -pub const STATX_MODE: u32 = 2; -pub const STATX_NLINK: u32 = 4; -pub const STATX_UID: u32 = 8; -pub const STATX_GID: u32 = 16; -pub const STATX_ATIME: u32 = 32; -pub const STATX_MTIME: u32 = 64; -pub const STATX_CTIME: u32 = 128; -pub const STATX_INO: u32 = 256; -pub const STATX_SIZE: u32 = 512; -pub const STATX_BLOCKS: u32 = 1024; -pub const STATX_BASIC_STATS: u32 = 2047; -pub const STATX_BTIME: u32 = 2048; -pub const STATX_MNT_ID: u32 = 4096; -pub const STATX_DIOALIGN: u32 = 8192; -pub const STATX__RESERVED: u32 = 2147483648; -pub const STATX_ALL: u32 = 4095; -pub const STATX_ATTR_COMPRESSED: u32 = 4; -pub const STATX_ATTR_IMMUTABLE: u32 = 16; -pub const STATX_ATTR_APPEND: u32 = 32; -pub const STATX_ATTR_NODUMP: u32 = 64; -pub const STATX_ATTR_ENCRYPTED: u32 = 2048; -pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; -pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; -pub const STATX_ATTR_VERITY: u32 = 1048576; -pub const STATX_ATTR_DAX: u32 = 2097152; -pub const SI_LOAD_SHIFT: u32 = 16; -pub const TCP_MSS_DEFAULT: u32 = 536; -pub const TCP_MSS_DESIRED: u32 = 1220; -pub const TCP_NODELAY: u32 = 1; -pub const TCP_MAXSEG: u32 = 2; -pub const TCP_CORK: u32 = 3; -pub const TCP_KEEPIDLE: u32 = 4; -pub const TCP_KEEPINTVL: u32 = 5; -pub const TCP_KEEPCNT: u32 = 6; -pub const TCP_SYNCNT: u32 = 7; -pub const TCP_LINGER2: u32 = 8; -pub const TCP_DEFER_ACCEPT: u32 = 9; -pub const TCP_WINDOW_CLAMP: u32 = 10; -pub const TCP_INFO: u32 = 11; -pub const TCP_QUICKACK: u32 = 12; -pub const TCP_CONGESTION: u32 = 13; -pub const TCP_MD5SIG: u32 = 14; -pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; -pub const TCP_THIN_DUPACK: u32 = 17; -pub const TCP_USER_TIMEOUT: u32 = 18; -pub const TCP_REPAIR: u32 = 19; -pub const TCP_REPAIR_QUEUE: u32 = 20; -pub const TCP_QUEUE_SEQ: u32 = 21; -pub const TCP_REPAIR_OPTIONS: u32 = 22; -pub const TCP_FASTOPEN: u32 = 23; -pub const TCP_TIMESTAMP: u32 = 24; -pub const TCP_NOTSENT_LOWAT: u32 = 25; -pub const TCP_CC_INFO: u32 = 26; -pub const TCP_SAVE_SYN: u32 = 27; -pub const TCP_SAVED_SYN: u32 = 28; -pub const TCP_REPAIR_WINDOW: u32 = 29; -pub const TCP_FASTOPEN_CONNECT: u32 = 30; -pub const TCP_ULP: u32 = 31; -pub const TCP_MD5SIG_EXT: u32 = 32; -pub const TCP_FASTOPEN_KEY: u32 = 33; -pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; -pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; -pub const TCP_INQ: u32 = 36; -pub const TCP_CM_INQ: u32 = 36; -pub const TCP_TX_DELAY: u32 = 37; -pub const TCP_REPAIR_ON: u32 = 1; -pub const TCP_REPAIR_OFF: u32 = 0; -pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; -pub const TCPI_OPT_TIMESTAMPS: u32 = 1; -pub const TCPI_OPT_SACK: u32 = 2; -pub const TCPI_OPT_WSCALE: u32 = 4; -pub const TCPI_OPT_ECN: u32 = 8; -pub const TCPI_OPT_ECN_SEEN: u32 = 16; -pub const TCPI_OPT_SYN_DATA: u32 = 32; -pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; -pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; -pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; -pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; -pub const IGNBRK: u32 = 1; -pub const BRKINT: u32 = 2; -pub const IGNPAR: u32 = 4; -pub const PARMRK: u32 = 8; -pub const INPCK: u32 = 16; -pub const ISTRIP: u32 = 32; -pub const INLCR: u32 = 64; -pub const IGNCR: u32 = 128; -pub const ICRNL: u32 = 256; -pub const IXANY: u32 = 2048; -pub const OPOST: u32 = 1; -pub const OCRNL: u32 = 8; -pub const ONOCR: u32 = 16; -pub const ONLRET: u32 = 32; -pub const OFILL: u32 = 64; -pub const OFDEL: u32 = 128; -pub const B0: u32 = 0; -pub const B50: u32 = 1; -pub const B75: u32 = 2; -pub const B110: u32 = 3; -pub const B134: u32 = 4; -pub const B150: u32 = 5; -pub const B200: u32 = 6; -pub const B300: u32 = 7; -pub const B600: u32 = 8; -pub const B1200: u32 = 9; -pub const B1800: u32 = 10; -pub const B2400: u32 = 11; -pub const B4800: u32 = 12; -pub const B9600: u32 = 13; -pub const B19200: u32 = 14; -pub const B38400: u32 = 15; -pub const EXTA: u32 = 14; -pub const EXTB: u32 = 15; -pub const ADDRB: u32 = 536870912; -pub const CMSPAR: u32 = 1073741824; -pub const CRTSCTS: u32 = 2147483648; -pub const IBSHIFT: u32 = 16; -pub const TCOOFF: u32 = 0; -pub const TCOON: u32 = 1; -pub const TCIOFF: u32 = 2; -pub const TCION: u32 = 3; -pub const TCIFLUSH: u32 = 0; -pub const TCOFLUSH: u32 = 1; -pub const TCIOFLUSH: u32 = 2; -pub const NCCS: u32 = 19; -pub const VINTR: u32 = 0; -pub const VQUIT: u32 = 1; -pub const VERASE: u32 = 2; -pub const VKILL: u32 = 3; -pub const VEOF: u32 = 4; -pub const VTIME: u32 = 5; -pub const VMIN: u32 = 6; -pub const VSWTC: u32 = 7; -pub const VSTART: u32 = 8; -pub const VSTOP: u32 = 9; -pub const VSUSP: u32 = 10; -pub const VEOL: u32 = 11; -pub const VREPRINT: u32 = 12; -pub const VDISCARD: u32 = 13; -pub const VWERASE: u32 = 14; -pub const VLNEXT: u32 = 15; -pub const VEOL2: u32 = 16; -pub const IUCLC: u32 = 512; -pub const IXON: u32 = 1024; -pub const IXOFF: u32 = 4096; -pub const IMAXBEL: u32 = 8192; -pub const IUTF8: u32 = 16384; -pub const OLCUC: u32 = 2; -pub const ONLCR: u32 = 4; -pub const NLDLY: u32 = 256; -pub const NL0: u32 = 0; -pub const NL1: u32 = 256; -pub const CRDLY: u32 = 1536; -pub const CR0: u32 = 0; -pub const CR1: u32 = 512; -pub const CR2: u32 = 1024; -pub const CR3: u32 = 1536; -pub const TABDLY: u32 = 6144; -pub const TAB0: u32 = 0; -pub const TAB1: u32 = 2048; -pub const TAB2: u32 = 4096; -pub const TAB3: u32 = 6144; -pub const XTABS: u32 = 6144; -pub const BSDLY: u32 = 8192; -pub const BS0: u32 = 0; -pub const BS1: u32 = 8192; -pub const VTDLY: u32 = 16384; -pub const VT0: u32 = 0; -pub const VT1: u32 = 16384; -pub const FFDLY: u32 = 32768; -pub const FF0: u32 = 0; -pub const FF1: u32 = 32768; -pub const CBAUD: u32 = 4111; -pub const CSIZE: u32 = 48; -pub const CS5: u32 = 0; -pub const CS6: u32 = 16; -pub const CS7: u32 = 32; -pub const CS8: u32 = 48; -pub const CSTOPB: u32 = 64; -pub const CREAD: u32 = 128; -pub const PARENB: u32 = 256; -pub const PARODD: u32 = 512; -pub const HUPCL: u32 = 1024; -pub const CLOCAL: u32 = 2048; -pub const CBAUDEX: u32 = 4096; -pub const BOTHER: u32 = 4096; -pub const B57600: u32 = 4097; -pub const B115200: u32 = 4098; -pub const B230400: u32 = 4099; -pub const B460800: u32 = 4100; -pub const B500000: u32 = 4101; -pub const B576000: u32 = 4102; -pub const B921600: u32 = 4103; -pub const B1000000: u32 = 4104; -pub const B1152000: u32 = 4105; -pub const B1500000: u32 = 4106; -pub const B2000000: u32 = 4107; -pub const B2500000: u32 = 4108; -pub const B3000000: u32 = 4109; -pub const B3500000: u32 = 4110; -pub const B4000000: u32 = 4111; -pub const CIBAUD: u32 = 269418496; -pub const ISIG: u32 = 1; -pub const ICANON: u32 = 2; -pub const XCASE: u32 = 4; -pub const ECHO: u32 = 8; -pub const ECHOE: u32 = 16; -pub const ECHOK: u32 = 32; -pub const ECHONL: u32 = 64; -pub const NOFLSH: u32 = 128; -pub const TOSTOP: u32 = 256; -pub const ECHOCTL: u32 = 512; -pub const ECHOPRT: u32 = 1024; -pub const ECHOKE: u32 = 2048; -pub const FLUSHO: u32 = 4096; -pub const PENDIN: u32 = 16384; -pub const IEXTEN: u32 = 32768; -pub const EXTPROC: u32 = 65536; -pub const TCSANOW: u32 = 0; -pub const TCSADRAIN: u32 = 1; -pub const TCSAFLUSH: u32 = 2; -pub const TIOCPKT_DATA: u32 = 0; -pub const TIOCPKT_FLUSHREAD: u32 = 1; -pub const TIOCPKT_FLUSHWRITE: u32 = 2; -pub const TIOCPKT_STOP: u32 = 4; -pub const TIOCPKT_START: u32 = 8; -pub const TIOCPKT_NOSTOP: u32 = 16; -pub const TIOCPKT_DOSTOP: u32 = 32; -pub const TIOCPKT_IOCTL: u32 = 64; -pub const TIOCSER_TEMT: u32 = 1; -pub const NCC: u32 = 8; -pub const TIOCM_LE: u32 = 1; -pub const TIOCM_DTR: u32 = 2; -pub const TIOCM_RTS: u32 = 4; -pub const TIOCM_ST: u32 = 8; -pub const TIOCM_SR: u32 = 16; -pub const TIOCM_CTS: u32 = 32; -pub const TIOCM_CAR: u32 = 64; -pub const TIOCM_RNG: u32 = 128; -pub const TIOCM_DSR: u32 = 256; -pub const TIOCM_CD: u32 = 64; -pub const TIOCM_RI: u32 = 128; -pub const TIOCM_OUT1: u32 = 8192; -pub const TIOCM_OUT2: u32 = 16384; -pub const TIOCM_LOOP: u32 = 32768; -pub const UIO_FASTIOV: u32 = 8; -pub const UIO_MAXIOV: u32 = 1024; -pub const UNIX_PATH_MAX: u32 = 108; -pub const __NR_io_setup: u32 = 0; -pub const __NR_io_destroy: u32 = 1; -pub const __NR_io_submit: u32 = 2; -pub const __NR_io_cancel: u32 = 3; -pub const __NR_io_getevents: u32 = 4; -pub const __NR_setxattr: u32 = 5; -pub const __NR_lsetxattr: u32 = 6; -pub const __NR_fsetxattr: u32 = 7; -pub const __NR_getxattr: u32 = 8; -pub const __NR_lgetxattr: u32 = 9; -pub const __NR_fgetxattr: u32 = 10; -pub const __NR_listxattr: u32 = 11; -pub const __NR_llistxattr: u32 = 12; -pub const __NR_flistxattr: u32 = 13; -pub const __NR_removexattr: u32 = 14; -pub const __NR_lremovexattr: u32 = 15; -pub const __NR_fremovexattr: u32 = 16; -pub const __NR_getcwd: u32 = 17; -pub const __NR_lookup_dcookie: u32 = 18; -pub const __NR_eventfd2: u32 = 19; -pub const __NR_epoll_create1: u32 = 20; -pub const __NR_epoll_ctl: u32 = 21; -pub const __NR_epoll_pwait: u32 = 22; -pub const __NR_dup: u32 = 23; -pub const __NR_dup3: u32 = 24; -pub const __NR3264_fcntl: u32 = 25; -pub const __NR_inotify_init1: u32 = 26; -pub const __NR_inotify_add_watch: u32 = 27; -pub const __NR_inotify_rm_watch: u32 = 28; -pub const __NR_ioctl: u32 = 29; -pub const __NR_ioprio_set: u32 = 30; -pub const __NR_ioprio_get: u32 = 31; -pub const __NR_flock: u32 = 32; -pub const __NR_mknodat: u32 = 33; -pub const __NR_mkdirat: u32 = 34; -pub const __NR_unlinkat: u32 = 35; -pub const __NR_symlinkat: u32 = 36; -pub const __NR_linkat: u32 = 37; -pub const __NR_umount2: u32 = 39; -pub const __NR_mount: u32 = 40; -pub const __NR_pivot_root: u32 = 41; -pub const __NR_nfsservctl: u32 = 42; -pub const __NR3264_statfs: u32 = 43; -pub const __NR3264_fstatfs: u32 = 44; -pub const __NR3264_truncate: u32 = 45; -pub const __NR3264_ftruncate: u32 = 46; -pub const __NR_fallocate: u32 = 47; -pub const __NR_faccessat: u32 = 48; -pub const __NR_chdir: u32 = 49; -pub const __NR_fchdir: u32 = 50; -pub const __NR_chroot: u32 = 51; -pub const __NR_fchmod: u32 = 52; -pub const __NR_fchmodat: u32 = 53; -pub const __NR_fchownat: u32 = 54; -pub const __NR_fchown: u32 = 55; -pub const __NR_openat: u32 = 56; -pub const __NR_close: u32 = 57; -pub const __NR_vhangup: u32 = 58; -pub const __NR_pipe2: u32 = 59; -pub const __NR_quotactl: u32 = 60; -pub const __NR_getdents64: u32 = 61; -pub const __NR3264_lseek: u32 = 62; -pub const __NR_read: u32 = 63; -pub const __NR_write: u32 = 64; -pub const __NR_readv: u32 = 65; -pub const __NR_writev: u32 = 66; -pub const __NR_pread64: u32 = 67; -pub const __NR_pwrite64: u32 = 68; -pub const __NR_preadv: u32 = 69; -pub const __NR_pwritev: u32 = 70; -pub const __NR3264_sendfile: u32 = 71; -pub const __NR_pselect6: u32 = 72; -pub const __NR_ppoll: u32 = 73; -pub const __NR_signalfd4: u32 = 74; -pub const __NR_vmsplice: u32 = 75; -pub const __NR_splice: u32 = 76; -pub const __NR_tee: u32 = 77; -pub const __NR_readlinkat: u32 = 78; -pub const __NR_sync: u32 = 81; -pub const __NR_fsync: u32 = 82; -pub const __NR_fdatasync: u32 = 83; -pub const __NR_sync_file_range: u32 = 84; -pub const __NR_timerfd_create: u32 = 85; -pub const __NR_timerfd_settime: u32 = 86; -pub const __NR_timerfd_gettime: u32 = 87; -pub const __NR_utimensat: u32 = 88; -pub const __NR_acct: u32 = 89; -pub const __NR_capget: u32 = 90; -pub const __NR_capset: u32 = 91; -pub const __NR_personality: u32 = 92; -pub const __NR_exit: u32 = 93; -pub const __NR_exit_group: u32 = 94; -pub const __NR_waitid: u32 = 95; -pub const __NR_set_tid_address: u32 = 96; -pub const __NR_unshare: u32 = 97; -pub const __NR_futex: u32 = 98; -pub const __NR_set_robust_list: u32 = 99; -pub const __NR_get_robust_list: u32 = 100; -pub const __NR_nanosleep: u32 = 101; -pub const __NR_getitimer: u32 = 102; -pub const __NR_setitimer: u32 = 103; -pub const __NR_kexec_load: u32 = 104; -pub const __NR_init_module: u32 = 105; -pub const __NR_delete_module: u32 = 106; -pub const __NR_timer_create: u32 = 107; -pub const __NR_timer_gettime: u32 = 108; -pub const __NR_timer_getoverrun: u32 = 109; -pub const __NR_timer_settime: u32 = 110; -pub const __NR_timer_delete: u32 = 111; -pub const __NR_clock_settime: u32 = 112; -pub const __NR_clock_gettime: u32 = 113; -pub const __NR_clock_getres: u32 = 114; -pub const __NR_clock_nanosleep: u32 = 115; -pub const __NR_syslog: u32 = 116; -pub const __NR_ptrace: u32 = 117; -pub const __NR_sched_setparam: u32 = 118; -pub const __NR_sched_setscheduler: u32 = 119; -pub const __NR_sched_getscheduler: u32 = 120; -pub const __NR_sched_getparam: u32 = 121; -pub const __NR_sched_setaffinity: u32 = 122; -pub const __NR_sched_getaffinity: u32 = 123; -pub const __NR_sched_yield: u32 = 124; -pub const __NR_sched_get_priority_max: u32 = 125; -pub const __NR_sched_get_priority_min: u32 = 126; -pub const __NR_sched_rr_get_interval: u32 = 127; -pub const __NR_restart_syscall: u32 = 128; -pub const __NR_kill: u32 = 129; -pub const __NR_tkill: u32 = 130; -pub const __NR_tgkill: u32 = 131; -pub const __NR_sigaltstack: u32 = 132; -pub const __NR_rt_sigsuspend: u32 = 133; -pub const __NR_rt_sigaction: u32 = 134; -pub const __NR_rt_sigprocmask: u32 = 135; -pub const __NR_rt_sigpending: u32 = 136; -pub const __NR_rt_sigtimedwait: u32 = 137; -pub const __NR_rt_sigqueueinfo: u32 = 138; -pub const __NR_rt_sigreturn: u32 = 139; -pub const __NR_setpriority: u32 = 140; -pub const __NR_getpriority: u32 = 141; -pub const __NR_reboot: u32 = 142; -pub const __NR_setregid: u32 = 143; -pub const __NR_setgid: u32 = 144; -pub const __NR_setreuid: u32 = 145; -pub const __NR_setuid: u32 = 146; -pub const __NR_setresuid: u32 = 147; -pub const __NR_getresuid: u32 = 148; -pub const __NR_setresgid: u32 = 149; -pub const __NR_getresgid: u32 = 150; -pub const __NR_setfsuid: u32 = 151; -pub const __NR_setfsgid: u32 = 152; -pub const __NR_times: u32 = 153; -pub const __NR_setpgid: u32 = 154; -pub const __NR_getpgid: u32 = 155; -pub const __NR_getsid: u32 = 156; -pub const __NR_setsid: u32 = 157; -pub const __NR_getgroups: u32 = 158; -pub const __NR_setgroups: u32 = 159; -pub const __NR_uname: u32 = 160; -pub const __NR_sethostname: u32 = 161; -pub const __NR_setdomainname: u32 = 162; -pub const __NR_getrusage: u32 = 165; -pub const __NR_umask: u32 = 166; -pub const __NR_prctl: u32 = 167; -pub const __NR_getcpu: u32 = 168; -pub const __NR_gettimeofday: u32 = 169; -pub const __NR_settimeofday: u32 = 170; -pub const __NR_adjtimex: u32 = 171; -pub const __NR_getpid: u32 = 172; -pub const __NR_getppid: u32 = 173; -pub const __NR_getuid: u32 = 174; -pub const __NR_geteuid: u32 = 175; -pub const __NR_getgid: u32 = 176; -pub const __NR_getegid: u32 = 177; -pub const __NR_gettid: u32 = 178; -pub const __NR_sysinfo: u32 = 179; -pub const __NR_mq_open: u32 = 180; -pub const __NR_mq_unlink: u32 = 181; -pub const __NR_mq_timedsend: u32 = 182; -pub const __NR_mq_timedreceive: u32 = 183; -pub const __NR_mq_notify: u32 = 184; -pub const __NR_mq_getsetattr: u32 = 185; -pub const __NR_msgget: u32 = 186; -pub const __NR_msgctl: u32 = 187; -pub const __NR_msgrcv: u32 = 188; -pub const __NR_msgsnd: u32 = 189; -pub const __NR_semget: u32 = 190; -pub const __NR_semctl: u32 = 191; -pub const __NR_semtimedop: u32 = 192; -pub const __NR_semop: u32 = 193; -pub const __NR_shmget: u32 = 194; -pub const __NR_shmctl: u32 = 195; -pub const __NR_shmat: u32 = 196; -pub const __NR_shmdt: u32 = 197; -pub const __NR_socket: u32 = 198; -pub const __NR_socketpair: u32 = 199; -pub const __NR_bind: u32 = 200; -pub const __NR_listen: u32 = 201; -pub const __NR_accept: u32 = 202; -pub const __NR_connect: u32 = 203; -pub const __NR_getsockname: u32 = 204; -pub const __NR_getpeername: u32 = 205; -pub const __NR_sendto: u32 = 206; -pub const __NR_recvfrom: u32 = 207; -pub const __NR_setsockopt: u32 = 208; -pub const __NR_getsockopt: u32 = 209; -pub const __NR_shutdown: u32 = 210; -pub const __NR_sendmsg: u32 = 211; -pub const __NR_recvmsg: u32 = 212; -pub const __NR_readahead: u32 = 213; -pub const __NR_brk: u32 = 214; -pub const __NR_munmap: u32 = 215; -pub const __NR_mremap: u32 = 216; -pub const __NR_add_key: u32 = 217; -pub const __NR_request_key: u32 = 218; -pub const __NR_keyctl: u32 = 219; -pub const __NR_clone: u32 = 220; -pub const __NR_execve: u32 = 221; -pub const __NR3264_mmap: u32 = 222; -pub const __NR3264_fadvise64: u32 = 223; -pub const __NR_swapon: u32 = 224; -pub const __NR_swapoff: u32 = 225; -pub const __NR_mprotect: u32 = 226; -pub const __NR_msync: u32 = 227; -pub const __NR_mlock: u32 = 228; -pub const __NR_munlock: u32 = 229; -pub const __NR_mlockall: u32 = 230; -pub const __NR_munlockall: u32 = 231; -pub const __NR_mincore: u32 = 232; -pub const __NR_madvise: u32 = 233; -pub const __NR_remap_file_pages: u32 = 234; -pub const __NR_mbind: u32 = 235; -pub const __NR_get_mempolicy: u32 = 236; -pub const __NR_set_mempolicy: u32 = 237; -pub const __NR_migrate_pages: u32 = 238; -pub const __NR_move_pages: u32 = 239; -pub const __NR_rt_tgsigqueueinfo: u32 = 240; -pub const __NR_perf_event_open: u32 = 241; -pub const __NR_accept4: u32 = 242; -pub const __NR_recvmmsg: u32 = 243; -pub const __NR_arch_specific_syscall: u32 = 244; -pub const __NR_wait4: u32 = 260; -pub const __NR_prlimit64: u32 = 261; -pub const __NR_fanotify_init: u32 = 262; -pub const __NR_fanotify_mark: u32 = 263; -pub const __NR_name_to_handle_at: u32 = 264; -pub const __NR_open_by_handle_at: u32 = 265; -pub const __NR_clock_adjtime: u32 = 266; -pub const __NR_syncfs: u32 = 267; -pub const __NR_setns: u32 = 268; -pub const __NR_sendmmsg: u32 = 269; -pub const __NR_process_vm_readv: u32 = 270; -pub const __NR_process_vm_writev: u32 = 271; -pub const __NR_kcmp: u32 = 272; -pub const __NR_finit_module: u32 = 273; -pub const __NR_sched_setattr: u32 = 274; -pub const __NR_sched_getattr: u32 = 275; -pub const __NR_renameat2: u32 = 276; -pub const __NR_seccomp: u32 = 277; -pub const __NR_getrandom: u32 = 278; -pub const __NR_memfd_create: u32 = 279; -pub const __NR_bpf: u32 = 280; -pub const __NR_execveat: u32 = 281; -pub const __NR_userfaultfd: u32 = 282; -pub const __NR_membarrier: u32 = 283; -pub const __NR_mlock2: u32 = 284; -pub const __NR_copy_file_range: u32 = 285; -pub const __NR_preadv2: u32 = 286; -pub const __NR_pwritev2: u32 = 287; -pub const __NR_pkey_mprotect: u32 = 288; -pub const __NR_pkey_alloc: u32 = 289; -pub const __NR_pkey_free: u32 = 290; -pub const __NR_statx: u32 = 291; -pub const __NR_io_pgetevents: u32 = 292; -pub const __NR_rseq: u32 = 293; -pub const __NR_kexec_file_load: u32 = 294; -pub const __NR_pidfd_send_signal: u32 = 424; -pub const __NR_io_uring_setup: u32 = 425; -pub const __NR_io_uring_enter: u32 = 426; -pub const __NR_io_uring_register: u32 = 427; -pub const __NR_open_tree: u32 = 428; -pub const __NR_move_mount: u32 = 429; -pub const __NR_fsopen: u32 = 430; -pub const __NR_fsconfig: u32 = 431; -pub const __NR_fsmount: u32 = 432; -pub const __NR_fspick: u32 = 433; -pub const __NR_pidfd_open: u32 = 434; -pub const __NR_clone3: u32 = 435; -pub const __NR_close_range: u32 = 436; -pub const __NR_openat2: u32 = 437; -pub const __NR_pidfd_getfd: u32 = 438; -pub const __NR_faccessat2: u32 = 439; -pub const __NR_process_madvise: u32 = 440; -pub const __NR_epoll_pwait2: u32 = 441; -pub const __NR_mount_setattr: u32 = 442; -pub const __NR_quotactl_fd: u32 = 443; -pub const __NR_landlock_create_ruleset: u32 = 444; -pub const __NR_landlock_add_rule: u32 = 445; -pub const __NR_landlock_restrict_self: u32 = 446; -pub const __NR_process_mrelease: u32 = 448; -pub const __NR_futex_waitv: u32 = 449; -pub const __NR_set_mempolicy_home_node: u32 = 450; -pub const __NR_syscalls: u32 = 451; -pub const __NR_fcntl: u32 = 25; -pub const __NR_statfs: u32 = 43; -pub const __NR_fstatfs: u32 = 44; -pub const __NR_truncate: u32 = 45; -pub const __NR_ftruncate: u32 = 46; -pub const __NR_lseek: u32 = 62; -pub const __NR_sendfile: u32 = 71; -pub const __NR_mmap: u32 = 222; -pub const __NR_fadvise64: u32 = 223; -pub const __OLD_UTS_LEN: u32 = 8; -pub const __NEW_UTS_LEN: u32 = 64; -pub const WNOHANG: u32 = 1; -pub const WUNTRACED: u32 = 2; -pub const WSTOPPED: u32 = 2; -pub const WEXITED: u32 = 4; -pub const WCONTINUED: u32 = 8; -pub const WNOWAIT: u32 = 16777216; -pub const __WNOTHREAD: u32 = 536870912; -pub const __WALL: u32 = 1073741824; -pub const __WCLONE: u32 = 2147483648; -pub const P_ALL: u32 = 0; -pub const P_PID: u32 = 1; -pub const P_PGID: u32 = 2; -pub const P_PIDFD: u32 = 3; -pub const XATTR_CREATE: u32 = 1; -pub const XATTR_REPLACE: u32 = 2; -pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0"; -pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0"; -pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0"; -pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0"; -pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0"; -pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0"; -pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0"; -pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0"; -pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0"; -pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0"; -pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0"; -pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0"; -pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0"; -pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0"; -pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0"; -pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0"; -pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0"; -pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0"; -pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0"; -pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0"; -pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0"; -pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0"; -pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0"; -pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0"; -pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0"; -pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0"; -pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0"; -pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0"; -pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0"; -pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0"; -pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0"; -pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0"; -pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0"; -pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0"; -pub const MFD_CLOEXEC: u32 = 1; -pub const MFD_ALLOW_SEALING: u32 = 2; -pub const MFD_HUGETLB: u32 = 4; -pub const MFD_NOEXEC_SEAL: u32 = 8; -pub const MFD_EXEC: u32 = 16; -pub const MFD_HUGE_SHIFT: u32 = 26; -pub const MFD_HUGE_MASK: u32 = 63; -pub const MFD_HUGE_64KB: u32 = 1073741824; -pub const MFD_HUGE_512KB: u32 = 1275068416; -pub const MFD_HUGE_1MB: u32 = 1342177280; -pub const MFD_HUGE_2MB: u32 = 1409286144; -pub const MFD_HUGE_8MB: u32 = 1543503872; -pub const MFD_HUGE_16MB: u32 = 1610612736; -pub const MFD_HUGE_32MB: u32 = 1677721600; -pub const MFD_HUGE_256MB: u32 = 1879048192; -pub const MFD_HUGE_512MB: u32 = 1946157056; -pub const MFD_HUGE_1GB: u32 = 2013265920; -pub const MFD_HUGE_2GB: u32 = 2080374784; -pub const MFD_HUGE_16GB: u32 = 2281701376; -pub const TFD_TIMER_ABSTIME: u32 = 1; -pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; -pub const TFD_CLOEXEC: u32 = 524288; -pub const TFD_NONBLOCK: u32 = 2048; -pub const USERFAULTFD_IOC: u32 = 170; -pub const _UFFDIO_REGISTER: u32 = 0; -pub const _UFFDIO_UNREGISTER: u32 = 1; -pub const _UFFDIO_WAKE: u32 = 2; -pub const _UFFDIO_COPY: u32 = 3; -pub const _UFFDIO_ZEROPAGE: u32 = 4; -pub const _UFFDIO_WRITEPROTECT: u32 = 6; -pub const _UFFDIO_CONTINUE: u32 = 7; -pub const _UFFDIO_API: u32 = 63; -pub const UFFDIO: u32 = 170; -pub const UFFD_EVENT_PAGEFAULT: u32 = 18; -pub const UFFD_EVENT_FORK: u32 = 19; -pub const UFFD_EVENT_REMAP: u32 = 20; -pub const UFFD_EVENT_REMOVE: u32 = 21; -pub const UFFD_EVENT_UNMAP: u32 = 22; -pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; -pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; -pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; -pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; -pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; -pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; -pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; -pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; -pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; -pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; -pub const UFFD_FEATURE_SIGBUS: u32 = 128; -pub const UFFD_FEATURE_THREAD_ID: u32 = 256; -pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; -pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; -pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; -pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; -pub const UFFD_USER_MODE_ONLY: u32 = 1; -pub const IORING_FILE_INDEX_ALLOC: i32 = -1; -pub const IORING_SETUP_IOPOLL: u32 = 1; -pub const IORING_SETUP_SQPOLL: u32 = 2; -pub const IORING_SETUP_SQ_AFF: u32 = 4; -pub const IORING_SETUP_CQSIZE: u32 = 8; -pub const IORING_SETUP_CLAMP: u32 = 16; -pub const IORING_SETUP_ATTACH_WQ: u32 = 32; -pub const IORING_SETUP_R_DISABLED: u32 = 64; -pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; -pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; -pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; -pub const IORING_SETUP_SQE128: u32 = 1024; -pub const IORING_SETUP_CQE32: u32 = 2048; -pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; -pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; -pub const IORING_URING_CMD_FIXED: u32 = 1; -pub const IORING_FSYNC_DATASYNC: u32 = 1; -pub const IORING_TIMEOUT_ABS: u32 = 1; -pub const IORING_TIMEOUT_UPDATE: u32 = 2; -pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; -pub const IORING_TIMEOUT_REALTIME: u32 = 8; -pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; -pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; -pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; -pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; -pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; -pub const IORING_POLL_ADD_MULTI: u32 = 1; -pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; -pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; -pub const IORING_POLL_ADD_LEVEL: u32 = 8; -pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; -pub const IORING_ASYNC_CANCEL_FD: u32 = 2; -pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; -pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; -pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; -pub const IORING_RECV_MULTISHOT: u32 = 2; -pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; -pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; -pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; -pub const IORING_ACCEPT_MULTISHOT: u32 = 1; -pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; -pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; -pub const IORING_CQE_F_BUFFER: u32 = 1; -pub const IORING_CQE_F_MORE: u32 = 2; -pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; -pub const IORING_CQE_F_NOTIF: u32 = 8; -pub const IORING_OFF_SQ_RING: u32 = 0; -pub const IORING_OFF_CQ_RING: u32 = 134217728; -pub const IORING_OFF_SQES: u32 = 268435456; -pub const IORING_SQ_NEED_WAKEUP: u32 = 1; -pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; -pub const IORING_SQ_TASKRUN: u32 = 4; -pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; -pub const IORING_ENTER_GETEVENTS: u32 = 1; -pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; -pub const IORING_ENTER_SQ_WAIT: u32 = 4; -pub const IORING_ENTER_EXT_ARG: u32 = 8; -pub const IORING_ENTER_REGISTERED_RING: u32 = 16; -pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; -pub const IORING_FEAT_NODROP: u32 = 2; -pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; -pub const IORING_FEAT_RW_CUR_POS: u32 = 8; -pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; -pub const IORING_FEAT_FAST_POLL: u32 = 32; -pub const IORING_FEAT_POLL_32BITS: u32 = 64; -pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; -pub const IORING_FEAT_EXT_ARG: u32 = 256; -pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; -pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; -pub const IORING_FEAT_CQE_SKIP: u32 = 2048; -pub const IORING_FEAT_LINKED_FILE: u32 = 4096; -pub const IORING_FEAT_REG_REG_RING: u32 = 8192; -pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; -pub const IORING_REGISTER_FILES_SKIP: i32 = -2; -pub const IO_URING_OP_SUPPORTED: u32 = 1; -pub const DT_UNKNOWN: u32 = 0; -pub const DT_FIFO: u32 = 1; -pub const DT_CHR: u32 = 2; -pub const DT_DIR: u32 = 4; -pub const DT_BLK: u32 = 6; -pub const DT_REG: u32 = 8; -pub const DT_LNK: u32 = 10; -pub const DT_SOCK: u32 = 12; -pub const SHUT_RD: u32 = 0; -pub const SHUT_WR: u32 = 1; -pub const SHUT_RDWR: u32 = 2; -pub const STAT_HAVE_NSEC: u32 = 1; -pub const SOCK_STREAM: u32 = 1; -pub const SOCK_DGRAM: u32 = 2; -pub const SOCK_RAW: u32 = 3; -pub const SOCK_RDM: u32 = 4; -pub const SOCK_SEQPACKET: u32 = 5; -pub const F_OK: u32 = 0; -pub const R_OK: u32 = 4; -pub const W_OK: u32 = 2; -pub const X_OK: u32 = 1; -pub const UTIME_NOW: u32 = 1073741823; -pub const UTIME_OMIT: u32 = 1073741822; -pub const MSG_DONTWAIT: u32 = 64; -pub const AF_UNSPEC: u32 = 0; -pub const AF_UNIX: u32 = 1; -pub const AF_INET: u32 = 2; -pub const AF_AX25: u32 = 3; -pub const AF_IPX: u32 = 4; -pub const AF_APPLETALK: u32 = 5; -pub const AF_NETROM: u32 = 6; -pub const AF_BRIDGE: u32 = 7; -pub const AF_ATMPVC: u32 = 8; -pub const AF_X25: u32 = 9; -pub const AF_INET6: u32 = 10; -pub const AF_ROSE: u32 = 11; -pub const AF_DECnet: u32 = 12; -pub const AF_NETBEUI: u32 = 13; -pub const AF_SECURITY: u32 = 14; -pub const AF_KEY: u32 = 15; -pub const AF_NETLINK: u32 = 16; -pub const AF_PACKET: u32 = 17; -pub const AF_ASH: u32 = 18; -pub const AF_ECONET: u32 = 19; -pub const AF_ATMSVC: u32 = 20; -pub const AF_RDS: u32 = 21; -pub const AF_SNA: u32 = 22; -pub const AF_IRDA: u32 = 23; -pub const AF_PPPOX: u32 = 24; -pub const AF_WANPIPE: u32 = 25; -pub const AF_LLC: u32 = 26; -pub const AF_CAN: u32 = 29; -pub const AF_TIPC: u32 = 30; -pub const AF_BLUETOOTH: u32 = 31; -pub const AF_IUCV: u32 = 32; -pub const AF_RXRPC: u32 = 33; -pub const AF_ISDN: u32 = 34; -pub const AF_PHONET: u32 = 35; -pub const AF_IEEE802154: u32 = 36; -pub const AF_MAX: u32 = 37; -pub const MSG_OOB: u32 = 1; -pub const MSG_PEEK: u32 = 2; -pub const MSG_DONTROUTE: u32 = 4; -pub const MSG_CTRUNC: u32 = 8; -pub const MSG_PROBE: u32 = 16; -pub const MSG_TRUNC: u32 = 32; -pub const MSG_EOR: u32 = 128; -pub const MSG_WAITALL: u32 = 256; -pub const MSG_FIN: u32 = 512; -pub const MSG_SYN: u32 = 1024; -pub const MSG_CONFIRM: u32 = 2048; -pub const MSG_RST: u32 = 4096; -pub const MSG_ERRQUEUE: u32 = 8192; -pub const MSG_NOSIGNAL: u32 = 16384; -pub const MSG_MORE: u32 = 32768; -pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; -pub const STDIN_FILENO: u32 = 0; -pub const STDOUT_FILENO: u32 = 1; -pub const STDERR_FILENO: u32 = 2; -pub const RWF_HIPRI: u32 = 1; -pub const RWF_DSYNC: u32 = 2; -pub const RWF_SYNC: u32 = 4; -pub const RWF_NOWAIT: u32 = 8; -pub const RWF_APPEND: u32 = 16; -pub const EFD_SEMAPHORE: u32 = 1; -pub const EFD_CLOEXEC: u32 = 524288; -pub const EFD_NONBLOCK: u32 = 2048; -pub const EPOLLIN: u32 = 1; -pub const EPOLLPRI: u32 = 2; -pub const EPOLLOUT: u32 = 4; -pub const EPOLLERR: u32 = 8; -pub const EPOLLHUP: u32 = 16; -pub const EPOLLNVAL: u32 = 32; -pub const EPOLLRDNORM: u32 = 64; -pub const EPOLLRDBAND: u32 = 128; -pub const EPOLLWRNORM: u32 = 256; -pub const EPOLLWRBAND: u32 = 512; -pub const EPOLLMSG: u32 = 1024; -pub const EPOLLRDHUP: u32 = 8192; -pub const EPOLLEXCLUSIVE: u32 = 268435456; -pub const EPOLLWAKEUP: u32 = 536870912; -pub const EPOLLONESHOT: u32 = 1073741824; -pub const EPOLLET: u32 = 2147483648; -pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; -pub const TFD_CREATE_FLAGS: u32 = 526336; -pub const TFD_SETTIME_FLAGS: u32 = 1; -pub const SCM_RIGHTS: u32 = 1; -pub const SCM_CREDENTIALS: u32 = 2; -pub const SCM_SECURITY: u32 = 3; -pub const UFFD_API: u32 = 170; -pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; -pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; -pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; -pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; -pub const UFFDIO_COPY_MODE_WP: u32 = 2; -pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; -pub const SPLICE_F_MOVE: u32 = 1; -pub const SPLICE_F_NONBLOCK: u32 = 2; -pub const SPLICE_F_MORE: u32 = 4; -pub const SPLICE_F_GIFT: u32 = 8; -pub const MNT_FORCE: u32 = 1; -pub const MNT_DETACH: u32 = 2; -pub const MNT_EXPIRE: u32 = 4; -pub const UMOUNT_NOFOLLOW: u32 = 8; -pub const UMOUNT_UNUSED: u32 = 2147483648; -pub type size_t = crate::ctypes::c_ulong; -pub type ssize_t = crate::ctypes::c_long; -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 16usize], -} -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_old_dev_t = crate::ctypes::c_uint; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_header_struct { -pub version: __u32, -pub pid: crate::ctypes::c_int, -} -pub type cap_user_header_t = *mut __user_cap_header_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_data_struct { -pub effective: __u32, -pub permitted: __u32, -pub inheritable: __u32, -} -pub type cap_user_data_t = *mut __user_cap_data_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data { -pub magic_etc: __le32, -pub data: [vfs_cap_data__bindgen_ty_1; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data { -pub magic_etc: __le32, -pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], -pub rootid: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct f_owner_ex { -pub type_: crate::ctypes::c_int, -pub pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_off_t, -pub l_len: __kernel_off_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock64 { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_loff_t, -pub l_len: __kernel_loff_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct open_how { -pub flags: __u64, -pub mode: __u64, -pub resolve: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct epoll_event { -pub events: __poll_t, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v1 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub master_key_descriptor: [__u8; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_key { -pub mode: __u32, -pub raw: [__u8; 64usize], -pub size: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v2 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub __reserved: [__u8; 4usize], -pub master_key_identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_get_policy_ex_arg { -pub policy_size: __u64, -pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { -pub version: __u8, -pub v1: fscrypt_policy_v1, -pub v2: fscrypt_policy_v2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_key_specifier { -pub type_: __u32, -pub __reserved: __u32, -pub u: fscrypt_key_specifier__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_key_specifier__bindgen_ty_1 { -pub __reserved: [__u8; 32usize], -pub descriptor: [__u8; 8usize], -pub identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct fscrypt_provisioning_key_payload { -pub type_: __u32, -pub __reserved: __u32, -pub raw: __IncompleteArrayField<__u8>, -} -#[repr(C)] -pub struct fscrypt_add_key_arg { -pub key_spec: fscrypt_key_specifier, -pub raw_size: __u32, -pub key_id: __u32, -pub __reserved: [__u32; 8usize], -pub raw: __IncompleteArrayField<__u8>, +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, } #[repr(C)] #[derive(Copy, Clone)] @@ -2748,19 +229,6 @@ pub user_count: __u32, pub __out_reserved: [__u32; 13usize], } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum fsconfig_command { -FSCONFIG_SET_FLAG = 0, -FSCONFIG_SET_STRING = 1, -FSCONFIG_SET_BINARY = 2, -FSCONFIG_SET_PATH = 3, -FSCONFIG_SET_PATH_EMPTY = 4, -FSCONFIG_SET_FD = 5, -FSCONFIG_CMD_CREATE = 6, -FSCONFIG_CMD_RECONFIGURE = 7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct mount_attr { @@ -2827,7 +295,6 @@ pub fsx_cowextsize: __u32, pub fsx_pad: [crate::ctypes::c_uchar; 8usize], } -pub type __kernel_rwf_t = crate::ctypes::c_int; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct futex_waitv { @@ -2848,663 +315,14 @@ pub futex_offset: crate::ctypes::c_long, pub list_op_pending: *mut robust_list, } -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], -} -pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; -pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; -pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; -pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; -pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; -pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; -pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; -pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; -pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; -pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; -pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; -pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; -pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; -pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; -pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; -pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; -pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; -pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; -pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; -pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; -pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; -pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; -pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; -pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; -pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; -pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; -pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; -pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; -pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_1 { -IPPROTO_IP = 0, -IPPROTO_ICMP = 1, -IPPROTO_IGMP = 2, -IPPROTO_IPIP = 4, -IPPROTO_TCP = 6, -IPPROTO_EGP = 8, -IPPROTO_PUP = 12, -IPPROTO_UDP = 17, -IPPROTO_IDP = 22, -IPPROTO_TP = 29, -IPPROTO_DCCP = 33, -IPPROTO_IPV6 = 41, -IPPROTO_RSVP = 46, -IPPROTO_GRE = 47, -IPPROTO_ESP = 50, -IPPROTO_AH = 51, -IPPROTO_MTP = 92, -IPPROTO_BEETPH = 94, -IPPROTO_ENCAP = 98, -IPPROTO_PIM = 103, -IPPROTO_COMP = 108, -IPPROTO_L2TP = 115, -IPPROTO_SCTP = 132, -IPPROTO_UDPLITE = 136, -IPPROTO_MPLS = 137, -IPPROTO_ETHERNET = 143, -IPPROTO_RAW = 255, -IPPROTO_MPTCP = 262, -IPPROTO_MAX = 263, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_addr { -pub s_addr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq { -pub imr_multiaddr: in_addr, -pub imr_interface: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreqn { -pub imr_multiaddr: in_addr, -pub imr_address: in_addr, -pub imr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq_source { -pub imr_multiaddr: __be32, -pub imr_interface: __be32, -pub imr_sourceaddr: __be32, -} -#[repr(C)] -pub struct ip_msfilter { -pub imsf_multiaddr: __be32, -pub imsf_interface: __be32, -pub imsf_fmode: __u32, -pub imsf_numsrc: __u32, -pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, -} -#[repr(C)] -pub struct ip_msfilter__bindgen_ty_1 { -pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, -pub __bindgen_anon_1: __BindgenUnionField, -pub bindgen_union_field: u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { -pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -pub imsf_slist_flex: __IncompleteArrayField<__be32>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_req { -pub gr_interface: __u32, -pub gr_group: __kernel_sockaddr_storage, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_source_req { -pub gsr_interface: __u32, -pub gsr_group: __kernel_sockaddr_storage, -pub gsr_source: __kernel_sockaddr_storage, -} -#[repr(C)] -pub struct group_filter { -pub __bindgen_anon_1: group_filter__bindgen_ty_1, -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 34usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { -pub gf_interface_aux: __u32, -pub gf_group_aux: __kernel_sockaddr_storage, -pub gf_fmode_aux: __u32, -pub gf_numsrc_aux: __u32, -pub gf_slist: [__kernel_sockaddr_storage; 1usize], -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { -pub gf_interface: __u32, -pub gf_group: __kernel_sockaddr_storage, -pub gf_fmode: __u32, -pub gf_numsrc: __u32, -pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_pktinfo { -pub ipi_ifindex: crate::ctypes::c_int, -pub ipi_spec_dst: in_addr, -pub ipi_addr: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_in { -pub sin_family: __kernel_sa_family_t, -pub sin_port: __be16, -pub sin_addr: in_addr, -pub __pad: [crate::ctypes::c_uchar; 8usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct inotify_event { -pub wd: __s32, -pub mask: __u32, -pub cookie: __u32, -pub len: __u32, -pub name: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct iphdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub tos: __u8, -pub tot_len: __be16, -pub id: __be16, -pub frag_off: __be16, -pub ttl: __u8, -pub protocol: __u8, -pub check: __sum16, -pub __bindgen_anon_1: iphdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union iphdr__bindgen_ty_1 { -pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: __be32, -pub daddr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: __be32, -pub daddr: __be32, -} -impl iphdr { -#[inline] -pub fn ihl(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_ihl(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; -ihl as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_auth_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub reserved: __be16, -pub spi: __be32, -pub seq_no: __be32, -pub auth_data: __IncompleteArrayField<__u8>, -} #[repr(C)] #[derive(Debug)] -pub struct ip_esp_hdr { -pub spi: __be32, -pub seq_no: __be32, -pub enc_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_comp_hdr { -pub nexthdr: __u8, -pub flags: __u8, -pub cpi: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_beet_phdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub padlen: __u8, -pub reserved: __u8, -} -pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; -pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; -pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; -pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; -pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; -pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; -pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; -pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; -pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; -pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; -pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; -pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; -pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; -pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; -pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; -pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; -pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; -pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; -pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; -pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; -pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; -pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; -pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; -pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; -pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; -pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; -pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; -pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; -pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_2 { -IPV4_DEVCONF_FORWARDING = 1, -IPV4_DEVCONF_MC_FORWARDING = 2, -IPV4_DEVCONF_PROXY_ARP = 3, -IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, -IPV4_DEVCONF_SECURE_REDIRECTS = 5, -IPV4_DEVCONF_SEND_REDIRECTS = 6, -IPV4_DEVCONF_SHARED_MEDIA = 7, -IPV4_DEVCONF_RP_FILTER = 8, -IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, -IPV4_DEVCONF_BOOTP_RELAY = 10, -IPV4_DEVCONF_LOG_MARTIANS = 11, -IPV4_DEVCONF_TAG = 12, -IPV4_DEVCONF_ARPFILTER = 13, -IPV4_DEVCONF_MEDIUM_ID = 14, -IPV4_DEVCONF_NOXFRM = 15, -IPV4_DEVCONF_NOPOLICY = 16, -IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, -IPV4_DEVCONF_ARP_ANNOUNCE = 18, -IPV4_DEVCONF_ARP_IGNORE = 19, -IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, -IPV4_DEVCONF_ARP_ACCEPT = 21, -IPV4_DEVCONF_ARP_NOTIFY = 22, -IPV4_DEVCONF_ACCEPT_LOCAL = 23, -IPV4_DEVCONF_SRC_VMARK = 24, -IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, -IPV4_DEVCONF_ROUTE_LOCALNET = 26, -IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, -IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, -IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, -IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, -IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, -IPV4_DEVCONF_BC_FORWARDING = 32, -IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, -__IPV4_DEVCONF_MAX = 34, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_addr { -pub in6_u: in6_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union in6_addr__bindgen_ty_1 { -pub u6_addr8: [__u8; 16usize], -pub u6_addr16: [__be16; 8usize], -pub u6_addr32: [__be32; 4usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_in6 { -pub sin6_family: crate::ctypes::c_ushort, -pub sin6_port: __be16, -pub sin6_flowinfo: __be32, -pub sin6_addr: in6_addr, -pub sin6_scope_id: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6_mreq { -pub ipv6mr_multiaddr: in6_addr, -pub ipv6mr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_flowlabel_req { -pub flr_dst: in6_addr, -pub flr_label: __be32, -pub flr_action: __u8, -pub flr_share: __u8, -pub flr_flags: __u16, -pub flr_expires: __u16, -pub flr_linger: __u16, -pub __flr_pad: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_pktinfo { -pub ipi6_addr: in6_addr, -pub ipi6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ip6_mtuinfo { -pub ip6m_addr: sockaddr_in6, -pub ip6m_mtu: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_ifreq { -pub ifr6_addr: in6_addr, -pub ifr6_prefixlen: __u32, -pub ifr6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_rt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub type_: __u8, -pub segments_left: __u8, -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_opt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -} -#[repr(C)] -pub struct rt0_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rt2_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: in6_addr, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct ipv6_destopt_hao { -pub type_: __u8, -pub length: __u8, -pub addr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub flow_lbl: [__u8; 3usize], -pub payload_len: __be16, -pub nexthdr: __u8, -pub hop_limit: __u8, -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ipv6hdr__bindgen_ty_1 { -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -impl ipv6hdr { -#[inline] -pub fn priority(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_priority(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let priority: u8 = unsafe { ::core::mem::transmute(priority) }; -priority as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit -} -} -pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; -pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; -pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; -pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; -pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; -pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; -pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; -pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; -pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; -pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; -pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; -pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; -pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; -pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; -pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; -pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; -pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; -pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; -pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; -pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; -pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; -pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; -pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; -pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; -pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; -pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; -pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; -pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; -pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; -pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; -pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; -pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; -pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; -pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; -pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; -pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; -pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; -pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; -pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; -pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; -pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; -pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; -pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; -pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; -pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; -pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; -pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; -pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; -pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; -pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; -pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; -pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_3 { -DEVCONF_FORWARDING = 0, -DEVCONF_HOPLIMIT = 1, -DEVCONF_MTU6 = 2, -DEVCONF_ACCEPT_RA = 3, -DEVCONF_ACCEPT_REDIRECTS = 4, -DEVCONF_AUTOCONF = 5, -DEVCONF_DAD_TRANSMITS = 6, -DEVCONF_RTR_SOLICITS = 7, -DEVCONF_RTR_SOLICIT_INTERVAL = 8, -DEVCONF_RTR_SOLICIT_DELAY = 9, -DEVCONF_USE_TEMPADDR = 10, -DEVCONF_TEMP_VALID_LFT = 11, -DEVCONF_TEMP_PREFERED_LFT = 12, -DEVCONF_REGEN_MAX_RETRY = 13, -DEVCONF_MAX_DESYNC_FACTOR = 14, -DEVCONF_MAX_ADDRESSES = 15, -DEVCONF_FORCE_MLD_VERSION = 16, -DEVCONF_ACCEPT_RA_DEFRTR = 17, -DEVCONF_ACCEPT_RA_PINFO = 18, -DEVCONF_ACCEPT_RA_RTR_PREF = 19, -DEVCONF_RTR_PROBE_INTERVAL = 20, -DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, -DEVCONF_PROXY_NDP = 22, -DEVCONF_OPTIMISTIC_DAD = 23, -DEVCONF_ACCEPT_SOURCE_ROUTE = 24, -DEVCONF_MC_FORWARDING = 25, -DEVCONF_DISABLE_IPV6 = 26, -DEVCONF_ACCEPT_DAD = 27, -DEVCONF_FORCE_TLLAO = 28, -DEVCONF_NDISC_NOTIFY = 29, -DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, -DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, -DEVCONF_SUPPRESS_FRAG_NDISC = 32, -DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, -DEVCONF_USE_OPTIMISTIC = 34, -DEVCONF_ACCEPT_RA_MTU = 35, -DEVCONF_STABLE_SECRET = 36, -DEVCONF_USE_OIF_ADDRS_ONLY = 37, -DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, -DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, -DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, -DEVCONF_DROP_UNSOLICITED_NA = 41, -DEVCONF_KEEP_ADDR_ON_DOWN = 42, -DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, -DEVCONF_SEG6_ENABLED = 44, -DEVCONF_SEG6_REQUIRE_HMAC = 45, -DEVCONF_ENHANCED_DAD = 46, -DEVCONF_ADDR_GEN_MODE = 47, -DEVCONF_DISABLE_POLICY = 48, -DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, -DEVCONF_NDISC_TCLASS = 50, -DEVCONF_RPL_SEG_ENABLED = 51, -DEVCONF_RA_DEFRTR_METRIC = 52, -DEVCONF_IOAM6_ENABLED = 53, -DEVCONF_IOAM6_ID = 54, -DEVCONF_IOAM6_ID_WIDE = 55, -DEVCONF_NDISC_EVICT_NOCARRIER = 56, -DEVCONF_ACCEPT_UNTRACKED_NA = 57, -DEVCONF_MAX = 58, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum socket_state { -SS_FREE = 0, -SS_UNCONNECTED = 1, -SS_CONNECTING = 2, -SS_CONNECTED = 3, -SS_DISCONNECTING = 4, +pub struct inotify_event { +pub wd: __s32, +pub mask: __u32, +pub cookie: __u32, +pub len: __u32, +pub name: __IncompleteArrayField, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -3514,24 +332,6 @@ pub revents: crate::ctypes::c_short, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prctl_mm_map { -pub start_code: __u64, -pub end_code: __u64, -pub start_data: __u64, -pub end_data: __u64, -pub start_brk: __u64, -pub brk: __u64, -pub start_stack: __u64, -pub arg_start: __u64, -pub arg_end: __u64, -pub env_start: __u64, -pub env_end: __u64, -pub auxv: *mut __u64, -pub auxv_size: __u32, -pub exe_fd: __u32, -} -#[repr(C)] #[derive(Debug)] pub struct rand_pool_info { pub entropy_count: crate::ctypes::c_int, @@ -3656,11 +456,6 @@ pub struct sigset_t { pub sig: [crate::ctypes::c_ulong; 1usize], } -pub type old_sigset_t = crate::ctypes::c_ulong; -pub type __signalfn_t = ::core::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::core::option::Option; -pub type __sigrestore_t = __restorefn_t; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct sigaction { @@ -3675,25 +470,6 @@ pub ss_flags: crate::ctypes::c_int, pub ss_size: __kernel_size_t, } -pub type stack_t = sigaltstack; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { -pub sival_int: crate::ctypes::c_int, -pub sival_ptr: *mut crate::ctypes::c_void, -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { -pub _kill: __sifields__bindgen_ty_1, -pub _timer: __sifields__bindgen_ty_2, -pub _rt: __sifields__bindgen_ty_3, -pub _sigchld: __sifields__bindgen_ty_4, -pub _sigfault: __sifields__bindgen_ty_5, -pub _sigpoll: __sifields__bindgen_ty_6, -pub _sigsys: __sifields__bindgen_ty_7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_1 { @@ -3731,15 +507,6 @@ pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { -pub _trapno: crate::ctypes::c_int, -pub _addr_lsb: crate::ctypes::c_short, -pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, -pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { pub _dummy_bnd: [crate::ctypes::c_char; 8usize], @@ -3774,573 +541,66 @@ } #[repr(C)] #[derive(Copy, Clone)] -pub struct siginfo { -pub __bindgen_anon_1: siginfo__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { -pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, -pub _si_pad: [crate::ctypes::c_int; 32usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { -pub si_signo: crate::ctypes::c_int, -pub si_errno: crate::ctypes::c_int, -pub si_code: crate::ctypes::c_int, -pub _sifields: __sifields, -} -pub type siginfo_t = siginfo; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigevent { -pub sigev_value: sigval_t, -pub sigev_signo: crate::ctypes::c_int, -pub sigev_notify: crate::ctypes::c_int, -pub _sigev_un: sigevent__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { -pub _pad: [crate::ctypes::c_int; 12usize], -pub _tid: crate::ctypes::c_int, -pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { -pub _function: ::core::option::Option, -pub _attribute: *mut crate::ctypes::c_void, -} -pub type sigevent_t = sigevent; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statx_timestamp { -pub tv_sec: __s64, -pub tv_nsec: __u32, -pub __reserved: __s32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statx { -pub stx_mask: __u32, -pub stx_blksize: __u32, -pub stx_attributes: __u64, -pub stx_nlink: __u32, -pub stx_uid: __u32, -pub stx_gid: __u32, -pub stx_mode: __u16, -pub __spare0: [__u16; 1usize], -pub stx_ino: __u64, -pub stx_size: __u64, -pub stx_blocks: __u64, -pub stx_attributes_mask: __u64, -pub stx_atime: statx_timestamp, -pub stx_btime: statx_timestamp, -pub stx_ctime: statx_timestamp, -pub stx_mtime: statx_timestamp, -pub stx_rdev_major: __u32, -pub stx_rdev_minor: __u32, -pub stx_dev_major: __u32, -pub stx_dev_minor: __u32, -pub stx_mnt_id: __u64, -pub stx_dio_mem_align: __u32, -pub stx_dio_offset_align: __u32, -pub __spare3: [__u64; 12usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct sysinfo { -pub uptime: __kernel_long_t, -pub loads: [__kernel_ulong_t; 3usize], -pub totalram: __kernel_ulong_t, -pub freeram: __kernel_ulong_t, -pub sharedram: __kernel_ulong_t, -pub bufferram: __kernel_ulong_t, -pub totalswap: __kernel_ulong_t, -pub freeswap: __kernel_ulong_t, -pub procs: __u16, -pub pad: __u16, -pub totalhigh: __kernel_ulong_t, -pub freehigh: __kernel_ulong_t, -pub mem_unit: __u32, -pub _f: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcphdr { -pub source: __be16, -pub dest: __be16, -pub seq: __be32, -pub ack_seq: __be32, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub window: __be16, -pub check: __sum16, -pub urg_ptr: __be16, -} -impl tcphdr { -#[inline] -pub fn res1(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } -} -#[inline] -pub fn set_res1(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn doff(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } -} -#[inline] -pub fn set_doff(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn fin(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } -} -#[inline] -pub fn set_fin(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn syn(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } -} -#[inline] -pub fn set_syn(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 1u8, val as u64) -} -} -#[inline] -pub fn rst(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } -} -#[inline] -pub fn set_rst(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(10usize, 1u8, val as u64) -} -} -#[inline] -pub fn psh(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } -} -#[inline] -pub fn set_psh(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(11usize, 1u8, val as u64) -} -} -#[inline] -pub fn ack(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } -} -#[inline] -pub fn set_ack(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(12usize, 1u8, val as u64) -} -} -#[inline] -pub fn urg(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } -} -#[inline] -pub fn set_urg(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(13usize, 1u8, val as u64) -} -} -#[inline] -pub fn ece(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } -} -#[inline] -pub fn set_ece(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(14usize, 1u8, val as u64) -} -} -#[inline] -pub fn cwr(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } -} -#[inline] -pub fn set_cwr(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(15usize, 1u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let res1: u16 = unsafe { ::core::mem::transmute(res1) }; -res1 as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let doff: u16 = unsafe { ::core::mem::transmute(doff) }; -doff as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let fin: u16 = unsafe { ::core::mem::transmute(fin) }; -fin as u64 -}); -__bindgen_bitfield_unit.set(9usize, 1u8, { -let syn: u16 = unsafe { ::core::mem::transmute(syn) }; -syn as u64 -}); -__bindgen_bitfield_unit.set(10usize, 1u8, { -let rst: u16 = unsafe { ::core::mem::transmute(rst) }; -rst as u64 -}); -__bindgen_bitfield_unit.set(11usize, 1u8, { -let psh: u16 = unsafe { ::core::mem::transmute(psh) }; -psh as u64 -}); -__bindgen_bitfield_unit.set(12usize, 1u8, { -let ack: u16 = unsafe { ::core::mem::transmute(ack) }; -ack as u64 -}); -__bindgen_bitfield_unit.set(13usize, 1u8, { -let urg: u16 = unsafe { ::core::mem::transmute(urg) }; -urg as u64 -}); -__bindgen_bitfield_unit.set(14usize, 1u8, { -let ece: u16 = unsafe { ::core::mem::transmute(ece) }; -ece as u64 -}); -__bindgen_bitfield_unit.set(15usize, 1u8, { -let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; -cwr as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union tcp_word_hdr { -pub hdr: tcphdr, -pub words: [__be32; 5usize], -} -pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; -pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; -pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; -pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; -pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; -pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; -pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; -pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; -pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; -pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_4 { -TCP_FLAG_CWR = 32768, -TCP_FLAG_ECE = 16384, -TCP_FLAG_URG = 8192, -TCP_FLAG_ACK = 4096, -TCP_FLAG_PSH = 2048, -TCP_FLAG_RST = 1024, -TCP_FLAG_SYN = 512, -TCP_FLAG_FIN = 256, -TCP_RESERVED_BITS = 15, -TCP_DATA_OFFSET = 240, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_repair_opt { -pub opt_code: __u32, -pub opt_val: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_repair_window { -pub snd_wl1: __u32, -pub snd_wnd: __u32, -pub max_window: __u32, -pub rcv_wnd: __u32, -pub rcv_wup: __u32, -} -pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; -pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; -pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; -pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_5 { -TCP_NO_QUEUE = 0, -TCP_RECV_QUEUE = 1, -TCP_SEND_QUEUE = 2, -TCP_QUEUES_NR = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_fastopen_client_fail { -TFO_STATUS_UNSPEC = 0, -TFO_COOKIE_UNAVAILABLE = 1, -TFO_DATA_NOT_ACKED = 2, -TFO_SYN_RETRANSMITTED = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_ca_state { -TCP_CA_Open = 0, -TCP_CA_Disorder = 1, -TCP_CA_CWR = 2, -TCP_CA_Recovery = 3, -TCP_CA_Loss = 4, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_info { -pub tcpi_state: __u8, -pub tcpi_ca_state: __u8, -pub tcpi_retransmits: __u8, -pub tcpi_probes: __u8, -pub tcpi_backoff: __u8, -pub tcpi_options: __u8, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub tcpi_rto: __u32, -pub tcpi_ato: __u32, -pub tcpi_snd_mss: __u32, -pub tcpi_rcv_mss: __u32, -pub tcpi_unacked: __u32, -pub tcpi_sacked: __u32, -pub tcpi_lost: __u32, -pub tcpi_retrans: __u32, -pub tcpi_fackets: __u32, -pub tcpi_last_data_sent: __u32, -pub tcpi_last_ack_sent: __u32, -pub tcpi_last_data_recv: __u32, -pub tcpi_last_ack_recv: __u32, -pub tcpi_pmtu: __u32, -pub tcpi_rcv_ssthresh: __u32, -pub tcpi_rtt: __u32, -pub tcpi_rttvar: __u32, -pub tcpi_snd_ssthresh: __u32, -pub tcpi_snd_cwnd: __u32, -pub tcpi_advmss: __u32, -pub tcpi_reordering: __u32, -pub tcpi_rcv_rtt: __u32, -pub tcpi_rcv_space: __u32, -pub tcpi_total_retrans: __u32, -pub tcpi_pacing_rate: __u64, -pub tcpi_max_pacing_rate: __u64, -pub tcpi_bytes_acked: __u64, -pub tcpi_bytes_received: __u64, -pub tcpi_segs_out: __u32, -pub tcpi_segs_in: __u32, -pub tcpi_notsent_bytes: __u32, -pub tcpi_min_rtt: __u32, -pub tcpi_data_segs_in: __u32, -pub tcpi_data_segs_out: __u32, -pub tcpi_delivery_rate: __u64, -pub tcpi_busy_time: __u64, -pub tcpi_rwnd_limited: __u64, -pub tcpi_sndbuf_limited: __u64, -pub tcpi_delivered: __u32, -pub tcpi_delivered_ce: __u32, -pub tcpi_bytes_sent: __u64, -pub tcpi_bytes_retrans: __u64, -pub tcpi_dsack_dups: __u32, -pub tcpi_reord_seen: __u32, -pub tcpi_rcv_ooopack: __u32, -pub tcpi_snd_wnd: __u32, -pub tcpi_rcv_wnd: __u32, -pub tcpi_rehash: __u32, -} -impl tcp_info { -#[inline] -pub fn tcpi_snd_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_rcv_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } -} -#[inline] -pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn tcpi_fastopen_client_fail(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } -} -#[inline] -pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 2u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; -tcpi_snd_wscale as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; -tcpi_rcv_wscale as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; -tcpi_delivery_rate_app_limited as u64 -}); -__bindgen_bitfield_unit.set(9usize, 2u8, { -let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; -tcpi_fastopen_client_fail as u64 -}); -__bindgen_bitfield_unit -} +pub struct siginfo { +pub __bindgen_anon_1: siginfo__bindgen_ty_1, } -pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; -pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; -pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; -pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; -pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; -pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; -pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; -pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; -pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; -pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; -pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; -pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; -pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; -pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; -pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; -pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; -pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; -pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; -pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; -pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; -pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; -pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; -pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; -pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; -pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; -pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; -pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; -pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_6 { -TCP_NLA_PAD = 0, -TCP_NLA_BUSY = 1, -TCP_NLA_RWND_LIMITED = 2, -TCP_NLA_SNDBUF_LIMITED = 3, -TCP_NLA_DATA_SEGS_OUT = 4, -TCP_NLA_TOTAL_RETRANS = 5, -TCP_NLA_PACING_RATE = 6, -TCP_NLA_DELIVERY_RATE = 7, -TCP_NLA_SND_CWND = 8, -TCP_NLA_REORDERING = 9, -TCP_NLA_MIN_RTT = 10, -TCP_NLA_RECUR_RETRANS = 11, -TCP_NLA_DELIVERY_RATE_APP_LMT = 12, -TCP_NLA_SNDQ_SIZE = 13, -TCP_NLA_CA_STATE = 14, -TCP_NLA_SND_SSTHRESH = 15, -TCP_NLA_DELIVERED = 16, -TCP_NLA_DELIVERED_CE = 17, -TCP_NLA_BYTES_SENT = 18, -TCP_NLA_BYTES_RETRANS = 19, -TCP_NLA_DSACK_DUPS = 20, -TCP_NLA_REORD_SEEN = 21, -TCP_NLA_SRTT = 22, -TCP_NLA_TIMEOUT_REHASH = 23, -TCP_NLA_BYTES_NOTSENT = 24, -TCP_NLA_EDT = 25, -TCP_NLA_TTL = 26, -TCP_NLA_REHASH = 27, +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { +pub si_signo: crate::ctypes::c_int, +pub si_errno: crate::ctypes::c_int, +pub si_code: crate::ctypes::c_int, +pub _sifields: __sifields, } #[repr(C)] #[derive(Copy, Clone)] -pub struct tcp_md5sig { -pub tcpm_addr: __kernel_sockaddr_storage, -pub tcpm_flags: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_ifindex: crate::ctypes::c_int, -pub tcpm_key: [__u8; 80usize], +pub struct sigevent { +pub sigev_value: sigval_t, +pub sigev_signo: crate::ctypes::c_int, +pub sigev_notify: crate::ctypes::c_int, +pub _sigev_un: sigevent__bindgen_ty_1, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_diag_md5sig { -pub tcpm_family: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_addr: [__be32; 4usize], -pub tcpm_key: [__u8; 80usize], +pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { +pub _function: ::core::option::Option, +pub _attribute: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_zerocopy_receive { -pub address: __u64, -pub length: __u32, -pub recv_skip_hint: __u32, -pub inq: __u32, -pub err: __s32, -pub copybuf_address: __u64, -pub copybuf_len: __s32, -pub flags: __u32, -pub msg_control: __u64, -pub msg_controllen: __u64, -pub msg_flags: __u32, -pub reserved: __u32, +pub struct statx_timestamp { +pub tv_sec: __s64, +pub tv_nsec: __u32, +pub __reserved: __s32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statx { +pub stx_mask: __u32, +pub stx_blksize: __u32, +pub stx_attributes: __u64, +pub stx_nlink: __u32, +pub stx_uid: __u32, +pub stx_gid: __u32, +pub stx_mode: __u16, +pub __spare0: [__u16; 1usize], +pub stx_ino: __u64, +pub stx_size: __u64, +pub stx_blocks: __u64, +pub stx_attributes_mask: __u64, +pub stx_atime: statx_timestamp, +pub stx_btime: statx_timestamp, +pub stx_ctime: statx_timestamp, +pub stx_mtime: statx_timestamp, +pub stx_rdev_major: __u32, +pub stx_rdev_minor: __u32, +pub stx_dev_major: __u32, +pub stx_dev_minor: __u32, +pub stx_mnt_id: __u64, +pub stx_dio_mem_align: __u32, +pub stx_dio_offset_align: __u32, +pub __spare3: [__u64; 12usize], } -pub type cc_t = crate::ctypes::c_uchar; -pub type speed_t = crate::ctypes::c_uint; -pub type tcflag_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct termios { @@ -4399,42 +659,1859 @@ pub iov_base: *mut crate::ctypes::c_void, pub iov_len: __kernel_size_t, } +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct uffd_msg { +pub event: __u8, +pub reserved1: __u8, +pub reserved2: __u16, +pub reserved3: __u32, +pub arg: uffd_msg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { +pub flags: __u64, +pub address: __u64, +pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { +pub ufd: __u32, +} #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_un { -pub sun_family: __kernel_sa_family_t, -pub sun_path: [crate::ctypes::c_char; 108usize], +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { +pub from: __u64, +pub to: __u64, +pub len: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct oldold_utsname { -pub sysname: [crate::ctypes::c_char; 9usize], -pub nodename: [crate::ctypes::c_char; 9usize], -pub release: [crate::ctypes::c_char; 9usize], -pub version: [crate::ctypes::c_char; 9usize], -pub machine: [crate::ctypes::c_char; 9usize], +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { +pub start: __u64, +pub end: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct old_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { +pub reserved1: __u64, +pub reserved2: __u64, +pub reserved3: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct new_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], -pub domainname: [crate::ctypes::c_char; 65usize], +pub struct uffdio_api { +pub api: __u64, +pub features: __u64, +pub ioctls: __u64, } -impl membarrier_cmd { -pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_range { +pub start: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_register { +pub range: uffdio_range, +pub mode: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_copy { +pub dst: __u64, +pub src: __u64, +pub len: __u64, +pub mode: __u64, +pub copy: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_zeropage { +pub range: uffdio_range, +pub mode: __u64, +pub zeropage: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_writeprotect { +pub range: uffdio_range, +pub mode: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_continue { +pub range: uffdio_range, +pub mode: __u64, +pub mapped: __s64, +} +#[repr(C)] +#[derive(Debug)] +pub struct linux_dirent64 { +pub d_ino: crate::ctypes::c_ulong, +pub d_off: crate::ctypes::c_long, +pub d_reclen: __u16, +pub d_type: __u8, +pub d_name: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat { +pub st_dev: crate::ctypes::c_ulong, +pub st_ino: crate::ctypes::c_ulong, +pub st_mode: crate::ctypes::c_uint, +pub st_nlink: crate::ctypes::c_uint, +pub st_uid: crate::ctypes::c_uint, +pub st_gid: crate::ctypes::c_uint, +pub st_rdev: crate::ctypes::c_ulong, +pub __pad1: crate::ctypes::c_ulong, +pub st_size: crate::ctypes::c_long, +pub st_blksize: crate::ctypes::c_int, +pub __pad2: crate::ctypes::c_int, +pub st_blocks: crate::ctypes::c_long, +pub st_atime: crate::ctypes::c_long, +pub st_atime_nsec: crate::ctypes::c_ulong, +pub st_mtime: crate::ctypes::c_long, +pub st_mtime_nsec: crate::ctypes::c_ulong, +pub st_ctime: crate::ctypes::c_long, +pub st_ctime_nsec: crate::ctypes::c_ulong, +pub __unused4: crate::ctypes::c_uint, +pub __unused5: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs { +pub f_type: __kernel_long_t, +pub f_bsize: __kernel_long_t, +pub f_blocks: __kernel_long_t, +pub f_bfree: __kernel_long_t, +pub f_bavail: __kernel_long_t, +pub f_files: __kernel_long_t, +pub f_ffree: __kernel_long_t, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __kernel_long_t, +pub f_frsize: __kernel_long_t, +pub f_flags: __kernel_long_t, +pub f_spare: [__kernel_long_t; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs64 { +pub f_type: __kernel_long_t, +pub f_bsize: __kernel_long_t, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __kernel_long_t, +pub f_frsize: __kernel_long_t, +pub f_flags: __kernel_long_t, +pub f_spare: [__kernel_long_t; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct compat_statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct user_desc { +pub entry_number: crate::ctypes::c_uint, +pub base_addr: crate::ctypes::c_uint, +pub limit: crate::ctypes::c_uint, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub __bindgen_padding_0: [u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct kernel_sigset_t { +pub sig: [crate::ctypes::c_ulong; 1usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct kernel_sigaction { +pub sa_handler_kernel: __kernel_sighandler_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_mask: kernel_sigset_t, +} +pub const LINUX_VERSION_CODE: u32 = 393984; +pub const LINUX_VERSION_MAJOR: u32 = 6; +pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; +pub const LINUX_VERSION_SUBLEVEL: u32 = 0; +pub const AT_SYSINFO_EHDR: u32 = 33; +pub const AT_VECTOR_SIZE_ARCH: u32 = 1; +pub const AT_NULL: u32 = 0; +pub const AT_IGNORE: u32 = 1; +pub const AT_EXECFD: u32 = 2; +pub const AT_PHDR: u32 = 3; +pub const AT_PHENT: u32 = 4; +pub const AT_PHNUM: u32 = 5; +pub const AT_PAGESZ: u32 = 6; +pub const AT_BASE: u32 = 7; +pub const AT_FLAGS: u32 = 8; +pub const AT_ENTRY: u32 = 9; +pub const AT_NOTELF: u32 = 10; +pub const AT_UID: u32 = 11; +pub const AT_EUID: u32 = 12; +pub const AT_GID: u32 = 13; +pub const AT_EGID: u32 = 14; +pub const AT_PLATFORM: u32 = 15; +pub const AT_HWCAP: u32 = 16; +pub const AT_CLKTCK: u32 = 17; +pub const AT_SECURE: u32 = 23; +pub const AT_BASE_PLATFORM: u32 = 24; +pub const AT_RANDOM: u32 = 25; +pub const AT_HWCAP2: u32 = 26; +pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; +pub const AT_RSEQ_ALIGN: u32 = 28; +pub const AT_EXECFN: u32 = 31; +pub const AT_MINSIGSTKSZ: u32 = 51; +pub const __FD_SETSIZE: u32 = 1024; +pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; +pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; +pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; +pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; +pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; +pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; +pub const VFS_CAP_REVISION_SHIFT: u32 = 24; +pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; +pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; +pub const VFS_CAP_REVISION_1: u32 = 16777216; +pub const VFS_CAP_U32_1: u32 = 1; +pub const VFS_CAP_REVISION_2: u32 = 33554432; +pub const VFS_CAP_U32_2: u32 = 2; +pub const VFS_CAP_REVISION_3: u32 = 50331648; +pub const VFS_CAP_U32_3: u32 = 2; +pub const VFS_CAP_U32: u32 = 2; +pub const VFS_CAP_REVISION: u32 = 50331648; +pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S: u32 = 1; +pub const CAP_CHOWN: u32 = 0; +pub const CAP_DAC_OVERRIDE: u32 = 1; +pub const CAP_DAC_READ_SEARCH: u32 = 2; +pub const CAP_FOWNER: u32 = 3; +pub const CAP_FSETID: u32 = 4; +pub const CAP_KILL: u32 = 5; +pub const CAP_SETGID: u32 = 6; +pub const CAP_SETUID: u32 = 7; +pub const CAP_SETPCAP: u32 = 8; +pub const CAP_LINUX_IMMUTABLE: u32 = 9; +pub const CAP_NET_BIND_SERVICE: u32 = 10; +pub const CAP_NET_BROADCAST: u32 = 11; +pub const CAP_NET_ADMIN: u32 = 12; +pub const CAP_NET_RAW: u32 = 13; +pub const CAP_IPC_LOCK: u32 = 14; +pub const CAP_IPC_OWNER: u32 = 15; +pub const CAP_SYS_MODULE: u32 = 16; +pub const CAP_SYS_RAWIO: u32 = 17; +pub const CAP_SYS_CHROOT: u32 = 18; +pub const CAP_SYS_PTRACE: u32 = 19; +pub const CAP_SYS_PACCT: u32 = 20; +pub const CAP_SYS_ADMIN: u32 = 21; +pub const CAP_SYS_BOOT: u32 = 22; +pub const CAP_SYS_NICE: u32 = 23; +pub const CAP_SYS_RESOURCE: u32 = 24; +pub const CAP_SYS_TIME: u32 = 25; +pub const CAP_SYS_TTY_CONFIG: u32 = 26; +pub const CAP_MKNOD: u32 = 27; +pub const CAP_LEASE: u32 = 28; +pub const CAP_AUDIT_WRITE: u32 = 29; +pub const CAP_AUDIT_CONTROL: u32 = 30; +pub const CAP_SETFCAP: u32 = 31; +pub const CAP_MAC_OVERRIDE: u32 = 32; +pub const CAP_MAC_ADMIN: u32 = 33; +pub const CAP_SYSLOG: u32 = 34; +pub const CAP_WAKE_ALARM: u32 = 35; +pub const CAP_BLOCK_SUSPEND: u32 = 36; +pub const CAP_AUDIT_READ: u32 = 37; +pub const CAP_PERFMON: u32 = 38; +pub const CAP_BPF: u32 = 39; +pub const CAP_CHECKPOINT_RESTORE: u32 = 40; +pub const CAP_LAST_CAP: u32 = 40; +pub const O_ACCMODE: u32 = 3; +pub const O_RDONLY: u32 = 0; +pub const O_WRONLY: u32 = 1; +pub const O_RDWR: u32 = 2; +pub const O_CREAT: u32 = 64; +pub const O_EXCL: u32 = 128; +pub const O_NOCTTY: u32 = 256; +pub const O_TRUNC: u32 = 512; +pub const O_APPEND: u32 = 1024; +pub const O_NONBLOCK: u32 = 2048; +pub const O_DSYNC: u32 = 4096; +pub const FASYNC: u32 = 8192; +pub const O_DIRECT: u32 = 16384; +pub const O_LARGEFILE: u32 = 32768; +pub const O_DIRECTORY: u32 = 65536; +pub const O_NOFOLLOW: u32 = 131072; +pub const O_NOATIME: u32 = 262144; +pub const O_CLOEXEC: u32 = 524288; +pub const __O_SYNC: u32 = 1048576; +pub const O_SYNC: u32 = 1052672; +pub const O_PATH: u32 = 2097152; +pub const __O_TMPFILE: u32 = 4194304; +pub const O_TMPFILE: u32 = 4259840; +pub const O_TMPFILE_MASK: u32 = 4259904; +pub const O_NDELAY: u32 = 2048; +pub const F_DUPFD: u32 = 0; +pub const F_GETFD: u32 = 1; +pub const F_SETFD: u32 = 2; +pub const F_GETFL: u32 = 3; +pub const F_SETFL: u32 = 4; +pub const F_GETLK: u32 = 5; +pub const F_SETLK: u32 = 6; +pub const F_SETLKW: u32 = 7; +pub const F_SETOWN: u32 = 8; +pub const F_GETOWN: u32 = 9; +pub const F_SETSIG: u32 = 10; +pub const F_GETSIG: u32 = 11; +pub const F_SETOWN_EX: u32 = 15; +pub const F_GETOWN_EX: u32 = 16; +pub const F_GETOWNER_UIDS: u32 = 17; +pub const F_OFD_GETLK: u32 = 36; +pub const F_OFD_SETLK: u32 = 37; +pub const F_OFD_SETLKW: u32 = 38; +pub const F_OWNER_TID: u32 = 0; +pub const F_OWNER_PID: u32 = 1; +pub const F_OWNER_PGRP: u32 = 2; +pub const FD_CLOEXEC: u32 = 1; +pub const F_RDLCK: u32 = 0; +pub const F_WRLCK: u32 = 1; +pub const F_UNLCK: u32 = 2; +pub const F_EXLCK: u32 = 4; +pub const F_SHLCK: u32 = 8; +pub const LOCK_SH: u32 = 1; +pub const LOCK_EX: u32 = 2; +pub const LOCK_NB: u32 = 4; +pub const LOCK_UN: u32 = 8; +pub const LOCK_MAND: u32 = 32; +pub const LOCK_READ: u32 = 64; +pub const LOCK_WRITE: u32 = 128; +pub const LOCK_RW: u32 = 192; +pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; +pub const RESOLVE_NO_XDEV: u32 = 1; +pub const RESOLVE_NO_MAGICLINKS: u32 = 2; +pub const RESOLVE_NO_SYMLINKS: u32 = 4; +pub const RESOLVE_BENEATH: u32 = 8; +pub const RESOLVE_IN_ROOT: u32 = 16; +pub const RESOLVE_CACHED: u32 = 32; +pub const F_SETLEASE: u32 = 1024; +pub const F_GETLEASE: u32 = 1025; +pub const F_CANCELLK: u32 = 1029; +pub const F_DUPFD_CLOEXEC: u32 = 1030; +pub const F_NOTIFY: u32 = 1026; +pub const F_SETPIPE_SZ: u32 = 1031; +pub const F_GETPIPE_SZ: u32 = 1032; +pub const F_ADD_SEALS: u32 = 1033; +pub const F_GET_SEALS: u32 = 1034; +pub const F_SEAL_SEAL: u32 = 1; +pub const F_SEAL_SHRINK: u32 = 2; +pub const F_SEAL_GROW: u32 = 4; +pub const F_SEAL_WRITE: u32 = 8; +pub const F_SEAL_FUTURE_WRITE: u32 = 16; +pub const F_SEAL_EXEC: u32 = 32; +pub const F_GET_RW_HINT: u32 = 1035; +pub const F_SET_RW_HINT: u32 = 1036; +pub const F_GET_FILE_RW_HINT: u32 = 1037; +pub const F_SET_FILE_RW_HINT: u32 = 1038; +pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; +pub const RWH_WRITE_LIFE_NONE: u32 = 1; +pub const RWH_WRITE_LIFE_SHORT: u32 = 2; +pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; +pub const RWH_WRITE_LIFE_LONG: u32 = 4; +pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; +pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; +pub const DN_ACCESS: u32 = 1; +pub const DN_MODIFY: u32 = 2; +pub const DN_CREATE: u32 = 4; +pub const DN_DELETE: u32 = 8; +pub const DN_RENAME: u32 = 16; +pub const DN_ATTRIB: u32 = 32; +pub const DN_MULTISHOT: u32 = 2147483648; +pub const AT_FDCWD: i32 = -100; +pub const AT_SYMLINK_NOFOLLOW: u32 = 256; +pub const AT_EACCESS: u32 = 512; +pub const AT_REMOVEDIR: u32 = 512; +pub const AT_SYMLINK_FOLLOW: u32 = 1024; +pub const AT_NO_AUTOMOUNT: u32 = 2048; +pub const AT_EMPTY_PATH: u32 = 4096; +pub const AT_STATX_SYNC_TYPE: u32 = 24576; +pub const AT_STATX_SYNC_AS_STAT: u32 = 0; +pub const AT_STATX_FORCE_SYNC: u32 = 8192; +pub const AT_STATX_DONT_SYNC: u32 = 16384; +pub const AT_RECURSIVE: u32 = 32768; +pub const EPOLL_CLOEXEC: u32 = 524288; +pub const EPOLL_CTL_ADD: u32 = 1; +pub const EPOLL_CTL_DEL: u32 = 2; +pub const EPOLL_CTL_MOD: u32 = 3; +pub const POSIX_FADV_NORMAL: u32 = 0; +pub const POSIX_FADV_RANDOM: u32 = 1; +pub const POSIX_FADV_SEQUENTIAL: u32 = 2; +pub const POSIX_FADV_WILLNEED: u32 = 3; +pub const POSIX_FADV_DONTNEED: u32 = 4; +pub const POSIX_FADV_NOREUSE: u32 = 5; +pub const FALLOC_FL_KEEP_SIZE: u32 = 1; +pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; +pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; +pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; +pub const FALLOC_FL_ZERO_RANGE: u32 = 16; +pub const FALLOC_FL_INSERT_RANGE: u32 = 32; +pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 14; +pub const _IOC_DIRBITS: u32 = 2; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 3; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 30; +pub const _IOC_NONE: u32 = 0; +pub const _IOC_WRITE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const IOC_IN: u32 = 1073741824; +pub const IOC_OUT: u32 = 2147483648; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const OPEN_TREE_CLOEXEC: u32 = 524288; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const FUTEX_WAIT: u32 = 0; +pub const FUTEX_WAKE: u32 = 1; +pub const FUTEX_FD: u32 = 2; +pub const FUTEX_REQUEUE: u32 = 3; +pub const FUTEX_CMP_REQUEUE: u32 = 4; +pub const FUTEX_WAKE_OP: u32 = 5; +pub const FUTEX_LOCK_PI: u32 = 6; +pub const FUTEX_UNLOCK_PI: u32 = 7; +pub const FUTEX_TRYLOCK_PI: u32 = 8; +pub const FUTEX_WAIT_BITSET: u32 = 9; +pub const FUTEX_WAKE_BITSET: u32 = 10; +pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; +pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; +pub const FUTEX_LOCK_PI2: u32 = 13; +pub const FUTEX_PRIVATE_FLAG: u32 = 128; +pub const FUTEX_CLOCK_REALTIME: u32 = 256; +pub const FUTEX_CMD_MASK: i32 = -385; +pub const FUTEX_WAIT_PRIVATE: u32 = 128; +pub const FUTEX_WAKE_PRIVATE: u32 = 129; +pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; +pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; +pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; +pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; +pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; +pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; +pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; +pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; +pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; +pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; +pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; +pub const FUTEX_32: u32 = 2; +pub const FUTEX_WAITV_MAX: u32 = 128; +pub const FUTEX_WAITERS: u32 = 2147483648; +pub const FUTEX_OWNER_DIED: u32 = 1073741824; +pub const FUTEX_TID_MASK: u32 = 1073741823; +pub const ROBUST_LIST_LIMIT: u32 = 2048; +pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; +pub const FUTEX_OP_SET: u32 = 0; +pub const FUTEX_OP_ADD: u32 = 1; +pub const FUTEX_OP_OR: u32 = 2; +pub const FUTEX_OP_ANDN: u32 = 3; +pub const FUTEX_OP_XOR: u32 = 4; +pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; +pub const FUTEX_OP_CMP_EQ: u32 = 0; +pub const FUTEX_OP_CMP_NE: u32 = 1; +pub const FUTEX_OP_CMP_LT: u32 = 2; +pub const FUTEX_OP_CMP_LE: u32 = 3; +pub const FUTEX_OP_CMP_GT: u32 = 4; +pub const FUTEX_OP_CMP_GE: u32 = 5; +pub const IN_ACCESS: u32 = 1; +pub const IN_MODIFY: u32 = 2; +pub const IN_ATTRIB: u32 = 4; +pub const IN_CLOSE_WRITE: u32 = 8; +pub const IN_CLOSE_NOWRITE: u32 = 16; +pub const IN_OPEN: u32 = 32; +pub const IN_MOVED_FROM: u32 = 64; +pub const IN_MOVED_TO: u32 = 128; +pub const IN_CREATE: u32 = 256; +pub const IN_DELETE: u32 = 512; +pub const IN_DELETE_SELF: u32 = 1024; +pub const IN_MOVE_SELF: u32 = 2048; +pub const IN_UNMOUNT: u32 = 8192; +pub const IN_Q_OVERFLOW: u32 = 16384; +pub const IN_IGNORED: u32 = 32768; +pub const IN_CLOSE: u32 = 24; +pub const IN_MOVE: u32 = 192; +pub const IN_ONLYDIR: u32 = 16777216; +pub const IN_DONT_FOLLOW: u32 = 33554432; +pub const IN_EXCL_UNLINK: u32 = 67108864; +pub const IN_MASK_CREATE: u32 = 268435456; +pub const IN_MASK_ADD: u32 = 536870912; +pub const IN_ISDIR: u32 = 1073741824; +pub const IN_ONESHOT: u32 = 2147483648; +pub const IN_ALL_EVENTS: u32 = 4095; +pub const IN_CLOEXEC: u32 = 524288; +pub const IN_NONBLOCK: u32 = 2048; +pub const ADFS_SUPER_MAGIC: u32 = 44533; +pub const AFFS_SUPER_MAGIC: u32 = 44543; +pub const AFS_SUPER_MAGIC: u32 = 1397113167; +pub const AUTOFS_SUPER_MAGIC: u32 = 391; +pub const CEPH_SUPER_MAGIC: u32 = 12805120; +pub const CODA_SUPER_MAGIC: u32 = 1937076805; +pub const CRAMFS_MAGIC: u32 = 684539205; +pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; +pub const DEBUGFS_MAGIC: u32 = 1684170528; +pub const SECURITYFS_MAGIC: u32 = 1935894131; +pub const SELINUX_MAGIC: u32 = 4185718668; +pub const SMACK_MAGIC: u32 = 1128357203; +pub const RAMFS_MAGIC: u32 = 2240043254; +pub const TMPFS_MAGIC: u32 = 16914836; +pub const HUGETLBFS_MAGIC: u32 = 2508478710; +pub const SQUASHFS_MAGIC: u32 = 1936814952; +pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; +pub const EFS_SUPER_MAGIC: u32 = 4278867; +pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; +pub const EXT2_SUPER_MAGIC: u32 = 61267; +pub const EXT3_SUPER_MAGIC: u32 = 61267; +pub const XENFS_SUPER_MAGIC: u32 = 2881100148; +pub const EXT4_SUPER_MAGIC: u32 = 61267; +pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; +pub const NILFS_SUPER_MAGIC: u32 = 13364; +pub const F2FS_SUPER_MAGIC: u32 = 4076150800; +pub const HPFS_SUPER_MAGIC: u32 = 4187351113; +pub const ISOFS_SUPER_MAGIC: u32 = 38496; +pub const JFFS2_SUPER_MAGIC: u32 = 29366; +pub const XFS_SUPER_MAGIC: u32 = 1481003842; +pub const PSTOREFS_MAGIC: u32 = 1634035564; +pub const EFIVARFS_MAGIC: u32 = 3730735588; +pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; +pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; +pub const FUSE_SUPER_MAGIC: u32 = 1702057286; +pub const MINIX_SUPER_MAGIC: u32 = 4991; +pub const MINIX_SUPER_MAGIC2: u32 = 5007; +pub const MINIX2_SUPER_MAGIC: u32 = 9320; +pub const MINIX2_SUPER_MAGIC2: u32 = 9336; +pub const MINIX3_SUPER_MAGIC: u32 = 19802; +pub const MSDOS_SUPER_MAGIC: u32 = 19780; +pub const EXFAT_SUPER_MAGIC: u32 = 538032816; +pub const NCP_SUPER_MAGIC: u32 = 22092; +pub const NFS_SUPER_MAGIC: u32 = 26985; +pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; +pub const OPENPROM_SUPER_MAGIC: u32 = 40865; +pub const QNX4_SUPER_MAGIC: u32 = 47; +pub const QNX6_SUPER_MAGIC: u32 = 1746473250; +pub const AFS_FS_MAGIC: u32 = 1799439955; +pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; +pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9] = b"ReIsErFs\0"; +pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr2Fs\0"; +pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr3Fs\0"; +pub const SMB_SUPER_MAGIC: u32 = 20859; +pub const CIFS_SUPER_MAGIC: u32 = 4283649346; +pub const SMB2_SUPER_MAGIC: u32 = 4266872130; +pub const CGROUP_SUPER_MAGIC: u32 = 2613483; +pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; +pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; +pub const STACK_END_MAGIC: u32 = 1470918301; +pub const TRACEFS_MAGIC: u32 = 1953653091; +pub const V9FS_MAGIC: u32 = 16914839; +pub const BDEVFS_MAGIC: u32 = 1650746742; +pub const DAXFS_MAGIC: u32 = 1684300152; +pub const BINFMTFS_MAGIC: u32 = 1112100429; +pub const DEVPTS_SUPER_MAGIC: u32 = 7377; +pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; +pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; +pub const PIPEFS_MAGIC: u32 = 1346981957; +pub const PROC_SUPER_MAGIC: u32 = 40864; +pub const SOCKFS_MAGIC: u32 = 1397703499; +pub const SYSFS_MAGIC: u32 = 1650812274; +pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; +pub const MTD_INODE_FS_MAGIC: u32 = 288389204; +pub const ANON_INODE_FS_MAGIC: u32 = 151263540; +pub const BTRFS_TEST_MAGIC: u32 = 1936880249; +pub const NSFS_MAGIC: u32 = 1853056627; +pub const BPF_FS_MAGIC: u32 = 3405662737; +pub const AAFS_MAGIC: u32 = 1513908720; +pub const ZONEFS_MAGIC: u32 = 1515144787; +pub const UDF_SUPER_MAGIC: u32 = 352400198; +pub const DMA_BUF_MAGIC: u32 = 1145913666; +pub const DEVMEM_MAGIC: u32 = 1162691661; +pub const SECRETMEM_MAGIC: u32 = 1397048141; +pub const PROT_READ: u32 = 1; +pub const PROT_WRITE: u32 = 2; +pub const PROT_EXEC: u32 = 4; +pub const PROT_SEM: u32 = 8; +pub const PROT_NONE: u32 = 0; +pub const PROT_GROWSDOWN: u32 = 16777216; +pub const PROT_GROWSUP: u32 = 33554432; +pub const MAP_TYPE: u32 = 15; +pub const MAP_FIXED: u32 = 16; +pub const MAP_ANONYMOUS: u32 = 32; +pub const MAP_POPULATE: u32 = 32768; +pub const MAP_NONBLOCK: u32 = 65536; +pub const MAP_STACK: u32 = 131072; +pub const MAP_HUGETLB: u32 = 262144; +pub const MAP_SYNC: u32 = 524288; +pub const MAP_FIXED_NOREPLACE: u32 = 1048576; +pub const MAP_UNINITIALIZED: u32 = 67108864; +pub const MLOCK_ONFAULT: u32 = 1; +pub const MS_ASYNC: u32 = 1; +pub const MS_INVALIDATE: u32 = 2; +pub const MS_SYNC: u32 = 4; +pub const MADV_NORMAL: u32 = 0; +pub const MADV_RANDOM: u32 = 1; +pub const MADV_SEQUENTIAL: u32 = 2; +pub const MADV_WILLNEED: u32 = 3; +pub const MADV_DONTNEED: u32 = 4; +pub const MADV_FREE: u32 = 8; +pub const MADV_REMOVE: u32 = 9; +pub const MADV_DONTFORK: u32 = 10; +pub const MADV_DOFORK: u32 = 11; +pub const MADV_HWPOISON: u32 = 100; +pub const MADV_SOFT_OFFLINE: u32 = 101; +pub const MADV_MERGEABLE: u32 = 12; +pub const MADV_UNMERGEABLE: u32 = 13; +pub const MADV_HUGEPAGE: u32 = 14; +pub const MADV_NOHUGEPAGE: u32 = 15; +pub const MADV_DONTDUMP: u32 = 16; +pub const MADV_DODUMP: u32 = 17; +pub const MADV_WIPEONFORK: u32 = 18; +pub const MADV_KEEPONFORK: u32 = 19; +pub const MADV_COLD: u32 = 20; +pub const MADV_PAGEOUT: u32 = 21; +pub const MADV_POPULATE_READ: u32 = 22; +pub const MADV_POPULATE_WRITE: u32 = 23; +pub const MADV_DONTNEED_LOCKED: u32 = 24; +pub const MADV_COLLAPSE: u32 = 25; +pub const MAP_FILE: u32 = 0; +pub const PKEY_DISABLE_ACCESS: u32 = 1; +pub const PKEY_DISABLE_WRITE: u32 = 2; +pub const PKEY_ACCESS_MASK: u32 = 3; +pub const MAP_GROWSDOWN: u32 = 256; +pub const MAP_DENYWRITE: u32 = 2048; +pub const MAP_EXECUTABLE: u32 = 4096; +pub const MAP_LOCKED: u32 = 8192; +pub const MAP_NORESERVE: u32 = 16384; +pub const MCL_CURRENT: u32 = 1; +pub const MCL_FUTURE: u32 = 2; +pub const MCL_ONFAULT: u32 = 4; +pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; +pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; +pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; +pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; +pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; +pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; +pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; +pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; +pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; +pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; +pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; +pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; +pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; +pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; +pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; +pub const MREMAP_MAYMOVE: u32 = 1; +pub const MREMAP_FIXED: u32 = 2; +pub const MREMAP_DONTUNMAP: u32 = 4; +pub const OVERCOMMIT_GUESS: u32 = 0; +pub const OVERCOMMIT_ALWAYS: u32 = 1; +pub const OVERCOMMIT_NEVER: u32 = 2; +pub const MAP_SHARED: u32 = 1; +pub const MAP_PRIVATE: u32 = 2; +pub const MAP_SHARED_VALIDATE: u32 = 3; +pub const MAP_HUGE_SHIFT: u32 = 26; +pub const MAP_HUGE_MASK: u32 = 63; +pub const MAP_HUGE_16KB: u32 = 939524096; +pub const MAP_HUGE_64KB: u32 = 1073741824; +pub const MAP_HUGE_512KB: u32 = 1275068416; +pub const MAP_HUGE_1MB: u32 = 1342177280; +pub const MAP_HUGE_2MB: u32 = 1409286144; +pub const MAP_HUGE_8MB: u32 = 1543503872; +pub const MAP_HUGE_16MB: u32 = 1610612736; +pub const MAP_HUGE_32MB: u32 = 1677721600; +pub const MAP_HUGE_256MB: u32 = 1879048192; +pub const MAP_HUGE_512MB: u32 = 1946157056; +pub const MAP_HUGE_1GB: u32 = 2013265920; +pub const MAP_HUGE_2GB: u32 = 2080374784; +pub const MAP_HUGE_16GB: u32 = 2281701376; +pub const POLLIN: u32 = 1; +pub const POLLPRI: u32 = 2; +pub const POLLOUT: u32 = 4; +pub const POLLERR: u32 = 8; +pub const POLLHUP: u32 = 16; +pub const POLLNVAL: u32 = 32; +pub const POLLRDNORM: u32 = 64; +pub const POLLRDBAND: u32 = 128; +pub const POLLWRNORM: u32 = 256; +pub const POLLWRBAND: u32 = 512; +pub const POLLMSG: u32 = 1024; +pub const POLLREMOVE: u32 = 4096; +pub const POLLRDHUP: u32 = 8192; +pub const GRND_NONBLOCK: u32 = 1; +pub const GRND_RANDOM: u32 = 2; +pub const GRND_INSECURE: u32 = 4; +pub const ITIMER_REAL: u32 = 0; +pub const ITIMER_VIRTUAL: u32 = 1; +pub const ITIMER_PROF: u32 = 2; +pub const CLOCK_REALTIME: u32 = 0; +pub const CLOCK_MONOTONIC: u32 = 1; +pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; +pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; +pub const CLOCK_MONOTONIC_RAW: u32 = 4; +pub const CLOCK_REALTIME_COARSE: u32 = 5; +pub const CLOCK_MONOTONIC_COARSE: u32 = 6; +pub const CLOCK_BOOTTIME: u32 = 7; +pub const CLOCK_REALTIME_ALARM: u32 = 8; +pub const CLOCK_BOOTTIME_ALARM: u32 = 9; +pub const CLOCK_SGI_CYCLE: u32 = 10; +pub const CLOCK_TAI: u32 = 11; +pub const MAX_CLOCKS: u32 = 16; +pub const CLOCKS_MASK: u32 = 1; +pub const CLOCKS_MONO: u32 = 1; +pub const TIMER_ABSTIME: u32 = 1; +pub const RUSAGE_SELF: u32 = 0; +pub const RUSAGE_CHILDREN: i32 = -1; +pub const RUSAGE_BOTH: i32 = -2; +pub const RUSAGE_THREAD: u32 = 1; +pub const RLIM64_INFINITY: i32 = -1; +pub const PRIO_MIN: i32 = -20; +pub const PRIO_MAX: u32 = 20; +pub const PRIO_PROCESS: u32 = 0; +pub const PRIO_PGRP: u32 = 1; +pub const PRIO_USER: u32 = 2; +pub const _STK_LIM: u32 = 8388608; +pub const MLOCK_LIMIT: u32 = 8388608; +pub const RLIMIT_CPU: u32 = 0; +pub const RLIMIT_FSIZE: u32 = 1; +pub const RLIMIT_DATA: u32 = 2; +pub const RLIMIT_STACK: u32 = 3; +pub const RLIMIT_CORE: u32 = 4; +pub const RLIMIT_RSS: u32 = 5; +pub const RLIMIT_NPROC: u32 = 6; +pub const RLIMIT_NOFILE: u32 = 7; +pub const RLIMIT_MEMLOCK: u32 = 8; +pub const RLIMIT_AS: u32 = 9; +pub const RLIMIT_LOCKS: u32 = 10; +pub const RLIMIT_SIGPENDING: u32 = 11; +pub const RLIMIT_MSGQUEUE: u32 = 12; +pub const RLIMIT_NICE: u32 = 13; +pub const RLIMIT_RTPRIO: u32 = 14; +pub const RLIMIT_RTTIME: u32 = 15; +pub const RLIM_NLIMITS: u32 = 16; +pub const RLIM_INFINITY: i32 = -1; +pub const CSIGNAL: u32 = 255; +pub const CLONE_VM: u32 = 256; +pub const CLONE_FS: u32 = 512; +pub const CLONE_FILES: u32 = 1024; +pub const CLONE_SIGHAND: u32 = 2048; +pub const CLONE_PIDFD: u32 = 4096; +pub const CLONE_PTRACE: u32 = 8192; +pub const CLONE_VFORK: u32 = 16384; +pub const CLONE_PARENT: u32 = 32768; +pub const CLONE_THREAD: u32 = 65536; +pub const CLONE_NEWNS: u32 = 131072; +pub const CLONE_SYSVSEM: u32 = 262144; +pub const CLONE_SETTLS: u32 = 524288; +pub const CLONE_PARENT_SETTID: u32 = 1048576; +pub const CLONE_CHILD_CLEARTID: u32 = 2097152; +pub const CLONE_DETACHED: u32 = 4194304; +pub const CLONE_UNTRACED: u32 = 8388608; +pub const CLONE_CHILD_SETTID: u32 = 16777216; +pub const CLONE_NEWCGROUP: u32 = 33554432; +pub const CLONE_NEWUTS: u32 = 67108864; +pub const CLONE_NEWIPC: u32 = 134217728; +pub const CLONE_NEWUSER: u32 = 268435456; +pub const CLONE_NEWPID: u32 = 536870912; +pub const CLONE_NEWNET: u32 = 1073741824; +pub const CLONE_IO: u32 = 2147483648; +pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; +pub const CLONE_INTO_CGROUP: u64 = 8589934592; +pub const CLONE_NEWTIME: u32 = 128; +pub const CLONE_ARGS_SIZE_VER0: u32 = 64; +pub const CLONE_ARGS_SIZE_VER1: u32 = 80; +pub const CLONE_ARGS_SIZE_VER2: u32 = 88; +pub const SCHED_NORMAL: u32 = 0; +pub const SCHED_FIFO: u32 = 1; +pub const SCHED_RR: u32 = 2; +pub const SCHED_BATCH: u32 = 3; +pub const SCHED_IDLE: u32 = 5; +pub const SCHED_DEADLINE: u32 = 6; +pub const SCHED_RESET_ON_FORK: u32 = 1073741824; +pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; +pub const SCHED_FLAG_RECLAIM: u32 = 2; +pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; +pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; +pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; +pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; +pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; +pub const SCHED_FLAG_KEEP_ALL: u32 = 24; +pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; +pub const SCHED_FLAG_ALL: u32 = 127; +pub const MINSIGSTKSZ: u32 = 4096; +pub const SIGSTKSZ: u32 = 16384; +pub const _NSIG: u32 = 64; +pub const SIGHUP: u32 = 1; +pub const SIGINT: u32 = 2; +pub const SIGQUIT: u32 = 3; +pub const SIGILL: u32 = 4; +pub const SIGTRAP: u32 = 5; +pub const SIGABRT: u32 = 6; +pub const SIGIOT: u32 = 6; +pub const SIGBUS: u32 = 7; +pub const SIGFPE: u32 = 8; +pub const SIGKILL: u32 = 9; +pub const SIGUSR1: u32 = 10; +pub const SIGSEGV: u32 = 11; +pub const SIGUSR2: u32 = 12; +pub const SIGPIPE: u32 = 13; +pub const SIGALRM: u32 = 14; +pub const SIGTERM: u32 = 15; +pub const SIGSTKFLT: u32 = 16; +pub const SIGCHLD: u32 = 17; +pub const SIGCONT: u32 = 18; +pub const SIGSTOP: u32 = 19; +pub const SIGTSTP: u32 = 20; +pub const SIGTTIN: u32 = 21; +pub const SIGTTOU: u32 = 22; +pub const SIGURG: u32 = 23; +pub const SIGXCPU: u32 = 24; +pub const SIGXFSZ: u32 = 25; +pub const SIGVTALRM: u32 = 26; +pub const SIGPROF: u32 = 27; +pub const SIGWINCH: u32 = 28; +pub const SIGIO: u32 = 29; +pub const SIGPOLL: u32 = 29; +pub const SIGPWR: u32 = 30; +pub const SIGSYS: u32 = 31; +pub const SIGUNUSED: u32 = 31; +pub const SIGRTMIN: u32 = 32; +pub const SIGRTMAX: u32 = 64; +pub const SA_NOCLDSTOP: u32 = 1; +pub const SA_NOCLDWAIT: u32 = 2; +pub const SA_SIGINFO: u32 = 4; +pub const SA_UNSUPPORTED: u32 = 1024; +pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SA_ONSTACK: u32 = 134217728; +pub const SA_RESTART: u32 = 268435456; +pub const SA_NODEFER: u32 = 1073741824; +pub const SA_RESETHAND: u32 = 2147483648; +pub const SA_NOMASK: u32 = 1073741824; +pub const SA_ONESHOT: u32 = 2147483648; +pub const SIG_BLOCK: u32 = 0; +pub const SIG_UNBLOCK: u32 = 1; +pub const SIG_SETMASK: u32 = 2; +pub const SI_MAX_SIZE: u32 = 128; +pub const SI_USER: u32 = 0; +pub const SI_KERNEL: u32 = 128; +pub const SI_QUEUE: i32 = -1; +pub const SI_TIMER: i32 = -2; +pub const SI_MESGQ: i32 = -3; +pub const SI_ASYNCIO: i32 = -4; +pub const SI_SIGIO: i32 = -5; +pub const SI_TKILL: i32 = -6; +pub const SI_DETHREAD: i32 = -7; +pub const SI_ASYNCNL: i32 = -60; +pub const ILL_ILLOPC: u32 = 1; +pub const ILL_ILLOPN: u32 = 2; +pub const ILL_ILLADR: u32 = 3; +pub const ILL_ILLTRP: u32 = 4; +pub const ILL_PRVOPC: u32 = 5; +pub const ILL_PRVREG: u32 = 6; +pub const ILL_COPROC: u32 = 7; +pub const ILL_BADSTK: u32 = 8; +pub const ILL_BADIADDR: u32 = 9; +pub const __ILL_BREAK: u32 = 10; +pub const __ILL_BNDMOD: u32 = 11; +pub const NSIGILL: u32 = 11; +pub const FPE_INTDIV: u32 = 1; +pub const FPE_INTOVF: u32 = 2; +pub const FPE_FLTDIV: u32 = 3; +pub const FPE_FLTOVF: u32 = 4; +pub const FPE_FLTUND: u32 = 5; +pub const FPE_FLTRES: u32 = 6; +pub const FPE_FLTINV: u32 = 7; +pub const FPE_FLTSUB: u32 = 8; +pub const __FPE_DECOVF: u32 = 9; +pub const __FPE_DECDIV: u32 = 10; +pub const __FPE_DECERR: u32 = 11; +pub const __FPE_INVASC: u32 = 12; +pub const __FPE_INVDEC: u32 = 13; +pub const FPE_FLTUNK: u32 = 14; +pub const FPE_CONDTRAP: u32 = 15; +pub const NSIGFPE: u32 = 15; +pub const SEGV_MAPERR: u32 = 1; +pub const SEGV_ACCERR: u32 = 2; +pub const SEGV_BNDERR: u32 = 3; +pub const SEGV_PKUERR: u32 = 4; +pub const SEGV_ACCADI: u32 = 5; +pub const SEGV_ADIDERR: u32 = 6; +pub const SEGV_ADIPERR: u32 = 7; +pub const SEGV_MTEAERR: u32 = 8; +pub const SEGV_MTESERR: u32 = 9; +pub const NSIGSEGV: u32 = 9; +pub const BUS_ADRALN: u32 = 1; +pub const BUS_ADRERR: u32 = 2; +pub const BUS_OBJERR: u32 = 3; +pub const BUS_MCEERR_AR: u32 = 4; +pub const BUS_MCEERR_AO: u32 = 5; +pub const NSIGBUS: u32 = 5; +pub const TRAP_BRKPT: u32 = 1; +pub const TRAP_TRACE: u32 = 2; +pub const TRAP_BRANCH: u32 = 3; +pub const TRAP_HWBKPT: u32 = 4; +pub const TRAP_UNK: u32 = 5; +pub const TRAP_PERF: u32 = 6; +pub const NSIGTRAP: u32 = 6; +pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; +pub const CLD_EXITED: u32 = 1; +pub const CLD_KILLED: u32 = 2; +pub const CLD_DUMPED: u32 = 3; +pub const CLD_TRAPPED: u32 = 4; +pub const CLD_STOPPED: u32 = 5; +pub const CLD_CONTINUED: u32 = 6; +pub const NSIGCHLD: u32 = 6; +pub const POLL_IN: u32 = 1; +pub const POLL_OUT: u32 = 2; +pub const POLL_MSG: u32 = 3; +pub const POLL_ERR: u32 = 4; +pub const POLL_PRI: u32 = 5; +pub const POLL_HUP: u32 = 6; +pub const NSIGPOLL: u32 = 6; +pub const SYS_SECCOMP: u32 = 1; +pub const SYS_USER_DISPATCH: u32 = 2; +pub const NSIGSYS: u32 = 2; +pub const EMT_TAGOVF: u32 = 1; +pub const NSIGEMT: u32 = 1; +pub const SIGEV_SIGNAL: u32 = 0; +pub const SIGEV_NONE: u32 = 1; +pub const SIGEV_THREAD: u32 = 2; +pub const SIGEV_THREAD_ID: u32 = 4; +pub const SIGEV_MAX_SIZE: u32 = 64; +pub const SS_ONSTACK: u32 = 1; +pub const SS_DISABLE: u32 = 2; +pub const SS_AUTODISARM: u32 = 2147483648; +pub const SS_FLAG_BITS: u32 = 2147483648; +pub const S_IFMT: u32 = 61440; +pub const S_IFSOCK: u32 = 49152; +pub const S_IFLNK: u32 = 40960; +pub const S_IFREG: u32 = 32768; +pub const S_IFBLK: u32 = 24576; +pub const S_IFDIR: u32 = 16384; +pub const S_IFCHR: u32 = 8192; +pub const S_IFIFO: u32 = 4096; +pub const S_ISUID: u32 = 2048; +pub const S_ISGID: u32 = 1024; +pub const S_ISVTX: u32 = 512; +pub const S_IRWXU: u32 = 448; +pub const S_IRUSR: u32 = 256; +pub const S_IWUSR: u32 = 128; +pub const S_IXUSR: u32 = 64; +pub const S_IRWXG: u32 = 56; +pub const S_IRGRP: u32 = 32; +pub const S_IWGRP: u32 = 16; +pub const S_IXGRP: u32 = 8; +pub const S_IRWXO: u32 = 7; +pub const S_IROTH: u32 = 4; +pub const S_IWOTH: u32 = 2; +pub const S_IXOTH: u32 = 1; +pub const STATX_TYPE: u32 = 1; +pub const STATX_MODE: u32 = 2; +pub const STATX_NLINK: u32 = 4; +pub const STATX_UID: u32 = 8; +pub const STATX_GID: u32 = 16; +pub const STATX_ATIME: u32 = 32; +pub const STATX_MTIME: u32 = 64; +pub const STATX_CTIME: u32 = 128; +pub const STATX_INO: u32 = 256; +pub const STATX_SIZE: u32 = 512; +pub const STATX_BLOCKS: u32 = 1024; +pub const STATX_BASIC_STATS: u32 = 2047; +pub const STATX_BTIME: u32 = 2048; +pub const STATX_MNT_ID: u32 = 4096; +pub const STATX_DIOALIGN: u32 = 8192; +pub const STATX__RESERVED: u32 = 2147483648; +pub const STATX_ALL: u32 = 4095; +pub const STATX_ATTR_COMPRESSED: u32 = 4; +pub const STATX_ATTR_IMMUTABLE: u32 = 16; +pub const STATX_ATTR_APPEND: u32 = 32; +pub const STATX_ATTR_NODUMP: u32 = 64; +pub const STATX_ATTR_ENCRYPTED: u32 = 2048; +pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; +pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; +pub const STATX_ATTR_VERITY: u32 = 1048576; +pub const STATX_ATTR_DAX: u32 = 2097152; +pub const IGNBRK: u32 = 1; +pub const BRKINT: u32 = 2; +pub const IGNPAR: u32 = 4; +pub const PARMRK: u32 = 8; +pub const INPCK: u32 = 16; +pub const ISTRIP: u32 = 32; +pub const INLCR: u32 = 64; +pub const IGNCR: u32 = 128; +pub const ICRNL: u32 = 256; +pub const IXANY: u32 = 2048; +pub const OPOST: u32 = 1; +pub const OCRNL: u32 = 8; +pub const ONOCR: u32 = 16; +pub const ONLRET: u32 = 32; +pub const OFILL: u32 = 64; +pub const OFDEL: u32 = 128; +pub const B0: u32 = 0; +pub const B50: u32 = 1; +pub const B75: u32 = 2; +pub const B110: u32 = 3; +pub const B134: u32 = 4; +pub const B150: u32 = 5; +pub const B200: u32 = 6; +pub const B300: u32 = 7; +pub const B600: u32 = 8; +pub const B1200: u32 = 9; +pub const B1800: u32 = 10; +pub const B2400: u32 = 11; +pub const B4800: u32 = 12; +pub const B9600: u32 = 13; +pub const B19200: u32 = 14; +pub const B38400: u32 = 15; +pub const EXTA: u32 = 14; +pub const EXTB: u32 = 15; +pub const ADDRB: u32 = 536870912; +pub const CMSPAR: u32 = 1073741824; +pub const CRTSCTS: u32 = 2147483648; +pub const IBSHIFT: u32 = 16; +pub const TCOOFF: u32 = 0; +pub const TCOON: u32 = 1; +pub const TCIOFF: u32 = 2; +pub const TCION: u32 = 3; +pub const TCIFLUSH: u32 = 0; +pub const TCOFLUSH: u32 = 1; +pub const TCIOFLUSH: u32 = 2; +pub const NCCS: u32 = 19; +pub const VINTR: u32 = 0; +pub const VQUIT: u32 = 1; +pub const VERASE: u32 = 2; +pub const VKILL: u32 = 3; +pub const VEOF: u32 = 4; +pub const VTIME: u32 = 5; +pub const VMIN: u32 = 6; +pub const VSWTC: u32 = 7; +pub const VSTART: u32 = 8; +pub const VSTOP: u32 = 9; +pub const VSUSP: u32 = 10; +pub const VEOL: u32 = 11; +pub const VREPRINT: u32 = 12; +pub const VDISCARD: u32 = 13; +pub const VWERASE: u32 = 14; +pub const VLNEXT: u32 = 15; +pub const VEOL2: u32 = 16; +pub const IUCLC: u32 = 512; +pub const IXON: u32 = 1024; +pub const IXOFF: u32 = 4096; +pub const IMAXBEL: u32 = 8192; +pub const IUTF8: u32 = 16384; +pub const OLCUC: u32 = 2; +pub const ONLCR: u32 = 4; +pub const NLDLY: u32 = 256; +pub const NL0: u32 = 0; +pub const NL1: u32 = 256; +pub const CRDLY: u32 = 1536; +pub const CR0: u32 = 0; +pub const CR1: u32 = 512; +pub const CR2: u32 = 1024; +pub const CR3: u32 = 1536; +pub const TABDLY: u32 = 6144; +pub const TAB0: u32 = 0; +pub const TAB1: u32 = 2048; +pub const TAB2: u32 = 4096; +pub const TAB3: u32 = 6144; +pub const XTABS: u32 = 6144; +pub const BSDLY: u32 = 8192; +pub const BS0: u32 = 0; +pub const BS1: u32 = 8192; +pub const VTDLY: u32 = 16384; +pub const VT0: u32 = 0; +pub const VT1: u32 = 16384; +pub const FFDLY: u32 = 32768; +pub const FF0: u32 = 0; +pub const FF1: u32 = 32768; +pub const CBAUD: u32 = 4111; +pub const CSIZE: u32 = 48; +pub const CS5: u32 = 0; +pub const CS6: u32 = 16; +pub const CS7: u32 = 32; +pub const CS8: u32 = 48; +pub const CSTOPB: u32 = 64; +pub const CREAD: u32 = 128; +pub const PARENB: u32 = 256; +pub const PARODD: u32 = 512; +pub const HUPCL: u32 = 1024; +pub const CLOCAL: u32 = 2048; +pub const CBAUDEX: u32 = 4096; +pub const BOTHER: u32 = 4096; +pub const B57600: u32 = 4097; +pub const B115200: u32 = 4098; +pub const B230400: u32 = 4099; +pub const B460800: u32 = 4100; +pub const B500000: u32 = 4101; +pub const B576000: u32 = 4102; +pub const B921600: u32 = 4103; +pub const B1000000: u32 = 4104; +pub const B1152000: u32 = 4105; +pub const B1500000: u32 = 4106; +pub const B2000000: u32 = 4107; +pub const B2500000: u32 = 4108; +pub const B3000000: u32 = 4109; +pub const B3500000: u32 = 4110; +pub const B4000000: u32 = 4111; +pub const CIBAUD: u32 = 269418496; +pub const ISIG: u32 = 1; +pub const ICANON: u32 = 2; +pub const XCASE: u32 = 4; +pub const ECHO: u32 = 8; +pub const ECHOE: u32 = 16; +pub const ECHOK: u32 = 32; +pub const ECHONL: u32 = 64; +pub const NOFLSH: u32 = 128; +pub const TOSTOP: u32 = 256; +pub const ECHOCTL: u32 = 512; +pub const ECHOPRT: u32 = 1024; +pub const ECHOKE: u32 = 2048; +pub const FLUSHO: u32 = 4096; +pub const PENDIN: u32 = 16384; +pub const IEXTEN: u32 = 32768; +pub const EXTPROC: u32 = 65536; +pub const TCSANOW: u32 = 0; +pub const TCSADRAIN: u32 = 1; +pub const TCSAFLUSH: u32 = 2; +pub const TIOCPKT_DATA: u32 = 0; +pub const TIOCPKT_FLUSHREAD: u32 = 1; +pub const TIOCPKT_FLUSHWRITE: u32 = 2; +pub const TIOCPKT_STOP: u32 = 4; +pub const TIOCPKT_START: u32 = 8; +pub const TIOCPKT_NOSTOP: u32 = 16; +pub const TIOCPKT_DOSTOP: u32 = 32; +pub const TIOCPKT_IOCTL: u32 = 64; +pub const TIOCSER_TEMT: u32 = 1; +pub const NCC: u32 = 8; +pub const TIOCM_LE: u32 = 1; +pub const TIOCM_DTR: u32 = 2; +pub const TIOCM_RTS: u32 = 4; +pub const TIOCM_ST: u32 = 8; +pub const TIOCM_SR: u32 = 16; +pub const TIOCM_CTS: u32 = 32; +pub const TIOCM_CAR: u32 = 64; +pub const TIOCM_RNG: u32 = 128; +pub const TIOCM_DSR: u32 = 256; +pub const TIOCM_CD: u32 = 64; +pub const TIOCM_RI: u32 = 128; +pub const TIOCM_OUT1: u32 = 8192; +pub const TIOCM_OUT2: u32 = 16384; +pub const TIOCM_LOOP: u32 = 32768; +pub const UIO_FASTIOV: u32 = 8; +pub const UIO_MAXIOV: u32 = 1024; +pub const __NR_io_setup: u32 = 0; +pub const __NR_io_destroy: u32 = 1; +pub const __NR_io_submit: u32 = 2; +pub const __NR_io_cancel: u32 = 3; +pub const __NR_io_getevents: u32 = 4; +pub const __NR_setxattr: u32 = 5; +pub const __NR_lsetxattr: u32 = 6; +pub const __NR_fsetxattr: u32 = 7; +pub const __NR_getxattr: u32 = 8; +pub const __NR_lgetxattr: u32 = 9; +pub const __NR_fgetxattr: u32 = 10; +pub const __NR_listxattr: u32 = 11; +pub const __NR_llistxattr: u32 = 12; +pub const __NR_flistxattr: u32 = 13; +pub const __NR_removexattr: u32 = 14; +pub const __NR_lremovexattr: u32 = 15; +pub const __NR_fremovexattr: u32 = 16; +pub const __NR_getcwd: u32 = 17; +pub const __NR_lookup_dcookie: u32 = 18; +pub const __NR_eventfd2: u32 = 19; +pub const __NR_epoll_create1: u32 = 20; +pub const __NR_epoll_ctl: u32 = 21; +pub const __NR_epoll_pwait: u32 = 22; +pub const __NR_dup: u32 = 23; +pub const __NR_dup3: u32 = 24; +pub const __NR3264_fcntl: u32 = 25; +pub const __NR_inotify_init1: u32 = 26; +pub const __NR_inotify_add_watch: u32 = 27; +pub const __NR_inotify_rm_watch: u32 = 28; +pub const __NR_ioctl: u32 = 29; +pub const __NR_ioprio_set: u32 = 30; +pub const __NR_ioprio_get: u32 = 31; +pub const __NR_flock: u32 = 32; +pub const __NR_mknodat: u32 = 33; +pub const __NR_mkdirat: u32 = 34; +pub const __NR_unlinkat: u32 = 35; +pub const __NR_symlinkat: u32 = 36; +pub const __NR_linkat: u32 = 37; +pub const __NR_umount2: u32 = 39; +pub const __NR_mount: u32 = 40; +pub const __NR_pivot_root: u32 = 41; +pub const __NR_nfsservctl: u32 = 42; +pub const __NR3264_statfs: u32 = 43; +pub const __NR3264_fstatfs: u32 = 44; +pub const __NR3264_truncate: u32 = 45; +pub const __NR3264_ftruncate: u32 = 46; +pub const __NR_fallocate: u32 = 47; +pub const __NR_faccessat: u32 = 48; +pub const __NR_chdir: u32 = 49; +pub const __NR_fchdir: u32 = 50; +pub const __NR_chroot: u32 = 51; +pub const __NR_fchmod: u32 = 52; +pub const __NR_fchmodat: u32 = 53; +pub const __NR_fchownat: u32 = 54; +pub const __NR_fchown: u32 = 55; +pub const __NR_openat: u32 = 56; +pub const __NR_close: u32 = 57; +pub const __NR_vhangup: u32 = 58; +pub const __NR_pipe2: u32 = 59; +pub const __NR_quotactl: u32 = 60; +pub const __NR_getdents64: u32 = 61; +pub const __NR3264_lseek: u32 = 62; +pub const __NR_read: u32 = 63; +pub const __NR_write: u32 = 64; +pub const __NR_readv: u32 = 65; +pub const __NR_writev: u32 = 66; +pub const __NR_pread64: u32 = 67; +pub const __NR_pwrite64: u32 = 68; +pub const __NR_preadv: u32 = 69; +pub const __NR_pwritev: u32 = 70; +pub const __NR3264_sendfile: u32 = 71; +pub const __NR_pselect6: u32 = 72; +pub const __NR_ppoll: u32 = 73; +pub const __NR_signalfd4: u32 = 74; +pub const __NR_vmsplice: u32 = 75; +pub const __NR_splice: u32 = 76; +pub const __NR_tee: u32 = 77; +pub const __NR_readlinkat: u32 = 78; +pub const __NR_sync: u32 = 81; +pub const __NR_fsync: u32 = 82; +pub const __NR_fdatasync: u32 = 83; +pub const __NR_sync_file_range: u32 = 84; +pub const __NR_timerfd_create: u32 = 85; +pub const __NR_timerfd_settime: u32 = 86; +pub const __NR_timerfd_gettime: u32 = 87; +pub const __NR_utimensat: u32 = 88; +pub const __NR_acct: u32 = 89; +pub const __NR_capget: u32 = 90; +pub const __NR_capset: u32 = 91; +pub const __NR_personality: u32 = 92; +pub const __NR_exit: u32 = 93; +pub const __NR_exit_group: u32 = 94; +pub const __NR_waitid: u32 = 95; +pub const __NR_set_tid_address: u32 = 96; +pub const __NR_unshare: u32 = 97; +pub const __NR_futex: u32 = 98; +pub const __NR_set_robust_list: u32 = 99; +pub const __NR_get_robust_list: u32 = 100; +pub const __NR_nanosleep: u32 = 101; +pub const __NR_getitimer: u32 = 102; +pub const __NR_setitimer: u32 = 103; +pub const __NR_kexec_load: u32 = 104; +pub const __NR_init_module: u32 = 105; +pub const __NR_delete_module: u32 = 106; +pub const __NR_timer_create: u32 = 107; +pub const __NR_timer_gettime: u32 = 108; +pub const __NR_timer_getoverrun: u32 = 109; +pub const __NR_timer_settime: u32 = 110; +pub const __NR_timer_delete: u32 = 111; +pub const __NR_clock_settime: u32 = 112; +pub const __NR_clock_gettime: u32 = 113; +pub const __NR_clock_getres: u32 = 114; +pub const __NR_clock_nanosleep: u32 = 115; +pub const __NR_syslog: u32 = 116; +pub const __NR_ptrace: u32 = 117; +pub const __NR_sched_setparam: u32 = 118; +pub const __NR_sched_setscheduler: u32 = 119; +pub const __NR_sched_getscheduler: u32 = 120; +pub const __NR_sched_getparam: u32 = 121; +pub const __NR_sched_setaffinity: u32 = 122; +pub const __NR_sched_getaffinity: u32 = 123; +pub const __NR_sched_yield: u32 = 124; +pub const __NR_sched_get_priority_max: u32 = 125; +pub const __NR_sched_get_priority_min: u32 = 126; +pub const __NR_sched_rr_get_interval: u32 = 127; +pub const __NR_restart_syscall: u32 = 128; +pub const __NR_kill: u32 = 129; +pub const __NR_tkill: u32 = 130; +pub const __NR_tgkill: u32 = 131; +pub const __NR_sigaltstack: u32 = 132; +pub const __NR_rt_sigsuspend: u32 = 133; +pub const __NR_rt_sigaction: u32 = 134; +pub const __NR_rt_sigprocmask: u32 = 135; +pub const __NR_rt_sigpending: u32 = 136; +pub const __NR_rt_sigtimedwait: u32 = 137; +pub const __NR_rt_sigqueueinfo: u32 = 138; +pub const __NR_rt_sigreturn: u32 = 139; +pub const __NR_setpriority: u32 = 140; +pub const __NR_getpriority: u32 = 141; +pub const __NR_reboot: u32 = 142; +pub const __NR_setregid: u32 = 143; +pub const __NR_setgid: u32 = 144; +pub const __NR_setreuid: u32 = 145; +pub const __NR_setuid: u32 = 146; +pub const __NR_setresuid: u32 = 147; +pub const __NR_getresuid: u32 = 148; +pub const __NR_setresgid: u32 = 149; +pub const __NR_getresgid: u32 = 150; +pub const __NR_setfsuid: u32 = 151; +pub const __NR_setfsgid: u32 = 152; +pub const __NR_times: u32 = 153; +pub const __NR_setpgid: u32 = 154; +pub const __NR_getpgid: u32 = 155; +pub const __NR_getsid: u32 = 156; +pub const __NR_setsid: u32 = 157; +pub const __NR_getgroups: u32 = 158; +pub const __NR_setgroups: u32 = 159; +pub const __NR_uname: u32 = 160; +pub const __NR_sethostname: u32 = 161; +pub const __NR_setdomainname: u32 = 162; +pub const __NR_getrusage: u32 = 165; +pub const __NR_umask: u32 = 166; +pub const __NR_prctl: u32 = 167; +pub const __NR_getcpu: u32 = 168; +pub const __NR_gettimeofday: u32 = 169; +pub const __NR_settimeofday: u32 = 170; +pub const __NR_adjtimex: u32 = 171; +pub const __NR_getpid: u32 = 172; +pub const __NR_getppid: u32 = 173; +pub const __NR_getuid: u32 = 174; +pub const __NR_geteuid: u32 = 175; +pub const __NR_getgid: u32 = 176; +pub const __NR_getegid: u32 = 177; +pub const __NR_gettid: u32 = 178; +pub const __NR_sysinfo: u32 = 179; +pub const __NR_mq_open: u32 = 180; +pub const __NR_mq_unlink: u32 = 181; +pub const __NR_mq_timedsend: u32 = 182; +pub const __NR_mq_timedreceive: u32 = 183; +pub const __NR_mq_notify: u32 = 184; +pub const __NR_mq_getsetattr: u32 = 185; +pub const __NR_msgget: u32 = 186; +pub const __NR_msgctl: u32 = 187; +pub const __NR_msgrcv: u32 = 188; +pub const __NR_msgsnd: u32 = 189; +pub const __NR_semget: u32 = 190; +pub const __NR_semctl: u32 = 191; +pub const __NR_semtimedop: u32 = 192; +pub const __NR_semop: u32 = 193; +pub const __NR_shmget: u32 = 194; +pub const __NR_shmctl: u32 = 195; +pub const __NR_shmat: u32 = 196; +pub const __NR_shmdt: u32 = 197; +pub const __NR_socket: u32 = 198; +pub const __NR_socketpair: u32 = 199; +pub const __NR_bind: u32 = 200; +pub const __NR_listen: u32 = 201; +pub const __NR_accept: u32 = 202; +pub const __NR_connect: u32 = 203; +pub const __NR_getsockname: u32 = 204; +pub const __NR_getpeername: u32 = 205; +pub const __NR_sendto: u32 = 206; +pub const __NR_recvfrom: u32 = 207; +pub const __NR_setsockopt: u32 = 208; +pub const __NR_getsockopt: u32 = 209; +pub const __NR_shutdown: u32 = 210; +pub const __NR_sendmsg: u32 = 211; +pub const __NR_recvmsg: u32 = 212; +pub const __NR_readahead: u32 = 213; +pub const __NR_brk: u32 = 214; +pub const __NR_munmap: u32 = 215; +pub const __NR_mremap: u32 = 216; +pub const __NR_add_key: u32 = 217; +pub const __NR_request_key: u32 = 218; +pub const __NR_keyctl: u32 = 219; +pub const __NR_clone: u32 = 220; +pub const __NR_execve: u32 = 221; +pub const __NR3264_mmap: u32 = 222; +pub const __NR3264_fadvise64: u32 = 223; +pub const __NR_swapon: u32 = 224; +pub const __NR_swapoff: u32 = 225; +pub const __NR_mprotect: u32 = 226; +pub const __NR_msync: u32 = 227; +pub const __NR_mlock: u32 = 228; +pub const __NR_munlock: u32 = 229; +pub const __NR_mlockall: u32 = 230; +pub const __NR_munlockall: u32 = 231; +pub const __NR_mincore: u32 = 232; +pub const __NR_madvise: u32 = 233; +pub const __NR_remap_file_pages: u32 = 234; +pub const __NR_mbind: u32 = 235; +pub const __NR_get_mempolicy: u32 = 236; +pub const __NR_set_mempolicy: u32 = 237; +pub const __NR_migrate_pages: u32 = 238; +pub const __NR_move_pages: u32 = 239; +pub const __NR_rt_tgsigqueueinfo: u32 = 240; +pub const __NR_perf_event_open: u32 = 241; +pub const __NR_accept4: u32 = 242; +pub const __NR_recvmmsg: u32 = 243; +pub const __NR_arch_specific_syscall: u32 = 244; +pub const __NR_wait4: u32 = 260; +pub const __NR_prlimit64: u32 = 261; +pub const __NR_fanotify_init: u32 = 262; +pub const __NR_fanotify_mark: u32 = 263; +pub const __NR_name_to_handle_at: u32 = 264; +pub const __NR_open_by_handle_at: u32 = 265; +pub const __NR_clock_adjtime: u32 = 266; +pub const __NR_syncfs: u32 = 267; +pub const __NR_setns: u32 = 268; +pub const __NR_sendmmsg: u32 = 269; +pub const __NR_process_vm_readv: u32 = 270; +pub const __NR_process_vm_writev: u32 = 271; +pub const __NR_kcmp: u32 = 272; +pub const __NR_finit_module: u32 = 273; +pub const __NR_sched_setattr: u32 = 274; +pub const __NR_sched_getattr: u32 = 275; +pub const __NR_renameat2: u32 = 276; +pub const __NR_seccomp: u32 = 277; +pub const __NR_getrandom: u32 = 278; +pub const __NR_memfd_create: u32 = 279; +pub const __NR_bpf: u32 = 280; +pub const __NR_execveat: u32 = 281; +pub const __NR_userfaultfd: u32 = 282; +pub const __NR_membarrier: u32 = 283; +pub const __NR_mlock2: u32 = 284; +pub const __NR_copy_file_range: u32 = 285; +pub const __NR_preadv2: u32 = 286; +pub const __NR_pwritev2: u32 = 287; +pub const __NR_pkey_mprotect: u32 = 288; +pub const __NR_pkey_alloc: u32 = 289; +pub const __NR_pkey_free: u32 = 290; +pub const __NR_statx: u32 = 291; +pub const __NR_io_pgetevents: u32 = 292; +pub const __NR_rseq: u32 = 293; +pub const __NR_kexec_file_load: u32 = 294; +pub const __NR_pidfd_send_signal: u32 = 424; +pub const __NR_io_uring_setup: u32 = 425; +pub const __NR_io_uring_enter: u32 = 426; +pub const __NR_io_uring_register: u32 = 427; +pub const __NR_open_tree: u32 = 428; +pub const __NR_move_mount: u32 = 429; +pub const __NR_fsopen: u32 = 430; +pub const __NR_fsconfig: u32 = 431; +pub const __NR_fsmount: u32 = 432; +pub const __NR_fspick: u32 = 433; +pub const __NR_pidfd_open: u32 = 434; +pub const __NR_clone3: u32 = 435; +pub const __NR_close_range: u32 = 436; +pub const __NR_openat2: u32 = 437; +pub const __NR_pidfd_getfd: u32 = 438; +pub const __NR_faccessat2: u32 = 439; +pub const __NR_process_madvise: u32 = 440; +pub const __NR_epoll_pwait2: u32 = 441; +pub const __NR_mount_setattr: u32 = 442; +pub const __NR_quotactl_fd: u32 = 443; +pub const __NR_landlock_create_ruleset: u32 = 444; +pub const __NR_landlock_add_rule: u32 = 445; +pub const __NR_landlock_restrict_self: u32 = 446; +pub const __NR_process_mrelease: u32 = 448; +pub const __NR_futex_waitv: u32 = 449; +pub const __NR_set_mempolicy_home_node: u32 = 450; +pub const __NR_syscalls: u32 = 451; +pub const __NR_fcntl: u32 = 25; +pub const __NR_statfs: u32 = 43; +pub const __NR_fstatfs: u32 = 44; +pub const __NR_truncate: u32 = 45; +pub const __NR_ftruncate: u32 = 46; +pub const __NR_lseek: u32 = 62; +pub const __NR_sendfile: u32 = 71; +pub const __NR_mmap: u32 = 222; +pub const __NR_fadvise64: u32 = 223; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const P_ALL: u32 = 0; +pub const P_PID: u32 = 1; +pub const P_PGID: u32 = 2; +pub const P_PIDFD: u32 = 3; +pub const XATTR_CREATE: u32 = 1; +pub const XATTR_REPLACE: u32 = 2; +pub const XATTR_OS2_PREFIX: &[u8; 5] = b"os2.\0"; +pub const XATTR_MAC_OSX_PREFIX: &[u8; 5] = b"osx.\0"; +pub const XATTR_BTRFS_PREFIX: &[u8; 7] = b"btrfs.\0"; +pub const XATTR_HURD_PREFIX: &[u8; 5] = b"gnu.\0"; +pub const XATTR_SECURITY_PREFIX: &[u8; 10] = b"security.\0"; +pub const XATTR_SYSTEM_PREFIX: &[u8; 8] = b"system.\0"; +pub const XATTR_TRUSTED_PREFIX: &[u8; 9] = b"trusted.\0"; +pub const XATTR_USER_PREFIX: &[u8; 6] = b"user.\0"; +pub const XATTR_EVM_SUFFIX: &[u8; 4] = b"evm\0"; +pub const XATTR_NAME_EVM: &[u8; 13] = b"security.evm\0"; +pub const XATTR_IMA_SUFFIX: &[u8; 4] = b"ima\0"; +pub const XATTR_NAME_IMA: &[u8; 13] = b"security.ima\0"; +pub const XATTR_SELINUX_SUFFIX: &[u8; 8] = b"selinux\0"; +pub const XATTR_NAME_SELINUX: &[u8; 17] = b"security.selinux\0"; +pub const XATTR_SMACK_SUFFIX: &[u8; 8] = b"SMACK64\0"; +pub const XATTR_SMACK_IPIN: &[u8; 12] = b"SMACK64IPIN\0"; +pub const XATTR_SMACK_IPOUT: &[u8; 13] = b"SMACK64IPOUT\0"; +pub const XATTR_SMACK_EXEC: &[u8; 12] = b"SMACK64EXEC\0"; +pub const XATTR_SMACK_TRANSMUTE: &[u8; 17] = b"SMACK64TRANSMUTE\0"; +pub const XATTR_SMACK_MMAP: &[u8; 12] = b"SMACK64MMAP\0"; +pub const XATTR_NAME_SMACK: &[u8; 17] = b"security.SMACK64\0"; +pub const XATTR_NAME_SMACKIPIN: &[u8; 21] = b"security.SMACK64IPIN\0"; +pub const XATTR_NAME_SMACKIPOUT: &[u8; 22] = b"security.SMACK64IPOUT\0"; +pub const XATTR_NAME_SMACKEXEC: &[u8; 21] = b"security.SMACK64EXEC\0"; +pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26] = b"security.SMACK64TRANSMUTE\0"; +pub const XATTR_NAME_SMACKMMAP: &[u8; 21] = b"security.SMACK64MMAP\0"; +pub const XATTR_APPARMOR_SUFFIX: &[u8; 9] = b"apparmor\0"; +pub const XATTR_NAME_APPARMOR: &[u8; 18] = b"security.apparmor\0"; +pub const XATTR_CAPS_SUFFIX: &[u8; 11] = b"capability\0"; +pub const XATTR_NAME_CAPS: &[u8; 20] = b"security.capability\0"; +pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17] = b"posix_acl_access\0"; +pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24] = b"system.posix_acl_access\0"; +pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18] = b"posix_acl_default\0"; +pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25] = b"system.posix_acl_default\0"; +pub const MFD_CLOEXEC: u32 = 1; +pub const MFD_ALLOW_SEALING: u32 = 2; +pub const MFD_HUGETLB: u32 = 4; +pub const MFD_NOEXEC_SEAL: u32 = 8; +pub const MFD_EXEC: u32 = 16; +pub const MFD_HUGE_SHIFT: u32 = 26; +pub const MFD_HUGE_MASK: u32 = 63; +pub const MFD_HUGE_64KB: u32 = 1073741824; +pub const MFD_HUGE_512KB: u32 = 1275068416; +pub const MFD_HUGE_1MB: u32 = 1342177280; +pub const MFD_HUGE_2MB: u32 = 1409286144; +pub const MFD_HUGE_8MB: u32 = 1543503872; +pub const MFD_HUGE_16MB: u32 = 1610612736; +pub const MFD_HUGE_32MB: u32 = 1677721600; +pub const MFD_HUGE_256MB: u32 = 1879048192; +pub const MFD_HUGE_512MB: u32 = 1946157056; +pub const MFD_HUGE_1GB: u32 = 2013265920; +pub const MFD_HUGE_2GB: u32 = 2080374784; +pub const MFD_HUGE_16GB: u32 = 2281701376; +pub const TFD_TIMER_ABSTIME: u32 = 1; +pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; +pub const TFD_CLOEXEC: u32 = 524288; +pub const TFD_NONBLOCK: u32 = 2048; +pub const USERFAULTFD_IOC: u32 = 170; +pub const _UFFDIO_REGISTER: u32 = 0; +pub const _UFFDIO_UNREGISTER: u32 = 1; +pub const _UFFDIO_WAKE: u32 = 2; +pub const _UFFDIO_COPY: u32 = 3; +pub const _UFFDIO_ZEROPAGE: u32 = 4; +pub const _UFFDIO_WRITEPROTECT: u32 = 6; +pub const _UFFDIO_CONTINUE: u32 = 7; +pub const _UFFDIO_API: u32 = 63; +pub const UFFDIO: u32 = 170; +pub const UFFD_EVENT_PAGEFAULT: u32 = 18; +pub const UFFD_EVENT_FORK: u32 = 19; +pub const UFFD_EVENT_REMAP: u32 = 20; +pub const UFFD_EVENT_REMOVE: u32 = 21; +pub const UFFD_EVENT_UNMAP: u32 = 22; +pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; +pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; +pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; +pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; +pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; +pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; +pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; +pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; +pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; +pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; +pub const UFFD_FEATURE_SIGBUS: u32 = 128; +pub const UFFD_FEATURE_THREAD_ID: u32 = 256; +pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; +pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; +pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; +pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; +pub const UFFD_USER_MODE_ONLY: u32 = 1; +pub const DT_UNKNOWN: u32 = 0; +pub const DT_FIFO: u32 = 1; +pub const DT_CHR: u32 = 2; +pub const DT_DIR: u32 = 4; +pub const DT_BLK: u32 = 6; +pub const DT_REG: u32 = 8; +pub const DT_LNK: u32 = 10; +pub const DT_SOCK: u32 = 12; +pub const STAT_HAVE_NSEC: u32 = 1; +pub const F_OK: u32 = 0; +pub const R_OK: u32 = 4; +pub const W_OK: u32 = 2; +pub const X_OK: u32 = 1; +pub const UTIME_NOW: u32 = 1073741823; +pub const UTIME_OMIT: u32 = 1073741822; +pub const MNT_FORCE: u32 = 1; +pub const MNT_DETACH: u32 = 2; +pub const MNT_EXPIRE: u32 = 4; +pub const UMOUNT_NOFOLLOW: u32 = 8; +pub const UMOUNT_UNUSED: u32 = 2147483648; +pub const STDIN_FILENO: u32 = 0; +pub const STDOUT_FILENO: u32 = 1; +pub const STDERR_FILENO: u32 = 2; +pub const RWF_HIPRI: u32 = 1; +pub const RWF_DSYNC: u32 = 2; +pub const RWF_SYNC: u32 = 4; +pub const RWF_NOWAIT: u32 = 8; +pub const RWF_APPEND: u32 = 16; +pub const EFD_SEMAPHORE: u32 = 1; +pub const EFD_CLOEXEC: u32 = 524288; +pub const EFD_NONBLOCK: u32 = 2048; +pub const EPOLLIN: u32 = 1; +pub const EPOLLPRI: u32 = 2; +pub const EPOLLOUT: u32 = 4; +pub const EPOLLERR: u32 = 8; +pub const EPOLLHUP: u32 = 16; +pub const EPOLLNVAL: u32 = 32; +pub const EPOLLRDNORM: u32 = 64; +pub const EPOLLRDBAND: u32 = 128; +pub const EPOLLWRNORM: u32 = 256; +pub const EPOLLWRBAND: u32 = 512; +pub const EPOLLMSG: u32 = 1024; +pub const EPOLLRDHUP: u32 = 8192; +pub const EPOLLEXCLUSIVE: u32 = 268435456; +pub const EPOLLWAKEUP: u32 = 536870912; +pub const EPOLLONESHOT: u32 = 1073741824; +pub const EPOLLET: u32 = 2147483648; +pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; +pub const TFD_CREATE_FLAGS: u32 = 526336; +pub const TFD_SETTIME_FLAGS: u32 = 1; +pub const UFFD_API: u32 = 170; +pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; +pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; +pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; +pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; +pub const UFFDIO_COPY_MODE_WP: u32 = 2; +pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; +pub const SPLICE_F_MOVE: u32 = 1; +pub const SPLICE_F_NONBLOCK: u32 = 2; +pub const SPLICE_F_MORE: u32 = 4; +pub const SPLICE_F_GIFT: u32 = 8; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, } #[repr(u32)] #[non_exhaustive] @@ -4458,681 +2535,161 @@ pub enum membarrier_cmd_flag { MEMBARRIER_CMD_FLAG_CPU = 1, } -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct uffd_msg { -pub event: __u8, -pub reserved1: __u8, -pub reserved2: __u16, -pub reserved3: __u32, -pub arg: uffd_msg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1 { -pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, -pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, -pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, -pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, -pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { -pub flags: __u64, -pub address: __u64, -pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { -pub ptid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { -pub ufd: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { -pub from: __u64, -pub to: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { -pub start: __u64, -pub end: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { -pub reserved1: __u64, -pub reserved2: __u64, -pub reserved3: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_api { -pub api: __u64, -pub features: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_range { -pub start: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_register { -pub range: uffdio_range, -pub mode: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_copy { -pub dst: __u64, -pub src: __u64, -pub len: __u64, -pub mode: __u64, -pub copy: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_zeropage { -pub range: uffdio_range, -pub mode: __u64, -pub zeropage: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_writeprotect { -pub range: uffdio_range, -pub mode: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_continue { -pub range: uffdio_range, -pub mode: __u64, -pub mapped: __s64, -} -#[repr(C)] -pub struct io_uring_sqe { -pub opcode: __u8, -pub flags: __u8, -pub ioprio: __u16, -pub fd: __s32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, -pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, -pub len: __u32, -pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, -pub user_data: __u64, -pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, -pub personality: __u16, -pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, -pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_1 { -pub off: __u64, -pub addr2: __u64, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { -pub cmd_op: __u32, -pub __pad1: __u32, -} #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_2 { -pub addr: __u64, -pub splice_off_in: __u64, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_3 { -pub rw_flags: __kernel_rwf_t, -pub fsync_flags: __u32, -pub poll_events: __u16, -pub poll32_events: __u32, -pub sync_range_flags: __u32, -pub msg_flags: __u32, -pub timeout_flags: __u32, -pub accept_flags: __u32, -pub cancel_flags: __u32, -pub open_flags: __u32, -pub statx_flags: __u32, -pub fadvise_advice: __u32, -pub splice_flags: __u32, -pub rename_flags: __u32, -pub unlink_flags: __u32, -pub hardlink_flags: __u32, -pub xattr_flags: __u32, -pub msg_ring_flags: __u32, -pub uring_cmd_flags: __u32, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_4 { -pub buf_index: __u16, -pub buf_group: __u16, +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_5 { -pub splice_fd_in: __s32, -pub file_index: __u32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { -pub addr_len: __u16, -pub __pad3: [__u16; 1usize], -} -#[repr(C)] -pub struct io_uring_sqe__bindgen_ty_6 { -pub __bindgen_anon_1: __BindgenUnionField, -pub cmd: __BindgenUnionField<[__u8; 0usize]>, -pub bindgen_union_field: [u64; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { -pub addr3: __u64, -pub __pad2: [__u64; 1usize], -} -pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT; -pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT; -pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT; -pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT; -pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT; -pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT; -pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -IOSQE_FIXED_FILE_BIT = 0, -IOSQE_IO_DRAIN_BIT = 1, -IOSQE_IO_LINK_BIT = 2, -IOSQE_IO_HARDLINK_BIT = 3, -IOSQE_ASYNC_BIT = 4, -IOSQE_BUFFER_SELECT_BIT = 5, -IOSQE_CQE_SKIP_SUCCESS_BIT = 6, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum io_uring_op { -IORING_OP_NOP = 0, -IORING_OP_READV = 1, -IORING_OP_WRITEV = 2, -IORING_OP_FSYNC = 3, -IORING_OP_READ_FIXED = 4, -IORING_OP_WRITE_FIXED = 5, -IORING_OP_POLL_ADD = 6, -IORING_OP_POLL_REMOVE = 7, -IORING_OP_SYNC_FILE_RANGE = 8, -IORING_OP_SENDMSG = 9, -IORING_OP_RECVMSG = 10, -IORING_OP_TIMEOUT = 11, -IORING_OP_TIMEOUT_REMOVE = 12, -IORING_OP_ACCEPT = 13, -IORING_OP_ASYNC_CANCEL = 14, -IORING_OP_LINK_TIMEOUT = 15, -IORING_OP_CONNECT = 16, -IORING_OP_FALLOCATE = 17, -IORING_OP_OPENAT = 18, -IORING_OP_CLOSE = 19, -IORING_OP_FILES_UPDATE = 20, -IORING_OP_STATX = 21, -IORING_OP_READ = 22, -IORING_OP_WRITE = 23, -IORING_OP_FADVISE = 24, -IORING_OP_MADVISE = 25, -IORING_OP_SEND = 26, -IORING_OP_RECV = 27, -IORING_OP_OPENAT2 = 28, -IORING_OP_EPOLL_CTL = 29, -IORING_OP_SPLICE = 30, -IORING_OP_PROVIDE_BUFFERS = 31, -IORING_OP_REMOVE_BUFFERS = 32, -IORING_OP_TEE = 33, -IORING_OP_SHUTDOWN = 34, -IORING_OP_RENAMEAT = 35, -IORING_OP_UNLINKAT = 36, -IORING_OP_MKDIRAT = 37, -IORING_OP_SYMLINKAT = 38, -IORING_OP_LINKAT = 39, -IORING_OP_MSG_RING = 40, -IORING_OP_FSETXATTR = 41, -IORING_OP_SETXATTR = 42, -IORING_OP_FGETXATTR = 43, -IORING_OP_GETXATTR = 44, -IORING_OP_SOCKET = 45, -IORING_OP_URING_CMD = 46, -IORING_OP_SEND_ZC = 47, -IORING_OP_SENDMSG_ZC = 48, -IORING_OP_LAST = 49, -} -pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA; -pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_8 { -IORING_MSG_DATA = 0, -IORING_MSG_SEND_FD = 1, -} -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_cqe { -pub user_data: __u64, -pub res: __s32, -pub flags: __u32, -pub big_cqe: __IncompleteArrayField<__u64>, -} -pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_9 { -IORING_CQE_BUFFER_SHIFT = 16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_sqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub flags: __u32, -pub dropped: __u32, -pub array: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_cqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub overflow: __u32, -pub cqes: __u32, -pub flags: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_params { -pub sq_entries: __u32, -pub cq_entries: __u32, -pub flags: __u32, -pub sq_thread_cpu: __u32, -pub sq_thread_idle: __u32, -pub features: __u32, -pub wq_fd: __u32, -pub resv: [__u32; 3usize], -pub sq_off: io_sqring_offsets, -pub cq_off: io_cqring_offsets, -} -pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS; -pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS; -pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES; -pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES; -pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD; -pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD; -pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE; -pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC; -pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE; -pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY; -pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY; -pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS; -pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS; -pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2; -pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2; -pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2; -pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE; -pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF; -pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF; -pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS; -pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS; -pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS; -pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING; -pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING; -pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL; -pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE; -pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST; -pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_USE_REGISTERED_RING; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_10 { -IORING_REGISTER_BUFFERS = 0, -IORING_UNREGISTER_BUFFERS = 1, -IORING_REGISTER_FILES = 2, -IORING_UNREGISTER_FILES = 3, -IORING_REGISTER_EVENTFD = 4, -IORING_UNREGISTER_EVENTFD = 5, -IORING_REGISTER_FILES_UPDATE = 6, -IORING_REGISTER_EVENTFD_ASYNC = 7, -IORING_REGISTER_PROBE = 8, -IORING_REGISTER_PERSONALITY = 9, -IORING_UNREGISTER_PERSONALITY = 10, -IORING_REGISTER_RESTRICTIONS = 11, -IORING_REGISTER_ENABLE_RINGS = 12, -IORING_REGISTER_FILES2 = 13, -IORING_REGISTER_FILES_UPDATE2 = 14, -IORING_REGISTER_BUFFERS2 = 15, -IORING_REGISTER_BUFFERS_UPDATE = 16, -IORING_REGISTER_IOWQ_AFF = 17, -IORING_UNREGISTER_IOWQ_AFF = 18, -IORING_REGISTER_IOWQ_MAX_WORKERS = 19, -IORING_REGISTER_RING_FDS = 20, -IORING_UNREGISTER_RING_FDS = 21, -IORING_REGISTER_PBUF_RING = 22, -IORING_UNREGISTER_PBUF_RING = 23, -IORING_REGISTER_SYNC_CANCEL = 24, -IORING_REGISTER_FILE_ALLOC_RANGE = 25, -IORING_REGISTER_LAST = 26, -IORING_REGISTER_USE_REGISTERED_RING = 2147483648, -} -pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND; -pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_11 { -IO_WQ_BOUND = 0, -IO_WQ_UNBOUND = 1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_files_update { -pub offset: __u32, -pub resv: __u32, -pub fds: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_register { -pub nr: __u32, -pub flags: __u32, -pub resv2: __u64, -pub data: __u64, -pub tags: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update2 { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -pub tags: __u64, -pub nr: __u32, -pub resv2: __u32, +#[derive(Copy, Clone)] +pub union sigval { +pub sival_int: crate::ctypes::c_int, +pub sival_ptr: *mut crate::ctypes::c_void, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_slot { -pub tag: __u64, -pub resv: [__u64; 3usize], +#[derive(Copy, Clone)] +pub union __sifields { +pub _kill: __sifields__bindgen_ty_1, +pub _timer: __sifields__bindgen_ty_2, +pub _rt: __sifields__bindgen_ty_3, +pub _sigchld: __sifields__bindgen_ty_4, +pub _sigfault: __sifields__bindgen_ty_5, +pub _sigpoll: __sifields__bindgen_ty_6, +pub _sigsys: __sifields__bindgen_ty_7, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_register { -pub nr_slots: __u32, -pub resv: __u32, -pub resv2: __u64, -pub data: __u64, -pub resv3: __u64, +#[derive(Copy, Clone)] +pub union __sifields__bindgen_ty_5__bindgen_ty_1 { +pub _trapno: crate::ctypes::c_int, +pub _addr_lsb: crate::ctypes::c_short, +pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, +pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, +pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_probe_op { -pub op: __u8, -pub resv: __u8, -pub flags: __u16, -pub resv2: __u32, +#[derive(Copy, Clone)] +pub union siginfo__bindgen_ty_1 { +pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, +pub _si_pad: [crate::ctypes::c_int; 32usize], } #[repr(C)] -#[derive(Debug)] -pub struct io_uring_probe { -pub last_op: __u8, -pub ops_len: __u8, -pub resv: __u16, -pub resv2: [__u32; 3usize], -pub ops: __IncompleteArrayField, +#[derive(Copy, Clone)] +pub union sigevent__bindgen_ty_1 { +pub _pad: [crate::ctypes::c_int; 12usize], +pub _tid: crate::ctypes::c_int, +pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] -pub struct io_uring_restriction { -pub opcode: __u16, -pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, -pub resv: __u8, -pub resv2: [__u32; 3usize], +pub union uffd_msg__bindgen_ty_1 { +pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, +pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, +pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, +pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, +pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_restriction__bindgen_ty_1 { -pub register_op: __u8, -pub sqe_op: __u8, -pub sqe_flags: __u8, +pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { +pub ptid: __u32, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf { -pub addr: __u64, -pub len: __u32, -pub bid: __u16, -pub resv: __u16, +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } } -#[repr(C)] -pub struct io_uring_buf_ring { -pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, } -#[repr(C)] -pub struct io_uring_buf_ring__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 2usize], +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { -pub resv1: __u64, -pub resv2: __u32, -pub resv3: __u16, -pub tail: __u16, +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; } -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { -pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, -pub bufs: __IncompleteArrayField, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_reg { -pub ring_addr: __u64, -pub ring_entries: __u32, -pub bgid: __u16, -pub pad: __u16, -pub resv: [__u64; 3usize], +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; } -pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP; -pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP; -pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; -pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; -pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_12 { -IORING_RESTRICTION_REGISTER_OP = 0, -IORING_RESTRICTION_SQE_OP = 1, -IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, -IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, -IORING_RESTRICTION_LAST = 4, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_getevents_arg { -pub sigmask: __u64, -pub sigmask_sz: __u32, -pub pad: __u32, -pub ts: __u64, +val } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sync_cancel_reg { -pub addr: __u64, -pub fd: __s32, -pub flags: __u32, -pub timeout: __kernel_timespec, -pub pad: [__u64; 4usize], +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_file_index_range { -pub off: __u32, -pub len: __u32, -pub resv: __u64, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_recvmsg_out { -pub namelen: __u32, -pub controllen: __u32, -pub payloadlen: __u32, -pub flags: __u32, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr { -pub __storage: __kernel_sockaddr_storage, +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct linger { -pub l_onoff: crate::ctypes::c_int, -pub l_linger: crate::ctypes::c_int, +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T } -#[repr(C)] -#[derive(Debug)] -pub struct linux_dirent64 { -pub d_ino: crate::ctypes::c_ulong, -pub d_off: crate::ctypes::c_long, -pub d_reclen: __u16, -pub d_type: __u8, -pub d_name: __IncompleteArrayField, +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T } -pub type socklen_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat { -pub st_dev: crate::ctypes::c_ulong, -pub st_ino: crate::ctypes::c_ulong, -pub st_mode: crate::ctypes::c_uint, -pub st_nlink: crate::ctypes::c_uint, -pub st_uid: crate::ctypes::c_uint, -pub st_gid: crate::ctypes::c_uint, -pub st_rdev: crate::ctypes::c_ulong, -pub __pad1: crate::ctypes::c_ulong, -pub st_size: crate::ctypes::c_long, -pub st_blksize: crate::ctypes::c_int, -pub __pad2: crate::ctypes::c_int, -pub st_blocks: crate::ctypes::c_long, -pub st_atime: crate::ctypes::c_long, -pub st_atime_nsec: crate::ctypes::c_ulong, -pub st_mtime: crate::ctypes::c_long, -pub st_mtime_nsec: crate::ctypes::c_ulong, -pub st_ctime: crate::ctypes::c_long, -pub st_ctime_nsec: crate::ctypes::c_ulong, -pub __unused4: crate::ctypes::c_uint, -pub __unused5: crate::ctypes::c_uint, +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs { -pub f_type: __kernel_long_t, -pub f_bsize: __kernel_long_t, -pub f_blocks: __kernel_long_t, -pub f_bfree: __kernel_long_t, -pub f_bavail: __kernel_long_t, -pub f_files: __kernel_long_t, -pub f_ffree: __kernel_long_t, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __kernel_long_t, -pub f_frsize: __kernel_long_t, -pub f_flags: __kernel_long_t, -pub f_spare: [__kernel_long_t; 4usize], +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs64 { -pub f_type: __kernel_long_t, -pub f_bsize: __kernel_long_t, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __kernel_long_t, -pub f_frsize: __kernel_long_t, -pub f_flags: __kernel_long_t, -pub f_spare: [__kernel_long_t; 4usize], } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct compat_statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") } -pub type __fsword_t = __kernel_long_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_desc { -pub entry_number: crate::ctypes::c_uint, -pub base_addr: crate::ctypes::c_uint, -pub limit: crate::ctypes::c_uint, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub __bindgen_padding_0: [u8; 3usize], +} +impl membarrier_cmd { +pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; } impl user_desc { #[inline] @@ -5231,46 +2788,3 @@ __bindgen_bitfield_unit } } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr { -pub msg_name: *mut crate::ctypes::c_void, -pub msg_namelen: crate::ctypes::c_int, -pub msg_iov: *mut iovec, -pub msg_iovlen: size_t, -pub msg_control: *mut crate::ctypes::c_void, -pub msg_controllen: size_t, -pub msg_flags: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsghdr { -pub cmsg_len: size_t, -pub cmsg_level: crate::ctypes::c_int, -pub cmsg_type: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ucred { -pub pid: __u32, -pub uid: __u32, -pub gid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mmsghdr { -pub msg_hdr: msghdr, -pub msg_len: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigset_t { -pub sig: [crate::ctypes::c_ulong; 1usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigaction { -pub sa_handler_kernel: __kernel_sighandler_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_mask: kernel_sigset_t, -} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/if_ether.rs temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/if_ether.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/if_ether.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/if_ether.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,167 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ethhdr { +pub h_dest: [crate::ctypes::c_uchar; 6usize], +pub h_source: [crate::ctypes::c_uchar; 6usize], +pub h_proto: __be16, +} +pub const ETH_ALEN: u32 = 6; +pub const ETH_TLEN: u32 = 2; +pub const ETH_HLEN: u32 = 14; +pub const ETH_ZLEN: u32 = 60; +pub const ETH_DATA_LEN: u32 = 1500; +pub const ETH_FRAME_LEN: u32 = 1514; +pub const ETH_FCS_LEN: u32 = 4; +pub const ETH_MIN_MTU: u32 = 68; +pub const ETH_MAX_MTU: u32 = 65535; +pub const ETH_P_LOOP: u32 = 96; +pub const ETH_P_PUP: u32 = 512; +pub const ETH_P_PUPAT: u32 = 513; +pub const ETH_P_TSN: u32 = 8944; +pub const ETH_P_ERSPAN2: u32 = 8939; +pub const ETH_P_IP: u32 = 2048; +pub const ETH_P_X25: u32 = 2053; +pub const ETH_P_ARP: u32 = 2054; +pub const ETH_P_BPQ: u32 = 2303; +pub const ETH_P_IEEEPUP: u32 = 2560; +pub const ETH_P_IEEEPUPAT: u32 = 2561; +pub const ETH_P_BATMAN: u32 = 17157; +pub const ETH_P_DEC: u32 = 24576; +pub const ETH_P_DNA_DL: u32 = 24577; +pub const ETH_P_DNA_RC: u32 = 24578; +pub const ETH_P_DNA_RT: u32 = 24579; +pub const ETH_P_LAT: u32 = 24580; +pub const ETH_P_DIAG: u32 = 24581; +pub const ETH_P_CUST: u32 = 24582; +pub const ETH_P_SCA: u32 = 24583; +pub const ETH_P_TEB: u32 = 25944; +pub const ETH_P_RARP: u32 = 32821; +pub const ETH_P_ATALK: u32 = 32923; +pub const ETH_P_AARP: u32 = 33011; +pub const ETH_P_8021Q: u32 = 33024; +pub const ETH_P_ERSPAN: u32 = 35006; +pub const ETH_P_IPX: u32 = 33079; +pub const ETH_P_IPV6: u32 = 34525; +pub const ETH_P_PAUSE: u32 = 34824; +pub const ETH_P_SLOW: u32 = 34825; +pub const ETH_P_WCCP: u32 = 34878; +pub const ETH_P_MPLS_UC: u32 = 34887; +pub const ETH_P_MPLS_MC: u32 = 34888; +pub const ETH_P_ATMMPOA: u32 = 34892; +pub const ETH_P_PPP_DISC: u32 = 34915; +pub const ETH_P_PPP_SES: u32 = 34916; +pub const ETH_P_LINK_CTL: u32 = 34924; +pub const ETH_P_ATMFATE: u32 = 34948; +pub const ETH_P_PAE: u32 = 34958; +pub const ETH_P_PROFINET: u32 = 34962; +pub const ETH_P_REALTEK: u32 = 34969; +pub const ETH_P_AOE: u32 = 34978; +pub const ETH_P_ETHERCAT: u32 = 34980; +pub const ETH_P_8021AD: u32 = 34984; +pub const ETH_P_802_EX1: u32 = 34997; +pub const ETH_P_PREAUTH: u32 = 35015; +pub const ETH_P_TIPC: u32 = 35018; +pub const ETH_P_LLDP: u32 = 35020; +pub const ETH_P_MRP: u32 = 35043; +pub const ETH_P_MACSEC: u32 = 35045; +pub const ETH_P_8021AH: u32 = 35047; +pub const ETH_P_MVRP: u32 = 35061; +pub const ETH_P_1588: u32 = 35063; +pub const ETH_P_NCSI: u32 = 35064; +pub const ETH_P_PRP: u32 = 35067; +pub const ETH_P_CFM: u32 = 35074; +pub const ETH_P_FCOE: u32 = 35078; +pub const ETH_P_IBOE: u32 = 35093; +pub const ETH_P_TDLS: u32 = 35085; +pub const ETH_P_FIP: u32 = 35092; +pub const ETH_P_80221: u32 = 35095; +pub const ETH_P_HSR: u32 = 35119; +pub const ETH_P_NSH: u32 = 35151; +pub const ETH_P_LOOPBACK: u32 = 36864; +pub const ETH_P_QINQ1: u32 = 37120; +pub const ETH_P_QINQ2: u32 = 37376; +pub const ETH_P_QINQ3: u32 = 37632; +pub const ETH_P_EDSA: u32 = 56026; +pub const ETH_P_DSA_8021Q: u32 = 56027; +pub const ETH_P_DSA_A5PSW: u32 = 57345; +pub const ETH_P_IFE: u32 = 60734; +pub const ETH_P_AF_IUCV: u32 = 64507; +pub const ETH_P_802_3_MIN: u32 = 1536; +pub const ETH_P_802_3: u32 = 1; +pub const ETH_P_AX25: u32 = 2; +pub const ETH_P_ALL: u32 = 3; +pub const ETH_P_802_2: u32 = 4; +pub const ETH_P_SNAP: u32 = 5; +pub const ETH_P_DDCMP: u32 = 6; +pub const ETH_P_WAN_PPP: u32 = 7; +pub const ETH_P_PPP_MP: u32 = 8; +pub const ETH_P_LOCALTALK: u32 = 9; +pub const ETH_P_CAN: u32 = 12; +pub const ETH_P_CANFD: u32 = 13; +pub const ETH_P_CANXL: u32 = 14; +pub const ETH_P_PPPTALK: u32 = 16; +pub const ETH_P_TR_802_2: u32 = 17; +pub const ETH_P_MOBITEX: u32 = 21; +pub const ETH_P_CONTROL: u32 = 22; +pub const ETH_P_IRDA: u32 = 23; +pub const ETH_P_ECONET: u32 = 24; +pub const ETH_P_HDLC: u32 = 25; +pub const ETH_P_ARCNET: u32 = 26; +pub const ETH_P_DSA: u32 = 27; +pub const ETH_P_TRAILER: u32 = 28; +pub const ETH_P_PHONET: u32 = 245; +pub const ETH_P_IEEE802154: u32 = 246; +pub const ETH_P_CAIF: u32 = 247; +pub const ETH_P_XDSA: u32 = 248; +pub const ETH_P_MAP: u32 = 249; +pub const ETH_P_MCTP: u32 = 250; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/ioctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/ioctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/ioctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const FIONREAD: u32 = 21531; pub const FIONBIO: u32 = 21537; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/io_uring.rs temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/io_uring.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/io_uring.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/io_uring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1083 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_rwf_t = crate::ctypes::c_int; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +pub struct io_uring_sqe { +pub opcode: __u8, +pub flags: __u8, +pub ioprio: __u16, +pub fd: __s32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, +pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, +pub len: __u32, +pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, +pub user_data: __u64, +pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, +pub personality: __u16, +pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, +pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { +pub cmd_op: __u32, +pub __pad1: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { +pub addr_len: __u16, +pub __pad3: [__u16; 1usize], +} +#[repr(C)] +pub struct io_uring_sqe__bindgen_ty_6 { +pub __bindgen_anon_1: __BindgenUnionField, +pub cmd: __BindgenUnionField<[__u8; 0usize]>, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { +pub addr3: __u64, +pub __pad2: [__u64; 1usize], +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_cqe { +pub user_data: __u64, +pub res: __s32, +pub flags: __u32, +pub big_cqe: __IncompleteArrayField<__u64>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_sqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub flags: __u32, +pub dropped: __u32, +pub array: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_cqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub overflow: __u32, +pub cqes: __u32, +pub flags: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_params { +pub sq_entries: __u32, +pub cq_entries: __u32, +pub flags: __u32, +pub sq_thread_cpu: __u32, +pub sq_thread_idle: __u32, +pub features: __u32, +pub wq_fd: __u32, +pub resv: [__u32; 3usize], +pub sq_off: io_sqring_offsets, +pub cq_off: io_cqring_offsets, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_files_update { +pub offset: __u32, +pub resv: __u32, +pub fds: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_register { +pub nr: __u32, +pub flags: __u32, +pub resv2: __u64, +pub data: __u64, +pub tags: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update2 { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +pub tags: __u64, +pub nr: __u32, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_slot { +pub tag: __u64, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_register { +pub nr_slots: __u32, +pub resv: __u32, +pub resv2: __u64, +pub data: __u64, +pub resv3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_probe_op { +pub op: __u8, +pub resv: __u8, +pub flags: __u16, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_probe { +pub last_op: __u8, +pub ops_len: __u8, +pub resv: __u16, +pub resv2: [__u32; 3usize], +pub ops: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_restriction { +pub opcode: __u16, +pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, +pub resv: __u8, +pub resv2: [__u32; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf { +pub addr: __u64, +pub len: __u32, +pub bid: __u16, +pub resv: __u16, +} +#[repr(C)] +pub struct io_uring_buf_ring { +pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +} +#[repr(C)] +pub struct io_uring_buf_ring__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { +pub resv1: __u64, +pub resv2: __u32, +pub resv3: __u16, +pub tail: __u16, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { +pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, +pub bufs: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_reg { +pub ring_addr: __u64, +pub ring_entries: __u32, +pub bgid: __u16, +pub pad: __u16, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_getevents_arg { +pub sigmask: __u64, +pub sigmask_sz: __u32, +pub pad: __u32, +pub ts: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sync_cancel_reg { +pub addr: __u64, +pub fd: __s32, +pub flags: __u32, +pub timeout: __kernel_timespec, +pub pad: [__u64; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_file_index_range { +pub off: __u32, +pub len: __u32, +pub resv: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_recvmsg_out { +pub namelen: __u32, +pub controllen: __u32, +pub payloadlen: __u32, +pub flags: __u32, +} +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 14; +pub const _IOC_DIRBITS: u32 = 2; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 3; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 30; +pub const _IOC_NONE: u32 = 0; +pub const _IOC_WRITE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const IOC_IN: u32 = 1073741824; +pub const IOC_OUT: u32 = 2147483648; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const IORING_FILE_INDEX_ALLOC: i32 = -1; +pub const IORING_SETUP_IOPOLL: u32 = 1; +pub const IORING_SETUP_SQPOLL: u32 = 2; +pub const IORING_SETUP_SQ_AFF: u32 = 4; +pub const IORING_SETUP_CQSIZE: u32 = 8; +pub const IORING_SETUP_CLAMP: u32 = 16; +pub const IORING_SETUP_ATTACH_WQ: u32 = 32; +pub const IORING_SETUP_R_DISABLED: u32 = 64; +pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; +pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; +pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; +pub const IORING_SETUP_SQE128: u32 = 1024; +pub const IORING_SETUP_CQE32: u32 = 2048; +pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; +pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; +pub const IORING_URING_CMD_FIXED: u32 = 1; +pub const IORING_FSYNC_DATASYNC: u32 = 1; +pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; +pub const IORING_POLL_ADD_LEVEL: u32 = 8; +pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; +pub const IORING_ASYNC_CANCEL_FD: u32 = 2; +pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; +pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; +pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; +pub const IORING_RECV_MULTISHOT: u32 = 2; +pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; +pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; +pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; +pub const IORING_ACCEPT_MULTISHOT: u32 = 1; +pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; +pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; +pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; +pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; +pub const IORING_CQE_F_NOTIF: u32 = 8; +pub const IORING_OFF_SQ_RING: u32 = 0; +pub const IORING_OFF_CQ_RING: u32 = 134217728; +pub const IORING_OFF_SQES: u32 = 268435456; +pub const IORING_SQ_NEED_WAKEUP: u32 = 1; +pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; +pub const IORING_SQ_TASKRUN: u32 = 4; +pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; +pub const IORING_ENTER_GETEVENTS: u32 = 1; +pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; +pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; +pub const IORING_ENTER_REGISTERED_RING: u32 = 16; +pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; +pub const IORING_FEAT_NODROP: u32 = 2; +pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; +pub const IORING_FEAT_RW_CUR_POS: u32 = 8; +pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; +pub const IORING_FEAT_FAST_POLL: u32 = 32; +pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_FEAT_CQE_SKIP: u32 = 2048; +pub const IORING_FEAT_LINKED_FILE: u32 = 4096; +pub const IORING_FEAT_REG_REG_RING: u32 = 8192; +pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; +pub const IO_URING_OP_SUPPORTED: u32 = 1; +pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_FIXED_FILE_BIT; +pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_DRAIN_BIT; +pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_LINK_BIT; +pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_HARDLINK_BIT; +pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_ASYNC_BIT; +pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_BUFFER_SELECT_BIT; +pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_CQE_SKIP_SUCCESS_BIT; +pub const IORING_MSG_DATA: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_DATA; +pub const IORING_MSG_SEND_FD: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_SEND_FD; +pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = _bindgen_ty_3::IORING_CQE_BUFFER_SHIFT; +pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS; +pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_BUFFERS; +pub const IORING_REGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES; +pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_FILES; +pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD; +pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_EVENTFD; +pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE; +pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD_ASYNC; +pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PROBE; +pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PERSONALITY; +pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PERSONALITY; +pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RESTRICTIONS; +pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_ENABLE_RINGS; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES2; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE2; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS2; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS_UPDATE; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_AFF; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_IOWQ_AFF; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_MAX_WORKERS; +pub const IORING_REGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RING_FDS; +pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_RING_FDS; +pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PBUF_RING; +pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PBUF_RING; +pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_SYNC_CANCEL; +pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILE_ALLOC_RANGE; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_LAST; +pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_USE_REGISTERED_RING; +pub const IO_WQ_BOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_BOUND; +pub const IO_WQ_UNBOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_UNBOUND; +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_REGISTER_OP; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_OP; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_LAST; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IOSQE_FIXED_FILE_BIT = 0, +IOSQE_IO_DRAIN_BIT = 1, +IOSQE_IO_LINK_BIT = 2, +IOSQE_IO_HARDLINK_BIT = 3, +IOSQE_ASYNC_BIT = 4, +IOSQE_BUFFER_SELECT_BIT = 5, +IOSQE_CQE_SKIP_SUCCESS_BIT = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum io_uring_op { +IORING_OP_NOP = 0, +IORING_OP_READV = 1, +IORING_OP_WRITEV = 2, +IORING_OP_FSYNC = 3, +IORING_OP_READ_FIXED = 4, +IORING_OP_WRITE_FIXED = 5, +IORING_OP_POLL_ADD = 6, +IORING_OP_POLL_REMOVE = 7, +IORING_OP_SYNC_FILE_RANGE = 8, +IORING_OP_SENDMSG = 9, +IORING_OP_RECVMSG = 10, +IORING_OP_TIMEOUT = 11, +IORING_OP_TIMEOUT_REMOVE = 12, +IORING_OP_ACCEPT = 13, +IORING_OP_ASYNC_CANCEL = 14, +IORING_OP_LINK_TIMEOUT = 15, +IORING_OP_CONNECT = 16, +IORING_OP_FALLOCATE = 17, +IORING_OP_OPENAT = 18, +IORING_OP_CLOSE = 19, +IORING_OP_FILES_UPDATE = 20, +IORING_OP_STATX = 21, +IORING_OP_READ = 22, +IORING_OP_WRITE = 23, +IORING_OP_FADVISE = 24, +IORING_OP_MADVISE = 25, +IORING_OP_SEND = 26, +IORING_OP_RECV = 27, +IORING_OP_OPENAT2 = 28, +IORING_OP_EPOLL_CTL = 29, +IORING_OP_SPLICE = 30, +IORING_OP_PROVIDE_BUFFERS = 31, +IORING_OP_REMOVE_BUFFERS = 32, +IORING_OP_TEE = 33, +IORING_OP_SHUTDOWN = 34, +IORING_OP_RENAMEAT = 35, +IORING_OP_UNLINKAT = 36, +IORING_OP_MKDIRAT = 37, +IORING_OP_SYMLINKAT = 38, +IORING_OP_LINKAT = 39, +IORING_OP_MSG_RING = 40, +IORING_OP_FSETXATTR = 41, +IORING_OP_SETXATTR = 42, +IORING_OP_FGETXATTR = 43, +IORING_OP_GETXATTR = 44, +IORING_OP_SOCKET = 45, +IORING_OP_URING_CMD = 46, +IORING_OP_SEND_ZC = 47, +IORING_OP_SENDMSG_ZC = 48, +IORING_OP_LAST = 49, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IORING_MSG_DATA = 0, +IORING_MSG_SEND_FD = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IORING_CQE_BUFFER_SHIFT = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IORING_REGISTER_BUFFERS = 0, +IORING_UNREGISTER_BUFFERS = 1, +IORING_REGISTER_FILES = 2, +IORING_UNREGISTER_FILES = 3, +IORING_REGISTER_EVENTFD = 4, +IORING_UNREGISTER_EVENTFD = 5, +IORING_REGISTER_FILES_UPDATE = 6, +IORING_REGISTER_EVENTFD_ASYNC = 7, +IORING_REGISTER_PROBE = 8, +IORING_REGISTER_PERSONALITY = 9, +IORING_UNREGISTER_PERSONALITY = 10, +IORING_REGISTER_RESTRICTIONS = 11, +IORING_REGISTER_ENABLE_RINGS = 12, +IORING_REGISTER_FILES2 = 13, +IORING_REGISTER_FILES_UPDATE2 = 14, +IORING_REGISTER_BUFFERS2 = 15, +IORING_REGISTER_BUFFERS_UPDATE = 16, +IORING_REGISTER_IOWQ_AFF = 17, +IORING_UNREGISTER_IOWQ_AFF = 18, +IORING_REGISTER_IOWQ_MAX_WORKERS = 19, +IORING_REGISTER_RING_FDS = 20, +IORING_UNREGISTER_RING_FDS = 21, +IORING_REGISTER_PBUF_RING = 22, +IORING_UNREGISTER_PBUF_RING = 23, +IORING_REGISTER_SYNC_CANCEL = 24, +IORING_REGISTER_FILE_ALLOC_RANGE = 25, +IORING_REGISTER_LAST = 26, +IORING_REGISTER_USE_REGISTERED_RING = 2147483648, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IO_WQ_BOUND = 0, +IO_WQ_UNBOUND = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IORING_RESTRICTION_REGISTER_OP = 0, +IORING_RESTRICTION_SQE_OP = 1, +IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, +IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, +IORING_RESTRICTION_LAST = 4, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_1 { +pub off: __u64, +pub addr2: __u64, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_2 { +pub addr: __u64, +pub splice_off_in: __u64, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_3 { +pub rw_flags: __kernel_rwf_t, +pub fsync_flags: __u32, +pub poll_events: __u16, +pub poll32_events: __u32, +pub sync_range_flags: __u32, +pub msg_flags: __u32, +pub timeout_flags: __u32, +pub accept_flags: __u32, +pub cancel_flags: __u32, +pub open_flags: __u32, +pub statx_flags: __u32, +pub fadvise_advice: __u32, +pub splice_flags: __u32, +pub rename_flags: __u32, +pub unlink_flags: __u32, +pub hardlink_flags: __u32, +pub xattr_flags: __u32, +pub msg_ring_flags: __u32, +pub uring_cmd_flags: __u32, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_4 { +pub buf_index: __u16, +pub buf_group: __u16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { +pub splice_fd_in: __s32, +pub file_index: __u32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_restriction__bindgen_ty_1 { +pub register_op: __u8, +pub sqe_op: __u8, +pub sqe_flags: __u8, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/netlink.rs temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/netlink.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/netlink.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/netlink.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,356 +1,1492 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_nl { +pub nl_family: __kernel_sa_family_t, +pub nl_pad: crate::ctypes::c_ushort, +pub nl_pid: __u32, +pub nl_groups: __u32, } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsghdr { +pub nlmsg_len: __u32, +pub nlmsg_type: __u16, +pub nlmsg_flags: __u16, +pub nlmsg_seq: __u32, +pub nlmsg_pid: __u32, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsgerr { +pub error: crate::ctypes::c_int, +pub msg: nlmsghdr, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_pktinfo { +pub group: __u32, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_req { +pub nm_block_size: crate::ctypes::c_uint, +pub nm_block_nr: crate::ctypes::c_uint, +pub nm_frame_size: crate::ctypes::c_uint, +pub nm_frame_nr: crate::ctypes::c_uint, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_hdr { +pub nm_status: crate::ctypes::c_uint, +pub nm_len: crate::ctypes::c_uint, +pub nm_group: __u32, +pub nm_pid: __u32, +pub nm_uid: __u32, +pub nm_gid: __u32, } -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const __FD_SETSIZE: u32 = 1024; -pub const NETLINK_ROUTE: u32 = 0; -pub const NETLINK_UNUSED: u32 = 1; -pub const NETLINK_USERSOCK: u32 = 2; -pub const NETLINK_FIREWALL: u32 = 3; -pub const NETLINK_SOCK_DIAG: u32 = 4; -pub const NETLINK_NFLOG: u32 = 5; -pub const NETLINK_XFRM: u32 = 6; -pub const NETLINK_SELINUX: u32 = 7; -pub const NETLINK_ISCSI: u32 = 8; -pub const NETLINK_AUDIT: u32 = 9; -pub const NETLINK_FIB_LOOKUP: u32 = 10; -pub const NETLINK_CONNECTOR: u32 = 11; -pub const NETLINK_NETFILTER: u32 = 12; -pub const NETLINK_IP6_FW: u32 = 13; -pub const NETLINK_DNRTMSG: u32 = 14; -pub const NETLINK_KOBJECT_UEVENT: u32 = 15; -pub const NETLINK_GENERIC: u32 = 16; -pub const NETLINK_SCSITRANSPORT: u32 = 18; -pub const NETLINK_ECRYPTFS: u32 = 19; -pub const NETLINK_RDMA: u32 = 20; -pub const NETLINK_CRYPTO: u32 = 21; -pub const NETLINK_SMC: u32 = 22; -pub const NETLINK_INET_DIAG: u32 = 4; -pub const MAX_LINKS: u32 = 32; -pub const NLM_F_REQUEST: u32 = 1; -pub const NLM_F_MULTI: u32 = 2; -pub const NLM_F_ACK: u32 = 4; -pub const NLM_F_ECHO: u32 = 8; -pub const NLM_F_DUMP_INTR: u32 = 16; -pub const NLM_F_DUMP_FILTERED: u32 = 32; -pub const NLM_F_ROOT: u32 = 256; -pub const NLM_F_MATCH: u32 = 512; -pub const NLM_F_ATOMIC: u32 = 1024; -pub const NLM_F_DUMP: u32 = 768; -pub const NLM_F_REPLACE: u32 = 256; -pub const NLM_F_EXCL: u32 = 512; -pub const NLM_F_CREATE: u32 = 1024; -pub const NLM_F_APPEND: u32 = 2048; -pub const NLM_F_NONREC: u32 = 256; -pub const NLM_F_BULK: u32 = 512; -pub const NLM_F_CAPPED: u32 = 256; -pub const NLM_F_ACK_TLVS: u32 = 512; -pub const NLMSG_ALIGNTO: u32 = 4; -pub const NLMSG_NOOP: u32 = 1; -pub const NLMSG_ERROR: u32 = 2; -pub const NLMSG_DONE: u32 = 3; -pub const NLMSG_OVERRUN: u32 = 4; -pub const NLMSG_MIN_TYPE: u32 = 16; -pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; -pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; -pub const NETLINK_PKTINFO: u32 = 3; -pub const NETLINK_BROADCAST_ERROR: u32 = 4; -pub const NETLINK_NO_ENOBUFS: u32 = 5; -pub const NETLINK_RX_RING: u32 = 6; -pub const NETLINK_TX_RING: u32 = 7; -pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; -pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; -pub const NETLINK_CAP_ACK: u32 = 10; -pub const NETLINK_EXT_ACK: u32 = 11; -pub const NETLINK_GET_STRICT_CHK: u32 = 12; -pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; -pub const NET_MAJOR: u32 = 36; -pub const NLA_F_NESTED: u32 = 32768; -pub const NLA_F_NET_BYTEORDER: u32 = 16384; -pub const NLA_TYPE_MASK: i32 = -49153; -pub const NLA_ALIGNTO: u32 = 4; -pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; -pub const MACVLAN_FLAG_NODST: u32 = 2; -pub const IPVLAN_F_PRIVATE: u32 = 1; -pub const IPVLAN_F_VEPA: u32 = 2; -pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; -pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; -pub const MAX_VLAN_LIST_LEN: u32 = 1; -pub const PORT_PROFILE_MAX: u32 = 40; -pub const PORT_UUID_MAX: u32 = 16; -pub const PORT_SELF_VF: i32 = -1; -pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; -pub const XDP_FLAGS_SKB_MODE: u32 = 2; -pub const XDP_FLAGS_DRV_MODE: u32 = 4; -pub const XDP_FLAGS_HW_MODE: u32 = 8; -pub const XDP_FLAGS_REPLACE: u32 = 16; -pub const XDP_FLAGS_MODES: u32 = 14; -pub const XDP_FLAGS_MASK: u32 = 31; -pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; -pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; -pub const IFA_F_SECONDARY: u32 = 1; -pub const IFA_F_TEMPORARY: u32 = 1; -pub const IFA_F_NODAD: u32 = 2; -pub const IFA_F_OPTIMISTIC: u32 = 4; -pub const IFA_F_DADFAILED: u32 = 8; -pub const IFA_F_HOMEADDRESS: u32 = 16; -pub const IFA_F_DEPRECATED: u32 = 32; -pub const IFA_F_TENTATIVE: u32 = 64; -pub const IFA_F_PERMANENT: u32 = 128; -pub const IFA_F_MANAGETEMPADDR: u32 = 256; -pub const IFA_F_NOPREFIXROUTE: u32 = 512; -pub const IFA_F_MCAUTOJOIN: u32 = 1024; -pub const IFA_F_STABLE_PRIVACY: u32 = 2048; -pub const IFAPROT_UNSPEC: u32 = 0; -pub const IFAPROT_KERNEL_LO: u32 = 1; -pub const IFAPROT_KERNEL_RA: u32 = 2; -pub const IFAPROT_KERNEL_LL: u32 = 3; -pub const NTF_USE: u32 = 1; -pub const NTF_SELF: u32 = 2; -pub const NTF_MASTER: u32 = 4; -pub const NTF_PROXY: u32 = 8; -pub const NTF_EXT_LEARNED: u32 = 16; -pub const NTF_OFFLOADED: u32 = 32; -pub const NTF_STICKY: u32 = 64; -pub const NTF_ROUTER: u32 = 128; -pub const NTF_EXT_MANAGED: u32 = 1; -pub const NTF_EXT_LOCKED: u32 = 2; -pub const NUD_INCOMPLETE: u32 = 1; -pub const NUD_REACHABLE: u32 = 2; -pub const NUD_STALE: u32 = 4; -pub const NUD_DELAY: u32 = 8; -pub const NUD_PROBE: u32 = 16; -pub const NUD_FAILED: u32 = 32; -pub const NUD_NOARP: u32 = 64; -pub const NUD_PERMANENT: u32 = 128; -pub const NUD_NONE: u32 = 0; -pub const RTNL_FAMILY_IPMR: u32 = 128; -pub const RTNL_FAMILY_IP6MR: u32 = 129; -pub const RTNL_FAMILY_MAX: u32 = 129; -pub const RTA_ALIGNTO: u32 = 4; -pub const RTPROT_UNSPEC: u32 = 0; -pub const RTPROT_REDIRECT: u32 = 1; -pub const RTPROT_KERNEL: u32 = 2; -pub const RTPROT_BOOT: u32 = 3; -pub const RTPROT_STATIC: u32 = 4; -pub const RTPROT_GATED: u32 = 8; -pub const RTPROT_RA: u32 = 9; -pub const RTPROT_MRT: u32 = 10; -pub const RTPROT_ZEBRA: u32 = 11; -pub const RTPROT_BIRD: u32 = 12; -pub const RTPROT_DNROUTED: u32 = 13; -pub const RTPROT_XORP: u32 = 14; -pub const RTPROT_NTK: u32 = 15; -pub const RTPROT_DHCP: u32 = 16; -pub const RTPROT_MROUTED: u32 = 17; -pub const RTPROT_KEEPALIVED: u32 = 18; -pub const RTPROT_BABEL: u32 = 42; -pub const RTPROT_OPENR: u32 = 99; -pub const RTPROT_BGP: u32 = 186; -pub const RTPROT_ISIS: u32 = 187; -pub const RTPROT_OSPF: u32 = 188; -pub const RTPROT_RIP: u32 = 189; -pub const RTPROT_EIGRP: u32 = 192; -pub const RTM_F_NOTIFY: u32 = 256; -pub const RTM_F_CLONED: u32 = 512; -pub const RTM_F_EQUALIZE: u32 = 1024; -pub const RTM_F_PREFIX: u32 = 2048; -pub const RTM_F_LOOKUP_TABLE: u32 = 4096; -pub const RTM_F_FIB_MATCH: u32 = 8192; -pub const RTM_F_OFFLOAD: u32 = 16384; -pub const RTM_F_TRAP: u32 = 32768; -pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; -pub const RTNH_F_DEAD: u32 = 1; -pub const RTNH_F_PERVASIVE: u32 = 2; -pub const RTNH_F_ONLINK: u32 = 4; -pub const RTNH_F_OFFLOAD: u32 = 8; -pub const RTNH_F_LINKDOWN: u32 = 16; -pub const RTNH_F_UNRESOLVED: u32 = 32; -pub const RTNH_F_TRAP: u32 = 64; -pub const RTNH_COMPARE_MASK: u32 = 89; -pub const RTNH_ALIGNTO: u32 = 4; -pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; -pub const RTAX_FEATURE_ECN: u32 = 1; -pub const RTAX_FEATURE_SACK: u32 = 2; -pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; -pub const RTAX_FEATURE_ALLFRAG: u32 = 8; -pub const RTAX_FEATURE_MASK: u32 = 15; -pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; -pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; -pub const RTMGRP_LINK: u32 = 1; -pub const RTMGRP_NOTIFY: u32 = 2; -pub const RTMGRP_NEIGH: u32 = 4; -pub const RTMGRP_TC: u32 = 8; -pub const RTMGRP_IPV4_IFADDR: u32 = 16; -pub const RTMGRP_IPV4_MROUTE: u32 = 32; -pub const RTMGRP_IPV4_ROUTE: u32 = 64; -pub const RTMGRP_IPV4_RULE: u32 = 128; -pub const RTMGRP_IPV6_IFADDR: u32 = 256; -pub const RTMGRP_IPV6_MROUTE: u32 = 512; -pub const RTMGRP_IPV6_ROUTE: u32 = 1024; -pub const RTMGRP_IPV6_IFINFO: u32 = 2048; -pub const RTMGRP_DECnet_IFADDR: u32 = 4096; -pub const RTMGRP_DECnet_ROUTE: u32 = 16384; -pub const RTMGRP_IPV6_PREFIX: u32 = 131072; -pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; -pub const RTEXT_FILTER_VF: u32 = 1; -pub const RTEXT_FILTER_BRVLAN: u32 = 2; -pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; -pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; -pub const RTEXT_FILTER_MRP: u32 = 16; -pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; -pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; -pub const RTEXT_FILTER_MST: u32 = 128; -pub type size_t = crate::ctypes::c_ulong; -pub type ssize_t = crate::ctypes::c_long; -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; #[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct nlattr { +pub nla_len: __u16, +pub nla_type: __u16, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, +#[derive(Debug, Copy, Clone)] +pub struct nla_bitfield32 { +pub value: __u32, +pub selector: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], +pub struct rtnl_link_stats { +pub rx_packets: __u32, +pub tx_packets: __u32, +pub rx_bytes: __u32, +pub tx_bytes: __u32, +pub rx_errors: __u32, +pub tx_errors: __u32, +pub rx_dropped: __u32, +pub tx_dropped: __u32, +pub multicast: __u32, +pub collisions: __u32, +pub rx_length_errors: __u32, +pub rx_over_errors: __u32, +pub rx_crc_errors: __u32, +pub rx_frame_errors: __u32, +pub rx_fifo_errors: __u32, +pub rx_missed_errors: __u32, +pub tx_aborted_errors: __u32, +pub tx_carrier_errors: __u32, +pub tx_fifo_errors: __u32, +pub tx_heartbeat_errors: __u32, +pub tx_window_errors: __u32, +pub rx_compressed: __u32, +pub tx_compressed: __u32, +pub rx_nohandler: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnl_link_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +pub collisions: __u64, +pub rx_length_errors: __u64, +pub rx_over_errors: __u64, +pub rx_crc_errors: __u64, +pub rx_frame_errors: __u64, +pub rx_fifo_errors: __u64, +pub rx_missed_errors: __u64, +pub tx_aborted_errors: __u64, +pub tx_carrier_errors: __u64, +pub tx_fifo_errors: __u64, +pub tx_heartbeat_errors: __u64, +pub tx_window_errors: __u64, +pub rx_compressed: __u64, +pub tx_compressed: __u64, +pub rx_nohandler: __u64, +pub rx_otherhost_dropped: __u64, } -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 16usize], +pub struct rtnl_hw_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, } -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_old_dev_t = crate::ctypes::c_uint; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], +pub struct rtnl_link_ifmap { +pub mem_start: __u64, +pub mem_end: __u64, +pub base_addr: __u64, +pub irq: __u16, +pub dma: __u8, +pub port: __u8, } -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_nl { -pub nl_family: __kernel_sa_family_t, -pub nl_pad: crate::ctypes::c_ushort, -pub nl_pid: __u32, -pub nl_groups: __u32, +pub struct ifla_bridge_id { +pub prio: [__u8; 2usize], +pub addr: [__u8; 6usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsghdr { -pub nlmsg_len: __u32, -pub nlmsg_type: __u16, -pub nlmsg_flags: __u16, -pub nlmsg_seq: __u32, -pub nlmsg_pid: __u32, +pub struct ifla_cacheinfo { +pub max_reasm_len: __u32, +pub tstamp: __u32, +pub reachable_time: __u32, +pub retrans_time: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsgerr { -pub error: crate::ctypes::c_int, -pub msg: nlmsghdr, +pub struct ifla_vlan_flags { +pub flags: __u32, +pub mask: __u32, } -impl nlmsgerr_attrs { -pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_qos_mapping { +pub from: __u32, +pub to: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tunnel_msg { +pub family: __u8, +pub flags: __u8, +pub reserved2: __u16, +pub ifindex: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vxlan_port_range { +pub low: __be16, +pub high: __be16, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_mac { +pub vf: __u32, +pub mac: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_broadcast { +pub broadcast: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan_info { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +pub vlan_proto: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_tx_rate { +pub vf: __u32, +pub rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rate { +pub vf: __u32, +pub min_tx_rate: __u32, +pub max_tx_rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_spoofchk { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_guid { +pub vf: __u32, +pub guid: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_link_state { +pub vf: __u32, +pub link_state: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rss_query_en { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_trust { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_port_vsi { +pub vsi_mgr_id: __u8, +pub vsi_type_id: [__u8; 3usize], +pub vsi_type_version: __u8, +pub pad: [__u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct if_stats_msg { +pub family: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub ifindex: __u32, +pub filter_mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_rmnet_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifaddrmsg { +pub ifa_family: __u8, +pub ifa_prefixlen: __u8, +pub ifa_flags: __u8, +pub ifa_scope: __u8, +pub ifa_index: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifa_cacheinfo { +pub ifa_prefered: __u32, +pub ifa_valid: __u32, +pub cstamp: __u32, +pub tstamp: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndmsg { +pub ndm_family: __u8, +pub ndm_pad1: __u8, +pub ndm_pad2: __u16, +pub ndm_ifindex: __s32, +pub ndm_state: __u16, +pub ndm_flags: __u8, +pub ndm_type: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nda_cacheinfo { +pub ndm_confirmed: __u32, +pub ndm_used: __u32, +pub ndm_updated: __u32, +pub ndm_refcnt: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_stats { +pub ndts_allocs: __u64, +pub ndts_destroys: __u64, +pub ndts_hash_grows: __u64, +pub ndts_res_failed: __u64, +pub ndts_lookups: __u64, +pub ndts_hits: __u64, +pub ndts_rcv_probes_mcast: __u64, +pub ndts_rcv_probes_ucast: __u64, +pub ndts_periodic_gc_runs: __u64, +pub ndts_forced_gc_runs: __u64, +pub ndts_table_fulls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndtmsg { +pub ndtm_family: __u8, +pub ndtm_pad1: __u8, +pub ndtm_pad2: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_config { +pub ndtc_key_len: __u16, +pub ndtc_entry_size: __u16, +pub ndtc_entries: __u32, +pub ndtc_last_flush: __u32, +pub ndtc_last_rand: __u32, +pub ndtc_hash_rnd: __u32, +pub ndtc_hash_mask: __u32, +pub ndtc_hash_chain_gc: __u32, +pub ndtc_proxy_qlen: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtattr { +pub rta_len: crate::ctypes::c_ushort, +pub rta_type: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtmsg { +pub rtm_family: crate::ctypes::c_uchar, +pub rtm_dst_len: crate::ctypes::c_uchar, +pub rtm_src_len: crate::ctypes::c_uchar, +pub rtm_tos: crate::ctypes::c_uchar, +pub rtm_table: crate::ctypes::c_uchar, +pub rtm_protocol: crate::ctypes::c_uchar, +pub rtm_scope: crate::ctypes::c_uchar, +pub rtm_type: crate::ctypes::c_uchar, +pub rtm_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnexthop { +pub rtnh_len: crate::ctypes::c_ushort, +pub rtnh_flags: crate::ctypes::c_uchar, +pub rtnh_hops: crate::ctypes::c_uchar, +pub rtnh_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug)] +pub struct rtvia { +pub rtvia_family: __kernel_sa_family_t, +pub rtvia_addr: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_cacheinfo { +pub rta_clntref: __u32, +pub rta_lastuse: __u32, +pub rta_expires: __s32, +pub rta_error: __u32, +pub rta_used: __u32, +pub rta_id: __u32, +pub rta_ts: __u32, +pub rta_tsage: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rta_session { +pub proto: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub u: rta_session__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { +pub sport: __u16, +pub dport: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { +pub type_: __u8, +pub code: __u8, +pub ident: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_mfc_stats { +pub mfcs_packets: __u64, +pub mfcs_bytes: __u64, +pub mfcs_wrong_if: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtgenmsg { +pub rtgen_family: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifinfomsg { +pub ifi_family: crate::ctypes::c_uchar, +pub __ifi_pad: crate::ctypes::c_uchar, +pub ifi_type: crate::ctypes::c_ushort, +pub ifi_index: crate::ctypes::c_int, +pub ifi_flags: crate::ctypes::c_uint, +pub ifi_change: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefixmsg { +pub prefix_family: crate::ctypes::c_uchar, +pub prefix_pad1: crate::ctypes::c_uchar, +pub prefix_pad2: crate::ctypes::c_ushort, +pub prefix_ifindex: crate::ctypes::c_int, +pub prefix_type: crate::ctypes::c_uchar, +pub prefix_len: crate::ctypes::c_uchar, +pub prefix_flags: crate::ctypes::c_uchar, +pub prefix_pad3: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefix_cacheinfo { +pub preferred_time: __u32, +pub valid_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcmsg { +pub tcm_family: crate::ctypes::c_uchar, +pub tcm__pad1: crate::ctypes::c_uchar, +pub tcm__pad2: crate::ctypes::c_ushort, +pub tcm_ifindex: crate::ctypes::c_int, +pub tcm_handle: __u32, +pub tcm_parent: __u32, +pub tcm_info: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nduseroptmsg { +pub nduseropt_family: crate::ctypes::c_uchar, +pub nduseropt_pad1: crate::ctypes::c_uchar, +pub nduseropt_opts_len: crate::ctypes::c_ushort, +pub nduseropt_ifindex: crate::ctypes::c_int, +pub nduseropt_icmp_type: __u8, +pub nduseropt_icmp_code: __u8, +pub nduseropt_pad2: crate::ctypes::c_ushort, +pub nduseropt_pad3: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcamsg { +pub tca_family: crate::ctypes::c_uchar, +pub tca__pad1: crate::ctypes::c_uchar, +pub tca__pad2: crate::ctypes::c_ushort, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const NETLINK_ROUTE: u32 = 0; +pub const NETLINK_UNUSED: u32 = 1; +pub const NETLINK_USERSOCK: u32 = 2; +pub const NETLINK_FIREWALL: u32 = 3; +pub const NETLINK_SOCK_DIAG: u32 = 4; +pub const NETLINK_NFLOG: u32 = 5; +pub const NETLINK_XFRM: u32 = 6; +pub const NETLINK_SELINUX: u32 = 7; +pub const NETLINK_ISCSI: u32 = 8; +pub const NETLINK_AUDIT: u32 = 9; +pub const NETLINK_FIB_LOOKUP: u32 = 10; +pub const NETLINK_CONNECTOR: u32 = 11; +pub const NETLINK_NETFILTER: u32 = 12; +pub const NETLINK_IP6_FW: u32 = 13; +pub const NETLINK_DNRTMSG: u32 = 14; +pub const NETLINK_KOBJECT_UEVENT: u32 = 15; +pub const NETLINK_GENERIC: u32 = 16; +pub const NETLINK_SCSITRANSPORT: u32 = 18; +pub const NETLINK_ECRYPTFS: u32 = 19; +pub const NETLINK_RDMA: u32 = 20; +pub const NETLINK_CRYPTO: u32 = 21; +pub const NETLINK_SMC: u32 = 22; +pub const NETLINK_INET_DIAG: u32 = 4; +pub const MAX_LINKS: u32 = 32; +pub const NLM_F_REQUEST: u32 = 1; +pub const NLM_F_MULTI: u32 = 2; +pub const NLM_F_ACK: u32 = 4; +pub const NLM_F_ECHO: u32 = 8; +pub const NLM_F_DUMP_INTR: u32 = 16; +pub const NLM_F_DUMP_FILTERED: u32 = 32; +pub const NLM_F_ROOT: u32 = 256; +pub const NLM_F_MATCH: u32 = 512; +pub const NLM_F_ATOMIC: u32 = 1024; +pub const NLM_F_DUMP: u32 = 768; +pub const NLM_F_REPLACE: u32 = 256; +pub const NLM_F_EXCL: u32 = 512; +pub const NLM_F_CREATE: u32 = 1024; +pub const NLM_F_APPEND: u32 = 2048; +pub const NLM_F_NONREC: u32 = 256; +pub const NLM_F_BULK: u32 = 512; +pub const NLM_F_CAPPED: u32 = 256; +pub const NLM_F_ACK_TLVS: u32 = 512; +pub const NLMSG_ALIGNTO: u32 = 4; +pub const NLMSG_NOOP: u32 = 1; +pub const NLMSG_ERROR: u32 = 2; +pub const NLMSG_DONE: u32 = 3; +pub const NLMSG_OVERRUN: u32 = 4; +pub const NLMSG_MIN_TYPE: u32 = 16; +pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; +pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; +pub const NETLINK_PKTINFO: u32 = 3; +pub const NETLINK_BROADCAST_ERROR: u32 = 4; +pub const NETLINK_NO_ENOBUFS: u32 = 5; +pub const NETLINK_RX_RING: u32 = 6; +pub const NETLINK_TX_RING: u32 = 7; +pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; +pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; +pub const NETLINK_CAP_ACK: u32 = 10; +pub const NETLINK_EXT_ACK: u32 = 11; +pub const NETLINK_GET_STRICT_CHK: u32 = 12; +pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; +pub const NET_MAJOR: u32 = 36; +pub const NLA_F_NESTED: u32 = 32768; +pub const NLA_F_NET_BYTEORDER: u32 = 16384; +pub const NLA_TYPE_MASK: i32 = -49153; +pub const NLA_ALIGNTO: u32 = 4; +pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; +pub const MACVLAN_FLAG_NODST: u32 = 2; +pub const IPVLAN_F_PRIVATE: u32 = 1; +pub const IPVLAN_F_VEPA: u32 = 2; +pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; +pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; +pub const MAX_VLAN_LIST_LEN: u32 = 1; +pub const PORT_PROFILE_MAX: u32 = 40; +pub const PORT_UUID_MAX: u32 = 16; +pub const PORT_SELF_VF: i32 = -1; +pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; +pub const XDP_FLAGS_SKB_MODE: u32 = 2; +pub const XDP_FLAGS_DRV_MODE: u32 = 4; +pub const XDP_FLAGS_HW_MODE: u32 = 8; +pub const XDP_FLAGS_REPLACE: u32 = 16; +pub const XDP_FLAGS_MODES: u32 = 14; +pub const XDP_FLAGS_MASK: u32 = 31; +pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; +pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; +pub const IFA_F_SECONDARY: u32 = 1; +pub const IFA_F_TEMPORARY: u32 = 1; +pub const IFA_F_NODAD: u32 = 2; +pub const IFA_F_OPTIMISTIC: u32 = 4; +pub const IFA_F_DADFAILED: u32 = 8; +pub const IFA_F_HOMEADDRESS: u32 = 16; +pub const IFA_F_DEPRECATED: u32 = 32; +pub const IFA_F_TENTATIVE: u32 = 64; +pub const IFA_F_PERMANENT: u32 = 128; +pub const IFA_F_MANAGETEMPADDR: u32 = 256; +pub const IFA_F_NOPREFIXROUTE: u32 = 512; +pub const IFA_F_MCAUTOJOIN: u32 = 1024; +pub const IFA_F_STABLE_PRIVACY: u32 = 2048; +pub const IFAPROT_UNSPEC: u32 = 0; +pub const IFAPROT_KERNEL_LO: u32 = 1; +pub const IFAPROT_KERNEL_RA: u32 = 2; +pub const IFAPROT_KERNEL_LL: u32 = 3; +pub const NTF_USE: u32 = 1; +pub const NTF_SELF: u32 = 2; +pub const NTF_MASTER: u32 = 4; +pub const NTF_PROXY: u32 = 8; +pub const NTF_EXT_LEARNED: u32 = 16; +pub const NTF_OFFLOADED: u32 = 32; +pub const NTF_STICKY: u32 = 64; +pub const NTF_ROUTER: u32 = 128; +pub const NTF_EXT_MANAGED: u32 = 1; +pub const NTF_EXT_LOCKED: u32 = 2; +pub const NUD_INCOMPLETE: u32 = 1; +pub const NUD_REACHABLE: u32 = 2; +pub const NUD_STALE: u32 = 4; +pub const NUD_DELAY: u32 = 8; +pub const NUD_PROBE: u32 = 16; +pub const NUD_FAILED: u32 = 32; +pub const NUD_NOARP: u32 = 64; +pub const NUD_PERMANENT: u32 = 128; +pub const NUD_NONE: u32 = 0; +pub const RTNL_FAMILY_IPMR: u32 = 128; +pub const RTNL_FAMILY_IP6MR: u32 = 129; +pub const RTNL_FAMILY_MAX: u32 = 129; +pub const RTA_ALIGNTO: u32 = 4; +pub const RTPROT_UNSPEC: u32 = 0; +pub const RTPROT_REDIRECT: u32 = 1; +pub const RTPROT_KERNEL: u32 = 2; +pub const RTPROT_BOOT: u32 = 3; +pub const RTPROT_STATIC: u32 = 4; +pub const RTPROT_GATED: u32 = 8; +pub const RTPROT_RA: u32 = 9; +pub const RTPROT_MRT: u32 = 10; +pub const RTPROT_ZEBRA: u32 = 11; +pub const RTPROT_BIRD: u32 = 12; +pub const RTPROT_DNROUTED: u32 = 13; +pub const RTPROT_XORP: u32 = 14; +pub const RTPROT_NTK: u32 = 15; +pub const RTPROT_DHCP: u32 = 16; +pub const RTPROT_MROUTED: u32 = 17; +pub const RTPROT_KEEPALIVED: u32 = 18; +pub const RTPROT_BABEL: u32 = 42; +pub const RTPROT_OPENR: u32 = 99; +pub const RTPROT_BGP: u32 = 186; +pub const RTPROT_ISIS: u32 = 187; +pub const RTPROT_OSPF: u32 = 188; +pub const RTPROT_RIP: u32 = 189; +pub const RTPROT_EIGRP: u32 = 192; +pub const RTM_F_NOTIFY: u32 = 256; +pub const RTM_F_CLONED: u32 = 512; +pub const RTM_F_EQUALIZE: u32 = 1024; +pub const RTM_F_PREFIX: u32 = 2048; +pub const RTM_F_LOOKUP_TABLE: u32 = 4096; +pub const RTM_F_FIB_MATCH: u32 = 8192; +pub const RTM_F_OFFLOAD: u32 = 16384; +pub const RTM_F_TRAP: u32 = 32768; +pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; +pub const RTNH_F_DEAD: u32 = 1; +pub const RTNH_F_PERVASIVE: u32 = 2; +pub const RTNH_F_ONLINK: u32 = 4; +pub const RTNH_F_OFFLOAD: u32 = 8; +pub const RTNH_F_LINKDOWN: u32 = 16; +pub const RTNH_F_UNRESOLVED: u32 = 32; +pub const RTNH_F_TRAP: u32 = 64; +pub const RTNH_COMPARE_MASK: u32 = 89; +pub const RTNH_ALIGNTO: u32 = 4; +pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; +pub const RTAX_FEATURE_ECN: u32 = 1; +pub const RTAX_FEATURE_SACK: u32 = 2; +pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; +pub const RTAX_FEATURE_ALLFRAG: u32 = 8; +pub const RTAX_FEATURE_MASK: u32 = 15; +pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; +pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; +pub const RTMGRP_LINK: u32 = 1; +pub const RTMGRP_NOTIFY: u32 = 2; +pub const RTMGRP_NEIGH: u32 = 4; +pub const RTMGRP_TC: u32 = 8; +pub const RTMGRP_IPV4_IFADDR: u32 = 16; +pub const RTMGRP_IPV4_MROUTE: u32 = 32; +pub const RTMGRP_IPV4_ROUTE: u32 = 64; +pub const RTMGRP_IPV4_RULE: u32 = 128; +pub const RTMGRP_IPV6_IFADDR: u32 = 256; +pub const RTMGRP_IPV6_MROUTE: u32 = 512; +pub const RTMGRP_IPV6_ROUTE: u32 = 1024; +pub const RTMGRP_IPV6_IFINFO: u32 = 2048; +pub const RTMGRP_DECnet_IFADDR: u32 = 4096; +pub const RTMGRP_DECnet_ROUTE: u32 = 16384; +pub const RTMGRP_IPV6_PREFIX: u32 = 131072; +pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; +pub const RTEXT_FILTER_VF: u32 = 1; +pub const RTEXT_FILTER_BRVLAN: u32 = 2; +pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; +pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; +pub const RTEXT_FILTER_MRP: u32 = 16; +pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; +pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; +pub const RTEXT_FILTER_MST: u32 = 128; +pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; +pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; +pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; +pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; +pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; +pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; +pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; +pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; +pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; +pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; +pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; +pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; +pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; +pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; +pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; +pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; +pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; +pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; +pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; +pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; +pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; +pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; +pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; +pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; +pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; +pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; +pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; +pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; +pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; +pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; +pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; +pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; +pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; +pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; +pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; +pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; +pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; +pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; +pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; +pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; +pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; +pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; +pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; +pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; +pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; +pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; +pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; +pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; +pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; +pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; +pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; +pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; +pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; +pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; +pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; +pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; +pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; +pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; +pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; +pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; +pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; +pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; +pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; +pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; +pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; +pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; +pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; +pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; +pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; +pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; +pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; +pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; +pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; +pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; +pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; +pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; +pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; +pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; +pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; +pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; +pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; +pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; +pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; +pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; +pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; +pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; +pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; +pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; +pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; +pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; +pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; +pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; +pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; +pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; +pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; +pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; +pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; +pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; +pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; +pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; +pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; +pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; +pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; +pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; +pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; +pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; +pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; +pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; +pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; +pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; +pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; +pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; +pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; +pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; +pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; +pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; +pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; +pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; +pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; +pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; +pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; +pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; +pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; +pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; +pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; +pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; +pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; +pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; +pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; +pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; +pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; +pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; +pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; +pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; +pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; +pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; +pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; +pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; +pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; +pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; +pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; +pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; +pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; +pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; +pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; +pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; +pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; +pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; +pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; +pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; +pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; +pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; +pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; +pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; +pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; +pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; +pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; +pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; +pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; +pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; +pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; +pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; +pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; +pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; +pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; +pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; +pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; +pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; +pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; +pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; +pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; +pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; +pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; +pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; +pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; +pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; +pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; +pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; +pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; +pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; +pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; +pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; +pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; +pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; +pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; +pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; +pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; +pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; +pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; +pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; +pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; +pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; +pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; +pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; +pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; +pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; +pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; +pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; +pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; +pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; +pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; +pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; +pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; +pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; +pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; +pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; +pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; +pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; +pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; +pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; +pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; +pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; +pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; +pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; +pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; +pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; +pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; +pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; +pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; +pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; +pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; +pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; +pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; +pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; +pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; +pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; +pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; +pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; +pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; +pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; +pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; +pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; +pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; +pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; +pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; +pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; +pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; +pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; +pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; +pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; +pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; +pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; +pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; +pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; +pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; +pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; +pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; +pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; +pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; +pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; +pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; +pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; +pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; +pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; +pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; +pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; +pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; +pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; +pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; +pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; +pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; +pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; +pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; +pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; +pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; +pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; +pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; +pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; +pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; +pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; +pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; +pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; +pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; +pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; +pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; +pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; +pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; +pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; +pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; +pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; +pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; +pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; +pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; +pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; +pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; +pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; +pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; +pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; +pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; +pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; +pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; +pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; +pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; +pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; +pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; +pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; +pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; +pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; +pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; +pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; +pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; +pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; +pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; +pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; +pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; +pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; +pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; +pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; +pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; +pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; +pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; +pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; +pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; +pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; +pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; +pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; +pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; +pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; +pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; +pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; +pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; +pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; +pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; +pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; +pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; +pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; +pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; +pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; +pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; +pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; +pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; +pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; +pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; +pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; +pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; +pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; +pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; +pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; +pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; +pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; +pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; +pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; +pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; +pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; +pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; +pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; +pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; +pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; +pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; +pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; +pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; +pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; +pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; +pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; +pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; +pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; +pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; +pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; +pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; +pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; +pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; +pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; +pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; +pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; +pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; +pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; +pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; +pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; +pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; +pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; +pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; +pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; +pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; +pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; +pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; +pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; +pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; +pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; +pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; +pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; +pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; +pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; +pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; +pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; +pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; +pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; +pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; +pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; +pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; +pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; +pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; +pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; +pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; +pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; +pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; +pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; +pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; +pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; +pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; +pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; +pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; +pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; +pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; +pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; +pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; +pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; +pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; +pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; +pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; +pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; +pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; +pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; +pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; +pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; +pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; +pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; +pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; +pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; +pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; +pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; +pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; +pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; +pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; +pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; +pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; +pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; +pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; +pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; +pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; +pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; +pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; +pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; +pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; +pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; +pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; +pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; +pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; +pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; +pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; +pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; +pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; +pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; +pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; +pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; +pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; +pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; +pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; +pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; +pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; +pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; +pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; +pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; +pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; +pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; +pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; +pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; +pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; +pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; +pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; +pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; +pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; +pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; +pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; +pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; +pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; +pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; +pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; +pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; +pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; +pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; +pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; +pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; +pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; +pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; +pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; +pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; +pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; +pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; +pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; +pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; +pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; +pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; +pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; +pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; +pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; +pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; +pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; +pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; +pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; +pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; +pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; +pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; +pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; +pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; +pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; +pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; +pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; +pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; +pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; +pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; +pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; +pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; +pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; +pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; +pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; +pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; +pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; +pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; +pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; +pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; +pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; +pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; +pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; +pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; +pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; +pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; +pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; +pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; +pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; +pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; +pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; +pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; +pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; +pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; +pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; +pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; +pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; +pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; +pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; +pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; +pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; +pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; +pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; +pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; +pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; +pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; +pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; +pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; +pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; +pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; +pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; +pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; +pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; +pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; +pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; +pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; +pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; +pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; +pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; +pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; +pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; +pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; +pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; +pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; +pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; +pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; +pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; +pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; +pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; +pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; +pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; +pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; +pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; +pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; +pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; +pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; +pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; +pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; +pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; +pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; +pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; +pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; +pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; +pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; +pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; +pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; +pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; +pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; +pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; +pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; +pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; +pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; +pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; +pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; +pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; +pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; +pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; +pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; +pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; +pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; +pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; +pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; +pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; +pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; +pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; +pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; +pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; +pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; +pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; +pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; +pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; +pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; +pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; +pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; +pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; +pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; +pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; +pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; +pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; +pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; +pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; +pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; +pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; +pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; +pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; +pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; +pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; +pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; +pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; +pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; +pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; +pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; +pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; +pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; +pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; +pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; +pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; +pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; +pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; +pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; +pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; +pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; +pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; +pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; +pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; +pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; +pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; +pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; +pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; +pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; +pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; +pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; +pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; +pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; +pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; +pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; +pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; +pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; +pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; +pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; +pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; +pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; +pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; +pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; +pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; +pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; +pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; +pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; +pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; +pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; +pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; +pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; +pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; +pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; +pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; +pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; +pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; +pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; +pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; +pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; +pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; +pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; +pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; +pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; +pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; +pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; +pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; +pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; +pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; +pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; +pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; +pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; +pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; +pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; +pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; +pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; +pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; +pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; +pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; +pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; +pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; +pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; +pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; +pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; +pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; +pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; +pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; +pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; +pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; +pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; +pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; +pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; +pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; +pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -364,29 +1500,6 @@ NLMSGERR_ATTR_MISS_NEST = 6, __NLMSGERR_ATTR_MAX = 7, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_pktinfo { -pub group: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_req { -pub nm_block_size: crate::ctypes::c_uint, -pub nm_block_nr: crate::ctypes::c_uint, -pub nm_frame_size: crate::ctypes::c_uint, -pub nm_frame_nr: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_hdr { -pub nm_status: crate::ctypes::c_uint, -pub nm_len: crate::ctypes::c_uint, -pub nm_group: __u32, -pub nm_pid: __u32, -pub nm_uid: __u32, -pub nm_gid: __u32, -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -397,8 +1510,6 @@ NL_MMAP_STATUS_COPY = 3, NL_MMAP_STATUS_SKIP = 4, } -pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; -pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -406,208 +1517,46 @@ NETLINK_UNCONNECTED = 0, NETLINK_CONNECTED = 1, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nlattr { -pub nla_len: __u16, -pub nla_type: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nla_bitfield32 { -pub value: __u32, -pub selector: __u32, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_attribute_type { -NL_ATTR_TYPE_INVALID = 0, -NL_ATTR_TYPE_FLAG = 1, -NL_ATTR_TYPE_U8 = 2, -NL_ATTR_TYPE_U16 = 3, -NL_ATTR_TYPE_U32 = 4, -NL_ATTR_TYPE_U64 = 5, -NL_ATTR_TYPE_S8 = 6, -NL_ATTR_TYPE_S16 = 7, -NL_ATTR_TYPE_S32 = 8, -NL_ATTR_TYPE_S64 = 9, -NL_ATTR_TYPE_BINARY = 10, -NL_ATTR_TYPE_STRING = 11, -NL_ATTR_TYPE_NUL_STRING = 12, -NL_ATTR_TYPE_NESTED = 13, -NL_ATTR_TYPE_NESTED_ARRAY = 14, -NL_ATTR_TYPE_BITFIELD32 = 15, -} -impl netlink_policy_type_attr { -pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_policy_type_attr { -NL_POLICY_TYPE_ATTR_UNSPEC = 0, -NL_POLICY_TYPE_ATTR_TYPE = 1, -NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, -NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, -NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, -NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, -NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, -NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, -NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, -NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, -NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, -NL_POLICY_TYPE_ATTR_PAD = 11, -NL_POLICY_TYPE_ATTR_MASK = 12, -__NL_POLICY_TYPE_ATTR_MAX = 13, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats { -pub rx_packets: __u32, -pub tx_packets: __u32, -pub rx_bytes: __u32, -pub tx_bytes: __u32, -pub rx_errors: __u32, -pub tx_errors: __u32, -pub rx_dropped: __u32, -pub tx_dropped: __u32, -pub multicast: __u32, -pub collisions: __u32, -pub rx_length_errors: __u32, -pub rx_over_errors: __u32, -pub rx_crc_errors: __u32, -pub rx_frame_errors: __u32, -pub rx_fifo_errors: __u32, -pub rx_missed_errors: __u32, -pub tx_aborted_errors: __u32, -pub tx_carrier_errors: __u32, -pub tx_fifo_errors: __u32, -pub tx_heartbeat_errors: __u32, -pub tx_window_errors: __u32, -pub rx_compressed: __u32, -pub tx_compressed: __u32, -pub rx_nohandler: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, -pub collisions: __u64, -pub rx_length_errors: __u64, -pub rx_over_errors: __u64, -pub rx_crc_errors: __u64, -pub rx_frame_errors: __u64, -pub rx_fifo_errors: __u64, -pub rx_missed_errors: __u64, -pub tx_aborted_errors: __u64, -pub tx_carrier_errors: __u64, -pub tx_fifo_errors: __u64, -pub tx_heartbeat_errors: __u64, -pub tx_window_errors: __u64, -pub rx_compressed: __u64, -pub tx_compressed: __u64, -pub rx_nohandler: __u64, -pub rx_otherhost_dropped: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_hw_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, +pub enum netlink_attribute_type { +NL_ATTR_TYPE_INVALID = 0, +NL_ATTR_TYPE_FLAG = 1, +NL_ATTR_TYPE_U8 = 2, +NL_ATTR_TYPE_U16 = 3, +NL_ATTR_TYPE_U32 = 4, +NL_ATTR_TYPE_U64 = 5, +NL_ATTR_TYPE_S8 = 6, +NL_ATTR_TYPE_S16 = 7, +NL_ATTR_TYPE_S32 = 8, +NL_ATTR_TYPE_S64 = 9, +NL_ATTR_TYPE_BINARY = 10, +NL_ATTR_TYPE_STRING = 11, +NL_ATTR_TYPE_NUL_STRING = 12, +NL_ATTR_TYPE_NESTED = 13, +NL_ATTR_TYPE_NESTED_ARRAY = 14, +NL_ATTR_TYPE_BITFIELD32 = 15, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_ifmap { -pub mem_start: __u64, -pub mem_end: __u64, -pub base_addr: __u64, -pub irq: __u16, -pub dma: __u8, -pub port: __u8, +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_policy_type_attr { +NL_POLICY_TYPE_ATTR_UNSPEC = 0, +NL_POLICY_TYPE_ATTR_TYPE = 1, +NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, +NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, +NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, +NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, +NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, +NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, +NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, +NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, +NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, +NL_POLICY_TYPE_ATTR_PAD = 11, +NL_POLICY_TYPE_ATTR_MASK = 12, +__NL_POLICY_TYPE_ATTR_MAX = 13, } -pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; -pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; -pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; -pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; -pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; -pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; -pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; -pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; -pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; -pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; -pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; -pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; -pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; -pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; -pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; -pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; -pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; -pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; -pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; -pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; -pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; -pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; -pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; -pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; -pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; -pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; -pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; -pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; -pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; -pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; -pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; -pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; -pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; -pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; -pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; -pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; -pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; -pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; -pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; -pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; -pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; -pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; -pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; -pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; -pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; -pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; -pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; -pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; -pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; -pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; -pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; -pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; -pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; -pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; -pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; -pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; -pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; -pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; -pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; -pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; -pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; -pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; -pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; -pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; -pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -679,11 +1628,6 @@ IFLA_GRO_IPV4_MAX_SIZE = 64, __IFLA_MAX = 65, } -pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; -pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; -pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; -pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; -pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -693,9 +1637,6 @@ IFLA_PROTO_DOWN_REASON_VALUE = 2, __IFLA_PROTO_DOWN_REASON_CNT = 3, } -pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; -pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; -pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -704,17 +1645,6 @@ IFLA_INET_CONF = 1, __IFLA_INET_MAX = 2, } -pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; -pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; -pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; -pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; -pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; -pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; -pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; -pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; -pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; -pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; -pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -740,55 +1670,6 @@ IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, IN6_ADDR_GEN_MODE_RANDOM = 3, } -pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; -pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; -pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; -pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; -pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; -pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; -pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; -pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; -pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; -pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; -pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; -pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; -pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; -pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; -pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; -pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; -pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; -pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; -pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; -pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; -pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; -pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; -pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; -pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; -pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; -pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; -pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; -pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; -pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; -pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; -pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; -pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; -pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; -pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; -pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; -pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; -pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; -pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; -pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; -pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; -pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; -pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; -pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; -pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; -pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; -pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; -pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; -pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; -pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -825,83 +1706,31 @@ IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29, IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30, IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, -IFLA_BR_MCAST_QUERIER_INTVL = 32, -IFLA_BR_MCAST_QUERY_INTVL = 33, -IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, -IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, -IFLA_BR_NF_CALL_IPTABLES = 36, -IFLA_BR_NF_CALL_IP6TABLES = 37, -IFLA_BR_NF_CALL_ARPTABLES = 38, -IFLA_BR_VLAN_DEFAULT_PVID = 39, -IFLA_BR_PAD = 40, -IFLA_BR_VLAN_STATS_ENABLED = 41, -IFLA_BR_MCAST_STATS_ENABLED = 42, -IFLA_BR_MCAST_IGMP_VERSION = 43, -IFLA_BR_MCAST_MLD_VERSION = 44, -IFLA_BR_VLAN_STATS_PER_PORT = 45, -IFLA_BR_MULTI_BOOLOPT = 46, -IFLA_BR_MCAST_QUERIER_STATE = 47, -__IFLA_BR_MAX = 48, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_bridge_id { -pub prio: [__u8; 2usize], -pub addr: [__u8; 6usize], -} -pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; -pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -BRIDGE_MODE_UNSPEC = 0, -BRIDGE_MODE_HAIRPIN = 1, -} -pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; -pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; -pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; -pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; -pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; -pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; -pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; -pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; -pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; -pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; -pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; -pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; -pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; -pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; -pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; -pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; -pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; -pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; -pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; -pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; -pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; -pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; -pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; -pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; -pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; -pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; -pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; -pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; -pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; -pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; -pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; -pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; -pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; -pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; -pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; -pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; -pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; -pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; -pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; -pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; -pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; -pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +IFLA_BR_MCAST_QUERIER_INTVL = 32, +IFLA_BR_MCAST_QUERY_INTVL = 33, +IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, +IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, +IFLA_BR_NF_CALL_IPTABLES = 36, +IFLA_BR_NF_CALL_IP6TABLES = 37, +IFLA_BR_NF_CALL_ARPTABLES = 38, +IFLA_BR_VLAN_DEFAULT_PVID = 39, +IFLA_BR_PAD = 40, +IFLA_BR_VLAN_STATS_ENABLED = 41, +IFLA_BR_MCAST_STATS_ENABLED = 42, +IFLA_BR_MCAST_IGMP_VERSION = 43, +IFLA_BR_MCAST_MLD_VERSION = 44, +IFLA_BR_VLAN_STATS_PER_PORT = 45, +IFLA_BR_MULTI_BOOLOPT = 46, +IFLA_BR_MCAST_QUERIER_STATE = 47, +__IFLA_BR_MAX = 48, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +BRIDGE_MODE_UNSPEC = 0, +BRIDGE_MODE_HAIRPIN = 1, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -951,21 +1780,6 @@ IFLA_BRPORT_MCAST_MAX_GROUPS = 42, __IFLA_BRPORT_MAX = 43, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_cacheinfo { -pub max_reasm_len: __u32, -pub tstamp: __u32, -pub reachable_time: __u32, -pub retrans_time: __u32, -} -pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; -pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; -pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; -pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; -pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; -pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; -pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -978,13 +1792,6 @@ IFLA_INFO_SLAVE_DATA = 5, __IFLA_INFO_MAX = 6, } -pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; -pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; -pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; -pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; -pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; -pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; -pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -997,15 +1804,6 @@ IFLA_VLAN_PROTOCOL = 5, __IFLA_VLAN_MAX = 6, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; -pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; -pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1014,22 +1812,6 @@ IFLA_VLAN_QOS_MAPPING = 1, __IFLA_VLAN_QOS_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_qos_mapping { -pub from: __u32, -pub to: __u32, -} -pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; -pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; -pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; -pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; -pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; -pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; -pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; -pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; -pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; -pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1064,9 +1846,6 @@ MACVLAN_MACADDR_FLUSH = 2, MACVLAN_MACADDR_SET = 3, } -pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; -pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; -pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1075,9 +1854,6 @@ IFLA_VRF_TABLE = 1, __IFLA_VRF_MAX = 2, } -pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; -pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; -pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1086,23 +1862,6 @@ IFLA_VRF_PORT_TABLE = 1, __IFLA_VRF_PORT_MAX = 2, } -pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; -pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; -pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; -pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; -pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; -pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; -pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; -pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; -pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; -pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; -pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; -pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; -pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; -pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; -pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; -pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; -pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1125,11 +1884,6 @@ IFLA_MACSEC_OFFLOAD = 15, __IFLA_MACSEC_MAX = 16, } -pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; -pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; -pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; -pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; -pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1140,9 +1894,6 @@ IFLA_XFRM_COLLECT_METADATA = 3, __IFLA_XFRM_MAX = 4, } -impl macsec_validation_type { -pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1152,9 +1903,6 @@ MACSEC_VALIDATE_STRICT = 2, __MACSEC_VALIDATE_END = 3, } -impl macsec_offload { -pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1164,10 +1912,6 @@ MACSEC_OFFLOAD_MAC = 2, __MACSEC_OFFLOAD_END = 3, } -pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; -pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; -pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; -pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1186,25 +1930,6 @@ IPVLAN_MODE_L3S = 2, IPVLAN_MODE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tunnel_msg { -pub family: __u8, -pub flags: __u8, -pub reserved2: __u16, -pub ifindex: __u32, -} -pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; -pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; -pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; -pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; -pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; -pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; -pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; -pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; -pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1221,13 +1946,6 @@ VNIFILTER_ENTRY_STATS_PAD = 9, __VNIFILTER_ENTRY_STATS_MAX = 10, } -pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; -pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; -pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; -pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; -pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; -pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1240,9 +1958,6 @@ VXLAN_VNIFILTER_ENTRY_STATS = 5, __VXLAN_VNIFILTER_ENTRY_MAX = 6, } -pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; -pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1251,38 +1966,6 @@ VXLAN_VNIFILTER_ENTRY = 1, __VXLAN_VNIFILTER_MAX = 2, } -pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; -pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; -pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; -pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; -pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; -pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; -pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; -pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; -pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; -pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; -pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; -pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; -pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; -pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; -pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; -pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; -pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; -pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; -pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; -pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; -pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; -pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; -pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; -pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; -pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; -pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; -pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; -pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; -pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; -pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1320,15 +2003,6 @@ IFLA_VXLAN_VNIFILTER = 30, __IFLA_VXLAN_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vxlan_port_range { -pub low: __be16, -pub high: __be16, -} -impl ifla_vxlan_df { -pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1338,22 +2012,6 @@ VXLAN_DF_INHERIT = 2, __VXLAN_DF_END = 3, } -pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; -pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; -pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; -pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; -pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; -pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; -pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; -pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; -pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; -pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; -pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; -pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; -pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; -pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1375,9 +2033,6 @@ IFLA_GENEVE_INNER_PROTO_INHERIT = 14, __IFLA_GENEVE_MAX = 15, } -impl ifla_geneve_df { -pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1387,12 +2042,6 @@ GENEVE_DF_INHERIT = 2, __GENEVE_DF_END = 3, } -pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; -pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; -pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; -pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; -pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; -pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1404,9 +2053,6 @@ IFLA_BAREUDP_MULTIPROTO_MODE = 4, __IFLA_BAREUDP_MAX = 5, } -pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; -pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; -pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1422,60 +2068,19 @@ GTP_ROLE_GGSN = 0, GTP_ROLE_SGSN = 1, } -pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; -pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; -pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; -pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; -pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; -pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; -pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; -pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub enum _bindgen_ty_25 { IFLA_GTP_UNSPEC = 0, IFLA_GTP_FD0 = 1, -IFLA_GTP_FD1 = 2, -IFLA_GTP_PDP_HASHSIZE = 3, -IFLA_GTP_ROLE = 4, -IFLA_GTP_CREATE_SOCKETS = 5, -IFLA_GTP_RESTART_COUNT = 6, -__IFLA_GTP_MAX = 7, -} -pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; -pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; -pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; -pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; -pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; -pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; -pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; -pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; -pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; -pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; -pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; -pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; -pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; -pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; -pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; -pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; -pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; -pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; -pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; -pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; -pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; -pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; -pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; -pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; -pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; -pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; -pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; -pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; -pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; -pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; -pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; -pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; -pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +IFLA_GTP_FD1 = 2, +IFLA_GTP_PDP_HASHSIZE = 3, +IFLA_GTP_ROLE = 4, +IFLA_GTP_CREATE_SOCKETS = 5, +IFLA_GTP_RESTART_COUNT = 6, +__IFLA_GTP_MAX = 7, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1514,13 +2119,6 @@ IFLA_BOND_NS_IP6_TARGET = 31, __IFLA_BOND_MAX = 32, } -pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; -pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; -pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; -pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; -pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1533,17 +2131,6 @@ IFLA_BOND_AD_INFO_PARTNER_MAC = 5, __IFLA_BOND_AD_INFO_MAX = 6, } -pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; -pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; -pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; -pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; -pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; -pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; -pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; -pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; -pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1560,9 +2147,6 @@ IFLA_BOND_SLAVE_PRIO = 9, __IFLA_BOND_SLAVE_MAX = 10, } -pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; -pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; -pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1571,21 +2155,6 @@ IFLA_VF_INFO = 1, __IFLA_VF_INFO_MAX = 2, } -pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; -pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; -pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; -pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; -pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; -pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; -pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; -pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; -pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; -pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; -pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; -pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; -pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; -pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; -pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1606,27 +2175,6 @@ IFLA_VF_BROADCAST = 13, __IFLA_VF_MAX = 14, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_mac { -pub vf: __u32, -pub mac: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_broadcast { -pub broadcast: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -} -pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; -pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; -pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1635,43 +2183,6 @@ IFLA_VF_VLAN_INFO = 1, __IFLA_VF_VLAN_INFO_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan_info { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -pub vlan_proto: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_tx_rate { -pub vf: __u32, -pub rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rate { -pub vf: __u32, -pub min_tx_rate: __u32, -pub max_tx_rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_spoofchk { -pub vf: __u32, -pub setting: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_guid { -pub vf: __u32, -pub guid: __u64, -} -pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; -pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; -pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; -pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1681,28 +2192,6 @@ IFLA_VF_LINK_STATE_DISABLE = 2, __IFLA_VF_LINK_STATE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_link_state { -pub vf: __u32, -pub link_state: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rss_query_en { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; -pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; -pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; -pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; -pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; -pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; -pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; -pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; -pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; -pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1718,15 +2207,6 @@ IFLA_VF_STATS_TX_DROPPED = 8, __IFLA_VF_STATS_MAX = 9, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_trust { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; -pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; -pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1735,15 +2215,6 @@ IFLA_VF_PORT = 1, __IFLA_VF_PORT_MAX = 2, } -pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; -pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; -pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; -pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; -pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; -pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; -pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; -pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; -pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1758,10 +2229,6 @@ IFLA_PORT_RESPONSE = 7, __IFLA_PORT_MAX = 8, } -pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; -pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; -pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; -pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1771,19 +2238,6 @@ PORT_REQUEST_ASSOCIATE = 2, PORT_REQUEST_DISASSOCIATE = 3, } -pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; -pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; -pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; -pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; -pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; -pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; -pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; -pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; -pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; -pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; -pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1802,19 +2256,6 @@ PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, PORT_PROFILE_RESPONSE_ERROR = 261, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_port_vsi { -pub vsi_mgr_id: __u8, -pub vsi_type_id: [__u8; 3usize], -pub vsi_type_version: __u8, -pub pad: [__u8; 3usize], -} -pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; -pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; -pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; -pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; -pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1825,8 +2266,6 @@ IFLA_IPOIB_UMCAST = 3, __IFLA_IPOIB_MAX = 4, } -pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; -pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1834,9 +2273,6 @@ IPOIB_MODE_DATAGRAM = 0, IPOIB_MODE_CONNECTED = 1, } -pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; -pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; -pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1845,15 +2281,6 @@ HSR_PROTOCOL_PRP = 1, HSR_PROTOCOL_MAX = 2, } -pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; -pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; -pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; -pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; -pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; -pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; -pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; -pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; -pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1868,22 +2295,6 @@ IFLA_HSR_PROTOCOL = 7, __IFLA_HSR_MAX = 8, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_stats_msg { -pub family: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub ifindex: __u32, -pub filter_mask: __u32, -} -pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; -pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; -pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; -pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; -pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; -pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; -pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1896,10 +2307,6 @@ IFLA_STATS_AF_SPEC = 5, __IFLA_STATS_MAX = 6, } -pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; -pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; -pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1909,10 +2316,6 @@ IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, __IFLA_STATS_GETSET_MAX = 3, } -pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; -pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; -pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; -pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1922,11 +2325,6 @@ LINK_XSTATS_TYPE_BOND = 2, __LINK_XSTATS_TYPE_MAX = 3, } -pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; -pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1937,10 +2335,6 @@ IFLA_OFFLOAD_XSTATS_L3_STATS = 3, __IFLA_OFFLOAD_XSTATS_MAX = 4, } -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; -pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1950,11 +2344,6 @@ IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, } -pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; -pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; -pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; -pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; -pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1965,16 +2354,6 @@ XDP_ATTACHED_HW = 3, XDP_ATTACHED_MULTI = 4, } -pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; -pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; -pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; -pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; -pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; -pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; -pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; -pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; -pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; -pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1990,13 +2369,6 @@ IFLA_XDP_EXPECTED_FD = 8, __IFLA_XDP_MAX = 9, } -pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; -pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; -pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; -pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; -pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; -pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; -pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2009,17 +2381,6 @@ IFLA_EVENT_IGMP_RESEND = 5, IFLA_EVENT_BONDING_OPTIONS = 6, } -pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; -pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; -pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; -pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; -pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; -pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; -pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; -pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; -pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; -pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; -pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2035,11 +2396,7 @@ IFLA_TUN_NUM_QUEUES = 8, IFLA_TUN_NUM_DISABLED_QUEUES = 9, __IFLA_TUN_MAX = 10, -} -pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; -pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; -pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; -pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2049,15 +2406,6 @@ IFLA_RMNET_FLAGS = 2, __IFLA_RMNET_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_rmnet_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; -pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; -pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2066,9 +2414,6 @@ IFLA_MCTP_NET = 1, __IFLA_MCTP_MAX = 2, } -pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; -pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; -pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2077,28 +2422,6 @@ IFLA_DSA_MASTER = 1, __IFLA_DSA_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifaddrmsg { -pub ifa_family: __u8, -pub ifa_prefixlen: __u8, -pub ifa_flags: __u8, -pub ifa_scope: __u8, -pub ifa_index: __u32, -} -pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; -pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; -pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; -pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; -pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; -pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; -pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; -pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; -pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; -pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; -pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; -pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; -pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2117,44 +2440,6 @@ IFA_PROTO = 11, __IFA_MAX = 12, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifa_cacheinfo { -pub ifa_prefered: __u32, -pub ifa_valid: __u32, -pub cstamp: __u32, -pub tstamp: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndmsg { -pub ndm_family: __u8, -pub ndm_pad1: __u8, -pub ndm_pad2: __u16, -pub ndm_ifindex: __s32, -pub ndm_state: __u16, -pub ndm_flags: __u8, -pub ndm_type: __u8, -} -pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; -pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; -pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; -pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; -pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; -pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; -pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; -pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; -pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; -pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; -pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; -pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; -pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; -pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; -pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; -pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; -pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; -pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; -pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2179,50 +2464,6 @@ NDA_NDM_FLAGS_MASK = 17, __NDA_MAX = 18, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nda_cacheinfo { -pub ndm_confirmed: __u32, -pub ndm_used: __u32, -pub ndm_updated: __u32, -pub ndm_refcnt: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_stats { -pub ndts_allocs: __u64, -pub ndts_destroys: __u64, -pub ndts_hash_grows: __u64, -pub ndts_res_failed: __u64, -pub ndts_lookups: __u64, -pub ndts_hits: __u64, -pub ndts_rcv_probes_mcast: __u64, -pub ndts_rcv_probes_ucast: __u64, -pub ndts_periodic_gc_runs: __u64, -pub ndts_forced_gc_runs: __u64, -pub ndts_table_fulls: __u64, -} -pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; -pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; -pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; -pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; -pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; -pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; -pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; -pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; -pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; -pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; -pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; -pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; -pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; -pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; -pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; -pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; -pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; -pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; -pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; -pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; -pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2249,37 +2490,6 @@ NDTPA_INTERVAL_PROBE_TIME_MS = 19, __NDTPA_MAX = 20, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndtmsg { -pub ndtm_family: __u8, -pub ndtm_pad1: __u8, -pub ndtm_pad2: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_config { -pub ndtc_key_len: __u16, -pub ndtc_entry_size: __u16, -pub ndtc_entries: __u32, -pub ndtc_last_flush: __u32, -pub ndtc_last_rand: __u32, -pub ndtc_hash_rnd: __u32, -pub ndtc_hash_mask: __u32, -pub ndtc_hash_chain_gc: __u32, -pub ndtc_proxy_qlen: __u32, -} -pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; -pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; -pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; -pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; -pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; -pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; -pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; -pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; -pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; -pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; -pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2296,8 +2506,6 @@ NDTA_PAD = 9, __NDTA_MAX = 10, } -pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; -pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2305,10 +2513,6 @@ FDB_NOTIFY_BIT = 1, FDB_NOTIFY_INACTIVE_BIT = 2, } -pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; -pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; -pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; -pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2318,79 +2522,6 @@ NFEA_DONT_REFRESH = 2, __NFEA_MAX = 3, } -pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; -pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; -pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; -pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; -pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; -pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; -pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; -pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; -pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; -pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; -pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; -pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; -pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; -pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; -pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; -pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; -pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; -pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; -pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; -pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; -pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; -pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; -pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; -pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; -pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; -pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; -pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; -pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; -pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; -pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; -pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; -pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; -pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; -pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; -pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; -pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; -pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; -pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; -pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; -pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; -pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; -pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; -pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; -pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; -pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; -pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; -pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; -pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; -pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; -pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; -pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; -pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; -pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; -pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; -pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; -pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; -pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; -pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; -pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; -pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; -pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; -pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; -pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; -pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; -pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; -pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; -pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; -pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; -pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; -pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; -pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2457,49 +2588,17 @@ RTM_NEWLINKPROP = 108, RTM_DELLINKPROP = 109, RTM_GETLINKPROP = 110, -RTM_NEWVLAN = 112, -RTM_DELVLAN = 113, -RTM_GETVLAN = 114, -RTM_NEWNEXTHOPBUCKET = 116, -RTM_DELNEXTHOPBUCKET = 117, -RTM_GETNEXTHOPBUCKET = 118, -RTM_NEWTUNNEL = 120, -RTM_DELTUNNEL = 121, -RTM_GETTUNNEL = 122, -__RTM_MAX = 123, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtattr { -pub rta_len: crate::ctypes::c_ushort, -pub rta_type: crate::ctypes::c_ushort, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtmsg { -pub rtm_family: crate::ctypes::c_uchar, -pub rtm_dst_len: crate::ctypes::c_uchar, -pub rtm_src_len: crate::ctypes::c_uchar, -pub rtm_tos: crate::ctypes::c_uchar, -pub rtm_table: crate::ctypes::c_uchar, -pub rtm_protocol: crate::ctypes::c_uchar, -pub rtm_scope: crate::ctypes::c_uchar, -pub rtm_type: crate::ctypes::c_uchar, -pub rtm_flags: crate::ctypes::c_uint, +RTM_NEWVLAN = 112, +RTM_DELVLAN = 113, +RTM_GETVLAN = 114, +RTM_NEWNEXTHOPBUCKET = 116, +RTM_DELNEXTHOPBUCKET = 117, +RTM_GETNEXTHOPBUCKET = 118, +RTM_NEWTUNNEL = 120, +RTM_DELTUNNEL = 121, +RTM_GETTUNNEL = 122, +__RTM_MAX = 123, } -pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; -pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; -pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; -pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; -pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; -pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; -pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; -pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; -pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; -pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; -pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; -pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; -pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2576,51 +2675,6 @@ RTA_NH_ID = 30, __RTA_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnexthop { -pub rtnh_len: crate::ctypes::c_ushort, -pub rtnh_flags: crate::ctypes::c_uchar, -pub rtnh_hops: crate::ctypes::c_uchar, -pub rtnh_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug)] -pub struct rtvia { -pub rtvia_family: __kernel_sa_family_t, -pub rtvia_addr: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_cacheinfo { -pub rta_clntref: __u32, -pub rta_lastuse: __u32, -pub rta_expires: __s32, -pub rta_error: __u32, -pub rta_used: __u32, -pub rta_id: __u32, -pub rta_ts: __u32, -pub rta_tsage: __u32, -} -pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; -pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; -pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; -pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; -pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; -pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; -pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; -pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; -pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; -pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; -pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; -pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; -pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; -pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; -pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; -pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; -pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; -pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; -pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2645,72 +2699,6 @@ RTAX_FASTOPEN_NO_COOKIE = 17, __RTAX_MAX = 18, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rta_session { -pub proto: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub u: rta_session__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union rta_session__bindgen_ty_1 { -pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, -pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, -pub spi: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { -pub sport: __u16, -pub dport: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { -pub type_: __u8, -pub code: __u8, -pub ident: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_mfc_stats { -pub mfcs_packets: __u64, -pub mfcs_bytes: __u64, -pub mfcs_wrong_if: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtgenmsg { -pub rtgen_family: crate::ctypes::c_uchar, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifinfomsg { -pub ifi_family: crate::ctypes::c_uchar, -pub __ifi_pad: crate::ctypes::c_uchar, -pub ifi_type: crate::ctypes::c_ushort, -pub ifi_index: crate::ctypes::c_int, -pub ifi_flags: crate::ctypes::c_uint, -pub ifi_change: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefixmsg { -pub prefix_family: crate::ctypes::c_uchar, -pub prefix_pad1: crate::ctypes::c_uchar, -pub prefix_pad2: crate::ctypes::c_ushort, -pub prefix_ifindex: crate::ctypes::c_int, -pub prefix_type: crate::ctypes::c_uchar, -pub prefix_len: crate::ctypes::c_uchar, -pub prefix_flags: crate::ctypes::c_uchar, -pub prefix_pad3: crate::ctypes::c_uchar, -} -pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; -pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; -pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; -pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2720,41 +2708,6 @@ PREFIX_CACHEINFO = 2, __PREFIX_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefix_cacheinfo { -pub preferred_time: __u32, -pub valid_time: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcmsg { -pub tcm_family: crate::ctypes::c_uchar, -pub tcm__pad1: crate::ctypes::c_uchar, -pub tcm__pad2: crate::ctypes::c_ushort, -pub tcm_ifindex: crate::ctypes::c_int, -pub tcm_handle: __u32, -pub tcm_parent: __u32, -pub tcm_info: __u32, -} -pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; -pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; -pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; -pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; -pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; -pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; -pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; -pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; -pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; -pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; -pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; -pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; -pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; -pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; -pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; -pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; -pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; -pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2778,21 +2731,6 @@ TCA_EXT_WARN_MSG = 16, __TCA_MAX = 17, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nduseroptmsg { -pub nduseropt_family: crate::ctypes::c_uchar, -pub nduseropt_pad1: crate::ctypes::c_uchar, -pub nduseropt_opts_len: crate::ctypes::c_ushort, -pub nduseropt_ifindex: crate::ctypes::c_int, -pub nduseropt_icmp_type: __u8, -pub nduseropt_icmp_code: __u8, -pub nduseropt_pad2: crate::ctypes::c_ushort, -pub nduseropt_pad3: crate::ctypes::c_uint, -} -pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; -pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; -pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2844,20 +2782,6 @@ RTNLGRP_STATS = 36, __RTNLGRP_MAX = 37, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcamsg { -pub tca_family: crate::ctypes::c_uchar, -pub tca__pad1: crate::ctypes::c_uchar, -pub tca__pad2: crate::ctypes::c_ushort, -} -pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; -pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; -pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; -pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; -pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; -pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; -pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2870,3 +2794,61 @@ TCA_ROOT_EXT_WARN_MSG = 5, __TCA_ROOT_MAX = 6, } +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union rta_session__bindgen_ty_1 { +pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, +pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, +pub spi: __u32, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl nlmsgerr_attrs { +pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +} +impl netlink_policy_type_attr { +pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; +} +impl macsec_validation_type { +pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; +} +impl macsec_offload { +pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; +} +impl ifla_vxlan_df { +pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; +} +impl ifla_geneve_df { +pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/net.rs temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/net.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/net.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/net.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1844 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type socklen_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_addr { +pub s_addr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq { +pub imr_multiaddr: in_addr, +pub imr_interface: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreqn { +pub imr_multiaddr: in_addr, +pub imr_address: in_addr, +pub imr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq_source { +pub imr_multiaddr: __be32, +pub imr_interface: __be32, +pub imr_sourceaddr: __be32, +} +#[repr(C)] +pub struct ip_msfilter { +pub imsf_multiaddr: __be32, +pub imsf_interface: __be32, +pub imsf_fmode: __u32, +pub imsf_numsrc: __u32, +pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, +} +#[repr(C)] +pub struct ip_msfilter__bindgen_ty_1 { +pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, +pub __bindgen_anon_1: __BindgenUnionField, +pub bindgen_union_field: u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { +pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub imsf_slist_flex: __IncompleteArrayField<__be32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_req { +pub gr_interface: __u32, +pub gr_group: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_source_req { +pub gsr_interface: __u32, +pub gsr_group: __kernel_sockaddr_storage, +pub gsr_source: __kernel_sockaddr_storage, +} +#[repr(C)] +pub struct group_filter { +pub __bindgen_anon_1: group_filter__bindgen_ty_1, +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 34usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { +pub gf_interface_aux: __u32, +pub gf_group_aux: __kernel_sockaddr_storage, +pub gf_fmode_aux: __u32, +pub gf_numsrc_aux: __u32, +pub gf_slist: [__kernel_sockaddr_storage; 1usize], +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { +pub gf_interface: __u32, +pub gf_group: __kernel_sockaddr_storage, +pub gf_fmode: __u32, +pub gf_numsrc: __u32, +pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_pktinfo { +pub ipi_ifindex: crate::ctypes::c_int, +pub ipi_spec_dst: in_addr, +pub ipi_addr: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_in { +pub sin_family: __kernel_sa_family_t, +pub sin_port: __be16, +pub sin_addr: in_addr, +pub __pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct iphdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub tos: __u8, +pub tot_len: __be16, +pub id: __be16, +pub frag_off: __be16, +pub ttl: __u8, +pub protocol: __u8, +pub check: __sum16, +pub __bindgen_anon_1: iphdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_auth_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub reserved: __be16, +pub spi: __be32, +pub seq_no: __be32, +pub auth_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_esp_hdr { +pub spi: __be32, +pub seq_no: __be32, +pub enc_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_comp_hdr { +pub nexthdr: __u8, +pub flags: __u8, +pub cpi: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_beet_phdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub padlen: __u8, +pub reserved: __u8, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_addr { +pub in6_u: in6_addr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr_in6 { +pub sin6_family: crate::ctypes::c_ushort, +pub sin6_port: __be16, +pub sin6_flowinfo: __be32, +pub sin6_addr: in6_addr, +pub sin6_scope_id: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6_mreq { +pub ipv6mr_multiaddr: in6_addr, +pub ipv6mr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_flowlabel_req { +pub flr_dst: in6_addr, +pub flr_label: __be32, +pub flr_action: __u8, +pub flr_share: __u8, +pub flr_flags: __u16, +pub flr_expires: __u16, +pub flr_linger: __u16, +pub __flr_pad: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_pktinfo { +pub ipi6_addr: in6_addr, +pub ipi6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ip6_mtuinfo { +pub ip6m_addr: sockaddr_in6, +pub ip6m_mtu: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_ifreq { +pub ifr6_addr: in6_addr, +pub ifr6_prefixlen: __u32, +pub ifr6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_rt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub type_: __u8, +pub segments_left: __u8, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_opt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +} +#[repr(C)] +pub struct rt0_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rt2_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: in6_addr, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct ipv6_destopt_hao { +pub type_: __u8, +pub length: __u8, +pub addr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub flow_lbl: [__u8; 3usize], +pub payload_len: __be16, +pub nexthdr: __u8, +pub hop_limit: __u8, +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcphdr { +pub source: __be16, +pub dest: __be16, +pub seq: __be32, +pub ack_seq: __be32, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub window: __be16, +pub check: __sum16, +pub urg_ptr: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_opt { +pub opt_code: __u32, +pub opt_val: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_window { +pub snd_wl1: __u32, +pub snd_wnd: __u32, +pub max_window: __u32, +pub rcv_wnd: __u32, +pub rcv_wup: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_info { +pub tcpi_state: __u8, +pub tcpi_ca_state: __u8, +pub tcpi_retransmits: __u8, +pub tcpi_probes: __u8, +pub tcpi_backoff: __u8, +pub tcpi_options: __u8, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub tcpi_rto: __u32, +pub tcpi_ato: __u32, +pub tcpi_snd_mss: __u32, +pub tcpi_rcv_mss: __u32, +pub tcpi_unacked: __u32, +pub tcpi_sacked: __u32, +pub tcpi_lost: __u32, +pub tcpi_retrans: __u32, +pub tcpi_fackets: __u32, +pub tcpi_last_data_sent: __u32, +pub tcpi_last_ack_sent: __u32, +pub tcpi_last_data_recv: __u32, +pub tcpi_last_ack_recv: __u32, +pub tcpi_pmtu: __u32, +pub tcpi_rcv_ssthresh: __u32, +pub tcpi_rtt: __u32, +pub tcpi_rttvar: __u32, +pub tcpi_snd_ssthresh: __u32, +pub tcpi_snd_cwnd: __u32, +pub tcpi_advmss: __u32, +pub tcpi_reordering: __u32, +pub tcpi_rcv_rtt: __u32, +pub tcpi_rcv_space: __u32, +pub tcpi_total_retrans: __u32, +pub tcpi_pacing_rate: __u64, +pub tcpi_max_pacing_rate: __u64, +pub tcpi_bytes_acked: __u64, +pub tcpi_bytes_received: __u64, +pub tcpi_segs_out: __u32, +pub tcpi_segs_in: __u32, +pub tcpi_notsent_bytes: __u32, +pub tcpi_min_rtt: __u32, +pub tcpi_data_segs_in: __u32, +pub tcpi_data_segs_out: __u32, +pub tcpi_delivery_rate: __u64, +pub tcpi_busy_time: __u64, +pub tcpi_rwnd_limited: __u64, +pub tcpi_sndbuf_limited: __u64, +pub tcpi_delivered: __u32, +pub tcpi_delivered_ce: __u32, +pub tcpi_bytes_sent: __u64, +pub tcpi_bytes_retrans: __u64, +pub tcpi_dsack_dups: __u32, +pub tcpi_reord_seen: __u32, +pub tcpi_rcv_ooopack: __u32, +pub tcpi_snd_wnd: __u32, +pub tcpi_rcv_wnd: __u32, +pub tcpi_rehash: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct tcp_md5sig { +pub tcpm_addr: __kernel_sockaddr_storage, +pub tcpm_flags: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_ifindex: crate::ctypes::c_int, +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_diag_md5sig { +pub tcpm_family: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_addr: [__be32; 4usize], +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_zerocopy_receive { +pub address: __u64, +pub length: __u32, +pub recv_skip_hint: __u32, +pub inq: __u32, +pub err: __s32, +pub copybuf_address: __u64, +pub copybuf_len: __s32, +pub flags: __u32, +pub msg_control: __u64, +pub msg_controllen: __u64, +pub msg_flags: __u32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_un { +pub sun_family: __kernel_sa_family_t, +pub sun_path: [crate::ctypes::c_char; 108usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr { +pub __storage: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct linger { +pub l_onoff: crate::ctypes::c_int, +pub l_linger: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct msghdr { +pub msg_name: *mut crate::ctypes::c_void, +pub msg_namelen: crate::ctypes::c_int, +pub msg_iov: *mut iovec, +pub msg_iovlen: usize, +pub msg_control: *mut crate::ctypes::c_void, +pub msg_controllen: usize, +pub msg_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct cmsghdr { +pub cmsg_len: usize, +pub cmsg_level: crate::ctypes::c_int, +pub cmsg_type: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ucred { +pub pid: __u32, +pub uid: __u32, +pub gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mmsghdr { +pub msg_hdr: msghdr, +pub msg_len: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub _address: u8, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const IP_TOS: u32 = 1; +pub const IP_TTL: u32 = 2; +pub const IP_HDRINCL: u32 = 3; +pub const IP_OPTIONS: u32 = 4; +pub const IP_ROUTER_ALERT: u32 = 5; +pub const IP_RECVOPTS: u32 = 6; +pub const IP_RETOPTS: u32 = 7; +pub const IP_PKTINFO: u32 = 8; +pub const IP_PKTOPTIONS: u32 = 9; +pub const IP_MTU_DISCOVER: u32 = 10; +pub const IP_RECVERR: u32 = 11; +pub const IP_RECVTTL: u32 = 12; +pub const IP_RECVTOS: u32 = 13; +pub const IP_MTU: u32 = 14; +pub const IP_FREEBIND: u32 = 15; +pub const IP_IPSEC_POLICY: u32 = 16; +pub const IP_XFRM_POLICY: u32 = 17; +pub const IP_PASSSEC: u32 = 18; +pub const IP_TRANSPARENT: u32 = 19; +pub const IP_RECVRETOPTS: u32 = 7; +pub const IP_ORIGDSTADDR: u32 = 20; +pub const IP_RECVORIGDSTADDR: u32 = 20; +pub const IP_MINTTL: u32 = 21; +pub const IP_NODEFRAG: u32 = 22; +pub const IP_CHECKSUM: u32 = 23; +pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; +pub const IP_RECVFRAGSIZE: u32 = 25; +pub const IP_RECVERR_RFC4884: u32 = 26; +pub const IP_PMTUDISC_DONT: u32 = 0; +pub const IP_PMTUDISC_WANT: u32 = 1; +pub const IP_PMTUDISC_DO: u32 = 2; +pub const IP_PMTUDISC_PROBE: u32 = 3; +pub const IP_PMTUDISC_INTERFACE: u32 = 4; +pub const IP_PMTUDISC_OMIT: u32 = 5; +pub const IP_MULTICAST_IF: u32 = 32; +pub const IP_MULTICAST_TTL: u32 = 33; +pub const IP_MULTICAST_LOOP: u32 = 34; +pub const IP_ADD_MEMBERSHIP: u32 = 35; +pub const IP_DROP_MEMBERSHIP: u32 = 36; +pub const IP_UNBLOCK_SOURCE: u32 = 37; +pub const IP_BLOCK_SOURCE: u32 = 38; +pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; +pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; +pub const IP_MSFILTER: u32 = 41; +pub const MCAST_JOIN_GROUP: u32 = 42; +pub const MCAST_BLOCK_SOURCE: u32 = 43; +pub const MCAST_UNBLOCK_SOURCE: u32 = 44; +pub const MCAST_LEAVE_GROUP: u32 = 45; +pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; +pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; +pub const MCAST_MSFILTER: u32 = 48; +pub const IP_MULTICAST_ALL: u32 = 49; +pub const IP_UNICAST_IF: u32 = 50; +pub const IP_LOCAL_PORT_RANGE: u32 = 51; +pub const MCAST_EXCLUDE: u32 = 0; +pub const MCAST_INCLUDE: u32 = 1; +pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; +pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; +pub const __SOCK_SIZE__: u32 = 16; +pub const IN_CLASSA_NET: u32 = 4278190080; +pub const IN_CLASSA_NSHIFT: u32 = 24; +pub const IN_CLASSA_HOST: u32 = 16777215; +pub const IN_CLASSA_MAX: u32 = 128; +pub const IN_CLASSB_NET: u32 = 4294901760; +pub const IN_CLASSB_NSHIFT: u32 = 16; +pub const IN_CLASSB_HOST: u32 = 65535; +pub const IN_CLASSB_MAX: u32 = 65536; +pub const IN_CLASSC_NET: u32 = 4294967040; +pub const IN_CLASSC_NSHIFT: u32 = 8; +pub const IN_CLASSC_HOST: u32 = 255; +pub const IN_MULTICAST_NET: u32 = 3758096384; +pub const IN_CLASSE_NET: u32 = 4294967295; +pub const IN_CLASSE_NSHIFT: u32 = 0; +pub const IN_LOOPBACKNET: u32 = 127; +pub const INADDR_LOOPBACK: u32 = 2130706433; +pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; +pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; +pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; +pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; +pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; +pub const __LITTLE_ENDIAN: u32 = 1234; +pub const IPTOS_TOS_MASK: u32 = 30; +pub const IPTOS_LOWDELAY: u32 = 16; +pub const IPTOS_THROUGHPUT: u32 = 8; +pub const IPTOS_RELIABILITY: u32 = 4; +pub const IPTOS_MINCOST: u32 = 2; +pub const IPTOS_PREC_MASK: u32 = 224; +pub const IPTOS_PREC_NETCONTROL: u32 = 224; +pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; +pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; +pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; +pub const IPTOS_PREC_FLASH: u32 = 96; +pub const IPTOS_PREC_IMMEDIATE: u32 = 64; +pub const IPTOS_PREC_PRIORITY: u32 = 32; +pub const IPTOS_PREC_ROUTINE: u32 = 0; +pub const IPOPT_COPY: u32 = 128; +pub const IPOPT_CLASS_MASK: u32 = 96; +pub const IPOPT_NUMBER_MASK: u32 = 31; +pub const IPOPT_CONTROL: u32 = 0; +pub const IPOPT_RESERVED1: u32 = 32; +pub const IPOPT_MEASUREMENT: u32 = 64; +pub const IPOPT_RESERVED2: u32 = 96; +pub const IPOPT_END: u32 = 0; +pub const IPOPT_NOOP: u32 = 1; +pub const IPOPT_SEC: u32 = 130; +pub const IPOPT_LSRR: u32 = 131; +pub const IPOPT_TIMESTAMP: u32 = 68; +pub const IPOPT_CIPSO: u32 = 134; +pub const IPOPT_RR: u32 = 7; +pub const IPOPT_SID: u32 = 136; +pub const IPOPT_SSRR: u32 = 137; +pub const IPOPT_RA: u32 = 148; +pub const IPVERSION: u32 = 4; +pub const MAXTTL: u32 = 255; +pub const IPDEFTTL: u32 = 64; +pub const IPOPT_OPTVAL: u32 = 0; +pub const IPOPT_OLEN: u32 = 1; +pub const IPOPT_OFFSET: u32 = 2; +pub const IPOPT_MINOFF: u32 = 4; +pub const MAX_IPOPTLEN: u32 = 40; +pub const IPOPT_NOP: u32 = 1; +pub const IPOPT_EOL: u32 = 0; +pub const IPOPT_TS: u32 = 68; +pub const IPOPT_TS_TSONLY: u32 = 0; +pub const IPOPT_TS_TSANDADDR: u32 = 1; +pub const IPOPT_TS_PRESPEC: u32 = 3; +pub const IPV4_BEET_PHMAXLEN: u32 = 8; +pub const IPV6_FL_A_GET: u32 = 0; +pub const IPV6_FL_A_PUT: u32 = 1; +pub const IPV6_FL_A_RENEW: u32 = 2; +pub const IPV6_FL_F_CREATE: u32 = 1; +pub const IPV6_FL_F_EXCL: u32 = 2; +pub const IPV6_FL_F_REFLECT: u32 = 4; +pub const IPV6_FL_F_REMOTE: u32 = 8; +pub const IPV6_FL_S_NONE: u32 = 0; +pub const IPV6_FL_S_EXCL: u32 = 1; +pub const IPV6_FL_S_PROCESS: u32 = 2; +pub const IPV6_FL_S_USER: u32 = 3; +pub const IPV6_FL_S_ANY: u32 = 255; +pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; +pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; +pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; +pub const IPV6_PRIORITY_FILLER: u32 = 256; +pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; +pub const IPV6_PRIORITY_RESERVED1: u32 = 768; +pub const IPV6_PRIORITY_BULK: u32 = 1024; +pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; +pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; +pub const IPV6_PRIORITY_CONTROL: u32 = 1792; +pub const IPV6_PRIORITY_8: u32 = 2048; +pub const IPV6_PRIORITY_9: u32 = 2304; +pub const IPV6_PRIORITY_10: u32 = 2560; +pub const IPV6_PRIORITY_11: u32 = 2816; +pub const IPV6_PRIORITY_12: u32 = 3072; +pub const IPV6_PRIORITY_13: u32 = 3328; +pub const IPV6_PRIORITY_14: u32 = 3584; +pub const IPV6_PRIORITY_15: u32 = 3840; +pub const IPPROTO_HOPOPTS: u32 = 0; +pub const IPPROTO_ROUTING: u32 = 43; +pub const IPPROTO_FRAGMENT: u32 = 44; +pub const IPPROTO_ICMPV6: u32 = 58; +pub const IPPROTO_NONE: u32 = 59; +pub const IPPROTO_DSTOPTS: u32 = 60; +pub const IPPROTO_MH: u32 = 135; +pub const IPV6_TLV_PAD1: u32 = 0; +pub const IPV6_TLV_PADN: u32 = 1; +pub const IPV6_TLV_ROUTERALERT: u32 = 5; +pub const IPV6_TLV_CALIPSO: u32 = 7; +pub const IPV6_TLV_IOAM: u32 = 49; +pub const IPV6_TLV_JUMBO: u32 = 194; +pub const IPV6_TLV_HAO: u32 = 201; +pub const IPV6_ADDRFORM: u32 = 1; +pub const IPV6_2292PKTINFO: u32 = 2; +pub const IPV6_2292HOPOPTS: u32 = 3; +pub const IPV6_2292DSTOPTS: u32 = 4; +pub const IPV6_2292RTHDR: u32 = 5; +pub const IPV6_2292PKTOPTIONS: u32 = 6; +pub const IPV6_CHECKSUM: u32 = 7; +pub const IPV6_2292HOPLIMIT: u32 = 8; +pub const IPV6_NEXTHOP: u32 = 9; +pub const IPV6_AUTHHDR: u32 = 10; +pub const IPV6_FLOWINFO: u32 = 11; +pub const IPV6_UNICAST_HOPS: u32 = 16; +pub const IPV6_MULTICAST_IF: u32 = 17; +pub const IPV6_MULTICAST_HOPS: u32 = 18; +pub const IPV6_MULTICAST_LOOP: u32 = 19; +pub const IPV6_ADD_MEMBERSHIP: u32 = 20; +pub const IPV6_DROP_MEMBERSHIP: u32 = 21; +pub const IPV6_ROUTER_ALERT: u32 = 22; +pub const IPV6_MTU_DISCOVER: u32 = 23; +pub const IPV6_MTU: u32 = 24; +pub const IPV6_RECVERR: u32 = 25; +pub const IPV6_V6ONLY: u32 = 26; +pub const IPV6_JOIN_ANYCAST: u32 = 27; +pub const IPV6_LEAVE_ANYCAST: u32 = 28; +pub const IPV6_MULTICAST_ALL: u32 = 29; +pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; +pub const IPV6_RECVERR_RFC4884: u32 = 31; +pub const IPV6_PMTUDISC_DONT: u32 = 0; +pub const IPV6_PMTUDISC_WANT: u32 = 1; +pub const IPV6_PMTUDISC_DO: u32 = 2; +pub const IPV6_PMTUDISC_PROBE: u32 = 3; +pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; +pub const IPV6_PMTUDISC_OMIT: u32 = 5; +pub const IPV6_FLOWLABEL_MGR: u32 = 32; +pub const IPV6_FLOWINFO_SEND: u32 = 33; +pub const IPV6_IPSEC_POLICY: u32 = 34; +pub const IPV6_XFRM_POLICY: u32 = 35; +pub const IPV6_HDRINCL: u32 = 36; +pub const IPV6_RECVPKTINFO: u32 = 49; +pub const IPV6_PKTINFO: u32 = 50; +pub const IPV6_RECVHOPLIMIT: u32 = 51; +pub const IPV6_HOPLIMIT: u32 = 52; +pub const IPV6_RECVHOPOPTS: u32 = 53; +pub const IPV6_HOPOPTS: u32 = 54; +pub const IPV6_RTHDRDSTOPTS: u32 = 55; +pub const IPV6_RECVRTHDR: u32 = 56; +pub const IPV6_RTHDR: u32 = 57; +pub const IPV6_RECVDSTOPTS: u32 = 58; +pub const IPV6_DSTOPTS: u32 = 59; +pub const IPV6_RECVPATHMTU: u32 = 60; +pub const IPV6_PATHMTU: u32 = 61; +pub const IPV6_DONTFRAG: u32 = 62; +pub const IPV6_RECVTCLASS: u32 = 66; +pub const IPV6_TCLASS: u32 = 67; +pub const IPV6_AUTOFLOWLABEL: u32 = 70; +pub const IPV6_ADDR_PREFERENCES: u32 = 72; +pub const IPV6_PREFER_SRC_TMP: u32 = 1; +pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; +pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; +pub const IPV6_PREFER_SRC_COA: u32 = 4; +pub const IPV6_PREFER_SRC_HOME: u32 = 1024; +pub const IPV6_PREFER_SRC_CGA: u32 = 8; +pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; +pub const IPV6_MINHOPCOUNT: u32 = 73; +pub const IPV6_ORIGDSTADDR: u32 = 74; +pub const IPV6_RECVORIGDSTADDR: u32 = 74; +pub const IPV6_TRANSPARENT: u32 = 75; +pub const IPV6_UNICAST_IF: u32 = 76; +pub const IPV6_RECVFRAGSIZE: u32 = 77; +pub const IPV6_FREEBIND: u32 = 78; +pub const IPV6_MIN_MTU: u32 = 1280; +pub const IPV6_SRCRT_STRICT: u32 = 1; +pub const IPV6_SRCRT_TYPE_0: u32 = 0; +pub const IPV6_SRCRT_TYPE_2: u32 = 2; +pub const IPV6_SRCRT_TYPE_3: u32 = 3; +pub const IPV6_SRCRT_TYPE_4: u32 = 4; +pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; +pub const SIOCGSTAMP_OLD: u32 = 35078; +pub const SIOCGSTAMPNS_OLD: u32 = 35079; +pub const SOL_SOCKET: u32 = 1; +pub const SO_DEBUG: u32 = 1; +pub const SO_REUSEADDR: u32 = 2; +pub const SO_TYPE: u32 = 3; +pub const SO_ERROR: u32 = 4; +pub const SO_DONTROUTE: u32 = 5; +pub const SO_BROADCAST: u32 = 6; +pub const SO_SNDBUF: u32 = 7; +pub const SO_RCVBUF: u32 = 8; +pub const SO_SNDBUFFORCE: u32 = 32; +pub const SO_RCVBUFFORCE: u32 = 33; +pub const SO_KEEPALIVE: u32 = 9; +pub const SO_OOBINLINE: u32 = 10; +pub const SO_NO_CHECK: u32 = 11; +pub const SO_PRIORITY: u32 = 12; +pub const SO_LINGER: u32 = 13; +pub const SO_BSDCOMPAT: u32 = 14; +pub const SO_REUSEPORT: u32 = 15; +pub const SO_PASSCRED: u32 = 16; +pub const SO_PEERCRED: u32 = 17; +pub const SO_RCVLOWAT: u32 = 18; +pub const SO_SNDLOWAT: u32 = 19; +pub const SO_RCVTIMEO_OLD: u32 = 20; +pub const SO_SNDTIMEO_OLD: u32 = 21; +pub const SO_SECURITY_AUTHENTICATION: u32 = 22; +pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; +pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; +pub const SO_BINDTODEVICE: u32 = 25; +pub const SO_ATTACH_FILTER: u32 = 26; +pub const SO_DETACH_FILTER: u32 = 27; +pub const SO_GET_FILTER: u32 = 26; +pub const SO_PEERNAME: u32 = 28; +pub const SO_ACCEPTCONN: u32 = 30; +pub const SO_PEERSEC: u32 = 31; +pub const SO_PASSSEC: u32 = 34; +pub const SO_MARK: u32 = 36; +pub const SO_PROTOCOL: u32 = 38; +pub const SO_DOMAIN: u32 = 39; +pub const SO_RXQ_OVFL: u32 = 40; +pub const SO_WIFI_STATUS: u32 = 41; +pub const SCM_WIFI_STATUS: u32 = 41; +pub const SO_PEEK_OFF: u32 = 42; +pub const SO_NOFCS: u32 = 43; +pub const SO_LOCK_FILTER: u32 = 44; +pub const SO_SELECT_ERR_QUEUE: u32 = 45; +pub const SO_BUSY_POLL: u32 = 46; +pub const SO_MAX_PACING_RATE: u32 = 47; +pub const SO_BPF_EXTENSIONS: u32 = 48; +pub const SO_INCOMING_CPU: u32 = 49; +pub const SO_ATTACH_BPF: u32 = 50; +pub const SO_DETACH_BPF: u32 = 27; +pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; +pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; +pub const SO_CNX_ADVICE: u32 = 53; +pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; +pub const SO_MEMINFO: u32 = 55; +pub const SO_INCOMING_NAPI_ID: u32 = 56; +pub const SO_COOKIE: u32 = 57; +pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; +pub const SO_PEERGROUPS: u32 = 59; +pub const SO_ZEROCOPY: u32 = 60; +pub const SO_TXTIME: u32 = 61; +pub const SCM_TXTIME: u32 = 61; +pub const SO_BINDTOIFINDEX: u32 = 62; +pub const SO_TIMESTAMP_OLD: u32 = 29; +pub const SO_TIMESTAMPNS_OLD: u32 = 35; +pub const SO_TIMESTAMPING_OLD: u32 = 37; +pub const SO_TIMESTAMP_NEW: u32 = 63; +pub const SO_TIMESTAMPNS_NEW: u32 = 64; +pub const SO_TIMESTAMPING_NEW: u32 = 65; +pub const SO_RCVTIMEO_NEW: u32 = 66; +pub const SO_SNDTIMEO_NEW: u32 = 67; +pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; +pub const SO_PREFER_BUSY_POLL: u32 = 69; +pub const SO_BUSY_POLL_BUDGET: u32 = 70; +pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; +pub const SO_TXREHASH: u32 = 74; +pub const SO_RCVMARK: u32 = 75; +pub const SO_TIMESTAMP: u32 = 29; +pub const SO_TIMESTAMPNS: u32 = 35; +pub const SO_TIMESTAMPING: u32 = 37; +pub const SO_RCVTIMEO: u32 = 20; +pub const SO_SNDTIMEO: u32 = 21; +pub const SCM_TIMESTAMP: u32 = 29; +pub const SCM_TIMESTAMPNS: u32 = 35; +pub const SCM_TIMESTAMPING: u32 = 37; +pub const SYS_SOCKET: u32 = 1; +pub const SYS_BIND: u32 = 2; +pub const SYS_CONNECT: u32 = 3; +pub const SYS_LISTEN: u32 = 4; +pub const SYS_ACCEPT: u32 = 5; +pub const SYS_GETSOCKNAME: u32 = 6; +pub const SYS_GETPEERNAME: u32 = 7; +pub const SYS_SOCKETPAIR: u32 = 8; +pub const SYS_SEND: u32 = 9; +pub const SYS_RECV: u32 = 10; +pub const SYS_SENDTO: u32 = 11; +pub const SYS_RECVFROM: u32 = 12; +pub const SYS_SHUTDOWN: u32 = 13; +pub const SYS_SETSOCKOPT: u32 = 14; +pub const SYS_GETSOCKOPT: u32 = 15; +pub const SYS_SENDMSG: u32 = 16; +pub const SYS_RECVMSG: u32 = 17; +pub const SYS_ACCEPT4: u32 = 18; +pub const SYS_RECVMMSG: u32 = 19; +pub const SYS_SENDMMSG: u32 = 20; +pub const __SO_ACCEPTCON: u32 = 65536; +pub const TCP_MSS_DEFAULT: u32 = 536; +pub const TCP_MSS_DESIRED: u32 = 1220; +pub const TCP_NODELAY: u32 = 1; +pub const TCP_MAXSEG: u32 = 2; +pub const TCP_CORK: u32 = 3; +pub const TCP_KEEPIDLE: u32 = 4; +pub const TCP_KEEPINTVL: u32 = 5; +pub const TCP_KEEPCNT: u32 = 6; +pub const TCP_SYNCNT: u32 = 7; +pub const TCP_LINGER2: u32 = 8; +pub const TCP_DEFER_ACCEPT: u32 = 9; +pub const TCP_WINDOW_CLAMP: u32 = 10; +pub const TCP_INFO: u32 = 11; +pub const TCP_QUICKACK: u32 = 12; +pub const TCP_CONGESTION: u32 = 13; +pub const TCP_MD5SIG: u32 = 14; +pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; +pub const TCP_THIN_DUPACK: u32 = 17; +pub const TCP_USER_TIMEOUT: u32 = 18; +pub const TCP_REPAIR: u32 = 19; +pub const TCP_REPAIR_QUEUE: u32 = 20; +pub const TCP_QUEUE_SEQ: u32 = 21; +pub const TCP_REPAIR_OPTIONS: u32 = 22; +pub const TCP_FASTOPEN: u32 = 23; +pub const TCP_TIMESTAMP: u32 = 24; +pub const TCP_NOTSENT_LOWAT: u32 = 25; +pub const TCP_CC_INFO: u32 = 26; +pub const TCP_SAVE_SYN: u32 = 27; +pub const TCP_SAVED_SYN: u32 = 28; +pub const TCP_REPAIR_WINDOW: u32 = 29; +pub const TCP_FASTOPEN_CONNECT: u32 = 30; +pub const TCP_ULP: u32 = 31; +pub const TCP_MD5SIG_EXT: u32 = 32; +pub const TCP_FASTOPEN_KEY: u32 = 33; +pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; +pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; +pub const TCP_INQ: u32 = 36; +pub const TCP_CM_INQ: u32 = 36; +pub const TCP_TX_DELAY: u32 = 37; +pub const TCP_REPAIR_ON: u32 = 1; +pub const TCP_REPAIR_OFF: u32 = 0; +pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; +pub const TCPI_OPT_TIMESTAMPS: u32 = 1; +pub const TCPI_OPT_SACK: u32 = 2; +pub const TCPI_OPT_WSCALE: u32 = 4; +pub const TCPI_OPT_ECN: u32 = 8; +pub const TCPI_OPT_ECN_SEEN: u32 = 16; +pub const TCPI_OPT_SYN_DATA: u32 = 32; +pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; +pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; +pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; +pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; +pub const UNIX_PATH_MAX: u32 = 108; +pub const SHUT_RD: u32 = 0; +pub const SHUT_WR: u32 = 1; +pub const SHUT_RDWR: u32 = 2; +pub const SOCK_STREAM: u32 = 1; +pub const SOCK_DGRAM: u32 = 2; +pub const SOCK_RAW: u32 = 3; +pub const SOCK_RDM: u32 = 4; +pub const SOCK_SEQPACKET: u32 = 5; +pub const MSG_DONTWAIT: u32 = 64; +pub const AF_UNSPEC: u32 = 0; +pub const AF_UNIX: u32 = 1; +pub const AF_INET: u32 = 2; +pub const AF_AX25: u32 = 3; +pub const AF_IPX: u32 = 4; +pub const AF_APPLETALK: u32 = 5; +pub const AF_NETROM: u32 = 6; +pub const AF_BRIDGE: u32 = 7; +pub const AF_ATMPVC: u32 = 8; +pub const AF_X25: u32 = 9; +pub const AF_INET6: u32 = 10; +pub const AF_ROSE: u32 = 11; +pub const AF_DECnet: u32 = 12; +pub const AF_NETBEUI: u32 = 13; +pub const AF_SECURITY: u32 = 14; +pub const AF_KEY: u32 = 15; +pub const AF_NETLINK: u32 = 16; +pub const AF_PACKET: u32 = 17; +pub const AF_ASH: u32 = 18; +pub const AF_ECONET: u32 = 19; +pub const AF_ATMSVC: u32 = 20; +pub const AF_RDS: u32 = 21; +pub const AF_SNA: u32 = 22; +pub const AF_IRDA: u32 = 23; +pub const AF_PPPOX: u32 = 24; +pub const AF_WANPIPE: u32 = 25; +pub const AF_LLC: u32 = 26; +pub const AF_CAN: u32 = 29; +pub const AF_TIPC: u32 = 30; +pub const AF_BLUETOOTH: u32 = 31; +pub const AF_IUCV: u32 = 32; +pub const AF_RXRPC: u32 = 33; +pub const AF_ISDN: u32 = 34; +pub const AF_PHONET: u32 = 35; +pub const AF_IEEE802154: u32 = 36; +pub const AF_MAX: u32 = 37; +pub const MSG_OOB: u32 = 1; +pub const MSG_PEEK: u32 = 2; +pub const MSG_DONTROUTE: u32 = 4; +pub const MSG_CTRUNC: u32 = 8; +pub const MSG_PROBE: u32 = 16; +pub const MSG_TRUNC: u32 = 32; +pub const MSG_EOR: u32 = 128; +pub const MSG_WAITALL: u32 = 256; +pub const MSG_FIN: u32 = 512; +pub const MSG_SYN: u32 = 1024; +pub const MSG_CONFIRM: u32 = 2048; +pub const MSG_RST: u32 = 4096; +pub const MSG_ERRQUEUE: u32 = 8192; +pub const MSG_NOSIGNAL: u32 = 16384; +pub const MSG_MORE: u32 = 32768; +pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; +pub const SCM_RIGHTS: u32 = 1; +pub const SCM_CREDENTIALS: u32 = 2; +pub const SCM_SECURITY: u32 = 3; +pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; +pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; +pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; +pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; +pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; +pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; +pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; +pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; +pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; +pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; +pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; +pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; +pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; +pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; +pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; +pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; +pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; +pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; +pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; +pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; +pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; +pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; +pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; +pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; +pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; +pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; +pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; +pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; +pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; +pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; +pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; +pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; +pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; +pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; +pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; +pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; +pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; +pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; +pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; +pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; +pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; +pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; +pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; +pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; +pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; +pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; +pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; +pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; +pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; +pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; +pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; +pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; +pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; +pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; +pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; +pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; +pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; +pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; +pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; +pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; +pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; +pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; +pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; +pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; +pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; +pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; +pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; +pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; +pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; +pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; +pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; +pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; +pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; +pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; +pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; +pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; +pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; +pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; +pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; +pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; +pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; +pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; +pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; +pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; +pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; +pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; +pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; +pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; +pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; +pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; +pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; +pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; +pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; +pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; +pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; +pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; +pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; +pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; +pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; +pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; +pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; +pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; +pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; +pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; +pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; +pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; +pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; +pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; +pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; +pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; +pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; +pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; +pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; +pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; +pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; +pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; +pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; +pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; +pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; +pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; +pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; +pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; +pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; +pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; +pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; +pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; +pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; +pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; +pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; +pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; +pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; +pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; +pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; +pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; +pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; +pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; +pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; +pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; +pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; +pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; +pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; +pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; +pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; +pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; +pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; +pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; +pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; +pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; +pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; +pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; +pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; +pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IPPROTO_IP = 0, +IPPROTO_ICMP = 1, +IPPROTO_IGMP = 2, +IPPROTO_IPIP = 4, +IPPROTO_TCP = 6, +IPPROTO_EGP = 8, +IPPROTO_PUP = 12, +IPPROTO_UDP = 17, +IPPROTO_IDP = 22, +IPPROTO_TP = 29, +IPPROTO_DCCP = 33, +IPPROTO_IPV6 = 41, +IPPROTO_RSVP = 46, +IPPROTO_GRE = 47, +IPPROTO_ESP = 50, +IPPROTO_AH = 51, +IPPROTO_MTP = 92, +IPPROTO_BEETPH = 94, +IPPROTO_ENCAP = 98, +IPPROTO_PIM = 103, +IPPROTO_COMP = 108, +IPPROTO_L2TP = 115, +IPPROTO_SCTP = 132, +IPPROTO_UDPLITE = 136, +IPPROTO_MPLS = 137, +IPPROTO_ETHERNET = 143, +IPPROTO_RAW = 255, +IPPROTO_MPTCP = 262, +IPPROTO_MAX = 263, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IPV4_DEVCONF_FORWARDING = 1, +IPV4_DEVCONF_MC_FORWARDING = 2, +IPV4_DEVCONF_PROXY_ARP = 3, +IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, +IPV4_DEVCONF_SECURE_REDIRECTS = 5, +IPV4_DEVCONF_SEND_REDIRECTS = 6, +IPV4_DEVCONF_SHARED_MEDIA = 7, +IPV4_DEVCONF_RP_FILTER = 8, +IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, +IPV4_DEVCONF_BOOTP_RELAY = 10, +IPV4_DEVCONF_LOG_MARTIANS = 11, +IPV4_DEVCONF_TAG = 12, +IPV4_DEVCONF_ARPFILTER = 13, +IPV4_DEVCONF_MEDIUM_ID = 14, +IPV4_DEVCONF_NOXFRM = 15, +IPV4_DEVCONF_NOPOLICY = 16, +IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, +IPV4_DEVCONF_ARP_ANNOUNCE = 18, +IPV4_DEVCONF_ARP_IGNORE = 19, +IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, +IPV4_DEVCONF_ARP_ACCEPT = 21, +IPV4_DEVCONF_ARP_NOTIFY = 22, +IPV4_DEVCONF_ACCEPT_LOCAL = 23, +IPV4_DEVCONF_SRC_VMARK = 24, +IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, +IPV4_DEVCONF_ROUTE_LOCALNET = 26, +IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, +IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, +IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, +IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, +IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, +IPV4_DEVCONF_BC_FORWARDING = 32, +IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, +__IPV4_DEVCONF_MAX = 34, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +DEVCONF_FORWARDING = 0, +DEVCONF_HOPLIMIT = 1, +DEVCONF_MTU6 = 2, +DEVCONF_ACCEPT_RA = 3, +DEVCONF_ACCEPT_REDIRECTS = 4, +DEVCONF_AUTOCONF = 5, +DEVCONF_DAD_TRANSMITS = 6, +DEVCONF_RTR_SOLICITS = 7, +DEVCONF_RTR_SOLICIT_INTERVAL = 8, +DEVCONF_RTR_SOLICIT_DELAY = 9, +DEVCONF_USE_TEMPADDR = 10, +DEVCONF_TEMP_VALID_LFT = 11, +DEVCONF_TEMP_PREFERED_LFT = 12, +DEVCONF_REGEN_MAX_RETRY = 13, +DEVCONF_MAX_DESYNC_FACTOR = 14, +DEVCONF_MAX_ADDRESSES = 15, +DEVCONF_FORCE_MLD_VERSION = 16, +DEVCONF_ACCEPT_RA_DEFRTR = 17, +DEVCONF_ACCEPT_RA_PINFO = 18, +DEVCONF_ACCEPT_RA_RTR_PREF = 19, +DEVCONF_RTR_PROBE_INTERVAL = 20, +DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, +DEVCONF_PROXY_NDP = 22, +DEVCONF_OPTIMISTIC_DAD = 23, +DEVCONF_ACCEPT_SOURCE_ROUTE = 24, +DEVCONF_MC_FORWARDING = 25, +DEVCONF_DISABLE_IPV6 = 26, +DEVCONF_ACCEPT_DAD = 27, +DEVCONF_FORCE_TLLAO = 28, +DEVCONF_NDISC_NOTIFY = 29, +DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, +DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, +DEVCONF_SUPPRESS_FRAG_NDISC = 32, +DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, +DEVCONF_USE_OPTIMISTIC = 34, +DEVCONF_ACCEPT_RA_MTU = 35, +DEVCONF_STABLE_SECRET = 36, +DEVCONF_USE_OIF_ADDRS_ONLY = 37, +DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, +DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, +DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, +DEVCONF_DROP_UNSOLICITED_NA = 41, +DEVCONF_KEEP_ADDR_ON_DOWN = 42, +DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, +DEVCONF_SEG6_ENABLED = 44, +DEVCONF_SEG6_REQUIRE_HMAC = 45, +DEVCONF_ENHANCED_DAD = 46, +DEVCONF_ADDR_GEN_MODE = 47, +DEVCONF_DISABLE_POLICY = 48, +DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, +DEVCONF_NDISC_TCLASS = 50, +DEVCONF_RPL_SEG_ENABLED = 51, +DEVCONF_RA_DEFRTR_METRIC = 52, +DEVCONF_IOAM6_ENABLED = 53, +DEVCONF_IOAM6_ID = 54, +DEVCONF_IOAM6_ID_WIDE = 55, +DEVCONF_NDISC_EVICT_NOCARRIER = 56, +DEVCONF_ACCEPT_UNTRACKED_NA = 57, +DEVCONF_MAX = 58, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum socket_state { +SS_FREE = 0, +SS_UNCONNECTED = 1, +SS_CONNECTING = 2, +SS_CONNECTED = 3, +SS_DISCONNECTING = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +TCP_FLAG_CWR = 32768, +TCP_FLAG_ECE = 16384, +TCP_FLAG_URG = 8192, +TCP_FLAG_ACK = 4096, +TCP_FLAG_PSH = 2048, +TCP_FLAG_RST = 1024, +TCP_FLAG_SYN = 512, +TCP_FLAG_FIN = 256, +TCP_RESERVED_BITS = 15, +TCP_DATA_OFFSET = 240, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +TCP_NO_QUEUE = 0, +TCP_RECV_QUEUE = 1, +TCP_SEND_QUEUE = 2, +TCP_QUEUES_NR = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_fastopen_client_fail { +TFO_STATUS_UNSPEC = 0, +TFO_COOKIE_UNAVAILABLE = 1, +TFO_DATA_NOT_ACKED = 2, +TFO_SYN_RETRANSMITTED = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_ca_state { +TCP_CA_Open = 0, +TCP_CA_Disorder = 1, +TCP_CA_CWR = 2, +TCP_CA_Recovery = 3, +TCP_CA_Loss = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +TCP_NLA_PAD = 0, +TCP_NLA_BUSY = 1, +TCP_NLA_RWND_LIMITED = 2, +TCP_NLA_SNDBUF_LIMITED = 3, +TCP_NLA_DATA_SEGS_OUT = 4, +TCP_NLA_TOTAL_RETRANS = 5, +TCP_NLA_PACING_RATE = 6, +TCP_NLA_DELIVERY_RATE = 7, +TCP_NLA_SND_CWND = 8, +TCP_NLA_REORDERING = 9, +TCP_NLA_MIN_RTT = 10, +TCP_NLA_RECUR_RETRANS = 11, +TCP_NLA_DELIVERY_RATE_APP_LMT = 12, +TCP_NLA_SNDQ_SIZE = 13, +TCP_NLA_CA_STATE = 14, +TCP_NLA_SND_SSTHRESH = 15, +TCP_NLA_DELIVERED = 16, +TCP_NLA_DELIVERED_CE = 17, +TCP_NLA_BYTES_SENT = 18, +TCP_NLA_BYTES_RETRANS = 19, +TCP_NLA_DSACK_DUPS = 20, +TCP_NLA_REORD_SEEN = 21, +TCP_NLA_SRTT = 22, +TCP_NLA_TIMEOUT_REHASH = 23, +TCP_NLA_BYTES_NOTSENT = 24, +TCP_NLA_EDT = 25, +TCP_NLA_TTL = 26, +TCP_NLA_REHASH = 27, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union iphdr__bindgen_ty_1 { +pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union in6_addr__bindgen_ty_1 { +pub u6_addr8: [__u8; 16usize], +pub u6_addr16: [__be16; 8usize], +pub u6_addr32: [__be32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ipv6hdr__bindgen_ty_1 { +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union tcp_word_hdr { +pub hdr: tcphdr, +pub words: [__be32; 5usize], +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} +impl iphdr { +#[inline] +pub fn ihl(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_ihl(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; +ihl as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit +} +} +impl ipv6hdr { +#[inline] +pub fn priority(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_priority(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let priority: u8 = unsafe { ::core::mem::transmute(priority) }; +priority as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcphdr { +#[inline] +pub fn res1(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } +} +#[inline] +pub fn set_res1(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn doff(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } +} +#[inline] +pub fn set_doff(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn fin(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } +} +#[inline] +pub fn set_fin(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn syn(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } +} +#[inline] +pub fn set_syn(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 1u8, val as u64) +} +} +#[inline] +pub fn rst(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } +} +#[inline] +pub fn set_rst(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(10usize, 1u8, val as u64) +} +} +#[inline] +pub fn psh(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } +} +#[inline] +pub fn set_psh(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(11usize, 1u8, val as u64) +} +} +#[inline] +pub fn ack(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } +} +#[inline] +pub fn set_ack(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(12usize, 1u8, val as u64) +} +} +#[inline] +pub fn urg(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } +} +#[inline] +pub fn set_urg(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(13usize, 1u8, val as u64) +} +} +#[inline] +pub fn ece(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } +} +#[inline] +pub fn set_ece(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(14usize, 1u8, val as u64) +} +} +#[inline] +pub fn cwr(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +} +#[inline] +pub fn set_cwr(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(15usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let res1: u16 = unsafe { ::core::mem::transmute(res1) }; +res1 as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let doff: u16 = unsafe { ::core::mem::transmute(doff) }; +doff as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let fin: u16 = unsafe { ::core::mem::transmute(fin) }; +fin as u64 +}); +__bindgen_bitfield_unit.set(9usize, 1u8, { +let syn: u16 = unsafe { ::core::mem::transmute(syn) }; +syn as u64 +}); +__bindgen_bitfield_unit.set(10usize, 1u8, { +let rst: u16 = unsafe { ::core::mem::transmute(rst) }; +rst as u64 +}); +__bindgen_bitfield_unit.set(11usize, 1u8, { +let psh: u16 = unsafe { ::core::mem::transmute(psh) }; +psh as u64 +}); +__bindgen_bitfield_unit.set(12usize, 1u8, { +let ack: u16 = unsafe { ::core::mem::transmute(ack) }; +ack as u64 +}); +__bindgen_bitfield_unit.set(13usize, 1u8, { +let urg: u16 = unsafe { ::core::mem::transmute(urg) }; +urg as u64 +}); +__bindgen_bitfield_unit.set(14usize, 1u8, { +let ece: u16 = unsafe { ::core::mem::transmute(ece) }; +ece as u64 +}); +__bindgen_bitfield_unit.set(15usize, 1u8, { +let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; +cwr as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcp_info { +#[inline] +pub fn tcpi_snd_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_rcv_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +} +#[inline] +pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn tcpi_fastopen_client_fail(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +} +#[inline] +pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 2u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; +tcpi_snd_wscale as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; +tcpi_rcv_wscale as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; +tcpi_delivery_rate_app_limited as u64 +}); +__bindgen_bitfield_unit.set(9usize, 2u8, { +let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; +tcpi_fastopen_client_fail as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/prctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/prctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/prctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,221 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prctl_mm_map { +pub start_code: __u64, +pub end_code: __u64, +pub start_data: __u64, +pub end_data: __u64, +pub start_brk: __u64, +pub brk: __u64, +pub start_stack: __u64, +pub arg_start: __u64, +pub arg_end: __u64, +pub env_start: __u64, +pub env_end: __u64, +pub auxv: *mut __u64, +pub auxv_size: __u32, +pub exe_fd: __u32, +} +pub const PR_SET_PDEATHSIG: u32 = 1; +pub const PR_GET_PDEATHSIG: u32 = 2; +pub const PR_GET_DUMPABLE: u32 = 3; +pub const PR_SET_DUMPABLE: u32 = 4; +pub const PR_GET_UNALIGN: u32 = 5; +pub const PR_SET_UNALIGN: u32 = 6; +pub const PR_UNALIGN_NOPRINT: u32 = 1; +pub const PR_UNALIGN_SIGBUS: u32 = 2; +pub const PR_GET_KEEPCAPS: u32 = 7; +pub const PR_SET_KEEPCAPS: u32 = 8; +pub const PR_GET_FPEMU: u32 = 9; +pub const PR_SET_FPEMU: u32 = 10; +pub const PR_FPEMU_NOPRINT: u32 = 1; +pub const PR_FPEMU_SIGFPE: u32 = 2; +pub const PR_GET_FPEXC: u32 = 11; +pub const PR_SET_FPEXC: u32 = 12; +pub const PR_FP_EXC_SW_ENABLE: u32 = 128; +pub const PR_FP_EXC_DIV: u32 = 65536; +pub const PR_FP_EXC_OVF: u32 = 131072; +pub const PR_FP_EXC_UND: u32 = 262144; +pub const PR_FP_EXC_RES: u32 = 524288; +pub const PR_FP_EXC_INV: u32 = 1048576; +pub const PR_FP_EXC_DISABLED: u32 = 0; +pub const PR_FP_EXC_NONRECOV: u32 = 1; +pub const PR_FP_EXC_ASYNC: u32 = 2; +pub const PR_FP_EXC_PRECISE: u32 = 3; +pub const PR_GET_TIMING: u32 = 13; +pub const PR_SET_TIMING: u32 = 14; +pub const PR_TIMING_STATISTICAL: u32 = 0; +pub const PR_TIMING_TIMESTAMP: u32 = 1; +pub const PR_SET_NAME: u32 = 15; +pub const PR_GET_NAME: u32 = 16; +pub const PR_GET_ENDIAN: u32 = 19; +pub const PR_SET_ENDIAN: u32 = 20; +pub const PR_ENDIAN_BIG: u32 = 0; +pub const PR_ENDIAN_LITTLE: u32 = 1; +pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; +pub const PR_GET_SECCOMP: u32 = 21; +pub const PR_SET_SECCOMP: u32 = 22; +pub const PR_CAPBSET_READ: u32 = 23; +pub const PR_CAPBSET_DROP: u32 = 24; +pub const PR_GET_TSC: u32 = 25; +pub const PR_SET_TSC: u32 = 26; +pub const PR_TSC_ENABLE: u32 = 1; +pub const PR_TSC_SIGSEGV: u32 = 2; +pub const PR_GET_SECUREBITS: u32 = 27; +pub const PR_SET_SECUREBITS: u32 = 28; +pub const PR_SET_TIMERSLACK: u32 = 29; +pub const PR_GET_TIMERSLACK: u32 = 30; +pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; +pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; +pub const PR_MCE_KILL: u32 = 33; +pub const PR_MCE_KILL_CLEAR: u32 = 0; +pub const PR_MCE_KILL_SET: u32 = 1; +pub const PR_MCE_KILL_LATE: u32 = 0; +pub const PR_MCE_KILL_EARLY: u32 = 1; +pub const PR_MCE_KILL_DEFAULT: u32 = 2; +pub const PR_MCE_KILL_GET: u32 = 34; +pub const PR_SET_MM: u32 = 35; +pub const PR_SET_MM_START_CODE: u32 = 1; +pub const PR_SET_MM_END_CODE: u32 = 2; +pub const PR_SET_MM_START_DATA: u32 = 3; +pub const PR_SET_MM_END_DATA: u32 = 4; +pub const PR_SET_MM_START_STACK: u32 = 5; +pub const PR_SET_MM_START_BRK: u32 = 6; +pub const PR_SET_MM_BRK: u32 = 7; +pub const PR_SET_MM_ARG_START: u32 = 8; +pub const PR_SET_MM_ARG_END: u32 = 9; +pub const PR_SET_MM_ENV_START: u32 = 10; +pub const PR_SET_MM_ENV_END: u32 = 11; +pub const PR_SET_MM_AUXV: u32 = 12; +pub const PR_SET_MM_EXE_FILE: u32 = 13; +pub const PR_SET_MM_MAP: u32 = 14; +pub const PR_SET_MM_MAP_SIZE: u32 = 15; +pub const PR_SET_PTRACER: u32 = 1499557217; +pub const PR_SET_CHILD_SUBREAPER: u32 = 36; +pub const PR_GET_CHILD_SUBREAPER: u32 = 37; +pub const PR_SET_NO_NEW_PRIVS: u32 = 38; +pub const PR_GET_NO_NEW_PRIVS: u32 = 39; +pub const PR_GET_TID_ADDRESS: u32 = 40; +pub const PR_SET_THP_DISABLE: u32 = 41; +pub const PR_GET_THP_DISABLE: u32 = 42; +pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; +pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; +pub const PR_SET_FP_MODE: u32 = 45; +pub const PR_GET_FP_MODE: u32 = 46; +pub const PR_FP_MODE_FR: u32 = 1; +pub const PR_FP_MODE_FRE: u32 = 2; +pub const PR_CAP_AMBIENT: u32 = 47; +pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; +pub const PR_CAP_AMBIENT_RAISE: u32 = 2; +pub const PR_CAP_AMBIENT_LOWER: u32 = 3; +pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; +pub const PR_SVE_SET_VL: u32 = 50; +pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SVE_GET_VL: u32 = 51; +pub const PR_SVE_VL_LEN_MASK: u32 = 65535; +pub const PR_SVE_VL_INHERIT: u32 = 131072; +pub const PR_GET_SPECULATION_CTRL: u32 = 52; +pub const PR_SET_SPECULATION_CTRL: u32 = 53; +pub const PR_SPEC_STORE_BYPASS: u32 = 0; +pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; +pub const PR_SPEC_L1D_FLUSH: u32 = 2; +pub const PR_SPEC_NOT_AFFECTED: u32 = 0; +pub const PR_SPEC_PRCTL: u32 = 1; +pub const PR_SPEC_ENABLE: u32 = 2; +pub const PR_SPEC_DISABLE: u32 = 4; +pub const PR_SPEC_FORCE_DISABLE: u32 = 8; +pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; +pub const PR_PAC_RESET_KEYS: u32 = 54; +pub const PR_PAC_APIAKEY: u32 = 1; +pub const PR_PAC_APIBKEY: u32 = 2; +pub const PR_PAC_APDAKEY: u32 = 4; +pub const PR_PAC_APDBKEY: u32 = 8; +pub const PR_PAC_APGAKEY: u32 = 16; +pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; +pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; +pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; +pub const PR_MTE_TCF_NONE: u32 = 0; +pub const PR_MTE_TCF_SYNC: u32 = 2; +pub const PR_MTE_TCF_ASYNC: u32 = 4; +pub const PR_MTE_TCF_MASK: u32 = 6; +pub const PR_MTE_TAG_SHIFT: u32 = 3; +pub const PR_MTE_TAG_MASK: u32 = 524280; +pub const PR_MTE_TCF_SHIFT: u32 = 1; +pub const PR_SET_IO_FLUSHER: u32 = 57; +pub const PR_GET_IO_FLUSHER: u32 = 58; +pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; +pub const PR_SYS_DISPATCH_OFF: u32 = 0; +pub const PR_SYS_DISPATCH_ON: u32 = 1; +pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; +pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; +pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; +pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; +pub const PR_SCHED_CORE: u32 = 62; +pub const PR_SCHED_CORE_GET: u32 = 0; +pub const PR_SCHED_CORE_CREATE: u32 = 1; +pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; +pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; +pub const PR_SCHED_CORE_MAX: u32 = 4; +pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; +pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; +pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; +pub const PR_SME_SET_VL: u32 = 63; +pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SME_GET_VL: u32 = 64; +pub const PR_SME_VL_LEN_MASK: u32 = 65535; +pub const PR_SME_VL_INHERIT: u32 = 131072; +pub const PR_SET_MDWE: u32 = 65; +pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; +pub const PR_GET_MDWE: u32 = 66; +pub const PR_SET_VMA: u32 = 1398164801; +pub const PR_SET_VMA_ANON_NAME: u32 = 0; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/system.rs temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/system.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/loongarch64/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,129 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +#[derive(Debug)] +pub struct sysinfo { +pub uptime: __kernel_long_t, +pub loads: [__kernel_ulong_t; 3usize], +pub totalram: __kernel_ulong_t, +pub freeram: __kernel_ulong_t, +pub sharedram: __kernel_ulong_t, +pub bufferram: __kernel_ulong_t, +pub totalswap: __kernel_ulong_t, +pub freeswap: __kernel_ulong_t, +pub procs: __u16, +pub pad: __u16, +pub totalhigh: __kernel_ulong_t, +pub freehigh: __kernel_ulong_t, +pub mem_unit: __u32, +pub _f: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct oldold_utsname { +pub sysname: [crate::ctypes::c_char; 9usize], +pub nodename: [crate::ctypes::c_char; 9usize], +pub release: [crate::ctypes::c_char; 9usize], +pub version: [crate::ctypes::c_char; 9usize], +pub machine: [crate::ctypes::c_char; 9usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct old_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct new_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +pub domainname: [crate::ctypes::c_char; 65usize], +} +pub const SI_LOAD_SHIFT: u32 = 16; +pub const __OLD_UTS_LEN: u32 = 8; +pub const __NEW_UTS_LEN: u32 = 64; +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips/errno.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips/errno.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips/errno.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const EPERM: u32 = 1; pub const ENOENT: u32 = 2; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips/general.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips/general.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips/general.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips/general.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,2971 +1,197 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_sighandler_t = ::core::option::Option; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type cap_user_header_t = *mut __user_cap_header_struct; +pub type cap_user_data_t = *mut __user_cap_data_struct; +pub type __kernel_rwf_t = crate::ctypes::c_int; +pub type old_sigset_t = crate::ctypes::c_ulong; +pub type __signalfn_t = ::core::option::Option; +pub type __sighandler_t = __signalfn_t; +pub type __restorefn_t = ::core::option::Option; +pub type __sigrestore_t = __restorefn_t; +pub type stack_t = sigaltstack; +pub type sigval_t = sigval; +pub type siginfo_t = siginfo; +pub type sigevent_t = sigevent; +pub type cc_t = crate::ctypes::c_uchar; +pub type speed_t = crate::ctypes::c_uint; +pub type tcflag_t = crate::ctypes::c_uint; +pub type fsid_t = __kernel_fsid_t; +pub type __fsword_t = __u32; #[repr(C)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct __BindgenBitfieldUnit { storage: Storage, } -impl __BindgenBitfieldUnit { -#[inline] -pub const fn new(storage: Storage) -> Self { -Self { storage } -} -} -impl __BindgenBitfieldUnit -where -Storage: AsRef<[u8]> + AsMut<[u8]>, -{ -#[inline] -pub fn get_bit(&self, index: usize) -> bool { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = self.storage.as_ref()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -byte & mask == mask -} -#[inline] -pub fn set_bit(&mut self, index: usize, val: bool) { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = &mut self.storage.as_mut()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -if val { -*byte |= mask; -} else { -*byte &= !mask; -} -} -#[inline] -pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -let mut val = 0; -for i in 0..(bit_width as usize) { -if self.get_bit(i + bit_offset) { -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -val |= 1 << index; -} -} -val -} -#[inline] -pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -for i in 0..(bit_width as usize) { -let mask = 1 << i; -let val_bit_is_set = val & mask == mask; -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -self.set_bit(index + bit_offset, val_bit_is_set); -} -} -} #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) -} -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T -} -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T -} -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) -} -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fd_set { +pub fds_bits: [crate::ctypes::c_ulong; 32usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fsid_t { +pub val: [crate::ctypes::c_int; 2usize], } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_header_struct { +pub version: __u32, +pub pid: crate::ctypes::c_int, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_data_struct { +pub effective: __u32, +pub permitted: __u32, +pub inheritable: __u32, } #[repr(C)] -pub struct __BindgenUnionField(::core::marker::PhantomData); -impl __BindgenUnionField { -#[inline] -pub const fn new() -> Self { -__BindgenUnionField(::core::marker::PhantomData) +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data { +pub magic_etc: __le32, +pub data: [vfs_cap_data__bindgen_ty_1; 2usize], } -#[inline] -pub unsafe fn as_ref(&self) -> &T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } -#[inline] -pub unsafe fn as_mut(&mut self) -> &mut T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data { +pub magic_etc: __le32, +pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], +pub rootid: __le32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } -impl ::core::default::Default for __BindgenUnionField { -#[inline] -fn default() -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct f_owner_ex { +pub type_: crate::ctypes::c_int, +pub pid: __kernel_pid_t, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_off_t, +pub l_len: __kernel_off_t, +pub l_pid: __kernel_pid_t, +pub l_sysid: crate::ctypes::c_long, +pub pad: [crate::ctypes::c_long; 4usize], } -impl ::core::clone::Clone for __BindgenUnionField { -#[inline] -fn clone(&self) -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock64 { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_loff_t, +pub l_len: __kernel_loff_t, +pub l_pid: __kernel_pid_t, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct open_how { +pub flags: __u64, +pub mode: __u64, +pub resolve: __u64, } -impl ::core::marker::Copy for __BindgenUnionField {} -impl ::core::fmt::Debug for __BindgenUnionField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__BindgenUnionField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct epoll_event { +pub events: __poll_t, +pub data: __u64, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], } -impl ::core::hash::Hash for __BindgenUnionField { -fn hash(&self, _state: &mut H) {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, } -impl ::core::cmp::PartialEq for __BindgenUnionField { -fn eq(&self, _other: &__BindgenUnionField) -> bool { -true +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], } -} -impl ::core::cmp::Eq for __BindgenUnionField {} -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const AT_SYSINFO_EHDR: u32 = 33; -pub const AT_VECTOR_SIZE_ARCH: u32 = 1; -pub const AT_NULL: u32 = 0; -pub const AT_IGNORE: u32 = 1; -pub const AT_EXECFD: u32 = 2; -pub const AT_PHDR: u32 = 3; -pub const AT_PHENT: u32 = 4; -pub const AT_PHNUM: u32 = 5; -pub const AT_PAGESZ: u32 = 6; -pub const AT_BASE: u32 = 7; -pub const AT_FLAGS: u32 = 8; -pub const AT_ENTRY: u32 = 9; -pub const AT_NOTELF: u32 = 10; -pub const AT_UID: u32 = 11; -pub const AT_EUID: u32 = 12; -pub const AT_GID: u32 = 13; -pub const AT_EGID: u32 = 14; -pub const AT_PLATFORM: u32 = 15; -pub const AT_HWCAP: u32 = 16; -pub const AT_CLKTCK: u32 = 17; -pub const AT_SECURE: u32 = 23; -pub const AT_BASE_PLATFORM: u32 = 24; -pub const AT_RANDOM: u32 = 25; -pub const AT_HWCAP2: u32 = 26; -pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; -pub const AT_RSEQ_ALIGN: u32 = 28; -pub const AT_EXECFN: u32 = 31; -pub const AT_MINSIGSTKSZ: u32 = 51; -pub const __FD_SETSIZE: u32 = 1024; -pub const _MIPS_ISA_MIPS1: u32 = 1; -pub const _MIPS_ISA_MIPS2: u32 = 2; -pub const _MIPS_ISA_MIPS3: u32 = 3; -pub const _MIPS_ISA_MIPS4: u32 = 4; -pub const _MIPS_ISA_MIPS5: u32 = 5; -pub const _MIPS_ISA_MIPS32: u32 = 6; -pub const _MIPS_ISA_MIPS64: u32 = 7; -pub const _MIPS_SIM_ABI32: u32 = 1; -pub const _MIPS_SIM_NABI32: u32 = 2; -pub const _MIPS_SIM_ABI64: u32 = 3; -pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; -pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; -pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; -pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; -pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; -pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; -pub const VFS_CAP_REVISION_SHIFT: u32 = 24; -pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; -pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; -pub const VFS_CAP_REVISION_1: u32 = 16777216; -pub const VFS_CAP_U32_1: u32 = 1; -pub const VFS_CAP_REVISION_2: u32 = 33554432; -pub const VFS_CAP_U32_2: u32 = 2; -pub const VFS_CAP_REVISION_3: u32 = 50331648; -pub const VFS_CAP_U32_3: u32 = 2; -pub const VFS_CAP_U32: u32 = 2; -pub const VFS_CAP_REVISION: u32 = 50331648; -pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S: u32 = 1; -pub const CAP_CHOWN: u32 = 0; -pub const CAP_DAC_OVERRIDE: u32 = 1; -pub const CAP_DAC_READ_SEARCH: u32 = 2; -pub const CAP_FOWNER: u32 = 3; -pub const CAP_FSETID: u32 = 4; -pub const CAP_KILL: u32 = 5; -pub const CAP_SETGID: u32 = 6; -pub const CAP_SETUID: u32 = 7; -pub const CAP_SETPCAP: u32 = 8; -pub const CAP_LINUX_IMMUTABLE: u32 = 9; -pub const CAP_NET_BIND_SERVICE: u32 = 10; -pub const CAP_NET_BROADCAST: u32 = 11; -pub const CAP_NET_ADMIN: u32 = 12; -pub const CAP_NET_RAW: u32 = 13; -pub const CAP_IPC_LOCK: u32 = 14; -pub const CAP_IPC_OWNER: u32 = 15; -pub const CAP_SYS_MODULE: u32 = 16; -pub const CAP_SYS_RAWIO: u32 = 17; -pub const CAP_SYS_CHROOT: u32 = 18; -pub const CAP_SYS_PTRACE: u32 = 19; -pub const CAP_SYS_PACCT: u32 = 20; -pub const CAP_SYS_ADMIN: u32 = 21; -pub const CAP_SYS_BOOT: u32 = 22; -pub const CAP_SYS_NICE: u32 = 23; -pub const CAP_SYS_RESOURCE: u32 = 24; -pub const CAP_SYS_TIME: u32 = 25; -pub const CAP_SYS_TTY_CONFIG: u32 = 26; -pub const CAP_MKNOD: u32 = 27; -pub const CAP_LEASE: u32 = 28; -pub const CAP_AUDIT_WRITE: u32 = 29; -pub const CAP_AUDIT_CONTROL: u32 = 30; -pub const CAP_SETFCAP: u32 = 31; -pub const CAP_MAC_OVERRIDE: u32 = 32; -pub const CAP_MAC_ADMIN: u32 = 33; -pub const CAP_SYSLOG: u32 = 34; -pub const CAP_WAKE_ALARM: u32 = 35; -pub const CAP_BLOCK_SUSPEND: u32 = 36; -pub const CAP_AUDIT_READ: u32 = 37; -pub const CAP_PERFMON: u32 = 38; -pub const CAP_BPF: u32 = 39; -pub const CAP_CHECKPOINT_RESTORE: u32 = 40; -pub const CAP_LAST_CAP: u32 = 40; -pub const O_APPEND: u32 = 8; -pub const O_DSYNC: u32 = 16; -pub const O_NONBLOCK: u32 = 128; -pub const O_CREAT: u32 = 256; -pub const O_TRUNC: u32 = 512; -pub const O_EXCL: u32 = 1024; -pub const O_NOCTTY: u32 = 2048; -pub const FASYNC: u32 = 4096; -pub const O_LARGEFILE: u32 = 8192; -pub const __O_SYNC: u32 = 16384; -pub const O_SYNC: u32 = 16400; -pub const O_DIRECT: u32 = 32768; -pub const F_GETLK: u32 = 14; -pub const F_SETLK: u32 = 6; -pub const F_SETLKW: u32 = 7; -pub const F_SETOWN: u32 = 24; -pub const F_GETOWN: u32 = 23; -pub const F_GETLK64: u32 = 33; -pub const F_SETLK64: u32 = 34; -pub const F_SETLKW64: u32 = 35; -pub const O_ACCMODE: u32 = 3; -pub const O_RDONLY: u32 = 0; -pub const O_WRONLY: u32 = 1; -pub const O_RDWR: u32 = 2; -pub const O_DIRECTORY: u32 = 65536; -pub const O_NOFOLLOW: u32 = 131072; -pub const O_NOATIME: u32 = 262144; -pub const O_CLOEXEC: u32 = 524288; -pub const O_PATH: u32 = 2097152; -pub const __O_TMPFILE: u32 = 4194304; -pub const O_TMPFILE: u32 = 4259840; -pub const O_TMPFILE_MASK: u32 = 4260096; -pub const O_NDELAY: u32 = 128; -pub const F_DUPFD: u32 = 0; -pub const F_GETFD: u32 = 1; -pub const F_SETFD: u32 = 2; -pub const F_GETFL: u32 = 3; -pub const F_SETFL: u32 = 4; -pub const F_SETSIG: u32 = 10; -pub const F_GETSIG: u32 = 11; -pub const F_SETOWN_EX: u32 = 15; -pub const F_GETOWN_EX: u32 = 16; -pub const F_GETOWNER_UIDS: u32 = 17; -pub const F_OFD_GETLK: u32 = 36; -pub const F_OFD_SETLK: u32 = 37; -pub const F_OFD_SETLKW: u32 = 38; -pub const F_OWNER_TID: u32 = 0; -pub const F_OWNER_PID: u32 = 1; -pub const F_OWNER_PGRP: u32 = 2; -pub const FD_CLOEXEC: u32 = 1; -pub const F_RDLCK: u32 = 0; -pub const F_WRLCK: u32 = 1; -pub const F_UNLCK: u32 = 2; -pub const F_EXLCK: u32 = 4; -pub const F_SHLCK: u32 = 8; -pub const LOCK_SH: u32 = 1; -pub const LOCK_EX: u32 = 2; -pub const LOCK_NB: u32 = 4; -pub const LOCK_UN: u32 = 8; -pub const LOCK_MAND: u32 = 32; -pub const LOCK_READ: u32 = 64; -pub const LOCK_WRITE: u32 = 128; -pub const LOCK_RW: u32 = 192; -pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; -pub const RESOLVE_NO_XDEV: u32 = 1; -pub const RESOLVE_NO_MAGICLINKS: u32 = 2; -pub const RESOLVE_NO_SYMLINKS: u32 = 4; -pub const RESOLVE_BENEATH: u32 = 8; -pub const RESOLVE_IN_ROOT: u32 = 16; -pub const RESOLVE_CACHED: u32 = 32; -pub const F_SETLEASE: u32 = 1024; -pub const F_GETLEASE: u32 = 1025; -pub const F_CANCELLK: u32 = 1029; -pub const F_DUPFD_CLOEXEC: u32 = 1030; -pub const F_NOTIFY: u32 = 1026; -pub const F_SETPIPE_SZ: u32 = 1031; -pub const F_GETPIPE_SZ: u32 = 1032; -pub const F_ADD_SEALS: u32 = 1033; -pub const F_GET_SEALS: u32 = 1034; -pub const F_SEAL_SEAL: u32 = 1; -pub const F_SEAL_SHRINK: u32 = 2; -pub const F_SEAL_GROW: u32 = 4; -pub const F_SEAL_WRITE: u32 = 8; -pub const F_SEAL_FUTURE_WRITE: u32 = 16; -pub const F_SEAL_EXEC: u32 = 32; -pub const F_GET_RW_HINT: u32 = 1035; -pub const F_SET_RW_HINT: u32 = 1036; -pub const F_GET_FILE_RW_HINT: u32 = 1037; -pub const F_SET_FILE_RW_HINT: u32 = 1038; -pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; -pub const RWH_WRITE_LIFE_NONE: u32 = 1; -pub const RWH_WRITE_LIFE_SHORT: u32 = 2; -pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; -pub const RWH_WRITE_LIFE_LONG: u32 = 4; -pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; -pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; -pub const DN_ACCESS: u32 = 1; -pub const DN_MODIFY: u32 = 2; -pub const DN_CREATE: u32 = 4; -pub const DN_DELETE: u32 = 8; -pub const DN_RENAME: u32 = 16; -pub const DN_ATTRIB: u32 = 32; -pub const DN_MULTISHOT: u32 = 2147483648; -pub const AT_FDCWD: i32 = -100; -pub const AT_SYMLINK_NOFOLLOW: u32 = 256; -pub const AT_EACCESS: u32 = 512; -pub const AT_REMOVEDIR: u32 = 512; -pub const AT_SYMLINK_FOLLOW: u32 = 1024; -pub const AT_NO_AUTOMOUNT: u32 = 2048; -pub const AT_EMPTY_PATH: u32 = 4096; -pub const AT_STATX_SYNC_TYPE: u32 = 24576; -pub const AT_STATX_SYNC_AS_STAT: u32 = 0; -pub const AT_STATX_FORCE_SYNC: u32 = 8192; -pub const AT_STATX_DONT_SYNC: u32 = 16384; -pub const AT_RECURSIVE: u32 = 32768; -pub const EPOLL_CLOEXEC: u32 = 524288; -pub const EPOLL_CTL_ADD: u32 = 1; -pub const EPOLL_CTL_DEL: u32 = 2; -pub const EPOLL_CTL_MOD: u32 = 3; -pub const POSIX_FADV_NORMAL: u32 = 0; -pub const POSIX_FADV_RANDOM: u32 = 1; -pub const POSIX_FADV_SEQUENTIAL: u32 = 2; -pub const POSIX_FADV_WILLNEED: u32 = 3; -pub const POSIX_FADV_DONTNEED: u32 = 4; -pub const POSIX_FADV_NOREUSE: u32 = 5; -pub const FALLOC_FL_KEEP_SIZE: u32 = 1; -pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; -pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; -pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; -pub const FALLOC_FL_ZERO_RANGE: u32 = 16; -pub const FALLOC_FL_INSERT_RANGE: u32 = 32; -pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; -pub const NR_OPEN: u32 = 1024; -pub const NGROUPS_MAX: u32 = 65536; -pub const ARG_MAX: u32 = 131072; -pub const LINK_MAX: u32 = 127; -pub const MAX_CANON: u32 = 255; -pub const MAX_INPUT: u32 = 255; -pub const NAME_MAX: u32 = 255; -pub const PATH_MAX: u32 = 4096; -pub const PIPE_BUF: u32 = 4096; -pub const XATTR_NAME_MAX: u32 = 255; -pub const XATTR_SIZE_MAX: u32 = 65536; -pub const XATTR_LIST_MAX: u32 = 65536; -pub const RTSIG_MAX: u32 = 32; -pub const _IOC_SIZEBITS: u32 = 13; -pub const _IOC_DIRBITS: u32 = 3; -pub const _IOC_NONE: u32 = 1; -pub const _IOC_READ: u32 = 2; -pub const _IOC_WRITE: u32 = 4; -pub const _IOC_NRBITS: u32 = 8; -pub const _IOC_TYPEBITS: u32 = 8; -pub const _IOC_NRMASK: u32 = 255; -pub const _IOC_TYPEMASK: u32 = 255; -pub const _IOC_SIZEMASK: u32 = 8191; -pub const _IOC_DIRMASK: u32 = 7; -pub const _IOC_NRSHIFT: u32 = 0; -pub const _IOC_TYPESHIFT: u32 = 8; -pub const _IOC_SIZESHIFT: u32 = 16; -pub const _IOC_DIRSHIFT: u32 = 29; -pub const IOC_IN: u32 = 2147483648; -pub const IOC_OUT: u32 = 1073741824; -pub const IOC_INOUT: u32 = 3221225472; -pub const IOCSIZE_MASK: u32 = 536805376; -pub const IOCSIZE_SHIFT: u32 = 16; -pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; -pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; -pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; -pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; -pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; -pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; -pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; -pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; -pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; -pub const FSCRYPT_POLICY_V1: u32 = 0; -pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; -pub const FSCRYPT_POLICY_V2: u32 = 2; -pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; -pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; -pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; -pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; -pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; -pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; -pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; -pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FS_POLICY_FLAGS_VALID: u32 = 7; -pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; -pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; -pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; -pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; -pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; -pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; -pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; -pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; -pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FS_MAX_KEY_SIZE: u32 = 64; -pub const MS_RDONLY: u32 = 1; -pub const MS_NOSUID: u32 = 2; -pub const MS_NODEV: u32 = 4; -pub const MS_NOEXEC: u32 = 8; -pub const MS_SYNCHRONOUS: u32 = 16; -pub const MS_REMOUNT: u32 = 32; -pub const MS_MANDLOCK: u32 = 64; -pub const MS_DIRSYNC: u32 = 128; -pub const MS_NOSYMFOLLOW: u32 = 256; -pub const MS_NOATIME: u32 = 1024; -pub const MS_NODIRATIME: u32 = 2048; -pub const MS_BIND: u32 = 4096; -pub const MS_MOVE: u32 = 8192; -pub const MS_REC: u32 = 16384; -pub const MS_VERBOSE: u32 = 32768; -pub const MS_SILENT: u32 = 32768; -pub const MS_POSIXACL: u32 = 65536; -pub const MS_UNBINDABLE: u32 = 131072; -pub const MS_PRIVATE: u32 = 262144; -pub const MS_SLAVE: u32 = 524288; -pub const MS_SHARED: u32 = 1048576; -pub const MS_RELATIME: u32 = 2097152; -pub const MS_KERNMOUNT: u32 = 4194304; -pub const MS_I_VERSION: u32 = 8388608; -pub const MS_STRICTATIME: u32 = 16777216; -pub const MS_LAZYTIME: u32 = 33554432; -pub const MS_SUBMOUNT: u32 = 67108864; -pub const MS_NOREMOTELOCK: u32 = 134217728; -pub const MS_NOSEC: u32 = 268435456; -pub const MS_BORN: u32 = 536870912; -pub const MS_ACTIVE: u32 = 1073741824; -pub const MS_NOUSER: u32 = 2147483648; -pub const MS_RMT_MASK: u32 = 41943121; -pub const MS_MGC_VAL: u32 = 3236757504; -pub const MS_MGC_MSK: u32 = 4294901760; -pub const OPEN_TREE_CLONE: u32 = 1; -pub const OPEN_TREE_CLOEXEC: u32 = 524288; -pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; -pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; -pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; -pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; -pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; -pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; -pub const MOVE_MOUNT_SET_GROUP: u32 = 256; -pub const MOVE_MOUNT__MASK: u32 = 375; -pub const FSOPEN_CLOEXEC: u32 = 1; -pub const FSPICK_CLOEXEC: u32 = 1; -pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; -pub const FSPICK_NO_AUTOMOUNT: u32 = 4; -pub const FSPICK_EMPTY_PATH: u32 = 8; -pub const FSMOUNT_CLOEXEC: u32 = 1; -pub const MOUNT_ATTR_RDONLY: u32 = 1; -pub const MOUNT_ATTR_NOSUID: u32 = 2; -pub const MOUNT_ATTR_NODEV: u32 = 4; -pub const MOUNT_ATTR_NOEXEC: u32 = 8; -pub const MOUNT_ATTR__ATIME: u32 = 112; -pub const MOUNT_ATTR_RELATIME: u32 = 0; -pub const MOUNT_ATTR_NOATIME: u32 = 16; -pub const MOUNT_ATTR_STRICTATIME: u32 = 32; -pub const MOUNT_ATTR_NODIRATIME: u32 = 128; -pub const MOUNT_ATTR_IDMAP: u32 = 1048576; -pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; -pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; -pub const INR_OPEN_CUR: u32 = 1024; -pub const INR_OPEN_MAX: u32 = 4096; -pub const BLOCK_SIZE_BITS: u32 = 10; -pub const BLOCK_SIZE: u32 = 1024; -pub const SEEK_SET: u32 = 0; -pub const SEEK_CUR: u32 = 1; -pub const SEEK_END: u32 = 2; -pub const SEEK_DATA: u32 = 3; -pub const SEEK_HOLE: u32 = 4; -pub const SEEK_MAX: u32 = 4; -pub const RENAME_NOREPLACE: u32 = 1; -pub const RENAME_EXCHANGE: u32 = 2; -pub const RENAME_WHITEOUT: u32 = 4; -pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; -pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; -pub const NR_FILE: u32 = 8192; -pub const FS_XFLAG_REALTIME: u32 = 1; -pub const FS_XFLAG_PREALLOC: u32 = 2; -pub const FS_XFLAG_IMMUTABLE: u32 = 8; -pub const FS_XFLAG_APPEND: u32 = 16; -pub const FS_XFLAG_SYNC: u32 = 32; -pub const FS_XFLAG_NOATIME: u32 = 64; -pub const FS_XFLAG_NODUMP: u32 = 128; -pub const FS_XFLAG_RTINHERIT: u32 = 256; -pub const FS_XFLAG_PROJINHERIT: u32 = 512; -pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; -pub const FS_XFLAG_EXTSIZE: u32 = 2048; -pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; -pub const FS_XFLAG_NODEFRAG: u32 = 8192; -pub const FS_XFLAG_FILESTREAM: u32 = 16384; -pub const FS_XFLAG_DAX: u32 = 32768; -pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; -pub const FS_XFLAG_HASATTR: u32 = 2147483648; -pub const BMAP_IOCTL: u32 = 1; -pub const FSLABEL_MAX: u32 = 256; -pub const FS_SECRM_FL: u32 = 1; -pub const FS_UNRM_FL: u32 = 2; -pub const FS_COMPR_FL: u32 = 4; -pub const FS_SYNC_FL: u32 = 8; -pub const FS_IMMUTABLE_FL: u32 = 16; -pub const FS_APPEND_FL: u32 = 32; -pub const FS_NODUMP_FL: u32 = 64; -pub const FS_NOATIME_FL: u32 = 128; -pub const FS_DIRTY_FL: u32 = 256; -pub const FS_COMPRBLK_FL: u32 = 512; -pub const FS_NOCOMP_FL: u32 = 1024; -pub const FS_ENCRYPT_FL: u32 = 2048; -pub const FS_BTREE_FL: u32 = 4096; -pub const FS_INDEX_FL: u32 = 4096; -pub const FS_IMAGIC_FL: u32 = 8192; -pub const FS_JOURNAL_DATA_FL: u32 = 16384; -pub const FS_NOTAIL_FL: u32 = 32768; -pub const FS_DIRSYNC_FL: u32 = 65536; -pub const FS_TOPDIR_FL: u32 = 131072; -pub const FS_HUGE_FILE_FL: u32 = 262144; -pub const FS_EXTENT_FL: u32 = 524288; -pub const FS_VERITY_FL: u32 = 1048576; -pub const FS_EA_INODE_FL: u32 = 2097152; -pub const FS_EOFBLOCKS_FL: u32 = 4194304; -pub const FS_NOCOW_FL: u32 = 8388608; -pub const FS_DAX_FL: u32 = 33554432; -pub const FS_INLINE_DATA_FL: u32 = 268435456; -pub const FS_PROJINHERIT_FL: u32 = 536870912; -pub const FS_CASEFOLD_FL: u32 = 1073741824; -pub const FS_RESERVED_FL: u32 = 2147483648; -pub const FS_FL_USER_VISIBLE: u32 = 253951; -pub const FS_FL_USER_MODIFIABLE: u32 = 229631; -pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; -pub const SYNC_FILE_RANGE_WRITE: u32 = 2; -pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; -pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; -pub const FUTEX_WAIT: u32 = 0; -pub const FUTEX_WAKE: u32 = 1; -pub const FUTEX_FD: u32 = 2; -pub const FUTEX_REQUEUE: u32 = 3; -pub const FUTEX_CMP_REQUEUE: u32 = 4; -pub const FUTEX_WAKE_OP: u32 = 5; -pub const FUTEX_LOCK_PI: u32 = 6; -pub const FUTEX_UNLOCK_PI: u32 = 7; -pub const FUTEX_TRYLOCK_PI: u32 = 8; -pub const FUTEX_WAIT_BITSET: u32 = 9; -pub const FUTEX_WAKE_BITSET: u32 = 10; -pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; -pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; -pub const FUTEX_LOCK_PI2: u32 = 13; -pub const FUTEX_PRIVATE_FLAG: u32 = 128; -pub const FUTEX_CLOCK_REALTIME: u32 = 256; -pub const FUTEX_CMD_MASK: i32 = -385; -pub const FUTEX_WAIT_PRIVATE: u32 = 128; -pub const FUTEX_WAKE_PRIVATE: u32 = 129; -pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; -pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; -pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; -pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; -pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; -pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; -pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; -pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; -pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; -pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; -pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; -pub const FUTEX_32: u32 = 2; -pub const FUTEX_WAITV_MAX: u32 = 128; -pub const FUTEX_WAITERS: u32 = 2147483648; -pub const FUTEX_OWNER_DIED: u32 = 1073741824; -pub const FUTEX_TID_MASK: u32 = 1073741823; -pub const ROBUST_LIST_LIMIT: u32 = 2048; -pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; -pub const FUTEX_OP_SET: u32 = 0; -pub const FUTEX_OP_ADD: u32 = 1; -pub const FUTEX_OP_OR: u32 = 2; -pub const FUTEX_OP_ANDN: u32 = 3; -pub const FUTEX_OP_XOR: u32 = 4; -pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; -pub const FUTEX_OP_CMP_EQ: u32 = 0; -pub const FUTEX_OP_CMP_NE: u32 = 1; -pub const FUTEX_OP_CMP_LT: u32 = 2; -pub const FUTEX_OP_CMP_LE: u32 = 3; -pub const FUTEX_OP_CMP_GT: u32 = 4; -pub const FUTEX_OP_CMP_GE: u32 = 5; -pub const __UAPI_DEF_IF_IFCONF: u32 = 1; -pub const __UAPI_DEF_IF_IFMAP: u32 = 1; -pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1; -pub const __UAPI_DEF_IF_IFREQ: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1; -pub const __UAPI_DEF_IN_ADDR: u32 = 1; -pub const __UAPI_DEF_IN_IPPROTO: u32 = 1; -pub const __UAPI_DEF_IN_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP_MREQ: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1; -pub const __UAPI_DEF_IN_CLASS: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1; -pub const __UAPI_DEF_IPV6_MREQ: u32 = 1; -pub const __UAPI_DEF_IPPROTO_V6: u32 = 1; -pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1; -pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1; -pub const __UAPI_DEF_XATTR: u32 = 1; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const IP_TOS: u32 = 1; -pub const IP_TTL: u32 = 2; -pub const IP_HDRINCL: u32 = 3; -pub const IP_OPTIONS: u32 = 4; -pub const IP_ROUTER_ALERT: u32 = 5; -pub const IP_RECVOPTS: u32 = 6; -pub const IP_RETOPTS: u32 = 7; -pub const IP_PKTINFO: u32 = 8; -pub const IP_PKTOPTIONS: u32 = 9; -pub const IP_MTU_DISCOVER: u32 = 10; -pub const IP_RECVERR: u32 = 11; -pub const IP_RECVTTL: u32 = 12; -pub const IP_RECVTOS: u32 = 13; -pub const IP_MTU: u32 = 14; -pub const IP_FREEBIND: u32 = 15; -pub const IP_IPSEC_POLICY: u32 = 16; -pub const IP_XFRM_POLICY: u32 = 17; -pub const IP_PASSSEC: u32 = 18; -pub const IP_TRANSPARENT: u32 = 19; -pub const IP_RECVRETOPTS: u32 = 7; -pub const IP_ORIGDSTADDR: u32 = 20; -pub const IP_RECVORIGDSTADDR: u32 = 20; -pub const IP_MINTTL: u32 = 21; -pub const IP_NODEFRAG: u32 = 22; -pub const IP_CHECKSUM: u32 = 23; -pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; -pub const IP_RECVFRAGSIZE: u32 = 25; -pub const IP_RECVERR_RFC4884: u32 = 26; -pub const IP_PMTUDISC_DONT: u32 = 0; -pub const IP_PMTUDISC_WANT: u32 = 1; -pub const IP_PMTUDISC_DO: u32 = 2; -pub const IP_PMTUDISC_PROBE: u32 = 3; -pub const IP_PMTUDISC_INTERFACE: u32 = 4; -pub const IP_PMTUDISC_OMIT: u32 = 5; -pub const IP_MULTICAST_IF: u32 = 32; -pub const IP_MULTICAST_TTL: u32 = 33; -pub const IP_MULTICAST_LOOP: u32 = 34; -pub const IP_ADD_MEMBERSHIP: u32 = 35; -pub const IP_DROP_MEMBERSHIP: u32 = 36; -pub const IP_UNBLOCK_SOURCE: u32 = 37; -pub const IP_BLOCK_SOURCE: u32 = 38; -pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; -pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; -pub const IP_MSFILTER: u32 = 41; -pub const MCAST_JOIN_GROUP: u32 = 42; -pub const MCAST_BLOCK_SOURCE: u32 = 43; -pub const MCAST_UNBLOCK_SOURCE: u32 = 44; -pub const MCAST_LEAVE_GROUP: u32 = 45; -pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; -pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; -pub const MCAST_MSFILTER: u32 = 48; -pub const IP_MULTICAST_ALL: u32 = 49; -pub const IP_UNICAST_IF: u32 = 50; -pub const IP_LOCAL_PORT_RANGE: u32 = 51; -pub const MCAST_EXCLUDE: u32 = 0; -pub const MCAST_INCLUDE: u32 = 1; -pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; -pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const __SOCK_SIZE__: u32 = 16; -pub const IN_CLASSA_NET: u32 = 4278190080; -pub const IN_CLASSA_NSHIFT: u32 = 24; -pub const IN_CLASSA_HOST: u32 = 16777215; -pub const IN_CLASSA_MAX: u32 = 128; -pub const IN_CLASSB_NET: u32 = 4294901760; -pub const IN_CLASSB_NSHIFT: u32 = 16; -pub const IN_CLASSB_HOST: u32 = 65535; -pub const IN_CLASSB_MAX: u32 = 65536; -pub const IN_CLASSC_NET: u32 = 4294967040; -pub const IN_CLASSC_NSHIFT: u32 = 8; -pub const IN_CLASSC_HOST: u32 = 255; -pub const IN_MULTICAST_NET: u32 = 3758096384; -pub const IN_CLASSE_NET: u32 = 4294967295; -pub const IN_CLASSE_NSHIFT: u32 = 0; -pub const IN_LOOPBACKNET: u32 = 127; -pub const INADDR_LOOPBACK: u32 = 2130706433; -pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; -pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; -pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; -pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; -pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; -pub const __BIG_ENDIAN: u32 = 4321; -pub const IN_ACCESS: u32 = 1; -pub const IN_MODIFY: u32 = 2; -pub const IN_ATTRIB: u32 = 4; -pub const IN_CLOSE_WRITE: u32 = 8; -pub const IN_CLOSE_NOWRITE: u32 = 16; -pub const IN_OPEN: u32 = 32; -pub const IN_MOVED_FROM: u32 = 64; -pub const IN_MOVED_TO: u32 = 128; -pub const IN_CREATE: u32 = 256; -pub const IN_DELETE: u32 = 512; -pub const IN_DELETE_SELF: u32 = 1024; -pub const IN_MOVE_SELF: u32 = 2048; -pub const IN_UNMOUNT: u32 = 8192; -pub const IN_Q_OVERFLOW: u32 = 16384; -pub const IN_IGNORED: u32 = 32768; -pub const IN_CLOSE: u32 = 24; -pub const IN_MOVE: u32 = 192; -pub const IN_ONLYDIR: u32 = 16777216; -pub const IN_DONT_FOLLOW: u32 = 33554432; -pub const IN_EXCL_UNLINK: u32 = 67108864; -pub const IN_MASK_CREATE: u32 = 268435456; -pub const IN_MASK_ADD: u32 = 536870912; -pub const IN_ISDIR: u32 = 1073741824; -pub const IN_ONESHOT: u32 = 2147483648; -pub const IN_ALL_EVENTS: u32 = 4095; -pub const IN_CLOEXEC: u32 = 524288; -pub const IN_NONBLOCK: u32 = 128; -pub const IPTOS_TOS_MASK: u32 = 30; -pub const IPTOS_LOWDELAY: u32 = 16; -pub const IPTOS_THROUGHPUT: u32 = 8; -pub const IPTOS_RELIABILITY: u32 = 4; -pub const IPTOS_MINCOST: u32 = 2; -pub const IPTOS_PREC_MASK: u32 = 224; -pub const IPTOS_PREC_NETCONTROL: u32 = 224; -pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; -pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; -pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; -pub const IPTOS_PREC_FLASH: u32 = 96; -pub const IPTOS_PREC_IMMEDIATE: u32 = 64; -pub const IPTOS_PREC_PRIORITY: u32 = 32; -pub const IPTOS_PREC_ROUTINE: u32 = 0; -pub const IPOPT_COPY: u32 = 128; -pub const IPOPT_CLASS_MASK: u32 = 96; -pub const IPOPT_NUMBER_MASK: u32 = 31; -pub const IPOPT_CONTROL: u32 = 0; -pub const IPOPT_RESERVED1: u32 = 32; -pub const IPOPT_MEASUREMENT: u32 = 64; -pub const IPOPT_RESERVED2: u32 = 96; -pub const IPOPT_END: u32 = 0; -pub const IPOPT_NOOP: u32 = 1; -pub const IPOPT_SEC: u32 = 130; -pub const IPOPT_LSRR: u32 = 131; -pub const IPOPT_TIMESTAMP: u32 = 68; -pub const IPOPT_CIPSO: u32 = 134; -pub const IPOPT_RR: u32 = 7; -pub const IPOPT_SID: u32 = 136; -pub const IPOPT_SSRR: u32 = 137; -pub const IPOPT_RA: u32 = 148; -pub const IPVERSION: u32 = 4; -pub const MAXTTL: u32 = 255; -pub const IPDEFTTL: u32 = 64; -pub const IPOPT_OPTVAL: u32 = 0; -pub const IPOPT_OLEN: u32 = 1; -pub const IPOPT_OFFSET: u32 = 2; -pub const IPOPT_MINOFF: u32 = 4; -pub const MAX_IPOPTLEN: u32 = 40; -pub const IPOPT_NOP: u32 = 1; -pub const IPOPT_EOL: u32 = 0; -pub const IPOPT_TS: u32 = 68; -pub const IPOPT_TS_TSONLY: u32 = 0; -pub const IPOPT_TS_TSANDADDR: u32 = 1; -pub const IPOPT_TS_PRESPEC: u32 = 3; -pub const IPV4_BEET_PHMAXLEN: u32 = 8; -pub const IPV6_FL_A_GET: u32 = 0; -pub const IPV6_FL_A_PUT: u32 = 1; -pub const IPV6_FL_A_RENEW: u32 = 2; -pub const IPV6_FL_F_CREATE: u32 = 1; -pub const IPV6_FL_F_EXCL: u32 = 2; -pub const IPV6_FL_F_REFLECT: u32 = 4; -pub const IPV6_FL_F_REMOTE: u32 = 8; -pub const IPV6_FL_S_NONE: u32 = 0; -pub const IPV6_FL_S_EXCL: u32 = 1; -pub const IPV6_FL_S_PROCESS: u32 = 2; -pub const IPV6_FL_S_USER: u32 = 3; -pub const IPV6_FL_S_ANY: u32 = 255; -pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; -pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; -pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; -pub const IPV6_PRIORITY_FILLER: u32 = 256; -pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; -pub const IPV6_PRIORITY_RESERVED1: u32 = 768; -pub const IPV6_PRIORITY_BULK: u32 = 1024; -pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; -pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; -pub const IPV6_PRIORITY_CONTROL: u32 = 1792; -pub const IPV6_PRIORITY_8: u32 = 2048; -pub const IPV6_PRIORITY_9: u32 = 2304; -pub const IPV6_PRIORITY_10: u32 = 2560; -pub const IPV6_PRIORITY_11: u32 = 2816; -pub const IPV6_PRIORITY_12: u32 = 3072; -pub const IPV6_PRIORITY_13: u32 = 3328; -pub const IPV6_PRIORITY_14: u32 = 3584; -pub const IPV6_PRIORITY_15: u32 = 3840; -pub const IPPROTO_HOPOPTS: u32 = 0; -pub const IPPROTO_ROUTING: u32 = 43; -pub const IPPROTO_FRAGMENT: u32 = 44; -pub const IPPROTO_ICMPV6: u32 = 58; -pub const IPPROTO_NONE: u32 = 59; -pub const IPPROTO_DSTOPTS: u32 = 60; -pub const IPPROTO_MH: u32 = 135; -pub const IPV6_TLV_PAD1: u32 = 0; -pub const IPV6_TLV_PADN: u32 = 1; -pub const IPV6_TLV_ROUTERALERT: u32 = 5; -pub const IPV6_TLV_CALIPSO: u32 = 7; -pub const IPV6_TLV_IOAM: u32 = 49; -pub const IPV6_TLV_JUMBO: u32 = 194; -pub const IPV6_TLV_HAO: u32 = 201; -pub const IPV6_ADDRFORM: u32 = 1; -pub const IPV6_2292PKTINFO: u32 = 2; -pub const IPV6_2292HOPOPTS: u32 = 3; -pub const IPV6_2292DSTOPTS: u32 = 4; -pub const IPV6_2292RTHDR: u32 = 5; -pub const IPV6_2292PKTOPTIONS: u32 = 6; -pub const IPV6_CHECKSUM: u32 = 7; -pub const IPV6_2292HOPLIMIT: u32 = 8; -pub const IPV6_NEXTHOP: u32 = 9; -pub const IPV6_AUTHHDR: u32 = 10; -pub const IPV6_FLOWINFO: u32 = 11; -pub const IPV6_UNICAST_HOPS: u32 = 16; -pub const IPV6_MULTICAST_IF: u32 = 17; -pub const IPV6_MULTICAST_HOPS: u32 = 18; -pub const IPV6_MULTICAST_LOOP: u32 = 19; -pub const IPV6_ADD_MEMBERSHIP: u32 = 20; -pub const IPV6_DROP_MEMBERSHIP: u32 = 21; -pub const IPV6_ROUTER_ALERT: u32 = 22; -pub const IPV6_MTU_DISCOVER: u32 = 23; -pub const IPV6_MTU: u32 = 24; -pub const IPV6_RECVERR: u32 = 25; -pub const IPV6_V6ONLY: u32 = 26; -pub const IPV6_JOIN_ANYCAST: u32 = 27; -pub const IPV6_LEAVE_ANYCAST: u32 = 28; -pub const IPV6_MULTICAST_ALL: u32 = 29; -pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; -pub const IPV6_RECVERR_RFC4884: u32 = 31; -pub const IPV6_PMTUDISC_DONT: u32 = 0; -pub const IPV6_PMTUDISC_WANT: u32 = 1; -pub const IPV6_PMTUDISC_DO: u32 = 2; -pub const IPV6_PMTUDISC_PROBE: u32 = 3; -pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; -pub const IPV6_PMTUDISC_OMIT: u32 = 5; -pub const IPV6_FLOWLABEL_MGR: u32 = 32; -pub const IPV6_FLOWINFO_SEND: u32 = 33; -pub const IPV6_IPSEC_POLICY: u32 = 34; -pub const IPV6_XFRM_POLICY: u32 = 35; -pub const IPV6_HDRINCL: u32 = 36; -pub const IPV6_RECVPKTINFO: u32 = 49; -pub const IPV6_PKTINFO: u32 = 50; -pub const IPV6_RECVHOPLIMIT: u32 = 51; -pub const IPV6_HOPLIMIT: u32 = 52; -pub const IPV6_RECVHOPOPTS: u32 = 53; -pub const IPV6_HOPOPTS: u32 = 54; -pub const IPV6_RTHDRDSTOPTS: u32 = 55; -pub const IPV6_RECVRTHDR: u32 = 56; -pub const IPV6_RTHDR: u32 = 57; -pub const IPV6_RECVDSTOPTS: u32 = 58; -pub const IPV6_DSTOPTS: u32 = 59; -pub const IPV6_RECVPATHMTU: u32 = 60; -pub const IPV6_PATHMTU: u32 = 61; -pub const IPV6_DONTFRAG: u32 = 62; -pub const IPV6_RECVTCLASS: u32 = 66; -pub const IPV6_TCLASS: u32 = 67; -pub const IPV6_AUTOFLOWLABEL: u32 = 70; -pub const IPV6_ADDR_PREFERENCES: u32 = 72; -pub const IPV6_PREFER_SRC_TMP: u32 = 1; -pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; -pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; -pub const IPV6_PREFER_SRC_COA: u32 = 4; -pub const IPV6_PREFER_SRC_HOME: u32 = 1024; -pub const IPV6_PREFER_SRC_CGA: u32 = 8; -pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; -pub const IPV6_MINHOPCOUNT: u32 = 73; -pub const IPV6_ORIGDSTADDR: u32 = 74; -pub const IPV6_RECVORIGDSTADDR: u32 = 74; -pub const IPV6_TRANSPARENT: u32 = 75; -pub const IPV6_UNICAST_IF: u32 = 76; -pub const IPV6_RECVFRAGSIZE: u32 = 77; -pub const IPV6_FREEBIND: u32 = 78; -pub const IPV6_MIN_MTU: u32 = 1280; -pub const IPV6_SRCRT_STRICT: u32 = 1; -pub const IPV6_SRCRT_TYPE_0: u32 = 0; -pub const IPV6_SRCRT_TYPE_2: u32 = 2; -pub const IPV6_SRCRT_TYPE_3: u32 = 3; -pub const IPV6_SRCRT_TYPE_4: u32 = 4; -pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; -pub const ADFS_SUPER_MAGIC: u32 = 44533; -pub const AFFS_SUPER_MAGIC: u32 = 44543; -pub const AFS_SUPER_MAGIC: u32 = 1397113167; -pub const AUTOFS_SUPER_MAGIC: u32 = 391; -pub const CEPH_SUPER_MAGIC: u32 = 12805120; -pub const CODA_SUPER_MAGIC: u32 = 1937076805; -pub const CRAMFS_MAGIC: u32 = 684539205; -pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; -pub const DEBUGFS_MAGIC: u32 = 1684170528; -pub const SECURITYFS_MAGIC: u32 = 1935894131; -pub const SELINUX_MAGIC: u32 = 4185718668; -pub const SMACK_MAGIC: u32 = 1128357203; -pub const RAMFS_MAGIC: u32 = 2240043254; -pub const TMPFS_MAGIC: u32 = 16914836; -pub const HUGETLBFS_MAGIC: u32 = 2508478710; -pub const SQUASHFS_MAGIC: u32 = 1936814952; -pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; -pub const EFS_SUPER_MAGIC: u32 = 4278867; -pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; -pub const EXT2_SUPER_MAGIC: u32 = 61267; -pub const EXT3_SUPER_MAGIC: u32 = 61267; -pub const XENFS_SUPER_MAGIC: u32 = 2881100148; -pub const EXT4_SUPER_MAGIC: u32 = 61267; -pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; -pub const NILFS_SUPER_MAGIC: u32 = 13364; -pub const F2FS_SUPER_MAGIC: u32 = 4076150800; -pub const HPFS_SUPER_MAGIC: u32 = 4187351113; -pub const ISOFS_SUPER_MAGIC: u32 = 38496; -pub const JFFS2_SUPER_MAGIC: u32 = 29366; -pub const XFS_SUPER_MAGIC: u32 = 1481003842; -pub const PSTOREFS_MAGIC: u32 = 1634035564; -pub const EFIVARFS_MAGIC: u32 = 3730735588; -pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; -pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; -pub const FUSE_SUPER_MAGIC: u32 = 1702057286; -pub const MINIX_SUPER_MAGIC: u32 = 4991; -pub const MINIX_SUPER_MAGIC2: u32 = 5007; -pub const MINIX2_SUPER_MAGIC: u32 = 9320; -pub const MINIX2_SUPER_MAGIC2: u32 = 9336; -pub const MINIX3_SUPER_MAGIC: u32 = 19802; -pub const MSDOS_SUPER_MAGIC: u32 = 19780; -pub const EXFAT_SUPER_MAGIC: u32 = 538032816; -pub const NCP_SUPER_MAGIC: u32 = 22092; -pub const NFS_SUPER_MAGIC: u32 = 26985; -pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; -pub const OPENPROM_SUPER_MAGIC: u32 = 40865; -pub const QNX4_SUPER_MAGIC: u32 = 47; -pub const QNX6_SUPER_MAGIC: u32 = 1746473250; -pub const AFS_FS_MAGIC: u32 = 1799439955; -pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; -pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0"; -pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0"; -pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0"; -pub const SMB_SUPER_MAGIC: u32 = 20859; -pub const CIFS_SUPER_MAGIC: u32 = 4283649346; -pub const SMB2_SUPER_MAGIC: u32 = 4266872130; -pub const CGROUP_SUPER_MAGIC: u32 = 2613483; -pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; -pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; -pub const STACK_END_MAGIC: u32 = 1470918301; -pub const TRACEFS_MAGIC: u32 = 1953653091; -pub const V9FS_MAGIC: u32 = 16914839; -pub const BDEVFS_MAGIC: u32 = 1650746742; -pub const DAXFS_MAGIC: u32 = 1684300152; -pub const BINFMTFS_MAGIC: u32 = 1112100429; -pub const DEVPTS_SUPER_MAGIC: u32 = 7377; -pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; -pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; -pub const PIPEFS_MAGIC: u32 = 1346981957; -pub const PROC_SUPER_MAGIC: u32 = 40864; -pub const SOCKFS_MAGIC: u32 = 1397703499; -pub const SYSFS_MAGIC: u32 = 1650812274; -pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; -pub const MTD_INODE_FS_MAGIC: u32 = 288389204; -pub const ANON_INODE_FS_MAGIC: u32 = 151263540; -pub const BTRFS_TEST_MAGIC: u32 = 1936880249; -pub const NSFS_MAGIC: u32 = 1853056627; -pub const BPF_FS_MAGIC: u32 = 3405662737; -pub const AAFS_MAGIC: u32 = 1513908720; -pub const ZONEFS_MAGIC: u32 = 1515144787; -pub const UDF_SUPER_MAGIC: u32 = 352400198; -pub const DMA_BUF_MAGIC: u32 = 1145913666; -pub const DEVMEM_MAGIC: u32 = 1162691661; -pub const SECRETMEM_MAGIC: u32 = 1397048141; -pub const PROT_NONE: u32 = 0; -pub const PROT_READ: u32 = 1; -pub const PROT_WRITE: u32 = 2; -pub const PROT_EXEC: u32 = 4; -pub const PROT_SEM: u32 = 16; -pub const PROT_GROWSDOWN: u32 = 16777216; -pub const PROT_GROWSUP: u32 = 33554432; -pub const MAP_TYPE: u32 = 15; -pub const MAP_FIXED: u32 = 16; -pub const MAP_RENAME: u32 = 32; -pub const MAP_AUTOGROW: u32 = 64; -pub const MAP_LOCAL: u32 = 128; -pub const MAP_AUTORSRV: u32 = 256; -pub const MAP_NORESERVE: u32 = 1024; -pub const MAP_ANONYMOUS: u32 = 2048; -pub const MAP_GROWSDOWN: u32 = 4096; -pub const MAP_DENYWRITE: u32 = 8192; -pub const MAP_EXECUTABLE: u32 = 16384; -pub const MAP_LOCKED: u32 = 32768; -pub const MAP_POPULATE: u32 = 65536; -pub const MAP_NONBLOCK: u32 = 131072; -pub const MAP_STACK: u32 = 262144; -pub const MAP_HUGETLB: u32 = 524288; -pub const MAP_FIXED_NOREPLACE: u32 = 1048576; -pub const MS_ASYNC: u32 = 1; -pub const MS_INVALIDATE: u32 = 2; -pub const MS_SYNC: u32 = 4; -pub const MCL_CURRENT: u32 = 1; -pub const MCL_FUTURE: u32 = 2; -pub const MCL_ONFAULT: u32 = 4; -pub const MLOCK_ONFAULT: u32 = 1; -pub const MADV_NORMAL: u32 = 0; -pub const MADV_RANDOM: u32 = 1; -pub const MADV_SEQUENTIAL: u32 = 2; -pub const MADV_WILLNEED: u32 = 3; -pub const MADV_DONTNEED: u32 = 4; -pub const MADV_FREE: u32 = 8; -pub const MADV_REMOVE: u32 = 9; -pub const MADV_DONTFORK: u32 = 10; -pub const MADV_DOFORK: u32 = 11; -pub const MADV_MERGEABLE: u32 = 12; -pub const MADV_UNMERGEABLE: u32 = 13; -pub const MADV_HWPOISON: u32 = 100; -pub const MADV_HUGEPAGE: u32 = 14; -pub const MADV_NOHUGEPAGE: u32 = 15; -pub const MADV_DONTDUMP: u32 = 16; -pub const MADV_DODUMP: u32 = 17; -pub const MADV_WIPEONFORK: u32 = 18; -pub const MADV_KEEPONFORK: u32 = 19; -pub const MADV_COLD: u32 = 20; -pub const MADV_PAGEOUT: u32 = 21; -pub const MADV_POPULATE_READ: u32 = 22; -pub const MADV_POPULATE_WRITE: u32 = 23; -pub const MADV_DONTNEED_LOCKED: u32 = 24; -pub const MADV_COLLAPSE: u32 = 25; -pub const MAP_FILE: u32 = 0; -pub const PKEY_DISABLE_ACCESS: u32 = 1; -pub const PKEY_DISABLE_WRITE: u32 = 2; -pub const PKEY_ACCESS_MASK: u32 = 3; -pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; -pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; -pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; -pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; -pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; -pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; -pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; -pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; -pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; -pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; -pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; -pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; -pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; -pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; -pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; -pub const MREMAP_MAYMOVE: u32 = 1; -pub const MREMAP_FIXED: u32 = 2; -pub const MREMAP_DONTUNMAP: u32 = 4; -pub const OVERCOMMIT_GUESS: u32 = 0; -pub const OVERCOMMIT_ALWAYS: u32 = 1; -pub const OVERCOMMIT_NEVER: u32 = 2; -pub const MAP_SHARED: u32 = 1; -pub const MAP_PRIVATE: u32 = 2; -pub const MAP_SHARED_VALIDATE: u32 = 3; -pub const MAP_HUGE_SHIFT: u32 = 26; -pub const MAP_HUGE_MASK: u32 = 63; -pub const MAP_HUGE_16KB: u32 = 939524096; -pub const MAP_HUGE_64KB: u32 = 1073741824; -pub const MAP_HUGE_512KB: u32 = 1275068416; -pub const MAP_HUGE_1MB: u32 = 1342177280; -pub const MAP_HUGE_2MB: u32 = 1409286144; -pub const MAP_HUGE_8MB: u32 = 1543503872; -pub const MAP_HUGE_16MB: u32 = 1610612736; -pub const MAP_HUGE_32MB: u32 = 1677721600; -pub const MAP_HUGE_256MB: u32 = 1879048192; -pub const MAP_HUGE_512MB: u32 = 1946157056; -pub const MAP_HUGE_1GB: u32 = 2013265920; -pub const MAP_HUGE_2GB: u32 = 2080374784; -pub const MAP_HUGE_16GB: u32 = 2281701376; -pub const SIOCGSTAMP_OLD: u32 = 35078; -pub const SIOCGSTAMPNS_OLD: u32 = 35079; -pub const SOL_SOCKET: u32 = 65535; -pub const SO_DEBUG: u32 = 1; -pub const SO_REUSEADDR: u32 = 4; -pub const SO_KEEPALIVE: u32 = 8; -pub const SO_DONTROUTE: u32 = 16; -pub const SO_BROADCAST: u32 = 32; -pub const SO_LINGER: u32 = 128; -pub const SO_OOBINLINE: u32 = 256; -pub const SO_REUSEPORT: u32 = 512; -pub const SO_TYPE: u32 = 4104; -pub const SO_STYLE: u32 = 4104; -pub const SO_ERROR: u32 = 4103; -pub const SO_SNDBUF: u32 = 4097; -pub const SO_RCVBUF: u32 = 4098; -pub const SO_SNDLOWAT: u32 = 4099; -pub const SO_RCVLOWAT: u32 = 4100; -pub const SO_SNDTIMEO_OLD: u32 = 4101; -pub const SO_RCVTIMEO_OLD: u32 = 4102; -pub const SO_ACCEPTCONN: u32 = 4105; -pub const SO_PROTOCOL: u32 = 4136; -pub const SO_DOMAIN: u32 = 4137; -pub const SO_NO_CHECK: u32 = 11; -pub const SO_PRIORITY: u32 = 12; -pub const SO_BSDCOMPAT: u32 = 14; -pub const SO_PASSCRED: u32 = 17; -pub const SO_PEERCRED: u32 = 18; -pub const SO_SECURITY_AUTHENTICATION: u32 = 22; -pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; -pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; -pub const SO_BINDTODEVICE: u32 = 25; -pub const SO_ATTACH_FILTER: u32 = 26; -pub const SO_DETACH_FILTER: u32 = 27; -pub const SO_GET_FILTER: u32 = 26; -pub const SO_PEERNAME: u32 = 28; -pub const SO_PEERSEC: u32 = 30; -pub const SO_SNDBUFFORCE: u32 = 31; -pub const SO_RCVBUFFORCE: u32 = 33; -pub const SO_PASSSEC: u32 = 34; -pub const SO_MARK: u32 = 36; -pub const SO_RXQ_OVFL: u32 = 40; -pub const SO_WIFI_STATUS: u32 = 41; -pub const SCM_WIFI_STATUS: u32 = 41; -pub const SO_PEEK_OFF: u32 = 42; -pub const SO_NOFCS: u32 = 43; -pub const SO_LOCK_FILTER: u32 = 44; -pub const SO_SELECT_ERR_QUEUE: u32 = 45; -pub const SO_BUSY_POLL: u32 = 46; -pub const SO_MAX_PACING_RATE: u32 = 47; -pub const SO_BPF_EXTENSIONS: u32 = 48; -pub const SO_INCOMING_CPU: u32 = 49; -pub const SO_ATTACH_BPF: u32 = 50; -pub const SO_DETACH_BPF: u32 = 27; -pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; -pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; -pub const SO_CNX_ADVICE: u32 = 53; -pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; -pub const SO_MEMINFO: u32 = 55; -pub const SO_INCOMING_NAPI_ID: u32 = 56; -pub const SO_COOKIE: u32 = 57; -pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; -pub const SO_PEERGROUPS: u32 = 59; -pub const SO_ZEROCOPY: u32 = 60; -pub const SO_TXTIME: u32 = 61; -pub const SCM_TXTIME: u32 = 61; -pub const SO_BINDTOIFINDEX: u32 = 62; -pub const SO_TIMESTAMP_OLD: u32 = 29; -pub const SO_TIMESTAMPNS_OLD: u32 = 35; -pub const SO_TIMESTAMPING_OLD: u32 = 37; -pub const SO_TIMESTAMP_NEW: u32 = 63; -pub const SO_TIMESTAMPNS_NEW: u32 = 64; -pub const SO_TIMESTAMPING_NEW: u32 = 65; -pub const SO_RCVTIMEO_NEW: u32 = 66; -pub const SO_SNDTIMEO_NEW: u32 = 67; -pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; -pub const SO_PREFER_BUSY_POLL: u32 = 69; -pub const SO_BUSY_POLL_BUDGET: u32 = 70; -pub const SO_NETNS_COOKIE: u32 = 71; -pub const SO_BUF_LOCK: u32 = 72; -pub const SO_RESERVE_MEM: u32 = 73; -pub const SO_TXREHASH: u32 = 74; -pub const SO_RCVMARK: u32 = 75; -pub const SYS_SOCKET: u32 = 1; -pub const SYS_BIND: u32 = 2; -pub const SYS_CONNECT: u32 = 3; -pub const SYS_LISTEN: u32 = 4; -pub const SYS_ACCEPT: u32 = 5; -pub const SYS_GETSOCKNAME: u32 = 6; -pub const SYS_GETPEERNAME: u32 = 7; -pub const SYS_SOCKETPAIR: u32 = 8; -pub const SYS_SEND: u32 = 9; -pub const SYS_RECV: u32 = 10; -pub const SYS_SENDTO: u32 = 11; -pub const SYS_RECVFROM: u32 = 12; -pub const SYS_SHUTDOWN: u32 = 13; -pub const SYS_SETSOCKOPT: u32 = 14; -pub const SYS_GETSOCKOPT: u32 = 15; -pub const SYS_SENDMSG: u32 = 16; -pub const SYS_RECVMSG: u32 = 17; -pub const SYS_ACCEPT4: u32 = 18; -pub const SYS_RECVMMSG: u32 = 19; -pub const SYS_SENDMMSG: u32 = 20; -pub const __SO_ACCEPTCON: u32 = 65536; -pub const POLLWRBAND: u32 = 256; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const POLLMSG: u32 = 1024; -pub const POLLREMOVE: u32 = 4096; -pub const POLLRDHUP: u32 = 8192; -pub const PR_SET_PDEATHSIG: u32 = 1; -pub const PR_GET_PDEATHSIG: u32 = 2; -pub const PR_GET_DUMPABLE: u32 = 3; -pub const PR_SET_DUMPABLE: u32 = 4; -pub const PR_GET_UNALIGN: u32 = 5; -pub const PR_SET_UNALIGN: u32 = 6; -pub const PR_UNALIGN_NOPRINT: u32 = 1; -pub const PR_UNALIGN_SIGBUS: u32 = 2; -pub const PR_GET_KEEPCAPS: u32 = 7; -pub const PR_SET_KEEPCAPS: u32 = 8; -pub const PR_GET_FPEMU: u32 = 9; -pub const PR_SET_FPEMU: u32 = 10; -pub const PR_FPEMU_NOPRINT: u32 = 1; -pub const PR_FPEMU_SIGFPE: u32 = 2; -pub const PR_GET_FPEXC: u32 = 11; -pub const PR_SET_FPEXC: u32 = 12; -pub const PR_FP_EXC_SW_ENABLE: u32 = 128; -pub const PR_FP_EXC_DIV: u32 = 65536; -pub const PR_FP_EXC_OVF: u32 = 131072; -pub const PR_FP_EXC_UND: u32 = 262144; -pub const PR_FP_EXC_RES: u32 = 524288; -pub const PR_FP_EXC_INV: u32 = 1048576; -pub const PR_FP_EXC_DISABLED: u32 = 0; -pub const PR_FP_EXC_NONRECOV: u32 = 1; -pub const PR_FP_EXC_ASYNC: u32 = 2; -pub const PR_FP_EXC_PRECISE: u32 = 3; -pub const PR_GET_TIMING: u32 = 13; -pub const PR_SET_TIMING: u32 = 14; -pub const PR_TIMING_STATISTICAL: u32 = 0; -pub const PR_TIMING_TIMESTAMP: u32 = 1; -pub const PR_SET_NAME: u32 = 15; -pub const PR_GET_NAME: u32 = 16; -pub const PR_GET_ENDIAN: u32 = 19; -pub const PR_SET_ENDIAN: u32 = 20; -pub const PR_ENDIAN_BIG: u32 = 0; -pub const PR_ENDIAN_LITTLE: u32 = 1; -pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; -pub const PR_GET_SECCOMP: u32 = 21; -pub const PR_SET_SECCOMP: u32 = 22; -pub const PR_CAPBSET_READ: u32 = 23; -pub const PR_CAPBSET_DROP: u32 = 24; -pub const PR_GET_TSC: u32 = 25; -pub const PR_SET_TSC: u32 = 26; -pub const PR_TSC_ENABLE: u32 = 1; -pub const PR_TSC_SIGSEGV: u32 = 2; -pub const PR_GET_SECUREBITS: u32 = 27; -pub const PR_SET_SECUREBITS: u32 = 28; -pub const PR_SET_TIMERSLACK: u32 = 29; -pub const PR_GET_TIMERSLACK: u32 = 30; -pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; -pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; -pub const PR_MCE_KILL: u32 = 33; -pub const PR_MCE_KILL_CLEAR: u32 = 0; -pub const PR_MCE_KILL_SET: u32 = 1; -pub const PR_MCE_KILL_LATE: u32 = 0; -pub const PR_MCE_KILL_EARLY: u32 = 1; -pub const PR_MCE_KILL_DEFAULT: u32 = 2; -pub const PR_MCE_KILL_GET: u32 = 34; -pub const PR_SET_MM: u32 = 35; -pub const PR_SET_MM_START_CODE: u32 = 1; -pub const PR_SET_MM_END_CODE: u32 = 2; -pub const PR_SET_MM_START_DATA: u32 = 3; -pub const PR_SET_MM_END_DATA: u32 = 4; -pub const PR_SET_MM_START_STACK: u32 = 5; -pub const PR_SET_MM_START_BRK: u32 = 6; -pub const PR_SET_MM_BRK: u32 = 7; -pub const PR_SET_MM_ARG_START: u32 = 8; -pub const PR_SET_MM_ARG_END: u32 = 9; -pub const PR_SET_MM_ENV_START: u32 = 10; -pub const PR_SET_MM_ENV_END: u32 = 11; -pub const PR_SET_MM_AUXV: u32 = 12; -pub const PR_SET_MM_EXE_FILE: u32 = 13; -pub const PR_SET_MM_MAP: u32 = 14; -pub const PR_SET_MM_MAP_SIZE: u32 = 15; -pub const PR_SET_PTRACER: u32 = 1499557217; -pub const PR_SET_CHILD_SUBREAPER: u32 = 36; -pub const PR_GET_CHILD_SUBREAPER: u32 = 37; -pub const PR_SET_NO_NEW_PRIVS: u32 = 38; -pub const PR_GET_NO_NEW_PRIVS: u32 = 39; -pub const PR_GET_TID_ADDRESS: u32 = 40; -pub const PR_SET_THP_DISABLE: u32 = 41; -pub const PR_GET_THP_DISABLE: u32 = 42; -pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; -pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; -pub const PR_SET_FP_MODE: u32 = 45; -pub const PR_GET_FP_MODE: u32 = 46; -pub const PR_FP_MODE_FR: u32 = 1; -pub const PR_FP_MODE_FRE: u32 = 2; -pub const PR_CAP_AMBIENT: u32 = 47; -pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; -pub const PR_CAP_AMBIENT_RAISE: u32 = 2; -pub const PR_CAP_AMBIENT_LOWER: u32 = 3; -pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; -pub const PR_SVE_SET_VL: u32 = 50; -pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SVE_GET_VL: u32 = 51; -pub const PR_SVE_VL_LEN_MASK: u32 = 65535; -pub const PR_SVE_VL_INHERIT: u32 = 131072; -pub const PR_GET_SPECULATION_CTRL: u32 = 52; -pub const PR_SET_SPECULATION_CTRL: u32 = 53; -pub const PR_SPEC_STORE_BYPASS: u32 = 0; -pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; -pub const PR_SPEC_L1D_FLUSH: u32 = 2; -pub const PR_SPEC_NOT_AFFECTED: u32 = 0; -pub const PR_SPEC_PRCTL: u32 = 1; -pub const PR_SPEC_ENABLE: u32 = 2; -pub const PR_SPEC_DISABLE: u32 = 4; -pub const PR_SPEC_FORCE_DISABLE: u32 = 8; -pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; -pub const PR_PAC_RESET_KEYS: u32 = 54; -pub const PR_PAC_APIAKEY: u32 = 1; -pub const PR_PAC_APIBKEY: u32 = 2; -pub const PR_PAC_APDAKEY: u32 = 4; -pub const PR_PAC_APDBKEY: u32 = 8; -pub const PR_PAC_APGAKEY: u32 = 16; -pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; -pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; -pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; -pub const PR_MTE_TCF_NONE: u32 = 0; -pub const PR_MTE_TCF_SYNC: u32 = 2; -pub const PR_MTE_TCF_ASYNC: u32 = 4; -pub const PR_MTE_TCF_MASK: u32 = 6; -pub const PR_MTE_TAG_SHIFT: u32 = 3; -pub const PR_MTE_TAG_MASK: u32 = 524280; -pub const PR_MTE_TCF_SHIFT: u32 = 1; -pub const PR_SET_IO_FLUSHER: u32 = 57; -pub const PR_GET_IO_FLUSHER: u32 = 58; -pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; -pub const PR_SYS_DISPATCH_OFF: u32 = 0; -pub const PR_SYS_DISPATCH_ON: u32 = 1; -pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; -pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; -pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; -pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; -pub const PR_SCHED_CORE: u32 = 62; -pub const PR_SCHED_CORE_GET: u32 = 0; -pub const PR_SCHED_CORE_CREATE: u32 = 1; -pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; -pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; -pub const PR_SCHED_CORE_MAX: u32 = 4; -pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; -pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; -pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; -pub const PR_SME_SET_VL: u32 = 63; -pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SME_GET_VL: u32 = 64; -pub const PR_SME_VL_LEN_MASK: u32 = 65535; -pub const PR_SME_VL_INHERIT: u32 = 131072; -pub const PR_SET_MDWE: u32 = 65; -pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; -pub const PR_GET_MDWE: u32 = 66; -pub const PR_SET_VMA: u32 = 1398164801; -pub const PR_SET_VMA_ANON_NAME: u32 = 0; -pub const GRND_NONBLOCK: u32 = 1; -pub const GRND_RANDOM: u32 = 2; -pub const GRND_INSECURE: u32 = 4; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -pub const CLOCK_REALTIME: u32 = 0; -pub const CLOCK_MONOTONIC: u32 = 1; -pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; -pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; -pub const CLOCK_MONOTONIC_RAW: u32 = 4; -pub const CLOCK_REALTIME_COARSE: u32 = 5; -pub const CLOCK_MONOTONIC_COARSE: u32 = 6; -pub const CLOCK_BOOTTIME: u32 = 7; -pub const CLOCK_REALTIME_ALARM: u32 = 8; -pub const CLOCK_BOOTTIME_ALARM: u32 = 9; -pub const CLOCK_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const RUSAGE_SELF: u32 = 0; -pub const RUSAGE_CHILDREN: i32 = -1; -pub const RUSAGE_BOTH: i32 = -2; -pub const RUSAGE_THREAD: u32 = 1; -pub const RLIM64_INFINITY: i32 = -1; -pub const PRIO_MIN: i32 = -20; -pub const PRIO_MAX: u32 = 20; -pub const PRIO_PROCESS: u32 = 0; -pub const PRIO_PGRP: u32 = 1; -pub const PRIO_USER: u32 = 2; -pub const _STK_LIM: u32 = 8388608; -pub const MLOCK_LIMIT: u32 = 8388608; -pub const RLIMIT_NOFILE: u32 = 5; -pub const RLIMIT_AS: u32 = 6; -pub const RLIMIT_RSS: u32 = 7; -pub const RLIMIT_NPROC: u32 = 8; -pub const RLIMIT_MEMLOCK: u32 = 9; -pub const RLIM_INFINITY: u32 = 2147483647; -pub const RLIMIT_CPU: u32 = 0; -pub const RLIMIT_FSIZE: u32 = 1; -pub const RLIMIT_DATA: u32 = 2; -pub const RLIMIT_STACK: u32 = 3; -pub const RLIMIT_CORE: u32 = 4; -pub const RLIMIT_LOCKS: u32 = 10; -pub const RLIMIT_SIGPENDING: u32 = 11; -pub const RLIMIT_MSGQUEUE: u32 = 12; -pub const RLIMIT_NICE: u32 = 13; -pub const RLIMIT_RTPRIO: u32 = 14; -pub const RLIMIT_RTTIME: u32 = 15; -pub const RLIM_NLIMITS: u32 = 16; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const _NSIG: u32 = 128; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGIOT: u32 = 6; -pub const SIGABRT: u32 = 6; -pub const SIGEMT: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGBUS: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGSYS: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGUSR1: u32 = 16; -pub const SIGUSR2: u32 = 17; -pub const SIGCHLD: u32 = 18; -pub const SIGCLD: u32 = 18; -pub const SIGPWR: u32 = 19; -pub const SIGWINCH: u32 = 20; -pub const SIGURG: u32 = 21; -pub const SIGIO: u32 = 22; -pub const SIGPOLL: u32 = 22; -pub const SIGSTOP: u32 = 23; -pub const SIGTSTP: u32 = 24; -pub const SIGCONT: u32 = 25; -pub const SIGTTIN: u32 = 26; -pub const SIGTTOU: u32 = 27; -pub const SIGVTALRM: u32 = 28; -pub const SIGPROF: u32 = 29; -pub const SIGXCPU: u32 = 30; -pub const SIGXFSZ: u32 = 31; -pub const SIGRTMIN: u32 = 32; -pub const SIGRTMAX: u32 = 128; -pub const SA_ONSTACK: u32 = 134217728; -pub const SA_RESETHAND: u32 = 2147483648; -pub const SA_RESTART: u32 = 268435456; -pub const SA_SIGINFO: u32 = 8; -pub const SA_NODEFER: u32 = 1073741824; -pub const SA_NOCLDWAIT: u32 = 65536; -pub const SA_NOCLDSTOP: u32 = 1; -pub const SA_NOMASK: u32 = 1073741824; -pub const SA_ONESHOT: u32 = 2147483648; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; -pub const SIG_BLOCK: u32 = 1; -pub const SIG_UNBLOCK: u32 = 2; -pub const SIG_SETMASK: u32 = 3; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; -pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const S_IFMT: u32 = 61440; -pub const S_IFSOCK: u32 = 49152; -pub const S_IFLNK: u32 = 40960; -pub const S_IFREG: u32 = 32768; -pub const S_IFBLK: u32 = 24576; -pub const S_IFDIR: u32 = 16384; -pub const S_IFCHR: u32 = 8192; -pub const S_IFIFO: u32 = 4096; -pub const S_ISUID: u32 = 2048; -pub const S_ISGID: u32 = 1024; -pub const S_ISVTX: u32 = 512; -pub const S_IRWXU: u32 = 448; -pub const S_IRUSR: u32 = 256; -pub const S_IWUSR: u32 = 128; -pub const S_IXUSR: u32 = 64; -pub const S_IRWXG: u32 = 56; -pub const S_IRGRP: u32 = 32; -pub const S_IWGRP: u32 = 16; -pub const S_IXGRP: u32 = 8; -pub const S_IRWXO: u32 = 7; -pub const S_IROTH: u32 = 4; -pub const S_IWOTH: u32 = 2; -pub const S_IXOTH: u32 = 1; -pub const STATX_TYPE: u32 = 1; -pub const STATX_MODE: u32 = 2; -pub const STATX_NLINK: u32 = 4; -pub const STATX_UID: u32 = 8; -pub const STATX_GID: u32 = 16; -pub const STATX_ATIME: u32 = 32; -pub const STATX_MTIME: u32 = 64; -pub const STATX_CTIME: u32 = 128; -pub const STATX_INO: u32 = 256; -pub const STATX_SIZE: u32 = 512; -pub const STATX_BLOCKS: u32 = 1024; -pub const STATX_BASIC_STATS: u32 = 2047; -pub const STATX_BTIME: u32 = 2048; -pub const STATX_MNT_ID: u32 = 4096; -pub const STATX_DIOALIGN: u32 = 8192; -pub const STATX__RESERVED: u32 = 2147483648; -pub const STATX_ALL: u32 = 4095; -pub const STATX_ATTR_COMPRESSED: u32 = 4; -pub const STATX_ATTR_IMMUTABLE: u32 = 16; -pub const STATX_ATTR_APPEND: u32 = 32; -pub const STATX_ATTR_NODUMP: u32 = 64; -pub const STATX_ATTR_ENCRYPTED: u32 = 2048; -pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; -pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; -pub const STATX_ATTR_VERITY: u32 = 1048576; -pub const STATX_ATTR_DAX: u32 = 2097152; -pub const SI_LOAD_SHIFT: u32 = 16; -pub const TCP_MSS_DEFAULT: u32 = 536; -pub const TCP_MSS_DESIRED: u32 = 1220; -pub const TCP_NODELAY: u32 = 1; -pub const TCP_MAXSEG: u32 = 2; -pub const TCP_CORK: u32 = 3; -pub const TCP_KEEPIDLE: u32 = 4; -pub const TCP_KEEPINTVL: u32 = 5; -pub const TCP_KEEPCNT: u32 = 6; -pub const TCP_SYNCNT: u32 = 7; -pub const TCP_LINGER2: u32 = 8; -pub const TCP_DEFER_ACCEPT: u32 = 9; -pub const TCP_WINDOW_CLAMP: u32 = 10; -pub const TCP_INFO: u32 = 11; -pub const TCP_QUICKACK: u32 = 12; -pub const TCP_CONGESTION: u32 = 13; -pub const TCP_MD5SIG: u32 = 14; -pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; -pub const TCP_THIN_DUPACK: u32 = 17; -pub const TCP_USER_TIMEOUT: u32 = 18; -pub const TCP_REPAIR: u32 = 19; -pub const TCP_REPAIR_QUEUE: u32 = 20; -pub const TCP_QUEUE_SEQ: u32 = 21; -pub const TCP_REPAIR_OPTIONS: u32 = 22; -pub const TCP_FASTOPEN: u32 = 23; -pub const TCP_TIMESTAMP: u32 = 24; -pub const TCP_NOTSENT_LOWAT: u32 = 25; -pub const TCP_CC_INFO: u32 = 26; -pub const TCP_SAVE_SYN: u32 = 27; -pub const TCP_SAVED_SYN: u32 = 28; -pub const TCP_REPAIR_WINDOW: u32 = 29; -pub const TCP_FASTOPEN_CONNECT: u32 = 30; -pub const TCP_ULP: u32 = 31; -pub const TCP_MD5SIG_EXT: u32 = 32; -pub const TCP_FASTOPEN_KEY: u32 = 33; -pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; -pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; -pub const TCP_INQ: u32 = 36; -pub const TCP_CM_INQ: u32 = 36; -pub const TCP_TX_DELAY: u32 = 37; -pub const TCP_REPAIR_ON: u32 = 1; -pub const TCP_REPAIR_OFF: u32 = 0; -pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; -pub const TCPI_OPT_TIMESTAMPS: u32 = 1; -pub const TCPI_OPT_SACK: u32 = 2; -pub const TCPI_OPT_WSCALE: u32 = 4; -pub const TCPI_OPT_ECN: u32 = 8; -pub const TCPI_OPT_ECN_SEEN: u32 = 16; -pub const TCPI_OPT_SYN_DATA: u32 = 32; -pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; -pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; -pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; -pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; -pub const EPERM: u32 = 1; -pub const ENOENT: u32 = 2; -pub const ESRCH: u32 = 3; -pub const EINTR: u32 = 4; -pub const EIO: u32 = 5; -pub const ENXIO: u32 = 6; -pub const E2BIG: u32 = 7; -pub const ENOEXEC: u32 = 8; -pub const EBADF: u32 = 9; -pub const ECHILD: u32 = 10; -pub const EAGAIN: u32 = 11; -pub const ENOMEM: u32 = 12; -pub const EACCES: u32 = 13; -pub const EFAULT: u32 = 14; -pub const ENOTBLK: u32 = 15; -pub const EBUSY: u32 = 16; -pub const EEXIST: u32 = 17; -pub const EXDEV: u32 = 18; -pub const ENODEV: u32 = 19; -pub const ENOTDIR: u32 = 20; -pub const EISDIR: u32 = 21; -pub const EINVAL: u32 = 22; -pub const ENFILE: u32 = 23; -pub const EMFILE: u32 = 24; -pub const ENOTTY: u32 = 25; -pub const ETXTBSY: u32 = 26; -pub const EFBIG: u32 = 27; -pub const ENOSPC: u32 = 28; -pub const ESPIPE: u32 = 29; -pub const EROFS: u32 = 30; -pub const EMLINK: u32 = 31; -pub const EPIPE: u32 = 32; -pub const EDOM: u32 = 33; -pub const ERANGE: u32 = 34; -pub const ENOMSG: u32 = 35; -pub const EIDRM: u32 = 36; -pub const ECHRNG: u32 = 37; -pub const EL2NSYNC: u32 = 38; -pub const EL3HLT: u32 = 39; -pub const EL3RST: u32 = 40; -pub const ELNRNG: u32 = 41; -pub const EUNATCH: u32 = 42; -pub const ENOCSI: u32 = 43; -pub const EL2HLT: u32 = 44; -pub const EDEADLK: u32 = 45; -pub const ENOLCK: u32 = 46; -pub const EBADE: u32 = 50; -pub const EBADR: u32 = 51; -pub const EXFULL: u32 = 52; -pub const ENOANO: u32 = 53; -pub const EBADRQC: u32 = 54; -pub const EBADSLT: u32 = 55; -pub const EDEADLOCK: u32 = 56; -pub const EBFONT: u32 = 59; -pub const ENOSTR: u32 = 60; -pub const ENODATA: u32 = 61; -pub const ETIME: u32 = 62; -pub const ENOSR: u32 = 63; -pub const ENONET: u32 = 64; -pub const ENOPKG: u32 = 65; -pub const EREMOTE: u32 = 66; -pub const ENOLINK: u32 = 67; -pub const EADV: u32 = 68; -pub const ESRMNT: u32 = 69; -pub const ECOMM: u32 = 70; -pub const EPROTO: u32 = 71; -pub const EDOTDOT: u32 = 73; -pub const EMULTIHOP: u32 = 74; -pub const EBADMSG: u32 = 77; -pub const ENAMETOOLONG: u32 = 78; -pub const EOVERFLOW: u32 = 79; -pub const ENOTUNIQ: u32 = 80; -pub const EBADFD: u32 = 81; -pub const EREMCHG: u32 = 82; -pub const ELIBACC: u32 = 83; -pub const ELIBBAD: u32 = 84; -pub const ELIBSCN: u32 = 85; -pub const ELIBMAX: u32 = 86; -pub const ELIBEXEC: u32 = 87; -pub const EILSEQ: u32 = 88; -pub const ENOSYS: u32 = 89; -pub const ELOOP: u32 = 90; -pub const ERESTART: u32 = 91; -pub const ESTRPIPE: u32 = 92; -pub const ENOTEMPTY: u32 = 93; -pub const EUSERS: u32 = 94; -pub const ENOTSOCK: u32 = 95; -pub const EDESTADDRREQ: u32 = 96; -pub const EMSGSIZE: u32 = 97; -pub const EPROTOTYPE: u32 = 98; -pub const ENOPROTOOPT: u32 = 99; -pub const EPROTONOSUPPORT: u32 = 120; -pub const ESOCKTNOSUPPORT: u32 = 121; -pub const EOPNOTSUPP: u32 = 122; -pub const EPFNOSUPPORT: u32 = 123; -pub const EAFNOSUPPORT: u32 = 124; -pub const EADDRINUSE: u32 = 125; -pub const EADDRNOTAVAIL: u32 = 126; -pub const ENETDOWN: u32 = 127; -pub const ENETUNREACH: u32 = 128; -pub const ENETRESET: u32 = 129; -pub const ECONNABORTED: u32 = 130; -pub const ECONNRESET: u32 = 131; -pub const ENOBUFS: u32 = 132; -pub const EISCONN: u32 = 133; -pub const ENOTCONN: u32 = 134; -pub const EUCLEAN: u32 = 135; -pub const ENOTNAM: u32 = 137; -pub const ENAVAIL: u32 = 138; -pub const EISNAM: u32 = 139; -pub const EREMOTEIO: u32 = 140; -pub const EINIT: u32 = 141; -pub const EREMDEV: u32 = 142; -pub const ESHUTDOWN: u32 = 143; -pub const ETOOMANYREFS: u32 = 144; -pub const ETIMEDOUT: u32 = 145; -pub const ECONNREFUSED: u32 = 146; -pub const EHOSTDOWN: u32 = 147; -pub const EHOSTUNREACH: u32 = 148; -pub const EWOULDBLOCK: u32 = 11; -pub const EALREADY: u32 = 149; -pub const EINPROGRESS: u32 = 150; -pub const ESTALE: u32 = 151; -pub const ECANCELED: u32 = 158; -pub const ENOMEDIUM: u32 = 159; -pub const EMEDIUMTYPE: u32 = 160; -pub const ENOKEY: u32 = 161; -pub const EKEYEXPIRED: u32 = 162; -pub const EKEYREVOKED: u32 = 163; -pub const EKEYREJECTED: u32 = 164; -pub const EOWNERDEAD: u32 = 165; -pub const ENOTRECOVERABLE: u32 = 166; -pub const ERFKILL: u32 = 167; -pub const EHWPOISON: u32 = 168; -pub const EDQUOT: u32 = 1133; -pub const IGNBRK: u32 = 1; -pub const BRKINT: u32 = 2; -pub const IGNPAR: u32 = 4; -pub const PARMRK: u32 = 8; -pub const INPCK: u32 = 16; -pub const ISTRIP: u32 = 32; -pub const INLCR: u32 = 64; -pub const IGNCR: u32 = 128; -pub const ICRNL: u32 = 256; -pub const IXANY: u32 = 2048; -pub const OPOST: u32 = 1; -pub const OCRNL: u32 = 8; -pub const ONOCR: u32 = 16; -pub const ONLRET: u32 = 32; -pub const OFILL: u32 = 64; -pub const OFDEL: u32 = 128; -pub const B0: u32 = 0; -pub const B50: u32 = 1; -pub const B75: u32 = 2; -pub const B110: u32 = 3; -pub const B134: u32 = 4; -pub const B150: u32 = 5; -pub const B200: u32 = 6; -pub const B300: u32 = 7; -pub const B600: u32 = 8; -pub const B1200: u32 = 9; -pub const B1800: u32 = 10; -pub const B2400: u32 = 11; -pub const B4800: u32 = 12; -pub const B9600: u32 = 13; -pub const B19200: u32 = 14; -pub const B38400: u32 = 15; -pub const EXTA: u32 = 14; -pub const EXTB: u32 = 15; -pub const ADDRB: u32 = 536870912; -pub const CMSPAR: u32 = 1073741824; -pub const CRTSCTS: u32 = 2147483648; -pub const IBSHIFT: u32 = 16; -pub const TCOOFF: u32 = 0; -pub const TCOON: u32 = 1; -pub const TCIOFF: u32 = 2; -pub const TCION: u32 = 3; -pub const TCIFLUSH: u32 = 0; -pub const TCOFLUSH: u32 = 1; -pub const TCIOFLUSH: u32 = 2; -pub const NCCS: u32 = 23; -pub const VINTR: u32 = 0; -pub const VQUIT: u32 = 1; -pub const VERASE: u32 = 2; -pub const VKILL: u32 = 3; -pub const VMIN: u32 = 4; -pub const VTIME: u32 = 5; -pub const VEOL2: u32 = 6; -pub const VSWTC: u32 = 7; -pub const VSWTCH: u32 = 7; -pub const VSTART: u32 = 8; -pub const VSTOP: u32 = 9; -pub const VSUSP: u32 = 10; -pub const VREPRINT: u32 = 12; -pub const VDISCARD: u32 = 13; -pub const VWERASE: u32 = 14; -pub const VLNEXT: u32 = 15; -pub const VEOF: u32 = 16; -pub const VEOL: u32 = 17; -pub const IUCLC: u32 = 512; -pub const IXON: u32 = 1024; -pub const IXOFF: u32 = 4096; -pub const IMAXBEL: u32 = 8192; -pub const IUTF8: u32 = 16384; -pub const OLCUC: u32 = 2; -pub const ONLCR: u32 = 4; -pub const NLDLY: u32 = 256; -pub const NL0: u32 = 0; -pub const NL1: u32 = 256; -pub const CRDLY: u32 = 1536; -pub const CR0: u32 = 0; -pub const CR1: u32 = 512; -pub const CR2: u32 = 1024; -pub const CR3: u32 = 1536; -pub const TABDLY: u32 = 6144; -pub const TAB0: u32 = 0; -pub const TAB1: u32 = 2048; -pub const TAB2: u32 = 4096; -pub const TAB3: u32 = 6144; -pub const XTABS: u32 = 6144; -pub const BSDLY: u32 = 8192; -pub const BS0: u32 = 0; -pub const BS1: u32 = 8192; -pub const VTDLY: u32 = 16384; -pub const VT0: u32 = 0; -pub const VT1: u32 = 16384; -pub const FFDLY: u32 = 32768; -pub const FF0: u32 = 0; -pub const FF1: u32 = 32768; -pub const CBAUD: u32 = 4111; -pub const CSIZE: u32 = 48; -pub const CS5: u32 = 0; -pub const CS6: u32 = 16; -pub const CS7: u32 = 32; -pub const CS8: u32 = 48; -pub const CSTOPB: u32 = 64; -pub const CREAD: u32 = 128; -pub const PARENB: u32 = 256; -pub const PARODD: u32 = 512; -pub const HUPCL: u32 = 1024; -pub const CLOCAL: u32 = 2048; -pub const CBAUDEX: u32 = 4096; -pub const BOTHER: u32 = 4096; -pub const B57600: u32 = 4097; -pub const B115200: u32 = 4098; -pub const B230400: u32 = 4099; -pub const B460800: u32 = 4100; -pub const B500000: u32 = 4101; -pub const B576000: u32 = 4102; -pub const B921600: u32 = 4103; -pub const B1000000: u32 = 4104; -pub const B1152000: u32 = 4105; -pub const B1500000: u32 = 4106; -pub const B2000000: u32 = 4107; -pub const B2500000: u32 = 4108; -pub const B3000000: u32 = 4109; -pub const B3500000: u32 = 4110; -pub const B4000000: u32 = 4111; -pub const CIBAUD: u32 = 269418496; -pub const ISIG: u32 = 1; -pub const ICANON: u32 = 2; -pub const XCASE: u32 = 4; -pub const ECHO: u32 = 8; -pub const ECHOE: u32 = 16; -pub const ECHOK: u32 = 32; -pub const ECHONL: u32 = 64; -pub const NOFLSH: u32 = 128; -pub const IEXTEN: u32 = 256; -pub const ECHOCTL: u32 = 512; -pub const ECHOPRT: u32 = 1024; -pub const ECHOKE: u32 = 2048; -pub const FLUSHO: u32 = 8192; -pub const PENDIN: u32 = 16384; -pub const TOSTOP: u32 = 32768; -pub const ITOSTOP: u32 = 32768; -pub const EXTPROC: u32 = 65536; -pub const TIOCSER_TEMT: u32 = 1; -pub const TIOCPKT_DATA: u32 = 0; -pub const TIOCPKT_FLUSHREAD: u32 = 1; -pub const TIOCPKT_FLUSHWRITE: u32 = 2; -pub const TIOCPKT_STOP: u32 = 4; -pub const TIOCPKT_START: u32 = 8; -pub const TIOCPKT_NOSTOP: u32 = 16; -pub const TIOCPKT_DOSTOP: u32 = 32; -pub const TIOCPKT_IOCTL: u32 = 64; -pub const TIOCGLTC: u32 = 29812; -pub const TIOCSLTC: u32 = 29813; -pub const TIOCGETP: u32 = 29704; -pub const TIOCSETP: u32 = 29705; -pub const TIOCSETN: u32 = 29706; -pub const NCC: u32 = 8; -pub const TIOCM_LE: u32 = 1; -pub const TIOCM_DTR: u32 = 2; -pub const TIOCM_RTS: u32 = 4; -pub const TIOCM_ST: u32 = 16; -pub const TIOCM_SR: u32 = 32; -pub const TIOCM_CTS: u32 = 64; -pub const TIOCM_CAR: u32 = 256; -pub const TIOCM_CD: u32 = 256; -pub const TIOCM_RNG: u32 = 512; -pub const TIOCM_RI: u32 = 512; -pub const TIOCM_DSR: u32 = 1024; -pub const TIOCM_OUT1: u32 = 8192; -pub const TIOCM_OUT2: u32 = 16384; -pub const TIOCM_LOOP: u32 = 32768; -pub const UIO_FASTIOV: u32 = 8; -pub const UIO_MAXIOV: u32 = 1024; -pub const UNIX_PATH_MAX: u32 = 108; -pub const __NR_Linux: u32 = 4000; -pub const __NR_syscall: u32 = 4000; -pub const __NR_exit: u32 = 4001; -pub const __NR_fork: u32 = 4002; -pub const __NR_read: u32 = 4003; -pub const __NR_write: u32 = 4004; -pub const __NR_open: u32 = 4005; -pub const __NR_close: u32 = 4006; -pub const __NR_waitpid: u32 = 4007; -pub const __NR_creat: u32 = 4008; -pub const __NR_link: u32 = 4009; -pub const __NR_unlink: u32 = 4010; -pub const __NR_execve: u32 = 4011; -pub const __NR_chdir: u32 = 4012; -pub const __NR_time: u32 = 4013; -pub const __NR_mknod: u32 = 4014; -pub const __NR_chmod: u32 = 4015; -pub const __NR_lchown: u32 = 4016; -pub const __NR_break: u32 = 4017; -pub const __NR_unused18: u32 = 4018; -pub const __NR_lseek: u32 = 4019; -pub const __NR_getpid: u32 = 4020; -pub const __NR_mount: u32 = 4021; -pub const __NR_umount: u32 = 4022; -pub const __NR_setuid: u32 = 4023; -pub const __NR_getuid: u32 = 4024; -pub const __NR_stime: u32 = 4025; -pub const __NR_ptrace: u32 = 4026; -pub const __NR_alarm: u32 = 4027; -pub const __NR_unused28: u32 = 4028; -pub const __NR_pause: u32 = 4029; -pub const __NR_utime: u32 = 4030; -pub const __NR_stty: u32 = 4031; -pub const __NR_gtty: u32 = 4032; -pub const __NR_access: u32 = 4033; -pub const __NR_nice: u32 = 4034; -pub const __NR_ftime: u32 = 4035; -pub const __NR_sync: u32 = 4036; -pub const __NR_kill: u32 = 4037; -pub const __NR_rename: u32 = 4038; -pub const __NR_mkdir: u32 = 4039; -pub const __NR_rmdir: u32 = 4040; -pub const __NR_dup: u32 = 4041; -pub const __NR_pipe: u32 = 4042; -pub const __NR_times: u32 = 4043; -pub const __NR_prof: u32 = 4044; -pub const __NR_brk: u32 = 4045; -pub const __NR_setgid: u32 = 4046; -pub const __NR_getgid: u32 = 4047; -pub const __NR_signal: u32 = 4048; -pub const __NR_geteuid: u32 = 4049; -pub const __NR_getegid: u32 = 4050; -pub const __NR_acct: u32 = 4051; -pub const __NR_umount2: u32 = 4052; -pub const __NR_lock: u32 = 4053; -pub const __NR_ioctl: u32 = 4054; -pub const __NR_fcntl: u32 = 4055; -pub const __NR_mpx: u32 = 4056; -pub const __NR_setpgid: u32 = 4057; -pub const __NR_ulimit: u32 = 4058; -pub const __NR_unused59: u32 = 4059; -pub const __NR_umask: u32 = 4060; -pub const __NR_chroot: u32 = 4061; -pub const __NR_ustat: u32 = 4062; -pub const __NR_dup2: u32 = 4063; -pub const __NR_getppid: u32 = 4064; -pub const __NR_getpgrp: u32 = 4065; -pub const __NR_setsid: u32 = 4066; -pub const __NR_sigaction: u32 = 4067; -pub const __NR_sgetmask: u32 = 4068; -pub const __NR_ssetmask: u32 = 4069; -pub const __NR_setreuid: u32 = 4070; -pub const __NR_setregid: u32 = 4071; -pub const __NR_sigsuspend: u32 = 4072; -pub const __NR_sigpending: u32 = 4073; -pub const __NR_sethostname: u32 = 4074; -pub const __NR_setrlimit: u32 = 4075; -pub const __NR_getrlimit: u32 = 4076; -pub const __NR_getrusage: u32 = 4077; -pub const __NR_gettimeofday: u32 = 4078; -pub const __NR_settimeofday: u32 = 4079; -pub const __NR_getgroups: u32 = 4080; -pub const __NR_setgroups: u32 = 4081; -pub const __NR_reserved82: u32 = 4082; -pub const __NR_symlink: u32 = 4083; -pub const __NR_unused84: u32 = 4084; -pub const __NR_readlink: u32 = 4085; -pub const __NR_uselib: u32 = 4086; -pub const __NR_swapon: u32 = 4087; -pub const __NR_reboot: u32 = 4088; -pub const __NR_readdir: u32 = 4089; -pub const __NR_mmap: u32 = 4090; -pub const __NR_munmap: u32 = 4091; -pub const __NR_truncate: u32 = 4092; -pub const __NR_ftruncate: u32 = 4093; -pub const __NR_fchmod: u32 = 4094; -pub const __NR_fchown: u32 = 4095; -pub const __NR_getpriority: u32 = 4096; -pub const __NR_setpriority: u32 = 4097; -pub const __NR_profil: u32 = 4098; -pub const __NR_statfs: u32 = 4099; -pub const __NR_fstatfs: u32 = 4100; -pub const __NR_ioperm: u32 = 4101; -pub const __NR_socketcall: u32 = 4102; -pub const __NR_syslog: u32 = 4103; -pub const __NR_setitimer: u32 = 4104; -pub const __NR_getitimer: u32 = 4105; -pub const __NR_stat: u32 = 4106; -pub const __NR_lstat: u32 = 4107; -pub const __NR_fstat: u32 = 4108; -pub const __NR_unused109: u32 = 4109; -pub const __NR_iopl: u32 = 4110; -pub const __NR_vhangup: u32 = 4111; -pub const __NR_idle: u32 = 4112; -pub const __NR_vm86: u32 = 4113; -pub const __NR_wait4: u32 = 4114; -pub const __NR_swapoff: u32 = 4115; -pub const __NR_sysinfo: u32 = 4116; -pub const __NR_ipc: u32 = 4117; -pub const __NR_fsync: u32 = 4118; -pub const __NR_sigreturn: u32 = 4119; -pub const __NR_clone: u32 = 4120; -pub const __NR_setdomainname: u32 = 4121; -pub const __NR_uname: u32 = 4122; -pub const __NR_modify_ldt: u32 = 4123; -pub const __NR_adjtimex: u32 = 4124; -pub const __NR_mprotect: u32 = 4125; -pub const __NR_sigprocmask: u32 = 4126; -pub const __NR_create_module: u32 = 4127; -pub const __NR_init_module: u32 = 4128; -pub const __NR_delete_module: u32 = 4129; -pub const __NR_get_kernel_syms: u32 = 4130; -pub const __NR_quotactl: u32 = 4131; -pub const __NR_getpgid: u32 = 4132; -pub const __NR_fchdir: u32 = 4133; -pub const __NR_bdflush: u32 = 4134; -pub const __NR_sysfs: u32 = 4135; -pub const __NR_personality: u32 = 4136; -pub const __NR_afs_syscall: u32 = 4137; -pub const __NR_setfsuid: u32 = 4138; -pub const __NR_setfsgid: u32 = 4139; -pub const __NR__llseek: u32 = 4140; -pub const __NR_getdents: u32 = 4141; -pub const __NR__newselect: u32 = 4142; -pub const __NR_flock: u32 = 4143; -pub const __NR_msync: u32 = 4144; -pub const __NR_readv: u32 = 4145; -pub const __NR_writev: u32 = 4146; -pub const __NR_cacheflush: u32 = 4147; -pub const __NR_cachectl: u32 = 4148; -pub const __NR_sysmips: u32 = 4149; -pub const __NR_unused150: u32 = 4150; -pub const __NR_getsid: u32 = 4151; -pub const __NR_fdatasync: u32 = 4152; -pub const __NR__sysctl: u32 = 4153; -pub const __NR_mlock: u32 = 4154; -pub const __NR_munlock: u32 = 4155; -pub const __NR_mlockall: u32 = 4156; -pub const __NR_munlockall: u32 = 4157; -pub const __NR_sched_setparam: u32 = 4158; -pub const __NR_sched_getparam: u32 = 4159; -pub const __NR_sched_setscheduler: u32 = 4160; -pub const __NR_sched_getscheduler: u32 = 4161; -pub const __NR_sched_yield: u32 = 4162; -pub const __NR_sched_get_priority_max: u32 = 4163; -pub const __NR_sched_get_priority_min: u32 = 4164; -pub const __NR_sched_rr_get_interval: u32 = 4165; -pub const __NR_nanosleep: u32 = 4166; -pub const __NR_mremap: u32 = 4167; -pub const __NR_accept: u32 = 4168; -pub const __NR_bind: u32 = 4169; -pub const __NR_connect: u32 = 4170; -pub const __NR_getpeername: u32 = 4171; -pub const __NR_getsockname: u32 = 4172; -pub const __NR_getsockopt: u32 = 4173; -pub const __NR_listen: u32 = 4174; -pub const __NR_recv: u32 = 4175; -pub const __NR_recvfrom: u32 = 4176; -pub const __NR_recvmsg: u32 = 4177; -pub const __NR_send: u32 = 4178; -pub const __NR_sendmsg: u32 = 4179; -pub const __NR_sendto: u32 = 4180; -pub const __NR_setsockopt: u32 = 4181; -pub const __NR_shutdown: u32 = 4182; -pub const __NR_socket: u32 = 4183; -pub const __NR_socketpair: u32 = 4184; -pub const __NR_setresuid: u32 = 4185; -pub const __NR_getresuid: u32 = 4186; -pub const __NR_query_module: u32 = 4187; -pub const __NR_poll: u32 = 4188; -pub const __NR_nfsservctl: u32 = 4189; -pub const __NR_setresgid: u32 = 4190; -pub const __NR_getresgid: u32 = 4191; -pub const __NR_prctl: u32 = 4192; -pub const __NR_rt_sigreturn: u32 = 4193; -pub const __NR_rt_sigaction: u32 = 4194; -pub const __NR_rt_sigprocmask: u32 = 4195; -pub const __NR_rt_sigpending: u32 = 4196; -pub const __NR_rt_sigtimedwait: u32 = 4197; -pub const __NR_rt_sigqueueinfo: u32 = 4198; -pub const __NR_rt_sigsuspend: u32 = 4199; -pub const __NR_pread64: u32 = 4200; -pub const __NR_pwrite64: u32 = 4201; -pub const __NR_chown: u32 = 4202; -pub const __NR_getcwd: u32 = 4203; -pub const __NR_capget: u32 = 4204; -pub const __NR_capset: u32 = 4205; -pub const __NR_sigaltstack: u32 = 4206; -pub const __NR_sendfile: u32 = 4207; -pub const __NR_getpmsg: u32 = 4208; -pub const __NR_putpmsg: u32 = 4209; -pub const __NR_mmap2: u32 = 4210; -pub const __NR_truncate64: u32 = 4211; -pub const __NR_ftruncate64: u32 = 4212; -pub const __NR_stat64: u32 = 4213; -pub const __NR_lstat64: u32 = 4214; -pub const __NR_fstat64: u32 = 4215; -pub const __NR_pivot_root: u32 = 4216; -pub const __NR_mincore: u32 = 4217; -pub const __NR_madvise: u32 = 4218; -pub const __NR_getdents64: u32 = 4219; -pub const __NR_fcntl64: u32 = 4220; -pub const __NR_reserved221: u32 = 4221; -pub const __NR_gettid: u32 = 4222; -pub const __NR_readahead: u32 = 4223; -pub const __NR_setxattr: u32 = 4224; -pub const __NR_lsetxattr: u32 = 4225; -pub const __NR_fsetxattr: u32 = 4226; -pub const __NR_getxattr: u32 = 4227; -pub const __NR_lgetxattr: u32 = 4228; -pub const __NR_fgetxattr: u32 = 4229; -pub const __NR_listxattr: u32 = 4230; -pub const __NR_llistxattr: u32 = 4231; -pub const __NR_flistxattr: u32 = 4232; -pub const __NR_removexattr: u32 = 4233; -pub const __NR_lremovexattr: u32 = 4234; -pub const __NR_fremovexattr: u32 = 4235; -pub const __NR_tkill: u32 = 4236; -pub const __NR_sendfile64: u32 = 4237; -pub const __NR_futex: u32 = 4238; -pub const __NR_sched_setaffinity: u32 = 4239; -pub const __NR_sched_getaffinity: u32 = 4240; -pub const __NR_io_setup: u32 = 4241; -pub const __NR_io_destroy: u32 = 4242; -pub const __NR_io_getevents: u32 = 4243; -pub const __NR_io_submit: u32 = 4244; -pub const __NR_io_cancel: u32 = 4245; -pub const __NR_exit_group: u32 = 4246; -pub const __NR_lookup_dcookie: u32 = 4247; -pub const __NR_epoll_create: u32 = 4248; -pub const __NR_epoll_ctl: u32 = 4249; -pub const __NR_epoll_wait: u32 = 4250; -pub const __NR_remap_file_pages: u32 = 4251; -pub const __NR_set_tid_address: u32 = 4252; -pub const __NR_restart_syscall: u32 = 4253; -pub const __NR_fadvise64: u32 = 4254; -pub const __NR_statfs64: u32 = 4255; -pub const __NR_fstatfs64: u32 = 4256; -pub const __NR_timer_create: u32 = 4257; -pub const __NR_timer_settime: u32 = 4258; -pub const __NR_timer_gettime: u32 = 4259; -pub const __NR_timer_getoverrun: u32 = 4260; -pub const __NR_timer_delete: u32 = 4261; -pub const __NR_clock_settime: u32 = 4262; -pub const __NR_clock_gettime: u32 = 4263; -pub const __NR_clock_getres: u32 = 4264; -pub const __NR_clock_nanosleep: u32 = 4265; -pub const __NR_tgkill: u32 = 4266; -pub const __NR_utimes: u32 = 4267; -pub const __NR_mbind: u32 = 4268; -pub const __NR_get_mempolicy: u32 = 4269; -pub const __NR_set_mempolicy: u32 = 4270; -pub const __NR_mq_open: u32 = 4271; -pub const __NR_mq_unlink: u32 = 4272; -pub const __NR_mq_timedsend: u32 = 4273; -pub const __NR_mq_timedreceive: u32 = 4274; -pub const __NR_mq_notify: u32 = 4275; -pub const __NR_mq_getsetattr: u32 = 4276; -pub const __NR_vserver: u32 = 4277; -pub const __NR_waitid: u32 = 4278; -pub const __NR_add_key: u32 = 4280; -pub const __NR_request_key: u32 = 4281; -pub const __NR_keyctl: u32 = 4282; -pub const __NR_set_thread_area: u32 = 4283; -pub const __NR_inotify_init: u32 = 4284; -pub const __NR_inotify_add_watch: u32 = 4285; -pub const __NR_inotify_rm_watch: u32 = 4286; -pub const __NR_migrate_pages: u32 = 4287; -pub const __NR_openat: u32 = 4288; -pub const __NR_mkdirat: u32 = 4289; -pub const __NR_mknodat: u32 = 4290; -pub const __NR_fchownat: u32 = 4291; -pub const __NR_futimesat: u32 = 4292; -pub const __NR_fstatat64: u32 = 4293; -pub const __NR_unlinkat: u32 = 4294; -pub const __NR_renameat: u32 = 4295; -pub const __NR_linkat: u32 = 4296; -pub const __NR_symlinkat: u32 = 4297; -pub const __NR_readlinkat: u32 = 4298; -pub const __NR_fchmodat: u32 = 4299; -pub const __NR_faccessat: u32 = 4300; -pub const __NR_pselect6: u32 = 4301; -pub const __NR_ppoll: u32 = 4302; -pub const __NR_unshare: u32 = 4303; -pub const __NR_splice: u32 = 4304; -pub const __NR_sync_file_range: u32 = 4305; -pub const __NR_tee: u32 = 4306; -pub const __NR_vmsplice: u32 = 4307; -pub const __NR_move_pages: u32 = 4308; -pub const __NR_set_robust_list: u32 = 4309; -pub const __NR_get_robust_list: u32 = 4310; -pub const __NR_kexec_load: u32 = 4311; -pub const __NR_getcpu: u32 = 4312; -pub const __NR_epoll_pwait: u32 = 4313; -pub const __NR_ioprio_set: u32 = 4314; -pub const __NR_ioprio_get: u32 = 4315; -pub const __NR_utimensat: u32 = 4316; -pub const __NR_signalfd: u32 = 4317; -pub const __NR_timerfd: u32 = 4318; -pub const __NR_eventfd: u32 = 4319; -pub const __NR_fallocate: u32 = 4320; -pub const __NR_timerfd_create: u32 = 4321; -pub const __NR_timerfd_gettime: u32 = 4322; -pub const __NR_timerfd_settime: u32 = 4323; -pub const __NR_signalfd4: u32 = 4324; -pub const __NR_eventfd2: u32 = 4325; -pub const __NR_epoll_create1: u32 = 4326; -pub const __NR_dup3: u32 = 4327; -pub const __NR_pipe2: u32 = 4328; -pub const __NR_inotify_init1: u32 = 4329; -pub const __NR_preadv: u32 = 4330; -pub const __NR_pwritev: u32 = 4331; -pub const __NR_rt_tgsigqueueinfo: u32 = 4332; -pub const __NR_perf_event_open: u32 = 4333; -pub const __NR_accept4: u32 = 4334; -pub const __NR_recvmmsg: u32 = 4335; -pub const __NR_fanotify_init: u32 = 4336; -pub const __NR_fanotify_mark: u32 = 4337; -pub const __NR_prlimit64: u32 = 4338; -pub const __NR_name_to_handle_at: u32 = 4339; -pub const __NR_open_by_handle_at: u32 = 4340; -pub const __NR_clock_adjtime: u32 = 4341; -pub const __NR_syncfs: u32 = 4342; -pub const __NR_sendmmsg: u32 = 4343; -pub const __NR_setns: u32 = 4344; -pub const __NR_process_vm_readv: u32 = 4345; -pub const __NR_process_vm_writev: u32 = 4346; -pub const __NR_kcmp: u32 = 4347; -pub const __NR_finit_module: u32 = 4348; -pub const __NR_sched_setattr: u32 = 4349; -pub const __NR_sched_getattr: u32 = 4350; -pub const __NR_renameat2: u32 = 4351; -pub const __NR_seccomp: u32 = 4352; -pub const __NR_getrandom: u32 = 4353; -pub const __NR_memfd_create: u32 = 4354; -pub const __NR_bpf: u32 = 4355; -pub const __NR_execveat: u32 = 4356; -pub const __NR_userfaultfd: u32 = 4357; -pub const __NR_membarrier: u32 = 4358; -pub const __NR_mlock2: u32 = 4359; -pub const __NR_copy_file_range: u32 = 4360; -pub const __NR_preadv2: u32 = 4361; -pub const __NR_pwritev2: u32 = 4362; -pub const __NR_pkey_mprotect: u32 = 4363; -pub const __NR_pkey_alloc: u32 = 4364; -pub const __NR_pkey_free: u32 = 4365; -pub const __NR_statx: u32 = 4366; -pub const __NR_rseq: u32 = 4367; -pub const __NR_io_pgetevents: u32 = 4368; -pub const __NR_semget: u32 = 4393; -pub const __NR_semctl: u32 = 4394; -pub const __NR_shmget: u32 = 4395; -pub const __NR_shmctl: u32 = 4396; -pub const __NR_shmat: u32 = 4397; -pub const __NR_shmdt: u32 = 4398; -pub const __NR_msgget: u32 = 4399; -pub const __NR_msgsnd: u32 = 4400; -pub const __NR_msgrcv: u32 = 4401; -pub const __NR_msgctl: u32 = 4402; -pub const __NR_clock_gettime64: u32 = 4403; -pub const __NR_clock_settime64: u32 = 4404; -pub const __NR_clock_adjtime64: u32 = 4405; -pub const __NR_clock_getres_time64: u32 = 4406; -pub const __NR_clock_nanosleep_time64: u32 = 4407; -pub const __NR_timer_gettime64: u32 = 4408; -pub const __NR_timer_settime64: u32 = 4409; -pub const __NR_timerfd_gettime64: u32 = 4410; -pub const __NR_timerfd_settime64: u32 = 4411; -pub const __NR_utimensat_time64: u32 = 4412; -pub const __NR_pselect6_time64: u32 = 4413; -pub const __NR_ppoll_time64: u32 = 4414; -pub const __NR_io_pgetevents_time64: u32 = 4416; -pub const __NR_recvmmsg_time64: u32 = 4417; -pub const __NR_mq_timedsend_time64: u32 = 4418; -pub const __NR_mq_timedreceive_time64: u32 = 4419; -pub const __NR_semtimedop_time64: u32 = 4420; -pub const __NR_rt_sigtimedwait_time64: u32 = 4421; -pub const __NR_futex_time64: u32 = 4422; -pub const __NR_sched_rr_get_interval_time64: u32 = 4423; -pub const __NR_pidfd_send_signal: u32 = 4424; -pub const __NR_io_uring_setup: u32 = 4425; -pub const __NR_io_uring_enter: u32 = 4426; -pub const __NR_io_uring_register: u32 = 4427; -pub const __NR_open_tree: u32 = 4428; -pub const __NR_move_mount: u32 = 4429; -pub const __NR_fsopen: u32 = 4430; -pub const __NR_fsconfig: u32 = 4431; -pub const __NR_fsmount: u32 = 4432; -pub const __NR_fspick: u32 = 4433; -pub const __NR_pidfd_open: u32 = 4434; -pub const __NR_clone3: u32 = 4435; -pub const __NR_close_range: u32 = 4436; -pub const __NR_openat2: u32 = 4437; -pub const __NR_pidfd_getfd: u32 = 4438; -pub const __NR_faccessat2: u32 = 4439; -pub const __NR_process_madvise: u32 = 4440; -pub const __NR_epoll_pwait2: u32 = 4441; -pub const __NR_mount_setattr: u32 = 4442; -pub const __NR_quotactl_fd: u32 = 4443; -pub const __NR_landlock_create_ruleset: u32 = 4444; -pub const __NR_landlock_add_rule: u32 = 4445; -pub const __NR_landlock_restrict_self: u32 = 4446; -pub const __NR_process_mrelease: u32 = 4448; -pub const __NR_futex_waitv: u32 = 4449; -pub const __NR_set_mempolicy_home_node: u32 = 4450; -pub const __OLD_UTS_LEN: u32 = 8; -pub const __NEW_UTS_LEN: u32 = 64; -pub const WNOHANG: u32 = 1; -pub const WUNTRACED: u32 = 2; -pub const WSTOPPED: u32 = 2; -pub const WEXITED: u32 = 4; -pub const WCONTINUED: u32 = 8; -pub const WNOWAIT: u32 = 16777216; -pub const __WNOTHREAD: u32 = 536870912; -pub const __WALL: u32 = 1073741824; -pub const __WCLONE: u32 = 2147483648; -pub const P_ALL: u32 = 0; -pub const P_PID: u32 = 1; -pub const P_PGID: u32 = 2; -pub const P_PIDFD: u32 = 3; -pub const XATTR_CREATE: u32 = 1; -pub const XATTR_REPLACE: u32 = 2; -pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0"; -pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0"; -pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0"; -pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0"; -pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0"; -pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0"; -pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0"; -pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0"; -pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0"; -pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0"; -pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0"; -pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0"; -pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0"; -pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0"; -pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0"; -pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0"; -pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0"; -pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0"; -pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0"; -pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0"; -pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0"; -pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0"; -pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0"; -pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0"; -pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0"; -pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0"; -pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0"; -pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0"; -pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0"; -pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0"; -pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0"; -pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0"; -pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0"; -pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0"; -pub const MFD_CLOEXEC: u32 = 1; -pub const MFD_ALLOW_SEALING: u32 = 2; -pub const MFD_HUGETLB: u32 = 4; -pub const MFD_NOEXEC_SEAL: u32 = 8; -pub const MFD_EXEC: u32 = 16; -pub const MFD_HUGE_SHIFT: u32 = 26; -pub const MFD_HUGE_MASK: u32 = 63; -pub const MFD_HUGE_64KB: u32 = 1073741824; -pub const MFD_HUGE_512KB: u32 = 1275068416; -pub const MFD_HUGE_1MB: u32 = 1342177280; -pub const MFD_HUGE_2MB: u32 = 1409286144; -pub const MFD_HUGE_8MB: u32 = 1543503872; -pub const MFD_HUGE_16MB: u32 = 1610612736; -pub const MFD_HUGE_32MB: u32 = 1677721600; -pub const MFD_HUGE_256MB: u32 = 1879048192; -pub const MFD_HUGE_512MB: u32 = 1946157056; -pub const MFD_HUGE_1GB: u32 = 2013265920; -pub const MFD_HUGE_2GB: u32 = 2080374784; -pub const MFD_HUGE_16GB: u32 = 2281701376; -pub const TFD_TIMER_ABSTIME: u32 = 1; -pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; -pub const TFD_CLOEXEC: u32 = 524288; -pub const TFD_NONBLOCK: u32 = 128; -pub const USERFAULTFD_IOC: u32 = 170; -pub const _UFFDIO_REGISTER: u32 = 0; -pub const _UFFDIO_UNREGISTER: u32 = 1; -pub const _UFFDIO_WAKE: u32 = 2; -pub const _UFFDIO_COPY: u32 = 3; -pub const _UFFDIO_ZEROPAGE: u32 = 4; -pub const _UFFDIO_WRITEPROTECT: u32 = 6; -pub const _UFFDIO_CONTINUE: u32 = 7; -pub const _UFFDIO_API: u32 = 63; -pub const UFFDIO: u32 = 170; -pub const UFFD_EVENT_PAGEFAULT: u32 = 18; -pub const UFFD_EVENT_FORK: u32 = 19; -pub const UFFD_EVENT_REMAP: u32 = 20; -pub const UFFD_EVENT_REMOVE: u32 = 21; -pub const UFFD_EVENT_UNMAP: u32 = 22; -pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; -pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; -pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; -pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; -pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; -pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; -pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; -pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; -pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; -pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; -pub const UFFD_FEATURE_SIGBUS: u32 = 128; -pub const UFFD_FEATURE_THREAD_ID: u32 = 256; -pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; -pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; -pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; -pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; -pub const UFFD_USER_MODE_ONLY: u32 = 1; -pub const IORING_FILE_INDEX_ALLOC: i32 = -1; -pub const IORING_SETUP_IOPOLL: u32 = 1; -pub const IORING_SETUP_SQPOLL: u32 = 2; -pub const IORING_SETUP_SQ_AFF: u32 = 4; -pub const IORING_SETUP_CQSIZE: u32 = 8; -pub const IORING_SETUP_CLAMP: u32 = 16; -pub const IORING_SETUP_ATTACH_WQ: u32 = 32; -pub const IORING_SETUP_R_DISABLED: u32 = 64; -pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; -pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; -pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; -pub const IORING_SETUP_SQE128: u32 = 1024; -pub const IORING_SETUP_CQE32: u32 = 2048; -pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; -pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; -pub const IORING_URING_CMD_FIXED: u32 = 1; -pub const IORING_FSYNC_DATASYNC: u32 = 1; -pub const IORING_TIMEOUT_ABS: u32 = 1; -pub const IORING_TIMEOUT_UPDATE: u32 = 2; -pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; -pub const IORING_TIMEOUT_REALTIME: u32 = 8; -pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; -pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; -pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; -pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; -pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; -pub const IORING_POLL_ADD_MULTI: u32 = 1; -pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; -pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; -pub const IORING_POLL_ADD_LEVEL: u32 = 8; -pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; -pub const IORING_ASYNC_CANCEL_FD: u32 = 2; -pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; -pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; -pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; -pub const IORING_RECV_MULTISHOT: u32 = 2; -pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; -pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; -pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; -pub const IORING_ACCEPT_MULTISHOT: u32 = 1; -pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; -pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; -pub const IORING_CQE_F_BUFFER: u32 = 1; -pub const IORING_CQE_F_MORE: u32 = 2; -pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; -pub const IORING_CQE_F_NOTIF: u32 = 8; -pub const IORING_OFF_SQ_RING: u32 = 0; -pub const IORING_OFF_CQ_RING: u32 = 134217728; -pub const IORING_OFF_SQES: u32 = 268435456; -pub const IORING_SQ_NEED_WAKEUP: u32 = 1; -pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; -pub const IORING_SQ_TASKRUN: u32 = 4; -pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; -pub const IORING_ENTER_GETEVENTS: u32 = 1; -pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; -pub const IORING_ENTER_SQ_WAIT: u32 = 4; -pub const IORING_ENTER_EXT_ARG: u32 = 8; -pub const IORING_ENTER_REGISTERED_RING: u32 = 16; -pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; -pub const IORING_FEAT_NODROP: u32 = 2; -pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; -pub const IORING_FEAT_RW_CUR_POS: u32 = 8; -pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; -pub const IORING_FEAT_FAST_POLL: u32 = 32; -pub const IORING_FEAT_POLL_32BITS: u32 = 64; -pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; -pub const IORING_FEAT_EXT_ARG: u32 = 256; -pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; -pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; -pub const IORING_FEAT_CQE_SKIP: u32 = 2048; -pub const IORING_FEAT_LINKED_FILE: u32 = 4096; -pub const IORING_FEAT_REG_REG_RING: u32 = 8192; -pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; -pub const IORING_REGISTER_FILES_SKIP: i32 = -2; -pub const IO_URING_OP_SUPPORTED: u32 = 1; -pub const DT_UNKNOWN: u32 = 0; -pub const DT_FIFO: u32 = 1; -pub const DT_CHR: u32 = 2; -pub const DT_DIR: u32 = 4; -pub const DT_BLK: u32 = 6; -pub const DT_REG: u32 = 8; -pub const DT_LNK: u32 = 10; -pub const DT_SOCK: u32 = 12; -pub const SHUT_RD: u32 = 0; -pub const SHUT_WR: u32 = 1; -pub const SHUT_RDWR: u32 = 2; -pub const STAT_HAVE_NSEC: u32 = 1; -pub const SOCK_STREAM: u32 = 2; -pub const SOCK_DGRAM: u32 = 1; -pub const SOCK_RAW: u32 = 3; -pub const SOCK_RDM: u32 = 4; -pub const SOCK_SEQPACKET: u32 = 5; -pub const F_OK: u32 = 0; -pub const R_OK: u32 = 4; -pub const W_OK: u32 = 2; -pub const X_OK: u32 = 1; -pub const UTIME_NOW: u32 = 1073741823; -pub const UTIME_OMIT: u32 = 1073741822; -pub const MSG_DONTWAIT: u32 = 64; -pub const AF_UNSPEC: u32 = 0; -pub const AF_UNIX: u32 = 1; -pub const AF_INET: u32 = 2; -pub const AF_AX25: u32 = 3; -pub const AF_IPX: u32 = 4; -pub const AF_APPLETALK: u32 = 5; -pub const AF_NETROM: u32 = 6; -pub const AF_BRIDGE: u32 = 7; -pub const AF_ATMPVC: u32 = 8; -pub const AF_X25: u32 = 9; -pub const AF_INET6: u32 = 10; -pub const AF_ROSE: u32 = 11; -pub const AF_DECnet: u32 = 12; -pub const AF_NETBEUI: u32 = 13; -pub const AF_SECURITY: u32 = 14; -pub const AF_KEY: u32 = 15; -pub const AF_NETLINK: u32 = 16; -pub const AF_PACKET: u32 = 17; -pub const AF_ASH: u32 = 18; -pub const AF_ECONET: u32 = 19; -pub const AF_ATMSVC: u32 = 20; -pub const AF_RDS: u32 = 21; -pub const AF_SNA: u32 = 22; -pub const AF_IRDA: u32 = 23; -pub const AF_PPPOX: u32 = 24; -pub const AF_WANPIPE: u32 = 25; -pub const AF_LLC: u32 = 26; -pub const AF_CAN: u32 = 29; -pub const AF_TIPC: u32 = 30; -pub const AF_BLUETOOTH: u32 = 31; -pub const AF_IUCV: u32 = 32; -pub const AF_RXRPC: u32 = 33; -pub const AF_ISDN: u32 = 34; -pub const AF_PHONET: u32 = 35; -pub const AF_IEEE802154: u32 = 36; -pub const AF_MAX: u32 = 37; -pub const MSG_OOB: u32 = 1; -pub const MSG_PEEK: u32 = 2; -pub const MSG_DONTROUTE: u32 = 4; -pub const MSG_CTRUNC: u32 = 8; -pub const MSG_PROBE: u32 = 16; -pub const MSG_TRUNC: u32 = 32; -pub const MSG_EOR: u32 = 128; -pub const MSG_WAITALL: u32 = 256; -pub const MSG_FIN: u32 = 512; -pub const MSG_SYN: u32 = 1024; -pub const MSG_CONFIRM: u32 = 2048; -pub const MSG_RST: u32 = 4096; -pub const MSG_ERRQUEUE: u32 = 8192; -pub const MSG_NOSIGNAL: u32 = 16384; -pub const MSG_MORE: u32 = 32768; -pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; -pub const STDIN_FILENO: u32 = 0; -pub const STDOUT_FILENO: u32 = 1; -pub const STDERR_FILENO: u32 = 2; -pub const RWF_HIPRI: u32 = 1; -pub const RWF_DSYNC: u32 = 2; -pub const RWF_SYNC: u32 = 4; -pub const RWF_NOWAIT: u32 = 8; -pub const RWF_APPEND: u32 = 16; -pub const EFD_SEMAPHORE: u32 = 1; -pub const EFD_CLOEXEC: u32 = 524288; -pub const EFD_NONBLOCK: u32 = 128; -pub const EPOLLIN: u32 = 1; -pub const EPOLLPRI: u32 = 2; -pub const EPOLLOUT: u32 = 4; -pub const EPOLLERR: u32 = 8; -pub const EPOLLHUP: u32 = 16; -pub const EPOLLNVAL: u32 = 32; -pub const EPOLLRDNORM: u32 = 64; -pub const EPOLLRDBAND: u32 = 128; -pub const EPOLLWRNORM: u32 = 256; -pub const EPOLLWRBAND: u32 = 512; -pub const EPOLLMSG: u32 = 1024; -pub const EPOLLRDHUP: u32 = 8192; -pub const EPOLLEXCLUSIVE: u32 = 268435456; -pub const EPOLLWAKEUP: u32 = 536870912; -pub const EPOLLONESHOT: u32 = 1073741824; -pub const EPOLLET: u32 = 2147483648; -pub const TFD_SHARED_FCNTL_FLAGS: u32 = 524416; -pub const TFD_CREATE_FLAGS: u32 = 524416; -pub const TFD_SETTIME_FLAGS: u32 = 1; -pub const SCM_RIGHTS: u32 = 1; -pub const SCM_CREDENTIALS: u32 = 2; -pub const SCM_SECURITY: u32 = 3; -pub const UFFD_API: u32 = 170; -pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; -pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; -pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; -pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; -pub const UFFDIO_COPY_MODE_WP: u32 = 2; -pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; -pub const POLLWRNORM: u32 = 4; -pub const TCSANOW: u32 = 21518; -pub const TCSADRAIN: u32 = 21519; -pub const TCSAFLUSH: u32 = 21520; -pub const SPLICE_F_MOVE: u32 = 1; -pub const SPLICE_F_NONBLOCK: u32 = 2; -pub const SPLICE_F_MORE: u32 = 4; -pub const SPLICE_F_GIFT: u32 = 8; -pub const MNT_FORCE: u32 = 1; -pub const MNT_DETACH: u32 = 2; -pub const MNT_EXPIRE: u32 = 4; -pub const UMOUNT_NOFOLLOW: u32 = 8; -pub const UMOUNT_UNUSED: u32 = 2147483648; -pub type size_t = crate::ctypes::c_uint; -pub type ssize_t = crate::ctypes::c_int; -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 32usize], -} -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_daddr_t = crate::ctypes::c_long; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_old_dev_t = crate::ctypes::c_uint; -pub type __kernel_size_t = crate::ctypes::c_uint; -pub type __kernel_ssize_t = crate::ctypes::c_int; -pub type __kernel_ptrdiff_t = crate::ctypes::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_header_struct { -pub version: __u32, -pub pid: crate::ctypes::c_int, -} -pub type cap_user_header_t = *mut __user_cap_header_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_data_struct { -pub effective: __u32, -pub permitted: __u32, -pub inheritable: __u32, -} -pub type cap_user_data_t = *mut __user_cap_data_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data { -pub magic_etc: __le32, -pub data: [vfs_cap_data__bindgen_ty_1; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data { -pub magic_etc: __le32, -pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], -pub rootid: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct f_owner_ex { -pub type_: crate::ctypes::c_int, -pub pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_off_t, -pub l_len: __kernel_off_t, -pub l_pid: __kernel_pid_t, -pub l_sysid: crate::ctypes::c_long, -pub pad: [crate::ctypes::c_long; 4usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock64 { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_loff_t, -pub l_len: __kernel_loff_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct open_how { -pub flags: __u64, -pub mode: __u64, -pub resolve: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct epoll_event { -pub events: __poll_t, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v1 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub master_key_descriptor: [__u8; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_key { -pub mode: __u32, -pub raw: [__u8; 64usize], -pub size: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v2 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub __reserved: [__u8; 4usize], -pub master_key_identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_get_policy_ex_arg { -pub policy_size: __u64, -pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { -pub version: __u8, -pub v1: fscrypt_policy_v1, -pub v2: fscrypt_policy_v2, +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] @@ -2975,13 +201,6 @@ pub u: fscrypt_key_specifier__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_key_specifier__bindgen_ty_1 { -pub __reserved: [__u8; 32usize], -pub descriptor: [__u8; 8usize], -pub identifier: [__u8; 16usize], -} -#[repr(C)] #[derive(Debug)] pub struct fscrypt_provisioning_key_payload { pub type_: __u32, @@ -3013,19 +232,6 @@ pub user_count: __u32, pub __out_reserved: [__u32; 13usize], } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum fsconfig_command { -FSCONFIG_SET_FLAG = 0, -FSCONFIG_SET_STRING = 1, -FSCONFIG_SET_BINARY = 2, -FSCONFIG_SET_PATH = 3, -FSCONFIG_SET_PATH_EMPTY = 4, -FSCONFIG_SET_FD = 5, -FSCONFIG_CMD_CREATE = 6, -FSCONFIG_CMD_RECONFIGURE = 7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct mount_attr { @@ -3092,684 +298,34 @@ pub fsx_cowextsize: __u32, pub fsx_pad: [crate::ctypes::c_uchar; 8usize], } -pub type __kernel_rwf_t = crate::ctypes::c_int; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct futex_waitv { pub val: __u64, -pub uaddr: __u64, -pub flags: __u32, -pub __reserved: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct robust_list { -pub next: *mut robust_list, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct robust_list_head { -pub list: robust_list, -pub futex_offset: crate::ctypes::c_long, -pub list_op_pending: *mut robust_list, -} -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], -} -pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; -pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; -pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; -pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; -pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; -pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; -pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; -pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; -pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; -pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; -pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; -pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; -pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; -pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; -pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; -pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; -pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; -pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; -pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; -pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; -pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; -pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; -pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; -pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; -pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; -pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; -pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; -pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; -pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_1 { -IPPROTO_IP = 0, -IPPROTO_ICMP = 1, -IPPROTO_IGMP = 2, -IPPROTO_IPIP = 4, -IPPROTO_TCP = 6, -IPPROTO_EGP = 8, -IPPROTO_PUP = 12, -IPPROTO_UDP = 17, -IPPROTO_IDP = 22, -IPPROTO_TP = 29, -IPPROTO_DCCP = 33, -IPPROTO_IPV6 = 41, -IPPROTO_RSVP = 46, -IPPROTO_GRE = 47, -IPPROTO_ESP = 50, -IPPROTO_AH = 51, -IPPROTO_MTP = 92, -IPPROTO_BEETPH = 94, -IPPROTO_ENCAP = 98, -IPPROTO_PIM = 103, -IPPROTO_COMP = 108, -IPPROTO_L2TP = 115, -IPPROTO_SCTP = 132, -IPPROTO_UDPLITE = 136, -IPPROTO_MPLS = 137, -IPPROTO_ETHERNET = 143, -IPPROTO_RAW = 255, -IPPROTO_MPTCP = 262, -IPPROTO_MAX = 263, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_addr { -pub s_addr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq { -pub imr_multiaddr: in_addr, -pub imr_interface: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreqn { -pub imr_multiaddr: in_addr, -pub imr_address: in_addr, -pub imr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq_source { -pub imr_multiaddr: __be32, -pub imr_interface: __be32, -pub imr_sourceaddr: __be32, -} -#[repr(C)] -pub struct ip_msfilter { -pub imsf_multiaddr: __be32, -pub imsf_interface: __be32, -pub imsf_fmode: __u32, -pub imsf_numsrc: __u32, -pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, -} -#[repr(C)] -pub struct ip_msfilter__bindgen_ty_1 { -pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, -pub __bindgen_anon_1: __BindgenUnionField, -pub bindgen_union_field: u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { -pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -pub imsf_slist_flex: __IncompleteArrayField<__be32>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_req { -pub gr_interface: __u32, -pub gr_group: __kernel_sockaddr_storage, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_source_req { -pub gsr_interface: __u32, -pub gsr_group: __kernel_sockaddr_storage, -pub gsr_source: __kernel_sockaddr_storage, -} -#[repr(C)] -pub struct group_filter { -pub __bindgen_anon_1: group_filter__bindgen_ty_1, -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u32; 67usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { -pub gf_interface_aux: __u32, -pub gf_group_aux: __kernel_sockaddr_storage, -pub gf_fmode_aux: __u32, -pub gf_numsrc_aux: __u32, -pub gf_slist: [__kernel_sockaddr_storage; 1usize], -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { -pub gf_interface: __u32, -pub gf_group: __kernel_sockaddr_storage, -pub gf_fmode: __u32, -pub gf_numsrc: __u32, -pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_pktinfo { -pub ipi_ifindex: crate::ctypes::c_int, -pub ipi_spec_dst: in_addr, -pub ipi_addr: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_in { -pub sin_family: __kernel_sa_family_t, -pub sin_port: __be16, -pub sin_addr: in_addr, -pub __pad: [crate::ctypes::c_uchar; 8usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct inotify_event { -pub wd: __s32, -pub mask: __u32, -pub cookie: __u32, -pub len: __u32, -pub name: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct iphdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub tos: __u8, -pub tot_len: __be16, -pub id: __be16, -pub frag_off: __be16, -pub ttl: __u8, -pub protocol: __u8, -pub check: __sum16, -pub __bindgen_anon_1: iphdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union iphdr__bindgen_ty_1 { -pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: __be32, -pub daddr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: __be32, -pub daddr: __be32, -} -impl iphdr { -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn ihl(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_ihl(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; -ihl as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_auth_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub reserved: __be16, -pub spi: __be32, -pub seq_no: __be32, -pub auth_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_esp_hdr { -pub spi: __be32, -pub seq_no: __be32, -pub enc_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_comp_hdr { -pub nexthdr: __u8, -pub flags: __u8, -pub cpi: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_beet_phdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub padlen: __u8, -pub reserved: __u8, -} -pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; -pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; -pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; -pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; -pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; -pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; -pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; -pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; -pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; -pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; -pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; -pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; -pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; -pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; -pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; -pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; -pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; -pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; -pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; -pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; -pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; -pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; -pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; -pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; -pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; -pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; -pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; -pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; -pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_2 { -IPV4_DEVCONF_FORWARDING = 1, -IPV4_DEVCONF_MC_FORWARDING = 2, -IPV4_DEVCONF_PROXY_ARP = 3, -IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, -IPV4_DEVCONF_SECURE_REDIRECTS = 5, -IPV4_DEVCONF_SEND_REDIRECTS = 6, -IPV4_DEVCONF_SHARED_MEDIA = 7, -IPV4_DEVCONF_RP_FILTER = 8, -IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, -IPV4_DEVCONF_BOOTP_RELAY = 10, -IPV4_DEVCONF_LOG_MARTIANS = 11, -IPV4_DEVCONF_TAG = 12, -IPV4_DEVCONF_ARPFILTER = 13, -IPV4_DEVCONF_MEDIUM_ID = 14, -IPV4_DEVCONF_NOXFRM = 15, -IPV4_DEVCONF_NOPOLICY = 16, -IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, -IPV4_DEVCONF_ARP_ANNOUNCE = 18, -IPV4_DEVCONF_ARP_IGNORE = 19, -IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, -IPV4_DEVCONF_ARP_ACCEPT = 21, -IPV4_DEVCONF_ARP_NOTIFY = 22, -IPV4_DEVCONF_ACCEPT_LOCAL = 23, -IPV4_DEVCONF_SRC_VMARK = 24, -IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, -IPV4_DEVCONF_ROUTE_LOCALNET = 26, -IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, -IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, -IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, -IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, -IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, -IPV4_DEVCONF_BC_FORWARDING = 32, -IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, -__IPV4_DEVCONF_MAX = 34, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_addr { -pub in6_u: in6_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union in6_addr__bindgen_ty_1 { -pub u6_addr8: [__u8; 16usize], -pub u6_addr16: [__be16; 8usize], -pub u6_addr32: [__be32; 4usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_in6 { -pub sin6_family: crate::ctypes::c_ushort, -pub sin6_port: __be16, -pub sin6_flowinfo: __be32, -pub sin6_addr: in6_addr, -pub sin6_scope_id: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6_mreq { -pub ipv6mr_multiaddr: in6_addr, -pub ipv6mr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_flowlabel_req { -pub flr_dst: in6_addr, -pub flr_label: __be32, -pub flr_action: __u8, -pub flr_share: __u8, -pub flr_flags: __u16, -pub flr_expires: __u16, -pub flr_linger: __u16, -pub __flr_pad: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_pktinfo { -pub ipi6_addr: in6_addr, -pub ipi6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ip6_mtuinfo { -pub ip6m_addr: sockaddr_in6, -pub ip6m_mtu: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_ifreq { -pub ifr6_addr: in6_addr, -pub ifr6_prefixlen: __u32, -pub ifr6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_rt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub type_: __u8, -pub segments_left: __u8, -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_opt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -} -#[repr(C)] -pub struct rt0_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rt2_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: in6_addr, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct ipv6_destopt_hao { -pub type_: __u8, -pub length: __u8, -pub addr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub flow_lbl: [__u8; 3usize], -pub payload_len: __be16, -pub nexthdr: __u8, -pub hop_limit: __u8, -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ipv6hdr__bindgen_ty_1 { -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -impl ipv6hdr { -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn priority(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_priority(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let priority: u8 = unsafe { ::core::mem::transmute(priority) }; -priority as u64 -}); -__bindgen_bitfield_unit +pub uaddr: __u64, +pub flags: __u32, +pub __reserved: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct robust_list { +pub next: *mut robust_list, } -pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; -pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; -pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; -pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; -pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; -pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; -pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; -pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; -pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; -pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; -pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; -pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; -pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; -pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; -pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; -pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; -pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; -pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; -pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; -pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; -pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; -pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; -pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; -pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; -pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; -pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; -pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; -pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; -pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; -pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; -pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; -pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; -pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; -pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; -pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; -pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; -pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; -pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; -pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; -pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; -pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; -pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; -pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; -pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; -pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; -pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; -pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; -pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; -pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; -pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; -pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; -pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_3 { -DEVCONF_FORWARDING = 0, -DEVCONF_HOPLIMIT = 1, -DEVCONF_MTU6 = 2, -DEVCONF_ACCEPT_RA = 3, -DEVCONF_ACCEPT_REDIRECTS = 4, -DEVCONF_AUTOCONF = 5, -DEVCONF_DAD_TRANSMITS = 6, -DEVCONF_RTR_SOLICITS = 7, -DEVCONF_RTR_SOLICIT_INTERVAL = 8, -DEVCONF_RTR_SOLICIT_DELAY = 9, -DEVCONF_USE_TEMPADDR = 10, -DEVCONF_TEMP_VALID_LFT = 11, -DEVCONF_TEMP_PREFERED_LFT = 12, -DEVCONF_REGEN_MAX_RETRY = 13, -DEVCONF_MAX_DESYNC_FACTOR = 14, -DEVCONF_MAX_ADDRESSES = 15, -DEVCONF_FORCE_MLD_VERSION = 16, -DEVCONF_ACCEPT_RA_DEFRTR = 17, -DEVCONF_ACCEPT_RA_PINFO = 18, -DEVCONF_ACCEPT_RA_RTR_PREF = 19, -DEVCONF_RTR_PROBE_INTERVAL = 20, -DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, -DEVCONF_PROXY_NDP = 22, -DEVCONF_OPTIMISTIC_DAD = 23, -DEVCONF_ACCEPT_SOURCE_ROUTE = 24, -DEVCONF_MC_FORWARDING = 25, -DEVCONF_DISABLE_IPV6 = 26, -DEVCONF_ACCEPT_DAD = 27, -DEVCONF_FORCE_TLLAO = 28, -DEVCONF_NDISC_NOTIFY = 29, -DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, -DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, -DEVCONF_SUPPRESS_FRAG_NDISC = 32, -DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, -DEVCONF_USE_OPTIMISTIC = 34, -DEVCONF_ACCEPT_RA_MTU = 35, -DEVCONF_STABLE_SECRET = 36, -DEVCONF_USE_OIF_ADDRS_ONLY = 37, -DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, -DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, -DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, -DEVCONF_DROP_UNSOLICITED_NA = 41, -DEVCONF_KEEP_ADDR_ON_DOWN = 42, -DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, -DEVCONF_SEG6_ENABLED = 44, -DEVCONF_SEG6_REQUIRE_HMAC = 45, -DEVCONF_ENHANCED_DAD = 46, -DEVCONF_ADDR_GEN_MODE = 47, -DEVCONF_DISABLE_POLICY = 48, -DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, -DEVCONF_NDISC_TCLASS = 50, -DEVCONF_RPL_SEG_ENABLED = 51, -DEVCONF_RA_DEFRTR_METRIC = 52, -DEVCONF_IOAM6_ENABLED = 53, -DEVCONF_IOAM6_ID = 54, -DEVCONF_IOAM6_ID_WIDE = 55, -DEVCONF_NDISC_EVICT_NOCARRIER = 56, -DEVCONF_ACCEPT_UNTRACKED_NA = 57, -DEVCONF_MAX = 58, +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct robust_list_head { +pub list: robust_list, +pub futex_offset: crate::ctypes::c_long, +pub list_op_pending: *mut robust_list, } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum socket_state { -SS_FREE = 0, -SS_UNCONNECTED = 1, -SS_CONNECTING = 2, -SS_CONNECTED = 3, -SS_DISCONNECTING = 4, +#[repr(C)] +#[derive(Debug)] +pub struct inotify_event { +pub wd: __s32, +pub mask: __u32, +pub cookie: __u32, +pub len: __u32, +pub name: __IncompleteArrayField, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -3779,24 +335,6 @@ pub revents: crate::ctypes::c_short, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prctl_mm_map { -pub start_code: __u64, -pub end_code: __u64, -pub start_data: __u64, -pub end_data: __u64, -pub start_brk: __u64, -pub brk: __u64, -pub start_stack: __u64, -pub arg_start: __u64, -pub arg_end: __u64, -pub env_start: __u64, -pub env_end: __u64, -pub auxv: *mut __u64, -pub auxv_size: __u32, -pub exe_fd: __u32, -} -#[repr(C)] #[derive(Debug)] pub struct rand_pool_info { pub entropy_count: crate::ctypes::c_int, @@ -3921,11 +459,6 @@ pub struct sigset_t { pub sig: [crate::ctypes::c_ulong; 4usize], } -pub type old_sigset_t = crate::ctypes::c_ulong; -pub type __signalfn_t = ::core::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::core::option::Option; -pub type __sigrestore_t = __restorefn_t; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct sigaction { @@ -3940,25 +473,6 @@ pub ss_size: __kernel_size_t, pub ss_flags: crate::ctypes::c_int, } -pub type stack_t = sigaltstack; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { -pub sival_int: crate::ctypes::c_int, -pub sival_ptr: *mut crate::ctypes::c_void, -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { -pub _kill: __sifields__bindgen_ty_1, -pub _timer: __sifields__bindgen_ty_2, -pub _rt: __sifields__bindgen_ty_3, -pub _sigchld: __sifields__bindgen_ty_4, -pub _sigfault: __sifields__bindgen_ty_5, -pub _sigpoll: __sifields__bindgen_ty_6, -pub _sigsys: __sifields__bindgen_ty_7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_1 { @@ -3996,15 +510,6 @@ pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { -pub _trapno: crate::ctypes::c_int, -pub _addr_lsb: crate::ctypes::c_short, -pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, -pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { pub _dummy_bnd: [crate::ctypes::c_char; 4usize], @@ -4044,19 +549,12 @@ } #[repr(C)] #[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { -pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, -pub _si_pad: [crate::ctypes::c_int; 32usize], -} -#[repr(C)] -#[derive(Copy, Clone)] pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { pub si_signo: crate::ctypes::c_int, pub si_code: crate::ctypes::c_int, pub si_errno: crate::ctypes::c_int, pub _sifields: __sifields, } -pub type siginfo_t = siginfo; #[repr(C)] #[derive(Copy, Clone)] pub struct sigevent { @@ -4066,19 +564,11 @@ pub _sigev_un: sigevent__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { -pub _pad: [crate::ctypes::c_int; 13usize], -pub _tid: crate::ctypes::c_int, -pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { pub _function: ::core::option::Option, pub _attribute: *mut crate::ctypes::c_void, } -pub type sigevent_t = sigevent; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct statx_timestamp { @@ -4091,521 +581,29 @@ pub struct statx { pub stx_mask: __u32, pub stx_blksize: __u32, -pub stx_attributes: __u64, -pub stx_nlink: __u32, -pub stx_uid: __u32, -pub stx_gid: __u32, -pub stx_mode: __u16, -pub __spare0: [__u16; 1usize], -pub stx_ino: __u64, -pub stx_size: __u64, -pub stx_blocks: __u64, -pub stx_attributes_mask: __u64, -pub stx_atime: statx_timestamp, -pub stx_btime: statx_timestamp, -pub stx_ctime: statx_timestamp, -pub stx_mtime: statx_timestamp, -pub stx_rdev_major: __u32, -pub stx_rdev_minor: __u32, -pub stx_dev_major: __u32, -pub stx_dev_minor: __u32, -pub stx_mnt_id: __u64, -pub stx_dio_mem_align: __u32, -pub stx_dio_offset_align: __u32, -pub __spare3: [__u64; 12usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sysinfo { -pub uptime: __kernel_long_t, -pub loads: [__kernel_ulong_t; 3usize], -pub totalram: __kernel_ulong_t, -pub freeram: __kernel_ulong_t, -pub sharedram: __kernel_ulong_t, -pub bufferram: __kernel_ulong_t, -pub totalswap: __kernel_ulong_t, -pub freeswap: __kernel_ulong_t, -pub procs: __u16, -pub pad: __u16, -pub totalhigh: __kernel_ulong_t, -pub freehigh: __kernel_ulong_t, -pub mem_unit: __u32, -pub _f: [crate::ctypes::c_char; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcphdr { -pub source: __be16, -pub dest: __be16, -pub seq: __be32, -pub ack_seq: __be32, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub window: __be16, -pub check: __sum16, -pub urg_ptr: __be16, -} -impl tcphdr { -#[inline] -pub fn doff(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } -} -#[inline] -pub fn set_doff(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn res1(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } -} -#[inline] -pub fn set_res1(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn cwr(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } -} -#[inline] -pub fn set_cwr(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn ece(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } -} -#[inline] -pub fn set_ece(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 1u8, val as u64) -} -} -#[inline] -pub fn urg(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } -} -#[inline] -pub fn set_urg(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(10usize, 1u8, val as u64) -} -} -#[inline] -pub fn ack(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } -} -#[inline] -pub fn set_ack(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(11usize, 1u8, val as u64) -} -} -#[inline] -pub fn psh(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } -} -#[inline] -pub fn set_psh(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(12usize, 1u8, val as u64) -} -} -#[inline] -pub fn rst(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } -} -#[inline] -pub fn set_rst(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(13usize, 1u8, val as u64) -} -} -#[inline] -pub fn syn(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } -} -#[inline] -pub fn set_syn(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(14usize, 1u8, val as u64) -} -} -#[inline] -pub fn fin(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } -} -#[inline] -pub fn set_fin(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(15usize, 1u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let doff: u16 = unsafe { ::core::mem::transmute(doff) }; -doff as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let res1: u16 = unsafe { ::core::mem::transmute(res1) }; -res1 as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; -cwr as u64 -}); -__bindgen_bitfield_unit.set(9usize, 1u8, { -let ece: u16 = unsafe { ::core::mem::transmute(ece) }; -ece as u64 -}); -__bindgen_bitfield_unit.set(10usize, 1u8, { -let urg: u16 = unsafe { ::core::mem::transmute(urg) }; -urg as u64 -}); -__bindgen_bitfield_unit.set(11usize, 1u8, { -let ack: u16 = unsafe { ::core::mem::transmute(ack) }; -ack as u64 -}); -__bindgen_bitfield_unit.set(12usize, 1u8, { -let psh: u16 = unsafe { ::core::mem::transmute(psh) }; -psh as u64 -}); -__bindgen_bitfield_unit.set(13usize, 1u8, { -let rst: u16 = unsafe { ::core::mem::transmute(rst) }; -rst as u64 -}); -__bindgen_bitfield_unit.set(14usize, 1u8, { -let syn: u16 = unsafe { ::core::mem::transmute(syn) }; -syn as u64 -}); -__bindgen_bitfield_unit.set(15usize, 1u8, { -let fin: u16 = unsafe { ::core::mem::transmute(fin) }; -fin as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union tcp_word_hdr { -pub hdr: tcphdr, -pub words: [__be32; 5usize], -} -pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; -pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; -pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; -pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; -pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; -pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; -pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; -pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; -pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; -pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_4 { -TCP_FLAG_CWR = 8388608, -TCP_FLAG_ECE = 4194304, -TCP_FLAG_URG = 2097152, -TCP_FLAG_ACK = 1048576, -TCP_FLAG_PSH = 524288, -TCP_FLAG_RST = 262144, -TCP_FLAG_SYN = 131072, -TCP_FLAG_FIN = 65536, -TCP_RESERVED_BITS = 251658240, -TCP_DATA_OFFSET = 4026531840, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_repair_opt { -pub opt_code: __u32, -pub opt_val: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_repair_window { -pub snd_wl1: __u32, -pub snd_wnd: __u32, -pub max_window: __u32, -pub rcv_wnd: __u32, -pub rcv_wup: __u32, -} -pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; -pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; -pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; -pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_5 { -TCP_NO_QUEUE = 0, -TCP_RECV_QUEUE = 1, -TCP_SEND_QUEUE = 2, -TCP_QUEUES_NR = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_fastopen_client_fail { -TFO_STATUS_UNSPEC = 0, -TFO_COOKIE_UNAVAILABLE = 1, -TFO_DATA_NOT_ACKED = 2, -TFO_SYN_RETRANSMITTED = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_ca_state { -TCP_CA_Open = 0, -TCP_CA_Disorder = 1, -TCP_CA_CWR = 2, -TCP_CA_Recovery = 3, -TCP_CA_Loss = 4, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_info { -pub tcpi_state: __u8, -pub tcpi_ca_state: __u8, -pub tcpi_retransmits: __u8, -pub tcpi_probes: __u8, -pub tcpi_backoff: __u8, -pub tcpi_options: __u8, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub tcpi_rto: __u32, -pub tcpi_ato: __u32, -pub tcpi_snd_mss: __u32, -pub tcpi_rcv_mss: __u32, -pub tcpi_unacked: __u32, -pub tcpi_sacked: __u32, -pub tcpi_lost: __u32, -pub tcpi_retrans: __u32, -pub tcpi_fackets: __u32, -pub tcpi_last_data_sent: __u32, -pub tcpi_last_ack_sent: __u32, -pub tcpi_last_data_recv: __u32, -pub tcpi_last_ack_recv: __u32, -pub tcpi_pmtu: __u32, -pub tcpi_rcv_ssthresh: __u32, -pub tcpi_rtt: __u32, -pub tcpi_rttvar: __u32, -pub tcpi_snd_ssthresh: __u32, -pub tcpi_snd_cwnd: __u32, -pub tcpi_advmss: __u32, -pub tcpi_reordering: __u32, -pub tcpi_rcv_rtt: __u32, -pub tcpi_rcv_space: __u32, -pub tcpi_total_retrans: __u32, -pub tcpi_pacing_rate: __u64, -pub tcpi_max_pacing_rate: __u64, -pub tcpi_bytes_acked: __u64, -pub tcpi_bytes_received: __u64, -pub tcpi_segs_out: __u32, -pub tcpi_segs_in: __u32, -pub tcpi_notsent_bytes: __u32, -pub tcpi_min_rtt: __u32, -pub tcpi_data_segs_in: __u32, -pub tcpi_data_segs_out: __u32, -pub tcpi_delivery_rate: __u64, -pub tcpi_busy_time: __u64, -pub tcpi_rwnd_limited: __u64, -pub tcpi_sndbuf_limited: __u64, -pub tcpi_delivered: __u32, -pub tcpi_delivered_ce: __u32, -pub tcpi_bytes_sent: __u64, -pub tcpi_bytes_retrans: __u64, -pub tcpi_dsack_dups: __u32, -pub tcpi_reord_seen: __u32, -pub tcpi_rcv_ooopack: __u32, -pub tcpi_snd_wnd: __u32, -pub tcpi_rcv_wnd: __u32, -pub tcpi_rehash: __u32, -} -impl tcp_info { -#[inline] -pub fn tcpi_snd_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_rcv_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } -} -#[inline] -pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn tcpi_fastopen_client_fail(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } -} -#[inline] -pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 2u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; -tcpi_snd_wscale as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; -tcpi_rcv_wscale as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; -tcpi_delivery_rate_app_limited as u64 -}); -__bindgen_bitfield_unit.set(9usize, 2u8, { -let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; -tcpi_fastopen_client_fail as u64 -}); -__bindgen_bitfield_unit -} -} -pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; -pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; -pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; -pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; -pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; -pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; -pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; -pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; -pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; -pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; -pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; -pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; -pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; -pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; -pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; -pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; -pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; -pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; -pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; -pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; -pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; -pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; -pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; -pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; -pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; -pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; -pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; -pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_6 { -TCP_NLA_PAD = 0, -TCP_NLA_BUSY = 1, -TCP_NLA_RWND_LIMITED = 2, -TCP_NLA_SNDBUF_LIMITED = 3, -TCP_NLA_DATA_SEGS_OUT = 4, -TCP_NLA_TOTAL_RETRANS = 5, -TCP_NLA_PACING_RATE = 6, -TCP_NLA_DELIVERY_RATE = 7, -TCP_NLA_SND_CWND = 8, -TCP_NLA_REORDERING = 9, -TCP_NLA_MIN_RTT = 10, -TCP_NLA_RECUR_RETRANS = 11, -TCP_NLA_DELIVERY_RATE_APP_LMT = 12, -TCP_NLA_SNDQ_SIZE = 13, -TCP_NLA_CA_STATE = 14, -TCP_NLA_SND_SSTHRESH = 15, -TCP_NLA_DELIVERED = 16, -TCP_NLA_DELIVERED_CE = 17, -TCP_NLA_BYTES_SENT = 18, -TCP_NLA_BYTES_RETRANS = 19, -TCP_NLA_DSACK_DUPS = 20, -TCP_NLA_REORD_SEEN = 21, -TCP_NLA_SRTT = 22, -TCP_NLA_TIMEOUT_REHASH = 23, -TCP_NLA_BYTES_NOTSENT = 24, -TCP_NLA_EDT = 25, -TCP_NLA_TTL = 26, -TCP_NLA_REHASH = 27, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct tcp_md5sig { -pub tcpm_addr: __kernel_sockaddr_storage, -pub tcpm_flags: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_ifindex: crate::ctypes::c_int, -pub tcpm_key: [__u8; 80usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_diag_md5sig { -pub tcpm_family: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_addr: [__be32; 4usize], -pub tcpm_key: [__u8; 80usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_zerocopy_receive { -pub address: __u64, -pub length: __u32, -pub recv_skip_hint: __u32, -pub inq: __u32, -pub err: __s32, -pub copybuf_address: __u64, -pub copybuf_len: __s32, -pub flags: __u32, -pub msg_control: __u64, -pub msg_controllen: __u64, -pub msg_flags: __u32, -pub reserved: __u32, +pub stx_attributes: __u64, +pub stx_nlink: __u32, +pub stx_uid: __u32, +pub stx_gid: __u32, +pub stx_mode: __u16, +pub __spare0: [__u16; 1usize], +pub stx_ino: __u64, +pub stx_size: __u64, +pub stx_blocks: __u64, +pub stx_attributes_mask: __u64, +pub stx_atime: statx_timestamp, +pub stx_btime: statx_timestamp, +pub stx_ctime: statx_timestamp, +pub stx_mtime: statx_timestamp, +pub stx_rdev_major: __u32, +pub stx_rdev_minor: __u32, +pub stx_dev_major: __u32, +pub stx_dev_minor: __u32, +pub stx_mnt_id: __u64, +pub stx_dio_mem_align: __u32, +pub stx_dio_offset_align: __u32, +pub __spare3: [__u64; 12usize], } -pub type cc_t = crate::ctypes::c_uchar; -pub type speed_t = crate::ctypes::c_uint; -pub type tcflag_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct termios { @@ -4693,42 +691,2137 @@ pub iov_base: *mut crate::ctypes::c_void, pub iov_len: __kernel_size_t, } +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct uffd_msg { +pub event: __u8, +pub reserved1: __u8, +pub reserved2: __u16, +pub reserved3: __u32, +pub arg: uffd_msg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { +pub flags: __u64, +pub address: __u64, +pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { +pub ufd: __u32, +} #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_un { -pub sun_family: __kernel_sa_family_t, -pub sun_path: [crate::ctypes::c_char; 108usize], +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { +pub from: __u64, +pub to: __u64, +pub len: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct oldold_utsname { -pub sysname: [crate::ctypes::c_char; 9usize], -pub nodename: [crate::ctypes::c_char; 9usize], -pub release: [crate::ctypes::c_char; 9usize], -pub version: [crate::ctypes::c_char; 9usize], -pub machine: [crate::ctypes::c_char; 9usize], +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { +pub start: __u64, +pub end: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct old_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { +pub reserved1: __u64, +pub reserved2: __u64, +pub reserved3: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct new_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], -pub domainname: [crate::ctypes::c_char; 65usize], +pub struct uffdio_api { +pub api: __u64, +pub features: __u64, +pub ioctls: __u64, } -impl membarrier_cmd { -pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_range { +pub start: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_register { +pub range: uffdio_range, +pub mode: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_copy { +pub dst: __u64, +pub src: __u64, +pub len: __u64, +pub mode: __u64, +pub copy: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_zeropage { +pub range: uffdio_range, +pub mode: __u64, +pub zeropage: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_writeprotect { +pub range: uffdio_range, +pub mode: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_continue { +pub range: uffdio_range, +pub mode: __u64, +pub mapped: __s64, +} +#[repr(C)] +#[derive(Debug)] +pub struct linux_dirent64 { +pub d_ino: crate::ctypes::c_ulonglong, +pub d_off: crate::ctypes::c_longlong, +pub d_reclen: __u16, +pub d_type: __u8, +pub d_name: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat { +pub st_dev: crate::ctypes::c_uint, +pub st_pad1: [crate::ctypes::c_long; 3usize], +pub st_ino: __kernel_ino_t, +pub st_mode: __kernel_mode_t, +pub st_nlink: __u32, +pub st_uid: __kernel_uid32_t, +pub st_gid: __kernel_gid32_t, +pub st_rdev: crate::ctypes::c_uint, +pub st_pad2: [crate::ctypes::c_long; 2usize], +pub st_size: crate::ctypes::c_long, +pub st_pad3: crate::ctypes::c_long, +pub st_atime: crate::ctypes::c_long, +pub st_atime_nsec: crate::ctypes::c_long, +pub st_mtime: crate::ctypes::c_long, +pub st_mtime_nsec: crate::ctypes::c_long, +pub st_ctime: crate::ctypes::c_long, +pub st_ctime_nsec: crate::ctypes::c_long, +pub st_blksize: crate::ctypes::c_long, +pub st_blocks: crate::ctypes::c_long, +pub st_pad4: [crate::ctypes::c_long; 14usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat64 { +pub st_dev: crate::ctypes::c_ulong, +pub st_pad0: [crate::ctypes::c_ulong; 3usize], +pub st_ino: crate::ctypes::c_ulonglong, +pub st_mode: __kernel_mode_t, +pub st_nlink: __u32, +pub st_uid: __kernel_uid32_t, +pub st_gid: __kernel_gid32_t, +pub st_rdev: crate::ctypes::c_ulong, +pub st_pad1: [crate::ctypes::c_ulong; 3usize], +pub st_size: crate::ctypes::c_longlong, +pub st_atime: crate::ctypes::c_long, +pub st_atime_nsec: crate::ctypes::c_ulong, +pub st_mtime: crate::ctypes::c_long, +pub st_mtime_nsec: crate::ctypes::c_ulong, +pub st_ctime: crate::ctypes::c_long, +pub st_ctime_nsec: crate::ctypes::c_ulong, +pub st_blksize: crate::ctypes::c_ulong, +pub st_pad2: crate::ctypes::c_ulong, +pub st_blocks: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs { +pub f_type: crate::ctypes::c_long, +pub f_bsize: crate::ctypes::c_long, +pub f_frsize: crate::ctypes::c_long, +pub f_blocks: crate::ctypes::c_long, +pub f_bfree: crate::ctypes::c_long, +pub f_files: crate::ctypes::c_long, +pub f_ffree: crate::ctypes::c_long, +pub f_bavail: crate::ctypes::c_long, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: crate::ctypes::c_long, +pub f_flags: crate::ctypes::c_long, +pub f_spare: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_frsize: __u32, +pub __pad: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_bavail: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct user_desc { +pub entry_number: crate::ctypes::c_uint, +pub base_addr: crate::ctypes::c_uint, +pub limit: crate::ctypes::c_uint, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub __bindgen_padding_0: [u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct kernel_sigset_t { +pub sig: [crate::ctypes::c_ulong; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct kernel_sigaction { +pub sa_handler_kernel: __kernel_sighandler_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_mask: kernel_sigset_t, +} +pub const LINUX_VERSION_CODE: u32 = 393984; +pub const LINUX_VERSION_MAJOR: u32 = 6; +pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; +pub const LINUX_VERSION_SUBLEVEL: u32 = 0; +pub const AT_SYSINFO_EHDR: u32 = 33; +pub const AT_VECTOR_SIZE_ARCH: u32 = 1; +pub const AT_NULL: u32 = 0; +pub const AT_IGNORE: u32 = 1; +pub const AT_EXECFD: u32 = 2; +pub const AT_PHDR: u32 = 3; +pub const AT_PHENT: u32 = 4; +pub const AT_PHNUM: u32 = 5; +pub const AT_PAGESZ: u32 = 6; +pub const AT_BASE: u32 = 7; +pub const AT_FLAGS: u32 = 8; +pub const AT_ENTRY: u32 = 9; +pub const AT_NOTELF: u32 = 10; +pub const AT_UID: u32 = 11; +pub const AT_EUID: u32 = 12; +pub const AT_GID: u32 = 13; +pub const AT_EGID: u32 = 14; +pub const AT_PLATFORM: u32 = 15; +pub const AT_HWCAP: u32 = 16; +pub const AT_CLKTCK: u32 = 17; +pub const AT_SECURE: u32 = 23; +pub const AT_BASE_PLATFORM: u32 = 24; +pub const AT_RANDOM: u32 = 25; +pub const AT_HWCAP2: u32 = 26; +pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; +pub const AT_RSEQ_ALIGN: u32 = 28; +pub const AT_EXECFN: u32 = 31; +pub const AT_MINSIGSTKSZ: u32 = 51; +pub const __FD_SETSIZE: u32 = 1024; +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; +pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; +pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; +pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; +pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; +pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; +pub const VFS_CAP_REVISION_SHIFT: u32 = 24; +pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; +pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; +pub const VFS_CAP_REVISION_1: u32 = 16777216; +pub const VFS_CAP_U32_1: u32 = 1; +pub const VFS_CAP_REVISION_2: u32 = 33554432; +pub const VFS_CAP_U32_2: u32 = 2; +pub const VFS_CAP_REVISION_3: u32 = 50331648; +pub const VFS_CAP_U32_3: u32 = 2; +pub const VFS_CAP_U32: u32 = 2; +pub const VFS_CAP_REVISION: u32 = 50331648; +pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S: u32 = 1; +pub const CAP_CHOWN: u32 = 0; +pub const CAP_DAC_OVERRIDE: u32 = 1; +pub const CAP_DAC_READ_SEARCH: u32 = 2; +pub const CAP_FOWNER: u32 = 3; +pub const CAP_FSETID: u32 = 4; +pub const CAP_KILL: u32 = 5; +pub const CAP_SETGID: u32 = 6; +pub const CAP_SETUID: u32 = 7; +pub const CAP_SETPCAP: u32 = 8; +pub const CAP_LINUX_IMMUTABLE: u32 = 9; +pub const CAP_NET_BIND_SERVICE: u32 = 10; +pub const CAP_NET_BROADCAST: u32 = 11; +pub const CAP_NET_ADMIN: u32 = 12; +pub const CAP_NET_RAW: u32 = 13; +pub const CAP_IPC_LOCK: u32 = 14; +pub const CAP_IPC_OWNER: u32 = 15; +pub const CAP_SYS_MODULE: u32 = 16; +pub const CAP_SYS_RAWIO: u32 = 17; +pub const CAP_SYS_CHROOT: u32 = 18; +pub const CAP_SYS_PTRACE: u32 = 19; +pub const CAP_SYS_PACCT: u32 = 20; +pub const CAP_SYS_ADMIN: u32 = 21; +pub const CAP_SYS_BOOT: u32 = 22; +pub const CAP_SYS_NICE: u32 = 23; +pub const CAP_SYS_RESOURCE: u32 = 24; +pub const CAP_SYS_TIME: u32 = 25; +pub const CAP_SYS_TTY_CONFIG: u32 = 26; +pub const CAP_MKNOD: u32 = 27; +pub const CAP_LEASE: u32 = 28; +pub const CAP_AUDIT_WRITE: u32 = 29; +pub const CAP_AUDIT_CONTROL: u32 = 30; +pub const CAP_SETFCAP: u32 = 31; +pub const CAP_MAC_OVERRIDE: u32 = 32; +pub const CAP_MAC_ADMIN: u32 = 33; +pub const CAP_SYSLOG: u32 = 34; +pub const CAP_WAKE_ALARM: u32 = 35; +pub const CAP_BLOCK_SUSPEND: u32 = 36; +pub const CAP_AUDIT_READ: u32 = 37; +pub const CAP_PERFMON: u32 = 38; +pub const CAP_BPF: u32 = 39; +pub const CAP_CHECKPOINT_RESTORE: u32 = 40; +pub const CAP_LAST_CAP: u32 = 40; +pub const O_APPEND: u32 = 8; +pub const O_DSYNC: u32 = 16; +pub const O_NONBLOCK: u32 = 128; +pub const O_CREAT: u32 = 256; +pub const O_TRUNC: u32 = 512; +pub const O_EXCL: u32 = 1024; +pub const O_NOCTTY: u32 = 2048; +pub const FASYNC: u32 = 4096; +pub const O_LARGEFILE: u32 = 8192; +pub const __O_SYNC: u32 = 16384; +pub const O_SYNC: u32 = 16400; +pub const O_DIRECT: u32 = 32768; +pub const F_GETLK: u32 = 14; +pub const F_SETLK: u32 = 6; +pub const F_SETLKW: u32 = 7; +pub const F_SETOWN: u32 = 24; +pub const F_GETOWN: u32 = 23; +pub const F_GETLK64: u32 = 33; +pub const F_SETLK64: u32 = 34; +pub const F_SETLKW64: u32 = 35; +pub const O_ACCMODE: u32 = 3; +pub const O_RDONLY: u32 = 0; +pub const O_WRONLY: u32 = 1; +pub const O_RDWR: u32 = 2; +pub const O_DIRECTORY: u32 = 65536; +pub const O_NOFOLLOW: u32 = 131072; +pub const O_NOATIME: u32 = 262144; +pub const O_CLOEXEC: u32 = 524288; +pub const O_PATH: u32 = 2097152; +pub const __O_TMPFILE: u32 = 4194304; +pub const O_TMPFILE: u32 = 4259840; +pub const O_TMPFILE_MASK: u32 = 4260096; +pub const O_NDELAY: u32 = 128; +pub const F_DUPFD: u32 = 0; +pub const F_GETFD: u32 = 1; +pub const F_SETFD: u32 = 2; +pub const F_GETFL: u32 = 3; +pub const F_SETFL: u32 = 4; +pub const F_SETSIG: u32 = 10; +pub const F_GETSIG: u32 = 11; +pub const F_SETOWN_EX: u32 = 15; +pub const F_GETOWN_EX: u32 = 16; +pub const F_GETOWNER_UIDS: u32 = 17; +pub const F_OFD_GETLK: u32 = 36; +pub const F_OFD_SETLK: u32 = 37; +pub const F_OFD_SETLKW: u32 = 38; +pub const F_OWNER_TID: u32 = 0; +pub const F_OWNER_PID: u32 = 1; +pub const F_OWNER_PGRP: u32 = 2; +pub const FD_CLOEXEC: u32 = 1; +pub const F_RDLCK: u32 = 0; +pub const F_WRLCK: u32 = 1; +pub const F_UNLCK: u32 = 2; +pub const F_EXLCK: u32 = 4; +pub const F_SHLCK: u32 = 8; +pub const LOCK_SH: u32 = 1; +pub const LOCK_EX: u32 = 2; +pub const LOCK_NB: u32 = 4; +pub const LOCK_UN: u32 = 8; +pub const LOCK_MAND: u32 = 32; +pub const LOCK_READ: u32 = 64; +pub const LOCK_WRITE: u32 = 128; +pub const LOCK_RW: u32 = 192; +pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; +pub const RESOLVE_NO_XDEV: u32 = 1; +pub const RESOLVE_NO_MAGICLINKS: u32 = 2; +pub const RESOLVE_NO_SYMLINKS: u32 = 4; +pub const RESOLVE_BENEATH: u32 = 8; +pub const RESOLVE_IN_ROOT: u32 = 16; +pub const RESOLVE_CACHED: u32 = 32; +pub const F_SETLEASE: u32 = 1024; +pub const F_GETLEASE: u32 = 1025; +pub const F_CANCELLK: u32 = 1029; +pub const F_DUPFD_CLOEXEC: u32 = 1030; +pub const F_NOTIFY: u32 = 1026; +pub const F_SETPIPE_SZ: u32 = 1031; +pub const F_GETPIPE_SZ: u32 = 1032; +pub const F_ADD_SEALS: u32 = 1033; +pub const F_GET_SEALS: u32 = 1034; +pub const F_SEAL_SEAL: u32 = 1; +pub const F_SEAL_SHRINK: u32 = 2; +pub const F_SEAL_GROW: u32 = 4; +pub const F_SEAL_WRITE: u32 = 8; +pub const F_SEAL_FUTURE_WRITE: u32 = 16; +pub const F_SEAL_EXEC: u32 = 32; +pub const F_GET_RW_HINT: u32 = 1035; +pub const F_SET_RW_HINT: u32 = 1036; +pub const F_GET_FILE_RW_HINT: u32 = 1037; +pub const F_SET_FILE_RW_HINT: u32 = 1038; +pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; +pub const RWH_WRITE_LIFE_NONE: u32 = 1; +pub const RWH_WRITE_LIFE_SHORT: u32 = 2; +pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; +pub const RWH_WRITE_LIFE_LONG: u32 = 4; +pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; +pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; +pub const DN_ACCESS: u32 = 1; +pub const DN_MODIFY: u32 = 2; +pub const DN_CREATE: u32 = 4; +pub const DN_DELETE: u32 = 8; +pub const DN_RENAME: u32 = 16; +pub const DN_ATTRIB: u32 = 32; +pub const DN_MULTISHOT: u32 = 2147483648; +pub const AT_FDCWD: i32 = -100; +pub const AT_SYMLINK_NOFOLLOW: u32 = 256; +pub const AT_EACCESS: u32 = 512; +pub const AT_REMOVEDIR: u32 = 512; +pub const AT_SYMLINK_FOLLOW: u32 = 1024; +pub const AT_NO_AUTOMOUNT: u32 = 2048; +pub const AT_EMPTY_PATH: u32 = 4096; +pub const AT_STATX_SYNC_TYPE: u32 = 24576; +pub const AT_STATX_SYNC_AS_STAT: u32 = 0; +pub const AT_STATX_FORCE_SYNC: u32 = 8192; +pub const AT_STATX_DONT_SYNC: u32 = 16384; +pub const AT_RECURSIVE: u32 = 32768; +pub const EPOLL_CLOEXEC: u32 = 524288; +pub const EPOLL_CTL_ADD: u32 = 1; +pub const EPOLL_CTL_DEL: u32 = 2; +pub const EPOLL_CTL_MOD: u32 = 3; +pub const POSIX_FADV_NORMAL: u32 = 0; +pub const POSIX_FADV_RANDOM: u32 = 1; +pub const POSIX_FADV_SEQUENTIAL: u32 = 2; +pub const POSIX_FADV_WILLNEED: u32 = 3; +pub const POSIX_FADV_DONTNEED: u32 = 4; +pub const POSIX_FADV_NOREUSE: u32 = 5; +pub const FALLOC_FL_KEEP_SIZE: u32 = 1; +pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; +pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; +pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; +pub const FALLOC_FL_ZERO_RANGE: u32 = 16; +pub const FALLOC_FL_INSERT_RANGE: u32 = 32; +pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 536805376; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const OPEN_TREE_CLOEXEC: u32 = 524288; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const FUTEX_WAIT: u32 = 0; +pub const FUTEX_WAKE: u32 = 1; +pub const FUTEX_FD: u32 = 2; +pub const FUTEX_REQUEUE: u32 = 3; +pub const FUTEX_CMP_REQUEUE: u32 = 4; +pub const FUTEX_WAKE_OP: u32 = 5; +pub const FUTEX_LOCK_PI: u32 = 6; +pub const FUTEX_UNLOCK_PI: u32 = 7; +pub const FUTEX_TRYLOCK_PI: u32 = 8; +pub const FUTEX_WAIT_BITSET: u32 = 9; +pub const FUTEX_WAKE_BITSET: u32 = 10; +pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; +pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; +pub const FUTEX_LOCK_PI2: u32 = 13; +pub const FUTEX_PRIVATE_FLAG: u32 = 128; +pub const FUTEX_CLOCK_REALTIME: u32 = 256; +pub const FUTEX_CMD_MASK: i32 = -385; +pub const FUTEX_WAIT_PRIVATE: u32 = 128; +pub const FUTEX_WAKE_PRIVATE: u32 = 129; +pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; +pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; +pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; +pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; +pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; +pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; +pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; +pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; +pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; +pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; +pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; +pub const FUTEX_32: u32 = 2; +pub const FUTEX_WAITV_MAX: u32 = 128; +pub const FUTEX_WAITERS: u32 = 2147483648; +pub const FUTEX_OWNER_DIED: u32 = 1073741824; +pub const FUTEX_TID_MASK: u32 = 1073741823; +pub const ROBUST_LIST_LIMIT: u32 = 2048; +pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; +pub const FUTEX_OP_SET: u32 = 0; +pub const FUTEX_OP_ADD: u32 = 1; +pub const FUTEX_OP_OR: u32 = 2; +pub const FUTEX_OP_ANDN: u32 = 3; +pub const FUTEX_OP_XOR: u32 = 4; +pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; +pub const FUTEX_OP_CMP_EQ: u32 = 0; +pub const FUTEX_OP_CMP_NE: u32 = 1; +pub const FUTEX_OP_CMP_LT: u32 = 2; +pub const FUTEX_OP_CMP_LE: u32 = 3; +pub const FUTEX_OP_CMP_GT: u32 = 4; +pub const FUTEX_OP_CMP_GE: u32 = 5; +pub const IN_ACCESS: u32 = 1; +pub const IN_MODIFY: u32 = 2; +pub const IN_ATTRIB: u32 = 4; +pub const IN_CLOSE_WRITE: u32 = 8; +pub const IN_CLOSE_NOWRITE: u32 = 16; +pub const IN_OPEN: u32 = 32; +pub const IN_MOVED_FROM: u32 = 64; +pub const IN_MOVED_TO: u32 = 128; +pub const IN_CREATE: u32 = 256; +pub const IN_DELETE: u32 = 512; +pub const IN_DELETE_SELF: u32 = 1024; +pub const IN_MOVE_SELF: u32 = 2048; +pub const IN_UNMOUNT: u32 = 8192; +pub const IN_Q_OVERFLOW: u32 = 16384; +pub const IN_IGNORED: u32 = 32768; +pub const IN_CLOSE: u32 = 24; +pub const IN_MOVE: u32 = 192; +pub const IN_ONLYDIR: u32 = 16777216; +pub const IN_DONT_FOLLOW: u32 = 33554432; +pub const IN_EXCL_UNLINK: u32 = 67108864; +pub const IN_MASK_CREATE: u32 = 268435456; +pub const IN_MASK_ADD: u32 = 536870912; +pub const IN_ISDIR: u32 = 1073741824; +pub const IN_ONESHOT: u32 = 2147483648; +pub const IN_ALL_EVENTS: u32 = 4095; +pub const IN_CLOEXEC: u32 = 524288; +pub const IN_NONBLOCK: u32 = 128; +pub const ADFS_SUPER_MAGIC: u32 = 44533; +pub const AFFS_SUPER_MAGIC: u32 = 44543; +pub const AFS_SUPER_MAGIC: u32 = 1397113167; +pub const AUTOFS_SUPER_MAGIC: u32 = 391; +pub const CEPH_SUPER_MAGIC: u32 = 12805120; +pub const CODA_SUPER_MAGIC: u32 = 1937076805; +pub const CRAMFS_MAGIC: u32 = 684539205; +pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; +pub const DEBUGFS_MAGIC: u32 = 1684170528; +pub const SECURITYFS_MAGIC: u32 = 1935894131; +pub const SELINUX_MAGIC: u32 = 4185718668; +pub const SMACK_MAGIC: u32 = 1128357203; +pub const RAMFS_MAGIC: u32 = 2240043254; +pub const TMPFS_MAGIC: u32 = 16914836; +pub const HUGETLBFS_MAGIC: u32 = 2508478710; +pub const SQUASHFS_MAGIC: u32 = 1936814952; +pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; +pub const EFS_SUPER_MAGIC: u32 = 4278867; +pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; +pub const EXT2_SUPER_MAGIC: u32 = 61267; +pub const EXT3_SUPER_MAGIC: u32 = 61267; +pub const XENFS_SUPER_MAGIC: u32 = 2881100148; +pub const EXT4_SUPER_MAGIC: u32 = 61267; +pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; +pub const NILFS_SUPER_MAGIC: u32 = 13364; +pub const F2FS_SUPER_MAGIC: u32 = 4076150800; +pub const HPFS_SUPER_MAGIC: u32 = 4187351113; +pub const ISOFS_SUPER_MAGIC: u32 = 38496; +pub const JFFS2_SUPER_MAGIC: u32 = 29366; +pub const XFS_SUPER_MAGIC: u32 = 1481003842; +pub const PSTOREFS_MAGIC: u32 = 1634035564; +pub const EFIVARFS_MAGIC: u32 = 3730735588; +pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; +pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; +pub const FUSE_SUPER_MAGIC: u32 = 1702057286; +pub const MINIX_SUPER_MAGIC: u32 = 4991; +pub const MINIX_SUPER_MAGIC2: u32 = 5007; +pub const MINIX2_SUPER_MAGIC: u32 = 9320; +pub const MINIX2_SUPER_MAGIC2: u32 = 9336; +pub const MINIX3_SUPER_MAGIC: u32 = 19802; +pub const MSDOS_SUPER_MAGIC: u32 = 19780; +pub const EXFAT_SUPER_MAGIC: u32 = 538032816; +pub const NCP_SUPER_MAGIC: u32 = 22092; +pub const NFS_SUPER_MAGIC: u32 = 26985; +pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; +pub const OPENPROM_SUPER_MAGIC: u32 = 40865; +pub const QNX4_SUPER_MAGIC: u32 = 47; +pub const QNX6_SUPER_MAGIC: u32 = 1746473250; +pub const AFS_FS_MAGIC: u32 = 1799439955; +pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; +pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9] = b"ReIsErFs\0"; +pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr2Fs\0"; +pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr3Fs\0"; +pub const SMB_SUPER_MAGIC: u32 = 20859; +pub const CIFS_SUPER_MAGIC: u32 = 4283649346; +pub const SMB2_SUPER_MAGIC: u32 = 4266872130; +pub const CGROUP_SUPER_MAGIC: u32 = 2613483; +pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; +pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; +pub const STACK_END_MAGIC: u32 = 1470918301; +pub const TRACEFS_MAGIC: u32 = 1953653091; +pub const V9FS_MAGIC: u32 = 16914839; +pub const BDEVFS_MAGIC: u32 = 1650746742; +pub const DAXFS_MAGIC: u32 = 1684300152; +pub const BINFMTFS_MAGIC: u32 = 1112100429; +pub const DEVPTS_SUPER_MAGIC: u32 = 7377; +pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; +pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; +pub const PIPEFS_MAGIC: u32 = 1346981957; +pub const PROC_SUPER_MAGIC: u32 = 40864; +pub const SOCKFS_MAGIC: u32 = 1397703499; +pub const SYSFS_MAGIC: u32 = 1650812274; +pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; +pub const MTD_INODE_FS_MAGIC: u32 = 288389204; +pub const ANON_INODE_FS_MAGIC: u32 = 151263540; +pub const BTRFS_TEST_MAGIC: u32 = 1936880249; +pub const NSFS_MAGIC: u32 = 1853056627; +pub const BPF_FS_MAGIC: u32 = 3405662737; +pub const AAFS_MAGIC: u32 = 1513908720; +pub const ZONEFS_MAGIC: u32 = 1515144787; +pub const UDF_SUPER_MAGIC: u32 = 352400198; +pub const DMA_BUF_MAGIC: u32 = 1145913666; +pub const DEVMEM_MAGIC: u32 = 1162691661; +pub const SECRETMEM_MAGIC: u32 = 1397048141; +pub const PROT_NONE: u32 = 0; +pub const PROT_READ: u32 = 1; +pub const PROT_WRITE: u32 = 2; +pub const PROT_EXEC: u32 = 4; +pub const PROT_SEM: u32 = 16; +pub const PROT_GROWSDOWN: u32 = 16777216; +pub const PROT_GROWSUP: u32 = 33554432; +pub const MAP_TYPE: u32 = 15; +pub const MAP_FIXED: u32 = 16; +pub const MAP_RENAME: u32 = 32; +pub const MAP_AUTOGROW: u32 = 64; +pub const MAP_LOCAL: u32 = 128; +pub const MAP_AUTORSRV: u32 = 256; +pub const MAP_NORESERVE: u32 = 1024; +pub const MAP_ANONYMOUS: u32 = 2048; +pub const MAP_GROWSDOWN: u32 = 4096; +pub const MAP_DENYWRITE: u32 = 8192; +pub const MAP_EXECUTABLE: u32 = 16384; +pub const MAP_LOCKED: u32 = 32768; +pub const MAP_POPULATE: u32 = 65536; +pub const MAP_NONBLOCK: u32 = 131072; +pub const MAP_STACK: u32 = 262144; +pub const MAP_HUGETLB: u32 = 524288; +pub const MAP_FIXED_NOREPLACE: u32 = 1048576; +pub const MS_ASYNC: u32 = 1; +pub const MS_INVALIDATE: u32 = 2; +pub const MS_SYNC: u32 = 4; +pub const MCL_CURRENT: u32 = 1; +pub const MCL_FUTURE: u32 = 2; +pub const MCL_ONFAULT: u32 = 4; +pub const MLOCK_ONFAULT: u32 = 1; +pub const MADV_NORMAL: u32 = 0; +pub const MADV_RANDOM: u32 = 1; +pub const MADV_SEQUENTIAL: u32 = 2; +pub const MADV_WILLNEED: u32 = 3; +pub const MADV_DONTNEED: u32 = 4; +pub const MADV_FREE: u32 = 8; +pub const MADV_REMOVE: u32 = 9; +pub const MADV_DONTFORK: u32 = 10; +pub const MADV_DOFORK: u32 = 11; +pub const MADV_MERGEABLE: u32 = 12; +pub const MADV_UNMERGEABLE: u32 = 13; +pub const MADV_HWPOISON: u32 = 100; +pub const MADV_HUGEPAGE: u32 = 14; +pub const MADV_NOHUGEPAGE: u32 = 15; +pub const MADV_DONTDUMP: u32 = 16; +pub const MADV_DODUMP: u32 = 17; +pub const MADV_WIPEONFORK: u32 = 18; +pub const MADV_KEEPONFORK: u32 = 19; +pub const MADV_COLD: u32 = 20; +pub const MADV_PAGEOUT: u32 = 21; +pub const MADV_POPULATE_READ: u32 = 22; +pub const MADV_POPULATE_WRITE: u32 = 23; +pub const MADV_DONTNEED_LOCKED: u32 = 24; +pub const MADV_COLLAPSE: u32 = 25; +pub const MAP_FILE: u32 = 0; +pub const PKEY_DISABLE_ACCESS: u32 = 1; +pub const PKEY_DISABLE_WRITE: u32 = 2; +pub const PKEY_ACCESS_MASK: u32 = 3; +pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; +pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; +pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; +pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; +pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; +pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; +pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; +pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; +pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; +pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; +pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; +pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; +pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; +pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; +pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; +pub const MREMAP_MAYMOVE: u32 = 1; +pub const MREMAP_FIXED: u32 = 2; +pub const MREMAP_DONTUNMAP: u32 = 4; +pub const OVERCOMMIT_GUESS: u32 = 0; +pub const OVERCOMMIT_ALWAYS: u32 = 1; +pub const OVERCOMMIT_NEVER: u32 = 2; +pub const MAP_SHARED: u32 = 1; +pub const MAP_PRIVATE: u32 = 2; +pub const MAP_SHARED_VALIDATE: u32 = 3; +pub const MAP_HUGE_SHIFT: u32 = 26; +pub const MAP_HUGE_MASK: u32 = 63; +pub const MAP_HUGE_16KB: u32 = 939524096; +pub const MAP_HUGE_64KB: u32 = 1073741824; +pub const MAP_HUGE_512KB: u32 = 1275068416; +pub const MAP_HUGE_1MB: u32 = 1342177280; +pub const MAP_HUGE_2MB: u32 = 1409286144; +pub const MAP_HUGE_8MB: u32 = 1543503872; +pub const MAP_HUGE_16MB: u32 = 1610612736; +pub const MAP_HUGE_32MB: u32 = 1677721600; +pub const MAP_HUGE_256MB: u32 = 1879048192; +pub const MAP_HUGE_512MB: u32 = 1946157056; +pub const MAP_HUGE_1GB: u32 = 2013265920; +pub const MAP_HUGE_2GB: u32 = 2080374784; +pub const MAP_HUGE_16GB: u32 = 2281701376; +pub const POLLWRBAND: u32 = 256; +pub const POLLIN: u32 = 1; +pub const POLLPRI: u32 = 2; +pub const POLLOUT: u32 = 4; +pub const POLLERR: u32 = 8; +pub const POLLHUP: u32 = 16; +pub const POLLNVAL: u32 = 32; +pub const POLLRDNORM: u32 = 64; +pub const POLLRDBAND: u32 = 128; +pub const POLLMSG: u32 = 1024; +pub const POLLREMOVE: u32 = 4096; +pub const POLLRDHUP: u32 = 8192; +pub const GRND_NONBLOCK: u32 = 1; +pub const GRND_RANDOM: u32 = 2; +pub const GRND_INSECURE: u32 = 4; +pub const ITIMER_REAL: u32 = 0; +pub const ITIMER_VIRTUAL: u32 = 1; +pub const ITIMER_PROF: u32 = 2; +pub const CLOCK_REALTIME: u32 = 0; +pub const CLOCK_MONOTONIC: u32 = 1; +pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; +pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; +pub const CLOCK_MONOTONIC_RAW: u32 = 4; +pub const CLOCK_REALTIME_COARSE: u32 = 5; +pub const CLOCK_MONOTONIC_COARSE: u32 = 6; +pub const CLOCK_BOOTTIME: u32 = 7; +pub const CLOCK_REALTIME_ALARM: u32 = 8; +pub const CLOCK_BOOTTIME_ALARM: u32 = 9; +pub const CLOCK_SGI_CYCLE: u32 = 10; +pub const CLOCK_TAI: u32 = 11; +pub const MAX_CLOCKS: u32 = 16; +pub const CLOCKS_MASK: u32 = 1; +pub const CLOCKS_MONO: u32 = 1; +pub const TIMER_ABSTIME: u32 = 1; +pub const RUSAGE_SELF: u32 = 0; +pub const RUSAGE_CHILDREN: i32 = -1; +pub const RUSAGE_BOTH: i32 = -2; +pub const RUSAGE_THREAD: u32 = 1; +pub const RLIM64_INFINITY: i32 = -1; +pub const PRIO_MIN: i32 = -20; +pub const PRIO_MAX: u32 = 20; +pub const PRIO_PROCESS: u32 = 0; +pub const PRIO_PGRP: u32 = 1; +pub const PRIO_USER: u32 = 2; +pub const _STK_LIM: u32 = 8388608; +pub const MLOCK_LIMIT: u32 = 8388608; +pub const RLIMIT_NOFILE: u32 = 5; +pub const RLIMIT_AS: u32 = 6; +pub const RLIMIT_RSS: u32 = 7; +pub const RLIMIT_NPROC: u32 = 8; +pub const RLIMIT_MEMLOCK: u32 = 9; +pub const RLIM_INFINITY: u32 = 2147483647; +pub const RLIMIT_CPU: u32 = 0; +pub const RLIMIT_FSIZE: u32 = 1; +pub const RLIMIT_DATA: u32 = 2; +pub const RLIMIT_STACK: u32 = 3; +pub const RLIMIT_CORE: u32 = 4; +pub const RLIMIT_LOCKS: u32 = 10; +pub const RLIMIT_SIGPENDING: u32 = 11; +pub const RLIMIT_MSGQUEUE: u32 = 12; +pub const RLIMIT_NICE: u32 = 13; +pub const RLIMIT_RTPRIO: u32 = 14; +pub const RLIMIT_RTTIME: u32 = 15; +pub const RLIM_NLIMITS: u32 = 16; +pub const CSIGNAL: u32 = 255; +pub const CLONE_VM: u32 = 256; +pub const CLONE_FS: u32 = 512; +pub const CLONE_FILES: u32 = 1024; +pub const CLONE_SIGHAND: u32 = 2048; +pub const CLONE_PIDFD: u32 = 4096; +pub const CLONE_PTRACE: u32 = 8192; +pub const CLONE_VFORK: u32 = 16384; +pub const CLONE_PARENT: u32 = 32768; +pub const CLONE_THREAD: u32 = 65536; +pub const CLONE_NEWNS: u32 = 131072; +pub const CLONE_SYSVSEM: u32 = 262144; +pub const CLONE_SETTLS: u32 = 524288; +pub const CLONE_PARENT_SETTID: u32 = 1048576; +pub const CLONE_CHILD_CLEARTID: u32 = 2097152; +pub const CLONE_DETACHED: u32 = 4194304; +pub const CLONE_UNTRACED: u32 = 8388608; +pub const CLONE_CHILD_SETTID: u32 = 16777216; +pub const CLONE_NEWCGROUP: u32 = 33554432; +pub const CLONE_NEWUTS: u32 = 67108864; +pub const CLONE_NEWIPC: u32 = 134217728; +pub const CLONE_NEWUSER: u32 = 268435456; +pub const CLONE_NEWPID: u32 = 536870912; +pub const CLONE_NEWNET: u32 = 1073741824; +pub const CLONE_IO: u32 = 2147483648; +pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; +pub const CLONE_INTO_CGROUP: u64 = 8589934592; +pub const CLONE_NEWTIME: u32 = 128; +pub const CLONE_ARGS_SIZE_VER0: u32 = 64; +pub const CLONE_ARGS_SIZE_VER1: u32 = 80; +pub const CLONE_ARGS_SIZE_VER2: u32 = 88; +pub const SCHED_NORMAL: u32 = 0; +pub const SCHED_FIFO: u32 = 1; +pub const SCHED_RR: u32 = 2; +pub const SCHED_BATCH: u32 = 3; +pub const SCHED_IDLE: u32 = 5; +pub const SCHED_DEADLINE: u32 = 6; +pub const SCHED_RESET_ON_FORK: u32 = 1073741824; +pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; +pub const SCHED_FLAG_RECLAIM: u32 = 2; +pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; +pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; +pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; +pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; +pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; +pub const SCHED_FLAG_KEEP_ALL: u32 = 24; +pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; +pub const SCHED_FLAG_ALL: u32 = 127; +pub const _NSIG: u32 = 128; +pub const SIGHUP: u32 = 1; +pub const SIGINT: u32 = 2; +pub const SIGQUIT: u32 = 3; +pub const SIGILL: u32 = 4; +pub const SIGTRAP: u32 = 5; +pub const SIGIOT: u32 = 6; +pub const SIGABRT: u32 = 6; +pub const SIGEMT: u32 = 7; +pub const SIGFPE: u32 = 8; +pub const SIGKILL: u32 = 9; +pub const SIGBUS: u32 = 10; +pub const SIGSEGV: u32 = 11; +pub const SIGSYS: u32 = 12; +pub const SIGPIPE: u32 = 13; +pub const SIGALRM: u32 = 14; +pub const SIGTERM: u32 = 15; +pub const SIGUSR1: u32 = 16; +pub const SIGUSR2: u32 = 17; +pub const SIGCHLD: u32 = 18; +pub const SIGCLD: u32 = 18; +pub const SIGPWR: u32 = 19; +pub const SIGWINCH: u32 = 20; +pub const SIGURG: u32 = 21; +pub const SIGIO: u32 = 22; +pub const SIGPOLL: u32 = 22; +pub const SIGSTOP: u32 = 23; +pub const SIGTSTP: u32 = 24; +pub const SIGCONT: u32 = 25; +pub const SIGTTIN: u32 = 26; +pub const SIGTTOU: u32 = 27; +pub const SIGVTALRM: u32 = 28; +pub const SIGPROF: u32 = 29; +pub const SIGXCPU: u32 = 30; +pub const SIGXFSZ: u32 = 31; +pub const SIGRTMIN: u32 = 32; +pub const SIGRTMAX: u32 = 128; +pub const SA_ONSTACK: u32 = 134217728; +pub const SA_RESETHAND: u32 = 2147483648; +pub const SA_RESTART: u32 = 268435456; +pub const SA_SIGINFO: u32 = 8; +pub const SA_NODEFER: u32 = 1073741824; +pub const SA_NOCLDWAIT: u32 = 65536; +pub const SA_NOCLDSTOP: u32 = 1; +pub const SA_NOMASK: u32 = 1073741824; +pub const SA_ONESHOT: u32 = 2147483648; +pub const MINSIGSTKSZ: u32 = 2048; +pub const SIGSTKSZ: u32 = 8192; +pub const SIG_BLOCK: u32 = 1; +pub const SIG_UNBLOCK: u32 = 2; +pub const SIG_SETMASK: u32 = 3; +pub const SA_UNSUPPORTED: u32 = 1024; +pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SI_MAX_SIZE: u32 = 128; +pub const SI_USER: u32 = 0; +pub const SI_KERNEL: u32 = 128; +pub const SI_QUEUE: i32 = -1; +pub const SI_TIMER: i32 = -2; +pub const SI_MESGQ: i32 = -3; +pub const SI_ASYNCIO: i32 = -4; +pub const SI_SIGIO: i32 = -5; +pub const SI_TKILL: i32 = -6; +pub const SI_DETHREAD: i32 = -7; +pub const SI_ASYNCNL: i32 = -60; +pub const ILL_ILLOPC: u32 = 1; +pub const ILL_ILLOPN: u32 = 2; +pub const ILL_ILLADR: u32 = 3; +pub const ILL_ILLTRP: u32 = 4; +pub const ILL_PRVOPC: u32 = 5; +pub const ILL_PRVREG: u32 = 6; +pub const ILL_COPROC: u32 = 7; +pub const ILL_BADSTK: u32 = 8; +pub const ILL_BADIADDR: u32 = 9; +pub const __ILL_BREAK: u32 = 10; +pub const __ILL_BNDMOD: u32 = 11; +pub const NSIGILL: u32 = 11; +pub const FPE_INTDIV: u32 = 1; +pub const FPE_INTOVF: u32 = 2; +pub const FPE_FLTDIV: u32 = 3; +pub const FPE_FLTOVF: u32 = 4; +pub const FPE_FLTUND: u32 = 5; +pub const FPE_FLTRES: u32 = 6; +pub const FPE_FLTINV: u32 = 7; +pub const FPE_FLTSUB: u32 = 8; +pub const __FPE_DECOVF: u32 = 9; +pub const __FPE_DECDIV: u32 = 10; +pub const __FPE_DECERR: u32 = 11; +pub const __FPE_INVASC: u32 = 12; +pub const __FPE_INVDEC: u32 = 13; +pub const FPE_FLTUNK: u32 = 14; +pub const FPE_CONDTRAP: u32 = 15; +pub const NSIGFPE: u32 = 15; +pub const SEGV_MAPERR: u32 = 1; +pub const SEGV_ACCERR: u32 = 2; +pub const SEGV_BNDERR: u32 = 3; +pub const SEGV_PKUERR: u32 = 4; +pub const SEGV_ACCADI: u32 = 5; +pub const SEGV_ADIDERR: u32 = 6; +pub const SEGV_ADIPERR: u32 = 7; +pub const SEGV_MTEAERR: u32 = 8; +pub const SEGV_MTESERR: u32 = 9; +pub const NSIGSEGV: u32 = 9; +pub const BUS_ADRALN: u32 = 1; +pub const BUS_ADRERR: u32 = 2; +pub const BUS_OBJERR: u32 = 3; +pub const BUS_MCEERR_AR: u32 = 4; +pub const BUS_MCEERR_AO: u32 = 5; +pub const NSIGBUS: u32 = 5; +pub const TRAP_BRKPT: u32 = 1; +pub const TRAP_TRACE: u32 = 2; +pub const TRAP_BRANCH: u32 = 3; +pub const TRAP_HWBKPT: u32 = 4; +pub const TRAP_UNK: u32 = 5; +pub const TRAP_PERF: u32 = 6; +pub const NSIGTRAP: u32 = 6; +pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; +pub const CLD_EXITED: u32 = 1; +pub const CLD_KILLED: u32 = 2; +pub const CLD_DUMPED: u32 = 3; +pub const CLD_TRAPPED: u32 = 4; +pub const CLD_STOPPED: u32 = 5; +pub const CLD_CONTINUED: u32 = 6; +pub const NSIGCHLD: u32 = 6; +pub const POLL_IN: u32 = 1; +pub const POLL_OUT: u32 = 2; +pub const POLL_MSG: u32 = 3; +pub const POLL_ERR: u32 = 4; +pub const POLL_PRI: u32 = 5; +pub const POLL_HUP: u32 = 6; +pub const NSIGPOLL: u32 = 6; +pub const SYS_SECCOMP: u32 = 1; +pub const SYS_USER_DISPATCH: u32 = 2; +pub const NSIGSYS: u32 = 2; +pub const EMT_TAGOVF: u32 = 1; +pub const NSIGEMT: u32 = 1; +pub const SIGEV_SIGNAL: u32 = 0; +pub const SIGEV_NONE: u32 = 1; +pub const SIGEV_THREAD: u32 = 2; +pub const SIGEV_THREAD_ID: u32 = 4; +pub const SIGEV_MAX_SIZE: u32 = 64; +pub const SS_ONSTACK: u32 = 1; +pub const SS_DISABLE: u32 = 2; +pub const SS_AUTODISARM: u32 = 2147483648; +pub const SS_FLAG_BITS: u32 = 2147483648; +pub const S_IFMT: u32 = 61440; +pub const S_IFSOCK: u32 = 49152; +pub const S_IFLNK: u32 = 40960; +pub const S_IFREG: u32 = 32768; +pub const S_IFBLK: u32 = 24576; +pub const S_IFDIR: u32 = 16384; +pub const S_IFCHR: u32 = 8192; +pub const S_IFIFO: u32 = 4096; +pub const S_ISUID: u32 = 2048; +pub const S_ISGID: u32 = 1024; +pub const S_ISVTX: u32 = 512; +pub const S_IRWXU: u32 = 448; +pub const S_IRUSR: u32 = 256; +pub const S_IWUSR: u32 = 128; +pub const S_IXUSR: u32 = 64; +pub const S_IRWXG: u32 = 56; +pub const S_IRGRP: u32 = 32; +pub const S_IWGRP: u32 = 16; +pub const S_IXGRP: u32 = 8; +pub const S_IRWXO: u32 = 7; +pub const S_IROTH: u32 = 4; +pub const S_IWOTH: u32 = 2; +pub const S_IXOTH: u32 = 1; +pub const STATX_TYPE: u32 = 1; +pub const STATX_MODE: u32 = 2; +pub const STATX_NLINK: u32 = 4; +pub const STATX_UID: u32 = 8; +pub const STATX_GID: u32 = 16; +pub const STATX_ATIME: u32 = 32; +pub const STATX_MTIME: u32 = 64; +pub const STATX_CTIME: u32 = 128; +pub const STATX_INO: u32 = 256; +pub const STATX_SIZE: u32 = 512; +pub const STATX_BLOCKS: u32 = 1024; +pub const STATX_BASIC_STATS: u32 = 2047; +pub const STATX_BTIME: u32 = 2048; +pub const STATX_MNT_ID: u32 = 4096; +pub const STATX_DIOALIGN: u32 = 8192; +pub const STATX__RESERVED: u32 = 2147483648; +pub const STATX_ALL: u32 = 4095; +pub const STATX_ATTR_COMPRESSED: u32 = 4; +pub const STATX_ATTR_IMMUTABLE: u32 = 16; +pub const STATX_ATTR_APPEND: u32 = 32; +pub const STATX_ATTR_NODUMP: u32 = 64; +pub const STATX_ATTR_ENCRYPTED: u32 = 2048; +pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; +pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; +pub const STATX_ATTR_VERITY: u32 = 1048576; +pub const STATX_ATTR_DAX: u32 = 2097152; +pub const EPERM: u32 = 1; +pub const ENOENT: u32 = 2; +pub const ESRCH: u32 = 3; +pub const EINTR: u32 = 4; +pub const EIO: u32 = 5; +pub const ENXIO: u32 = 6; +pub const E2BIG: u32 = 7; +pub const ENOEXEC: u32 = 8; +pub const EBADF: u32 = 9; +pub const ECHILD: u32 = 10; +pub const EAGAIN: u32 = 11; +pub const ENOMEM: u32 = 12; +pub const EACCES: u32 = 13; +pub const EFAULT: u32 = 14; +pub const ENOTBLK: u32 = 15; +pub const EBUSY: u32 = 16; +pub const EEXIST: u32 = 17; +pub const EXDEV: u32 = 18; +pub const ENODEV: u32 = 19; +pub const ENOTDIR: u32 = 20; +pub const EISDIR: u32 = 21; +pub const EINVAL: u32 = 22; +pub const ENFILE: u32 = 23; +pub const EMFILE: u32 = 24; +pub const ENOTTY: u32 = 25; +pub const ETXTBSY: u32 = 26; +pub const EFBIG: u32 = 27; +pub const ENOSPC: u32 = 28; +pub const ESPIPE: u32 = 29; +pub const EROFS: u32 = 30; +pub const EMLINK: u32 = 31; +pub const EPIPE: u32 = 32; +pub const EDOM: u32 = 33; +pub const ERANGE: u32 = 34; +pub const ENOMSG: u32 = 35; +pub const EIDRM: u32 = 36; +pub const ECHRNG: u32 = 37; +pub const EL2NSYNC: u32 = 38; +pub const EL3HLT: u32 = 39; +pub const EL3RST: u32 = 40; +pub const ELNRNG: u32 = 41; +pub const EUNATCH: u32 = 42; +pub const ENOCSI: u32 = 43; +pub const EL2HLT: u32 = 44; +pub const EDEADLK: u32 = 45; +pub const ENOLCK: u32 = 46; +pub const EBADE: u32 = 50; +pub const EBADR: u32 = 51; +pub const EXFULL: u32 = 52; +pub const ENOANO: u32 = 53; +pub const EBADRQC: u32 = 54; +pub const EBADSLT: u32 = 55; +pub const EDEADLOCK: u32 = 56; +pub const EBFONT: u32 = 59; +pub const ENOSTR: u32 = 60; +pub const ENODATA: u32 = 61; +pub const ETIME: u32 = 62; +pub const ENOSR: u32 = 63; +pub const ENONET: u32 = 64; +pub const ENOPKG: u32 = 65; +pub const EREMOTE: u32 = 66; +pub const ENOLINK: u32 = 67; +pub const EADV: u32 = 68; +pub const ESRMNT: u32 = 69; +pub const ECOMM: u32 = 70; +pub const EPROTO: u32 = 71; +pub const EDOTDOT: u32 = 73; +pub const EMULTIHOP: u32 = 74; +pub const EBADMSG: u32 = 77; +pub const ENAMETOOLONG: u32 = 78; +pub const EOVERFLOW: u32 = 79; +pub const ENOTUNIQ: u32 = 80; +pub const EBADFD: u32 = 81; +pub const EREMCHG: u32 = 82; +pub const ELIBACC: u32 = 83; +pub const ELIBBAD: u32 = 84; +pub const ELIBSCN: u32 = 85; +pub const ELIBMAX: u32 = 86; +pub const ELIBEXEC: u32 = 87; +pub const EILSEQ: u32 = 88; +pub const ENOSYS: u32 = 89; +pub const ELOOP: u32 = 90; +pub const ERESTART: u32 = 91; +pub const ESTRPIPE: u32 = 92; +pub const ENOTEMPTY: u32 = 93; +pub const EUSERS: u32 = 94; +pub const ENOTSOCK: u32 = 95; +pub const EDESTADDRREQ: u32 = 96; +pub const EMSGSIZE: u32 = 97; +pub const EPROTOTYPE: u32 = 98; +pub const ENOPROTOOPT: u32 = 99; +pub const EPROTONOSUPPORT: u32 = 120; +pub const ESOCKTNOSUPPORT: u32 = 121; +pub const EOPNOTSUPP: u32 = 122; +pub const EPFNOSUPPORT: u32 = 123; +pub const EAFNOSUPPORT: u32 = 124; +pub const EADDRINUSE: u32 = 125; +pub const EADDRNOTAVAIL: u32 = 126; +pub const ENETDOWN: u32 = 127; +pub const ENETUNREACH: u32 = 128; +pub const ENETRESET: u32 = 129; +pub const ECONNABORTED: u32 = 130; +pub const ECONNRESET: u32 = 131; +pub const ENOBUFS: u32 = 132; +pub const EISCONN: u32 = 133; +pub const ENOTCONN: u32 = 134; +pub const EUCLEAN: u32 = 135; +pub const ENOTNAM: u32 = 137; +pub const ENAVAIL: u32 = 138; +pub const EISNAM: u32 = 139; +pub const EREMOTEIO: u32 = 140; +pub const EINIT: u32 = 141; +pub const EREMDEV: u32 = 142; +pub const ESHUTDOWN: u32 = 143; +pub const ETOOMANYREFS: u32 = 144; +pub const ETIMEDOUT: u32 = 145; +pub const ECONNREFUSED: u32 = 146; +pub const EHOSTDOWN: u32 = 147; +pub const EHOSTUNREACH: u32 = 148; +pub const EWOULDBLOCK: u32 = 11; +pub const EALREADY: u32 = 149; +pub const EINPROGRESS: u32 = 150; +pub const ESTALE: u32 = 151; +pub const ECANCELED: u32 = 158; +pub const ENOMEDIUM: u32 = 159; +pub const EMEDIUMTYPE: u32 = 160; +pub const ENOKEY: u32 = 161; +pub const EKEYEXPIRED: u32 = 162; +pub const EKEYREVOKED: u32 = 163; +pub const EKEYREJECTED: u32 = 164; +pub const EOWNERDEAD: u32 = 165; +pub const ENOTRECOVERABLE: u32 = 166; +pub const ERFKILL: u32 = 167; +pub const EHWPOISON: u32 = 168; +pub const EDQUOT: u32 = 1133; +pub const IGNBRK: u32 = 1; +pub const BRKINT: u32 = 2; +pub const IGNPAR: u32 = 4; +pub const PARMRK: u32 = 8; +pub const INPCK: u32 = 16; +pub const ISTRIP: u32 = 32; +pub const INLCR: u32 = 64; +pub const IGNCR: u32 = 128; +pub const ICRNL: u32 = 256; +pub const IXANY: u32 = 2048; +pub const OPOST: u32 = 1; +pub const OCRNL: u32 = 8; +pub const ONOCR: u32 = 16; +pub const ONLRET: u32 = 32; +pub const OFILL: u32 = 64; +pub const OFDEL: u32 = 128; +pub const B0: u32 = 0; +pub const B50: u32 = 1; +pub const B75: u32 = 2; +pub const B110: u32 = 3; +pub const B134: u32 = 4; +pub const B150: u32 = 5; +pub const B200: u32 = 6; +pub const B300: u32 = 7; +pub const B600: u32 = 8; +pub const B1200: u32 = 9; +pub const B1800: u32 = 10; +pub const B2400: u32 = 11; +pub const B4800: u32 = 12; +pub const B9600: u32 = 13; +pub const B19200: u32 = 14; +pub const B38400: u32 = 15; +pub const EXTA: u32 = 14; +pub const EXTB: u32 = 15; +pub const ADDRB: u32 = 536870912; +pub const CMSPAR: u32 = 1073741824; +pub const CRTSCTS: u32 = 2147483648; +pub const IBSHIFT: u32 = 16; +pub const TCOOFF: u32 = 0; +pub const TCOON: u32 = 1; +pub const TCIOFF: u32 = 2; +pub const TCION: u32 = 3; +pub const TCIFLUSH: u32 = 0; +pub const TCOFLUSH: u32 = 1; +pub const TCIOFLUSH: u32 = 2; +pub const NCCS: u32 = 23; +pub const VINTR: u32 = 0; +pub const VQUIT: u32 = 1; +pub const VERASE: u32 = 2; +pub const VKILL: u32 = 3; +pub const VMIN: u32 = 4; +pub const VTIME: u32 = 5; +pub const VEOL2: u32 = 6; +pub const VSWTC: u32 = 7; +pub const VSWTCH: u32 = 7; +pub const VSTART: u32 = 8; +pub const VSTOP: u32 = 9; +pub const VSUSP: u32 = 10; +pub const VREPRINT: u32 = 12; +pub const VDISCARD: u32 = 13; +pub const VWERASE: u32 = 14; +pub const VLNEXT: u32 = 15; +pub const VEOF: u32 = 16; +pub const VEOL: u32 = 17; +pub const IUCLC: u32 = 512; +pub const IXON: u32 = 1024; +pub const IXOFF: u32 = 4096; +pub const IMAXBEL: u32 = 8192; +pub const IUTF8: u32 = 16384; +pub const OLCUC: u32 = 2; +pub const ONLCR: u32 = 4; +pub const NLDLY: u32 = 256; +pub const NL0: u32 = 0; +pub const NL1: u32 = 256; +pub const CRDLY: u32 = 1536; +pub const CR0: u32 = 0; +pub const CR1: u32 = 512; +pub const CR2: u32 = 1024; +pub const CR3: u32 = 1536; +pub const TABDLY: u32 = 6144; +pub const TAB0: u32 = 0; +pub const TAB1: u32 = 2048; +pub const TAB2: u32 = 4096; +pub const TAB3: u32 = 6144; +pub const XTABS: u32 = 6144; +pub const BSDLY: u32 = 8192; +pub const BS0: u32 = 0; +pub const BS1: u32 = 8192; +pub const VTDLY: u32 = 16384; +pub const VT0: u32 = 0; +pub const VT1: u32 = 16384; +pub const FFDLY: u32 = 32768; +pub const FF0: u32 = 0; +pub const FF1: u32 = 32768; +pub const CBAUD: u32 = 4111; +pub const CSIZE: u32 = 48; +pub const CS5: u32 = 0; +pub const CS6: u32 = 16; +pub const CS7: u32 = 32; +pub const CS8: u32 = 48; +pub const CSTOPB: u32 = 64; +pub const CREAD: u32 = 128; +pub const PARENB: u32 = 256; +pub const PARODD: u32 = 512; +pub const HUPCL: u32 = 1024; +pub const CLOCAL: u32 = 2048; +pub const CBAUDEX: u32 = 4096; +pub const BOTHER: u32 = 4096; +pub const B57600: u32 = 4097; +pub const B115200: u32 = 4098; +pub const B230400: u32 = 4099; +pub const B460800: u32 = 4100; +pub const B500000: u32 = 4101; +pub const B576000: u32 = 4102; +pub const B921600: u32 = 4103; +pub const B1000000: u32 = 4104; +pub const B1152000: u32 = 4105; +pub const B1500000: u32 = 4106; +pub const B2000000: u32 = 4107; +pub const B2500000: u32 = 4108; +pub const B3000000: u32 = 4109; +pub const B3500000: u32 = 4110; +pub const B4000000: u32 = 4111; +pub const CIBAUD: u32 = 269418496; +pub const ISIG: u32 = 1; +pub const ICANON: u32 = 2; +pub const XCASE: u32 = 4; +pub const ECHO: u32 = 8; +pub const ECHOE: u32 = 16; +pub const ECHOK: u32 = 32; +pub const ECHONL: u32 = 64; +pub const NOFLSH: u32 = 128; +pub const IEXTEN: u32 = 256; +pub const ECHOCTL: u32 = 512; +pub const ECHOPRT: u32 = 1024; +pub const ECHOKE: u32 = 2048; +pub const FLUSHO: u32 = 8192; +pub const PENDIN: u32 = 16384; +pub const TOSTOP: u32 = 32768; +pub const ITOSTOP: u32 = 32768; +pub const EXTPROC: u32 = 65536; +pub const TIOCSER_TEMT: u32 = 1; +pub const TIOCPKT_DATA: u32 = 0; +pub const TIOCPKT_FLUSHREAD: u32 = 1; +pub const TIOCPKT_FLUSHWRITE: u32 = 2; +pub const TIOCPKT_STOP: u32 = 4; +pub const TIOCPKT_START: u32 = 8; +pub const TIOCPKT_NOSTOP: u32 = 16; +pub const TIOCPKT_DOSTOP: u32 = 32; +pub const TIOCPKT_IOCTL: u32 = 64; +pub const TIOCGLTC: u32 = 29812; +pub const TIOCSLTC: u32 = 29813; +pub const TIOCGETP: u32 = 29704; +pub const TIOCSETP: u32 = 29705; +pub const TIOCSETN: u32 = 29706; +pub const NCC: u32 = 8; +pub const TIOCM_LE: u32 = 1; +pub const TIOCM_DTR: u32 = 2; +pub const TIOCM_RTS: u32 = 4; +pub const TIOCM_ST: u32 = 16; +pub const TIOCM_SR: u32 = 32; +pub const TIOCM_CTS: u32 = 64; +pub const TIOCM_CAR: u32 = 256; +pub const TIOCM_CD: u32 = 256; +pub const TIOCM_RNG: u32 = 512; +pub const TIOCM_RI: u32 = 512; +pub const TIOCM_DSR: u32 = 1024; +pub const TIOCM_OUT1: u32 = 8192; +pub const TIOCM_OUT2: u32 = 16384; +pub const TIOCM_LOOP: u32 = 32768; +pub const UIO_FASTIOV: u32 = 8; +pub const UIO_MAXIOV: u32 = 1024; +pub const __NR_Linux: u32 = 4000; +pub const __NR_syscall: u32 = 4000; +pub const __NR_exit: u32 = 4001; +pub const __NR_fork: u32 = 4002; +pub const __NR_read: u32 = 4003; +pub const __NR_write: u32 = 4004; +pub const __NR_open: u32 = 4005; +pub const __NR_close: u32 = 4006; +pub const __NR_waitpid: u32 = 4007; +pub const __NR_creat: u32 = 4008; +pub const __NR_link: u32 = 4009; +pub const __NR_unlink: u32 = 4010; +pub const __NR_execve: u32 = 4011; +pub const __NR_chdir: u32 = 4012; +pub const __NR_time: u32 = 4013; +pub const __NR_mknod: u32 = 4014; +pub const __NR_chmod: u32 = 4015; +pub const __NR_lchown: u32 = 4016; +pub const __NR_break: u32 = 4017; +pub const __NR_unused18: u32 = 4018; +pub const __NR_lseek: u32 = 4019; +pub const __NR_getpid: u32 = 4020; +pub const __NR_mount: u32 = 4021; +pub const __NR_umount: u32 = 4022; +pub const __NR_setuid: u32 = 4023; +pub const __NR_getuid: u32 = 4024; +pub const __NR_stime: u32 = 4025; +pub const __NR_ptrace: u32 = 4026; +pub const __NR_alarm: u32 = 4027; +pub const __NR_unused28: u32 = 4028; +pub const __NR_pause: u32 = 4029; +pub const __NR_utime: u32 = 4030; +pub const __NR_stty: u32 = 4031; +pub const __NR_gtty: u32 = 4032; +pub const __NR_access: u32 = 4033; +pub const __NR_nice: u32 = 4034; +pub const __NR_ftime: u32 = 4035; +pub const __NR_sync: u32 = 4036; +pub const __NR_kill: u32 = 4037; +pub const __NR_rename: u32 = 4038; +pub const __NR_mkdir: u32 = 4039; +pub const __NR_rmdir: u32 = 4040; +pub const __NR_dup: u32 = 4041; +pub const __NR_pipe: u32 = 4042; +pub const __NR_times: u32 = 4043; +pub const __NR_prof: u32 = 4044; +pub const __NR_brk: u32 = 4045; +pub const __NR_setgid: u32 = 4046; +pub const __NR_getgid: u32 = 4047; +pub const __NR_signal: u32 = 4048; +pub const __NR_geteuid: u32 = 4049; +pub const __NR_getegid: u32 = 4050; +pub const __NR_acct: u32 = 4051; +pub const __NR_umount2: u32 = 4052; +pub const __NR_lock: u32 = 4053; +pub const __NR_ioctl: u32 = 4054; +pub const __NR_fcntl: u32 = 4055; +pub const __NR_mpx: u32 = 4056; +pub const __NR_setpgid: u32 = 4057; +pub const __NR_ulimit: u32 = 4058; +pub const __NR_unused59: u32 = 4059; +pub const __NR_umask: u32 = 4060; +pub const __NR_chroot: u32 = 4061; +pub const __NR_ustat: u32 = 4062; +pub const __NR_dup2: u32 = 4063; +pub const __NR_getppid: u32 = 4064; +pub const __NR_getpgrp: u32 = 4065; +pub const __NR_setsid: u32 = 4066; +pub const __NR_sigaction: u32 = 4067; +pub const __NR_sgetmask: u32 = 4068; +pub const __NR_ssetmask: u32 = 4069; +pub const __NR_setreuid: u32 = 4070; +pub const __NR_setregid: u32 = 4071; +pub const __NR_sigsuspend: u32 = 4072; +pub const __NR_sigpending: u32 = 4073; +pub const __NR_sethostname: u32 = 4074; +pub const __NR_setrlimit: u32 = 4075; +pub const __NR_getrlimit: u32 = 4076; +pub const __NR_getrusage: u32 = 4077; +pub const __NR_gettimeofday: u32 = 4078; +pub const __NR_settimeofday: u32 = 4079; +pub const __NR_getgroups: u32 = 4080; +pub const __NR_setgroups: u32 = 4081; +pub const __NR_reserved82: u32 = 4082; +pub const __NR_symlink: u32 = 4083; +pub const __NR_unused84: u32 = 4084; +pub const __NR_readlink: u32 = 4085; +pub const __NR_uselib: u32 = 4086; +pub const __NR_swapon: u32 = 4087; +pub const __NR_reboot: u32 = 4088; +pub const __NR_readdir: u32 = 4089; +pub const __NR_mmap: u32 = 4090; +pub const __NR_munmap: u32 = 4091; +pub const __NR_truncate: u32 = 4092; +pub const __NR_ftruncate: u32 = 4093; +pub const __NR_fchmod: u32 = 4094; +pub const __NR_fchown: u32 = 4095; +pub const __NR_getpriority: u32 = 4096; +pub const __NR_setpriority: u32 = 4097; +pub const __NR_profil: u32 = 4098; +pub const __NR_statfs: u32 = 4099; +pub const __NR_fstatfs: u32 = 4100; +pub const __NR_ioperm: u32 = 4101; +pub const __NR_socketcall: u32 = 4102; +pub const __NR_syslog: u32 = 4103; +pub const __NR_setitimer: u32 = 4104; +pub const __NR_getitimer: u32 = 4105; +pub const __NR_stat: u32 = 4106; +pub const __NR_lstat: u32 = 4107; +pub const __NR_fstat: u32 = 4108; +pub const __NR_unused109: u32 = 4109; +pub const __NR_iopl: u32 = 4110; +pub const __NR_vhangup: u32 = 4111; +pub const __NR_idle: u32 = 4112; +pub const __NR_vm86: u32 = 4113; +pub const __NR_wait4: u32 = 4114; +pub const __NR_swapoff: u32 = 4115; +pub const __NR_sysinfo: u32 = 4116; +pub const __NR_ipc: u32 = 4117; +pub const __NR_fsync: u32 = 4118; +pub const __NR_sigreturn: u32 = 4119; +pub const __NR_clone: u32 = 4120; +pub const __NR_setdomainname: u32 = 4121; +pub const __NR_uname: u32 = 4122; +pub const __NR_modify_ldt: u32 = 4123; +pub const __NR_adjtimex: u32 = 4124; +pub const __NR_mprotect: u32 = 4125; +pub const __NR_sigprocmask: u32 = 4126; +pub const __NR_create_module: u32 = 4127; +pub const __NR_init_module: u32 = 4128; +pub const __NR_delete_module: u32 = 4129; +pub const __NR_get_kernel_syms: u32 = 4130; +pub const __NR_quotactl: u32 = 4131; +pub const __NR_getpgid: u32 = 4132; +pub const __NR_fchdir: u32 = 4133; +pub const __NR_bdflush: u32 = 4134; +pub const __NR_sysfs: u32 = 4135; +pub const __NR_personality: u32 = 4136; +pub const __NR_afs_syscall: u32 = 4137; +pub const __NR_setfsuid: u32 = 4138; +pub const __NR_setfsgid: u32 = 4139; +pub const __NR__llseek: u32 = 4140; +pub const __NR_getdents: u32 = 4141; +pub const __NR__newselect: u32 = 4142; +pub const __NR_flock: u32 = 4143; +pub const __NR_msync: u32 = 4144; +pub const __NR_readv: u32 = 4145; +pub const __NR_writev: u32 = 4146; +pub const __NR_cacheflush: u32 = 4147; +pub const __NR_cachectl: u32 = 4148; +pub const __NR_sysmips: u32 = 4149; +pub const __NR_unused150: u32 = 4150; +pub const __NR_getsid: u32 = 4151; +pub const __NR_fdatasync: u32 = 4152; +pub const __NR__sysctl: u32 = 4153; +pub const __NR_mlock: u32 = 4154; +pub const __NR_munlock: u32 = 4155; +pub const __NR_mlockall: u32 = 4156; +pub const __NR_munlockall: u32 = 4157; +pub const __NR_sched_setparam: u32 = 4158; +pub const __NR_sched_getparam: u32 = 4159; +pub const __NR_sched_setscheduler: u32 = 4160; +pub const __NR_sched_getscheduler: u32 = 4161; +pub const __NR_sched_yield: u32 = 4162; +pub const __NR_sched_get_priority_max: u32 = 4163; +pub const __NR_sched_get_priority_min: u32 = 4164; +pub const __NR_sched_rr_get_interval: u32 = 4165; +pub const __NR_nanosleep: u32 = 4166; +pub const __NR_mremap: u32 = 4167; +pub const __NR_accept: u32 = 4168; +pub const __NR_bind: u32 = 4169; +pub const __NR_connect: u32 = 4170; +pub const __NR_getpeername: u32 = 4171; +pub const __NR_getsockname: u32 = 4172; +pub const __NR_getsockopt: u32 = 4173; +pub const __NR_listen: u32 = 4174; +pub const __NR_recv: u32 = 4175; +pub const __NR_recvfrom: u32 = 4176; +pub const __NR_recvmsg: u32 = 4177; +pub const __NR_send: u32 = 4178; +pub const __NR_sendmsg: u32 = 4179; +pub const __NR_sendto: u32 = 4180; +pub const __NR_setsockopt: u32 = 4181; +pub const __NR_shutdown: u32 = 4182; +pub const __NR_socket: u32 = 4183; +pub const __NR_socketpair: u32 = 4184; +pub const __NR_setresuid: u32 = 4185; +pub const __NR_getresuid: u32 = 4186; +pub const __NR_query_module: u32 = 4187; +pub const __NR_poll: u32 = 4188; +pub const __NR_nfsservctl: u32 = 4189; +pub const __NR_setresgid: u32 = 4190; +pub const __NR_getresgid: u32 = 4191; +pub const __NR_prctl: u32 = 4192; +pub const __NR_rt_sigreturn: u32 = 4193; +pub const __NR_rt_sigaction: u32 = 4194; +pub const __NR_rt_sigprocmask: u32 = 4195; +pub const __NR_rt_sigpending: u32 = 4196; +pub const __NR_rt_sigtimedwait: u32 = 4197; +pub const __NR_rt_sigqueueinfo: u32 = 4198; +pub const __NR_rt_sigsuspend: u32 = 4199; +pub const __NR_pread64: u32 = 4200; +pub const __NR_pwrite64: u32 = 4201; +pub const __NR_chown: u32 = 4202; +pub const __NR_getcwd: u32 = 4203; +pub const __NR_capget: u32 = 4204; +pub const __NR_capset: u32 = 4205; +pub const __NR_sigaltstack: u32 = 4206; +pub const __NR_sendfile: u32 = 4207; +pub const __NR_getpmsg: u32 = 4208; +pub const __NR_putpmsg: u32 = 4209; +pub const __NR_mmap2: u32 = 4210; +pub const __NR_truncate64: u32 = 4211; +pub const __NR_ftruncate64: u32 = 4212; +pub const __NR_stat64: u32 = 4213; +pub const __NR_lstat64: u32 = 4214; +pub const __NR_fstat64: u32 = 4215; +pub const __NR_pivot_root: u32 = 4216; +pub const __NR_mincore: u32 = 4217; +pub const __NR_madvise: u32 = 4218; +pub const __NR_getdents64: u32 = 4219; +pub const __NR_fcntl64: u32 = 4220; +pub const __NR_reserved221: u32 = 4221; +pub const __NR_gettid: u32 = 4222; +pub const __NR_readahead: u32 = 4223; +pub const __NR_setxattr: u32 = 4224; +pub const __NR_lsetxattr: u32 = 4225; +pub const __NR_fsetxattr: u32 = 4226; +pub const __NR_getxattr: u32 = 4227; +pub const __NR_lgetxattr: u32 = 4228; +pub const __NR_fgetxattr: u32 = 4229; +pub const __NR_listxattr: u32 = 4230; +pub const __NR_llistxattr: u32 = 4231; +pub const __NR_flistxattr: u32 = 4232; +pub const __NR_removexattr: u32 = 4233; +pub const __NR_lremovexattr: u32 = 4234; +pub const __NR_fremovexattr: u32 = 4235; +pub const __NR_tkill: u32 = 4236; +pub const __NR_sendfile64: u32 = 4237; +pub const __NR_futex: u32 = 4238; +pub const __NR_sched_setaffinity: u32 = 4239; +pub const __NR_sched_getaffinity: u32 = 4240; +pub const __NR_io_setup: u32 = 4241; +pub const __NR_io_destroy: u32 = 4242; +pub const __NR_io_getevents: u32 = 4243; +pub const __NR_io_submit: u32 = 4244; +pub const __NR_io_cancel: u32 = 4245; +pub const __NR_exit_group: u32 = 4246; +pub const __NR_lookup_dcookie: u32 = 4247; +pub const __NR_epoll_create: u32 = 4248; +pub const __NR_epoll_ctl: u32 = 4249; +pub const __NR_epoll_wait: u32 = 4250; +pub const __NR_remap_file_pages: u32 = 4251; +pub const __NR_set_tid_address: u32 = 4252; +pub const __NR_restart_syscall: u32 = 4253; +pub const __NR_fadvise64: u32 = 4254; +pub const __NR_statfs64: u32 = 4255; +pub const __NR_fstatfs64: u32 = 4256; +pub const __NR_timer_create: u32 = 4257; +pub const __NR_timer_settime: u32 = 4258; +pub const __NR_timer_gettime: u32 = 4259; +pub const __NR_timer_getoverrun: u32 = 4260; +pub const __NR_timer_delete: u32 = 4261; +pub const __NR_clock_settime: u32 = 4262; +pub const __NR_clock_gettime: u32 = 4263; +pub const __NR_clock_getres: u32 = 4264; +pub const __NR_clock_nanosleep: u32 = 4265; +pub const __NR_tgkill: u32 = 4266; +pub const __NR_utimes: u32 = 4267; +pub const __NR_mbind: u32 = 4268; +pub const __NR_get_mempolicy: u32 = 4269; +pub const __NR_set_mempolicy: u32 = 4270; +pub const __NR_mq_open: u32 = 4271; +pub const __NR_mq_unlink: u32 = 4272; +pub const __NR_mq_timedsend: u32 = 4273; +pub const __NR_mq_timedreceive: u32 = 4274; +pub const __NR_mq_notify: u32 = 4275; +pub const __NR_mq_getsetattr: u32 = 4276; +pub const __NR_vserver: u32 = 4277; +pub const __NR_waitid: u32 = 4278; +pub const __NR_add_key: u32 = 4280; +pub const __NR_request_key: u32 = 4281; +pub const __NR_keyctl: u32 = 4282; +pub const __NR_set_thread_area: u32 = 4283; +pub const __NR_inotify_init: u32 = 4284; +pub const __NR_inotify_add_watch: u32 = 4285; +pub const __NR_inotify_rm_watch: u32 = 4286; +pub const __NR_migrate_pages: u32 = 4287; +pub const __NR_openat: u32 = 4288; +pub const __NR_mkdirat: u32 = 4289; +pub const __NR_mknodat: u32 = 4290; +pub const __NR_fchownat: u32 = 4291; +pub const __NR_futimesat: u32 = 4292; +pub const __NR_fstatat64: u32 = 4293; +pub const __NR_unlinkat: u32 = 4294; +pub const __NR_renameat: u32 = 4295; +pub const __NR_linkat: u32 = 4296; +pub const __NR_symlinkat: u32 = 4297; +pub const __NR_readlinkat: u32 = 4298; +pub const __NR_fchmodat: u32 = 4299; +pub const __NR_faccessat: u32 = 4300; +pub const __NR_pselect6: u32 = 4301; +pub const __NR_ppoll: u32 = 4302; +pub const __NR_unshare: u32 = 4303; +pub const __NR_splice: u32 = 4304; +pub const __NR_sync_file_range: u32 = 4305; +pub const __NR_tee: u32 = 4306; +pub const __NR_vmsplice: u32 = 4307; +pub const __NR_move_pages: u32 = 4308; +pub const __NR_set_robust_list: u32 = 4309; +pub const __NR_get_robust_list: u32 = 4310; +pub const __NR_kexec_load: u32 = 4311; +pub const __NR_getcpu: u32 = 4312; +pub const __NR_epoll_pwait: u32 = 4313; +pub const __NR_ioprio_set: u32 = 4314; +pub const __NR_ioprio_get: u32 = 4315; +pub const __NR_utimensat: u32 = 4316; +pub const __NR_signalfd: u32 = 4317; +pub const __NR_timerfd: u32 = 4318; +pub const __NR_eventfd: u32 = 4319; +pub const __NR_fallocate: u32 = 4320; +pub const __NR_timerfd_create: u32 = 4321; +pub const __NR_timerfd_gettime: u32 = 4322; +pub const __NR_timerfd_settime: u32 = 4323; +pub const __NR_signalfd4: u32 = 4324; +pub const __NR_eventfd2: u32 = 4325; +pub const __NR_epoll_create1: u32 = 4326; +pub const __NR_dup3: u32 = 4327; +pub const __NR_pipe2: u32 = 4328; +pub const __NR_inotify_init1: u32 = 4329; +pub const __NR_preadv: u32 = 4330; +pub const __NR_pwritev: u32 = 4331; +pub const __NR_rt_tgsigqueueinfo: u32 = 4332; +pub const __NR_perf_event_open: u32 = 4333; +pub const __NR_accept4: u32 = 4334; +pub const __NR_recvmmsg: u32 = 4335; +pub const __NR_fanotify_init: u32 = 4336; +pub const __NR_fanotify_mark: u32 = 4337; +pub const __NR_prlimit64: u32 = 4338; +pub const __NR_name_to_handle_at: u32 = 4339; +pub const __NR_open_by_handle_at: u32 = 4340; +pub const __NR_clock_adjtime: u32 = 4341; +pub const __NR_syncfs: u32 = 4342; +pub const __NR_sendmmsg: u32 = 4343; +pub const __NR_setns: u32 = 4344; +pub const __NR_process_vm_readv: u32 = 4345; +pub const __NR_process_vm_writev: u32 = 4346; +pub const __NR_kcmp: u32 = 4347; +pub const __NR_finit_module: u32 = 4348; +pub const __NR_sched_setattr: u32 = 4349; +pub const __NR_sched_getattr: u32 = 4350; +pub const __NR_renameat2: u32 = 4351; +pub const __NR_seccomp: u32 = 4352; +pub const __NR_getrandom: u32 = 4353; +pub const __NR_memfd_create: u32 = 4354; +pub const __NR_bpf: u32 = 4355; +pub const __NR_execveat: u32 = 4356; +pub const __NR_userfaultfd: u32 = 4357; +pub const __NR_membarrier: u32 = 4358; +pub const __NR_mlock2: u32 = 4359; +pub const __NR_copy_file_range: u32 = 4360; +pub const __NR_preadv2: u32 = 4361; +pub const __NR_pwritev2: u32 = 4362; +pub const __NR_pkey_mprotect: u32 = 4363; +pub const __NR_pkey_alloc: u32 = 4364; +pub const __NR_pkey_free: u32 = 4365; +pub const __NR_statx: u32 = 4366; +pub const __NR_rseq: u32 = 4367; +pub const __NR_io_pgetevents: u32 = 4368; +pub const __NR_semget: u32 = 4393; +pub const __NR_semctl: u32 = 4394; +pub const __NR_shmget: u32 = 4395; +pub const __NR_shmctl: u32 = 4396; +pub const __NR_shmat: u32 = 4397; +pub const __NR_shmdt: u32 = 4398; +pub const __NR_msgget: u32 = 4399; +pub const __NR_msgsnd: u32 = 4400; +pub const __NR_msgrcv: u32 = 4401; +pub const __NR_msgctl: u32 = 4402; +pub const __NR_clock_gettime64: u32 = 4403; +pub const __NR_clock_settime64: u32 = 4404; +pub const __NR_clock_adjtime64: u32 = 4405; +pub const __NR_clock_getres_time64: u32 = 4406; +pub const __NR_clock_nanosleep_time64: u32 = 4407; +pub const __NR_timer_gettime64: u32 = 4408; +pub const __NR_timer_settime64: u32 = 4409; +pub const __NR_timerfd_gettime64: u32 = 4410; +pub const __NR_timerfd_settime64: u32 = 4411; +pub const __NR_utimensat_time64: u32 = 4412; +pub const __NR_pselect6_time64: u32 = 4413; +pub const __NR_ppoll_time64: u32 = 4414; +pub const __NR_io_pgetevents_time64: u32 = 4416; +pub const __NR_recvmmsg_time64: u32 = 4417; +pub const __NR_mq_timedsend_time64: u32 = 4418; +pub const __NR_mq_timedreceive_time64: u32 = 4419; +pub const __NR_semtimedop_time64: u32 = 4420; +pub const __NR_rt_sigtimedwait_time64: u32 = 4421; +pub const __NR_futex_time64: u32 = 4422; +pub const __NR_sched_rr_get_interval_time64: u32 = 4423; +pub const __NR_pidfd_send_signal: u32 = 4424; +pub const __NR_io_uring_setup: u32 = 4425; +pub const __NR_io_uring_enter: u32 = 4426; +pub const __NR_io_uring_register: u32 = 4427; +pub const __NR_open_tree: u32 = 4428; +pub const __NR_move_mount: u32 = 4429; +pub const __NR_fsopen: u32 = 4430; +pub const __NR_fsconfig: u32 = 4431; +pub const __NR_fsmount: u32 = 4432; +pub const __NR_fspick: u32 = 4433; +pub const __NR_pidfd_open: u32 = 4434; +pub const __NR_clone3: u32 = 4435; +pub const __NR_close_range: u32 = 4436; +pub const __NR_openat2: u32 = 4437; +pub const __NR_pidfd_getfd: u32 = 4438; +pub const __NR_faccessat2: u32 = 4439; +pub const __NR_process_madvise: u32 = 4440; +pub const __NR_epoll_pwait2: u32 = 4441; +pub const __NR_mount_setattr: u32 = 4442; +pub const __NR_quotactl_fd: u32 = 4443; +pub const __NR_landlock_create_ruleset: u32 = 4444; +pub const __NR_landlock_add_rule: u32 = 4445; +pub const __NR_landlock_restrict_self: u32 = 4446; +pub const __NR_process_mrelease: u32 = 4448; +pub const __NR_futex_waitv: u32 = 4449; +pub const __NR_set_mempolicy_home_node: u32 = 4450; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const P_ALL: u32 = 0; +pub const P_PID: u32 = 1; +pub const P_PGID: u32 = 2; +pub const P_PIDFD: u32 = 3; +pub const XATTR_CREATE: u32 = 1; +pub const XATTR_REPLACE: u32 = 2; +pub const XATTR_OS2_PREFIX: &[u8; 5] = b"os2.\0"; +pub const XATTR_MAC_OSX_PREFIX: &[u8; 5] = b"osx.\0"; +pub const XATTR_BTRFS_PREFIX: &[u8; 7] = b"btrfs.\0"; +pub const XATTR_HURD_PREFIX: &[u8; 5] = b"gnu.\0"; +pub const XATTR_SECURITY_PREFIX: &[u8; 10] = b"security.\0"; +pub const XATTR_SYSTEM_PREFIX: &[u8; 8] = b"system.\0"; +pub const XATTR_TRUSTED_PREFIX: &[u8; 9] = b"trusted.\0"; +pub const XATTR_USER_PREFIX: &[u8; 6] = b"user.\0"; +pub const XATTR_EVM_SUFFIX: &[u8; 4] = b"evm\0"; +pub const XATTR_NAME_EVM: &[u8; 13] = b"security.evm\0"; +pub const XATTR_IMA_SUFFIX: &[u8; 4] = b"ima\0"; +pub const XATTR_NAME_IMA: &[u8; 13] = b"security.ima\0"; +pub const XATTR_SELINUX_SUFFIX: &[u8; 8] = b"selinux\0"; +pub const XATTR_NAME_SELINUX: &[u8; 17] = b"security.selinux\0"; +pub const XATTR_SMACK_SUFFIX: &[u8; 8] = b"SMACK64\0"; +pub const XATTR_SMACK_IPIN: &[u8; 12] = b"SMACK64IPIN\0"; +pub const XATTR_SMACK_IPOUT: &[u8; 13] = b"SMACK64IPOUT\0"; +pub const XATTR_SMACK_EXEC: &[u8; 12] = b"SMACK64EXEC\0"; +pub const XATTR_SMACK_TRANSMUTE: &[u8; 17] = b"SMACK64TRANSMUTE\0"; +pub const XATTR_SMACK_MMAP: &[u8; 12] = b"SMACK64MMAP\0"; +pub const XATTR_NAME_SMACK: &[u8; 17] = b"security.SMACK64\0"; +pub const XATTR_NAME_SMACKIPIN: &[u8; 21] = b"security.SMACK64IPIN\0"; +pub const XATTR_NAME_SMACKIPOUT: &[u8; 22] = b"security.SMACK64IPOUT\0"; +pub const XATTR_NAME_SMACKEXEC: &[u8; 21] = b"security.SMACK64EXEC\0"; +pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26] = b"security.SMACK64TRANSMUTE\0"; +pub const XATTR_NAME_SMACKMMAP: &[u8; 21] = b"security.SMACK64MMAP\0"; +pub const XATTR_APPARMOR_SUFFIX: &[u8; 9] = b"apparmor\0"; +pub const XATTR_NAME_APPARMOR: &[u8; 18] = b"security.apparmor\0"; +pub const XATTR_CAPS_SUFFIX: &[u8; 11] = b"capability\0"; +pub const XATTR_NAME_CAPS: &[u8; 20] = b"security.capability\0"; +pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17] = b"posix_acl_access\0"; +pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24] = b"system.posix_acl_access\0"; +pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18] = b"posix_acl_default\0"; +pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25] = b"system.posix_acl_default\0"; +pub const MFD_CLOEXEC: u32 = 1; +pub const MFD_ALLOW_SEALING: u32 = 2; +pub const MFD_HUGETLB: u32 = 4; +pub const MFD_NOEXEC_SEAL: u32 = 8; +pub const MFD_EXEC: u32 = 16; +pub const MFD_HUGE_SHIFT: u32 = 26; +pub const MFD_HUGE_MASK: u32 = 63; +pub const MFD_HUGE_64KB: u32 = 1073741824; +pub const MFD_HUGE_512KB: u32 = 1275068416; +pub const MFD_HUGE_1MB: u32 = 1342177280; +pub const MFD_HUGE_2MB: u32 = 1409286144; +pub const MFD_HUGE_8MB: u32 = 1543503872; +pub const MFD_HUGE_16MB: u32 = 1610612736; +pub const MFD_HUGE_32MB: u32 = 1677721600; +pub const MFD_HUGE_256MB: u32 = 1879048192; +pub const MFD_HUGE_512MB: u32 = 1946157056; +pub const MFD_HUGE_1GB: u32 = 2013265920; +pub const MFD_HUGE_2GB: u32 = 2080374784; +pub const MFD_HUGE_16GB: u32 = 2281701376; +pub const TFD_TIMER_ABSTIME: u32 = 1; +pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; +pub const TFD_CLOEXEC: u32 = 524288; +pub const TFD_NONBLOCK: u32 = 128; +pub const USERFAULTFD_IOC: u32 = 170; +pub const _UFFDIO_REGISTER: u32 = 0; +pub const _UFFDIO_UNREGISTER: u32 = 1; +pub const _UFFDIO_WAKE: u32 = 2; +pub const _UFFDIO_COPY: u32 = 3; +pub const _UFFDIO_ZEROPAGE: u32 = 4; +pub const _UFFDIO_WRITEPROTECT: u32 = 6; +pub const _UFFDIO_CONTINUE: u32 = 7; +pub const _UFFDIO_API: u32 = 63; +pub const UFFDIO: u32 = 170; +pub const UFFD_EVENT_PAGEFAULT: u32 = 18; +pub const UFFD_EVENT_FORK: u32 = 19; +pub const UFFD_EVENT_REMAP: u32 = 20; +pub const UFFD_EVENT_REMOVE: u32 = 21; +pub const UFFD_EVENT_UNMAP: u32 = 22; +pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; +pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; +pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; +pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; +pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; +pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; +pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; +pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; +pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; +pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; +pub const UFFD_FEATURE_SIGBUS: u32 = 128; +pub const UFFD_FEATURE_THREAD_ID: u32 = 256; +pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; +pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; +pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; +pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; +pub const UFFD_USER_MODE_ONLY: u32 = 1; +pub const DT_UNKNOWN: u32 = 0; +pub const DT_FIFO: u32 = 1; +pub const DT_CHR: u32 = 2; +pub const DT_DIR: u32 = 4; +pub const DT_BLK: u32 = 6; +pub const DT_REG: u32 = 8; +pub const DT_LNK: u32 = 10; +pub const DT_SOCK: u32 = 12; +pub const STAT_HAVE_NSEC: u32 = 1; +pub const F_OK: u32 = 0; +pub const R_OK: u32 = 4; +pub const W_OK: u32 = 2; +pub const X_OK: u32 = 1; +pub const UTIME_NOW: u32 = 1073741823; +pub const UTIME_OMIT: u32 = 1073741822; +pub const MNT_FORCE: u32 = 1; +pub const MNT_DETACH: u32 = 2; +pub const MNT_EXPIRE: u32 = 4; +pub const UMOUNT_NOFOLLOW: u32 = 8; +pub const UMOUNT_UNUSED: u32 = 2147483648; +pub const STDIN_FILENO: u32 = 0; +pub const STDOUT_FILENO: u32 = 1; +pub const STDERR_FILENO: u32 = 2; +pub const RWF_HIPRI: u32 = 1; +pub const RWF_DSYNC: u32 = 2; +pub const RWF_SYNC: u32 = 4; +pub const RWF_NOWAIT: u32 = 8; +pub const RWF_APPEND: u32 = 16; +pub const EFD_SEMAPHORE: u32 = 1; +pub const EFD_CLOEXEC: u32 = 524288; +pub const EFD_NONBLOCK: u32 = 128; +pub const EPOLLIN: u32 = 1; +pub const EPOLLPRI: u32 = 2; +pub const EPOLLOUT: u32 = 4; +pub const EPOLLERR: u32 = 8; +pub const EPOLLHUP: u32 = 16; +pub const EPOLLNVAL: u32 = 32; +pub const EPOLLRDNORM: u32 = 64; +pub const EPOLLRDBAND: u32 = 128; +pub const EPOLLWRNORM: u32 = 256; +pub const EPOLLWRBAND: u32 = 512; +pub const EPOLLMSG: u32 = 1024; +pub const EPOLLRDHUP: u32 = 8192; +pub const EPOLLEXCLUSIVE: u32 = 268435456; +pub const EPOLLWAKEUP: u32 = 536870912; +pub const EPOLLONESHOT: u32 = 1073741824; +pub const EPOLLET: u32 = 2147483648; +pub const TFD_SHARED_FCNTL_FLAGS: u32 = 524416; +pub const TFD_CREATE_FLAGS: u32 = 524416; +pub const TFD_SETTIME_FLAGS: u32 = 1; +pub const UFFD_API: u32 = 170; +pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; +pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; +pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; +pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; +pub const UFFDIO_COPY_MODE_WP: u32 = 2; +pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; +pub const POLLWRNORM: u32 = 4; +pub const TCSANOW: u32 = 21518; +pub const TCSADRAIN: u32 = 21519; +pub const TCSAFLUSH: u32 = 21520; +pub const SPLICE_F_MOVE: u32 = 1; +pub const SPLICE_F_NONBLOCK: u32 = 2; +pub const SPLICE_F_MORE: u32 = 4; +pub const SPLICE_F_GIFT: u32 = 8; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, } #[repr(u32)] #[non_exhaustive] @@ -4752,690 +2845,161 @@ pub enum membarrier_cmd_flag { MEMBARRIER_CMD_FLAG_CPU = 1, } -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct uffd_msg { -pub event: __u8, -pub reserved1: __u8, -pub reserved2: __u16, -pub reserved3: __u32, -pub arg: uffd_msg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1 { -pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, -pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, -pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, -pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, -pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { -pub flags: __u64, -pub address: __u64, -pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { -pub ptid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { -pub ufd: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { -pub from: __u64, -pub to: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { -pub start: __u64, -pub end: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { -pub reserved1: __u64, -pub reserved2: __u64, -pub reserved3: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_api { -pub api: __u64, -pub features: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_range { -pub start: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_register { -pub range: uffdio_range, -pub mode: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_copy { -pub dst: __u64, -pub src: __u64, -pub len: __u64, -pub mode: __u64, -pub copy: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_zeropage { -pub range: uffdio_range, -pub mode: __u64, -pub zeropage: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_writeprotect { -pub range: uffdio_range, -pub mode: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_continue { -pub range: uffdio_range, -pub mode: __u64, -pub mapped: __s64, -} -#[repr(C)] -pub struct io_uring_sqe { -pub opcode: __u8, -pub flags: __u8, -pub ioprio: __u16, -pub fd: __s32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, -pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, -pub len: __u32, -pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, -pub user_data: __u64, -pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, -pub personality: __u16, -pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, -pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_1 { -pub off: __u64, -pub addr2: __u64, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { -pub cmd_op: __u32, -pub __pad1: __u32, -} #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_2 { -pub addr: __u64, -pub splice_off_in: __u64, +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_3 { -pub rw_flags: __kernel_rwf_t, -pub fsync_flags: __u32, -pub poll_events: __u16, -pub poll32_events: __u32, -pub sync_range_flags: __u32, -pub msg_flags: __u32, -pub timeout_flags: __u32, -pub accept_flags: __u32, -pub cancel_flags: __u32, -pub open_flags: __u32, -pub statx_flags: __u32, -pub fadvise_advice: __u32, -pub splice_flags: __u32, -pub rename_flags: __u32, -pub unlink_flags: __u32, -pub hardlink_flags: __u32, -pub xattr_flags: __u32, -pub msg_ring_flags: __u32, -pub uring_cmd_flags: __u32, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_4 { -pub buf_index: __u16, -pub buf_group: __u16, +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_5 { -pub splice_fd_in: __s32, -pub file_index: __u32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { -pub addr_len: __u16, -pub __pad3: [__u16; 1usize], -} -#[repr(C)] -pub struct io_uring_sqe__bindgen_ty_6 { -pub __bindgen_anon_1: __BindgenUnionField, -pub cmd: __BindgenUnionField<[__u8; 0usize]>, -pub bindgen_union_field: [u64; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { -pub addr3: __u64, -pub __pad2: [__u64; 1usize], -} -pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT; -pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT; -pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT; -pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT; -pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT; -pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT; -pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -IOSQE_FIXED_FILE_BIT = 0, -IOSQE_IO_DRAIN_BIT = 1, -IOSQE_IO_LINK_BIT = 2, -IOSQE_IO_HARDLINK_BIT = 3, -IOSQE_ASYNC_BIT = 4, -IOSQE_BUFFER_SELECT_BIT = 5, -IOSQE_CQE_SKIP_SUCCESS_BIT = 6, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum io_uring_op { -IORING_OP_NOP = 0, -IORING_OP_READV = 1, -IORING_OP_WRITEV = 2, -IORING_OP_FSYNC = 3, -IORING_OP_READ_FIXED = 4, -IORING_OP_WRITE_FIXED = 5, -IORING_OP_POLL_ADD = 6, -IORING_OP_POLL_REMOVE = 7, -IORING_OP_SYNC_FILE_RANGE = 8, -IORING_OP_SENDMSG = 9, -IORING_OP_RECVMSG = 10, -IORING_OP_TIMEOUT = 11, -IORING_OP_TIMEOUT_REMOVE = 12, -IORING_OP_ACCEPT = 13, -IORING_OP_ASYNC_CANCEL = 14, -IORING_OP_LINK_TIMEOUT = 15, -IORING_OP_CONNECT = 16, -IORING_OP_FALLOCATE = 17, -IORING_OP_OPENAT = 18, -IORING_OP_CLOSE = 19, -IORING_OP_FILES_UPDATE = 20, -IORING_OP_STATX = 21, -IORING_OP_READ = 22, -IORING_OP_WRITE = 23, -IORING_OP_FADVISE = 24, -IORING_OP_MADVISE = 25, -IORING_OP_SEND = 26, -IORING_OP_RECV = 27, -IORING_OP_OPENAT2 = 28, -IORING_OP_EPOLL_CTL = 29, -IORING_OP_SPLICE = 30, -IORING_OP_PROVIDE_BUFFERS = 31, -IORING_OP_REMOVE_BUFFERS = 32, -IORING_OP_TEE = 33, -IORING_OP_SHUTDOWN = 34, -IORING_OP_RENAMEAT = 35, -IORING_OP_UNLINKAT = 36, -IORING_OP_MKDIRAT = 37, -IORING_OP_SYMLINKAT = 38, -IORING_OP_LINKAT = 39, -IORING_OP_MSG_RING = 40, -IORING_OP_FSETXATTR = 41, -IORING_OP_SETXATTR = 42, -IORING_OP_FGETXATTR = 43, -IORING_OP_GETXATTR = 44, -IORING_OP_SOCKET = 45, -IORING_OP_URING_CMD = 46, -IORING_OP_SEND_ZC = 47, -IORING_OP_SENDMSG_ZC = 48, -IORING_OP_LAST = 49, -} -pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA; -pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_8 { -IORING_MSG_DATA = 0, -IORING_MSG_SEND_FD = 1, -} -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_cqe { -pub user_data: __u64, -pub res: __s32, -pub flags: __u32, -pub big_cqe: __IncompleteArrayField<__u64>, -} -pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_9 { -IORING_CQE_BUFFER_SHIFT = 16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_sqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub flags: __u32, -pub dropped: __u32, -pub array: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_cqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub overflow: __u32, -pub cqes: __u32, -pub flags: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_params { -pub sq_entries: __u32, -pub cq_entries: __u32, -pub flags: __u32, -pub sq_thread_cpu: __u32, -pub sq_thread_idle: __u32, -pub features: __u32, -pub wq_fd: __u32, -pub resv: [__u32; 3usize], -pub sq_off: io_sqring_offsets, -pub cq_off: io_cqring_offsets, -} -pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS; -pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS; -pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES; -pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES; -pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD; -pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD; -pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE; -pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC; -pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE; -pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY; -pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY; -pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS; -pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS; -pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2; -pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2; -pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2; -pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE; -pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF; -pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF; -pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS; -pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS; -pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS; -pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING; -pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING; -pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL; -pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE; -pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST; -pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_USE_REGISTERED_RING; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_10 { -IORING_REGISTER_BUFFERS = 0, -IORING_UNREGISTER_BUFFERS = 1, -IORING_REGISTER_FILES = 2, -IORING_UNREGISTER_FILES = 3, -IORING_REGISTER_EVENTFD = 4, -IORING_UNREGISTER_EVENTFD = 5, -IORING_REGISTER_FILES_UPDATE = 6, -IORING_REGISTER_EVENTFD_ASYNC = 7, -IORING_REGISTER_PROBE = 8, -IORING_REGISTER_PERSONALITY = 9, -IORING_UNREGISTER_PERSONALITY = 10, -IORING_REGISTER_RESTRICTIONS = 11, -IORING_REGISTER_ENABLE_RINGS = 12, -IORING_REGISTER_FILES2 = 13, -IORING_REGISTER_FILES_UPDATE2 = 14, -IORING_REGISTER_BUFFERS2 = 15, -IORING_REGISTER_BUFFERS_UPDATE = 16, -IORING_REGISTER_IOWQ_AFF = 17, -IORING_UNREGISTER_IOWQ_AFF = 18, -IORING_REGISTER_IOWQ_MAX_WORKERS = 19, -IORING_REGISTER_RING_FDS = 20, -IORING_UNREGISTER_RING_FDS = 21, -IORING_REGISTER_PBUF_RING = 22, -IORING_UNREGISTER_PBUF_RING = 23, -IORING_REGISTER_SYNC_CANCEL = 24, -IORING_REGISTER_FILE_ALLOC_RANGE = 25, -IORING_REGISTER_LAST = 26, -IORING_REGISTER_USE_REGISTERED_RING = 2147483648, -} -pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND; -pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_11 { -IO_WQ_BOUND = 0, -IO_WQ_UNBOUND = 1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_files_update { -pub offset: __u32, -pub resv: __u32, -pub fds: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_register { -pub nr: __u32, -pub flags: __u32, -pub resv2: __u64, -pub data: __u64, -pub tags: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update2 { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -pub tags: __u64, -pub nr: __u32, -pub resv2: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_slot { -pub tag: __u64, -pub resv: [__u64; 3usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_register { -pub nr_slots: __u32, -pub resv: __u32, -pub resv2: __u64, -pub data: __u64, -pub resv3: __u64, +pub union sigval { +pub sival_int: crate::ctypes::c_int, +pub sival_ptr: *mut crate::ctypes::c_void, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_probe_op { -pub op: __u8, -pub resv: __u8, -pub flags: __u16, -pub resv2: __u32, +#[derive(Copy, Clone)] +pub union __sifields { +pub _kill: __sifields__bindgen_ty_1, +pub _timer: __sifields__bindgen_ty_2, +pub _rt: __sifields__bindgen_ty_3, +pub _sigchld: __sifields__bindgen_ty_4, +pub _sigfault: __sifields__bindgen_ty_5, +pub _sigpoll: __sifields__bindgen_ty_6, +pub _sigsys: __sifields__bindgen_ty_7, } #[repr(C)] -#[derive(Debug)] -pub struct io_uring_probe { -pub last_op: __u8, -pub ops_len: __u8, -pub resv: __u16, -pub resv2: [__u32; 3usize], -pub ops: __IncompleteArrayField, +#[derive(Copy, Clone)] +pub union __sifields__bindgen_ty_5__bindgen_ty_1 { +pub _trapno: crate::ctypes::c_int, +pub _addr_lsb: crate::ctypes::c_short, +pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, +pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, +pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] #[derive(Copy, Clone)] -pub struct io_uring_restriction { -pub opcode: __u16, -pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, -pub resv: __u8, -pub resv2: [__u32; 3usize], +pub union siginfo__bindgen_ty_1 { +pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, +pub _si_pad: [crate::ctypes::c_int; 32usize], } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_restriction__bindgen_ty_1 { -pub register_op: __u8, -pub sqe_op: __u8, -pub sqe_flags: __u8, +pub union sigevent__bindgen_ty_1 { +pub _pad: [crate::ctypes::c_int; 13usize], +pub _tid: crate::ctypes::c_int, +pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf { -pub addr: __u64, -pub len: __u32, -pub bid: __u16, -pub resv: __u16, +#[derive(Copy, Clone)] +pub union uffd_msg__bindgen_ty_1 { +pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, +pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, +pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, +pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, +pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, } #[repr(C)] -pub struct io_uring_buf_ring { -pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +#[derive(Copy, Clone)] +pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { +pub ptid: __u32, } -#[repr(C)] -pub struct io_uring_buf_ring__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 2usize], +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { -pub resv1: __u64, -pub resv2: __u32, -pub resv3: __u16, -pub tail: __u16, } -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { -pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, -pub bufs: __IncompleteArrayField, +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_reg { -pub ring_addr: __u64, -pub ring_entries: __u32, -pub bgid: __u16, -pub pad: __u16, -pub resv: [__u64; 3usize], +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; } -pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP; -pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP; -pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; -pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; -pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_12 { -IORING_RESTRICTION_REGISTER_OP = 0, -IORING_RESTRICTION_SQE_OP = 1, -IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, -IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, -IORING_RESTRICTION_LAST = 4, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_getevents_arg { -pub sigmask: __u64, -pub sigmask_sz: __u32, -pub pad: __u32, -pub ts: __u64, +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sync_cancel_reg { -pub addr: __u64, -pub fd: __s32, -pub flags: __u32, -pub timeout: __kernel_timespec, -pub pad: [__u64; 4usize], } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_file_index_range { -pub off: __u32, -pub len: __u32, -pub resv: __u64, +val } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_recvmsg_out { -pub namelen: __u32, -pub controllen: __u32, -pub payloadlen: __u32, -pub flags: __u32, +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr { -pub __storage: __kernel_sockaddr_storage, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct linger { -pub l_onoff: crate::ctypes::c_int, -pub l_linger: crate::ctypes::c_int, } -#[repr(C)] -#[derive(Debug)] -pub struct linux_dirent64 { -pub d_ino: crate::ctypes::c_ulonglong, -pub d_off: crate::ctypes::c_longlong, -pub d_reclen: __u16, -pub d_type: __u8, -pub d_name: __IncompleteArrayField, +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) } -pub type socklen_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat { -pub st_dev: crate::ctypes::c_uint, -pub st_pad1: [crate::ctypes::c_long; 3usize], -pub st_ino: __kernel_ino_t, -pub st_mode: __kernel_mode_t, -pub st_nlink: __u32, -pub st_uid: __kernel_uid32_t, -pub st_gid: __kernel_gid32_t, -pub st_rdev: crate::ctypes::c_uint, -pub st_pad2: [crate::ctypes::c_long; 2usize], -pub st_size: crate::ctypes::c_long, -pub st_pad3: crate::ctypes::c_long, -pub st_atime: crate::ctypes::c_long, -pub st_atime_nsec: crate::ctypes::c_long, -pub st_mtime: crate::ctypes::c_long, -pub st_mtime_nsec: crate::ctypes::c_long, -pub st_ctime: crate::ctypes::c_long, -pub st_ctime_nsec: crate::ctypes::c_long, -pub st_blksize: crate::ctypes::c_long, -pub st_blocks: crate::ctypes::c_long, -pub st_pad4: [crate::ctypes::c_long; 14usize], +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat64 { -pub st_dev: crate::ctypes::c_ulong, -pub st_pad0: [crate::ctypes::c_ulong; 3usize], -pub st_ino: crate::ctypes::c_ulonglong, -pub st_mode: __kernel_mode_t, -pub st_nlink: __u32, -pub st_uid: __kernel_uid32_t, -pub st_gid: __kernel_gid32_t, -pub st_rdev: crate::ctypes::c_ulong, -pub st_pad1: [crate::ctypes::c_ulong; 3usize], -pub st_size: crate::ctypes::c_longlong, -pub st_atime: crate::ctypes::c_long, -pub st_atime_nsec: crate::ctypes::c_ulong, -pub st_mtime: crate::ctypes::c_long, -pub st_mtime_nsec: crate::ctypes::c_ulong, -pub st_ctime: crate::ctypes::c_long, -pub st_ctime_nsec: crate::ctypes::c_ulong, -pub st_blksize: crate::ctypes::c_ulong, -pub st_pad2: crate::ctypes::c_ulong, -pub st_blocks: crate::ctypes::c_longlong, +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T } -pub type fsid_t = __kernel_fsid_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs { -pub f_type: crate::ctypes::c_long, -pub f_bsize: crate::ctypes::c_long, -pub f_frsize: crate::ctypes::c_long, -pub f_blocks: crate::ctypes::c_long, -pub f_bfree: crate::ctypes::c_long, -pub f_files: crate::ctypes::c_long, -pub f_ffree: crate::ctypes::c_long, -pub f_bavail: crate::ctypes::c_long, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: crate::ctypes::c_long, -pub f_flags: crate::ctypes::c_long, -pub f_spare: [crate::ctypes::c_long; 5usize], +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_frsize: __u32, -pub __pad: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_bavail: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 5usize], +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } -pub type __fsword_t = __u32; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_desc { -pub entry_number: crate::ctypes::c_uint, -pub base_addr: crate::ctypes::c_uint, -pub limit: crate::ctypes::c_uint, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub __bindgen_padding_0: [u8; 3usize], +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl membarrier_cmd { +pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; } impl user_desc { #[inline] @@ -5534,46 +3098,3 @@ __bindgen_bitfield_unit } } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr { -pub msg_name: *mut crate::ctypes::c_void, -pub msg_namelen: crate::ctypes::c_int, -pub msg_iov: *mut iovec, -pub msg_iovlen: size_t, -pub msg_control: *mut crate::ctypes::c_void, -pub msg_controllen: size_t, -pub msg_flags: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsghdr { -pub cmsg_len: size_t, -pub cmsg_level: crate::ctypes::c_int, -pub cmsg_type: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ucred { -pub pid: __u32, -pub uid: __u32, -pub gid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mmsghdr { -pub msg_hdr: msghdr, -pub msg_len: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigset_t { -pub sig: [crate::ctypes::c_ulong; 4usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigaction { -pub sa_handler_kernel: __kernel_sighandler_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_mask: kernel_sigset_t, -} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips/if_ether.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips/if_ether.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips/if_ether.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips/if_ether.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,177 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ethhdr { +pub h_dest: [crate::ctypes::c_uchar; 6usize], +pub h_source: [crate::ctypes::c_uchar; 6usize], +pub h_proto: __be16, +} +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const ETH_ALEN: u32 = 6; +pub const ETH_TLEN: u32 = 2; +pub const ETH_HLEN: u32 = 14; +pub const ETH_ZLEN: u32 = 60; +pub const ETH_DATA_LEN: u32 = 1500; +pub const ETH_FRAME_LEN: u32 = 1514; +pub const ETH_FCS_LEN: u32 = 4; +pub const ETH_MIN_MTU: u32 = 68; +pub const ETH_MAX_MTU: u32 = 65535; +pub const ETH_P_LOOP: u32 = 96; +pub const ETH_P_PUP: u32 = 512; +pub const ETH_P_PUPAT: u32 = 513; +pub const ETH_P_TSN: u32 = 8944; +pub const ETH_P_ERSPAN2: u32 = 8939; +pub const ETH_P_IP: u32 = 2048; +pub const ETH_P_X25: u32 = 2053; +pub const ETH_P_ARP: u32 = 2054; +pub const ETH_P_BPQ: u32 = 2303; +pub const ETH_P_IEEEPUP: u32 = 2560; +pub const ETH_P_IEEEPUPAT: u32 = 2561; +pub const ETH_P_BATMAN: u32 = 17157; +pub const ETH_P_DEC: u32 = 24576; +pub const ETH_P_DNA_DL: u32 = 24577; +pub const ETH_P_DNA_RC: u32 = 24578; +pub const ETH_P_DNA_RT: u32 = 24579; +pub const ETH_P_LAT: u32 = 24580; +pub const ETH_P_DIAG: u32 = 24581; +pub const ETH_P_CUST: u32 = 24582; +pub const ETH_P_SCA: u32 = 24583; +pub const ETH_P_TEB: u32 = 25944; +pub const ETH_P_RARP: u32 = 32821; +pub const ETH_P_ATALK: u32 = 32923; +pub const ETH_P_AARP: u32 = 33011; +pub const ETH_P_8021Q: u32 = 33024; +pub const ETH_P_ERSPAN: u32 = 35006; +pub const ETH_P_IPX: u32 = 33079; +pub const ETH_P_IPV6: u32 = 34525; +pub const ETH_P_PAUSE: u32 = 34824; +pub const ETH_P_SLOW: u32 = 34825; +pub const ETH_P_WCCP: u32 = 34878; +pub const ETH_P_MPLS_UC: u32 = 34887; +pub const ETH_P_MPLS_MC: u32 = 34888; +pub const ETH_P_ATMMPOA: u32 = 34892; +pub const ETH_P_PPP_DISC: u32 = 34915; +pub const ETH_P_PPP_SES: u32 = 34916; +pub const ETH_P_LINK_CTL: u32 = 34924; +pub const ETH_P_ATMFATE: u32 = 34948; +pub const ETH_P_PAE: u32 = 34958; +pub const ETH_P_PROFINET: u32 = 34962; +pub const ETH_P_REALTEK: u32 = 34969; +pub const ETH_P_AOE: u32 = 34978; +pub const ETH_P_ETHERCAT: u32 = 34980; +pub const ETH_P_8021AD: u32 = 34984; +pub const ETH_P_802_EX1: u32 = 34997; +pub const ETH_P_PREAUTH: u32 = 35015; +pub const ETH_P_TIPC: u32 = 35018; +pub const ETH_P_LLDP: u32 = 35020; +pub const ETH_P_MRP: u32 = 35043; +pub const ETH_P_MACSEC: u32 = 35045; +pub const ETH_P_8021AH: u32 = 35047; +pub const ETH_P_MVRP: u32 = 35061; +pub const ETH_P_1588: u32 = 35063; +pub const ETH_P_NCSI: u32 = 35064; +pub const ETH_P_PRP: u32 = 35067; +pub const ETH_P_CFM: u32 = 35074; +pub const ETH_P_FCOE: u32 = 35078; +pub const ETH_P_IBOE: u32 = 35093; +pub const ETH_P_TDLS: u32 = 35085; +pub const ETH_P_FIP: u32 = 35092; +pub const ETH_P_80221: u32 = 35095; +pub const ETH_P_HSR: u32 = 35119; +pub const ETH_P_NSH: u32 = 35151; +pub const ETH_P_LOOPBACK: u32 = 36864; +pub const ETH_P_QINQ1: u32 = 37120; +pub const ETH_P_QINQ2: u32 = 37376; +pub const ETH_P_QINQ3: u32 = 37632; +pub const ETH_P_EDSA: u32 = 56026; +pub const ETH_P_DSA_8021Q: u32 = 56027; +pub const ETH_P_DSA_A5PSW: u32 = 57345; +pub const ETH_P_IFE: u32 = 60734; +pub const ETH_P_AF_IUCV: u32 = 64507; +pub const ETH_P_802_3_MIN: u32 = 1536; +pub const ETH_P_802_3: u32 = 1; +pub const ETH_P_AX25: u32 = 2; +pub const ETH_P_ALL: u32 = 3; +pub const ETH_P_802_2: u32 = 4; +pub const ETH_P_SNAP: u32 = 5; +pub const ETH_P_DDCMP: u32 = 6; +pub const ETH_P_WAN_PPP: u32 = 7; +pub const ETH_P_PPP_MP: u32 = 8; +pub const ETH_P_LOCALTALK: u32 = 9; +pub const ETH_P_CAN: u32 = 12; +pub const ETH_P_CANFD: u32 = 13; +pub const ETH_P_CANXL: u32 = 14; +pub const ETH_P_PPPTALK: u32 = 16; +pub const ETH_P_TR_802_2: u32 = 17; +pub const ETH_P_MOBITEX: u32 = 21; +pub const ETH_P_CONTROL: u32 = 22; +pub const ETH_P_IRDA: u32 = 23; +pub const ETH_P_ECONET: u32 = 24; +pub const ETH_P_HDLC: u32 = 25; +pub const ETH_P_ARCNET: u32 = 26; +pub const ETH_P_DSA: u32 = 27; +pub const ETH_P_TRAILER: u32 = 28; +pub const ETH_P_PHONET: u32 = 245; +pub const ETH_P_IEEE802154: u32 = 246; +pub const ETH_P_CAIF: u32 = 247; +pub const ETH_P_XDSA: u32 = 248; +pub const ETH_P_MAP: u32 = 249; +pub const ETH_P_MCTP: u32 = 250; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips/ioctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips/ioctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips/ioctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const FIONREAD: u32 = 18047; pub const FIONBIO: u32 = 26238; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips/io_uring.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips/io_uring.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips/io_uring.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips/io_uring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1093 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_rwf_t = crate::ctypes::c_int; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +pub struct io_uring_sqe { +pub opcode: __u8, +pub flags: __u8, +pub ioprio: __u16, +pub fd: __s32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, +pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, +pub len: __u32, +pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, +pub user_data: __u64, +pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, +pub personality: __u16, +pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, +pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { +pub cmd_op: __u32, +pub __pad1: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { +pub addr_len: __u16, +pub __pad3: [__u16; 1usize], +} +#[repr(C)] +pub struct io_uring_sqe__bindgen_ty_6 { +pub __bindgen_anon_1: __BindgenUnionField, +pub cmd: __BindgenUnionField<[__u8; 0usize]>, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { +pub addr3: __u64, +pub __pad2: [__u64; 1usize], +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_cqe { +pub user_data: __u64, +pub res: __s32, +pub flags: __u32, +pub big_cqe: __IncompleteArrayField<__u64>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_sqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub flags: __u32, +pub dropped: __u32, +pub array: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_cqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub overflow: __u32, +pub cqes: __u32, +pub flags: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_params { +pub sq_entries: __u32, +pub cq_entries: __u32, +pub flags: __u32, +pub sq_thread_cpu: __u32, +pub sq_thread_idle: __u32, +pub features: __u32, +pub wq_fd: __u32, +pub resv: [__u32; 3usize], +pub sq_off: io_sqring_offsets, +pub cq_off: io_cqring_offsets, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_files_update { +pub offset: __u32, +pub resv: __u32, +pub fds: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_register { +pub nr: __u32, +pub flags: __u32, +pub resv2: __u64, +pub data: __u64, +pub tags: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update2 { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +pub tags: __u64, +pub nr: __u32, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_slot { +pub tag: __u64, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_register { +pub nr_slots: __u32, +pub resv: __u32, +pub resv2: __u64, +pub data: __u64, +pub resv3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_probe_op { +pub op: __u8, +pub resv: __u8, +pub flags: __u16, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_probe { +pub last_op: __u8, +pub ops_len: __u8, +pub resv: __u16, +pub resv2: [__u32; 3usize], +pub ops: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_restriction { +pub opcode: __u16, +pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, +pub resv: __u8, +pub resv2: [__u32; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf { +pub addr: __u64, +pub len: __u32, +pub bid: __u16, +pub resv: __u16, +} +#[repr(C)] +pub struct io_uring_buf_ring { +pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +} +#[repr(C)] +pub struct io_uring_buf_ring__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { +pub resv1: __u64, +pub resv2: __u32, +pub resv3: __u16, +pub tail: __u16, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { +pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, +pub bufs: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_reg { +pub ring_addr: __u64, +pub ring_entries: __u32, +pub bgid: __u16, +pub pad: __u16, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_getevents_arg { +pub sigmask: __u64, +pub sigmask_sz: __u32, +pub pad: __u32, +pub ts: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sync_cancel_reg { +pub addr: __u64, +pub fd: __s32, +pub flags: __u32, +pub timeout: __kernel_timespec, +pub pad: [__u64; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_file_index_range { +pub off: __u32, +pub len: __u32, +pub resv: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_recvmsg_out { +pub namelen: __u32, +pub controllen: __u32, +pub payloadlen: __u32, +pub flags: __u32, +} +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 536805376; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const IORING_FILE_INDEX_ALLOC: i32 = -1; +pub const IORING_SETUP_IOPOLL: u32 = 1; +pub const IORING_SETUP_SQPOLL: u32 = 2; +pub const IORING_SETUP_SQ_AFF: u32 = 4; +pub const IORING_SETUP_CQSIZE: u32 = 8; +pub const IORING_SETUP_CLAMP: u32 = 16; +pub const IORING_SETUP_ATTACH_WQ: u32 = 32; +pub const IORING_SETUP_R_DISABLED: u32 = 64; +pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; +pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; +pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; +pub const IORING_SETUP_SQE128: u32 = 1024; +pub const IORING_SETUP_CQE32: u32 = 2048; +pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; +pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; +pub const IORING_URING_CMD_FIXED: u32 = 1; +pub const IORING_FSYNC_DATASYNC: u32 = 1; +pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; +pub const IORING_POLL_ADD_LEVEL: u32 = 8; +pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; +pub const IORING_ASYNC_CANCEL_FD: u32 = 2; +pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; +pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; +pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; +pub const IORING_RECV_MULTISHOT: u32 = 2; +pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; +pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; +pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; +pub const IORING_ACCEPT_MULTISHOT: u32 = 1; +pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; +pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; +pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; +pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; +pub const IORING_CQE_F_NOTIF: u32 = 8; +pub const IORING_OFF_SQ_RING: u32 = 0; +pub const IORING_OFF_CQ_RING: u32 = 134217728; +pub const IORING_OFF_SQES: u32 = 268435456; +pub const IORING_SQ_NEED_WAKEUP: u32 = 1; +pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; +pub const IORING_SQ_TASKRUN: u32 = 4; +pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; +pub const IORING_ENTER_GETEVENTS: u32 = 1; +pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; +pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; +pub const IORING_ENTER_REGISTERED_RING: u32 = 16; +pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; +pub const IORING_FEAT_NODROP: u32 = 2; +pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; +pub const IORING_FEAT_RW_CUR_POS: u32 = 8; +pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; +pub const IORING_FEAT_FAST_POLL: u32 = 32; +pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_FEAT_CQE_SKIP: u32 = 2048; +pub const IORING_FEAT_LINKED_FILE: u32 = 4096; +pub const IORING_FEAT_REG_REG_RING: u32 = 8192; +pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; +pub const IO_URING_OP_SUPPORTED: u32 = 1; +pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_FIXED_FILE_BIT; +pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_DRAIN_BIT; +pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_LINK_BIT; +pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_HARDLINK_BIT; +pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_ASYNC_BIT; +pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_BUFFER_SELECT_BIT; +pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_CQE_SKIP_SUCCESS_BIT; +pub const IORING_MSG_DATA: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_DATA; +pub const IORING_MSG_SEND_FD: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_SEND_FD; +pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = _bindgen_ty_3::IORING_CQE_BUFFER_SHIFT; +pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS; +pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_BUFFERS; +pub const IORING_REGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES; +pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_FILES; +pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD; +pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_EVENTFD; +pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE; +pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD_ASYNC; +pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PROBE; +pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PERSONALITY; +pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PERSONALITY; +pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RESTRICTIONS; +pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_ENABLE_RINGS; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES2; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE2; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS2; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS_UPDATE; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_AFF; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_IOWQ_AFF; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_MAX_WORKERS; +pub const IORING_REGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RING_FDS; +pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_RING_FDS; +pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PBUF_RING; +pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PBUF_RING; +pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_SYNC_CANCEL; +pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILE_ALLOC_RANGE; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_LAST; +pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_USE_REGISTERED_RING; +pub const IO_WQ_BOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_BOUND; +pub const IO_WQ_UNBOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_UNBOUND; +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_REGISTER_OP; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_OP; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_LAST; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IOSQE_FIXED_FILE_BIT = 0, +IOSQE_IO_DRAIN_BIT = 1, +IOSQE_IO_LINK_BIT = 2, +IOSQE_IO_HARDLINK_BIT = 3, +IOSQE_ASYNC_BIT = 4, +IOSQE_BUFFER_SELECT_BIT = 5, +IOSQE_CQE_SKIP_SUCCESS_BIT = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum io_uring_op { +IORING_OP_NOP = 0, +IORING_OP_READV = 1, +IORING_OP_WRITEV = 2, +IORING_OP_FSYNC = 3, +IORING_OP_READ_FIXED = 4, +IORING_OP_WRITE_FIXED = 5, +IORING_OP_POLL_ADD = 6, +IORING_OP_POLL_REMOVE = 7, +IORING_OP_SYNC_FILE_RANGE = 8, +IORING_OP_SENDMSG = 9, +IORING_OP_RECVMSG = 10, +IORING_OP_TIMEOUT = 11, +IORING_OP_TIMEOUT_REMOVE = 12, +IORING_OP_ACCEPT = 13, +IORING_OP_ASYNC_CANCEL = 14, +IORING_OP_LINK_TIMEOUT = 15, +IORING_OP_CONNECT = 16, +IORING_OP_FALLOCATE = 17, +IORING_OP_OPENAT = 18, +IORING_OP_CLOSE = 19, +IORING_OP_FILES_UPDATE = 20, +IORING_OP_STATX = 21, +IORING_OP_READ = 22, +IORING_OP_WRITE = 23, +IORING_OP_FADVISE = 24, +IORING_OP_MADVISE = 25, +IORING_OP_SEND = 26, +IORING_OP_RECV = 27, +IORING_OP_OPENAT2 = 28, +IORING_OP_EPOLL_CTL = 29, +IORING_OP_SPLICE = 30, +IORING_OP_PROVIDE_BUFFERS = 31, +IORING_OP_REMOVE_BUFFERS = 32, +IORING_OP_TEE = 33, +IORING_OP_SHUTDOWN = 34, +IORING_OP_RENAMEAT = 35, +IORING_OP_UNLINKAT = 36, +IORING_OP_MKDIRAT = 37, +IORING_OP_SYMLINKAT = 38, +IORING_OP_LINKAT = 39, +IORING_OP_MSG_RING = 40, +IORING_OP_FSETXATTR = 41, +IORING_OP_SETXATTR = 42, +IORING_OP_FGETXATTR = 43, +IORING_OP_GETXATTR = 44, +IORING_OP_SOCKET = 45, +IORING_OP_URING_CMD = 46, +IORING_OP_SEND_ZC = 47, +IORING_OP_SENDMSG_ZC = 48, +IORING_OP_LAST = 49, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IORING_MSG_DATA = 0, +IORING_MSG_SEND_FD = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IORING_CQE_BUFFER_SHIFT = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IORING_REGISTER_BUFFERS = 0, +IORING_UNREGISTER_BUFFERS = 1, +IORING_REGISTER_FILES = 2, +IORING_UNREGISTER_FILES = 3, +IORING_REGISTER_EVENTFD = 4, +IORING_UNREGISTER_EVENTFD = 5, +IORING_REGISTER_FILES_UPDATE = 6, +IORING_REGISTER_EVENTFD_ASYNC = 7, +IORING_REGISTER_PROBE = 8, +IORING_REGISTER_PERSONALITY = 9, +IORING_UNREGISTER_PERSONALITY = 10, +IORING_REGISTER_RESTRICTIONS = 11, +IORING_REGISTER_ENABLE_RINGS = 12, +IORING_REGISTER_FILES2 = 13, +IORING_REGISTER_FILES_UPDATE2 = 14, +IORING_REGISTER_BUFFERS2 = 15, +IORING_REGISTER_BUFFERS_UPDATE = 16, +IORING_REGISTER_IOWQ_AFF = 17, +IORING_UNREGISTER_IOWQ_AFF = 18, +IORING_REGISTER_IOWQ_MAX_WORKERS = 19, +IORING_REGISTER_RING_FDS = 20, +IORING_UNREGISTER_RING_FDS = 21, +IORING_REGISTER_PBUF_RING = 22, +IORING_UNREGISTER_PBUF_RING = 23, +IORING_REGISTER_SYNC_CANCEL = 24, +IORING_REGISTER_FILE_ALLOC_RANGE = 25, +IORING_REGISTER_LAST = 26, +IORING_REGISTER_USE_REGISTERED_RING = 2147483648, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IO_WQ_BOUND = 0, +IO_WQ_UNBOUND = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IORING_RESTRICTION_REGISTER_OP = 0, +IORING_RESTRICTION_SQE_OP = 1, +IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, +IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, +IORING_RESTRICTION_LAST = 4, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_1 { +pub off: __u64, +pub addr2: __u64, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_2 { +pub addr: __u64, +pub splice_off_in: __u64, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_3 { +pub rw_flags: __kernel_rwf_t, +pub fsync_flags: __u32, +pub poll_events: __u16, +pub poll32_events: __u32, +pub sync_range_flags: __u32, +pub msg_flags: __u32, +pub timeout_flags: __u32, +pub accept_flags: __u32, +pub cancel_flags: __u32, +pub open_flags: __u32, +pub statx_flags: __u32, +pub fadvise_advice: __u32, +pub splice_flags: __u32, +pub rename_flags: __u32, +pub unlink_flags: __u32, +pub hardlink_flags: __u32, +pub xattr_flags: __u32, +pub msg_ring_flags: __u32, +pub uring_cmd_flags: __u32, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_4 { +pub buf_index: __u16, +pub buf_group: __u16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { +pub splice_fd_in: __s32, +pub file_index: __u32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_restriction__bindgen_ty_1 { +pub register_op: __u8, +pub sqe_op: __u8, +pub sqe_flags: __u8, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips/netlink.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips/netlink.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips/netlink.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips/netlink.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,366 +1,1502 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_nl { +pub nl_family: __kernel_sa_family_t, +pub nl_pad: crate::ctypes::c_ushort, +pub nl_pid: __u32, +pub nl_groups: __u32, } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsghdr { +pub nlmsg_len: __u32, +pub nlmsg_type: __u16, +pub nlmsg_flags: __u16, +pub nlmsg_seq: __u32, +pub nlmsg_pid: __u32, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsgerr { +pub error: crate::ctypes::c_int, +pub msg: nlmsghdr, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_pktinfo { +pub group: __u32, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_req { +pub nm_block_size: crate::ctypes::c_uint, +pub nm_block_nr: crate::ctypes::c_uint, +pub nm_frame_size: crate::ctypes::c_uint, +pub nm_frame_nr: crate::ctypes::c_uint, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_hdr { +pub nm_status: crate::ctypes::c_uint, +pub nm_len: crate::ctypes::c_uint, +pub nm_group: __u32, +pub nm_pid: __u32, +pub nm_uid: __u32, +pub nm_gid: __u32, } -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const __FD_SETSIZE: u32 = 1024; -pub const _MIPS_ISA_MIPS1: u32 = 1; -pub const _MIPS_ISA_MIPS2: u32 = 2; -pub const _MIPS_ISA_MIPS3: u32 = 3; -pub const _MIPS_ISA_MIPS4: u32 = 4; -pub const _MIPS_ISA_MIPS5: u32 = 5; -pub const _MIPS_ISA_MIPS32: u32 = 6; -pub const _MIPS_ISA_MIPS64: u32 = 7; -pub const _MIPS_SIM_ABI32: u32 = 1; -pub const _MIPS_SIM_NABI32: u32 = 2; -pub const _MIPS_SIM_ABI64: u32 = 3; -pub const NETLINK_ROUTE: u32 = 0; -pub const NETLINK_UNUSED: u32 = 1; -pub const NETLINK_USERSOCK: u32 = 2; -pub const NETLINK_FIREWALL: u32 = 3; -pub const NETLINK_SOCK_DIAG: u32 = 4; -pub const NETLINK_NFLOG: u32 = 5; -pub const NETLINK_XFRM: u32 = 6; -pub const NETLINK_SELINUX: u32 = 7; -pub const NETLINK_ISCSI: u32 = 8; -pub const NETLINK_AUDIT: u32 = 9; -pub const NETLINK_FIB_LOOKUP: u32 = 10; -pub const NETLINK_CONNECTOR: u32 = 11; -pub const NETLINK_NETFILTER: u32 = 12; -pub const NETLINK_IP6_FW: u32 = 13; -pub const NETLINK_DNRTMSG: u32 = 14; -pub const NETLINK_KOBJECT_UEVENT: u32 = 15; -pub const NETLINK_GENERIC: u32 = 16; -pub const NETLINK_SCSITRANSPORT: u32 = 18; -pub const NETLINK_ECRYPTFS: u32 = 19; -pub const NETLINK_RDMA: u32 = 20; -pub const NETLINK_CRYPTO: u32 = 21; -pub const NETLINK_SMC: u32 = 22; -pub const NETLINK_INET_DIAG: u32 = 4; -pub const MAX_LINKS: u32 = 32; -pub const NLM_F_REQUEST: u32 = 1; -pub const NLM_F_MULTI: u32 = 2; -pub const NLM_F_ACK: u32 = 4; -pub const NLM_F_ECHO: u32 = 8; -pub const NLM_F_DUMP_INTR: u32 = 16; -pub const NLM_F_DUMP_FILTERED: u32 = 32; -pub const NLM_F_ROOT: u32 = 256; -pub const NLM_F_MATCH: u32 = 512; -pub const NLM_F_ATOMIC: u32 = 1024; -pub const NLM_F_DUMP: u32 = 768; -pub const NLM_F_REPLACE: u32 = 256; -pub const NLM_F_EXCL: u32 = 512; -pub const NLM_F_CREATE: u32 = 1024; -pub const NLM_F_APPEND: u32 = 2048; -pub const NLM_F_NONREC: u32 = 256; -pub const NLM_F_BULK: u32 = 512; -pub const NLM_F_CAPPED: u32 = 256; -pub const NLM_F_ACK_TLVS: u32 = 512; -pub const NLMSG_ALIGNTO: u32 = 4; -pub const NLMSG_NOOP: u32 = 1; -pub const NLMSG_ERROR: u32 = 2; -pub const NLMSG_DONE: u32 = 3; -pub const NLMSG_OVERRUN: u32 = 4; -pub const NLMSG_MIN_TYPE: u32 = 16; -pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; -pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; -pub const NETLINK_PKTINFO: u32 = 3; -pub const NETLINK_BROADCAST_ERROR: u32 = 4; -pub const NETLINK_NO_ENOBUFS: u32 = 5; -pub const NETLINK_RX_RING: u32 = 6; -pub const NETLINK_TX_RING: u32 = 7; -pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; -pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; -pub const NETLINK_CAP_ACK: u32 = 10; -pub const NETLINK_EXT_ACK: u32 = 11; -pub const NETLINK_GET_STRICT_CHK: u32 = 12; -pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; -pub const NET_MAJOR: u32 = 36; -pub const NLA_F_NESTED: u32 = 32768; -pub const NLA_F_NET_BYTEORDER: u32 = 16384; -pub const NLA_TYPE_MASK: i32 = -49153; -pub const NLA_ALIGNTO: u32 = 4; -pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; -pub const MACVLAN_FLAG_NODST: u32 = 2; -pub const IPVLAN_F_PRIVATE: u32 = 1; -pub const IPVLAN_F_VEPA: u32 = 2; -pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; -pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; -pub const MAX_VLAN_LIST_LEN: u32 = 1; -pub const PORT_PROFILE_MAX: u32 = 40; -pub const PORT_UUID_MAX: u32 = 16; -pub const PORT_SELF_VF: i32 = -1; -pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; -pub const XDP_FLAGS_SKB_MODE: u32 = 2; -pub const XDP_FLAGS_DRV_MODE: u32 = 4; -pub const XDP_FLAGS_HW_MODE: u32 = 8; -pub const XDP_FLAGS_REPLACE: u32 = 16; -pub const XDP_FLAGS_MODES: u32 = 14; -pub const XDP_FLAGS_MASK: u32 = 31; -pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; -pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; -pub const IFA_F_SECONDARY: u32 = 1; -pub const IFA_F_TEMPORARY: u32 = 1; -pub const IFA_F_NODAD: u32 = 2; -pub const IFA_F_OPTIMISTIC: u32 = 4; -pub const IFA_F_DADFAILED: u32 = 8; -pub const IFA_F_HOMEADDRESS: u32 = 16; -pub const IFA_F_DEPRECATED: u32 = 32; -pub const IFA_F_TENTATIVE: u32 = 64; -pub const IFA_F_PERMANENT: u32 = 128; -pub const IFA_F_MANAGETEMPADDR: u32 = 256; -pub const IFA_F_NOPREFIXROUTE: u32 = 512; -pub const IFA_F_MCAUTOJOIN: u32 = 1024; -pub const IFA_F_STABLE_PRIVACY: u32 = 2048; -pub const IFAPROT_UNSPEC: u32 = 0; -pub const IFAPROT_KERNEL_LO: u32 = 1; -pub const IFAPROT_KERNEL_RA: u32 = 2; -pub const IFAPROT_KERNEL_LL: u32 = 3; -pub const NTF_USE: u32 = 1; -pub const NTF_SELF: u32 = 2; -pub const NTF_MASTER: u32 = 4; -pub const NTF_PROXY: u32 = 8; -pub const NTF_EXT_LEARNED: u32 = 16; -pub const NTF_OFFLOADED: u32 = 32; -pub const NTF_STICKY: u32 = 64; -pub const NTF_ROUTER: u32 = 128; -pub const NTF_EXT_MANAGED: u32 = 1; -pub const NTF_EXT_LOCKED: u32 = 2; -pub const NUD_INCOMPLETE: u32 = 1; -pub const NUD_REACHABLE: u32 = 2; -pub const NUD_STALE: u32 = 4; -pub const NUD_DELAY: u32 = 8; -pub const NUD_PROBE: u32 = 16; -pub const NUD_FAILED: u32 = 32; -pub const NUD_NOARP: u32 = 64; -pub const NUD_PERMANENT: u32 = 128; -pub const NUD_NONE: u32 = 0; -pub const RTNL_FAMILY_IPMR: u32 = 128; -pub const RTNL_FAMILY_IP6MR: u32 = 129; -pub const RTNL_FAMILY_MAX: u32 = 129; -pub const RTA_ALIGNTO: u32 = 4; -pub const RTPROT_UNSPEC: u32 = 0; -pub const RTPROT_REDIRECT: u32 = 1; -pub const RTPROT_KERNEL: u32 = 2; -pub const RTPROT_BOOT: u32 = 3; -pub const RTPROT_STATIC: u32 = 4; -pub const RTPROT_GATED: u32 = 8; -pub const RTPROT_RA: u32 = 9; -pub const RTPROT_MRT: u32 = 10; -pub const RTPROT_ZEBRA: u32 = 11; -pub const RTPROT_BIRD: u32 = 12; -pub const RTPROT_DNROUTED: u32 = 13; -pub const RTPROT_XORP: u32 = 14; -pub const RTPROT_NTK: u32 = 15; -pub const RTPROT_DHCP: u32 = 16; -pub const RTPROT_MROUTED: u32 = 17; -pub const RTPROT_KEEPALIVED: u32 = 18; -pub const RTPROT_BABEL: u32 = 42; -pub const RTPROT_OPENR: u32 = 99; -pub const RTPROT_BGP: u32 = 186; -pub const RTPROT_ISIS: u32 = 187; -pub const RTPROT_OSPF: u32 = 188; -pub const RTPROT_RIP: u32 = 189; -pub const RTPROT_EIGRP: u32 = 192; -pub const RTM_F_NOTIFY: u32 = 256; -pub const RTM_F_CLONED: u32 = 512; -pub const RTM_F_EQUALIZE: u32 = 1024; -pub const RTM_F_PREFIX: u32 = 2048; -pub const RTM_F_LOOKUP_TABLE: u32 = 4096; -pub const RTM_F_FIB_MATCH: u32 = 8192; -pub const RTM_F_OFFLOAD: u32 = 16384; -pub const RTM_F_TRAP: u32 = 32768; -pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; -pub const RTNH_F_DEAD: u32 = 1; -pub const RTNH_F_PERVASIVE: u32 = 2; -pub const RTNH_F_ONLINK: u32 = 4; -pub const RTNH_F_OFFLOAD: u32 = 8; -pub const RTNH_F_LINKDOWN: u32 = 16; -pub const RTNH_F_UNRESOLVED: u32 = 32; -pub const RTNH_F_TRAP: u32 = 64; -pub const RTNH_COMPARE_MASK: u32 = 89; -pub const RTNH_ALIGNTO: u32 = 4; -pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; -pub const RTAX_FEATURE_ECN: u32 = 1; -pub const RTAX_FEATURE_SACK: u32 = 2; -pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; -pub const RTAX_FEATURE_ALLFRAG: u32 = 8; -pub const RTAX_FEATURE_MASK: u32 = 15; -pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; -pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; -pub const RTMGRP_LINK: u32 = 1; -pub const RTMGRP_NOTIFY: u32 = 2; -pub const RTMGRP_NEIGH: u32 = 4; -pub const RTMGRP_TC: u32 = 8; -pub const RTMGRP_IPV4_IFADDR: u32 = 16; -pub const RTMGRP_IPV4_MROUTE: u32 = 32; -pub const RTMGRP_IPV4_ROUTE: u32 = 64; -pub const RTMGRP_IPV4_RULE: u32 = 128; -pub const RTMGRP_IPV6_IFADDR: u32 = 256; -pub const RTMGRP_IPV6_MROUTE: u32 = 512; -pub const RTMGRP_IPV6_ROUTE: u32 = 1024; -pub const RTMGRP_IPV6_IFINFO: u32 = 2048; -pub const RTMGRP_DECnet_IFADDR: u32 = 4096; -pub const RTMGRP_DECnet_ROUTE: u32 = 16384; -pub const RTMGRP_IPV6_PREFIX: u32 = 131072; -pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; -pub const RTEXT_FILTER_VF: u32 = 1; -pub const RTEXT_FILTER_BRVLAN: u32 = 2; -pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; -pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; -pub const RTEXT_FILTER_MRP: u32 = 16; -pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; -pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; -pub const RTEXT_FILTER_MST: u32 = 128; -pub type size_t = crate::ctypes::c_uint; -pub type ssize_t = crate::ctypes::c_int; -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; #[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct nlattr { +pub nla_len: __u16, +pub nla_type: __u16, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, +#[derive(Debug, Copy, Clone)] +pub struct nla_bitfield32 { +pub value: __u32, +pub selector: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], +pub struct rtnl_link_stats { +pub rx_packets: __u32, +pub tx_packets: __u32, +pub rx_bytes: __u32, +pub tx_bytes: __u32, +pub rx_errors: __u32, +pub tx_errors: __u32, +pub rx_dropped: __u32, +pub tx_dropped: __u32, +pub multicast: __u32, +pub collisions: __u32, +pub rx_length_errors: __u32, +pub rx_over_errors: __u32, +pub rx_crc_errors: __u32, +pub rx_frame_errors: __u32, +pub rx_fifo_errors: __u32, +pub rx_missed_errors: __u32, +pub tx_aborted_errors: __u32, +pub tx_carrier_errors: __u32, +pub tx_fifo_errors: __u32, +pub tx_heartbeat_errors: __u32, +pub tx_window_errors: __u32, +pub rx_compressed: __u32, +pub tx_compressed: __u32, +pub rx_nohandler: __u32, } -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 32usize], +pub struct rtnl_link_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +pub collisions: __u64, +pub rx_length_errors: __u64, +pub rx_over_errors: __u64, +pub rx_crc_errors: __u64, +pub rx_frame_errors: __u64, +pub rx_fifo_errors: __u64, +pub rx_missed_errors: __u64, +pub tx_aborted_errors: __u64, +pub tx_carrier_errors: __u64, +pub tx_fifo_errors: __u64, +pub tx_heartbeat_errors: __u64, +pub tx_window_errors: __u64, +pub rx_compressed: __u64, +pub tx_compressed: __u64, +pub rx_nohandler: __u64, +pub rx_otherhost_dropped: __u64, } -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_daddr_t = crate::ctypes::c_long; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_old_dev_t = crate::ctypes::c_uint; -pub type __kernel_size_t = crate::ctypes::c_uint; -pub type __kernel_ssize_t = crate::ctypes::c_int; -pub type __kernel_ptrdiff_t = crate::ctypes::c_int; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], +pub struct rtnl_hw_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, } -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_nl { -pub nl_family: __kernel_sa_family_t, -pub nl_pad: crate::ctypes::c_ushort, -pub nl_pid: __u32, -pub nl_groups: __u32, +pub struct rtnl_link_ifmap { +pub mem_start: __u64, +pub mem_end: __u64, +pub base_addr: __u64, +pub irq: __u16, +pub dma: __u8, +pub port: __u8, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsghdr { -pub nlmsg_len: __u32, -pub nlmsg_type: __u16, -pub nlmsg_flags: __u16, -pub nlmsg_seq: __u32, -pub nlmsg_pid: __u32, +pub struct ifla_bridge_id { +pub prio: [__u8; 2usize], +pub addr: [__u8; 6usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsgerr { -pub error: crate::ctypes::c_int, -pub msg: nlmsghdr, +pub struct ifla_cacheinfo { +pub max_reasm_len: __u32, +pub tstamp: __u32, +pub reachable_time: __u32, +pub retrans_time: __u32, } -impl nlmsgerr_attrs { -pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_qos_mapping { +pub from: __u32, +pub to: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tunnel_msg { +pub family: __u8, +pub flags: __u8, +pub reserved2: __u16, +pub ifindex: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vxlan_port_range { +pub low: __be16, +pub high: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_mac { +pub vf: __u32, +pub mac: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_broadcast { +pub broadcast: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan_info { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +pub vlan_proto: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_tx_rate { +pub vf: __u32, +pub rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rate { +pub vf: __u32, +pub min_tx_rate: __u32, +pub max_tx_rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_spoofchk { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_guid { +pub vf: __u32, +pub guid: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_link_state { +pub vf: __u32, +pub link_state: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rss_query_en { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_trust { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_port_vsi { +pub vsi_mgr_id: __u8, +pub vsi_type_id: [__u8; 3usize], +pub vsi_type_version: __u8, +pub pad: [__u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct if_stats_msg { +pub family: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub ifindex: __u32, +pub filter_mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_rmnet_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifaddrmsg { +pub ifa_family: __u8, +pub ifa_prefixlen: __u8, +pub ifa_flags: __u8, +pub ifa_scope: __u8, +pub ifa_index: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifa_cacheinfo { +pub ifa_prefered: __u32, +pub ifa_valid: __u32, +pub cstamp: __u32, +pub tstamp: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndmsg { +pub ndm_family: __u8, +pub ndm_pad1: __u8, +pub ndm_pad2: __u16, +pub ndm_ifindex: __s32, +pub ndm_state: __u16, +pub ndm_flags: __u8, +pub ndm_type: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nda_cacheinfo { +pub ndm_confirmed: __u32, +pub ndm_used: __u32, +pub ndm_updated: __u32, +pub ndm_refcnt: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_stats { +pub ndts_allocs: __u64, +pub ndts_destroys: __u64, +pub ndts_hash_grows: __u64, +pub ndts_res_failed: __u64, +pub ndts_lookups: __u64, +pub ndts_hits: __u64, +pub ndts_rcv_probes_mcast: __u64, +pub ndts_rcv_probes_ucast: __u64, +pub ndts_periodic_gc_runs: __u64, +pub ndts_forced_gc_runs: __u64, +pub ndts_table_fulls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndtmsg { +pub ndtm_family: __u8, +pub ndtm_pad1: __u8, +pub ndtm_pad2: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_config { +pub ndtc_key_len: __u16, +pub ndtc_entry_size: __u16, +pub ndtc_entries: __u32, +pub ndtc_last_flush: __u32, +pub ndtc_last_rand: __u32, +pub ndtc_hash_rnd: __u32, +pub ndtc_hash_mask: __u32, +pub ndtc_hash_chain_gc: __u32, +pub ndtc_proxy_qlen: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtattr { +pub rta_len: crate::ctypes::c_ushort, +pub rta_type: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtmsg { +pub rtm_family: crate::ctypes::c_uchar, +pub rtm_dst_len: crate::ctypes::c_uchar, +pub rtm_src_len: crate::ctypes::c_uchar, +pub rtm_tos: crate::ctypes::c_uchar, +pub rtm_table: crate::ctypes::c_uchar, +pub rtm_protocol: crate::ctypes::c_uchar, +pub rtm_scope: crate::ctypes::c_uchar, +pub rtm_type: crate::ctypes::c_uchar, +pub rtm_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnexthop { +pub rtnh_len: crate::ctypes::c_ushort, +pub rtnh_flags: crate::ctypes::c_uchar, +pub rtnh_hops: crate::ctypes::c_uchar, +pub rtnh_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug)] +pub struct rtvia { +pub rtvia_family: __kernel_sa_family_t, +pub rtvia_addr: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_cacheinfo { +pub rta_clntref: __u32, +pub rta_lastuse: __u32, +pub rta_expires: __s32, +pub rta_error: __u32, +pub rta_used: __u32, +pub rta_id: __u32, +pub rta_ts: __u32, +pub rta_tsage: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rta_session { +pub proto: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub u: rta_session__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { +pub sport: __u16, +pub dport: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { +pub type_: __u8, +pub code: __u8, +pub ident: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_mfc_stats { +pub mfcs_packets: __u64, +pub mfcs_bytes: __u64, +pub mfcs_wrong_if: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtgenmsg { +pub rtgen_family: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifinfomsg { +pub ifi_family: crate::ctypes::c_uchar, +pub __ifi_pad: crate::ctypes::c_uchar, +pub ifi_type: crate::ctypes::c_ushort, +pub ifi_index: crate::ctypes::c_int, +pub ifi_flags: crate::ctypes::c_uint, +pub ifi_change: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefixmsg { +pub prefix_family: crate::ctypes::c_uchar, +pub prefix_pad1: crate::ctypes::c_uchar, +pub prefix_pad2: crate::ctypes::c_ushort, +pub prefix_ifindex: crate::ctypes::c_int, +pub prefix_type: crate::ctypes::c_uchar, +pub prefix_len: crate::ctypes::c_uchar, +pub prefix_flags: crate::ctypes::c_uchar, +pub prefix_pad3: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefix_cacheinfo { +pub preferred_time: __u32, +pub valid_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcmsg { +pub tcm_family: crate::ctypes::c_uchar, +pub tcm__pad1: crate::ctypes::c_uchar, +pub tcm__pad2: crate::ctypes::c_ushort, +pub tcm_ifindex: crate::ctypes::c_int, +pub tcm_handle: __u32, +pub tcm_parent: __u32, +pub tcm_info: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nduseroptmsg { +pub nduseropt_family: crate::ctypes::c_uchar, +pub nduseropt_pad1: crate::ctypes::c_uchar, +pub nduseropt_opts_len: crate::ctypes::c_ushort, +pub nduseropt_ifindex: crate::ctypes::c_int, +pub nduseropt_icmp_type: __u8, +pub nduseropt_icmp_code: __u8, +pub nduseropt_pad2: crate::ctypes::c_ushort, +pub nduseropt_pad3: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcamsg { +pub tca_family: crate::ctypes::c_uchar, +pub tca__pad1: crate::ctypes::c_uchar, +pub tca__pad2: crate::ctypes::c_ushort, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const NETLINK_ROUTE: u32 = 0; +pub const NETLINK_UNUSED: u32 = 1; +pub const NETLINK_USERSOCK: u32 = 2; +pub const NETLINK_FIREWALL: u32 = 3; +pub const NETLINK_SOCK_DIAG: u32 = 4; +pub const NETLINK_NFLOG: u32 = 5; +pub const NETLINK_XFRM: u32 = 6; +pub const NETLINK_SELINUX: u32 = 7; +pub const NETLINK_ISCSI: u32 = 8; +pub const NETLINK_AUDIT: u32 = 9; +pub const NETLINK_FIB_LOOKUP: u32 = 10; +pub const NETLINK_CONNECTOR: u32 = 11; +pub const NETLINK_NETFILTER: u32 = 12; +pub const NETLINK_IP6_FW: u32 = 13; +pub const NETLINK_DNRTMSG: u32 = 14; +pub const NETLINK_KOBJECT_UEVENT: u32 = 15; +pub const NETLINK_GENERIC: u32 = 16; +pub const NETLINK_SCSITRANSPORT: u32 = 18; +pub const NETLINK_ECRYPTFS: u32 = 19; +pub const NETLINK_RDMA: u32 = 20; +pub const NETLINK_CRYPTO: u32 = 21; +pub const NETLINK_SMC: u32 = 22; +pub const NETLINK_INET_DIAG: u32 = 4; +pub const MAX_LINKS: u32 = 32; +pub const NLM_F_REQUEST: u32 = 1; +pub const NLM_F_MULTI: u32 = 2; +pub const NLM_F_ACK: u32 = 4; +pub const NLM_F_ECHO: u32 = 8; +pub const NLM_F_DUMP_INTR: u32 = 16; +pub const NLM_F_DUMP_FILTERED: u32 = 32; +pub const NLM_F_ROOT: u32 = 256; +pub const NLM_F_MATCH: u32 = 512; +pub const NLM_F_ATOMIC: u32 = 1024; +pub const NLM_F_DUMP: u32 = 768; +pub const NLM_F_REPLACE: u32 = 256; +pub const NLM_F_EXCL: u32 = 512; +pub const NLM_F_CREATE: u32 = 1024; +pub const NLM_F_APPEND: u32 = 2048; +pub const NLM_F_NONREC: u32 = 256; +pub const NLM_F_BULK: u32 = 512; +pub const NLM_F_CAPPED: u32 = 256; +pub const NLM_F_ACK_TLVS: u32 = 512; +pub const NLMSG_ALIGNTO: u32 = 4; +pub const NLMSG_NOOP: u32 = 1; +pub const NLMSG_ERROR: u32 = 2; +pub const NLMSG_DONE: u32 = 3; +pub const NLMSG_OVERRUN: u32 = 4; +pub const NLMSG_MIN_TYPE: u32 = 16; +pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; +pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; +pub const NETLINK_PKTINFO: u32 = 3; +pub const NETLINK_BROADCAST_ERROR: u32 = 4; +pub const NETLINK_NO_ENOBUFS: u32 = 5; +pub const NETLINK_RX_RING: u32 = 6; +pub const NETLINK_TX_RING: u32 = 7; +pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; +pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; +pub const NETLINK_CAP_ACK: u32 = 10; +pub const NETLINK_EXT_ACK: u32 = 11; +pub const NETLINK_GET_STRICT_CHK: u32 = 12; +pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; +pub const NET_MAJOR: u32 = 36; +pub const NLA_F_NESTED: u32 = 32768; +pub const NLA_F_NET_BYTEORDER: u32 = 16384; +pub const NLA_TYPE_MASK: i32 = -49153; +pub const NLA_ALIGNTO: u32 = 4; +pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; +pub const MACVLAN_FLAG_NODST: u32 = 2; +pub const IPVLAN_F_PRIVATE: u32 = 1; +pub const IPVLAN_F_VEPA: u32 = 2; +pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; +pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; +pub const MAX_VLAN_LIST_LEN: u32 = 1; +pub const PORT_PROFILE_MAX: u32 = 40; +pub const PORT_UUID_MAX: u32 = 16; +pub const PORT_SELF_VF: i32 = -1; +pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; +pub const XDP_FLAGS_SKB_MODE: u32 = 2; +pub const XDP_FLAGS_DRV_MODE: u32 = 4; +pub const XDP_FLAGS_HW_MODE: u32 = 8; +pub const XDP_FLAGS_REPLACE: u32 = 16; +pub const XDP_FLAGS_MODES: u32 = 14; +pub const XDP_FLAGS_MASK: u32 = 31; +pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; +pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; +pub const IFA_F_SECONDARY: u32 = 1; +pub const IFA_F_TEMPORARY: u32 = 1; +pub const IFA_F_NODAD: u32 = 2; +pub const IFA_F_OPTIMISTIC: u32 = 4; +pub const IFA_F_DADFAILED: u32 = 8; +pub const IFA_F_HOMEADDRESS: u32 = 16; +pub const IFA_F_DEPRECATED: u32 = 32; +pub const IFA_F_TENTATIVE: u32 = 64; +pub const IFA_F_PERMANENT: u32 = 128; +pub const IFA_F_MANAGETEMPADDR: u32 = 256; +pub const IFA_F_NOPREFIXROUTE: u32 = 512; +pub const IFA_F_MCAUTOJOIN: u32 = 1024; +pub const IFA_F_STABLE_PRIVACY: u32 = 2048; +pub const IFAPROT_UNSPEC: u32 = 0; +pub const IFAPROT_KERNEL_LO: u32 = 1; +pub const IFAPROT_KERNEL_RA: u32 = 2; +pub const IFAPROT_KERNEL_LL: u32 = 3; +pub const NTF_USE: u32 = 1; +pub const NTF_SELF: u32 = 2; +pub const NTF_MASTER: u32 = 4; +pub const NTF_PROXY: u32 = 8; +pub const NTF_EXT_LEARNED: u32 = 16; +pub const NTF_OFFLOADED: u32 = 32; +pub const NTF_STICKY: u32 = 64; +pub const NTF_ROUTER: u32 = 128; +pub const NTF_EXT_MANAGED: u32 = 1; +pub const NTF_EXT_LOCKED: u32 = 2; +pub const NUD_INCOMPLETE: u32 = 1; +pub const NUD_REACHABLE: u32 = 2; +pub const NUD_STALE: u32 = 4; +pub const NUD_DELAY: u32 = 8; +pub const NUD_PROBE: u32 = 16; +pub const NUD_FAILED: u32 = 32; +pub const NUD_NOARP: u32 = 64; +pub const NUD_PERMANENT: u32 = 128; +pub const NUD_NONE: u32 = 0; +pub const RTNL_FAMILY_IPMR: u32 = 128; +pub const RTNL_FAMILY_IP6MR: u32 = 129; +pub const RTNL_FAMILY_MAX: u32 = 129; +pub const RTA_ALIGNTO: u32 = 4; +pub const RTPROT_UNSPEC: u32 = 0; +pub const RTPROT_REDIRECT: u32 = 1; +pub const RTPROT_KERNEL: u32 = 2; +pub const RTPROT_BOOT: u32 = 3; +pub const RTPROT_STATIC: u32 = 4; +pub const RTPROT_GATED: u32 = 8; +pub const RTPROT_RA: u32 = 9; +pub const RTPROT_MRT: u32 = 10; +pub const RTPROT_ZEBRA: u32 = 11; +pub const RTPROT_BIRD: u32 = 12; +pub const RTPROT_DNROUTED: u32 = 13; +pub const RTPROT_XORP: u32 = 14; +pub const RTPROT_NTK: u32 = 15; +pub const RTPROT_DHCP: u32 = 16; +pub const RTPROT_MROUTED: u32 = 17; +pub const RTPROT_KEEPALIVED: u32 = 18; +pub const RTPROT_BABEL: u32 = 42; +pub const RTPROT_OPENR: u32 = 99; +pub const RTPROT_BGP: u32 = 186; +pub const RTPROT_ISIS: u32 = 187; +pub const RTPROT_OSPF: u32 = 188; +pub const RTPROT_RIP: u32 = 189; +pub const RTPROT_EIGRP: u32 = 192; +pub const RTM_F_NOTIFY: u32 = 256; +pub const RTM_F_CLONED: u32 = 512; +pub const RTM_F_EQUALIZE: u32 = 1024; +pub const RTM_F_PREFIX: u32 = 2048; +pub const RTM_F_LOOKUP_TABLE: u32 = 4096; +pub const RTM_F_FIB_MATCH: u32 = 8192; +pub const RTM_F_OFFLOAD: u32 = 16384; +pub const RTM_F_TRAP: u32 = 32768; +pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; +pub const RTNH_F_DEAD: u32 = 1; +pub const RTNH_F_PERVASIVE: u32 = 2; +pub const RTNH_F_ONLINK: u32 = 4; +pub const RTNH_F_OFFLOAD: u32 = 8; +pub const RTNH_F_LINKDOWN: u32 = 16; +pub const RTNH_F_UNRESOLVED: u32 = 32; +pub const RTNH_F_TRAP: u32 = 64; +pub const RTNH_COMPARE_MASK: u32 = 89; +pub const RTNH_ALIGNTO: u32 = 4; +pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; +pub const RTAX_FEATURE_ECN: u32 = 1; +pub const RTAX_FEATURE_SACK: u32 = 2; +pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; +pub const RTAX_FEATURE_ALLFRAG: u32 = 8; +pub const RTAX_FEATURE_MASK: u32 = 15; +pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; +pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; +pub const RTMGRP_LINK: u32 = 1; +pub const RTMGRP_NOTIFY: u32 = 2; +pub const RTMGRP_NEIGH: u32 = 4; +pub const RTMGRP_TC: u32 = 8; +pub const RTMGRP_IPV4_IFADDR: u32 = 16; +pub const RTMGRP_IPV4_MROUTE: u32 = 32; +pub const RTMGRP_IPV4_ROUTE: u32 = 64; +pub const RTMGRP_IPV4_RULE: u32 = 128; +pub const RTMGRP_IPV6_IFADDR: u32 = 256; +pub const RTMGRP_IPV6_MROUTE: u32 = 512; +pub const RTMGRP_IPV6_ROUTE: u32 = 1024; +pub const RTMGRP_IPV6_IFINFO: u32 = 2048; +pub const RTMGRP_DECnet_IFADDR: u32 = 4096; +pub const RTMGRP_DECnet_ROUTE: u32 = 16384; +pub const RTMGRP_IPV6_PREFIX: u32 = 131072; +pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; +pub const RTEXT_FILTER_VF: u32 = 1; +pub const RTEXT_FILTER_BRVLAN: u32 = 2; +pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; +pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; +pub const RTEXT_FILTER_MRP: u32 = 16; +pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; +pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; +pub const RTEXT_FILTER_MST: u32 = 128; +pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; +pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; +pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; +pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; +pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; +pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; +pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; +pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; +pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; +pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; +pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; +pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; +pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; +pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; +pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; +pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; +pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; +pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; +pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; +pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; +pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; +pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; +pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; +pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; +pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; +pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; +pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; +pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; +pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; +pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; +pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; +pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; +pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; +pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; +pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; +pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; +pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; +pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; +pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; +pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; +pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; +pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; +pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; +pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; +pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; +pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; +pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; +pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; +pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; +pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; +pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; +pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; +pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; +pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; +pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; +pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; +pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; +pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; +pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; +pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; +pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; +pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; +pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; +pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; +pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; +pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; +pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; +pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; +pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; +pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; +pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; +pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; +pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; +pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; +pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; +pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; +pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; +pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; +pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; +pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; +pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; +pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; +pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; +pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; +pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; +pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; +pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; +pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; +pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; +pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; +pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; +pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; +pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; +pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; +pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; +pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; +pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; +pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; +pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; +pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; +pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; +pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; +pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; +pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; +pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; +pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; +pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; +pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; +pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; +pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; +pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; +pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; +pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; +pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; +pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; +pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; +pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; +pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; +pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; +pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; +pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; +pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; +pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; +pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; +pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; +pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; +pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; +pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; +pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; +pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; +pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; +pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; +pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; +pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; +pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; +pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; +pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; +pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; +pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; +pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; +pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; +pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; +pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; +pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; +pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; +pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; +pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; +pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; +pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; +pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; +pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; +pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; +pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; +pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; +pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; +pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; +pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; +pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; +pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; +pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; +pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; +pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; +pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; +pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; +pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; +pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; +pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; +pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; +pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; +pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; +pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; +pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; +pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; +pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; +pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; +pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; +pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; +pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; +pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; +pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; +pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; +pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; +pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; +pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; +pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; +pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; +pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; +pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; +pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; +pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; +pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; +pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; +pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; +pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; +pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; +pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; +pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; +pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; +pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; +pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; +pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; +pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; +pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; +pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; +pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; +pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; +pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; +pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; +pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; +pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; +pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; +pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; +pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; +pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; +pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; +pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; +pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; +pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; +pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; +pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; +pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; +pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; +pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; +pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; +pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; +pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; +pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; +pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; +pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; +pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; +pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; +pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; +pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; +pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; +pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; +pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; +pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; +pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; +pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; +pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; +pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; +pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; +pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; +pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; +pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; +pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; +pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; +pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; +pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; +pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; +pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; +pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; +pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; +pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; +pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; +pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; +pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; +pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; +pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; +pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; +pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; +pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; +pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; +pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; +pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; +pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; +pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; +pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; +pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; +pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; +pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; +pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; +pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; +pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; +pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; +pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; +pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; +pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; +pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; +pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; +pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; +pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; +pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; +pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; +pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; +pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; +pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; +pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; +pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; +pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; +pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; +pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; +pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; +pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; +pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; +pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; +pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; +pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; +pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; +pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; +pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; +pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; +pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; +pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; +pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; +pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; +pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; +pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; +pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; +pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; +pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; +pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; +pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; +pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; +pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; +pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; +pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; +pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; +pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; +pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; +pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; +pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; +pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; +pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; +pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; +pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; +pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; +pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; +pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; +pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; +pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; +pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; +pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; +pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; +pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; +pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; +pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; +pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; +pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; +pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; +pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; +pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; +pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; +pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; +pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; +pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; +pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; +pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; +pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; +pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; +pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; +pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; +pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; +pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; +pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; +pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; +pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; +pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; +pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; +pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; +pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; +pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; +pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; +pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; +pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; +pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; +pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; +pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; +pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; +pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; +pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; +pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; +pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; +pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; +pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; +pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; +pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; +pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; +pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; +pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; +pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; +pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; +pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; +pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; +pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; +pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; +pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; +pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; +pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; +pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; +pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; +pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; +pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; +pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; +pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; +pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; +pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; +pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; +pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; +pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; +pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; +pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; +pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; +pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; +pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; +pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; +pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; +pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; +pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; +pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; +pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; +pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; +pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; +pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; +pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; +pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; +pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; +pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; +pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; +pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; +pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; +pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; +pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; +pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; +pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; +pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; +pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; +pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; +pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; +pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; +pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; +pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; +pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; +pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; +pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; +pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; +pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; +pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; +pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; +pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; +pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; +pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; +pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; +pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; +pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; +pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; +pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; +pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; +pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; +pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; +pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; +pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; +pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; +pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; +pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; +pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; +pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; +pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; +pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; +pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; +pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; +pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; +pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; +pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; +pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; +pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; +pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; +pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; +pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; +pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; +pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; +pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; +pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; +pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; +pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; +pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; +pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; +pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; +pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; +pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; +pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; +pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; +pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; +pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; +pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; +pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; +pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; +pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; +pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; +pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; +pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; +pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; +pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; +pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; +pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; +pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; +pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; +pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; +pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; +pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; +pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; +pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; +pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; +pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; +pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; +pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; +pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; +pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; +pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; +pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; +pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; +pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; +pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; +pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; +pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; +pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; +pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; +pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; +pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; +pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; +pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; +pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; +pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; +pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; +pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; +pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; +pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; +pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; +pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; +pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; +pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; +pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; +pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; +pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; +pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; +pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; +pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; +pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; +pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; +pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; +pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; +pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; +pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; +pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; +pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; +pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; +pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; +pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; +pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; +pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; +pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; +pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; +pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; +pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; +pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; +pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; +pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; +pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; +pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; +pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; +pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; +pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; +pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; +pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; +pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; +pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; +pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; +pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; +pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; +pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; +pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; +pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; +pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; +pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; +pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; +pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; +pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; +pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; +pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; +pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; +pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; +pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; +pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; +pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; +pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; +pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; +pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; +pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; +pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; +pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; +pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; +pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; +pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; +pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; +pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; +pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; +pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; +pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; +pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; +pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; +pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; +pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; +pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; +pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; +pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; +pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; +pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; +pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; +pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; +pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; +pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; +pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; +pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; +pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; +pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; +pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; +pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; +pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; +pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; +pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; +pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; +pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; +pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; +pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; +pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; +pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; +pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; +pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; +pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; +pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; +pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; +pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; +pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; +pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; +pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; +pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; +pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; +pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; +pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; +pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; +pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; +pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; +pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; +pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; +pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; +pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; +pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; +pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; +pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; +pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; +pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; +pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; +pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; +pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; +pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; +pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; +pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; +pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; +pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; +pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; +pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; +pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; +pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; +pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; +pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; +pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; +pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; +pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; +pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; +pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; +pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; +pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; +pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; +pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; +pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; +pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; +pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; +pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; +pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; +pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; +pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; +pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; +pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; +pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; +pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; +pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; +pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; +pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; +pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; +pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; +pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; +pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; +pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; +pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; +pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; +pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; +pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; +pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; +pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; +pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; +pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; +pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; +pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; +pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -374,29 +1510,6 @@ NLMSGERR_ATTR_MISS_NEST = 6, __NLMSGERR_ATTR_MAX = 7, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_pktinfo { -pub group: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_req { -pub nm_block_size: crate::ctypes::c_uint, -pub nm_block_nr: crate::ctypes::c_uint, -pub nm_frame_size: crate::ctypes::c_uint, -pub nm_frame_nr: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_hdr { -pub nm_status: crate::ctypes::c_uint, -pub nm_len: crate::ctypes::c_uint, -pub nm_group: __u32, -pub nm_pid: __u32, -pub nm_uid: __u32, -pub nm_gid: __u32, -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -407,8 +1520,6 @@ NL_MMAP_STATUS_COPY = 3, NL_MMAP_STATUS_SKIP = 4, } -pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; -pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -416,208 +1527,46 @@ NETLINK_UNCONNECTED = 0, NETLINK_CONNECTED = 1, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nlattr { -pub nla_len: __u16, -pub nla_type: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nla_bitfield32 { -pub value: __u32, -pub selector: __u32, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_attribute_type { -NL_ATTR_TYPE_INVALID = 0, -NL_ATTR_TYPE_FLAG = 1, -NL_ATTR_TYPE_U8 = 2, -NL_ATTR_TYPE_U16 = 3, -NL_ATTR_TYPE_U32 = 4, -NL_ATTR_TYPE_U64 = 5, -NL_ATTR_TYPE_S8 = 6, -NL_ATTR_TYPE_S16 = 7, -NL_ATTR_TYPE_S32 = 8, -NL_ATTR_TYPE_S64 = 9, -NL_ATTR_TYPE_BINARY = 10, -NL_ATTR_TYPE_STRING = 11, -NL_ATTR_TYPE_NUL_STRING = 12, -NL_ATTR_TYPE_NESTED = 13, -NL_ATTR_TYPE_NESTED_ARRAY = 14, -NL_ATTR_TYPE_BITFIELD32 = 15, -} -impl netlink_policy_type_attr { -pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_policy_type_attr { -NL_POLICY_TYPE_ATTR_UNSPEC = 0, -NL_POLICY_TYPE_ATTR_TYPE = 1, -NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, -NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, -NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, -NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, -NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, -NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, -NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, -NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, -NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, -NL_POLICY_TYPE_ATTR_PAD = 11, -NL_POLICY_TYPE_ATTR_MASK = 12, -__NL_POLICY_TYPE_ATTR_MAX = 13, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats { -pub rx_packets: __u32, -pub tx_packets: __u32, -pub rx_bytes: __u32, -pub tx_bytes: __u32, -pub rx_errors: __u32, -pub tx_errors: __u32, -pub rx_dropped: __u32, -pub tx_dropped: __u32, -pub multicast: __u32, -pub collisions: __u32, -pub rx_length_errors: __u32, -pub rx_over_errors: __u32, -pub rx_crc_errors: __u32, -pub rx_frame_errors: __u32, -pub rx_fifo_errors: __u32, -pub rx_missed_errors: __u32, -pub tx_aborted_errors: __u32, -pub tx_carrier_errors: __u32, -pub tx_fifo_errors: __u32, -pub tx_heartbeat_errors: __u32, -pub tx_window_errors: __u32, -pub rx_compressed: __u32, -pub tx_compressed: __u32, -pub rx_nohandler: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, -pub collisions: __u64, -pub rx_length_errors: __u64, -pub rx_over_errors: __u64, -pub rx_crc_errors: __u64, -pub rx_frame_errors: __u64, -pub rx_fifo_errors: __u64, -pub rx_missed_errors: __u64, -pub tx_aborted_errors: __u64, -pub tx_carrier_errors: __u64, -pub tx_fifo_errors: __u64, -pub tx_heartbeat_errors: __u64, -pub tx_window_errors: __u64, -pub rx_compressed: __u64, -pub tx_compressed: __u64, -pub rx_nohandler: __u64, -pub rx_otherhost_dropped: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_hw_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, +pub enum netlink_attribute_type { +NL_ATTR_TYPE_INVALID = 0, +NL_ATTR_TYPE_FLAG = 1, +NL_ATTR_TYPE_U8 = 2, +NL_ATTR_TYPE_U16 = 3, +NL_ATTR_TYPE_U32 = 4, +NL_ATTR_TYPE_U64 = 5, +NL_ATTR_TYPE_S8 = 6, +NL_ATTR_TYPE_S16 = 7, +NL_ATTR_TYPE_S32 = 8, +NL_ATTR_TYPE_S64 = 9, +NL_ATTR_TYPE_BINARY = 10, +NL_ATTR_TYPE_STRING = 11, +NL_ATTR_TYPE_NUL_STRING = 12, +NL_ATTR_TYPE_NESTED = 13, +NL_ATTR_TYPE_NESTED_ARRAY = 14, +NL_ATTR_TYPE_BITFIELD32 = 15, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_ifmap { -pub mem_start: __u64, -pub mem_end: __u64, -pub base_addr: __u64, -pub irq: __u16, -pub dma: __u8, -pub port: __u8, +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_policy_type_attr { +NL_POLICY_TYPE_ATTR_UNSPEC = 0, +NL_POLICY_TYPE_ATTR_TYPE = 1, +NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, +NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, +NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, +NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, +NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, +NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, +NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, +NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, +NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, +NL_POLICY_TYPE_ATTR_PAD = 11, +NL_POLICY_TYPE_ATTR_MASK = 12, +__NL_POLICY_TYPE_ATTR_MAX = 13, } -pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; -pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; -pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; -pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; -pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; -pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; -pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; -pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; -pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; -pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; -pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; -pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; -pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; -pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; -pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; -pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; -pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; -pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; -pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; -pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; -pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; -pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; -pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; -pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; -pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; -pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; -pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; -pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; -pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; -pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; -pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; -pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; -pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; -pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; -pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; -pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; -pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; -pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; -pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; -pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; -pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; -pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; -pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; -pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; -pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; -pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; -pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; -pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; -pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; -pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; -pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; -pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; -pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; -pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; -pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; -pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; -pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; -pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; -pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; -pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; -pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; -pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; -pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; -pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; -pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -689,11 +1638,6 @@ IFLA_GRO_IPV4_MAX_SIZE = 64, __IFLA_MAX = 65, } -pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; -pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; -pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; -pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; -pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -703,9 +1647,6 @@ IFLA_PROTO_DOWN_REASON_VALUE = 2, __IFLA_PROTO_DOWN_REASON_CNT = 3, } -pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; -pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; -pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -714,17 +1655,6 @@ IFLA_INET_CONF = 1, __IFLA_INET_MAX = 2, } -pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; -pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; -pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; -pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; -pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; -pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; -pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; -pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; -pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; -pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; -pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -750,55 +1680,6 @@ IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, IN6_ADDR_GEN_MODE_RANDOM = 3, } -pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; -pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; -pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; -pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; -pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; -pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; -pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; -pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; -pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; -pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; -pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; -pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; -pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; -pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; -pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; -pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; -pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; -pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; -pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; -pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; -pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; -pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; -pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; -pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; -pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; -pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; -pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; -pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; -pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; -pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; -pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; -pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; -pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; -pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; -pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; -pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; -pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; -pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; -pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; -pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; -pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; -pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; -pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; -pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; -pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; -pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; -pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; -pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; -pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -835,83 +1716,31 @@ IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29, IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30, IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, -IFLA_BR_MCAST_QUERIER_INTVL = 32, -IFLA_BR_MCAST_QUERY_INTVL = 33, -IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, -IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, -IFLA_BR_NF_CALL_IPTABLES = 36, -IFLA_BR_NF_CALL_IP6TABLES = 37, -IFLA_BR_NF_CALL_ARPTABLES = 38, -IFLA_BR_VLAN_DEFAULT_PVID = 39, -IFLA_BR_PAD = 40, -IFLA_BR_VLAN_STATS_ENABLED = 41, -IFLA_BR_MCAST_STATS_ENABLED = 42, -IFLA_BR_MCAST_IGMP_VERSION = 43, -IFLA_BR_MCAST_MLD_VERSION = 44, -IFLA_BR_VLAN_STATS_PER_PORT = 45, -IFLA_BR_MULTI_BOOLOPT = 46, -IFLA_BR_MCAST_QUERIER_STATE = 47, -__IFLA_BR_MAX = 48, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_bridge_id { -pub prio: [__u8; 2usize], -pub addr: [__u8; 6usize], -} -pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; -pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -BRIDGE_MODE_UNSPEC = 0, -BRIDGE_MODE_HAIRPIN = 1, -} -pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; -pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; -pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; -pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; -pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; -pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; -pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; -pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; -pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; -pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; -pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; -pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; -pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; -pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; -pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; -pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; -pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; -pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; -pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; -pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; -pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; -pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; -pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; -pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; -pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; -pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; -pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; -pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; -pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; -pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; -pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; -pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; -pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; -pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; -pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; -pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; -pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; -pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; -pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; -pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; -pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; -pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +IFLA_BR_MCAST_QUERIER_INTVL = 32, +IFLA_BR_MCAST_QUERY_INTVL = 33, +IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, +IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, +IFLA_BR_NF_CALL_IPTABLES = 36, +IFLA_BR_NF_CALL_IP6TABLES = 37, +IFLA_BR_NF_CALL_ARPTABLES = 38, +IFLA_BR_VLAN_DEFAULT_PVID = 39, +IFLA_BR_PAD = 40, +IFLA_BR_VLAN_STATS_ENABLED = 41, +IFLA_BR_MCAST_STATS_ENABLED = 42, +IFLA_BR_MCAST_IGMP_VERSION = 43, +IFLA_BR_MCAST_MLD_VERSION = 44, +IFLA_BR_VLAN_STATS_PER_PORT = 45, +IFLA_BR_MULTI_BOOLOPT = 46, +IFLA_BR_MCAST_QUERIER_STATE = 47, +__IFLA_BR_MAX = 48, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +BRIDGE_MODE_UNSPEC = 0, +BRIDGE_MODE_HAIRPIN = 1, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -961,21 +1790,6 @@ IFLA_BRPORT_MCAST_MAX_GROUPS = 42, __IFLA_BRPORT_MAX = 43, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_cacheinfo { -pub max_reasm_len: __u32, -pub tstamp: __u32, -pub reachable_time: __u32, -pub retrans_time: __u32, -} -pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; -pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; -pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; -pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; -pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; -pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; -pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -988,13 +1802,6 @@ IFLA_INFO_SLAVE_DATA = 5, __IFLA_INFO_MAX = 6, } -pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; -pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; -pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; -pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; -pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; -pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; -pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1007,15 +1814,6 @@ IFLA_VLAN_PROTOCOL = 5, __IFLA_VLAN_MAX = 6, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; -pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; -pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1024,22 +1822,6 @@ IFLA_VLAN_QOS_MAPPING = 1, __IFLA_VLAN_QOS_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_qos_mapping { -pub from: __u32, -pub to: __u32, -} -pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; -pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; -pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; -pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; -pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; -pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; -pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; -pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; -pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; -pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1074,9 +1856,6 @@ MACVLAN_MACADDR_FLUSH = 2, MACVLAN_MACADDR_SET = 3, } -pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; -pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; -pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1085,9 +1864,6 @@ IFLA_VRF_TABLE = 1, __IFLA_VRF_MAX = 2, } -pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; -pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; -pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1096,23 +1872,6 @@ IFLA_VRF_PORT_TABLE = 1, __IFLA_VRF_PORT_MAX = 2, } -pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; -pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; -pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; -pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; -pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; -pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; -pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; -pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; -pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; -pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; -pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; -pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; -pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; -pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; -pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; -pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; -pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1135,11 +1894,6 @@ IFLA_MACSEC_OFFLOAD = 15, __IFLA_MACSEC_MAX = 16, } -pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; -pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; -pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; -pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; -pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1150,9 +1904,6 @@ IFLA_XFRM_COLLECT_METADATA = 3, __IFLA_XFRM_MAX = 4, } -impl macsec_validation_type { -pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1162,9 +1913,6 @@ MACSEC_VALIDATE_STRICT = 2, __MACSEC_VALIDATE_END = 3, } -impl macsec_offload { -pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1174,10 +1922,6 @@ MACSEC_OFFLOAD_MAC = 2, __MACSEC_OFFLOAD_END = 3, } -pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; -pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; -pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; -pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1196,25 +1940,6 @@ IPVLAN_MODE_L3S = 2, IPVLAN_MODE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tunnel_msg { -pub family: __u8, -pub flags: __u8, -pub reserved2: __u16, -pub ifindex: __u32, -} -pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; -pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; -pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; -pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; -pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; -pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; -pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; -pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; -pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1231,13 +1956,6 @@ VNIFILTER_ENTRY_STATS_PAD = 9, __VNIFILTER_ENTRY_STATS_MAX = 10, } -pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; -pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; -pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; -pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; -pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; -pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1250,9 +1968,6 @@ VXLAN_VNIFILTER_ENTRY_STATS = 5, __VXLAN_VNIFILTER_ENTRY_MAX = 6, } -pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; -pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1261,38 +1976,6 @@ VXLAN_VNIFILTER_ENTRY = 1, __VXLAN_VNIFILTER_MAX = 2, } -pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; -pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; -pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; -pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; -pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; -pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; -pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; -pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; -pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; -pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; -pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; -pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; -pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; -pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; -pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; -pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; -pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; -pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; -pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; -pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; -pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; -pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; -pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; -pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; -pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; -pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; -pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; -pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; -pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; -pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1330,15 +2013,6 @@ IFLA_VXLAN_VNIFILTER = 30, __IFLA_VXLAN_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vxlan_port_range { -pub low: __be16, -pub high: __be16, -} -impl ifla_vxlan_df { -pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1348,22 +2022,6 @@ VXLAN_DF_INHERIT = 2, __VXLAN_DF_END = 3, } -pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; -pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; -pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; -pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; -pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; -pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; -pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; -pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; -pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; -pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; -pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; -pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; -pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; -pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1385,9 +2043,6 @@ IFLA_GENEVE_INNER_PROTO_INHERIT = 14, __IFLA_GENEVE_MAX = 15, } -impl ifla_geneve_df { -pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1397,12 +2052,6 @@ GENEVE_DF_INHERIT = 2, __GENEVE_DF_END = 3, } -pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; -pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; -pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; -pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; -pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; -pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1414,9 +2063,6 @@ IFLA_BAREUDP_MULTIPROTO_MODE = 4, __IFLA_BAREUDP_MAX = 5, } -pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; -pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; -pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1432,60 +2078,19 @@ GTP_ROLE_GGSN = 0, GTP_ROLE_SGSN = 1, } -pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; -pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; -pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; -pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; -pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; -pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; -pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; -pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub enum _bindgen_ty_25 { IFLA_GTP_UNSPEC = 0, IFLA_GTP_FD0 = 1, -IFLA_GTP_FD1 = 2, -IFLA_GTP_PDP_HASHSIZE = 3, -IFLA_GTP_ROLE = 4, -IFLA_GTP_CREATE_SOCKETS = 5, -IFLA_GTP_RESTART_COUNT = 6, -__IFLA_GTP_MAX = 7, -} -pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; -pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; -pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; -pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; -pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; -pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; -pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; -pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; -pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; -pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; -pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; -pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; -pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; -pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; -pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; -pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; -pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; -pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; -pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; -pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; -pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; -pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; -pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; -pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; -pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; -pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; -pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; -pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; -pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; -pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; -pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; -pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; -pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +IFLA_GTP_FD1 = 2, +IFLA_GTP_PDP_HASHSIZE = 3, +IFLA_GTP_ROLE = 4, +IFLA_GTP_CREATE_SOCKETS = 5, +IFLA_GTP_RESTART_COUNT = 6, +__IFLA_GTP_MAX = 7, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1524,13 +2129,6 @@ IFLA_BOND_NS_IP6_TARGET = 31, __IFLA_BOND_MAX = 32, } -pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; -pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; -pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; -pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; -pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1543,17 +2141,6 @@ IFLA_BOND_AD_INFO_PARTNER_MAC = 5, __IFLA_BOND_AD_INFO_MAX = 6, } -pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; -pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; -pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; -pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; -pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; -pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; -pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; -pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; -pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1570,9 +2157,6 @@ IFLA_BOND_SLAVE_PRIO = 9, __IFLA_BOND_SLAVE_MAX = 10, } -pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; -pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; -pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1581,21 +2165,6 @@ IFLA_VF_INFO = 1, __IFLA_VF_INFO_MAX = 2, } -pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; -pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; -pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; -pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; -pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; -pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; -pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; -pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; -pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; -pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; -pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; -pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; -pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; -pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; -pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1616,27 +2185,6 @@ IFLA_VF_BROADCAST = 13, __IFLA_VF_MAX = 14, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_mac { -pub vf: __u32, -pub mac: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_broadcast { -pub broadcast: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -} -pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; -pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; -pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1645,43 +2193,6 @@ IFLA_VF_VLAN_INFO = 1, __IFLA_VF_VLAN_INFO_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan_info { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -pub vlan_proto: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_tx_rate { -pub vf: __u32, -pub rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rate { -pub vf: __u32, -pub min_tx_rate: __u32, -pub max_tx_rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_spoofchk { -pub vf: __u32, -pub setting: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_guid { -pub vf: __u32, -pub guid: __u64, -} -pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; -pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; -pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; -pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1691,28 +2202,6 @@ IFLA_VF_LINK_STATE_DISABLE = 2, __IFLA_VF_LINK_STATE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_link_state { -pub vf: __u32, -pub link_state: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rss_query_en { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; -pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; -pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; -pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; -pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; -pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; -pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; -pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; -pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; -pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1728,15 +2217,6 @@ IFLA_VF_STATS_TX_DROPPED = 8, __IFLA_VF_STATS_MAX = 9, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_trust { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; -pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; -pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1745,15 +2225,6 @@ IFLA_VF_PORT = 1, __IFLA_VF_PORT_MAX = 2, } -pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; -pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; -pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; -pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; -pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; -pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; -pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; -pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; -pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1768,10 +2239,6 @@ IFLA_PORT_RESPONSE = 7, __IFLA_PORT_MAX = 8, } -pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; -pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; -pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; -pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1781,19 +2248,6 @@ PORT_REQUEST_ASSOCIATE = 2, PORT_REQUEST_DISASSOCIATE = 3, } -pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; -pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; -pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; -pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; -pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; -pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; -pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; -pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; -pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; -pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; -pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1812,19 +2266,6 @@ PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, PORT_PROFILE_RESPONSE_ERROR = 261, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_port_vsi { -pub vsi_mgr_id: __u8, -pub vsi_type_id: [__u8; 3usize], -pub vsi_type_version: __u8, -pub pad: [__u8; 3usize], -} -pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; -pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; -pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; -pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; -pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1835,8 +2276,6 @@ IFLA_IPOIB_UMCAST = 3, __IFLA_IPOIB_MAX = 4, } -pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; -pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1844,9 +2283,6 @@ IPOIB_MODE_DATAGRAM = 0, IPOIB_MODE_CONNECTED = 1, } -pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; -pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; -pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1855,15 +2291,6 @@ HSR_PROTOCOL_PRP = 1, HSR_PROTOCOL_MAX = 2, } -pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; -pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; -pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; -pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; -pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; -pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; -pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; -pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; -pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1878,22 +2305,6 @@ IFLA_HSR_PROTOCOL = 7, __IFLA_HSR_MAX = 8, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_stats_msg { -pub family: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub ifindex: __u32, -pub filter_mask: __u32, -} -pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; -pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; -pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; -pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; -pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; -pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; -pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1906,10 +2317,6 @@ IFLA_STATS_AF_SPEC = 5, __IFLA_STATS_MAX = 6, } -pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; -pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; -pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1919,10 +2326,6 @@ IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, __IFLA_STATS_GETSET_MAX = 3, } -pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; -pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; -pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; -pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1932,11 +2335,6 @@ LINK_XSTATS_TYPE_BOND = 2, __LINK_XSTATS_TYPE_MAX = 3, } -pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; -pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1947,10 +2345,6 @@ IFLA_OFFLOAD_XSTATS_L3_STATS = 3, __IFLA_OFFLOAD_XSTATS_MAX = 4, } -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; -pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1960,11 +2354,6 @@ IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, } -pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; -pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; -pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; -pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; -pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1975,16 +2364,6 @@ XDP_ATTACHED_HW = 3, XDP_ATTACHED_MULTI = 4, } -pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; -pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; -pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; -pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; -pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; -pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; -pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; -pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; -pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; -pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2000,13 +2379,6 @@ IFLA_XDP_EXPECTED_FD = 8, __IFLA_XDP_MAX = 9, } -pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; -pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; -pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; -pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; -pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; -pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; -pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2019,17 +2391,6 @@ IFLA_EVENT_IGMP_RESEND = 5, IFLA_EVENT_BONDING_OPTIONS = 6, } -pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; -pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; -pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; -pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; -pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; -pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; -pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; -pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; -pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; -pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; -pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2045,11 +2406,7 @@ IFLA_TUN_NUM_QUEUES = 8, IFLA_TUN_NUM_DISABLED_QUEUES = 9, __IFLA_TUN_MAX = 10, -} -pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; -pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; -pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; -pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2059,15 +2416,6 @@ IFLA_RMNET_FLAGS = 2, __IFLA_RMNET_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_rmnet_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; -pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; -pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2076,9 +2424,6 @@ IFLA_MCTP_NET = 1, __IFLA_MCTP_MAX = 2, } -pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; -pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; -pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2087,28 +2432,6 @@ IFLA_DSA_MASTER = 1, __IFLA_DSA_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifaddrmsg { -pub ifa_family: __u8, -pub ifa_prefixlen: __u8, -pub ifa_flags: __u8, -pub ifa_scope: __u8, -pub ifa_index: __u32, -} -pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; -pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; -pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; -pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; -pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; -pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; -pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; -pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; -pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; -pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; -pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; -pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; -pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2127,44 +2450,6 @@ IFA_PROTO = 11, __IFA_MAX = 12, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifa_cacheinfo { -pub ifa_prefered: __u32, -pub ifa_valid: __u32, -pub cstamp: __u32, -pub tstamp: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndmsg { -pub ndm_family: __u8, -pub ndm_pad1: __u8, -pub ndm_pad2: __u16, -pub ndm_ifindex: __s32, -pub ndm_state: __u16, -pub ndm_flags: __u8, -pub ndm_type: __u8, -} -pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; -pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; -pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; -pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; -pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; -pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; -pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; -pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; -pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; -pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; -pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; -pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; -pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; -pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; -pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; -pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; -pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; -pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; -pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2189,50 +2474,6 @@ NDA_NDM_FLAGS_MASK = 17, __NDA_MAX = 18, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nda_cacheinfo { -pub ndm_confirmed: __u32, -pub ndm_used: __u32, -pub ndm_updated: __u32, -pub ndm_refcnt: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_stats { -pub ndts_allocs: __u64, -pub ndts_destroys: __u64, -pub ndts_hash_grows: __u64, -pub ndts_res_failed: __u64, -pub ndts_lookups: __u64, -pub ndts_hits: __u64, -pub ndts_rcv_probes_mcast: __u64, -pub ndts_rcv_probes_ucast: __u64, -pub ndts_periodic_gc_runs: __u64, -pub ndts_forced_gc_runs: __u64, -pub ndts_table_fulls: __u64, -} -pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; -pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; -pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; -pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; -pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; -pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; -pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; -pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; -pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; -pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; -pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; -pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; -pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; -pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; -pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; -pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; -pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; -pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; -pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; -pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; -pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2259,37 +2500,6 @@ NDTPA_INTERVAL_PROBE_TIME_MS = 19, __NDTPA_MAX = 20, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndtmsg { -pub ndtm_family: __u8, -pub ndtm_pad1: __u8, -pub ndtm_pad2: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_config { -pub ndtc_key_len: __u16, -pub ndtc_entry_size: __u16, -pub ndtc_entries: __u32, -pub ndtc_last_flush: __u32, -pub ndtc_last_rand: __u32, -pub ndtc_hash_rnd: __u32, -pub ndtc_hash_mask: __u32, -pub ndtc_hash_chain_gc: __u32, -pub ndtc_proxy_qlen: __u32, -} -pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; -pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; -pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; -pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; -pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; -pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; -pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; -pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; -pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; -pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; -pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2306,8 +2516,6 @@ NDTA_PAD = 9, __NDTA_MAX = 10, } -pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; -pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2315,10 +2523,6 @@ FDB_NOTIFY_BIT = 1, FDB_NOTIFY_INACTIVE_BIT = 2, } -pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; -pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; -pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; -pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2328,79 +2532,6 @@ NFEA_DONT_REFRESH = 2, __NFEA_MAX = 3, } -pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; -pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; -pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; -pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; -pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; -pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; -pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; -pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; -pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; -pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; -pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; -pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; -pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; -pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; -pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; -pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; -pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; -pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; -pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; -pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; -pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; -pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; -pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; -pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; -pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; -pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; -pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; -pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; -pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; -pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; -pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; -pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; -pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; -pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; -pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; -pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; -pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; -pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; -pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; -pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; -pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; -pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; -pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; -pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; -pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; -pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; -pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; -pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; -pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; -pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; -pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; -pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; -pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; -pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; -pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; -pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; -pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; -pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; -pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; -pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; -pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; -pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; -pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; -pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; -pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; -pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; -pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; -pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; -pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; -pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; -pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2467,49 +2598,17 @@ RTM_NEWLINKPROP = 108, RTM_DELLINKPROP = 109, RTM_GETLINKPROP = 110, -RTM_NEWVLAN = 112, -RTM_DELVLAN = 113, -RTM_GETVLAN = 114, -RTM_NEWNEXTHOPBUCKET = 116, -RTM_DELNEXTHOPBUCKET = 117, -RTM_GETNEXTHOPBUCKET = 118, -RTM_NEWTUNNEL = 120, -RTM_DELTUNNEL = 121, -RTM_GETTUNNEL = 122, -__RTM_MAX = 123, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtattr { -pub rta_len: crate::ctypes::c_ushort, -pub rta_type: crate::ctypes::c_ushort, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtmsg { -pub rtm_family: crate::ctypes::c_uchar, -pub rtm_dst_len: crate::ctypes::c_uchar, -pub rtm_src_len: crate::ctypes::c_uchar, -pub rtm_tos: crate::ctypes::c_uchar, -pub rtm_table: crate::ctypes::c_uchar, -pub rtm_protocol: crate::ctypes::c_uchar, -pub rtm_scope: crate::ctypes::c_uchar, -pub rtm_type: crate::ctypes::c_uchar, -pub rtm_flags: crate::ctypes::c_uint, +RTM_NEWVLAN = 112, +RTM_DELVLAN = 113, +RTM_GETVLAN = 114, +RTM_NEWNEXTHOPBUCKET = 116, +RTM_DELNEXTHOPBUCKET = 117, +RTM_GETNEXTHOPBUCKET = 118, +RTM_NEWTUNNEL = 120, +RTM_DELTUNNEL = 121, +RTM_GETTUNNEL = 122, +__RTM_MAX = 123, } -pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; -pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; -pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; -pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; -pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; -pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; -pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; -pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; -pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; -pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; -pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; -pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; -pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2586,51 +2685,6 @@ RTA_NH_ID = 30, __RTA_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnexthop { -pub rtnh_len: crate::ctypes::c_ushort, -pub rtnh_flags: crate::ctypes::c_uchar, -pub rtnh_hops: crate::ctypes::c_uchar, -pub rtnh_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug)] -pub struct rtvia { -pub rtvia_family: __kernel_sa_family_t, -pub rtvia_addr: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_cacheinfo { -pub rta_clntref: __u32, -pub rta_lastuse: __u32, -pub rta_expires: __s32, -pub rta_error: __u32, -pub rta_used: __u32, -pub rta_id: __u32, -pub rta_ts: __u32, -pub rta_tsage: __u32, -} -pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; -pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; -pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; -pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; -pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; -pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; -pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; -pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; -pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; -pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; -pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; -pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; -pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; -pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; -pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; -pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; -pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; -pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; -pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2655,72 +2709,6 @@ RTAX_FASTOPEN_NO_COOKIE = 17, __RTAX_MAX = 18, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rta_session { -pub proto: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub u: rta_session__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union rta_session__bindgen_ty_1 { -pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, -pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, -pub spi: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { -pub sport: __u16, -pub dport: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { -pub type_: __u8, -pub code: __u8, -pub ident: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_mfc_stats { -pub mfcs_packets: __u64, -pub mfcs_bytes: __u64, -pub mfcs_wrong_if: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtgenmsg { -pub rtgen_family: crate::ctypes::c_uchar, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifinfomsg { -pub ifi_family: crate::ctypes::c_uchar, -pub __ifi_pad: crate::ctypes::c_uchar, -pub ifi_type: crate::ctypes::c_ushort, -pub ifi_index: crate::ctypes::c_int, -pub ifi_flags: crate::ctypes::c_uint, -pub ifi_change: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefixmsg { -pub prefix_family: crate::ctypes::c_uchar, -pub prefix_pad1: crate::ctypes::c_uchar, -pub prefix_pad2: crate::ctypes::c_ushort, -pub prefix_ifindex: crate::ctypes::c_int, -pub prefix_type: crate::ctypes::c_uchar, -pub prefix_len: crate::ctypes::c_uchar, -pub prefix_flags: crate::ctypes::c_uchar, -pub prefix_pad3: crate::ctypes::c_uchar, -} -pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; -pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; -pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; -pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2730,41 +2718,6 @@ PREFIX_CACHEINFO = 2, __PREFIX_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefix_cacheinfo { -pub preferred_time: __u32, -pub valid_time: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcmsg { -pub tcm_family: crate::ctypes::c_uchar, -pub tcm__pad1: crate::ctypes::c_uchar, -pub tcm__pad2: crate::ctypes::c_ushort, -pub tcm_ifindex: crate::ctypes::c_int, -pub tcm_handle: __u32, -pub tcm_parent: __u32, -pub tcm_info: __u32, -} -pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; -pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; -pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; -pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; -pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; -pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; -pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; -pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; -pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; -pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; -pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; -pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; -pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; -pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; -pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; -pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; -pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; -pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2788,21 +2741,6 @@ TCA_EXT_WARN_MSG = 16, __TCA_MAX = 17, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nduseroptmsg { -pub nduseropt_family: crate::ctypes::c_uchar, -pub nduseropt_pad1: crate::ctypes::c_uchar, -pub nduseropt_opts_len: crate::ctypes::c_ushort, -pub nduseropt_ifindex: crate::ctypes::c_int, -pub nduseropt_icmp_type: __u8, -pub nduseropt_icmp_code: __u8, -pub nduseropt_pad2: crate::ctypes::c_ushort, -pub nduseropt_pad3: crate::ctypes::c_uint, -} -pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; -pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; -pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2854,20 +2792,6 @@ RTNLGRP_STATS = 36, __RTNLGRP_MAX = 37, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcamsg { -pub tca_family: crate::ctypes::c_uchar, -pub tca__pad1: crate::ctypes::c_uchar, -pub tca__pad2: crate::ctypes::c_ushort, -} -pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; -pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; -pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; -pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; -pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; -pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; -pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2880,3 +2804,61 @@ TCA_ROOT_EXT_WARN_MSG = 5, __TCA_ROOT_MAX = 6, } +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union rta_session__bindgen_ty_1 { +pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, +pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, +pub spi: __u32, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl nlmsgerr_attrs { +pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +} +impl netlink_policy_type_attr { +pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; +} +impl macsec_validation_type { +pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; +} +impl macsec_offload { +pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; +} +impl ifla_vxlan_df { +pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; +} +impl ifla_geneve_df { +pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips/net.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips/net.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips/net.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips/net.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1867 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type socklen_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_addr { +pub s_addr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq { +pub imr_multiaddr: in_addr, +pub imr_interface: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreqn { +pub imr_multiaddr: in_addr, +pub imr_address: in_addr, +pub imr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq_source { +pub imr_multiaddr: __be32, +pub imr_interface: __be32, +pub imr_sourceaddr: __be32, +} +#[repr(C)] +pub struct ip_msfilter { +pub imsf_multiaddr: __be32, +pub imsf_interface: __be32, +pub imsf_fmode: __u32, +pub imsf_numsrc: __u32, +pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, +} +#[repr(C)] +pub struct ip_msfilter__bindgen_ty_1 { +pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, +pub __bindgen_anon_1: __BindgenUnionField, +pub bindgen_union_field: u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { +pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub imsf_slist_flex: __IncompleteArrayField<__be32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_req { +pub gr_interface: __u32, +pub gr_group: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_source_req { +pub gsr_interface: __u32, +pub gsr_group: __kernel_sockaddr_storage, +pub gsr_source: __kernel_sockaddr_storage, +} +#[repr(C)] +pub struct group_filter { +pub __bindgen_anon_1: group_filter__bindgen_ty_1, +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u32; 67usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { +pub gf_interface_aux: __u32, +pub gf_group_aux: __kernel_sockaddr_storage, +pub gf_fmode_aux: __u32, +pub gf_numsrc_aux: __u32, +pub gf_slist: [__kernel_sockaddr_storage; 1usize], +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { +pub gf_interface: __u32, +pub gf_group: __kernel_sockaddr_storage, +pub gf_fmode: __u32, +pub gf_numsrc: __u32, +pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_pktinfo { +pub ipi_ifindex: crate::ctypes::c_int, +pub ipi_spec_dst: in_addr, +pub ipi_addr: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_in { +pub sin_family: __kernel_sa_family_t, +pub sin_port: __be16, +pub sin_addr: in_addr, +pub __pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct iphdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub tos: __u8, +pub tot_len: __be16, +pub id: __be16, +pub frag_off: __be16, +pub ttl: __u8, +pub protocol: __u8, +pub check: __sum16, +pub __bindgen_anon_1: iphdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_auth_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub reserved: __be16, +pub spi: __be32, +pub seq_no: __be32, +pub auth_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_esp_hdr { +pub spi: __be32, +pub seq_no: __be32, +pub enc_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_comp_hdr { +pub nexthdr: __u8, +pub flags: __u8, +pub cpi: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_beet_phdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub padlen: __u8, +pub reserved: __u8, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_addr { +pub in6_u: in6_addr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr_in6 { +pub sin6_family: crate::ctypes::c_ushort, +pub sin6_port: __be16, +pub sin6_flowinfo: __be32, +pub sin6_addr: in6_addr, +pub sin6_scope_id: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6_mreq { +pub ipv6mr_multiaddr: in6_addr, +pub ipv6mr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_flowlabel_req { +pub flr_dst: in6_addr, +pub flr_label: __be32, +pub flr_action: __u8, +pub flr_share: __u8, +pub flr_flags: __u16, +pub flr_expires: __u16, +pub flr_linger: __u16, +pub __flr_pad: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_pktinfo { +pub ipi6_addr: in6_addr, +pub ipi6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ip6_mtuinfo { +pub ip6m_addr: sockaddr_in6, +pub ip6m_mtu: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_ifreq { +pub ifr6_addr: in6_addr, +pub ifr6_prefixlen: __u32, +pub ifr6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_rt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub type_: __u8, +pub segments_left: __u8, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_opt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +} +#[repr(C)] +pub struct rt0_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rt2_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: in6_addr, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct ipv6_destopt_hao { +pub type_: __u8, +pub length: __u8, +pub addr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub flow_lbl: [__u8; 3usize], +pub payload_len: __be16, +pub nexthdr: __u8, +pub hop_limit: __u8, +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcphdr { +pub source: __be16, +pub dest: __be16, +pub seq: __be32, +pub ack_seq: __be32, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub window: __be16, +pub check: __sum16, +pub urg_ptr: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_opt { +pub opt_code: __u32, +pub opt_val: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_window { +pub snd_wl1: __u32, +pub snd_wnd: __u32, +pub max_window: __u32, +pub rcv_wnd: __u32, +pub rcv_wup: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_info { +pub tcpi_state: __u8, +pub tcpi_ca_state: __u8, +pub tcpi_retransmits: __u8, +pub tcpi_probes: __u8, +pub tcpi_backoff: __u8, +pub tcpi_options: __u8, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub tcpi_rto: __u32, +pub tcpi_ato: __u32, +pub tcpi_snd_mss: __u32, +pub tcpi_rcv_mss: __u32, +pub tcpi_unacked: __u32, +pub tcpi_sacked: __u32, +pub tcpi_lost: __u32, +pub tcpi_retrans: __u32, +pub tcpi_fackets: __u32, +pub tcpi_last_data_sent: __u32, +pub tcpi_last_ack_sent: __u32, +pub tcpi_last_data_recv: __u32, +pub tcpi_last_ack_recv: __u32, +pub tcpi_pmtu: __u32, +pub tcpi_rcv_ssthresh: __u32, +pub tcpi_rtt: __u32, +pub tcpi_rttvar: __u32, +pub tcpi_snd_ssthresh: __u32, +pub tcpi_snd_cwnd: __u32, +pub tcpi_advmss: __u32, +pub tcpi_reordering: __u32, +pub tcpi_rcv_rtt: __u32, +pub tcpi_rcv_space: __u32, +pub tcpi_total_retrans: __u32, +pub tcpi_pacing_rate: __u64, +pub tcpi_max_pacing_rate: __u64, +pub tcpi_bytes_acked: __u64, +pub tcpi_bytes_received: __u64, +pub tcpi_segs_out: __u32, +pub tcpi_segs_in: __u32, +pub tcpi_notsent_bytes: __u32, +pub tcpi_min_rtt: __u32, +pub tcpi_data_segs_in: __u32, +pub tcpi_data_segs_out: __u32, +pub tcpi_delivery_rate: __u64, +pub tcpi_busy_time: __u64, +pub tcpi_rwnd_limited: __u64, +pub tcpi_sndbuf_limited: __u64, +pub tcpi_delivered: __u32, +pub tcpi_delivered_ce: __u32, +pub tcpi_bytes_sent: __u64, +pub tcpi_bytes_retrans: __u64, +pub tcpi_dsack_dups: __u32, +pub tcpi_reord_seen: __u32, +pub tcpi_rcv_ooopack: __u32, +pub tcpi_snd_wnd: __u32, +pub tcpi_rcv_wnd: __u32, +pub tcpi_rehash: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct tcp_md5sig { +pub tcpm_addr: __kernel_sockaddr_storage, +pub tcpm_flags: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_ifindex: crate::ctypes::c_int, +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_diag_md5sig { +pub tcpm_family: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_addr: [__be32; 4usize], +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_zerocopy_receive { +pub address: __u64, +pub length: __u32, +pub recv_skip_hint: __u32, +pub inq: __u32, +pub err: __s32, +pub copybuf_address: __u64, +pub copybuf_len: __s32, +pub flags: __u32, +pub msg_control: __u64, +pub msg_controllen: __u64, +pub msg_flags: __u32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_un { +pub sun_family: __kernel_sa_family_t, +pub sun_path: [crate::ctypes::c_char; 108usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr { +pub __storage: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct linger { +pub l_onoff: crate::ctypes::c_int, +pub l_linger: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct msghdr { +pub msg_name: *mut crate::ctypes::c_void, +pub msg_namelen: crate::ctypes::c_int, +pub msg_iov: *mut iovec, +pub msg_iovlen: usize, +pub msg_control: *mut crate::ctypes::c_void, +pub msg_controllen: usize, +pub msg_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct cmsghdr { +pub cmsg_len: usize, +pub cmsg_level: crate::ctypes::c_int, +pub cmsg_type: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ucred { +pub pid: __u32, +pub uid: __u32, +pub gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mmsghdr { +pub msg_hdr: msghdr, +pub msg_len: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub _address: u8, +} +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const IP_TOS: u32 = 1; +pub const IP_TTL: u32 = 2; +pub const IP_HDRINCL: u32 = 3; +pub const IP_OPTIONS: u32 = 4; +pub const IP_ROUTER_ALERT: u32 = 5; +pub const IP_RECVOPTS: u32 = 6; +pub const IP_RETOPTS: u32 = 7; +pub const IP_PKTINFO: u32 = 8; +pub const IP_PKTOPTIONS: u32 = 9; +pub const IP_MTU_DISCOVER: u32 = 10; +pub const IP_RECVERR: u32 = 11; +pub const IP_RECVTTL: u32 = 12; +pub const IP_RECVTOS: u32 = 13; +pub const IP_MTU: u32 = 14; +pub const IP_FREEBIND: u32 = 15; +pub const IP_IPSEC_POLICY: u32 = 16; +pub const IP_XFRM_POLICY: u32 = 17; +pub const IP_PASSSEC: u32 = 18; +pub const IP_TRANSPARENT: u32 = 19; +pub const IP_RECVRETOPTS: u32 = 7; +pub const IP_ORIGDSTADDR: u32 = 20; +pub const IP_RECVORIGDSTADDR: u32 = 20; +pub const IP_MINTTL: u32 = 21; +pub const IP_NODEFRAG: u32 = 22; +pub const IP_CHECKSUM: u32 = 23; +pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; +pub const IP_RECVFRAGSIZE: u32 = 25; +pub const IP_RECVERR_RFC4884: u32 = 26; +pub const IP_PMTUDISC_DONT: u32 = 0; +pub const IP_PMTUDISC_WANT: u32 = 1; +pub const IP_PMTUDISC_DO: u32 = 2; +pub const IP_PMTUDISC_PROBE: u32 = 3; +pub const IP_PMTUDISC_INTERFACE: u32 = 4; +pub const IP_PMTUDISC_OMIT: u32 = 5; +pub const IP_MULTICAST_IF: u32 = 32; +pub const IP_MULTICAST_TTL: u32 = 33; +pub const IP_MULTICAST_LOOP: u32 = 34; +pub const IP_ADD_MEMBERSHIP: u32 = 35; +pub const IP_DROP_MEMBERSHIP: u32 = 36; +pub const IP_UNBLOCK_SOURCE: u32 = 37; +pub const IP_BLOCK_SOURCE: u32 = 38; +pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; +pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; +pub const IP_MSFILTER: u32 = 41; +pub const MCAST_JOIN_GROUP: u32 = 42; +pub const MCAST_BLOCK_SOURCE: u32 = 43; +pub const MCAST_UNBLOCK_SOURCE: u32 = 44; +pub const MCAST_LEAVE_GROUP: u32 = 45; +pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; +pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; +pub const MCAST_MSFILTER: u32 = 48; +pub const IP_MULTICAST_ALL: u32 = 49; +pub const IP_UNICAST_IF: u32 = 50; +pub const IP_LOCAL_PORT_RANGE: u32 = 51; +pub const MCAST_EXCLUDE: u32 = 0; +pub const MCAST_INCLUDE: u32 = 1; +pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; +pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; +pub const __SOCK_SIZE__: u32 = 16; +pub const IN_CLASSA_NET: u32 = 4278190080; +pub const IN_CLASSA_NSHIFT: u32 = 24; +pub const IN_CLASSA_HOST: u32 = 16777215; +pub const IN_CLASSA_MAX: u32 = 128; +pub const IN_CLASSB_NET: u32 = 4294901760; +pub const IN_CLASSB_NSHIFT: u32 = 16; +pub const IN_CLASSB_HOST: u32 = 65535; +pub const IN_CLASSB_MAX: u32 = 65536; +pub const IN_CLASSC_NET: u32 = 4294967040; +pub const IN_CLASSC_NSHIFT: u32 = 8; +pub const IN_CLASSC_HOST: u32 = 255; +pub const IN_MULTICAST_NET: u32 = 3758096384; +pub const IN_CLASSE_NET: u32 = 4294967295; +pub const IN_CLASSE_NSHIFT: u32 = 0; +pub const IN_LOOPBACKNET: u32 = 127; +pub const INADDR_LOOPBACK: u32 = 2130706433; +pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; +pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; +pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; +pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; +pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; +pub const __BIG_ENDIAN: u32 = 4321; +pub const IPTOS_TOS_MASK: u32 = 30; +pub const IPTOS_LOWDELAY: u32 = 16; +pub const IPTOS_THROUGHPUT: u32 = 8; +pub const IPTOS_RELIABILITY: u32 = 4; +pub const IPTOS_MINCOST: u32 = 2; +pub const IPTOS_PREC_MASK: u32 = 224; +pub const IPTOS_PREC_NETCONTROL: u32 = 224; +pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; +pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; +pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; +pub const IPTOS_PREC_FLASH: u32 = 96; +pub const IPTOS_PREC_IMMEDIATE: u32 = 64; +pub const IPTOS_PREC_PRIORITY: u32 = 32; +pub const IPTOS_PREC_ROUTINE: u32 = 0; +pub const IPOPT_COPY: u32 = 128; +pub const IPOPT_CLASS_MASK: u32 = 96; +pub const IPOPT_NUMBER_MASK: u32 = 31; +pub const IPOPT_CONTROL: u32 = 0; +pub const IPOPT_RESERVED1: u32 = 32; +pub const IPOPT_MEASUREMENT: u32 = 64; +pub const IPOPT_RESERVED2: u32 = 96; +pub const IPOPT_END: u32 = 0; +pub const IPOPT_NOOP: u32 = 1; +pub const IPOPT_SEC: u32 = 130; +pub const IPOPT_LSRR: u32 = 131; +pub const IPOPT_TIMESTAMP: u32 = 68; +pub const IPOPT_CIPSO: u32 = 134; +pub const IPOPT_RR: u32 = 7; +pub const IPOPT_SID: u32 = 136; +pub const IPOPT_SSRR: u32 = 137; +pub const IPOPT_RA: u32 = 148; +pub const IPVERSION: u32 = 4; +pub const MAXTTL: u32 = 255; +pub const IPDEFTTL: u32 = 64; +pub const IPOPT_OPTVAL: u32 = 0; +pub const IPOPT_OLEN: u32 = 1; +pub const IPOPT_OFFSET: u32 = 2; +pub const IPOPT_MINOFF: u32 = 4; +pub const MAX_IPOPTLEN: u32 = 40; +pub const IPOPT_NOP: u32 = 1; +pub const IPOPT_EOL: u32 = 0; +pub const IPOPT_TS: u32 = 68; +pub const IPOPT_TS_TSONLY: u32 = 0; +pub const IPOPT_TS_TSANDADDR: u32 = 1; +pub const IPOPT_TS_PRESPEC: u32 = 3; +pub const IPV4_BEET_PHMAXLEN: u32 = 8; +pub const IPV6_FL_A_GET: u32 = 0; +pub const IPV6_FL_A_PUT: u32 = 1; +pub const IPV6_FL_A_RENEW: u32 = 2; +pub const IPV6_FL_F_CREATE: u32 = 1; +pub const IPV6_FL_F_EXCL: u32 = 2; +pub const IPV6_FL_F_REFLECT: u32 = 4; +pub const IPV6_FL_F_REMOTE: u32 = 8; +pub const IPV6_FL_S_NONE: u32 = 0; +pub const IPV6_FL_S_EXCL: u32 = 1; +pub const IPV6_FL_S_PROCESS: u32 = 2; +pub const IPV6_FL_S_USER: u32 = 3; +pub const IPV6_FL_S_ANY: u32 = 255; +pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; +pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; +pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; +pub const IPV6_PRIORITY_FILLER: u32 = 256; +pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; +pub const IPV6_PRIORITY_RESERVED1: u32 = 768; +pub const IPV6_PRIORITY_BULK: u32 = 1024; +pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; +pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; +pub const IPV6_PRIORITY_CONTROL: u32 = 1792; +pub const IPV6_PRIORITY_8: u32 = 2048; +pub const IPV6_PRIORITY_9: u32 = 2304; +pub const IPV6_PRIORITY_10: u32 = 2560; +pub const IPV6_PRIORITY_11: u32 = 2816; +pub const IPV6_PRIORITY_12: u32 = 3072; +pub const IPV6_PRIORITY_13: u32 = 3328; +pub const IPV6_PRIORITY_14: u32 = 3584; +pub const IPV6_PRIORITY_15: u32 = 3840; +pub const IPPROTO_HOPOPTS: u32 = 0; +pub const IPPROTO_ROUTING: u32 = 43; +pub const IPPROTO_FRAGMENT: u32 = 44; +pub const IPPROTO_ICMPV6: u32 = 58; +pub const IPPROTO_NONE: u32 = 59; +pub const IPPROTO_DSTOPTS: u32 = 60; +pub const IPPROTO_MH: u32 = 135; +pub const IPV6_TLV_PAD1: u32 = 0; +pub const IPV6_TLV_PADN: u32 = 1; +pub const IPV6_TLV_ROUTERALERT: u32 = 5; +pub const IPV6_TLV_CALIPSO: u32 = 7; +pub const IPV6_TLV_IOAM: u32 = 49; +pub const IPV6_TLV_JUMBO: u32 = 194; +pub const IPV6_TLV_HAO: u32 = 201; +pub const IPV6_ADDRFORM: u32 = 1; +pub const IPV6_2292PKTINFO: u32 = 2; +pub const IPV6_2292HOPOPTS: u32 = 3; +pub const IPV6_2292DSTOPTS: u32 = 4; +pub const IPV6_2292RTHDR: u32 = 5; +pub const IPV6_2292PKTOPTIONS: u32 = 6; +pub const IPV6_CHECKSUM: u32 = 7; +pub const IPV6_2292HOPLIMIT: u32 = 8; +pub const IPV6_NEXTHOP: u32 = 9; +pub const IPV6_AUTHHDR: u32 = 10; +pub const IPV6_FLOWINFO: u32 = 11; +pub const IPV6_UNICAST_HOPS: u32 = 16; +pub const IPV6_MULTICAST_IF: u32 = 17; +pub const IPV6_MULTICAST_HOPS: u32 = 18; +pub const IPV6_MULTICAST_LOOP: u32 = 19; +pub const IPV6_ADD_MEMBERSHIP: u32 = 20; +pub const IPV6_DROP_MEMBERSHIP: u32 = 21; +pub const IPV6_ROUTER_ALERT: u32 = 22; +pub const IPV6_MTU_DISCOVER: u32 = 23; +pub const IPV6_MTU: u32 = 24; +pub const IPV6_RECVERR: u32 = 25; +pub const IPV6_V6ONLY: u32 = 26; +pub const IPV6_JOIN_ANYCAST: u32 = 27; +pub const IPV6_LEAVE_ANYCAST: u32 = 28; +pub const IPV6_MULTICAST_ALL: u32 = 29; +pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; +pub const IPV6_RECVERR_RFC4884: u32 = 31; +pub const IPV6_PMTUDISC_DONT: u32 = 0; +pub const IPV6_PMTUDISC_WANT: u32 = 1; +pub const IPV6_PMTUDISC_DO: u32 = 2; +pub const IPV6_PMTUDISC_PROBE: u32 = 3; +pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; +pub const IPV6_PMTUDISC_OMIT: u32 = 5; +pub const IPV6_FLOWLABEL_MGR: u32 = 32; +pub const IPV6_FLOWINFO_SEND: u32 = 33; +pub const IPV6_IPSEC_POLICY: u32 = 34; +pub const IPV6_XFRM_POLICY: u32 = 35; +pub const IPV6_HDRINCL: u32 = 36; +pub const IPV6_RECVPKTINFO: u32 = 49; +pub const IPV6_PKTINFO: u32 = 50; +pub const IPV6_RECVHOPLIMIT: u32 = 51; +pub const IPV6_HOPLIMIT: u32 = 52; +pub const IPV6_RECVHOPOPTS: u32 = 53; +pub const IPV6_HOPOPTS: u32 = 54; +pub const IPV6_RTHDRDSTOPTS: u32 = 55; +pub const IPV6_RECVRTHDR: u32 = 56; +pub const IPV6_RTHDR: u32 = 57; +pub const IPV6_RECVDSTOPTS: u32 = 58; +pub const IPV6_DSTOPTS: u32 = 59; +pub const IPV6_RECVPATHMTU: u32 = 60; +pub const IPV6_PATHMTU: u32 = 61; +pub const IPV6_DONTFRAG: u32 = 62; +pub const IPV6_RECVTCLASS: u32 = 66; +pub const IPV6_TCLASS: u32 = 67; +pub const IPV6_AUTOFLOWLABEL: u32 = 70; +pub const IPV6_ADDR_PREFERENCES: u32 = 72; +pub const IPV6_PREFER_SRC_TMP: u32 = 1; +pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; +pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; +pub const IPV6_PREFER_SRC_COA: u32 = 4; +pub const IPV6_PREFER_SRC_HOME: u32 = 1024; +pub const IPV6_PREFER_SRC_CGA: u32 = 8; +pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; +pub const IPV6_MINHOPCOUNT: u32 = 73; +pub const IPV6_ORIGDSTADDR: u32 = 74; +pub const IPV6_RECVORIGDSTADDR: u32 = 74; +pub const IPV6_TRANSPARENT: u32 = 75; +pub const IPV6_UNICAST_IF: u32 = 76; +pub const IPV6_RECVFRAGSIZE: u32 = 77; +pub const IPV6_FREEBIND: u32 = 78; +pub const IPV6_MIN_MTU: u32 = 1280; +pub const IPV6_SRCRT_STRICT: u32 = 1; +pub const IPV6_SRCRT_TYPE_0: u32 = 0; +pub const IPV6_SRCRT_TYPE_2: u32 = 2; +pub const IPV6_SRCRT_TYPE_3: u32 = 3; +pub const IPV6_SRCRT_TYPE_4: u32 = 4; +pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 536805376; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const SIOCGSTAMP_OLD: u32 = 35078; +pub const SIOCGSTAMPNS_OLD: u32 = 35079; +pub const SOL_SOCKET: u32 = 65535; +pub const SO_DEBUG: u32 = 1; +pub const SO_REUSEADDR: u32 = 4; +pub const SO_KEEPALIVE: u32 = 8; +pub const SO_DONTROUTE: u32 = 16; +pub const SO_BROADCAST: u32 = 32; +pub const SO_LINGER: u32 = 128; +pub const SO_OOBINLINE: u32 = 256; +pub const SO_REUSEPORT: u32 = 512; +pub const SO_TYPE: u32 = 4104; +pub const SO_STYLE: u32 = 4104; +pub const SO_ERROR: u32 = 4103; +pub const SO_SNDBUF: u32 = 4097; +pub const SO_RCVBUF: u32 = 4098; +pub const SO_SNDLOWAT: u32 = 4099; +pub const SO_RCVLOWAT: u32 = 4100; +pub const SO_SNDTIMEO_OLD: u32 = 4101; +pub const SO_RCVTIMEO_OLD: u32 = 4102; +pub const SO_ACCEPTCONN: u32 = 4105; +pub const SO_PROTOCOL: u32 = 4136; +pub const SO_DOMAIN: u32 = 4137; +pub const SO_NO_CHECK: u32 = 11; +pub const SO_PRIORITY: u32 = 12; +pub const SO_BSDCOMPAT: u32 = 14; +pub const SO_PASSCRED: u32 = 17; +pub const SO_PEERCRED: u32 = 18; +pub const SO_SECURITY_AUTHENTICATION: u32 = 22; +pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; +pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; +pub const SO_BINDTODEVICE: u32 = 25; +pub const SO_ATTACH_FILTER: u32 = 26; +pub const SO_DETACH_FILTER: u32 = 27; +pub const SO_GET_FILTER: u32 = 26; +pub const SO_PEERNAME: u32 = 28; +pub const SO_PEERSEC: u32 = 30; +pub const SO_SNDBUFFORCE: u32 = 31; +pub const SO_RCVBUFFORCE: u32 = 33; +pub const SO_PASSSEC: u32 = 34; +pub const SO_MARK: u32 = 36; +pub const SO_RXQ_OVFL: u32 = 40; +pub const SO_WIFI_STATUS: u32 = 41; +pub const SCM_WIFI_STATUS: u32 = 41; +pub const SO_PEEK_OFF: u32 = 42; +pub const SO_NOFCS: u32 = 43; +pub const SO_LOCK_FILTER: u32 = 44; +pub const SO_SELECT_ERR_QUEUE: u32 = 45; +pub const SO_BUSY_POLL: u32 = 46; +pub const SO_MAX_PACING_RATE: u32 = 47; +pub const SO_BPF_EXTENSIONS: u32 = 48; +pub const SO_INCOMING_CPU: u32 = 49; +pub const SO_ATTACH_BPF: u32 = 50; +pub const SO_DETACH_BPF: u32 = 27; +pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; +pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; +pub const SO_CNX_ADVICE: u32 = 53; +pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; +pub const SO_MEMINFO: u32 = 55; +pub const SO_INCOMING_NAPI_ID: u32 = 56; +pub const SO_COOKIE: u32 = 57; +pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; +pub const SO_PEERGROUPS: u32 = 59; +pub const SO_ZEROCOPY: u32 = 60; +pub const SO_TXTIME: u32 = 61; +pub const SCM_TXTIME: u32 = 61; +pub const SO_BINDTOIFINDEX: u32 = 62; +pub const SO_TIMESTAMP_OLD: u32 = 29; +pub const SO_TIMESTAMPNS_OLD: u32 = 35; +pub const SO_TIMESTAMPING_OLD: u32 = 37; +pub const SO_TIMESTAMP_NEW: u32 = 63; +pub const SO_TIMESTAMPNS_NEW: u32 = 64; +pub const SO_TIMESTAMPING_NEW: u32 = 65; +pub const SO_RCVTIMEO_NEW: u32 = 66; +pub const SO_SNDTIMEO_NEW: u32 = 67; +pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; +pub const SO_PREFER_BUSY_POLL: u32 = 69; +pub const SO_BUSY_POLL_BUDGET: u32 = 70; +pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; +pub const SO_TXREHASH: u32 = 74; +pub const SO_RCVMARK: u32 = 75; +pub const SYS_SOCKET: u32 = 1; +pub const SYS_BIND: u32 = 2; +pub const SYS_CONNECT: u32 = 3; +pub const SYS_LISTEN: u32 = 4; +pub const SYS_ACCEPT: u32 = 5; +pub const SYS_GETSOCKNAME: u32 = 6; +pub const SYS_GETPEERNAME: u32 = 7; +pub const SYS_SOCKETPAIR: u32 = 8; +pub const SYS_SEND: u32 = 9; +pub const SYS_RECV: u32 = 10; +pub const SYS_SENDTO: u32 = 11; +pub const SYS_RECVFROM: u32 = 12; +pub const SYS_SHUTDOWN: u32 = 13; +pub const SYS_SETSOCKOPT: u32 = 14; +pub const SYS_GETSOCKOPT: u32 = 15; +pub const SYS_SENDMSG: u32 = 16; +pub const SYS_RECVMSG: u32 = 17; +pub const SYS_ACCEPT4: u32 = 18; +pub const SYS_RECVMMSG: u32 = 19; +pub const SYS_SENDMMSG: u32 = 20; +pub const __SO_ACCEPTCON: u32 = 65536; +pub const TCP_MSS_DEFAULT: u32 = 536; +pub const TCP_MSS_DESIRED: u32 = 1220; +pub const TCP_NODELAY: u32 = 1; +pub const TCP_MAXSEG: u32 = 2; +pub const TCP_CORK: u32 = 3; +pub const TCP_KEEPIDLE: u32 = 4; +pub const TCP_KEEPINTVL: u32 = 5; +pub const TCP_KEEPCNT: u32 = 6; +pub const TCP_SYNCNT: u32 = 7; +pub const TCP_LINGER2: u32 = 8; +pub const TCP_DEFER_ACCEPT: u32 = 9; +pub const TCP_WINDOW_CLAMP: u32 = 10; +pub const TCP_INFO: u32 = 11; +pub const TCP_QUICKACK: u32 = 12; +pub const TCP_CONGESTION: u32 = 13; +pub const TCP_MD5SIG: u32 = 14; +pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; +pub const TCP_THIN_DUPACK: u32 = 17; +pub const TCP_USER_TIMEOUT: u32 = 18; +pub const TCP_REPAIR: u32 = 19; +pub const TCP_REPAIR_QUEUE: u32 = 20; +pub const TCP_QUEUE_SEQ: u32 = 21; +pub const TCP_REPAIR_OPTIONS: u32 = 22; +pub const TCP_FASTOPEN: u32 = 23; +pub const TCP_TIMESTAMP: u32 = 24; +pub const TCP_NOTSENT_LOWAT: u32 = 25; +pub const TCP_CC_INFO: u32 = 26; +pub const TCP_SAVE_SYN: u32 = 27; +pub const TCP_SAVED_SYN: u32 = 28; +pub const TCP_REPAIR_WINDOW: u32 = 29; +pub const TCP_FASTOPEN_CONNECT: u32 = 30; +pub const TCP_ULP: u32 = 31; +pub const TCP_MD5SIG_EXT: u32 = 32; +pub const TCP_FASTOPEN_KEY: u32 = 33; +pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; +pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; +pub const TCP_INQ: u32 = 36; +pub const TCP_CM_INQ: u32 = 36; +pub const TCP_TX_DELAY: u32 = 37; +pub const TCP_REPAIR_ON: u32 = 1; +pub const TCP_REPAIR_OFF: u32 = 0; +pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; +pub const TCPI_OPT_TIMESTAMPS: u32 = 1; +pub const TCPI_OPT_SACK: u32 = 2; +pub const TCPI_OPT_WSCALE: u32 = 4; +pub const TCPI_OPT_ECN: u32 = 8; +pub const TCPI_OPT_ECN_SEEN: u32 = 16; +pub const TCPI_OPT_SYN_DATA: u32 = 32; +pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; +pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; +pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; +pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; +pub const UNIX_PATH_MAX: u32 = 108; +pub const SHUT_RD: u32 = 0; +pub const SHUT_WR: u32 = 1; +pub const SHUT_RDWR: u32 = 2; +pub const SOCK_STREAM: u32 = 2; +pub const SOCK_DGRAM: u32 = 1; +pub const SOCK_RAW: u32 = 3; +pub const SOCK_RDM: u32 = 4; +pub const SOCK_SEQPACKET: u32 = 5; +pub const MSG_DONTWAIT: u32 = 64; +pub const AF_UNSPEC: u32 = 0; +pub const AF_UNIX: u32 = 1; +pub const AF_INET: u32 = 2; +pub const AF_AX25: u32 = 3; +pub const AF_IPX: u32 = 4; +pub const AF_APPLETALK: u32 = 5; +pub const AF_NETROM: u32 = 6; +pub const AF_BRIDGE: u32 = 7; +pub const AF_ATMPVC: u32 = 8; +pub const AF_X25: u32 = 9; +pub const AF_INET6: u32 = 10; +pub const AF_ROSE: u32 = 11; +pub const AF_DECnet: u32 = 12; +pub const AF_NETBEUI: u32 = 13; +pub const AF_SECURITY: u32 = 14; +pub const AF_KEY: u32 = 15; +pub const AF_NETLINK: u32 = 16; +pub const AF_PACKET: u32 = 17; +pub const AF_ASH: u32 = 18; +pub const AF_ECONET: u32 = 19; +pub const AF_ATMSVC: u32 = 20; +pub const AF_RDS: u32 = 21; +pub const AF_SNA: u32 = 22; +pub const AF_IRDA: u32 = 23; +pub const AF_PPPOX: u32 = 24; +pub const AF_WANPIPE: u32 = 25; +pub const AF_LLC: u32 = 26; +pub const AF_CAN: u32 = 29; +pub const AF_TIPC: u32 = 30; +pub const AF_BLUETOOTH: u32 = 31; +pub const AF_IUCV: u32 = 32; +pub const AF_RXRPC: u32 = 33; +pub const AF_ISDN: u32 = 34; +pub const AF_PHONET: u32 = 35; +pub const AF_IEEE802154: u32 = 36; +pub const AF_MAX: u32 = 37; +pub const MSG_OOB: u32 = 1; +pub const MSG_PEEK: u32 = 2; +pub const MSG_DONTROUTE: u32 = 4; +pub const MSG_CTRUNC: u32 = 8; +pub const MSG_PROBE: u32 = 16; +pub const MSG_TRUNC: u32 = 32; +pub const MSG_EOR: u32 = 128; +pub const MSG_WAITALL: u32 = 256; +pub const MSG_FIN: u32 = 512; +pub const MSG_SYN: u32 = 1024; +pub const MSG_CONFIRM: u32 = 2048; +pub const MSG_RST: u32 = 4096; +pub const MSG_ERRQUEUE: u32 = 8192; +pub const MSG_NOSIGNAL: u32 = 16384; +pub const MSG_MORE: u32 = 32768; +pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; +pub const SCM_RIGHTS: u32 = 1; +pub const SCM_CREDENTIALS: u32 = 2; +pub const SCM_SECURITY: u32 = 3; +pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; +pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; +pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; +pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; +pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; +pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; +pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; +pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; +pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; +pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; +pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; +pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; +pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; +pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; +pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; +pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; +pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; +pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; +pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; +pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; +pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; +pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; +pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; +pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; +pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; +pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; +pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; +pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; +pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; +pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; +pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; +pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; +pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; +pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; +pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; +pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; +pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; +pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; +pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; +pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; +pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; +pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; +pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; +pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; +pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; +pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; +pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; +pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; +pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; +pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; +pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; +pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; +pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; +pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; +pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; +pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; +pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; +pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; +pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; +pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; +pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; +pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; +pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; +pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; +pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; +pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; +pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; +pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; +pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; +pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; +pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; +pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; +pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; +pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; +pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; +pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; +pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; +pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; +pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; +pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; +pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; +pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; +pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; +pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; +pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; +pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; +pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; +pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; +pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; +pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; +pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; +pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; +pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; +pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; +pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; +pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; +pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; +pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; +pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; +pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; +pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; +pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; +pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; +pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; +pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; +pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; +pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; +pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; +pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; +pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; +pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; +pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; +pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; +pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; +pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; +pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; +pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; +pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; +pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; +pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; +pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; +pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; +pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; +pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; +pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; +pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; +pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; +pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; +pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; +pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; +pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; +pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; +pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; +pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; +pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; +pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; +pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; +pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; +pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; +pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; +pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; +pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; +pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; +pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; +pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; +pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; +pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; +pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; +pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; +pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; +pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; +pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IPPROTO_IP = 0, +IPPROTO_ICMP = 1, +IPPROTO_IGMP = 2, +IPPROTO_IPIP = 4, +IPPROTO_TCP = 6, +IPPROTO_EGP = 8, +IPPROTO_PUP = 12, +IPPROTO_UDP = 17, +IPPROTO_IDP = 22, +IPPROTO_TP = 29, +IPPROTO_DCCP = 33, +IPPROTO_IPV6 = 41, +IPPROTO_RSVP = 46, +IPPROTO_GRE = 47, +IPPROTO_ESP = 50, +IPPROTO_AH = 51, +IPPROTO_MTP = 92, +IPPROTO_BEETPH = 94, +IPPROTO_ENCAP = 98, +IPPROTO_PIM = 103, +IPPROTO_COMP = 108, +IPPROTO_L2TP = 115, +IPPROTO_SCTP = 132, +IPPROTO_UDPLITE = 136, +IPPROTO_MPLS = 137, +IPPROTO_ETHERNET = 143, +IPPROTO_RAW = 255, +IPPROTO_MPTCP = 262, +IPPROTO_MAX = 263, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IPV4_DEVCONF_FORWARDING = 1, +IPV4_DEVCONF_MC_FORWARDING = 2, +IPV4_DEVCONF_PROXY_ARP = 3, +IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, +IPV4_DEVCONF_SECURE_REDIRECTS = 5, +IPV4_DEVCONF_SEND_REDIRECTS = 6, +IPV4_DEVCONF_SHARED_MEDIA = 7, +IPV4_DEVCONF_RP_FILTER = 8, +IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, +IPV4_DEVCONF_BOOTP_RELAY = 10, +IPV4_DEVCONF_LOG_MARTIANS = 11, +IPV4_DEVCONF_TAG = 12, +IPV4_DEVCONF_ARPFILTER = 13, +IPV4_DEVCONF_MEDIUM_ID = 14, +IPV4_DEVCONF_NOXFRM = 15, +IPV4_DEVCONF_NOPOLICY = 16, +IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, +IPV4_DEVCONF_ARP_ANNOUNCE = 18, +IPV4_DEVCONF_ARP_IGNORE = 19, +IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, +IPV4_DEVCONF_ARP_ACCEPT = 21, +IPV4_DEVCONF_ARP_NOTIFY = 22, +IPV4_DEVCONF_ACCEPT_LOCAL = 23, +IPV4_DEVCONF_SRC_VMARK = 24, +IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, +IPV4_DEVCONF_ROUTE_LOCALNET = 26, +IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, +IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, +IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, +IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, +IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, +IPV4_DEVCONF_BC_FORWARDING = 32, +IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, +__IPV4_DEVCONF_MAX = 34, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +DEVCONF_FORWARDING = 0, +DEVCONF_HOPLIMIT = 1, +DEVCONF_MTU6 = 2, +DEVCONF_ACCEPT_RA = 3, +DEVCONF_ACCEPT_REDIRECTS = 4, +DEVCONF_AUTOCONF = 5, +DEVCONF_DAD_TRANSMITS = 6, +DEVCONF_RTR_SOLICITS = 7, +DEVCONF_RTR_SOLICIT_INTERVAL = 8, +DEVCONF_RTR_SOLICIT_DELAY = 9, +DEVCONF_USE_TEMPADDR = 10, +DEVCONF_TEMP_VALID_LFT = 11, +DEVCONF_TEMP_PREFERED_LFT = 12, +DEVCONF_REGEN_MAX_RETRY = 13, +DEVCONF_MAX_DESYNC_FACTOR = 14, +DEVCONF_MAX_ADDRESSES = 15, +DEVCONF_FORCE_MLD_VERSION = 16, +DEVCONF_ACCEPT_RA_DEFRTR = 17, +DEVCONF_ACCEPT_RA_PINFO = 18, +DEVCONF_ACCEPT_RA_RTR_PREF = 19, +DEVCONF_RTR_PROBE_INTERVAL = 20, +DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, +DEVCONF_PROXY_NDP = 22, +DEVCONF_OPTIMISTIC_DAD = 23, +DEVCONF_ACCEPT_SOURCE_ROUTE = 24, +DEVCONF_MC_FORWARDING = 25, +DEVCONF_DISABLE_IPV6 = 26, +DEVCONF_ACCEPT_DAD = 27, +DEVCONF_FORCE_TLLAO = 28, +DEVCONF_NDISC_NOTIFY = 29, +DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, +DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, +DEVCONF_SUPPRESS_FRAG_NDISC = 32, +DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, +DEVCONF_USE_OPTIMISTIC = 34, +DEVCONF_ACCEPT_RA_MTU = 35, +DEVCONF_STABLE_SECRET = 36, +DEVCONF_USE_OIF_ADDRS_ONLY = 37, +DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, +DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, +DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, +DEVCONF_DROP_UNSOLICITED_NA = 41, +DEVCONF_KEEP_ADDR_ON_DOWN = 42, +DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, +DEVCONF_SEG6_ENABLED = 44, +DEVCONF_SEG6_REQUIRE_HMAC = 45, +DEVCONF_ENHANCED_DAD = 46, +DEVCONF_ADDR_GEN_MODE = 47, +DEVCONF_DISABLE_POLICY = 48, +DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, +DEVCONF_NDISC_TCLASS = 50, +DEVCONF_RPL_SEG_ENABLED = 51, +DEVCONF_RA_DEFRTR_METRIC = 52, +DEVCONF_IOAM6_ENABLED = 53, +DEVCONF_IOAM6_ID = 54, +DEVCONF_IOAM6_ID_WIDE = 55, +DEVCONF_NDISC_EVICT_NOCARRIER = 56, +DEVCONF_ACCEPT_UNTRACKED_NA = 57, +DEVCONF_MAX = 58, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum socket_state { +SS_FREE = 0, +SS_UNCONNECTED = 1, +SS_CONNECTING = 2, +SS_CONNECTED = 3, +SS_DISCONNECTING = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +TCP_FLAG_CWR = 8388608, +TCP_FLAG_ECE = 4194304, +TCP_FLAG_URG = 2097152, +TCP_FLAG_ACK = 1048576, +TCP_FLAG_PSH = 524288, +TCP_FLAG_RST = 262144, +TCP_FLAG_SYN = 131072, +TCP_FLAG_FIN = 65536, +TCP_RESERVED_BITS = 251658240, +TCP_DATA_OFFSET = 4026531840, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +TCP_NO_QUEUE = 0, +TCP_RECV_QUEUE = 1, +TCP_SEND_QUEUE = 2, +TCP_QUEUES_NR = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_fastopen_client_fail { +TFO_STATUS_UNSPEC = 0, +TFO_COOKIE_UNAVAILABLE = 1, +TFO_DATA_NOT_ACKED = 2, +TFO_SYN_RETRANSMITTED = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_ca_state { +TCP_CA_Open = 0, +TCP_CA_Disorder = 1, +TCP_CA_CWR = 2, +TCP_CA_Recovery = 3, +TCP_CA_Loss = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +TCP_NLA_PAD = 0, +TCP_NLA_BUSY = 1, +TCP_NLA_RWND_LIMITED = 2, +TCP_NLA_SNDBUF_LIMITED = 3, +TCP_NLA_DATA_SEGS_OUT = 4, +TCP_NLA_TOTAL_RETRANS = 5, +TCP_NLA_PACING_RATE = 6, +TCP_NLA_DELIVERY_RATE = 7, +TCP_NLA_SND_CWND = 8, +TCP_NLA_REORDERING = 9, +TCP_NLA_MIN_RTT = 10, +TCP_NLA_RECUR_RETRANS = 11, +TCP_NLA_DELIVERY_RATE_APP_LMT = 12, +TCP_NLA_SNDQ_SIZE = 13, +TCP_NLA_CA_STATE = 14, +TCP_NLA_SND_SSTHRESH = 15, +TCP_NLA_DELIVERED = 16, +TCP_NLA_DELIVERED_CE = 17, +TCP_NLA_BYTES_SENT = 18, +TCP_NLA_BYTES_RETRANS = 19, +TCP_NLA_DSACK_DUPS = 20, +TCP_NLA_REORD_SEEN = 21, +TCP_NLA_SRTT = 22, +TCP_NLA_TIMEOUT_REHASH = 23, +TCP_NLA_BYTES_NOTSENT = 24, +TCP_NLA_EDT = 25, +TCP_NLA_TTL = 26, +TCP_NLA_REHASH = 27, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union iphdr__bindgen_ty_1 { +pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union in6_addr__bindgen_ty_1 { +pub u6_addr8: [__u8; 16usize], +pub u6_addr16: [__be16; 8usize], +pub u6_addr32: [__be32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ipv6hdr__bindgen_ty_1 { +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union tcp_word_hdr { +pub hdr: tcphdr, +pub words: [__be32; 5usize], +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} +impl iphdr { +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn ihl(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_ihl(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; +ihl as u64 +}); +__bindgen_bitfield_unit +} +} +impl ipv6hdr { +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn priority(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_priority(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let priority: u8 = unsafe { ::core::mem::transmute(priority) }; +priority as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcphdr { +#[inline] +pub fn doff(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } +} +#[inline] +pub fn set_doff(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn res1(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } +} +#[inline] +pub fn set_res1(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn cwr(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } +} +#[inline] +pub fn set_cwr(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn ece(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } +} +#[inline] +pub fn set_ece(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 1u8, val as u64) +} +} +#[inline] +pub fn urg(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } +} +#[inline] +pub fn set_urg(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(10usize, 1u8, val as u64) +} +} +#[inline] +pub fn ack(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } +} +#[inline] +pub fn set_ack(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(11usize, 1u8, val as u64) +} +} +#[inline] +pub fn psh(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } +} +#[inline] +pub fn set_psh(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(12usize, 1u8, val as u64) +} +} +#[inline] +pub fn rst(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } +} +#[inline] +pub fn set_rst(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(13usize, 1u8, val as u64) +} +} +#[inline] +pub fn syn(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } +} +#[inline] +pub fn set_syn(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(14usize, 1u8, val as u64) +} +} +#[inline] +pub fn fin(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +} +#[inline] +pub fn set_fin(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(15usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let doff: u16 = unsafe { ::core::mem::transmute(doff) }; +doff as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let res1: u16 = unsafe { ::core::mem::transmute(res1) }; +res1 as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; +cwr as u64 +}); +__bindgen_bitfield_unit.set(9usize, 1u8, { +let ece: u16 = unsafe { ::core::mem::transmute(ece) }; +ece as u64 +}); +__bindgen_bitfield_unit.set(10usize, 1u8, { +let urg: u16 = unsafe { ::core::mem::transmute(urg) }; +urg as u64 +}); +__bindgen_bitfield_unit.set(11usize, 1u8, { +let ack: u16 = unsafe { ::core::mem::transmute(ack) }; +ack as u64 +}); +__bindgen_bitfield_unit.set(12usize, 1u8, { +let psh: u16 = unsafe { ::core::mem::transmute(psh) }; +psh as u64 +}); +__bindgen_bitfield_unit.set(13usize, 1u8, { +let rst: u16 = unsafe { ::core::mem::transmute(rst) }; +rst as u64 +}); +__bindgen_bitfield_unit.set(14usize, 1u8, { +let syn: u16 = unsafe { ::core::mem::transmute(syn) }; +syn as u64 +}); +__bindgen_bitfield_unit.set(15usize, 1u8, { +let fin: u16 = unsafe { ::core::mem::transmute(fin) }; +fin as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcp_info { +#[inline] +pub fn tcpi_snd_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_rcv_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +} +#[inline] +pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn tcpi_fastopen_client_fail(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +} +#[inline] +pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 2u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; +tcpi_snd_wscale as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; +tcpi_rcv_wscale as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; +tcpi_delivery_rate_app_limited as u64 +}); +__bindgen_bitfield_unit.set(9usize, 2u8, { +let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; +tcpi_fastopen_client_fail as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips/prctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips/prctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips/prctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,231 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prctl_mm_map { +pub start_code: __u64, +pub end_code: __u64, +pub start_data: __u64, +pub end_data: __u64, +pub start_brk: __u64, +pub brk: __u64, +pub start_stack: __u64, +pub arg_start: __u64, +pub arg_end: __u64, +pub env_start: __u64, +pub env_end: __u64, +pub auxv: *mut __u64, +pub auxv_size: __u32, +pub exe_fd: __u32, +} +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const PR_SET_PDEATHSIG: u32 = 1; +pub const PR_GET_PDEATHSIG: u32 = 2; +pub const PR_GET_DUMPABLE: u32 = 3; +pub const PR_SET_DUMPABLE: u32 = 4; +pub const PR_GET_UNALIGN: u32 = 5; +pub const PR_SET_UNALIGN: u32 = 6; +pub const PR_UNALIGN_NOPRINT: u32 = 1; +pub const PR_UNALIGN_SIGBUS: u32 = 2; +pub const PR_GET_KEEPCAPS: u32 = 7; +pub const PR_SET_KEEPCAPS: u32 = 8; +pub const PR_GET_FPEMU: u32 = 9; +pub const PR_SET_FPEMU: u32 = 10; +pub const PR_FPEMU_NOPRINT: u32 = 1; +pub const PR_FPEMU_SIGFPE: u32 = 2; +pub const PR_GET_FPEXC: u32 = 11; +pub const PR_SET_FPEXC: u32 = 12; +pub const PR_FP_EXC_SW_ENABLE: u32 = 128; +pub const PR_FP_EXC_DIV: u32 = 65536; +pub const PR_FP_EXC_OVF: u32 = 131072; +pub const PR_FP_EXC_UND: u32 = 262144; +pub const PR_FP_EXC_RES: u32 = 524288; +pub const PR_FP_EXC_INV: u32 = 1048576; +pub const PR_FP_EXC_DISABLED: u32 = 0; +pub const PR_FP_EXC_NONRECOV: u32 = 1; +pub const PR_FP_EXC_ASYNC: u32 = 2; +pub const PR_FP_EXC_PRECISE: u32 = 3; +pub const PR_GET_TIMING: u32 = 13; +pub const PR_SET_TIMING: u32 = 14; +pub const PR_TIMING_STATISTICAL: u32 = 0; +pub const PR_TIMING_TIMESTAMP: u32 = 1; +pub const PR_SET_NAME: u32 = 15; +pub const PR_GET_NAME: u32 = 16; +pub const PR_GET_ENDIAN: u32 = 19; +pub const PR_SET_ENDIAN: u32 = 20; +pub const PR_ENDIAN_BIG: u32 = 0; +pub const PR_ENDIAN_LITTLE: u32 = 1; +pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; +pub const PR_GET_SECCOMP: u32 = 21; +pub const PR_SET_SECCOMP: u32 = 22; +pub const PR_CAPBSET_READ: u32 = 23; +pub const PR_CAPBSET_DROP: u32 = 24; +pub const PR_GET_TSC: u32 = 25; +pub const PR_SET_TSC: u32 = 26; +pub const PR_TSC_ENABLE: u32 = 1; +pub const PR_TSC_SIGSEGV: u32 = 2; +pub const PR_GET_SECUREBITS: u32 = 27; +pub const PR_SET_SECUREBITS: u32 = 28; +pub const PR_SET_TIMERSLACK: u32 = 29; +pub const PR_GET_TIMERSLACK: u32 = 30; +pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; +pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; +pub const PR_MCE_KILL: u32 = 33; +pub const PR_MCE_KILL_CLEAR: u32 = 0; +pub const PR_MCE_KILL_SET: u32 = 1; +pub const PR_MCE_KILL_LATE: u32 = 0; +pub const PR_MCE_KILL_EARLY: u32 = 1; +pub const PR_MCE_KILL_DEFAULT: u32 = 2; +pub const PR_MCE_KILL_GET: u32 = 34; +pub const PR_SET_MM: u32 = 35; +pub const PR_SET_MM_START_CODE: u32 = 1; +pub const PR_SET_MM_END_CODE: u32 = 2; +pub const PR_SET_MM_START_DATA: u32 = 3; +pub const PR_SET_MM_END_DATA: u32 = 4; +pub const PR_SET_MM_START_STACK: u32 = 5; +pub const PR_SET_MM_START_BRK: u32 = 6; +pub const PR_SET_MM_BRK: u32 = 7; +pub const PR_SET_MM_ARG_START: u32 = 8; +pub const PR_SET_MM_ARG_END: u32 = 9; +pub const PR_SET_MM_ENV_START: u32 = 10; +pub const PR_SET_MM_ENV_END: u32 = 11; +pub const PR_SET_MM_AUXV: u32 = 12; +pub const PR_SET_MM_EXE_FILE: u32 = 13; +pub const PR_SET_MM_MAP: u32 = 14; +pub const PR_SET_MM_MAP_SIZE: u32 = 15; +pub const PR_SET_PTRACER: u32 = 1499557217; +pub const PR_SET_CHILD_SUBREAPER: u32 = 36; +pub const PR_GET_CHILD_SUBREAPER: u32 = 37; +pub const PR_SET_NO_NEW_PRIVS: u32 = 38; +pub const PR_GET_NO_NEW_PRIVS: u32 = 39; +pub const PR_GET_TID_ADDRESS: u32 = 40; +pub const PR_SET_THP_DISABLE: u32 = 41; +pub const PR_GET_THP_DISABLE: u32 = 42; +pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; +pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; +pub const PR_SET_FP_MODE: u32 = 45; +pub const PR_GET_FP_MODE: u32 = 46; +pub const PR_FP_MODE_FR: u32 = 1; +pub const PR_FP_MODE_FRE: u32 = 2; +pub const PR_CAP_AMBIENT: u32 = 47; +pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; +pub const PR_CAP_AMBIENT_RAISE: u32 = 2; +pub const PR_CAP_AMBIENT_LOWER: u32 = 3; +pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; +pub const PR_SVE_SET_VL: u32 = 50; +pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SVE_GET_VL: u32 = 51; +pub const PR_SVE_VL_LEN_MASK: u32 = 65535; +pub const PR_SVE_VL_INHERIT: u32 = 131072; +pub const PR_GET_SPECULATION_CTRL: u32 = 52; +pub const PR_SET_SPECULATION_CTRL: u32 = 53; +pub const PR_SPEC_STORE_BYPASS: u32 = 0; +pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; +pub const PR_SPEC_L1D_FLUSH: u32 = 2; +pub const PR_SPEC_NOT_AFFECTED: u32 = 0; +pub const PR_SPEC_PRCTL: u32 = 1; +pub const PR_SPEC_ENABLE: u32 = 2; +pub const PR_SPEC_DISABLE: u32 = 4; +pub const PR_SPEC_FORCE_DISABLE: u32 = 8; +pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; +pub const PR_PAC_RESET_KEYS: u32 = 54; +pub const PR_PAC_APIAKEY: u32 = 1; +pub const PR_PAC_APIBKEY: u32 = 2; +pub const PR_PAC_APDAKEY: u32 = 4; +pub const PR_PAC_APDBKEY: u32 = 8; +pub const PR_PAC_APGAKEY: u32 = 16; +pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; +pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; +pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; +pub const PR_MTE_TCF_NONE: u32 = 0; +pub const PR_MTE_TCF_SYNC: u32 = 2; +pub const PR_MTE_TCF_ASYNC: u32 = 4; +pub const PR_MTE_TCF_MASK: u32 = 6; +pub const PR_MTE_TAG_SHIFT: u32 = 3; +pub const PR_MTE_TAG_MASK: u32 = 524280; +pub const PR_MTE_TCF_SHIFT: u32 = 1; +pub const PR_SET_IO_FLUSHER: u32 = 57; +pub const PR_GET_IO_FLUSHER: u32 = 58; +pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; +pub const PR_SYS_DISPATCH_OFF: u32 = 0; +pub const PR_SYS_DISPATCH_ON: u32 = 1; +pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; +pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; +pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; +pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; +pub const PR_SCHED_CORE: u32 = 62; +pub const PR_SCHED_CORE_GET: u32 = 0; +pub const PR_SCHED_CORE_CREATE: u32 = 1; +pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; +pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; +pub const PR_SCHED_CORE_MAX: u32 = 4; +pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; +pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; +pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; +pub const PR_SME_SET_VL: u32 = 63; +pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SME_GET_VL: u32 = 64; +pub const PR_SME_VL_LEN_MASK: u32 = 65535; +pub const PR_SME_VL_INHERIT: u32 = 131072; +pub const PR_SET_MDWE: u32 = 65; +pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; +pub const PR_GET_MDWE: u32 = 66; +pub const PR_SET_VMA: u32 = 1398164801; +pub const PR_SET_VMA_ANON_NAME: u32 = 0; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips/system.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips/system.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,109 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sysinfo { +pub uptime: __kernel_long_t, +pub loads: [__kernel_ulong_t; 3usize], +pub totalram: __kernel_ulong_t, +pub freeram: __kernel_ulong_t, +pub sharedram: __kernel_ulong_t, +pub bufferram: __kernel_ulong_t, +pub totalswap: __kernel_ulong_t, +pub freeswap: __kernel_ulong_t, +pub procs: __u16, +pub pad: __u16, +pub totalhigh: __kernel_ulong_t, +pub freehigh: __kernel_ulong_t, +pub mem_unit: __u32, +pub _f: [crate::ctypes::c_char; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct oldold_utsname { +pub sysname: [crate::ctypes::c_char; 9usize], +pub nodename: [crate::ctypes::c_char; 9usize], +pub release: [crate::ctypes::c_char; 9usize], +pub version: [crate::ctypes::c_char; 9usize], +pub machine: [crate::ctypes::c_char; 9usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct old_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct new_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +pub domainname: [crate::ctypes::c_char; 65usize], +} +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const SI_LOAD_SHIFT: u32 = 16; +pub const __OLD_UTS_LEN: u32 = 8; +pub const __NEW_UTS_LEN: u32 = 64; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/errno.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/errno.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/errno.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,137 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub const EPERM: u32 = 1; +pub const ENOENT: u32 = 2; +pub const ESRCH: u32 = 3; +pub const EINTR: u32 = 4; +pub const EIO: u32 = 5; +pub const ENXIO: u32 = 6; +pub const E2BIG: u32 = 7; +pub const ENOEXEC: u32 = 8; +pub const EBADF: u32 = 9; +pub const ECHILD: u32 = 10; +pub const EAGAIN: u32 = 11; +pub const ENOMEM: u32 = 12; +pub const EACCES: u32 = 13; +pub const EFAULT: u32 = 14; +pub const ENOTBLK: u32 = 15; +pub const EBUSY: u32 = 16; +pub const EEXIST: u32 = 17; +pub const EXDEV: u32 = 18; +pub const ENODEV: u32 = 19; +pub const ENOTDIR: u32 = 20; +pub const EISDIR: u32 = 21; +pub const EINVAL: u32 = 22; +pub const ENFILE: u32 = 23; +pub const EMFILE: u32 = 24; +pub const ENOTTY: u32 = 25; +pub const ETXTBSY: u32 = 26; +pub const EFBIG: u32 = 27; +pub const ENOSPC: u32 = 28; +pub const ESPIPE: u32 = 29; +pub const EROFS: u32 = 30; +pub const EMLINK: u32 = 31; +pub const EPIPE: u32 = 32; +pub const EDOM: u32 = 33; +pub const ERANGE: u32 = 34; +pub const ENOMSG: u32 = 35; +pub const EIDRM: u32 = 36; +pub const ECHRNG: u32 = 37; +pub const EL2NSYNC: u32 = 38; +pub const EL3HLT: u32 = 39; +pub const EL3RST: u32 = 40; +pub const ELNRNG: u32 = 41; +pub const EUNATCH: u32 = 42; +pub const ENOCSI: u32 = 43; +pub const EL2HLT: u32 = 44; +pub const EDEADLK: u32 = 45; +pub const ENOLCK: u32 = 46; +pub const EBADE: u32 = 50; +pub const EBADR: u32 = 51; +pub const EXFULL: u32 = 52; +pub const ENOANO: u32 = 53; +pub const EBADRQC: u32 = 54; +pub const EBADSLT: u32 = 55; +pub const EDEADLOCK: u32 = 56; +pub const EBFONT: u32 = 59; +pub const ENOSTR: u32 = 60; +pub const ENODATA: u32 = 61; +pub const ETIME: u32 = 62; +pub const ENOSR: u32 = 63; +pub const ENONET: u32 = 64; +pub const ENOPKG: u32 = 65; +pub const EREMOTE: u32 = 66; +pub const ENOLINK: u32 = 67; +pub const EADV: u32 = 68; +pub const ESRMNT: u32 = 69; +pub const ECOMM: u32 = 70; +pub const EPROTO: u32 = 71; +pub const EDOTDOT: u32 = 73; +pub const EMULTIHOP: u32 = 74; +pub const EBADMSG: u32 = 77; +pub const ENAMETOOLONG: u32 = 78; +pub const EOVERFLOW: u32 = 79; +pub const ENOTUNIQ: u32 = 80; +pub const EBADFD: u32 = 81; +pub const EREMCHG: u32 = 82; +pub const ELIBACC: u32 = 83; +pub const ELIBBAD: u32 = 84; +pub const ELIBSCN: u32 = 85; +pub const ELIBMAX: u32 = 86; +pub const ELIBEXEC: u32 = 87; +pub const EILSEQ: u32 = 88; +pub const ENOSYS: u32 = 89; +pub const ELOOP: u32 = 90; +pub const ERESTART: u32 = 91; +pub const ESTRPIPE: u32 = 92; +pub const ENOTEMPTY: u32 = 93; +pub const EUSERS: u32 = 94; +pub const ENOTSOCK: u32 = 95; +pub const EDESTADDRREQ: u32 = 96; +pub const EMSGSIZE: u32 = 97; +pub const EPROTOTYPE: u32 = 98; +pub const ENOPROTOOPT: u32 = 99; +pub const EPROTONOSUPPORT: u32 = 120; +pub const ESOCKTNOSUPPORT: u32 = 121; +pub const EOPNOTSUPP: u32 = 122; +pub const EPFNOSUPPORT: u32 = 123; +pub const EAFNOSUPPORT: u32 = 124; +pub const EADDRINUSE: u32 = 125; +pub const EADDRNOTAVAIL: u32 = 126; +pub const ENETDOWN: u32 = 127; +pub const ENETUNREACH: u32 = 128; +pub const ENETRESET: u32 = 129; +pub const ECONNABORTED: u32 = 130; +pub const ECONNRESET: u32 = 131; +pub const ENOBUFS: u32 = 132; +pub const EISCONN: u32 = 133; +pub const ENOTCONN: u32 = 134; +pub const EUCLEAN: u32 = 135; +pub const ENOTNAM: u32 = 137; +pub const ENAVAIL: u32 = 138; +pub const EISNAM: u32 = 139; +pub const EREMOTEIO: u32 = 140; +pub const EINIT: u32 = 141; +pub const EREMDEV: u32 = 142; +pub const ESHUTDOWN: u32 = 143; +pub const ETOOMANYREFS: u32 = 144; +pub const ETIMEDOUT: u32 = 145; +pub const ECONNREFUSED: u32 = 146; +pub const EHOSTDOWN: u32 = 147; +pub const EHOSTUNREACH: u32 = 148; +pub const EWOULDBLOCK: u32 = 11; +pub const EALREADY: u32 = 149; +pub const EINPROGRESS: u32 = 150; +pub const ESTALE: u32 = 151; +pub const ECANCELED: u32 = 158; +pub const ENOMEDIUM: u32 = 159; +pub const EMEDIUMTYPE: u32 = 160; +pub const ENOKEY: u32 = 161; +pub const EKEYEXPIRED: u32 = 162; +pub const EKEYREVOKED: u32 = 163; +pub const EKEYREJECTED: u32 = 164; +pub const EOWNERDEAD: u32 = 165; +pub const ENOTRECOVERABLE: u32 = 166; +pub const ERFKILL: u32 = 167; +pub const EHWPOISON: u32 = 168; +pub const EDQUOT: u32 = 1133; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/general.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/general.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/general.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/general.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,3100 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_sighandler_t = ::core::option::Option; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type cap_user_header_t = *mut __user_cap_header_struct; +pub type cap_user_data_t = *mut __user_cap_data_struct; +pub type __kernel_rwf_t = crate::ctypes::c_int; +pub type old_sigset_t = crate::ctypes::c_ulong; +pub type __signalfn_t = ::core::option::Option; +pub type __sighandler_t = __signalfn_t; +pub type __restorefn_t = ::core::option::Option; +pub type __sigrestore_t = __restorefn_t; +pub type stack_t = sigaltstack; +pub type sigval_t = sigval; +pub type siginfo_t = siginfo; +pub type sigevent_t = sigevent; +pub type cc_t = crate::ctypes::c_uchar; +pub type speed_t = crate::ctypes::c_uint; +pub type tcflag_t = crate::ctypes::c_uint; +pub type fsid_t = __kernel_fsid_t; +pub type __fsword_t = __u32; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fd_set { +pub fds_bits: [crate::ctypes::c_ulong; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fsid_t { +pub val: [crate::ctypes::c_int; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_header_struct { +pub version: __u32, +pub pid: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_data_struct { +pub effective: __u32, +pub permitted: __u32, +pub inheritable: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data { +pub magic_etc: __le32, +pub data: [vfs_cap_data__bindgen_ty_1; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data { +pub magic_etc: __le32, +pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], +pub rootid: __le32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct f_owner_ex { +pub type_: crate::ctypes::c_int, +pub pid: __kernel_pid_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_off_t, +pub l_len: __kernel_off_t, +pub l_pid: __kernel_pid_t, +pub l_sysid: crate::ctypes::c_long, +pub pad: [crate::ctypes::c_long; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock64 { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_loff_t, +pub l_len: __kernel_loff_t, +pub l_pid: __kernel_pid_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct open_how { +pub flags: __u64, +pub mode: __u64, +pub resolve: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct epoll_event { +pub events: __poll_t, +pub data: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct futex_waitv { +pub val: __u64, +pub uaddr: __u64, +pub flags: __u32, +pub __reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct robust_list { +pub next: *mut robust_list, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct robust_list_head { +pub list: robust_list, +pub futex_offset: crate::ctypes::c_long, +pub list_op_pending: *mut robust_list, +} +#[repr(C)] +#[derive(Debug)] +pub struct inotify_event { +pub wd: __s32, +pub mask: __u32, +pub cookie: __u32, +pub len: __u32, +pub name: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct pollfd { +pub fd: crate::ctypes::c_int, +pub events: crate::ctypes::c_short, +pub revents: crate::ctypes::c_short, +} +#[repr(C)] +#[derive(Debug)] +pub struct rand_pool_info { +pub entropy_count: crate::ctypes::c_int, +pub buf_size: crate::ctypes::c_int, +pub buf: __IncompleteArrayField<__u32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct timeval { +pub tv_sec: __kernel_old_time_t, +pub tv_usec: __kernel_suseconds_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct itimerspec { +pub it_interval: timespec, +pub it_value: timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct itimerval { +pub it_interval: timeval, +pub it_value: timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct timezone { +pub tz_minuteswest: crate::ctypes::c_int, +pub tz_dsttime: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rusage { +pub ru_utime: __kernel_old_timeval, +pub ru_stime: __kernel_old_timeval, +pub ru_maxrss: __kernel_long_t, +pub ru_ixrss: __kernel_long_t, +pub ru_idrss: __kernel_long_t, +pub ru_isrss: __kernel_long_t, +pub ru_minflt: __kernel_long_t, +pub ru_majflt: __kernel_long_t, +pub ru_nswap: __kernel_long_t, +pub ru_inblock: __kernel_long_t, +pub ru_oublock: __kernel_long_t, +pub ru_msgsnd: __kernel_long_t, +pub ru_msgrcv: __kernel_long_t, +pub ru_nsignals: __kernel_long_t, +pub ru_nvcsw: __kernel_long_t, +pub ru_nivcsw: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rlimit { +pub rlim_cur: __kernel_ulong_t, +pub rlim_max: __kernel_ulong_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rlimit64 { +pub rlim_cur: __u64, +pub rlim_max: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct clone_args { +pub flags: __u64, +pub pidfd: __u64, +pub child_tid: __u64, +pub parent_tid: __u64, +pub exit_signal: __u64, +pub stack: __u64, +pub stack_size: __u64, +pub tls: __u64, +pub set_tid: __u64, +pub set_tid_size: __u64, +pub cgroup: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sigset_t { +pub sig: [crate::ctypes::c_ulong; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sigaction { +pub sa_flags: crate::ctypes::c_uint, +pub sa_handler: __sighandler_t, +pub sa_mask: sigset_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sigaltstack { +pub ss_sp: *mut crate::ctypes::c_void, +pub ss_size: __kernel_size_t, +pub ss_flags: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_1 { +pub _pid: __kernel_pid_t, +pub _uid: __kernel_uid32_t, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __sifields__bindgen_ty_2 { +pub _tid: __kernel_timer_t, +pub _overrun: crate::ctypes::c_int, +pub _sigval: sigval_t, +pub _sys_private: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __sifields__bindgen_ty_3 { +pub _pid: __kernel_pid_t, +pub _uid: __kernel_uid32_t, +pub _sigval: sigval_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_4 { +pub _pid: __kernel_pid_t, +pub _uid: __kernel_uid32_t, +pub _status: crate::ctypes::c_int, +pub _utime: __kernel_clock_t, +pub _stime: __kernel_clock_t, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __sifields__bindgen_ty_5 { +pub _addr: *mut crate::ctypes::c_void, +pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { +pub _dummy_bnd: [crate::ctypes::c_char; 4usize], +pub _lower: *mut crate::ctypes::c_void, +pub _upper: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 { +pub _dummy_pkey: [crate::ctypes::c_char; 4usize], +pub _pkey: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { +pub _data: crate::ctypes::c_ulong, +pub _type: __u32, +pub _flags: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_6 { +pub _band: crate::ctypes::c_long, +pub _fd: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_7 { +pub _call_addr: *mut crate::ctypes::c_void, +pub _syscall: crate::ctypes::c_int, +pub _arch: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo { +pub __bindgen_anon_1: siginfo__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { +pub si_signo: crate::ctypes::c_int, +pub si_code: crate::ctypes::c_int, +pub si_errno: crate::ctypes::c_int, +pub _sifields: __sifields, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sigevent { +pub sigev_value: sigval_t, +pub sigev_signo: crate::ctypes::c_int, +pub sigev_notify: crate::ctypes::c_int, +pub _sigev_un: sigevent__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { +pub _function: ::core::option::Option, +pub _attribute: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statx_timestamp { +pub tv_sec: __s64, +pub tv_nsec: __u32, +pub __reserved: __s32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statx { +pub stx_mask: __u32, +pub stx_blksize: __u32, +pub stx_attributes: __u64, +pub stx_nlink: __u32, +pub stx_uid: __u32, +pub stx_gid: __u32, +pub stx_mode: __u16, +pub __spare0: [__u16; 1usize], +pub stx_ino: __u64, +pub stx_size: __u64, +pub stx_blocks: __u64, +pub stx_attributes_mask: __u64, +pub stx_atime: statx_timestamp, +pub stx_btime: statx_timestamp, +pub stx_ctime: statx_timestamp, +pub stx_mtime: statx_timestamp, +pub stx_rdev_major: __u32, +pub stx_rdev_minor: __u32, +pub stx_dev_major: __u32, +pub stx_dev_minor: __u32, +pub stx_mnt_id: __u64, +pub stx_dio_mem_align: __u32, +pub stx_dio_offset_align: __u32, +pub __spare3: [__u64; 12usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct termios { +pub c_iflag: tcflag_t, +pub c_oflag: tcflag_t, +pub c_cflag: tcflag_t, +pub c_lflag: tcflag_t, +pub c_line: cc_t, +pub c_cc: [cc_t; 23usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct termios2 { +pub c_iflag: tcflag_t, +pub c_oflag: tcflag_t, +pub c_cflag: tcflag_t, +pub c_lflag: tcflag_t, +pub c_line: cc_t, +pub c_cc: [cc_t; 23usize], +pub c_ispeed: speed_t, +pub c_ospeed: speed_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ktermios { +pub c_iflag: tcflag_t, +pub c_oflag: tcflag_t, +pub c_cflag: tcflag_t, +pub c_lflag: tcflag_t, +pub c_line: cc_t, +pub c_cc: [cc_t; 23usize], +pub c_ispeed: speed_t, +pub c_ospeed: speed_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sgttyb { +pub sg_ispeed: crate::ctypes::c_char, +pub sg_ospeed: crate::ctypes::c_char, +pub sg_erase: crate::ctypes::c_char, +pub sg_kill: crate::ctypes::c_char, +pub sg_flags: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tchars { +pub t_intrc: crate::ctypes::c_char, +pub t_quitc: crate::ctypes::c_char, +pub t_startc: crate::ctypes::c_char, +pub t_stopc: crate::ctypes::c_char, +pub t_eofc: crate::ctypes::c_char, +pub t_brkc: crate::ctypes::c_char, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ltchars { +pub t_suspc: crate::ctypes::c_char, +pub t_dsuspc: crate::ctypes::c_char, +pub t_rprntc: crate::ctypes::c_char, +pub t_flushc: crate::ctypes::c_char, +pub t_werasc: crate::ctypes::c_char, +pub t_lnextc: crate::ctypes::c_char, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct winsize { +pub ws_row: crate::ctypes::c_ushort, +pub ws_col: crate::ctypes::c_ushort, +pub ws_xpixel: crate::ctypes::c_ushort, +pub ws_ypixel: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct termio { +pub c_iflag: crate::ctypes::c_ushort, +pub c_oflag: crate::ctypes::c_ushort, +pub c_cflag: crate::ctypes::c_ushort, +pub c_lflag: crate::ctypes::c_ushort, +pub c_line: crate::ctypes::c_char, +pub c_cc: [crate::ctypes::c_uchar; 23usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub iov_base: *mut crate::ctypes::c_void, +pub iov_len: __kernel_size_t, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct uffd_msg { +pub event: __u8, +pub reserved1: __u8, +pub reserved2: __u16, +pub reserved3: __u32, +pub arg: uffd_msg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { +pub flags: __u64, +pub address: __u64, +pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { +pub ufd: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { +pub from: __u64, +pub to: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { +pub start: __u64, +pub end: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { +pub reserved1: __u64, +pub reserved2: __u64, +pub reserved3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_api { +pub api: __u64, +pub features: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_range { +pub start: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_register { +pub range: uffdio_range, +pub mode: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_copy { +pub dst: __u64, +pub src: __u64, +pub len: __u64, +pub mode: __u64, +pub copy: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_zeropage { +pub range: uffdio_range, +pub mode: __u64, +pub zeropage: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_writeprotect { +pub range: uffdio_range, +pub mode: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_continue { +pub range: uffdio_range, +pub mode: __u64, +pub mapped: __s64, +} +#[repr(C)] +#[derive(Debug)] +pub struct linux_dirent64 { +pub d_ino: crate::ctypes::c_ulonglong, +pub d_off: crate::ctypes::c_longlong, +pub d_reclen: __u16, +pub d_type: __u8, +pub d_name: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat { +pub st_dev: crate::ctypes::c_uint, +pub st_pad1: [crate::ctypes::c_long; 3usize], +pub st_ino: __kernel_ino_t, +pub st_mode: __kernel_mode_t, +pub st_nlink: __u32, +pub st_uid: __kernel_uid32_t, +pub st_gid: __kernel_gid32_t, +pub st_rdev: crate::ctypes::c_uint, +pub st_pad2: [crate::ctypes::c_long; 2usize], +pub st_size: crate::ctypes::c_long, +pub st_pad3: crate::ctypes::c_long, +pub st_atime: crate::ctypes::c_long, +pub st_atime_nsec: crate::ctypes::c_long, +pub st_mtime: crate::ctypes::c_long, +pub st_mtime_nsec: crate::ctypes::c_long, +pub st_ctime: crate::ctypes::c_long, +pub st_ctime_nsec: crate::ctypes::c_long, +pub st_blksize: crate::ctypes::c_long, +pub st_blocks: crate::ctypes::c_long, +pub st_pad4: [crate::ctypes::c_long; 14usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat64 { +pub st_dev: crate::ctypes::c_ulong, +pub st_pad0: [crate::ctypes::c_ulong; 3usize], +pub st_ino: crate::ctypes::c_ulonglong, +pub st_mode: __kernel_mode_t, +pub st_nlink: __u32, +pub st_uid: __kernel_uid32_t, +pub st_gid: __kernel_gid32_t, +pub st_rdev: crate::ctypes::c_ulong, +pub st_pad1: [crate::ctypes::c_ulong; 3usize], +pub st_size: crate::ctypes::c_longlong, +pub st_atime: crate::ctypes::c_long, +pub st_atime_nsec: crate::ctypes::c_ulong, +pub st_mtime: crate::ctypes::c_long, +pub st_mtime_nsec: crate::ctypes::c_ulong, +pub st_ctime: crate::ctypes::c_long, +pub st_ctime_nsec: crate::ctypes::c_ulong, +pub st_blksize: crate::ctypes::c_ulong, +pub st_pad2: crate::ctypes::c_ulong, +pub st_blocks: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs { +pub f_type: crate::ctypes::c_long, +pub f_bsize: crate::ctypes::c_long, +pub f_frsize: crate::ctypes::c_long, +pub f_blocks: crate::ctypes::c_long, +pub f_bfree: crate::ctypes::c_long, +pub f_files: crate::ctypes::c_long, +pub f_ffree: crate::ctypes::c_long, +pub f_bavail: crate::ctypes::c_long, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: crate::ctypes::c_long, +pub f_flags: crate::ctypes::c_long, +pub f_spare: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_frsize: __u32, +pub __pad: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_bavail: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct user_desc { +pub entry_number: crate::ctypes::c_uint, +pub base_addr: crate::ctypes::c_uint, +pub limit: crate::ctypes::c_uint, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub __bindgen_padding_0: [u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct kernel_sigset_t { +pub sig: [crate::ctypes::c_ulong; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct kernel_sigaction { +pub sa_handler_kernel: __kernel_sighandler_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_mask: kernel_sigset_t, +} +pub const LINUX_VERSION_CODE: u32 = 394240; +pub const LINUX_VERSION_MAJOR: u32 = 6; +pub const LINUX_VERSION_PATCHLEVEL: u32 = 4; +pub const LINUX_VERSION_SUBLEVEL: u32 = 0; +pub const AT_SYSINFO_EHDR: u32 = 33; +pub const AT_VECTOR_SIZE_ARCH: u32 = 1; +pub const AT_NULL: u32 = 0; +pub const AT_IGNORE: u32 = 1; +pub const AT_EXECFD: u32 = 2; +pub const AT_PHDR: u32 = 3; +pub const AT_PHENT: u32 = 4; +pub const AT_PHNUM: u32 = 5; +pub const AT_PAGESZ: u32 = 6; +pub const AT_BASE: u32 = 7; +pub const AT_FLAGS: u32 = 8; +pub const AT_ENTRY: u32 = 9; +pub const AT_NOTELF: u32 = 10; +pub const AT_UID: u32 = 11; +pub const AT_EUID: u32 = 12; +pub const AT_GID: u32 = 13; +pub const AT_EGID: u32 = 14; +pub const AT_PLATFORM: u32 = 15; +pub const AT_HWCAP: u32 = 16; +pub const AT_CLKTCK: u32 = 17; +pub const AT_SECURE: u32 = 23; +pub const AT_BASE_PLATFORM: u32 = 24; +pub const AT_RANDOM: u32 = 25; +pub const AT_HWCAP2: u32 = 26; +pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; +pub const AT_RSEQ_ALIGN: u32 = 28; +pub const AT_EXECFN: u32 = 31; +pub const AT_MINSIGSTKSZ: u32 = 51; +pub const __FD_SETSIZE: u32 = 1024; +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; +pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; +pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; +pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; +pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; +pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; +pub const VFS_CAP_REVISION_SHIFT: u32 = 24; +pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; +pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; +pub const VFS_CAP_REVISION_1: u32 = 16777216; +pub const VFS_CAP_U32_1: u32 = 1; +pub const VFS_CAP_REVISION_2: u32 = 33554432; +pub const VFS_CAP_U32_2: u32 = 2; +pub const VFS_CAP_REVISION_3: u32 = 50331648; +pub const VFS_CAP_U32_3: u32 = 2; +pub const VFS_CAP_U32: u32 = 2; +pub const VFS_CAP_REVISION: u32 = 50331648; +pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S: u32 = 1; +pub const CAP_CHOWN: u32 = 0; +pub const CAP_DAC_OVERRIDE: u32 = 1; +pub const CAP_DAC_READ_SEARCH: u32 = 2; +pub const CAP_FOWNER: u32 = 3; +pub const CAP_FSETID: u32 = 4; +pub const CAP_KILL: u32 = 5; +pub const CAP_SETGID: u32 = 6; +pub const CAP_SETUID: u32 = 7; +pub const CAP_SETPCAP: u32 = 8; +pub const CAP_LINUX_IMMUTABLE: u32 = 9; +pub const CAP_NET_BIND_SERVICE: u32 = 10; +pub const CAP_NET_BROADCAST: u32 = 11; +pub const CAP_NET_ADMIN: u32 = 12; +pub const CAP_NET_RAW: u32 = 13; +pub const CAP_IPC_LOCK: u32 = 14; +pub const CAP_IPC_OWNER: u32 = 15; +pub const CAP_SYS_MODULE: u32 = 16; +pub const CAP_SYS_RAWIO: u32 = 17; +pub const CAP_SYS_CHROOT: u32 = 18; +pub const CAP_SYS_PTRACE: u32 = 19; +pub const CAP_SYS_PACCT: u32 = 20; +pub const CAP_SYS_ADMIN: u32 = 21; +pub const CAP_SYS_BOOT: u32 = 22; +pub const CAP_SYS_NICE: u32 = 23; +pub const CAP_SYS_RESOURCE: u32 = 24; +pub const CAP_SYS_TIME: u32 = 25; +pub const CAP_SYS_TTY_CONFIG: u32 = 26; +pub const CAP_MKNOD: u32 = 27; +pub const CAP_LEASE: u32 = 28; +pub const CAP_AUDIT_WRITE: u32 = 29; +pub const CAP_AUDIT_CONTROL: u32 = 30; +pub const CAP_SETFCAP: u32 = 31; +pub const CAP_MAC_OVERRIDE: u32 = 32; +pub const CAP_MAC_ADMIN: u32 = 33; +pub const CAP_SYSLOG: u32 = 34; +pub const CAP_WAKE_ALARM: u32 = 35; +pub const CAP_BLOCK_SUSPEND: u32 = 36; +pub const CAP_AUDIT_READ: u32 = 37; +pub const CAP_PERFMON: u32 = 38; +pub const CAP_BPF: u32 = 39; +pub const CAP_CHECKPOINT_RESTORE: u32 = 40; +pub const CAP_LAST_CAP: u32 = 40; +pub const O_APPEND: u32 = 8; +pub const O_DSYNC: u32 = 16; +pub const O_NONBLOCK: u32 = 128; +pub const O_CREAT: u32 = 256; +pub const O_TRUNC: u32 = 512; +pub const O_EXCL: u32 = 1024; +pub const O_NOCTTY: u32 = 2048; +pub const FASYNC: u32 = 4096; +pub const O_LARGEFILE: u32 = 8192; +pub const __O_SYNC: u32 = 16384; +pub const O_SYNC: u32 = 16400; +pub const O_DIRECT: u32 = 32768; +pub const F_GETLK: u32 = 14; +pub const F_SETLK: u32 = 6; +pub const F_SETLKW: u32 = 7; +pub const F_SETOWN: u32 = 24; +pub const F_GETOWN: u32 = 23; +pub const F_GETLK64: u32 = 33; +pub const F_SETLK64: u32 = 34; +pub const F_SETLKW64: u32 = 35; +pub const O_ACCMODE: u32 = 3; +pub const O_RDONLY: u32 = 0; +pub const O_WRONLY: u32 = 1; +pub const O_RDWR: u32 = 2; +pub const O_DIRECTORY: u32 = 65536; +pub const O_NOFOLLOW: u32 = 131072; +pub const O_NOATIME: u32 = 262144; +pub const O_CLOEXEC: u32 = 524288; +pub const O_PATH: u32 = 2097152; +pub const __O_TMPFILE: u32 = 4194304; +pub const O_TMPFILE: u32 = 4259840; +pub const O_NDELAY: u32 = 128; +pub const F_DUPFD: u32 = 0; +pub const F_GETFD: u32 = 1; +pub const F_SETFD: u32 = 2; +pub const F_GETFL: u32 = 3; +pub const F_SETFL: u32 = 4; +pub const F_SETSIG: u32 = 10; +pub const F_GETSIG: u32 = 11; +pub const F_SETOWN_EX: u32 = 15; +pub const F_GETOWN_EX: u32 = 16; +pub const F_GETOWNER_UIDS: u32 = 17; +pub const F_OFD_GETLK: u32 = 36; +pub const F_OFD_SETLK: u32 = 37; +pub const F_OFD_SETLKW: u32 = 38; +pub const F_OWNER_TID: u32 = 0; +pub const F_OWNER_PID: u32 = 1; +pub const F_OWNER_PGRP: u32 = 2; +pub const FD_CLOEXEC: u32 = 1; +pub const F_RDLCK: u32 = 0; +pub const F_WRLCK: u32 = 1; +pub const F_UNLCK: u32 = 2; +pub const F_EXLCK: u32 = 4; +pub const F_SHLCK: u32 = 8; +pub const LOCK_SH: u32 = 1; +pub const LOCK_EX: u32 = 2; +pub const LOCK_NB: u32 = 4; +pub const LOCK_UN: u32 = 8; +pub const LOCK_MAND: u32 = 32; +pub const LOCK_READ: u32 = 64; +pub const LOCK_WRITE: u32 = 128; +pub const LOCK_RW: u32 = 192; +pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; +pub const RESOLVE_NO_XDEV: u32 = 1; +pub const RESOLVE_NO_MAGICLINKS: u32 = 2; +pub const RESOLVE_NO_SYMLINKS: u32 = 4; +pub const RESOLVE_BENEATH: u32 = 8; +pub const RESOLVE_IN_ROOT: u32 = 16; +pub const RESOLVE_CACHED: u32 = 32; +pub const F_SETLEASE: u32 = 1024; +pub const F_GETLEASE: u32 = 1025; +pub const F_CANCELLK: u32 = 1029; +pub const F_DUPFD_CLOEXEC: u32 = 1030; +pub const F_NOTIFY: u32 = 1026; +pub const F_SETPIPE_SZ: u32 = 1031; +pub const F_GETPIPE_SZ: u32 = 1032; +pub const F_ADD_SEALS: u32 = 1033; +pub const F_GET_SEALS: u32 = 1034; +pub const F_SEAL_SEAL: u32 = 1; +pub const F_SEAL_SHRINK: u32 = 2; +pub const F_SEAL_GROW: u32 = 4; +pub const F_SEAL_WRITE: u32 = 8; +pub const F_SEAL_FUTURE_WRITE: u32 = 16; +pub const F_SEAL_EXEC: u32 = 32; +pub const F_GET_RW_HINT: u32 = 1035; +pub const F_SET_RW_HINT: u32 = 1036; +pub const F_GET_FILE_RW_HINT: u32 = 1037; +pub const F_SET_FILE_RW_HINT: u32 = 1038; +pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; +pub const RWH_WRITE_LIFE_NONE: u32 = 1; +pub const RWH_WRITE_LIFE_SHORT: u32 = 2; +pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; +pub const RWH_WRITE_LIFE_LONG: u32 = 4; +pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; +pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; +pub const DN_ACCESS: u32 = 1; +pub const DN_MODIFY: u32 = 2; +pub const DN_CREATE: u32 = 4; +pub const DN_DELETE: u32 = 8; +pub const DN_RENAME: u32 = 16; +pub const DN_ATTRIB: u32 = 32; +pub const DN_MULTISHOT: u32 = 2147483648; +pub const AT_FDCWD: i32 = -100; +pub const AT_SYMLINK_NOFOLLOW: u32 = 256; +pub const AT_EACCESS: u32 = 512; +pub const AT_REMOVEDIR: u32 = 512; +pub const AT_SYMLINK_FOLLOW: u32 = 1024; +pub const AT_NO_AUTOMOUNT: u32 = 2048; +pub const AT_EMPTY_PATH: u32 = 4096; +pub const AT_STATX_SYNC_TYPE: u32 = 24576; +pub const AT_STATX_SYNC_AS_STAT: u32 = 0; +pub const AT_STATX_FORCE_SYNC: u32 = 8192; +pub const AT_STATX_DONT_SYNC: u32 = 16384; +pub const AT_RECURSIVE: u32 = 32768; +pub const EPOLL_CLOEXEC: u32 = 524288; +pub const EPOLL_CTL_ADD: u32 = 1; +pub const EPOLL_CTL_DEL: u32 = 2; +pub const EPOLL_CTL_MOD: u32 = 3; +pub const POSIX_FADV_NORMAL: u32 = 0; +pub const POSIX_FADV_RANDOM: u32 = 1; +pub const POSIX_FADV_SEQUENTIAL: u32 = 2; +pub const POSIX_FADV_WILLNEED: u32 = 3; +pub const POSIX_FADV_DONTNEED: u32 = 4; +pub const POSIX_FADV_NOREUSE: u32 = 5; +pub const FALLOC_FL_KEEP_SIZE: u32 = 1; +pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; +pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; +pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; +pub const FALLOC_FL_ZERO_RANGE: u32 = 16; +pub const FALLOC_FL_INSERT_RANGE: u32 = 32; +pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 536805376; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const OPEN_TREE_CLOEXEC: u32 = 524288; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const FUTEX_WAIT: u32 = 0; +pub const FUTEX_WAKE: u32 = 1; +pub const FUTEX_FD: u32 = 2; +pub const FUTEX_REQUEUE: u32 = 3; +pub const FUTEX_CMP_REQUEUE: u32 = 4; +pub const FUTEX_WAKE_OP: u32 = 5; +pub const FUTEX_LOCK_PI: u32 = 6; +pub const FUTEX_UNLOCK_PI: u32 = 7; +pub const FUTEX_TRYLOCK_PI: u32 = 8; +pub const FUTEX_WAIT_BITSET: u32 = 9; +pub const FUTEX_WAKE_BITSET: u32 = 10; +pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; +pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; +pub const FUTEX_LOCK_PI2: u32 = 13; +pub const FUTEX_PRIVATE_FLAG: u32 = 128; +pub const FUTEX_CLOCK_REALTIME: u32 = 256; +pub const FUTEX_CMD_MASK: i32 = -385; +pub const FUTEX_WAIT_PRIVATE: u32 = 128; +pub const FUTEX_WAKE_PRIVATE: u32 = 129; +pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; +pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; +pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; +pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; +pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; +pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; +pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; +pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; +pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; +pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; +pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; +pub const FUTEX_32: u32 = 2; +pub const FUTEX_WAITV_MAX: u32 = 128; +pub const FUTEX_WAITERS: u32 = 2147483648; +pub const FUTEX_OWNER_DIED: u32 = 1073741824; +pub const FUTEX_TID_MASK: u32 = 1073741823; +pub const ROBUST_LIST_LIMIT: u32 = 2048; +pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; +pub const FUTEX_OP_SET: u32 = 0; +pub const FUTEX_OP_ADD: u32 = 1; +pub const FUTEX_OP_OR: u32 = 2; +pub const FUTEX_OP_ANDN: u32 = 3; +pub const FUTEX_OP_XOR: u32 = 4; +pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; +pub const FUTEX_OP_CMP_EQ: u32 = 0; +pub const FUTEX_OP_CMP_NE: u32 = 1; +pub const FUTEX_OP_CMP_LT: u32 = 2; +pub const FUTEX_OP_CMP_LE: u32 = 3; +pub const FUTEX_OP_CMP_GT: u32 = 4; +pub const FUTEX_OP_CMP_GE: u32 = 5; +pub const IN_ACCESS: u32 = 1; +pub const IN_MODIFY: u32 = 2; +pub const IN_ATTRIB: u32 = 4; +pub const IN_CLOSE_WRITE: u32 = 8; +pub const IN_CLOSE_NOWRITE: u32 = 16; +pub const IN_OPEN: u32 = 32; +pub const IN_MOVED_FROM: u32 = 64; +pub const IN_MOVED_TO: u32 = 128; +pub const IN_CREATE: u32 = 256; +pub const IN_DELETE: u32 = 512; +pub const IN_DELETE_SELF: u32 = 1024; +pub const IN_MOVE_SELF: u32 = 2048; +pub const IN_UNMOUNT: u32 = 8192; +pub const IN_Q_OVERFLOW: u32 = 16384; +pub const IN_IGNORED: u32 = 32768; +pub const IN_CLOSE: u32 = 24; +pub const IN_MOVE: u32 = 192; +pub const IN_ONLYDIR: u32 = 16777216; +pub const IN_DONT_FOLLOW: u32 = 33554432; +pub const IN_EXCL_UNLINK: u32 = 67108864; +pub const IN_MASK_CREATE: u32 = 268435456; +pub const IN_MASK_ADD: u32 = 536870912; +pub const IN_ISDIR: u32 = 1073741824; +pub const IN_ONESHOT: u32 = 2147483648; +pub const IN_ALL_EVENTS: u32 = 4095; +pub const IN_CLOEXEC: u32 = 524288; +pub const IN_NONBLOCK: u32 = 128; +pub const ADFS_SUPER_MAGIC: u32 = 44533; +pub const AFFS_SUPER_MAGIC: u32 = 44543; +pub const AFS_SUPER_MAGIC: u32 = 1397113167; +pub const AUTOFS_SUPER_MAGIC: u32 = 391; +pub const CEPH_SUPER_MAGIC: u32 = 12805120; +pub const CODA_SUPER_MAGIC: u32 = 1937076805; +pub const CRAMFS_MAGIC: u32 = 684539205; +pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; +pub const DEBUGFS_MAGIC: u32 = 1684170528; +pub const SECURITYFS_MAGIC: u32 = 1935894131; +pub const SELINUX_MAGIC: u32 = 4185718668; +pub const SMACK_MAGIC: u32 = 1128357203; +pub const RAMFS_MAGIC: u32 = 2240043254; +pub const TMPFS_MAGIC: u32 = 16914836; +pub const HUGETLBFS_MAGIC: u32 = 2508478710; +pub const SQUASHFS_MAGIC: u32 = 1936814952; +pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; +pub const EFS_SUPER_MAGIC: u32 = 4278867; +pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; +pub const EXT2_SUPER_MAGIC: u32 = 61267; +pub const EXT3_SUPER_MAGIC: u32 = 61267; +pub const XENFS_SUPER_MAGIC: u32 = 2881100148; +pub const EXT4_SUPER_MAGIC: u32 = 61267; +pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; +pub const NILFS_SUPER_MAGIC: u32 = 13364; +pub const F2FS_SUPER_MAGIC: u32 = 4076150800; +pub const HPFS_SUPER_MAGIC: u32 = 4187351113; +pub const ISOFS_SUPER_MAGIC: u32 = 38496; +pub const JFFS2_SUPER_MAGIC: u32 = 29366; +pub const XFS_SUPER_MAGIC: u32 = 1481003842; +pub const PSTOREFS_MAGIC: u32 = 1634035564; +pub const EFIVARFS_MAGIC: u32 = 3730735588; +pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; +pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; +pub const FUSE_SUPER_MAGIC: u32 = 1702057286; +pub const MINIX_SUPER_MAGIC: u32 = 4991; +pub const MINIX_SUPER_MAGIC2: u32 = 5007; +pub const MINIX2_SUPER_MAGIC: u32 = 9320; +pub const MINIX2_SUPER_MAGIC2: u32 = 9336; +pub const MINIX3_SUPER_MAGIC: u32 = 19802; +pub const MSDOS_SUPER_MAGIC: u32 = 19780; +pub const EXFAT_SUPER_MAGIC: u32 = 538032816; +pub const NCP_SUPER_MAGIC: u32 = 22092; +pub const NFS_SUPER_MAGIC: u32 = 26985; +pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; +pub const OPENPROM_SUPER_MAGIC: u32 = 40865; +pub const QNX4_SUPER_MAGIC: u32 = 47; +pub const QNX6_SUPER_MAGIC: u32 = 1746473250; +pub const AFS_FS_MAGIC: u32 = 1799439955; +pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; +pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9] = b"ReIsErFs\0"; +pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr2Fs\0"; +pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr3Fs\0"; +pub const SMB_SUPER_MAGIC: u32 = 20859; +pub const CIFS_SUPER_MAGIC: u32 = 4283649346; +pub const SMB2_SUPER_MAGIC: u32 = 4266872130; +pub const CGROUP_SUPER_MAGIC: u32 = 2613483; +pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; +pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; +pub const STACK_END_MAGIC: u32 = 1470918301; +pub const TRACEFS_MAGIC: u32 = 1953653091; +pub const V9FS_MAGIC: u32 = 16914839; +pub const BDEVFS_MAGIC: u32 = 1650746742; +pub const DAXFS_MAGIC: u32 = 1684300152; +pub const BINFMTFS_MAGIC: u32 = 1112100429; +pub const DEVPTS_SUPER_MAGIC: u32 = 7377; +pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; +pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; +pub const PIPEFS_MAGIC: u32 = 1346981957; +pub const PROC_SUPER_MAGIC: u32 = 40864; +pub const SOCKFS_MAGIC: u32 = 1397703499; +pub const SYSFS_MAGIC: u32 = 1650812274; +pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; +pub const MTD_INODE_FS_MAGIC: u32 = 288389204; +pub const ANON_INODE_FS_MAGIC: u32 = 151263540; +pub const BTRFS_TEST_MAGIC: u32 = 1936880249; +pub const NSFS_MAGIC: u32 = 1853056627; +pub const BPF_FS_MAGIC: u32 = 3405662737; +pub const AAFS_MAGIC: u32 = 1513908720; +pub const ZONEFS_MAGIC: u32 = 1515144787; +pub const UDF_SUPER_MAGIC: u32 = 352400198; +pub const DMA_BUF_MAGIC: u32 = 1145913666; +pub const DEVMEM_MAGIC: u32 = 1162691661; +pub const SECRETMEM_MAGIC: u32 = 1397048141; +pub const PROT_NONE: u32 = 0; +pub const PROT_READ: u32 = 1; +pub const PROT_WRITE: u32 = 2; +pub const PROT_EXEC: u32 = 4; +pub const PROT_SEM: u32 = 16; +pub const PROT_GROWSDOWN: u32 = 16777216; +pub const PROT_GROWSUP: u32 = 33554432; +pub const MAP_TYPE: u32 = 15; +pub const MAP_FIXED: u32 = 16; +pub const MAP_RENAME: u32 = 32; +pub const MAP_AUTOGROW: u32 = 64; +pub const MAP_LOCAL: u32 = 128; +pub const MAP_AUTORSRV: u32 = 256; +pub const MAP_NORESERVE: u32 = 1024; +pub const MAP_ANONYMOUS: u32 = 2048; +pub const MAP_GROWSDOWN: u32 = 4096; +pub const MAP_DENYWRITE: u32 = 8192; +pub const MAP_EXECUTABLE: u32 = 16384; +pub const MAP_LOCKED: u32 = 32768; +pub const MAP_POPULATE: u32 = 65536; +pub const MAP_NONBLOCK: u32 = 131072; +pub const MAP_STACK: u32 = 262144; +pub const MAP_HUGETLB: u32 = 524288; +pub const MAP_FIXED_NOREPLACE: u32 = 1048576; +pub const MS_ASYNC: u32 = 1; +pub const MS_INVALIDATE: u32 = 2; +pub const MS_SYNC: u32 = 4; +pub const MCL_CURRENT: u32 = 1; +pub const MCL_FUTURE: u32 = 2; +pub const MCL_ONFAULT: u32 = 4; +pub const MLOCK_ONFAULT: u32 = 1; +pub const MADV_NORMAL: u32 = 0; +pub const MADV_RANDOM: u32 = 1; +pub const MADV_SEQUENTIAL: u32 = 2; +pub const MADV_WILLNEED: u32 = 3; +pub const MADV_DONTNEED: u32 = 4; +pub const MADV_FREE: u32 = 8; +pub const MADV_REMOVE: u32 = 9; +pub const MADV_DONTFORK: u32 = 10; +pub const MADV_DOFORK: u32 = 11; +pub const MADV_MERGEABLE: u32 = 12; +pub const MADV_UNMERGEABLE: u32 = 13; +pub const MADV_HWPOISON: u32 = 100; +pub const MADV_HUGEPAGE: u32 = 14; +pub const MADV_NOHUGEPAGE: u32 = 15; +pub const MADV_DONTDUMP: u32 = 16; +pub const MADV_DODUMP: u32 = 17; +pub const MADV_WIPEONFORK: u32 = 18; +pub const MADV_KEEPONFORK: u32 = 19; +pub const MADV_COLD: u32 = 20; +pub const MADV_PAGEOUT: u32 = 21; +pub const MADV_POPULATE_READ: u32 = 22; +pub const MADV_POPULATE_WRITE: u32 = 23; +pub const MADV_DONTNEED_LOCKED: u32 = 24; +pub const MADV_COLLAPSE: u32 = 25; +pub const MAP_FILE: u32 = 0; +pub const PKEY_DISABLE_ACCESS: u32 = 1; +pub const PKEY_DISABLE_WRITE: u32 = 2; +pub const PKEY_ACCESS_MASK: u32 = 3; +pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; +pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; +pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; +pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; +pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; +pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; +pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; +pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; +pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; +pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; +pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; +pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; +pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; +pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; +pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; +pub const MREMAP_MAYMOVE: u32 = 1; +pub const MREMAP_FIXED: u32 = 2; +pub const MREMAP_DONTUNMAP: u32 = 4; +pub const OVERCOMMIT_GUESS: u32 = 0; +pub const OVERCOMMIT_ALWAYS: u32 = 1; +pub const OVERCOMMIT_NEVER: u32 = 2; +pub const MAP_SHARED: u32 = 1; +pub const MAP_PRIVATE: u32 = 2; +pub const MAP_SHARED_VALIDATE: u32 = 3; +pub const MAP_HUGE_SHIFT: u32 = 26; +pub const MAP_HUGE_MASK: u32 = 63; +pub const MAP_HUGE_16KB: u32 = 939524096; +pub const MAP_HUGE_64KB: u32 = 1073741824; +pub const MAP_HUGE_512KB: u32 = 1275068416; +pub const MAP_HUGE_1MB: u32 = 1342177280; +pub const MAP_HUGE_2MB: u32 = 1409286144; +pub const MAP_HUGE_8MB: u32 = 1543503872; +pub const MAP_HUGE_16MB: u32 = 1610612736; +pub const MAP_HUGE_32MB: u32 = 1677721600; +pub const MAP_HUGE_256MB: u32 = 1879048192; +pub const MAP_HUGE_512MB: u32 = 1946157056; +pub const MAP_HUGE_1GB: u32 = 2013265920; +pub const MAP_HUGE_2GB: u32 = 2080374784; +pub const MAP_HUGE_16GB: u32 = 2281701376; +pub const POLLWRBAND: u32 = 256; +pub const POLLIN: u32 = 1; +pub const POLLPRI: u32 = 2; +pub const POLLOUT: u32 = 4; +pub const POLLERR: u32 = 8; +pub const POLLHUP: u32 = 16; +pub const POLLNVAL: u32 = 32; +pub const POLLRDNORM: u32 = 64; +pub const POLLRDBAND: u32 = 128; +pub const POLLMSG: u32 = 1024; +pub const POLLREMOVE: u32 = 4096; +pub const POLLRDHUP: u32 = 8192; +pub const GRND_NONBLOCK: u32 = 1; +pub const GRND_RANDOM: u32 = 2; +pub const GRND_INSECURE: u32 = 4; +pub const ITIMER_REAL: u32 = 0; +pub const ITIMER_VIRTUAL: u32 = 1; +pub const ITIMER_PROF: u32 = 2; +pub const CLOCK_REALTIME: u32 = 0; +pub const CLOCK_MONOTONIC: u32 = 1; +pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; +pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; +pub const CLOCK_MONOTONIC_RAW: u32 = 4; +pub const CLOCK_REALTIME_COARSE: u32 = 5; +pub const CLOCK_MONOTONIC_COARSE: u32 = 6; +pub const CLOCK_BOOTTIME: u32 = 7; +pub const CLOCK_REALTIME_ALARM: u32 = 8; +pub const CLOCK_BOOTTIME_ALARM: u32 = 9; +pub const CLOCK_SGI_CYCLE: u32 = 10; +pub const CLOCK_TAI: u32 = 11; +pub const MAX_CLOCKS: u32 = 16; +pub const CLOCKS_MASK: u32 = 1; +pub const CLOCKS_MONO: u32 = 1; +pub const TIMER_ABSTIME: u32 = 1; +pub const RUSAGE_SELF: u32 = 0; +pub const RUSAGE_CHILDREN: i32 = -1; +pub const RUSAGE_BOTH: i32 = -2; +pub const RUSAGE_THREAD: u32 = 1; +pub const RLIM64_INFINITY: i32 = -1; +pub const PRIO_MIN: i32 = -20; +pub const PRIO_MAX: u32 = 20; +pub const PRIO_PROCESS: u32 = 0; +pub const PRIO_PGRP: u32 = 1; +pub const PRIO_USER: u32 = 2; +pub const _STK_LIM: u32 = 8388608; +pub const MLOCK_LIMIT: u32 = 8388608; +pub const RLIMIT_NOFILE: u32 = 5; +pub const RLIMIT_AS: u32 = 6; +pub const RLIMIT_RSS: u32 = 7; +pub const RLIMIT_NPROC: u32 = 8; +pub const RLIMIT_MEMLOCK: u32 = 9; +pub const RLIM_INFINITY: u32 = 2147483647; +pub const RLIMIT_CPU: u32 = 0; +pub const RLIMIT_FSIZE: u32 = 1; +pub const RLIMIT_DATA: u32 = 2; +pub const RLIMIT_STACK: u32 = 3; +pub const RLIMIT_CORE: u32 = 4; +pub const RLIMIT_LOCKS: u32 = 10; +pub const RLIMIT_SIGPENDING: u32 = 11; +pub const RLIMIT_MSGQUEUE: u32 = 12; +pub const RLIMIT_NICE: u32 = 13; +pub const RLIMIT_RTPRIO: u32 = 14; +pub const RLIMIT_RTTIME: u32 = 15; +pub const RLIM_NLIMITS: u32 = 16; +pub const CSIGNAL: u32 = 255; +pub const CLONE_VM: u32 = 256; +pub const CLONE_FS: u32 = 512; +pub const CLONE_FILES: u32 = 1024; +pub const CLONE_SIGHAND: u32 = 2048; +pub const CLONE_PIDFD: u32 = 4096; +pub const CLONE_PTRACE: u32 = 8192; +pub const CLONE_VFORK: u32 = 16384; +pub const CLONE_PARENT: u32 = 32768; +pub const CLONE_THREAD: u32 = 65536; +pub const CLONE_NEWNS: u32 = 131072; +pub const CLONE_SYSVSEM: u32 = 262144; +pub const CLONE_SETTLS: u32 = 524288; +pub const CLONE_PARENT_SETTID: u32 = 1048576; +pub const CLONE_CHILD_CLEARTID: u32 = 2097152; +pub const CLONE_DETACHED: u32 = 4194304; +pub const CLONE_UNTRACED: u32 = 8388608; +pub const CLONE_CHILD_SETTID: u32 = 16777216; +pub const CLONE_NEWCGROUP: u32 = 33554432; +pub const CLONE_NEWUTS: u32 = 67108864; +pub const CLONE_NEWIPC: u32 = 134217728; +pub const CLONE_NEWUSER: u32 = 268435456; +pub const CLONE_NEWPID: u32 = 536870912; +pub const CLONE_NEWNET: u32 = 1073741824; +pub const CLONE_IO: u32 = 2147483648; +pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; +pub const CLONE_INTO_CGROUP: u64 = 8589934592; +pub const CLONE_NEWTIME: u32 = 128; +pub const CLONE_ARGS_SIZE_VER0: u32 = 64; +pub const CLONE_ARGS_SIZE_VER1: u32 = 80; +pub const CLONE_ARGS_SIZE_VER2: u32 = 88; +pub const SCHED_NORMAL: u32 = 0; +pub const SCHED_FIFO: u32 = 1; +pub const SCHED_RR: u32 = 2; +pub const SCHED_BATCH: u32 = 3; +pub const SCHED_IDLE: u32 = 5; +pub const SCHED_DEADLINE: u32 = 6; +pub const SCHED_RESET_ON_FORK: u32 = 1073741824; +pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; +pub const SCHED_FLAG_RECLAIM: u32 = 2; +pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; +pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; +pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; +pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; +pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; +pub const SCHED_FLAG_KEEP_ALL: u32 = 24; +pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; +pub const SCHED_FLAG_ALL: u32 = 127; +pub const _NSIG: u32 = 128; +pub const SIGHUP: u32 = 1; +pub const SIGINT: u32 = 2; +pub const SIGQUIT: u32 = 3; +pub const SIGILL: u32 = 4; +pub const SIGTRAP: u32 = 5; +pub const SIGIOT: u32 = 6; +pub const SIGABRT: u32 = 6; +pub const SIGEMT: u32 = 7; +pub const SIGFPE: u32 = 8; +pub const SIGKILL: u32 = 9; +pub const SIGBUS: u32 = 10; +pub const SIGSEGV: u32 = 11; +pub const SIGSYS: u32 = 12; +pub const SIGPIPE: u32 = 13; +pub const SIGALRM: u32 = 14; +pub const SIGTERM: u32 = 15; +pub const SIGUSR1: u32 = 16; +pub const SIGUSR2: u32 = 17; +pub const SIGCHLD: u32 = 18; +pub const SIGCLD: u32 = 18; +pub const SIGPWR: u32 = 19; +pub const SIGWINCH: u32 = 20; +pub const SIGURG: u32 = 21; +pub const SIGIO: u32 = 22; +pub const SIGPOLL: u32 = 22; +pub const SIGSTOP: u32 = 23; +pub const SIGTSTP: u32 = 24; +pub const SIGCONT: u32 = 25; +pub const SIGTTIN: u32 = 26; +pub const SIGTTOU: u32 = 27; +pub const SIGVTALRM: u32 = 28; +pub const SIGPROF: u32 = 29; +pub const SIGXCPU: u32 = 30; +pub const SIGXFSZ: u32 = 31; +pub const SIGRTMIN: u32 = 32; +pub const SIGRTMAX: u32 = 128; +pub const SA_ONSTACK: u32 = 134217728; +pub const SA_RESETHAND: u32 = 2147483648; +pub const SA_RESTART: u32 = 268435456; +pub const SA_SIGINFO: u32 = 8; +pub const SA_NODEFER: u32 = 1073741824; +pub const SA_NOCLDWAIT: u32 = 65536; +pub const SA_NOCLDSTOP: u32 = 1; +pub const SA_NOMASK: u32 = 1073741824; +pub const SA_ONESHOT: u32 = 2147483648; +pub const MINSIGSTKSZ: u32 = 2048; +pub const SIGSTKSZ: u32 = 8192; +pub const SIG_BLOCK: u32 = 1; +pub const SIG_UNBLOCK: u32 = 2; +pub const SIG_SETMASK: u32 = 3; +pub const SA_UNSUPPORTED: u32 = 1024; +pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SI_MAX_SIZE: u32 = 128; +pub const SI_USER: u32 = 0; +pub const SI_KERNEL: u32 = 128; +pub const SI_QUEUE: i32 = -1; +pub const SI_TIMER: i32 = -2; +pub const SI_MESGQ: i32 = -3; +pub const SI_ASYNCIO: i32 = -4; +pub const SI_SIGIO: i32 = -5; +pub const SI_TKILL: i32 = -6; +pub const SI_DETHREAD: i32 = -7; +pub const SI_ASYNCNL: i32 = -60; +pub const ILL_ILLOPC: u32 = 1; +pub const ILL_ILLOPN: u32 = 2; +pub const ILL_ILLADR: u32 = 3; +pub const ILL_ILLTRP: u32 = 4; +pub const ILL_PRVOPC: u32 = 5; +pub const ILL_PRVREG: u32 = 6; +pub const ILL_COPROC: u32 = 7; +pub const ILL_BADSTK: u32 = 8; +pub const ILL_BADIADDR: u32 = 9; +pub const __ILL_BREAK: u32 = 10; +pub const __ILL_BNDMOD: u32 = 11; +pub const NSIGILL: u32 = 11; +pub const FPE_INTDIV: u32 = 1; +pub const FPE_INTOVF: u32 = 2; +pub const FPE_FLTDIV: u32 = 3; +pub const FPE_FLTOVF: u32 = 4; +pub const FPE_FLTUND: u32 = 5; +pub const FPE_FLTRES: u32 = 6; +pub const FPE_FLTINV: u32 = 7; +pub const FPE_FLTSUB: u32 = 8; +pub const __FPE_DECOVF: u32 = 9; +pub const __FPE_DECDIV: u32 = 10; +pub const __FPE_DECERR: u32 = 11; +pub const __FPE_INVASC: u32 = 12; +pub const __FPE_INVDEC: u32 = 13; +pub const FPE_FLTUNK: u32 = 14; +pub const FPE_CONDTRAP: u32 = 15; +pub const NSIGFPE: u32 = 15; +pub const SEGV_MAPERR: u32 = 1; +pub const SEGV_ACCERR: u32 = 2; +pub const SEGV_BNDERR: u32 = 3; +pub const SEGV_PKUERR: u32 = 4; +pub const SEGV_ACCADI: u32 = 5; +pub const SEGV_ADIDERR: u32 = 6; +pub const SEGV_ADIPERR: u32 = 7; +pub const SEGV_MTEAERR: u32 = 8; +pub const SEGV_MTESERR: u32 = 9; +pub const NSIGSEGV: u32 = 9; +pub const BUS_ADRALN: u32 = 1; +pub const BUS_ADRERR: u32 = 2; +pub const BUS_OBJERR: u32 = 3; +pub const BUS_MCEERR_AR: u32 = 4; +pub const BUS_MCEERR_AO: u32 = 5; +pub const NSIGBUS: u32 = 5; +pub const TRAP_BRKPT: u32 = 1; +pub const TRAP_TRACE: u32 = 2; +pub const TRAP_BRANCH: u32 = 3; +pub const TRAP_HWBKPT: u32 = 4; +pub const TRAP_UNK: u32 = 5; +pub const TRAP_PERF: u32 = 6; +pub const NSIGTRAP: u32 = 6; +pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; +pub const CLD_EXITED: u32 = 1; +pub const CLD_KILLED: u32 = 2; +pub const CLD_DUMPED: u32 = 3; +pub const CLD_TRAPPED: u32 = 4; +pub const CLD_STOPPED: u32 = 5; +pub const CLD_CONTINUED: u32 = 6; +pub const NSIGCHLD: u32 = 6; +pub const POLL_IN: u32 = 1; +pub const POLL_OUT: u32 = 2; +pub const POLL_MSG: u32 = 3; +pub const POLL_ERR: u32 = 4; +pub const POLL_PRI: u32 = 5; +pub const POLL_HUP: u32 = 6; +pub const NSIGPOLL: u32 = 6; +pub const SYS_SECCOMP: u32 = 1; +pub const SYS_USER_DISPATCH: u32 = 2; +pub const NSIGSYS: u32 = 2; +pub const EMT_TAGOVF: u32 = 1; +pub const NSIGEMT: u32 = 1; +pub const SIGEV_SIGNAL: u32 = 0; +pub const SIGEV_NONE: u32 = 1; +pub const SIGEV_THREAD: u32 = 2; +pub const SIGEV_THREAD_ID: u32 = 4; +pub const SIGEV_MAX_SIZE: u32 = 64; +pub const SS_ONSTACK: u32 = 1; +pub const SS_DISABLE: u32 = 2; +pub const SS_AUTODISARM: u32 = 2147483648; +pub const SS_FLAG_BITS: u32 = 2147483648; +pub const S_IFMT: u32 = 61440; +pub const S_IFSOCK: u32 = 49152; +pub const S_IFLNK: u32 = 40960; +pub const S_IFREG: u32 = 32768; +pub const S_IFBLK: u32 = 24576; +pub const S_IFDIR: u32 = 16384; +pub const S_IFCHR: u32 = 8192; +pub const S_IFIFO: u32 = 4096; +pub const S_ISUID: u32 = 2048; +pub const S_ISGID: u32 = 1024; +pub const S_ISVTX: u32 = 512; +pub const S_IRWXU: u32 = 448; +pub const S_IRUSR: u32 = 256; +pub const S_IWUSR: u32 = 128; +pub const S_IXUSR: u32 = 64; +pub const S_IRWXG: u32 = 56; +pub const S_IRGRP: u32 = 32; +pub const S_IWGRP: u32 = 16; +pub const S_IXGRP: u32 = 8; +pub const S_IRWXO: u32 = 7; +pub const S_IROTH: u32 = 4; +pub const S_IWOTH: u32 = 2; +pub const S_IXOTH: u32 = 1; +pub const STATX_TYPE: u32 = 1; +pub const STATX_MODE: u32 = 2; +pub const STATX_NLINK: u32 = 4; +pub const STATX_UID: u32 = 8; +pub const STATX_GID: u32 = 16; +pub const STATX_ATIME: u32 = 32; +pub const STATX_MTIME: u32 = 64; +pub const STATX_CTIME: u32 = 128; +pub const STATX_INO: u32 = 256; +pub const STATX_SIZE: u32 = 512; +pub const STATX_BLOCKS: u32 = 1024; +pub const STATX_BASIC_STATS: u32 = 2047; +pub const STATX_BTIME: u32 = 2048; +pub const STATX_MNT_ID: u32 = 4096; +pub const STATX_DIOALIGN: u32 = 8192; +pub const STATX__RESERVED: u32 = 2147483648; +pub const STATX_ALL: u32 = 4095; +pub const STATX_ATTR_COMPRESSED: u32 = 4; +pub const STATX_ATTR_IMMUTABLE: u32 = 16; +pub const STATX_ATTR_APPEND: u32 = 32; +pub const STATX_ATTR_NODUMP: u32 = 64; +pub const STATX_ATTR_ENCRYPTED: u32 = 2048; +pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; +pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; +pub const STATX_ATTR_VERITY: u32 = 1048576; +pub const STATX_ATTR_DAX: u32 = 2097152; +pub const EPERM: u32 = 1; +pub const ENOENT: u32 = 2; +pub const ESRCH: u32 = 3; +pub const EINTR: u32 = 4; +pub const EIO: u32 = 5; +pub const ENXIO: u32 = 6; +pub const E2BIG: u32 = 7; +pub const ENOEXEC: u32 = 8; +pub const EBADF: u32 = 9; +pub const ECHILD: u32 = 10; +pub const EAGAIN: u32 = 11; +pub const ENOMEM: u32 = 12; +pub const EACCES: u32 = 13; +pub const EFAULT: u32 = 14; +pub const ENOTBLK: u32 = 15; +pub const EBUSY: u32 = 16; +pub const EEXIST: u32 = 17; +pub const EXDEV: u32 = 18; +pub const ENODEV: u32 = 19; +pub const ENOTDIR: u32 = 20; +pub const EISDIR: u32 = 21; +pub const EINVAL: u32 = 22; +pub const ENFILE: u32 = 23; +pub const EMFILE: u32 = 24; +pub const ENOTTY: u32 = 25; +pub const ETXTBSY: u32 = 26; +pub const EFBIG: u32 = 27; +pub const ENOSPC: u32 = 28; +pub const ESPIPE: u32 = 29; +pub const EROFS: u32 = 30; +pub const EMLINK: u32 = 31; +pub const EPIPE: u32 = 32; +pub const EDOM: u32 = 33; +pub const ERANGE: u32 = 34; +pub const ENOMSG: u32 = 35; +pub const EIDRM: u32 = 36; +pub const ECHRNG: u32 = 37; +pub const EL2NSYNC: u32 = 38; +pub const EL3HLT: u32 = 39; +pub const EL3RST: u32 = 40; +pub const ELNRNG: u32 = 41; +pub const EUNATCH: u32 = 42; +pub const ENOCSI: u32 = 43; +pub const EL2HLT: u32 = 44; +pub const EDEADLK: u32 = 45; +pub const ENOLCK: u32 = 46; +pub const EBADE: u32 = 50; +pub const EBADR: u32 = 51; +pub const EXFULL: u32 = 52; +pub const ENOANO: u32 = 53; +pub const EBADRQC: u32 = 54; +pub const EBADSLT: u32 = 55; +pub const EDEADLOCK: u32 = 56; +pub const EBFONT: u32 = 59; +pub const ENOSTR: u32 = 60; +pub const ENODATA: u32 = 61; +pub const ETIME: u32 = 62; +pub const ENOSR: u32 = 63; +pub const ENONET: u32 = 64; +pub const ENOPKG: u32 = 65; +pub const EREMOTE: u32 = 66; +pub const ENOLINK: u32 = 67; +pub const EADV: u32 = 68; +pub const ESRMNT: u32 = 69; +pub const ECOMM: u32 = 70; +pub const EPROTO: u32 = 71; +pub const EDOTDOT: u32 = 73; +pub const EMULTIHOP: u32 = 74; +pub const EBADMSG: u32 = 77; +pub const ENAMETOOLONG: u32 = 78; +pub const EOVERFLOW: u32 = 79; +pub const ENOTUNIQ: u32 = 80; +pub const EBADFD: u32 = 81; +pub const EREMCHG: u32 = 82; +pub const ELIBACC: u32 = 83; +pub const ELIBBAD: u32 = 84; +pub const ELIBSCN: u32 = 85; +pub const ELIBMAX: u32 = 86; +pub const ELIBEXEC: u32 = 87; +pub const EILSEQ: u32 = 88; +pub const ENOSYS: u32 = 89; +pub const ELOOP: u32 = 90; +pub const ERESTART: u32 = 91; +pub const ESTRPIPE: u32 = 92; +pub const ENOTEMPTY: u32 = 93; +pub const EUSERS: u32 = 94; +pub const ENOTSOCK: u32 = 95; +pub const EDESTADDRREQ: u32 = 96; +pub const EMSGSIZE: u32 = 97; +pub const EPROTOTYPE: u32 = 98; +pub const ENOPROTOOPT: u32 = 99; +pub const EPROTONOSUPPORT: u32 = 120; +pub const ESOCKTNOSUPPORT: u32 = 121; +pub const EOPNOTSUPP: u32 = 122; +pub const EPFNOSUPPORT: u32 = 123; +pub const EAFNOSUPPORT: u32 = 124; +pub const EADDRINUSE: u32 = 125; +pub const EADDRNOTAVAIL: u32 = 126; +pub const ENETDOWN: u32 = 127; +pub const ENETUNREACH: u32 = 128; +pub const ENETRESET: u32 = 129; +pub const ECONNABORTED: u32 = 130; +pub const ECONNRESET: u32 = 131; +pub const ENOBUFS: u32 = 132; +pub const EISCONN: u32 = 133; +pub const ENOTCONN: u32 = 134; +pub const EUCLEAN: u32 = 135; +pub const ENOTNAM: u32 = 137; +pub const ENAVAIL: u32 = 138; +pub const EISNAM: u32 = 139; +pub const EREMOTEIO: u32 = 140; +pub const EINIT: u32 = 141; +pub const EREMDEV: u32 = 142; +pub const ESHUTDOWN: u32 = 143; +pub const ETOOMANYREFS: u32 = 144; +pub const ETIMEDOUT: u32 = 145; +pub const ECONNREFUSED: u32 = 146; +pub const EHOSTDOWN: u32 = 147; +pub const EHOSTUNREACH: u32 = 148; +pub const EWOULDBLOCK: u32 = 11; +pub const EALREADY: u32 = 149; +pub const EINPROGRESS: u32 = 150; +pub const ESTALE: u32 = 151; +pub const ECANCELED: u32 = 158; +pub const ENOMEDIUM: u32 = 159; +pub const EMEDIUMTYPE: u32 = 160; +pub const ENOKEY: u32 = 161; +pub const EKEYEXPIRED: u32 = 162; +pub const EKEYREVOKED: u32 = 163; +pub const EKEYREJECTED: u32 = 164; +pub const EOWNERDEAD: u32 = 165; +pub const ENOTRECOVERABLE: u32 = 166; +pub const ERFKILL: u32 = 167; +pub const EHWPOISON: u32 = 168; +pub const EDQUOT: u32 = 1133; +pub const IGNBRK: u32 = 1; +pub const BRKINT: u32 = 2; +pub const IGNPAR: u32 = 4; +pub const PARMRK: u32 = 8; +pub const INPCK: u32 = 16; +pub const ISTRIP: u32 = 32; +pub const INLCR: u32 = 64; +pub const IGNCR: u32 = 128; +pub const ICRNL: u32 = 256; +pub const IXANY: u32 = 2048; +pub const OPOST: u32 = 1; +pub const OCRNL: u32 = 8; +pub const ONOCR: u32 = 16; +pub const ONLRET: u32 = 32; +pub const OFILL: u32 = 64; +pub const OFDEL: u32 = 128; +pub const B0: u32 = 0; +pub const B50: u32 = 1; +pub const B75: u32 = 2; +pub const B110: u32 = 3; +pub const B134: u32 = 4; +pub const B150: u32 = 5; +pub const B200: u32 = 6; +pub const B300: u32 = 7; +pub const B600: u32 = 8; +pub const B1200: u32 = 9; +pub const B1800: u32 = 10; +pub const B2400: u32 = 11; +pub const B4800: u32 = 12; +pub const B9600: u32 = 13; +pub const B19200: u32 = 14; +pub const B38400: u32 = 15; +pub const EXTA: u32 = 14; +pub const EXTB: u32 = 15; +pub const ADDRB: u32 = 536870912; +pub const CMSPAR: u32 = 1073741824; +pub const CRTSCTS: u32 = 2147483648; +pub const IBSHIFT: u32 = 16; +pub const TCOOFF: u32 = 0; +pub const TCOON: u32 = 1; +pub const TCIOFF: u32 = 2; +pub const TCION: u32 = 3; +pub const TCIFLUSH: u32 = 0; +pub const TCOFLUSH: u32 = 1; +pub const TCIOFLUSH: u32 = 2; +pub const NCCS: u32 = 23; +pub const VINTR: u32 = 0; +pub const VQUIT: u32 = 1; +pub const VERASE: u32 = 2; +pub const VKILL: u32 = 3; +pub const VMIN: u32 = 4; +pub const VTIME: u32 = 5; +pub const VEOL2: u32 = 6; +pub const VSWTC: u32 = 7; +pub const VSWTCH: u32 = 7; +pub const VSTART: u32 = 8; +pub const VSTOP: u32 = 9; +pub const VSUSP: u32 = 10; +pub const VREPRINT: u32 = 12; +pub const VDISCARD: u32 = 13; +pub const VWERASE: u32 = 14; +pub const VLNEXT: u32 = 15; +pub const VEOF: u32 = 16; +pub const VEOL: u32 = 17; +pub const IUCLC: u32 = 512; +pub const IXON: u32 = 1024; +pub const IXOFF: u32 = 4096; +pub const IMAXBEL: u32 = 8192; +pub const IUTF8: u32 = 16384; +pub const OLCUC: u32 = 2; +pub const ONLCR: u32 = 4; +pub const NLDLY: u32 = 256; +pub const NL0: u32 = 0; +pub const NL1: u32 = 256; +pub const CRDLY: u32 = 1536; +pub const CR0: u32 = 0; +pub const CR1: u32 = 512; +pub const CR2: u32 = 1024; +pub const CR3: u32 = 1536; +pub const TABDLY: u32 = 6144; +pub const TAB0: u32 = 0; +pub const TAB1: u32 = 2048; +pub const TAB2: u32 = 4096; +pub const TAB3: u32 = 6144; +pub const XTABS: u32 = 6144; +pub const BSDLY: u32 = 8192; +pub const BS0: u32 = 0; +pub const BS1: u32 = 8192; +pub const VTDLY: u32 = 16384; +pub const VT0: u32 = 0; +pub const VT1: u32 = 16384; +pub const FFDLY: u32 = 32768; +pub const FF0: u32 = 0; +pub const FF1: u32 = 32768; +pub const CBAUD: u32 = 4111; +pub const CSIZE: u32 = 48; +pub const CS5: u32 = 0; +pub const CS6: u32 = 16; +pub const CS7: u32 = 32; +pub const CS8: u32 = 48; +pub const CSTOPB: u32 = 64; +pub const CREAD: u32 = 128; +pub const PARENB: u32 = 256; +pub const PARODD: u32 = 512; +pub const HUPCL: u32 = 1024; +pub const CLOCAL: u32 = 2048; +pub const CBAUDEX: u32 = 4096; +pub const BOTHER: u32 = 4096; +pub const B57600: u32 = 4097; +pub const B115200: u32 = 4098; +pub const B230400: u32 = 4099; +pub const B460800: u32 = 4100; +pub const B500000: u32 = 4101; +pub const B576000: u32 = 4102; +pub const B921600: u32 = 4103; +pub const B1000000: u32 = 4104; +pub const B1152000: u32 = 4105; +pub const B1500000: u32 = 4106; +pub const B2000000: u32 = 4107; +pub const B2500000: u32 = 4108; +pub const B3000000: u32 = 4109; +pub const B3500000: u32 = 4110; +pub const B4000000: u32 = 4111; +pub const CIBAUD: u32 = 269418496; +pub const ISIG: u32 = 1; +pub const ICANON: u32 = 2; +pub const XCASE: u32 = 4; +pub const ECHO: u32 = 8; +pub const ECHOE: u32 = 16; +pub const ECHOK: u32 = 32; +pub const ECHONL: u32 = 64; +pub const NOFLSH: u32 = 128; +pub const IEXTEN: u32 = 256; +pub const ECHOCTL: u32 = 512; +pub const ECHOPRT: u32 = 1024; +pub const ECHOKE: u32 = 2048; +pub const FLUSHO: u32 = 8192; +pub const PENDIN: u32 = 16384; +pub const TOSTOP: u32 = 32768; +pub const ITOSTOP: u32 = 32768; +pub const EXTPROC: u32 = 65536; +pub const TIOCSER_TEMT: u32 = 1; +pub const TIOCPKT_DATA: u32 = 0; +pub const TIOCPKT_FLUSHREAD: u32 = 1; +pub const TIOCPKT_FLUSHWRITE: u32 = 2; +pub const TIOCPKT_STOP: u32 = 4; +pub const TIOCPKT_START: u32 = 8; +pub const TIOCPKT_NOSTOP: u32 = 16; +pub const TIOCPKT_DOSTOP: u32 = 32; +pub const TIOCPKT_IOCTL: u32 = 64; +pub const TIOCGLTC: u32 = 29812; +pub const TIOCSLTC: u32 = 29813; +pub const TIOCGETP: u32 = 29704; +pub const TIOCSETP: u32 = 29705; +pub const TIOCSETN: u32 = 29706; +pub const NCC: u32 = 8; +pub const TIOCM_LE: u32 = 1; +pub const TIOCM_DTR: u32 = 2; +pub const TIOCM_RTS: u32 = 4; +pub const TIOCM_ST: u32 = 16; +pub const TIOCM_SR: u32 = 32; +pub const TIOCM_CTS: u32 = 64; +pub const TIOCM_CAR: u32 = 256; +pub const TIOCM_CD: u32 = 256; +pub const TIOCM_RNG: u32 = 512; +pub const TIOCM_RI: u32 = 512; +pub const TIOCM_DSR: u32 = 1024; +pub const TIOCM_OUT1: u32 = 8192; +pub const TIOCM_OUT2: u32 = 16384; +pub const TIOCM_LOOP: u32 = 32768; +pub const UIO_FASTIOV: u32 = 8; +pub const UIO_MAXIOV: u32 = 1024; +pub const __NR_Linux: u32 = 4000; +pub const __NR_syscall: u32 = 4000; +pub const __NR_exit: u32 = 4001; +pub const __NR_fork: u32 = 4002; +pub const __NR_read: u32 = 4003; +pub const __NR_write: u32 = 4004; +pub const __NR_open: u32 = 4005; +pub const __NR_close: u32 = 4006; +pub const __NR_waitpid: u32 = 4007; +pub const __NR_creat: u32 = 4008; +pub const __NR_link: u32 = 4009; +pub const __NR_unlink: u32 = 4010; +pub const __NR_execve: u32 = 4011; +pub const __NR_chdir: u32 = 4012; +pub const __NR_time: u32 = 4013; +pub const __NR_mknod: u32 = 4014; +pub const __NR_chmod: u32 = 4015; +pub const __NR_lchown: u32 = 4016; +pub const __NR_break: u32 = 4017; +pub const __NR_unused18: u32 = 4018; +pub const __NR_lseek: u32 = 4019; +pub const __NR_getpid: u32 = 4020; +pub const __NR_mount: u32 = 4021; +pub const __NR_umount: u32 = 4022; +pub const __NR_setuid: u32 = 4023; +pub const __NR_getuid: u32 = 4024; +pub const __NR_stime: u32 = 4025; +pub const __NR_ptrace: u32 = 4026; +pub const __NR_alarm: u32 = 4027; +pub const __NR_unused28: u32 = 4028; +pub const __NR_pause: u32 = 4029; +pub const __NR_utime: u32 = 4030; +pub const __NR_stty: u32 = 4031; +pub const __NR_gtty: u32 = 4032; +pub const __NR_access: u32 = 4033; +pub const __NR_nice: u32 = 4034; +pub const __NR_ftime: u32 = 4035; +pub const __NR_sync: u32 = 4036; +pub const __NR_kill: u32 = 4037; +pub const __NR_rename: u32 = 4038; +pub const __NR_mkdir: u32 = 4039; +pub const __NR_rmdir: u32 = 4040; +pub const __NR_dup: u32 = 4041; +pub const __NR_pipe: u32 = 4042; +pub const __NR_times: u32 = 4043; +pub const __NR_prof: u32 = 4044; +pub const __NR_brk: u32 = 4045; +pub const __NR_setgid: u32 = 4046; +pub const __NR_getgid: u32 = 4047; +pub const __NR_signal: u32 = 4048; +pub const __NR_geteuid: u32 = 4049; +pub const __NR_getegid: u32 = 4050; +pub const __NR_acct: u32 = 4051; +pub const __NR_umount2: u32 = 4052; +pub const __NR_lock: u32 = 4053; +pub const __NR_ioctl: u32 = 4054; +pub const __NR_fcntl: u32 = 4055; +pub const __NR_mpx: u32 = 4056; +pub const __NR_setpgid: u32 = 4057; +pub const __NR_ulimit: u32 = 4058; +pub const __NR_unused59: u32 = 4059; +pub const __NR_umask: u32 = 4060; +pub const __NR_chroot: u32 = 4061; +pub const __NR_ustat: u32 = 4062; +pub const __NR_dup2: u32 = 4063; +pub const __NR_getppid: u32 = 4064; +pub const __NR_getpgrp: u32 = 4065; +pub const __NR_setsid: u32 = 4066; +pub const __NR_sigaction: u32 = 4067; +pub const __NR_sgetmask: u32 = 4068; +pub const __NR_ssetmask: u32 = 4069; +pub const __NR_setreuid: u32 = 4070; +pub const __NR_setregid: u32 = 4071; +pub const __NR_sigsuspend: u32 = 4072; +pub const __NR_sigpending: u32 = 4073; +pub const __NR_sethostname: u32 = 4074; +pub const __NR_setrlimit: u32 = 4075; +pub const __NR_getrlimit: u32 = 4076; +pub const __NR_getrusage: u32 = 4077; +pub const __NR_gettimeofday: u32 = 4078; +pub const __NR_settimeofday: u32 = 4079; +pub const __NR_getgroups: u32 = 4080; +pub const __NR_setgroups: u32 = 4081; +pub const __NR_reserved82: u32 = 4082; +pub const __NR_symlink: u32 = 4083; +pub const __NR_unused84: u32 = 4084; +pub const __NR_readlink: u32 = 4085; +pub const __NR_uselib: u32 = 4086; +pub const __NR_swapon: u32 = 4087; +pub const __NR_reboot: u32 = 4088; +pub const __NR_readdir: u32 = 4089; +pub const __NR_mmap: u32 = 4090; +pub const __NR_munmap: u32 = 4091; +pub const __NR_truncate: u32 = 4092; +pub const __NR_ftruncate: u32 = 4093; +pub const __NR_fchmod: u32 = 4094; +pub const __NR_fchown: u32 = 4095; +pub const __NR_getpriority: u32 = 4096; +pub const __NR_setpriority: u32 = 4097; +pub const __NR_profil: u32 = 4098; +pub const __NR_statfs: u32 = 4099; +pub const __NR_fstatfs: u32 = 4100; +pub const __NR_ioperm: u32 = 4101; +pub const __NR_socketcall: u32 = 4102; +pub const __NR_syslog: u32 = 4103; +pub const __NR_setitimer: u32 = 4104; +pub const __NR_getitimer: u32 = 4105; +pub const __NR_stat: u32 = 4106; +pub const __NR_lstat: u32 = 4107; +pub const __NR_fstat: u32 = 4108; +pub const __NR_unused109: u32 = 4109; +pub const __NR_iopl: u32 = 4110; +pub const __NR_vhangup: u32 = 4111; +pub const __NR_idle: u32 = 4112; +pub const __NR_vm86: u32 = 4113; +pub const __NR_wait4: u32 = 4114; +pub const __NR_swapoff: u32 = 4115; +pub const __NR_sysinfo: u32 = 4116; +pub const __NR_ipc: u32 = 4117; +pub const __NR_fsync: u32 = 4118; +pub const __NR_sigreturn: u32 = 4119; +pub const __NR_clone: u32 = 4120; +pub const __NR_setdomainname: u32 = 4121; +pub const __NR_uname: u32 = 4122; +pub const __NR_modify_ldt: u32 = 4123; +pub const __NR_adjtimex: u32 = 4124; +pub const __NR_mprotect: u32 = 4125; +pub const __NR_sigprocmask: u32 = 4126; +pub const __NR_create_module: u32 = 4127; +pub const __NR_init_module: u32 = 4128; +pub const __NR_delete_module: u32 = 4129; +pub const __NR_get_kernel_syms: u32 = 4130; +pub const __NR_quotactl: u32 = 4131; +pub const __NR_getpgid: u32 = 4132; +pub const __NR_fchdir: u32 = 4133; +pub const __NR_bdflush: u32 = 4134; +pub const __NR_sysfs: u32 = 4135; +pub const __NR_personality: u32 = 4136; +pub const __NR_afs_syscall: u32 = 4137; +pub const __NR_setfsuid: u32 = 4138; +pub const __NR_setfsgid: u32 = 4139; +pub const __NR__llseek: u32 = 4140; +pub const __NR_getdents: u32 = 4141; +pub const __NR__newselect: u32 = 4142; +pub const __NR_flock: u32 = 4143; +pub const __NR_msync: u32 = 4144; +pub const __NR_readv: u32 = 4145; +pub const __NR_writev: u32 = 4146; +pub const __NR_cacheflush: u32 = 4147; +pub const __NR_cachectl: u32 = 4148; +pub const __NR_sysmips: u32 = 4149; +pub const __NR_unused150: u32 = 4150; +pub const __NR_getsid: u32 = 4151; +pub const __NR_fdatasync: u32 = 4152; +pub const __NR__sysctl: u32 = 4153; +pub const __NR_mlock: u32 = 4154; +pub const __NR_munlock: u32 = 4155; +pub const __NR_mlockall: u32 = 4156; +pub const __NR_munlockall: u32 = 4157; +pub const __NR_sched_setparam: u32 = 4158; +pub const __NR_sched_getparam: u32 = 4159; +pub const __NR_sched_setscheduler: u32 = 4160; +pub const __NR_sched_getscheduler: u32 = 4161; +pub const __NR_sched_yield: u32 = 4162; +pub const __NR_sched_get_priority_max: u32 = 4163; +pub const __NR_sched_get_priority_min: u32 = 4164; +pub const __NR_sched_rr_get_interval: u32 = 4165; +pub const __NR_nanosleep: u32 = 4166; +pub const __NR_mremap: u32 = 4167; +pub const __NR_accept: u32 = 4168; +pub const __NR_bind: u32 = 4169; +pub const __NR_connect: u32 = 4170; +pub const __NR_getpeername: u32 = 4171; +pub const __NR_getsockname: u32 = 4172; +pub const __NR_getsockopt: u32 = 4173; +pub const __NR_listen: u32 = 4174; +pub const __NR_recv: u32 = 4175; +pub const __NR_recvfrom: u32 = 4176; +pub const __NR_recvmsg: u32 = 4177; +pub const __NR_send: u32 = 4178; +pub const __NR_sendmsg: u32 = 4179; +pub const __NR_sendto: u32 = 4180; +pub const __NR_setsockopt: u32 = 4181; +pub const __NR_shutdown: u32 = 4182; +pub const __NR_socket: u32 = 4183; +pub const __NR_socketpair: u32 = 4184; +pub const __NR_setresuid: u32 = 4185; +pub const __NR_getresuid: u32 = 4186; +pub const __NR_query_module: u32 = 4187; +pub const __NR_poll: u32 = 4188; +pub const __NR_nfsservctl: u32 = 4189; +pub const __NR_setresgid: u32 = 4190; +pub const __NR_getresgid: u32 = 4191; +pub const __NR_prctl: u32 = 4192; +pub const __NR_rt_sigreturn: u32 = 4193; +pub const __NR_rt_sigaction: u32 = 4194; +pub const __NR_rt_sigprocmask: u32 = 4195; +pub const __NR_rt_sigpending: u32 = 4196; +pub const __NR_rt_sigtimedwait: u32 = 4197; +pub const __NR_rt_sigqueueinfo: u32 = 4198; +pub const __NR_rt_sigsuspend: u32 = 4199; +pub const __NR_pread64: u32 = 4200; +pub const __NR_pwrite64: u32 = 4201; +pub const __NR_chown: u32 = 4202; +pub const __NR_getcwd: u32 = 4203; +pub const __NR_capget: u32 = 4204; +pub const __NR_capset: u32 = 4205; +pub const __NR_sigaltstack: u32 = 4206; +pub const __NR_sendfile: u32 = 4207; +pub const __NR_getpmsg: u32 = 4208; +pub const __NR_putpmsg: u32 = 4209; +pub const __NR_mmap2: u32 = 4210; +pub const __NR_truncate64: u32 = 4211; +pub const __NR_ftruncate64: u32 = 4212; +pub const __NR_stat64: u32 = 4213; +pub const __NR_lstat64: u32 = 4214; +pub const __NR_fstat64: u32 = 4215; +pub const __NR_pivot_root: u32 = 4216; +pub const __NR_mincore: u32 = 4217; +pub const __NR_madvise: u32 = 4218; +pub const __NR_getdents64: u32 = 4219; +pub const __NR_fcntl64: u32 = 4220; +pub const __NR_reserved221: u32 = 4221; +pub const __NR_gettid: u32 = 4222; +pub const __NR_readahead: u32 = 4223; +pub const __NR_setxattr: u32 = 4224; +pub const __NR_lsetxattr: u32 = 4225; +pub const __NR_fsetxattr: u32 = 4226; +pub const __NR_getxattr: u32 = 4227; +pub const __NR_lgetxattr: u32 = 4228; +pub const __NR_fgetxattr: u32 = 4229; +pub const __NR_listxattr: u32 = 4230; +pub const __NR_llistxattr: u32 = 4231; +pub const __NR_flistxattr: u32 = 4232; +pub const __NR_removexattr: u32 = 4233; +pub const __NR_lremovexattr: u32 = 4234; +pub const __NR_fremovexattr: u32 = 4235; +pub const __NR_tkill: u32 = 4236; +pub const __NR_sendfile64: u32 = 4237; +pub const __NR_futex: u32 = 4238; +pub const __NR_sched_setaffinity: u32 = 4239; +pub const __NR_sched_getaffinity: u32 = 4240; +pub const __NR_io_setup: u32 = 4241; +pub const __NR_io_destroy: u32 = 4242; +pub const __NR_io_getevents: u32 = 4243; +pub const __NR_io_submit: u32 = 4244; +pub const __NR_io_cancel: u32 = 4245; +pub const __NR_exit_group: u32 = 4246; +pub const __NR_lookup_dcookie: u32 = 4247; +pub const __NR_epoll_create: u32 = 4248; +pub const __NR_epoll_ctl: u32 = 4249; +pub const __NR_epoll_wait: u32 = 4250; +pub const __NR_remap_file_pages: u32 = 4251; +pub const __NR_set_tid_address: u32 = 4252; +pub const __NR_restart_syscall: u32 = 4253; +pub const __NR_fadvise64: u32 = 4254; +pub const __NR_statfs64: u32 = 4255; +pub const __NR_fstatfs64: u32 = 4256; +pub const __NR_timer_create: u32 = 4257; +pub const __NR_timer_settime: u32 = 4258; +pub const __NR_timer_gettime: u32 = 4259; +pub const __NR_timer_getoverrun: u32 = 4260; +pub const __NR_timer_delete: u32 = 4261; +pub const __NR_clock_settime: u32 = 4262; +pub const __NR_clock_gettime: u32 = 4263; +pub const __NR_clock_getres: u32 = 4264; +pub const __NR_clock_nanosleep: u32 = 4265; +pub const __NR_tgkill: u32 = 4266; +pub const __NR_utimes: u32 = 4267; +pub const __NR_mbind: u32 = 4268; +pub const __NR_get_mempolicy: u32 = 4269; +pub const __NR_set_mempolicy: u32 = 4270; +pub const __NR_mq_open: u32 = 4271; +pub const __NR_mq_unlink: u32 = 4272; +pub const __NR_mq_timedsend: u32 = 4273; +pub const __NR_mq_timedreceive: u32 = 4274; +pub const __NR_mq_notify: u32 = 4275; +pub const __NR_mq_getsetattr: u32 = 4276; +pub const __NR_vserver: u32 = 4277; +pub const __NR_waitid: u32 = 4278; +pub const __NR_add_key: u32 = 4280; +pub const __NR_request_key: u32 = 4281; +pub const __NR_keyctl: u32 = 4282; +pub const __NR_set_thread_area: u32 = 4283; +pub const __NR_inotify_init: u32 = 4284; +pub const __NR_inotify_add_watch: u32 = 4285; +pub const __NR_inotify_rm_watch: u32 = 4286; +pub const __NR_migrate_pages: u32 = 4287; +pub const __NR_openat: u32 = 4288; +pub const __NR_mkdirat: u32 = 4289; +pub const __NR_mknodat: u32 = 4290; +pub const __NR_fchownat: u32 = 4291; +pub const __NR_futimesat: u32 = 4292; +pub const __NR_fstatat64: u32 = 4293; +pub const __NR_unlinkat: u32 = 4294; +pub const __NR_renameat: u32 = 4295; +pub const __NR_linkat: u32 = 4296; +pub const __NR_symlinkat: u32 = 4297; +pub const __NR_readlinkat: u32 = 4298; +pub const __NR_fchmodat: u32 = 4299; +pub const __NR_faccessat: u32 = 4300; +pub const __NR_pselect6: u32 = 4301; +pub const __NR_ppoll: u32 = 4302; +pub const __NR_unshare: u32 = 4303; +pub const __NR_splice: u32 = 4304; +pub const __NR_sync_file_range: u32 = 4305; +pub const __NR_tee: u32 = 4306; +pub const __NR_vmsplice: u32 = 4307; +pub const __NR_move_pages: u32 = 4308; +pub const __NR_set_robust_list: u32 = 4309; +pub const __NR_get_robust_list: u32 = 4310; +pub const __NR_kexec_load: u32 = 4311; +pub const __NR_getcpu: u32 = 4312; +pub const __NR_epoll_pwait: u32 = 4313; +pub const __NR_ioprio_set: u32 = 4314; +pub const __NR_ioprio_get: u32 = 4315; +pub const __NR_utimensat: u32 = 4316; +pub const __NR_signalfd: u32 = 4317; +pub const __NR_timerfd: u32 = 4318; +pub const __NR_eventfd: u32 = 4319; +pub const __NR_fallocate: u32 = 4320; +pub const __NR_timerfd_create: u32 = 4321; +pub const __NR_timerfd_gettime: u32 = 4322; +pub const __NR_timerfd_settime: u32 = 4323; +pub const __NR_signalfd4: u32 = 4324; +pub const __NR_eventfd2: u32 = 4325; +pub const __NR_epoll_create1: u32 = 4326; +pub const __NR_dup3: u32 = 4327; +pub const __NR_pipe2: u32 = 4328; +pub const __NR_inotify_init1: u32 = 4329; +pub const __NR_preadv: u32 = 4330; +pub const __NR_pwritev: u32 = 4331; +pub const __NR_rt_tgsigqueueinfo: u32 = 4332; +pub const __NR_perf_event_open: u32 = 4333; +pub const __NR_accept4: u32 = 4334; +pub const __NR_recvmmsg: u32 = 4335; +pub const __NR_fanotify_init: u32 = 4336; +pub const __NR_fanotify_mark: u32 = 4337; +pub const __NR_prlimit64: u32 = 4338; +pub const __NR_name_to_handle_at: u32 = 4339; +pub const __NR_open_by_handle_at: u32 = 4340; +pub const __NR_clock_adjtime: u32 = 4341; +pub const __NR_syncfs: u32 = 4342; +pub const __NR_sendmmsg: u32 = 4343; +pub const __NR_setns: u32 = 4344; +pub const __NR_process_vm_readv: u32 = 4345; +pub const __NR_process_vm_writev: u32 = 4346; +pub const __NR_kcmp: u32 = 4347; +pub const __NR_finit_module: u32 = 4348; +pub const __NR_sched_setattr: u32 = 4349; +pub const __NR_sched_getattr: u32 = 4350; +pub const __NR_renameat2: u32 = 4351; +pub const __NR_seccomp: u32 = 4352; +pub const __NR_getrandom: u32 = 4353; +pub const __NR_memfd_create: u32 = 4354; +pub const __NR_bpf: u32 = 4355; +pub const __NR_execveat: u32 = 4356; +pub const __NR_userfaultfd: u32 = 4357; +pub const __NR_membarrier: u32 = 4358; +pub const __NR_mlock2: u32 = 4359; +pub const __NR_copy_file_range: u32 = 4360; +pub const __NR_preadv2: u32 = 4361; +pub const __NR_pwritev2: u32 = 4362; +pub const __NR_pkey_mprotect: u32 = 4363; +pub const __NR_pkey_alloc: u32 = 4364; +pub const __NR_pkey_free: u32 = 4365; +pub const __NR_statx: u32 = 4366; +pub const __NR_rseq: u32 = 4367; +pub const __NR_io_pgetevents: u32 = 4368; +pub const __NR_semget: u32 = 4393; +pub const __NR_semctl: u32 = 4394; +pub const __NR_shmget: u32 = 4395; +pub const __NR_shmctl: u32 = 4396; +pub const __NR_shmat: u32 = 4397; +pub const __NR_shmdt: u32 = 4398; +pub const __NR_msgget: u32 = 4399; +pub const __NR_msgsnd: u32 = 4400; +pub const __NR_msgrcv: u32 = 4401; +pub const __NR_msgctl: u32 = 4402; +pub const __NR_clock_gettime64: u32 = 4403; +pub const __NR_clock_settime64: u32 = 4404; +pub const __NR_clock_adjtime64: u32 = 4405; +pub const __NR_clock_getres_time64: u32 = 4406; +pub const __NR_clock_nanosleep_time64: u32 = 4407; +pub const __NR_timer_gettime64: u32 = 4408; +pub const __NR_timer_settime64: u32 = 4409; +pub const __NR_timerfd_gettime64: u32 = 4410; +pub const __NR_timerfd_settime64: u32 = 4411; +pub const __NR_utimensat_time64: u32 = 4412; +pub const __NR_pselect6_time64: u32 = 4413; +pub const __NR_ppoll_time64: u32 = 4414; +pub const __NR_io_pgetevents_time64: u32 = 4416; +pub const __NR_recvmmsg_time64: u32 = 4417; +pub const __NR_mq_timedsend_time64: u32 = 4418; +pub const __NR_mq_timedreceive_time64: u32 = 4419; +pub const __NR_semtimedop_time64: u32 = 4420; +pub const __NR_rt_sigtimedwait_time64: u32 = 4421; +pub const __NR_futex_time64: u32 = 4422; +pub const __NR_sched_rr_get_interval_time64: u32 = 4423; +pub const __NR_pidfd_send_signal: u32 = 4424; +pub const __NR_io_uring_setup: u32 = 4425; +pub const __NR_io_uring_enter: u32 = 4426; +pub const __NR_io_uring_register: u32 = 4427; +pub const __NR_open_tree: u32 = 4428; +pub const __NR_move_mount: u32 = 4429; +pub const __NR_fsopen: u32 = 4430; +pub const __NR_fsconfig: u32 = 4431; +pub const __NR_fsmount: u32 = 4432; +pub const __NR_fspick: u32 = 4433; +pub const __NR_pidfd_open: u32 = 4434; +pub const __NR_clone3: u32 = 4435; +pub const __NR_close_range: u32 = 4436; +pub const __NR_openat2: u32 = 4437; +pub const __NR_pidfd_getfd: u32 = 4438; +pub const __NR_faccessat2: u32 = 4439; +pub const __NR_process_madvise: u32 = 4440; +pub const __NR_epoll_pwait2: u32 = 4441; +pub const __NR_mount_setattr: u32 = 4442; +pub const __NR_quotactl_fd: u32 = 4443; +pub const __NR_landlock_create_ruleset: u32 = 4444; +pub const __NR_landlock_add_rule: u32 = 4445; +pub const __NR_landlock_restrict_self: u32 = 4446; +pub const __NR_process_mrelease: u32 = 4448; +pub const __NR_futex_waitv: u32 = 4449; +pub const __NR_set_mempolicy_home_node: u32 = 4450; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const P_ALL: u32 = 0; +pub const P_PID: u32 = 1; +pub const P_PGID: u32 = 2; +pub const P_PIDFD: u32 = 3; +pub const XATTR_CREATE: u32 = 1; +pub const XATTR_REPLACE: u32 = 2; +pub const XATTR_OS2_PREFIX: &[u8; 5] = b"os2.\0"; +pub const XATTR_MAC_OSX_PREFIX: &[u8; 5] = b"osx.\0"; +pub const XATTR_BTRFS_PREFIX: &[u8; 7] = b"btrfs.\0"; +pub const XATTR_HURD_PREFIX: &[u8; 5] = b"gnu.\0"; +pub const XATTR_SECURITY_PREFIX: &[u8; 10] = b"security.\0"; +pub const XATTR_SYSTEM_PREFIX: &[u8; 8] = b"system.\0"; +pub const XATTR_TRUSTED_PREFIX: &[u8; 9] = b"trusted.\0"; +pub const XATTR_USER_PREFIX: &[u8; 6] = b"user.\0"; +pub const XATTR_EVM_SUFFIX: &[u8; 4] = b"evm\0"; +pub const XATTR_NAME_EVM: &[u8; 13] = b"security.evm\0"; +pub const XATTR_IMA_SUFFIX: &[u8; 4] = b"ima\0"; +pub const XATTR_NAME_IMA: &[u8; 13] = b"security.ima\0"; +pub const XATTR_SELINUX_SUFFIX: &[u8; 8] = b"selinux\0"; +pub const XATTR_NAME_SELINUX: &[u8; 17] = b"security.selinux\0"; +pub const XATTR_SMACK_SUFFIX: &[u8; 8] = b"SMACK64\0"; +pub const XATTR_SMACK_IPIN: &[u8; 12] = b"SMACK64IPIN\0"; +pub const XATTR_SMACK_IPOUT: &[u8; 13] = b"SMACK64IPOUT\0"; +pub const XATTR_SMACK_EXEC: &[u8; 12] = b"SMACK64EXEC\0"; +pub const XATTR_SMACK_TRANSMUTE: &[u8; 17] = b"SMACK64TRANSMUTE\0"; +pub const XATTR_SMACK_MMAP: &[u8; 12] = b"SMACK64MMAP\0"; +pub const XATTR_NAME_SMACK: &[u8; 17] = b"security.SMACK64\0"; +pub const XATTR_NAME_SMACKIPIN: &[u8; 21] = b"security.SMACK64IPIN\0"; +pub const XATTR_NAME_SMACKIPOUT: &[u8; 22] = b"security.SMACK64IPOUT\0"; +pub const XATTR_NAME_SMACKEXEC: &[u8; 21] = b"security.SMACK64EXEC\0"; +pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26] = b"security.SMACK64TRANSMUTE\0"; +pub const XATTR_NAME_SMACKMMAP: &[u8; 21] = b"security.SMACK64MMAP\0"; +pub const XATTR_APPARMOR_SUFFIX: &[u8; 9] = b"apparmor\0"; +pub const XATTR_NAME_APPARMOR: &[u8; 18] = b"security.apparmor\0"; +pub const XATTR_CAPS_SUFFIX: &[u8; 11] = b"capability\0"; +pub const XATTR_NAME_CAPS: &[u8; 20] = b"security.capability\0"; +pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17] = b"posix_acl_access\0"; +pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24] = b"system.posix_acl_access\0"; +pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18] = b"posix_acl_default\0"; +pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25] = b"system.posix_acl_default\0"; +pub const MFD_CLOEXEC: u32 = 1; +pub const MFD_ALLOW_SEALING: u32 = 2; +pub const MFD_HUGETLB: u32 = 4; +pub const MFD_NOEXEC_SEAL: u32 = 8; +pub const MFD_EXEC: u32 = 16; +pub const MFD_HUGE_SHIFT: u32 = 26; +pub const MFD_HUGE_MASK: u32 = 63; +pub const MFD_HUGE_64KB: u32 = 1073741824; +pub const MFD_HUGE_512KB: u32 = 1275068416; +pub const MFD_HUGE_1MB: u32 = 1342177280; +pub const MFD_HUGE_2MB: u32 = 1409286144; +pub const MFD_HUGE_8MB: u32 = 1543503872; +pub const MFD_HUGE_16MB: u32 = 1610612736; +pub const MFD_HUGE_32MB: u32 = 1677721600; +pub const MFD_HUGE_256MB: u32 = 1879048192; +pub const MFD_HUGE_512MB: u32 = 1946157056; +pub const MFD_HUGE_1GB: u32 = 2013265920; +pub const MFD_HUGE_2GB: u32 = 2080374784; +pub const MFD_HUGE_16GB: u32 = 2281701376; +pub const TFD_TIMER_ABSTIME: u32 = 1; +pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; +pub const TFD_CLOEXEC: u32 = 524288; +pub const TFD_NONBLOCK: u32 = 128; +pub const USERFAULTFD_IOC: u32 = 170; +pub const _UFFDIO_REGISTER: u32 = 0; +pub const _UFFDIO_UNREGISTER: u32 = 1; +pub const _UFFDIO_WAKE: u32 = 2; +pub const _UFFDIO_COPY: u32 = 3; +pub const _UFFDIO_ZEROPAGE: u32 = 4; +pub const _UFFDIO_WRITEPROTECT: u32 = 6; +pub const _UFFDIO_CONTINUE: u32 = 7; +pub const _UFFDIO_API: u32 = 63; +pub const UFFDIO: u32 = 170; +pub const UFFD_EVENT_PAGEFAULT: u32 = 18; +pub const UFFD_EVENT_FORK: u32 = 19; +pub const UFFD_EVENT_REMAP: u32 = 20; +pub const UFFD_EVENT_REMOVE: u32 = 21; +pub const UFFD_EVENT_UNMAP: u32 = 22; +pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; +pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; +pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; +pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; +pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; +pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; +pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; +pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; +pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; +pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; +pub const UFFD_FEATURE_SIGBUS: u32 = 128; +pub const UFFD_FEATURE_THREAD_ID: u32 = 256; +pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; +pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; +pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; +pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; +pub const UFFD_FEATURE_WP_UNPOPULATED: u32 = 8192; +pub const UFFD_USER_MODE_ONLY: u32 = 1; +pub const DT_UNKNOWN: u32 = 0; +pub const DT_FIFO: u32 = 1; +pub const DT_CHR: u32 = 2; +pub const DT_DIR: u32 = 4; +pub const DT_BLK: u32 = 6; +pub const DT_REG: u32 = 8; +pub const DT_LNK: u32 = 10; +pub const DT_SOCK: u32 = 12; +pub const STAT_HAVE_NSEC: u32 = 1; +pub const F_OK: u32 = 0; +pub const R_OK: u32 = 4; +pub const W_OK: u32 = 2; +pub const X_OK: u32 = 1; +pub const UTIME_NOW: u32 = 1073741823; +pub const UTIME_OMIT: u32 = 1073741822; +pub const MNT_FORCE: u32 = 1; +pub const MNT_DETACH: u32 = 2; +pub const MNT_EXPIRE: u32 = 4; +pub const UMOUNT_NOFOLLOW: u32 = 8; +pub const UMOUNT_UNUSED: u32 = 2147483648; +pub const STDIN_FILENO: u32 = 0; +pub const STDOUT_FILENO: u32 = 1; +pub const STDERR_FILENO: u32 = 2; +pub const RWF_HIPRI: u32 = 1; +pub const RWF_DSYNC: u32 = 2; +pub const RWF_SYNC: u32 = 4; +pub const RWF_NOWAIT: u32 = 8; +pub const RWF_APPEND: u32 = 16; +pub const EFD_SEMAPHORE: u32 = 1; +pub const EFD_CLOEXEC: u32 = 524288; +pub const EFD_NONBLOCK: u32 = 128; +pub const EPOLLIN: u32 = 1; +pub const EPOLLPRI: u32 = 2; +pub const EPOLLOUT: u32 = 4; +pub const EPOLLERR: u32 = 8; +pub const EPOLLHUP: u32 = 16; +pub const EPOLLNVAL: u32 = 32; +pub const EPOLLRDNORM: u32 = 64; +pub const EPOLLRDBAND: u32 = 128; +pub const EPOLLWRNORM: u32 = 256; +pub const EPOLLWRBAND: u32 = 512; +pub const EPOLLMSG: u32 = 1024; +pub const EPOLLRDHUP: u32 = 8192; +pub const EPOLLEXCLUSIVE: u32 = 268435456; +pub const EPOLLWAKEUP: u32 = 536870912; +pub const EPOLLONESHOT: u32 = 1073741824; +pub const EPOLLET: u32 = 2147483648; +pub const TFD_SHARED_FCNTL_FLAGS: u32 = 524416; +pub const TFD_CREATE_FLAGS: u32 = 524416; +pub const TFD_SETTIME_FLAGS: u32 = 1; +pub const UFFD_API: u32 = 170; +pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; +pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; +pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; +pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; +pub const UFFDIO_COPY_MODE_WP: u32 = 2; +pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; +pub const POLLWRNORM: u32 = 4; +pub const TCSANOW: u32 = 21518; +pub const TCSADRAIN: u32 = 21519; +pub const TCSAFLUSH: u32 = 21520; +pub const SPLICE_F_MOVE: u32 = 1; +pub const SPLICE_F_NONBLOCK: u32 = 2; +pub const SPLICE_F_MORE: u32 = 4; +pub const SPLICE_F_GIFT: u32 = 8; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum membarrier_cmd { +MEMBARRIER_CMD_QUERY = 0, +MEMBARRIER_CMD_GLOBAL = 1, +MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2, +MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4, +MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8, +MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16, +MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32, +MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64, +MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128, +MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256, +MEMBARRIER_CMD_GET_REGISTRATIONS = 512, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum membarrier_cmd_flag { +MEMBARRIER_CMD_FLAG_CPU = 1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union sigval { +pub sival_int: crate::ctypes::c_int, +pub sival_ptr: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __sifields { +pub _kill: __sifields__bindgen_ty_1, +pub _timer: __sifields__bindgen_ty_2, +pub _rt: __sifields__bindgen_ty_3, +pub _sigchld: __sifields__bindgen_ty_4, +pub _sigfault: __sifields__bindgen_ty_5, +pub _sigpoll: __sifields__bindgen_ty_6, +pub _sigsys: __sifields__bindgen_ty_7, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __sifields__bindgen_ty_5__bindgen_ty_1 { +pub _trapno: crate::ctypes::c_int, +pub _addr_lsb: crate::ctypes::c_short, +pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, +pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, +pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union siginfo__bindgen_ty_1 { +pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, +pub _si_pad: [crate::ctypes::c_int; 32usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union sigevent__bindgen_ty_1 { +pub _pad: [crate::ctypes::c_int; 13usize], +pub _tid: crate::ctypes::c_int, +pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union uffd_msg__bindgen_ty_1 { +pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, +pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, +pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, +pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, +pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { +pub ptid: __u32, +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl membarrier_cmd { +pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; +} +impl user_desc { +#[inline] +pub fn seg_32bit(&self) -> crate::ctypes::c_uint { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) } +} +#[inline] +pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) { +unsafe { +let val: u32 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 1u8, val as u64) +} +} +#[inline] +pub fn contents(&self) -> crate::ctypes::c_uint { +unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) } +} +#[inline] +pub fn set_contents(&mut self, val: crate::ctypes::c_uint) { +unsafe { +let val: u32 = ::core::mem::transmute(val); +self._bitfield_1.set(1usize, 2u8, val as u64) +} +} +#[inline] +pub fn read_exec_only(&self) -> crate::ctypes::c_uint { +unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) } +} +#[inline] +pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) { +unsafe { +let val: u32 = ::core::mem::transmute(val); +self._bitfield_1.set(3usize, 1u8, val as u64) +} +} +#[inline] +pub fn limit_in_pages(&self) -> crate::ctypes::c_uint { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) } +} +#[inline] +pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) { +unsafe { +let val: u32 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 1u8, val as u64) +} +} +#[inline] +pub fn seg_not_present(&self) -> crate::ctypes::c_uint { +unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) } +} +#[inline] +pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) { +unsafe { +let val: u32 = ::core::mem::transmute(val); +self._bitfield_1.set(5usize, 1u8, val as u64) +} +} +#[inline] +pub fn useable(&self) -> crate::ctypes::c_uint { +unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) } +} +#[inline] +pub fn set_useable(&mut self, val: crate::ctypes::c_uint) { +unsafe { +let val: u32 = ::core::mem::transmute(val); +self._bitfield_1.set(6usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 1u8, { +let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) }; +seg_32bit as u64 +}); +__bindgen_bitfield_unit.set(1usize, 2u8, { +let contents: u32 = unsafe { ::core::mem::transmute(contents) }; +contents as u64 +}); +__bindgen_bitfield_unit.set(3usize, 1u8, { +let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) }; +read_exec_only as u64 +}); +__bindgen_bitfield_unit.set(4usize, 1u8, { +let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) }; +limit_in_pages as u64 +}); +__bindgen_bitfield_unit.set(5usize, 1u8, { +let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) }; +seg_not_present as u64 +}); +__bindgen_bitfield_unit.set(6usize, 1u8, { +let useable: u32 = unsafe { ::core::mem::transmute(useable) }; +useable as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/if_ether.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/if_ether.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/if_ether.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/if_ether.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,177 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ethhdr { +pub h_dest: [crate::ctypes::c_uchar; 6usize], +pub h_source: [crate::ctypes::c_uchar; 6usize], +pub h_proto: __be16, +} +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const ETH_ALEN: u32 = 6; +pub const ETH_TLEN: u32 = 2; +pub const ETH_HLEN: u32 = 14; +pub const ETH_ZLEN: u32 = 60; +pub const ETH_DATA_LEN: u32 = 1500; +pub const ETH_FRAME_LEN: u32 = 1514; +pub const ETH_FCS_LEN: u32 = 4; +pub const ETH_MIN_MTU: u32 = 68; +pub const ETH_MAX_MTU: u32 = 65535; +pub const ETH_P_LOOP: u32 = 96; +pub const ETH_P_PUP: u32 = 512; +pub const ETH_P_PUPAT: u32 = 513; +pub const ETH_P_TSN: u32 = 8944; +pub const ETH_P_ERSPAN2: u32 = 8939; +pub const ETH_P_IP: u32 = 2048; +pub const ETH_P_X25: u32 = 2053; +pub const ETH_P_ARP: u32 = 2054; +pub const ETH_P_BPQ: u32 = 2303; +pub const ETH_P_IEEEPUP: u32 = 2560; +pub const ETH_P_IEEEPUPAT: u32 = 2561; +pub const ETH_P_BATMAN: u32 = 17157; +pub const ETH_P_DEC: u32 = 24576; +pub const ETH_P_DNA_DL: u32 = 24577; +pub const ETH_P_DNA_RC: u32 = 24578; +pub const ETH_P_DNA_RT: u32 = 24579; +pub const ETH_P_LAT: u32 = 24580; +pub const ETH_P_DIAG: u32 = 24581; +pub const ETH_P_CUST: u32 = 24582; +pub const ETH_P_SCA: u32 = 24583; +pub const ETH_P_TEB: u32 = 25944; +pub const ETH_P_RARP: u32 = 32821; +pub const ETH_P_ATALK: u32 = 32923; +pub const ETH_P_AARP: u32 = 33011; +pub const ETH_P_8021Q: u32 = 33024; +pub const ETH_P_ERSPAN: u32 = 35006; +pub const ETH_P_IPX: u32 = 33079; +pub const ETH_P_IPV6: u32 = 34525; +pub const ETH_P_PAUSE: u32 = 34824; +pub const ETH_P_SLOW: u32 = 34825; +pub const ETH_P_WCCP: u32 = 34878; +pub const ETH_P_MPLS_UC: u32 = 34887; +pub const ETH_P_MPLS_MC: u32 = 34888; +pub const ETH_P_ATMMPOA: u32 = 34892; +pub const ETH_P_PPP_DISC: u32 = 34915; +pub const ETH_P_PPP_SES: u32 = 34916; +pub const ETH_P_LINK_CTL: u32 = 34924; +pub const ETH_P_ATMFATE: u32 = 34948; +pub const ETH_P_PAE: u32 = 34958; +pub const ETH_P_PROFINET: u32 = 34962; +pub const ETH_P_REALTEK: u32 = 34969; +pub const ETH_P_AOE: u32 = 34978; +pub const ETH_P_ETHERCAT: u32 = 34980; +pub const ETH_P_8021AD: u32 = 34984; +pub const ETH_P_802_EX1: u32 = 34997; +pub const ETH_P_PREAUTH: u32 = 35015; +pub const ETH_P_TIPC: u32 = 35018; +pub const ETH_P_LLDP: u32 = 35020; +pub const ETH_P_MRP: u32 = 35043; +pub const ETH_P_MACSEC: u32 = 35045; +pub const ETH_P_8021AH: u32 = 35047; +pub const ETH_P_MVRP: u32 = 35061; +pub const ETH_P_1588: u32 = 35063; +pub const ETH_P_NCSI: u32 = 35064; +pub const ETH_P_PRP: u32 = 35067; +pub const ETH_P_CFM: u32 = 35074; +pub const ETH_P_FCOE: u32 = 35078; +pub const ETH_P_IBOE: u32 = 35093; +pub const ETH_P_TDLS: u32 = 35085; +pub const ETH_P_FIP: u32 = 35092; +pub const ETH_P_80221: u32 = 35095; +pub const ETH_P_HSR: u32 = 35119; +pub const ETH_P_NSH: u32 = 35151; +pub const ETH_P_LOOPBACK: u32 = 36864; +pub const ETH_P_QINQ1: u32 = 37120; +pub const ETH_P_QINQ2: u32 = 37376; +pub const ETH_P_QINQ3: u32 = 37632; +pub const ETH_P_EDSA: u32 = 56026; +pub const ETH_P_DSA_8021Q: u32 = 56027; +pub const ETH_P_DSA_A5PSW: u32 = 57345; +pub const ETH_P_IFE: u32 = 60734; +pub const ETH_P_AF_IUCV: u32 = 64507; +pub const ETH_P_802_3_MIN: u32 = 1536; +pub const ETH_P_802_3: u32 = 1; +pub const ETH_P_AX25: u32 = 2; +pub const ETH_P_ALL: u32 = 3; +pub const ETH_P_802_2: u32 = 4; +pub const ETH_P_SNAP: u32 = 5; +pub const ETH_P_DDCMP: u32 = 6; +pub const ETH_P_WAN_PPP: u32 = 7; +pub const ETH_P_PPP_MP: u32 = 8; +pub const ETH_P_LOCALTALK: u32 = 9; +pub const ETH_P_CAN: u32 = 12; +pub const ETH_P_CANFD: u32 = 13; +pub const ETH_P_CANXL: u32 = 14; +pub const ETH_P_PPPTALK: u32 = 16; +pub const ETH_P_TR_802_2: u32 = 17; +pub const ETH_P_MOBITEX: u32 = 21; +pub const ETH_P_CONTROL: u32 = 22; +pub const ETH_P_IRDA: u32 = 23; +pub const ETH_P_ECONET: u32 = 24; +pub const ETH_P_HDLC: u32 = 25; +pub const ETH_P_ARCNET: u32 = 26; +pub const ETH_P_DSA: u32 = 27; +pub const ETH_P_TRAILER: u32 = 28; +pub const ETH_P_PHONET: u32 = 245; +pub const ETH_P_IEEE802154: u32 = 246; +pub const ETH_P_CAIF: u32 = 247; +pub const ETH_P_XDSA: u32 = 248; +pub const ETH_P_MAP: u32 = 249; +pub const ETH_P_MCTP: u32 = 250; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/ioctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/ioctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/ioctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1587 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub const FIONREAD: u32 = 18047; +pub const FIONBIO: u32 = 26238; +pub const FIOCLEX: u32 = 26113; +pub const FIONCLEX: u32 = 26114; +pub const FIOASYNC: u32 = 26237; +pub const FIOQSIZE: u32 = 26239; +pub const TCXONC: u32 = 21510; +pub const TCFLSH: u32 = 21511; +pub const TIOCSCTTY: u32 = 21632; +pub const TIOCSPGRP: u32 = 2147775606; +pub const TIOCOUTQ: u32 = 29810; +pub const TIOCSTI: u32 = 21618; +pub const TIOCSWINSZ: u32 = 2148037735; +pub const TIOCMGET: u32 = 29725; +pub const TIOCMBIS: u32 = 29723; +pub const TIOCMBIC: u32 = 29724; +pub const TIOCMSET: u32 = 29722; +pub const TIOCSSOFTCAR: u32 = 21634; +pub const TIOCLINUX: u32 = 21635; +pub const TIOCCONS: u32 = 2147775608; +pub const TIOCSSERIAL: u32 = 21637; +pub const TIOCPKT: u32 = 21616; +pub const TIOCNOTTY: u32 = 21617; +pub const TIOCSETD: u32 = 29697; +pub const TIOCSBRK: u32 = 21543; +pub const TIOCCBRK: u32 = 21544; +pub const TIOCSPTLCK: u32 = 2147767345; +pub const TIOCSIG: u32 = 2147767350; +pub const TIOCVHANGUP: u32 = 21559; +pub const TIOCSERCONFIG: u32 = 21640; +pub const TIOCSERGWILD: u32 = 21641; +pub const TIOCSERSWILD: u32 = 21642; +pub const TIOCSLCKTRMIOS: u32 = 21644; +pub const TIOCSERGSTRUCT: u32 = 21645; +pub const TIOCSERGETLSR: u32 = 21646; +pub const TIOCSERGETMULTI: u32 = 21647; +pub const TIOCSERSETMULTI: u32 = 21648; +pub const TIOCMIWAIT: u32 = 21649; +pub const TCGETS: u32 = 21517; +pub const TCGETA: u32 = 21505; +pub const TCSBRK: u32 = 21509; +pub const TCSBRKP: u32 = 21638; +pub const TCSETA: u32 = 21506; +pub const TCSETAF: u32 = 21508; +pub const TCSETAW: u32 = 21507; +pub const TIOCEXCL: u32 = 29709; +pub const TIOCNXCL: u32 = 29710; +pub const TIOCGDEV: u32 = 1074025522; +pub const TIOCGEXCL: u32 = 1074025536; +pub const TIOCGICOUNT: u32 = 21650; +pub const TIOCGLCKTRMIOS: u32 = 21643; +pub const TIOCGPGRP: u32 = 1074033783; +pub const TIOCGPKT: u32 = 1074025528; +pub const TIOCGPTLCK: u32 = 1074025529; +pub const TIOCGPTN: u32 = 1074025520; +pub const TIOCGPTPEER: u32 = 536892481; +pub const TIOCGSERIAL: u32 = 21636; +pub const TIOCGSID: u32 = 29718; +pub const TIOCGSOFTCAR: u32 = 21633; +pub const TIOCGWINSZ: u32 = 1074295912; +pub const TCGETS2: u32 = 1076909098; +pub const TCSETS: u32 = 21518; +pub const TCSETS2: u32 = 2150650923; +pub const TCSETSF: u32 = 21520; +pub const TCSETSF2: u32 = 2150650925; +pub const TCSETSW: u32 = 21519; +pub const TCSETSW2: u32 = 2150650924; +pub const TIOCGETD: u32 = 29696; +pub const TIOCGETP: u32 = 29704; +pub const TIOCGLTC: u32 = 29812; +pub const MTIOCGET: u32 = 1075604738; +pub const BLKSSZGET: u32 = 536875624; +pub const BLKPBSZGET: u32 = 536875643; +pub const BLKROSET: u32 = 536875613; +pub const BLKROGET: u32 = 536875614; +pub const BLKRRPART: u32 = 536875615; +pub const BLKGETSIZE: u32 = 536875616; +pub const BLKFLSBUF: u32 = 536875617; +pub const BLKRASET: u32 = 536875618; +pub const BLKRAGET: u32 = 536875619; +pub const BLKFRASET: u32 = 536875620; +pub const BLKFRAGET: u32 = 536875621; +pub const BLKSECTSET: u32 = 536875622; +pub const BLKSECTGET: u32 = 536875623; +pub const BLKPG: u32 = 536875625; +pub const BLKBSZGET: u32 = 1074008688; +pub const BLKBSZSET: u32 = 2147750513; +pub const BLKGETSIZE64: u32 = 1074008690; +pub const BLKTRACESETUP: u32 = 3225948787; +pub const BLKTRACESTART: u32 = 536875636; +pub const BLKTRACESTOP: u32 = 536875637; +pub const BLKTRACETEARDOWN: u32 = 536875638; +pub const BLKDISCARD: u32 = 536875639; +pub const BLKIOMIN: u32 = 536875640; +pub const BLKIOOPT: u32 = 536875641; +pub const BLKALIGNOFF: u32 = 536875642; +pub const BLKDISCARDZEROES: u32 = 536875644; +pub const BLKSECDISCARD: u32 = 536875645; +pub const BLKROTATIONAL: u32 = 536875646; +pub const BLKZEROOUT: u32 = 536875647; +pub const UFFDIO_REGISTER: u32 = 3223366144; +pub const UFFDIO_UNREGISTER: u32 = 1074833921; +pub const UFFDIO_WAKE: u32 = 1074833922; +pub const UFFDIO_COPY: u32 = 3223890435; +pub const UFFDIO_ZEROPAGE: u32 = 3223366148; +pub const UFFDIO_WRITEPROTECT: u32 = 3222841862; +pub const UFFDIO_API: u32 = 3222841919; +pub const NS_GET_USERNS: u32 = 536917761; +pub const NS_GET_PARENT: u32 = 536917762; +pub const NS_GET_NSTYPE: u32 = 536917763; +pub const KDGETLED: u32 = 19249; +pub const KDSETLED: u32 = 19250; +pub const KDGKBLED: u32 = 19300; +pub const KDSKBLED: u32 = 19301; +pub const KDGKBTYPE: u32 = 19251; +pub const KDADDIO: u32 = 19252; +pub const KDDELIO: u32 = 19253; +pub const KDENABIO: u32 = 19254; +pub const KDDISABIO: u32 = 19255; +pub const KDSETMODE: u32 = 19258; +pub const KDGETMODE: u32 = 19259; +pub const KDMKTONE: u32 = 19248; +pub const KIOCSOUND: u32 = 19247; +pub const GIO_CMAP: u32 = 19312; +pub const PIO_CMAP: u32 = 19313; +pub const GIO_FONT: u32 = 19296; +pub const GIO_FONTX: u32 = 19307; +pub const PIO_FONT: u32 = 19297; +pub const PIO_FONTX: u32 = 19308; +pub const PIO_FONTRESET: u32 = 19309; +pub const GIO_SCRNMAP: u32 = 19264; +pub const GIO_UNISCRNMAP: u32 = 19305; +pub const PIO_SCRNMAP: u32 = 19265; +pub const PIO_UNISCRNMAP: u32 = 19306; +pub const GIO_UNIMAP: u32 = 19302; +pub const PIO_UNIMAP: u32 = 19303; +pub const PIO_UNIMAPCLR: u32 = 19304; +pub const KDGKBMODE: u32 = 19268; +pub const KDSKBMODE: u32 = 19269; +pub const KDGKBMETA: u32 = 19298; +pub const KDSKBMETA: u32 = 19299; +pub const KDGKBENT: u32 = 19270; +pub const KDSKBENT: u32 = 19271; +pub const KDGKBSENT: u32 = 19272; +pub const KDSKBSENT: u32 = 19273; +pub const KDGKBDIACR: u32 = 19274; +pub const KDGETKEYCODE: u32 = 19276; +pub const KDSETKEYCODE: u32 = 19277; +pub const KDSIGACCEPT: u32 = 19278; +pub const VT_OPENQRY: u32 = 22016; +pub const VT_GETMODE: u32 = 22017; +pub const VT_SETMODE: u32 = 22018; +pub const VT_GETSTATE: u32 = 22019; +pub const VT_RELDISP: u32 = 22021; +pub const VT_ACTIVATE: u32 = 22022; +pub const VT_WAITACTIVE: u32 = 22023; +pub const VT_DISALLOCATE: u32 = 22024; +pub const VT_RESIZE: u32 = 22025; +pub const VT_RESIZEX: u32 = 22026; +pub const FIOSETOWN: u32 = 2147772028; +pub const FIOGETOWN: u32 = 1074030203; +pub const SIOCATMARK: u32 = 1074033415; +pub const SIOCGSTAMP: u32 = 35078; +pub const TIOCINQ: u32 = 18047; +pub const SIOCADDRT: u32 = 35083; +pub const SIOCDELRT: u32 = 35084; +pub const SIOCGIFNAME: u32 = 35088; +pub const SIOCSIFLINK: u32 = 35089; +pub const SIOCGIFCONF: u32 = 35090; +pub const SIOCGIFFLAGS: u32 = 35091; +pub const SIOCSIFFLAGS: u32 = 35092; +pub const SIOCGIFADDR: u32 = 35093; +pub const SIOCSIFADDR: u32 = 35094; +pub const SIOCGIFDSTADDR: u32 = 35095; +pub const SIOCSIFDSTADDR: u32 = 35096; +pub const SIOCGIFBRDADDR: u32 = 35097; +pub const SIOCSIFBRDADDR: u32 = 35098; +pub const SIOCGIFNETMASK: u32 = 35099; +pub const SIOCSIFNETMASK: u32 = 35100; +pub const SIOCGIFMETRIC: u32 = 35101; +pub const SIOCSIFMETRIC: u32 = 35102; +pub const SIOCGIFMEM: u32 = 35103; +pub const SIOCSIFMEM: u32 = 35104; +pub const SIOCGIFMTU: u32 = 35105; +pub const SIOCSIFMTU: u32 = 35106; +pub const SIOCSIFHWADDR: u32 = 35108; +pub const SIOCGIFENCAP: u32 = 35109; +pub const SIOCSIFENCAP: u32 = 35110; +pub const SIOCGIFHWADDR: u32 = 35111; +pub const SIOCGIFSLAVE: u32 = 35113; +pub const SIOCSIFSLAVE: u32 = 35120; +pub const SIOCADDMULTI: u32 = 35121; +pub const SIOCDELMULTI: u32 = 35122; +pub const SIOCDARP: u32 = 35155; +pub const SIOCGARP: u32 = 35156; +pub const SIOCSARP: u32 = 35157; +pub const SIOCDRARP: u32 = 35168; +pub const SIOCGRARP: u32 = 35169; +pub const SIOCSRARP: u32 = 35170; +pub const SIOCGIFMAP: u32 = 35184; +pub const SIOCSIFMAP: u32 = 35185; +pub const SIOCRTMSG: u32 = 35085; +pub const SIOCSIFNAME: u32 = 35107; +pub const SIOCGIFINDEX: u32 = 35123; +pub const SIOGIFINDEX: u32 = 35123; +pub const SIOCSIFPFLAGS: u32 = 35124; +pub const SIOCGIFPFLAGS: u32 = 35125; +pub const SIOCDIFADDR: u32 = 35126; +pub const SIOCSIFHWBROADCAST: u32 = 35127; +pub const SIOCGIFCOUNT: u32 = 35128; +pub const SIOCGIFBR: u32 = 35136; +pub const SIOCSIFBR: u32 = 35137; +pub const SIOCGIFTXQLEN: u32 = 35138; +pub const SIOCSIFTXQLEN: u32 = 35139; +pub const SIOCADDDLCI: u32 = 35200; +pub const SIOCDELDLCI: u32 = 35201; +pub const SIOCDEVPRIVATE: u32 = 35312; +pub const SIOCPROTOPRIVATE: u32 = 35296; +pub const FIBMAP: u32 = 536870913; +pub const FIGETBSZ: u32 = 536870914; +pub const FIFREEZE: u32 = 3221510263; +pub const FITHAW: u32 = 3221510264; +pub const FITRIM: u32 = 3222820985; +pub const FICLONE: u32 = 2147783689; +pub const FICLONERANGE: u32 = 2149618701; +pub const FIDEDUPERANGE: u32 = 3222836278; +pub const FS_IOC_GETFLAGS: u32 = 1074030081; +pub const FS_IOC_SETFLAGS: u32 = 2147771906; +pub const FS_IOC_GETVERSION: u32 = 1074034177; +pub const FS_IOC_SETVERSION: u32 = 2147776002; +pub const FS_IOC_FIEMAP: u32 = 3223348747; +pub const FS_IOC32_GETFLAGS: u32 = 1074030081; +pub const FS_IOC32_SETFLAGS: u32 = 2147771906; +pub const FS_IOC32_GETVERSION: u32 = 1074034177; +pub const FS_IOC32_SETVERSION: u32 = 2147776002; +pub const FS_IOC_FSGETXATTR: u32 = 1075599391; +pub const FS_IOC_FSSETXATTR: u32 = 2149341216; +pub const FS_IOC_GETFSLABEL: u32 = 1090556977; +pub const FS_IOC_SETFSLABEL: u32 = 2164298802; +pub const EXT4_IOC_GETVERSION: u32 = 1074030083; +pub const EXT4_IOC_SETVERSION: u32 = 2147771908; +pub const EXT4_IOC_GETVERSION_OLD: u32 = 1074034177; +pub const EXT4_IOC_SETVERSION_OLD: u32 = 2147776002; +pub const EXT4_IOC_GETRSVSZ: u32 = 1074030085; +pub const EXT4_IOC_SETRSVSZ: u32 = 2147771910; +pub const EXT4_IOC_GROUP_EXTEND: u32 = 2147771911; +pub const EXT4_IOC_MIGRATE: u32 = 536897033; +pub const EXT4_IOC_ALLOC_DA_BLKS: u32 = 536897036; +pub const EXT4_IOC_RESIZE_FS: u32 = 2148034064; +pub const EXT4_IOC_SWAP_BOOT: u32 = 536897041; +pub const EXT4_IOC_PRECACHE_EXTENTS: u32 = 536897042; +pub const EXT4_IOC_CLEAR_ES_CACHE: u32 = 536897064; +pub const EXT4_IOC_GETSTATE: u32 = 2147771945; +pub const EXT4_IOC_GET_ES_CACHE: u32 = 3223348778; +pub const EXT4_IOC_CHECKPOINT: u32 = 2147771947; +pub const EXT4_IOC_SHUTDOWN: u32 = 1074026621; +pub const EXT4_IOC32_GETVERSION: u32 = 1074030083; +pub const EXT4_IOC32_SETVERSION: u32 = 2147771908; +pub const EXT4_IOC32_GETRSVSZ: u32 = 1074030085; +pub const EXT4_IOC32_SETRSVSZ: u32 = 2147771910; +pub const EXT4_IOC32_GROUP_EXTEND: u32 = 2147771911; +pub const EXT4_IOC32_GETVERSION_OLD: u32 = 1074034177; +pub const EXT4_IOC32_SETVERSION_OLD: u32 = 2147776002; +pub const VIDIOC_SUBDEV_QUERYSTD: u32 = 1074288191; +pub const AUTOFS_DEV_IOCTL_CLOSEMOUNT: u32 = 3222836085; +pub const LIRC_SET_SEND_CARRIER: u32 = 2147772691; +pub const AUTOFS_IOC_PROTOSUBVER: u32 = 1074041703; +pub const PTP_SYS_OFFSET_PRECISE: u32 = 3225435400; +pub const FSI_SCOM_WRITE: u32 = 3223352066; +pub const ATM_GETCIRANGE: u32 = 2148295050; +pub const DMA_BUF_SET_NAME_B: u32 = 2148033025; +pub const RIO_CM_EP_GET_LIST_SIZE: u32 = 3221512961; +pub const TUNSETPERSIST: u32 = 2147767499; +pub const FS_IOC_GET_ENCRYPTION_POLICY: u32 = 2148296213; +pub const CEC_RECEIVE: u32 = 3224920326; +pub const MGSL_IOCGPARAMS: u32 = 1075866881; +pub const ENI_SETMULT: u32 = 2148295015; +pub const RIO_GET_EVENT_MASK: u32 = 1074031886; +pub const LIRC_GET_MAX_TIMEOUT: u32 = 1074030857; +pub const KVM_SET_BOOT_CPU_ID: u32 = 536915576; +pub const KVM_SET_MP_STATE: u32 = 2147790489; +pub const KVM_GET_MP_STATE: u32 = 1074048664; +pub const KVM_GET_API_VERSION: u32 = 536915456; +pub const KVM_S390_GET_SKEYS: u32 = 2151722674; +pub const KVM_SET_ONE_REG: u32 = 2148576940; +pub const KVM_IRQ_LINE_STATUS: u32 = 3221794407; +pub const KVM_SET_USER_MEMORY_REGION: u32 = 2149625414; +pub const KVM_S390_INTERRUPT: u32 = 2148576916; +pub const KVM_TPR_ACCESS_REPORTING: u32 = 3223891602; +pub const KVM_GET_FPU: u32 = 1073786508; +pub const KVM_ASSIGN_SET_MSIX_ENTRY: u32 = 2148576884; +pub const KVM_MEMORY_ENCRYPT_REG_REGION: u32 = 1074835131; +pub const KVM_S390_UCAS_MAP: u32 = 2149101136; +pub const KVM_ASSIGN_SET_INTX_MASK: u32 = 2151722660; +pub const KVM_MEMORY_ENCRYPT_OP: u32 = 3221532346; +pub const KVM_CREATE_PIT2: u32 = 2151722615; +pub const KVM_S390_VCPU_FAULT: u32 = 2147790418; +pub const KVM_REGISTER_COALESCED_MMIO: u32 = 2148576871; +pub const KVM_SET_VAPIC_ADDR: u32 = 2148052627; +pub const KVM_CREATE_DEVICE: u32 = 3222056672; +pub const KVM_GET_IRQCHIP: u32 = 3255348834; +pub const KVM_TRANSLATE: u32 = 3222843013; +pub const KVM_S390_SET_INITIAL_PSW: u32 = 2148576918; +pub const KVM_X86_SETUP_MCE: u32 = 2148052636; +pub const KVM_DEASSIGN_PCI_DEVICE: u32 = 2151722610; +pub const KVM_XEN_HVM_SET_ATTR: u32 = 2152246985; +pub const KVM_GET_CLOCK: u32 = 1076932220; +pub const KVM_SET_FPU: u32 = 2147528333; +pub const KVM_KVMCLOCK_CTRL: u32 = 536915629; +pub const KVM_PPC_GET_PVINFO: u32 = 2155916961; +pub const KVM_X86_GET_MCE_CAP_SUPPORTED: u32 = 1074310813; +pub const KVM_S390_GET_IRQ_STATE: u32 = 2149625526; +pub const KVM_GET_DEVICE_ATTR: u32 = 2149101282; +pub const KVM_S390_INITIAL_RESET: u32 = 536915607; +pub const KVM_SET_REGS: u32 = 2165878402; +pub const KVM_GET_TSC_KHZ: u32 = 536915619; +pub const KVM_CHECK_EXTENSION: u32 = 536915459; +pub const KVM_PPC_RESIZE_HPT_COMMIT: u32 = 1074835118; +pub const KVM_GET_DIRTY_LOG: u32 = 2148576834; +pub const KVM_S390_SET_IRQ_STATE: u32 = 2149625525; +pub const KVM_S390_NORMAL_RESET: u32 = 536915651; +pub const KVM_SET_SIGNAL_MASK: u32 = 2147790475; +pub const KVM_XEN_VCPU_SET_ATTR: u32 = 2152246987; +pub const KVM_SET_GSI_ROUTING: u32 = 2148052586; +pub const KVM_CREATE_VCPU: u32 = 536915521; +pub const KVM_S390_UCAS_UNMAP: u32 = 2149101137; +pub const KVM_S390_STORE_STATUS: u32 = 2147790485; +pub const KVM_UNREGISTER_COALESCED_MMIO: u32 = 2148576872; +pub const KVM_ASSIGN_DEV_IRQ: u32 = 2151722608; +pub const KVM_S390_PV_COMMAND: u32 = 3223367365; +pub const KVM_S390_ENABLE_SIE: u32 = 536915462; +pub const KVM_CLEAR_DIRTY_LOG: u32 = 3222843072; +pub const KVM_GET_ONE_REG: u32 = 2148576939; +pub const KVM_ARM_SET_DEVICE_ADDR: u32 = 2148576939; +pub const KVM_DIRTY_TLB: u32 = 2148576938; +pub const KVM_NMI: u32 = 536915610; +pub const KVM_HYPERV_EVENTFD: u32 = 2149101245; +pub const KVM_S390_MEM_OP: u32 = 2151722673; +pub const KVM_PPC_SVM_OFF: u32 = 536915635; +pub const KVM_PPC_RESIZE_HPT_PREPARE: u32 = 1074835117; +pub const KVM_INTERRUPT: u32 = 2147790470; +pub const KVM_XEN_HVM_GET_ATTR: u32 = 3225988808; +pub const KVM_GET_SREGS: u32 = 1073786499; +pub const KVM_SET_IDENTITY_MAP_ADDR: u32 = 2148052552; +pub const KVM_GET_REGS: u32 = 1092136577; +pub const KVM_S390_GET_CMMA_BITS: u32 = 3223367352; +pub const KVM_CREATE_IRQCHIP: u32 = 536915552; +pub const KVM_ASSIGN_PCI_DEVICE: u32 = 1077980777; +pub const KVM_SET_NR_MMU_PAGES: u32 = 536915524; +pub const KVM_IOEVENTFD: u32 = 2151722617; +pub const KVM_RUN: u32 = 536915584; +pub const KVM_S390_SET_SKEYS: u32 = 2151722675; +pub const KVM_SET_DEVICE_ATTR: u32 = 2149101281; +pub const KVM_DEASSIGN_DEV_IRQ: u32 = 2151722613; +pub const KVM_SMI: u32 = 536915639; +pub const KVM_SET_TSS_ADDR: u32 = 536915527; +pub const KVM_GET_NR_MMU_PAGES: u32 = 536915525; +pub const KVM_XEN_VCPU_GET_ATTR: u32 = 3225988810; +pub const KVM_REINJECT_CONTROL: u32 = 536915569; +pub const KVM_HAS_DEVICE_ATTR: u32 = 2149101283; +pub const KVM_IRQFD: u32 = 2149625462; +pub const KVM_S390_SET_CMMA_BITS: u32 = 2149625529; +pub const KVM_SET_IRQCHIP: u32 = 1107865187; +pub const KVM_SIGNAL_MSI: u32 = 2149625509; +pub const KVM_GET_VCPU_MMAP_SIZE: u32 = 536915460; +pub const KVM_CREATE_VM: u32 = 536915457; +pub const KVM_S390_CLEAR_RESET: u32 = 536915652; +pub const KVM_RESET_DIRTY_RINGS: u32 = 536915655; +pub const KVM_ASSIGN_SET_MSIX_NR: u32 = 2148052595; +pub const KVM_CREATE_PIT: u32 = 536915556; +pub const KVM_SET_GUEST_DEBUG: u32 = 2148052635; +pub const KVM_GET_REG_LIST: u32 = 3221794480; +pub const KVM_ARM_VCPU_FINALIZE: u32 = 2147790530; +pub const KVM_SET_CLOCK: u32 = 2150674043; +pub const KVM_PPC_ALLOCATE_HTAB: u32 = 3221532327; +pub const KVM_PPC_GET_SMMU_INFO: u32 = 1112583846; +pub const KVM_SET_TSC_KHZ: u32 = 536915618; +pub const KVM_S390_IRQ: u32 = 2152246964; +pub const KVM_ENABLE_CAP: u32 = 2154344099; +pub const KVM_IRQ_LINE: u32 = 2148052577; +pub const KVM_SET_SREGS: u32 = 2147528324; +pub const KVM_MEMORY_ENCRYPT_UNREG_REGION: u32 = 1074835132; +pub const KVM_GET_STATS_FD: u32 = 536915662; +pub const USBDEVFS_CLAIMINTERFACE: u32 = 1074025743; +pub const CHIOMOVE: u32 = 2148819713; +pub const SONYPI_IOCGBATFLAGS: u32 = 1073837575; +pub const BTRFS_IOC_SYNC: u32 = 536908808; +pub const VIDIOC_TRY_FMT: u32 = 3234616896; +pub const LIRC_SET_REC_MODE: u32 = 2147772690; +pub const VIDIOC_DQEVENT: u32 = 1082152537; +pub const RPMSG_DESTROY_EPT_IOCTL: u32 = 536917250; +pub const UVCIOC_CTRL_MAP: u32 = 3227022624; +pub const VHOST_SET_BACKEND_FEATURES: u32 = 2148052773; +pub const VHOST_VSOCK_SET_GUEST_CID: u32 = 2148052832; +pub const UI_SET_KEYBIT: u32 = 2147767653; +pub const LIRC_SET_REC_TIMEOUT: u32 = 2147772696; +pub const FS_IOC_GET_ENCRYPTION_KEY_STATUS: u32 = 3229640218; +pub const BTRFS_IOC_TREE_SEARCH_V2: u32 = 3228603409; +pub const VHOST_SET_VRING_BASE: u32 = 2148052754; +pub const RIO_ENABLE_DOORBELL_RANGE: u32 = 2148035849; +pub const VIDIOC_TRY_EXT_CTRLS: u32 = 3222820425; +pub const LIRC_GET_REC_MODE: u32 = 1074030850; +pub const PPGETTIME: u32 = 1074294933; +pub const BTRFS_IOC_RM_DEV: u32 = 2415957003; +pub const ATM_SETBACKEND: u32 = 2147639794; +pub const FSL_HV_IOCTL_PARTITION_START: u32 = 3222318851; +pub const FBIO_WAITEVENT: u32 = 536888968; +pub const SWITCHTEC_IOCTL_PORT_TO_PFF: u32 = 3222034245; +pub const NVME_IOCTL_IO_CMD: u32 = 3225964099; +pub const IPMICTL_RECEIVE_MSG_TRUNC: u32 = 3222825227; +pub const FDTWADDLE: u32 = 536871513; +pub const NVME_IOCTL_SUBMIT_IO: u32 = 2150649410; +pub const NILFS_IOCTL_SYNC: u32 = 1074294410; +pub const VIDIOC_SUBDEV_S_DV_TIMINGS: u32 = 3229898327; +pub const ASPEED_LPC_CTRL_IOCTL_GET_SIZE: u32 = 3222319616; +pub const DM_DEV_STATUS: u32 = 3241737479; +pub const TEE_IOC_CLOSE_SESSION: u32 = 1074045957; +pub const NS_GETPSTAT: u32 = 3222036833; +pub const UI_SET_PROPBIT: u32 = 2147767662; +pub const TUNSETFILTEREBPF: u32 = 1074025697; +pub const RIO_MPORT_MAINT_COMPTAG_SET: u32 = 2147773698; +pub const AUTOFS_DEV_IOCTL_VERSION: u32 = 3222836081; +pub const WDIOC_SETOPTIONS: u32 = 1074026244; +pub const VHOST_SCSI_SET_ENDPOINT: u32 = 2162732864; +pub const MGSL_IOCGTXIDLE: u32 = 536898819; +pub const ATM_ADDLECSADDR: u32 = 2148295054; +pub const FSL_HV_IOCTL_GETPROP: u32 = 3223891719; +pub const FDGETPRM: u32 = 1075577348; +pub const HIDIOCAPPLICATION: u32 = 536889346; +pub const ENI_MEMDUMP: u32 = 2148295008; +pub const PTP_SYS_OFFSET2: u32 = 2202025230; +pub const VIDIOC_SUBDEV_G_DV_TIMINGS: u32 = 3229898328; +pub const DMA_BUF_SET_NAME_A: u32 = 2147770881; +pub const PTP_PIN_GETFUNC: u32 = 3227532550; +pub const PTP_SYS_OFFSET_EXTENDED: u32 = 3300932873; +pub const DFL_FPGA_PORT_UINT_SET_IRQ: u32 = 2148054600; +pub const RTC_EPOCH_READ: u32 = 1074032653; +pub const VIDIOC_SUBDEV_S_SELECTION: u32 = 3225441854; +pub const VIDIOC_QUERY_EXT_CTRL: u32 = 3236451943; +pub const ATM_GETLECSADDR: u32 = 2148295056; +pub const FSL_HV_IOCTL_PARTITION_STOP: u32 = 3221794564; +pub const SONET_GETDIAG: u32 = 1074028820; +pub const ATMMPC_DATA: u32 = 536895961; +pub const IPMICTL_UNREGISTER_FOR_CMD_CHANS: u32 = 1074555165; +pub const HIDIOCGCOLLECTIONINDEX: u32 = 2149074960; +pub const RPMSG_CREATE_EPT_IOCTL: u32 = 2150151425; +pub const GPIOHANDLE_GET_LINE_VALUES_IOCTL: u32 = 3225465864; +pub const UI_DEV_SETUP: u32 = 2153534723; +pub const ISST_IF_IO_CMD: u32 = 2147810818; +pub const RIO_MPORT_MAINT_READ_REMOTE: u32 = 1075342599; +pub const VIDIOC_OMAP3ISP_HIST_CFG: u32 = 3224393412; +pub const BLKGETNRZONES: u32 = 1074008709; +pub const VIDIOC_G_MODULATOR: u32 = 3225703990; +pub const VBG_IOCTL_WRITE_CORE_DUMP: u32 = 3223082515; +pub const USBDEVFS_SETINTERFACE: u32 = 1074287876; +pub const PPPIOCGCHAN: u32 = 1074033719; +pub const EVIOCGVERSION: u32 = 1074021633; +pub const VHOST_NET_SET_BACKEND: u32 = 2148052784; +pub const USBDEVFS_REAPURBNDELAY: u32 = 2147767565; +pub const RNDZAPENTCNT: u32 = 536891908; +pub const VIDIOC_G_PARM: u32 = 3234616853; +pub const TUNGETDEVNETNS: u32 = 536892643; +pub const LIRC_SET_MEASURE_CARRIER_MODE: u32 = 2147772701; +pub const VHOST_SET_VRING_ERR: u32 = 2148052770; +pub const VDUSE_VQ_SETUP: u32 = 2149613844; +pub const AUTOFS_IOC_SETTIMEOUT: u32 = 3221525348; +pub const VIDIOC_S_FREQUENCY: u32 = 2150389305; +pub const F2FS_IOC_SEC_TRIM_FILE: u32 = 2149119252; +pub const FS_IOC_REMOVE_ENCRYPTION_KEY: u32 = 3225445912; +pub const WDIOC_GETPRETIMEOUT: u32 = 1074026249; +pub const USBDEVFS_DROP_PRIVILEGES: u32 = 2147767582; +pub const BTRFS_IOC_SNAP_CREATE_V2: u32 = 2415957015; +pub const VHOST_VSOCK_SET_RUNNING: u32 = 2147790689; +pub const STP_SET_OPTIONS: u32 = 2148017410; +pub const FBIO_RADEON_GET_MIRROR: u32 = 1074020355; +pub const IVTVFB_IOC_DMA_FRAME: u32 = 2148292288; +pub const IPMICTL_SEND_COMMAND: u32 = 1075079437; +pub const VIDIOC_G_ENC_INDEX: u32 = 1209554508; +pub const DFL_FPGA_FME_PORT_PR: u32 = 536917632; +pub const CHIOSVOLTAG: u32 = 2150654738; +pub const ATM_SETESIF: u32 = 2148295053; +pub const FW_CDEV_IOC_SEND_RESPONSE: u32 = 2149065476; +pub const PMU_IOC_GET_MODEL: u32 = 1074020867; +pub const JSIOCGBTNMAP: u32 = 1140877876; +pub const USBDEVFS_HUB_PORTINFO: u32 = 1082152211; +pub const VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS: u32 = 3222820363; +pub const FDCLRPRM: u32 = 536871489; +pub const BTRFS_IOC_SCRUB: u32 = 3288372251; +pub const USBDEVFS_DISCONNECT: u32 = 536892694; +pub const TUNSETVNETBE: u32 = 2147767518; +pub const ATMTCP_REMOVE: u32 = 536895887; +pub const VHOST_VDPA_GET_CONFIG: u32 = 1074311027; +pub const PPPIOCGNPMODE: u32 = 3221779532; +pub const FDGETDRVPRM: u32 = 1079509521; +pub const TUNSETVNETLE: u32 = 2147767516; +pub const PHN_SETREG: u32 = 2148036614; +pub const PPPIOCDETACH: u32 = 2147775548; +pub const MMTIMER_GETRES: u32 = 1074031873; +pub const VIDIOC_SUBDEV_ENUMSTD: u32 = 3225966105; +pub const PPGETFLAGS: u32 = 1074032794; +pub const VDUSE_DEV_GET_FEATURES: u32 = 1074299153; +pub const CAPI_MANUFACTURER_CMD: u32 = 3221766944; +pub const VIDIOC_G_TUNER: u32 = 3226752541; +pub const DM_TABLE_STATUS: u32 = 3241737484; +pub const DM_DEV_ARM_POLL: u32 = 3241737488; +pub const NE_CREATE_VM: u32 = 1074310688; +pub const MEDIA_IOC_ENUM_LINKS: u32 = 3223092226; +pub const F2FS_IOC_PRECACHE_EXTENTS: u32 = 536933647; +pub const DFL_FPGA_PORT_DMA_MAP: u32 = 536917571; +pub const MGSL_IOCGXCTRL: u32 = 536898838; +pub const FW_CDEV_IOC_SEND_REQUEST: u32 = 2150114049; +pub const SONYPI_IOCGBLUE: u32 = 1073837576; +pub const F2FS_IOC_DECOMPRESS_FILE: u32 = 536933655; +pub const I2OHTML: u32 = 3223087369; +pub const VFIO_GET_API_VERSION: u32 = 536886116; +pub const IDT77105_GETSTATZ: u32 = 2148294963; +pub const I2OPARMSET: u32 = 3222825219; +pub const TEE_IOC_CANCEL: u32 = 1074308100; +pub const PTP_SYS_OFFSET_PRECISE2: u32 = 3225435409; +pub const DFL_FPGA_PORT_RESET: u32 = 536917568; +pub const PPPIOCGASYNCMAP: u32 = 1074033752; +pub const EVIOCGKEYCODE_V2: u32 = 1076380932; +pub const DM_DEV_SET_GEOMETRY: u32 = 3241737487; +pub const HIDIOCSUSAGE: u32 = 2149074956; +pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE: u32 = 2149065488; +pub const PTP_EXTTS_REQUEST: u32 = 2148547842; +pub const SWITCHTEC_IOCTL_EVENT_CTL: u32 = 3223869251; +pub const WDIOC_SETPRETIMEOUT: u32 = 3221509896; +pub const VHOST_SCSI_CLEAR_ENDPOINT: u32 = 2162732865; +pub const JSIOCGAXES: u32 = 1073834513; +pub const HIDIOCSFLAG: u32 = 2147764239; +pub const PTP_PEROUT_REQUEST2: u32 = 2151169292; +pub const PPWDATA: u32 = 2147577990; +pub const PTP_CLOCK_GETCAPS: u32 = 1079000321; +pub const FDGETMAXERRS: u32 = 1075053070; +pub const TUNSETQUEUE: u32 = 2147767513; +pub const PTP_ENABLE_PPS: u32 = 2147761412; +pub const SIOCSIFATMTCP: u32 = 536895872; +pub const CEC_ADAP_G_LOG_ADDRS: u32 = 1079795971; +pub const ND_IOCTL_ARS_CAP: u32 = 3223342593; +pub const NBD_SET_BLKSIZE: u32 = 536914689; +pub const NBD_SET_TIMEOUT: u32 = 536914697; +pub const VHOST_SCSI_GET_ABI_VERSION: u32 = 2147790658; +pub const RIO_UNMAP_INBOUND: u32 = 2148035858; +pub const ATM_QUERYLOOP: u32 = 2148294996; +pub const DFL_FPGA_GET_API_VERSION: u32 = 536917504; +pub const USBDEVFS_WAIT_FOR_RESUME: u32 = 536892707; +pub const FBIO_CURSOR: u32 = 3225961992; +pub const RNDCLEARPOOL: u32 = 536891910; +pub const VIDIOC_QUERYSTD: u32 = 1074288191; +pub const DMA_BUF_IOCTL_SYNC: u32 = 2148033024; +pub const SCIF_RECV: u32 = 3222827783; +pub const PTP_PIN_GETFUNC2: u32 = 3227532559; +pub const FW_CDEV_IOC_ALLOCATE: u32 = 3223331586; +pub const CEC_ADAP_G_CAPS: u32 = 3226231040; +pub const VIDIOC_G_FBUF: u32 = 1076647434; +pub const PTP_ENABLE_PPS2: u32 = 2147761421; +pub const PCITEST_CLEAR_IRQ: u32 = 536891408; +pub const IPMICTL_SET_GETS_EVENTS_CMD: u32 = 1074030864; +pub const BTRFS_IOC_DEVICES_READY: u32 = 1342215207; +pub const JSIOCGAXMAP: u32 = 1077963314; +pub const FW_CDEV_IOC_GET_CYCLE_TIMER: u32 = 1074799372; +pub const FW_CDEV_IOC_SET_ISO_CHANNELS: u32 = 2148541207; +pub const RTC_WIE_OFF: u32 = 536899600; +pub const PPGETMODE: u32 = 1074032792; +pub const VIDIOC_DBG_G_REGISTER: u32 = 3224917584; +pub const PTP_SYS_OFFSET: u32 = 2202025221; +pub const BTRFS_IOC_SPACE_INFO: u32 = 3222311956; +pub const VIDIOC_SUBDEV_ENUM_FRAME_SIZE: u32 = 3225441866; +pub const ND_IOCTL_VENDOR: u32 = 3221769737; +pub const SCIF_VREADFROM: u32 = 3223876364; +pub const BTRFS_IOC_TRANS_START: u32 = 536908806; +pub const INOTIFY_IOC_SETNEXTWD: u32 = 2147764480; +pub const SNAPSHOT_GET_IMAGE_SIZE: u32 = 1074279182; +pub const TUNDETACHFILTER: u32 = 2148029654; +pub const ND_IOCTL_CLEAR_ERROR: u32 = 3223342596; +pub const IOC_PR_CLEAR: u32 = 2148561101; +pub const SCIF_READFROM: u32 = 3223876362; +pub const PPPIOCGDEBUG: u32 = 1074033729; +pub const BLKGETZONESZ: u32 = 1074008708; +pub const HIDIOCGUSAGES: u32 = 3491514387; +pub const SONYPI_IOCGTEMP: u32 = 1073837580; +pub const UI_SET_MSCBIT: u32 = 2147767656; +pub const APM_IOC_SUSPEND: u32 = 536887554; +pub const BTRFS_IOC_TREE_SEARCH: u32 = 3489698833; +pub const RTC_PLL_GET: u32 = 1075605521; +pub const RIO_CM_EP_GET_LIST: u32 = 3221512962; +pub const USBDEVFS_DISCSIGNAL: u32 = 1074287886; +pub const LIRC_GET_MIN_TIMEOUT: u32 = 1074030856; +pub const SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY: u32 = 1100502850; +pub const DM_TARGET_MSG: u32 = 3241737486; +pub const SONYPI_IOCGBAT1REM: u32 = 1073903107; +pub const EVIOCSFF: u32 = 2150385024; +pub const TUNSETGROUP: u32 = 2147767502; +pub const EVIOCGKEYCODE: u32 = 1074283780; +pub const KCOV_REMOTE_ENABLE: u32 = 2149081958; +pub const ND_IOCTL_GET_CONFIG_SIZE: u32 = 3222031876; +pub const FDEJECT: u32 = 536871514; +pub const TUNSETOFFLOAD: u32 = 2147767504; +pub const PPPIOCCONNECT: u32 = 2147775546; +pub const ATM_ADDADDR: u32 = 2148295048; +pub const VDUSE_DEV_INJECT_CONFIG_IRQ: u32 = 536903955; +pub const AUTOFS_DEV_IOCTL_ASKUMOUNT: u32 = 3222836093; +pub const VHOST_VDPA_GET_STATUS: u32 = 1073852273; +pub const CCISS_PASSTHRU: u32 = 3226747403; +pub const MGSL_IOCCLRMODCOUNT: u32 = 536898831; +pub const TEE_IOC_SUPPL_SEND: u32 = 1074832391; +pub const ATMARPD_CTRL: u32 = 536895969; +pub const UI_ABS_SETUP: u32 = 2149340420; +pub const UI_DEV_DESTROY: u32 = 536892674; +pub const BTRFS_IOC_QUOTA_CTL: u32 = 3222311976; +pub const RTC_AIE_ON: u32 = 536899585; +pub const AUTOFS_IOC_EXPIRE: u32 = 1091343205; +pub const PPPIOCSDEBUG: u32 = 2147775552; +pub const GPIO_V2_LINE_SET_VALUES_IOCTL: u32 = 3222320143; +pub const PPPIOCSMRU: u32 = 2147775570; +pub const CCISS_DEREGDISK: u32 = 536887820; +pub const UI_DEV_CREATE: u32 = 536892673; +pub const FUSE_DEV_IOC_CLONE: u32 = 1074062592; +pub const BTRFS_IOC_START_SYNC: u32 = 1074304024; +pub const NILFS_IOCTL_DELETE_CHECKPOINT: u32 = 2148036225; +pub const SNAPSHOT_AVAIL_SWAP_SIZE: u32 = 1074279187; +pub const DM_TABLE_CLEAR: u32 = 3241737482; +pub const CCISS_GETINTINFO: u32 = 1074283010; +pub const PPPIOCSASYNCMAP: u32 = 2147775575; +pub const I2OEVTGET: u32 = 1080584459; +pub const NVME_IOCTL_RESET: u32 = 536890948; +pub const PPYIELD: u32 = 536899725; +pub const NVME_IOCTL_IO64_CMD: u32 = 3226488392; +pub const TUNSETCARRIER: u32 = 2147767522; +pub const DM_DEV_WAIT: u32 = 3241737480; +pub const RTC_WIE_ON: u32 = 536899599; +pub const MEDIA_IOC_DEVICE_INFO: u32 = 3238034432; +pub const RIO_CM_CHAN_CREATE: u32 = 3221381891; +pub const MGSL_IOCSPARAMS: u32 = 2149608704; +pub const RTC_SET_TIME: u32 = 2149871626; +pub const VHOST_RESET_OWNER: u32 = 536915714; +pub const IOC_OPAL_PSID_REVERT_TPR: u32 = 2164814056; +pub const AUTOFS_DEV_IOCTL_OPENMOUNT: u32 = 3222836084; +pub const UDF_GETEABLOCK: u32 = 1074031681; +pub const VFIO_IOMMU_MAP_DMA: u32 = 536886129; +pub const VIDIOC_SUBSCRIBE_EVENT: u32 = 2149602906; +pub const HIDIOCGFLAG: u32 = 1074022414; +pub const HIDIOCGUCODE: u32 = 3222816781; +pub const VIDIOC_OMAP3ISP_AF_CFG: u32 = 3226228421; +pub const DM_REMOVE_ALL: u32 = 3241737473; +pub const ASPEED_LPC_CTRL_IOCTL_MAP: u32 = 2148577793; +pub const CCISS_GETFIRMVER: u32 = 1074020872; +pub const ND_IOCTL_ARS_START: u32 = 3223342594; +pub const PPPIOCSMRRU: u32 = 2147775547; +pub const CEC_ADAP_S_LOG_ADDRS: u32 = 3227279620; +pub const RPROC_GET_SHUTDOWN_ON_RELEASE: u32 = 1074050818; +pub const DMA_HEAP_IOCTL_ALLOC: u32 = 3222816768; +pub const PPSETTIME: u32 = 2148036758; +pub const RTC_ALM_READ: u32 = 1076129800; +pub const VDUSE_SET_API_VERSION: u32 = 2148040961; +pub const RIO_MPORT_MAINT_WRITE_REMOTE: u32 = 2149084424; +pub const VIDIOC_SUBDEV_S_CROP: u32 = 3224917564; +pub const USBDEVFS_CONNECT: u32 = 536892695; +pub const SYNC_IOC_FILE_INFO: u32 = 3224911364; +pub const ATMARP_MKIP: u32 = 536895970; +pub const VFIO_IOMMU_SPAPR_TCE_GET_INFO: u32 = 536886128; +pub const CCISS_GETHEARTBEAT: u32 = 1074020870; +pub const ATM_RSTADDR: u32 = 2148295047; +pub const NBD_SET_SIZE: u32 = 536914690; +pub const UDF_GETVOLIDENT: u32 = 1074031682; +pub const GPIO_V2_LINE_GET_VALUES_IOCTL: u32 = 3222320142; +pub const MGSL_IOCSTXIDLE: u32 = 536898818; +pub const FSL_HV_IOCTL_SETPROP: u32 = 3223891720; +pub const BTRFS_IOC_GET_DEV_STATS: u32 = 3288896564; +pub const PPRSTATUS: u32 = 1073836161; +pub const MGSL_IOCTXENABLE: u32 = 536898820; +pub const UDF_GETEASIZE: u32 = 1074031680; +pub const NVME_IOCTL_ADMIN64_CMD: u32 = 3226488391; +pub const VHOST_SET_OWNER: u32 = 536915713; +pub const RIO_ALLOC_DMA: u32 = 3222826259; +pub const RIO_CM_CHAN_ACCEPT: u32 = 3221775111; +pub const I2OHRTGET: u32 = 3222038785; +pub const ATM_SETCIRANGE: u32 = 2148295051; +pub const HPET_IE_ON: u32 = 536897537; +pub const PERF_EVENT_IOC_ID: u32 = 1074013191; +pub const TUNSETSNDBUF: u32 = 2147767508; +pub const PTP_PIN_SETFUNC: u32 = 2153790727; +pub const PPPIOCDISCONN: u32 = 536900665; +pub const VIDIOC_QUERYCTRL: u32 = 3225703972; +pub const PPEXCL: u32 = 536899727; +pub const PCITEST_MSI: u32 = 2147766275; +pub const FDWERRORCLR: u32 = 536871510; +pub const AUTOFS_IOC_FAIL: u32 = 536908641; +pub const USBDEVFS_IOCTL: u32 = 3222033682; +pub const VIDIOC_S_STD: u32 = 2148029976; +pub const F2FS_IOC_RESIZE_FS: u32 = 2148070672; +pub const SONET_SETDIAG: u32 = 3221512466; +pub const BTRFS_IOC_DEFRAG: u32 = 2415956994; +pub const CCISS_GETDRIVVER: u32 = 1074020873; +pub const IPMICTL_GET_TIMING_PARMS_CMD: u32 = 1074293015; +pub const HPET_IRQFREQ: u32 = 2147772422; +pub const ATM_GETESI: u32 = 2148295045; +pub const CCISS_GETLUNINFO: u32 = 1074545169; +pub const AUTOFS_DEV_IOCTL_ISMOUNTPOINT: u32 = 3222836094; +pub const TEE_IOC_SHM_ALLOC: u32 = 3222316033; +pub const PERF_EVENT_IOC_SET_BPF: u32 = 2147755016; +pub const UDMABUF_CREATE_LIST: u32 = 2148037955; +pub const VHOST_SET_LOG_BASE: u32 = 2148052740; +pub const ZATM_GETPOOL: u32 = 2148295009; +pub const BR2684_SETFILT: u32 = 2149343632; +pub const RNDGETPOOL: u32 = 1074287106; +pub const PPS_GETPARAMS: u32 = 1074032801; +pub const IOC_PR_RESERVE: u32 = 2148561097; +pub const VIDIOC_TRY_DECODER_CMD: u32 = 3225966177; +pub const RIO_CM_CHAN_CLOSE: u32 = 2147640068; +pub const VIDIOC_DV_TIMINGS_CAP: u32 = 3230684772; +pub const IOCTL_MEI_CONNECT_CLIENT_VTAG: u32 = 3222554628; +pub const PMU_IOC_GET_BACKLIGHT: u32 = 1074020865; +pub const USBDEVFS_GET_CAPABILITIES: u32 = 1074025754; +pub const SCIF_WRITETO: u32 = 3223876363; +pub const UDF_RELOCATE_BLOCKS: u32 = 3221515331; +pub const FSL_HV_IOCTL_PARTITION_RESTART: u32 = 3221794561; +pub const CCISS_REGNEWD: u32 = 536887822; +pub const FAT_IOCTL_SET_ATTRIBUTES: u32 = 2147774993; +pub const VIDIOC_CREATE_BUFS: u32 = 3237500508; +pub const CAPI_GET_VERSION: u32 = 3222291207; +pub const SWITCHTEC_IOCTL_EVENT_SUMMARY: u32 = 1155028802; +pub const VFIO_EEH_PE_OP: u32 = 536886137; +pub const FW_CDEV_IOC_CREATE_ISO_CONTEXT: u32 = 3223331592; +pub const F2FS_IOC_RELEASE_COMPRESS_BLOCKS: u32 = 1074328850; +pub const NBD_SET_SIZE_BLOCKS: u32 = 536914695; +pub const IPMI_BMC_IOCTL_SET_SMS_ATN: u32 = 536916224; +pub const ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG: u32 = 3222319873; +pub const VIDIOC_S_AUDOUT: u32 = 2150913586; +pub const VIDIOC_S_FMT: u32 = 3234616837; +pub const PPPIOCATTACH: u32 = 2147775549; +pub const VHOST_GET_VRING_BUSYLOOP_TIMEOUT: u32 = 2148052772; +pub const FS_IOC_MEASURE_VERITY: u32 = 3221513862; +pub const CCISS_BIG_PASSTHRU: u32 = 3227009554; +pub const IPMICTL_SET_MY_LUN_CMD: u32 = 1074030867; +pub const PCITEST_LEGACY_IRQ: u32 = 536891394; +pub const USBDEVFS_SUBMITURB: u32 = 1076647178; +pub const AUTOFS_IOC_READY: u32 = 536908640; +pub const BTRFS_IOC_SEND: u32 = 2152240166; +pub const VIDIOC_G_EXT_CTRLS: u32 = 3222820423; +pub const JSIOCSBTNMAP: u32 = 2214619699; +pub const PPPIOCSFLAGS: u32 = 2147775577; +pub const NVRAM_INIT: u32 = 536899648; +pub const RFKILL_IOCTL_NOINPUT: u32 = 536891905; +pub const BTRFS_IOC_BALANCE: u32 = 2415957004; +pub const FS_IOC_GETFSMAP: u32 = 3233830971; +pub const IPMICTL_GET_MY_CHANNEL_LUN_CMD: u32 = 1074030875; +pub const STP_POLICY_ID_GET: u32 = 1074799873; +pub const PPSETFLAGS: u32 = 2147774619; +pub const CEC_ADAP_S_PHYS_ADDR: u32 = 2147639554; +pub const ATMTCP_CREATE: u32 = 536895886; +pub const IPMI_BMC_IOCTL_FORCE_ABORT: u32 = 536916226; +pub const PPPIOCGXASYNCMAP: u32 = 1075868752; +pub const VHOST_SET_VRING_CALL: u32 = 2148052769; +pub const LIRC_GET_FEATURES: u32 = 1074030848; +pub const GSMIOC_DISABLE_NET: u32 = 536889091; +pub const AUTOFS_IOC_CATATONIC: u32 = 536908642; +pub const NBD_DO_IT: u32 = 536914691; +pub const LIRC_SET_REC_CARRIER_RANGE: u32 = 2147772703; +pub const IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD: u32 = 1074030873; +pub const EVIOCSCLOCKID: u32 = 2147763616; +pub const USBDEVFS_FREE_STREAMS: u32 = 1074287901; +pub const FSI_SCOM_RESET: u32 = 2147775235; +pub const PMU_IOC_GRAB_BACKLIGHT: u32 = 1074020870; +pub const VIDIOC_SUBDEV_S_FMT: u32 = 3227014661; +pub const FDDEFPRM: u32 = 2149319235; +pub const TEE_IOC_INVOKE: u32 = 1074832387; +pub const USBDEVFS_BULK: u32 = 3222295810; +pub const SCIF_VWRITETO: u32 = 3223876365; +pub const SONYPI_IOCSBRT: u32 = 2147579392; +pub const BTRFS_IOC_FILE_EXTENT_SAME: u32 = 3222836278; +pub const RTC_PIE_ON: u32 = 536899589; +pub const BTRFS_IOC_SCAN_DEV: u32 = 2415956996; +pub const PPPIOCXFERUNIT: u32 = 536900686; +pub const WDIOC_GETTIMEOUT: u32 = 1074026247; +pub const BTRFS_IOC_SET_RECEIVED_SUBVOL: u32 = 3234370597; +pub const DFL_FPGA_PORT_ERR_SET_IRQ: u32 = 2148054598; +pub const FBIO_WAITFORVSYNC: u32 = 2147763744; +pub const RTC_PIE_OFF: u32 = 536899590; +pub const EVIOCGRAB: u32 = 2147763600; +pub const PMU_IOC_SET_BACKLIGHT: u32 = 2147762690; +pub const EVIOCGREP: u32 = 1074283779; +pub const PERF_EVENT_IOC_MODIFY_ATTRIBUTES: u32 = 2147755019; +pub const UFFDIO_CONTINUE: u32 = 3223366151; +pub const VDUSE_GET_API_VERSION: u32 = 1074299136; +pub const RTC_RD_TIME: u32 = 1076129801; +pub const FDMSGOFF: u32 = 536871494; +pub const IPMICTL_REGISTER_FOR_CMD_CHANS: u32 = 1074555164; +pub const CAPI_GET_ERRCODE: u32 = 1073890081; +pub const PCITEST_SET_IRQTYPE: u32 = 2147766280; +pub const VIDIOC_SUBDEV_S_EDID: u32 = 3223606825; +pub const MATROXFB_SET_OUTPUT_MODE: u32 = 2147774202; +pub const RIO_DEV_ADD: u32 = 2149608727; +pub const VIDIOC_ENUM_FREQ_BANDS: u32 = 3225441893; +pub const FBIO_RADEON_SET_MIRROR: u32 = 2147762180; +pub const PCITEST_GET_IRQTYPE: u32 = 536891401; +pub const JSIOCGVERSION: u32 = 1074031105; +pub const SONYPI_IOCSBLUE: u32 = 2147579401; +pub const SNAPSHOT_PREF_IMAGE_SIZE: u32 = 536883986; +pub const F2FS_IOC_GET_FEATURES: u32 = 1074066700; +pub const SCIF_REG: u32 = 3223876360; +pub const NILFS_IOCTL_CLEAN_SEGMENTS: u32 = 2155376264; +pub const FW_CDEV_IOC_INITIATE_BUS_RESET: u32 = 2147754757; +pub const RIO_WAIT_FOR_ASYNC: u32 = 2148035862; +pub const VHOST_SET_VRING_NUM: u32 = 2148052752; +pub const AUTOFS_DEV_IOCTL_PROTOVER: u32 = 3222836082; +pub const RIO_FREE_DMA: u32 = 2148035860; +pub const MGSL_IOCRXENABLE: u32 = 536898821; +pub const IOCTL_VM_SOCKETS_GET_LOCAL_CID: u32 = 536872889; +pub const IPMICTL_SET_TIMING_PARMS_CMD: u32 = 1074293014; +pub const PPPIOCGL2TPSTATS: u32 = 1078490166; +pub const PERF_EVENT_IOC_PERIOD: u32 = 2148017156; +pub const PTP_PIN_SETFUNC2: u32 = 2153790736; +pub const CHIOEXCHANGE: u32 = 2149344002; +pub const NILFS_IOCTL_GET_SUINFO: u32 = 1075342980; +pub const CEC_DQEVENT: u32 = 3226493191; +pub const UI_SET_SWBIT: u32 = 2147767661; +pub const VHOST_VDPA_SET_CONFIG: u32 = 2148052852; +pub const TUNSETIFF: u32 = 2147767498; +pub const CHIOPOSITION: u32 = 2148295427; +pub const IPMICTL_SET_MAINTENANCE_MODE_CMD: u32 = 2147772703; +pub const BTRFS_IOC_DEFAULT_SUBVOL: u32 = 2148045843; +pub const RIO_UNMAP_OUTBOUND: u32 = 2150133008; +pub const CAPI_CLR_FLAGS: u32 = 1074021157; +pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE: u32 = 2149065487; +pub const MATROXFB_GET_OUTPUT_CONNECTION: u32 = 1074032376; +pub const EVIOCSMASK: u32 = 2148550035; +pub const BTRFS_IOC_FORGET_DEV: u32 = 2415956997; +pub const CXL_MEM_QUERY_COMMANDS: u32 = 1074318849; +pub const CEC_S_MODE: u32 = 2147770633; +pub const MGSL_IOCSIF: u32 = 536898826; +pub const SWITCHTEC_IOCTL_PFF_TO_PORT: u32 = 3222034244; +pub const PPSETMODE: u32 = 2147774592; +pub const VFIO_DEVICE_SET_IRQS: u32 = 536886126; +pub const VIDIOC_PREPARE_BUF: u32 = 3225704029; +pub const CEC_ADAP_G_CONNECTOR_INFO: u32 = 1078223114; +pub const IOC_OPAL_WRITE_SHADOW_MBR: u32 = 2166386922; +pub const VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL: u32 = 3225441867; +pub const UDMABUF_CREATE: u32 = 2149086530; +pub const SONET_CLRDIAG: u32 = 3221512467; +pub const PHN_SET_REG: u32 = 2147774465; +pub const RNDADDTOENTCNT: u32 = 2147766785; +pub const VBG_IOCTL_CHECK_BALLOON: u32 = 3223344657; +pub const VIDIOC_OMAP3ISP_STAT_REQ: u32 = 3222820550; +pub const PPS_FETCH: u32 = 3221516452; +pub const RTC_AIE_OFF: u32 = 536899586; +pub const VFIO_GROUP_SET_CONTAINER: u32 = 536886120; +pub const FW_CDEV_IOC_RECEIVE_PHY_PACKETS: u32 = 2148016918; +pub const VFIO_IOMMU_SPAPR_TCE_REMOVE: u32 = 536886136; +pub const VFIO_IOMMU_GET_INFO: u32 = 536886128; +pub const DM_DEV_SUSPEND: u32 = 3241737478; +pub const F2FS_IOC_GET_COMPRESS_OPTION: u32 = 1073935637; +pub const FW_CDEV_IOC_STOP_ISO: u32 = 2147754763; +pub const GPIO_V2_GET_LINEINFO_IOCTL: u32 = 3238048773; +pub const ATMMPC_CTRL: u32 = 536895960; +pub const PPPIOCSXASYNCMAP: u32 = 2149610575; +pub const CHIOGSTATUS: u32 = 2148033288; +pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE: u32 = 3222807309; +pub const RIO_MPORT_MAINT_PORT_IDX_GET: u32 = 1074031875; +pub const CAPI_SET_FLAGS: u32 = 1074021156; +pub const VFIO_GROUP_GET_DEVICE_FD: u32 = 536886122; +pub const VHOST_SET_MEM_TABLE: u32 = 2148052739; +pub const MATROXFB_SET_OUTPUT_CONNECTION: u32 = 2147774200; +pub const DFL_FPGA_PORT_GET_REGION_INFO: u32 = 536917570; +pub const VHOST_GET_FEATURES: u32 = 1074310912; +pub const LIRC_GET_REC_RESOLUTION: u32 = 1074030855; +pub const PACKET_CTRL_CMD: u32 = 3222820865; +pub const LIRC_SET_TRANSMITTER_MASK: u32 = 2147772695; +pub const BTRFS_IOC_ADD_DEV: u32 = 2415957002; +pub const JSIOCGCORR: u32 = 1076128290; +pub const VIDIOC_G_FMT: u32 = 3234616836; +pub const RTC_EPOCH_SET: u32 = 2147774478; +pub const CAPI_GET_PROFILE: u32 = 3225436937; +pub const ATM_GETLOOP: u32 = 2148294994; +pub const SCIF_LISTEN: u32 = 2147775234; +pub const NBD_CLEAR_QUE: u32 = 536914693; +pub const F2FS_IOC_MOVE_RANGE: u32 = 3223385353; +pub const LIRC_GET_LENGTH: u32 = 1074030863; +pub const I8K_SET_FAN: u32 = 3221514631; +pub const FDSETMAXERRS: u32 = 2148794956; +pub const VIDIOC_SUBDEV_QUERYCAP: u32 = 1077958144; +pub const SNAPSHOT_SET_SWAP_AREA: u32 = 2148283149; +pub const LIRC_GET_REC_TIMEOUT: u32 = 1074030884; +pub const EVIOCRMFF: u32 = 2147763585; +pub const GPIO_GET_LINEEVENT_IOCTL: u32 = 3224417284; +pub const PPRDATA: u32 = 1073836165; +pub const RIO_MPORT_GET_PROPERTIES: u32 = 1076915460; +pub const TUNSETVNETHDRSZ: u32 = 2147767512; +pub const GPIO_GET_LINEINFO_IOCTL: u32 = 3225990146; +pub const GSMIOC_GETCONF: u32 = 1078740736; +pub const LIRC_GET_SEND_MODE: u32 = 1074030849; +pub const PPPIOCSACTIVE: u32 = 2148037702; +pub const SIOCGSTAMPNS_NEW: u32 = 1074825479; +pub const IPMICTL_RECEIVE_MSG: u32 = 3222825228; +pub const LIRC_SET_SEND_DUTY_CYCLE: u32 = 2147772693; +pub const UI_END_FF_ERASE: u32 = 2148292043; +pub const SWITCHTEC_IOCTL_FLASH_PART_INFO: u32 = 3222296385; +pub const FW_CDEV_IOC_SEND_PHY_PACKET: u32 = 3222807317; +pub const NBD_SET_FLAGS: u32 = 536914698; +pub const VFIO_DEVICE_GET_REGION_INFO: u32 = 536886124; +pub const REISERFS_IOC_UNPACK: u32 = 2147798273; +pub const FW_CDEV_IOC_REMOVE_DESCRIPTOR: u32 = 2147754759; +pub const RIO_SET_EVENT_MASK: u32 = 2147773709; +pub const SNAPSHOT_ALLOC_SWAP_PAGE: u32 = 1074279188; +pub const VDUSE_VQ_INJECT_IRQ: u32 = 2147778839; +pub const I2OPASSTHRU: u32 = 1074293004; +pub const IOC_OPAL_SET_PW: u32 = 2183164128; +pub const FSI_SCOM_READ: u32 = 3223352065; +pub const VHOST_VDPA_GET_DEVICE_ID: u32 = 1074048880; +pub const VIDIOC_QBUF: u32 = 3225703951; +pub const VIDIOC_S_TUNER: u32 = 2153010718; +pub const TUNGETVNETHDRSZ: u32 = 1074025687; +pub const CAPI_NCCI_GETUNIT: u32 = 1074021159; +pub const DFL_FPGA_PORT_UINT_GET_IRQ_NUM: u32 = 1074050631; +pub const VIDIOC_OMAP3ISP_STAT_EN: u32 = 3221509831; +pub const GPIO_V2_LINE_SET_CONFIG_IOCTL: u32 = 3239097357; +pub const TEE_IOC_VERSION: u32 = 1074570240; +pub const VIDIOC_LOG_STATUS: u32 = 536892998; +pub const IPMICTL_SEND_COMMAND_SETTIME: u32 = 1075603733; +pub const VHOST_SET_LOG_FD: u32 = 2147790599; +pub const SCIF_SEND: u32 = 3222827782; +pub const VIDIOC_SUBDEV_G_FMT: u32 = 3227014660; +pub const NS_ADJBUFLEV: u32 = 536895843; +pub const VIDIOC_DBG_S_REGISTER: u32 = 2151175759; +pub const NILFS_IOCTL_RESIZE: u32 = 2148036235; +pub const PHN_GETREG: u32 = 3221778437; +pub const I2OSWDL: u32 = 3223087365; +pub const VBG_IOCTL_VMMDEV_REQUEST_BIG: u32 = 536892931; +pub const JSIOCGBUTTONS: u32 = 1073834514; +pub const VFIO_IOMMU_ENABLE: u32 = 536886131; +pub const DM_DEV_RENAME: u32 = 3241737477; +pub const MEDIA_IOC_SETUP_LINK: u32 = 3224665091; +pub const VIDIOC_ENUMOUTPUT: u32 = 3225966128; +pub const STP_POLICY_ID_SET: u32 = 3222283520; +pub const VHOST_VDPA_SET_CONFIG_CALL: u32 = 2147790711; +pub const VIDIOC_SUBDEV_G_CROP: u32 = 3224917563; +pub const VIDIOC_S_CROP: u32 = 2148816444; +pub const WDIOC_GETTEMP: u32 = 1074026243; +pub const IOC_OPAL_ADD_USR_TO_LR: u32 = 2165862628; +pub const UI_SET_LEDBIT: u32 = 2147767657; +pub const NBD_SET_SOCK: u32 = 536914688; +pub const BTRFS_IOC_SNAP_DESTROY_V2: u32 = 2415957055; +pub const HIDIOCGCOLLECTIONINFO: u32 = 3222292497; +pub const I2OSWUL: u32 = 3223087366; +pub const IOCTL_MEI_NOTIFY_GET: u32 = 1074022403; +pub const FDFMTTRK: u32 = 2148270664; +pub const MMTIMER_GETBITS: u32 = 536898820; +pub const VIDIOC_ENUMSTD: u32 = 3225966105; +pub const VHOST_GET_VRING_BASE: u32 = 3221794578; +pub const VFIO_DEVICE_IOEVENTFD: u32 = 536886132; +pub const ATMARP_SETENTRY: u32 = 536895971; +pub const CCISS_REVALIDVOLS: u32 = 536887818; +pub const MGSL_IOCLOOPTXDONE: u32 = 536898825; +pub const RTC_VL_READ: u32 = 1074032659; +pub const ND_IOCTL_ARS_STATUS: u32 = 3224391171; +pub const RIO_DEV_DEL: u32 = 2149608728; +pub const VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES: u32 = 3223606797; +pub const VIDIOC_SUBDEV_DV_TIMINGS_CAP: u32 = 3230684772; +pub const SONYPI_IOCSFAN: u32 = 2147579403; +pub const SPIOCSTYPE: u32 = 2147774721; +pub const IPMICTL_REGISTER_FOR_CMD: u32 = 1073899790; +pub const I8K_GET_FAN: u32 = 3221514630; +pub const TUNGETVNETBE: u32 = 1074025695; +pub const AUTOFS_DEV_IOCTL_FAIL: u32 = 3222836087; +pub const UI_END_FF_UPLOAD: u32 = 2153797065; +pub const TOSH_SMM: u32 = 3222828176; +pub const SONYPI_IOCGBAT2REM: u32 = 1073903109; +pub const F2FS_IOC_GET_COMPRESS_BLOCKS: u32 = 1074328849; +pub const PPPIOCSNPMODE: u32 = 2148037707; +pub const USBDEVFS_CONTROL: u32 = 3222295808; +pub const HIDIOCGUSAGE: u32 = 3222816779; +pub const TUNSETTXFILTER: u32 = 2147767505; +pub const TUNGETVNETLE: u32 = 1074025693; +pub const VIDIOC_ENUM_DV_TIMINGS: u32 = 3230946914; +pub const BTRFS_IOC_INO_PATHS: u32 = 3224933411; +pub const MGSL_IOCGXSYNC: u32 = 536898836; +pub const HIDIOCGFIELDINFO: u32 = 3224913930; +pub const VIDIOC_SUBDEV_G_STD: u32 = 1074288151; +pub const I2OVALIDATE: u32 = 1074030856; +pub const VIDIOC_TRY_ENCODER_CMD: u32 = 3223869006; +pub const NILFS_IOCTL_GET_CPINFO: u32 = 1075342978; +pub const VIDIOC_G_FREQUENCY: u32 = 3224131128; +pub const VFAT_IOCTL_READDIR_SHORT: u32 = 1108898306; +pub const ND_IOCTL_GET_CONFIG_DATA: u32 = 3222031877; +pub const F2FS_IOC_RESERVE_COMPRESS_BLOCKS: u32 = 1074328851; +pub const FDGETDRVSTAT: u32 = 1077150226; +pub const SYNC_IOC_MERGE: u32 = 3224387075; +pub const VIDIOC_S_DV_TIMINGS: u32 = 3229898327; +pub const PPPIOCBRIDGECHAN: u32 = 2147775541; +pub const LIRC_SET_SEND_MODE: u32 = 2147772689; +pub const RIO_ENABLE_PORTWRITE_RANGE: u32 = 2148560139; +pub const ATM_GETTYPE: u32 = 2148295044; +pub const PHN_GETREGS: u32 = 3223875591; +pub const FDSETEMSGTRESH: u32 = 536871498; +pub const NILFS_IOCTL_GET_VINFO: u32 = 3222826630; +pub const MGSL_IOCWAITEVENT: u32 = 3221515528; +pub const CAPI_INSTALLED: u32 = 1073890082; +pub const EVIOCGMASK: u32 = 1074808210; +pub const BTRFS_IOC_SUBVOL_GETFLAGS: u32 = 1074304025; +pub const FSL_HV_IOCTL_PARTITION_GET_STATUS: u32 = 3222056706; +pub const MEDIA_IOC_ENUM_ENTITIES: u32 = 3238034433; +pub const GSMIOC_GETFIRST: u32 = 1074022148; +pub const FW_CDEV_IOC_FLUSH_ISO: u32 = 2147754776; +pub const VIDIOC_DBG_G_CHIP_INFO: u32 = 3234354790; +pub const F2FS_IOC_RELEASE_VOLATILE_WRITE: u32 = 536933636; +pub const CAPI_GET_SERIAL: u32 = 3221504776; +pub const FDSETDRVPRM: u32 = 2153251472; +pub const IOC_OPAL_SAVE: u32 = 2165862620; +pub const VIDIOC_G_DV_TIMINGS: u32 = 3229898328; +pub const TUNSETIFINDEX: u32 = 2147767514; +pub const CCISS_SETINTINFO: u32 = 2148024835; +pub const CM_IOSDBGLVL: u32 = 2147771386; +pub const RTC_VL_CLR: u32 = 536899604; +pub const VIDIOC_REQBUFS: u32 = 3222558216; +pub const USBDEVFS_REAPURBNDELAY32: u32 = 2147767565; +pub const TEE_IOC_SHM_REGISTER: u32 = 3222840329; +pub const USBDEVFS_SETCONFIGURATION: u32 = 1074025733; +pub const CCISS_GETNODENAME: u32 = 1074807300; +pub const VIDIOC_SUBDEV_S_FRAME_INTERVAL: u32 = 3224393238; +pub const VIDIOC_ENUM_FRAMESIZES: u32 = 3224131146; +pub const VFIO_DEVICE_PCI_HOT_RESET: u32 = 536886129; +pub const FW_CDEV_IOC_SEND_BROADCAST_REQUEST: u32 = 2150114066; +pub const LPSETTIMEOUT_NEW: u32 = 2148533775; +pub const RIO_CM_MPORT_GET_LIST: u32 = 3221512971; +pub const FW_CDEV_IOC_QUEUE_ISO: u32 = 3222807305; +pub const FDRAWCMD: u32 = 536871512; +pub const SCIF_UNREG: u32 = 3222303497; +pub const PPPIOCGIDLE64: u32 = 1074820159; +pub const USBDEVFS_RELEASEINTERFACE: u32 = 1074025744; +pub const VIDIOC_CROPCAP: u32 = 3224131130; +pub const DFL_FPGA_PORT_GET_INFO: u32 = 536917569; +pub const PHN_SET_REGS: u32 = 2147774467; +pub const ATMLEC_DATA: u32 = 536895953; +pub const PPPOEIOCDFWD: u32 = 536916225; +pub const VIDIOC_S_SELECTION: u32 = 3225441887; +pub const SNAPSHOT_FREE_SWAP_PAGES: u32 = 536883977; +pub const BTRFS_IOC_LOGICAL_INO: u32 = 3224933412; +pub const VIDIOC_S_CTRL: u32 = 3221771804; +pub const ZATM_SETPOOL: u32 = 2148295011; +pub const MTIOCPOS: u32 = 1074031875; +pub const PMU_IOC_SLEEP: u32 = 536887808; +pub const AUTOFS_DEV_IOCTL_PROTOSUBVER: u32 = 3222836083; +pub const VBG_IOCTL_CHANGE_FILTER_MASK: u32 = 3223344652; +pub const NILFS_IOCTL_GET_SUSTAT: u32 = 1076915845; +pub const VIDIOC_QUERYCAP: u32 = 1080579584; +pub const HPET_INFO: u32 = 1074554883; +pub const VIDIOC_AM437X_CCDC_CFG: u32 = 2147768001; +pub const DM_LIST_DEVICES: u32 = 3241737474; +pub const TUNSETOWNER: u32 = 2147767500; +pub const VBG_IOCTL_CHANGE_GUEST_CAPABILITIES: u32 = 3223344654; +pub const RNDADDENTROPY: u32 = 2148028931; +pub const USBDEVFS_RESET: u32 = 536892692; +pub const BTRFS_IOC_SUBVOL_CREATE: u32 = 2415957006; +pub const USBDEVFS_FORBID_SUSPEND: u32 = 536892705; +pub const FDGETDRVTYP: u32 = 1074790927; +pub const PPWCONTROL: u32 = 2147577988; +pub const VIDIOC_ENUM_FRAMEINTERVALS: u32 = 3224655435; +pub const KCOV_DISABLE: u32 = 536896357; +pub const IOC_OPAL_ACTIVATE_LSP: u32 = 2165862623; +pub const VHOST_VDPA_GET_IOVA_RANGE: u32 = 1074835320; +pub const PPPIOCSPASS: u32 = 2148037703; +pub const RIO_CM_CHAN_CONNECT: u32 = 2148033288; +pub const I2OSWDEL: u32 = 3223087367; +pub const FS_IOC_SET_ENCRYPTION_POLICY: u32 = 1074554387; +pub const IOC_OPAL_MBR_DONE: u32 = 2165338345; +pub const PPPIOCSMAXCID: u32 = 2147775569; +pub const PPSETPHASE: u32 = 2147774612; +pub const VHOST_VDPA_SET_VRING_ENABLE: u32 = 2148052853; +pub const USBDEVFS_GET_SPEED: u32 = 536892703; +pub const SONET_GETFRAMING: u32 = 1074028822; +pub const VIDIOC_QUERYBUF: u32 = 3225703945; +pub const VIDIOC_S_EDID: u32 = 3223606825; +pub const BTRFS_IOC_QGROUP_ASSIGN: u32 = 2149094441; +pub const PPS_GETCAP: u32 = 1074032803; +pub const SNAPSHOT_PLATFORM_SUPPORT: u32 = 536883983; +pub const LIRC_SET_REC_TIMEOUT_REPORTS: u32 = 2147772697; +pub const SCIF_GET_NODEIDS: u32 = 3222827790; +pub const NBD_DISCONNECT: u32 = 536914696; +pub const VIDIOC_SUBDEV_G_FRAME_INTERVAL: u32 = 3224393237; +pub const VFIO_IOMMU_DISABLE: u32 = 536886132; +pub const SNAPSHOT_CREATE_IMAGE: u32 = 2147758865; +pub const SNAPSHOT_POWER_OFF: u32 = 536883984; +pub const APM_IOC_STANDBY: u32 = 536887553; +pub const PPPIOCGUNIT: u32 = 1074033750; +pub const AUTOFS_IOC_EXPIRE_MULTI: u32 = 2147783526; +pub const SCIF_BIND: u32 = 3221779201; +pub const IOC_WATCH_QUEUE_SET_SIZE: u32 = 536893280; +pub const NILFS_IOCTL_CHANGE_CPMODE: u32 = 2148560512; +pub const IOC_OPAL_LOCK_UNLOCK: u32 = 2165862621; +pub const F2FS_IOC_SET_PIN_FILE: u32 = 2147808525; +pub const PPPIOCGRASYNCMAP: u32 = 1074033749; +pub const MMTIMER_MMAPAVAIL: u32 = 536898822; +pub const I2OPASSTHRU32: u32 = 1074293004; +pub const DFL_FPGA_FME_PORT_RELEASE: u32 = 2147792513; +pub const VIDIOC_SUBDEV_QUERY_DV_TIMINGS: u32 = 1082414691; +pub const UI_SET_SNDBIT: u32 = 2147767658; +pub const VIDIOC_G_AUDOUT: u32 = 1077171761; +pub const RTC_PLL_SET: u32 = 2149347346; +pub const VIDIOC_ENUMAUDIO: u32 = 3224655425; +pub const AUTOFS_DEV_IOCTL_TIMEOUT: u32 = 3222836090; +pub const VBG_IOCTL_DRIVER_VERSION_INFO: u32 = 3224131072; +pub const VHOST_SCSI_GET_EVENTS_MISSED: u32 = 2147790660; +pub const VHOST_SET_VRING_ADDR: u32 = 2150149905; +pub const VDUSE_CREATE_DEV: u32 = 2169536770; +pub const FDFLUSH: u32 = 536871499; +pub const VBG_IOCTL_WAIT_FOR_EVENTS: u32 = 3223344650; +pub const DFL_FPGA_FME_ERR_SET_IRQ: u32 = 2148054660; +pub const F2FS_IOC_GET_PIN_FILE: u32 = 1074066702; +pub const SCIF_CONNECT: u32 = 3221779203; +pub const BLKREPORTZONE: u32 = 3222278786; +pub const AUTOFS_IOC_ASKUMOUNT: u32 = 1074041712; +pub const ATM_ADDPARTY: u32 = 2148033012; +pub const FDSETPRM: u32 = 2149319234; +pub const ATM_GETSTATZ: u32 = 2148294993; +pub const ISST_IF_MSR_COMMAND: u32 = 3221552644; +pub const BTRFS_IOC_GET_SUBVOL_INFO: u32 = 1106809916; +pub const VIDIOC_UNSUBSCRIBE_EVENT: u32 = 2149602907; +pub const SEV_ISSUE_CMD: u32 = 3222295296; +pub const GPIOHANDLE_SET_LINE_VALUES_IOCTL: u32 = 3225465865; +pub const PCITEST_COPY: u32 = 2147766278; +pub const IPMICTL_GET_MY_ADDRESS_CMD: u32 = 1074030866; +pub const CHIOGPICKER: u32 = 1074029316; +pub const CAPI_NCCI_OPENCOUNT: u32 = 1074021158; +pub const CXL_MEM_SEND_COMMAND: u32 = 3224423938; +pub const PERF_EVENT_IOC_SET_FILTER: u32 = 2147755014; +pub const IOC_OPAL_REVERT_TPR: u32 = 2164814050; +pub const CHIOGVPARAMS: u32 = 1081107219; +pub const PTP_PEROUT_REQUEST: u32 = 2151169283; +pub const FSI_SCOM_CHECK: u32 = 1074033408; +pub const RTC_IRQP_READ: u32 = 1074032651; +pub const RIO_MPORT_MAINT_READ_LOCAL: u32 = 1075342597; +pub const HIDIOCGRDESCSIZE: u32 = 1074022401; +pub const UI_GET_VERSION: u32 = 1074025773; +pub const NILFS_IOCTL_GET_CPSTAT: u32 = 1075342979; +pub const CCISS_GETBUSTYPES: u32 = 1074020871; +pub const VFIO_IOMMU_SPAPR_TCE_CREATE: u32 = 536886135; +pub const VIDIOC_EXPBUF: u32 = 3225441808; +pub const UI_SET_RELBIT: u32 = 2147767654; +pub const VFIO_SET_IOMMU: u32 = 536886118; +pub const VIDIOC_S_MODULATOR: u32 = 2151962167; +pub const TUNGETFILTER: u32 = 1074287835; +pub const MEYEIOC_SYNC: u32 = 3221518019; +pub const CCISS_SETNODENAME: u32 = 2148549125; +pub const FBIO_GETCONTROL2: u32 = 1074022025; +pub const TUNSETDEBUG: u32 = 2147767497; +pub const DM_DEV_REMOVE: u32 = 3241737476; +pub const HIDIOCSUSAGES: u32 = 2417772564; +pub const FS_IOC_ADD_ENCRYPTION_KEY: u32 = 3226494487; +pub const FBIOGET_VBLANK: u32 = 1075856914; +pub const ATM_GETSTAT: u32 = 2148294992; +pub const VIDIOC_G_JPEGCOMP: u32 = 1082938941; +pub const TUNATTACHFILTER: u32 = 2148029653; +pub const UI_SET_ABSBIT: u32 = 2147767655; +pub const DFL_FPGA_PORT_ERR_GET_IRQ_NUM: u32 = 1074050629; +pub const USBDEVFS_REAPURB32: u32 = 2147767564; +pub const BTRFS_IOC_TRANS_END: u32 = 536908807; +pub const CAPI_REGISTER: u32 = 2148287233; +pub const F2FS_IOC_COMPRESS_FILE: u32 = 536933656; +pub const USBDEVFS_DISCARDURB: u32 = 536892683; +pub const HE_GET_REG: u32 = 2148295008; +pub const ATM_SETLOOP: u32 = 2148294995; +pub const ATMSIGD_CTRL: u32 = 536895984; +pub const CIOC_KERNEL_VERSION: u32 = 3221512970; +pub const BTRFS_IOC_CLONE_RANGE: u32 = 2149618701; +pub const SNAPSHOT_UNFREEZE: u32 = 536883970; +pub const F2FS_IOC_START_VOLATILE_WRITE: u32 = 536933635; +pub const PMU_IOC_HAS_ADB: u32 = 1074020868; +pub const I2OGETIOPS: u32 = 1075865856; +pub const VIDIOC_S_FBUF: u32 = 2150389259; +pub const PPRCONTROL: u32 = 1073836163; +pub const CHIOSPICKER: u32 = 2147771141; +pub const VFIO_IOMMU_SPAPR_REGISTER_MEMORY: u32 = 536886133; +pub const TUNGETSNDBUF: u32 = 1074025683; +pub const GSMIOC_SETCONF: u32 = 2152482561; +pub const IOC_PR_PREEMPT: u32 = 2149085387; +pub const KCOV_INIT_TRACE: u32 = 1074029313; +pub const SONYPI_IOCGBAT1CAP: u32 = 1073903106; +pub const SWITCHTEC_IOCTL_FLASH_INFO: u32 = 1074812736; +pub const MTIOCTOP: u32 = 2148035841; +pub const VHOST_VDPA_SET_STATUS: u32 = 2147594098; +pub const VHOST_SCSI_SET_EVENTS_MISSED: u32 = 2147790659; +pub const VFIO_IOMMU_DIRTY_PAGES: u32 = 536886133; +pub const BTRFS_IOC_SCRUB_PROGRESS: u32 = 3288372253; +pub const PPPIOCGMRU: u32 = 1074033747; +pub const BTRFS_IOC_DEV_REPLACE: u32 = 3391657013; +pub const PPPIOCGFLAGS: u32 = 1074033754; +pub const NILFS_IOCTL_SET_SUINFO: u32 = 2149084813; +pub const FW_CDEV_IOC_GET_CYCLE_TIMER2: u32 = 3222807316; +pub const ATM_DELLECSADDR: u32 = 2148295055; +pub const FW_CDEV_IOC_GET_SPEED: u32 = 536879889; +pub const PPPIOCGIDLE32: u32 = 1074295871; +pub const VFIO_DEVICE_RESET: u32 = 536886127; +pub const GPIO_GET_LINEINFO_UNWATCH_IOCTL: u32 = 3221533708; +pub const WDIOC_GETSTATUS: u32 = 1074026241; +pub const BTRFS_IOC_SET_FEATURES: u32 = 2150667321; +pub const IOCTL_MEI_CONNECT_CLIENT: u32 = 3222292481; +pub const VIDIOC_OMAP3ISP_AEWB_CFG: u32 = 3223344835; +pub const PCITEST_READ: u32 = 2147766277; +pub const VFIO_GROUP_GET_STATUS: u32 = 536886119; +pub const MATROXFB_GET_ALL_OUTPUTS: u32 = 1074032379; +pub const USBDEVFS_CLEAR_HALT: u32 = 1074025749; +pub const VIDIOC_DECODER_CMD: u32 = 3225966176; +pub const VIDIOC_G_AUDIO: u32 = 1077171745; +pub const CCISS_RESCANDISK: u32 = 536887824; +pub const RIO_DISABLE_PORTWRITE_RANGE: u32 = 2148560140; +pub const IOC_OPAL_SECURE_ERASE_LR: u32 = 2165338343; +pub const USBDEVFS_REAPURB: u32 = 2147767564; +pub const DFL_FPGA_CHECK_EXTENSION: u32 = 536917505; +pub const AUTOFS_IOC_PROTOVER: u32 = 1074041699; +pub const FSL_HV_IOCTL_MEMCPY: u32 = 3223891717; +pub const BTRFS_IOC_GET_FEATURES: u32 = 1075352633; +pub const PCITEST_MSIX: u32 = 2147766279; +pub const BTRFS_IOC_DEFRAG_RANGE: u32 = 2150667280; +pub const UI_BEGIN_FF_ERASE: u32 = 3222033866; +pub const DM_GET_TARGET_VERSION: u32 = 3241737489; +pub const PPPIOCGIDLE: u32 = 1074295871; +pub const NVRAM_SETCKS: u32 = 536899649; +pub const WDIOC_GETSUPPORT: u32 = 1076385536; +pub const GSMIOC_ENABLE_NET: u32 = 2150909698; +pub const GPIO_GET_CHIPINFO_IOCTL: u32 = 1078244353; +pub const NE_ADD_VCPU: u32 = 3221532193; +pub const EVIOCSKEYCODE_V2: u32 = 2150122756; +pub const PTP_SYS_OFFSET_EXTENDED2: u32 = 3300932882; +pub const SCIF_FENCE_WAIT: u32 = 3221517072; +pub const RIO_TRANSFER: u32 = 3222826261; +pub const FSL_HV_IOCTL_DOORBELL: u32 = 3221794566; +pub const RIO_MPORT_MAINT_WRITE_LOCAL: u32 = 2149084422; +pub const I2OEVTREG: u32 = 2148296970; +pub const I2OPARMGET: u32 = 3222825220; +pub const EVIOCGID: u32 = 1074283778; +pub const BTRFS_IOC_QGROUP_CREATE: u32 = 2148570154; +pub const AUTOFS_DEV_IOCTL_SETPIPEFD: u32 = 3222836088; +pub const VIDIOC_S_PARM: u32 = 3234616854; +pub const TUNSETSTEERINGEBPF: u32 = 1074025696; +pub const ATM_GETNAMES: u32 = 2148032899; +pub const VIDIOC_QUERYMENU: u32 = 3224131109; +pub const DFL_FPGA_PORT_DMA_UNMAP: u32 = 536917572; +pub const I2OLCTGET: u32 = 3222038786; +pub const FS_IOC_GET_ENCRYPTION_PWSALT: u32 = 2148558356; +pub const NS_SETBUFLEV: u32 = 2148295010; +pub const BLKCLOSEZONE: u32 = 2148536967; +pub const SONET_GETFRSENSE: u32 = 1074159895; +pub const UI_SET_EVBIT: u32 = 2147767652; +pub const DM_LIST_VERSIONS: u32 = 3241737485; +pub const HIDIOCGSTRING: u32 = 1090799620; +pub const PPPIOCATTCHAN: u32 = 2147775544; +pub const VDUSE_DEV_SET_CONFIG: u32 = 2148040978; +pub const TUNGETFEATURES: u32 = 1074025679; +pub const VFIO_GROUP_UNSET_CONTAINER: u32 = 536886121; +pub const IPMICTL_SET_MY_ADDRESS_CMD: u32 = 1074030865; +pub const CCISS_REGNEWDISK: u32 = 2147762701; +pub const VIDIOC_QUERY_DV_TIMINGS: u32 = 1082414691; +pub const PHN_SETREGS: u32 = 2150133768; +pub const FAT_IOCTL_GET_ATTRIBUTES: u32 = 1074033168; +pub const FSL_MC_SEND_MC_COMMAND: u32 = 3225440992; +pub const TUNGETIFF: u32 = 1074025682; +pub const PTP_CLOCK_GETCAPS2: u32 = 1079000330; +pub const BTRFS_IOC_RESIZE: u32 = 2415956995; +pub const VHOST_SET_VRING_ENDIAN: u32 = 2148052755; +pub const PPS_KC_BIND: u32 = 2147774629; +pub const F2FS_IOC_WRITE_CHECKPOINT: u32 = 536933639; +pub const UI_SET_FFBIT: u32 = 2147767659; +pub const IPMICTL_GET_MY_LUN_CMD: u32 = 1074030868; +pub const CEC_ADAP_G_PHYS_ADDR: u32 = 1073897729; +pub const CEC_G_MODE: u32 = 1074028808; +pub const USBDEVFS_RESETEP: u32 = 1074025731; +pub const MEDIA_REQUEST_IOC_QUEUE: u32 = 536902784; +pub const USBDEVFS_ALLOC_STREAMS: u32 = 1074287900; +pub const MGSL_IOCSXCTRL: u32 = 536898837; +pub const MEDIA_IOC_G_TOPOLOGY: u32 = 3225975812; +pub const PPPIOCUNBRIDGECHAN: u32 = 536900660; +pub const F2FS_IOC_COMMIT_ATOMIC_WRITE: u32 = 536933634; +pub const ISST_IF_GET_PLATFORM_INFO: u32 = 1074068992; +pub const SCIF_FENCE_MARK: u32 = 3222303503; +pub const USBDEVFS_RELEASE_PORT: u32 = 1074025753; +pub const VFIO_CHECK_EXTENSION: u32 = 536886117; +pub const BTRFS_IOC_QGROUP_LIMIT: u32 = 1076925483; +pub const FAT_IOCTL_GET_VOLUME_ID: u32 = 1074033171; +pub const UI_SET_PHYS: u32 = 2147767660; +pub const FDWERRORGET: u32 = 1075315223; +pub const VIDIOC_SUBDEV_G_EDID: u32 = 3223606824; +pub const MGSL_IOCGSTATS: u32 = 536898823; +pub const RPROC_SET_SHUTDOWN_ON_RELEASE: u32 = 2147792641; +pub const SIOCGSTAMP_NEW: u32 = 1074825478; +pub const RTC_WKALM_RD: u32 = 1076391952; +pub const PHN_GET_REG: u32 = 3221516288; +pub const DELL_WMI_SMBIOS_CMD: u32 = 3224655616; +pub const PHN_NOT_OH: u32 = 536899588; +pub const PPGETMODES: u32 = 1074032791; +pub const CHIOGPARAMS: u32 = 1075077894; +pub const VFIO_DEVICE_GET_GFX_DMABUF: u32 = 536886131; +pub const VHOST_SET_VRING_BUSYLOOP_TIMEOUT: u32 = 2148052771; +pub const VIDIOC_SUBDEV_G_SELECTION: u32 = 3225441853; +pub const BTRFS_IOC_RM_DEV_V2: u32 = 2415957050; +pub const MGSL_IOCWAITGPIO: u32 = 3222301970; +pub const PMU_IOC_CAN_SLEEP: u32 = 1074020869; +pub const KCOV_ENABLE: u32 = 536896356; +pub const BTRFS_IOC_CLONE: u32 = 2147783689; +pub const F2FS_IOC_DEFRAGMENT: u32 = 3222336776; +pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE: u32 = 2147754766; +pub const AGPIOC_ALLOCATE: u32 = 3221504262; +pub const NE_SET_USER_MEMORY_REGION: u32 = 2149101091; +pub const MGSL_IOCTXABORT: u32 = 536898822; +pub const MGSL_IOCSGPIO: u32 = 2148560144; +pub const LIRC_SET_REC_CARRIER: u32 = 2147772692; +pub const F2FS_IOC_FLUSH_DEVICE: u32 = 2148070666; +pub const SNAPSHOT_ATOMIC_RESTORE: u32 = 536883972; +pub const RTC_UIE_OFF: u32 = 536899588; +pub const BT_BMC_IOCTL_SMS_ATN: u32 = 536916224; +pub const NVME_IOCTL_ID: u32 = 536890944; +pub const NE_START_ENCLAVE: u32 = 3222318628; +pub const VIDIOC_STREAMON: u32 = 2147767826; +pub const FDPOLLDRVSTAT: u32 = 1077150227; +pub const AUTOFS_DEV_IOCTL_READY: u32 = 3222836086; +pub const VIDIOC_ENUMAUDOUT: u32 = 3224655426; +pub const VIDIOC_SUBDEV_S_STD: u32 = 2148029976; +pub const WDIOC_GETTIMELEFT: u32 = 1074026250; +pub const ATM_GETLINKRATE: u32 = 2148295041; +pub const RTC_WKALM_SET: u32 = 2150133775; +pub const VHOST_GET_BACKEND_FEATURES: u32 = 1074310950; +pub const ATMARP_ENCAP: u32 = 536895973; +pub const CAPI_GET_FLAGS: u32 = 1074021155; +pub const IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD: u32 = 1074030872; +pub const DFL_FPGA_FME_PORT_ASSIGN: u32 = 2147792514; +pub const NS_GET_OWNER_UID: u32 = 536917764; +pub const VIDIOC_OVERLAY: u32 = 2147767822; +pub const BTRFS_IOC_WAIT_SYNC: u32 = 2148045846; +pub const GPIOHANDLE_SET_CONFIG_IOCTL: u32 = 3226776586; +pub const VHOST_GET_VRING_ENDIAN: u32 = 2148052756; +pub const ATM_GETADDR: u32 = 2148295046; +pub const PHN_GET_REGS: u32 = 3221516290; +pub const AUTOFS_DEV_IOCTL_REQUESTER: u32 = 3222836091; +pub const AUTOFS_DEV_IOCTL_EXPIRE: u32 = 3222836092; +pub const SNAPSHOT_S2RAM: u32 = 536883979; +pub const JSIOCSAXMAP: u32 = 2151705137; +pub const F2FS_IOC_SET_COMPRESS_OPTION: u32 = 2147677462; +pub const VBG_IOCTL_HGCM_DISCONNECT: u32 = 3223082501; +pub const SCIF_FENCE_SIGNAL: u32 = 3223876369; +pub const VFIO_DEVICE_GET_PCI_HOT_RESET_INFO: u32 = 536886128; +pub const VIDIOC_SUBDEV_ENUM_MBUS_CODE: u32 = 3224393218; +pub const MMTIMER_GETOFFSET: u32 = 536898816; +pub const RIO_CM_CHAN_LISTEN: u32 = 2147640070; +pub const ATM_SETSC: u32 = 2147770865; +pub const F2FS_IOC_SHUTDOWN: u32 = 1074026621; +pub const NVME_IOCTL_RESCAN: u32 = 536890950; +pub const BLKOPENZONE: u32 = 2148536966; +pub const DM_VERSION: u32 = 3241737472; +pub const CEC_TRANSMIT: u32 = 3224920325; +pub const FS_IOC_GET_ENCRYPTION_POLICY_EX: u32 = 3221841430; +pub const SIOCMKCLIP: u32 = 536895968; +pub const IPMI_BMC_IOCTL_CLEAR_SMS_ATN: u32 = 536916225; +pub const HIDIOCGVERSION: u32 = 1074022401; +pub const VIDIOC_S_INPUT: u32 = 3221509671; +pub const VIDIOC_G_CROP: u32 = 3222558267; +pub const LIRC_SET_WIDEBAND_RECEIVER: u32 = 2147772707; +pub const EVIOCGEFFECTS: u32 = 1074021764; +pub const UVCIOC_CTRL_QUERY: u32 = 3222041889; +pub const IOC_OPAL_GENERIC_TABLE_RW: u32 = 2167959787; +pub const FS_IOC_READ_VERITY_METADATA: u32 = 3223873159; +pub const ND_IOCTL_SET_CONFIG_DATA: u32 = 3221769734; +pub const USBDEVFS_GETDRIVER: u32 = 2164544776; +pub const IDT77105_GETSTAT: u32 = 2148294962; +pub const HIDIOCINITREPORT: u32 = 536889349; +pub const VFIO_DEVICE_GET_INFO: u32 = 536886123; +pub const RIO_CM_CHAN_RECEIVE: u32 = 3222299402; +pub const RNDGETENTCNT: u32 = 1074024960; +pub const PPPIOCNEWUNIT: u32 = 3221517374; +pub const BTRFS_IOC_INO_LOOKUP: u32 = 3489698834; +pub const FDRESET: u32 = 536871508; +pub const IOC_PR_REGISTER: u32 = 2149085384; +pub const HIDIOCSREPORT: u32 = 2148288520; +pub const TEE_IOC_OPEN_SESSION: u32 = 1074832386; +pub const TEE_IOC_SUPPL_RECV: u32 = 1074832390; +pub const BTRFS_IOC_BALANCE_CTL: u32 = 2147783713; +pub const GPIO_GET_LINEINFO_WATCH_IOCTL: u32 = 3225990155; +pub const HIDIOCGRAWINFO: u32 = 1074284547; +pub const PPPIOCSCOMPRESS: u32 = 2148299853; +pub const USBDEVFS_CONNECTINFO: u32 = 2148029713; +pub const BLKRESETZONE: u32 = 2148536963; +pub const CHIOINITELEM: u32 = 536896273; +pub const NILFS_IOCTL_SET_ALLOC_RANGE: u32 = 2148560524; +pub const AUTOFS_DEV_IOCTL_CATATONIC: u32 = 3222836089; +pub const RIO_MPORT_MAINT_HDID_SET: u32 = 2147642625; +pub const PPGETPHASE: u32 = 1074032793; +pub const USBDEVFS_DISCONNECT_CLAIM: u32 = 1091065115; +pub const FDMSGON: u32 = 536871493; +pub const VIDIOC_G_SLICED_VBI_CAP: u32 = 3228849733; +pub const BTRFS_IOC_BALANCE_V2: u32 = 3288372256; +pub const MEDIA_REQUEST_IOC_REINIT: u32 = 536902785; +pub const IOC_OPAL_ERASE_LR: u32 = 2165338342; +pub const FDFMTBEG: u32 = 536871495; +pub const RNDRESEEDCRNG: u32 = 536891911; +pub const ISST_IF_GET_PHY_ID: u32 = 3221552641; +pub const TUNSETNOCSUM: u32 = 2147767496; +pub const SONET_GETSTAT: u32 = 1076125968; +pub const TFD_IOC_SET_TICKS: u32 = 2148029440; +pub const PPDATADIR: u32 = 2147774608; +pub const IOC_OPAL_ENABLE_DISABLE_MBR: u32 = 2165338341; +pub const GPIO_V2_GET_LINE_IOCTL: u32 = 3260068871; +pub const RIO_CM_CHAN_SEND: u32 = 2148557577; +pub const PPWCTLONIRQ: u32 = 2147578002; +pub const SONYPI_IOCGBRT: u32 = 1073837568; +pub const IOC_PR_RELEASE: u32 = 2148561098; +pub const PPCLRIRQ: u32 = 1074032787; +pub const IPMICTL_SET_MY_CHANNEL_LUN_CMD: u32 = 1074030874; +pub const MGSL_IOCSXSYNC: u32 = 536898835; +pub const HPET_IE_OFF: u32 = 536897538; +pub const IOC_OPAL_ACTIVATE_USR: u32 = 2165338337; +pub const SONET_SETFRAMING: u32 = 2147770645; +pub const PERF_EVENT_IOC_PAUSE_OUTPUT: u32 = 2147755017; +pub const BTRFS_IOC_LOGICAL_INO_V2: u32 = 3224933435; +pub const VBG_IOCTL_HGCM_CONNECT: u32 = 3231471108; +pub const BLKFINISHZONE: u32 = 2148536968; +pub const EVIOCREVOKE: u32 = 2147763601; +pub const VFIO_DEVICE_FEATURE: u32 = 536886133; +pub const CCISS_GETPCIINFO: u32 = 1074283009; +pub const ISST_IF_MBOX_COMMAND: u32 = 3221552643; +pub const SCIF_ACCEPTREQ: u32 = 3222303492; +pub const PERF_EVENT_IOC_QUERY_BPF: u32 = 3221496842; +pub const VIDIOC_STREAMOFF: u32 = 2147767827; +pub const VDUSE_DESTROY_DEV: u32 = 2164293891; +pub const FDGETFDCSTAT: u32 = 1075839509; +pub const CM_IOCGATR: u32 = 3221512961; +pub const VIDIOC_S_PRIORITY: u32 = 2147767876; +pub const SNAPSHOT_FREEZE: u32 = 536883969; +pub const VIDIOC_ENUMINPUT: u32 = 3226490394; +pub const ZATM_GETPOOLZ: u32 = 2148295010; +pub const RIO_DISABLE_DOORBELL_RANGE: u32 = 2148035850; +pub const GPIO_V2_GET_LINEINFO_WATCH_IOCTL: u32 = 3238048774; +pub const VIDIOC_G_STD: u32 = 1074288151; +pub const USBDEVFS_ALLOW_SUSPEND: u32 = 536892706; +pub const SONET_GETSTATZ: u32 = 1076125969; +pub const SCIF_ACCEPTREG: u32 = 3221779205; +pub const VIDIOC_ENCODER_CMD: u32 = 3223869005; +pub const PPPIOCSRASYNCMAP: u32 = 2147775572; +pub const IOCTL_MEI_NOTIFY_SET: u32 = 2147764226; +pub const BTRFS_IOC_QUOTA_RESCAN_STATUS: u32 = 1077974061; +pub const F2FS_IOC_GARBAGE_COLLECT: u32 = 2147808518; +pub const ATMLEC_CTRL: u32 = 536895952; +pub const MATROXFB_GET_AVAILABLE_OUTPUTS: u32 = 1074032377; +pub const DM_DEV_CREATE: u32 = 3241737475; +pub const VHOST_VDPA_GET_VRING_NUM: u32 = 1073917814; +pub const VIDIOC_G_CTRL: u32 = 3221771803; +pub const NBD_CLEAR_SOCK: u32 = 536914692; +pub const VFIO_DEVICE_QUERY_GFX_PLANE: u32 = 536886130; +pub const WDIOC_KEEPALIVE: u32 = 1074026245; +pub const NVME_IOCTL_SUBSYS_RESET: u32 = 536890949; +pub const PTP_EXTTS_REQUEST2: u32 = 2148547851; +pub const PCITEST_BAR: u32 = 536891393; +pub const MGSL_IOCGGPIO: u32 = 1074818321; +pub const EVIOCSREP: u32 = 2148025603; +pub const VFIO_DEVICE_GET_IRQ_INFO: u32 = 536886125; +pub const HPET_DPI: u32 = 536897541; +pub const VDUSE_VQ_SETUP_KICKFD: u32 = 2148040982; +pub const ND_IOCTL_CALL: u32 = 3225439754; +pub const HIDIOCGDEVINFO: u32 = 1075595267; +pub const DM_TABLE_DEPS: u32 = 3241737483; +pub const BTRFS_IOC_DEV_INFO: u32 = 3489698846; +pub const VDUSE_IOTLB_GET_FD: u32 = 3223355664; +pub const FW_CDEV_IOC_GET_INFO: u32 = 3223855872; +pub const VIDIOC_G_PRIORITY: u32 = 1074026051; +pub const ATM_NEWBACKENDIF: u32 = 2147639795; +pub const VIDIOC_S_EXT_CTRLS: u32 = 3222820424; +pub const VIDIOC_SUBDEV_ENUM_DV_TIMINGS: u32 = 3230946914; +pub const VIDIOC_OMAP3ISP_CCDC_CFG: u32 = 3223344833; +pub const VIDIOC_S_HW_FREQ_SEEK: u32 = 2150651474; +pub const DM_TABLE_LOAD: u32 = 3241737481; +pub const F2FS_IOC_START_ATOMIC_WRITE: u32 = 536933633; +pub const VIDIOC_G_OUTPUT: u32 = 1074026030; +pub const ATM_DROPPARTY: u32 = 2147770869; +pub const CHIOGELEM: u32 = 2154586896; +pub const BTRFS_IOC_GET_SUPPORTED_FEATURES: u32 = 1078498361; +pub const EVIOCSKEYCODE: u32 = 2148025604; +pub const NE_GET_IMAGE_LOAD_INFO: u32 = 3222318626; +pub const TUNSETLINK: u32 = 2147767501; +pub const FW_CDEV_IOC_ADD_DESCRIPTOR: u32 = 3222807302; +pub const BTRFS_IOC_SCRUB_CANCEL: u32 = 536908828; +pub const PPS_SETPARAMS: u32 = 2147774626; +pub const IOC_OPAL_LR_SETUP: u32 = 2166911203; +pub const FW_CDEV_IOC_DEALLOCATE: u32 = 2147754755; +pub const WDIOC_SETTIMEOUT: u32 = 3221509894; +pub const IOC_WATCH_QUEUE_SET_FILTER: u32 = 536893281; +pub const CAPI_GET_MANUFACTURER: u32 = 3221504774; +pub const VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY: u32 = 536886134; +pub const ASPEED_P2A_CTRL_IOCTL_SET_WINDOW: u32 = 2148578048; +pub const VIDIOC_G_EDID: u32 = 3223606824; +pub const F2FS_IOC_GARBAGE_COLLECT_RANGE: u32 = 2149119243; +pub const RIO_MAP_INBOUND: u32 = 3223874833; +pub const IOC_OPAL_TAKE_OWNERSHIP: u32 = 2164814046; +pub const USBDEVFS_CLAIM_PORT: u32 = 1074025752; +pub const VIDIOC_S_AUDIO: u32 = 2150913570; +pub const FS_IOC_GET_ENCRYPTION_NONCE: u32 = 1074816539; +pub const FW_CDEV_IOC_SEND_STREAM_PACKET: u32 = 2150114067; +pub const BTRFS_IOC_SNAP_DESTROY: u32 = 2415957007; +pub const SNAPSHOT_FREE: u32 = 536883973; +pub const I8K_GET_SPEED: u32 = 3221514629; +pub const HIDIOCGREPORT: u32 = 2148288519; +pub const HPET_EPI: u32 = 536897540; +pub const JSIOCSCORR: u32 = 2149870113; +pub const IOC_PR_PREEMPT_ABORT: u32 = 2149085388; +pub const RIO_MAP_OUTBOUND: u32 = 3223874831; +pub const ATM_SETESI: u32 = 2148295052; +pub const FW_CDEV_IOC_START_ISO: u32 = 2148541194; +pub const ATM_DELADDR: u32 = 2148295049; +pub const PPFCONTROL: u32 = 2147643534; +pub const SONYPI_IOCGFAN: u32 = 1073837578; +pub const RTC_IRQP_SET: u32 = 2147774476; +pub const PCITEST_WRITE: u32 = 2147766276; +pub const PPCLAIM: u32 = 536899723; +pub const VIDIOC_S_JPEGCOMP: u32 = 2156680766; +pub const IPMICTL_UNREGISTER_FOR_CMD: u32 = 1073899791; +pub const VHOST_SET_FEATURES: u32 = 2148052736; +pub const TOSHIBA_ACPI_SCI: u32 = 3222828177; +pub const VIDIOC_DQBUF: u32 = 3225703953; +pub const BTRFS_IOC_BALANCE_PROGRESS: u32 = 1140888610; +pub const BTRFS_IOC_SUBVOL_SETFLAGS: u32 = 2148045850; +pub const ATMLEC_MCAST: u32 = 536895954; +pub const MMTIMER_GETFREQ: u32 = 1074031874; +pub const VIDIOC_G_SELECTION: u32 = 3225441886; +pub const RTC_ALM_SET: u32 = 2149871623; +pub const PPPOEIOCSFWD: u32 = 2147791104; +pub const IPMICTL_GET_MAINTENANCE_MODE_CMD: u32 = 1074030878; +pub const FS_IOC_ENABLE_VERITY: u32 = 2155898501; +pub const NILFS_IOCTL_GET_BDESCS: u32 = 3222826631; +pub const FDFMTEND: u32 = 536871497; +pub const DMA_BUF_SET_NAME: u32 = 2147770881; +pub const UI_BEGIN_FF_UPLOAD: u32 = 3227538888; +pub const RTC_UIE_ON: u32 = 536899587; +pub const PPRELEASE: u32 = 536899724; +pub const VFIO_IOMMU_UNMAP_DMA: u32 = 536886130; +pub const VIDIOC_OMAP3ISP_PRV_CFG: u32 = 3225179842; +pub const GPIO_GET_LINEHANDLE_IOCTL: u32 = 3245126659; +pub const VFAT_IOCTL_READDIR_BOTH: u32 = 1108898305; +pub const NVME_IOCTL_ADMIN_CMD: u32 = 3225964097; +pub const VHOST_SET_VRING_KICK: u32 = 2148052768; +pub const BTRFS_IOC_SUBVOL_CREATE_V2: u32 = 2415957016; +pub const BTRFS_IOC_SNAP_CREATE: u32 = 2415956993; +pub const SONYPI_IOCGBAT2CAP: u32 = 1073903108; +pub const PPNEGOT: u32 = 2147774609; +pub const NBD_PRINT_DEBUG: u32 = 536914694; +pub const BTRFS_IOC_INO_LOOKUP_USER: u32 = 3489698878; +pub const BTRFS_IOC_GET_SUBVOL_ROOTREF: u32 = 3489698877; +pub const FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS: u32 = 3225445913; +pub const BTRFS_IOC_FS_INFO: u32 = 1140888607; +pub const VIDIOC_ENUM_FMT: u32 = 3225441794; +pub const VIDIOC_G_INPUT: u32 = 1074026022; +pub const VTPM_PROXY_IOC_NEW_DEV: u32 = 3222577408; +pub const DFL_FPGA_FME_ERR_GET_IRQ_NUM: u32 = 1074050691; +pub const ND_IOCTL_DIMM_FLAGS: u32 = 3221769731; +pub const BTRFS_IOC_QUOTA_RESCAN: u32 = 2151715884; +pub const MMTIMER_GETCOUNTER: u32 = 1074031881; +pub const MATROXFB_GET_OUTPUT_MODE: u32 = 3221516026; +pub const BTRFS_IOC_QUOTA_RESCAN_WAIT: u32 = 536908846; +pub const RIO_CM_CHAN_BIND: u32 = 2148033285; +pub const HIDIOCGRDESC: u32 = 1342457858; +pub const MGSL_IOCGIF: u32 = 536898827; +pub const VIDIOC_S_OUTPUT: u32 = 3221509679; +pub const HIDIOCGREPORTINFO: u32 = 3222030345; +pub const WDIOC_GETBOOTSTATUS: u32 = 1074026242; +pub const VDUSE_VQ_GET_INFO: u32 = 3224404245; +pub const ACRN_IOCTL_ASSIGN_PCIDEV: u32 = 2149884501; +pub const BLKGETDISKSEQ: u32 = 1074270848; +pub const ACRN_IOCTL_PM_GET_CPU_STATE: u32 = 3221791328; +pub const ACRN_IOCTL_DESTROY_VM: u32 = 536912401; +pub const ACRN_IOCTL_SET_PTDEV_INTR: u32 = 2148835923; +pub const ACRN_IOCTL_CREATE_IOREQ_CLIENT: u32 = 536912434; +pub const ACRN_IOCTL_IRQFD: u32 = 2149098097; +pub const ACRN_IOCTL_CREATE_VM: u32 = 3224412688; +pub const ACRN_IOCTL_INJECT_MSI: u32 = 2148573731; +pub const ACRN_IOCTL_ATTACH_IOREQ_CLIENT: u32 = 536912435; +pub const ACRN_IOCTL_RESET_PTDEV_INTR: u32 = 2148835924; +pub const ACRN_IOCTL_NOTIFY_REQUEST_FINISH: u32 = 2148049457; +pub const ACRN_IOCTL_SET_IRQLINE: u32 = 2148049445; +pub const ACRN_IOCTL_START_VM: u32 = 536912402; +pub const ACRN_IOCTL_SET_VCPU_REGS: u32 = 2166923798; +pub const ACRN_IOCTL_SET_MEMSEG: u32 = 2149622337; +pub const ACRN_IOCTL_PAUSE_VM: u32 = 536912403; +pub const ACRN_IOCTL_CLEAR_VM_IOREQ: u32 = 536912437; +pub const ACRN_IOCTL_UNSET_MEMSEG: u32 = 2149622338; +pub const ACRN_IOCTL_IOEVENTFD: u32 = 2149622384; +pub const ACRN_IOCTL_DEASSIGN_PCIDEV: u32 = 2149884502; +pub const ACRN_IOCTL_RESET_VM: u32 = 536912405; +pub const ACRN_IOCTL_DESTROY_IOREQ_CLIENT: u32 = 536912436; +pub const ACRN_IOCTL_VM_INTR_MONITOR: u32 = 2147787300; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/io_uring.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/io_uring.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/io_uring.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/io_uring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1089 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_rwf_t = crate::ctypes::c_int; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +pub struct io_uring_sqe { +pub opcode: __u8, +pub flags: __u8, +pub ioprio: __u16, +pub fd: __s32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, +pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, +pub len: __u32, +pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, +pub user_data: __u64, +pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, +pub personality: __u16, +pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, +pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { +pub cmd_op: __u32, +pub __pad1: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { +pub addr_len: __u16, +pub __pad3: [__u16; 1usize], +} +#[repr(C)] +pub struct io_uring_sqe__bindgen_ty_6 { +pub __bindgen_anon_1: __BindgenUnionField, +pub cmd: __BindgenUnionField<[__u8; 0usize]>, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { +pub addr3: __u64, +pub __pad2: [__u64; 1usize], +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_cqe { +pub user_data: __u64, +pub res: __s32, +pub flags: __u32, +pub big_cqe: __IncompleteArrayField<__u64>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_sqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub flags: __u32, +pub dropped: __u32, +pub array: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_cqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub overflow: __u32, +pub cqes: __u32, +pub flags: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_params { +pub sq_entries: __u32, +pub cq_entries: __u32, +pub flags: __u32, +pub sq_thread_cpu: __u32, +pub sq_thread_idle: __u32, +pub features: __u32, +pub wq_fd: __u32, +pub resv: [__u32; 3usize], +pub sq_off: io_sqring_offsets, +pub cq_off: io_cqring_offsets, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_files_update { +pub offset: __u32, +pub resv: __u32, +pub fds: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_register { +pub nr: __u32, +pub flags: __u32, +pub resv2: __u64, +pub data: __u64, +pub tags: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update2 { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +pub tags: __u64, +pub nr: __u32, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_probe_op { +pub op: __u8, +pub resv: __u8, +pub flags: __u16, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_probe { +pub last_op: __u8, +pub ops_len: __u8, +pub resv: __u16, +pub resv2: [__u32; 3usize], +pub ops: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_restriction { +pub opcode: __u16, +pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, +pub resv: __u8, +pub resv2: [__u32; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf { +pub addr: __u64, +pub len: __u32, +pub bid: __u16, +pub resv: __u16, +} +#[repr(C)] +pub struct io_uring_buf_ring { +pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +} +#[repr(C)] +pub struct io_uring_buf_ring__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { +pub resv1: __u64, +pub resv2: __u32, +pub resv3: __u16, +pub tail: __u16, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { +pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, +pub bufs: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_reg { +pub ring_addr: __u64, +pub ring_entries: __u32, +pub bgid: __u16, +pub flags: __u16, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_getevents_arg { +pub sigmask: __u64, +pub sigmask_sz: __u32, +pub pad: __u32, +pub ts: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sync_cancel_reg { +pub addr: __u64, +pub fd: __s32, +pub flags: __u32, +pub timeout: __kernel_timespec, +pub pad: [__u64; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_file_index_range { +pub off: __u32, +pub len: __u32, +pub resv: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_recvmsg_out { +pub namelen: __u32, +pub controllen: __u32, +pub payloadlen: __u32, +pub flags: __u32, +} +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 536805376; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const IORING_FILE_INDEX_ALLOC: i32 = -1; +pub const IORING_SETUP_IOPOLL: u32 = 1; +pub const IORING_SETUP_SQPOLL: u32 = 2; +pub const IORING_SETUP_SQ_AFF: u32 = 4; +pub const IORING_SETUP_CQSIZE: u32 = 8; +pub const IORING_SETUP_CLAMP: u32 = 16; +pub const IORING_SETUP_ATTACH_WQ: u32 = 32; +pub const IORING_SETUP_R_DISABLED: u32 = 64; +pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; +pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; +pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; +pub const IORING_SETUP_SQE128: u32 = 1024; +pub const IORING_SETUP_CQE32: u32 = 2048; +pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; +pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; +pub const IORING_URING_CMD_FIXED: u32 = 1; +pub const IORING_FSYNC_DATASYNC: u32 = 1; +pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; +pub const IORING_TIMEOUT_MULTISHOT: u32 = 64; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; +pub const IORING_POLL_ADD_LEVEL: u32 = 8; +pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; +pub const IORING_ASYNC_CANCEL_FD: u32 = 2; +pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; +pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; +pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; +pub const IORING_RECV_MULTISHOT: u32 = 2; +pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; +pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; +pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; +pub const IORING_ACCEPT_MULTISHOT: u32 = 1; +pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; +pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; +pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; +pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; +pub const IORING_CQE_F_NOTIF: u32 = 8; +pub const IORING_OFF_SQ_RING: u32 = 0; +pub const IORING_OFF_CQ_RING: u32 = 134217728; +pub const IORING_OFF_SQES: u32 = 268435456; +pub const IORING_OFF_PBUF_RING: u32 = 2147483648; +pub const IORING_OFF_PBUF_SHIFT: u32 = 16; +pub const IORING_OFF_MMAP_MASK: u32 = 4160749568; +pub const IORING_SQ_NEED_WAKEUP: u32 = 1; +pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; +pub const IORING_SQ_TASKRUN: u32 = 4; +pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; +pub const IORING_ENTER_GETEVENTS: u32 = 1; +pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; +pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; +pub const IORING_ENTER_REGISTERED_RING: u32 = 16; +pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; +pub const IORING_FEAT_NODROP: u32 = 2; +pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; +pub const IORING_FEAT_RW_CUR_POS: u32 = 8; +pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; +pub const IORING_FEAT_FAST_POLL: u32 = 32; +pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_FEAT_CQE_SKIP: u32 = 2048; +pub const IORING_FEAT_LINKED_FILE: u32 = 4096; +pub const IORING_FEAT_REG_REG_RING: u32 = 8192; +pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; +pub const IO_URING_OP_SUPPORTED: u32 = 1; +pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_FIXED_FILE_BIT; +pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_DRAIN_BIT; +pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_LINK_BIT; +pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_HARDLINK_BIT; +pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_ASYNC_BIT; +pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_BUFFER_SELECT_BIT; +pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_CQE_SKIP_SUCCESS_BIT; +pub const IORING_MSG_DATA: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_DATA; +pub const IORING_MSG_SEND_FD: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_SEND_FD; +pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = _bindgen_ty_3::IORING_CQE_BUFFER_SHIFT; +pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS; +pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_BUFFERS; +pub const IORING_REGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES; +pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_FILES; +pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD; +pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_EVENTFD; +pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE; +pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD_ASYNC; +pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PROBE; +pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PERSONALITY; +pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PERSONALITY; +pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RESTRICTIONS; +pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_ENABLE_RINGS; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES2; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE2; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS2; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS_UPDATE; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_AFF; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_IOWQ_AFF; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_MAX_WORKERS; +pub const IORING_REGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RING_FDS; +pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_RING_FDS; +pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PBUF_RING; +pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PBUF_RING; +pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_SYNC_CANCEL; +pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILE_ALLOC_RANGE; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_LAST; +pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_USE_REGISTERED_RING; +pub const IO_WQ_BOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_BOUND; +pub const IO_WQ_UNBOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_UNBOUND; +pub const IOU_PBUF_RING_MMAP: _bindgen_ty_6 = _bindgen_ty_6::IOU_PBUF_RING_MMAP; +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_7 = _bindgen_ty_7::IORING_RESTRICTION_REGISTER_OP; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_7 = _bindgen_ty_7::IORING_RESTRICTION_SQE_OP; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_7 = _bindgen_ty_7::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_7 = _bindgen_ty_7::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_7 = _bindgen_ty_7::IORING_RESTRICTION_LAST; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IOSQE_FIXED_FILE_BIT = 0, +IOSQE_IO_DRAIN_BIT = 1, +IOSQE_IO_LINK_BIT = 2, +IOSQE_IO_HARDLINK_BIT = 3, +IOSQE_ASYNC_BIT = 4, +IOSQE_BUFFER_SELECT_BIT = 5, +IOSQE_CQE_SKIP_SUCCESS_BIT = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum io_uring_op { +IORING_OP_NOP = 0, +IORING_OP_READV = 1, +IORING_OP_WRITEV = 2, +IORING_OP_FSYNC = 3, +IORING_OP_READ_FIXED = 4, +IORING_OP_WRITE_FIXED = 5, +IORING_OP_POLL_ADD = 6, +IORING_OP_POLL_REMOVE = 7, +IORING_OP_SYNC_FILE_RANGE = 8, +IORING_OP_SENDMSG = 9, +IORING_OP_RECVMSG = 10, +IORING_OP_TIMEOUT = 11, +IORING_OP_TIMEOUT_REMOVE = 12, +IORING_OP_ACCEPT = 13, +IORING_OP_ASYNC_CANCEL = 14, +IORING_OP_LINK_TIMEOUT = 15, +IORING_OP_CONNECT = 16, +IORING_OP_FALLOCATE = 17, +IORING_OP_OPENAT = 18, +IORING_OP_CLOSE = 19, +IORING_OP_FILES_UPDATE = 20, +IORING_OP_STATX = 21, +IORING_OP_READ = 22, +IORING_OP_WRITE = 23, +IORING_OP_FADVISE = 24, +IORING_OP_MADVISE = 25, +IORING_OP_SEND = 26, +IORING_OP_RECV = 27, +IORING_OP_OPENAT2 = 28, +IORING_OP_EPOLL_CTL = 29, +IORING_OP_SPLICE = 30, +IORING_OP_PROVIDE_BUFFERS = 31, +IORING_OP_REMOVE_BUFFERS = 32, +IORING_OP_TEE = 33, +IORING_OP_SHUTDOWN = 34, +IORING_OP_RENAMEAT = 35, +IORING_OP_UNLINKAT = 36, +IORING_OP_MKDIRAT = 37, +IORING_OP_SYMLINKAT = 38, +IORING_OP_LINKAT = 39, +IORING_OP_MSG_RING = 40, +IORING_OP_FSETXATTR = 41, +IORING_OP_SETXATTR = 42, +IORING_OP_FGETXATTR = 43, +IORING_OP_GETXATTR = 44, +IORING_OP_SOCKET = 45, +IORING_OP_URING_CMD = 46, +IORING_OP_SEND_ZC = 47, +IORING_OP_SENDMSG_ZC = 48, +IORING_OP_LAST = 49, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IORING_MSG_DATA = 0, +IORING_MSG_SEND_FD = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IORING_CQE_BUFFER_SHIFT = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IORING_REGISTER_BUFFERS = 0, +IORING_UNREGISTER_BUFFERS = 1, +IORING_REGISTER_FILES = 2, +IORING_UNREGISTER_FILES = 3, +IORING_REGISTER_EVENTFD = 4, +IORING_UNREGISTER_EVENTFD = 5, +IORING_REGISTER_FILES_UPDATE = 6, +IORING_REGISTER_EVENTFD_ASYNC = 7, +IORING_REGISTER_PROBE = 8, +IORING_REGISTER_PERSONALITY = 9, +IORING_UNREGISTER_PERSONALITY = 10, +IORING_REGISTER_RESTRICTIONS = 11, +IORING_REGISTER_ENABLE_RINGS = 12, +IORING_REGISTER_FILES2 = 13, +IORING_REGISTER_FILES_UPDATE2 = 14, +IORING_REGISTER_BUFFERS2 = 15, +IORING_REGISTER_BUFFERS_UPDATE = 16, +IORING_REGISTER_IOWQ_AFF = 17, +IORING_UNREGISTER_IOWQ_AFF = 18, +IORING_REGISTER_IOWQ_MAX_WORKERS = 19, +IORING_REGISTER_RING_FDS = 20, +IORING_UNREGISTER_RING_FDS = 21, +IORING_REGISTER_PBUF_RING = 22, +IORING_UNREGISTER_PBUF_RING = 23, +IORING_REGISTER_SYNC_CANCEL = 24, +IORING_REGISTER_FILE_ALLOC_RANGE = 25, +IORING_REGISTER_LAST = 26, +IORING_REGISTER_USE_REGISTERED_RING = 2147483648, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IO_WQ_BOUND = 0, +IO_WQ_UNBOUND = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IOU_PBUF_RING_MMAP = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +IORING_RESTRICTION_REGISTER_OP = 0, +IORING_RESTRICTION_SQE_OP = 1, +IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, +IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, +IORING_RESTRICTION_LAST = 4, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_1 { +pub off: __u64, +pub addr2: __u64, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_2 { +pub addr: __u64, +pub splice_off_in: __u64, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_3 { +pub rw_flags: __kernel_rwf_t, +pub fsync_flags: __u32, +pub poll_events: __u16, +pub poll32_events: __u32, +pub sync_range_flags: __u32, +pub msg_flags: __u32, +pub timeout_flags: __u32, +pub accept_flags: __u32, +pub cancel_flags: __u32, +pub open_flags: __u32, +pub statx_flags: __u32, +pub fadvise_advice: __u32, +pub splice_flags: __u32, +pub rename_flags: __u32, +pub unlink_flags: __u32, +pub hardlink_flags: __u32, +pub xattr_flags: __u32, +pub msg_ring_flags: __u32, +pub uring_cmd_flags: __u32, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_4 { +pub buf_index: __u16, +pub buf_group: __u16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { +pub splice_fd_in: __s32, +pub file_index: __u32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_restriction__bindgen_ty_1 { +pub register_op: __u8, +pub sqe_op: __u8, +pub sqe_flags: __u8, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/netlink.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/netlink.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/netlink.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/netlink.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,2868 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_nl { +pub nl_family: __kernel_sa_family_t, +pub nl_pad: crate::ctypes::c_ushort, +pub nl_pid: __u32, +pub nl_groups: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsghdr { +pub nlmsg_len: __u32, +pub nlmsg_type: __u16, +pub nlmsg_flags: __u16, +pub nlmsg_seq: __u32, +pub nlmsg_pid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsgerr { +pub error: crate::ctypes::c_int, +pub msg: nlmsghdr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_pktinfo { +pub group: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_req { +pub nm_block_size: crate::ctypes::c_uint, +pub nm_block_nr: crate::ctypes::c_uint, +pub nm_frame_size: crate::ctypes::c_uint, +pub nm_frame_nr: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_hdr { +pub nm_status: crate::ctypes::c_uint, +pub nm_len: crate::ctypes::c_uint, +pub nm_group: __u32, +pub nm_pid: __u32, +pub nm_uid: __u32, +pub nm_gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlattr { +pub nla_len: __u16, +pub nla_type: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nla_bitfield32 { +pub value: __u32, +pub selector: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnl_link_stats { +pub rx_packets: __u32, +pub tx_packets: __u32, +pub rx_bytes: __u32, +pub tx_bytes: __u32, +pub rx_errors: __u32, +pub tx_errors: __u32, +pub rx_dropped: __u32, +pub tx_dropped: __u32, +pub multicast: __u32, +pub collisions: __u32, +pub rx_length_errors: __u32, +pub rx_over_errors: __u32, +pub rx_crc_errors: __u32, +pub rx_frame_errors: __u32, +pub rx_fifo_errors: __u32, +pub rx_missed_errors: __u32, +pub tx_aborted_errors: __u32, +pub tx_carrier_errors: __u32, +pub tx_fifo_errors: __u32, +pub tx_heartbeat_errors: __u32, +pub tx_window_errors: __u32, +pub rx_compressed: __u32, +pub tx_compressed: __u32, +pub rx_nohandler: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnl_link_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +pub collisions: __u64, +pub rx_length_errors: __u64, +pub rx_over_errors: __u64, +pub rx_crc_errors: __u64, +pub rx_frame_errors: __u64, +pub rx_fifo_errors: __u64, +pub rx_missed_errors: __u64, +pub tx_aborted_errors: __u64, +pub tx_carrier_errors: __u64, +pub tx_fifo_errors: __u64, +pub tx_heartbeat_errors: __u64, +pub tx_window_errors: __u64, +pub rx_compressed: __u64, +pub tx_compressed: __u64, +pub rx_nohandler: __u64, +pub rx_otherhost_dropped: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnl_hw_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnl_link_ifmap { +pub mem_start: __u64, +pub mem_end: __u64, +pub base_addr: __u64, +pub irq: __u16, +pub dma: __u8, +pub port: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_bridge_id { +pub prio: [__u8; 2usize], +pub addr: [__u8; 6usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_cacheinfo { +pub max_reasm_len: __u32, +pub tstamp: __u32, +pub reachable_time: __u32, +pub retrans_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_qos_mapping { +pub from: __u32, +pub to: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tunnel_msg { +pub family: __u8, +pub flags: __u8, +pub reserved2: __u16, +pub ifindex: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vxlan_port_range { +pub low: __be16, +pub high: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_mac { +pub vf: __u32, +pub mac: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_broadcast { +pub broadcast: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan_info { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +pub vlan_proto: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_tx_rate { +pub vf: __u32, +pub rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rate { +pub vf: __u32, +pub min_tx_rate: __u32, +pub max_tx_rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_spoofchk { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_guid { +pub vf: __u32, +pub guid: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_link_state { +pub vf: __u32, +pub link_state: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rss_query_en { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_trust { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_port_vsi { +pub vsi_mgr_id: __u8, +pub vsi_type_id: [__u8; 3usize], +pub vsi_type_version: __u8, +pub pad: [__u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct if_stats_msg { +pub family: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub ifindex: __u32, +pub filter_mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_rmnet_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifaddrmsg { +pub ifa_family: __u8, +pub ifa_prefixlen: __u8, +pub ifa_flags: __u8, +pub ifa_scope: __u8, +pub ifa_index: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifa_cacheinfo { +pub ifa_prefered: __u32, +pub ifa_valid: __u32, +pub cstamp: __u32, +pub tstamp: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndmsg { +pub ndm_family: __u8, +pub ndm_pad1: __u8, +pub ndm_pad2: __u16, +pub ndm_ifindex: __s32, +pub ndm_state: __u16, +pub ndm_flags: __u8, +pub ndm_type: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nda_cacheinfo { +pub ndm_confirmed: __u32, +pub ndm_used: __u32, +pub ndm_updated: __u32, +pub ndm_refcnt: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_stats { +pub ndts_allocs: __u64, +pub ndts_destroys: __u64, +pub ndts_hash_grows: __u64, +pub ndts_res_failed: __u64, +pub ndts_lookups: __u64, +pub ndts_hits: __u64, +pub ndts_rcv_probes_mcast: __u64, +pub ndts_rcv_probes_ucast: __u64, +pub ndts_periodic_gc_runs: __u64, +pub ndts_forced_gc_runs: __u64, +pub ndts_table_fulls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndtmsg { +pub ndtm_family: __u8, +pub ndtm_pad1: __u8, +pub ndtm_pad2: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_config { +pub ndtc_key_len: __u16, +pub ndtc_entry_size: __u16, +pub ndtc_entries: __u32, +pub ndtc_last_flush: __u32, +pub ndtc_last_rand: __u32, +pub ndtc_hash_rnd: __u32, +pub ndtc_hash_mask: __u32, +pub ndtc_hash_chain_gc: __u32, +pub ndtc_proxy_qlen: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtattr { +pub rta_len: crate::ctypes::c_ushort, +pub rta_type: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtmsg { +pub rtm_family: crate::ctypes::c_uchar, +pub rtm_dst_len: crate::ctypes::c_uchar, +pub rtm_src_len: crate::ctypes::c_uchar, +pub rtm_tos: crate::ctypes::c_uchar, +pub rtm_table: crate::ctypes::c_uchar, +pub rtm_protocol: crate::ctypes::c_uchar, +pub rtm_scope: crate::ctypes::c_uchar, +pub rtm_type: crate::ctypes::c_uchar, +pub rtm_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnexthop { +pub rtnh_len: crate::ctypes::c_ushort, +pub rtnh_flags: crate::ctypes::c_uchar, +pub rtnh_hops: crate::ctypes::c_uchar, +pub rtnh_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug)] +pub struct rtvia { +pub rtvia_family: __kernel_sa_family_t, +pub rtvia_addr: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_cacheinfo { +pub rta_clntref: __u32, +pub rta_lastuse: __u32, +pub rta_expires: __s32, +pub rta_error: __u32, +pub rta_used: __u32, +pub rta_id: __u32, +pub rta_ts: __u32, +pub rta_tsage: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rta_session { +pub proto: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub u: rta_session__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { +pub sport: __u16, +pub dport: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { +pub type_: __u8, +pub code: __u8, +pub ident: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_mfc_stats { +pub mfcs_packets: __u64, +pub mfcs_bytes: __u64, +pub mfcs_wrong_if: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtgenmsg { +pub rtgen_family: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifinfomsg { +pub ifi_family: crate::ctypes::c_uchar, +pub __ifi_pad: crate::ctypes::c_uchar, +pub ifi_type: crate::ctypes::c_ushort, +pub ifi_index: crate::ctypes::c_int, +pub ifi_flags: crate::ctypes::c_uint, +pub ifi_change: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefixmsg { +pub prefix_family: crate::ctypes::c_uchar, +pub prefix_pad1: crate::ctypes::c_uchar, +pub prefix_pad2: crate::ctypes::c_ushort, +pub prefix_ifindex: crate::ctypes::c_int, +pub prefix_type: crate::ctypes::c_uchar, +pub prefix_len: crate::ctypes::c_uchar, +pub prefix_flags: crate::ctypes::c_uchar, +pub prefix_pad3: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefix_cacheinfo { +pub preferred_time: __u32, +pub valid_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcmsg { +pub tcm_family: crate::ctypes::c_uchar, +pub tcm__pad1: crate::ctypes::c_uchar, +pub tcm__pad2: crate::ctypes::c_ushort, +pub tcm_ifindex: crate::ctypes::c_int, +pub tcm_handle: __u32, +pub tcm_parent: __u32, +pub tcm_info: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nduseroptmsg { +pub nduseropt_family: crate::ctypes::c_uchar, +pub nduseropt_pad1: crate::ctypes::c_uchar, +pub nduseropt_opts_len: crate::ctypes::c_ushort, +pub nduseropt_ifindex: crate::ctypes::c_int, +pub nduseropt_icmp_type: __u8, +pub nduseropt_icmp_code: __u8, +pub nduseropt_pad2: crate::ctypes::c_ushort, +pub nduseropt_pad3: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcamsg { +pub tca_family: crate::ctypes::c_uchar, +pub tca__pad1: crate::ctypes::c_uchar, +pub tca__pad2: crate::ctypes::c_ushort, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const NETLINK_ROUTE: u32 = 0; +pub const NETLINK_UNUSED: u32 = 1; +pub const NETLINK_USERSOCK: u32 = 2; +pub const NETLINK_FIREWALL: u32 = 3; +pub const NETLINK_SOCK_DIAG: u32 = 4; +pub const NETLINK_NFLOG: u32 = 5; +pub const NETLINK_XFRM: u32 = 6; +pub const NETLINK_SELINUX: u32 = 7; +pub const NETLINK_ISCSI: u32 = 8; +pub const NETLINK_AUDIT: u32 = 9; +pub const NETLINK_FIB_LOOKUP: u32 = 10; +pub const NETLINK_CONNECTOR: u32 = 11; +pub const NETLINK_NETFILTER: u32 = 12; +pub const NETLINK_IP6_FW: u32 = 13; +pub const NETLINK_DNRTMSG: u32 = 14; +pub const NETLINK_KOBJECT_UEVENT: u32 = 15; +pub const NETLINK_GENERIC: u32 = 16; +pub const NETLINK_SCSITRANSPORT: u32 = 18; +pub const NETLINK_ECRYPTFS: u32 = 19; +pub const NETLINK_RDMA: u32 = 20; +pub const NETLINK_CRYPTO: u32 = 21; +pub const NETLINK_SMC: u32 = 22; +pub const NETLINK_INET_DIAG: u32 = 4; +pub const MAX_LINKS: u32 = 32; +pub const NLM_F_REQUEST: u32 = 1; +pub const NLM_F_MULTI: u32 = 2; +pub const NLM_F_ACK: u32 = 4; +pub const NLM_F_ECHO: u32 = 8; +pub const NLM_F_DUMP_INTR: u32 = 16; +pub const NLM_F_DUMP_FILTERED: u32 = 32; +pub const NLM_F_ROOT: u32 = 256; +pub const NLM_F_MATCH: u32 = 512; +pub const NLM_F_ATOMIC: u32 = 1024; +pub const NLM_F_DUMP: u32 = 768; +pub const NLM_F_REPLACE: u32 = 256; +pub const NLM_F_EXCL: u32 = 512; +pub const NLM_F_CREATE: u32 = 1024; +pub const NLM_F_APPEND: u32 = 2048; +pub const NLM_F_NONREC: u32 = 256; +pub const NLM_F_BULK: u32 = 512; +pub const NLM_F_CAPPED: u32 = 256; +pub const NLM_F_ACK_TLVS: u32 = 512; +pub const NLMSG_ALIGNTO: u32 = 4; +pub const NLMSG_NOOP: u32 = 1; +pub const NLMSG_ERROR: u32 = 2; +pub const NLMSG_DONE: u32 = 3; +pub const NLMSG_OVERRUN: u32 = 4; +pub const NLMSG_MIN_TYPE: u32 = 16; +pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; +pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; +pub const NETLINK_PKTINFO: u32 = 3; +pub const NETLINK_BROADCAST_ERROR: u32 = 4; +pub const NETLINK_NO_ENOBUFS: u32 = 5; +pub const NETLINK_RX_RING: u32 = 6; +pub const NETLINK_TX_RING: u32 = 7; +pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; +pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; +pub const NETLINK_CAP_ACK: u32 = 10; +pub const NETLINK_EXT_ACK: u32 = 11; +pub const NETLINK_GET_STRICT_CHK: u32 = 12; +pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; +pub const NET_MAJOR: u32 = 36; +pub const NLA_F_NESTED: u32 = 32768; +pub const NLA_F_NET_BYTEORDER: u32 = 16384; +pub const NLA_TYPE_MASK: i32 = -49153; +pub const NLA_ALIGNTO: u32 = 4; +pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; +pub const MACVLAN_FLAG_NODST: u32 = 2; +pub const IPVLAN_F_PRIVATE: u32 = 1; +pub const IPVLAN_F_VEPA: u32 = 2; +pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; +pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; +pub const MAX_VLAN_LIST_LEN: u32 = 1; +pub const PORT_PROFILE_MAX: u32 = 40; +pub const PORT_UUID_MAX: u32 = 16; +pub const PORT_SELF_VF: i32 = -1; +pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; +pub const XDP_FLAGS_SKB_MODE: u32 = 2; +pub const XDP_FLAGS_DRV_MODE: u32 = 4; +pub const XDP_FLAGS_HW_MODE: u32 = 8; +pub const XDP_FLAGS_REPLACE: u32 = 16; +pub const XDP_FLAGS_MODES: u32 = 14; +pub const XDP_FLAGS_MASK: u32 = 31; +pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; +pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; +pub const IFA_F_SECONDARY: u32 = 1; +pub const IFA_F_TEMPORARY: u32 = 1; +pub const IFA_F_NODAD: u32 = 2; +pub const IFA_F_OPTIMISTIC: u32 = 4; +pub const IFA_F_DADFAILED: u32 = 8; +pub const IFA_F_HOMEADDRESS: u32 = 16; +pub const IFA_F_DEPRECATED: u32 = 32; +pub const IFA_F_TENTATIVE: u32 = 64; +pub const IFA_F_PERMANENT: u32 = 128; +pub const IFA_F_MANAGETEMPADDR: u32 = 256; +pub const IFA_F_NOPREFIXROUTE: u32 = 512; +pub const IFA_F_MCAUTOJOIN: u32 = 1024; +pub const IFA_F_STABLE_PRIVACY: u32 = 2048; +pub const IFAPROT_UNSPEC: u32 = 0; +pub const IFAPROT_KERNEL_LO: u32 = 1; +pub const IFAPROT_KERNEL_RA: u32 = 2; +pub const IFAPROT_KERNEL_LL: u32 = 3; +pub const NTF_USE: u32 = 1; +pub const NTF_SELF: u32 = 2; +pub const NTF_MASTER: u32 = 4; +pub const NTF_PROXY: u32 = 8; +pub const NTF_EXT_LEARNED: u32 = 16; +pub const NTF_OFFLOADED: u32 = 32; +pub const NTF_STICKY: u32 = 64; +pub const NTF_ROUTER: u32 = 128; +pub const NTF_EXT_MANAGED: u32 = 1; +pub const NTF_EXT_LOCKED: u32 = 2; +pub const NUD_INCOMPLETE: u32 = 1; +pub const NUD_REACHABLE: u32 = 2; +pub const NUD_STALE: u32 = 4; +pub const NUD_DELAY: u32 = 8; +pub const NUD_PROBE: u32 = 16; +pub const NUD_FAILED: u32 = 32; +pub const NUD_NOARP: u32 = 64; +pub const NUD_PERMANENT: u32 = 128; +pub const NUD_NONE: u32 = 0; +pub const RTNL_FAMILY_IPMR: u32 = 128; +pub const RTNL_FAMILY_IP6MR: u32 = 129; +pub const RTNL_FAMILY_MAX: u32 = 129; +pub const RTA_ALIGNTO: u32 = 4; +pub const RTPROT_UNSPEC: u32 = 0; +pub const RTPROT_REDIRECT: u32 = 1; +pub const RTPROT_KERNEL: u32 = 2; +pub const RTPROT_BOOT: u32 = 3; +pub const RTPROT_STATIC: u32 = 4; +pub const RTPROT_GATED: u32 = 8; +pub const RTPROT_RA: u32 = 9; +pub const RTPROT_MRT: u32 = 10; +pub const RTPROT_ZEBRA: u32 = 11; +pub const RTPROT_BIRD: u32 = 12; +pub const RTPROT_DNROUTED: u32 = 13; +pub const RTPROT_XORP: u32 = 14; +pub const RTPROT_NTK: u32 = 15; +pub const RTPROT_DHCP: u32 = 16; +pub const RTPROT_MROUTED: u32 = 17; +pub const RTPROT_KEEPALIVED: u32 = 18; +pub const RTPROT_BABEL: u32 = 42; +pub const RTPROT_OPENR: u32 = 99; +pub const RTPROT_BGP: u32 = 186; +pub const RTPROT_ISIS: u32 = 187; +pub const RTPROT_OSPF: u32 = 188; +pub const RTPROT_RIP: u32 = 189; +pub const RTPROT_EIGRP: u32 = 192; +pub const RTM_F_NOTIFY: u32 = 256; +pub const RTM_F_CLONED: u32 = 512; +pub const RTM_F_EQUALIZE: u32 = 1024; +pub const RTM_F_PREFIX: u32 = 2048; +pub const RTM_F_LOOKUP_TABLE: u32 = 4096; +pub const RTM_F_FIB_MATCH: u32 = 8192; +pub const RTM_F_OFFLOAD: u32 = 16384; +pub const RTM_F_TRAP: u32 = 32768; +pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; +pub const RTNH_F_DEAD: u32 = 1; +pub const RTNH_F_PERVASIVE: u32 = 2; +pub const RTNH_F_ONLINK: u32 = 4; +pub const RTNH_F_OFFLOAD: u32 = 8; +pub const RTNH_F_LINKDOWN: u32 = 16; +pub const RTNH_F_UNRESOLVED: u32 = 32; +pub const RTNH_F_TRAP: u32 = 64; +pub const RTNH_COMPARE_MASK: u32 = 89; +pub const RTNH_ALIGNTO: u32 = 4; +pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; +pub const RTAX_FEATURE_ECN: u32 = 1; +pub const RTAX_FEATURE_SACK: u32 = 2; +pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; +pub const RTAX_FEATURE_ALLFRAG: u32 = 8; +pub const RTAX_FEATURE_MASK: u32 = 15; +pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; +pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; +pub const RTMGRP_LINK: u32 = 1; +pub const RTMGRP_NOTIFY: u32 = 2; +pub const RTMGRP_NEIGH: u32 = 4; +pub const RTMGRP_TC: u32 = 8; +pub const RTMGRP_IPV4_IFADDR: u32 = 16; +pub const RTMGRP_IPV4_MROUTE: u32 = 32; +pub const RTMGRP_IPV4_ROUTE: u32 = 64; +pub const RTMGRP_IPV4_RULE: u32 = 128; +pub const RTMGRP_IPV6_IFADDR: u32 = 256; +pub const RTMGRP_IPV6_MROUTE: u32 = 512; +pub const RTMGRP_IPV6_ROUTE: u32 = 1024; +pub const RTMGRP_IPV6_IFINFO: u32 = 2048; +pub const RTMGRP_DECnet_IFADDR: u32 = 4096; +pub const RTMGRP_DECnet_ROUTE: u32 = 16384; +pub const RTMGRP_IPV6_PREFIX: u32 = 131072; +pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; +pub const RTEXT_FILTER_VF: u32 = 1; +pub const RTEXT_FILTER_BRVLAN: u32 = 2; +pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; +pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; +pub const RTEXT_FILTER_MRP: u32 = 16; +pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; +pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; +pub const RTEXT_FILTER_MST: u32 = 128; +pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; +pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; +pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; +pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; +pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; +pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; +pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; +pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; +pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; +pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; +pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; +pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; +pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; +pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; +pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; +pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; +pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; +pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; +pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; +pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; +pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; +pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; +pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; +pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; +pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; +pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; +pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; +pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; +pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; +pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; +pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; +pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; +pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; +pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; +pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; +pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; +pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; +pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; +pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; +pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; +pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; +pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; +pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; +pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; +pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; +pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; +pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; +pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; +pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; +pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; +pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; +pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; +pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; +pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; +pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; +pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; +pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; +pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; +pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; +pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; +pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; +pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; +pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; +pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; +pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; +pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; +pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; +pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; +pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; +pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; +pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; +pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; +pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; +pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; +pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; +pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; +pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; +pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; +pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; +pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; +pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; +pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; +pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; +pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; +pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; +pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; +pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; +pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; +pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; +pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; +pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; +pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; +pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; +pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; +pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; +pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; +pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; +pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; +pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; +pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; +pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; +pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; +pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; +pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; +pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; +pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; +pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; +pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; +pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; +pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; +pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; +pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; +pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; +pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; +pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; +pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; +pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; +pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; +pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; +pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; +pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; +pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; +pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; +pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; +pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; +pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; +pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; +pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; +pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; +pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; +pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; +pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; +pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; +pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; +pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; +pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; +pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; +pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; +pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; +pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; +pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; +pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; +pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; +pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; +pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; +pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; +pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; +pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; +pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; +pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; +pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; +pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; +pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; +pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; +pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; +pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; +pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; +pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; +pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; +pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; +pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; +pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; +pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; +pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; +pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; +pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; +pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; +pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; +pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; +pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; +pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; +pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; +pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; +pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; +pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; +pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; +pub const IFLA_BRPORT_NEIGH_VLAN_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_VLAN_SUPPRESS; +pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; +pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; +pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; +pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; +pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; +pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; +pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; +pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; +pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; +pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; +pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; +pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; +pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; +pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; +pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; +pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; +pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; +pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; +pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; +pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; +pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; +pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; +pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; +pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; +pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; +pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; +pub const IFLA_MACVLAN_BC_CUTOFF: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_CUTOFF; +pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; +pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; +pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; +pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; +pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; +pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; +pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; +pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; +pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; +pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; +pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; +pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; +pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; +pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; +pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; +pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; +pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; +pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; +pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; +pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; +pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; +pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; +pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; +pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; +pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; +pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; +pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; +pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; +pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; +pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; +pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; +pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; +pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; +pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; +pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; +pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; +pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; +pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; +pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; +pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; +pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; +pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; +pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; +pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; +pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; +pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; +pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; +pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; +pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; +pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; +pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; +pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; +pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; +pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; +pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; +pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; +pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; +pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; +pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; +pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; +pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; +pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; +pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; +pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; +pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; +pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; +pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; +pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; +pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; +pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; +pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; +pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; +pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; +pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; +pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; +pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; +pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; +pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; +pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; +pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; +pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; +pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; +pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; +pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; +pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; +pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; +pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; +pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; +pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; +pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; +pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; +pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; +pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; +pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; +pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; +pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; +pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; +pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; +pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; +pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; +pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; +pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; +pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; +pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; +pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; +pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; +pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; +pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; +pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; +pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; +pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; +pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; +pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; +pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; +pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; +pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; +pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; +pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; +pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; +pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; +pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; +pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; +pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; +pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; +pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; +pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; +pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; +pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; +pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; +pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; +pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; +pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; +pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; +pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; +pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; +pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; +pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; +pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; +pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; +pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; +pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; +pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; +pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; +pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; +pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; +pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; +pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; +pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; +pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; +pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; +pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; +pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; +pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; +pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; +pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; +pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; +pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; +pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; +pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; +pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; +pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; +pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; +pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; +pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; +pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; +pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; +pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; +pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; +pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; +pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; +pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; +pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; +pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; +pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; +pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; +pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; +pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; +pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; +pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; +pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; +pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; +pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; +pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; +pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; +pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; +pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; +pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; +pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; +pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; +pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; +pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; +pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; +pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; +pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; +pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; +pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; +pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; +pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; +pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; +pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; +pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; +pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; +pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; +pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; +pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; +pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; +pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; +pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; +pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; +pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; +pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; +pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; +pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; +pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; +pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; +pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; +pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; +pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; +pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; +pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; +pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; +pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; +pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; +pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; +pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; +pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; +pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; +pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; +pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; +pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; +pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; +pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; +pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; +pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; +pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; +pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; +pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; +pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; +pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; +pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; +pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; +pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; +pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; +pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; +pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; +pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; +pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; +pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; +pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; +pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; +pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; +pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; +pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; +pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; +pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; +pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; +pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; +pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; +pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; +pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; +pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; +pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; +pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; +pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; +pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; +pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; +pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; +pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; +pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; +pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; +pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; +pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; +pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; +pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; +pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; +pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; +pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; +pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; +pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; +pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; +pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; +pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; +pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; +pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; +pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; +pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; +pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; +pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; +pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; +pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; +pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; +pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; +pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; +pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; +pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; +pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; +pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; +pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; +pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; +pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; +pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; +pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; +pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; +pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; +pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; +pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; +pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; +pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; +pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; +pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; +pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; +pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; +pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; +pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; +pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; +pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; +pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; +pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; +pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; +pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; +pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; +pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; +pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; +pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; +pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; +pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; +pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; +pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; +pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; +pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; +pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; +pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; +pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; +pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; +pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; +pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; +pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; +pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; +pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; +pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; +pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; +pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; +pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; +pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; +pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; +pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; +pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; +pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; +pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; +pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; +pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; +pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; +pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; +pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; +pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; +pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; +pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; +pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; +pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; +pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; +pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; +pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; +pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; +pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; +pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; +pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; +pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; +pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; +pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; +pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; +pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; +pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; +pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; +pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; +pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; +pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; +pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; +pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; +pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; +pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; +pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; +pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; +pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; +pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; +pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; +pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; +pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; +pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; +pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; +pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; +pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; +pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; +pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; +pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; +pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; +pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; +pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; +pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; +pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; +pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; +pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; +pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; +pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; +pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; +pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; +pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; +pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; +pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; +pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; +pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; +pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; +pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; +pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; +pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; +pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; +pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; +pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; +pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; +pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; +pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; +pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; +pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; +pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; +pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; +pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; +pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; +pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; +pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; +pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; +pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; +pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; +pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; +pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; +pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; +pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; +pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; +pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; +pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; +pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; +pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; +pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; +pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; +pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; +pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; +pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; +pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; +pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; +pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; +pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; +pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; +pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; +pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; +pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; +pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; +pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; +pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; +pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; +pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; +pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; +pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; +pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; +pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; +pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; +pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; +pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; +pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; +pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; +pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; +pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; +pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; +pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; +pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; +pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; +pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; +pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; +pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; +pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; +pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; +pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; +pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; +pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; +pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; +pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; +pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; +pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; +pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; +pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; +pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; +pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; +pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; +pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; +pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; +pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; +pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; +pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; +pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; +pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; +pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; +pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; +pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; +pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; +pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum nlmsgerr_attrs { +NLMSGERR_ATTR_UNUSED = 0, +NLMSGERR_ATTR_MSG = 1, +NLMSGERR_ATTR_OFFS = 2, +NLMSGERR_ATTR_COOKIE = 3, +NLMSGERR_ATTR_POLICY = 4, +NLMSGERR_ATTR_MISS_TYPE = 5, +NLMSGERR_ATTR_MISS_NEST = 6, +__NLMSGERR_ATTR_MAX = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum nl_mmap_status { +NL_MMAP_STATUS_UNUSED = 0, +NL_MMAP_STATUS_RESERVED = 1, +NL_MMAP_STATUS_VALID = 2, +NL_MMAP_STATUS_COPY = 3, +NL_MMAP_STATUS_SKIP = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +NETLINK_UNCONNECTED = 0, +NETLINK_CONNECTED = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_attribute_type { +NL_ATTR_TYPE_INVALID = 0, +NL_ATTR_TYPE_FLAG = 1, +NL_ATTR_TYPE_U8 = 2, +NL_ATTR_TYPE_U16 = 3, +NL_ATTR_TYPE_U32 = 4, +NL_ATTR_TYPE_U64 = 5, +NL_ATTR_TYPE_S8 = 6, +NL_ATTR_TYPE_S16 = 7, +NL_ATTR_TYPE_S32 = 8, +NL_ATTR_TYPE_S64 = 9, +NL_ATTR_TYPE_BINARY = 10, +NL_ATTR_TYPE_STRING = 11, +NL_ATTR_TYPE_NUL_STRING = 12, +NL_ATTR_TYPE_NESTED = 13, +NL_ATTR_TYPE_NESTED_ARRAY = 14, +NL_ATTR_TYPE_BITFIELD32 = 15, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_policy_type_attr { +NL_POLICY_TYPE_ATTR_UNSPEC = 0, +NL_POLICY_TYPE_ATTR_TYPE = 1, +NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, +NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, +NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, +NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, +NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, +NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, +NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, +NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, +NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, +NL_POLICY_TYPE_ATTR_PAD = 11, +NL_POLICY_TYPE_ATTR_MASK = 12, +__NL_POLICY_TYPE_ATTR_MAX = 13, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IFLA_UNSPEC = 0, +IFLA_ADDRESS = 1, +IFLA_BROADCAST = 2, +IFLA_IFNAME = 3, +IFLA_MTU = 4, +IFLA_LINK = 5, +IFLA_QDISC = 6, +IFLA_STATS = 7, +IFLA_COST = 8, +IFLA_PRIORITY = 9, +IFLA_MASTER = 10, +IFLA_WIRELESS = 11, +IFLA_PROTINFO = 12, +IFLA_TXQLEN = 13, +IFLA_MAP = 14, +IFLA_WEIGHT = 15, +IFLA_OPERSTATE = 16, +IFLA_LINKMODE = 17, +IFLA_LINKINFO = 18, +IFLA_NET_NS_PID = 19, +IFLA_IFALIAS = 20, +IFLA_NUM_VF = 21, +IFLA_VFINFO_LIST = 22, +IFLA_STATS64 = 23, +IFLA_VF_PORTS = 24, +IFLA_PORT_SELF = 25, +IFLA_AF_SPEC = 26, +IFLA_GROUP = 27, +IFLA_NET_NS_FD = 28, +IFLA_EXT_MASK = 29, +IFLA_PROMISCUITY = 30, +IFLA_NUM_TX_QUEUES = 31, +IFLA_NUM_RX_QUEUES = 32, +IFLA_CARRIER = 33, +IFLA_PHYS_PORT_ID = 34, +IFLA_CARRIER_CHANGES = 35, +IFLA_PHYS_SWITCH_ID = 36, +IFLA_LINK_NETNSID = 37, +IFLA_PHYS_PORT_NAME = 38, +IFLA_PROTO_DOWN = 39, +IFLA_GSO_MAX_SEGS = 40, +IFLA_GSO_MAX_SIZE = 41, +IFLA_PAD = 42, +IFLA_XDP = 43, +IFLA_EVENT = 44, +IFLA_NEW_NETNSID = 45, +IFLA_IF_NETNSID = 46, +IFLA_CARRIER_UP_COUNT = 47, +IFLA_CARRIER_DOWN_COUNT = 48, +IFLA_NEW_IFINDEX = 49, +IFLA_MIN_MTU = 50, +IFLA_MAX_MTU = 51, +IFLA_PROP_LIST = 52, +IFLA_ALT_IFNAME = 53, +IFLA_PERM_ADDRESS = 54, +IFLA_PROTO_DOWN_REASON = 55, +IFLA_PARENT_DEV_NAME = 56, +IFLA_PARENT_DEV_BUS_NAME = 57, +IFLA_GRO_MAX_SIZE = 58, +IFLA_TSO_MAX_SIZE = 59, +IFLA_TSO_MAX_SEGS = 60, +IFLA_ALLMULTI = 61, +IFLA_DEVLINK_PORT = 62, +IFLA_GSO_IPV4_MAX_SIZE = 63, +IFLA_GRO_IPV4_MAX_SIZE = 64, +__IFLA_MAX = 65, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IFLA_PROTO_DOWN_REASON_UNSPEC = 0, +IFLA_PROTO_DOWN_REASON_MASK = 1, +IFLA_PROTO_DOWN_REASON_VALUE = 2, +__IFLA_PROTO_DOWN_REASON_CNT = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IFLA_INET_UNSPEC = 0, +IFLA_INET_CONF = 1, +__IFLA_INET_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IFLA_INET6_UNSPEC = 0, +IFLA_INET6_FLAGS = 1, +IFLA_INET6_CONF = 2, +IFLA_INET6_STATS = 3, +IFLA_INET6_MCAST = 4, +IFLA_INET6_CACHEINFO = 5, +IFLA_INET6_ICMP6STATS = 6, +IFLA_INET6_TOKEN = 7, +IFLA_INET6_ADDR_GEN_MODE = 8, +IFLA_INET6_RA_MTU = 9, +__IFLA_INET6_MAX = 10, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum in6_addr_gen_mode { +IN6_ADDR_GEN_MODE_EUI64 = 0, +IN6_ADDR_GEN_MODE_NONE = 1, +IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, +IN6_ADDR_GEN_MODE_RANDOM = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IFLA_BR_UNSPEC = 0, +IFLA_BR_FORWARD_DELAY = 1, +IFLA_BR_HELLO_TIME = 2, +IFLA_BR_MAX_AGE = 3, +IFLA_BR_AGEING_TIME = 4, +IFLA_BR_STP_STATE = 5, +IFLA_BR_PRIORITY = 6, +IFLA_BR_VLAN_FILTERING = 7, +IFLA_BR_VLAN_PROTOCOL = 8, +IFLA_BR_GROUP_FWD_MASK = 9, +IFLA_BR_ROOT_ID = 10, +IFLA_BR_BRIDGE_ID = 11, +IFLA_BR_ROOT_PORT = 12, +IFLA_BR_ROOT_PATH_COST = 13, +IFLA_BR_TOPOLOGY_CHANGE = 14, +IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15, +IFLA_BR_HELLO_TIMER = 16, +IFLA_BR_TCN_TIMER = 17, +IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18, +IFLA_BR_GC_TIMER = 19, +IFLA_BR_GROUP_ADDR = 20, +IFLA_BR_FDB_FLUSH = 21, +IFLA_BR_MCAST_ROUTER = 22, +IFLA_BR_MCAST_SNOOPING = 23, +IFLA_BR_MCAST_QUERY_USE_IFADDR = 24, +IFLA_BR_MCAST_QUERIER = 25, +IFLA_BR_MCAST_HASH_ELASTICITY = 26, +IFLA_BR_MCAST_HASH_MAX = 27, +IFLA_BR_MCAST_LAST_MEMBER_CNT = 28, +IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29, +IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30, +IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, +IFLA_BR_MCAST_QUERIER_INTVL = 32, +IFLA_BR_MCAST_QUERY_INTVL = 33, +IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, +IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, +IFLA_BR_NF_CALL_IPTABLES = 36, +IFLA_BR_NF_CALL_IP6TABLES = 37, +IFLA_BR_NF_CALL_ARPTABLES = 38, +IFLA_BR_VLAN_DEFAULT_PVID = 39, +IFLA_BR_PAD = 40, +IFLA_BR_VLAN_STATS_ENABLED = 41, +IFLA_BR_MCAST_STATS_ENABLED = 42, +IFLA_BR_MCAST_IGMP_VERSION = 43, +IFLA_BR_MCAST_MLD_VERSION = 44, +IFLA_BR_VLAN_STATS_PER_PORT = 45, +IFLA_BR_MULTI_BOOLOPT = 46, +IFLA_BR_MCAST_QUERIER_STATE = 47, +__IFLA_BR_MAX = 48, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +BRIDGE_MODE_UNSPEC = 0, +BRIDGE_MODE_HAIRPIN = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_8 { +IFLA_BRPORT_UNSPEC = 0, +IFLA_BRPORT_STATE = 1, +IFLA_BRPORT_PRIORITY = 2, +IFLA_BRPORT_COST = 3, +IFLA_BRPORT_MODE = 4, +IFLA_BRPORT_GUARD = 5, +IFLA_BRPORT_PROTECT = 6, +IFLA_BRPORT_FAST_LEAVE = 7, +IFLA_BRPORT_LEARNING = 8, +IFLA_BRPORT_UNICAST_FLOOD = 9, +IFLA_BRPORT_PROXYARP = 10, +IFLA_BRPORT_LEARNING_SYNC = 11, +IFLA_BRPORT_PROXYARP_WIFI = 12, +IFLA_BRPORT_ROOT_ID = 13, +IFLA_BRPORT_BRIDGE_ID = 14, +IFLA_BRPORT_DESIGNATED_PORT = 15, +IFLA_BRPORT_DESIGNATED_COST = 16, +IFLA_BRPORT_ID = 17, +IFLA_BRPORT_NO = 18, +IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19, +IFLA_BRPORT_CONFIG_PENDING = 20, +IFLA_BRPORT_MESSAGE_AGE_TIMER = 21, +IFLA_BRPORT_FORWARD_DELAY_TIMER = 22, +IFLA_BRPORT_HOLD_TIMER = 23, +IFLA_BRPORT_FLUSH = 24, +IFLA_BRPORT_MULTICAST_ROUTER = 25, +IFLA_BRPORT_PAD = 26, +IFLA_BRPORT_MCAST_FLOOD = 27, +IFLA_BRPORT_MCAST_TO_UCAST = 28, +IFLA_BRPORT_VLAN_TUNNEL = 29, +IFLA_BRPORT_BCAST_FLOOD = 30, +IFLA_BRPORT_GROUP_FWD_MASK = 31, +IFLA_BRPORT_NEIGH_SUPPRESS = 32, +IFLA_BRPORT_ISOLATED = 33, +IFLA_BRPORT_BACKUP_PORT = 34, +IFLA_BRPORT_MRP_RING_OPEN = 35, +IFLA_BRPORT_MRP_IN_OPEN = 36, +IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37, +IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38, +IFLA_BRPORT_LOCKED = 39, +IFLA_BRPORT_MAB = 40, +IFLA_BRPORT_MCAST_N_GROUPS = 41, +IFLA_BRPORT_MCAST_MAX_GROUPS = 42, +IFLA_BRPORT_NEIGH_VLAN_SUPPRESS = 43, +__IFLA_BRPORT_MAX = 44, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_9 { +IFLA_INFO_UNSPEC = 0, +IFLA_INFO_KIND = 1, +IFLA_INFO_DATA = 2, +IFLA_INFO_XSTATS = 3, +IFLA_INFO_SLAVE_KIND = 4, +IFLA_INFO_SLAVE_DATA = 5, +__IFLA_INFO_MAX = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_10 { +IFLA_VLAN_UNSPEC = 0, +IFLA_VLAN_ID = 1, +IFLA_VLAN_FLAGS = 2, +IFLA_VLAN_EGRESS_QOS = 3, +IFLA_VLAN_INGRESS_QOS = 4, +IFLA_VLAN_PROTOCOL = 5, +__IFLA_VLAN_MAX = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_11 { +IFLA_VLAN_QOS_UNSPEC = 0, +IFLA_VLAN_QOS_MAPPING = 1, +__IFLA_VLAN_QOS_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_12 { +IFLA_MACVLAN_UNSPEC = 0, +IFLA_MACVLAN_MODE = 1, +IFLA_MACVLAN_FLAGS = 2, +IFLA_MACVLAN_MACADDR_MODE = 3, +IFLA_MACVLAN_MACADDR = 4, +IFLA_MACVLAN_MACADDR_DATA = 5, +IFLA_MACVLAN_MACADDR_COUNT = 6, +IFLA_MACVLAN_BC_QUEUE_LEN = 7, +IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8, +IFLA_MACVLAN_BC_CUTOFF = 9, +__IFLA_MACVLAN_MAX = 10, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum macvlan_mode { +MACVLAN_MODE_PRIVATE = 1, +MACVLAN_MODE_VEPA = 2, +MACVLAN_MODE_BRIDGE = 4, +MACVLAN_MODE_PASSTHRU = 8, +MACVLAN_MODE_SOURCE = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum macvlan_macaddr_mode { +MACVLAN_MACADDR_ADD = 0, +MACVLAN_MACADDR_DEL = 1, +MACVLAN_MACADDR_FLUSH = 2, +MACVLAN_MACADDR_SET = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_13 { +IFLA_VRF_UNSPEC = 0, +IFLA_VRF_TABLE = 1, +__IFLA_VRF_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_14 { +IFLA_VRF_PORT_UNSPEC = 0, +IFLA_VRF_PORT_TABLE = 1, +__IFLA_VRF_PORT_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_15 { +IFLA_MACSEC_UNSPEC = 0, +IFLA_MACSEC_SCI = 1, +IFLA_MACSEC_PORT = 2, +IFLA_MACSEC_ICV_LEN = 3, +IFLA_MACSEC_CIPHER_SUITE = 4, +IFLA_MACSEC_WINDOW = 5, +IFLA_MACSEC_ENCODING_SA = 6, +IFLA_MACSEC_ENCRYPT = 7, +IFLA_MACSEC_PROTECT = 8, +IFLA_MACSEC_INC_SCI = 9, +IFLA_MACSEC_ES = 10, +IFLA_MACSEC_SCB = 11, +IFLA_MACSEC_REPLAY_PROTECT = 12, +IFLA_MACSEC_VALIDATION = 13, +IFLA_MACSEC_PAD = 14, +IFLA_MACSEC_OFFLOAD = 15, +__IFLA_MACSEC_MAX = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_16 { +IFLA_XFRM_UNSPEC = 0, +IFLA_XFRM_LINK = 1, +IFLA_XFRM_IF_ID = 2, +IFLA_XFRM_COLLECT_METADATA = 3, +__IFLA_XFRM_MAX = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum macsec_validation_type { +MACSEC_VALIDATE_DISABLED = 0, +MACSEC_VALIDATE_CHECK = 1, +MACSEC_VALIDATE_STRICT = 2, +__MACSEC_VALIDATE_END = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum macsec_offload { +MACSEC_OFFLOAD_OFF = 0, +MACSEC_OFFLOAD_PHY = 1, +MACSEC_OFFLOAD_MAC = 2, +__MACSEC_OFFLOAD_END = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_17 { +IFLA_IPVLAN_UNSPEC = 0, +IFLA_IPVLAN_MODE = 1, +IFLA_IPVLAN_FLAGS = 2, +__IFLA_IPVLAN_MAX = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum ipvlan_mode { +IPVLAN_MODE_L2 = 0, +IPVLAN_MODE_L3 = 1, +IPVLAN_MODE_L3S = 2, +IPVLAN_MODE_MAX = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_18 { +VNIFILTER_ENTRY_STATS_UNSPEC = 0, +VNIFILTER_ENTRY_STATS_RX_BYTES = 1, +VNIFILTER_ENTRY_STATS_RX_PKTS = 2, +VNIFILTER_ENTRY_STATS_RX_DROPS = 3, +VNIFILTER_ENTRY_STATS_RX_ERRORS = 4, +VNIFILTER_ENTRY_STATS_TX_BYTES = 5, +VNIFILTER_ENTRY_STATS_TX_PKTS = 6, +VNIFILTER_ENTRY_STATS_TX_DROPS = 7, +VNIFILTER_ENTRY_STATS_TX_ERRORS = 8, +VNIFILTER_ENTRY_STATS_PAD = 9, +__VNIFILTER_ENTRY_STATS_MAX = 10, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_19 { +VXLAN_VNIFILTER_ENTRY_UNSPEC = 0, +VXLAN_VNIFILTER_ENTRY_START = 1, +VXLAN_VNIFILTER_ENTRY_END = 2, +VXLAN_VNIFILTER_ENTRY_GROUP = 3, +VXLAN_VNIFILTER_ENTRY_GROUP6 = 4, +VXLAN_VNIFILTER_ENTRY_STATS = 5, +__VXLAN_VNIFILTER_ENTRY_MAX = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_20 { +VXLAN_VNIFILTER_UNSPEC = 0, +VXLAN_VNIFILTER_ENTRY = 1, +__VXLAN_VNIFILTER_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_21 { +IFLA_VXLAN_UNSPEC = 0, +IFLA_VXLAN_ID = 1, +IFLA_VXLAN_GROUP = 2, +IFLA_VXLAN_LINK = 3, +IFLA_VXLAN_LOCAL = 4, +IFLA_VXLAN_TTL = 5, +IFLA_VXLAN_TOS = 6, +IFLA_VXLAN_LEARNING = 7, +IFLA_VXLAN_AGEING = 8, +IFLA_VXLAN_LIMIT = 9, +IFLA_VXLAN_PORT_RANGE = 10, +IFLA_VXLAN_PROXY = 11, +IFLA_VXLAN_RSC = 12, +IFLA_VXLAN_L2MISS = 13, +IFLA_VXLAN_L3MISS = 14, +IFLA_VXLAN_PORT = 15, +IFLA_VXLAN_GROUP6 = 16, +IFLA_VXLAN_LOCAL6 = 17, +IFLA_VXLAN_UDP_CSUM = 18, +IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19, +IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20, +IFLA_VXLAN_REMCSUM_TX = 21, +IFLA_VXLAN_REMCSUM_RX = 22, +IFLA_VXLAN_GBP = 23, +IFLA_VXLAN_REMCSUM_NOPARTIAL = 24, +IFLA_VXLAN_COLLECT_METADATA = 25, +IFLA_VXLAN_LABEL = 26, +IFLA_VXLAN_GPE = 27, +IFLA_VXLAN_TTL_INHERIT = 28, +IFLA_VXLAN_DF = 29, +IFLA_VXLAN_VNIFILTER = 30, +__IFLA_VXLAN_MAX = 31, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum ifla_vxlan_df { +VXLAN_DF_UNSET = 0, +VXLAN_DF_SET = 1, +VXLAN_DF_INHERIT = 2, +__VXLAN_DF_END = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_22 { +IFLA_GENEVE_UNSPEC = 0, +IFLA_GENEVE_ID = 1, +IFLA_GENEVE_REMOTE = 2, +IFLA_GENEVE_TTL = 3, +IFLA_GENEVE_TOS = 4, +IFLA_GENEVE_PORT = 5, +IFLA_GENEVE_COLLECT_METADATA = 6, +IFLA_GENEVE_REMOTE6 = 7, +IFLA_GENEVE_UDP_CSUM = 8, +IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9, +IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10, +IFLA_GENEVE_LABEL = 11, +IFLA_GENEVE_TTL_INHERIT = 12, +IFLA_GENEVE_DF = 13, +IFLA_GENEVE_INNER_PROTO_INHERIT = 14, +__IFLA_GENEVE_MAX = 15, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum ifla_geneve_df { +GENEVE_DF_UNSET = 0, +GENEVE_DF_SET = 1, +GENEVE_DF_INHERIT = 2, +__GENEVE_DF_END = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_23 { +IFLA_BAREUDP_UNSPEC = 0, +IFLA_BAREUDP_PORT = 1, +IFLA_BAREUDP_ETHERTYPE = 2, +IFLA_BAREUDP_SRCPORT_MIN = 3, +IFLA_BAREUDP_MULTIPROTO_MODE = 4, +__IFLA_BAREUDP_MAX = 5, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_24 { +IFLA_PPP_UNSPEC = 0, +IFLA_PPP_DEV_FD = 1, +__IFLA_PPP_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum ifla_gtp_role { +GTP_ROLE_GGSN = 0, +GTP_ROLE_SGSN = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_25 { +IFLA_GTP_UNSPEC = 0, +IFLA_GTP_FD0 = 1, +IFLA_GTP_FD1 = 2, +IFLA_GTP_PDP_HASHSIZE = 3, +IFLA_GTP_ROLE = 4, +IFLA_GTP_CREATE_SOCKETS = 5, +IFLA_GTP_RESTART_COUNT = 6, +__IFLA_GTP_MAX = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_26 { +IFLA_BOND_UNSPEC = 0, +IFLA_BOND_MODE = 1, +IFLA_BOND_ACTIVE_SLAVE = 2, +IFLA_BOND_MIIMON = 3, +IFLA_BOND_UPDELAY = 4, +IFLA_BOND_DOWNDELAY = 5, +IFLA_BOND_USE_CARRIER = 6, +IFLA_BOND_ARP_INTERVAL = 7, +IFLA_BOND_ARP_IP_TARGET = 8, +IFLA_BOND_ARP_VALIDATE = 9, +IFLA_BOND_ARP_ALL_TARGETS = 10, +IFLA_BOND_PRIMARY = 11, +IFLA_BOND_PRIMARY_RESELECT = 12, +IFLA_BOND_FAIL_OVER_MAC = 13, +IFLA_BOND_XMIT_HASH_POLICY = 14, +IFLA_BOND_RESEND_IGMP = 15, +IFLA_BOND_NUM_PEER_NOTIF = 16, +IFLA_BOND_ALL_SLAVES_ACTIVE = 17, +IFLA_BOND_MIN_LINKS = 18, +IFLA_BOND_LP_INTERVAL = 19, +IFLA_BOND_PACKETS_PER_SLAVE = 20, +IFLA_BOND_AD_LACP_RATE = 21, +IFLA_BOND_AD_SELECT = 22, +IFLA_BOND_AD_INFO = 23, +IFLA_BOND_AD_ACTOR_SYS_PRIO = 24, +IFLA_BOND_AD_USER_PORT_KEY = 25, +IFLA_BOND_AD_ACTOR_SYSTEM = 26, +IFLA_BOND_TLB_DYNAMIC_LB = 27, +IFLA_BOND_PEER_NOTIF_DELAY = 28, +IFLA_BOND_AD_LACP_ACTIVE = 29, +IFLA_BOND_MISSED_MAX = 30, +IFLA_BOND_NS_IP6_TARGET = 31, +__IFLA_BOND_MAX = 32, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_27 { +IFLA_BOND_AD_INFO_UNSPEC = 0, +IFLA_BOND_AD_INFO_AGGREGATOR = 1, +IFLA_BOND_AD_INFO_NUM_PORTS = 2, +IFLA_BOND_AD_INFO_ACTOR_KEY = 3, +IFLA_BOND_AD_INFO_PARTNER_KEY = 4, +IFLA_BOND_AD_INFO_PARTNER_MAC = 5, +__IFLA_BOND_AD_INFO_MAX = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_28 { +IFLA_BOND_SLAVE_UNSPEC = 0, +IFLA_BOND_SLAVE_STATE = 1, +IFLA_BOND_SLAVE_MII_STATUS = 2, +IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3, +IFLA_BOND_SLAVE_PERM_HWADDR = 4, +IFLA_BOND_SLAVE_QUEUE_ID = 5, +IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6, +IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7, +IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8, +IFLA_BOND_SLAVE_PRIO = 9, +__IFLA_BOND_SLAVE_MAX = 10, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_29 { +IFLA_VF_INFO_UNSPEC = 0, +IFLA_VF_INFO = 1, +__IFLA_VF_INFO_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_30 { +IFLA_VF_UNSPEC = 0, +IFLA_VF_MAC = 1, +IFLA_VF_VLAN = 2, +IFLA_VF_TX_RATE = 3, +IFLA_VF_SPOOFCHK = 4, +IFLA_VF_LINK_STATE = 5, +IFLA_VF_RATE = 6, +IFLA_VF_RSS_QUERY_EN = 7, +IFLA_VF_STATS = 8, +IFLA_VF_TRUST = 9, +IFLA_VF_IB_NODE_GUID = 10, +IFLA_VF_IB_PORT_GUID = 11, +IFLA_VF_VLAN_LIST = 12, +IFLA_VF_BROADCAST = 13, +__IFLA_VF_MAX = 14, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_31 { +IFLA_VF_VLAN_INFO_UNSPEC = 0, +IFLA_VF_VLAN_INFO = 1, +__IFLA_VF_VLAN_INFO_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_32 { +IFLA_VF_LINK_STATE_AUTO = 0, +IFLA_VF_LINK_STATE_ENABLE = 1, +IFLA_VF_LINK_STATE_DISABLE = 2, +__IFLA_VF_LINK_STATE_MAX = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_33 { +IFLA_VF_STATS_RX_PACKETS = 0, +IFLA_VF_STATS_TX_PACKETS = 1, +IFLA_VF_STATS_RX_BYTES = 2, +IFLA_VF_STATS_TX_BYTES = 3, +IFLA_VF_STATS_BROADCAST = 4, +IFLA_VF_STATS_MULTICAST = 5, +IFLA_VF_STATS_PAD = 6, +IFLA_VF_STATS_RX_DROPPED = 7, +IFLA_VF_STATS_TX_DROPPED = 8, +__IFLA_VF_STATS_MAX = 9, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_34 { +IFLA_VF_PORT_UNSPEC = 0, +IFLA_VF_PORT = 1, +__IFLA_VF_PORT_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_35 { +IFLA_PORT_UNSPEC = 0, +IFLA_PORT_VF = 1, +IFLA_PORT_PROFILE = 2, +IFLA_PORT_VSI_TYPE = 3, +IFLA_PORT_INSTANCE_UUID = 4, +IFLA_PORT_HOST_UUID = 5, +IFLA_PORT_REQUEST = 6, +IFLA_PORT_RESPONSE = 7, +__IFLA_PORT_MAX = 8, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_36 { +PORT_REQUEST_PREASSOCIATE = 0, +PORT_REQUEST_PREASSOCIATE_RR = 1, +PORT_REQUEST_ASSOCIATE = 2, +PORT_REQUEST_DISASSOCIATE = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_37 { +PORT_VDP_RESPONSE_SUCCESS = 0, +PORT_VDP_RESPONSE_INVALID_FORMAT = 1, +PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2, +PORT_VDP_RESPONSE_UNUSED_VTID = 3, +PORT_VDP_RESPONSE_VTID_VIOLATION = 4, +PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5, +PORT_VDP_RESPONSE_OUT_OF_SYNC = 6, +PORT_PROFILE_RESPONSE_SUCCESS = 256, +PORT_PROFILE_RESPONSE_INPROGRESS = 257, +PORT_PROFILE_RESPONSE_INVALID = 258, +PORT_PROFILE_RESPONSE_BADSTATE = 259, +PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, +PORT_PROFILE_RESPONSE_ERROR = 261, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_38 { +IFLA_IPOIB_UNSPEC = 0, +IFLA_IPOIB_PKEY = 1, +IFLA_IPOIB_MODE = 2, +IFLA_IPOIB_UMCAST = 3, +__IFLA_IPOIB_MAX = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_39 { +IPOIB_MODE_DATAGRAM = 0, +IPOIB_MODE_CONNECTED = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_40 { +HSR_PROTOCOL_HSR = 0, +HSR_PROTOCOL_PRP = 1, +HSR_PROTOCOL_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_41 { +IFLA_HSR_UNSPEC = 0, +IFLA_HSR_SLAVE1 = 1, +IFLA_HSR_SLAVE2 = 2, +IFLA_HSR_MULTICAST_SPEC = 3, +IFLA_HSR_SUPERVISION_ADDR = 4, +IFLA_HSR_SEQ_NR = 5, +IFLA_HSR_VERSION = 6, +IFLA_HSR_PROTOCOL = 7, +__IFLA_HSR_MAX = 8, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_42 { +IFLA_STATS_UNSPEC = 0, +IFLA_STATS_LINK_64 = 1, +IFLA_STATS_LINK_XSTATS = 2, +IFLA_STATS_LINK_XSTATS_SLAVE = 3, +IFLA_STATS_LINK_OFFLOAD_XSTATS = 4, +IFLA_STATS_AF_SPEC = 5, +__IFLA_STATS_MAX = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_43 { +IFLA_STATS_GETSET_UNSPEC = 0, +IFLA_STATS_GET_FILTERS = 1, +IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, +__IFLA_STATS_GETSET_MAX = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_44 { +LINK_XSTATS_TYPE_UNSPEC = 0, +LINK_XSTATS_TYPE_BRIDGE = 1, +LINK_XSTATS_TYPE_BOND = 2, +__LINK_XSTATS_TYPE_MAX = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_45 { +IFLA_OFFLOAD_XSTATS_UNSPEC = 0, +IFLA_OFFLOAD_XSTATS_CPU_HIT = 1, +IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2, +IFLA_OFFLOAD_XSTATS_L3_STATS = 3, +__IFLA_OFFLOAD_XSTATS_MAX = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_46 { +IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0, +IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1, +IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, +__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_47 { +XDP_ATTACHED_NONE = 0, +XDP_ATTACHED_DRV = 1, +XDP_ATTACHED_SKB = 2, +XDP_ATTACHED_HW = 3, +XDP_ATTACHED_MULTI = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_48 { +IFLA_XDP_UNSPEC = 0, +IFLA_XDP_FD = 1, +IFLA_XDP_ATTACHED = 2, +IFLA_XDP_FLAGS = 3, +IFLA_XDP_PROG_ID = 4, +IFLA_XDP_DRV_PROG_ID = 5, +IFLA_XDP_SKB_PROG_ID = 6, +IFLA_XDP_HW_PROG_ID = 7, +IFLA_XDP_EXPECTED_FD = 8, +__IFLA_XDP_MAX = 9, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_49 { +IFLA_EVENT_NONE = 0, +IFLA_EVENT_REBOOT = 1, +IFLA_EVENT_FEATURES = 2, +IFLA_EVENT_BONDING_FAILOVER = 3, +IFLA_EVENT_NOTIFY_PEERS = 4, +IFLA_EVENT_IGMP_RESEND = 5, +IFLA_EVENT_BONDING_OPTIONS = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_50 { +IFLA_TUN_UNSPEC = 0, +IFLA_TUN_OWNER = 1, +IFLA_TUN_GROUP = 2, +IFLA_TUN_TYPE = 3, +IFLA_TUN_PI = 4, +IFLA_TUN_VNET_HDR = 5, +IFLA_TUN_PERSIST = 6, +IFLA_TUN_MULTI_QUEUE = 7, +IFLA_TUN_NUM_QUEUES = 8, +IFLA_TUN_NUM_DISABLED_QUEUES = 9, +__IFLA_TUN_MAX = 10, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_51 { +IFLA_RMNET_UNSPEC = 0, +IFLA_RMNET_MUX_ID = 1, +IFLA_RMNET_FLAGS = 2, +__IFLA_RMNET_MAX = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_52 { +IFLA_MCTP_UNSPEC = 0, +IFLA_MCTP_NET = 1, +__IFLA_MCTP_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_53 { +IFLA_DSA_UNSPEC = 0, +IFLA_DSA_MASTER = 1, +__IFLA_DSA_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_54 { +IFA_UNSPEC = 0, +IFA_ADDRESS = 1, +IFA_LOCAL = 2, +IFA_LABEL = 3, +IFA_BROADCAST = 4, +IFA_ANYCAST = 5, +IFA_CACHEINFO = 6, +IFA_MULTICAST = 7, +IFA_FLAGS = 8, +IFA_RT_PRIORITY = 9, +IFA_TARGET_NETNSID = 10, +IFA_PROTO = 11, +__IFA_MAX = 12, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_55 { +NDA_UNSPEC = 0, +NDA_DST = 1, +NDA_LLADDR = 2, +NDA_CACHEINFO = 3, +NDA_PROBES = 4, +NDA_VLAN = 5, +NDA_PORT = 6, +NDA_VNI = 7, +NDA_IFINDEX = 8, +NDA_MASTER = 9, +NDA_LINK_NETNSID = 10, +NDA_SRC_VNI = 11, +NDA_PROTOCOL = 12, +NDA_NH_ID = 13, +NDA_FDB_EXT_ATTRS = 14, +NDA_FLAGS_EXT = 15, +NDA_NDM_STATE_MASK = 16, +NDA_NDM_FLAGS_MASK = 17, +__NDA_MAX = 18, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_56 { +NDTPA_UNSPEC = 0, +NDTPA_IFINDEX = 1, +NDTPA_REFCNT = 2, +NDTPA_REACHABLE_TIME = 3, +NDTPA_BASE_REACHABLE_TIME = 4, +NDTPA_RETRANS_TIME = 5, +NDTPA_GC_STALETIME = 6, +NDTPA_DELAY_PROBE_TIME = 7, +NDTPA_QUEUE_LEN = 8, +NDTPA_APP_PROBES = 9, +NDTPA_UCAST_PROBES = 10, +NDTPA_MCAST_PROBES = 11, +NDTPA_ANYCAST_DELAY = 12, +NDTPA_PROXY_DELAY = 13, +NDTPA_PROXY_QLEN = 14, +NDTPA_LOCKTIME = 15, +NDTPA_QUEUE_LENBYTES = 16, +NDTPA_MCAST_REPROBES = 17, +NDTPA_PAD = 18, +NDTPA_INTERVAL_PROBE_TIME_MS = 19, +__NDTPA_MAX = 20, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_57 { +NDTA_UNSPEC = 0, +NDTA_NAME = 1, +NDTA_THRESH1 = 2, +NDTA_THRESH2 = 3, +NDTA_THRESH3 = 4, +NDTA_CONFIG = 5, +NDTA_PARMS = 6, +NDTA_STATS = 7, +NDTA_GC_INTERVAL = 8, +NDTA_PAD = 9, +__NDTA_MAX = 10, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_58 { +FDB_NOTIFY_BIT = 1, +FDB_NOTIFY_INACTIVE_BIT = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_59 { +NFEA_UNSPEC = 0, +NFEA_ACTIVITY_NOTIFY = 1, +NFEA_DONT_REFRESH = 2, +__NFEA_MAX = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_60 { +RTM_BASE = 16, +RTM_DELLINK = 17, +RTM_GETLINK = 18, +RTM_SETLINK = 19, +RTM_NEWADDR = 20, +RTM_DELADDR = 21, +RTM_GETADDR = 22, +RTM_NEWROUTE = 24, +RTM_DELROUTE = 25, +RTM_GETROUTE = 26, +RTM_NEWNEIGH = 28, +RTM_DELNEIGH = 29, +RTM_GETNEIGH = 30, +RTM_NEWRULE = 32, +RTM_DELRULE = 33, +RTM_GETRULE = 34, +RTM_NEWQDISC = 36, +RTM_DELQDISC = 37, +RTM_GETQDISC = 38, +RTM_NEWTCLASS = 40, +RTM_DELTCLASS = 41, +RTM_GETTCLASS = 42, +RTM_NEWTFILTER = 44, +RTM_DELTFILTER = 45, +RTM_GETTFILTER = 46, +RTM_NEWACTION = 48, +RTM_DELACTION = 49, +RTM_GETACTION = 50, +RTM_NEWPREFIX = 52, +RTM_GETMULTICAST = 58, +RTM_GETANYCAST = 62, +RTM_NEWNEIGHTBL = 64, +RTM_GETNEIGHTBL = 66, +RTM_SETNEIGHTBL = 67, +RTM_NEWNDUSEROPT = 68, +RTM_NEWADDRLABEL = 72, +RTM_DELADDRLABEL = 73, +RTM_GETADDRLABEL = 74, +RTM_GETDCB = 78, +RTM_SETDCB = 79, +RTM_NEWNETCONF = 80, +RTM_DELNETCONF = 81, +RTM_GETNETCONF = 82, +RTM_NEWMDB = 84, +RTM_DELMDB = 85, +RTM_GETMDB = 86, +RTM_NEWNSID = 88, +RTM_DELNSID = 89, +RTM_GETNSID = 90, +RTM_NEWSTATS = 92, +RTM_GETSTATS = 94, +RTM_SETSTATS = 95, +RTM_NEWCACHEREPORT = 96, +RTM_NEWCHAIN = 100, +RTM_DELCHAIN = 101, +RTM_GETCHAIN = 102, +RTM_NEWNEXTHOP = 104, +RTM_DELNEXTHOP = 105, +RTM_GETNEXTHOP = 106, +RTM_NEWLINKPROP = 108, +RTM_DELLINKPROP = 109, +RTM_GETLINKPROP = 110, +RTM_NEWVLAN = 112, +RTM_DELVLAN = 113, +RTM_GETVLAN = 114, +RTM_NEWNEXTHOPBUCKET = 116, +RTM_DELNEXTHOPBUCKET = 117, +RTM_GETNEXTHOPBUCKET = 118, +RTM_NEWTUNNEL = 120, +RTM_DELTUNNEL = 121, +RTM_GETTUNNEL = 122, +__RTM_MAX = 123, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_61 { +RTN_UNSPEC = 0, +RTN_UNICAST = 1, +RTN_LOCAL = 2, +RTN_BROADCAST = 3, +RTN_ANYCAST = 4, +RTN_MULTICAST = 5, +RTN_BLACKHOLE = 6, +RTN_UNREACHABLE = 7, +RTN_PROHIBIT = 8, +RTN_THROW = 9, +RTN_NAT = 10, +RTN_XRESOLVE = 11, +__RTN_MAX = 12, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum rt_scope_t { +RT_SCOPE_UNIVERSE = 0, +RT_SCOPE_SITE = 200, +RT_SCOPE_LINK = 253, +RT_SCOPE_HOST = 254, +RT_SCOPE_NOWHERE = 255, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum rt_class_t { +RT_TABLE_UNSPEC = 0, +RT_TABLE_COMPAT = 252, +RT_TABLE_DEFAULT = 253, +RT_TABLE_MAIN = 254, +RT_TABLE_LOCAL = 255, +RT_TABLE_MAX = 4294967295, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum rtattr_type_t { +RTA_UNSPEC = 0, +RTA_DST = 1, +RTA_SRC = 2, +RTA_IIF = 3, +RTA_OIF = 4, +RTA_GATEWAY = 5, +RTA_PRIORITY = 6, +RTA_PREFSRC = 7, +RTA_METRICS = 8, +RTA_MULTIPATH = 9, +RTA_PROTOINFO = 10, +RTA_FLOW = 11, +RTA_CACHEINFO = 12, +RTA_SESSION = 13, +RTA_MP_ALGO = 14, +RTA_TABLE = 15, +RTA_MARK = 16, +RTA_MFC_STATS = 17, +RTA_VIA = 18, +RTA_NEWDST = 19, +RTA_PREF = 20, +RTA_ENCAP_TYPE = 21, +RTA_ENCAP = 22, +RTA_EXPIRES = 23, +RTA_PAD = 24, +RTA_UID = 25, +RTA_TTL_PROPAGATE = 26, +RTA_IP_PROTO = 27, +RTA_SPORT = 28, +RTA_DPORT = 29, +RTA_NH_ID = 30, +__RTA_MAX = 31, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_62 { +RTAX_UNSPEC = 0, +RTAX_LOCK = 1, +RTAX_MTU = 2, +RTAX_WINDOW = 3, +RTAX_RTT = 4, +RTAX_RTTVAR = 5, +RTAX_SSTHRESH = 6, +RTAX_CWND = 7, +RTAX_ADVMSS = 8, +RTAX_REORDERING = 9, +RTAX_HOPLIMIT = 10, +RTAX_INITCWND = 11, +RTAX_FEATURES = 12, +RTAX_RTO_MIN = 13, +RTAX_INITRWND = 14, +RTAX_QUICKACK = 15, +RTAX_CC_ALGO = 16, +RTAX_FASTOPEN_NO_COOKIE = 17, +__RTAX_MAX = 18, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_63 { +PREFIX_UNSPEC = 0, +PREFIX_ADDRESS = 1, +PREFIX_CACHEINFO = 2, +__PREFIX_MAX = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_64 { +TCA_UNSPEC = 0, +TCA_KIND = 1, +TCA_OPTIONS = 2, +TCA_STATS = 3, +TCA_XSTATS = 4, +TCA_RATE = 5, +TCA_FCNT = 6, +TCA_STATS2 = 7, +TCA_STAB = 8, +TCA_PAD = 9, +TCA_DUMP_INVISIBLE = 10, +TCA_CHAIN = 11, +TCA_HW_OFFLOAD = 12, +TCA_INGRESS_BLOCK = 13, +TCA_EGRESS_BLOCK = 14, +TCA_DUMP_FLAGS = 15, +TCA_EXT_WARN_MSG = 16, +__TCA_MAX = 17, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_65 { +NDUSEROPT_UNSPEC = 0, +NDUSEROPT_SRCADDR = 1, +__NDUSEROPT_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum rtnetlink_groups { +RTNLGRP_NONE = 0, +RTNLGRP_LINK = 1, +RTNLGRP_NOTIFY = 2, +RTNLGRP_NEIGH = 3, +RTNLGRP_TC = 4, +RTNLGRP_IPV4_IFADDR = 5, +RTNLGRP_IPV4_MROUTE = 6, +RTNLGRP_IPV4_ROUTE = 7, +RTNLGRP_IPV4_RULE = 8, +RTNLGRP_IPV6_IFADDR = 9, +RTNLGRP_IPV6_MROUTE = 10, +RTNLGRP_IPV6_ROUTE = 11, +RTNLGRP_IPV6_IFINFO = 12, +RTNLGRP_DECnet_IFADDR = 13, +RTNLGRP_NOP2 = 14, +RTNLGRP_DECnet_ROUTE = 15, +RTNLGRP_DECnet_RULE = 16, +RTNLGRP_NOP4 = 17, +RTNLGRP_IPV6_PREFIX = 18, +RTNLGRP_IPV6_RULE = 19, +RTNLGRP_ND_USEROPT = 20, +RTNLGRP_PHONET_IFADDR = 21, +RTNLGRP_PHONET_ROUTE = 22, +RTNLGRP_DCB = 23, +RTNLGRP_IPV4_NETCONF = 24, +RTNLGRP_IPV6_NETCONF = 25, +RTNLGRP_MDB = 26, +RTNLGRP_MPLS_ROUTE = 27, +RTNLGRP_NSID = 28, +RTNLGRP_MPLS_NETCONF = 29, +RTNLGRP_IPV4_MROUTE_R = 30, +RTNLGRP_IPV6_MROUTE_R = 31, +RTNLGRP_NEXTHOP = 32, +RTNLGRP_BRVLAN = 33, +RTNLGRP_MCTP_IFADDR = 34, +RTNLGRP_TUNNEL = 35, +RTNLGRP_STATS = 36, +__RTNLGRP_MAX = 37, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_66 { +TCA_ROOT_UNSPEC = 0, +TCA_ROOT_TAB = 1, +TCA_ROOT_FLAGS = 2, +TCA_ROOT_COUNT = 3, +TCA_ROOT_TIME_DELTA = 4, +TCA_ROOT_EXT_WARN_MSG = 5, +__TCA_ROOT_MAX = 6, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union rta_session__bindgen_ty_1 { +pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, +pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, +pub spi: __u32, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl nlmsgerr_attrs { +pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +} +impl netlink_policy_type_attr { +pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; +} +impl macsec_validation_type { +pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; +} +impl macsec_offload { +pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; +} +impl ifla_vxlan_df { +pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; +} +impl ifla_geneve_df { +pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/net.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/net.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/net.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/net.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1868 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type socklen_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_addr { +pub s_addr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq { +pub imr_multiaddr: in_addr, +pub imr_interface: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreqn { +pub imr_multiaddr: in_addr, +pub imr_address: in_addr, +pub imr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq_source { +pub imr_multiaddr: __be32, +pub imr_interface: __be32, +pub imr_sourceaddr: __be32, +} +#[repr(C)] +pub struct ip_msfilter { +pub imsf_multiaddr: __be32, +pub imsf_interface: __be32, +pub imsf_fmode: __u32, +pub imsf_numsrc: __u32, +pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, +} +#[repr(C)] +pub struct ip_msfilter__bindgen_ty_1 { +pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, +pub __bindgen_anon_1: __BindgenUnionField, +pub bindgen_union_field: u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { +pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub imsf_slist_flex: __IncompleteArrayField<__be32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_req { +pub gr_interface: __u32, +pub gr_group: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_source_req { +pub gsr_interface: __u32, +pub gsr_group: __kernel_sockaddr_storage, +pub gsr_source: __kernel_sockaddr_storage, +} +#[repr(C)] +pub struct group_filter { +pub __bindgen_anon_1: group_filter__bindgen_ty_1, +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u32; 67usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { +pub gf_interface_aux: __u32, +pub gf_group_aux: __kernel_sockaddr_storage, +pub gf_fmode_aux: __u32, +pub gf_numsrc_aux: __u32, +pub gf_slist: [__kernel_sockaddr_storage; 1usize], +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { +pub gf_interface: __u32, +pub gf_group: __kernel_sockaddr_storage, +pub gf_fmode: __u32, +pub gf_numsrc: __u32, +pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_pktinfo { +pub ipi_ifindex: crate::ctypes::c_int, +pub ipi_spec_dst: in_addr, +pub ipi_addr: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_in { +pub sin_family: __kernel_sa_family_t, +pub sin_port: __be16, +pub sin_addr: in_addr, +pub __pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct iphdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub tos: __u8, +pub tot_len: __be16, +pub id: __be16, +pub frag_off: __be16, +pub ttl: __u8, +pub protocol: __u8, +pub check: __sum16, +pub __bindgen_anon_1: iphdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_auth_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub reserved: __be16, +pub spi: __be32, +pub seq_no: __be32, +pub auth_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_esp_hdr { +pub spi: __be32, +pub seq_no: __be32, +pub enc_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_comp_hdr { +pub nexthdr: __u8, +pub flags: __u8, +pub cpi: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_beet_phdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub padlen: __u8, +pub reserved: __u8, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_addr { +pub in6_u: in6_addr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr_in6 { +pub sin6_family: crate::ctypes::c_ushort, +pub sin6_port: __be16, +pub sin6_flowinfo: __be32, +pub sin6_addr: in6_addr, +pub sin6_scope_id: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6_mreq { +pub ipv6mr_multiaddr: in6_addr, +pub ipv6mr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_flowlabel_req { +pub flr_dst: in6_addr, +pub flr_label: __be32, +pub flr_action: __u8, +pub flr_share: __u8, +pub flr_flags: __u16, +pub flr_expires: __u16, +pub flr_linger: __u16, +pub __flr_pad: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_pktinfo { +pub ipi6_addr: in6_addr, +pub ipi6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ip6_mtuinfo { +pub ip6m_addr: sockaddr_in6, +pub ip6m_mtu: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_ifreq { +pub ifr6_addr: in6_addr, +pub ifr6_prefixlen: __u32, +pub ifr6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_rt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub type_: __u8, +pub segments_left: __u8, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_opt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +} +#[repr(C)] +pub struct rt0_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rt2_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: in6_addr, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct ipv6_destopt_hao { +pub type_: __u8, +pub length: __u8, +pub addr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub flow_lbl: [__u8; 3usize], +pub payload_len: __be16, +pub nexthdr: __u8, +pub hop_limit: __u8, +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcphdr { +pub source: __be16, +pub dest: __be16, +pub seq: __be32, +pub ack_seq: __be32, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub window: __be16, +pub check: __sum16, +pub urg_ptr: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_opt { +pub opt_code: __u32, +pub opt_val: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_window { +pub snd_wl1: __u32, +pub snd_wnd: __u32, +pub max_window: __u32, +pub rcv_wnd: __u32, +pub rcv_wup: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_info { +pub tcpi_state: __u8, +pub tcpi_ca_state: __u8, +pub tcpi_retransmits: __u8, +pub tcpi_probes: __u8, +pub tcpi_backoff: __u8, +pub tcpi_options: __u8, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub tcpi_rto: __u32, +pub tcpi_ato: __u32, +pub tcpi_snd_mss: __u32, +pub tcpi_rcv_mss: __u32, +pub tcpi_unacked: __u32, +pub tcpi_sacked: __u32, +pub tcpi_lost: __u32, +pub tcpi_retrans: __u32, +pub tcpi_fackets: __u32, +pub tcpi_last_data_sent: __u32, +pub tcpi_last_ack_sent: __u32, +pub tcpi_last_data_recv: __u32, +pub tcpi_last_ack_recv: __u32, +pub tcpi_pmtu: __u32, +pub tcpi_rcv_ssthresh: __u32, +pub tcpi_rtt: __u32, +pub tcpi_rttvar: __u32, +pub tcpi_snd_ssthresh: __u32, +pub tcpi_snd_cwnd: __u32, +pub tcpi_advmss: __u32, +pub tcpi_reordering: __u32, +pub tcpi_rcv_rtt: __u32, +pub tcpi_rcv_space: __u32, +pub tcpi_total_retrans: __u32, +pub tcpi_pacing_rate: __u64, +pub tcpi_max_pacing_rate: __u64, +pub tcpi_bytes_acked: __u64, +pub tcpi_bytes_received: __u64, +pub tcpi_segs_out: __u32, +pub tcpi_segs_in: __u32, +pub tcpi_notsent_bytes: __u32, +pub tcpi_min_rtt: __u32, +pub tcpi_data_segs_in: __u32, +pub tcpi_data_segs_out: __u32, +pub tcpi_delivery_rate: __u64, +pub tcpi_busy_time: __u64, +pub tcpi_rwnd_limited: __u64, +pub tcpi_sndbuf_limited: __u64, +pub tcpi_delivered: __u32, +pub tcpi_delivered_ce: __u32, +pub tcpi_bytes_sent: __u64, +pub tcpi_bytes_retrans: __u64, +pub tcpi_dsack_dups: __u32, +pub tcpi_reord_seen: __u32, +pub tcpi_rcv_ooopack: __u32, +pub tcpi_snd_wnd: __u32, +pub tcpi_rcv_wnd: __u32, +pub tcpi_rehash: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct tcp_md5sig { +pub tcpm_addr: __kernel_sockaddr_storage, +pub tcpm_flags: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_ifindex: crate::ctypes::c_int, +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_diag_md5sig { +pub tcpm_family: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_addr: [__be32; 4usize], +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_zerocopy_receive { +pub address: __u64, +pub length: __u32, +pub recv_skip_hint: __u32, +pub inq: __u32, +pub err: __s32, +pub copybuf_address: __u64, +pub copybuf_len: __s32, +pub flags: __u32, +pub msg_control: __u64, +pub msg_controllen: __u64, +pub msg_flags: __u32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_un { +pub sun_family: __kernel_sa_family_t, +pub sun_path: [crate::ctypes::c_char; 108usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr { +pub __storage: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct linger { +pub l_onoff: crate::ctypes::c_int, +pub l_linger: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct msghdr { +pub msg_name: *mut crate::ctypes::c_void, +pub msg_namelen: crate::ctypes::c_int, +pub msg_iov: *mut iovec, +pub msg_iovlen: usize, +pub msg_control: *mut crate::ctypes::c_void, +pub msg_controllen: usize, +pub msg_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct cmsghdr { +pub cmsg_len: usize, +pub cmsg_level: crate::ctypes::c_int, +pub cmsg_type: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ucred { +pub pid: __u32, +pub uid: __u32, +pub gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mmsghdr { +pub msg_hdr: msghdr, +pub msg_len: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub _address: u8, +} +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const IP_TOS: u32 = 1; +pub const IP_TTL: u32 = 2; +pub const IP_HDRINCL: u32 = 3; +pub const IP_OPTIONS: u32 = 4; +pub const IP_ROUTER_ALERT: u32 = 5; +pub const IP_RECVOPTS: u32 = 6; +pub const IP_RETOPTS: u32 = 7; +pub const IP_PKTINFO: u32 = 8; +pub const IP_PKTOPTIONS: u32 = 9; +pub const IP_MTU_DISCOVER: u32 = 10; +pub const IP_RECVERR: u32 = 11; +pub const IP_RECVTTL: u32 = 12; +pub const IP_RECVTOS: u32 = 13; +pub const IP_MTU: u32 = 14; +pub const IP_FREEBIND: u32 = 15; +pub const IP_IPSEC_POLICY: u32 = 16; +pub const IP_XFRM_POLICY: u32 = 17; +pub const IP_PASSSEC: u32 = 18; +pub const IP_TRANSPARENT: u32 = 19; +pub const IP_RECVRETOPTS: u32 = 7; +pub const IP_ORIGDSTADDR: u32 = 20; +pub const IP_RECVORIGDSTADDR: u32 = 20; +pub const IP_MINTTL: u32 = 21; +pub const IP_NODEFRAG: u32 = 22; +pub const IP_CHECKSUM: u32 = 23; +pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; +pub const IP_RECVFRAGSIZE: u32 = 25; +pub const IP_RECVERR_RFC4884: u32 = 26; +pub const IP_PMTUDISC_DONT: u32 = 0; +pub const IP_PMTUDISC_WANT: u32 = 1; +pub const IP_PMTUDISC_DO: u32 = 2; +pub const IP_PMTUDISC_PROBE: u32 = 3; +pub const IP_PMTUDISC_INTERFACE: u32 = 4; +pub const IP_PMTUDISC_OMIT: u32 = 5; +pub const IP_MULTICAST_IF: u32 = 32; +pub const IP_MULTICAST_TTL: u32 = 33; +pub const IP_MULTICAST_LOOP: u32 = 34; +pub const IP_ADD_MEMBERSHIP: u32 = 35; +pub const IP_DROP_MEMBERSHIP: u32 = 36; +pub const IP_UNBLOCK_SOURCE: u32 = 37; +pub const IP_BLOCK_SOURCE: u32 = 38; +pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; +pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; +pub const IP_MSFILTER: u32 = 41; +pub const MCAST_JOIN_GROUP: u32 = 42; +pub const MCAST_BLOCK_SOURCE: u32 = 43; +pub const MCAST_UNBLOCK_SOURCE: u32 = 44; +pub const MCAST_LEAVE_GROUP: u32 = 45; +pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; +pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; +pub const MCAST_MSFILTER: u32 = 48; +pub const IP_MULTICAST_ALL: u32 = 49; +pub const IP_UNICAST_IF: u32 = 50; +pub const IP_LOCAL_PORT_RANGE: u32 = 51; +pub const IP_PROTOCOL: u32 = 52; +pub const MCAST_EXCLUDE: u32 = 0; +pub const MCAST_INCLUDE: u32 = 1; +pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; +pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; +pub const __SOCK_SIZE__: u32 = 16; +pub const IN_CLASSA_NET: u32 = 4278190080; +pub const IN_CLASSA_NSHIFT: u32 = 24; +pub const IN_CLASSA_HOST: u32 = 16777215; +pub const IN_CLASSA_MAX: u32 = 128; +pub const IN_CLASSB_NET: u32 = 4294901760; +pub const IN_CLASSB_NSHIFT: u32 = 16; +pub const IN_CLASSB_HOST: u32 = 65535; +pub const IN_CLASSB_MAX: u32 = 65536; +pub const IN_CLASSC_NET: u32 = 4294967040; +pub const IN_CLASSC_NSHIFT: u32 = 8; +pub const IN_CLASSC_HOST: u32 = 255; +pub const IN_MULTICAST_NET: u32 = 3758096384; +pub const IN_CLASSE_NET: u32 = 4294967295; +pub const IN_CLASSE_NSHIFT: u32 = 0; +pub const IN_LOOPBACKNET: u32 = 127; +pub const INADDR_LOOPBACK: u32 = 2130706433; +pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; +pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; +pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; +pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; +pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; +pub const __BIG_ENDIAN: u32 = 4321; +pub const IPTOS_TOS_MASK: u32 = 30; +pub const IPTOS_LOWDELAY: u32 = 16; +pub const IPTOS_THROUGHPUT: u32 = 8; +pub const IPTOS_RELIABILITY: u32 = 4; +pub const IPTOS_MINCOST: u32 = 2; +pub const IPTOS_PREC_MASK: u32 = 224; +pub const IPTOS_PREC_NETCONTROL: u32 = 224; +pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; +pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; +pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; +pub const IPTOS_PREC_FLASH: u32 = 96; +pub const IPTOS_PREC_IMMEDIATE: u32 = 64; +pub const IPTOS_PREC_PRIORITY: u32 = 32; +pub const IPTOS_PREC_ROUTINE: u32 = 0; +pub const IPOPT_COPY: u32 = 128; +pub const IPOPT_CLASS_MASK: u32 = 96; +pub const IPOPT_NUMBER_MASK: u32 = 31; +pub const IPOPT_CONTROL: u32 = 0; +pub const IPOPT_RESERVED1: u32 = 32; +pub const IPOPT_MEASUREMENT: u32 = 64; +pub const IPOPT_RESERVED2: u32 = 96; +pub const IPOPT_END: u32 = 0; +pub const IPOPT_NOOP: u32 = 1; +pub const IPOPT_SEC: u32 = 130; +pub const IPOPT_LSRR: u32 = 131; +pub const IPOPT_TIMESTAMP: u32 = 68; +pub const IPOPT_CIPSO: u32 = 134; +pub const IPOPT_RR: u32 = 7; +pub const IPOPT_SID: u32 = 136; +pub const IPOPT_SSRR: u32 = 137; +pub const IPOPT_RA: u32 = 148; +pub const IPVERSION: u32 = 4; +pub const MAXTTL: u32 = 255; +pub const IPDEFTTL: u32 = 64; +pub const IPOPT_OPTVAL: u32 = 0; +pub const IPOPT_OLEN: u32 = 1; +pub const IPOPT_OFFSET: u32 = 2; +pub const IPOPT_MINOFF: u32 = 4; +pub const MAX_IPOPTLEN: u32 = 40; +pub const IPOPT_NOP: u32 = 1; +pub const IPOPT_EOL: u32 = 0; +pub const IPOPT_TS: u32 = 68; +pub const IPOPT_TS_TSONLY: u32 = 0; +pub const IPOPT_TS_TSANDADDR: u32 = 1; +pub const IPOPT_TS_PRESPEC: u32 = 3; +pub const IPV4_BEET_PHMAXLEN: u32 = 8; +pub const IPV6_FL_A_GET: u32 = 0; +pub const IPV6_FL_A_PUT: u32 = 1; +pub const IPV6_FL_A_RENEW: u32 = 2; +pub const IPV6_FL_F_CREATE: u32 = 1; +pub const IPV6_FL_F_EXCL: u32 = 2; +pub const IPV6_FL_F_REFLECT: u32 = 4; +pub const IPV6_FL_F_REMOTE: u32 = 8; +pub const IPV6_FL_S_NONE: u32 = 0; +pub const IPV6_FL_S_EXCL: u32 = 1; +pub const IPV6_FL_S_PROCESS: u32 = 2; +pub const IPV6_FL_S_USER: u32 = 3; +pub const IPV6_FL_S_ANY: u32 = 255; +pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; +pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; +pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; +pub const IPV6_PRIORITY_FILLER: u32 = 256; +pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; +pub const IPV6_PRIORITY_RESERVED1: u32 = 768; +pub const IPV6_PRIORITY_BULK: u32 = 1024; +pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; +pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; +pub const IPV6_PRIORITY_CONTROL: u32 = 1792; +pub const IPV6_PRIORITY_8: u32 = 2048; +pub const IPV6_PRIORITY_9: u32 = 2304; +pub const IPV6_PRIORITY_10: u32 = 2560; +pub const IPV6_PRIORITY_11: u32 = 2816; +pub const IPV6_PRIORITY_12: u32 = 3072; +pub const IPV6_PRIORITY_13: u32 = 3328; +pub const IPV6_PRIORITY_14: u32 = 3584; +pub const IPV6_PRIORITY_15: u32 = 3840; +pub const IPPROTO_HOPOPTS: u32 = 0; +pub const IPPROTO_ROUTING: u32 = 43; +pub const IPPROTO_FRAGMENT: u32 = 44; +pub const IPPROTO_ICMPV6: u32 = 58; +pub const IPPROTO_NONE: u32 = 59; +pub const IPPROTO_DSTOPTS: u32 = 60; +pub const IPPROTO_MH: u32 = 135; +pub const IPV6_TLV_PAD1: u32 = 0; +pub const IPV6_TLV_PADN: u32 = 1; +pub const IPV6_TLV_ROUTERALERT: u32 = 5; +pub const IPV6_TLV_CALIPSO: u32 = 7; +pub const IPV6_TLV_IOAM: u32 = 49; +pub const IPV6_TLV_JUMBO: u32 = 194; +pub const IPV6_TLV_HAO: u32 = 201; +pub const IPV6_ADDRFORM: u32 = 1; +pub const IPV6_2292PKTINFO: u32 = 2; +pub const IPV6_2292HOPOPTS: u32 = 3; +pub const IPV6_2292DSTOPTS: u32 = 4; +pub const IPV6_2292RTHDR: u32 = 5; +pub const IPV6_2292PKTOPTIONS: u32 = 6; +pub const IPV6_CHECKSUM: u32 = 7; +pub const IPV6_2292HOPLIMIT: u32 = 8; +pub const IPV6_NEXTHOP: u32 = 9; +pub const IPV6_AUTHHDR: u32 = 10; +pub const IPV6_FLOWINFO: u32 = 11; +pub const IPV6_UNICAST_HOPS: u32 = 16; +pub const IPV6_MULTICAST_IF: u32 = 17; +pub const IPV6_MULTICAST_HOPS: u32 = 18; +pub const IPV6_MULTICAST_LOOP: u32 = 19; +pub const IPV6_ADD_MEMBERSHIP: u32 = 20; +pub const IPV6_DROP_MEMBERSHIP: u32 = 21; +pub const IPV6_ROUTER_ALERT: u32 = 22; +pub const IPV6_MTU_DISCOVER: u32 = 23; +pub const IPV6_MTU: u32 = 24; +pub const IPV6_RECVERR: u32 = 25; +pub const IPV6_V6ONLY: u32 = 26; +pub const IPV6_JOIN_ANYCAST: u32 = 27; +pub const IPV6_LEAVE_ANYCAST: u32 = 28; +pub const IPV6_MULTICAST_ALL: u32 = 29; +pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; +pub const IPV6_RECVERR_RFC4884: u32 = 31; +pub const IPV6_PMTUDISC_DONT: u32 = 0; +pub const IPV6_PMTUDISC_WANT: u32 = 1; +pub const IPV6_PMTUDISC_DO: u32 = 2; +pub const IPV6_PMTUDISC_PROBE: u32 = 3; +pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; +pub const IPV6_PMTUDISC_OMIT: u32 = 5; +pub const IPV6_FLOWLABEL_MGR: u32 = 32; +pub const IPV6_FLOWINFO_SEND: u32 = 33; +pub const IPV6_IPSEC_POLICY: u32 = 34; +pub const IPV6_XFRM_POLICY: u32 = 35; +pub const IPV6_HDRINCL: u32 = 36; +pub const IPV6_RECVPKTINFO: u32 = 49; +pub const IPV6_PKTINFO: u32 = 50; +pub const IPV6_RECVHOPLIMIT: u32 = 51; +pub const IPV6_HOPLIMIT: u32 = 52; +pub const IPV6_RECVHOPOPTS: u32 = 53; +pub const IPV6_HOPOPTS: u32 = 54; +pub const IPV6_RTHDRDSTOPTS: u32 = 55; +pub const IPV6_RECVRTHDR: u32 = 56; +pub const IPV6_RTHDR: u32 = 57; +pub const IPV6_RECVDSTOPTS: u32 = 58; +pub const IPV6_DSTOPTS: u32 = 59; +pub const IPV6_RECVPATHMTU: u32 = 60; +pub const IPV6_PATHMTU: u32 = 61; +pub const IPV6_DONTFRAG: u32 = 62; +pub const IPV6_RECVTCLASS: u32 = 66; +pub const IPV6_TCLASS: u32 = 67; +pub const IPV6_AUTOFLOWLABEL: u32 = 70; +pub const IPV6_ADDR_PREFERENCES: u32 = 72; +pub const IPV6_PREFER_SRC_TMP: u32 = 1; +pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; +pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; +pub const IPV6_PREFER_SRC_COA: u32 = 4; +pub const IPV6_PREFER_SRC_HOME: u32 = 1024; +pub const IPV6_PREFER_SRC_CGA: u32 = 8; +pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; +pub const IPV6_MINHOPCOUNT: u32 = 73; +pub const IPV6_ORIGDSTADDR: u32 = 74; +pub const IPV6_RECVORIGDSTADDR: u32 = 74; +pub const IPV6_TRANSPARENT: u32 = 75; +pub const IPV6_UNICAST_IF: u32 = 76; +pub const IPV6_RECVFRAGSIZE: u32 = 77; +pub const IPV6_FREEBIND: u32 = 78; +pub const IPV6_MIN_MTU: u32 = 1280; +pub const IPV6_SRCRT_STRICT: u32 = 1; +pub const IPV6_SRCRT_TYPE_0: u32 = 0; +pub const IPV6_SRCRT_TYPE_2: u32 = 2; +pub const IPV6_SRCRT_TYPE_3: u32 = 3; +pub const IPV6_SRCRT_TYPE_4: u32 = 4; +pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 536805376; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const SIOCGSTAMP_OLD: u32 = 35078; +pub const SIOCGSTAMPNS_OLD: u32 = 35079; +pub const SOL_SOCKET: u32 = 65535; +pub const SO_DEBUG: u32 = 1; +pub const SO_REUSEADDR: u32 = 4; +pub const SO_KEEPALIVE: u32 = 8; +pub const SO_DONTROUTE: u32 = 16; +pub const SO_BROADCAST: u32 = 32; +pub const SO_LINGER: u32 = 128; +pub const SO_OOBINLINE: u32 = 256; +pub const SO_REUSEPORT: u32 = 512; +pub const SO_TYPE: u32 = 4104; +pub const SO_STYLE: u32 = 4104; +pub const SO_ERROR: u32 = 4103; +pub const SO_SNDBUF: u32 = 4097; +pub const SO_RCVBUF: u32 = 4098; +pub const SO_SNDLOWAT: u32 = 4099; +pub const SO_RCVLOWAT: u32 = 4100; +pub const SO_SNDTIMEO_OLD: u32 = 4101; +pub const SO_RCVTIMEO_OLD: u32 = 4102; +pub const SO_ACCEPTCONN: u32 = 4105; +pub const SO_PROTOCOL: u32 = 4136; +pub const SO_DOMAIN: u32 = 4137; +pub const SO_NO_CHECK: u32 = 11; +pub const SO_PRIORITY: u32 = 12; +pub const SO_BSDCOMPAT: u32 = 14; +pub const SO_PASSCRED: u32 = 17; +pub const SO_PEERCRED: u32 = 18; +pub const SO_SECURITY_AUTHENTICATION: u32 = 22; +pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; +pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; +pub const SO_BINDTODEVICE: u32 = 25; +pub const SO_ATTACH_FILTER: u32 = 26; +pub const SO_DETACH_FILTER: u32 = 27; +pub const SO_GET_FILTER: u32 = 26; +pub const SO_PEERNAME: u32 = 28; +pub const SO_PEERSEC: u32 = 30; +pub const SO_SNDBUFFORCE: u32 = 31; +pub const SO_RCVBUFFORCE: u32 = 33; +pub const SO_PASSSEC: u32 = 34; +pub const SO_MARK: u32 = 36; +pub const SO_RXQ_OVFL: u32 = 40; +pub const SO_WIFI_STATUS: u32 = 41; +pub const SCM_WIFI_STATUS: u32 = 41; +pub const SO_PEEK_OFF: u32 = 42; +pub const SO_NOFCS: u32 = 43; +pub const SO_LOCK_FILTER: u32 = 44; +pub const SO_SELECT_ERR_QUEUE: u32 = 45; +pub const SO_BUSY_POLL: u32 = 46; +pub const SO_MAX_PACING_RATE: u32 = 47; +pub const SO_BPF_EXTENSIONS: u32 = 48; +pub const SO_INCOMING_CPU: u32 = 49; +pub const SO_ATTACH_BPF: u32 = 50; +pub const SO_DETACH_BPF: u32 = 27; +pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; +pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; +pub const SO_CNX_ADVICE: u32 = 53; +pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; +pub const SO_MEMINFO: u32 = 55; +pub const SO_INCOMING_NAPI_ID: u32 = 56; +pub const SO_COOKIE: u32 = 57; +pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; +pub const SO_PEERGROUPS: u32 = 59; +pub const SO_ZEROCOPY: u32 = 60; +pub const SO_TXTIME: u32 = 61; +pub const SCM_TXTIME: u32 = 61; +pub const SO_BINDTOIFINDEX: u32 = 62; +pub const SO_TIMESTAMP_OLD: u32 = 29; +pub const SO_TIMESTAMPNS_OLD: u32 = 35; +pub const SO_TIMESTAMPING_OLD: u32 = 37; +pub const SO_TIMESTAMP_NEW: u32 = 63; +pub const SO_TIMESTAMPNS_NEW: u32 = 64; +pub const SO_TIMESTAMPING_NEW: u32 = 65; +pub const SO_RCVTIMEO_NEW: u32 = 66; +pub const SO_SNDTIMEO_NEW: u32 = 67; +pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; +pub const SO_PREFER_BUSY_POLL: u32 = 69; +pub const SO_BUSY_POLL_BUDGET: u32 = 70; +pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; +pub const SO_TXREHASH: u32 = 74; +pub const SO_RCVMARK: u32 = 75; +pub const SYS_SOCKET: u32 = 1; +pub const SYS_BIND: u32 = 2; +pub const SYS_CONNECT: u32 = 3; +pub const SYS_LISTEN: u32 = 4; +pub const SYS_ACCEPT: u32 = 5; +pub const SYS_GETSOCKNAME: u32 = 6; +pub const SYS_GETPEERNAME: u32 = 7; +pub const SYS_SOCKETPAIR: u32 = 8; +pub const SYS_SEND: u32 = 9; +pub const SYS_RECV: u32 = 10; +pub const SYS_SENDTO: u32 = 11; +pub const SYS_RECVFROM: u32 = 12; +pub const SYS_SHUTDOWN: u32 = 13; +pub const SYS_SETSOCKOPT: u32 = 14; +pub const SYS_GETSOCKOPT: u32 = 15; +pub const SYS_SENDMSG: u32 = 16; +pub const SYS_RECVMSG: u32 = 17; +pub const SYS_ACCEPT4: u32 = 18; +pub const SYS_RECVMMSG: u32 = 19; +pub const SYS_SENDMMSG: u32 = 20; +pub const __SO_ACCEPTCON: u32 = 65536; +pub const TCP_MSS_DEFAULT: u32 = 536; +pub const TCP_MSS_DESIRED: u32 = 1220; +pub const TCP_NODELAY: u32 = 1; +pub const TCP_MAXSEG: u32 = 2; +pub const TCP_CORK: u32 = 3; +pub const TCP_KEEPIDLE: u32 = 4; +pub const TCP_KEEPINTVL: u32 = 5; +pub const TCP_KEEPCNT: u32 = 6; +pub const TCP_SYNCNT: u32 = 7; +pub const TCP_LINGER2: u32 = 8; +pub const TCP_DEFER_ACCEPT: u32 = 9; +pub const TCP_WINDOW_CLAMP: u32 = 10; +pub const TCP_INFO: u32 = 11; +pub const TCP_QUICKACK: u32 = 12; +pub const TCP_CONGESTION: u32 = 13; +pub const TCP_MD5SIG: u32 = 14; +pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; +pub const TCP_THIN_DUPACK: u32 = 17; +pub const TCP_USER_TIMEOUT: u32 = 18; +pub const TCP_REPAIR: u32 = 19; +pub const TCP_REPAIR_QUEUE: u32 = 20; +pub const TCP_QUEUE_SEQ: u32 = 21; +pub const TCP_REPAIR_OPTIONS: u32 = 22; +pub const TCP_FASTOPEN: u32 = 23; +pub const TCP_TIMESTAMP: u32 = 24; +pub const TCP_NOTSENT_LOWAT: u32 = 25; +pub const TCP_CC_INFO: u32 = 26; +pub const TCP_SAVE_SYN: u32 = 27; +pub const TCP_SAVED_SYN: u32 = 28; +pub const TCP_REPAIR_WINDOW: u32 = 29; +pub const TCP_FASTOPEN_CONNECT: u32 = 30; +pub const TCP_ULP: u32 = 31; +pub const TCP_MD5SIG_EXT: u32 = 32; +pub const TCP_FASTOPEN_KEY: u32 = 33; +pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; +pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; +pub const TCP_INQ: u32 = 36; +pub const TCP_CM_INQ: u32 = 36; +pub const TCP_TX_DELAY: u32 = 37; +pub const TCP_REPAIR_ON: u32 = 1; +pub const TCP_REPAIR_OFF: u32 = 0; +pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; +pub const TCPI_OPT_TIMESTAMPS: u32 = 1; +pub const TCPI_OPT_SACK: u32 = 2; +pub const TCPI_OPT_WSCALE: u32 = 4; +pub const TCPI_OPT_ECN: u32 = 8; +pub const TCPI_OPT_ECN_SEEN: u32 = 16; +pub const TCPI_OPT_SYN_DATA: u32 = 32; +pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; +pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; +pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; +pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; +pub const UNIX_PATH_MAX: u32 = 108; +pub const SHUT_RD: u32 = 0; +pub const SHUT_WR: u32 = 1; +pub const SHUT_RDWR: u32 = 2; +pub const SOCK_STREAM: u32 = 2; +pub const SOCK_DGRAM: u32 = 1; +pub const SOCK_RAW: u32 = 3; +pub const SOCK_RDM: u32 = 4; +pub const SOCK_SEQPACKET: u32 = 5; +pub const MSG_DONTWAIT: u32 = 64; +pub const AF_UNSPEC: u32 = 0; +pub const AF_UNIX: u32 = 1; +pub const AF_INET: u32 = 2; +pub const AF_AX25: u32 = 3; +pub const AF_IPX: u32 = 4; +pub const AF_APPLETALK: u32 = 5; +pub const AF_NETROM: u32 = 6; +pub const AF_BRIDGE: u32 = 7; +pub const AF_ATMPVC: u32 = 8; +pub const AF_X25: u32 = 9; +pub const AF_INET6: u32 = 10; +pub const AF_ROSE: u32 = 11; +pub const AF_DECnet: u32 = 12; +pub const AF_NETBEUI: u32 = 13; +pub const AF_SECURITY: u32 = 14; +pub const AF_KEY: u32 = 15; +pub const AF_NETLINK: u32 = 16; +pub const AF_PACKET: u32 = 17; +pub const AF_ASH: u32 = 18; +pub const AF_ECONET: u32 = 19; +pub const AF_ATMSVC: u32 = 20; +pub const AF_RDS: u32 = 21; +pub const AF_SNA: u32 = 22; +pub const AF_IRDA: u32 = 23; +pub const AF_PPPOX: u32 = 24; +pub const AF_WANPIPE: u32 = 25; +pub const AF_LLC: u32 = 26; +pub const AF_CAN: u32 = 29; +pub const AF_TIPC: u32 = 30; +pub const AF_BLUETOOTH: u32 = 31; +pub const AF_IUCV: u32 = 32; +pub const AF_RXRPC: u32 = 33; +pub const AF_ISDN: u32 = 34; +pub const AF_PHONET: u32 = 35; +pub const AF_IEEE802154: u32 = 36; +pub const AF_MAX: u32 = 37; +pub const MSG_OOB: u32 = 1; +pub const MSG_PEEK: u32 = 2; +pub const MSG_DONTROUTE: u32 = 4; +pub const MSG_CTRUNC: u32 = 8; +pub const MSG_PROBE: u32 = 16; +pub const MSG_TRUNC: u32 = 32; +pub const MSG_EOR: u32 = 128; +pub const MSG_WAITALL: u32 = 256; +pub const MSG_FIN: u32 = 512; +pub const MSG_SYN: u32 = 1024; +pub const MSG_CONFIRM: u32 = 2048; +pub const MSG_RST: u32 = 4096; +pub const MSG_ERRQUEUE: u32 = 8192; +pub const MSG_NOSIGNAL: u32 = 16384; +pub const MSG_MORE: u32 = 32768; +pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; +pub const SCM_RIGHTS: u32 = 1; +pub const SCM_CREDENTIALS: u32 = 2; +pub const SCM_SECURITY: u32 = 3; +pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; +pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; +pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; +pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; +pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; +pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; +pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; +pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; +pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; +pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; +pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; +pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; +pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; +pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; +pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; +pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; +pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; +pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; +pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; +pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; +pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; +pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; +pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; +pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; +pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; +pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; +pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; +pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; +pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; +pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; +pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; +pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; +pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; +pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; +pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; +pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; +pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; +pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; +pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; +pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; +pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; +pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; +pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; +pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; +pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; +pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; +pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; +pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; +pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; +pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; +pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; +pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; +pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; +pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; +pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; +pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; +pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; +pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; +pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; +pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; +pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; +pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; +pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; +pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; +pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; +pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; +pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; +pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; +pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; +pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; +pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; +pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; +pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; +pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; +pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; +pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; +pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; +pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; +pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; +pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; +pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; +pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; +pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; +pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; +pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; +pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; +pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; +pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; +pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; +pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; +pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; +pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; +pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; +pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; +pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; +pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; +pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; +pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; +pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; +pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; +pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; +pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; +pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; +pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; +pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; +pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; +pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; +pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; +pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; +pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; +pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; +pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; +pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; +pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; +pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; +pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; +pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; +pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; +pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; +pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; +pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; +pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; +pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; +pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; +pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; +pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; +pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; +pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; +pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; +pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; +pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; +pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; +pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; +pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; +pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; +pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; +pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; +pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; +pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; +pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; +pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; +pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; +pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; +pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; +pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; +pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; +pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; +pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; +pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; +pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; +pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; +pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IPPROTO_IP = 0, +IPPROTO_ICMP = 1, +IPPROTO_IGMP = 2, +IPPROTO_IPIP = 4, +IPPROTO_TCP = 6, +IPPROTO_EGP = 8, +IPPROTO_PUP = 12, +IPPROTO_UDP = 17, +IPPROTO_IDP = 22, +IPPROTO_TP = 29, +IPPROTO_DCCP = 33, +IPPROTO_IPV6 = 41, +IPPROTO_RSVP = 46, +IPPROTO_GRE = 47, +IPPROTO_ESP = 50, +IPPROTO_AH = 51, +IPPROTO_MTP = 92, +IPPROTO_BEETPH = 94, +IPPROTO_ENCAP = 98, +IPPROTO_PIM = 103, +IPPROTO_COMP = 108, +IPPROTO_L2TP = 115, +IPPROTO_SCTP = 132, +IPPROTO_UDPLITE = 136, +IPPROTO_MPLS = 137, +IPPROTO_ETHERNET = 143, +IPPROTO_RAW = 255, +IPPROTO_MPTCP = 262, +IPPROTO_MAX = 263, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IPV4_DEVCONF_FORWARDING = 1, +IPV4_DEVCONF_MC_FORWARDING = 2, +IPV4_DEVCONF_PROXY_ARP = 3, +IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, +IPV4_DEVCONF_SECURE_REDIRECTS = 5, +IPV4_DEVCONF_SEND_REDIRECTS = 6, +IPV4_DEVCONF_SHARED_MEDIA = 7, +IPV4_DEVCONF_RP_FILTER = 8, +IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, +IPV4_DEVCONF_BOOTP_RELAY = 10, +IPV4_DEVCONF_LOG_MARTIANS = 11, +IPV4_DEVCONF_TAG = 12, +IPV4_DEVCONF_ARPFILTER = 13, +IPV4_DEVCONF_MEDIUM_ID = 14, +IPV4_DEVCONF_NOXFRM = 15, +IPV4_DEVCONF_NOPOLICY = 16, +IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, +IPV4_DEVCONF_ARP_ANNOUNCE = 18, +IPV4_DEVCONF_ARP_IGNORE = 19, +IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, +IPV4_DEVCONF_ARP_ACCEPT = 21, +IPV4_DEVCONF_ARP_NOTIFY = 22, +IPV4_DEVCONF_ACCEPT_LOCAL = 23, +IPV4_DEVCONF_SRC_VMARK = 24, +IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, +IPV4_DEVCONF_ROUTE_LOCALNET = 26, +IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, +IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, +IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, +IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, +IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, +IPV4_DEVCONF_BC_FORWARDING = 32, +IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, +__IPV4_DEVCONF_MAX = 34, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +DEVCONF_FORWARDING = 0, +DEVCONF_HOPLIMIT = 1, +DEVCONF_MTU6 = 2, +DEVCONF_ACCEPT_RA = 3, +DEVCONF_ACCEPT_REDIRECTS = 4, +DEVCONF_AUTOCONF = 5, +DEVCONF_DAD_TRANSMITS = 6, +DEVCONF_RTR_SOLICITS = 7, +DEVCONF_RTR_SOLICIT_INTERVAL = 8, +DEVCONF_RTR_SOLICIT_DELAY = 9, +DEVCONF_USE_TEMPADDR = 10, +DEVCONF_TEMP_VALID_LFT = 11, +DEVCONF_TEMP_PREFERED_LFT = 12, +DEVCONF_REGEN_MAX_RETRY = 13, +DEVCONF_MAX_DESYNC_FACTOR = 14, +DEVCONF_MAX_ADDRESSES = 15, +DEVCONF_FORCE_MLD_VERSION = 16, +DEVCONF_ACCEPT_RA_DEFRTR = 17, +DEVCONF_ACCEPT_RA_PINFO = 18, +DEVCONF_ACCEPT_RA_RTR_PREF = 19, +DEVCONF_RTR_PROBE_INTERVAL = 20, +DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, +DEVCONF_PROXY_NDP = 22, +DEVCONF_OPTIMISTIC_DAD = 23, +DEVCONF_ACCEPT_SOURCE_ROUTE = 24, +DEVCONF_MC_FORWARDING = 25, +DEVCONF_DISABLE_IPV6 = 26, +DEVCONF_ACCEPT_DAD = 27, +DEVCONF_FORCE_TLLAO = 28, +DEVCONF_NDISC_NOTIFY = 29, +DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, +DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, +DEVCONF_SUPPRESS_FRAG_NDISC = 32, +DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, +DEVCONF_USE_OPTIMISTIC = 34, +DEVCONF_ACCEPT_RA_MTU = 35, +DEVCONF_STABLE_SECRET = 36, +DEVCONF_USE_OIF_ADDRS_ONLY = 37, +DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, +DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, +DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, +DEVCONF_DROP_UNSOLICITED_NA = 41, +DEVCONF_KEEP_ADDR_ON_DOWN = 42, +DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, +DEVCONF_SEG6_ENABLED = 44, +DEVCONF_SEG6_REQUIRE_HMAC = 45, +DEVCONF_ENHANCED_DAD = 46, +DEVCONF_ADDR_GEN_MODE = 47, +DEVCONF_DISABLE_POLICY = 48, +DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, +DEVCONF_NDISC_TCLASS = 50, +DEVCONF_RPL_SEG_ENABLED = 51, +DEVCONF_RA_DEFRTR_METRIC = 52, +DEVCONF_IOAM6_ENABLED = 53, +DEVCONF_IOAM6_ID = 54, +DEVCONF_IOAM6_ID_WIDE = 55, +DEVCONF_NDISC_EVICT_NOCARRIER = 56, +DEVCONF_ACCEPT_UNTRACKED_NA = 57, +DEVCONF_MAX = 58, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum socket_state { +SS_FREE = 0, +SS_UNCONNECTED = 1, +SS_CONNECTING = 2, +SS_CONNECTED = 3, +SS_DISCONNECTING = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +TCP_FLAG_CWR = 8388608, +TCP_FLAG_ECE = 4194304, +TCP_FLAG_URG = 2097152, +TCP_FLAG_ACK = 1048576, +TCP_FLAG_PSH = 524288, +TCP_FLAG_RST = 262144, +TCP_FLAG_SYN = 131072, +TCP_FLAG_FIN = 65536, +TCP_RESERVED_BITS = 251658240, +TCP_DATA_OFFSET = 4026531840, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +TCP_NO_QUEUE = 0, +TCP_RECV_QUEUE = 1, +TCP_SEND_QUEUE = 2, +TCP_QUEUES_NR = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_fastopen_client_fail { +TFO_STATUS_UNSPEC = 0, +TFO_COOKIE_UNAVAILABLE = 1, +TFO_DATA_NOT_ACKED = 2, +TFO_SYN_RETRANSMITTED = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_ca_state { +TCP_CA_Open = 0, +TCP_CA_Disorder = 1, +TCP_CA_CWR = 2, +TCP_CA_Recovery = 3, +TCP_CA_Loss = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +TCP_NLA_PAD = 0, +TCP_NLA_BUSY = 1, +TCP_NLA_RWND_LIMITED = 2, +TCP_NLA_SNDBUF_LIMITED = 3, +TCP_NLA_DATA_SEGS_OUT = 4, +TCP_NLA_TOTAL_RETRANS = 5, +TCP_NLA_PACING_RATE = 6, +TCP_NLA_DELIVERY_RATE = 7, +TCP_NLA_SND_CWND = 8, +TCP_NLA_REORDERING = 9, +TCP_NLA_MIN_RTT = 10, +TCP_NLA_RECUR_RETRANS = 11, +TCP_NLA_DELIVERY_RATE_APP_LMT = 12, +TCP_NLA_SNDQ_SIZE = 13, +TCP_NLA_CA_STATE = 14, +TCP_NLA_SND_SSTHRESH = 15, +TCP_NLA_DELIVERED = 16, +TCP_NLA_DELIVERED_CE = 17, +TCP_NLA_BYTES_SENT = 18, +TCP_NLA_BYTES_RETRANS = 19, +TCP_NLA_DSACK_DUPS = 20, +TCP_NLA_REORD_SEEN = 21, +TCP_NLA_SRTT = 22, +TCP_NLA_TIMEOUT_REHASH = 23, +TCP_NLA_BYTES_NOTSENT = 24, +TCP_NLA_EDT = 25, +TCP_NLA_TTL = 26, +TCP_NLA_REHASH = 27, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union iphdr__bindgen_ty_1 { +pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union in6_addr__bindgen_ty_1 { +pub u6_addr8: [__u8; 16usize], +pub u6_addr16: [__be16; 8usize], +pub u6_addr32: [__be32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ipv6hdr__bindgen_ty_1 { +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union tcp_word_hdr { +pub hdr: tcphdr, +pub words: [__be32; 5usize], +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} +impl iphdr { +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn ihl(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_ihl(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; +ihl as u64 +}); +__bindgen_bitfield_unit +} +} +impl ipv6hdr { +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn priority(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_priority(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let priority: u8 = unsafe { ::core::mem::transmute(priority) }; +priority as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcphdr { +#[inline] +pub fn doff(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } +} +#[inline] +pub fn set_doff(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn res1(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } +} +#[inline] +pub fn set_res1(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn cwr(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } +} +#[inline] +pub fn set_cwr(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn ece(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } +} +#[inline] +pub fn set_ece(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 1u8, val as u64) +} +} +#[inline] +pub fn urg(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } +} +#[inline] +pub fn set_urg(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(10usize, 1u8, val as u64) +} +} +#[inline] +pub fn ack(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } +} +#[inline] +pub fn set_ack(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(11usize, 1u8, val as u64) +} +} +#[inline] +pub fn psh(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } +} +#[inline] +pub fn set_psh(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(12usize, 1u8, val as u64) +} +} +#[inline] +pub fn rst(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } +} +#[inline] +pub fn set_rst(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(13usize, 1u8, val as u64) +} +} +#[inline] +pub fn syn(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } +} +#[inline] +pub fn set_syn(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(14usize, 1u8, val as u64) +} +} +#[inline] +pub fn fin(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +} +#[inline] +pub fn set_fin(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(15usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let doff: u16 = unsafe { ::core::mem::transmute(doff) }; +doff as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let res1: u16 = unsafe { ::core::mem::transmute(res1) }; +res1 as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; +cwr as u64 +}); +__bindgen_bitfield_unit.set(9usize, 1u8, { +let ece: u16 = unsafe { ::core::mem::transmute(ece) }; +ece as u64 +}); +__bindgen_bitfield_unit.set(10usize, 1u8, { +let urg: u16 = unsafe { ::core::mem::transmute(urg) }; +urg as u64 +}); +__bindgen_bitfield_unit.set(11usize, 1u8, { +let ack: u16 = unsafe { ::core::mem::transmute(ack) }; +ack as u64 +}); +__bindgen_bitfield_unit.set(12usize, 1u8, { +let psh: u16 = unsafe { ::core::mem::transmute(psh) }; +psh as u64 +}); +__bindgen_bitfield_unit.set(13usize, 1u8, { +let rst: u16 = unsafe { ::core::mem::transmute(rst) }; +rst as u64 +}); +__bindgen_bitfield_unit.set(14usize, 1u8, { +let syn: u16 = unsafe { ::core::mem::transmute(syn) }; +syn as u64 +}); +__bindgen_bitfield_unit.set(15usize, 1u8, { +let fin: u16 = unsafe { ::core::mem::transmute(fin) }; +fin as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcp_info { +#[inline] +pub fn tcpi_snd_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_rcv_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +} +#[inline] +pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn tcpi_fastopen_client_fail(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +} +#[inline] +pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 2u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; +tcpi_snd_wscale as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; +tcpi_rcv_wscale as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; +tcpi_delivery_rate_app_limited as u64 +}); +__bindgen_bitfield_unit.set(9usize, 2u8, { +let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; +tcpi_fastopen_client_fail as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/prctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/prctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/prctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,234 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prctl_mm_map { +pub start_code: __u64, +pub end_code: __u64, +pub start_data: __u64, +pub end_data: __u64, +pub start_brk: __u64, +pub brk: __u64, +pub start_stack: __u64, +pub arg_start: __u64, +pub arg_end: __u64, +pub env_start: __u64, +pub env_end: __u64, +pub auxv: *mut __u64, +pub auxv_size: __u32, +pub exe_fd: __u32, +} +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const PR_SET_PDEATHSIG: u32 = 1; +pub const PR_GET_PDEATHSIG: u32 = 2; +pub const PR_GET_DUMPABLE: u32 = 3; +pub const PR_SET_DUMPABLE: u32 = 4; +pub const PR_GET_UNALIGN: u32 = 5; +pub const PR_SET_UNALIGN: u32 = 6; +pub const PR_UNALIGN_NOPRINT: u32 = 1; +pub const PR_UNALIGN_SIGBUS: u32 = 2; +pub const PR_GET_KEEPCAPS: u32 = 7; +pub const PR_SET_KEEPCAPS: u32 = 8; +pub const PR_GET_FPEMU: u32 = 9; +pub const PR_SET_FPEMU: u32 = 10; +pub const PR_FPEMU_NOPRINT: u32 = 1; +pub const PR_FPEMU_SIGFPE: u32 = 2; +pub const PR_GET_FPEXC: u32 = 11; +pub const PR_SET_FPEXC: u32 = 12; +pub const PR_FP_EXC_SW_ENABLE: u32 = 128; +pub const PR_FP_EXC_DIV: u32 = 65536; +pub const PR_FP_EXC_OVF: u32 = 131072; +pub const PR_FP_EXC_UND: u32 = 262144; +pub const PR_FP_EXC_RES: u32 = 524288; +pub const PR_FP_EXC_INV: u32 = 1048576; +pub const PR_FP_EXC_DISABLED: u32 = 0; +pub const PR_FP_EXC_NONRECOV: u32 = 1; +pub const PR_FP_EXC_ASYNC: u32 = 2; +pub const PR_FP_EXC_PRECISE: u32 = 3; +pub const PR_GET_TIMING: u32 = 13; +pub const PR_SET_TIMING: u32 = 14; +pub const PR_TIMING_STATISTICAL: u32 = 0; +pub const PR_TIMING_TIMESTAMP: u32 = 1; +pub const PR_SET_NAME: u32 = 15; +pub const PR_GET_NAME: u32 = 16; +pub const PR_GET_ENDIAN: u32 = 19; +pub const PR_SET_ENDIAN: u32 = 20; +pub const PR_ENDIAN_BIG: u32 = 0; +pub const PR_ENDIAN_LITTLE: u32 = 1; +pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; +pub const PR_GET_SECCOMP: u32 = 21; +pub const PR_SET_SECCOMP: u32 = 22; +pub const PR_CAPBSET_READ: u32 = 23; +pub const PR_CAPBSET_DROP: u32 = 24; +pub const PR_GET_TSC: u32 = 25; +pub const PR_SET_TSC: u32 = 26; +pub const PR_TSC_ENABLE: u32 = 1; +pub const PR_TSC_SIGSEGV: u32 = 2; +pub const PR_GET_SECUREBITS: u32 = 27; +pub const PR_SET_SECUREBITS: u32 = 28; +pub const PR_SET_TIMERSLACK: u32 = 29; +pub const PR_GET_TIMERSLACK: u32 = 30; +pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; +pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; +pub const PR_MCE_KILL: u32 = 33; +pub const PR_MCE_KILL_CLEAR: u32 = 0; +pub const PR_MCE_KILL_SET: u32 = 1; +pub const PR_MCE_KILL_LATE: u32 = 0; +pub const PR_MCE_KILL_EARLY: u32 = 1; +pub const PR_MCE_KILL_DEFAULT: u32 = 2; +pub const PR_MCE_KILL_GET: u32 = 34; +pub const PR_SET_MM: u32 = 35; +pub const PR_SET_MM_START_CODE: u32 = 1; +pub const PR_SET_MM_END_CODE: u32 = 2; +pub const PR_SET_MM_START_DATA: u32 = 3; +pub const PR_SET_MM_END_DATA: u32 = 4; +pub const PR_SET_MM_START_STACK: u32 = 5; +pub const PR_SET_MM_START_BRK: u32 = 6; +pub const PR_SET_MM_BRK: u32 = 7; +pub const PR_SET_MM_ARG_START: u32 = 8; +pub const PR_SET_MM_ARG_END: u32 = 9; +pub const PR_SET_MM_ENV_START: u32 = 10; +pub const PR_SET_MM_ENV_END: u32 = 11; +pub const PR_SET_MM_AUXV: u32 = 12; +pub const PR_SET_MM_EXE_FILE: u32 = 13; +pub const PR_SET_MM_MAP: u32 = 14; +pub const PR_SET_MM_MAP_SIZE: u32 = 15; +pub const PR_SET_PTRACER: u32 = 1499557217; +pub const PR_SET_CHILD_SUBREAPER: u32 = 36; +pub const PR_GET_CHILD_SUBREAPER: u32 = 37; +pub const PR_SET_NO_NEW_PRIVS: u32 = 38; +pub const PR_GET_NO_NEW_PRIVS: u32 = 39; +pub const PR_GET_TID_ADDRESS: u32 = 40; +pub const PR_SET_THP_DISABLE: u32 = 41; +pub const PR_GET_THP_DISABLE: u32 = 42; +pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; +pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; +pub const PR_SET_FP_MODE: u32 = 45; +pub const PR_GET_FP_MODE: u32 = 46; +pub const PR_FP_MODE_FR: u32 = 1; +pub const PR_FP_MODE_FRE: u32 = 2; +pub const PR_CAP_AMBIENT: u32 = 47; +pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; +pub const PR_CAP_AMBIENT_RAISE: u32 = 2; +pub const PR_CAP_AMBIENT_LOWER: u32 = 3; +pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; +pub const PR_SVE_SET_VL: u32 = 50; +pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SVE_GET_VL: u32 = 51; +pub const PR_SVE_VL_LEN_MASK: u32 = 65535; +pub const PR_SVE_VL_INHERIT: u32 = 131072; +pub const PR_GET_SPECULATION_CTRL: u32 = 52; +pub const PR_SET_SPECULATION_CTRL: u32 = 53; +pub const PR_SPEC_STORE_BYPASS: u32 = 0; +pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; +pub const PR_SPEC_L1D_FLUSH: u32 = 2; +pub const PR_SPEC_NOT_AFFECTED: u32 = 0; +pub const PR_SPEC_PRCTL: u32 = 1; +pub const PR_SPEC_ENABLE: u32 = 2; +pub const PR_SPEC_DISABLE: u32 = 4; +pub const PR_SPEC_FORCE_DISABLE: u32 = 8; +pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; +pub const PR_PAC_RESET_KEYS: u32 = 54; +pub const PR_PAC_APIAKEY: u32 = 1; +pub const PR_PAC_APIBKEY: u32 = 2; +pub const PR_PAC_APDAKEY: u32 = 4; +pub const PR_PAC_APDBKEY: u32 = 8; +pub const PR_PAC_APGAKEY: u32 = 16; +pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; +pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; +pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; +pub const PR_MTE_TCF_NONE: u32 = 0; +pub const PR_MTE_TCF_SYNC: u32 = 2; +pub const PR_MTE_TCF_ASYNC: u32 = 4; +pub const PR_MTE_TCF_MASK: u32 = 6; +pub const PR_MTE_TAG_SHIFT: u32 = 3; +pub const PR_MTE_TAG_MASK: u32 = 524280; +pub const PR_MTE_TCF_SHIFT: u32 = 1; +pub const PR_SET_IO_FLUSHER: u32 = 57; +pub const PR_GET_IO_FLUSHER: u32 = 58; +pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; +pub const PR_SYS_DISPATCH_OFF: u32 = 0; +pub const PR_SYS_DISPATCH_ON: u32 = 1; +pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; +pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; +pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; +pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; +pub const PR_SCHED_CORE: u32 = 62; +pub const PR_SCHED_CORE_GET: u32 = 0; +pub const PR_SCHED_CORE_CREATE: u32 = 1; +pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; +pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; +pub const PR_SCHED_CORE_MAX: u32 = 4; +pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; +pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; +pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; +pub const PR_SME_SET_VL: u32 = 63; +pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SME_GET_VL: u32 = 64; +pub const PR_SME_VL_LEN_MASK: u32 = 65535; +pub const PR_SME_VL_INHERIT: u32 = 131072; +pub const PR_SET_MDWE: u32 = 65; +pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; +pub const PR_GET_MDWE: u32 = 66; +pub const PR_SET_VMA: u32 = 1398164801; +pub const PR_SET_VMA_ANON_NAME: u32 = 0; +pub const PR_GET_AUXV: u32 = 1096112214; +pub const PR_SET_MEMORY_MERGE: u32 = 67; +pub const PR_GET_MEMORY_MERGE: u32 = 68; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/system.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/system.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips32r6/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,109 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sysinfo { +pub uptime: __kernel_long_t, +pub loads: [__kernel_ulong_t; 3usize], +pub totalram: __kernel_ulong_t, +pub freeram: __kernel_ulong_t, +pub sharedram: __kernel_ulong_t, +pub bufferram: __kernel_ulong_t, +pub totalswap: __kernel_ulong_t, +pub freeswap: __kernel_ulong_t, +pub procs: __u16, +pub pad: __u16, +pub totalhigh: __kernel_ulong_t, +pub freehigh: __kernel_ulong_t, +pub mem_unit: __u32, +pub _f: [crate::ctypes::c_char; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct oldold_utsname { +pub sysname: [crate::ctypes::c_char; 9usize], +pub nodename: [crate::ctypes::c_char; 9usize], +pub release: [crate::ctypes::c_char; 9usize], +pub version: [crate::ctypes::c_char; 9usize], +pub machine: [crate::ctypes::c_char; 9usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct old_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct new_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +pub domainname: [crate::ctypes::c_char; 65usize], +} +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const SI_LOAD_SHIFT: u32 = 16; +pub const __OLD_UTS_LEN: u32 = 8; +pub const __NEW_UTS_LEN: u32 = 64; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/errno.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/errno.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/errno.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const EPERM: u32 = 1; pub const ENOENT: u32 = 2; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/general.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/general.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/general.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/general.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,2940 +1,224 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_sighandler_t = ::core::option::Option; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type cap_user_header_t = *mut __user_cap_header_struct; +pub type cap_user_data_t = *mut __user_cap_data_struct; +pub type __kernel_rwf_t = crate::ctypes::c_int; +pub type old_sigset_t = crate::ctypes::c_ulong; +pub type __signalfn_t = ::core::option::Option; +pub type __sighandler_t = __signalfn_t; +pub type __restorefn_t = ::core::option::Option; +pub type __sigrestore_t = __restorefn_t; +pub type stack_t = sigaltstack; +pub type sigval_t = sigval; +pub type siginfo_t = siginfo; +pub type sigevent_t = sigevent; +pub type cc_t = crate::ctypes::c_uchar; +pub type speed_t = crate::ctypes::c_uint; +pub type tcflag_t = crate::ctypes::c_uint; +pub type fsid_t = __kernel_fsid_t; +pub type __fsword_t = __u32; #[repr(C)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct __BindgenBitfieldUnit { storage: Storage, } -impl __BindgenBitfieldUnit { -#[inline] -pub const fn new(storage: Storage) -> Self { -Self { storage } -} -} -impl __BindgenBitfieldUnit -where -Storage: AsRef<[u8]> + AsMut<[u8]>, -{ -#[inline] -pub fn get_bit(&self, index: usize) -> bool { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = self.storage.as_ref()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -byte & mask == mask -} -#[inline] -pub fn set_bit(&mut self, index: usize, val: bool) { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = &mut self.storage.as_mut()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -if val { -*byte |= mask; -} else { -*byte &= !mask; -} -} -#[inline] -pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -let mut val = 0; -for i in 0..(bit_width as usize) { -if self.get_bit(i + bit_offset) { -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -val |= 1 << index; -} -} -val -} -#[inline] -pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -for i in 0..(bit_width as usize) { -let mask = 1 << i; -let val_bit_is_set = val & mask == mask; -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -self.set_bit(index + bit_offset, val_bit_is_set); -} -} -} #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fd_set { +pub fds_bits: [crate::ctypes::c_ulong; 16usize], } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fsid_t { +pub val: [crate::ctypes::c_int; 2usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_header_struct { +pub version: __u32, +pub pid: crate::ctypes::c_int, } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_data_struct { +pub effective: __u32, +pub permitted: __u32, +pub inheritable: __u32, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data { +pub magic_etc: __le32, +pub data: [vfs_cap_data__bindgen_ty_1; 2usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data { +pub magic_etc: __le32, +pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], +pub rootid: __le32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } #[repr(C)] -pub struct __BindgenUnionField(::core::marker::PhantomData); -impl __BindgenUnionField { -#[inline] -pub const fn new() -> Self { -__BindgenUnionField(::core::marker::PhantomData) +#[derive(Debug, Copy, Clone)] +pub struct f_owner_ex { +pub type_: crate::ctypes::c_int, +pub pid: __kernel_pid_t, } -#[inline] -pub unsafe fn as_ref(&self) -> &T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_off_t, +pub l_len: __kernel_off_t, +pub l_pid: __kernel_pid_t, } -#[inline] -pub unsafe fn as_mut(&mut self) -> &mut T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock64 { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_loff_t, +pub l_len: __kernel_loff_t, +pub l_pid: __kernel_pid_t, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct open_how { +pub flags: __u64, +pub mode: __u64, +pub resolve: __u64, } -impl ::core::default::Default for __BindgenUnionField { -#[inline] -fn default() -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct epoll_event { +pub events: __poll_t, +pub data: __u64, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], } -impl ::core::clone::Clone for __BindgenUnionField { -#[inline] -fn clone(&self) -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], } -impl ::core::marker::Copy for __BindgenUnionField {} -impl ::core::fmt::Debug for __BindgenUnionField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__BindgenUnionField") +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, } -impl ::core::hash::Hash for __BindgenUnionField { -fn hash(&self, _state: &mut H) {} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, } -impl ::core::cmp::PartialEq for __BindgenUnionField { -fn eq(&self, _other: &__BindgenUnionField) -> bool { -true +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, } -} -impl ::core::cmp::Eq for __BindgenUnionField {} -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const AT_SYSINFO_EHDR: u32 = 33; -pub const AT_VECTOR_SIZE_ARCH: u32 = 1; -pub const AT_NULL: u32 = 0; -pub const AT_IGNORE: u32 = 1; -pub const AT_EXECFD: u32 = 2; -pub const AT_PHDR: u32 = 3; -pub const AT_PHENT: u32 = 4; -pub const AT_PHNUM: u32 = 5; -pub const AT_PAGESZ: u32 = 6; -pub const AT_BASE: u32 = 7; -pub const AT_FLAGS: u32 = 8; -pub const AT_ENTRY: u32 = 9; -pub const AT_NOTELF: u32 = 10; -pub const AT_UID: u32 = 11; -pub const AT_EUID: u32 = 12; -pub const AT_GID: u32 = 13; -pub const AT_EGID: u32 = 14; -pub const AT_PLATFORM: u32 = 15; -pub const AT_HWCAP: u32 = 16; -pub const AT_CLKTCK: u32 = 17; -pub const AT_SECURE: u32 = 23; -pub const AT_BASE_PLATFORM: u32 = 24; -pub const AT_RANDOM: u32 = 25; -pub const AT_HWCAP2: u32 = 26; -pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; -pub const AT_RSEQ_ALIGN: u32 = 28; -pub const AT_EXECFN: u32 = 31; -pub const AT_MINSIGSTKSZ: u32 = 51; -pub const __FD_SETSIZE: u32 = 1024; -pub const _MIPS_ISA_MIPS1: u32 = 1; -pub const _MIPS_ISA_MIPS2: u32 = 2; -pub const _MIPS_ISA_MIPS3: u32 = 3; -pub const _MIPS_ISA_MIPS4: u32 = 4; -pub const _MIPS_ISA_MIPS5: u32 = 5; -pub const _MIPS_ISA_MIPS32: u32 = 6; -pub const _MIPS_ISA_MIPS64: u32 = 7; -pub const _MIPS_SIM_ABI32: u32 = 1; -pub const _MIPS_SIM_NABI32: u32 = 2; -pub const _MIPS_SIM_ABI64: u32 = 3; -pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; -pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; -pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; -pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; -pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; -pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; -pub const VFS_CAP_REVISION_SHIFT: u32 = 24; -pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; -pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; -pub const VFS_CAP_REVISION_1: u32 = 16777216; -pub const VFS_CAP_U32_1: u32 = 1; -pub const VFS_CAP_REVISION_2: u32 = 33554432; -pub const VFS_CAP_U32_2: u32 = 2; -pub const VFS_CAP_REVISION_3: u32 = 50331648; -pub const VFS_CAP_U32_3: u32 = 2; -pub const VFS_CAP_U32: u32 = 2; -pub const VFS_CAP_REVISION: u32 = 50331648; -pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S: u32 = 1; -pub const CAP_CHOWN: u32 = 0; -pub const CAP_DAC_OVERRIDE: u32 = 1; -pub const CAP_DAC_READ_SEARCH: u32 = 2; -pub const CAP_FOWNER: u32 = 3; -pub const CAP_FSETID: u32 = 4; -pub const CAP_KILL: u32 = 5; -pub const CAP_SETGID: u32 = 6; -pub const CAP_SETUID: u32 = 7; -pub const CAP_SETPCAP: u32 = 8; -pub const CAP_LINUX_IMMUTABLE: u32 = 9; -pub const CAP_NET_BIND_SERVICE: u32 = 10; -pub const CAP_NET_BROADCAST: u32 = 11; -pub const CAP_NET_ADMIN: u32 = 12; -pub const CAP_NET_RAW: u32 = 13; -pub const CAP_IPC_LOCK: u32 = 14; -pub const CAP_IPC_OWNER: u32 = 15; -pub const CAP_SYS_MODULE: u32 = 16; -pub const CAP_SYS_RAWIO: u32 = 17; -pub const CAP_SYS_CHROOT: u32 = 18; -pub const CAP_SYS_PTRACE: u32 = 19; -pub const CAP_SYS_PACCT: u32 = 20; -pub const CAP_SYS_ADMIN: u32 = 21; -pub const CAP_SYS_BOOT: u32 = 22; -pub const CAP_SYS_NICE: u32 = 23; -pub const CAP_SYS_RESOURCE: u32 = 24; -pub const CAP_SYS_TIME: u32 = 25; -pub const CAP_SYS_TTY_CONFIG: u32 = 26; -pub const CAP_MKNOD: u32 = 27; -pub const CAP_LEASE: u32 = 28; -pub const CAP_AUDIT_WRITE: u32 = 29; -pub const CAP_AUDIT_CONTROL: u32 = 30; -pub const CAP_SETFCAP: u32 = 31; -pub const CAP_MAC_OVERRIDE: u32 = 32; -pub const CAP_MAC_ADMIN: u32 = 33; -pub const CAP_SYSLOG: u32 = 34; -pub const CAP_WAKE_ALARM: u32 = 35; -pub const CAP_BLOCK_SUSPEND: u32 = 36; -pub const CAP_AUDIT_READ: u32 = 37; -pub const CAP_PERFMON: u32 = 38; -pub const CAP_BPF: u32 = 39; -pub const CAP_CHECKPOINT_RESTORE: u32 = 40; -pub const CAP_LAST_CAP: u32 = 40; -pub const O_APPEND: u32 = 8; -pub const O_DSYNC: u32 = 16; -pub const O_NONBLOCK: u32 = 128; -pub const O_CREAT: u32 = 256; -pub const O_TRUNC: u32 = 512; -pub const O_EXCL: u32 = 1024; -pub const O_NOCTTY: u32 = 2048; -pub const FASYNC: u32 = 4096; -pub const O_LARGEFILE: u32 = 8192; -pub const __O_SYNC: u32 = 16384; -pub const O_SYNC: u32 = 16400; -pub const O_DIRECT: u32 = 32768; -pub const F_GETLK: u32 = 14; -pub const F_SETLK: u32 = 6; -pub const F_SETLKW: u32 = 7; -pub const F_SETOWN: u32 = 24; -pub const F_GETOWN: u32 = 23; -pub const O_ACCMODE: u32 = 3; -pub const O_RDONLY: u32 = 0; -pub const O_WRONLY: u32 = 1; -pub const O_RDWR: u32 = 2; -pub const O_DIRECTORY: u32 = 65536; -pub const O_NOFOLLOW: u32 = 131072; -pub const O_NOATIME: u32 = 262144; -pub const O_CLOEXEC: u32 = 524288; -pub const O_PATH: u32 = 2097152; -pub const __O_TMPFILE: u32 = 4194304; -pub const O_TMPFILE: u32 = 4259840; -pub const O_TMPFILE_MASK: u32 = 4260096; -pub const O_NDELAY: u32 = 128; -pub const F_DUPFD: u32 = 0; -pub const F_GETFD: u32 = 1; -pub const F_SETFD: u32 = 2; -pub const F_GETFL: u32 = 3; -pub const F_SETFL: u32 = 4; -pub const F_SETSIG: u32 = 10; -pub const F_GETSIG: u32 = 11; -pub const F_SETOWN_EX: u32 = 15; -pub const F_GETOWN_EX: u32 = 16; -pub const F_GETOWNER_UIDS: u32 = 17; -pub const F_OFD_GETLK: u32 = 36; -pub const F_OFD_SETLK: u32 = 37; -pub const F_OFD_SETLKW: u32 = 38; -pub const F_OWNER_TID: u32 = 0; -pub const F_OWNER_PID: u32 = 1; -pub const F_OWNER_PGRP: u32 = 2; -pub const FD_CLOEXEC: u32 = 1; -pub const F_RDLCK: u32 = 0; -pub const F_WRLCK: u32 = 1; -pub const F_UNLCK: u32 = 2; -pub const F_EXLCK: u32 = 4; -pub const F_SHLCK: u32 = 8; -pub const LOCK_SH: u32 = 1; -pub const LOCK_EX: u32 = 2; -pub const LOCK_NB: u32 = 4; -pub const LOCK_UN: u32 = 8; -pub const LOCK_MAND: u32 = 32; -pub const LOCK_READ: u32 = 64; -pub const LOCK_WRITE: u32 = 128; -pub const LOCK_RW: u32 = 192; -pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; -pub const RESOLVE_NO_XDEV: u32 = 1; -pub const RESOLVE_NO_MAGICLINKS: u32 = 2; -pub const RESOLVE_NO_SYMLINKS: u32 = 4; -pub const RESOLVE_BENEATH: u32 = 8; -pub const RESOLVE_IN_ROOT: u32 = 16; -pub const RESOLVE_CACHED: u32 = 32; -pub const F_SETLEASE: u32 = 1024; -pub const F_GETLEASE: u32 = 1025; -pub const F_CANCELLK: u32 = 1029; -pub const F_DUPFD_CLOEXEC: u32 = 1030; -pub const F_NOTIFY: u32 = 1026; -pub const F_SETPIPE_SZ: u32 = 1031; -pub const F_GETPIPE_SZ: u32 = 1032; -pub const F_ADD_SEALS: u32 = 1033; -pub const F_GET_SEALS: u32 = 1034; -pub const F_SEAL_SEAL: u32 = 1; -pub const F_SEAL_SHRINK: u32 = 2; -pub const F_SEAL_GROW: u32 = 4; -pub const F_SEAL_WRITE: u32 = 8; -pub const F_SEAL_FUTURE_WRITE: u32 = 16; -pub const F_SEAL_EXEC: u32 = 32; -pub const F_GET_RW_HINT: u32 = 1035; -pub const F_SET_RW_HINT: u32 = 1036; -pub const F_GET_FILE_RW_HINT: u32 = 1037; -pub const F_SET_FILE_RW_HINT: u32 = 1038; -pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; -pub const RWH_WRITE_LIFE_NONE: u32 = 1; -pub const RWH_WRITE_LIFE_SHORT: u32 = 2; -pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; -pub const RWH_WRITE_LIFE_LONG: u32 = 4; -pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; -pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; -pub const DN_ACCESS: u32 = 1; -pub const DN_MODIFY: u32 = 2; -pub const DN_CREATE: u32 = 4; -pub const DN_DELETE: u32 = 8; -pub const DN_RENAME: u32 = 16; -pub const DN_ATTRIB: u32 = 32; -pub const DN_MULTISHOT: u32 = 2147483648; -pub const AT_FDCWD: i32 = -100; -pub const AT_SYMLINK_NOFOLLOW: u32 = 256; -pub const AT_EACCESS: u32 = 512; -pub const AT_REMOVEDIR: u32 = 512; -pub const AT_SYMLINK_FOLLOW: u32 = 1024; -pub const AT_NO_AUTOMOUNT: u32 = 2048; -pub const AT_EMPTY_PATH: u32 = 4096; -pub const AT_STATX_SYNC_TYPE: u32 = 24576; -pub const AT_STATX_SYNC_AS_STAT: u32 = 0; -pub const AT_STATX_FORCE_SYNC: u32 = 8192; -pub const AT_STATX_DONT_SYNC: u32 = 16384; -pub const AT_RECURSIVE: u32 = 32768; -pub const EPOLL_CLOEXEC: u32 = 524288; -pub const EPOLL_CTL_ADD: u32 = 1; -pub const EPOLL_CTL_DEL: u32 = 2; -pub const EPOLL_CTL_MOD: u32 = 3; -pub const POSIX_FADV_NORMAL: u32 = 0; -pub const POSIX_FADV_RANDOM: u32 = 1; -pub const POSIX_FADV_SEQUENTIAL: u32 = 2; -pub const POSIX_FADV_WILLNEED: u32 = 3; -pub const POSIX_FADV_DONTNEED: u32 = 4; -pub const POSIX_FADV_NOREUSE: u32 = 5; -pub const FALLOC_FL_KEEP_SIZE: u32 = 1; -pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; -pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; -pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; -pub const FALLOC_FL_ZERO_RANGE: u32 = 16; -pub const FALLOC_FL_INSERT_RANGE: u32 = 32; -pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; -pub const NR_OPEN: u32 = 1024; -pub const NGROUPS_MAX: u32 = 65536; -pub const ARG_MAX: u32 = 131072; -pub const LINK_MAX: u32 = 127; -pub const MAX_CANON: u32 = 255; -pub const MAX_INPUT: u32 = 255; -pub const NAME_MAX: u32 = 255; -pub const PATH_MAX: u32 = 4096; -pub const PIPE_BUF: u32 = 4096; -pub const XATTR_NAME_MAX: u32 = 255; -pub const XATTR_SIZE_MAX: u32 = 65536; -pub const XATTR_LIST_MAX: u32 = 65536; -pub const RTSIG_MAX: u32 = 32; -pub const _IOC_SIZEBITS: u32 = 13; -pub const _IOC_DIRBITS: u32 = 3; -pub const _IOC_NONE: u32 = 1; -pub const _IOC_READ: u32 = 2; -pub const _IOC_WRITE: u32 = 4; -pub const _IOC_NRBITS: u32 = 8; -pub const _IOC_TYPEBITS: u32 = 8; -pub const _IOC_NRMASK: u32 = 255; -pub const _IOC_TYPEMASK: u32 = 255; -pub const _IOC_SIZEMASK: u32 = 8191; -pub const _IOC_DIRMASK: u32 = 7; -pub const _IOC_NRSHIFT: u32 = 0; -pub const _IOC_TYPESHIFT: u32 = 8; -pub const _IOC_SIZESHIFT: u32 = 16; -pub const _IOC_DIRSHIFT: u32 = 29; -pub const IOC_IN: u32 = 2147483648; -pub const IOC_OUT: u32 = 1073741824; -pub const IOC_INOUT: u32 = 3221225472; -pub const IOCSIZE_MASK: u32 = 536805376; -pub const IOCSIZE_SHIFT: u32 = 16; -pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; -pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; -pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; -pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; -pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; -pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; -pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; -pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; -pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; -pub const FSCRYPT_POLICY_V1: u32 = 0; -pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; -pub const FSCRYPT_POLICY_V2: u32 = 2; -pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; -pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; -pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; -pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; -pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; -pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; -pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; -pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FS_POLICY_FLAGS_VALID: u32 = 7; -pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; -pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; -pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; -pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; -pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; -pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; -pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; -pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; -pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FS_MAX_KEY_SIZE: u32 = 64; -pub const MS_RDONLY: u32 = 1; -pub const MS_NOSUID: u32 = 2; -pub const MS_NODEV: u32 = 4; -pub const MS_NOEXEC: u32 = 8; -pub const MS_SYNCHRONOUS: u32 = 16; -pub const MS_REMOUNT: u32 = 32; -pub const MS_MANDLOCK: u32 = 64; -pub const MS_DIRSYNC: u32 = 128; -pub const MS_NOSYMFOLLOW: u32 = 256; -pub const MS_NOATIME: u32 = 1024; -pub const MS_NODIRATIME: u32 = 2048; -pub const MS_BIND: u32 = 4096; -pub const MS_MOVE: u32 = 8192; -pub const MS_REC: u32 = 16384; -pub const MS_VERBOSE: u32 = 32768; -pub const MS_SILENT: u32 = 32768; -pub const MS_POSIXACL: u32 = 65536; -pub const MS_UNBINDABLE: u32 = 131072; -pub const MS_PRIVATE: u32 = 262144; -pub const MS_SLAVE: u32 = 524288; -pub const MS_SHARED: u32 = 1048576; -pub const MS_RELATIME: u32 = 2097152; -pub const MS_KERNMOUNT: u32 = 4194304; -pub const MS_I_VERSION: u32 = 8388608; -pub const MS_STRICTATIME: u32 = 16777216; -pub const MS_LAZYTIME: u32 = 33554432; -pub const MS_SUBMOUNT: u32 = 67108864; -pub const MS_NOREMOTELOCK: u32 = 134217728; -pub const MS_NOSEC: u32 = 268435456; -pub const MS_BORN: u32 = 536870912; -pub const MS_ACTIVE: u32 = 1073741824; -pub const MS_NOUSER: u32 = 2147483648; -pub const MS_RMT_MASK: u32 = 41943121; -pub const MS_MGC_VAL: u32 = 3236757504; -pub const MS_MGC_MSK: u32 = 4294901760; -pub const OPEN_TREE_CLONE: u32 = 1; -pub const OPEN_TREE_CLOEXEC: u32 = 524288; -pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; -pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; -pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; -pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; -pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; -pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; -pub const MOVE_MOUNT_SET_GROUP: u32 = 256; -pub const MOVE_MOUNT__MASK: u32 = 375; -pub const FSOPEN_CLOEXEC: u32 = 1; -pub const FSPICK_CLOEXEC: u32 = 1; -pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; -pub const FSPICK_NO_AUTOMOUNT: u32 = 4; -pub const FSPICK_EMPTY_PATH: u32 = 8; -pub const FSMOUNT_CLOEXEC: u32 = 1; -pub const MOUNT_ATTR_RDONLY: u32 = 1; -pub const MOUNT_ATTR_NOSUID: u32 = 2; -pub const MOUNT_ATTR_NODEV: u32 = 4; -pub const MOUNT_ATTR_NOEXEC: u32 = 8; -pub const MOUNT_ATTR__ATIME: u32 = 112; -pub const MOUNT_ATTR_RELATIME: u32 = 0; -pub const MOUNT_ATTR_NOATIME: u32 = 16; -pub const MOUNT_ATTR_STRICTATIME: u32 = 32; -pub const MOUNT_ATTR_NODIRATIME: u32 = 128; -pub const MOUNT_ATTR_IDMAP: u32 = 1048576; -pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; -pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; -pub const INR_OPEN_CUR: u32 = 1024; -pub const INR_OPEN_MAX: u32 = 4096; -pub const BLOCK_SIZE_BITS: u32 = 10; -pub const BLOCK_SIZE: u32 = 1024; -pub const SEEK_SET: u32 = 0; -pub const SEEK_CUR: u32 = 1; -pub const SEEK_END: u32 = 2; -pub const SEEK_DATA: u32 = 3; -pub const SEEK_HOLE: u32 = 4; -pub const SEEK_MAX: u32 = 4; -pub const RENAME_NOREPLACE: u32 = 1; -pub const RENAME_EXCHANGE: u32 = 2; -pub const RENAME_WHITEOUT: u32 = 4; -pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; -pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; -pub const NR_FILE: u32 = 8192; -pub const FS_XFLAG_REALTIME: u32 = 1; -pub const FS_XFLAG_PREALLOC: u32 = 2; -pub const FS_XFLAG_IMMUTABLE: u32 = 8; -pub const FS_XFLAG_APPEND: u32 = 16; -pub const FS_XFLAG_SYNC: u32 = 32; -pub const FS_XFLAG_NOATIME: u32 = 64; -pub const FS_XFLAG_NODUMP: u32 = 128; -pub const FS_XFLAG_RTINHERIT: u32 = 256; -pub const FS_XFLAG_PROJINHERIT: u32 = 512; -pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; -pub const FS_XFLAG_EXTSIZE: u32 = 2048; -pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; -pub const FS_XFLAG_NODEFRAG: u32 = 8192; -pub const FS_XFLAG_FILESTREAM: u32 = 16384; -pub const FS_XFLAG_DAX: u32 = 32768; -pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; -pub const FS_XFLAG_HASATTR: u32 = 2147483648; -pub const BMAP_IOCTL: u32 = 1; -pub const FSLABEL_MAX: u32 = 256; -pub const FS_SECRM_FL: u32 = 1; -pub const FS_UNRM_FL: u32 = 2; -pub const FS_COMPR_FL: u32 = 4; -pub const FS_SYNC_FL: u32 = 8; -pub const FS_IMMUTABLE_FL: u32 = 16; -pub const FS_APPEND_FL: u32 = 32; -pub const FS_NODUMP_FL: u32 = 64; -pub const FS_NOATIME_FL: u32 = 128; -pub const FS_DIRTY_FL: u32 = 256; -pub const FS_COMPRBLK_FL: u32 = 512; -pub const FS_NOCOMP_FL: u32 = 1024; -pub const FS_ENCRYPT_FL: u32 = 2048; -pub const FS_BTREE_FL: u32 = 4096; -pub const FS_INDEX_FL: u32 = 4096; -pub const FS_IMAGIC_FL: u32 = 8192; -pub const FS_JOURNAL_DATA_FL: u32 = 16384; -pub const FS_NOTAIL_FL: u32 = 32768; -pub const FS_DIRSYNC_FL: u32 = 65536; -pub const FS_TOPDIR_FL: u32 = 131072; -pub const FS_HUGE_FILE_FL: u32 = 262144; -pub const FS_EXTENT_FL: u32 = 524288; -pub const FS_VERITY_FL: u32 = 1048576; -pub const FS_EA_INODE_FL: u32 = 2097152; -pub const FS_EOFBLOCKS_FL: u32 = 4194304; -pub const FS_NOCOW_FL: u32 = 8388608; -pub const FS_DAX_FL: u32 = 33554432; -pub const FS_INLINE_DATA_FL: u32 = 268435456; -pub const FS_PROJINHERIT_FL: u32 = 536870912; -pub const FS_CASEFOLD_FL: u32 = 1073741824; -pub const FS_RESERVED_FL: u32 = 2147483648; -pub const FS_FL_USER_VISIBLE: u32 = 253951; -pub const FS_FL_USER_MODIFIABLE: u32 = 229631; -pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; -pub const SYNC_FILE_RANGE_WRITE: u32 = 2; -pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; -pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; -pub const FUTEX_WAIT: u32 = 0; -pub const FUTEX_WAKE: u32 = 1; -pub const FUTEX_FD: u32 = 2; -pub const FUTEX_REQUEUE: u32 = 3; -pub const FUTEX_CMP_REQUEUE: u32 = 4; -pub const FUTEX_WAKE_OP: u32 = 5; -pub const FUTEX_LOCK_PI: u32 = 6; -pub const FUTEX_UNLOCK_PI: u32 = 7; -pub const FUTEX_TRYLOCK_PI: u32 = 8; -pub const FUTEX_WAIT_BITSET: u32 = 9; -pub const FUTEX_WAKE_BITSET: u32 = 10; -pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; -pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; -pub const FUTEX_LOCK_PI2: u32 = 13; -pub const FUTEX_PRIVATE_FLAG: u32 = 128; -pub const FUTEX_CLOCK_REALTIME: u32 = 256; -pub const FUTEX_CMD_MASK: i32 = -385; -pub const FUTEX_WAIT_PRIVATE: u32 = 128; -pub const FUTEX_WAKE_PRIVATE: u32 = 129; -pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; -pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; -pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; -pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; -pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; -pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; -pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; -pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; -pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; -pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; -pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; -pub const FUTEX_32: u32 = 2; -pub const FUTEX_WAITV_MAX: u32 = 128; -pub const FUTEX_WAITERS: u32 = 2147483648; -pub const FUTEX_OWNER_DIED: u32 = 1073741824; -pub const FUTEX_TID_MASK: u32 = 1073741823; -pub const ROBUST_LIST_LIMIT: u32 = 2048; -pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; -pub const FUTEX_OP_SET: u32 = 0; -pub const FUTEX_OP_ADD: u32 = 1; -pub const FUTEX_OP_OR: u32 = 2; -pub const FUTEX_OP_ANDN: u32 = 3; -pub const FUTEX_OP_XOR: u32 = 4; -pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; -pub const FUTEX_OP_CMP_EQ: u32 = 0; -pub const FUTEX_OP_CMP_NE: u32 = 1; -pub const FUTEX_OP_CMP_LT: u32 = 2; -pub const FUTEX_OP_CMP_LE: u32 = 3; -pub const FUTEX_OP_CMP_GT: u32 = 4; -pub const FUTEX_OP_CMP_GE: u32 = 5; -pub const __UAPI_DEF_IF_IFCONF: u32 = 1; -pub const __UAPI_DEF_IF_IFMAP: u32 = 1; -pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1; -pub const __UAPI_DEF_IF_IFREQ: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1; -pub const __UAPI_DEF_IN_ADDR: u32 = 1; -pub const __UAPI_DEF_IN_IPPROTO: u32 = 1; -pub const __UAPI_DEF_IN_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP_MREQ: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1; -pub const __UAPI_DEF_IN_CLASS: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1; -pub const __UAPI_DEF_IPV6_MREQ: u32 = 1; -pub const __UAPI_DEF_IPPROTO_V6: u32 = 1; -pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1; -pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1; -pub const __UAPI_DEF_XATTR: u32 = 1; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const IP_TOS: u32 = 1; -pub const IP_TTL: u32 = 2; -pub const IP_HDRINCL: u32 = 3; -pub const IP_OPTIONS: u32 = 4; -pub const IP_ROUTER_ALERT: u32 = 5; -pub const IP_RECVOPTS: u32 = 6; -pub const IP_RETOPTS: u32 = 7; -pub const IP_PKTINFO: u32 = 8; -pub const IP_PKTOPTIONS: u32 = 9; -pub const IP_MTU_DISCOVER: u32 = 10; -pub const IP_RECVERR: u32 = 11; -pub const IP_RECVTTL: u32 = 12; -pub const IP_RECVTOS: u32 = 13; -pub const IP_MTU: u32 = 14; -pub const IP_FREEBIND: u32 = 15; -pub const IP_IPSEC_POLICY: u32 = 16; -pub const IP_XFRM_POLICY: u32 = 17; -pub const IP_PASSSEC: u32 = 18; -pub const IP_TRANSPARENT: u32 = 19; -pub const IP_RECVRETOPTS: u32 = 7; -pub const IP_ORIGDSTADDR: u32 = 20; -pub const IP_RECVORIGDSTADDR: u32 = 20; -pub const IP_MINTTL: u32 = 21; -pub const IP_NODEFRAG: u32 = 22; -pub const IP_CHECKSUM: u32 = 23; -pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; -pub const IP_RECVFRAGSIZE: u32 = 25; -pub const IP_RECVERR_RFC4884: u32 = 26; -pub const IP_PMTUDISC_DONT: u32 = 0; -pub const IP_PMTUDISC_WANT: u32 = 1; -pub const IP_PMTUDISC_DO: u32 = 2; -pub const IP_PMTUDISC_PROBE: u32 = 3; -pub const IP_PMTUDISC_INTERFACE: u32 = 4; -pub const IP_PMTUDISC_OMIT: u32 = 5; -pub const IP_MULTICAST_IF: u32 = 32; -pub const IP_MULTICAST_TTL: u32 = 33; -pub const IP_MULTICAST_LOOP: u32 = 34; -pub const IP_ADD_MEMBERSHIP: u32 = 35; -pub const IP_DROP_MEMBERSHIP: u32 = 36; -pub const IP_UNBLOCK_SOURCE: u32 = 37; -pub const IP_BLOCK_SOURCE: u32 = 38; -pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; -pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; -pub const IP_MSFILTER: u32 = 41; -pub const MCAST_JOIN_GROUP: u32 = 42; -pub const MCAST_BLOCK_SOURCE: u32 = 43; -pub const MCAST_UNBLOCK_SOURCE: u32 = 44; -pub const MCAST_LEAVE_GROUP: u32 = 45; -pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; -pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; -pub const MCAST_MSFILTER: u32 = 48; -pub const IP_MULTICAST_ALL: u32 = 49; -pub const IP_UNICAST_IF: u32 = 50; -pub const IP_LOCAL_PORT_RANGE: u32 = 51; -pub const MCAST_EXCLUDE: u32 = 0; -pub const MCAST_INCLUDE: u32 = 1; -pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; -pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const __SOCK_SIZE__: u32 = 16; -pub const IN_CLASSA_NET: u32 = 4278190080; -pub const IN_CLASSA_NSHIFT: u32 = 24; -pub const IN_CLASSA_HOST: u32 = 16777215; -pub const IN_CLASSA_MAX: u32 = 128; -pub const IN_CLASSB_NET: u32 = 4294901760; -pub const IN_CLASSB_NSHIFT: u32 = 16; -pub const IN_CLASSB_HOST: u32 = 65535; -pub const IN_CLASSB_MAX: u32 = 65536; -pub const IN_CLASSC_NET: u32 = 4294967040; -pub const IN_CLASSC_NSHIFT: u32 = 8; -pub const IN_CLASSC_HOST: u32 = 255; -pub const IN_MULTICAST_NET: u32 = 3758096384; -pub const IN_CLASSE_NET: u32 = 4294967295; -pub const IN_CLASSE_NSHIFT: u32 = 0; -pub const IN_LOOPBACKNET: u32 = 127; -pub const INADDR_LOOPBACK: u32 = 2130706433; -pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; -pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; -pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; -pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; -pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; -pub const __BIG_ENDIAN: u32 = 4321; -pub const IN_ACCESS: u32 = 1; -pub const IN_MODIFY: u32 = 2; -pub const IN_ATTRIB: u32 = 4; -pub const IN_CLOSE_WRITE: u32 = 8; -pub const IN_CLOSE_NOWRITE: u32 = 16; -pub const IN_OPEN: u32 = 32; -pub const IN_MOVED_FROM: u32 = 64; -pub const IN_MOVED_TO: u32 = 128; -pub const IN_CREATE: u32 = 256; -pub const IN_DELETE: u32 = 512; -pub const IN_DELETE_SELF: u32 = 1024; -pub const IN_MOVE_SELF: u32 = 2048; -pub const IN_UNMOUNT: u32 = 8192; -pub const IN_Q_OVERFLOW: u32 = 16384; -pub const IN_IGNORED: u32 = 32768; -pub const IN_CLOSE: u32 = 24; -pub const IN_MOVE: u32 = 192; -pub const IN_ONLYDIR: u32 = 16777216; -pub const IN_DONT_FOLLOW: u32 = 33554432; -pub const IN_EXCL_UNLINK: u32 = 67108864; -pub const IN_MASK_CREATE: u32 = 268435456; -pub const IN_MASK_ADD: u32 = 536870912; -pub const IN_ISDIR: u32 = 1073741824; -pub const IN_ONESHOT: u32 = 2147483648; -pub const IN_ALL_EVENTS: u32 = 4095; -pub const IN_CLOEXEC: u32 = 524288; -pub const IN_NONBLOCK: u32 = 128; -pub const IPTOS_TOS_MASK: u32 = 30; -pub const IPTOS_LOWDELAY: u32 = 16; -pub const IPTOS_THROUGHPUT: u32 = 8; -pub const IPTOS_RELIABILITY: u32 = 4; -pub const IPTOS_MINCOST: u32 = 2; -pub const IPTOS_PREC_MASK: u32 = 224; -pub const IPTOS_PREC_NETCONTROL: u32 = 224; -pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; -pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; -pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; -pub const IPTOS_PREC_FLASH: u32 = 96; -pub const IPTOS_PREC_IMMEDIATE: u32 = 64; -pub const IPTOS_PREC_PRIORITY: u32 = 32; -pub const IPTOS_PREC_ROUTINE: u32 = 0; -pub const IPOPT_COPY: u32 = 128; -pub const IPOPT_CLASS_MASK: u32 = 96; -pub const IPOPT_NUMBER_MASK: u32 = 31; -pub const IPOPT_CONTROL: u32 = 0; -pub const IPOPT_RESERVED1: u32 = 32; -pub const IPOPT_MEASUREMENT: u32 = 64; -pub const IPOPT_RESERVED2: u32 = 96; -pub const IPOPT_END: u32 = 0; -pub const IPOPT_NOOP: u32 = 1; -pub const IPOPT_SEC: u32 = 130; -pub const IPOPT_LSRR: u32 = 131; -pub const IPOPT_TIMESTAMP: u32 = 68; -pub const IPOPT_CIPSO: u32 = 134; -pub const IPOPT_RR: u32 = 7; -pub const IPOPT_SID: u32 = 136; -pub const IPOPT_SSRR: u32 = 137; -pub const IPOPT_RA: u32 = 148; -pub const IPVERSION: u32 = 4; -pub const MAXTTL: u32 = 255; -pub const IPDEFTTL: u32 = 64; -pub const IPOPT_OPTVAL: u32 = 0; -pub const IPOPT_OLEN: u32 = 1; -pub const IPOPT_OFFSET: u32 = 2; -pub const IPOPT_MINOFF: u32 = 4; -pub const MAX_IPOPTLEN: u32 = 40; -pub const IPOPT_NOP: u32 = 1; -pub const IPOPT_EOL: u32 = 0; -pub const IPOPT_TS: u32 = 68; -pub const IPOPT_TS_TSONLY: u32 = 0; -pub const IPOPT_TS_TSANDADDR: u32 = 1; -pub const IPOPT_TS_PRESPEC: u32 = 3; -pub const IPV4_BEET_PHMAXLEN: u32 = 8; -pub const IPV6_FL_A_GET: u32 = 0; -pub const IPV6_FL_A_PUT: u32 = 1; -pub const IPV6_FL_A_RENEW: u32 = 2; -pub const IPV6_FL_F_CREATE: u32 = 1; -pub const IPV6_FL_F_EXCL: u32 = 2; -pub const IPV6_FL_F_REFLECT: u32 = 4; -pub const IPV6_FL_F_REMOTE: u32 = 8; -pub const IPV6_FL_S_NONE: u32 = 0; -pub const IPV6_FL_S_EXCL: u32 = 1; -pub const IPV6_FL_S_PROCESS: u32 = 2; -pub const IPV6_FL_S_USER: u32 = 3; -pub const IPV6_FL_S_ANY: u32 = 255; -pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; -pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; -pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; -pub const IPV6_PRIORITY_FILLER: u32 = 256; -pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; -pub const IPV6_PRIORITY_RESERVED1: u32 = 768; -pub const IPV6_PRIORITY_BULK: u32 = 1024; -pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; -pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; -pub const IPV6_PRIORITY_CONTROL: u32 = 1792; -pub const IPV6_PRIORITY_8: u32 = 2048; -pub const IPV6_PRIORITY_9: u32 = 2304; -pub const IPV6_PRIORITY_10: u32 = 2560; -pub const IPV6_PRIORITY_11: u32 = 2816; -pub const IPV6_PRIORITY_12: u32 = 3072; -pub const IPV6_PRIORITY_13: u32 = 3328; -pub const IPV6_PRIORITY_14: u32 = 3584; -pub const IPV6_PRIORITY_15: u32 = 3840; -pub const IPPROTO_HOPOPTS: u32 = 0; -pub const IPPROTO_ROUTING: u32 = 43; -pub const IPPROTO_FRAGMENT: u32 = 44; -pub const IPPROTO_ICMPV6: u32 = 58; -pub const IPPROTO_NONE: u32 = 59; -pub const IPPROTO_DSTOPTS: u32 = 60; -pub const IPPROTO_MH: u32 = 135; -pub const IPV6_TLV_PAD1: u32 = 0; -pub const IPV6_TLV_PADN: u32 = 1; -pub const IPV6_TLV_ROUTERALERT: u32 = 5; -pub const IPV6_TLV_CALIPSO: u32 = 7; -pub const IPV6_TLV_IOAM: u32 = 49; -pub const IPV6_TLV_JUMBO: u32 = 194; -pub const IPV6_TLV_HAO: u32 = 201; -pub const IPV6_ADDRFORM: u32 = 1; -pub const IPV6_2292PKTINFO: u32 = 2; -pub const IPV6_2292HOPOPTS: u32 = 3; -pub const IPV6_2292DSTOPTS: u32 = 4; -pub const IPV6_2292RTHDR: u32 = 5; -pub const IPV6_2292PKTOPTIONS: u32 = 6; -pub const IPV6_CHECKSUM: u32 = 7; -pub const IPV6_2292HOPLIMIT: u32 = 8; -pub const IPV6_NEXTHOP: u32 = 9; -pub const IPV6_AUTHHDR: u32 = 10; -pub const IPV6_FLOWINFO: u32 = 11; -pub const IPV6_UNICAST_HOPS: u32 = 16; -pub const IPV6_MULTICAST_IF: u32 = 17; -pub const IPV6_MULTICAST_HOPS: u32 = 18; -pub const IPV6_MULTICAST_LOOP: u32 = 19; -pub const IPV6_ADD_MEMBERSHIP: u32 = 20; -pub const IPV6_DROP_MEMBERSHIP: u32 = 21; -pub const IPV6_ROUTER_ALERT: u32 = 22; -pub const IPV6_MTU_DISCOVER: u32 = 23; -pub const IPV6_MTU: u32 = 24; -pub const IPV6_RECVERR: u32 = 25; -pub const IPV6_V6ONLY: u32 = 26; -pub const IPV6_JOIN_ANYCAST: u32 = 27; -pub const IPV6_LEAVE_ANYCAST: u32 = 28; -pub const IPV6_MULTICAST_ALL: u32 = 29; -pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; -pub const IPV6_RECVERR_RFC4884: u32 = 31; -pub const IPV6_PMTUDISC_DONT: u32 = 0; -pub const IPV6_PMTUDISC_WANT: u32 = 1; -pub const IPV6_PMTUDISC_DO: u32 = 2; -pub const IPV6_PMTUDISC_PROBE: u32 = 3; -pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; -pub const IPV6_PMTUDISC_OMIT: u32 = 5; -pub const IPV6_FLOWLABEL_MGR: u32 = 32; -pub const IPV6_FLOWINFO_SEND: u32 = 33; -pub const IPV6_IPSEC_POLICY: u32 = 34; -pub const IPV6_XFRM_POLICY: u32 = 35; -pub const IPV6_HDRINCL: u32 = 36; -pub const IPV6_RECVPKTINFO: u32 = 49; -pub const IPV6_PKTINFO: u32 = 50; -pub const IPV6_RECVHOPLIMIT: u32 = 51; -pub const IPV6_HOPLIMIT: u32 = 52; -pub const IPV6_RECVHOPOPTS: u32 = 53; -pub const IPV6_HOPOPTS: u32 = 54; -pub const IPV6_RTHDRDSTOPTS: u32 = 55; -pub const IPV6_RECVRTHDR: u32 = 56; -pub const IPV6_RTHDR: u32 = 57; -pub const IPV6_RECVDSTOPTS: u32 = 58; -pub const IPV6_DSTOPTS: u32 = 59; -pub const IPV6_RECVPATHMTU: u32 = 60; -pub const IPV6_PATHMTU: u32 = 61; -pub const IPV6_DONTFRAG: u32 = 62; -pub const IPV6_RECVTCLASS: u32 = 66; -pub const IPV6_TCLASS: u32 = 67; -pub const IPV6_AUTOFLOWLABEL: u32 = 70; -pub const IPV6_ADDR_PREFERENCES: u32 = 72; -pub const IPV6_PREFER_SRC_TMP: u32 = 1; -pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; -pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; -pub const IPV6_PREFER_SRC_COA: u32 = 4; -pub const IPV6_PREFER_SRC_HOME: u32 = 1024; -pub const IPV6_PREFER_SRC_CGA: u32 = 8; -pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; -pub const IPV6_MINHOPCOUNT: u32 = 73; -pub const IPV6_ORIGDSTADDR: u32 = 74; -pub const IPV6_RECVORIGDSTADDR: u32 = 74; -pub const IPV6_TRANSPARENT: u32 = 75; -pub const IPV6_UNICAST_IF: u32 = 76; -pub const IPV6_RECVFRAGSIZE: u32 = 77; -pub const IPV6_FREEBIND: u32 = 78; -pub const IPV6_MIN_MTU: u32 = 1280; -pub const IPV6_SRCRT_STRICT: u32 = 1; -pub const IPV6_SRCRT_TYPE_0: u32 = 0; -pub const IPV6_SRCRT_TYPE_2: u32 = 2; -pub const IPV6_SRCRT_TYPE_3: u32 = 3; -pub const IPV6_SRCRT_TYPE_4: u32 = 4; -pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; -pub const ADFS_SUPER_MAGIC: u32 = 44533; -pub const AFFS_SUPER_MAGIC: u32 = 44543; -pub const AFS_SUPER_MAGIC: u32 = 1397113167; -pub const AUTOFS_SUPER_MAGIC: u32 = 391; -pub const CEPH_SUPER_MAGIC: u32 = 12805120; -pub const CODA_SUPER_MAGIC: u32 = 1937076805; -pub const CRAMFS_MAGIC: u32 = 684539205; -pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; -pub const DEBUGFS_MAGIC: u32 = 1684170528; -pub const SECURITYFS_MAGIC: u32 = 1935894131; -pub const SELINUX_MAGIC: u32 = 4185718668; -pub const SMACK_MAGIC: u32 = 1128357203; -pub const RAMFS_MAGIC: u32 = 2240043254; -pub const TMPFS_MAGIC: u32 = 16914836; -pub const HUGETLBFS_MAGIC: u32 = 2508478710; -pub const SQUASHFS_MAGIC: u32 = 1936814952; -pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; -pub const EFS_SUPER_MAGIC: u32 = 4278867; -pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; -pub const EXT2_SUPER_MAGIC: u32 = 61267; -pub const EXT3_SUPER_MAGIC: u32 = 61267; -pub const XENFS_SUPER_MAGIC: u32 = 2881100148; -pub const EXT4_SUPER_MAGIC: u32 = 61267; -pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; -pub const NILFS_SUPER_MAGIC: u32 = 13364; -pub const F2FS_SUPER_MAGIC: u32 = 4076150800; -pub const HPFS_SUPER_MAGIC: u32 = 4187351113; -pub const ISOFS_SUPER_MAGIC: u32 = 38496; -pub const JFFS2_SUPER_MAGIC: u32 = 29366; -pub const XFS_SUPER_MAGIC: u32 = 1481003842; -pub const PSTOREFS_MAGIC: u32 = 1634035564; -pub const EFIVARFS_MAGIC: u32 = 3730735588; -pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; -pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; -pub const FUSE_SUPER_MAGIC: u32 = 1702057286; -pub const MINIX_SUPER_MAGIC: u32 = 4991; -pub const MINIX_SUPER_MAGIC2: u32 = 5007; -pub const MINIX2_SUPER_MAGIC: u32 = 9320; -pub const MINIX2_SUPER_MAGIC2: u32 = 9336; -pub const MINIX3_SUPER_MAGIC: u32 = 19802; -pub const MSDOS_SUPER_MAGIC: u32 = 19780; -pub const EXFAT_SUPER_MAGIC: u32 = 538032816; -pub const NCP_SUPER_MAGIC: u32 = 22092; -pub const NFS_SUPER_MAGIC: u32 = 26985; -pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; -pub const OPENPROM_SUPER_MAGIC: u32 = 40865; -pub const QNX4_SUPER_MAGIC: u32 = 47; -pub const QNX6_SUPER_MAGIC: u32 = 1746473250; -pub const AFS_FS_MAGIC: u32 = 1799439955; -pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; -pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0"; -pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0"; -pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0"; -pub const SMB_SUPER_MAGIC: u32 = 20859; -pub const CIFS_SUPER_MAGIC: u32 = 4283649346; -pub const SMB2_SUPER_MAGIC: u32 = 4266872130; -pub const CGROUP_SUPER_MAGIC: u32 = 2613483; -pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; -pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; -pub const STACK_END_MAGIC: u32 = 1470918301; -pub const TRACEFS_MAGIC: u32 = 1953653091; -pub const V9FS_MAGIC: u32 = 16914839; -pub const BDEVFS_MAGIC: u32 = 1650746742; -pub const DAXFS_MAGIC: u32 = 1684300152; -pub const BINFMTFS_MAGIC: u32 = 1112100429; -pub const DEVPTS_SUPER_MAGIC: u32 = 7377; -pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; -pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; -pub const PIPEFS_MAGIC: u32 = 1346981957; -pub const PROC_SUPER_MAGIC: u32 = 40864; -pub const SOCKFS_MAGIC: u32 = 1397703499; -pub const SYSFS_MAGIC: u32 = 1650812274; -pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; -pub const MTD_INODE_FS_MAGIC: u32 = 288389204; -pub const ANON_INODE_FS_MAGIC: u32 = 151263540; -pub const BTRFS_TEST_MAGIC: u32 = 1936880249; -pub const NSFS_MAGIC: u32 = 1853056627; -pub const BPF_FS_MAGIC: u32 = 3405662737; -pub const AAFS_MAGIC: u32 = 1513908720; -pub const ZONEFS_MAGIC: u32 = 1515144787; -pub const UDF_SUPER_MAGIC: u32 = 352400198; -pub const DMA_BUF_MAGIC: u32 = 1145913666; -pub const DEVMEM_MAGIC: u32 = 1162691661; -pub const SECRETMEM_MAGIC: u32 = 1397048141; -pub const PROT_NONE: u32 = 0; -pub const PROT_READ: u32 = 1; -pub const PROT_WRITE: u32 = 2; -pub const PROT_EXEC: u32 = 4; -pub const PROT_SEM: u32 = 16; -pub const PROT_GROWSDOWN: u32 = 16777216; -pub const PROT_GROWSUP: u32 = 33554432; -pub const MAP_TYPE: u32 = 15; -pub const MAP_FIXED: u32 = 16; -pub const MAP_RENAME: u32 = 32; -pub const MAP_AUTOGROW: u32 = 64; -pub const MAP_LOCAL: u32 = 128; -pub const MAP_AUTORSRV: u32 = 256; -pub const MAP_NORESERVE: u32 = 1024; -pub const MAP_ANONYMOUS: u32 = 2048; -pub const MAP_GROWSDOWN: u32 = 4096; -pub const MAP_DENYWRITE: u32 = 8192; -pub const MAP_EXECUTABLE: u32 = 16384; -pub const MAP_LOCKED: u32 = 32768; -pub const MAP_POPULATE: u32 = 65536; -pub const MAP_NONBLOCK: u32 = 131072; -pub const MAP_STACK: u32 = 262144; -pub const MAP_HUGETLB: u32 = 524288; -pub const MAP_FIXED_NOREPLACE: u32 = 1048576; -pub const MS_ASYNC: u32 = 1; -pub const MS_INVALIDATE: u32 = 2; -pub const MS_SYNC: u32 = 4; -pub const MCL_CURRENT: u32 = 1; -pub const MCL_FUTURE: u32 = 2; -pub const MCL_ONFAULT: u32 = 4; -pub const MLOCK_ONFAULT: u32 = 1; -pub const MADV_NORMAL: u32 = 0; -pub const MADV_RANDOM: u32 = 1; -pub const MADV_SEQUENTIAL: u32 = 2; -pub const MADV_WILLNEED: u32 = 3; -pub const MADV_DONTNEED: u32 = 4; -pub const MADV_FREE: u32 = 8; -pub const MADV_REMOVE: u32 = 9; -pub const MADV_DONTFORK: u32 = 10; -pub const MADV_DOFORK: u32 = 11; -pub const MADV_MERGEABLE: u32 = 12; -pub const MADV_UNMERGEABLE: u32 = 13; -pub const MADV_HWPOISON: u32 = 100; -pub const MADV_HUGEPAGE: u32 = 14; -pub const MADV_NOHUGEPAGE: u32 = 15; -pub const MADV_DONTDUMP: u32 = 16; -pub const MADV_DODUMP: u32 = 17; -pub const MADV_WIPEONFORK: u32 = 18; -pub const MADV_KEEPONFORK: u32 = 19; -pub const MADV_COLD: u32 = 20; -pub const MADV_PAGEOUT: u32 = 21; -pub const MADV_POPULATE_READ: u32 = 22; -pub const MADV_POPULATE_WRITE: u32 = 23; -pub const MADV_DONTNEED_LOCKED: u32 = 24; -pub const MADV_COLLAPSE: u32 = 25; -pub const MAP_FILE: u32 = 0; -pub const PKEY_DISABLE_ACCESS: u32 = 1; -pub const PKEY_DISABLE_WRITE: u32 = 2; -pub const PKEY_ACCESS_MASK: u32 = 3; -pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; -pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; -pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; -pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; -pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; -pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; -pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; -pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; -pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; -pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; -pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; -pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; -pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; -pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; -pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; -pub const MREMAP_MAYMOVE: u32 = 1; -pub const MREMAP_FIXED: u32 = 2; -pub const MREMAP_DONTUNMAP: u32 = 4; -pub const OVERCOMMIT_GUESS: u32 = 0; -pub const OVERCOMMIT_ALWAYS: u32 = 1; -pub const OVERCOMMIT_NEVER: u32 = 2; -pub const MAP_SHARED: u32 = 1; -pub const MAP_PRIVATE: u32 = 2; -pub const MAP_SHARED_VALIDATE: u32 = 3; -pub const MAP_HUGE_SHIFT: u32 = 26; -pub const MAP_HUGE_MASK: u32 = 63; -pub const MAP_HUGE_16KB: u32 = 939524096; -pub const MAP_HUGE_64KB: u32 = 1073741824; -pub const MAP_HUGE_512KB: u32 = 1275068416; -pub const MAP_HUGE_1MB: u32 = 1342177280; -pub const MAP_HUGE_2MB: u32 = 1409286144; -pub const MAP_HUGE_8MB: u32 = 1543503872; -pub const MAP_HUGE_16MB: u32 = 1610612736; -pub const MAP_HUGE_32MB: u32 = 1677721600; -pub const MAP_HUGE_256MB: u32 = 1879048192; -pub const MAP_HUGE_512MB: u32 = 1946157056; -pub const MAP_HUGE_1GB: u32 = 2013265920; -pub const MAP_HUGE_2GB: u32 = 2080374784; -pub const MAP_HUGE_16GB: u32 = 2281701376; -pub const SIOCGSTAMP_OLD: u32 = 35078; -pub const SIOCGSTAMPNS_OLD: u32 = 35079; -pub const SOL_SOCKET: u32 = 65535; -pub const SO_DEBUG: u32 = 1; -pub const SO_REUSEADDR: u32 = 4; -pub const SO_KEEPALIVE: u32 = 8; -pub const SO_DONTROUTE: u32 = 16; -pub const SO_BROADCAST: u32 = 32; -pub const SO_LINGER: u32 = 128; -pub const SO_OOBINLINE: u32 = 256; -pub const SO_REUSEPORT: u32 = 512; -pub const SO_TYPE: u32 = 4104; -pub const SO_STYLE: u32 = 4104; -pub const SO_ERROR: u32 = 4103; -pub const SO_SNDBUF: u32 = 4097; -pub const SO_RCVBUF: u32 = 4098; -pub const SO_SNDLOWAT: u32 = 4099; -pub const SO_RCVLOWAT: u32 = 4100; -pub const SO_SNDTIMEO_OLD: u32 = 4101; -pub const SO_RCVTIMEO_OLD: u32 = 4102; -pub const SO_ACCEPTCONN: u32 = 4105; -pub const SO_PROTOCOL: u32 = 4136; -pub const SO_DOMAIN: u32 = 4137; -pub const SO_NO_CHECK: u32 = 11; -pub const SO_PRIORITY: u32 = 12; -pub const SO_BSDCOMPAT: u32 = 14; -pub const SO_PASSCRED: u32 = 17; -pub const SO_PEERCRED: u32 = 18; -pub const SO_SECURITY_AUTHENTICATION: u32 = 22; -pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; -pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; -pub const SO_BINDTODEVICE: u32 = 25; -pub const SO_ATTACH_FILTER: u32 = 26; -pub const SO_DETACH_FILTER: u32 = 27; -pub const SO_GET_FILTER: u32 = 26; -pub const SO_PEERNAME: u32 = 28; -pub const SO_PEERSEC: u32 = 30; -pub const SO_SNDBUFFORCE: u32 = 31; -pub const SO_RCVBUFFORCE: u32 = 33; -pub const SO_PASSSEC: u32 = 34; -pub const SO_MARK: u32 = 36; -pub const SO_RXQ_OVFL: u32 = 40; -pub const SO_WIFI_STATUS: u32 = 41; -pub const SCM_WIFI_STATUS: u32 = 41; -pub const SO_PEEK_OFF: u32 = 42; -pub const SO_NOFCS: u32 = 43; -pub const SO_LOCK_FILTER: u32 = 44; -pub const SO_SELECT_ERR_QUEUE: u32 = 45; -pub const SO_BUSY_POLL: u32 = 46; -pub const SO_MAX_PACING_RATE: u32 = 47; -pub const SO_BPF_EXTENSIONS: u32 = 48; -pub const SO_INCOMING_CPU: u32 = 49; -pub const SO_ATTACH_BPF: u32 = 50; -pub const SO_DETACH_BPF: u32 = 27; -pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; -pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; -pub const SO_CNX_ADVICE: u32 = 53; -pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; -pub const SO_MEMINFO: u32 = 55; -pub const SO_INCOMING_NAPI_ID: u32 = 56; -pub const SO_COOKIE: u32 = 57; -pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; -pub const SO_PEERGROUPS: u32 = 59; -pub const SO_ZEROCOPY: u32 = 60; -pub const SO_TXTIME: u32 = 61; -pub const SCM_TXTIME: u32 = 61; -pub const SO_BINDTOIFINDEX: u32 = 62; -pub const SO_TIMESTAMP_OLD: u32 = 29; -pub const SO_TIMESTAMPNS_OLD: u32 = 35; -pub const SO_TIMESTAMPING_OLD: u32 = 37; -pub const SO_TIMESTAMP_NEW: u32 = 63; -pub const SO_TIMESTAMPNS_NEW: u32 = 64; -pub const SO_TIMESTAMPING_NEW: u32 = 65; -pub const SO_RCVTIMEO_NEW: u32 = 66; -pub const SO_SNDTIMEO_NEW: u32 = 67; -pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; -pub const SO_PREFER_BUSY_POLL: u32 = 69; -pub const SO_BUSY_POLL_BUDGET: u32 = 70; -pub const SO_NETNS_COOKIE: u32 = 71; -pub const SO_BUF_LOCK: u32 = 72; -pub const SO_RESERVE_MEM: u32 = 73; -pub const SO_TXREHASH: u32 = 74; -pub const SO_RCVMARK: u32 = 75; -pub const SO_TIMESTAMP: u32 = 29; -pub const SO_TIMESTAMPNS: u32 = 35; -pub const SO_TIMESTAMPING: u32 = 37; -pub const SO_RCVTIMEO: u32 = 4102; -pub const SO_SNDTIMEO: u32 = 4101; -pub const SCM_TIMESTAMP: u32 = 29; -pub const SCM_TIMESTAMPNS: u32 = 35; -pub const SCM_TIMESTAMPING: u32 = 37; -pub const SYS_SOCKET: u32 = 1; -pub const SYS_BIND: u32 = 2; -pub const SYS_CONNECT: u32 = 3; -pub const SYS_LISTEN: u32 = 4; -pub const SYS_ACCEPT: u32 = 5; -pub const SYS_GETSOCKNAME: u32 = 6; -pub const SYS_GETPEERNAME: u32 = 7; -pub const SYS_SOCKETPAIR: u32 = 8; -pub const SYS_SEND: u32 = 9; -pub const SYS_RECV: u32 = 10; -pub const SYS_SENDTO: u32 = 11; -pub const SYS_RECVFROM: u32 = 12; -pub const SYS_SHUTDOWN: u32 = 13; -pub const SYS_SETSOCKOPT: u32 = 14; -pub const SYS_GETSOCKOPT: u32 = 15; -pub const SYS_SENDMSG: u32 = 16; -pub const SYS_RECVMSG: u32 = 17; -pub const SYS_ACCEPT4: u32 = 18; -pub const SYS_RECVMMSG: u32 = 19; -pub const SYS_SENDMMSG: u32 = 20; -pub const __SO_ACCEPTCON: u32 = 65536; -pub const POLLWRBAND: u32 = 256; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const POLLMSG: u32 = 1024; -pub const POLLREMOVE: u32 = 4096; -pub const POLLRDHUP: u32 = 8192; -pub const PR_SET_PDEATHSIG: u32 = 1; -pub const PR_GET_PDEATHSIG: u32 = 2; -pub const PR_GET_DUMPABLE: u32 = 3; -pub const PR_SET_DUMPABLE: u32 = 4; -pub const PR_GET_UNALIGN: u32 = 5; -pub const PR_SET_UNALIGN: u32 = 6; -pub const PR_UNALIGN_NOPRINT: u32 = 1; -pub const PR_UNALIGN_SIGBUS: u32 = 2; -pub const PR_GET_KEEPCAPS: u32 = 7; -pub const PR_SET_KEEPCAPS: u32 = 8; -pub const PR_GET_FPEMU: u32 = 9; -pub const PR_SET_FPEMU: u32 = 10; -pub const PR_FPEMU_NOPRINT: u32 = 1; -pub const PR_FPEMU_SIGFPE: u32 = 2; -pub const PR_GET_FPEXC: u32 = 11; -pub const PR_SET_FPEXC: u32 = 12; -pub const PR_FP_EXC_SW_ENABLE: u32 = 128; -pub const PR_FP_EXC_DIV: u32 = 65536; -pub const PR_FP_EXC_OVF: u32 = 131072; -pub const PR_FP_EXC_UND: u32 = 262144; -pub const PR_FP_EXC_RES: u32 = 524288; -pub const PR_FP_EXC_INV: u32 = 1048576; -pub const PR_FP_EXC_DISABLED: u32 = 0; -pub const PR_FP_EXC_NONRECOV: u32 = 1; -pub const PR_FP_EXC_ASYNC: u32 = 2; -pub const PR_FP_EXC_PRECISE: u32 = 3; -pub const PR_GET_TIMING: u32 = 13; -pub const PR_SET_TIMING: u32 = 14; -pub const PR_TIMING_STATISTICAL: u32 = 0; -pub const PR_TIMING_TIMESTAMP: u32 = 1; -pub const PR_SET_NAME: u32 = 15; -pub const PR_GET_NAME: u32 = 16; -pub const PR_GET_ENDIAN: u32 = 19; -pub const PR_SET_ENDIAN: u32 = 20; -pub const PR_ENDIAN_BIG: u32 = 0; -pub const PR_ENDIAN_LITTLE: u32 = 1; -pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; -pub const PR_GET_SECCOMP: u32 = 21; -pub const PR_SET_SECCOMP: u32 = 22; -pub const PR_CAPBSET_READ: u32 = 23; -pub const PR_CAPBSET_DROP: u32 = 24; -pub const PR_GET_TSC: u32 = 25; -pub const PR_SET_TSC: u32 = 26; -pub const PR_TSC_ENABLE: u32 = 1; -pub const PR_TSC_SIGSEGV: u32 = 2; -pub const PR_GET_SECUREBITS: u32 = 27; -pub const PR_SET_SECUREBITS: u32 = 28; -pub const PR_SET_TIMERSLACK: u32 = 29; -pub const PR_GET_TIMERSLACK: u32 = 30; -pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; -pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; -pub const PR_MCE_KILL: u32 = 33; -pub const PR_MCE_KILL_CLEAR: u32 = 0; -pub const PR_MCE_KILL_SET: u32 = 1; -pub const PR_MCE_KILL_LATE: u32 = 0; -pub const PR_MCE_KILL_EARLY: u32 = 1; -pub const PR_MCE_KILL_DEFAULT: u32 = 2; -pub const PR_MCE_KILL_GET: u32 = 34; -pub const PR_SET_MM: u32 = 35; -pub const PR_SET_MM_START_CODE: u32 = 1; -pub const PR_SET_MM_END_CODE: u32 = 2; -pub const PR_SET_MM_START_DATA: u32 = 3; -pub const PR_SET_MM_END_DATA: u32 = 4; -pub const PR_SET_MM_START_STACK: u32 = 5; -pub const PR_SET_MM_START_BRK: u32 = 6; -pub const PR_SET_MM_BRK: u32 = 7; -pub const PR_SET_MM_ARG_START: u32 = 8; -pub const PR_SET_MM_ARG_END: u32 = 9; -pub const PR_SET_MM_ENV_START: u32 = 10; -pub const PR_SET_MM_ENV_END: u32 = 11; -pub const PR_SET_MM_AUXV: u32 = 12; -pub const PR_SET_MM_EXE_FILE: u32 = 13; -pub const PR_SET_MM_MAP: u32 = 14; -pub const PR_SET_MM_MAP_SIZE: u32 = 15; -pub const PR_SET_PTRACER: u32 = 1499557217; -pub const PR_SET_CHILD_SUBREAPER: u32 = 36; -pub const PR_GET_CHILD_SUBREAPER: u32 = 37; -pub const PR_SET_NO_NEW_PRIVS: u32 = 38; -pub const PR_GET_NO_NEW_PRIVS: u32 = 39; -pub const PR_GET_TID_ADDRESS: u32 = 40; -pub const PR_SET_THP_DISABLE: u32 = 41; -pub const PR_GET_THP_DISABLE: u32 = 42; -pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; -pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; -pub const PR_SET_FP_MODE: u32 = 45; -pub const PR_GET_FP_MODE: u32 = 46; -pub const PR_FP_MODE_FR: u32 = 1; -pub const PR_FP_MODE_FRE: u32 = 2; -pub const PR_CAP_AMBIENT: u32 = 47; -pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; -pub const PR_CAP_AMBIENT_RAISE: u32 = 2; -pub const PR_CAP_AMBIENT_LOWER: u32 = 3; -pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; -pub const PR_SVE_SET_VL: u32 = 50; -pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SVE_GET_VL: u32 = 51; -pub const PR_SVE_VL_LEN_MASK: u32 = 65535; -pub const PR_SVE_VL_INHERIT: u32 = 131072; -pub const PR_GET_SPECULATION_CTRL: u32 = 52; -pub const PR_SET_SPECULATION_CTRL: u32 = 53; -pub const PR_SPEC_STORE_BYPASS: u32 = 0; -pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; -pub const PR_SPEC_L1D_FLUSH: u32 = 2; -pub const PR_SPEC_NOT_AFFECTED: u32 = 0; -pub const PR_SPEC_PRCTL: u32 = 1; -pub const PR_SPEC_ENABLE: u32 = 2; -pub const PR_SPEC_DISABLE: u32 = 4; -pub const PR_SPEC_FORCE_DISABLE: u32 = 8; -pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; -pub const PR_PAC_RESET_KEYS: u32 = 54; -pub const PR_PAC_APIAKEY: u32 = 1; -pub const PR_PAC_APIBKEY: u32 = 2; -pub const PR_PAC_APDAKEY: u32 = 4; -pub const PR_PAC_APDBKEY: u32 = 8; -pub const PR_PAC_APGAKEY: u32 = 16; -pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; -pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; -pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; -pub const PR_MTE_TCF_NONE: u32 = 0; -pub const PR_MTE_TCF_SYNC: u32 = 2; -pub const PR_MTE_TCF_ASYNC: u32 = 4; -pub const PR_MTE_TCF_MASK: u32 = 6; -pub const PR_MTE_TAG_SHIFT: u32 = 3; -pub const PR_MTE_TAG_MASK: u32 = 524280; -pub const PR_MTE_TCF_SHIFT: u32 = 1; -pub const PR_SET_IO_FLUSHER: u32 = 57; -pub const PR_GET_IO_FLUSHER: u32 = 58; -pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; -pub const PR_SYS_DISPATCH_OFF: u32 = 0; -pub const PR_SYS_DISPATCH_ON: u32 = 1; -pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; -pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; -pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; -pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; -pub const PR_SCHED_CORE: u32 = 62; -pub const PR_SCHED_CORE_GET: u32 = 0; -pub const PR_SCHED_CORE_CREATE: u32 = 1; -pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; -pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; -pub const PR_SCHED_CORE_MAX: u32 = 4; -pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; -pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; -pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; -pub const PR_SME_SET_VL: u32 = 63; -pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SME_GET_VL: u32 = 64; -pub const PR_SME_VL_LEN_MASK: u32 = 65535; -pub const PR_SME_VL_INHERIT: u32 = 131072; -pub const PR_SET_MDWE: u32 = 65; -pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; -pub const PR_GET_MDWE: u32 = 66; -pub const PR_SET_VMA: u32 = 1398164801; -pub const PR_SET_VMA_ANON_NAME: u32 = 0; -pub const GRND_NONBLOCK: u32 = 1; -pub const GRND_RANDOM: u32 = 2; -pub const GRND_INSECURE: u32 = 4; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -pub const CLOCK_REALTIME: u32 = 0; -pub const CLOCK_MONOTONIC: u32 = 1; -pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; -pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; -pub const CLOCK_MONOTONIC_RAW: u32 = 4; -pub const CLOCK_REALTIME_COARSE: u32 = 5; -pub const CLOCK_MONOTONIC_COARSE: u32 = 6; -pub const CLOCK_BOOTTIME: u32 = 7; -pub const CLOCK_REALTIME_ALARM: u32 = 8; -pub const CLOCK_BOOTTIME_ALARM: u32 = 9; -pub const CLOCK_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const RUSAGE_SELF: u32 = 0; -pub const RUSAGE_CHILDREN: i32 = -1; -pub const RUSAGE_BOTH: i32 = -2; -pub const RUSAGE_THREAD: u32 = 1; -pub const RLIM64_INFINITY: i32 = -1; -pub const PRIO_MIN: i32 = -20; -pub const PRIO_MAX: u32 = 20; -pub const PRIO_PROCESS: u32 = 0; -pub const PRIO_PGRP: u32 = 1; -pub const PRIO_USER: u32 = 2; -pub const _STK_LIM: u32 = 8388608; -pub const MLOCK_LIMIT: u32 = 8388608; -pub const RLIMIT_NOFILE: u32 = 5; -pub const RLIMIT_AS: u32 = 6; -pub const RLIMIT_RSS: u32 = 7; -pub const RLIMIT_NPROC: u32 = 8; -pub const RLIMIT_MEMLOCK: u32 = 9; -pub const RLIMIT_CPU: u32 = 0; -pub const RLIMIT_FSIZE: u32 = 1; -pub const RLIMIT_DATA: u32 = 2; -pub const RLIMIT_STACK: u32 = 3; -pub const RLIMIT_CORE: u32 = 4; -pub const RLIMIT_LOCKS: u32 = 10; -pub const RLIMIT_SIGPENDING: u32 = 11; -pub const RLIMIT_MSGQUEUE: u32 = 12; -pub const RLIMIT_NICE: u32 = 13; -pub const RLIMIT_RTPRIO: u32 = 14; -pub const RLIMIT_RTTIME: u32 = 15; -pub const RLIM_NLIMITS: u32 = 16; -pub const RLIM_INFINITY: i32 = -1; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const _NSIG: u32 = 128; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGIOT: u32 = 6; -pub const SIGABRT: u32 = 6; -pub const SIGEMT: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGBUS: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGSYS: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGUSR1: u32 = 16; -pub const SIGUSR2: u32 = 17; -pub const SIGCHLD: u32 = 18; -pub const SIGCLD: u32 = 18; -pub const SIGPWR: u32 = 19; -pub const SIGWINCH: u32 = 20; -pub const SIGURG: u32 = 21; -pub const SIGIO: u32 = 22; -pub const SIGPOLL: u32 = 22; -pub const SIGSTOP: u32 = 23; -pub const SIGTSTP: u32 = 24; -pub const SIGCONT: u32 = 25; -pub const SIGTTIN: u32 = 26; -pub const SIGTTOU: u32 = 27; -pub const SIGVTALRM: u32 = 28; -pub const SIGPROF: u32 = 29; -pub const SIGXCPU: u32 = 30; -pub const SIGXFSZ: u32 = 31; -pub const SIGRTMIN: u32 = 32; -pub const SIGRTMAX: u32 = 128; -pub const SA_ONSTACK: u32 = 134217728; -pub const SA_RESETHAND: u32 = 2147483648; -pub const SA_RESTART: u32 = 268435456; -pub const SA_SIGINFO: u32 = 8; -pub const SA_NODEFER: u32 = 1073741824; -pub const SA_NOCLDWAIT: u32 = 65536; -pub const SA_NOCLDSTOP: u32 = 1; -pub const SA_NOMASK: u32 = 1073741824; -pub const SA_ONESHOT: u32 = 2147483648; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; -pub const SIG_BLOCK: u32 = 1; -pub const SIG_UNBLOCK: u32 = 2; -pub const SIG_SETMASK: u32 = 3; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; -pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const S_IFMT: u32 = 61440; -pub const S_IFSOCK: u32 = 49152; -pub const S_IFLNK: u32 = 40960; -pub const S_IFREG: u32 = 32768; -pub const S_IFBLK: u32 = 24576; -pub const S_IFDIR: u32 = 16384; -pub const S_IFCHR: u32 = 8192; -pub const S_IFIFO: u32 = 4096; -pub const S_ISUID: u32 = 2048; -pub const S_ISGID: u32 = 1024; -pub const S_ISVTX: u32 = 512; -pub const S_IRWXU: u32 = 448; -pub const S_IRUSR: u32 = 256; -pub const S_IWUSR: u32 = 128; -pub const S_IXUSR: u32 = 64; -pub const S_IRWXG: u32 = 56; -pub const S_IRGRP: u32 = 32; -pub const S_IWGRP: u32 = 16; -pub const S_IXGRP: u32 = 8; -pub const S_IRWXO: u32 = 7; -pub const S_IROTH: u32 = 4; -pub const S_IWOTH: u32 = 2; -pub const S_IXOTH: u32 = 1; -pub const STATX_TYPE: u32 = 1; -pub const STATX_MODE: u32 = 2; -pub const STATX_NLINK: u32 = 4; -pub const STATX_UID: u32 = 8; -pub const STATX_GID: u32 = 16; -pub const STATX_ATIME: u32 = 32; -pub const STATX_MTIME: u32 = 64; -pub const STATX_CTIME: u32 = 128; -pub const STATX_INO: u32 = 256; -pub const STATX_SIZE: u32 = 512; -pub const STATX_BLOCKS: u32 = 1024; -pub const STATX_BASIC_STATS: u32 = 2047; -pub const STATX_BTIME: u32 = 2048; -pub const STATX_MNT_ID: u32 = 4096; -pub const STATX_DIOALIGN: u32 = 8192; -pub const STATX__RESERVED: u32 = 2147483648; -pub const STATX_ALL: u32 = 4095; -pub const STATX_ATTR_COMPRESSED: u32 = 4; -pub const STATX_ATTR_IMMUTABLE: u32 = 16; -pub const STATX_ATTR_APPEND: u32 = 32; -pub const STATX_ATTR_NODUMP: u32 = 64; -pub const STATX_ATTR_ENCRYPTED: u32 = 2048; -pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; -pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; -pub const STATX_ATTR_VERITY: u32 = 1048576; -pub const STATX_ATTR_DAX: u32 = 2097152; -pub const SI_LOAD_SHIFT: u32 = 16; -pub const TCP_MSS_DEFAULT: u32 = 536; -pub const TCP_MSS_DESIRED: u32 = 1220; -pub const TCP_NODELAY: u32 = 1; -pub const TCP_MAXSEG: u32 = 2; -pub const TCP_CORK: u32 = 3; -pub const TCP_KEEPIDLE: u32 = 4; -pub const TCP_KEEPINTVL: u32 = 5; -pub const TCP_KEEPCNT: u32 = 6; -pub const TCP_SYNCNT: u32 = 7; -pub const TCP_LINGER2: u32 = 8; -pub const TCP_DEFER_ACCEPT: u32 = 9; -pub const TCP_WINDOW_CLAMP: u32 = 10; -pub const TCP_INFO: u32 = 11; -pub const TCP_QUICKACK: u32 = 12; -pub const TCP_CONGESTION: u32 = 13; -pub const TCP_MD5SIG: u32 = 14; -pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; -pub const TCP_THIN_DUPACK: u32 = 17; -pub const TCP_USER_TIMEOUT: u32 = 18; -pub const TCP_REPAIR: u32 = 19; -pub const TCP_REPAIR_QUEUE: u32 = 20; -pub const TCP_QUEUE_SEQ: u32 = 21; -pub const TCP_REPAIR_OPTIONS: u32 = 22; -pub const TCP_FASTOPEN: u32 = 23; -pub const TCP_TIMESTAMP: u32 = 24; -pub const TCP_NOTSENT_LOWAT: u32 = 25; -pub const TCP_CC_INFO: u32 = 26; -pub const TCP_SAVE_SYN: u32 = 27; -pub const TCP_SAVED_SYN: u32 = 28; -pub const TCP_REPAIR_WINDOW: u32 = 29; -pub const TCP_FASTOPEN_CONNECT: u32 = 30; -pub const TCP_ULP: u32 = 31; -pub const TCP_MD5SIG_EXT: u32 = 32; -pub const TCP_FASTOPEN_KEY: u32 = 33; -pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; -pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; -pub const TCP_INQ: u32 = 36; -pub const TCP_CM_INQ: u32 = 36; -pub const TCP_TX_DELAY: u32 = 37; -pub const TCP_REPAIR_ON: u32 = 1; -pub const TCP_REPAIR_OFF: u32 = 0; -pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; -pub const TCPI_OPT_TIMESTAMPS: u32 = 1; -pub const TCPI_OPT_SACK: u32 = 2; -pub const TCPI_OPT_WSCALE: u32 = 4; -pub const TCPI_OPT_ECN: u32 = 8; -pub const TCPI_OPT_ECN_SEEN: u32 = 16; -pub const TCPI_OPT_SYN_DATA: u32 = 32; -pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; -pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; -pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; -pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; -pub const EPERM: u32 = 1; -pub const ENOENT: u32 = 2; -pub const ESRCH: u32 = 3; -pub const EINTR: u32 = 4; -pub const EIO: u32 = 5; -pub const ENXIO: u32 = 6; -pub const E2BIG: u32 = 7; -pub const ENOEXEC: u32 = 8; -pub const EBADF: u32 = 9; -pub const ECHILD: u32 = 10; -pub const EAGAIN: u32 = 11; -pub const ENOMEM: u32 = 12; -pub const EACCES: u32 = 13; -pub const EFAULT: u32 = 14; -pub const ENOTBLK: u32 = 15; -pub const EBUSY: u32 = 16; -pub const EEXIST: u32 = 17; -pub const EXDEV: u32 = 18; -pub const ENODEV: u32 = 19; -pub const ENOTDIR: u32 = 20; -pub const EISDIR: u32 = 21; -pub const EINVAL: u32 = 22; -pub const ENFILE: u32 = 23; -pub const EMFILE: u32 = 24; -pub const ENOTTY: u32 = 25; -pub const ETXTBSY: u32 = 26; -pub const EFBIG: u32 = 27; -pub const ENOSPC: u32 = 28; -pub const ESPIPE: u32 = 29; -pub const EROFS: u32 = 30; -pub const EMLINK: u32 = 31; -pub const EPIPE: u32 = 32; -pub const EDOM: u32 = 33; -pub const ERANGE: u32 = 34; -pub const ENOMSG: u32 = 35; -pub const EIDRM: u32 = 36; -pub const ECHRNG: u32 = 37; -pub const EL2NSYNC: u32 = 38; -pub const EL3HLT: u32 = 39; -pub const EL3RST: u32 = 40; -pub const ELNRNG: u32 = 41; -pub const EUNATCH: u32 = 42; -pub const ENOCSI: u32 = 43; -pub const EL2HLT: u32 = 44; -pub const EDEADLK: u32 = 45; -pub const ENOLCK: u32 = 46; -pub const EBADE: u32 = 50; -pub const EBADR: u32 = 51; -pub const EXFULL: u32 = 52; -pub const ENOANO: u32 = 53; -pub const EBADRQC: u32 = 54; -pub const EBADSLT: u32 = 55; -pub const EDEADLOCK: u32 = 56; -pub const EBFONT: u32 = 59; -pub const ENOSTR: u32 = 60; -pub const ENODATA: u32 = 61; -pub const ETIME: u32 = 62; -pub const ENOSR: u32 = 63; -pub const ENONET: u32 = 64; -pub const ENOPKG: u32 = 65; -pub const EREMOTE: u32 = 66; -pub const ENOLINK: u32 = 67; -pub const EADV: u32 = 68; -pub const ESRMNT: u32 = 69; -pub const ECOMM: u32 = 70; -pub const EPROTO: u32 = 71; -pub const EDOTDOT: u32 = 73; -pub const EMULTIHOP: u32 = 74; -pub const EBADMSG: u32 = 77; -pub const ENAMETOOLONG: u32 = 78; -pub const EOVERFLOW: u32 = 79; -pub const ENOTUNIQ: u32 = 80; -pub const EBADFD: u32 = 81; -pub const EREMCHG: u32 = 82; -pub const ELIBACC: u32 = 83; -pub const ELIBBAD: u32 = 84; -pub const ELIBSCN: u32 = 85; -pub const ELIBMAX: u32 = 86; -pub const ELIBEXEC: u32 = 87; -pub const EILSEQ: u32 = 88; -pub const ENOSYS: u32 = 89; -pub const ELOOP: u32 = 90; -pub const ERESTART: u32 = 91; -pub const ESTRPIPE: u32 = 92; -pub const ENOTEMPTY: u32 = 93; -pub const EUSERS: u32 = 94; -pub const ENOTSOCK: u32 = 95; -pub const EDESTADDRREQ: u32 = 96; -pub const EMSGSIZE: u32 = 97; -pub const EPROTOTYPE: u32 = 98; -pub const ENOPROTOOPT: u32 = 99; -pub const EPROTONOSUPPORT: u32 = 120; -pub const ESOCKTNOSUPPORT: u32 = 121; -pub const EOPNOTSUPP: u32 = 122; -pub const EPFNOSUPPORT: u32 = 123; -pub const EAFNOSUPPORT: u32 = 124; -pub const EADDRINUSE: u32 = 125; -pub const EADDRNOTAVAIL: u32 = 126; -pub const ENETDOWN: u32 = 127; -pub const ENETUNREACH: u32 = 128; -pub const ENETRESET: u32 = 129; -pub const ECONNABORTED: u32 = 130; -pub const ECONNRESET: u32 = 131; -pub const ENOBUFS: u32 = 132; -pub const EISCONN: u32 = 133; -pub const ENOTCONN: u32 = 134; -pub const EUCLEAN: u32 = 135; -pub const ENOTNAM: u32 = 137; -pub const ENAVAIL: u32 = 138; -pub const EISNAM: u32 = 139; -pub const EREMOTEIO: u32 = 140; -pub const EINIT: u32 = 141; -pub const EREMDEV: u32 = 142; -pub const ESHUTDOWN: u32 = 143; -pub const ETOOMANYREFS: u32 = 144; -pub const ETIMEDOUT: u32 = 145; -pub const ECONNREFUSED: u32 = 146; -pub const EHOSTDOWN: u32 = 147; -pub const EHOSTUNREACH: u32 = 148; -pub const EWOULDBLOCK: u32 = 11; -pub const EALREADY: u32 = 149; -pub const EINPROGRESS: u32 = 150; -pub const ESTALE: u32 = 151; -pub const ECANCELED: u32 = 158; -pub const ENOMEDIUM: u32 = 159; -pub const EMEDIUMTYPE: u32 = 160; -pub const ENOKEY: u32 = 161; -pub const EKEYEXPIRED: u32 = 162; -pub const EKEYREVOKED: u32 = 163; -pub const EKEYREJECTED: u32 = 164; -pub const EOWNERDEAD: u32 = 165; -pub const ENOTRECOVERABLE: u32 = 166; -pub const ERFKILL: u32 = 167; -pub const EHWPOISON: u32 = 168; -pub const EDQUOT: u32 = 1133; -pub const IGNBRK: u32 = 1; -pub const BRKINT: u32 = 2; -pub const IGNPAR: u32 = 4; -pub const PARMRK: u32 = 8; -pub const INPCK: u32 = 16; -pub const ISTRIP: u32 = 32; -pub const INLCR: u32 = 64; -pub const IGNCR: u32 = 128; -pub const ICRNL: u32 = 256; -pub const IXANY: u32 = 2048; -pub const OPOST: u32 = 1; -pub const OCRNL: u32 = 8; -pub const ONOCR: u32 = 16; -pub const ONLRET: u32 = 32; -pub const OFILL: u32 = 64; -pub const OFDEL: u32 = 128; -pub const B0: u32 = 0; -pub const B50: u32 = 1; -pub const B75: u32 = 2; -pub const B110: u32 = 3; -pub const B134: u32 = 4; -pub const B150: u32 = 5; -pub const B200: u32 = 6; -pub const B300: u32 = 7; -pub const B600: u32 = 8; -pub const B1200: u32 = 9; -pub const B1800: u32 = 10; -pub const B2400: u32 = 11; -pub const B4800: u32 = 12; -pub const B9600: u32 = 13; -pub const B19200: u32 = 14; -pub const B38400: u32 = 15; -pub const EXTA: u32 = 14; -pub const EXTB: u32 = 15; -pub const ADDRB: u32 = 536870912; -pub const CMSPAR: u32 = 1073741824; -pub const CRTSCTS: u32 = 2147483648; -pub const IBSHIFT: u32 = 16; -pub const TCOOFF: u32 = 0; -pub const TCOON: u32 = 1; -pub const TCIOFF: u32 = 2; -pub const TCION: u32 = 3; -pub const TCIFLUSH: u32 = 0; -pub const TCOFLUSH: u32 = 1; -pub const TCIOFLUSH: u32 = 2; -pub const NCCS: u32 = 23; -pub const VINTR: u32 = 0; -pub const VQUIT: u32 = 1; -pub const VERASE: u32 = 2; -pub const VKILL: u32 = 3; -pub const VMIN: u32 = 4; -pub const VTIME: u32 = 5; -pub const VEOL2: u32 = 6; -pub const VSWTC: u32 = 7; -pub const VSWTCH: u32 = 7; -pub const VSTART: u32 = 8; -pub const VSTOP: u32 = 9; -pub const VSUSP: u32 = 10; -pub const VREPRINT: u32 = 12; -pub const VDISCARD: u32 = 13; -pub const VWERASE: u32 = 14; -pub const VLNEXT: u32 = 15; -pub const VEOF: u32 = 16; -pub const VEOL: u32 = 17; -pub const IUCLC: u32 = 512; -pub const IXON: u32 = 1024; -pub const IXOFF: u32 = 4096; -pub const IMAXBEL: u32 = 8192; -pub const IUTF8: u32 = 16384; -pub const OLCUC: u32 = 2; -pub const ONLCR: u32 = 4; -pub const NLDLY: u32 = 256; -pub const NL0: u32 = 0; -pub const NL1: u32 = 256; -pub const CRDLY: u32 = 1536; -pub const CR0: u32 = 0; -pub const CR1: u32 = 512; -pub const CR2: u32 = 1024; -pub const CR3: u32 = 1536; -pub const TABDLY: u32 = 6144; -pub const TAB0: u32 = 0; -pub const TAB1: u32 = 2048; -pub const TAB2: u32 = 4096; -pub const TAB3: u32 = 6144; -pub const XTABS: u32 = 6144; -pub const BSDLY: u32 = 8192; -pub const BS0: u32 = 0; -pub const BS1: u32 = 8192; -pub const VTDLY: u32 = 16384; -pub const VT0: u32 = 0; -pub const VT1: u32 = 16384; -pub const FFDLY: u32 = 32768; -pub const FF0: u32 = 0; -pub const FF1: u32 = 32768; -pub const CBAUD: u32 = 4111; -pub const CSIZE: u32 = 48; -pub const CS5: u32 = 0; -pub const CS6: u32 = 16; -pub const CS7: u32 = 32; -pub const CS8: u32 = 48; -pub const CSTOPB: u32 = 64; -pub const CREAD: u32 = 128; -pub const PARENB: u32 = 256; -pub const PARODD: u32 = 512; -pub const HUPCL: u32 = 1024; -pub const CLOCAL: u32 = 2048; -pub const CBAUDEX: u32 = 4096; -pub const BOTHER: u32 = 4096; -pub const B57600: u32 = 4097; -pub const B115200: u32 = 4098; -pub const B230400: u32 = 4099; -pub const B460800: u32 = 4100; -pub const B500000: u32 = 4101; -pub const B576000: u32 = 4102; -pub const B921600: u32 = 4103; -pub const B1000000: u32 = 4104; -pub const B1152000: u32 = 4105; -pub const B1500000: u32 = 4106; -pub const B2000000: u32 = 4107; -pub const B2500000: u32 = 4108; -pub const B3000000: u32 = 4109; -pub const B3500000: u32 = 4110; -pub const B4000000: u32 = 4111; -pub const CIBAUD: u32 = 269418496; -pub const ISIG: u32 = 1; -pub const ICANON: u32 = 2; -pub const XCASE: u32 = 4; -pub const ECHO: u32 = 8; -pub const ECHOE: u32 = 16; -pub const ECHOK: u32 = 32; -pub const ECHONL: u32 = 64; -pub const NOFLSH: u32 = 128; -pub const IEXTEN: u32 = 256; -pub const ECHOCTL: u32 = 512; -pub const ECHOPRT: u32 = 1024; -pub const ECHOKE: u32 = 2048; -pub const FLUSHO: u32 = 8192; -pub const PENDIN: u32 = 16384; -pub const TOSTOP: u32 = 32768; -pub const ITOSTOP: u32 = 32768; -pub const EXTPROC: u32 = 65536; -pub const TIOCSER_TEMT: u32 = 1; -pub const TIOCPKT_DATA: u32 = 0; -pub const TIOCPKT_FLUSHREAD: u32 = 1; -pub const TIOCPKT_FLUSHWRITE: u32 = 2; -pub const TIOCPKT_STOP: u32 = 4; -pub const TIOCPKT_START: u32 = 8; -pub const TIOCPKT_NOSTOP: u32 = 16; -pub const TIOCPKT_DOSTOP: u32 = 32; -pub const TIOCPKT_IOCTL: u32 = 64; -pub const TIOCGLTC: u32 = 29812; -pub const TIOCSLTC: u32 = 29813; -pub const TIOCGETP: u32 = 29704; -pub const TIOCSETP: u32 = 29705; -pub const TIOCSETN: u32 = 29706; -pub const NCC: u32 = 8; -pub const TIOCM_LE: u32 = 1; -pub const TIOCM_DTR: u32 = 2; -pub const TIOCM_RTS: u32 = 4; -pub const TIOCM_ST: u32 = 16; -pub const TIOCM_SR: u32 = 32; -pub const TIOCM_CTS: u32 = 64; -pub const TIOCM_CAR: u32 = 256; -pub const TIOCM_CD: u32 = 256; -pub const TIOCM_RNG: u32 = 512; -pub const TIOCM_RI: u32 = 512; -pub const TIOCM_DSR: u32 = 1024; -pub const TIOCM_OUT1: u32 = 8192; -pub const TIOCM_OUT2: u32 = 16384; -pub const TIOCM_LOOP: u32 = 32768; -pub const UIO_FASTIOV: u32 = 8; -pub const UIO_MAXIOV: u32 = 1024; -pub const UNIX_PATH_MAX: u32 = 108; -pub const __NR_Linux: u32 = 5000; -pub const __NR_read: u32 = 5000; -pub const __NR_write: u32 = 5001; -pub const __NR_open: u32 = 5002; -pub const __NR_close: u32 = 5003; -pub const __NR_stat: u32 = 5004; -pub const __NR_fstat: u32 = 5005; -pub const __NR_lstat: u32 = 5006; -pub const __NR_poll: u32 = 5007; -pub const __NR_lseek: u32 = 5008; -pub const __NR_mmap: u32 = 5009; -pub const __NR_mprotect: u32 = 5010; -pub const __NR_munmap: u32 = 5011; -pub const __NR_brk: u32 = 5012; -pub const __NR_rt_sigaction: u32 = 5013; -pub const __NR_rt_sigprocmask: u32 = 5014; -pub const __NR_ioctl: u32 = 5015; -pub const __NR_pread64: u32 = 5016; -pub const __NR_pwrite64: u32 = 5017; -pub const __NR_readv: u32 = 5018; -pub const __NR_writev: u32 = 5019; -pub const __NR_access: u32 = 5020; -pub const __NR_pipe: u32 = 5021; -pub const __NR__newselect: u32 = 5022; -pub const __NR_sched_yield: u32 = 5023; -pub const __NR_mremap: u32 = 5024; -pub const __NR_msync: u32 = 5025; -pub const __NR_mincore: u32 = 5026; -pub const __NR_madvise: u32 = 5027; -pub const __NR_shmget: u32 = 5028; -pub const __NR_shmat: u32 = 5029; -pub const __NR_shmctl: u32 = 5030; -pub const __NR_dup: u32 = 5031; -pub const __NR_dup2: u32 = 5032; -pub const __NR_pause: u32 = 5033; -pub const __NR_nanosleep: u32 = 5034; -pub const __NR_getitimer: u32 = 5035; -pub const __NR_setitimer: u32 = 5036; -pub const __NR_alarm: u32 = 5037; -pub const __NR_getpid: u32 = 5038; -pub const __NR_sendfile: u32 = 5039; -pub const __NR_socket: u32 = 5040; -pub const __NR_connect: u32 = 5041; -pub const __NR_accept: u32 = 5042; -pub const __NR_sendto: u32 = 5043; -pub const __NR_recvfrom: u32 = 5044; -pub const __NR_sendmsg: u32 = 5045; -pub const __NR_recvmsg: u32 = 5046; -pub const __NR_shutdown: u32 = 5047; -pub const __NR_bind: u32 = 5048; -pub const __NR_listen: u32 = 5049; -pub const __NR_getsockname: u32 = 5050; -pub const __NR_getpeername: u32 = 5051; -pub const __NR_socketpair: u32 = 5052; -pub const __NR_setsockopt: u32 = 5053; -pub const __NR_getsockopt: u32 = 5054; -pub const __NR_clone: u32 = 5055; -pub const __NR_fork: u32 = 5056; -pub const __NR_execve: u32 = 5057; -pub const __NR_exit: u32 = 5058; -pub const __NR_wait4: u32 = 5059; -pub const __NR_kill: u32 = 5060; -pub const __NR_uname: u32 = 5061; -pub const __NR_semget: u32 = 5062; -pub const __NR_semop: u32 = 5063; -pub const __NR_semctl: u32 = 5064; -pub const __NR_shmdt: u32 = 5065; -pub const __NR_msgget: u32 = 5066; -pub const __NR_msgsnd: u32 = 5067; -pub const __NR_msgrcv: u32 = 5068; -pub const __NR_msgctl: u32 = 5069; -pub const __NR_fcntl: u32 = 5070; -pub const __NR_flock: u32 = 5071; -pub const __NR_fsync: u32 = 5072; -pub const __NR_fdatasync: u32 = 5073; -pub const __NR_truncate: u32 = 5074; -pub const __NR_ftruncate: u32 = 5075; -pub const __NR_getdents: u32 = 5076; -pub const __NR_getcwd: u32 = 5077; -pub const __NR_chdir: u32 = 5078; -pub const __NR_fchdir: u32 = 5079; -pub const __NR_rename: u32 = 5080; -pub const __NR_mkdir: u32 = 5081; -pub const __NR_rmdir: u32 = 5082; -pub const __NR_creat: u32 = 5083; -pub const __NR_link: u32 = 5084; -pub const __NR_unlink: u32 = 5085; -pub const __NR_symlink: u32 = 5086; -pub const __NR_readlink: u32 = 5087; -pub const __NR_chmod: u32 = 5088; -pub const __NR_fchmod: u32 = 5089; -pub const __NR_chown: u32 = 5090; -pub const __NR_fchown: u32 = 5091; -pub const __NR_lchown: u32 = 5092; -pub const __NR_umask: u32 = 5093; -pub const __NR_gettimeofday: u32 = 5094; -pub const __NR_getrlimit: u32 = 5095; -pub const __NR_getrusage: u32 = 5096; -pub const __NR_sysinfo: u32 = 5097; -pub const __NR_times: u32 = 5098; -pub const __NR_ptrace: u32 = 5099; -pub const __NR_getuid: u32 = 5100; -pub const __NR_syslog: u32 = 5101; -pub const __NR_getgid: u32 = 5102; -pub const __NR_setuid: u32 = 5103; -pub const __NR_setgid: u32 = 5104; -pub const __NR_geteuid: u32 = 5105; -pub const __NR_getegid: u32 = 5106; -pub const __NR_setpgid: u32 = 5107; -pub const __NR_getppid: u32 = 5108; -pub const __NR_getpgrp: u32 = 5109; -pub const __NR_setsid: u32 = 5110; -pub const __NR_setreuid: u32 = 5111; -pub const __NR_setregid: u32 = 5112; -pub const __NR_getgroups: u32 = 5113; -pub const __NR_setgroups: u32 = 5114; -pub const __NR_setresuid: u32 = 5115; -pub const __NR_getresuid: u32 = 5116; -pub const __NR_setresgid: u32 = 5117; -pub const __NR_getresgid: u32 = 5118; -pub const __NR_getpgid: u32 = 5119; -pub const __NR_setfsuid: u32 = 5120; -pub const __NR_setfsgid: u32 = 5121; -pub const __NR_getsid: u32 = 5122; -pub const __NR_capget: u32 = 5123; -pub const __NR_capset: u32 = 5124; -pub const __NR_rt_sigpending: u32 = 5125; -pub const __NR_rt_sigtimedwait: u32 = 5126; -pub const __NR_rt_sigqueueinfo: u32 = 5127; -pub const __NR_rt_sigsuspend: u32 = 5128; -pub const __NR_sigaltstack: u32 = 5129; -pub const __NR_utime: u32 = 5130; -pub const __NR_mknod: u32 = 5131; -pub const __NR_personality: u32 = 5132; -pub const __NR_ustat: u32 = 5133; -pub const __NR_statfs: u32 = 5134; -pub const __NR_fstatfs: u32 = 5135; -pub const __NR_sysfs: u32 = 5136; -pub const __NR_getpriority: u32 = 5137; -pub const __NR_setpriority: u32 = 5138; -pub const __NR_sched_setparam: u32 = 5139; -pub const __NR_sched_getparam: u32 = 5140; -pub const __NR_sched_setscheduler: u32 = 5141; -pub const __NR_sched_getscheduler: u32 = 5142; -pub const __NR_sched_get_priority_max: u32 = 5143; -pub const __NR_sched_get_priority_min: u32 = 5144; -pub const __NR_sched_rr_get_interval: u32 = 5145; -pub const __NR_mlock: u32 = 5146; -pub const __NR_munlock: u32 = 5147; -pub const __NR_mlockall: u32 = 5148; -pub const __NR_munlockall: u32 = 5149; -pub const __NR_vhangup: u32 = 5150; -pub const __NR_pivot_root: u32 = 5151; -pub const __NR__sysctl: u32 = 5152; -pub const __NR_prctl: u32 = 5153; -pub const __NR_adjtimex: u32 = 5154; -pub const __NR_setrlimit: u32 = 5155; -pub const __NR_chroot: u32 = 5156; -pub const __NR_sync: u32 = 5157; -pub const __NR_acct: u32 = 5158; -pub const __NR_settimeofday: u32 = 5159; -pub const __NR_mount: u32 = 5160; -pub const __NR_umount2: u32 = 5161; -pub const __NR_swapon: u32 = 5162; -pub const __NR_swapoff: u32 = 5163; -pub const __NR_reboot: u32 = 5164; -pub const __NR_sethostname: u32 = 5165; -pub const __NR_setdomainname: u32 = 5166; -pub const __NR_create_module: u32 = 5167; -pub const __NR_init_module: u32 = 5168; -pub const __NR_delete_module: u32 = 5169; -pub const __NR_get_kernel_syms: u32 = 5170; -pub const __NR_query_module: u32 = 5171; -pub const __NR_quotactl: u32 = 5172; -pub const __NR_nfsservctl: u32 = 5173; -pub const __NR_getpmsg: u32 = 5174; -pub const __NR_putpmsg: u32 = 5175; -pub const __NR_afs_syscall: u32 = 5176; -pub const __NR_reserved177: u32 = 5177; -pub const __NR_gettid: u32 = 5178; -pub const __NR_readahead: u32 = 5179; -pub const __NR_setxattr: u32 = 5180; -pub const __NR_lsetxattr: u32 = 5181; -pub const __NR_fsetxattr: u32 = 5182; -pub const __NR_getxattr: u32 = 5183; -pub const __NR_lgetxattr: u32 = 5184; -pub const __NR_fgetxattr: u32 = 5185; -pub const __NR_listxattr: u32 = 5186; -pub const __NR_llistxattr: u32 = 5187; -pub const __NR_flistxattr: u32 = 5188; -pub const __NR_removexattr: u32 = 5189; -pub const __NR_lremovexattr: u32 = 5190; -pub const __NR_fremovexattr: u32 = 5191; -pub const __NR_tkill: u32 = 5192; -pub const __NR_reserved193: u32 = 5193; -pub const __NR_futex: u32 = 5194; -pub const __NR_sched_setaffinity: u32 = 5195; -pub const __NR_sched_getaffinity: u32 = 5196; -pub const __NR_cacheflush: u32 = 5197; -pub const __NR_cachectl: u32 = 5198; -pub const __NR_sysmips: u32 = 5199; -pub const __NR_io_setup: u32 = 5200; -pub const __NR_io_destroy: u32 = 5201; -pub const __NR_io_getevents: u32 = 5202; -pub const __NR_io_submit: u32 = 5203; -pub const __NR_io_cancel: u32 = 5204; -pub const __NR_exit_group: u32 = 5205; -pub const __NR_lookup_dcookie: u32 = 5206; -pub const __NR_epoll_create: u32 = 5207; -pub const __NR_epoll_ctl: u32 = 5208; -pub const __NR_epoll_wait: u32 = 5209; -pub const __NR_remap_file_pages: u32 = 5210; -pub const __NR_rt_sigreturn: u32 = 5211; -pub const __NR_set_tid_address: u32 = 5212; -pub const __NR_restart_syscall: u32 = 5213; -pub const __NR_semtimedop: u32 = 5214; -pub const __NR_fadvise64: u32 = 5215; -pub const __NR_timer_create: u32 = 5216; -pub const __NR_timer_settime: u32 = 5217; -pub const __NR_timer_gettime: u32 = 5218; -pub const __NR_timer_getoverrun: u32 = 5219; -pub const __NR_timer_delete: u32 = 5220; -pub const __NR_clock_settime: u32 = 5221; -pub const __NR_clock_gettime: u32 = 5222; -pub const __NR_clock_getres: u32 = 5223; -pub const __NR_clock_nanosleep: u32 = 5224; -pub const __NR_tgkill: u32 = 5225; -pub const __NR_utimes: u32 = 5226; -pub const __NR_mbind: u32 = 5227; -pub const __NR_get_mempolicy: u32 = 5228; -pub const __NR_set_mempolicy: u32 = 5229; -pub const __NR_mq_open: u32 = 5230; -pub const __NR_mq_unlink: u32 = 5231; -pub const __NR_mq_timedsend: u32 = 5232; -pub const __NR_mq_timedreceive: u32 = 5233; -pub const __NR_mq_notify: u32 = 5234; -pub const __NR_mq_getsetattr: u32 = 5235; -pub const __NR_vserver: u32 = 5236; -pub const __NR_waitid: u32 = 5237; -pub const __NR_add_key: u32 = 5239; -pub const __NR_request_key: u32 = 5240; -pub const __NR_keyctl: u32 = 5241; -pub const __NR_set_thread_area: u32 = 5242; -pub const __NR_inotify_init: u32 = 5243; -pub const __NR_inotify_add_watch: u32 = 5244; -pub const __NR_inotify_rm_watch: u32 = 5245; -pub const __NR_migrate_pages: u32 = 5246; -pub const __NR_openat: u32 = 5247; -pub const __NR_mkdirat: u32 = 5248; -pub const __NR_mknodat: u32 = 5249; -pub const __NR_fchownat: u32 = 5250; -pub const __NR_futimesat: u32 = 5251; -pub const __NR_newfstatat: u32 = 5252; -pub const __NR_unlinkat: u32 = 5253; -pub const __NR_renameat: u32 = 5254; -pub const __NR_linkat: u32 = 5255; -pub const __NR_symlinkat: u32 = 5256; -pub const __NR_readlinkat: u32 = 5257; -pub const __NR_fchmodat: u32 = 5258; -pub const __NR_faccessat: u32 = 5259; -pub const __NR_pselect6: u32 = 5260; -pub const __NR_ppoll: u32 = 5261; -pub const __NR_unshare: u32 = 5262; -pub const __NR_splice: u32 = 5263; -pub const __NR_sync_file_range: u32 = 5264; -pub const __NR_tee: u32 = 5265; -pub const __NR_vmsplice: u32 = 5266; -pub const __NR_move_pages: u32 = 5267; -pub const __NR_set_robust_list: u32 = 5268; -pub const __NR_get_robust_list: u32 = 5269; -pub const __NR_kexec_load: u32 = 5270; -pub const __NR_getcpu: u32 = 5271; -pub const __NR_epoll_pwait: u32 = 5272; -pub const __NR_ioprio_set: u32 = 5273; -pub const __NR_ioprio_get: u32 = 5274; -pub const __NR_utimensat: u32 = 5275; -pub const __NR_signalfd: u32 = 5276; -pub const __NR_timerfd: u32 = 5277; -pub const __NR_eventfd: u32 = 5278; -pub const __NR_fallocate: u32 = 5279; -pub const __NR_timerfd_create: u32 = 5280; -pub const __NR_timerfd_gettime: u32 = 5281; -pub const __NR_timerfd_settime: u32 = 5282; -pub const __NR_signalfd4: u32 = 5283; -pub const __NR_eventfd2: u32 = 5284; -pub const __NR_epoll_create1: u32 = 5285; -pub const __NR_dup3: u32 = 5286; -pub const __NR_pipe2: u32 = 5287; -pub const __NR_inotify_init1: u32 = 5288; -pub const __NR_preadv: u32 = 5289; -pub const __NR_pwritev: u32 = 5290; -pub const __NR_rt_tgsigqueueinfo: u32 = 5291; -pub const __NR_perf_event_open: u32 = 5292; -pub const __NR_accept4: u32 = 5293; -pub const __NR_recvmmsg: u32 = 5294; -pub const __NR_fanotify_init: u32 = 5295; -pub const __NR_fanotify_mark: u32 = 5296; -pub const __NR_prlimit64: u32 = 5297; -pub const __NR_name_to_handle_at: u32 = 5298; -pub const __NR_open_by_handle_at: u32 = 5299; -pub const __NR_clock_adjtime: u32 = 5300; -pub const __NR_syncfs: u32 = 5301; -pub const __NR_sendmmsg: u32 = 5302; -pub const __NR_setns: u32 = 5303; -pub const __NR_process_vm_readv: u32 = 5304; -pub const __NR_process_vm_writev: u32 = 5305; -pub const __NR_kcmp: u32 = 5306; -pub const __NR_finit_module: u32 = 5307; -pub const __NR_getdents64: u32 = 5308; -pub const __NR_sched_setattr: u32 = 5309; -pub const __NR_sched_getattr: u32 = 5310; -pub const __NR_renameat2: u32 = 5311; -pub const __NR_seccomp: u32 = 5312; -pub const __NR_getrandom: u32 = 5313; -pub const __NR_memfd_create: u32 = 5314; -pub const __NR_bpf: u32 = 5315; -pub const __NR_execveat: u32 = 5316; -pub const __NR_userfaultfd: u32 = 5317; -pub const __NR_membarrier: u32 = 5318; -pub const __NR_mlock2: u32 = 5319; -pub const __NR_copy_file_range: u32 = 5320; -pub const __NR_preadv2: u32 = 5321; -pub const __NR_pwritev2: u32 = 5322; -pub const __NR_pkey_mprotect: u32 = 5323; -pub const __NR_pkey_alloc: u32 = 5324; -pub const __NR_pkey_free: u32 = 5325; -pub const __NR_statx: u32 = 5326; -pub const __NR_rseq: u32 = 5327; -pub const __NR_io_pgetevents: u32 = 5328; -pub const __NR_pidfd_send_signal: u32 = 5424; -pub const __NR_io_uring_setup: u32 = 5425; -pub const __NR_io_uring_enter: u32 = 5426; -pub const __NR_io_uring_register: u32 = 5427; -pub const __NR_open_tree: u32 = 5428; -pub const __NR_move_mount: u32 = 5429; -pub const __NR_fsopen: u32 = 5430; -pub const __NR_fsconfig: u32 = 5431; -pub const __NR_fsmount: u32 = 5432; -pub const __NR_fspick: u32 = 5433; -pub const __NR_pidfd_open: u32 = 5434; -pub const __NR_clone3: u32 = 5435; -pub const __NR_close_range: u32 = 5436; -pub const __NR_openat2: u32 = 5437; -pub const __NR_pidfd_getfd: u32 = 5438; -pub const __NR_faccessat2: u32 = 5439; -pub const __NR_process_madvise: u32 = 5440; -pub const __NR_epoll_pwait2: u32 = 5441; -pub const __NR_mount_setattr: u32 = 5442; -pub const __NR_quotactl_fd: u32 = 5443; -pub const __NR_landlock_create_ruleset: u32 = 5444; -pub const __NR_landlock_add_rule: u32 = 5445; -pub const __NR_landlock_restrict_self: u32 = 5446; -pub const __NR_process_mrelease: u32 = 5448; -pub const __NR_futex_waitv: u32 = 5449; -pub const __NR_set_mempolicy_home_node: u32 = 5450; -pub const __OLD_UTS_LEN: u32 = 8; -pub const __NEW_UTS_LEN: u32 = 64; -pub const WNOHANG: u32 = 1; -pub const WUNTRACED: u32 = 2; -pub const WSTOPPED: u32 = 2; -pub const WEXITED: u32 = 4; -pub const WCONTINUED: u32 = 8; -pub const WNOWAIT: u32 = 16777216; -pub const __WNOTHREAD: u32 = 536870912; -pub const __WALL: u32 = 1073741824; -pub const __WCLONE: u32 = 2147483648; -pub const P_ALL: u32 = 0; -pub const P_PID: u32 = 1; -pub const P_PGID: u32 = 2; -pub const P_PIDFD: u32 = 3; -pub const XATTR_CREATE: u32 = 1; -pub const XATTR_REPLACE: u32 = 2; -pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0"; -pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0"; -pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0"; -pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0"; -pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0"; -pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0"; -pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0"; -pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0"; -pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0"; -pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0"; -pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0"; -pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0"; -pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0"; -pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0"; -pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0"; -pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0"; -pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0"; -pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0"; -pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0"; -pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0"; -pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0"; -pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0"; -pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0"; -pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0"; -pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0"; -pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0"; -pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0"; -pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0"; -pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0"; -pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0"; -pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0"; -pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0"; -pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0"; -pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0"; -pub const MFD_CLOEXEC: u32 = 1; -pub const MFD_ALLOW_SEALING: u32 = 2; -pub const MFD_HUGETLB: u32 = 4; -pub const MFD_NOEXEC_SEAL: u32 = 8; -pub const MFD_EXEC: u32 = 16; -pub const MFD_HUGE_SHIFT: u32 = 26; -pub const MFD_HUGE_MASK: u32 = 63; -pub const MFD_HUGE_64KB: u32 = 1073741824; -pub const MFD_HUGE_512KB: u32 = 1275068416; -pub const MFD_HUGE_1MB: u32 = 1342177280; -pub const MFD_HUGE_2MB: u32 = 1409286144; -pub const MFD_HUGE_8MB: u32 = 1543503872; -pub const MFD_HUGE_16MB: u32 = 1610612736; -pub const MFD_HUGE_32MB: u32 = 1677721600; -pub const MFD_HUGE_256MB: u32 = 1879048192; -pub const MFD_HUGE_512MB: u32 = 1946157056; -pub const MFD_HUGE_1GB: u32 = 2013265920; -pub const MFD_HUGE_2GB: u32 = 2080374784; -pub const MFD_HUGE_16GB: u32 = 2281701376; -pub const TFD_TIMER_ABSTIME: u32 = 1; -pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; -pub const TFD_CLOEXEC: u32 = 524288; -pub const TFD_NONBLOCK: u32 = 128; -pub const USERFAULTFD_IOC: u32 = 170; -pub const _UFFDIO_REGISTER: u32 = 0; -pub const _UFFDIO_UNREGISTER: u32 = 1; -pub const _UFFDIO_WAKE: u32 = 2; -pub const _UFFDIO_COPY: u32 = 3; -pub const _UFFDIO_ZEROPAGE: u32 = 4; -pub const _UFFDIO_WRITEPROTECT: u32 = 6; -pub const _UFFDIO_CONTINUE: u32 = 7; -pub const _UFFDIO_API: u32 = 63; -pub const UFFDIO: u32 = 170; -pub const UFFD_EVENT_PAGEFAULT: u32 = 18; -pub const UFFD_EVENT_FORK: u32 = 19; -pub const UFFD_EVENT_REMAP: u32 = 20; -pub const UFFD_EVENT_REMOVE: u32 = 21; -pub const UFFD_EVENT_UNMAP: u32 = 22; -pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; -pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; -pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; -pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; -pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; -pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; -pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; -pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; -pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; -pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; -pub const UFFD_FEATURE_SIGBUS: u32 = 128; -pub const UFFD_FEATURE_THREAD_ID: u32 = 256; -pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; -pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; -pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; -pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; -pub const UFFD_USER_MODE_ONLY: u32 = 1; -pub const IORING_FILE_INDEX_ALLOC: i32 = -1; -pub const IORING_SETUP_IOPOLL: u32 = 1; -pub const IORING_SETUP_SQPOLL: u32 = 2; -pub const IORING_SETUP_SQ_AFF: u32 = 4; -pub const IORING_SETUP_CQSIZE: u32 = 8; -pub const IORING_SETUP_CLAMP: u32 = 16; -pub const IORING_SETUP_ATTACH_WQ: u32 = 32; -pub const IORING_SETUP_R_DISABLED: u32 = 64; -pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; -pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; -pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; -pub const IORING_SETUP_SQE128: u32 = 1024; -pub const IORING_SETUP_CQE32: u32 = 2048; -pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; -pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; -pub const IORING_URING_CMD_FIXED: u32 = 1; -pub const IORING_FSYNC_DATASYNC: u32 = 1; -pub const IORING_TIMEOUT_ABS: u32 = 1; -pub const IORING_TIMEOUT_UPDATE: u32 = 2; -pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; -pub const IORING_TIMEOUT_REALTIME: u32 = 8; -pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; -pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; -pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; -pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; -pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; -pub const IORING_POLL_ADD_MULTI: u32 = 1; -pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; -pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; -pub const IORING_POLL_ADD_LEVEL: u32 = 8; -pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; -pub const IORING_ASYNC_CANCEL_FD: u32 = 2; -pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; -pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; -pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; -pub const IORING_RECV_MULTISHOT: u32 = 2; -pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; -pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; -pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; -pub const IORING_ACCEPT_MULTISHOT: u32 = 1; -pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; -pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; -pub const IORING_CQE_F_BUFFER: u32 = 1; -pub const IORING_CQE_F_MORE: u32 = 2; -pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; -pub const IORING_CQE_F_NOTIF: u32 = 8; -pub const IORING_OFF_SQ_RING: u32 = 0; -pub const IORING_OFF_CQ_RING: u32 = 134217728; -pub const IORING_OFF_SQES: u32 = 268435456; -pub const IORING_SQ_NEED_WAKEUP: u32 = 1; -pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; -pub const IORING_SQ_TASKRUN: u32 = 4; -pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; -pub const IORING_ENTER_GETEVENTS: u32 = 1; -pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; -pub const IORING_ENTER_SQ_WAIT: u32 = 4; -pub const IORING_ENTER_EXT_ARG: u32 = 8; -pub const IORING_ENTER_REGISTERED_RING: u32 = 16; -pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; -pub const IORING_FEAT_NODROP: u32 = 2; -pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; -pub const IORING_FEAT_RW_CUR_POS: u32 = 8; -pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; -pub const IORING_FEAT_FAST_POLL: u32 = 32; -pub const IORING_FEAT_POLL_32BITS: u32 = 64; -pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; -pub const IORING_FEAT_EXT_ARG: u32 = 256; -pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; -pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; -pub const IORING_FEAT_CQE_SKIP: u32 = 2048; -pub const IORING_FEAT_LINKED_FILE: u32 = 4096; -pub const IORING_FEAT_REG_REG_RING: u32 = 8192; -pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; -pub const IORING_REGISTER_FILES_SKIP: i32 = -2; -pub const IO_URING_OP_SUPPORTED: u32 = 1; -pub const DT_UNKNOWN: u32 = 0; -pub const DT_FIFO: u32 = 1; -pub const DT_CHR: u32 = 2; -pub const DT_DIR: u32 = 4; -pub const DT_BLK: u32 = 6; -pub const DT_REG: u32 = 8; -pub const DT_LNK: u32 = 10; -pub const DT_SOCK: u32 = 12; -pub const SHUT_RD: u32 = 0; -pub const SHUT_WR: u32 = 1; -pub const SHUT_RDWR: u32 = 2; -pub const STAT_HAVE_NSEC: u32 = 1; -pub const SOCK_STREAM: u32 = 2; -pub const SOCK_DGRAM: u32 = 1; -pub const SOCK_RAW: u32 = 3; -pub const SOCK_RDM: u32 = 4; -pub const SOCK_SEQPACKET: u32 = 5; -pub const F_OK: u32 = 0; -pub const R_OK: u32 = 4; -pub const W_OK: u32 = 2; -pub const X_OK: u32 = 1; -pub const UTIME_NOW: u32 = 1073741823; -pub const UTIME_OMIT: u32 = 1073741822; -pub const MSG_DONTWAIT: u32 = 64; -pub const AF_UNSPEC: u32 = 0; -pub const AF_UNIX: u32 = 1; -pub const AF_INET: u32 = 2; -pub const AF_AX25: u32 = 3; -pub const AF_IPX: u32 = 4; -pub const AF_APPLETALK: u32 = 5; -pub const AF_NETROM: u32 = 6; -pub const AF_BRIDGE: u32 = 7; -pub const AF_ATMPVC: u32 = 8; -pub const AF_X25: u32 = 9; -pub const AF_INET6: u32 = 10; -pub const AF_ROSE: u32 = 11; -pub const AF_DECnet: u32 = 12; -pub const AF_NETBEUI: u32 = 13; -pub const AF_SECURITY: u32 = 14; -pub const AF_KEY: u32 = 15; -pub const AF_NETLINK: u32 = 16; -pub const AF_PACKET: u32 = 17; -pub const AF_ASH: u32 = 18; -pub const AF_ECONET: u32 = 19; -pub const AF_ATMSVC: u32 = 20; -pub const AF_RDS: u32 = 21; -pub const AF_SNA: u32 = 22; -pub const AF_IRDA: u32 = 23; -pub const AF_PPPOX: u32 = 24; -pub const AF_WANPIPE: u32 = 25; -pub const AF_LLC: u32 = 26; -pub const AF_CAN: u32 = 29; -pub const AF_TIPC: u32 = 30; -pub const AF_BLUETOOTH: u32 = 31; -pub const AF_IUCV: u32 = 32; -pub const AF_RXRPC: u32 = 33; -pub const AF_ISDN: u32 = 34; -pub const AF_PHONET: u32 = 35; -pub const AF_IEEE802154: u32 = 36; -pub const AF_MAX: u32 = 37; -pub const MSG_OOB: u32 = 1; -pub const MSG_PEEK: u32 = 2; -pub const MSG_DONTROUTE: u32 = 4; -pub const MSG_CTRUNC: u32 = 8; -pub const MSG_PROBE: u32 = 16; -pub const MSG_TRUNC: u32 = 32; -pub const MSG_EOR: u32 = 128; -pub const MSG_WAITALL: u32 = 256; -pub const MSG_FIN: u32 = 512; -pub const MSG_SYN: u32 = 1024; -pub const MSG_CONFIRM: u32 = 2048; -pub const MSG_RST: u32 = 4096; -pub const MSG_ERRQUEUE: u32 = 8192; -pub const MSG_NOSIGNAL: u32 = 16384; -pub const MSG_MORE: u32 = 32768; -pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; -pub const STDIN_FILENO: u32 = 0; -pub const STDOUT_FILENO: u32 = 1; -pub const STDERR_FILENO: u32 = 2; -pub const RWF_HIPRI: u32 = 1; -pub const RWF_DSYNC: u32 = 2; -pub const RWF_SYNC: u32 = 4; -pub const RWF_NOWAIT: u32 = 8; -pub const RWF_APPEND: u32 = 16; -pub const EFD_SEMAPHORE: u32 = 1; -pub const EFD_CLOEXEC: u32 = 524288; -pub const EFD_NONBLOCK: u32 = 128; -pub const EPOLLIN: u32 = 1; -pub const EPOLLPRI: u32 = 2; -pub const EPOLLOUT: u32 = 4; -pub const EPOLLERR: u32 = 8; -pub const EPOLLHUP: u32 = 16; -pub const EPOLLNVAL: u32 = 32; -pub const EPOLLRDNORM: u32 = 64; -pub const EPOLLRDBAND: u32 = 128; -pub const EPOLLWRNORM: u32 = 256; -pub const EPOLLWRBAND: u32 = 512; -pub const EPOLLMSG: u32 = 1024; -pub const EPOLLRDHUP: u32 = 8192; -pub const EPOLLEXCLUSIVE: u32 = 268435456; -pub const EPOLLWAKEUP: u32 = 536870912; -pub const EPOLLONESHOT: u32 = 1073741824; -pub const EPOLLET: u32 = 2147483648; -pub const TFD_SHARED_FCNTL_FLAGS: u32 = 524416; -pub const TFD_CREATE_FLAGS: u32 = 524416; -pub const TFD_SETTIME_FLAGS: u32 = 1; -pub const SCM_RIGHTS: u32 = 1; -pub const SCM_CREDENTIALS: u32 = 2; -pub const SCM_SECURITY: u32 = 3; -pub const UFFD_API: u32 = 170; -pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; -pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; -pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; -pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; -pub const UFFDIO_COPY_MODE_WP: u32 = 2; -pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; -pub const POLLWRNORM: u32 = 4; -pub const TCSANOW: u32 = 21518; -pub const TCSADRAIN: u32 = 21519; -pub const TCSAFLUSH: u32 = 21520; -pub const SPLICE_F_MOVE: u32 = 1; -pub const SPLICE_F_NONBLOCK: u32 = 2; -pub const SPLICE_F_MORE: u32 = 4; -pub const SPLICE_F_GIFT: u32 = 8; -pub const MNT_FORCE: u32 = 1; -pub const MNT_DETACH: u32 = 2; -pub const MNT_EXPIRE: u32 = 4; -pub const UMOUNT_NOFOLLOW: u32 = 8; -pub const UMOUNT_UNUSED: u32 = 2147483648; -pub type size_t = crate::ctypes::c_ulong; -pub type ssize_t = crate::ctypes::c_long; -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_long; -pub type __u64 = crate::ctypes::c_ulong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 16usize], -} -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_daddr_t = crate::ctypes::c_long; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_old_dev_t = crate::ctypes::c_uint; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_header_struct { -pub version: __u32, -pub pid: crate::ctypes::c_int, -} -pub type cap_user_header_t = *mut __user_cap_header_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_data_struct { -pub effective: __u32, -pub permitted: __u32, -pub inheritable: __u32, -} -pub type cap_user_data_t = *mut __user_cap_data_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data { -pub magic_etc: __le32, -pub data: [vfs_cap_data__bindgen_ty_1; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data { -pub magic_etc: __le32, -pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], -pub rootid: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct f_owner_ex { -pub type_: crate::ctypes::c_int, -pub pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_off_t, -pub l_len: __kernel_off_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock64 { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_loff_t, -pub l_len: __kernel_loff_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct open_how { -pub flags: __u64, -pub mode: __u64, -pub resolve: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct epoll_event { -pub events: __poll_t, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v1 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub master_key_descriptor: [__u8; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_key { -pub mode: __u32, -pub raw: [__u8; 64usize], -pub size: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v2 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub __reserved: [__u8; 4usize], -pub master_key_identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_get_policy_ex_arg { -pub policy_size: __u64, -pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { -pub version: __u8, -pub v1: fscrypt_policy_v1, -pub v2: fscrypt_policy_v2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_key_specifier { -pub type_: __u32, -pub __reserved: __u32, -pub u: fscrypt_key_specifier__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_key_specifier__bindgen_ty_1 { -pub __reserved: [__u8; 32usize], -pub descriptor: [__u8; 8usize], -pub identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct fscrypt_provisioning_key_payload { -pub type_: __u32, -pub __reserved: __u32, -pub raw: __IncompleteArrayField<__u8>, -} -#[repr(C)] -pub struct fscrypt_add_key_arg { -pub key_spec: fscrypt_key_specifier, -pub raw_size: __u32, -pub key_id: __u32, -pub __reserved: [__u32; 8usize], -pub raw: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_remove_key_arg { -pub key_spec: fscrypt_key_specifier, -pub removal_status_flags: __u32, -pub __reserved: [__u32; 5usize], +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], } #[repr(C)] #[derive(Copy, Clone)] @@ -2946,19 +230,6 @@ pub user_count: __u32, pub __out_reserved: [__u32; 13usize], } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum fsconfig_command { -FSCONFIG_SET_FLAG = 0, -FSCONFIG_SET_STRING = 1, -FSCONFIG_SET_BINARY = 2, -FSCONFIG_SET_PATH = 3, -FSCONFIG_SET_PATH_EMPTY = 4, -FSCONFIG_SET_FD = 5, -FSCONFIG_CMD_CREATE = 6, -FSCONFIG_CMD_RECONFIGURE = 7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct mount_attr { @@ -3022,687 +293,37 @@ pub fsx_extsize: __u32, pub fsx_nextents: __u32, pub fsx_projid: __u32, -pub fsx_cowextsize: __u32, -pub fsx_pad: [crate::ctypes::c_uchar; 8usize], -} -pub type __kernel_rwf_t = crate::ctypes::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct futex_waitv { -pub val: __u64, -pub uaddr: __u64, -pub flags: __u32, -pub __reserved: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct robust_list { -pub next: *mut robust_list, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct robust_list_head { -pub list: robust_list, -pub futex_offset: crate::ctypes::c_long, -pub list_op_pending: *mut robust_list, -} -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], -} -pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; -pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; -pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; -pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; -pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; -pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; -pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; -pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; -pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; -pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; -pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; -pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; -pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; -pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; -pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; -pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; -pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; -pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; -pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; -pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; -pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; -pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; -pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; -pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; -pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; -pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; -pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; -pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; -pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_1 { -IPPROTO_IP = 0, -IPPROTO_ICMP = 1, -IPPROTO_IGMP = 2, -IPPROTO_IPIP = 4, -IPPROTO_TCP = 6, -IPPROTO_EGP = 8, -IPPROTO_PUP = 12, -IPPROTO_UDP = 17, -IPPROTO_IDP = 22, -IPPROTO_TP = 29, -IPPROTO_DCCP = 33, -IPPROTO_IPV6 = 41, -IPPROTO_RSVP = 46, -IPPROTO_GRE = 47, -IPPROTO_ESP = 50, -IPPROTO_AH = 51, -IPPROTO_MTP = 92, -IPPROTO_BEETPH = 94, -IPPROTO_ENCAP = 98, -IPPROTO_PIM = 103, -IPPROTO_COMP = 108, -IPPROTO_L2TP = 115, -IPPROTO_SCTP = 132, -IPPROTO_UDPLITE = 136, -IPPROTO_MPLS = 137, -IPPROTO_ETHERNET = 143, -IPPROTO_RAW = 255, -IPPROTO_MPTCP = 262, -IPPROTO_MAX = 263, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_addr { -pub s_addr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq { -pub imr_multiaddr: in_addr, -pub imr_interface: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreqn { -pub imr_multiaddr: in_addr, -pub imr_address: in_addr, -pub imr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq_source { -pub imr_multiaddr: __be32, -pub imr_interface: __be32, -pub imr_sourceaddr: __be32, -} -#[repr(C)] -pub struct ip_msfilter { -pub imsf_multiaddr: __be32, -pub imsf_interface: __be32, -pub imsf_fmode: __u32, -pub imsf_numsrc: __u32, -pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, -} -#[repr(C)] -pub struct ip_msfilter__bindgen_ty_1 { -pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, -pub __bindgen_anon_1: __BindgenUnionField, -pub bindgen_union_field: u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { -pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -pub imsf_slist_flex: __IncompleteArrayField<__be32>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_req { -pub gr_interface: __u32, -pub gr_group: __kernel_sockaddr_storage, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_source_req { -pub gsr_interface: __u32, -pub gsr_group: __kernel_sockaddr_storage, -pub gsr_source: __kernel_sockaddr_storage, -} -#[repr(C)] -pub struct group_filter { -pub __bindgen_anon_1: group_filter__bindgen_ty_1, -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 34usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { -pub gf_interface_aux: __u32, -pub gf_group_aux: __kernel_sockaddr_storage, -pub gf_fmode_aux: __u32, -pub gf_numsrc_aux: __u32, -pub gf_slist: [__kernel_sockaddr_storage; 1usize], -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { -pub gf_interface: __u32, -pub gf_group: __kernel_sockaddr_storage, -pub gf_fmode: __u32, -pub gf_numsrc: __u32, -pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_pktinfo { -pub ipi_ifindex: crate::ctypes::c_int, -pub ipi_spec_dst: in_addr, -pub ipi_addr: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_in { -pub sin_family: __kernel_sa_family_t, -pub sin_port: __be16, -pub sin_addr: in_addr, -pub __pad: [crate::ctypes::c_uchar; 8usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct inotify_event { -pub wd: __s32, -pub mask: __u32, -pub cookie: __u32, -pub len: __u32, -pub name: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct iphdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub tos: __u8, -pub tot_len: __be16, -pub id: __be16, -pub frag_off: __be16, -pub ttl: __u8, -pub protocol: __u8, -pub check: __sum16, -pub __bindgen_anon_1: iphdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union iphdr__bindgen_ty_1 { -pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: __be32, -pub daddr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: __be32, -pub daddr: __be32, -} -impl iphdr { -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn ihl(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_ihl(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; -ihl as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_auth_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub reserved: __be16, -pub spi: __be32, -pub seq_no: __be32, -pub auth_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_esp_hdr { -pub spi: __be32, -pub seq_no: __be32, -pub enc_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_comp_hdr { -pub nexthdr: __u8, -pub flags: __u8, -pub cpi: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_beet_phdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub padlen: __u8, -pub reserved: __u8, -} -pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; -pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; -pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; -pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; -pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; -pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; -pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; -pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; -pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; -pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; -pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; -pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; -pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; -pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; -pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; -pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; -pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; -pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; -pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; -pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; -pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; -pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; -pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; -pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; -pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; -pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; -pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; -pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; -pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_2 { -IPV4_DEVCONF_FORWARDING = 1, -IPV4_DEVCONF_MC_FORWARDING = 2, -IPV4_DEVCONF_PROXY_ARP = 3, -IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, -IPV4_DEVCONF_SECURE_REDIRECTS = 5, -IPV4_DEVCONF_SEND_REDIRECTS = 6, -IPV4_DEVCONF_SHARED_MEDIA = 7, -IPV4_DEVCONF_RP_FILTER = 8, -IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, -IPV4_DEVCONF_BOOTP_RELAY = 10, -IPV4_DEVCONF_LOG_MARTIANS = 11, -IPV4_DEVCONF_TAG = 12, -IPV4_DEVCONF_ARPFILTER = 13, -IPV4_DEVCONF_MEDIUM_ID = 14, -IPV4_DEVCONF_NOXFRM = 15, -IPV4_DEVCONF_NOPOLICY = 16, -IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, -IPV4_DEVCONF_ARP_ANNOUNCE = 18, -IPV4_DEVCONF_ARP_IGNORE = 19, -IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, -IPV4_DEVCONF_ARP_ACCEPT = 21, -IPV4_DEVCONF_ARP_NOTIFY = 22, -IPV4_DEVCONF_ACCEPT_LOCAL = 23, -IPV4_DEVCONF_SRC_VMARK = 24, -IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, -IPV4_DEVCONF_ROUTE_LOCALNET = 26, -IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, -IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, -IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, -IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, -IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, -IPV4_DEVCONF_BC_FORWARDING = 32, -IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, -__IPV4_DEVCONF_MAX = 34, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_addr { -pub in6_u: in6_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union in6_addr__bindgen_ty_1 { -pub u6_addr8: [__u8; 16usize], -pub u6_addr16: [__be16; 8usize], -pub u6_addr32: [__be32; 4usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_in6 { -pub sin6_family: crate::ctypes::c_ushort, -pub sin6_port: __be16, -pub sin6_flowinfo: __be32, -pub sin6_addr: in6_addr, -pub sin6_scope_id: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6_mreq { -pub ipv6mr_multiaddr: in6_addr, -pub ipv6mr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_flowlabel_req { -pub flr_dst: in6_addr, -pub flr_label: __be32, -pub flr_action: __u8, -pub flr_share: __u8, -pub flr_flags: __u16, -pub flr_expires: __u16, -pub flr_linger: __u16, -pub __flr_pad: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_pktinfo { -pub ipi6_addr: in6_addr, -pub ipi6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ip6_mtuinfo { -pub ip6m_addr: sockaddr_in6, -pub ip6m_mtu: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_ifreq { -pub ifr6_addr: in6_addr, -pub ifr6_prefixlen: __u32, -pub ifr6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_rt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub type_: __u8, -pub segments_left: __u8, -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_opt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -} -#[repr(C)] -pub struct rt0_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rt2_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: in6_addr, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct ipv6_destopt_hao { -pub type_: __u8, -pub length: __u8, -pub addr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub flow_lbl: [__u8; 3usize], -pub payload_len: __be16, -pub nexthdr: __u8, -pub hop_limit: __u8, -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ipv6hdr__bindgen_ty_1 { -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -impl ipv6hdr { -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn priority(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_priority(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let priority: u8 = unsafe { ::core::mem::transmute(priority) }; -priority as u64 -}); -__bindgen_bitfield_unit +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct futex_waitv { +pub val: __u64, +pub uaddr: __u64, +pub flags: __u32, +pub __reserved: __u32, } -pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; -pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; -pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; -pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; -pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; -pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; -pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; -pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; -pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; -pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; -pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; -pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; -pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; -pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; -pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; -pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; -pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; -pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; -pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; -pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; -pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; -pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; -pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; -pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; -pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; -pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; -pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; -pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; -pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; -pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; -pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; -pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; -pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; -pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; -pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; -pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; -pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; -pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; -pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; -pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; -pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; -pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; -pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; -pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; -pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; -pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; -pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; -pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; -pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; -pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; -pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; -pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_3 { -DEVCONF_FORWARDING = 0, -DEVCONF_HOPLIMIT = 1, -DEVCONF_MTU6 = 2, -DEVCONF_ACCEPT_RA = 3, -DEVCONF_ACCEPT_REDIRECTS = 4, -DEVCONF_AUTOCONF = 5, -DEVCONF_DAD_TRANSMITS = 6, -DEVCONF_RTR_SOLICITS = 7, -DEVCONF_RTR_SOLICIT_INTERVAL = 8, -DEVCONF_RTR_SOLICIT_DELAY = 9, -DEVCONF_USE_TEMPADDR = 10, -DEVCONF_TEMP_VALID_LFT = 11, -DEVCONF_TEMP_PREFERED_LFT = 12, -DEVCONF_REGEN_MAX_RETRY = 13, -DEVCONF_MAX_DESYNC_FACTOR = 14, -DEVCONF_MAX_ADDRESSES = 15, -DEVCONF_FORCE_MLD_VERSION = 16, -DEVCONF_ACCEPT_RA_DEFRTR = 17, -DEVCONF_ACCEPT_RA_PINFO = 18, -DEVCONF_ACCEPT_RA_RTR_PREF = 19, -DEVCONF_RTR_PROBE_INTERVAL = 20, -DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, -DEVCONF_PROXY_NDP = 22, -DEVCONF_OPTIMISTIC_DAD = 23, -DEVCONF_ACCEPT_SOURCE_ROUTE = 24, -DEVCONF_MC_FORWARDING = 25, -DEVCONF_DISABLE_IPV6 = 26, -DEVCONF_ACCEPT_DAD = 27, -DEVCONF_FORCE_TLLAO = 28, -DEVCONF_NDISC_NOTIFY = 29, -DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, -DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, -DEVCONF_SUPPRESS_FRAG_NDISC = 32, -DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, -DEVCONF_USE_OPTIMISTIC = 34, -DEVCONF_ACCEPT_RA_MTU = 35, -DEVCONF_STABLE_SECRET = 36, -DEVCONF_USE_OIF_ADDRS_ONLY = 37, -DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, -DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, -DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, -DEVCONF_DROP_UNSOLICITED_NA = 41, -DEVCONF_KEEP_ADDR_ON_DOWN = 42, -DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, -DEVCONF_SEG6_ENABLED = 44, -DEVCONF_SEG6_REQUIRE_HMAC = 45, -DEVCONF_ENHANCED_DAD = 46, -DEVCONF_ADDR_GEN_MODE = 47, -DEVCONF_DISABLE_POLICY = 48, -DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, -DEVCONF_NDISC_TCLASS = 50, -DEVCONF_RPL_SEG_ENABLED = 51, -DEVCONF_RA_DEFRTR_METRIC = 52, -DEVCONF_IOAM6_ENABLED = 53, -DEVCONF_IOAM6_ID = 54, -DEVCONF_IOAM6_ID_WIDE = 55, -DEVCONF_NDISC_EVICT_NOCARRIER = 56, -DEVCONF_ACCEPT_UNTRACKED_NA = 57, -DEVCONF_MAX = 58, +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct robust_list { +pub next: *mut robust_list, } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum socket_state { -SS_FREE = 0, -SS_UNCONNECTED = 1, -SS_CONNECTING = 2, -SS_CONNECTED = 3, -SS_DISCONNECTING = 4, +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct robust_list_head { +pub list: robust_list, +pub futex_offset: crate::ctypes::c_long, +pub list_op_pending: *mut robust_list, +} +#[repr(C)] +#[derive(Debug)] +pub struct inotify_event { +pub wd: __s32, +pub mask: __u32, +pub cookie: __u32, +pub len: __u32, +pub name: __IncompleteArrayField, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -3712,24 +333,6 @@ pub revents: crate::ctypes::c_short, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prctl_mm_map { -pub start_code: __u64, -pub end_code: __u64, -pub start_data: __u64, -pub end_data: __u64, -pub start_brk: __u64, -pub brk: __u64, -pub start_stack: __u64, -pub arg_start: __u64, -pub arg_end: __u64, -pub env_start: __u64, -pub env_end: __u64, -pub auxv: *mut __u64, -pub auxv_size: __u32, -pub exe_fd: __u32, -} -#[repr(C)] #[derive(Debug)] pub struct rand_pool_info { pub entropy_count: crate::ctypes::c_int, @@ -3854,11 +457,6 @@ pub struct sigset_t { pub sig: [crate::ctypes::c_ulong; 2usize], } -pub type old_sigset_t = crate::ctypes::c_ulong; -pub type __signalfn_t = ::core::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::core::option::Option; -pub type __sigrestore_t = __restorefn_t; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct sigaction { @@ -3873,25 +471,6 @@ pub ss_size: __kernel_size_t, pub ss_flags: crate::ctypes::c_int, } -pub type stack_t = sigaltstack; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { -pub sival_int: crate::ctypes::c_int, -pub sival_ptr: *mut crate::ctypes::c_void, -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { -pub _kill: __sifields__bindgen_ty_1, -pub _timer: __sifields__bindgen_ty_2, -pub _rt: __sifields__bindgen_ty_3, -pub _sigchld: __sifields__bindgen_ty_4, -pub _sigfault: __sifields__bindgen_ty_5, -pub _sigpoll: __sifields__bindgen_ty_6, -pub _sigsys: __sifields__bindgen_ty_7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_1 { @@ -3929,15 +508,6 @@ pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { -pub _trapno: crate::ctypes::c_int, -pub _addr_lsb: crate::ctypes::c_short, -pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, -pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { pub _dummy_bnd: [crate::ctypes::c_char; 8usize], @@ -3947,598 +517,91 @@ #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 { -pub _dummy_pkey: [crate::ctypes::c_char; 8usize], -pub _pkey: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { -pub _data: crate::ctypes::c_ulong, -pub _type: __u32, -pub _flags: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_6 { -pub _band: crate::ctypes::c_long, -pub _fd: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_7 { -pub _call_addr: *mut crate::ctypes::c_void, -pub _syscall: crate::ctypes::c_int, -pub _arch: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo { -pub __bindgen_anon_1: siginfo__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { -pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, -pub _si_pad: [crate::ctypes::c_int; 32usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { -pub si_signo: crate::ctypes::c_int, -pub si_code: crate::ctypes::c_int, -pub si_errno: crate::ctypes::c_int, -pub _sifields: __sifields, -} -pub type siginfo_t = siginfo; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigevent { -pub sigev_value: sigval_t, -pub sigev_signo: crate::ctypes::c_int, -pub sigev_notify: crate::ctypes::c_int, -pub _sigev_un: sigevent__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { -pub _pad: [crate::ctypes::c_int; 12usize], -pub _tid: crate::ctypes::c_int, -pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { -pub _function: ::core::option::Option, -pub _attribute: *mut crate::ctypes::c_void, -} -pub type sigevent_t = sigevent; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statx_timestamp { -pub tv_sec: __s64, -pub tv_nsec: __u32, -pub __reserved: __s32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statx { -pub stx_mask: __u32, -pub stx_blksize: __u32, -pub stx_attributes: __u64, -pub stx_nlink: __u32, -pub stx_uid: __u32, -pub stx_gid: __u32, -pub stx_mode: __u16, -pub __spare0: [__u16; 1usize], -pub stx_ino: __u64, -pub stx_size: __u64, -pub stx_blocks: __u64, -pub stx_attributes_mask: __u64, -pub stx_atime: statx_timestamp, -pub stx_btime: statx_timestamp, -pub stx_ctime: statx_timestamp, -pub stx_mtime: statx_timestamp, -pub stx_rdev_major: __u32, -pub stx_rdev_minor: __u32, -pub stx_dev_major: __u32, -pub stx_dev_minor: __u32, -pub stx_mnt_id: __u64, -pub stx_dio_mem_align: __u32, -pub stx_dio_offset_align: __u32, -pub __spare3: [__u64; 12usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct sysinfo { -pub uptime: __kernel_long_t, -pub loads: [__kernel_ulong_t; 3usize], -pub totalram: __kernel_ulong_t, -pub freeram: __kernel_ulong_t, -pub sharedram: __kernel_ulong_t, -pub bufferram: __kernel_ulong_t, -pub totalswap: __kernel_ulong_t, -pub freeswap: __kernel_ulong_t, -pub procs: __u16, -pub pad: __u16, -pub totalhigh: __kernel_ulong_t, -pub freehigh: __kernel_ulong_t, -pub mem_unit: __u32, -pub _f: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcphdr { -pub source: __be16, -pub dest: __be16, -pub seq: __be32, -pub ack_seq: __be32, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub window: __be16, -pub check: __sum16, -pub urg_ptr: __be16, -} -impl tcphdr { -#[inline] -pub fn doff(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } -} -#[inline] -pub fn set_doff(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn res1(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } -} -#[inline] -pub fn set_res1(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn cwr(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } -} -#[inline] -pub fn set_cwr(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn ece(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } -} -#[inline] -pub fn set_ece(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 1u8, val as u64) -} -} -#[inline] -pub fn urg(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } -} -#[inline] -pub fn set_urg(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(10usize, 1u8, val as u64) -} -} -#[inline] -pub fn ack(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } -} -#[inline] -pub fn set_ack(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(11usize, 1u8, val as u64) -} -} -#[inline] -pub fn psh(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } -} -#[inline] -pub fn set_psh(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(12usize, 1u8, val as u64) -} -} -#[inline] -pub fn rst(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } -} -#[inline] -pub fn set_rst(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(13usize, 1u8, val as u64) -} -} -#[inline] -pub fn syn(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } -} -#[inline] -pub fn set_syn(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(14usize, 1u8, val as u64) -} -} -#[inline] -pub fn fin(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } -} -#[inline] -pub fn set_fin(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(15usize, 1u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let doff: u16 = unsafe { ::core::mem::transmute(doff) }; -doff as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let res1: u16 = unsafe { ::core::mem::transmute(res1) }; -res1 as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; -cwr as u64 -}); -__bindgen_bitfield_unit.set(9usize, 1u8, { -let ece: u16 = unsafe { ::core::mem::transmute(ece) }; -ece as u64 -}); -__bindgen_bitfield_unit.set(10usize, 1u8, { -let urg: u16 = unsafe { ::core::mem::transmute(urg) }; -urg as u64 -}); -__bindgen_bitfield_unit.set(11usize, 1u8, { -let ack: u16 = unsafe { ::core::mem::transmute(ack) }; -ack as u64 -}); -__bindgen_bitfield_unit.set(12usize, 1u8, { -let psh: u16 = unsafe { ::core::mem::transmute(psh) }; -psh as u64 -}); -__bindgen_bitfield_unit.set(13usize, 1u8, { -let rst: u16 = unsafe { ::core::mem::transmute(rst) }; -rst as u64 -}); -__bindgen_bitfield_unit.set(14usize, 1u8, { -let syn: u16 = unsafe { ::core::mem::transmute(syn) }; -syn as u64 -}); -__bindgen_bitfield_unit.set(15usize, 1u8, { -let fin: u16 = unsafe { ::core::mem::transmute(fin) }; -fin as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union tcp_word_hdr { -pub hdr: tcphdr, -pub words: [__be32; 5usize], -} -pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; -pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; -pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; -pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; -pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; -pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; -pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; -pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; -pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; -pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_4 { -TCP_FLAG_CWR = 8388608, -TCP_FLAG_ECE = 4194304, -TCP_FLAG_URG = 2097152, -TCP_FLAG_ACK = 1048576, -TCP_FLAG_PSH = 524288, -TCP_FLAG_RST = 262144, -TCP_FLAG_SYN = 131072, -TCP_FLAG_FIN = 65536, -TCP_RESERVED_BITS = 251658240, -TCP_DATA_OFFSET = 4026531840, +pub _dummy_pkey: [crate::ctypes::c_char; 8usize], +pub _pkey: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_repair_opt { -pub opt_code: __u32, -pub opt_val: __u32, +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { +pub _data: crate::ctypes::c_ulong, +pub _type: __u32, +pub _flags: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_repair_window { -pub snd_wl1: __u32, -pub snd_wnd: __u32, -pub max_window: __u32, -pub rcv_wnd: __u32, -pub rcv_wup: __u32, -} -pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; -pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; -pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; -pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_5 { -TCP_NO_QUEUE = 0, -TCP_RECV_QUEUE = 1, -TCP_SEND_QUEUE = 2, -TCP_QUEUES_NR = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_fastopen_client_fail { -TFO_STATUS_UNSPEC = 0, -TFO_COOKIE_UNAVAILABLE = 1, -TFO_DATA_NOT_ACKED = 2, -TFO_SYN_RETRANSMITTED = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_ca_state { -TCP_CA_Open = 0, -TCP_CA_Disorder = 1, -TCP_CA_CWR = 2, -TCP_CA_Recovery = 3, -TCP_CA_Loss = 4, +pub struct __sifields__bindgen_ty_6 { +pub _band: crate::ctypes::c_long, +pub _fd: crate::ctypes::c_int, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_info { -pub tcpi_state: __u8, -pub tcpi_ca_state: __u8, -pub tcpi_retransmits: __u8, -pub tcpi_probes: __u8, -pub tcpi_backoff: __u8, -pub tcpi_options: __u8, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub tcpi_rto: __u32, -pub tcpi_ato: __u32, -pub tcpi_snd_mss: __u32, -pub tcpi_rcv_mss: __u32, -pub tcpi_unacked: __u32, -pub tcpi_sacked: __u32, -pub tcpi_lost: __u32, -pub tcpi_retrans: __u32, -pub tcpi_fackets: __u32, -pub tcpi_last_data_sent: __u32, -pub tcpi_last_ack_sent: __u32, -pub tcpi_last_data_recv: __u32, -pub tcpi_last_ack_recv: __u32, -pub tcpi_pmtu: __u32, -pub tcpi_rcv_ssthresh: __u32, -pub tcpi_rtt: __u32, -pub tcpi_rttvar: __u32, -pub tcpi_snd_ssthresh: __u32, -pub tcpi_snd_cwnd: __u32, -pub tcpi_advmss: __u32, -pub tcpi_reordering: __u32, -pub tcpi_rcv_rtt: __u32, -pub tcpi_rcv_space: __u32, -pub tcpi_total_retrans: __u32, -pub tcpi_pacing_rate: __u64, -pub tcpi_max_pacing_rate: __u64, -pub tcpi_bytes_acked: __u64, -pub tcpi_bytes_received: __u64, -pub tcpi_segs_out: __u32, -pub tcpi_segs_in: __u32, -pub tcpi_notsent_bytes: __u32, -pub tcpi_min_rtt: __u32, -pub tcpi_data_segs_in: __u32, -pub tcpi_data_segs_out: __u32, -pub tcpi_delivery_rate: __u64, -pub tcpi_busy_time: __u64, -pub tcpi_rwnd_limited: __u64, -pub tcpi_sndbuf_limited: __u64, -pub tcpi_delivered: __u32, -pub tcpi_delivered_ce: __u32, -pub tcpi_bytes_sent: __u64, -pub tcpi_bytes_retrans: __u64, -pub tcpi_dsack_dups: __u32, -pub tcpi_reord_seen: __u32, -pub tcpi_rcv_ooopack: __u32, -pub tcpi_snd_wnd: __u32, -pub tcpi_rcv_wnd: __u32, -pub tcpi_rehash: __u32, -} -impl tcp_info { -#[inline] -pub fn tcpi_snd_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_rcv_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } -} -#[inline] -pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn tcpi_fastopen_client_fail(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } -} -#[inline] -pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 2u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; -tcpi_snd_wscale as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; -tcpi_rcv_wscale as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; -tcpi_delivery_rate_app_limited as u64 -}); -__bindgen_bitfield_unit.set(9usize, 2u8, { -let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; -tcpi_fastopen_client_fail as u64 -}); -__bindgen_bitfield_unit +pub struct __sifields__bindgen_ty_7 { +pub _call_addr: *mut crate::ctypes::c_void, +pub _syscall: crate::ctypes::c_int, +pub _arch: crate::ctypes::c_uint, } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo { +pub __bindgen_anon_1: siginfo__bindgen_ty_1, } -pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; -pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; -pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; -pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; -pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; -pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; -pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; -pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; -pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; -pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; -pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; -pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; -pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; -pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; -pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; -pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; -pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; -pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; -pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; -pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; -pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; -pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; -pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; -pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; -pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; -pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; -pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; -pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_6 { -TCP_NLA_PAD = 0, -TCP_NLA_BUSY = 1, -TCP_NLA_RWND_LIMITED = 2, -TCP_NLA_SNDBUF_LIMITED = 3, -TCP_NLA_DATA_SEGS_OUT = 4, -TCP_NLA_TOTAL_RETRANS = 5, -TCP_NLA_PACING_RATE = 6, -TCP_NLA_DELIVERY_RATE = 7, -TCP_NLA_SND_CWND = 8, -TCP_NLA_REORDERING = 9, -TCP_NLA_MIN_RTT = 10, -TCP_NLA_RECUR_RETRANS = 11, -TCP_NLA_DELIVERY_RATE_APP_LMT = 12, -TCP_NLA_SNDQ_SIZE = 13, -TCP_NLA_CA_STATE = 14, -TCP_NLA_SND_SSTHRESH = 15, -TCP_NLA_DELIVERED = 16, -TCP_NLA_DELIVERED_CE = 17, -TCP_NLA_BYTES_SENT = 18, -TCP_NLA_BYTES_RETRANS = 19, -TCP_NLA_DSACK_DUPS = 20, -TCP_NLA_REORD_SEEN = 21, -TCP_NLA_SRTT = 22, -TCP_NLA_TIMEOUT_REHASH = 23, -TCP_NLA_BYTES_NOTSENT = 24, -TCP_NLA_EDT = 25, -TCP_NLA_TTL = 26, -TCP_NLA_REHASH = 27, +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { +pub si_signo: crate::ctypes::c_int, +pub si_code: crate::ctypes::c_int, +pub si_errno: crate::ctypes::c_int, +pub _sifields: __sifields, } #[repr(C)] #[derive(Copy, Clone)] -pub struct tcp_md5sig { -pub tcpm_addr: __kernel_sockaddr_storage, -pub tcpm_flags: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_ifindex: crate::ctypes::c_int, -pub tcpm_key: [__u8; 80usize], +pub struct sigevent { +pub sigev_value: sigval_t, +pub sigev_signo: crate::ctypes::c_int, +pub sigev_notify: crate::ctypes::c_int, +pub _sigev_un: sigevent__bindgen_ty_1, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_diag_md5sig { -pub tcpm_family: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_addr: [__be32; 4usize], -pub tcpm_key: [__u8; 80usize], +pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { +pub _function: ::core::option::Option, +pub _attribute: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_zerocopy_receive { -pub address: __u64, -pub length: __u32, -pub recv_skip_hint: __u32, -pub inq: __u32, -pub err: __s32, -pub copybuf_address: __u64, -pub copybuf_len: __s32, -pub flags: __u32, -pub msg_control: __u64, -pub msg_controllen: __u64, -pub msg_flags: __u32, -pub reserved: __u32, +pub struct statx_timestamp { +pub tv_sec: __s64, +pub tv_nsec: __u32, +pub __reserved: __s32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statx { +pub stx_mask: __u32, +pub stx_blksize: __u32, +pub stx_attributes: __u64, +pub stx_nlink: __u32, +pub stx_uid: __u32, +pub stx_gid: __u32, +pub stx_mode: __u16, +pub __spare0: [__u16; 1usize], +pub stx_ino: __u64, +pub stx_size: __u64, +pub stx_blocks: __u64, +pub stx_attributes_mask: __u64, +pub stx_atime: statx_timestamp, +pub stx_btime: statx_timestamp, +pub stx_ctime: statx_timestamp, +pub stx_mtime: statx_timestamp, +pub stx_rdev_major: __u32, +pub stx_rdev_minor: __u32, +pub stx_dev_major: __u32, +pub stx_dev_minor: __u32, +pub stx_mnt_id: __u64, +pub stx_dio_mem_align: __u32, +pub stx_dio_offset_align: __u32, +pub __spare3: [__u64; 12usize], } -pub type cc_t = crate::ctypes::c_uchar; -pub type speed_t = crate::ctypes::c_uint; -pub type tcflag_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct termios { @@ -4626,42 +689,2056 @@ pub iov_base: *mut crate::ctypes::c_void, pub iov_len: __kernel_size_t, } +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct uffd_msg { +pub event: __u8, +pub reserved1: __u8, +pub reserved2: __u16, +pub reserved3: __u32, +pub arg: uffd_msg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { +pub flags: __u64, +pub address: __u64, +pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { +pub ufd: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { +pub from: __u64, +pub to: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { +pub start: __u64, +pub end: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { +pub reserved1: __u64, +pub reserved2: __u64, +pub reserved3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_api { +pub api: __u64, +pub features: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_range { +pub start: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_register { +pub range: uffdio_range, +pub mode: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_copy { +pub dst: __u64, +pub src: __u64, +pub len: __u64, +pub mode: __u64, +pub copy: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_zeropage { +pub range: uffdio_range, +pub mode: __u64, +pub zeropage: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_writeprotect { +pub range: uffdio_range, +pub mode: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_continue { +pub range: uffdio_range, +pub mode: __u64, +pub mapped: __s64, +} +#[repr(C)] +#[derive(Debug)] +pub struct linux_dirent64 { +pub d_ino: crate::ctypes::c_ulong, +pub d_off: crate::ctypes::c_long, +pub d_reclen: __u16, +pub d_type: __u8, +pub d_name: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat { +pub st_dev: crate::ctypes::c_uint, +pub st_pad0: [crate::ctypes::c_uint; 3usize], +pub st_ino: crate::ctypes::c_ulong, +pub st_mode: __kernel_mode_t, +pub st_nlink: __u32, +pub st_uid: __kernel_uid32_t, +pub st_gid: __kernel_gid32_t, +pub st_rdev: crate::ctypes::c_uint, +pub st_pad1: [crate::ctypes::c_uint; 3usize], +pub st_size: crate::ctypes::c_long, +pub st_atime: crate::ctypes::c_uint, +pub st_atime_nsec: crate::ctypes::c_uint, +pub st_mtime: crate::ctypes::c_uint, +pub st_mtime_nsec: crate::ctypes::c_uint, +pub st_ctime: crate::ctypes::c_uint, +pub st_ctime_nsec: crate::ctypes::c_uint, +pub st_blksize: crate::ctypes::c_uint, +pub st_pad2: crate::ctypes::c_uint, +pub st_blocks: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs { +pub f_type: crate::ctypes::c_long, +pub f_bsize: crate::ctypes::c_long, +pub f_frsize: crate::ctypes::c_long, +pub f_blocks: crate::ctypes::c_long, +pub f_bfree: crate::ctypes::c_long, +pub f_files: crate::ctypes::c_long, +pub f_ffree: crate::ctypes::c_long, +pub f_bavail: crate::ctypes::c_long, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: crate::ctypes::c_long, +pub f_flags: crate::ctypes::c_long, +pub f_spare: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs64 { +pub f_type: crate::ctypes::c_long, +pub f_bsize: crate::ctypes::c_long, +pub f_frsize: crate::ctypes::c_long, +pub f_blocks: crate::ctypes::c_long, +pub f_bfree: crate::ctypes::c_long, +pub f_files: crate::ctypes::c_long, +pub f_ffree: crate::ctypes::c_long, +pub f_bavail: crate::ctypes::c_long, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: crate::ctypes::c_long, +pub f_flags: crate::ctypes::c_long, +pub f_spare: [crate::ctypes::c_long; 5usize], +} #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_un { -pub sun_family: __kernel_sa_family_t, -pub sun_path: [crate::ctypes::c_char; 108usize], +pub struct compat_statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_frsize: __u32, +pub __pad: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_bavail: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 5usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct oldold_utsname { -pub sysname: [crate::ctypes::c_char; 9usize], -pub nodename: [crate::ctypes::c_char; 9usize], -pub release: [crate::ctypes::c_char; 9usize], -pub version: [crate::ctypes::c_char; 9usize], -pub machine: [crate::ctypes::c_char; 9usize], +pub struct user_desc { +pub entry_number: crate::ctypes::c_uint, +pub base_addr: crate::ctypes::c_uint, +pub limit: crate::ctypes::c_uint, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub __bindgen_padding_0: [u8; 3usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct old_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], +pub struct kernel_sigset_t { +pub sig: [crate::ctypes::c_ulong; 2usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct new_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], -pub domainname: [crate::ctypes::c_char; 65usize], +pub struct kernel_sigaction { +pub sa_handler_kernel: __kernel_sighandler_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_mask: kernel_sigset_t, } -impl membarrier_cmd { -pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; +pub const LINUX_VERSION_CODE: u32 = 393984; +pub const LINUX_VERSION_MAJOR: u32 = 6; +pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; +pub const LINUX_VERSION_SUBLEVEL: u32 = 0; +pub const AT_SYSINFO_EHDR: u32 = 33; +pub const AT_VECTOR_SIZE_ARCH: u32 = 1; +pub const AT_NULL: u32 = 0; +pub const AT_IGNORE: u32 = 1; +pub const AT_EXECFD: u32 = 2; +pub const AT_PHDR: u32 = 3; +pub const AT_PHENT: u32 = 4; +pub const AT_PHNUM: u32 = 5; +pub const AT_PAGESZ: u32 = 6; +pub const AT_BASE: u32 = 7; +pub const AT_FLAGS: u32 = 8; +pub const AT_ENTRY: u32 = 9; +pub const AT_NOTELF: u32 = 10; +pub const AT_UID: u32 = 11; +pub const AT_EUID: u32 = 12; +pub const AT_GID: u32 = 13; +pub const AT_EGID: u32 = 14; +pub const AT_PLATFORM: u32 = 15; +pub const AT_HWCAP: u32 = 16; +pub const AT_CLKTCK: u32 = 17; +pub const AT_SECURE: u32 = 23; +pub const AT_BASE_PLATFORM: u32 = 24; +pub const AT_RANDOM: u32 = 25; +pub const AT_HWCAP2: u32 = 26; +pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; +pub const AT_RSEQ_ALIGN: u32 = 28; +pub const AT_EXECFN: u32 = 31; +pub const AT_MINSIGSTKSZ: u32 = 51; +pub const __FD_SETSIZE: u32 = 1024; +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; +pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; +pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; +pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; +pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; +pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; +pub const VFS_CAP_REVISION_SHIFT: u32 = 24; +pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; +pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; +pub const VFS_CAP_REVISION_1: u32 = 16777216; +pub const VFS_CAP_U32_1: u32 = 1; +pub const VFS_CAP_REVISION_2: u32 = 33554432; +pub const VFS_CAP_U32_2: u32 = 2; +pub const VFS_CAP_REVISION_3: u32 = 50331648; +pub const VFS_CAP_U32_3: u32 = 2; +pub const VFS_CAP_U32: u32 = 2; +pub const VFS_CAP_REVISION: u32 = 50331648; +pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S: u32 = 1; +pub const CAP_CHOWN: u32 = 0; +pub const CAP_DAC_OVERRIDE: u32 = 1; +pub const CAP_DAC_READ_SEARCH: u32 = 2; +pub const CAP_FOWNER: u32 = 3; +pub const CAP_FSETID: u32 = 4; +pub const CAP_KILL: u32 = 5; +pub const CAP_SETGID: u32 = 6; +pub const CAP_SETUID: u32 = 7; +pub const CAP_SETPCAP: u32 = 8; +pub const CAP_LINUX_IMMUTABLE: u32 = 9; +pub const CAP_NET_BIND_SERVICE: u32 = 10; +pub const CAP_NET_BROADCAST: u32 = 11; +pub const CAP_NET_ADMIN: u32 = 12; +pub const CAP_NET_RAW: u32 = 13; +pub const CAP_IPC_LOCK: u32 = 14; +pub const CAP_IPC_OWNER: u32 = 15; +pub const CAP_SYS_MODULE: u32 = 16; +pub const CAP_SYS_RAWIO: u32 = 17; +pub const CAP_SYS_CHROOT: u32 = 18; +pub const CAP_SYS_PTRACE: u32 = 19; +pub const CAP_SYS_PACCT: u32 = 20; +pub const CAP_SYS_ADMIN: u32 = 21; +pub const CAP_SYS_BOOT: u32 = 22; +pub const CAP_SYS_NICE: u32 = 23; +pub const CAP_SYS_RESOURCE: u32 = 24; +pub const CAP_SYS_TIME: u32 = 25; +pub const CAP_SYS_TTY_CONFIG: u32 = 26; +pub const CAP_MKNOD: u32 = 27; +pub const CAP_LEASE: u32 = 28; +pub const CAP_AUDIT_WRITE: u32 = 29; +pub const CAP_AUDIT_CONTROL: u32 = 30; +pub const CAP_SETFCAP: u32 = 31; +pub const CAP_MAC_OVERRIDE: u32 = 32; +pub const CAP_MAC_ADMIN: u32 = 33; +pub const CAP_SYSLOG: u32 = 34; +pub const CAP_WAKE_ALARM: u32 = 35; +pub const CAP_BLOCK_SUSPEND: u32 = 36; +pub const CAP_AUDIT_READ: u32 = 37; +pub const CAP_PERFMON: u32 = 38; +pub const CAP_BPF: u32 = 39; +pub const CAP_CHECKPOINT_RESTORE: u32 = 40; +pub const CAP_LAST_CAP: u32 = 40; +pub const O_APPEND: u32 = 8; +pub const O_DSYNC: u32 = 16; +pub const O_NONBLOCK: u32 = 128; +pub const O_CREAT: u32 = 256; +pub const O_TRUNC: u32 = 512; +pub const O_EXCL: u32 = 1024; +pub const O_NOCTTY: u32 = 2048; +pub const FASYNC: u32 = 4096; +pub const O_LARGEFILE: u32 = 8192; +pub const __O_SYNC: u32 = 16384; +pub const O_SYNC: u32 = 16400; +pub const O_DIRECT: u32 = 32768; +pub const F_GETLK: u32 = 14; +pub const F_SETLK: u32 = 6; +pub const F_SETLKW: u32 = 7; +pub const F_SETOWN: u32 = 24; +pub const F_GETOWN: u32 = 23; +pub const O_ACCMODE: u32 = 3; +pub const O_RDONLY: u32 = 0; +pub const O_WRONLY: u32 = 1; +pub const O_RDWR: u32 = 2; +pub const O_DIRECTORY: u32 = 65536; +pub const O_NOFOLLOW: u32 = 131072; +pub const O_NOATIME: u32 = 262144; +pub const O_CLOEXEC: u32 = 524288; +pub const O_PATH: u32 = 2097152; +pub const __O_TMPFILE: u32 = 4194304; +pub const O_TMPFILE: u32 = 4259840; +pub const O_TMPFILE_MASK: u32 = 4260096; +pub const O_NDELAY: u32 = 128; +pub const F_DUPFD: u32 = 0; +pub const F_GETFD: u32 = 1; +pub const F_SETFD: u32 = 2; +pub const F_GETFL: u32 = 3; +pub const F_SETFL: u32 = 4; +pub const F_SETSIG: u32 = 10; +pub const F_GETSIG: u32 = 11; +pub const F_SETOWN_EX: u32 = 15; +pub const F_GETOWN_EX: u32 = 16; +pub const F_GETOWNER_UIDS: u32 = 17; +pub const F_OFD_GETLK: u32 = 36; +pub const F_OFD_SETLK: u32 = 37; +pub const F_OFD_SETLKW: u32 = 38; +pub const F_OWNER_TID: u32 = 0; +pub const F_OWNER_PID: u32 = 1; +pub const F_OWNER_PGRP: u32 = 2; +pub const FD_CLOEXEC: u32 = 1; +pub const F_RDLCK: u32 = 0; +pub const F_WRLCK: u32 = 1; +pub const F_UNLCK: u32 = 2; +pub const F_EXLCK: u32 = 4; +pub const F_SHLCK: u32 = 8; +pub const LOCK_SH: u32 = 1; +pub const LOCK_EX: u32 = 2; +pub const LOCK_NB: u32 = 4; +pub const LOCK_UN: u32 = 8; +pub const LOCK_MAND: u32 = 32; +pub const LOCK_READ: u32 = 64; +pub const LOCK_WRITE: u32 = 128; +pub const LOCK_RW: u32 = 192; +pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; +pub const RESOLVE_NO_XDEV: u32 = 1; +pub const RESOLVE_NO_MAGICLINKS: u32 = 2; +pub const RESOLVE_NO_SYMLINKS: u32 = 4; +pub const RESOLVE_BENEATH: u32 = 8; +pub const RESOLVE_IN_ROOT: u32 = 16; +pub const RESOLVE_CACHED: u32 = 32; +pub const F_SETLEASE: u32 = 1024; +pub const F_GETLEASE: u32 = 1025; +pub const F_CANCELLK: u32 = 1029; +pub const F_DUPFD_CLOEXEC: u32 = 1030; +pub const F_NOTIFY: u32 = 1026; +pub const F_SETPIPE_SZ: u32 = 1031; +pub const F_GETPIPE_SZ: u32 = 1032; +pub const F_ADD_SEALS: u32 = 1033; +pub const F_GET_SEALS: u32 = 1034; +pub const F_SEAL_SEAL: u32 = 1; +pub const F_SEAL_SHRINK: u32 = 2; +pub const F_SEAL_GROW: u32 = 4; +pub const F_SEAL_WRITE: u32 = 8; +pub const F_SEAL_FUTURE_WRITE: u32 = 16; +pub const F_SEAL_EXEC: u32 = 32; +pub const F_GET_RW_HINT: u32 = 1035; +pub const F_SET_RW_HINT: u32 = 1036; +pub const F_GET_FILE_RW_HINT: u32 = 1037; +pub const F_SET_FILE_RW_HINT: u32 = 1038; +pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; +pub const RWH_WRITE_LIFE_NONE: u32 = 1; +pub const RWH_WRITE_LIFE_SHORT: u32 = 2; +pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; +pub const RWH_WRITE_LIFE_LONG: u32 = 4; +pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; +pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; +pub const DN_ACCESS: u32 = 1; +pub const DN_MODIFY: u32 = 2; +pub const DN_CREATE: u32 = 4; +pub const DN_DELETE: u32 = 8; +pub const DN_RENAME: u32 = 16; +pub const DN_ATTRIB: u32 = 32; +pub const DN_MULTISHOT: u32 = 2147483648; +pub const AT_FDCWD: i32 = -100; +pub const AT_SYMLINK_NOFOLLOW: u32 = 256; +pub const AT_EACCESS: u32 = 512; +pub const AT_REMOVEDIR: u32 = 512; +pub const AT_SYMLINK_FOLLOW: u32 = 1024; +pub const AT_NO_AUTOMOUNT: u32 = 2048; +pub const AT_EMPTY_PATH: u32 = 4096; +pub const AT_STATX_SYNC_TYPE: u32 = 24576; +pub const AT_STATX_SYNC_AS_STAT: u32 = 0; +pub const AT_STATX_FORCE_SYNC: u32 = 8192; +pub const AT_STATX_DONT_SYNC: u32 = 16384; +pub const AT_RECURSIVE: u32 = 32768; +pub const EPOLL_CLOEXEC: u32 = 524288; +pub const EPOLL_CTL_ADD: u32 = 1; +pub const EPOLL_CTL_DEL: u32 = 2; +pub const EPOLL_CTL_MOD: u32 = 3; +pub const POSIX_FADV_NORMAL: u32 = 0; +pub const POSIX_FADV_RANDOM: u32 = 1; +pub const POSIX_FADV_SEQUENTIAL: u32 = 2; +pub const POSIX_FADV_WILLNEED: u32 = 3; +pub const POSIX_FADV_DONTNEED: u32 = 4; +pub const POSIX_FADV_NOREUSE: u32 = 5; +pub const FALLOC_FL_KEEP_SIZE: u32 = 1; +pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; +pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; +pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; +pub const FALLOC_FL_ZERO_RANGE: u32 = 16; +pub const FALLOC_FL_INSERT_RANGE: u32 = 32; +pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 536805376; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const OPEN_TREE_CLOEXEC: u32 = 524288; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const FUTEX_WAIT: u32 = 0; +pub const FUTEX_WAKE: u32 = 1; +pub const FUTEX_FD: u32 = 2; +pub const FUTEX_REQUEUE: u32 = 3; +pub const FUTEX_CMP_REQUEUE: u32 = 4; +pub const FUTEX_WAKE_OP: u32 = 5; +pub const FUTEX_LOCK_PI: u32 = 6; +pub const FUTEX_UNLOCK_PI: u32 = 7; +pub const FUTEX_TRYLOCK_PI: u32 = 8; +pub const FUTEX_WAIT_BITSET: u32 = 9; +pub const FUTEX_WAKE_BITSET: u32 = 10; +pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; +pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; +pub const FUTEX_LOCK_PI2: u32 = 13; +pub const FUTEX_PRIVATE_FLAG: u32 = 128; +pub const FUTEX_CLOCK_REALTIME: u32 = 256; +pub const FUTEX_CMD_MASK: i32 = -385; +pub const FUTEX_WAIT_PRIVATE: u32 = 128; +pub const FUTEX_WAKE_PRIVATE: u32 = 129; +pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; +pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; +pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; +pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; +pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; +pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; +pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; +pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; +pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; +pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; +pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; +pub const FUTEX_32: u32 = 2; +pub const FUTEX_WAITV_MAX: u32 = 128; +pub const FUTEX_WAITERS: u32 = 2147483648; +pub const FUTEX_OWNER_DIED: u32 = 1073741824; +pub const FUTEX_TID_MASK: u32 = 1073741823; +pub const ROBUST_LIST_LIMIT: u32 = 2048; +pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; +pub const FUTEX_OP_SET: u32 = 0; +pub const FUTEX_OP_ADD: u32 = 1; +pub const FUTEX_OP_OR: u32 = 2; +pub const FUTEX_OP_ANDN: u32 = 3; +pub const FUTEX_OP_XOR: u32 = 4; +pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; +pub const FUTEX_OP_CMP_EQ: u32 = 0; +pub const FUTEX_OP_CMP_NE: u32 = 1; +pub const FUTEX_OP_CMP_LT: u32 = 2; +pub const FUTEX_OP_CMP_LE: u32 = 3; +pub const FUTEX_OP_CMP_GT: u32 = 4; +pub const FUTEX_OP_CMP_GE: u32 = 5; +pub const IN_ACCESS: u32 = 1; +pub const IN_MODIFY: u32 = 2; +pub const IN_ATTRIB: u32 = 4; +pub const IN_CLOSE_WRITE: u32 = 8; +pub const IN_CLOSE_NOWRITE: u32 = 16; +pub const IN_OPEN: u32 = 32; +pub const IN_MOVED_FROM: u32 = 64; +pub const IN_MOVED_TO: u32 = 128; +pub const IN_CREATE: u32 = 256; +pub const IN_DELETE: u32 = 512; +pub const IN_DELETE_SELF: u32 = 1024; +pub const IN_MOVE_SELF: u32 = 2048; +pub const IN_UNMOUNT: u32 = 8192; +pub const IN_Q_OVERFLOW: u32 = 16384; +pub const IN_IGNORED: u32 = 32768; +pub const IN_CLOSE: u32 = 24; +pub const IN_MOVE: u32 = 192; +pub const IN_ONLYDIR: u32 = 16777216; +pub const IN_DONT_FOLLOW: u32 = 33554432; +pub const IN_EXCL_UNLINK: u32 = 67108864; +pub const IN_MASK_CREATE: u32 = 268435456; +pub const IN_MASK_ADD: u32 = 536870912; +pub const IN_ISDIR: u32 = 1073741824; +pub const IN_ONESHOT: u32 = 2147483648; +pub const IN_ALL_EVENTS: u32 = 4095; +pub const IN_CLOEXEC: u32 = 524288; +pub const IN_NONBLOCK: u32 = 128; +pub const ADFS_SUPER_MAGIC: u32 = 44533; +pub const AFFS_SUPER_MAGIC: u32 = 44543; +pub const AFS_SUPER_MAGIC: u32 = 1397113167; +pub const AUTOFS_SUPER_MAGIC: u32 = 391; +pub const CEPH_SUPER_MAGIC: u32 = 12805120; +pub const CODA_SUPER_MAGIC: u32 = 1937076805; +pub const CRAMFS_MAGIC: u32 = 684539205; +pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; +pub const DEBUGFS_MAGIC: u32 = 1684170528; +pub const SECURITYFS_MAGIC: u32 = 1935894131; +pub const SELINUX_MAGIC: u32 = 4185718668; +pub const SMACK_MAGIC: u32 = 1128357203; +pub const RAMFS_MAGIC: u32 = 2240043254; +pub const TMPFS_MAGIC: u32 = 16914836; +pub const HUGETLBFS_MAGIC: u32 = 2508478710; +pub const SQUASHFS_MAGIC: u32 = 1936814952; +pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; +pub const EFS_SUPER_MAGIC: u32 = 4278867; +pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; +pub const EXT2_SUPER_MAGIC: u32 = 61267; +pub const EXT3_SUPER_MAGIC: u32 = 61267; +pub const XENFS_SUPER_MAGIC: u32 = 2881100148; +pub const EXT4_SUPER_MAGIC: u32 = 61267; +pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; +pub const NILFS_SUPER_MAGIC: u32 = 13364; +pub const F2FS_SUPER_MAGIC: u32 = 4076150800; +pub const HPFS_SUPER_MAGIC: u32 = 4187351113; +pub const ISOFS_SUPER_MAGIC: u32 = 38496; +pub const JFFS2_SUPER_MAGIC: u32 = 29366; +pub const XFS_SUPER_MAGIC: u32 = 1481003842; +pub const PSTOREFS_MAGIC: u32 = 1634035564; +pub const EFIVARFS_MAGIC: u32 = 3730735588; +pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; +pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; +pub const FUSE_SUPER_MAGIC: u32 = 1702057286; +pub const MINIX_SUPER_MAGIC: u32 = 4991; +pub const MINIX_SUPER_MAGIC2: u32 = 5007; +pub const MINIX2_SUPER_MAGIC: u32 = 9320; +pub const MINIX2_SUPER_MAGIC2: u32 = 9336; +pub const MINIX3_SUPER_MAGIC: u32 = 19802; +pub const MSDOS_SUPER_MAGIC: u32 = 19780; +pub const EXFAT_SUPER_MAGIC: u32 = 538032816; +pub const NCP_SUPER_MAGIC: u32 = 22092; +pub const NFS_SUPER_MAGIC: u32 = 26985; +pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; +pub const OPENPROM_SUPER_MAGIC: u32 = 40865; +pub const QNX4_SUPER_MAGIC: u32 = 47; +pub const QNX6_SUPER_MAGIC: u32 = 1746473250; +pub const AFS_FS_MAGIC: u32 = 1799439955; +pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; +pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9] = b"ReIsErFs\0"; +pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr2Fs\0"; +pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr3Fs\0"; +pub const SMB_SUPER_MAGIC: u32 = 20859; +pub const CIFS_SUPER_MAGIC: u32 = 4283649346; +pub const SMB2_SUPER_MAGIC: u32 = 4266872130; +pub const CGROUP_SUPER_MAGIC: u32 = 2613483; +pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; +pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; +pub const STACK_END_MAGIC: u32 = 1470918301; +pub const TRACEFS_MAGIC: u32 = 1953653091; +pub const V9FS_MAGIC: u32 = 16914839; +pub const BDEVFS_MAGIC: u32 = 1650746742; +pub const DAXFS_MAGIC: u32 = 1684300152; +pub const BINFMTFS_MAGIC: u32 = 1112100429; +pub const DEVPTS_SUPER_MAGIC: u32 = 7377; +pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; +pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; +pub const PIPEFS_MAGIC: u32 = 1346981957; +pub const PROC_SUPER_MAGIC: u32 = 40864; +pub const SOCKFS_MAGIC: u32 = 1397703499; +pub const SYSFS_MAGIC: u32 = 1650812274; +pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; +pub const MTD_INODE_FS_MAGIC: u32 = 288389204; +pub const ANON_INODE_FS_MAGIC: u32 = 151263540; +pub const BTRFS_TEST_MAGIC: u32 = 1936880249; +pub const NSFS_MAGIC: u32 = 1853056627; +pub const BPF_FS_MAGIC: u32 = 3405662737; +pub const AAFS_MAGIC: u32 = 1513908720; +pub const ZONEFS_MAGIC: u32 = 1515144787; +pub const UDF_SUPER_MAGIC: u32 = 352400198; +pub const DMA_BUF_MAGIC: u32 = 1145913666; +pub const DEVMEM_MAGIC: u32 = 1162691661; +pub const SECRETMEM_MAGIC: u32 = 1397048141; +pub const PROT_NONE: u32 = 0; +pub const PROT_READ: u32 = 1; +pub const PROT_WRITE: u32 = 2; +pub const PROT_EXEC: u32 = 4; +pub const PROT_SEM: u32 = 16; +pub const PROT_GROWSDOWN: u32 = 16777216; +pub const PROT_GROWSUP: u32 = 33554432; +pub const MAP_TYPE: u32 = 15; +pub const MAP_FIXED: u32 = 16; +pub const MAP_RENAME: u32 = 32; +pub const MAP_AUTOGROW: u32 = 64; +pub const MAP_LOCAL: u32 = 128; +pub const MAP_AUTORSRV: u32 = 256; +pub const MAP_NORESERVE: u32 = 1024; +pub const MAP_ANONYMOUS: u32 = 2048; +pub const MAP_GROWSDOWN: u32 = 4096; +pub const MAP_DENYWRITE: u32 = 8192; +pub const MAP_EXECUTABLE: u32 = 16384; +pub const MAP_LOCKED: u32 = 32768; +pub const MAP_POPULATE: u32 = 65536; +pub const MAP_NONBLOCK: u32 = 131072; +pub const MAP_STACK: u32 = 262144; +pub const MAP_HUGETLB: u32 = 524288; +pub const MAP_FIXED_NOREPLACE: u32 = 1048576; +pub const MS_ASYNC: u32 = 1; +pub const MS_INVALIDATE: u32 = 2; +pub const MS_SYNC: u32 = 4; +pub const MCL_CURRENT: u32 = 1; +pub const MCL_FUTURE: u32 = 2; +pub const MCL_ONFAULT: u32 = 4; +pub const MLOCK_ONFAULT: u32 = 1; +pub const MADV_NORMAL: u32 = 0; +pub const MADV_RANDOM: u32 = 1; +pub const MADV_SEQUENTIAL: u32 = 2; +pub const MADV_WILLNEED: u32 = 3; +pub const MADV_DONTNEED: u32 = 4; +pub const MADV_FREE: u32 = 8; +pub const MADV_REMOVE: u32 = 9; +pub const MADV_DONTFORK: u32 = 10; +pub const MADV_DOFORK: u32 = 11; +pub const MADV_MERGEABLE: u32 = 12; +pub const MADV_UNMERGEABLE: u32 = 13; +pub const MADV_HWPOISON: u32 = 100; +pub const MADV_HUGEPAGE: u32 = 14; +pub const MADV_NOHUGEPAGE: u32 = 15; +pub const MADV_DONTDUMP: u32 = 16; +pub const MADV_DODUMP: u32 = 17; +pub const MADV_WIPEONFORK: u32 = 18; +pub const MADV_KEEPONFORK: u32 = 19; +pub const MADV_COLD: u32 = 20; +pub const MADV_PAGEOUT: u32 = 21; +pub const MADV_POPULATE_READ: u32 = 22; +pub const MADV_POPULATE_WRITE: u32 = 23; +pub const MADV_DONTNEED_LOCKED: u32 = 24; +pub const MADV_COLLAPSE: u32 = 25; +pub const MAP_FILE: u32 = 0; +pub const PKEY_DISABLE_ACCESS: u32 = 1; +pub const PKEY_DISABLE_WRITE: u32 = 2; +pub const PKEY_ACCESS_MASK: u32 = 3; +pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; +pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; +pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; +pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; +pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; +pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; +pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; +pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; +pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; +pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; +pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; +pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; +pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; +pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; +pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; +pub const MREMAP_MAYMOVE: u32 = 1; +pub const MREMAP_FIXED: u32 = 2; +pub const MREMAP_DONTUNMAP: u32 = 4; +pub const OVERCOMMIT_GUESS: u32 = 0; +pub const OVERCOMMIT_ALWAYS: u32 = 1; +pub const OVERCOMMIT_NEVER: u32 = 2; +pub const MAP_SHARED: u32 = 1; +pub const MAP_PRIVATE: u32 = 2; +pub const MAP_SHARED_VALIDATE: u32 = 3; +pub const MAP_HUGE_SHIFT: u32 = 26; +pub const MAP_HUGE_MASK: u32 = 63; +pub const MAP_HUGE_16KB: u32 = 939524096; +pub const MAP_HUGE_64KB: u32 = 1073741824; +pub const MAP_HUGE_512KB: u32 = 1275068416; +pub const MAP_HUGE_1MB: u32 = 1342177280; +pub const MAP_HUGE_2MB: u32 = 1409286144; +pub const MAP_HUGE_8MB: u32 = 1543503872; +pub const MAP_HUGE_16MB: u32 = 1610612736; +pub const MAP_HUGE_32MB: u32 = 1677721600; +pub const MAP_HUGE_256MB: u32 = 1879048192; +pub const MAP_HUGE_512MB: u32 = 1946157056; +pub const MAP_HUGE_1GB: u32 = 2013265920; +pub const MAP_HUGE_2GB: u32 = 2080374784; +pub const MAP_HUGE_16GB: u32 = 2281701376; +pub const POLLWRBAND: u32 = 256; +pub const POLLIN: u32 = 1; +pub const POLLPRI: u32 = 2; +pub const POLLOUT: u32 = 4; +pub const POLLERR: u32 = 8; +pub const POLLHUP: u32 = 16; +pub const POLLNVAL: u32 = 32; +pub const POLLRDNORM: u32 = 64; +pub const POLLRDBAND: u32 = 128; +pub const POLLMSG: u32 = 1024; +pub const POLLREMOVE: u32 = 4096; +pub const POLLRDHUP: u32 = 8192; +pub const GRND_NONBLOCK: u32 = 1; +pub const GRND_RANDOM: u32 = 2; +pub const GRND_INSECURE: u32 = 4; +pub const ITIMER_REAL: u32 = 0; +pub const ITIMER_VIRTUAL: u32 = 1; +pub const ITIMER_PROF: u32 = 2; +pub const CLOCK_REALTIME: u32 = 0; +pub const CLOCK_MONOTONIC: u32 = 1; +pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; +pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; +pub const CLOCK_MONOTONIC_RAW: u32 = 4; +pub const CLOCK_REALTIME_COARSE: u32 = 5; +pub const CLOCK_MONOTONIC_COARSE: u32 = 6; +pub const CLOCK_BOOTTIME: u32 = 7; +pub const CLOCK_REALTIME_ALARM: u32 = 8; +pub const CLOCK_BOOTTIME_ALARM: u32 = 9; +pub const CLOCK_SGI_CYCLE: u32 = 10; +pub const CLOCK_TAI: u32 = 11; +pub const MAX_CLOCKS: u32 = 16; +pub const CLOCKS_MASK: u32 = 1; +pub const CLOCKS_MONO: u32 = 1; +pub const TIMER_ABSTIME: u32 = 1; +pub const RUSAGE_SELF: u32 = 0; +pub const RUSAGE_CHILDREN: i32 = -1; +pub const RUSAGE_BOTH: i32 = -2; +pub const RUSAGE_THREAD: u32 = 1; +pub const RLIM64_INFINITY: i32 = -1; +pub const PRIO_MIN: i32 = -20; +pub const PRIO_MAX: u32 = 20; +pub const PRIO_PROCESS: u32 = 0; +pub const PRIO_PGRP: u32 = 1; +pub const PRIO_USER: u32 = 2; +pub const _STK_LIM: u32 = 8388608; +pub const MLOCK_LIMIT: u32 = 8388608; +pub const RLIMIT_NOFILE: u32 = 5; +pub const RLIMIT_AS: u32 = 6; +pub const RLIMIT_RSS: u32 = 7; +pub const RLIMIT_NPROC: u32 = 8; +pub const RLIMIT_MEMLOCK: u32 = 9; +pub const RLIMIT_CPU: u32 = 0; +pub const RLIMIT_FSIZE: u32 = 1; +pub const RLIMIT_DATA: u32 = 2; +pub const RLIMIT_STACK: u32 = 3; +pub const RLIMIT_CORE: u32 = 4; +pub const RLIMIT_LOCKS: u32 = 10; +pub const RLIMIT_SIGPENDING: u32 = 11; +pub const RLIMIT_MSGQUEUE: u32 = 12; +pub const RLIMIT_NICE: u32 = 13; +pub const RLIMIT_RTPRIO: u32 = 14; +pub const RLIMIT_RTTIME: u32 = 15; +pub const RLIM_NLIMITS: u32 = 16; +pub const RLIM_INFINITY: i32 = -1; +pub const CSIGNAL: u32 = 255; +pub const CLONE_VM: u32 = 256; +pub const CLONE_FS: u32 = 512; +pub const CLONE_FILES: u32 = 1024; +pub const CLONE_SIGHAND: u32 = 2048; +pub const CLONE_PIDFD: u32 = 4096; +pub const CLONE_PTRACE: u32 = 8192; +pub const CLONE_VFORK: u32 = 16384; +pub const CLONE_PARENT: u32 = 32768; +pub const CLONE_THREAD: u32 = 65536; +pub const CLONE_NEWNS: u32 = 131072; +pub const CLONE_SYSVSEM: u32 = 262144; +pub const CLONE_SETTLS: u32 = 524288; +pub const CLONE_PARENT_SETTID: u32 = 1048576; +pub const CLONE_CHILD_CLEARTID: u32 = 2097152; +pub const CLONE_DETACHED: u32 = 4194304; +pub const CLONE_UNTRACED: u32 = 8388608; +pub const CLONE_CHILD_SETTID: u32 = 16777216; +pub const CLONE_NEWCGROUP: u32 = 33554432; +pub const CLONE_NEWUTS: u32 = 67108864; +pub const CLONE_NEWIPC: u32 = 134217728; +pub const CLONE_NEWUSER: u32 = 268435456; +pub const CLONE_NEWPID: u32 = 536870912; +pub const CLONE_NEWNET: u32 = 1073741824; +pub const CLONE_IO: u32 = 2147483648; +pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; +pub const CLONE_INTO_CGROUP: u64 = 8589934592; +pub const CLONE_NEWTIME: u32 = 128; +pub const CLONE_ARGS_SIZE_VER0: u32 = 64; +pub const CLONE_ARGS_SIZE_VER1: u32 = 80; +pub const CLONE_ARGS_SIZE_VER2: u32 = 88; +pub const SCHED_NORMAL: u32 = 0; +pub const SCHED_FIFO: u32 = 1; +pub const SCHED_RR: u32 = 2; +pub const SCHED_BATCH: u32 = 3; +pub const SCHED_IDLE: u32 = 5; +pub const SCHED_DEADLINE: u32 = 6; +pub const SCHED_RESET_ON_FORK: u32 = 1073741824; +pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; +pub const SCHED_FLAG_RECLAIM: u32 = 2; +pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; +pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; +pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; +pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; +pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; +pub const SCHED_FLAG_KEEP_ALL: u32 = 24; +pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; +pub const SCHED_FLAG_ALL: u32 = 127; +pub const _NSIG: u32 = 128; +pub const SIGHUP: u32 = 1; +pub const SIGINT: u32 = 2; +pub const SIGQUIT: u32 = 3; +pub const SIGILL: u32 = 4; +pub const SIGTRAP: u32 = 5; +pub const SIGIOT: u32 = 6; +pub const SIGABRT: u32 = 6; +pub const SIGEMT: u32 = 7; +pub const SIGFPE: u32 = 8; +pub const SIGKILL: u32 = 9; +pub const SIGBUS: u32 = 10; +pub const SIGSEGV: u32 = 11; +pub const SIGSYS: u32 = 12; +pub const SIGPIPE: u32 = 13; +pub const SIGALRM: u32 = 14; +pub const SIGTERM: u32 = 15; +pub const SIGUSR1: u32 = 16; +pub const SIGUSR2: u32 = 17; +pub const SIGCHLD: u32 = 18; +pub const SIGCLD: u32 = 18; +pub const SIGPWR: u32 = 19; +pub const SIGWINCH: u32 = 20; +pub const SIGURG: u32 = 21; +pub const SIGIO: u32 = 22; +pub const SIGPOLL: u32 = 22; +pub const SIGSTOP: u32 = 23; +pub const SIGTSTP: u32 = 24; +pub const SIGCONT: u32 = 25; +pub const SIGTTIN: u32 = 26; +pub const SIGTTOU: u32 = 27; +pub const SIGVTALRM: u32 = 28; +pub const SIGPROF: u32 = 29; +pub const SIGXCPU: u32 = 30; +pub const SIGXFSZ: u32 = 31; +pub const SIGRTMIN: u32 = 32; +pub const SIGRTMAX: u32 = 128; +pub const SA_ONSTACK: u32 = 134217728; +pub const SA_RESETHAND: u32 = 2147483648; +pub const SA_RESTART: u32 = 268435456; +pub const SA_SIGINFO: u32 = 8; +pub const SA_NODEFER: u32 = 1073741824; +pub const SA_NOCLDWAIT: u32 = 65536; +pub const SA_NOCLDSTOP: u32 = 1; +pub const SA_NOMASK: u32 = 1073741824; +pub const SA_ONESHOT: u32 = 2147483648; +pub const MINSIGSTKSZ: u32 = 2048; +pub const SIGSTKSZ: u32 = 8192; +pub const SIG_BLOCK: u32 = 1; +pub const SIG_UNBLOCK: u32 = 2; +pub const SIG_SETMASK: u32 = 3; +pub const SA_UNSUPPORTED: u32 = 1024; +pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SI_MAX_SIZE: u32 = 128; +pub const SI_USER: u32 = 0; +pub const SI_KERNEL: u32 = 128; +pub const SI_QUEUE: i32 = -1; +pub const SI_TIMER: i32 = -2; +pub const SI_MESGQ: i32 = -3; +pub const SI_ASYNCIO: i32 = -4; +pub const SI_SIGIO: i32 = -5; +pub const SI_TKILL: i32 = -6; +pub const SI_DETHREAD: i32 = -7; +pub const SI_ASYNCNL: i32 = -60; +pub const ILL_ILLOPC: u32 = 1; +pub const ILL_ILLOPN: u32 = 2; +pub const ILL_ILLADR: u32 = 3; +pub const ILL_ILLTRP: u32 = 4; +pub const ILL_PRVOPC: u32 = 5; +pub const ILL_PRVREG: u32 = 6; +pub const ILL_COPROC: u32 = 7; +pub const ILL_BADSTK: u32 = 8; +pub const ILL_BADIADDR: u32 = 9; +pub const __ILL_BREAK: u32 = 10; +pub const __ILL_BNDMOD: u32 = 11; +pub const NSIGILL: u32 = 11; +pub const FPE_INTDIV: u32 = 1; +pub const FPE_INTOVF: u32 = 2; +pub const FPE_FLTDIV: u32 = 3; +pub const FPE_FLTOVF: u32 = 4; +pub const FPE_FLTUND: u32 = 5; +pub const FPE_FLTRES: u32 = 6; +pub const FPE_FLTINV: u32 = 7; +pub const FPE_FLTSUB: u32 = 8; +pub const __FPE_DECOVF: u32 = 9; +pub const __FPE_DECDIV: u32 = 10; +pub const __FPE_DECERR: u32 = 11; +pub const __FPE_INVASC: u32 = 12; +pub const __FPE_INVDEC: u32 = 13; +pub const FPE_FLTUNK: u32 = 14; +pub const FPE_CONDTRAP: u32 = 15; +pub const NSIGFPE: u32 = 15; +pub const SEGV_MAPERR: u32 = 1; +pub const SEGV_ACCERR: u32 = 2; +pub const SEGV_BNDERR: u32 = 3; +pub const SEGV_PKUERR: u32 = 4; +pub const SEGV_ACCADI: u32 = 5; +pub const SEGV_ADIDERR: u32 = 6; +pub const SEGV_ADIPERR: u32 = 7; +pub const SEGV_MTEAERR: u32 = 8; +pub const SEGV_MTESERR: u32 = 9; +pub const NSIGSEGV: u32 = 9; +pub const BUS_ADRALN: u32 = 1; +pub const BUS_ADRERR: u32 = 2; +pub const BUS_OBJERR: u32 = 3; +pub const BUS_MCEERR_AR: u32 = 4; +pub const BUS_MCEERR_AO: u32 = 5; +pub const NSIGBUS: u32 = 5; +pub const TRAP_BRKPT: u32 = 1; +pub const TRAP_TRACE: u32 = 2; +pub const TRAP_BRANCH: u32 = 3; +pub const TRAP_HWBKPT: u32 = 4; +pub const TRAP_UNK: u32 = 5; +pub const TRAP_PERF: u32 = 6; +pub const NSIGTRAP: u32 = 6; +pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; +pub const CLD_EXITED: u32 = 1; +pub const CLD_KILLED: u32 = 2; +pub const CLD_DUMPED: u32 = 3; +pub const CLD_TRAPPED: u32 = 4; +pub const CLD_STOPPED: u32 = 5; +pub const CLD_CONTINUED: u32 = 6; +pub const NSIGCHLD: u32 = 6; +pub const POLL_IN: u32 = 1; +pub const POLL_OUT: u32 = 2; +pub const POLL_MSG: u32 = 3; +pub const POLL_ERR: u32 = 4; +pub const POLL_PRI: u32 = 5; +pub const POLL_HUP: u32 = 6; +pub const NSIGPOLL: u32 = 6; +pub const SYS_SECCOMP: u32 = 1; +pub const SYS_USER_DISPATCH: u32 = 2; +pub const NSIGSYS: u32 = 2; +pub const EMT_TAGOVF: u32 = 1; +pub const NSIGEMT: u32 = 1; +pub const SIGEV_SIGNAL: u32 = 0; +pub const SIGEV_NONE: u32 = 1; +pub const SIGEV_THREAD: u32 = 2; +pub const SIGEV_THREAD_ID: u32 = 4; +pub const SIGEV_MAX_SIZE: u32 = 64; +pub const SS_ONSTACK: u32 = 1; +pub const SS_DISABLE: u32 = 2; +pub const SS_AUTODISARM: u32 = 2147483648; +pub const SS_FLAG_BITS: u32 = 2147483648; +pub const S_IFMT: u32 = 61440; +pub const S_IFSOCK: u32 = 49152; +pub const S_IFLNK: u32 = 40960; +pub const S_IFREG: u32 = 32768; +pub const S_IFBLK: u32 = 24576; +pub const S_IFDIR: u32 = 16384; +pub const S_IFCHR: u32 = 8192; +pub const S_IFIFO: u32 = 4096; +pub const S_ISUID: u32 = 2048; +pub const S_ISGID: u32 = 1024; +pub const S_ISVTX: u32 = 512; +pub const S_IRWXU: u32 = 448; +pub const S_IRUSR: u32 = 256; +pub const S_IWUSR: u32 = 128; +pub const S_IXUSR: u32 = 64; +pub const S_IRWXG: u32 = 56; +pub const S_IRGRP: u32 = 32; +pub const S_IWGRP: u32 = 16; +pub const S_IXGRP: u32 = 8; +pub const S_IRWXO: u32 = 7; +pub const S_IROTH: u32 = 4; +pub const S_IWOTH: u32 = 2; +pub const S_IXOTH: u32 = 1; +pub const STATX_TYPE: u32 = 1; +pub const STATX_MODE: u32 = 2; +pub const STATX_NLINK: u32 = 4; +pub const STATX_UID: u32 = 8; +pub const STATX_GID: u32 = 16; +pub const STATX_ATIME: u32 = 32; +pub const STATX_MTIME: u32 = 64; +pub const STATX_CTIME: u32 = 128; +pub const STATX_INO: u32 = 256; +pub const STATX_SIZE: u32 = 512; +pub const STATX_BLOCKS: u32 = 1024; +pub const STATX_BASIC_STATS: u32 = 2047; +pub const STATX_BTIME: u32 = 2048; +pub const STATX_MNT_ID: u32 = 4096; +pub const STATX_DIOALIGN: u32 = 8192; +pub const STATX__RESERVED: u32 = 2147483648; +pub const STATX_ALL: u32 = 4095; +pub const STATX_ATTR_COMPRESSED: u32 = 4; +pub const STATX_ATTR_IMMUTABLE: u32 = 16; +pub const STATX_ATTR_APPEND: u32 = 32; +pub const STATX_ATTR_NODUMP: u32 = 64; +pub const STATX_ATTR_ENCRYPTED: u32 = 2048; +pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; +pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; +pub const STATX_ATTR_VERITY: u32 = 1048576; +pub const STATX_ATTR_DAX: u32 = 2097152; +pub const EPERM: u32 = 1; +pub const ENOENT: u32 = 2; +pub const ESRCH: u32 = 3; +pub const EINTR: u32 = 4; +pub const EIO: u32 = 5; +pub const ENXIO: u32 = 6; +pub const E2BIG: u32 = 7; +pub const ENOEXEC: u32 = 8; +pub const EBADF: u32 = 9; +pub const ECHILD: u32 = 10; +pub const EAGAIN: u32 = 11; +pub const ENOMEM: u32 = 12; +pub const EACCES: u32 = 13; +pub const EFAULT: u32 = 14; +pub const ENOTBLK: u32 = 15; +pub const EBUSY: u32 = 16; +pub const EEXIST: u32 = 17; +pub const EXDEV: u32 = 18; +pub const ENODEV: u32 = 19; +pub const ENOTDIR: u32 = 20; +pub const EISDIR: u32 = 21; +pub const EINVAL: u32 = 22; +pub const ENFILE: u32 = 23; +pub const EMFILE: u32 = 24; +pub const ENOTTY: u32 = 25; +pub const ETXTBSY: u32 = 26; +pub const EFBIG: u32 = 27; +pub const ENOSPC: u32 = 28; +pub const ESPIPE: u32 = 29; +pub const EROFS: u32 = 30; +pub const EMLINK: u32 = 31; +pub const EPIPE: u32 = 32; +pub const EDOM: u32 = 33; +pub const ERANGE: u32 = 34; +pub const ENOMSG: u32 = 35; +pub const EIDRM: u32 = 36; +pub const ECHRNG: u32 = 37; +pub const EL2NSYNC: u32 = 38; +pub const EL3HLT: u32 = 39; +pub const EL3RST: u32 = 40; +pub const ELNRNG: u32 = 41; +pub const EUNATCH: u32 = 42; +pub const ENOCSI: u32 = 43; +pub const EL2HLT: u32 = 44; +pub const EDEADLK: u32 = 45; +pub const ENOLCK: u32 = 46; +pub const EBADE: u32 = 50; +pub const EBADR: u32 = 51; +pub const EXFULL: u32 = 52; +pub const ENOANO: u32 = 53; +pub const EBADRQC: u32 = 54; +pub const EBADSLT: u32 = 55; +pub const EDEADLOCK: u32 = 56; +pub const EBFONT: u32 = 59; +pub const ENOSTR: u32 = 60; +pub const ENODATA: u32 = 61; +pub const ETIME: u32 = 62; +pub const ENOSR: u32 = 63; +pub const ENONET: u32 = 64; +pub const ENOPKG: u32 = 65; +pub const EREMOTE: u32 = 66; +pub const ENOLINK: u32 = 67; +pub const EADV: u32 = 68; +pub const ESRMNT: u32 = 69; +pub const ECOMM: u32 = 70; +pub const EPROTO: u32 = 71; +pub const EDOTDOT: u32 = 73; +pub const EMULTIHOP: u32 = 74; +pub const EBADMSG: u32 = 77; +pub const ENAMETOOLONG: u32 = 78; +pub const EOVERFLOW: u32 = 79; +pub const ENOTUNIQ: u32 = 80; +pub const EBADFD: u32 = 81; +pub const EREMCHG: u32 = 82; +pub const ELIBACC: u32 = 83; +pub const ELIBBAD: u32 = 84; +pub const ELIBSCN: u32 = 85; +pub const ELIBMAX: u32 = 86; +pub const ELIBEXEC: u32 = 87; +pub const EILSEQ: u32 = 88; +pub const ENOSYS: u32 = 89; +pub const ELOOP: u32 = 90; +pub const ERESTART: u32 = 91; +pub const ESTRPIPE: u32 = 92; +pub const ENOTEMPTY: u32 = 93; +pub const EUSERS: u32 = 94; +pub const ENOTSOCK: u32 = 95; +pub const EDESTADDRREQ: u32 = 96; +pub const EMSGSIZE: u32 = 97; +pub const EPROTOTYPE: u32 = 98; +pub const ENOPROTOOPT: u32 = 99; +pub const EPROTONOSUPPORT: u32 = 120; +pub const ESOCKTNOSUPPORT: u32 = 121; +pub const EOPNOTSUPP: u32 = 122; +pub const EPFNOSUPPORT: u32 = 123; +pub const EAFNOSUPPORT: u32 = 124; +pub const EADDRINUSE: u32 = 125; +pub const EADDRNOTAVAIL: u32 = 126; +pub const ENETDOWN: u32 = 127; +pub const ENETUNREACH: u32 = 128; +pub const ENETRESET: u32 = 129; +pub const ECONNABORTED: u32 = 130; +pub const ECONNRESET: u32 = 131; +pub const ENOBUFS: u32 = 132; +pub const EISCONN: u32 = 133; +pub const ENOTCONN: u32 = 134; +pub const EUCLEAN: u32 = 135; +pub const ENOTNAM: u32 = 137; +pub const ENAVAIL: u32 = 138; +pub const EISNAM: u32 = 139; +pub const EREMOTEIO: u32 = 140; +pub const EINIT: u32 = 141; +pub const EREMDEV: u32 = 142; +pub const ESHUTDOWN: u32 = 143; +pub const ETOOMANYREFS: u32 = 144; +pub const ETIMEDOUT: u32 = 145; +pub const ECONNREFUSED: u32 = 146; +pub const EHOSTDOWN: u32 = 147; +pub const EHOSTUNREACH: u32 = 148; +pub const EWOULDBLOCK: u32 = 11; +pub const EALREADY: u32 = 149; +pub const EINPROGRESS: u32 = 150; +pub const ESTALE: u32 = 151; +pub const ECANCELED: u32 = 158; +pub const ENOMEDIUM: u32 = 159; +pub const EMEDIUMTYPE: u32 = 160; +pub const ENOKEY: u32 = 161; +pub const EKEYEXPIRED: u32 = 162; +pub const EKEYREVOKED: u32 = 163; +pub const EKEYREJECTED: u32 = 164; +pub const EOWNERDEAD: u32 = 165; +pub const ENOTRECOVERABLE: u32 = 166; +pub const ERFKILL: u32 = 167; +pub const EHWPOISON: u32 = 168; +pub const EDQUOT: u32 = 1133; +pub const IGNBRK: u32 = 1; +pub const BRKINT: u32 = 2; +pub const IGNPAR: u32 = 4; +pub const PARMRK: u32 = 8; +pub const INPCK: u32 = 16; +pub const ISTRIP: u32 = 32; +pub const INLCR: u32 = 64; +pub const IGNCR: u32 = 128; +pub const ICRNL: u32 = 256; +pub const IXANY: u32 = 2048; +pub const OPOST: u32 = 1; +pub const OCRNL: u32 = 8; +pub const ONOCR: u32 = 16; +pub const ONLRET: u32 = 32; +pub const OFILL: u32 = 64; +pub const OFDEL: u32 = 128; +pub const B0: u32 = 0; +pub const B50: u32 = 1; +pub const B75: u32 = 2; +pub const B110: u32 = 3; +pub const B134: u32 = 4; +pub const B150: u32 = 5; +pub const B200: u32 = 6; +pub const B300: u32 = 7; +pub const B600: u32 = 8; +pub const B1200: u32 = 9; +pub const B1800: u32 = 10; +pub const B2400: u32 = 11; +pub const B4800: u32 = 12; +pub const B9600: u32 = 13; +pub const B19200: u32 = 14; +pub const B38400: u32 = 15; +pub const EXTA: u32 = 14; +pub const EXTB: u32 = 15; +pub const ADDRB: u32 = 536870912; +pub const CMSPAR: u32 = 1073741824; +pub const CRTSCTS: u32 = 2147483648; +pub const IBSHIFT: u32 = 16; +pub const TCOOFF: u32 = 0; +pub const TCOON: u32 = 1; +pub const TCIOFF: u32 = 2; +pub const TCION: u32 = 3; +pub const TCIFLUSH: u32 = 0; +pub const TCOFLUSH: u32 = 1; +pub const TCIOFLUSH: u32 = 2; +pub const NCCS: u32 = 23; +pub const VINTR: u32 = 0; +pub const VQUIT: u32 = 1; +pub const VERASE: u32 = 2; +pub const VKILL: u32 = 3; +pub const VMIN: u32 = 4; +pub const VTIME: u32 = 5; +pub const VEOL2: u32 = 6; +pub const VSWTC: u32 = 7; +pub const VSWTCH: u32 = 7; +pub const VSTART: u32 = 8; +pub const VSTOP: u32 = 9; +pub const VSUSP: u32 = 10; +pub const VREPRINT: u32 = 12; +pub const VDISCARD: u32 = 13; +pub const VWERASE: u32 = 14; +pub const VLNEXT: u32 = 15; +pub const VEOF: u32 = 16; +pub const VEOL: u32 = 17; +pub const IUCLC: u32 = 512; +pub const IXON: u32 = 1024; +pub const IXOFF: u32 = 4096; +pub const IMAXBEL: u32 = 8192; +pub const IUTF8: u32 = 16384; +pub const OLCUC: u32 = 2; +pub const ONLCR: u32 = 4; +pub const NLDLY: u32 = 256; +pub const NL0: u32 = 0; +pub const NL1: u32 = 256; +pub const CRDLY: u32 = 1536; +pub const CR0: u32 = 0; +pub const CR1: u32 = 512; +pub const CR2: u32 = 1024; +pub const CR3: u32 = 1536; +pub const TABDLY: u32 = 6144; +pub const TAB0: u32 = 0; +pub const TAB1: u32 = 2048; +pub const TAB2: u32 = 4096; +pub const TAB3: u32 = 6144; +pub const XTABS: u32 = 6144; +pub const BSDLY: u32 = 8192; +pub const BS0: u32 = 0; +pub const BS1: u32 = 8192; +pub const VTDLY: u32 = 16384; +pub const VT0: u32 = 0; +pub const VT1: u32 = 16384; +pub const FFDLY: u32 = 32768; +pub const FF0: u32 = 0; +pub const FF1: u32 = 32768; +pub const CBAUD: u32 = 4111; +pub const CSIZE: u32 = 48; +pub const CS5: u32 = 0; +pub const CS6: u32 = 16; +pub const CS7: u32 = 32; +pub const CS8: u32 = 48; +pub const CSTOPB: u32 = 64; +pub const CREAD: u32 = 128; +pub const PARENB: u32 = 256; +pub const PARODD: u32 = 512; +pub const HUPCL: u32 = 1024; +pub const CLOCAL: u32 = 2048; +pub const CBAUDEX: u32 = 4096; +pub const BOTHER: u32 = 4096; +pub const B57600: u32 = 4097; +pub const B115200: u32 = 4098; +pub const B230400: u32 = 4099; +pub const B460800: u32 = 4100; +pub const B500000: u32 = 4101; +pub const B576000: u32 = 4102; +pub const B921600: u32 = 4103; +pub const B1000000: u32 = 4104; +pub const B1152000: u32 = 4105; +pub const B1500000: u32 = 4106; +pub const B2000000: u32 = 4107; +pub const B2500000: u32 = 4108; +pub const B3000000: u32 = 4109; +pub const B3500000: u32 = 4110; +pub const B4000000: u32 = 4111; +pub const CIBAUD: u32 = 269418496; +pub const ISIG: u32 = 1; +pub const ICANON: u32 = 2; +pub const XCASE: u32 = 4; +pub const ECHO: u32 = 8; +pub const ECHOE: u32 = 16; +pub const ECHOK: u32 = 32; +pub const ECHONL: u32 = 64; +pub const NOFLSH: u32 = 128; +pub const IEXTEN: u32 = 256; +pub const ECHOCTL: u32 = 512; +pub const ECHOPRT: u32 = 1024; +pub const ECHOKE: u32 = 2048; +pub const FLUSHO: u32 = 8192; +pub const PENDIN: u32 = 16384; +pub const TOSTOP: u32 = 32768; +pub const ITOSTOP: u32 = 32768; +pub const EXTPROC: u32 = 65536; +pub const TIOCSER_TEMT: u32 = 1; +pub const TIOCPKT_DATA: u32 = 0; +pub const TIOCPKT_FLUSHREAD: u32 = 1; +pub const TIOCPKT_FLUSHWRITE: u32 = 2; +pub const TIOCPKT_STOP: u32 = 4; +pub const TIOCPKT_START: u32 = 8; +pub const TIOCPKT_NOSTOP: u32 = 16; +pub const TIOCPKT_DOSTOP: u32 = 32; +pub const TIOCPKT_IOCTL: u32 = 64; +pub const TIOCGLTC: u32 = 29812; +pub const TIOCSLTC: u32 = 29813; +pub const TIOCGETP: u32 = 29704; +pub const TIOCSETP: u32 = 29705; +pub const TIOCSETN: u32 = 29706; +pub const NCC: u32 = 8; +pub const TIOCM_LE: u32 = 1; +pub const TIOCM_DTR: u32 = 2; +pub const TIOCM_RTS: u32 = 4; +pub const TIOCM_ST: u32 = 16; +pub const TIOCM_SR: u32 = 32; +pub const TIOCM_CTS: u32 = 64; +pub const TIOCM_CAR: u32 = 256; +pub const TIOCM_CD: u32 = 256; +pub const TIOCM_RNG: u32 = 512; +pub const TIOCM_RI: u32 = 512; +pub const TIOCM_DSR: u32 = 1024; +pub const TIOCM_OUT1: u32 = 8192; +pub const TIOCM_OUT2: u32 = 16384; +pub const TIOCM_LOOP: u32 = 32768; +pub const UIO_FASTIOV: u32 = 8; +pub const UIO_MAXIOV: u32 = 1024; +pub const __NR_Linux: u32 = 5000; +pub const __NR_read: u32 = 5000; +pub const __NR_write: u32 = 5001; +pub const __NR_open: u32 = 5002; +pub const __NR_close: u32 = 5003; +pub const __NR_stat: u32 = 5004; +pub const __NR_fstat: u32 = 5005; +pub const __NR_lstat: u32 = 5006; +pub const __NR_poll: u32 = 5007; +pub const __NR_lseek: u32 = 5008; +pub const __NR_mmap: u32 = 5009; +pub const __NR_mprotect: u32 = 5010; +pub const __NR_munmap: u32 = 5011; +pub const __NR_brk: u32 = 5012; +pub const __NR_rt_sigaction: u32 = 5013; +pub const __NR_rt_sigprocmask: u32 = 5014; +pub const __NR_ioctl: u32 = 5015; +pub const __NR_pread64: u32 = 5016; +pub const __NR_pwrite64: u32 = 5017; +pub const __NR_readv: u32 = 5018; +pub const __NR_writev: u32 = 5019; +pub const __NR_access: u32 = 5020; +pub const __NR_pipe: u32 = 5021; +pub const __NR__newselect: u32 = 5022; +pub const __NR_sched_yield: u32 = 5023; +pub const __NR_mremap: u32 = 5024; +pub const __NR_msync: u32 = 5025; +pub const __NR_mincore: u32 = 5026; +pub const __NR_madvise: u32 = 5027; +pub const __NR_shmget: u32 = 5028; +pub const __NR_shmat: u32 = 5029; +pub const __NR_shmctl: u32 = 5030; +pub const __NR_dup: u32 = 5031; +pub const __NR_dup2: u32 = 5032; +pub const __NR_pause: u32 = 5033; +pub const __NR_nanosleep: u32 = 5034; +pub const __NR_getitimer: u32 = 5035; +pub const __NR_setitimer: u32 = 5036; +pub const __NR_alarm: u32 = 5037; +pub const __NR_getpid: u32 = 5038; +pub const __NR_sendfile: u32 = 5039; +pub const __NR_socket: u32 = 5040; +pub const __NR_connect: u32 = 5041; +pub const __NR_accept: u32 = 5042; +pub const __NR_sendto: u32 = 5043; +pub const __NR_recvfrom: u32 = 5044; +pub const __NR_sendmsg: u32 = 5045; +pub const __NR_recvmsg: u32 = 5046; +pub const __NR_shutdown: u32 = 5047; +pub const __NR_bind: u32 = 5048; +pub const __NR_listen: u32 = 5049; +pub const __NR_getsockname: u32 = 5050; +pub const __NR_getpeername: u32 = 5051; +pub const __NR_socketpair: u32 = 5052; +pub const __NR_setsockopt: u32 = 5053; +pub const __NR_getsockopt: u32 = 5054; +pub const __NR_clone: u32 = 5055; +pub const __NR_fork: u32 = 5056; +pub const __NR_execve: u32 = 5057; +pub const __NR_exit: u32 = 5058; +pub const __NR_wait4: u32 = 5059; +pub const __NR_kill: u32 = 5060; +pub const __NR_uname: u32 = 5061; +pub const __NR_semget: u32 = 5062; +pub const __NR_semop: u32 = 5063; +pub const __NR_semctl: u32 = 5064; +pub const __NR_shmdt: u32 = 5065; +pub const __NR_msgget: u32 = 5066; +pub const __NR_msgsnd: u32 = 5067; +pub const __NR_msgrcv: u32 = 5068; +pub const __NR_msgctl: u32 = 5069; +pub const __NR_fcntl: u32 = 5070; +pub const __NR_flock: u32 = 5071; +pub const __NR_fsync: u32 = 5072; +pub const __NR_fdatasync: u32 = 5073; +pub const __NR_truncate: u32 = 5074; +pub const __NR_ftruncate: u32 = 5075; +pub const __NR_getdents: u32 = 5076; +pub const __NR_getcwd: u32 = 5077; +pub const __NR_chdir: u32 = 5078; +pub const __NR_fchdir: u32 = 5079; +pub const __NR_rename: u32 = 5080; +pub const __NR_mkdir: u32 = 5081; +pub const __NR_rmdir: u32 = 5082; +pub const __NR_creat: u32 = 5083; +pub const __NR_link: u32 = 5084; +pub const __NR_unlink: u32 = 5085; +pub const __NR_symlink: u32 = 5086; +pub const __NR_readlink: u32 = 5087; +pub const __NR_chmod: u32 = 5088; +pub const __NR_fchmod: u32 = 5089; +pub const __NR_chown: u32 = 5090; +pub const __NR_fchown: u32 = 5091; +pub const __NR_lchown: u32 = 5092; +pub const __NR_umask: u32 = 5093; +pub const __NR_gettimeofday: u32 = 5094; +pub const __NR_getrlimit: u32 = 5095; +pub const __NR_getrusage: u32 = 5096; +pub const __NR_sysinfo: u32 = 5097; +pub const __NR_times: u32 = 5098; +pub const __NR_ptrace: u32 = 5099; +pub const __NR_getuid: u32 = 5100; +pub const __NR_syslog: u32 = 5101; +pub const __NR_getgid: u32 = 5102; +pub const __NR_setuid: u32 = 5103; +pub const __NR_setgid: u32 = 5104; +pub const __NR_geteuid: u32 = 5105; +pub const __NR_getegid: u32 = 5106; +pub const __NR_setpgid: u32 = 5107; +pub const __NR_getppid: u32 = 5108; +pub const __NR_getpgrp: u32 = 5109; +pub const __NR_setsid: u32 = 5110; +pub const __NR_setreuid: u32 = 5111; +pub const __NR_setregid: u32 = 5112; +pub const __NR_getgroups: u32 = 5113; +pub const __NR_setgroups: u32 = 5114; +pub const __NR_setresuid: u32 = 5115; +pub const __NR_getresuid: u32 = 5116; +pub const __NR_setresgid: u32 = 5117; +pub const __NR_getresgid: u32 = 5118; +pub const __NR_getpgid: u32 = 5119; +pub const __NR_setfsuid: u32 = 5120; +pub const __NR_setfsgid: u32 = 5121; +pub const __NR_getsid: u32 = 5122; +pub const __NR_capget: u32 = 5123; +pub const __NR_capset: u32 = 5124; +pub const __NR_rt_sigpending: u32 = 5125; +pub const __NR_rt_sigtimedwait: u32 = 5126; +pub const __NR_rt_sigqueueinfo: u32 = 5127; +pub const __NR_rt_sigsuspend: u32 = 5128; +pub const __NR_sigaltstack: u32 = 5129; +pub const __NR_utime: u32 = 5130; +pub const __NR_mknod: u32 = 5131; +pub const __NR_personality: u32 = 5132; +pub const __NR_ustat: u32 = 5133; +pub const __NR_statfs: u32 = 5134; +pub const __NR_fstatfs: u32 = 5135; +pub const __NR_sysfs: u32 = 5136; +pub const __NR_getpriority: u32 = 5137; +pub const __NR_setpriority: u32 = 5138; +pub const __NR_sched_setparam: u32 = 5139; +pub const __NR_sched_getparam: u32 = 5140; +pub const __NR_sched_setscheduler: u32 = 5141; +pub const __NR_sched_getscheduler: u32 = 5142; +pub const __NR_sched_get_priority_max: u32 = 5143; +pub const __NR_sched_get_priority_min: u32 = 5144; +pub const __NR_sched_rr_get_interval: u32 = 5145; +pub const __NR_mlock: u32 = 5146; +pub const __NR_munlock: u32 = 5147; +pub const __NR_mlockall: u32 = 5148; +pub const __NR_munlockall: u32 = 5149; +pub const __NR_vhangup: u32 = 5150; +pub const __NR_pivot_root: u32 = 5151; +pub const __NR__sysctl: u32 = 5152; +pub const __NR_prctl: u32 = 5153; +pub const __NR_adjtimex: u32 = 5154; +pub const __NR_setrlimit: u32 = 5155; +pub const __NR_chroot: u32 = 5156; +pub const __NR_sync: u32 = 5157; +pub const __NR_acct: u32 = 5158; +pub const __NR_settimeofday: u32 = 5159; +pub const __NR_mount: u32 = 5160; +pub const __NR_umount2: u32 = 5161; +pub const __NR_swapon: u32 = 5162; +pub const __NR_swapoff: u32 = 5163; +pub const __NR_reboot: u32 = 5164; +pub const __NR_sethostname: u32 = 5165; +pub const __NR_setdomainname: u32 = 5166; +pub const __NR_create_module: u32 = 5167; +pub const __NR_init_module: u32 = 5168; +pub const __NR_delete_module: u32 = 5169; +pub const __NR_get_kernel_syms: u32 = 5170; +pub const __NR_query_module: u32 = 5171; +pub const __NR_quotactl: u32 = 5172; +pub const __NR_nfsservctl: u32 = 5173; +pub const __NR_getpmsg: u32 = 5174; +pub const __NR_putpmsg: u32 = 5175; +pub const __NR_afs_syscall: u32 = 5176; +pub const __NR_reserved177: u32 = 5177; +pub const __NR_gettid: u32 = 5178; +pub const __NR_readahead: u32 = 5179; +pub const __NR_setxattr: u32 = 5180; +pub const __NR_lsetxattr: u32 = 5181; +pub const __NR_fsetxattr: u32 = 5182; +pub const __NR_getxattr: u32 = 5183; +pub const __NR_lgetxattr: u32 = 5184; +pub const __NR_fgetxattr: u32 = 5185; +pub const __NR_listxattr: u32 = 5186; +pub const __NR_llistxattr: u32 = 5187; +pub const __NR_flistxattr: u32 = 5188; +pub const __NR_removexattr: u32 = 5189; +pub const __NR_lremovexattr: u32 = 5190; +pub const __NR_fremovexattr: u32 = 5191; +pub const __NR_tkill: u32 = 5192; +pub const __NR_reserved193: u32 = 5193; +pub const __NR_futex: u32 = 5194; +pub const __NR_sched_setaffinity: u32 = 5195; +pub const __NR_sched_getaffinity: u32 = 5196; +pub const __NR_cacheflush: u32 = 5197; +pub const __NR_cachectl: u32 = 5198; +pub const __NR_sysmips: u32 = 5199; +pub const __NR_io_setup: u32 = 5200; +pub const __NR_io_destroy: u32 = 5201; +pub const __NR_io_getevents: u32 = 5202; +pub const __NR_io_submit: u32 = 5203; +pub const __NR_io_cancel: u32 = 5204; +pub const __NR_exit_group: u32 = 5205; +pub const __NR_lookup_dcookie: u32 = 5206; +pub const __NR_epoll_create: u32 = 5207; +pub const __NR_epoll_ctl: u32 = 5208; +pub const __NR_epoll_wait: u32 = 5209; +pub const __NR_remap_file_pages: u32 = 5210; +pub const __NR_rt_sigreturn: u32 = 5211; +pub const __NR_set_tid_address: u32 = 5212; +pub const __NR_restart_syscall: u32 = 5213; +pub const __NR_semtimedop: u32 = 5214; +pub const __NR_fadvise64: u32 = 5215; +pub const __NR_timer_create: u32 = 5216; +pub const __NR_timer_settime: u32 = 5217; +pub const __NR_timer_gettime: u32 = 5218; +pub const __NR_timer_getoverrun: u32 = 5219; +pub const __NR_timer_delete: u32 = 5220; +pub const __NR_clock_settime: u32 = 5221; +pub const __NR_clock_gettime: u32 = 5222; +pub const __NR_clock_getres: u32 = 5223; +pub const __NR_clock_nanosleep: u32 = 5224; +pub const __NR_tgkill: u32 = 5225; +pub const __NR_utimes: u32 = 5226; +pub const __NR_mbind: u32 = 5227; +pub const __NR_get_mempolicy: u32 = 5228; +pub const __NR_set_mempolicy: u32 = 5229; +pub const __NR_mq_open: u32 = 5230; +pub const __NR_mq_unlink: u32 = 5231; +pub const __NR_mq_timedsend: u32 = 5232; +pub const __NR_mq_timedreceive: u32 = 5233; +pub const __NR_mq_notify: u32 = 5234; +pub const __NR_mq_getsetattr: u32 = 5235; +pub const __NR_vserver: u32 = 5236; +pub const __NR_waitid: u32 = 5237; +pub const __NR_add_key: u32 = 5239; +pub const __NR_request_key: u32 = 5240; +pub const __NR_keyctl: u32 = 5241; +pub const __NR_set_thread_area: u32 = 5242; +pub const __NR_inotify_init: u32 = 5243; +pub const __NR_inotify_add_watch: u32 = 5244; +pub const __NR_inotify_rm_watch: u32 = 5245; +pub const __NR_migrate_pages: u32 = 5246; +pub const __NR_openat: u32 = 5247; +pub const __NR_mkdirat: u32 = 5248; +pub const __NR_mknodat: u32 = 5249; +pub const __NR_fchownat: u32 = 5250; +pub const __NR_futimesat: u32 = 5251; +pub const __NR_newfstatat: u32 = 5252; +pub const __NR_unlinkat: u32 = 5253; +pub const __NR_renameat: u32 = 5254; +pub const __NR_linkat: u32 = 5255; +pub const __NR_symlinkat: u32 = 5256; +pub const __NR_readlinkat: u32 = 5257; +pub const __NR_fchmodat: u32 = 5258; +pub const __NR_faccessat: u32 = 5259; +pub const __NR_pselect6: u32 = 5260; +pub const __NR_ppoll: u32 = 5261; +pub const __NR_unshare: u32 = 5262; +pub const __NR_splice: u32 = 5263; +pub const __NR_sync_file_range: u32 = 5264; +pub const __NR_tee: u32 = 5265; +pub const __NR_vmsplice: u32 = 5266; +pub const __NR_move_pages: u32 = 5267; +pub const __NR_set_robust_list: u32 = 5268; +pub const __NR_get_robust_list: u32 = 5269; +pub const __NR_kexec_load: u32 = 5270; +pub const __NR_getcpu: u32 = 5271; +pub const __NR_epoll_pwait: u32 = 5272; +pub const __NR_ioprio_set: u32 = 5273; +pub const __NR_ioprio_get: u32 = 5274; +pub const __NR_utimensat: u32 = 5275; +pub const __NR_signalfd: u32 = 5276; +pub const __NR_timerfd: u32 = 5277; +pub const __NR_eventfd: u32 = 5278; +pub const __NR_fallocate: u32 = 5279; +pub const __NR_timerfd_create: u32 = 5280; +pub const __NR_timerfd_gettime: u32 = 5281; +pub const __NR_timerfd_settime: u32 = 5282; +pub const __NR_signalfd4: u32 = 5283; +pub const __NR_eventfd2: u32 = 5284; +pub const __NR_epoll_create1: u32 = 5285; +pub const __NR_dup3: u32 = 5286; +pub const __NR_pipe2: u32 = 5287; +pub const __NR_inotify_init1: u32 = 5288; +pub const __NR_preadv: u32 = 5289; +pub const __NR_pwritev: u32 = 5290; +pub const __NR_rt_tgsigqueueinfo: u32 = 5291; +pub const __NR_perf_event_open: u32 = 5292; +pub const __NR_accept4: u32 = 5293; +pub const __NR_recvmmsg: u32 = 5294; +pub const __NR_fanotify_init: u32 = 5295; +pub const __NR_fanotify_mark: u32 = 5296; +pub const __NR_prlimit64: u32 = 5297; +pub const __NR_name_to_handle_at: u32 = 5298; +pub const __NR_open_by_handle_at: u32 = 5299; +pub const __NR_clock_adjtime: u32 = 5300; +pub const __NR_syncfs: u32 = 5301; +pub const __NR_sendmmsg: u32 = 5302; +pub const __NR_setns: u32 = 5303; +pub const __NR_process_vm_readv: u32 = 5304; +pub const __NR_process_vm_writev: u32 = 5305; +pub const __NR_kcmp: u32 = 5306; +pub const __NR_finit_module: u32 = 5307; +pub const __NR_getdents64: u32 = 5308; +pub const __NR_sched_setattr: u32 = 5309; +pub const __NR_sched_getattr: u32 = 5310; +pub const __NR_renameat2: u32 = 5311; +pub const __NR_seccomp: u32 = 5312; +pub const __NR_getrandom: u32 = 5313; +pub const __NR_memfd_create: u32 = 5314; +pub const __NR_bpf: u32 = 5315; +pub const __NR_execveat: u32 = 5316; +pub const __NR_userfaultfd: u32 = 5317; +pub const __NR_membarrier: u32 = 5318; +pub const __NR_mlock2: u32 = 5319; +pub const __NR_copy_file_range: u32 = 5320; +pub const __NR_preadv2: u32 = 5321; +pub const __NR_pwritev2: u32 = 5322; +pub const __NR_pkey_mprotect: u32 = 5323; +pub const __NR_pkey_alloc: u32 = 5324; +pub const __NR_pkey_free: u32 = 5325; +pub const __NR_statx: u32 = 5326; +pub const __NR_rseq: u32 = 5327; +pub const __NR_io_pgetevents: u32 = 5328; +pub const __NR_pidfd_send_signal: u32 = 5424; +pub const __NR_io_uring_setup: u32 = 5425; +pub const __NR_io_uring_enter: u32 = 5426; +pub const __NR_io_uring_register: u32 = 5427; +pub const __NR_open_tree: u32 = 5428; +pub const __NR_move_mount: u32 = 5429; +pub const __NR_fsopen: u32 = 5430; +pub const __NR_fsconfig: u32 = 5431; +pub const __NR_fsmount: u32 = 5432; +pub const __NR_fspick: u32 = 5433; +pub const __NR_pidfd_open: u32 = 5434; +pub const __NR_clone3: u32 = 5435; +pub const __NR_close_range: u32 = 5436; +pub const __NR_openat2: u32 = 5437; +pub const __NR_pidfd_getfd: u32 = 5438; +pub const __NR_faccessat2: u32 = 5439; +pub const __NR_process_madvise: u32 = 5440; +pub const __NR_epoll_pwait2: u32 = 5441; +pub const __NR_mount_setattr: u32 = 5442; +pub const __NR_quotactl_fd: u32 = 5443; +pub const __NR_landlock_create_ruleset: u32 = 5444; +pub const __NR_landlock_add_rule: u32 = 5445; +pub const __NR_landlock_restrict_self: u32 = 5446; +pub const __NR_process_mrelease: u32 = 5448; +pub const __NR_futex_waitv: u32 = 5449; +pub const __NR_set_mempolicy_home_node: u32 = 5450; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const P_ALL: u32 = 0; +pub const P_PID: u32 = 1; +pub const P_PGID: u32 = 2; +pub const P_PIDFD: u32 = 3; +pub const XATTR_CREATE: u32 = 1; +pub const XATTR_REPLACE: u32 = 2; +pub const XATTR_OS2_PREFIX: &[u8; 5] = b"os2.\0"; +pub const XATTR_MAC_OSX_PREFIX: &[u8; 5] = b"osx.\0"; +pub const XATTR_BTRFS_PREFIX: &[u8; 7] = b"btrfs.\0"; +pub const XATTR_HURD_PREFIX: &[u8; 5] = b"gnu.\0"; +pub const XATTR_SECURITY_PREFIX: &[u8; 10] = b"security.\0"; +pub const XATTR_SYSTEM_PREFIX: &[u8; 8] = b"system.\0"; +pub const XATTR_TRUSTED_PREFIX: &[u8; 9] = b"trusted.\0"; +pub const XATTR_USER_PREFIX: &[u8; 6] = b"user.\0"; +pub const XATTR_EVM_SUFFIX: &[u8; 4] = b"evm\0"; +pub const XATTR_NAME_EVM: &[u8; 13] = b"security.evm\0"; +pub const XATTR_IMA_SUFFIX: &[u8; 4] = b"ima\0"; +pub const XATTR_NAME_IMA: &[u8; 13] = b"security.ima\0"; +pub const XATTR_SELINUX_SUFFIX: &[u8; 8] = b"selinux\0"; +pub const XATTR_NAME_SELINUX: &[u8; 17] = b"security.selinux\0"; +pub const XATTR_SMACK_SUFFIX: &[u8; 8] = b"SMACK64\0"; +pub const XATTR_SMACK_IPIN: &[u8; 12] = b"SMACK64IPIN\0"; +pub const XATTR_SMACK_IPOUT: &[u8; 13] = b"SMACK64IPOUT\0"; +pub const XATTR_SMACK_EXEC: &[u8; 12] = b"SMACK64EXEC\0"; +pub const XATTR_SMACK_TRANSMUTE: &[u8; 17] = b"SMACK64TRANSMUTE\0"; +pub const XATTR_SMACK_MMAP: &[u8; 12] = b"SMACK64MMAP\0"; +pub const XATTR_NAME_SMACK: &[u8; 17] = b"security.SMACK64\0"; +pub const XATTR_NAME_SMACKIPIN: &[u8; 21] = b"security.SMACK64IPIN\0"; +pub const XATTR_NAME_SMACKIPOUT: &[u8; 22] = b"security.SMACK64IPOUT\0"; +pub const XATTR_NAME_SMACKEXEC: &[u8; 21] = b"security.SMACK64EXEC\0"; +pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26] = b"security.SMACK64TRANSMUTE\0"; +pub const XATTR_NAME_SMACKMMAP: &[u8; 21] = b"security.SMACK64MMAP\0"; +pub const XATTR_APPARMOR_SUFFIX: &[u8; 9] = b"apparmor\0"; +pub const XATTR_NAME_APPARMOR: &[u8; 18] = b"security.apparmor\0"; +pub const XATTR_CAPS_SUFFIX: &[u8; 11] = b"capability\0"; +pub const XATTR_NAME_CAPS: &[u8; 20] = b"security.capability\0"; +pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17] = b"posix_acl_access\0"; +pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24] = b"system.posix_acl_access\0"; +pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18] = b"posix_acl_default\0"; +pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25] = b"system.posix_acl_default\0"; +pub const MFD_CLOEXEC: u32 = 1; +pub const MFD_ALLOW_SEALING: u32 = 2; +pub const MFD_HUGETLB: u32 = 4; +pub const MFD_NOEXEC_SEAL: u32 = 8; +pub const MFD_EXEC: u32 = 16; +pub const MFD_HUGE_SHIFT: u32 = 26; +pub const MFD_HUGE_MASK: u32 = 63; +pub const MFD_HUGE_64KB: u32 = 1073741824; +pub const MFD_HUGE_512KB: u32 = 1275068416; +pub const MFD_HUGE_1MB: u32 = 1342177280; +pub const MFD_HUGE_2MB: u32 = 1409286144; +pub const MFD_HUGE_8MB: u32 = 1543503872; +pub const MFD_HUGE_16MB: u32 = 1610612736; +pub const MFD_HUGE_32MB: u32 = 1677721600; +pub const MFD_HUGE_256MB: u32 = 1879048192; +pub const MFD_HUGE_512MB: u32 = 1946157056; +pub const MFD_HUGE_1GB: u32 = 2013265920; +pub const MFD_HUGE_2GB: u32 = 2080374784; +pub const MFD_HUGE_16GB: u32 = 2281701376; +pub const TFD_TIMER_ABSTIME: u32 = 1; +pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; +pub const TFD_CLOEXEC: u32 = 524288; +pub const TFD_NONBLOCK: u32 = 128; +pub const USERFAULTFD_IOC: u32 = 170; +pub const _UFFDIO_REGISTER: u32 = 0; +pub const _UFFDIO_UNREGISTER: u32 = 1; +pub const _UFFDIO_WAKE: u32 = 2; +pub const _UFFDIO_COPY: u32 = 3; +pub const _UFFDIO_ZEROPAGE: u32 = 4; +pub const _UFFDIO_WRITEPROTECT: u32 = 6; +pub const _UFFDIO_CONTINUE: u32 = 7; +pub const _UFFDIO_API: u32 = 63; +pub const UFFDIO: u32 = 170; +pub const UFFD_EVENT_PAGEFAULT: u32 = 18; +pub const UFFD_EVENT_FORK: u32 = 19; +pub const UFFD_EVENT_REMAP: u32 = 20; +pub const UFFD_EVENT_REMOVE: u32 = 21; +pub const UFFD_EVENT_UNMAP: u32 = 22; +pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; +pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; +pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; +pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; +pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; +pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; +pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; +pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; +pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; +pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; +pub const UFFD_FEATURE_SIGBUS: u32 = 128; +pub const UFFD_FEATURE_THREAD_ID: u32 = 256; +pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; +pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; +pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; +pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; +pub const UFFD_USER_MODE_ONLY: u32 = 1; +pub const DT_UNKNOWN: u32 = 0; +pub const DT_FIFO: u32 = 1; +pub const DT_CHR: u32 = 2; +pub const DT_DIR: u32 = 4; +pub const DT_BLK: u32 = 6; +pub const DT_REG: u32 = 8; +pub const DT_LNK: u32 = 10; +pub const DT_SOCK: u32 = 12; +pub const STAT_HAVE_NSEC: u32 = 1; +pub const F_OK: u32 = 0; +pub const R_OK: u32 = 4; +pub const W_OK: u32 = 2; +pub const X_OK: u32 = 1; +pub const UTIME_NOW: u32 = 1073741823; +pub const UTIME_OMIT: u32 = 1073741822; +pub const MNT_FORCE: u32 = 1; +pub const MNT_DETACH: u32 = 2; +pub const MNT_EXPIRE: u32 = 4; +pub const UMOUNT_NOFOLLOW: u32 = 8; +pub const UMOUNT_UNUSED: u32 = 2147483648; +pub const STDIN_FILENO: u32 = 0; +pub const STDOUT_FILENO: u32 = 1; +pub const STDERR_FILENO: u32 = 2; +pub const RWF_HIPRI: u32 = 1; +pub const RWF_DSYNC: u32 = 2; +pub const RWF_SYNC: u32 = 4; +pub const RWF_NOWAIT: u32 = 8; +pub const RWF_APPEND: u32 = 16; +pub const EFD_SEMAPHORE: u32 = 1; +pub const EFD_CLOEXEC: u32 = 524288; +pub const EFD_NONBLOCK: u32 = 128; +pub const EPOLLIN: u32 = 1; +pub const EPOLLPRI: u32 = 2; +pub const EPOLLOUT: u32 = 4; +pub const EPOLLERR: u32 = 8; +pub const EPOLLHUP: u32 = 16; +pub const EPOLLNVAL: u32 = 32; +pub const EPOLLRDNORM: u32 = 64; +pub const EPOLLRDBAND: u32 = 128; +pub const EPOLLWRNORM: u32 = 256; +pub const EPOLLWRBAND: u32 = 512; +pub const EPOLLMSG: u32 = 1024; +pub const EPOLLRDHUP: u32 = 8192; +pub const EPOLLEXCLUSIVE: u32 = 268435456; +pub const EPOLLWAKEUP: u32 = 536870912; +pub const EPOLLONESHOT: u32 = 1073741824; +pub const EPOLLET: u32 = 2147483648; +pub const TFD_SHARED_FCNTL_FLAGS: u32 = 524416; +pub const TFD_CREATE_FLAGS: u32 = 524416; +pub const TFD_SETTIME_FLAGS: u32 = 1; +pub const UFFD_API: u32 = 170; +pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; +pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; +pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; +pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; +pub const UFFDIO_COPY_MODE_WP: u32 = 2; +pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; +pub const POLLWRNORM: u32 = 4; +pub const TCSANOW: u32 = 21518; +pub const TCSADRAIN: u32 = 21519; +pub const TCSAFLUSH: u32 = 21520; +pub const SPLICE_F_MOVE: u32 = 1; +pub const SPLICE_F_NONBLOCK: u32 = 2; +pub const SPLICE_F_MORE: u32 = 4; +pub const SPLICE_F_GIFT: u32 = 8; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, } #[repr(u32)] #[non_exhaustive] @@ -4685,682 +2762,161 @@ pub enum membarrier_cmd_flag { MEMBARRIER_CMD_FLAG_CPU = 1, } -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct uffd_msg { -pub event: __u8, -pub reserved1: __u8, -pub reserved2: __u16, -pub reserved3: __u32, -pub arg: uffd_msg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1 { -pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, -pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, -pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, -pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, -pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { -pub flags: __u64, -pub address: __u64, -pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { -pub ptid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { -pub ufd: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { -pub from: __u64, -pub to: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { -pub start: __u64, -pub end: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { -pub reserved1: __u64, -pub reserved2: __u64, -pub reserved3: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_api { -pub api: __u64, -pub features: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_range { -pub start: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_register { -pub range: uffdio_range, -pub mode: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_copy { -pub dst: __u64, -pub src: __u64, -pub len: __u64, -pub mode: __u64, -pub copy: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_zeropage { -pub range: uffdio_range, -pub mode: __u64, -pub zeropage: __s64, -} #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_writeprotect { -pub range: uffdio_range, -pub mode: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_continue { -pub range: uffdio_range, -pub mode: __u64, -pub mapped: __s64, -} -#[repr(C)] -pub struct io_uring_sqe { -pub opcode: __u8, -pub flags: __u8, -pub ioprio: __u16, -pub fd: __s32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, -pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, -pub len: __u32, -pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, -pub user_data: __u64, -pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, -pub personality: __u16, -pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, -pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_1 { -pub off: __u64, -pub addr2: __u64, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { -pub cmd_op: __u32, -pub __pad1: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_2 { -pub addr: __u64, -pub splice_off_in: __u64, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_3 { -pub rw_flags: __kernel_rwf_t, -pub fsync_flags: __u32, -pub poll_events: __u16, -pub poll32_events: __u32, -pub sync_range_flags: __u32, -pub msg_flags: __u32, -pub timeout_flags: __u32, -pub accept_flags: __u32, -pub cancel_flags: __u32, -pub open_flags: __u32, -pub statx_flags: __u32, -pub fadvise_advice: __u32, -pub splice_flags: __u32, -pub rename_flags: __u32, -pub unlink_flags: __u32, -pub hardlink_flags: __u32, -pub xattr_flags: __u32, -pub msg_ring_flags: __u32, -pub uring_cmd_flags: __u32, -} -#[repr(C, packed)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_4 { -pub buf_index: __u16, -pub buf_group: __u16, +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_5 { -pub splice_fd_in: __s32, -pub file_index: __u32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { -pub addr_len: __u16, -pub __pad3: [__u16; 1usize], -} -#[repr(C)] -pub struct io_uring_sqe__bindgen_ty_6 { -pub __bindgen_anon_1: __BindgenUnionField, -pub cmd: __BindgenUnionField<[__u8; 0usize]>, -pub bindgen_union_field: [u64; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { -pub addr3: __u64, -pub __pad2: [__u64; 1usize], -} -pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT; -pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT; -pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT; -pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT; -pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT; -pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT; -pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -IOSQE_FIXED_FILE_BIT = 0, -IOSQE_IO_DRAIN_BIT = 1, -IOSQE_IO_LINK_BIT = 2, -IOSQE_IO_HARDLINK_BIT = 3, -IOSQE_ASYNC_BIT = 4, -IOSQE_BUFFER_SELECT_BIT = 5, -IOSQE_CQE_SKIP_SUCCESS_BIT = 6, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum io_uring_op { -IORING_OP_NOP = 0, -IORING_OP_READV = 1, -IORING_OP_WRITEV = 2, -IORING_OP_FSYNC = 3, -IORING_OP_READ_FIXED = 4, -IORING_OP_WRITE_FIXED = 5, -IORING_OP_POLL_ADD = 6, -IORING_OP_POLL_REMOVE = 7, -IORING_OP_SYNC_FILE_RANGE = 8, -IORING_OP_SENDMSG = 9, -IORING_OP_RECVMSG = 10, -IORING_OP_TIMEOUT = 11, -IORING_OP_TIMEOUT_REMOVE = 12, -IORING_OP_ACCEPT = 13, -IORING_OP_ASYNC_CANCEL = 14, -IORING_OP_LINK_TIMEOUT = 15, -IORING_OP_CONNECT = 16, -IORING_OP_FALLOCATE = 17, -IORING_OP_OPENAT = 18, -IORING_OP_CLOSE = 19, -IORING_OP_FILES_UPDATE = 20, -IORING_OP_STATX = 21, -IORING_OP_READ = 22, -IORING_OP_WRITE = 23, -IORING_OP_FADVISE = 24, -IORING_OP_MADVISE = 25, -IORING_OP_SEND = 26, -IORING_OP_RECV = 27, -IORING_OP_OPENAT2 = 28, -IORING_OP_EPOLL_CTL = 29, -IORING_OP_SPLICE = 30, -IORING_OP_PROVIDE_BUFFERS = 31, -IORING_OP_REMOVE_BUFFERS = 32, -IORING_OP_TEE = 33, -IORING_OP_SHUTDOWN = 34, -IORING_OP_RENAMEAT = 35, -IORING_OP_UNLINKAT = 36, -IORING_OP_MKDIRAT = 37, -IORING_OP_SYMLINKAT = 38, -IORING_OP_LINKAT = 39, -IORING_OP_MSG_RING = 40, -IORING_OP_FSETXATTR = 41, -IORING_OP_SETXATTR = 42, -IORING_OP_FGETXATTR = 43, -IORING_OP_GETXATTR = 44, -IORING_OP_SOCKET = 45, -IORING_OP_URING_CMD = 46, -IORING_OP_SEND_ZC = 47, -IORING_OP_SENDMSG_ZC = 48, -IORING_OP_LAST = 49, -} -pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA; -pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_8 { -IORING_MSG_DATA = 0, -IORING_MSG_SEND_FD = 1, -} -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_cqe { -pub user_data: __u64, -pub res: __s32, -pub flags: __u32, -pub big_cqe: __IncompleteArrayField<__u64>, -} -pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_9 { -IORING_CQE_BUFFER_SHIFT = 16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_sqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub flags: __u32, -pub dropped: __u32, -pub array: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_cqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub overflow: __u32, -pub cqes: __u32, -pub flags: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_params { -pub sq_entries: __u32, -pub cq_entries: __u32, -pub flags: __u32, -pub sq_thread_cpu: __u32, -pub sq_thread_idle: __u32, -pub features: __u32, -pub wq_fd: __u32, -pub resv: [__u32; 3usize], -pub sq_off: io_sqring_offsets, -pub cq_off: io_cqring_offsets, -} -pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS; -pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS; -pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES; -pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES; -pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD; -pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD; -pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE; -pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC; -pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE; -pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY; -pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY; -pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS; -pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS; -pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2; -pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2; -pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2; -pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE; -pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF; -pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF; -pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS; -pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS; -pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS; -pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING; -pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING; -pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL; -pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE; -pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST; -pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_USE_REGISTERED_RING; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_10 { -IORING_REGISTER_BUFFERS = 0, -IORING_UNREGISTER_BUFFERS = 1, -IORING_REGISTER_FILES = 2, -IORING_UNREGISTER_FILES = 3, -IORING_REGISTER_EVENTFD = 4, -IORING_UNREGISTER_EVENTFD = 5, -IORING_REGISTER_FILES_UPDATE = 6, -IORING_REGISTER_EVENTFD_ASYNC = 7, -IORING_REGISTER_PROBE = 8, -IORING_REGISTER_PERSONALITY = 9, -IORING_UNREGISTER_PERSONALITY = 10, -IORING_REGISTER_RESTRICTIONS = 11, -IORING_REGISTER_ENABLE_RINGS = 12, -IORING_REGISTER_FILES2 = 13, -IORING_REGISTER_FILES_UPDATE2 = 14, -IORING_REGISTER_BUFFERS2 = 15, -IORING_REGISTER_BUFFERS_UPDATE = 16, -IORING_REGISTER_IOWQ_AFF = 17, -IORING_UNREGISTER_IOWQ_AFF = 18, -IORING_REGISTER_IOWQ_MAX_WORKERS = 19, -IORING_REGISTER_RING_FDS = 20, -IORING_UNREGISTER_RING_FDS = 21, -IORING_REGISTER_PBUF_RING = 22, -IORING_UNREGISTER_PBUF_RING = 23, -IORING_REGISTER_SYNC_CANCEL = 24, -IORING_REGISTER_FILE_ALLOC_RANGE = 25, -IORING_REGISTER_LAST = 26, -IORING_REGISTER_USE_REGISTERED_RING = 2147483648, -} -pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND; -pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_11 { -IO_WQ_BOUND = 0, -IO_WQ_UNBOUND = 1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_files_update { -pub offset: __u32, -pub resv: __u32, -pub fds: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_register { -pub nr: __u32, -pub flags: __u32, -pub resv2: __u64, -pub data: __u64, -pub tags: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update2 { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -pub tags: __u64, -pub nr: __u32, -pub resv2: __u32, +#[derive(Copy, Clone)] +pub union sigval { +pub sival_int: crate::ctypes::c_int, +pub sival_ptr: *mut crate::ctypes::c_void, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_slot { -pub tag: __u64, -pub resv: [__u64; 3usize], +#[derive(Copy, Clone)] +pub union __sifields { +pub _kill: __sifields__bindgen_ty_1, +pub _timer: __sifields__bindgen_ty_2, +pub _rt: __sifields__bindgen_ty_3, +pub _sigchld: __sifields__bindgen_ty_4, +pub _sigfault: __sifields__bindgen_ty_5, +pub _sigpoll: __sifields__bindgen_ty_6, +pub _sigsys: __sifields__bindgen_ty_7, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_register { -pub nr_slots: __u32, -pub resv: __u32, -pub resv2: __u64, -pub data: __u64, -pub resv3: __u64, +#[derive(Copy, Clone)] +pub union __sifields__bindgen_ty_5__bindgen_ty_1 { +pub _trapno: crate::ctypes::c_int, +pub _addr_lsb: crate::ctypes::c_short, +pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, +pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, +pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_probe_op { -pub op: __u8, -pub resv: __u8, -pub flags: __u16, -pub resv2: __u32, +#[derive(Copy, Clone)] +pub union siginfo__bindgen_ty_1 { +pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, +pub _si_pad: [crate::ctypes::c_int; 32usize], } #[repr(C)] -#[derive(Debug)] -pub struct io_uring_probe { -pub last_op: __u8, -pub ops_len: __u8, -pub resv: __u16, -pub resv2: [__u32; 3usize], -pub ops: __IncompleteArrayField, +#[derive(Copy, Clone)] +pub union sigevent__bindgen_ty_1 { +pub _pad: [crate::ctypes::c_int; 12usize], +pub _tid: crate::ctypes::c_int, +pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] -pub struct io_uring_restriction { -pub opcode: __u16, -pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, -pub resv: __u8, -pub resv2: [__u32; 3usize], +pub union uffd_msg__bindgen_ty_1 { +pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, +pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, +pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, +pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, +pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_restriction__bindgen_ty_1 { -pub register_op: __u8, -pub sqe_op: __u8, -pub sqe_flags: __u8, +pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { +pub ptid: __u32, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf { -pub addr: __u64, -pub len: __u32, -pub bid: __u16, -pub resv: __u16, +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } } -#[repr(C)] -pub struct io_uring_buf_ring { -pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, } -#[repr(C)] -pub struct io_uring_buf_ring__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 2usize], +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { -pub resv1: __u64, -pub resv2: __u32, -pub resv3: __u16, -pub tail: __u16, +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; } -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { -pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, -pub bufs: __IncompleteArrayField, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_reg { -pub ring_addr: __u64, -pub ring_entries: __u32, -pub bgid: __u16, -pub pad: __u16, -pub resv: [__u64; 3usize], +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; } -pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP; -pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP; -pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; -pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; -pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_12 { -IORING_RESTRICTION_REGISTER_OP = 0, -IORING_RESTRICTION_SQE_OP = 1, -IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, -IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, -IORING_RESTRICTION_LAST = 4, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_getevents_arg { -pub sigmask: __u64, -pub sigmask_sz: __u32, -pub pad: __u32, -pub ts: __u64, +val } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sync_cancel_reg { -pub addr: __u64, -pub fd: __s32, -pub flags: __u32, -pub timeout: __kernel_timespec, -pub pad: [__u64; 4usize], +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_file_index_range { -pub off: __u32, -pub len: __u32, -pub resv: __u64, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_recvmsg_out { -pub namelen: __u32, -pub controllen: __u32, -pub payloadlen: __u32, -pub flags: __u32, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr { -pub __storage: __kernel_sockaddr_storage, +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct linger { -pub l_onoff: crate::ctypes::c_int, -pub l_linger: crate::ctypes::c_int, +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T } -#[repr(C)] -#[derive(Debug)] -pub struct linux_dirent64 { -pub d_ino: crate::ctypes::c_ulong, -pub d_off: crate::ctypes::c_long, -pub d_reclen: __u16, -pub d_type: __u8, -pub d_name: __IncompleteArrayField, +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T } -pub type socklen_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat { -pub st_dev: crate::ctypes::c_uint, -pub st_pad0: [crate::ctypes::c_uint; 3usize], -pub st_ino: crate::ctypes::c_ulong, -pub st_mode: __kernel_mode_t, -pub st_nlink: __u32, -pub st_uid: __kernel_uid32_t, -pub st_gid: __kernel_gid32_t, -pub st_rdev: crate::ctypes::c_uint, -pub st_pad1: [crate::ctypes::c_uint; 3usize], -pub st_size: crate::ctypes::c_long, -pub st_atime: crate::ctypes::c_uint, -pub st_atime_nsec: crate::ctypes::c_uint, -pub st_mtime: crate::ctypes::c_uint, -pub st_mtime_nsec: crate::ctypes::c_uint, -pub st_ctime: crate::ctypes::c_uint, -pub st_ctime_nsec: crate::ctypes::c_uint, -pub st_blksize: crate::ctypes::c_uint, -pub st_pad2: crate::ctypes::c_uint, -pub st_blocks: crate::ctypes::c_ulong, +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) } -pub type fsid_t = __kernel_fsid_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs { -pub f_type: crate::ctypes::c_long, -pub f_bsize: crate::ctypes::c_long, -pub f_frsize: crate::ctypes::c_long, -pub f_blocks: crate::ctypes::c_long, -pub f_bfree: crate::ctypes::c_long, -pub f_files: crate::ctypes::c_long, -pub f_ffree: crate::ctypes::c_long, -pub f_bavail: crate::ctypes::c_long, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: crate::ctypes::c_long, -pub f_flags: crate::ctypes::c_long, -pub f_spare: [crate::ctypes::c_long; 5usize], +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs64 { -pub f_type: crate::ctypes::c_long, -pub f_bsize: crate::ctypes::c_long, -pub f_frsize: crate::ctypes::c_long, -pub f_blocks: crate::ctypes::c_long, -pub f_bfree: crate::ctypes::c_long, -pub f_files: crate::ctypes::c_long, -pub f_ffree: crate::ctypes::c_long, -pub f_bavail: crate::ctypes::c_long, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: crate::ctypes::c_long, -pub f_flags: crate::ctypes::c_long, -pub f_spare: [crate::ctypes::c_long; 5usize], } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct compat_statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_frsize: __u32, -pub __pad: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_bavail: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 5usize], +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") } -pub type __fsword_t = __u32; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_desc { -pub entry_number: crate::ctypes::c_uint, -pub base_addr: crate::ctypes::c_uint, -pub limit: crate::ctypes::c_uint, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub __bindgen_padding_0: [u8; 3usize], +} +impl membarrier_cmd { +pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; } impl user_desc { #[inline] @@ -5459,46 +3015,3 @@ __bindgen_bitfield_unit } } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr { -pub msg_name: *mut crate::ctypes::c_void, -pub msg_namelen: crate::ctypes::c_int, -pub msg_iov: *mut iovec, -pub msg_iovlen: size_t, -pub msg_control: *mut crate::ctypes::c_void, -pub msg_controllen: size_t, -pub msg_flags: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsghdr { -pub cmsg_len: size_t, -pub cmsg_level: crate::ctypes::c_int, -pub cmsg_type: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ucred { -pub pid: __u32, -pub uid: __u32, -pub gid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mmsghdr { -pub msg_hdr: msghdr, -pub msg_len: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigset_t { -pub sig: [crate::ctypes::c_ulong; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigaction { -pub sa_handler_kernel: __kernel_sighandler_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_mask: kernel_sigset_t, -} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/if_ether.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/if_ether.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/if_ether.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/if_ether.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,177 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ethhdr { +pub h_dest: [crate::ctypes::c_uchar; 6usize], +pub h_source: [crate::ctypes::c_uchar; 6usize], +pub h_proto: __be16, +} +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const ETH_ALEN: u32 = 6; +pub const ETH_TLEN: u32 = 2; +pub const ETH_HLEN: u32 = 14; +pub const ETH_ZLEN: u32 = 60; +pub const ETH_DATA_LEN: u32 = 1500; +pub const ETH_FRAME_LEN: u32 = 1514; +pub const ETH_FCS_LEN: u32 = 4; +pub const ETH_MIN_MTU: u32 = 68; +pub const ETH_MAX_MTU: u32 = 65535; +pub const ETH_P_LOOP: u32 = 96; +pub const ETH_P_PUP: u32 = 512; +pub const ETH_P_PUPAT: u32 = 513; +pub const ETH_P_TSN: u32 = 8944; +pub const ETH_P_ERSPAN2: u32 = 8939; +pub const ETH_P_IP: u32 = 2048; +pub const ETH_P_X25: u32 = 2053; +pub const ETH_P_ARP: u32 = 2054; +pub const ETH_P_BPQ: u32 = 2303; +pub const ETH_P_IEEEPUP: u32 = 2560; +pub const ETH_P_IEEEPUPAT: u32 = 2561; +pub const ETH_P_BATMAN: u32 = 17157; +pub const ETH_P_DEC: u32 = 24576; +pub const ETH_P_DNA_DL: u32 = 24577; +pub const ETH_P_DNA_RC: u32 = 24578; +pub const ETH_P_DNA_RT: u32 = 24579; +pub const ETH_P_LAT: u32 = 24580; +pub const ETH_P_DIAG: u32 = 24581; +pub const ETH_P_CUST: u32 = 24582; +pub const ETH_P_SCA: u32 = 24583; +pub const ETH_P_TEB: u32 = 25944; +pub const ETH_P_RARP: u32 = 32821; +pub const ETH_P_ATALK: u32 = 32923; +pub const ETH_P_AARP: u32 = 33011; +pub const ETH_P_8021Q: u32 = 33024; +pub const ETH_P_ERSPAN: u32 = 35006; +pub const ETH_P_IPX: u32 = 33079; +pub const ETH_P_IPV6: u32 = 34525; +pub const ETH_P_PAUSE: u32 = 34824; +pub const ETH_P_SLOW: u32 = 34825; +pub const ETH_P_WCCP: u32 = 34878; +pub const ETH_P_MPLS_UC: u32 = 34887; +pub const ETH_P_MPLS_MC: u32 = 34888; +pub const ETH_P_ATMMPOA: u32 = 34892; +pub const ETH_P_PPP_DISC: u32 = 34915; +pub const ETH_P_PPP_SES: u32 = 34916; +pub const ETH_P_LINK_CTL: u32 = 34924; +pub const ETH_P_ATMFATE: u32 = 34948; +pub const ETH_P_PAE: u32 = 34958; +pub const ETH_P_PROFINET: u32 = 34962; +pub const ETH_P_REALTEK: u32 = 34969; +pub const ETH_P_AOE: u32 = 34978; +pub const ETH_P_ETHERCAT: u32 = 34980; +pub const ETH_P_8021AD: u32 = 34984; +pub const ETH_P_802_EX1: u32 = 34997; +pub const ETH_P_PREAUTH: u32 = 35015; +pub const ETH_P_TIPC: u32 = 35018; +pub const ETH_P_LLDP: u32 = 35020; +pub const ETH_P_MRP: u32 = 35043; +pub const ETH_P_MACSEC: u32 = 35045; +pub const ETH_P_8021AH: u32 = 35047; +pub const ETH_P_MVRP: u32 = 35061; +pub const ETH_P_1588: u32 = 35063; +pub const ETH_P_NCSI: u32 = 35064; +pub const ETH_P_PRP: u32 = 35067; +pub const ETH_P_CFM: u32 = 35074; +pub const ETH_P_FCOE: u32 = 35078; +pub const ETH_P_IBOE: u32 = 35093; +pub const ETH_P_TDLS: u32 = 35085; +pub const ETH_P_FIP: u32 = 35092; +pub const ETH_P_80221: u32 = 35095; +pub const ETH_P_HSR: u32 = 35119; +pub const ETH_P_NSH: u32 = 35151; +pub const ETH_P_LOOPBACK: u32 = 36864; +pub const ETH_P_QINQ1: u32 = 37120; +pub const ETH_P_QINQ2: u32 = 37376; +pub const ETH_P_QINQ3: u32 = 37632; +pub const ETH_P_EDSA: u32 = 56026; +pub const ETH_P_DSA_8021Q: u32 = 56027; +pub const ETH_P_DSA_A5PSW: u32 = 57345; +pub const ETH_P_IFE: u32 = 60734; +pub const ETH_P_AF_IUCV: u32 = 64507; +pub const ETH_P_802_3_MIN: u32 = 1536; +pub const ETH_P_802_3: u32 = 1; +pub const ETH_P_AX25: u32 = 2; +pub const ETH_P_ALL: u32 = 3; +pub const ETH_P_802_2: u32 = 4; +pub const ETH_P_SNAP: u32 = 5; +pub const ETH_P_DDCMP: u32 = 6; +pub const ETH_P_WAN_PPP: u32 = 7; +pub const ETH_P_PPP_MP: u32 = 8; +pub const ETH_P_LOCALTALK: u32 = 9; +pub const ETH_P_CAN: u32 = 12; +pub const ETH_P_CANFD: u32 = 13; +pub const ETH_P_CANXL: u32 = 14; +pub const ETH_P_PPPTALK: u32 = 16; +pub const ETH_P_TR_802_2: u32 = 17; +pub const ETH_P_MOBITEX: u32 = 21; +pub const ETH_P_CONTROL: u32 = 22; +pub const ETH_P_IRDA: u32 = 23; +pub const ETH_P_ECONET: u32 = 24; +pub const ETH_P_HDLC: u32 = 25; +pub const ETH_P_ARCNET: u32 = 26; +pub const ETH_P_DSA: u32 = 27; +pub const ETH_P_TRAILER: u32 = 28; +pub const ETH_P_PHONET: u32 = 245; +pub const ETH_P_IEEE802154: u32 = 246; +pub const ETH_P_CAIF: u32 = 247; +pub const ETH_P_XDSA: u32 = 248; +pub const ETH_P_MAP: u32 = 249; +pub const ETH_P_MCTP: u32 = 250; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/ioctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/ioctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/ioctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const FIONREAD: u32 = 18047; pub const FIONBIO: u32 = 26238; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/io_uring.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/io_uring.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/io_uring.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/io_uring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1093 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_rwf_t = crate::ctypes::c_int; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +pub struct io_uring_sqe { +pub opcode: __u8, +pub flags: __u8, +pub ioprio: __u16, +pub fd: __s32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, +pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, +pub len: __u32, +pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, +pub user_data: __u64, +pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, +pub personality: __u16, +pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, +pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { +pub cmd_op: __u32, +pub __pad1: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { +pub addr_len: __u16, +pub __pad3: [__u16; 1usize], +} +#[repr(C)] +pub struct io_uring_sqe__bindgen_ty_6 { +pub __bindgen_anon_1: __BindgenUnionField, +pub cmd: __BindgenUnionField<[__u8; 0usize]>, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { +pub addr3: __u64, +pub __pad2: [__u64; 1usize], +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_cqe { +pub user_data: __u64, +pub res: __s32, +pub flags: __u32, +pub big_cqe: __IncompleteArrayField<__u64>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_sqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub flags: __u32, +pub dropped: __u32, +pub array: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_cqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub overflow: __u32, +pub cqes: __u32, +pub flags: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_params { +pub sq_entries: __u32, +pub cq_entries: __u32, +pub flags: __u32, +pub sq_thread_cpu: __u32, +pub sq_thread_idle: __u32, +pub features: __u32, +pub wq_fd: __u32, +pub resv: [__u32; 3usize], +pub sq_off: io_sqring_offsets, +pub cq_off: io_cqring_offsets, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_files_update { +pub offset: __u32, +pub resv: __u32, +pub fds: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_register { +pub nr: __u32, +pub flags: __u32, +pub resv2: __u64, +pub data: __u64, +pub tags: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update2 { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +pub tags: __u64, +pub nr: __u32, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_slot { +pub tag: __u64, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_register { +pub nr_slots: __u32, +pub resv: __u32, +pub resv2: __u64, +pub data: __u64, +pub resv3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_probe_op { +pub op: __u8, +pub resv: __u8, +pub flags: __u16, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_probe { +pub last_op: __u8, +pub ops_len: __u8, +pub resv: __u16, +pub resv2: [__u32; 3usize], +pub ops: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_restriction { +pub opcode: __u16, +pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, +pub resv: __u8, +pub resv2: [__u32; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf { +pub addr: __u64, +pub len: __u32, +pub bid: __u16, +pub resv: __u16, +} +#[repr(C)] +pub struct io_uring_buf_ring { +pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +} +#[repr(C)] +pub struct io_uring_buf_ring__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { +pub resv1: __u64, +pub resv2: __u32, +pub resv3: __u16, +pub tail: __u16, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { +pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, +pub bufs: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_reg { +pub ring_addr: __u64, +pub ring_entries: __u32, +pub bgid: __u16, +pub pad: __u16, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_getevents_arg { +pub sigmask: __u64, +pub sigmask_sz: __u32, +pub pad: __u32, +pub ts: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sync_cancel_reg { +pub addr: __u64, +pub fd: __s32, +pub flags: __u32, +pub timeout: __kernel_timespec, +pub pad: [__u64; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_file_index_range { +pub off: __u32, +pub len: __u32, +pub resv: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_recvmsg_out { +pub namelen: __u32, +pub controllen: __u32, +pub payloadlen: __u32, +pub flags: __u32, +} +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 536805376; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const IORING_FILE_INDEX_ALLOC: i32 = -1; +pub const IORING_SETUP_IOPOLL: u32 = 1; +pub const IORING_SETUP_SQPOLL: u32 = 2; +pub const IORING_SETUP_SQ_AFF: u32 = 4; +pub const IORING_SETUP_CQSIZE: u32 = 8; +pub const IORING_SETUP_CLAMP: u32 = 16; +pub const IORING_SETUP_ATTACH_WQ: u32 = 32; +pub const IORING_SETUP_R_DISABLED: u32 = 64; +pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; +pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; +pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; +pub const IORING_SETUP_SQE128: u32 = 1024; +pub const IORING_SETUP_CQE32: u32 = 2048; +pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; +pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; +pub const IORING_URING_CMD_FIXED: u32 = 1; +pub const IORING_FSYNC_DATASYNC: u32 = 1; +pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; +pub const IORING_POLL_ADD_LEVEL: u32 = 8; +pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; +pub const IORING_ASYNC_CANCEL_FD: u32 = 2; +pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; +pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; +pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; +pub const IORING_RECV_MULTISHOT: u32 = 2; +pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; +pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; +pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; +pub const IORING_ACCEPT_MULTISHOT: u32 = 1; +pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; +pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; +pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; +pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; +pub const IORING_CQE_F_NOTIF: u32 = 8; +pub const IORING_OFF_SQ_RING: u32 = 0; +pub const IORING_OFF_CQ_RING: u32 = 134217728; +pub const IORING_OFF_SQES: u32 = 268435456; +pub const IORING_SQ_NEED_WAKEUP: u32 = 1; +pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; +pub const IORING_SQ_TASKRUN: u32 = 4; +pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; +pub const IORING_ENTER_GETEVENTS: u32 = 1; +pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; +pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; +pub const IORING_ENTER_REGISTERED_RING: u32 = 16; +pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; +pub const IORING_FEAT_NODROP: u32 = 2; +pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; +pub const IORING_FEAT_RW_CUR_POS: u32 = 8; +pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; +pub const IORING_FEAT_FAST_POLL: u32 = 32; +pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_FEAT_CQE_SKIP: u32 = 2048; +pub const IORING_FEAT_LINKED_FILE: u32 = 4096; +pub const IORING_FEAT_REG_REG_RING: u32 = 8192; +pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; +pub const IO_URING_OP_SUPPORTED: u32 = 1; +pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_FIXED_FILE_BIT; +pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_DRAIN_BIT; +pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_LINK_BIT; +pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_HARDLINK_BIT; +pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_ASYNC_BIT; +pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_BUFFER_SELECT_BIT; +pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_CQE_SKIP_SUCCESS_BIT; +pub const IORING_MSG_DATA: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_DATA; +pub const IORING_MSG_SEND_FD: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_SEND_FD; +pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = _bindgen_ty_3::IORING_CQE_BUFFER_SHIFT; +pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS; +pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_BUFFERS; +pub const IORING_REGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES; +pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_FILES; +pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD; +pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_EVENTFD; +pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE; +pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD_ASYNC; +pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PROBE; +pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PERSONALITY; +pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PERSONALITY; +pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RESTRICTIONS; +pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_ENABLE_RINGS; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES2; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE2; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS2; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS_UPDATE; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_AFF; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_IOWQ_AFF; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_MAX_WORKERS; +pub const IORING_REGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RING_FDS; +pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_RING_FDS; +pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PBUF_RING; +pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PBUF_RING; +pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_SYNC_CANCEL; +pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILE_ALLOC_RANGE; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_LAST; +pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_USE_REGISTERED_RING; +pub const IO_WQ_BOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_BOUND; +pub const IO_WQ_UNBOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_UNBOUND; +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_REGISTER_OP; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_OP; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_LAST; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IOSQE_FIXED_FILE_BIT = 0, +IOSQE_IO_DRAIN_BIT = 1, +IOSQE_IO_LINK_BIT = 2, +IOSQE_IO_HARDLINK_BIT = 3, +IOSQE_ASYNC_BIT = 4, +IOSQE_BUFFER_SELECT_BIT = 5, +IOSQE_CQE_SKIP_SUCCESS_BIT = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum io_uring_op { +IORING_OP_NOP = 0, +IORING_OP_READV = 1, +IORING_OP_WRITEV = 2, +IORING_OP_FSYNC = 3, +IORING_OP_READ_FIXED = 4, +IORING_OP_WRITE_FIXED = 5, +IORING_OP_POLL_ADD = 6, +IORING_OP_POLL_REMOVE = 7, +IORING_OP_SYNC_FILE_RANGE = 8, +IORING_OP_SENDMSG = 9, +IORING_OP_RECVMSG = 10, +IORING_OP_TIMEOUT = 11, +IORING_OP_TIMEOUT_REMOVE = 12, +IORING_OP_ACCEPT = 13, +IORING_OP_ASYNC_CANCEL = 14, +IORING_OP_LINK_TIMEOUT = 15, +IORING_OP_CONNECT = 16, +IORING_OP_FALLOCATE = 17, +IORING_OP_OPENAT = 18, +IORING_OP_CLOSE = 19, +IORING_OP_FILES_UPDATE = 20, +IORING_OP_STATX = 21, +IORING_OP_READ = 22, +IORING_OP_WRITE = 23, +IORING_OP_FADVISE = 24, +IORING_OP_MADVISE = 25, +IORING_OP_SEND = 26, +IORING_OP_RECV = 27, +IORING_OP_OPENAT2 = 28, +IORING_OP_EPOLL_CTL = 29, +IORING_OP_SPLICE = 30, +IORING_OP_PROVIDE_BUFFERS = 31, +IORING_OP_REMOVE_BUFFERS = 32, +IORING_OP_TEE = 33, +IORING_OP_SHUTDOWN = 34, +IORING_OP_RENAMEAT = 35, +IORING_OP_UNLINKAT = 36, +IORING_OP_MKDIRAT = 37, +IORING_OP_SYMLINKAT = 38, +IORING_OP_LINKAT = 39, +IORING_OP_MSG_RING = 40, +IORING_OP_FSETXATTR = 41, +IORING_OP_SETXATTR = 42, +IORING_OP_FGETXATTR = 43, +IORING_OP_GETXATTR = 44, +IORING_OP_SOCKET = 45, +IORING_OP_URING_CMD = 46, +IORING_OP_SEND_ZC = 47, +IORING_OP_SENDMSG_ZC = 48, +IORING_OP_LAST = 49, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IORING_MSG_DATA = 0, +IORING_MSG_SEND_FD = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IORING_CQE_BUFFER_SHIFT = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IORING_REGISTER_BUFFERS = 0, +IORING_UNREGISTER_BUFFERS = 1, +IORING_REGISTER_FILES = 2, +IORING_UNREGISTER_FILES = 3, +IORING_REGISTER_EVENTFD = 4, +IORING_UNREGISTER_EVENTFD = 5, +IORING_REGISTER_FILES_UPDATE = 6, +IORING_REGISTER_EVENTFD_ASYNC = 7, +IORING_REGISTER_PROBE = 8, +IORING_REGISTER_PERSONALITY = 9, +IORING_UNREGISTER_PERSONALITY = 10, +IORING_REGISTER_RESTRICTIONS = 11, +IORING_REGISTER_ENABLE_RINGS = 12, +IORING_REGISTER_FILES2 = 13, +IORING_REGISTER_FILES_UPDATE2 = 14, +IORING_REGISTER_BUFFERS2 = 15, +IORING_REGISTER_BUFFERS_UPDATE = 16, +IORING_REGISTER_IOWQ_AFF = 17, +IORING_UNREGISTER_IOWQ_AFF = 18, +IORING_REGISTER_IOWQ_MAX_WORKERS = 19, +IORING_REGISTER_RING_FDS = 20, +IORING_UNREGISTER_RING_FDS = 21, +IORING_REGISTER_PBUF_RING = 22, +IORING_UNREGISTER_PBUF_RING = 23, +IORING_REGISTER_SYNC_CANCEL = 24, +IORING_REGISTER_FILE_ALLOC_RANGE = 25, +IORING_REGISTER_LAST = 26, +IORING_REGISTER_USE_REGISTERED_RING = 2147483648, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IO_WQ_BOUND = 0, +IO_WQ_UNBOUND = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IORING_RESTRICTION_REGISTER_OP = 0, +IORING_RESTRICTION_SQE_OP = 1, +IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, +IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, +IORING_RESTRICTION_LAST = 4, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_1 { +pub off: __u64, +pub addr2: __u64, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_2 { +pub addr: __u64, +pub splice_off_in: __u64, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_3 { +pub rw_flags: __kernel_rwf_t, +pub fsync_flags: __u32, +pub poll_events: __u16, +pub poll32_events: __u32, +pub sync_range_flags: __u32, +pub msg_flags: __u32, +pub timeout_flags: __u32, +pub accept_flags: __u32, +pub cancel_flags: __u32, +pub open_flags: __u32, +pub statx_flags: __u32, +pub fadvise_advice: __u32, +pub splice_flags: __u32, +pub rename_flags: __u32, +pub unlink_flags: __u32, +pub hardlink_flags: __u32, +pub xattr_flags: __u32, +pub msg_ring_flags: __u32, +pub uring_cmd_flags: __u32, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_4 { +pub buf_index: __u16, +pub buf_group: __u16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { +pub splice_fd_in: __s32, +pub file_index: __u32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_restriction__bindgen_ty_1 { +pub register_op: __u8, +pub sqe_op: __u8, +pub sqe_flags: __u8, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/netlink.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/netlink.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/netlink.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/netlink.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,366 +1,1502 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_nl { +pub nl_family: __kernel_sa_family_t, +pub nl_pad: crate::ctypes::c_ushort, +pub nl_pid: __u32, +pub nl_groups: __u32, } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsghdr { +pub nlmsg_len: __u32, +pub nlmsg_type: __u16, +pub nlmsg_flags: __u16, +pub nlmsg_seq: __u32, +pub nlmsg_pid: __u32, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsgerr { +pub error: crate::ctypes::c_int, +pub msg: nlmsghdr, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_pktinfo { +pub group: __u32, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_req { +pub nm_block_size: crate::ctypes::c_uint, +pub nm_block_nr: crate::ctypes::c_uint, +pub nm_frame_size: crate::ctypes::c_uint, +pub nm_frame_nr: crate::ctypes::c_uint, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_hdr { +pub nm_status: crate::ctypes::c_uint, +pub nm_len: crate::ctypes::c_uint, +pub nm_group: __u32, +pub nm_pid: __u32, +pub nm_uid: __u32, +pub nm_gid: __u32, } -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const __FD_SETSIZE: u32 = 1024; -pub const _MIPS_ISA_MIPS1: u32 = 1; -pub const _MIPS_ISA_MIPS2: u32 = 2; -pub const _MIPS_ISA_MIPS3: u32 = 3; -pub const _MIPS_ISA_MIPS4: u32 = 4; -pub const _MIPS_ISA_MIPS5: u32 = 5; -pub const _MIPS_ISA_MIPS32: u32 = 6; -pub const _MIPS_ISA_MIPS64: u32 = 7; -pub const _MIPS_SIM_ABI32: u32 = 1; -pub const _MIPS_SIM_NABI32: u32 = 2; -pub const _MIPS_SIM_ABI64: u32 = 3; -pub const NETLINK_ROUTE: u32 = 0; -pub const NETLINK_UNUSED: u32 = 1; -pub const NETLINK_USERSOCK: u32 = 2; -pub const NETLINK_FIREWALL: u32 = 3; -pub const NETLINK_SOCK_DIAG: u32 = 4; -pub const NETLINK_NFLOG: u32 = 5; -pub const NETLINK_XFRM: u32 = 6; -pub const NETLINK_SELINUX: u32 = 7; -pub const NETLINK_ISCSI: u32 = 8; -pub const NETLINK_AUDIT: u32 = 9; -pub const NETLINK_FIB_LOOKUP: u32 = 10; -pub const NETLINK_CONNECTOR: u32 = 11; -pub const NETLINK_NETFILTER: u32 = 12; -pub const NETLINK_IP6_FW: u32 = 13; -pub const NETLINK_DNRTMSG: u32 = 14; -pub const NETLINK_KOBJECT_UEVENT: u32 = 15; -pub const NETLINK_GENERIC: u32 = 16; -pub const NETLINK_SCSITRANSPORT: u32 = 18; -pub const NETLINK_ECRYPTFS: u32 = 19; -pub const NETLINK_RDMA: u32 = 20; -pub const NETLINK_CRYPTO: u32 = 21; -pub const NETLINK_SMC: u32 = 22; -pub const NETLINK_INET_DIAG: u32 = 4; -pub const MAX_LINKS: u32 = 32; -pub const NLM_F_REQUEST: u32 = 1; -pub const NLM_F_MULTI: u32 = 2; -pub const NLM_F_ACK: u32 = 4; -pub const NLM_F_ECHO: u32 = 8; -pub const NLM_F_DUMP_INTR: u32 = 16; -pub const NLM_F_DUMP_FILTERED: u32 = 32; -pub const NLM_F_ROOT: u32 = 256; -pub const NLM_F_MATCH: u32 = 512; -pub const NLM_F_ATOMIC: u32 = 1024; -pub const NLM_F_DUMP: u32 = 768; -pub const NLM_F_REPLACE: u32 = 256; -pub const NLM_F_EXCL: u32 = 512; -pub const NLM_F_CREATE: u32 = 1024; -pub const NLM_F_APPEND: u32 = 2048; -pub const NLM_F_NONREC: u32 = 256; -pub const NLM_F_BULK: u32 = 512; -pub const NLM_F_CAPPED: u32 = 256; -pub const NLM_F_ACK_TLVS: u32 = 512; -pub const NLMSG_ALIGNTO: u32 = 4; -pub const NLMSG_NOOP: u32 = 1; -pub const NLMSG_ERROR: u32 = 2; -pub const NLMSG_DONE: u32 = 3; -pub const NLMSG_OVERRUN: u32 = 4; -pub const NLMSG_MIN_TYPE: u32 = 16; -pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; -pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; -pub const NETLINK_PKTINFO: u32 = 3; -pub const NETLINK_BROADCAST_ERROR: u32 = 4; -pub const NETLINK_NO_ENOBUFS: u32 = 5; -pub const NETLINK_RX_RING: u32 = 6; -pub const NETLINK_TX_RING: u32 = 7; -pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; -pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; -pub const NETLINK_CAP_ACK: u32 = 10; -pub const NETLINK_EXT_ACK: u32 = 11; -pub const NETLINK_GET_STRICT_CHK: u32 = 12; -pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; -pub const NET_MAJOR: u32 = 36; -pub const NLA_F_NESTED: u32 = 32768; -pub const NLA_F_NET_BYTEORDER: u32 = 16384; -pub const NLA_TYPE_MASK: i32 = -49153; -pub const NLA_ALIGNTO: u32 = 4; -pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; -pub const MACVLAN_FLAG_NODST: u32 = 2; -pub const IPVLAN_F_PRIVATE: u32 = 1; -pub const IPVLAN_F_VEPA: u32 = 2; -pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; -pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; -pub const MAX_VLAN_LIST_LEN: u32 = 1; -pub const PORT_PROFILE_MAX: u32 = 40; -pub const PORT_UUID_MAX: u32 = 16; -pub const PORT_SELF_VF: i32 = -1; -pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; -pub const XDP_FLAGS_SKB_MODE: u32 = 2; -pub const XDP_FLAGS_DRV_MODE: u32 = 4; -pub const XDP_FLAGS_HW_MODE: u32 = 8; -pub const XDP_FLAGS_REPLACE: u32 = 16; -pub const XDP_FLAGS_MODES: u32 = 14; -pub const XDP_FLAGS_MASK: u32 = 31; -pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; -pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; -pub const IFA_F_SECONDARY: u32 = 1; -pub const IFA_F_TEMPORARY: u32 = 1; -pub const IFA_F_NODAD: u32 = 2; -pub const IFA_F_OPTIMISTIC: u32 = 4; -pub const IFA_F_DADFAILED: u32 = 8; -pub const IFA_F_HOMEADDRESS: u32 = 16; -pub const IFA_F_DEPRECATED: u32 = 32; -pub const IFA_F_TENTATIVE: u32 = 64; -pub const IFA_F_PERMANENT: u32 = 128; -pub const IFA_F_MANAGETEMPADDR: u32 = 256; -pub const IFA_F_NOPREFIXROUTE: u32 = 512; -pub const IFA_F_MCAUTOJOIN: u32 = 1024; -pub const IFA_F_STABLE_PRIVACY: u32 = 2048; -pub const IFAPROT_UNSPEC: u32 = 0; -pub const IFAPROT_KERNEL_LO: u32 = 1; -pub const IFAPROT_KERNEL_RA: u32 = 2; -pub const IFAPROT_KERNEL_LL: u32 = 3; -pub const NTF_USE: u32 = 1; -pub const NTF_SELF: u32 = 2; -pub const NTF_MASTER: u32 = 4; -pub const NTF_PROXY: u32 = 8; -pub const NTF_EXT_LEARNED: u32 = 16; -pub const NTF_OFFLOADED: u32 = 32; -pub const NTF_STICKY: u32 = 64; -pub const NTF_ROUTER: u32 = 128; -pub const NTF_EXT_MANAGED: u32 = 1; -pub const NTF_EXT_LOCKED: u32 = 2; -pub const NUD_INCOMPLETE: u32 = 1; -pub const NUD_REACHABLE: u32 = 2; -pub const NUD_STALE: u32 = 4; -pub const NUD_DELAY: u32 = 8; -pub const NUD_PROBE: u32 = 16; -pub const NUD_FAILED: u32 = 32; -pub const NUD_NOARP: u32 = 64; -pub const NUD_PERMANENT: u32 = 128; -pub const NUD_NONE: u32 = 0; -pub const RTNL_FAMILY_IPMR: u32 = 128; -pub const RTNL_FAMILY_IP6MR: u32 = 129; -pub const RTNL_FAMILY_MAX: u32 = 129; -pub const RTA_ALIGNTO: u32 = 4; -pub const RTPROT_UNSPEC: u32 = 0; -pub const RTPROT_REDIRECT: u32 = 1; -pub const RTPROT_KERNEL: u32 = 2; -pub const RTPROT_BOOT: u32 = 3; -pub const RTPROT_STATIC: u32 = 4; -pub const RTPROT_GATED: u32 = 8; -pub const RTPROT_RA: u32 = 9; -pub const RTPROT_MRT: u32 = 10; -pub const RTPROT_ZEBRA: u32 = 11; -pub const RTPROT_BIRD: u32 = 12; -pub const RTPROT_DNROUTED: u32 = 13; -pub const RTPROT_XORP: u32 = 14; -pub const RTPROT_NTK: u32 = 15; -pub const RTPROT_DHCP: u32 = 16; -pub const RTPROT_MROUTED: u32 = 17; -pub const RTPROT_KEEPALIVED: u32 = 18; -pub const RTPROT_BABEL: u32 = 42; -pub const RTPROT_OPENR: u32 = 99; -pub const RTPROT_BGP: u32 = 186; -pub const RTPROT_ISIS: u32 = 187; -pub const RTPROT_OSPF: u32 = 188; -pub const RTPROT_RIP: u32 = 189; -pub const RTPROT_EIGRP: u32 = 192; -pub const RTM_F_NOTIFY: u32 = 256; -pub const RTM_F_CLONED: u32 = 512; -pub const RTM_F_EQUALIZE: u32 = 1024; -pub const RTM_F_PREFIX: u32 = 2048; -pub const RTM_F_LOOKUP_TABLE: u32 = 4096; -pub const RTM_F_FIB_MATCH: u32 = 8192; -pub const RTM_F_OFFLOAD: u32 = 16384; -pub const RTM_F_TRAP: u32 = 32768; -pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; -pub const RTNH_F_DEAD: u32 = 1; -pub const RTNH_F_PERVASIVE: u32 = 2; -pub const RTNH_F_ONLINK: u32 = 4; -pub const RTNH_F_OFFLOAD: u32 = 8; -pub const RTNH_F_LINKDOWN: u32 = 16; -pub const RTNH_F_UNRESOLVED: u32 = 32; -pub const RTNH_F_TRAP: u32 = 64; -pub const RTNH_COMPARE_MASK: u32 = 89; -pub const RTNH_ALIGNTO: u32 = 4; -pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; -pub const RTAX_FEATURE_ECN: u32 = 1; -pub const RTAX_FEATURE_SACK: u32 = 2; -pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; -pub const RTAX_FEATURE_ALLFRAG: u32 = 8; -pub const RTAX_FEATURE_MASK: u32 = 15; -pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; -pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; -pub const RTMGRP_LINK: u32 = 1; -pub const RTMGRP_NOTIFY: u32 = 2; -pub const RTMGRP_NEIGH: u32 = 4; -pub const RTMGRP_TC: u32 = 8; -pub const RTMGRP_IPV4_IFADDR: u32 = 16; -pub const RTMGRP_IPV4_MROUTE: u32 = 32; -pub const RTMGRP_IPV4_ROUTE: u32 = 64; -pub const RTMGRP_IPV4_RULE: u32 = 128; -pub const RTMGRP_IPV6_IFADDR: u32 = 256; -pub const RTMGRP_IPV6_MROUTE: u32 = 512; -pub const RTMGRP_IPV6_ROUTE: u32 = 1024; -pub const RTMGRP_IPV6_IFINFO: u32 = 2048; -pub const RTMGRP_DECnet_IFADDR: u32 = 4096; -pub const RTMGRP_DECnet_ROUTE: u32 = 16384; -pub const RTMGRP_IPV6_PREFIX: u32 = 131072; -pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; -pub const RTEXT_FILTER_VF: u32 = 1; -pub const RTEXT_FILTER_BRVLAN: u32 = 2; -pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; -pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; -pub const RTEXT_FILTER_MRP: u32 = 16; -pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; -pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; -pub const RTEXT_FILTER_MST: u32 = 128; -pub type size_t = crate::ctypes::c_ulong; -pub type ssize_t = crate::ctypes::c_long; -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; #[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct nlattr { +pub nla_len: __u16, +pub nla_type: __u16, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, +#[derive(Debug, Copy, Clone)] +pub struct nla_bitfield32 { +pub value: __u32, +pub selector: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], +pub struct rtnl_link_stats { +pub rx_packets: __u32, +pub tx_packets: __u32, +pub rx_bytes: __u32, +pub tx_bytes: __u32, +pub rx_errors: __u32, +pub tx_errors: __u32, +pub rx_dropped: __u32, +pub tx_dropped: __u32, +pub multicast: __u32, +pub collisions: __u32, +pub rx_length_errors: __u32, +pub rx_over_errors: __u32, +pub rx_crc_errors: __u32, +pub rx_frame_errors: __u32, +pub rx_fifo_errors: __u32, +pub rx_missed_errors: __u32, +pub tx_aborted_errors: __u32, +pub tx_carrier_errors: __u32, +pub tx_fifo_errors: __u32, +pub tx_heartbeat_errors: __u32, +pub tx_window_errors: __u32, +pub rx_compressed: __u32, +pub tx_compressed: __u32, +pub rx_nohandler: __u32, } -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_long; -pub type __u64 = crate::ctypes::c_ulong; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 16usize], +pub struct rtnl_link_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +pub collisions: __u64, +pub rx_length_errors: __u64, +pub rx_over_errors: __u64, +pub rx_crc_errors: __u64, +pub rx_frame_errors: __u64, +pub rx_fifo_errors: __u64, +pub rx_missed_errors: __u64, +pub tx_aborted_errors: __u64, +pub tx_carrier_errors: __u64, +pub tx_fifo_errors: __u64, +pub tx_heartbeat_errors: __u64, +pub tx_window_errors: __u64, +pub rx_compressed: __u64, +pub tx_compressed: __u64, +pub rx_nohandler: __u64, +pub rx_otherhost_dropped: __u64, } -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_daddr_t = crate::ctypes::c_long; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_old_dev_t = crate::ctypes::c_uint; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], +pub struct rtnl_hw_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, } -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_nl { -pub nl_family: __kernel_sa_family_t, -pub nl_pad: crate::ctypes::c_ushort, -pub nl_pid: __u32, -pub nl_groups: __u32, +pub struct rtnl_link_ifmap { +pub mem_start: __u64, +pub mem_end: __u64, +pub base_addr: __u64, +pub irq: __u16, +pub dma: __u8, +pub port: __u8, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsghdr { -pub nlmsg_len: __u32, -pub nlmsg_type: __u16, -pub nlmsg_flags: __u16, -pub nlmsg_seq: __u32, -pub nlmsg_pid: __u32, +pub struct ifla_bridge_id { +pub prio: [__u8; 2usize], +pub addr: [__u8; 6usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsgerr { -pub error: crate::ctypes::c_int, -pub msg: nlmsghdr, +pub struct ifla_cacheinfo { +pub max_reasm_len: __u32, +pub tstamp: __u32, +pub reachable_time: __u32, +pub retrans_time: __u32, } -impl nlmsgerr_attrs { -pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_qos_mapping { +pub from: __u32, +pub to: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tunnel_msg { +pub family: __u8, +pub flags: __u8, +pub reserved2: __u16, +pub ifindex: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vxlan_port_range { +pub low: __be16, +pub high: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_mac { +pub vf: __u32, +pub mac: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_broadcast { +pub broadcast: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan_info { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +pub vlan_proto: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_tx_rate { +pub vf: __u32, +pub rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rate { +pub vf: __u32, +pub min_tx_rate: __u32, +pub max_tx_rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_spoofchk { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_guid { +pub vf: __u32, +pub guid: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_link_state { +pub vf: __u32, +pub link_state: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rss_query_en { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_trust { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_port_vsi { +pub vsi_mgr_id: __u8, +pub vsi_type_id: [__u8; 3usize], +pub vsi_type_version: __u8, +pub pad: [__u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct if_stats_msg { +pub family: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub ifindex: __u32, +pub filter_mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_rmnet_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifaddrmsg { +pub ifa_family: __u8, +pub ifa_prefixlen: __u8, +pub ifa_flags: __u8, +pub ifa_scope: __u8, +pub ifa_index: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifa_cacheinfo { +pub ifa_prefered: __u32, +pub ifa_valid: __u32, +pub cstamp: __u32, +pub tstamp: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndmsg { +pub ndm_family: __u8, +pub ndm_pad1: __u8, +pub ndm_pad2: __u16, +pub ndm_ifindex: __s32, +pub ndm_state: __u16, +pub ndm_flags: __u8, +pub ndm_type: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nda_cacheinfo { +pub ndm_confirmed: __u32, +pub ndm_used: __u32, +pub ndm_updated: __u32, +pub ndm_refcnt: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_stats { +pub ndts_allocs: __u64, +pub ndts_destroys: __u64, +pub ndts_hash_grows: __u64, +pub ndts_res_failed: __u64, +pub ndts_lookups: __u64, +pub ndts_hits: __u64, +pub ndts_rcv_probes_mcast: __u64, +pub ndts_rcv_probes_ucast: __u64, +pub ndts_periodic_gc_runs: __u64, +pub ndts_forced_gc_runs: __u64, +pub ndts_table_fulls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndtmsg { +pub ndtm_family: __u8, +pub ndtm_pad1: __u8, +pub ndtm_pad2: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_config { +pub ndtc_key_len: __u16, +pub ndtc_entry_size: __u16, +pub ndtc_entries: __u32, +pub ndtc_last_flush: __u32, +pub ndtc_last_rand: __u32, +pub ndtc_hash_rnd: __u32, +pub ndtc_hash_mask: __u32, +pub ndtc_hash_chain_gc: __u32, +pub ndtc_proxy_qlen: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtattr { +pub rta_len: crate::ctypes::c_ushort, +pub rta_type: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtmsg { +pub rtm_family: crate::ctypes::c_uchar, +pub rtm_dst_len: crate::ctypes::c_uchar, +pub rtm_src_len: crate::ctypes::c_uchar, +pub rtm_tos: crate::ctypes::c_uchar, +pub rtm_table: crate::ctypes::c_uchar, +pub rtm_protocol: crate::ctypes::c_uchar, +pub rtm_scope: crate::ctypes::c_uchar, +pub rtm_type: crate::ctypes::c_uchar, +pub rtm_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnexthop { +pub rtnh_len: crate::ctypes::c_ushort, +pub rtnh_flags: crate::ctypes::c_uchar, +pub rtnh_hops: crate::ctypes::c_uchar, +pub rtnh_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug)] +pub struct rtvia { +pub rtvia_family: __kernel_sa_family_t, +pub rtvia_addr: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_cacheinfo { +pub rta_clntref: __u32, +pub rta_lastuse: __u32, +pub rta_expires: __s32, +pub rta_error: __u32, +pub rta_used: __u32, +pub rta_id: __u32, +pub rta_ts: __u32, +pub rta_tsage: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rta_session { +pub proto: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub u: rta_session__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { +pub sport: __u16, +pub dport: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { +pub type_: __u8, +pub code: __u8, +pub ident: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_mfc_stats { +pub mfcs_packets: __u64, +pub mfcs_bytes: __u64, +pub mfcs_wrong_if: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtgenmsg { +pub rtgen_family: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifinfomsg { +pub ifi_family: crate::ctypes::c_uchar, +pub __ifi_pad: crate::ctypes::c_uchar, +pub ifi_type: crate::ctypes::c_ushort, +pub ifi_index: crate::ctypes::c_int, +pub ifi_flags: crate::ctypes::c_uint, +pub ifi_change: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefixmsg { +pub prefix_family: crate::ctypes::c_uchar, +pub prefix_pad1: crate::ctypes::c_uchar, +pub prefix_pad2: crate::ctypes::c_ushort, +pub prefix_ifindex: crate::ctypes::c_int, +pub prefix_type: crate::ctypes::c_uchar, +pub prefix_len: crate::ctypes::c_uchar, +pub prefix_flags: crate::ctypes::c_uchar, +pub prefix_pad3: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefix_cacheinfo { +pub preferred_time: __u32, +pub valid_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcmsg { +pub tcm_family: crate::ctypes::c_uchar, +pub tcm__pad1: crate::ctypes::c_uchar, +pub tcm__pad2: crate::ctypes::c_ushort, +pub tcm_ifindex: crate::ctypes::c_int, +pub tcm_handle: __u32, +pub tcm_parent: __u32, +pub tcm_info: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nduseroptmsg { +pub nduseropt_family: crate::ctypes::c_uchar, +pub nduseropt_pad1: crate::ctypes::c_uchar, +pub nduseropt_opts_len: crate::ctypes::c_ushort, +pub nduseropt_ifindex: crate::ctypes::c_int, +pub nduseropt_icmp_type: __u8, +pub nduseropt_icmp_code: __u8, +pub nduseropt_pad2: crate::ctypes::c_ushort, +pub nduseropt_pad3: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcamsg { +pub tca_family: crate::ctypes::c_uchar, +pub tca__pad1: crate::ctypes::c_uchar, +pub tca__pad2: crate::ctypes::c_ushort, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const NETLINK_ROUTE: u32 = 0; +pub const NETLINK_UNUSED: u32 = 1; +pub const NETLINK_USERSOCK: u32 = 2; +pub const NETLINK_FIREWALL: u32 = 3; +pub const NETLINK_SOCK_DIAG: u32 = 4; +pub const NETLINK_NFLOG: u32 = 5; +pub const NETLINK_XFRM: u32 = 6; +pub const NETLINK_SELINUX: u32 = 7; +pub const NETLINK_ISCSI: u32 = 8; +pub const NETLINK_AUDIT: u32 = 9; +pub const NETLINK_FIB_LOOKUP: u32 = 10; +pub const NETLINK_CONNECTOR: u32 = 11; +pub const NETLINK_NETFILTER: u32 = 12; +pub const NETLINK_IP6_FW: u32 = 13; +pub const NETLINK_DNRTMSG: u32 = 14; +pub const NETLINK_KOBJECT_UEVENT: u32 = 15; +pub const NETLINK_GENERIC: u32 = 16; +pub const NETLINK_SCSITRANSPORT: u32 = 18; +pub const NETLINK_ECRYPTFS: u32 = 19; +pub const NETLINK_RDMA: u32 = 20; +pub const NETLINK_CRYPTO: u32 = 21; +pub const NETLINK_SMC: u32 = 22; +pub const NETLINK_INET_DIAG: u32 = 4; +pub const MAX_LINKS: u32 = 32; +pub const NLM_F_REQUEST: u32 = 1; +pub const NLM_F_MULTI: u32 = 2; +pub const NLM_F_ACK: u32 = 4; +pub const NLM_F_ECHO: u32 = 8; +pub const NLM_F_DUMP_INTR: u32 = 16; +pub const NLM_F_DUMP_FILTERED: u32 = 32; +pub const NLM_F_ROOT: u32 = 256; +pub const NLM_F_MATCH: u32 = 512; +pub const NLM_F_ATOMIC: u32 = 1024; +pub const NLM_F_DUMP: u32 = 768; +pub const NLM_F_REPLACE: u32 = 256; +pub const NLM_F_EXCL: u32 = 512; +pub const NLM_F_CREATE: u32 = 1024; +pub const NLM_F_APPEND: u32 = 2048; +pub const NLM_F_NONREC: u32 = 256; +pub const NLM_F_BULK: u32 = 512; +pub const NLM_F_CAPPED: u32 = 256; +pub const NLM_F_ACK_TLVS: u32 = 512; +pub const NLMSG_ALIGNTO: u32 = 4; +pub const NLMSG_NOOP: u32 = 1; +pub const NLMSG_ERROR: u32 = 2; +pub const NLMSG_DONE: u32 = 3; +pub const NLMSG_OVERRUN: u32 = 4; +pub const NLMSG_MIN_TYPE: u32 = 16; +pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; +pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; +pub const NETLINK_PKTINFO: u32 = 3; +pub const NETLINK_BROADCAST_ERROR: u32 = 4; +pub const NETLINK_NO_ENOBUFS: u32 = 5; +pub const NETLINK_RX_RING: u32 = 6; +pub const NETLINK_TX_RING: u32 = 7; +pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; +pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; +pub const NETLINK_CAP_ACK: u32 = 10; +pub const NETLINK_EXT_ACK: u32 = 11; +pub const NETLINK_GET_STRICT_CHK: u32 = 12; +pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; +pub const NET_MAJOR: u32 = 36; +pub const NLA_F_NESTED: u32 = 32768; +pub const NLA_F_NET_BYTEORDER: u32 = 16384; +pub const NLA_TYPE_MASK: i32 = -49153; +pub const NLA_ALIGNTO: u32 = 4; +pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; +pub const MACVLAN_FLAG_NODST: u32 = 2; +pub const IPVLAN_F_PRIVATE: u32 = 1; +pub const IPVLAN_F_VEPA: u32 = 2; +pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; +pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; +pub const MAX_VLAN_LIST_LEN: u32 = 1; +pub const PORT_PROFILE_MAX: u32 = 40; +pub const PORT_UUID_MAX: u32 = 16; +pub const PORT_SELF_VF: i32 = -1; +pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; +pub const XDP_FLAGS_SKB_MODE: u32 = 2; +pub const XDP_FLAGS_DRV_MODE: u32 = 4; +pub const XDP_FLAGS_HW_MODE: u32 = 8; +pub const XDP_FLAGS_REPLACE: u32 = 16; +pub const XDP_FLAGS_MODES: u32 = 14; +pub const XDP_FLAGS_MASK: u32 = 31; +pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; +pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; +pub const IFA_F_SECONDARY: u32 = 1; +pub const IFA_F_TEMPORARY: u32 = 1; +pub const IFA_F_NODAD: u32 = 2; +pub const IFA_F_OPTIMISTIC: u32 = 4; +pub const IFA_F_DADFAILED: u32 = 8; +pub const IFA_F_HOMEADDRESS: u32 = 16; +pub const IFA_F_DEPRECATED: u32 = 32; +pub const IFA_F_TENTATIVE: u32 = 64; +pub const IFA_F_PERMANENT: u32 = 128; +pub const IFA_F_MANAGETEMPADDR: u32 = 256; +pub const IFA_F_NOPREFIXROUTE: u32 = 512; +pub const IFA_F_MCAUTOJOIN: u32 = 1024; +pub const IFA_F_STABLE_PRIVACY: u32 = 2048; +pub const IFAPROT_UNSPEC: u32 = 0; +pub const IFAPROT_KERNEL_LO: u32 = 1; +pub const IFAPROT_KERNEL_RA: u32 = 2; +pub const IFAPROT_KERNEL_LL: u32 = 3; +pub const NTF_USE: u32 = 1; +pub const NTF_SELF: u32 = 2; +pub const NTF_MASTER: u32 = 4; +pub const NTF_PROXY: u32 = 8; +pub const NTF_EXT_LEARNED: u32 = 16; +pub const NTF_OFFLOADED: u32 = 32; +pub const NTF_STICKY: u32 = 64; +pub const NTF_ROUTER: u32 = 128; +pub const NTF_EXT_MANAGED: u32 = 1; +pub const NTF_EXT_LOCKED: u32 = 2; +pub const NUD_INCOMPLETE: u32 = 1; +pub const NUD_REACHABLE: u32 = 2; +pub const NUD_STALE: u32 = 4; +pub const NUD_DELAY: u32 = 8; +pub const NUD_PROBE: u32 = 16; +pub const NUD_FAILED: u32 = 32; +pub const NUD_NOARP: u32 = 64; +pub const NUD_PERMANENT: u32 = 128; +pub const NUD_NONE: u32 = 0; +pub const RTNL_FAMILY_IPMR: u32 = 128; +pub const RTNL_FAMILY_IP6MR: u32 = 129; +pub const RTNL_FAMILY_MAX: u32 = 129; +pub const RTA_ALIGNTO: u32 = 4; +pub const RTPROT_UNSPEC: u32 = 0; +pub const RTPROT_REDIRECT: u32 = 1; +pub const RTPROT_KERNEL: u32 = 2; +pub const RTPROT_BOOT: u32 = 3; +pub const RTPROT_STATIC: u32 = 4; +pub const RTPROT_GATED: u32 = 8; +pub const RTPROT_RA: u32 = 9; +pub const RTPROT_MRT: u32 = 10; +pub const RTPROT_ZEBRA: u32 = 11; +pub const RTPROT_BIRD: u32 = 12; +pub const RTPROT_DNROUTED: u32 = 13; +pub const RTPROT_XORP: u32 = 14; +pub const RTPROT_NTK: u32 = 15; +pub const RTPROT_DHCP: u32 = 16; +pub const RTPROT_MROUTED: u32 = 17; +pub const RTPROT_KEEPALIVED: u32 = 18; +pub const RTPROT_BABEL: u32 = 42; +pub const RTPROT_OPENR: u32 = 99; +pub const RTPROT_BGP: u32 = 186; +pub const RTPROT_ISIS: u32 = 187; +pub const RTPROT_OSPF: u32 = 188; +pub const RTPROT_RIP: u32 = 189; +pub const RTPROT_EIGRP: u32 = 192; +pub const RTM_F_NOTIFY: u32 = 256; +pub const RTM_F_CLONED: u32 = 512; +pub const RTM_F_EQUALIZE: u32 = 1024; +pub const RTM_F_PREFIX: u32 = 2048; +pub const RTM_F_LOOKUP_TABLE: u32 = 4096; +pub const RTM_F_FIB_MATCH: u32 = 8192; +pub const RTM_F_OFFLOAD: u32 = 16384; +pub const RTM_F_TRAP: u32 = 32768; +pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; +pub const RTNH_F_DEAD: u32 = 1; +pub const RTNH_F_PERVASIVE: u32 = 2; +pub const RTNH_F_ONLINK: u32 = 4; +pub const RTNH_F_OFFLOAD: u32 = 8; +pub const RTNH_F_LINKDOWN: u32 = 16; +pub const RTNH_F_UNRESOLVED: u32 = 32; +pub const RTNH_F_TRAP: u32 = 64; +pub const RTNH_COMPARE_MASK: u32 = 89; +pub const RTNH_ALIGNTO: u32 = 4; +pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; +pub const RTAX_FEATURE_ECN: u32 = 1; +pub const RTAX_FEATURE_SACK: u32 = 2; +pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; +pub const RTAX_FEATURE_ALLFRAG: u32 = 8; +pub const RTAX_FEATURE_MASK: u32 = 15; +pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; +pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; +pub const RTMGRP_LINK: u32 = 1; +pub const RTMGRP_NOTIFY: u32 = 2; +pub const RTMGRP_NEIGH: u32 = 4; +pub const RTMGRP_TC: u32 = 8; +pub const RTMGRP_IPV4_IFADDR: u32 = 16; +pub const RTMGRP_IPV4_MROUTE: u32 = 32; +pub const RTMGRP_IPV4_ROUTE: u32 = 64; +pub const RTMGRP_IPV4_RULE: u32 = 128; +pub const RTMGRP_IPV6_IFADDR: u32 = 256; +pub const RTMGRP_IPV6_MROUTE: u32 = 512; +pub const RTMGRP_IPV6_ROUTE: u32 = 1024; +pub const RTMGRP_IPV6_IFINFO: u32 = 2048; +pub const RTMGRP_DECnet_IFADDR: u32 = 4096; +pub const RTMGRP_DECnet_ROUTE: u32 = 16384; +pub const RTMGRP_IPV6_PREFIX: u32 = 131072; +pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; +pub const RTEXT_FILTER_VF: u32 = 1; +pub const RTEXT_FILTER_BRVLAN: u32 = 2; +pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; +pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; +pub const RTEXT_FILTER_MRP: u32 = 16; +pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; +pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; +pub const RTEXT_FILTER_MST: u32 = 128; +pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; +pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; +pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; +pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; +pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; +pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; +pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; +pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; +pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; +pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; +pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; +pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; +pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; +pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; +pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; +pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; +pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; +pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; +pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; +pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; +pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; +pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; +pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; +pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; +pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; +pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; +pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; +pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; +pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; +pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; +pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; +pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; +pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; +pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; +pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; +pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; +pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; +pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; +pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; +pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; +pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; +pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; +pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; +pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; +pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; +pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; +pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; +pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; +pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; +pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; +pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; +pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; +pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; +pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; +pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; +pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; +pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; +pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; +pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; +pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; +pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; +pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; +pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; +pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; +pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; +pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; +pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; +pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; +pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; +pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; +pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; +pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; +pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; +pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; +pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; +pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; +pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; +pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; +pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; +pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; +pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; +pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; +pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; +pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; +pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; +pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; +pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; +pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; +pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; +pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; +pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; +pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; +pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; +pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; +pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; +pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; +pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; +pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; +pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; +pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; +pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; +pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; +pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; +pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; +pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; +pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; +pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; +pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; +pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; +pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; +pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; +pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; +pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; +pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; +pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; +pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; +pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; +pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; +pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; +pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; +pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; +pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; +pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; +pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; +pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; +pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; +pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; +pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; +pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; +pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; +pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; +pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; +pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; +pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; +pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; +pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; +pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; +pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; +pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; +pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; +pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; +pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; +pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; +pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; +pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; +pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; +pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; +pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; +pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; +pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; +pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; +pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; +pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; +pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; +pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; +pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; +pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; +pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; +pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; +pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; +pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; +pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; +pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; +pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; +pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; +pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; +pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; +pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; +pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; +pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; +pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; +pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; +pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; +pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; +pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; +pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; +pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; +pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; +pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; +pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; +pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; +pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; +pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; +pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; +pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; +pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; +pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; +pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; +pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; +pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; +pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; +pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; +pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; +pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; +pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; +pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; +pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; +pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; +pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; +pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; +pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; +pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; +pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; +pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; +pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; +pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; +pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; +pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; +pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; +pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; +pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; +pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; +pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; +pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; +pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; +pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; +pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; +pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; +pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; +pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; +pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; +pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; +pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; +pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; +pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; +pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; +pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; +pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; +pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; +pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; +pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; +pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; +pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; +pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; +pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; +pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; +pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; +pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; +pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; +pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; +pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; +pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; +pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; +pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; +pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; +pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; +pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; +pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; +pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; +pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; +pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; +pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; +pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; +pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; +pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; +pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; +pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; +pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; +pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; +pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; +pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; +pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; +pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; +pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; +pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; +pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; +pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; +pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; +pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; +pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; +pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; +pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; +pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; +pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; +pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; +pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; +pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; +pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; +pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; +pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; +pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; +pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; +pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; +pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; +pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; +pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; +pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; +pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; +pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; +pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; +pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; +pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; +pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; +pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; +pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; +pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; +pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; +pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; +pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; +pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; +pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; +pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; +pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; +pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; +pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; +pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; +pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; +pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; +pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; +pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; +pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; +pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; +pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; +pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; +pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; +pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; +pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; +pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; +pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; +pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; +pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; +pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; +pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; +pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; +pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; +pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; +pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; +pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; +pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; +pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; +pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; +pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; +pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; +pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; +pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; +pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; +pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; +pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; +pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; +pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; +pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; +pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; +pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; +pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; +pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; +pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; +pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; +pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; +pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; +pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; +pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; +pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; +pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; +pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; +pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; +pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; +pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; +pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; +pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; +pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; +pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; +pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; +pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; +pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; +pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; +pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; +pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; +pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; +pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; +pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; +pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; +pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; +pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; +pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; +pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; +pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; +pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; +pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; +pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; +pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; +pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; +pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; +pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; +pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; +pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; +pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; +pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; +pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; +pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; +pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; +pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; +pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; +pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; +pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; +pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; +pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; +pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; +pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; +pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; +pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; +pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; +pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; +pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; +pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; +pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; +pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; +pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; +pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; +pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; +pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; +pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; +pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; +pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; +pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; +pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; +pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; +pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; +pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; +pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; +pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; +pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; +pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; +pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; +pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; +pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; +pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; +pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; +pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; +pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; +pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; +pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; +pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; +pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; +pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; +pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; +pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; +pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; +pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; +pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; +pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; +pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; +pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; +pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; +pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; +pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; +pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; +pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; +pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; +pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; +pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; +pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; +pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; +pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; +pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; +pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; +pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; +pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; +pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; +pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; +pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; +pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; +pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; +pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; +pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; +pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; +pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; +pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; +pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; +pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; +pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; +pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; +pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; +pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; +pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; +pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; +pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; +pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; +pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; +pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; +pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; +pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; +pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; +pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; +pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; +pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; +pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; +pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; +pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; +pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; +pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; +pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; +pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; +pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; +pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; +pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; +pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; +pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; +pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; +pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; +pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; +pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; +pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; +pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; +pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; +pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; +pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; +pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; +pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; +pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; +pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; +pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; +pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; +pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; +pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; +pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; +pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; +pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; +pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; +pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; +pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; +pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; +pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; +pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; +pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; +pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; +pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; +pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; +pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; +pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; +pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; +pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; +pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; +pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; +pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; +pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; +pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; +pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; +pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; +pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; +pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; +pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; +pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; +pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; +pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; +pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; +pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; +pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; +pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; +pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; +pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; +pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; +pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; +pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; +pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; +pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; +pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; +pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; +pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; +pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; +pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; +pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; +pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; +pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; +pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; +pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; +pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; +pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; +pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; +pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; +pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; +pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; +pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; +pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; +pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; +pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; +pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; +pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; +pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; +pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; +pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; +pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; +pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; +pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; +pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; +pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; +pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; +pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; +pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; +pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; +pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; +pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; +pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; +pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; +pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; +pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; +pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; +pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; +pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; +pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; +pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; +pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; +pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; +pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; +pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; +pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; +pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; +pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; +pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; +pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; +pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; +pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; +pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; +pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; +pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; +pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; +pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; +pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; +pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; +pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; +pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; +pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; +pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; +pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; +pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; +pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; +pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; +pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; +pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; +pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; +pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; +pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; +pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; +pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; +pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; +pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; +pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; +pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; +pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; +pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; +pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; +pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; +pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; +pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; +pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; +pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; +pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; +pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; +pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; +pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; +pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; +pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; +pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; +pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; +pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; +pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; +pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; +pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; +pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; +pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; +pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; +pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; +pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; +pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; +pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; +pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; +pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; +pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; +pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; +pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; +pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; +pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; +pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; +pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; +pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; +pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; +pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; +pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; +pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; +pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; +pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; +pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; +pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; +pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; +pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; +pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; +pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; +pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; +pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; +pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; +pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; +pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; +pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; +pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; +pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; +pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; +pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; +pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; +pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; +pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; +pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; +pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; +pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; +pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; +pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -374,29 +1510,6 @@ NLMSGERR_ATTR_MISS_NEST = 6, __NLMSGERR_ATTR_MAX = 7, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_pktinfo { -pub group: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_req { -pub nm_block_size: crate::ctypes::c_uint, -pub nm_block_nr: crate::ctypes::c_uint, -pub nm_frame_size: crate::ctypes::c_uint, -pub nm_frame_nr: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_hdr { -pub nm_status: crate::ctypes::c_uint, -pub nm_len: crate::ctypes::c_uint, -pub nm_group: __u32, -pub nm_pid: __u32, -pub nm_uid: __u32, -pub nm_gid: __u32, -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -407,8 +1520,6 @@ NL_MMAP_STATUS_COPY = 3, NL_MMAP_STATUS_SKIP = 4, } -pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; -pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -416,208 +1527,46 @@ NETLINK_UNCONNECTED = 0, NETLINK_CONNECTED = 1, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nlattr { -pub nla_len: __u16, -pub nla_type: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nla_bitfield32 { -pub value: __u32, -pub selector: __u32, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_attribute_type { -NL_ATTR_TYPE_INVALID = 0, -NL_ATTR_TYPE_FLAG = 1, -NL_ATTR_TYPE_U8 = 2, -NL_ATTR_TYPE_U16 = 3, -NL_ATTR_TYPE_U32 = 4, -NL_ATTR_TYPE_U64 = 5, -NL_ATTR_TYPE_S8 = 6, -NL_ATTR_TYPE_S16 = 7, -NL_ATTR_TYPE_S32 = 8, -NL_ATTR_TYPE_S64 = 9, -NL_ATTR_TYPE_BINARY = 10, -NL_ATTR_TYPE_STRING = 11, -NL_ATTR_TYPE_NUL_STRING = 12, -NL_ATTR_TYPE_NESTED = 13, -NL_ATTR_TYPE_NESTED_ARRAY = 14, -NL_ATTR_TYPE_BITFIELD32 = 15, -} -impl netlink_policy_type_attr { -pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_policy_type_attr { -NL_POLICY_TYPE_ATTR_UNSPEC = 0, -NL_POLICY_TYPE_ATTR_TYPE = 1, -NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, -NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, -NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, -NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, -NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, -NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, -NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, -NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, -NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, -NL_POLICY_TYPE_ATTR_PAD = 11, -NL_POLICY_TYPE_ATTR_MASK = 12, -__NL_POLICY_TYPE_ATTR_MAX = 13, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats { -pub rx_packets: __u32, -pub tx_packets: __u32, -pub rx_bytes: __u32, -pub tx_bytes: __u32, -pub rx_errors: __u32, -pub tx_errors: __u32, -pub rx_dropped: __u32, -pub tx_dropped: __u32, -pub multicast: __u32, -pub collisions: __u32, -pub rx_length_errors: __u32, -pub rx_over_errors: __u32, -pub rx_crc_errors: __u32, -pub rx_frame_errors: __u32, -pub rx_fifo_errors: __u32, -pub rx_missed_errors: __u32, -pub tx_aborted_errors: __u32, -pub tx_carrier_errors: __u32, -pub tx_fifo_errors: __u32, -pub tx_heartbeat_errors: __u32, -pub tx_window_errors: __u32, -pub rx_compressed: __u32, -pub tx_compressed: __u32, -pub rx_nohandler: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, -pub collisions: __u64, -pub rx_length_errors: __u64, -pub rx_over_errors: __u64, -pub rx_crc_errors: __u64, -pub rx_frame_errors: __u64, -pub rx_fifo_errors: __u64, -pub rx_missed_errors: __u64, -pub tx_aborted_errors: __u64, -pub tx_carrier_errors: __u64, -pub tx_fifo_errors: __u64, -pub tx_heartbeat_errors: __u64, -pub tx_window_errors: __u64, -pub rx_compressed: __u64, -pub tx_compressed: __u64, -pub rx_nohandler: __u64, -pub rx_otherhost_dropped: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_hw_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, +pub enum netlink_attribute_type { +NL_ATTR_TYPE_INVALID = 0, +NL_ATTR_TYPE_FLAG = 1, +NL_ATTR_TYPE_U8 = 2, +NL_ATTR_TYPE_U16 = 3, +NL_ATTR_TYPE_U32 = 4, +NL_ATTR_TYPE_U64 = 5, +NL_ATTR_TYPE_S8 = 6, +NL_ATTR_TYPE_S16 = 7, +NL_ATTR_TYPE_S32 = 8, +NL_ATTR_TYPE_S64 = 9, +NL_ATTR_TYPE_BINARY = 10, +NL_ATTR_TYPE_STRING = 11, +NL_ATTR_TYPE_NUL_STRING = 12, +NL_ATTR_TYPE_NESTED = 13, +NL_ATTR_TYPE_NESTED_ARRAY = 14, +NL_ATTR_TYPE_BITFIELD32 = 15, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_ifmap { -pub mem_start: __u64, -pub mem_end: __u64, -pub base_addr: __u64, -pub irq: __u16, -pub dma: __u8, -pub port: __u8, +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_policy_type_attr { +NL_POLICY_TYPE_ATTR_UNSPEC = 0, +NL_POLICY_TYPE_ATTR_TYPE = 1, +NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, +NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, +NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, +NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, +NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, +NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, +NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, +NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, +NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, +NL_POLICY_TYPE_ATTR_PAD = 11, +NL_POLICY_TYPE_ATTR_MASK = 12, +__NL_POLICY_TYPE_ATTR_MAX = 13, } -pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; -pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; -pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; -pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; -pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; -pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; -pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; -pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; -pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; -pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; -pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; -pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; -pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; -pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; -pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; -pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; -pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; -pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; -pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; -pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; -pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; -pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; -pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; -pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; -pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; -pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; -pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; -pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; -pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; -pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; -pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; -pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; -pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; -pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; -pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; -pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; -pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; -pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; -pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; -pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; -pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; -pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; -pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; -pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; -pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; -pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; -pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; -pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; -pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; -pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; -pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; -pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; -pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; -pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; -pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; -pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; -pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; -pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; -pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; -pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; -pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; -pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; -pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; -pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; -pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -689,11 +1638,6 @@ IFLA_GRO_IPV4_MAX_SIZE = 64, __IFLA_MAX = 65, } -pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; -pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; -pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; -pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; -pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -703,9 +1647,6 @@ IFLA_PROTO_DOWN_REASON_VALUE = 2, __IFLA_PROTO_DOWN_REASON_CNT = 3, } -pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; -pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; -pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -714,17 +1655,6 @@ IFLA_INET_CONF = 1, __IFLA_INET_MAX = 2, } -pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; -pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; -pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; -pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; -pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; -pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; -pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; -pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; -pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; -pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; -pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -750,55 +1680,6 @@ IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, IN6_ADDR_GEN_MODE_RANDOM = 3, } -pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; -pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; -pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; -pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; -pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; -pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; -pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; -pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; -pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; -pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; -pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; -pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; -pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; -pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; -pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; -pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; -pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; -pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; -pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; -pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; -pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; -pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; -pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; -pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; -pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; -pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; -pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; -pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; -pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; -pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; -pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; -pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; -pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; -pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; -pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; -pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; -pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; -pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; -pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; -pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; -pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; -pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; -pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; -pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; -pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; -pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; -pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; -pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; -pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -835,83 +1716,31 @@ IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29, IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30, IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, -IFLA_BR_MCAST_QUERIER_INTVL = 32, -IFLA_BR_MCAST_QUERY_INTVL = 33, -IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, -IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, -IFLA_BR_NF_CALL_IPTABLES = 36, -IFLA_BR_NF_CALL_IP6TABLES = 37, -IFLA_BR_NF_CALL_ARPTABLES = 38, -IFLA_BR_VLAN_DEFAULT_PVID = 39, -IFLA_BR_PAD = 40, -IFLA_BR_VLAN_STATS_ENABLED = 41, -IFLA_BR_MCAST_STATS_ENABLED = 42, -IFLA_BR_MCAST_IGMP_VERSION = 43, -IFLA_BR_MCAST_MLD_VERSION = 44, -IFLA_BR_VLAN_STATS_PER_PORT = 45, -IFLA_BR_MULTI_BOOLOPT = 46, -IFLA_BR_MCAST_QUERIER_STATE = 47, -__IFLA_BR_MAX = 48, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_bridge_id { -pub prio: [__u8; 2usize], -pub addr: [__u8; 6usize], -} -pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; -pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -BRIDGE_MODE_UNSPEC = 0, -BRIDGE_MODE_HAIRPIN = 1, -} -pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; -pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; -pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; -pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; -pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; -pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; -pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; -pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; -pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; -pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; -pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; -pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; -pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; -pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; -pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; -pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; -pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; -pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; -pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; -pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; -pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; -pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; -pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; -pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; -pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; -pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; -pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; -pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; -pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; -pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; -pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; -pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; -pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; -pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; -pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; -pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; -pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; -pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; -pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; -pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; -pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; -pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +IFLA_BR_MCAST_QUERIER_INTVL = 32, +IFLA_BR_MCAST_QUERY_INTVL = 33, +IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, +IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, +IFLA_BR_NF_CALL_IPTABLES = 36, +IFLA_BR_NF_CALL_IP6TABLES = 37, +IFLA_BR_NF_CALL_ARPTABLES = 38, +IFLA_BR_VLAN_DEFAULT_PVID = 39, +IFLA_BR_PAD = 40, +IFLA_BR_VLAN_STATS_ENABLED = 41, +IFLA_BR_MCAST_STATS_ENABLED = 42, +IFLA_BR_MCAST_IGMP_VERSION = 43, +IFLA_BR_MCAST_MLD_VERSION = 44, +IFLA_BR_VLAN_STATS_PER_PORT = 45, +IFLA_BR_MULTI_BOOLOPT = 46, +IFLA_BR_MCAST_QUERIER_STATE = 47, +__IFLA_BR_MAX = 48, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +BRIDGE_MODE_UNSPEC = 0, +BRIDGE_MODE_HAIRPIN = 1, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -961,21 +1790,6 @@ IFLA_BRPORT_MCAST_MAX_GROUPS = 42, __IFLA_BRPORT_MAX = 43, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_cacheinfo { -pub max_reasm_len: __u32, -pub tstamp: __u32, -pub reachable_time: __u32, -pub retrans_time: __u32, -} -pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; -pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; -pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; -pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; -pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; -pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; -pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -988,13 +1802,6 @@ IFLA_INFO_SLAVE_DATA = 5, __IFLA_INFO_MAX = 6, } -pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; -pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; -pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; -pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; -pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; -pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; -pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1007,15 +1814,6 @@ IFLA_VLAN_PROTOCOL = 5, __IFLA_VLAN_MAX = 6, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; -pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; -pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1024,22 +1822,6 @@ IFLA_VLAN_QOS_MAPPING = 1, __IFLA_VLAN_QOS_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_qos_mapping { -pub from: __u32, -pub to: __u32, -} -pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; -pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; -pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; -pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; -pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; -pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; -pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; -pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; -pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; -pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1074,9 +1856,6 @@ MACVLAN_MACADDR_FLUSH = 2, MACVLAN_MACADDR_SET = 3, } -pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; -pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; -pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1085,9 +1864,6 @@ IFLA_VRF_TABLE = 1, __IFLA_VRF_MAX = 2, } -pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; -pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; -pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1096,23 +1872,6 @@ IFLA_VRF_PORT_TABLE = 1, __IFLA_VRF_PORT_MAX = 2, } -pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; -pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; -pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; -pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; -pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; -pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; -pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; -pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; -pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; -pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; -pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; -pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; -pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; -pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; -pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; -pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; -pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1135,11 +1894,6 @@ IFLA_MACSEC_OFFLOAD = 15, __IFLA_MACSEC_MAX = 16, } -pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; -pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; -pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; -pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; -pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1150,9 +1904,6 @@ IFLA_XFRM_COLLECT_METADATA = 3, __IFLA_XFRM_MAX = 4, } -impl macsec_validation_type { -pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1162,9 +1913,6 @@ MACSEC_VALIDATE_STRICT = 2, __MACSEC_VALIDATE_END = 3, } -impl macsec_offload { -pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1174,10 +1922,6 @@ MACSEC_OFFLOAD_MAC = 2, __MACSEC_OFFLOAD_END = 3, } -pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; -pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; -pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; -pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1196,25 +1940,6 @@ IPVLAN_MODE_L3S = 2, IPVLAN_MODE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tunnel_msg { -pub family: __u8, -pub flags: __u8, -pub reserved2: __u16, -pub ifindex: __u32, -} -pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; -pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; -pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; -pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; -pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; -pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; -pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; -pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; -pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1231,13 +1956,6 @@ VNIFILTER_ENTRY_STATS_PAD = 9, __VNIFILTER_ENTRY_STATS_MAX = 10, } -pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; -pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; -pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; -pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; -pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; -pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1250,9 +1968,6 @@ VXLAN_VNIFILTER_ENTRY_STATS = 5, __VXLAN_VNIFILTER_ENTRY_MAX = 6, } -pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; -pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1261,38 +1976,6 @@ VXLAN_VNIFILTER_ENTRY = 1, __VXLAN_VNIFILTER_MAX = 2, } -pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; -pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; -pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; -pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; -pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; -pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; -pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; -pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; -pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; -pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; -pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; -pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; -pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; -pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; -pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; -pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; -pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; -pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; -pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; -pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; -pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; -pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; -pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; -pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; -pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; -pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; -pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; -pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; -pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; -pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1330,15 +2013,6 @@ IFLA_VXLAN_VNIFILTER = 30, __IFLA_VXLAN_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vxlan_port_range { -pub low: __be16, -pub high: __be16, -} -impl ifla_vxlan_df { -pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1348,22 +2022,6 @@ VXLAN_DF_INHERIT = 2, __VXLAN_DF_END = 3, } -pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; -pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; -pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; -pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; -pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; -pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; -pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; -pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; -pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; -pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; -pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; -pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; -pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; -pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1385,9 +2043,6 @@ IFLA_GENEVE_INNER_PROTO_INHERIT = 14, __IFLA_GENEVE_MAX = 15, } -impl ifla_geneve_df { -pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1397,12 +2052,6 @@ GENEVE_DF_INHERIT = 2, __GENEVE_DF_END = 3, } -pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; -pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; -pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; -pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; -pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; -pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1414,9 +2063,6 @@ IFLA_BAREUDP_MULTIPROTO_MODE = 4, __IFLA_BAREUDP_MAX = 5, } -pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; -pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; -pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1432,60 +2078,19 @@ GTP_ROLE_GGSN = 0, GTP_ROLE_SGSN = 1, } -pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; -pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; -pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; -pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; -pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; -pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; -pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; -pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub enum _bindgen_ty_25 { IFLA_GTP_UNSPEC = 0, IFLA_GTP_FD0 = 1, -IFLA_GTP_FD1 = 2, -IFLA_GTP_PDP_HASHSIZE = 3, -IFLA_GTP_ROLE = 4, -IFLA_GTP_CREATE_SOCKETS = 5, -IFLA_GTP_RESTART_COUNT = 6, -__IFLA_GTP_MAX = 7, -} -pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; -pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; -pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; -pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; -pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; -pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; -pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; -pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; -pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; -pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; -pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; -pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; -pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; -pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; -pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; -pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; -pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; -pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; -pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; -pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; -pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; -pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; -pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; -pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; -pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; -pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; -pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; -pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; -pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; -pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; -pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; -pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; -pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +IFLA_GTP_FD1 = 2, +IFLA_GTP_PDP_HASHSIZE = 3, +IFLA_GTP_ROLE = 4, +IFLA_GTP_CREATE_SOCKETS = 5, +IFLA_GTP_RESTART_COUNT = 6, +__IFLA_GTP_MAX = 7, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1524,13 +2129,6 @@ IFLA_BOND_NS_IP6_TARGET = 31, __IFLA_BOND_MAX = 32, } -pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; -pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; -pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; -pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; -pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1543,17 +2141,6 @@ IFLA_BOND_AD_INFO_PARTNER_MAC = 5, __IFLA_BOND_AD_INFO_MAX = 6, } -pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; -pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; -pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; -pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; -pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; -pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; -pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; -pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; -pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1570,9 +2157,6 @@ IFLA_BOND_SLAVE_PRIO = 9, __IFLA_BOND_SLAVE_MAX = 10, } -pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; -pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; -pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1581,21 +2165,6 @@ IFLA_VF_INFO = 1, __IFLA_VF_INFO_MAX = 2, } -pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; -pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; -pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; -pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; -pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; -pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; -pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; -pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; -pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; -pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; -pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; -pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; -pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; -pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; -pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1616,27 +2185,6 @@ IFLA_VF_BROADCAST = 13, __IFLA_VF_MAX = 14, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_mac { -pub vf: __u32, -pub mac: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_broadcast { -pub broadcast: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -} -pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; -pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; -pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1645,43 +2193,6 @@ IFLA_VF_VLAN_INFO = 1, __IFLA_VF_VLAN_INFO_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan_info { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -pub vlan_proto: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_tx_rate { -pub vf: __u32, -pub rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rate { -pub vf: __u32, -pub min_tx_rate: __u32, -pub max_tx_rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_spoofchk { -pub vf: __u32, -pub setting: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_guid { -pub vf: __u32, -pub guid: __u64, -} -pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; -pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; -pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; -pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1691,28 +2202,6 @@ IFLA_VF_LINK_STATE_DISABLE = 2, __IFLA_VF_LINK_STATE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_link_state { -pub vf: __u32, -pub link_state: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rss_query_en { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; -pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; -pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; -pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; -pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; -pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; -pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; -pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; -pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; -pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1728,15 +2217,6 @@ IFLA_VF_STATS_TX_DROPPED = 8, __IFLA_VF_STATS_MAX = 9, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_trust { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; -pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; -pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1745,15 +2225,6 @@ IFLA_VF_PORT = 1, __IFLA_VF_PORT_MAX = 2, } -pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; -pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; -pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; -pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; -pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; -pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; -pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; -pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; -pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1768,10 +2239,6 @@ IFLA_PORT_RESPONSE = 7, __IFLA_PORT_MAX = 8, } -pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; -pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; -pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; -pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1781,19 +2248,6 @@ PORT_REQUEST_ASSOCIATE = 2, PORT_REQUEST_DISASSOCIATE = 3, } -pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; -pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; -pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; -pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; -pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; -pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; -pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; -pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; -pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; -pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; -pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1812,19 +2266,6 @@ PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, PORT_PROFILE_RESPONSE_ERROR = 261, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_port_vsi { -pub vsi_mgr_id: __u8, -pub vsi_type_id: [__u8; 3usize], -pub vsi_type_version: __u8, -pub pad: [__u8; 3usize], -} -pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; -pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; -pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; -pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; -pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1835,8 +2276,6 @@ IFLA_IPOIB_UMCAST = 3, __IFLA_IPOIB_MAX = 4, } -pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; -pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1844,9 +2283,6 @@ IPOIB_MODE_DATAGRAM = 0, IPOIB_MODE_CONNECTED = 1, } -pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; -pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; -pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1855,15 +2291,6 @@ HSR_PROTOCOL_PRP = 1, HSR_PROTOCOL_MAX = 2, } -pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; -pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; -pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; -pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; -pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; -pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; -pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; -pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; -pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1878,22 +2305,6 @@ IFLA_HSR_PROTOCOL = 7, __IFLA_HSR_MAX = 8, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_stats_msg { -pub family: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub ifindex: __u32, -pub filter_mask: __u32, -} -pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; -pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; -pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; -pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; -pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; -pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; -pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1906,10 +2317,6 @@ IFLA_STATS_AF_SPEC = 5, __IFLA_STATS_MAX = 6, } -pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; -pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; -pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1919,10 +2326,6 @@ IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, __IFLA_STATS_GETSET_MAX = 3, } -pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; -pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; -pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; -pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1932,11 +2335,6 @@ LINK_XSTATS_TYPE_BOND = 2, __LINK_XSTATS_TYPE_MAX = 3, } -pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; -pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1947,10 +2345,6 @@ IFLA_OFFLOAD_XSTATS_L3_STATS = 3, __IFLA_OFFLOAD_XSTATS_MAX = 4, } -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; -pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1960,11 +2354,6 @@ IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, } -pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; -pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; -pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; -pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; -pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1975,16 +2364,6 @@ XDP_ATTACHED_HW = 3, XDP_ATTACHED_MULTI = 4, } -pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; -pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; -pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; -pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; -pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; -pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; -pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; -pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; -pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; -pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2000,13 +2379,6 @@ IFLA_XDP_EXPECTED_FD = 8, __IFLA_XDP_MAX = 9, } -pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; -pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; -pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; -pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; -pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; -pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; -pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2019,17 +2391,6 @@ IFLA_EVENT_IGMP_RESEND = 5, IFLA_EVENT_BONDING_OPTIONS = 6, } -pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; -pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; -pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; -pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; -pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; -pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; -pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; -pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; -pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; -pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; -pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2045,11 +2406,7 @@ IFLA_TUN_NUM_QUEUES = 8, IFLA_TUN_NUM_DISABLED_QUEUES = 9, __IFLA_TUN_MAX = 10, -} -pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; -pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; -pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; -pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2059,15 +2416,6 @@ IFLA_RMNET_FLAGS = 2, __IFLA_RMNET_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_rmnet_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; -pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; -pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2076,9 +2424,6 @@ IFLA_MCTP_NET = 1, __IFLA_MCTP_MAX = 2, } -pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; -pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; -pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2087,28 +2432,6 @@ IFLA_DSA_MASTER = 1, __IFLA_DSA_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifaddrmsg { -pub ifa_family: __u8, -pub ifa_prefixlen: __u8, -pub ifa_flags: __u8, -pub ifa_scope: __u8, -pub ifa_index: __u32, -} -pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; -pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; -pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; -pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; -pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; -pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; -pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; -pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; -pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; -pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; -pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; -pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; -pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2127,44 +2450,6 @@ IFA_PROTO = 11, __IFA_MAX = 12, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifa_cacheinfo { -pub ifa_prefered: __u32, -pub ifa_valid: __u32, -pub cstamp: __u32, -pub tstamp: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndmsg { -pub ndm_family: __u8, -pub ndm_pad1: __u8, -pub ndm_pad2: __u16, -pub ndm_ifindex: __s32, -pub ndm_state: __u16, -pub ndm_flags: __u8, -pub ndm_type: __u8, -} -pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; -pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; -pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; -pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; -pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; -pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; -pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; -pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; -pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; -pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; -pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; -pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; -pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; -pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; -pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; -pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; -pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; -pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; -pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2189,50 +2474,6 @@ NDA_NDM_FLAGS_MASK = 17, __NDA_MAX = 18, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nda_cacheinfo { -pub ndm_confirmed: __u32, -pub ndm_used: __u32, -pub ndm_updated: __u32, -pub ndm_refcnt: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_stats { -pub ndts_allocs: __u64, -pub ndts_destroys: __u64, -pub ndts_hash_grows: __u64, -pub ndts_res_failed: __u64, -pub ndts_lookups: __u64, -pub ndts_hits: __u64, -pub ndts_rcv_probes_mcast: __u64, -pub ndts_rcv_probes_ucast: __u64, -pub ndts_periodic_gc_runs: __u64, -pub ndts_forced_gc_runs: __u64, -pub ndts_table_fulls: __u64, -} -pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; -pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; -pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; -pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; -pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; -pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; -pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; -pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; -pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; -pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; -pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; -pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; -pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; -pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; -pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; -pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; -pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; -pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; -pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; -pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; -pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2259,37 +2500,6 @@ NDTPA_INTERVAL_PROBE_TIME_MS = 19, __NDTPA_MAX = 20, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndtmsg { -pub ndtm_family: __u8, -pub ndtm_pad1: __u8, -pub ndtm_pad2: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_config { -pub ndtc_key_len: __u16, -pub ndtc_entry_size: __u16, -pub ndtc_entries: __u32, -pub ndtc_last_flush: __u32, -pub ndtc_last_rand: __u32, -pub ndtc_hash_rnd: __u32, -pub ndtc_hash_mask: __u32, -pub ndtc_hash_chain_gc: __u32, -pub ndtc_proxy_qlen: __u32, -} -pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; -pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; -pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; -pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; -pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; -pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; -pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; -pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; -pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; -pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; -pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2306,8 +2516,6 @@ NDTA_PAD = 9, __NDTA_MAX = 10, } -pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; -pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2315,10 +2523,6 @@ FDB_NOTIFY_BIT = 1, FDB_NOTIFY_INACTIVE_BIT = 2, } -pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; -pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; -pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; -pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2328,79 +2532,6 @@ NFEA_DONT_REFRESH = 2, __NFEA_MAX = 3, } -pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; -pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; -pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; -pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; -pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; -pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; -pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; -pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; -pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; -pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; -pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; -pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; -pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; -pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; -pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; -pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; -pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; -pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; -pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; -pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; -pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; -pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; -pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; -pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; -pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; -pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; -pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; -pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; -pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; -pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; -pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; -pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; -pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; -pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; -pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; -pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; -pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; -pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; -pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; -pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; -pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; -pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; -pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; -pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; -pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; -pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; -pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; -pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; -pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; -pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; -pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; -pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; -pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; -pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; -pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; -pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; -pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; -pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; -pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; -pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; -pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; -pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; -pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; -pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; -pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; -pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; -pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; -pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; -pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; -pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; -pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2467,49 +2598,17 @@ RTM_NEWLINKPROP = 108, RTM_DELLINKPROP = 109, RTM_GETLINKPROP = 110, -RTM_NEWVLAN = 112, -RTM_DELVLAN = 113, -RTM_GETVLAN = 114, -RTM_NEWNEXTHOPBUCKET = 116, -RTM_DELNEXTHOPBUCKET = 117, -RTM_GETNEXTHOPBUCKET = 118, -RTM_NEWTUNNEL = 120, -RTM_DELTUNNEL = 121, -RTM_GETTUNNEL = 122, -__RTM_MAX = 123, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtattr { -pub rta_len: crate::ctypes::c_ushort, -pub rta_type: crate::ctypes::c_ushort, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtmsg { -pub rtm_family: crate::ctypes::c_uchar, -pub rtm_dst_len: crate::ctypes::c_uchar, -pub rtm_src_len: crate::ctypes::c_uchar, -pub rtm_tos: crate::ctypes::c_uchar, -pub rtm_table: crate::ctypes::c_uchar, -pub rtm_protocol: crate::ctypes::c_uchar, -pub rtm_scope: crate::ctypes::c_uchar, -pub rtm_type: crate::ctypes::c_uchar, -pub rtm_flags: crate::ctypes::c_uint, +RTM_NEWVLAN = 112, +RTM_DELVLAN = 113, +RTM_GETVLAN = 114, +RTM_NEWNEXTHOPBUCKET = 116, +RTM_DELNEXTHOPBUCKET = 117, +RTM_GETNEXTHOPBUCKET = 118, +RTM_NEWTUNNEL = 120, +RTM_DELTUNNEL = 121, +RTM_GETTUNNEL = 122, +__RTM_MAX = 123, } -pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; -pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; -pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; -pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; -pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; -pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; -pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; -pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; -pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; -pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; -pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; -pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; -pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2586,51 +2685,6 @@ RTA_NH_ID = 30, __RTA_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnexthop { -pub rtnh_len: crate::ctypes::c_ushort, -pub rtnh_flags: crate::ctypes::c_uchar, -pub rtnh_hops: crate::ctypes::c_uchar, -pub rtnh_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug)] -pub struct rtvia { -pub rtvia_family: __kernel_sa_family_t, -pub rtvia_addr: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_cacheinfo { -pub rta_clntref: __u32, -pub rta_lastuse: __u32, -pub rta_expires: __s32, -pub rta_error: __u32, -pub rta_used: __u32, -pub rta_id: __u32, -pub rta_ts: __u32, -pub rta_tsage: __u32, -} -pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; -pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; -pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; -pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; -pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; -pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; -pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; -pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; -pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; -pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; -pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; -pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; -pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; -pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; -pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; -pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; -pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; -pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; -pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2655,72 +2709,6 @@ RTAX_FASTOPEN_NO_COOKIE = 17, __RTAX_MAX = 18, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rta_session { -pub proto: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub u: rta_session__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union rta_session__bindgen_ty_1 { -pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, -pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, -pub spi: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { -pub sport: __u16, -pub dport: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { -pub type_: __u8, -pub code: __u8, -pub ident: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_mfc_stats { -pub mfcs_packets: __u64, -pub mfcs_bytes: __u64, -pub mfcs_wrong_if: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtgenmsg { -pub rtgen_family: crate::ctypes::c_uchar, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifinfomsg { -pub ifi_family: crate::ctypes::c_uchar, -pub __ifi_pad: crate::ctypes::c_uchar, -pub ifi_type: crate::ctypes::c_ushort, -pub ifi_index: crate::ctypes::c_int, -pub ifi_flags: crate::ctypes::c_uint, -pub ifi_change: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefixmsg { -pub prefix_family: crate::ctypes::c_uchar, -pub prefix_pad1: crate::ctypes::c_uchar, -pub prefix_pad2: crate::ctypes::c_ushort, -pub prefix_ifindex: crate::ctypes::c_int, -pub prefix_type: crate::ctypes::c_uchar, -pub prefix_len: crate::ctypes::c_uchar, -pub prefix_flags: crate::ctypes::c_uchar, -pub prefix_pad3: crate::ctypes::c_uchar, -} -pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; -pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; -pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; -pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2730,41 +2718,6 @@ PREFIX_CACHEINFO = 2, __PREFIX_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefix_cacheinfo { -pub preferred_time: __u32, -pub valid_time: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcmsg { -pub tcm_family: crate::ctypes::c_uchar, -pub tcm__pad1: crate::ctypes::c_uchar, -pub tcm__pad2: crate::ctypes::c_ushort, -pub tcm_ifindex: crate::ctypes::c_int, -pub tcm_handle: __u32, -pub tcm_parent: __u32, -pub tcm_info: __u32, -} -pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; -pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; -pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; -pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; -pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; -pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; -pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; -pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; -pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; -pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; -pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; -pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; -pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; -pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; -pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; -pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; -pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; -pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2788,21 +2741,6 @@ TCA_EXT_WARN_MSG = 16, __TCA_MAX = 17, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nduseroptmsg { -pub nduseropt_family: crate::ctypes::c_uchar, -pub nduseropt_pad1: crate::ctypes::c_uchar, -pub nduseropt_opts_len: crate::ctypes::c_ushort, -pub nduseropt_ifindex: crate::ctypes::c_int, -pub nduseropt_icmp_type: __u8, -pub nduseropt_icmp_code: __u8, -pub nduseropt_pad2: crate::ctypes::c_ushort, -pub nduseropt_pad3: crate::ctypes::c_uint, -} -pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; -pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; -pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2854,20 +2792,6 @@ RTNLGRP_STATS = 36, __RTNLGRP_MAX = 37, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcamsg { -pub tca_family: crate::ctypes::c_uchar, -pub tca__pad1: crate::ctypes::c_uchar, -pub tca__pad2: crate::ctypes::c_ushort, -} -pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; -pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; -pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; -pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; -pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; -pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; -pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2880,3 +2804,61 @@ TCA_ROOT_EXT_WARN_MSG = 5, __TCA_ROOT_MAX = 6, } +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union rta_session__bindgen_ty_1 { +pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, +pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, +pub spi: __u32, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl nlmsgerr_attrs { +pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +} +impl netlink_policy_type_attr { +pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; +} +impl macsec_validation_type { +pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; +} +impl macsec_offload { +pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; +} +impl ifla_vxlan_df { +pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; +} +impl ifla_geneve_df { +pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/net.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/net.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/net.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/net.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1875 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type socklen_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_addr { +pub s_addr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq { +pub imr_multiaddr: in_addr, +pub imr_interface: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreqn { +pub imr_multiaddr: in_addr, +pub imr_address: in_addr, +pub imr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq_source { +pub imr_multiaddr: __be32, +pub imr_interface: __be32, +pub imr_sourceaddr: __be32, +} +#[repr(C)] +pub struct ip_msfilter { +pub imsf_multiaddr: __be32, +pub imsf_interface: __be32, +pub imsf_fmode: __u32, +pub imsf_numsrc: __u32, +pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, +} +#[repr(C)] +pub struct ip_msfilter__bindgen_ty_1 { +pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, +pub __bindgen_anon_1: __BindgenUnionField, +pub bindgen_union_field: u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { +pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub imsf_slist_flex: __IncompleteArrayField<__be32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_req { +pub gr_interface: __u32, +pub gr_group: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_source_req { +pub gsr_interface: __u32, +pub gsr_group: __kernel_sockaddr_storage, +pub gsr_source: __kernel_sockaddr_storage, +} +#[repr(C)] +pub struct group_filter { +pub __bindgen_anon_1: group_filter__bindgen_ty_1, +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 34usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { +pub gf_interface_aux: __u32, +pub gf_group_aux: __kernel_sockaddr_storage, +pub gf_fmode_aux: __u32, +pub gf_numsrc_aux: __u32, +pub gf_slist: [__kernel_sockaddr_storage; 1usize], +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { +pub gf_interface: __u32, +pub gf_group: __kernel_sockaddr_storage, +pub gf_fmode: __u32, +pub gf_numsrc: __u32, +pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_pktinfo { +pub ipi_ifindex: crate::ctypes::c_int, +pub ipi_spec_dst: in_addr, +pub ipi_addr: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_in { +pub sin_family: __kernel_sa_family_t, +pub sin_port: __be16, +pub sin_addr: in_addr, +pub __pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct iphdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub tos: __u8, +pub tot_len: __be16, +pub id: __be16, +pub frag_off: __be16, +pub ttl: __u8, +pub protocol: __u8, +pub check: __sum16, +pub __bindgen_anon_1: iphdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_auth_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub reserved: __be16, +pub spi: __be32, +pub seq_no: __be32, +pub auth_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_esp_hdr { +pub spi: __be32, +pub seq_no: __be32, +pub enc_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_comp_hdr { +pub nexthdr: __u8, +pub flags: __u8, +pub cpi: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_beet_phdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub padlen: __u8, +pub reserved: __u8, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_addr { +pub in6_u: in6_addr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr_in6 { +pub sin6_family: crate::ctypes::c_ushort, +pub sin6_port: __be16, +pub sin6_flowinfo: __be32, +pub sin6_addr: in6_addr, +pub sin6_scope_id: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6_mreq { +pub ipv6mr_multiaddr: in6_addr, +pub ipv6mr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_flowlabel_req { +pub flr_dst: in6_addr, +pub flr_label: __be32, +pub flr_action: __u8, +pub flr_share: __u8, +pub flr_flags: __u16, +pub flr_expires: __u16, +pub flr_linger: __u16, +pub __flr_pad: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_pktinfo { +pub ipi6_addr: in6_addr, +pub ipi6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ip6_mtuinfo { +pub ip6m_addr: sockaddr_in6, +pub ip6m_mtu: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_ifreq { +pub ifr6_addr: in6_addr, +pub ifr6_prefixlen: __u32, +pub ifr6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_rt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub type_: __u8, +pub segments_left: __u8, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_opt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +} +#[repr(C)] +pub struct rt0_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rt2_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: in6_addr, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct ipv6_destopt_hao { +pub type_: __u8, +pub length: __u8, +pub addr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub flow_lbl: [__u8; 3usize], +pub payload_len: __be16, +pub nexthdr: __u8, +pub hop_limit: __u8, +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcphdr { +pub source: __be16, +pub dest: __be16, +pub seq: __be32, +pub ack_seq: __be32, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub window: __be16, +pub check: __sum16, +pub urg_ptr: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_opt { +pub opt_code: __u32, +pub opt_val: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_window { +pub snd_wl1: __u32, +pub snd_wnd: __u32, +pub max_window: __u32, +pub rcv_wnd: __u32, +pub rcv_wup: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_info { +pub tcpi_state: __u8, +pub tcpi_ca_state: __u8, +pub tcpi_retransmits: __u8, +pub tcpi_probes: __u8, +pub tcpi_backoff: __u8, +pub tcpi_options: __u8, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub tcpi_rto: __u32, +pub tcpi_ato: __u32, +pub tcpi_snd_mss: __u32, +pub tcpi_rcv_mss: __u32, +pub tcpi_unacked: __u32, +pub tcpi_sacked: __u32, +pub tcpi_lost: __u32, +pub tcpi_retrans: __u32, +pub tcpi_fackets: __u32, +pub tcpi_last_data_sent: __u32, +pub tcpi_last_ack_sent: __u32, +pub tcpi_last_data_recv: __u32, +pub tcpi_last_ack_recv: __u32, +pub tcpi_pmtu: __u32, +pub tcpi_rcv_ssthresh: __u32, +pub tcpi_rtt: __u32, +pub tcpi_rttvar: __u32, +pub tcpi_snd_ssthresh: __u32, +pub tcpi_snd_cwnd: __u32, +pub tcpi_advmss: __u32, +pub tcpi_reordering: __u32, +pub tcpi_rcv_rtt: __u32, +pub tcpi_rcv_space: __u32, +pub tcpi_total_retrans: __u32, +pub tcpi_pacing_rate: __u64, +pub tcpi_max_pacing_rate: __u64, +pub tcpi_bytes_acked: __u64, +pub tcpi_bytes_received: __u64, +pub tcpi_segs_out: __u32, +pub tcpi_segs_in: __u32, +pub tcpi_notsent_bytes: __u32, +pub tcpi_min_rtt: __u32, +pub tcpi_data_segs_in: __u32, +pub tcpi_data_segs_out: __u32, +pub tcpi_delivery_rate: __u64, +pub tcpi_busy_time: __u64, +pub tcpi_rwnd_limited: __u64, +pub tcpi_sndbuf_limited: __u64, +pub tcpi_delivered: __u32, +pub tcpi_delivered_ce: __u32, +pub tcpi_bytes_sent: __u64, +pub tcpi_bytes_retrans: __u64, +pub tcpi_dsack_dups: __u32, +pub tcpi_reord_seen: __u32, +pub tcpi_rcv_ooopack: __u32, +pub tcpi_snd_wnd: __u32, +pub tcpi_rcv_wnd: __u32, +pub tcpi_rehash: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct tcp_md5sig { +pub tcpm_addr: __kernel_sockaddr_storage, +pub tcpm_flags: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_ifindex: crate::ctypes::c_int, +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_diag_md5sig { +pub tcpm_family: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_addr: [__be32; 4usize], +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_zerocopy_receive { +pub address: __u64, +pub length: __u32, +pub recv_skip_hint: __u32, +pub inq: __u32, +pub err: __s32, +pub copybuf_address: __u64, +pub copybuf_len: __s32, +pub flags: __u32, +pub msg_control: __u64, +pub msg_controllen: __u64, +pub msg_flags: __u32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_un { +pub sun_family: __kernel_sa_family_t, +pub sun_path: [crate::ctypes::c_char; 108usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr { +pub __storage: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct linger { +pub l_onoff: crate::ctypes::c_int, +pub l_linger: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct msghdr { +pub msg_name: *mut crate::ctypes::c_void, +pub msg_namelen: crate::ctypes::c_int, +pub msg_iov: *mut iovec, +pub msg_iovlen: usize, +pub msg_control: *mut crate::ctypes::c_void, +pub msg_controllen: usize, +pub msg_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct cmsghdr { +pub cmsg_len: usize, +pub cmsg_level: crate::ctypes::c_int, +pub cmsg_type: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ucred { +pub pid: __u32, +pub uid: __u32, +pub gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mmsghdr { +pub msg_hdr: msghdr, +pub msg_len: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub _address: u8, +} +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const IP_TOS: u32 = 1; +pub const IP_TTL: u32 = 2; +pub const IP_HDRINCL: u32 = 3; +pub const IP_OPTIONS: u32 = 4; +pub const IP_ROUTER_ALERT: u32 = 5; +pub const IP_RECVOPTS: u32 = 6; +pub const IP_RETOPTS: u32 = 7; +pub const IP_PKTINFO: u32 = 8; +pub const IP_PKTOPTIONS: u32 = 9; +pub const IP_MTU_DISCOVER: u32 = 10; +pub const IP_RECVERR: u32 = 11; +pub const IP_RECVTTL: u32 = 12; +pub const IP_RECVTOS: u32 = 13; +pub const IP_MTU: u32 = 14; +pub const IP_FREEBIND: u32 = 15; +pub const IP_IPSEC_POLICY: u32 = 16; +pub const IP_XFRM_POLICY: u32 = 17; +pub const IP_PASSSEC: u32 = 18; +pub const IP_TRANSPARENT: u32 = 19; +pub const IP_RECVRETOPTS: u32 = 7; +pub const IP_ORIGDSTADDR: u32 = 20; +pub const IP_RECVORIGDSTADDR: u32 = 20; +pub const IP_MINTTL: u32 = 21; +pub const IP_NODEFRAG: u32 = 22; +pub const IP_CHECKSUM: u32 = 23; +pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; +pub const IP_RECVFRAGSIZE: u32 = 25; +pub const IP_RECVERR_RFC4884: u32 = 26; +pub const IP_PMTUDISC_DONT: u32 = 0; +pub const IP_PMTUDISC_WANT: u32 = 1; +pub const IP_PMTUDISC_DO: u32 = 2; +pub const IP_PMTUDISC_PROBE: u32 = 3; +pub const IP_PMTUDISC_INTERFACE: u32 = 4; +pub const IP_PMTUDISC_OMIT: u32 = 5; +pub const IP_MULTICAST_IF: u32 = 32; +pub const IP_MULTICAST_TTL: u32 = 33; +pub const IP_MULTICAST_LOOP: u32 = 34; +pub const IP_ADD_MEMBERSHIP: u32 = 35; +pub const IP_DROP_MEMBERSHIP: u32 = 36; +pub const IP_UNBLOCK_SOURCE: u32 = 37; +pub const IP_BLOCK_SOURCE: u32 = 38; +pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; +pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; +pub const IP_MSFILTER: u32 = 41; +pub const MCAST_JOIN_GROUP: u32 = 42; +pub const MCAST_BLOCK_SOURCE: u32 = 43; +pub const MCAST_UNBLOCK_SOURCE: u32 = 44; +pub const MCAST_LEAVE_GROUP: u32 = 45; +pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; +pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; +pub const MCAST_MSFILTER: u32 = 48; +pub const IP_MULTICAST_ALL: u32 = 49; +pub const IP_UNICAST_IF: u32 = 50; +pub const IP_LOCAL_PORT_RANGE: u32 = 51; +pub const MCAST_EXCLUDE: u32 = 0; +pub const MCAST_INCLUDE: u32 = 1; +pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; +pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; +pub const __SOCK_SIZE__: u32 = 16; +pub const IN_CLASSA_NET: u32 = 4278190080; +pub const IN_CLASSA_NSHIFT: u32 = 24; +pub const IN_CLASSA_HOST: u32 = 16777215; +pub const IN_CLASSA_MAX: u32 = 128; +pub const IN_CLASSB_NET: u32 = 4294901760; +pub const IN_CLASSB_NSHIFT: u32 = 16; +pub const IN_CLASSB_HOST: u32 = 65535; +pub const IN_CLASSB_MAX: u32 = 65536; +pub const IN_CLASSC_NET: u32 = 4294967040; +pub const IN_CLASSC_NSHIFT: u32 = 8; +pub const IN_CLASSC_HOST: u32 = 255; +pub const IN_MULTICAST_NET: u32 = 3758096384; +pub const IN_CLASSE_NET: u32 = 4294967295; +pub const IN_CLASSE_NSHIFT: u32 = 0; +pub const IN_LOOPBACKNET: u32 = 127; +pub const INADDR_LOOPBACK: u32 = 2130706433; +pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; +pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; +pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; +pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; +pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; +pub const __BIG_ENDIAN: u32 = 4321; +pub const IPTOS_TOS_MASK: u32 = 30; +pub const IPTOS_LOWDELAY: u32 = 16; +pub const IPTOS_THROUGHPUT: u32 = 8; +pub const IPTOS_RELIABILITY: u32 = 4; +pub const IPTOS_MINCOST: u32 = 2; +pub const IPTOS_PREC_MASK: u32 = 224; +pub const IPTOS_PREC_NETCONTROL: u32 = 224; +pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; +pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; +pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; +pub const IPTOS_PREC_FLASH: u32 = 96; +pub const IPTOS_PREC_IMMEDIATE: u32 = 64; +pub const IPTOS_PREC_PRIORITY: u32 = 32; +pub const IPTOS_PREC_ROUTINE: u32 = 0; +pub const IPOPT_COPY: u32 = 128; +pub const IPOPT_CLASS_MASK: u32 = 96; +pub const IPOPT_NUMBER_MASK: u32 = 31; +pub const IPOPT_CONTROL: u32 = 0; +pub const IPOPT_RESERVED1: u32 = 32; +pub const IPOPT_MEASUREMENT: u32 = 64; +pub const IPOPT_RESERVED2: u32 = 96; +pub const IPOPT_END: u32 = 0; +pub const IPOPT_NOOP: u32 = 1; +pub const IPOPT_SEC: u32 = 130; +pub const IPOPT_LSRR: u32 = 131; +pub const IPOPT_TIMESTAMP: u32 = 68; +pub const IPOPT_CIPSO: u32 = 134; +pub const IPOPT_RR: u32 = 7; +pub const IPOPT_SID: u32 = 136; +pub const IPOPT_SSRR: u32 = 137; +pub const IPOPT_RA: u32 = 148; +pub const IPVERSION: u32 = 4; +pub const MAXTTL: u32 = 255; +pub const IPDEFTTL: u32 = 64; +pub const IPOPT_OPTVAL: u32 = 0; +pub const IPOPT_OLEN: u32 = 1; +pub const IPOPT_OFFSET: u32 = 2; +pub const IPOPT_MINOFF: u32 = 4; +pub const MAX_IPOPTLEN: u32 = 40; +pub const IPOPT_NOP: u32 = 1; +pub const IPOPT_EOL: u32 = 0; +pub const IPOPT_TS: u32 = 68; +pub const IPOPT_TS_TSONLY: u32 = 0; +pub const IPOPT_TS_TSANDADDR: u32 = 1; +pub const IPOPT_TS_PRESPEC: u32 = 3; +pub const IPV4_BEET_PHMAXLEN: u32 = 8; +pub const IPV6_FL_A_GET: u32 = 0; +pub const IPV6_FL_A_PUT: u32 = 1; +pub const IPV6_FL_A_RENEW: u32 = 2; +pub const IPV6_FL_F_CREATE: u32 = 1; +pub const IPV6_FL_F_EXCL: u32 = 2; +pub const IPV6_FL_F_REFLECT: u32 = 4; +pub const IPV6_FL_F_REMOTE: u32 = 8; +pub const IPV6_FL_S_NONE: u32 = 0; +pub const IPV6_FL_S_EXCL: u32 = 1; +pub const IPV6_FL_S_PROCESS: u32 = 2; +pub const IPV6_FL_S_USER: u32 = 3; +pub const IPV6_FL_S_ANY: u32 = 255; +pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; +pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; +pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; +pub const IPV6_PRIORITY_FILLER: u32 = 256; +pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; +pub const IPV6_PRIORITY_RESERVED1: u32 = 768; +pub const IPV6_PRIORITY_BULK: u32 = 1024; +pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; +pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; +pub const IPV6_PRIORITY_CONTROL: u32 = 1792; +pub const IPV6_PRIORITY_8: u32 = 2048; +pub const IPV6_PRIORITY_9: u32 = 2304; +pub const IPV6_PRIORITY_10: u32 = 2560; +pub const IPV6_PRIORITY_11: u32 = 2816; +pub const IPV6_PRIORITY_12: u32 = 3072; +pub const IPV6_PRIORITY_13: u32 = 3328; +pub const IPV6_PRIORITY_14: u32 = 3584; +pub const IPV6_PRIORITY_15: u32 = 3840; +pub const IPPROTO_HOPOPTS: u32 = 0; +pub const IPPROTO_ROUTING: u32 = 43; +pub const IPPROTO_FRAGMENT: u32 = 44; +pub const IPPROTO_ICMPV6: u32 = 58; +pub const IPPROTO_NONE: u32 = 59; +pub const IPPROTO_DSTOPTS: u32 = 60; +pub const IPPROTO_MH: u32 = 135; +pub const IPV6_TLV_PAD1: u32 = 0; +pub const IPV6_TLV_PADN: u32 = 1; +pub const IPV6_TLV_ROUTERALERT: u32 = 5; +pub const IPV6_TLV_CALIPSO: u32 = 7; +pub const IPV6_TLV_IOAM: u32 = 49; +pub const IPV6_TLV_JUMBO: u32 = 194; +pub const IPV6_TLV_HAO: u32 = 201; +pub const IPV6_ADDRFORM: u32 = 1; +pub const IPV6_2292PKTINFO: u32 = 2; +pub const IPV6_2292HOPOPTS: u32 = 3; +pub const IPV6_2292DSTOPTS: u32 = 4; +pub const IPV6_2292RTHDR: u32 = 5; +pub const IPV6_2292PKTOPTIONS: u32 = 6; +pub const IPV6_CHECKSUM: u32 = 7; +pub const IPV6_2292HOPLIMIT: u32 = 8; +pub const IPV6_NEXTHOP: u32 = 9; +pub const IPV6_AUTHHDR: u32 = 10; +pub const IPV6_FLOWINFO: u32 = 11; +pub const IPV6_UNICAST_HOPS: u32 = 16; +pub const IPV6_MULTICAST_IF: u32 = 17; +pub const IPV6_MULTICAST_HOPS: u32 = 18; +pub const IPV6_MULTICAST_LOOP: u32 = 19; +pub const IPV6_ADD_MEMBERSHIP: u32 = 20; +pub const IPV6_DROP_MEMBERSHIP: u32 = 21; +pub const IPV6_ROUTER_ALERT: u32 = 22; +pub const IPV6_MTU_DISCOVER: u32 = 23; +pub const IPV6_MTU: u32 = 24; +pub const IPV6_RECVERR: u32 = 25; +pub const IPV6_V6ONLY: u32 = 26; +pub const IPV6_JOIN_ANYCAST: u32 = 27; +pub const IPV6_LEAVE_ANYCAST: u32 = 28; +pub const IPV6_MULTICAST_ALL: u32 = 29; +pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; +pub const IPV6_RECVERR_RFC4884: u32 = 31; +pub const IPV6_PMTUDISC_DONT: u32 = 0; +pub const IPV6_PMTUDISC_WANT: u32 = 1; +pub const IPV6_PMTUDISC_DO: u32 = 2; +pub const IPV6_PMTUDISC_PROBE: u32 = 3; +pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; +pub const IPV6_PMTUDISC_OMIT: u32 = 5; +pub const IPV6_FLOWLABEL_MGR: u32 = 32; +pub const IPV6_FLOWINFO_SEND: u32 = 33; +pub const IPV6_IPSEC_POLICY: u32 = 34; +pub const IPV6_XFRM_POLICY: u32 = 35; +pub const IPV6_HDRINCL: u32 = 36; +pub const IPV6_RECVPKTINFO: u32 = 49; +pub const IPV6_PKTINFO: u32 = 50; +pub const IPV6_RECVHOPLIMIT: u32 = 51; +pub const IPV6_HOPLIMIT: u32 = 52; +pub const IPV6_RECVHOPOPTS: u32 = 53; +pub const IPV6_HOPOPTS: u32 = 54; +pub const IPV6_RTHDRDSTOPTS: u32 = 55; +pub const IPV6_RECVRTHDR: u32 = 56; +pub const IPV6_RTHDR: u32 = 57; +pub const IPV6_RECVDSTOPTS: u32 = 58; +pub const IPV6_DSTOPTS: u32 = 59; +pub const IPV6_RECVPATHMTU: u32 = 60; +pub const IPV6_PATHMTU: u32 = 61; +pub const IPV6_DONTFRAG: u32 = 62; +pub const IPV6_RECVTCLASS: u32 = 66; +pub const IPV6_TCLASS: u32 = 67; +pub const IPV6_AUTOFLOWLABEL: u32 = 70; +pub const IPV6_ADDR_PREFERENCES: u32 = 72; +pub const IPV6_PREFER_SRC_TMP: u32 = 1; +pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; +pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; +pub const IPV6_PREFER_SRC_COA: u32 = 4; +pub const IPV6_PREFER_SRC_HOME: u32 = 1024; +pub const IPV6_PREFER_SRC_CGA: u32 = 8; +pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; +pub const IPV6_MINHOPCOUNT: u32 = 73; +pub const IPV6_ORIGDSTADDR: u32 = 74; +pub const IPV6_RECVORIGDSTADDR: u32 = 74; +pub const IPV6_TRANSPARENT: u32 = 75; +pub const IPV6_UNICAST_IF: u32 = 76; +pub const IPV6_RECVFRAGSIZE: u32 = 77; +pub const IPV6_FREEBIND: u32 = 78; +pub const IPV6_MIN_MTU: u32 = 1280; +pub const IPV6_SRCRT_STRICT: u32 = 1; +pub const IPV6_SRCRT_TYPE_0: u32 = 0; +pub const IPV6_SRCRT_TYPE_2: u32 = 2; +pub const IPV6_SRCRT_TYPE_3: u32 = 3; +pub const IPV6_SRCRT_TYPE_4: u32 = 4; +pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 536805376; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const SIOCGSTAMP_OLD: u32 = 35078; +pub const SIOCGSTAMPNS_OLD: u32 = 35079; +pub const SOL_SOCKET: u32 = 65535; +pub const SO_DEBUG: u32 = 1; +pub const SO_REUSEADDR: u32 = 4; +pub const SO_KEEPALIVE: u32 = 8; +pub const SO_DONTROUTE: u32 = 16; +pub const SO_BROADCAST: u32 = 32; +pub const SO_LINGER: u32 = 128; +pub const SO_OOBINLINE: u32 = 256; +pub const SO_REUSEPORT: u32 = 512; +pub const SO_TYPE: u32 = 4104; +pub const SO_STYLE: u32 = 4104; +pub const SO_ERROR: u32 = 4103; +pub const SO_SNDBUF: u32 = 4097; +pub const SO_RCVBUF: u32 = 4098; +pub const SO_SNDLOWAT: u32 = 4099; +pub const SO_RCVLOWAT: u32 = 4100; +pub const SO_SNDTIMEO_OLD: u32 = 4101; +pub const SO_RCVTIMEO_OLD: u32 = 4102; +pub const SO_ACCEPTCONN: u32 = 4105; +pub const SO_PROTOCOL: u32 = 4136; +pub const SO_DOMAIN: u32 = 4137; +pub const SO_NO_CHECK: u32 = 11; +pub const SO_PRIORITY: u32 = 12; +pub const SO_BSDCOMPAT: u32 = 14; +pub const SO_PASSCRED: u32 = 17; +pub const SO_PEERCRED: u32 = 18; +pub const SO_SECURITY_AUTHENTICATION: u32 = 22; +pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; +pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; +pub const SO_BINDTODEVICE: u32 = 25; +pub const SO_ATTACH_FILTER: u32 = 26; +pub const SO_DETACH_FILTER: u32 = 27; +pub const SO_GET_FILTER: u32 = 26; +pub const SO_PEERNAME: u32 = 28; +pub const SO_PEERSEC: u32 = 30; +pub const SO_SNDBUFFORCE: u32 = 31; +pub const SO_RCVBUFFORCE: u32 = 33; +pub const SO_PASSSEC: u32 = 34; +pub const SO_MARK: u32 = 36; +pub const SO_RXQ_OVFL: u32 = 40; +pub const SO_WIFI_STATUS: u32 = 41; +pub const SCM_WIFI_STATUS: u32 = 41; +pub const SO_PEEK_OFF: u32 = 42; +pub const SO_NOFCS: u32 = 43; +pub const SO_LOCK_FILTER: u32 = 44; +pub const SO_SELECT_ERR_QUEUE: u32 = 45; +pub const SO_BUSY_POLL: u32 = 46; +pub const SO_MAX_PACING_RATE: u32 = 47; +pub const SO_BPF_EXTENSIONS: u32 = 48; +pub const SO_INCOMING_CPU: u32 = 49; +pub const SO_ATTACH_BPF: u32 = 50; +pub const SO_DETACH_BPF: u32 = 27; +pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; +pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; +pub const SO_CNX_ADVICE: u32 = 53; +pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; +pub const SO_MEMINFO: u32 = 55; +pub const SO_INCOMING_NAPI_ID: u32 = 56; +pub const SO_COOKIE: u32 = 57; +pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; +pub const SO_PEERGROUPS: u32 = 59; +pub const SO_ZEROCOPY: u32 = 60; +pub const SO_TXTIME: u32 = 61; +pub const SCM_TXTIME: u32 = 61; +pub const SO_BINDTOIFINDEX: u32 = 62; +pub const SO_TIMESTAMP_OLD: u32 = 29; +pub const SO_TIMESTAMPNS_OLD: u32 = 35; +pub const SO_TIMESTAMPING_OLD: u32 = 37; +pub const SO_TIMESTAMP_NEW: u32 = 63; +pub const SO_TIMESTAMPNS_NEW: u32 = 64; +pub const SO_TIMESTAMPING_NEW: u32 = 65; +pub const SO_RCVTIMEO_NEW: u32 = 66; +pub const SO_SNDTIMEO_NEW: u32 = 67; +pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; +pub const SO_PREFER_BUSY_POLL: u32 = 69; +pub const SO_BUSY_POLL_BUDGET: u32 = 70; +pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; +pub const SO_TXREHASH: u32 = 74; +pub const SO_RCVMARK: u32 = 75; +pub const SO_TIMESTAMP: u32 = 29; +pub const SO_TIMESTAMPNS: u32 = 35; +pub const SO_TIMESTAMPING: u32 = 37; +pub const SO_RCVTIMEO: u32 = 4102; +pub const SO_SNDTIMEO: u32 = 4101; +pub const SCM_TIMESTAMP: u32 = 29; +pub const SCM_TIMESTAMPNS: u32 = 35; +pub const SCM_TIMESTAMPING: u32 = 37; +pub const SYS_SOCKET: u32 = 1; +pub const SYS_BIND: u32 = 2; +pub const SYS_CONNECT: u32 = 3; +pub const SYS_LISTEN: u32 = 4; +pub const SYS_ACCEPT: u32 = 5; +pub const SYS_GETSOCKNAME: u32 = 6; +pub const SYS_GETPEERNAME: u32 = 7; +pub const SYS_SOCKETPAIR: u32 = 8; +pub const SYS_SEND: u32 = 9; +pub const SYS_RECV: u32 = 10; +pub const SYS_SENDTO: u32 = 11; +pub const SYS_RECVFROM: u32 = 12; +pub const SYS_SHUTDOWN: u32 = 13; +pub const SYS_SETSOCKOPT: u32 = 14; +pub const SYS_GETSOCKOPT: u32 = 15; +pub const SYS_SENDMSG: u32 = 16; +pub const SYS_RECVMSG: u32 = 17; +pub const SYS_ACCEPT4: u32 = 18; +pub const SYS_RECVMMSG: u32 = 19; +pub const SYS_SENDMMSG: u32 = 20; +pub const __SO_ACCEPTCON: u32 = 65536; +pub const TCP_MSS_DEFAULT: u32 = 536; +pub const TCP_MSS_DESIRED: u32 = 1220; +pub const TCP_NODELAY: u32 = 1; +pub const TCP_MAXSEG: u32 = 2; +pub const TCP_CORK: u32 = 3; +pub const TCP_KEEPIDLE: u32 = 4; +pub const TCP_KEEPINTVL: u32 = 5; +pub const TCP_KEEPCNT: u32 = 6; +pub const TCP_SYNCNT: u32 = 7; +pub const TCP_LINGER2: u32 = 8; +pub const TCP_DEFER_ACCEPT: u32 = 9; +pub const TCP_WINDOW_CLAMP: u32 = 10; +pub const TCP_INFO: u32 = 11; +pub const TCP_QUICKACK: u32 = 12; +pub const TCP_CONGESTION: u32 = 13; +pub const TCP_MD5SIG: u32 = 14; +pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; +pub const TCP_THIN_DUPACK: u32 = 17; +pub const TCP_USER_TIMEOUT: u32 = 18; +pub const TCP_REPAIR: u32 = 19; +pub const TCP_REPAIR_QUEUE: u32 = 20; +pub const TCP_QUEUE_SEQ: u32 = 21; +pub const TCP_REPAIR_OPTIONS: u32 = 22; +pub const TCP_FASTOPEN: u32 = 23; +pub const TCP_TIMESTAMP: u32 = 24; +pub const TCP_NOTSENT_LOWAT: u32 = 25; +pub const TCP_CC_INFO: u32 = 26; +pub const TCP_SAVE_SYN: u32 = 27; +pub const TCP_SAVED_SYN: u32 = 28; +pub const TCP_REPAIR_WINDOW: u32 = 29; +pub const TCP_FASTOPEN_CONNECT: u32 = 30; +pub const TCP_ULP: u32 = 31; +pub const TCP_MD5SIG_EXT: u32 = 32; +pub const TCP_FASTOPEN_KEY: u32 = 33; +pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; +pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; +pub const TCP_INQ: u32 = 36; +pub const TCP_CM_INQ: u32 = 36; +pub const TCP_TX_DELAY: u32 = 37; +pub const TCP_REPAIR_ON: u32 = 1; +pub const TCP_REPAIR_OFF: u32 = 0; +pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; +pub const TCPI_OPT_TIMESTAMPS: u32 = 1; +pub const TCPI_OPT_SACK: u32 = 2; +pub const TCPI_OPT_WSCALE: u32 = 4; +pub const TCPI_OPT_ECN: u32 = 8; +pub const TCPI_OPT_ECN_SEEN: u32 = 16; +pub const TCPI_OPT_SYN_DATA: u32 = 32; +pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; +pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; +pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; +pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; +pub const UNIX_PATH_MAX: u32 = 108; +pub const SHUT_RD: u32 = 0; +pub const SHUT_WR: u32 = 1; +pub const SHUT_RDWR: u32 = 2; +pub const SOCK_STREAM: u32 = 2; +pub const SOCK_DGRAM: u32 = 1; +pub const SOCK_RAW: u32 = 3; +pub const SOCK_RDM: u32 = 4; +pub const SOCK_SEQPACKET: u32 = 5; +pub const MSG_DONTWAIT: u32 = 64; +pub const AF_UNSPEC: u32 = 0; +pub const AF_UNIX: u32 = 1; +pub const AF_INET: u32 = 2; +pub const AF_AX25: u32 = 3; +pub const AF_IPX: u32 = 4; +pub const AF_APPLETALK: u32 = 5; +pub const AF_NETROM: u32 = 6; +pub const AF_BRIDGE: u32 = 7; +pub const AF_ATMPVC: u32 = 8; +pub const AF_X25: u32 = 9; +pub const AF_INET6: u32 = 10; +pub const AF_ROSE: u32 = 11; +pub const AF_DECnet: u32 = 12; +pub const AF_NETBEUI: u32 = 13; +pub const AF_SECURITY: u32 = 14; +pub const AF_KEY: u32 = 15; +pub const AF_NETLINK: u32 = 16; +pub const AF_PACKET: u32 = 17; +pub const AF_ASH: u32 = 18; +pub const AF_ECONET: u32 = 19; +pub const AF_ATMSVC: u32 = 20; +pub const AF_RDS: u32 = 21; +pub const AF_SNA: u32 = 22; +pub const AF_IRDA: u32 = 23; +pub const AF_PPPOX: u32 = 24; +pub const AF_WANPIPE: u32 = 25; +pub const AF_LLC: u32 = 26; +pub const AF_CAN: u32 = 29; +pub const AF_TIPC: u32 = 30; +pub const AF_BLUETOOTH: u32 = 31; +pub const AF_IUCV: u32 = 32; +pub const AF_RXRPC: u32 = 33; +pub const AF_ISDN: u32 = 34; +pub const AF_PHONET: u32 = 35; +pub const AF_IEEE802154: u32 = 36; +pub const AF_MAX: u32 = 37; +pub const MSG_OOB: u32 = 1; +pub const MSG_PEEK: u32 = 2; +pub const MSG_DONTROUTE: u32 = 4; +pub const MSG_CTRUNC: u32 = 8; +pub const MSG_PROBE: u32 = 16; +pub const MSG_TRUNC: u32 = 32; +pub const MSG_EOR: u32 = 128; +pub const MSG_WAITALL: u32 = 256; +pub const MSG_FIN: u32 = 512; +pub const MSG_SYN: u32 = 1024; +pub const MSG_CONFIRM: u32 = 2048; +pub const MSG_RST: u32 = 4096; +pub const MSG_ERRQUEUE: u32 = 8192; +pub const MSG_NOSIGNAL: u32 = 16384; +pub const MSG_MORE: u32 = 32768; +pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; +pub const SCM_RIGHTS: u32 = 1; +pub const SCM_CREDENTIALS: u32 = 2; +pub const SCM_SECURITY: u32 = 3; +pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; +pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; +pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; +pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; +pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; +pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; +pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; +pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; +pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; +pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; +pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; +pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; +pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; +pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; +pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; +pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; +pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; +pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; +pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; +pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; +pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; +pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; +pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; +pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; +pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; +pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; +pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; +pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; +pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; +pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; +pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; +pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; +pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; +pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; +pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; +pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; +pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; +pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; +pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; +pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; +pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; +pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; +pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; +pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; +pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; +pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; +pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; +pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; +pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; +pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; +pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; +pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; +pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; +pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; +pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; +pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; +pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; +pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; +pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; +pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; +pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; +pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; +pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; +pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; +pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; +pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; +pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; +pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; +pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; +pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; +pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; +pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; +pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; +pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; +pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; +pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; +pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; +pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; +pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; +pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; +pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; +pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; +pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; +pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; +pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; +pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; +pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; +pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; +pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; +pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; +pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; +pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; +pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; +pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; +pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; +pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; +pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; +pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; +pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; +pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; +pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; +pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; +pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; +pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; +pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; +pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; +pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; +pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; +pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; +pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; +pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; +pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; +pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; +pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; +pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; +pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; +pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; +pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; +pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; +pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; +pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; +pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; +pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; +pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; +pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; +pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; +pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; +pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; +pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; +pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; +pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; +pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; +pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; +pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; +pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; +pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; +pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; +pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; +pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; +pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; +pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; +pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; +pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; +pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; +pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; +pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; +pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; +pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; +pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; +pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; +pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; +pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IPPROTO_IP = 0, +IPPROTO_ICMP = 1, +IPPROTO_IGMP = 2, +IPPROTO_IPIP = 4, +IPPROTO_TCP = 6, +IPPROTO_EGP = 8, +IPPROTO_PUP = 12, +IPPROTO_UDP = 17, +IPPROTO_IDP = 22, +IPPROTO_TP = 29, +IPPROTO_DCCP = 33, +IPPROTO_IPV6 = 41, +IPPROTO_RSVP = 46, +IPPROTO_GRE = 47, +IPPROTO_ESP = 50, +IPPROTO_AH = 51, +IPPROTO_MTP = 92, +IPPROTO_BEETPH = 94, +IPPROTO_ENCAP = 98, +IPPROTO_PIM = 103, +IPPROTO_COMP = 108, +IPPROTO_L2TP = 115, +IPPROTO_SCTP = 132, +IPPROTO_UDPLITE = 136, +IPPROTO_MPLS = 137, +IPPROTO_ETHERNET = 143, +IPPROTO_RAW = 255, +IPPROTO_MPTCP = 262, +IPPROTO_MAX = 263, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IPV4_DEVCONF_FORWARDING = 1, +IPV4_DEVCONF_MC_FORWARDING = 2, +IPV4_DEVCONF_PROXY_ARP = 3, +IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, +IPV4_DEVCONF_SECURE_REDIRECTS = 5, +IPV4_DEVCONF_SEND_REDIRECTS = 6, +IPV4_DEVCONF_SHARED_MEDIA = 7, +IPV4_DEVCONF_RP_FILTER = 8, +IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, +IPV4_DEVCONF_BOOTP_RELAY = 10, +IPV4_DEVCONF_LOG_MARTIANS = 11, +IPV4_DEVCONF_TAG = 12, +IPV4_DEVCONF_ARPFILTER = 13, +IPV4_DEVCONF_MEDIUM_ID = 14, +IPV4_DEVCONF_NOXFRM = 15, +IPV4_DEVCONF_NOPOLICY = 16, +IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, +IPV4_DEVCONF_ARP_ANNOUNCE = 18, +IPV4_DEVCONF_ARP_IGNORE = 19, +IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, +IPV4_DEVCONF_ARP_ACCEPT = 21, +IPV4_DEVCONF_ARP_NOTIFY = 22, +IPV4_DEVCONF_ACCEPT_LOCAL = 23, +IPV4_DEVCONF_SRC_VMARK = 24, +IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, +IPV4_DEVCONF_ROUTE_LOCALNET = 26, +IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, +IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, +IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, +IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, +IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, +IPV4_DEVCONF_BC_FORWARDING = 32, +IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, +__IPV4_DEVCONF_MAX = 34, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +DEVCONF_FORWARDING = 0, +DEVCONF_HOPLIMIT = 1, +DEVCONF_MTU6 = 2, +DEVCONF_ACCEPT_RA = 3, +DEVCONF_ACCEPT_REDIRECTS = 4, +DEVCONF_AUTOCONF = 5, +DEVCONF_DAD_TRANSMITS = 6, +DEVCONF_RTR_SOLICITS = 7, +DEVCONF_RTR_SOLICIT_INTERVAL = 8, +DEVCONF_RTR_SOLICIT_DELAY = 9, +DEVCONF_USE_TEMPADDR = 10, +DEVCONF_TEMP_VALID_LFT = 11, +DEVCONF_TEMP_PREFERED_LFT = 12, +DEVCONF_REGEN_MAX_RETRY = 13, +DEVCONF_MAX_DESYNC_FACTOR = 14, +DEVCONF_MAX_ADDRESSES = 15, +DEVCONF_FORCE_MLD_VERSION = 16, +DEVCONF_ACCEPT_RA_DEFRTR = 17, +DEVCONF_ACCEPT_RA_PINFO = 18, +DEVCONF_ACCEPT_RA_RTR_PREF = 19, +DEVCONF_RTR_PROBE_INTERVAL = 20, +DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, +DEVCONF_PROXY_NDP = 22, +DEVCONF_OPTIMISTIC_DAD = 23, +DEVCONF_ACCEPT_SOURCE_ROUTE = 24, +DEVCONF_MC_FORWARDING = 25, +DEVCONF_DISABLE_IPV6 = 26, +DEVCONF_ACCEPT_DAD = 27, +DEVCONF_FORCE_TLLAO = 28, +DEVCONF_NDISC_NOTIFY = 29, +DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, +DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, +DEVCONF_SUPPRESS_FRAG_NDISC = 32, +DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, +DEVCONF_USE_OPTIMISTIC = 34, +DEVCONF_ACCEPT_RA_MTU = 35, +DEVCONF_STABLE_SECRET = 36, +DEVCONF_USE_OIF_ADDRS_ONLY = 37, +DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, +DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, +DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, +DEVCONF_DROP_UNSOLICITED_NA = 41, +DEVCONF_KEEP_ADDR_ON_DOWN = 42, +DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, +DEVCONF_SEG6_ENABLED = 44, +DEVCONF_SEG6_REQUIRE_HMAC = 45, +DEVCONF_ENHANCED_DAD = 46, +DEVCONF_ADDR_GEN_MODE = 47, +DEVCONF_DISABLE_POLICY = 48, +DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, +DEVCONF_NDISC_TCLASS = 50, +DEVCONF_RPL_SEG_ENABLED = 51, +DEVCONF_RA_DEFRTR_METRIC = 52, +DEVCONF_IOAM6_ENABLED = 53, +DEVCONF_IOAM6_ID = 54, +DEVCONF_IOAM6_ID_WIDE = 55, +DEVCONF_NDISC_EVICT_NOCARRIER = 56, +DEVCONF_ACCEPT_UNTRACKED_NA = 57, +DEVCONF_MAX = 58, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum socket_state { +SS_FREE = 0, +SS_UNCONNECTED = 1, +SS_CONNECTING = 2, +SS_CONNECTED = 3, +SS_DISCONNECTING = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +TCP_FLAG_CWR = 8388608, +TCP_FLAG_ECE = 4194304, +TCP_FLAG_URG = 2097152, +TCP_FLAG_ACK = 1048576, +TCP_FLAG_PSH = 524288, +TCP_FLAG_RST = 262144, +TCP_FLAG_SYN = 131072, +TCP_FLAG_FIN = 65536, +TCP_RESERVED_BITS = 251658240, +TCP_DATA_OFFSET = 4026531840, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +TCP_NO_QUEUE = 0, +TCP_RECV_QUEUE = 1, +TCP_SEND_QUEUE = 2, +TCP_QUEUES_NR = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_fastopen_client_fail { +TFO_STATUS_UNSPEC = 0, +TFO_COOKIE_UNAVAILABLE = 1, +TFO_DATA_NOT_ACKED = 2, +TFO_SYN_RETRANSMITTED = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_ca_state { +TCP_CA_Open = 0, +TCP_CA_Disorder = 1, +TCP_CA_CWR = 2, +TCP_CA_Recovery = 3, +TCP_CA_Loss = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +TCP_NLA_PAD = 0, +TCP_NLA_BUSY = 1, +TCP_NLA_RWND_LIMITED = 2, +TCP_NLA_SNDBUF_LIMITED = 3, +TCP_NLA_DATA_SEGS_OUT = 4, +TCP_NLA_TOTAL_RETRANS = 5, +TCP_NLA_PACING_RATE = 6, +TCP_NLA_DELIVERY_RATE = 7, +TCP_NLA_SND_CWND = 8, +TCP_NLA_REORDERING = 9, +TCP_NLA_MIN_RTT = 10, +TCP_NLA_RECUR_RETRANS = 11, +TCP_NLA_DELIVERY_RATE_APP_LMT = 12, +TCP_NLA_SNDQ_SIZE = 13, +TCP_NLA_CA_STATE = 14, +TCP_NLA_SND_SSTHRESH = 15, +TCP_NLA_DELIVERED = 16, +TCP_NLA_DELIVERED_CE = 17, +TCP_NLA_BYTES_SENT = 18, +TCP_NLA_BYTES_RETRANS = 19, +TCP_NLA_DSACK_DUPS = 20, +TCP_NLA_REORD_SEEN = 21, +TCP_NLA_SRTT = 22, +TCP_NLA_TIMEOUT_REHASH = 23, +TCP_NLA_BYTES_NOTSENT = 24, +TCP_NLA_EDT = 25, +TCP_NLA_TTL = 26, +TCP_NLA_REHASH = 27, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union iphdr__bindgen_ty_1 { +pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union in6_addr__bindgen_ty_1 { +pub u6_addr8: [__u8; 16usize], +pub u6_addr16: [__be16; 8usize], +pub u6_addr32: [__be32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ipv6hdr__bindgen_ty_1 { +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union tcp_word_hdr { +pub hdr: tcphdr, +pub words: [__be32; 5usize], +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} +impl iphdr { +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn ihl(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_ihl(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; +ihl as u64 +}); +__bindgen_bitfield_unit +} +} +impl ipv6hdr { +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn priority(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_priority(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let priority: u8 = unsafe { ::core::mem::transmute(priority) }; +priority as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcphdr { +#[inline] +pub fn doff(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } +} +#[inline] +pub fn set_doff(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn res1(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } +} +#[inline] +pub fn set_res1(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn cwr(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } +} +#[inline] +pub fn set_cwr(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn ece(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } +} +#[inline] +pub fn set_ece(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 1u8, val as u64) +} +} +#[inline] +pub fn urg(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } +} +#[inline] +pub fn set_urg(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(10usize, 1u8, val as u64) +} +} +#[inline] +pub fn ack(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } +} +#[inline] +pub fn set_ack(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(11usize, 1u8, val as u64) +} +} +#[inline] +pub fn psh(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } +} +#[inline] +pub fn set_psh(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(12usize, 1u8, val as u64) +} +} +#[inline] +pub fn rst(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } +} +#[inline] +pub fn set_rst(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(13usize, 1u8, val as u64) +} +} +#[inline] +pub fn syn(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } +} +#[inline] +pub fn set_syn(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(14usize, 1u8, val as u64) +} +} +#[inline] +pub fn fin(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +} +#[inline] +pub fn set_fin(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(15usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let doff: u16 = unsafe { ::core::mem::transmute(doff) }; +doff as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let res1: u16 = unsafe { ::core::mem::transmute(res1) }; +res1 as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; +cwr as u64 +}); +__bindgen_bitfield_unit.set(9usize, 1u8, { +let ece: u16 = unsafe { ::core::mem::transmute(ece) }; +ece as u64 +}); +__bindgen_bitfield_unit.set(10usize, 1u8, { +let urg: u16 = unsafe { ::core::mem::transmute(urg) }; +urg as u64 +}); +__bindgen_bitfield_unit.set(11usize, 1u8, { +let ack: u16 = unsafe { ::core::mem::transmute(ack) }; +ack as u64 +}); +__bindgen_bitfield_unit.set(12usize, 1u8, { +let psh: u16 = unsafe { ::core::mem::transmute(psh) }; +psh as u64 +}); +__bindgen_bitfield_unit.set(13usize, 1u8, { +let rst: u16 = unsafe { ::core::mem::transmute(rst) }; +rst as u64 +}); +__bindgen_bitfield_unit.set(14usize, 1u8, { +let syn: u16 = unsafe { ::core::mem::transmute(syn) }; +syn as u64 +}); +__bindgen_bitfield_unit.set(15usize, 1u8, { +let fin: u16 = unsafe { ::core::mem::transmute(fin) }; +fin as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcp_info { +#[inline] +pub fn tcpi_snd_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_rcv_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +} +#[inline] +pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn tcpi_fastopen_client_fail(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +} +#[inline] +pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 2u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; +tcpi_snd_wscale as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; +tcpi_rcv_wscale as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; +tcpi_delivery_rate_app_limited as u64 +}); +__bindgen_bitfield_unit.set(9usize, 2u8, { +let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; +tcpi_fastopen_client_fail as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/prctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/prctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/prctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,231 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prctl_mm_map { +pub start_code: __u64, +pub end_code: __u64, +pub start_data: __u64, +pub end_data: __u64, +pub start_brk: __u64, +pub brk: __u64, +pub start_stack: __u64, +pub arg_start: __u64, +pub arg_end: __u64, +pub env_start: __u64, +pub env_end: __u64, +pub auxv: *mut __u64, +pub auxv_size: __u32, +pub exe_fd: __u32, +} +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const PR_SET_PDEATHSIG: u32 = 1; +pub const PR_GET_PDEATHSIG: u32 = 2; +pub const PR_GET_DUMPABLE: u32 = 3; +pub const PR_SET_DUMPABLE: u32 = 4; +pub const PR_GET_UNALIGN: u32 = 5; +pub const PR_SET_UNALIGN: u32 = 6; +pub const PR_UNALIGN_NOPRINT: u32 = 1; +pub const PR_UNALIGN_SIGBUS: u32 = 2; +pub const PR_GET_KEEPCAPS: u32 = 7; +pub const PR_SET_KEEPCAPS: u32 = 8; +pub const PR_GET_FPEMU: u32 = 9; +pub const PR_SET_FPEMU: u32 = 10; +pub const PR_FPEMU_NOPRINT: u32 = 1; +pub const PR_FPEMU_SIGFPE: u32 = 2; +pub const PR_GET_FPEXC: u32 = 11; +pub const PR_SET_FPEXC: u32 = 12; +pub const PR_FP_EXC_SW_ENABLE: u32 = 128; +pub const PR_FP_EXC_DIV: u32 = 65536; +pub const PR_FP_EXC_OVF: u32 = 131072; +pub const PR_FP_EXC_UND: u32 = 262144; +pub const PR_FP_EXC_RES: u32 = 524288; +pub const PR_FP_EXC_INV: u32 = 1048576; +pub const PR_FP_EXC_DISABLED: u32 = 0; +pub const PR_FP_EXC_NONRECOV: u32 = 1; +pub const PR_FP_EXC_ASYNC: u32 = 2; +pub const PR_FP_EXC_PRECISE: u32 = 3; +pub const PR_GET_TIMING: u32 = 13; +pub const PR_SET_TIMING: u32 = 14; +pub const PR_TIMING_STATISTICAL: u32 = 0; +pub const PR_TIMING_TIMESTAMP: u32 = 1; +pub const PR_SET_NAME: u32 = 15; +pub const PR_GET_NAME: u32 = 16; +pub const PR_GET_ENDIAN: u32 = 19; +pub const PR_SET_ENDIAN: u32 = 20; +pub const PR_ENDIAN_BIG: u32 = 0; +pub const PR_ENDIAN_LITTLE: u32 = 1; +pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; +pub const PR_GET_SECCOMP: u32 = 21; +pub const PR_SET_SECCOMP: u32 = 22; +pub const PR_CAPBSET_READ: u32 = 23; +pub const PR_CAPBSET_DROP: u32 = 24; +pub const PR_GET_TSC: u32 = 25; +pub const PR_SET_TSC: u32 = 26; +pub const PR_TSC_ENABLE: u32 = 1; +pub const PR_TSC_SIGSEGV: u32 = 2; +pub const PR_GET_SECUREBITS: u32 = 27; +pub const PR_SET_SECUREBITS: u32 = 28; +pub const PR_SET_TIMERSLACK: u32 = 29; +pub const PR_GET_TIMERSLACK: u32 = 30; +pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; +pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; +pub const PR_MCE_KILL: u32 = 33; +pub const PR_MCE_KILL_CLEAR: u32 = 0; +pub const PR_MCE_KILL_SET: u32 = 1; +pub const PR_MCE_KILL_LATE: u32 = 0; +pub const PR_MCE_KILL_EARLY: u32 = 1; +pub const PR_MCE_KILL_DEFAULT: u32 = 2; +pub const PR_MCE_KILL_GET: u32 = 34; +pub const PR_SET_MM: u32 = 35; +pub const PR_SET_MM_START_CODE: u32 = 1; +pub const PR_SET_MM_END_CODE: u32 = 2; +pub const PR_SET_MM_START_DATA: u32 = 3; +pub const PR_SET_MM_END_DATA: u32 = 4; +pub const PR_SET_MM_START_STACK: u32 = 5; +pub const PR_SET_MM_START_BRK: u32 = 6; +pub const PR_SET_MM_BRK: u32 = 7; +pub const PR_SET_MM_ARG_START: u32 = 8; +pub const PR_SET_MM_ARG_END: u32 = 9; +pub const PR_SET_MM_ENV_START: u32 = 10; +pub const PR_SET_MM_ENV_END: u32 = 11; +pub const PR_SET_MM_AUXV: u32 = 12; +pub const PR_SET_MM_EXE_FILE: u32 = 13; +pub const PR_SET_MM_MAP: u32 = 14; +pub const PR_SET_MM_MAP_SIZE: u32 = 15; +pub const PR_SET_PTRACER: u32 = 1499557217; +pub const PR_SET_CHILD_SUBREAPER: u32 = 36; +pub const PR_GET_CHILD_SUBREAPER: u32 = 37; +pub const PR_SET_NO_NEW_PRIVS: u32 = 38; +pub const PR_GET_NO_NEW_PRIVS: u32 = 39; +pub const PR_GET_TID_ADDRESS: u32 = 40; +pub const PR_SET_THP_DISABLE: u32 = 41; +pub const PR_GET_THP_DISABLE: u32 = 42; +pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; +pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; +pub const PR_SET_FP_MODE: u32 = 45; +pub const PR_GET_FP_MODE: u32 = 46; +pub const PR_FP_MODE_FR: u32 = 1; +pub const PR_FP_MODE_FRE: u32 = 2; +pub const PR_CAP_AMBIENT: u32 = 47; +pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; +pub const PR_CAP_AMBIENT_RAISE: u32 = 2; +pub const PR_CAP_AMBIENT_LOWER: u32 = 3; +pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; +pub const PR_SVE_SET_VL: u32 = 50; +pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SVE_GET_VL: u32 = 51; +pub const PR_SVE_VL_LEN_MASK: u32 = 65535; +pub const PR_SVE_VL_INHERIT: u32 = 131072; +pub const PR_GET_SPECULATION_CTRL: u32 = 52; +pub const PR_SET_SPECULATION_CTRL: u32 = 53; +pub const PR_SPEC_STORE_BYPASS: u32 = 0; +pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; +pub const PR_SPEC_L1D_FLUSH: u32 = 2; +pub const PR_SPEC_NOT_AFFECTED: u32 = 0; +pub const PR_SPEC_PRCTL: u32 = 1; +pub const PR_SPEC_ENABLE: u32 = 2; +pub const PR_SPEC_DISABLE: u32 = 4; +pub const PR_SPEC_FORCE_DISABLE: u32 = 8; +pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; +pub const PR_PAC_RESET_KEYS: u32 = 54; +pub const PR_PAC_APIAKEY: u32 = 1; +pub const PR_PAC_APIBKEY: u32 = 2; +pub const PR_PAC_APDAKEY: u32 = 4; +pub const PR_PAC_APDBKEY: u32 = 8; +pub const PR_PAC_APGAKEY: u32 = 16; +pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; +pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; +pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; +pub const PR_MTE_TCF_NONE: u32 = 0; +pub const PR_MTE_TCF_SYNC: u32 = 2; +pub const PR_MTE_TCF_ASYNC: u32 = 4; +pub const PR_MTE_TCF_MASK: u32 = 6; +pub const PR_MTE_TAG_SHIFT: u32 = 3; +pub const PR_MTE_TAG_MASK: u32 = 524280; +pub const PR_MTE_TCF_SHIFT: u32 = 1; +pub const PR_SET_IO_FLUSHER: u32 = 57; +pub const PR_GET_IO_FLUSHER: u32 = 58; +pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; +pub const PR_SYS_DISPATCH_OFF: u32 = 0; +pub const PR_SYS_DISPATCH_ON: u32 = 1; +pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; +pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; +pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; +pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; +pub const PR_SCHED_CORE: u32 = 62; +pub const PR_SCHED_CORE_GET: u32 = 0; +pub const PR_SCHED_CORE_CREATE: u32 = 1; +pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; +pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; +pub const PR_SCHED_CORE_MAX: u32 = 4; +pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; +pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; +pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; +pub const PR_SME_SET_VL: u32 = 63; +pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SME_GET_VL: u32 = 64; +pub const PR_SME_VL_LEN_MASK: u32 = 65535; +pub const PR_SME_VL_INHERIT: u32 = 131072; +pub const PR_SET_MDWE: u32 = 65; +pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; +pub const PR_GET_MDWE: u32 = 66; +pub const PR_SET_VMA: u32 = 1398164801; +pub const PR_SET_VMA_ANON_NAME: u32 = 0; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/system.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/system.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips64/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,139 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +#[derive(Debug)] +pub struct sysinfo { +pub uptime: __kernel_long_t, +pub loads: [__kernel_ulong_t; 3usize], +pub totalram: __kernel_ulong_t, +pub freeram: __kernel_ulong_t, +pub sharedram: __kernel_ulong_t, +pub bufferram: __kernel_ulong_t, +pub totalswap: __kernel_ulong_t, +pub freeswap: __kernel_ulong_t, +pub procs: __u16, +pub pad: __u16, +pub totalhigh: __kernel_ulong_t, +pub freehigh: __kernel_ulong_t, +pub mem_unit: __u32, +pub _f: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct oldold_utsname { +pub sysname: [crate::ctypes::c_char; 9usize], +pub nodename: [crate::ctypes::c_char; 9usize], +pub release: [crate::ctypes::c_char; 9usize], +pub version: [crate::ctypes::c_char; 9usize], +pub machine: [crate::ctypes::c_char; 9usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct old_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct new_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +pub domainname: [crate::ctypes::c_char; 65usize], +} +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const SI_LOAD_SHIFT: u32 = 16; +pub const __OLD_UTS_LEN: u32 = 8; +pub const __NEW_UTS_LEN: u32 = 64; +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/errno.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/errno.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/errno.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,137 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub const EPERM: u32 = 1; +pub const ENOENT: u32 = 2; +pub const ESRCH: u32 = 3; +pub const EINTR: u32 = 4; +pub const EIO: u32 = 5; +pub const ENXIO: u32 = 6; +pub const E2BIG: u32 = 7; +pub const ENOEXEC: u32 = 8; +pub const EBADF: u32 = 9; +pub const ECHILD: u32 = 10; +pub const EAGAIN: u32 = 11; +pub const ENOMEM: u32 = 12; +pub const EACCES: u32 = 13; +pub const EFAULT: u32 = 14; +pub const ENOTBLK: u32 = 15; +pub const EBUSY: u32 = 16; +pub const EEXIST: u32 = 17; +pub const EXDEV: u32 = 18; +pub const ENODEV: u32 = 19; +pub const ENOTDIR: u32 = 20; +pub const EISDIR: u32 = 21; +pub const EINVAL: u32 = 22; +pub const ENFILE: u32 = 23; +pub const EMFILE: u32 = 24; +pub const ENOTTY: u32 = 25; +pub const ETXTBSY: u32 = 26; +pub const EFBIG: u32 = 27; +pub const ENOSPC: u32 = 28; +pub const ESPIPE: u32 = 29; +pub const EROFS: u32 = 30; +pub const EMLINK: u32 = 31; +pub const EPIPE: u32 = 32; +pub const EDOM: u32 = 33; +pub const ERANGE: u32 = 34; +pub const ENOMSG: u32 = 35; +pub const EIDRM: u32 = 36; +pub const ECHRNG: u32 = 37; +pub const EL2NSYNC: u32 = 38; +pub const EL3HLT: u32 = 39; +pub const EL3RST: u32 = 40; +pub const ELNRNG: u32 = 41; +pub const EUNATCH: u32 = 42; +pub const ENOCSI: u32 = 43; +pub const EL2HLT: u32 = 44; +pub const EDEADLK: u32 = 45; +pub const ENOLCK: u32 = 46; +pub const EBADE: u32 = 50; +pub const EBADR: u32 = 51; +pub const EXFULL: u32 = 52; +pub const ENOANO: u32 = 53; +pub const EBADRQC: u32 = 54; +pub const EBADSLT: u32 = 55; +pub const EDEADLOCK: u32 = 56; +pub const EBFONT: u32 = 59; +pub const ENOSTR: u32 = 60; +pub const ENODATA: u32 = 61; +pub const ETIME: u32 = 62; +pub const ENOSR: u32 = 63; +pub const ENONET: u32 = 64; +pub const ENOPKG: u32 = 65; +pub const EREMOTE: u32 = 66; +pub const ENOLINK: u32 = 67; +pub const EADV: u32 = 68; +pub const ESRMNT: u32 = 69; +pub const ECOMM: u32 = 70; +pub const EPROTO: u32 = 71; +pub const EDOTDOT: u32 = 73; +pub const EMULTIHOP: u32 = 74; +pub const EBADMSG: u32 = 77; +pub const ENAMETOOLONG: u32 = 78; +pub const EOVERFLOW: u32 = 79; +pub const ENOTUNIQ: u32 = 80; +pub const EBADFD: u32 = 81; +pub const EREMCHG: u32 = 82; +pub const ELIBACC: u32 = 83; +pub const ELIBBAD: u32 = 84; +pub const ELIBSCN: u32 = 85; +pub const ELIBMAX: u32 = 86; +pub const ELIBEXEC: u32 = 87; +pub const EILSEQ: u32 = 88; +pub const ENOSYS: u32 = 89; +pub const ELOOP: u32 = 90; +pub const ERESTART: u32 = 91; +pub const ESTRPIPE: u32 = 92; +pub const ENOTEMPTY: u32 = 93; +pub const EUSERS: u32 = 94; +pub const ENOTSOCK: u32 = 95; +pub const EDESTADDRREQ: u32 = 96; +pub const EMSGSIZE: u32 = 97; +pub const EPROTOTYPE: u32 = 98; +pub const ENOPROTOOPT: u32 = 99; +pub const EPROTONOSUPPORT: u32 = 120; +pub const ESOCKTNOSUPPORT: u32 = 121; +pub const EOPNOTSUPP: u32 = 122; +pub const EPFNOSUPPORT: u32 = 123; +pub const EAFNOSUPPORT: u32 = 124; +pub const EADDRINUSE: u32 = 125; +pub const EADDRNOTAVAIL: u32 = 126; +pub const ENETDOWN: u32 = 127; +pub const ENETUNREACH: u32 = 128; +pub const ENETRESET: u32 = 129; +pub const ECONNABORTED: u32 = 130; +pub const ECONNRESET: u32 = 131; +pub const ENOBUFS: u32 = 132; +pub const EISCONN: u32 = 133; +pub const ENOTCONN: u32 = 134; +pub const EUCLEAN: u32 = 135; +pub const ENOTNAM: u32 = 137; +pub const ENAVAIL: u32 = 138; +pub const EISNAM: u32 = 139; +pub const EREMOTEIO: u32 = 140; +pub const EINIT: u32 = 141; +pub const EREMDEV: u32 = 142; +pub const ESHUTDOWN: u32 = 143; +pub const ETOOMANYREFS: u32 = 144; +pub const ETIMEDOUT: u32 = 145; +pub const ECONNREFUSED: u32 = 146; +pub const EHOSTDOWN: u32 = 147; +pub const EHOSTUNREACH: u32 = 148; +pub const EWOULDBLOCK: u32 = 11; +pub const EALREADY: u32 = 149; +pub const EINPROGRESS: u32 = 150; +pub const ESTALE: u32 = 151; +pub const ECANCELED: u32 = 158; +pub const ENOMEDIUM: u32 = 159; +pub const EMEDIUMTYPE: u32 = 160; +pub const ENOKEY: u32 = 161; +pub const EKEYEXPIRED: u32 = 162; +pub const EKEYREVOKED: u32 = 163; +pub const EKEYREJECTED: u32 = 164; +pub const EOWNERDEAD: u32 = 165; +pub const ENOTRECOVERABLE: u32 = 166; +pub const ERFKILL: u32 = 167; +pub const EHWPOISON: u32 = 168; +pub const EDQUOT: u32 = 1133; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/general.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/general.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/general.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/general.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,3017 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_sighandler_t = ::core::option::Option; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type cap_user_header_t = *mut __user_cap_header_struct; +pub type cap_user_data_t = *mut __user_cap_data_struct; +pub type __kernel_rwf_t = crate::ctypes::c_int; +pub type old_sigset_t = crate::ctypes::c_ulong; +pub type __signalfn_t = ::core::option::Option; +pub type __sighandler_t = __signalfn_t; +pub type __restorefn_t = ::core::option::Option; +pub type __sigrestore_t = __restorefn_t; +pub type stack_t = sigaltstack; +pub type sigval_t = sigval; +pub type siginfo_t = siginfo; +pub type sigevent_t = sigevent; +pub type cc_t = crate::ctypes::c_uchar; +pub type speed_t = crate::ctypes::c_uint; +pub type tcflag_t = crate::ctypes::c_uint; +pub type fsid_t = __kernel_fsid_t; +pub type __fsword_t = __u32; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fd_set { +pub fds_bits: [crate::ctypes::c_ulong; 16usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fsid_t { +pub val: [crate::ctypes::c_int; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_header_struct { +pub version: __u32, +pub pid: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_data_struct { +pub effective: __u32, +pub permitted: __u32, +pub inheritable: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data { +pub magic_etc: __le32, +pub data: [vfs_cap_data__bindgen_ty_1; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data { +pub magic_etc: __le32, +pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], +pub rootid: __le32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct f_owner_ex { +pub type_: crate::ctypes::c_int, +pub pid: __kernel_pid_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_off_t, +pub l_len: __kernel_off_t, +pub l_pid: __kernel_pid_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock64 { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_loff_t, +pub l_len: __kernel_loff_t, +pub l_pid: __kernel_pid_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct open_how { +pub flags: __u64, +pub mode: __u64, +pub resolve: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct epoll_event { +pub events: __poll_t, +pub data: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct futex_waitv { +pub val: __u64, +pub uaddr: __u64, +pub flags: __u32, +pub __reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct robust_list { +pub next: *mut robust_list, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct robust_list_head { +pub list: robust_list, +pub futex_offset: crate::ctypes::c_long, +pub list_op_pending: *mut robust_list, +} +#[repr(C)] +#[derive(Debug)] +pub struct inotify_event { +pub wd: __s32, +pub mask: __u32, +pub cookie: __u32, +pub len: __u32, +pub name: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct pollfd { +pub fd: crate::ctypes::c_int, +pub events: crate::ctypes::c_short, +pub revents: crate::ctypes::c_short, +} +#[repr(C)] +#[derive(Debug)] +pub struct rand_pool_info { +pub entropy_count: crate::ctypes::c_int, +pub buf_size: crate::ctypes::c_int, +pub buf: __IncompleteArrayField<__u32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct timeval { +pub tv_sec: __kernel_old_time_t, +pub tv_usec: __kernel_suseconds_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct itimerspec { +pub it_interval: timespec, +pub it_value: timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct itimerval { +pub it_interval: timeval, +pub it_value: timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct timezone { +pub tz_minuteswest: crate::ctypes::c_int, +pub tz_dsttime: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rusage { +pub ru_utime: __kernel_old_timeval, +pub ru_stime: __kernel_old_timeval, +pub ru_maxrss: __kernel_long_t, +pub ru_ixrss: __kernel_long_t, +pub ru_idrss: __kernel_long_t, +pub ru_isrss: __kernel_long_t, +pub ru_minflt: __kernel_long_t, +pub ru_majflt: __kernel_long_t, +pub ru_nswap: __kernel_long_t, +pub ru_inblock: __kernel_long_t, +pub ru_oublock: __kernel_long_t, +pub ru_msgsnd: __kernel_long_t, +pub ru_msgrcv: __kernel_long_t, +pub ru_nsignals: __kernel_long_t, +pub ru_nvcsw: __kernel_long_t, +pub ru_nivcsw: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rlimit { +pub rlim_cur: __kernel_ulong_t, +pub rlim_max: __kernel_ulong_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rlimit64 { +pub rlim_cur: __u64, +pub rlim_max: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct clone_args { +pub flags: __u64, +pub pidfd: __u64, +pub child_tid: __u64, +pub parent_tid: __u64, +pub exit_signal: __u64, +pub stack: __u64, +pub stack_size: __u64, +pub tls: __u64, +pub set_tid: __u64, +pub set_tid_size: __u64, +pub cgroup: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sigset_t { +pub sig: [crate::ctypes::c_ulong; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sigaction { +pub sa_flags: crate::ctypes::c_uint, +pub sa_handler: __sighandler_t, +pub sa_mask: sigset_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sigaltstack { +pub ss_sp: *mut crate::ctypes::c_void, +pub ss_size: __kernel_size_t, +pub ss_flags: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_1 { +pub _pid: __kernel_pid_t, +pub _uid: __kernel_uid32_t, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __sifields__bindgen_ty_2 { +pub _tid: __kernel_timer_t, +pub _overrun: crate::ctypes::c_int, +pub _sigval: sigval_t, +pub _sys_private: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __sifields__bindgen_ty_3 { +pub _pid: __kernel_pid_t, +pub _uid: __kernel_uid32_t, +pub _sigval: sigval_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_4 { +pub _pid: __kernel_pid_t, +pub _uid: __kernel_uid32_t, +pub _status: crate::ctypes::c_int, +pub _utime: __kernel_clock_t, +pub _stime: __kernel_clock_t, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __sifields__bindgen_ty_5 { +pub _addr: *mut crate::ctypes::c_void, +pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { +pub _dummy_bnd: [crate::ctypes::c_char; 8usize], +pub _lower: *mut crate::ctypes::c_void, +pub _upper: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 { +pub _dummy_pkey: [crate::ctypes::c_char; 8usize], +pub _pkey: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { +pub _data: crate::ctypes::c_ulong, +pub _type: __u32, +pub _flags: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_6 { +pub _band: crate::ctypes::c_long, +pub _fd: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_7 { +pub _call_addr: *mut crate::ctypes::c_void, +pub _syscall: crate::ctypes::c_int, +pub _arch: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo { +pub __bindgen_anon_1: siginfo__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { +pub si_signo: crate::ctypes::c_int, +pub si_code: crate::ctypes::c_int, +pub si_errno: crate::ctypes::c_int, +pub _sifields: __sifields, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sigevent { +pub sigev_value: sigval_t, +pub sigev_signo: crate::ctypes::c_int, +pub sigev_notify: crate::ctypes::c_int, +pub _sigev_un: sigevent__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { +pub _function: ::core::option::Option, +pub _attribute: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statx_timestamp { +pub tv_sec: __s64, +pub tv_nsec: __u32, +pub __reserved: __s32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statx { +pub stx_mask: __u32, +pub stx_blksize: __u32, +pub stx_attributes: __u64, +pub stx_nlink: __u32, +pub stx_uid: __u32, +pub stx_gid: __u32, +pub stx_mode: __u16, +pub __spare0: [__u16; 1usize], +pub stx_ino: __u64, +pub stx_size: __u64, +pub stx_blocks: __u64, +pub stx_attributes_mask: __u64, +pub stx_atime: statx_timestamp, +pub stx_btime: statx_timestamp, +pub stx_ctime: statx_timestamp, +pub stx_mtime: statx_timestamp, +pub stx_rdev_major: __u32, +pub stx_rdev_minor: __u32, +pub stx_dev_major: __u32, +pub stx_dev_minor: __u32, +pub stx_mnt_id: __u64, +pub stx_dio_mem_align: __u32, +pub stx_dio_offset_align: __u32, +pub __spare3: [__u64; 12usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct termios { +pub c_iflag: tcflag_t, +pub c_oflag: tcflag_t, +pub c_cflag: tcflag_t, +pub c_lflag: tcflag_t, +pub c_line: cc_t, +pub c_cc: [cc_t; 23usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct termios2 { +pub c_iflag: tcflag_t, +pub c_oflag: tcflag_t, +pub c_cflag: tcflag_t, +pub c_lflag: tcflag_t, +pub c_line: cc_t, +pub c_cc: [cc_t; 23usize], +pub c_ispeed: speed_t, +pub c_ospeed: speed_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ktermios { +pub c_iflag: tcflag_t, +pub c_oflag: tcflag_t, +pub c_cflag: tcflag_t, +pub c_lflag: tcflag_t, +pub c_line: cc_t, +pub c_cc: [cc_t; 23usize], +pub c_ispeed: speed_t, +pub c_ospeed: speed_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sgttyb { +pub sg_ispeed: crate::ctypes::c_char, +pub sg_ospeed: crate::ctypes::c_char, +pub sg_erase: crate::ctypes::c_char, +pub sg_kill: crate::ctypes::c_char, +pub sg_flags: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tchars { +pub t_intrc: crate::ctypes::c_char, +pub t_quitc: crate::ctypes::c_char, +pub t_startc: crate::ctypes::c_char, +pub t_stopc: crate::ctypes::c_char, +pub t_eofc: crate::ctypes::c_char, +pub t_brkc: crate::ctypes::c_char, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ltchars { +pub t_suspc: crate::ctypes::c_char, +pub t_dsuspc: crate::ctypes::c_char, +pub t_rprntc: crate::ctypes::c_char, +pub t_flushc: crate::ctypes::c_char, +pub t_werasc: crate::ctypes::c_char, +pub t_lnextc: crate::ctypes::c_char, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct winsize { +pub ws_row: crate::ctypes::c_ushort, +pub ws_col: crate::ctypes::c_ushort, +pub ws_xpixel: crate::ctypes::c_ushort, +pub ws_ypixel: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct termio { +pub c_iflag: crate::ctypes::c_ushort, +pub c_oflag: crate::ctypes::c_ushort, +pub c_cflag: crate::ctypes::c_ushort, +pub c_lflag: crate::ctypes::c_ushort, +pub c_line: crate::ctypes::c_char, +pub c_cc: [crate::ctypes::c_uchar; 23usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub iov_base: *mut crate::ctypes::c_void, +pub iov_len: __kernel_size_t, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct uffd_msg { +pub event: __u8, +pub reserved1: __u8, +pub reserved2: __u16, +pub reserved3: __u32, +pub arg: uffd_msg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { +pub flags: __u64, +pub address: __u64, +pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { +pub ufd: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { +pub from: __u64, +pub to: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { +pub start: __u64, +pub end: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { +pub reserved1: __u64, +pub reserved2: __u64, +pub reserved3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_api { +pub api: __u64, +pub features: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_range { +pub start: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_register { +pub range: uffdio_range, +pub mode: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_copy { +pub dst: __u64, +pub src: __u64, +pub len: __u64, +pub mode: __u64, +pub copy: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_zeropage { +pub range: uffdio_range, +pub mode: __u64, +pub zeropage: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_writeprotect { +pub range: uffdio_range, +pub mode: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_continue { +pub range: uffdio_range, +pub mode: __u64, +pub mapped: __s64, +} +#[repr(C)] +#[derive(Debug)] +pub struct linux_dirent64 { +pub d_ino: crate::ctypes::c_ulong, +pub d_off: crate::ctypes::c_long, +pub d_reclen: __u16, +pub d_type: __u8, +pub d_name: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat { +pub st_dev: crate::ctypes::c_uint, +pub st_pad0: [crate::ctypes::c_uint; 3usize], +pub st_ino: crate::ctypes::c_ulong, +pub st_mode: __kernel_mode_t, +pub st_nlink: __u32, +pub st_uid: __kernel_uid32_t, +pub st_gid: __kernel_gid32_t, +pub st_rdev: crate::ctypes::c_uint, +pub st_pad1: [crate::ctypes::c_uint; 3usize], +pub st_size: crate::ctypes::c_long, +pub st_atime: crate::ctypes::c_uint, +pub st_atime_nsec: crate::ctypes::c_uint, +pub st_mtime: crate::ctypes::c_uint, +pub st_mtime_nsec: crate::ctypes::c_uint, +pub st_ctime: crate::ctypes::c_uint, +pub st_ctime_nsec: crate::ctypes::c_uint, +pub st_blksize: crate::ctypes::c_uint, +pub st_pad2: crate::ctypes::c_uint, +pub st_blocks: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs { +pub f_type: crate::ctypes::c_long, +pub f_bsize: crate::ctypes::c_long, +pub f_frsize: crate::ctypes::c_long, +pub f_blocks: crate::ctypes::c_long, +pub f_bfree: crate::ctypes::c_long, +pub f_files: crate::ctypes::c_long, +pub f_ffree: crate::ctypes::c_long, +pub f_bavail: crate::ctypes::c_long, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: crate::ctypes::c_long, +pub f_flags: crate::ctypes::c_long, +pub f_spare: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs64 { +pub f_type: crate::ctypes::c_long, +pub f_bsize: crate::ctypes::c_long, +pub f_frsize: crate::ctypes::c_long, +pub f_blocks: crate::ctypes::c_long, +pub f_bfree: crate::ctypes::c_long, +pub f_files: crate::ctypes::c_long, +pub f_ffree: crate::ctypes::c_long, +pub f_bavail: crate::ctypes::c_long, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: crate::ctypes::c_long, +pub f_flags: crate::ctypes::c_long, +pub f_spare: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct compat_statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_frsize: __u32, +pub __pad: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_bavail: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct user_desc { +pub entry_number: crate::ctypes::c_uint, +pub base_addr: crate::ctypes::c_uint, +pub limit: crate::ctypes::c_uint, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub __bindgen_padding_0: [u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct kernel_sigset_t { +pub sig: [crate::ctypes::c_ulong; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct kernel_sigaction { +pub sa_handler_kernel: __kernel_sighandler_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_mask: kernel_sigset_t, +} +pub const LINUX_VERSION_CODE: u32 = 394240; +pub const LINUX_VERSION_MAJOR: u32 = 6; +pub const LINUX_VERSION_PATCHLEVEL: u32 = 4; +pub const LINUX_VERSION_SUBLEVEL: u32 = 0; +pub const AT_SYSINFO_EHDR: u32 = 33; +pub const AT_VECTOR_SIZE_ARCH: u32 = 1; +pub const AT_NULL: u32 = 0; +pub const AT_IGNORE: u32 = 1; +pub const AT_EXECFD: u32 = 2; +pub const AT_PHDR: u32 = 3; +pub const AT_PHENT: u32 = 4; +pub const AT_PHNUM: u32 = 5; +pub const AT_PAGESZ: u32 = 6; +pub const AT_BASE: u32 = 7; +pub const AT_FLAGS: u32 = 8; +pub const AT_ENTRY: u32 = 9; +pub const AT_NOTELF: u32 = 10; +pub const AT_UID: u32 = 11; +pub const AT_EUID: u32 = 12; +pub const AT_GID: u32 = 13; +pub const AT_EGID: u32 = 14; +pub const AT_PLATFORM: u32 = 15; +pub const AT_HWCAP: u32 = 16; +pub const AT_CLKTCK: u32 = 17; +pub const AT_SECURE: u32 = 23; +pub const AT_BASE_PLATFORM: u32 = 24; +pub const AT_RANDOM: u32 = 25; +pub const AT_HWCAP2: u32 = 26; +pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; +pub const AT_RSEQ_ALIGN: u32 = 28; +pub const AT_EXECFN: u32 = 31; +pub const AT_MINSIGSTKSZ: u32 = 51; +pub const __FD_SETSIZE: u32 = 1024; +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; +pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; +pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; +pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; +pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; +pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; +pub const VFS_CAP_REVISION_SHIFT: u32 = 24; +pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; +pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; +pub const VFS_CAP_REVISION_1: u32 = 16777216; +pub const VFS_CAP_U32_1: u32 = 1; +pub const VFS_CAP_REVISION_2: u32 = 33554432; +pub const VFS_CAP_U32_2: u32 = 2; +pub const VFS_CAP_REVISION_3: u32 = 50331648; +pub const VFS_CAP_U32_3: u32 = 2; +pub const VFS_CAP_U32: u32 = 2; +pub const VFS_CAP_REVISION: u32 = 50331648; +pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S: u32 = 1; +pub const CAP_CHOWN: u32 = 0; +pub const CAP_DAC_OVERRIDE: u32 = 1; +pub const CAP_DAC_READ_SEARCH: u32 = 2; +pub const CAP_FOWNER: u32 = 3; +pub const CAP_FSETID: u32 = 4; +pub const CAP_KILL: u32 = 5; +pub const CAP_SETGID: u32 = 6; +pub const CAP_SETUID: u32 = 7; +pub const CAP_SETPCAP: u32 = 8; +pub const CAP_LINUX_IMMUTABLE: u32 = 9; +pub const CAP_NET_BIND_SERVICE: u32 = 10; +pub const CAP_NET_BROADCAST: u32 = 11; +pub const CAP_NET_ADMIN: u32 = 12; +pub const CAP_NET_RAW: u32 = 13; +pub const CAP_IPC_LOCK: u32 = 14; +pub const CAP_IPC_OWNER: u32 = 15; +pub const CAP_SYS_MODULE: u32 = 16; +pub const CAP_SYS_RAWIO: u32 = 17; +pub const CAP_SYS_CHROOT: u32 = 18; +pub const CAP_SYS_PTRACE: u32 = 19; +pub const CAP_SYS_PACCT: u32 = 20; +pub const CAP_SYS_ADMIN: u32 = 21; +pub const CAP_SYS_BOOT: u32 = 22; +pub const CAP_SYS_NICE: u32 = 23; +pub const CAP_SYS_RESOURCE: u32 = 24; +pub const CAP_SYS_TIME: u32 = 25; +pub const CAP_SYS_TTY_CONFIG: u32 = 26; +pub const CAP_MKNOD: u32 = 27; +pub const CAP_LEASE: u32 = 28; +pub const CAP_AUDIT_WRITE: u32 = 29; +pub const CAP_AUDIT_CONTROL: u32 = 30; +pub const CAP_SETFCAP: u32 = 31; +pub const CAP_MAC_OVERRIDE: u32 = 32; +pub const CAP_MAC_ADMIN: u32 = 33; +pub const CAP_SYSLOG: u32 = 34; +pub const CAP_WAKE_ALARM: u32 = 35; +pub const CAP_BLOCK_SUSPEND: u32 = 36; +pub const CAP_AUDIT_READ: u32 = 37; +pub const CAP_PERFMON: u32 = 38; +pub const CAP_BPF: u32 = 39; +pub const CAP_CHECKPOINT_RESTORE: u32 = 40; +pub const CAP_LAST_CAP: u32 = 40; +pub const O_APPEND: u32 = 8; +pub const O_DSYNC: u32 = 16; +pub const O_NONBLOCK: u32 = 128; +pub const O_CREAT: u32 = 256; +pub const O_TRUNC: u32 = 512; +pub const O_EXCL: u32 = 1024; +pub const O_NOCTTY: u32 = 2048; +pub const FASYNC: u32 = 4096; +pub const O_LARGEFILE: u32 = 8192; +pub const __O_SYNC: u32 = 16384; +pub const O_SYNC: u32 = 16400; +pub const O_DIRECT: u32 = 32768; +pub const F_GETLK: u32 = 14; +pub const F_SETLK: u32 = 6; +pub const F_SETLKW: u32 = 7; +pub const F_SETOWN: u32 = 24; +pub const F_GETOWN: u32 = 23; +pub const O_ACCMODE: u32 = 3; +pub const O_RDONLY: u32 = 0; +pub const O_WRONLY: u32 = 1; +pub const O_RDWR: u32 = 2; +pub const O_DIRECTORY: u32 = 65536; +pub const O_NOFOLLOW: u32 = 131072; +pub const O_NOATIME: u32 = 262144; +pub const O_CLOEXEC: u32 = 524288; +pub const O_PATH: u32 = 2097152; +pub const __O_TMPFILE: u32 = 4194304; +pub const O_TMPFILE: u32 = 4259840; +pub const O_NDELAY: u32 = 128; +pub const F_DUPFD: u32 = 0; +pub const F_GETFD: u32 = 1; +pub const F_SETFD: u32 = 2; +pub const F_GETFL: u32 = 3; +pub const F_SETFL: u32 = 4; +pub const F_SETSIG: u32 = 10; +pub const F_GETSIG: u32 = 11; +pub const F_SETOWN_EX: u32 = 15; +pub const F_GETOWN_EX: u32 = 16; +pub const F_GETOWNER_UIDS: u32 = 17; +pub const F_OFD_GETLK: u32 = 36; +pub const F_OFD_SETLK: u32 = 37; +pub const F_OFD_SETLKW: u32 = 38; +pub const F_OWNER_TID: u32 = 0; +pub const F_OWNER_PID: u32 = 1; +pub const F_OWNER_PGRP: u32 = 2; +pub const FD_CLOEXEC: u32 = 1; +pub const F_RDLCK: u32 = 0; +pub const F_WRLCK: u32 = 1; +pub const F_UNLCK: u32 = 2; +pub const F_EXLCK: u32 = 4; +pub const F_SHLCK: u32 = 8; +pub const LOCK_SH: u32 = 1; +pub const LOCK_EX: u32 = 2; +pub const LOCK_NB: u32 = 4; +pub const LOCK_UN: u32 = 8; +pub const LOCK_MAND: u32 = 32; +pub const LOCK_READ: u32 = 64; +pub const LOCK_WRITE: u32 = 128; +pub const LOCK_RW: u32 = 192; +pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; +pub const RESOLVE_NO_XDEV: u32 = 1; +pub const RESOLVE_NO_MAGICLINKS: u32 = 2; +pub const RESOLVE_NO_SYMLINKS: u32 = 4; +pub const RESOLVE_BENEATH: u32 = 8; +pub const RESOLVE_IN_ROOT: u32 = 16; +pub const RESOLVE_CACHED: u32 = 32; +pub const F_SETLEASE: u32 = 1024; +pub const F_GETLEASE: u32 = 1025; +pub const F_CANCELLK: u32 = 1029; +pub const F_DUPFD_CLOEXEC: u32 = 1030; +pub const F_NOTIFY: u32 = 1026; +pub const F_SETPIPE_SZ: u32 = 1031; +pub const F_GETPIPE_SZ: u32 = 1032; +pub const F_ADD_SEALS: u32 = 1033; +pub const F_GET_SEALS: u32 = 1034; +pub const F_SEAL_SEAL: u32 = 1; +pub const F_SEAL_SHRINK: u32 = 2; +pub const F_SEAL_GROW: u32 = 4; +pub const F_SEAL_WRITE: u32 = 8; +pub const F_SEAL_FUTURE_WRITE: u32 = 16; +pub const F_SEAL_EXEC: u32 = 32; +pub const F_GET_RW_HINT: u32 = 1035; +pub const F_SET_RW_HINT: u32 = 1036; +pub const F_GET_FILE_RW_HINT: u32 = 1037; +pub const F_SET_FILE_RW_HINT: u32 = 1038; +pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; +pub const RWH_WRITE_LIFE_NONE: u32 = 1; +pub const RWH_WRITE_LIFE_SHORT: u32 = 2; +pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; +pub const RWH_WRITE_LIFE_LONG: u32 = 4; +pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; +pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; +pub const DN_ACCESS: u32 = 1; +pub const DN_MODIFY: u32 = 2; +pub const DN_CREATE: u32 = 4; +pub const DN_DELETE: u32 = 8; +pub const DN_RENAME: u32 = 16; +pub const DN_ATTRIB: u32 = 32; +pub const DN_MULTISHOT: u32 = 2147483648; +pub const AT_FDCWD: i32 = -100; +pub const AT_SYMLINK_NOFOLLOW: u32 = 256; +pub const AT_EACCESS: u32 = 512; +pub const AT_REMOVEDIR: u32 = 512; +pub const AT_SYMLINK_FOLLOW: u32 = 1024; +pub const AT_NO_AUTOMOUNT: u32 = 2048; +pub const AT_EMPTY_PATH: u32 = 4096; +pub const AT_STATX_SYNC_TYPE: u32 = 24576; +pub const AT_STATX_SYNC_AS_STAT: u32 = 0; +pub const AT_STATX_FORCE_SYNC: u32 = 8192; +pub const AT_STATX_DONT_SYNC: u32 = 16384; +pub const AT_RECURSIVE: u32 = 32768; +pub const EPOLL_CLOEXEC: u32 = 524288; +pub const EPOLL_CTL_ADD: u32 = 1; +pub const EPOLL_CTL_DEL: u32 = 2; +pub const EPOLL_CTL_MOD: u32 = 3; +pub const POSIX_FADV_NORMAL: u32 = 0; +pub const POSIX_FADV_RANDOM: u32 = 1; +pub const POSIX_FADV_SEQUENTIAL: u32 = 2; +pub const POSIX_FADV_WILLNEED: u32 = 3; +pub const POSIX_FADV_DONTNEED: u32 = 4; +pub const POSIX_FADV_NOREUSE: u32 = 5; +pub const FALLOC_FL_KEEP_SIZE: u32 = 1; +pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; +pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; +pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; +pub const FALLOC_FL_ZERO_RANGE: u32 = 16; +pub const FALLOC_FL_INSERT_RANGE: u32 = 32; +pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 536805376; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const OPEN_TREE_CLOEXEC: u32 = 524288; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const FUTEX_WAIT: u32 = 0; +pub const FUTEX_WAKE: u32 = 1; +pub const FUTEX_FD: u32 = 2; +pub const FUTEX_REQUEUE: u32 = 3; +pub const FUTEX_CMP_REQUEUE: u32 = 4; +pub const FUTEX_WAKE_OP: u32 = 5; +pub const FUTEX_LOCK_PI: u32 = 6; +pub const FUTEX_UNLOCK_PI: u32 = 7; +pub const FUTEX_TRYLOCK_PI: u32 = 8; +pub const FUTEX_WAIT_BITSET: u32 = 9; +pub const FUTEX_WAKE_BITSET: u32 = 10; +pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; +pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; +pub const FUTEX_LOCK_PI2: u32 = 13; +pub const FUTEX_PRIVATE_FLAG: u32 = 128; +pub const FUTEX_CLOCK_REALTIME: u32 = 256; +pub const FUTEX_CMD_MASK: i32 = -385; +pub const FUTEX_WAIT_PRIVATE: u32 = 128; +pub const FUTEX_WAKE_PRIVATE: u32 = 129; +pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; +pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; +pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; +pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; +pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; +pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; +pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; +pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; +pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; +pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; +pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; +pub const FUTEX_32: u32 = 2; +pub const FUTEX_WAITV_MAX: u32 = 128; +pub const FUTEX_WAITERS: u32 = 2147483648; +pub const FUTEX_OWNER_DIED: u32 = 1073741824; +pub const FUTEX_TID_MASK: u32 = 1073741823; +pub const ROBUST_LIST_LIMIT: u32 = 2048; +pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; +pub const FUTEX_OP_SET: u32 = 0; +pub const FUTEX_OP_ADD: u32 = 1; +pub const FUTEX_OP_OR: u32 = 2; +pub const FUTEX_OP_ANDN: u32 = 3; +pub const FUTEX_OP_XOR: u32 = 4; +pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; +pub const FUTEX_OP_CMP_EQ: u32 = 0; +pub const FUTEX_OP_CMP_NE: u32 = 1; +pub const FUTEX_OP_CMP_LT: u32 = 2; +pub const FUTEX_OP_CMP_LE: u32 = 3; +pub const FUTEX_OP_CMP_GT: u32 = 4; +pub const FUTEX_OP_CMP_GE: u32 = 5; +pub const IN_ACCESS: u32 = 1; +pub const IN_MODIFY: u32 = 2; +pub const IN_ATTRIB: u32 = 4; +pub const IN_CLOSE_WRITE: u32 = 8; +pub const IN_CLOSE_NOWRITE: u32 = 16; +pub const IN_OPEN: u32 = 32; +pub const IN_MOVED_FROM: u32 = 64; +pub const IN_MOVED_TO: u32 = 128; +pub const IN_CREATE: u32 = 256; +pub const IN_DELETE: u32 = 512; +pub const IN_DELETE_SELF: u32 = 1024; +pub const IN_MOVE_SELF: u32 = 2048; +pub const IN_UNMOUNT: u32 = 8192; +pub const IN_Q_OVERFLOW: u32 = 16384; +pub const IN_IGNORED: u32 = 32768; +pub const IN_CLOSE: u32 = 24; +pub const IN_MOVE: u32 = 192; +pub const IN_ONLYDIR: u32 = 16777216; +pub const IN_DONT_FOLLOW: u32 = 33554432; +pub const IN_EXCL_UNLINK: u32 = 67108864; +pub const IN_MASK_CREATE: u32 = 268435456; +pub const IN_MASK_ADD: u32 = 536870912; +pub const IN_ISDIR: u32 = 1073741824; +pub const IN_ONESHOT: u32 = 2147483648; +pub const IN_ALL_EVENTS: u32 = 4095; +pub const IN_CLOEXEC: u32 = 524288; +pub const IN_NONBLOCK: u32 = 128; +pub const ADFS_SUPER_MAGIC: u32 = 44533; +pub const AFFS_SUPER_MAGIC: u32 = 44543; +pub const AFS_SUPER_MAGIC: u32 = 1397113167; +pub const AUTOFS_SUPER_MAGIC: u32 = 391; +pub const CEPH_SUPER_MAGIC: u32 = 12805120; +pub const CODA_SUPER_MAGIC: u32 = 1937076805; +pub const CRAMFS_MAGIC: u32 = 684539205; +pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; +pub const DEBUGFS_MAGIC: u32 = 1684170528; +pub const SECURITYFS_MAGIC: u32 = 1935894131; +pub const SELINUX_MAGIC: u32 = 4185718668; +pub const SMACK_MAGIC: u32 = 1128357203; +pub const RAMFS_MAGIC: u32 = 2240043254; +pub const TMPFS_MAGIC: u32 = 16914836; +pub const HUGETLBFS_MAGIC: u32 = 2508478710; +pub const SQUASHFS_MAGIC: u32 = 1936814952; +pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; +pub const EFS_SUPER_MAGIC: u32 = 4278867; +pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; +pub const EXT2_SUPER_MAGIC: u32 = 61267; +pub const EXT3_SUPER_MAGIC: u32 = 61267; +pub const XENFS_SUPER_MAGIC: u32 = 2881100148; +pub const EXT4_SUPER_MAGIC: u32 = 61267; +pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; +pub const NILFS_SUPER_MAGIC: u32 = 13364; +pub const F2FS_SUPER_MAGIC: u32 = 4076150800; +pub const HPFS_SUPER_MAGIC: u32 = 4187351113; +pub const ISOFS_SUPER_MAGIC: u32 = 38496; +pub const JFFS2_SUPER_MAGIC: u32 = 29366; +pub const XFS_SUPER_MAGIC: u32 = 1481003842; +pub const PSTOREFS_MAGIC: u32 = 1634035564; +pub const EFIVARFS_MAGIC: u32 = 3730735588; +pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; +pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; +pub const FUSE_SUPER_MAGIC: u32 = 1702057286; +pub const MINIX_SUPER_MAGIC: u32 = 4991; +pub const MINIX_SUPER_MAGIC2: u32 = 5007; +pub const MINIX2_SUPER_MAGIC: u32 = 9320; +pub const MINIX2_SUPER_MAGIC2: u32 = 9336; +pub const MINIX3_SUPER_MAGIC: u32 = 19802; +pub const MSDOS_SUPER_MAGIC: u32 = 19780; +pub const EXFAT_SUPER_MAGIC: u32 = 538032816; +pub const NCP_SUPER_MAGIC: u32 = 22092; +pub const NFS_SUPER_MAGIC: u32 = 26985; +pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; +pub const OPENPROM_SUPER_MAGIC: u32 = 40865; +pub const QNX4_SUPER_MAGIC: u32 = 47; +pub const QNX6_SUPER_MAGIC: u32 = 1746473250; +pub const AFS_FS_MAGIC: u32 = 1799439955; +pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; +pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9] = b"ReIsErFs\0"; +pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr2Fs\0"; +pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr3Fs\0"; +pub const SMB_SUPER_MAGIC: u32 = 20859; +pub const CIFS_SUPER_MAGIC: u32 = 4283649346; +pub const SMB2_SUPER_MAGIC: u32 = 4266872130; +pub const CGROUP_SUPER_MAGIC: u32 = 2613483; +pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; +pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; +pub const STACK_END_MAGIC: u32 = 1470918301; +pub const TRACEFS_MAGIC: u32 = 1953653091; +pub const V9FS_MAGIC: u32 = 16914839; +pub const BDEVFS_MAGIC: u32 = 1650746742; +pub const DAXFS_MAGIC: u32 = 1684300152; +pub const BINFMTFS_MAGIC: u32 = 1112100429; +pub const DEVPTS_SUPER_MAGIC: u32 = 7377; +pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; +pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; +pub const PIPEFS_MAGIC: u32 = 1346981957; +pub const PROC_SUPER_MAGIC: u32 = 40864; +pub const SOCKFS_MAGIC: u32 = 1397703499; +pub const SYSFS_MAGIC: u32 = 1650812274; +pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; +pub const MTD_INODE_FS_MAGIC: u32 = 288389204; +pub const ANON_INODE_FS_MAGIC: u32 = 151263540; +pub const BTRFS_TEST_MAGIC: u32 = 1936880249; +pub const NSFS_MAGIC: u32 = 1853056627; +pub const BPF_FS_MAGIC: u32 = 3405662737; +pub const AAFS_MAGIC: u32 = 1513908720; +pub const ZONEFS_MAGIC: u32 = 1515144787; +pub const UDF_SUPER_MAGIC: u32 = 352400198; +pub const DMA_BUF_MAGIC: u32 = 1145913666; +pub const DEVMEM_MAGIC: u32 = 1162691661; +pub const SECRETMEM_MAGIC: u32 = 1397048141; +pub const PROT_NONE: u32 = 0; +pub const PROT_READ: u32 = 1; +pub const PROT_WRITE: u32 = 2; +pub const PROT_EXEC: u32 = 4; +pub const PROT_SEM: u32 = 16; +pub const PROT_GROWSDOWN: u32 = 16777216; +pub const PROT_GROWSUP: u32 = 33554432; +pub const MAP_TYPE: u32 = 15; +pub const MAP_FIXED: u32 = 16; +pub const MAP_RENAME: u32 = 32; +pub const MAP_AUTOGROW: u32 = 64; +pub const MAP_LOCAL: u32 = 128; +pub const MAP_AUTORSRV: u32 = 256; +pub const MAP_NORESERVE: u32 = 1024; +pub const MAP_ANONYMOUS: u32 = 2048; +pub const MAP_GROWSDOWN: u32 = 4096; +pub const MAP_DENYWRITE: u32 = 8192; +pub const MAP_EXECUTABLE: u32 = 16384; +pub const MAP_LOCKED: u32 = 32768; +pub const MAP_POPULATE: u32 = 65536; +pub const MAP_NONBLOCK: u32 = 131072; +pub const MAP_STACK: u32 = 262144; +pub const MAP_HUGETLB: u32 = 524288; +pub const MAP_FIXED_NOREPLACE: u32 = 1048576; +pub const MS_ASYNC: u32 = 1; +pub const MS_INVALIDATE: u32 = 2; +pub const MS_SYNC: u32 = 4; +pub const MCL_CURRENT: u32 = 1; +pub const MCL_FUTURE: u32 = 2; +pub const MCL_ONFAULT: u32 = 4; +pub const MLOCK_ONFAULT: u32 = 1; +pub const MADV_NORMAL: u32 = 0; +pub const MADV_RANDOM: u32 = 1; +pub const MADV_SEQUENTIAL: u32 = 2; +pub const MADV_WILLNEED: u32 = 3; +pub const MADV_DONTNEED: u32 = 4; +pub const MADV_FREE: u32 = 8; +pub const MADV_REMOVE: u32 = 9; +pub const MADV_DONTFORK: u32 = 10; +pub const MADV_DOFORK: u32 = 11; +pub const MADV_MERGEABLE: u32 = 12; +pub const MADV_UNMERGEABLE: u32 = 13; +pub const MADV_HWPOISON: u32 = 100; +pub const MADV_HUGEPAGE: u32 = 14; +pub const MADV_NOHUGEPAGE: u32 = 15; +pub const MADV_DONTDUMP: u32 = 16; +pub const MADV_DODUMP: u32 = 17; +pub const MADV_WIPEONFORK: u32 = 18; +pub const MADV_KEEPONFORK: u32 = 19; +pub const MADV_COLD: u32 = 20; +pub const MADV_PAGEOUT: u32 = 21; +pub const MADV_POPULATE_READ: u32 = 22; +pub const MADV_POPULATE_WRITE: u32 = 23; +pub const MADV_DONTNEED_LOCKED: u32 = 24; +pub const MADV_COLLAPSE: u32 = 25; +pub const MAP_FILE: u32 = 0; +pub const PKEY_DISABLE_ACCESS: u32 = 1; +pub const PKEY_DISABLE_WRITE: u32 = 2; +pub const PKEY_ACCESS_MASK: u32 = 3; +pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; +pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; +pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; +pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; +pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; +pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; +pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; +pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; +pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; +pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; +pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; +pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; +pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; +pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; +pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; +pub const MREMAP_MAYMOVE: u32 = 1; +pub const MREMAP_FIXED: u32 = 2; +pub const MREMAP_DONTUNMAP: u32 = 4; +pub const OVERCOMMIT_GUESS: u32 = 0; +pub const OVERCOMMIT_ALWAYS: u32 = 1; +pub const OVERCOMMIT_NEVER: u32 = 2; +pub const MAP_SHARED: u32 = 1; +pub const MAP_PRIVATE: u32 = 2; +pub const MAP_SHARED_VALIDATE: u32 = 3; +pub const MAP_HUGE_SHIFT: u32 = 26; +pub const MAP_HUGE_MASK: u32 = 63; +pub const MAP_HUGE_16KB: u32 = 939524096; +pub const MAP_HUGE_64KB: u32 = 1073741824; +pub const MAP_HUGE_512KB: u32 = 1275068416; +pub const MAP_HUGE_1MB: u32 = 1342177280; +pub const MAP_HUGE_2MB: u32 = 1409286144; +pub const MAP_HUGE_8MB: u32 = 1543503872; +pub const MAP_HUGE_16MB: u32 = 1610612736; +pub const MAP_HUGE_32MB: u32 = 1677721600; +pub const MAP_HUGE_256MB: u32 = 1879048192; +pub const MAP_HUGE_512MB: u32 = 1946157056; +pub const MAP_HUGE_1GB: u32 = 2013265920; +pub const MAP_HUGE_2GB: u32 = 2080374784; +pub const MAP_HUGE_16GB: u32 = 2281701376; +pub const POLLWRBAND: u32 = 256; +pub const POLLIN: u32 = 1; +pub const POLLPRI: u32 = 2; +pub const POLLOUT: u32 = 4; +pub const POLLERR: u32 = 8; +pub const POLLHUP: u32 = 16; +pub const POLLNVAL: u32 = 32; +pub const POLLRDNORM: u32 = 64; +pub const POLLRDBAND: u32 = 128; +pub const POLLMSG: u32 = 1024; +pub const POLLREMOVE: u32 = 4096; +pub const POLLRDHUP: u32 = 8192; +pub const GRND_NONBLOCK: u32 = 1; +pub const GRND_RANDOM: u32 = 2; +pub const GRND_INSECURE: u32 = 4; +pub const ITIMER_REAL: u32 = 0; +pub const ITIMER_VIRTUAL: u32 = 1; +pub const ITIMER_PROF: u32 = 2; +pub const CLOCK_REALTIME: u32 = 0; +pub const CLOCK_MONOTONIC: u32 = 1; +pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; +pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; +pub const CLOCK_MONOTONIC_RAW: u32 = 4; +pub const CLOCK_REALTIME_COARSE: u32 = 5; +pub const CLOCK_MONOTONIC_COARSE: u32 = 6; +pub const CLOCK_BOOTTIME: u32 = 7; +pub const CLOCK_REALTIME_ALARM: u32 = 8; +pub const CLOCK_BOOTTIME_ALARM: u32 = 9; +pub const CLOCK_SGI_CYCLE: u32 = 10; +pub const CLOCK_TAI: u32 = 11; +pub const MAX_CLOCKS: u32 = 16; +pub const CLOCKS_MASK: u32 = 1; +pub const CLOCKS_MONO: u32 = 1; +pub const TIMER_ABSTIME: u32 = 1; +pub const RUSAGE_SELF: u32 = 0; +pub const RUSAGE_CHILDREN: i32 = -1; +pub const RUSAGE_BOTH: i32 = -2; +pub const RUSAGE_THREAD: u32 = 1; +pub const RLIM64_INFINITY: i32 = -1; +pub const PRIO_MIN: i32 = -20; +pub const PRIO_MAX: u32 = 20; +pub const PRIO_PROCESS: u32 = 0; +pub const PRIO_PGRP: u32 = 1; +pub const PRIO_USER: u32 = 2; +pub const _STK_LIM: u32 = 8388608; +pub const MLOCK_LIMIT: u32 = 8388608; +pub const RLIMIT_NOFILE: u32 = 5; +pub const RLIMIT_AS: u32 = 6; +pub const RLIMIT_RSS: u32 = 7; +pub const RLIMIT_NPROC: u32 = 8; +pub const RLIMIT_MEMLOCK: u32 = 9; +pub const RLIMIT_CPU: u32 = 0; +pub const RLIMIT_FSIZE: u32 = 1; +pub const RLIMIT_DATA: u32 = 2; +pub const RLIMIT_STACK: u32 = 3; +pub const RLIMIT_CORE: u32 = 4; +pub const RLIMIT_LOCKS: u32 = 10; +pub const RLIMIT_SIGPENDING: u32 = 11; +pub const RLIMIT_MSGQUEUE: u32 = 12; +pub const RLIMIT_NICE: u32 = 13; +pub const RLIMIT_RTPRIO: u32 = 14; +pub const RLIMIT_RTTIME: u32 = 15; +pub const RLIM_NLIMITS: u32 = 16; +pub const RLIM_INFINITY: i32 = -1; +pub const CSIGNAL: u32 = 255; +pub const CLONE_VM: u32 = 256; +pub const CLONE_FS: u32 = 512; +pub const CLONE_FILES: u32 = 1024; +pub const CLONE_SIGHAND: u32 = 2048; +pub const CLONE_PIDFD: u32 = 4096; +pub const CLONE_PTRACE: u32 = 8192; +pub const CLONE_VFORK: u32 = 16384; +pub const CLONE_PARENT: u32 = 32768; +pub const CLONE_THREAD: u32 = 65536; +pub const CLONE_NEWNS: u32 = 131072; +pub const CLONE_SYSVSEM: u32 = 262144; +pub const CLONE_SETTLS: u32 = 524288; +pub const CLONE_PARENT_SETTID: u32 = 1048576; +pub const CLONE_CHILD_CLEARTID: u32 = 2097152; +pub const CLONE_DETACHED: u32 = 4194304; +pub const CLONE_UNTRACED: u32 = 8388608; +pub const CLONE_CHILD_SETTID: u32 = 16777216; +pub const CLONE_NEWCGROUP: u32 = 33554432; +pub const CLONE_NEWUTS: u32 = 67108864; +pub const CLONE_NEWIPC: u32 = 134217728; +pub const CLONE_NEWUSER: u32 = 268435456; +pub const CLONE_NEWPID: u32 = 536870912; +pub const CLONE_NEWNET: u32 = 1073741824; +pub const CLONE_IO: u32 = 2147483648; +pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; +pub const CLONE_INTO_CGROUP: u64 = 8589934592; +pub const CLONE_NEWTIME: u32 = 128; +pub const CLONE_ARGS_SIZE_VER0: u32 = 64; +pub const CLONE_ARGS_SIZE_VER1: u32 = 80; +pub const CLONE_ARGS_SIZE_VER2: u32 = 88; +pub const SCHED_NORMAL: u32 = 0; +pub const SCHED_FIFO: u32 = 1; +pub const SCHED_RR: u32 = 2; +pub const SCHED_BATCH: u32 = 3; +pub const SCHED_IDLE: u32 = 5; +pub const SCHED_DEADLINE: u32 = 6; +pub const SCHED_RESET_ON_FORK: u32 = 1073741824; +pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; +pub const SCHED_FLAG_RECLAIM: u32 = 2; +pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; +pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; +pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; +pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; +pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; +pub const SCHED_FLAG_KEEP_ALL: u32 = 24; +pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; +pub const SCHED_FLAG_ALL: u32 = 127; +pub const _NSIG: u32 = 128; +pub const SIGHUP: u32 = 1; +pub const SIGINT: u32 = 2; +pub const SIGQUIT: u32 = 3; +pub const SIGILL: u32 = 4; +pub const SIGTRAP: u32 = 5; +pub const SIGIOT: u32 = 6; +pub const SIGABRT: u32 = 6; +pub const SIGEMT: u32 = 7; +pub const SIGFPE: u32 = 8; +pub const SIGKILL: u32 = 9; +pub const SIGBUS: u32 = 10; +pub const SIGSEGV: u32 = 11; +pub const SIGSYS: u32 = 12; +pub const SIGPIPE: u32 = 13; +pub const SIGALRM: u32 = 14; +pub const SIGTERM: u32 = 15; +pub const SIGUSR1: u32 = 16; +pub const SIGUSR2: u32 = 17; +pub const SIGCHLD: u32 = 18; +pub const SIGCLD: u32 = 18; +pub const SIGPWR: u32 = 19; +pub const SIGWINCH: u32 = 20; +pub const SIGURG: u32 = 21; +pub const SIGIO: u32 = 22; +pub const SIGPOLL: u32 = 22; +pub const SIGSTOP: u32 = 23; +pub const SIGTSTP: u32 = 24; +pub const SIGCONT: u32 = 25; +pub const SIGTTIN: u32 = 26; +pub const SIGTTOU: u32 = 27; +pub const SIGVTALRM: u32 = 28; +pub const SIGPROF: u32 = 29; +pub const SIGXCPU: u32 = 30; +pub const SIGXFSZ: u32 = 31; +pub const SIGRTMIN: u32 = 32; +pub const SIGRTMAX: u32 = 128; +pub const SA_ONSTACK: u32 = 134217728; +pub const SA_RESETHAND: u32 = 2147483648; +pub const SA_RESTART: u32 = 268435456; +pub const SA_SIGINFO: u32 = 8; +pub const SA_NODEFER: u32 = 1073741824; +pub const SA_NOCLDWAIT: u32 = 65536; +pub const SA_NOCLDSTOP: u32 = 1; +pub const SA_NOMASK: u32 = 1073741824; +pub const SA_ONESHOT: u32 = 2147483648; +pub const MINSIGSTKSZ: u32 = 2048; +pub const SIGSTKSZ: u32 = 8192; +pub const SIG_BLOCK: u32 = 1; +pub const SIG_UNBLOCK: u32 = 2; +pub const SIG_SETMASK: u32 = 3; +pub const SA_UNSUPPORTED: u32 = 1024; +pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SI_MAX_SIZE: u32 = 128; +pub const SI_USER: u32 = 0; +pub const SI_KERNEL: u32 = 128; +pub const SI_QUEUE: i32 = -1; +pub const SI_TIMER: i32 = -2; +pub const SI_MESGQ: i32 = -3; +pub const SI_ASYNCIO: i32 = -4; +pub const SI_SIGIO: i32 = -5; +pub const SI_TKILL: i32 = -6; +pub const SI_DETHREAD: i32 = -7; +pub const SI_ASYNCNL: i32 = -60; +pub const ILL_ILLOPC: u32 = 1; +pub const ILL_ILLOPN: u32 = 2; +pub const ILL_ILLADR: u32 = 3; +pub const ILL_ILLTRP: u32 = 4; +pub const ILL_PRVOPC: u32 = 5; +pub const ILL_PRVREG: u32 = 6; +pub const ILL_COPROC: u32 = 7; +pub const ILL_BADSTK: u32 = 8; +pub const ILL_BADIADDR: u32 = 9; +pub const __ILL_BREAK: u32 = 10; +pub const __ILL_BNDMOD: u32 = 11; +pub const NSIGILL: u32 = 11; +pub const FPE_INTDIV: u32 = 1; +pub const FPE_INTOVF: u32 = 2; +pub const FPE_FLTDIV: u32 = 3; +pub const FPE_FLTOVF: u32 = 4; +pub const FPE_FLTUND: u32 = 5; +pub const FPE_FLTRES: u32 = 6; +pub const FPE_FLTINV: u32 = 7; +pub const FPE_FLTSUB: u32 = 8; +pub const __FPE_DECOVF: u32 = 9; +pub const __FPE_DECDIV: u32 = 10; +pub const __FPE_DECERR: u32 = 11; +pub const __FPE_INVASC: u32 = 12; +pub const __FPE_INVDEC: u32 = 13; +pub const FPE_FLTUNK: u32 = 14; +pub const FPE_CONDTRAP: u32 = 15; +pub const NSIGFPE: u32 = 15; +pub const SEGV_MAPERR: u32 = 1; +pub const SEGV_ACCERR: u32 = 2; +pub const SEGV_BNDERR: u32 = 3; +pub const SEGV_PKUERR: u32 = 4; +pub const SEGV_ACCADI: u32 = 5; +pub const SEGV_ADIDERR: u32 = 6; +pub const SEGV_ADIPERR: u32 = 7; +pub const SEGV_MTEAERR: u32 = 8; +pub const SEGV_MTESERR: u32 = 9; +pub const NSIGSEGV: u32 = 9; +pub const BUS_ADRALN: u32 = 1; +pub const BUS_ADRERR: u32 = 2; +pub const BUS_OBJERR: u32 = 3; +pub const BUS_MCEERR_AR: u32 = 4; +pub const BUS_MCEERR_AO: u32 = 5; +pub const NSIGBUS: u32 = 5; +pub const TRAP_BRKPT: u32 = 1; +pub const TRAP_TRACE: u32 = 2; +pub const TRAP_BRANCH: u32 = 3; +pub const TRAP_HWBKPT: u32 = 4; +pub const TRAP_UNK: u32 = 5; +pub const TRAP_PERF: u32 = 6; +pub const NSIGTRAP: u32 = 6; +pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; +pub const CLD_EXITED: u32 = 1; +pub const CLD_KILLED: u32 = 2; +pub const CLD_DUMPED: u32 = 3; +pub const CLD_TRAPPED: u32 = 4; +pub const CLD_STOPPED: u32 = 5; +pub const CLD_CONTINUED: u32 = 6; +pub const NSIGCHLD: u32 = 6; +pub const POLL_IN: u32 = 1; +pub const POLL_OUT: u32 = 2; +pub const POLL_MSG: u32 = 3; +pub const POLL_ERR: u32 = 4; +pub const POLL_PRI: u32 = 5; +pub const POLL_HUP: u32 = 6; +pub const NSIGPOLL: u32 = 6; +pub const SYS_SECCOMP: u32 = 1; +pub const SYS_USER_DISPATCH: u32 = 2; +pub const NSIGSYS: u32 = 2; +pub const EMT_TAGOVF: u32 = 1; +pub const NSIGEMT: u32 = 1; +pub const SIGEV_SIGNAL: u32 = 0; +pub const SIGEV_NONE: u32 = 1; +pub const SIGEV_THREAD: u32 = 2; +pub const SIGEV_THREAD_ID: u32 = 4; +pub const SIGEV_MAX_SIZE: u32 = 64; +pub const SS_ONSTACK: u32 = 1; +pub const SS_DISABLE: u32 = 2; +pub const SS_AUTODISARM: u32 = 2147483648; +pub const SS_FLAG_BITS: u32 = 2147483648; +pub const S_IFMT: u32 = 61440; +pub const S_IFSOCK: u32 = 49152; +pub const S_IFLNK: u32 = 40960; +pub const S_IFREG: u32 = 32768; +pub const S_IFBLK: u32 = 24576; +pub const S_IFDIR: u32 = 16384; +pub const S_IFCHR: u32 = 8192; +pub const S_IFIFO: u32 = 4096; +pub const S_ISUID: u32 = 2048; +pub const S_ISGID: u32 = 1024; +pub const S_ISVTX: u32 = 512; +pub const S_IRWXU: u32 = 448; +pub const S_IRUSR: u32 = 256; +pub const S_IWUSR: u32 = 128; +pub const S_IXUSR: u32 = 64; +pub const S_IRWXG: u32 = 56; +pub const S_IRGRP: u32 = 32; +pub const S_IWGRP: u32 = 16; +pub const S_IXGRP: u32 = 8; +pub const S_IRWXO: u32 = 7; +pub const S_IROTH: u32 = 4; +pub const S_IWOTH: u32 = 2; +pub const S_IXOTH: u32 = 1; +pub const STATX_TYPE: u32 = 1; +pub const STATX_MODE: u32 = 2; +pub const STATX_NLINK: u32 = 4; +pub const STATX_UID: u32 = 8; +pub const STATX_GID: u32 = 16; +pub const STATX_ATIME: u32 = 32; +pub const STATX_MTIME: u32 = 64; +pub const STATX_CTIME: u32 = 128; +pub const STATX_INO: u32 = 256; +pub const STATX_SIZE: u32 = 512; +pub const STATX_BLOCKS: u32 = 1024; +pub const STATX_BASIC_STATS: u32 = 2047; +pub const STATX_BTIME: u32 = 2048; +pub const STATX_MNT_ID: u32 = 4096; +pub const STATX_DIOALIGN: u32 = 8192; +pub const STATX__RESERVED: u32 = 2147483648; +pub const STATX_ALL: u32 = 4095; +pub const STATX_ATTR_COMPRESSED: u32 = 4; +pub const STATX_ATTR_IMMUTABLE: u32 = 16; +pub const STATX_ATTR_APPEND: u32 = 32; +pub const STATX_ATTR_NODUMP: u32 = 64; +pub const STATX_ATTR_ENCRYPTED: u32 = 2048; +pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; +pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; +pub const STATX_ATTR_VERITY: u32 = 1048576; +pub const STATX_ATTR_DAX: u32 = 2097152; +pub const EPERM: u32 = 1; +pub const ENOENT: u32 = 2; +pub const ESRCH: u32 = 3; +pub const EINTR: u32 = 4; +pub const EIO: u32 = 5; +pub const ENXIO: u32 = 6; +pub const E2BIG: u32 = 7; +pub const ENOEXEC: u32 = 8; +pub const EBADF: u32 = 9; +pub const ECHILD: u32 = 10; +pub const EAGAIN: u32 = 11; +pub const ENOMEM: u32 = 12; +pub const EACCES: u32 = 13; +pub const EFAULT: u32 = 14; +pub const ENOTBLK: u32 = 15; +pub const EBUSY: u32 = 16; +pub const EEXIST: u32 = 17; +pub const EXDEV: u32 = 18; +pub const ENODEV: u32 = 19; +pub const ENOTDIR: u32 = 20; +pub const EISDIR: u32 = 21; +pub const EINVAL: u32 = 22; +pub const ENFILE: u32 = 23; +pub const EMFILE: u32 = 24; +pub const ENOTTY: u32 = 25; +pub const ETXTBSY: u32 = 26; +pub const EFBIG: u32 = 27; +pub const ENOSPC: u32 = 28; +pub const ESPIPE: u32 = 29; +pub const EROFS: u32 = 30; +pub const EMLINK: u32 = 31; +pub const EPIPE: u32 = 32; +pub const EDOM: u32 = 33; +pub const ERANGE: u32 = 34; +pub const ENOMSG: u32 = 35; +pub const EIDRM: u32 = 36; +pub const ECHRNG: u32 = 37; +pub const EL2NSYNC: u32 = 38; +pub const EL3HLT: u32 = 39; +pub const EL3RST: u32 = 40; +pub const ELNRNG: u32 = 41; +pub const EUNATCH: u32 = 42; +pub const ENOCSI: u32 = 43; +pub const EL2HLT: u32 = 44; +pub const EDEADLK: u32 = 45; +pub const ENOLCK: u32 = 46; +pub const EBADE: u32 = 50; +pub const EBADR: u32 = 51; +pub const EXFULL: u32 = 52; +pub const ENOANO: u32 = 53; +pub const EBADRQC: u32 = 54; +pub const EBADSLT: u32 = 55; +pub const EDEADLOCK: u32 = 56; +pub const EBFONT: u32 = 59; +pub const ENOSTR: u32 = 60; +pub const ENODATA: u32 = 61; +pub const ETIME: u32 = 62; +pub const ENOSR: u32 = 63; +pub const ENONET: u32 = 64; +pub const ENOPKG: u32 = 65; +pub const EREMOTE: u32 = 66; +pub const ENOLINK: u32 = 67; +pub const EADV: u32 = 68; +pub const ESRMNT: u32 = 69; +pub const ECOMM: u32 = 70; +pub const EPROTO: u32 = 71; +pub const EDOTDOT: u32 = 73; +pub const EMULTIHOP: u32 = 74; +pub const EBADMSG: u32 = 77; +pub const ENAMETOOLONG: u32 = 78; +pub const EOVERFLOW: u32 = 79; +pub const ENOTUNIQ: u32 = 80; +pub const EBADFD: u32 = 81; +pub const EREMCHG: u32 = 82; +pub const ELIBACC: u32 = 83; +pub const ELIBBAD: u32 = 84; +pub const ELIBSCN: u32 = 85; +pub const ELIBMAX: u32 = 86; +pub const ELIBEXEC: u32 = 87; +pub const EILSEQ: u32 = 88; +pub const ENOSYS: u32 = 89; +pub const ELOOP: u32 = 90; +pub const ERESTART: u32 = 91; +pub const ESTRPIPE: u32 = 92; +pub const ENOTEMPTY: u32 = 93; +pub const EUSERS: u32 = 94; +pub const ENOTSOCK: u32 = 95; +pub const EDESTADDRREQ: u32 = 96; +pub const EMSGSIZE: u32 = 97; +pub const EPROTOTYPE: u32 = 98; +pub const ENOPROTOOPT: u32 = 99; +pub const EPROTONOSUPPORT: u32 = 120; +pub const ESOCKTNOSUPPORT: u32 = 121; +pub const EOPNOTSUPP: u32 = 122; +pub const EPFNOSUPPORT: u32 = 123; +pub const EAFNOSUPPORT: u32 = 124; +pub const EADDRINUSE: u32 = 125; +pub const EADDRNOTAVAIL: u32 = 126; +pub const ENETDOWN: u32 = 127; +pub const ENETUNREACH: u32 = 128; +pub const ENETRESET: u32 = 129; +pub const ECONNABORTED: u32 = 130; +pub const ECONNRESET: u32 = 131; +pub const ENOBUFS: u32 = 132; +pub const EISCONN: u32 = 133; +pub const ENOTCONN: u32 = 134; +pub const EUCLEAN: u32 = 135; +pub const ENOTNAM: u32 = 137; +pub const ENAVAIL: u32 = 138; +pub const EISNAM: u32 = 139; +pub const EREMOTEIO: u32 = 140; +pub const EINIT: u32 = 141; +pub const EREMDEV: u32 = 142; +pub const ESHUTDOWN: u32 = 143; +pub const ETOOMANYREFS: u32 = 144; +pub const ETIMEDOUT: u32 = 145; +pub const ECONNREFUSED: u32 = 146; +pub const EHOSTDOWN: u32 = 147; +pub const EHOSTUNREACH: u32 = 148; +pub const EWOULDBLOCK: u32 = 11; +pub const EALREADY: u32 = 149; +pub const EINPROGRESS: u32 = 150; +pub const ESTALE: u32 = 151; +pub const ECANCELED: u32 = 158; +pub const ENOMEDIUM: u32 = 159; +pub const EMEDIUMTYPE: u32 = 160; +pub const ENOKEY: u32 = 161; +pub const EKEYEXPIRED: u32 = 162; +pub const EKEYREVOKED: u32 = 163; +pub const EKEYREJECTED: u32 = 164; +pub const EOWNERDEAD: u32 = 165; +pub const ENOTRECOVERABLE: u32 = 166; +pub const ERFKILL: u32 = 167; +pub const EHWPOISON: u32 = 168; +pub const EDQUOT: u32 = 1133; +pub const IGNBRK: u32 = 1; +pub const BRKINT: u32 = 2; +pub const IGNPAR: u32 = 4; +pub const PARMRK: u32 = 8; +pub const INPCK: u32 = 16; +pub const ISTRIP: u32 = 32; +pub const INLCR: u32 = 64; +pub const IGNCR: u32 = 128; +pub const ICRNL: u32 = 256; +pub const IXANY: u32 = 2048; +pub const OPOST: u32 = 1; +pub const OCRNL: u32 = 8; +pub const ONOCR: u32 = 16; +pub const ONLRET: u32 = 32; +pub const OFILL: u32 = 64; +pub const OFDEL: u32 = 128; +pub const B0: u32 = 0; +pub const B50: u32 = 1; +pub const B75: u32 = 2; +pub const B110: u32 = 3; +pub const B134: u32 = 4; +pub const B150: u32 = 5; +pub const B200: u32 = 6; +pub const B300: u32 = 7; +pub const B600: u32 = 8; +pub const B1200: u32 = 9; +pub const B1800: u32 = 10; +pub const B2400: u32 = 11; +pub const B4800: u32 = 12; +pub const B9600: u32 = 13; +pub const B19200: u32 = 14; +pub const B38400: u32 = 15; +pub const EXTA: u32 = 14; +pub const EXTB: u32 = 15; +pub const ADDRB: u32 = 536870912; +pub const CMSPAR: u32 = 1073741824; +pub const CRTSCTS: u32 = 2147483648; +pub const IBSHIFT: u32 = 16; +pub const TCOOFF: u32 = 0; +pub const TCOON: u32 = 1; +pub const TCIOFF: u32 = 2; +pub const TCION: u32 = 3; +pub const TCIFLUSH: u32 = 0; +pub const TCOFLUSH: u32 = 1; +pub const TCIOFLUSH: u32 = 2; +pub const NCCS: u32 = 23; +pub const VINTR: u32 = 0; +pub const VQUIT: u32 = 1; +pub const VERASE: u32 = 2; +pub const VKILL: u32 = 3; +pub const VMIN: u32 = 4; +pub const VTIME: u32 = 5; +pub const VEOL2: u32 = 6; +pub const VSWTC: u32 = 7; +pub const VSWTCH: u32 = 7; +pub const VSTART: u32 = 8; +pub const VSTOP: u32 = 9; +pub const VSUSP: u32 = 10; +pub const VREPRINT: u32 = 12; +pub const VDISCARD: u32 = 13; +pub const VWERASE: u32 = 14; +pub const VLNEXT: u32 = 15; +pub const VEOF: u32 = 16; +pub const VEOL: u32 = 17; +pub const IUCLC: u32 = 512; +pub const IXON: u32 = 1024; +pub const IXOFF: u32 = 4096; +pub const IMAXBEL: u32 = 8192; +pub const IUTF8: u32 = 16384; +pub const OLCUC: u32 = 2; +pub const ONLCR: u32 = 4; +pub const NLDLY: u32 = 256; +pub const NL0: u32 = 0; +pub const NL1: u32 = 256; +pub const CRDLY: u32 = 1536; +pub const CR0: u32 = 0; +pub const CR1: u32 = 512; +pub const CR2: u32 = 1024; +pub const CR3: u32 = 1536; +pub const TABDLY: u32 = 6144; +pub const TAB0: u32 = 0; +pub const TAB1: u32 = 2048; +pub const TAB2: u32 = 4096; +pub const TAB3: u32 = 6144; +pub const XTABS: u32 = 6144; +pub const BSDLY: u32 = 8192; +pub const BS0: u32 = 0; +pub const BS1: u32 = 8192; +pub const VTDLY: u32 = 16384; +pub const VT0: u32 = 0; +pub const VT1: u32 = 16384; +pub const FFDLY: u32 = 32768; +pub const FF0: u32 = 0; +pub const FF1: u32 = 32768; +pub const CBAUD: u32 = 4111; +pub const CSIZE: u32 = 48; +pub const CS5: u32 = 0; +pub const CS6: u32 = 16; +pub const CS7: u32 = 32; +pub const CS8: u32 = 48; +pub const CSTOPB: u32 = 64; +pub const CREAD: u32 = 128; +pub const PARENB: u32 = 256; +pub const PARODD: u32 = 512; +pub const HUPCL: u32 = 1024; +pub const CLOCAL: u32 = 2048; +pub const CBAUDEX: u32 = 4096; +pub const BOTHER: u32 = 4096; +pub const B57600: u32 = 4097; +pub const B115200: u32 = 4098; +pub const B230400: u32 = 4099; +pub const B460800: u32 = 4100; +pub const B500000: u32 = 4101; +pub const B576000: u32 = 4102; +pub const B921600: u32 = 4103; +pub const B1000000: u32 = 4104; +pub const B1152000: u32 = 4105; +pub const B1500000: u32 = 4106; +pub const B2000000: u32 = 4107; +pub const B2500000: u32 = 4108; +pub const B3000000: u32 = 4109; +pub const B3500000: u32 = 4110; +pub const B4000000: u32 = 4111; +pub const CIBAUD: u32 = 269418496; +pub const ISIG: u32 = 1; +pub const ICANON: u32 = 2; +pub const XCASE: u32 = 4; +pub const ECHO: u32 = 8; +pub const ECHOE: u32 = 16; +pub const ECHOK: u32 = 32; +pub const ECHONL: u32 = 64; +pub const NOFLSH: u32 = 128; +pub const IEXTEN: u32 = 256; +pub const ECHOCTL: u32 = 512; +pub const ECHOPRT: u32 = 1024; +pub const ECHOKE: u32 = 2048; +pub const FLUSHO: u32 = 8192; +pub const PENDIN: u32 = 16384; +pub const TOSTOP: u32 = 32768; +pub const ITOSTOP: u32 = 32768; +pub const EXTPROC: u32 = 65536; +pub const TIOCSER_TEMT: u32 = 1; +pub const TIOCPKT_DATA: u32 = 0; +pub const TIOCPKT_FLUSHREAD: u32 = 1; +pub const TIOCPKT_FLUSHWRITE: u32 = 2; +pub const TIOCPKT_STOP: u32 = 4; +pub const TIOCPKT_START: u32 = 8; +pub const TIOCPKT_NOSTOP: u32 = 16; +pub const TIOCPKT_DOSTOP: u32 = 32; +pub const TIOCPKT_IOCTL: u32 = 64; +pub const TIOCGLTC: u32 = 29812; +pub const TIOCSLTC: u32 = 29813; +pub const TIOCGETP: u32 = 29704; +pub const TIOCSETP: u32 = 29705; +pub const TIOCSETN: u32 = 29706; +pub const NCC: u32 = 8; +pub const TIOCM_LE: u32 = 1; +pub const TIOCM_DTR: u32 = 2; +pub const TIOCM_RTS: u32 = 4; +pub const TIOCM_ST: u32 = 16; +pub const TIOCM_SR: u32 = 32; +pub const TIOCM_CTS: u32 = 64; +pub const TIOCM_CAR: u32 = 256; +pub const TIOCM_CD: u32 = 256; +pub const TIOCM_RNG: u32 = 512; +pub const TIOCM_RI: u32 = 512; +pub const TIOCM_DSR: u32 = 1024; +pub const TIOCM_OUT1: u32 = 8192; +pub const TIOCM_OUT2: u32 = 16384; +pub const TIOCM_LOOP: u32 = 32768; +pub const UIO_FASTIOV: u32 = 8; +pub const UIO_MAXIOV: u32 = 1024; +pub const __NR_Linux: u32 = 5000; +pub const __NR_read: u32 = 5000; +pub const __NR_write: u32 = 5001; +pub const __NR_open: u32 = 5002; +pub const __NR_close: u32 = 5003; +pub const __NR_stat: u32 = 5004; +pub const __NR_fstat: u32 = 5005; +pub const __NR_lstat: u32 = 5006; +pub const __NR_poll: u32 = 5007; +pub const __NR_lseek: u32 = 5008; +pub const __NR_mmap: u32 = 5009; +pub const __NR_mprotect: u32 = 5010; +pub const __NR_munmap: u32 = 5011; +pub const __NR_brk: u32 = 5012; +pub const __NR_rt_sigaction: u32 = 5013; +pub const __NR_rt_sigprocmask: u32 = 5014; +pub const __NR_ioctl: u32 = 5015; +pub const __NR_pread64: u32 = 5016; +pub const __NR_pwrite64: u32 = 5017; +pub const __NR_readv: u32 = 5018; +pub const __NR_writev: u32 = 5019; +pub const __NR_access: u32 = 5020; +pub const __NR_pipe: u32 = 5021; +pub const __NR__newselect: u32 = 5022; +pub const __NR_sched_yield: u32 = 5023; +pub const __NR_mremap: u32 = 5024; +pub const __NR_msync: u32 = 5025; +pub const __NR_mincore: u32 = 5026; +pub const __NR_madvise: u32 = 5027; +pub const __NR_shmget: u32 = 5028; +pub const __NR_shmat: u32 = 5029; +pub const __NR_shmctl: u32 = 5030; +pub const __NR_dup: u32 = 5031; +pub const __NR_dup2: u32 = 5032; +pub const __NR_pause: u32 = 5033; +pub const __NR_nanosleep: u32 = 5034; +pub const __NR_getitimer: u32 = 5035; +pub const __NR_setitimer: u32 = 5036; +pub const __NR_alarm: u32 = 5037; +pub const __NR_getpid: u32 = 5038; +pub const __NR_sendfile: u32 = 5039; +pub const __NR_socket: u32 = 5040; +pub const __NR_connect: u32 = 5041; +pub const __NR_accept: u32 = 5042; +pub const __NR_sendto: u32 = 5043; +pub const __NR_recvfrom: u32 = 5044; +pub const __NR_sendmsg: u32 = 5045; +pub const __NR_recvmsg: u32 = 5046; +pub const __NR_shutdown: u32 = 5047; +pub const __NR_bind: u32 = 5048; +pub const __NR_listen: u32 = 5049; +pub const __NR_getsockname: u32 = 5050; +pub const __NR_getpeername: u32 = 5051; +pub const __NR_socketpair: u32 = 5052; +pub const __NR_setsockopt: u32 = 5053; +pub const __NR_getsockopt: u32 = 5054; +pub const __NR_clone: u32 = 5055; +pub const __NR_fork: u32 = 5056; +pub const __NR_execve: u32 = 5057; +pub const __NR_exit: u32 = 5058; +pub const __NR_wait4: u32 = 5059; +pub const __NR_kill: u32 = 5060; +pub const __NR_uname: u32 = 5061; +pub const __NR_semget: u32 = 5062; +pub const __NR_semop: u32 = 5063; +pub const __NR_semctl: u32 = 5064; +pub const __NR_shmdt: u32 = 5065; +pub const __NR_msgget: u32 = 5066; +pub const __NR_msgsnd: u32 = 5067; +pub const __NR_msgrcv: u32 = 5068; +pub const __NR_msgctl: u32 = 5069; +pub const __NR_fcntl: u32 = 5070; +pub const __NR_flock: u32 = 5071; +pub const __NR_fsync: u32 = 5072; +pub const __NR_fdatasync: u32 = 5073; +pub const __NR_truncate: u32 = 5074; +pub const __NR_ftruncate: u32 = 5075; +pub const __NR_getdents: u32 = 5076; +pub const __NR_getcwd: u32 = 5077; +pub const __NR_chdir: u32 = 5078; +pub const __NR_fchdir: u32 = 5079; +pub const __NR_rename: u32 = 5080; +pub const __NR_mkdir: u32 = 5081; +pub const __NR_rmdir: u32 = 5082; +pub const __NR_creat: u32 = 5083; +pub const __NR_link: u32 = 5084; +pub const __NR_unlink: u32 = 5085; +pub const __NR_symlink: u32 = 5086; +pub const __NR_readlink: u32 = 5087; +pub const __NR_chmod: u32 = 5088; +pub const __NR_fchmod: u32 = 5089; +pub const __NR_chown: u32 = 5090; +pub const __NR_fchown: u32 = 5091; +pub const __NR_lchown: u32 = 5092; +pub const __NR_umask: u32 = 5093; +pub const __NR_gettimeofday: u32 = 5094; +pub const __NR_getrlimit: u32 = 5095; +pub const __NR_getrusage: u32 = 5096; +pub const __NR_sysinfo: u32 = 5097; +pub const __NR_times: u32 = 5098; +pub const __NR_ptrace: u32 = 5099; +pub const __NR_getuid: u32 = 5100; +pub const __NR_syslog: u32 = 5101; +pub const __NR_getgid: u32 = 5102; +pub const __NR_setuid: u32 = 5103; +pub const __NR_setgid: u32 = 5104; +pub const __NR_geteuid: u32 = 5105; +pub const __NR_getegid: u32 = 5106; +pub const __NR_setpgid: u32 = 5107; +pub const __NR_getppid: u32 = 5108; +pub const __NR_getpgrp: u32 = 5109; +pub const __NR_setsid: u32 = 5110; +pub const __NR_setreuid: u32 = 5111; +pub const __NR_setregid: u32 = 5112; +pub const __NR_getgroups: u32 = 5113; +pub const __NR_setgroups: u32 = 5114; +pub const __NR_setresuid: u32 = 5115; +pub const __NR_getresuid: u32 = 5116; +pub const __NR_setresgid: u32 = 5117; +pub const __NR_getresgid: u32 = 5118; +pub const __NR_getpgid: u32 = 5119; +pub const __NR_setfsuid: u32 = 5120; +pub const __NR_setfsgid: u32 = 5121; +pub const __NR_getsid: u32 = 5122; +pub const __NR_capget: u32 = 5123; +pub const __NR_capset: u32 = 5124; +pub const __NR_rt_sigpending: u32 = 5125; +pub const __NR_rt_sigtimedwait: u32 = 5126; +pub const __NR_rt_sigqueueinfo: u32 = 5127; +pub const __NR_rt_sigsuspend: u32 = 5128; +pub const __NR_sigaltstack: u32 = 5129; +pub const __NR_utime: u32 = 5130; +pub const __NR_mknod: u32 = 5131; +pub const __NR_personality: u32 = 5132; +pub const __NR_ustat: u32 = 5133; +pub const __NR_statfs: u32 = 5134; +pub const __NR_fstatfs: u32 = 5135; +pub const __NR_sysfs: u32 = 5136; +pub const __NR_getpriority: u32 = 5137; +pub const __NR_setpriority: u32 = 5138; +pub const __NR_sched_setparam: u32 = 5139; +pub const __NR_sched_getparam: u32 = 5140; +pub const __NR_sched_setscheduler: u32 = 5141; +pub const __NR_sched_getscheduler: u32 = 5142; +pub const __NR_sched_get_priority_max: u32 = 5143; +pub const __NR_sched_get_priority_min: u32 = 5144; +pub const __NR_sched_rr_get_interval: u32 = 5145; +pub const __NR_mlock: u32 = 5146; +pub const __NR_munlock: u32 = 5147; +pub const __NR_mlockall: u32 = 5148; +pub const __NR_munlockall: u32 = 5149; +pub const __NR_vhangup: u32 = 5150; +pub const __NR_pivot_root: u32 = 5151; +pub const __NR__sysctl: u32 = 5152; +pub const __NR_prctl: u32 = 5153; +pub const __NR_adjtimex: u32 = 5154; +pub const __NR_setrlimit: u32 = 5155; +pub const __NR_chroot: u32 = 5156; +pub const __NR_sync: u32 = 5157; +pub const __NR_acct: u32 = 5158; +pub const __NR_settimeofday: u32 = 5159; +pub const __NR_mount: u32 = 5160; +pub const __NR_umount2: u32 = 5161; +pub const __NR_swapon: u32 = 5162; +pub const __NR_swapoff: u32 = 5163; +pub const __NR_reboot: u32 = 5164; +pub const __NR_sethostname: u32 = 5165; +pub const __NR_setdomainname: u32 = 5166; +pub const __NR_create_module: u32 = 5167; +pub const __NR_init_module: u32 = 5168; +pub const __NR_delete_module: u32 = 5169; +pub const __NR_get_kernel_syms: u32 = 5170; +pub const __NR_query_module: u32 = 5171; +pub const __NR_quotactl: u32 = 5172; +pub const __NR_nfsservctl: u32 = 5173; +pub const __NR_getpmsg: u32 = 5174; +pub const __NR_putpmsg: u32 = 5175; +pub const __NR_afs_syscall: u32 = 5176; +pub const __NR_reserved177: u32 = 5177; +pub const __NR_gettid: u32 = 5178; +pub const __NR_readahead: u32 = 5179; +pub const __NR_setxattr: u32 = 5180; +pub const __NR_lsetxattr: u32 = 5181; +pub const __NR_fsetxattr: u32 = 5182; +pub const __NR_getxattr: u32 = 5183; +pub const __NR_lgetxattr: u32 = 5184; +pub const __NR_fgetxattr: u32 = 5185; +pub const __NR_listxattr: u32 = 5186; +pub const __NR_llistxattr: u32 = 5187; +pub const __NR_flistxattr: u32 = 5188; +pub const __NR_removexattr: u32 = 5189; +pub const __NR_lremovexattr: u32 = 5190; +pub const __NR_fremovexattr: u32 = 5191; +pub const __NR_tkill: u32 = 5192; +pub const __NR_reserved193: u32 = 5193; +pub const __NR_futex: u32 = 5194; +pub const __NR_sched_setaffinity: u32 = 5195; +pub const __NR_sched_getaffinity: u32 = 5196; +pub const __NR_cacheflush: u32 = 5197; +pub const __NR_cachectl: u32 = 5198; +pub const __NR_sysmips: u32 = 5199; +pub const __NR_io_setup: u32 = 5200; +pub const __NR_io_destroy: u32 = 5201; +pub const __NR_io_getevents: u32 = 5202; +pub const __NR_io_submit: u32 = 5203; +pub const __NR_io_cancel: u32 = 5204; +pub const __NR_exit_group: u32 = 5205; +pub const __NR_lookup_dcookie: u32 = 5206; +pub const __NR_epoll_create: u32 = 5207; +pub const __NR_epoll_ctl: u32 = 5208; +pub const __NR_epoll_wait: u32 = 5209; +pub const __NR_remap_file_pages: u32 = 5210; +pub const __NR_rt_sigreturn: u32 = 5211; +pub const __NR_set_tid_address: u32 = 5212; +pub const __NR_restart_syscall: u32 = 5213; +pub const __NR_semtimedop: u32 = 5214; +pub const __NR_fadvise64: u32 = 5215; +pub const __NR_timer_create: u32 = 5216; +pub const __NR_timer_settime: u32 = 5217; +pub const __NR_timer_gettime: u32 = 5218; +pub const __NR_timer_getoverrun: u32 = 5219; +pub const __NR_timer_delete: u32 = 5220; +pub const __NR_clock_settime: u32 = 5221; +pub const __NR_clock_gettime: u32 = 5222; +pub const __NR_clock_getres: u32 = 5223; +pub const __NR_clock_nanosleep: u32 = 5224; +pub const __NR_tgkill: u32 = 5225; +pub const __NR_utimes: u32 = 5226; +pub const __NR_mbind: u32 = 5227; +pub const __NR_get_mempolicy: u32 = 5228; +pub const __NR_set_mempolicy: u32 = 5229; +pub const __NR_mq_open: u32 = 5230; +pub const __NR_mq_unlink: u32 = 5231; +pub const __NR_mq_timedsend: u32 = 5232; +pub const __NR_mq_timedreceive: u32 = 5233; +pub const __NR_mq_notify: u32 = 5234; +pub const __NR_mq_getsetattr: u32 = 5235; +pub const __NR_vserver: u32 = 5236; +pub const __NR_waitid: u32 = 5237; +pub const __NR_add_key: u32 = 5239; +pub const __NR_request_key: u32 = 5240; +pub const __NR_keyctl: u32 = 5241; +pub const __NR_set_thread_area: u32 = 5242; +pub const __NR_inotify_init: u32 = 5243; +pub const __NR_inotify_add_watch: u32 = 5244; +pub const __NR_inotify_rm_watch: u32 = 5245; +pub const __NR_migrate_pages: u32 = 5246; +pub const __NR_openat: u32 = 5247; +pub const __NR_mkdirat: u32 = 5248; +pub const __NR_mknodat: u32 = 5249; +pub const __NR_fchownat: u32 = 5250; +pub const __NR_futimesat: u32 = 5251; +pub const __NR_newfstatat: u32 = 5252; +pub const __NR_unlinkat: u32 = 5253; +pub const __NR_renameat: u32 = 5254; +pub const __NR_linkat: u32 = 5255; +pub const __NR_symlinkat: u32 = 5256; +pub const __NR_readlinkat: u32 = 5257; +pub const __NR_fchmodat: u32 = 5258; +pub const __NR_faccessat: u32 = 5259; +pub const __NR_pselect6: u32 = 5260; +pub const __NR_ppoll: u32 = 5261; +pub const __NR_unshare: u32 = 5262; +pub const __NR_splice: u32 = 5263; +pub const __NR_sync_file_range: u32 = 5264; +pub const __NR_tee: u32 = 5265; +pub const __NR_vmsplice: u32 = 5266; +pub const __NR_move_pages: u32 = 5267; +pub const __NR_set_robust_list: u32 = 5268; +pub const __NR_get_robust_list: u32 = 5269; +pub const __NR_kexec_load: u32 = 5270; +pub const __NR_getcpu: u32 = 5271; +pub const __NR_epoll_pwait: u32 = 5272; +pub const __NR_ioprio_set: u32 = 5273; +pub const __NR_ioprio_get: u32 = 5274; +pub const __NR_utimensat: u32 = 5275; +pub const __NR_signalfd: u32 = 5276; +pub const __NR_timerfd: u32 = 5277; +pub const __NR_eventfd: u32 = 5278; +pub const __NR_fallocate: u32 = 5279; +pub const __NR_timerfd_create: u32 = 5280; +pub const __NR_timerfd_gettime: u32 = 5281; +pub const __NR_timerfd_settime: u32 = 5282; +pub const __NR_signalfd4: u32 = 5283; +pub const __NR_eventfd2: u32 = 5284; +pub const __NR_epoll_create1: u32 = 5285; +pub const __NR_dup3: u32 = 5286; +pub const __NR_pipe2: u32 = 5287; +pub const __NR_inotify_init1: u32 = 5288; +pub const __NR_preadv: u32 = 5289; +pub const __NR_pwritev: u32 = 5290; +pub const __NR_rt_tgsigqueueinfo: u32 = 5291; +pub const __NR_perf_event_open: u32 = 5292; +pub const __NR_accept4: u32 = 5293; +pub const __NR_recvmmsg: u32 = 5294; +pub const __NR_fanotify_init: u32 = 5295; +pub const __NR_fanotify_mark: u32 = 5296; +pub const __NR_prlimit64: u32 = 5297; +pub const __NR_name_to_handle_at: u32 = 5298; +pub const __NR_open_by_handle_at: u32 = 5299; +pub const __NR_clock_adjtime: u32 = 5300; +pub const __NR_syncfs: u32 = 5301; +pub const __NR_sendmmsg: u32 = 5302; +pub const __NR_setns: u32 = 5303; +pub const __NR_process_vm_readv: u32 = 5304; +pub const __NR_process_vm_writev: u32 = 5305; +pub const __NR_kcmp: u32 = 5306; +pub const __NR_finit_module: u32 = 5307; +pub const __NR_getdents64: u32 = 5308; +pub const __NR_sched_setattr: u32 = 5309; +pub const __NR_sched_getattr: u32 = 5310; +pub const __NR_renameat2: u32 = 5311; +pub const __NR_seccomp: u32 = 5312; +pub const __NR_getrandom: u32 = 5313; +pub const __NR_memfd_create: u32 = 5314; +pub const __NR_bpf: u32 = 5315; +pub const __NR_execveat: u32 = 5316; +pub const __NR_userfaultfd: u32 = 5317; +pub const __NR_membarrier: u32 = 5318; +pub const __NR_mlock2: u32 = 5319; +pub const __NR_copy_file_range: u32 = 5320; +pub const __NR_preadv2: u32 = 5321; +pub const __NR_pwritev2: u32 = 5322; +pub const __NR_pkey_mprotect: u32 = 5323; +pub const __NR_pkey_alloc: u32 = 5324; +pub const __NR_pkey_free: u32 = 5325; +pub const __NR_statx: u32 = 5326; +pub const __NR_rseq: u32 = 5327; +pub const __NR_io_pgetevents: u32 = 5328; +pub const __NR_pidfd_send_signal: u32 = 5424; +pub const __NR_io_uring_setup: u32 = 5425; +pub const __NR_io_uring_enter: u32 = 5426; +pub const __NR_io_uring_register: u32 = 5427; +pub const __NR_open_tree: u32 = 5428; +pub const __NR_move_mount: u32 = 5429; +pub const __NR_fsopen: u32 = 5430; +pub const __NR_fsconfig: u32 = 5431; +pub const __NR_fsmount: u32 = 5432; +pub const __NR_fspick: u32 = 5433; +pub const __NR_pidfd_open: u32 = 5434; +pub const __NR_clone3: u32 = 5435; +pub const __NR_close_range: u32 = 5436; +pub const __NR_openat2: u32 = 5437; +pub const __NR_pidfd_getfd: u32 = 5438; +pub const __NR_faccessat2: u32 = 5439; +pub const __NR_process_madvise: u32 = 5440; +pub const __NR_epoll_pwait2: u32 = 5441; +pub const __NR_mount_setattr: u32 = 5442; +pub const __NR_quotactl_fd: u32 = 5443; +pub const __NR_landlock_create_ruleset: u32 = 5444; +pub const __NR_landlock_add_rule: u32 = 5445; +pub const __NR_landlock_restrict_self: u32 = 5446; +pub const __NR_process_mrelease: u32 = 5448; +pub const __NR_futex_waitv: u32 = 5449; +pub const __NR_set_mempolicy_home_node: u32 = 5450; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const P_ALL: u32 = 0; +pub const P_PID: u32 = 1; +pub const P_PGID: u32 = 2; +pub const P_PIDFD: u32 = 3; +pub const XATTR_CREATE: u32 = 1; +pub const XATTR_REPLACE: u32 = 2; +pub const XATTR_OS2_PREFIX: &[u8; 5] = b"os2.\0"; +pub const XATTR_MAC_OSX_PREFIX: &[u8; 5] = b"osx.\0"; +pub const XATTR_BTRFS_PREFIX: &[u8; 7] = b"btrfs.\0"; +pub const XATTR_HURD_PREFIX: &[u8; 5] = b"gnu.\0"; +pub const XATTR_SECURITY_PREFIX: &[u8; 10] = b"security.\0"; +pub const XATTR_SYSTEM_PREFIX: &[u8; 8] = b"system.\0"; +pub const XATTR_TRUSTED_PREFIX: &[u8; 9] = b"trusted.\0"; +pub const XATTR_USER_PREFIX: &[u8; 6] = b"user.\0"; +pub const XATTR_EVM_SUFFIX: &[u8; 4] = b"evm\0"; +pub const XATTR_NAME_EVM: &[u8; 13] = b"security.evm\0"; +pub const XATTR_IMA_SUFFIX: &[u8; 4] = b"ima\0"; +pub const XATTR_NAME_IMA: &[u8; 13] = b"security.ima\0"; +pub const XATTR_SELINUX_SUFFIX: &[u8; 8] = b"selinux\0"; +pub const XATTR_NAME_SELINUX: &[u8; 17] = b"security.selinux\0"; +pub const XATTR_SMACK_SUFFIX: &[u8; 8] = b"SMACK64\0"; +pub const XATTR_SMACK_IPIN: &[u8; 12] = b"SMACK64IPIN\0"; +pub const XATTR_SMACK_IPOUT: &[u8; 13] = b"SMACK64IPOUT\0"; +pub const XATTR_SMACK_EXEC: &[u8; 12] = b"SMACK64EXEC\0"; +pub const XATTR_SMACK_TRANSMUTE: &[u8; 17] = b"SMACK64TRANSMUTE\0"; +pub const XATTR_SMACK_MMAP: &[u8; 12] = b"SMACK64MMAP\0"; +pub const XATTR_NAME_SMACK: &[u8; 17] = b"security.SMACK64\0"; +pub const XATTR_NAME_SMACKIPIN: &[u8; 21] = b"security.SMACK64IPIN\0"; +pub const XATTR_NAME_SMACKIPOUT: &[u8; 22] = b"security.SMACK64IPOUT\0"; +pub const XATTR_NAME_SMACKEXEC: &[u8; 21] = b"security.SMACK64EXEC\0"; +pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26] = b"security.SMACK64TRANSMUTE\0"; +pub const XATTR_NAME_SMACKMMAP: &[u8; 21] = b"security.SMACK64MMAP\0"; +pub const XATTR_APPARMOR_SUFFIX: &[u8; 9] = b"apparmor\0"; +pub const XATTR_NAME_APPARMOR: &[u8; 18] = b"security.apparmor\0"; +pub const XATTR_CAPS_SUFFIX: &[u8; 11] = b"capability\0"; +pub const XATTR_NAME_CAPS: &[u8; 20] = b"security.capability\0"; +pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17] = b"posix_acl_access\0"; +pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24] = b"system.posix_acl_access\0"; +pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18] = b"posix_acl_default\0"; +pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25] = b"system.posix_acl_default\0"; +pub const MFD_CLOEXEC: u32 = 1; +pub const MFD_ALLOW_SEALING: u32 = 2; +pub const MFD_HUGETLB: u32 = 4; +pub const MFD_NOEXEC_SEAL: u32 = 8; +pub const MFD_EXEC: u32 = 16; +pub const MFD_HUGE_SHIFT: u32 = 26; +pub const MFD_HUGE_MASK: u32 = 63; +pub const MFD_HUGE_64KB: u32 = 1073741824; +pub const MFD_HUGE_512KB: u32 = 1275068416; +pub const MFD_HUGE_1MB: u32 = 1342177280; +pub const MFD_HUGE_2MB: u32 = 1409286144; +pub const MFD_HUGE_8MB: u32 = 1543503872; +pub const MFD_HUGE_16MB: u32 = 1610612736; +pub const MFD_HUGE_32MB: u32 = 1677721600; +pub const MFD_HUGE_256MB: u32 = 1879048192; +pub const MFD_HUGE_512MB: u32 = 1946157056; +pub const MFD_HUGE_1GB: u32 = 2013265920; +pub const MFD_HUGE_2GB: u32 = 2080374784; +pub const MFD_HUGE_16GB: u32 = 2281701376; +pub const TFD_TIMER_ABSTIME: u32 = 1; +pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; +pub const TFD_CLOEXEC: u32 = 524288; +pub const TFD_NONBLOCK: u32 = 128; +pub const USERFAULTFD_IOC: u32 = 170; +pub const _UFFDIO_REGISTER: u32 = 0; +pub const _UFFDIO_UNREGISTER: u32 = 1; +pub const _UFFDIO_WAKE: u32 = 2; +pub const _UFFDIO_COPY: u32 = 3; +pub const _UFFDIO_ZEROPAGE: u32 = 4; +pub const _UFFDIO_WRITEPROTECT: u32 = 6; +pub const _UFFDIO_CONTINUE: u32 = 7; +pub const _UFFDIO_API: u32 = 63; +pub const UFFDIO: u32 = 170; +pub const UFFD_EVENT_PAGEFAULT: u32 = 18; +pub const UFFD_EVENT_FORK: u32 = 19; +pub const UFFD_EVENT_REMAP: u32 = 20; +pub const UFFD_EVENT_REMOVE: u32 = 21; +pub const UFFD_EVENT_UNMAP: u32 = 22; +pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; +pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; +pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; +pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; +pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; +pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; +pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; +pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; +pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; +pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; +pub const UFFD_FEATURE_SIGBUS: u32 = 128; +pub const UFFD_FEATURE_THREAD_ID: u32 = 256; +pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; +pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; +pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; +pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; +pub const UFFD_FEATURE_WP_UNPOPULATED: u32 = 8192; +pub const UFFD_USER_MODE_ONLY: u32 = 1; +pub const DT_UNKNOWN: u32 = 0; +pub const DT_FIFO: u32 = 1; +pub const DT_CHR: u32 = 2; +pub const DT_DIR: u32 = 4; +pub const DT_BLK: u32 = 6; +pub const DT_REG: u32 = 8; +pub const DT_LNK: u32 = 10; +pub const DT_SOCK: u32 = 12; +pub const STAT_HAVE_NSEC: u32 = 1; +pub const F_OK: u32 = 0; +pub const R_OK: u32 = 4; +pub const W_OK: u32 = 2; +pub const X_OK: u32 = 1; +pub const UTIME_NOW: u32 = 1073741823; +pub const UTIME_OMIT: u32 = 1073741822; +pub const MNT_FORCE: u32 = 1; +pub const MNT_DETACH: u32 = 2; +pub const MNT_EXPIRE: u32 = 4; +pub const UMOUNT_NOFOLLOW: u32 = 8; +pub const UMOUNT_UNUSED: u32 = 2147483648; +pub const STDIN_FILENO: u32 = 0; +pub const STDOUT_FILENO: u32 = 1; +pub const STDERR_FILENO: u32 = 2; +pub const RWF_HIPRI: u32 = 1; +pub const RWF_DSYNC: u32 = 2; +pub const RWF_SYNC: u32 = 4; +pub const RWF_NOWAIT: u32 = 8; +pub const RWF_APPEND: u32 = 16; +pub const EFD_SEMAPHORE: u32 = 1; +pub const EFD_CLOEXEC: u32 = 524288; +pub const EFD_NONBLOCK: u32 = 128; +pub const EPOLLIN: u32 = 1; +pub const EPOLLPRI: u32 = 2; +pub const EPOLLOUT: u32 = 4; +pub const EPOLLERR: u32 = 8; +pub const EPOLLHUP: u32 = 16; +pub const EPOLLNVAL: u32 = 32; +pub const EPOLLRDNORM: u32 = 64; +pub const EPOLLRDBAND: u32 = 128; +pub const EPOLLWRNORM: u32 = 256; +pub const EPOLLWRBAND: u32 = 512; +pub const EPOLLMSG: u32 = 1024; +pub const EPOLLRDHUP: u32 = 8192; +pub const EPOLLEXCLUSIVE: u32 = 268435456; +pub const EPOLLWAKEUP: u32 = 536870912; +pub const EPOLLONESHOT: u32 = 1073741824; +pub const EPOLLET: u32 = 2147483648; +pub const TFD_SHARED_FCNTL_FLAGS: u32 = 524416; +pub const TFD_CREATE_FLAGS: u32 = 524416; +pub const TFD_SETTIME_FLAGS: u32 = 1; +pub const UFFD_API: u32 = 170; +pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; +pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; +pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; +pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; +pub const UFFDIO_COPY_MODE_WP: u32 = 2; +pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; +pub const POLLWRNORM: u32 = 4; +pub const TCSANOW: u32 = 21518; +pub const TCSADRAIN: u32 = 21519; +pub const TCSAFLUSH: u32 = 21520; +pub const SPLICE_F_MOVE: u32 = 1; +pub const SPLICE_F_NONBLOCK: u32 = 2; +pub const SPLICE_F_MORE: u32 = 4; +pub const SPLICE_F_GIFT: u32 = 8; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum membarrier_cmd { +MEMBARRIER_CMD_QUERY = 0, +MEMBARRIER_CMD_GLOBAL = 1, +MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2, +MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4, +MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8, +MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16, +MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32, +MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64, +MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128, +MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256, +MEMBARRIER_CMD_GET_REGISTRATIONS = 512, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum membarrier_cmd_flag { +MEMBARRIER_CMD_FLAG_CPU = 1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union sigval { +pub sival_int: crate::ctypes::c_int, +pub sival_ptr: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __sifields { +pub _kill: __sifields__bindgen_ty_1, +pub _timer: __sifields__bindgen_ty_2, +pub _rt: __sifields__bindgen_ty_3, +pub _sigchld: __sifields__bindgen_ty_4, +pub _sigfault: __sifields__bindgen_ty_5, +pub _sigpoll: __sifields__bindgen_ty_6, +pub _sigsys: __sifields__bindgen_ty_7, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __sifields__bindgen_ty_5__bindgen_ty_1 { +pub _trapno: crate::ctypes::c_int, +pub _addr_lsb: crate::ctypes::c_short, +pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, +pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, +pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union siginfo__bindgen_ty_1 { +pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, +pub _si_pad: [crate::ctypes::c_int; 32usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union sigevent__bindgen_ty_1 { +pub _pad: [crate::ctypes::c_int; 12usize], +pub _tid: crate::ctypes::c_int, +pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union uffd_msg__bindgen_ty_1 { +pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, +pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, +pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, +pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, +pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { +pub ptid: __u32, +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl membarrier_cmd { +pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; +} +impl user_desc { +#[inline] +pub fn seg_32bit(&self) -> crate::ctypes::c_uint { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) } +} +#[inline] +pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) { +unsafe { +let val: u32 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 1u8, val as u64) +} +} +#[inline] +pub fn contents(&self) -> crate::ctypes::c_uint { +unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) } +} +#[inline] +pub fn set_contents(&mut self, val: crate::ctypes::c_uint) { +unsafe { +let val: u32 = ::core::mem::transmute(val); +self._bitfield_1.set(1usize, 2u8, val as u64) +} +} +#[inline] +pub fn read_exec_only(&self) -> crate::ctypes::c_uint { +unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) } +} +#[inline] +pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) { +unsafe { +let val: u32 = ::core::mem::transmute(val); +self._bitfield_1.set(3usize, 1u8, val as u64) +} +} +#[inline] +pub fn limit_in_pages(&self) -> crate::ctypes::c_uint { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) } +} +#[inline] +pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) { +unsafe { +let val: u32 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 1u8, val as u64) +} +} +#[inline] +pub fn seg_not_present(&self) -> crate::ctypes::c_uint { +unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) } +} +#[inline] +pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) { +unsafe { +let val: u32 = ::core::mem::transmute(val); +self._bitfield_1.set(5usize, 1u8, val as u64) +} +} +#[inline] +pub fn useable(&self) -> crate::ctypes::c_uint { +unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) } +} +#[inline] +pub fn set_useable(&mut self, val: crate::ctypes::c_uint) { +unsafe { +let val: u32 = ::core::mem::transmute(val); +self._bitfield_1.set(6usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 1u8, { +let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) }; +seg_32bit as u64 +}); +__bindgen_bitfield_unit.set(1usize, 2u8, { +let contents: u32 = unsafe { ::core::mem::transmute(contents) }; +contents as u64 +}); +__bindgen_bitfield_unit.set(3usize, 1u8, { +let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) }; +read_exec_only as u64 +}); +__bindgen_bitfield_unit.set(4usize, 1u8, { +let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) }; +limit_in_pages as u64 +}); +__bindgen_bitfield_unit.set(5usize, 1u8, { +let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) }; +seg_not_present as u64 +}); +__bindgen_bitfield_unit.set(6usize, 1u8, { +let useable: u32 = unsafe { ::core::mem::transmute(useable) }; +useable as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/if_ether.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/if_ether.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/if_ether.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/if_ether.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,177 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ethhdr { +pub h_dest: [crate::ctypes::c_uchar; 6usize], +pub h_source: [crate::ctypes::c_uchar; 6usize], +pub h_proto: __be16, +} +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const ETH_ALEN: u32 = 6; +pub const ETH_TLEN: u32 = 2; +pub const ETH_HLEN: u32 = 14; +pub const ETH_ZLEN: u32 = 60; +pub const ETH_DATA_LEN: u32 = 1500; +pub const ETH_FRAME_LEN: u32 = 1514; +pub const ETH_FCS_LEN: u32 = 4; +pub const ETH_MIN_MTU: u32 = 68; +pub const ETH_MAX_MTU: u32 = 65535; +pub const ETH_P_LOOP: u32 = 96; +pub const ETH_P_PUP: u32 = 512; +pub const ETH_P_PUPAT: u32 = 513; +pub const ETH_P_TSN: u32 = 8944; +pub const ETH_P_ERSPAN2: u32 = 8939; +pub const ETH_P_IP: u32 = 2048; +pub const ETH_P_X25: u32 = 2053; +pub const ETH_P_ARP: u32 = 2054; +pub const ETH_P_BPQ: u32 = 2303; +pub const ETH_P_IEEEPUP: u32 = 2560; +pub const ETH_P_IEEEPUPAT: u32 = 2561; +pub const ETH_P_BATMAN: u32 = 17157; +pub const ETH_P_DEC: u32 = 24576; +pub const ETH_P_DNA_DL: u32 = 24577; +pub const ETH_P_DNA_RC: u32 = 24578; +pub const ETH_P_DNA_RT: u32 = 24579; +pub const ETH_P_LAT: u32 = 24580; +pub const ETH_P_DIAG: u32 = 24581; +pub const ETH_P_CUST: u32 = 24582; +pub const ETH_P_SCA: u32 = 24583; +pub const ETH_P_TEB: u32 = 25944; +pub const ETH_P_RARP: u32 = 32821; +pub const ETH_P_ATALK: u32 = 32923; +pub const ETH_P_AARP: u32 = 33011; +pub const ETH_P_8021Q: u32 = 33024; +pub const ETH_P_ERSPAN: u32 = 35006; +pub const ETH_P_IPX: u32 = 33079; +pub const ETH_P_IPV6: u32 = 34525; +pub const ETH_P_PAUSE: u32 = 34824; +pub const ETH_P_SLOW: u32 = 34825; +pub const ETH_P_WCCP: u32 = 34878; +pub const ETH_P_MPLS_UC: u32 = 34887; +pub const ETH_P_MPLS_MC: u32 = 34888; +pub const ETH_P_ATMMPOA: u32 = 34892; +pub const ETH_P_PPP_DISC: u32 = 34915; +pub const ETH_P_PPP_SES: u32 = 34916; +pub const ETH_P_LINK_CTL: u32 = 34924; +pub const ETH_P_ATMFATE: u32 = 34948; +pub const ETH_P_PAE: u32 = 34958; +pub const ETH_P_PROFINET: u32 = 34962; +pub const ETH_P_REALTEK: u32 = 34969; +pub const ETH_P_AOE: u32 = 34978; +pub const ETH_P_ETHERCAT: u32 = 34980; +pub const ETH_P_8021AD: u32 = 34984; +pub const ETH_P_802_EX1: u32 = 34997; +pub const ETH_P_PREAUTH: u32 = 35015; +pub const ETH_P_TIPC: u32 = 35018; +pub const ETH_P_LLDP: u32 = 35020; +pub const ETH_P_MRP: u32 = 35043; +pub const ETH_P_MACSEC: u32 = 35045; +pub const ETH_P_8021AH: u32 = 35047; +pub const ETH_P_MVRP: u32 = 35061; +pub const ETH_P_1588: u32 = 35063; +pub const ETH_P_NCSI: u32 = 35064; +pub const ETH_P_PRP: u32 = 35067; +pub const ETH_P_CFM: u32 = 35074; +pub const ETH_P_FCOE: u32 = 35078; +pub const ETH_P_IBOE: u32 = 35093; +pub const ETH_P_TDLS: u32 = 35085; +pub const ETH_P_FIP: u32 = 35092; +pub const ETH_P_80221: u32 = 35095; +pub const ETH_P_HSR: u32 = 35119; +pub const ETH_P_NSH: u32 = 35151; +pub const ETH_P_LOOPBACK: u32 = 36864; +pub const ETH_P_QINQ1: u32 = 37120; +pub const ETH_P_QINQ2: u32 = 37376; +pub const ETH_P_QINQ3: u32 = 37632; +pub const ETH_P_EDSA: u32 = 56026; +pub const ETH_P_DSA_8021Q: u32 = 56027; +pub const ETH_P_DSA_A5PSW: u32 = 57345; +pub const ETH_P_IFE: u32 = 60734; +pub const ETH_P_AF_IUCV: u32 = 64507; +pub const ETH_P_802_3_MIN: u32 = 1536; +pub const ETH_P_802_3: u32 = 1; +pub const ETH_P_AX25: u32 = 2; +pub const ETH_P_ALL: u32 = 3; +pub const ETH_P_802_2: u32 = 4; +pub const ETH_P_SNAP: u32 = 5; +pub const ETH_P_DDCMP: u32 = 6; +pub const ETH_P_WAN_PPP: u32 = 7; +pub const ETH_P_PPP_MP: u32 = 8; +pub const ETH_P_LOCALTALK: u32 = 9; +pub const ETH_P_CAN: u32 = 12; +pub const ETH_P_CANFD: u32 = 13; +pub const ETH_P_CANXL: u32 = 14; +pub const ETH_P_PPPTALK: u32 = 16; +pub const ETH_P_TR_802_2: u32 = 17; +pub const ETH_P_MOBITEX: u32 = 21; +pub const ETH_P_CONTROL: u32 = 22; +pub const ETH_P_IRDA: u32 = 23; +pub const ETH_P_ECONET: u32 = 24; +pub const ETH_P_HDLC: u32 = 25; +pub const ETH_P_ARCNET: u32 = 26; +pub const ETH_P_DSA: u32 = 27; +pub const ETH_P_TRAILER: u32 = 28; +pub const ETH_P_PHONET: u32 = 245; +pub const ETH_P_IEEE802154: u32 = 246; +pub const ETH_P_CAIF: u32 = 247; +pub const ETH_P_XDSA: u32 = 248; +pub const ETH_P_MAP: u32 = 249; +pub const ETH_P_MCTP: u32 = 250; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/ioctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/ioctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/ioctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1587 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub const FIONREAD: u32 = 18047; +pub const FIONBIO: u32 = 26238; +pub const FIOCLEX: u32 = 26113; +pub const FIONCLEX: u32 = 26114; +pub const FIOASYNC: u32 = 26237; +pub const FIOQSIZE: u32 = 26239; +pub const TCXONC: u32 = 21510; +pub const TCFLSH: u32 = 21511; +pub const TIOCSCTTY: u32 = 21632; +pub const TIOCSPGRP: u32 = 2147775606; +pub const TIOCOUTQ: u32 = 29810; +pub const TIOCSTI: u32 = 21618; +pub const TIOCSWINSZ: u32 = 2148037735; +pub const TIOCMGET: u32 = 29725; +pub const TIOCMBIS: u32 = 29723; +pub const TIOCMBIC: u32 = 29724; +pub const TIOCMSET: u32 = 29722; +pub const TIOCSSOFTCAR: u32 = 21634; +pub const TIOCLINUX: u32 = 21635; +pub const TIOCCONS: u32 = 2147775608; +pub const TIOCSSERIAL: u32 = 21637; +pub const TIOCPKT: u32 = 21616; +pub const TIOCNOTTY: u32 = 21617; +pub const TIOCSETD: u32 = 29697; +pub const TIOCSBRK: u32 = 21543; +pub const TIOCCBRK: u32 = 21544; +pub const TIOCSPTLCK: u32 = 2147767345; +pub const TIOCSIG: u32 = 2147767350; +pub const TIOCVHANGUP: u32 = 21559; +pub const TIOCSERCONFIG: u32 = 21640; +pub const TIOCSERGWILD: u32 = 21641; +pub const TIOCSERSWILD: u32 = 21642; +pub const TIOCSLCKTRMIOS: u32 = 21644; +pub const TIOCSERGSTRUCT: u32 = 21645; +pub const TIOCSERGETLSR: u32 = 21646; +pub const TIOCSERGETMULTI: u32 = 21647; +pub const TIOCSERSETMULTI: u32 = 21648; +pub const TIOCMIWAIT: u32 = 21649; +pub const TCGETS: u32 = 21517; +pub const TCGETA: u32 = 21505; +pub const TCSBRK: u32 = 21509; +pub const TCSBRKP: u32 = 21638; +pub const TCSETA: u32 = 21506; +pub const TCSETAF: u32 = 21508; +pub const TCSETAW: u32 = 21507; +pub const TIOCEXCL: u32 = 29709; +pub const TIOCNXCL: u32 = 29710; +pub const TIOCGDEV: u32 = 1074025522; +pub const TIOCGEXCL: u32 = 1074025536; +pub const TIOCGICOUNT: u32 = 21650; +pub const TIOCGLCKTRMIOS: u32 = 21643; +pub const TIOCGPGRP: u32 = 1074033783; +pub const TIOCGPKT: u32 = 1074025528; +pub const TIOCGPTLCK: u32 = 1074025529; +pub const TIOCGPTN: u32 = 1074025520; +pub const TIOCGPTPEER: u32 = 536892481; +pub const TIOCGSERIAL: u32 = 21636; +pub const TIOCGSID: u32 = 29718; +pub const TIOCGSOFTCAR: u32 = 21633; +pub const TIOCGWINSZ: u32 = 1074295912; +pub const TCGETS2: u32 = 1076909098; +pub const TCSETS: u32 = 21518; +pub const TCSETS2: u32 = 2150650923; +pub const TCSETSF: u32 = 21520; +pub const TCSETSF2: u32 = 2150650925; +pub const TCSETSW: u32 = 21519; +pub const TCSETSW2: u32 = 2150650924; +pub const TIOCGETD: u32 = 29696; +pub const TIOCGETP: u32 = 29704; +pub const TIOCGLTC: u32 = 29812; +pub const MTIOCGET: u32 = 1077439746; +pub const BLKSSZGET: u32 = 536875624; +pub const BLKPBSZGET: u32 = 536875643; +pub const BLKROSET: u32 = 536875613; +pub const BLKROGET: u32 = 536875614; +pub const BLKRRPART: u32 = 536875615; +pub const BLKGETSIZE: u32 = 536875616; +pub const BLKFLSBUF: u32 = 536875617; +pub const BLKRASET: u32 = 536875618; +pub const BLKRAGET: u32 = 536875619; +pub const BLKFRASET: u32 = 536875620; +pub const BLKFRAGET: u32 = 536875621; +pub const BLKSECTSET: u32 = 536875622; +pub const BLKSECTGET: u32 = 536875623; +pub const BLKPG: u32 = 536875625; +pub const BLKBSZGET: u32 = 1074270832; +pub const BLKBSZSET: u32 = 2148012657; +pub const BLKGETSIZE64: u32 = 1074270834; +pub const BLKTRACESETUP: u32 = 3225948787; +pub const BLKTRACESTART: u32 = 536875636; +pub const BLKTRACESTOP: u32 = 536875637; +pub const BLKTRACETEARDOWN: u32 = 536875638; +pub const BLKDISCARD: u32 = 536875639; +pub const BLKIOMIN: u32 = 536875640; +pub const BLKIOOPT: u32 = 536875641; +pub const BLKALIGNOFF: u32 = 536875642; +pub const BLKDISCARDZEROES: u32 = 536875644; +pub const BLKSECDISCARD: u32 = 536875645; +pub const BLKROTATIONAL: u32 = 536875646; +pub const BLKZEROOUT: u32 = 536875647; +pub const UFFDIO_REGISTER: u32 = 3223366144; +pub const UFFDIO_UNREGISTER: u32 = 1074833921; +pub const UFFDIO_WAKE: u32 = 1074833922; +pub const UFFDIO_COPY: u32 = 3223890435; +pub const UFFDIO_ZEROPAGE: u32 = 3223366148; +pub const UFFDIO_WRITEPROTECT: u32 = 3222841862; +pub const UFFDIO_API: u32 = 3222841919; +pub const NS_GET_USERNS: u32 = 536917761; +pub const NS_GET_PARENT: u32 = 536917762; +pub const NS_GET_NSTYPE: u32 = 536917763; +pub const KDGETLED: u32 = 19249; +pub const KDSETLED: u32 = 19250; +pub const KDGKBLED: u32 = 19300; +pub const KDSKBLED: u32 = 19301; +pub const KDGKBTYPE: u32 = 19251; +pub const KDADDIO: u32 = 19252; +pub const KDDELIO: u32 = 19253; +pub const KDENABIO: u32 = 19254; +pub const KDDISABIO: u32 = 19255; +pub const KDSETMODE: u32 = 19258; +pub const KDGETMODE: u32 = 19259; +pub const KDMKTONE: u32 = 19248; +pub const KIOCSOUND: u32 = 19247; +pub const GIO_CMAP: u32 = 19312; +pub const PIO_CMAP: u32 = 19313; +pub const GIO_FONT: u32 = 19296; +pub const GIO_FONTX: u32 = 19307; +pub const PIO_FONT: u32 = 19297; +pub const PIO_FONTX: u32 = 19308; +pub const PIO_FONTRESET: u32 = 19309; +pub const GIO_SCRNMAP: u32 = 19264; +pub const GIO_UNISCRNMAP: u32 = 19305; +pub const PIO_SCRNMAP: u32 = 19265; +pub const PIO_UNISCRNMAP: u32 = 19306; +pub const GIO_UNIMAP: u32 = 19302; +pub const PIO_UNIMAP: u32 = 19303; +pub const PIO_UNIMAPCLR: u32 = 19304; +pub const KDGKBMODE: u32 = 19268; +pub const KDSKBMODE: u32 = 19269; +pub const KDGKBMETA: u32 = 19298; +pub const KDSKBMETA: u32 = 19299; +pub const KDGKBENT: u32 = 19270; +pub const KDSKBENT: u32 = 19271; +pub const KDGKBSENT: u32 = 19272; +pub const KDSKBSENT: u32 = 19273; +pub const KDGKBDIACR: u32 = 19274; +pub const KDGETKEYCODE: u32 = 19276; +pub const KDSETKEYCODE: u32 = 19277; +pub const KDSIGACCEPT: u32 = 19278; +pub const VT_OPENQRY: u32 = 22016; +pub const VT_GETMODE: u32 = 22017; +pub const VT_SETMODE: u32 = 22018; +pub const VT_GETSTATE: u32 = 22019; +pub const VT_RELDISP: u32 = 22021; +pub const VT_ACTIVATE: u32 = 22022; +pub const VT_WAITACTIVE: u32 = 22023; +pub const VT_DISALLOCATE: u32 = 22024; +pub const VT_RESIZE: u32 = 22025; +pub const VT_RESIZEX: u32 = 22026; +pub const FIOSETOWN: u32 = 2147772028; +pub const FIOGETOWN: u32 = 1074030203; +pub const SIOCATMARK: u32 = 1074033415; +pub const SIOCGSTAMP: u32 = 35078; +pub const TIOCINQ: u32 = 18047; +pub const SIOCADDRT: u32 = 35083; +pub const SIOCDELRT: u32 = 35084; +pub const SIOCGIFNAME: u32 = 35088; +pub const SIOCSIFLINK: u32 = 35089; +pub const SIOCGIFCONF: u32 = 35090; +pub const SIOCGIFFLAGS: u32 = 35091; +pub const SIOCSIFFLAGS: u32 = 35092; +pub const SIOCGIFADDR: u32 = 35093; +pub const SIOCSIFADDR: u32 = 35094; +pub const SIOCGIFDSTADDR: u32 = 35095; +pub const SIOCSIFDSTADDR: u32 = 35096; +pub const SIOCGIFBRDADDR: u32 = 35097; +pub const SIOCSIFBRDADDR: u32 = 35098; +pub const SIOCGIFNETMASK: u32 = 35099; +pub const SIOCSIFNETMASK: u32 = 35100; +pub const SIOCGIFMETRIC: u32 = 35101; +pub const SIOCSIFMETRIC: u32 = 35102; +pub const SIOCGIFMEM: u32 = 35103; +pub const SIOCSIFMEM: u32 = 35104; +pub const SIOCGIFMTU: u32 = 35105; +pub const SIOCSIFMTU: u32 = 35106; +pub const SIOCSIFHWADDR: u32 = 35108; +pub const SIOCGIFENCAP: u32 = 35109; +pub const SIOCSIFENCAP: u32 = 35110; +pub const SIOCGIFHWADDR: u32 = 35111; +pub const SIOCGIFSLAVE: u32 = 35113; +pub const SIOCSIFSLAVE: u32 = 35120; +pub const SIOCADDMULTI: u32 = 35121; +pub const SIOCDELMULTI: u32 = 35122; +pub const SIOCDARP: u32 = 35155; +pub const SIOCGARP: u32 = 35156; +pub const SIOCSARP: u32 = 35157; +pub const SIOCDRARP: u32 = 35168; +pub const SIOCGRARP: u32 = 35169; +pub const SIOCSRARP: u32 = 35170; +pub const SIOCGIFMAP: u32 = 35184; +pub const SIOCSIFMAP: u32 = 35185; +pub const SIOCRTMSG: u32 = 35085; +pub const SIOCSIFNAME: u32 = 35107; +pub const SIOCGIFINDEX: u32 = 35123; +pub const SIOGIFINDEX: u32 = 35123; +pub const SIOCSIFPFLAGS: u32 = 35124; +pub const SIOCGIFPFLAGS: u32 = 35125; +pub const SIOCDIFADDR: u32 = 35126; +pub const SIOCSIFHWBROADCAST: u32 = 35127; +pub const SIOCGIFCOUNT: u32 = 35128; +pub const SIOCGIFBR: u32 = 35136; +pub const SIOCSIFBR: u32 = 35137; +pub const SIOCGIFTXQLEN: u32 = 35138; +pub const SIOCSIFTXQLEN: u32 = 35139; +pub const SIOCADDDLCI: u32 = 35200; +pub const SIOCDELDLCI: u32 = 35201; +pub const SIOCDEVPRIVATE: u32 = 35312; +pub const SIOCPROTOPRIVATE: u32 = 35296; +pub const FIBMAP: u32 = 536870913; +pub const FIGETBSZ: u32 = 536870914; +pub const FIFREEZE: u32 = 3221510263; +pub const FITHAW: u32 = 3221510264; +pub const FITRIM: u32 = 3222820985; +pub const FICLONE: u32 = 2147783689; +pub const FICLONERANGE: u32 = 2149618701; +pub const FIDEDUPERANGE: u32 = 3222836278; +pub const FS_IOC_GETFLAGS: u32 = 1074292225; +pub const FS_IOC_SETFLAGS: u32 = 2148034050; +pub const FS_IOC_GETVERSION: u32 = 1074296321; +pub const FS_IOC_SETVERSION: u32 = 2148038146; +pub const FS_IOC_FIEMAP: u32 = 3223348747; +pub const FS_IOC32_GETFLAGS: u32 = 1074030081; +pub const FS_IOC32_SETFLAGS: u32 = 2147771906; +pub const FS_IOC32_GETVERSION: u32 = 1074034177; +pub const FS_IOC32_SETVERSION: u32 = 2147776002; +pub const FS_IOC_FSGETXATTR: u32 = 1075599391; +pub const FS_IOC_FSSETXATTR: u32 = 2149341216; +pub const FS_IOC_GETFSLABEL: u32 = 1090556977; +pub const FS_IOC_SETFSLABEL: u32 = 2164298802; +pub const EXT4_IOC_GETVERSION: u32 = 1074292227; +pub const EXT4_IOC_SETVERSION: u32 = 2148034052; +pub const EXT4_IOC_GETVERSION_OLD: u32 = 1074296321; +pub const EXT4_IOC_SETVERSION_OLD: u32 = 2148038146; +pub const EXT4_IOC_GETRSVSZ: u32 = 1074292229; +pub const EXT4_IOC_SETRSVSZ: u32 = 2148034054; +pub const EXT4_IOC_GROUP_EXTEND: u32 = 2148034055; +pub const EXT4_IOC_MIGRATE: u32 = 536897033; +pub const EXT4_IOC_ALLOC_DA_BLKS: u32 = 536897036; +pub const EXT4_IOC_RESIZE_FS: u32 = 2148034064; +pub const EXT4_IOC_SWAP_BOOT: u32 = 536897041; +pub const EXT4_IOC_PRECACHE_EXTENTS: u32 = 536897042; +pub const EXT4_IOC_CLEAR_ES_CACHE: u32 = 536897064; +pub const EXT4_IOC_GETSTATE: u32 = 2147771945; +pub const EXT4_IOC_GET_ES_CACHE: u32 = 3223348778; +pub const EXT4_IOC_CHECKPOINT: u32 = 2147771947; +pub const EXT4_IOC_SHUTDOWN: u32 = 1074026621; +pub const EXT4_IOC32_GETVERSION: u32 = 1074030083; +pub const EXT4_IOC32_SETVERSION: u32 = 2147771908; +pub const EXT4_IOC32_GETRSVSZ: u32 = 1074030085; +pub const EXT4_IOC32_SETRSVSZ: u32 = 2147771910; +pub const EXT4_IOC32_GROUP_EXTEND: u32 = 2147771911; +pub const EXT4_IOC32_GETVERSION_OLD: u32 = 1074034177; +pub const EXT4_IOC32_SETVERSION_OLD: u32 = 2147776002; +pub const VIDIOC_SUBDEV_QUERYSTD: u32 = 1074288191; +pub const AUTOFS_DEV_IOCTL_CLOSEMOUNT: u32 = 3222836085; +pub const LIRC_SET_SEND_CARRIER: u32 = 2147772691; +pub const AUTOFS_IOC_PROTOSUBVER: u32 = 1074041703; +pub const PTP_SYS_OFFSET_PRECISE: u32 = 3225435400; +pub const FSI_SCOM_WRITE: u32 = 3223352066; +pub const ATM_GETCIRANGE: u32 = 2148557194; +pub const DMA_BUF_SET_NAME_B: u32 = 2148033025; +pub const RIO_CM_EP_GET_LIST_SIZE: u32 = 3221512961; +pub const TUNSETPERSIST: u32 = 2147767499; +pub const FS_IOC_GET_ENCRYPTION_POLICY: u32 = 2148296213; +pub const CEC_RECEIVE: u32 = 3224920326; +pub const MGSL_IOCGPARAMS: u32 = 1076915457; +pub const ENI_SETMULT: u32 = 2148557159; +pub const RIO_GET_EVENT_MASK: u32 = 1074031886; +pub const LIRC_GET_MAX_TIMEOUT: u32 = 1074030857; +pub const KVM_SET_BOOT_CPU_ID: u32 = 536915576; +pub const KVM_SET_MP_STATE: u32 = 2147790489; +pub const KVM_GET_MP_STATE: u32 = 1074048664; +pub const KVM_GET_API_VERSION: u32 = 536915456; +pub const KVM_S390_GET_SKEYS: u32 = 2151722674; +pub const KVM_SET_ONE_REG: u32 = 2148576940; +pub const KVM_IRQ_LINE_STATUS: u32 = 3221794407; +pub const KVM_SET_USER_MEMORY_REGION: u32 = 2149625414; +pub const KVM_S390_INTERRUPT: u32 = 2148576916; +pub const KVM_TPR_ACCESS_REPORTING: u32 = 3223891602; +pub const KVM_GET_FPU: u32 = 1073786508; +pub const KVM_ASSIGN_SET_MSIX_ENTRY: u32 = 2148576884; +pub const KVM_MEMORY_ENCRYPT_REG_REGION: u32 = 1074835131; +pub const KVM_S390_UCAS_MAP: u32 = 2149101136; +pub const KVM_ASSIGN_SET_INTX_MASK: u32 = 2151722660; +pub const KVM_MEMORY_ENCRYPT_OP: u32 = 3221794490; +pub const KVM_CREATE_PIT2: u32 = 2151722615; +pub const KVM_S390_VCPU_FAULT: u32 = 2148052562; +pub const KVM_REGISTER_COALESCED_MMIO: u32 = 2148576871; +pub const KVM_SET_VAPIC_ADDR: u32 = 2148052627; +pub const KVM_CREATE_DEVICE: u32 = 3222056672; +pub const KVM_GET_IRQCHIP: u32 = 3255348834; +pub const KVM_TRANSLATE: u32 = 3222843013; +pub const KVM_S390_SET_INITIAL_PSW: u32 = 2148576918; +pub const KVM_X86_SETUP_MCE: u32 = 2148052636; +pub const KVM_DEASSIGN_PCI_DEVICE: u32 = 2151722610; +pub const KVM_XEN_HVM_SET_ATTR: u32 = 2152246985; +pub const KVM_GET_CLOCK: u32 = 1076932220; +pub const KVM_SET_FPU: u32 = 2147528333; +pub const KVM_KVMCLOCK_CTRL: u32 = 536915629; +pub const KVM_PPC_GET_PVINFO: u32 = 2155916961; +pub const KVM_X86_GET_MCE_CAP_SUPPORTED: u32 = 1074310813; +pub const KVM_S390_GET_IRQ_STATE: u32 = 2149625526; +pub const KVM_GET_DEVICE_ATTR: u32 = 2149101282; +pub const KVM_S390_INITIAL_RESET: u32 = 536915607; +pub const KVM_SET_REGS: u32 = 2165878402; +pub const KVM_GET_TSC_KHZ: u32 = 536915619; +pub const KVM_CHECK_EXTENSION: u32 = 536915459; +pub const KVM_PPC_RESIZE_HPT_COMMIT: u32 = 1074835118; +pub const KVM_GET_DIRTY_LOG: u32 = 2148576834; +pub const KVM_S390_SET_IRQ_STATE: u32 = 2149625525; +pub const KVM_S390_NORMAL_RESET: u32 = 536915651; +pub const KVM_SET_SIGNAL_MASK: u32 = 2147790475; +pub const KVM_XEN_VCPU_SET_ATTR: u32 = 2152246987; +pub const KVM_SET_GSI_ROUTING: u32 = 2148052586; +pub const KVM_CREATE_VCPU: u32 = 536915521; +pub const KVM_S390_UCAS_UNMAP: u32 = 2149101137; +pub const KVM_S390_STORE_STATUS: u32 = 2148052629; +pub const KVM_UNREGISTER_COALESCED_MMIO: u32 = 2148576872; +pub const KVM_ASSIGN_DEV_IRQ: u32 = 2151722608; +pub const KVM_S390_PV_COMMAND: u32 = 3223367365; +pub const KVM_S390_ENABLE_SIE: u32 = 536915462; +pub const KVM_CLEAR_DIRTY_LOG: u32 = 3222843072; +pub const KVM_GET_ONE_REG: u32 = 2148576939; +pub const KVM_ARM_SET_DEVICE_ADDR: u32 = 2148576939; +pub const KVM_DIRTY_TLB: u32 = 2148576938; +pub const KVM_NMI: u32 = 536915610; +pub const KVM_HYPERV_EVENTFD: u32 = 2149101245; +pub const KVM_S390_MEM_OP: u32 = 2151722673; +pub const KVM_PPC_SVM_OFF: u32 = 536915635; +pub const KVM_PPC_RESIZE_HPT_PREPARE: u32 = 1074835117; +pub const KVM_INTERRUPT: u32 = 2147790470; +pub const KVM_XEN_HVM_GET_ATTR: u32 = 3225988808; +pub const KVM_GET_SREGS: u32 = 1073786499; +pub const KVM_SET_IDENTITY_MAP_ADDR: u32 = 2148052552; +pub const KVM_GET_REGS: u32 = 1092136577; +pub const KVM_S390_GET_CMMA_BITS: u32 = 3223367352; +pub const KVM_CREATE_IRQCHIP: u32 = 536915552; +pub const KVM_ASSIGN_PCI_DEVICE: u32 = 1077980777; +pub const KVM_SET_NR_MMU_PAGES: u32 = 536915524; +pub const KVM_IOEVENTFD: u32 = 2151722617; +pub const KVM_RUN: u32 = 536915584; +pub const KVM_S390_SET_SKEYS: u32 = 2151722675; +pub const KVM_SET_DEVICE_ATTR: u32 = 2149101281; +pub const KVM_DEASSIGN_DEV_IRQ: u32 = 2151722613; +pub const KVM_SMI: u32 = 536915639; +pub const KVM_SET_TSS_ADDR: u32 = 536915527; +pub const KVM_GET_NR_MMU_PAGES: u32 = 536915525; +pub const KVM_XEN_VCPU_GET_ATTR: u32 = 3225988810; +pub const KVM_REINJECT_CONTROL: u32 = 536915569; +pub const KVM_HAS_DEVICE_ATTR: u32 = 2149101283; +pub const KVM_IRQFD: u32 = 2149625462; +pub const KVM_S390_SET_CMMA_BITS: u32 = 2149625529; +pub const KVM_SET_IRQCHIP: u32 = 1107865187; +pub const KVM_SIGNAL_MSI: u32 = 2149625509; +pub const KVM_GET_VCPU_MMAP_SIZE: u32 = 536915460; +pub const KVM_CREATE_VM: u32 = 536915457; +pub const KVM_S390_CLEAR_RESET: u32 = 536915652; +pub const KVM_RESET_DIRTY_RINGS: u32 = 536915655; +pub const KVM_ASSIGN_SET_MSIX_NR: u32 = 2148052595; +pub const KVM_CREATE_PIT: u32 = 536915556; +pub const KVM_SET_GUEST_DEBUG: u32 = 2148052635; +pub const KVM_GET_REG_LIST: u32 = 3221794480; +pub const KVM_ARM_VCPU_FINALIZE: u32 = 2147790530; +pub const KVM_SET_CLOCK: u32 = 2150674043; +pub const KVM_PPC_ALLOCATE_HTAB: u32 = 3221532327; +pub const KVM_PPC_GET_SMMU_INFO: u32 = 1112583846; +pub const KVM_SET_TSC_KHZ: u32 = 536915618; +pub const KVM_S390_IRQ: u32 = 2152246964; +pub const KVM_ENABLE_CAP: u32 = 2154344099; +pub const KVM_IRQ_LINE: u32 = 2148052577; +pub const KVM_SET_SREGS: u32 = 2147528324; +pub const KVM_MEMORY_ENCRYPT_UNREG_REGION: u32 = 1074835132; +pub const KVM_GET_STATS_FD: u32 = 536915662; +pub const USBDEVFS_CLAIMINTERFACE: u32 = 1074025743; +pub const CHIOMOVE: u32 = 2148819713; +pub const SONYPI_IOCGBATFLAGS: u32 = 1073837575; +pub const BTRFS_IOC_SYNC: u32 = 536908808; +pub const VIDIOC_TRY_FMT: u32 = 3234879040; +pub const LIRC_SET_REC_MODE: u32 = 2147772690; +pub const VIDIOC_DQEVENT: u32 = 1082676825; +pub const RPMSG_DESTROY_EPT_IOCTL: u32 = 536917250; +pub const UVCIOC_CTRL_MAP: u32 = 3227546912; +pub const VHOST_SET_BACKEND_FEATURES: u32 = 2148052773; +pub const VHOST_VSOCK_SET_GUEST_CID: u32 = 2148052832; +pub const UI_SET_KEYBIT: u32 = 2147767653; +pub const LIRC_SET_REC_TIMEOUT: u32 = 2147772696; +pub const FS_IOC_GET_ENCRYPTION_KEY_STATUS: u32 = 3229640218; +pub const BTRFS_IOC_TREE_SEARCH_V2: u32 = 3228603409; +pub const VHOST_SET_VRING_BASE: u32 = 2148052754; +pub const RIO_ENABLE_DOORBELL_RANGE: u32 = 2148035849; +pub const VIDIOC_TRY_EXT_CTRLS: u32 = 3223344713; +pub const LIRC_GET_REC_MODE: u32 = 1074030850; +pub const PPGETTIME: u32 = 1074819221; +pub const BTRFS_IOC_RM_DEV: u32 = 2415957003; +pub const ATM_SETBACKEND: u32 = 2147639794; +pub const FSL_HV_IOCTL_PARTITION_START: u32 = 3222318851; +pub const FBIO_WAITEVENT: u32 = 536888968; +pub const SWITCHTEC_IOCTL_PORT_TO_PFF: u32 = 3222034245; +pub const NVME_IOCTL_IO_CMD: u32 = 3225964099; +pub const IPMICTL_RECEIVE_MSG_TRUNC: u32 = 3224398091; +pub const FDTWADDLE: u32 = 536871513; +pub const NVME_IOCTL_SUBMIT_IO: u32 = 2150649410; +pub const NILFS_IOCTL_SYNC: u32 = 1074294410; +pub const VIDIOC_SUBDEV_S_DV_TIMINGS: u32 = 3229898327; +pub const ASPEED_LPC_CTRL_IOCTL_GET_SIZE: u32 = 3222319616; +pub const DM_DEV_STATUS: u32 = 3241737479; +pub const TEE_IOC_CLOSE_SESSION: u32 = 1074045957; +pub const NS_GETPSTAT: u32 = 3222298977; +pub const UI_SET_PROPBIT: u32 = 2147767662; +pub const TUNSETFILTEREBPF: u32 = 1074025697; +pub const RIO_MPORT_MAINT_COMPTAG_SET: u32 = 2147773698; +pub const AUTOFS_DEV_IOCTL_VERSION: u32 = 3222836081; +pub const WDIOC_SETOPTIONS: u32 = 1074026244; +pub const VHOST_SCSI_SET_ENDPOINT: u32 = 2162732864; +pub const MGSL_IOCGTXIDLE: u32 = 536898819; +pub const ATM_ADDLECSADDR: u32 = 2148557198; +pub const FSL_HV_IOCTL_GETPROP: u32 = 3223891719; +pub const FDGETPRM: u32 = 1075839492; +pub const HIDIOCAPPLICATION: u32 = 536889346; +pub const ENI_MEMDUMP: u32 = 2148557152; +pub const PTP_SYS_OFFSET2: u32 = 2202025230; +pub const VIDIOC_SUBDEV_G_DV_TIMINGS: u32 = 3229898328; +pub const DMA_BUF_SET_NAME_A: u32 = 2147770881; +pub const PTP_PIN_GETFUNC: u32 = 3227532550; +pub const PTP_SYS_OFFSET_EXTENDED: u32 = 3300932873; +pub const DFL_FPGA_PORT_UINT_SET_IRQ: u32 = 2148054600; +pub const RTC_EPOCH_READ: u32 = 1074294797; +pub const VIDIOC_SUBDEV_S_SELECTION: u32 = 3225441854; +pub const VIDIOC_QUERY_EXT_CTRL: u32 = 3236451943; +pub const ATM_GETLECSADDR: u32 = 2148557200; +pub const FSL_HV_IOCTL_PARTITION_STOP: u32 = 3221794564; +pub const SONET_GETDIAG: u32 = 1074028820; +pub const ATMMPC_DATA: u32 = 536895961; +pub const IPMICTL_UNREGISTER_FOR_CMD_CHANS: u32 = 1074555165; +pub const HIDIOCGCOLLECTIONINDEX: u32 = 2149074960; +pub const RPMSG_CREATE_EPT_IOCTL: u32 = 2150151425; +pub const GPIOHANDLE_GET_LINE_VALUES_IOCTL: u32 = 3225465864; +pub const UI_DEV_SETUP: u32 = 2153534723; +pub const ISST_IF_IO_CMD: u32 = 2148072962; +pub const RIO_MPORT_MAINT_READ_REMOTE: u32 = 1075342599; +pub const VIDIOC_OMAP3ISP_HIST_CFG: u32 = 3224393412; +pub const BLKGETNRZONES: u32 = 1074008709; +pub const VIDIOC_G_MODULATOR: u32 = 3225703990; +pub const VBG_IOCTL_WRITE_CORE_DUMP: u32 = 3223082515; +pub const USBDEVFS_SETINTERFACE: u32 = 1074287876; +pub const PPPIOCGCHAN: u32 = 1074033719; +pub const EVIOCGVERSION: u32 = 1074021633; +pub const VHOST_NET_SET_BACKEND: u32 = 2148052784; +pub const USBDEVFS_REAPURBNDELAY: u32 = 2148029709; +pub const RNDZAPENTCNT: u32 = 536891908; +pub const VIDIOC_G_PARM: u32 = 3234616853; +pub const TUNGETDEVNETNS: u32 = 536892643; +pub const LIRC_SET_MEASURE_CARRIER_MODE: u32 = 2147772701; +pub const VHOST_SET_VRING_ERR: u32 = 2148052770; +pub const VDUSE_VQ_SETUP: u32 = 2149613844; +pub const AUTOFS_IOC_SETTIMEOUT: u32 = 3221787492; +pub const VIDIOC_S_FREQUENCY: u32 = 2150389305; +pub const F2FS_IOC_SEC_TRIM_FILE: u32 = 2149119252; +pub const FS_IOC_REMOVE_ENCRYPTION_KEY: u32 = 3225445912; +pub const WDIOC_GETPRETIMEOUT: u32 = 1074026249; +pub const USBDEVFS_DROP_PRIVILEGES: u32 = 2147767582; +pub const BTRFS_IOC_SNAP_CREATE_V2: u32 = 2415957015; +pub const VHOST_VSOCK_SET_RUNNING: u32 = 2147790689; +pub const STP_SET_OPTIONS: u32 = 2148017410; +pub const FBIO_RADEON_GET_MIRROR: u32 = 1074282499; +pub const IVTVFB_IOC_DMA_FRAME: u32 = 2149078720; +pub const IPMICTL_SEND_COMMAND: u32 = 1076390157; +pub const VIDIOC_G_ENC_INDEX: u32 = 1209554508; +pub const DFL_FPGA_FME_PORT_PR: u32 = 536917632; +pub const CHIOSVOLTAG: u32 = 2150654738; +pub const ATM_SETESIF: u32 = 2148557197; +pub const FW_CDEV_IOC_SEND_RESPONSE: u32 = 2149065476; +pub const PMU_IOC_GET_MODEL: u32 = 1074283011; +pub const JSIOCGBTNMAP: u32 = 1140877876; +pub const USBDEVFS_HUB_PORTINFO: u32 = 1082152211; +pub const VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS: u32 = 3222820363; +pub const FDCLRPRM: u32 = 536871489; +pub const BTRFS_IOC_SCRUB: u32 = 3288372251; +pub const USBDEVFS_DISCONNECT: u32 = 536892694; +pub const TUNSETVNETBE: u32 = 2147767518; +pub const ATMTCP_REMOVE: u32 = 536895887; +pub const VHOST_VDPA_GET_CONFIG: u32 = 1074311027; +pub const PPPIOCGNPMODE: u32 = 3221779532; +pub const FDGETDRVPRM: u32 = 1082130961; +pub const TUNSETVNETLE: u32 = 2147767516; +pub const PHN_SETREG: u32 = 2148036614; +pub const PPPIOCDETACH: u32 = 2147775548; +pub const MMTIMER_GETRES: u32 = 1074294017; +pub const VIDIOC_SUBDEV_ENUMSTD: u32 = 3225966105; +pub const PPGETFLAGS: u32 = 1074032794; +pub const VDUSE_DEV_GET_FEATURES: u32 = 1074299153; +pub const CAPI_MANUFACTURER_CMD: u32 = 3222291232; +pub const VIDIOC_G_TUNER: u32 = 3226752541; +pub const DM_TABLE_STATUS: u32 = 3241737484; +pub const DM_DEV_ARM_POLL: u32 = 3241737488; +pub const NE_CREATE_VM: u32 = 1074310688; +pub const MEDIA_IOC_ENUM_LINKS: u32 = 3223878658; +pub const F2FS_IOC_PRECACHE_EXTENTS: u32 = 536933647; +pub const DFL_FPGA_PORT_DMA_MAP: u32 = 536917571; +pub const MGSL_IOCGXCTRL: u32 = 536898838; +pub const FW_CDEV_IOC_SEND_REQUEST: u32 = 2150114049; +pub const SONYPI_IOCGBLUE: u32 = 1073837576; +pub const F2FS_IOC_DECOMPRESS_FILE: u32 = 536933655; +pub const I2OHTML: u32 = 3224398089; +pub const VFIO_GET_API_VERSION: u32 = 536886116; +pub const IDT77105_GETSTATZ: u32 = 2148557107; +pub const I2OPARMSET: u32 = 3223873795; +pub const TEE_IOC_CANCEL: u32 = 1074308100; +pub const PTP_SYS_OFFSET_PRECISE2: u32 = 3225435409; +pub const DFL_FPGA_PORT_RESET: u32 = 536917568; +pub const PPPIOCGASYNCMAP: u32 = 1074033752; +pub const EVIOCGKEYCODE_V2: u32 = 1076380932; +pub const DM_DEV_SET_GEOMETRY: u32 = 3241737487; +pub const HIDIOCSUSAGE: u32 = 2149074956; +pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE: u32 = 2149065488; +pub const PTP_EXTTS_REQUEST: u32 = 2148547842; +pub const SWITCHTEC_IOCTL_EVENT_CTL: u32 = 3223869251; +pub const WDIOC_SETPRETIMEOUT: u32 = 3221509896; +pub const VHOST_SCSI_CLEAR_ENDPOINT: u32 = 2162732865; +pub const JSIOCGAXES: u32 = 1073834513; +pub const HIDIOCSFLAG: u32 = 2147764239; +pub const PTP_PEROUT_REQUEST2: u32 = 2151169292; +pub const PPWDATA: u32 = 2147577990; +pub const PTP_CLOCK_GETCAPS: u32 = 1079000321; +pub const FDGETMAXERRS: u32 = 1075053070; +pub const TUNSETQUEUE: u32 = 2147767513; +pub const PTP_ENABLE_PPS: u32 = 2147761412; +pub const SIOCSIFATMTCP: u32 = 536895872; +pub const CEC_ADAP_G_LOG_ADDRS: u32 = 1079795971; +pub const ND_IOCTL_ARS_CAP: u32 = 3223342593; +pub const NBD_SET_BLKSIZE: u32 = 536914689; +pub const NBD_SET_TIMEOUT: u32 = 536914697; +pub const VHOST_SCSI_GET_ABI_VERSION: u32 = 2147790658; +pub const RIO_UNMAP_INBOUND: u32 = 2148035858; +pub const ATM_QUERYLOOP: u32 = 2148557140; +pub const DFL_FPGA_GET_API_VERSION: u32 = 536917504; +pub const USBDEVFS_WAIT_FOR_RESUME: u32 = 536892707; +pub const FBIO_CURSOR: u32 = 3228059144; +pub const RNDCLEARPOOL: u32 = 536891910; +pub const VIDIOC_QUERYSTD: u32 = 1074288191; +pub const DMA_BUF_IOCTL_SYNC: u32 = 2148033024; +pub const SCIF_RECV: u32 = 3222827783; +pub const PTP_PIN_GETFUNC2: u32 = 3227532559; +pub const FW_CDEV_IOC_ALLOCATE: u32 = 3223331586; +pub const CEC_ADAP_G_CAPS: u32 = 3226231040; +pub const VIDIOC_G_FBUF: u32 = 1076909578; +pub const PTP_ENABLE_PPS2: u32 = 2147761421; +pub const PCITEST_CLEAR_IRQ: u32 = 536891408; +pub const IPMICTL_SET_GETS_EVENTS_CMD: u32 = 1074030864; +pub const BTRFS_IOC_DEVICES_READY: u32 = 1342215207; +pub const JSIOCGAXMAP: u32 = 1077963314; +pub const FW_CDEV_IOC_GET_CYCLE_TIMER: u32 = 1074799372; +pub const FW_CDEV_IOC_SET_ISO_CHANNELS: u32 = 2148541207; +pub const RTC_WIE_OFF: u32 = 536899600; +pub const PPGETMODE: u32 = 1074032792; +pub const VIDIOC_DBG_G_REGISTER: u32 = 3224917584; +pub const PTP_SYS_OFFSET: u32 = 2202025221; +pub const BTRFS_IOC_SPACE_INFO: u32 = 3222311956; +pub const VIDIOC_SUBDEV_ENUM_FRAME_SIZE: u32 = 3225441866; +pub const ND_IOCTL_VENDOR: u32 = 3221769737; +pub const SCIF_VREADFROM: u32 = 3223876364; +pub const BTRFS_IOC_TRANS_START: u32 = 536908806; +pub const INOTIFY_IOC_SETNEXTWD: u32 = 2147764480; +pub const SNAPSHOT_GET_IMAGE_SIZE: u32 = 1074279182; +pub const TUNDETACHFILTER: u32 = 2148553942; +pub const ND_IOCTL_CLEAR_ERROR: u32 = 3223342596; +pub const IOC_PR_CLEAR: u32 = 2148561101; +pub const SCIF_READFROM: u32 = 3223876362; +pub const PPPIOCGDEBUG: u32 = 1074033729; +pub const BLKGETZONESZ: u32 = 1074008708; +pub const HIDIOCGUSAGES: u32 = 3491514387; +pub const SONYPI_IOCGTEMP: u32 = 1073837580; +pub const UI_SET_MSCBIT: u32 = 2147767656; +pub const APM_IOC_SUSPEND: u32 = 536887554; +pub const BTRFS_IOC_TREE_SEARCH: u32 = 3489698833; +pub const RTC_PLL_GET: u32 = 1075867665; +pub const RIO_CM_EP_GET_LIST: u32 = 3221512962; +pub const USBDEVFS_DISCSIGNAL: u32 = 1074812174; +pub const LIRC_GET_MIN_TIMEOUT: u32 = 1074030856; +pub const SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY: u32 = 1100502850; +pub const DM_TARGET_MSG: u32 = 3241737486; +pub const SONYPI_IOCGBAT1REM: u32 = 1073903107; +pub const EVIOCSFF: u32 = 2150647168; +pub const TUNSETGROUP: u32 = 2147767502; +pub const EVIOCGKEYCODE: u32 = 1074283780; +pub const KCOV_REMOTE_ENABLE: u32 = 2149081958; +pub const ND_IOCTL_GET_CONFIG_SIZE: u32 = 3222031876; +pub const FDEJECT: u32 = 536871514; +pub const TUNSETOFFLOAD: u32 = 2147767504; +pub const PPPIOCCONNECT: u32 = 2147775546; +pub const ATM_ADDADDR: u32 = 2148557192; +pub const VDUSE_DEV_INJECT_CONFIG_IRQ: u32 = 536903955; +pub const AUTOFS_DEV_IOCTL_ASKUMOUNT: u32 = 3222836093; +pub const VHOST_VDPA_GET_STATUS: u32 = 1073852273; +pub const CCISS_PASSTHRU: u32 = 3227009547; +pub const MGSL_IOCCLRMODCOUNT: u32 = 536898831; +pub const TEE_IOC_SUPPL_SEND: u32 = 1074832391; +pub const ATMARPD_CTRL: u32 = 536895969; +pub const UI_ABS_SETUP: u32 = 2149340420; +pub const UI_DEV_DESTROY: u32 = 536892674; +pub const BTRFS_IOC_QUOTA_CTL: u32 = 3222311976; +pub const RTC_AIE_ON: u32 = 536899585; +pub const AUTOFS_IOC_EXPIRE: u32 = 1091343205; +pub const PPPIOCSDEBUG: u32 = 2147775552; +pub const GPIO_V2_LINE_SET_VALUES_IOCTL: u32 = 3222320143; +pub const PPPIOCSMRU: u32 = 2147775570; +pub const CCISS_DEREGDISK: u32 = 536887820; +pub const UI_DEV_CREATE: u32 = 536892673; +pub const FUSE_DEV_IOC_CLONE: u32 = 1074062592; +pub const BTRFS_IOC_START_SYNC: u32 = 1074304024; +pub const NILFS_IOCTL_DELETE_CHECKPOINT: u32 = 2148036225; +pub const SNAPSHOT_AVAIL_SWAP_SIZE: u32 = 1074279187; +pub const DM_TABLE_CLEAR: u32 = 3241737482; +pub const CCISS_GETINTINFO: u32 = 1074283010; +pub const PPPIOCSASYNCMAP: u32 = 2147775575; +pub const I2OEVTGET: u32 = 1080584459; +pub const NVME_IOCTL_RESET: u32 = 536890948; +pub const PPYIELD: u32 = 536899725; +pub const NVME_IOCTL_IO64_CMD: u32 = 3226488392; +pub const TUNSETCARRIER: u32 = 2147767522; +pub const DM_DEV_WAIT: u32 = 3241737480; +pub const RTC_WIE_ON: u32 = 536899599; +pub const MEDIA_IOC_DEVICE_INFO: u32 = 3238034432; +pub const RIO_CM_CHAN_CREATE: u32 = 3221381891; +pub const MGSL_IOCSPARAMS: u32 = 2150657280; +pub const RTC_SET_TIME: u32 = 2149871626; +pub const VHOST_RESET_OWNER: u32 = 536915714; +pub const IOC_OPAL_PSID_REVERT_TPR: u32 = 2164814056; +pub const AUTOFS_DEV_IOCTL_OPENMOUNT: u32 = 3222836084; +pub const UDF_GETEABLOCK: u32 = 1074293825; +pub const VFIO_IOMMU_MAP_DMA: u32 = 536886129; +pub const VIDIOC_SUBSCRIBE_EVENT: u32 = 2149602906; +pub const HIDIOCGFLAG: u32 = 1074022414; +pub const HIDIOCGUCODE: u32 = 3222816781; +pub const VIDIOC_OMAP3ISP_AF_CFG: u32 = 3226228421; +pub const DM_REMOVE_ALL: u32 = 3241737473; +pub const ASPEED_LPC_CTRL_IOCTL_MAP: u32 = 2148577793; +pub const CCISS_GETFIRMVER: u32 = 1074020872; +pub const ND_IOCTL_ARS_START: u32 = 3223342594; +pub const PPPIOCSMRRU: u32 = 2147775547; +pub const CEC_ADAP_S_LOG_ADDRS: u32 = 3227279620; +pub const RPROC_GET_SHUTDOWN_ON_RELEASE: u32 = 1074050818; +pub const DMA_HEAP_IOCTL_ALLOC: u32 = 3222816768; +pub const PPSETTIME: u32 = 2148561046; +pub const RTC_ALM_READ: u32 = 1076129800; +pub const VDUSE_SET_API_VERSION: u32 = 2148040961; +pub const RIO_MPORT_MAINT_WRITE_REMOTE: u32 = 2149084424; +pub const VIDIOC_SUBDEV_S_CROP: u32 = 3224917564; +pub const USBDEVFS_CONNECT: u32 = 536892695; +pub const SYNC_IOC_FILE_INFO: u32 = 3224911364; +pub const ATMARP_MKIP: u32 = 536895970; +pub const VFIO_IOMMU_SPAPR_TCE_GET_INFO: u32 = 536886128; +pub const CCISS_GETHEARTBEAT: u32 = 1074020870; +pub const ATM_RSTADDR: u32 = 2148557191; +pub const NBD_SET_SIZE: u32 = 536914690; +pub const UDF_GETVOLIDENT: u32 = 1074293826; +pub const GPIO_V2_LINE_GET_VALUES_IOCTL: u32 = 3222320142; +pub const MGSL_IOCSTXIDLE: u32 = 536898818; +pub const FSL_HV_IOCTL_SETPROP: u32 = 3223891720; +pub const BTRFS_IOC_GET_DEV_STATS: u32 = 3288896564; +pub const PPRSTATUS: u32 = 1073836161; +pub const MGSL_IOCTXENABLE: u32 = 536898820; +pub const UDF_GETEASIZE: u32 = 1074031680; +pub const NVME_IOCTL_ADMIN64_CMD: u32 = 3226488391; +pub const VHOST_SET_OWNER: u32 = 536915713; +pub const RIO_ALLOC_DMA: u32 = 3222826259; +pub const RIO_CM_CHAN_ACCEPT: u32 = 3221775111; +pub const I2OHRTGET: u32 = 3222825217; +pub const ATM_SETCIRANGE: u32 = 2148557195; +pub const HPET_IE_ON: u32 = 536897537; +pub const PERF_EVENT_IOC_ID: u32 = 1074275335; +pub const TUNSETSNDBUF: u32 = 2147767508; +pub const PTP_PIN_SETFUNC: u32 = 2153790727; +pub const PPPIOCDISCONN: u32 = 536900665; +pub const VIDIOC_QUERYCTRL: u32 = 3225703972; +pub const PPEXCL: u32 = 536899727; +pub const PCITEST_MSI: u32 = 2147766275; +pub const FDWERRORCLR: u32 = 536871510; +pub const AUTOFS_IOC_FAIL: u32 = 536908641; +pub const USBDEVFS_IOCTL: u32 = 3222295826; +pub const VIDIOC_S_STD: u32 = 2148029976; +pub const F2FS_IOC_RESIZE_FS: u32 = 2148070672; +pub const SONET_SETDIAG: u32 = 3221512466; +pub const BTRFS_IOC_DEFRAG: u32 = 2415956994; +pub const CCISS_GETDRIVVER: u32 = 1074020873; +pub const IPMICTL_GET_TIMING_PARMS_CMD: u32 = 1074293015; +pub const HPET_IRQFREQ: u32 = 2148034566; +pub const ATM_GETESI: u32 = 2148557189; +pub const CCISS_GETLUNINFO: u32 = 1074545169; +pub const AUTOFS_DEV_IOCTL_ISMOUNTPOINT: u32 = 3222836094; +pub const TEE_IOC_SHM_ALLOC: u32 = 3222316033; +pub const PERF_EVENT_IOC_SET_BPF: u32 = 2147755016; +pub const UDMABUF_CREATE_LIST: u32 = 2148037955; +pub const VHOST_SET_LOG_BASE: u32 = 2148052740; +pub const ZATM_GETPOOL: u32 = 2148557153; +pub const BR2684_SETFILT: u32 = 2149343632; +pub const RNDGETPOOL: u32 = 1074287106; +pub const PPS_GETPARAMS: u32 = 1074294945; +pub const IOC_PR_RESERVE: u32 = 2148561097; +pub const VIDIOC_TRY_DECODER_CMD: u32 = 3225966177; +pub const RIO_CM_CHAN_CLOSE: u32 = 2147640068; +pub const VIDIOC_DV_TIMINGS_CAP: u32 = 3230684772; +pub const IOCTL_MEI_CONNECT_CLIENT_VTAG: u32 = 3222554628; +pub const PMU_IOC_GET_BACKLIGHT: u32 = 1074283009; +pub const USBDEVFS_GET_CAPABILITIES: u32 = 1074025754; +pub const SCIF_WRITETO: u32 = 3223876363; +pub const UDF_RELOCATE_BLOCKS: u32 = 3221777475; +pub const FSL_HV_IOCTL_PARTITION_RESTART: u32 = 3221794561; +pub const CCISS_REGNEWD: u32 = 536887822; +pub const FAT_IOCTL_SET_ATTRIBUTES: u32 = 2147774993; +pub const VIDIOC_CREATE_BUFS: u32 = 3238024796; +pub const CAPI_GET_VERSION: u32 = 3222291207; +pub const SWITCHTEC_IOCTL_EVENT_SUMMARY: u32 = 1155028802; +pub const VFIO_EEH_PE_OP: u32 = 536886137; +pub const FW_CDEV_IOC_CREATE_ISO_CONTEXT: u32 = 3223331592; +pub const F2FS_IOC_RELEASE_COMPRESS_BLOCKS: u32 = 1074328850; +pub const NBD_SET_SIZE_BLOCKS: u32 = 536914695; +pub const IPMI_BMC_IOCTL_SET_SMS_ATN: u32 = 536916224; +pub const ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG: u32 = 3222319873; +pub const VIDIOC_S_AUDOUT: u32 = 2150913586; +pub const VIDIOC_S_FMT: u32 = 3234878981; +pub const PPPIOCATTACH: u32 = 2147775549; +pub const VHOST_GET_VRING_BUSYLOOP_TIMEOUT: u32 = 2148052772; +pub const FS_IOC_MEASURE_VERITY: u32 = 3221513862; +pub const CCISS_BIG_PASSTHRU: u32 = 3227533842; +pub const IPMICTL_SET_MY_LUN_CMD: u32 = 1074030867; +pub const PCITEST_LEGACY_IRQ: u32 = 536891394; +pub const USBDEVFS_SUBMITURB: u32 = 1077433610; +pub const AUTOFS_IOC_READY: u32 = 536908640; +pub const BTRFS_IOC_SEND: u32 = 2152240166; +pub const VIDIOC_G_EXT_CTRLS: u32 = 3223344711; +pub const JSIOCSBTNMAP: u32 = 2214619699; +pub const PPPIOCSFLAGS: u32 = 2147775577; +pub const NVRAM_INIT: u32 = 536899648; +pub const RFKILL_IOCTL_NOINPUT: u32 = 536891905; +pub const BTRFS_IOC_BALANCE: u32 = 2415957004; +pub const FS_IOC_GETFSMAP: u32 = 3233830971; +pub const IPMICTL_GET_MY_CHANNEL_LUN_CMD: u32 = 1074030875; +pub const STP_POLICY_ID_GET: u32 = 1074799873; +pub const PPSETFLAGS: u32 = 2147774619; +pub const CEC_ADAP_S_PHYS_ADDR: u32 = 2147639554; +pub const ATMTCP_CREATE: u32 = 536895886; +pub const IPMI_BMC_IOCTL_FORCE_ABORT: u32 = 536916226; +pub const PPPIOCGXASYNCMAP: u32 = 1075868752; +pub const VHOST_SET_VRING_CALL: u32 = 2148052769; +pub const LIRC_GET_FEATURES: u32 = 1074030848; +pub const GSMIOC_DISABLE_NET: u32 = 536889091; +pub const AUTOFS_IOC_CATATONIC: u32 = 536908642; +pub const NBD_DO_IT: u32 = 536914691; +pub const LIRC_SET_REC_CARRIER_RANGE: u32 = 2147772703; +pub const IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD: u32 = 1074030873; +pub const EVIOCSCLOCKID: u32 = 2147763616; +pub const USBDEVFS_FREE_STREAMS: u32 = 1074287901; +pub const FSI_SCOM_RESET: u32 = 2147775235; +pub const PMU_IOC_GRAB_BACKLIGHT: u32 = 1074283014; +pub const VIDIOC_SUBDEV_S_FMT: u32 = 3227014661; +pub const FDDEFPRM: u32 = 2149581379; +pub const TEE_IOC_INVOKE: u32 = 1074832387; +pub const USBDEVFS_BULK: u32 = 3222820098; +pub const SCIF_VWRITETO: u32 = 3223876365; +pub const SONYPI_IOCSBRT: u32 = 2147579392; +pub const BTRFS_IOC_FILE_EXTENT_SAME: u32 = 3222836278; +pub const RTC_PIE_ON: u32 = 536899589; +pub const BTRFS_IOC_SCAN_DEV: u32 = 2415956996; +pub const PPPIOCXFERUNIT: u32 = 536900686; +pub const WDIOC_GETTIMEOUT: u32 = 1074026247; +pub const BTRFS_IOC_SET_RECEIVED_SUBVOL: u32 = 3234370597; +pub const DFL_FPGA_PORT_ERR_SET_IRQ: u32 = 2148054598; +pub const FBIO_WAITFORVSYNC: u32 = 2147763744; +pub const RTC_PIE_OFF: u32 = 536899590; +pub const EVIOCGRAB: u32 = 2147763600; +pub const PMU_IOC_SET_BACKLIGHT: u32 = 2148024834; +pub const EVIOCGREP: u32 = 1074283779; +pub const PERF_EVENT_IOC_MODIFY_ATTRIBUTES: u32 = 2148017163; +pub const UFFDIO_CONTINUE: u32 = 3223366151; +pub const VDUSE_GET_API_VERSION: u32 = 1074299136; +pub const RTC_RD_TIME: u32 = 1076129801; +pub const FDMSGOFF: u32 = 536871494; +pub const IPMICTL_REGISTER_FOR_CMD_CHANS: u32 = 1074555164; +pub const CAPI_GET_ERRCODE: u32 = 1073890081; +pub const PCITEST_SET_IRQTYPE: u32 = 2147766280; +pub const VIDIOC_SUBDEV_S_EDID: u32 = 3223868969; +pub const MATROXFB_SET_OUTPUT_MODE: u32 = 2148036346; +pub const RIO_DEV_ADD: u32 = 2149608727; +pub const VIDIOC_ENUM_FREQ_BANDS: u32 = 3225441893; +pub const FBIO_RADEON_SET_MIRROR: u32 = 2148024324; +pub const PCITEST_GET_IRQTYPE: u32 = 536891401; +pub const JSIOCGVERSION: u32 = 1074031105; +pub const SONYPI_IOCSBLUE: u32 = 2147579401; +pub const SNAPSHOT_PREF_IMAGE_SIZE: u32 = 536883986; +pub const F2FS_IOC_GET_FEATURES: u32 = 1074066700; +pub const SCIF_REG: u32 = 3223876360; +pub const NILFS_IOCTL_CLEAN_SEGMENTS: u32 = 2155376264; +pub const FW_CDEV_IOC_INITIATE_BUS_RESET: u32 = 2147754757; +pub const RIO_WAIT_FOR_ASYNC: u32 = 2148035862; +pub const VHOST_SET_VRING_NUM: u32 = 2148052752; +pub const AUTOFS_DEV_IOCTL_PROTOVER: u32 = 3222836082; +pub const RIO_FREE_DMA: u32 = 2148035860; +pub const MGSL_IOCRXENABLE: u32 = 536898821; +pub const IOCTL_VM_SOCKETS_GET_LOCAL_CID: u32 = 536872889; +pub const IPMICTL_SET_TIMING_PARMS_CMD: u32 = 1074293014; +pub const PPPIOCGL2TPSTATS: u32 = 1078490166; +pub const PERF_EVENT_IOC_PERIOD: u32 = 2148017156; +pub const PTP_PIN_SETFUNC2: u32 = 2153790736; +pub const CHIOEXCHANGE: u32 = 2149344002; +pub const NILFS_IOCTL_GET_SUINFO: u32 = 1075342980; +pub const CEC_DQEVENT: u32 = 3226493191; +pub const UI_SET_SWBIT: u32 = 2147767661; +pub const VHOST_VDPA_SET_CONFIG: u32 = 2148052852; +pub const TUNSETIFF: u32 = 2147767498; +pub const CHIOPOSITION: u32 = 2148295427; +pub const IPMICTL_SET_MAINTENANCE_MODE_CMD: u32 = 2147772703; +pub const BTRFS_IOC_DEFAULT_SUBVOL: u32 = 2148045843; +pub const RIO_UNMAP_OUTBOUND: u32 = 2150133008; +pub const CAPI_CLR_FLAGS: u32 = 1074021157; +pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE: u32 = 2149065487; +pub const MATROXFB_GET_OUTPUT_CONNECTION: u32 = 1074294520; +pub const EVIOCSMASK: u32 = 2148550035; +pub const BTRFS_IOC_FORGET_DEV: u32 = 2415956997; +pub const CXL_MEM_QUERY_COMMANDS: u32 = 1074318849; +pub const CEC_S_MODE: u32 = 2147770633; +pub const MGSL_IOCSIF: u32 = 536898826; +pub const SWITCHTEC_IOCTL_PFF_TO_PORT: u32 = 3222034244; +pub const PPSETMODE: u32 = 2147774592; +pub const VFIO_DEVICE_SET_IRQS: u32 = 536886126; +pub const VIDIOC_PREPARE_BUF: u32 = 3227014749; +pub const CEC_ADAP_G_CONNECTOR_INFO: u32 = 1078223114; +pub const IOC_OPAL_WRITE_SHADOW_MBR: u32 = 2166386922; +pub const VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL: u32 = 3225441867; +pub const UDMABUF_CREATE: u32 = 2149086530; +pub const SONET_CLRDIAG: u32 = 3221512467; +pub const PHN_SET_REG: u32 = 2148036609; +pub const RNDADDTOENTCNT: u32 = 2147766785; +pub const VBG_IOCTL_CHECK_BALLOON: u32 = 3223344657; +pub const VIDIOC_OMAP3ISP_STAT_REQ: u32 = 3223869126; +pub const PPS_FETCH: u32 = 3221778596; +pub const RTC_AIE_OFF: u32 = 536899586; +pub const VFIO_GROUP_SET_CONTAINER: u32 = 536886120; +pub const FW_CDEV_IOC_RECEIVE_PHY_PACKETS: u32 = 2148016918; +pub const VFIO_IOMMU_SPAPR_TCE_REMOVE: u32 = 536886136; +pub const VFIO_IOMMU_GET_INFO: u32 = 536886128; +pub const DM_DEV_SUSPEND: u32 = 3241737478; +pub const F2FS_IOC_GET_COMPRESS_OPTION: u32 = 1073935637; +pub const FW_CDEV_IOC_STOP_ISO: u32 = 2147754763; +pub const GPIO_V2_GET_LINEINFO_IOCTL: u32 = 3238048773; +pub const ATMMPC_CTRL: u32 = 536895960; +pub const PPPIOCSXASYNCMAP: u32 = 2149610575; +pub const CHIOGSTATUS: u32 = 2148557576; +pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE: u32 = 3222807309; +pub const RIO_MPORT_MAINT_PORT_IDX_GET: u32 = 1074031875; +pub const CAPI_SET_FLAGS: u32 = 1074021156; +pub const VFIO_GROUP_GET_DEVICE_FD: u32 = 536886122; +pub const VHOST_SET_MEM_TABLE: u32 = 2148052739; +pub const MATROXFB_SET_OUTPUT_CONNECTION: u32 = 2148036344; +pub const DFL_FPGA_PORT_GET_REGION_INFO: u32 = 536917570; +pub const VHOST_GET_FEATURES: u32 = 1074310912; +pub const LIRC_GET_REC_RESOLUTION: u32 = 1074030855; +pub const PACKET_CTRL_CMD: u32 = 3222820865; +pub const LIRC_SET_TRANSMITTER_MASK: u32 = 2147772695; +pub const BTRFS_IOC_ADD_DEV: u32 = 2415957002; +pub const JSIOCGCORR: u32 = 1076128290; +pub const VIDIOC_G_FMT: u32 = 3234878980; +pub const RTC_EPOCH_SET: u32 = 2148036622; +pub const CAPI_GET_PROFILE: u32 = 3225436937; +pub const ATM_GETLOOP: u32 = 2148557138; +pub const SCIF_LISTEN: u32 = 2147775234; +pub const NBD_CLEAR_QUE: u32 = 536914693; +pub const F2FS_IOC_MOVE_RANGE: u32 = 3223385353; +pub const LIRC_GET_LENGTH: u32 = 1074030863; +pub const I8K_SET_FAN: u32 = 3221776775; +pub const FDSETMAXERRS: u32 = 2148794956; +pub const VIDIOC_SUBDEV_QUERYCAP: u32 = 1077958144; +pub const SNAPSHOT_SET_SWAP_AREA: u32 = 2148283149; +pub const LIRC_GET_REC_TIMEOUT: u32 = 1074030884; +pub const EVIOCRMFF: u32 = 2147763585; +pub const GPIO_GET_LINEEVENT_IOCTL: u32 = 3224417284; +pub const PPRDATA: u32 = 1073836165; +pub const RIO_MPORT_GET_PROPERTIES: u32 = 1076915460; +pub const TUNSETVNETHDRSZ: u32 = 2147767512; +pub const GPIO_GET_LINEINFO_IOCTL: u32 = 3225990146; +pub const GSMIOC_GETCONF: u32 = 1078740736; +pub const LIRC_GET_SEND_MODE: u32 = 1074030849; +pub const PPPIOCSACTIVE: u32 = 2148561990; +pub const SIOCGSTAMPNS_NEW: u32 = 1074825479; +pub const IPMICTL_RECEIVE_MSG: u32 = 3224398092; +pub const LIRC_SET_SEND_DUTY_CYCLE: u32 = 2147772693; +pub const UI_END_FF_ERASE: u32 = 2148292043; +pub const SWITCHTEC_IOCTL_FLASH_PART_INFO: u32 = 3222296385; +pub const FW_CDEV_IOC_SEND_PHY_PACKET: u32 = 3222807317; +pub const NBD_SET_FLAGS: u32 = 536914698; +pub const VFIO_DEVICE_GET_REGION_INFO: u32 = 536886124; +pub const REISERFS_IOC_UNPACK: u32 = 2148060417; +pub const FW_CDEV_IOC_REMOVE_DESCRIPTOR: u32 = 2147754759; +pub const RIO_SET_EVENT_MASK: u32 = 2147773709; +pub const SNAPSHOT_ALLOC_SWAP_PAGE: u32 = 1074279188; +pub const VDUSE_VQ_INJECT_IRQ: u32 = 2147778839; +pub const I2OPASSTHRU: u32 = 1074817292; +pub const IOC_OPAL_SET_PW: u32 = 2183164128; +pub const FSI_SCOM_READ: u32 = 3223352065; +pub const VHOST_VDPA_GET_DEVICE_ID: u32 = 1074048880; +pub const VIDIOC_QBUF: u32 = 3227014671; +pub const VIDIOC_S_TUNER: u32 = 2153010718; +pub const TUNGETVNETHDRSZ: u32 = 1074025687; +pub const CAPI_NCCI_GETUNIT: u32 = 1074021159; +pub const DFL_FPGA_PORT_UINT_GET_IRQ_NUM: u32 = 1074050631; +pub const VIDIOC_OMAP3ISP_STAT_EN: u32 = 3221771975; +pub const GPIO_V2_LINE_SET_CONFIG_IOCTL: u32 = 3239097357; +pub const TEE_IOC_VERSION: u32 = 1074570240; +pub const VIDIOC_LOG_STATUS: u32 = 536892998; +pub const IPMICTL_SEND_COMMAND_SETTIME: u32 = 1076914453; +pub const VHOST_SET_LOG_FD: u32 = 2147790599; +pub const SCIF_SEND: u32 = 3222827782; +pub const VIDIOC_SUBDEV_G_FMT: u32 = 3227014660; +pub const NS_ADJBUFLEV: u32 = 536895843; +pub const VIDIOC_DBG_S_REGISTER: u32 = 2151175759; +pub const NILFS_IOCTL_RESIZE: u32 = 2148036235; +pub const PHN_GETREG: u32 = 3221778437; +pub const I2OSWDL: u32 = 3224398085; +pub const VBG_IOCTL_VMMDEV_REQUEST_BIG: u32 = 536892931; +pub const JSIOCGBUTTONS: u32 = 1073834514; +pub const VFIO_IOMMU_ENABLE: u32 = 536886131; +pub const DM_DEV_RENAME: u32 = 3241737477; +pub const MEDIA_IOC_SETUP_LINK: u32 = 3224665091; +pub const VIDIOC_ENUMOUTPUT: u32 = 3225966128; +pub const STP_POLICY_ID_SET: u32 = 3222283520; +pub const VHOST_VDPA_SET_CONFIG_CALL: u32 = 2147790711; +pub const VIDIOC_SUBDEV_G_CROP: u32 = 3224917563; +pub const VIDIOC_S_CROP: u32 = 2148816444; +pub const WDIOC_GETTEMP: u32 = 1074026243; +pub const IOC_OPAL_ADD_USR_TO_LR: u32 = 2165862628; +pub const UI_SET_LEDBIT: u32 = 2147767657; +pub const NBD_SET_SOCK: u32 = 536914688; +pub const BTRFS_IOC_SNAP_DESTROY_V2: u32 = 2415957055; +pub const HIDIOCGCOLLECTIONINFO: u32 = 3222292497; +pub const I2OSWUL: u32 = 3224398086; +pub const IOCTL_MEI_NOTIFY_GET: u32 = 1074022403; +pub const FDFMTTRK: u32 = 2148270664; +pub const MMTIMER_GETBITS: u32 = 536898820; +pub const VIDIOC_ENUMSTD: u32 = 3225966105; +pub const VHOST_GET_VRING_BASE: u32 = 3221794578; +pub const VFIO_DEVICE_IOEVENTFD: u32 = 536886132; +pub const ATMARP_SETENTRY: u32 = 536895971; +pub const CCISS_REVALIDVOLS: u32 = 536887818; +pub const MGSL_IOCLOOPTXDONE: u32 = 536898825; +pub const RTC_VL_READ: u32 = 1074032659; +pub const ND_IOCTL_ARS_STATUS: u32 = 3224391171; +pub const RIO_DEV_DEL: u32 = 2149608728; +pub const VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES: u32 = 3223606797; +pub const VIDIOC_SUBDEV_DV_TIMINGS_CAP: u32 = 3230684772; +pub const SONYPI_IOCSFAN: u32 = 2147579403; +pub const SPIOCSTYPE: u32 = 2148036865; +pub const IPMICTL_REGISTER_FOR_CMD: u32 = 1073899790; +pub const I8K_GET_FAN: u32 = 3221776774; +pub const TUNGETVNETBE: u32 = 1074025695; +pub const AUTOFS_DEV_IOCTL_FAIL: u32 = 3222836087; +pub const UI_END_FF_UPLOAD: u32 = 2154321353; +pub const TOSH_SMM: u32 = 3222828176; +pub const SONYPI_IOCGBAT2REM: u32 = 1073903109; +pub const F2FS_IOC_GET_COMPRESS_BLOCKS: u32 = 1074328849; +pub const PPPIOCSNPMODE: u32 = 2148037707; +pub const USBDEVFS_CONTROL: u32 = 3222820096; +pub const HIDIOCGUSAGE: u32 = 3222816779; +pub const TUNSETTXFILTER: u32 = 2147767505; +pub const TUNGETVNETLE: u32 = 1074025693; +pub const VIDIOC_ENUM_DV_TIMINGS: u32 = 3230946914; +pub const BTRFS_IOC_INO_PATHS: u32 = 3224933411; +pub const MGSL_IOCGXSYNC: u32 = 536898836; +pub const HIDIOCGFIELDINFO: u32 = 3224913930; +pub const VIDIOC_SUBDEV_G_STD: u32 = 1074288151; +pub const I2OVALIDATE: u32 = 1074030856; +pub const VIDIOC_TRY_ENCODER_CMD: u32 = 3223869006; +pub const NILFS_IOCTL_GET_CPINFO: u32 = 1075342978; +pub const VIDIOC_G_FREQUENCY: u32 = 3224131128; +pub const VFAT_IOCTL_READDIR_SHORT: u32 = 1110471170; +pub const ND_IOCTL_GET_CONFIG_DATA: u32 = 3222031877; +pub const F2FS_IOC_RESERVE_COMPRESS_BLOCKS: u32 = 1074328851; +pub const FDGETDRVSTAT: u32 = 1078985234; +pub const SYNC_IOC_MERGE: u32 = 3224387075; +pub const VIDIOC_S_DV_TIMINGS: u32 = 3229898327; +pub const PPPIOCBRIDGECHAN: u32 = 2147775541; +pub const LIRC_SET_SEND_MODE: u32 = 2147772689; +pub const RIO_ENABLE_PORTWRITE_RANGE: u32 = 2148560139; +pub const ATM_GETTYPE: u32 = 2148557188; +pub const PHN_GETREGS: u32 = 3223875591; +pub const FDSETEMSGTRESH: u32 = 536871498; +pub const NILFS_IOCTL_GET_VINFO: u32 = 3222826630; +pub const MGSL_IOCWAITEVENT: u32 = 3221515528; +pub const CAPI_INSTALLED: u32 = 1073890082; +pub const EVIOCGMASK: u32 = 1074808210; +pub const BTRFS_IOC_SUBVOL_GETFLAGS: u32 = 1074304025; +pub const FSL_HV_IOCTL_PARTITION_GET_STATUS: u32 = 3222056706; +pub const MEDIA_IOC_ENUM_ENTITIES: u32 = 3238034433; +pub const GSMIOC_GETFIRST: u32 = 1074022148; +pub const FW_CDEV_IOC_FLUSH_ISO: u32 = 2147754776; +pub const VIDIOC_DBG_G_CHIP_INFO: u32 = 3234354790; +pub const F2FS_IOC_RELEASE_VOLATILE_WRITE: u32 = 536933636; +pub const CAPI_GET_SERIAL: u32 = 3221504776; +pub const FDSETDRVPRM: u32 = 2155872912; +pub const IOC_OPAL_SAVE: u32 = 2165862620; +pub const VIDIOC_G_DV_TIMINGS: u32 = 3229898328; +pub const TUNSETIFINDEX: u32 = 2147767514; +pub const CCISS_SETINTINFO: u32 = 2148024835; +pub const CM_IOSDBGLVL: u32 = 2148033530; +pub const RTC_VL_CLR: u32 = 536899604; +pub const VIDIOC_REQBUFS: u32 = 3222558216; +pub const USBDEVFS_REAPURBNDELAY32: u32 = 2147767565; +pub const TEE_IOC_SHM_REGISTER: u32 = 3222840329; +pub const USBDEVFS_SETCONFIGURATION: u32 = 1074025733; +pub const CCISS_GETNODENAME: u32 = 1074807300; +pub const VIDIOC_SUBDEV_S_FRAME_INTERVAL: u32 = 3224393238; +pub const VIDIOC_ENUM_FRAMESIZES: u32 = 3224131146; +pub const VFIO_DEVICE_PCI_HOT_RESET: u32 = 536886129; +pub const FW_CDEV_IOC_SEND_BROADCAST_REQUEST: u32 = 2150114066; +pub const LPSETTIMEOUT_NEW: u32 = 2148533775; +pub const RIO_CM_MPORT_GET_LIST: u32 = 3221512971; +pub const FW_CDEV_IOC_QUEUE_ISO: u32 = 3222807305; +pub const FDRAWCMD: u32 = 536871512; +pub const SCIF_UNREG: u32 = 3222303497; +pub const PPPIOCGIDLE64: u32 = 1074820159; +pub const USBDEVFS_RELEASEINTERFACE: u32 = 1074025744; +pub const VIDIOC_CROPCAP: u32 = 3224131130; +pub const DFL_FPGA_PORT_GET_INFO: u32 = 536917569; +pub const PHN_SET_REGS: u32 = 2148036611; +pub const ATMLEC_DATA: u32 = 536895953; +pub const PPPOEIOCDFWD: u32 = 536916225; +pub const VIDIOC_S_SELECTION: u32 = 3225441887; +pub const SNAPSHOT_FREE_SWAP_PAGES: u32 = 536883977; +pub const BTRFS_IOC_LOGICAL_INO: u32 = 3224933412; +pub const VIDIOC_S_CTRL: u32 = 3221771804; +pub const ZATM_SETPOOL: u32 = 2148557155; +pub const MTIOCPOS: u32 = 1074294019; +pub const PMU_IOC_SLEEP: u32 = 536887808; +pub const AUTOFS_DEV_IOCTL_PROTOSUBVER: u32 = 3222836083; +pub const VBG_IOCTL_CHANGE_FILTER_MASK: u32 = 3223344652; +pub const NILFS_IOCTL_GET_SUSTAT: u32 = 1076915845; +pub const VIDIOC_QUERYCAP: u32 = 1080579584; +pub const HPET_INFO: u32 = 1075341315; +pub const VIDIOC_AM437X_CCDC_CFG: u32 = 2148030145; +pub const DM_LIST_DEVICES: u32 = 3241737474; +pub const TUNSETOWNER: u32 = 2147767500; +pub const VBG_IOCTL_CHANGE_GUEST_CAPABILITIES: u32 = 3223344654; +pub const RNDADDENTROPY: u32 = 2148028931; +pub const USBDEVFS_RESET: u32 = 536892692; +pub const BTRFS_IOC_SUBVOL_CREATE: u32 = 2415957006; +pub const USBDEVFS_FORBID_SUSPEND: u32 = 536892705; +pub const FDGETDRVTYP: u32 = 1074790927; +pub const PPWCONTROL: u32 = 2147577988; +pub const VIDIOC_ENUM_FRAMEINTERVALS: u32 = 3224655435; +pub const KCOV_DISABLE: u32 = 536896357; +pub const IOC_OPAL_ACTIVATE_LSP: u32 = 2165862623; +pub const VHOST_VDPA_GET_IOVA_RANGE: u32 = 1074835320; +pub const PPPIOCSPASS: u32 = 2148561991; +pub const RIO_CM_CHAN_CONNECT: u32 = 2148033288; +pub const I2OSWDEL: u32 = 3224398087; +pub const FS_IOC_SET_ENCRYPTION_POLICY: u32 = 1074554387; +pub const IOC_OPAL_MBR_DONE: u32 = 2165338345; +pub const PPPIOCSMAXCID: u32 = 2147775569; +pub const PPSETPHASE: u32 = 2147774612; +pub const VHOST_VDPA_SET_VRING_ENABLE: u32 = 2148052853; +pub const USBDEVFS_GET_SPEED: u32 = 536892703; +pub const SONET_GETFRAMING: u32 = 1074028822; +pub const VIDIOC_QUERYBUF: u32 = 3227014665; +pub const VIDIOC_S_EDID: u32 = 3223868969; +pub const BTRFS_IOC_QGROUP_ASSIGN: u32 = 2149094441; +pub const PPS_GETCAP: u32 = 1074294947; +pub const SNAPSHOT_PLATFORM_SUPPORT: u32 = 536883983; +pub const LIRC_SET_REC_TIMEOUT_REPORTS: u32 = 2147772697; +pub const SCIF_GET_NODEIDS: u32 = 3222827790; +pub const NBD_DISCONNECT: u32 = 536914696; +pub const VIDIOC_SUBDEV_G_FRAME_INTERVAL: u32 = 3224393237; +pub const VFIO_IOMMU_DISABLE: u32 = 536886132; +pub const SNAPSHOT_CREATE_IMAGE: u32 = 2147758865; +pub const SNAPSHOT_POWER_OFF: u32 = 536883984; +pub const APM_IOC_STANDBY: u32 = 536887553; +pub const PPPIOCGUNIT: u32 = 1074033750; +pub const AUTOFS_IOC_EXPIRE_MULTI: u32 = 2147783526; +pub const SCIF_BIND: u32 = 3221779201; +pub const IOC_WATCH_QUEUE_SET_SIZE: u32 = 536893280; +pub const NILFS_IOCTL_CHANGE_CPMODE: u32 = 2148560512; +pub const IOC_OPAL_LOCK_UNLOCK: u32 = 2165862621; +pub const F2FS_IOC_SET_PIN_FILE: u32 = 2147808525; +pub const PPPIOCGRASYNCMAP: u32 = 1074033749; +pub const MMTIMER_MMAPAVAIL: u32 = 536898822; +pub const I2OPASSTHRU32: u32 = 1074293004; +pub const DFL_FPGA_FME_PORT_RELEASE: u32 = 2147792513; +pub const VIDIOC_SUBDEV_QUERY_DV_TIMINGS: u32 = 1082414691; +pub const UI_SET_SNDBIT: u32 = 2147767658; +pub const VIDIOC_G_AUDOUT: u32 = 1077171761; +pub const RTC_PLL_SET: u32 = 2149609490; +pub const VIDIOC_ENUMAUDIO: u32 = 3224655425; +pub const AUTOFS_DEV_IOCTL_TIMEOUT: u32 = 3222836090; +pub const VBG_IOCTL_DRIVER_VERSION_INFO: u32 = 3224131072; +pub const VHOST_SCSI_GET_EVENTS_MISSED: u32 = 2147790660; +pub const VHOST_SET_VRING_ADDR: u32 = 2150149905; +pub const VDUSE_CREATE_DEV: u32 = 2169536770; +pub const FDFLUSH: u32 = 536871499; +pub const VBG_IOCTL_WAIT_FOR_EVENTS: u32 = 3223344650; +pub const DFL_FPGA_FME_ERR_SET_IRQ: u32 = 2148054660; +pub const F2FS_IOC_GET_PIN_FILE: u32 = 1074066702; +pub const SCIF_CONNECT: u32 = 3221779203; +pub const BLKREPORTZONE: u32 = 3222278786; +pub const AUTOFS_IOC_ASKUMOUNT: u32 = 1074041712; +pub const ATM_ADDPARTY: u32 = 2148557300; +pub const FDSETPRM: u32 = 2149581378; +pub const ATM_GETSTATZ: u32 = 2148557137; +pub const ISST_IF_MSR_COMMAND: u32 = 3221814788; +pub const BTRFS_IOC_GET_SUBVOL_INFO: u32 = 1106809916; +pub const VIDIOC_UNSUBSCRIBE_EVENT: u32 = 2149602907; +pub const SEV_ISSUE_CMD: u32 = 3222295296; +pub const GPIOHANDLE_SET_LINE_VALUES_IOCTL: u32 = 3225465865; +pub const PCITEST_COPY: u32 = 2148028422; +pub const IPMICTL_GET_MY_ADDRESS_CMD: u32 = 1074030866; +pub const CHIOGPICKER: u32 = 1074029316; +pub const CAPI_NCCI_OPENCOUNT: u32 = 1074021158; +pub const CXL_MEM_SEND_COMMAND: u32 = 3224423938; +pub const PERF_EVENT_IOC_SET_FILTER: u32 = 2148017158; +pub const IOC_OPAL_REVERT_TPR: u32 = 2164814050; +pub const CHIOGVPARAMS: u32 = 1081107219; +pub const PTP_PEROUT_REQUEST: u32 = 2151169283; +pub const FSI_SCOM_CHECK: u32 = 1074033408; +pub const RTC_IRQP_READ: u32 = 1074294795; +pub const RIO_MPORT_MAINT_READ_LOCAL: u32 = 1075342597; +pub const HIDIOCGRDESCSIZE: u32 = 1074022401; +pub const UI_GET_VERSION: u32 = 1074025773; +pub const NILFS_IOCTL_GET_CPSTAT: u32 = 1075342979; +pub const CCISS_GETBUSTYPES: u32 = 1074020871; +pub const VFIO_IOMMU_SPAPR_TCE_CREATE: u32 = 536886135; +pub const VIDIOC_EXPBUF: u32 = 3225441808; +pub const UI_SET_RELBIT: u32 = 2147767654; +pub const VFIO_SET_IOMMU: u32 = 536886118; +pub const VIDIOC_S_MODULATOR: u32 = 2151962167; +pub const TUNGETFILTER: u32 = 1074812123; +pub const MEYEIOC_SYNC: u32 = 3221518019; +pub const CCISS_SETNODENAME: u32 = 2148549125; +pub const FBIO_GETCONTROL2: u32 = 1074284169; +pub const TUNSETDEBUG: u32 = 2147767497; +pub const DM_DEV_REMOVE: u32 = 3241737476; +pub const HIDIOCSUSAGES: u32 = 2417772564; +pub const FS_IOC_ADD_ENCRYPTION_KEY: u32 = 3226494487; +pub const FBIOGET_VBLANK: u32 = 1075856914; +pub const ATM_GETSTAT: u32 = 2148557136; +pub const VIDIOC_G_JPEGCOMP: u32 = 1082938941; +pub const TUNATTACHFILTER: u32 = 2148553941; +pub const UI_SET_ABSBIT: u32 = 2147767655; +pub const DFL_FPGA_PORT_ERR_GET_IRQ_NUM: u32 = 1074050629; +pub const USBDEVFS_REAPURB32: u32 = 2147767564; +pub const BTRFS_IOC_TRANS_END: u32 = 536908807; +pub const CAPI_REGISTER: u32 = 2148287233; +pub const F2FS_IOC_COMPRESS_FILE: u32 = 536933656; +pub const USBDEVFS_DISCARDURB: u32 = 536892683; +pub const HE_GET_REG: u32 = 2148557152; +pub const ATM_SETLOOP: u32 = 2148557139; +pub const ATMSIGD_CTRL: u32 = 536895984; +pub const CIOC_KERNEL_VERSION: u32 = 3221775114; +pub const BTRFS_IOC_CLONE_RANGE: u32 = 2149618701; +pub const SNAPSHOT_UNFREEZE: u32 = 536883970; +pub const F2FS_IOC_START_VOLATILE_WRITE: u32 = 536933635; +pub const PMU_IOC_HAS_ADB: u32 = 1074283012; +pub const I2OGETIOPS: u32 = 1075865856; +pub const VIDIOC_S_FBUF: u32 = 2150651403; +pub const PPRCONTROL: u32 = 1073836163; +pub const CHIOSPICKER: u32 = 2147771141; +pub const VFIO_IOMMU_SPAPR_REGISTER_MEMORY: u32 = 536886133; +pub const TUNGETSNDBUF: u32 = 1074025683; +pub const GSMIOC_SETCONF: u32 = 2152482561; +pub const IOC_PR_PREEMPT: u32 = 2149085387; +pub const KCOV_INIT_TRACE: u32 = 1074291457; +pub const SONYPI_IOCGBAT1CAP: u32 = 1073903106; +pub const SWITCHTEC_IOCTL_FLASH_INFO: u32 = 1074812736; +pub const MTIOCTOP: u32 = 2148035841; +pub const VHOST_VDPA_SET_STATUS: u32 = 2147594098; +pub const VHOST_SCSI_SET_EVENTS_MISSED: u32 = 2147790659; +pub const VFIO_IOMMU_DIRTY_PAGES: u32 = 536886133; +pub const BTRFS_IOC_SCRUB_PROGRESS: u32 = 3288372253; +pub const PPPIOCGMRU: u32 = 1074033747; +pub const BTRFS_IOC_DEV_REPLACE: u32 = 3391657013; +pub const PPPIOCGFLAGS: u32 = 1074033754; +pub const NILFS_IOCTL_SET_SUINFO: u32 = 2149084813; +pub const FW_CDEV_IOC_GET_CYCLE_TIMER2: u32 = 3222807316; +pub const ATM_DELLECSADDR: u32 = 2148557199; +pub const FW_CDEV_IOC_GET_SPEED: u32 = 536879889; +pub const PPPIOCGIDLE32: u32 = 1074295871; +pub const VFIO_DEVICE_RESET: u32 = 536886127; +pub const GPIO_GET_LINEINFO_UNWATCH_IOCTL: u32 = 3221533708; +pub const WDIOC_GETSTATUS: u32 = 1074026241; +pub const BTRFS_IOC_SET_FEATURES: u32 = 2150667321; +pub const IOCTL_MEI_CONNECT_CLIENT: u32 = 3222292481; +pub const VIDIOC_OMAP3ISP_AEWB_CFG: u32 = 3223344835; +pub const PCITEST_READ: u32 = 2148028421; +pub const VFIO_GROUP_GET_STATUS: u32 = 536886119; +pub const MATROXFB_GET_ALL_OUTPUTS: u32 = 1074294523; +pub const USBDEVFS_CLEAR_HALT: u32 = 1074025749; +pub const VIDIOC_DECODER_CMD: u32 = 3225966176; +pub const VIDIOC_G_AUDIO: u32 = 1077171745; +pub const CCISS_RESCANDISK: u32 = 536887824; +pub const RIO_DISABLE_PORTWRITE_RANGE: u32 = 2148560140; +pub const IOC_OPAL_SECURE_ERASE_LR: u32 = 2165338343; +pub const USBDEVFS_REAPURB: u32 = 2148029708; +pub const DFL_FPGA_CHECK_EXTENSION: u32 = 536917505; +pub const AUTOFS_IOC_PROTOVER: u32 = 1074041699; +pub const FSL_HV_IOCTL_MEMCPY: u32 = 3223891717; +pub const BTRFS_IOC_GET_FEATURES: u32 = 1075352633; +pub const PCITEST_MSIX: u32 = 2147766279; +pub const BTRFS_IOC_DEFRAG_RANGE: u32 = 2150667280; +pub const UI_BEGIN_FF_ERASE: u32 = 3222033866; +pub const DM_GET_TARGET_VERSION: u32 = 3241737489; +pub const PPPIOCGIDLE: u32 = 1074820159; +pub const NVRAM_SETCKS: u32 = 536899649; +pub const WDIOC_GETSUPPORT: u32 = 1076385536; +pub const GSMIOC_ENABLE_NET: u32 = 2150909698; +pub const GPIO_GET_CHIPINFO_IOCTL: u32 = 1078244353; +pub const NE_ADD_VCPU: u32 = 3221532193; +pub const EVIOCSKEYCODE_V2: u32 = 2150122756; +pub const PTP_SYS_OFFSET_EXTENDED2: u32 = 3300932882; +pub const SCIF_FENCE_WAIT: u32 = 3221517072; +pub const RIO_TRANSFER: u32 = 3222826261; +pub const FSL_HV_IOCTL_DOORBELL: u32 = 3221794566; +pub const RIO_MPORT_MAINT_WRITE_LOCAL: u32 = 2149084422; +pub const I2OEVTREG: u32 = 2148296970; +pub const I2OPARMGET: u32 = 3223873796; +pub const EVIOCGID: u32 = 1074283778; +pub const BTRFS_IOC_QGROUP_CREATE: u32 = 2148570154; +pub const AUTOFS_DEV_IOCTL_SETPIPEFD: u32 = 3222836088; +pub const VIDIOC_S_PARM: u32 = 3234616854; +pub const TUNSETSTEERINGEBPF: u32 = 1074025696; +pub const ATM_GETNAMES: u32 = 2148557187; +pub const VIDIOC_QUERYMENU: u32 = 3224131109; +pub const DFL_FPGA_PORT_DMA_UNMAP: u32 = 536917572; +pub const I2OLCTGET: u32 = 3222825218; +pub const FS_IOC_GET_ENCRYPTION_PWSALT: u32 = 2148558356; +pub const NS_SETBUFLEV: u32 = 2148557154; +pub const BLKCLOSEZONE: u32 = 2148536967; +pub const SONET_GETFRSENSE: u32 = 1074159895; +pub const UI_SET_EVBIT: u32 = 2147767652; +pub const DM_LIST_VERSIONS: u32 = 3241737485; +pub const HIDIOCGSTRING: u32 = 1090799620; +pub const PPPIOCATTCHAN: u32 = 2147775544; +pub const VDUSE_DEV_SET_CONFIG: u32 = 2148040978; +pub const TUNGETFEATURES: u32 = 1074025679; +pub const VFIO_GROUP_UNSET_CONTAINER: u32 = 536886121; +pub const IPMICTL_SET_MY_ADDRESS_CMD: u32 = 1074030865; +pub const CCISS_REGNEWDISK: u32 = 2147762701; +pub const VIDIOC_QUERY_DV_TIMINGS: u32 = 1082414691; +pub const PHN_SETREGS: u32 = 2150133768; +pub const FAT_IOCTL_GET_ATTRIBUTES: u32 = 1074033168; +pub const FSL_MC_SEND_MC_COMMAND: u32 = 3225440992; +pub const TUNGETIFF: u32 = 1074025682; +pub const PTP_CLOCK_GETCAPS2: u32 = 1079000330; +pub const BTRFS_IOC_RESIZE: u32 = 2415956995; +pub const VHOST_SET_VRING_ENDIAN: u32 = 2148052755; +pub const PPS_KC_BIND: u32 = 2148036773; +pub const F2FS_IOC_WRITE_CHECKPOINT: u32 = 536933639; +pub const UI_SET_FFBIT: u32 = 2147767659; +pub const IPMICTL_GET_MY_LUN_CMD: u32 = 1074030868; +pub const CEC_ADAP_G_PHYS_ADDR: u32 = 1073897729; +pub const CEC_G_MODE: u32 = 1074028808; +pub const USBDEVFS_RESETEP: u32 = 1074025731; +pub const MEDIA_REQUEST_IOC_QUEUE: u32 = 536902784; +pub const USBDEVFS_ALLOC_STREAMS: u32 = 1074287900; +pub const MGSL_IOCSXCTRL: u32 = 536898837; +pub const MEDIA_IOC_G_TOPOLOGY: u32 = 3225975812; +pub const PPPIOCUNBRIDGECHAN: u32 = 536900660; +pub const F2FS_IOC_COMMIT_ATOMIC_WRITE: u32 = 536933634; +pub const ISST_IF_GET_PLATFORM_INFO: u32 = 1074331136; +pub const SCIF_FENCE_MARK: u32 = 3222303503; +pub const USBDEVFS_RELEASE_PORT: u32 = 1074025753; +pub const VFIO_CHECK_EXTENSION: u32 = 536886117; +pub const BTRFS_IOC_QGROUP_LIMIT: u32 = 1076925483; +pub const FAT_IOCTL_GET_VOLUME_ID: u32 = 1074033171; +pub const UI_SET_PHYS: u32 = 2148029804; +pub const FDWERRORGET: u32 = 1076363799; +pub const VIDIOC_SUBDEV_G_EDID: u32 = 3223868968; +pub const MGSL_IOCGSTATS: u32 = 536898823; +pub const RPROC_SET_SHUTDOWN_ON_RELEASE: u32 = 2147792641; +pub const SIOCGSTAMP_NEW: u32 = 1074825478; +pub const RTC_WKALM_RD: u32 = 1076391952; +pub const PHN_GET_REG: u32 = 3221778432; +pub const DELL_WMI_SMBIOS_CMD: u32 = 3224655616; +pub const PHN_NOT_OH: u32 = 536899588; +pub const PPGETMODES: u32 = 1074032791; +pub const CHIOGPARAMS: u32 = 1075077894; +pub const VFIO_DEVICE_GET_GFX_DMABUF: u32 = 536886131; +pub const VHOST_SET_VRING_BUSYLOOP_TIMEOUT: u32 = 2148052771; +pub const VIDIOC_SUBDEV_G_SELECTION: u32 = 3225441853; +pub const BTRFS_IOC_RM_DEV_V2: u32 = 2415957050; +pub const MGSL_IOCWAITGPIO: u32 = 3222301970; +pub const PMU_IOC_CAN_SLEEP: u32 = 1074283013; +pub const KCOV_ENABLE: u32 = 536896356; +pub const BTRFS_IOC_CLONE: u32 = 2147783689; +pub const F2FS_IOC_DEFRAGMENT: u32 = 3222336776; +pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE: u32 = 2147754766; +pub const AGPIOC_ALLOCATE: u32 = 3221766406; +pub const NE_SET_USER_MEMORY_REGION: u32 = 2149101091; +pub const MGSL_IOCTXABORT: u32 = 536898822; +pub const MGSL_IOCSGPIO: u32 = 2148560144; +pub const LIRC_SET_REC_CARRIER: u32 = 2147772692; +pub const F2FS_IOC_FLUSH_DEVICE: u32 = 2148070666; +pub const SNAPSHOT_ATOMIC_RESTORE: u32 = 536883972; +pub const RTC_UIE_OFF: u32 = 536899588; +pub const BT_BMC_IOCTL_SMS_ATN: u32 = 536916224; +pub const NVME_IOCTL_ID: u32 = 536890944; +pub const NE_START_ENCLAVE: u32 = 3222318628; +pub const VIDIOC_STREAMON: u32 = 2147767826; +pub const FDPOLLDRVSTAT: u32 = 1078985235; +pub const AUTOFS_DEV_IOCTL_READY: u32 = 3222836086; +pub const VIDIOC_ENUMAUDOUT: u32 = 3224655426; +pub const VIDIOC_SUBDEV_S_STD: u32 = 2148029976; +pub const WDIOC_GETTIMELEFT: u32 = 1074026250; +pub const ATM_GETLINKRATE: u32 = 2148557185; +pub const RTC_WKALM_SET: u32 = 2150133775; +pub const VHOST_GET_BACKEND_FEATURES: u32 = 1074310950; +pub const ATMARP_ENCAP: u32 = 536895973; +pub const CAPI_GET_FLAGS: u32 = 1074021155; +pub const IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD: u32 = 1074030872; +pub const DFL_FPGA_FME_PORT_ASSIGN: u32 = 2147792514; +pub const NS_GET_OWNER_UID: u32 = 536917764; +pub const VIDIOC_OVERLAY: u32 = 2147767822; +pub const BTRFS_IOC_WAIT_SYNC: u32 = 2148045846; +pub const GPIOHANDLE_SET_CONFIG_IOCTL: u32 = 3226776586; +pub const VHOST_GET_VRING_ENDIAN: u32 = 2148052756; +pub const ATM_GETADDR: u32 = 2148557190; +pub const PHN_GET_REGS: u32 = 3221778434; +pub const AUTOFS_DEV_IOCTL_REQUESTER: u32 = 3222836091; +pub const AUTOFS_DEV_IOCTL_EXPIRE: u32 = 3222836092; +pub const SNAPSHOT_S2RAM: u32 = 536883979; +pub const JSIOCSAXMAP: u32 = 2151705137; +pub const F2FS_IOC_SET_COMPRESS_OPTION: u32 = 2147677462; +pub const VBG_IOCTL_HGCM_DISCONNECT: u32 = 3223082501; +pub const SCIF_FENCE_SIGNAL: u32 = 3223876369; +pub const VFIO_DEVICE_GET_PCI_HOT_RESET_INFO: u32 = 536886128; +pub const VIDIOC_SUBDEV_ENUM_MBUS_CODE: u32 = 3224393218; +pub const MMTIMER_GETOFFSET: u32 = 536898816; +pub const RIO_CM_CHAN_LISTEN: u32 = 2147640070; +pub const ATM_SETSC: u32 = 2147770865; +pub const F2FS_IOC_SHUTDOWN: u32 = 1074026621; +pub const NVME_IOCTL_RESCAN: u32 = 536890950; +pub const BLKOPENZONE: u32 = 2148536966; +pub const DM_VERSION: u32 = 3241737472; +pub const CEC_TRANSMIT: u32 = 3224920325; +pub const FS_IOC_GET_ENCRYPTION_POLICY_EX: u32 = 3221841430; +pub const SIOCMKCLIP: u32 = 536895968; +pub const IPMI_BMC_IOCTL_CLEAR_SMS_ATN: u32 = 536916225; +pub const HIDIOCGVERSION: u32 = 1074022401; +pub const VIDIOC_S_INPUT: u32 = 3221509671; +pub const VIDIOC_G_CROP: u32 = 3222558267; +pub const LIRC_SET_WIDEBAND_RECEIVER: u32 = 2147772707; +pub const EVIOCGEFFECTS: u32 = 1074021764; +pub const UVCIOC_CTRL_QUERY: u32 = 3222304033; +pub const IOC_OPAL_GENERIC_TABLE_RW: u32 = 2167959787; +pub const FS_IOC_READ_VERITY_METADATA: u32 = 3223873159; +pub const ND_IOCTL_SET_CONFIG_DATA: u32 = 3221769734; +pub const USBDEVFS_GETDRIVER: u32 = 2164544776; +pub const IDT77105_GETSTAT: u32 = 2148557106; +pub const HIDIOCINITREPORT: u32 = 536889349; +pub const VFIO_DEVICE_GET_INFO: u32 = 536886123; +pub const RIO_CM_CHAN_RECEIVE: u32 = 3222299402; +pub const RNDGETENTCNT: u32 = 1074024960; +pub const PPPIOCNEWUNIT: u32 = 3221517374; +pub const BTRFS_IOC_INO_LOOKUP: u32 = 3489698834; +pub const FDRESET: u32 = 536871508; +pub const IOC_PR_REGISTER: u32 = 2149085384; +pub const HIDIOCSREPORT: u32 = 2148288520; +pub const TEE_IOC_OPEN_SESSION: u32 = 1074832386; +pub const TEE_IOC_SUPPL_RECV: u32 = 1074832390; +pub const BTRFS_IOC_BALANCE_CTL: u32 = 2147783713; +pub const GPIO_GET_LINEINFO_WATCH_IOCTL: u32 = 3225990155; +pub const HIDIOCGRAWINFO: u32 = 1074284547; +pub const PPPIOCSCOMPRESS: u32 = 2148561997; +pub const USBDEVFS_CONNECTINFO: u32 = 2148029713; +pub const BLKRESETZONE: u32 = 2148536963; +pub const CHIOINITELEM: u32 = 536896273; +pub const NILFS_IOCTL_SET_ALLOC_RANGE: u32 = 2148560524; +pub const AUTOFS_DEV_IOCTL_CATATONIC: u32 = 3222836089; +pub const RIO_MPORT_MAINT_HDID_SET: u32 = 2147642625; +pub const PPGETPHASE: u32 = 1074032793; +pub const USBDEVFS_DISCONNECT_CLAIM: u32 = 1091065115; +pub const FDMSGON: u32 = 536871493; +pub const VIDIOC_G_SLICED_VBI_CAP: u32 = 3228849733; +pub const BTRFS_IOC_BALANCE_V2: u32 = 3288372256; +pub const MEDIA_REQUEST_IOC_REINIT: u32 = 536902785; +pub const IOC_OPAL_ERASE_LR: u32 = 2165338342; +pub const FDFMTBEG: u32 = 536871495; +pub const RNDRESEEDCRNG: u32 = 536891911; +pub const ISST_IF_GET_PHY_ID: u32 = 3221814785; +pub const TUNSETNOCSUM: u32 = 2147767496; +pub const SONET_GETSTAT: u32 = 1076125968; +pub const TFD_IOC_SET_TICKS: u32 = 2148029440; +pub const PPDATADIR: u32 = 2147774608; +pub const IOC_OPAL_ENABLE_DISABLE_MBR: u32 = 2165338341; +pub const GPIO_V2_GET_LINE_IOCTL: u32 = 3260068871; +pub const RIO_CM_CHAN_SEND: u32 = 2148557577; +pub const PPWCTLONIRQ: u32 = 2147578002; +pub const SONYPI_IOCGBRT: u32 = 1073837568; +pub const IOC_PR_RELEASE: u32 = 2148561098; +pub const PPCLRIRQ: u32 = 1074032787; +pub const IPMICTL_SET_MY_CHANNEL_LUN_CMD: u32 = 1074030874; +pub const MGSL_IOCSXSYNC: u32 = 536898835; +pub const HPET_IE_OFF: u32 = 536897538; +pub const IOC_OPAL_ACTIVATE_USR: u32 = 2165338337; +pub const SONET_SETFRAMING: u32 = 2147770645; +pub const PERF_EVENT_IOC_PAUSE_OUTPUT: u32 = 2147755017; +pub const BTRFS_IOC_LOGICAL_INO_V2: u32 = 3224933435; +pub const VBG_IOCTL_HGCM_CONNECT: u32 = 3231471108; +pub const BLKFINISHZONE: u32 = 2148536968; +pub const EVIOCREVOKE: u32 = 2147763601; +pub const VFIO_DEVICE_FEATURE: u32 = 536886133; +pub const CCISS_GETPCIINFO: u32 = 1074283009; +pub const ISST_IF_MBOX_COMMAND: u32 = 3221814787; +pub const SCIF_ACCEPTREQ: u32 = 3222303492; +pub const PERF_EVENT_IOC_QUERY_BPF: u32 = 3221758986; +pub const VIDIOC_STREAMOFF: u32 = 2147767827; +pub const VDUSE_DESTROY_DEV: u32 = 2164293891; +pub const FDGETFDCSTAT: u32 = 1076363797; +pub const CM_IOCGATR: u32 = 3221775105; +pub const VIDIOC_S_PRIORITY: u32 = 2147767876; +pub const SNAPSHOT_FREEZE: u32 = 536883969; +pub const VIDIOC_ENUMINPUT: u32 = 3226490394; +pub const ZATM_GETPOOLZ: u32 = 2148557154; +pub const RIO_DISABLE_DOORBELL_RANGE: u32 = 2148035850; +pub const GPIO_V2_GET_LINEINFO_WATCH_IOCTL: u32 = 3238048774; +pub const VIDIOC_G_STD: u32 = 1074288151; +pub const USBDEVFS_ALLOW_SUSPEND: u32 = 536892706; +pub const SONET_GETSTATZ: u32 = 1076125969; +pub const SCIF_ACCEPTREG: u32 = 3221779205; +pub const VIDIOC_ENCODER_CMD: u32 = 3223869005; +pub const PPPIOCSRASYNCMAP: u32 = 2147775572; +pub const IOCTL_MEI_NOTIFY_SET: u32 = 2147764226; +pub const BTRFS_IOC_QUOTA_RESCAN_STATUS: u32 = 1077974061; +pub const F2FS_IOC_GARBAGE_COLLECT: u32 = 2147808518; +pub const ATMLEC_CTRL: u32 = 536895952; +pub const MATROXFB_GET_AVAILABLE_OUTPUTS: u32 = 1074294521; +pub const DM_DEV_CREATE: u32 = 3241737475; +pub const VHOST_VDPA_GET_VRING_NUM: u32 = 1073917814; +pub const VIDIOC_G_CTRL: u32 = 3221771803; +pub const NBD_CLEAR_SOCK: u32 = 536914692; +pub const VFIO_DEVICE_QUERY_GFX_PLANE: u32 = 536886130; +pub const WDIOC_KEEPALIVE: u32 = 1074026245; +pub const NVME_IOCTL_SUBSYS_RESET: u32 = 536890949; +pub const PTP_EXTTS_REQUEST2: u32 = 2148547851; +pub const PCITEST_BAR: u32 = 536891393; +pub const MGSL_IOCGGPIO: u32 = 1074818321; +pub const EVIOCSREP: u32 = 2148025603; +pub const VFIO_DEVICE_GET_IRQ_INFO: u32 = 536886125; +pub const HPET_DPI: u32 = 536897541; +pub const VDUSE_VQ_SETUP_KICKFD: u32 = 2148040982; +pub const ND_IOCTL_CALL: u32 = 3225439754; +pub const HIDIOCGDEVINFO: u32 = 1075595267; +pub const DM_TABLE_DEPS: u32 = 3241737483; +pub const BTRFS_IOC_DEV_INFO: u32 = 3489698846; +pub const VDUSE_IOTLB_GET_FD: u32 = 3223355664; +pub const FW_CDEV_IOC_GET_INFO: u32 = 3223855872; +pub const VIDIOC_G_PRIORITY: u32 = 1074026051; +pub const ATM_NEWBACKENDIF: u32 = 2147639795; +pub const VIDIOC_S_EXT_CTRLS: u32 = 3223344712; +pub const VIDIOC_SUBDEV_ENUM_DV_TIMINGS: u32 = 3230946914; +pub const VIDIOC_OMAP3ISP_CCDC_CFG: u32 = 3224917697; +pub const VIDIOC_S_HW_FREQ_SEEK: u32 = 2150651474; +pub const DM_TABLE_LOAD: u32 = 3241737481; +pub const F2FS_IOC_START_ATOMIC_WRITE: u32 = 536933633; +pub const VIDIOC_G_OUTPUT: u32 = 1074026030; +pub const ATM_DROPPARTY: u32 = 2147770869; +pub const CHIOGELEM: u32 = 2154586896; +pub const BTRFS_IOC_GET_SUPPORTED_FEATURES: u32 = 1078498361; +pub const EVIOCSKEYCODE: u32 = 2148025604; +pub const NE_GET_IMAGE_LOAD_INFO: u32 = 3222318626; +pub const TUNSETLINK: u32 = 2147767501; +pub const FW_CDEV_IOC_ADD_DESCRIPTOR: u32 = 3222807302; +pub const BTRFS_IOC_SCRUB_CANCEL: u32 = 536908828; +pub const PPS_SETPARAMS: u32 = 2148036770; +pub const IOC_OPAL_LR_SETUP: u32 = 2166911203; +pub const FW_CDEV_IOC_DEALLOCATE: u32 = 2147754755; +pub const WDIOC_SETTIMEOUT: u32 = 3221509894; +pub const IOC_WATCH_QUEUE_SET_FILTER: u32 = 536893281; +pub const CAPI_GET_MANUFACTURER: u32 = 3221504774; +pub const VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY: u32 = 536886134; +pub const ASPEED_P2A_CTRL_IOCTL_SET_WINDOW: u32 = 2148578048; +pub const VIDIOC_G_EDID: u32 = 3223868968; +pub const F2FS_IOC_GARBAGE_COLLECT_RANGE: u32 = 2149119243; +pub const RIO_MAP_INBOUND: u32 = 3223874833; +pub const IOC_OPAL_TAKE_OWNERSHIP: u32 = 2164814046; +pub const USBDEVFS_CLAIM_PORT: u32 = 1074025752; +pub const VIDIOC_S_AUDIO: u32 = 2150913570; +pub const FS_IOC_GET_ENCRYPTION_NONCE: u32 = 1074816539; +pub const FW_CDEV_IOC_SEND_STREAM_PACKET: u32 = 2150114067; +pub const BTRFS_IOC_SNAP_DESTROY: u32 = 2415957007; +pub const SNAPSHOT_FREE: u32 = 536883973; +pub const I8K_GET_SPEED: u32 = 3221776773; +pub const HIDIOCGREPORT: u32 = 2148288519; +pub const HPET_EPI: u32 = 536897540; +pub const JSIOCSCORR: u32 = 2149870113; +pub const IOC_PR_PREEMPT_ABORT: u32 = 2149085388; +pub const RIO_MAP_OUTBOUND: u32 = 3223874831; +pub const ATM_SETESI: u32 = 2148557196; +pub const FW_CDEV_IOC_START_ISO: u32 = 2148541194; +pub const ATM_DELADDR: u32 = 2148557193; +pub const PPFCONTROL: u32 = 2147643534; +pub const SONYPI_IOCGFAN: u32 = 1073837578; +pub const RTC_IRQP_SET: u32 = 2148036620; +pub const PCITEST_WRITE: u32 = 2148028420; +pub const PPCLAIM: u32 = 536899723; +pub const VIDIOC_S_JPEGCOMP: u32 = 2156680766; +pub const IPMICTL_UNREGISTER_FOR_CMD: u32 = 1073899791; +pub const VHOST_SET_FEATURES: u32 = 2148052736; +pub const TOSHIBA_ACPI_SCI: u32 = 3222828177; +pub const VIDIOC_DQBUF: u32 = 3227014673; +pub const BTRFS_IOC_BALANCE_PROGRESS: u32 = 1140888610; +pub const BTRFS_IOC_SUBVOL_SETFLAGS: u32 = 2148045850; +pub const ATMLEC_MCAST: u32 = 536895954; +pub const MMTIMER_GETFREQ: u32 = 1074294018; +pub const VIDIOC_G_SELECTION: u32 = 3225441886; +pub const RTC_ALM_SET: u32 = 2149871623; +pub const PPPOEIOCSFWD: u32 = 2148053248; +pub const IPMICTL_GET_MAINTENANCE_MODE_CMD: u32 = 1074030878; +pub const FS_IOC_ENABLE_VERITY: u32 = 2155898501; +pub const NILFS_IOCTL_GET_BDESCS: u32 = 3222826631; +pub const FDFMTEND: u32 = 536871497; +pub const DMA_BUF_SET_NAME: u32 = 2148033025; +pub const UI_BEGIN_FF_UPLOAD: u32 = 3228063176; +pub const RTC_UIE_ON: u32 = 536899587; +pub const PPRELEASE: u32 = 536899724; +pub const VFIO_IOMMU_UNMAP_DMA: u32 = 536886130; +pub const VIDIOC_OMAP3ISP_PRV_CFG: u32 = 3228587714; +pub const GPIO_GET_LINEHANDLE_IOCTL: u32 = 3245126659; +pub const VFAT_IOCTL_READDIR_BOTH: u32 = 1110471169; +pub const NVME_IOCTL_ADMIN_CMD: u32 = 3225964097; +pub const VHOST_SET_VRING_KICK: u32 = 2148052768; +pub const BTRFS_IOC_SUBVOL_CREATE_V2: u32 = 2415957016; +pub const BTRFS_IOC_SNAP_CREATE: u32 = 2415956993; +pub const SONYPI_IOCGBAT2CAP: u32 = 1073903108; +pub const PPNEGOT: u32 = 2147774609; +pub const NBD_PRINT_DEBUG: u32 = 536914694; +pub const BTRFS_IOC_INO_LOOKUP_USER: u32 = 3489698878; +pub const BTRFS_IOC_GET_SUBVOL_ROOTREF: u32 = 3489698877; +pub const FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS: u32 = 3225445913; +pub const BTRFS_IOC_FS_INFO: u32 = 1140888607; +pub const VIDIOC_ENUM_FMT: u32 = 3225441794; +pub const VIDIOC_G_INPUT: u32 = 1074026022; +pub const VTPM_PROXY_IOC_NEW_DEV: u32 = 3222577408; +pub const DFL_FPGA_FME_ERR_GET_IRQ_NUM: u32 = 1074050691; +pub const ND_IOCTL_DIMM_FLAGS: u32 = 3221769731; +pub const BTRFS_IOC_QUOTA_RESCAN: u32 = 2151715884; +pub const MMTIMER_GETCOUNTER: u32 = 1074294025; +pub const MATROXFB_GET_OUTPUT_MODE: u32 = 3221778170; +pub const BTRFS_IOC_QUOTA_RESCAN_WAIT: u32 = 536908846; +pub const RIO_CM_CHAN_BIND: u32 = 2148033285; +pub const HIDIOCGRDESC: u32 = 1342457858; +pub const MGSL_IOCGIF: u32 = 536898827; +pub const VIDIOC_S_OUTPUT: u32 = 3221509679; +pub const HIDIOCGREPORTINFO: u32 = 3222030345; +pub const WDIOC_GETBOOTSTATUS: u32 = 1074026242; +pub const VDUSE_VQ_GET_INFO: u32 = 3224404245; +pub const ACRN_IOCTL_ASSIGN_PCIDEV: u32 = 2149884501; +pub const BLKGETDISKSEQ: u32 = 1074270848; +pub const ACRN_IOCTL_PM_GET_CPU_STATE: u32 = 3221791328; +pub const ACRN_IOCTL_DESTROY_VM: u32 = 536912401; +pub const ACRN_IOCTL_SET_PTDEV_INTR: u32 = 2148835923; +pub const ACRN_IOCTL_CREATE_IOREQ_CLIENT: u32 = 536912434; +pub const ACRN_IOCTL_IRQFD: u32 = 2149098097; +pub const ACRN_IOCTL_CREATE_VM: u32 = 3224412688; +pub const ACRN_IOCTL_INJECT_MSI: u32 = 2148573731; +pub const ACRN_IOCTL_ATTACH_IOREQ_CLIENT: u32 = 536912435; +pub const ACRN_IOCTL_RESET_PTDEV_INTR: u32 = 2148835924; +pub const ACRN_IOCTL_NOTIFY_REQUEST_FINISH: u32 = 2148049457; +pub const ACRN_IOCTL_SET_IRQLINE: u32 = 2148049445; +pub const ACRN_IOCTL_START_VM: u32 = 536912402; +pub const ACRN_IOCTL_SET_VCPU_REGS: u32 = 2166923798; +pub const ACRN_IOCTL_SET_MEMSEG: u32 = 2149622337; +pub const ACRN_IOCTL_PAUSE_VM: u32 = 536912403; +pub const ACRN_IOCTL_CLEAR_VM_IOREQ: u32 = 536912437; +pub const ACRN_IOCTL_UNSET_MEMSEG: u32 = 2149622338; +pub const ACRN_IOCTL_IOEVENTFD: u32 = 2149622384; +pub const ACRN_IOCTL_DEASSIGN_PCIDEV: u32 = 2149884502; +pub const ACRN_IOCTL_RESET_VM: u32 = 536912405; +pub const ACRN_IOCTL_DESTROY_IOREQ_CLIENT: u32 = 536912436; +pub const ACRN_IOCTL_VM_INTR_MONITOR: u32 = 2148049444; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/io_uring.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/io_uring.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/io_uring.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/io_uring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1089 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_rwf_t = crate::ctypes::c_int; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +pub struct io_uring_sqe { +pub opcode: __u8, +pub flags: __u8, +pub ioprio: __u16, +pub fd: __s32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, +pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, +pub len: __u32, +pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, +pub user_data: __u64, +pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, +pub personality: __u16, +pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, +pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { +pub cmd_op: __u32, +pub __pad1: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { +pub addr_len: __u16, +pub __pad3: [__u16; 1usize], +} +#[repr(C)] +pub struct io_uring_sqe__bindgen_ty_6 { +pub __bindgen_anon_1: __BindgenUnionField, +pub cmd: __BindgenUnionField<[__u8; 0usize]>, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { +pub addr3: __u64, +pub __pad2: [__u64; 1usize], +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_cqe { +pub user_data: __u64, +pub res: __s32, +pub flags: __u32, +pub big_cqe: __IncompleteArrayField<__u64>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_sqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub flags: __u32, +pub dropped: __u32, +pub array: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_cqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub overflow: __u32, +pub cqes: __u32, +pub flags: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_params { +pub sq_entries: __u32, +pub cq_entries: __u32, +pub flags: __u32, +pub sq_thread_cpu: __u32, +pub sq_thread_idle: __u32, +pub features: __u32, +pub wq_fd: __u32, +pub resv: [__u32; 3usize], +pub sq_off: io_sqring_offsets, +pub cq_off: io_cqring_offsets, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_files_update { +pub offset: __u32, +pub resv: __u32, +pub fds: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_register { +pub nr: __u32, +pub flags: __u32, +pub resv2: __u64, +pub data: __u64, +pub tags: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update2 { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +pub tags: __u64, +pub nr: __u32, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_probe_op { +pub op: __u8, +pub resv: __u8, +pub flags: __u16, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_probe { +pub last_op: __u8, +pub ops_len: __u8, +pub resv: __u16, +pub resv2: [__u32; 3usize], +pub ops: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_restriction { +pub opcode: __u16, +pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, +pub resv: __u8, +pub resv2: [__u32; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf { +pub addr: __u64, +pub len: __u32, +pub bid: __u16, +pub resv: __u16, +} +#[repr(C)] +pub struct io_uring_buf_ring { +pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +} +#[repr(C)] +pub struct io_uring_buf_ring__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { +pub resv1: __u64, +pub resv2: __u32, +pub resv3: __u16, +pub tail: __u16, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { +pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, +pub bufs: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_reg { +pub ring_addr: __u64, +pub ring_entries: __u32, +pub bgid: __u16, +pub flags: __u16, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_getevents_arg { +pub sigmask: __u64, +pub sigmask_sz: __u32, +pub pad: __u32, +pub ts: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sync_cancel_reg { +pub addr: __u64, +pub fd: __s32, +pub flags: __u32, +pub timeout: __kernel_timespec, +pub pad: [__u64; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_file_index_range { +pub off: __u32, +pub len: __u32, +pub resv: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_recvmsg_out { +pub namelen: __u32, +pub controllen: __u32, +pub payloadlen: __u32, +pub flags: __u32, +} +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 536805376; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const IORING_FILE_INDEX_ALLOC: i32 = -1; +pub const IORING_SETUP_IOPOLL: u32 = 1; +pub const IORING_SETUP_SQPOLL: u32 = 2; +pub const IORING_SETUP_SQ_AFF: u32 = 4; +pub const IORING_SETUP_CQSIZE: u32 = 8; +pub const IORING_SETUP_CLAMP: u32 = 16; +pub const IORING_SETUP_ATTACH_WQ: u32 = 32; +pub const IORING_SETUP_R_DISABLED: u32 = 64; +pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; +pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; +pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; +pub const IORING_SETUP_SQE128: u32 = 1024; +pub const IORING_SETUP_CQE32: u32 = 2048; +pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; +pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; +pub const IORING_URING_CMD_FIXED: u32 = 1; +pub const IORING_FSYNC_DATASYNC: u32 = 1; +pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; +pub const IORING_TIMEOUT_MULTISHOT: u32 = 64; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; +pub const IORING_POLL_ADD_LEVEL: u32 = 8; +pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; +pub const IORING_ASYNC_CANCEL_FD: u32 = 2; +pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; +pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; +pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; +pub const IORING_RECV_MULTISHOT: u32 = 2; +pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; +pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; +pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; +pub const IORING_ACCEPT_MULTISHOT: u32 = 1; +pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; +pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; +pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; +pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; +pub const IORING_CQE_F_NOTIF: u32 = 8; +pub const IORING_OFF_SQ_RING: u32 = 0; +pub const IORING_OFF_CQ_RING: u32 = 134217728; +pub const IORING_OFF_SQES: u32 = 268435456; +pub const IORING_OFF_PBUF_RING: u32 = 2147483648; +pub const IORING_OFF_PBUF_SHIFT: u32 = 16; +pub const IORING_OFF_MMAP_MASK: u32 = 4160749568; +pub const IORING_SQ_NEED_WAKEUP: u32 = 1; +pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; +pub const IORING_SQ_TASKRUN: u32 = 4; +pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; +pub const IORING_ENTER_GETEVENTS: u32 = 1; +pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; +pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; +pub const IORING_ENTER_REGISTERED_RING: u32 = 16; +pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; +pub const IORING_FEAT_NODROP: u32 = 2; +pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; +pub const IORING_FEAT_RW_CUR_POS: u32 = 8; +pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; +pub const IORING_FEAT_FAST_POLL: u32 = 32; +pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_FEAT_CQE_SKIP: u32 = 2048; +pub const IORING_FEAT_LINKED_FILE: u32 = 4096; +pub const IORING_FEAT_REG_REG_RING: u32 = 8192; +pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; +pub const IO_URING_OP_SUPPORTED: u32 = 1; +pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_FIXED_FILE_BIT; +pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_DRAIN_BIT; +pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_LINK_BIT; +pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_HARDLINK_BIT; +pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_ASYNC_BIT; +pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_BUFFER_SELECT_BIT; +pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_CQE_SKIP_SUCCESS_BIT; +pub const IORING_MSG_DATA: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_DATA; +pub const IORING_MSG_SEND_FD: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_SEND_FD; +pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = _bindgen_ty_3::IORING_CQE_BUFFER_SHIFT; +pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS; +pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_BUFFERS; +pub const IORING_REGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES; +pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_FILES; +pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD; +pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_EVENTFD; +pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE; +pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD_ASYNC; +pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PROBE; +pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PERSONALITY; +pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PERSONALITY; +pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RESTRICTIONS; +pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_ENABLE_RINGS; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES2; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE2; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS2; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS_UPDATE; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_AFF; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_IOWQ_AFF; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_MAX_WORKERS; +pub const IORING_REGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RING_FDS; +pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_RING_FDS; +pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PBUF_RING; +pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PBUF_RING; +pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_SYNC_CANCEL; +pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILE_ALLOC_RANGE; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_LAST; +pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_USE_REGISTERED_RING; +pub const IO_WQ_BOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_BOUND; +pub const IO_WQ_UNBOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_UNBOUND; +pub const IOU_PBUF_RING_MMAP: _bindgen_ty_6 = _bindgen_ty_6::IOU_PBUF_RING_MMAP; +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_7 = _bindgen_ty_7::IORING_RESTRICTION_REGISTER_OP; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_7 = _bindgen_ty_7::IORING_RESTRICTION_SQE_OP; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_7 = _bindgen_ty_7::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_7 = _bindgen_ty_7::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_7 = _bindgen_ty_7::IORING_RESTRICTION_LAST; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IOSQE_FIXED_FILE_BIT = 0, +IOSQE_IO_DRAIN_BIT = 1, +IOSQE_IO_LINK_BIT = 2, +IOSQE_IO_HARDLINK_BIT = 3, +IOSQE_ASYNC_BIT = 4, +IOSQE_BUFFER_SELECT_BIT = 5, +IOSQE_CQE_SKIP_SUCCESS_BIT = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum io_uring_op { +IORING_OP_NOP = 0, +IORING_OP_READV = 1, +IORING_OP_WRITEV = 2, +IORING_OP_FSYNC = 3, +IORING_OP_READ_FIXED = 4, +IORING_OP_WRITE_FIXED = 5, +IORING_OP_POLL_ADD = 6, +IORING_OP_POLL_REMOVE = 7, +IORING_OP_SYNC_FILE_RANGE = 8, +IORING_OP_SENDMSG = 9, +IORING_OP_RECVMSG = 10, +IORING_OP_TIMEOUT = 11, +IORING_OP_TIMEOUT_REMOVE = 12, +IORING_OP_ACCEPT = 13, +IORING_OP_ASYNC_CANCEL = 14, +IORING_OP_LINK_TIMEOUT = 15, +IORING_OP_CONNECT = 16, +IORING_OP_FALLOCATE = 17, +IORING_OP_OPENAT = 18, +IORING_OP_CLOSE = 19, +IORING_OP_FILES_UPDATE = 20, +IORING_OP_STATX = 21, +IORING_OP_READ = 22, +IORING_OP_WRITE = 23, +IORING_OP_FADVISE = 24, +IORING_OP_MADVISE = 25, +IORING_OP_SEND = 26, +IORING_OP_RECV = 27, +IORING_OP_OPENAT2 = 28, +IORING_OP_EPOLL_CTL = 29, +IORING_OP_SPLICE = 30, +IORING_OP_PROVIDE_BUFFERS = 31, +IORING_OP_REMOVE_BUFFERS = 32, +IORING_OP_TEE = 33, +IORING_OP_SHUTDOWN = 34, +IORING_OP_RENAMEAT = 35, +IORING_OP_UNLINKAT = 36, +IORING_OP_MKDIRAT = 37, +IORING_OP_SYMLINKAT = 38, +IORING_OP_LINKAT = 39, +IORING_OP_MSG_RING = 40, +IORING_OP_FSETXATTR = 41, +IORING_OP_SETXATTR = 42, +IORING_OP_FGETXATTR = 43, +IORING_OP_GETXATTR = 44, +IORING_OP_SOCKET = 45, +IORING_OP_URING_CMD = 46, +IORING_OP_SEND_ZC = 47, +IORING_OP_SENDMSG_ZC = 48, +IORING_OP_LAST = 49, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IORING_MSG_DATA = 0, +IORING_MSG_SEND_FD = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IORING_CQE_BUFFER_SHIFT = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IORING_REGISTER_BUFFERS = 0, +IORING_UNREGISTER_BUFFERS = 1, +IORING_REGISTER_FILES = 2, +IORING_UNREGISTER_FILES = 3, +IORING_REGISTER_EVENTFD = 4, +IORING_UNREGISTER_EVENTFD = 5, +IORING_REGISTER_FILES_UPDATE = 6, +IORING_REGISTER_EVENTFD_ASYNC = 7, +IORING_REGISTER_PROBE = 8, +IORING_REGISTER_PERSONALITY = 9, +IORING_UNREGISTER_PERSONALITY = 10, +IORING_REGISTER_RESTRICTIONS = 11, +IORING_REGISTER_ENABLE_RINGS = 12, +IORING_REGISTER_FILES2 = 13, +IORING_REGISTER_FILES_UPDATE2 = 14, +IORING_REGISTER_BUFFERS2 = 15, +IORING_REGISTER_BUFFERS_UPDATE = 16, +IORING_REGISTER_IOWQ_AFF = 17, +IORING_UNREGISTER_IOWQ_AFF = 18, +IORING_REGISTER_IOWQ_MAX_WORKERS = 19, +IORING_REGISTER_RING_FDS = 20, +IORING_UNREGISTER_RING_FDS = 21, +IORING_REGISTER_PBUF_RING = 22, +IORING_UNREGISTER_PBUF_RING = 23, +IORING_REGISTER_SYNC_CANCEL = 24, +IORING_REGISTER_FILE_ALLOC_RANGE = 25, +IORING_REGISTER_LAST = 26, +IORING_REGISTER_USE_REGISTERED_RING = 2147483648, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IO_WQ_BOUND = 0, +IO_WQ_UNBOUND = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IOU_PBUF_RING_MMAP = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +IORING_RESTRICTION_REGISTER_OP = 0, +IORING_RESTRICTION_SQE_OP = 1, +IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, +IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, +IORING_RESTRICTION_LAST = 4, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_1 { +pub off: __u64, +pub addr2: __u64, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_2 { +pub addr: __u64, +pub splice_off_in: __u64, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_3 { +pub rw_flags: __kernel_rwf_t, +pub fsync_flags: __u32, +pub poll_events: __u16, +pub poll32_events: __u32, +pub sync_range_flags: __u32, +pub msg_flags: __u32, +pub timeout_flags: __u32, +pub accept_flags: __u32, +pub cancel_flags: __u32, +pub open_flags: __u32, +pub statx_flags: __u32, +pub fadvise_advice: __u32, +pub splice_flags: __u32, +pub rename_flags: __u32, +pub unlink_flags: __u32, +pub hardlink_flags: __u32, +pub xattr_flags: __u32, +pub msg_ring_flags: __u32, +pub uring_cmd_flags: __u32, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_4 { +pub buf_index: __u16, +pub buf_group: __u16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { +pub splice_fd_in: __s32, +pub file_index: __u32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_restriction__bindgen_ty_1 { +pub register_op: __u8, +pub sqe_op: __u8, +pub sqe_flags: __u8, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/netlink.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/netlink.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/netlink.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/netlink.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,2868 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_nl { +pub nl_family: __kernel_sa_family_t, +pub nl_pad: crate::ctypes::c_ushort, +pub nl_pid: __u32, +pub nl_groups: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsghdr { +pub nlmsg_len: __u32, +pub nlmsg_type: __u16, +pub nlmsg_flags: __u16, +pub nlmsg_seq: __u32, +pub nlmsg_pid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsgerr { +pub error: crate::ctypes::c_int, +pub msg: nlmsghdr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_pktinfo { +pub group: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_req { +pub nm_block_size: crate::ctypes::c_uint, +pub nm_block_nr: crate::ctypes::c_uint, +pub nm_frame_size: crate::ctypes::c_uint, +pub nm_frame_nr: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_hdr { +pub nm_status: crate::ctypes::c_uint, +pub nm_len: crate::ctypes::c_uint, +pub nm_group: __u32, +pub nm_pid: __u32, +pub nm_uid: __u32, +pub nm_gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlattr { +pub nla_len: __u16, +pub nla_type: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nla_bitfield32 { +pub value: __u32, +pub selector: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnl_link_stats { +pub rx_packets: __u32, +pub tx_packets: __u32, +pub rx_bytes: __u32, +pub tx_bytes: __u32, +pub rx_errors: __u32, +pub tx_errors: __u32, +pub rx_dropped: __u32, +pub tx_dropped: __u32, +pub multicast: __u32, +pub collisions: __u32, +pub rx_length_errors: __u32, +pub rx_over_errors: __u32, +pub rx_crc_errors: __u32, +pub rx_frame_errors: __u32, +pub rx_fifo_errors: __u32, +pub rx_missed_errors: __u32, +pub tx_aborted_errors: __u32, +pub tx_carrier_errors: __u32, +pub tx_fifo_errors: __u32, +pub tx_heartbeat_errors: __u32, +pub tx_window_errors: __u32, +pub rx_compressed: __u32, +pub tx_compressed: __u32, +pub rx_nohandler: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnl_link_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +pub collisions: __u64, +pub rx_length_errors: __u64, +pub rx_over_errors: __u64, +pub rx_crc_errors: __u64, +pub rx_frame_errors: __u64, +pub rx_fifo_errors: __u64, +pub rx_missed_errors: __u64, +pub tx_aborted_errors: __u64, +pub tx_carrier_errors: __u64, +pub tx_fifo_errors: __u64, +pub tx_heartbeat_errors: __u64, +pub tx_window_errors: __u64, +pub rx_compressed: __u64, +pub tx_compressed: __u64, +pub rx_nohandler: __u64, +pub rx_otherhost_dropped: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnl_hw_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnl_link_ifmap { +pub mem_start: __u64, +pub mem_end: __u64, +pub base_addr: __u64, +pub irq: __u16, +pub dma: __u8, +pub port: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_bridge_id { +pub prio: [__u8; 2usize], +pub addr: [__u8; 6usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_cacheinfo { +pub max_reasm_len: __u32, +pub tstamp: __u32, +pub reachable_time: __u32, +pub retrans_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_qos_mapping { +pub from: __u32, +pub to: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tunnel_msg { +pub family: __u8, +pub flags: __u8, +pub reserved2: __u16, +pub ifindex: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vxlan_port_range { +pub low: __be16, +pub high: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_mac { +pub vf: __u32, +pub mac: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_broadcast { +pub broadcast: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan_info { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +pub vlan_proto: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_tx_rate { +pub vf: __u32, +pub rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rate { +pub vf: __u32, +pub min_tx_rate: __u32, +pub max_tx_rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_spoofchk { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_guid { +pub vf: __u32, +pub guid: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_link_state { +pub vf: __u32, +pub link_state: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rss_query_en { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_trust { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_port_vsi { +pub vsi_mgr_id: __u8, +pub vsi_type_id: [__u8; 3usize], +pub vsi_type_version: __u8, +pub pad: [__u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct if_stats_msg { +pub family: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub ifindex: __u32, +pub filter_mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_rmnet_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifaddrmsg { +pub ifa_family: __u8, +pub ifa_prefixlen: __u8, +pub ifa_flags: __u8, +pub ifa_scope: __u8, +pub ifa_index: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifa_cacheinfo { +pub ifa_prefered: __u32, +pub ifa_valid: __u32, +pub cstamp: __u32, +pub tstamp: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndmsg { +pub ndm_family: __u8, +pub ndm_pad1: __u8, +pub ndm_pad2: __u16, +pub ndm_ifindex: __s32, +pub ndm_state: __u16, +pub ndm_flags: __u8, +pub ndm_type: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nda_cacheinfo { +pub ndm_confirmed: __u32, +pub ndm_used: __u32, +pub ndm_updated: __u32, +pub ndm_refcnt: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_stats { +pub ndts_allocs: __u64, +pub ndts_destroys: __u64, +pub ndts_hash_grows: __u64, +pub ndts_res_failed: __u64, +pub ndts_lookups: __u64, +pub ndts_hits: __u64, +pub ndts_rcv_probes_mcast: __u64, +pub ndts_rcv_probes_ucast: __u64, +pub ndts_periodic_gc_runs: __u64, +pub ndts_forced_gc_runs: __u64, +pub ndts_table_fulls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndtmsg { +pub ndtm_family: __u8, +pub ndtm_pad1: __u8, +pub ndtm_pad2: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_config { +pub ndtc_key_len: __u16, +pub ndtc_entry_size: __u16, +pub ndtc_entries: __u32, +pub ndtc_last_flush: __u32, +pub ndtc_last_rand: __u32, +pub ndtc_hash_rnd: __u32, +pub ndtc_hash_mask: __u32, +pub ndtc_hash_chain_gc: __u32, +pub ndtc_proxy_qlen: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtattr { +pub rta_len: crate::ctypes::c_ushort, +pub rta_type: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtmsg { +pub rtm_family: crate::ctypes::c_uchar, +pub rtm_dst_len: crate::ctypes::c_uchar, +pub rtm_src_len: crate::ctypes::c_uchar, +pub rtm_tos: crate::ctypes::c_uchar, +pub rtm_table: crate::ctypes::c_uchar, +pub rtm_protocol: crate::ctypes::c_uchar, +pub rtm_scope: crate::ctypes::c_uchar, +pub rtm_type: crate::ctypes::c_uchar, +pub rtm_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnexthop { +pub rtnh_len: crate::ctypes::c_ushort, +pub rtnh_flags: crate::ctypes::c_uchar, +pub rtnh_hops: crate::ctypes::c_uchar, +pub rtnh_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug)] +pub struct rtvia { +pub rtvia_family: __kernel_sa_family_t, +pub rtvia_addr: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_cacheinfo { +pub rta_clntref: __u32, +pub rta_lastuse: __u32, +pub rta_expires: __s32, +pub rta_error: __u32, +pub rta_used: __u32, +pub rta_id: __u32, +pub rta_ts: __u32, +pub rta_tsage: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rta_session { +pub proto: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub u: rta_session__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { +pub sport: __u16, +pub dport: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { +pub type_: __u8, +pub code: __u8, +pub ident: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_mfc_stats { +pub mfcs_packets: __u64, +pub mfcs_bytes: __u64, +pub mfcs_wrong_if: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtgenmsg { +pub rtgen_family: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifinfomsg { +pub ifi_family: crate::ctypes::c_uchar, +pub __ifi_pad: crate::ctypes::c_uchar, +pub ifi_type: crate::ctypes::c_ushort, +pub ifi_index: crate::ctypes::c_int, +pub ifi_flags: crate::ctypes::c_uint, +pub ifi_change: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefixmsg { +pub prefix_family: crate::ctypes::c_uchar, +pub prefix_pad1: crate::ctypes::c_uchar, +pub prefix_pad2: crate::ctypes::c_ushort, +pub prefix_ifindex: crate::ctypes::c_int, +pub prefix_type: crate::ctypes::c_uchar, +pub prefix_len: crate::ctypes::c_uchar, +pub prefix_flags: crate::ctypes::c_uchar, +pub prefix_pad3: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefix_cacheinfo { +pub preferred_time: __u32, +pub valid_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcmsg { +pub tcm_family: crate::ctypes::c_uchar, +pub tcm__pad1: crate::ctypes::c_uchar, +pub tcm__pad2: crate::ctypes::c_ushort, +pub tcm_ifindex: crate::ctypes::c_int, +pub tcm_handle: __u32, +pub tcm_parent: __u32, +pub tcm_info: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nduseroptmsg { +pub nduseropt_family: crate::ctypes::c_uchar, +pub nduseropt_pad1: crate::ctypes::c_uchar, +pub nduseropt_opts_len: crate::ctypes::c_ushort, +pub nduseropt_ifindex: crate::ctypes::c_int, +pub nduseropt_icmp_type: __u8, +pub nduseropt_icmp_code: __u8, +pub nduseropt_pad2: crate::ctypes::c_ushort, +pub nduseropt_pad3: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcamsg { +pub tca_family: crate::ctypes::c_uchar, +pub tca__pad1: crate::ctypes::c_uchar, +pub tca__pad2: crate::ctypes::c_ushort, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const NETLINK_ROUTE: u32 = 0; +pub const NETLINK_UNUSED: u32 = 1; +pub const NETLINK_USERSOCK: u32 = 2; +pub const NETLINK_FIREWALL: u32 = 3; +pub const NETLINK_SOCK_DIAG: u32 = 4; +pub const NETLINK_NFLOG: u32 = 5; +pub const NETLINK_XFRM: u32 = 6; +pub const NETLINK_SELINUX: u32 = 7; +pub const NETLINK_ISCSI: u32 = 8; +pub const NETLINK_AUDIT: u32 = 9; +pub const NETLINK_FIB_LOOKUP: u32 = 10; +pub const NETLINK_CONNECTOR: u32 = 11; +pub const NETLINK_NETFILTER: u32 = 12; +pub const NETLINK_IP6_FW: u32 = 13; +pub const NETLINK_DNRTMSG: u32 = 14; +pub const NETLINK_KOBJECT_UEVENT: u32 = 15; +pub const NETLINK_GENERIC: u32 = 16; +pub const NETLINK_SCSITRANSPORT: u32 = 18; +pub const NETLINK_ECRYPTFS: u32 = 19; +pub const NETLINK_RDMA: u32 = 20; +pub const NETLINK_CRYPTO: u32 = 21; +pub const NETLINK_SMC: u32 = 22; +pub const NETLINK_INET_DIAG: u32 = 4; +pub const MAX_LINKS: u32 = 32; +pub const NLM_F_REQUEST: u32 = 1; +pub const NLM_F_MULTI: u32 = 2; +pub const NLM_F_ACK: u32 = 4; +pub const NLM_F_ECHO: u32 = 8; +pub const NLM_F_DUMP_INTR: u32 = 16; +pub const NLM_F_DUMP_FILTERED: u32 = 32; +pub const NLM_F_ROOT: u32 = 256; +pub const NLM_F_MATCH: u32 = 512; +pub const NLM_F_ATOMIC: u32 = 1024; +pub const NLM_F_DUMP: u32 = 768; +pub const NLM_F_REPLACE: u32 = 256; +pub const NLM_F_EXCL: u32 = 512; +pub const NLM_F_CREATE: u32 = 1024; +pub const NLM_F_APPEND: u32 = 2048; +pub const NLM_F_NONREC: u32 = 256; +pub const NLM_F_BULK: u32 = 512; +pub const NLM_F_CAPPED: u32 = 256; +pub const NLM_F_ACK_TLVS: u32 = 512; +pub const NLMSG_ALIGNTO: u32 = 4; +pub const NLMSG_NOOP: u32 = 1; +pub const NLMSG_ERROR: u32 = 2; +pub const NLMSG_DONE: u32 = 3; +pub const NLMSG_OVERRUN: u32 = 4; +pub const NLMSG_MIN_TYPE: u32 = 16; +pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; +pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; +pub const NETLINK_PKTINFO: u32 = 3; +pub const NETLINK_BROADCAST_ERROR: u32 = 4; +pub const NETLINK_NO_ENOBUFS: u32 = 5; +pub const NETLINK_RX_RING: u32 = 6; +pub const NETLINK_TX_RING: u32 = 7; +pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; +pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; +pub const NETLINK_CAP_ACK: u32 = 10; +pub const NETLINK_EXT_ACK: u32 = 11; +pub const NETLINK_GET_STRICT_CHK: u32 = 12; +pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; +pub const NET_MAJOR: u32 = 36; +pub const NLA_F_NESTED: u32 = 32768; +pub const NLA_F_NET_BYTEORDER: u32 = 16384; +pub const NLA_TYPE_MASK: i32 = -49153; +pub const NLA_ALIGNTO: u32 = 4; +pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; +pub const MACVLAN_FLAG_NODST: u32 = 2; +pub const IPVLAN_F_PRIVATE: u32 = 1; +pub const IPVLAN_F_VEPA: u32 = 2; +pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; +pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; +pub const MAX_VLAN_LIST_LEN: u32 = 1; +pub const PORT_PROFILE_MAX: u32 = 40; +pub const PORT_UUID_MAX: u32 = 16; +pub const PORT_SELF_VF: i32 = -1; +pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; +pub const XDP_FLAGS_SKB_MODE: u32 = 2; +pub const XDP_FLAGS_DRV_MODE: u32 = 4; +pub const XDP_FLAGS_HW_MODE: u32 = 8; +pub const XDP_FLAGS_REPLACE: u32 = 16; +pub const XDP_FLAGS_MODES: u32 = 14; +pub const XDP_FLAGS_MASK: u32 = 31; +pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; +pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; +pub const IFA_F_SECONDARY: u32 = 1; +pub const IFA_F_TEMPORARY: u32 = 1; +pub const IFA_F_NODAD: u32 = 2; +pub const IFA_F_OPTIMISTIC: u32 = 4; +pub const IFA_F_DADFAILED: u32 = 8; +pub const IFA_F_HOMEADDRESS: u32 = 16; +pub const IFA_F_DEPRECATED: u32 = 32; +pub const IFA_F_TENTATIVE: u32 = 64; +pub const IFA_F_PERMANENT: u32 = 128; +pub const IFA_F_MANAGETEMPADDR: u32 = 256; +pub const IFA_F_NOPREFIXROUTE: u32 = 512; +pub const IFA_F_MCAUTOJOIN: u32 = 1024; +pub const IFA_F_STABLE_PRIVACY: u32 = 2048; +pub const IFAPROT_UNSPEC: u32 = 0; +pub const IFAPROT_KERNEL_LO: u32 = 1; +pub const IFAPROT_KERNEL_RA: u32 = 2; +pub const IFAPROT_KERNEL_LL: u32 = 3; +pub const NTF_USE: u32 = 1; +pub const NTF_SELF: u32 = 2; +pub const NTF_MASTER: u32 = 4; +pub const NTF_PROXY: u32 = 8; +pub const NTF_EXT_LEARNED: u32 = 16; +pub const NTF_OFFLOADED: u32 = 32; +pub const NTF_STICKY: u32 = 64; +pub const NTF_ROUTER: u32 = 128; +pub const NTF_EXT_MANAGED: u32 = 1; +pub const NTF_EXT_LOCKED: u32 = 2; +pub const NUD_INCOMPLETE: u32 = 1; +pub const NUD_REACHABLE: u32 = 2; +pub const NUD_STALE: u32 = 4; +pub const NUD_DELAY: u32 = 8; +pub const NUD_PROBE: u32 = 16; +pub const NUD_FAILED: u32 = 32; +pub const NUD_NOARP: u32 = 64; +pub const NUD_PERMANENT: u32 = 128; +pub const NUD_NONE: u32 = 0; +pub const RTNL_FAMILY_IPMR: u32 = 128; +pub const RTNL_FAMILY_IP6MR: u32 = 129; +pub const RTNL_FAMILY_MAX: u32 = 129; +pub const RTA_ALIGNTO: u32 = 4; +pub const RTPROT_UNSPEC: u32 = 0; +pub const RTPROT_REDIRECT: u32 = 1; +pub const RTPROT_KERNEL: u32 = 2; +pub const RTPROT_BOOT: u32 = 3; +pub const RTPROT_STATIC: u32 = 4; +pub const RTPROT_GATED: u32 = 8; +pub const RTPROT_RA: u32 = 9; +pub const RTPROT_MRT: u32 = 10; +pub const RTPROT_ZEBRA: u32 = 11; +pub const RTPROT_BIRD: u32 = 12; +pub const RTPROT_DNROUTED: u32 = 13; +pub const RTPROT_XORP: u32 = 14; +pub const RTPROT_NTK: u32 = 15; +pub const RTPROT_DHCP: u32 = 16; +pub const RTPROT_MROUTED: u32 = 17; +pub const RTPROT_KEEPALIVED: u32 = 18; +pub const RTPROT_BABEL: u32 = 42; +pub const RTPROT_OPENR: u32 = 99; +pub const RTPROT_BGP: u32 = 186; +pub const RTPROT_ISIS: u32 = 187; +pub const RTPROT_OSPF: u32 = 188; +pub const RTPROT_RIP: u32 = 189; +pub const RTPROT_EIGRP: u32 = 192; +pub const RTM_F_NOTIFY: u32 = 256; +pub const RTM_F_CLONED: u32 = 512; +pub const RTM_F_EQUALIZE: u32 = 1024; +pub const RTM_F_PREFIX: u32 = 2048; +pub const RTM_F_LOOKUP_TABLE: u32 = 4096; +pub const RTM_F_FIB_MATCH: u32 = 8192; +pub const RTM_F_OFFLOAD: u32 = 16384; +pub const RTM_F_TRAP: u32 = 32768; +pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; +pub const RTNH_F_DEAD: u32 = 1; +pub const RTNH_F_PERVASIVE: u32 = 2; +pub const RTNH_F_ONLINK: u32 = 4; +pub const RTNH_F_OFFLOAD: u32 = 8; +pub const RTNH_F_LINKDOWN: u32 = 16; +pub const RTNH_F_UNRESOLVED: u32 = 32; +pub const RTNH_F_TRAP: u32 = 64; +pub const RTNH_COMPARE_MASK: u32 = 89; +pub const RTNH_ALIGNTO: u32 = 4; +pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; +pub const RTAX_FEATURE_ECN: u32 = 1; +pub const RTAX_FEATURE_SACK: u32 = 2; +pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; +pub const RTAX_FEATURE_ALLFRAG: u32 = 8; +pub const RTAX_FEATURE_MASK: u32 = 15; +pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; +pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; +pub const RTMGRP_LINK: u32 = 1; +pub const RTMGRP_NOTIFY: u32 = 2; +pub const RTMGRP_NEIGH: u32 = 4; +pub const RTMGRP_TC: u32 = 8; +pub const RTMGRP_IPV4_IFADDR: u32 = 16; +pub const RTMGRP_IPV4_MROUTE: u32 = 32; +pub const RTMGRP_IPV4_ROUTE: u32 = 64; +pub const RTMGRP_IPV4_RULE: u32 = 128; +pub const RTMGRP_IPV6_IFADDR: u32 = 256; +pub const RTMGRP_IPV6_MROUTE: u32 = 512; +pub const RTMGRP_IPV6_ROUTE: u32 = 1024; +pub const RTMGRP_IPV6_IFINFO: u32 = 2048; +pub const RTMGRP_DECnet_IFADDR: u32 = 4096; +pub const RTMGRP_DECnet_ROUTE: u32 = 16384; +pub const RTMGRP_IPV6_PREFIX: u32 = 131072; +pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; +pub const RTEXT_FILTER_VF: u32 = 1; +pub const RTEXT_FILTER_BRVLAN: u32 = 2; +pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; +pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; +pub const RTEXT_FILTER_MRP: u32 = 16; +pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; +pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; +pub const RTEXT_FILTER_MST: u32 = 128; +pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; +pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; +pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; +pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; +pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; +pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; +pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; +pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; +pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; +pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; +pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; +pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; +pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; +pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; +pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; +pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; +pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; +pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; +pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; +pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; +pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; +pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; +pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; +pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; +pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; +pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; +pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; +pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; +pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; +pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; +pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; +pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; +pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; +pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; +pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; +pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; +pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; +pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; +pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; +pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; +pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; +pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; +pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; +pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; +pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; +pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; +pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; +pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; +pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; +pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; +pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; +pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; +pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; +pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; +pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; +pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; +pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; +pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; +pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; +pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; +pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; +pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; +pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; +pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; +pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; +pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; +pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; +pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; +pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; +pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; +pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; +pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; +pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; +pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; +pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; +pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; +pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; +pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; +pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; +pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; +pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; +pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; +pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; +pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; +pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; +pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; +pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; +pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; +pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; +pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; +pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; +pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; +pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; +pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; +pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; +pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; +pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; +pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; +pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; +pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; +pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; +pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; +pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; +pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; +pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; +pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; +pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; +pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; +pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; +pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; +pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; +pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; +pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; +pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; +pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; +pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; +pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; +pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; +pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; +pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; +pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; +pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; +pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; +pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; +pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; +pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; +pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; +pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; +pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; +pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; +pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; +pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; +pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; +pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; +pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; +pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; +pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; +pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; +pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; +pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; +pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; +pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; +pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; +pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; +pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; +pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; +pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; +pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; +pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; +pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; +pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; +pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; +pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; +pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; +pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; +pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; +pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; +pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; +pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; +pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; +pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; +pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; +pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; +pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; +pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; +pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; +pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; +pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; +pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; +pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; +pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; +pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; +pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; +pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; +pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; +pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; +pub const IFLA_BRPORT_NEIGH_VLAN_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_VLAN_SUPPRESS; +pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; +pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; +pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; +pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; +pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; +pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; +pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; +pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; +pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; +pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; +pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; +pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; +pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; +pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; +pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; +pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; +pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; +pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; +pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; +pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; +pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; +pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; +pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; +pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; +pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; +pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; +pub const IFLA_MACVLAN_BC_CUTOFF: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_CUTOFF; +pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; +pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; +pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; +pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; +pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; +pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; +pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; +pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; +pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; +pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; +pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; +pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; +pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; +pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; +pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; +pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; +pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; +pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; +pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; +pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; +pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; +pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; +pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; +pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; +pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; +pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; +pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; +pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; +pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; +pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; +pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; +pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; +pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; +pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; +pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; +pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; +pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; +pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; +pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; +pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; +pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; +pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; +pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; +pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; +pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; +pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; +pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; +pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; +pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; +pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; +pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; +pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; +pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; +pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; +pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; +pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; +pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; +pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; +pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; +pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; +pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; +pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; +pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; +pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; +pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; +pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; +pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; +pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; +pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; +pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; +pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; +pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; +pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; +pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; +pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; +pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; +pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; +pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; +pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; +pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; +pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; +pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; +pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; +pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; +pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; +pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; +pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; +pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; +pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; +pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; +pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; +pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; +pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; +pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; +pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; +pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; +pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; +pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; +pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; +pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; +pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; +pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; +pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; +pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; +pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; +pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; +pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; +pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; +pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; +pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; +pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; +pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; +pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; +pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; +pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; +pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; +pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; +pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; +pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; +pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; +pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; +pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; +pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; +pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; +pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; +pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; +pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; +pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; +pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; +pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; +pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; +pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; +pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; +pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; +pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; +pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; +pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; +pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; +pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; +pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; +pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; +pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; +pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; +pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; +pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; +pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; +pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; +pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; +pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; +pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; +pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; +pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; +pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; +pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; +pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; +pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; +pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; +pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; +pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; +pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; +pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; +pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; +pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; +pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; +pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; +pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; +pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; +pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; +pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; +pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; +pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; +pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; +pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; +pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; +pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; +pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; +pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; +pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; +pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; +pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; +pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; +pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; +pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; +pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; +pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; +pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; +pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; +pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; +pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; +pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; +pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; +pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; +pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; +pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; +pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; +pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; +pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; +pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; +pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; +pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; +pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; +pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; +pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; +pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; +pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; +pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; +pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; +pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; +pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; +pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; +pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; +pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; +pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; +pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; +pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; +pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; +pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; +pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; +pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; +pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; +pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; +pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; +pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; +pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; +pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; +pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; +pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; +pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; +pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; +pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; +pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; +pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; +pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; +pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; +pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; +pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; +pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; +pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; +pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; +pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; +pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; +pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; +pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; +pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; +pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; +pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; +pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; +pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; +pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; +pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; +pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; +pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; +pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; +pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; +pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; +pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; +pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; +pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; +pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; +pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; +pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; +pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; +pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; +pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; +pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; +pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; +pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; +pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; +pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; +pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; +pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; +pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; +pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; +pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; +pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; +pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; +pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; +pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; +pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; +pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; +pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; +pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; +pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; +pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; +pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; +pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; +pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; +pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; +pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; +pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; +pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; +pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; +pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; +pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; +pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; +pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; +pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; +pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; +pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; +pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; +pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; +pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; +pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; +pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; +pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; +pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; +pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; +pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; +pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; +pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; +pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; +pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; +pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; +pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; +pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; +pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; +pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; +pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; +pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; +pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; +pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; +pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; +pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; +pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; +pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; +pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; +pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; +pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; +pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; +pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; +pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; +pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; +pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; +pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; +pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; +pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; +pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; +pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; +pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; +pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; +pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; +pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; +pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; +pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; +pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; +pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; +pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; +pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; +pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; +pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; +pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; +pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; +pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; +pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; +pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; +pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; +pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; +pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; +pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; +pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; +pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; +pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; +pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; +pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; +pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; +pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; +pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; +pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; +pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; +pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; +pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; +pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; +pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; +pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; +pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; +pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; +pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; +pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; +pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; +pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; +pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; +pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; +pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; +pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; +pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; +pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; +pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; +pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; +pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; +pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; +pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; +pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; +pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; +pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; +pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; +pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; +pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; +pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; +pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; +pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; +pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; +pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; +pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; +pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; +pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; +pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; +pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; +pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; +pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; +pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; +pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; +pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; +pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; +pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; +pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; +pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; +pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; +pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; +pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; +pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; +pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; +pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; +pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; +pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; +pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; +pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; +pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; +pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; +pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; +pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; +pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; +pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; +pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; +pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; +pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; +pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; +pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; +pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; +pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; +pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; +pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; +pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; +pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; +pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; +pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; +pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; +pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; +pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; +pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; +pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; +pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; +pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; +pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; +pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; +pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; +pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; +pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; +pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; +pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; +pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; +pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; +pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; +pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; +pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; +pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; +pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; +pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; +pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; +pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; +pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; +pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; +pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; +pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; +pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; +pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; +pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; +pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; +pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; +pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; +pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; +pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; +pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; +pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; +pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; +pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; +pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; +pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; +pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; +pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; +pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; +pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; +pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; +pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; +pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; +pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; +pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; +pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; +pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; +pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; +pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; +pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; +pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum nlmsgerr_attrs { +NLMSGERR_ATTR_UNUSED = 0, +NLMSGERR_ATTR_MSG = 1, +NLMSGERR_ATTR_OFFS = 2, +NLMSGERR_ATTR_COOKIE = 3, +NLMSGERR_ATTR_POLICY = 4, +NLMSGERR_ATTR_MISS_TYPE = 5, +NLMSGERR_ATTR_MISS_NEST = 6, +__NLMSGERR_ATTR_MAX = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum nl_mmap_status { +NL_MMAP_STATUS_UNUSED = 0, +NL_MMAP_STATUS_RESERVED = 1, +NL_MMAP_STATUS_VALID = 2, +NL_MMAP_STATUS_COPY = 3, +NL_MMAP_STATUS_SKIP = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +NETLINK_UNCONNECTED = 0, +NETLINK_CONNECTED = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_attribute_type { +NL_ATTR_TYPE_INVALID = 0, +NL_ATTR_TYPE_FLAG = 1, +NL_ATTR_TYPE_U8 = 2, +NL_ATTR_TYPE_U16 = 3, +NL_ATTR_TYPE_U32 = 4, +NL_ATTR_TYPE_U64 = 5, +NL_ATTR_TYPE_S8 = 6, +NL_ATTR_TYPE_S16 = 7, +NL_ATTR_TYPE_S32 = 8, +NL_ATTR_TYPE_S64 = 9, +NL_ATTR_TYPE_BINARY = 10, +NL_ATTR_TYPE_STRING = 11, +NL_ATTR_TYPE_NUL_STRING = 12, +NL_ATTR_TYPE_NESTED = 13, +NL_ATTR_TYPE_NESTED_ARRAY = 14, +NL_ATTR_TYPE_BITFIELD32 = 15, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_policy_type_attr { +NL_POLICY_TYPE_ATTR_UNSPEC = 0, +NL_POLICY_TYPE_ATTR_TYPE = 1, +NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, +NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, +NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, +NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, +NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, +NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, +NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, +NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, +NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, +NL_POLICY_TYPE_ATTR_PAD = 11, +NL_POLICY_TYPE_ATTR_MASK = 12, +__NL_POLICY_TYPE_ATTR_MAX = 13, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IFLA_UNSPEC = 0, +IFLA_ADDRESS = 1, +IFLA_BROADCAST = 2, +IFLA_IFNAME = 3, +IFLA_MTU = 4, +IFLA_LINK = 5, +IFLA_QDISC = 6, +IFLA_STATS = 7, +IFLA_COST = 8, +IFLA_PRIORITY = 9, +IFLA_MASTER = 10, +IFLA_WIRELESS = 11, +IFLA_PROTINFO = 12, +IFLA_TXQLEN = 13, +IFLA_MAP = 14, +IFLA_WEIGHT = 15, +IFLA_OPERSTATE = 16, +IFLA_LINKMODE = 17, +IFLA_LINKINFO = 18, +IFLA_NET_NS_PID = 19, +IFLA_IFALIAS = 20, +IFLA_NUM_VF = 21, +IFLA_VFINFO_LIST = 22, +IFLA_STATS64 = 23, +IFLA_VF_PORTS = 24, +IFLA_PORT_SELF = 25, +IFLA_AF_SPEC = 26, +IFLA_GROUP = 27, +IFLA_NET_NS_FD = 28, +IFLA_EXT_MASK = 29, +IFLA_PROMISCUITY = 30, +IFLA_NUM_TX_QUEUES = 31, +IFLA_NUM_RX_QUEUES = 32, +IFLA_CARRIER = 33, +IFLA_PHYS_PORT_ID = 34, +IFLA_CARRIER_CHANGES = 35, +IFLA_PHYS_SWITCH_ID = 36, +IFLA_LINK_NETNSID = 37, +IFLA_PHYS_PORT_NAME = 38, +IFLA_PROTO_DOWN = 39, +IFLA_GSO_MAX_SEGS = 40, +IFLA_GSO_MAX_SIZE = 41, +IFLA_PAD = 42, +IFLA_XDP = 43, +IFLA_EVENT = 44, +IFLA_NEW_NETNSID = 45, +IFLA_IF_NETNSID = 46, +IFLA_CARRIER_UP_COUNT = 47, +IFLA_CARRIER_DOWN_COUNT = 48, +IFLA_NEW_IFINDEX = 49, +IFLA_MIN_MTU = 50, +IFLA_MAX_MTU = 51, +IFLA_PROP_LIST = 52, +IFLA_ALT_IFNAME = 53, +IFLA_PERM_ADDRESS = 54, +IFLA_PROTO_DOWN_REASON = 55, +IFLA_PARENT_DEV_NAME = 56, +IFLA_PARENT_DEV_BUS_NAME = 57, +IFLA_GRO_MAX_SIZE = 58, +IFLA_TSO_MAX_SIZE = 59, +IFLA_TSO_MAX_SEGS = 60, +IFLA_ALLMULTI = 61, +IFLA_DEVLINK_PORT = 62, +IFLA_GSO_IPV4_MAX_SIZE = 63, +IFLA_GRO_IPV4_MAX_SIZE = 64, +__IFLA_MAX = 65, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IFLA_PROTO_DOWN_REASON_UNSPEC = 0, +IFLA_PROTO_DOWN_REASON_MASK = 1, +IFLA_PROTO_DOWN_REASON_VALUE = 2, +__IFLA_PROTO_DOWN_REASON_CNT = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IFLA_INET_UNSPEC = 0, +IFLA_INET_CONF = 1, +__IFLA_INET_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IFLA_INET6_UNSPEC = 0, +IFLA_INET6_FLAGS = 1, +IFLA_INET6_CONF = 2, +IFLA_INET6_STATS = 3, +IFLA_INET6_MCAST = 4, +IFLA_INET6_CACHEINFO = 5, +IFLA_INET6_ICMP6STATS = 6, +IFLA_INET6_TOKEN = 7, +IFLA_INET6_ADDR_GEN_MODE = 8, +IFLA_INET6_RA_MTU = 9, +__IFLA_INET6_MAX = 10, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum in6_addr_gen_mode { +IN6_ADDR_GEN_MODE_EUI64 = 0, +IN6_ADDR_GEN_MODE_NONE = 1, +IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, +IN6_ADDR_GEN_MODE_RANDOM = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IFLA_BR_UNSPEC = 0, +IFLA_BR_FORWARD_DELAY = 1, +IFLA_BR_HELLO_TIME = 2, +IFLA_BR_MAX_AGE = 3, +IFLA_BR_AGEING_TIME = 4, +IFLA_BR_STP_STATE = 5, +IFLA_BR_PRIORITY = 6, +IFLA_BR_VLAN_FILTERING = 7, +IFLA_BR_VLAN_PROTOCOL = 8, +IFLA_BR_GROUP_FWD_MASK = 9, +IFLA_BR_ROOT_ID = 10, +IFLA_BR_BRIDGE_ID = 11, +IFLA_BR_ROOT_PORT = 12, +IFLA_BR_ROOT_PATH_COST = 13, +IFLA_BR_TOPOLOGY_CHANGE = 14, +IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15, +IFLA_BR_HELLO_TIMER = 16, +IFLA_BR_TCN_TIMER = 17, +IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18, +IFLA_BR_GC_TIMER = 19, +IFLA_BR_GROUP_ADDR = 20, +IFLA_BR_FDB_FLUSH = 21, +IFLA_BR_MCAST_ROUTER = 22, +IFLA_BR_MCAST_SNOOPING = 23, +IFLA_BR_MCAST_QUERY_USE_IFADDR = 24, +IFLA_BR_MCAST_QUERIER = 25, +IFLA_BR_MCAST_HASH_ELASTICITY = 26, +IFLA_BR_MCAST_HASH_MAX = 27, +IFLA_BR_MCAST_LAST_MEMBER_CNT = 28, +IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29, +IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30, +IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, +IFLA_BR_MCAST_QUERIER_INTVL = 32, +IFLA_BR_MCAST_QUERY_INTVL = 33, +IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, +IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, +IFLA_BR_NF_CALL_IPTABLES = 36, +IFLA_BR_NF_CALL_IP6TABLES = 37, +IFLA_BR_NF_CALL_ARPTABLES = 38, +IFLA_BR_VLAN_DEFAULT_PVID = 39, +IFLA_BR_PAD = 40, +IFLA_BR_VLAN_STATS_ENABLED = 41, +IFLA_BR_MCAST_STATS_ENABLED = 42, +IFLA_BR_MCAST_IGMP_VERSION = 43, +IFLA_BR_MCAST_MLD_VERSION = 44, +IFLA_BR_VLAN_STATS_PER_PORT = 45, +IFLA_BR_MULTI_BOOLOPT = 46, +IFLA_BR_MCAST_QUERIER_STATE = 47, +__IFLA_BR_MAX = 48, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +BRIDGE_MODE_UNSPEC = 0, +BRIDGE_MODE_HAIRPIN = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_8 { +IFLA_BRPORT_UNSPEC = 0, +IFLA_BRPORT_STATE = 1, +IFLA_BRPORT_PRIORITY = 2, +IFLA_BRPORT_COST = 3, +IFLA_BRPORT_MODE = 4, +IFLA_BRPORT_GUARD = 5, +IFLA_BRPORT_PROTECT = 6, +IFLA_BRPORT_FAST_LEAVE = 7, +IFLA_BRPORT_LEARNING = 8, +IFLA_BRPORT_UNICAST_FLOOD = 9, +IFLA_BRPORT_PROXYARP = 10, +IFLA_BRPORT_LEARNING_SYNC = 11, +IFLA_BRPORT_PROXYARP_WIFI = 12, +IFLA_BRPORT_ROOT_ID = 13, +IFLA_BRPORT_BRIDGE_ID = 14, +IFLA_BRPORT_DESIGNATED_PORT = 15, +IFLA_BRPORT_DESIGNATED_COST = 16, +IFLA_BRPORT_ID = 17, +IFLA_BRPORT_NO = 18, +IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19, +IFLA_BRPORT_CONFIG_PENDING = 20, +IFLA_BRPORT_MESSAGE_AGE_TIMER = 21, +IFLA_BRPORT_FORWARD_DELAY_TIMER = 22, +IFLA_BRPORT_HOLD_TIMER = 23, +IFLA_BRPORT_FLUSH = 24, +IFLA_BRPORT_MULTICAST_ROUTER = 25, +IFLA_BRPORT_PAD = 26, +IFLA_BRPORT_MCAST_FLOOD = 27, +IFLA_BRPORT_MCAST_TO_UCAST = 28, +IFLA_BRPORT_VLAN_TUNNEL = 29, +IFLA_BRPORT_BCAST_FLOOD = 30, +IFLA_BRPORT_GROUP_FWD_MASK = 31, +IFLA_BRPORT_NEIGH_SUPPRESS = 32, +IFLA_BRPORT_ISOLATED = 33, +IFLA_BRPORT_BACKUP_PORT = 34, +IFLA_BRPORT_MRP_RING_OPEN = 35, +IFLA_BRPORT_MRP_IN_OPEN = 36, +IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37, +IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38, +IFLA_BRPORT_LOCKED = 39, +IFLA_BRPORT_MAB = 40, +IFLA_BRPORT_MCAST_N_GROUPS = 41, +IFLA_BRPORT_MCAST_MAX_GROUPS = 42, +IFLA_BRPORT_NEIGH_VLAN_SUPPRESS = 43, +__IFLA_BRPORT_MAX = 44, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_9 { +IFLA_INFO_UNSPEC = 0, +IFLA_INFO_KIND = 1, +IFLA_INFO_DATA = 2, +IFLA_INFO_XSTATS = 3, +IFLA_INFO_SLAVE_KIND = 4, +IFLA_INFO_SLAVE_DATA = 5, +__IFLA_INFO_MAX = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_10 { +IFLA_VLAN_UNSPEC = 0, +IFLA_VLAN_ID = 1, +IFLA_VLAN_FLAGS = 2, +IFLA_VLAN_EGRESS_QOS = 3, +IFLA_VLAN_INGRESS_QOS = 4, +IFLA_VLAN_PROTOCOL = 5, +__IFLA_VLAN_MAX = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_11 { +IFLA_VLAN_QOS_UNSPEC = 0, +IFLA_VLAN_QOS_MAPPING = 1, +__IFLA_VLAN_QOS_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_12 { +IFLA_MACVLAN_UNSPEC = 0, +IFLA_MACVLAN_MODE = 1, +IFLA_MACVLAN_FLAGS = 2, +IFLA_MACVLAN_MACADDR_MODE = 3, +IFLA_MACVLAN_MACADDR = 4, +IFLA_MACVLAN_MACADDR_DATA = 5, +IFLA_MACVLAN_MACADDR_COUNT = 6, +IFLA_MACVLAN_BC_QUEUE_LEN = 7, +IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8, +IFLA_MACVLAN_BC_CUTOFF = 9, +__IFLA_MACVLAN_MAX = 10, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum macvlan_mode { +MACVLAN_MODE_PRIVATE = 1, +MACVLAN_MODE_VEPA = 2, +MACVLAN_MODE_BRIDGE = 4, +MACVLAN_MODE_PASSTHRU = 8, +MACVLAN_MODE_SOURCE = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum macvlan_macaddr_mode { +MACVLAN_MACADDR_ADD = 0, +MACVLAN_MACADDR_DEL = 1, +MACVLAN_MACADDR_FLUSH = 2, +MACVLAN_MACADDR_SET = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_13 { +IFLA_VRF_UNSPEC = 0, +IFLA_VRF_TABLE = 1, +__IFLA_VRF_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_14 { +IFLA_VRF_PORT_UNSPEC = 0, +IFLA_VRF_PORT_TABLE = 1, +__IFLA_VRF_PORT_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_15 { +IFLA_MACSEC_UNSPEC = 0, +IFLA_MACSEC_SCI = 1, +IFLA_MACSEC_PORT = 2, +IFLA_MACSEC_ICV_LEN = 3, +IFLA_MACSEC_CIPHER_SUITE = 4, +IFLA_MACSEC_WINDOW = 5, +IFLA_MACSEC_ENCODING_SA = 6, +IFLA_MACSEC_ENCRYPT = 7, +IFLA_MACSEC_PROTECT = 8, +IFLA_MACSEC_INC_SCI = 9, +IFLA_MACSEC_ES = 10, +IFLA_MACSEC_SCB = 11, +IFLA_MACSEC_REPLAY_PROTECT = 12, +IFLA_MACSEC_VALIDATION = 13, +IFLA_MACSEC_PAD = 14, +IFLA_MACSEC_OFFLOAD = 15, +__IFLA_MACSEC_MAX = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_16 { +IFLA_XFRM_UNSPEC = 0, +IFLA_XFRM_LINK = 1, +IFLA_XFRM_IF_ID = 2, +IFLA_XFRM_COLLECT_METADATA = 3, +__IFLA_XFRM_MAX = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum macsec_validation_type { +MACSEC_VALIDATE_DISABLED = 0, +MACSEC_VALIDATE_CHECK = 1, +MACSEC_VALIDATE_STRICT = 2, +__MACSEC_VALIDATE_END = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum macsec_offload { +MACSEC_OFFLOAD_OFF = 0, +MACSEC_OFFLOAD_PHY = 1, +MACSEC_OFFLOAD_MAC = 2, +__MACSEC_OFFLOAD_END = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_17 { +IFLA_IPVLAN_UNSPEC = 0, +IFLA_IPVLAN_MODE = 1, +IFLA_IPVLAN_FLAGS = 2, +__IFLA_IPVLAN_MAX = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum ipvlan_mode { +IPVLAN_MODE_L2 = 0, +IPVLAN_MODE_L3 = 1, +IPVLAN_MODE_L3S = 2, +IPVLAN_MODE_MAX = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_18 { +VNIFILTER_ENTRY_STATS_UNSPEC = 0, +VNIFILTER_ENTRY_STATS_RX_BYTES = 1, +VNIFILTER_ENTRY_STATS_RX_PKTS = 2, +VNIFILTER_ENTRY_STATS_RX_DROPS = 3, +VNIFILTER_ENTRY_STATS_RX_ERRORS = 4, +VNIFILTER_ENTRY_STATS_TX_BYTES = 5, +VNIFILTER_ENTRY_STATS_TX_PKTS = 6, +VNIFILTER_ENTRY_STATS_TX_DROPS = 7, +VNIFILTER_ENTRY_STATS_TX_ERRORS = 8, +VNIFILTER_ENTRY_STATS_PAD = 9, +__VNIFILTER_ENTRY_STATS_MAX = 10, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_19 { +VXLAN_VNIFILTER_ENTRY_UNSPEC = 0, +VXLAN_VNIFILTER_ENTRY_START = 1, +VXLAN_VNIFILTER_ENTRY_END = 2, +VXLAN_VNIFILTER_ENTRY_GROUP = 3, +VXLAN_VNIFILTER_ENTRY_GROUP6 = 4, +VXLAN_VNIFILTER_ENTRY_STATS = 5, +__VXLAN_VNIFILTER_ENTRY_MAX = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_20 { +VXLAN_VNIFILTER_UNSPEC = 0, +VXLAN_VNIFILTER_ENTRY = 1, +__VXLAN_VNIFILTER_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_21 { +IFLA_VXLAN_UNSPEC = 0, +IFLA_VXLAN_ID = 1, +IFLA_VXLAN_GROUP = 2, +IFLA_VXLAN_LINK = 3, +IFLA_VXLAN_LOCAL = 4, +IFLA_VXLAN_TTL = 5, +IFLA_VXLAN_TOS = 6, +IFLA_VXLAN_LEARNING = 7, +IFLA_VXLAN_AGEING = 8, +IFLA_VXLAN_LIMIT = 9, +IFLA_VXLAN_PORT_RANGE = 10, +IFLA_VXLAN_PROXY = 11, +IFLA_VXLAN_RSC = 12, +IFLA_VXLAN_L2MISS = 13, +IFLA_VXLAN_L3MISS = 14, +IFLA_VXLAN_PORT = 15, +IFLA_VXLAN_GROUP6 = 16, +IFLA_VXLAN_LOCAL6 = 17, +IFLA_VXLAN_UDP_CSUM = 18, +IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19, +IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20, +IFLA_VXLAN_REMCSUM_TX = 21, +IFLA_VXLAN_REMCSUM_RX = 22, +IFLA_VXLAN_GBP = 23, +IFLA_VXLAN_REMCSUM_NOPARTIAL = 24, +IFLA_VXLAN_COLLECT_METADATA = 25, +IFLA_VXLAN_LABEL = 26, +IFLA_VXLAN_GPE = 27, +IFLA_VXLAN_TTL_INHERIT = 28, +IFLA_VXLAN_DF = 29, +IFLA_VXLAN_VNIFILTER = 30, +__IFLA_VXLAN_MAX = 31, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum ifla_vxlan_df { +VXLAN_DF_UNSET = 0, +VXLAN_DF_SET = 1, +VXLAN_DF_INHERIT = 2, +__VXLAN_DF_END = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_22 { +IFLA_GENEVE_UNSPEC = 0, +IFLA_GENEVE_ID = 1, +IFLA_GENEVE_REMOTE = 2, +IFLA_GENEVE_TTL = 3, +IFLA_GENEVE_TOS = 4, +IFLA_GENEVE_PORT = 5, +IFLA_GENEVE_COLLECT_METADATA = 6, +IFLA_GENEVE_REMOTE6 = 7, +IFLA_GENEVE_UDP_CSUM = 8, +IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9, +IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10, +IFLA_GENEVE_LABEL = 11, +IFLA_GENEVE_TTL_INHERIT = 12, +IFLA_GENEVE_DF = 13, +IFLA_GENEVE_INNER_PROTO_INHERIT = 14, +__IFLA_GENEVE_MAX = 15, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum ifla_geneve_df { +GENEVE_DF_UNSET = 0, +GENEVE_DF_SET = 1, +GENEVE_DF_INHERIT = 2, +__GENEVE_DF_END = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_23 { +IFLA_BAREUDP_UNSPEC = 0, +IFLA_BAREUDP_PORT = 1, +IFLA_BAREUDP_ETHERTYPE = 2, +IFLA_BAREUDP_SRCPORT_MIN = 3, +IFLA_BAREUDP_MULTIPROTO_MODE = 4, +__IFLA_BAREUDP_MAX = 5, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_24 { +IFLA_PPP_UNSPEC = 0, +IFLA_PPP_DEV_FD = 1, +__IFLA_PPP_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum ifla_gtp_role { +GTP_ROLE_GGSN = 0, +GTP_ROLE_SGSN = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_25 { +IFLA_GTP_UNSPEC = 0, +IFLA_GTP_FD0 = 1, +IFLA_GTP_FD1 = 2, +IFLA_GTP_PDP_HASHSIZE = 3, +IFLA_GTP_ROLE = 4, +IFLA_GTP_CREATE_SOCKETS = 5, +IFLA_GTP_RESTART_COUNT = 6, +__IFLA_GTP_MAX = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_26 { +IFLA_BOND_UNSPEC = 0, +IFLA_BOND_MODE = 1, +IFLA_BOND_ACTIVE_SLAVE = 2, +IFLA_BOND_MIIMON = 3, +IFLA_BOND_UPDELAY = 4, +IFLA_BOND_DOWNDELAY = 5, +IFLA_BOND_USE_CARRIER = 6, +IFLA_BOND_ARP_INTERVAL = 7, +IFLA_BOND_ARP_IP_TARGET = 8, +IFLA_BOND_ARP_VALIDATE = 9, +IFLA_BOND_ARP_ALL_TARGETS = 10, +IFLA_BOND_PRIMARY = 11, +IFLA_BOND_PRIMARY_RESELECT = 12, +IFLA_BOND_FAIL_OVER_MAC = 13, +IFLA_BOND_XMIT_HASH_POLICY = 14, +IFLA_BOND_RESEND_IGMP = 15, +IFLA_BOND_NUM_PEER_NOTIF = 16, +IFLA_BOND_ALL_SLAVES_ACTIVE = 17, +IFLA_BOND_MIN_LINKS = 18, +IFLA_BOND_LP_INTERVAL = 19, +IFLA_BOND_PACKETS_PER_SLAVE = 20, +IFLA_BOND_AD_LACP_RATE = 21, +IFLA_BOND_AD_SELECT = 22, +IFLA_BOND_AD_INFO = 23, +IFLA_BOND_AD_ACTOR_SYS_PRIO = 24, +IFLA_BOND_AD_USER_PORT_KEY = 25, +IFLA_BOND_AD_ACTOR_SYSTEM = 26, +IFLA_BOND_TLB_DYNAMIC_LB = 27, +IFLA_BOND_PEER_NOTIF_DELAY = 28, +IFLA_BOND_AD_LACP_ACTIVE = 29, +IFLA_BOND_MISSED_MAX = 30, +IFLA_BOND_NS_IP6_TARGET = 31, +__IFLA_BOND_MAX = 32, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_27 { +IFLA_BOND_AD_INFO_UNSPEC = 0, +IFLA_BOND_AD_INFO_AGGREGATOR = 1, +IFLA_BOND_AD_INFO_NUM_PORTS = 2, +IFLA_BOND_AD_INFO_ACTOR_KEY = 3, +IFLA_BOND_AD_INFO_PARTNER_KEY = 4, +IFLA_BOND_AD_INFO_PARTNER_MAC = 5, +__IFLA_BOND_AD_INFO_MAX = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_28 { +IFLA_BOND_SLAVE_UNSPEC = 0, +IFLA_BOND_SLAVE_STATE = 1, +IFLA_BOND_SLAVE_MII_STATUS = 2, +IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3, +IFLA_BOND_SLAVE_PERM_HWADDR = 4, +IFLA_BOND_SLAVE_QUEUE_ID = 5, +IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6, +IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7, +IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8, +IFLA_BOND_SLAVE_PRIO = 9, +__IFLA_BOND_SLAVE_MAX = 10, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_29 { +IFLA_VF_INFO_UNSPEC = 0, +IFLA_VF_INFO = 1, +__IFLA_VF_INFO_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_30 { +IFLA_VF_UNSPEC = 0, +IFLA_VF_MAC = 1, +IFLA_VF_VLAN = 2, +IFLA_VF_TX_RATE = 3, +IFLA_VF_SPOOFCHK = 4, +IFLA_VF_LINK_STATE = 5, +IFLA_VF_RATE = 6, +IFLA_VF_RSS_QUERY_EN = 7, +IFLA_VF_STATS = 8, +IFLA_VF_TRUST = 9, +IFLA_VF_IB_NODE_GUID = 10, +IFLA_VF_IB_PORT_GUID = 11, +IFLA_VF_VLAN_LIST = 12, +IFLA_VF_BROADCAST = 13, +__IFLA_VF_MAX = 14, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_31 { +IFLA_VF_VLAN_INFO_UNSPEC = 0, +IFLA_VF_VLAN_INFO = 1, +__IFLA_VF_VLAN_INFO_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_32 { +IFLA_VF_LINK_STATE_AUTO = 0, +IFLA_VF_LINK_STATE_ENABLE = 1, +IFLA_VF_LINK_STATE_DISABLE = 2, +__IFLA_VF_LINK_STATE_MAX = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_33 { +IFLA_VF_STATS_RX_PACKETS = 0, +IFLA_VF_STATS_TX_PACKETS = 1, +IFLA_VF_STATS_RX_BYTES = 2, +IFLA_VF_STATS_TX_BYTES = 3, +IFLA_VF_STATS_BROADCAST = 4, +IFLA_VF_STATS_MULTICAST = 5, +IFLA_VF_STATS_PAD = 6, +IFLA_VF_STATS_RX_DROPPED = 7, +IFLA_VF_STATS_TX_DROPPED = 8, +__IFLA_VF_STATS_MAX = 9, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_34 { +IFLA_VF_PORT_UNSPEC = 0, +IFLA_VF_PORT = 1, +__IFLA_VF_PORT_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_35 { +IFLA_PORT_UNSPEC = 0, +IFLA_PORT_VF = 1, +IFLA_PORT_PROFILE = 2, +IFLA_PORT_VSI_TYPE = 3, +IFLA_PORT_INSTANCE_UUID = 4, +IFLA_PORT_HOST_UUID = 5, +IFLA_PORT_REQUEST = 6, +IFLA_PORT_RESPONSE = 7, +__IFLA_PORT_MAX = 8, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_36 { +PORT_REQUEST_PREASSOCIATE = 0, +PORT_REQUEST_PREASSOCIATE_RR = 1, +PORT_REQUEST_ASSOCIATE = 2, +PORT_REQUEST_DISASSOCIATE = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_37 { +PORT_VDP_RESPONSE_SUCCESS = 0, +PORT_VDP_RESPONSE_INVALID_FORMAT = 1, +PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2, +PORT_VDP_RESPONSE_UNUSED_VTID = 3, +PORT_VDP_RESPONSE_VTID_VIOLATION = 4, +PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5, +PORT_VDP_RESPONSE_OUT_OF_SYNC = 6, +PORT_PROFILE_RESPONSE_SUCCESS = 256, +PORT_PROFILE_RESPONSE_INPROGRESS = 257, +PORT_PROFILE_RESPONSE_INVALID = 258, +PORT_PROFILE_RESPONSE_BADSTATE = 259, +PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, +PORT_PROFILE_RESPONSE_ERROR = 261, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_38 { +IFLA_IPOIB_UNSPEC = 0, +IFLA_IPOIB_PKEY = 1, +IFLA_IPOIB_MODE = 2, +IFLA_IPOIB_UMCAST = 3, +__IFLA_IPOIB_MAX = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_39 { +IPOIB_MODE_DATAGRAM = 0, +IPOIB_MODE_CONNECTED = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_40 { +HSR_PROTOCOL_HSR = 0, +HSR_PROTOCOL_PRP = 1, +HSR_PROTOCOL_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_41 { +IFLA_HSR_UNSPEC = 0, +IFLA_HSR_SLAVE1 = 1, +IFLA_HSR_SLAVE2 = 2, +IFLA_HSR_MULTICAST_SPEC = 3, +IFLA_HSR_SUPERVISION_ADDR = 4, +IFLA_HSR_SEQ_NR = 5, +IFLA_HSR_VERSION = 6, +IFLA_HSR_PROTOCOL = 7, +__IFLA_HSR_MAX = 8, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_42 { +IFLA_STATS_UNSPEC = 0, +IFLA_STATS_LINK_64 = 1, +IFLA_STATS_LINK_XSTATS = 2, +IFLA_STATS_LINK_XSTATS_SLAVE = 3, +IFLA_STATS_LINK_OFFLOAD_XSTATS = 4, +IFLA_STATS_AF_SPEC = 5, +__IFLA_STATS_MAX = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_43 { +IFLA_STATS_GETSET_UNSPEC = 0, +IFLA_STATS_GET_FILTERS = 1, +IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, +__IFLA_STATS_GETSET_MAX = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_44 { +LINK_XSTATS_TYPE_UNSPEC = 0, +LINK_XSTATS_TYPE_BRIDGE = 1, +LINK_XSTATS_TYPE_BOND = 2, +__LINK_XSTATS_TYPE_MAX = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_45 { +IFLA_OFFLOAD_XSTATS_UNSPEC = 0, +IFLA_OFFLOAD_XSTATS_CPU_HIT = 1, +IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2, +IFLA_OFFLOAD_XSTATS_L3_STATS = 3, +__IFLA_OFFLOAD_XSTATS_MAX = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_46 { +IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0, +IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1, +IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, +__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_47 { +XDP_ATTACHED_NONE = 0, +XDP_ATTACHED_DRV = 1, +XDP_ATTACHED_SKB = 2, +XDP_ATTACHED_HW = 3, +XDP_ATTACHED_MULTI = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_48 { +IFLA_XDP_UNSPEC = 0, +IFLA_XDP_FD = 1, +IFLA_XDP_ATTACHED = 2, +IFLA_XDP_FLAGS = 3, +IFLA_XDP_PROG_ID = 4, +IFLA_XDP_DRV_PROG_ID = 5, +IFLA_XDP_SKB_PROG_ID = 6, +IFLA_XDP_HW_PROG_ID = 7, +IFLA_XDP_EXPECTED_FD = 8, +__IFLA_XDP_MAX = 9, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_49 { +IFLA_EVENT_NONE = 0, +IFLA_EVENT_REBOOT = 1, +IFLA_EVENT_FEATURES = 2, +IFLA_EVENT_BONDING_FAILOVER = 3, +IFLA_EVENT_NOTIFY_PEERS = 4, +IFLA_EVENT_IGMP_RESEND = 5, +IFLA_EVENT_BONDING_OPTIONS = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_50 { +IFLA_TUN_UNSPEC = 0, +IFLA_TUN_OWNER = 1, +IFLA_TUN_GROUP = 2, +IFLA_TUN_TYPE = 3, +IFLA_TUN_PI = 4, +IFLA_TUN_VNET_HDR = 5, +IFLA_TUN_PERSIST = 6, +IFLA_TUN_MULTI_QUEUE = 7, +IFLA_TUN_NUM_QUEUES = 8, +IFLA_TUN_NUM_DISABLED_QUEUES = 9, +__IFLA_TUN_MAX = 10, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_51 { +IFLA_RMNET_UNSPEC = 0, +IFLA_RMNET_MUX_ID = 1, +IFLA_RMNET_FLAGS = 2, +__IFLA_RMNET_MAX = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_52 { +IFLA_MCTP_UNSPEC = 0, +IFLA_MCTP_NET = 1, +__IFLA_MCTP_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_53 { +IFLA_DSA_UNSPEC = 0, +IFLA_DSA_MASTER = 1, +__IFLA_DSA_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_54 { +IFA_UNSPEC = 0, +IFA_ADDRESS = 1, +IFA_LOCAL = 2, +IFA_LABEL = 3, +IFA_BROADCAST = 4, +IFA_ANYCAST = 5, +IFA_CACHEINFO = 6, +IFA_MULTICAST = 7, +IFA_FLAGS = 8, +IFA_RT_PRIORITY = 9, +IFA_TARGET_NETNSID = 10, +IFA_PROTO = 11, +__IFA_MAX = 12, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_55 { +NDA_UNSPEC = 0, +NDA_DST = 1, +NDA_LLADDR = 2, +NDA_CACHEINFO = 3, +NDA_PROBES = 4, +NDA_VLAN = 5, +NDA_PORT = 6, +NDA_VNI = 7, +NDA_IFINDEX = 8, +NDA_MASTER = 9, +NDA_LINK_NETNSID = 10, +NDA_SRC_VNI = 11, +NDA_PROTOCOL = 12, +NDA_NH_ID = 13, +NDA_FDB_EXT_ATTRS = 14, +NDA_FLAGS_EXT = 15, +NDA_NDM_STATE_MASK = 16, +NDA_NDM_FLAGS_MASK = 17, +__NDA_MAX = 18, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_56 { +NDTPA_UNSPEC = 0, +NDTPA_IFINDEX = 1, +NDTPA_REFCNT = 2, +NDTPA_REACHABLE_TIME = 3, +NDTPA_BASE_REACHABLE_TIME = 4, +NDTPA_RETRANS_TIME = 5, +NDTPA_GC_STALETIME = 6, +NDTPA_DELAY_PROBE_TIME = 7, +NDTPA_QUEUE_LEN = 8, +NDTPA_APP_PROBES = 9, +NDTPA_UCAST_PROBES = 10, +NDTPA_MCAST_PROBES = 11, +NDTPA_ANYCAST_DELAY = 12, +NDTPA_PROXY_DELAY = 13, +NDTPA_PROXY_QLEN = 14, +NDTPA_LOCKTIME = 15, +NDTPA_QUEUE_LENBYTES = 16, +NDTPA_MCAST_REPROBES = 17, +NDTPA_PAD = 18, +NDTPA_INTERVAL_PROBE_TIME_MS = 19, +__NDTPA_MAX = 20, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_57 { +NDTA_UNSPEC = 0, +NDTA_NAME = 1, +NDTA_THRESH1 = 2, +NDTA_THRESH2 = 3, +NDTA_THRESH3 = 4, +NDTA_CONFIG = 5, +NDTA_PARMS = 6, +NDTA_STATS = 7, +NDTA_GC_INTERVAL = 8, +NDTA_PAD = 9, +__NDTA_MAX = 10, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_58 { +FDB_NOTIFY_BIT = 1, +FDB_NOTIFY_INACTIVE_BIT = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_59 { +NFEA_UNSPEC = 0, +NFEA_ACTIVITY_NOTIFY = 1, +NFEA_DONT_REFRESH = 2, +__NFEA_MAX = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_60 { +RTM_BASE = 16, +RTM_DELLINK = 17, +RTM_GETLINK = 18, +RTM_SETLINK = 19, +RTM_NEWADDR = 20, +RTM_DELADDR = 21, +RTM_GETADDR = 22, +RTM_NEWROUTE = 24, +RTM_DELROUTE = 25, +RTM_GETROUTE = 26, +RTM_NEWNEIGH = 28, +RTM_DELNEIGH = 29, +RTM_GETNEIGH = 30, +RTM_NEWRULE = 32, +RTM_DELRULE = 33, +RTM_GETRULE = 34, +RTM_NEWQDISC = 36, +RTM_DELQDISC = 37, +RTM_GETQDISC = 38, +RTM_NEWTCLASS = 40, +RTM_DELTCLASS = 41, +RTM_GETTCLASS = 42, +RTM_NEWTFILTER = 44, +RTM_DELTFILTER = 45, +RTM_GETTFILTER = 46, +RTM_NEWACTION = 48, +RTM_DELACTION = 49, +RTM_GETACTION = 50, +RTM_NEWPREFIX = 52, +RTM_GETMULTICAST = 58, +RTM_GETANYCAST = 62, +RTM_NEWNEIGHTBL = 64, +RTM_GETNEIGHTBL = 66, +RTM_SETNEIGHTBL = 67, +RTM_NEWNDUSEROPT = 68, +RTM_NEWADDRLABEL = 72, +RTM_DELADDRLABEL = 73, +RTM_GETADDRLABEL = 74, +RTM_GETDCB = 78, +RTM_SETDCB = 79, +RTM_NEWNETCONF = 80, +RTM_DELNETCONF = 81, +RTM_GETNETCONF = 82, +RTM_NEWMDB = 84, +RTM_DELMDB = 85, +RTM_GETMDB = 86, +RTM_NEWNSID = 88, +RTM_DELNSID = 89, +RTM_GETNSID = 90, +RTM_NEWSTATS = 92, +RTM_GETSTATS = 94, +RTM_SETSTATS = 95, +RTM_NEWCACHEREPORT = 96, +RTM_NEWCHAIN = 100, +RTM_DELCHAIN = 101, +RTM_GETCHAIN = 102, +RTM_NEWNEXTHOP = 104, +RTM_DELNEXTHOP = 105, +RTM_GETNEXTHOP = 106, +RTM_NEWLINKPROP = 108, +RTM_DELLINKPROP = 109, +RTM_GETLINKPROP = 110, +RTM_NEWVLAN = 112, +RTM_DELVLAN = 113, +RTM_GETVLAN = 114, +RTM_NEWNEXTHOPBUCKET = 116, +RTM_DELNEXTHOPBUCKET = 117, +RTM_GETNEXTHOPBUCKET = 118, +RTM_NEWTUNNEL = 120, +RTM_DELTUNNEL = 121, +RTM_GETTUNNEL = 122, +__RTM_MAX = 123, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_61 { +RTN_UNSPEC = 0, +RTN_UNICAST = 1, +RTN_LOCAL = 2, +RTN_BROADCAST = 3, +RTN_ANYCAST = 4, +RTN_MULTICAST = 5, +RTN_BLACKHOLE = 6, +RTN_UNREACHABLE = 7, +RTN_PROHIBIT = 8, +RTN_THROW = 9, +RTN_NAT = 10, +RTN_XRESOLVE = 11, +__RTN_MAX = 12, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum rt_scope_t { +RT_SCOPE_UNIVERSE = 0, +RT_SCOPE_SITE = 200, +RT_SCOPE_LINK = 253, +RT_SCOPE_HOST = 254, +RT_SCOPE_NOWHERE = 255, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum rt_class_t { +RT_TABLE_UNSPEC = 0, +RT_TABLE_COMPAT = 252, +RT_TABLE_DEFAULT = 253, +RT_TABLE_MAIN = 254, +RT_TABLE_LOCAL = 255, +RT_TABLE_MAX = 4294967295, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum rtattr_type_t { +RTA_UNSPEC = 0, +RTA_DST = 1, +RTA_SRC = 2, +RTA_IIF = 3, +RTA_OIF = 4, +RTA_GATEWAY = 5, +RTA_PRIORITY = 6, +RTA_PREFSRC = 7, +RTA_METRICS = 8, +RTA_MULTIPATH = 9, +RTA_PROTOINFO = 10, +RTA_FLOW = 11, +RTA_CACHEINFO = 12, +RTA_SESSION = 13, +RTA_MP_ALGO = 14, +RTA_TABLE = 15, +RTA_MARK = 16, +RTA_MFC_STATS = 17, +RTA_VIA = 18, +RTA_NEWDST = 19, +RTA_PREF = 20, +RTA_ENCAP_TYPE = 21, +RTA_ENCAP = 22, +RTA_EXPIRES = 23, +RTA_PAD = 24, +RTA_UID = 25, +RTA_TTL_PROPAGATE = 26, +RTA_IP_PROTO = 27, +RTA_SPORT = 28, +RTA_DPORT = 29, +RTA_NH_ID = 30, +__RTA_MAX = 31, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_62 { +RTAX_UNSPEC = 0, +RTAX_LOCK = 1, +RTAX_MTU = 2, +RTAX_WINDOW = 3, +RTAX_RTT = 4, +RTAX_RTTVAR = 5, +RTAX_SSTHRESH = 6, +RTAX_CWND = 7, +RTAX_ADVMSS = 8, +RTAX_REORDERING = 9, +RTAX_HOPLIMIT = 10, +RTAX_INITCWND = 11, +RTAX_FEATURES = 12, +RTAX_RTO_MIN = 13, +RTAX_INITRWND = 14, +RTAX_QUICKACK = 15, +RTAX_CC_ALGO = 16, +RTAX_FASTOPEN_NO_COOKIE = 17, +__RTAX_MAX = 18, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_63 { +PREFIX_UNSPEC = 0, +PREFIX_ADDRESS = 1, +PREFIX_CACHEINFO = 2, +__PREFIX_MAX = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_64 { +TCA_UNSPEC = 0, +TCA_KIND = 1, +TCA_OPTIONS = 2, +TCA_STATS = 3, +TCA_XSTATS = 4, +TCA_RATE = 5, +TCA_FCNT = 6, +TCA_STATS2 = 7, +TCA_STAB = 8, +TCA_PAD = 9, +TCA_DUMP_INVISIBLE = 10, +TCA_CHAIN = 11, +TCA_HW_OFFLOAD = 12, +TCA_INGRESS_BLOCK = 13, +TCA_EGRESS_BLOCK = 14, +TCA_DUMP_FLAGS = 15, +TCA_EXT_WARN_MSG = 16, +__TCA_MAX = 17, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_65 { +NDUSEROPT_UNSPEC = 0, +NDUSEROPT_SRCADDR = 1, +__NDUSEROPT_MAX = 2, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum rtnetlink_groups { +RTNLGRP_NONE = 0, +RTNLGRP_LINK = 1, +RTNLGRP_NOTIFY = 2, +RTNLGRP_NEIGH = 3, +RTNLGRP_TC = 4, +RTNLGRP_IPV4_IFADDR = 5, +RTNLGRP_IPV4_MROUTE = 6, +RTNLGRP_IPV4_ROUTE = 7, +RTNLGRP_IPV4_RULE = 8, +RTNLGRP_IPV6_IFADDR = 9, +RTNLGRP_IPV6_MROUTE = 10, +RTNLGRP_IPV6_ROUTE = 11, +RTNLGRP_IPV6_IFINFO = 12, +RTNLGRP_DECnet_IFADDR = 13, +RTNLGRP_NOP2 = 14, +RTNLGRP_DECnet_ROUTE = 15, +RTNLGRP_DECnet_RULE = 16, +RTNLGRP_NOP4 = 17, +RTNLGRP_IPV6_PREFIX = 18, +RTNLGRP_IPV6_RULE = 19, +RTNLGRP_ND_USEROPT = 20, +RTNLGRP_PHONET_IFADDR = 21, +RTNLGRP_PHONET_ROUTE = 22, +RTNLGRP_DCB = 23, +RTNLGRP_IPV4_NETCONF = 24, +RTNLGRP_IPV6_NETCONF = 25, +RTNLGRP_MDB = 26, +RTNLGRP_MPLS_ROUTE = 27, +RTNLGRP_NSID = 28, +RTNLGRP_MPLS_NETCONF = 29, +RTNLGRP_IPV4_MROUTE_R = 30, +RTNLGRP_IPV6_MROUTE_R = 31, +RTNLGRP_NEXTHOP = 32, +RTNLGRP_BRVLAN = 33, +RTNLGRP_MCTP_IFADDR = 34, +RTNLGRP_TUNNEL = 35, +RTNLGRP_STATS = 36, +__RTNLGRP_MAX = 37, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_66 { +TCA_ROOT_UNSPEC = 0, +TCA_ROOT_TAB = 1, +TCA_ROOT_FLAGS = 2, +TCA_ROOT_COUNT = 3, +TCA_ROOT_TIME_DELTA = 4, +TCA_ROOT_EXT_WARN_MSG = 5, +__TCA_ROOT_MAX = 6, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union rta_session__bindgen_ty_1 { +pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, +pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, +pub spi: __u32, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl nlmsgerr_attrs { +pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +} +impl netlink_policy_type_attr { +pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; +} +impl macsec_validation_type { +pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; +} +impl macsec_offload { +pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; +} +impl ifla_vxlan_df { +pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; +} +impl ifla_geneve_df { +pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/net.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/net.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/net.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/net.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1876 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type socklen_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_addr { +pub s_addr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq { +pub imr_multiaddr: in_addr, +pub imr_interface: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreqn { +pub imr_multiaddr: in_addr, +pub imr_address: in_addr, +pub imr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq_source { +pub imr_multiaddr: __be32, +pub imr_interface: __be32, +pub imr_sourceaddr: __be32, +} +#[repr(C)] +pub struct ip_msfilter { +pub imsf_multiaddr: __be32, +pub imsf_interface: __be32, +pub imsf_fmode: __u32, +pub imsf_numsrc: __u32, +pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, +} +#[repr(C)] +pub struct ip_msfilter__bindgen_ty_1 { +pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, +pub __bindgen_anon_1: __BindgenUnionField, +pub bindgen_union_field: u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { +pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub imsf_slist_flex: __IncompleteArrayField<__be32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_req { +pub gr_interface: __u32, +pub gr_group: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_source_req { +pub gsr_interface: __u32, +pub gsr_group: __kernel_sockaddr_storage, +pub gsr_source: __kernel_sockaddr_storage, +} +#[repr(C)] +pub struct group_filter { +pub __bindgen_anon_1: group_filter__bindgen_ty_1, +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 34usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { +pub gf_interface_aux: __u32, +pub gf_group_aux: __kernel_sockaddr_storage, +pub gf_fmode_aux: __u32, +pub gf_numsrc_aux: __u32, +pub gf_slist: [__kernel_sockaddr_storage; 1usize], +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { +pub gf_interface: __u32, +pub gf_group: __kernel_sockaddr_storage, +pub gf_fmode: __u32, +pub gf_numsrc: __u32, +pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_pktinfo { +pub ipi_ifindex: crate::ctypes::c_int, +pub ipi_spec_dst: in_addr, +pub ipi_addr: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_in { +pub sin_family: __kernel_sa_family_t, +pub sin_port: __be16, +pub sin_addr: in_addr, +pub __pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct iphdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub tos: __u8, +pub tot_len: __be16, +pub id: __be16, +pub frag_off: __be16, +pub ttl: __u8, +pub protocol: __u8, +pub check: __sum16, +pub __bindgen_anon_1: iphdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_auth_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub reserved: __be16, +pub spi: __be32, +pub seq_no: __be32, +pub auth_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_esp_hdr { +pub spi: __be32, +pub seq_no: __be32, +pub enc_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_comp_hdr { +pub nexthdr: __u8, +pub flags: __u8, +pub cpi: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_beet_phdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub padlen: __u8, +pub reserved: __u8, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_addr { +pub in6_u: in6_addr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr_in6 { +pub sin6_family: crate::ctypes::c_ushort, +pub sin6_port: __be16, +pub sin6_flowinfo: __be32, +pub sin6_addr: in6_addr, +pub sin6_scope_id: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6_mreq { +pub ipv6mr_multiaddr: in6_addr, +pub ipv6mr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_flowlabel_req { +pub flr_dst: in6_addr, +pub flr_label: __be32, +pub flr_action: __u8, +pub flr_share: __u8, +pub flr_flags: __u16, +pub flr_expires: __u16, +pub flr_linger: __u16, +pub __flr_pad: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_pktinfo { +pub ipi6_addr: in6_addr, +pub ipi6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ip6_mtuinfo { +pub ip6m_addr: sockaddr_in6, +pub ip6m_mtu: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_ifreq { +pub ifr6_addr: in6_addr, +pub ifr6_prefixlen: __u32, +pub ifr6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_rt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub type_: __u8, +pub segments_left: __u8, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_opt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +} +#[repr(C)] +pub struct rt0_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rt2_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: in6_addr, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct ipv6_destopt_hao { +pub type_: __u8, +pub length: __u8, +pub addr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub flow_lbl: [__u8; 3usize], +pub payload_len: __be16, +pub nexthdr: __u8, +pub hop_limit: __u8, +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcphdr { +pub source: __be16, +pub dest: __be16, +pub seq: __be32, +pub ack_seq: __be32, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub window: __be16, +pub check: __sum16, +pub urg_ptr: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_opt { +pub opt_code: __u32, +pub opt_val: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_window { +pub snd_wl1: __u32, +pub snd_wnd: __u32, +pub max_window: __u32, +pub rcv_wnd: __u32, +pub rcv_wup: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_info { +pub tcpi_state: __u8, +pub tcpi_ca_state: __u8, +pub tcpi_retransmits: __u8, +pub tcpi_probes: __u8, +pub tcpi_backoff: __u8, +pub tcpi_options: __u8, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub tcpi_rto: __u32, +pub tcpi_ato: __u32, +pub tcpi_snd_mss: __u32, +pub tcpi_rcv_mss: __u32, +pub tcpi_unacked: __u32, +pub tcpi_sacked: __u32, +pub tcpi_lost: __u32, +pub tcpi_retrans: __u32, +pub tcpi_fackets: __u32, +pub tcpi_last_data_sent: __u32, +pub tcpi_last_ack_sent: __u32, +pub tcpi_last_data_recv: __u32, +pub tcpi_last_ack_recv: __u32, +pub tcpi_pmtu: __u32, +pub tcpi_rcv_ssthresh: __u32, +pub tcpi_rtt: __u32, +pub tcpi_rttvar: __u32, +pub tcpi_snd_ssthresh: __u32, +pub tcpi_snd_cwnd: __u32, +pub tcpi_advmss: __u32, +pub tcpi_reordering: __u32, +pub tcpi_rcv_rtt: __u32, +pub tcpi_rcv_space: __u32, +pub tcpi_total_retrans: __u32, +pub tcpi_pacing_rate: __u64, +pub tcpi_max_pacing_rate: __u64, +pub tcpi_bytes_acked: __u64, +pub tcpi_bytes_received: __u64, +pub tcpi_segs_out: __u32, +pub tcpi_segs_in: __u32, +pub tcpi_notsent_bytes: __u32, +pub tcpi_min_rtt: __u32, +pub tcpi_data_segs_in: __u32, +pub tcpi_data_segs_out: __u32, +pub tcpi_delivery_rate: __u64, +pub tcpi_busy_time: __u64, +pub tcpi_rwnd_limited: __u64, +pub tcpi_sndbuf_limited: __u64, +pub tcpi_delivered: __u32, +pub tcpi_delivered_ce: __u32, +pub tcpi_bytes_sent: __u64, +pub tcpi_bytes_retrans: __u64, +pub tcpi_dsack_dups: __u32, +pub tcpi_reord_seen: __u32, +pub tcpi_rcv_ooopack: __u32, +pub tcpi_snd_wnd: __u32, +pub tcpi_rcv_wnd: __u32, +pub tcpi_rehash: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct tcp_md5sig { +pub tcpm_addr: __kernel_sockaddr_storage, +pub tcpm_flags: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_ifindex: crate::ctypes::c_int, +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_diag_md5sig { +pub tcpm_family: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_addr: [__be32; 4usize], +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_zerocopy_receive { +pub address: __u64, +pub length: __u32, +pub recv_skip_hint: __u32, +pub inq: __u32, +pub err: __s32, +pub copybuf_address: __u64, +pub copybuf_len: __s32, +pub flags: __u32, +pub msg_control: __u64, +pub msg_controllen: __u64, +pub msg_flags: __u32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_un { +pub sun_family: __kernel_sa_family_t, +pub sun_path: [crate::ctypes::c_char; 108usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr { +pub __storage: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct linger { +pub l_onoff: crate::ctypes::c_int, +pub l_linger: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct msghdr { +pub msg_name: *mut crate::ctypes::c_void, +pub msg_namelen: crate::ctypes::c_int, +pub msg_iov: *mut iovec, +pub msg_iovlen: usize, +pub msg_control: *mut crate::ctypes::c_void, +pub msg_controllen: usize, +pub msg_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct cmsghdr { +pub cmsg_len: usize, +pub cmsg_level: crate::ctypes::c_int, +pub cmsg_type: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ucred { +pub pid: __u32, +pub uid: __u32, +pub gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mmsghdr { +pub msg_hdr: msghdr, +pub msg_len: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub _address: u8, +} +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const IP_TOS: u32 = 1; +pub const IP_TTL: u32 = 2; +pub const IP_HDRINCL: u32 = 3; +pub const IP_OPTIONS: u32 = 4; +pub const IP_ROUTER_ALERT: u32 = 5; +pub const IP_RECVOPTS: u32 = 6; +pub const IP_RETOPTS: u32 = 7; +pub const IP_PKTINFO: u32 = 8; +pub const IP_PKTOPTIONS: u32 = 9; +pub const IP_MTU_DISCOVER: u32 = 10; +pub const IP_RECVERR: u32 = 11; +pub const IP_RECVTTL: u32 = 12; +pub const IP_RECVTOS: u32 = 13; +pub const IP_MTU: u32 = 14; +pub const IP_FREEBIND: u32 = 15; +pub const IP_IPSEC_POLICY: u32 = 16; +pub const IP_XFRM_POLICY: u32 = 17; +pub const IP_PASSSEC: u32 = 18; +pub const IP_TRANSPARENT: u32 = 19; +pub const IP_RECVRETOPTS: u32 = 7; +pub const IP_ORIGDSTADDR: u32 = 20; +pub const IP_RECVORIGDSTADDR: u32 = 20; +pub const IP_MINTTL: u32 = 21; +pub const IP_NODEFRAG: u32 = 22; +pub const IP_CHECKSUM: u32 = 23; +pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; +pub const IP_RECVFRAGSIZE: u32 = 25; +pub const IP_RECVERR_RFC4884: u32 = 26; +pub const IP_PMTUDISC_DONT: u32 = 0; +pub const IP_PMTUDISC_WANT: u32 = 1; +pub const IP_PMTUDISC_DO: u32 = 2; +pub const IP_PMTUDISC_PROBE: u32 = 3; +pub const IP_PMTUDISC_INTERFACE: u32 = 4; +pub const IP_PMTUDISC_OMIT: u32 = 5; +pub const IP_MULTICAST_IF: u32 = 32; +pub const IP_MULTICAST_TTL: u32 = 33; +pub const IP_MULTICAST_LOOP: u32 = 34; +pub const IP_ADD_MEMBERSHIP: u32 = 35; +pub const IP_DROP_MEMBERSHIP: u32 = 36; +pub const IP_UNBLOCK_SOURCE: u32 = 37; +pub const IP_BLOCK_SOURCE: u32 = 38; +pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; +pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; +pub const IP_MSFILTER: u32 = 41; +pub const MCAST_JOIN_GROUP: u32 = 42; +pub const MCAST_BLOCK_SOURCE: u32 = 43; +pub const MCAST_UNBLOCK_SOURCE: u32 = 44; +pub const MCAST_LEAVE_GROUP: u32 = 45; +pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; +pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; +pub const MCAST_MSFILTER: u32 = 48; +pub const IP_MULTICAST_ALL: u32 = 49; +pub const IP_UNICAST_IF: u32 = 50; +pub const IP_LOCAL_PORT_RANGE: u32 = 51; +pub const IP_PROTOCOL: u32 = 52; +pub const MCAST_EXCLUDE: u32 = 0; +pub const MCAST_INCLUDE: u32 = 1; +pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; +pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; +pub const __SOCK_SIZE__: u32 = 16; +pub const IN_CLASSA_NET: u32 = 4278190080; +pub const IN_CLASSA_NSHIFT: u32 = 24; +pub const IN_CLASSA_HOST: u32 = 16777215; +pub const IN_CLASSA_MAX: u32 = 128; +pub const IN_CLASSB_NET: u32 = 4294901760; +pub const IN_CLASSB_NSHIFT: u32 = 16; +pub const IN_CLASSB_HOST: u32 = 65535; +pub const IN_CLASSB_MAX: u32 = 65536; +pub const IN_CLASSC_NET: u32 = 4294967040; +pub const IN_CLASSC_NSHIFT: u32 = 8; +pub const IN_CLASSC_HOST: u32 = 255; +pub const IN_MULTICAST_NET: u32 = 3758096384; +pub const IN_CLASSE_NET: u32 = 4294967295; +pub const IN_CLASSE_NSHIFT: u32 = 0; +pub const IN_LOOPBACKNET: u32 = 127; +pub const INADDR_LOOPBACK: u32 = 2130706433; +pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; +pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; +pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; +pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; +pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; +pub const __BIG_ENDIAN: u32 = 4321; +pub const IPTOS_TOS_MASK: u32 = 30; +pub const IPTOS_LOWDELAY: u32 = 16; +pub const IPTOS_THROUGHPUT: u32 = 8; +pub const IPTOS_RELIABILITY: u32 = 4; +pub const IPTOS_MINCOST: u32 = 2; +pub const IPTOS_PREC_MASK: u32 = 224; +pub const IPTOS_PREC_NETCONTROL: u32 = 224; +pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; +pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; +pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; +pub const IPTOS_PREC_FLASH: u32 = 96; +pub const IPTOS_PREC_IMMEDIATE: u32 = 64; +pub const IPTOS_PREC_PRIORITY: u32 = 32; +pub const IPTOS_PREC_ROUTINE: u32 = 0; +pub const IPOPT_COPY: u32 = 128; +pub const IPOPT_CLASS_MASK: u32 = 96; +pub const IPOPT_NUMBER_MASK: u32 = 31; +pub const IPOPT_CONTROL: u32 = 0; +pub const IPOPT_RESERVED1: u32 = 32; +pub const IPOPT_MEASUREMENT: u32 = 64; +pub const IPOPT_RESERVED2: u32 = 96; +pub const IPOPT_END: u32 = 0; +pub const IPOPT_NOOP: u32 = 1; +pub const IPOPT_SEC: u32 = 130; +pub const IPOPT_LSRR: u32 = 131; +pub const IPOPT_TIMESTAMP: u32 = 68; +pub const IPOPT_CIPSO: u32 = 134; +pub const IPOPT_RR: u32 = 7; +pub const IPOPT_SID: u32 = 136; +pub const IPOPT_SSRR: u32 = 137; +pub const IPOPT_RA: u32 = 148; +pub const IPVERSION: u32 = 4; +pub const MAXTTL: u32 = 255; +pub const IPDEFTTL: u32 = 64; +pub const IPOPT_OPTVAL: u32 = 0; +pub const IPOPT_OLEN: u32 = 1; +pub const IPOPT_OFFSET: u32 = 2; +pub const IPOPT_MINOFF: u32 = 4; +pub const MAX_IPOPTLEN: u32 = 40; +pub const IPOPT_NOP: u32 = 1; +pub const IPOPT_EOL: u32 = 0; +pub const IPOPT_TS: u32 = 68; +pub const IPOPT_TS_TSONLY: u32 = 0; +pub const IPOPT_TS_TSANDADDR: u32 = 1; +pub const IPOPT_TS_PRESPEC: u32 = 3; +pub const IPV4_BEET_PHMAXLEN: u32 = 8; +pub const IPV6_FL_A_GET: u32 = 0; +pub const IPV6_FL_A_PUT: u32 = 1; +pub const IPV6_FL_A_RENEW: u32 = 2; +pub const IPV6_FL_F_CREATE: u32 = 1; +pub const IPV6_FL_F_EXCL: u32 = 2; +pub const IPV6_FL_F_REFLECT: u32 = 4; +pub const IPV6_FL_F_REMOTE: u32 = 8; +pub const IPV6_FL_S_NONE: u32 = 0; +pub const IPV6_FL_S_EXCL: u32 = 1; +pub const IPV6_FL_S_PROCESS: u32 = 2; +pub const IPV6_FL_S_USER: u32 = 3; +pub const IPV6_FL_S_ANY: u32 = 255; +pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; +pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; +pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; +pub const IPV6_PRIORITY_FILLER: u32 = 256; +pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; +pub const IPV6_PRIORITY_RESERVED1: u32 = 768; +pub const IPV6_PRIORITY_BULK: u32 = 1024; +pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; +pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; +pub const IPV6_PRIORITY_CONTROL: u32 = 1792; +pub const IPV6_PRIORITY_8: u32 = 2048; +pub const IPV6_PRIORITY_9: u32 = 2304; +pub const IPV6_PRIORITY_10: u32 = 2560; +pub const IPV6_PRIORITY_11: u32 = 2816; +pub const IPV6_PRIORITY_12: u32 = 3072; +pub const IPV6_PRIORITY_13: u32 = 3328; +pub const IPV6_PRIORITY_14: u32 = 3584; +pub const IPV6_PRIORITY_15: u32 = 3840; +pub const IPPROTO_HOPOPTS: u32 = 0; +pub const IPPROTO_ROUTING: u32 = 43; +pub const IPPROTO_FRAGMENT: u32 = 44; +pub const IPPROTO_ICMPV6: u32 = 58; +pub const IPPROTO_NONE: u32 = 59; +pub const IPPROTO_DSTOPTS: u32 = 60; +pub const IPPROTO_MH: u32 = 135; +pub const IPV6_TLV_PAD1: u32 = 0; +pub const IPV6_TLV_PADN: u32 = 1; +pub const IPV6_TLV_ROUTERALERT: u32 = 5; +pub const IPV6_TLV_CALIPSO: u32 = 7; +pub const IPV6_TLV_IOAM: u32 = 49; +pub const IPV6_TLV_JUMBO: u32 = 194; +pub const IPV6_TLV_HAO: u32 = 201; +pub const IPV6_ADDRFORM: u32 = 1; +pub const IPV6_2292PKTINFO: u32 = 2; +pub const IPV6_2292HOPOPTS: u32 = 3; +pub const IPV6_2292DSTOPTS: u32 = 4; +pub const IPV6_2292RTHDR: u32 = 5; +pub const IPV6_2292PKTOPTIONS: u32 = 6; +pub const IPV6_CHECKSUM: u32 = 7; +pub const IPV6_2292HOPLIMIT: u32 = 8; +pub const IPV6_NEXTHOP: u32 = 9; +pub const IPV6_AUTHHDR: u32 = 10; +pub const IPV6_FLOWINFO: u32 = 11; +pub const IPV6_UNICAST_HOPS: u32 = 16; +pub const IPV6_MULTICAST_IF: u32 = 17; +pub const IPV6_MULTICAST_HOPS: u32 = 18; +pub const IPV6_MULTICAST_LOOP: u32 = 19; +pub const IPV6_ADD_MEMBERSHIP: u32 = 20; +pub const IPV6_DROP_MEMBERSHIP: u32 = 21; +pub const IPV6_ROUTER_ALERT: u32 = 22; +pub const IPV6_MTU_DISCOVER: u32 = 23; +pub const IPV6_MTU: u32 = 24; +pub const IPV6_RECVERR: u32 = 25; +pub const IPV6_V6ONLY: u32 = 26; +pub const IPV6_JOIN_ANYCAST: u32 = 27; +pub const IPV6_LEAVE_ANYCAST: u32 = 28; +pub const IPV6_MULTICAST_ALL: u32 = 29; +pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; +pub const IPV6_RECVERR_RFC4884: u32 = 31; +pub const IPV6_PMTUDISC_DONT: u32 = 0; +pub const IPV6_PMTUDISC_WANT: u32 = 1; +pub const IPV6_PMTUDISC_DO: u32 = 2; +pub const IPV6_PMTUDISC_PROBE: u32 = 3; +pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; +pub const IPV6_PMTUDISC_OMIT: u32 = 5; +pub const IPV6_FLOWLABEL_MGR: u32 = 32; +pub const IPV6_FLOWINFO_SEND: u32 = 33; +pub const IPV6_IPSEC_POLICY: u32 = 34; +pub const IPV6_XFRM_POLICY: u32 = 35; +pub const IPV6_HDRINCL: u32 = 36; +pub const IPV6_RECVPKTINFO: u32 = 49; +pub const IPV6_PKTINFO: u32 = 50; +pub const IPV6_RECVHOPLIMIT: u32 = 51; +pub const IPV6_HOPLIMIT: u32 = 52; +pub const IPV6_RECVHOPOPTS: u32 = 53; +pub const IPV6_HOPOPTS: u32 = 54; +pub const IPV6_RTHDRDSTOPTS: u32 = 55; +pub const IPV6_RECVRTHDR: u32 = 56; +pub const IPV6_RTHDR: u32 = 57; +pub const IPV6_RECVDSTOPTS: u32 = 58; +pub const IPV6_DSTOPTS: u32 = 59; +pub const IPV6_RECVPATHMTU: u32 = 60; +pub const IPV6_PATHMTU: u32 = 61; +pub const IPV6_DONTFRAG: u32 = 62; +pub const IPV6_RECVTCLASS: u32 = 66; +pub const IPV6_TCLASS: u32 = 67; +pub const IPV6_AUTOFLOWLABEL: u32 = 70; +pub const IPV6_ADDR_PREFERENCES: u32 = 72; +pub const IPV6_PREFER_SRC_TMP: u32 = 1; +pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; +pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; +pub const IPV6_PREFER_SRC_COA: u32 = 4; +pub const IPV6_PREFER_SRC_HOME: u32 = 1024; +pub const IPV6_PREFER_SRC_CGA: u32 = 8; +pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; +pub const IPV6_MINHOPCOUNT: u32 = 73; +pub const IPV6_ORIGDSTADDR: u32 = 74; +pub const IPV6_RECVORIGDSTADDR: u32 = 74; +pub const IPV6_TRANSPARENT: u32 = 75; +pub const IPV6_UNICAST_IF: u32 = 76; +pub const IPV6_RECVFRAGSIZE: u32 = 77; +pub const IPV6_FREEBIND: u32 = 78; +pub const IPV6_MIN_MTU: u32 = 1280; +pub const IPV6_SRCRT_STRICT: u32 = 1; +pub const IPV6_SRCRT_TYPE_0: u32 = 0; +pub const IPV6_SRCRT_TYPE_2: u32 = 2; +pub const IPV6_SRCRT_TYPE_3: u32 = 3; +pub const IPV6_SRCRT_TYPE_4: u32 = 4; +pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 536805376; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const SIOCGSTAMP_OLD: u32 = 35078; +pub const SIOCGSTAMPNS_OLD: u32 = 35079; +pub const SOL_SOCKET: u32 = 65535; +pub const SO_DEBUG: u32 = 1; +pub const SO_REUSEADDR: u32 = 4; +pub const SO_KEEPALIVE: u32 = 8; +pub const SO_DONTROUTE: u32 = 16; +pub const SO_BROADCAST: u32 = 32; +pub const SO_LINGER: u32 = 128; +pub const SO_OOBINLINE: u32 = 256; +pub const SO_REUSEPORT: u32 = 512; +pub const SO_TYPE: u32 = 4104; +pub const SO_STYLE: u32 = 4104; +pub const SO_ERROR: u32 = 4103; +pub const SO_SNDBUF: u32 = 4097; +pub const SO_RCVBUF: u32 = 4098; +pub const SO_SNDLOWAT: u32 = 4099; +pub const SO_RCVLOWAT: u32 = 4100; +pub const SO_SNDTIMEO_OLD: u32 = 4101; +pub const SO_RCVTIMEO_OLD: u32 = 4102; +pub const SO_ACCEPTCONN: u32 = 4105; +pub const SO_PROTOCOL: u32 = 4136; +pub const SO_DOMAIN: u32 = 4137; +pub const SO_NO_CHECK: u32 = 11; +pub const SO_PRIORITY: u32 = 12; +pub const SO_BSDCOMPAT: u32 = 14; +pub const SO_PASSCRED: u32 = 17; +pub const SO_PEERCRED: u32 = 18; +pub const SO_SECURITY_AUTHENTICATION: u32 = 22; +pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; +pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; +pub const SO_BINDTODEVICE: u32 = 25; +pub const SO_ATTACH_FILTER: u32 = 26; +pub const SO_DETACH_FILTER: u32 = 27; +pub const SO_GET_FILTER: u32 = 26; +pub const SO_PEERNAME: u32 = 28; +pub const SO_PEERSEC: u32 = 30; +pub const SO_SNDBUFFORCE: u32 = 31; +pub const SO_RCVBUFFORCE: u32 = 33; +pub const SO_PASSSEC: u32 = 34; +pub const SO_MARK: u32 = 36; +pub const SO_RXQ_OVFL: u32 = 40; +pub const SO_WIFI_STATUS: u32 = 41; +pub const SCM_WIFI_STATUS: u32 = 41; +pub const SO_PEEK_OFF: u32 = 42; +pub const SO_NOFCS: u32 = 43; +pub const SO_LOCK_FILTER: u32 = 44; +pub const SO_SELECT_ERR_QUEUE: u32 = 45; +pub const SO_BUSY_POLL: u32 = 46; +pub const SO_MAX_PACING_RATE: u32 = 47; +pub const SO_BPF_EXTENSIONS: u32 = 48; +pub const SO_INCOMING_CPU: u32 = 49; +pub const SO_ATTACH_BPF: u32 = 50; +pub const SO_DETACH_BPF: u32 = 27; +pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; +pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; +pub const SO_CNX_ADVICE: u32 = 53; +pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; +pub const SO_MEMINFO: u32 = 55; +pub const SO_INCOMING_NAPI_ID: u32 = 56; +pub const SO_COOKIE: u32 = 57; +pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; +pub const SO_PEERGROUPS: u32 = 59; +pub const SO_ZEROCOPY: u32 = 60; +pub const SO_TXTIME: u32 = 61; +pub const SCM_TXTIME: u32 = 61; +pub const SO_BINDTOIFINDEX: u32 = 62; +pub const SO_TIMESTAMP_OLD: u32 = 29; +pub const SO_TIMESTAMPNS_OLD: u32 = 35; +pub const SO_TIMESTAMPING_OLD: u32 = 37; +pub const SO_TIMESTAMP_NEW: u32 = 63; +pub const SO_TIMESTAMPNS_NEW: u32 = 64; +pub const SO_TIMESTAMPING_NEW: u32 = 65; +pub const SO_RCVTIMEO_NEW: u32 = 66; +pub const SO_SNDTIMEO_NEW: u32 = 67; +pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; +pub const SO_PREFER_BUSY_POLL: u32 = 69; +pub const SO_BUSY_POLL_BUDGET: u32 = 70; +pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; +pub const SO_TXREHASH: u32 = 74; +pub const SO_RCVMARK: u32 = 75; +pub const SO_TIMESTAMP: u32 = 29; +pub const SO_TIMESTAMPNS: u32 = 35; +pub const SO_TIMESTAMPING: u32 = 37; +pub const SO_RCVTIMEO: u32 = 4102; +pub const SO_SNDTIMEO: u32 = 4101; +pub const SCM_TIMESTAMP: u32 = 29; +pub const SCM_TIMESTAMPNS: u32 = 35; +pub const SCM_TIMESTAMPING: u32 = 37; +pub const SYS_SOCKET: u32 = 1; +pub const SYS_BIND: u32 = 2; +pub const SYS_CONNECT: u32 = 3; +pub const SYS_LISTEN: u32 = 4; +pub const SYS_ACCEPT: u32 = 5; +pub const SYS_GETSOCKNAME: u32 = 6; +pub const SYS_GETPEERNAME: u32 = 7; +pub const SYS_SOCKETPAIR: u32 = 8; +pub const SYS_SEND: u32 = 9; +pub const SYS_RECV: u32 = 10; +pub const SYS_SENDTO: u32 = 11; +pub const SYS_RECVFROM: u32 = 12; +pub const SYS_SHUTDOWN: u32 = 13; +pub const SYS_SETSOCKOPT: u32 = 14; +pub const SYS_GETSOCKOPT: u32 = 15; +pub const SYS_SENDMSG: u32 = 16; +pub const SYS_RECVMSG: u32 = 17; +pub const SYS_ACCEPT4: u32 = 18; +pub const SYS_RECVMMSG: u32 = 19; +pub const SYS_SENDMMSG: u32 = 20; +pub const __SO_ACCEPTCON: u32 = 65536; +pub const TCP_MSS_DEFAULT: u32 = 536; +pub const TCP_MSS_DESIRED: u32 = 1220; +pub const TCP_NODELAY: u32 = 1; +pub const TCP_MAXSEG: u32 = 2; +pub const TCP_CORK: u32 = 3; +pub const TCP_KEEPIDLE: u32 = 4; +pub const TCP_KEEPINTVL: u32 = 5; +pub const TCP_KEEPCNT: u32 = 6; +pub const TCP_SYNCNT: u32 = 7; +pub const TCP_LINGER2: u32 = 8; +pub const TCP_DEFER_ACCEPT: u32 = 9; +pub const TCP_WINDOW_CLAMP: u32 = 10; +pub const TCP_INFO: u32 = 11; +pub const TCP_QUICKACK: u32 = 12; +pub const TCP_CONGESTION: u32 = 13; +pub const TCP_MD5SIG: u32 = 14; +pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; +pub const TCP_THIN_DUPACK: u32 = 17; +pub const TCP_USER_TIMEOUT: u32 = 18; +pub const TCP_REPAIR: u32 = 19; +pub const TCP_REPAIR_QUEUE: u32 = 20; +pub const TCP_QUEUE_SEQ: u32 = 21; +pub const TCP_REPAIR_OPTIONS: u32 = 22; +pub const TCP_FASTOPEN: u32 = 23; +pub const TCP_TIMESTAMP: u32 = 24; +pub const TCP_NOTSENT_LOWAT: u32 = 25; +pub const TCP_CC_INFO: u32 = 26; +pub const TCP_SAVE_SYN: u32 = 27; +pub const TCP_SAVED_SYN: u32 = 28; +pub const TCP_REPAIR_WINDOW: u32 = 29; +pub const TCP_FASTOPEN_CONNECT: u32 = 30; +pub const TCP_ULP: u32 = 31; +pub const TCP_MD5SIG_EXT: u32 = 32; +pub const TCP_FASTOPEN_KEY: u32 = 33; +pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; +pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; +pub const TCP_INQ: u32 = 36; +pub const TCP_CM_INQ: u32 = 36; +pub const TCP_TX_DELAY: u32 = 37; +pub const TCP_REPAIR_ON: u32 = 1; +pub const TCP_REPAIR_OFF: u32 = 0; +pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; +pub const TCPI_OPT_TIMESTAMPS: u32 = 1; +pub const TCPI_OPT_SACK: u32 = 2; +pub const TCPI_OPT_WSCALE: u32 = 4; +pub const TCPI_OPT_ECN: u32 = 8; +pub const TCPI_OPT_ECN_SEEN: u32 = 16; +pub const TCPI_OPT_SYN_DATA: u32 = 32; +pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; +pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; +pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; +pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; +pub const UNIX_PATH_MAX: u32 = 108; +pub const SHUT_RD: u32 = 0; +pub const SHUT_WR: u32 = 1; +pub const SHUT_RDWR: u32 = 2; +pub const SOCK_STREAM: u32 = 2; +pub const SOCK_DGRAM: u32 = 1; +pub const SOCK_RAW: u32 = 3; +pub const SOCK_RDM: u32 = 4; +pub const SOCK_SEQPACKET: u32 = 5; +pub const MSG_DONTWAIT: u32 = 64; +pub const AF_UNSPEC: u32 = 0; +pub const AF_UNIX: u32 = 1; +pub const AF_INET: u32 = 2; +pub const AF_AX25: u32 = 3; +pub const AF_IPX: u32 = 4; +pub const AF_APPLETALK: u32 = 5; +pub const AF_NETROM: u32 = 6; +pub const AF_BRIDGE: u32 = 7; +pub const AF_ATMPVC: u32 = 8; +pub const AF_X25: u32 = 9; +pub const AF_INET6: u32 = 10; +pub const AF_ROSE: u32 = 11; +pub const AF_DECnet: u32 = 12; +pub const AF_NETBEUI: u32 = 13; +pub const AF_SECURITY: u32 = 14; +pub const AF_KEY: u32 = 15; +pub const AF_NETLINK: u32 = 16; +pub const AF_PACKET: u32 = 17; +pub const AF_ASH: u32 = 18; +pub const AF_ECONET: u32 = 19; +pub const AF_ATMSVC: u32 = 20; +pub const AF_RDS: u32 = 21; +pub const AF_SNA: u32 = 22; +pub const AF_IRDA: u32 = 23; +pub const AF_PPPOX: u32 = 24; +pub const AF_WANPIPE: u32 = 25; +pub const AF_LLC: u32 = 26; +pub const AF_CAN: u32 = 29; +pub const AF_TIPC: u32 = 30; +pub const AF_BLUETOOTH: u32 = 31; +pub const AF_IUCV: u32 = 32; +pub const AF_RXRPC: u32 = 33; +pub const AF_ISDN: u32 = 34; +pub const AF_PHONET: u32 = 35; +pub const AF_IEEE802154: u32 = 36; +pub const AF_MAX: u32 = 37; +pub const MSG_OOB: u32 = 1; +pub const MSG_PEEK: u32 = 2; +pub const MSG_DONTROUTE: u32 = 4; +pub const MSG_CTRUNC: u32 = 8; +pub const MSG_PROBE: u32 = 16; +pub const MSG_TRUNC: u32 = 32; +pub const MSG_EOR: u32 = 128; +pub const MSG_WAITALL: u32 = 256; +pub const MSG_FIN: u32 = 512; +pub const MSG_SYN: u32 = 1024; +pub const MSG_CONFIRM: u32 = 2048; +pub const MSG_RST: u32 = 4096; +pub const MSG_ERRQUEUE: u32 = 8192; +pub const MSG_NOSIGNAL: u32 = 16384; +pub const MSG_MORE: u32 = 32768; +pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; +pub const SCM_RIGHTS: u32 = 1; +pub const SCM_CREDENTIALS: u32 = 2; +pub const SCM_SECURITY: u32 = 3; +pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; +pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; +pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; +pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; +pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; +pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; +pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; +pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; +pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; +pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; +pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; +pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; +pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; +pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; +pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; +pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; +pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; +pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; +pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; +pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; +pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; +pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; +pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; +pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; +pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; +pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; +pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; +pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; +pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; +pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; +pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; +pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; +pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; +pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; +pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; +pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; +pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; +pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; +pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; +pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; +pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; +pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; +pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; +pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; +pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; +pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; +pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; +pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; +pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; +pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; +pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; +pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; +pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; +pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; +pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; +pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; +pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; +pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; +pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; +pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; +pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; +pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; +pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; +pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; +pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; +pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; +pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; +pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; +pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; +pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; +pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; +pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; +pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; +pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; +pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; +pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; +pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; +pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; +pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; +pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; +pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; +pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; +pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; +pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; +pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; +pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; +pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; +pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; +pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; +pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; +pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; +pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; +pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; +pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; +pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; +pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; +pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; +pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; +pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; +pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; +pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; +pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; +pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; +pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; +pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; +pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; +pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; +pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; +pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; +pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; +pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; +pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; +pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; +pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; +pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; +pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; +pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; +pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; +pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; +pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; +pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; +pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; +pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; +pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; +pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; +pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; +pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; +pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; +pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; +pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; +pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; +pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; +pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; +pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; +pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; +pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; +pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; +pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; +pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; +pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; +pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; +pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; +pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; +pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; +pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; +pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; +pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; +pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; +pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; +pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; +pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; +pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IPPROTO_IP = 0, +IPPROTO_ICMP = 1, +IPPROTO_IGMP = 2, +IPPROTO_IPIP = 4, +IPPROTO_TCP = 6, +IPPROTO_EGP = 8, +IPPROTO_PUP = 12, +IPPROTO_UDP = 17, +IPPROTO_IDP = 22, +IPPROTO_TP = 29, +IPPROTO_DCCP = 33, +IPPROTO_IPV6 = 41, +IPPROTO_RSVP = 46, +IPPROTO_GRE = 47, +IPPROTO_ESP = 50, +IPPROTO_AH = 51, +IPPROTO_MTP = 92, +IPPROTO_BEETPH = 94, +IPPROTO_ENCAP = 98, +IPPROTO_PIM = 103, +IPPROTO_COMP = 108, +IPPROTO_L2TP = 115, +IPPROTO_SCTP = 132, +IPPROTO_UDPLITE = 136, +IPPROTO_MPLS = 137, +IPPROTO_ETHERNET = 143, +IPPROTO_RAW = 255, +IPPROTO_MPTCP = 262, +IPPROTO_MAX = 263, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IPV4_DEVCONF_FORWARDING = 1, +IPV4_DEVCONF_MC_FORWARDING = 2, +IPV4_DEVCONF_PROXY_ARP = 3, +IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, +IPV4_DEVCONF_SECURE_REDIRECTS = 5, +IPV4_DEVCONF_SEND_REDIRECTS = 6, +IPV4_DEVCONF_SHARED_MEDIA = 7, +IPV4_DEVCONF_RP_FILTER = 8, +IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, +IPV4_DEVCONF_BOOTP_RELAY = 10, +IPV4_DEVCONF_LOG_MARTIANS = 11, +IPV4_DEVCONF_TAG = 12, +IPV4_DEVCONF_ARPFILTER = 13, +IPV4_DEVCONF_MEDIUM_ID = 14, +IPV4_DEVCONF_NOXFRM = 15, +IPV4_DEVCONF_NOPOLICY = 16, +IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, +IPV4_DEVCONF_ARP_ANNOUNCE = 18, +IPV4_DEVCONF_ARP_IGNORE = 19, +IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, +IPV4_DEVCONF_ARP_ACCEPT = 21, +IPV4_DEVCONF_ARP_NOTIFY = 22, +IPV4_DEVCONF_ACCEPT_LOCAL = 23, +IPV4_DEVCONF_SRC_VMARK = 24, +IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, +IPV4_DEVCONF_ROUTE_LOCALNET = 26, +IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, +IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, +IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, +IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, +IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, +IPV4_DEVCONF_BC_FORWARDING = 32, +IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, +__IPV4_DEVCONF_MAX = 34, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +DEVCONF_FORWARDING = 0, +DEVCONF_HOPLIMIT = 1, +DEVCONF_MTU6 = 2, +DEVCONF_ACCEPT_RA = 3, +DEVCONF_ACCEPT_REDIRECTS = 4, +DEVCONF_AUTOCONF = 5, +DEVCONF_DAD_TRANSMITS = 6, +DEVCONF_RTR_SOLICITS = 7, +DEVCONF_RTR_SOLICIT_INTERVAL = 8, +DEVCONF_RTR_SOLICIT_DELAY = 9, +DEVCONF_USE_TEMPADDR = 10, +DEVCONF_TEMP_VALID_LFT = 11, +DEVCONF_TEMP_PREFERED_LFT = 12, +DEVCONF_REGEN_MAX_RETRY = 13, +DEVCONF_MAX_DESYNC_FACTOR = 14, +DEVCONF_MAX_ADDRESSES = 15, +DEVCONF_FORCE_MLD_VERSION = 16, +DEVCONF_ACCEPT_RA_DEFRTR = 17, +DEVCONF_ACCEPT_RA_PINFO = 18, +DEVCONF_ACCEPT_RA_RTR_PREF = 19, +DEVCONF_RTR_PROBE_INTERVAL = 20, +DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, +DEVCONF_PROXY_NDP = 22, +DEVCONF_OPTIMISTIC_DAD = 23, +DEVCONF_ACCEPT_SOURCE_ROUTE = 24, +DEVCONF_MC_FORWARDING = 25, +DEVCONF_DISABLE_IPV6 = 26, +DEVCONF_ACCEPT_DAD = 27, +DEVCONF_FORCE_TLLAO = 28, +DEVCONF_NDISC_NOTIFY = 29, +DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, +DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, +DEVCONF_SUPPRESS_FRAG_NDISC = 32, +DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, +DEVCONF_USE_OPTIMISTIC = 34, +DEVCONF_ACCEPT_RA_MTU = 35, +DEVCONF_STABLE_SECRET = 36, +DEVCONF_USE_OIF_ADDRS_ONLY = 37, +DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, +DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, +DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, +DEVCONF_DROP_UNSOLICITED_NA = 41, +DEVCONF_KEEP_ADDR_ON_DOWN = 42, +DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, +DEVCONF_SEG6_ENABLED = 44, +DEVCONF_SEG6_REQUIRE_HMAC = 45, +DEVCONF_ENHANCED_DAD = 46, +DEVCONF_ADDR_GEN_MODE = 47, +DEVCONF_DISABLE_POLICY = 48, +DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, +DEVCONF_NDISC_TCLASS = 50, +DEVCONF_RPL_SEG_ENABLED = 51, +DEVCONF_RA_DEFRTR_METRIC = 52, +DEVCONF_IOAM6_ENABLED = 53, +DEVCONF_IOAM6_ID = 54, +DEVCONF_IOAM6_ID_WIDE = 55, +DEVCONF_NDISC_EVICT_NOCARRIER = 56, +DEVCONF_ACCEPT_UNTRACKED_NA = 57, +DEVCONF_MAX = 58, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum socket_state { +SS_FREE = 0, +SS_UNCONNECTED = 1, +SS_CONNECTING = 2, +SS_CONNECTED = 3, +SS_DISCONNECTING = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +TCP_FLAG_CWR = 8388608, +TCP_FLAG_ECE = 4194304, +TCP_FLAG_URG = 2097152, +TCP_FLAG_ACK = 1048576, +TCP_FLAG_PSH = 524288, +TCP_FLAG_RST = 262144, +TCP_FLAG_SYN = 131072, +TCP_FLAG_FIN = 65536, +TCP_RESERVED_BITS = 251658240, +TCP_DATA_OFFSET = 4026531840, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +TCP_NO_QUEUE = 0, +TCP_RECV_QUEUE = 1, +TCP_SEND_QUEUE = 2, +TCP_QUEUES_NR = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_fastopen_client_fail { +TFO_STATUS_UNSPEC = 0, +TFO_COOKIE_UNAVAILABLE = 1, +TFO_DATA_NOT_ACKED = 2, +TFO_SYN_RETRANSMITTED = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_ca_state { +TCP_CA_Open = 0, +TCP_CA_Disorder = 1, +TCP_CA_CWR = 2, +TCP_CA_Recovery = 3, +TCP_CA_Loss = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +TCP_NLA_PAD = 0, +TCP_NLA_BUSY = 1, +TCP_NLA_RWND_LIMITED = 2, +TCP_NLA_SNDBUF_LIMITED = 3, +TCP_NLA_DATA_SEGS_OUT = 4, +TCP_NLA_TOTAL_RETRANS = 5, +TCP_NLA_PACING_RATE = 6, +TCP_NLA_DELIVERY_RATE = 7, +TCP_NLA_SND_CWND = 8, +TCP_NLA_REORDERING = 9, +TCP_NLA_MIN_RTT = 10, +TCP_NLA_RECUR_RETRANS = 11, +TCP_NLA_DELIVERY_RATE_APP_LMT = 12, +TCP_NLA_SNDQ_SIZE = 13, +TCP_NLA_CA_STATE = 14, +TCP_NLA_SND_SSTHRESH = 15, +TCP_NLA_DELIVERED = 16, +TCP_NLA_DELIVERED_CE = 17, +TCP_NLA_BYTES_SENT = 18, +TCP_NLA_BYTES_RETRANS = 19, +TCP_NLA_DSACK_DUPS = 20, +TCP_NLA_REORD_SEEN = 21, +TCP_NLA_SRTT = 22, +TCP_NLA_TIMEOUT_REHASH = 23, +TCP_NLA_BYTES_NOTSENT = 24, +TCP_NLA_EDT = 25, +TCP_NLA_TTL = 26, +TCP_NLA_REHASH = 27, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union iphdr__bindgen_ty_1 { +pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union in6_addr__bindgen_ty_1 { +pub u6_addr8: [__u8; 16usize], +pub u6_addr16: [__be16; 8usize], +pub u6_addr32: [__be32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ipv6hdr__bindgen_ty_1 { +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union tcp_word_hdr { +pub hdr: tcphdr, +pub words: [__be32; 5usize], +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} +impl iphdr { +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn ihl(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_ihl(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; +ihl as u64 +}); +__bindgen_bitfield_unit +} +} +impl ipv6hdr { +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn priority(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_priority(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let priority: u8 = unsafe { ::core::mem::transmute(priority) }; +priority as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcphdr { +#[inline] +pub fn doff(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } +} +#[inline] +pub fn set_doff(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn res1(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } +} +#[inline] +pub fn set_res1(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn cwr(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } +} +#[inline] +pub fn set_cwr(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn ece(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } +} +#[inline] +pub fn set_ece(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 1u8, val as u64) +} +} +#[inline] +pub fn urg(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } +} +#[inline] +pub fn set_urg(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(10usize, 1u8, val as u64) +} +} +#[inline] +pub fn ack(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } +} +#[inline] +pub fn set_ack(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(11usize, 1u8, val as u64) +} +} +#[inline] +pub fn psh(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } +} +#[inline] +pub fn set_psh(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(12usize, 1u8, val as u64) +} +} +#[inline] +pub fn rst(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } +} +#[inline] +pub fn set_rst(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(13usize, 1u8, val as u64) +} +} +#[inline] +pub fn syn(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } +} +#[inline] +pub fn set_syn(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(14usize, 1u8, val as u64) +} +} +#[inline] +pub fn fin(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +} +#[inline] +pub fn set_fin(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(15usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let doff: u16 = unsafe { ::core::mem::transmute(doff) }; +doff as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let res1: u16 = unsafe { ::core::mem::transmute(res1) }; +res1 as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; +cwr as u64 +}); +__bindgen_bitfield_unit.set(9usize, 1u8, { +let ece: u16 = unsafe { ::core::mem::transmute(ece) }; +ece as u64 +}); +__bindgen_bitfield_unit.set(10usize, 1u8, { +let urg: u16 = unsafe { ::core::mem::transmute(urg) }; +urg as u64 +}); +__bindgen_bitfield_unit.set(11usize, 1u8, { +let ack: u16 = unsafe { ::core::mem::transmute(ack) }; +ack as u64 +}); +__bindgen_bitfield_unit.set(12usize, 1u8, { +let psh: u16 = unsafe { ::core::mem::transmute(psh) }; +psh as u64 +}); +__bindgen_bitfield_unit.set(13usize, 1u8, { +let rst: u16 = unsafe { ::core::mem::transmute(rst) }; +rst as u64 +}); +__bindgen_bitfield_unit.set(14usize, 1u8, { +let syn: u16 = unsafe { ::core::mem::transmute(syn) }; +syn as u64 +}); +__bindgen_bitfield_unit.set(15usize, 1u8, { +let fin: u16 = unsafe { ::core::mem::transmute(fin) }; +fin as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcp_info { +#[inline] +pub fn tcpi_snd_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_rcv_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +} +#[inline] +pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn tcpi_fastopen_client_fail(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +} +#[inline] +pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 2u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; +tcpi_snd_wscale as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; +tcpi_rcv_wscale as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; +tcpi_delivery_rate_app_limited as u64 +}); +__bindgen_bitfield_unit.set(9usize, 2u8, { +let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; +tcpi_fastopen_client_fail as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/prctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/prctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/prctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,234 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prctl_mm_map { +pub start_code: __u64, +pub end_code: __u64, +pub start_data: __u64, +pub end_data: __u64, +pub start_brk: __u64, +pub brk: __u64, +pub start_stack: __u64, +pub arg_start: __u64, +pub arg_end: __u64, +pub env_start: __u64, +pub env_end: __u64, +pub auxv: *mut __u64, +pub auxv_size: __u32, +pub exe_fd: __u32, +} +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const PR_SET_PDEATHSIG: u32 = 1; +pub const PR_GET_PDEATHSIG: u32 = 2; +pub const PR_GET_DUMPABLE: u32 = 3; +pub const PR_SET_DUMPABLE: u32 = 4; +pub const PR_GET_UNALIGN: u32 = 5; +pub const PR_SET_UNALIGN: u32 = 6; +pub const PR_UNALIGN_NOPRINT: u32 = 1; +pub const PR_UNALIGN_SIGBUS: u32 = 2; +pub const PR_GET_KEEPCAPS: u32 = 7; +pub const PR_SET_KEEPCAPS: u32 = 8; +pub const PR_GET_FPEMU: u32 = 9; +pub const PR_SET_FPEMU: u32 = 10; +pub const PR_FPEMU_NOPRINT: u32 = 1; +pub const PR_FPEMU_SIGFPE: u32 = 2; +pub const PR_GET_FPEXC: u32 = 11; +pub const PR_SET_FPEXC: u32 = 12; +pub const PR_FP_EXC_SW_ENABLE: u32 = 128; +pub const PR_FP_EXC_DIV: u32 = 65536; +pub const PR_FP_EXC_OVF: u32 = 131072; +pub const PR_FP_EXC_UND: u32 = 262144; +pub const PR_FP_EXC_RES: u32 = 524288; +pub const PR_FP_EXC_INV: u32 = 1048576; +pub const PR_FP_EXC_DISABLED: u32 = 0; +pub const PR_FP_EXC_NONRECOV: u32 = 1; +pub const PR_FP_EXC_ASYNC: u32 = 2; +pub const PR_FP_EXC_PRECISE: u32 = 3; +pub const PR_GET_TIMING: u32 = 13; +pub const PR_SET_TIMING: u32 = 14; +pub const PR_TIMING_STATISTICAL: u32 = 0; +pub const PR_TIMING_TIMESTAMP: u32 = 1; +pub const PR_SET_NAME: u32 = 15; +pub const PR_GET_NAME: u32 = 16; +pub const PR_GET_ENDIAN: u32 = 19; +pub const PR_SET_ENDIAN: u32 = 20; +pub const PR_ENDIAN_BIG: u32 = 0; +pub const PR_ENDIAN_LITTLE: u32 = 1; +pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; +pub const PR_GET_SECCOMP: u32 = 21; +pub const PR_SET_SECCOMP: u32 = 22; +pub const PR_CAPBSET_READ: u32 = 23; +pub const PR_CAPBSET_DROP: u32 = 24; +pub const PR_GET_TSC: u32 = 25; +pub const PR_SET_TSC: u32 = 26; +pub const PR_TSC_ENABLE: u32 = 1; +pub const PR_TSC_SIGSEGV: u32 = 2; +pub const PR_GET_SECUREBITS: u32 = 27; +pub const PR_SET_SECUREBITS: u32 = 28; +pub const PR_SET_TIMERSLACK: u32 = 29; +pub const PR_GET_TIMERSLACK: u32 = 30; +pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; +pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; +pub const PR_MCE_KILL: u32 = 33; +pub const PR_MCE_KILL_CLEAR: u32 = 0; +pub const PR_MCE_KILL_SET: u32 = 1; +pub const PR_MCE_KILL_LATE: u32 = 0; +pub const PR_MCE_KILL_EARLY: u32 = 1; +pub const PR_MCE_KILL_DEFAULT: u32 = 2; +pub const PR_MCE_KILL_GET: u32 = 34; +pub const PR_SET_MM: u32 = 35; +pub const PR_SET_MM_START_CODE: u32 = 1; +pub const PR_SET_MM_END_CODE: u32 = 2; +pub const PR_SET_MM_START_DATA: u32 = 3; +pub const PR_SET_MM_END_DATA: u32 = 4; +pub const PR_SET_MM_START_STACK: u32 = 5; +pub const PR_SET_MM_START_BRK: u32 = 6; +pub const PR_SET_MM_BRK: u32 = 7; +pub const PR_SET_MM_ARG_START: u32 = 8; +pub const PR_SET_MM_ARG_END: u32 = 9; +pub const PR_SET_MM_ENV_START: u32 = 10; +pub const PR_SET_MM_ENV_END: u32 = 11; +pub const PR_SET_MM_AUXV: u32 = 12; +pub const PR_SET_MM_EXE_FILE: u32 = 13; +pub const PR_SET_MM_MAP: u32 = 14; +pub const PR_SET_MM_MAP_SIZE: u32 = 15; +pub const PR_SET_PTRACER: u32 = 1499557217; +pub const PR_SET_CHILD_SUBREAPER: u32 = 36; +pub const PR_GET_CHILD_SUBREAPER: u32 = 37; +pub const PR_SET_NO_NEW_PRIVS: u32 = 38; +pub const PR_GET_NO_NEW_PRIVS: u32 = 39; +pub const PR_GET_TID_ADDRESS: u32 = 40; +pub const PR_SET_THP_DISABLE: u32 = 41; +pub const PR_GET_THP_DISABLE: u32 = 42; +pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; +pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; +pub const PR_SET_FP_MODE: u32 = 45; +pub const PR_GET_FP_MODE: u32 = 46; +pub const PR_FP_MODE_FR: u32 = 1; +pub const PR_FP_MODE_FRE: u32 = 2; +pub const PR_CAP_AMBIENT: u32 = 47; +pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; +pub const PR_CAP_AMBIENT_RAISE: u32 = 2; +pub const PR_CAP_AMBIENT_LOWER: u32 = 3; +pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; +pub const PR_SVE_SET_VL: u32 = 50; +pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SVE_GET_VL: u32 = 51; +pub const PR_SVE_VL_LEN_MASK: u32 = 65535; +pub const PR_SVE_VL_INHERIT: u32 = 131072; +pub const PR_GET_SPECULATION_CTRL: u32 = 52; +pub const PR_SET_SPECULATION_CTRL: u32 = 53; +pub const PR_SPEC_STORE_BYPASS: u32 = 0; +pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; +pub const PR_SPEC_L1D_FLUSH: u32 = 2; +pub const PR_SPEC_NOT_AFFECTED: u32 = 0; +pub const PR_SPEC_PRCTL: u32 = 1; +pub const PR_SPEC_ENABLE: u32 = 2; +pub const PR_SPEC_DISABLE: u32 = 4; +pub const PR_SPEC_FORCE_DISABLE: u32 = 8; +pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; +pub const PR_PAC_RESET_KEYS: u32 = 54; +pub const PR_PAC_APIAKEY: u32 = 1; +pub const PR_PAC_APIBKEY: u32 = 2; +pub const PR_PAC_APDAKEY: u32 = 4; +pub const PR_PAC_APDBKEY: u32 = 8; +pub const PR_PAC_APGAKEY: u32 = 16; +pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; +pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; +pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; +pub const PR_MTE_TCF_NONE: u32 = 0; +pub const PR_MTE_TCF_SYNC: u32 = 2; +pub const PR_MTE_TCF_ASYNC: u32 = 4; +pub const PR_MTE_TCF_MASK: u32 = 6; +pub const PR_MTE_TAG_SHIFT: u32 = 3; +pub const PR_MTE_TAG_MASK: u32 = 524280; +pub const PR_MTE_TCF_SHIFT: u32 = 1; +pub const PR_SET_IO_FLUSHER: u32 = 57; +pub const PR_GET_IO_FLUSHER: u32 = 58; +pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; +pub const PR_SYS_DISPATCH_OFF: u32 = 0; +pub const PR_SYS_DISPATCH_ON: u32 = 1; +pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; +pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; +pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; +pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; +pub const PR_SCHED_CORE: u32 = 62; +pub const PR_SCHED_CORE_GET: u32 = 0; +pub const PR_SCHED_CORE_CREATE: u32 = 1; +pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; +pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; +pub const PR_SCHED_CORE_MAX: u32 = 4; +pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; +pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; +pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; +pub const PR_SME_SET_VL: u32 = 63; +pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SME_GET_VL: u32 = 64; +pub const PR_SME_VL_LEN_MASK: u32 = 65535; +pub const PR_SME_VL_INHERIT: u32 = 131072; +pub const PR_SET_MDWE: u32 = 65; +pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; +pub const PR_GET_MDWE: u32 = 66; +pub const PR_SET_VMA: u32 = 1398164801; +pub const PR_SET_VMA_ANON_NAME: u32 = 0; +pub const PR_GET_AUXV: u32 = 1096112214; +pub const PR_SET_MEMORY_MERGE: u32 = 67; +pub const PR_GET_MEMORY_MERGE: u32 = 68; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/system.rs temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/system.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/mips64r6/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,139 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +#[derive(Debug)] +pub struct sysinfo { +pub uptime: __kernel_long_t, +pub loads: [__kernel_ulong_t; 3usize], +pub totalram: __kernel_ulong_t, +pub freeram: __kernel_ulong_t, +pub sharedram: __kernel_ulong_t, +pub bufferram: __kernel_ulong_t, +pub totalswap: __kernel_ulong_t, +pub freeswap: __kernel_ulong_t, +pub procs: __u16, +pub pad: __u16, +pub totalhigh: __kernel_ulong_t, +pub freehigh: __kernel_ulong_t, +pub mem_unit: __u32, +pub _f: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct oldold_utsname { +pub sysname: [crate::ctypes::c_char; 9usize], +pub nodename: [crate::ctypes::c_char; 9usize], +pub release: [crate::ctypes::c_char; 9usize], +pub version: [crate::ctypes::c_char; 9usize], +pub machine: [crate::ctypes::c_char; 9usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct old_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct new_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +pub domainname: [crate::ctypes::c_char; 65usize], +} +pub const _MIPS_ISA_MIPS1: u32 = 1; +pub const _MIPS_ISA_MIPS2: u32 = 2; +pub const _MIPS_ISA_MIPS3: u32 = 3; +pub const _MIPS_ISA_MIPS4: u32 = 4; +pub const _MIPS_ISA_MIPS5: u32 = 5; +pub const _MIPS_ISA_MIPS32: u32 = 6; +pub const _MIPS_ISA_MIPS64: u32 = 7; +pub const _MIPS_SIM_ABI32: u32 = 1; +pub const _MIPS_SIM_NABI32: u32 = 2; +pub const _MIPS_SIM_ABI64: u32 = 3; +pub const SI_LOAD_SHIFT: u32 = 16; +pub const __OLD_UTS_LEN: u32 = 8; +pub const __NEW_UTS_LEN: u32 = 64; +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/errno.rs temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/errno.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/errno.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const EPERM: u32 = 1; pub const ENOENT: u32 = 2; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/general.rs temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/general.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/general.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/general.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,2874 +1,208 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_sighandler_t = ::core::option::Option; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_short; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type cap_user_header_t = *mut __user_cap_header_struct; +pub type cap_user_data_t = *mut __user_cap_data_struct; +pub type __kernel_rwf_t = crate::ctypes::c_int; +pub type old_sigset_t = crate::ctypes::c_ulong; +pub type __signalfn_t = ::core::option::Option; +pub type __sighandler_t = __signalfn_t; +pub type __restorefn_t = ::core::option::Option; +pub type __sigrestore_t = __restorefn_t; +pub type stack_t = sigaltstack; +pub type sigval_t = sigval; +pub type siginfo_t = siginfo; +pub type sigevent_t = sigevent; +pub type cc_t = crate::ctypes::c_uchar; +pub type speed_t = crate::ctypes::c_uint; +pub type tcflag_t = crate::ctypes::c_uint; +pub type __fsword_t = __u32; +pub type termios2 = termios; #[repr(C)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct __BindgenBitfieldUnit { storage: Storage, } -impl __BindgenBitfieldUnit { -#[inline] -pub const fn new(storage: Storage) -> Self { -Self { storage } -} -} -impl __BindgenBitfieldUnit -where -Storage: AsRef<[u8]> + AsMut<[u8]>, -{ -#[inline] -pub fn get_bit(&self, index: usize) -> bool { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = self.storage.as_ref()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -byte & mask == mask -} -#[inline] -pub fn set_bit(&mut self, index: usize, val: bool) { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = &mut self.storage.as_mut()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -if val { -*byte |= mask; -} else { -*byte &= !mask; -} -} -#[inline] -pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -let mut val = 0; -for i in 0..(bit_width as usize) { -if self.get_bit(i + bit_offset) { -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -val |= 1 << index; -} -} -val -} -#[inline] -pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -for i in 0..(bit_width as usize) { -let mask = 1 << i; -let val_bit_is_set = val & mask == mask; -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -self.set_bit(index + bit_offset, val_bit_is_set); -} -} -} #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) -} -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T -} -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct __vector128 { +pub u: [__u32; 4usize], } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fd_set { +pub fds_bits: [crate::ctypes::c_ulong; 32usize], } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fsid_t { +pub val: [crate::ctypes::c_int; 2usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_header_struct { +pub version: __u32, +pub pid: crate::ctypes::c_int, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_data_struct { +pub effective: __u32, +pub permitted: __u32, +pub inheritable: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data { +pub magic_etc: __le32, +pub data: [vfs_cap_data__bindgen_ty_1; 2usize], } #[repr(C)] -pub struct __BindgenUnionField(::core::marker::PhantomData); -impl __BindgenUnionField { -#[inline] -pub const fn new() -> Self { -__BindgenUnionField(::core::marker::PhantomData) +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } -#[inline] -pub unsafe fn as_ref(&self) -> &T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data { +pub magic_etc: __le32, +pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], +pub rootid: __le32, } -#[inline] -pub unsafe fn as_mut(&mut self) -> &mut T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct f_owner_ex { +pub type_: crate::ctypes::c_int, +pub pid: __kernel_pid_t, } -impl ::core::default::Default for __BindgenUnionField { -#[inline] -fn default() -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_off_t, +pub l_len: __kernel_off_t, +pub l_pid: __kernel_pid_t, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock64 { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_loff_t, +pub l_len: __kernel_loff_t, +pub l_pid: __kernel_pid_t, } -impl ::core::clone::Clone for __BindgenUnionField { -#[inline] -fn clone(&self) -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct open_how { +pub flags: __u64, +pub mode: __u64, +pub resolve: __u64, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct epoll_event { +pub events: __poll_t, +pub data: __u64, } -impl ::core::marker::Copy for __BindgenUnionField {} -impl ::core::fmt::Debug for __BindgenUnionField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__BindgenUnionField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, } -impl ::core::hash::Hash for __BindgenUnionField { -fn hash(&self, _state: &mut H) {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], } -impl ::core::cmp::PartialEq for __BindgenUnionField { -fn eq(&self, _other: &__BindgenUnionField) -> bool { -true +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, } -} -impl ::core::cmp::Eq for __BindgenUnionField {} -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const AT_DCACHEBSIZE: u32 = 19; -pub const AT_ICACHEBSIZE: u32 = 20; -pub const AT_UCACHEBSIZE: u32 = 21; -pub const AT_IGNOREPPC: u32 = 22; -pub const AT_SYSINFO_EHDR: u32 = 33; -pub const AT_L1I_CACHESIZE: u32 = 40; -pub const AT_L1I_CACHEGEOMETRY: u32 = 41; -pub const AT_L1D_CACHESIZE: u32 = 42; -pub const AT_L1D_CACHEGEOMETRY: u32 = 43; -pub const AT_L2_CACHESIZE: u32 = 44; -pub const AT_L2_CACHEGEOMETRY: u32 = 45; -pub const AT_L3_CACHESIZE: u32 = 46; -pub const AT_L3_CACHEGEOMETRY: u32 = 47; -pub const AT_MINSIGSTKSZ: u32 = 51; -pub const AT_VECTOR_SIZE_ARCH: u32 = 15; -pub const AT_NULL: u32 = 0; -pub const AT_IGNORE: u32 = 1; -pub const AT_EXECFD: u32 = 2; -pub const AT_PHDR: u32 = 3; -pub const AT_PHENT: u32 = 4; -pub const AT_PHNUM: u32 = 5; -pub const AT_PAGESZ: u32 = 6; -pub const AT_BASE: u32 = 7; -pub const AT_FLAGS: u32 = 8; -pub const AT_ENTRY: u32 = 9; -pub const AT_NOTELF: u32 = 10; -pub const AT_UID: u32 = 11; -pub const AT_EUID: u32 = 12; -pub const AT_GID: u32 = 13; -pub const AT_EGID: u32 = 14; -pub const AT_PLATFORM: u32 = 15; -pub const AT_HWCAP: u32 = 16; -pub const AT_CLKTCK: u32 = 17; -pub const AT_SECURE: u32 = 23; -pub const AT_BASE_PLATFORM: u32 = 24; -pub const AT_RANDOM: u32 = 25; -pub const AT_HWCAP2: u32 = 26; -pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; -pub const AT_RSEQ_ALIGN: u32 = 28; -pub const AT_EXECFN: u32 = 31; -pub const __BITS_PER_LONG: u32 = 32; -pub const __FD_SETSIZE: u32 = 1024; -pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; -pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; -pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; -pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; -pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; -pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; -pub const VFS_CAP_REVISION_SHIFT: u32 = 24; -pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; -pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; -pub const VFS_CAP_REVISION_1: u32 = 16777216; -pub const VFS_CAP_U32_1: u32 = 1; -pub const VFS_CAP_REVISION_2: u32 = 33554432; -pub const VFS_CAP_U32_2: u32 = 2; -pub const VFS_CAP_REVISION_3: u32 = 50331648; -pub const VFS_CAP_U32_3: u32 = 2; -pub const VFS_CAP_U32: u32 = 2; -pub const VFS_CAP_REVISION: u32 = 50331648; -pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S: u32 = 1; -pub const CAP_CHOWN: u32 = 0; -pub const CAP_DAC_OVERRIDE: u32 = 1; -pub const CAP_DAC_READ_SEARCH: u32 = 2; -pub const CAP_FOWNER: u32 = 3; -pub const CAP_FSETID: u32 = 4; -pub const CAP_KILL: u32 = 5; -pub const CAP_SETGID: u32 = 6; -pub const CAP_SETUID: u32 = 7; -pub const CAP_SETPCAP: u32 = 8; -pub const CAP_LINUX_IMMUTABLE: u32 = 9; -pub const CAP_NET_BIND_SERVICE: u32 = 10; -pub const CAP_NET_BROADCAST: u32 = 11; -pub const CAP_NET_ADMIN: u32 = 12; -pub const CAP_NET_RAW: u32 = 13; -pub const CAP_IPC_LOCK: u32 = 14; -pub const CAP_IPC_OWNER: u32 = 15; -pub const CAP_SYS_MODULE: u32 = 16; -pub const CAP_SYS_RAWIO: u32 = 17; -pub const CAP_SYS_CHROOT: u32 = 18; -pub const CAP_SYS_PTRACE: u32 = 19; -pub const CAP_SYS_PACCT: u32 = 20; -pub const CAP_SYS_ADMIN: u32 = 21; -pub const CAP_SYS_BOOT: u32 = 22; -pub const CAP_SYS_NICE: u32 = 23; -pub const CAP_SYS_RESOURCE: u32 = 24; -pub const CAP_SYS_TIME: u32 = 25; -pub const CAP_SYS_TTY_CONFIG: u32 = 26; -pub const CAP_MKNOD: u32 = 27; -pub const CAP_LEASE: u32 = 28; -pub const CAP_AUDIT_WRITE: u32 = 29; -pub const CAP_AUDIT_CONTROL: u32 = 30; -pub const CAP_SETFCAP: u32 = 31; -pub const CAP_MAC_OVERRIDE: u32 = 32; -pub const CAP_MAC_ADMIN: u32 = 33; -pub const CAP_SYSLOG: u32 = 34; -pub const CAP_WAKE_ALARM: u32 = 35; -pub const CAP_BLOCK_SUSPEND: u32 = 36; -pub const CAP_AUDIT_READ: u32 = 37; -pub const CAP_PERFMON: u32 = 38; -pub const CAP_BPF: u32 = 39; -pub const CAP_CHECKPOINT_RESTORE: u32 = 40; -pub const CAP_LAST_CAP: u32 = 40; -pub const O_DIRECTORY: u32 = 16384; -pub const O_NOFOLLOW: u32 = 32768; -pub const O_LARGEFILE: u32 = 65536; -pub const O_DIRECT: u32 = 131072; -pub const O_ACCMODE: u32 = 3; -pub const O_RDONLY: u32 = 0; -pub const O_WRONLY: u32 = 1; -pub const O_RDWR: u32 = 2; -pub const O_CREAT: u32 = 64; -pub const O_EXCL: u32 = 128; -pub const O_NOCTTY: u32 = 256; -pub const O_TRUNC: u32 = 512; -pub const O_APPEND: u32 = 1024; -pub const O_NONBLOCK: u32 = 2048; -pub const O_DSYNC: u32 = 4096; -pub const FASYNC: u32 = 8192; -pub const O_NOATIME: u32 = 262144; -pub const O_CLOEXEC: u32 = 524288; -pub const __O_SYNC: u32 = 1048576; -pub const O_SYNC: u32 = 1052672; -pub const O_PATH: u32 = 2097152; -pub const __O_TMPFILE: u32 = 4194304; -pub const O_TMPFILE: u32 = 4210688; -pub const O_TMPFILE_MASK: u32 = 4210752; -pub const O_NDELAY: u32 = 2048; -pub const F_DUPFD: u32 = 0; -pub const F_GETFD: u32 = 1; -pub const F_SETFD: u32 = 2; -pub const F_GETFL: u32 = 3; -pub const F_SETFL: u32 = 4; -pub const F_GETLK: u32 = 5; -pub const F_SETLK: u32 = 6; -pub const F_SETLKW: u32 = 7; -pub const F_SETOWN: u32 = 8; -pub const F_GETOWN: u32 = 9; -pub const F_SETSIG: u32 = 10; -pub const F_GETSIG: u32 = 11; -pub const F_GETLK64: u32 = 12; -pub const F_SETLK64: u32 = 13; -pub const F_SETLKW64: u32 = 14; -pub const F_SETOWN_EX: u32 = 15; -pub const F_GETOWN_EX: u32 = 16; -pub const F_GETOWNER_UIDS: u32 = 17; -pub const F_OFD_GETLK: u32 = 36; -pub const F_OFD_SETLK: u32 = 37; -pub const F_OFD_SETLKW: u32 = 38; -pub const F_OWNER_TID: u32 = 0; -pub const F_OWNER_PID: u32 = 1; -pub const F_OWNER_PGRP: u32 = 2; -pub const FD_CLOEXEC: u32 = 1; -pub const F_RDLCK: u32 = 0; -pub const F_WRLCK: u32 = 1; -pub const F_UNLCK: u32 = 2; -pub const F_EXLCK: u32 = 4; -pub const F_SHLCK: u32 = 8; -pub const LOCK_SH: u32 = 1; -pub const LOCK_EX: u32 = 2; -pub const LOCK_NB: u32 = 4; -pub const LOCK_UN: u32 = 8; -pub const LOCK_MAND: u32 = 32; -pub const LOCK_READ: u32 = 64; -pub const LOCK_WRITE: u32 = 128; -pub const LOCK_RW: u32 = 192; -pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; -pub const RESOLVE_NO_XDEV: u32 = 1; -pub const RESOLVE_NO_MAGICLINKS: u32 = 2; -pub const RESOLVE_NO_SYMLINKS: u32 = 4; -pub const RESOLVE_BENEATH: u32 = 8; -pub const RESOLVE_IN_ROOT: u32 = 16; -pub const RESOLVE_CACHED: u32 = 32; -pub const F_SETLEASE: u32 = 1024; -pub const F_GETLEASE: u32 = 1025; -pub const F_CANCELLK: u32 = 1029; -pub const F_DUPFD_CLOEXEC: u32 = 1030; -pub const F_NOTIFY: u32 = 1026; -pub const F_SETPIPE_SZ: u32 = 1031; -pub const F_GETPIPE_SZ: u32 = 1032; -pub const F_ADD_SEALS: u32 = 1033; -pub const F_GET_SEALS: u32 = 1034; -pub const F_SEAL_SEAL: u32 = 1; -pub const F_SEAL_SHRINK: u32 = 2; -pub const F_SEAL_GROW: u32 = 4; -pub const F_SEAL_WRITE: u32 = 8; -pub const F_SEAL_FUTURE_WRITE: u32 = 16; -pub const F_SEAL_EXEC: u32 = 32; -pub const F_GET_RW_HINT: u32 = 1035; -pub const F_SET_RW_HINT: u32 = 1036; -pub const F_GET_FILE_RW_HINT: u32 = 1037; -pub const F_SET_FILE_RW_HINT: u32 = 1038; -pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; -pub const RWH_WRITE_LIFE_NONE: u32 = 1; -pub const RWH_WRITE_LIFE_SHORT: u32 = 2; -pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; -pub const RWH_WRITE_LIFE_LONG: u32 = 4; -pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; -pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; -pub const DN_ACCESS: u32 = 1; -pub const DN_MODIFY: u32 = 2; -pub const DN_CREATE: u32 = 4; -pub const DN_DELETE: u32 = 8; -pub const DN_RENAME: u32 = 16; -pub const DN_ATTRIB: u32 = 32; -pub const DN_MULTISHOT: u32 = 2147483648; -pub const AT_FDCWD: i32 = -100; -pub const AT_SYMLINK_NOFOLLOW: u32 = 256; -pub const AT_EACCESS: u32 = 512; -pub const AT_REMOVEDIR: u32 = 512; -pub const AT_SYMLINK_FOLLOW: u32 = 1024; -pub const AT_NO_AUTOMOUNT: u32 = 2048; -pub const AT_EMPTY_PATH: u32 = 4096; -pub const AT_STATX_SYNC_TYPE: u32 = 24576; -pub const AT_STATX_SYNC_AS_STAT: u32 = 0; -pub const AT_STATX_FORCE_SYNC: u32 = 8192; -pub const AT_STATX_DONT_SYNC: u32 = 16384; -pub const AT_RECURSIVE: u32 = 32768; -pub const EPOLL_CLOEXEC: u32 = 524288; -pub const EPOLL_CTL_ADD: u32 = 1; -pub const EPOLL_CTL_DEL: u32 = 2; -pub const EPOLL_CTL_MOD: u32 = 3; -pub const POSIX_FADV_NORMAL: u32 = 0; -pub const POSIX_FADV_RANDOM: u32 = 1; -pub const POSIX_FADV_SEQUENTIAL: u32 = 2; -pub const POSIX_FADV_WILLNEED: u32 = 3; -pub const POSIX_FADV_DONTNEED: u32 = 4; -pub const POSIX_FADV_NOREUSE: u32 = 5; -pub const FALLOC_FL_KEEP_SIZE: u32 = 1; -pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; -pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; -pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; -pub const FALLOC_FL_ZERO_RANGE: u32 = 16; -pub const FALLOC_FL_INSERT_RANGE: u32 = 32; -pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; -pub const NR_OPEN: u32 = 1024; -pub const NGROUPS_MAX: u32 = 65536; -pub const ARG_MAX: u32 = 131072; -pub const LINK_MAX: u32 = 127; -pub const MAX_CANON: u32 = 255; -pub const MAX_INPUT: u32 = 255; -pub const NAME_MAX: u32 = 255; -pub const PATH_MAX: u32 = 4096; -pub const PIPE_BUF: u32 = 4096; -pub const XATTR_NAME_MAX: u32 = 255; -pub const XATTR_SIZE_MAX: u32 = 65536; -pub const XATTR_LIST_MAX: u32 = 65536; -pub const RTSIG_MAX: u32 = 32; -pub const _IOC_SIZEBITS: u32 = 13; -pub const _IOC_DIRBITS: u32 = 3; -pub const _IOC_NONE: u32 = 1; -pub const _IOC_READ: u32 = 2; -pub const _IOC_WRITE: u32 = 4; -pub const _IOC_NRBITS: u32 = 8; -pub const _IOC_TYPEBITS: u32 = 8; -pub const _IOC_NRMASK: u32 = 255; -pub const _IOC_TYPEMASK: u32 = 255; -pub const _IOC_SIZEMASK: u32 = 8191; -pub const _IOC_DIRMASK: u32 = 7; -pub const _IOC_NRSHIFT: u32 = 0; -pub const _IOC_TYPESHIFT: u32 = 8; -pub const _IOC_SIZESHIFT: u32 = 16; -pub const _IOC_DIRSHIFT: u32 = 29; -pub const IOC_IN: u32 = 2147483648; -pub const IOC_OUT: u32 = 1073741824; -pub const IOC_INOUT: u32 = 3221225472; -pub const IOCSIZE_MASK: u32 = 536805376; -pub const IOCSIZE_SHIFT: u32 = 16; -pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; -pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; -pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; -pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; -pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; -pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; -pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; -pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; -pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; -pub const FSCRYPT_POLICY_V1: u32 = 0; -pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; -pub const FSCRYPT_POLICY_V2: u32 = 2; -pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; -pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; -pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; -pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; -pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; -pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; -pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; -pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FS_POLICY_FLAGS_VALID: u32 = 7; -pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; -pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; -pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; -pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; -pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; -pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; -pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; -pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; -pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FS_MAX_KEY_SIZE: u32 = 64; -pub const MS_RDONLY: u32 = 1; -pub const MS_NOSUID: u32 = 2; -pub const MS_NODEV: u32 = 4; -pub const MS_NOEXEC: u32 = 8; -pub const MS_SYNCHRONOUS: u32 = 16; -pub const MS_REMOUNT: u32 = 32; -pub const MS_MANDLOCK: u32 = 64; -pub const MS_DIRSYNC: u32 = 128; -pub const MS_NOSYMFOLLOW: u32 = 256; -pub const MS_NOATIME: u32 = 1024; -pub const MS_NODIRATIME: u32 = 2048; -pub const MS_BIND: u32 = 4096; -pub const MS_MOVE: u32 = 8192; -pub const MS_REC: u32 = 16384; -pub const MS_VERBOSE: u32 = 32768; -pub const MS_SILENT: u32 = 32768; -pub const MS_POSIXACL: u32 = 65536; -pub const MS_UNBINDABLE: u32 = 131072; -pub const MS_PRIVATE: u32 = 262144; -pub const MS_SLAVE: u32 = 524288; -pub const MS_SHARED: u32 = 1048576; -pub const MS_RELATIME: u32 = 2097152; -pub const MS_KERNMOUNT: u32 = 4194304; -pub const MS_I_VERSION: u32 = 8388608; -pub const MS_STRICTATIME: u32 = 16777216; -pub const MS_LAZYTIME: u32 = 33554432; -pub const MS_SUBMOUNT: u32 = 67108864; -pub const MS_NOREMOTELOCK: u32 = 134217728; -pub const MS_NOSEC: u32 = 268435456; -pub const MS_BORN: u32 = 536870912; -pub const MS_ACTIVE: u32 = 1073741824; -pub const MS_NOUSER: u32 = 2147483648; -pub const MS_RMT_MASK: u32 = 41943121; -pub const MS_MGC_VAL: u32 = 3236757504; -pub const MS_MGC_MSK: u32 = 4294901760; -pub const OPEN_TREE_CLONE: u32 = 1; -pub const OPEN_TREE_CLOEXEC: u32 = 524288; -pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; -pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; -pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; -pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; -pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; -pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; -pub const MOVE_MOUNT_SET_GROUP: u32 = 256; -pub const MOVE_MOUNT__MASK: u32 = 375; -pub const FSOPEN_CLOEXEC: u32 = 1; -pub const FSPICK_CLOEXEC: u32 = 1; -pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; -pub const FSPICK_NO_AUTOMOUNT: u32 = 4; -pub const FSPICK_EMPTY_PATH: u32 = 8; -pub const FSMOUNT_CLOEXEC: u32 = 1; -pub const MOUNT_ATTR_RDONLY: u32 = 1; -pub const MOUNT_ATTR_NOSUID: u32 = 2; -pub const MOUNT_ATTR_NODEV: u32 = 4; -pub const MOUNT_ATTR_NOEXEC: u32 = 8; -pub const MOUNT_ATTR__ATIME: u32 = 112; -pub const MOUNT_ATTR_RELATIME: u32 = 0; -pub const MOUNT_ATTR_NOATIME: u32 = 16; -pub const MOUNT_ATTR_STRICTATIME: u32 = 32; -pub const MOUNT_ATTR_NODIRATIME: u32 = 128; -pub const MOUNT_ATTR_IDMAP: u32 = 1048576; -pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; -pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; -pub const INR_OPEN_CUR: u32 = 1024; -pub const INR_OPEN_MAX: u32 = 4096; -pub const BLOCK_SIZE_BITS: u32 = 10; -pub const BLOCK_SIZE: u32 = 1024; -pub const SEEK_SET: u32 = 0; -pub const SEEK_CUR: u32 = 1; -pub const SEEK_END: u32 = 2; -pub const SEEK_DATA: u32 = 3; -pub const SEEK_HOLE: u32 = 4; -pub const SEEK_MAX: u32 = 4; -pub const RENAME_NOREPLACE: u32 = 1; -pub const RENAME_EXCHANGE: u32 = 2; -pub const RENAME_WHITEOUT: u32 = 4; -pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; -pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; -pub const NR_FILE: u32 = 8192; -pub const FS_XFLAG_REALTIME: u32 = 1; -pub const FS_XFLAG_PREALLOC: u32 = 2; -pub const FS_XFLAG_IMMUTABLE: u32 = 8; -pub const FS_XFLAG_APPEND: u32 = 16; -pub const FS_XFLAG_SYNC: u32 = 32; -pub const FS_XFLAG_NOATIME: u32 = 64; -pub const FS_XFLAG_NODUMP: u32 = 128; -pub const FS_XFLAG_RTINHERIT: u32 = 256; -pub const FS_XFLAG_PROJINHERIT: u32 = 512; -pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; -pub const FS_XFLAG_EXTSIZE: u32 = 2048; -pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; -pub const FS_XFLAG_NODEFRAG: u32 = 8192; -pub const FS_XFLAG_FILESTREAM: u32 = 16384; -pub const FS_XFLAG_DAX: u32 = 32768; -pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; -pub const FS_XFLAG_HASATTR: u32 = 2147483648; -pub const BMAP_IOCTL: u32 = 1; -pub const FSLABEL_MAX: u32 = 256; -pub const FS_SECRM_FL: u32 = 1; -pub const FS_UNRM_FL: u32 = 2; -pub const FS_COMPR_FL: u32 = 4; -pub const FS_SYNC_FL: u32 = 8; -pub const FS_IMMUTABLE_FL: u32 = 16; -pub const FS_APPEND_FL: u32 = 32; -pub const FS_NODUMP_FL: u32 = 64; -pub const FS_NOATIME_FL: u32 = 128; -pub const FS_DIRTY_FL: u32 = 256; -pub const FS_COMPRBLK_FL: u32 = 512; -pub const FS_NOCOMP_FL: u32 = 1024; -pub const FS_ENCRYPT_FL: u32 = 2048; -pub const FS_BTREE_FL: u32 = 4096; -pub const FS_INDEX_FL: u32 = 4096; -pub const FS_IMAGIC_FL: u32 = 8192; -pub const FS_JOURNAL_DATA_FL: u32 = 16384; -pub const FS_NOTAIL_FL: u32 = 32768; -pub const FS_DIRSYNC_FL: u32 = 65536; -pub const FS_TOPDIR_FL: u32 = 131072; -pub const FS_HUGE_FILE_FL: u32 = 262144; -pub const FS_EXTENT_FL: u32 = 524288; -pub const FS_VERITY_FL: u32 = 1048576; -pub const FS_EA_INODE_FL: u32 = 2097152; -pub const FS_EOFBLOCKS_FL: u32 = 4194304; -pub const FS_NOCOW_FL: u32 = 8388608; -pub const FS_DAX_FL: u32 = 33554432; -pub const FS_INLINE_DATA_FL: u32 = 268435456; -pub const FS_PROJINHERIT_FL: u32 = 536870912; -pub const FS_CASEFOLD_FL: u32 = 1073741824; -pub const FS_RESERVED_FL: u32 = 2147483648; -pub const FS_FL_USER_VISIBLE: u32 = 253951; -pub const FS_FL_USER_MODIFIABLE: u32 = 229631; -pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; -pub const SYNC_FILE_RANGE_WRITE: u32 = 2; -pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; -pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; -pub const FUTEX_WAIT: u32 = 0; -pub const FUTEX_WAKE: u32 = 1; -pub const FUTEX_FD: u32 = 2; -pub const FUTEX_REQUEUE: u32 = 3; -pub const FUTEX_CMP_REQUEUE: u32 = 4; -pub const FUTEX_WAKE_OP: u32 = 5; -pub const FUTEX_LOCK_PI: u32 = 6; -pub const FUTEX_UNLOCK_PI: u32 = 7; -pub const FUTEX_TRYLOCK_PI: u32 = 8; -pub const FUTEX_WAIT_BITSET: u32 = 9; -pub const FUTEX_WAKE_BITSET: u32 = 10; -pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; -pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; -pub const FUTEX_LOCK_PI2: u32 = 13; -pub const FUTEX_PRIVATE_FLAG: u32 = 128; -pub const FUTEX_CLOCK_REALTIME: u32 = 256; -pub const FUTEX_CMD_MASK: i32 = -385; -pub const FUTEX_WAIT_PRIVATE: u32 = 128; -pub const FUTEX_WAKE_PRIVATE: u32 = 129; -pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; -pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; -pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; -pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; -pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; -pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; -pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; -pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; -pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; -pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; -pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; -pub const FUTEX_32: u32 = 2; -pub const FUTEX_WAITV_MAX: u32 = 128; -pub const FUTEX_WAITERS: u32 = 2147483648; -pub const FUTEX_OWNER_DIED: u32 = 1073741824; -pub const FUTEX_TID_MASK: u32 = 1073741823; -pub const ROBUST_LIST_LIMIT: u32 = 2048; -pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; -pub const FUTEX_OP_SET: u32 = 0; -pub const FUTEX_OP_ADD: u32 = 1; -pub const FUTEX_OP_OR: u32 = 2; -pub const FUTEX_OP_ANDN: u32 = 3; -pub const FUTEX_OP_XOR: u32 = 4; -pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; -pub const FUTEX_OP_CMP_EQ: u32 = 0; -pub const FUTEX_OP_CMP_NE: u32 = 1; -pub const FUTEX_OP_CMP_LT: u32 = 2; -pub const FUTEX_OP_CMP_LE: u32 = 3; -pub const FUTEX_OP_CMP_GT: u32 = 4; -pub const FUTEX_OP_CMP_GE: u32 = 5; -pub const __UAPI_DEF_IF_IFCONF: u32 = 1; -pub const __UAPI_DEF_IF_IFMAP: u32 = 1; -pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1; -pub const __UAPI_DEF_IF_IFREQ: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1; -pub const __UAPI_DEF_IN_ADDR: u32 = 1; -pub const __UAPI_DEF_IN_IPPROTO: u32 = 1; -pub const __UAPI_DEF_IN_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP_MREQ: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1; -pub const __UAPI_DEF_IN_CLASS: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1; -pub const __UAPI_DEF_IPV6_MREQ: u32 = 1; -pub const __UAPI_DEF_IPPROTO_V6: u32 = 1; -pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1; -pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1; -pub const __UAPI_DEF_XATTR: u32 = 1; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const IP_TOS: u32 = 1; -pub const IP_TTL: u32 = 2; -pub const IP_HDRINCL: u32 = 3; -pub const IP_OPTIONS: u32 = 4; -pub const IP_ROUTER_ALERT: u32 = 5; -pub const IP_RECVOPTS: u32 = 6; -pub const IP_RETOPTS: u32 = 7; -pub const IP_PKTINFO: u32 = 8; -pub const IP_PKTOPTIONS: u32 = 9; -pub const IP_MTU_DISCOVER: u32 = 10; -pub const IP_RECVERR: u32 = 11; -pub const IP_RECVTTL: u32 = 12; -pub const IP_RECVTOS: u32 = 13; -pub const IP_MTU: u32 = 14; -pub const IP_FREEBIND: u32 = 15; -pub const IP_IPSEC_POLICY: u32 = 16; -pub const IP_XFRM_POLICY: u32 = 17; -pub const IP_PASSSEC: u32 = 18; -pub const IP_TRANSPARENT: u32 = 19; -pub const IP_RECVRETOPTS: u32 = 7; -pub const IP_ORIGDSTADDR: u32 = 20; -pub const IP_RECVORIGDSTADDR: u32 = 20; -pub const IP_MINTTL: u32 = 21; -pub const IP_NODEFRAG: u32 = 22; -pub const IP_CHECKSUM: u32 = 23; -pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; -pub const IP_RECVFRAGSIZE: u32 = 25; -pub const IP_RECVERR_RFC4884: u32 = 26; -pub const IP_PMTUDISC_DONT: u32 = 0; -pub const IP_PMTUDISC_WANT: u32 = 1; -pub const IP_PMTUDISC_DO: u32 = 2; -pub const IP_PMTUDISC_PROBE: u32 = 3; -pub const IP_PMTUDISC_INTERFACE: u32 = 4; -pub const IP_PMTUDISC_OMIT: u32 = 5; -pub const IP_MULTICAST_IF: u32 = 32; -pub const IP_MULTICAST_TTL: u32 = 33; -pub const IP_MULTICAST_LOOP: u32 = 34; -pub const IP_ADD_MEMBERSHIP: u32 = 35; -pub const IP_DROP_MEMBERSHIP: u32 = 36; -pub const IP_UNBLOCK_SOURCE: u32 = 37; -pub const IP_BLOCK_SOURCE: u32 = 38; -pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; -pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; -pub const IP_MSFILTER: u32 = 41; -pub const MCAST_JOIN_GROUP: u32 = 42; -pub const MCAST_BLOCK_SOURCE: u32 = 43; -pub const MCAST_UNBLOCK_SOURCE: u32 = 44; -pub const MCAST_LEAVE_GROUP: u32 = 45; -pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; -pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; -pub const MCAST_MSFILTER: u32 = 48; -pub const IP_MULTICAST_ALL: u32 = 49; -pub const IP_UNICAST_IF: u32 = 50; -pub const IP_LOCAL_PORT_RANGE: u32 = 51; -pub const MCAST_EXCLUDE: u32 = 0; -pub const MCAST_INCLUDE: u32 = 1; -pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; -pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const __SOCK_SIZE__: u32 = 16; -pub const IN_CLASSA_NET: u32 = 4278190080; -pub const IN_CLASSA_NSHIFT: u32 = 24; -pub const IN_CLASSA_HOST: u32 = 16777215; -pub const IN_CLASSA_MAX: u32 = 128; -pub const IN_CLASSB_NET: u32 = 4294901760; -pub const IN_CLASSB_NSHIFT: u32 = 16; -pub const IN_CLASSB_HOST: u32 = 65535; -pub const IN_CLASSB_MAX: u32 = 65536; -pub const IN_CLASSC_NET: u32 = 4294967040; -pub const IN_CLASSC_NSHIFT: u32 = 8; -pub const IN_CLASSC_HOST: u32 = 255; -pub const IN_MULTICAST_NET: u32 = 3758096384; -pub const IN_CLASSE_NET: u32 = 4294967295; -pub const IN_CLASSE_NSHIFT: u32 = 0; -pub const IN_LOOPBACKNET: u32 = 127; -pub const INADDR_LOOPBACK: u32 = 2130706433; -pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; -pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; -pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; -pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; -pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; -pub const __BIG_ENDIAN: u32 = 4321; -pub const IN_ACCESS: u32 = 1; -pub const IN_MODIFY: u32 = 2; -pub const IN_ATTRIB: u32 = 4; -pub const IN_CLOSE_WRITE: u32 = 8; -pub const IN_CLOSE_NOWRITE: u32 = 16; -pub const IN_OPEN: u32 = 32; -pub const IN_MOVED_FROM: u32 = 64; -pub const IN_MOVED_TO: u32 = 128; -pub const IN_CREATE: u32 = 256; -pub const IN_DELETE: u32 = 512; -pub const IN_DELETE_SELF: u32 = 1024; -pub const IN_MOVE_SELF: u32 = 2048; -pub const IN_UNMOUNT: u32 = 8192; -pub const IN_Q_OVERFLOW: u32 = 16384; -pub const IN_IGNORED: u32 = 32768; -pub const IN_CLOSE: u32 = 24; -pub const IN_MOVE: u32 = 192; -pub const IN_ONLYDIR: u32 = 16777216; -pub const IN_DONT_FOLLOW: u32 = 33554432; -pub const IN_EXCL_UNLINK: u32 = 67108864; -pub const IN_MASK_CREATE: u32 = 268435456; -pub const IN_MASK_ADD: u32 = 536870912; -pub const IN_ISDIR: u32 = 1073741824; -pub const IN_ONESHOT: u32 = 2147483648; -pub const IN_ALL_EVENTS: u32 = 4095; -pub const IN_CLOEXEC: u32 = 524288; -pub const IN_NONBLOCK: u32 = 2048; -pub const IPTOS_TOS_MASK: u32 = 30; -pub const IPTOS_LOWDELAY: u32 = 16; -pub const IPTOS_THROUGHPUT: u32 = 8; -pub const IPTOS_RELIABILITY: u32 = 4; -pub const IPTOS_MINCOST: u32 = 2; -pub const IPTOS_PREC_MASK: u32 = 224; -pub const IPTOS_PREC_NETCONTROL: u32 = 224; -pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; -pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; -pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; -pub const IPTOS_PREC_FLASH: u32 = 96; -pub const IPTOS_PREC_IMMEDIATE: u32 = 64; -pub const IPTOS_PREC_PRIORITY: u32 = 32; -pub const IPTOS_PREC_ROUTINE: u32 = 0; -pub const IPOPT_COPY: u32 = 128; -pub const IPOPT_CLASS_MASK: u32 = 96; -pub const IPOPT_NUMBER_MASK: u32 = 31; -pub const IPOPT_CONTROL: u32 = 0; -pub const IPOPT_RESERVED1: u32 = 32; -pub const IPOPT_MEASUREMENT: u32 = 64; -pub const IPOPT_RESERVED2: u32 = 96; -pub const IPOPT_END: u32 = 0; -pub const IPOPT_NOOP: u32 = 1; -pub const IPOPT_SEC: u32 = 130; -pub const IPOPT_LSRR: u32 = 131; -pub const IPOPT_TIMESTAMP: u32 = 68; -pub const IPOPT_CIPSO: u32 = 134; -pub const IPOPT_RR: u32 = 7; -pub const IPOPT_SID: u32 = 136; -pub const IPOPT_SSRR: u32 = 137; -pub const IPOPT_RA: u32 = 148; -pub const IPVERSION: u32 = 4; -pub const MAXTTL: u32 = 255; -pub const IPDEFTTL: u32 = 64; -pub const IPOPT_OPTVAL: u32 = 0; -pub const IPOPT_OLEN: u32 = 1; -pub const IPOPT_OFFSET: u32 = 2; -pub const IPOPT_MINOFF: u32 = 4; -pub const MAX_IPOPTLEN: u32 = 40; -pub const IPOPT_NOP: u32 = 1; -pub const IPOPT_EOL: u32 = 0; -pub const IPOPT_TS: u32 = 68; -pub const IPOPT_TS_TSONLY: u32 = 0; -pub const IPOPT_TS_TSANDADDR: u32 = 1; -pub const IPOPT_TS_PRESPEC: u32 = 3; -pub const IPV4_BEET_PHMAXLEN: u32 = 8; -pub const IPV6_FL_A_GET: u32 = 0; -pub const IPV6_FL_A_PUT: u32 = 1; -pub const IPV6_FL_A_RENEW: u32 = 2; -pub const IPV6_FL_F_CREATE: u32 = 1; -pub const IPV6_FL_F_EXCL: u32 = 2; -pub const IPV6_FL_F_REFLECT: u32 = 4; -pub const IPV6_FL_F_REMOTE: u32 = 8; -pub const IPV6_FL_S_NONE: u32 = 0; -pub const IPV6_FL_S_EXCL: u32 = 1; -pub const IPV6_FL_S_PROCESS: u32 = 2; -pub const IPV6_FL_S_USER: u32 = 3; -pub const IPV6_FL_S_ANY: u32 = 255; -pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; -pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; -pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; -pub const IPV6_PRIORITY_FILLER: u32 = 256; -pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; -pub const IPV6_PRIORITY_RESERVED1: u32 = 768; -pub const IPV6_PRIORITY_BULK: u32 = 1024; -pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; -pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; -pub const IPV6_PRIORITY_CONTROL: u32 = 1792; -pub const IPV6_PRIORITY_8: u32 = 2048; -pub const IPV6_PRIORITY_9: u32 = 2304; -pub const IPV6_PRIORITY_10: u32 = 2560; -pub const IPV6_PRIORITY_11: u32 = 2816; -pub const IPV6_PRIORITY_12: u32 = 3072; -pub const IPV6_PRIORITY_13: u32 = 3328; -pub const IPV6_PRIORITY_14: u32 = 3584; -pub const IPV6_PRIORITY_15: u32 = 3840; -pub const IPPROTO_HOPOPTS: u32 = 0; -pub const IPPROTO_ROUTING: u32 = 43; -pub const IPPROTO_FRAGMENT: u32 = 44; -pub const IPPROTO_ICMPV6: u32 = 58; -pub const IPPROTO_NONE: u32 = 59; -pub const IPPROTO_DSTOPTS: u32 = 60; -pub const IPPROTO_MH: u32 = 135; -pub const IPV6_TLV_PAD1: u32 = 0; -pub const IPV6_TLV_PADN: u32 = 1; -pub const IPV6_TLV_ROUTERALERT: u32 = 5; -pub const IPV6_TLV_CALIPSO: u32 = 7; -pub const IPV6_TLV_IOAM: u32 = 49; -pub const IPV6_TLV_JUMBO: u32 = 194; -pub const IPV6_TLV_HAO: u32 = 201; -pub const IPV6_ADDRFORM: u32 = 1; -pub const IPV6_2292PKTINFO: u32 = 2; -pub const IPV6_2292HOPOPTS: u32 = 3; -pub const IPV6_2292DSTOPTS: u32 = 4; -pub const IPV6_2292RTHDR: u32 = 5; -pub const IPV6_2292PKTOPTIONS: u32 = 6; -pub const IPV6_CHECKSUM: u32 = 7; -pub const IPV6_2292HOPLIMIT: u32 = 8; -pub const IPV6_NEXTHOP: u32 = 9; -pub const IPV6_AUTHHDR: u32 = 10; -pub const IPV6_FLOWINFO: u32 = 11; -pub const IPV6_UNICAST_HOPS: u32 = 16; -pub const IPV6_MULTICAST_IF: u32 = 17; -pub const IPV6_MULTICAST_HOPS: u32 = 18; -pub const IPV6_MULTICAST_LOOP: u32 = 19; -pub const IPV6_ADD_MEMBERSHIP: u32 = 20; -pub const IPV6_DROP_MEMBERSHIP: u32 = 21; -pub const IPV6_ROUTER_ALERT: u32 = 22; -pub const IPV6_MTU_DISCOVER: u32 = 23; -pub const IPV6_MTU: u32 = 24; -pub const IPV6_RECVERR: u32 = 25; -pub const IPV6_V6ONLY: u32 = 26; -pub const IPV6_JOIN_ANYCAST: u32 = 27; -pub const IPV6_LEAVE_ANYCAST: u32 = 28; -pub const IPV6_MULTICAST_ALL: u32 = 29; -pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; -pub const IPV6_RECVERR_RFC4884: u32 = 31; -pub const IPV6_PMTUDISC_DONT: u32 = 0; -pub const IPV6_PMTUDISC_WANT: u32 = 1; -pub const IPV6_PMTUDISC_DO: u32 = 2; -pub const IPV6_PMTUDISC_PROBE: u32 = 3; -pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; -pub const IPV6_PMTUDISC_OMIT: u32 = 5; -pub const IPV6_FLOWLABEL_MGR: u32 = 32; -pub const IPV6_FLOWINFO_SEND: u32 = 33; -pub const IPV6_IPSEC_POLICY: u32 = 34; -pub const IPV6_XFRM_POLICY: u32 = 35; -pub const IPV6_HDRINCL: u32 = 36; -pub const IPV6_RECVPKTINFO: u32 = 49; -pub const IPV6_PKTINFO: u32 = 50; -pub const IPV6_RECVHOPLIMIT: u32 = 51; -pub const IPV6_HOPLIMIT: u32 = 52; -pub const IPV6_RECVHOPOPTS: u32 = 53; -pub const IPV6_HOPOPTS: u32 = 54; -pub const IPV6_RTHDRDSTOPTS: u32 = 55; -pub const IPV6_RECVRTHDR: u32 = 56; -pub const IPV6_RTHDR: u32 = 57; -pub const IPV6_RECVDSTOPTS: u32 = 58; -pub const IPV6_DSTOPTS: u32 = 59; -pub const IPV6_RECVPATHMTU: u32 = 60; -pub const IPV6_PATHMTU: u32 = 61; -pub const IPV6_DONTFRAG: u32 = 62; -pub const IPV6_RECVTCLASS: u32 = 66; -pub const IPV6_TCLASS: u32 = 67; -pub const IPV6_AUTOFLOWLABEL: u32 = 70; -pub const IPV6_ADDR_PREFERENCES: u32 = 72; -pub const IPV6_PREFER_SRC_TMP: u32 = 1; -pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; -pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; -pub const IPV6_PREFER_SRC_COA: u32 = 4; -pub const IPV6_PREFER_SRC_HOME: u32 = 1024; -pub const IPV6_PREFER_SRC_CGA: u32 = 8; -pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; -pub const IPV6_MINHOPCOUNT: u32 = 73; -pub const IPV6_ORIGDSTADDR: u32 = 74; -pub const IPV6_RECVORIGDSTADDR: u32 = 74; -pub const IPV6_TRANSPARENT: u32 = 75; -pub const IPV6_UNICAST_IF: u32 = 76; -pub const IPV6_RECVFRAGSIZE: u32 = 77; -pub const IPV6_FREEBIND: u32 = 78; -pub const IPV6_MIN_MTU: u32 = 1280; -pub const IPV6_SRCRT_STRICT: u32 = 1; -pub const IPV6_SRCRT_TYPE_0: u32 = 0; -pub const IPV6_SRCRT_TYPE_2: u32 = 2; -pub const IPV6_SRCRT_TYPE_3: u32 = 3; -pub const IPV6_SRCRT_TYPE_4: u32 = 4; -pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; -pub const ADFS_SUPER_MAGIC: u32 = 44533; -pub const AFFS_SUPER_MAGIC: u32 = 44543; -pub const AFS_SUPER_MAGIC: u32 = 1397113167; -pub const AUTOFS_SUPER_MAGIC: u32 = 391; -pub const CEPH_SUPER_MAGIC: u32 = 12805120; -pub const CODA_SUPER_MAGIC: u32 = 1937076805; -pub const CRAMFS_MAGIC: u32 = 684539205; -pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; -pub const DEBUGFS_MAGIC: u32 = 1684170528; -pub const SECURITYFS_MAGIC: u32 = 1935894131; -pub const SELINUX_MAGIC: u32 = 4185718668; -pub const SMACK_MAGIC: u32 = 1128357203; -pub const RAMFS_MAGIC: u32 = 2240043254; -pub const TMPFS_MAGIC: u32 = 16914836; -pub const HUGETLBFS_MAGIC: u32 = 2508478710; -pub const SQUASHFS_MAGIC: u32 = 1936814952; -pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; -pub const EFS_SUPER_MAGIC: u32 = 4278867; -pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; -pub const EXT2_SUPER_MAGIC: u32 = 61267; -pub const EXT3_SUPER_MAGIC: u32 = 61267; -pub const XENFS_SUPER_MAGIC: u32 = 2881100148; -pub const EXT4_SUPER_MAGIC: u32 = 61267; -pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; -pub const NILFS_SUPER_MAGIC: u32 = 13364; -pub const F2FS_SUPER_MAGIC: u32 = 4076150800; -pub const HPFS_SUPER_MAGIC: u32 = 4187351113; -pub const ISOFS_SUPER_MAGIC: u32 = 38496; -pub const JFFS2_SUPER_MAGIC: u32 = 29366; -pub const XFS_SUPER_MAGIC: u32 = 1481003842; -pub const PSTOREFS_MAGIC: u32 = 1634035564; -pub const EFIVARFS_MAGIC: u32 = 3730735588; -pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; -pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; -pub const FUSE_SUPER_MAGIC: u32 = 1702057286; -pub const MINIX_SUPER_MAGIC: u32 = 4991; -pub const MINIX_SUPER_MAGIC2: u32 = 5007; -pub const MINIX2_SUPER_MAGIC: u32 = 9320; -pub const MINIX2_SUPER_MAGIC2: u32 = 9336; -pub const MINIX3_SUPER_MAGIC: u32 = 19802; -pub const MSDOS_SUPER_MAGIC: u32 = 19780; -pub const EXFAT_SUPER_MAGIC: u32 = 538032816; -pub const NCP_SUPER_MAGIC: u32 = 22092; -pub const NFS_SUPER_MAGIC: u32 = 26985; -pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; -pub const OPENPROM_SUPER_MAGIC: u32 = 40865; -pub const QNX4_SUPER_MAGIC: u32 = 47; -pub const QNX6_SUPER_MAGIC: u32 = 1746473250; -pub const AFS_FS_MAGIC: u32 = 1799439955; -pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; -pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0"; -pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0"; -pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0"; -pub const SMB_SUPER_MAGIC: u32 = 20859; -pub const CIFS_SUPER_MAGIC: u32 = 4283649346; -pub const SMB2_SUPER_MAGIC: u32 = 4266872130; -pub const CGROUP_SUPER_MAGIC: u32 = 2613483; -pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; -pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; -pub const STACK_END_MAGIC: u32 = 1470918301; -pub const TRACEFS_MAGIC: u32 = 1953653091; -pub const V9FS_MAGIC: u32 = 16914839; -pub const BDEVFS_MAGIC: u32 = 1650746742; -pub const DAXFS_MAGIC: u32 = 1684300152; -pub const BINFMTFS_MAGIC: u32 = 1112100429; -pub const DEVPTS_SUPER_MAGIC: u32 = 7377; -pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; -pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; -pub const PIPEFS_MAGIC: u32 = 1346981957; -pub const PROC_SUPER_MAGIC: u32 = 40864; -pub const SOCKFS_MAGIC: u32 = 1397703499; -pub const SYSFS_MAGIC: u32 = 1650812274; -pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; -pub const MTD_INODE_FS_MAGIC: u32 = 288389204; -pub const ANON_INODE_FS_MAGIC: u32 = 151263540; -pub const BTRFS_TEST_MAGIC: u32 = 1936880249; -pub const NSFS_MAGIC: u32 = 1853056627; -pub const BPF_FS_MAGIC: u32 = 3405662737; -pub const AAFS_MAGIC: u32 = 1513908720; -pub const ZONEFS_MAGIC: u32 = 1515144787; -pub const UDF_SUPER_MAGIC: u32 = 352400198; -pub const DMA_BUF_MAGIC: u32 = 1145913666; -pub const DEVMEM_MAGIC: u32 = 1162691661; -pub const SECRETMEM_MAGIC: u32 = 1397048141; -pub const PROT_READ: u32 = 1; -pub const PROT_WRITE: u32 = 2; -pub const PROT_EXEC: u32 = 4; -pub const PROT_SEM: u32 = 8; -pub const PROT_NONE: u32 = 0; -pub const PROT_GROWSDOWN: u32 = 16777216; -pub const PROT_GROWSUP: u32 = 33554432; -pub const MAP_TYPE: u32 = 15; -pub const MAP_FIXED: u32 = 16; -pub const MAP_ANONYMOUS: u32 = 32; -pub const MAP_POPULATE: u32 = 32768; -pub const MAP_NONBLOCK: u32 = 65536; -pub const MAP_STACK: u32 = 131072; -pub const MAP_HUGETLB: u32 = 262144; -pub const MAP_SYNC: u32 = 524288; -pub const MAP_FIXED_NOREPLACE: u32 = 1048576; -pub const MAP_UNINITIALIZED: u32 = 67108864; -pub const MLOCK_ONFAULT: u32 = 1; -pub const MS_ASYNC: u32 = 1; -pub const MS_INVALIDATE: u32 = 2; -pub const MS_SYNC: u32 = 4; -pub const MADV_NORMAL: u32 = 0; -pub const MADV_RANDOM: u32 = 1; -pub const MADV_SEQUENTIAL: u32 = 2; -pub const MADV_WILLNEED: u32 = 3; -pub const MADV_DONTNEED: u32 = 4; -pub const MADV_FREE: u32 = 8; -pub const MADV_REMOVE: u32 = 9; -pub const MADV_DONTFORK: u32 = 10; -pub const MADV_DOFORK: u32 = 11; -pub const MADV_HWPOISON: u32 = 100; -pub const MADV_SOFT_OFFLINE: u32 = 101; -pub const MADV_MERGEABLE: u32 = 12; -pub const MADV_UNMERGEABLE: u32 = 13; -pub const MADV_HUGEPAGE: u32 = 14; -pub const MADV_NOHUGEPAGE: u32 = 15; -pub const MADV_DONTDUMP: u32 = 16; -pub const MADV_DODUMP: u32 = 17; -pub const MADV_WIPEONFORK: u32 = 18; -pub const MADV_KEEPONFORK: u32 = 19; -pub const MADV_COLD: u32 = 20; -pub const MADV_PAGEOUT: u32 = 21; -pub const MADV_POPULATE_READ: u32 = 22; -pub const MADV_POPULATE_WRITE: u32 = 23; -pub const MADV_DONTNEED_LOCKED: u32 = 24; -pub const MADV_COLLAPSE: u32 = 25; -pub const MAP_FILE: u32 = 0; -pub const PKEY_DISABLE_ACCESS: u32 = 1; -pub const PKEY_DISABLE_WRITE: u32 = 2; -pub const PKEY_ACCESS_MASK: u32 = 3; -pub const PROT_SAO: u32 = 16; -pub const MAP_RENAME: u32 = 32; -pub const MAP_NORESERVE: u32 = 64; -pub const MAP_LOCKED: u32 = 128; -pub const MAP_GROWSDOWN: u32 = 256; -pub const MAP_DENYWRITE: u32 = 2048; -pub const MAP_EXECUTABLE: u32 = 4096; -pub const MCL_CURRENT: u32 = 8192; -pub const MCL_FUTURE: u32 = 16384; -pub const MCL_ONFAULT: u32 = 32768; -pub const PKEY_DISABLE_EXECUTE: u32 = 4; -pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; -pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; -pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; -pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; -pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; -pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; -pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; -pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; -pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; -pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; -pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; -pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; -pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; -pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; -pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; -pub const MREMAP_MAYMOVE: u32 = 1; -pub const MREMAP_FIXED: u32 = 2; -pub const MREMAP_DONTUNMAP: u32 = 4; -pub const OVERCOMMIT_GUESS: u32 = 0; -pub const OVERCOMMIT_ALWAYS: u32 = 1; -pub const OVERCOMMIT_NEVER: u32 = 2; -pub const MAP_SHARED: u32 = 1; -pub const MAP_PRIVATE: u32 = 2; -pub const MAP_SHARED_VALIDATE: u32 = 3; -pub const MAP_HUGE_SHIFT: u32 = 26; -pub const MAP_HUGE_MASK: u32 = 63; -pub const MAP_HUGE_16KB: u32 = 939524096; -pub const MAP_HUGE_64KB: u32 = 1073741824; -pub const MAP_HUGE_512KB: u32 = 1275068416; -pub const MAP_HUGE_1MB: u32 = 1342177280; -pub const MAP_HUGE_2MB: u32 = 1409286144; -pub const MAP_HUGE_8MB: u32 = 1543503872; -pub const MAP_HUGE_16MB: u32 = 1610612736; -pub const MAP_HUGE_32MB: u32 = 1677721600; -pub const MAP_HUGE_256MB: u32 = 1879048192; -pub const MAP_HUGE_512MB: u32 = 1946157056; -pub const MAP_HUGE_1GB: u32 = 2013265920; -pub const MAP_HUGE_2GB: u32 = 2080374784; -pub const MAP_HUGE_16GB: u32 = 2281701376; -pub const SO_RCVLOWAT: u32 = 16; -pub const SO_SNDLOWAT: u32 = 17; -pub const SO_RCVTIMEO_OLD: u32 = 18; -pub const SO_SNDTIMEO_OLD: u32 = 19; -pub const SO_PASSCRED: u32 = 20; -pub const SO_PEERCRED: u32 = 21; -pub const SIOCGSTAMP_OLD: u32 = 35078; -pub const SIOCGSTAMPNS_OLD: u32 = 35079; -pub const SOL_SOCKET: u32 = 1; -pub const SO_DEBUG: u32 = 1; -pub const SO_REUSEADDR: u32 = 2; -pub const SO_TYPE: u32 = 3; -pub const SO_ERROR: u32 = 4; -pub const SO_DONTROUTE: u32 = 5; -pub const SO_BROADCAST: u32 = 6; -pub const SO_SNDBUF: u32 = 7; -pub const SO_RCVBUF: u32 = 8; -pub const SO_SNDBUFFORCE: u32 = 32; -pub const SO_RCVBUFFORCE: u32 = 33; -pub const SO_KEEPALIVE: u32 = 9; -pub const SO_OOBINLINE: u32 = 10; -pub const SO_NO_CHECK: u32 = 11; -pub const SO_PRIORITY: u32 = 12; -pub const SO_LINGER: u32 = 13; -pub const SO_BSDCOMPAT: u32 = 14; -pub const SO_REUSEPORT: u32 = 15; -pub const SO_SECURITY_AUTHENTICATION: u32 = 22; -pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; -pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; -pub const SO_BINDTODEVICE: u32 = 25; -pub const SO_ATTACH_FILTER: u32 = 26; -pub const SO_DETACH_FILTER: u32 = 27; -pub const SO_GET_FILTER: u32 = 26; -pub const SO_PEERNAME: u32 = 28; -pub const SO_ACCEPTCONN: u32 = 30; -pub const SO_PEERSEC: u32 = 31; -pub const SO_PASSSEC: u32 = 34; -pub const SO_MARK: u32 = 36; -pub const SO_PROTOCOL: u32 = 38; -pub const SO_DOMAIN: u32 = 39; -pub const SO_RXQ_OVFL: u32 = 40; -pub const SO_WIFI_STATUS: u32 = 41; -pub const SCM_WIFI_STATUS: u32 = 41; -pub const SO_PEEK_OFF: u32 = 42; -pub const SO_NOFCS: u32 = 43; -pub const SO_LOCK_FILTER: u32 = 44; -pub const SO_SELECT_ERR_QUEUE: u32 = 45; -pub const SO_BUSY_POLL: u32 = 46; -pub const SO_MAX_PACING_RATE: u32 = 47; -pub const SO_BPF_EXTENSIONS: u32 = 48; -pub const SO_INCOMING_CPU: u32 = 49; -pub const SO_ATTACH_BPF: u32 = 50; -pub const SO_DETACH_BPF: u32 = 27; -pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; -pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; -pub const SO_CNX_ADVICE: u32 = 53; -pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; -pub const SO_MEMINFO: u32 = 55; -pub const SO_INCOMING_NAPI_ID: u32 = 56; -pub const SO_COOKIE: u32 = 57; -pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; -pub const SO_PEERGROUPS: u32 = 59; -pub const SO_ZEROCOPY: u32 = 60; -pub const SO_TXTIME: u32 = 61; -pub const SCM_TXTIME: u32 = 61; -pub const SO_BINDTOIFINDEX: u32 = 62; -pub const SO_TIMESTAMP_OLD: u32 = 29; -pub const SO_TIMESTAMPNS_OLD: u32 = 35; -pub const SO_TIMESTAMPING_OLD: u32 = 37; -pub const SO_TIMESTAMP_NEW: u32 = 63; -pub const SO_TIMESTAMPNS_NEW: u32 = 64; -pub const SO_TIMESTAMPING_NEW: u32 = 65; -pub const SO_RCVTIMEO_NEW: u32 = 66; -pub const SO_SNDTIMEO_NEW: u32 = 67; -pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; -pub const SO_PREFER_BUSY_POLL: u32 = 69; -pub const SO_BUSY_POLL_BUDGET: u32 = 70; -pub const SO_NETNS_COOKIE: u32 = 71; -pub const SO_BUF_LOCK: u32 = 72; -pub const SO_RESERVE_MEM: u32 = 73; -pub const SO_TXREHASH: u32 = 74; -pub const SO_RCVMARK: u32 = 75; -pub const SYS_SOCKET: u32 = 1; -pub const SYS_BIND: u32 = 2; -pub const SYS_CONNECT: u32 = 3; -pub const SYS_LISTEN: u32 = 4; -pub const SYS_ACCEPT: u32 = 5; -pub const SYS_GETSOCKNAME: u32 = 6; -pub const SYS_GETPEERNAME: u32 = 7; -pub const SYS_SOCKETPAIR: u32 = 8; -pub const SYS_SEND: u32 = 9; -pub const SYS_RECV: u32 = 10; -pub const SYS_SENDTO: u32 = 11; -pub const SYS_RECVFROM: u32 = 12; -pub const SYS_SHUTDOWN: u32 = 13; -pub const SYS_SETSOCKOPT: u32 = 14; -pub const SYS_GETSOCKOPT: u32 = 15; -pub const SYS_SENDMSG: u32 = 16; -pub const SYS_RECVMSG: u32 = 17; -pub const SYS_ACCEPT4: u32 = 18; -pub const SYS_RECVMMSG: u32 = 19; -pub const SYS_SENDMMSG: u32 = 20; -pub const __SO_ACCEPTCON: u32 = 65536; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const POLLWRNORM: u32 = 256; -pub const POLLWRBAND: u32 = 512; -pub const POLLMSG: u32 = 1024; -pub const POLLREMOVE: u32 = 4096; -pub const POLLRDHUP: u32 = 8192; -pub const PR_SET_PDEATHSIG: u32 = 1; -pub const PR_GET_PDEATHSIG: u32 = 2; -pub const PR_GET_DUMPABLE: u32 = 3; -pub const PR_SET_DUMPABLE: u32 = 4; -pub const PR_GET_UNALIGN: u32 = 5; -pub const PR_SET_UNALIGN: u32 = 6; -pub const PR_UNALIGN_NOPRINT: u32 = 1; -pub const PR_UNALIGN_SIGBUS: u32 = 2; -pub const PR_GET_KEEPCAPS: u32 = 7; -pub const PR_SET_KEEPCAPS: u32 = 8; -pub const PR_GET_FPEMU: u32 = 9; -pub const PR_SET_FPEMU: u32 = 10; -pub const PR_FPEMU_NOPRINT: u32 = 1; -pub const PR_FPEMU_SIGFPE: u32 = 2; -pub const PR_GET_FPEXC: u32 = 11; -pub const PR_SET_FPEXC: u32 = 12; -pub const PR_FP_EXC_SW_ENABLE: u32 = 128; -pub const PR_FP_EXC_DIV: u32 = 65536; -pub const PR_FP_EXC_OVF: u32 = 131072; -pub const PR_FP_EXC_UND: u32 = 262144; -pub const PR_FP_EXC_RES: u32 = 524288; -pub const PR_FP_EXC_INV: u32 = 1048576; -pub const PR_FP_EXC_DISABLED: u32 = 0; -pub const PR_FP_EXC_NONRECOV: u32 = 1; -pub const PR_FP_EXC_ASYNC: u32 = 2; -pub const PR_FP_EXC_PRECISE: u32 = 3; -pub const PR_GET_TIMING: u32 = 13; -pub const PR_SET_TIMING: u32 = 14; -pub const PR_TIMING_STATISTICAL: u32 = 0; -pub const PR_TIMING_TIMESTAMP: u32 = 1; -pub const PR_SET_NAME: u32 = 15; -pub const PR_GET_NAME: u32 = 16; -pub const PR_GET_ENDIAN: u32 = 19; -pub const PR_SET_ENDIAN: u32 = 20; -pub const PR_ENDIAN_BIG: u32 = 0; -pub const PR_ENDIAN_LITTLE: u32 = 1; -pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; -pub const PR_GET_SECCOMP: u32 = 21; -pub const PR_SET_SECCOMP: u32 = 22; -pub const PR_CAPBSET_READ: u32 = 23; -pub const PR_CAPBSET_DROP: u32 = 24; -pub const PR_GET_TSC: u32 = 25; -pub const PR_SET_TSC: u32 = 26; -pub const PR_TSC_ENABLE: u32 = 1; -pub const PR_TSC_SIGSEGV: u32 = 2; -pub const PR_GET_SECUREBITS: u32 = 27; -pub const PR_SET_SECUREBITS: u32 = 28; -pub const PR_SET_TIMERSLACK: u32 = 29; -pub const PR_GET_TIMERSLACK: u32 = 30; -pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; -pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; -pub const PR_MCE_KILL: u32 = 33; -pub const PR_MCE_KILL_CLEAR: u32 = 0; -pub const PR_MCE_KILL_SET: u32 = 1; -pub const PR_MCE_KILL_LATE: u32 = 0; -pub const PR_MCE_KILL_EARLY: u32 = 1; -pub const PR_MCE_KILL_DEFAULT: u32 = 2; -pub const PR_MCE_KILL_GET: u32 = 34; -pub const PR_SET_MM: u32 = 35; -pub const PR_SET_MM_START_CODE: u32 = 1; -pub const PR_SET_MM_END_CODE: u32 = 2; -pub const PR_SET_MM_START_DATA: u32 = 3; -pub const PR_SET_MM_END_DATA: u32 = 4; -pub const PR_SET_MM_START_STACK: u32 = 5; -pub const PR_SET_MM_START_BRK: u32 = 6; -pub const PR_SET_MM_BRK: u32 = 7; -pub const PR_SET_MM_ARG_START: u32 = 8; -pub const PR_SET_MM_ARG_END: u32 = 9; -pub const PR_SET_MM_ENV_START: u32 = 10; -pub const PR_SET_MM_ENV_END: u32 = 11; -pub const PR_SET_MM_AUXV: u32 = 12; -pub const PR_SET_MM_EXE_FILE: u32 = 13; -pub const PR_SET_MM_MAP: u32 = 14; -pub const PR_SET_MM_MAP_SIZE: u32 = 15; -pub const PR_SET_PTRACER: u32 = 1499557217; -pub const PR_SET_CHILD_SUBREAPER: u32 = 36; -pub const PR_GET_CHILD_SUBREAPER: u32 = 37; -pub const PR_SET_NO_NEW_PRIVS: u32 = 38; -pub const PR_GET_NO_NEW_PRIVS: u32 = 39; -pub const PR_GET_TID_ADDRESS: u32 = 40; -pub const PR_SET_THP_DISABLE: u32 = 41; -pub const PR_GET_THP_DISABLE: u32 = 42; -pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; -pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; -pub const PR_SET_FP_MODE: u32 = 45; -pub const PR_GET_FP_MODE: u32 = 46; -pub const PR_FP_MODE_FR: u32 = 1; -pub const PR_FP_MODE_FRE: u32 = 2; -pub const PR_CAP_AMBIENT: u32 = 47; -pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; -pub const PR_CAP_AMBIENT_RAISE: u32 = 2; -pub const PR_CAP_AMBIENT_LOWER: u32 = 3; -pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; -pub const PR_SVE_SET_VL: u32 = 50; -pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SVE_GET_VL: u32 = 51; -pub const PR_SVE_VL_LEN_MASK: u32 = 65535; -pub const PR_SVE_VL_INHERIT: u32 = 131072; -pub const PR_GET_SPECULATION_CTRL: u32 = 52; -pub const PR_SET_SPECULATION_CTRL: u32 = 53; -pub const PR_SPEC_STORE_BYPASS: u32 = 0; -pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; -pub const PR_SPEC_L1D_FLUSH: u32 = 2; -pub const PR_SPEC_NOT_AFFECTED: u32 = 0; -pub const PR_SPEC_PRCTL: u32 = 1; -pub const PR_SPEC_ENABLE: u32 = 2; -pub const PR_SPEC_DISABLE: u32 = 4; -pub const PR_SPEC_FORCE_DISABLE: u32 = 8; -pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; -pub const PR_PAC_RESET_KEYS: u32 = 54; -pub const PR_PAC_APIAKEY: u32 = 1; -pub const PR_PAC_APIBKEY: u32 = 2; -pub const PR_PAC_APDAKEY: u32 = 4; -pub const PR_PAC_APDBKEY: u32 = 8; -pub const PR_PAC_APGAKEY: u32 = 16; -pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; -pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; -pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; -pub const PR_MTE_TCF_NONE: u32 = 0; -pub const PR_MTE_TCF_SYNC: u32 = 2; -pub const PR_MTE_TCF_ASYNC: u32 = 4; -pub const PR_MTE_TCF_MASK: u32 = 6; -pub const PR_MTE_TAG_SHIFT: u32 = 3; -pub const PR_MTE_TAG_MASK: u32 = 524280; -pub const PR_MTE_TCF_SHIFT: u32 = 1; -pub const PR_SET_IO_FLUSHER: u32 = 57; -pub const PR_GET_IO_FLUSHER: u32 = 58; -pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; -pub const PR_SYS_DISPATCH_OFF: u32 = 0; -pub const PR_SYS_DISPATCH_ON: u32 = 1; -pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; -pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; -pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; -pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; -pub const PR_SCHED_CORE: u32 = 62; -pub const PR_SCHED_CORE_GET: u32 = 0; -pub const PR_SCHED_CORE_CREATE: u32 = 1; -pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; -pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; -pub const PR_SCHED_CORE_MAX: u32 = 4; -pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; -pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; -pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; -pub const PR_SME_SET_VL: u32 = 63; -pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SME_GET_VL: u32 = 64; -pub const PR_SME_VL_LEN_MASK: u32 = 65535; -pub const PR_SME_VL_INHERIT: u32 = 131072; -pub const PR_SET_MDWE: u32 = 65; -pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; -pub const PR_GET_MDWE: u32 = 66; -pub const PR_SET_VMA: u32 = 1398164801; -pub const PR_SET_VMA_ANON_NAME: u32 = 0; -pub const GRND_NONBLOCK: u32 = 1; -pub const GRND_RANDOM: u32 = 2; -pub const GRND_INSECURE: u32 = 4; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -pub const CLOCK_REALTIME: u32 = 0; -pub const CLOCK_MONOTONIC: u32 = 1; -pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; -pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; -pub const CLOCK_MONOTONIC_RAW: u32 = 4; -pub const CLOCK_REALTIME_COARSE: u32 = 5; -pub const CLOCK_MONOTONIC_COARSE: u32 = 6; -pub const CLOCK_BOOTTIME: u32 = 7; -pub const CLOCK_REALTIME_ALARM: u32 = 8; -pub const CLOCK_BOOTTIME_ALARM: u32 = 9; -pub const CLOCK_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const RUSAGE_SELF: u32 = 0; -pub const RUSAGE_CHILDREN: i32 = -1; -pub const RUSAGE_BOTH: i32 = -2; -pub const RUSAGE_THREAD: u32 = 1; -pub const RLIM64_INFINITY: i32 = -1; -pub const PRIO_MIN: i32 = -20; -pub const PRIO_MAX: u32 = 20; -pub const PRIO_PROCESS: u32 = 0; -pub const PRIO_PGRP: u32 = 1; -pub const PRIO_USER: u32 = 2; -pub const _STK_LIM: u32 = 8388608; -pub const MLOCK_LIMIT: u32 = 8388608; -pub const RLIMIT_CPU: u32 = 0; -pub const RLIMIT_FSIZE: u32 = 1; -pub const RLIMIT_DATA: u32 = 2; -pub const RLIMIT_STACK: u32 = 3; -pub const RLIMIT_CORE: u32 = 4; -pub const RLIMIT_RSS: u32 = 5; -pub const RLIMIT_NPROC: u32 = 6; -pub const RLIMIT_NOFILE: u32 = 7; -pub const RLIMIT_MEMLOCK: u32 = 8; -pub const RLIMIT_AS: u32 = 9; -pub const RLIMIT_LOCKS: u32 = 10; -pub const RLIMIT_SIGPENDING: u32 = 11; -pub const RLIMIT_MSGQUEUE: u32 = 12; -pub const RLIMIT_NICE: u32 = 13; -pub const RLIMIT_RTPRIO: u32 = 14; -pub const RLIMIT_RTTIME: u32 = 15; -pub const RLIM_NLIMITS: u32 = 16; -pub const RLIM_INFINITY: i32 = -1; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const _NSIG: u32 = 64; -pub const _NSIG_BPW: u32 = 32; -pub const _NSIG_WORDS: u32 = 2; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGBUS: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGUSR1: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGUSR2: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGSTKFLT: u32 = 16; -pub const SIGCHLD: u32 = 17; -pub const SIGCONT: u32 = 18; -pub const SIGSTOP: u32 = 19; -pub const SIGTSTP: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGURG: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGIO: u32 = 29; -pub const SIGPOLL: u32 = 29; -pub const SIGPWR: u32 = 30; -pub const SIGSYS: u32 = 31; -pub const SIGUNUSED: u32 = 31; -pub const SIGRTMIN: u32 = 32; -pub const SIGRTMAX: u32 = 64; -pub const SA_RESTORER: u32 = 67108864; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; -pub const SA_NOCLDSTOP: u32 = 1; -pub const SA_NOCLDWAIT: u32 = 2; -pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; -pub const SA_ONSTACK: u32 = 134217728; -pub const SA_RESTART: u32 = 268435456; -pub const SA_NODEFER: u32 = 1073741824; -pub const SA_RESETHAND: u32 = 2147483648; -pub const SA_NOMASK: u32 = 1073741824; -pub const SA_ONESHOT: u32 = 2147483648; -pub const SIG_BLOCK: u32 = 0; -pub const SIG_UNBLOCK: u32 = 1; -pub const SIG_SETMASK: u32 = 2; -pub const SIG_DBG_SINGLE_STEPPING: u32 = 1; -pub const SIG_DBG_BRANCH_TRACING: u32 = 2; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; -pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const S_IFMT: u32 = 61440; -pub const S_IFSOCK: u32 = 49152; -pub const S_IFLNK: u32 = 40960; -pub const S_IFREG: u32 = 32768; -pub const S_IFBLK: u32 = 24576; -pub const S_IFDIR: u32 = 16384; -pub const S_IFCHR: u32 = 8192; -pub const S_IFIFO: u32 = 4096; -pub const S_ISUID: u32 = 2048; -pub const S_ISGID: u32 = 1024; -pub const S_ISVTX: u32 = 512; -pub const S_IRWXU: u32 = 448; -pub const S_IRUSR: u32 = 256; -pub const S_IWUSR: u32 = 128; -pub const S_IXUSR: u32 = 64; -pub const S_IRWXG: u32 = 56; -pub const S_IRGRP: u32 = 32; -pub const S_IWGRP: u32 = 16; -pub const S_IXGRP: u32 = 8; -pub const S_IRWXO: u32 = 7; -pub const S_IROTH: u32 = 4; -pub const S_IWOTH: u32 = 2; -pub const S_IXOTH: u32 = 1; -pub const STATX_TYPE: u32 = 1; -pub const STATX_MODE: u32 = 2; -pub const STATX_NLINK: u32 = 4; -pub const STATX_UID: u32 = 8; -pub const STATX_GID: u32 = 16; -pub const STATX_ATIME: u32 = 32; -pub const STATX_MTIME: u32 = 64; -pub const STATX_CTIME: u32 = 128; -pub const STATX_INO: u32 = 256; -pub const STATX_SIZE: u32 = 512; -pub const STATX_BLOCKS: u32 = 1024; -pub const STATX_BASIC_STATS: u32 = 2047; -pub const STATX_BTIME: u32 = 2048; -pub const STATX_MNT_ID: u32 = 4096; -pub const STATX_DIOALIGN: u32 = 8192; -pub const STATX__RESERVED: u32 = 2147483648; -pub const STATX_ALL: u32 = 4095; -pub const STATX_ATTR_COMPRESSED: u32 = 4; -pub const STATX_ATTR_IMMUTABLE: u32 = 16; -pub const STATX_ATTR_APPEND: u32 = 32; -pub const STATX_ATTR_NODUMP: u32 = 64; -pub const STATX_ATTR_ENCRYPTED: u32 = 2048; -pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; -pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; -pub const STATX_ATTR_VERITY: u32 = 1048576; -pub const STATX_ATTR_DAX: u32 = 2097152; -pub const SI_LOAD_SHIFT: u32 = 16; -pub const TCP_MSS_DEFAULT: u32 = 536; -pub const TCP_MSS_DESIRED: u32 = 1220; -pub const TCP_NODELAY: u32 = 1; -pub const TCP_MAXSEG: u32 = 2; -pub const TCP_CORK: u32 = 3; -pub const TCP_KEEPIDLE: u32 = 4; -pub const TCP_KEEPINTVL: u32 = 5; -pub const TCP_KEEPCNT: u32 = 6; -pub const TCP_SYNCNT: u32 = 7; -pub const TCP_LINGER2: u32 = 8; -pub const TCP_DEFER_ACCEPT: u32 = 9; -pub const TCP_WINDOW_CLAMP: u32 = 10; -pub const TCP_INFO: u32 = 11; -pub const TCP_QUICKACK: u32 = 12; -pub const TCP_CONGESTION: u32 = 13; -pub const TCP_MD5SIG: u32 = 14; -pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; -pub const TCP_THIN_DUPACK: u32 = 17; -pub const TCP_USER_TIMEOUT: u32 = 18; -pub const TCP_REPAIR: u32 = 19; -pub const TCP_REPAIR_QUEUE: u32 = 20; -pub const TCP_QUEUE_SEQ: u32 = 21; -pub const TCP_REPAIR_OPTIONS: u32 = 22; -pub const TCP_FASTOPEN: u32 = 23; -pub const TCP_TIMESTAMP: u32 = 24; -pub const TCP_NOTSENT_LOWAT: u32 = 25; -pub const TCP_CC_INFO: u32 = 26; -pub const TCP_SAVE_SYN: u32 = 27; -pub const TCP_SAVED_SYN: u32 = 28; -pub const TCP_REPAIR_WINDOW: u32 = 29; -pub const TCP_FASTOPEN_CONNECT: u32 = 30; -pub const TCP_ULP: u32 = 31; -pub const TCP_MD5SIG_EXT: u32 = 32; -pub const TCP_FASTOPEN_KEY: u32 = 33; -pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; -pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; -pub const TCP_INQ: u32 = 36; -pub const TCP_CM_INQ: u32 = 36; -pub const TCP_TX_DELAY: u32 = 37; -pub const TCP_REPAIR_ON: u32 = 1; -pub const TCP_REPAIR_OFF: u32 = 0; -pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; -pub const TCPI_OPT_TIMESTAMPS: u32 = 1; -pub const TCPI_OPT_SACK: u32 = 2; -pub const TCPI_OPT_WSCALE: u32 = 4; -pub const TCPI_OPT_ECN: u32 = 8; -pub const TCPI_OPT_ECN_SEEN: u32 = 16; -pub const TCPI_OPT_SYN_DATA: u32 = 32; -pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; -pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; -pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; -pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; -pub const TIOCM_LE: u32 = 1; -pub const TIOCM_DTR: u32 = 2; -pub const TIOCM_RTS: u32 = 4; -pub const TIOCM_ST: u32 = 8; -pub const TIOCM_SR: u32 = 16; -pub const TIOCM_CTS: u32 = 32; -pub const TIOCM_CAR: u32 = 64; -pub const TIOCM_RNG: u32 = 128; -pub const TIOCM_DSR: u32 = 256; -pub const TIOCM_CD: u32 = 64; -pub const TIOCM_RI: u32 = 128; -pub const TIOCM_OUT1: u32 = 8192; -pub const TIOCM_OUT2: u32 = 16384; -pub const TIOCM_LOOP: u32 = 32768; -pub const TIOCPKT_DATA: u32 = 0; -pub const TIOCPKT_FLUSHREAD: u32 = 1; -pub const TIOCPKT_FLUSHWRITE: u32 = 2; -pub const TIOCPKT_STOP: u32 = 4; -pub const TIOCPKT_START: u32 = 8; -pub const TIOCPKT_NOSTOP: u32 = 16; -pub const TIOCPKT_DOSTOP: u32 = 32; -pub const TIOCPKT_IOCTL: u32 = 64; -pub const TIOCSER_TEMT: u32 = 1; -pub const IGNBRK: u32 = 1; -pub const BRKINT: u32 = 2; -pub const IGNPAR: u32 = 4; -pub const PARMRK: u32 = 8; -pub const INPCK: u32 = 16; -pub const ISTRIP: u32 = 32; -pub const INLCR: u32 = 64; -pub const IGNCR: u32 = 128; -pub const ICRNL: u32 = 256; -pub const IXANY: u32 = 2048; -pub const OPOST: u32 = 1; -pub const OCRNL: u32 = 8; -pub const ONOCR: u32 = 16; -pub const ONLRET: u32 = 32; -pub const OFILL: u32 = 64; -pub const OFDEL: u32 = 128; -pub const B0: u32 = 0; -pub const B50: u32 = 1; -pub const B75: u32 = 2; -pub const B110: u32 = 3; -pub const B134: u32 = 4; -pub const B150: u32 = 5; -pub const B200: u32 = 6; -pub const B300: u32 = 7; -pub const B600: u32 = 8; -pub const B1200: u32 = 9; -pub const B1800: u32 = 10; -pub const B2400: u32 = 11; -pub const B4800: u32 = 12; -pub const B9600: u32 = 13; -pub const B19200: u32 = 14; -pub const B38400: u32 = 15; -pub const EXTA: u32 = 14; -pub const EXTB: u32 = 15; -pub const ADDRB: u32 = 536870912; -pub const CMSPAR: u32 = 1073741824; -pub const CRTSCTS: u32 = 2147483648; -pub const IBSHIFT: u32 = 16; -pub const TCOOFF: u32 = 0; -pub const TCOON: u32 = 1; -pub const TCIOFF: u32 = 2; -pub const TCION: u32 = 3; -pub const TCIFLUSH: u32 = 0; -pub const TCOFLUSH: u32 = 1; -pub const TCIOFLUSH: u32 = 2; -pub const NCCS: u32 = 19; -pub const VINTR: u32 = 0; -pub const VQUIT: u32 = 1; -pub const VERASE: u32 = 2; -pub const VKILL: u32 = 3; -pub const VEOF: u32 = 4; -pub const VMIN: u32 = 5; -pub const VEOL: u32 = 6; -pub const VTIME: u32 = 7; -pub const VEOL2: u32 = 8; -pub const VSWTC: u32 = 9; -pub const VWERASE: u32 = 10; -pub const VREPRINT: u32 = 11; -pub const VSUSP: u32 = 12; -pub const VSTART: u32 = 13; -pub const VSTOP: u32 = 14; -pub const VLNEXT: u32 = 15; -pub const VDISCARD: u32 = 16; -pub const IXON: u32 = 512; -pub const IXOFF: u32 = 1024; -pub const IUCLC: u32 = 4096; -pub const IMAXBEL: u32 = 8192; -pub const IUTF8: u32 = 16384; -pub const ONLCR: u32 = 2; -pub const OLCUC: u32 = 4; -pub const NLDLY: u32 = 768; -pub const NL0: u32 = 0; -pub const NL1: u32 = 256; -pub const NL2: u32 = 512; -pub const NL3: u32 = 768; -pub const TABDLY: u32 = 3072; -pub const TAB0: u32 = 0; -pub const TAB1: u32 = 1024; -pub const TAB2: u32 = 2048; -pub const TAB3: u32 = 3072; -pub const XTABS: u32 = 3072; -pub const CRDLY: u32 = 12288; -pub const CR0: u32 = 0; -pub const CR1: u32 = 4096; -pub const CR2: u32 = 8192; -pub const CR3: u32 = 12288; -pub const FFDLY: u32 = 16384; -pub const FF0: u32 = 0; -pub const FF1: u32 = 16384; -pub const BSDLY: u32 = 32768; -pub const BS0: u32 = 0; -pub const BS1: u32 = 32768; -pub const VTDLY: u32 = 65536; -pub const VT0: u32 = 0; -pub const VT1: u32 = 65536; -pub const CBAUD: u32 = 255; -pub const CBAUDEX: u32 = 0; -pub const BOTHER: u32 = 31; -pub const B57600: u32 = 16; -pub const B115200: u32 = 17; -pub const B230400: u32 = 18; -pub const B460800: u32 = 19; -pub const B500000: u32 = 20; -pub const B576000: u32 = 21; -pub const B921600: u32 = 22; -pub const B1000000: u32 = 23; -pub const B1152000: u32 = 24; -pub const B1500000: u32 = 25; -pub const B2000000: u32 = 26; -pub const B2500000: u32 = 27; -pub const B3000000: u32 = 28; -pub const B3500000: u32 = 29; -pub const B4000000: u32 = 30; -pub const CSIZE: u32 = 768; -pub const CS5: u32 = 0; -pub const CS6: u32 = 256; -pub const CS7: u32 = 512; -pub const CS8: u32 = 768; -pub const CSTOPB: u32 = 1024; -pub const CREAD: u32 = 2048; -pub const PARENB: u32 = 4096; -pub const PARODD: u32 = 8192; -pub const HUPCL: u32 = 16384; -pub const CLOCAL: u32 = 32768; -pub const CIBAUD: u32 = 16711680; -pub const ISIG: u32 = 128; -pub const ICANON: u32 = 256; -pub const XCASE: u32 = 16384; -pub const ECHO: u32 = 8; -pub const ECHOE: u32 = 2; -pub const ECHOK: u32 = 4; -pub const ECHONL: u32 = 16; -pub const NOFLSH: u32 = 2147483648; -pub const TOSTOP: u32 = 4194304; -pub const ECHOCTL: u32 = 64; -pub const ECHOPRT: u32 = 32; -pub const ECHOKE: u32 = 1; -pub const FLUSHO: u32 = 8388608; -pub const PENDIN: u32 = 536870912; -pub const IEXTEN: u32 = 1024; -pub const EXTPROC: u32 = 268435456; -pub const TCSANOW: u32 = 0; -pub const TCSADRAIN: u32 = 1; -pub const TCSAFLUSH: u32 = 2; -pub const NCC: u32 = 10; -pub const _VINTR: u32 = 0; -pub const _VQUIT: u32 = 1; -pub const _VERASE: u32 = 2; -pub const _VKILL: u32 = 3; -pub const _VEOF: u32 = 4; -pub const _VMIN: u32 = 5; -pub const _VEOL: u32 = 6; -pub const _VTIME: u32 = 7; -pub const _VEOL2: u32 = 8; -pub const _VSWTC: u32 = 9; -pub const UIO_FASTIOV: u32 = 8; -pub const UIO_MAXIOV: u32 = 1024; -pub const UNIX_PATH_MAX: u32 = 108; -pub const __NR_restart_syscall: u32 = 0; -pub const __NR_exit: u32 = 1; -pub const __NR_fork: u32 = 2; -pub const __NR_read: u32 = 3; -pub const __NR_write: u32 = 4; -pub const __NR_open: u32 = 5; -pub const __NR_close: u32 = 6; -pub const __NR_waitpid: u32 = 7; -pub const __NR_creat: u32 = 8; -pub const __NR_link: u32 = 9; -pub const __NR_unlink: u32 = 10; -pub const __NR_execve: u32 = 11; -pub const __NR_chdir: u32 = 12; -pub const __NR_time: u32 = 13; -pub const __NR_mknod: u32 = 14; -pub const __NR_chmod: u32 = 15; -pub const __NR_lchown: u32 = 16; -pub const __NR_break: u32 = 17; -pub const __NR_oldstat: u32 = 18; -pub const __NR_lseek: u32 = 19; -pub const __NR_getpid: u32 = 20; -pub const __NR_mount: u32 = 21; -pub const __NR_umount: u32 = 22; -pub const __NR_setuid: u32 = 23; -pub const __NR_getuid: u32 = 24; -pub const __NR_stime: u32 = 25; -pub const __NR_ptrace: u32 = 26; -pub const __NR_alarm: u32 = 27; -pub const __NR_oldfstat: u32 = 28; -pub const __NR_pause: u32 = 29; -pub const __NR_utime: u32 = 30; -pub const __NR_stty: u32 = 31; -pub const __NR_gtty: u32 = 32; -pub const __NR_access: u32 = 33; -pub const __NR_nice: u32 = 34; -pub const __NR_ftime: u32 = 35; -pub const __NR_sync: u32 = 36; -pub const __NR_kill: u32 = 37; -pub const __NR_rename: u32 = 38; -pub const __NR_mkdir: u32 = 39; -pub const __NR_rmdir: u32 = 40; -pub const __NR_dup: u32 = 41; -pub const __NR_pipe: u32 = 42; -pub const __NR_times: u32 = 43; -pub const __NR_prof: u32 = 44; -pub const __NR_brk: u32 = 45; -pub const __NR_setgid: u32 = 46; -pub const __NR_getgid: u32 = 47; -pub const __NR_signal: u32 = 48; -pub const __NR_geteuid: u32 = 49; -pub const __NR_getegid: u32 = 50; -pub const __NR_acct: u32 = 51; -pub const __NR_umount2: u32 = 52; -pub const __NR_lock: u32 = 53; -pub const __NR_ioctl: u32 = 54; -pub const __NR_fcntl: u32 = 55; -pub const __NR_mpx: u32 = 56; -pub const __NR_setpgid: u32 = 57; -pub const __NR_ulimit: u32 = 58; -pub const __NR_oldolduname: u32 = 59; -pub const __NR_umask: u32 = 60; -pub const __NR_chroot: u32 = 61; -pub const __NR_ustat: u32 = 62; -pub const __NR_dup2: u32 = 63; -pub const __NR_getppid: u32 = 64; -pub const __NR_getpgrp: u32 = 65; -pub const __NR_setsid: u32 = 66; -pub const __NR_sigaction: u32 = 67; -pub const __NR_sgetmask: u32 = 68; -pub const __NR_ssetmask: u32 = 69; -pub const __NR_setreuid: u32 = 70; -pub const __NR_setregid: u32 = 71; -pub const __NR_sigsuspend: u32 = 72; -pub const __NR_sigpending: u32 = 73; -pub const __NR_sethostname: u32 = 74; -pub const __NR_setrlimit: u32 = 75; -pub const __NR_getrlimit: u32 = 76; -pub const __NR_getrusage: u32 = 77; -pub const __NR_gettimeofday: u32 = 78; -pub const __NR_settimeofday: u32 = 79; -pub const __NR_getgroups: u32 = 80; -pub const __NR_setgroups: u32 = 81; -pub const __NR_select: u32 = 82; -pub const __NR_symlink: u32 = 83; -pub const __NR_oldlstat: u32 = 84; -pub const __NR_readlink: u32 = 85; -pub const __NR_uselib: u32 = 86; -pub const __NR_swapon: u32 = 87; -pub const __NR_reboot: u32 = 88; -pub const __NR_readdir: u32 = 89; -pub const __NR_mmap: u32 = 90; -pub const __NR_munmap: u32 = 91; -pub const __NR_truncate: u32 = 92; -pub const __NR_ftruncate: u32 = 93; -pub const __NR_fchmod: u32 = 94; -pub const __NR_fchown: u32 = 95; -pub const __NR_getpriority: u32 = 96; -pub const __NR_setpriority: u32 = 97; -pub const __NR_profil: u32 = 98; -pub const __NR_statfs: u32 = 99; -pub const __NR_fstatfs: u32 = 100; -pub const __NR_ioperm: u32 = 101; -pub const __NR_socketcall: u32 = 102; -pub const __NR_syslog: u32 = 103; -pub const __NR_setitimer: u32 = 104; -pub const __NR_getitimer: u32 = 105; -pub const __NR_stat: u32 = 106; -pub const __NR_lstat: u32 = 107; -pub const __NR_fstat: u32 = 108; -pub const __NR_olduname: u32 = 109; -pub const __NR_iopl: u32 = 110; -pub const __NR_vhangup: u32 = 111; -pub const __NR_idle: u32 = 112; -pub const __NR_vm86: u32 = 113; -pub const __NR_wait4: u32 = 114; -pub const __NR_swapoff: u32 = 115; -pub const __NR_sysinfo: u32 = 116; -pub const __NR_ipc: u32 = 117; -pub const __NR_fsync: u32 = 118; -pub const __NR_sigreturn: u32 = 119; -pub const __NR_clone: u32 = 120; -pub const __NR_setdomainname: u32 = 121; -pub const __NR_uname: u32 = 122; -pub const __NR_modify_ldt: u32 = 123; -pub const __NR_adjtimex: u32 = 124; -pub const __NR_mprotect: u32 = 125; -pub const __NR_sigprocmask: u32 = 126; -pub const __NR_create_module: u32 = 127; -pub const __NR_init_module: u32 = 128; -pub const __NR_delete_module: u32 = 129; -pub const __NR_get_kernel_syms: u32 = 130; -pub const __NR_quotactl: u32 = 131; -pub const __NR_getpgid: u32 = 132; -pub const __NR_fchdir: u32 = 133; -pub const __NR_bdflush: u32 = 134; -pub const __NR_sysfs: u32 = 135; -pub const __NR_personality: u32 = 136; -pub const __NR_afs_syscall: u32 = 137; -pub const __NR_setfsuid: u32 = 138; -pub const __NR_setfsgid: u32 = 139; -pub const __NR__llseek: u32 = 140; -pub const __NR_getdents: u32 = 141; -pub const __NR__newselect: u32 = 142; -pub const __NR_flock: u32 = 143; -pub const __NR_msync: u32 = 144; -pub const __NR_readv: u32 = 145; -pub const __NR_writev: u32 = 146; -pub const __NR_getsid: u32 = 147; -pub const __NR_fdatasync: u32 = 148; -pub const __NR__sysctl: u32 = 149; -pub const __NR_mlock: u32 = 150; -pub const __NR_munlock: u32 = 151; -pub const __NR_mlockall: u32 = 152; -pub const __NR_munlockall: u32 = 153; -pub const __NR_sched_setparam: u32 = 154; -pub const __NR_sched_getparam: u32 = 155; -pub const __NR_sched_setscheduler: u32 = 156; -pub const __NR_sched_getscheduler: u32 = 157; -pub const __NR_sched_yield: u32 = 158; -pub const __NR_sched_get_priority_max: u32 = 159; -pub const __NR_sched_get_priority_min: u32 = 160; -pub const __NR_sched_rr_get_interval: u32 = 161; -pub const __NR_nanosleep: u32 = 162; -pub const __NR_mremap: u32 = 163; -pub const __NR_setresuid: u32 = 164; -pub const __NR_getresuid: u32 = 165; -pub const __NR_query_module: u32 = 166; -pub const __NR_poll: u32 = 167; -pub const __NR_nfsservctl: u32 = 168; -pub const __NR_setresgid: u32 = 169; -pub const __NR_getresgid: u32 = 170; -pub const __NR_prctl: u32 = 171; -pub const __NR_rt_sigreturn: u32 = 172; -pub const __NR_rt_sigaction: u32 = 173; -pub const __NR_rt_sigprocmask: u32 = 174; -pub const __NR_rt_sigpending: u32 = 175; -pub const __NR_rt_sigtimedwait: u32 = 176; -pub const __NR_rt_sigqueueinfo: u32 = 177; -pub const __NR_rt_sigsuspend: u32 = 178; -pub const __NR_pread64: u32 = 179; -pub const __NR_pwrite64: u32 = 180; -pub const __NR_chown: u32 = 181; -pub const __NR_getcwd: u32 = 182; -pub const __NR_capget: u32 = 183; -pub const __NR_capset: u32 = 184; -pub const __NR_sigaltstack: u32 = 185; -pub const __NR_sendfile: u32 = 186; -pub const __NR_getpmsg: u32 = 187; -pub const __NR_putpmsg: u32 = 188; -pub const __NR_vfork: u32 = 189; -pub const __NR_ugetrlimit: u32 = 190; -pub const __NR_readahead: u32 = 191; -pub const __NR_mmap2: u32 = 192; -pub const __NR_truncate64: u32 = 193; -pub const __NR_ftruncate64: u32 = 194; -pub const __NR_stat64: u32 = 195; -pub const __NR_lstat64: u32 = 196; -pub const __NR_fstat64: u32 = 197; -pub const __NR_pciconfig_read: u32 = 198; -pub const __NR_pciconfig_write: u32 = 199; -pub const __NR_pciconfig_iobase: u32 = 200; -pub const __NR_multiplexer: u32 = 201; -pub const __NR_getdents64: u32 = 202; -pub const __NR_pivot_root: u32 = 203; -pub const __NR_fcntl64: u32 = 204; -pub const __NR_madvise: u32 = 205; -pub const __NR_mincore: u32 = 206; -pub const __NR_gettid: u32 = 207; -pub const __NR_tkill: u32 = 208; -pub const __NR_setxattr: u32 = 209; -pub const __NR_lsetxattr: u32 = 210; -pub const __NR_fsetxattr: u32 = 211; -pub const __NR_getxattr: u32 = 212; -pub const __NR_lgetxattr: u32 = 213; -pub const __NR_fgetxattr: u32 = 214; -pub const __NR_listxattr: u32 = 215; -pub const __NR_llistxattr: u32 = 216; -pub const __NR_flistxattr: u32 = 217; -pub const __NR_removexattr: u32 = 218; -pub const __NR_lremovexattr: u32 = 219; -pub const __NR_fremovexattr: u32 = 220; -pub const __NR_futex: u32 = 221; -pub const __NR_sched_setaffinity: u32 = 222; -pub const __NR_sched_getaffinity: u32 = 223; -pub const __NR_tuxcall: u32 = 225; -pub const __NR_sendfile64: u32 = 226; -pub const __NR_io_setup: u32 = 227; -pub const __NR_io_destroy: u32 = 228; -pub const __NR_io_getevents: u32 = 229; -pub const __NR_io_submit: u32 = 230; -pub const __NR_io_cancel: u32 = 231; -pub const __NR_set_tid_address: u32 = 232; -pub const __NR_fadvise64: u32 = 233; -pub const __NR_exit_group: u32 = 234; -pub const __NR_lookup_dcookie: u32 = 235; -pub const __NR_epoll_create: u32 = 236; -pub const __NR_epoll_ctl: u32 = 237; -pub const __NR_epoll_wait: u32 = 238; -pub const __NR_remap_file_pages: u32 = 239; -pub const __NR_timer_create: u32 = 240; -pub const __NR_timer_settime: u32 = 241; -pub const __NR_timer_gettime: u32 = 242; -pub const __NR_timer_getoverrun: u32 = 243; -pub const __NR_timer_delete: u32 = 244; -pub const __NR_clock_settime: u32 = 245; -pub const __NR_clock_gettime: u32 = 246; -pub const __NR_clock_getres: u32 = 247; -pub const __NR_clock_nanosleep: u32 = 248; -pub const __NR_swapcontext: u32 = 249; -pub const __NR_tgkill: u32 = 250; -pub const __NR_utimes: u32 = 251; -pub const __NR_statfs64: u32 = 252; -pub const __NR_fstatfs64: u32 = 253; -pub const __NR_fadvise64_64: u32 = 254; -pub const __NR_rtas: u32 = 255; -pub const __NR_sys_debug_setcontext: u32 = 256; -pub const __NR_migrate_pages: u32 = 258; -pub const __NR_mbind: u32 = 259; -pub const __NR_get_mempolicy: u32 = 260; -pub const __NR_set_mempolicy: u32 = 261; -pub const __NR_mq_open: u32 = 262; -pub const __NR_mq_unlink: u32 = 263; -pub const __NR_mq_timedsend: u32 = 264; -pub const __NR_mq_timedreceive: u32 = 265; -pub const __NR_mq_notify: u32 = 266; -pub const __NR_mq_getsetattr: u32 = 267; -pub const __NR_kexec_load: u32 = 268; -pub const __NR_add_key: u32 = 269; -pub const __NR_request_key: u32 = 270; -pub const __NR_keyctl: u32 = 271; -pub const __NR_waitid: u32 = 272; -pub const __NR_ioprio_set: u32 = 273; -pub const __NR_ioprio_get: u32 = 274; -pub const __NR_inotify_init: u32 = 275; -pub const __NR_inotify_add_watch: u32 = 276; -pub const __NR_inotify_rm_watch: u32 = 277; -pub const __NR_spu_run: u32 = 278; -pub const __NR_spu_create: u32 = 279; -pub const __NR_pselect6: u32 = 280; -pub const __NR_ppoll: u32 = 281; -pub const __NR_unshare: u32 = 282; -pub const __NR_splice: u32 = 283; -pub const __NR_tee: u32 = 284; -pub const __NR_vmsplice: u32 = 285; -pub const __NR_openat: u32 = 286; -pub const __NR_mkdirat: u32 = 287; -pub const __NR_mknodat: u32 = 288; -pub const __NR_fchownat: u32 = 289; -pub const __NR_futimesat: u32 = 290; -pub const __NR_fstatat64: u32 = 291; -pub const __NR_unlinkat: u32 = 292; -pub const __NR_renameat: u32 = 293; -pub const __NR_linkat: u32 = 294; -pub const __NR_symlinkat: u32 = 295; -pub const __NR_readlinkat: u32 = 296; -pub const __NR_fchmodat: u32 = 297; -pub const __NR_faccessat: u32 = 298; -pub const __NR_get_robust_list: u32 = 299; -pub const __NR_set_robust_list: u32 = 300; -pub const __NR_move_pages: u32 = 301; -pub const __NR_getcpu: u32 = 302; -pub const __NR_epoll_pwait: u32 = 303; -pub const __NR_utimensat: u32 = 304; -pub const __NR_signalfd: u32 = 305; -pub const __NR_timerfd_create: u32 = 306; -pub const __NR_eventfd: u32 = 307; -pub const __NR_sync_file_range2: u32 = 308; -pub const __NR_fallocate: u32 = 309; -pub const __NR_subpage_prot: u32 = 310; -pub const __NR_timerfd_settime: u32 = 311; -pub const __NR_timerfd_gettime: u32 = 312; -pub const __NR_signalfd4: u32 = 313; -pub const __NR_eventfd2: u32 = 314; -pub const __NR_epoll_create1: u32 = 315; -pub const __NR_dup3: u32 = 316; -pub const __NR_pipe2: u32 = 317; -pub const __NR_inotify_init1: u32 = 318; -pub const __NR_perf_event_open: u32 = 319; -pub const __NR_preadv: u32 = 320; -pub const __NR_pwritev: u32 = 321; -pub const __NR_rt_tgsigqueueinfo: u32 = 322; -pub const __NR_fanotify_init: u32 = 323; -pub const __NR_fanotify_mark: u32 = 324; -pub const __NR_prlimit64: u32 = 325; -pub const __NR_socket: u32 = 326; -pub const __NR_bind: u32 = 327; -pub const __NR_connect: u32 = 328; -pub const __NR_listen: u32 = 329; -pub const __NR_accept: u32 = 330; -pub const __NR_getsockname: u32 = 331; -pub const __NR_getpeername: u32 = 332; -pub const __NR_socketpair: u32 = 333; -pub const __NR_send: u32 = 334; -pub const __NR_sendto: u32 = 335; -pub const __NR_recv: u32 = 336; -pub const __NR_recvfrom: u32 = 337; -pub const __NR_shutdown: u32 = 338; -pub const __NR_setsockopt: u32 = 339; -pub const __NR_getsockopt: u32 = 340; -pub const __NR_sendmsg: u32 = 341; -pub const __NR_recvmsg: u32 = 342; -pub const __NR_recvmmsg: u32 = 343; -pub const __NR_accept4: u32 = 344; -pub const __NR_name_to_handle_at: u32 = 345; -pub const __NR_open_by_handle_at: u32 = 346; -pub const __NR_clock_adjtime: u32 = 347; -pub const __NR_syncfs: u32 = 348; -pub const __NR_sendmmsg: u32 = 349; -pub const __NR_setns: u32 = 350; -pub const __NR_process_vm_readv: u32 = 351; -pub const __NR_process_vm_writev: u32 = 352; -pub const __NR_finit_module: u32 = 353; -pub const __NR_kcmp: u32 = 354; -pub const __NR_sched_setattr: u32 = 355; -pub const __NR_sched_getattr: u32 = 356; -pub const __NR_renameat2: u32 = 357; -pub const __NR_seccomp: u32 = 358; -pub const __NR_getrandom: u32 = 359; -pub const __NR_memfd_create: u32 = 360; -pub const __NR_bpf: u32 = 361; -pub const __NR_execveat: u32 = 362; -pub const __NR_switch_endian: u32 = 363; -pub const __NR_userfaultfd: u32 = 364; -pub const __NR_membarrier: u32 = 365; -pub const __NR_mlock2: u32 = 378; -pub const __NR_copy_file_range: u32 = 379; -pub const __NR_preadv2: u32 = 380; -pub const __NR_pwritev2: u32 = 381; -pub const __NR_kexec_file_load: u32 = 382; -pub const __NR_statx: u32 = 383; -pub const __NR_pkey_alloc: u32 = 384; -pub const __NR_pkey_free: u32 = 385; -pub const __NR_pkey_mprotect: u32 = 386; -pub const __NR_rseq: u32 = 387; -pub const __NR_io_pgetevents: u32 = 388; -pub const __NR_semget: u32 = 393; -pub const __NR_semctl: u32 = 394; -pub const __NR_shmget: u32 = 395; -pub const __NR_shmctl: u32 = 396; -pub const __NR_shmat: u32 = 397; -pub const __NR_shmdt: u32 = 398; -pub const __NR_msgget: u32 = 399; -pub const __NR_msgsnd: u32 = 400; -pub const __NR_msgrcv: u32 = 401; -pub const __NR_msgctl: u32 = 402; -pub const __NR_clock_gettime64: u32 = 403; -pub const __NR_clock_settime64: u32 = 404; -pub const __NR_clock_adjtime64: u32 = 405; -pub const __NR_clock_getres_time64: u32 = 406; -pub const __NR_clock_nanosleep_time64: u32 = 407; -pub const __NR_timer_gettime64: u32 = 408; -pub const __NR_timer_settime64: u32 = 409; -pub const __NR_timerfd_gettime64: u32 = 410; -pub const __NR_timerfd_settime64: u32 = 411; -pub const __NR_utimensat_time64: u32 = 412; -pub const __NR_pselect6_time64: u32 = 413; -pub const __NR_ppoll_time64: u32 = 414; -pub const __NR_io_pgetevents_time64: u32 = 416; -pub const __NR_recvmmsg_time64: u32 = 417; -pub const __NR_mq_timedsend_time64: u32 = 418; -pub const __NR_mq_timedreceive_time64: u32 = 419; -pub const __NR_semtimedop_time64: u32 = 420; -pub const __NR_rt_sigtimedwait_time64: u32 = 421; -pub const __NR_futex_time64: u32 = 422; -pub const __NR_sched_rr_get_interval_time64: u32 = 423; -pub const __NR_pidfd_send_signal: u32 = 424; -pub const __NR_io_uring_setup: u32 = 425; -pub const __NR_io_uring_enter: u32 = 426; -pub const __NR_io_uring_register: u32 = 427; -pub const __NR_open_tree: u32 = 428; -pub const __NR_move_mount: u32 = 429; -pub const __NR_fsopen: u32 = 430; -pub const __NR_fsconfig: u32 = 431; -pub const __NR_fsmount: u32 = 432; -pub const __NR_fspick: u32 = 433; -pub const __NR_pidfd_open: u32 = 434; -pub const __NR_clone3: u32 = 435; -pub const __NR_close_range: u32 = 436; -pub const __NR_openat2: u32 = 437; -pub const __NR_pidfd_getfd: u32 = 438; -pub const __NR_faccessat2: u32 = 439; -pub const __NR_process_madvise: u32 = 440; -pub const __NR_epoll_pwait2: u32 = 441; -pub const __NR_mount_setattr: u32 = 442; -pub const __NR_quotactl_fd: u32 = 443; -pub const __NR_landlock_create_ruleset: u32 = 444; -pub const __NR_landlock_add_rule: u32 = 445; -pub const __NR_landlock_restrict_self: u32 = 446; -pub const __NR_process_mrelease: u32 = 448; -pub const __NR_futex_waitv: u32 = 449; -pub const __NR_set_mempolicy_home_node: u32 = 450; -pub const __OLD_UTS_LEN: u32 = 8; -pub const __NEW_UTS_LEN: u32 = 64; -pub const WNOHANG: u32 = 1; -pub const WUNTRACED: u32 = 2; -pub const WSTOPPED: u32 = 2; -pub const WEXITED: u32 = 4; -pub const WCONTINUED: u32 = 8; -pub const WNOWAIT: u32 = 16777216; -pub const __WNOTHREAD: u32 = 536870912; -pub const __WALL: u32 = 1073741824; -pub const __WCLONE: u32 = 2147483648; -pub const P_ALL: u32 = 0; -pub const P_PID: u32 = 1; -pub const P_PGID: u32 = 2; -pub const P_PIDFD: u32 = 3; -pub const XATTR_CREATE: u32 = 1; -pub const XATTR_REPLACE: u32 = 2; -pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0"; -pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0"; -pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0"; -pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0"; -pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0"; -pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0"; -pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0"; -pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0"; -pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0"; -pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0"; -pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0"; -pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0"; -pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0"; -pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0"; -pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0"; -pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0"; -pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0"; -pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0"; -pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0"; -pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0"; -pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0"; -pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0"; -pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0"; -pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0"; -pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0"; -pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0"; -pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0"; -pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0"; -pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0"; -pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0"; -pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0"; -pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0"; -pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0"; -pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0"; -pub const MFD_CLOEXEC: u32 = 1; -pub const MFD_ALLOW_SEALING: u32 = 2; -pub const MFD_HUGETLB: u32 = 4; -pub const MFD_NOEXEC_SEAL: u32 = 8; -pub const MFD_EXEC: u32 = 16; -pub const MFD_HUGE_SHIFT: u32 = 26; -pub const MFD_HUGE_MASK: u32 = 63; -pub const MFD_HUGE_64KB: u32 = 1073741824; -pub const MFD_HUGE_512KB: u32 = 1275068416; -pub const MFD_HUGE_1MB: u32 = 1342177280; -pub const MFD_HUGE_2MB: u32 = 1409286144; -pub const MFD_HUGE_8MB: u32 = 1543503872; -pub const MFD_HUGE_16MB: u32 = 1610612736; -pub const MFD_HUGE_32MB: u32 = 1677721600; -pub const MFD_HUGE_256MB: u32 = 1879048192; -pub const MFD_HUGE_512MB: u32 = 1946157056; -pub const MFD_HUGE_1GB: u32 = 2013265920; -pub const MFD_HUGE_2GB: u32 = 2080374784; -pub const MFD_HUGE_16GB: u32 = 2281701376; -pub const TFD_TIMER_ABSTIME: u32 = 1; -pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; -pub const TFD_CLOEXEC: u32 = 524288; -pub const TFD_NONBLOCK: u32 = 2048; -pub const USERFAULTFD_IOC: u32 = 170; -pub const _UFFDIO_REGISTER: u32 = 0; -pub const _UFFDIO_UNREGISTER: u32 = 1; -pub const _UFFDIO_WAKE: u32 = 2; -pub const _UFFDIO_COPY: u32 = 3; -pub const _UFFDIO_ZEROPAGE: u32 = 4; -pub const _UFFDIO_WRITEPROTECT: u32 = 6; -pub const _UFFDIO_CONTINUE: u32 = 7; -pub const _UFFDIO_API: u32 = 63; -pub const UFFDIO: u32 = 170; -pub const UFFD_EVENT_PAGEFAULT: u32 = 18; -pub const UFFD_EVENT_FORK: u32 = 19; -pub const UFFD_EVENT_REMAP: u32 = 20; -pub const UFFD_EVENT_REMOVE: u32 = 21; -pub const UFFD_EVENT_UNMAP: u32 = 22; -pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; -pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; -pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; -pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; -pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; -pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; -pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; -pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; -pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; -pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; -pub const UFFD_FEATURE_SIGBUS: u32 = 128; -pub const UFFD_FEATURE_THREAD_ID: u32 = 256; -pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; -pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; -pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; -pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; -pub const UFFD_USER_MODE_ONLY: u32 = 1; -pub const IORING_FILE_INDEX_ALLOC: i32 = -1; -pub const IORING_SETUP_IOPOLL: u32 = 1; -pub const IORING_SETUP_SQPOLL: u32 = 2; -pub const IORING_SETUP_SQ_AFF: u32 = 4; -pub const IORING_SETUP_CQSIZE: u32 = 8; -pub const IORING_SETUP_CLAMP: u32 = 16; -pub const IORING_SETUP_ATTACH_WQ: u32 = 32; -pub const IORING_SETUP_R_DISABLED: u32 = 64; -pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; -pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; -pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; -pub const IORING_SETUP_SQE128: u32 = 1024; -pub const IORING_SETUP_CQE32: u32 = 2048; -pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; -pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; -pub const IORING_URING_CMD_FIXED: u32 = 1; -pub const IORING_FSYNC_DATASYNC: u32 = 1; -pub const IORING_TIMEOUT_ABS: u32 = 1; -pub const IORING_TIMEOUT_UPDATE: u32 = 2; -pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; -pub const IORING_TIMEOUT_REALTIME: u32 = 8; -pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; -pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; -pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; -pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; -pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; -pub const IORING_POLL_ADD_MULTI: u32 = 1; -pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; -pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; -pub const IORING_POLL_ADD_LEVEL: u32 = 8; -pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; -pub const IORING_ASYNC_CANCEL_FD: u32 = 2; -pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; -pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; -pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; -pub const IORING_RECV_MULTISHOT: u32 = 2; -pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; -pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; -pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; -pub const IORING_ACCEPT_MULTISHOT: u32 = 1; -pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; -pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; -pub const IORING_CQE_F_BUFFER: u32 = 1; -pub const IORING_CQE_F_MORE: u32 = 2; -pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; -pub const IORING_CQE_F_NOTIF: u32 = 8; -pub const IORING_OFF_SQ_RING: u32 = 0; -pub const IORING_OFF_CQ_RING: u32 = 134217728; -pub const IORING_OFF_SQES: u32 = 268435456; -pub const IORING_SQ_NEED_WAKEUP: u32 = 1; -pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; -pub const IORING_SQ_TASKRUN: u32 = 4; -pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; -pub const IORING_ENTER_GETEVENTS: u32 = 1; -pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; -pub const IORING_ENTER_SQ_WAIT: u32 = 4; -pub const IORING_ENTER_EXT_ARG: u32 = 8; -pub const IORING_ENTER_REGISTERED_RING: u32 = 16; -pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; -pub const IORING_FEAT_NODROP: u32 = 2; -pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; -pub const IORING_FEAT_RW_CUR_POS: u32 = 8; -pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; -pub const IORING_FEAT_FAST_POLL: u32 = 32; -pub const IORING_FEAT_POLL_32BITS: u32 = 64; -pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; -pub const IORING_FEAT_EXT_ARG: u32 = 256; -pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; -pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; -pub const IORING_FEAT_CQE_SKIP: u32 = 2048; -pub const IORING_FEAT_LINKED_FILE: u32 = 4096; -pub const IORING_FEAT_REG_REG_RING: u32 = 8192; -pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; -pub const IORING_REGISTER_FILES_SKIP: i32 = -2; -pub const IO_URING_OP_SUPPORTED: u32 = 1; -pub const DT_UNKNOWN: u32 = 0; -pub const DT_FIFO: u32 = 1; -pub const DT_CHR: u32 = 2; -pub const DT_DIR: u32 = 4; -pub const DT_BLK: u32 = 6; -pub const DT_REG: u32 = 8; -pub const DT_LNK: u32 = 10; -pub const DT_SOCK: u32 = 12; -pub const SHUT_RD: u32 = 0; -pub const SHUT_WR: u32 = 1; -pub const SHUT_RDWR: u32 = 2; -pub const STAT_HAVE_NSEC: u32 = 1; -pub const SOCK_STREAM: u32 = 1; -pub const SOCK_DGRAM: u32 = 2; -pub const SOCK_RAW: u32 = 3; -pub const SOCK_RDM: u32 = 4; -pub const SOCK_SEQPACKET: u32 = 5; -pub const F_OK: u32 = 0; -pub const R_OK: u32 = 4; -pub const W_OK: u32 = 2; -pub const X_OK: u32 = 1; -pub const UTIME_NOW: u32 = 1073741823; -pub const UTIME_OMIT: u32 = 1073741822; -pub const MSG_DONTWAIT: u32 = 64; -pub const AF_UNSPEC: u32 = 0; -pub const AF_UNIX: u32 = 1; -pub const AF_INET: u32 = 2; -pub const AF_AX25: u32 = 3; -pub const AF_IPX: u32 = 4; -pub const AF_APPLETALK: u32 = 5; -pub const AF_NETROM: u32 = 6; -pub const AF_BRIDGE: u32 = 7; -pub const AF_ATMPVC: u32 = 8; -pub const AF_X25: u32 = 9; -pub const AF_INET6: u32 = 10; -pub const AF_ROSE: u32 = 11; -pub const AF_DECnet: u32 = 12; -pub const AF_NETBEUI: u32 = 13; -pub const AF_SECURITY: u32 = 14; -pub const AF_KEY: u32 = 15; -pub const AF_NETLINK: u32 = 16; -pub const AF_PACKET: u32 = 17; -pub const AF_ASH: u32 = 18; -pub const AF_ECONET: u32 = 19; -pub const AF_ATMSVC: u32 = 20; -pub const AF_RDS: u32 = 21; -pub const AF_SNA: u32 = 22; -pub const AF_IRDA: u32 = 23; -pub const AF_PPPOX: u32 = 24; -pub const AF_WANPIPE: u32 = 25; -pub const AF_LLC: u32 = 26; -pub const AF_CAN: u32 = 29; -pub const AF_TIPC: u32 = 30; -pub const AF_BLUETOOTH: u32 = 31; -pub const AF_IUCV: u32 = 32; -pub const AF_RXRPC: u32 = 33; -pub const AF_ISDN: u32 = 34; -pub const AF_PHONET: u32 = 35; -pub const AF_IEEE802154: u32 = 36; -pub const AF_MAX: u32 = 37; -pub const MSG_OOB: u32 = 1; -pub const MSG_PEEK: u32 = 2; -pub const MSG_DONTROUTE: u32 = 4; -pub const MSG_CTRUNC: u32 = 8; -pub const MSG_PROBE: u32 = 16; -pub const MSG_TRUNC: u32 = 32; -pub const MSG_EOR: u32 = 128; -pub const MSG_WAITALL: u32 = 256; -pub const MSG_FIN: u32 = 512; -pub const MSG_SYN: u32 = 1024; -pub const MSG_CONFIRM: u32 = 2048; -pub const MSG_RST: u32 = 4096; -pub const MSG_ERRQUEUE: u32 = 8192; -pub const MSG_NOSIGNAL: u32 = 16384; -pub const MSG_MORE: u32 = 32768; -pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; -pub const STDIN_FILENO: u32 = 0; -pub const STDOUT_FILENO: u32 = 1; -pub const STDERR_FILENO: u32 = 2; -pub const RWF_HIPRI: u32 = 1; -pub const RWF_DSYNC: u32 = 2; -pub const RWF_SYNC: u32 = 4; -pub const RWF_NOWAIT: u32 = 8; -pub const RWF_APPEND: u32 = 16; -pub const EFD_SEMAPHORE: u32 = 1; -pub const EFD_CLOEXEC: u32 = 524288; -pub const EFD_NONBLOCK: u32 = 2048; -pub const EPOLLIN: u32 = 1; -pub const EPOLLPRI: u32 = 2; -pub const EPOLLOUT: u32 = 4; -pub const EPOLLERR: u32 = 8; -pub const EPOLLHUP: u32 = 16; -pub const EPOLLNVAL: u32 = 32; -pub const EPOLLRDNORM: u32 = 64; -pub const EPOLLRDBAND: u32 = 128; -pub const EPOLLWRNORM: u32 = 256; -pub const EPOLLWRBAND: u32 = 512; -pub const EPOLLMSG: u32 = 1024; -pub const EPOLLRDHUP: u32 = 8192; -pub const EPOLLEXCLUSIVE: u32 = 268435456; -pub const EPOLLWAKEUP: u32 = 536870912; -pub const EPOLLONESHOT: u32 = 1073741824; -pub const EPOLLET: u32 = 2147483648; -pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; -pub const TFD_CREATE_FLAGS: u32 = 526336; -pub const TFD_SETTIME_FLAGS: u32 = 1; -pub const SCM_RIGHTS: u32 = 1; -pub const SCM_CREDENTIALS: u32 = 2; -pub const SCM_SECURITY: u32 = 3; -pub const UFFD_API: u32 = 170; -pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; -pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; -pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; -pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; -pub const UFFDIO_COPY_MODE_WP: u32 = 2; -pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; -pub const SPLICE_F_MOVE: u32 = 1; -pub const SPLICE_F_NONBLOCK: u32 = 2; -pub const SPLICE_F_MORE: u32 = 4; -pub const SPLICE_F_GIFT: u32 = 8; -pub const MNT_FORCE: u32 = 1; -pub const MNT_DETACH: u32 = 2; -pub const MNT_EXPIRE: u32 = 4; -pub const UMOUNT_NOFOLLOW: u32 = 8; -pub const UMOUNT_UNUSED: u32 = 2147483648; -pub type size_t = crate::ctypes::c_uint; -pub type ssize_t = crate::ctypes::c_int; -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; -#[repr(C)] -#[repr(align(16))] -#[derive(Debug, Copy, Clone)] -pub struct __vector128 { -pub u: [__u32; 4usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 32usize], -} -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_short; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_old_dev_t = crate::ctypes::c_uint; -pub type __kernel_size_t = crate::ctypes::c_uint; -pub type __kernel_ssize_t = crate::ctypes::c_int; -pub type __kernel_ptrdiff_t = crate::ctypes::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_header_struct { -pub version: __u32, -pub pid: crate::ctypes::c_int, -} -pub type cap_user_header_t = *mut __user_cap_header_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_data_struct { -pub effective: __u32, -pub permitted: __u32, -pub inheritable: __u32, -} -pub type cap_user_data_t = *mut __user_cap_data_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data { -pub magic_etc: __le32, -pub data: [vfs_cap_data__bindgen_ty_1; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data { -pub magic_etc: __le32, -pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], -pub rootid: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct f_owner_ex { -pub type_: crate::ctypes::c_int, -pub pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_off_t, -pub l_len: __kernel_off_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock64 { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_loff_t, -pub l_len: __kernel_loff_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct open_how { -pub flags: __u64, -pub mode: __u64, -pub resolve: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct epoll_event { -pub events: __poll_t, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v1 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub master_key_descriptor: [__u8; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_key { -pub mode: __u32, -pub raw: [__u8; 64usize], -pub size: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v2 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub __reserved: [__u8; 4usize], -pub master_key_identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_get_policy_ex_arg { -pub policy_size: __u64, -pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { -pub version: __u8, -pub v1: fscrypt_policy_v1, -pub v2: fscrypt_policy_v2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_key_specifier { -pub type_: __u32, -pub __reserved: __u32, -pub u: fscrypt_key_specifier__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_key_specifier__bindgen_ty_1 { -pub __reserved: [__u8; 32usize], -pub descriptor: [__u8; 8usize], -pub identifier: [__u8; 16usize], +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, } #[repr(C)] #[derive(Debug)] @@ -2902,19 +236,6 @@ pub user_count: __u32, pub __out_reserved: [__u32; 13usize], } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum fsconfig_command { -FSCONFIG_SET_FLAG = 0, -FSCONFIG_SET_STRING = 1, -FSCONFIG_SET_BINARY = 2, -FSCONFIG_SET_PATH = 3, -FSCONFIG_SET_PATH_EMPTY = 4, -FSCONFIG_SET_FD = 5, -FSCONFIG_CMD_CREATE = 6, -FSCONFIG_CMD_RECONFIGURE = 7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct mount_attr { @@ -2981,7 +302,6 @@ pub fsx_cowextsize: __u32, pub fsx_pad: [crate::ctypes::c_uchar; 8usize], } -pub type __kernel_rwf_t = crate::ctypes::c_int; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct futex_waitv { @@ -3002,190 +322,6 @@ pub futex_offset: crate::ctypes::c_long, pub list_op_pending: *mut robust_list, } -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], -} -pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; -pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; -pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; -pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; -pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; -pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; -pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; -pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; -pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; -pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; -pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; -pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; -pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; -pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; -pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; -pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; -pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; -pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; -pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; -pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; -pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; -pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; -pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; -pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; -pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; -pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; -pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; -pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; -pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_1 { -IPPROTO_IP = 0, -IPPROTO_ICMP = 1, -IPPROTO_IGMP = 2, -IPPROTO_IPIP = 4, -IPPROTO_TCP = 6, -IPPROTO_EGP = 8, -IPPROTO_PUP = 12, -IPPROTO_UDP = 17, -IPPROTO_IDP = 22, -IPPROTO_TP = 29, -IPPROTO_DCCP = 33, -IPPROTO_IPV6 = 41, -IPPROTO_RSVP = 46, -IPPROTO_GRE = 47, -IPPROTO_ESP = 50, -IPPROTO_AH = 51, -IPPROTO_MTP = 92, -IPPROTO_BEETPH = 94, -IPPROTO_ENCAP = 98, -IPPROTO_PIM = 103, -IPPROTO_COMP = 108, -IPPROTO_L2TP = 115, -IPPROTO_SCTP = 132, -IPPROTO_UDPLITE = 136, -IPPROTO_MPLS = 137, -IPPROTO_ETHERNET = 143, -IPPROTO_RAW = 255, -IPPROTO_MPTCP = 262, -IPPROTO_MAX = 263, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_addr { -pub s_addr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq { -pub imr_multiaddr: in_addr, -pub imr_interface: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreqn { -pub imr_multiaddr: in_addr, -pub imr_address: in_addr, -pub imr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq_source { -pub imr_multiaddr: __be32, -pub imr_interface: __be32, -pub imr_sourceaddr: __be32, -} -#[repr(C)] -pub struct ip_msfilter { -pub imsf_multiaddr: __be32, -pub imsf_interface: __be32, -pub imsf_fmode: __u32, -pub imsf_numsrc: __u32, -pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, -} -#[repr(C)] -pub struct ip_msfilter__bindgen_ty_1 { -pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, -pub __bindgen_anon_1: __BindgenUnionField, -pub bindgen_union_field: u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { -pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -pub imsf_slist_flex: __IncompleteArrayField<__be32>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_req { -pub gr_interface: __u32, -pub gr_group: __kernel_sockaddr_storage, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_source_req { -pub gsr_interface: __u32, -pub gsr_group: __kernel_sockaddr_storage, -pub gsr_source: __kernel_sockaddr_storage, -} -#[repr(C)] -pub struct group_filter { -pub __bindgen_anon_1: group_filter__bindgen_ty_1, -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u32; 67usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { -pub gf_interface_aux: __u32, -pub gf_group_aux: __kernel_sockaddr_storage, -pub gf_fmode_aux: __u32, -pub gf_numsrc_aux: __u32, -pub gf_slist: [__kernel_sockaddr_storage; 1usize], -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { -pub gf_interface: __u32, -pub gf_group: __kernel_sockaddr_storage, -pub gf_fmode: __u32, -pub gf_numsrc: __u32, -pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_pktinfo { -pub ipi_ifindex: crate::ctypes::c_int, -pub ipi_spec_dst: in_addr, -pub ipi_addr: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_in { -pub sin_family: __kernel_sa_family_t, -pub sin_port: __be16, -pub sin_addr: in_addr, -pub __pad: [crate::ctypes::c_uchar; 8usize], -} #[repr(C)] #[derive(Debug)] pub struct inotify_event { @@ -3196,471 +332,6 @@ pub name: __IncompleteArrayField, } #[repr(C)] -#[derive(Copy, Clone)] -pub struct iphdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub tos: __u8, -pub tot_len: __be16, -pub id: __be16, -pub frag_off: __be16, -pub ttl: __u8, -pub protocol: __u8, -pub check: __sum16, -pub __bindgen_anon_1: iphdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union iphdr__bindgen_ty_1 { -pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: __be32, -pub daddr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: __be32, -pub daddr: __be32, -} -impl iphdr { -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn ihl(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_ihl(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; -ihl as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_auth_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub reserved: __be16, -pub spi: __be32, -pub seq_no: __be32, -pub auth_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_esp_hdr { -pub spi: __be32, -pub seq_no: __be32, -pub enc_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_comp_hdr { -pub nexthdr: __u8, -pub flags: __u8, -pub cpi: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_beet_phdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub padlen: __u8, -pub reserved: __u8, -} -pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; -pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; -pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; -pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; -pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; -pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; -pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; -pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; -pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; -pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; -pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; -pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; -pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; -pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; -pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; -pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; -pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; -pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; -pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; -pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; -pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; -pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; -pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; -pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; -pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; -pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; -pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; -pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; -pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_2 { -IPV4_DEVCONF_FORWARDING = 1, -IPV4_DEVCONF_MC_FORWARDING = 2, -IPV4_DEVCONF_PROXY_ARP = 3, -IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, -IPV4_DEVCONF_SECURE_REDIRECTS = 5, -IPV4_DEVCONF_SEND_REDIRECTS = 6, -IPV4_DEVCONF_SHARED_MEDIA = 7, -IPV4_DEVCONF_RP_FILTER = 8, -IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, -IPV4_DEVCONF_BOOTP_RELAY = 10, -IPV4_DEVCONF_LOG_MARTIANS = 11, -IPV4_DEVCONF_TAG = 12, -IPV4_DEVCONF_ARPFILTER = 13, -IPV4_DEVCONF_MEDIUM_ID = 14, -IPV4_DEVCONF_NOXFRM = 15, -IPV4_DEVCONF_NOPOLICY = 16, -IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, -IPV4_DEVCONF_ARP_ANNOUNCE = 18, -IPV4_DEVCONF_ARP_IGNORE = 19, -IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, -IPV4_DEVCONF_ARP_ACCEPT = 21, -IPV4_DEVCONF_ARP_NOTIFY = 22, -IPV4_DEVCONF_ACCEPT_LOCAL = 23, -IPV4_DEVCONF_SRC_VMARK = 24, -IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, -IPV4_DEVCONF_ROUTE_LOCALNET = 26, -IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, -IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, -IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, -IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, -IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, -IPV4_DEVCONF_BC_FORWARDING = 32, -IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, -__IPV4_DEVCONF_MAX = 34, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_addr { -pub in6_u: in6_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union in6_addr__bindgen_ty_1 { -pub u6_addr8: [__u8; 16usize], -pub u6_addr16: [__be16; 8usize], -pub u6_addr32: [__be32; 4usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_in6 { -pub sin6_family: crate::ctypes::c_ushort, -pub sin6_port: __be16, -pub sin6_flowinfo: __be32, -pub sin6_addr: in6_addr, -pub sin6_scope_id: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6_mreq { -pub ipv6mr_multiaddr: in6_addr, -pub ipv6mr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_flowlabel_req { -pub flr_dst: in6_addr, -pub flr_label: __be32, -pub flr_action: __u8, -pub flr_share: __u8, -pub flr_flags: __u16, -pub flr_expires: __u16, -pub flr_linger: __u16, -pub __flr_pad: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_pktinfo { -pub ipi6_addr: in6_addr, -pub ipi6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ip6_mtuinfo { -pub ip6m_addr: sockaddr_in6, -pub ip6m_mtu: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_ifreq { -pub ifr6_addr: in6_addr, -pub ifr6_prefixlen: __u32, -pub ifr6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_rt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub type_: __u8, -pub segments_left: __u8, -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_opt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -} -#[repr(C)] -pub struct rt0_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rt2_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: in6_addr, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct ipv6_destopt_hao { -pub type_: __u8, -pub length: __u8, -pub addr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub flow_lbl: [__u8; 3usize], -pub payload_len: __be16, -pub nexthdr: __u8, -pub hop_limit: __u8, -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ipv6hdr__bindgen_ty_1 { -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -impl ipv6hdr { -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn priority(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_priority(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let priority: u8 = unsafe { ::core::mem::transmute(priority) }; -priority as u64 -}); -__bindgen_bitfield_unit -} -} -pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; -pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; -pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; -pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; -pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; -pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; -pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; -pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; -pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; -pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; -pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; -pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; -pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; -pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; -pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; -pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; -pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; -pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; -pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; -pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; -pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; -pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; -pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; -pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; -pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; -pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; -pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; -pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; -pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; -pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; -pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; -pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; -pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; -pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; -pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; -pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; -pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; -pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; -pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; -pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; -pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; -pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; -pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; -pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; -pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; -pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; -pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; -pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; -pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; -pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; -pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; -pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_3 { -DEVCONF_FORWARDING = 0, -DEVCONF_HOPLIMIT = 1, -DEVCONF_MTU6 = 2, -DEVCONF_ACCEPT_RA = 3, -DEVCONF_ACCEPT_REDIRECTS = 4, -DEVCONF_AUTOCONF = 5, -DEVCONF_DAD_TRANSMITS = 6, -DEVCONF_RTR_SOLICITS = 7, -DEVCONF_RTR_SOLICIT_INTERVAL = 8, -DEVCONF_RTR_SOLICIT_DELAY = 9, -DEVCONF_USE_TEMPADDR = 10, -DEVCONF_TEMP_VALID_LFT = 11, -DEVCONF_TEMP_PREFERED_LFT = 12, -DEVCONF_REGEN_MAX_RETRY = 13, -DEVCONF_MAX_DESYNC_FACTOR = 14, -DEVCONF_MAX_ADDRESSES = 15, -DEVCONF_FORCE_MLD_VERSION = 16, -DEVCONF_ACCEPT_RA_DEFRTR = 17, -DEVCONF_ACCEPT_RA_PINFO = 18, -DEVCONF_ACCEPT_RA_RTR_PREF = 19, -DEVCONF_RTR_PROBE_INTERVAL = 20, -DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, -DEVCONF_PROXY_NDP = 22, -DEVCONF_OPTIMISTIC_DAD = 23, -DEVCONF_ACCEPT_SOURCE_ROUTE = 24, -DEVCONF_MC_FORWARDING = 25, -DEVCONF_DISABLE_IPV6 = 26, -DEVCONF_ACCEPT_DAD = 27, -DEVCONF_FORCE_TLLAO = 28, -DEVCONF_NDISC_NOTIFY = 29, -DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, -DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, -DEVCONF_SUPPRESS_FRAG_NDISC = 32, -DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, -DEVCONF_USE_OPTIMISTIC = 34, -DEVCONF_ACCEPT_RA_MTU = 35, -DEVCONF_STABLE_SECRET = 36, -DEVCONF_USE_OIF_ADDRS_ONLY = 37, -DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, -DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, -DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, -DEVCONF_DROP_UNSOLICITED_NA = 41, -DEVCONF_KEEP_ADDR_ON_DOWN = 42, -DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, -DEVCONF_SEG6_ENABLED = 44, -DEVCONF_SEG6_REQUIRE_HMAC = 45, -DEVCONF_ENHANCED_DAD = 46, -DEVCONF_ADDR_GEN_MODE = 47, -DEVCONF_DISABLE_POLICY = 48, -DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, -DEVCONF_NDISC_TCLASS = 50, -DEVCONF_RPL_SEG_ENABLED = 51, -DEVCONF_RA_DEFRTR_METRIC = 52, -DEVCONF_IOAM6_ENABLED = 53, -DEVCONF_IOAM6_ID = 54, -DEVCONF_IOAM6_ID_WIDE = 55, -DEVCONF_NDISC_EVICT_NOCARRIER = 56, -DEVCONF_ACCEPT_UNTRACKED_NA = 57, -DEVCONF_MAX = 58, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum socket_state { -SS_FREE = 0, -SS_UNCONNECTED = 1, -SS_CONNECTING = 2, -SS_CONNECTED = 3, -SS_DISCONNECTING = 4, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct pollfd { pub fd: crate::ctypes::c_int, @@ -3668,24 +339,6 @@ pub revents: crate::ctypes::c_short, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prctl_mm_map { -pub start_code: __u64, -pub end_code: __u64, -pub start_data: __u64, -pub end_data: __u64, -pub start_brk: __u64, -pub brk: __u64, -pub start_stack: __u64, -pub arg_start: __u64, -pub arg_end: __u64, -pub env_start: __u64, -pub env_end: __u64, -pub auxv: *mut __u64, -pub auxv_size: __u32, -pub exe_fd: __u32, -} -#[repr(C)] #[derive(Debug)] pub struct rand_pool_info { pub entropy_count: crate::ctypes::c_int, @@ -3805,16 +458,11 @@ pub set_tid_size: __u64, pub cgroup: __u64, } -pub type old_sigset_t = crate::ctypes::c_ulong; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct sigset_t { pub sig: [crate::ctypes::c_ulong; 2usize], } -pub type __signalfn_t = ::core::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::core::option::Option; -pub type __sigrestore_t = __restorefn_t; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct old_sigaction { @@ -3838,7 +486,6 @@ pub ss_flags: crate::ctypes::c_int, pub ss_size: __kernel_size_t, } -pub type stack_t = sigaltstack; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct sig_dbg_op { @@ -3846,24 +493,6 @@ pub dbg_value: crate::ctypes::c_ulong, } #[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { -pub sival_int: crate::ctypes::c_int, -pub sival_ptr: *mut crate::ctypes::c_void, -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { -pub _kill: __sifields__bindgen_ty_1, -pub _timer: __sifields__bindgen_ty_2, -pub _rt: __sifields__bindgen_ty_3, -pub _sigchld: __sifields__bindgen_ty_4, -pub _sigfault: __sifields__bindgen_ty_5, -pub _sigpoll: __sifields__bindgen_ty_6, -pub _sigsys: __sifields__bindgen_ty_7, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_1 { pub _pid: __kernel_pid_t, @@ -3900,616 +529,100 @@ pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { -pub _trapno: crate::ctypes::c_int, -pub _addr_lsb: crate::ctypes::c_short, -pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, -pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { pub _dummy_bnd: [crate::ctypes::c_char; 4usize], pub _lower: *mut crate::ctypes::c_void, pub _upper: *mut crate::ctypes::c_void, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 { -pub _dummy_pkey: [crate::ctypes::c_char; 4usize], -pub _pkey: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { -pub _data: crate::ctypes::c_ulong, -pub _type: __u32, -pub _flags: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_6 { -pub _band: crate::ctypes::c_long, -pub _fd: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_7 { -pub _call_addr: *mut crate::ctypes::c_void, -pub _syscall: crate::ctypes::c_int, -pub _arch: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo { -pub __bindgen_anon_1: siginfo__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { -pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, -pub _si_pad: [crate::ctypes::c_int; 32usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { -pub si_signo: crate::ctypes::c_int, -pub si_errno: crate::ctypes::c_int, -pub si_code: crate::ctypes::c_int, -pub _sifields: __sifields, -} -pub type siginfo_t = siginfo; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigevent { -pub sigev_value: sigval_t, -pub sigev_signo: crate::ctypes::c_int, -pub sigev_notify: crate::ctypes::c_int, -pub _sigev_un: sigevent__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { -pub _pad: [crate::ctypes::c_int; 13usize], -pub _tid: crate::ctypes::c_int, -pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { -pub _function: ::core::option::Option, -pub _attribute: *mut crate::ctypes::c_void, -} -pub type sigevent_t = sigevent; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statx_timestamp { -pub tv_sec: __s64, -pub tv_nsec: __u32, -pub __reserved: __s32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statx { -pub stx_mask: __u32, -pub stx_blksize: __u32, -pub stx_attributes: __u64, -pub stx_nlink: __u32, -pub stx_uid: __u32, -pub stx_gid: __u32, -pub stx_mode: __u16, -pub __spare0: [__u16; 1usize], -pub stx_ino: __u64, -pub stx_size: __u64, -pub stx_blocks: __u64, -pub stx_attributes_mask: __u64, -pub stx_atime: statx_timestamp, -pub stx_btime: statx_timestamp, -pub stx_ctime: statx_timestamp, -pub stx_mtime: statx_timestamp, -pub stx_rdev_major: __u32, -pub stx_rdev_minor: __u32, -pub stx_dev_major: __u32, -pub stx_dev_minor: __u32, -pub stx_mnt_id: __u64, -pub stx_dio_mem_align: __u32, -pub stx_dio_offset_align: __u32, -pub __spare3: [__u64; 12usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sysinfo { -pub uptime: __kernel_long_t, -pub loads: [__kernel_ulong_t; 3usize], -pub totalram: __kernel_ulong_t, -pub freeram: __kernel_ulong_t, -pub sharedram: __kernel_ulong_t, -pub bufferram: __kernel_ulong_t, -pub totalswap: __kernel_ulong_t, -pub freeswap: __kernel_ulong_t, -pub procs: __u16, -pub pad: __u16, -pub totalhigh: __kernel_ulong_t, -pub freehigh: __kernel_ulong_t, -pub mem_unit: __u32, -pub _f: [crate::ctypes::c_char; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcphdr { -pub source: __be16, -pub dest: __be16, -pub seq: __be32, -pub ack_seq: __be32, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub window: __be16, -pub check: __sum16, -pub urg_ptr: __be16, -} -impl tcphdr { -#[inline] -pub fn doff(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } -} -#[inline] -pub fn set_doff(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn res1(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } -} -#[inline] -pub fn set_res1(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn cwr(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } -} -#[inline] -pub fn set_cwr(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn ece(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } -} -#[inline] -pub fn set_ece(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 1u8, val as u64) -} -} -#[inline] -pub fn urg(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } -} -#[inline] -pub fn set_urg(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(10usize, 1u8, val as u64) -} -} -#[inline] -pub fn ack(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } -} -#[inline] -pub fn set_ack(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(11usize, 1u8, val as u64) -} -} -#[inline] -pub fn psh(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } -} -#[inline] -pub fn set_psh(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(12usize, 1u8, val as u64) -} -} -#[inline] -pub fn rst(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } -} -#[inline] -pub fn set_rst(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(13usize, 1u8, val as u64) -} -} -#[inline] -pub fn syn(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } -} -#[inline] -pub fn set_syn(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(14usize, 1u8, val as u64) -} -} -#[inline] -pub fn fin(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } -} -#[inline] -pub fn set_fin(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(15usize, 1u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let doff: u16 = unsafe { ::core::mem::transmute(doff) }; -doff as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let res1: u16 = unsafe { ::core::mem::transmute(res1) }; -res1 as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; -cwr as u64 -}); -__bindgen_bitfield_unit.set(9usize, 1u8, { -let ece: u16 = unsafe { ::core::mem::transmute(ece) }; -ece as u64 -}); -__bindgen_bitfield_unit.set(10usize, 1u8, { -let urg: u16 = unsafe { ::core::mem::transmute(urg) }; -urg as u64 -}); -__bindgen_bitfield_unit.set(11usize, 1u8, { -let ack: u16 = unsafe { ::core::mem::transmute(ack) }; -ack as u64 -}); -__bindgen_bitfield_unit.set(12usize, 1u8, { -let psh: u16 = unsafe { ::core::mem::transmute(psh) }; -psh as u64 -}); -__bindgen_bitfield_unit.set(13usize, 1u8, { -let rst: u16 = unsafe { ::core::mem::transmute(rst) }; -rst as u64 -}); -__bindgen_bitfield_unit.set(14usize, 1u8, { -let syn: u16 = unsafe { ::core::mem::transmute(syn) }; -syn as u64 -}); -__bindgen_bitfield_unit.set(15usize, 1u8, { -let fin: u16 = unsafe { ::core::mem::transmute(fin) }; -fin as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union tcp_word_hdr { -pub hdr: tcphdr, -pub words: [__be32; 5usize], -} -pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; -pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; -pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; -pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; -pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; -pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; -pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; -pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; -pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; -pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_4 { -TCP_FLAG_CWR = 8388608, -TCP_FLAG_ECE = 4194304, -TCP_FLAG_URG = 2097152, -TCP_FLAG_ACK = 1048576, -TCP_FLAG_PSH = 524288, -TCP_FLAG_RST = 262144, -TCP_FLAG_SYN = 131072, -TCP_FLAG_FIN = 65536, -TCP_RESERVED_BITS = 251658240, -TCP_DATA_OFFSET = 4026531840, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_repair_opt { -pub opt_code: __u32, -pub opt_val: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_repair_window { -pub snd_wl1: __u32, -pub snd_wnd: __u32, -pub max_window: __u32, -pub rcv_wnd: __u32, -pub rcv_wup: __u32, -} -pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; -pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; -pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; -pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_5 { -TCP_NO_QUEUE = 0, -TCP_RECV_QUEUE = 1, -TCP_SEND_QUEUE = 2, -TCP_QUEUES_NR = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_fastopen_client_fail { -TFO_STATUS_UNSPEC = 0, -TFO_COOKIE_UNAVAILABLE = 1, -TFO_DATA_NOT_ACKED = 2, -TFO_SYN_RETRANSMITTED = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_ca_state { -TCP_CA_Open = 0, -TCP_CA_Disorder = 1, -TCP_CA_CWR = 2, -TCP_CA_Recovery = 3, -TCP_CA_Loss = 4, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_info { -pub tcpi_state: __u8, -pub tcpi_ca_state: __u8, -pub tcpi_retransmits: __u8, -pub tcpi_probes: __u8, -pub tcpi_backoff: __u8, -pub tcpi_options: __u8, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub tcpi_rto: __u32, -pub tcpi_ato: __u32, -pub tcpi_snd_mss: __u32, -pub tcpi_rcv_mss: __u32, -pub tcpi_unacked: __u32, -pub tcpi_sacked: __u32, -pub tcpi_lost: __u32, -pub tcpi_retrans: __u32, -pub tcpi_fackets: __u32, -pub tcpi_last_data_sent: __u32, -pub tcpi_last_ack_sent: __u32, -pub tcpi_last_data_recv: __u32, -pub tcpi_last_ack_recv: __u32, -pub tcpi_pmtu: __u32, -pub tcpi_rcv_ssthresh: __u32, -pub tcpi_rtt: __u32, -pub tcpi_rttvar: __u32, -pub tcpi_snd_ssthresh: __u32, -pub tcpi_snd_cwnd: __u32, -pub tcpi_advmss: __u32, -pub tcpi_reordering: __u32, -pub tcpi_rcv_rtt: __u32, -pub tcpi_rcv_space: __u32, -pub tcpi_total_retrans: __u32, -pub tcpi_pacing_rate: __u64, -pub tcpi_max_pacing_rate: __u64, -pub tcpi_bytes_acked: __u64, -pub tcpi_bytes_received: __u64, -pub tcpi_segs_out: __u32, -pub tcpi_segs_in: __u32, -pub tcpi_notsent_bytes: __u32, -pub tcpi_min_rtt: __u32, -pub tcpi_data_segs_in: __u32, -pub tcpi_data_segs_out: __u32, -pub tcpi_delivery_rate: __u64, -pub tcpi_busy_time: __u64, -pub tcpi_rwnd_limited: __u64, -pub tcpi_sndbuf_limited: __u64, -pub tcpi_delivered: __u32, -pub tcpi_delivered_ce: __u32, -pub tcpi_bytes_sent: __u64, -pub tcpi_bytes_retrans: __u64, -pub tcpi_dsack_dups: __u32, -pub tcpi_reord_seen: __u32, -pub tcpi_rcv_ooopack: __u32, -pub tcpi_snd_wnd: __u32, -pub tcpi_rcv_wnd: __u32, -pub tcpi_rehash: __u32, -} -impl tcp_info { -#[inline] -pub fn tcpi_snd_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_rcv_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } -} -#[inline] -pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn tcpi_fastopen_client_fail(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 { +pub _dummy_pkey: [crate::ctypes::c_char; 4usize], +pub _pkey: __u32, } -#[inline] -pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 2u8, val as u64) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { +pub _data: crate::ctypes::c_ulong, +pub _type: __u32, +pub _flags: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_6 { +pub _band: crate::ctypes::c_long, +pub _fd: crate::ctypes::c_int, } -#[inline] -pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; -tcpi_snd_wscale as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; -tcpi_rcv_wscale as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; -tcpi_delivery_rate_app_limited as u64 -}); -__bindgen_bitfield_unit.set(9usize, 2u8, { -let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; -tcpi_fastopen_client_fail as u64 -}); -__bindgen_bitfield_unit +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_7 { +pub _call_addr: *mut crate::ctypes::c_void, +pub _syscall: crate::ctypes::c_int, +pub _arch: crate::ctypes::c_uint, } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo { +pub __bindgen_anon_1: siginfo__bindgen_ty_1, } -pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; -pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; -pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; -pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; -pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; -pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; -pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; -pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; -pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; -pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; -pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; -pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; -pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; -pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; -pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; -pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; -pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; -pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; -pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; -pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; -pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; -pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; -pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; -pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; -pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; -pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; -pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; -pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_6 { -TCP_NLA_PAD = 0, -TCP_NLA_BUSY = 1, -TCP_NLA_RWND_LIMITED = 2, -TCP_NLA_SNDBUF_LIMITED = 3, -TCP_NLA_DATA_SEGS_OUT = 4, -TCP_NLA_TOTAL_RETRANS = 5, -TCP_NLA_PACING_RATE = 6, -TCP_NLA_DELIVERY_RATE = 7, -TCP_NLA_SND_CWND = 8, -TCP_NLA_REORDERING = 9, -TCP_NLA_MIN_RTT = 10, -TCP_NLA_RECUR_RETRANS = 11, -TCP_NLA_DELIVERY_RATE_APP_LMT = 12, -TCP_NLA_SNDQ_SIZE = 13, -TCP_NLA_CA_STATE = 14, -TCP_NLA_SND_SSTHRESH = 15, -TCP_NLA_DELIVERED = 16, -TCP_NLA_DELIVERED_CE = 17, -TCP_NLA_BYTES_SENT = 18, -TCP_NLA_BYTES_RETRANS = 19, -TCP_NLA_DSACK_DUPS = 20, -TCP_NLA_REORD_SEEN = 21, -TCP_NLA_SRTT = 22, -TCP_NLA_TIMEOUT_REHASH = 23, -TCP_NLA_BYTES_NOTSENT = 24, -TCP_NLA_EDT = 25, -TCP_NLA_TTL = 26, -TCP_NLA_REHASH = 27, +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { +pub si_signo: crate::ctypes::c_int, +pub si_errno: crate::ctypes::c_int, +pub si_code: crate::ctypes::c_int, +pub _sifields: __sifields, } #[repr(C)] #[derive(Copy, Clone)] -pub struct tcp_md5sig { -pub tcpm_addr: __kernel_sockaddr_storage, -pub tcpm_flags: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_ifindex: crate::ctypes::c_int, -pub tcpm_key: [__u8; 80usize], +pub struct sigevent { +pub sigev_value: sigval_t, +pub sigev_signo: crate::ctypes::c_int, +pub sigev_notify: crate::ctypes::c_int, +pub _sigev_un: sigevent__bindgen_ty_1, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_diag_md5sig { -pub tcpm_family: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_addr: [__be32; 4usize], -pub tcpm_key: [__u8; 80usize], +pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { +pub _function: ::core::option::Option, +pub _attribute: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_zerocopy_receive { -pub address: __u64, -pub length: __u32, -pub recv_skip_hint: __u32, -pub inq: __u32, -pub err: __s32, -pub copybuf_address: __u64, -pub copybuf_len: __s32, -pub flags: __u32, -pub msg_control: __u64, -pub msg_controllen: __u64, -pub msg_flags: __u32, -pub reserved: __u32, +pub struct statx_timestamp { +pub tv_sec: __s64, +pub tv_nsec: __u32, +pub __reserved: __s32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statx { +pub stx_mask: __u32, +pub stx_blksize: __u32, +pub stx_attributes: __u64, +pub stx_nlink: __u32, +pub stx_uid: __u32, +pub stx_gid: __u32, +pub stx_mode: __u16, +pub __spare0: [__u16; 1usize], +pub stx_ino: __u64, +pub stx_size: __u64, +pub stx_blocks: __u64, +pub stx_attributes_mask: __u64, +pub stx_atime: statx_timestamp, +pub stx_btime: statx_timestamp, +pub stx_ctime: statx_timestamp, +pub stx_mtime: statx_timestamp, +pub stx_rdev_major: __u32, +pub stx_rdev_minor: __u32, +pub stx_dev_major: __u32, +pub stx_dev_minor: __u32, +pub stx_mnt_id: __u64, +pub stx_dio_mem_align: __u32, +pub stx_dio_offset_align: __u32, +pub __spare3: [__u64; 12usize], } -pub type cc_t = crate::ctypes::c_uchar; -pub type speed_t = crate::ctypes::c_uint; -pub type tcflag_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct termios { @@ -4583,46 +696,2055 @@ } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct iovec { -pub iov_base: *mut crate::ctypes::c_void, -pub iov_len: __kernel_size_t, +pub struct iovec { +pub iov_base: *mut crate::ctypes::c_void, +pub iov_len: __kernel_size_t, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct uffd_msg { +pub event: __u8, +pub reserved1: __u8, +pub reserved2: __u16, +pub reserved3: __u32, +pub arg: uffd_msg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { +pub flags: __u64, +pub address: __u64, +pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { +pub ufd: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { +pub from: __u64, +pub to: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { +pub start: __u64, +pub end: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { +pub reserved1: __u64, +pub reserved2: __u64, +pub reserved3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_api { +pub api: __u64, +pub features: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_range { +pub start: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_register { +pub range: uffdio_range, +pub mode: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_copy { +pub dst: __u64, +pub src: __u64, +pub len: __u64, +pub mode: __u64, +pub copy: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_zeropage { +pub range: uffdio_range, +pub mode: __u64, +pub zeropage: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_writeprotect { +pub range: uffdio_range, +pub mode: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_continue { +pub range: uffdio_range, +pub mode: __u64, +pub mapped: __s64, +} +#[repr(C)] +#[derive(Debug)] +pub struct linux_dirent64 { +pub d_ino: crate::ctypes::c_ulonglong, +pub d_off: crate::ctypes::c_longlong, +pub d_reclen: __u16, +pub d_type: __u8, +pub d_name: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __old_kernel_stat { +pub st_dev: crate::ctypes::c_ushort, +pub st_ino: crate::ctypes::c_ushort, +pub st_mode: crate::ctypes::c_ushort, +pub st_nlink: crate::ctypes::c_ushort, +pub st_uid: crate::ctypes::c_ushort, +pub st_gid: crate::ctypes::c_ushort, +pub st_rdev: crate::ctypes::c_ushort, +pub st_size: crate::ctypes::c_ulong, +pub st_atime: crate::ctypes::c_ulong, +pub st_mtime: crate::ctypes::c_ulong, +pub st_ctime: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat { +pub st_dev: crate::ctypes::c_ulong, +pub st_ino: __kernel_ino_t, +pub st_mode: __kernel_mode_t, +pub st_nlink: crate::ctypes::c_ushort, +pub st_uid: __kernel_uid32_t, +pub st_gid: __kernel_gid32_t, +pub st_rdev: crate::ctypes::c_ulong, +pub st_size: crate::ctypes::c_long, +pub st_blksize: crate::ctypes::c_ulong, +pub st_blocks: crate::ctypes::c_ulong, +pub st_atime: crate::ctypes::c_ulong, +pub st_atime_nsec: crate::ctypes::c_ulong, +pub st_mtime: crate::ctypes::c_ulong, +pub st_mtime_nsec: crate::ctypes::c_ulong, +pub st_ctime: crate::ctypes::c_ulong, +pub st_ctime_nsec: crate::ctypes::c_ulong, +pub __unused4: crate::ctypes::c_ulong, +pub __unused5: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat64 { +pub st_dev: crate::ctypes::c_ulonglong, +pub st_ino: crate::ctypes::c_ulonglong, +pub st_mode: crate::ctypes::c_uint, +pub st_nlink: crate::ctypes::c_uint, +pub st_uid: crate::ctypes::c_uint, +pub st_gid: crate::ctypes::c_uint, +pub st_rdev: crate::ctypes::c_ulonglong, +pub __pad2: crate::ctypes::c_ushort, +pub st_size: crate::ctypes::c_longlong, +pub st_blksize: crate::ctypes::c_int, +pub st_blocks: crate::ctypes::c_longlong, +pub st_atime: crate::ctypes::c_int, +pub st_atime_nsec: crate::ctypes::c_uint, +pub st_mtime: crate::ctypes::c_int, +pub st_mtime_nsec: crate::ctypes::c_uint, +pub st_ctime: crate::ctypes::c_int, +pub st_ctime_nsec: crate::ctypes::c_uint, +pub __unused4: crate::ctypes::c_uint, +pub __unused5: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u32, +pub f_bfree: __u32, +pub f_bavail: __u32, +pub f_files: __u32, +pub f_ffree: __u32, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_un { -pub sun_family: __kernel_sa_family_t, -pub sun_path: [crate::ctypes::c_char; 108usize], +pub struct compat_statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct oldold_utsname { -pub sysname: [crate::ctypes::c_char; 9usize], -pub nodename: [crate::ctypes::c_char; 9usize], -pub release: [crate::ctypes::c_char; 9usize], -pub version: [crate::ctypes::c_char; 9usize], -pub machine: [crate::ctypes::c_char; 9usize], +pub struct user_desc { +pub entry_number: crate::ctypes::c_uint, +pub base_addr: crate::ctypes::c_uint, +pub limit: crate::ctypes::c_uint, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub __bindgen_padding_0: [u8; 3usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct old_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], +pub struct kernel_sigset_t { +pub sig: [crate::ctypes::c_ulong; 2usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct new_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], -pub domainname: [crate::ctypes::c_char; 65usize], +pub struct kernel_sigaction { +pub sa_handler_kernel: __kernel_sighandler_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_restorer: __sigrestore_t, +pub sa_mask: kernel_sigset_t, } -impl membarrier_cmd { -pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; +pub const LINUX_VERSION_CODE: u32 = 393984; +pub const LINUX_VERSION_MAJOR: u32 = 6; +pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; +pub const LINUX_VERSION_SUBLEVEL: u32 = 0; +pub const AT_DCACHEBSIZE: u32 = 19; +pub const AT_ICACHEBSIZE: u32 = 20; +pub const AT_UCACHEBSIZE: u32 = 21; +pub const AT_IGNOREPPC: u32 = 22; +pub const AT_SYSINFO_EHDR: u32 = 33; +pub const AT_L1I_CACHESIZE: u32 = 40; +pub const AT_L1I_CACHEGEOMETRY: u32 = 41; +pub const AT_L1D_CACHESIZE: u32 = 42; +pub const AT_L1D_CACHEGEOMETRY: u32 = 43; +pub const AT_L2_CACHESIZE: u32 = 44; +pub const AT_L2_CACHEGEOMETRY: u32 = 45; +pub const AT_L3_CACHESIZE: u32 = 46; +pub const AT_L3_CACHEGEOMETRY: u32 = 47; +pub const AT_MINSIGSTKSZ: u32 = 51; +pub const AT_VECTOR_SIZE_ARCH: u32 = 15; +pub const AT_NULL: u32 = 0; +pub const AT_IGNORE: u32 = 1; +pub const AT_EXECFD: u32 = 2; +pub const AT_PHDR: u32 = 3; +pub const AT_PHENT: u32 = 4; +pub const AT_PHNUM: u32 = 5; +pub const AT_PAGESZ: u32 = 6; +pub const AT_BASE: u32 = 7; +pub const AT_FLAGS: u32 = 8; +pub const AT_ENTRY: u32 = 9; +pub const AT_NOTELF: u32 = 10; +pub const AT_UID: u32 = 11; +pub const AT_EUID: u32 = 12; +pub const AT_GID: u32 = 13; +pub const AT_EGID: u32 = 14; +pub const AT_PLATFORM: u32 = 15; +pub const AT_HWCAP: u32 = 16; +pub const AT_CLKTCK: u32 = 17; +pub const AT_SECURE: u32 = 23; +pub const AT_BASE_PLATFORM: u32 = 24; +pub const AT_RANDOM: u32 = 25; +pub const AT_HWCAP2: u32 = 26; +pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; +pub const AT_RSEQ_ALIGN: u32 = 28; +pub const AT_EXECFN: u32 = 31; +pub const __FD_SETSIZE: u32 = 1024; +pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; +pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; +pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; +pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; +pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; +pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; +pub const VFS_CAP_REVISION_SHIFT: u32 = 24; +pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; +pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; +pub const VFS_CAP_REVISION_1: u32 = 16777216; +pub const VFS_CAP_U32_1: u32 = 1; +pub const VFS_CAP_REVISION_2: u32 = 33554432; +pub const VFS_CAP_U32_2: u32 = 2; +pub const VFS_CAP_REVISION_3: u32 = 50331648; +pub const VFS_CAP_U32_3: u32 = 2; +pub const VFS_CAP_U32: u32 = 2; +pub const VFS_CAP_REVISION: u32 = 50331648; +pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S: u32 = 1; +pub const CAP_CHOWN: u32 = 0; +pub const CAP_DAC_OVERRIDE: u32 = 1; +pub const CAP_DAC_READ_SEARCH: u32 = 2; +pub const CAP_FOWNER: u32 = 3; +pub const CAP_FSETID: u32 = 4; +pub const CAP_KILL: u32 = 5; +pub const CAP_SETGID: u32 = 6; +pub const CAP_SETUID: u32 = 7; +pub const CAP_SETPCAP: u32 = 8; +pub const CAP_LINUX_IMMUTABLE: u32 = 9; +pub const CAP_NET_BIND_SERVICE: u32 = 10; +pub const CAP_NET_BROADCAST: u32 = 11; +pub const CAP_NET_ADMIN: u32 = 12; +pub const CAP_NET_RAW: u32 = 13; +pub const CAP_IPC_LOCK: u32 = 14; +pub const CAP_IPC_OWNER: u32 = 15; +pub const CAP_SYS_MODULE: u32 = 16; +pub const CAP_SYS_RAWIO: u32 = 17; +pub const CAP_SYS_CHROOT: u32 = 18; +pub const CAP_SYS_PTRACE: u32 = 19; +pub const CAP_SYS_PACCT: u32 = 20; +pub const CAP_SYS_ADMIN: u32 = 21; +pub const CAP_SYS_BOOT: u32 = 22; +pub const CAP_SYS_NICE: u32 = 23; +pub const CAP_SYS_RESOURCE: u32 = 24; +pub const CAP_SYS_TIME: u32 = 25; +pub const CAP_SYS_TTY_CONFIG: u32 = 26; +pub const CAP_MKNOD: u32 = 27; +pub const CAP_LEASE: u32 = 28; +pub const CAP_AUDIT_WRITE: u32 = 29; +pub const CAP_AUDIT_CONTROL: u32 = 30; +pub const CAP_SETFCAP: u32 = 31; +pub const CAP_MAC_OVERRIDE: u32 = 32; +pub const CAP_MAC_ADMIN: u32 = 33; +pub const CAP_SYSLOG: u32 = 34; +pub const CAP_WAKE_ALARM: u32 = 35; +pub const CAP_BLOCK_SUSPEND: u32 = 36; +pub const CAP_AUDIT_READ: u32 = 37; +pub const CAP_PERFMON: u32 = 38; +pub const CAP_BPF: u32 = 39; +pub const CAP_CHECKPOINT_RESTORE: u32 = 40; +pub const CAP_LAST_CAP: u32 = 40; +pub const O_DIRECTORY: u32 = 16384; +pub const O_NOFOLLOW: u32 = 32768; +pub const O_LARGEFILE: u32 = 65536; +pub const O_DIRECT: u32 = 131072; +pub const O_ACCMODE: u32 = 3; +pub const O_RDONLY: u32 = 0; +pub const O_WRONLY: u32 = 1; +pub const O_RDWR: u32 = 2; +pub const O_CREAT: u32 = 64; +pub const O_EXCL: u32 = 128; +pub const O_NOCTTY: u32 = 256; +pub const O_TRUNC: u32 = 512; +pub const O_APPEND: u32 = 1024; +pub const O_NONBLOCK: u32 = 2048; +pub const O_DSYNC: u32 = 4096; +pub const FASYNC: u32 = 8192; +pub const O_NOATIME: u32 = 262144; +pub const O_CLOEXEC: u32 = 524288; +pub const __O_SYNC: u32 = 1048576; +pub const O_SYNC: u32 = 1052672; +pub const O_PATH: u32 = 2097152; +pub const __O_TMPFILE: u32 = 4194304; +pub const O_TMPFILE: u32 = 4210688; +pub const O_TMPFILE_MASK: u32 = 4210752; +pub const O_NDELAY: u32 = 2048; +pub const F_DUPFD: u32 = 0; +pub const F_GETFD: u32 = 1; +pub const F_SETFD: u32 = 2; +pub const F_GETFL: u32 = 3; +pub const F_SETFL: u32 = 4; +pub const F_GETLK: u32 = 5; +pub const F_SETLK: u32 = 6; +pub const F_SETLKW: u32 = 7; +pub const F_SETOWN: u32 = 8; +pub const F_GETOWN: u32 = 9; +pub const F_SETSIG: u32 = 10; +pub const F_GETSIG: u32 = 11; +pub const F_GETLK64: u32 = 12; +pub const F_SETLK64: u32 = 13; +pub const F_SETLKW64: u32 = 14; +pub const F_SETOWN_EX: u32 = 15; +pub const F_GETOWN_EX: u32 = 16; +pub const F_GETOWNER_UIDS: u32 = 17; +pub const F_OFD_GETLK: u32 = 36; +pub const F_OFD_SETLK: u32 = 37; +pub const F_OFD_SETLKW: u32 = 38; +pub const F_OWNER_TID: u32 = 0; +pub const F_OWNER_PID: u32 = 1; +pub const F_OWNER_PGRP: u32 = 2; +pub const FD_CLOEXEC: u32 = 1; +pub const F_RDLCK: u32 = 0; +pub const F_WRLCK: u32 = 1; +pub const F_UNLCK: u32 = 2; +pub const F_EXLCK: u32 = 4; +pub const F_SHLCK: u32 = 8; +pub const LOCK_SH: u32 = 1; +pub const LOCK_EX: u32 = 2; +pub const LOCK_NB: u32 = 4; +pub const LOCK_UN: u32 = 8; +pub const LOCK_MAND: u32 = 32; +pub const LOCK_READ: u32 = 64; +pub const LOCK_WRITE: u32 = 128; +pub const LOCK_RW: u32 = 192; +pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; +pub const RESOLVE_NO_XDEV: u32 = 1; +pub const RESOLVE_NO_MAGICLINKS: u32 = 2; +pub const RESOLVE_NO_SYMLINKS: u32 = 4; +pub const RESOLVE_BENEATH: u32 = 8; +pub const RESOLVE_IN_ROOT: u32 = 16; +pub const RESOLVE_CACHED: u32 = 32; +pub const F_SETLEASE: u32 = 1024; +pub const F_GETLEASE: u32 = 1025; +pub const F_CANCELLK: u32 = 1029; +pub const F_DUPFD_CLOEXEC: u32 = 1030; +pub const F_NOTIFY: u32 = 1026; +pub const F_SETPIPE_SZ: u32 = 1031; +pub const F_GETPIPE_SZ: u32 = 1032; +pub const F_ADD_SEALS: u32 = 1033; +pub const F_GET_SEALS: u32 = 1034; +pub const F_SEAL_SEAL: u32 = 1; +pub const F_SEAL_SHRINK: u32 = 2; +pub const F_SEAL_GROW: u32 = 4; +pub const F_SEAL_WRITE: u32 = 8; +pub const F_SEAL_FUTURE_WRITE: u32 = 16; +pub const F_SEAL_EXEC: u32 = 32; +pub const F_GET_RW_HINT: u32 = 1035; +pub const F_SET_RW_HINT: u32 = 1036; +pub const F_GET_FILE_RW_HINT: u32 = 1037; +pub const F_SET_FILE_RW_HINT: u32 = 1038; +pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; +pub const RWH_WRITE_LIFE_NONE: u32 = 1; +pub const RWH_WRITE_LIFE_SHORT: u32 = 2; +pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; +pub const RWH_WRITE_LIFE_LONG: u32 = 4; +pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; +pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; +pub const DN_ACCESS: u32 = 1; +pub const DN_MODIFY: u32 = 2; +pub const DN_CREATE: u32 = 4; +pub const DN_DELETE: u32 = 8; +pub const DN_RENAME: u32 = 16; +pub const DN_ATTRIB: u32 = 32; +pub const DN_MULTISHOT: u32 = 2147483648; +pub const AT_FDCWD: i32 = -100; +pub const AT_SYMLINK_NOFOLLOW: u32 = 256; +pub const AT_EACCESS: u32 = 512; +pub const AT_REMOVEDIR: u32 = 512; +pub const AT_SYMLINK_FOLLOW: u32 = 1024; +pub const AT_NO_AUTOMOUNT: u32 = 2048; +pub const AT_EMPTY_PATH: u32 = 4096; +pub const AT_STATX_SYNC_TYPE: u32 = 24576; +pub const AT_STATX_SYNC_AS_STAT: u32 = 0; +pub const AT_STATX_FORCE_SYNC: u32 = 8192; +pub const AT_STATX_DONT_SYNC: u32 = 16384; +pub const AT_RECURSIVE: u32 = 32768; +pub const EPOLL_CLOEXEC: u32 = 524288; +pub const EPOLL_CTL_ADD: u32 = 1; +pub const EPOLL_CTL_DEL: u32 = 2; +pub const EPOLL_CTL_MOD: u32 = 3; +pub const POSIX_FADV_NORMAL: u32 = 0; +pub const POSIX_FADV_RANDOM: u32 = 1; +pub const POSIX_FADV_SEQUENTIAL: u32 = 2; +pub const POSIX_FADV_WILLNEED: u32 = 3; +pub const POSIX_FADV_DONTNEED: u32 = 4; +pub const POSIX_FADV_NOREUSE: u32 = 5; +pub const FALLOC_FL_KEEP_SIZE: u32 = 1; +pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; +pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; +pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; +pub const FALLOC_FL_ZERO_RANGE: u32 = 16; +pub const FALLOC_FL_INSERT_RANGE: u32 = 32; +pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 536805376; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const OPEN_TREE_CLOEXEC: u32 = 524288; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const FUTEX_WAIT: u32 = 0; +pub const FUTEX_WAKE: u32 = 1; +pub const FUTEX_FD: u32 = 2; +pub const FUTEX_REQUEUE: u32 = 3; +pub const FUTEX_CMP_REQUEUE: u32 = 4; +pub const FUTEX_WAKE_OP: u32 = 5; +pub const FUTEX_LOCK_PI: u32 = 6; +pub const FUTEX_UNLOCK_PI: u32 = 7; +pub const FUTEX_TRYLOCK_PI: u32 = 8; +pub const FUTEX_WAIT_BITSET: u32 = 9; +pub const FUTEX_WAKE_BITSET: u32 = 10; +pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; +pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; +pub const FUTEX_LOCK_PI2: u32 = 13; +pub const FUTEX_PRIVATE_FLAG: u32 = 128; +pub const FUTEX_CLOCK_REALTIME: u32 = 256; +pub const FUTEX_CMD_MASK: i32 = -385; +pub const FUTEX_WAIT_PRIVATE: u32 = 128; +pub const FUTEX_WAKE_PRIVATE: u32 = 129; +pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; +pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; +pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; +pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; +pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; +pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; +pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; +pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; +pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; +pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; +pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; +pub const FUTEX_32: u32 = 2; +pub const FUTEX_WAITV_MAX: u32 = 128; +pub const FUTEX_WAITERS: u32 = 2147483648; +pub const FUTEX_OWNER_DIED: u32 = 1073741824; +pub const FUTEX_TID_MASK: u32 = 1073741823; +pub const ROBUST_LIST_LIMIT: u32 = 2048; +pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; +pub const FUTEX_OP_SET: u32 = 0; +pub const FUTEX_OP_ADD: u32 = 1; +pub const FUTEX_OP_OR: u32 = 2; +pub const FUTEX_OP_ANDN: u32 = 3; +pub const FUTEX_OP_XOR: u32 = 4; +pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; +pub const FUTEX_OP_CMP_EQ: u32 = 0; +pub const FUTEX_OP_CMP_NE: u32 = 1; +pub const FUTEX_OP_CMP_LT: u32 = 2; +pub const FUTEX_OP_CMP_LE: u32 = 3; +pub const FUTEX_OP_CMP_GT: u32 = 4; +pub const FUTEX_OP_CMP_GE: u32 = 5; +pub const IN_ACCESS: u32 = 1; +pub const IN_MODIFY: u32 = 2; +pub const IN_ATTRIB: u32 = 4; +pub const IN_CLOSE_WRITE: u32 = 8; +pub const IN_CLOSE_NOWRITE: u32 = 16; +pub const IN_OPEN: u32 = 32; +pub const IN_MOVED_FROM: u32 = 64; +pub const IN_MOVED_TO: u32 = 128; +pub const IN_CREATE: u32 = 256; +pub const IN_DELETE: u32 = 512; +pub const IN_DELETE_SELF: u32 = 1024; +pub const IN_MOVE_SELF: u32 = 2048; +pub const IN_UNMOUNT: u32 = 8192; +pub const IN_Q_OVERFLOW: u32 = 16384; +pub const IN_IGNORED: u32 = 32768; +pub const IN_CLOSE: u32 = 24; +pub const IN_MOVE: u32 = 192; +pub const IN_ONLYDIR: u32 = 16777216; +pub const IN_DONT_FOLLOW: u32 = 33554432; +pub const IN_EXCL_UNLINK: u32 = 67108864; +pub const IN_MASK_CREATE: u32 = 268435456; +pub const IN_MASK_ADD: u32 = 536870912; +pub const IN_ISDIR: u32 = 1073741824; +pub const IN_ONESHOT: u32 = 2147483648; +pub const IN_ALL_EVENTS: u32 = 4095; +pub const IN_CLOEXEC: u32 = 524288; +pub const IN_NONBLOCK: u32 = 2048; +pub const ADFS_SUPER_MAGIC: u32 = 44533; +pub const AFFS_SUPER_MAGIC: u32 = 44543; +pub const AFS_SUPER_MAGIC: u32 = 1397113167; +pub const AUTOFS_SUPER_MAGIC: u32 = 391; +pub const CEPH_SUPER_MAGIC: u32 = 12805120; +pub const CODA_SUPER_MAGIC: u32 = 1937076805; +pub const CRAMFS_MAGIC: u32 = 684539205; +pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; +pub const DEBUGFS_MAGIC: u32 = 1684170528; +pub const SECURITYFS_MAGIC: u32 = 1935894131; +pub const SELINUX_MAGIC: u32 = 4185718668; +pub const SMACK_MAGIC: u32 = 1128357203; +pub const RAMFS_MAGIC: u32 = 2240043254; +pub const TMPFS_MAGIC: u32 = 16914836; +pub const HUGETLBFS_MAGIC: u32 = 2508478710; +pub const SQUASHFS_MAGIC: u32 = 1936814952; +pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; +pub const EFS_SUPER_MAGIC: u32 = 4278867; +pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; +pub const EXT2_SUPER_MAGIC: u32 = 61267; +pub const EXT3_SUPER_MAGIC: u32 = 61267; +pub const XENFS_SUPER_MAGIC: u32 = 2881100148; +pub const EXT4_SUPER_MAGIC: u32 = 61267; +pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; +pub const NILFS_SUPER_MAGIC: u32 = 13364; +pub const F2FS_SUPER_MAGIC: u32 = 4076150800; +pub const HPFS_SUPER_MAGIC: u32 = 4187351113; +pub const ISOFS_SUPER_MAGIC: u32 = 38496; +pub const JFFS2_SUPER_MAGIC: u32 = 29366; +pub const XFS_SUPER_MAGIC: u32 = 1481003842; +pub const PSTOREFS_MAGIC: u32 = 1634035564; +pub const EFIVARFS_MAGIC: u32 = 3730735588; +pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; +pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; +pub const FUSE_SUPER_MAGIC: u32 = 1702057286; +pub const MINIX_SUPER_MAGIC: u32 = 4991; +pub const MINIX_SUPER_MAGIC2: u32 = 5007; +pub const MINIX2_SUPER_MAGIC: u32 = 9320; +pub const MINIX2_SUPER_MAGIC2: u32 = 9336; +pub const MINIX3_SUPER_MAGIC: u32 = 19802; +pub const MSDOS_SUPER_MAGIC: u32 = 19780; +pub const EXFAT_SUPER_MAGIC: u32 = 538032816; +pub const NCP_SUPER_MAGIC: u32 = 22092; +pub const NFS_SUPER_MAGIC: u32 = 26985; +pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; +pub const OPENPROM_SUPER_MAGIC: u32 = 40865; +pub const QNX4_SUPER_MAGIC: u32 = 47; +pub const QNX6_SUPER_MAGIC: u32 = 1746473250; +pub const AFS_FS_MAGIC: u32 = 1799439955; +pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; +pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9] = b"ReIsErFs\0"; +pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr2Fs\0"; +pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr3Fs\0"; +pub const SMB_SUPER_MAGIC: u32 = 20859; +pub const CIFS_SUPER_MAGIC: u32 = 4283649346; +pub const SMB2_SUPER_MAGIC: u32 = 4266872130; +pub const CGROUP_SUPER_MAGIC: u32 = 2613483; +pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; +pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; +pub const STACK_END_MAGIC: u32 = 1470918301; +pub const TRACEFS_MAGIC: u32 = 1953653091; +pub const V9FS_MAGIC: u32 = 16914839; +pub const BDEVFS_MAGIC: u32 = 1650746742; +pub const DAXFS_MAGIC: u32 = 1684300152; +pub const BINFMTFS_MAGIC: u32 = 1112100429; +pub const DEVPTS_SUPER_MAGIC: u32 = 7377; +pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; +pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; +pub const PIPEFS_MAGIC: u32 = 1346981957; +pub const PROC_SUPER_MAGIC: u32 = 40864; +pub const SOCKFS_MAGIC: u32 = 1397703499; +pub const SYSFS_MAGIC: u32 = 1650812274; +pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; +pub const MTD_INODE_FS_MAGIC: u32 = 288389204; +pub const ANON_INODE_FS_MAGIC: u32 = 151263540; +pub const BTRFS_TEST_MAGIC: u32 = 1936880249; +pub const NSFS_MAGIC: u32 = 1853056627; +pub const BPF_FS_MAGIC: u32 = 3405662737; +pub const AAFS_MAGIC: u32 = 1513908720; +pub const ZONEFS_MAGIC: u32 = 1515144787; +pub const UDF_SUPER_MAGIC: u32 = 352400198; +pub const DMA_BUF_MAGIC: u32 = 1145913666; +pub const DEVMEM_MAGIC: u32 = 1162691661; +pub const SECRETMEM_MAGIC: u32 = 1397048141; +pub const PROT_READ: u32 = 1; +pub const PROT_WRITE: u32 = 2; +pub const PROT_EXEC: u32 = 4; +pub const PROT_SEM: u32 = 8; +pub const PROT_NONE: u32 = 0; +pub const PROT_GROWSDOWN: u32 = 16777216; +pub const PROT_GROWSUP: u32 = 33554432; +pub const MAP_TYPE: u32 = 15; +pub const MAP_FIXED: u32 = 16; +pub const MAP_ANONYMOUS: u32 = 32; +pub const MAP_POPULATE: u32 = 32768; +pub const MAP_NONBLOCK: u32 = 65536; +pub const MAP_STACK: u32 = 131072; +pub const MAP_HUGETLB: u32 = 262144; +pub const MAP_SYNC: u32 = 524288; +pub const MAP_FIXED_NOREPLACE: u32 = 1048576; +pub const MAP_UNINITIALIZED: u32 = 67108864; +pub const MLOCK_ONFAULT: u32 = 1; +pub const MS_ASYNC: u32 = 1; +pub const MS_INVALIDATE: u32 = 2; +pub const MS_SYNC: u32 = 4; +pub const MADV_NORMAL: u32 = 0; +pub const MADV_RANDOM: u32 = 1; +pub const MADV_SEQUENTIAL: u32 = 2; +pub const MADV_WILLNEED: u32 = 3; +pub const MADV_DONTNEED: u32 = 4; +pub const MADV_FREE: u32 = 8; +pub const MADV_REMOVE: u32 = 9; +pub const MADV_DONTFORK: u32 = 10; +pub const MADV_DOFORK: u32 = 11; +pub const MADV_HWPOISON: u32 = 100; +pub const MADV_SOFT_OFFLINE: u32 = 101; +pub const MADV_MERGEABLE: u32 = 12; +pub const MADV_UNMERGEABLE: u32 = 13; +pub const MADV_HUGEPAGE: u32 = 14; +pub const MADV_NOHUGEPAGE: u32 = 15; +pub const MADV_DONTDUMP: u32 = 16; +pub const MADV_DODUMP: u32 = 17; +pub const MADV_WIPEONFORK: u32 = 18; +pub const MADV_KEEPONFORK: u32 = 19; +pub const MADV_COLD: u32 = 20; +pub const MADV_PAGEOUT: u32 = 21; +pub const MADV_POPULATE_READ: u32 = 22; +pub const MADV_POPULATE_WRITE: u32 = 23; +pub const MADV_DONTNEED_LOCKED: u32 = 24; +pub const MADV_COLLAPSE: u32 = 25; +pub const MAP_FILE: u32 = 0; +pub const PKEY_DISABLE_ACCESS: u32 = 1; +pub const PKEY_DISABLE_WRITE: u32 = 2; +pub const PKEY_ACCESS_MASK: u32 = 3; +pub const PROT_SAO: u32 = 16; +pub const MAP_RENAME: u32 = 32; +pub const MAP_NORESERVE: u32 = 64; +pub const MAP_LOCKED: u32 = 128; +pub const MAP_GROWSDOWN: u32 = 256; +pub const MAP_DENYWRITE: u32 = 2048; +pub const MAP_EXECUTABLE: u32 = 4096; +pub const MCL_CURRENT: u32 = 8192; +pub const MCL_FUTURE: u32 = 16384; +pub const MCL_ONFAULT: u32 = 32768; +pub const PKEY_DISABLE_EXECUTE: u32 = 4; +pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; +pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; +pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; +pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; +pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; +pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; +pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; +pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; +pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; +pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; +pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; +pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; +pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; +pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; +pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; +pub const MREMAP_MAYMOVE: u32 = 1; +pub const MREMAP_FIXED: u32 = 2; +pub const MREMAP_DONTUNMAP: u32 = 4; +pub const OVERCOMMIT_GUESS: u32 = 0; +pub const OVERCOMMIT_ALWAYS: u32 = 1; +pub const OVERCOMMIT_NEVER: u32 = 2; +pub const MAP_SHARED: u32 = 1; +pub const MAP_PRIVATE: u32 = 2; +pub const MAP_SHARED_VALIDATE: u32 = 3; +pub const MAP_HUGE_SHIFT: u32 = 26; +pub const MAP_HUGE_MASK: u32 = 63; +pub const MAP_HUGE_16KB: u32 = 939524096; +pub const MAP_HUGE_64KB: u32 = 1073741824; +pub const MAP_HUGE_512KB: u32 = 1275068416; +pub const MAP_HUGE_1MB: u32 = 1342177280; +pub const MAP_HUGE_2MB: u32 = 1409286144; +pub const MAP_HUGE_8MB: u32 = 1543503872; +pub const MAP_HUGE_16MB: u32 = 1610612736; +pub const MAP_HUGE_32MB: u32 = 1677721600; +pub const MAP_HUGE_256MB: u32 = 1879048192; +pub const MAP_HUGE_512MB: u32 = 1946157056; +pub const MAP_HUGE_1GB: u32 = 2013265920; +pub const MAP_HUGE_2GB: u32 = 2080374784; +pub const MAP_HUGE_16GB: u32 = 2281701376; +pub const POLLIN: u32 = 1; +pub const POLLPRI: u32 = 2; +pub const POLLOUT: u32 = 4; +pub const POLLERR: u32 = 8; +pub const POLLHUP: u32 = 16; +pub const POLLNVAL: u32 = 32; +pub const POLLRDNORM: u32 = 64; +pub const POLLRDBAND: u32 = 128; +pub const POLLWRNORM: u32 = 256; +pub const POLLWRBAND: u32 = 512; +pub const POLLMSG: u32 = 1024; +pub const POLLREMOVE: u32 = 4096; +pub const POLLRDHUP: u32 = 8192; +pub const GRND_NONBLOCK: u32 = 1; +pub const GRND_RANDOM: u32 = 2; +pub const GRND_INSECURE: u32 = 4; +pub const ITIMER_REAL: u32 = 0; +pub const ITIMER_VIRTUAL: u32 = 1; +pub const ITIMER_PROF: u32 = 2; +pub const CLOCK_REALTIME: u32 = 0; +pub const CLOCK_MONOTONIC: u32 = 1; +pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; +pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; +pub const CLOCK_MONOTONIC_RAW: u32 = 4; +pub const CLOCK_REALTIME_COARSE: u32 = 5; +pub const CLOCK_MONOTONIC_COARSE: u32 = 6; +pub const CLOCK_BOOTTIME: u32 = 7; +pub const CLOCK_REALTIME_ALARM: u32 = 8; +pub const CLOCK_BOOTTIME_ALARM: u32 = 9; +pub const CLOCK_SGI_CYCLE: u32 = 10; +pub const CLOCK_TAI: u32 = 11; +pub const MAX_CLOCKS: u32 = 16; +pub const CLOCKS_MASK: u32 = 1; +pub const CLOCKS_MONO: u32 = 1; +pub const TIMER_ABSTIME: u32 = 1; +pub const RUSAGE_SELF: u32 = 0; +pub const RUSAGE_CHILDREN: i32 = -1; +pub const RUSAGE_BOTH: i32 = -2; +pub const RUSAGE_THREAD: u32 = 1; +pub const RLIM64_INFINITY: i32 = -1; +pub const PRIO_MIN: i32 = -20; +pub const PRIO_MAX: u32 = 20; +pub const PRIO_PROCESS: u32 = 0; +pub const PRIO_PGRP: u32 = 1; +pub const PRIO_USER: u32 = 2; +pub const _STK_LIM: u32 = 8388608; +pub const MLOCK_LIMIT: u32 = 8388608; +pub const RLIMIT_CPU: u32 = 0; +pub const RLIMIT_FSIZE: u32 = 1; +pub const RLIMIT_DATA: u32 = 2; +pub const RLIMIT_STACK: u32 = 3; +pub const RLIMIT_CORE: u32 = 4; +pub const RLIMIT_RSS: u32 = 5; +pub const RLIMIT_NPROC: u32 = 6; +pub const RLIMIT_NOFILE: u32 = 7; +pub const RLIMIT_MEMLOCK: u32 = 8; +pub const RLIMIT_AS: u32 = 9; +pub const RLIMIT_LOCKS: u32 = 10; +pub const RLIMIT_SIGPENDING: u32 = 11; +pub const RLIMIT_MSGQUEUE: u32 = 12; +pub const RLIMIT_NICE: u32 = 13; +pub const RLIMIT_RTPRIO: u32 = 14; +pub const RLIMIT_RTTIME: u32 = 15; +pub const RLIM_NLIMITS: u32 = 16; +pub const RLIM_INFINITY: i32 = -1; +pub const CSIGNAL: u32 = 255; +pub const CLONE_VM: u32 = 256; +pub const CLONE_FS: u32 = 512; +pub const CLONE_FILES: u32 = 1024; +pub const CLONE_SIGHAND: u32 = 2048; +pub const CLONE_PIDFD: u32 = 4096; +pub const CLONE_PTRACE: u32 = 8192; +pub const CLONE_VFORK: u32 = 16384; +pub const CLONE_PARENT: u32 = 32768; +pub const CLONE_THREAD: u32 = 65536; +pub const CLONE_NEWNS: u32 = 131072; +pub const CLONE_SYSVSEM: u32 = 262144; +pub const CLONE_SETTLS: u32 = 524288; +pub const CLONE_PARENT_SETTID: u32 = 1048576; +pub const CLONE_CHILD_CLEARTID: u32 = 2097152; +pub const CLONE_DETACHED: u32 = 4194304; +pub const CLONE_UNTRACED: u32 = 8388608; +pub const CLONE_CHILD_SETTID: u32 = 16777216; +pub const CLONE_NEWCGROUP: u32 = 33554432; +pub const CLONE_NEWUTS: u32 = 67108864; +pub const CLONE_NEWIPC: u32 = 134217728; +pub const CLONE_NEWUSER: u32 = 268435456; +pub const CLONE_NEWPID: u32 = 536870912; +pub const CLONE_NEWNET: u32 = 1073741824; +pub const CLONE_IO: u32 = 2147483648; +pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; +pub const CLONE_INTO_CGROUP: u64 = 8589934592; +pub const CLONE_NEWTIME: u32 = 128; +pub const CLONE_ARGS_SIZE_VER0: u32 = 64; +pub const CLONE_ARGS_SIZE_VER1: u32 = 80; +pub const CLONE_ARGS_SIZE_VER2: u32 = 88; +pub const SCHED_NORMAL: u32 = 0; +pub const SCHED_FIFO: u32 = 1; +pub const SCHED_RR: u32 = 2; +pub const SCHED_BATCH: u32 = 3; +pub const SCHED_IDLE: u32 = 5; +pub const SCHED_DEADLINE: u32 = 6; +pub const SCHED_RESET_ON_FORK: u32 = 1073741824; +pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; +pub const SCHED_FLAG_RECLAIM: u32 = 2; +pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; +pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; +pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; +pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; +pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; +pub const SCHED_FLAG_KEEP_ALL: u32 = 24; +pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; +pub const SCHED_FLAG_ALL: u32 = 127; +pub const _NSIG: u32 = 64; +pub const _NSIG_BPW: u32 = 32; +pub const _NSIG_WORDS: u32 = 2; +pub const SIGHUP: u32 = 1; +pub const SIGINT: u32 = 2; +pub const SIGQUIT: u32 = 3; +pub const SIGILL: u32 = 4; +pub const SIGTRAP: u32 = 5; +pub const SIGABRT: u32 = 6; +pub const SIGIOT: u32 = 6; +pub const SIGBUS: u32 = 7; +pub const SIGFPE: u32 = 8; +pub const SIGKILL: u32 = 9; +pub const SIGUSR1: u32 = 10; +pub const SIGSEGV: u32 = 11; +pub const SIGUSR2: u32 = 12; +pub const SIGPIPE: u32 = 13; +pub const SIGALRM: u32 = 14; +pub const SIGTERM: u32 = 15; +pub const SIGSTKFLT: u32 = 16; +pub const SIGCHLD: u32 = 17; +pub const SIGCONT: u32 = 18; +pub const SIGSTOP: u32 = 19; +pub const SIGTSTP: u32 = 20; +pub const SIGTTIN: u32 = 21; +pub const SIGTTOU: u32 = 22; +pub const SIGURG: u32 = 23; +pub const SIGXCPU: u32 = 24; +pub const SIGXFSZ: u32 = 25; +pub const SIGVTALRM: u32 = 26; +pub const SIGPROF: u32 = 27; +pub const SIGWINCH: u32 = 28; +pub const SIGIO: u32 = 29; +pub const SIGPOLL: u32 = 29; +pub const SIGPWR: u32 = 30; +pub const SIGSYS: u32 = 31; +pub const SIGUNUSED: u32 = 31; +pub const SIGRTMIN: u32 = 32; +pub const SIGRTMAX: u32 = 64; +pub const SA_RESTORER: u32 = 67108864; +pub const MINSIGSTKSZ: u32 = 2048; +pub const SIGSTKSZ: u32 = 8192; +pub const SA_NOCLDSTOP: u32 = 1; +pub const SA_NOCLDWAIT: u32 = 2; +pub const SA_SIGINFO: u32 = 4; +pub const SA_UNSUPPORTED: u32 = 1024; +pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SA_ONSTACK: u32 = 134217728; +pub const SA_RESTART: u32 = 268435456; +pub const SA_NODEFER: u32 = 1073741824; +pub const SA_RESETHAND: u32 = 2147483648; +pub const SA_NOMASK: u32 = 1073741824; +pub const SA_ONESHOT: u32 = 2147483648; +pub const SIG_BLOCK: u32 = 0; +pub const SIG_UNBLOCK: u32 = 1; +pub const SIG_SETMASK: u32 = 2; +pub const SIG_DBG_SINGLE_STEPPING: u32 = 1; +pub const SIG_DBG_BRANCH_TRACING: u32 = 2; +pub const SI_MAX_SIZE: u32 = 128; +pub const SI_USER: u32 = 0; +pub const SI_KERNEL: u32 = 128; +pub const SI_QUEUE: i32 = -1; +pub const SI_TIMER: i32 = -2; +pub const SI_MESGQ: i32 = -3; +pub const SI_ASYNCIO: i32 = -4; +pub const SI_SIGIO: i32 = -5; +pub const SI_TKILL: i32 = -6; +pub const SI_DETHREAD: i32 = -7; +pub const SI_ASYNCNL: i32 = -60; +pub const ILL_ILLOPC: u32 = 1; +pub const ILL_ILLOPN: u32 = 2; +pub const ILL_ILLADR: u32 = 3; +pub const ILL_ILLTRP: u32 = 4; +pub const ILL_PRVOPC: u32 = 5; +pub const ILL_PRVREG: u32 = 6; +pub const ILL_COPROC: u32 = 7; +pub const ILL_BADSTK: u32 = 8; +pub const ILL_BADIADDR: u32 = 9; +pub const __ILL_BREAK: u32 = 10; +pub const __ILL_BNDMOD: u32 = 11; +pub const NSIGILL: u32 = 11; +pub const FPE_INTDIV: u32 = 1; +pub const FPE_INTOVF: u32 = 2; +pub const FPE_FLTDIV: u32 = 3; +pub const FPE_FLTOVF: u32 = 4; +pub const FPE_FLTUND: u32 = 5; +pub const FPE_FLTRES: u32 = 6; +pub const FPE_FLTINV: u32 = 7; +pub const FPE_FLTSUB: u32 = 8; +pub const __FPE_DECOVF: u32 = 9; +pub const __FPE_DECDIV: u32 = 10; +pub const __FPE_DECERR: u32 = 11; +pub const __FPE_INVASC: u32 = 12; +pub const __FPE_INVDEC: u32 = 13; +pub const FPE_FLTUNK: u32 = 14; +pub const FPE_CONDTRAP: u32 = 15; +pub const NSIGFPE: u32 = 15; +pub const SEGV_MAPERR: u32 = 1; +pub const SEGV_ACCERR: u32 = 2; +pub const SEGV_BNDERR: u32 = 3; +pub const SEGV_PKUERR: u32 = 4; +pub const SEGV_ACCADI: u32 = 5; +pub const SEGV_ADIDERR: u32 = 6; +pub const SEGV_ADIPERR: u32 = 7; +pub const SEGV_MTEAERR: u32 = 8; +pub const SEGV_MTESERR: u32 = 9; +pub const NSIGSEGV: u32 = 9; +pub const BUS_ADRALN: u32 = 1; +pub const BUS_ADRERR: u32 = 2; +pub const BUS_OBJERR: u32 = 3; +pub const BUS_MCEERR_AR: u32 = 4; +pub const BUS_MCEERR_AO: u32 = 5; +pub const NSIGBUS: u32 = 5; +pub const TRAP_BRKPT: u32 = 1; +pub const TRAP_TRACE: u32 = 2; +pub const TRAP_BRANCH: u32 = 3; +pub const TRAP_HWBKPT: u32 = 4; +pub const TRAP_UNK: u32 = 5; +pub const TRAP_PERF: u32 = 6; +pub const NSIGTRAP: u32 = 6; +pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; +pub const CLD_EXITED: u32 = 1; +pub const CLD_KILLED: u32 = 2; +pub const CLD_DUMPED: u32 = 3; +pub const CLD_TRAPPED: u32 = 4; +pub const CLD_STOPPED: u32 = 5; +pub const CLD_CONTINUED: u32 = 6; +pub const NSIGCHLD: u32 = 6; +pub const POLL_IN: u32 = 1; +pub const POLL_OUT: u32 = 2; +pub const POLL_MSG: u32 = 3; +pub const POLL_ERR: u32 = 4; +pub const POLL_PRI: u32 = 5; +pub const POLL_HUP: u32 = 6; +pub const NSIGPOLL: u32 = 6; +pub const SYS_SECCOMP: u32 = 1; +pub const SYS_USER_DISPATCH: u32 = 2; +pub const NSIGSYS: u32 = 2; +pub const EMT_TAGOVF: u32 = 1; +pub const NSIGEMT: u32 = 1; +pub const SIGEV_SIGNAL: u32 = 0; +pub const SIGEV_NONE: u32 = 1; +pub const SIGEV_THREAD: u32 = 2; +pub const SIGEV_THREAD_ID: u32 = 4; +pub const SIGEV_MAX_SIZE: u32 = 64; +pub const SS_ONSTACK: u32 = 1; +pub const SS_DISABLE: u32 = 2; +pub const SS_AUTODISARM: u32 = 2147483648; +pub const SS_FLAG_BITS: u32 = 2147483648; +pub const S_IFMT: u32 = 61440; +pub const S_IFSOCK: u32 = 49152; +pub const S_IFLNK: u32 = 40960; +pub const S_IFREG: u32 = 32768; +pub const S_IFBLK: u32 = 24576; +pub const S_IFDIR: u32 = 16384; +pub const S_IFCHR: u32 = 8192; +pub const S_IFIFO: u32 = 4096; +pub const S_ISUID: u32 = 2048; +pub const S_ISGID: u32 = 1024; +pub const S_ISVTX: u32 = 512; +pub const S_IRWXU: u32 = 448; +pub const S_IRUSR: u32 = 256; +pub const S_IWUSR: u32 = 128; +pub const S_IXUSR: u32 = 64; +pub const S_IRWXG: u32 = 56; +pub const S_IRGRP: u32 = 32; +pub const S_IWGRP: u32 = 16; +pub const S_IXGRP: u32 = 8; +pub const S_IRWXO: u32 = 7; +pub const S_IROTH: u32 = 4; +pub const S_IWOTH: u32 = 2; +pub const S_IXOTH: u32 = 1; +pub const STATX_TYPE: u32 = 1; +pub const STATX_MODE: u32 = 2; +pub const STATX_NLINK: u32 = 4; +pub const STATX_UID: u32 = 8; +pub const STATX_GID: u32 = 16; +pub const STATX_ATIME: u32 = 32; +pub const STATX_MTIME: u32 = 64; +pub const STATX_CTIME: u32 = 128; +pub const STATX_INO: u32 = 256; +pub const STATX_SIZE: u32 = 512; +pub const STATX_BLOCKS: u32 = 1024; +pub const STATX_BASIC_STATS: u32 = 2047; +pub const STATX_BTIME: u32 = 2048; +pub const STATX_MNT_ID: u32 = 4096; +pub const STATX_DIOALIGN: u32 = 8192; +pub const STATX__RESERVED: u32 = 2147483648; +pub const STATX_ALL: u32 = 4095; +pub const STATX_ATTR_COMPRESSED: u32 = 4; +pub const STATX_ATTR_IMMUTABLE: u32 = 16; +pub const STATX_ATTR_APPEND: u32 = 32; +pub const STATX_ATTR_NODUMP: u32 = 64; +pub const STATX_ATTR_ENCRYPTED: u32 = 2048; +pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; +pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; +pub const STATX_ATTR_VERITY: u32 = 1048576; +pub const STATX_ATTR_DAX: u32 = 2097152; +pub const TIOCM_LE: u32 = 1; +pub const TIOCM_DTR: u32 = 2; +pub const TIOCM_RTS: u32 = 4; +pub const TIOCM_ST: u32 = 8; +pub const TIOCM_SR: u32 = 16; +pub const TIOCM_CTS: u32 = 32; +pub const TIOCM_CAR: u32 = 64; +pub const TIOCM_RNG: u32 = 128; +pub const TIOCM_DSR: u32 = 256; +pub const TIOCM_CD: u32 = 64; +pub const TIOCM_RI: u32 = 128; +pub const TIOCM_OUT1: u32 = 8192; +pub const TIOCM_OUT2: u32 = 16384; +pub const TIOCM_LOOP: u32 = 32768; +pub const TIOCPKT_DATA: u32 = 0; +pub const TIOCPKT_FLUSHREAD: u32 = 1; +pub const TIOCPKT_FLUSHWRITE: u32 = 2; +pub const TIOCPKT_STOP: u32 = 4; +pub const TIOCPKT_START: u32 = 8; +pub const TIOCPKT_NOSTOP: u32 = 16; +pub const TIOCPKT_DOSTOP: u32 = 32; +pub const TIOCPKT_IOCTL: u32 = 64; +pub const TIOCSER_TEMT: u32 = 1; +pub const IGNBRK: u32 = 1; +pub const BRKINT: u32 = 2; +pub const IGNPAR: u32 = 4; +pub const PARMRK: u32 = 8; +pub const INPCK: u32 = 16; +pub const ISTRIP: u32 = 32; +pub const INLCR: u32 = 64; +pub const IGNCR: u32 = 128; +pub const ICRNL: u32 = 256; +pub const IXANY: u32 = 2048; +pub const OPOST: u32 = 1; +pub const OCRNL: u32 = 8; +pub const ONOCR: u32 = 16; +pub const ONLRET: u32 = 32; +pub const OFILL: u32 = 64; +pub const OFDEL: u32 = 128; +pub const B0: u32 = 0; +pub const B50: u32 = 1; +pub const B75: u32 = 2; +pub const B110: u32 = 3; +pub const B134: u32 = 4; +pub const B150: u32 = 5; +pub const B200: u32 = 6; +pub const B300: u32 = 7; +pub const B600: u32 = 8; +pub const B1200: u32 = 9; +pub const B1800: u32 = 10; +pub const B2400: u32 = 11; +pub const B4800: u32 = 12; +pub const B9600: u32 = 13; +pub const B19200: u32 = 14; +pub const B38400: u32 = 15; +pub const EXTA: u32 = 14; +pub const EXTB: u32 = 15; +pub const ADDRB: u32 = 536870912; +pub const CMSPAR: u32 = 1073741824; +pub const CRTSCTS: u32 = 2147483648; +pub const IBSHIFT: u32 = 16; +pub const TCOOFF: u32 = 0; +pub const TCOON: u32 = 1; +pub const TCIOFF: u32 = 2; +pub const TCION: u32 = 3; +pub const TCIFLUSH: u32 = 0; +pub const TCOFLUSH: u32 = 1; +pub const TCIOFLUSH: u32 = 2; +pub const NCCS: u32 = 19; +pub const VINTR: u32 = 0; +pub const VQUIT: u32 = 1; +pub const VERASE: u32 = 2; +pub const VKILL: u32 = 3; +pub const VEOF: u32 = 4; +pub const VMIN: u32 = 5; +pub const VEOL: u32 = 6; +pub const VTIME: u32 = 7; +pub const VEOL2: u32 = 8; +pub const VSWTC: u32 = 9; +pub const VWERASE: u32 = 10; +pub const VREPRINT: u32 = 11; +pub const VSUSP: u32 = 12; +pub const VSTART: u32 = 13; +pub const VSTOP: u32 = 14; +pub const VLNEXT: u32 = 15; +pub const VDISCARD: u32 = 16; +pub const IXON: u32 = 512; +pub const IXOFF: u32 = 1024; +pub const IUCLC: u32 = 4096; +pub const IMAXBEL: u32 = 8192; +pub const IUTF8: u32 = 16384; +pub const ONLCR: u32 = 2; +pub const OLCUC: u32 = 4; +pub const NLDLY: u32 = 768; +pub const NL0: u32 = 0; +pub const NL1: u32 = 256; +pub const NL2: u32 = 512; +pub const NL3: u32 = 768; +pub const TABDLY: u32 = 3072; +pub const TAB0: u32 = 0; +pub const TAB1: u32 = 1024; +pub const TAB2: u32 = 2048; +pub const TAB3: u32 = 3072; +pub const XTABS: u32 = 3072; +pub const CRDLY: u32 = 12288; +pub const CR0: u32 = 0; +pub const CR1: u32 = 4096; +pub const CR2: u32 = 8192; +pub const CR3: u32 = 12288; +pub const FFDLY: u32 = 16384; +pub const FF0: u32 = 0; +pub const FF1: u32 = 16384; +pub const BSDLY: u32 = 32768; +pub const BS0: u32 = 0; +pub const BS1: u32 = 32768; +pub const VTDLY: u32 = 65536; +pub const VT0: u32 = 0; +pub const VT1: u32 = 65536; +pub const CBAUD: u32 = 255; +pub const CBAUDEX: u32 = 0; +pub const BOTHER: u32 = 31; +pub const B57600: u32 = 16; +pub const B115200: u32 = 17; +pub const B230400: u32 = 18; +pub const B460800: u32 = 19; +pub const B500000: u32 = 20; +pub const B576000: u32 = 21; +pub const B921600: u32 = 22; +pub const B1000000: u32 = 23; +pub const B1152000: u32 = 24; +pub const B1500000: u32 = 25; +pub const B2000000: u32 = 26; +pub const B2500000: u32 = 27; +pub const B3000000: u32 = 28; +pub const B3500000: u32 = 29; +pub const B4000000: u32 = 30; +pub const CSIZE: u32 = 768; +pub const CS5: u32 = 0; +pub const CS6: u32 = 256; +pub const CS7: u32 = 512; +pub const CS8: u32 = 768; +pub const CSTOPB: u32 = 1024; +pub const CREAD: u32 = 2048; +pub const PARENB: u32 = 4096; +pub const PARODD: u32 = 8192; +pub const HUPCL: u32 = 16384; +pub const CLOCAL: u32 = 32768; +pub const CIBAUD: u32 = 16711680; +pub const ISIG: u32 = 128; +pub const ICANON: u32 = 256; +pub const XCASE: u32 = 16384; +pub const ECHO: u32 = 8; +pub const ECHOE: u32 = 2; +pub const ECHOK: u32 = 4; +pub const ECHONL: u32 = 16; +pub const NOFLSH: u32 = 2147483648; +pub const TOSTOP: u32 = 4194304; +pub const ECHOCTL: u32 = 64; +pub const ECHOPRT: u32 = 32; +pub const ECHOKE: u32 = 1; +pub const FLUSHO: u32 = 8388608; +pub const PENDIN: u32 = 536870912; +pub const IEXTEN: u32 = 1024; +pub const EXTPROC: u32 = 268435456; +pub const TCSANOW: u32 = 0; +pub const TCSADRAIN: u32 = 1; +pub const TCSAFLUSH: u32 = 2; +pub const NCC: u32 = 10; +pub const _VINTR: u32 = 0; +pub const _VQUIT: u32 = 1; +pub const _VERASE: u32 = 2; +pub const _VKILL: u32 = 3; +pub const _VEOF: u32 = 4; +pub const _VMIN: u32 = 5; +pub const _VEOL: u32 = 6; +pub const _VTIME: u32 = 7; +pub const _VEOL2: u32 = 8; +pub const _VSWTC: u32 = 9; +pub const UIO_FASTIOV: u32 = 8; +pub const UIO_MAXIOV: u32 = 1024; +pub const __NR_restart_syscall: u32 = 0; +pub const __NR_exit: u32 = 1; +pub const __NR_fork: u32 = 2; +pub const __NR_read: u32 = 3; +pub const __NR_write: u32 = 4; +pub const __NR_open: u32 = 5; +pub const __NR_close: u32 = 6; +pub const __NR_waitpid: u32 = 7; +pub const __NR_creat: u32 = 8; +pub const __NR_link: u32 = 9; +pub const __NR_unlink: u32 = 10; +pub const __NR_execve: u32 = 11; +pub const __NR_chdir: u32 = 12; +pub const __NR_time: u32 = 13; +pub const __NR_mknod: u32 = 14; +pub const __NR_chmod: u32 = 15; +pub const __NR_lchown: u32 = 16; +pub const __NR_break: u32 = 17; +pub const __NR_oldstat: u32 = 18; +pub const __NR_lseek: u32 = 19; +pub const __NR_getpid: u32 = 20; +pub const __NR_mount: u32 = 21; +pub const __NR_umount: u32 = 22; +pub const __NR_setuid: u32 = 23; +pub const __NR_getuid: u32 = 24; +pub const __NR_stime: u32 = 25; +pub const __NR_ptrace: u32 = 26; +pub const __NR_alarm: u32 = 27; +pub const __NR_oldfstat: u32 = 28; +pub const __NR_pause: u32 = 29; +pub const __NR_utime: u32 = 30; +pub const __NR_stty: u32 = 31; +pub const __NR_gtty: u32 = 32; +pub const __NR_access: u32 = 33; +pub const __NR_nice: u32 = 34; +pub const __NR_ftime: u32 = 35; +pub const __NR_sync: u32 = 36; +pub const __NR_kill: u32 = 37; +pub const __NR_rename: u32 = 38; +pub const __NR_mkdir: u32 = 39; +pub const __NR_rmdir: u32 = 40; +pub const __NR_dup: u32 = 41; +pub const __NR_pipe: u32 = 42; +pub const __NR_times: u32 = 43; +pub const __NR_prof: u32 = 44; +pub const __NR_brk: u32 = 45; +pub const __NR_setgid: u32 = 46; +pub const __NR_getgid: u32 = 47; +pub const __NR_signal: u32 = 48; +pub const __NR_geteuid: u32 = 49; +pub const __NR_getegid: u32 = 50; +pub const __NR_acct: u32 = 51; +pub const __NR_umount2: u32 = 52; +pub const __NR_lock: u32 = 53; +pub const __NR_ioctl: u32 = 54; +pub const __NR_fcntl: u32 = 55; +pub const __NR_mpx: u32 = 56; +pub const __NR_setpgid: u32 = 57; +pub const __NR_ulimit: u32 = 58; +pub const __NR_oldolduname: u32 = 59; +pub const __NR_umask: u32 = 60; +pub const __NR_chroot: u32 = 61; +pub const __NR_ustat: u32 = 62; +pub const __NR_dup2: u32 = 63; +pub const __NR_getppid: u32 = 64; +pub const __NR_getpgrp: u32 = 65; +pub const __NR_setsid: u32 = 66; +pub const __NR_sigaction: u32 = 67; +pub const __NR_sgetmask: u32 = 68; +pub const __NR_ssetmask: u32 = 69; +pub const __NR_setreuid: u32 = 70; +pub const __NR_setregid: u32 = 71; +pub const __NR_sigsuspend: u32 = 72; +pub const __NR_sigpending: u32 = 73; +pub const __NR_sethostname: u32 = 74; +pub const __NR_setrlimit: u32 = 75; +pub const __NR_getrlimit: u32 = 76; +pub const __NR_getrusage: u32 = 77; +pub const __NR_gettimeofday: u32 = 78; +pub const __NR_settimeofday: u32 = 79; +pub const __NR_getgroups: u32 = 80; +pub const __NR_setgroups: u32 = 81; +pub const __NR_select: u32 = 82; +pub const __NR_symlink: u32 = 83; +pub const __NR_oldlstat: u32 = 84; +pub const __NR_readlink: u32 = 85; +pub const __NR_uselib: u32 = 86; +pub const __NR_swapon: u32 = 87; +pub const __NR_reboot: u32 = 88; +pub const __NR_readdir: u32 = 89; +pub const __NR_mmap: u32 = 90; +pub const __NR_munmap: u32 = 91; +pub const __NR_truncate: u32 = 92; +pub const __NR_ftruncate: u32 = 93; +pub const __NR_fchmod: u32 = 94; +pub const __NR_fchown: u32 = 95; +pub const __NR_getpriority: u32 = 96; +pub const __NR_setpriority: u32 = 97; +pub const __NR_profil: u32 = 98; +pub const __NR_statfs: u32 = 99; +pub const __NR_fstatfs: u32 = 100; +pub const __NR_ioperm: u32 = 101; +pub const __NR_socketcall: u32 = 102; +pub const __NR_syslog: u32 = 103; +pub const __NR_setitimer: u32 = 104; +pub const __NR_getitimer: u32 = 105; +pub const __NR_stat: u32 = 106; +pub const __NR_lstat: u32 = 107; +pub const __NR_fstat: u32 = 108; +pub const __NR_olduname: u32 = 109; +pub const __NR_iopl: u32 = 110; +pub const __NR_vhangup: u32 = 111; +pub const __NR_idle: u32 = 112; +pub const __NR_vm86: u32 = 113; +pub const __NR_wait4: u32 = 114; +pub const __NR_swapoff: u32 = 115; +pub const __NR_sysinfo: u32 = 116; +pub const __NR_ipc: u32 = 117; +pub const __NR_fsync: u32 = 118; +pub const __NR_sigreturn: u32 = 119; +pub const __NR_clone: u32 = 120; +pub const __NR_setdomainname: u32 = 121; +pub const __NR_uname: u32 = 122; +pub const __NR_modify_ldt: u32 = 123; +pub const __NR_adjtimex: u32 = 124; +pub const __NR_mprotect: u32 = 125; +pub const __NR_sigprocmask: u32 = 126; +pub const __NR_create_module: u32 = 127; +pub const __NR_init_module: u32 = 128; +pub const __NR_delete_module: u32 = 129; +pub const __NR_get_kernel_syms: u32 = 130; +pub const __NR_quotactl: u32 = 131; +pub const __NR_getpgid: u32 = 132; +pub const __NR_fchdir: u32 = 133; +pub const __NR_bdflush: u32 = 134; +pub const __NR_sysfs: u32 = 135; +pub const __NR_personality: u32 = 136; +pub const __NR_afs_syscall: u32 = 137; +pub const __NR_setfsuid: u32 = 138; +pub const __NR_setfsgid: u32 = 139; +pub const __NR__llseek: u32 = 140; +pub const __NR_getdents: u32 = 141; +pub const __NR__newselect: u32 = 142; +pub const __NR_flock: u32 = 143; +pub const __NR_msync: u32 = 144; +pub const __NR_readv: u32 = 145; +pub const __NR_writev: u32 = 146; +pub const __NR_getsid: u32 = 147; +pub const __NR_fdatasync: u32 = 148; +pub const __NR__sysctl: u32 = 149; +pub const __NR_mlock: u32 = 150; +pub const __NR_munlock: u32 = 151; +pub const __NR_mlockall: u32 = 152; +pub const __NR_munlockall: u32 = 153; +pub const __NR_sched_setparam: u32 = 154; +pub const __NR_sched_getparam: u32 = 155; +pub const __NR_sched_setscheduler: u32 = 156; +pub const __NR_sched_getscheduler: u32 = 157; +pub const __NR_sched_yield: u32 = 158; +pub const __NR_sched_get_priority_max: u32 = 159; +pub const __NR_sched_get_priority_min: u32 = 160; +pub const __NR_sched_rr_get_interval: u32 = 161; +pub const __NR_nanosleep: u32 = 162; +pub const __NR_mremap: u32 = 163; +pub const __NR_setresuid: u32 = 164; +pub const __NR_getresuid: u32 = 165; +pub const __NR_query_module: u32 = 166; +pub const __NR_poll: u32 = 167; +pub const __NR_nfsservctl: u32 = 168; +pub const __NR_setresgid: u32 = 169; +pub const __NR_getresgid: u32 = 170; +pub const __NR_prctl: u32 = 171; +pub const __NR_rt_sigreturn: u32 = 172; +pub const __NR_rt_sigaction: u32 = 173; +pub const __NR_rt_sigprocmask: u32 = 174; +pub const __NR_rt_sigpending: u32 = 175; +pub const __NR_rt_sigtimedwait: u32 = 176; +pub const __NR_rt_sigqueueinfo: u32 = 177; +pub const __NR_rt_sigsuspend: u32 = 178; +pub const __NR_pread64: u32 = 179; +pub const __NR_pwrite64: u32 = 180; +pub const __NR_chown: u32 = 181; +pub const __NR_getcwd: u32 = 182; +pub const __NR_capget: u32 = 183; +pub const __NR_capset: u32 = 184; +pub const __NR_sigaltstack: u32 = 185; +pub const __NR_sendfile: u32 = 186; +pub const __NR_getpmsg: u32 = 187; +pub const __NR_putpmsg: u32 = 188; +pub const __NR_vfork: u32 = 189; +pub const __NR_ugetrlimit: u32 = 190; +pub const __NR_readahead: u32 = 191; +pub const __NR_mmap2: u32 = 192; +pub const __NR_truncate64: u32 = 193; +pub const __NR_ftruncate64: u32 = 194; +pub const __NR_stat64: u32 = 195; +pub const __NR_lstat64: u32 = 196; +pub const __NR_fstat64: u32 = 197; +pub const __NR_pciconfig_read: u32 = 198; +pub const __NR_pciconfig_write: u32 = 199; +pub const __NR_pciconfig_iobase: u32 = 200; +pub const __NR_multiplexer: u32 = 201; +pub const __NR_getdents64: u32 = 202; +pub const __NR_pivot_root: u32 = 203; +pub const __NR_fcntl64: u32 = 204; +pub const __NR_madvise: u32 = 205; +pub const __NR_mincore: u32 = 206; +pub const __NR_gettid: u32 = 207; +pub const __NR_tkill: u32 = 208; +pub const __NR_setxattr: u32 = 209; +pub const __NR_lsetxattr: u32 = 210; +pub const __NR_fsetxattr: u32 = 211; +pub const __NR_getxattr: u32 = 212; +pub const __NR_lgetxattr: u32 = 213; +pub const __NR_fgetxattr: u32 = 214; +pub const __NR_listxattr: u32 = 215; +pub const __NR_llistxattr: u32 = 216; +pub const __NR_flistxattr: u32 = 217; +pub const __NR_removexattr: u32 = 218; +pub const __NR_lremovexattr: u32 = 219; +pub const __NR_fremovexattr: u32 = 220; +pub const __NR_futex: u32 = 221; +pub const __NR_sched_setaffinity: u32 = 222; +pub const __NR_sched_getaffinity: u32 = 223; +pub const __NR_tuxcall: u32 = 225; +pub const __NR_sendfile64: u32 = 226; +pub const __NR_io_setup: u32 = 227; +pub const __NR_io_destroy: u32 = 228; +pub const __NR_io_getevents: u32 = 229; +pub const __NR_io_submit: u32 = 230; +pub const __NR_io_cancel: u32 = 231; +pub const __NR_set_tid_address: u32 = 232; +pub const __NR_fadvise64: u32 = 233; +pub const __NR_exit_group: u32 = 234; +pub const __NR_lookup_dcookie: u32 = 235; +pub const __NR_epoll_create: u32 = 236; +pub const __NR_epoll_ctl: u32 = 237; +pub const __NR_epoll_wait: u32 = 238; +pub const __NR_remap_file_pages: u32 = 239; +pub const __NR_timer_create: u32 = 240; +pub const __NR_timer_settime: u32 = 241; +pub const __NR_timer_gettime: u32 = 242; +pub const __NR_timer_getoverrun: u32 = 243; +pub const __NR_timer_delete: u32 = 244; +pub const __NR_clock_settime: u32 = 245; +pub const __NR_clock_gettime: u32 = 246; +pub const __NR_clock_getres: u32 = 247; +pub const __NR_clock_nanosleep: u32 = 248; +pub const __NR_swapcontext: u32 = 249; +pub const __NR_tgkill: u32 = 250; +pub const __NR_utimes: u32 = 251; +pub const __NR_statfs64: u32 = 252; +pub const __NR_fstatfs64: u32 = 253; +pub const __NR_fadvise64_64: u32 = 254; +pub const __NR_rtas: u32 = 255; +pub const __NR_sys_debug_setcontext: u32 = 256; +pub const __NR_migrate_pages: u32 = 258; +pub const __NR_mbind: u32 = 259; +pub const __NR_get_mempolicy: u32 = 260; +pub const __NR_set_mempolicy: u32 = 261; +pub const __NR_mq_open: u32 = 262; +pub const __NR_mq_unlink: u32 = 263; +pub const __NR_mq_timedsend: u32 = 264; +pub const __NR_mq_timedreceive: u32 = 265; +pub const __NR_mq_notify: u32 = 266; +pub const __NR_mq_getsetattr: u32 = 267; +pub const __NR_kexec_load: u32 = 268; +pub const __NR_add_key: u32 = 269; +pub const __NR_request_key: u32 = 270; +pub const __NR_keyctl: u32 = 271; +pub const __NR_waitid: u32 = 272; +pub const __NR_ioprio_set: u32 = 273; +pub const __NR_ioprio_get: u32 = 274; +pub const __NR_inotify_init: u32 = 275; +pub const __NR_inotify_add_watch: u32 = 276; +pub const __NR_inotify_rm_watch: u32 = 277; +pub const __NR_spu_run: u32 = 278; +pub const __NR_spu_create: u32 = 279; +pub const __NR_pselect6: u32 = 280; +pub const __NR_ppoll: u32 = 281; +pub const __NR_unshare: u32 = 282; +pub const __NR_splice: u32 = 283; +pub const __NR_tee: u32 = 284; +pub const __NR_vmsplice: u32 = 285; +pub const __NR_openat: u32 = 286; +pub const __NR_mkdirat: u32 = 287; +pub const __NR_mknodat: u32 = 288; +pub const __NR_fchownat: u32 = 289; +pub const __NR_futimesat: u32 = 290; +pub const __NR_fstatat64: u32 = 291; +pub const __NR_unlinkat: u32 = 292; +pub const __NR_renameat: u32 = 293; +pub const __NR_linkat: u32 = 294; +pub const __NR_symlinkat: u32 = 295; +pub const __NR_readlinkat: u32 = 296; +pub const __NR_fchmodat: u32 = 297; +pub const __NR_faccessat: u32 = 298; +pub const __NR_get_robust_list: u32 = 299; +pub const __NR_set_robust_list: u32 = 300; +pub const __NR_move_pages: u32 = 301; +pub const __NR_getcpu: u32 = 302; +pub const __NR_epoll_pwait: u32 = 303; +pub const __NR_utimensat: u32 = 304; +pub const __NR_signalfd: u32 = 305; +pub const __NR_timerfd_create: u32 = 306; +pub const __NR_eventfd: u32 = 307; +pub const __NR_sync_file_range2: u32 = 308; +pub const __NR_fallocate: u32 = 309; +pub const __NR_subpage_prot: u32 = 310; +pub const __NR_timerfd_settime: u32 = 311; +pub const __NR_timerfd_gettime: u32 = 312; +pub const __NR_signalfd4: u32 = 313; +pub const __NR_eventfd2: u32 = 314; +pub const __NR_epoll_create1: u32 = 315; +pub const __NR_dup3: u32 = 316; +pub const __NR_pipe2: u32 = 317; +pub const __NR_inotify_init1: u32 = 318; +pub const __NR_perf_event_open: u32 = 319; +pub const __NR_preadv: u32 = 320; +pub const __NR_pwritev: u32 = 321; +pub const __NR_rt_tgsigqueueinfo: u32 = 322; +pub const __NR_fanotify_init: u32 = 323; +pub const __NR_fanotify_mark: u32 = 324; +pub const __NR_prlimit64: u32 = 325; +pub const __NR_socket: u32 = 326; +pub const __NR_bind: u32 = 327; +pub const __NR_connect: u32 = 328; +pub const __NR_listen: u32 = 329; +pub const __NR_accept: u32 = 330; +pub const __NR_getsockname: u32 = 331; +pub const __NR_getpeername: u32 = 332; +pub const __NR_socketpair: u32 = 333; +pub const __NR_send: u32 = 334; +pub const __NR_sendto: u32 = 335; +pub const __NR_recv: u32 = 336; +pub const __NR_recvfrom: u32 = 337; +pub const __NR_shutdown: u32 = 338; +pub const __NR_setsockopt: u32 = 339; +pub const __NR_getsockopt: u32 = 340; +pub const __NR_sendmsg: u32 = 341; +pub const __NR_recvmsg: u32 = 342; +pub const __NR_recvmmsg: u32 = 343; +pub const __NR_accept4: u32 = 344; +pub const __NR_name_to_handle_at: u32 = 345; +pub const __NR_open_by_handle_at: u32 = 346; +pub const __NR_clock_adjtime: u32 = 347; +pub const __NR_syncfs: u32 = 348; +pub const __NR_sendmmsg: u32 = 349; +pub const __NR_setns: u32 = 350; +pub const __NR_process_vm_readv: u32 = 351; +pub const __NR_process_vm_writev: u32 = 352; +pub const __NR_finit_module: u32 = 353; +pub const __NR_kcmp: u32 = 354; +pub const __NR_sched_setattr: u32 = 355; +pub const __NR_sched_getattr: u32 = 356; +pub const __NR_renameat2: u32 = 357; +pub const __NR_seccomp: u32 = 358; +pub const __NR_getrandom: u32 = 359; +pub const __NR_memfd_create: u32 = 360; +pub const __NR_bpf: u32 = 361; +pub const __NR_execveat: u32 = 362; +pub const __NR_switch_endian: u32 = 363; +pub const __NR_userfaultfd: u32 = 364; +pub const __NR_membarrier: u32 = 365; +pub const __NR_mlock2: u32 = 378; +pub const __NR_copy_file_range: u32 = 379; +pub const __NR_preadv2: u32 = 380; +pub const __NR_pwritev2: u32 = 381; +pub const __NR_kexec_file_load: u32 = 382; +pub const __NR_statx: u32 = 383; +pub const __NR_pkey_alloc: u32 = 384; +pub const __NR_pkey_free: u32 = 385; +pub const __NR_pkey_mprotect: u32 = 386; +pub const __NR_rseq: u32 = 387; +pub const __NR_io_pgetevents: u32 = 388; +pub const __NR_semget: u32 = 393; +pub const __NR_semctl: u32 = 394; +pub const __NR_shmget: u32 = 395; +pub const __NR_shmctl: u32 = 396; +pub const __NR_shmat: u32 = 397; +pub const __NR_shmdt: u32 = 398; +pub const __NR_msgget: u32 = 399; +pub const __NR_msgsnd: u32 = 400; +pub const __NR_msgrcv: u32 = 401; +pub const __NR_msgctl: u32 = 402; +pub const __NR_clock_gettime64: u32 = 403; +pub const __NR_clock_settime64: u32 = 404; +pub const __NR_clock_adjtime64: u32 = 405; +pub const __NR_clock_getres_time64: u32 = 406; +pub const __NR_clock_nanosleep_time64: u32 = 407; +pub const __NR_timer_gettime64: u32 = 408; +pub const __NR_timer_settime64: u32 = 409; +pub const __NR_timerfd_gettime64: u32 = 410; +pub const __NR_timerfd_settime64: u32 = 411; +pub const __NR_utimensat_time64: u32 = 412; +pub const __NR_pselect6_time64: u32 = 413; +pub const __NR_ppoll_time64: u32 = 414; +pub const __NR_io_pgetevents_time64: u32 = 416; +pub const __NR_recvmmsg_time64: u32 = 417; +pub const __NR_mq_timedsend_time64: u32 = 418; +pub const __NR_mq_timedreceive_time64: u32 = 419; +pub const __NR_semtimedop_time64: u32 = 420; +pub const __NR_rt_sigtimedwait_time64: u32 = 421; +pub const __NR_futex_time64: u32 = 422; +pub const __NR_sched_rr_get_interval_time64: u32 = 423; +pub const __NR_pidfd_send_signal: u32 = 424; +pub const __NR_io_uring_setup: u32 = 425; +pub const __NR_io_uring_enter: u32 = 426; +pub const __NR_io_uring_register: u32 = 427; +pub const __NR_open_tree: u32 = 428; +pub const __NR_move_mount: u32 = 429; +pub const __NR_fsopen: u32 = 430; +pub const __NR_fsconfig: u32 = 431; +pub const __NR_fsmount: u32 = 432; +pub const __NR_fspick: u32 = 433; +pub const __NR_pidfd_open: u32 = 434; +pub const __NR_clone3: u32 = 435; +pub const __NR_close_range: u32 = 436; +pub const __NR_openat2: u32 = 437; +pub const __NR_pidfd_getfd: u32 = 438; +pub const __NR_faccessat2: u32 = 439; +pub const __NR_process_madvise: u32 = 440; +pub const __NR_epoll_pwait2: u32 = 441; +pub const __NR_mount_setattr: u32 = 442; +pub const __NR_quotactl_fd: u32 = 443; +pub const __NR_landlock_create_ruleset: u32 = 444; +pub const __NR_landlock_add_rule: u32 = 445; +pub const __NR_landlock_restrict_self: u32 = 446; +pub const __NR_process_mrelease: u32 = 448; +pub const __NR_futex_waitv: u32 = 449; +pub const __NR_set_mempolicy_home_node: u32 = 450; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const P_ALL: u32 = 0; +pub const P_PID: u32 = 1; +pub const P_PGID: u32 = 2; +pub const P_PIDFD: u32 = 3; +pub const XATTR_CREATE: u32 = 1; +pub const XATTR_REPLACE: u32 = 2; +pub const XATTR_OS2_PREFIX: &[u8; 5] = b"os2.\0"; +pub const XATTR_MAC_OSX_PREFIX: &[u8; 5] = b"osx.\0"; +pub const XATTR_BTRFS_PREFIX: &[u8; 7] = b"btrfs.\0"; +pub const XATTR_HURD_PREFIX: &[u8; 5] = b"gnu.\0"; +pub const XATTR_SECURITY_PREFIX: &[u8; 10] = b"security.\0"; +pub const XATTR_SYSTEM_PREFIX: &[u8; 8] = b"system.\0"; +pub const XATTR_TRUSTED_PREFIX: &[u8; 9] = b"trusted.\0"; +pub const XATTR_USER_PREFIX: &[u8; 6] = b"user.\0"; +pub const XATTR_EVM_SUFFIX: &[u8; 4] = b"evm\0"; +pub const XATTR_NAME_EVM: &[u8; 13] = b"security.evm\0"; +pub const XATTR_IMA_SUFFIX: &[u8; 4] = b"ima\0"; +pub const XATTR_NAME_IMA: &[u8; 13] = b"security.ima\0"; +pub const XATTR_SELINUX_SUFFIX: &[u8; 8] = b"selinux\0"; +pub const XATTR_NAME_SELINUX: &[u8; 17] = b"security.selinux\0"; +pub const XATTR_SMACK_SUFFIX: &[u8; 8] = b"SMACK64\0"; +pub const XATTR_SMACK_IPIN: &[u8; 12] = b"SMACK64IPIN\0"; +pub const XATTR_SMACK_IPOUT: &[u8; 13] = b"SMACK64IPOUT\0"; +pub const XATTR_SMACK_EXEC: &[u8; 12] = b"SMACK64EXEC\0"; +pub const XATTR_SMACK_TRANSMUTE: &[u8; 17] = b"SMACK64TRANSMUTE\0"; +pub const XATTR_SMACK_MMAP: &[u8; 12] = b"SMACK64MMAP\0"; +pub const XATTR_NAME_SMACK: &[u8; 17] = b"security.SMACK64\0"; +pub const XATTR_NAME_SMACKIPIN: &[u8; 21] = b"security.SMACK64IPIN\0"; +pub const XATTR_NAME_SMACKIPOUT: &[u8; 22] = b"security.SMACK64IPOUT\0"; +pub const XATTR_NAME_SMACKEXEC: &[u8; 21] = b"security.SMACK64EXEC\0"; +pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26] = b"security.SMACK64TRANSMUTE\0"; +pub const XATTR_NAME_SMACKMMAP: &[u8; 21] = b"security.SMACK64MMAP\0"; +pub const XATTR_APPARMOR_SUFFIX: &[u8; 9] = b"apparmor\0"; +pub const XATTR_NAME_APPARMOR: &[u8; 18] = b"security.apparmor\0"; +pub const XATTR_CAPS_SUFFIX: &[u8; 11] = b"capability\0"; +pub const XATTR_NAME_CAPS: &[u8; 20] = b"security.capability\0"; +pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17] = b"posix_acl_access\0"; +pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24] = b"system.posix_acl_access\0"; +pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18] = b"posix_acl_default\0"; +pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25] = b"system.posix_acl_default\0"; +pub const MFD_CLOEXEC: u32 = 1; +pub const MFD_ALLOW_SEALING: u32 = 2; +pub const MFD_HUGETLB: u32 = 4; +pub const MFD_NOEXEC_SEAL: u32 = 8; +pub const MFD_EXEC: u32 = 16; +pub const MFD_HUGE_SHIFT: u32 = 26; +pub const MFD_HUGE_MASK: u32 = 63; +pub const MFD_HUGE_64KB: u32 = 1073741824; +pub const MFD_HUGE_512KB: u32 = 1275068416; +pub const MFD_HUGE_1MB: u32 = 1342177280; +pub const MFD_HUGE_2MB: u32 = 1409286144; +pub const MFD_HUGE_8MB: u32 = 1543503872; +pub const MFD_HUGE_16MB: u32 = 1610612736; +pub const MFD_HUGE_32MB: u32 = 1677721600; +pub const MFD_HUGE_256MB: u32 = 1879048192; +pub const MFD_HUGE_512MB: u32 = 1946157056; +pub const MFD_HUGE_1GB: u32 = 2013265920; +pub const MFD_HUGE_2GB: u32 = 2080374784; +pub const MFD_HUGE_16GB: u32 = 2281701376; +pub const TFD_TIMER_ABSTIME: u32 = 1; +pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; +pub const TFD_CLOEXEC: u32 = 524288; +pub const TFD_NONBLOCK: u32 = 2048; +pub const USERFAULTFD_IOC: u32 = 170; +pub const _UFFDIO_REGISTER: u32 = 0; +pub const _UFFDIO_UNREGISTER: u32 = 1; +pub const _UFFDIO_WAKE: u32 = 2; +pub const _UFFDIO_COPY: u32 = 3; +pub const _UFFDIO_ZEROPAGE: u32 = 4; +pub const _UFFDIO_WRITEPROTECT: u32 = 6; +pub const _UFFDIO_CONTINUE: u32 = 7; +pub const _UFFDIO_API: u32 = 63; +pub const UFFDIO: u32 = 170; +pub const UFFD_EVENT_PAGEFAULT: u32 = 18; +pub const UFFD_EVENT_FORK: u32 = 19; +pub const UFFD_EVENT_REMAP: u32 = 20; +pub const UFFD_EVENT_REMOVE: u32 = 21; +pub const UFFD_EVENT_UNMAP: u32 = 22; +pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; +pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; +pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; +pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; +pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; +pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; +pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; +pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; +pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; +pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; +pub const UFFD_FEATURE_SIGBUS: u32 = 128; +pub const UFFD_FEATURE_THREAD_ID: u32 = 256; +pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; +pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; +pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; +pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; +pub const UFFD_USER_MODE_ONLY: u32 = 1; +pub const DT_UNKNOWN: u32 = 0; +pub const DT_FIFO: u32 = 1; +pub const DT_CHR: u32 = 2; +pub const DT_DIR: u32 = 4; +pub const DT_BLK: u32 = 6; +pub const DT_REG: u32 = 8; +pub const DT_LNK: u32 = 10; +pub const DT_SOCK: u32 = 12; +pub const STAT_HAVE_NSEC: u32 = 1; +pub const F_OK: u32 = 0; +pub const R_OK: u32 = 4; +pub const W_OK: u32 = 2; +pub const X_OK: u32 = 1; +pub const UTIME_NOW: u32 = 1073741823; +pub const UTIME_OMIT: u32 = 1073741822; +pub const MNT_FORCE: u32 = 1; +pub const MNT_DETACH: u32 = 2; +pub const MNT_EXPIRE: u32 = 4; +pub const UMOUNT_NOFOLLOW: u32 = 8; +pub const UMOUNT_UNUSED: u32 = 2147483648; +pub const STDIN_FILENO: u32 = 0; +pub const STDOUT_FILENO: u32 = 1; +pub const STDERR_FILENO: u32 = 2; +pub const RWF_HIPRI: u32 = 1; +pub const RWF_DSYNC: u32 = 2; +pub const RWF_SYNC: u32 = 4; +pub const RWF_NOWAIT: u32 = 8; +pub const RWF_APPEND: u32 = 16; +pub const EFD_SEMAPHORE: u32 = 1; +pub const EFD_CLOEXEC: u32 = 524288; +pub const EFD_NONBLOCK: u32 = 2048; +pub const EPOLLIN: u32 = 1; +pub const EPOLLPRI: u32 = 2; +pub const EPOLLOUT: u32 = 4; +pub const EPOLLERR: u32 = 8; +pub const EPOLLHUP: u32 = 16; +pub const EPOLLNVAL: u32 = 32; +pub const EPOLLRDNORM: u32 = 64; +pub const EPOLLRDBAND: u32 = 128; +pub const EPOLLWRNORM: u32 = 256; +pub const EPOLLWRBAND: u32 = 512; +pub const EPOLLMSG: u32 = 1024; +pub const EPOLLRDHUP: u32 = 8192; +pub const EPOLLEXCLUSIVE: u32 = 268435456; +pub const EPOLLWAKEUP: u32 = 536870912; +pub const EPOLLONESHOT: u32 = 1073741824; +pub const EPOLLET: u32 = 2147483648; +pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; +pub const TFD_CREATE_FLAGS: u32 = 526336; +pub const TFD_SETTIME_FLAGS: u32 = 1; +pub const UFFD_API: u32 = 170; +pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; +pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; +pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; +pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; +pub const UFFDIO_COPY_MODE_WP: u32 = 2; +pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; +pub const SPLICE_F_MOVE: u32 = 1; +pub const SPLICE_F_NONBLOCK: u32 = 2; +pub const SPLICE_F_MORE: u32 = 4; +pub const SPLICE_F_GIFT: u32 = 8; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, } #[repr(u32)] #[non_exhaustive] @@ -4646,717 +2768,161 @@ pub enum membarrier_cmd_flag { MEMBARRIER_CMD_FLAG_CPU = 1, } -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct uffd_msg { -pub event: __u8, -pub reserved1: __u8, -pub reserved2: __u16, -pub reserved3: __u32, -pub arg: uffd_msg__bindgen_ty_1, -} #[repr(C)] #[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1 { -pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, -pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, -pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, -pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, -pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, } #[repr(C)] #[derive(Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { -pub flags: __u64, -pub address: __u64, -pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], } #[repr(C)] #[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { -pub ptid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { -pub ufd: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { -pub from: __u64, -pub to: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { -pub start: __u64, -pub end: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { -pub reserved1: __u64, -pub reserved2: __u64, -pub reserved3: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_api { -pub api: __u64, -pub features: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_range { -pub start: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_register { -pub range: uffdio_range, -pub mode: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_copy { -pub dst: __u64, -pub src: __u64, -pub len: __u64, -pub mode: __u64, -pub copy: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_zeropage { -pub range: uffdio_range, -pub mode: __u64, -pub zeropage: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_writeprotect { -pub range: uffdio_range, -pub mode: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_continue { -pub range: uffdio_range, -pub mode: __u64, -pub mapped: __s64, -} -#[repr(C)] -pub struct io_uring_sqe { -pub opcode: __u8, -pub flags: __u8, -pub ioprio: __u16, -pub fd: __s32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, -pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, -pub len: __u32, -pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, -pub user_data: __u64, -pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, -pub personality: __u16, -pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, -pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +pub union sigval { +pub sival_int: crate::ctypes::c_int, +pub sival_ptr: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_1 { -pub off: __u64, -pub addr2: __u64, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { -pub cmd_op: __u32, -pub __pad1: __u32, +pub union __sifields { +pub _kill: __sifields__bindgen_ty_1, +pub _timer: __sifields__bindgen_ty_2, +pub _rt: __sifields__bindgen_ty_3, +pub _sigchld: __sifields__bindgen_ty_4, +pub _sigfault: __sifields__bindgen_ty_5, +pub _sigpoll: __sifields__bindgen_ty_6, +pub _sigsys: __sifields__bindgen_ty_7, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_2 { -pub addr: __u64, -pub splice_off_in: __u64, +pub union __sifields__bindgen_ty_5__bindgen_ty_1 { +pub _trapno: crate::ctypes::c_int, +pub _addr_lsb: crate::ctypes::c_short, +pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, +pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, +pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_3 { -pub rw_flags: __kernel_rwf_t, -pub fsync_flags: __u32, -pub poll_events: __u16, -pub poll32_events: __u32, -pub sync_range_flags: __u32, -pub msg_flags: __u32, -pub timeout_flags: __u32, -pub accept_flags: __u32, -pub cancel_flags: __u32, -pub open_flags: __u32, -pub statx_flags: __u32, -pub fadvise_advice: __u32, -pub splice_flags: __u32, -pub rename_flags: __u32, -pub unlink_flags: __u32, -pub hardlink_flags: __u32, -pub xattr_flags: __u32, -pub msg_ring_flags: __u32, -pub uring_cmd_flags: __u32, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_4 { -pub buf_index: __u16, -pub buf_group: __u16, +pub union siginfo__bindgen_ty_1 { +pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, +pub _si_pad: [crate::ctypes::c_int; 32usize], } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_5 { -pub splice_fd_in: __s32, -pub file_index: __u32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { -pub addr_len: __u16, -pub __pad3: [__u16; 1usize], -} -#[repr(C)] -pub struct io_uring_sqe__bindgen_ty_6 { -pub __bindgen_anon_1: __BindgenUnionField, -pub cmd: __BindgenUnionField<[__u8; 0usize]>, -pub bindgen_union_field: [u64; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { -pub addr3: __u64, -pub __pad2: [__u64; 1usize], -} -pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT; -pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT; -pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT; -pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT; -pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT; -pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT; -pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -IOSQE_FIXED_FILE_BIT = 0, -IOSQE_IO_DRAIN_BIT = 1, -IOSQE_IO_LINK_BIT = 2, -IOSQE_IO_HARDLINK_BIT = 3, -IOSQE_ASYNC_BIT = 4, -IOSQE_BUFFER_SELECT_BIT = 5, -IOSQE_CQE_SKIP_SUCCESS_BIT = 6, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum io_uring_op { -IORING_OP_NOP = 0, -IORING_OP_READV = 1, -IORING_OP_WRITEV = 2, -IORING_OP_FSYNC = 3, -IORING_OP_READ_FIXED = 4, -IORING_OP_WRITE_FIXED = 5, -IORING_OP_POLL_ADD = 6, -IORING_OP_POLL_REMOVE = 7, -IORING_OP_SYNC_FILE_RANGE = 8, -IORING_OP_SENDMSG = 9, -IORING_OP_RECVMSG = 10, -IORING_OP_TIMEOUT = 11, -IORING_OP_TIMEOUT_REMOVE = 12, -IORING_OP_ACCEPT = 13, -IORING_OP_ASYNC_CANCEL = 14, -IORING_OP_LINK_TIMEOUT = 15, -IORING_OP_CONNECT = 16, -IORING_OP_FALLOCATE = 17, -IORING_OP_OPENAT = 18, -IORING_OP_CLOSE = 19, -IORING_OP_FILES_UPDATE = 20, -IORING_OP_STATX = 21, -IORING_OP_READ = 22, -IORING_OP_WRITE = 23, -IORING_OP_FADVISE = 24, -IORING_OP_MADVISE = 25, -IORING_OP_SEND = 26, -IORING_OP_RECV = 27, -IORING_OP_OPENAT2 = 28, -IORING_OP_EPOLL_CTL = 29, -IORING_OP_SPLICE = 30, -IORING_OP_PROVIDE_BUFFERS = 31, -IORING_OP_REMOVE_BUFFERS = 32, -IORING_OP_TEE = 33, -IORING_OP_SHUTDOWN = 34, -IORING_OP_RENAMEAT = 35, -IORING_OP_UNLINKAT = 36, -IORING_OP_MKDIRAT = 37, -IORING_OP_SYMLINKAT = 38, -IORING_OP_LINKAT = 39, -IORING_OP_MSG_RING = 40, -IORING_OP_FSETXATTR = 41, -IORING_OP_SETXATTR = 42, -IORING_OP_FGETXATTR = 43, -IORING_OP_GETXATTR = 44, -IORING_OP_SOCKET = 45, -IORING_OP_URING_CMD = 46, -IORING_OP_SEND_ZC = 47, -IORING_OP_SENDMSG_ZC = 48, -IORING_OP_LAST = 49, -} -pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA; -pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_8 { -IORING_MSG_DATA = 0, -IORING_MSG_SEND_FD = 1, -} -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_cqe { -pub user_data: __u64, -pub res: __s32, -pub flags: __u32, -pub big_cqe: __IncompleteArrayField<__u64>, -} -pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_9 { -IORING_CQE_BUFFER_SHIFT = 16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_sqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub flags: __u32, -pub dropped: __u32, -pub array: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_cqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub overflow: __u32, -pub cqes: __u32, -pub flags: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_params { -pub sq_entries: __u32, -pub cq_entries: __u32, -pub flags: __u32, -pub sq_thread_cpu: __u32, -pub sq_thread_idle: __u32, -pub features: __u32, -pub wq_fd: __u32, -pub resv: [__u32; 3usize], -pub sq_off: io_sqring_offsets, -pub cq_off: io_cqring_offsets, -} -pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS; -pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS; -pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES; -pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES; -pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD; -pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD; -pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE; -pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC; -pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE; -pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY; -pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY; -pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS; -pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS; -pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2; -pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2; -pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2; -pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE; -pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF; -pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF; -pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS; -pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS; -pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS; -pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING; -pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING; -pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL; -pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE; -pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST; -pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_USE_REGISTERED_RING; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_10 { -IORING_REGISTER_BUFFERS = 0, -IORING_UNREGISTER_BUFFERS = 1, -IORING_REGISTER_FILES = 2, -IORING_UNREGISTER_FILES = 3, -IORING_REGISTER_EVENTFD = 4, -IORING_UNREGISTER_EVENTFD = 5, -IORING_REGISTER_FILES_UPDATE = 6, -IORING_REGISTER_EVENTFD_ASYNC = 7, -IORING_REGISTER_PROBE = 8, -IORING_REGISTER_PERSONALITY = 9, -IORING_UNREGISTER_PERSONALITY = 10, -IORING_REGISTER_RESTRICTIONS = 11, -IORING_REGISTER_ENABLE_RINGS = 12, -IORING_REGISTER_FILES2 = 13, -IORING_REGISTER_FILES_UPDATE2 = 14, -IORING_REGISTER_BUFFERS2 = 15, -IORING_REGISTER_BUFFERS_UPDATE = 16, -IORING_REGISTER_IOWQ_AFF = 17, -IORING_UNREGISTER_IOWQ_AFF = 18, -IORING_REGISTER_IOWQ_MAX_WORKERS = 19, -IORING_REGISTER_RING_FDS = 20, -IORING_UNREGISTER_RING_FDS = 21, -IORING_REGISTER_PBUF_RING = 22, -IORING_UNREGISTER_PBUF_RING = 23, -IORING_REGISTER_SYNC_CANCEL = 24, -IORING_REGISTER_FILE_ALLOC_RANGE = 25, -IORING_REGISTER_LAST = 26, -IORING_REGISTER_USE_REGISTERED_RING = 2147483648, -} -pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND; -pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_11 { -IO_WQ_BOUND = 0, -IO_WQ_UNBOUND = 1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_files_update { -pub offset: __u32, -pub resv: __u32, -pub fds: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_register { -pub nr: __u32, -pub flags: __u32, -pub resv2: __u64, -pub data: __u64, -pub tags: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update2 { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -pub tags: __u64, -pub nr: __u32, -pub resv2: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_slot { -pub tag: __u64, -pub resv: [__u64; 3usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_register { -pub nr_slots: __u32, -pub resv: __u32, -pub resv2: __u64, -pub data: __u64, -pub resv3: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_probe_op { -pub op: __u8, -pub resv: __u8, -pub flags: __u16, -pub resv2: __u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_probe { -pub last_op: __u8, -pub ops_len: __u8, -pub resv: __u16, -pub resv2: [__u32; 3usize], -pub ops: __IncompleteArrayField, +pub union sigevent__bindgen_ty_1 { +pub _pad: [crate::ctypes::c_int; 13usize], +pub _tid: crate::ctypes::c_int, +pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] -pub struct io_uring_restriction { -pub opcode: __u16, -pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, -pub resv: __u8, -pub resv2: [__u32; 3usize], +pub union uffd_msg__bindgen_ty_1 { +pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, +pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, +pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, +pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, +pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_restriction__bindgen_ty_1 { -pub register_op: __u8, -pub sqe_op: __u8, -pub sqe_flags: __u8, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf { -pub addr: __u64, -pub len: __u32, -pub bid: __u16, -pub resv: __u16, +pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { +pub ptid: __u32, } -#[repr(C)] -pub struct io_uring_buf_ring { -pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } } -#[repr(C)] -pub struct io_uring_buf_ring__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 2usize], } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { -pub resv1: __u64, -pub resv2: __u32, -pub resv3: __u16, -pub tail: __u16, +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask } -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { -pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, -pub bufs: __IncompleteArrayField, +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_reg { -pub ring_addr: __u64, -pub ring_entries: __u32, -pub bgid: __u16, -pub pad: __u16, -pub resv: [__u64; 3usize], } -pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP; -pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP; -pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; -pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; -pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_12 { -IORING_RESTRICTION_REGISTER_OP = 0, -IORING_RESTRICTION_SQE_OP = 1, -IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, -IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, -IORING_RESTRICTION_LAST = 4, +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_getevents_arg { -pub sigmask: __u64, -pub sigmask_sz: __u32, -pub pad: __u32, -pub ts: __u64, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sync_cancel_reg { -pub addr: __u64, -pub fd: __s32, -pub flags: __u32, -pub timeout: __kernel_timespec, -pub pad: [__u64; 4usize], +val } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_file_index_range { -pub off: __u32, -pub len: __u32, -pub resv: __u64, +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_recvmsg_out { -pub namelen: __u32, -pub controllen: __u32, -pub payloadlen: __u32, -pub flags: __u32, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr { -pub __storage: __kernel_sockaddr_storage, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct linger { -pub l_onoff: crate::ctypes::c_int, -pub l_linger: crate::ctypes::c_int, +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) } -#[repr(C)] -#[derive(Debug)] -pub struct linux_dirent64 { -pub d_ino: crate::ctypes::c_ulonglong, -pub d_off: crate::ctypes::c_longlong, -pub d_reclen: __u16, -pub d_type: __u8, -pub d_name: __IncompleteArrayField, +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T } -pub type socklen_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __old_kernel_stat { -pub st_dev: crate::ctypes::c_ushort, -pub st_ino: crate::ctypes::c_ushort, -pub st_mode: crate::ctypes::c_ushort, -pub st_nlink: crate::ctypes::c_ushort, -pub st_uid: crate::ctypes::c_ushort, -pub st_gid: crate::ctypes::c_ushort, -pub st_rdev: crate::ctypes::c_ushort, -pub st_size: crate::ctypes::c_ulong, -pub st_atime: crate::ctypes::c_ulong, -pub st_mtime: crate::ctypes::c_ulong, -pub st_ctime: crate::ctypes::c_ulong, +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat { -pub st_dev: crate::ctypes::c_ulong, -pub st_ino: __kernel_ino_t, -pub st_mode: __kernel_mode_t, -pub st_nlink: crate::ctypes::c_ushort, -pub st_uid: __kernel_uid32_t, -pub st_gid: __kernel_gid32_t, -pub st_rdev: crate::ctypes::c_ulong, -pub st_size: crate::ctypes::c_long, -pub st_blksize: crate::ctypes::c_ulong, -pub st_blocks: crate::ctypes::c_ulong, -pub st_atime: crate::ctypes::c_ulong, -pub st_atime_nsec: crate::ctypes::c_ulong, -pub st_mtime: crate::ctypes::c_ulong, -pub st_mtime_nsec: crate::ctypes::c_ulong, -pub st_ctime: crate::ctypes::c_ulong, -pub st_ctime_nsec: crate::ctypes::c_ulong, -pub __unused4: crate::ctypes::c_ulong, -pub __unused5: crate::ctypes::c_ulong, +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat64 { -pub st_dev: crate::ctypes::c_ulonglong, -pub st_ino: crate::ctypes::c_ulonglong, -pub st_mode: crate::ctypes::c_uint, -pub st_nlink: crate::ctypes::c_uint, -pub st_uid: crate::ctypes::c_uint, -pub st_gid: crate::ctypes::c_uint, -pub st_rdev: crate::ctypes::c_ulonglong, -pub __pad2: crate::ctypes::c_ushort, -pub st_size: crate::ctypes::c_longlong, -pub st_blksize: crate::ctypes::c_int, -pub st_blocks: crate::ctypes::c_longlong, -pub st_atime: crate::ctypes::c_int, -pub st_atime_nsec: crate::ctypes::c_uint, -pub st_mtime: crate::ctypes::c_int, -pub st_mtime_nsec: crate::ctypes::c_uint, -pub st_ctime: crate::ctypes::c_int, -pub st_ctime_nsec: crate::ctypes::c_uint, -pub __unused4: crate::ctypes::c_uint, -pub __unused5: crate::ctypes::c_uint, +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u32, -pub f_bfree: __u32, -pub f_bavail: __u32, -pub f_files: __u32, -pub f_ffree: __u32, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct compat_statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], } -pub type __fsword_t = __u32; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_desc { -pub entry_number: crate::ctypes::c_uint, -pub base_addr: crate::ctypes::c_uint, -pub limit: crate::ctypes::c_uint, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub __bindgen_padding_0: [u8; 3usize], +impl membarrier_cmd { +pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; } impl user_desc { #[inline] @@ -5455,47 +3021,3 @@ __bindgen_bitfield_unit } } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr { -pub msg_name: *mut crate::ctypes::c_void, -pub msg_namelen: crate::ctypes::c_int, -pub msg_iov: *mut iovec, -pub msg_iovlen: size_t, -pub msg_control: *mut crate::ctypes::c_void, -pub msg_controllen: size_t, -pub msg_flags: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsghdr { -pub cmsg_len: size_t, -pub cmsg_level: crate::ctypes::c_int, -pub cmsg_type: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ucred { -pub pid: __u32, -pub uid: __u32, -pub gid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mmsghdr { -pub msg_hdr: msghdr, -pub msg_len: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigset_t { -pub sig: [crate::ctypes::c_ulong; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigaction { -pub sa_handler_kernel: __kernel_sighandler_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_restorer: __sigrestore_t, -pub sa_mask: kernel_sigset_t, -} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/if_ether.rs temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/if_ether.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/if_ether.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/if_ether.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,173 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_short; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct __vector128 { +pub u: [__u32; 4usize], +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ethhdr { +pub h_dest: [crate::ctypes::c_uchar; 6usize], +pub h_source: [crate::ctypes::c_uchar; 6usize], +pub h_proto: __be16, +} +pub const ETH_ALEN: u32 = 6; +pub const ETH_TLEN: u32 = 2; +pub const ETH_HLEN: u32 = 14; +pub const ETH_ZLEN: u32 = 60; +pub const ETH_DATA_LEN: u32 = 1500; +pub const ETH_FRAME_LEN: u32 = 1514; +pub const ETH_FCS_LEN: u32 = 4; +pub const ETH_MIN_MTU: u32 = 68; +pub const ETH_MAX_MTU: u32 = 65535; +pub const ETH_P_LOOP: u32 = 96; +pub const ETH_P_PUP: u32 = 512; +pub const ETH_P_PUPAT: u32 = 513; +pub const ETH_P_TSN: u32 = 8944; +pub const ETH_P_ERSPAN2: u32 = 8939; +pub const ETH_P_IP: u32 = 2048; +pub const ETH_P_X25: u32 = 2053; +pub const ETH_P_ARP: u32 = 2054; +pub const ETH_P_BPQ: u32 = 2303; +pub const ETH_P_IEEEPUP: u32 = 2560; +pub const ETH_P_IEEEPUPAT: u32 = 2561; +pub const ETH_P_BATMAN: u32 = 17157; +pub const ETH_P_DEC: u32 = 24576; +pub const ETH_P_DNA_DL: u32 = 24577; +pub const ETH_P_DNA_RC: u32 = 24578; +pub const ETH_P_DNA_RT: u32 = 24579; +pub const ETH_P_LAT: u32 = 24580; +pub const ETH_P_DIAG: u32 = 24581; +pub const ETH_P_CUST: u32 = 24582; +pub const ETH_P_SCA: u32 = 24583; +pub const ETH_P_TEB: u32 = 25944; +pub const ETH_P_RARP: u32 = 32821; +pub const ETH_P_ATALK: u32 = 32923; +pub const ETH_P_AARP: u32 = 33011; +pub const ETH_P_8021Q: u32 = 33024; +pub const ETH_P_ERSPAN: u32 = 35006; +pub const ETH_P_IPX: u32 = 33079; +pub const ETH_P_IPV6: u32 = 34525; +pub const ETH_P_PAUSE: u32 = 34824; +pub const ETH_P_SLOW: u32 = 34825; +pub const ETH_P_WCCP: u32 = 34878; +pub const ETH_P_MPLS_UC: u32 = 34887; +pub const ETH_P_MPLS_MC: u32 = 34888; +pub const ETH_P_ATMMPOA: u32 = 34892; +pub const ETH_P_PPP_DISC: u32 = 34915; +pub const ETH_P_PPP_SES: u32 = 34916; +pub const ETH_P_LINK_CTL: u32 = 34924; +pub const ETH_P_ATMFATE: u32 = 34948; +pub const ETH_P_PAE: u32 = 34958; +pub const ETH_P_PROFINET: u32 = 34962; +pub const ETH_P_REALTEK: u32 = 34969; +pub const ETH_P_AOE: u32 = 34978; +pub const ETH_P_ETHERCAT: u32 = 34980; +pub const ETH_P_8021AD: u32 = 34984; +pub const ETH_P_802_EX1: u32 = 34997; +pub const ETH_P_PREAUTH: u32 = 35015; +pub const ETH_P_TIPC: u32 = 35018; +pub const ETH_P_LLDP: u32 = 35020; +pub const ETH_P_MRP: u32 = 35043; +pub const ETH_P_MACSEC: u32 = 35045; +pub const ETH_P_8021AH: u32 = 35047; +pub const ETH_P_MVRP: u32 = 35061; +pub const ETH_P_1588: u32 = 35063; +pub const ETH_P_NCSI: u32 = 35064; +pub const ETH_P_PRP: u32 = 35067; +pub const ETH_P_CFM: u32 = 35074; +pub const ETH_P_FCOE: u32 = 35078; +pub const ETH_P_IBOE: u32 = 35093; +pub const ETH_P_TDLS: u32 = 35085; +pub const ETH_P_FIP: u32 = 35092; +pub const ETH_P_80221: u32 = 35095; +pub const ETH_P_HSR: u32 = 35119; +pub const ETH_P_NSH: u32 = 35151; +pub const ETH_P_LOOPBACK: u32 = 36864; +pub const ETH_P_QINQ1: u32 = 37120; +pub const ETH_P_QINQ2: u32 = 37376; +pub const ETH_P_QINQ3: u32 = 37632; +pub const ETH_P_EDSA: u32 = 56026; +pub const ETH_P_DSA_8021Q: u32 = 56027; +pub const ETH_P_DSA_A5PSW: u32 = 57345; +pub const ETH_P_IFE: u32 = 60734; +pub const ETH_P_AF_IUCV: u32 = 64507; +pub const ETH_P_802_3_MIN: u32 = 1536; +pub const ETH_P_802_3: u32 = 1; +pub const ETH_P_AX25: u32 = 2; +pub const ETH_P_ALL: u32 = 3; +pub const ETH_P_802_2: u32 = 4; +pub const ETH_P_SNAP: u32 = 5; +pub const ETH_P_DDCMP: u32 = 6; +pub const ETH_P_WAN_PPP: u32 = 7; +pub const ETH_P_PPP_MP: u32 = 8; +pub const ETH_P_LOCALTALK: u32 = 9; +pub const ETH_P_CAN: u32 = 12; +pub const ETH_P_CANFD: u32 = 13; +pub const ETH_P_CANXL: u32 = 14; +pub const ETH_P_PPPTALK: u32 = 16; +pub const ETH_P_TR_802_2: u32 = 17; +pub const ETH_P_MOBITEX: u32 = 21; +pub const ETH_P_CONTROL: u32 = 22; +pub const ETH_P_IRDA: u32 = 23; +pub const ETH_P_ECONET: u32 = 24; +pub const ETH_P_HDLC: u32 = 25; +pub const ETH_P_ARCNET: u32 = 26; +pub const ETH_P_DSA: u32 = 27; +pub const ETH_P_TRAILER: u32 = 28; +pub const ETH_P_PHONET: u32 = 245; +pub const ETH_P_IEEE802154: u32 = 246; +pub const ETH_P_CAIF: u32 = 247; +pub const ETH_P_XDSA: u32 = 248; +pub const ETH_P_MAP: u32 = 249; +pub const ETH_P_MCTP: u32 = 250; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/ioctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/ioctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/ioctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const FIONREAD: u32 = 1074030207; pub const FIONBIO: u32 = 2147772030; @@ -1482,3 +1482,7 @@ pub const ACRN_IOCTL_RESET_VM: u32 = 536912405; pub const ACRN_IOCTL_DESTROY_IOREQ_CLIENT: u32 = 536912436; pub const ACRN_IOCTL_VM_INTR_MONITOR: u32 = 2148049444; +pub const TCGETS2: u32 = 1076655123; +pub const TCSETS2: u32 = 2150396948; +pub const TCSETSF2: u32 = 2150396950; +pub const TCSETSW2: u32 = 2150396949; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/io_uring.rs temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/io_uring.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/io_uring.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/io_uring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1089 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_short; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_rwf_t = crate::ctypes::c_int; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct __vector128 { +pub u: [__u32; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +pub struct io_uring_sqe { +pub opcode: __u8, +pub flags: __u8, +pub ioprio: __u16, +pub fd: __s32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, +pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, +pub len: __u32, +pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, +pub user_data: __u64, +pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, +pub personality: __u16, +pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, +pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { +pub cmd_op: __u32, +pub __pad1: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { +pub addr_len: __u16, +pub __pad3: [__u16; 1usize], +} +#[repr(C)] +pub struct io_uring_sqe__bindgen_ty_6 { +pub __bindgen_anon_1: __BindgenUnionField, +pub cmd: __BindgenUnionField<[__u8; 0usize]>, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { +pub addr3: __u64, +pub __pad2: [__u64; 1usize], +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_cqe { +pub user_data: __u64, +pub res: __s32, +pub flags: __u32, +pub big_cqe: __IncompleteArrayField<__u64>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_sqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub flags: __u32, +pub dropped: __u32, +pub array: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_cqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub overflow: __u32, +pub cqes: __u32, +pub flags: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_params { +pub sq_entries: __u32, +pub cq_entries: __u32, +pub flags: __u32, +pub sq_thread_cpu: __u32, +pub sq_thread_idle: __u32, +pub features: __u32, +pub wq_fd: __u32, +pub resv: [__u32; 3usize], +pub sq_off: io_sqring_offsets, +pub cq_off: io_cqring_offsets, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_files_update { +pub offset: __u32, +pub resv: __u32, +pub fds: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_register { +pub nr: __u32, +pub flags: __u32, +pub resv2: __u64, +pub data: __u64, +pub tags: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update2 { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +pub tags: __u64, +pub nr: __u32, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_slot { +pub tag: __u64, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_register { +pub nr_slots: __u32, +pub resv: __u32, +pub resv2: __u64, +pub data: __u64, +pub resv3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_probe_op { +pub op: __u8, +pub resv: __u8, +pub flags: __u16, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_probe { +pub last_op: __u8, +pub ops_len: __u8, +pub resv: __u16, +pub resv2: [__u32; 3usize], +pub ops: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_restriction { +pub opcode: __u16, +pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, +pub resv: __u8, +pub resv2: [__u32; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf { +pub addr: __u64, +pub len: __u32, +pub bid: __u16, +pub resv: __u16, +} +#[repr(C)] +pub struct io_uring_buf_ring { +pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +} +#[repr(C)] +pub struct io_uring_buf_ring__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { +pub resv1: __u64, +pub resv2: __u32, +pub resv3: __u16, +pub tail: __u16, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { +pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, +pub bufs: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_reg { +pub ring_addr: __u64, +pub ring_entries: __u32, +pub bgid: __u16, +pub pad: __u16, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_getevents_arg { +pub sigmask: __u64, +pub sigmask_sz: __u32, +pub pad: __u32, +pub ts: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sync_cancel_reg { +pub addr: __u64, +pub fd: __s32, +pub flags: __u32, +pub timeout: __kernel_timespec, +pub pad: [__u64; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_file_index_range { +pub off: __u32, +pub len: __u32, +pub resv: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_recvmsg_out { +pub namelen: __u32, +pub controllen: __u32, +pub payloadlen: __u32, +pub flags: __u32, +} +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 536805376; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const IORING_FILE_INDEX_ALLOC: i32 = -1; +pub const IORING_SETUP_IOPOLL: u32 = 1; +pub const IORING_SETUP_SQPOLL: u32 = 2; +pub const IORING_SETUP_SQ_AFF: u32 = 4; +pub const IORING_SETUP_CQSIZE: u32 = 8; +pub const IORING_SETUP_CLAMP: u32 = 16; +pub const IORING_SETUP_ATTACH_WQ: u32 = 32; +pub const IORING_SETUP_R_DISABLED: u32 = 64; +pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; +pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; +pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; +pub const IORING_SETUP_SQE128: u32 = 1024; +pub const IORING_SETUP_CQE32: u32 = 2048; +pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; +pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; +pub const IORING_URING_CMD_FIXED: u32 = 1; +pub const IORING_FSYNC_DATASYNC: u32 = 1; +pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; +pub const IORING_POLL_ADD_LEVEL: u32 = 8; +pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; +pub const IORING_ASYNC_CANCEL_FD: u32 = 2; +pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; +pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; +pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; +pub const IORING_RECV_MULTISHOT: u32 = 2; +pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; +pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; +pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; +pub const IORING_ACCEPT_MULTISHOT: u32 = 1; +pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; +pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; +pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; +pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; +pub const IORING_CQE_F_NOTIF: u32 = 8; +pub const IORING_OFF_SQ_RING: u32 = 0; +pub const IORING_OFF_CQ_RING: u32 = 134217728; +pub const IORING_OFF_SQES: u32 = 268435456; +pub const IORING_SQ_NEED_WAKEUP: u32 = 1; +pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; +pub const IORING_SQ_TASKRUN: u32 = 4; +pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; +pub const IORING_ENTER_GETEVENTS: u32 = 1; +pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; +pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; +pub const IORING_ENTER_REGISTERED_RING: u32 = 16; +pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; +pub const IORING_FEAT_NODROP: u32 = 2; +pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; +pub const IORING_FEAT_RW_CUR_POS: u32 = 8; +pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; +pub const IORING_FEAT_FAST_POLL: u32 = 32; +pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_FEAT_CQE_SKIP: u32 = 2048; +pub const IORING_FEAT_LINKED_FILE: u32 = 4096; +pub const IORING_FEAT_REG_REG_RING: u32 = 8192; +pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; +pub const IO_URING_OP_SUPPORTED: u32 = 1; +pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_FIXED_FILE_BIT; +pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_DRAIN_BIT; +pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_LINK_BIT; +pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_HARDLINK_BIT; +pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_ASYNC_BIT; +pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_BUFFER_SELECT_BIT; +pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_CQE_SKIP_SUCCESS_BIT; +pub const IORING_MSG_DATA: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_DATA; +pub const IORING_MSG_SEND_FD: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_SEND_FD; +pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = _bindgen_ty_3::IORING_CQE_BUFFER_SHIFT; +pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS; +pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_BUFFERS; +pub const IORING_REGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES; +pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_FILES; +pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD; +pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_EVENTFD; +pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE; +pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD_ASYNC; +pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PROBE; +pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PERSONALITY; +pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PERSONALITY; +pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RESTRICTIONS; +pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_ENABLE_RINGS; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES2; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE2; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS2; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS_UPDATE; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_AFF; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_IOWQ_AFF; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_MAX_WORKERS; +pub const IORING_REGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RING_FDS; +pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_RING_FDS; +pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PBUF_RING; +pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PBUF_RING; +pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_SYNC_CANCEL; +pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILE_ALLOC_RANGE; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_LAST; +pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_USE_REGISTERED_RING; +pub const IO_WQ_BOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_BOUND; +pub const IO_WQ_UNBOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_UNBOUND; +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_REGISTER_OP; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_OP; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_LAST; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IOSQE_FIXED_FILE_BIT = 0, +IOSQE_IO_DRAIN_BIT = 1, +IOSQE_IO_LINK_BIT = 2, +IOSQE_IO_HARDLINK_BIT = 3, +IOSQE_ASYNC_BIT = 4, +IOSQE_BUFFER_SELECT_BIT = 5, +IOSQE_CQE_SKIP_SUCCESS_BIT = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum io_uring_op { +IORING_OP_NOP = 0, +IORING_OP_READV = 1, +IORING_OP_WRITEV = 2, +IORING_OP_FSYNC = 3, +IORING_OP_READ_FIXED = 4, +IORING_OP_WRITE_FIXED = 5, +IORING_OP_POLL_ADD = 6, +IORING_OP_POLL_REMOVE = 7, +IORING_OP_SYNC_FILE_RANGE = 8, +IORING_OP_SENDMSG = 9, +IORING_OP_RECVMSG = 10, +IORING_OP_TIMEOUT = 11, +IORING_OP_TIMEOUT_REMOVE = 12, +IORING_OP_ACCEPT = 13, +IORING_OP_ASYNC_CANCEL = 14, +IORING_OP_LINK_TIMEOUT = 15, +IORING_OP_CONNECT = 16, +IORING_OP_FALLOCATE = 17, +IORING_OP_OPENAT = 18, +IORING_OP_CLOSE = 19, +IORING_OP_FILES_UPDATE = 20, +IORING_OP_STATX = 21, +IORING_OP_READ = 22, +IORING_OP_WRITE = 23, +IORING_OP_FADVISE = 24, +IORING_OP_MADVISE = 25, +IORING_OP_SEND = 26, +IORING_OP_RECV = 27, +IORING_OP_OPENAT2 = 28, +IORING_OP_EPOLL_CTL = 29, +IORING_OP_SPLICE = 30, +IORING_OP_PROVIDE_BUFFERS = 31, +IORING_OP_REMOVE_BUFFERS = 32, +IORING_OP_TEE = 33, +IORING_OP_SHUTDOWN = 34, +IORING_OP_RENAMEAT = 35, +IORING_OP_UNLINKAT = 36, +IORING_OP_MKDIRAT = 37, +IORING_OP_SYMLINKAT = 38, +IORING_OP_LINKAT = 39, +IORING_OP_MSG_RING = 40, +IORING_OP_FSETXATTR = 41, +IORING_OP_SETXATTR = 42, +IORING_OP_FGETXATTR = 43, +IORING_OP_GETXATTR = 44, +IORING_OP_SOCKET = 45, +IORING_OP_URING_CMD = 46, +IORING_OP_SEND_ZC = 47, +IORING_OP_SENDMSG_ZC = 48, +IORING_OP_LAST = 49, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IORING_MSG_DATA = 0, +IORING_MSG_SEND_FD = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IORING_CQE_BUFFER_SHIFT = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IORING_REGISTER_BUFFERS = 0, +IORING_UNREGISTER_BUFFERS = 1, +IORING_REGISTER_FILES = 2, +IORING_UNREGISTER_FILES = 3, +IORING_REGISTER_EVENTFD = 4, +IORING_UNREGISTER_EVENTFD = 5, +IORING_REGISTER_FILES_UPDATE = 6, +IORING_REGISTER_EVENTFD_ASYNC = 7, +IORING_REGISTER_PROBE = 8, +IORING_REGISTER_PERSONALITY = 9, +IORING_UNREGISTER_PERSONALITY = 10, +IORING_REGISTER_RESTRICTIONS = 11, +IORING_REGISTER_ENABLE_RINGS = 12, +IORING_REGISTER_FILES2 = 13, +IORING_REGISTER_FILES_UPDATE2 = 14, +IORING_REGISTER_BUFFERS2 = 15, +IORING_REGISTER_BUFFERS_UPDATE = 16, +IORING_REGISTER_IOWQ_AFF = 17, +IORING_UNREGISTER_IOWQ_AFF = 18, +IORING_REGISTER_IOWQ_MAX_WORKERS = 19, +IORING_REGISTER_RING_FDS = 20, +IORING_UNREGISTER_RING_FDS = 21, +IORING_REGISTER_PBUF_RING = 22, +IORING_UNREGISTER_PBUF_RING = 23, +IORING_REGISTER_SYNC_CANCEL = 24, +IORING_REGISTER_FILE_ALLOC_RANGE = 25, +IORING_REGISTER_LAST = 26, +IORING_REGISTER_USE_REGISTERED_RING = 2147483648, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IO_WQ_BOUND = 0, +IO_WQ_UNBOUND = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IORING_RESTRICTION_REGISTER_OP = 0, +IORING_RESTRICTION_SQE_OP = 1, +IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, +IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, +IORING_RESTRICTION_LAST = 4, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_1 { +pub off: __u64, +pub addr2: __u64, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_2 { +pub addr: __u64, +pub splice_off_in: __u64, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_3 { +pub rw_flags: __kernel_rwf_t, +pub fsync_flags: __u32, +pub poll_events: __u16, +pub poll32_events: __u32, +pub sync_range_flags: __u32, +pub msg_flags: __u32, +pub timeout_flags: __u32, +pub accept_flags: __u32, +pub cancel_flags: __u32, +pub open_flags: __u32, +pub statx_flags: __u32, +pub fadvise_advice: __u32, +pub splice_flags: __u32, +pub rename_flags: __u32, +pub unlink_flags: __u32, +pub hardlink_flags: __u32, +pub xattr_flags: __u32, +pub msg_ring_flags: __u32, +pub uring_cmd_flags: __u32, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_4 { +pub buf_index: __u16, +pub buf_group: __u16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { +pub splice_fd_in: __s32, +pub file_index: __u32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_restriction__bindgen_ty_1 { +pub register_op: __u8, +pub sqe_op: __u8, +pub sqe_flags: __u8, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/netlink.rs temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/netlink.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/netlink.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/netlink.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,363 +1,1498 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_short; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct __vector128 { +pub u: [__u32; 4usize], } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_nl { +pub nl_family: __kernel_sa_family_t, +pub nl_pad: crate::ctypes::c_ushort, +pub nl_pid: __u32, +pub nl_groups: __u32, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsghdr { +pub nlmsg_len: __u32, +pub nlmsg_type: __u16, +pub nlmsg_flags: __u16, +pub nlmsg_seq: __u32, +pub nlmsg_pid: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsgerr { +pub error: crate::ctypes::c_int, +pub msg: nlmsghdr, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_pktinfo { +pub group: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_req { +pub nm_block_size: crate::ctypes::c_uint, +pub nm_block_nr: crate::ctypes::c_uint, +pub nm_frame_size: crate::ctypes::c_uint, +pub nm_frame_nr: crate::ctypes::c_uint, } -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const __BITS_PER_LONG: u32 = 32; -pub const __FD_SETSIZE: u32 = 1024; -pub const NETLINK_ROUTE: u32 = 0; -pub const NETLINK_UNUSED: u32 = 1; -pub const NETLINK_USERSOCK: u32 = 2; -pub const NETLINK_FIREWALL: u32 = 3; -pub const NETLINK_SOCK_DIAG: u32 = 4; -pub const NETLINK_NFLOG: u32 = 5; -pub const NETLINK_XFRM: u32 = 6; -pub const NETLINK_SELINUX: u32 = 7; -pub const NETLINK_ISCSI: u32 = 8; -pub const NETLINK_AUDIT: u32 = 9; -pub const NETLINK_FIB_LOOKUP: u32 = 10; -pub const NETLINK_CONNECTOR: u32 = 11; -pub const NETLINK_NETFILTER: u32 = 12; -pub const NETLINK_IP6_FW: u32 = 13; -pub const NETLINK_DNRTMSG: u32 = 14; -pub const NETLINK_KOBJECT_UEVENT: u32 = 15; -pub const NETLINK_GENERIC: u32 = 16; -pub const NETLINK_SCSITRANSPORT: u32 = 18; -pub const NETLINK_ECRYPTFS: u32 = 19; -pub const NETLINK_RDMA: u32 = 20; -pub const NETLINK_CRYPTO: u32 = 21; -pub const NETLINK_SMC: u32 = 22; -pub const NETLINK_INET_DIAG: u32 = 4; -pub const MAX_LINKS: u32 = 32; -pub const NLM_F_REQUEST: u32 = 1; -pub const NLM_F_MULTI: u32 = 2; -pub const NLM_F_ACK: u32 = 4; -pub const NLM_F_ECHO: u32 = 8; -pub const NLM_F_DUMP_INTR: u32 = 16; -pub const NLM_F_DUMP_FILTERED: u32 = 32; -pub const NLM_F_ROOT: u32 = 256; -pub const NLM_F_MATCH: u32 = 512; -pub const NLM_F_ATOMIC: u32 = 1024; -pub const NLM_F_DUMP: u32 = 768; -pub const NLM_F_REPLACE: u32 = 256; -pub const NLM_F_EXCL: u32 = 512; -pub const NLM_F_CREATE: u32 = 1024; -pub const NLM_F_APPEND: u32 = 2048; -pub const NLM_F_NONREC: u32 = 256; -pub const NLM_F_BULK: u32 = 512; -pub const NLM_F_CAPPED: u32 = 256; -pub const NLM_F_ACK_TLVS: u32 = 512; -pub const NLMSG_ALIGNTO: u32 = 4; -pub const NLMSG_NOOP: u32 = 1; -pub const NLMSG_ERROR: u32 = 2; -pub const NLMSG_DONE: u32 = 3; -pub const NLMSG_OVERRUN: u32 = 4; -pub const NLMSG_MIN_TYPE: u32 = 16; -pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; -pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; -pub const NETLINK_PKTINFO: u32 = 3; -pub const NETLINK_BROADCAST_ERROR: u32 = 4; -pub const NETLINK_NO_ENOBUFS: u32 = 5; -pub const NETLINK_RX_RING: u32 = 6; -pub const NETLINK_TX_RING: u32 = 7; -pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; -pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; -pub const NETLINK_CAP_ACK: u32 = 10; -pub const NETLINK_EXT_ACK: u32 = 11; -pub const NETLINK_GET_STRICT_CHK: u32 = 12; -pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; -pub const NET_MAJOR: u32 = 36; -pub const NLA_F_NESTED: u32 = 32768; -pub const NLA_F_NET_BYTEORDER: u32 = 16384; -pub const NLA_TYPE_MASK: i32 = -49153; -pub const NLA_ALIGNTO: u32 = 4; -pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; -pub const MACVLAN_FLAG_NODST: u32 = 2; -pub const IPVLAN_F_PRIVATE: u32 = 1; -pub const IPVLAN_F_VEPA: u32 = 2; -pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; -pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; -pub const MAX_VLAN_LIST_LEN: u32 = 1; -pub const PORT_PROFILE_MAX: u32 = 40; -pub const PORT_UUID_MAX: u32 = 16; -pub const PORT_SELF_VF: i32 = -1; -pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; -pub const XDP_FLAGS_SKB_MODE: u32 = 2; -pub const XDP_FLAGS_DRV_MODE: u32 = 4; -pub const XDP_FLAGS_HW_MODE: u32 = 8; -pub const XDP_FLAGS_REPLACE: u32 = 16; -pub const XDP_FLAGS_MODES: u32 = 14; -pub const XDP_FLAGS_MASK: u32 = 31; -pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; -pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; -pub const IFA_F_SECONDARY: u32 = 1; -pub const IFA_F_TEMPORARY: u32 = 1; -pub const IFA_F_NODAD: u32 = 2; -pub const IFA_F_OPTIMISTIC: u32 = 4; -pub const IFA_F_DADFAILED: u32 = 8; -pub const IFA_F_HOMEADDRESS: u32 = 16; -pub const IFA_F_DEPRECATED: u32 = 32; -pub const IFA_F_TENTATIVE: u32 = 64; -pub const IFA_F_PERMANENT: u32 = 128; -pub const IFA_F_MANAGETEMPADDR: u32 = 256; -pub const IFA_F_NOPREFIXROUTE: u32 = 512; -pub const IFA_F_MCAUTOJOIN: u32 = 1024; -pub const IFA_F_STABLE_PRIVACY: u32 = 2048; -pub const IFAPROT_UNSPEC: u32 = 0; -pub const IFAPROT_KERNEL_LO: u32 = 1; -pub const IFAPROT_KERNEL_RA: u32 = 2; -pub const IFAPROT_KERNEL_LL: u32 = 3; -pub const NTF_USE: u32 = 1; -pub const NTF_SELF: u32 = 2; -pub const NTF_MASTER: u32 = 4; -pub const NTF_PROXY: u32 = 8; -pub const NTF_EXT_LEARNED: u32 = 16; -pub const NTF_OFFLOADED: u32 = 32; -pub const NTF_STICKY: u32 = 64; -pub const NTF_ROUTER: u32 = 128; -pub const NTF_EXT_MANAGED: u32 = 1; -pub const NTF_EXT_LOCKED: u32 = 2; -pub const NUD_INCOMPLETE: u32 = 1; -pub const NUD_REACHABLE: u32 = 2; -pub const NUD_STALE: u32 = 4; -pub const NUD_DELAY: u32 = 8; -pub const NUD_PROBE: u32 = 16; -pub const NUD_FAILED: u32 = 32; -pub const NUD_NOARP: u32 = 64; -pub const NUD_PERMANENT: u32 = 128; -pub const NUD_NONE: u32 = 0; -pub const RTNL_FAMILY_IPMR: u32 = 128; -pub const RTNL_FAMILY_IP6MR: u32 = 129; -pub const RTNL_FAMILY_MAX: u32 = 129; -pub const RTA_ALIGNTO: u32 = 4; -pub const RTPROT_UNSPEC: u32 = 0; -pub const RTPROT_REDIRECT: u32 = 1; -pub const RTPROT_KERNEL: u32 = 2; -pub const RTPROT_BOOT: u32 = 3; -pub const RTPROT_STATIC: u32 = 4; -pub const RTPROT_GATED: u32 = 8; -pub const RTPROT_RA: u32 = 9; -pub const RTPROT_MRT: u32 = 10; -pub const RTPROT_ZEBRA: u32 = 11; -pub const RTPROT_BIRD: u32 = 12; -pub const RTPROT_DNROUTED: u32 = 13; -pub const RTPROT_XORP: u32 = 14; -pub const RTPROT_NTK: u32 = 15; -pub const RTPROT_DHCP: u32 = 16; -pub const RTPROT_MROUTED: u32 = 17; -pub const RTPROT_KEEPALIVED: u32 = 18; -pub const RTPROT_BABEL: u32 = 42; -pub const RTPROT_OPENR: u32 = 99; -pub const RTPROT_BGP: u32 = 186; -pub const RTPROT_ISIS: u32 = 187; -pub const RTPROT_OSPF: u32 = 188; -pub const RTPROT_RIP: u32 = 189; -pub const RTPROT_EIGRP: u32 = 192; -pub const RTM_F_NOTIFY: u32 = 256; -pub const RTM_F_CLONED: u32 = 512; -pub const RTM_F_EQUALIZE: u32 = 1024; -pub const RTM_F_PREFIX: u32 = 2048; -pub const RTM_F_LOOKUP_TABLE: u32 = 4096; -pub const RTM_F_FIB_MATCH: u32 = 8192; -pub const RTM_F_OFFLOAD: u32 = 16384; -pub const RTM_F_TRAP: u32 = 32768; -pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; -pub const RTNH_F_DEAD: u32 = 1; -pub const RTNH_F_PERVASIVE: u32 = 2; -pub const RTNH_F_ONLINK: u32 = 4; -pub const RTNH_F_OFFLOAD: u32 = 8; -pub const RTNH_F_LINKDOWN: u32 = 16; -pub const RTNH_F_UNRESOLVED: u32 = 32; -pub const RTNH_F_TRAP: u32 = 64; -pub const RTNH_COMPARE_MASK: u32 = 89; -pub const RTNH_ALIGNTO: u32 = 4; -pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; -pub const RTAX_FEATURE_ECN: u32 = 1; -pub const RTAX_FEATURE_SACK: u32 = 2; -pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; -pub const RTAX_FEATURE_ALLFRAG: u32 = 8; -pub const RTAX_FEATURE_MASK: u32 = 15; -pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; -pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; -pub const RTMGRP_LINK: u32 = 1; -pub const RTMGRP_NOTIFY: u32 = 2; -pub const RTMGRP_NEIGH: u32 = 4; -pub const RTMGRP_TC: u32 = 8; -pub const RTMGRP_IPV4_IFADDR: u32 = 16; -pub const RTMGRP_IPV4_MROUTE: u32 = 32; -pub const RTMGRP_IPV4_ROUTE: u32 = 64; -pub const RTMGRP_IPV4_RULE: u32 = 128; -pub const RTMGRP_IPV6_IFADDR: u32 = 256; -pub const RTMGRP_IPV6_MROUTE: u32 = 512; -pub const RTMGRP_IPV6_ROUTE: u32 = 1024; -pub const RTMGRP_IPV6_IFINFO: u32 = 2048; -pub const RTMGRP_DECnet_IFADDR: u32 = 4096; -pub const RTMGRP_DECnet_ROUTE: u32 = 16384; -pub const RTMGRP_IPV6_PREFIX: u32 = 131072; -pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; -pub const RTEXT_FILTER_VF: u32 = 1; -pub const RTEXT_FILTER_BRVLAN: u32 = 2; -pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; -pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; -pub const RTEXT_FILTER_MRP: u32 = 16; -pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; -pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; -pub const RTEXT_FILTER_MST: u32 = 128; -pub type size_t = crate::ctypes::c_uint; -pub type ssize_t = crate::ctypes::c_int; -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; #[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_hdr { +pub nm_status: crate::ctypes::c_uint, +pub nm_len: crate::ctypes::c_uint, +pub nm_group: __u32, +pub nm_pid: __u32, +pub nm_uid: __u32, +pub nm_gid: __u32, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, +#[derive(Debug, Copy, Clone)] +pub struct nlattr { +pub nla_len: __u16, +pub nla_type: __u16, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], +pub struct nla_bitfield32 { +pub value: __u32, +pub selector: __u32, } -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; #[repr(C)] -#[repr(align(16))] #[derive(Debug, Copy, Clone)] -pub struct __vector128 { -pub u: [__u32; 4usize], +pub struct rtnl_link_stats { +pub rx_packets: __u32, +pub tx_packets: __u32, +pub rx_bytes: __u32, +pub tx_bytes: __u32, +pub rx_errors: __u32, +pub tx_errors: __u32, +pub rx_dropped: __u32, +pub tx_dropped: __u32, +pub multicast: __u32, +pub collisions: __u32, +pub rx_length_errors: __u32, +pub rx_over_errors: __u32, +pub rx_crc_errors: __u32, +pub rx_frame_errors: __u32, +pub rx_fifo_errors: __u32, +pub rx_missed_errors: __u32, +pub tx_aborted_errors: __u32, +pub tx_carrier_errors: __u32, +pub tx_fifo_errors: __u32, +pub tx_heartbeat_errors: __u32, +pub tx_window_errors: __u32, +pub rx_compressed: __u32, +pub tx_compressed: __u32, +pub rx_nohandler: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 32usize], +pub struct rtnl_link_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +pub collisions: __u64, +pub rx_length_errors: __u64, +pub rx_over_errors: __u64, +pub rx_crc_errors: __u64, +pub rx_frame_errors: __u64, +pub rx_fifo_errors: __u64, +pub rx_missed_errors: __u64, +pub tx_aborted_errors: __u64, +pub tx_carrier_errors: __u64, +pub tx_fifo_errors: __u64, +pub tx_heartbeat_errors: __u64, +pub tx_window_errors: __u64, +pub rx_compressed: __u64, +pub tx_compressed: __u64, +pub rx_nohandler: __u64, +pub rx_otherhost_dropped: __u64, } -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_short; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_old_dev_t = crate::ctypes::c_uint; -pub type __kernel_size_t = crate::ctypes::c_uint; -pub type __kernel_ssize_t = crate::ctypes::c_int; -pub type __kernel_ptrdiff_t = crate::ctypes::c_int; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], +pub struct rtnl_hw_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, } -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_nl { -pub nl_family: __kernel_sa_family_t, -pub nl_pad: crate::ctypes::c_ushort, -pub nl_pid: __u32, -pub nl_groups: __u32, +pub struct rtnl_link_ifmap { +pub mem_start: __u64, +pub mem_end: __u64, +pub base_addr: __u64, +pub irq: __u16, +pub dma: __u8, +pub port: __u8, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsghdr { -pub nlmsg_len: __u32, -pub nlmsg_type: __u16, -pub nlmsg_flags: __u16, -pub nlmsg_seq: __u32, -pub nlmsg_pid: __u32, +pub struct ifla_bridge_id { +pub prio: [__u8; 2usize], +pub addr: [__u8; 6usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsgerr { -pub error: crate::ctypes::c_int, -pub msg: nlmsghdr, +pub struct ifla_cacheinfo { +pub max_reasm_len: __u32, +pub tstamp: __u32, +pub reachable_time: __u32, +pub retrans_time: __u32, } -impl nlmsgerr_attrs { -pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_qos_mapping { +pub from: __u32, +pub to: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tunnel_msg { +pub family: __u8, +pub flags: __u8, +pub reserved2: __u16, +pub ifindex: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vxlan_port_range { +pub low: __be16, +pub high: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_mac { +pub vf: __u32, +pub mac: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_broadcast { +pub broadcast: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan_info { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +pub vlan_proto: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_tx_rate { +pub vf: __u32, +pub rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rate { +pub vf: __u32, +pub min_tx_rate: __u32, +pub max_tx_rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_spoofchk { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_guid { +pub vf: __u32, +pub guid: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_link_state { +pub vf: __u32, +pub link_state: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rss_query_en { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_trust { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_port_vsi { +pub vsi_mgr_id: __u8, +pub vsi_type_id: [__u8; 3usize], +pub vsi_type_version: __u8, +pub pad: [__u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct if_stats_msg { +pub family: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub ifindex: __u32, +pub filter_mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_rmnet_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifaddrmsg { +pub ifa_family: __u8, +pub ifa_prefixlen: __u8, +pub ifa_flags: __u8, +pub ifa_scope: __u8, +pub ifa_index: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifa_cacheinfo { +pub ifa_prefered: __u32, +pub ifa_valid: __u32, +pub cstamp: __u32, +pub tstamp: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndmsg { +pub ndm_family: __u8, +pub ndm_pad1: __u8, +pub ndm_pad2: __u16, +pub ndm_ifindex: __s32, +pub ndm_state: __u16, +pub ndm_flags: __u8, +pub ndm_type: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nda_cacheinfo { +pub ndm_confirmed: __u32, +pub ndm_used: __u32, +pub ndm_updated: __u32, +pub ndm_refcnt: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_stats { +pub ndts_allocs: __u64, +pub ndts_destroys: __u64, +pub ndts_hash_grows: __u64, +pub ndts_res_failed: __u64, +pub ndts_lookups: __u64, +pub ndts_hits: __u64, +pub ndts_rcv_probes_mcast: __u64, +pub ndts_rcv_probes_ucast: __u64, +pub ndts_periodic_gc_runs: __u64, +pub ndts_forced_gc_runs: __u64, +pub ndts_table_fulls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndtmsg { +pub ndtm_family: __u8, +pub ndtm_pad1: __u8, +pub ndtm_pad2: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_config { +pub ndtc_key_len: __u16, +pub ndtc_entry_size: __u16, +pub ndtc_entries: __u32, +pub ndtc_last_flush: __u32, +pub ndtc_last_rand: __u32, +pub ndtc_hash_rnd: __u32, +pub ndtc_hash_mask: __u32, +pub ndtc_hash_chain_gc: __u32, +pub ndtc_proxy_qlen: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtattr { +pub rta_len: crate::ctypes::c_ushort, +pub rta_type: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtmsg { +pub rtm_family: crate::ctypes::c_uchar, +pub rtm_dst_len: crate::ctypes::c_uchar, +pub rtm_src_len: crate::ctypes::c_uchar, +pub rtm_tos: crate::ctypes::c_uchar, +pub rtm_table: crate::ctypes::c_uchar, +pub rtm_protocol: crate::ctypes::c_uchar, +pub rtm_scope: crate::ctypes::c_uchar, +pub rtm_type: crate::ctypes::c_uchar, +pub rtm_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnexthop { +pub rtnh_len: crate::ctypes::c_ushort, +pub rtnh_flags: crate::ctypes::c_uchar, +pub rtnh_hops: crate::ctypes::c_uchar, +pub rtnh_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug)] +pub struct rtvia { +pub rtvia_family: __kernel_sa_family_t, +pub rtvia_addr: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_cacheinfo { +pub rta_clntref: __u32, +pub rta_lastuse: __u32, +pub rta_expires: __s32, +pub rta_error: __u32, +pub rta_used: __u32, +pub rta_id: __u32, +pub rta_ts: __u32, +pub rta_tsage: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rta_session { +pub proto: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub u: rta_session__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { +pub sport: __u16, +pub dport: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { +pub type_: __u8, +pub code: __u8, +pub ident: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_mfc_stats { +pub mfcs_packets: __u64, +pub mfcs_bytes: __u64, +pub mfcs_wrong_if: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtgenmsg { +pub rtgen_family: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifinfomsg { +pub ifi_family: crate::ctypes::c_uchar, +pub __ifi_pad: crate::ctypes::c_uchar, +pub ifi_type: crate::ctypes::c_ushort, +pub ifi_index: crate::ctypes::c_int, +pub ifi_flags: crate::ctypes::c_uint, +pub ifi_change: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefixmsg { +pub prefix_family: crate::ctypes::c_uchar, +pub prefix_pad1: crate::ctypes::c_uchar, +pub prefix_pad2: crate::ctypes::c_ushort, +pub prefix_ifindex: crate::ctypes::c_int, +pub prefix_type: crate::ctypes::c_uchar, +pub prefix_len: crate::ctypes::c_uchar, +pub prefix_flags: crate::ctypes::c_uchar, +pub prefix_pad3: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefix_cacheinfo { +pub preferred_time: __u32, +pub valid_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcmsg { +pub tcm_family: crate::ctypes::c_uchar, +pub tcm__pad1: crate::ctypes::c_uchar, +pub tcm__pad2: crate::ctypes::c_ushort, +pub tcm_ifindex: crate::ctypes::c_int, +pub tcm_handle: __u32, +pub tcm_parent: __u32, +pub tcm_info: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nduseroptmsg { +pub nduseropt_family: crate::ctypes::c_uchar, +pub nduseropt_pad1: crate::ctypes::c_uchar, +pub nduseropt_opts_len: crate::ctypes::c_ushort, +pub nduseropt_ifindex: crate::ctypes::c_int, +pub nduseropt_icmp_type: __u8, +pub nduseropt_icmp_code: __u8, +pub nduseropt_pad2: crate::ctypes::c_ushort, +pub nduseropt_pad3: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcamsg { +pub tca_family: crate::ctypes::c_uchar, +pub tca__pad1: crate::ctypes::c_uchar, +pub tca__pad2: crate::ctypes::c_ushort, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const NETLINK_ROUTE: u32 = 0; +pub const NETLINK_UNUSED: u32 = 1; +pub const NETLINK_USERSOCK: u32 = 2; +pub const NETLINK_FIREWALL: u32 = 3; +pub const NETLINK_SOCK_DIAG: u32 = 4; +pub const NETLINK_NFLOG: u32 = 5; +pub const NETLINK_XFRM: u32 = 6; +pub const NETLINK_SELINUX: u32 = 7; +pub const NETLINK_ISCSI: u32 = 8; +pub const NETLINK_AUDIT: u32 = 9; +pub const NETLINK_FIB_LOOKUP: u32 = 10; +pub const NETLINK_CONNECTOR: u32 = 11; +pub const NETLINK_NETFILTER: u32 = 12; +pub const NETLINK_IP6_FW: u32 = 13; +pub const NETLINK_DNRTMSG: u32 = 14; +pub const NETLINK_KOBJECT_UEVENT: u32 = 15; +pub const NETLINK_GENERIC: u32 = 16; +pub const NETLINK_SCSITRANSPORT: u32 = 18; +pub const NETLINK_ECRYPTFS: u32 = 19; +pub const NETLINK_RDMA: u32 = 20; +pub const NETLINK_CRYPTO: u32 = 21; +pub const NETLINK_SMC: u32 = 22; +pub const NETLINK_INET_DIAG: u32 = 4; +pub const MAX_LINKS: u32 = 32; +pub const NLM_F_REQUEST: u32 = 1; +pub const NLM_F_MULTI: u32 = 2; +pub const NLM_F_ACK: u32 = 4; +pub const NLM_F_ECHO: u32 = 8; +pub const NLM_F_DUMP_INTR: u32 = 16; +pub const NLM_F_DUMP_FILTERED: u32 = 32; +pub const NLM_F_ROOT: u32 = 256; +pub const NLM_F_MATCH: u32 = 512; +pub const NLM_F_ATOMIC: u32 = 1024; +pub const NLM_F_DUMP: u32 = 768; +pub const NLM_F_REPLACE: u32 = 256; +pub const NLM_F_EXCL: u32 = 512; +pub const NLM_F_CREATE: u32 = 1024; +pub const NLM_F_APPEND: u32 = 2048; +pub const NLM_F_NONREC: u32 = 256; +pub const NLM_F_BULK: u32 = 512; +pub const NLM_F_CAPPED: u32 = 256; +pub const NLM_F_ACK_TLVS: u32 = 512; +pub const NLMSG_ALIGNTO: u32 = 4; +pub const NLMSG_NOOP: u32 = 1; +pub const NLMSG_ERROR: u32 = 2; +pub const NLMSG_DONE: u32 = 3; +pub const NLMSG_OVERRUN: u32 = 4; +pub const NLMSG_MIN_TYPE: u32 = 16; +pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; +pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; +pub const NETLINK_PKTINFO: u32 = 3; +pub const NETLINK_BROADCAST_ERROR: u32 = 4; +pub const NETLINK_NO_ENOBUFS: u32 = 5; +pub const NETLINK_RX_RING: u32 = 6; +pub const NETLINK_TX_RING: u32 = 7; +pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; +pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; +pub const NETLINK_CAP_ACK: u32 = 10; +pub const NETLINK_EXT_ACK: u32 = 11; +pub const NETLINK_GET_STRICT_CHK: u32 = 12; +pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; +pub const NET_MAJOR: u32 = 36; +pub const NLA_F_NESTED: u32 = 32768; +pub const NLA_F_NET_BYTEORDER: u32 = 16384; +pub const NLA_TYPE_MASK: i32 = -49153; +pub const NLA_ALIGNTO: u32 = 4; +pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; +pub const MACVLAN_FLAG_NODST: u32 = 2; +pub const IPVLAN_F_PRIVATE: u32 = 1; +pub const IPVLAN_F_VEPA: u32 = 2; +pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; +pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; +pub const MAX_VLAN_LIST_LEN: u32 = 1; +pub const PORT_PROFILE_MAX: u32 = 40; +pub const PORT_UUID_MAX: u32 = 16; +pub const PORT_SELF_VF: i32 = -1; +pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; +pub const XDP_FLAGS_SKB_MODE: u32 = 2; +pub const XDP_FLAGS_DRV_MODE: u32 = 4; +pub const XDP_FLAGS_HW_MODE: u32 = 8; +pub const XDP_FLAGS_REPLACE: u32 = 16; +pub const XDP_FLAGS_MODES: u32 = 14; +pub const XDP_FLAGS_MASK: u32 = 31; +pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; +pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; +pub const IFA_F_SECONDARY: u32 = 1; +pub const IFA_F_TEMPORARY: u32 = 1; +pub const IFA_F_NODAD: u32 = 2; +pub const IFA_F_OPTIMISTIC: u32 = 4; +pub const IFA_F_DADFAILED: u32 = 8; +pub const IFA_F_HOMEADDRESS: u32 = 16; +pub const IFA_F_DEPRECATED: u32 = 32; +pub const IFA_F_TENTATIVE: u32 = 64; +pub const IFA_F_PERMANENT: u32 = 128; +pub const IFA_F_MANAGETEMPADDR: u32 = 256; +pub const IFA_F_NOPREFIXROUTE: u32 = 512; +pub const IFA_F_MCAUTOJOIN: u32 = 1024; +pub const IFA_F_STABLE_PRIVACY: u32 = 2048; +pub const IFAPROT_UNSPEC: u32 = 0; +pub const IFAPROT_KERNEL_LO: u32 = 1; +pub const IFAPROT_KERNEL_RA: u32 = 2; +pub const IFAPROT_KERNEL_LL: u32 = 3; +pub const NTF_USE: u32 = 1; +pub const NTF_SELF: u32 = 2; +pub const NTF_MASTER: u32 = 4; +pub const NTF_PROXY: u32 = 8; +pub const NTF_EXT_LEARNED: u32 = 16; +pub const NTF_OFFLOADED: u32 = 32; +pub const NTF_STICKY: u32 = 64; +pub const NTF_ROUTER: u32 = 128; +pub const NTF_EXT_MANAGED: u32 = 1; +pub const NTF_EXT_LOCKED: u32 = 2; +pub const NUD_INCOMPLETE: u32 = 1; +pub const NUD_REACHABLE: u32 = 2; +pub const NUD_STALE: u32 = 4; +pub const NUD_DELAY: u32 = 8; +pub const NUD_PROBE: u32 = 16; +pub const NUD_FAILED: u32 = 32; +pub const NUD_NOARP: u32 = 64; +pub const NUD_PERMANENT: u32 = 128; +pub const NUD_NONE: u32 = 0; +pub const RTNL_FAMILY_IPMR: u32 = 128; +pub const RTNL_FAMILY_IP6MR: u32 = 129; +pub const RTNL_FAMILY_MAX: u32 = 129; +pub const RTA_ALIGNTO: u32 = 4; +pub const RTPROT_UNSPEC: u32 = 0; +pub const RTPROT_REDIRECT: u32 = 1; +pub const RTPROT_KERNEL: u32 = 2; +pub const RTPROT_BOOT: u32 = 3; +pub const RTPROT_STATIC: u32 = 4; +pub const RTPROT_GATED: u32 = 8; +pub const RTPROT_RA: u32 = 9; +pub const RTPROT_MRT: u32 = 10; +pub const RTPROT_ZEBRA: u32 = 11; +pub const RTPROT_BIRD: u32 = 12; +pub const RTPROT_DNROUTED: u32 = 13; +pub const RTPROT_XORP: u32 = 14; +pub const RTPROT_NTK: u32 = 15; +pub const RTPROT_DHCP: u32 = 16; +pub const RTPROT_MROUTED: u32 = 17; +pub const RTPROT_KEEPALIVED: u32 = 18; +pub const RTPROT_BABEL: u32 = 42; +pub const RTPROT_OPENR: u32 = 99; +pub const RTPROT_BGP: u32 = 186; +pub const RTPROT_ISIS: u32 = 187; +pub const RTPROT_OSPF: u32 = 188; +pub const RTPROT_RIP: u32 = 189; +pub const RTPROT_EIGRP: u32 = 192; +pub const RTM_F_NOTIFY: u32 = 256; +pub const RTM_F_CLONED: u32 = 512; +pub const RTM_F_EQUALIZE: u32 = 1024; +pub const RTM_F_PREFIX: u32 = 2048; +pub const RTM_F_LOOKUP_TABLE: u32 = 4096; +pub const RTM_F_FIB_MATCH: u32 = 8192; +pub const RTM_F_OFFLOAD: u32 = 16384; +pub const RTM_F_TRAP: u32 = 32768; +pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; +pub const RTNH_F_DEAD: u32 = 1; +pub const RTNH_F_PERVASIVE: u32 = 2; +pub const RTNH_F_ONLINK: u32 = 4; +pub const RTNH_F_OFFLOAD: u32 = 8; +pub const RTNH_F_LINKDOWN: u32 = 16; +pub const RTNH_F_UNRESOLVED: u32 = 32; +pub const RTNH_F_TRAP: u32 = 64; +pub const RTNH_COMPARE_MASK: u32 = 89; +pub const RTNH_ALIGNTO: u32 = 4; +pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; +pub const RTAX_FEATURE_ECN: u32 = 1; +pub const RTAX_FEATURE_SACK: u32 = 2; +pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; +pub const RTAX_FEATURE_ALLFRAG: u32 = 8; +pub const RTAX_FEATURE_MASK: u32 = 15; +pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; +pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; +pub const RTMGRP_LINK: u32 = 1; +pub const RTMGRP_NOTIFY: u32 = 2; +pub const RTMGRP_NEIGH: u32 = 4; +pub const RTMGRP_TC: u32 = 8; +pub const RTMGRP_IPV4_IFADDR: u32 = 16; +pub const RTMGRP_IPV4_MROUTE: u32 = 32; +pub const RTMGRP_IPV4_ROUTE: u32 = 64; +pub const RTMGRP_IPV4_RULE: u32 = 128; +pub const RTMGRP_IPV6_IFADDR: u32 = 256; +pub const RTMGRP_IPV6_MROUTE: u32 = 512; +pub const RTMGRP_IPV6_ROUTE: u32 = 1024; +pub const RTMGRP_IPV6_IFINFO: u32 = 2048; +pub const RTMGRP_DECnet_IFADDR: u32 = 4096; +pub const RTMGRP_DECnet_ROUTE: u32 = 16384; +pub const RTMGRP_IPV6_PREFIX: u32 = 131072; +pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; +pub const RTEXT_FILTER_VF: u32 = 1; +pub const RTEXT_FILTER_BRVLAN: u32 = 2; +pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; +pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; +pub const RTEXT_FILTER_MRP: u32 = 16; +pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; +pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; +pub const RTEXT_FILTER_MST: u32 = 128; +pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; +pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; +pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; +pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; +pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; +pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; +pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; +pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; +pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; +pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; +pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; +pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; +pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; +pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; +pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; +pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; +pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; +pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; +pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; +pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; +pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; +pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; +pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; +pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; +pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; +pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; +pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; +pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; +pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; +pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; +pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; +pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; +pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; +pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; +pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; +pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; +pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; +pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; +pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; +pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; +pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; +pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; +pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; +pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; +pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; +pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; +pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; +pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; +pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; +pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; +pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; +pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; +pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; +pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; +pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; +pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; +pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; +pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; +pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; +pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; +pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; +pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; +pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; +pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; +pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; +pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; +pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; +pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; +pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; +pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; +pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; +pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; +pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; +pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; +pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; +pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; +pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; +pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; +pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; +pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; +pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; +pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; +pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; +pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; +pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; +pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; +pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; +pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; +pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; +pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; +pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; +pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; +pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; +pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; +pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; +pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; +pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; +pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; +pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; +pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; +pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; +pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; +pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; +pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; +pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; +pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; +pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; +pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; +pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; +pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; +pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; +pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; +pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; +pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; +pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; +pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; +pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; +pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; +pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; +pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; +pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; +pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; +pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; +pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; +pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; +pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; +pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; +pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; +pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; +pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; +pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; +pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; +pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; +pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; +pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; +pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; +pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; +pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; +pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; +pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; +pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; +pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; +pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; +pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; +pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; +pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; +pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; +pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; +pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; +pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; +pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; +pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; +pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; +pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; +pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; +pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; +pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; +pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; +pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; +pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; +pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; +pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; +pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; +pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; +pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; +pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; +pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; +pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; +pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; +pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; +pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; +pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; +pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; +pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; +pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; +pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; +pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; +pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; +pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; +pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; +pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; +pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; +pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; +pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; +pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; +pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; +pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; +pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; +pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; +pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; +pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; +pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; +pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; +pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; +pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; +pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; +pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; +pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; +pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; +pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; +pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; +pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; +pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; +pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; +pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; +pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; +pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; +pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; +pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; +pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; +pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; +pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; +pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; +pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; +pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; +pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; +pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; +pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; +pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; +pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; +pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; +pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; +pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; +pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; +pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; +pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; +pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; +pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; +pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; +pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; +pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; +pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; +pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; +pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; +pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; +pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; +pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; +pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; +pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; +pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; +pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; +pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; +pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; +pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; +pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; +pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; +pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; +pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; +pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; +pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; +pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; +pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; +pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; +pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; +pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; +pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; +pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; +pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; +pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; +pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; +pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; +pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; +pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; +pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; +pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; +pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; +pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; +pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; +pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; +pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; +pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; +pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; +pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; +pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; +pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; +pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; +pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; +pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; +pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; +pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; +pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; +pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; +pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; +pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; +pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; +pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; +pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; +pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; +pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; +pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; +pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; +pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; +pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; +pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; +pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; +pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; +pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; +pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; +pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; +pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; +pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; +pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; +pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; +pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; +pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; +pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; +pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; +pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; +pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; +pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; +pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; +pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; +pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; +pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; +pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; +pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; +pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; +pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; +pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; +pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; +pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; +pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; +pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; +pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; +pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; +pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; +pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; +pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; +pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; +pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; +pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; +pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; +pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; +pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; +pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; +pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; +pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; +pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; +pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; +pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; +pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; +pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; +pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; +pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; +pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; +pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; +pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; +pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; +pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; +pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; +pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; +pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; +pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; +pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; +pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; +pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; +pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; +pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; +pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; +pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; +pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; +pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; +pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; +pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; +pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; +pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; +pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; +pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; +pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; +pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; +pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; +pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; +pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; +pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; +pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; +pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; +pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; +pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; +pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; +pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; +pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; +pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; +pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; +pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; +pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; +pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; +pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; +pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; +pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; +pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; +pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; +pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; +pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; +pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; +pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; +pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; +pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; +pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; +pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; +pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; +pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; +pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; +pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; +pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; +pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; +pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; +pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; +pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; +pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; +pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; +pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; +pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; +pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; +pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; +pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; +pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; +pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; +pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; +pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; +pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; +pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; +pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; +pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; +pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; +pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; +pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; +pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; +pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; +pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; +pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; +pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; +pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; +pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; +pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; +pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; +pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; +pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; +pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; +pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; +pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; +pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; +pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; +pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; +pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; +pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; +pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; +pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; +pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; +pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; +pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; +pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; +pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; +pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; +pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; +pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; +pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; +pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; +pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; +pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; +pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; +pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; +pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; +pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; +pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; +pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; +pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; +pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; +pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; +pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; +pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; +pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; +pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; +pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; +pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; +pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; +pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; +pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; +pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; +pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; +pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; +pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; +pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; +pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; +pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; +pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; +pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; +pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; +pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; +pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; +pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; +pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; +pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; +pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; +pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; +pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; +pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; +pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; +pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; +pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; +pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; +pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; +pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; +pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; +pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; +pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; +pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; +pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; +pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; +pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; +pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; +pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; +pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; +pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; +pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; +pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; +pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; +pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; +pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; +pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; +pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; +pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; +pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; +pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; +pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; +pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; +pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; +pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; +pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; +pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; +pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; +pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; +pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; +pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; +pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; +pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; +pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; +pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; +pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; +pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; +pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; +pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; +pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; +pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; +pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; +pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; +pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; +pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; +pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; +pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; +pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; +pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; +pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; +pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; +pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; +pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; +pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; +pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; +pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; +pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; +pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; +pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; +pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; +pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; +pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; +pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; +pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; +pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; +pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; +pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; +pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; +pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; +pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; +pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; +pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; +pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; +pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; +pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; +pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; +pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; +pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; +pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; +pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; +pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; +pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; +pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; +pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; +pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; +pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; +pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; +pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; +pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; +pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; +pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; +pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; +pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; +pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; +pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; +pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; +pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; +pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; +pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; +pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; +pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; +pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; +pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; +pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; +pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; +pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; +pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; +pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; +pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; +pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; +pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; +pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; +pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; +pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; +pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; +pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; +pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; +pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; +pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; +pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; +pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; +pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; +pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; +pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; +pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; +pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; +pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; +pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; +pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; +pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; +pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; +pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; +pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; +pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; +pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; +pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; +pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; +pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; +pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; +pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; +pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; +pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; +pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; +pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; +pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; +pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; +pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; +pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; +pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; +pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; +pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; +pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; +pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; +pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; +pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; +pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; +pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; +pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; +pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; +pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; +pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; +pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; +pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; +pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; +pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; +pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; +pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; +pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; +pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; +pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; +pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; +pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; +pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; +pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; +pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; +pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; +pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; +pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; +pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; +pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; +pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; +pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; +pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; +pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; +pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; +pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; +pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; +pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; +pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; +pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; +pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; +pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; +pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; +pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; +pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; +pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; +pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; +pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; +pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; +pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; +pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; +pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -371,29 +1506,6 @@ NLMSGERR_ATTR_MISS_NEST = 6, __NLMSGERR_ATTR_MAX = 7, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_pktinfo { -pub group: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_req { -pub nm_block_size: crate::ctypes::c_uint, -pub nm_block_nr: crate::ctypes::c_uint, -pub nm_frame_size: crate::ctypes::c_uint, -pub nm_frame_nr: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_hdr { -pub nm_status: crate::ctypes::c_uint, -pub nm_len: crate::ctypes::c_uint, -pub nm_group: __u32, -pub nm_pid: __u32, -pub nm_uid: __u32, -pub nm_gid: __u32, -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -404,8 +1516,6 @@ NL_MMAP_STATUS_COPY = 3, NL_MMAP_STATUS_SKIP = 4, } -pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; -pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -413,208 +1523,46 @@ NETLINK_UNCONNECTED = 0, NETLINK_CONNECTED = 1, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nlattr { -pub nla_len: __u16, -pub nla_type: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nla_bitfield32 { -pub value: __u32, -pub selector: __u32, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_attribute_type { -NL_ATTR_TYPE_INVALID = 0, -NL_ATTR_TYPE_FLAG = 1, -NL_ATTR_TYPE_U8 = 2, -NL_ATTR_TYPE_U16 = 3, -NL_ATTR_TYPE_U32 = 4, -NL_ATTR_TYPE_U64 = 5, -NL_ATTR_TYPE_S8 = 6, -NL_ATTR_TYPE_S16 = 7, -NL_ATTR_TYPE_S32 = 8, -NL_ATTR_TYPE_S64 = 9, -NL_ATTR_TYPE_BINARY = 10, -NL_ATTR_TYPE_STRING = 11, -NL_ATTR_TYPE_NUL_STRING = 12, -NL_ATTR_TYPE_NESTED = 13, -NL_ATTR_TYPE_NESTED_ARRAY = 14, -NL_ATTR_TYPE_BITFIELD32 = 15, -} -impl netlink_policy_type_attr { -pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_policy_type_attr { -NL_POLICY_TYPE_ATTR_UNSPEC = 0, -NL_POLICY_TYPE_ATTR_TYPE = 1, -NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, -NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, -NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, -NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, -NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, -NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, -NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, -NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, -NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, -NL_POLICY_TYPE_ATTR_PAD = 11, -NL_POLICY_TYPE_ATTR_MASK = 12, -__NL_POLICY_TYPE_ATTR_MAX = 13, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats { -pub rx_packets: __u32, -pub tx_packets: __u32, -pub rx_bytes: __u32, -pub tx_bytes: __u32, -pub rx_errors: __u32, -pub tx_errors: __u32, -pub rx_dropped: __u32, -pub tx_dropped: __u32, -pub multicast: __u32, -pub collisions: __u32, -pub rx_length_errors: __u32, -pub rx_over_errors: __u32, -pub rx_crc_errors: __u32, -pub rx_frame_errors: __u32, -pub rx_fifo_errors: __u32, -pub rx_missed_errors: __u32, -pub tx_aborted_errors: __u32, -pub tx_carrier_errors: __u32, -pub tx_fifo_errors: __u32, -pub tx_heartbeat_errors: __u32, -pub tx_window_errors: __u32, -pub rx_compressed: __u32, -pub tx_compressed: __u32, -pub rx_nohandler: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, -pub collisions: __u64, -pub rx_length_errors: __u64, -pub rx_over_errors: __u64, -pub rx_crc_errors: __u64, -pub rx_frame_errors: __u64, -pub rx_fifo_errors: __u64, -pub rx_missed_errors: __u64, -pub tx_aborted_errors: __u64, -pub tx_carrier_errors: __u64, -pub tx_fifo_errors: __u64, -pub tx_heartbeat_errors: __u64, -pub tx_window_errors: __u64, -pub rx_compressed: __u64, -pub tx_compressed: __u64, -pub rx_nohandler: __u64, -pub rx_otherhost_dropped: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_hw_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, +pub enum netlink_attribute_type { +NL_ATTR_TYPE_INVALID = 0, +NL_ATTR_TYPE_FLAG = 1, +NL_ATTR_TYPE_U8 = 2, +NL_ATTR_TYPE_U16 = 3, +NL_ATTR_TYPE_U32 = 4, +NL_ATTR_TYPE_U64 = 5, +NL_ATTR_TYPE_S8 = 6, +NL_ATTR_TYPE_S16 = 7, +NL_ATTR_TYPE_S32 = 8, +NL_ATTR_TYPE_S64 = 9, +NL_ATTR_TYPE_BINARY = 10, +NL_ATTR_TYPE_STRING = 11, +NL_ATTR_TYPE_NUL_STRING = 12, +NL_ATTR_TYPE_NESTED = 13, +NL_ATTR_TYPE_NESTED_ARRAY = 14, +NL_ATTR_TYPE_BITFIELD32 = 15, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_ifmap { -pub mem_start: __u64, -pub mem_end: __u64, -pub base_addr: __u64, -pub irq: __u16, -pub dma: __u8, -pub port: __u8, +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_policy_type_attr { +NL_POLICY_TYPE_ATTR_UNSPEC = 0, +NL_POLICY_TYPE_ATTR_TYPE = 1, +NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, +NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, +NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, +NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, +NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, +NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, +NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, +NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, +NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, +NL_POLICY_TYPE_ATTR_PAD = 11, +NL_POLICY_TYPE_ATTR_MASK = 12, +__NL_POLICY_TYPE_ATTR_MAX = 13, } -pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; -pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; -pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; -pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; -pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; -pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; -pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; -pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; -pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; -pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; -pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; -pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; -pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; -pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; -pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; -pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; -pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; -pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; -pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; -pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; -pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; -pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; -pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; -pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; -pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; -pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; -pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; -pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; -pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; -pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; -pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; -pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; -pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; -pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; -pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; -pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; -pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; -pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; -pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; -pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; -pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; -pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; -pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; -pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; -pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; -pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; -pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; -pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; -pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; -pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; -pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; -pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; -pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; -pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; -pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; -pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; -pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; -pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; -pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; -pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; -pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; -pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; -pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; -pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; -pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -686,11 +1634,6 @@ IFLA_GRO_IPV4_MAX_SIZE = 64, __IFLA_MAX = 65, } -pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; -pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; -pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; -pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; -pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -700,9 +1643,6 @@ IFLA_PROTO_DOWN_REASON_VALUE = 2, __IFLA_PROTO_DOWN_REASON_CNT = 3, } -pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; -pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; -pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -711,17 +1651,6 @@ IFLA_INET_CONF = 1, __IFLA_INET_MAX = 2, } -pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; -pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; -pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; -pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; -pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; -pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; -pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; -pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; -pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; -pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; -pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -747,55 +1676,6 @@ IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, IN6_ADDR_GEN_MODE_RANDOM = 3, } -pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; -pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; -pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; -pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; -pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; -pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; -pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; -pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; -pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; -pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; -pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; -pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; -pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; -pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; -pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; -pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; -pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; -pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; -pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; -pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; -pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; -pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; -pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; -pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; -pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; -pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; -pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; -pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; -pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; -pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; -pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; -pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; -pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; -pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; -pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; -pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; -pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; -pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; -pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; -pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; -pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; -pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; -pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; -pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; -pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; -pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; -pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; -pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; -pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -832,83 +1712,31 @@ IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29, IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30, IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, -IFLA_BR_MCAST_QUERIER_INTVL = 32, -IFLA_BR_MCAST_QUERY_INTVL = 33, -IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, -IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, -IFLA_BR_NF_CALL_IPTABLES = 36, -IFLA_BR_NF_CALL_IP6TABLES = 37, -IFLA_BR_NF_CALL_ARPTABLES = 38, -IFLA_BR_VLAN_DEFAULT_PVID = 39, -IFLA_BR_PAD = 40, -IFLA_BR_VLAN_STATS_ENABLED = 41, -IFLA_BR_MCAST_STATS_ENABLED = 42, -IFLA_BR_MCAST_IGMP_VERSION = 43, -IFLA_BR_MCAST_MLD_VERSION = 44, -IFLA_BR_VLAN_STATS_PER_PORT = 45, -IFLA_BR_MULTI_BOOLOPT = 46, -IFLA_BR_MCAST_QUERIER_STATE = 47, -__IFLA_BR_MAX = 48, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_bridge_id { -pub prio: [__u8; 2usize], -pub addr: [__u8; 6usize], -} -pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; -pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -BRIDGE_MODE_UNSPEC = 0, -BRIDGE_MODE_HAIRPIN = 1, -} -pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; -pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; -pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; -pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; -pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; -pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; -pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; -pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; -pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; -pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; -pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; -pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; -pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; -pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; -pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; -pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; -pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; -pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; -pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; -pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; -pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; -pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; -pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; -pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; -pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; -pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; -pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; -pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; -pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; -pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; -pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; -pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; -pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; -pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; -pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; -pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; -pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; -pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; -pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; -pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; -pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; -pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +IFLA_BR_MCAST_QUERIER_INTVL = 32, +IFLA_BR_MCAST_QUERY_INTVL = 33, +IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, +IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, +IFLA_BR_NF_CALL_IPTABLES = 36, +IFLA_BR_NF_CALL_IP6TABLES = 37, +IFLA_BR_NF_CALL_ARPTABLES = 38, +IFLA_BR_VLAN_DEFAULT_PVID = 39, +IFLA_BR_PAD = 40, +IFLA_BR_VLAN_STATS_ENABLED = 41, +IFLA_BR_MCAST_STATS_ENABLED = 42, +IFLA_BR_MCAST_IGMP_VERSION = 43, +IFLA_BR_MCAST_MLD_VERSION = 44, +IFLA_BR_VLAN_STATS_PER_PORT = 45, +IFLA_BR_MULTI_BOOLOPT = 46, +IFLA_BR_MCAST_QUERIER_STATE = 47, +__IFLA_BR_MAX = 48, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +BRIDGE_MODE_UNSPEC = 0, +BRIDGE_MODE_HAIRPIN = 1, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -958,21 +1786,6 @@ IFLA_BRPORT_MCAST_MAX_GROUPS = 42, __IFLA_BRPORT_MAX = 43, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_cacheinfo { -pub max_reasm_len: __u32, -pub tstamp: __u32, -pub reachable_time: __u32, -pub retrans_time: __u32, -} -pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; -pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; -pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; -pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; -pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; -pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; -pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -985,13 +1798,6 @@ IFLA_INFO_SLAVE_DATA = 5, __IFLA_INFO_MAX = 6, } -pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; -pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; -pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; -pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; -pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; -pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; -pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1004,15 +1810,6 @@ IFLA_VLAN_PROTOCOL = 5, __IFLA_VLAN_MAX = 6, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; -pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; -pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1021,22 +1818,6 @@ IFLA_VLAN_QOS_MAPPING = 1, __IFLA_VLAN_QOS_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_qos_mapping { -pub from: __u32, -pub to: __u32, -} -pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; -pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; -pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; -pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; -pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; -pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; -pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; -pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; -pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; -pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1071,9 +1852,6 @@ MACVLAN_MACADDR_FLUSH = 2, MACVLAN_MACADDR_SET = 3, } -pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; -pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; -pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1082,9 +1860,6 @@ IFLA_VRF_TABLE = 1, __IFLA_VRF_MAX = 2, } -pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; -pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; -pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1093,23 +1868,6 @@ IFLA_VRF_PORT_TABLE = 1, __IFLA_VRF_PORT_MAX = 2, } -pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; -pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; -pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; -pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; -pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; -pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; -pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; -pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; -pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; -pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; -pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; -pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; -pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; -pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; -pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; -pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; -pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1132,11 +1890,6 @@ IFLA_MACSEC_OFFLOAD = 15, __IFLA_MACSEC_MAX = 16, } -pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; -pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; -pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; -pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; -pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1147,9 +1900,6 @@ IFLA_XFRM_COLLECT_METADATA = 3, __IFLA_XFRM_MAX = 4, } -impl macsec_validation_type { -pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1159,9 +1909,6 @@ MACSEC_VALIDATE_STRICT = 2, __MACSEC_VALIDATE_END = 3, } -impl macsec_offload { -pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1171,10 +1918,6 @@ MACSEC_OFFLOAD_MAC = 2, __MACSEC_OFFLOAD_END = 3, } -pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; -pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; -pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; -pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1193,25 +1936,6 @@ IPVLAN_MODE_L3S = 2, IPVLAN_MODE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tunnel_msg { -pub family: __u8, -pub flags: __u8, -pub reserved2: __u16, -pub ifindex: __u32, -} -pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; -pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; -pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; -pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; -pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; -pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; -pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; -pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; -pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1228,13 +1952,6 @@ VNIFILTER_ENTRY_STATS_PAD = 9, __VNIFILTER_ENTRY_STATS_MAX = 10, } -pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; -pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; -pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; -pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; -pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; -pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1247,9 +1964,6 @@ VXLAN_VNIFILTER_ENTRY_STATS = 5, __VXLAN_VNIFILTER_ENTRY_MAX = 6, } -pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; -pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1258,38 +1972,6 @@ VXLAN_VNIFILTER_ENTRY = 1, __VXLAN_VNIFILTER_MAX = 2, } -pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; -pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; -pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; -pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; -pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; -pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; -pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; -pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; -pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; -pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; -pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; -pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; -pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; -pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; -pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; -pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; -pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; -pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; -pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; -pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; -pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; -pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; -pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; -pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; -pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; -pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; -pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; -pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; -pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; -pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1327,15 +2009,6 @@ IFLA_VXLAN_VNIFILTER = 30, __IFLA_VXLAN_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vxlan_port_range { -pub low: __be16, -pub high: __be16, -} -impl ifla_vxlan_df { -pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1345,22 +2018,6 @@ VXLAN_DF_INHERIT = 2, __VXLAN_DF_END = 3, } -pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; -pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; -pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; -pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; -pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; -pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; -pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; -pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; -pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; -pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; -pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; -pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; -pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; -pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1382,9 +2039,6 @@ IFLA_GENEVE_INNER_PROTO_INHERIT = 14, __IFLA_GENEVE_MAX = 15, } -impl ifla_geneve_df { -pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1394,12 +2048,6 @@ GENEVE_DF_INHERIT = 2, __GENEVE_DF_END = 3, } -pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; -pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; -pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; -pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; -pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; -pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1411,9 +2059,6 @@ IFLA_BAREUDP_MULTIPROTO_MODE = 4, __IFLA_BAREUDP_MAX = 5, } -pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; -pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; -pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1429,60 +2074,19 @@ GTP_ROLE_GGSN = 0, GTP_ROLE_SGSN = 1, } -pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; -pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; -pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; -pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; -pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; -pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; -pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; -pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub enum _bindgen_ty_25 { IFLA_GTP_UNSPEC = 0, IFLA_GTP_FD0 = 1, -IFLA_GTP_FD1 = 2, -IFLA_GTP_PDP_HASHSIZE = 3, -IFLA_GTP_ROLE = 4, -IFLA_GTP_CREATE_SOCKETS = 5, -IFLA_GTP_RESTART_COUNT = 6, -__IFLA_GTP_MAX = 7, -} -pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; -pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; -pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; -pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; -pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; -pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; -pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; -pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; -pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; -pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; -pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; -pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; -pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; -pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; -pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; -pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; -pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; -pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; -pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; -pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; -pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; -pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; -pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; -pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; -pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; -pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; -pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; -pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; -pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; -pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; -pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; -pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; -pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +IFLA_GTP_FD1 = 2, +IFLA_GTP_PDP_HASHSIZE = 3, +IFLA_GTP_ROLE = 4, +IFLA_GTP_CREATE_SOCKETS = 5, +IFLA_GTP_RESTART_COUNT = 6, +__IFLA_GTP_MAX = 7, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1521,13 +2125,6 @@ IFLA_BOND_NS_IP6_TARGET = 31, __IFLA_BOND_MAX = 32, } -pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; -pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; -pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; -pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; -pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1540,17 +2137,6 @@ IFLA_BOND_AD_INFO_PARTNER_MAC = 5, __IFLA_BOND_AD_INFO_MAX = 6, } -pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; -pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; -pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; -pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; -pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; -pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; -pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; -pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; -pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1567,9 +2153,6 @@ IFLA_BOND_SLAVE_PRIO = 9, __IFLA_BOND_SLAVE_MAX = 10, } -pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; -pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; -pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1578,21 +2161,6 @@ IFLA_VF_INFO = 1, __IFLA_VF_INFO_MAX = 2, } -pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; -pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; -pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; -pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; -pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; -pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; -pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; -pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; -pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; -pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; -pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; -pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; -pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; -pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; -pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1613,27 +2181,6 @@ IFLA_VF_BROADCAST = 13, __IFLA_VF_MAX = 14, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_mac { -pub vf: __u32, -pub mac: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_broadcast { -pub broadcast: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -} -pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; -pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; -pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1642,43 +2189,6 @@ IFLA_VF_VLAN_INFO = 1, __IFLA_VF_VLAN_INFO_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan_info { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -pub vlan_proto: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_tx_rate { -pub vf: __u32, -pub rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rate { -pub vf: __u32, -pub min_tx_rate: __u32, -pub max_tx_rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_spoofchk { -pub vf: __u32, -pub setting: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_guid { -pub vf: __u32, -pub guid: __u64, -} -pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; -pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; -pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; -pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1688,28 +2198,6 @@ IFLA_VF_LINK_STATE_DISABLE = 2, __IFLA_VF_LINK_STATE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_link_state { -pub vf: __u32, -pub link_state: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rss_query_en { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; -pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; -pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; -pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; -pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; -pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; -pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; -pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; -pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; -pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1725,15 +2213,6 @@ IFLA_VF_STATS_TX_DROPPED = 8, __IFLA_VF_STATS_MAX = 9, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_trust { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; -pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; -pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1742,15 +2221,6 @@ IFLA_VF_PORT = 1, __IFLA_VF_PORT_MAX = 2, } -pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; -pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; -pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; -pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; -pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; -pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; -pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; -pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; -pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1765,10 +2235,6 @@ IFLA_PORT_RESPONSE = 7, __IFLA_PORT_MAX = 8, } -pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; -pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; -pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; -pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1778,19 +2244,6 @@ PORT_REQUEST_ASSOCIATE = 2, PORT_REQUEST_DISASSOCIATE = 3, } -pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; -pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; -pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; -pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; -pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; -pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; -pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; -pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; -pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; -pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; -pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1809,19 +2262,6 @@ PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, PORT_PROFILE_RESPONSE_ERROR = 261, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_port_vsi { -pub vsi_mgr_id: __u8, -pub vsi_type_id: [__u8; 3usize], -pub vsi_type_version: __u8, -pub pad: [__u8; 3usize], -} -pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; -pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; -pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; -pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; -pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1832,8 +2272,6 @@ IFLA_IPOIB_UMCAST = 3, __IFLA_IPOIB_MAX = 4, } -pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; -pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1841,9 +2279,6 @@ IPOIB_MODE_DATAGRAM = 0, IPOIB_MODE_CONNECTED = 1, } -pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; -pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; -pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1852,15 +2287,6 @@ HSR_PROTOCOL_PRP = 1, HSR_PROTOCOL_MAX = 2, } -pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; -pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; -pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; -pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; -pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; -pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; -pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; -pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; -pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1875,22 +2301,6 @@ IFLA_HSR_PROTOCOL = 7, __IFLA_HSR_MAX = 8, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_stats_msg { -pub family: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub ifindex: __u32, -pub filter_mask: __u32, -} -pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; -pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; -pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; -pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; -pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; -pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; -pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1903,10 +2313,6 @@ IFLA_STATS_AF_SPEC = 5, __IFLA_STATS_MAX = 6, } -pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; -pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; -pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1916,10 +2322,6 @@ IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, __IFLA_STATS_GETSET_MAX = 3, } -pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; -pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; -pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; -pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1929,11 +2331,6 @@ LINK_XSTATS_TYPE_BOND = 2, __LINK_XSTATS_TYPE_MAX = 3, } -pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; -pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1944,10 +2341,6 @@ IFLA_OFFLOAD_XSTATS_L3_STATS = 3, __IFLA_OFFLOAD_XSTATS_MAX = 4, } -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; -pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1957,11 +2350,6 @@ IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, } -pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; -pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; -pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; -pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; -pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1972,16 +2360,6 @@ XDP_ATTACHED_HW = 3, XDP_ATTACHED_MULTI = 4, } -pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; -pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; -pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; -pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; -pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; -pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; -pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; -pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; -pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; -pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1997,13 +2375,6 @@ IFLA_XDP_EXPECTED_FD = 8, __IFLA_XDP_MAX = 9, } -pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; -pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; -pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; -pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; -pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; -pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; -pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2016,17 +2387,6 @@ IFLA_EVENT_IGMP_RESEND = 5, IFLA_EVENT_BONDING_OPTIONS = 6, } -pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; -pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; -pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; -pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; -pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; -pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; -pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; -pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; -pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; -pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; -pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2042,11 +2402,7 @@ IFLA_TUN_NUM_QUEUES = 8, IFLA_TUN_NUM_DISABLED_QUEUES = 9, __IFLA_TUN_MAX = 10, -} -pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; -pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; -pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; -pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2056,15 +2412,6 @@ IFLA_RMNET_FLAGS = 2, __IFLA_RMNET_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_rmnet_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; -pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; -pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2073,9 +2420,6 @@ IFLA_MCTP_NET = 1, __IFLA_MCTP_MAX = 2, } -pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; -pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; -pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2084,28 +2428,6 @@ IFLA_DSA_MASTER = 1, __IFLA_DSA_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifaddrmsg { -pub ifa_family: __u8, -pub ifa_prefixlen: __u8, -pub ifa_flags: __u8, -pub ifa_scope: __u8, -pub ifa_index: __u32, -} -pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; -pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; -pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; -pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; -pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; -pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; -pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; -pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; -pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; -pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; -pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; -pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; -pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2124,44 +2446,6 @@ IFA_PROTO = 11, __IFA_MAX = 12, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifa_cacheinfo { -pub ifa_prefered: __u32, -pub ifa_valid: __u32, -pub cstamp: __u32, -pub tstamp: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndmsg { -pub ndm_family: __u8, -pub ndm_pad1: __u8, -pub ndm_pad2: __u16, -pub ndm_ifindex: __s32, -pub ndm_state: __u16, -pub ndm_flags: __u8, -pub ndm_type: __u8, -} -pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; -pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; -pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; -pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; -pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; -pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; -pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; -pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; -pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; -pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; -pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; -pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; -pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; -pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; -pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; -pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; -pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; -pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; -pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2186,50 +2470,6 @@ NDA_NDM_FLAGS_MASK = 17, __NDA_MAX = 18, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nda_cacheinfo { -pub ndm_confirmed: __u32, -pub ndm_used: __u32, -pub ndm_updated: __u32, -pub ndm_refcnt: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_stats { -pub ndts_allocs: __u64, -pub ndts_destroys: __u64, -pub ndts_hash_grows: __u64, -pub ndts_res_failed: __u64, -pub ndts_lookups: __u64, -pub ndts_hits: __u64, -pub ndts_rcv_probes_mcast: __u64, -pub ndts_rcv_probes_ucast: __u64, -pub ndts_periodic_gc_runs: __u64, -pub ndts_forced_gc_runs: __u64, -pub ndts_table_fulls: __u64, -} -pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; -pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; -pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; -pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; -pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; -pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; -pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; -pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; -pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; -pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; -pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; -pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; -pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; -pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; -pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; -pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; -pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; -pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; -pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; -pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; -pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2256,37 +2496,6 @@ NDTPA_INTERVAL_PROBE_TIME_MS = 19, __NDTPA_MAX = 20, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndtmsg { -pub ndtm_family: __u8, -pub ndtm_pad1: __u8, -pub ndtm_pad2: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_config { -pub ndtc_key_len: __u16, -pub ndtc_entry_size: __u16, -pub ndtc_entries: __u32, -pub ndtc_last_flush: __u32, -pub ndtc_last_rand: __u32, -pub ndtc_hash_rnd: __u32, -pub ndtc_hash_mask: __u32, -pub ndtc_hash_chain_gc: __u32, -pub ndtc_proxy_qlen: __u32, -} -pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; -pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; -pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; -pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; -pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; -pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; -pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; -pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; -pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; -pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; -pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2303,8 +2512,6 @@ NDTA_PAD = 9, __NDTA_MAX = 10, } -pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; -pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2312,10 +2519,6 @@ FDB_NOTIFY_BIT = 1, FDB_NOTIFY_INACTIVE_BIT = 2, } -pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; -pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; -pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; -pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2325,79 +2528,6 @@ NFEA_DONT_REFRESH = 2, __NFEA_MAX = 3, } -pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; -pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; -pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; -pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; -pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; -pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; -pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; -pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; -pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; -pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; -pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; -pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; -pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; -pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; -pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; -pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; -pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; -pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; -pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; -pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; -pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; -pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; -pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; -pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; -pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; -pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; -pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; -pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; -pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; -pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; -pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; -pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; -pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; -pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; -pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; -pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; -pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; -pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; -pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; -pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; -pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; -pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; -pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; -pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; -pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; -pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; -pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; -pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; -pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; -pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; -pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; -pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; -pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; -pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; -pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; -pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; -pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; -pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; -pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; -pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; -pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; -pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; -pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; -pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; -pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; -pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; -pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; -pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; -pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; -pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; -pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2464,49 +2594,17 @@ RTM_NEWLINKPROP = 108, RTM_DELLINKPROP = 109, RTM_GETLINKPROP = 110, -RTM_NEWVLAN = 112, -RTM_DELVLAN = 113, -RTM_GETVLAN = 114, -RTM_NEWNEXTHOPBUCKET = 116, -RTM_DELNEXTHOPBUCKET = 117, -RTM_GETNEXTHOPBUCKET = 118, -RTM_NEWTUNNEL = 120, -RTM_DELTUNNEL = 121, -RTM_GETTUNNEL = 122, -__RTM_MAX = 123, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtattr { -pub rta_len: crate::ctypes::c_ushort, -pub rta_type: crate::ctypes::c_ushort, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtmsg { -pub rtm_family: crate::ctypes::c_uchar, -pub rtm_dst_len: crate::ctypes::c_uchar, -pub rtm_src_len: crate::ctypes::c_uchar, -pub rtm_tos: crate::ctypes::c_uchar, -pub rtm_table: crate::ctypes::c_uchar, -pub rtm_protocol: crate::ctypes::c_uchar, -pub rtm_scope: crate::ctypes::c_uchar, -pub rtm_type: crate::ctypes::c_uchar, -pub rtm_flags: crate::ctypes::c_uint, +RTM_NEWVLAN = 112, +RTM_DELVLAN = 113, +RTM_GETVLAN = 114, +RTM_NEWNEXTHOPBUCKET = 116, +RTM_DELNEXTHOPBUCKET = 117, +RTM_GETNEXTHOPBUCKET = 118, +RTM_NEWTUNNEL = 120, +RTM_DELTUNNEL = 121, +RTM_GETTUNNEL = 122, +__RTM_MAX = 123, } -pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; -pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; -pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; -pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; -pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; -pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; -pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; -pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; -pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; -pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; -pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; -pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; -pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2583,51 +2681,6 @@ RTA_NH_ID = 30, __RTA_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnexthop { -pub rtnh_len: crate::ctypes::c_ushort, -pub rtnh_flags: crate::ctypes::c_uchar, -pub rtnh_hops: crate::ctypes::c_uchar, -pub rtnh_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug)] -pub struct rtvia { -pub rtvia_family: __kernel_sa_family_t, -pub rtvia_addr: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_cacheinfo { -pub rta_clntref: __u32, -pub rta_lastuse: __u32, -pub rta_expires: __s32, -pub rta_error: __u32, -pub rta_used: __u32, -pub rta_id: __u32, -pub rta_ts: __u32, -pub rta_tsage: __u32, -} -pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; -pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; -pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; -pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; -pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; -pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; -pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; -pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; -pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; -pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; -pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; -pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; -pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; -pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; -pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; -pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; -pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; -pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; -pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2652,72 +2705,6 @@ RTAX_FASTOPEN_NO_COOKIE = 17, __RTAX_MAX = 18, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rta_session { -pub proto: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub u: rta_session__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union rta_session__bindgen_ty_1 { -pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, -pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, -pub spi: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { -pub sport: __u16, -pub dport: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { -pub type_: __u8, -pub code: __u8, -pub ident: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_mfc_stats { -pub mfcs_packets: __u64, -pub mfcs_bytes: __u64, -pub mfcs_wrong_if: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtgenmsg { -pub rtgen_family: crate::ctypes::c_uchar, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifinfomsg { -pub ifi_family: crate::ctypes::c_uchar, -pub __ifi_pad: crate::ctypes::c_uchar, -pub ifi_type: crate::ctypes::c_ushort, -pub ifi_index: crate::ctypes::c_int, -pub ifi_flags: crate::ctypes::c_uint, -pub ifi_change: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefixmsg { -pub prefix_family: crate::ctypes::c_uchar, -pub prefix_pad1: crate::ctypes::c_uchar, -pub prefix_pad2: crate::ctypes::c_ushort, -pub prefix_ifindex: crate::ctypes::c_int, -pub prefix_type: crate::ctypes::c_uchar, -pub prefix_len: crate::ctypes::c_uchar, -pub prefix_flags: crate::ctypes::c_uchar, -pub prefix_pad3: crate::ctypes::c_uchar, -} -pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; -pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; -pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; -pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2727,41 +2714,6 @@ PREFIX_CACHEINFO = 2, __PREFIX_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefix_cacheinfo { -pub preferred_time: __u32, -pub valid_time: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcmsg { -pub tcm_family: crate::ctypes::c_uchar, -pub tcm__pad1: crate::ctypes::c_uchar, -pub tcm__pad2: crate::ctypes::c_ushort, -pub tcm_ifindex: crate::ctypes::c_int, -pub tcm_handle: __u32, -pub tcm_parent: __u32, -pub tcm_info: __u32, -} -pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; -pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; -pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; -pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; -pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; -pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; -pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; -pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; -pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; -pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; -pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; -pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; -pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; -pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; -pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; -pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; -pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; -pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2785,21 +2737,6 @@ TCA_EXT_WARN_MSG = 16, __TCA_MAX = 17, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nduseroptmsg { -pub nduseropt_family: crate::ctypes::c_uchar, -pub nduseropt_pad1: crate::ctypes::c_uchar, -pub nduseropt_opts_len: crate::ctypes::c_ushort, -pub nduseropt_ifindex: crate::ctypes::c_int, -pub nduseropt_icmp_type: __u8, -pub nduseropt_icmp_code: __u8, -pub nduseropt_pad2: crate::ctypes::c_ushort, -pub nduseropt_pad3: crate::ctypes::c_uint, -} -pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; -pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; -pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2851,20 +2788,6 @@ RTNLGRP_STATS = 36, __RTNLGRP_MAX = 37, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcamsg { -pub tca_family: crate::ctypes::c_uchar, -pub tca__pad1: crate::ctypes::c_uchar, -pub tca__pad2: crate::ctypes::c_ushort, -} -pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; -pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; -pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; -pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; -pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; -pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; -pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2877,3 +2800,61 @@ TCA_ROOT_EXT_WARN_MSG = 5, __TCA_ROOT_MAX = 6, } +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union rta_session__bindgen_ty_1 { +pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, +pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, +pub spi: __u32, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl nlmsgerr_attrs { +pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +} +impl netlink_policy_type_attr { +pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; +} +impl macsec_validation_type { +pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; +} +impl macsec_offload { +pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; +} +impl ifla_vxlan_df { +pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; +} +impl ifla_geneve_df { +pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/net.rs temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/net.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/net.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/net.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1842 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_short; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type socklen_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct __vector128 { +pub u: [__u32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_addr { +pub s_addr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq { +pub imr_multiaddr: in_addr, +pub imr_interface: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreqn { +pub imr_multiaddr: in_addr, +pub imr_address: in_addr, +pub imr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq_source { +pub imr_multiaddr: __be32, +pub imr_interface: __be32, +pub imr_sourceaddr: __be32, +} +#[repr(C)] +pub struct ip_msfilter { +pub imsf_multiaddr: __be32, +pub imsf_interface: __be32, +pub imsf_fmode: __u32, +pub imsf_numsrc: __u32, +pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, +} +#[repr(C)] +pub struct ip_msfilter__bindgen_ty_1 { +pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, +pub __bindgen_anon_1: __BindgenUnionField, +pub bindgen_union_field: u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { +pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub imsf_slist_flex: __IncompleteArrayField<__be32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_req { +pub gr_interface: __u32, +pub gr_group: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_source_req { +pub gsr_interface: __u32, +pub gsr_group: __kernel_sockaddr_storage, +pub gsr_source: __kernel_sockaddr_storage, +} +#[repr(C)] +pub struct group_filter { +pub __bindgen_anon_1: group_filter__bindgen_ty_1, +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u32; 67usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { +pub gf_interface_aux: __u32, +pub gf_group_aux: __kernel_sockaddr_storage, +pub gf_fmode_aux: __u32, +pub gf_numsrc_aux: __u32, +pub gf_slist: [__kernel_sockaddr_storage; 1usize], +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { +pub gf_interface: __u32, +pub gf_group: __kernel_sockaddr_storage, +pub gf_fmode: __u32, +pub gf_numsrc: __u32, +pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_pktinfo { +pub ipi_ifindex: crate::ctypes::c_int, +pub ipi_spec_dst: in_addr, +pub ipi_addr: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_in { +pub sin_family: __kernel_sa_family_t, +pub sin_port: __be16, +pub sin_addr: in_addr, +pub __pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct iphdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub tos: __u8, +pub tot_len: __be16, +pub id: __be16, +pub frag_off: __be16, +pub ttl: __u8, +pub protocol: __u8, +pub check: __sum16, +pub __bindgen_anon_1: iphdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_auth_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub reserved: __be16, +pub spi: __be32, +pub seq_no: __be32, +pub auth_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_esp_hdr { +pub spi: __be32, +pub seq_no: __be32, +pub enc_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_comp_hdr { +pub nexthdr: __u8, +pub flags: __u8, +pub cpi: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_beet_phdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub padlen: __u8, +pub reserved: __u8, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_addr { +pub in6_u: in6_addr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr_in6 { +pub sin6_family: crate::ctypes::c_ushort, +pub sin6_port: __be16, +pub sin6_flowinfo: __be32, +pub sin6_addr: in6_addr, +pub sin6_scope_id: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6_mreq { +pub ipv6mr_multiaddr: in6_addr, +pub ipv6mr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_flowlabel_req { +pub flr_dst: in6_addr, +pub flr_label: __be32, +pub flr_action: __u8, +pub flr_share: __u8, +pub flr_flags: __u16, +pub flr_expires: __u16, +pub flr_linger: __u16, +pub __flr_pad: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_pktinfo { +pub ipi6_addr: in6_addr, +pub ipi6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ip6_mtuinfo { +pub ip6m_addr: sockaddr_in6, +pub ip6m_mtu: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_ifreq { +pub ifr6_addr: in6_addr, +pub ifr6_prefixlen: __u32, +pub ifr6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_rt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub type_: __u8, +pub segments_left: __u8, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_opt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +} +#[repr(C)] +pub struct rt0_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rt2_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: in6_addr, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct ipv6_destopt_hao { +pub type_: __u8, +pub length: __u8, +pub addr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub flow_lbl: [__u8; 3usize], +pub payload_len: __be16, +pub nexthdr: __u8, +pub hop_limit: __u8, +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcphdr { +pub source: __be16, +pub dest: __be16, +pub seq: __be32, +pub ack_seq: __be32, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub window: __be16, +pub check: __sum16, +pub urg_ptr: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_opt { +pub opt_code: __u32, +pub opt_val: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_window { +pub snd_wl1: __u32, +pub snd_wnd: __u32, +pub max_window: __u32, +pub rcv_wnd: __u32, +pub rcv_wup: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_info { +pub tcpi_state: __u8, +pub tcpi_ca_state: __u8, +pub tcpi_retransmits: __u8, +pub tcpi_probes: __u8, +pub tcpi_backoff: __u8, +pub tcpi_options: __u8, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub tcpi_rto: __u32, +pub tcpi_ato: __u32, +pub tcpi_snd_mss: __u32, +pub tcpi_rcv_mss: __u32, +pub tcpi_unacked: __u32, +pub tcpi_sacked: __u32, +pub tcpi_lost: __u32, +pub tcpi_retrans: __u32, +pub tcpi_fackets: __u32, +pub tcpi_last_data_sent: __u32, +pub tcpi_last_ack_sent: __u32, +pub tcpi_last_data_recv: __u32, +pub tcpi_last_ack_recv: __u32, +pub tcpi_pmtu: __u32, +pub tcpi_rcv_ssthresh: __u32, +pub tcpi_rtt: __u32, +pub tcpi_rttvar: __u32, +pub tcpi_snd_ssthresh: __u32, +pub tcpi_snd_cwnd: __u32, +pub tcpi_advmss: __u32, +pub tcpi_reordering: __u32, +pub tcpi_rcv_rtt: __u32, +pub tcpi_rcv_space: __u32, +pub tcpi_total_retrans: __u32, +pub tcpi_pacing_rate: __u64, +pub tcpi_max_pacing_rate: __u64, +pub tcpi_bytes_acked: __u64, +pub tcpi_bytes_received: __u64, +pub tcpi_segs_out: __u32, +pub tcpi_segs_in: __u32, +pub tcpi_notsent_bytes: __u32, +pub tcpi_min_rtt: __u32, +pub tcpi_data_segs_in: __u32, +pub tcpi_data_segs_out: __u32, +pub tcpi_delivery_rate: __u64, +pub tcpi_busy_time: __u64, +pub tcpi_rwnd_limited: __u64, +pub tcpi_sndbuf_limited: __u64, +pub tcpi_delivered: __u32, +pub tcpi_delivered_ce: __u32, +pub tcpi_bytes_sent: __u64, +pub tcpi_bytes_retrans: __u64, +pub tcpi_dsack_dups: __u32, +pub tcpi_reord_seen: __u32, +pub tcpi_rcv_ooopack: __u32, +pub tcpi_snd_wnd: __u32, +pub tcpi_rcv_wnd: __u32, +pub tcpi_rehash: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct tcp_md5sig { +pub tcpm_addr: __kernel_sockaddr_storage, +pub tcpm_flags: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_ifindex: crate::ctypes::c_int, +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_diag_md5sig { +pub tcpm_family: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_addr: [__be32; 4usize], +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_zerocopy_receive { +pub address: __u64, +pub length: __u32, +pub recv_skip_hint: __u32, +pub inq: __u32, +pub err: __s32, +pub copybuf_address: __u64, +pub copybuf_len: __s32, +pub flags: __u32, +pub msg_control: __u64, +pub msg_controllen: __u64, +pub msg_flags: __u32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_un { +pub sun_family: __kernel_sa_family_t, +pub sun_path: [crate::ctypes::c_char; 108usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr { +pub __storage: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct linger { +pub l_onoff: crate::ctypes::c_int, +pub l_linger: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct msghdr { +pub msg_name: *mut crate::ctypes::c_void, +pub msg_namelen: crate::ctypes::c_int, +pub msg_iov: *mut iovec, +pub msg_iovlen: usize, +pub msg_control: *mut crate::ctypes::c_void, +pub msg_controllen: usize, +pub msg_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct cmsghdr { +pub cmsg_len: usize, +pub cmsg_level: crate::ctypes::c_int, +pub cmsg_type: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ucred { +pub pid: __u32, +pub uid: __u32, +pub gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mmsghdr { +pub msg_hdr: msghdr, +pub msg_len: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub _address: u8, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const IP_TOS: u32 = 1; +pub const IP_TTL: u32 = 2; +pub const IP_HDRINCL: u32 = 3; +pub const IP_OPTIONS: u32 = 4; +pub const IP_ROUTER_ALERT: u32 = 5; +pub const IP_RECVOPTS: u32 = 6; +pub const IP_RETOPTS: u32 = 7; +pub const IP_PKTINFO: u32 = 8; +pub const IP_PKTOPTIONS: u32 = 9; +pub const IP_MTU_DISCOVER: u32 = 10; +pub const IP_RECVERR: u32 = 11; +pub const IP_RECVTTL: u32 = 12; +pub const IP_RECVTOS: u32 = 13; +pub const IP_MTU: u32 = 14; +pub const IP_FREEBIND: u32 = 15; +pub const IP_IPSEC_POLICY: u32 = 16; +pub const IP_XFRM_POLICY: u32 = 17; +pub const IP_PASSSEC: u32 = 18; +pub const IP_TRANSPARENT: u32 = 19; +pub const IP_RECVRETOPTS: u32 = 7; +pub const IP_ORIGDSTADDR: u32 = 20; +pub const IP_RECVORIGDSTADDR: u32 = 20; +pub const IP_MINTTL: u32 = 21; +pub const IP_NODEFRAG: u32 = 22; +pub const IP_CHECKSUM: u32 = 23; +pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; +pub const IP_RECVFRAGSIZE: u32 = 25; +pub const IP_RECVERR_RFC4884: u32 = 26; +pub const IP_PMTUDISC_DONT: u32 = 0; +pub const IP_PMTUDISC_WANT: u32 = 1; +pub const IP_PMTUDISC_DO: u32 = 2; +pub const IP_PMTUDISC_PROBE: u32 = 3; +pub const IP_PMTUDISC_INTERFACE: u32 = 4; +pub const IP_PMTUDISC_OMIT: u32 = 5; +pub const IP_MULTICAST_IF: u32 = 32; +pub const IP_MULTICAST_TTL: u32 = 33; +pub const IP_MULTICAST_LOOP: u32 = 34; +pub const IP_ADD_MEMBERSHIP: u32 = 35; +pub const IP_DROP_MEMBERSHIP: u32 = 36; +pub const IP_UNBLOCK_SOURCE: u32 = 37; +pub const IP_BLOCK_SOURCE: u32 = 38; +pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; +pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; +pub const IP_MSFILTER: u32 = 41; +pub const MCAST_JOIN_GROUP: u32 = 42; +pub const MCAST_BLOCK_SOURCE: u32 = 43; +pub const MCAST_UNBLOCK_SOURCE: u32 = 44; +pub const MCAST_LEAVE_GROUP: u32 = 45; +pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; +pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; +pub const MCAST_MSFILTER: u32 = 48; +pub const IP_MULTICAST_ALL: u32 = 49; +pub const IP_UNICAST_IF: u32 = 50; +pub const IP_LOCAL_PORT_RANGE: u32 = 51; +pub const MCAST_EXCLUDE: u32 = 0; +pub const MCAST_INCLUDE: u32 = 1; +pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; +pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; +pub const __SOCK_SIZE__: u32 = 16; +pub const IN_CLASSA_NET: u32 = 4278190080; +pub const IN_CLASSA_NSHIFT: u32 = 24; +pub const IN_CLASSA_HOST: u32 = 16777215; +pub const IN_CLASSA_MAX: u32 = 128; +pub const IN_CLASSB_NET: u32 = 4294901760; +pub const IN_CLASSB_NSHIFT: u32 = 16; +pub const IN_CLASSB_HOST: u32 = 65535; +pub const IN_CLASSB_MAX: u32 = 65536; +pub const IN_CLASSC_NET: u32 = 4294967040; +pub const IN_CLASSC_NSHIFT: u32 = 8; +pub const IN_CLASSC_HOST: u32 = 255; +pub const IN_MULTICAST_NET: u32 = 3758096384; +pub const IN_CLASSE_NET: u32 = 4294967295; +pub const IN_CLASSE_NSHIFT: u32 = 0; +pub const IN_LOOPBACKNET: u32 = 127; +pub const INADDR_LOOPBACK: u32 = 2130706433; +pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; +pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; +pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; +pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; +pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; +pub const __BIG_ENDIAN: u32 = 4321; +pub const IPTOS_TOS_MASK: u32 = 30; +pub const IPTOS_LOWDELAY: u32 = 16; +pub const IPTOS_THROUGHPUT: u32 = 8; +pub const IPTOS_RELIABILITY: u32 = 4; +pub const IPTOS_MINCOST: u32 = 2; +pub const IPTOS_PREC_MASK: u32 = 224; +pub const IPTOS_PREC_NETCONTROL: u32 = 224; +pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; +pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; +pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; +pub const IPTOS_PREC_FLASH: u32 = 96; +pub const IPTOS_PREC_IMMEDIATE: u32 = 64; +pub const IPTOS_PREC_PRIORITY: u32 = 32; +pub const IPTOS_PREC_ROUTINE: u32 = 0; +pub const IPOPT_COPY: u32 = 128; +pub const IPOPT_CLASS_MASK: u32 = 96; +pub const IPOPT_NUMBER_MASK: u32 = 31; +pub const IPOPT_CONTROL: u32 = 0; +pub const IPOPT_RESERVED1: u32 = 32; +pub const IPOPT_MEASUREMENT: u32 = 64; +pub const IPOPT_RESERVED2: u32 = 96; +pub const IPOPT_END: u32 = 0; +pub const IPOPT_NOOP: u32 = 1; +pub const IPOPT_SEC: u32 = 130; +pub const IPOPT_LSRR: u32 = 131; +pub const IPOPT_TIMESTAMP: u32 = 68; +pub const IPOPT_CIPSO: u32 = 134; +pub const IPOPT_RR: u32 = 7; +pub const IPOPT_SID: u32 = 136; +pub const IPOPT_SSRR: u32 = 137; +pub const IPOPT_RA: u32 = 148; +pub const IPVERSION: u32 = 4; +pub const MAXTTL: u32 = 255; +pub const IPDEFTTL: u32 = 64; +pub const IPOPT_OPTVAL: u32 = 0; +pub const IPOPT_OLEN: u32 = 1; +pub const IPOPT_OFFSET: u32 = 2; +pub const IPOPT_MINOFF: u32 = 4; +pub const MAX_IPOPTLEN: u32 = 40; +pub const IPOPT_NOP: u32 = 1; +pub const IPOPT_EOL: u32 = 0; +pub const IPOPT_TS: u32 = 68; +pub const IPOPT_TS_TSONLY: u32 = 0; +pub const IPOPT_TS_TSANDADDR: u32 = 1; +pub const IPOPT_TS_PRESPEC: u32 = 3; +pub const IPV4_BEET_PHMAXLEN: u32 = 8; +pub const IPV6_FL_A_GET: u32 = 0; +pub const IPV6_FL_A_PUT: u32 = 1; +pub const IPV6_FL_A_RENEW: u32 = 2; +pub const IPV6_FL_F_CREATE: u32 = 1; +pub const IPV6_FL_F_EXCL: u32 = 2; +pub const IPV6_FL_F_REFLECT: u32 = 4; +pub const IPV6_FL_F_REMOTE: u32 = 8; +pub const IPV6_FL_S_NONE: u32 = 0; +pub const IPV6_FL_S_EXCL: u32 = 1; +pub const IPV6_FL_S_PROCESS: u32 = 2; +pub const IPV6_FL_S_USER: u32 = 3; +pub const IPV6_FL_S_ANY: u32 = 255; +pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; +pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; +pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; +pub const IPV6_PRIORITY_FILLER: u32 = 256; +pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; +pub const IPV6_PRIORITY_RESERVED1: u32 = 768; +pub const IPV6_PRIORITY_BULK: u32 = 1024; +pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; +pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; +pub const IPV6_PRIORITY_CONTROL: u32 = 1792; +pub const IPV6_PRIORITY_8: u32 = 2048; +pub const IPV6_PRIORITY_9: u32 = 2304; +pub const IPV6_PRIORITY_10: u32 = 2560; +pub const IPV6_PRIORITY_11: u32 = 2816; +pub const IPV6_PRIORITY_12: u32 = 3072; +pub const IPV6_PRIORITY_13: u32 = 3328; +pub const IPV6_PRIORITY_14: u32 = 3584; +pub const IPV6_PRIORITY_15: u32 = 3840; +pub const IPPROTO_HOPOPTS: u32 = 0; +pub const IPPROTO_ROUTING: u32 = 43; +pub const IPPROTO_FRAGMENT: u32 = 44; +pub const IPPROTO_ICMPV6: u32 = 58; +pub const IPPROTO_NONE: u32 = 59; +pub const IPPROTO_DSTOPTS: u32 = 60; +pub const IPPROTO_MH: u32 = 135; +pub const IPV6_TLV_PAD1: u32 = 0; +pub const IPV6_TLV_PADN: u32 = 1; +pub const IPV6_TLV_ROUTERALERT: u32 = 5; +pub const IPV6_TLV_CALIPSO: u32 = 7; +pub const IPV6_TLV_IOAM: u32 = 49; +pub const IPV6_TLV_JUMBO: u32 = 194; +pub const IPV6_TLV_HAO: u32 = 201; +pub const IPV6_ADDRFORM: u32 = 1; +pub const IPV6_2292PKTINFO: u32 = 2; +pub const IPV6_2292HOPOPTS: u32 = 3; +pub const IPV6_2292DSTOPTS: u32 = 4; +pub const IPV6_2292RTHDR: u32 = 5; +pub const IPV6_2292PKTOPTIONS: u32 = 6; +pub const IPV6_CHECKSUM: u32 = 7; +pub const IPV6_2292HOPLIMIT: u32 = 8; +pub const IPV6_NEXTHOP: u32 = 9; +pub const IPV6_AUTHHDR: u32 = 10; +pub const IPV6_FLOWINFO: u32 = 11; +pub const IPV6_UNICAST_HOPS: u32 = 16; +pub const IPV6_MULTICAST_IF: u32 = 17; +pub const IPV6_MULTICAST_HOPS: u32 = 18; +pub const IPV6_MULTICAST_LOOP: u32 = 19; +pub const IPV6_ADD_MEMBERSHIP: u32 = 20; +pub const IPV6_DROP_MEMBERSHIP: u32 = 21; +pub const IPV6_ROUTER_ALERT: u32 = 22; +pub const IPV6_MTU_DISCOVER: u32 = 23; +pub const IPV6_MTU: u32 = 24; +pub const IPV6_RECVERR: u32 = 25; +pub const IPV6_V6ONLY: u32 = 26; +pub const IPV6_JOIN_ANYCAST: u32 = 27; +pub const IPV6_LEAVE_ANYCAST: u32 = 28; +pub const IPV6_MULTICAST_ALL: u32 = 29; +pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; +pub const IPV6_RECVERR_RFC4884: u32 = 31; +pub const IPV6_PMTUDISC_DONT: u32 = 0; +pub const IPV6_PMTUDISC_WANT: u32 = 1; +pub const IPV6_PMTUDISC_DO: u32 = 2; +pub const IPV6_PMTUDISC_PROBE: u32 = 3; +pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; +pub const IPV6_PMTUDISC_OMIT: u32 = 5; +pub const IPV6_FLOWLABEL_MGR: u32 = 32; +pub const IPV6_FLOWINFO_SEND: u32 = 33; +pub const IPV6_IPSEC_POLICY: u32 = 34; +pub const IPV6_XFRM_POLICY: u32 = 35; +pub const IPV6_HDRINCL: u32 = 36; +pub const IPV6_RECVPKTINFO: u32 = 49; +pub const IPV6_PKTINFO: u32 = 50; +pub const IPV6_RECVHOPLIMIT: u32 = 51; +pub const IPV6_HOPLIMIT: u32 = 52; +pub const IPV6_RECVHOPOPTS: u32 = 53; +pub const IPV6_HOPOPTS: u32 = 54; +pub const IPV6_RTHDRDSTOPTS: u32 = 55; +pub const IPV6_RECVRTHDR: u32 = 56; +pub const IPV6_RTHDR: u32 = 57; +pub const IPV6_RECVDSTOPTS: u32 = 58; +pub const IPV6_DSTOPTS: u32 = 59; +pub const IPV6_RECVPATHMTU: u32 = 60; +pub const IPV6_PATHMTU: u32 = 61; +pub const IPV6_DONTFRAG: u32 = 62; +pub const IPV6_RECVTCLASS: u32 = 66; +pub const IPV6_TCLASS: u32 = 67; +pub const IPV6_AUTOFLOWLABEL: u32 = 70; +pub const IPV6_ADDR_PREFERENCES: u32 = 72; +pub const IPV6_PREFER_SRC_TMP: u32 = 1; +pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; +pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; +pub const IPV6_PREFER_SRC_COA: u32 = 4; +pub const IPV6_PREFER_SRC_HOME: u32 = 1024; +pub const IPV6_PREFER_SRC_CGA: u32 = 8; +pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; +pub const IPV6_MINHOPCOUNT: u32 = 73; +pub const IPV6_ORIGDSTADDR: u32 = 74; +pub const IPV6_RECVORIGDSTADDR: u32 = 74; +pub const IPV6_TRANSPARENT: u32 = 75; +pub const IPV6_UNICAST_IF: u32 = 76; +pub const IPV6_RECVFRAGSIZE: u32 = 77; +pub const IPV6_FREEBIND: u32 = 78; +pub const IPV6_MIN_MTU: u32 = 1280; +pub const IPV6_SRCRT_STRICT: u32 = 1; +pub const IPV6_SRCRT_TYPE_0: u32 = 0; +pub const IPV6_SRCRT_TYPE_2: u32 = 2; +pub const IPV6_SRCRT_TYPE_3: u32 = 3; +pub const IPV6_SRCRT_TYPE_4: u32 = 4; +pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; +pub const SO_RCVLOWAT: u32 = 16; +pub const SO_SNDLOWAT: u32 = 17; +pub const SO_RCVTIMEO_OLD: u32 = 18; +pub const SO_SNDTIMEO_OLD: u32 = 19; +pub const SO_PASSCRED: u32 = 20; +pub const SO_PEERCRED: u32 = 21; +pub const SIOCGSTAMP_OLD: u32 = 35078; +pub const SIOCGSTAMPNS_OLD: u32 = 35079; +pub const SOL_SOCKET: u32 = 1; +pub const SO_DEBUG: u32 = 1; +pub const SO_REUSEADDR: u32 = 2; +pub const SO_TYPE: u32 = 3; +pub const SO_ERROR: u32 = 4; +pub const SO_DONTROUTE: u32 = 5; +pub const SO_BROADCAST: u32 = 6; +pub const SO_SNDBUF: u32 = 7; +pub const SO_RCVBUF: u32 = 8; +pub const SO_SNDBUFFORCE: u32 = 32; +pub const SO_RCVBUFFORCE: u32 = 33; +pub const SO_KEEPALIVE: u32 = 9; +pub const SO_OOBINLINE: u32 = 10; +pub const SO_NO_CHECK: u32 = 11; +pub const SO_PRIORITY: u32 = 12; +pub const SO_LINGER: u32 = 13; +pub const SO_BSDCOMPAT: u32 = 14; +pub const SO_REUSEPORT: u32 = 15; +pub const SO_SECURITY_AUTHENTICATION: u32 = 22; +pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; +pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; +pub const SO_BINDTODEVICE: u32 = 25; +pub const SO_ATTACH_FILTER: u32 = 26; +pub const SO_DETACH_FILTER: u32 = 27; +pub const SO_GET_FILTER: u32 = 26; +pub const SO_PEERNAME: u32 = 28; +pub const SO_ACCEPTCONN: u32 = 30; +pub const SO_PEERSEC: u32 = 31; +pub const SO_PASSSEC: u32 = 34; +pub const SO_MARK: u32 = 36; +pub const SO_PROTOCOL: u32 = 38; +pub const SO_DOMAIN: u32 = 39; +pub const SO_RXQ_OVFL: u32 = 40; +pub const SO_WIFI_STATUS: u32 = 41; +pub const SCM_WIFI_STATUS: u32 = 41; +pub const SO_PEEK_OFF: u32 = 42; +pub const SO_NOFCS: u32 = 43; +pub const SO_LOCK_FILTER: u32 = 44; +pub const SO_SELECT_ERR_QUEUE: u32 = 45; +pub const SO_BUSY_POLL: u32 = 46; +pub const SO_MAX_PACING_RATE: u32 = 47; +pub const SO_BPF_EXTENSIONS: u32 = 48; +pub const SO_INCOMING_CPU: u32 = 49; +pub const SO_ATTACH_BPF: u32 = 50; +pub const SO_DETACH_BPF: u32 = 27; +pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; +pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; +pub const SO_CNX_ADVICE: u32 = 53; +pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; +pub const SO_MEMINFO: u32 = 55; +pub const SO_INCOMING_NAPI_ID: u32 = 56; +pub const SO_COOKIE: u32 = 57; +pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; +pub const SO_PEERGROUPS: u32 = 59; +pub const SO_ZEROCOPY: u32 = 60; +pub const SO_TXTIME: u32 = 61; +pub const SCM_TXTIME: u32 = 61; +pub const SO_BINDTOIFINDEX: u32 = 62; +pub const SO_TIMESTAMP_OLD: u32 = 29; +pub const SO_TIMESTAMPNS_OLD: u32 = 35; +pub const SO_TIMESTAMPING_OLD: u32 = 37; +pub const SO_TIMESTAMP_NEW: u32 = 63; +pub const SO_TIMESTAMPNS_NEW: u32 = 64; +pub const SO_TIMESTAMPING_NEW: u32 = 65; +pub const SO_RCVTIMEO_NEW: u32 = 66; +pub const SO_SNDTIMEO_NEW: u32 = 67; +pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; +pub const SO_PREFER_BUSY_POLL: u32 = 69; +pub const SO_BUSY_POLL_BUDGET: u32 = 70; +pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; +pub const SO_TXREHASH: u32 = 74; +pub const SO_RCVMARK: u32 = 75; +pub const SYS_SOCKET: u32 = 1; +pub const SYS_BIND: u32 = 2; +pub const SYS_CONNECT: u32 = 3; +pub const SYS_LISTEN: u32 = 4; +pub const SYS_ACCEPT: u32 = 5; +pub const SYS_GETSOCKNAME: u32 = 6; +pub const SYS_GETPEERNAME: u32 = 7; +pub const SYS_SOCKETPAIR: u32 = 8; +pub const SYS_SEND: u32 = 9; +pub const SYS_RECV: u32 = 10; +pub const SYS_SENDTO: u32 = 11; +pub const SYS_RECVFROM: u32 = 12; +pub const SYS_SHUTDOWN: u32 = 13; +pub const SYS_SETSOCKOPT: u32 = 14; +pub const SYS_GETSOCKOPT: u32 = 15; +pub const SYS_SENDMSG: u32 = 16; +pub const SYS_RECVMSG: u32 = 17; +pub const SYS_ACCEPT4: u32 = 18; +pub const SYS_RECVMMSG: u32 = 19; +pub const SYS_SENDMMSG: u32 = 20; +pub const __SO_ACCEPTCON: u32 = 65536; +pub const TCP_MSS_DEFAULT: u32 = 536; +pub const TCP_MSS_DESIRED: u32 = 1220; +pub const TCP_NODELAY: u32 = 1; +pub const TCP_MAXSEG: u32 = 2; +pub const TCP_CORK: u32 = 3; +pub const TCP_KEEPIDLE: u32 = 4; +pub const TCP_KEEPINTVL: u32 = 5; +pub const TCP_KEEPCNT: u32 = 6; +pub const TCP_SYNCNT: u32 = 7; +pub const TCP_LINGER2: u32 = 8; +pub const TCP_DEFER_ACCEPT: u32 = 9; +pub const TCP_WINDOW_CLAMP: u32 = 10; +pub const TCP_INFO: u32 = 11; +pub const TCP_QUICKACK: u32 = 12; +pub const TCP_CONGESTION: u32 = 13; +pub const TCP_MD5SIG: u32 = 14; +pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; +pub const TCP_THIN_DUPACK: u32 = 17; +pub const TCP_USER_TIMEOUT: u32 = 18; +pub const TCP_REPAIR: u32 = 19; +pub const TCP_REPAIR_QUEUE: u32 = 20; +pub const TCP_QUEUE_SEQ: u32 = 21; +pub const TCP_REPAIR_OPTIONS: u32 = 22; +pub const TCP_FASTOPEN: u32 = 23; +pub const TCP_TIMESTAMP: u32 = 24; +pub const TCP_NOTSENT_LOWAT: u32 = 25; +pub const TCP_CC_INFO: u32 = 26; +pub const TCP_SAVE_SYN: u32 = 27; +pub const TCP_SAVED_SYN: u32 = 28; +pub const TCP_REPAIR_WINDOW: u32 = 29; +pub const TCP_FASTOPEN_CONNECT: u32 = 30; +pub const TCP_ULP: u32 = 31; +pub const TCP_MD5SIG_EXT: u32 = 32; +pub const TCP_FASTOPEN_KEY: u32 = 33; +pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; +pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; +pub const TCP_INQ: u32 = 36; +pub const TCP_CM_INQ: u32 = 36; +pub const TCP_TX_DELAY: u32 = 37; +pub const TCP_REPAIR_ON: u32 = 1; +pub const TCP_REPAIR_OFF: u32 = 0; +pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; +pub const TCPI_OPT_TIMESTAMPS: u32 = 1; +pub const TCPI_OPT_SACK: u32 = 2; +pub const TCPI_OPT_WSCALE: u32 = 4; +pub const TCPI_OPT_ECN: u32 = 8; +pub const TCPI_OPT_ECN_SEEN: u32 = 16; +pub const TCPI_OPT_SYN_DATA: u32 = 32; +pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; +pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; +pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; +pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; +pub const UNIX_PATH_MAX: u32 = 108; +pub const SHUT_RD: u32 = 0; +pub const SHUT_WR: u32 = 1; +pub const SHUT_RDWR: u32 = 2; +pub const SOCK_STREAM: u32 = 1; +pub const SOCK_DGRAM: u32 = 2; +pub const SOCK_RAW: u32 = 3; +pub const SOCK_RDM: u32 = 4; +pub const SOCK_SEQPACKET: u32 = 5; +pub const MSG_DONTWAIT: u32 = 64; +pub const AF_UNSPEC: u32 = 0; +pub const AF_UNIX: u32 = 1; +pub const AF_INET: u32 = 2; +pub const AF_AX25: u32 = 3; +pub const AF_IPX: u32 = 4; +pub const AF_APPLETALK: u32 = 5; +pub const AF_NETROM: u32 = 6; +pub const AF_BRIDGE: u32 = 7; +pub const AF_ATMPVC: u32 = 8; +pub const AF_X25: u32 = 9; +pub const AF_INET6: u32 = 10; +pub const AF_ROSE: u32 = 11; +pub const AF_DECnet: u32 = 12; +pub const AF_NETBEUI: u32 = 13; +pub const AF_SECURITY: u32 = 14; +pub const AF_KEY: u32 = 15; +pub const AF_NETLINK: u32 = 16; +pub const AF_PACKET: u32 = 17; +pub const AF_ASH: u32 = 18; +pub const AF_ECONET: u32 = 19; +pub const AF_ATMSVC: u32 = 20; +pub const AF_RDS: u32 = 21; +pub const AF_SNA: u32 = 22; +pub const AF_IRDA: u32 = 23; +pub const AF_PPPOX: u32 = 24; +pub const AF_WANPIPE: u32 = 25; +pub const AF_LLC: u32 = 26; +pub const AF_CAN: u32 = 29; +pub const AF_TIPC: u32 = 30; +pub const AF_BLUETOOTH: u32 = 31; +pub const AF_IUCV: u32 = 32; +pub const AF_RXRPC: u32 = 33; +pub const AF_ISDN: u32 = 34; +pub const AF_PHONET: u32 = 35; +pub const AF_IEEE802154: u32 = 36; +pub const AF_MAX: u32 = 37; +pub const MSG_OOB: u32 = 1; +pub const MSG_PEEK: u32 = 2; +pub const MSG_DONTROUTE: u32 = 4; +pub const MSG_CTRUNC: u32 = 8; +pub const MSG_PROBE: u32 = 16; +pub const MSG_TRUNC: u32 = 32; +pub const MSG_EOR: u32 = 128; +pub const MSG_WAITALL: u32 = 256; +pub const MSG_FIN: u32 = 512; +pub const MSG_SYN: u32 = 1024; +pub const MSG_CONFIRM: u32 = 2048; +pub const MSG_RST: u32 = 4096; +pub const MSG_ERRQUEUE: u32 = 8192; +pub const MSG_NOSIGNAL: u32 = 16384; +pub const MSG_MORE: u32 = 32768; +pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; +pub const SCM_RIGHTS: u32 = 1; +pub const SCM_CREDENTIALS: u32 = 2; +pub const SCM_SECURITY: u32 = 3; +pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; +pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; +pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; +pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; +pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; +pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; +pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; +pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; +pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; +pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; +pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; +pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; +pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; +pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; +pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; +pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; +pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; +pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; +pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; +pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; +pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; +pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; +pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; +pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; +pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; +pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; +pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; +pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; +pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; +pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; +pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; +pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; +pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; +pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; +pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; +pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; +pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; +pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; +pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; +pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; +pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; +pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; +pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; +pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; +pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; +pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; +pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; +pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; +pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; +pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; +pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; +pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; +pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; +pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; +pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; +pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; +pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; +pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; +pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; +pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; +pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; +pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; +pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; +pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; +pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; +pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; +pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; +pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; +pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; +pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; +pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; +pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; +pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; +pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; +pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; +pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; +pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; +pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; +pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; +pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; +pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; +pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; +pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; +pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; +pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; +pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; +pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; +pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; +pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; +pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; +pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; +pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; +pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; +pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; +pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; +pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; +pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; +pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; +pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; +pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; +pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; +pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; +pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; +pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; +pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; +pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; +pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; +pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; +pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; +pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; +pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; +pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; +pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; +pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; +pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; +pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; +pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; +pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; +pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; +pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; +pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; +pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; +pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; +pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; +pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; +pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; +pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; +pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; +pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; +pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; +pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; +pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; +pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; +pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; +pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; +pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; +pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; +pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; +pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; +pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; +pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; +pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; +pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; +pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; +pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; +pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; +pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; +pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; +pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; +pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; +pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; +pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IPPROTO_IP = 0, +IPPROTO_ICMP = 1, +IPPROTO_IGMP = 2, +IPPROTO_IPIP = 4, +IPPROTO_TCP = 6, +IPPROTO_EGP = 8, +IPPROTO_PUP = 12, +IPPROTO_UDP = 17, +IPPROTO_IDP = 22, +IPPROTO_TP = 29, +IPPROTO_DCCP = 33, +IPPROTO_IPV6 = 41, +IPPROTO_RSVP = 46, +IPPROTO_GRE = 47, +IPPROTO_ESP = 50, +IPPROTO_AH = 51, +IPPROTO_MTP = 92, +IPPROTO_BEETPH = 94, +IPPROTO_ENCAP = 98, +IPPROTO_PIM = 103, +IPPROTO_COMP = 108, +IPPROTO_L2TP = 115, +IPPROTO_SCTP = 132, +IPPROTO_UDPLITE = 136, +IPPROTO_MPLS = 137, +IPPROTO_ETHERNET = 143, +IPPROTO_RAW = 255, +IPPROTO_MPTCP = 262, +IPPROTO_MAX = 263, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IPV4_DEVCONF_FORWARDING = 1, +IPV4_DEVCONF_MC_FORWARDING = 2, +IPV4_DEVCONF_PROXY_ARP = 3, +IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, +IPV4_DEVCONF_SECURE_REDIRECTS = 5, +IPV4_DEVCONF_SEND_REDIRECTS = 6, +IPV4_DEVCONF_SHARED_MEDIA = 7, +IPV4_DEVCONF_RP_FILTER = 8, +IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, +IPV4_DEVCONF_BOOTP_RELAY = 10, +IPV4_DEVCONF_LOG_MARTIANS = 11, +IPV4_DEVCONF_TAG = 12, +IPV4_DEVCONF_ARPFILTER = 13, +IPV4_DEVCONF_MEDIUM_ID = 14, +IPV4_DEVCONF_NOXFRM = 15, +IPV4_DEVCONF_NOPOLICY = 16, +IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, +IPV4_DEVCONF_ARP_ANNOUNCE = 18, +IPV4_DEVCONF_ARP_IGNORE = 19, +IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, +IPV4_DEVCONF_ARP_ACCEPT = 21, +IPV4_DEVCONF_ARP_NOTIFY = 22, +IPV4_DEVCONF_ACCEPT_LOCAL = 23, +IPV4_DEVCONF_SRC_VMARK = 24, +IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, +IPV4_DEVCONF_ROUTE_LOCALNET = 26, +IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, +IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, +IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, +IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, +IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, +IPV4_DEVCONF_BC_FORWARDING = 32, +IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, +__IPV4_DEVCONF_MAX = 34, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +DEVCONF_FORWARDING = 0, +DEVCONF_HOPLIMIT = 1, +DEVCONF_MTU6 = 2, +DEVCONF_ACCEPT_RA = 3, +DEVCONF_ACCEPT_REDIRECTS = 4, +DEVCONF_AUTOCONF = 5, +DEVCONF_DAD_TRANSMITS = 6, +DEVCONF_RTR_SOLICITS = 7, +DEVCONF_RTR_SOLICIT_INTERVAL = 8, +DEVCONF_RTR_SOLICIT_DELAY = 9, +DEVCONF_USE_TEMPADDR = 10, +DEVCONF_TEMP_VALID_LFT = 11, +DEVCONF_TEMP_PREFERED_LFT = 12, +DEVCONF_REGEN_MAX_RETRY = 13, +DEVCONF_MAX_DESYNC_FACTOR = 14, +DEVCONF_MAX_ADDRESSES = 15, +DEVCONF_FORCE_MLD_VERSION = 16, +DEVCONF_ACCEPT_RA_DEFRTR = 17, +DEVCONF_ACCEPT_RA_PINFO = 18, +DEVCONF_ACCEPT_RA_RTR_PREF = 19, +DEVCONF_RTR_PROBE_INTERVAL = 20, +DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, +DEVCONF_PROXY_NDP = 22, +DEVCONF_OPTIMISTIC_DAD = 23, +DEVCONF_ACCEPT_SOURCE_ROUTE = 24, +DEVCONF_MC_FORWARDING = 25, +DEVCONF_DISABLE_IPV6 = 26, +DEVCONF_ACCEPT_DAD = 27, +DEVCONF_FORCE_TLLAO = 28, +DEVCONF_NDISC_NOTIFY = 29, +DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, +DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, +DEVCONF_SUPPRESS_FRAG_NDISC = 32, +DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, +DEVCONF_USE_OPTIMISTIC = 34, +DEVCONF_ACCEPT_RA_MTU = 35, +DEVCONF_STABLE_SECRET = 36, +DEVCONF_USE_OIF_ADDRS_ONLY = 37, +DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, +DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, +DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, +DEVCONF_DROP_UNSOLICITED_NA = 41, +DEVCONF_KEEP_ADDR_ON_DOWN = 42, +DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, +DEVCONF_SEG6_ENABLED = 44, +DEVCONF_SEG6_REQUIRE_HMAC = 45, +DEVCONF_ENHANCED_DAD = 46, +DEVCONF_ADDR_GEN_MODE = 47, +DEVCONF_DISABLE_POLICY = 48, +DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, +DEVCONF_NDISC_TCLASS = 50, +DEVCONF_RPL_SEG_ENABLED = 51, +DEVCONF_RA_DEFRTR_METRIC = 52, +DEVCONF_IOAM6_ENABLED = 53, +DEVCONF_IOAM6_ID = 54, +DEVCONF_IOAM6_ID_WIDE = 55, +DEVCONF_NDISC_EVICT_NOCARRIER = 56, +DEVCONF_ACCEPT_UNTRACKED_NA = 57, +DEVCONF_MAX = 58, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum socket_state { +SS_FREE = 0, +SS_UNCONNECTED = 1, +SS_CONNECTING = 2, +SS_CONNECTED = 3, +SS_DISCONNECTING = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +TCP_FLAG_CWR = 8388608, +TCP_FLAG_ECE = 4194304, +TCP_FLAG_URG = 2097152, +TCP_FLAG_ACK = 1048576, +TCP_FLAG_PSH = 524288, +TCP_FLAG_RST = 262144, +TCP_FLAG_SYN = 131072, +TCP_FLAG_FIN = 65536, +TCP_RESERVED_BITS = 251658240, +TCP_DATA_OFFSET = 4026531840, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +TCP_NO_QUEUE = 0, +TCP_RECV_QUEUE = 1, +TCP_SEND_QUEUE = 2, +TCP_QUEUES_NR = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_fastopen_client_fail { +TFO_STATUS_UNSPEC = 0, +TFO_COOKIE_UNAVAILABLE = 1, +TFO_DATA_NOT_ACKED = 2, +TFO_SYN_RETRANSMITTED = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_ca_state { +TCP_CA_Open = 0, +TCP_CA_Disorder = 1, +TCP_CA_CWR = 2, +TCP_CA_Recovery = 3, +TCP_CA_Loss = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +TCP_NLA_PAD = 0, +TCP_NLA_BUSY = 1, +TCP_NLA_RWND_LIMITED = 2, +TCP_NLA_SNDBUF_LIMITED = 3, +TCP_NLA_DATA_SEGS_OUT = 4, +TCP_NLA_TOTAL_RETRANS = 5, +TCP_NLA_PACING_RATE = 6, +TCP_NLA_DELIVERY_RATE = 7, +TCP_NLA_SND_CWND = 8, +TCP_NLA_REORDERING = 9, +TCP_NLA_MIN_RTT = 10, +TCP_NLA_RECUR_RETRANS = 11, +TCP_NLA_DELIVERY_RATE_APP_LMT = 12, +TCP_NLA_SNDQ_SIZE = 13, +TCP_NLA_CA_STATE = 14, +TCP_NLA_SND_SSTHRESH = 15, +TCP_NLA_DELIVERED = 16, +TCP_NLA_DELIVERED_CE = 17, +TCP_NLA_BYTES_SENT = 18, +TCP_NLA_BYTES_RETRANS = 19, +TCP_NLA_DSACK_DUPS = 20, +TCP_NLA_REORD_SEEN = 21, +TCP_NLA_SRTT = 22, +TCP_NLA_TIMEOUT_REHASH = 23, +TCP_NLA_BYTES_NOTSENT = 24, +TCP_NLA_EDT = 25, +TCP_NLA_TTL = 26, +TCP_NLA_REHASH = 27, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union iphdr__bindgen_ty_1 { +pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union in6_addr__bindgen_ty_1 { +pub u6_addr8: [__u8; 16usize], +pub u6_addr16: [__be16; 8usize], +pub u6_addr32: [__be32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ipv6hdr__bindgen_ty_1 { +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union tcp_word_hdr { +pub hdr: tcphdr, +pub words: [__be32; 5usize], +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} +impl iphdr { +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn ihl(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_ihl(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; +ihl as u64 +}); +__bindgen_bitfield_unit +} +} +impl ipv6hdr { +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn priority(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_priority(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let priority: u8 = unsafe { ::core::mem::transmute(priority) }; +priority as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcphdr { +#[inline] +pub fn doff(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } +} +#[inline] +pub fn set_doff(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn res1(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } +} +#[inline] +pub fn set_res1(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn cwr(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } +} +#[inline] +pub fn set_cwr(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn ece(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } +} +#[inline] +pub fn set_ece(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 1u8, val as u64) +} +} +#[inline] +pub fn urg(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } +} +#[inline] +pub fn set_urg(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(10usize, 1u8, val as u64) +} +} +#[inline] +pub fn ack(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } +} +#[inline] +pub fn set_ack(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(11usize, 1u8, val as u64) +} +} +#[inline] +pub fn psh(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } +} +#[inline] +pub fn set_psh(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(12usize, 1u8, val as u64) +} +} +#[inline] +pub fn rst(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } +} +#[inline] +pub fn set_rst(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(13usize, 1u8, val as u64) +} +} +#[inline] +pub fn syn(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } +} +#[inline] +pub fn set_syn(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(14usize, 1u8, val as u64) +} +} +#[inline] +pub fn fin(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +} +#[inline] +pub fn set_fin(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(15usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let doff: u16 = unsafe { ::core::mem::transmute(doff) }; +doff as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let res1: u16 = unsafe { ::core::mem::transmute(res1) }; +res1 as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; +cwr as u64 +}); +__bindgen_bitfield_unit.set(9usize, 1u8, { +let ece: u16 = unsafe { ::core::mem::transmute(ece) }; +ece as u64 +}); +__bindgen_bitfield_unit.set(10usize, 1u8, { +let urg: u16 = unsafe { ::core::mem::transmute(urg) }; +urg as u64 +}); +__bindgen_bitfield_unit.set(11usize, 1u8, { +let ack: u16 = unsafe { ::core::mem::transmute(ack) }; +ack as u64 +}); +__bindgen_bitfield_unit.set(12usize, 1u8, { +let psh: u16 = unsafe { ::core::mem::transmute(psh) }; +psh as u64 +}); +__bindgen_bitfield_unit.set(13usize, 1u8, { +let rst: u16 = unsafe { ::core::mem::transmute(rst) }; +rst as u64 +}); +__bindgen_bitfield_unit.set(14usize, 1u8, { +let syn: u16 = unsafe { ::core::mem::transmute(syn) }; +syn as u64 +}); +__bindgen_bitfield_unit.set(15usize, 1u8, { +let fin: u16 = unsafe { ::core::mem::transmute(fin) }; +fin as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcp_info { +#[inline] +pub fn tcpi_snd_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_rcv_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +} +#[inline] +pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn tcpi_fastopen_client_fail(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +} +#[inline] +pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 2u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; +tcpi_snd_wscale as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; +tcpi_rcv_wscale as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; +tcpi_delivery_rate_app_limited as u64 +}); +__bindgen_bitfield_unit.set(9usize, 2u8, { +let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; +tcpi_fastopen_client_fail as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/prctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/prctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/prctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,227 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_short; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct __vector128 { +pub u: [__u32; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prctl_mm_map { +pub start_code: __u64, +pub end_code: __u64, +pub start_data: __u64, +pub end_data: __u64, +pub start_brk: __u64, +pub brk: __u64, +pub start_stack: __u64, +pub arg_start: __u64, +pub arg_end: __u64, +pub env_start: __u64, +pub env_end: __u64, +pub auxv: *mut __u64, +pub auxv_size: __u32, +pub exe_fd: __u32, +} +pub const PR_SET_PDEATHSIG: u32 = 1; +pub const PR_GET_PDEATHSIG: u32 = 2; +pub const PR_GET_DUMPABLE: u32 = 3; +pub const PR_SET_DUMPABLE: u32 = 4; +pub const PR_GET_UNALIGN: u32 = 5; +pub const PR_SET_UNALIGN: u32 = 6; +pub const PR_UNALIGN_NOPRINT: u32 = 1; +pub const PR_UNALIGN_SIGBUS: u32 = 2; +pub const PR_GET_KEEPCAPS: u32 = 7; +pub const PR_SET_KEEPCAPS: u32 = 8; +pub const PR_GET_FPEMU: u32 = 9; +pub const PR_SET_FPEMU: u32 = 10; +pub const PR_FPEMU_NOPRINT: u32 = 1; +pub const PR_FPEMU_SIGFPE: u32 = 2; +pub const PR_GET_FPEXC: u32 = 11; +pub const PR_SET_FPEXC: u32 = 12; +pub const PR_FP_EXC_SW_ENABLE: u32 = 128; +pub const PR_FP_EXC_DIV: u32 = 65536; +pub const PR_FP_EXC_OVF: u32 = 131072; +pub const PR_FP_EXC_UND: u32 = 262144; +pub const PR_FP_EXC_RES: u32 = 524288; +pub const PR_FP_EXC_INV: u32 = 1048576; +pub const PR_FP_EXC_DISABLED: u32 = 0; +pub const PR_FP_EXC_NONRECOV: u32 = 1; +pub const PR_FP_EXC_ASYNC: u32 = 2; +pub const PR_FP_EXC_PRECISE: u32 = 3; +pub const PR_GET_TIMING: u32 = 13; +pub const PR_SET_TIMING: u32 = 14; +pub const PR_TIMING_STATISTICAL: u32 = 0; +pub const PR_TIMING_TIMESTAMP: u32 = 1; +pub const PR_SET_NAME: u32 = 15; +pub const PR_GET_NAME: u32 = 16; +pub const PR_GET_ENDIAN: u32 = 19; +pub const PR_SET_ENDIAN: u32 = 20; +pub const PR_ENDIAN_BIG: u32 = 0; +pub const PR_ENDIAN_LITTLE: u32 = 1; +pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; +pub const PR_GET_SECCOMP: u32 = 21; +pub const PR_SET_SECCOMP: u32 = 22; +pub const PR_CAPBSET_READ: u32 = 23; +pub const PR_CAPBSET_DROP: u32 = 24; +pub const PR_GET_TSC: u32 = 25; +pub const PR_SET_TSC: u32 = 26; +pub const PR_TSC_ENABLE: u32 = 1; +pub const PR_TSC_SIGSEGV: u32 = 2; +pub const PR_GET_SECUREBITS: u32 = 27; +pub const PR_SET_SECUREBITS: u32 = 28; +pub const PR_SET_TIMERSLACK: u32 = 29; +pub const PR_GET_TIMERSLACK: u32 = 30; +pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; +pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; +pub const PR_MCE_KILL: u32 = 33; +pub const PR_MCE_KILL_CLEAR: u32 = 0; +pub const PR_MCE_KILL_SET: u32 = 1; +pub const PR_MCE_KILL_LATE: u32 = 0; +pub const PR_MCE_KILL_EARLY: u32 = 1; +pub const PR_MCE_KILL_DEFAULT: u32 = 2; +pub const PR_MCE_KILL_GET: u32 = 34; +pub const PR_SET_MM: u32 = 35; +pub const PR_SET_MM_START_CODE: u32 = 1; +pub const PR_SET_MM_END_CODE: u32 = 2; +pub const PR_SET_MM_START_DATA: u32 = 3; +pub const PR_SET_MM_END_DATA: u32 = 4; +pub const PR_SET_MM_START_STACK: u32 = 5; +pub const PR_SET_MM_START_BRK: u32 = 6; +pub const PR_SET_MM_BRK: u32 = 7; +pub const PR_SET_MM_ARG_START: u32 = 8; +pub const PR_SET_MM_ARG_END: u32 = 9; +pub const PR_SET_MM_ENV_START: u32 = 10; +pub const PR_SET_MM_ENV_END: u32 = 11; +pub const PR_SET_MM_AUXV: u32 = 12; +pub const PR_SET_MM_EXE_FILE: u32 = 13; +pub const PR_SET_MM_MAP: u32 = 14; +pub const PR_SET_MM_MAP_SIZE: u32 = 15; +pub const PR_SET_PTRACER: u32 = 1499557217; +pub const PR_SET_CHILD_SUBREAPER: u32 = 36; +pub const PR_GET_CHILD_SUBREAPER: u32 = 37; +pub const PR_SET_NO_NEW_PRIVS: u32 = 38; +pub const PR_GET_NO_NEW_PRIVS: u32 = 39; +pub const PR_GET_TID_ADDRESS: u32 = 40; +pub const PR_SET_THP_DISABLE: u32 = 41; +pub const PR_GET_THP_DISABLE: u32 = 42; +pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; +pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; +pub const PR_SET_FP_MODE: u32 = 45; +pub const PR_GET_FP_MODE: u32 = 46; +pub const PR_FP_MODE_FR: u32 = 1; +pub const PR_FP_MODE_FRE: u32 = 2; +pub const PR_CAP_AMBIENT: u32 = 47; +pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; +pub const PR_CAP_AMBIENT_RAISE: u32 = 2; +pub const PR_CAP_AMBIENT_LOWER: u32 = 3; +pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; +pub const PR_SVE_SET_VL: u32 = 50; +pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SVE_GET_VL: u32 = 51; +pub const PR_SVE_VL_LEN_MASK: u32 = 65535; +pub const PR_SVE_VL_INHERIT: u32 = 131072; +pub const PR_GET_SPECULATION_CTRL: u32 = 52; +pub const PR_SET_SPECULATION_CTRL: u32 = 53; +pub const PR_SPEC_STORE_BYPASS: u32 = 0; +pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; +pub const PR_SPEC_L1D_FLUSH: u32 = 2; +pub const PR_SPEC_NOT_AFFECTED: u32 = 0; +pub const PR_SPEC_PRCTL: u32 = 1; +pub const PR_SPEC_ENABLE: u32 = 2; +pub const PR_SPEC_DISABLE: u32 = 4; +pub const PR_SPEC_FORCE_DISABLE: u32 = 8; +pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; +pub const PR_PAC_RESET_KEYS: u32 = 54; +pub const PR_PAC_APIAKEY: u32 = 1; +pub const PR_PAC_APIBKEY: u32 = 2; +pub const PR_PAC_APDAKEY: u32 = 4; +pub const PR_PAC_APDBKEY: u32 = 8; +pub const PR_PAC_APGAKEY: u32 = 16; +pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; +pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; +pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; +pub const PR_MTE_TCF_NONE: u32 = 0; +pub const PR_MTE_TCF_SYNC: u32 = 2; +pub const PR_MTE_TCF_ASYNC: u32 = 4; +pub const PR_MTE_TCF_MASK: u32 = 6; +pub const PR_MTE_TAG_SHIFT: u32 = 3; +pub const PR_MTE_TAG_MASK: u32 = 524280; +pub const PR_MTE_TCF_SHIFT: u32 = 1; +pub const PR_SET_IO_FLUSHER: u32 = 57; +pub const PR_GET_IO_FLUSHER: u32 = 58; +pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; +pub const PR_SYS_DISPATCH_OFF: u32 = 0; +pub const PR_SYS_DISPATCH_ON: u32 = 1; +pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; +pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; +pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; +pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; +pub const PR_SCHED_CORE: u32 = 62; +pub const PR_SCHED_CORE_GET: u32 = 0; +pub const PR_SCHED_CORE_CREATE: u32 = 1; +pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; +pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; +pub const PR_SCHED_CORE_MAX: u32 = 4; +pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; +pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; +pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; +pub const PR_SME_SET_VL: u32 = 63; +pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SME_GET_VL: u32 = 64; +pub const PR_SME_VL_LEN_MASK: u32 = 65535; +pub const PR_SME_VL_INHERIT: u32 = 131072; +pub const PR_SET_MDWE: u32 = 65; +pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; +pub const PR_GET_MDWE: u32 = 66; +pub const PR_SET_VMA: u32 = 1398164801; +pub const PR_SET_VMA_ANON_NAME: u32 = 0; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/system.rs temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/system.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,105 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_short; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct __vector128 { +pub u: [__u32; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sysinfo { +pub uptime: __kernel_long_t, +pub loads: [__kernel_ulong_t; 3usize], +pub totalram: __kernel_ulong_t, +pub freeram: __kernel_ulong_t, +pub sharedram: __kernel_ulong_t, +pub bufferram: __kernel_ulong_t, +pub totalswap: __kernel_ulong_t, +pub freeswap: __kernel_ulong_t, +pub procs: __u16, +pub pad: __u16, +pub totalhigh: __kernel_ulong_t, +pub freehigh: __kernel_ulong_t, +pub mem_unit: __u32, +pub _f: [crate::ctypes::c_char; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct oldold_utsname { +pub sysname: [crate::ctypes::c_char; 9usize], +pub nodename: [crate::ctypes::c_char; 9usize], +pub release: [crate::ctypes::c_char; 9usize], +pub version: [crate::ctypes::c_char; 9usize], +pub machine: [crate::ctypes::c_char; 9usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct old_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct new_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +pub domainname: [crate::ctypes::c_char; 65usize], +} +pub const SI_LOAD_SHIFT: u32 = 16; +pub const __OLD_UTS_LEN: u32 = 8; +pub const __NEW_UTS_LEN: u32 = 64; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/errno.rs temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/errno.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/errno.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const EPERM: u32 = 1; pub const ENOENT: u32 = 2; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/general.rs temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/general.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/general.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/general.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,2849 +1,208 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_sighandler_t = ::core::option::Option; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type cap_user_header_t = *mut __user_cap_header_struct; +pub type cap_user_data_t = *mut __user_cap_data_struct; +pub type __kernel_rwf_t = crate::ctypes::c_int; +pub type old_sigset_t = crate::ctypes::c_ulong; +pub type __signalfn_t = ::core::option::Option; +pub type __sighandler_t = __signalfn_t; +pub type __restorefn_t = ::core::option::Option; +pub type __sigrestore_t = __restorefn_t; +pub type stack_t = sigaltstack; +pub type sigval_t = sigval; +pub type siginfo_t = siginfo; +pub type sigevent_t = sigevent; +pub type cc_t = crate::ctypes::c_uchar; +pub type speed_t = crate::ctypes::c_uint; +pub type tcflag_t = crate::ctypes::c_uint; +pub type __fsword_t = __kernel_long_t; +pub type termios2 = termios; #[repr(C)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct __BindgenBitfieldUnit { storage: Storage, } -impl __BindgenBitfieldUnit { -#[inline] -pub const fn new(storage: Storage) -> Self { -Self { storage } -} -} -impl __BindgenBitfieldUnit -where -Storage: AsRef<[u8]> + AsMut<[u8]>, -{ -#[inline] -pub fn get_bit(&self, index: usize) -> bool { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = self.storage.as_ref()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -byte & mask == mask -} -#[inline] -pub fn set_bit(&mut self, index: usize, val: bool) { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = &mut self.storage.as_mut()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -if val { -*byte |= mask; -} else { -*byte &= !mask; -} -} -#[inline] -pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -let mut val = 0; -for i in 0..(bit_width as usize) { -if self.get_bit(i + bit_offset) { -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -val |= 1 << index; -} -} -val -} -#[inline] -pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -for i in 0..(bit_width as usize) { -let mask = 1 << i; -let val_bit_is_set = val & mask == mask; -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -self.set_bit(index + bit_offset, val_bit_is_set); -} -} -} #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) -} -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T -} -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct __vector128 { +pub u: [__u32; 4usize], } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fd_set { +pub fds_bits: [crate::ctypes::c_ulong; 16usize], } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fsid_t { +pub val: [crate::ctypes::c_int; 2usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_header_struct { +pub version: __u32, +pub pid: crate::ctypes::c_int, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_data_struct { +pub effective: __u32, +pub permitted: __u32, +pub inheritable: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data { +pub magic_etc: __le32, +pub data: [vfs_cap_data__bindgen_ty_1; 2usize], } #[repr(C)] -pub struct __BindgenUnionField(::core::marker::PhantomData); -impl __BindgenUnionField { -#[inline] -pub const fn new() -> Self { -__BindgenUnionField(::core::marker::PhantomData) +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } -#[inline] -pub unsafe fn as_ref(&self) -> &T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data { +pub magic_etc: __le32, +pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], +pub rootid: __le32, } -#[inline] -pub unsafe fn as_mut(&mut self) -> &mut T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct f_owner_ex { +pub type_: crate::ctypes::c_int, +pub pid: __kernel_pid_t, } -impl ::core::default::Default for __BindgenUnionField { -#[inline] -fn default() -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_off_t, +pub l_len: __kernel_off_t, +pub l_pid: __kernel_pid_t, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock64 { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_loff_t, +pub l_len: __kernel_loff_t, +pub l_pid: __kernel_pid_t, } -impl ::core::clone::Clone for __BindgenUnionField { -#[inline] -fn clone(&self) -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct open_how { +pub flags: __u64, +pub mode: __u64, +pub resolve: __u64, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct epoll_event { +pub events: __poll_t, +pub data: __u64, } -impl ::core::marker::Copy for __BindgenUnionField {} -impl ::core::fmt::Debug for __BindgenUnionField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__BindgenUnionField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, } -impl ::core::hash::Hash for __BindgenUnionField { -fn hash(&self, _state: &mut H) {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], } -impl ::core::cmp::PartialEq for __BindgenUnionField { -fn eq(&self, _other: &__BindgenUnionField) -> bool { -true +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, } -} -impl ::core::cmp::Eq for __BindgenUnionField {} -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const AT_DCACHEBSIZE: u32 = 19; -pub const AT_ICACHEBSIZE: u32 = 20; -pub const AT_UCACHEBSIZE: u32 = 21; -pub const AT_IGNOREPPC: u32 = 22; -pub const AT_SYSINFO_EHDR: u32 = 33; -pub const AT_L1I_CACHESIZE: u32 = 40; -pub const AT_L1I_CACHEGEOMETRY: u32 = 41; -pub const AT_L1D_CACHESIZE: u32 = 42; -pub const AT_L1D_CACHEGEOMETRY: u32 = 43; -pub const AT_L2_CACHESIZE: u32 = 44; -pub const AT_L2_CACHEGEOMETRY: u32 = 45; -pub const AT_L3_CACHESIZE: u32 = 46; -pub const AT_L3_CACHEGEOMETRY: u32 = 47; -pub const AT_MINSIGSTKSZ: u32 = 51; -pub const AT_VECTOR_SIZE_ARCH: u32 = 15; -pub const AT_NULL: u32 = 0; -pub const AT_IGNORE: u32 = 1; -pub const AT_EXECFD: u32 = 2; -pub const AT_PHDR: u32 = 3; -pub const AT_PHENT: u32 = 4; -pub const AT_PHNUM: u32 = 5; -pub const AT_PAGESZ: u32 = 6; -pub const AT_BASE: u32 = 7; -pub const AT_FLAGS: u32 = 8; -pub const AT_ENTRY: u32 = 9; -pub const AT_NOTELF: u32 = 10; -pub const AT_UID: u32 = 11; -pub const AT_EUID: u32 = 12; -pub const AT_GID: u32 = 13; -pub const AT_EGID: u32 = 14; -pub const AT_PLATFORM: u32 = 15; -pub const AT_HWCAP: u32 = 16; -pub const AT_CLKTCK: u32 = 17; -pub const AT_SECURE: u32 = 23; -pub const AT_BASE_PLATFORM: u32 = 24; -pub const AT_RANDOM: u32 = 25; -pub const AT_HWCAP2: u32 = 26; -pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; -pub const AT_RSEQ_ALIGN: u32 = 28; -pub const AT_EXECFN: u32 = 31; -pub const __BITS_PER_LONG: u32 = 64; -pub const __FD_SETSIZE: u32 = 1024; -pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; -pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; -pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; -pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; -pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; -pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; -pub const VFS_CAP_REVISION_SHIFT: u32 = 24; -pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; -pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; -pub const VFS_CAP_REVISION_1: u32 = 16777216; -pub const VFS_CAP_U32_1: u32 = 1; -pub const VFS_CAP_REVISION_2: u32 = 33554432; -pub const VFS_CAP_U32_2: u32 = 2; -pub const VFS_CAP_REVISION_3: u32 = 50331648; -pub const VFS_CAP_U32_3: u32 = 2; -pub const VFS_CAP_U32: u32 = 2; -pub const VFS_CAP_REVISION: u32 = 50331648; -pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S: u32 = 1; -pub const CAP_CHOWN: u32 = 0; -pub const CAP_DAC_OVERRIDE: u32 = 1; -pub const CAP_DAC_READ_SEARCH: u32 = 2; -pub const CAP_FOWNER: u32 = 3; -pub const CAP_FSETID: u32 = 4; -pub const CAP_KILL: u32 = 5; -pub const CAP_SETGID: u32 = 6; -pub const CAP_SETUID: u32 = 7; -pub const CAP_SETPCAP: u32 = 8; -pub const CAP_LINUX_IMMUTABLE: u32 = 9; -pub const CAP_NET_BIND_SERVICE: u32 = 10; -pub const CAP_NET_BROADCAST: u32 = 11; -pub const CAP_NET_ADMIN: u32 = 12; -pub const CAP_NET_RAW: u32 = 13; -pub const CAP_IPC_LOCK: u32 = 14; -pub const CAP_IPC_OWNER: u32 = 15; -pub const CAP_SYS_MODULE: u32 = 16; -pub const CAP_SYS_RAWIO: u32 = 17; -pub const CAP_SYS_CHROOT: u32 = 18; -pub const CAP_SYS_PTRACE: u32 = 19; -pub const CAP_SYS_PACCT: u32 = 20; -pub const CAP_SYS_ADMIN: u32 = 21; -pub const CAP_SYS_BOOT: u32 = 22; -pub const CAP_SYS_NICE: u32 = 23; -pub const CAP_SYS_RESOURCE: u32 = 24; -pub const CAP_SYS_TIME: u32 = 25; -pub const CAP_SYS_TTY_CONFIG: u32 = 26; -pub const CAP_MKNOD: u32 = 27; -pub const CAP_LEASE: u32 = 28; -pub const CAP_AUDIT_WRITE: u32 = 29; -pub const CAP_AUDIT_CONTROL: u32 = 30; -pub const CAP_SETFCAP: u32 = 31; -pub const CAP_MAC_OVERRIDE: u32 = 32; -pub const CAP_MAC_ADMIN: u32 = 33; -pub const CAP_SYSLOG: u32 = 34; -pub const CAP_WAKE_ALARM: u32 = 35; -pub const CAP_BLOCK_SUSPEND: u32 = 36; -pub const CAP_AUDIT_READ: u32 = 37; -pub const CAP_PERFMON: u32 = 38; -pub const CAP_BPF: u32 = 39; -pub const CAP_CHECKPOINT_RESTORE: u32 = 40; -pub const CAP_LAST_CAP: u32 = 40; -pub const O_DIRECTORY: u32 = 16384; -pub const O_NOFOLLOW: u32 = 32768; -pub const O_LARGEFILE: u32 = 65536; -pub const O_DIRECT: u32 = 131072; -pub const O_ACCMODE: u32 = 3; -pub const O_RDONLY: u32 = 0; -pub const O_WRONLY: u32 = 1; -pub const O_RDWR: u32 = 2; -pub const O_CREAT: u32 = 64; -pub const O_EXCL: u32 = 128; -pub const O_NOCTTY: u32 = 256; -pub const O_TRUNC: u32 = 512; -pub const O_APPEND: u32 = 1024; -pub const O_NONBLOCK: u32 = 2048; -pub const O_DSYNC: u32 = 4096; -pub const FASYNC: u32 = 8192; -pub const O_NOATIME: u32 = 262144; -pub const O_CLOEXEC: u32 = 524288; -pub const __O_SYNC: u32 = 1048576; -pub const O_SYNC: u32 = 1052672; -pub const O_PATH: u32 = 2097152; -pub const __O_TMPFILE: u32 = 4194304; -pub const O_TMPFILE: u32 = 4210688; -pub const O_TMPFILE_MASK: u32 = 4210752; -pub const O_NDELAY: u32 = 2048; -pub const F_DUPFD: u32 = 0; -pub const F_GETFD: u32 = 1; -pub const F_SETFD: u32 = 2; -pub const F_GETFL: u32 = 3; -pub const F_SETFL: u32 = 4; -pub const F_GETLK: u32 = 5; -pub const F_SETLK: u32 = 6; -pub const F_SETLKW: u32 = 7; -pub const F_SETOWN: u32 = 8; -pub const F_GETOWN: u32 = 9; -pub const F_SETSIG: u32 = 10; -pub const F_GETSIG: u32 = 11; -pub const F_SETOWN_EX: u32 = 15; -pub const F_GETOWN_EX: u32 = 16; -pub const F_GETOWNER_UIDS: u32 = 17; -pub const F_OFD_GETLK: u32 = 36; -pub const F_OFD_SETLK: u32 = 37; -pub const F_OFD_SETLKW: u32 = 38; -pub const F_OWNER_TID: u32 = 0; -pub const F_OWNER_PID: u32 = 1; -pub const F_OWNER_PGRP: u32 = 2; -pub const FD_CLOEXEC: u32 = 1; -pub const F_RDLCK: u32 = 0; -pub const F_WRLCK: u32 = 1; -pub const F_UNLCK: u32 = 2; -pub const F_EXLCK: u32 = 4; -pub const F_SHLCK: u32 = 8; -pub const LOCK_SH: u32 = 1; -pub const LOCK_EX: u32 = 2; -pub const LOCK_NB: u32 = 4; -pub const LOCK_UN: u32 = 8; -pub const LOCK_MAND: u32 = 32; -pub const LOCK_READ: u32 = 64; -pub const LOCK_WRITE: u32 = 128; -pub const LOCK_RW: u32 = 192; -pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; -pub const RESOLVE_NO_XDEV: u32 = 1; -pub const RESOLVE_NO_MAGICLINKS: u32 = 2; -pub const RESOLVE_NO_SYMLINKS: u32 = 4; -pub const RESOLVE_BENEATH: u32 = 8; -pub const RESOLVE_IN_ROOT: u32 = 16; -pub const RESOLVE_CACHED: u32 = 32; -pub const F_SETLEASE: u32 = 1024; -pub const F_GETLEASE: u32 = 1025; -pub const F_CANCELLK: u32 = 1029; -pub const F_DUPFD_CLOEXEC: u32 = 1030; -pub const F_NOTIFY: u32 = 1026; -pub const F_SETPIPE_SZ: u32 = 1031; -pub const F_GETPIPE_SZ: u32 = 1032; -pub const F_ADD_SEALS: u32 = 1033; -pub const F_GET_SEALS: u32 = 1034; -pub const F_SEAL_SEAL: u32 = 1; -pub const F_SEAL_SHRINK: u32 = 2; -pub const F_SEAL_GROW: u32 = 4; -pub const F_SEAL_WRITE: u32 = 8; -pub const F_SEAL_FUTURE_WRITE: u32 = 16; -pub const F_SEAL_EXEC: u32 = 32; -pub const F_GET_RW_HINT: u32 = 1035; -pub const F_SET_RW_HINT: u32 = 1036; -pub const F_GET_FILE_RW_HINT: u32 = 1037; -pub const F_SET_FILE_RW_HINT: u32 = 1038; -pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; -pub const RWH_WRITE_LIFE_NONE: u32 = 1; -pub const RWH_WRITE_LIFE_SHORT: u32 = 2; -pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; -pub const RWH_WRITE_LIFE_LONG: u32 = 4; -pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; -pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; -pub const DN_ACCESS: u32 = 1; -pub const DN_MODIFY: u32 = 2; -pub const DN_CREATE: u32 = 4; -pub const DN_DELETE: u32 = 8; -pub const DN_RENAME: u32 = 16; -pub const DN_ATTRIB: u32 = 32; -pub const DN_MULTISHOT: u32 = 2147483648; -pub const AT_FDCWD: i32 = -100; -pub const AT_SYMLINK_NOFOLLOW: u32 = 256; -pub const AT_EACCESS: u32 = 512; -pub const AT_REMOVEDIR: u32 = 512; -pub const AT_SYMLINK_FOLLOW: u32 = 1024; -pub const AT_NO_AUTOMOUNT: u32 = 2048; -pub const AT_EMPTY_PATH: u32 = 4096; -pub const AT_STATX_SYNC_TYPE: u32 = 24576; -pub const AT_STATX_SYNC_AS_STAT: u32 = 0; -pub const AT_STATX_FORCE_SYNC: u32 = 8192; -pub const AT_STATX_DONT_SYNC: u32 = 16384; -pub const AT_RECURSIVE: u32 = 32768; -pub const EPOLL_CLOEXEC: u32 = 524288; -pub const EPOLL_CTL_ADD: u32 = 1; -pub const EPOLL_CTL_DEL: u32 = 2; -pub const EPOLL_CTL_MOD: u32 = 3; -pub const POSIX_FADV_NORMAL: u32 = 0; -pub const POSIX_FADV_RANDOM: u32 = 1; -pub const POSIX_FADV_SEQUENTIAL: u32 = 2; -pub const POSIX_FADV_WILLNEED: u32 = 3; -pub const POSIX_FADV_DONTNEED: u32 = 4; -pub const POSIX_FADV_NOREUSE: u32 = 5; -pub const FALLOC_FL_KEEP_SIZE: u32 = 1; -pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; -pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; -pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; -pub const FALLOC_FL_ZERO_RANGE: u32 = 16; -pub const FALLOC_FL_INSERT_RANGE: u32 = 32; -pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; -pub const NR_OPEN: u32 = 1024; -pub const NGROUPS_MAX: u32 = 65536; -pub const ARG_MAX: u32 = 131072; -pub const LINK_MAX: u32 = 127; -pub const MAX_CANON: u32 = 255; -pub const MAX_INPUT: u32 = 255; -pub const NAME_MAX: u32 = 255; -pub const PATH_MAX: u32 = 4096; -pub const PIPE_BUF: u32 = 4096; -pub const XATTR_NAME_MAX: u32 = 255; -pub const XATTR_SIZE_MAX: u32 = 65536; -pub const XATTR_LIST_MAX: u32 = 65536; -pub const RTSIG_MAX: u32 = 32; -pub const _IOC_SIZEBITS: u32 = 13; -pub const _IOC_DIRBITS: u32 = 3; -pub const _IOC_NONE: u32 = 1; -pub const _IOC_READ: u32 = 2; -pub const _IOC_WRITE: u32 = 4; -pub const _IOC_NRBITS: u32 = 8; -pub const _IOC_TYPEBITS: u32 = 8; -pub const _IOC_NRMASK: u32 = 255; -pub const _IOC_TYPEMASK: u32 = 255; -pub const _IOC_SIZEMASK: u32 = 8191; -pub const _IOC_DIRMASK: u32 = 7; -pub const _IOC_NRSHIFT: u32 = 0; -pub const _IOC_TYPESHIFT: u32 = 8; -pub const _IOC_SIZESHIFT: u32 = 16; -pub const _IOC_DIRSHIFT: u32 = 29; -pub const IOC_IN: u32 = 2147483648; -pub const IOC_OUT: u32 = 1073741824; -pub const IOC_INOUT: u32 = 3221225472; -pub const IOCSIZE_MASK: u32 = 536805376; -pub const IOCSIZE_SHIFT: u32 = 16; -pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; -pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; -pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; -pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; -pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; -pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; -pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; -pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; -pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; -pub const FSCRYPT_POLICY_V1: u32 = 0; -pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; -pub const FSCRYPT_POLICY_V2: u32 = 2; -pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; -pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; -pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; -pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; -pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; -pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; -pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; -pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FS_POLICY_FLAGS_VALID: u32 = 7; -pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; -pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; -pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; -pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; -pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; -pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; -pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; -pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; -pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FS_MAX_KEY_SIZE: u32 = 64; -pub const MS_RDONLY: u32 = 1; -pub const MS_NOSUID: u32 = 2; -pub const MS_NODEV: u32 = 4; -pub const MS_NOEXEC: u32 = 8; -pub const MS_SYNCHRONOUS: u32 = 16; -pub const MS_REMOUNT: u32 = 32; -pub const MS_MANDLOCK: u32 = 64; -pub const MS_DIRSYNC: u32 = 128; -pub const MS_NOSYMFOLLOW: u32 = 256; -pub const MS_NOATIME: u32 = 1024; -pub const MS_NODIRATIME: u32 = 2048; -pub const MS_BIND: u32 = 4096; -pub const MS_MOVE: u32 = 8192; -pub const MS_REC: u32 = 16384; -pub const MS_VERBOSE: u32 = 32768; -pub const MS_SILENT: u32 = 32768; -pub const MS_POSIXACL: u32 = 65536; -pub const MS_UNBINDABLE: u32 = 131072; -pub const MS_PRIVATE: u32 = 262144; -pub const MS_SLAVE: u32 = 524288; -pub const MS_SHARED: u32 = 1048576; -pub const MS_RELATIME: u32 = 2097152; -pub const MS_KERNMOUNT: u32 = 4194304; -pub const MS_I_VERSION: u32 = 8388608; -pub const MS_STRICTATIME: u32 = 16777216; -pub const MS_LAZYTIME: u32 = 33554432; -pub const MS_SUBMOUNT: u32 = 67108864; -pub const MS_NOREMOTELOCK: u32 = 134217728; -pub const MS_NOSEC: u32 = 268435456; -pub const MS_BORN: u32 = 536870912; -pub const MS_ACTIVE: u32 = 1073741824; -pub const MS_NOUSER: u32 = 2147483648; -pub const MS_RMT_MASK: u32 = 41943121; -pub const MS_MGC_VAL: u32 = 3236757504; -pub const MS_MGC_MSK: u32 = 4294901760; -pub const OPEN_TREE_CLONE: u32 = 1; -pub const OPEN_TREE_CLOEXEC: u32 = 524288; -pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; -pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; -pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; -pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; -pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; -pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; -pub const MOVE_MOUNT_SET_GROUP: u32 = 256; -pub const MOVE_MOUNT__MASK: u32 = 375; -pub const FSOPEN_CLOEXEC: u32 = 1; -pub const FSPICK_CLOEXEC: u32 = 1; -pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; -pub const FSPICK_NO_AUTOMOUNT: u32 = 4; -pub const FSPICK_EMPTY_PATH: u32 = 8; -pub const FSMOUNT_CLOEXEC: u32 = 1; -pub const MOUNT_ATTR_RDONLY: u32 = 1; -pub const MOUNT_ATTR_NOSUID: u32 = 2; -pub const MOUNT_ATTR_NODEV: u32 = 4; -pub const MOUNT_ATTR_NOEXEC: u32 = 8; -pub const MOUNT_ATTR__ATIME: u32 = 112; -pub const MOUNT_ATTR_RELATIME: u32 = 0; -pub const MOUNT_ATTR_NOATIME: u32 = 16; -pub const MOUNT_ATTR_STRICTATIME: u32 = 32; -pub const MOUNT_ATTR_NODIRATIME: u32 = 128; -pub const MOUNT_ATTR_IDMAP: u32 = 1048576; -pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; -pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; -pub const INR_OPEN_CUR: u32 = 1024; -pub const INR_OPEN_MAX: u32 = 4096; -pub const BLOCK_SIZE_BITS: u32 = 10; -pub const BLOCK_SIZE: u32 = 1024; -pub const SEEK_SET: u32 = 0; -pub const SEEK_CUR: u32 = 1; -pub const SEEK_END: u32 = 2; -pub const SEEK_DATA: u32 = 3; -pub const SEEK_HOLE: u32 = 4; -pub const SEEK_MAX: u32 = 4; -pub const RENAME_NOREPLACE: u32 = 1; -pub const RENAME_EXCHANGE: u32 = 2; -pub const RENAME_WHITEOUT: u32 = 4; -pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; -pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; -pub const NR_FILE: u32 = 8192; -pub const FS_XFLAG_REALTIME: u32 = 1; -pub const FS_XFLAG_PREALLOC: u32 = 2; -pub const FS_XFLAG_IMMUTABLE: u32 = 8; -pub const FS_XFLAG_APPEND: u32 = 16; -pub const FS_XFLAG_SYNC: u32 = 32; -pub const FS_XFLAG_NOATIME: u32 = 64; -pub const FS_XFLAG_NODUMP: u32 = 128; -pub const FS_XFLAG_RTINHERIT: u32 = 256; -pub const FS_XFLAG_PROJINHERIT: u32 = 512; -pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; -pub const FS_XFLAG_EXTSIZE: u32 = 2048; -pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; -pub const FS_XFLAG_NODEFRAG: u32 = 8192; -pub const FS_XFLAG_FILESTREAM: u32 = 16384; -pub const FS_XFLAG_DAX: u32 = 32768; -pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; -pub const FS_XFLAG_HASATTR: u32 = 2147483648; -pub const BMAP_IOCTL: u32 = 1; -pub const FSLABEL_MAX: u32 = 256; -pub const FS_SECRM_FL: u32 = 1; -pub const FS_UNRM_FL: u32 = 2; -pub const FS_COMPR_FL: u32 = 4; -pub const FS_SYNC_FL: u32 = 8; -pub const FS_IMMUTABLE_FL: u32 = 16; -pub const FS_APPEND_FL: u32 = 32; -pub const FS_NODUMP_FL: u32 = 64; -pub const FS_NOATIME_FL: u32 = 128; -pub const FS_DIRTY_FL: u32 = 256; -pub const FS_COMPRBLK_FL: u32 = 512; -pub const FS_NOCOMP_FL: u32 = 1024; -pub const FS_ENCRYPT_FL: u32 = 2048; -pub const FS_BTREE_FL: u32 = 4096; -pub const FS_INDEX_FL: u32 = 4096; -pub const FS_IMAGIC_FL: u32 = 8192; -pub const FS_JOURNAL_DATA_FL: u32 = 16384; -pub const FS_NOTAIL_FL: u32 = 32768; -pub const FS_DIRSYNC_FL: u32 = 65536; -pub const FS_TOPDIR_FL: u32 = 131072; -pub const FS_HUGE_FILE_FL: u32 = 262144; -pub const FS_EXTENT_FL: u32 = 524288; -pub const FS_VERITY_FL: u32 = 1048576; -pub const FS_EA_INODE_FL: u32 = 2097152; -pub const FS_EOFBLOCKS_FL: u32 = 4194304; -pub const FS_NOCOW_FL: u32 = 8388608; -pub const FS_DAX_FL: u32 = 33554432; -pub const FS_INLINE_DATA_FL: u32 = 268435456; -pub const FS_PROJINHERIT_FL: u32 = 536870912; -pub const FS_CASEFOLD_FL: u32 = 1073741824; -pub const FS_RESERVED_FL: u32 = 2147483648; -pub const FS_FL_USER_VISIBLE: u32 = 253951; -pub const FS_FL_USER_MODIFIABLE: u32 = 229631; -pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; -pub const SYNC_FILE_RANGE_WRITE: u32 = 2; -pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; -pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; -pub const FUTEX_WAIT: u32 = 0; -pub const FUTEX_WAKE: u32 = 1; -pub const FUTEX_FD: u32 = 2; -pub const FUTEX_REQUEUE: u32 = 3; -pub const FUTEX_CMP_REQUEUE: u32 = 4; -pub const FUTEX_WAKE_OP: u32 = 5; -pub const FUTEX_LOCK_PI: u32 = 6; -pub const FUTEX_UNLOCK_PI: u32 = 7; -pub const FUTEX_TRYLOCK_PI: u32 = 8; -pub const FUTEX_WAIT_BITSET: u32 = 9; -pub const FUTEX_WAKE_BITSET: u32 = 10; -pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; -pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; -pub const FUTEX_LOCK_PI2: u32 = 13; -pub const FUTEX_PRIVATE_FLAG: u32 = 128; -pub const FUTEX_CLOCK_REALTIME: u32 = 256; -pub const FUTEX_CMD_MASK: i32 = -385; -pub const FUTEX_WAIT_PRIVATE: u32 = 128; -pub const FUTEX_WAKE_PRIVATE: u32 = 129; -pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; -pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; -pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; -pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; -pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; -pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; -pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; -pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; -pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; -pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; -pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; -pub const FUTEX_32: u32 = 2; -pub const FUTEX_WAITV_MAX: u32 = 128; -pub const FUTEX_WAITERS: u32 = 2147483648; -pub const FUTEX_OWNER_DIED: u32 = 1073741824; -pub const FUTEX_TID_MASK: u32 = 1073741823; -pub const ROBUST_LIST_LIMIT: u32 = 2048; -pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; -pub const FUTEX_OP_SET: u32 = 0; -pub const FUTEX_OP_ADD: u32 = 1; -pub const FUTEX_OP_OR: u32 = 2; -pub const FUTEX_OP_ANDN: u32 = 3; -pub const FUTEX_OP_XOR: u32 = 4; -pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; -pub const FUTEX_OP_CMP_EQ: u32 = 0; -pub const FUTEX_OP_CMP_NE: u32 = 1; -pub const FUTEX_OP_CMP_LT: u32 = 2; -pub const FUTEX_OP_CMP_LE: u32 = 3; -pub const FUTEX_OP_CMP_GT: u32 = 4; -pub const FUTEX_OP_CMP_GE: u32 = 5; -pub const __UAPI_DEF_IF_IFCONF: u32 = 1; -pub const __UAPI_DEF_IF_IFMAP: u32 = 1; -pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1; -pub const __UAPI_DEF_IF_IFREQ: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1; -pub const __UAPI_DEF_IN_ADDR: u32 = 1; -pub const __UAPI_DEF_IN_IPPROTO: u32 = 1; -pub const __UAPI_DEF_IN_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP_MREQ: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1; -pub const __UAPI_DEF_IN_CLASS: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1; -pub const __UAPI_DEF_IPV6_MREQ: u32 = 1; -pub const __UAPI_DEF_IPPROTO_V6: u32 = 1; -pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1; -pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1; -pub const __UAPI_DEF_XATTR: u32 = 1; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const IP_TOS: u32 = 1; -pub const IP_TTL: u32 = 2; -pub const IP_HDRINCL: u32 = 3; -pub const IP_OPTIONS: u32 = 4; -pub const IP_ROUTER_ALERT: u32 = 5; -pub const IP_RECVOPTS: u32 = 6; -pub const IP_RETOPTS: u32 = 7; -pub const IP_PKTINFO: u32 = 8; -pub const IP_PKTOPTIONS: u32 = 9; -pub const IP_MTU_DISCOVER: u32 = 10; -pub const IP_RECVERR: u32 = 11; -pub const IP_RECVTTL: u32 = 12; -pub const IP_RECVTOS: u32 = 13; -pub const IP_MTU: u32 = 14; -pub const IP_FREEBIND: u32 = 15; -pub const IP_IPSEC_POLICY: u32 = 16; -pub const IP_XFRM_POLICY: u32 = 17; -pub const IP_PASSSEC: u32 = 18; -pub const IP_TRANSPARENT: u32 = 19; -pub const IP_RECVRETOPTS: u32 = 7; -pub const IP_ORIGDSTADDR: u32 = 20; -pub const IP_RECVORIGDSTADDR: u32 = 20; -pub const IP_MINTTL: u32 = 21; -pub const IP_NODEFRAG: u32 = 22; -pub const IP_CHECKSUM: u32 = 23; -pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; -pub const IP_RECVFRAGSIZE: u32 = 25; -pub const IP_RECVERR_RFC4884: u32 = 26; -pub const IP_PMTUDISC_DONT: u32 = 0; -pub const IP_PMTUDISC_WANT: u32 = 1; -pub const IP_PMTUDISC_DO: u32 = 2; -pub const IP_PMTUDISC_PROBE: u32 = 3; -pub const IP_PMTUDISC_INTERFACE: u32 = 4; -pub const IP_PMTUDISC_OMIT: u32 = 5; -pub const IP_MULTICAST_IF: u32 = 32; -pub const IP_MULTICAST_TTL: u32 = 33; -pub const IP_MULTICAST_LOOP: u32 = 34; -pub const IP_ADD_MEMBERSHIP: u32 = 35; -pub const IP_DROP_MEMBERSHIP: u32 = 36; -pub const IP_UNBLOCK_SOURCE: u32 = 37; -pub const IP_BLOCK_SOURCE: u32 = 38; -pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; -pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; -pub const IP_MSFILTER: u32 = 41; -pub const MCAST_JOIN_GROUP: u32 = 42; -pub const MCAST_BLOCK_SOURCE: u32 = 43; -pub const MCAST_UNBLOCK_SOURCE: u32 = 44; -pub const MCAST_LEAVE_GROUP: u32 = 45; -pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; -pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; -pub const MCAST_MSFILTER: u32 = 48; -pub const IP_MULTICAST_ALL: u32 = 49; -pub const IP_UNICAST_IF: u32 = 50; -pub const IP_LOCAL_PORT_RANGE: u32 = 51; -pub const MCAST_EXCLUDE: u32 = 0; -pub const MCAST_INCLUDE: u32 = 1; -pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; -pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const __SOCK_SIZE__: u32 = 16; -pub const IN_CLASSA_NET: u32 = 4278190080; -pub const IN_CLASSA_NSHIFT: u32 = 24; -pub const IN_CLASSA_HOST: u32 = 16777215; -pub const IN_CLASSA_MAX: u32 = 128; -pub const IN_CLASSB_NET: u32 = 4294901760; -pub const IN_CLASSB_NSHIFT: u32 = 16; -pub const IN_CLASSB_HOST: u32 = 65535; -pub const IN_CLASSB_MAX: u32 = 65536; -pub const IN_CLASSC_NET: u32 = 4294967040; -pub const IN_CLASSC_NSHIFT: u32 = 8; -pub const IN_CLASSC_HOST: u32 = 255; -pub const IN_MULTICAST_NET: u32 = 3758096384; -pub const IN_CLASSE_NET: u32 = 4294967295; -pub const IN_CLASSE_NSHIFT: u32 = 0; -pub const IN_LOOPBACKNET: u32 = 127; -pub const INADDR_LOOPBACK: u32 = 2130706433; -pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; -pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; -pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; -pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; -pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; -pub const __BIG_ENDIAN: u32 = 4321; -pub const IN_ACCESS: u32 = 1; -pub const IN_MODIFY: u32 = 2; -pub const IN_ATTRIB: u32 = 4; -pub const IN_CLOSE_WRITE: u32 = 8; -pub const IN_CLOSE_NOWRITE: u32 = 16; -pub const IN_OPEN: u32 = 32; -pub const IN_MOVED_FROM: u32 = 64; -pub const IN_MOVED_TO: u32 = 128; -pub const IN_CREATE: u32 = 256; -pub const IN_DELETE: u32 = 512; -pub const IN_DELETE_SELF: u32 = 1024; -pub const IN_MOVE_SELF: u32 = 2048; -pub const IN_UNMOUNT: u32 = 8192; -pub const IN_Q_OVERFLOW: u32 = 16384; -pub const IN_IGNORED: u32 = 32768; -pub const IN_CLOSE: u32 = 24; -pub const IN_MOVE: u32 = 192; -pub const IN_ONLYDIR: u32 = 16777216; -pub const IN_DONT_FOLLOW: u32 = 33554432; -pub const IN_EXCL_UNLINK: u32 = 67108864; -pub const IN_MASK_CREATE: u32 = 268435456; -pub const IN_MASK_ADD: u32 = 536870912; -pub const IN_ISDIR: u32 = 1073741824; -pub const IN_ONESHOT: u32 = 2147483648; -pub const IN_ALL_EVENTS: u32 = 4095; -pub const IN_CLOEXEC: u32 = 524288; -pub const IN_NONBLOCK: u32 = 2048; -pub const IPTOS_TOS_MASK: u32 = 30; -pub const IPTOS_LOWDELAY: u32 = 16; -pub const IPTOS_THROUGHPUT: u32 = 8; -pub const IPTOS_RELIABILITY: u32 = 4; -pub const IPTOS_MINCOST: u32 = 2; -pub const IPTOS_PREC_MASK: u32 = 224; -pub const IPTOS_PREC_NETCONTROL: u32 = 224; -pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; -pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; -pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; -pub const IPTOS_PREC_FLASH: u32 = 96; -pub const IPTOS_PREC_IMMEDIATE: u32 = 64; -pub const IPTOS_PREC_PRIORITY: u32 = 32; -pub const IPTOS_PREC_ROUTINE: u32 = 0; -pub const IPOPT_COPY: u32 = 128; -pub const IPOPT_CLASS_MASK: u32 = 96; -pub const IPOPT_NUMBER_MASK: u32 = 31; -pub const IPOPT_CONTROL: u32 = 0; -pub const IPOPT_RESERVED1: u32 = 32; -pub const IPOPT_MEASUREMENT: u32 = 64; -pub const IPOPT_RESERVED2: u32 = 96; -pub const IPOPT_END: u32 = 0; -pub const IPOPT_NOOP: u32 = 1; -pub const IPOPT_SEC: u32 = 130; -pub const IPOPT_LSRR: u32 = 131; -pub const IPOPT_TIMESTAMP: u32 = 68; -pub const IPOPT_CIPSO: u32 = 134; -pub const IPOPT_RR: u32 = 7; -pub const IPOPT_SID: u32 = 136; -pub const IPOPT_SSRR: u32 = 137; -pub const IPOPT_RA: u32 = 148; -pub const IPVERSION: u32 = 4; -pub const MAXTTL: u32 = 255; -pub const IPDEFTTL: u32 = 64; -pub const IPOPT_OPTVAL: u32 = 0; -pub const IPOPT_OLEN: u32 = 1; -pub const IPOPT_OFFSET: u32 = 2; -pub const IPOPT_MINOFF: u32 = 4; -pub const MAX_IPOPTLEN: u32 = 40; -pub const IPOPT_NOP: u32 = 1; -pub const IPOPT_EOL: u32 = 0; -pub const IPOPT_TS: u32 = 68; -pub const IPOPT_TS_TSONLY: u32 = 0; -pub const IPOPT_TS_TSANDADDR: u32 = 1; -pub const IPOPT_TS_PRESPEC: u32 = 3; -pub const IPV4_BEET_PHMAXLEN: u32 = 8; -pub const IPV6_FL_A_GET: u32 = 0; -pub const IPV6_FL_A_PUT: u32 = 1; -pub const IPV6_FL_A_RENEW: u32 = 2; -pub const IPV6_FL_F_CREATE: u32 = 1; -pub const IPV6_FL_F_EXCL: u32 = 2; -pub const IPV6_FL_F_REFLECT: u32 = 4; -pub const IPV6_FL_F_REMOTE: u32 = 8; -pub const IPV6_FL_S_NONE: u32 = 0; -pub const IPV6_FL_S_EXCL: u32 = 1; -pub const IPV6_FL_S_PROCESS: u32 = 2; -pub const IPV6_FL_S_USER: u32 = 3; -pub const IPV6_FL_S_ANY: u32 = 255; -pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; -pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; -pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; -pub const IPV6_PRIORITY_FILLER: u32 = 256; -pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; -pub const IPV6_PRIORITY_RESERVED1: u32 = 768; -pub const IPV6_PRIORITY_BULK: u32 = 1024; -pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; -pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; -pub const IPV6_PRIORITY_CONTROL: u32 = 1792; -pub const IPV6_PRIORITY_8: u32 = 2048; -pub const IPV6_PRIORITY_9: u32 = 2304; -pub const IPV6_PRIORITY_10: u32 = 2560; -pub const IPV6_PRIORITY_11: u32 = 2816; -pub const IPV6_PRIORITY_12: u32 = 3072; -pub const IPV6_PRIORITY_13: u32 = 3328; -pub const IPV6_PRIORITY_14: u32 = 3584; -pub const IPV6_PRIORITY_15: u32 = 3840; -pub const IPPROTO_HOPOPTS: u32 = 0; -pub const IPPROTO_ROUTING: u32 = 43; -pub const IPPROTO_FRAGMENT: u32 = 44; -pub const IPPROTO_ICMPV6: u32 = 58; -pub const IPPROTO_NONE: u32 = 59; -pub const IPPROTO_DSTOPTS: u32 = 60; -pub const IPPROTO_MH: u32 = 135; -pub const IPV6_TLV_PAD1: u32 = 0; -pub const IPV6_TLV_PADN: u32 = 1; -pub const IPV6_TLV_ROUTERALERT: u32 = 5; -pub const IPV6_TLV_CALIPSO: u32 = 7; -pub const IPV6_TLV_IOAM: u32 = 49; -pub const IPV6_TLV_JUMBO: u32 = 194; -pub const IPV6_TLV_HAO: u32 = 201; -pub const IPV6_ADDRFORM: u32 = 1; -pub const IPV6_2292PKTINFO: u32 = 2; -pub const IPV6_2292HOPOPTS: u32 = 3; -pub const IPV6_2292DSTOPTS: u32 = 4; -pub const IPV6_2292RTHDR: u32 = 5; -pub const IPV6_2292PKTOPTIONS: u32 = 6; -pub const IPV6_CHECKSUM: u32 = 7; -pub const IPV6_2292HOPLIMIT: u32 = 8; -pub const IPV6_NEXTHOP: u32 = 9; -pub const IPV6_AUTHHDR: u32 = 10; -pub const IPV6_FLOWINFO: u32 = 11; -pub const IPV6_UNICAST_HOPS: u32 = 16; -pub const IPV6_MULTICAST_IF: u32 = 17; -pub const IPV6_MULTICAST_HOPS: u32 = 18; -pub const IPV6_MULTICAST_LOOP: u32 = 19; -pub const IPV6_ADD_MEMBERSHIP: u32 = 20; -pub const IPV6_DROP_MEMBERSHIP: u32 = 21; -pub const IPV6_ROUTER_ALERT: u32 = 22; -pub const IPV6_MTU_DISCOVER: u32 = 23; -pub const IPV6_MTU: u32 = 24; -pub const IPV6_RECVERR: u32 = 25; -pub const IPV6_V6ONLY: u32 = 26; -pub const IPV6_JOIN_ANYCAST: u32 = 27; -pub const IPV6_LEAVE_ANYCAST: u32 = 28; -pub const IPV6_MULTICAST_ALL: u32 = 29; -pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; -pub const IPV6_RECVERR_RFC4884: u32 = 31; -pub const IPV6_PMTUDISC_DONT: u32 = 0; -pub const IPV6_PMTUDISC_WANT: u32 = 1; -pub const IPV6_PMTUDISC_DO: u32 = 2; -pub const IPV6_PMTUDISC_PROBE: u32 = 3; -pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; -pub const IPV6_PMTUDISC_OMIT: u32 = 5; -pub const IPV6_FLOWLABEL_MGR: u32 = 32; -pub const IPV6_FLOWINFO_SEND: u32 = 33; -pub const IPV6_IPSEC_POLICY: u32 = 34; -pub const IPV6_XFRM_POLICY: u32 = 35; -pub const IPV6_HDRINCL: u32 = 36; -pub const IPV6_RECVPKTINFO: u32 = 49; -pub const IPV6_PKTINFO: u32 = 50; -pub const IPV6_RECVHOPLIMIT: u32 = 51; -pub const IPV6_HOPLIMIT: u32 = 52; -pub const IPV6_RECVHOPOPTS: u32 = 53; -pub const IPV6_HOPOPTS: u32 = 54; -pub const IPV6_RTHDRDSTOPTS: u32 = 55; -pub const IPV6_RECVRTHDR: u32 = 56; -pub const IPV6_RTHDR: u32 = 57; -pub const IPV6_RECVDSTOPTS: u32 = 58; -pub const IPV6_DSTOPTS: u32 = 59; -pub const IPV6_RECVPATHMTU: u32 = 60; -pub const IPV6_PATHMTU: u32 = 61; -pub const IPV6_DONTFRAG: u32 = 62; -pub const IPV6_RECVTCLASS: u32 = 66; -pub const IPV6_TCLASS: u32 = 67; -pub const IPV6_AUTOFLOWLABEL: u32 = 70; -pub const IPV6_ADDR_PREFERENCES: u32 = 72; -pub const IPV6_PREFER_SRC_TMP: u32 = 1; -pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; -pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; -pub const IPV6_PREFER_SRC_COA: u32 = 4; -pub const IPV6_PREFER_SRC_HOME: u32 = 1024; -pub const IPV6_PREFER_SRC_CGA: u32 = 8; -pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; -pub const IPV6_MINHOPCOUNT: u32 = 73; -pub const IPV6_ORIGDSTADDR: u32 = 74; -pub const IPV6_RECVORIGDSTADDR: u32 = 74; -pub const IPV6_TRANSPARENT: u32 = 75; -pub const IPV6_UNICAST_IF: u32 = 76; -pub const IPV6_RECVFRAGSIZE: u32 = 77; -pub const IPV6_FREEBIND: u32 = 78; -pub const IPV6_MIN_MTU: u32 = 1280; -pub const IPV6_SRCRT_STRICT: u32 = 1; -pub const IPV6_SRCRT_TYPE_0: u32 = 0; -pub const IPV6_SRCRT_TYPE_2: u32 = 2; -pub const IPV6_SRCRT_TYPE_3: u32 = 3; -pub const IPV6_SRCRT_TYPE_4: u32 = 4; -pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; -pub const ADFS_SUPER_MAGIC: u32 = 44533; -pub const AFFS_SUPER_MAGIC: u32 = 44543; -pub const AFS_SUPER_MAGIC: u32 = 1397113167; -pub const AUTOFS_SUPER_MAGIC: u32 = 391; -pub const CEPH_SUPER_MAGIC: u32 = 12805120; -pub const CODA_SUPER_MAGIC: u32 = 1937076805; -pub const CRAMFS_MAGIC: u32 = 684539205; -pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; -pub const DEBUGFS_MAGIC: u32 = 1684170528; -pub const SECURITYFS_MAGIC: u32 = 1935894131; -pub const SELINUX_MAGIC: u32 = 4185718668; -pub const SMACK_MAGIC: u32 = 1128357203; -pub const RAMFS_MAGIC: u32 = 2240043254; -pub const TMPFS_MAGIC: u32 = 16914836; -pub const HUGETLBFS_MAGIC: u32 = 2508478710; -pub const SQUASHFS_MAGIC: u32 = 1936814952; -pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; -pub const EFS_SUPER_MAGIC: u32 = 4278867; -pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; -pub const EXT2_SUPER_MAGIC: u32 = 61267; -pub const EXT3_SUPER_MAGIC: u32 = 61267; -pub const XENFS_SUPER_MAGIC: u32 = 2881100148; -pub const EXT4_SUPER_MAGIC: u32 = 61267; -pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; -pub const NILFS_SUPER_MAGIC: u32 = 13364; -pub const F2FS_SUPER_MAGIC: u32 = 4076150800; -pub const HPFS_SUPER_MAGIC: u32 = 4187351113; -pub const ISOFS_SUPER_MAGIC: u32 = 38496; -pub const JFFS2_SUPER_MAGIC: u32 = 29366; -pub const XFS_SUPER_MAGIC: u32 = 1481003842; -pub const PSTOREFS_MAGIC: u32 = 1634035564; -pub const EFIVARFS_MAGIC: u32 = 3730735588; -pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; -pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; -pub const FUSE_SUPER_MAGIC: u32 = 1702057286; -pub const MINIX_SUPER_MAGIC: u32 = 4991; -pub const MINIX_SUPER_MAGIC2: u32 = 5007; -pub const MINIX2_SUPER_MAGIC: u32 = 9320; -pub const MINIX2_SUPER_MAGIC2: u32 = 9336; -pub const MINIX3_SUPER_MAGIC: u32 = 19802; -pub const MSDOS_SUPER_MAGIC: u32 = 19780; -pub const EXFAT_SUPER_MAGIC: u32 = 538032816; -pub const NCP_SUPER_MAGIC: u32 = 22092; -pub const NFS_SUPER_MAGIC: u32 = 26985; -pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; -pub const OPENPROM_SUPER_MAGIC: u32 = 40865; -pub const QNX4_SUPER_MAGIC: u32 = 47; -pub const QNX6_SUPER_MAGIC: u32 = 1746473250; -pub const AFS_FS_MAGIC: u32 = 1799439955; -pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; -pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0"; -pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0"; -pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0"; -pub const SMB_SUPER_MAGIC: u32 = 20859; -pub const CIFS_SUPER_MAGIC: u32 = 4283649346; -pub const SMB2_SUPER_MAGIC: u32 = 4266872130; -pub const CGROUP_SUPER_MAGIC: u32 = 2613483; -pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; -pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; -pub const STACK_END_MAGIC: u32 = 1470918301; -pub const TRACEFS_MAGIC: u32 = 1953653091; -pub const V9FS_MAGIC: u32 = 16914839; -pub const BDEVFS_MAGIC: u32 = 1650746742; -pub const DAXFS_MAGIC: u32 = 1684300152; -pub const BINFMTFS_MAGIC: u32 = 1112100429; -pub const DEVPTS_SUPER_MAGIC: u32 = 7377; -pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; -pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; -pub const PIPEFS_MAGIC: u32 = 1346981957; -pub const PROC_SUPER_MAGIC: u32 = 40864; -pub const SOCKFS_MAGIC: u32 = 1397703499; -pub const SYSFS_MAGIC: u32 = 1650812274; -pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; -pub const MTD_INODE_FS_MAGIC: u32 = 288389204; -pub const ANON_INODE_FS_MAGIC: u32 = 151263540; -pub const BTRFS_TEST_MAGIC: u32 = 1936880249; -pub const NSFS_MAGIC: u32 = 1853056627; -pub const BPF_FS_MAGIC: u32 = 3405662737; -pub const AAFS_MAGIC: u32 = 1513908720; -pub const ZONEFS_MAGIC: u32 = 1515144787; -pub const UDF_SUPER_MAGIC: u32 = 352400198; -pub const DMA_BUF_MAGIC: u32 = 1145913666; -pub const DEVMEM_MAGIC: u32 = 1162691661; -pub const SECRETMEM_MAGIC: u32 = 1397048141; -pub const PROT_READ: u32 = 1; -pub const PROT_WRITE: u32 = 2; -pub const PROT_EXEC: u32 = 4; -pub const PROT_SEM: u32 = 8; -pub const PROT_NONE: u32 = 0; -pub const PROT_GROWSDOWN: u32 = 16777216; -pub const PROT_GROWSUP: u32 = 33554432; -pub const MAP_TYPE: u32 = 15; -pub const MAP_FIXED: u32 = 16; -pub const MAP_ANONYMOUS: u32 = 32; -pub const MAP_POPULATE: u32 = 32768; -pub const MAP_NONBLOCK: u32 = 65536; -pub const MAP_STACK: u32 = 131072; -pub const MAP_HUGETLB: u32 = 262144; -pub const MAP_SYNC: u32 = 524288; -pub const MAP_FIXED_NOREPLACE: u32 = 1048576; -pub const MAP_UNINITIALIZED: u32 = 67108864; -pub const MLOCK_ONFAULT: u32 = 1; -pub const MS_ASYNC: u32 = 1; -pub const MS_INVALIDATE: u32 = 2; -pub const MS_SYNC: u32 = 4; -pub const MADV_NORMAL: u32 = 0; -pub const MADV_RANDOM: u32 = 1; -pub const MADV_SEQUENTIAL: u32 = 2; -pub const MADV_WILLNEED: u32 = 3; -pub const MADV_DONTNEED: u32 = 4; -pub const MADV_FREE: u32 = 8; -pub const MADV_REMOVE: u32 = 9; -pub const MADV_DONTFORK: u32 = 10; -pub const MADV_DOFORK: u32 = 11; -pub const MADV_HWPOISON: u32 = 100; -pub const MADV_SOFT_OFFLINE: u32 = 101; -pub const MADV_MERGEABLE: u32 = 12; -pub const MADV_UNMERGEABLE: u32 = 13; -pub const MADV_HUGEPAGE: u32 = 14; -pub const MADV_NOHUGEPAGE: u32 = 15; -pub const MADV_DONTDUMP: u32 = 16; -pub const MADV_DODUMP: u32 = 17; -pub const MADV_WIPEONFORK: u32 = 18; -pub const MADV_KEEPONFORK: u32 = 19; -pub const MADV_COLD: u32 = 20; -pub const MADV_PAGEOUT: u32 = 21; -pub const MADV_POPULATE_READ: u32 = 22; -pub const MADV_POPULATE_WRITE: u32 = 23; -pub const MADV_DONTNEED_LOCKED: u32 = 24; -pub const MADV_COLLAPSE: u32 = 25; -pub const MAP_FILE: u32 = 0; -pub const PKEY_DISABLE_ACCESS: u32 = 1; -pub const PKEY_DISABLE_WRITE: u32 = 2; -pub const PKEY_ACCESS_MASK: u32 = 3; -pub const PROT_SAO: u32 = 16; -pub const MAP_RENAME: u32 = 32; -pub const MAP_NORESERVE: u32 = 64; -pub const MAP_LOCKED: u32 = 128; -pub const MAP_GROWSDOWN: u32 = 256; -pub const MAP_DENYWRITE: u32 = 2048; -pub const MAP_EXECUTABLE: u32 = 4096; -pub const MCL_CURRENT: u32 = 8192; -pub const MCL_FUTURE: u32 = 16384; -pub const MCL_ONFAULT: u32 = 32768; -pub const PKEY_DISABLE_EXECUTE: u32 = 4; -pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; -pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; -pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; -pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; -pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; -pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; -pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; -pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; -pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; -pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; -pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; -pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; -pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; -pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; -pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; -pub const MREMAP_MAYMOVE: u32 = 1; -pub const MREMAP_FIXED: u32 = 2; -pub const MREMAP_DONTUNMAP: u32 = 4; -pub const OVERCOMMIT_GUESS: u32 = 0; -pub const OVERCOMMIT_ALWAYS: u32 = 1; -pub const OVERCOMMIT_NEVER: u32 = 2; -pub const MAP_SHARED: u32 = 1; -pub const MAP_PRIVATE: u32 = 2; -pub const MAP_SHARED_VALIDATE: u32 = 3; -pub const MAP_HUGE_SHIFT: u32 = 26; -pub const MAP_HUGE_MASK: u32 = 63; -pub const MAP_HUGE_16KB: u32 = 939524096; -pub const MAP_HUGE_64KB: u32 = 1073741824; -pub const MAP_HUGE_512KB: u32 = 1275068416; -pub const MAP_HUGE_1MB: u32 = 1342177280; -pub const MAP_HUGE_2MB: u32 = 1409286144; -pub const MAP_HUGE_8MB: u32 = 1543503872; -pub const MAP_HUGE_16MB: u32 = 1610612736; -pub const MAP_HUGE_32MB: u32 = 1677721600; -pub const MAP_HUGE_256MB: u32 = 1879048192; -pub const MAP_HUGE_512MB: u32 = 1946157056; -pub const MAP_HUGE_1GB: u32 = 2013265920; -pub const MAP_HUGE_2GB: u32 = 2080374784; -pub const MAP_HUGE_16GB: u32 = 2281701376; -pub const SO_RCVLOWAT: u32 = 16; -pub const SO_SNDLOWAT: u32 = 17; -pub const SO_RCVTIMEO_OLD: u32 = 18; -pub const SO_SNDTIMEO_OLD: u32 = 19; -pub const SO_PASSCRED: u32 = 20; -pub const SO_PEERCRED: u32 = 21; -pub const SIOCGSTAMP_OLD: u32 = 35078; -pub const SIOCGSTAMPNS_OLD: u32 = 35079; -pub const SOL_SOCKET: u32 = 1; -pub const SO_DEBUG: u32 = 1; -pub const SO_REUSEADDR: u32 = 2; -pub const SO_TYPE: u32 = 3; -pub const SO_ERROR: u32 = 4; -pub const SO_DONTROUTE: u32 = 5; -pub const SO_BROADCAST: u32 = 6; -pub const SO_SNDBUF: u32 = 7; -pub const SO_RCVBUF: u32 = 8; -pub const SO_SNDBUFFORCE: u32 = 32; -pub const SO_RCVBUFFORCE: u32 = 33; -pub const SO_KEEPALIVE: u32 = 9; -pub const SO_OOBINLINE: u32 = 10; -pub const SO_NO_CHECK: u32 = 11; -pub const SO_PRIORITY: u32 = 12; -pub const SO_LINGER: u32 = 13; -pub const SO_BSDCOMPAT: u32 = 14; -pub const SO_REUSEPORT: u32 = 15; -pub const SO_SECURITY_AUTHENTICATION: u32 = 22; -pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; -pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; -pub const SO_BINDTODEVICE: u32 = 25; -pub const SO_ATTACH_FILTER: u32 = 26; -pub const SO_DETACH_FILTER: u32 = 27; -pub const SO_GET_FILTER: u32 = 26; -pub const SO_PEERNAME: u32 = 28; -pub const SO_ACCEPTCONN: u32 = 30; -pub const SO_PEERSEC: u32 = 31; -pub const SO_PASSSEC: u32 = 34; -pub const SO_MARK: u32 = 36; -pub const SO_PROTOCOL: u32 = 38; -pub const SO_DOMAIN: u32 = 39; -pub const SO_RXQ_OVFL: u32 = 40; -pub const SO_WIFI_STATUS: u32 = 41; -pub const SCM_WIFI_STATUS: u32 = 41; -pub const SO_PEEK_OFF: u32 = 42; -pub const SO_NOFCS: u32 = 43; -pub const SO_LOCK_FILTER: u32 = 44; -pub const SO_SELECT_ERR_QUEUE: u32 = 45; -pub const SO_BUSY_POLL: u32 = 46; -pub const SO_MAX_PACING_RATE: u32 = 47; -pub const SO_BPF_EXTENSIONS: u32 = 48; -pub const SO_INCOMING_CPU: u32 = 49; -pub const SO_ATTACH_BPF: u32 = 50; -pub const SO_DETACH_BPF: u32 = 27; -pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; -pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; -pub const SO_CNX_ADVICE: u32 = 53; -pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; -pub const SO_MEMINFO: u32 = 55; -pub const SO_INCOMING_NAPI_ID: u32 = 56; -pub const SO_COOKIE: u32 = 57; -pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; -pub const SO_PEERGROUPS: u32 = 59; -pub const SO_ZEROCOPY: u32 = 60; -pub const SO_TXTIME: u32 = 61; -pub const SCM_TXTIME: u32 = 61; -pub const SO_BINDTOIFINDEX: u32 = 62; -pub const SO_TIMESTAMP_OLD: u32 = 29; -pub const SO_TIMESTAMPNS_OLD: u32 = 35; -pub const SO_TIMESTAMPING_OLD: u32 = 37; -pub const SO_TIMESTAMP_NEW: u32 = 63; -pub const SO_TIMESTAMPNS_NEW: u32 = 64; -pub const SO_TIMESTAMPING_NEW: u32 = 65; -pub const SO_RCVTIMEO_NEW: u32 = 66; -pub const SO_SNDTIMEO_NEW: u32 = 67; -pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; -pub const SO_PREFER_BUSY_POLL: u32 = 69; -pub const SO_BUSY_POLL_BUDGET: u32 = 70; -pub const SO_NETNS_COOKIE: u32 = 71; -pub const SO_BUF_LOCK: u32 = 72; -pub const SO_RESERVE_MEM: u32 = 73; -pub const SO_TXREHASH: u32 = 74; -pub const SO_RCVMARK: u32 = 75; -pub const SO_TIMESTAMP: u32 = 29; -pub const SO_TIMESTAMPNS: u32 = 35; -pub const SO_TIMESTAMPING: u32 = 37; -pub const SO_RCVTIMEO: u32 = 18; -pub const SO_SNDTIMEO: u32 = 19; -pub const SCM_TIMESTAMP: u32 = 29; -pub const SCM_TIMESTAMPNS: u32 = 35; -pub const SCM_TIMESTAMPING: u32 = 37; -pub const SYS_SOCKET: u32 = 1; -pub const SYS_BIND: u32 = 2; -pub const SYS_CONNECT: u32 = 3; -pub const SYS_LISTEN: u32 = 4; -pub const SYS_ACCEPT: u32 = 5; -pub const SYS_GETSOCKNAME: u32 = 6; -pub const SYS_GETPEERNAME: u32 = 7; -pub const SYS_SOCKETPAIR: u32 = 8; -pub const SYS_SEND: u32 = 9; -pub const SYS_RECV: u32 = 10; -pub const SYS_SENDTO: u32 = 11; -pub const SYS_RECVFROM: u32 = 12; -pub const SYS_SHUTDOWN: u32 = 13; -pub const SYS_SETSOCKOPT: u32 = 14; -pub const SYS_GETSOCKOPT: u32 = 15; -pub const SYS_SENDMSG: u32 = 16; -pub const SYS_RECVMSG: u32 = 17; -pub const SYS_ACCEPT4: u32 = 18; -pub const SYS_RECVMMSG: u32 = 19; -pub const SYS_SENDMMSG: u32 = 20; -pub const __SO_ACCEPTCON: u32 = 65536; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const POLLWRNORM: u32 = 256; -pub const POLLWRBAND: u32 = 512; -pub const POLLMSG: u32 = 1024; -pub const POLLREMOVE: u32 = 4096; -pub const POLLRDHUP: u32 = 8192; -pub const PR_SET_PDEATHSIG: u32 = 1; -pub const PR_GET_PDEATHSIG: u32 = 2; -pub const PR_GET_DUMPABLE: u32 = 3; -pub const PR_SET_DUMPABLE: u32 = 4; -pub const PR_GET_UNALIGN: u32 = 5; -pub const PR_SET_UNALIGN: u32 = 6; -pub const PR_UNALIGN_NOPRINT: u32 = 1; -pub const PR_UNALIGN_SIGBUS: u32 = 2; -pub const PR_GET_KEEPCAPS: u32 = 7; -pub const PR_SET_KEEPCAPS: u32 = 8; -pub const PR_GET_FPEMU: u32 = 9; -pub const PR_SET_FPEMU: u32 = 10; -pub const PR_FPEMU_NOPRINT: u32 = 1; -pub const PR_FPEMU_SIGFPE: u32 = 2; -pub const PR_GET_FPEXC: u32 = 11; -pub const PR_SET_FPEXC: u32 = 12; -pub const PR_FP_EXC_SW_ENABLE: u32 = 128; -pub const PR_FP_EXC_DIV: u32 = 65536; -pub const PR_FP_EXC_OVF: u32 = 131072; -pub const PR_FP_EXC_UND: u32 = 262144; -pub const PR_FP_EXC_RES: u32 = 524288; -pub const PR_FP_EXC_INV: u32 = 1048576; -pub const PR_FP_EXC_DISABLED: u32 = 0; -pub const PR_FP_EXC_NONRECOV: u32 = 1; -pub const PR_FP_EXC_ASYNC: u32 = 2; -pub const PR_FP_EXC_PRECISE: u32 = 3; -pub const PR_GET_TIMING: u32 = 13; -pub const PR_SET_TIMING: u32 = 14; -pub const PR_TIMING_STATISTICAL: u32 = 0; -pub const PR_TIMING_TIMESTAMP: u32 = 1; -pub const PR_SET_NAME: u32 = 15; -pub const PR_GET_NAME: u32 = 16; -pub const PR_GET_ENDIAN: u32 = 19; -pub const PR_SET_ENDIAN: u32 = 20; -pub const PR_ENDIAN_BIG: u32 = 0; -pub const PR_ENDIAN_LITTLE: u32 = 1; -pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; -pub const PR_GET_SECCOMP: u32 = 21; -pub const PR_SET_SECCOMP: u32 = 22; -pub const PR_CAPBSET_READ: u32 = 23; -pub const PR_CAPBSET_DROP: u32 = 24; -pub const PR_GET_TSC: u32 = 25; -pub const PR_SET_TSC: u32 = 26; -pub const PR_TSC_ENABLE: u32 = 1; -pub const PR_TSC_SIGSEGV: u32 = 2; -pub const PR_GET_SECUREBITS: u32 = 27; -pub const PR_SET_SECUREBITS: u32 = 28; -pub const PR_SET_TIMERSLACK: u32 = 29; -pub const PR_GET_TIMERSLACK: u32 = 30; -pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; -pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; -pub const PR_MCE_KILL: u32 = 33; -pub const PR_MCE_KILL_CLEAR: u32 = 0; -pub const PR_MCE_KILL_SET: u32 = 1; -pub const PR_MCE_KILL_LATE: u32 = 0; -pub const PR_MCE_KILL_EARLY: u32 = 1; -pub const PR_MCE_KILL_DEFAULT: u32 = 2; -pub const PR_MCE_KILL_GET: u32 = 34; -pub const PR_SET_MM: u32 = 35; -pub const PR_SET_MM_START_CODE: u32 = 1; -pub const PR_SET_MM_END_CODE: u32 = 2; -pub const PR_SET_MM_START_DATA: u32 = 3; -pub const PR_SET_MM_END_DATA: u32 = 4; -pub const PR_SET_MM_START_STACK: u32 = 5; -pub const PR_SET_MM_START_BRK: u32 = 6; -pub const PR_SET_MM_BRK: u32 = 7; -pub const PR_SET_MM_ARG_START: u32 = 8; -pub const PR_SET_MM_ARG_END: u32 = 9; -pub const PR_SET_MM_ENV_START: u32 = 10; -pub const PR_SET_MM_ENV_END: u32 = 11; -pub const PR_SET_MM_AUXV: u32 = 12; -pub const PR_SET_MM_EXE_FILE: u32 = 13; -pub const PR_SET_MM_MAP: u32 = 14; -pub const PR_SET_MM_MAP_SIZE: u32 = 15; -pub const PR_SET_PTRACER: u32 = 1499557217; -pub const PR_SET_CHILD_SUBREAPER: u32 = 36; -pub const PR_GET_CHILD_SUBREAPER: u32 = 37; -pub const PR_SET_NO_NEW_PRIVS: u32 = 38; -pub const PR_GET_NO_NEW_PRIVS: u32 = 39; -pub const PR_GET_TID_ADDRESS: u32 = 40; -pub const PR_SET_THP_DISABLE: u32 = 41; -pub const PR_GET_THP_DISABLE: u32 = 42; -pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; -pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; -pub const PR_SET_FP_MODE: u32 = 45; -pub const PR_GET_FP_MODE: u32 = 46; -pub const PR_FP_MODE_FR: u32 = 1; -pub const PR_FP_MODE_FRE: u32 = 2; -pub const PR_CAP_AMBIENT: u32 = 47; -pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; -pub const PR_CAP_AMBIENT_RAISE: u32 = 2; -pub const PR_CAP_AMBIENT_LOWER: u32 = 3; -pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; -pub const PR_SVE_SET_VL: u32 = 50; -pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SVE_GET_VL: u32 = 51; -pub const PR_SVE_VL_LEN_MASK: u32 = 65535; -pub const PR_SVE_VL_INHERIT: u32 = 131072; -pub const PR_GET_SPECULATION_CTRL: u32 = 52; -pub const PR_SET_SPECULATION_CTRL: u32 = 53; -pub const PR_SPEC_STORE_BYPASS: u32 = 0; -pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; -pub const PR_SPEC_L1D_FLUSH: u32 = 2; -pub const PR_SPEC_NOT_AFFECTED: u32 = 0; -pub const PR_SPEC_PRCTL: u32 = 1; -pub const PR_SPEC_ENABLE: u32 = 2; -pub const PR_SPEC_DISABLE: u32 = 4; -pub const PR_SPEC_FORCE_DISABLE: u32 = 8; -pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; -pub const PR_PAC_RESET_KEYS: u32 = 54; -pub const PR_PAC_APIAKEY: u32 = 1; -pub const PR_PAC_APIBKEY: u32 = 2; -pub const PR_PAC_APDAKEY: u32 = 4; -pub const PR_PAC_APDBKEY: u32 = 8; -pub const PR_PAC_APGAKEY: u32 = 16; -pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; -pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; -pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; -pub const PR_MTE_TCF_NONE: u32 = 0; -pub const PR_MTE_TCF_SYNC: u32 = 2; -pub const PR_MTE_TCF_ASYNC: u32 = 4; -pub const PR_MTE_TCF_MASK: u32 = 6; -pub const PR_MTE_TAG_SHIFT: u32 = 3; -pub const PR_MTE_TAG_MASK: u32 = 524280; -pub const PR_MTE_TCF_SHIFT: u32 = 1; -pub const PR_SET_IO_FLUSHER: u32 = 57; -pub const PR_GET_IO_FLUSHER: u32 = 58; -pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; -pub const PR_SYS_DISPATCH_OFF: u32 = 0; -pub const PR_SYS_DISPATCH_ON: u32 = 1; -pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; -pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; -pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; -pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; -pub const PR_SCHED_CORE: u32 = 62; -pub const PR_SCHED_CORE_GET: u32 = 0; -pub const PR_SCHED_CORE_CREATE: u32 = 1; -pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; -pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; -pub const PR_SCHED_CORE_MAX: u32 = 4; -pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; -pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; -pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; -pub const PR_SME_SET_VL: u32 = 63; -pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SME_GET_VL: u32 = 64; -pub const PR_SME_VL_LEN_MASK: u32 = 65535; -pub const PR_SME_VL_INHERIT: u32 = 131072; -pub const PR_SET_MDWE: u32 = 65; -pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; -pub const PR_GET_MDWE: u32 = 66; -pub const PR_SET_VMA: u32 = 1398164801; -pub const PR_SET_VMA_ANON_NAME: u32 = 0; -pub const GRND_NONBLOCK: u32 = 1; -pub const GRND_RANDOM: u32 = 2; -pub const GRND_INSECURE: u32 = 4; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -pub const CLOCK_REALTIME: u32 = 0; -pub const CLOCK_MONOTONIC: u32 = 1; -pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; -pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; -pub const CLOCK_MONOTONIC_RAW: u32 = 4; -pub const CLOCK_REALTIME_COARSE: u32 = 5; -pub const CLOCK_MONOTONIC_COARSE: u32 = 6; -pub const CLOCK_BOOTTIME: u32 = 7; -pub const CLOCK_REALTIME_ALARM: u32 = 8; -pub const CLOCK_BOOTTIME_ALARM: u32 = 9; -pub const CLOCK_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const RUSAGE_SELF: u32 = 0; -pub const RUSAGE_CHILDREN: i32 = -1; -pub const RUSAGE_BOTH: i32 = -2; -pub const RUSAGE_THREAD: u32 = 1; -pub const RLIM64_INFINITY: i32 = -1; -pub const PRIO_MIN: i32 = -20; -pub const PRIO_MAX: u32 = 20; -pub const PRIO_PROCESS: u32 = 0; -pub const PRIO_PGRP: u32 = 1; -pub const PRIO_USER: u32 = 2; -pub const _STK_LIM: u32 = 8388608; -pub const MLOCK_LIMIT: u32 = 8388608; -pub const RLIMIT_CPU: u32 = 0; -pub const RLIMIT_FSIZE: u32 = 1; -pub const RLIMIT_DATA: u32 = 2; -pub const RLIMIT_STACK: u32 = 3; -pub const RLIMIT_CORE: u32 = 4; -pub const RLIMIT_RSS: u32 = 5; -pub const RLIMIT_NPROC: u32 = 6; -pub const RLIMIT_NOFILE: u32 = 7; -pub const RLIMIT_MEMLOCK: u32 = 8; -pub const RLIMIT_AS: u32 = 9; -pub const RLIMIT_LOCKS: u32 = 10; -pub const RLIMIT_SIGPENDING: u32 = 11; -pub const RLIMIT_MSGQUEUE: u32 = 12; -pub const RLIMIT_NICE: u32 = 13; -pub const RLIMIT_RTPRIO: u32 = 14; -pub const RLIMIT_RTTIME: u32 = 15; -pub const RLIM_NLIMITS: u32 = 16; -pub const RLIM_INFINITY: i32 = -1; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const _NSIG: u32 = 64; -pub const _NSIG_BPW: u32 = 64; -pub const _NSIG_WORDS: u32 = 1; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGBUS: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGUSR1: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGUSR2: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGSTKFLT: u32 = 16; -pub const SIGCHLD: u32 = 17; -pub const SIGCONT: u32 = 18; -pub const SIGSTOP: u32 = 19; -pub const SIGTSTP: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGURG: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGIO: u32 = 29; -pub const SIGPOLL: u32 = 29; -pub const SIGPWR: u32 = 30; -pub const SIGSYS: u32 = 31; -pub const SIGUNUSED: u32 = 31; -pub const SIGRTMIN: u32 = 32; -pub const SIGRTMAX: u32 = 64; -pub const SA_RESTORER: u32 = 67108864; -pub const MINSIGSTKSZ: u32 = 8192; -pub const SIGSTKSZ: u32 = 32768; -pub const SA_NOCLDSTOP: u32 = 1; -pub const SA_NOCLDWAIT: u32 = 2; -pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; -pub const SA_ONSTACK: u32 = 134217728; -pub const SA_RESTART: u32 = 268435456; -pub const SA_NODEFER: u32 = 1073741824; -pub const SA_RESETHAND: u32 = 2147483648; -pub const SA_NOMASK: u32 = 1073741824; -pub const SA_ONESHOT: u32 = 2147483648; -pub const SIG_BLOCK: u32 = 0; -pub const SIG_UNBLOCK: u32 = 1; -pub const SIG_SETMASK: u32 = 2; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; -pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const S_IFMT: u32 = 61440; -pub const S_IFSOCK: u32 = 49152; -pub const S_IFLNK: u32 = 40960; -pub const S_IFREG: u32 = 32768; -pub const S_IFBLK: u32 = 24576; -pub const S_IFDIR: u32 = 16384; -pub const S_IFCHR: u32 = 8192; -pub const S_IFIFO: u32 = 4096; -pub const S_ISUID: u32 = 2048; -pub const S_ISGID: u32 = 1024; -pub const S_ISVTX: u32 = 512; -pub const S_IRWXU: u32 = 448; -pub const S_IRUSR: u32 = 256; -pub const S_IWUSR: u32 = 128; -pub const S_IXUSR: u32 = 64; -pub const S_IRWXG: u32 = 56; -pub const S_IRGRP: u32 = 32; -pub const S_IWGRP: u32 = 16; -pub const S_IXGRP: u32 = 8; -pub const S_IRWXO: u32 = 7; -pub const S_IROTH: u32 = 4; -pub const S_IWOTH: u32 = 2; -pub const S_IXOTH: u32 = 1; -pub const STATX_TYPE: u32 = 1; -pub const STATX_MODE: u32 = 2; -pub const STATX_NLINK: u32 = 4; -pub const STATX_UID: u32 = 8; -pub const STATX_GID: u32 = 16; -pub const STATX_ATIME: u32 = 32; -pub const STATX_MTIME: u32 = 64; -pub const STATX_CTIME: u32 = 128; -pub const STATX_INO: u32 = 256; -pub const STATX_SIZE: u32 = 512; -pub const STATX_BLOCKS: u32 = 1024; -pub const STATX_BASIC_STATS: u32 = 2047; -pub const STATX_BTIME: u32 = 2048; -pub const STATX_MNT_ID: u32 = 4096; -pub const STATX_DIOALIGN: u32 = 8192; -pub const STATX__RESERVED: u32 = 2147483648; -pub const STATX_ALL: u32 = 4095; -pub const STATX_ATTR_COMPRESSED: u32 = 4; -pub const STATX_ATTR_IMMUTABLE: u32 = 16; -pub const STATX_ATTR_APPEND: u32 = 32; -pub const STATX_ATTR_NODUMP: u32 = 64; -pub const STATX_ATTR_ENCRYPTED: u32 = 2048; -pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; -pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; -pub const STATX_ATTR_VERITY: u32 = 1048576; -pub const STATX_ATTR_DAX: u32 = 2097152; -pub const SI_LOAD_SHIFT: u32 = 16; -pub const TCP_MSS_DEFAULT: u32 = 536; -pub const TCP_MSS_DESIRED: u32 = 1220; -pub const TCP_NODELAY: u32 = 1; -pub const TCP_MAXSEG: u32 = 2; -pub const TCP_CORK: u32 = 3; -pub const TCP_KEEPIDLE: u32 = 4; -pub const TCP_KEEPINTVL: u32 = 5; -pub const TCP_KEEPCNT: u32 = 6; -pub const TCP_SYNCNT: u32 = 7; -pub const TCP_LINGER2: u32 = 8; -pub const TCP_DEFER_ACCEPT: u32 = 9; -pub const TCP_WINDOW_CLAMP: u32 = 10; -pub const TCP_INFO: u32 = 11; -pub const TCP_QUICKACK: u32 = 12; -pub const TCP_CONGESTION: u32 = 13; -pub const TCP_MD5SIG: u32 = 14; -pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; -pub const TCP_THIN_DUPACK: u32 = 17; -pub const TCP_USER_TIMEOUT: u32 = 18; -pub const TCP_REPAIR: u32 = 19; -pub const TCP_REPAIR_QUEUE: u32 = 20; -pub const TCP_QUEUE_SEQ: u32 = 21; -pub const TCP_REPAIR_OPTIONS: u32 = 22; -pub const TCP_FASTOPEN: u32 = 23; -pub const TCP_TIMESTAMP: u32 = 24; -pub const TCP_NOTSENT_LOWAT: u32 = 25; -pub const TCP_CC_INFO: u32 = 26; -pub const TCP_SAVE_SYN: u32 = 27; -pub const TCP_SAVED_SYN: u32 = 28; -pub const TCP_REPAIR_WINDOW: u32 = 29; -pub const TCP_FASTOPEN_CONNECT: u32 = 30; -pub const TCP_ULP: u32 = 31; -pub const TCP_MD5SIG_EXT: u32 = 32; -pub const TCP_FASTOPEN_KEY: u32 = 33; -pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; -pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; -pub const TCP_INQ: u32 = 36; -pub const TCP_CM_INQ: u32 = 36; -pub const TCP_TX_DELAY: u32 = 37; -pub const TCP_REPAIR_ON: u32 = 1; -pub const TCP_REPAIR_OFF: u32 = 0; -pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; -pub const TCPI_OPT_TIMESTAMPS: u32 = 1; -pub const TCPI_OPT_SACK: u32 = 2; -pub const TCPI_OPT_WSCALE: u32 = 4; -pub const TCPI_OPT_ECN: u32 = 8; -pub const TCPI_OPT_ECN_SEEN: u32 = 16; -pub const TCPI_OPT_SYN_DATA: u32 = 32; -pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; -pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; -pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; -pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; -pub const TIOCM_LE: u32 = 1; -pub const TIOCM_DTR: u32 = 2; -pub const TIOCM_RTS: u32 = 4; -pub const TIOCM_ST: u32 = 8; -pub const TIOCM_SR: u32 = 16; -pub const TIOCM_CTS: u32 = 32; -pub const TIOCM_CAR: u32 = 64; -pub const TIOCM_RNG: u32 = 128; -pub const TIOCM_DSR: u32 = 256; -pub const TIOCM_CD: u32 = 64; -pub const TIOCM_RI: u32 = 128; -pub const TIOCM_OUT1: u32 = 8192; -pub const TIOCM_OUT2: u32 = 16384; -pub const TIOCM_LOOP: u32 = 32768; -pub const TIOCPKT_DATA: u32 = 0; -pub const TIOCPKT_FLUSHREAD: u32 = 1; -pub const TIOCPKT_FLUSHWRITE: u32 = 2; -pub const TIOCPKT_STOP: u32 = 4; -pub const TIOCPKT_START: u32 = 8; -pub const TIOCPKT_NOSTOP: u32 = 16; -pub const TIOCPKT_DOSTOP: u32 = 32; -pub const TIOCPKT_IOCTL: u32 = 64; -pub const TIOCSER_TEMT: u32 = 1; -pub const IGNBRK: u32 = 1; -pub const BRKINT: u32 = 2; -pub const IGNPAR: u32 = 4; -pub const PARMRK: u32 = 8; -pub const INPCK: u32 = 16; -pub const ISTRIP: u32 = 32; -pub const INLCR: u32 = 64; -pub const IGNCR: u32 = 128; -pub const ICRNL: u32 = 256; -pub const IXANY: u32 = 2048; -pub const OPOST: u32 = 1; -pub const OCRNL: u32 = 8; -pub const ONOCR: u32 = 16; -pub const ONLRET: u32 = 32; -pub const OFILL: u32 = 64; -pub const OFDEL: u32 = 128; -pub const B0: u32 = 0; -pub const B50: u32 = 1; -pub const B75: u32 = 2; -pub const B110: u32 = 3; -pub const B134: u32 = 4; -pub const B150: u32 = 5; -pub const B200: u32 = 6; -pub const B300: u32 = 7; -pub const B600: u32 = 8; -pub const B1200: u32 = 9; -pub const B1800: u32 = 10; -pub const B2400: u32 = 11; -pub const B4800: u32 = 12; -pub const B9600: u32 = 13; -pub const B19200: u32 = 14; -pub const B38400: u32 = 15; -pub const EXTA: u32 = 14; -pub const EXTB: u32 = 15; -pub const ADDRB: u32 = 536870912; -pub const CMSPAR: u32 = 1073741824; -pub const CRTSCTS: u32 = 2147483648; -pub const IBSHIFT: u32 = 16; -pub const TCOOFF: u32 = 0; -pub const TCOON: u32 = 1; -pub const TCIOFF: u32 = 2; -pub const TCION: u32 = 3; -pub const TCIFLUSH: u32 = 0; -pub const TCOFLUSH: u32 = 1; -pub const TCIOFLUSH: u32 = 2; -pub const NCCS: u32 = 19; -pub const VINTR: u32 = 0; -pub const VQUIT: u32 = 1; -pub const VERASE: u32 = 2; -pub const VKILL: u32 = 3; -pub const VEOF: u32 = 4; -pub const VMIN: u32 = 5; -pub const VEOL: u32 = 6; -pub const VTIME: u32 = 7; -pub const VEOL2: u32 = 8; -pub const VSWTC: u32 = 9; -pub const VWERASE: u32 = 10; -pub const VREPRINT: u32 = 11; -pub const VSUSP: u32 = 12; -pub const VSTART: u32 = 13; -pub const VSTOP: u32 = 14; -pub const VLNEXT: u32 = 15; -pub const VDISCARD: u32 = 16; -pub const IXON: u32 = 512; -pub const IXOFF: u32 = 1024; -pub const IUCLC: u32 = 4096; -pub const IMAXBEL: u32 = 8192; -pub const IUTF8: u32 = 16384; -pub const ONLCR: u32 = 2; -pub const OLCUC: u32 = 4; -pub const NLDLY: u32 = 768; -pub const NL0: u32 = 0; -pub const NL1: u32 = 256; -pub const NL2: u32 = 512; -pub const NL3: u32 = 768; -pub const TABDLY: u32 = 3072; -pub const TAB0: u32 = 0; -pub const TAB1: u32 = 1024; -pub const TAB2: u32 = 2048; -pub const TAB3: u32 = 3072; -pub const XTABS: u32 = 3072; -pub const CRDLY: u32 = 12288; -pub const CR0: u32 = 0; -pub const CR1: u32 = 4096; -pub const CR2: u32 = 8192; -pub const CR3: u32 = 12288; -pub const FFDLY: u32 = 16384; -pub const FF0: u32 = 0; -pub const FF1: u32 = 16384; -pub const BSDLY: u32 = 32768; -pub const BS0: u32 = 0; -pub const BS1: u32 = 32768; -pub const VTDLY: u32 = 65536; -pub const VT0: u32 = 0; -pub const VT1: u32 = 65536; -pub const CBAUD: u32 = 255; -pub const CBAUDEX: u32 = 0; -pub const BOTHER: u32 = 31; -pub const B57600: u32 = 16; -pub const B115200: u32 = 17; -pub const B230400: u32 = 18; -pub const B460800: u32 = 19; -pub const B500000: u32 = 20; -pub const B576000: u32 = 21; -pub const B921600: u32 = 22; -pub const B1000000: u32 = 23; -pub const B1152000: u32 = 24; -pub const B1500000: u32 = 25; -pub const B2000000: u32 = 26; -pub const B2500000: u32 = 27; -pub const B3000000: u32 = 28; -pub const B3500000: u32 = 29; -pub const B4000000: u32 = 30; -pub const CSIZE: u32 = 768; -pub const CS5: u32 = 0; -pub const CS6: u32 = 256; -pub const CS7: u32 = 512; -pub const CS8: u32 = 768; -pub const CSTOPB: u32 = 1024; -pub const CREAD: u32 = 2048; -pub const PARENB: u32 = 4096; -pub const PARODD: u32 = 8192; -pub const HUPCL: u32 = 16384; -pub const CLOCAL: u32 = 32768; -pub const CIBAUD: u32 = 16711680; -pub const ISIG: u32 = 128; -pub const ICANON: u32 = 256; -pub const XCASE: u32 = 16384; -pub const ECHO: u32 = 8; -pub const ECHOE: u32 = 2; -pub const ECHOK: u32 = 4; -pub const ECHONL: u32 = 16; -pub const NOFLSH: u32 = 2147483648; -pub const TOSTOP: u32 = 4194304; -pub const ECHOCTL: u32 = 64; -pub const ECHOPRT: u32 = 32; -pub const ECHOKE: u32 = 1; -pub const FLUSHO: u32 = 8388608; -pub const PENDIN: u32 = 536870912; -pub const IEXTEN: u32 = 1024; -pub const EXTPROC: u32 = 268435456; -pub const TCSANOW: u32 = 0; -pub const TCSADRAIN: u32 = 1; -pub const TCSAFLUSH: u32 = 2; -pub const NCC: u32 = 10; -pub const _VINTR: u32 = 0; -pub const _VQUIT: u32 = 1; -pub const _VERASE: u32 = 2; -pub const _VKILL: u32 = 3; -pub const _VEOF: u32 = 4; -pub const _VMIN: u32 = 5; -pub const _VEOL: u32 = 6; -pub const _VTIME: u32 = 7; -pub const _VEOL2: u32 = 8; -pub const _VSWTC: u32 = 9; -pub const UIO_FASTIOV: u32 = 8; -pub const UIO_MAXIOV: u32 = 1024; -pub const UNIX_PATH_MAX: u32 = 108; -pub const __NR_restart_syscall: u32 = 0; -pub const __NR_exit: u32 = 1; -pub const __NR_fork: u32 = 2; -pub const __NR_read: u32 = 3; -pub const __NR_write: u32 = 4; -pub const __NR_open: u32 = 5; -pub const __NR_close: u32 = 6; -pub const __NR_waitpid: u32 = 7; -pub const __NR_creat: u32 = 8; -pub const __NR_link: u32 = 9; -pub const __NR_unlink: u32 = 10; -pub const __NR_execve: u32 = 11; -pub const __NR_chdir: u32 = 12; -pub const __NR_time: u32 = 13; -pub const __NR_mknod: u32 = 14; -pub const __NR_chmod: u32 = 15; -pub const __NR_lchown: u32 = 16; -pub const __NR_break: u32 = 17; -pub const __NR_oldstat: u32 = 18; -pub const __NR_lseek: u32 = 19; -pub const __NR_getpid: u32 = 20; -pub const __NR_mount: u32 = 21; -pub const __NR_umount: u32 = 22; -pub const __NR_setuid: u32 = 23; -pub const __NR_getuid: u32 = 24; -pub const __NR_stime: u32 = 25; -pub const __NR_ptrace: u32 = 26; -pub const __NR_alarm: u32 = 27; -pub const __NR_oldfstat: u32 = 28; -pub const __NR_pause: u32 = 29; -pub const __NR_utime: u32 = 30; -pub const __NR_stty: u32 = 31; -pub const __NR_gtty: u32 = 32; -pub const __NR_access: u32 = 33; -pub const __NR_nice: u32 = 34; -pub const __NR_ftime: u32 = 35; -pub const __NR_sync: u32 = 36; -pub const __NR_kill: u32 = 37; -pub const __NR_rename: u32 = 38; -pub const __NR_mkdir: u32 = 39; -pub const __NR_rmdir: u32 = 40; -pub const __NR_dup: u32 = 41; -pub const __NR_pipe: u32 = 42; -pub const __NR_times: u32 = 43; -pub const __NR_prof: u32 = 44; -pub const __NR_brk: u32 = 45; -pub const __NR_setgid: u32 = 46; -pub const __NR_getgid: u32 = 47; -pub const __NR_signal: u32 = 48; -pub const __NR_geteuid: u32 = 49; -pub const __NR_getegid: u32 = 50; -pub const __NR_acct: u32 = 51; -pub const __NR_umount2: u32 = 52; -pub const __NR_lock: u32 = 53; -pub const __NR_ioctl: u32 = 54; -pub const __NR_fcntl: u32 = 55; -pub const __NR_mpx: u32 = 56; -pub const __NR_setpgid: u32 = 57; -pub const __NR_ulimit: u32 = 58; -pub const __NR_oldolduname: u32 = 59; -pub const __NR_umask: u32 = 60; -pub const __NR_chroot: u32 = 61; -pub const __NR_ustat: u32 = 62; -pub const __NR_dup2: u32 = 63; -pub const __NR_getppid: u32 = 64; -pub const __NR_getpgrp: u32 = 65; -pub const __NR_setsid: u32 = 66; -pub const __NR_sigaction: u32 = 67; -pub const __NR_sgetmask: u32 = 68; -pub const __NR_ssetmask: u32 = 69; -pub const __NR_setreuid: u32 = 70; -pub const __NR_setregid: u32 = 71; -pub const __NR_sigsuspend: u32 = 72; -pub const __NR_sigpending: u32 = 73; -pub const __NR_sethostname: u32 = 74; -pub const __NR_setrlimit: u32 = 75; -pub const __NR_getrlimit: u32 = 76; -pub const __NR_getrusage: u32 = 77; -pub const __NR_gettimeofday: u32 = 78; -pub const __NR_settimeofday: u32 = 79; -pub const __NR_getgroups: u32 = 80; -pub const __NR_setgroups: u32 = 81; -pub const __NR_select: u32 = 82; -pub const __NR_symlink: u32 = 83; -pub const __NR_oldlstat: u32 = 84; -pub const __NR_readlink: u32 = 85; -pub const __NR_uselib: u32 = 86; -pub const __NR_swapon: u32 = 87; -pub const __NR_reboot: u32 = 88; -pub const __NR_readdir: u32 = 89; -pub const __NR_mmap: u32 = 90; -pub const __NR_munmap: u32 = 91; -pub const __NR_truncate: u32 = 92; -pub const __NR_ftruncate: u32 = 93; -pub const __NR_fchmod: u32 = 94; -pub const __NR_fchown: u32 = 95; -pub const __NR_getpriority: u32 = 96; -pub const __NR_setpriority: u32 = 97; -pub const __NR_profil: u32 = 98; -pub const __NR_statfs: u32 = 99; -pub const __NR_fstatfs: u32 = 100; -pub const __NR_ioperm: u32 = 101; -pub const __NR_socketcall: u32 = 102; -pub const __NR_syslog: u32 = 103; -pub const __NR_setitimer: u32 = 104; -pub const __NR_getitimer: u32 = 105; -pub const __NR_stat: u32 = 106; -pub const __NR_lstat: u32 = 107; -pub const __NR_fstat: u32 = 108; -pub const __NR_olduname: u32 = 109; -pub const __NR_iopl: u32 = 110; -pub const __NR_vhangup: u32 = 111; -pub const __NR_idle: u32 = 112; -pub const __NR_vm86: u32 = 113; -pub const __NR_wait4: u32 = 114; -pub const __NR_swapoff: u32 = 115; -pub const __NR_sysinfo: u32 = 116; -pub const __NR_ipc: u32 = 117; -pub const __NR_fsync: u32 = 118; -pub const __NR_sigreturn: u32 = 119; -pub const __NR_clone: u32 = 120; -pub const __NR_setdomainname: u32 = 121; -pub const __NR_uname: u32 = 122; -pub const __NR_modify_ldt: u32 = 123; -pub const __NR_adjtimex: u32 = 124; -pub const __NR_mprotect: u32 = 125; -pub const __NR_sigprocmask: u32 = 126; -pub const __NR_create_module: u32 = 127; -pub const __NR_init_module: u32 = 128; -pub const __NR_delete_module: u32 = 129; -pub const __NR_get_kernel_syms: u32 = 130; -pub const __NR_quotactl: u32 = 131; -pub const __NR_getpgid: u32 = 132; -pub const __NR_fchdir: u32 = 133; -pub const __NR_bdflush: u32 = 134; -pub const __NR_sysfs: u32 = 135; -pub const __NR_personality: u32 = 136; -pub const __NR_afs_syscall: u32 = 137; -pub const __NR_setfsuid: u32 = 138; -pub const __NR_setfsgid: u32 = 139; -pub const __NR__llseek: u32 = 140; -pub const __NR_getdents: u32 = 141; -pub const __NR__newselect: u32 = 142; -pub const __NR_flock: u32 = 143; -pub const __NR_msync: u32 = 144; -pub const __NR_readv: u32 = 145; -pub const __NR_writev: u32 = 146; -pub const __NR_getsid: u32 = 147; -pub const __NR_fdatasync: u32 = 148; -pub const __NR__sysctl: u32 = 149; -pub const __NR_mlock: u32 = 150; -pub const __NR_munlock: u32 = 151; -pub const __NR_mlockall: u32 = 152; -pub const __NR_munlockall: u32 = 153; -pub const __NR_sched_setparam: u32 = 154; -pub const __NR_sched_getparam: u32 = 155; -pub const __NR_sched_setscheduler: u32 = 156; -pub const __NR_sched_getscheduler: u32 = 157; -pub const __NR_sched_yield: u32 = 158; -pub const __NR_sched_get_priority_max: u32 = 159; -pub const __NR_sched_get_priority_min: u32 = 160; -pub const __NR_sched_rr_get_interval: u32 = 161; -pub const __NR_nanosleep: u32 = 162; -pub const __NR_mremap: u32 = 163; -pub const __NR_setresuid: u32 = 164; -pub const __NR_getresuid: u32 = 165; -pub const __NR_query_module: u32 = 166; -pub const __NR_poll: u32 = 167; -pub const __NR_nfsservctl: u32 = 168; -pub const __NR_setresgid: u32 = 169; -pub const __NR_getresgid: u32 = 170; -pub const __NR_prctl: u32 = 171; -pub const __NR_rt_sigreturn: u32 = 172; -pub const __NR_rt_sigaction: u32 = 173; -pub const __NR_rt_sigprocmask: u32 = 174; -pub const __NR_rt_sigpending: u32 = 175; -pub const __NR_rt_sigtimedwait: u32 = 176; -pub const __NR_rt_sigqueueinfo: u32 = 177; -pub const __NR_rt_sigsuspend: u32 = 178; -pub const __NR_pread64: u32 = 179; -pub const __NR_pwrite64: u32 = 180; -pub const __NR_chown: u32 = 181; -pub const __NR_getcwd: u32 = 182; -pub const __NR_capget: u32 = 183; -pub const __NR_capset: u32 = 184; -pub const __NR_sigaltstack: u32 = 185; -pub const __NR_sendfile: u32 = 186; -pub const __NR_getpmsg: u32 = 187; -pub const __NR_putpmsg: u32 = 188; -pub const __NR_vfork: u32 = 189; -pub const __NR_ugetrlimit: u32 = 190; -pub const __NR_readahead: u32 = 191; -pub const __NR_pciconfig_read: u32 = 198; -pub const __NR_pciconfig_write: u32 = 199; -pub const __NR_pciconfig_iobase: u32 = 200; -pub const __NR_multiplexer: u32 = 201; -pub const __NR_getdents64: u32 = 202; -pub const __NR_pivot_root: u32 = 203; -pub const __NR_madvise: u32 = 205; -pub const __NR_mincore: u32 = 206; -pub const __NR_gettid: u32 = 207; -pub const __NR_tkill: u32 = 208; -pub const __NR_setxattr: u32 = 209; -pub const __NR_lsetxattr: u32 = 210; -pub const __NR_fsetxattr: u32 = 211; -pub const __NR_getxattr: u32 = 212; -pub const __NR_lgetxattr: u32 = 213; -pub const __NR_fgetxattr: u32 = 214; -pub const __NR_listxattr: u32 = 215; -pub const __NR_llistxattr: u32 = 216; -pub const __NR_flistxattr: u32 = 217; -pub const __NR_removexattr: u32 = 218; -pub const __NR_lremovexattr: u32 = 219; -pub const __NR_fremovexattr: u32 = 220; -pub const __NR_futex: u32 = 221; -pub const __NR_sched_setaffinity: u32 = 222; -pub const __NR_sched_getaffinity: u32 = 223; -pub const __NR_tuxcall: u32 = 225; -pub const __NR_io_setup: u32 = 227; -pub const __NR_io_destroy: u32 = 228; -pub const __NR_io_getevents: u32 = 229; -pub const __NR_io_submit: u32 = 230; -pub const __NR_io_cancel: u32 = 231; -pub const __NR_set_tid_address: u32 = 232; -pub const __NR_fadvise64: u32 = 233; -pub const __NR_exit_group: u32 = 234; -pub const __NR_lookup_dcookie: u32 = 235; -pub const __NR_epoll_create: u32 = 236; -pub const __NR_epoll_ctl: u32 = 237; -pub const __NR_epoll_wait: u32 = 238; -pub const __NR_remap_file_pages: u32 = 239; -pub const __NR_timer_create: u32 = 240; -pub const __NR_timer_settime: u32 = 241; -pub const __NR_timer_gettime: u32 = 242; -pub const __NR_timer_getoverrun: u32 = 243; -pub const __NR_timer_delete: u32 = 244; -pub const __NR_clock_settime: u32 = 245; -pub const __NR_clock_gettime: u32 = 246; -pub const __NR_clock_getres: u32 = 247; -pub const __NR_clock_nanosleep: u32 = 248; -pub const __NR_swapcontext: u32 = 249; -pub const __NR_tgkill: u32 = 250; -pub const __NR_utimes: u32 = 251; -pub const __NR_statfs64: u32 = 252; -pub const __NR_fstatfs64: u32 = 253; -pub const __NR_rtas: u32 = 255; -pub const __NR_sys_debug_setcontext: u32 = 256; -pub const __NR_migrate_pages: u32 = 258; -pub const __NR_mbind: u32 = 259; -pub const __NR_get_mempolicy: u32 = 260; -pub const __NR_set_mempolicy: u32 = 261; -pub const __NR_mq_open: u32 = 262; -pub const __NR_mq_unlink: u32 = 263; -pub const __NR_mq_timedsend: u32 = 264; -pub const __NR_mq_timedreceive: u32 = 265; -pub const __NR_mq_notify: u32 = 266; -pub const __NR_mq_getsetattr: u32 = 267; -pub const __NR_kexec_load: u32 = 268; -pub const __NR_add_key: u32 = 269; -pub const __NR_request_key: u32 = 270; -pub const __NR_keyctl: u32 = 271; -pub const __NR_waitid: u32 = 272; -pub const __NR_ioprio_set: u32 = 273; -pub const __NR_ioprio_get: u32 = 274; -pub const __NR_inotify_init: u32 = 275; -pub const __NR_inotify_add_watch: u32 = 276; -pub const __NR_inotify_rm_watch: u32 = 277; -pub const __NR_spu_run: u32 = 278; -pub const __NR_spu_create: u32 = 279; -pub const __NR_pselect6: u32 = 280; -pub const __NR_ppoll: u32 = 281; -pub const __NR_unshare: u32 = 282; -pub const __NR_splice: u32 = 283; -pub const __NR_tee: u32 = 284; -pub const __NR_vmsplice: u32 = 285; -pub const __NR_openat: u32 = 286; -pub const __NR_mkdirat: u32 = 287; -pub const __NR_mknodat: u32 = 288; -pub const __NR_fchownat: u32 = 289; -pub const __NR_futimesat: u32 = 290; -pub const __NR_newfstatat: u32 = 291; -pub const __NR_unlinkat: u32 = 292; -pub const __NR_renameat: u32 = 293; -pub const __NR_linkat: u32 = 294; -pub const __NR_symlinkat: u32 = 295; -pub const __NR_readlinkat: u32 = 296; -pub const __NR_fchmodat: u32 = 297; -pub const __NR_faccessat: u32 = 298; -pub const __NR_get_robust_list: u32 = 299; -pub const __NR_set_robust_list: u32 = 300; -pub const __NR_move_pages: u32 = 301; -pub const __NR_getcpu: u32 = 302; -pub const __NR_epoll_pwait: u32 = 303; -pub const __NR_utimensat: u32 = 304; -pub const __NR_signalfd: u32 = 305; -pub const __NR_timerfd_create: u32 = 306; -pub const __NR_eventfd: u32 = 307; -pub const __NR_sync_file_range2: u32 = 308; -pub const __NR_fallocate: u32 = 309; -pub const __NR_subpage_prot: u32 = 310; -pub const __NR_timerfd_settime: u32 = 311; -pub const __NR_timerfd_gettime: u32 = 312; -pub const __NR_signalfd4: u32 = 313; -pub const __NR_eventfd2: u32 = 314; -pub const __NR_epoll_create1: u32 = 315; -pub const __NR_dup3: u32 = 316; -pub const __NR_pipe2: u32 = 317; -pub const __NR_inotify_init1: u32 = 318; -pub const __NR_perf_event_open: u32 = 319; -pub const __NR_preadv: u32 = 320; -pub const __NR_pwritev: u32 = 321; -pub const __NR_rt_tgsigqueueinfo: u32 = 322; -pub const __NR_fanotify_init: u32 = 323; -pub const __NR_fanotify_mark: u32 = 324; -pub const __NR_prlimit64: u32 = 325; -pub const __NR_socket: u32 = 326; -pub const __NR_bind: u32 = 327; -pub const __NR_connect: u32 = 328; -pub const __NR_listen: u32 = 329; -pub const __NR_accept: u32 = 330; -pub const __NR_getsockname: u32 = 331; -pub const __NR_getpeername: u32 = 332; -pub const __NR_socketpair: u32 = 333; -pub const __NR_send: u32 = 334; -pub const __NR_sendto: u32 = 335; -pub const __NR_recv: u32 = 336; -pub const __NR_recvfrom: u32 = 337; -pub const __NR_shutdown: u32 = 338; -pub const __NR_setsockopt: u32 = 339; -pub const __NR_getsockopt: u32 = 340; -pub const __NR_sendmsg: u32 = 341; -pub const __NR_recvmsg: u32 = 342; -pub const __NR_recvmmsg: u32 = 343; -pub const __NR_accept4: u32 = 344; -pub const __NR_name_to_handle_at: u32 = 345; -pub const __NR_open_by_handle_at: u32 = 346; -pub const __NR_clock_adjtime: u32 = 347; -pub const __NR_syncfs: u32 = 348; -pub const __NR_sendmmsg: u32 = 349; -pub const __NR_setns: u32 = 350; -pub const __NR_process_vm_readv: u32 = 351; -pub const __NR_process_vm_writev: u32 = 352; -pub const __NR_finit_module: u32 = 353; -pub const __NR_kcmp: u32 = 354; -pub const __NR_sched_setattr: u32 = 355; -pub const __NR_sched_getattr: u32 = 356; -pub const __NR_renameat2: u32 = 357; -pub const __NR_seccomp: u32 = 358; -pub const __NR_getrandom: u32 = 359; -pub const __NR_memfd_create: u32 = 360; -pub const __NR_bpf: u32 = 361; -pub const __NR_execveat: u32 = 362; -pub const __NR_switch_endian: u32 = 363; -pub const __NR_userfaultfd: u32 = 364; -pub const __NR_membarrier: u32 = 365; -pub const __NR_mlock2: u32 = 378; -pub const __NR_copy_file_range: u32 = 379; -pub const __NR_preadv2: u32 = 380; -pub const __NR_pwritev2: u32 = 381; -pub const __NR_kexec_file_load: u32 = 382; -pub const __NR_statx: u32 = 383; -pub const __NR_pkey_alloc: u32 = 384; -pub const __NR_pkey_free: u32 = 385; -pub const __NR_pkey_mprotect: u32 = 386; -pub const __NR_rseq: u32 = 387; -pub const __NR_io_pgetevents: u32 = 388; -pub const __NR_semtimedop: u32 = 392; -pub const __NR_semget: u32 = 393; -pub const __NR_semctl: u32 = 394; -pub const __NR_shmget: u32 = 395; -pub const __NR_shmctl: u32 = 396; -pub const __NR_shmat: u32 = 397; -pub const __NR_shmdt: u32 = 398; -pub const __NR_msgget: u32 = 399; -pub const __NR_msgsnd: u32 = 400; -pub const __NR_msgrcv: u32 = 401; -pub const __NR_msgctl: u32 = 402; -pub const __NR_pidfd_send_signal: u32 = 424; -pub const __NR_io_uring_setup: u32 = 425; -pub const __NR_io_uring_enter: u32 = 426; -pub const __NR_io_uring_register: u32 = 427; -pub const __NR_open_tree: u32 = 428; -pub const __NR_move_mount: u32 = 429; -pub const __NR_fsopen: u32 = 430; -pub const __NR_fsconfig: u32 = 431; -pub const __NR_fsmount: u32 = 432; -pub const __NR_fspick: u32 = 433; -pub const __NR_pidfd_open: u32 = 434; -pub const __NR_clone3: u32 = 435; -pub const __NR_close_range: u32 = 436; -pub const __NR_openat2: u32 = 437; -pub const __NR_pidfd_getfd: u32 = 438; -pub const __NR_faccessat2: u32 = 439; -pub const __NR_process_madvise: u32 = 440; -pub const __NR_epoll_pwait2: u32 = 441; -pub const __NR_mount_setattr: u32 = 442; -pub const __NR_quotactl_fd: u32 = 443; -pub const __NR_landlock_create_ruleset: u32 = 444; -pub const __NR_landlock_add_rule: u32 = 445; -pub const __NR_landlock_restrict_self: u32 = 446; -pub const __NR_process_mrelease: u32 = 448; -pub const __NR_futex_waitv: u32 = 449; -pub const __NR_set_mempolicy_home_node: u32 = 450; -pub const __OLD_UTS_LEN: u32 = 8; -pub const __NEW_UTS_LEN: u32 = 64; -pub const WNOHANG: u32 = 1; -pub const WUNTRACED: u32 = 2; -pub const WSTOPPED: u32 = 2; -pub const WEXITED: u32 = 4; -pub const WCONTINUED: u32 = 8; -pub const WNOWAIT: u32 = 16777216; -pub const __WNOTHREAD: u32 = 536870912; -pub const __WALL: u32 = 1073741824; -pub const __WCLONE: u32 = 2147483648; -pub const P_ALL: u32 = 0; -pub const P_PID: u32 = 1; -pub const P_PGID: u32 = 2; -pub const P_PIDFD: u32 = 3; -pub const XATTR_CREATE: u32 = 1; -pub const XATTR_REPLACE: u32 = 2; -pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0"; -pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0"; -pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0"; -pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0"; -pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0"; -pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0"; -pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0"; -pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0"; -pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0"; -pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0"; -pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0"; -pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0"; -pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0"; -pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0"; -pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0"; -pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0"; -pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0"; -pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0"; -pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0"; -pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0"; -pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0"; -pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0"; -pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0"; -pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0"; -pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0"; -pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0"; -pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0"; -pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0"; -pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0"; -pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0"; -pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0"; -pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0"; -pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0"; -pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0"; -pub const MFD_CLOEXEC: u32 = 1; -pub const MFD_ALLOW_SEALING: u32 = 2; -pub const MFD_HUGETLB: u32 = 4; -pub const MFD_NOEXEC_SEAL: u32 = 8; -pub const MFD_EXEC: u32 = 16; -pub const MFD_HUGE_SHIFT: u32 = 26; -pub const MFD_HUGE_MASK: u32 = 63; -pub const MFD_HUGE_64KB: u32 = 1073741824; -pub const MFD_HUGE_512KB: u32 = 1275068416; -pub const MFD_HUGE_1MB: u32 = 1342177280; -pub const MFD_HUGE_2MB: u32 = 1409286144; -pub const MFD_HUGE_8MB: u32 = 1543503872; -pub const MFD_HUGE_16MB: u32 = 1610612736; -pub const MFD_HUGE_32MB: u32 = 1677721600; -pub const MFD_HUGE_256MB: u32 = 1879048192; -pub const MFD_HUGE_512MB: u32 = 1946157056; -pub const MFD_HUGE_1GB: u32 = 2013265920; -pub const MFD_HUGE_2GB: u32 = 2080374784; -pub const MFD_HUGE_16GB: u32 = 2281701376; -pub const TFD_TIMER_ABSTIME: u32 = 1; -pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; -pub const TFD_CLOEXEC: u32 = 524288; -pub const TFD_NONBLOCK: u32 = 2048; -pub const USERFAULTFD_IOC: u32 = 170; -pub const _UFFDIO_REGISTER: u32 = 0; -pub const _UFFDIO_UNREGISTER: u32 = 1; -pub const _UFFDIO_WAKE: u32 = 2; -pub const _UFFDIO_COPY: u32 = 3; -pub const _UFFDIO_ZEROPAGE: u32 = 4; -pub const _UFFDIO_WRITEPROTECT: u32 = 6; -pub const _UFFDIO_CONTINUE: u32 = 7; -pub const _UFFDIO_API: u32 = 63; -pub const UFFDIO: u32 = 170; -pub const UFFD_EVENT_PAGEFAULT: u32 = 18; -pub const UFFD_EVENT_FORK: u32 = 19; -pub const UFFD_EVENT_REMAP: u32 = 20; -pub const UFFD_EVENT_REMOVE: u32 = 21; -pub const UFFD_EVENT_UNMAP: u32 = 22; -pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; -pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; -pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; -pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; -pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; -pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; -pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; -pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; -pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; -pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; -pub const UFFD_FEATURE_SIGBUS: u32 = 128; -pub const UFFD_FEATURE_THREAD_ID: u32 = 256; -pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; -pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; -pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; -pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; -pub const UFFD_USER_MODE_ONLY: u32 = 1; -pub const IORING_FILE_INDEX_ALLOC: i32 = -1; -pub const IORING_SETUP_IOPOLL: u32 = 1; -pub const IORING_SETUP_SQPOLL: u32 = 2; -pub const IORING_SETUP_SQ_AFF: u32 = 4; -pub const IORING_SETUP_CQSIZE: u32 = 8; -pub const IORING_SETUP_CLAMP: u32 = 16; -pub const IORING_SETUP_ATTACH_WQ: u32 = 32; -pub const IORING_SETUP_R_DISABLED: u32 = 64; -pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; -pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; -pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; -pub const IORING_SETUP_SQE128: u32 = 1024; -pub const IORING_SETUP_CQE32: u32 = 2048; -pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; -pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; -pub const IORING_URING_CMD_FIXED: u32 = 1; -pub const IORING_FSYNC_DATASYNC: u32 = 1; -pub const IORING_TIMEOUT_ABS: u32 = 1; -pub const IORING_TIMEOUT_UPDATE: u32 = 2; -pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; -pub const IORING_TIMEOUT_REALTIME: u32 = 8; -pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; -pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; -pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; -pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; -pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; -pub const IORING_POLL_ADD_MULTI: u32 = 1; -pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; -pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; -pub const IORING_POLL_ADD_LEVEL: u32 = 8; -pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; -pub const IORING_ASYNC_CANCEL_FD: u32 = 2; -pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; -pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; -pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; -pub const IORING_RECV_MULTISHOT: u32 = 2; -pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; -pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; -pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; -pub const IORING_ACCEPT_MULTISHOT: u32 = 1; -pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; -pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; -pub const IORING_CQE_F_BUFFER: u32 = 1; -pub const IORING_CQE_F_MORE: u32 = 2; -pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; -pub const IORING_CQE_F_NOTIF: u32 = 8; -pub const IORING_OFF_SQ_RING: u32 = 0; -pub const IORING_OFF_CQ_RING: u32 = 134217728; -pub const IORING_OFF_SQES: u32 = 268435456; -pub const IORING_SQ_NEED_WAKEUP: u32 = 1; -pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; -pub const IORING_SQ_TASKRUN: u32 = 4; -pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; -pub const IORING_ENTER_GETEVENTS: u32 = 1; -pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; -pub const IORING_ENTER_SQ_WAIT: u32 = 4; -pub const IORING_ENTER_EXT_ARG: u32 = 8; -pub const IORING_ENTER_REGISTERED_RING: u32 = 16; -pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; -pub const IORING_FEAT_NODROP: u32 = 2; -pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; -pub const IORING_FEAT_RW_CUR_POS: u32 = 8; -pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; -pub const IORING_FEAT_FAST_POLL: u32 = 32; -pub const IORING_FEAT_POLL_32BITS: u32 = 64; -pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; -pub const IORING_FEAT_EXT_ARG: u32 = 256; -pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; -pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; -pub const IORING_FEAT_CQE_SKIP: u32 = 2048; -pub const IORING_FEAT_LINKED_FILE: u32 = 4096; -pub const IORING_FEAT_REG_REG_RING: u32 = 8192; -pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; -pub const IORING_REGISTER_FILES_SKIP: i32 = -2; -pub const IO_URING_OP_SUPPORTED: u32 = 1; -pub const DT_UNKNOWN: u32 = 0; -pub const DT_FIFO: u32 = 1; -pub const DT_CHR: u32 = 2; -pub const DT_DIR: u32 = 4; -pub const DT_BLK: u32 = 6; -pub const DT_REG: u32 = 8; -pub const DT_LNK: u32 = 10; -pub const DT_SOCK: u32 = 12; -pub const SHUT_RD: u32 = 0; -pub const SHUT_WR: u32 = 1; -pub const SHUT_RDWR: u32 = 2; -pub const STAT_HAVE_NSEC: u32 = 1; -pub const SOCK_STREAM: u32 = 1; -pub const SOCK_DGRAM: u32 = 2; -pub const SOCK_RAW: u32 = 3; -pub const SOCK_RDM: u32 = 4; -pub const SOCK_SEQPACKET: u32 = 5; -pub const F_OK: u32 = 0; -pub const R_OK: u32 = 4; -pub const W_OK: u32 = 2; -pub const X_OK: u32 = 1; -pub const UTIME_NOW: u32 = 1073741823; -pub const UTIME_OMIT: u32 = 1073741822; -pub const MSG_DONTWAIT: u32 = 64; -pub const AF_UNSPEC: u32 = 0; -pub const AF_UNIX: u32 = 1; -pub const AF_INET: u32 = 2; -pub const AF_AX25: u32 = 3; -pub const AF_IPX: u32 = 4; -pub const AF_APPLETALK: u32 = 5; -pub const AF_NETROM: u32 = 6; -pub const AF_BRIDGE: u32 = 7; -pub const AF_ATMPVC: u32 = 8; -pub const AF_X25: u32 = 9; -pub const AF_INET6: u32 = 10; -pub const AF_ROSE: u32 = 11; -pub const AF_DECnet: u32 = 12; -pub const AF_NETBEUI: u32 = 13; -pub const AF_SECURITY: u32 = 14; -pub const AF_KEY: u32 = 15; -pub const AF_NETLINK: u32 = 16; -pub const AF_PACKET: u32 = 17; -pub const AF_ASH: u32 = 18; -pub const AF_ECONET: u32 = 19; -pub const AF_ATMSVC: u32 = 20; -pub const AF_RDS: u32 = 21; -pub const AF_SNA: u32 = 22; -pub const AF_IRDA: u32 = 23; -pub const AF_PPPOX: u32 = 24; -pub const AF_WANPIPE: u32 = 25; -pub const AF_LLC: u32 = 26; -pub const AF_CAN: u32 = 29; -pub const AF_TIPC: u32 = 30; -pub const AF_BLUETOOTH: u32 = 31; -pub const AF_IUCV: u32 = 32; -pub const AF_RXRPC: u32 = 33; -pub const AF_ISDN: u32 = 34; -pub const AF_PHONET: u32 = 35; -pub const AF_IEEE802154: u32 = 36; -pub const AF_MAX: u32 = 37; -pub const MSG_OOB: u32 = 1; -pub const MSG_PEEK: u32 = 2; -pub const MSG_DONTROUTE: u32 = 4; -pub const MSG_CTRUNC: u32 = 8; -pub const MSG_PROBE: u32 = 16; -pub const MSG_TRUNC: u32 = 32; -pub const MSG_EOR: u32 = 128; -pub const MSG_WAITALL: u32 = 256; -pub const MSG_FIN: u32 = 512; -pub const MSG_SYN: u32 = 1024; -pub const MSG_CONFIRM: u32 = 2048; -pub const MSG_RST: u32 = 4096; -pub const MSG_ERRQUEUE: u32 = 8192; -pub const MSG_NOSIGNAL: u32 = 16384; -pub const MSG_MORE: u32 = 32768; -pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; -pub const STDIN_FILENO: u32 = 0; -pub const STDOUT_FILENO: u32 = 1; -pub const STDERR_FILENO: u32 = 2; -pub const RWF_HIPRI: u32 = 1; -pub const RWF_DSYNC: u32 = 2; -pub const RWF_SYNC: u32 = 4; -pub const RWF_NOWAIT: u32 = 8; -pub const RWF_APPEND: u32 = 16; -pub const EFD_SEMAPHORE: u32 = 1; -pub const EFD_CLOEXEC: u32 = 524288; -pub const EFD_NONBLOCK: u32 = 2048; -pub const EPOLLIN: u32 = 1; -pub const EPOLLPRI: u32 = 2; -pub const EPOLLOUT: u32 = 4; -pub const EPOLLERR: u32 = 8; -pub const EPOLLHUP: u32 = 16; -pub const EPOLLNVAL: u32 = 32; -pub const EPOLLRDNORM: u32 = 64; -pub const EPOLLRDBAND: u32 = 128; -pub const EPOLLWRNORM: u32 = 256; -pub const EPOLLWRBAND: u32 = 512; -pub const EPOLLMSG: u32 = 1024; -pub const EPOLLRDHUP: u32 = 8192; -pub const EPOLLEXCLUSIVE: u32 = 268435456; -pub const EPOLLWAKEUP: u32 = 536870912; -pub const EPOLLONESHOT: u32 = 1073741824; -pub const EPOLLET: u32 = 2147483648; -pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; -pub const TFD_CREATE_FLAGS: u32 = 526336; -pub const TFD_SETTIME_FLAGS: u32 = 1; -pub const SCM_RIGHTS: u32 = 1; -pub const SCM_CREDENTIALS: u32 = 2; -pub const SCM_SECURITY: u32 = 3; -pub const UFFD_API: u32 = 170; -pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; -pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; -pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; -pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; -pub const UFFDIO_COPY_MODE_WP: u32 = 2; -pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; -pub const SPLICE_F_MOVE: u32 = 1; -pub const SPLICE_F_NONBLOCK: u32 = 2; -pub const SPLICE_F_MORE: u32 = 4; -pub const SPLICE_F_GIFT: u32 = 8; -pub const MNT_FORCE: u32 = 1; -pub const MNT_DETACH: u32 = 2; -pub const MNT_EXPIRE: u32 = 4; -pub const UMOUNT_NOFOLLOW: u32 = 8; -pub const UMOUNT_UNUSED: u32 = 2147483648; -pub type size_t = crate::ctypes::c_ulong; -pub type ssize_t = crate::ctypes::c_long; -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_long; -pub type __u64 = crate::ctypes::c_ulong; -#[repr(C)] -#[repr(align(16))] -#[derive(Debug, Copy, Clone)] -pub struct __vector128 { -pub u: [__u32; 4usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 16usize], -} -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_old_dev_t = crate::ctypes::c_ulong; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_header_struct { -pub version: __u32, -pub pid: crate::ctypes::c_int, -} -pub type cap_user_header_t = *mut __user_cap_header_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_data_struct { -pub effective: __u32, -pub permitted: __u32, -pub inheritable: __u32, -} -pub type cap_user_data_t = *mut __user_cap_data_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data { -pub magic_etc: __le32, -pub data: [vfs_cap_data__bindgen_ty_1; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data { -pub magic_etc: __le32, -pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], -pub rootid: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct f_owner_ex { -pub type_: crate::ctypes::c_int, -pub pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_off_t, -pub l_len: __kernel_off_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock64 { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_loff_t, -pub l_len: __kernel_loff_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct open_how { -pub flags: __u64, -pub mode: __u64, -pub resolve: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct epoll_event { -pub events: __poll_t, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v1 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub master_key_descriptor: [__u8; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_key { -pub mode: __u32, -pub raw: [__u8; 64usize], -pub size: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v2 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub __reserved: [__u8; 4usize], -pub master_key_identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_get_policy_ex_arg { -pub policy_size: __u64, -pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { -pub version: __u8, -pub v1: fscrypt_policy_v1, -pub v2: fscrypt_policy_v2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_key_specifier { -pub type_: __u32, -pub __reserved: __u32, -pub u: fscrypt_key_specifier__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_key_specifier__bindgen_ty_1 { -pub __reserved: [__u8; 32usize], -pub descriptor: [__u8; 8usize], -pub identifier: [__u8; 16usize], +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, } #[repr(C)] #[derive(Debug)] @@ -2877,19 +236,6 @@ pub user_count: __u32, pub __out_reserved: [__u32; 13usize], } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum fsconfig_command { -FSCONFIG_SET_FLAG = 0, -FSCONFIG_SET_STRING = 1, -FSCONFIG_SET_BINARY = 2, -FSCONFIG_SET_PATH = 3, -FSCONFIG_SET_PATH_EMPTY = 4, -FSCONFIG_SET_FD = 5, -FSCONFIG_CMD_CREATE = 6, -FSCONFIG_CMD_RECONFIGURE = 7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct mount_attr { @@ -2956,7 +302,6 @@ pub fsx_cowextsize: __u32, pub fsx_pad: [crate::ctypes::c_uchar; 8usize], } -pub type __kernel_rwf_t = crate::ctypes::c_int; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct futex_waitv { @@ -2967,673 +312,24 @@ } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct robust_list { -pub next: *mut robust_list, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct robust_list_head { -pub list: robust_list, -pub futex_offset: crate::ctypes::c_long, -pub list_op_pending: *mut robust_list, -} -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], -} -pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; -pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; -pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; -pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; -pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; -pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; -pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; -pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; -pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; -pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; -pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; -pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; -pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; -pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; -pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; -pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; -pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; -pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; -pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; -pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; -pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; -pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; -pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; -pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; -pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; -pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; -pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; -pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; -pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_1 { -IPPROTO_IP = 0, -IPPROTO_ICMP = 1, -IPPROTO_IGMP = 2, -IPPROTO_IPIP = 4, -IPPROTO_TCP = 6, -IPPROTO_EGP = 8, -IPPROTO_PUP = 12, -IPPROTO_UDP = 17, -IPPROTO_IDP = 22, -IPPROTO_TP = 29, -IPPROTO_DCCP = 33, -IPPROTO_IPV6 = 41, -IPPROTO_RSVP = 46, -IPPROTO_GRE = 47, -IPPROTO_ESP = 50, -IPPROTO_AH = 51, -IPPROTO_MTP = 92, -IPPROTO_BEETPH = 94, -IPPROTO_ENCAP = 98, -IPPROTO_PIM = 103, -IPPROTO_COMP = 108, -IPPROTO_L2TP = 115, -IPPROTO_SCTP = 132, -IPPROTO_UDPLITE = 136, -IPPROTO_MPLS = 137, -IPPROTO_ETHERNET = 143, -IPPROTO_RAW = 255, -IPPROTO_MPTCP = 262, -IPPROTO_MAX = 263, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_addr { -pub s_addr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq { -pub imr_multiaddr: in_addr, -pub imr_interface: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreqn { -pub imr_multiaddr: in_addr, -pub imr_address: in_addr, -pub imr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq_source { -pub imr_multiaddr: __be32, -pub imr_interface: __be32, -pub imr_sourceaddr: __be32, -} -#[repr(C)] -pub struct ip_msfilter { -pub imsf_multiaddr: __be32, -pub imsf_interface: __be32, -pub imsf_fmode: __u32, -pub imsf_numsrc: __u32, -pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, -} -#[repr(C)] -pub struct ip_msfilter__bindgen_ty_1 { -pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, -pub __bindgen_anon_1: __BindgenUnionField, -pub bindgen_union_field: u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { -pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -pub imsf_slist_flex: __IncompleteArrayField<__be32>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_req { -pub gr_interface: __u32, -pub gr_group: __kernel_sockaddr_storage, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_source_req { -pub gsr_interface: __u32, -pub gsr_group: __kernel_sockaddr_storage, -pub gsr_source: __kernel_sockaddr_storage, -} -#[repr(C)] -pub struct group_filter { -pub __bindgen_anon_1: group_filter__bindgen_ty_1, -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 34usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { -pub gf_interface_aux: __u32, -pub gf_group_aux: __kernel_sockaddr_storage, -pub gf_fmode_aux: __u32, -pub gf_numsrc_aux: __u32, -pub gf_slist: [__kernel_sockaddr_storage; 1usize], -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { -pub gf_interface: __u32, -pub gf_group: __kernel_sockaddr_storage, -pub gf_fmode: __u32, -pub gf_numsrc: __u32, -pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_pktinfo { -pub ipi_ifindex: crate::ctypes::c_int, -pub ipi_spec_dst: in_addr, -pub ipi_addr: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_in { -pub sin_family: __kernel_sa_family_t, -pub sin_port: __be16, -pub sin_addr: in_addr, -pub __pad: [crate::ctypes::c_uchar; 8usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct inotify_event { -pub wd: __s32, -pub mask: __u32, -pub cookie: __u32, -pub len: __u32, -pub name: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct iphdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub tos: __u8, -pub tot_len: __be16, -pub id: __be16, -pub frag_off: __be16, -pub ttl: __u8, -pub protocol: __u8, -pub check: __sum16, -pub __bindgen_anon_1: iphdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union iphdr__bindgen_ty_1 { -pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: __be32, -pub daddr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: __be32, -pub daddr: __be32, -} -impl iphdr { -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn ihl(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_ihl(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; -ihl as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_auth_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub reserved: __be16, -pub spi: __be32, -pub seq_no: __be32, -pub auth_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_esp_hdr { -pub spi: __be32, -pub seq_no: __be32, -pub enc_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_comp_hdr { -pub nexthdr: __u8, -pub flags: __u8, -pub cpi: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_beet_phdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub padlen: __u8, -pub reserved: __u8, -} -pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; -pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; -pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; -pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; -pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; -pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; -pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; -pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; -pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; -pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; -pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; -pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; -pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; -pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; -pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; -pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; -pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; -pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; -pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; -pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; -pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; -pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; -pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; -pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; -pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; -pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; -pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; -pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; -pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_2 { -IPV4_DEVCONF_FORWARDING = 1, -IPV4_DEVCONF_MC_FORWARDING = 2, -IPV4_DEVCONF_PROXY_ARP = 3, -IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, -IPV4_DEVCONF_SECURE_REDIRECTS = 5, -IPV4_DEVCONF_SEND_REDIRECTS = 6, -IPV4_DEVCONF_SHARED_MEDIA = 7, -IPV4_DEVCONF_RP_FILTER = 8, -IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, -IPV4_DEVCONF_BOOTP_RELAY = 10, -IPV4_DEVCONF_LOG_MARTIANS = 11, -IPV4_DEVCONF_TAG = 12, -IPV4_DEVCONF_ARPFILTER = 13, -IPV4_DEVCONF_MEDIUM_ID = 14, -IPV4_DEVCONF_NOXFRM = 15, -IPV4_DEVCONF_NOPOLICY = 16, -IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, -IPV4_DEVCONF_ARP_ANNOUNCE = 18, -IPV4_DEVCONF_ARP_IGNORE = 19, -IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, -IPV4_DEVCONF_ARP_ACCEPT = 21, -IPV4_DEVCONF_ARP_NOTIFY = 22, -IPV4_DEVCONF_ACCEPT_LOCAL = 23, -IPV4_DEVCONF_SRC_VMARK = 24, -IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, -IPV4_DEVCONF_ROUTE_LOCALNET = 26, -IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, -IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, -IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, -IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, -IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, -IPV4_DEVCONF_BC_FORWARDING = 32, -IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, -__IPV4_DEVCONF_MAX = 34, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_addr { -pub in6_u: in6_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union in6_addr__bindgen_ty_1 { -pub u6_addr8: [__u8; 16usize], -pub u6_addr16: [__be16; 8usize], -pub u6_addr32: [__be32; 4usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_in6 { -pub sin6_family: crate::ctypes::c_ushort, -pub sin6_port: __be16, -pub sin6_flowinfo: __be32, -pub sin6_addr: in6_addr, -pub sin6_scope_id: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6_mreq { -pub ipv6mr_multiaddr: in6_addr, -pub ipv6mr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_flowlabel_req { -pub flr_dst: in6_addr, -pub flr_label: __be32, -pub flr_action: __u8, -pub flr_share: __u8, -pub flr_flags: __u16, -pub flr_expires: __u16, -pub flr_linger: __u16, -pub __flr_pad: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_pktinfo { -pub ipi6_addr: in6_addr, -pub ipi6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ip6_mtuinfo { -pub ip6m_addr: sockaddr_in6, -pub ip6m_mtu: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_ifreq { -pub ifr6_addr: in6_addr, -pub ifr6_prefixlen: __u32, -pub ifr6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_rt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub type_: __u8, -pub segments_left: __u8, -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_opt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -} -#[repr(C)] -pub struct rt0_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rt2_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: in6_addr, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct ipv6_destopt_hao { -pub type_: __u8, -pub length: __u8, -pub addr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub flow_lbl: [__u8; 3usize], -pub payload_len: __be16, -pub nexthdr: __u8, -pub hop_limit: __u8, -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ipv6hdr__bindgen_ty_1 { -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -impl ipv6hdr { -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn priority(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_priority(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let priority: u8 = unsafe { ::core::mem::transmute(priority) }; -priority as u64 -}); -__bindgen_bitfield_unit -} +pub struct robust_list { +pub next: *mut robust_list, } -pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; -pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; -pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; -pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; -pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; -pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; -pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; -pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; -pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; -pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; -pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; -pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; -pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; -pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; -pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; -pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; -pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; -pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; -pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; -pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; -pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; -pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; -pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; -pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; -pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; -pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; -pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; -pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; -pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; -pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; -pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; -pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; -pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; -pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; -pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; -pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; -pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; -pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; -pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; -pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; -pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; -pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; -pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; -pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; -pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; -pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; -pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; -pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; -pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; -pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; -pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; -pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_3 { -DEVCONF_FORWARDING = 0, -DEVCONF_HOPLIMIT = 1, -DEVCONF_MTU6 = 2, -DEVCONF_ACCEPT_RA = 3, -DEVCONF_ACCEPT_REDIRECTS = 4, -DEVCONF_AUTOCONF = 5, -DEVCONF_DAD_TRANSMITS = 6, -DEVCONF_RTR_SOLICITS = 7, -DEVCONF_RTR_SOLICIT_INTERVAL = 8, -DEVCONF_RTR_SOLICIT_DELAY = 9, -DEVCONF_USE_TEMPADDR = 10, -DEVCONF_TEMP_VALID_LFT = 11, -DEVCONF_TEMP_PREFERED_LFT = 12, -DEVCONF_REGEN_MAX_RETRY = 13, -DEVCONF_MAX_DESYNC_FACTOR = 14, -DEVCONF_MAX_ADDRESSES = 15, -DEVCONF_FORCE_MLD_VERSION = 16, -DEVCONF_ACCEPT_RA_DEFRTR = 17, -DEVCONF_ACCEPT_RA_PINFO = 18, -DEVCONF_ACCEPT_RA_RTR_PREF = 19, -DEVCONF_RTR_PROBE_INTERVAL = 20, -DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, -DEVCONF_PROXY_NDP = 22, -DEVCONF_OPTIMISTIC_DAD = 23, -DEVCONF_ACCEPT_SOURCE_ROUTE = 24, -DEVCONF_MC_FORWARDING = 25, -DEVCONF_DISABLE_IPV6 = 26, -DEVCONF_ACCEPT_DAD = 27, -DEVCONF_FORCE_TLLAO = 28, -DEVCONF_NDISC_NOTIFY = 29, -DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, -DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, -DEVCONF_SUPPRESS_FRAG_NDISC = 32, -DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, -DEVCONF_USE_OPTIMISTIC = 34, -DEVCONF_ACCEPT_RA_MTU = 35, -DEVCONF_STABLE_SECRET = 36, -DEVCONF_USE_OIF_ADDRS_ONLY = 37, -DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, -DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, -DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, -DEVCONF_DROP_UNSOLICITED_NA = 41, -DEVCONF_KEEP_ADDR_ON_DOWN = 42, -DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, -DEVCONF_SEG6_ENABLED = 44, -DEVCONF_SEG6_REQUIRE_HMAC = 45, -DEVCONF_ENHANCED_DAD = 46, -DEVCONF_ADDR_GEN_MODE = 47, -DEVCONF_DISABLE_POLICY = 48, -DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, -DEVCONF_NDISC_TCLASS = 50, -DEVCONF_RPL_SEG_ENABLED = 51, -DEVCONF_RA_DEFRTR_METRIC = 52, -DEVCONF_IOAM6_ENABLED = 53, -DEVCONF_IOAM6_ID = 54, -DEVCONF_IOAM6_ID_WIDE = 55, -DEVCONF_NDISC_EVICT_NOCARRIER = 56, -DEVCONF_ACCEPT_UNTRACKED_NA = 57, -DEVCONF_MAX = 58, +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct robust_list_head { +pub list: robust_list, +pub futex_offset: crate::ctypes::c_long, +pub list_op_pending: *mut robust_list, } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum socket_state { -SS_FREE = 0, -SS_UNCONNECTED = 1, -SS_CONNECTING = 2, -SS_CONNECTED = 3, -SS_DISCONNECTING = 4, +#[repr(C)] +#[derive(Debug)] +pub struct inotify_event { +pub wd: __s32, +pub mask: __u32, +pub cookie: __u32, +pub len: __u32, +pub name: __IncompleteArrayField, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -3643,24 +339,6 @@ pub revents: crate::ctypes::c_short, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prctl_mm_map { -pub start_code: __u64, -pub end_code: __u64, -pub start_data: __u64, -pub end_data: __u64, -pub start_brk: __u64, -pub brk: __u64, -pub start_stack: __u64, -pub arg_start: __u64, -pub arg_end: __u64, -pub env_start: __u64, -pub env_end: __u64, -pub auxv: *mut __u64, -pub auxv_size: __u32, -pub exe_fd: __u32, -} -#[repr(C)] #[derive(Debug)] pub struct rand_pool_info { pub entropy_count: crate::ctypes::c_int, @@ -3780,16 +458,11 @@ pub set_tid_size: __u64, pub cgroup: __u64, } -pub type old_sigset_t = crate::ctypes::c_ulong; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct sigset_t { pub sig: [crate::ctypes::c_ulong; 1usize], } -pub type __signalfn_t = ::core::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::core::option::Option; -pub type __sigrestore_t = __restorefn_t; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct old_sigaction { @@ -3813,25 +486,6 @@ pub ss_flags: crate::ctypes::c_int, pub ss_size: __kernel_size_t, } -pub type stack_t = sigaltstack; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { -pub sival_int: crate::ctypes::c_int, -pub sival_ptr: *mut crate::ctypes::c_void, -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { -pub _kill: __sifields__bindgen_ty_1, -pub _timer: __sifields__bindgen_ty_2, -pub _rt: __sifields__bindgen_ty_3, -pub _sigchld: __sifields__bindgen_ty_4, -pub _sigfault: __sifields__bindgen_ty_5, -pub _sigpoll: __sifields__bindgen_ty_6, -pub _sigsys: __sifields__bindgen_ty_7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_1 { @@ -3866,619 +520,103 @@ #[derive(Copy, Clone)] pub struct __sifields__bindgen_ty_5 { pub _addr: *mut crate::ctypes::c_void, -pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { -pub _trapno: crate::ctypes::c_int, -pub _addr_lsb: crate::ctypes::c_short, -pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, -pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { -pub _dummy_bnd: [crate::ctypes::c_char; 8usize], -pub _lower: *mut crate::ctypes::c_void, -pub _upper: *mut crate::ctypes::c_void, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 { -pub _dummy_pkey: [crate::ctypes::c_char; 8usize], -pub _pkey: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { -pub _data: crate::ctypes::c_ulong, -pub _type: __u32, -pub _flags: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_6 { -pub _band: crate::ctypes::c_long, -pub _fd: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_7 { -pub _call_addr: *mut crate::ctypes::c_void, -pub _syscall: crate::ctypes::c_int, -pub _arch: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo { -pub __bindgen_anon_1: siginfo__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { -pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, -pub _si_pad: [crate::ctypes::c_int; 32usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { -pub si_signo: crate::ctypes::c_int, -pub si_errno: crate::ctypes::c_int, -pub si_code: crate::ctypes::c_int, -pub _sifields: __sifields, -} -pub type siginfo_t = siginfo; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigevent { -pub sigev_value: sigval_t, -pub sigev_signo: crate::ctypes::c_int, -pub sigev_notify: crate::ctypes::c_int, -pub _sigev_un: sigevent__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { -pub _pad: [crate::ctypes::c_int; 12usize], -pub _tid: crate::ctypes::c_int, -pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { -pub _function: ::core::option::Option, -pub _attribute: *mut crate::ctypes::c_void, -} -pub type sigevent_t = sigevent; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statx_timestamp { -pub tv_sec: __s64, -pub tv_nsec: __u32, -pub __reserved: __s32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statx { -pub stx_mask: __u32, -pub stx_blksize: __u32, -pub stx_attributes: __u64, -pub stx_nlink: __u32, -pub stx_uid: __u32, -pub stx_gid: __u32, -pub stx_mode: __u16, -pub __spare0: [__u16; 1usize], -pub stx_ino: __u64, -pub stx_size: __u64, -pub stx_blocks: __u64, -pub stx_attributes_mask: __u64, -pub stx_atime: statx_timestamp, -pub stx_btime: statx_timestamp, -pub stx_ctime: statx_timestamp, -pub stx_mtime: statx_timestamp, -pub stx_rdev_major: __u32, -pub stx_rdev_minor: __u32, -pub stx_dev_major: __u32, -pub stx_dev_minor: __u32, -pub stx_mnt_id: __u64, -pub stx_dio_mem_align: __u32, -pub stx_dio_offset_align: __u32, -pub __spare3: [__u64; 12usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct sysinfo { -pub uptime: __kernel_long_t, -pub loads: [__kernel_ulong_t; 3usize], -pub totalram: __kernel_ulong_t, -pub freeram: __kernel_ulong_t, -pub sharedram: __kernel_ulong_t, -pub bufferram: __kernel_ulong_t, -pub totalswap: __kernel_ulong_t, -pub freeswap: __kernel_ulong_t, -pub procs: __u16, -pub pad: __u16, -pub totalhigh: __kernel_ulong_t, -pub freehigh: __kernel_ulong_t, -pub mem_unit: __u32, -pub _f: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcphdr { -pub source: __be16, -pub dest: __be16, -pub seq: __be32, -pub ack_seq: __be32, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub window: __be16, -pub check: __sum16, -pub urg_ptr: __be16, -} -impl tcphdr { -#[inline] -pub fn doff(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } -} -#[inline] -pub fn set_doff(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn res1(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } -} -#[inline] -pub fn set_res1(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn cwr(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } -} -#[inline] -pub fn set_cwr(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn ece(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } -} -#[inline] -pub fn set_ece(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 1u8, val as u64) -} -} -#[inline] -pub fn urg(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } -} -#[inline] -pub fn set_urg(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(10usize, 1u8, val as u64) -} -} -#[inline] -pub fn ack(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } -} -#[inline] -pub fn set_ack(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(11usize, 1u8, val as u64) -} -} -#[inline] -pub fn psh(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } -} -#[inline] -pub fn set_psh(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(12usize, 1u8, val as u64) -} -} -#[inline] -pub fn rst(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } -} -#[inline] -pub fn set_rst(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(13usize, 1u8, val as u64) -} -} -#[inline] -pub fn syn(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } -} -#[inline] -pub fn set_syn(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(14usize, 1u8, val as u64) -} -} -#[inline] -pub fn fin(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } -} -#[inline] -pub fn set_fin(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(15usize, 1u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let doff: u16 = unsafe { ::core::mem::transmute(doff) }; -doff as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let res1: u16 = unsafe { ::core::mem::transmute(res1) }; -res1 as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; -cwr as u64 -}); -__bindgen_bitfield_unit.set(9usize, 1u8, { -let ece: u16 = unsafe { ::core::mem::transmute(ece) }; -ece as u64 -}); -__bindgen_bitfield_unit.set(10usize, 1u8, { -let urg: u16 = unsafe { ::core::mem::transmute(urg) }; -urg as u64 -}); -__bindgen_bitfield_unit.set(11usize, 1u8, { -let ack: u16 = unsafe { ::core::mem::transmute(ack) }; -ack as u64 -}); -__bindgen_bitfield_unit.set(12usize, 1u8, { -let psh: u16 = unsafe { ::core::mem::transmute(psh) }; -psh as u64 -}); -__bindgen_bitfield_unit.set(13usize, 1u8, { -let rst: u16 = unsafe { ::core::mem::transmute(rst) }; -rst as u64 -}); -__bindgen_bitfield_unit.set(14usize, 1u8, { -let syn: u16 = unsafe { ::core::mem::transmute(syn) }; -syn as u64 -}); -__bindgen_bitfield_unit.set(15usize, 1u8, { -let fin: u16 = unsafe { ::core::mem::transmute(fin) }; -fin as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union tcp_word_hdr { -pub hdr: tcphdr, -pub words: [__be32; 5usize], -} -pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; -pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; -pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; -pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; -pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; -pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; -pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; -pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; -pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; -pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_4 { -TCP_FLAG_CWR = 8388608, -TCP_FLAG_ECE = 4194304, -TCP_FLAG_URG = 2097152, -TCP_FLAG_ACK = 1048576, -TCP_FLAG_PSH = 524288, -TCP_FLAG_RST = 262144, -TCP_FLAG_SYN = 131072, -TCP_FLAG_FIN = 65536, -TCP_RESERVED_BITS = 251658240, -TCP_DATA_OFFSET = 4026531840, +pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_repair_opt { -pub opt_code: __u32, -pub opt_val: __u32, +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { +pub _dummy_bnd: [crate::ctypes::c_char; 8usize], +pub _lower: *mut crate::ctypes::c_void, +pub _upper: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_repair_window { -pub snd_wl1: __u32, -pub snd_wnd: __u32, -pub max_window: __u32, -pub rcv_wnd: __u32, -pub rcv_wup: __u32, -} -pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; -pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; -pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; -pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_5 { -TCP_NO_QUEUE = 0, -TCP_RECV_QUEUE = 1, -TCP_SEND_QUEUE = 2, -TCP_QUEUES_NR = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_fastopen_client_fail { -TFO_STATUS_UNSPEC = 0, -TFO_COOKIE_UNAVAILABLE = 1, -TFO_DATA_NOT_ACKED = 2, -TFO_SYN_RETRANSMITTED = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_ca_state { -TCP_CA_Open = 0, -TCP_CA_Disorder = 1, -TCP_CA_CWR = 2, -TCP_CA_Recovery = 3, -TCP_CA_Loss = 4, +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 { +pub _dummy_pkey: [crate::ctypes::c_char; 8usize], +pub _pkey: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_info { -pub tcpi_state: __u8, -pub tcpi_ca_state: __u8, -pub tcpi_retransmits: __u8, -pub tcpi_probes: __u8, -pub tcpi_backoff: __u8, -pub tcpi_options: __u8, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub tcpi_rto: __u32, -pub tcpi_ato: __u32, -pub tcpi_snd_mss: __u32, -pub tcpi_rcv_mss: __u32, -pub tcpi_unacked: __u32, -pub tcpi_sacked: __u32, -pub tcpi_lost: __u32, -pub tcpi_retrans: __u32, -pub tcpi_fackets: __u32, -pub tcpi_last_data_sent: __u32, -pub tcpi_last_ack_sent: __u32, -pub tcpi_last_data_recv: __u32, -pub tcpi_last_ack_recv: __u32, -pub tcpi_pmtu: __u32, -pub tcpi_rcv_ssthresh: __u32, -pub tcpi_rtt: __u32, -pub tcpi_rttvar: __u32, -pub tcpi_snd_ssthresh: __u32, -pub tcpi_snd_cwnd: __u32, -pub tcpi_advmss: __u32, -pub tcpi_reordering: __u32, -pub tcpi_rcv_rtt: __u32, -pub tcpi_rcv_space: __u32, -pub tcpi_total_retrans: __u32, -pub tcpi_pacing_rate: __u64, -pub tcpi_max_pacing_rate: __u64, -pub tcpi_bytes_acked: __u64, -pub tcpi_bytes_received: __u64, -pub tcpi_segs_out: __u32, -pub tcpi_segs_in: __u32, -pub tcpi_notsent_bytes: __u32, -pub tcpi_min_rtt: __u32, -pub tcpi_data_segs_in: __u32, -pub tcpi_data_segs_out: __u32, -pub tcpi_delivery_rate: __u64, -pub tcpi_busy_time: __u64, -pub tcpi_rwnd_limited: __u64, -pub tcpi_sndbuf_limited: __u64, -pub tcpi_delivered: __u32, -pub tcpi_delivered_ce: __u32, -pub tcpi_bytes_sent: __u64, -pub tcpi_bytes_retrans: __u64, -pub tcpi_dsack_dups: __u32, -pub tcpi_reord_seen: __u32, -pub tcpi_rcv_ooopack: __u32, -pub tcpi_snd_wnd: __u32, -pub tcpi_rcv_wnd: __u32, -pub tcpi_rehash: __u32, -} -impl tcp_info { -#[inline] -pub fn tcpi_snd_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_rcv_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } -} -#[inline] -pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn tcpi_fastopen_client_fail(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } -} -#[inline] -pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 2u8, val as u64) +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { +pub _data: crate::ctypes::c_ulong, +pub _type: __u32, +pub _flags: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_6 { +pub _band: crate::ctypes::c_long, +pub _fd: crate::ctypes::c_int, } -#[inline] -pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; -tcpi_snd_wscale as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; -tcpi_rcv_wscale as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; -tcpi_delivery_rate_app_limited as u64 -}); -__bindgen_bitfield_unit.set(9usize, 2u8, { -let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; -tcpi_fastopen_client_fail as u64 -}); -__bindgen_bitfield_unit +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_7 { +pub _call_addr: *mut crate::ctypes::c_void, +pub _syscall: crate::ctypes::c_int, +pub _arch: crate::ctypes::c_uint, } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo { +pub __bindgen_anon_1: siginfo__bindgen_ty_1, } -pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; -pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; -pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; -pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; -pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; -pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; -pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; -pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; -pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; -pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; -pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; -pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; -pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; -pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; -pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; -pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; -pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; -pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; -pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; -pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; -pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; -pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; -pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; -pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; -pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; -pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; -pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; -pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_6 { -TCP_NLA_PAD = 0, -TCP_NLA_BUSY = 1, -TCP_NLA_RWND_LIMITED = 2, -TCP_NLA_SNDBUF_LIMITED = 3, -TCP_NLA_DATA_SEGS_OUT = 4, -TCP_NLA_TOTAL_RETRANS = 5, -TCP_NLA_PACING_RATE = 6, -TCP_NLA_DELIVERY_RATE = 7, -TCP_NLA_SND_CWND = 8, -TCP_NLA_REORDERING = 9, -TCP_NLA_MIN_RTT = 10, -TCP_NLA_RECUR_RETRANS = 11, -TCP_NLA_DELIVERY_RATE_APP_LMT = 12, -TCP_NLA_SNDQ_SIZE = 13, -TCP_NLA_CA_STATE = 14, -TCP_NLA_SND_SSTHRESH = 15, -TCP_NLA_DELIVERED = 16, -TCP_NLA_DELIVERED_CE = 17, -TCP_NLA_BYTES_SENT = 18, -TCP_NLA_BYTES_RETRANS = 19, -TCP_NLA_DSACK_DUPS = 20, -TCP_NLA_REORD_SEEN = 21, -TCP_NLA_SRTT = 22, -TCP_NLA_TIMEOUT_REHASH = 23, -TCP_NLA_BYTES_NOTSENT = 24, -TCP_NLA_EDT = 25, -TCP_NLA_TTL = 26, -TCP_NLA_REHASH = 27, +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { +pub si_signo: crate::ctypes::c_int, +pub si_errno: crate::ctypes::c_int, +pub si_code: crate::ctypes::c_int, +pub _sifields: __sifields, } #[repr(C)] #[derive(Copy, Clone)] -pub struct tcp_md5sig { -pub tcpm_addr: __kernel_sockaddr_storage, -pub tcpm_flags: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_ifindex: crate::ctypes::c_int, -pub tcpm_key: [__u8; 80usize], +pub struct sigevent { +pub sigev_value: sigval_t, +pub sigev_signo: crate::ctypes::c_int, +pub sigev_notify: crate::ctypes::c_int, +pub _sigev_un: sigevent__bindgen_ty_1, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_diag_md5sig { -pub tcpm_family: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_addr: [__be32; 4usize], -pub tcpm_key: [__u8; 80usize], +pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { +pub _function: ::core::option::Option, +pub _attribute: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_zerocopy_receive { -pub address: __u64, -pub length: __u32, -pub recv_skip_hint: __u32, -pub inq: __u32, -pub err: __s32, -pub copybuf_address: __u64, -pub copybuf_len: __s32, -pub flags: __u32, -pub msg_control: __u64, -pub msg_controllen: __u64, -pub msg_flags: __u32, -pub reserved: __u32, +pub struct statx_timestamp { +pub tv_sec: __s64, +pub tv_nsec: __u32, +pub __reserved: __s32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statx { +pub stx_mask: __u32, +pub stx_blksize: __u32, +pub stx_attributes: __u64, +pub stx_nlink: __u32, +pub stx_uid: __u32, +pub stx_gid: __u32, +pub stx_mode: __u16, +pub __spare0: [__u16; 1usize], +pub stx_ino: __u64, +pub stx_size: __u64, +pub stx_blocks: __u64, +pub stx_attributes_mask: __u64, +pub stx_atime: statx_timestamp, +pub stx_btime: statx_timestamp, +pub stx_ctime: statx_timestamp, +pub stx_mtime: statx_timestamp, +pub stx_rdev_major: __u32, +pub stx_rdev_minor: __u32, +pub stx_dev_major: __u32, +pub stx_dev_minor: __u32, +pub stx_mnt_id: __u64, +pub stx_dio_mem_align: __u32, +pub stx_dio_offset_align: __u32, +pub __spare3: [__u64; 12usize], } -pub type cc_t = crate::ctypes::c_uchar; -pub type speed_t = crate::ctypes::c_uint; -pub type tcflag_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct termios { @@ -4534,64 +672,2026 @@ } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct winsize { -pub ws_row: crate::ctypes::c_ushort, -pub ws_col: crate::ctypes::c_ushort, -pub ws_xpixel: crate::ctypes::c_ushort, -pub ws_ypixel: crate::ctypes::c_ushort, +pub struct winsize { +pub ws_row: crate::ctypes::c_ushort, +pub ws_col: crate::ctypes::c_ushort, +pub ws_xpixel: crate::ctypes::c_ushort, +pub ws_ypixel: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct termio { +pub c_iflag: crate::ctypes::c_ushort, +pub c_oflag: crate::ctypes::c_ushort, +pub c_cflag: crate::ctypes::c_ushort, +pub c_lflag: crate::ctypes::c_ushort, +pub c_line: crate::ctypes::c_uchar, +pub c_cc: [crate::ctypes::c_uchar; 10usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub iov_base: *mut crate::ctypes::c_void, +pub iov_len: __kernel_size_t, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct uffd_msg { +pub event: __u8, +pub reserved1: __u8, +pub reserved2: __u16, +pub reserved3: __u32, +pub arg: uffd_msg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { +pub flags: __u64, +pub address: __u64, +pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { +pub ufd: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { +pub from: __u64, +pub to: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { +pub start: __u64, +pub end: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { +pub reserved1: __u64, +pub reserved2: __u64, +pub reserved3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_api { +pub api: __u64, +pub features: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_range { +pub start: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_register { +pub range: uffdio_range, +pub mode: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_copy { +pub dst: __u64, +pub src: __u64, +pub len: __u64, +pub mode: __u64, +pub copy: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_zeropage { +pub range: uffdio_range, +pub mode: __u64, +pub zeropage: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_writeprotect { +pub range: uffdio_range, +pub mode: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_continue { +pub range: uffdio_range, +pub mode: __u64, +pub mapped: __s64, +} +#[repr(C)] +#[derive(Debug)] +pub struct linux_dirent64 { +pub d_ino: crate::ctypes::c_ulong, +pub d_off: crate::ctypes::c_long, +pub d_reclen: __u16, +pub d_type: __u8, +pub d_name: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat { +pub st_dev: crate::ctypes::c_ulong, +pub st_ino: __kernel_ino_t, +pub st_nlink: crate::ctypes::c_ulong, +pub st_mode: __kernel_mode_t, +pub st_uid: __kernel_uid32_t, +pub st_gid: __kernel_gid32_t, +pub st_rdev: crate::ctypes::c_ulong, +pub st_size: crate::ctypes::c_long, +pub st_blksize: crate::ctypes::c_ulong, +pub st_blocks: crate::ctypes::c_ulong, +pub st_atime: crate::ctypes::c_ulong, +pub st_atime_nsec: crate::ctypes::c_ulong, +pub st_mtime: crate::ctypes::c_ulong, +pub st_mtime_nsec: crate::ctypes::c_ulong, +pub st_ctime: crate::ctypes::c_ulong, +pub st_ctime_nsec: crate::ctypes::c_ulong, +pub __unused4: crate::ctypes::c_ulong, +pub __unused5: crate::ctypes::c_ulong, +pub __unused6: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat64 { +pub st_dev: crate::ctypes::c_ulonglong, +pub st_ino: crate::ctypes::c_ulonglong, +pub st_mode: crate::ctypes::c_uint, +pub st_nlink: crate::ctypes::c_uint, +pub st_uid: crate::ctypes::c_uint, +pub st_gid: crate::ctypes::c_uint, +pub st_rdev: crate::ctypes::c_ulonglong, +pub __pad2: crate::ctypes::c_ushort, +pub st_size: crate::ctypes::c_longlong, +pub st_blksize: crate::ctypes::c_int, +pub st_blocks: crate::ctypes::c_longlong, +pub st_atime: crate::ctypes::c_int, +pub st_atime_nsec: crate::ctypes::c_uint, +pub st_mtime: crate::ctypes::c_int, +pub st_mtime_nsec: crate::ctypes::c_uint, +pub st_ctime: crate::ctypes::c_int, +pub st_ctime_nsec: crate::ctypes::c_uint, +pub __unused4: crate::ctypes::c_uint, +pub __unused5: crate::ctypes::c_uint, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct termio { -pub c_iflag: crate::ctypes::c_ushort, -pub c_oflag: crate::ctypes::c_ushort, -pub c_cflag: crate::ctypes::c_ushort, -pub c_lflag: crate::ctypes::c_ushort, -pub c_line: crate::ctypes::c_uchar, -pub c_cc: [crate::ctypes::c_uchar; 10usize], +pub struct statfs { +pub f_type: __kernel_long_t, +pub f_bsize: __kernel_long_t, +pub f_blocks: __kernel_long_t, +pub f_bfree: __kernel_long_t, +pub f_bavail: __kernel_long_t, +pub f_files: __kernel_long_t, +pub f_ffree: __kernel_long_t, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __kernel_long_t, +pub f_frsize: __kernel_long_t, +pub f_flags: __kernel_long_t, +pub f_spare: [__kernel_long_t; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct iovec { -pub iov_base: *mut crate::ctypes::c_void, -pub iov_len: __kernel_size_t, +pub struct statfs64 { +pub f_type: __kernel_long_t, +pub f_bsize: __kernel_long_t, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __kernel_long_t, +pub f_frsize: __kernel_long_t, +pub f_flags: __kernel_long_t, +pub f_spare: [__kernel_long_t; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_un { -pub sun_family: __kernel_sa_family_t, -pub sun_path: [crate::ctypes::c_char; 108usize], +pub struct compat_statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct oldold_utsname { -pub sysname: [crate::ctypes::c_char; 9usize], -pub nodename: [crate::ctypes::c_char; 9usize], -pub release: [crate::ctypes::c_char; 9usize], -pub version: [crate::ctypes::c_char; 9usize], -pub machine: [crate::ctypes::c_char; 9usize], +pub struct user_desc { +pub entry_number: crate::ctypes::c_uint, +pub base_addr: crate::ctypes::c_uint, +pub limit: crate::ctypes::c_uint, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub __bindgen_padding_0: [u8; 3usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct old_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], +pub struct kernel_sigset_t { +pub sig: [crate::ctypes::c_ulong; 1usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct new_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], -pub domainname: [crate::ctypes::c_char; 65usize], +pub struct kernel_sigaction { +pub sa_handler_kernel: __kernel_sighandler_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_restorer: __sigrestore_t, +pub sa_mask: kernel_sigset_t, } -impl membarrier_cmd { -pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; +pub const LINUX_VERSION_CODE: u32 = 393984; +pub const LINUX_VERSION_MAJOR: u32 = 6; +pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; +pub const LINUX_VERSION_SUBLEVEL: u32 = 0; +pub const AT_DCACHEBSIZE: u32 = 19; +pub const AT_ICACHEBSIZE: u32 = 20; +pub const AT_UCACHEBSIZE: u32 = 21; +pub const AT_IGNOREPPC: u32 = 22; +pub const AT_SYSINFO_EHDR: u32 = 33; +pub const AT_L1I_CACHESIZE: u32 = 40; +pub const AT_L1I_CACHEGEOMETRY: u32 = 41; +pub const AT_L1D_CACHESIZE: u32 = 42; +pub const AT_L1D_CACHEGEOMETRY: u32 = 43; +pub const AT_L2_CACHESIZE: u32 = 44; +pub const AT_L2_CACHEGEOMETRY: u32 = 45; +pub const AT_L3_CACHESIZE: u32 = 46; +pub const AT_L3_CACHEGEOMETRY: u32 = 47; +pub const AT_MINSIGSTKSZ: u32 = 51; +pub const AT_VECTOR_SIZE_ARCH: u32 = 15; +pub const AT_NULL: u32 = 0; +pub const AT_IGNORE: u32 = 1; +pub const AT_EXECFD: u32 = 2; +pub const AT_PHDR: u32 = 3; +pub const AT_PHENT: u32 = 4; +pub const AT_PHNUM: u32 = 5; +pub const AT_PAGESZ: u32 = 6; +pub const AT_BASE: u32 = 7; +pub const AT_FLAGS: u32 = 8; +pub const AT_ENTRY: u32 = 9; +pub const AT_NOTELF: u32 = 10; +pub const AT_UID: u32 = 11; +pub const AT_EUID: u32 = 12; +pub const AT_GID: u32 = 13; +pub const AT_EGID: u32 = 14; +pub const AT_PLATFORM: u32 = 15; +pub const AT_HWCAP: u32 = 16; +pub const AT_CLKTCK: u32 = 17; +pub const AT_SECURE: u32 = 23; +pub const AT_BASE_PLATFORM: u32 = 24; +pub const AT_RANDOM: u32 = 25; +pub const AT_HWCAP2: u32 = 26; +pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; +pub const AT_RSEQ_ALIGN: u32 = 28; +pub const AT_EXECFN: u32 = 31; +pub const __FD_SETSIZE: u32 = 1024; +pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; +pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; +pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; +pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; +pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; +pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; +pub const VFS_CAP_REVISION_SHIFT: u32 = 24; +pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; +pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; +pub const VFS_CAP_REVISION_1: u32 = 16777216; +pub const VFS_CAP_U32_1: u32 = 1; +pub const VFS_CAP_REVISION_2: u32 = 33554432; +pub const VFS_CAP_U32_2: u32 = 2; +pub const VFS_CAP_REVISION_3: u32 = 50331648; +pub const VFS_CAP_U32_3: u32 = 2; +pub const VFS_CAP_U32: u32 = 2; +pub const VFS_CAP_REVISION: u32 = 50331648; +pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S: u32 = 1; +pub const CAP_CHOWN: u32 = 0; +pub const CAP_DAC_OVERRIDE: u32 = 1; +pub const CAP_DAC_READ_SEARCH: u32 = 2; +pub const CAP_FOWNER: u32 = 3; +pub const CAP_FSETID: u32 = 4; +pub const CAP_KILL: u32 = 5; +pub const CAP_SETGID: u32 = 6; +pub const CAP_SETUID: u32 = 7; +pub const CAP_SETPCAP: u32 = 8; +pub const CAP_LINUX_IMMUTABLE: u32 = 9; +pub const CAP_NET_BIND_SERVICE: u32 = 10; +pub const CAP_NET_BROADCAST: u32 = 11; +pub const CAP_NET_ADMIN: u32 = 12; +pub const CAP_NET_RAW: u32 = 13; +pub const CAP_IPC_LOCK: u32 = 14; +pub const CAP_IPC_OWNER: u32 = 15; +pub const CAP_SYS_MODULE: u32 = 16; +pub const CAP_SYS_RAWIO: u32 = 17; +pub const CAP_SYS_CHROOT: u32 = 18; +pub const CAP_SYS_PTRACE: u32 = 19; +pub const CAP_SYS_PACCT: u32 = 20; +pub const CAP_SYS_ADMIN: u32 = 21; +pub const CAP_SYS_BOOT: u32 = 22; +pub const CAP_SYS_NICE: u32 = 23; +pub const CAP_SYS_RESOURCE: u32 = 24; +pub const CAP_SYS_TIME: u32 = 25; +pub const CAP_SYS_TTY_CONFIG: u32 = 26; +pub const CAP_MKNOD: u32 = 27; +pub const CAP_LEASE: u32 = 28; +pub const CAP_AUDIT_WRITE: u32 = 29; +pub const CAP_AUDIT_CONTROL: u32 = 30; +pub const CAP_SETFCAP: u32 = 31; +pub const CAP_MAC_OVERRIDE: u32 = 32; +pub const CAP_MAC_ADMIN: u32 = 33; +pub const CAP_SYSLOG: u32 = 34; +pub const CAP_WAKE_ALARM: u32 = 35; +pub const CAP_BLOCK_SUSPEND: u32 = 36; +pub const CAP_AUDIT_READ: u32 = 37; +pub const CAP_PERFMON: u32 = 38; +pub const CAP_BPF: u32 = 39; +pub const CAP_CHECKPOINT_RESTORE: u32 = 40; +pub const CAP_LAST_CAP: u32 = 40; +pub const O_DIRECTORY: u32 = 16384; +pub const O_NOFOLLOW: u32 = 32768; +pub const O_LARGEFILE: u32 = 65536; +pub const O_DIRECT: u32 = 131072; +pub const O_ACCMODE: u32 = 3; +pub const O_RDONLY: u32 = 0; +pub const O_WRONLY: u32 = 1; +pub const O_RDWR: u32 = 2; +pub const O_CREAT: u32 = 64; +pub const O_EXCL: u32 = 128; +pub const O_NOCTTY: u32 = 256; +pub const O_TRUNC: u32 = 512; +pub const O_APPEND: u32 = 1024; +pub const O_NONBLOCK: u32 = 2048; +pub const O_DSYNC: u32 = 4096; +pub const FASYNC: u32 = 8192; +pub const O_NOATIME: u32 = 262144; +pub const O_CLOEXEC: u32 = 524288; +pub const __O_SYNC: u32 = 1048576; +pub const O_SYNC: u32 = 1052672; +pub const O_PATH: u32 = 2097152; +pub const __O_TMPFILE: u32 = 4194304; +pub const O_TMPFILE: u32 = 4210688; +pub const O_TMPFILE_MASK: u32 = 4210752; +pub const O_NDELAY: u32 = 2048; +pub const F_DUPFD: u32 = 0; +pub const F_GETFD: u32 = 1; +pub const F_SETFD: u32 = 2; +pub const F_GETFL: u32 = 3; +pub const F_SETFL: u32 = 4; +pub const F_GETLK: u32 = 5; +pub const F_SETLK: u32 = 6; +pub const F_SETLKW: u32 = 7; +pub const F_SETOWN: u32 = 8; +pub const F_GETOWN: u32 = 9; +pub const F_SETSIG: u32 = 10; +pub const F_GETSIG: u32 = 11; +pub const F_SETOWN_EX: u32 = 15; +pub const F_GETOWN_EX: u32 = 16; +pub const F_GETOWNER_UIDS: u32 = 17; +pub const F_OFD_GETLK: u32 = 36; +pub const F_OFD_SETLK: u32 = 37; +pub const F_OFD_SETLKW: u32 = 38; +pub const F_OWNER_TID: u32 = 0; +pub const F_OWNER_PID: u32 = 1; +pub const F_OWNER_PGRP: u32 = 2; +pub const FD_CLOEXEC: u32 = 1; +pub const F_RDLCK: u32 = 0; +pub const F_WRLCK: u32 = 1; +pub const F_UNLCK: u32 = 2; +pub const F_EXLCK: u32 = 4; +pub const F_SHLCK: u32 = 8; +pub const LOCK_SH: u32 = 1; +pub const LOCK_EX: u32 = 2; +pub const LOCK_NB: u32 = 4; +pub const LOCK_UN: u32 = 8; +pub const LOCK_MAND: u32 = 32; +pub const LOCK_READ: u32 = 64; +pub const LOCK_WRITE: u32 = 128; +pub const LOCK_RW: u32 = 192; +pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; +pub const RESOLVE_NO_XDEV: u32 = 1; +pub const RESOLVE_NO_MAGICLINKS: u32 = 2; +pub const RESOLVE_NO_SYMLINKS: u32 = 4; +pub const RESOLVE_BENEATH: u32 = 8; +pub const RESOLVE_IN_ROOT: u32 = 16; +pub const RESOLVE_CACHED: u32 = 32; +pub const F_SETLEASE: u32 = 1024; +pub const F_GETLEASE: u32 = 1025; +pub const F_CANCELLK: u32 = 1029; +pub const F_DUPFD_CLOEXEC: u32 = 1030; +pub const F_NOTIFY: u32 = 1026; +pub const F_SETPIPE_SZ: u32 = 1031; +pub const F_GETPIPE_SZ: u32 = 1032; +pub const F_ADD_SEALS: u32 = 1033; +pub const F_GET_SEALS: u32 = 1034; +pub const F_SEAL_SEAL: u32 = 1; +pub const F_SEAL_SHRINK: u32 = 2; +pub const F_SEAL_GROW: u32 = 4; +pub const F_SEAL_WRITE: u32 = 8; +pub const F_SEAL_FUTURE_WRITE: u32 = 16; +pub const F_SEAL_EXEC: u32 = 32; +pub const F_GET_RW_HINT: u32 = 1035; +pub const F_SET_RW_HINT: u32 = 1036; +pub const F_GET_FILE_RW_HINT: u32 = 1037; +pub const F_SET_FILE_RW_HINT: u32 = 1038; +pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; +pub const RWH_WRITE_LIFE_NONE: u32 = 1; +pub const RWH_WRITE_LIFE_SHORT: u32 = 2; +pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; +pub const RWH_WRITE_LIFE_LONG: u32 = 4; +pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; +pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; +pub const DN_ACCESS: u32 = 1; +pub const DN_MODIFY: u32 = 2; +pub const DN_CREATE: u32 = 4; +pub const DN_DELETE: u32 = 8; +pub const DN_RENAME: u32 = 16; +pub const DN_ATTRIB: u32 = 32; +pub const DN_MULTISHOT: u32 = 2147483648; +pub const AT_FDCWD: i32 = -100; +pub const AT_SYMLINK_NOFOLLOW: u32 = 256; +pub const AT_EACCESS: u32 = 512; +pub const AT_REMOVEDIR: u32 = 512; +pub const AT_SYMLINK_FOLLOW: u32 = 1024; +pub const AT_NO_AUTOMOUNT: u32 = 2048; +pub const AT_EMPTY_PATH: u32 = 4096; +pub const AT_STATX_SYNC_TYPE: u32 = 24576; +pub const AT_STATX_SYNC_AS_STAT: u32 = 0; +pub const AT_STATX_FORCE_SYNC: u32 = 8192; +pub const AT_STATX_DONT_SYNC: u32 = 16384; +pub const AT_RECURSIVE: u32 = 32768; +pub const EPOLL_CLOEXEC: u32 = 524288; +pub const EPOLL_CTL_ADD: u32 = 1; +pub const EPOLL_CTL_DEL: u32 = 2; +pub const EPOLL_CTL_MOD: u32 = 3; +pub const POSIX_FADV_NORMAL: u32 = 0; +pub const POSIX_FADV_RANDOM: u32 = 1; +pub const POSIX_FADV_SEQUENTIAL: u32 = 2; +pub const POSIX_FADV_WILLNEED: u32 = 3; +pub const POSIX_FADV_DONTNEED: u32 = 4; +pub const POSIX_FADV_NOREUSE: u32 = 5; +pub const FALLOC_FL_KEEP_SIZE: u32 = 1; +pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; +pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; +pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; +pub const FALLOC_FL_ZERO_RANGE: u32 = 16; +pub const FALLOC_FL_INSERT_RANGE: u32 = 32; +pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 536805376; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const OPEN_TREE_CLOEXEC: u32 = 524288; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const FUTEX_WAIT: u32 = 0; +pub const FUTEX_WAKE: u32 = 1; +pub const FUTEX_FD: u32 = 2; +pub const FUTEX_REQUEUE: u32 = 3; +pub const FUTEX_CMP_REQUEUE: u32 = 4; +pub const FUTEX_WAKE_OP: u32 = 5; +pub const FUTEX_LOCK_PI: u32 = 6; +pub const FUTEX_UNLOCK_PI: u32 = 7; +pub const FUTEX_TRYLOCK_PI: u32 = 8; +pub const FUTEX_WAIT_BITSET: u32 = 9; +pub const FUTEX_WAKE_BITSET: u32 = 10; +pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; +pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; +pub const FUTEX_LOCK_PI2: u32 = 13; +pub const FUTEX_PRIVATE_FLAG: u32 = 128; +pub const FUTEX_CLOCK_REALTIME: u32 = 256; +pub const FUTEX_CMD_MASK: i32 = -385; +pub const FUTEX_WAIT_PRIVATE: u32 = 128; +pub const FUTEX_WAKE_PRIVATE: u32 = 129; +pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; +pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; +pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; +pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; +pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; +pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; +pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; +pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; +pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; +pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; +pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; +pub const FUTEX_32: u32 = 2; +pub const FUTEX_WAITV_MAX: u32 = 128; +pub const FUTEX_WAITERS: u32 = 2147483648; +pub const FUTEX_OWNER_DIED: u32 = 1073741824; +pub const FUTEX_TID_MASK: u32 = 1073741823; +pub const ROBUST_LIST_LIMIT: u32 = 2048; +pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; +pub const FUTEX_OP_SET: u32 = 0; +pub const FUTEX_OP_ADD: u32 = 1; +pub const FUTEX_OP_OR: u32 = 2; +pub const FUTEX_OP_ANDN: u32 = 3; +pub const FUTEX_OP_XOR: u32 = 4; +pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; +pub const FUTEX_OP_CMP_EQ: u32 = 0; +pub const FUTEX_OP_CMP_NE: u32 = 1; +pub const FUTEX_OP_CMP_LT: u32 = 2; +pub const FUTEX_OP_CMP_LE: u32 = 3; +pub const FUTEX_OP_CMP_GT: u32 = 4; +pub const FUTEX_OP_CMP_GE: u32 = 5; +pub const IN_ACCESS: u32 = 1; +pub const IN_MODIFY: u32 = 2; +pub const IN_ATTRIB: u32 = 4; +pub const IN_CLOSE_WRITE: u32 = 8; +pub const IN_CLOSE_NOWRITE: u32 = 16; +pub const IN_OPEN: u32 = 32; +pub const IN_MOVED_FROM: u32 = 64; +pub const IN_MOVED_TO: u32 = 128; +pub const IN_CREATE: u32 = 256; +pub const IN_DELETE: u32 = 512; +pub const IN_DELETE_SELF: u32 = 1024; +pub const IN_MOVE_SELF: u32 = 2048; +pub const IN_UNMOUNT: u32 = 8192; +pub const IN_Q_OVERFLOW: u32 = 16384; +pub const IN_IGNORED: u32 = 32768; +pub const IN_CLOSE: u32 = 24; +pub const IN_MOVE: u32 = 192; +pub const IN_ONLYDIR: u32 = 16777216; +pub const IN_DONT_FOLLOW: u32 = 33554432; +pub const IN_EXCL_UNLINK: u32 = 67108864; +pub const IN_MASK_CREATE: u32 = 268435456; +pub const IN_MASK_ADD: u32 = 536870912; +pub const IN_ISDIR: u32 = 1073741824; +pub const IN_ONESHOT: u32 = 2147483648; +pub const IN_ALL_EVENTS: u32 = 4095; +pub const IN_CLOEXEC: u32 = 524288; +pub const IN_NONBLOCK: u32 = 2048; +pub const ADFS_SUPER_MAGIC: u32 = 44533; +pub const AFFS_SUPER_MAGIC: u32 = 44543; +pub const AFS_SUPER_MAGIC: u32 = 1397113167; +pub const AUTOFS_SUPER_MAGIC: u32 = 391; +pub const CEPH_SUPER_MAGIC: u32 = 12805120; +pub const CODA_SUPER_MAGIC: u32 = 1937076805; +pub const CRAMFS_MAGIC: u32 = 684539205; +pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; +pub const DEBUGFS_MAGIC: u32 = 1684170528; +pub const SECURITYFS_MAGIC: u32 = 1935894131; +pub const SELINUX_MAGIC: u32 = 4185718668; +pub const SMACK_MAGIC: u32 = 1128357203; +pub const RAMFS_MAGIC: u32 = 2240043254; +pub const TMPFS_MAGIC: u32 = 16914836; +pub const HUGETLBFS_MAGIC: u32 = 2508478710; +pub const SQUASHFS_MAGIC: u32 = 1936814952; +pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; +pub const EFS_SUPER_MAGIC: u32 = 4278867; +pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; +pub const EXT2_SUPER_MAGIC: u32 = 61267; +pub const EXT3_SUPER_MAGIC: u32 = 61267; +pub const XENFS_SUPER_MAGIC: u32 = 2881100148; +pub const EXT4_SUPER_MAGIC: u32 = 61267; +pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; +pub const NILFS_SUPER_MAGIC: u32 = 13364; +pub const F2FS_SUPER_MAGIC: u32 = 4076150800; +pub const HPFS_SUPER_MAGIC: u32 = 4187351113; +pub const ISOFS_SUPER_MAGIC: u32 = 38496; +pub const JFFS2_SUPER_MAGIC: u32 = 29366; +pub const XFS_SUPER_MAGIC: u32 = 1481003842; +pub const PSTOREFS_MAGIC: u32 = 1634035564; +pub const EFIVARFS_MAGIC: u32 = 3730735588; +pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; +pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; +pub const FUSE_SUPER_MAGIC: u32 = 1702057286; +pub const MINIX_SUPER_MAGIC: u32 = 4991; +pub const MINIX_SUPER_MAGIC2: u32 = 5007; +pub const MINIX2_SUPER_MAGIC: u32 = 9320; +pub const MINIX2_SUPER_MAGIC2: u32 = 9336; +pub const MINIX3_SUPER_MAGIC: u32 = 19802; +pub const MSDOS_SUPER_MAGIC: u32 = 19780; +pub const EXFAT_SUPER_MAGIC: u32 = 538032816; +pub const NCP_SUPER_MAGIC: u32 = 22092; +pub const NFS_SUPER_MAGIC: u32 = 26985; +pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; +pub const OPENPROM_SUPER_MAGIC: u32 = 40865; +pub const QNX4_SUPER_MAGIC: u32 = 47; +pub const QNX6_SUPER_MAGIC: u32 = 1746473250; +pub const AFS_FS_MAGIC: u32 = 1799439955; +pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; +pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9] = b"ReIsErFs\0"; +pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr2Fs\0"; +pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr3Fs\0"; +pub const SMB_SUPER_MAGIC: u32 = 20859; +pub const CIFS_SUPER_MAGIC: u32 = 4283649346; +pub const SMB2_SUPER_MAGIC: u32 = 4266872130; +pub const CGROUP_SUPER_MAGIC: u32 = 2613483; +pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; +pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; +pub const STACK_END_MAGIC: u32 = 1470918301; +pub const TRACEFS_MAGIC: u32 = 1953653091; +pub const V9FS_MAGIC: u32 = 16914839; +pub const BDEVFS_MAGIC: u32 = 1650746742; +pub const DAXFS_MAGIC: u32 = 1684300152; +pub const BINFMTFS_MAGIC: u32 = 1112100429; +pub const DEVPTS_SUPER_MAGIC: u32 = 7377; +pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; +pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; +pub const PIPEFS_MAGIC: u32 = 1346981957; +pub const PROC_SUPER_MAGIC: u32 = 40864; +pub const SOCKFS_MAGIC: u32 = 1397703499; +pub const SYSFS_MAGIC: u32 = 1650812274; +pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; +pub const MTD_INODE_FS_MAGIC: u32 = 288389204; +pub const ANON_INODE_FS_MAGIC: u32 = 151263540; +pub const BTRFS_TEST_MAGIC: u32 = 1936880249; +pub const NSFS_MAGIC: u32 = 1853056627; +pub const BPF_FS_MAGIC: u32 = 3405662737; +pub const AAFS_MAGIC: u32 = 1513908720; +pub const ZONEFS_MAGIC: u32 = 1515144787; +pub const UDF_SUPER_MAGIC: u32 = 352400198; +pub const DMA_BUF_MAGIC: u32 = 1145913666; +pub const DEVMEM_MAGIC: u32 = 1162691661; +pub const SECRETMEM_MAGIC: u32 = 1397048141; +pub const PROT_READ: u32 = 1; +pub const PROT_WRITE: u32 = 2; +pub const PROT_EXEC: u32 = 4; +pub const PROT_SEM: u32 = 8; +pub const PROT_NONE: u32 = 0; +pub const PROT_GROWSDOWN: u32 = 16777216; +pub const PROT_GROWSUP: u32 = 33554432; +pub const MAP_TYPE: u32 = 15; +pub const MAP_FIXED: u32 = 16; +pub const MAP_ANONYMOUS: u32 = 32; +pub const MAP_POPULATE: u32 = 32768; +pub const MAP_NONBLOCK: u32 = 65536; +pub const MAP_STACK: u32 = 131072; +pub const MAP_HUGETLB: u32 = 262144; +pub const MAP_SYNC: u32 = 524288; +pub const MAP_FIXED_NOREPLACE: u32 = 1048576; +pub const MAP_UNINITIALIZED: u32 = 67108864; +pub const MLOCK_ONFAULT: u32 = 1; +pub const MS_ASYNC: u32 = 1; +pub const MS_INVALIDATE: u32 = 2; +pub const MS_SYNC: u32 = 4; +pub const MADV_NORMAL: u32 = 0; +pub const MADV_RANDOM: u32 = 1; +pub const MADV_SEQUENTIAL: u32 = 2; +pub const MADV_WILLNEED: u32 = 3; +pub const MADV_DONTNEED: u32 = 4; +pub const MADV_FREE: u32 = 8; +pub const MADV_REMOVE: u32 = 9; +pub const MADV_DONTFORK: u32 = 10; +pub const MADV_DOFORK: u32 = 11; +pub const MADV_HWPOISON: u32 = 100; +pub const MADV_SOFT_OFFLINE: u32 = 101; +pub const MADV_MERGEABLE: u32 = 12; +pub const MADV_UNMERGEABLE: u32 = 13; +pub const MADV_HUGEPAGE: u32 = 14; +pub const MADV_NOHUGEPAGE: u32 = 15; +pub const MADV_DONTDUMP: u32 = 16; +pub const MADV_DODUMP: u32 = 17; +pub const MADV_WIPEONFORK: u32 = 18; +pub const MADV_KEEPONFORK: u32 = 19; +pub const MADV_COLD: u32 = 20; +pub const MADV_PAGEOUT: u32 = 21; +pub const MADV_POPULATE_READ: u32 = 22; +pub const MADV_POPULATE_WRITE: u32 = 23; +pub const MADV_DONTNEED_LOCKED: u32 = 24; +pub const MADV_COLLAPSE: u32 = 25; +pub const MAP_FILE: u32 = 0; +pub const PKEY_DISABLE_ACCESS: u32 = 1; +pub const PKEY_DISABLE_WRITE: u32 = 2; +pub const PKEY_ACCESS_MASK: u32 = 3; +pub const PROT_SAO: u32 = 16; +pub const MAP_RENAME: u32 = 32; +pub const MAP_NORESERVE: u32 = 64; +pub const MAP_LOCKED: u32 = 128; +pub const MAP_GROWSDOWN: u32 = 256; +pub const MAP_DENYWRITE: u32 = 2048; +pub const MAP_EXECUTABLE: u32 = 4096; +pub const MCL_CURRENT: u32 = 8192; +pub const MCL_FUTURE: u32 = 16384; +pub const MCL_ONFAULT: u32 = 32768; +pub const PKEY_DISABLE_EXECUTE: u32 = 4; +pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; +pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; +pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; +pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; +pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; +pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; +pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; +pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; +pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; +pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; +pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; +pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; +pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; +pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; +pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; +pub const MREMAP_MAYMOVE: u32 = 1; +pub const MREMAP_FIXED: u32 = 2; +pub const MREMAP_DONTUNMAP: u32 = 4; +pub const OVERCOMMIT_GUESS: u32 = 0; +pub const OVERCOMMIT_ALWAYS: u32 = 1; +pub const OVERCOMMIT_NEVER: u32 = 2; +pub const MAP_SHARED: u32 = 1; +pub const MAP_PRIVATE: u32 = 2; +pub const MAP_SHARED_VALIDATE: u32 = 3; +pub const MAP_HUGE_SHIFT: u32 = 26; +pub const MAP_HUGE_MASK: u32 = 63; +pub const MAP_HUGE_16KB: u32 = 939524096; +pub const MAP_HUGE_64KB: u32 = 1073741824; +pub const MAP_HUGE_512KB: u32 = 1275068416; +pub const MAP_HUGE_1MB: u32 = 1342177280; +pub const MAP_HUGE_2MB: u32 = 1409286144; +pub const MAP_HUGE_8MB: u32 = 1543503872; +pub const MAP_HUGE_16MB: u32 = 1610612736; +pub const MAP_HUGE_32MB: u32 = 1677721600; +pub const MAP_HUGE_256MB: u32 = 1879048192; +pub const MAP_HUGE_512MB: u32 = 1946157056; +pub const MAP_HUGE_1GB: u32 = 2013265920; +pub const MAP_HUGE_2GB: u32 = 2080374784; +pub const MAP_HUGE_16GB: u32 = 2281701376; +pub const POLLIN: u32 = 1; +pub const POLLPRI: u32 = 2; +pub const POLLOUT: u32 = 4; +pub const POLLERR: u32 = 8; +pub const POLLHUP: u32 = 16; +pub const POLLNVAL: u32 = 32; +pub const POLLRDNORM: u32 = 64; +pub const POLLRDBAND: u32 = 128; +pub const POLLWRNORM: u32 = 256; +pub const POLLWRBAND: u32 = 512; +pub const POLLMSG: u32 = 1024; +pub const POLLREMOVE: u32 = 4096; +pub const POLLRDHUP: u32 = 8192; +pub const GRND_NONBLOCK: u32 = 1; +pub const GRND_RANDOM: u32 = 2; +pub const GRND_INSECURE: u32 = 4; +pub const ITIMER_REAL: u32 = 0; +pub const ITIMER_VIRTUAL: u32 = 1; +pub const ITIMER_PROF: u32 = 2; +pub const CLOCK_REALTIME: u32 = 0; +pub const CLOCK_MONOTONIC: u32 = 1; +pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; +pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; +pub const CLOCK_MONOTONIC_RAW: u32 = 4; +pub const CLOCK_REALTIME_COARSE: u32 = 5; +pub const CLOCK_MONOTONIC_COARSE: u32 = 6; +pub const CLOCK_BOOTTIME: u32 = 7; +pub const CLOCK_REALTIME_ALARM: u32 = 8; +pub const CLOCK_BOOTTIME_ALARM: u32 = 9; +pub const CLOCK_SGI_CYCLE: u32 = 10; +pub const CLOCK_TAI: u32 = 11; +pub const MAX_CLOCKS: u32 = 16; +pub const CLOCKS_MASK: u32 = 1; +pub const CLOCKS_MONO: u32 = 1; +pub const TIMER_ABSTIME: u32 = 1; +pub const RUSAGE_SELF: u32 = 0; +pub const RUSAGE_CHILDREN: i32 = -1; +pub const RUSAGE_BOTH: i32 = -2; +pub const RUSAGE_THREAD: u32 = 1; +pub const RLIM64_INFINITY: i32 = -1; +pub const PRIO_MIN: i32 = -20; +pub const PRIO_MAX: u32 = 20; +pub const PRIO_PROCESS: u32 = 0; +pub const PRIO_PGRP: u32 = 1; +pub const PRIO_USER: u32 = 2; +pub const _STK_LIM: u32 = 8388608; +pub const MLOCK_LIMIT: u32 = 8388608; +pub const RLIMIT_CPU: u32 = 0; +pub const RLIMIT_FSIZE: u32 = 1; +pub const RLIMIT_DATA: u32 = 2; +pub const RLIMIT_STACK: u32 = 3; +pub const RLIMIT_CORE: u32 = 4; +pub const RLIMIT_RSS: u32 = 5; +pub const RLIMIT_NPROC: u32 = 6; +pub const RLIMIT_NOFILE: u32 = 7; +pub const RLIMIT_MEMLOCK: u32 = 8; +pub const RLIMIT_AS: u32 = 9; +pub const RLIMIT_LOCKS: u32 = 10; +pub const RLIMIT_SIGPENDING: u32 = 11; +pub const RLIMIT_MSGQUEUE: u32 = 12; +pub const RLIMIT_NICE: u32 = 13; +pub const RLIMIT_RTPRIO: u32 = 14; +pub const RLIMIT_RTTIME: u32 = 15; +pub const RLIM_NLIMITS: u32 = 16; +pub const RLIM_INFINITY: i32 = -1; +pub const CSIGNAL: u32 = 255; +pub const CLONE_VM: u32 = 256; +pub const CLONE_FS: u32 = 512; +pub const CLONE_FILES: u32 = 1024; +pub const CLONE_SIGHAND: u32 = 2048; +pub const CLONE_PIDFD: u32 = 4096; +pub const CLONE_PTRACE: u32 = 8192; +pub const CLONE_VFORK: u32 = 16384; +pub const CLONE_PARENT: u32 = 32768; +pub const CLONE_THREAD: u32 = 65536; +pub const CLONE_NEWNS: u32 = 131072; +pub const CLONE_SYSVSEM: u32 = 262144; +pub const CLONE_SETTLS: u32 = 524288; +pub const CLONE_PARENT_SETTID: u32 = 1048576; +pub const CLONE_CHILD_CLEARTID: u32 = 2097152; +pub const CLONE_DETACHED: u32 = 4194304; +pub const CLONE_UNTRACED: u32 = 8388608; +pub const CLONE_CHILD_SETTID: u32 = 16777216; +pub const CLONE_NEWCGROUP: u32 = 33554432; +pub const CLONE_NEWUTS: u32 = 67108864; +pub const CLONE_NEWIPC: u32 = 134217728; +pub const CLONE_NEWUSER: u32 = 268435456; +pub const CLONE_NEWPID: u32 = 536870912; +pub const CLONE_NEWNET: u32 = 1073741824; +pub const CLONE_IO: u32 = 2147483648; +pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; +pub const CLONE_INTO_CGROUP: u64 = 8589934592; +pub const CLONE_NEWTIME: u32 = 128; +pub const CLONE_ARGS_SIZE_VER0: u32 = 64; +pub const CLONE_ARGS_SIZE_VER1: u32 = 80; +pub const CLONE_ARGS_SIZE_VER2: u32 = 88; +pub const SCHED_NORMAL: u32 = 0; +pub const SCHED_FIFO: u32 = 1; +pub const SCHED_RR: u32 = 2; +pub const SCHED_BATCH: u32 = 3; +pub const SCHED_IDLE: u32 = 5; +pub const SCHED_DEADLINE: u32 = 6; +pub const SCHED_RESET_ON_FORK: u32 = 1073741824; +pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; +pub const SCHED_FLAG_RECLAIM: u32 = 2; +pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; +pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; +pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; +pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; +pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; +pub const SCHED_FLAG_KEEP_ALL: u32 = 24; +pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; +pub const SCHED_FLAG_ALL: u32 = 127; +pub const _NSIG: u32 = 64; +pub const _NSIG_BPW: u32 = 64; +pub const _NSIG_WORDS: u32 = 1; +pub const SIGHUP: u32 = 1; +pub const SIGINT: u32 = 2; +pub const SIGQUIT: u32 = 3; +pub const SIGILL: u32 = 4; +pub const SIGTRAP: u32 = 5; +pub const SIGABRT: u32 = 6; +pub const SIGIOT: u32 = 6; +pub const SIGBUS: u32 = 7; +pub const SIGFPE: u32 = 8; +pub const SIGKILL: u32 = 9; +pub const SIGUSR1: u32 = 10; +pub const SIGSEGV: u32 = 11; +pub const SIGUSR2: u32 = 12; +pub const SIGPIPE: u32 = 13; +pub const SIGALRM: u32 = 14; +pub const SIGTERM: u32 = 15; +pub const SIGSTKFLT: u32 = 16; +pub const SIGCHLD: u32 = 17; +pub const SIGCONT: u32 = 18; +pub const SIGSTOP: u32 = 19; +pub const SIGTSTP: u32 = 20; +pub const SIGTTIN: u32 = 21; +pub const SIGTTOU: u32 = 22; +pub const SIGURG: u32 = 23; +pub const SIGXCPU: u32 = 24; +pub const SIGXFSZ: u32 = 25; +pub const SIGVTALRM: u32 = 26; +pub const SIGPROF: u32 = 27; +pub const SIGWINCH: u32 = 28; +pub const SIGIO: u32 = 29; +pub const SIGPOLL: u32 = 29; +pub const SIGPWR: u32 = 30; +pub const SIGSYS: u32 = 31; +pub const SIGUNUSED: u32 = 31; +pub const SIGRTMIN: u32 = 32; +pub const SIGRTMAX: u32 = 64; +pub const SA_RESTORER: u32 = 67108864; +pub const MINSIGSTKSZ: u32 = 8192; +pub const SIGSTKSZ: u32 = 32768; +pub const SA_NOCLDSTOP: u32 = 1; +pub const SA_NOCLDWAIT: u32 = 2; +pub const SA_SIGINFO: u32 = 4; +pub const SA_UNSUPPORTED: u32 = 1024; +pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SA_ONSTACK: u32 = 134217728; +pub const SA_RESTART: u32 = 268435456; +pub const SA_NODEFER: u32 = 1073741824; +pub const SA_RESETHAND: u32 = 2147483648; +pub const SA_NOMASK: u32 = 1073741824; +pub const SA_ONESHOT: u32 = 2147483648; +pub const SIG_BLOCK: u32 = 0; +pub const SIG_UNBLOCK: u32 = 1; +pub const SIG_SETMASK: u32 = 2; +pub const SI_MAX_SIZE: u32 = 128; +pub const SI_USER: u32 = 0; +pub const SI_KERNEL: u32 = 128; +pub const SI_QUEUE: i32 = -1; +pub const SI_TIMER: i32 = -2; +pub const SI_MESGQ: i32 = -3; +pub const SI_ASYNCIO: i32 = -4; +pub const SI_SIGIO: i32 = -5; +pub const SI_TKILL: i32 = -6; +pub const SI_DETHREAD: i32 = -7; +pub const SI_ASYNCNL: i32 = -60; +pub const ILL_ILLOPC: u32 = 1; +pub const ILL_ILLOPN: u32 = 2; +pub const ILL_ILLADR: u32 = 3; +pub const ILL_ILLTRP: u32 = 4; +pub const ILL_PRVOPC: u32 = 5; +pub const ILL_PRVREG: u32 = 6; +pub const ILL_COPROC: u32 = 7; +pub const ILL_BADSTK: u32 = 8; +pub const ILL_BADIADDR: u32 = 9; +pub const __ILL_BREAK: u32 = 10; +pub const __ILL_BNDMOD: u32 = 11; +pub const NSIGILL: u32 = 11; +pub const FPE_INTDIV: u32 = 1; +pub const FPE_INTOVF: u32 = 2; +pub const FPE_FLTDIV: u32 = 3; +pub const FPE_FLTOVF: u32 = 4; +pub const FPE_FLTUND: u32 = 5; +pub const FPE_FLTRES: u32 = 6; +pub const FPE_FLTINV: u32 = 7; +pub const FPE_FLTSUB: u32 = 8; +pub const __FPE_DECOVF: u32 = 9; +pub const __FPE_DECDIV: u32 = 10; +pub const __FPE_DECERR: u32 = 11; +pub const __FPE_INVASC: u32 = 12; +pub const __FPE_INVDEC: u32 = 13; +pub const FPE_FLTUNK: u32 = 14; +pub const FPE_CONDTRAP: u32 = 15; +pub const NSIGFPE: u32 = 15; +pub const SEGV_MAPERR: u32 = 1; +pub const SEGV_ACCERR: u32 = 2; +pub const SEGV_BNDERR: u32 = 3; +pub const SEGV_PKUERR: u32 = 4; +pub const SEGV_ACCADI: u32 = 5; +pub const SEGV_ADIDERR: u32 = 6; +pub const SEGV_ADIPERR: u32 = 7; +pub const SEGV_MTEAERR: u32 = 8; +pub const SEGV_MTESERR: u32 = 9; +pub const NSIGSEGV: u32 = 9; +pub const BUS_ADRALN: u32 = 1; +pub const BUS_ADRERR: u32 = 2; +pub const BUS_OBJERR: u32 = 3; +pub const BUS_MCEERR_AR: u32 = 4; +pub const BUS_MCEERR_AO: u32 = 5; +pub const NSIGBUS: u32 = 5; +pub const TRAP_BRKPT: u32 = 1; +pub const TRAP_TRACE: u32 = 2; +pub const TRAP_BRANCH: u32 = 3; +pub const TRAP_HWBKPT: u32 = 4; +pub const TRAP_UNK: u32 = 5; +pub const TRAP_PERF: u32 = 6; +pub const NSIGTRAP: u32 = 6; +pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; +pub const CLD_EXITED: u32 = 1; +pub const CLD_KILLED: u32 = 2; +pub const CLD_DUMPED: u32 = 3; +pub const CLD_TRAPPED: u32 = 4; +pub const CLD_STOPPED: u32 = 5; +pub const CLD_CONTINUED: u32 = 6; +pub const NSIGCHLD: u32 = 6; +pub const POLL_IN: u32 = 1; +pub const POLL_OUT: u32 = 2; +pub const POLL_MSG: u32 = 3; +pub const POLL_ERR: u32 = 4; +pub const POLL_PRI: u32 = 5; +pub const POLL_HUP: u32 = 6; +pub const NSIGPOLL: u32 = 6; +pub const SYS_SECCOMP: u32 = 1; +pub const SYS_USER_DISPATCH: u32 = 2; +pub const NSIGSYS: u32 = 2; +pub const EMT_TAGOVF: u32 = 1; +pub const NSIGEMT: u32 = 1; +pub const SIGEV_SIGNAL: u32 = 0; +pub const SIGEV_NONE: u32 = 1; +pub const SIGEV_THREAD: u32 = 2; +pub const SIGEV_THREAD_ID: u32 = 4; +pub const SIGEV_MAX_SIZE: u32 = 64; +pub const SS_ONSTACK: u32 = 1; +pub const SS_DISABLE: u32 = 2; +pub const SS_AUTODISARM: u32 = 2147483648; +pub const SS_FLAG_BITS: u32 = 2147483648; +pub const S_IFMT: u32 = 61440; +pub const S_IFSOCK: u32 = 49152; +pub const S_IFLNK: u32 = 40960; +pub const S_IFREG: u32 = 32768; +pub const S_IFBLK: u32 = 24576; +pub const S_IFDIR: u32 = 16384; +pub const S_IFCHR: u32 = 8192; +pub const S_IFIFO: u32 = 4096; +pub const S_ISUID: u32 = 2048; +pub const S_ISGID: u32 = 1024; +pub const S_ISVTX: u32 = 512; +pub const S_IRWXU: u32 = 448; +pub const S_IRUSR: u32 = 256; +pub const S_IWUSR: u32 = 128; +pub const S_IXUSR: u32 = 64; +pub const S_IRWXG: u32 = 56; +pub const S_IRGRP: u32 = 32; +pub const S_IWGRP: u32 = 16; +pub const S_IXGRP: u32 = 8; +pub const S_IRWXO: u32 = 7; +pub const S_IROTH: u32 = 4; +pub const S_IWOTH: u32 = 2; +pub const S_IXOTH: u32 = 1; +pub const STATX_TYPE: u32 = 1; +pub const STATX_MODE: u32 = 2; +pub const STATX_NLINK: u32 = 4; +pub const STATX_UID: u32 = 8; +pub const STATX_GID: u32 = 16; +pub const STATX_ATIME: u32 = 32; +pub const STATX_MTIME: u32 = 64; +pub const STATX_CTIME: u32 = 128; +pub const STATX_INO: u32 = 256; +pub const STATX_SIZE: u32 = 512; +pub const STATX_BLOCKS: u32 = 1024; +pub const STATX_BASIC_STATS: u32 = 2047; +pub const STATX_BTIME: u32 = 2048; +pub const STATX_MNT_ID: u32 = 4096; +pub const STATX_DIOALIGN: u32 = 8192; +pub const STATX__RESERVED: u32 = 2147483648; +pub const STATX_ALL: u32 = 4095; +pub const STATX_ATTR_COMPRESSED: u32 = 4; +pub const STATX_ATTR_IMMUTABLE: u32 = 16; +pub const STATX_ATTR_APPEND: u32 = 32; +pub const STATX_ATTR_NODUMP: u32 = 64; +pub const STATX_ATTR_ENCRYPTED: u32 = 2048; +pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; +pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; +pub const STATX_ATTR_VERITY: u32 = 1048576; +pub const STATX_ATTR_DAX: u32 = 2097152; +pub const TIOCM_LE: u32 = 1; +pub const TIOCM_DTR: u32 = 2; +pub const TIOCM_RTS: u32 = 4; +pub const TIOCM_ST: u32 = 8; +pub const TIOCM_SR: u32 = 16; +pub const TIOCM_CTS: u32 = 32; +pub const TIOCM_CAR: u32 = 64; +pub const TIOCM_RNG: u32 = 128; +pub const TIOCM_DSR: u32 = 256; +pub const TIOCM_CD: u32 = 64; +pub const TIOCM_RI: u32 = 128; +pub const TIOCM_OUT1: u32 = 8192; +pub const TIOCM_OUT2: u32 = 16384; +pub const TIOCM_LOOP: u32 = 32768; +pub const TIOCPKT_DATA: u32 = 0; +pub const TIOCPKT_FLUSHREAD: u32 = 1; +pub const TIOCPKT_FLUSHWRITE: u32 = 2; +pub const TIOCPKT_STOP: u32 = 4; +pub const TIOCPKT_START: u32 = 8; +pub const TIOCPKT_NOSTOP: u32 = 16; +pub const TIOCPKT_DOSTOP: u32 = 32; +pub const TIOCPKT_IOCTL: u32 = 64; +pub const TIOCSER_TEMT: u32 = 1; +pub const IGNBRK: u32 = 1; +pub const BRKINT: u32 = 2; +pub const IGNPAR: u32 = 4; +pub const PARMRK: u32 = 8; +pub const INPCK: u32 = 16; +pub const ISTRIP: u32 = 32; +pub const INLCR: u32 = 64; +pub const IGNCR: u32 = 128; +pub const ICRNL: u32 = 256; +pub const IXANY: u32 = 2048; +pub const OPOST: u32 = 1; +pub const OCRNL: u32 = 8; +pub const ONOCR: u32 = 16; +pub const ONLRET: u32 = 32; +pub const OFILL: u32 = 64; +pub const OFDEL: u32 = 128; +pub const B0: u32 = 0; +pub const B50: u32 = 1; +pub const B75: u32 = 2; +pub const B110: u32 = 3; +pub const B134: u32 = 4; +pub const B150: u32 = 5; +pub const B200: u32 = 6; +pub const B300: u32 = 7; +pub const B600: u32 = 8; +pub const B1200: u32 = 9; +pub const B1800: u32 = 10; +pub const B2400: u32 = 11; +pub const B4800: u32 = 12; +pub const B9600: u32 = 13; +pub const B19200: u32 = 14; +pub const B38400: u32 = 15; +pub const EXTA: u32 = 14; +pub const EXTB: u32 = 15; +pub const ADDRB: u32 = 536870912; +pub const CMSPAR: u32 = 1073741824; +pub const CRTSCTS: u32 = 2147483648; +pub const IBSHIFT: u32 = 16; +pub const TCOOFF: u32 = 0; +pub const TCOON: u32 = 1; +pub const TCIOFF: u32 = 2; +pub const TCION: u32 = 3; +pub const TCIFLUSH: u32 = 0; +pub const TCOFLUSH: u32 = 1; +pub const TCIOFLUSH: u32 = 2; +pub const NCCS: u32 = 19; +pub const VINTR: u32 = 0; +pub const VQUIT: u32 = 1; +pub const VERASE: u32 = 2; +pub const VKILL: u32 = 3; +pub const VEOF: u32 = 4; +pub const VMIN: u32 = 5; +pub const VEOL: u32 = 6; +pub const VTIME: u32 = 7; +pub const VEOL2: u32 = 8; +pub const VSWTC: u32 = 9; +pub const VWERASE: u32 = 10; +pub const VREPRINT: u32 = 11; +pub const VSUSP: u32 = 12; +pub const VSTART: u32 = 13; +pub const VSTOP: u32 = 14; +pub const VLNEXT: u32 = 15; +pub const VDISCARD: u32 = 16; +pub const IXON: u32 = 512; +pub const IXOFF: u32 = 1024; +pub const IUCLC: u32 = 4096; +pub const IMAXBEL: u32 = 8192; +pub const IUTF8: u32 = 16384; +pub const ONLCR: u32 = 2; +pub const OLCUC: u32 = 4; +pub const NLDLY: u32 = 768; +pub const NL0: u32 = 0; +pub const NL1: u32 = 256; +pub const NL2: u32 = 512; +pub const NL3: u32 = 768; +pub const TABDLY: u32 = 3072; +pub const TAB0: u32 = 0; +pub const TAB1: u32 = 1024; +pub const TAB2: u32 = 2048; +pub const TAB3: u32 = 3072; +pub const XTABS: u32 = 3072; +pub const CRDLY: u32 = 12288; +pub const CR0: u32 = 0; +pub const CR1: u32 = 4096; +pub const CR2: u32 = 8192; +pub const CR3: u32 = 12288; +pub const FFDLY: u32 = 16384; +pub const FF0: u32 = 0; +pub const FF1: u32 = 16384; +pub const BSDLY: u32 = 32768; +pub const BS0: u32 = 0; +pub const BS1: u32 = 32768; +pub const VTDLY: u32 = 65536; +pub const VT0: u32 = 0; +pub const VT1: u32 = 65536; +pub const CBAUD: u32 = 255; +pub const CBAUDEX: u32 = 0; +pub const BOTHER: u32 = 31; +pub const B57600: u32 = 16; +pub const B115200: u32 = 17; +pub const B230400: u32 = 18; +pub const B460800: u32 = 19; +pub const B500000: u32 = 20; +pub const B576000: u32 = 21; +pub const B921600: u32 = 22; +pub const B1000000: u32 = 23; +pub const B1152000: u32 = 24; +pub const B1500000: u32 = 25; +pub const B2000000: u32 = 26; +pub const B2500000: u32 = 27; +pub const B3000000: u32 = 28; +pub const B3500000: u32 = 29; +pub const B4000000: u32 = 30; +pub const CSIZE: u32 = 768; +pub const CS5: u32 = 0; +pub const CS6: u32 = 256; +pub const CS7: u32 = 512; +pub const CS8: u32 = 768; +pub const CSTOPB: u32 = 1024; +pub const CREAD: u32 = 2048; +pub const PARENB: u32 = 4096; +pub const PARODD: u32 = 8192; +pub const HUPCL: u32 = 16384; +pub const CLOCAL: u32 = 32768; +pub const CIBAUD: u32 = 16711680; +pub const ISIG: u32 = 128; +pub const ICANON: u32 = 256; +pub const XCASE: u32 = 16384; +pub const ECHO: u32 = 8; +pub const ECHOE: u32 = 2; +pub const ECHOK: u32 = 4; +pub const ECHONL: u32 = 16; +pub const NOFLSH: u32 = 2147483648; +pub const TOSTOP: u32 = 4194304; +pub const ECHOCTL: u32 = 64; +pub const ECHOPRT: u32 = 32; +pub const ECHOKE: u32 = 1; +pub const FLUSHO: u32 = 8388608; +pub const PENDIN: u32 = 536870912; +pub const IEXTEN: u32 = 1024; +pub const EXTPROC: u32 = 268435456; +pub const TCSANOW: u32 = 0; +pub const TCSADRAIN: u32 = 1; +pub const TCSAFLUSH: u32 = 2; +pub const NCC: u32 = 10; +pub const _VINTR: u32 = 0; +pub const _VQUIT: u32 = 1; +pub const _VERASE: u32 = 2; +pub const _VKILL: u32 = 3; +pub const _VEOF: u32 = 4; +pub const _VMIN: u32 = 5; +pub const _VEOL: u32 = 6; +pub const _VTIME: u32 = 7; +pub const _VEOL2: u32 = 8; +pub const _VSWTC: u32 = 9; +pub const UIO_FASTIOV: u32 = 8; +pub const UIO_MAXIOV: u32 = 1024; +pub const __NR_restart_syscall: u32 = 0; +pub const __NR_exit: u32 = 1; +pub const __NR_fork: u32 = 2; +pub const __NR_read: u32 = 3; +pub const __NR_write: u32 = 4; +pub const __NR_open: u32 = 5; +pub const __NR_close: u32 = 6; +pub const __NR_waitpid: u32 = 7; +pub const __NR_creat: u32 = 8; +pub const __NR_link: u32 = 9; +pub const __NR_unlink: u32 = 10; +pub const __NR_execve: u32 = 11; +pub const __NR_chdir: u32 = 12; +pub const __NR_time: u32 = 13; +pub const __NR_mknod: u32 = 14; +pub const __NR_chmod: u32 = 15; +pub const __NR_lchown: u32 = 16; +pub const __NR_break: u32 = 17; +pub const __NR_oldstat: u32 = 18; +pub const __NR_lseek: u32 = 19; +pub const __NR_getpid: u32 = 20; +pub const __NR_mount: u32 = 21; +pub const __NR_umount: u32 = 22; +pub const __NR_setuid: u32 = 23; +pub const __NR_getuid: u32 = 24; +pub const __NR_stime: u32 = 25; +pub const __NR_ptrace: u32 = 26; +pub const __NR_alarm: u32 = 27; +pub const __NR_oldfstat: u32 = 28; +pub const __NR_pause: u32 = 29; +pub const __NR_utime: u32 = 30; +pub const __NR_stty: u32 = 31; +pub const __NR_gtty: u32 = 32; +pub const __NR_access: u32 = 33; +pub const __NR_nice: u32 = 34; +pub const __NR_ftime: u32 = 35; +pub const __NR_sync: u32 = 36; +pub const __NR_kill: u32 = 37; +pub const __NR_rename: u32 = 38; +pub const __NR_mkdir: u32 = 39; +pub const __NR_rmdir: u32 = 40; +pub const __NR_dup: u32 = 41; +pub const __NR_pipe: u32 = 42; +pub const __NR_times: u32 = 43; +pub const __NR_prof: u32 = 44; +pub const __NR_brk: u32 = 45; +pub const __NR_setgid: u32 = 46; +pub const __NR_getgid: u32 = 47; +pub const __NR_signal: u32 = 48; +pub const __NR_geteuid: u32 = 49; +pub const __NR_getegid: u32 = 50; +pub const __NR_acct: u32 = 51; +pub const __NR_umount2: u32 = 52; +pub const __NR_lock: u32 = 53; +pub const __NR_ioctl: u32 = 54; +pub const __NR_fcntl: u32 = 55; +pub const __NR_mpx: u32 = 56; +pub const __NR_setpgid: u32 = 57; +pub const __NR_ulimit: u32 = 58; +pub const __NR_oldolduname: u32 = 59; +pub const __NR_umask: u32 = 60; +pub const __NR_chroot: u32 = 61; +pub const __NR_ustat: u32 = 62; +pub const __NR_dup2: u32 = 63; +pub const __NR_getppid: u32 = 64; +pub const __NR_getpgrp: u32 = 65; +pub const __NR_setsid: u32 = 66; +pub const __NR_sigaction: u32 = 67; +pub const __NR_sgetmask: u32 = 68; +pub const __NR_ssetmask: u32 = 69; +pub const __NR_setreuid: u32 = 70; +pub const __NR_setregid: u32 = 71; +pub const __NR_sigsuspend: u32 = 72; +pub const __NR_sigpending: u32 = 73; +pub const __NR_sethostname: u32 = 74; +pub const __NR_setrlimit: u32 = 75; +pub const __NR_getrlimit: u32 = 76; +pub const __NR_getrusage: u32 = 77; +pub const __NR_gettimeofday: u32 = 78; +pub const __NR_settimeofday: u32 = 79; +pub const __NR_getgroups: u32 = 80; +pub const __NR_setgroups: u32 = 81; +pub const __NR_select: u32 = 82; +pub const __NR_symlink: u32 = 83; +pub const __NR_oldlstat: u32 = 84; +pub const __NR_readlink: u32 = 85; +pub const __NR_uselib: u32 = 86; +pub const __NR_swapon: u32 = 87; +pub const __NR_reboot: u32 = 88; +pub const __NR_readdir: u32 = 89; +pub const __NR_mmap: u32 = 90; +pub const __NR_munmap: u32 = 91; +pub const __NR_truncate: u32 = 92; +pub const __NR_ftruncate: u32 = 93; +pub const __NR_fchmod: u32 = 94; +pub const __NR_fchown: u32 = 95; +pub const __NR_getpriority: u32 = 96; +pub const __NR_setpriority: u32 = 97; +pub const __NR_profil: u32 = 98; +pub const __NR_statfs: u32 = 99; +pub const __NR_fstatfs: u32 = 100; +pub const __NR_ioperm: u32 = 101; +pub const __NR_socketcall: u32 = 102; +pub const __NR_syslog: u32 = 103; +pub const __NR_setitimer: u32 = 104; +pub const __NR_getitimer: u32 = 105; +pub const __NR_stat: u32 = 106; +pub const __NR_lstat: u32 = 107; +pub const __NR_fstat: u32 = 108; +pub const __NR_olduname: u32 = 109; +pub const __NR_iopl: u32 = 110; +pub const __NR_vhangup: u32 = 111; +pub const __NR_idle: u32 = 112; +pub const __NR_vm86: u32 = 113; +pub const __NR_wait4: u32 = 114; +pub const __NR_swapoff: u32 = 115; +pub const __NR_sysinfo: u32 = 116; +pub const __NR_ipc: u32 = 117; +pub const __NR_fsync: u32 = 118; +pub const __NR_sigreturn: u32 = 119; +pub const __NR_clone: u32 = 120; +pub const __NR_setdomainname: u32 = 121; +pub const __NR_uname: u32 = 122; +pub const __NR_modify_ldt: u32 = 123; +pub const __NR_adjtimex: u32 = 124; +pub const __NR_mprotect: u32 = 125; +pub const __NR_sigprocmask: u32 = 126; +pub const __NR_create_module: u32 = 127; +pub const __NR_init_module: u32 = 128; +pub const __NR_delete_module: u32 = 129; +pub const __NR_get_kernel_syms: u32 = 130; +pub const __NR_quotactl: u32 = 131; +pub const __NR_getpgid: u32 = 132; +pub const __NR_fchdir: u32 = 133; +pub const __NR_bdflush: u32 = 134; +pub const __NR_sysfs: u32 = 135; +pub const __NR_personality: u32 = 136; +pub const __NR_afs_syscall: u32 = 137; +pub const __NR_setfsuid: u32 = 138; +pub const __NR_setfsgid: u32 = 139; +pub const __NR__llseek: u32 = 140; +pub const __NR_getdents: u32 = 141; +pub const __NR__newselect: u32 = 142; +pub const __NR_flock: u32 = 143; +pub const __NR_msync: u32 = 144; +pub const __NR_readv: u32 = 145; +pub const __NR_writev: u32 = 146; +pub const __NR_getsid: u32 = 147; +pub const __NR_fdatasync: u32 = 148; +pub const __NR__sysctl: u32 = 149; +pub const __NR_mlock: u32 = 150; +pub const __NR_munlock: u32 = 151; +pub const __NR_mlockall: u32 = 152; +pub const __NR_munlockall: u32 = 153; +pub const __NR_sched_setparam: u32 = 154; +pub const __NR_sched_getparam: u32 = 155; +pub const __NR_sched_setscheduler: u32 = 156; +pub const __NR_sched_getscheduler: u32 = 157; +pub const __NR_sched_yield: u32 = 158; +pub const __NR_sched_get_priority_max: u32 = 159; +pub const __NR_sched_get_priority_min: u32 = 160; +pub const __NR_sched_rr_get_interval: u32 = 161; +pub const __NR_nanosleep: u32 = 162; +pub const __NR_mremap: u32 = 163; +pub const __NR_setresuid: u32 = 164; +pub const __NR_getresuid: u32 = 165; +pub const __NR_query_module: u32 = 166; +pub const __NR_poll: u32 = 167; +pub const __NR_nfsservctl: u32 = 168; +pub const __NR_setresgid: u32 = 169; +pub const __NR_getresgid: u32 = 170; +pub const __NR_prctl: u32 = 171; +pub const __NR_rt_sigreturn: u32 = 172; +pub const __NR_rt_sigaction: u32 = 173; +pub const __NR_rt_sigprocmask: u32 = 174; +pub const __NR_rt_sigpending: u32 = 175; +pub const __NR_rt_sigtimedwait: u32 = 176; +pub const __NR_rt_sigqueueinfo: u32 = 177; +pub const __NR_rt_sigsuspend: u32 = 178; +pub const __NR_pread64: u32 = 179; +pub const __NR_pwrite64: u32 = 180; +pub const __NR_chown: u32 = 181; +pub const __NR_getcwd: u32 = 182; +pub const __NR_capget: u32 = 183; +pub const __NR_capset: u32 = 184; +pub const __NR_sigaltstack: u32 = 185; +pub const __NR_sendfile: u32 = 186; +pub const __NR_getpmsg: u32 = 187; +pub const __NR_putpmsg: u32 = 188; +pub const __NR_vfork: u32 = 189; +pub const __NR_ugetrlimit: u32 = 190; +pub const __NR_readahead: u32 = 191; +pub const __NR_pciconfig_read: u32 = 198; +pub const __NR_pciconfig_write: u32 = 199; +pub const __NR_pciconfig_iobase: u32 = 200; +pub const __NR_multiplexer: u32 = 201; +pub const __NR_getdents64: u32 = 202; +pub const __NR_pivot_root: u32 = 203; +pub const __NR_madvise: u32 = 205; +pub const __NR_mincore: u32 = 206; +pub const __NR_gettid: u32 = 207; +pub const __NR_tkill: u32 = 208; +pub const __NR_setxattr: u32 = 209; +pub const __NR_lsetxattr: u32 = 210; +pub const __NR_fsetxattr: u32 = 211; +pub const __NR_getxattr: u32 = 212; +pub const __NR_lgetxattr: u32 = 213; +pub const __NR_fgetxattr: u32 = 214; +pub const __NR_listxattr: u32 = 215; +pub const __NR_llistxattr: u32 = 216; +pub const __NR_flistxattr: u32 = 217; +pub const __NR_removexattr: u32 = 218; +pub const __NR_lremovexattr: u32 = 219; +pub const __NR_fremovexattr: u32 = 220; +pub const __NR_futex: u32 = 221; +pub const __NR_sched_setaffinity: u32 = 222; +pub const __NR_sched_getaffinity: u32 = 223; +pub const __NR_tuxcall: u32 = 225; +pub const __NR_io_setup: u32 = 227; +pub const __NR_io_destroy: u32 = 228; +pub const __NR_io_getevents: u32 = 229; +pub const __NR_io_submit: u32 = 230; +pub const __NR_io_cancel: u32 = 231; +pub const __NR_set_tid_address: u32 = 232; +pub const __NR_fadvise64: u32 = 233; +pub const __NR_exit_group: u32 = 234; +pub const __NR_lookup_dcookie: u32 = 235; +pub const __NR_epoll_create: u32 = 236; +pub const __NR_epoll_ctl: u32 = 237; +pub const __NR_epoll_wait: u32 = 238; +pub const __NR_remap_file_pages: u32 = 239; +pub const __NR_timer_create: u32 = 240; +pub const __NR_timer_settime: u32 = 241; +pub const __NR_timer_gettime: u32 = 242; +pub const __NR_timer_getoverrun: u32 = 243; +pub const __NR_timer_delete: u32 = 244; +pub const __NR_clock_settime: u32 = 245; +pub const __NR_clock_gettime: u32 = 246; +pub const __NR_clock_getres: u32 = 247; +pub const __NR_clock_nanosleep: u32 = 248; +pub const __NR_swapcontext: u32 = 249; +pub const __NR_tgkill: u32 = 250; +pub const __NR_utimes: u32 = 251; +pub const __NR_statfs64: u32 = 252; +pub const __NR_fstatfs64: u32 = 253; +pub const __NR_rtas: u32 = 255; +pub const __NR_sys_debug_setcontext: u32 = 256; +pub const __NR_migrate_pages: u32 = 258; +pub const __NR_mbind: u32 = 259; +pub const __NR_get_mempolicy: u32 = 260; +pub const __NR_set_mempolicy: u32 = 261; +pub const __NR_mq_open: u32 = 262; +pub const __NR_mq_unlink: u32 = 263; +pub const __NR_mq_timedsend: u32 = 264; +pub const __NR_mq_timedreceive: u32 = 265; +pub const __NR_mq_notify: u32 = 266; +pub const __NR_mq_getsetattr: u32 = 267; +pub const __NR_kexec_load: u32 = 268; +pub const __NR_add_key: u32 = 269; +pub const __NR_request_key: u32 = 270; +pub const __NR_keyctl: u32 = 271; +pub const __NR_waitid: u32 = 272; +pub const __NR_ioprio_set: u32 = 273; +pub const __NR_ioprio_get: u32 = 274; +pub const __NR_inotify_init: u32 = 275; +pub const __NR_inotify_add_watch: u32 = 276; +pub const __NR_inotify_rm_watch: u32 = 277; +pub const __NR_spu_run: u32 = 278; +pub const __NR_spu_create: u32 = 279; +pub const __NR_pselect6: u32 = 280; +pub const __NR_ppoll: u32 = 281; +pub const __NR_unshare: u32 = 282; +pub const __NR_splice: u32 = 283; +pub const __NR_tee: u32 = 284; +pub const __NR_vmsplice: u32 = 285; +pub const __NR_openat: u32 = 286; +pub const __NR_mkdirat: u32 = 287; +pub const __NR_mknodat: u32 = 288; +pub const __NR_fchownat: u32 = 289; +pub const __NR_futimesat: u32 = 290; +pub const __NR_newfstatat: u32 = 291; +pub const __NR_unlinkat: u32 = 292; +pub const __NR_renameat: u32 = 293; +pub const __NR_linkat: u32 = 294; +pub const __NR_symlinkat: u32 = 295; +pub const __NR_readlinkat: u32 = 296; +pub const __NR_fchmodat: u32 = 297; +pub const __NR_faccessat: u32 = 298; +pub const __NR_get_robust_list: u32 = 299; +pub const __NR_set_robust_list: u32 = 300; +pub const __NR_move_pages: u32 = 301; +pub const __NR_getcpu: u32 = 302; +pub const __NR_epoll_pwait: u32 = 303; +pub const __NR_utimensat: u32 = 304; +pub const __NR_signalfd: u32 = 305; +pub const __NR_timerfd_create: u32 = 306; +pub const __NR_eventfd: u32 = 307; +pub const __NR_sync_file_range2: u32 = 308; +pub const __NR_fallocate: u32 = 309; +pub const __NR_subpage_prot: u32 = 310; +pub const __NR_timerfd_settime: u32 = 311; +pub const __NR_timerfd_gettime: u32 = 312; +pub const __NR_signalfd4: u32 = 313; +pub const __NR_eventfd2: u32 = 314; +pub const __NR_epoll_create1: u32 = 315; +pub const __NR_dup3: u32 = 316; +pub const __NR_pipe2: u32 = 317; +pub const __NR_inotify_init1: u32 = 318; +pub const __NR_perf_event_open: u32 = 319; +pub const __NR_preadv: u32 = 320; +pub const __NR_pwritev: u32 = 321; +pub const __NR_rt_tgsigqueueinfo: u32 = 322; +pub const __NR_fanotify_init: u32 = 323; +pub const __NR_fanotify_mark: u32 = 324; +pub const __NR_prlimit64: u32 = 325; +pub const __NR_socket: u32 = 326; +pub const __NR_bind: u32 = 327; +pub const __NR_connect: u32 = 328; +pub const __NR_listen: u32 = 329; +pub const __NR_accept: u32 = 330; +pub const __NR_getsockname: u32 = 331; +pub const __NR_getpeername: u32 = 332; +pub const __NR_socketpair: u32 = 333; +pub const __NR_send: u32 = 334; +pub const __NR_sendto: u32 = 335; +pub const __NR_recv: u32 = 336; +pub const __NR_recvfrom: u32 = 337; +pub const __NR_shutdown: u32 = 338; +pub const __NR_setsockopt: u32 = 339; +pub const __NR_getsockopt: u32 = 340; +pub const __NR_sendmsg: u32 = 341; +pub const __NR_recvmsg: u32 = 342; +pub const __NR_recvmmsg: u32 = 343; +pub const __NR_accept4: u32 = 344; +pub const __NR_name_to_handle_at: u32 = 345; +pub const __NR_open_by_handle_at: u32 = 346; +pub const __NR_clock_adjtime: u32 = 347; +pub const __NR_syncfs: u32 = 348; +pub const __NR_sendmmsg: u32 = 349; +pub const __NR_setns: u32 = 350; +pub const __NR_process_vm_readv: u32 = 351; +pub const __NR_process_vm_writev: u32 = 352; +pub const __NR_finit_module: u32 = 353; +pub const __NR_kcmp: u32 = 354; +pub const __NR_sched_setattr: u32 = 355; +pub const __NR_sched_getattr: u32 = 356; +pub const __NR_renameat2: u32 = 357; +pub const __NR_seccomp: u32 = 358; +pub const __NR_getrandom: u32 = 359; +pub const __NR_memfd_create: u32 = 360; +pub const __NR_bpf: u32 = 361; +pub const __NR_execveat: u32 = 362; +pub const __NR_switch_endian: u32 = 363; +pub const __NR_userfaultfd: u32 = 364; +pub const __NR_membarrier: u32 = 365; +pub const __NR_mlock2: u32 = 378; +pub const __NR_copy_file_range: u32 = 379; +pub const __NR_preadv2: u32 = 380; +pub const __NR_pwritev2: u32 = 381; +pub const __NR_kexec_file_load: u32 = 382; +pub const __NR_statx: u32 = 383; +pub const __NR_pkey_alloc: u32 = 384; +pub const __NR_pkey_free: u32 = 385; +pub const __NR_pkey_mprotect: u32 = 386; +pub const __NR_rseq: u32 = 387; +pub const __NR_io_pgetevents: u32 = 388; +pub const __NR_semtimedop: u32 = 392; +pub const __NR_semget: u32 = 393; +pub const __NR_semctl: u32 = 394; +pub const __NR_shmget: u32 = 395; +pub const __NR_shmctl: u32 = 396; +pub const __NR_shmat: u32 = 397; +pub const __NR_shmdt: u32 = 398; +pub const __NR_msgget: u32 = 399; +pub const __NR_msgsnd: u32 = 400; +pub const __NR_msgrcv: u32 = 401; +pub const __NR_msgctl: u32 = 402; +pub const __NR_pidfd_send_signal: u32 = 424; +pub const __NR_io_uring_setup: u32 = 425; +pub const __NR_io_uring_enter: u32 = 426; +pub const __NR_io_uring_register: u32 = 427; +pub const __NR_open_tree: u32 = 428; +pub const __NR_move_mount: u32 = 429; +pub const __NR_fsopen: u32 = 430; +pub const __NR_fsconfig: u32 = 431; +pub const __NR_fsmount: u32 = 432; +pub const __NR_fspick: u32 = 433; +pub const __NR_pidfd_open: u32 = 434; +pub const __NR_clone3: u32 = 435; +pub const __NR_close_range: u32 = 436; +pub const __NR_openat2: u32 = 437; +pub const __NR_pidfd_getfd: u32 = 438; +pub const __NR_faccessat2: u32 = 439; +pub const __NR_process_madvise: u32 = 440; +pub const __NR_epoll_pwait2: u32 = 441; +pub const __NR_mount_setattr: u32 = 442; +pub const __NR_quotactl_fd: u32 = 443; +pub const __NR_landlock_create_ruleset: u32 = 444; +pub const __NR_landlock_add_rule: u32 = 445; +pub const __NR_landlock_restrict_self: u32 = 446; +pub const __NR_process_mrelease: u32 = 448; +pub const __NR_futex_waitv: u32 = 449; +pub const __NR_set_mempolicy_home_node: u32 = 450; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const P_ALL: u32 = 0; +pub const P_PID: u32 = 1; +pub const P_PGID: u32 = 2; +pub const P_PIDFD: u32 = 3; +pub const XATTR_CREATE: u32 = 1; +pub const XATTR_REPLACE: u32 = 2; +pub const XATTR_OS2_PREFIX: &[u8; 5] = b"os2.\0"; +pub const XATTR_MAC_OSX_PREFIX: &[u8; 5] = b"osx.\0"; +pub const XATTR_BTRFS_PREFIX: &[u8; 7] = b"btrfs.\0"; +pub const XATTR_HURD_PREFIX: &[u8; 5] = b"gnu.\0"; +pub const XATTR_SECURITY_PREFIX: &[u8; 10] = b"security.\0"; +pub const XATTR_SYSTEM_PREFIX: &[u8; 8] = b"system.\0"; +pub const XATTR_TRUSTED_PREFIX: &[u8; 9] = b"trusted.\0"; +pub const XATTR_USER_PREFIX: &[u8; 6] = b"user.\0"; +pub const XATTR_EVM_SUFFIX: &[u8; 4] = b"evm\0"; +pub const XATTR_NAME_EVM: &[u8; 13] = b"security.evm\0"; +pub const XATTR_IMA_SUFFIX: &[u8; 4] = b"ima\0"; +pub const XATTR_NAME_IMA: &[u8; 13] = b"security.ima\0"; +pub const XATTR_SELINUX_SUFFIX: &[u8; 8] = b"selinux\0"; +pub const XATTR_NAME_SELINUX: &[u8; 17] = b"security.selinux\0"; +pub const XATTR_SMACK_SUFFIX: &[u8; 8] = b"SMACK64\0"; +pub const XATTR_SMACK_IPIN: &[u8; 12] = b"SMACK64IPIN\0"; +pub const XATTR_SMACK_IPOUT: &[u8; 13] = b"SMACK64IPOUT\0"; +pub const XATTR_SMACK_EXEC: &[u8; 12] = b"SMACK64EXEC\0"; +pub const XATTR_SMACK_TRANSMUTE: &[u8; 17] = b"SMACK64TRANSMUTE\0"; +pub const XATTR_SMACK_MMAP: &[u8; 12] = b"SMACK64MMAP\0"; +pub const XATTR_NAME_SMACK: &[u8; 17] = b"security.SMACK64\0"; +pub const XATTR_NAME_SMACKIPIN: &[u8; 21] = b"security.SMACK64IPIN\0"; +pub const XATTR_NAME_SMACKIPOUT: &[u8; 22] = b"security.SMACK64IPOUT\0"; +pub const XATTR_NAME_SMACKEXEC: &[u8; 21] = b"security.SMACK64EXEC\0"; +pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26] = b"security.SMACK64TRANSMUTE\0"; +pub const XATTR_NAME_SMACKMMAP: &[u8; 21] = b"security.SMACK64MMAP\0"; +pub const XATTR_APPARMOR_SUFFIX: &[u8; 9] = b"apparmor\0"; +pub const XATTR_NAME_APPARMOR: &[u8; 18] = b"security.apparmor\0"; +pub const XATTR_CAPS_SUFFIX: &[u8; 11] = b"capability\0"; +pub const XATTR_NAME_CAPS: &[u8; 20] = b"security.capability\0"; +pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17] = b"posix_acl_access\0"; +pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24] = b"system.posix_acl_access\0"; +pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18] = b"posix_acl_default\0"; +pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25] = b"system.posix_acl_default\0"; +pub const MFD_CLOEXEC: u32 = 1; +pub const MFD_ALLOW_SEALING: u32 = 2; +pub const MFD_HUGETLB: u32 = 4; +pub const MFD_NOEXEC_SEAL: u32 = 8; +pub const MFD_EXEC: u32 = 16; +pub const MFD_HUGE_SHIFT: u32 = 26; +pub const MFD_HUGE_MASK: u32 = 63; +pub const MFD_HUGE_64KB: u32 = 1073741824; +pub const MFD_HUGE_512KB: u32 = 1275068416; +pub const MFD_HUGE_1MB: u32 = 1342177280; +pub const MFD_HUGE_2MB: u32 = 1409286144; +pub const MFD_HUGE_8MB: u32 = 1543503872; +pub const MFD_HUGE_16MB: u32 = 1610612736; +pub const MFD_HUGE_32MB: u32 = 1677721600; +pub const MFD_HUGE_256MB: u32 = 1879048192; +pub const MFD_HUGE_512MB: u32 = 1946157056; +pub const MFD_HUGE_1GB: u32 = 2013265920; +pub const MFD_HUGE_2GB: u32 = 2080374784; +pub const MFD_HUGE_16GB: u32 = 2281701376; +pub const TFD_TIMER_ABSTIME: u32 = 1; +pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; +pub const TFD_CLOEXEC: u32 = 524288; +pub const TFD_NONBLOCK: u32 = 2048; +pub const USERFAULTFD_IOC: u32 = 170; +pub const _UFFDIO_REGISTER: u32 = 0; +pub const _UFFDIO_UNREGISTER: u32 = 1; +pub const _UFFDIO_WAKE: u32 = 2; +pub const _UFFDIO_COPY: u32 = 3; +pub const _UFFDIO_ZEROPAGE: u32 = 4; +pub const _UFFDIO_WRITEPROTECT: u32 = 6; +pub const _UFFDIO_CONTINUE: u32 = 7; +pub const _UFFDIO_API: u32 = 63; +pub const UFFDIO: u32 = 170; +pub const UFFD_EVENT_PAGEFAULT: u32 = 18; +pub const UFFD_EVENT_FORK: u32 = 19; +pub const UFFD_EVENT_REMAP: u32 = 20; +pub const UFFD_EVENT_REMOVE: u32 = 21; +pub const UFFD_EVENT_UNMAP: u32 = 22; +pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; +pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; +pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; +pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; +pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; +pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; +pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; +pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; +pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; +pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; +pub const UFFD_FEATURE_SIGBUS: u32 = 128; +pub const UFFD_FEATURE_THREAD_ID: u32 = 256; +pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; +pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; +pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; +pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; +pub const UFFD_USER_MODE_ONLY: u32 = 1; +pub const DT_UNKNOWN: u32 = 0; +pub const DT_FIFO: u32 = 1; +pub const DT_CHR: u32 = 2; +pub const DT_DIR: u32 = 4; +pub const DT_BLK: u32 = 6; +pub const DT_REG: u32 = 8; +pub const DT_LNK: u32 = 10; +pub const DT_SOCK: u32 = 12; +pub const STAT_HAVE_NSEC: u32 = 1; +pub const F_OK: u32 = 0; +pub const R_OK: u32 = 4; +pub const W_OK: u32 = 2; +pub const X_OK: u32 = 1; +pub const UTIME_NOW: u32 = 1073741823; +pub const UTIME_OMIT: u32 = 1073741822; +pub const MNT_FORCE: u32 = 1; +pub const MNT_DETACH: u32 = 2; +pub const MNT_EXPIRE: u32 = 4; +pub const UMOUNT_NOFOLLOW: u32 = 8; +pub const UMOUNT_UNUSED: u32 = 2147483648; +pub const STDIN_FILENO: u32 = 0; +pub const STDOUT_FILENO: u32 = 1; +pub const STDERR_FILENO: u32 = 2; +pub const RWF_HIPRI: u32 = 1; +pub const RWF_DSYNC: u32 = 2; +pub const RWF_SYNC: u32 = 4; +pub const RWF_NOWAIT: u32 = 8; +pub const RWF_APPEND: u32 = 16; +pub const EFD_SEMAPHORE: u32 = 1; +pub const EFD_CLOEXEC: u32 = 524288; +pub const EFD_NONBLOCK: u32 = 2048; +pub const EPOLLIN: u32 = 1; +pub const EPOLLPRI: u32 = 2; +pub const EPOLLOUT: u32 = 4; +pub const EPOLLERR: u32 = 8; +pub const EPOLLHUP: u32 = 16; +pub const EPOLLNVAL: u32 = 32; +pub const EPOLLRDNORM: u32 = 64; +pub const EPOLLRDBAND: u32 = 128; +pub const EPOLLWRNORM: u32 = 256; +pub const EPOLLWRBAND: u32 = 512; +pub const EPOLLMSG: u32 = 1024; +pub const EPOLLRDHUP: u32 = 8192; +pub const EPOLLEXCLUSIVE: u32 = 268435456; +pub const EPOLLWAKEUP: u32 = 536870912; +pub const EPOLLONESHOT: u32 = 1073741824; +pub const EPOLLET: u32 = 2147483648; +pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; +pub const TFD_CREATE_FLAGS: u32 = 526336; +pub const TFD_SETTIME_FLAGS: u32 = 1; +pub const UFFD_API: u32 = 170; +pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; +pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; +pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; +pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; +pub const UFFDIO_COPY_MODE_WP: u32 = 2; +pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; +pub const SPLICE_F_MOVE: u32 = 1; +pub const SPLICE_F_NONBLOCK: u32 = 2; +pub const SPLICE_F_MORE: u32 = 4; +pub const SPLICE_F_GIFT: u32 = 8; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, } #[repr(u32)] #[non_exhaustive] @@ -4615,703 +2715,161 @@ pub enum membarrier_cmd_flag { MEMBARRIER_CMD_FLAG_CPU = 1, } -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct uffd_msg { -pub event: __u8, -pub reserved1: __u8, -pub reserved2: __u16, -pub reserved3: __u32, -pub arg: uffd_msg__bindgen_ty_1, -} #[repr(C)] #[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1 { -pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, -pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, -pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, -pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, -pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { -pub flags: __u64, -pub address: __u64, -pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { -pub ptid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { -pub ufd: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { -pub from: __u64, -pub to: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { -pub start: __u64, -pub end: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { -pub reserved1: __u64, -pub reserved2: __u64, -pub reserved3: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_api { -pub api: __u64, -pub features: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_range { -pub start: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_register { -pub range: uffdio_range, -pub mode: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_copy { -pub dst: __u64, -pub src: __u64, -pub len: __u64, -pub mode: __u64, -pub copy: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_zeropage { -pub range: uffdio_range, -pub mode: __u64, -pub zeropage: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_writeprotect { -pub range: uffdio_range, -pub mode: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_continue { -pub range: uffdio_range, -pub mode: __u64, -pub mapped: __s64, -} -#[repr(C)] -pub struct io_uring_sqe { -pub opcode: __u8, -pub flags: __u8, -pub ioprio: __u16, -pub fd: __s32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, -pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, -pub len: __u32, -pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, -pub user_data: __u64, -pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, -pub personality: __u16, -pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, -pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_1 { -pub off: __u64, -pub addr2: __u64, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { -pub cmd_op: __u32, -pub __pad1: __u32, +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_2 { -pub addr: __u64, -pub splice_off_in: __u64, +pub union sigval { +pub sival_int: crate::ctypes::c_int, +pub sival_ptr: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_3 { -pub rw_flags: __kernel_rwf_t, -pub fsync_flags: __u32, -pub poll_events: __u16, -pub poll32_events: __u32, -pub sync_range_flags: __u32, -pub msg_flags: __u32, -pub timeout_flags: __u32, -pub accept_flags: __u32, -pub cancel_flags: __u32, -pub open_flags: __u32, -pub statx_flags: __u32, -pub fadvise_advice: __u32, -pub splice_flags: __u32, -pub rename_flags: __u32, -pub unlink_flags: __u32, -pub hardlink_flags: __u32, -pub xattr_flags: __u32, -pub msg_ring_flags: __u32, -pub uring_cmd_flags: __u32, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_4 { -pub buf_index: __u16, -pub buf_group: __u16, +pub union __sifields { +pub _kill: __sifields__bindgen_ty_1, +pub _timer: __sifields__bindgen_ty_2, +pub _rt: __sifields__bindgen_ty_3, +pub _sigchld: __sifields__bindgen_ty_4, +pub _sigfault: __sifields__bindgen_ty_5, +pub _sigpoll: __sifields__bindgen_ty_6, +pub _sigsys: __sifields__bindgen_ty_7, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_5 { -pub splice_fd_in: __s32, -pub file_index: __u32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { -pub addr_len: __u16, -pub __pad3: [__u16; 1usize], -} -#[repr(C)] -pub struct io_uring_sqe__bindgen_ty_6 { -pub __bindgen_anon_1: __BindgenUnionField, -pub cmd: __BindgenUnionField<[__u8; 0usize]>, -pub bindgen_union_field: [u64; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { -pub addr3: __u64, -pub __pad2: [__u64; 1usize], -} -pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT; -pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT; -pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT; -pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT; -pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT; -pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT; -pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -IOSQE_FIXED_FILE_BIT = 0, -IOSQE_IO_DRAIN_BIT = 1, -IOSQE_IO_LINK_BIT = 2, -IOSQE_IO_HARDLINK_BIT = 3, -IOSQE_ASYNC_BIT = 4, -IOSQE_BUFFER_SELECT_BIT = 5, -IOSQE_CQE_SKIP_SUCCESS_BIT = 6, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum io_uring_op { -IORING_OP_NOP = 0, -IORING_OP_READV = 1, -IORING_OP_WRITEV = 2, -IORING_OP_FSYNC = 3, -IORING_OP_READ_FIXED = 4, -IORING_OP_WRITE_FIXED = 5, -IORING_OP_POLL_ADD = 6, -IORING_OP_POLL_REMOVE = 7, -IORING_OP_SYNC_FILE_RANGE = 8, -IORING_OP_SENDMSG = 9, -IORING_OP_RECVMSG = 10, -IORING_OP_TIMEOUT = 11, -IORING_OP_TIMEOUT_REMOVE = 12, -IORING_OP_ACCEPT = 13, -IORING_OP_ASYNC_CANCEL = 14, -IORING_OP_LINK_TIMEOUT = 15, -IORING_OP_CONNECT = 16, -IORING_OP_FALLOCATE = 17, -IORING_OP_OPENAT = 18, -IORING_OP_CLOSE = 19, -IORING_OP_FILES_UPDATE = 20, -IORING_OP_STATX = 21, -IORING_OP_READ = 22, -IORING_OP_WRITE = 23, -IORING_OP_FADVISE = 24, -IORING_OP_MADVISE = 25, -IORING_OP_SEND = 26, -IORING_OP_RECV = 27, -IORING_OP_OPENAT2 = 28, -IORING_OP_EPOLL_CTL = 29, -IORING_OP_SPLICE = 30, -IORING_OP_PROVIDE_BUFFERS = 31, -IORING_OP_REMOVE_BUFFERS = 32, -IORING_OP_TEE = 33, -IORING_OP_SHUTDOWN = 34, -IORING_OP_RENAMEAT = 35, -IORING_OP_UNLINKAT = 36, -IORING_OP_MKDIRAT = 37, -IORING_OP_SYMLINKAT = 38, -IORING_OP_LINKAT = 39, -IORING_OP_MSG_RING = 40, -IORING_OP_FSETXATTR = 41, -IORING_OP_SETXATTR = 42, -IORING_OP_FGETXATTR = 43, -IORING_OP_GETXATTR = 44, -IORING_OP_SOCKET = 45, -IORING_OP_URING_CMD = 46, -IORING_OP_SEND_ZC = 47, -IORING_OP_SENDMSG_ZC = 48, -IORING_OP_LAST = 49, -} -pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA; -pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_8 { -IORING_MSG_DATA = 0, -IORING_MSG_SEND_FD = 1, -} -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_cqe { -pub user_data: __u64, -pub res: __s32, -pub flags: __u32, -pub big_cqe: __IncompleteArrayField<__u64>, -} -pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_9 { -IORING_CQE_BUFFER_SHIFT = 16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_sqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub flags: __u32, -pub dropped: __u32, -pub array: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_cqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub overflow: __u32, -pub cqes: __u32, -pub flags: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_params { -pub sq_entries: __u32, -pub cq_entries: __u32, -pub flags: __u32, -pub sq_thread_cpu: __u32, -pub sq_thread_idle: __u32, -pub features: __u32, -pub wq_fd: __u32, -pub resv: [__u32; 3usize], -pub sq_off: io_sqring_offsets, -pub cq_off: io_cqring_offsets, -} -pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS; -pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS; -pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES; -pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES; -pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD; -pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD; -pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE; -pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC; -pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE; -pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY; -pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY; -pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS; -pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS; -pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2; -pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2; -pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2; -pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE; -pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF; -pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF; -pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS; -pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS; -pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS; -pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING; -pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING; -pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL; -pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE; -pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST; -pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_USE_REGISTERED_RING; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_10 { -IORING_REGISTER_BUFFERS = 0, -IORING_UNREGISTER_BUFFERS = 1, -IORING_REGISTER_FILES = 2, -IORING_UNREGISTER_FILES = 3, -IORING_REGISTER_EVENTFD = 4, -IORING_UNREGISTER_EVENTFD = 5, -IORING_REGISTER_FILES_UPDATE = 6, -IORING_REGISTER_EVENTFD_ASYNC = 7, -IORING_REGISTER_PROBE = 8, -IORING_REGISTER_PERSONALITY = 9, -IORING_UNREGISTER_PERSONALITY = 10, -IORING_REGISTER_RESTRICTIONS = 11, -IORING_REGISTER_ENABLE_RINGS = 12, -IORING_REGISTER_FILES2 = 13, -IORING_REGISTER_FILES_UPDATE2 = 14, -IORING_REGISTER_BUFFERS2 = 15, -IORING_REGISTER_BUFFERS_UPDATE = 16, -IORING_REGISTER_IOWQ_AFF = 17, -IORING_UNREGISTER_IOWQ_AFF = 18, -IORING_REGISTER_IOWQ_MAX_WORKERS = 19, -IORING_REGISTER_RING_FDS = 20, -IORING_UNREGISTER_RING_FDS = 21, -IORING_REGISTER_PBUF_RING = 22, -IORING_UNREGISTER_PBUF_RING = 23, -IORING_REGISTER_SYNC_CANCEL = 24, -IORING_REGISTER_FILE_ALLOC_RANGE = 25, -IORING_REGISTER_LAST = 26, -IORING_REGISTER_USE_REGISTERED_RING = 2147483648, -} -pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND; -pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_11 { -IO_WQ_BOUND = 0, -IO_WQ_UNBOUND = 1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_files_update { -pub offset: __u32, -pub resv: __u32, -pub fds: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_register { -pub nr: __u32, -pub flags: __u32, -pub resv2: __u64, -pub data: __u64, -pub tags: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update2 { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -pub tags: __u64, -pub nr: __u32, -pub resv2: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_slot { -pub tag: __u64, -pub resv: [__u64; 3usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_register { -pub nr_slots: __u32, -pub resv: __u32, -pub resv2: __u64, -pub data: __u64, -pub resv3: __u64, +pub union __sifields__bindgen_ty_5__bindgen_ty_1 { +pub _trapno: crate::ctypes::c_int, +pub _addr_lsb: crate::ctypes::c_short, +pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, +pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, +pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_probe_op { -pub op: __u8, -pub resv: __u8, -pub flags: __u16, -pub resv2: __u32, +#[derive(Copy, Clone)] +pub union siginfo__bindgen_ty_1 { +pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, +pub _si_pad: [crate::ctypes::c_int; 32usize], } #[repr(C)] -#[derive(Debug)] -pub struct io_uring_probe { -pub last_op: __u8, -pub ops_len: __u8, -pub resv: __u16, -pub resv2: [__u32; 3usize], -pub ops: __IncompleteArrayField, +#[derive(Copy, Clone)] +pub union sigevent__bindgen_ty_1 { +pub _pad: [crate::ctypes::c_int; 12usize], +pub _tid: crate::ctypes::c_int, +pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] -pub struct io_uring_restriction { -pub opcode: __u16, -pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, -pub resv: __u8, -pub resv2: [__u32; 3usize], +pub union uffd_msg__bindgen_ty_1 { +pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, +pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, +pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, +pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, +pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_restriction__bindgen_ty_1 { -pub register_op: __u8, -pub sqe_op: __u8, -pub sqe_flags: __u8, +pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { +pub ptid: __u32, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf { -pub addr: __u64, -pub len: __u32, -pub bid: __u16, -pub resv: __u16, +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } } -#[repr(C)] -pub struct io_uring_buf_ring { -pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, } -#[repr(C)] -pub struct io_uring_buf_ring__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 2usize], +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { -pub resv1: __u64, -pub resv2: __u32, -pub resv3: __u16, -pub tail: __u16, +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; } -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { -pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, -pub bufs: __IncompleteArrayField, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_reg { -pub ring_addr: __u64, -pub ring_entries: __u32, -pub bgid: __u16, -pub pad: __u16, -pub resv: [__u64; 3usize], +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; } -pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP; -pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP; -pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; -pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; -pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_12 { -IORING_RESTRICTION_REGISTER_OP = 0, -IORING_RESTRICTION_SQE_OP = 1, -IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, -IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, -IORING_RESTRICTION_LAST = 4, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_getevents_arg { -pub sigmask: __u64, -pub sigmask_sz: __u32, -pub pad: __u32, -pub ts: __u64, +val } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sync_cancel_reg { -pub addr: __u64, -pub fd: __s32, -pub flags: __u32, -pub timeout: __kernel_timespec, -pub pad: [__u64; 4usize], +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_file_index_range { -pub off: __u32, -pub len: __u32, -pub resv: __u64, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_recvmsg_out { -pub namelen: __u32, -pub controllen: __u32, -pub payloadlen: __u32, -pub flags: __u32, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr { -pub __storage: __kernel_sockaddr_storage, +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct linger { -pub l_onoff: crate::ctypes::c_int, -pub l_linger: crate::ctypes::c_int, +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T } -#[repr(C)] -#[derive(Debug)] -pub struct linux_dirent64 { -pub d_ino: crate::ctypes::c_ulong, -pub d_off: crate::ctypes::c_long, -pub d_reclen: __u16, -pub d_type: __u8, -pub d_name: __IncompleteArrayField, +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T } -pub type socklen_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat { -pub st_dev: crate::ctypes::c_ulong, -pub st_ino: __kernel_ino_t, -pub st_nlink: crate::ctypes::c_ulong, -pub st_mode: __kernel_mode_t, -pub st_uid: __kernel_uid32_t, -pub st_gid: __kernel_gid32_t, -pub st_rdev: crate::ctypes::c_ulong, -pub st_size: crate::ctypes::c_long, -pub st_blksize: crate::ctypes::c_ulong, -pub st_blocks: crate::ctypes::c_ulong, -pub st_atime: crate::ctypes::c_ulong, -pub st_atime_nsec: crate::ctypes::c_ulong, -pub st_mtime: crate::ctypes::c_ulong, -pub st_mtime_nsec: crate::ctypes::c_ulong, -pub st_ctime: crate::ctypes::c_ulong, -pub st_ctime_nsec: crate::ctypes::c_ulong, -pub __unused4: crate::ctypes::c_ulong, -pub __unused5: crate::ctypes::c_ulong, -pub __unused6: crate::ctypes::c_ulong, +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat64 { -pub st_dev: crate::ctypes::c_ulonglong, -pub st_ino: crate::ctypes::c_ulonglong, -pub st_mode: crate::ctypes::c_uint, -pub st_nlink: crate::ctypes::c_uint, -pub st_uid: crate::ctypes::c_uint, -pub st_gid: crate::ctypes::c_uint, -pub st_rdev: crate::ctypes::c_ulonglong, -pub __pad2: crate::ctypes::c_ushort, -pub st_size: crate::ctypes::c_longlong, -pub st_blksize: crate::ctypes::c_int, -pub st_blocks: crate::ctypes::c_longlong, -pub st_atime: crate::ctypes::c_int, -pub st_atime_nsec: crate::ctypes::c_uint, -pub st_mtime: crate::ctypes::c_int, -pub st_mtime_nsec: crate::ctypes::c_uint, -pub st_ctime: crate::ctypes::c_int, -pub st_ctime_nsec: crate::ctypes::c_uint, -pub __unused4: crate::ctypes::c_uint, -pub __unused5: crate::ctypes::c_uint, +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs { -pub f_type: __kernel_long_t, -pub f_bsize: __kernel_long_t, -pub f_blocks: __kernel_long_t, -pub f_bfree: __kernel_long_t, -pub f_bavail: __kernel_long_t, -pub f_files: __kernel_long_t, -pub f_ffree: __kernel_long_t, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __kernel_long_t, -pub f_frsize: __kernel_long_t, -pub f_flags: __kernel_long_t, -pub f_spare: [__kernel_long_t; 4usize], } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs64 { -pub f_type: __kernel_long_t, -pub f_bsize: __kernel_long_t, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __kernel_long_t, -pub f_frsize: __kernel_long_t, -pub f_flags: __kernel_long_t, -pub f_spare: [__kernel_long_t; 4usize], +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct compat_statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], } -pub type __fsword_t = __kernel_long_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_desc { -pub entry_number: crate::ctypes::c_uint, -pub base_addr: crate::ctypes::c_uint, -pub limit: crate::ctypes::c_uint, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub __bindgen_padding_0: [u8; 3usize], +impl membarrier_cmd { +pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; } impl user_desc { #[inline] @@ -5410,47 +2968,3 @@ __bindgen_bitfield_unit } } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr { -pub msg_name: *mut crate::ctypes::c_void, -pub msg_namelen: crate::ctypes::c_int, -pub msg_iov: *mut iovec, -pub msg_iovlen: size_t, -pub msg_control: *mut crate::ctypes::c_void, -pub msg_controllen: size_t, -pub msg_flags: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsghdr { -pub cmsg_len: size_t, -pub cmsg_level: crate::ctypes::c_int, -pub cmsg_type: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ucred { -pub pid: __u32, -pub uid: __u32, -pub gid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mmsghdr { -pub msg_hdr: msghdr, -pub msg_len: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigset_t { -pub sig: [crate::ctypes::c_ulong; 1usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigaction { -pub sa_handler_kernel: __kernel_sighandler_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_restorer: __sigrestore_t, -pub sa_mask: kernel_sigset_t, -} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/if_ether.rs temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/if_ether.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/if_ether.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/if_ether.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,173 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct __vector128 { +pub u: [__u32; 4usize], +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ethhdr { +pub h_dest: [crate::ctypes::c_uchar; 6usize], +pub h_source: [crate::ctypes::c_uchar; 6usize], +pub h_proto: __be16, +} +pub const ETH_ALEN: u32 = 6; +pub const ETH_TLEN: u32 = 2; +pub const ETH_HLEN: u32 = 14; +pub const ETH_ZLEN: u32 = 60; +pub const ETH_DATA_LEN: u32 = 1500; +pub const ETH_FRAME_LEN: u32 = 1514; +pub const ETH_FCS_LEN: u32 = 4; +pub const ETH_MIN_MTU: u32 = 68; +pub const ETH_MAX_MTU: u32 = 65535; +pub const ETH_P_LOOP: u32 = 96; +pub const ETH_P_PUP: u32 = 512; +pub const ETH_P_PUPAT: u32 = 513; +pub const ETH_P_TSN: u32 = 8944; +pub const ETH_P_ERSPAN2: u32 = 8939; +pub const ETH_P_IP: u32 = 2048; +pub const ETH_P_X25: u32 = 2053; +pub const ETH_P_ARP: u32 = 2054; +pub const ETH_P_BPQ: u32 = 2303; +pub const ETH_P_IEEEPUP: u32 = 2560; +pub const ETH_P_IEEEPUPAT: u32 = 2561; +pub const ETH_P_BATMAN: u32 = 17157; +pub const ETH_P_DEC: u32 = 24576; +pub const ETH_P_DNA_DL: u32 = 24577; +pub const ETH_P_DNA_RC: u32 = 24578; +pub const ETH_P_DNA_RT: u32 = 24579; +pub const ETH_P_LAT: u32 = 24580; +pub const ETH_P_DIAG: u32 = 24581; +pub const ETH_P_CUST: u32 = 24582; +pub const ETH_P_SCA: u32 = 24583; +pub const ETH_P_TEB: u32 = 25944; +pub const ETH_P_RARP: u32 = 32821; +pub const ETH_P_ATALK: u32 = 32923; +pub const ETH_P_AARP: u32 = 33011; +pub const ETH_P_8021Q: u32 = 33024; +pub const ETH_P_ERSPAN: u32 = 35006; +pub const ETH_P_IPX: u32 = 33079; +pub const ETH_P_IPV6: u32 = 34525; +pub const ETH_P_PAUSE: u32 = 34824; +pub const ETH_P_SLOW: u32 = 34825; +pub const ETH_P_WCCP: u32 = 34878; +pub const ETH_P_MPLS_UC: u32 = 34887; +pub const ETH_P_MPLS_MC: u32 = 34888; +pub const ETH_P_ATMMPOA: u32 = 34892; +pub const ETH_P_PPP_DISC: u32 = 34915; +pub const ETH_P_PPP_SES: u32 = 34916; +pub const ETH_P_LINK_CTL: u32 = 34924; +pub const ETH_P_ATMFATE: u32 = 34948; +pub const ETH_P_PAE: u32 = 34958; +pub const ETH_P_PROFINET: u32 = 34962; +pub const ETH_P_REALTEK: u32 = 34969; +pub const ETH_P_AOE: u32 = 34978; +pub const ETH_P_ETHERCAT: u32 = 34980; +pub const ETH_P_8021AD: u32 = 34984; +pub const ETH_P_802_EX1: u32 = 34997; +pub const ETH_P_PREAUTH: u32 = 35015; +pub const ETH_P_TIPC: u32 = 35018; +pub const ETH_P_LLDP: u32 = 35020; +pub const ETH_P_MRP: u32 = 35043; +pub const ETH_P_MACSEC: u32 = 35045; +pub const ETH_P_8021AH: u32 = 35047; +pub const ETH_P_MVRP: u32 = 35061; +pub const ETH_P_1588: u32 = 35063; +pub const ETH_P_NCSI: u32 = 35064; +pub const ETH_P_PRP: u32 = 35067; +pub const ETH_P_CFM: u32 = 35074; +pub const ETH_P_FCOE: u32 = 35078; +pub const ETH_P_IBOE: u32 = 35093; +pub const ETH_P_TDLS: u32 = 35085; +pub const ETH_P_FIP: u32 = 35092; +pub const ETH_P_80221: u32 = 35095; +pub const ETH_P_HSR: u32 = 35119; +pub const ETH_P_NSH: u32 = 35151; +pub const ETH_P_LOOPBACK: u32 = 36864; +pub const ETH_P_QINQ1: u32 = 37120; +pub const ETH_P_QINQ2: u32 = 37376; +pub const ETH_P_QINQ3: u32 = 37632; +pub const ETH_P_EDSA: u32 = 56026; +pub const ETH_P_DSA_8021Q: u32 = 56027; +pub const ETH_P_DSA_A5PSW: u32 = 57345; +pub const ETH_P_IFE: u32 = 60734; +pub const ETH_P_AF_IUCV: u32 = 64507; +pub const ETH_P_802_3_MIN: u32 = 1536; +pub const ETH_P_802_3: u32 = 1; +pub const ETH_P_AX25: u32 = 2; +pub const ETH_P_ALL: u32 = 3; +pub const ETH_P_802_2: u32 = 4; +pub const ETH_P_SNAP: u32 = 5; +pub const ETH_P_DDCMP: u32 = 6; +pub const ETH_P_WAN_PPP: u32 = 7; +pub const ETH_P_PPP_MP: u32 = 8; +pub const ETH_P_LOCALTALK: u32 = 9; +pub const ETH_P_CAN: u32 = 12; +pub const ETH_P_CANFD: u32 = 13; +pub const ETH_P_CANXL: u32 = 14; +pub const ETH_P_PPPTALK: u32 = 16; +pub const ETH_P_TR_802_2: u32 = 17; +pub const ETH_P_MOBITEX: u32 = 21; +pub const ETH_P_CONTROL: u32 = 22; +pub const ETH_P_IRDA: u32 = 23; +pub const ETH_P_ECONET: u32 = 24; +pub const ETH_P_HDLC: u32 = 25; +pub const ETH_P_ARCNET: u32 = 26; +pub const ETH_P_DSA: u32 = 27; +pub const ETH_P_TRAILER: u32 = 28; +pub const ETH_P_PHONET: u32 = 245; +pub const ETH_P_IEEE802154: u32 = 246; +pub const ETH_P_CAIF: u32 = 247; +pub const ETH_P_XDSA: u32 = 248; +pub const ETH_P_MAP: u32 = 249; +pub const ETH_P_MCTP: u32 = 250; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/ioctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/ioctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/ioctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const FIONREAD: u32 = 1074030207; pub const FIONBIO: u32 = 2147772030; @@ -1482,3 +1482,7 @@ pub const ACRN_IOCTL_RESET_VM: u32 = 536912405; pub const ACRN_IOCTL_DESTROY_IOREQ_CLIENT: u32 = 536912436; pub const ACRN_IOCTL_VM_INTR_MONITOR: u32 = 2148049444; +pub const TCGETS2: u32 = 1076655123; +pub const TCSETS2: u32 = 2150396948; +pub const TCSETSF2: u32 = 2150396950; +pub const TCSETSW2: u32 = 2150396949; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/io_uring.rs temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/io_uring.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/io_uring.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/io_uring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1089 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_rwf_t = crate::ctypes::c_int; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct __vector128 { +pub u: [__u32; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +pub struct io_uring_sqe { +pub opcode: __u8, +pub flags: __u8, +pub ioprio: __u16, +pub fd: __s32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, +pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, +pub len: __u32, +pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, +pub user_data: __u64, +pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, +pub personality: __u16, +pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, +pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { +pub cmd_op: __u32, +pub __pad1: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { +pub addr_len: __u16, +pub __pad3: [__u16; 1usize], +} +#[repr(C)] +pub struct io_uring_sqe__bindgen_ty_6 { +pub __bindgen_anon_1: __BindgenUnionField, +pub cmd: __BindgenUnionField<[__u8; 0usize]>, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { +pub addr3: __u64, +pub __pad2: [__u64; 1usize], +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_cqe { +pub user_data: __u64, +pub res: __s32, +pub flags: __u32, +pub big_cqe: __IncompleteArrayField<__u64>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_sqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub flags: __u32, +pub dropped: __u32, +pub array: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_cqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub overflow: __u32, +pub cqes: __u32, +pub flags: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_params { +pub sq_entries: __u32, +pub cq_entries: __u32, +pub flags: __u32, +pub sq_thread_cpu: __u32, +pub sq_thread_idle: __u32, +pub features: __u32, +pub wq_fd: __u32, +pub resv: [__u32; 3usize], +pub sq_off: io_sqring_offsets, +pub cq_off: io_cqring_offsets, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_files_update { +pub offset: __u32, +pub resv: __u32, +pub fds: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_register { +pub nr: __u32, +pub flags: __u32, +pub resv2: __u64, +pub data: __u64, +pub tags: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update2 { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +pub tags: __u64, +pub nr: __u32, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_slot { +pub tag: __u64, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_register { +pub nr_slots: __u32, +pub resv: __u32, +pub resv2: __u64, +pub data: __u64, +pub resv3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_probe_op { +pub op: __u8, +pub resv: __u8, +pub flags: __u16, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_probe { +pub last_op: __u8, +pub ops_len: __u8, +pub resv: __u16, +pub resv2: [__u32; 3usize], +pub ops: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_restriction { +pub opcode: __u16, +pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, +pub resv: __u8, +pub resv2: [__u32; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf { +pub addr: __u64, +pub len: __u32, +pub bid: __u16, +pub resv: __u16, +} +#[repr(C)] +pub struct io_uring_buf_ring { +pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +} +#[repr(C)] +pub struct io_uring_buf_ring__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { +pub resv1: __u64, +pub resv2: __u32, +pub resv3: __u16, +pub tail: __u16, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { +pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, +pub bufs: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_reg { +pub ring_addr: __u64, +pub ring_entries: __u32, +pub bgid: __u16, +pub pad: __u16, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_getevents_arg { +pub sigmask: __u64, +pub sigmask_sz: __u32, +pub pad: __u32, +pub ts: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sync_cancel_reg { +pub addr: __u64, +pub fd: __s32, +pub flags: __u32, +pub timeout: __kernel_timespec, +pub pad: [__u64; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_file_index_range { +pub off: __u32, +pub len: __u32, +pub resv: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_recvmsg_out { +pub namelen: __u32, +pub controllen: __u32, +pub payloadlen: __u32, +pub flags: __u32, +} +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 536805376; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const IORING_FILE_INDEX_ALLOC: i32 = -1; +pub const IORING_SETUP_IOPOLL: u32 = 1; +pub const IORING_SETUP_SQPOLL: u32 = 2; +pub const IORING_SETUP_SQ_AFF: u32 = 4; +pub const IORING_SETUP_CQSIZE: u32 = 8; +pub const IORING_SETUP_CLAMP: u32 = 16; +pub const IORING_SETUP_ATTACH_WQ: u32 = 32; +pub const IORING_SETUP_R_DISABLED: u32 = 64; +pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; +pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; +pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; +pub const IORING_SETUP_SQE128: u32 = 1024; +pub const IORING_SETUP_CQE32: u32 = 2048; +pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; +pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; +pub const IORING_URING_CMD_FIXED: u32 = 1; +pub const IORING_FSYNC_DATASYNC: u32 = 1; +pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; +pub const IORING_POLL_ADD_LEVEL: u32 = 8; +pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; +pub const IORING_ASYNC_CANCEL_FD: u32 = 2; +pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; +pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; +pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; +pub const IORING_RECV_MULTISHOT: u32 = 2; +pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; +pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; +pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; +pub const IORING_ACCEPT_MULTISHOT: u32 = 1; +pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; +pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; +pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; +pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; +pub const IORING_CQE_F_NOTIF: u32 = 8; +pub const IORING_OFF_SQ_RING: u32 = 0; +pub const IORING_OFF_CQ_RING: u32 = 134217728; +pub const IORING_OFF_SQES: u32 = 268435456; +pub const IORING_SQ_NEED_WAKEUP: u32 = 1; +pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; +pub const IORING_SQ_TASKRUN: u32 = 4; +pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; +pub const IORING_ENTER_GETEVENTS: u32 = 1; +pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; +pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; +pub const IORING_ENTER_REGISTERED_RING: u32 = 16; +pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; +pub const IORING_FEAT_NODROP: u32 = 2; +pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; +pub const IORING_FEAT_RW_CUR_POS: u32 = 8; +pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; +pub const IORING_FEAT_FAST_POLL: u32 = 32; +pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_FEAT_CQE_SKIP: u32 = 2048; +pub const IORING_FEAT_LINKED_FILE: u32 = 4096; +pub const IORING_FEAT_REG_REG_RING: u32 = 8192; +pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; +pub const IO_URING_OP_SUPPORTED: u32 = 1; +pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_FIXED_FILE_BIT; +pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_DRAIN_BIT; +pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_LINK_BIT; +pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_HARDLINK_BIT; +pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_ASYNC_BIT; +pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_BUFFER_SELECT_BIT; +pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_CQE_SKIP_SUCCESS_BIT; +pub const IORING_MSG_DATA: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_DATA; +pub const IORING_MSG_SEND_FD: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_SEND_FD; +pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = _bindgen_ty_3::IORING_CQE_BUFFER_SHIFT; +pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS; +pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_BUFFERS; +pub const IORING_REGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES; +pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_FILES; +pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD; +pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_EVENTFD; +pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE; +pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD_ASYNC; +pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PROBE; +pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PERSONALITY; +pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PERSONALITY; +pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RESTRICTIONS; +pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_ENABLE_RINGS; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES2; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE2; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS2; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS_UPDATE; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_AFF; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_IOWQ_AFF; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_MAX_WORKERS; +pub const IORING_REGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RING_FDS; +pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_RING_FDS; +pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PBUF_RING; +pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PBUF_RING; +pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_SYNC_CANCEL; +pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILE_ALLOC_RANGE; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_LAST; +pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_USE_REGISTERED_RING; +pub const IO_WQ_BOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_BOUND; +pub const IO_WQ_UNBOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_UNBOUND; +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_REGISTER_OP; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_OP; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_LAST; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IOSQE_FIXED_FILE_BIT = 0, +IOSQE_IO_DRAIN_BIT = 1, +IOSQE_IO_LINK_BIT = 2, +IOSQE_IO_HARDLINK_BIT = 3, +IOSQE_ASYNC_BIT = 4, +IOSQE_BUFFER_SELECT_BIT = 5, +IOSQE_CQE_SKIP_SUCCESS_BIT = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum io_uring_op { +IORING_OP_NOP = 0, +IORING_OP_READV = 1, +IORING_OP_WRITEV = 2, +IORING_OP_FSYNC = 3, +IORING_OP_READ_FIXED = 4, +IORING_OP_WRITE_FIXED = 5, +IORING_OP_POLL_ADD = 6, +IORING_OP_POLL_REMOVE = 7, +IORING_OP_SYNC_FILE_RANGE = 8, +IORING_OP_SENDMSG = 9, +IORING_OP_RECVMSG = 10, +IORING_OP_TIMEOUT = 11, +IORING_OP_TIMEOUT_REMOVE = 12, +IORING_OP_ACCEPT = 13, +IORING_OP_ASYNC_CANCEL = 14, +IORING_OP_LINK_TIMEOUT = 15, +IORING_OP_CONNECT = 16, +IORING_OP_FALLOCATE = 17, +IORING_OP_OPENAT = 18, +IORING_OP_CLOSE = 19, +IORING_OP_FILES_UPDATE = 20, +IORING_OP_STATX = 21, +IORING_OP_READ = 22, +IORING_OP_WRITE = 23, +IORING_OP_FADVISE = 24, +IORING_OP_MADVISE = 25, +IORING_OP_SEND = 26, +IORING_OP_RECV = 27, +IORING_OP_OPENAT2 = 28, +IORING_OP_EPOLL_CTL = 29, +IORING_OP_SPLICE = 30, +IORING_OP_PROVIDE_BUFFERS = 31, +IORING_OP_REMOVE_BUFFERS = 32, +IORING_OP_TEE = 33, +IORING_OP_SHUTDOWN = 34, +IORING_OP_RENAMEAT = 35, +IORING_OP_UNLINKAT = 36, +IORING_OP_MKDIRAT = 37, +IORING_OP_SYMLINKAT = 38, +IORING_OP_LINKAT = 39, +IORING_OP_MSG_RING = 40, +IORING_OP_FSETXATTR = 41, +IORING_OP_SETXATTR = 42, +IORING_OP_FGETXATTR = 43, +IORING_OP_GETXATTR = 44, +IORING_OP_SOCKET = 45, +IORING_OP_URING_CMD = 46, +IORING_OP_SEND_ZC = 47, +IORING_OP_SENDMSG_ZC = 48, +IORING_OP_LAST = 49, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IORING_MSG_DATA = 0, +IORING_MSG_SEND_FD = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IORING_CQE_BUFFER_SHIFT = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IORING_REGISTER_BUFFERS = 0, +IORING_UNREGISTER_BUFFERS = 1, +IORING_REGISTER_FILES = 2, +IORING_UNREGISTER_FILES = 3, +IORING_REGISTER_EVENTFD = 4, +IORING_UNREGISTER_EVENTFD = 5, +IORING_REGISTER_FILES_UPDATE = 6, +IORING_REGISTER_EVENTFD_ASYNC = 7, +IORING_REGISTER_PROBE = 8, +IORING_REGISTER_PERSONALITY = 9, +IORING_UNREGISTER_PERSONALITY = 10, +IORING_REGISTER_RESTRICTIONS = 11, +IORING_REGISTER_ENABLE_RINGS = 12, +IORING_REGISTER_FILES2 = 13, +IORING_REGISTER_FILES_UPDATE2 = 14, +IORING_REGISTER_BUFFERS2 = 15, +IORING_REGISTER_BUFFERS_UPDATE = 16, +IORING_REGISTER_IOWQ_AFF = 17, +IORING_UNREGISTER_IOWQ_AFF = 18, +IORING_REGISTER_IOWQ_MAX_WORKERS = 19, +IORING_REGISTER_RING_FDS = 20, +IORING_UNREGISTER_RING_FDS = 21, +IORING_REGISTER_PBUF_RING = 22, +IORING_UNREGISTER_PBUF_RING = 23, +IORING_REGISTER_SYNC_CANCEL = 24, +IORING_REGISTER_FILE_ALLOC_RANGE = 25, +IORING_REGISTER_LAST = 26, +IORING_REGISTER_USE_REGISTERED_RING = 2147483648, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IO_WQ_BOUND = 0, +IO_WQ_UNBOUND = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IORING_RESTRICTION_REGISTER_OP = 0, +IORING_RESTRICTION_SQE_OP = 1, +IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, +IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, +IORING_RESTRICTION_LAST = 4, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_1 { +pub off: __u64, +pub addr2: __u64, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_2 { +pub addr: __u64, +pub splice_off_in: __u64, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_3 { +pub rw_flags: __kernel_rwf_t, +pub fsync_flags: __u32, +pub poll_events: __u16, +pub poll32_events: __u32, +pub sync_range_flags: __u32, +pub msg_flags: __u32, +pub timeout_flags: __u32, +pub accept_flags: __u32, +pub cancel_flags: __u32, +pub open_flags: __u32, +pub statx_flags: __u32, +pub fadvise_advice: __u32, +pub splice_flags: __u32, +pub rename_flags: __u32, +pub unlink_flags: __u32, +pub hardlink_flags: __u32, +pub xattr_flags: __u32, +pub msg_ring_flags: __u32, +pub uring_cmd_flags: __u32, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_4 { +pub buf_index: __u16, +pub buf_group: __u16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { +pub splice_fd_in: __s32, +pub file_index: __u32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_restriction__bindgen_ty_1 { +pub register_op: __u8, +pub sqe_op: __u8, +pub sqe_flags: __u8, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/netlink.rs temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/netlink.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/netlink.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/netlink.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,363 +1,1498 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct __vector128 { +pub u: [__u32; 4usize], } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_nl { +pub nl_family: __kernel_sa_family_t, +pub nl_pad: crate::ctypes::c_ushort, +pub nl_pid: __u32, +pub nl_groups: __u32, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsghdr { +pub nlmsg_len: __u32, +pub nlmsg_type: __u16, +pub nlmsg_flags: __u16, +pub nlmsg_seq: __u32, +pub nlmsg_pid: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsgerr { +pub error: crate::ctypes::c_int, +pub msg: nlmsghdr, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_pktinfo { +pub group: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_req { +pub nm_block_size: crate::ctypes::c_uint, +pub nm_block_nr: crate::ctypes::c_uint, +pub nm_frame_size: crate::ctypes::c_uint, +pub nm_frame_nr: crate::ctypes::c_uint, } -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const __BITS_PER_LONG: u32 = 64; -pub const __FD_SETSIZE: u32 = 1024; -pub const NETLINK_ROUTE: u32 = 0; -pub const NETLINK_UNUSED: u32 = 1; -pub const NETLINK_USERSOCK: u32 = 2; -pub const NETLINK_FIREWALL: u32 = 3; -pub const NETLINK_SOCK_DIAG: u32 = 4; -pub const NETLINK_NFLOG: u32 = 5; -pub const NETLINK_XFRM: u32 = 6; -pub const NETLINK_SELINUX: u32 = 7; -pub const NETLINK_ISCSI: u32 = 8; -pub const NETLINK_AUDIT: u32 = 9; -pub const NETLINK_FIB_LOOKUP: u32 = 10; -pub const NETLINK_CONNECTOR: u32 = 11; -pub const NETLINK_NETFILTER: u32 = 12; -pub const NETLINK_IP6_FW: u32 = 13; -pub const NETLINK_DNRTMSG: u32 = 14; -pub const NETLINK_KOBJECT_UEVENT: u32 = 15; -pub const NETLINK_GENERIC: u32 = 16; -pub const NETLINK_SCSITRANSPORT: u32 = 18; -pub const NETLINK_ECRYPTFS: u32 = 19; -pub const NETLINK_RDMA: u32 = 20; -pub const NETLINK_CRYPTO: u32 = 21; -pub const NETLINK_SMC: u32 = 22; -pub const NETLINK_INET_DIAG: u32 = 4; -pub const MAX_LINKS: u32 = 32; -pub const NLM_F_REQUEST: u32 = 1; -pub const NLM_F_MULTI: u32 = 2; -pub const NLM_F_ACK: u32 = 4; -pub const NLM_F_ECHO: u32 = 8; -pub const NLM_F_DUMP_INTR: u32 = 16; -pub const NLM_F_DUMP_FILTERED: u32 = 32; -pub const NLM_F_ROOT: u32 = 256; -pub const NLM_F_MATCH: u32 = 512; -pub const NLM_F_ATOMIC: u32 = 1024; -pub const NLM_F_DUMP: u32 = 768; -pub const NLM_F_REPLACE: u32 = 256; -pub const NLM_F_EXCL: u32 = 512; -pub const NLM_F_CREATE: u32 = 1024; -pub const NLM_F_APPEND: u32 = 2048; -pub const NLM_F_NONREC: u32 = 256; -pub const NLM_F_BULK: u32 = 512; -pub const NLM_F_CAPPED: u32 = 256; -pub const NLM_F_ACK_TLVS: u32 = 512; -pub const NLMSG_ALIGNTO: u32 = 4; -pub const NLMSG_NOOP: u32 = 1; -pub const NLMSG_ERROR: u32 = 2; -pub const NLMSG_DONE: u32 = 3; -pub const NLMSG_OVERRUN: u32 = 4; -pub const NLMSG_MIN_TYPE: u32 = 16; -pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; -pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; -pub const NETLINK_PKTINFO: u32 = 3; -pub const NETLINK_BROADCAST_ERROR: u32 = 4; -pub const NETLINK_NO_ENOBUFS: u32 = 5; -pub const NETLINK_RX_RING: u32 = 6; -pub const NETLINK_TX_RING: u32 = 7; -pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; -pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; -pub const NETLINK_CAP_ACK: u32 = 10; -pub const NETLINK_EXT_ACK: u32 = 11; -pub const NETLINK_GET_STRICT_CHK: u32 = 12; -pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; -pub const NET_MAJOR: u32 = 36; -pub const NLA_F_NESTED: u32 = 32768; -pub const NLA_F_NET_BYTEORDER: u32 = 16384; -pub const NLA_TYPE_MASK: i32 = -49153; -pub const NLA_ALIGNTO: u32 = 4; -pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; -pub const MACVLAN_FLAG_NODST: u32 = 2; -pub const IPVLAN_F_PRIVATE: u32 = 1; -pub const IPVLAN_F_VEPA: u32 = 2; -pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; -pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; -pub const MAX_VLAN_LIST_LEN: u32 = 1; -pub const PORT_PROFILE_MAX: u32 = 40; -pub const PORT_UUID_MAX: u32 = 16; -pub const PORT_SELF_VF: i32 = -1; -pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; -pub const XDP_FLAGS_SKB_MODE: u32 = 2; -pub const XDP_FLAGS_DRV_MODE: u32 = 4; -pub const XDP_FLAGS_HW_MODE: u32 = 8; -pub const XDP_FLAGS_REPLACE: u32 = 16; -pub const XDP_FLAGS_MODES: u32 = 14; -pub const XDP_FLAGS_MASK: u32 = 31; -pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; -pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; -pub const IFA_F_SECONDARY: u32 = 1; -pub const IFA_F_TEMPORARY: u32 = 1; -pub const IFA_F_NODAD: u32 = 2; -pub const IFA_F_OPTIMISTIC: u32 = 4; -pub const IFA_F_DADFAILED: u32 = 8; -pub const IFA_F_HOMEADDRESS: u32 = 16; -pub const IFA_F_DEPRECATED: u32 = 32; -pub const IFA_F_TENTATIVE: u32 = 64; -pub const IFA_F_PERMANENT: u32 = 128; -pub const IFA_F_MANAGETEMPADDR: u32 = 256; -pub const IFA_F_NOPREFIXROUTE: u32 = 512; -pub const IFA_F_MCAUTOJOIN: u32 = 1024; -pub const IFA_F_STABLE_PRIVACY: u32 = 2048; -pub const IFAPROT_UNSPEC: u32 = 0; -pub const IFAPROT_KERNEL_LO: u32 = 1; -pub const IFAPROT_KERNEL_RA: u32 = 2; -pub const IFAPROT_KERNEL_LL: u32 = 3; -pub const NTF_USE: u32 = 1; -pub const NTF_SELF: u32 = 2; -pub const NTF_MASTER: u32 = 4; -pub const NTF_PROXY: u32 = 8; -pub const NTF_EXT_LEARNED: u32 = 16; -pub const NTF_OFFLOADED: u32 = 32; -pub const NTF_STICKY: u32 = 64; -pub const NTF_ROUTER: u32 = 128; -pub const NTF_EXT_MANAGED: u32 = 1; -pub const NTF_EXT_LOCKED: u32 = 2; -pub const NUD_INCOMPLETE: u32 = 1; -pub const NUD_REACHABLE: u32 = 2; -pub const NUD_STALE: u32 = 4; -pub const NUD_DELAY: u32 = 8; -pub const NUD_PROBE: u32 = 16; -pub const NUD_FAILED: u32 = 32; -pub const NUD_NOARP: u32 = 64; -pub const NUD_PERMANENT: u32 = 128; -pub const NUD_NONE: u32 = 0; -pub const RTNL_FAMILY_IPMR: u32 = 128; -pub const RTNL_FAMILY_IP6MR: u32 = 129; -pub const RTNL_FAMILY_MAX: u32 = 129; -pub const RTA_ALIGNTO: u32 = 4; -pub const RTPROT_UNSPEC: u32 = 0; -pub const RTPROT_REDIRECT: u32 = 1; -pub const RTPROT_KERNEL: u32 = 2; -pub const RTPROT_BOOT: u32 = 3; -pub const RTPROT_STATIC: u32 = 4; -pub const RTPROT_GATED: u32 = 8; -pub const RTPROT_RA: u32 = 9; -pub const RTPROT_MRT: u32 = 10; -pub const RTPROT_ZEBRA: u32 = 11; -pub const RTPROT_BIRD: u32 = 12; -pub const RTPROT_DNROUTED: u32 = 13; -pub const RTPROT_XORP: u32 = 14; -pub const RTPROT_NTK: u32 = 15; -pub const RTPROT_DHCP: u32 = 16; -pub const RTPROT_MROUTED: u32 = 17; -pub const RTPROT_KEEPALIVED: u32 = 18; -pub const RTPROT_BABEL: u32 = 42; -pub const RTPROT_OPENR: u32 = 99; -pub const RTPROT_BGP: u32 = 186; -pub const RTPROT_ISIS: u32 = 187; -pub const RTPROT_OSPF: u32 = 188; -pub const RTPROT_RIP: u32 = 189; -pub const RTPROT_EIGRP: u32 = 192; -pub const RTM_F_NOTIFY: u32 = 256; -pub const RTM_F_CLONED: u32 = 512; -pub const RTM_F_EQUALIZE: u32 = 1024; -pub const RTM_F_PREFIX: u32 = 2048; -pub const RTM_F_LOOKUP_TABLE: u32 = 4096; -pub const RTM_F_FIB_MATCH: u32 = 8192; -pub const RTM_F_OFFLOAD: u32 = 16384; -pub const RTM_F_TRAP: u32 = 32768; -pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; -pub const RTNH_F_DEAD: u32 = 1; -pub const RTNH_F_PERVASIVE: u32 = 2; -pub const RTNH_F_ONLINK: u32 = 4; -pub const RTNH_F_OFFLOAD: u32 = 8; -pub const RTNH_F_LINKDOWN: u32 = 16; -pub const RTNH_F_UNRESOLVED: u32 = 32; -pub const RTNH_F_TRAP: u32 = 64; -pub const RTNH_COMPARE_MASK: u32 = 89; -pub const RTNH_ALIGNTO: u32 = 4; -pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; -pub const RTAX_FEATURE_ECN: u32 = 1; -pub const RTAX_FEATURE_SACK: u32 = 2; -pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; -pub const RTAX_FEATURE_ALLFRAG: u32 = 8; -pub const RTAX_FEATURE_MASK: u32 = 15; -pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; -pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; -pub const RTMGRP_LINK: u32 = 1; -pub const RTMGRP_NOTIFY: u32 = 2; -pub const RTMGRP_NEIGH: u32 = 4; -pub const RTMGRP_TC: u32 = 8; -pub const RTMGRP_IPV4_IFADDR: u32 = 16; -pub const RTMGRP_IPV4_MROUTE: u32 = 32; -pub const RTMGRP_IPV4_ROUTE: u32 = 64; -pub const RTMGRP_IPV4_RULE: u32 = 128; -pub const RTMGRP_IPV6_IFADDR: u32 = 256; -pub const RTMGRP_IPV6_MROUTE: u32 = 512; -pub const RTMGRP_IPV6_ROUTE: u32 = 1024; -pub const RTMGRP_IPV6_IFINFO: u32 = 2048; -pub const RTMGRP_DECnet_IFADDR: u32 = 4096; -pub const RTMGRP_DECnet_ROUTE: u32 = 16384; -pub const RTMGRP_IPV6_PREFIX: u32 = 131072; -pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; -pub const RTEXT_FILTER_VF: u32 = 1; -pub const RTEXT_FILTER_BRVLAN: u32 = 2; -pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; -pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; -pub const RTEXT_FILTER_MRP: u32 = 16; -pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; -pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; -pub const RTEXT_FILTER_MST: u32 = 128; -pub type size_t = crate::ctypes::c_ulong; -pub type ssize_t = crate::ctypes::c_long; -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; #[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_hdr { +pub nm_status: crate::ctypes::c_uint, +pub nm_len: crate::ctypes::c_uint, +pub nm_group: __u32, +pub nm_pid: __u32, +pub nm_uid: __u32, +pub nm_gid: __u32, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, +#[derive(Debug, Copy, Clone)] +pub struct nlattr { +pub nla_len: __u16, +pub nla_type: __u16, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], +pub struct nla_bitfield32 { +pub value: __u32, +pub selector: __u32, } -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_long; -pub type __u64 = crate::ctypes::c_ulong; #[repr(C)] -#[repr(align(16))] #[derive(Debug, Copy, Clone)] -pub struct __vector128 { -pub u: [__u32; 4usize], +pub struct rtnl_link_stats { +pub rx_packets: __u32, +pub tx_packets: __u32, +pub rx_bytes: __u32, +pub tx_bytes: __u32, +pub rx_errors: __u32, +pub tx_errors: __u32, +pub rx_dropped: __u32, +pub tx_dropped: __u32, +pub multicast: __u32, +pub collisions: __u32, +pub rx_length_errors: __u32, +pub rx_over_errors: __u32, +pub rx_crc_errors: __u32, +pub rx_frame_errors: __u32, +pub rx_fifo_errors: __u32, +pub rx_missed_errors: __u32, +pub tx_aborted_errors: __u32, +pub tx_carrier_errors: __u32, +pub tx_fifo_errors: __u32, +pub tx_heartbeat_errors: __u32, +pub tx_window_errors: __u32, +pub rx_compressed: __u32, +pub tx_compressed: __u32, +pub rx_nohandler: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 16usize], +pub struct rtnl_link_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +pub collisions: __u64, +pub rx_length_errors: __u64, +pub rx_over_errors: __u64, +pub rx_crc_errors: __u64, +pub rx_frame_errors: __u64, +pub rx_fifo_errors: __u64, +pub rx_missed_errors: __u64, +pub tx_aborted_errors: __u64, +pub tx_carrier_errors: __u64, +pub tx_fifo_errors: __u64, +pub tx_heartbeat_errors: __u64, +pub tx_window_errors: __u64, +pub rx_compressed: __u64, +pub tx_compressed: __u64, +pub rx_nohandler: __u64, +pub rx_otherhost_dropped: __u64, } -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_old_dev_t = crate::ctypes::c_ulong; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], +pub struct rtnl_hw_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, } -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_nl { -pub nl_family: __kernel_sa_family_t, -pub nl_pad: crate::ctypes::c_ushort, -pub nl_pid: __u32, -pub nl_groups: __u32, +pub struct rtnl_link_ifmap { +pub mem_start: __u64, +pub mem_end: __u64, +pub base_addr: __u64, +pub irq: __u16, +pub dma: __u8, +pub port: __u8, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsghdr { -pub nlmsg_len: __u32, -pub nlmsg_type: __u16, -pub nlmsg_flags: __u16, -pub nlmsg_seq: __u32, -pub nlmsg_pid: __u32, +pub struct ifla_bridge_id { +pub prio: [__u8; 2usize], +pub addr: [__u8; 6usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsgerr { -pub error: crate::ctypes::c_int, -pub msg: nlmsghdr, +pub struct ifla_cacheinfo { +pub max_reasm_len: __u32, +pub tstamp: __u32, +pub reachable_time: __u32, +pub retrans_time: __u32, } -impl nlmsgerr_attrs { -pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_qos_mapping { +pub from: __u32, +pub to: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tunnel_msg { +pub family: __u8, +pub flags: __u8, +pub reserved2: __u16, +pub ifindex: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vxlan_port_range { +pub low: __be16, +pub high: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_mac { +pub vf: __u32, +pub mac: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_broadcast { +pub broadcast: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan_info { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +pub vlan_proto: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_tx_rate { +pub vf: __u32, +pub rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rate { +pub vf: __u32, +pub min_tx_rate: __u32, +pub max_tx_rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_spoofchk { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_guid { +pub vf: __u32, +pub guid: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_link_state { +pub vf: __u32, +pub link_state: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rss_query_en { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_trust { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_port_vsi { +pub vsi_mgr_id: __u8, +pub vsi_type_id: [__u8; 3usize], +pub vsi_type_version: __u8, +pub pad: [__u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct if_stats_msg { +pub family: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub ifindex: __u32, +pub filter_mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_rmnet_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifaddrmsg { +pub ifa_family: __u8, +pub ifa_prefixlen: __u8, +pub ifa_flags: __u8, +pub ifa_scope: __u8, +pub ifa_index: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifa_cacheinfo { +pub ifa_prefered: __u32, +pub ifa_valid: __u32, +pub cstamp: __u32, +pub tstamp: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndmsg { +pub ndm_family: __u8, +pub ndm_pad1: __u8, +pub ndm_pad2: __u16, +pub ndm_ifindex: __s32, +pub ndm_state: __u16, +pub ndm_flags: __u8, +pub ndm_type: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nda_cacheinfo { +pub ndm_confirmed: __u32, +pub ndm_used: __u32, +pub ndm_updated: __u32, +pub ndm_refcnt: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_stats { +pub ndts_allocs: __u64, +pub ndts_destroys: __u64, +pub ndts_hash_grows: __u64, +pub ndts_res_failed: __u64, +pub ndts_lookups: __u64, +pub ndts_hits: __u64, +pub ndts_rcv_probes_mcast: __u64, +pub ndts_rcv_probes_ucast: __u64, +pub ndts_periodic_gc_runs: __u64, +pub ndts_forced_gc_runs: __u64, +pub ndts_table_fulls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndtmsg { +pub ndtm_family: __u8, +pub ndtm_pad1: __u8, +pub ndtm_pad2: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_config { +pub ndtc_key_len: __u16, +pub ndtc_entry_size: __u16, +pub ndtc_entries: __u32, +pub ndtc_last_flush: __u32, +pub ndtc_last_rand: __u32, +pub ndtc_hash_rnd: __u32, +pub ndtc_hash_mask: __u32, +pub ndtc_hash_chain_gc: __u32, +pub ndtc_proxy_qlen: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtattr { +pub rta_len: crate::ctypes::c_ushort, +pub rta_type: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtmsg { +pub rtm_family: crate::ctypes::c_uchar, +pub rtm_dst_len: crate::ctypes::c_uchar, +pub rtm_src_len: crate::ctypes::c_uchar, +pub rtm_tos: crate::ctypes::c_uchar, +pub rtm_table: crate::ctypes::c_uchar, +pub rtm_protocol: crate::ctypes::c_uchar, +pub rtm_scope: crate::ctypes::c_uchar, +pub rtm_type: crate::ctypes::c_uchar, +pub rtm_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnexthop { +pub rtnh_len: crate::ctypes::c_ushort, +pub rtnh_flags: crate::ctypes::c_uchar, +pub rtnh_hops: crate::ctypes::c_uchar, +pub rtnh_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug)] +pub struct rtvia { +pub rtvia_family: __kernel_sa_family_t, +pub rtvia_addr: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_cacheinfo { +pub rta_clntref: __u32, +pub rta_lastuse: __u32, +pub rta_expires: __s32, +pub rta_error: __u32, +pub rta_used: __u32, +pub rta_id: __u32, +pub rta_ts: __u32, +pub rta_tsage: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rta_session { +pub proto: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub u: rta_session__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { +pub sport: __u16, +pub dport: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { +pub type_: __u8, +pub code: __u8, +pub ident: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_mfc_stats { +pub mfcs_packets: __u64, +pub mfcs_bytes: __u64, +pub mfcs_wrong_if: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtgenmsg { +pub rtgen_family: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifinfomsg { +pub ifi_family: crate::ctypes::c_uchar, +pub __ifi_pad: crate::ctypes::c_uchar, +pub ifi_type: crate::ctypes::c_ushort, +pub ifi_index: crate::ctypes::c_int, +pub ifi_flags: crate::ctypes::c_uint, +pub ifi_change: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefixmsg { +pub prefix_family: crate::ctypes::c_uchar, +pub prefix_pad1: crate::ctypes::c_uchar, +pub prefix_pad2: crate::ctypes::c_ushort, +pub prefix_ifindex: crate::ctypes::c_int, +pub prefix_type: crate::ctypes::c_uchar, +pub prefix_len: crate::ctypes::c_uchar, +pub prefix_flags: crate::ctypes::c_uchar, +pub prefix_pad3: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefix_cacheinfo { +pub preferred_time: __u32, +pub valid_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcmsg { +pub tcm_family: crate::ctypes::c_uchar, +pub tcm__pad1: crate::ctypes::c_uchar, +pub tcm__pad2: crate::ctypes::c_ushort, +pub tcm_ifindex: crate::ctypes::c_int, +pub tcm_handle: __u32, +pub tcm_parent: __u32, +pub tcm_info: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nduseroptmsg { +pub nduseropt_family: crate::ctypes::c_uchar, +pub nduseropt_pad1: crate::ctypes::c_uchar, +pub nduseropt_opts_len: crate::ctypes::c_ushort, +pub nduseropt_ifindex: crate::ctypes::c_int, +pub nduseropt_icmp_type: __u8, +pub nduseropt_icmp_code: __u8, +pub nduseropt_pad2: crate::ctypes::c_ushort, +pub nduseropt_pad3: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcamsg { +pub tca_family: crate::ctypes::c_uchar, +pub tca__pad1: crate::ctypes::c_uchar, +pub tca__pad2: crate::ctypes::c_ushort, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const NETLINK_ROUTE: u32 = 0; +pub const NETLINK_UNUSED: u32 = 1; +pub const NETLINK_USERSOCK: u32 = 2; +pub const NETLINK_FIREWALL: u32 = 3; +pub const NETLINK_SOCK_DIAG: u32 = 4; +pub const NETLINK_NFLOG: u32 = 5; +pub const NETLINK_XFRM: u32 = 6; +pub const NETLINK_SELINUX: u32 = 7; +pub const NETLINK_ISCSI: u32 = 8; +pub const NETLINK_AUDIT: u32 = 9; +pub const NETLINK_FIB_LOOKUP: u32 = 10; +pub const NETLINK_CONNECTOR: u32 = 11; +pub const NETLINK_NETFILTER: u32 = 12; +pub const NETLINK_IP6_FW: u32 = 13; +pub const NETLINK_DNRTMSG: u32 = 14; +pub const NETLINK_KOBJECT_UEVENT: u32 = 15; +pub const NETLINK_GENERIC: u32 = 16; +pub const NETLINK_SCSITRANSPORT: u32 = 18; +pub const NETLINK_ECRYPTFS: u32 = 19; +pub const NETLINK_RDMA: u32 = 20; +pub const NETLINK_CRYPTO: u32 = 21; +pub const NETLINK_SMC: u32 = 22; +pub const NETLINK_INET_DIAG: u32 = 4; +pub const MAX_LINKS: u32 = 32; +pub const NLM_F_REQUEST: u32 = 1; +pub const NLM_F_MULTI: u32 = 2; +pub const NLM_F_ACK: u32 = 4; +pub const NLM_F_ECHO: u32 = 8; +pub const NLM_F_DUMP_INTR: u32 = 16; +pub const NLM_F_DUMP_FILTERED: u32 = 32; +pub const NLM_F_ROOT: u32 = 256; +pub const NLM_F_MATCH: u32 = 512; +pub const NLM_F_ATOMIC: u32 = 1024; +pub const NLM_F_DUMP: u32 = 768; +pub const NLM_F_REPLACE: u32 = 256; +pub const NLM_F_EXCL: u32 = 512; +pub const NLM_F_CREATE: u32 = 1024; +pub const NLM_F_APPEND: u32 = 2048; +pub const NLM_F_NONREC: u32 = 256; +pub const NLM_F_BULK: u32 = 512; +pub const NLM_F_CAPPED: u32 = 256; +pub const NLM_F_ACK_TLVS: u32 = 512; +pub const NLMSG_ALIGNTO: u32 = 4; +pub const NLMSG_NOOP: u32 = 1; +pub const NLMSG_ERROR: u32 = 2; +pub const NLMSG_DONE: u32 = 3; +pub const NLMSG_OVERRUN: u32 = 4; +pub const NLMSG_MIN_TYPE: u32 = 16; +pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; +pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; +pub const NETLINK_PKTINFO: u32 = 3; +pub const NETLINK_BROADCAST_ERROR: u32 = 4; +pub const NETLINK_NO_ENOBUFS: u32 = 5; +pub const NETLINK_RX_RING: u32 = 6; +pub const NETLINK_TX_RING: u32 = 7; +pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; +pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; +pub const NETLINK_CAP_ACK: u32 = 10; +pub const NETLINK_EXT_ACK: u32 = 11; +pub const NETLINK_GET_STRICT_CHK: u32 = 12; +pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; +pub const NET_MAJOR: u32 = 36; +pub const NLA_F_NESTED: u32 = 32768; +pub const NLA_F_NET_BYTEORDER: u32 = 16384; +pub const NLA_TYPE_MASK: i32 = -49153; +pub const NLA_ALIGNTO: u32 = 4; +pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; +pub const MACVLAN_FLAG_NODST: u32 = 2; +pub const IPVLAN_F_PRIVATE: u32 = 1; +pub const IPVLAN_F_VEPA: u32 = 2; +pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; +pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; +pub const MAX_VLAN_LIST_LEN: u32 = 1; +pub const PORT_PROFILE_MAX: u32 = 40; +pub const PORT_UUID_MAX: u32 = 16; +pub const PORT_SELF_VF: i32 = -1; +pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; +pub const XDP_FLAGS_SKB_MODE: u32 = 2; +pub const XDP_FLAGS_DRV_MODE: u32 = 4; +pub const XDP_FLAGS_HW_MODE: u32 = 8; +pub const XDP_FLAGS_REPLACE: u32 = 16; +pub const XDP_FLAGS_MODES: u32 = 14; +pub const XDP_FLAGS_MASK: u32 = 31; +pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; +pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; +pub const IFA_F_SECONDARY: u32 = 1; +pub const IFA_F_TEMPORARY: u32 = 1; +pub const IFA_F_NODAD: u32 = 2; +pub const IFA_F_OPTIMISTIC: u32 = 4; +pub const IFA_F_DADFAILED: u32 = 8; +pub const IFA_F_HOMEADDRESS: u32 = 16; +pub const IFA_F_DEPRECATED: u32 = 32; +pub const IFA_F_TENTATIVE: u32 = 64; +pub const IFA_F_PERMANENT: u32 = 128; +pub const IFA_F_MANAGETEMPADDR: u32 = 256; +pub const IFA_F_NOPREFIXROUTE: u32 = 512; +pub const IFA_F_MCAUTOJOIN: u32 = 1024; +pub const IFA_F_STABLE_PRIVACY: u32 = 2048; +pub const IFAPROT_UNSPEC: u32 = 0; +pub const IFAPROT_KERNEL_LO: u32 = 1; +pub const IFAPROT_KERNEL_RA: u32 = 2; +pub const IFAPROT_KERNEL_LL: u32 = 3; +pub const NTF_USE: u32 = 1; +pub const NTF_SELF: u32 = 2; +pub const NTF_MASTER: u32 = 4; +pub const NTF_PROXY: u32 = 8; +pub const NTF_EXT_LEARNED: u32 = 16; +pub const NTF_OFFLOADED: u32 = 32; +pub const NTF_STICKY: u32 = 64; +pub const NTF_ROUTER: u32 = 128; +pub const NTF_EXT_MANAGED: u32 = 1; +pub const NTF_EXT_LOCKED: u32 = 2; +pub const NUD_INCOMPLETE: u32 = 1; +pub const NUD_REACHABLE: u32 = 2; +pub const NUD_STALE: u32 = 4; +pub const NUD_DELAY: u32 = 8; +pub const NUD_PROBE: u32 = 16; +pub const NUD_FAILED: u32 = 32; +pub const NUD_NOARP: u32 = 64; +pub const NUD_PERMANENT: u32 = 128; +pub const NUD_NONE: u32 = 0; +pub const RTNL_FAMILY_IPMR: u32 = 128; +pub const RTNL_FAMILY_IP6MR: u32 = 129; +pub const RTNL_FAMILY_MAX: u32 = 129; +pub const RTA_ALIGNTO: u32 = 4; +pub const RTPROT_UNSPEC: u32 = 0; +pub const RTPROT_REDIRECT: u32 = 1; +pub const RTPROT_KERNEL: u32 = 2; +pub const RTPROT_BOOT: u32 = 3; +pub const RTPROT_STATIC: u32 = 4; +pub const RTPROT_GATED: u32 = 8; +pub const RTPROT_RA: u32 = 9; +pub const RTPROT_MRT: u32 = 10; +pub const RTPROT_ZEBRA: u32 = 11; +pub const RTPROT_BIRD: u32 = 12; +pub const RTPROT_DNROUTED: u32 = 13; +pub const RTPROT_XORP: u32 = 14; +pub const RTPROT_NTK: u32 = 15; +pub const RTPROT_DHCP: u32 = 16; +pub const RTPROT_MROUTED: u32 = 17; +pub const RTPROT_KEEPALIVED: u32 = 18; +pub const RTPROT_BABEL: u32 = 42; +pub const RTPROT_OPENR: u32 = 99; +pub const RTPROT_BGP: u32 = 186; +pub const RTPROT_ISIS: u32 = 187; +pub const RTPROT_OSPF: u32 = 188; +pub const RTPROT_RIP: u32 = 189; +pub const RTPROT_EIGRP: u32 = 192; +pub const RTM_F_NOTIFY: u32 = 256; +pub const RTM_F_CLONED: u32 = 512; +pub const RTM_F_EQUALIZE: u32 = 1024; +pub const RTM_F_PREFIX: u32 = 2048; +pub const RTM_F_LOOKUP_TABLE: u32 = 4096; +pub const RTM_F_FIB_MATCH: u32 = 8192; +pub const RTM_F_OFFLOAD: u32 = 16384; +pub const RTM_F_TRAP: u32 = 32768; +pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; +pub const RTNH_F_DEAD: u32 = 1; +pub const RTNH_F_PERVASIVE: u32 = 2; +pub const RTNH_F_ONLINK: u32 = 4; +pub const RTNH_F_OFFLOAD: u32 = 8; +pub const RTNH_F_LINKDOWN: u32 = 16; +pub const RTNH_F_UNRESOLVED: u32 = 32; +pub const RTNH_F_TRAP: u32 = 64; +pub const RTNH_COMPARE_MASK: u32 = 89; +pub const RTNH_ALIGNTO: u32 = 4; +pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; +pub const RTAX_FEATURE_ECN: u32 = 1; +pub const RTAX_FEATURE_SACK: u32 = 2; +pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; +pub const RTAX_FEATURE_ALLFRAG: u32 = 8; +pub const RTAX_FEATURE_MASK: u32 = 15; +pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; +pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; +pub const RTMGRP_LINK: u32 = 1; +pub const RTMGRP_NOTIFY: u32 = 2; +pub const RTMGRP_NEIGH: u32 = 4; +pub const RTMGRP_TC: u32 = 8; +pub const RTMGRP_IPV4_IFADDR: u32 = 16; +pub const RTMGRP_IPV4_MROUTE: u32 = 32; +pub const RTMGRP_IPV4_ROUTE: u32 = 64; +pub const RTMGRP_IPV4_RULE: u32 = 128; +pub const RTMGRP_IPV6_IFADDR: u32 = 256; +pub const RTMGRP_IPV6_MROUTE: u32 = 512; +pub const RTMGRP_IPV6_ROUTE: u32 = 1024; +pub const RTMGRP_IPV6_IFINFO: u32 = 2048; +pub const RTMGRP_DECnet_IFADDR: u32 = 4096; +pub const RTMGRP_DECnet_ROUTE: u32 = 16384; +pub const RTMGRP_IPV6_PREFIX: u32 = 131072; +pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; +pub const RTEXT_FILTER_VF: u32 = 1; +pub const RTEXT_FILTER_BRVLAN: u32 = 2; +pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; +pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; +pub const RTEXT_FILTER_MRP: u32 = 16; +pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; +pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; +pub const RTEXT_FILTER_MST: u32 = 128; +pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; +pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; +pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; +pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; +pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; +pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; +pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; +pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; +pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; +pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; +pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; +pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; +pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; +pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; +pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; +pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; +pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; +pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; +pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; +pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; +pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; +pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; +pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; +pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; +pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; +pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; +pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; +pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; +pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; +pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; +pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; +pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; +pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; +pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; +pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; +pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; +pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; +pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; +pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; +pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; +pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; +pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; +pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; +pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; +pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; +pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; +pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; +pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; +pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; +pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; +pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; +pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; +pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; +pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; +pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; +pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; +pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; +pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; +pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; +pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; +pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; +pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; +pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; +pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; +pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; +pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; +pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; +pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; +pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; +pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; +pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; +pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; +pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; +pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; +pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; +pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; +pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; +pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; +pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; +pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; +pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; +pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; +pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; +pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; +pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; +pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; +pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; +pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; +pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; +pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; +pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; +pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; +pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; +pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; +pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; +pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; +pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; +pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; +pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; +pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; +pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; +pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; +pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; +pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; +pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; +pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; +pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; +pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; +pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; +pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; +pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; +pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; +pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; +pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; +pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; +pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; +pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; +pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; +pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; +pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; +pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; +pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; +pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; +pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; +pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; +pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; +pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; +pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; +pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; +pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; +pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; +pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; +pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; +pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; +pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; +pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; +pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; +pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; +pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; +pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; +pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; +pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; +pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; +pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; +pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; +pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; +pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; +pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; +pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; +pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; +pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; +pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; +pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; +pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; +pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; +pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; +pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; +pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; +pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; +pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; +pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; +pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; +pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; +pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; +pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; +pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; +pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; +pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; +pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; +pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; +pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; +pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; +pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; +pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; +pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; +pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; +pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; +pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; +pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; +pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; +pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; +pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; +pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; +pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; +pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; +pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; +pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; +pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; +pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; +pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; +pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; +pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; +pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; +pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; +pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; +pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; +pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; +pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; +pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; +pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; +pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; +pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; +pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; +pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; +pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; +pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; +pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; +pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; +pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; +pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; +pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; +pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; +pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; +pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; +pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; +pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; +pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; +pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; +pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; +pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; +pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; +pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; +pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; +pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; +pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; +pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; +pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; +pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; +pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; +pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; +pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; +pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; +pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; +pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; +pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; +pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; +pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; +pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; +pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; +pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; +pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; +pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; +pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; +pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; +pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; +pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; +pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; +pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; +pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; +pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; +pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; +pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; +pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; +pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; +pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; +pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; +pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; +pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; +pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; +pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; +pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; +pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; +pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; +pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; +pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; +pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; +pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; +pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; +pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; +pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; +pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; +pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; +pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; +pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; +pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; +pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; +pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; +pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; +pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; +pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; +pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; +pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; +pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; +pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; +pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; +pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; +pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; +pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; +pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; +pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; +pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; +pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; +pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; +pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; +pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; +pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; +pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; +pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; +pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; +pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; +pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; +pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; +pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; +pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; +pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; +pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; +pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; +pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; +pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; +pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; +pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; +pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; +pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; +pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; +pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; +pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; +pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; +pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; +pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; +pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; +pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; +pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; +pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; +pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; +pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; +pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; +pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; +pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; +pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; +pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; +pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; +pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; +pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; +pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; +pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; +pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; +pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; +pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; +pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; +pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; +pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; +pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; +pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; +pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; +pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; +pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; +pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; +pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; +pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; +pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; +pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; +pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; +pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; +pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; +pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; +pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; +pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; +pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; +pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; +pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; +pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; +pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; +pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; +pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; +pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; +pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; +pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; +pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; +pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; +pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; +pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; +pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; +pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; +pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; +pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; +pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; +pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; +pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; +pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; +pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; +pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; +pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; +pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; +pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; +pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; +pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; +pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; +pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; +pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; +pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; +pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; +pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; +pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; +pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; +pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; +pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; +pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; +pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; +pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; +pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; +pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; +pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; +pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; +pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; +pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; +pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; +pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; +pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; +pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; +pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; +pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; +pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; +pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; +pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; +pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; +pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; +pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; +pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; +pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; +pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; +pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; +pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; +pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; +pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; +pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; +pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; +pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; +pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; +pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; +pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; +pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; +pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; +pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; +pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; +pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; +pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; +pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; +pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; +pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; +pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; +pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; +pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; +pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; +pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; +pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; +pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; +pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; +pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; +pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; +pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; +pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; +pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; +pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; +pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; +pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; +pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; +pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; +pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; +pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; +pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; +pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; +pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; +pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; +pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; +pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; +pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; +pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; +pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; +pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; +pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; +pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; +pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; +pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; +pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; +pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; +pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; +pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; +pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; +pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; +pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; +pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; +pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; +pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; +pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; +pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; +pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; +pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; +pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; +pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; +pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; +pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; +pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; +pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; +pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; +pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; +pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; +pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; +pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; +pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; +pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; +pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; +pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; +pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; +pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; +pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; +pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; +pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; +pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; +pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; +pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; +pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; +pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; +pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; +pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; +pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; +pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; +pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; +pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; +pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; +pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; +pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; +pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; +pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; +pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; +pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; +pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; +pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; +pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; +pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; +pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; +pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; +pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; +pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; +pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; +pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; +pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; +pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; +pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; +pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; +pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; +pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; +pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; +pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; +pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; +pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; +pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; +pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; +pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; +pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; +pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; +pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; +pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; +pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; +pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; +pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; +pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; +pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; +pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; +pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; +pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; +pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; +pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; +pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; +pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; +pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; +pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; +pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; +pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; +pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; +pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; +pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; +pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; +pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; +pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; +pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; +pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; +pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; +pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; +pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; +pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; +pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; +pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; +pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; +pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; +pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; +pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; +pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; +pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; +pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; +pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; +pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; +pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; +pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; +pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; +pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; +pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; +pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; +pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; +pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; +pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; +pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; +pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; +pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; +pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; +pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; +pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; +pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; +pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; +pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; +pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; +pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; +pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; +pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; +pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; +pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; +pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; +pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; +pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; +pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; +pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; +pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; +pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; +pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; +pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; +pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; +pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; +pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; +pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; +pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; +pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; +pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; +pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; +pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; +pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; +pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; +pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; +pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; +pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; +pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; +pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; +pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; +pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; +pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; +pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; +pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; +pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; +pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; +pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; +pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; +pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; +pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; +pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; +pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; +pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; +pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; +pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; +pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; +pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; +pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; +pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; +pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; +pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; +pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; +pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; +pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; +pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; +pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; +pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; +pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; +pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; +pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; +pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; +pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; +pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; +pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; +pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; +pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; +pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; +pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; +pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; +pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; +pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; +pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; +pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; +pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; +pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; +pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; +pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; +pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; +pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; +pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; +pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; +pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; +pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; +pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; +pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; +pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; +pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; +pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; +pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; +pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; +pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; +pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; +pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -371,29 +1506,6 @@ NLMSGERR_ATTR_MISS_NEST = 6, __NLMSGERR_ATTR_MAX = 7, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_pktinfo { -pub group: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_req { -pub nm_block_size: crate::ctypes::c_uint, -pub nm_block_nr: crate::ctypes::c_uint, -pub nm_frame_size: crate::ctypes::c_uint, -pub nm_frame_nr: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_hdr { -pub nm_status: crate::ctypes::c_uint, -pub nm_len: crate::ctypes::c_uint, -pub nm_group: __u32, -pub nm_pid: __u32, -pub nm_uid: __u32, -pub nm_gid: __u32, -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -404,8 +1516,6 @@ NL_MMAP_STATUS_COPY = 3, NL_MMAP_STATUS_SKIP = 4, } -pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; -pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -413,208 +1523,46 @@ NETLINK_UNCONNECTED = 0, NETLINK_CONNECTED = 1, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nlattr { -pub nla_len: __u16, -pub nla_type: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nla_bitfield32 { -pub value: __u32, -pub selector: __u32, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_attribute_type { -NL_ATTR_TYPE_INVALID = 0, -NL_ATTR_TYPE_FLAG = 1, -NL_ATTR_TYPE_U8 = 2, -NL_ATTR_TYPE_U16 = 3, -NL_ATTR_TYPE_U32 = 4, -NL_ATTR_TYPE_U64 = 5, -NL_ATTR_TYPE_S8 = 6, -NL_ATTR_TYPE_S16 = 7, -NL_ATTR_TYPE_S32 = 8, -NL_ATTR_TYPE_S64 = 9, -NL_ATTR_TYPE_BINARY = 10, -NL_ATTR_TYPE_STRING = 11, -NL_ATTR_TYPE_NUL_STRING = 12, -NL_ATTR_TYPE_NESTED = 13, -NL_ATTR_TYPE_NESTED_ARRAY = 14, -NL_ATTR_TYPE_BITFIELD32 = 15, -} -impl netlink_policy_type_attr { -pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_policy_type_attr { -NL_POLICY_TYPE_ATTR_UNSPEC = 0, -NL_POLICY_TYPE_ATTR_TYPE = 1, -NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, -NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, -NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, -NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, -NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, -NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, -NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, -NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, -NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, -NL_POLICY_TYPE_ATTR_PAD = 11, -NL_POLICY_TYPE_ATTR_MASK = 12, -__NL_POLICY_TYPE_ATTR_MAX = 13, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats { -pub rx_packets: __u32, -pub tx_packets: __u32, -pub rx_bytes: __u32, -pub tx_bytes: __u32, -pub rx_errors: __u32, -pub tx_errors: __u32, -pub rx_dropped: __u32, -pub tx_dropped: __u32, -pub multicast: __u32, -pub collisions: __u32, -pub rx_length_errors: __u32, -pub rx_over_errors: __u32, -pub rx_crc_errors: __u32, -pub rx_frame_errors: __u32, -pub rx_fifo_errors: __u32, -pub rx_missed_errors: __u32, -pub tx_aborted_errors: __u32, -pub tx_carrier_errors: __u32, -pub tx_fifo_errors: __u32, -pub tx_heartbeat_errors: __u32, -pub tx_window_errors: __u32, -pub rx_compressed: __u32, -pub tx_compressed: __u32, -pub rx_nohandler: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, -pub collisions: __u64, -pub rx_length_errors: __u64, -pub rx_over_errors: __u64, -pub rx_crc_errors: __u64, -pub rx_frame_errors: __u64, -pub rx_fifo_errors: __u64, -pub rx_missed_errors: __u64, -pub tx_aborted_errors: __u64, -pub tx_carrier_errors: __u64, -pub tx_fifo_errors: __u64, -pub tx_heartbeat_errors: __u64, -pub tx_window_errors: __u64, -pub rx_compressed: __u64, -pub tx_compressed: __u64, -pub rx_nohandler: __u64, -pub rx_otherhost_dropped: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_hw_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, +pub enum netlink_attribute_type { +NL_ATTR_TYPE_INVALID = 0, +NL_ATTR_TYPE_FLAG = 1, +NL_ATTR_TYPE_U8 = 2, +NL_ATTR_TYPE_U16 = 3, +NL_ATTR_TYPE_U32 = 4, +NL_ATTR_TYPE_U64 = 5, +NL_ATTR_TYPE_S8 = 6, +NL_ATTR_TYPE_S16 = 7, +NL_ATTR_TYPE_S32 = 8, +NL_ATTR_TYPE_S64 = 9, +NL_ATTR_TYPE_BINARY = 10, +NL_ATTR_TYPE_STRING = 11, +NL_ATTR_TYPE_NUL_STRING = 12, +NL_ATTR_TYPE_NESTED = 13, +NL_ATTR_TYPE_NESTED_ARRAY = 14, +NL_ATTR_TYPE_BITFIELD32 = 15, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_ifmap { -pub mem_start: __u64, -pub mem_end: __u64, -pub base_addr: __u64, -pub irq: __u16, -pub dma: __u8, -pub port: __u8, +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_policy_type_attr { +NL_POLICY_TYPE_ATTR_UNSPEC = 0, +NL_POLICY_TYPE_ATTR_TYPE = 1, +NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, +NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, +NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, +NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, +NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, +NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, +NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, +NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, +NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, +NL_POLICY_TYPE_ATTR_PAD = 11, +NL_POLICY_TYPE_ATTR_MASK = 12, +__NL_POLICY_TYPE_ATTR_MAX = 13, } -pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; -pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; -pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; -pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; -pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; -pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; -pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; -pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; -pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; -pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; -pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; -pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; -pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; -pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; -pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; -pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; -pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; -pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; -pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; -pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; -pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; -pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; -pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; -pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; -pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; -pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; -pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; -pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; -pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; -pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; -pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; -pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; -pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; -pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; -pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; -pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; -pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; -pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; -pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; -pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; -pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; -pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; -pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; -pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; -pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; -pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; -pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; -pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; -pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; -pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; -pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; -pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; -pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; -pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; -pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; -pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; -pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; -pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; -pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; -pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; -pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; -pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; -pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; -pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; -pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -686,11 +1634,6 @@ IFLA_GRO_IPV4_MAX_SIZE = 64, __IFLA_MAX = 65, } -pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; -pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; -pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; -pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; -pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -700,9 +1643,6 @@ IFLA_PROTO_DOWN_REASON_VALUE = 2, __IFLA_PROTO_DOWN_REASON_CNT = 3, } -pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; -pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; -pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -711,17 +1651,6 @@ IFLA_INET_CONF = 1, __IFLA_INET_MAX = 2, } -pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; -pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; -pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; -pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; -pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; -pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; -pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; -pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; -pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; -pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; -pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -747,55 +1676,6 @@ IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, IN6_ADDR_GEN_MODE_RANDOM = 3, } -pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; -pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; -pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; -pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; -pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; -pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; -pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; -pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; -pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; -pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; -pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; -pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; -pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; -pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; -pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; -pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; -pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; -pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; -pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; -pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; -pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; -pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; -pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; -pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; -pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; -pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; -pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; -pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; -pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; -pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; -pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; -pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; -pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; -pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; -pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; -pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; -pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; -pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; -pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; -pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; -pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; -pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; -pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; -pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; -pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; -pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; -pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; -pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; -pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -832,83 +1712,31 @@ IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29, IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30, IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, -IFLA_BR_MCAST_QUERIER_INTVL = 32, -IFLA_BR_MCAST_QUERY_INTVL = 33, -IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, -IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, -IFLA_BR_NF_CALL_IPTABLES = 36, -IFLA_BR_NF_CALL_IP6TABLES = 37, -IFLA_BR_NF_CALL_ARPTABLES = 38, -IFLA_BR_VLAN_DEFAULT_PVID = 39, -IFLA_BR_PAD = 40, -IFLA_BR_VLAN_STATS_ENABLED = 41, -IFLA_BR_MCAST_STATS_ENABLED = 42, -IFLA_BR_MCAST_IGMP_VERSION = 43, -IFLA_BR_MCAST_MLD_VERSION = 44, -IFLA_BR_VLAN_STATS_PER_PORT = 45, -IFLA_BR_MULTI_BOOLOPT = 46, -IFLA_BR_MCAST_QUERIER_STATE = 47, -__IFLA_BR_MAX = 48, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_bridge_id { -pub prio: [__u8; 2usize], -pub addr: [__u8; 6usize], -} -pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; -pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -BRIDGE_MODE_UNSPEC = 0, -BRIDGE_MODE_HAIRPIN = 1, -} -pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; -pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; -pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; -pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; -pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; -pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; -pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; -pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; -pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; -pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; -pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; -pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; -pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; -pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; -pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; -pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; -pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; -pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; -pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; -pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; -pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; -pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; -pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; -pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; -pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; -pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; -pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; -pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; -pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; -pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; -pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; -pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; -pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; -pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; -pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; -pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; -pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; -pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; -pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; -pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; -pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; -pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +IFLA_BR_MCAST_QUERIER_INTVL = 32, +IFLA_BR_MCAST_QUERY_INTVL = 33, +IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, +IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, +IFLA_BR_NF_CALL_IPTABLES = 36, +IFLA_BR_NF_CALL_IP6TABLES = 37, +IFLA_BR_NF_CALL_ARPTABLES = 38, +IFLA_BR_VLAN_DEFAULT_PVID = 39, +IFLA_BR_PAD = 40, +IFLA_BR_VLAN_STATS_ENABLED = 41, +IFLA_BR_MCAST_STATS_ENABLED = 42, +IFLA_BR_MCAST_IGMP_VERSION = 43, +IFLA_BR_MCAST_MLD_VERSION = 44, +IFLA_BR_VLAN_STATS_PER_PORT = 45, +IFLA_BR_MULTI_BOOLOPT = 46, +IFLA_BR_MCAST_QUERIER_STATE = 47, +__IFLA_BR_MAX = 48, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +BRIDGE_MODE_UNSPEC = 0, +BRIDGE_MODE_HAIRPIN = 1, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -958,21 +1786,6 @@ IFLA_BRPORT_MCAST_MAX_GROUPS = 42, __IFLA_BRPORT_MAX = 43, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_cacheinfo { -pub max_reasm_len: __u32, -pub tstamp: __u32, -pub reachable_time: __u32, -pub retrans_time: __u32, -} -pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; -pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; -pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; -pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; -pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; -pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; -pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -985,13 +1798,6 @@ IFLA_INFO_SLAVE_DATA = 5, __IFLA_INFO_MAX = 6, } -pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; -pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; -pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; -pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; -pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; -pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; -pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1004,15 +1810,6 @@ IFLA_VLAN_PROTOCOL = 5, __IFLA_VLAN_MAX = 6, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; -pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; -pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1021,22 +1818,6 @@ IFLA_VLAN_QOS_MAPPING = 1, __IFLA_VLAN_QOS_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_qos_mapping { -pub from: __u32, -pub to: __u32, -} -pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; -pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; -pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; -pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; -pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; -pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; -pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; -pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; -pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; -pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1071,9 +1852,6 @@ MACVLAN_MACADDR_FLUSH = 2, MACVLAN_MACADDR_SET = 3, } -pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; -pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; -pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1082,9 +1860,6 @@ IFLA_VRF_TABLE = 1, __IFLA_VRF_MAX = 2, } -pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; -pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; -pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1093,23 +1868,6 @@ IFLA_VRF_PORT_TABLE = 1, __IFLA_VRF_PORT_MAX = 2, } -pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; -pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; -pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; -pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; -pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; -pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; -pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; -pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; -pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; -pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; -pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; -pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; -pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; -pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; -pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; -pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; -pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1132,11 +1890,6 @@ IFLA_MACSEC_OFFLOAD = 15, __IFLA_MACSEC_MAX = 16, } -pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; -pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; -pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; -pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; -pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1147,9 +1900,6 @@ IFLA_XFRM_COLLECT_METADATA = 3, __IFLA_XFRM_MAX = 4, } -impl macsec_validation_type { -pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1159,9 +1909,6 @@ MACSEC_VALIDATE_STRICT = 2, __MACSEC_VALIDATE_END = 3, } -impl macsec_offload { -pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1171,10 +1918,6 @@ MACSEC_OFFLOAD_MAC = 2, __MACSEC_OFFLOAD_END = 3, } -pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; -pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; -pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; -pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1193,25 +1936,6 @@ IPVLAN_MODE_L3S = 2, IPVLAN_MODE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tunnel_msg { -pub family: __u8, -pub flags: __u8, -pub reserved2: __u16, -pub ifindex: __u32, -} -pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; -pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; -pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; -pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; -pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; -pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; -pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; -pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; -pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1228,13 +1952,6 @@ VNIFILTER_ENTRY_STATS_PAD = 9, __VNIFILTER_ENTRY_STATS_MAX = 10, } -pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; -pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; -pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; -pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; -pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; -pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1247,9 +1964,6 @@ VXLAN_VNIFILTER_ENTRY_STATS = 5, __VXLAN_VNIFILTER_ENTRY_MAX = 6, } -pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; -pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1258,38 +1972,6 @@ VXLAN_VNIFILTER_ENTRY = 1, __VXLAN_VNIFILTER_MAX = 2, } -pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; -pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; -pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; -pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; -pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; -pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; -pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; -pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; -pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; -pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; -pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; -pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; -pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; -pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; -pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; -pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; -pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; -pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; -pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; -pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; -pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; -pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; -pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; -pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; -pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; -pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; -pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; -pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; -pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; -pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1327,15 +2009,6 @@ IFLA_VXLAN_VNIFILTER = 30, __IFLA_VXLAN_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vxlan_port_range { -pub low: __be16, -pub high: __be16, -} -impl ifla_vxlan_df { -pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1345,22 +2018,6 @@ VXLAN_DF_INHERIT = 2, __VXLAN_DF_END = 3, } -pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; -pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; -pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; -pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; -pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; -pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; -pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; -pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; -pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; -pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; -pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; -pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; -pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; -pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1382,9 +2039,6 @@ IFLA_GENEVE_INNER_PROTO_INHERIT = 14, __IFLA_GENEVE_MAX = 15, } -impl ifla_geneve_df { -pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1394,12 +2048,6 @@ GENEVE_DF_INHERIT = 2, __GENEVE_DF_END = 3, } -pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; -pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; -pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; -pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; -pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; -pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1411,9 +2059,6 @@ IFLA_BAREUDP_MULTIPROTO_MODE = 4, __IFLA_BAREUDP_MAX = 5, } -pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; -pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; -pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1429,60 +2074,19 @@ GTP_ROLE_GGSN = 0, GTP_ROLE_SGSN = 1, } -pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; -pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; -pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; -pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; -pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; -pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; -pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; -pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub enum _bindgen_ty_25 { IFLA_GTP_UNSPEC = 0, IFLA_GTP_FD0 = 1, -IFLA_GTP_FD1 = 2, -IFLA_GTP_PDP_HASHSIZE = 3, -IFLA_GTP_ROLE = 4, -IFLA_GTP_CREATE_SOCKETS = 5, -IFLA_GTP_RESTART_COUNT = 6, -__IFLA_GTP_MAX = 7, -} -pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; -pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; -pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; -pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; -pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; -pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; -pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; -pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; -pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; -pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; -pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; -pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; -pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; -pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; -pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; -pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; -pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; -pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; -pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; -pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; -pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; -pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; -pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; -pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; -pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; -pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; -pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; -pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; -pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; -pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; -pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; -pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; -pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +IFLA_GTP_FD1 = 2, +IFLA_GTP_PDP_HASHSIZE = 3, +IFLA_GTP_ROLE = 4, +IFLA_GTP_CREATE_SOCKETS = 5, +IFLA_GTP_RESTART_COUNT = 6, +__IFLA_GTP_MAX = 7, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1521,13 +2125,6 @@ IFLA_BOND_NS_IP6_TARGET = 31, __IFLA_BOND_MAX = 32, } -pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; -pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; -pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; -pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; -pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1540,17 +2137,6 @@ IFLA_BOND_AD_INFO_PARTNER_MAC = 5, __IFLA_BOND_AD_INFO_MAX = 6, } -pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; -pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; -pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; -pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; -pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; -pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; -pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; -pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; -pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1567,9 +2153,6 @@ IFLA_BOND_SLAVE_PRIO = 9, __IFLA_BOND_SLAVE_MAX = 10, } -pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; -pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; -pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1578,21 +2161,6 @@ IFLA_VF_INFO = 1, __IFLA_VF_INFO_MAX = 2, } -pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; -pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; -pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; -pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; -pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; -pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; -pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; -pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; -pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; -pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; -pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; -pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; -pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; -pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; -pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1613,27 +2181,6 @@ IFLA_VF_BROADCAST = 13, __IFLA_VF_MAX = 14, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_mac { -pub vf: __u32, -pub mac: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_broadcast { -pub broadcast: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -} -pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; -pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; -pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1642,43 +2189,6 @@ IFLA_VF_VLAN_INFO = 1, __IFLA_VF_VLAN_INFO_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan_info { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -pub vlan_proto: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_tx_rate { -pub vf: __u32, -pub rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rate { -pub vf: __u32, -pub min_tx_rate: __u32, -pub max_tx_rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_spoofchk { -pub vf: __u32, -pub setting: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_guid { -pub vf: __u32, -pub guid: __u64, -} -pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; -pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; -pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; -pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1688,28 +2198,6 @@ IFLA_VF_LINK_STATE_DISABLE = 2, __IFLA_VF_LINK_STATE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_link_state { -pub vf: __u32, -pub link_state: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rss_query_en { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; -pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; -pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; -pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; -pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; -pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; -pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; -pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; -pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; -pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1725,15 +2213,6 @@ IFLA_VF_STATS_TX_DROPPED = 8, __IFLA_VF_STATS_MAX = 9, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_trust { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; -pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; -pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1742,15 +2221,6 @@ IFLA_VF_PORT = 1, __IFLA_VF_PORT_MAX = 2, } -pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; -pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; -pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; -pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; -pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; -pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; -pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; -pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; -pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1765,10 +2235,6 @@ IFLA_PORT_RESPONSE = 7, __IFLA_PORT_MAX = 8, } -pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; -pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; -pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; -pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1778,19 +2244,6 @@ PORT_REQUEST_ASSOCIATE = 2, PORT_REQUEST_DISASSOCIATE = 3, } -pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; -pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; -pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; -pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; -pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; -pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; -pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; -pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; -pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; -pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; -pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1809,19 +2262,6 @@ PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, PORT_PROFILE_RESPONSE_ERROR = 261, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_port_vsi { -pub vsi_mgr_id: __u8, -pub vsi_type_id: [__u8; 3usize], -pub vsi_type_version: __u8, -pub pad: [__u8; 3usize], -} -pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; -pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; -pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; -pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; -pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1832,8 +2272,6 @@ IFLA_IPOIB_UMCAST = 3, __IFLA_IPOIB_MAX = 4, } -pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; -pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1841,9 +2279,6 @@ IPOIB_MODE_DATAGRAM = 0, IPOIB_MODE_CONNECTED = 1, } -pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; -pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; -pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1852,15 +2287,6 @@ HSR_PROTOCOL_PRP = 1, HSR_PROTOCOL_MAX = 2, } -pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; -pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; -pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; -pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; -pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; -pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; -pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; -pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; -pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1875,22 +2301,6 @@ IFLA_HSR_PROTOCOL = 7, __IFLA_HSR_MAX = 8, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_stats_msg { -pub family: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub ifindex: __u32, -pub filter_mask: __u32, -} -pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; -pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; -pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; -pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; -pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; -pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; -pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1903,10 +2313,6 @@ IFLA_STATS_AF_SPEC = 5, __IFLA_STATS_MAX = 6, } -pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; -pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; -pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1916,10 +2322,6 @@ IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, __IFLA_STATS_GETSET_MAX = 3, } -pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; -pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; -pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; -pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1929,11 +2331,6 @@ LINK_XSTATS_TYPE_BOND = 2, __LINK_XSTATS_TYPE_MAX = 3, } -pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; -pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1944,10 +2341,6 @@ IFLA_OFFLOAD_XSTATS_L3_STATS = 3, __IFLA_OFFLOAD_XSTATS_MAX = 4, } -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; -pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1957,11 +2350,6 @@ IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, } -pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; -pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; -pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; -pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; -pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1972,16 +2360,6 @@ XDP_ATTACHED_HW = 3, XDP_ATTACHED_MULTI = 4, } -pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; -pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; -pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; -pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; -pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; -pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; -pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; -pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; -pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; -pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1997,13 +2375,6 @@ IFLA_XDP_EXPECTED_FD = 8, __IFLA_XDP_MAX = 9, } -pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; -pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; -pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; -pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; -pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; -pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; -pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2016,17 +2387,6 @@ IFLA_EVENT_IGMP_RESEND = 5, IFLA_EVENT_BONDING_OPTIONS = 6, } -pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; -pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; -pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; -pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; -pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; -pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; -pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; -pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; -pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; -pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; -pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2042,11 +2402,7 @@ IFLA_TUN_NUM_QUEUES = 8, IFLA_TUN_NUM_DISABLED_QUEUES = 9, __IFLA_TUN_MAX = 10, -} -pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; -pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; -pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; -pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2056,15 +2412,6 @@ IFLA_RMNET_FLAGS = 2, __IFLA_RMNET_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_rmnet_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; -pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; -pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2073,9 +2420,6 @@ IFLA_MCTP_NET = 1, __IFLA_MCTP_MAX = 2, } -pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; -pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; -pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2084,28 +2428,6 @@ IFLA_DSA_MASTER = 1, __IFLA_DSA_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifaddrmsg { -pub ifa_family: __u8, -pub ifa_prefixlen: __u8, -pub ifa_flags: __u8, -pub ifa_scope: __u8, -pub ifa_index: __u32, -} -pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; -pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; -pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; -pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; -pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; -pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; -pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; -pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; -pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; -pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; -pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; -pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; -pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2124,44 +2446,6 @@ IFA_PROTO = 11, __IFA_MAX = 12, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifa_cacheinfo { -pub ifa_prefered: __u32, -pub ifa_valid: __u32, -pub cstamp: __u32, -pub tstamp: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndmsg { -pub ndm_family: __u8, -pub ndm_pad1: __u8, -pub ndm_pad2: __u16, -pub ndm_ifindex: __s32, -pub ndm_state: __u16, -pub ndm_flags: __u8, -pub ndm_type: __u8, -} -pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; -pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; -pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; -pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; -pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; -pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; -pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; -pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; -pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; -pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; -pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; -pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; -pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; -pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; -pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; -pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; -pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; -pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; -pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2186,50 +2470,6 @@ NDA_NDM_FLAGS_MASK = 17, __NDA_MAX = 18, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nda_cacheinfo { -pub ndm_confirmed: __u32, -pub ndm_used: __u32, -pub ndm_updated: __u32, -pub ndm_refcnt: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_stats { -pub ndts_allocs: __u64, -pub ndts_destroys: __u64, -pub ndts_hash_grows: __u64, -pub ndts_res_failed: __u64, -pub ndts_lookups: __u64, -pub ndts_hits: __u64, -pub ndts_rcv_probes_mcast: __u64, -pub ndts_rcv_probes_ucast: __u64, -pub ndts_periodic_gc_runs: __u64, -pub ndts_forced_gc_runs: __u64, -pub ndts_table_fulls: __u64, -} -pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; -pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; -pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; -pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; -pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; -pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; -pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; -pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; -pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; -pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; -pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; -pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; -pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; -pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; -pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; -pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; -pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; -pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; -pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; -pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; -pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2256,37 +2496,6 @@ NDTPA_INTERVAL_PROBE_TIME_MS = 19, __NDTPA_MAX = 20, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndtmsg { -pub ndtm_family: __u8, -pub ndtm_pad1: __u8, -pub ndtm_pad2: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_config { -pub ndtc_key_len: __u16, -pub ndtc_entry_size: __u16, -pub ndtc_entries: __u32, -pub ndtc_last_flush: __u32, -pub ndtc_last_rand: __u32, -pub ndtc_hash_rnd: __u32, -pub ndtc_hash_mask: __u32, -pub ndtc_hash_chain_gc: __u32, -pub ndtc_proxy_qlen: __u32, -} -pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; -pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; -pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; -pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; -pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; -pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; -pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; -pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; -pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; -pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; -pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2303,8 +2512,6 @@ NDTA_PAD = 9, __NDTA_MAX = 10, } -pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; -pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2312,10 +2519,6 @@ FDB_NOTIFY_BIT = 1, FDB_NOTIFY_INACTIVE_BIT = 2, } -pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; -pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; -pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; -pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2325,79 +2528,6 @@ NFEA_DONT_REFRESH = 2, __NFEA_MAX = 3, } -pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; -pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; -pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; -pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; -pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; -pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; -pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; -pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; -pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; -pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; -pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; -pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; -pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; -pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; -pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; -pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; -pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; -pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; -pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; -pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; -pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; -pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; -pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; -pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; -pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; -pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; -pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; -pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; -pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; -pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; -pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; -pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; -pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; -pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; -pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; -pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; -pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; -pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; -pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; -pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; -pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; -pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; -pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; -pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; -pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; -pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; -pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; -pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; -pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; -pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; -pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; -pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; -pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; -pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; -pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; -pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; -pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; -pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; -pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; -pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; -pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; -pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; -pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; -pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; -pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; -pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; -pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; -pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; -pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; -pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; -pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2464,49 +2594,17 @@ RTM_NEWLINKPROP = 108, RTM_DELLINKPROP = 109, RTM_GETLINKPROP = 110, -RTM_NEWVLAN = 112, -RTM_DELVLAN = 113, -RTM_GETVLAN = 114, -RTM_NEWNEXTHOPBUCKET = 116, -RTM_DELNEXTHOPBUCKET = 117, -RTM_GETNEXTHOPBUCKET = 118, -RTM_NEWTUNNEL = 120, -RTM_DELTUNNEL = 121, -RTM_GETTUNNEL = 122, -__RTM_MAX = 123, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtattr { -pub rta_len: crate::ctypes::c_ushort, -pub rta_type: crate::ctypes::c_ushort, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtmsg { -pub rtm_family: crate::ctypes::c_uchar, -pub rtm_dst_len: crate::ctypes::c_uchar, -pub rtm_src_len: crate::ctypes::c_uchar, -pub rtm_tos: crate::ctypes::c_uchar, -pub rtm_table: crate::ctypes::c_uchar, -pub rtm_protocol: crate::ctypes::c_uchar, -pub rtm_scope: crate::ctypes::c_uchar, -pub rtm_type: crate::ctypes::c_uchar, -pub rtm_flags: crate::ctypes::c_uint, +RTM_NEWVLAN = 112, +RTM_DELVLAN = 113, +RTM_GETVLAN = 114, +RTM_NEWNEXTHOPBUCKET = 116, +RTM_DELNEXTHOPBUCKET = 117, +RTM_GETNEXTHOPBUCKET = 118, +RTM_NEWTUNNEL = 120, +RTM_DELTUNNEL = 121, +RTM_GETTUNNEL = 122, +__RTM_MAX = 123, } -pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; -pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; -pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; -pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; -pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; -pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; -pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; -pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; -pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; -pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; -pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; -pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; -pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2583,51 +2681,6 @@ RTA_NH_ID = 30, __RTA_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnexthop { -pub rtnh_len: crate::ctypes::c_ushort, -pub rtnh_flags: crate::ctypes::c_uchar, -pub rtnh_hops: crate::ctypes::c_uchar, -pub rtnh_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug)] -pub struct rtvia { -pub rtvia_family: __kernel_sa_family_t, -pub rtvia_addr: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_cacheinfo { -pub rta_clntref: __u32, -pub rta_lastuse: __u32, -pub rta_expires: __s32, -pub rta_error: __u32, -pub rta_used: __u32, -pub rta_id: __u32, -pub rta_ts: __u32, -pub rta_tsage: __u32, -} -pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; -pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; -pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; -pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; -pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; -pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; -pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; -pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; -pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; -pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; -pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; -pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; -pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; -pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; -pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; -pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; -pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; -pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; -pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2652,72 +2705,6 @@ RTAX_FASTOPEN_NO_COOKIE = 17, __RTAX_MAX = 18, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rta_session { -pub proto: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub u: rta_session__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union rta_session__bindgen_ty_1 { -pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, -pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, -pub spi: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { -pub sport: __u16, -pub dport: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { -pub type_: __u8, -pub code: __u8, -pub ident: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_mfc_stats { -pub mfcs_packets: __u64, -pub mfcs_bytes: __u64, -pub mfcs_wrong_if: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtgenmsg { -pub rtgen_family: crate::ctypes::c_uchar, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifinfomsg { -pub ifi_family: crate::ctypes::c_uchar, -pub __ifi_pad: crate::ctypes::c_uchar, -pub ifi_type: crate::ctypes::c_ushort, -pub ifi_index: crate::ctypes::c_int, -pub ifi_flags: crate::ctypes::c_uint, -pub ifi_change: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefixmsg { -pub prefix_family: crate::ctypes::c_uchar, -pub prefix_pad1: crate::ctypes::c_uchar, -pub prefix_pad2: crate::ctypes::c_ushort, -pub prefix_ifindex: crate::ctypes::c_int, -pub prefix_type: crate::ctypes::c_uchar, -pub prefix_len: crate::ctypes::c_uchar, -pub prefix_flags: crate::ctypes::c_uchar, -pub prefix_pad3: crate::ctypes::c_uchar, -} -pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; -pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; -pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; -pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2727,41 +2714,6 @@ PREFIX_CACHEINFO = 2, __PREFIX_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefix_cacheinfo { -pub preferred_time: __u32, -pub valid_time: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcmsg { -pub tcm_family: crate::ctypes::c_uchar, -pub tcm__pad1: crate::ctypes::c_uchar, -pub tcm__pad2: crate::ctypes::c_ushort, -pub tcm_ifindex: crate::ctypes::c_int, -pub tcm_handle: __u32, -pub tcm_parent: __u32, -pub tcm_info: __u32, -} -pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; -pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; -pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; -pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; -pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; -pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; -pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; -pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; -pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; -pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; -pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; -pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; -pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; -pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; -pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; -pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; -pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; -pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2785,21 +2737,6 @@ TCA_EXT_WARN_MSG = 16, __TCA_MAX = 17, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nduseroptmsg { -pub nduseropt_family: crate::ctypes::c_uchar, -pub nduseropt_pad1: crate::ctypes::c_uchar, -pub nduseropt_opts_len: crate::ctypes::c_ushort, -pub nduseropt_ifindex: crate::ctypes::c_int, -pub nduseropt_icmp_type: __u8, -pub nduseropt_icmp_code: __u8, -pub nduseropt_pad2: crate::ctypes::c_ushort, -pub nduseropt_pad3: crate::ctypes::c_uint, -} -pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; -pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; -pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2851,20 +2788,6 @@ RTNLGRP_STATS = 36, __RTNLGRP_MAX = 37, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcamsg { -pub tca_family: crate::ctypes::c_uchar, -pub tca__pad1: crate::ctypes::c_uchar, -pub tca__pad2: crate::ctypes::c_ushort, -} -pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; -pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; -pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; -pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; -pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; -pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; -pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2877,3 +2800,61 @@ TCA_ROOT_EXT_WARN_MSG = 5, __TCA_ROOT_MAX = 6, } +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union rta_session__bindgen_ty_1 { +pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, +pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, +pub spi: __u32, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl nlmsgerr_attrs { +pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +} +impl netlink_policy_type_attr { +pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; +} +impl macsec_validation_type { +pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; +} +impl macsec_offload { +pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; +} +impl ifla_vxlan_df { +pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; +} +impl ifla_geneve_df { +pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/net.rs temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/net.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/net.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/net.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1850 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type socklen_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct __vector128 { +pub u: [__u32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_addr { +pub s_addr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq { +pub imr_multiaddr: in_addr, +pub imr_interface: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreqn { +pub imr_multiaddr: in_addr, +pub imr_address: in_addr, +pub imr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq_source { +pub imr_multiaddr: __be32, +pub imr_interface: __be32, +pub imr_sourceaddr: __be32, +} +#[repr(C)] +pub struct ip_msfilter { +pub imsf_multiaddr: __be32, +pub imsf_interface: __be32, +pub imsf_fmode: __u32, +pub imsf_numsrc: __u32, +pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, +} +#[repr(C)] +pub struct ip_msfilter__bindgen_ty_1 { +pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, +pub __bindgen_anon_1: __BindgenUnionField, +pub bindgen_union_field: u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { +pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub imsf_slist_flex: __IncompleteArrayField<__be32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_req { +pub gr_interface: __u32, +pub gr_group: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_source_req { +pub gsr_interface: __u32, +pub gsr_group: __kernel_sockaddr_storage, +pub gsr_source: __kernel_sockaddr_storage, +} +#[repr(C)] +pub struct group_filter { +pub __bindgen_anon_1: group_filter__bindgen_ty_1, +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 34usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { +pub gf_interface_aux: __u32, +pub gf_group_aux: __kernel_sockaddr_storage, +pub gf_fmode_aux: __u32, +pub gf_numsrc_aux: __u32, +pub gf_slist: [__kernel_sockaddr_storage; 1usize], +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { +pub gf_interface: __u32, +pub gf_group: __kernel_sockaddr_storage, +pub gf_fmode: __u32, +pub gf_numsrc: __u32, +pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_pktinfo { +pub ipi_ifindex: crate::ctypes::c_int, +pub ipi_spec_dst: in_addr, +pub ipi_addr: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_in { +pub sin_family: __kernel_sa_family_t, +pub sin_port: __be16, +pub sin_addr: in_addr, +pub __pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct iphdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub tos: __u8, +pub tot_len: __be16, +pub id: __be16, +pub frag_off: __be16, +pub ttl: __u8, +pub protocol: __u8, +pub check: __sum16, +pub __bindgen_anon_1: iphdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_auth_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub reserved: __be16, +pub spi: __be32, +pub seq_no: __be32, +pub auth_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_esp_hdr { +pub spi: __be32, +pub seq_no: __be32, +pub enc_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_comp_hdr { +pub nexthdr: __u8, +pub flags: __u8, +pub cpi: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_beet_phdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub padlen: __u8, +pub reserved: __u8, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_addr { +pub in6_u: in6_addr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr_in6 { +pub sin6_family: crate::ctypes::c_ushort, +pub sin6_port: __be16, +pub sin6_flowinfo: __be32, +pub sin6_addr: in6_addr, +pub sin6_scope_id: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6_mreq { +pub ipv6mr_multiaddr: in6_addr, +pub ipv6mr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_flowlabel_req { +pub flr_dst: in6_addr, +pub flr_label: __be32, +pub flr_action: __u8, +pub flr_share: __u8, +pub flr_flags: __u16, +pub flr_expires: __u16, +pub flr_linger: __u16, +pub __flr_pad: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_pktinfo { +pub ipi6_addr: in6_addr, +pub ipi6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ip6_mtuinfo { +pub ip6m_addr: sockaddr_in6, +pub ip6m_mtu: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_ifreq { +pub ifr6_addr: in6_addr, +pub ifr6_prefixlen: __u32, +pub ifr6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_rt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub type_: __u8, +pub segments_left: __u8, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_opt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +} +#[repr(C)] +pub struct rt0_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rt2_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: in6_addr, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct ipv6_destopt_hao { +pub type_: __u8, +pub length: __u8, +pub addr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub flow_lbl: [__u8; 3usize], +pub payload_len: __be16, +pub nexthdr: __u8, +pub hop_limit: __u8, +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcphdr { +pub source: __be16, +pub dest: __be16, +pub seq: __be32, +pub ack_seq: __be32, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub window: __be16, +pub check: __sum16, +pub urg_ptr: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_opt { +pub opt_code: __u32, +pub opt_val: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_window { +pub snd_wl1: __u32, +pub snd_wnd: __u32, +pub max_window: __u32, +pub rcv_wnd: __u32, +pub rcv_wup: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_info { +pub tcpi_state: __u8, +pub tcpi_ca_state: __u8, +pub tcpi_retransmits: __u8, +pub tcpi_probes: __u8, +pub tcpi_backoff: __u8, +pub tcpi_options: __u8, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub tcpi_rto: __u32, +pub tcpi_ato: __u32, +pub tcpi_snd_mss: __u32, +pub tcpi_rcv_mss: __u32, +pub tcpi_unacked: __u32, +pub tcpi_sacked: __u32, +pub tcpi_lost: __u32, +pub tcpi_retrans: __u32, +pub tcpi_fackets: __u32, +pub tcpi_last_data_sent: __u32, +pub tcpi_last_ack_sent: __u32, +pub tcpi_last_data_recv: __u32, +pub tcpi_last_ack_recv: __u32, +pub tcpi_pmtu: __u32, +pub tcpi_rcv_ssthresh: __u32, +pub tcpi_rtt: __u32, +pub tcpi_rttvar: __u32, +pub tcpi_snd_ssthresh: __u32, +pub tcpi_snd_cwnd: __u32, +pub tcpi_advmss: __u32, +pub tcpi_reordering: __u32, +pub tcpi_rcv_rtt: __u32, +pub tcpi_rcv_space: __u32, +pub tcpi_total_retrans: __u32, +pub tcpi_pacing_rate: __u64, +pub tcpi_max_pacing_rate: __u64, +pub tcpi_bytes_acked: __u64, +pub tcpi_bytes_received: __u64, +pub tcpi_segs_out: __u32, +pub tcpi_segs_in: __u32, +pub tcpi_notsent_bytes: __u32, +pub tcpi_min_rtt: __u32, +pub tcpi_data_segs_in: __u32, +pub tcpi_data_segs_out: __u32, +pub tcpi_delivery_rate: __u64, +pub tcpi_busy_time: __u64, +pub tcpi_rwnd_limited: __u64, +pub tcpi_sndbuf_limited: __u64, +pub tcpi_delivered: __u32, +pub tcpi_delivered_ce: __u32, +pub tcpi_bytes_sent: __u64, +pub tcpi_bytes_retrans: __u64, +pub tcpi_dsack_dups: __u32, +pub tcpi_reord_seen: __u32, +pub tcpi_rcv_ooopack: __u32, +pub tcpi_snd_wnd: __u32, +pub tcpi_rcv_wnd: __u32, +pub tcpi_rehash: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct tcp_md5sig { +pub tcpm_addr: __kernel_sockaddr_storage, +pub tcpm_flags: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_ifindex: crate::ctypes::c_int, +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_diag_md5sig { +pub tcpm_family: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_addr: [__be32; 4usize], +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_zerocopy_receive { +pub address: __u64, +pub length: __u32, +pub recv_skip_hint: __u32, +pub inq: __u32, +pub err: __s32, +pub copybuf_address: __u64, +pub copybuf_len: __s32, +pub flags: __u32, +pub msg_control: __u64, +pub msg_controllen: __u64, +pub msg_flags: __u32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_un { +pub sun_family: __kernel_sa_family_t, +pub sun_path: [crate::ctypes::c_char; 108usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr { +pub __storage: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct linger { +pub l_onoff: crate::ctypes::c_int, +pub l_linger: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct msghdr { +pub msg_name: *mut crate::ctypes::c_void, +pub msg_namelen: crate::ctypes::c_int, +pub msg_iov: *mut iovec, +pub msg_iovlen: usize, +pub msg_control: *mut crate::ctypes::c_void, +pub msg_controllen: usize, +pub msg_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct cmsghdr { +pub cmsg_len: usize, +pub cmsg_level: crate::ctypes::c_int, +pub cmsg_type: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ucred { +pub pid: __u32, +pub uid: __u32, +pub gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mmsghdr { +pub msg_hdr: msghdr, +pub msg_len: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub _address: u8, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const IP_TOS: u32 = 1; +pub const IP_TTL: u32 = 2; +pub const IP_HDRINCL: u32 = 3; +pub const IP_OPTIONS: u32 = 4; +pub const IP_ROUTER_ALERT: u32 = 5; +pub const IP_RECVOPTS: u32 = 6; +pub const IP_RETOPTS: u32 = 7; +pub const IP_PKTINFO: u32 = 8; +pub const IP_PKTOPTIONS: u32 = 9; +pub const IP_MTU_DISCOVER: u32 = 10; +pub const IP_RECVERR: u32 = 11; +pub const IP_RECVTTL: u32 = 12; +pub const IP_RECVTOS: u32 = 13; +pub const IP_MTU: u32 = 14; +pub const IP_FREEBIND: u32 = 15; +pub const IP_IPSEC_POLICY: u32 = 16; +pub const IP_XFRM_POLICY: u32 = 17; +pub const IP_PASSSEC: u32 = 18; +pub const IP_TRANSPARENT: u32 = 19; +pub const IP_RECVRETOPTS: u32 = 7; +pub const IP_ORIGDSTADDR: u32 = 20; +pub const IP_RECVORIGDSTADDR: u32 = 20; +pub const IP_MINTTL: u32 = 21; +pub const IP_NODEFRAG: u32 = 22; +pub const IP_CHECKSUM: u32 = 23; +pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; +pub const IP_RECVFRAGSIZE: u32 = 25; +pub const IP_RECVERR_RFC4884: u32 = 26; +pub const IP_PMTUDISC_DONT: u32 = 0; +pub const IP_PMTUDISC_WANT: u32 = 1; +pub const IP_PMTUDISC_DO: u32 = 2; +pub const IP_PMTUDISC_PROBE: u32 = 3; +pub const IP_PMTUDISC_INTERFACE: u32 = 4; +pub const IP_PMTUDISC_OMIT: u32 = 5; +pub const IP_MULTICAST_IF: u32 = 32; +pub const IP_MULTICAST_TTL: u32 = 33; +pub const IP_MULTICAST_LOOP: u32 = 34; +pub const IP_ADD_MEMBERSHIP: u32 = 35; +pub const IP_DROP_MEMBERSHIP: u32 = 36; +pub const IP_UNBLOCK_SOURCE: u32 = 37; +pub const IP_BLOCK_SOURCE: u32 = 38; +pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; +pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; +pub const IP_MSFILTER: u32 = 41; +pub const MCAST_JOIN_GROUP: u32 = 42; +pub const MCAST_BLOCK_SOURCE: u32 = 43; +pub const MCAST_UNBLOCK_SOURCE: u32 = 44; +pub const MCAST_LEAVE_GROUP: u32 = 45; +pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; +pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; +pub const MCAST_MSFILTER: u32 = 48; +pub const IP_MULTICAST_ALL: u32 = 49; +pub const IP_UNICAST_IF: u32 = 50; +pub const IP_LOCAL_PORT_RANGE: u32 = 51; +pub const MCAST_EXCLUDE: u32 = 0; +pub const MCAST_INCLUDE: u32 = 1; +pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; +pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; +pub const __SOCK_SIZE__: u32 = 16; +pub const IN_CLASSA_NET: u32 = 4278190080; +pub const IN_CLASSA_NSHIFT: u32 = 24; +pub const IN_CLASSA_HOST: u32 = 16777215; +pub const IN_CLASSA_MAX: u32 = 128; +pub const IN_CLASSB_NET: u32 = 4294901760; +pub const IN_CLASSB_NSHIFT: u32 = 16; +pub const IN_CLASSB_HOST: u32 = 65535; +pub const IN_CLASSB_MAX: u32 = 65536; +pub const IN_CLASSC_NET: u32 = 4294967040; +pub const IN_CLASSC_NSHIFT: u32 = 8; +pub const IN_CLASSC_HOST: u32 = 255; +pub const IN_MULTICAST_NET: u32 = 3758096384; +pub const IN_CLASSE_NET: u32 = 4294967295; +pub const IN_CLASSE_NSHIFT: u32 = 0; +pub const IN_LOOPBACKNET: u32 = 127; +pub const INADDR_LOOPBACK: u32 = 2130706433; +pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; +pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; +pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; +pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; +pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; +pub const __BIG_ENDIAN: u32 = 4321; +pub const IPTOS_TOS_MASK: u32 = 30; +pub const IPTOS_LOWDELAY: u32 = 16; +pub const IPTOS_THROUGHPUT: u32 = 8; +pub const IPTOS_RELIABILITY: u32 = 4; +pub const IPTOS_MINCOST: u32 = 2; +pub const IPTOS_PREC_MASK: u32 = 224; +pub const IPTOS_PREC_NETCONTROL: u32 = 224; +pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; +pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; +pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; +pub const IPTOS_PREC_FLASH: u32 = 96; +pub const IPTOS_PREC_IMMEDIATE: u32 = 64; +pub const IPTOS_PREC_PRIORITY: u32 = 32; +pub const IPTOS_PREC_ROUTINE: u32 = 0; +pub const IPOPT_COPY: u32 = 128; +pub const IPOPT_CLASS_MASK: u32 = 96; +pub const IPOPT_NUMBER_MASK: u32 = 31; +pub const IPOPT_CONTROL: u32 = 0; +pub const IPOPT_RESERVED1: u32 = 32; +pub const IPOPT_MEASUREMENT: u32 = 64; +pub const IPOPT_RESERVED2: u32 = 96; +pub const IPOPT_END: u32 = 0; +pub const IPOPT_NOOP: u32 = 1; +pub const IPOPT_SEC: u32 = 130; +pub const IPOPT_LSRR: u32 = 131; +pub const IPOPT_TIMESTAMP: u32 = 68; +pub const IPOPT_CIPSO: u32 = 134; +pub const IPOPT_RR: u32 = 7; +pub const IPOPT_SID: u32 = 136; +pub const IPOPT_SSRR: u32 = 137; +pub const IPOPT_RA: u32 = 148; +pub const IPVERSION: u32 = 4; +pub const MAXTTL: u32 = 255; +pub const IPDEFTTL: u32 = 64; +pub const IPOPT_OPTVAL: u32 = 0; +pub const IPOPT_OLEN: u32 = 1; +pub const IPOPT_OFFSET: u32 = 2; +pub const IPOPT_MINOFF: u32 = 4; +pub const MAX_IPOPTLEN: u32 = 40; +pub const IPOPT_NOP: u32 = 1; +pub const IPOPT_EOL: u32 = 0; +pub const IPOPT_TS: u32 = 68; +pub const IPOPT_TS_TSONLY: u32 = 0; +pub const IPOPT_TS_TSANDADDR: u32 = 1; +pub const IPOPT_TS_PRESPEC: u32 = 3; +pub const IPV4_BEET_PHMAXLEN: u32 = 8; +pub const IPV6_FL_A_GET: u32 = 0; +pub const IPV6_FL_A_PUT: u32 = 1; +pub const IPV6_FL_A_RENEW: u32 = 2; +pub const IPV6_FL_F_CREATE: u32 = 1; +pub const IPV6_FL_F_EXCL: u32 = 2; +pub const IPV6_FL_F_REFLECT: u32 = 4; +pub const IPV6_FL_F_REMOTE: u32 = 8; +pub const IPV6_FL_S_NONE: u32 = 0; +pub const IPV6_FL_S_EXCL: u32 = 1; +pub const IPV6_FL_S_PROCESS: u32 = 2; +pub const IPV6_FL_S_USER: u32 = 3; +pub const IPV6_FL_S_ANY: u32 = 255; +pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; +pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; +pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; +pub const IPV6_PRIORITY_FILLER: u32 = 256; +pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; +pub const IPV6_PRIORITY_RESERVED1: u32 = 768; +pub const IPV6_PRIORITY_BULK: u32 = 1024; +pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; +pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; +pub const IPV6_PRIORITY_CONTROL: u32 = 1792; +pub const IPV6_PRIORITY_8: u32 = 2048; +pub const IPV6_PRIORITY_9: u32 = 2304; +pub const IPV6_PRIORITY_10: u32 = 2560; +pub const IPV6_PRIORITY_11: u32 = 2816; +pub const IPV6_PRIORITY_12: u32 = 3072; +pub const IPV6_PRIORITY_13: u32 = 3328; +pub const IPV6_PRIORITY_14: u32 = 3584; +pub const IPV6_PRIORITY_15: u32 = 3840; +pub const IPPROTO_HOPOPTS: u32 = 0; +pub const IPPROTO_ROUTING: u32 = 43; +pub const IPPROTO_FRAGMENT: u32 = 44; +pub const IPPROTO_ICMPV6: u32 = 58; +pub const IPPROTO_NONE: u32 = 59; +pub const IPPROTO_DSTOPTS: u32 = 60; +pub const IPPROTO_MH: u32 = 135; +pub const IPV6_TLV_PAD1: u32 = 0; +pub const IPV6_TLV_PADN: u32 = 1; +pub const IPV6_TLV_ROUTERALERT: u32 = 5; +pub const IPV6_TLV_CALIPSO: u32 = 7; +pub const IPV6_TLV_IOAM: u32 = 49; +pub const IPV6_TLV_JUMBO: u32 = 194; +pub const IPV6_TLV_HAO: u32 = 201; +pub const IPV6_ADDRFORM: u32 = 1; +pub const IPV6_2292PKTINFO: u32 = 2; +pub const IPV6_2292HOPOPTS: u32 = 3; +pub const IPV6_2292DSTOPTS: u32 = 4; +pub const IPV6_2292RTHDR: u32 = 5; +pub const IPV6_2292PKTOPTIONS: u32 = 6; +pub const IPV6_CHECKSUM: u32 = 7; +pub const IPV6_2292HOPLIMIT: u32 = 8; +pub const IPV6_NEXTHOP: u32 = 9; +pub const IPV6_AUTHHDR: u32 = 10; +pub const IPV6_FLOWINFO: u32 = 11; +pub const IPV6_UNICAST_HOPS: u32 = 16; +pub const IPV6_MULTICAST_IF: u32 = 17; +pub const IPV6_MULTICAST_HOPS: u32 = 18; +pub const IPV6_MULTICAST_LOOP: u32 = 19; +pub const IPV6_ADD_MEMBERSHIP: u32 = 20; +pub const IPV6_DROP_MEMBERSHIP: u32 = 21; +pub const IPV6_ROUTER_ALERT: u32 = 22; +pub const IPV6_MTU_DISCOVER: u32 = 23; +pub const IPV6_MTU: u32 = 24; +pub const IPV6_RECVERR: u32 = 25; +pub const IPV6_V6ONLY: u32 = 26; +pub const IPV6_JOIN_ANYCAST: u32 = 27; +pub const IPV6_LEAVE_ANYCAST: u32 = 28; +pub const IPV6_MULTICAST_ALL: u32 = 29; +pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; +pub const IPV6_RECVERR_RFC4884: u32 = 31; +pub const IPV6_PMTUDISC_DONT: u32 = 0; +pub const IPV6_PMTUDISC_WANT: u32 = 1; +pub const IPV6_PMTUDISC_DO: u32 = 2; +pub const IPV6_PMTUDISC_PROBE: u32 = 3; +pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; +pub const IPV6_PMTUDISC_OMIT: u32 = 5; +pub const IPV6_FLOWLABEL_MGR: u32 = 32; +pub const IPV6_FLOWINFO_SEND: u32 = 33; +pub const IPV6_IPSEC_POLICY: u32 = 34; +pub const IPV6_XFRM_POLICY: u32 = 35; +pub const IPV6_HDRINCL: u32 = 36; +pub const IPV6_RECVPKTINFO: u32 = 49; +pub const IPV6_PKTINFO: u32 = 50; +pub const IPV6_RECVHOPLIMIT: u32 = 51; +pub const IPV6_HOPLIMIT: u32 = 52; +pub const IPV6_RECVHOPOPTS: u32 = 53; +pub const IPV6_HOPOPTS: u32 = 54; +pub const IPV6_RTHDRDSTOPTS: u32 = 55; +pub const IPV6_RECVRTHDR: u32 = 56; +pub const IPV6_RTHDR: u32 = 57; +pub const IPV6_RECVDSTOPTS: u32 = 58; +pub const IPV6_DSTOPTS: u32 = 59; +pub const IPV6_RECVPATHMTU: u32 = 60; +pub const IPV6_PATHMTU: u32 = 61; +pub const IPV6_DONTFRAG: u32 = 62; +pub const IPV6_RECVTCLASS: u32 = 66; +pub const IPV6_TCLASS: u32 = 67; +pub const IPV6_AUTOFLOWLABEL: u32 = 70; +pub const IPV6_ADDR_PREFERENCES: u32 = 72; +pub const IPV6_PREFER_SRC_TMP: u32 = 1; +pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; +pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; +pub const IPV6_PREFER_SRC_COA: u32 = 4; +pub const IPV6_PREFER_SRC_HOME: u32 = 1024; +pub const IPV6_PREFER_SRC_CGA: u32 = 8; +pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; +pub const IPV6_MINHOPCOUNT: u32 = 73; +pub const IPV6_ORIGDSTADDR: u32 = 74; +pub const IPV6_RECVORIGDSTADDR: u32 = 74; +pub const IPV6_TRANSPARENT: u32 = 75; +pub const IPV6_UNICAST_IF: u32 = 76; +pub const IPV6_RECVFRAGSIZE: u32 = 77; +pub const IPV6_FREEBIND: u32 = 78; +pub const IPV6_MIN_MTU: u32 = 1280; +pub const IPV6_SRCRT_STRICT: u32 = 1; +pub const IPV6_SRCRT_TYPE_0: u32 = 0; +pub const IPV6_SRCRT_TYPE_2: u32 = 2; +pub const IPV6_SRCRT_TYPE_3: u32 = 3; +pub const IPV6_SRCRT_TYPE_4: u32 = 4; +pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; +pub const SO_RCVLOWAT: u32 = 16; +pub const SO_SNDLOWAT: u32 = 17; +pub const SO_RCVTIMEO_OLD: u32 = 18; +pub const SO_SNDTIMEO_OLD: u32 = 19; +pub const SO_PASSCRED: u32 = 20; +pub const SO_PEERCRED: u32 = 21; +pub const SIOCGSTAMP_OLD: u32 = 35078; +pub const SIOCGSTAMPNS_OLD: u32 = 35079; +pub const SOL_SOCKET: u32 = 1; +pub const SO_DEBUG: u32 = 1; +pub const SO_REUSEADDR: u32 = 2; +pub const SO_TYPE: u32 = 3; +pub const SO_ERROR: u32 = 4; +pub const SO_DONTROUTE: u32 = 5; +pub const SO_BROADCAST: u32 = 6; +pub const SO_SNDBUF: u32 = 7; +pub const SO_RCVBUF: u32 = 8; +pub const SO_SNDBUFFORCE: u32 = 32; +pub const SO_RCVBUFFORCE: u32 = 33; +pub const SO_KEEPALIVE: u32 = 9; +pub const SO_OOBINLINE: u32 = 10; +pub const SO_NO_CHECK: u32 = 11; +pub const SO_PRIORITY: u32 = 12; +pub const SO_LINGER: u32 = 13; +pub const SO_BSDCOMPAT: u32 = 14; +pub const SO_REUSEPORT: u32 = 15; +pub const SO_SECURITY_AUTHENTICATION: u32 = 22; +pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; +pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; +pub const SO_BINDTODEVICE: u32 = 25; +pub const SO_ATTACH_FILTER: u32 = 26; +pub const SO_DETACH_FILTER: u32 = 27; +pub const SO_GET_FILTER: u32 = 26; +pub const SO_PEERNAME: u32 = 28; +pub const SO_ACCEPTCONN: u32 = 30; +pub const SO_PEERSEC: u32 = 31; +pub const SO_PASSSEC: u32 = 34; +pub const SO_MARK: u32 = 36; +pub const SO_PROTOCOL: u32 = 38; +pub const SO_DOMAIN: u32 = 39; +pub const SO_RXQ_OVFL: u32 = 40; +pub const SO_WIFI_STATUS: u32 = 41; +pub const SCM_WIFI_STATUS: u32 = 41; +pub const SO_PEEK_OFF: u32 = 42; +pub const SO_NOFCS: u32 = 43; +pub const SO_LOCK_FILTER: u32 = 44; +pub const SO_SELECT_ERR_QUEUE: u32 = 45; +pub const SO_BUSY_POLL: u32 = 46; +pub const SO_MAX_PACING_RATE: u32 = 47; +pub const SO_BPF_EXTENSIONS: u32 = 48; +pub const SO_INCOMING_CPU: u32 = 49; +pub const SO_ATTACH_BPF: u32 = 50; +pub const SO_DETACH_BPF: u32 = 27; +pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; +pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; +pub const SO_CNX_ADVICE: u32 = 53; +pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; +pub const SO_MEMINFO: u32 = 55; +pub const SO_INCOMING_NAPI_ID: u32 = 56; +pub const SO_COOKIE: u32 = 57; +pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; +pub const SO_PEERGROUPS: u32 = 59; +pub const SO_ZEROCOPY: u32 = 60; +pub const SO_TXTIME: u32 = 61; +pub const SCM_TXTIME: u32 = 61; +pub const SO_BINDTOIFINDEX: u32 = 62; +pub const SO_TIMESTAMP_OLD: u32 = 29; +pub const SO_TIMESTAMPNS_OLD: u32 = 35; +pub const SO_TIMESTAMPING_OLD: u32 = 37; +pub const SO_TIMESTAMP_NEW: u32 = 63; +pub const SO_TIMESTAMPNS_NEW: u32 = 64; +pub const SO_TIMESTAMPING_NEW: u32 = 65; +pub const SO_RCVTIMEO_NEW: u32 = 66; +pub const SO_SNDTIMEO_NEW: u32 = 67; +pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; +pub const SO_PREFER_BUSY_POLL: u32 = 69; +pub const SO_BUSY_POLL_BUDGET: u32 = 70; +pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; +pub const SO_TXREHASH: u32 = 74; +pub const SO_RCVMARK: u32 = 75; +pub const SO_TIMESTAMP: u32 = 29; +pub const SO_TIMESTAMPNS: u32 = 35; +pub const SO_TIMESTAMPING: u32 = 37; +pub const SO_RCVTIMEO: u32 = 18; +pub const SO_SNDTIMEO: u32 = 19; +pub const SCM_TIMESTAMP: u32 = 29; +pub const SCM_TIMESTAMPNS: u32 = 35; +pub const SCM_TIMESTAMPING: u32 = 37; +pub const SYS_SOCKET: u32 = 1; +pub const SYS_BIND: u32 = 2; +pub const SYS_CONNECT: u32 = 3; +pub const SYS_LISTEN: u32 = 4; +pub const SYS_ACCEPT: u32 = 5; +pub const SYS_GETSOCKNAME: u32 = 6; +pub const SYS_GETPEERNAME: u32 = 7; +pub const SYS_SOCKETPAIR: u32 = 8; +pub const SYS_SEND: u32 = 9; +pub const SYS_RECV: u32 = 10; +pub const SYS_SENDTO: u32 = 11; +pub const SYS_RECVFROM: u32 = 12; +pub const SYS_SHUTDOWN: u32 = 13; +pub const SYS_SETSOCKOPT: u32 = 14; +pub const SYS_GETSOCKOPT: u32 = 15; +pub const SYS_SENDMSG: u32 = 16; +pub const SYS_RECVMSG: u32 = 17; +pub const SYS_ACCEPT4: u32 = 18; +pub const SYS_RECVMMSG: u32 = 19; +pub const SYS_SENDMMSG: u32 = 20; +pub const __SO_ACCEPTCON: u32 = 65536; +pub const TCP_MSS_DEFAULT: u32 = 536; +pub const TCP_MSS_DESIRED: u32 = 1220; +pub const TCP_NODELAY: u32 = 1; +pub const TCP_MAXSEG: u32 = 2; +pub const TCP_CORK: u32 = 3; +pub const TCP_KEEPIDLE: u32 = 4; +pub const TCP_KEEPINTVL: u32 = 5; +pub const TCP_KEEPCNT: u32 = 6; +pub const TCP_SYNCNT: u32 = 7; +pub const TCP_LINGER2: u32 = 8; +pub const TCP_DEFER_ACCEPT: u32 = 9; +pub const TCP_WINDOW_CLAMP: u32 = 10; +pub const TCP_INFO: u32 = 11; +pub const TCP_QUICKACK: u32 = 12; +pub const TCP_CONGESTION: u32 = 13; +pub const TCP_MD5SIG: u32 = 14; +pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; +pub const TCP_THIN_DUPACK: u32 = 17; +pub const TCP_USER_TIMEOUT: u32 = 18; +pub const TCP_REPAIR: u32 = 19; +pub const TCP_REPAIR_QUEUE: u32 = 20; +pub const TCP_QUEUE_SEQ: u32 = 21; +pub const TCP_REPAIR_OPTIONS: u32 = 22; +pub const TCP_FASTOPEN: u32 = 23; +pub const TCP_TIMESTAMP: u32 = 24; +pub const TCP_NOTSENT_LOWAT: u32 = 25; +pub const TCP_CC_INFO: u32 = 26; +pub const TCP_SAVE_SYN: u32 = 27; +pub const TCP_SAVED_SYN: u32 = 28; +pub const TCP_REPAIR_WINDOW: u32 = 29; +pub const TCP_FASTOPEN_CONNECT: u32 = 30; +pub const TCP_ULP: u32 = 31; +pub const TCP_MD5SIG_EXT: u32 = 32; +pub const TCP_FASTOPEN_KEY: u32 = 33; +pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; +pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; +pub const TCP_INQ: u32 = 36; +pub const TCP_CM_INQ: u32 = 36; +pub const TCP_TX_DELAY: u32 = 37; +pub const TCP_REPAIR_ON: u32 = 1; +pub const TCP_REPAIR_OFF: u32 = 0; +pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; +pub const TCPI_OPT_TIMESTAMPS: u32 = 1; +pub const TCPI_OPT_SACK: u32 = 2; +pub const TCPI_OPT_WSCALE: u32 = 4; +pub const TCPI_OPT_ECN: u32 = 8; +pub const TCPI_OPT_ECN_SEEN: u32 = 16; +pub const TCPI_OPT_SYN_DATA: u32 = 32; +pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; +pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; +pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; +pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; +pub const UNIX_PATH_MAX: u32 = 108; +pub const SHUT_RD: u32 = 0; +pub const SHUT_WR: u32 = 1; +pub const SHUT_RDWR: u32 = 2; +pub const SOCK_STREAM: u32 = 1; +pub const SOCK_DGRAM: u32 = 2; +pub const SOCK_RAW: u32 = 3; +pub const SOCK_RDM: u32 = 4; +pub const SOCK_SEQPACKET: u32 = 5; +pub const MSG_DONTWAIT: u32 = 64; +pub const AF_UNSPEC: u32 = 0; +pub const AF_UNIX: u32 = 1; +pub const AF_INET: u32 = 2; +pub const AF_AX25: u32 = 3; +pub const AF_IPX: u32 = 4; +pub const AF_APPLETALK: u32 = 5; +pub const AF_NETROM: u32 = 6; +pub const AF_BRIDGE: u32 = 7; +pub const AF_ATMPVC: u32 = 8; +pub const AF_X25: u32 = 9; +pub const AF_INET6: u32 = 10; +pub const AF_ROSE: u32 = 11; +pub const AF_DECnet: u32 = 12; +pub const AF_NETBEUI: u32 = 13; +pub const AF_SECURITY: u32 = 14; +pub const AF_KEY: u32 = 15; +pub const AF_NETLINK: u32 = 16; +pub const AF_PACKET: u32 = 17; +pub const AF_ASH: u32 = 18; +pub const AF_ECONET: u32 = 19; +pub const AF_ATMSVC: u32 = 20; +pub const AF_RDS: u32 = 21; +pub const AF_SNA: u32 = 22; +pub const AF_IRDA: u32 = 23; +pub const AF_PPPOX: u32 = 24; +pub const AF_WANPIPE: u32 = 25; +pub const AF_LLC: u32 = 26; +pub const AF_CAN: u32 = 29; +pub const AF_TIPC: u32 = 30; +pub const AF_BLUETOOTH: u32 = 31; +pub const AF_IUCV: u32 = 32; +pub const AF_RXRPC: u32 = 33; +pub const AF_ISDN: u32 = 34; +pub const AF_PHONET: u32 = 35; +pub const AF_IEEE802154: u32 = 36; +pub const AF_MAX: u32 = 37; +pub const MSG_OOB: u32 = 1; +pub const MSG_PEEK: u32 = 2; +pub const MSG_DONTROUTE: u32 = 4; +pub const MSG_CTRUNC: u32 = 8; +pub const MSG_PROBE: u32 = 16; +pub const MSG_TRUNC: u32 = 32; +pub const MSG_EOR: u32 = 128; +pub const MSG_WAITALL: u32 = 256; +pub const MSG_FIN: u32 = 512; +pub const MSG_SYN: u32 = 1024; +pub const MSG_CONFIRM: u32 = 2048; +pub const MSG_RST: u32 = 4096; +pub const MSG_ERRQUEUE: u32 = 8192; +pub const MSG_NOSIGNAL: u32 = 16384; +pub const MSG_MORE: u32 = 32768; +pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; +pub const SCM_RIGHTS: u32 = 1; +pub const SCM_CREDENTIALS: u32 = 2; +pub const SCM_SECURITY: u32 = 3; +pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; +pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; +pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; +pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; +pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; +pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; +pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; +pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; +pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; +pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; +pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; +pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; +pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; +pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; +pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; +pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; +pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; +pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; +pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; +pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; +pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; +pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; +pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; +pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; +pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; +pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; +pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; +pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; +pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; +pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; +pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; +pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; +pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; +pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; +pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; +pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; +pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; +pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; +pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; +pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; +pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; +pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; +pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; +pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; +pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; +pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; +pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; +pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; +pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; +pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; +pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; +pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; +pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; +pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; +pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; +pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; +pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; +pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; +pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; +pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; +pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; +pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; +pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; +pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; +pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; +pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; +pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; +pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; +pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; +pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; +pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; +pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; +pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; +pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; +pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; +pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; +pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; +pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; +pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; +pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; +pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; +pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; +pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; +pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; +pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; +pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; +pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; +pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; +pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; +pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; +pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; +pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; +pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; +pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; +pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; +pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; +pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; +pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; +pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; +pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; +pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; +pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; +pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; +pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; +pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; +pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; +pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; +pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; +pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; +pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; +pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; +pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; +pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; +pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; +pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; +pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; +pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; +pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; +pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; +pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; +pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; +pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; +pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; +pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; +pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; +pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; +pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; +pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; +pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; +pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; +pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; +pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; +pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; +pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; +pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; +pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; +pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; +pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; +pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; +pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; +pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; +pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; +pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; +pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; +pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; +pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; +pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; +pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; +pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; +pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; +pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; +pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IPPROTO_IP = 0, +IPPROTO_ICMP = 1, +IPPROTO_IGMP = 2, +IPPROTO_IPIP = 4, +IPPROTO_TCP = 6, +IPPROTO_EGP = 8, +IPPROTO_PUP = 12, +IPPROTO_UDP = 17, +IPPROTO_IDP = 22, +IPPROTO_TP = 29, +IPPROTO_DCCP = 33, +IPPROTO_IPV6 = 41, +IPPROTO_RSVP = 46, +IPPROTO_GRE = 47, +IPPROTO_ESP = 50, +IPPROTO_AH = 51, +IPPROTO_MTP = 92, +IPPROTO_BEETPH = 94, +IPPROTO_ENCAP = 98, +IPPROTO_PIM = 103, +IPPROTO_COMP = 108, +IPPROTO_L2TP = 115, +IPPROTO_SCTP = 132, +IPPROTO_UDPLITE = 136, +IPPROTO_MPLS = 137, +IPPROTO_ETHERNET = 143, +IPPROTO_RAW = 255, +IPPROTO_MPTCP = 262, +IPPROTO_MAX = 263, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IPV4_DEVCONF_FORWARDING = 1, +IPV4_DEVCONF_MC_FORWARDING = 2, +IPV4_DEVCONF_PROXY_ARP = 3, +IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, +IPV4_DEVCONF_SECURE_REDIRECTS = 5, +IPV4_DEVCONF_SEND_REDIRECTS = 6, +IPV4_DEVCONF_SHARED_MEDIA = 7, +IPV4_DEVCONF_RP_FILTER = 8, +IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, +IPV4_DEVCONF_BOOTP_RELAY = 10, +IPV4_DEVCONF_LOG_MARTIANS = 11, +IPV4_DEVCONF_TAG = 12, +IPV4_DEVCONF_ARPFILTER = 13, +IPV4_DEVCONF_MEDIUM_ID = 14, +IPV4_DEVCONF_NOXFRM = 15, +IPV4_DEVCONF_NOPOLICY = 16, +IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, +IPV4_DEVCONF_ARP_ANNOUNCE = 18, +IPV4_DEVCONF_ARP_IGNORE = 19, +IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, +IPV4_DEVCONF_ARP_ACCEPT = 21, +IPV4_DEVCONF_ARP_NOTIFY = 22, +IPV4_DEVCONF_ACCEPT_LOCAL = 23, +IPV4_DEVCONF_SRC_VMARK = 24, +IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, +IPV4_DEVCONF_ROUTE_LOCALNET = 26, +IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, +IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, +IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, +IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, +IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, +IPV4_DEVCONF_BC_FORWARDING = 32, +IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, +__IPV4_DEVCONF_MAX = 34, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +DEVCONF_FORWARDING = 0, +DEVCONF_HOPLIMIT = 1, +DEVCONF_MTU6 = 2, +DEVCONF_ACCEPT_RA = 3, +DEVCONF_ACCEPT_REDIRECTS = 4, +DEVCONF_AUTOCONF = 5, +DEVCONF_DAD_TRANSMITS = 6, +DEVCONF_RTR_SOLICITS = 7, +DEVCONF_RTR_SOLICIT_INTERVAL = 8, +DEVCONF_RTR_SOLICIT_DELAY = 9, +DEVCONF_USE_TEMPADDR = 10, +DEVCONF_TEMP_VALID_LFT = 11, +DEVCONF_TEMP_PREFERED_LFT = 12, +DEVCONF_REGEN_MAX_RETRY = 13, +DEVCONF_MAX_DESYNC_FACTOR = 14, +DEVCONF_MAX_ADDRESSES = 15, +DEVCONF_FORCE_MLD_VERSION = 16, +DEVCONF_ACCEPT_RA_DEFRTR = 17, +DEVCONF_ACCEPT_RA_PINFO = 18, +DEVCONF_ACCEPT_RA_RTR_PREF = 19, +DEVCONF_RTR_PROBE_INTERVAL = 20, +DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, +DEVCONF_PROXY_NDP = 22, +DEVCONF_OPTIMISTIC_DAD = 23, +DEVCONF_ACCEPT_SOURCE_ROUTE = 24, +DEVCONF_MC_FORWARDING = 25, +DEVCONF_DISABLE_IPV6 = 26, +DEVCONF_ACCEPT_DAD = 27, +DEVCONF_FORCE_TLLAO = 28, +DEVCONF_NDISC_NOTIFY = 29, +DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, +DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, +DEVCONF_SUPPRESS_FRAG_NDISC = 32, +DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, +DEVCONF_USE_OPTIMISTIC = 34, +DEVCONF_ACCEPT_RA_MTU = 35, +DEVCONF_STABLE_SECRET = 36, +DEVCONF_USE_OIF_ADDRS_ONLY = 37, +DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, +DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, +DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, +DEVCONF_DROP_UNSOLICITED_NA = 41, +DEVCONF_KEEP_ADDR_ON_DOWN = 42, +DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, +DEVCONF_SEG6_ENABLED = 44, +DEVCONF_SEG6_REQUIRE_HMAC = 45, +DEVCONF_ENHANCED_DAD = 46, +DEVCONF_ADDR_GEN_MODE = 47, +DEVCONF_DISABLE_POLICY = 48, +DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, +DEVCONF_NDISC_TCLASS = 50, +DEVCONF_RPL_SEG_ENABLED = 51, +DEVCONF_RA_DEFRTR_METRIC = 52, +DEVCONF_IOAM6_ENABLED = 53, +DEVCONF_IOAM6_ID = 54, +DEVCONF_IOAM6_ID_WIDE = 55, +DEVCONF_NDISC_EVICT_NOCARRIER = 56, +DEVCONF_ACCEPT_UNTRACKED_NA = 57, +DEVCONF_MAX = 58, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum socket_state { +SS_FREE = 0, +SS_UNCONNECTED = 1, +SS_CONNECTING = 2, +SS_CONNECTED = 3, +SS_DISCONNECTING = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +TCP_FLAG_CWR = 8388608, +TCP_FLAG_ECE = 4194304, +TCP_FLAG_URG = 2097152, +TCP_FLAG_ACK = 1048576, +TCP_FLAG_PSH = 524288, +TCP_FLAG_RST = 262144, +TCP_FLAG_SYN = 131072, +TCP_FLAG_FIN = 65536, +TCP_RESERVED_BITS = 251658240, +TCP_DATA_OFFSET = 4026531840, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +TCP_NO_QUEUE = 0, +TCP_RECV_QUEUE = 1, +TCP_SEND_QUEUE = 2, +TCP_QUEUES_NR = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_fastopen_client_fail { +TFO_STATUS_UNSPEC = 0, +TFO_COOKIE_UNAVAILABLE = 1, +TFO_DATA_NOT_ACKED = 2, +TFO_SYN_RETRANSMITTED = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_ca_state { +TCP_CA_Open = 0, +TCP_CA_Disorder = 1, +TCP_CA_CWR = 2, +TCP_CA_Recovery = 3, +TCP_CA_Loss = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +TCP_NLA_PAD = 0, +TCP_NLA_BUSY = 1, +TCP_NLA_RWND_LIMITED = 2, +TCP_NLA_SNDBUF_LIMITED = 3, +TCP_NLA_DATA_SEGS_OUT = 4, +TCP_NLA_TOTAL_RETRANS = 5, +TCP_NLA_PACING_RATE = 6, +TCP_NLA_DELIVERY_RATE = 7, +TCP_NLA_SND_CWND = 8, +TCP_NLA_REORDERING = 9, +TCP_NLA_MIN_RTT = 10, +TCP_NLA_RECUR_RETRANS = 11, +TCP_NLA_DELIVERY_RATE_APP_LMT = 12, +TCP_NLA_SNDQ_SIZE = 13, +TCP_NLA_CA_STATE = 14, +TCP_NLA_SND_SSTHRESH = 15, +TCP_NLA_DELIVERED = 16, +TCP_NLA_DELIVERED_CE = 17, +TCP_NLA_BYTES_SENT = 18, +TCP_NLA_BYTES_RETRANS = 19, +TCP_NLA_DSACK_DUPS = 20, +TCP_NLA_REORD_SEEN = 21, +TCP_NLA_SRTT = 22, +TCP_NLA_TIMEOUT_REHASH = 23, +TCP_NLA_BYTES_NOTSENT = 24, +TCP_NLA_EDT = 25, +TCP_NLA_TTL = 26, +TCP_NLA_REHASH = 27, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union iphdr__bindgen_ty_1 { +pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union in6_addr__bindgen_ty_1 { +pub u6_addr8: [__u8; 16usize], +pub u6_addr16: [__be16; 8usize], +pub u6_addr32: [__be32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ipv6hdr__bindgen_ty_1 { +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union tcp_word_hdr { +pub hdr: tcphdr, +pub words: [__be32; 5usize], +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} +impl iphdr { +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn ihl(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_ihl(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; +ihl as u64 +}); +__bindgen_bitfield_unit +} +} +impl ipv6hdr { +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn priority(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_priority(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let priority: u8 = unsafe { ::core::mem::transmute(priority) }; +priority as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcphdr { +#[inline] +pub fn doff(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } +} +#[inline] +pub fn set_doff(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn res1(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } +} +#[inline] +pub fn set_res1(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn cwr(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } +} +#[inline] +pub fn set_cwr(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn ece(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } +} +#[inline] +pub fn set_ece(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 1u8, val as u64) +} +} +#[inline] +pub fn urg(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } +} +#[inline] +pub fn set_urg(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(10usize, 1u8, val as u64) +} +} +#[inline] +pub fn ack(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } +} +#[inline] +pub fn set_ack(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(11usize, 1u8, val as u64) +} +} +#[inline] +pub fn psh(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } +} +#[inline] +pub fn set_psh(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(12usize, 1u8, val as u64) +} +} +#[inline] +pub fn rst(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } +} +#[inline] +pub fn set_rst(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(13usize, 1u8, val as u64) +} +} +#[inline] +pub fn syn(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } +} +#[inline] +pub fn set_syn(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(14usize, 1u8, val as u64) +} +} +#[inline] +pub fn fin(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +} +#[inline] +pub fn set_fin(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(15usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let doff: u16 = unsafe { ::core::mem::transmute(doff) }; +doff as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let res1: u16 = unsafe { ::core::mem::transmute(res1) }; +res1 as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; +cwr as u64 +}); +__bindgen_bitfield_unit.set(9usize, 1u8, { +let ece: u16 = unsafe { ::core::mem::transmute(ece) }; +ece as u64 +}); +__bindgen_bitfield_unit.set(10usize, 1u8, { +let urg: u16 = unsafe { ::core::mem::transmute(urg) }; +urg as u64 +}); +__bindgen_bitfield_unit.set(11usize, 1u8, { +let ack: u16 = unsafe { ::core::mem::transmute(ack) }; +ack as u64 +}); +__bindgen_bitfield_unit.set(12usize, 1u8, { +let psh: u16 = unsafe { ::core::mem::transmute(psh) }; +psh as u64 +}); +__bindgen_bitfield_unit.set(13usize, 1u8, { +let rst: u16 = unsafe { ::core::mem::transmute(rst) }; +rst as u64 +}); +__bindgen_bitfield_unit.set(14usize, 1u8, { +let syn: u16 = unsafe { ::core::mem::transmute(syn) }; +syn as u64 +}); +__bindgen_bitfield_unit.set(15usize, 1u8, { +let fin: u16 = unsafe { ::core::mem::transmute(fin) }; +fin as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcp_info { +#[inline] +pub fn tcpi_snd_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_rcv_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +} +#[inline] +pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn tcpi_fastopen_client_fail(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +} +#[inline] +pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 2u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; +tcpi_snd_wscale as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; +tcpi_rcv_wscale as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; +tcpi_delivery_rate_app_limited as u64 +}); +__bindgen_bitfield_unit.set(9usize, 2u8, { +let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; +tcpi_fastopen_client_fail as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/prctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/prctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/prctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,227 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct __vector128 { +pub u: [__u32; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prctl_mm_map { +pub start_code: __u64, +pub end_code: __u64, +pub start_data: __u64, +pub end_data: __u64, +pub start_brk: __u64, +pub brk: __u64, +pub start_stack: __u64, +pub arg_start: __u64, +pub arg_end: __u64, +pub env_start: __u64, +pub env_end: __u64, +pub auxv: *mut __u64, +pub auxv_size: __u32, +pub exe_fd: __u32, +} +pub const PR_SET_PDEATHSIG: u32 = 1; +pub const PR_GET_PDEATHSIG: u32 = 2; +pub const PR_GET_DUMPABLE: u32 = 3; +pub const PR_SET_DUMPABLE: u32 = 4; +pub const PR_GET_UNALIGN: u32 = 5; +pub const PR_SET_UNALIGN: u32 = 6; +pub const PR_UNALIGN_NOPRINT: u32 = 1; +pub const PR_UNALIGN_SIGBUS: u32 = 2; +pub const PR_GET_KEEPCAPS: u32 = 7; +pub const PR_SET_KEEPCAPS: u32 = 8; +pub const PR_GET_FPEMU: u32 = 9; +pub const PR_SET_FPEMU: u32 = 10; +pub const PR_FPEMU_NOPRINT: u32 = 1; +pub const PR_FPEMU_SIGFPE: u32 = 2; +pub const PR_GET_FPEXC: u32 = 11; +pub const PR_SET_FPEXC: u32 = 12; +pub const PR_FP_EXC_SW_ENABLE: u32 = 128; +pub const PR_FP_EXC_DIV: u32 = 65536; +pub const PR_FP_EXC_OVF: u32 = 131072; +pub const PR_FP_EXC_UND: u32 = 262144; +pub const PR_FP_EXC_RES: u32 = 524288; +pub const PR_FP_EXC_INV: u32 = 1048576; +pub const PR_FP_EXC_DISABLED: u32 = 0; +pub const PR_FP_EXC_NONRECOV: u32 = 1; +pub const PR_FP_EXC_ASYNC: u32 = 2; +pub const PR_FP_EXC_PRECISE: u32 = 3; +pub const PR_GET_TIMING: u32 = 13; +pub const PR_SET_TIMING: u32 = 14; +pub const PR_TIMING_STATISTICAL: u32 = 0; +pub const PR_TIMING_TIMESTAMP: u32 = 1; +pub const PR_SET_NAME: u32 = 15; +pub const PR_GET_NAME: u32 = 16; +pub const PR_GET_ENDIAN: u32 = 19; +pub const PR_SET_ENDIAN: u32 = 20; +pub const PR_ENDIAN_BIG: u32 = 0; +pub const PR_ENDIAN_LITTLE: u32 = 1; +pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; +pub const PR_GET_SECCOMP: u32 = 21; +pub const PR_SET_SECCOMP: u32 = 22; +pub const PR_CAPBSET_READ: u32 = 23; +pub const PR_CAPBSET_DROP: u32 = 24; +pub const PR_GET_TSC: u32 = 25; +pub const PR_SET_TSC: u32 = 26; +pub const PR_TSC_ENABLE: u32 = 1; +pub const PR_TSC_SIGSEGV: u32 = 2; +pub const PR_GET_SECUREBITS: u32 = 27; +pub const PR_SET_SECUREBITS: u32 = 28; +pub const PR_SET_TIMERSLACK: u32 = 29; +pub const PR_GET_TIMERSLACK: u32 = 30; +pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; +pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; +pub const PR_MCE_KILL: u32 = 33; +pub const PR_MCE_KILL_CLEAR: u32 = 0; +pub const PR_MCE_KILL_SET: u32 = 1; +pub const PR_MCE_KILL_LATE: u32 = 0; +pub const PR_MCE_KILL_EARLY: u32 = 1; +pub const PR_MCE_KILL_DEFAULT: u32 = 2; +pub const PR_MCE_KILL_GET: u32 = 34; +pub const PR_SET_MM: u32 = 35; +pub const PR_SET_MM_START_CODE: u32 = 1; +pub const PR_SET_MM_END_CODE: u32 = 2; +pub const PR_SET_MM_START_DATA: u32 = 3; +pub const PR_SET_MM_END_DATA: u32 = 4; +pub const PR_SET_MM_START_STACK: u32 = 5; +pub const PR_SET_MM_START_BRK: u32 = 6; +pub const PR_SET_MM_BRK: u32 = 7; +pub const PR_SET_MM_ARG_START: u32 = 8; +pub const PR_SET_MM_ARG_END: u32 = 9; +pub const PR_SET_MM_ENV_START: u32 = 10; +pub const PR_SET_MM_ENV_END: u32 = 11; +pub const PR_SET_MM_AUXV: u32 = 12; +pub const PR_SET_MM_EXE_FILE: u32 = 13; +pub const PR_SET_MM_MAP: u32 = 14; +pub const PR_SET_MM_MAP_SIZE: u32 = 15; +pub const PR_SET_PTRACER: u32 = 1499557217; +pub const PR_SET_CHILD_SUBREAPER: u32 = 36; +pub const PR_GET_CHILD_SUBREAPER: u32 = 37; +pub const PR_SET_NO_NEW_PRIVS: u32 = 38; +pub const PR_GET_NO_NEW_PRIVS: u32 = 39; +pub const PR_GET_TID_ADDRESS: u32 = 40; +pub const PR_SET_THP_DISABLE: u32 = 41; +pub const PR_GET_THP_DISABLE: u32 = 42; +pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; +pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; +pub const PR_SET_FP_MODE: u32 = 45; +pub const PR_GET_FP_MODE: u32 = 46; +pub const PR_FP_MODE_FR: u32 = 1; +pub const PR_FP_MODE_FRE: u32 = 2; +pub const PR_CAP_AMBIENT: u32 = 47; +pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; +pub const PR_CAP_AMBIENT_RAISE: u32 = 2; +pub const PR_CAP_AMBIENT_LOWER: u32 = 3; +pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; +pub const PR_SVE_SET_VL: u32 = 50; +pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SVE_GET_VL: u32 = 51; +pub const PR_SVE_VL_LEN_MASK: u32 = 65535; +pub const PR_SVE_VL_INHERIT: u32 = 131072; +pub const PR_GET_SPECULATION_CTRL: u32 = 52; +pub const PR_SET_SPECULATION_CTRL: u32 = 53; +pub const PR_SPEC_STORE_BYPASS: u32 = 0; +pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; +pub const PR_SPEC_L1D_FLUSH: u32 = 2; +pub const PR_SPEC_NOT_AFFECTED: u32 = 0; +pub const PR_SPEC_PRCTL: u32 = 1; +pub const PR_SPEC_ENABLE: u32 = 2; +pub const PR_SPEC_DISABLE: u32 = 4; +pub const PR_SPEC_FORCE_DISABLE: u32 = 8; +pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; +pub const PR_PAC_RESET_KEYS: u32 = 54; +pub const PR_PAC_APIAKEY: u32 = 1; +pub const PR_PAC_APIBKEY: u32 = 2; +pub const PR_PAC_APDAKEY: u32 = 4; +pub const PR_PAC_APDBKEY: u32 = 8; +pub const PR_PAC_APGAKEY: u32 = 16; +pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; +pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; +pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; +pub const PR_MTE_TCF_NONE: u32 = 0; +pub const PR_MTE_TCF_SYNC: u32 = 2; +pub const PR_MTE_TCF_ASYNC: u32 = 4; +pub const PR_MTE_TCF_MASK: u32 = 6; +pub const PR_MTE_TAG_SHIFT: u32 = 3; +pub const PR_MTE_TAG_MASK: u32 = 524280; +pub const PR_MTE_TCF_SHIFT: u32 = 1; +pub const PR_SET_IO_FLUSHER: u32 = 57; +pub const PR_GET_IO_FLUSHER: u32 = 58; +pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; +pub const PR_SYS_DISPATCH_OFF: u32 = 0; +pub const PR_SYS_DISPATCH_ON: u32 = 1; +pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; +pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; +pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; +pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; +pub const PR_SCHED_CORE: u32 = 62; +pub const PR_SCHED_CORE_GET: u32 = 0; +pub const PR_SCHED_CORE_CREATE: u32 = 1; +pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; +pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; +pub const PR_SCHED_CORE_MAX: u32 = 4; +pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; +pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; +pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; +pub const PR_SME_SET_VL: u32 = 63; +pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SME_GET_VL: u32 = 64; +pub const PR_SME_VL_LEN_MASK: u32 = 65535; +pub const PR_SME_VL_INHERIT: u32 = 131072; +pub const PR_SET_MDWE: u32 = 65; +pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; +pub const PR_GET_MDWE: u32 = 66; +pub const PR_SET_VMA: u32 = 1398164801; +pub const PR_SET_VMA_ANON_NAME: u32 = 0; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/system.rs temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/system.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/powerpc64/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,135 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_long; +pub type __u64 = crate::ctypes::c_ulong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct __vector128 { +pub u: [__u32; 4usize], +} +#[repr(C)] +#[derive(Debug)] +pub struct sysinfo { +pub uptime: __kernel_long_t, +pub loads: [__kernel_ulong_t; 3usize], +pub totalram: __kernel_ulong_t, +pub freeram: __kernel_ulong_t, +pub sharedram: __kernel_ulong_t, +pub bufferram: __kernel_ulong_t, +pub totalswap: __kernel_ulong_t, +pub freeswap: __kernel_ulong_t, +pub procs: __u16, +pub pad: __u16, +pub totalhigh: __kernel_ulong_t, +pub freehigh: __kernel_ulong_t, +pub mem_unit: __u32, +pub _f: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct oldold_utsname { +pub sysname: [crate::ctypes::c_char; 9usize], +pub nodename: [crate::ctypes::c_char; 9usize], +pub release: [crate::ctypes::c_char; 9usize], +pub version: [crate::ctypes::c_char; 9usize], +pub machine: [crate::ctypes::c_char; 9usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct old_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct new_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +pub domainname: [crate::ctypes::c_char; 65usize], +} +pub const SI_LOAD_SHIFT: u32 = 16; +pub const __OLD_UTS_LEN: u32 = 8; +pub const __NEW_UTS_LEN: u32 = 64; +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/errno.rs temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/errno.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/errno.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const EPERM: u32 = 1; pub const ENOENT: u32 = 2; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/general.rs temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/general.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/general.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/general.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,2734 +1,216 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_sighandler_t = ::core::option::Option; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type cap_user_header_t = *mut __user_cap_header_struct; +pub type cap_user_data_t = *mut __user_cap_data_struct; +pub type __kernel_rwf_t = crate::ctypes::c_int; +pub type old_sigset_t = crate::ctypes::c_ulong; +pub type __signalfn_t = ::core::option::Option; +pub type __sighandler_t = __signalfn_t; +pub type __restorefn_t = ::core::option::Option; +pub type __sigrestore_t = __restorefn_t; +pub type stack_t = sigaltstack; +pub type sigval_t = sigval; +pub type siginfo_t = siginfo; +pub type sigevent_t = sigevent; +pub type cc_t = crate::ctypes::c_uchar; +pub type speed_t = crate::ctypes::c_uint; +pub type tcflag_t = crate::ctypes::c_uint; +pub type __fsword_t = __u32; #[repr(C)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct __BindgenBitfieldUnit { storage: Storage, } -impl __BindgenBitfieldUnit { -#[inline] -pub const fn new(storage: Storage) -> Self { -Self { storage } -} -} -impl __BindgenBitfieldUnit -where -Storage: AsRef<[u8]> + AsMut<[u8]>, -{ -#[inline] -pub fn get_bit(&self, index: usize) -> bool { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = self.storage.as_ref()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -byte & mask == mask -} -#[inline] -pub fn set_bit(&mut self, index: usize, val: bool) { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = &mut self.storage.as_mut()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -if val { -*byte |= mask; -} else { -*byte &= !mask; -} -} -#[inline] -pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -let mut val = 0; -for i in 0..(bit_width as usize) { -if self.get_bit(i + bit_offset) { -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -val |= 1 << index; -} -} -val -} -#[inline] -pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -for i in 0..(bit_width as usize) { -let mask = 1 << i; -let val_bit_is_set = val & mask == mask; -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -self.set_bit(index + bit_offset, val_bit_is_set); -} -} -} #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) -} -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fd_set { +pub fds_bits: [crate::ctypes::c_ulong; 32usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fsid_t { +pub val: [crate::ctypes::c_int; 2usize], } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_header_struct { +pub version: __u32, +pub pid: crate::ctypes::c_int, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_data_struct { +pub effective: __u32, +pub permitted: __u32, +pub inheritable: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data { +pub magic_etc: __le32, +pub data: [vfs_cap_data__bindgen_ty_1; 2usize], } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data { +pub magic_etc: __le32, +pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], +pub rootid: __le32, } #[repr(C)] -pub struct __BindgenUnionField(::core::marker::PhantomData); -impl __BindgenUnionField { -#[inline] -pub const fn new() -> Self { -__BindgenUnionField(::core::marker::PhantomData) +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } -#[inline] -pub unsafe fn as_ref(&self) -> &T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct f_owner_ex { +pub type_: crate::ctypes::c_int, +pub pid: __kernel_pid_t, } -#[inline] -pub unsafe fn as_mut(&mut self) -> &mut T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_off_t, +pub l_len: __kernel_off_t, +pub l_pid: __kernel_pid_t, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock64 { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_loff_t, +pub l_len: __kernel_loff_t, +pub l_pid: __kernel_pid_t, } -impl ::core::default::Default for __BindgenUnionField { -#[inline] -fn default() -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct open_how { +pub flags: __u64, +pub mode: __u64, +pub resolve: __u64, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct epoll_event { +pub events: __poll_t, +pub data: __u64, } -impl ::core::clone::Clone for __BindgenUnionField { -#[inline] -fn clone(&self) -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, } -impl ::core::marker::Copy for __BindgenUnionField {} -impl ::core::fmt::Debug for __BindgenUnionField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__BindgenUnionField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, } -impl ::core::hash::Hash for __BindgenUnionField { -fn hash(&self, _state: &mut H) {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, } -impl ::core::cmp::PartialEq for __BindgenUnionField { -fn eq(&self, _other: &__BindgenUnionField) -> bool { -true +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, } -} -impl ::core::cmp::Eq for __BindgenUnionField {} -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const AT_SYSINFO_EHDR: u32 = 33; -pub const AT_L1I_CACHESIZE: u32 = 40; -pub const AT_L1I_CACHEGEOMETRY: u32 = 41; -pub const AT_L1D_CACHESIZE: u32 = 42; -pub const AT_L1D_CACHEGEOMETRY: u32 = 43; -pub const AT_L2_CACHESIZE: u32 = 44; -pub const AT_L2_CACHEGEOMETRY: u32 = 45; -pub const AT_L3_CACHESIZE: u32 = 46; -pub const AT_L3_CACHEGEOMETRY: u32 = 47; -pub const AT_VECTOR_SIZE_ARCH: u32 = 9; -pub const AT_NULL: u32 = 0; -pub const AT_IGNORE: u32 = 1; -pub const AT_EXECFD: u32 = 2; -pub const AT_PHDR: u32 = 3; -pub const AT_PHENT: u32 = 4; -pub const AT_PHNUM: u32 = 5; -pub const AT_PAGESZ: u32 = 6; -pub const AT_BASE: u32 = 7; -pub const AT_FLAGS: u32 = 8; -pub const AT_ENTRY: u32 = 9; -pub const AT_NOTELF: u32 = 10; -pub const AT_UID: u32 = 11; -pub const AT_EUID: u32 = 12; -pub const AT_GID: u32 = 13; -pub const AT_EGID: u32 = 14; -pub const AT_PLATFORM: u32 = 15; -pub const AT_HWCAP: u32 = 16; -pub const AT_CLKTCK: u32 = 17; -pub const AT_SECURE: u32 = 23; -pub const AT_BASE_PLATFORM: u32 = 24; -pub const AT_RANDOM: u32 = 25; -pub const AT_HWCAP2: u32 = 26; -pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; -pub const AT_RSEQ_ALIGN: u32 = 28; -pub const AT_EXECFN: u32 = 31; -pub const AT_MINSIGSTKSZ: u32 = 51; -pub const __FD_SETSIZE: u32 = 1024; -pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; -pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; -pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; -pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; -pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; -pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; -pub const VFS_CAP_REVISION_SHIFT: u32 = 24; -pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; -pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; -pub const VFS_CAP_REVISION_1: u32 = 16777216; -pub const VFS_CAP_U32_1: u32 = 1; -pub const VFS_CAP_REVISION_2: u32 = 33554432; -pub const VFS_CAP_U32_2: u32 = 2; -pub const VFS_CAP_REVISION_3: u32 = 50331648; -pub const VFS_CAP_U32_3: u32 = 2; -pub const VFS_CAP_U32: u32 = 2; -pub const VFS_CAP_REVISION: u32 = 50331648; -pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S: u32 = 1; -pub const CAP_CHOWN: u32 = 0; -pub const CAP_DAC_OVERRIDE: u32 = 1; -pub const CAP_DAC_READ_SEARCH: u32 = 2; -pub const CAP_FOWNER: u32 = 3; -pub const CAP_FSETID: u32 = 4; -pub const CAP_KILL: u32 = 5; -pub const CAP_SETGID: u32 = 6; -pub const CAP_SETUID: u32 = 7; -pub const CAP_SETPCAP: u32 = 8; -pub const CAP_LINUX_IMMUTABLE: u32 = 9; -pub const CAP_NET_BIND_SERVICE: u32 = 10; -pub const CAP_NET_BROADCAST: u32 = 11; -pub const CAP_NET_ADMIN: u32 = 12; -pub const CAP_NET_RAW: u32 = 13; -pub const CAP_IPC_LOCK: u32 = 14; -pub const CAP_IPC_OWNER: u32 = 15; -pub const CAP_SYS_MODULE: u32 = 16; -pub const CAP_SYS_RAWIO: u32 = 17; -pub const CAP_SYS_CHROOT: u32 = 18; -pub const CAP_SYS_PTRACE: u32 = 19; -pub const CAP_SYS_PACCT: u32 = 20; -pub const CAP_SYS_ADMIN: u32 = 21; -pub const CAP_SYS_BOOT: u32 = 22; -pub const CAP_SYS_NICE: u32 = 23; -pub const CAP_SYS_RESOURCE: u32 = 24; -pub const CAP_SYS_TIME: u32 = 25; -pub const CAP_SYS_TTY_CONFIG: u32 = 26; -pub const CAP_MKNOD: u32 = 27; -pub const CAP_LEASE: u32 = 28; -pub const CAP_AUDIT_WRITE: u32 = 29; -pub const CAP_AUDIT_CONTROL: u32 = 30; -pub const CAP_SETFCAP: u32 = 31; -pub const CAP_MAC_OVERRIDE: u32 = 32; -pub const CAP_MAC_ADMIN: u32 = 33; -pub const CAP_SYSLOG: u32 = 34; -pub const CAP_WAKE_ALARM: u32 = 35; -pub const CAP_BLOCK_SUSPEND: u32 = 36; -pub const CAP_AUDIT_READ: u32 = 37; -pub const CAP_PERFMON: u32 = 38; -pub const CAP_BPF: u32 = 39; -pub const CAP_CHECKPOINT_RESTORE: u32 = 40; -pub const CAP_LAST_CAP: u32 = 40; -pub const O_ACCMODE: u32 = 3; -pub const O_RDONLY: u32 = 0; -pub const O_WRONLY: u32 = 1; -pub const O_RDWR: u32 = 2; -pub const O_CREAT: u32 = 64; -pub const O_EXCL: u32 = 128; -pub const O_NOCTTY: u32 = 256; -pub const O_TRUNC: u32 = 512; -pub const O_APPEND: u32 = 1024; -pub const O_NONBLOCK: u32 = 2048; -pub const O_DSYNC: u32 = 4096; -pub const FASYNC: u32 = 8192; -pub const O_DIRECT: u32 = 16384; -pub const O_LARGEFILE: u32 = 32768; -pub const O_DIRECTORY: u32 = 65536; -pub const O_NOFOLLOW: u32 = 131072; -pub const O_NOATIME: u32 = 262144; -pub const O_CLOEXEC: u32 = 524288; -pub const __O_SYNC: u32 = 1048576; -pub const O_SYNC: u32 = 1052672; -pub const O_PATH: u32 = 2097152; -pub const __O_TMPFILE: u32 = 4194304; -pub const O_TMPFILE: u32 = 4259840; -pub const O_TMPFILE_MASK: u32 = 4259904; -pub const O_NDELAY: u32 = 2048; -pub const F_DUPFD: u32 = 0; -pub const F_GETFD: u32 = 1; -pub const F_SETFD: u32 = 2; -pub const F_GETFL: u32 = 3; -pub const F_SETFL: u32 = 4; -pub const F_GETLK: u32 = 5; -pub const F_SETLK: u32 = 6; -pub const F_SETLKW: u32 = 7; -pub const F_SETOWN: u32 = 8; -pub const F_GETOWN: u32 = 9; -pub const F_SETSIG: u32 = 10; -pub const F_GETSIG: u32 = 11; -pub const F_GETLK64: u32 = 12; -pub const F_SETLK64: u32 = 13; -pub const F_SETLKW64: u32 = 14; -pub const F_SETOWN_EX: u32 = 15; -pub const F_GETOWN_EX: u32 = 16; -pub const F_GETOWNER_UIDS: u32 = 17; -pub const F_OFD_GETLK: u32 = 36; -pub const F_OFD_SETLK: u32 = 37; -pub const F_OFD_SETLKW: u32 = 38; -pub const F_OWNER_TID: u32 = 0; -pub const F_OWNER_PID: u32 = 1; -pub const F_OWNER_PGRP: u32 = 2; -pub const FD_CLOEXEC: u32 = 1; -pub const F_RDLCK: u32 = 0; -pub const F_WRLCK: u32 = 1; -pub const F_UNLCK: u32 = 2; -pub const F_EXLCK: u32 = 4; -pub const F_SHLCK: u32 = 8; -pub const LOCK_SH: u32 = 1; -pub const LOCK_EX: u32 = 2; -pub const LOCK_NB: u32 = 4; -pub const LOCK_UN: u32 = 8; -pub const LOCK_MAND: u32 = 32; -pub const LOCK_READ: u32 = 64; -pub const LOCK_WRITE: u32 = 128; -pub const LOCK_RW: u32 = 192; -pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; -pub const RESOLVE_NO_XDEV: u32 = 1; -pub const RESOLVE_NO_MAGICLINKS: u32 = 2; -pub const RESOLVE_NO_SYMLINKS: u32 = 4; -pub const RESOLVE_BENEATH: u32 = 8; -pub const RESOLVE_IN_ROOT: u32 = 16; -pub const RESOLVE_CACHED: u32 = 32; -pub const F_SETLEASE: u32 = 1024; -pub const F_GETLEASE: u32 = 1025; -pub const F_CANCELLK: u32 = 1029; -pub const F_DUPFD_CLOEXEC: u32 = 1030; -pub const F_NOTIFY: u32 = 1026; -pub const F_SETPIPE_SZ: u32 = 1031; -pub const F_GETPIPE_SZ: u32 = 1032; -pub const F_ADD_SEALS: u32 = 1033; -pub const F_GET_SEALS: u32 = 1034; -pub const F_SEAL_SEAL: u32 = 1; -pub const F_SEAL_SHRINK: u32 = 2; -pub const F_SEAL_GROW: u32 = 4; -pub const F_SEAL_WRITE: u32 = 8; -pub const F_SEAL_FUTURE_WRITE: u32 = 16; -pub const F_SEAL_EXEC: u32 = 32; -pub const F_GET_RW_HINT: u32 = 1035; -pub const F_SET_RW_HINT: u32 = 1036; -pub const F_GET_FILE_RW_HINT: u32 = 1037; -pub const F_SET_FILE_RW_HINT: u32 = 1038; -pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; -pub const RWH_WRITE_LIFE_NONE: u32 = 1; -pub const RWH_WRITE_LIFE_SHORT: u32 = 2; -pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; -pub const RWH_WRITE_LIFE_LONG: u32 = 4; -pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; -pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; -pub const DN_ACCESS: u32 = 1; -pub const DN_MODIFY: u32 = 2; -pub const DN_CREATE: u32 = 4; -pub const DN_DELETE: u32 = 8; -pub const DN_RENAME: u32 = 16; -pub const DN_ATTRIB: u32 = 32; -pub const DN_MULTISHOT: u32 = 2147483648; -pub const AT_FDCWD: i32 = -100; -pub const AT_SYMLINK_NOFOLLOW: u32 = 256; -pub const AT_EACCESS: u32 = 512; -pub const AT_REMOVEDIR: u32 = 512; -pub const AT_SYMLINK_FOLLOW: u32 = 1024; -pub const AT_NO_AUTOMOUNT: u32 = 2048; -pub const AT_EMPTY_PATH: u32 = 4096; -pub const AT_STATX_SYNC_TYPE: u32 = 24576; -pub const AT_STATX_SYNC_AS_STAT: u32 = 0; -pub const AT_STATX_FORCE_SYNC: u32 = 8192; -pub const AT_STATX_DONT_SYNC: u32 = 16384; -pub const AT_RECURSIVE: u32 = 32768; -pub const EPOLL_CLOEXEC: u32 = 524288; -pub const EPOLL_CTL_ADD: u32 = 1; -pub const EPOLL_CTL_DEL: u32 = 2; -pub const EPOLL_CTL_MOD: u32 = 3; -pub const POSIX_FADV_NORMAL: u32 = 0; -pub const POSIX_FADV_RANDOM: u32 = 1; -pub const POSIX_FADV_SEQUENTIAL: u32 = 2; -pub const POSIX_FADV_WILLNEED: u32 = 3; -pub const POSIX_FADV_DONTNEED: u32 = 4; -pub const POSIX_FADV_NOREUSE: u32 = 5; -pub const FALLOC_FL_KEEP_SIZE: u32 = 1; -pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; -pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; -pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; -pub const FALLOC_FL_ZERO_RANGE: u32 = 16; -pub const FALLOC_FL_INSERT_RANGE: u32 = 32; -pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; -pub const NR_OPEN: u32 = 1024; -pub const NGROUPS_MAX: u32 = 65536; -pub const ARG_MAX: u32 = 131072; -pub const LINK_MAX: u32 = 127; -pub const MAX_CANON: u32 = 255; -pub const MAX_INPUT: u32 = 255; -pub const NAME_MAX: u32 = 255; -pub const PATH_MAX: u32 = 4096; -pub const PIPE_BUF: u32 = 4096; -pub const XATTR_NAME_MAX: u32 = 255; -pub const XATTR_SIZE_MAX: u32 = 65536; -pub const XATTR_LIST_MAX: u32 = 65536; -pub const RTSIG_MAX: u32 = 32; -pub const _IOC_NRBITS: u32 = 8; -pub const _IOC_TYPEBITS: u32 = 8; -pub const _IOC_SIZEBITS: u32 = 14; -pub const _IOC_DIRBITS: u32 = 2; -pub const _IOC_NRMASK: u32 = 255; -pub const _IOC_TYPEMASK: u32 = 255; -pub const _IOC_SIZEMASK: u32 = 16383; -pub const _IOC_DIRMASK: u32 = 3; -pub const _IOC_NRSHIFT: u32 = 0; -pub const _IOC_TYPESHIFT: u32 = 8; -pub const _IOC_SIZESHIFT: u32 = 16; -pub const _IOC_DIRSHIFT: u32 = 30; -pub const _IOC_NONE: u32 = 0; -pub const _IOC_WRITE: u32 = 1; -pub const _IOC_READ: u32 = 2; -pub const IOC_IN: u32 = 1073741824; -pub const IOC_OUT: u32 = 2147483648; -pub const IOC_INOUT: u32 = 3221225472; -pub const IOCSIZE_MASK: u32 = 1073676288; -pub const IOCSIZE_SHIFT: u32 = 16; -pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; -pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; -pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; -pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; -pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; -pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; -pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; -pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; -pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; -pub const FSCRYPT_POLICY_V1: u32 = 0; -pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; -pub const FSCRYPT_POLICY_V2: u32 = 2; -pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; -pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; -pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; -pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; -pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; -pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; -pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; -pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FS_POLICY_FLAGS_VALID: u32 = 7; -pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; -pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; -pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; -pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; -pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; -pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; -pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; -pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; -pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FS_MAX_KEY_SIZE: u32 = 64; -pub const MS_RDONLY: u32 = 1; -pub const MS_NOSUID: u32 = 2; -pub const MS_NODEV: u32 = 4; -pub const MS_NOEXEC: u32 = 8; -pub const MS_SYNCHRONOUS: u32 = 16; -pub const MS_REMOUNT: u32 = 32; -pub const MS_MANDLOCK: u32 = 64; -pub const MS_DIRSYNC: u32 = 128; -pub const MS_NOSYMFOLLOW: u32 = 256; -pub const MS_NOATIME: u32 = 1024; -pub const MS_NODIRATIME: u32 = 2048; -pub const MS_BIND: u32 = 4096; -pub const MS_MOVE: u32 = 8192; -pub const MS_REC: u32 = 16384; -pub const MS_VERBOSE: u32 = 32768; -pub const MS_SILENT: u32 = 32768; -pub const MS_POSIXACL: u32 = 65536; -pub const MS_UNBINDABLE: u32 = 131072; -pub const MS_PRIVATE: u32 = 262144; -pub const MS_SLAVE: u32 = 524288; -pub const MS_SHARED: u32 = 1048576; -pub const MS_RELATIME: u32 = 2097152; -pub const MS_KERNMOUNT: u32 = 4194304; -pub const MS_I_VERSION: u32 = 8388608; -pub const MS_STRICTATIME: u32 = 16777216; -pub const MS_LAZYTIME: u32 = 33554432; -pub const MS_SUBMOUNT: u32 = 67108864; -pub const MS_NOREMOTELOCK: u32 = 134217728; -pub const MS_NOSEC: u32 = 268435456; -pub const MS_BORN: u32 = 536870912; -pub const MS_ACTIVE: u32 = 1073741824; -pub const MS_NOUSER: u32 = 2147483648; -pub const MS_RMT_MASK: u32 = 41943121; -pub const MS_MGC_VAL: u32 = 3236757504; -pub const MS_MGC_MSK: u32 = 4294901760; -pub const OPEN_TREE_CLONE: u32 = 1; -pub const OPEN_TREE_CLOEXEC: u32 = 524288; -pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; -pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; -pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; -pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; -pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; -pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; -pub const MOVE_MOUNT_SET_GROUP: u32 = 256; -pub const MOVE_MOUNT__MASK: u32 = 375; -pub const FSOPEN_CLOEXEC: u32 = 1; -pub const FSPICK_CLOEXEC: u32 = 1; -pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; -pub const FSPICK_NO_AUTOMOUNT: u32 = 4; -pub const FSPICK_EMPTY_PATH: u32 = 8; -pub const FSMOUNT_CLOEXEC: u32 = 1; -pub const MOUNT_ATTR_RDONLY: u32 = 1; -pub const MOUNT_ATTR_NOSUID: u32 = 2; -pub const MOUNT_ATTR_NODEV: u32 = 4; -pub const MOUNT_ATTR_NOEXEC: u32 = 8; -pub const MOUNT_ATTR__ATIME: u32 = 112; -pub const MOUNT_ATTR_RELATIME: u32 = 0; -pub const MOUNT_ATTR_NOATIME: u32 = 16; -pub const MOUNT_ATTR_STRICTATIME: u32 = 32; -pub const MOUNT_ATTR_NODIRATIME: u32 = 128; -pub const MOUNT_ATTR_IDMAP: u32 = 1048576; -pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; -pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; -pub const INR_OPEN_CUR: u32 = 1024; -pub const INR_OPEN_MAX: u32 = 4096; -pub const BLOCK_SIZE_BITS: u32 = 10; -pub const BLOCK_SIZE: u32 = 1024; -pub const SEEK_SET: u32 = 0; -pub const SEEK_CUR: u32 = 1; -pub const SEEK_END: u32 = 2; -pub const SEEK_DATA: u32 = 3; -pub const SEEK_HOLE: u32 = 4; -pub const SEEK_MAX: u32 = 4; -pub const RENAME_NOREPLACE: u32 = 1; -pub const RENAME_EXCHANGE: u32 = 2; -pub const RENAME_WHITEOUT: u32 = 4; -pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; -pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; -pub const NR_FILE: u32 = 8192; -pub const FS_XFLAG_REALTIME: u32 = 1; -pub const FS_XFLAG_PREALLOC: u32 = 2; -pub const FS_XFLAG_IMMUTABLE: u32 = 8; -pub const FS_XFLAG_APPEND: u32 = 16; -pub const FS_XFLAG_SYNC: u32 = 32; -pub const FS_XFLAG_NOATIME: u32 = 64; -pub const FS_XFLAG_NODUMP: u32 = 128; -pub const FS_XFLAG_RTINHERIT: u32 = 256; -pub const FS_XFLAG_PROJINHERIT: u32 = 512; -pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; -pub const FS_XFLAG_EXTSIZE: u32 = 2048; -pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; -pub const FS_XFLAG_NODEFRAG: u32 = 8192; -pub const FS_XFLAG_FILESTREAM: u32 = 16384; -pub const FS_XFLAG_DAX: u32 = 32768; -pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; -pub const FS_XFLAG_HASATTR: u32 = 2147483648; -pub const BMAP_IOCTL: u32 = 1; -pub const FSLABEL_MAX: u32 = 256; -pub const FS_SECRM_FL: u32 = 1; -pub const FS_UNRM_FL: u32 = 2; -pub const FS_COMPR_FL: u32 = 4; -pub const FS_SYNC_FL: u32 = 8; -pub const FS_IMMUTABLE_FL: u32 = 16; -pub const FS_APPEND_FL: u32 = 32; -pub const FS_NODUMP_FL: u32 = 64; -pub const FS_NOATIME_FL: u32 = 128; -pub const FS_DIRTY_FL: u32 = 256; -pub const FS_COMPRBLK_FL: u32 = 512; -pub const FS_NOCOMP_FL: u32 = 1024; -pub const FS_ENCRYPT_FL: u32 = 2048; -pub const FS_BTREE_FL: u32 = 4096; -pub const FS_INDEX_FL: u32 = 4096; -pub const FS_IMAGIC_FL: u32 = 8192; -pub const FS_JOURNAL_DATA_FL: u32 = 16384; -pub const FS_NOTAIL_FL: u32 = 32768; -pub const FS_DIRSYNC_FL: u32 = 65536; -pub const FS_TOPDIR_FL: u32 = 131072; -pub const FS_HUGE_FILE_FL: u32 = 262144; -pub const FS_EXTENT_FL: u32 = 524288; -pub const FS_VERITY_FL: u32 = 1048576; -pub const FS_EA_INODE_FL: u32 = 2097152; -pub const FS_EOFBLOCKS_FL: u32 = 4194304; -pub const FS_NOCOW_FL: u32 = 8388608; -pub const FS_DAX_FL: u32 = 33554432; -pub const FS_INLINE_DATA_FL: u32 = 268435456; -pub const FS_PROJINHERIT_FL: u32 = 536870912; -pub const FS_CASEFOLD_FL: u32 = 1073741824; -pub const FS_RESERVED_FL: u32 = 2147483648; -pub const FS_FL_USER_VISIBLE: u32 = 253951; -pub const FS_FL_USER_MODIFIABLE: u32 = 229631; -pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; -pub const SYNC_FILE_RANGE_WRITE: u32 = 2; -pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; -pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; -pub const FUTEX_WAIT: u32 = 0; -pub const FUTEX_WAKE: u32 = 1; -pub const FUTEX_FD: u32 = 2; -pub const FUTEX_REQUEUE: u32 = 3; -pub const FUTEX_CMP_REQUEUE: u32 = 4; -pub const FUTEX_WAKE_OP: u32 = 5; -pub const FUTEX_LOCK_PI: u32 = 6; -pub const FUTEX_UNLOCK_PI: u32 = 7; -pub const FUTEX_TRYLOCK_PI: u32 = 8; -pub const FUTEX_WAIT_BITSET: u32 = 9; -pub const FUTEX_WAKE_BITSET: u32 = 10; -pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; -pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; -pub const FUTEX_LOCK_PI2: u32 = 13; -pub const FUTEX_PRIVATE_FLAG: u32 = 128; -pub const FUTEX_CLOCK_REALTIME: u32 = 256; -pub const FUTEX_CMD_MASK: i32 = -385; -pub const FUTEX_WAIT_PRIVATE: u32 = 128; -pub const FUTEX_WAKE_PRIVATE: u32 = 129; -pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; -pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; -pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; -pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; -pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; -pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; -pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; -pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; -pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; -pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; -pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; -pub const FUTEX_32: u32 = 2; -pub const FUTEX_WAITV_MAX: u32 = 128; -pub const FUTEX_WAITERS: u32 = 2147483648; -pub const FUTEX_OWNER_DIED: u32 = 1073741824; -pub const FUTEX_TID_MASK: u32 = 1073741823; -pub const ROBUST_LIST_LIMIT: u32 = 2048; -pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; -pub const FUTEX_OP_SET: u32 = 0; -pub const FUTEX_OP_ADD: u32 = 1; -pub const FUTEX_OP_OR: u32 = 2; -pub const FUTEX_OP_ANDN: u32 = 3; -pub const FUTEX_OP_XOR: u32 = 4; -pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; -pub const FUTEX_OP_CMP_EQ: u32 = 0; -pub const FUTEX_OP_CMP_NE: u32 = 1; -pub const FUTEX_OP_CMP_LT: u32 = 2; -pub const FUTEX_OP_CMP_LE: u32 = 3; -pub const FUTEX_OP_CMP_GT: u32 = 4; -pub const FUTEX_OP_CMP_GE: u32 = 5; -pub const __UAPI_DEF_IF_IFCONF: u32 = 1; -pub const __UAPI_DEF_IF_IFMAP: u32 = 1; -pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1; -pub const __UAPI_DEF_IF_IFREQ: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1; -pub const __UAPI_DEF_IN_ADDR: u32 = 1; -pub const __UAPI_DEF_IN_IPPROTO: u32 = 1; -pub const __UAPI_DEF_IN_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP_MREQ: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1; -pub const __UAPI_DEF_IN_CLASS: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1; -pub const __UAPI_DEF_IPV6_MREQ: u32 = 1; -pub const __UAPI_DEF_IPPROTO_V6: u32 = 1; -pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1; -pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1; -pub const __UAPI_DEF_XATTR: u32 = 1; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const IP_TOS: u32 = 1; -pub const IP_TTL: u32 = 2; -pub const IP_HDRINCL: u32 = 3; -pub const IP_OPTIONS: u32 = 4; -pub const IP_ROUTER_ALERT: u32 = 5; -pub const IP_RECVOPTS: u32 = 6; -pub const IP_RETOPTS: u32 = 7; -pub const IP_PKTINFO: u32 = 8; -pub const IP_PKTOPTIONS: u32 = 9; -pub const IP_MTU_DISCOVER: u32 = 10; -pub const IP_RECVERR: u32 = 11; -pub const IP_RECVTTL: u32 = 12; -pub const IP_RECVTOS: u32 = 13; -pub const IP_MTU: u32 = 14; -pub const IP_FREEBIND: u32 = 15; -pub const IP_IPSEC_POLICY: u32 = 16; -pub const IP_XFRM_POLICY: u32 = 17; -pub const IP_PASSSEC: u32 = 18; -pub const IP_TRANSPARENT: u32 = 19; -pub const IP_RECVRETOPTS: u32 = 7; -pub const IP_ORIGDSTADDR: u32 = 20; -pub const IP_RECVORIGDSTADDR: u32 = 20; -pub const IP_MINTTL: u32 = 21; -pub const IP_NODEFRAG: u32 = 22; -pub const IP_CHECKSUM: u32 = 23; -pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; -pub const IP_RECVFRAGSIZE: u32 = 25; -pub const IP_RECVERR_RFC4884: u32 = 26; -pub const IP_PMTUDISC_DONT: u32 = 0; -pub const IP_PMTUDISC_WANT: u32 = 1; -pub const IP_PMTUDISC_DO: u32 = 2; -pub const IP_PMTUDISC_PROBE: u32 = 3; -pub const IP_PMTUDISC_INTERFACE: u32 = 4; -pub const IP_PMTUDISC_OMIT: u32 = 5; -pub const IP_MULTICAST_IF: u32 = 32; -pub const IP_MULTICAST_TTL: u32 = 33; -pub const IP_MULTICAST_LOOP: u32 = 34; -pub const IP_ADD_MEMBERSHIP: u32 = 35; -pub const IP_DROP_MEMBERSHIP: u32 = 36; -pub const IP_UNBLOCK_SOURCE: u32 = 37; -pub const IP_BLOCK_SOURCE: u32 = 38; -pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; -pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; -pub const IP_MSFILTER: u32 = 41; -pub const MCAST_JOIN_GROUP: u32 = 42; -pub const MCAST_BLOCK_SOURCE: u32 = 43; -pub const MCAST_UNBLOCK_SOURCE: u32 = 44; -pub const MCAST_LEAVE_GROUP: u32 = 45; -pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; -pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; -pub const MCAST_MSFILTER: u32 = 48; -pub const IP_MULTICAST_ALL: u32 = 49; -pub const IP_UNICAST_IF: u32 = 50; -pub const IP_LOCAL_PORT_RANGE: u32 = 51; -pub const MCAST_EXCLUDE: u32 = 0; -pub const MCAST_INCLUDE: u32 = 1; -pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; -pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const __SOCK_SIZE__: u32 = 16; -pub const IN_CLASSA_NET: u32 = 4278190080; -pub const IN_CLASSA_NSHIFT: u32 = 24; -pub const IN_CLASSA_HOST: u32 = 16777215; -pub const IN_CLASSA_MAX: u32 = 128; -pub const IN_CLASSB_NET: u32 = 4294901760; -pub const IN_CLASSB_NSHIFT: u32 = 16; -pub const IN_CLASSB_HOST: u32 = 65535; -pub const IN_CLASSB_MAX: u32 = 65536; -pub const IN_CLASSC_NET: u32 = 4294967040; -pub const IN_CLASSC_NSHIFT: u32 = 8; -pub const IN_CLASSC_HOST: u32 = 255; -pub const IN_MULTICAST_NET: u32 = 3758096384; -pub const IN_CLASSE_NET: u32 = 4294967295; -pub const IN_CLASSE_NSHIFT: u32 = 0; -pub const IN_LOOPBACKNET: u32 = 127; -pub const INADDR_LOOPBACK: u32 = 2130706433; -pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; -pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; -pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; -pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; -pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; -pub const __LITTLE_ENDIAN: u32 = 1234; -pub const IN_ACCESS: u32 = 1; -pub const IN_MODIFY: u32 = 2; -pub const IN_ATTRIB: u32 = 4; -pub const IN_CLOSE_WRITE: u32 = 8; -pub const IN_CLOSE_NOWRITE: u32 = 16; -pub const IN_OPEN: u32 = 32; -pub const IN_MOVED_FROM: u32 = 64; -pub const IN_MOVED_TO: u32 = 128; -pub const IN_CREATE: u32 = 256; -pub const IN_DELETE: u32 = 512; -pub const IN_DELETE_SELF: u32 = 1024; -pub const IN_MOVE_SELF: u32 = 2048; -pub const IN_UNMOUNT: u32 = 8192; -pub const IN_Q_OVERFLOW: u32 = 16384; -pub const IN_IGNORED: u32 = 32768; -pub const IN_CLOSE: u32 = 24; -pub const IN_MOVE: u32 = 192; -pub const IN_ONLYDIR: u32 = 16777216; -pub const IN_DONT_FOLLOW: u32 = 33554432; -pub const IN_EXCL_UNLINK: u32 = 67108864; -pub const IN_MASK_CREATE: u32 = 268435456; -pub const IN_MASK_ADD: u32 = 536870912; -pub const IN_ISDIR: u32 = 1073741824; -pub const IN_ONESHOT: u32 = 2147483648; -pub const IN_ALL_EVENTS: u32 = 4095; -pub const IN_CLOEXEC: u32 = 524288; -pub const IN_NONBLOCK: u32 = 2048; -pub const IPTOS_TOS_MASK: u32 = 30; -pub const IPTOS_LOWDELAY: u32 = 16; -pub const IPTOS_THROUGHPUT: u32 = 8; -pub const IPTOS_RELIABILITY: u32 = 4; -pub const IPTOS_MINCOST: u32 = 2; -pub const IPTOS_PREC_MASK: u32 = 224; -pub const IPTOS_PREC_NETCONTROL: u32 = 224; -pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; -pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; -pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; -pub const IPTOS_PREC_FLASH: u32 = 96; -pub const IPTOS_PREC_IMMEDIATE: u32 = 64; -pub const IPTOS_PREC_PRIORITY: u32 = 32; -pub const IPTOS_PREC_ROUTINE: u32 = 0; -pub const IPOPT_COPY: u32 = 128; -pub const IPOPT_CLASS_MASK: u32 = 96; -pub const IPOPT_NUMBER_MASK: u32 = 31; -pub const IPOPT_CONTROL: u32 = 0; -pub const IPOPT_RESERVED1: u32 = 32; -pub const IPOPT_MEASUREMENT: u32 = 64; -pub const IPOPT_RESERVED2: u32 = 96; -pub const IPOPT_END: u32 = 0; -pub const IPOPT_NOOP: u32 = 1; -pub const IPOPT_SEC: u32 = 130; -pub const IPOPT_LSRR: u32 = 131; -pub const IPOPT_TIMESTAMP: u32 = 68; -pub const IPOPT_CIPSO: u32 = 134; -pub const IPOPT_RR: u32 = 7; -pub const IPOPT_SID: u32 = 136; -pub const IPOPT_SSRR: u32 = 137; -pub const IPOPT_RA: u32 = 148; -pub const IPVERSION: u32 = 4; -pub const MAXTTL: u32 = 255; -pub const IPDEFTTL: u32 = 64; -pub const IPOPT_OPTVAL: u32 = 0; -pub const IPOPT_OLEN: u32 = 1; -pub const IPOPT_OFFSET: u32 = 2; -pub const IPOPT_MINOFF: u32 = 4; -pub const MAX_IPOPTLEN: u32 = 40; -pub const IPOPT_NOP: u32 = 1; -pub const IPOPT_EOL: u32 = 0; -pub const IPOPT_TS: u32 = 68; -pub const IPOPT_TS_TSONLY: u32 = 0; -pub const IPOPT_TS_TSANDADDR: u32 = 1; -pub const IPOPT_TS_PRESPEC: u32 = 3; -pub const IPV4_BEET_PHMAXLEN: u32 = 8; -pub const IPV6_FL_A_GET: u32 = 0; -pub const IPV6_FL_A_PUT: u32 = 1; -pub const IPV6_FL_A_RENEW: u32 = 2; -pub const IPV6_FL_F_CREATE: u32 = 1; -pub const IPV6_FL_F_EXCL: u32 = 2; -pub const IPV6_FL_F_REFLECT: u32 = 4; -pub const IPV6_FL_F_REMOTE: u32 = 8; -pub const IPV6_FL_S_NONE: u32 = 0; -pub const IPV6_FL_S_EXCL: u32 = 1; -pub const IPV6_FL_S_PROCESS: u32 = 2; -pub const IPV6_FL_S_USER: u32 = 3; -pub const IPV6_FL_S_ANY: u32 = 255; -pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; -pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; -pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; -pub const IPV6_PRIORITY_FILLER: u32 = 256; -pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; -pub const IPV6_PRIORITY_RESERVED1: u32 = 768; -pub const IPV6_PRIORITY_BULK: u32 = 1024; -pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; -pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; -pub const IPV6_PRIORITY_CONTROL: u32 = 1792; -pub const IPV6_PRIORITY_8: u32 = 2048; -pub const IPV6_PRIORITY_9: u32 = 2304; -pub const IPV6_PRIORITY_10: u32 = 2560; -pub const IPV6_PRIORITY_11: u32 = 2816; -pub const IPV6_PRIORITY_12: u32 = 3072; -pub const IPV6_PRIORITY_13: u32 = 3328; -pub const IPV6_PRIORITY_14: u32 = 3584; -pub const IPV6_PRIORITY_15: u32 = 3840; -pub const IPPROTO_HOPOPTS: u32 = 0; -pub const IPPROTO_ROUTING: u32 = 43; -pub const IPPROTO_FRAGMENT: u32 = 44; -pub const IPPROTO_ICMPV6: u32 = 58; -pub const IPPROTO_NONE: u32 = 59; -pub const IPPROTO_DSTOPTS: u32 = 60; -pub const IPPROTO_MH: u32 = 135; -pub const IPV6_TLV_PAD1: u32 = 0; -pub const IPV6_TLV_PADN: u32 = 1; -pub const IPV6_TLV_ROUTERALERT: u32 = 5; -pub const IPV6_TLV_CALIPSO: u32 = 7; -pub const IPV6_TLV_IOAM: u32 = 49; -pub const IPV6_TLV_JUMBO: u32 = 194; -pub const IPV6_TLV_HAO: u32 = 201; -pub const IPV6_ADDRFORM: u32 = 1; -pub const IPV6_2292PKTINFO: u32 = 2; -pub const IPV6_2292HOPOPTS: u32 = 3; -pub const IPV6_2292DSTOPTS: u32 = 4; -pub const IPV6_2292RTHDR: u32 = 5; -pub const IPV6_2292PKTOPTIONS: u32 = 6; -pub const IPV6_CHECKSUM: u32 = 7; -pub const IPV6_2292HOPLIMIT: u32 = 8; -pub const IPV6_NEXTHOP: u32 = 9; -pub const IPV6_AUTHHDR: u32 = 10; -pub const IPV6_FLOWINFO: u32 = 11; -pub const IPV6_UNICAST_HOPS: u32 = 16; -pub const IPV6_MULTICAST_IF: u32 = 17; -pub const IPV6_MULTICAST_HOPS: u32 = 18; -pub const IPV6_MULTICAST_LOOP: u32 = 19; -pub const IPV6_ADD_MEMBERSHIP: u32 = 20; -pub const IPV6_DROP_MEMBERSHIP: u32 = 21; -pub const IPV6_ROUTER_ALERT: u32 = 22; -pub const IPV6_MTU_DISCOVER: u32 = 23; -pub const IPV6_MTU: u32 = 24; -pub const IPV6_RECVERR: u32 = 25; -pub const IPV6_V6ONLY: u32 = 26; -pub const IPV6_JOIN_ANYCAST: u32 = 27; -pub const IPV6_LEAVE_ANYCAST: u32 = 28; -pub const IPV6_MULTICAST_ALL: u32 = 29; -pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; -pub const IPV6_RECVERR_RFC4884: u32 = 31; -pub const IPV6_PMTUDISC_DONT: u32 = 0; -pub const IPV6_PMTUDISC_WANT: u32 = 1; -pub const IPV6_PMTUDISC_DO: u32 = 2; -pub const IPV6_PMTUDISC_PROBE: u32 = 3; -pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; -pub const IPV6_PMTUDISC_OMIT: u32 = 5; -pub const IPV6_FLOWLABEL_MGR: u32 = 32; -pub const IPV6_FLOWINFO_SEND: u32 = 33; -pub const IPV6_IPSEC_POLICY: u32 = 34; -pub const IPV6_XFRM_POLICY: u32 = 35; -pub const IPV6_HDRINCL: u32 = 36; -pub const IPV6_RECVPKTINFO: u32 = 49; -pub const IPV6_PKTINFO: u32 = 50; -pub const IPV6_RECVHOPLIMIT: u32 = 51; -pub const IPV6_HOPLIMIT: u32 = 52; -pub const IPV6_RECVHOPOPTS: u32 = 53; -pub const IPV6_HOPOPTS: u32 = 54; -pub const IPV6_RTHDRDSTOPTS: u32 = 55; -pub const IPV6_RECVRTHDR: u32 = 56; -pub const IPV6_RTHDR: u32 = 57; -pub const IPV6_RECVDSTOPTS: u32 = 58; -pub const IPV6_DSTOPTS: u32 = 59; -pub const IPV6_RECVPATHMTU: u32 = 60; -pub const IPV6_PATHMTU: u32 = 61; -pub const IPV6_DONTFRAG: u32 = 62; -pub const IPV6_RECVTCLASS: u32 = 66; -pub const IPV6_TCLASS: u32 = 67; -pub const IPV6_AUTOFLOWLABEL: u32 = 70; -pub const IPV6_ADDR_PREFERENCES: u32 = 72; -pub const IPV6_PREFER_SRC_TMP: u32 = 1; -pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; -pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; -pub const IPV6_PREFER_SRC_COA: u32 = 4; -pub const IPV6_PREFER_SRC_HOME: u32 = 1024; -pub const IPV6_PREFER_SRC_CGA: u32 = 8; -pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; -pub const IPV6_MINHOPCOUNT: u32 = 73; -pub const IPV6_ORIGDSTADDR: u32 = 74; -pub const IPV6_RECVORIGDSTADDR: u32 = 74; -pub const IPV6_TRANSPARENT: u32 = 75; -pub const IPV6_UNICAST_IF: u32 = 76; -pub const IPV6_RECVFRAGSIZE: u32 = 77; -pub const IPV6_FREEBIND: u32 = 78; -pub const IPV6_MIN_MTU: u32 = 1280; -pub const IPV6_SRCRT_STRICT: u32 = 1; -pub const IPV6_SRCRT_TYPE_0: u32 = 0; -pub const IPV6_SRCRT_TYPE_2: u32 = 2; -pub const IPV6_SRCRT_TYPE_3: u32 = 3; -pub const IPV6_SRCRT_TYPE_4: u32 = 4; -pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; -pub const ADFS_SUPER_MAGIC: u32 = 44533; -pub const AFFS_SUPER_MAGIC: u32 = 44543; -pub const AFS_SUPER_MAGIC: u32 = 1397113167; -pub const AUTOFS_SUPER_MAGIC: u32 = 391; -pub const CEPH_SUPER_MAGIC: u32 = 12805120; -pub const CODA_SUPER_MAGIC: u32 = 1937076805; -pub const CRAMFS_MAGIC: u32 = 684539205; -pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; -pub const DEBUGFS_MAGIC: u32 = 1684170528; -pub const SECURITYFS_MAGIC: u32 = 1935894131; -pub const SELINUX_MAGIC: u32 = 4185718668; -pub const SMACK_MAGIC: u32 = 1128357203; -pub const RAMFS_MAGIC: u32 = 2240043254; -pub const TMPFS_MAGIC: u32 = 16914836; -pub const HUGETLBFS_MAGIC: u32 = 2508478710; -pub const SQUASHFS_MAGIC: u32 = 1936814952; -pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; -pub const EFS_SUPER_MAGIC: u32 = 4278867; -pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; -pub const EXT2_SUPER_MAGIC: u32 = 61267; -pub const EXT3_SUPER_MAGIC: u32 = 61267; -pub const XENFS_SUPER_MAGIC: u32 = 2881100148; -pub const EXT4_SUPER_MAGIC: u32 = 61267; -pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; -pub const NILFS_SUPER_MAGIC: u32 = 13364; -pub const F2FS_SUPER_MAGIC: u32 = 4076150800; -pub const HPFS_SUPER_MAGIC: u32 = 4187351113; -pub const ISOFS_SUPER_MAGIC: u32 = 38496; -pub const JFFS2_SUPER_MAGIC: u32 = 29366; -pub const XFS_SUPER_MAGIC: u32 = 1481003842; -pub const PSTOREFS_MAGIC: u32 = 1634035564; -pub const EFIVARFS_MAGIC: u32 = 3730735588; -pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; -pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; -pub const FUSE_SUPER_MAGIC: u32 = 1702057286; -pub const MINIX_SUPER_MAGIC: u32 = 4991; -pub const MINIX_SUPER_MAGIC2: u32 = 5007; -pub const MINIX2_SUPER_MAGIC: u32 = 9320; -pub const MINIX2_SUPER_MAGIC2: u32 = 9336; -pub const MINIX3_SUPER_MAGIC: u32 = 19802; -pub const MSDOS_SUPER_MAGIC: u32 = 19780; -pub const EXFAT_SUPER_MAGIC: u32 = 538032816; -pub const NCP_SUPER_MAGIC: u32 = 22092; -pub const NFS_SUPER_MAGIC: u32 = 26985; -pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; -pub const OPENPROM_SUPER_MAGIC: u32 = 40865; -pub const QNX4_SUPER_MAGIC: u32 = 47; -pub const QNX6_SUPER_MAGIC: u32 = 1746473250; -pub const AFS_FS_MAGIC: u32 = 1799439955; -pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; -pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0"; -pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0"; -pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0"; -pub const SMB_SUPER_MAGIC: u32 = 20859; -pub const CIFS_SUPER_MAGIC: u32 = 4283649346; -pub const SMB2_SUPER_MAGIC: u32 = 4266872130; -pub const CGROUP_SUPER_MAGIC: u32 = 2613483; -pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; -pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; -pub const STACK_END_MAGIC: u32 = 1470918301; -pub const TRACEFS_MAGIC: u32 = 1953653091; -pub const V9FS_MAGIC: u32 = 16914839; -pub const BDEVFS_MAGIC: u32 = 1650746742; -pub const DAXFS_MAGIC: u32 = 1684300152; -pub const BINFMTFS_MAGIC: u32 = 1112100429; -pub const DEVPTS_SUPER_MAGIC: u32 = 7377; -pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; -pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; -pub const PIPEFS_MAGIC: u32 = 1346981957; -pub const PROC_SUPER_MAGIC: u32 = 40864; -pub const SOCKFS_MAGIC: u32 = 1397703499; -pub const SYSFS_MAGIC: u32 = 1650812274; -pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; -pub const MTD_INODE_FS_MAGIC: u32 = 288389204; -pub const ANON_INODE_FS_MAGIC: u32 = 151263540; -pub const BTRFS_TEST_MAGIC: u32 = 1936880249; -pub const NSFS_MAGIC: u32 = 1853056627; -pub const BPF_FS_MAGIC: u32 = 3405662737; -pub const AAFS_MAGIC: u32 = 1513908720; -pub const ZONEFS_MAGIC: u32 = 1515144787; -pub const UDF_SUPER_MAGIC: u32 = 352400198; -pub const DMA_BUF_MAGIC: u32 = 1145913666; -pub const DEVMEM_MAGIC: u32 = 1162691661; -pub const SECRETMEM_MAGIC: u32 = 1397048141; -pub const PROT_READ: u32 = 1; -pub const PROT_WRITE: u32 = 2; -pub const PROT_EXEC: u32 = 4; -pub const PROT_SEM: u32 = 8; -pub const PROT_NONE: u32 = 0; -pub const PROT_GROWSDOWN: u32 = 16777216; -pub const PROT_GROWSUP: u32 = 33554432; -pub const MAP_TYPE: u32 = 15; -pub const MAP_FIXED: u32 = 16; -pub const MAP_ANONYMOUS: u32 = 32; -pub const MAP_POPULATE: u32 = 32768; -pub const MAP_NONBLOCK: u32 = 65536; -pub const MAP_STACK: u32 = 131072; -pub const MAP_HUGETLB: u32 = 262144; -pub const MAP_SYNC: u32 = 524288; -pub const MAP_FIXED_NOREPLACE: u32 = 1048576; -pub const MAP_UNINITIALIZED: u32 = 67108864; -pub const MLOCK_ONFAULT: u32 = 1; -pub const MS_ASYNC: u32 = 1; -pub const MS_INVALIDATE: u32 = 2; -pub const MS_SYNC: u32 = 4; -pub const MADV_NORMAL: u32 = 0; -pub const MADV_RANDOM: u32 = 1; -pub const MADV_SEQUENTIAL: u32 = 2; -pub const MADV_WILLNEED: u32 = 3; -pub const MADV_DONTNEED: u32 = 4; -pub const MADV_FREE: u32 = 8; -pub const MADV_REMOVE: u32 = 9; -pub const MADV_DONTFORK: u32 = 10; -pub const MADV_DOFORK: u32 = 11; -pub const MADV_HWPOISON: u32 = 100; -pub const MADV_SOFT_OFFLINE: u32 = 101; -pub const MADV_MERGEABLE: u32 = 12; -pub const MADV_UNMERGEABLE: u32 = 13; -pub const MADV_HUGEPAGE: u32 = 14; -pub const MADV_NOHUGEPAGE: u32 = 15; -pub const MADV_DONTDUMP: u32 = 16; -pub const MADV_DODUMP: u32 = 17; -pub const MADV_WIPEONFORK: u32 = 18; -pub const MADV_KEEPONFORK: u32 = 19; -pub const MADV_COLD: u32 = 20; -pub const MADV_PAGEOUT: u32 = 21; -pub const MADV_POPULATE_READ: u32 = 22; -pub const MADV_POPULATE_WRITE: u32 = 23; -pub const MADV_DONTNEED_LOCKED: u32 = 24; -pub const MADV_COLLAPSE: u32 = 25; -pub const MAP_FILE: u32 = 0; -pub const PKEY_DISABLE_ACCESS: u32 = 1; -pub const PKEY_DISABLE_WRITE: u32 = 2; -pub const PKEY_ACCESS_MASK: u32 = 3; -pub const MAP_GROWSDOWN: u32 = 256; -pub const MAP_DENYWRITE: u32 = 2048; -pub const MAP_EXECUTABLE: u32 = 4096; -pub const MAP_LOCKED: u32 = 8192; -pub const MAP_NORESERVE: u32 = 16384; -pub const MCL_CURRENT: u32 = 1; -pub const MCL_FUTURE: u32 = 2; -pub const MCL_ONFAULT: u32 = 4; -pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; -pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; -pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; -pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; -pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; -pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; -pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; -pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; -pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; -pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; -pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; -pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; -pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; -pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; -pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; -pub const MREMAP_MAYMOVE: u32 = 1; -pub const MREMAP_FIXED: u32 = 2; -pub const MREMAP_DONTUNMAP: u32 = 4; -pub const OVERCOMMIT_GUESS: u32 = 0; -pub const OVERCOMMIT_ALWAYS: u32 = 1; -pub const OVERCOMMIT_NEVER: u32 = 2; -pub const MAP_SHARED: u32 = 1; -pub const MAP_PRIVATE: u32 = 2; -pub const MAP_SHARED_VALIDATE: u32 = 3; -pub const MAP_HUGE_SHIFT: u32 = 26; -pub const MAP_HUGE_MASK: u32 = 63; -pub const MAP_HUGE_16KB: u32 = 939524096; -pub const MAP_HUGE_64KB: u32 = 1073741824; -pub const MAP_HUGE_512KB: u32 = 1275068416; -pub const MAP_HUGE_1MB: u32 = 1342177280; -pub const MAP_HUGE_2MB: u32 = 1409286144; -pub const MAP_HUGE_8MB: u32 = 1543503872; -pub const MAP_HUGE_16MB: u32 = 1610612736; -pub const MAP_HUGE_32MB: u32 = 1677721600; -pub const MAP_HUGE_256MB: u32 = 1879048192; -pub const MAP_HUGE_512MB: u32 = 1946157056; -pub const MAP_HUGE_1GB: u32 = 2013265920; -pub const MAP_HUGE_2GB: u32 = 2080374784; -pub const MAP_HUGE_16GB: u32 = 2281701376; -pub const SIOCGSTAMP_OLD: u32 = 35078; -pub const SIOCGSTAMPNS_OLD: u32 = 35079; -pub const SOL_SOCKET: u32 = 1; -pub const SO_DEBUG: u32 = 1; -pub const SO_REUSEADDR: u32 = 2; -pub const SO_TYPE: u32 = 3; -pub const SO_ERROR: u32 = 4; -pub const SO_DONTROUTE: u32 = 5; -pub const SO_BROADCAST: u32 = 6; -pub const SO_SNDBUF: u32 = 7; -pub const SO_RCVBUF: u32 = 8; -pub const SO_SNDBUFFORCE: u32 = 32; -pub const SO_RCVBUFFORCE: u32 = 33; -pub const SO_KEEPALIVE: u32 = 9; -pub const SO_OOBINLINE: u32 = 10; -pub const SO_NO_CHECK: u32 = 11; -pub const SO_PRIORITY: u32 = 12; -pub const SO_LINGER: u32 = 13; -pub const SO_BSDCOMPAT: u32 = 14; -pub const SO_REUSEPORT: u32 = 15; -pub const SO_PASSCRED: u32 = 16; -pub const SO_PEERCRED: u32 = 17; -pub const SO_RCVLOWAT: u32 = 18; -pub const SO_SNDLOWAT: u32 = 19; -pub const SO_RCVTIMEO_OLD: u32 = 20; -pub const SO_SNDTIMEO_OLD: u32 = 21; -pub const SO_SECURITY_AUTHENTICATION: u32 = 22; -pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; -pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; -pub const SO_BINDTODEVICE: u32 = 25; -pub const SO_ATTACH_FILTER: u32 = 26; -pub const SO_DETACH_FILTER: u32 = 27; -pub const SO_GET_FILTER: u32 = 26; -pub const SO_PEERNAME: u32 = 28; -pub const SO_ACCEPTCONN: u32 = 30; -pub const SO_PEERSEC: u32 = 31; -pub const SO_PASSSEC: u32 = 34; -pub const SO_MARK: u32 = 36; -pub const SO_PROTOCOL: u32 = 38; -pub const SO_DOMAIN: u32 = 39; -pub const SO_RXQ_OVFL: u32 = 40; -pub const SO_WIFI_STATUS: u32 = 41; -pub const SCM_WIFI_STATUS: u32 = 41; -pub const SO_PEEK_OFF: u32 = 42; -pub const SO_NOFCS: u32 = 43; -pub const SO_LOCK_FILTER: u32 = 44; -pub const SO_SELECT_ERR_QUEUE: u32 = 45; -pub const SO_BUSY_POLL: u32 = 46; -pub const SO_MAX_PACING_RATE: u32 = 47; -pub const SO_BPF_EXTENSIONS: u32 = 48; -pub const SO_INCOMING_CPU: u32 = 49; -pub const SO_ATTACH_BPF: u32 = 50; -pub const SO_DETACH_BPF: u32 = 27; -pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; -pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; -pub const SO_CNX_ADVICE: u32 = 53; -pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; -pub const SO_MEMINFO: u32 = 55; -pub const SO_INCOMING_NAPI_ID: u32 = 56; -pub const SO_COOKIE: u32 = 57; -pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; -pub const SO_PEERGROUPS: u32 = 59; -pub const SO_ZEROCOPY: u32 = 60; -pub const SO_TXTIME: u32 = 61; -pub const SCM_TXTIME: u32 = 61; -pub const SO_BINDTOIFINDEX: u32 = 62; -pub const SO_TIMESTAMP_OLD: u32 = 29; -pub const SO_TIMESTAMPNS_OLD: u32 = 35; -pub const SO_TIMESTAMPING_OLD: u32 = 37; -pub const SO_TIMESTAMP_NEW: u32 = 63; -pub const SO_TIMESTAMPNS_NEW: u32 = 64; -pub const SO_TIMESTAMPING_NEW: u32 = 65; -pub const SO_RCVTIMEO_NEW: u32 = 66; -pub const SO_SNDTIMEO_NEW: u32 = 67; -pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; -pub const SO_PREFER_BUSY_POLL: u32 = 69; -pub const SO_BUSY_POLL_BUDGET: u32 = 70; -pub const SO_NETNS_COOKIE: u32 = 71; -pub const SO_BUF_LOCK: u32 = 72; -pub const SO_RESERVE_MEM: u32 = 73; -pub const SO_TXREHASH: u32 = 74; -pub const SO_RCVMARK: u32 = 75; -pub const SYS_SOCKET: u32 = 1; -pub const SYS_BIND: u32 = 2; -pub const SYS_CONNECT: u32 = 3; -pub const SYS_LISTEN: u32 = 4; -pub const SYS_ACCEPT: u32 = 5; -pub const SYS_GETSOCKNAME: u32 = 6; -pub const SYS_GETPEERNAME: u32 = 7; -pub const SYS_SOCKETPAIR: u32 = 8; -pub const SYS_SEND: u32 = 9; -pub const SYS_RECV: u32 = 10; -pub const SYS_SENDTO: u32 = 11; -pub const SYS_RECVFROM: u32 = 12; -pub const SYS_SHUTDOWN: u32 = 13; -pub const SYS_SETSOCKOPT: u32 = 14; -pub const SYS_GETSOCKOPT: u32 = 15; -pub const SYS_SENDMSG: u32 = 16; -pub const SYS_RECVMSG: u32 = 17; -pub const SYS_ACCEPT4: u32 = 18; -pub const SYS_RECVMMSG: u32 = 19; -pub const SYS_SENDMMSG: u32 = 20; -pub const __SO_ACCEPTCON: u32 = 65536; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const POLLWRNORM: u32 = 256; -pub const POLLWRBAND: u32 = 512; -pub const POLLMSG: u32 = 1024; -pub const POLLREMOVE: u32 = 4096; -pub const POLLRDHUP: u32 = 8192; -pub const PR_SET_PDEATHSIG: u32 = 1; -pub const PR_GET_PDEATHSIG: u32 = 2; -pub const PR_GET_DUMPABLE: u32 = 3; -pub const PR_SET_DUMPABLE: u32 = 4; -pub const PR_GET_UNALIGN: u32 = 5; -pub const PR_SET_UNALIGN: u32 = 6; -pub const PR_UNALIGN_NOPRINT: u32 = 1; -pub const PR_UNALIGN_SIGBUS: u32 = 2; -pub const PR_GET_KEEPCAPS: u32 = 7; -pub const PR_SET_KEEPCAPS: u32 = 8; -pub const PR_GET_FPEMU: u32 = 9; -pub const PR_SET_FPEMU: u32 = 10; -pub const PR_FPEMU_NOPRINT: u32 = 1; -pub const PR_FPEMU_SIGFPE: u32 = 2; -pub const PR_GET_FPEXC: u32 = 11; -pub const PR_SET_FPEXC: u32 = 12; -pub const PR_FP_EXC_SW_ENABLE: u32 = 128; -pub const PR_FP_EXC_DIV: u32 = 65536; -pub const PR_FP_EXC_OVF: u32 = 131072; -pub const PR_FP_EXC_UND: u32 = 262144; -pub const PR_FP_EXC_RES: u32 = 524288; -pub const PR_FP_EXC_INV: u32 = 1048576; -pub const PR_FP_EXC_DISABLED: u32 = 0; -pub const PR_FP_EXC_NONRECOV: u32 = 1; -pub const PR_FP_EXC_ASYNC: u32 = 2; -pub const PR_FP_EXC_PRECISE: u32 = 3; -pub const PR_GET_TIMING: u32 = 13; -pub const PR_SET_TIMING: u32 = 14; -pub const PR_TIMING_STATISTICAL: u32 = 0; -pub const PR_TIMING_TIMESTAMP: u32 = 1; -pub const PR_SET_NAME: u32 = 15; -pub const PR_GET_NAME: u32 = 16; -pub const PR_GET_ENDIAN: u32 = 19; -pub const PR_SET_ENDIAN: u32 = 20; -pub const PR_ENDIAN_BIG: u32 = 0; -pub const PR_ENDIAN_LITTLE: u32 = 1; -pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; -pub const PR_GET_SECCOMP: u32 = 21; -pub const PR_SET_SECCOMP: u32 = 22; -pub const PR_CAPBSET_READ: u32 = 23; -pub const PR_CAPBSET_DROP: u32 = 24; -pub const PR_GET_TSC: u32 = 25; -pub const PR_SET_TSC: u32 = 26; -pub const PR_TSC_ENABLE: u32 = 1; -pub const PR_TSC_SIGSEGV: u32 = 2; -pub const PR_GET_SECUREBITS: u32 = 27; -pub const PR_SET_SECUREBITS: u32 = 28; -pub const PR_SET_TIMERSLACK: u32 = 29; -pub const PR_GET_TIMERSLACK: u32 = 30; -pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; -pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; -pub const PR_MCE_KILL: u32 = 33; -pub const PR_MCE_KILL_CLEAR: u32 = 0; -pub const PR_MCE_KILL_SET: u32 = 1; -pub const PR_MCE_KILL_LATE: u32 = 0; -pub const PR_MCE_KILL_EARLY: u32 = 1; -pub const PR_MCE_KILL_DEFAULT: u32 = 2; -pub const PR_MCE_KILL_GET: u32 = 34; -pub const PR_SET_MM: u32 = 35; -pub const PR_SET_MM_START_CODE: u32 = 1; -pub const PR_SET_MM_END_CODE: u32 = 2; -pub const PR_SET_MM_START_DATA: u32 = 3; -pub const PR_SET_MM_END_DATA: u32 = 4; -pub const PR_SET_MM_START_STACK: u32 = 5; -pub const PR_SET_MM_START_BRK: u32 = 6; -pub const PR_SET_MM_BRK: u32 = 7; -pub const PR_SET_MM_ARG_START: u32 = 8; -pub const PR_SET_MM_ARG_END: u32 = 9; -pub const PR_SET_MM_ENV_START: u32 = 10; -pub const PR_SET_MM_ENV_END: u32 = 11; -pub const PR_SET_MM_AUXV: u32 = 12; -pub const PR_SET_MM_EXE_FILE: u32 = 13; -pub const PR_SET_MM_MAP: u32 = 14; -pub const PR_SET_MM_MAP_SIZE: u32 = 15; -pub const PR_SET_PTRACER: u32 = 1499557217; -pub const PR_SET_CHILD_SUBREAPER: u32 = 36; -pub const PR_GET_CHILD_SUBREAPER: u32 = 37; -pub const PR_SET_NO_NEW_PRIVS: u32 = 38; -pub const PR_GET_NO_NEW_PRIVS: u32 = 39; -pub const PR_GET_TID_ADDRESS: u32 = 40; -pub const PR_SET_THP_DISABLE: u32 = 41; -pub const PR_GET_THP_DISABLE: u32 = 42; -pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; -pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; -pub const PR_SET_FP_MODE: u32 = 45; -pub const PR_GET_FP_MODE: u32 = 46; -pub const PR_FP_MODE_FR: u32 = 1; -pub const PR_FP_MODE_FRE: u32 = 2; -pub const PR_CAP_AMBIENT: u32 = 47; -pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; -pub const PR_CAP_AMBIENT_RAISE: u32 = 2; -pub const PR_CAP_AMBIENT_LOWER: u32 = 3; -pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; -pub const PR_SVE_SET_VL: u32 = 50; -pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SVE_GET_VL: u32 = 51; -pub const PR_SVE_VL_LEN_MASK: u32 = 65535; -pub const PR_SVE_VL_INHERIT: u32 = 131072; -pub const PR_GET_SPECULATION_CTRL: u32 = 52; -pub const PR_SET_SPECULATION_CTRL: u32 = 53; -pub const PR_SPEC_STORE_BYPASS: u32 = 0; -pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; -pub const PR_SPEC_L1D_FLUSH: u32 = 2; -pub const PR_SPEC_NOT_AFFECTED: u32 = 0; -pub const PR_SPEC_PRCTL: u32 = 1; -pub const PR_SPEC_ENABLE: u32 = 2; -pub const PR_SPEC_DISABLE: u32 = 4; -pub const PR_SPEC_FORCE_DISABLE: u32 = 8; -pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; -pub const PR_PAC_RESET_KEYS: u32 = 54; -pub const PR_PAC_APIAKEY: u32 = 1; -pub const PR_PAC_APIBKEY: u32 = 2; -pub const PR_PAC_APDAKEY: u32 = 4; -pub const PR_PAC_APDBKEY: u32 = 8; -pub const PR_PAC_APGAKEY: u32 = 16; -pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; -pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; -pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; -pub const PR_MTE_TCF_NONE: u32 = 0; -pub const PR_MTE_TCF_SYNC: u32 = 2; -pub const PR_MTE_TCF_ASYNC: u32 = 4; -pub const PR_MTE_TCF_MASK: u32 = 6; -pub const PR_MTE_TAG_SHIFT: u32 = 3; -pub const PR_MTE_TAG_MASK: u32 = 524280; -pub const PR_MTE_TCF_SHIFT: u32 = 1; -pub const PR_SET_IO_FLUSHER: u32 = 57; -pub const PR_GET_IO_FLUSHER: u32 = 58; -pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; -pub const PR_SYS_DISPATCH_OFF: u32 = 0; -pub const PR_SYS_DISPATCH_ON: u32 = 1; -pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; -pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; -pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; -pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; -pub const PR_SCHED_CORE: u32 = 62; -pub const PR_SCHED_CORE_GET: u32 = 0; -pub const PR_SCHED_CORE_CREATE: u32 = 1; -pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; -pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; -pub const PR_SCHED_CORE_MAX: u32 = 4; -pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; -pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; -pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; -pub const PR_SME_SET_VL: u32 = 63; -pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SME_GET_VL: u32 = 64; -pub const PR_SME_VL_LEN_MASK: u32 = 65535; -pub const PR_SME_VL_INHERIT: u32 = 131072; -pub const PR_SET_MDWE: u32 = 65; -pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; -pub const PR_GET_MDWE: u32 = 66; -pub const PR_SET_VMA: u32 = 1398164801; -pub const PR_SET_VMA_ANON_NAME: u32 = 0; -pub const GRND_NONBLOCK: u32 = 1; -pub const GRND_RANDOM: u32 = 2; -pub const GRND_INSECURE: u32 = 4; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -pub const CLOCK_REALTIME: u32 = 0; -pub const CLOCK_MONOTONIC: u32 = 1; -pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; -pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; -pub const CLOCK_MONOTONIC_RAW: u32 = 4; -pub const CLOCK_REALTIME_COARSE: u32 = 5; -pub const CLOCK_MONOTONIC_COARSE: u32 = 6; -pub const CLOCK_BOOTTIME: u32 = 7; -pub const CLOCK_REALTIME_ALARM: u32 = 8; -pub const CLOCK_BOOTTIME_ALARM: u32 = 9; -pub const CLOCK_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const RUSAGE_SELF: u32 = 0; -pub const RUSAGE_CHILDREN: i32 = -1; -pub const RUSAGE_BOTH: i32 = -2; -pub const RUSAGE_THREAD: u32 = 1; -pub const RLIM64_INFINITY: i32 = -1; -pub const PRIO_MIN: i32 = -20; -pub const PRIO_MAX: u32 = 20; -pub const PRIO_PROCESS: u32 = 0; -pub const PRIO_PGRP: u32 = 1; -pub const PRIO_USER: u32 = 2; -pub const _STK_LIM: u32 = 8388608; -pub const MLOCK_LIMIT: u32 = 8388608; -pub const RLIMIT_CPU: u32 = 0; -pub const RLIMIT_FSIZE: u32 = 1; -pub const RLIMIT_DATA: u32 = 2; -pub const RLIMIT_STACK: u32 = 3; -pub const RLIMIT_CORE: u32 = 4; -pub const RLIMIT_RSS: u32 = 5; -pub const RLIMIT_NPROC: u32 = 6; -pub const RLIMIT_NOFILE: u32 = 7; -pub const RLIMIT_MEMLOCK: u32 = 8; -pub const RLIMIT_AS: u32 = 9; -pub const RLIMIT_LOCKS: u32 = 10; -pub const RLIMIT_SIGPENDING: u32 = 11; -pub const RLIMIT_MSGQUEUE: u32 = 12; -pub const RLIMIT_NICE: u32 = 13; -pub const RLIMIT_RTPRIO: u32 = 14; -pub const RLIMIT_RTTIME: u32 = 15; -pub const RLIM_NLIMITS: u32 = 16; -pub const RLIM_INFINITY: i32 = -1; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const _NSIG: u32 = 64; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGBUS: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGUSR1: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGUSR2: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGSTKFLT: u32 = 16; -pub const SIGCHLD: u32 = 17; -pub const SIGCONT: u32 = 18; -pub const SIGSTOP: u32 = 19; -pub const SIGTSTP: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGURG: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGIO: u32 = 29; -pub const SIGPOLL: u32 = 29; -pub const SIGPWR: u32 = 30; -pub const SIGSYS: u32 = 31; -pub const SIGUNUSED: u32 = 31; -pub const SIGRTMIN: u32 = 32; -pub const SIGRTMAX: u32 = 64; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; -pub const SA_NOCLDSTOP: u32 = 1; -pub const SA_NOCLDWAIT: u32 = 2; -pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; -pub const SA_ONSTACK: u32 = 134217728; -pub const SA_RESTART: u32 = 268435456; -pub const SA_NODEFER: u32 = 1073741824; -pub const SA_RESETHAND: u32 = 2147483648; -pub const SA_NOMASK: u32 = 1073741824; -pub const SA_ONESHOT: u32 = 2147483648; -pub const SIG_BLOCK: u32 = 0; -pub const SIG_UNBLOCK: u32 = 1; -pub const SIG_SETMASK: u32 = 2; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; -pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const S_IFMT: u32 = 61440; -pub const S_IFSOCK: u32 = 49152; -pub const S_IFLNK: u32 = 40960; -pub const S_IFREG: u32 = 32768; -pub const S_IFBLK: u32 = 24576; -pub const S_IFDIR: u32 = 16384; -pub const S_IFCHR: u32 = 8192; -pub const S_IFIFO: u32 = 4096; -pub const S_ISUID: u32 = 2048; -pub const S_ISGID: u32 = 1024; -pub const S_ISVTX: u32 = 512; -pub const S_IRWXU: u32 = 448; -pub const S_IRUSR: u32 = 256; -pub const S_IWUSR: u32 = 128; -pub const S_IXUSR: u32 = 64; -pub const S_IRWXG: u32 = 56; -pub const S_IRGRP: u32 = 32; -pub const S_IWGRP: u32 = 16; -pub const S_IXGRP: u32 = 8; -pub const S_IRWXO: u32 = 7; -pub const S_IROTH: u32 = 4; -pub const S_IWOTH: u32 = 2; -pub const S_IXOTH: u32 = 1; -pub const STATX_TYPE: u32 = 1; -pub const STATX_MODE: u32 = 2; -pub const STATX_NLINK: u32 = 4; -pub const STATX_UID: u32 = 8; -pub const STATX_GID: u32 = 16; -pub const STATX_ATIME: u32 = 32; -pub const STATX_MTIME: u32 = 64; -pub const STATX_CTIME: u32 = 128; -pub const STATX_INO: u32 = 256; -pub const STATX_SIZE: u32 = 512; -pub const STATX_BLOCKS: u32 = 1024; -pub const STATX_BASIC_STATS: u32 = 2047; -pub const STATX_BTIME: u32 = 2048; -pub const STATX_MNT_ID: u32 = 4096; -pub const STATX_DIOALIGN: u32 = 8192; -pub const STATX__RESERVED: u32 = 2147483648; -pub const STATX_ALL: u32 = 4095; -pub const STATX_ATTR_COMPRESSED: u32 = 4; -pub const STATX_ATTR_IMMUTABLE: u32 = 16; -pub const STATX_ATTR_APPEND: u32 = 32; -pub const STATX_ATTR_NODUMP: u32 = 64; -pub const STATX_ATTR_ENCRYPTED: u32 = 2048; -pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; -pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; -pub const STATX_ATTR_VERITY: u32 = 1048576; -pub const STATX_ATTR_DAX: u32 = 2097152; -pub const SI_LOAD_SHIFT: u32 = 16; -pub const TCP_MSS_DEFAULT: u32 = 536; -pub const TCP_MSS_DESIRED: u32 = 1220; -pub const TCP_NODELAY: u32 = 1; -pub const TCP_MAXSEG: u32 = 2; -pub const TCP_CORK: u32 = 3; -pub const TCP_KEEPIDLE: u32 = 4; -pub const TCP_KEEPINTVL: u32 = 5; -pub const TCP_KEEPCNT: u32 = 6; -pub const TCP_SYNCNT: u32 = 7; -pub const TCP_LINGER2: u32 = 8; -pub const TCP_DEFER_ACCEPT: u32 = 9; -pub const TCP_WINDOW_CLAMP: u32 = 10; -pub const TCP_INFO: u32 = 11; -pub const TCP_QUICKACK: u32 = 12; -pub const TCP_CONGESTION: u32 = 13; -pub const TCP_MD5SIG: u32 = 14; -pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; -pub const TCP_THIN_DUPACK: u32 = 17; -pub const TCP_USER_TIMEOUT: u32 = 18; -pub const TCP_REPAIR: u32 = 19; -pub const TCP_REPAIR_QUEUE: u32 = 20; -pub const TCP_QUEUE_SEQ: u32 = 21; -pub const TCP_REPAIR_OPTIONS: u32 = 22; -pub const TCP_FASTOPEN: u32 = 23; -pub const TCP_TIMESTAMP: u32 = 24; -pub const TCP_NOTSENT_LOWAT: u32 = 25; -pub const TCP_CC_INFO: u32 = 26; -pub const TCP_SAVE_SYN: u32 = 27; -pub const TCP_SAVED_SYN: u32 = 28; -pub const TCP_REPAIR_WINDOW: u32 = 29; -pub const TCP_FASTOPEN_CONNECT: u32 = 30; -pub const TCP_ULP: u32 = 31; -pub const TCP_MD5SIG_EXT: u32 = 32; -pub const TCP_FASTOPEN_KEY: u32 = 33; -pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; -pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; -pub const TCP_INQ: u32 = 36; -pub const TCP_CM_INQ: u32 = 36; -pub const TCP_TX_DELAY: u32 = 37; -pub const TCP_REPAIR_ON: u32 = 1; -pub const TCP_REPAIR_OFF: u32 = 0; -pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; -pub const TCPI_OPT_TIMESTAMPS: u32 = 1; -pub const TCPI_OPT_SACK: u32 = 2; -pub const TCPI_OPT_WSCALE: u32 = 4; -pub const TCPI_OPT_ECN: u32 = 8; -pub const TCPI_OPT_ECN_SEEN: u32 = 16; -pub const TCPI_OPT_SYN_DATA: u32 = 32; -pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; -pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; -pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; -pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; -pub const IGNBRK: u32 = 1; -pub const BRKINT: u32 = 2; -pub const IGNPAR: u32 = 4; -pub const PARMRK: u32 = 8; -pub const INPCK: u32 = 16; -pub const ISTRIP: u32 = 32; -pub const INLCR: u32 = 64; -pub const IGNCR: u32 = 128; -pub const ICRNL: u32 = 256; -pub const IXANY: u32 = 2048; -pub const OPOST: u32 = 1; -pub const OCRNL: u32 = 8; -pub const ONOCR: u32 = 16; -pub const ONLRET: u32 = 32; -pub const OFILL: u32 = 64; -pub const OFDEL: u32 = 128; -pub const B0: u32 = 0; -pub const B50: u32 = 1; -pub const B75: u32 = 2; -pub const B110: u32 = 3; -pub const B134: u32 = 4; -pub const B150: u32 = 5; -pub const B200: u32 = 6; -pub const B300: u32 = 7; -pub const B600: u32 = 8; -pub const B1200: u32 = 9; -pub const B1800: u32 = 10; -pub const B2400: u32 = 11; -pub const B4800: u32 = 12; -pub const B9600: u32 = 13; -pub const B19200: u32 = 14; -pub const B38400: u32 = 15; -pub const EXTA: u32 = 14; -pub const EXTB: u32 = 15; -pub const ADDRB: u32 = 536870912; -pub const CMSPAR: u32 = 1073741824; -pub const CRTSCTS: u32 = 2147483648; -pub const IBSHIFT: u32 = 16; -pub const TCOOFF: u32 = 0; -pub const TCOON: u32 = 1; -pub const TCIOFF: u32 = 2; -pub const TCION: u32 = 3; -pub const TCIFLUSH: u32 = 0; -pub const TCOFLUSH: u32 = 1; -pub const TCIOFLUSH: u32 = 2; -pub const NCCS: u32 = 19; -pub const VINTR: u32 = 0; -pub const VQUIT: u32 = 1; -pub const VERASE: u32 = 2; -pub const VKILL: u32 = 3; -pub const VEOF: u32 = 4; -pub const VTIME: u32 = 5; -pub const VMIN: u32 = 6; -pub const VSWTC: u32 = 7; -pub const VSTART: u32 = 8; -pub const VSTOP: u32 = 9; -pub const VSUSP: u32 = 10; -pub const VEOL: u32 = 11; -pub const VREPRINT: u32 = 12; -pub const VDISCARD: u32 = 13; -pub const VWERASE: u32 = 14; -pub const VLNEXT: u32 = 15; -pub const VEOL2: u32 = 16; -pub const IUCLC: u32 = 512; -pub const IXON: u32 = 1024; -pub const IXOFF: u32 = 4096; -pub const IMAXBEL: u32 = 8192; -pub const IUTF8: u32 = 16384; -pub const OLCUC: u32 = 2; -pub const ONLCR: u32 = 4; -pub const NLDLY: u32 = 256; -pub const NL0: u32 = 0; -pub const NL1: u32 = 256; -pub const CRDLY: u32 = 1536; -pub const CR0: u32 = 0; -pub const CR1: u32 = 512; -pub const CR2: u32 = 1024; -pub const CR3: u32 = 1536; -pub const TABDLY: u32 = 6144; -pub const TAB0: u32 = 0; -pub const TAB1: u32 = 2048; -pub const TAB2: u32 = 4096; -pub const TAB3: u32 = 6144; -pub const XTABS: u32 = 6144; -pub const BSDLY: u32 = 8192; -pub const BS0: u32 = 0; -pub const BS1: u32 = 8192; -pub const VTDLY: u32 = 16384; -pub const VT0: u32 = 0; -pub const VT1: u32 = 16384; -pub const FFDLY: u32 = 32768; -pub const FF0: u32 = 0; -pub const FF1: u32 = 32768; -pub const CBAUD: u32 = 4111; -pub const CSIZE: u32 = 48; -pub const CS5: u32 = 0; -pub const CS6: u32 = 16; -pub const CS7: u32 = 32; -pub const CS8: u32 = 48; -pub const CSTOPB: u32 = 64; -pub const CREAD: u32 = 128; -pub const PARENB: u32 = 256; -pub const PARODD: u32 = 512; -pub const HUPCL: u32 = 1024; -pub const CLOCAL: u32 = 2048; -pub const CBAUDEX: u32 = 4096; -pub const BOTHER: u32 = 4096; -pub const B57600: u32 = 4097; -pub const B115200: u32 = 4098; -pub const B230400: u32 = 4099; -pub const B460800: u32 = 4100; -pub const B500000: u32 = 4101; -pub const B576000: u32 = 4102; -pub const B921600: u32 = 4103; -pub const B1000000: u32 = 4104; -pub const B1152000: u32 = 4105; -pub const B1500000: u32 = 4106; -pub const B2000000: u32 = 4107; -pub const B2500000: u32 = 4108; -pub const B3000000: u32 = 4109; -pub const B3500000: u32 = 4110; -pub const B4000000: u32 = 4111; -pub const CIBAUD: u32 = 269418496; -pub const ISIG: u32 = 1; -pub const ICANON: u32 = 2; -pub const XCASE: u32 = 4; -pub const ECHO: u32 = 8; -pub const ECHOE: u32 = 16; -pub const ECHOK: u32 = 32; -pub const ECHONL: u32 = 64; -pub const NOFLSH: u32 = 128; -pub const TOSTOP: u32 = 256; -pub const ECHOCTL: u32 = 512; -pub const ECHOPRT: u32 = 1024; -pub const ECHOKE: u32 = 2048; -pub const FLUSHO: u32 = 4096; -pub const PENDIN: u32 = 16384; -pub const IEXTEN: u32 = 32768; -pub const EXTPROC: u32 = 65536; -pub const TCSANOW: u32 = 0; -pub const TCSADRAIN: u32 = 1; -pub const TCSAFLUSH: u32 = 2; -pub const TIOCPKT_DATA: u32 = 0; -pub const TIOCPKT_FLUSHREAD: u32 = 1; -pub const TIOCPKT_FLUSHWRITE: u32 = 2; -pub const TIOCPKT_STOP: u32 = 4; -pub const TIOCPKT_START: u32 = 8; -pub const TIOCPKT_NOSTOP: u32 = 16; -pub const TIOCPKT_DOSTOP: u32 = 32; -pub const TIOCPKT_IOCTL: u32 = 64; -pub const TIOCSER_TEMT: u32 = 1; -pub const NCC: u32 = 8; -pub const TIOCM_LE: u32 = 1; -pub const TIOCM_DTR: u32 = 2; -pub const TIOCM_RTS: u32 = 4; -pub const TIOCM_ST: u32 = 8; -pub const TIOCM_SR: u32 = 16; -pub const TIOCM_CTS: u32 = 32; -pub const TIOCM_CAR: u32 = 64; -pub const TIOCM_RNG: u32 = 128; -pub const TIOCM_DSR: u32 = 256; -pub const TIOCM_CD: u32 = 64; -pub const TIOCM_RI: u32 = 128; -pub const TIOCM_OUT1: u32 = 8192; -pub const TIOCM_OUT2: u32 = 16384; -pub const TIOCM_LOOP: u32 = 32768; -pub const UIO_FASTIOV: u32 = 8; -pub const UIO_MAXIOV: u32 = 1024; -pub const UNIX_PATH_MAX: u32 = 108; -pub const __NR_io_setup: u32 = 0; -pub const __NR_io_destroy: u32 = 1; -pub const __NR_io_submit: u32 = 2; -pub const __NR_io_cancel: u32 = 3; -pub const __NR_setxattr: u32 = 5; -pub const __NR_lsetxattr: u32 = 6; -pub const __NR_fsetxattr: u32 = 7; -pub const __NR_getxattr: u32 = 8; -pub const __NR_lgetxattr: u32 = 9; -pub const __NR_fgetxattr: u32 = 10; -pub const __NR_listxattr: u32 = 11; -pub const __NR_llistxattr: u32 = 12; -pub const __NR_flistxattr: u32 = 13; -pub const __NR_removexattr: u32 = 14; -pub const __NR_lremovexattr: u32 = 15; -pub const __NR_fremovexattr: u32 = 16; -pub const __NR_getcwd: u32 = 17; -pub const __NR_lookup_dcookie: u32 = 18; -pub const __NR_eventfd2: u32 = 19; -pub const __NR_epoll_create1: u32 = 20; -pub const __NR_epoll_ctl: u32 = 21; -pub const __NR_epoll_pwait: u32 = 22; -pub const __NR_dup: u32 = 23; -pub const __NR_dup3: u32 = 24; -pub const __NR3264_fcntl: u32 = 25; -pub const __NR_inotify_init1: u32 = 26; -pub const __NR_inotify_add_watch: u32 = 27; -pub const __NR_inotify_rm_watch: u32 = 28; -pub const __NR_ioctl: u32 = 29; -pub const __NR_ioprio_set: u32 = 30; -pub const __NR_ioprio_get: u32 = 31; -pub const __NR_flock: u32 = 32; -pub const __NR_mknodat: u32 = 33; -pub const __NR_mkdirat: u32 = 34; -pub const __NR_unlinkat: u32 = 35; -pub const __NR_symlinkat: u32 = 36; -pub const __NR_linkat: u32 = 37; -pub const __NR_umount2: u32 = 39; -pub const __NR_mount: u32 = 40; -pub const __NR_pivot_root: u32 = 41; -pub const __NR_nfsservctl: u32 = 42; -pub const __NR3264_statfs: u32 = 43; -pub const __NR3264_fstatfs: u32 = 44; -pub const __NR3264_truncate: u32 = 45; -pub const __NR3264_ftruncate: u32 = 46; -pub const __NR_fallocate: u32 = 47; -pub const __NR_faccessat: u32 = 48; -pub const __NR_chdir: u32 = 49; -pub const __NR_fchdir: u32 = 50; -pub const __NR_chroot: u32 = 51; -pub const __NR_fchmod: u32 = 52; -pub const __NR_fchmodat: u32 = 53; -pub const __NR_fchownat: u32 = 54; -pub const __NR_fchown: u32 = 55; -pub const __NR_openat: u32 = 56; -pub const __NR_close: u32 = 57; -pub const __NR_vhangup: u32 = 58; -pub const __NR_pipe2: u32 = 59; -pub const __NR_quotactl: u32 = 60; -pub const __NR_getdents64: u32 = 61; -pub const __NR3264_lseek: u32 = 62; -pub const __NR_read: u32 = 63; -pub const __NR_write: u32 = 64; -pub const __NR_readv: u32 = 65; -pub const __NR_writev: u32 = 66; -pub const __NR_pread64: u32 = 67; -pub const __NR_pwrite64: u32 = 68; -pub const __NR_preadv: u32 = 69; -pub const __NR_pwritev: u32 = 70; -pub const __NR3264_sendfile: u32 = 71; -pub const __NR_signalfd4: u32 = 74; -pub const __NR_vmsplice: u32 = 75; -pub const __NR_splice: u32 = 76; -pub const __NR_tee: u32 = 77; -pub const __NR_readlinkat: u32 = 78; -pub const __NR_sync: u32 = 81; -pub const __NR_fsync: u32 = 82; -pub const __NR_fdatasync: u32 = 83; -pub const __NR_sync_file_range: u32 = 84; -pub const __NR_timerfd_create: u32 = 85; -pub const __NR_acct: u32 = 89; -pub const __NR_capget: u32 = 90; -pub const __NR_capset: u32 = 91; -pub const __NR_personality: u32 = 92; -pub const __NR_exit: u32 = 93; -pub const __NR_exit_group: u32 = 94; -pub const __NR_waitid: u32 = 95; -pub const __NR_set_tid_address: u32 = 96; -pub const __NR_unshare: u32 = 97; -pub const __NR_set_robust_list: u32 = 99; -pub const __NR_get_robust_list: u32 = 100; -pub const __NR_getitimer: u32 = 102; -pub const __NR_setitimer: u32 = 103; -pub const __NR_kexec_load: u32 = 104; -pub const __NR_init_module: u32 = 105; -pub const __NR_delete_module: u32 = 106; -pub const __NR_timer_create: u32 = 107; -pub const __NR_timer_getoverrun: u32 = 109; -pub const __NR_timer_delete: u32 = 111; -pub const __NR_syslog: u32 = 116; -pub const __NR_ptrace: u32 = 117; -pub const __NR_sched_setparam: u32 = 118; -pub const __NR_sched_setscheduler: u32 = 119; -pub const __NR_sched_getscheduler: u32 = 120; -pub const __NR_sched_getparam: u32 = 121; -pub const __NR_sched_setaffinity: u32 = 122; -pub const __NR_sched_getaffinity: u32 = 123; -pub const __NR_sched_yield: u32 = 124; -pub const __NR_sched_get_priority_max: u32 = 125; -pub const __NR_sched_get_priority_min: u32 = 126; -pub const __NR_restart_syscall: u32 = 128; -pub const __NR_kill: u32 = 129; -pub const __NR_tkill: u32 = 130; -pub const __NR_tgkill: u32 = 131; -pub const __NR_sigaltstack: u32 = 132; -pub const __NR_rt_sigsuspend: u32 = 133; -pub const __NR_rt_sigaction: u32 = 134; -pub const __NR_rt_sigprocmask: u32 = 135; -pub const __NR_rt_sigpending: u32 = 136; -pub const __NR_rt_sigqueueinfo: u32 = 138; -pub const __NR_rt_sigreturn: u32 = 139; -pub const __NR_setpriority: u32 = 140; -pub const __NR_getpriority: u32 = 141; -pub const __NR_reboot: u32 = 142; -pub const __NR_setregid: u32 = 143; -pub const __NR_setgid: u32 = 144; -pub const __NR_setreuid: u32 = 145; -pub const __NR_setuid: u32 = 146; -pub const __NR_setresuid: u32 = 147; -pub const __NR_getresuid: u32 = 148; -pub const __NR_setresgid: u32 = 149; -pub const __NR_getresgid: u32 = 150; -pub const __NR_setfsuid: u32 = 151; -pub const __NR_setfsgid: u32 = 152; -pub const __NR_times: u32 = 153; -pub const __NR_setpgid: u32 = 154; -pub const __NR_getpgid: u32 = 155; -pub const __NR_getsid: u32 = 156; -pub const __NR_setsid: u32 = 157; -pub const __NR_getgroups: u32 = 158; -pub const __NR_setgroups: u32 = 159; -pub const __NR_uname: u32 = 160; -pub const __NR_sethostname: u32 = 161; -pub const __NR_setdomainname: u32 = 162; -pub const __NR_getrusage: u32 = 165; -pub const __NR_umask: u32 = 166; -pub const __NR_prctl: u32 = 167; -pub const __NR_getcpu: u32 = 168; -pub const __NR_getpid: u32 = 172; -pub const __NR_getppid: u32 = 173; -pub const __NR_getuid: u32 = 174; -pub const __NR_geteuid: u32 = 175; -pub const __NR_getgid: u32 = 176; -pub const __NR_getegid: u32 = 177; -pub const __NR_gettid: u32 = 178; -pub const __NR_sysinfo: u32 = 179; -pub const __NR_mq_open: u32 = 180; -pub const __NR_mq_unlink: u32 = 181; -pub const __NR_mq_notify: u32 = 184; -pub const __NR_mq_getsetattr: u32 = 185; -pub const __NR_msgget: u32 = 186; -pub const __NR_msgctl: u32 = 187; -pub const __NR_msgrcv: u32 = 188; -pub const __NR_msgsnd: u32 = 189; -pub const __NR_semget: u32 = 190; -pub const __NR_semctl: u32 = 191; -pub const __NR_semop: u32 = 193; -pub const __NR_shmget: u32 = 194; -pub const __NR_shmctl: u32 = 195; -pub const __NR_shmat: u32 = 196; -pub const __NR_shmdt: u32 = 197; -pub const __NR_socket: u32 = 198; -pub const __NR_socketpair: u32 = 199; -pub const __NR_bind: u32 = 200; -pub const __NR_listen: u32 = 201; -pub const __NR_accept: u32 = 202; -pub const __NR_connect: u32 = 203; -pub const __NR_getsockname: u32 = 204; -pub const __NR_getpeername: u32 = 205; -pub const __NR_sendto: u32 = 206; -pub const __NR_recvfrom: u32 = 207; -pub const __NR_setsockopt: u32 = 208; -pub const __NR_getsockopt: u32 = 209; -pub const __NR_shutdown: u32 = 210; -pub const __NR_sendmsg: u32 = 211; -pub const __NR_recvmsg: u32 = 212; -pub const __NR_readahead: u32 = 213; -pub const __NR_brk: u32 = 214; -pub const __NR_munmap: u32 = 215; -pub const __NR_mremap: u32 = 216; -pub const __NR_add_key: u32 = 217; -pub const __NR_request_key: u32 = 218; -pub const __NR_keyctl: u32 = 219; -pub const __NR_clone: u32 = 220; -pub const __NR_execve: u32 = 221; -pub const __NR3264_mmap: u32 = 222; -pub const __NR3264_fadvise64: u32 = 223; -pub const __NR_swapon: u32 = 224; -pub const __NR_swapoff: u32 = 225; -pub const __NR_mprotect: u32 = 226; -pub const __NR_msync: u32 = 227; -pub const __NR_mlock: u32 = 228; -pub const __NR_munlock: u32 = 229; -pub const __NR_mlockall: u32 = 230; -pub const __NR_munlockall: u32 = 231; -pub const __NR_mincore: u32 = 232; -pub const __NR_madvise: u32 = 233; -pub const __NR_remap_file_pages: u32 = 234; -pub const __NR_mbind: u32 = 235; -pub const __NR_get_mempolicy: u32 = 236; -pub const __NR_set_mempolicy: u32 = 237; -pub const __NR_migrate_pages: u32 = 238; -pub const __NR_move_pages: u32 = 239; -pub const __NR_rt_tgsigqueueinfo: u32 = 240; -pub const __NR_perf_event_open: u32 = 241; -pub const __NR_accept4: u32 = 242; -pub const __NR_arch_specific_syscall: u32 = 244; -pub const __NR_prlimit64: u32 = 261; -pub const __NR_fanotify_init: u32 = 262; -pub const __NR_fanotify_mark: u32 = 263; -pub const __NR_name_to_handle_at: u32 = 264; -pub const __NR_open_by_handle_at: u32 = 265; -pub const __NR_syncfs: u32 = 267; -pub const __NR_setns: u32 = 268; -pub const __NR_sendmmsg: u32 = 269; -pub const __NR_process_vm_readv: u32 = 270; -pub const __NR_process_vm_writev: u32 = 271; -pub const __NR_kcmp: u32 = 272; -pub const __NR_finit_module: u32 = 273; -pub const __NR_sched_setattr: u32 = 274; -pub const __NR_sched_getattr: u32 = 275; -pub const __NR_renameat2: u32 = 276; -pub const __NR_seccomp: u32 = 277; -pub const __NR_getrandom: u32 = 278; -pub const __NR_memfd_create: u32 = 279; -pub const __NR_bpf: u32 = 280; -pub const __NR_execveat: u32 = 281; -pub const __NR_userfaultfd: u32 = 282; -pub const __NR_membarrier: u32 = 283; -pub const __NR_mlock2: u32 = 284; -pub const __NR_copy_file_range: u32 = 285; -pub const __NR_preadv2: u32 = 286; -pub const __NR_pwritev2: u32 = 287; -pub const __NR_pkey_mprotect: u32 = 288; -pub const __NR_pkey_alloc: u32 = 289; -pub const __NR_pkey_free: u32 = 290; -pub const __NR_statx: u32 = 291; -pub const __NR_rseq: u32 = 293; -pub const __NR_kexec_file_load: u32 = 294; -pub const __NR_clock_gettime64: u32 = 403; -pub const __NR_clock_settime64: u32 = 404; -pub const __NR_clock_adjtime64: u32 = 405; -pub const __NR_clock_getres_time64: u32 = 406; -pub const __NR_clock_nanosleep_time64: u32 = 407; -pub const __NR_timer_gettime64: u32 = 408; -pub const __NR_timer_settime64: u32 = 409; -pub const __NR_timerfd_gettime64: u32 = 410; -pub const __NR_timerfd_settime64: u32 = 411; -pub const __NR_utimensat_time64: u32 = 412; -pub const __NR_pselect6_time64: u32 = 413; -pub const __NR_ppoll_time64: u32 = 414; -pub const __NR_io_pgetevents_time64: u32 = 416; -pub const __NR_recvmmsg_time64: u32 = 417; -pub const __NR_mq_timedsend_time64: u32 = 418; -pub const __NR_mq_timedreceive_time64: u32 = 419; -pub const __NR_semtimedop_time64: u32 = 420; -pub const __NR_rt_sigtimedwait_time64: u32 = 421; -pub const __NR_futex_time64: u32 = 422; -pub const __NR_sched_rr_get_interval_time64: u32 = 423; -pub const __NR_pidfd_send_signal: u32 = 424; -pub const __NR_io_uring_setup: u32 = 425; -pub const __NR_io_uring_enter: u32 = 426; -pub const __NR_io_uring_register: u32 = 427; -pub const __NR_open_tree: u32 = 428; -pub const __NR_move_mount: u32 = 429; -pub const __NR_fsopen: u32 = 430; -pub const __NR_fsconfig: u32 = 431; -pub const __NR_fsmount: u32 = 432; -pub const __NR_fspick: u32 = 433; -pub const __NR_pidfd_open: u32 = 434; -pub const __NR_clone3: u32 = 435; -pub const __NR_close_range: u32 = 436; -pub const __NR_openat2: u32 = 437; -pub const __NR_pidfd_getfd: u32 = 438; -pub const __NR_faccessat2: u32 = 439; -pub const __NR_process_madvise: u32 = 440; -pub const __NR_epoll_pwait2: u32 = 441; -pub const __NR_mount_setattr: u32 = 442; -pub const __NR_quotactl_fd: u32 = 443; -pub const __NR_landlock_create_ruleset: u32 = 444; -pub const __NR_landlock_add_rule: u32 = 445; -pub const __NR_landlock_restrict_self: u32 = 446; -pub const __NR_memfd_secret: u32 = 447; -pub const __NR_process_mrelease: u32 = 448; -pub const __NR_futex_waitv: u32 = 449; -pub const __NR_set_mempolicy_home_node: u32 = 450; -pub const __NR_syscalls: u32 = 451; -pub const __NR_fcntl64: u32 = 25; -pub const __NR_statfs64: u32 = 43; -pub const __NR_fstatfs64: u32 = 44; -pub const __NR_truncate64: u32 = 45; -pub const __NR_ftruncate64: u32 = 46; -pub const __NR_llseek: u32 = 62; -pub const __NR_sendfile64: u32 = 71; -pub const __NR_mmap2: u32 = 222; -pub const __NR_fadvise64_64: u32 = 223; -pub const __NR_riscv_flush_icache: u32 = 259; -pub const __OLD_UTS_LEN: u32 = 8; -pub const __NEW_UTS_LEN: u32 = 64; -pub const WNOHANG: u32 = 1; -pub const WUNTRACED: u32 = 2; -pub const WSTOPPED: u32 = 2; -pub const WEXITED: u32 = 4; -pub const WCONTINUED: u32 = 8; -pub const WNOWAIT: u32 = 16777216; -pub const __WNOTHREAD: u32 = 536870912; -pub const __WALL: u32 = 1073741824; -pub const __WCLONE: u32 = 2147483648; -pub const P_ALL: u32 = 0; -pub const P_PID: u32 = 1; -pub const P_PGID: u32 = 2; -pub const P_PIDFD: u32 = 3; -pub const XATTR_CREATE: u32 = 1; -pub const XATTR_REPLACE: u32 = 2; -pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0"; -pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0"; -pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0"; -pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0"; -pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0"; -pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0"; -pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0"; -pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0"; -pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0"; -pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0"; -pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0"; -pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0"; -pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0"; -pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0"; -pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0"; -pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0"; -pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0"; -pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0"; -pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0"; -pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0"; -pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0"; -pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0"; -pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0"; -pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0"; -pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0"; -pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0"; -pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0"; -pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0"; -pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0"; -pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0"; -pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0"; -pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0"; -pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0"; -pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0"; -pub const MFD_CLOEXEC: u32 = 1; -pub const MFD_ALLOW_SEALING: u32 = 2; -pub const MFD_HUGETLB: u32 = 4; -pub const MFD_NOEXEC_SEAL: u32 = 8; -pub const MFD_EXEC: u32 = 16; -pub const MFD_HUGE_SHIFT: u32 = 26; -pub const MFD_HUGE_MASK: u32 = 63; -pub const MFD_HUGE_64KB: u32 = 1073741824; -pub const MFD_HUGE_512KB: u32 = 1275068416; -pub const MFD_HUGE_1MB: u32 = 1342177280; -pub const MFD_HUGE_2MB: u32 = 1409286144; -pub const MFD_HUGE_8MB: u32 = 1543503872; -pub const MFD_HUGE_16MB: u32 = 1610612736; -pub const MFD_HUGE_32MB: u32 = 1677721600; -pub const MFD_HUGE_256MB: u32 = 1879048192; -pub const MFD_HUGE_512MB: u32 = 1946157056; -pub const MFD_HUGE_1GB: u32 = 2013265920; -pub const MFD_HUGE_2GB: u32 = 2080374784; -pub const MFD_HUGE_16GB: u32 = 2281701376; -pub const TFD_TIMER_ABSTIME: u32 = 1; -pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; -pub const TFD_CLOEXEC: u32 = 524288; -pub const TFD_NONBLOCK: u32 = 2048; -pub const USERFAULTFD_IOC: u32 = 170; -pub const _UFFDIO_REGISTER: u32 = 0; -pub const _UFFDIO_UNREGISTER: u32 = 1; -pub const _UFFDIO_WAKE: u32 = 2; -pub const _UFFDIO_COPY: u32 = 3; -pub const _UFFDIO_ZEROPAGE: u32 = 4; -pub const _UFFDIO_WRITEPROTECT: u32 = 6; -pub const _UFFDIO_CONTINUE: u32 = 7; -pub const _UFFDIO_API: u32 = 63; -pub const UFFDIO: u32 = 170; -pub const UFFD_EVENT_PAGEFAULT: u32 = 18; -pub const UFFD_EVENT_FORK: u32 = 19; -pub const UFFD_EVENT_REMAP: u32 = 20; -pub const UFFD_EVENT_REMOVE: u32 = 21; -pub const UFFD_EVENT_UNMAP: u32 = 22; -pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; -pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; -pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; -pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; -pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; -pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; -pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; -pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; -pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; -pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; -pub const UFFD_FEATURE_SIGBUS: u32 = 128; -pub const UFFD_FEATURE_THREAD_ID: u32 = 256; -pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; -pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; -pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; -pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; -pub const UFFD_USER_MODE_ONLY: u32 = 1; -pub const IORING_FILE_INDEX_ALLOC: i32 = -1; -pub const IORING_SETUP_IOPOLL: u32 = 1; -pub const IORING_SETUP_SQPOLL: u32 = 2; -pub const IORING_SETUP_SQ_AFF: u32 = 4; -pub const IORING_SETUP_CQSIZE: u32 = 8; -pub const IORING_SETUP_CLAMP: u32 = 16; -pub const IORING_SETUP_ATTACH_WQ: u32 = 32; -pub const IORING_SETUP_R_DISABLED: u32 = 64; -pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; -pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; -pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; -pub const IORING_SETUP_SQE128: u32 = 1024; -pub const IORING_SETUP_CQE32: u32 = 2048; -pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; -pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; -pub const IORING_URING_CMD_FIXED: u32 = 1; -pub const IORING_FSYNC_DATASYNC: u32 = 1; -pub const IORING_TIMEOUT_ABS: u32 = 1; -pub const IORING_TIMEOUT_UPDATE: u32 = 2; -pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; -pub const IORING_TIMEOUT_REALTIME: u32 = 8; -pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; -pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; -pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; -pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; -pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; -pub const IORING_POLL_ADD_MULTI: u32 = 1; -pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; -pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; -pub const IORING_POLL_ADD_LEVEL: u32 = 8; -pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; -pub const IORING_ASYNC_CANCEL_FD: u32 = 2; -pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; -pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; -pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; -pub const IORING_RECV_MULTISHOT: u32 = 2; -pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; -pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; -pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; -pub const IORING_ACCEPT_MULTISHOT: u32 = 1; -pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; -pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; -pub const IORING_CQE_F_BUFFER: u32 = 1; -pub const IORING_CQE_F_MORE: u32 = 2; -pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; -pub const IORING_CQE_F_NOTIF: u32 = 8; -pub const IORING_OFF_SQ_RING: u32 = 0; -pub const IORING_OFF_CQ_RING: u32 = 134217728; -pub const IORING_OFF_SQES: u32 = 268435456; -pub const IORING_SQ_NEED_WAKEUP: u32 = 1; -pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; -pub const IORING_SQ_TASKRUN: u32 = 4; -pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; -pub const IORING_ENTER_GETEVENTS: u32 = 1; -pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; -pub const IORING_ENTER_SQ_WAIT: u32 = 4; -pub const IORING_ENTER_EXT_ARG: u32 = 8; -pub const IORING_ENTER_REGISTERED_RING: u32 = 16; -pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; -pub const IORING_FEAT_NODROP: u32 = 2; -pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; -pub const IORING_FEAT_RW_CUR_POS: u32 = 8; -pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; -pub const IORING_FEAT_FAST_POLL: u32 = 32; -pub const IORING_FEAT_POLL_32BITS: u32 = 64; -pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; -pub const IORING_FEAT_EXT_ARG: u32 = 256; -pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; -pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; -pub const IORING_FEAT_CQE_SKIP: u32 = 2048; -pub const IORING_FEAT_LINKED_FILE: u32 = 4096; -pub const IORING_FEAT_REG_REG_RING: u32 = 8192; -pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; -pub const IORING_REGISTER_FILES_SKIP: i32 = -2; -pub const IO_URING_OP_SUPPORTED: u32 = 1; -pub const DT_UNKNOWN: u32 = 0; -pub const DT_FIFO: u32 = 1; -pub const DT_CHR: u32 = 2; -pub const DT_DIR: u32 = 4; -pub const DT_BLK: u32 = 6; -pub const DT_REG: u32 = 8; -pub const DT_LNK: u32 = 10; -pub const DT_SOCK: u32 = 12; -pub const SHUT_RD: u32 = 0; -pub const SHUT_WR: u32 = 1; -pub const SHUT_RDWR: u32 = 2; -pub const STAT_HAVE_NSEC: u32 = 1; -pub const SOCK_STREAM: u32 = 1; -pub const SOCK_DGRAM: u32 = 2; -pub const SOCK_RAW: u32 = 3; -pub const SOCK_RDM: u32 = 4; -pub const SOCK_SEQPACKET: u32 = 5; -pub const F_OK: u32 = 0; -pub const R_OK: u32 = 4; -pub const W_OK: u32 = 2; -pub const X_OK: u32 = 1; -pub const UTIME_NOW: u32 = 1073741823; -pub const UTIME_OMIT: u32 = 1073741822; -pub const MSG_DONTWAIT: u32 = 64; -pub const AF_UNSPEC: u32 = 0; -pub const AF_UNIX: u32 = 1; -pub const AF_INET: u32 = 2; -pub const AF_AX25: u32 = 3; -pub const AF_IPX: u32 = 4; -pub const AF_APPLETALK: u32 = 5; -pub const AF_NETROM: u32 = 6; -pub const AF_BRIDGE: u32 = 7; -pub const AF_ATMPVC: u32 = 8; -pub const AF_X25: u32 = 9; -pub const AF_INET6: u32 = 10; -pub const AF_ROSE: u32 = 11; -pub const AF_DECnet: u32 = 12; -pub const AF_NETBEUI: u32 = 13; -pub const AF_SECURITY: u32 = 14; -pub const AF_KEY: u32 = 15; -pub const AF_NETLINK: u32 = 16; -pub const AF_PACKET: u32 = 17; -pub const AF_ASH: u32 = 18; -pub const AF_ECONET: u32 = 19; -pub const AF_ATMSVC: u32 = 20; -pub const AF_RDS: u32 = 21; -pub const AF_SNA: u32 = 22; -pub const AF_IRDA: u32 = 23; -pub const AF_PPPOX: u32 = 24; -pub const AF_WANPIPE: u32 = 25; -pub const AF_LLC: u32 = 26; -pub const AF_CAN: u32 = 29; -pub const AF_TIPC: u32 = 30; -pub const AF_BLUETOOTH: u32 = 31; -pub const AF_IUCV: u32 = 32; -pub const AF_RXRPC: u32 = 33; -pub const AF_ISDN: u32 = 34; -pub const AF_PHONET: u32 = 35; -pub const AF_IEEE802154: u32 = 36; -pub const AF_MAX: u32 = 37; -pub const MSG_OOB: u32 = 1; -pub const MSG_PEEK: u32 = 2; -pub const MSG_DONTROUTE: u32 = 4; -pub const MSG_CTRUNC: u32 = 8; -pub const MSG_PROBE: u32 = 16; -pub const MSG_TRUNC: u32 = 32; -pub const MSG_EOR: u32 = 128; -pub const MSG_WAITALL: u32 = 256; -pub const MSG_FIN: u32 = 512; -pub const MSG_SYN: u32 = 1024; -pub const MSG_CONFIRM: u32 = 2048; -pub const MSG_RST: u32 = 4096; -pub const MSG_ERRQUEUE: u32 = 8192; -pub const MSG_NOSIGNAL: u32 = 16384; -pub const MSG_MORE: u32 = 32768; -pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; -pub const STDIN_FILENO: u32 = 0; -pub const STDOUT_FILENO: u32 = 1; -pub const STDERR_FILENO: u32 = 2; -pub const RWF_HIPRI: u32 = 1; -pub const RWF_DSYNC: u32 = 2; -pub const RWF_SYNC: u32 = 4; -pub const RWF_NOWAIT: u32 = 8; -pub const RWF_APPEND: u32 = 16; -pub const EFD_SEMAPHORE: u32 = 1; -pub const EFD_CLOEXEC: u32 = 524288; -pub const EFD_NONBLOCK: u32 = 2048; -pub const EPOLLIN: u32 = 1; -pub const EPOLLPRI: u32 = 2; -pub const EPOLLOUT: u32 = 4; -pub const EPOLLERR: u32 = 8; -pub const EPOLLHUP: u32 = 16; -pub const EPOLLNVAL: u32 = 32; -pub const EPOLLRDNORM: u32 = 64; -pub const EPOLLRDBAND: u32 = 128; -pub const EPOLLWRNORM: u32 = 256; -pub const EPOLLWRBAND: u32 = 512; -pub const EPOLLMSG: u32 = 1024; -pub const EPOLLRDHUP: u32 = 8192; -pub const EPOLLEXCLUSIVE: u32 = 268435456; -pub const EPOLLWAKEUP: u32 = 536870912; -pub const EPOLLONESHOT: u32 = 1073741824; -pub const EPOLLET: u32 = 2147483648; -pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; -pub const TFD_CREATE_FLAGS: u32 = 526336; -pub const TFD_SETTIME_FLAGS: u32 = 1; -pub const SCM_RIGHTS: u32 = 1; -pub const SCM_CREDENTIALS: u32 = 2; -pub const SCM_SECURITY: u32 = 3; -pub const UFFD_API: u32 = 170; -pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; -pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; -pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; -pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; -pub const UFFDIO_COPY_MODE_WP: u32 = 2; -pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; -pub const SPLICE_F_MOVE: u32 = 1; -pub const SPLICE_F_NONBLOCK: u32 = 2; -pub const SPLICE_F_MORE: u32 = 4; -pub const SPLICE_F_GIFT: u32 = 8; -pub const MNT_FORCE: u32 = 1; -pub const MNT_DETACH: u32 = 2; -pub const MNT_EXPIRE: u32 = 4; -pub const UMOUNT_NOFOLLOW: u32 = 8; -pub const UMOUNT_UNUSED: u32 = 2147483648; -pub type size_t = crate::ctypes::c_uint; -pub type ssize_t = crate::ctypes::c_int; -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 32usize], -} -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_old_dev_t = crate::ctypes::c_uint; -pub type __kernel_size_t = crate::ctypes::c_uint; -pub type __kernel_ssize_t = crate::ctypes::c_int; -pub type __kernel_ptrdiff_t = crate::ctypes::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_header_struct { -pub version: __u32, -pub pid: crate::ctypes::c_int, -} -pub type cap_user_header_t = *mut __user_cap_header_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_data_struct { -pub effective: __u32, -pub permitted: __u32, -pub inheritable: __u32, -} -pub type cap_user_data_t = *mut __user_cap_data_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data { -pub magic_etc: __le32, -pub data: [vfs_cap_data__bindgen_ty_1; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data { -pub magic_etc: __le32, -pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], -pub rootid: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct f_owner_ex { -pub type_: crate::ctypes::c_int, -pub pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_off_t, -pub l_len: __kernel_off_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock64 { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_loff_t, -pub l_len: __kernel_loff_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct open_how { -pub flags: __u64, -pub mode: __u64, -pub resolve: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct epoll_event { -pub events: __poll_t, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v1 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub master_key_descriptor: [__u8; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_key { -pub mode: __u32, -pub raw: [__u8; 64usize], -pub size: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v2 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub __reserved: [__u8; 4usize], -pub master_key_identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_get_policy_ex_arg { -pub policy_size: __u64, -pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { -pub version: __u8, -pub v1: fscrypt_policy_v1, -pub v2: fscrypt_policy_v2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_key_specifier { -pub type_: __u32, -pub __reserved: __u32, -pub u: fscrypt_key_specifier__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_key_specifier__bindgen_ty_1 { -pub __reserved: [__u8; 32usize], -pub descriptor: [__u8; 8usize], -pub identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct fscrypt_provisioning_key_payload { -pub type_: __u32, -pub __reserved: __u32, -pub raw: __IncompleteArrayField<__u8>, -} -#[repr(C)] -pub struct fscrypt_add_key_arg { -pub key_spec: fscrypt_key_specifier, -pub raw_size: __u32, -pub key_id: __u32, -pub __reserved: [__u32; 8usize], -pub raw: __IncompleteArrayField<__u8>, +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, } #[repr(C)] #[derive(Copy, Clone)] @@ -2747,19 +229,6 @@ pub user_count: __u32, pub __out_reserved: [__u32; 13usize], } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum fsconfig_command { -FSCONFIG_SET_FLAG = 0, -FSCONFIG_SET_STRING = 1, -FSCONFIG_SET_BINARY = 2, -FSCONFIG_SET_PATH = 3, -FSCONFIG_SET_PATH_EMPTY = 4, -FSCONFIG_SET_FD = 5, -FSCONFIG_CMD_CREATE = 6, -FSCONFIG_CMD_RECONFIGURE = 7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct mount_attr { @@ -2820,690 +289,40 @@ #[derive(Debug, Copy, Clone)] pub struct fsxattr { pub fsx_xflags: __u32, -pub fsx_extsize: __u32, -pub fsx_nextents: __u32, -pub fsx_projid: __u32, -pub fsx_cowextsize: __u32, -pub fsx_pad: [crate::ctypes::c_uchar; 8usize], -} -pub type __kernel_rwf_t = crate::ctypes::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct futex_waitv { -pub val: __u64, -pub uaddr: __u64, -pub flags: __u32, -pub __reserved: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct robust_list { -pub next: *mut robust_list, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct robust_list_head { -pub list: robust_list, -pub futex_offset: crate::ctypes::c_long, -pub list_op_pending: *mut robust_list, -} -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], -} -pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; -pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; -pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; -pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; -pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; -pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; -pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; -pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; -pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; -pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; -pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; -pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; -pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; -pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; -pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; -pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; -pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; -pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; -pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; -pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; -pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; -pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; -pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; -pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; -pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; -pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; -pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; -pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; -pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_1 { -IPPROTO_IP = 0, -IPPROTO_ICMP = 1, -IPPROTO_IGMP = 2, -IPPROTO_IPIP = 4, -IPPROTO_TCP = 6, -IPPROTO_EGP = 8, -IPPROTO_PUP = 12, -IPPROTO_UDP = 17, -IPPROTO_IDP = 22, -IPPROTO_TP = 29, -IPPROTO_DCCP = 33, -IPPROTO_IPV6 = 41, -IPPROTO_RSVP = 46, -IPPROTO_GRE = 47, -IPPROTO_ESP = 50, -IPPROTO_AH = 51, -IPPROTO_MTP = 92, -IPPROTO_BEETPH = 94, -IPPROTO_ENCAP = 98, -IPPROTO_PIM = 103, -IPPROTO_COMP = 108, -IPPROTO_L2TP = 115, -IPPROTO_SCTP = 132, -IPPROTO_UDPLITE = 136, -IPPROTO_MPLS = 137, -IPPROTO_ETHERNET = 143, -IPPROTO_RAW = 255, -IPPROTO_MPTCP = 262, -IPPROTO_MAX = 263, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_addr { -pub s_addr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq { -pub imr_multiaddr: in_addr, -pub imr_interface: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreqn { -pub imr_multiaddr: in_addr, -pub imr_address: in_addr, -pub imr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq_source { -pub imr_multiaddr: __be32, -pub imr_interface: __be32, -pub imr_sourceaddr: __be32, -} -#[repr(C)] -pub struct ip_msfilter { -pub imsf_multiaddr: __be32, -pub imsf_interface: __be32, -pub imsf_fmode: __u32, -pub imsf_numsrc: __u32, -pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, -} -#[repr(C)] -pub struct ip_msfilter__bindgen_ty_1 { -pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, -pub __bindgen_anon_1: __BindgenUnionField, -pub bindgen_union_field: u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { -pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -pub imsf_slist_flex: __IncompleteArrayField<__be32>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_req { -pub gr_interface: __u32, -pub gr_group: __kernel_sockaddr_storage, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_source_req { -pub gsr_interface: __u32, -pub gsr_group: __kernel_sockaddr_storage, -pub gsr_source: __kernel_sockaddr_storage, -} -#[repr(C)] -pub struct group_filter { -pub __bindgen_anon_1: group_filter__bindgen_ty_1, -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u32; 67usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { -pub gf_interface_aux: __u32, -pub gf_group_aux: __kernel_sockaddr_storage, -pub gf_fmode_aux: __u32, -pub gf_numsrc_aux: __u32, -pub gf_slist: [__kernel_sockaddr_storage; 1usize], -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { -pub gf_interface: __u32, -pub gf_group: __kernel_sockaddr_storage, -pub gf_fmode: __u32, -pub gf_numsrc: __u32, -pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_pktinfo { -pub ipi_ifindex: crate::ctypes::c_int, -pub ipi_spec_dst: in_addr, -pub ipi_addr: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_in { -pub sin_family: __kernel_sa_family_t, -pub sin_port: __be16, -pub sin_addr: in_addr, -pub __pad: [crate::ctypes::c_uchar; 8usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct inotify_event { -pub wd: __s32, -pub mask: __u32, -pub cookie: __u32, -pub len: __u32, -pub name: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct iphdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub tos: __u8, -pub tot_len: __be16, -pub id: __be16, -pub frag_off: __be16, -pub ttl: __u8, -pub protocol: __u8, -pub check: __sum16, -pub __bindgen_anon_1: iphdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union iphdr__bindgen_ty_1 { -pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: __be32, -pub daddr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: __be32, -pub daddr: __be32, -} -impl iphdr { -#[inline] -pub fn ihl(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_ihl(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; -ihl as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_auth_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub reserved: __be16, -pub spi: __be32, -pub seq_no: __be32, -pub auth_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_esp_hdr { -pub spi: __be32, -pub seq_no: __be32, -pub enc_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_comp_hdr { -pub nexthdr: __u8, -pub flags: __u8, -pub cpi: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_beet_phdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub padlen: __u8, -pub reserved: __u8, -} -pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; -pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; -pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; -pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; -pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; -pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; -pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; -pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; -pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; -pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; -pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; -pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; -pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; -pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; -pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; -pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; -pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; -pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; -pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; -pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; -pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; -pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; -pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; -pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; -pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; -pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; -pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; -pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; -pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_2 { -IPV4_DEVCONF_FORWARDING = 1, -IPV4_DEVCONF_MC_FORWARDING = 2, -IPV4_DEVCONF_PROXY_ARP = 3, -IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, -IPV4_DEVCONF_SECURE_REDIRECTS = 5, -IPV4_DEVCONF_SEND_REDIRECTS = 6, -IPV4_DEVCONF_SHARED_MEDIA = 7, -IPV4_DEVCONF_RP_FILTER = 8, -IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, -IPV4_DEVCONF_BOOTP_RELAY = 10, -IPV4_DEVCONF_LOG_MARTIANS = 11, -IPV4_DEVCONF_TAG = 12, -IPV4_DEVCONF_ARPFILTER = 13, -IPV4_DEVCONF_MEDIUM_ID = 14, -IPV4_DEVCONF_NOXFRM = 15, -IPV4_DEVCONF_NOPOLICY = 16, -IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, -IPV4_DEVCONF_ARP_ANNOUNCE = 18, -IPV4_DEVCONF_ARP_IGNORE = 19, -IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, -IPV4_DEVCONF_ARP_ACCEPT = 21, -IPV4_DEVCONF_ARP_NOTIFY = 22, -IPV4_DEVCONF_ACCEPT_LOCAL = 23, -IPV4_DEVCONF_SRC_VMARK = 24, -IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, -IPV4_DEVCONF_ROUTE_LOCALNET = 26, -IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, -IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, -IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, -IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, -IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, -IPV4_DEVCONF_BC_FORWARDING = 32, -IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, -__IPV4_DEVCONF_MAX = 34, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_addr { -pub in6_u: in6_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union in6_addr__bindgen_ty_1 { -pub u6_addr8: [__u8; 16usize], -pub u6_addr16: [__be16; 8usize], -pub u6_addr32: [__be32; 4usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_in6 { -pub sin6_family: crate::ctypes::c_ushort, -pub sin6_port: __be16, -pub sin6_flowinfo: __be32, -pub sin6_addr: in6_addr, -pub sin6_scope_id: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6_mreq { -pub ipv6mr_multiaddr: in6_addr, -pub ipv6mr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_flowlabel_req { -pub flr_dst: in6_addr, -pub flr_label: __be32, -pub flr_action: __u8, -pub flr_share: __u8, -pub flr_flags: __u16, -pub flr_expires: __u16, -pub flr_linger: __u16, -pub __flr_pad: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_pktinfo { -pub ipi6_addr: in6_addr, -pub ipi6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ip6_mtuinfo { -pub ip6m_addr: sockaddr_in6, -pub ip6m_mtu: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_ifreq { -pub ifr6_addr: in6_addr, -pub ifr6_prefixlen: __u32, -pub ifr6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_rt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub type_: __u8, -pub segments_left: __u8, -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_opt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -} -#[repr(C)] -pub struct rt0_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rt2_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: in6_addr, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct ipv6_destopt_hao { -pub type_: __u8, -pub length: __u8, -pub addr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub flow_lbl: [__u8; 3usize], -pub payload_len: __be16, -pub nexthdr: __u8, -pub hop_limit: __u8, -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ipv6hdr__bindgen_ty_1 { -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -impl ipv6hdr { -#[inline] -pub fn priority(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_priority(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], } -#[inline] -pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let priority: u8 = unsafe { ::core::mem::transmute(priority) }; -priority as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct futex_waitv { +pub val: __u64, +pub uaddr: __u64, +pub flags: __u32, +pub __reserved: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct robust_list { +pub next: *mut robust_list, } -pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; -pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; -pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; -pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; -pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; -pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; -pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; -pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; -pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; -pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; -pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; -pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; -pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; -pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; -pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; -pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; -pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; -pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; -pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; -pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; -pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; -pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; -pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; -pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; -pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; -pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; -pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; -pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; -pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; -pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; -pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; -pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; -pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; -pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; -pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; -pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; -pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; -pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; -pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; -pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; -pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; -pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; -pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; -pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; -pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; -pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; -pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; -pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; -pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; -pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; -pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; -pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_3 { -DEVCONF_FORWARDING = 0, -DEVCONF_HOPLIMIT = 1, -DEVCONF_MTU6 = 2, -DEVCONF_ACCEPT_RA = 3, -DEVCONF_ACCEPT_REDIRECTS = 4, -DEVCONF_AUTOCONF = 5, -DEVCONF_DAD_TRANSMITS = 6, -DEVCONF_RTR_SOLICITS = 7, -DEVCONF_RTR_SOLICIT_INTERVAL = 8, -DEVCONF_RTR_SOLICIT_DELAY = 9, -DEVCONF_USE_TEMPADDR = 10, -DEVCONF_TEMP_VALID_LFT = 11, -DEVCONF_TEMP_PREFERED_LFT = 12, -DEVCONF_REGEN_MAX_RETRY = 13, -DEVCONF_MAX_DESYNC_FACTOR = 14, -DEVCONF_MAX_ADDRESSES = 15, -DEVCONF_FORCE_MLD_VERSION = 16, -DEVCONF_ACCEPT_RA_DEFRTR = 17, -DEVCONF_ACCEPT_RA_PINFO = 18, -DEVCONF_ACCEPT_RA_RTR_PREF = 19, -DEVCONF_RTR_PROBE_INTERVAL = 20, -DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, -DEVCONF_PROXY_NDP = 22, -DEVCONF_OPTIMISTIC_DAD = 23, -DEVCONF_ACCEPT_SOURCE_ROUTE = 24, -DEVCONF_MC_FORWARDING = 25, -DEVCONF_DISABLE_IPV6 = 26, -DEVCONF_ACCEPT_DAD = 27, -DEVCONF_FORCE_TLLAO = 28, -DEVCONF_NDISC_NOTIFY = 29, -DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, -DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, -DEVCONF_SUPPRESS_FRAG_NDISC = 32, -DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, -DEVCONF_USE_OPTIMISTIC = 34, -DEVCONF_ACCEPT_RA_MTU = 35, -DEVCONF_STABLE_SECRET = 36, -DEVCONF_USE_OIF_ADDRS_ONLY = 37, -DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, -DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, -DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, -DEVCONF_DROP_UNSOLICITED_NA = 41, -DEVCONF_KEEP_ADDR_ON_DOWN = 42, -DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, -DEVCONF_SEG6_ENABLED = 44, -DEVCONF_SEG6_REQUIRE_HMAC = 45, -DEVCONF_ENHANCED_DAD = 46, -DEVCONF_ADDR_GEN_MODE = 47, -DEVCONF_DISABLE_POLICY = 48, -DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, -DEVCONF_NDISC_TCLASS = 50, -DEVCONF_RPL_SEG_ENABLED = 51, -DEVCONF_RA_DEFRTR_METRIC = 52, -DEVCONF_IOAM6_ENABLED = 53, -DEVCONF_IOAM6_ID = 54, -DEVCONF_IOAM6_ID_WIDE = 55, -DEVCONF_NDISC_EVICT_NOCARRIER = 56, -DEVCONF_ACCEPT_UNTRACKED_NA = 57, -DEVCONF_MAX = 58, +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct robust_list_head { +pub list: robust_list, +pub futex_offset: crate::ctypes::c_long, +pub list_op_pending: *mut robust_list, } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum socket_state { -SS_FREE = 0, -SS_UNCONNECTED = 1, -SS_CONNECTING = 2, -SS_CONNECTED = 3, -SS_DISCONNECTING = 4, +#[repr(C)] +#[derive(Debug)] +pub struct inotify_event { +pub wd: __s32, +pub mask: __u32, +pub cookie: __u32, +pub len: __u32, +pub name: __IncompleteArrayField, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -3513,24 +332,6 @@ pub revents: crate::ctypes::c_short, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prctl_mm_map { -pub start_code: __u64, -pub end_code: __u64, -pub start_data: __u64, -pub end_data: __u64, -pub start_brk: __u64, -pub brk: __u64, -pub start_stack: __u64, -pub arg_start: __u64, -pub arg_end: __u64, -pub env_start: __u64, -pub env_end: __u64, -pub auxv: *mut __u64, -pub auxv_size: __u32, -pub exe_fd: __u32, -} -#[repr(C)] #[derive(Debug)] pub struct rand_pool_info { pub entropy_count: crate::ctypes::c_int, @@ -3655,11 +456,6 @@ pub struct sigset_t { pub sig: [crate::ctypes::c_ulong; 2usize], } -pub type old_sigset_t = crate::ctypes::c_ulong; -pub type __signalfn_t = ::core::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::core::option::Option; -pub type __sigrestore_t = __restorefn_t; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct sigaction { @@ -3674,25 +470,6 @@ pub ss_flags: crate::ctypes::c_int, pub ss_size: __kernel_size_t, } -pub type stack_t = sigaltstack; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { -pub sival_int: crate::ctypes::c_int, -pub sival_ptr: *mut crate::ctypes::c_void, -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { -pub _kill: __sifields__bindgen_ty_1, -pub _timer: __sifields__bindgen_ty_2, -pub _rt: __sifields__bindgen_ty_3, -pub _sigchld: __sifields__bindgen_ty_4, -pub _sigfault: __sifields__bindgen_ty_5, -pub _sigpoll: __sifields__bindgen_ty_6, -pub _sigsys: __sifields__bindgen_ty_7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_1 { @@ -3730,15 +507,6 @@ pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { -pub _trapno: crate::ctypes::c_int, -pub _addr_lsb: crate::ctypes::c_short, -pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, -pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { pub _dummy_bnd: [crate::ctypes::c_char; 4usize], @@ -3778,19 +546,12 @@ } #[repr(C)] #[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { -pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, -pub _si_pad: [crate::ctypes::c_int; 32usize], -} -#[repr(C)] -#[derive(Copy, Clone)] pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { pub si_signo: crate::ctypes::c_int, pub si_errno: crate::ctypes::c_int, pub si_code: crate::ctypes::c_int, pub _sifields: __sifields, } -pub type siginfo_t = siginfo; #[repr(C)] #[derive(Copy, Clone)] pub struct sigevent { @@ -3800,19 +561,11 @@ pub _sigev_un: sigevent__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { -pub _pad: [crate::ctypes::c_int; 13usize], -pub _tid: crate::ctypes::c_int, -pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { pub _function: ::core::option::Option, pub _attribute: *mut crate::ctypes::c_void, } -pub type sigevent_t = sigevent; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct statx_timestamp { @@ -3839,507 +592,15 @@ pub stx_btime: statx_timestamp, pub stx_ctime: statx_timestamp, pub stx_mtime: statx_timestamp, -pub stx_rdev_major: __u32, -pub stx_rdev_minor: __u32, -pub stx_dev_major: __u32, -pub stx_dev_minor: __u32, -pub stx_mnt_id: __u64, -pub stx_dio_mem_align: __u32, -pub stx_dio_offset_align: __u32, -pub __spare3: [__u64; 12usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sysinfo { -pub uptime: __kernel_long_t, -pub loads: [__kernel_ulong_t; 3usize], -pub totalram: __kernel_ulong_t, -pub freeram: __kernel_ulong_t, -pub sharedram: __kernel_ulong_t, -pub bufferram: __kernel_ulong_t, -pub totalswap: __kernel_ulong_t, -pub freeswap: __kernel_ulong_t, -pub procs: __u16, -pub pad: __u16, -pub totalhigh: __kernel_ulong_t, -pub freehigh: __kernel_ulong_t, -pub mem_unit: __u32, -pub _f: [crate::ctypes::c_char; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcphdr { -pub source: __be16, -pub dest: __be16, -pub seq: __be32, -pub ack_seq: __be32, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub window: __be16, -pub check: __sum16, -pub urg_ptr: __be16, -} -impl tcphdr { -#[inline] -pub fn res1(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } -} -#[inline] -pub fn set_res1(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn doff(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } -} -#[inline] -pub fn set_doff(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn fin(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } -} -#[inline] -pub fn set_fin(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn syn(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } -} -#[inline] -pub fn set_syn(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 1u8, val as u64) -} -} -#[inline] -pub fn rst(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } -} -#[inline] -pub fn set_rst(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(10usize, 1u8, val as u64) -} -} -#[inline] -pub fn psh(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } -} -#[inline] -pub fn set_psh(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(11usize, 1u8, val as u64) -} -} -#[inline] -pub fn ack(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } -} -#[inline] -pub fn set_ack(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(12usize, 1u8, val as u64) -} -} -#[inline] -pub fn urg(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } -} -#[inline] -pub fn set_urg(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(13usize, 1u8, val as u64) -} -} -#[inline] -pub fn ece(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } -} -#[inline] -pub fn set_ece(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(14usize, 1u8, val as u64) -} -} -#[inline] -pub fn cwr(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } -} -#[inline] -pub fn set_cwr(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(15usize, 1u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let res1: u16 = unsafe { ::core::mem::transmute(res1) }; -res1 as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let doff: u16 = unsafe { ::core::mem::transmute(doff) }; -doff as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let fin: u16 = unsafe { ::core::mem::transmute(fin) }; -fin as u64 -}); -__bindgen_bitfield_unit.set(9usize, 1u8, { -let syn: u16 = unsafe { ::core::mem::transmute(syn) }; -syn as u64 -}); -__bindgen_bitfield_unit.set(10usize, 1u8, { -let rst: u16 = unsafe { ::core::mem::transmute(rst) }; -rst as u64 -}); -__bindgen_bitfield_unit.set(11usize, 1u8, { -let psh: u16 = unsafe { ::core::mem::transmute(psh) }; -psh as u64 -}); -__bindgen_bitfield_unit.set(12usize, 1u8, { -let ack: u16 = unsafe { ::core::mem::transmute(ack) }; -ack as u64 -}); -__bindgen_bitfield_unit.set(13usize, 1u8, { -let urg: u16 = unsafe { ::core::mem::transmute(urg) }; -urg as u64 -}); -__bindgen_bitfield_unit.set(14usize, 1u8, { -let ece: u16 = unsafe { ::core::mem::transmute(ece) }; -ece as u64 -}); -__bindgen_bitfield_unit.set(15usize, 1u8, { -let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; -cwr as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union tcp_word_hdr { -pub hdr: tcphdr, -pub words: [__be32; 5usize], -} -pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; -pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; -pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; -pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; -pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; -pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; -pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; -pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; -pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; -pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_4 { -TCP_FLAG_CWR = 32768, -TCP_FLAG_ECE = 16384, -TCP_FLAG_URG = 8192, -TCP_FLAG_ACK = 4096, -TCP_FLAG_PSH = 2048, -TCP_FLAG_RST = 1024, -TCP_FLAG_SYN = 512, -TCP_FLAG_FIN = 256, -TCP_RESERVED_BITS = 15, -TCP_DATA_OFFSET = 240, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_repair_opt { -pub opt_code: __u32, -pub opt_val: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_repair_window { -pub snd_wl1: __u32, -pub snd_wnd: __u32, -pub max_window: __u32, -pub rcv_wnd: __u32, -pub rcv_wup: __u32, -} -pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; -pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; -pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; -pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_5 { -TCP_NO_QUEUE = 0, -TCP_RECV_QUEUE = 1, -TCP_SEND_QUEUE = 2, -TCP_QUEUES_NR = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_fastopen_client_fail { -TFO_STATUS_UNSPEC = 0, -TFO_COOKIE_UNAVAILABLE = 1, -TFO_DATA_NOT_ACKED = 2, -TFO_SYN_RETRANSMITTED = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_ca_state { -TCP_CA_Open = 0, -TCP_CA_Disorder = 1, -TCP_CA_CWR = 2, -TCP_CA_Recovery = 3, -TCP_CA_Loss = 4, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_info { -pub tcpi_state: __u8, -pub tcpi_ca_state: __u8, -pub tcpi_retransmits: __u8, -pub tcpi_probes: __u8, -pub tcpi_backoff: __u8, -pub tcpi_options: __u8, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub tcpi_rto: __u32, -pub tcpi_ato: __u32, -pub tcpi_snd_mss: __u32, -pub tcpi_rcv_mss: __u32, -pub tcpi_unacked: __u32, -pub tcpi_sacked: __u32, -pub tcpi_lost: __u32, -pub tcpi_retrans: __u32, -pub tcpi_fackets: __u32, -pub tcpi_last_data_sent: __u32, -pub tcpi_last_ack_sent: __u32, -pub tcpi_last_data_recv: __u32, -pub tcpi_last_ack_recv: __u32, -pub tcpi_pmtu: __u32, -pub tcpi_rcv_ssthresh: __u32, -pub tcpi_rtt: __u32, -pub tcpi_rttvar: __u32, -pub tcpi_snd_ssthresh: __u32, -pub tcpi_snd_cwnd: __u32, -pub tcpi_advmss: __u32, -pub tcpi_reordering: __u32, -pub tcpi_rcv_rtt: __u32, -pub tcpi_rcv_space: __u32, -pub tcpi_total_retrans: __u32, -pub tcpi_pacing_rate: __u64, -pub tcpi_max_pacing_rate: __u64, -pub tcpi_bytes_acked: __u64, -pub tcpi_bytes_received: __u64, -pub tcpi_segs_out: __u32, -pub tcpi_segs_in: __u32, -pub tcpi_notsent_bytes: __u32, -pub tcpi_min_rtt: __u32, -pub tcpi_data_segs_in: __u32, -pub tcpi_data_segs_out: __u32, -pub tcpi_delivery_rate: __u64, -pub tcpi_busy_time: __u64, -pub tcpi_rwnd_limited: __u64, -pub tcpi_sndbuf_limited: __u64, -pub tcpi_delivered: __u32, -pub tcpi_delivered_ce: __u32, -pub tcpi_bytes_sent: __u64, -pub tcpi_bytes_retrans: __u64, -pub tcpi_dsack_dups: __u32, -pub tcpi_reord_seen: __u32, -pub tcpi_rcv_ooopack: __u32, -pub tcpi_snd_wnd: __u32, -pub tcpi_rcv_wnd: __u32, -pub tcpi_rehash: __u32, -} -impl tcp_info { -#[inline] -pub fn tcpi_snd_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_rcv_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } -} -#[inline] -pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn tcpi_fastopen_client_fail(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } -} -#[inline] -pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 2u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; -tcpi_snd_wscale as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; -tcpi_rcv_wscale as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; -tcpi_delivery_rate_app_limited as u64 -}); -__bindgen_bitfield_unit.set(9usize, 2u8, { -let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; -tcpi_fastopen_client_fail as u64 -}); -__bindgen_bitfield_unit -} -} -pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; -pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; -pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; -pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; -pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; -pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; -pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; -pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; -pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; -pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; -pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; -pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; -pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; -pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; -pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; -pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; -pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; -pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; -pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; -pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; -pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; -pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; -pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; -pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; -pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; -pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; -pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; -pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_6 { -TCP_NLA_PAD = 0, -TCP_NLA_BUSY = 1, -TCP_NLA_RWND_LIMITED = 2, -TCP_NLA_SNDBUF_LIMITED = 3, -TCP_NLA_DATA_SEGS_OUT = 4, -TCP_NLA_TOTAL_RETRANS = 5, -TCP_NLA_PACING_RATE = 6, -TCP_NLA_DELIVERY_RATE = 7, -TCP_NLA_SND_CWND = 8, -TCP_NLA_REORDERING = 9, -TCP_NLA_MIN_RTT = 10, -TCP_NLA_RECUR_RETRANS = 11, -TCP_NLA_DELIVERY_RATE_APP_LMT = 12, -TCP_NLA_SNDQ_SIZE = 13, -TCP_NLA_CA_STATE = 14, -TCP_NLA_SND_SSTHRESH = 15, -TCP_NLA_DELIVERED = 16, -TCP_NLA_DELIVERED_CE = 17, -TCP_NLA_BYTES_SENT = 18, -TCP_NLA_BYTES_RETRANS = 19, -TCP_NLA_DSACK_DUPS = 20, -TCP_NLA_REORD_SEEN = 21, -TCP_NLA_SRTT = 22, -TCP_NLA_TIMEOUT_REHASH = 23, -TCP_NLA_BYTES_NOTSENT = 24, -TCP_NLA_EDT = 25, -TCP_NLA_TTL = 26, -TCP_NLA_REHASH = 27, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct tcp_md5sig { -pub tcpm_addr: __kernel_sockaddr_storage, -pub tcpm_flags: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_ifindex: crate::ctypes::c_int, -pub tcpm_key: [__u8; 80usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_diag_md5sig { -pub tcpm_family: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_addr: [__be32; 4usize], -pub tcpm_key: [__u8; 80usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_zerocopy_receive { -pub address: __u64, -pub length: __u32, -pub recv_skip_hint: __u32, -pub inq: __u32, -pub err: __s32, -pub copybuf_address: __u64, -pub copybuf_len: __s32, -pub flags: __u32, -pub msg_control: __u64, -pub msg_controllen: __u64, -pub msg_flags: __u32, -pub reserved: __u32, +pub stx_rdev_major: __u32, +pub stx_rdev_minor: __u32, +pub stx_dev_major: __u32, +pub stx_dev_minor: __u32, +pub stx_mnt_id: __u64, +pub stx_dio_mem_align: __u32, +pub stx_dio_offset_align: __u32, +pub __spare3: [__u64; 12usize], } -pub type cc_t = crate::ctypes::c_uchar; -pub type speed_t = crate::ctypes::c_uint; -pub type tcflag_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct termios { @@ -4398,42 +659,1890 @@ pub iov_base: *mut crate::ctypes::c_void, pub iov_len: __kernel_size_t, } +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct uffd_msg { +pub event: __u8, +pub reserved1: __u8, +pub reserved2: __u16, +pub reserved3: __u32, +pub arg: uffd_msg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { +pub flags: __u64, +pub address: __u64, +pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { +pub ufd: __u32, +} #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_un { -pub sun_family: __kernel_sa_family_t, -pub sun_path: [crate::ctypes::c_char; 108usize], +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { +pub from: __u64, +pub to: __u64, +pub len: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct oldold_utsname { -pub sysname: [crate::ctypes::c_char; 9usize], -pub nodename: [crate::ctypes::c_char; 9usize], -pub release: [crate::ctypes::c_char; 9usize], -pub version: [crate::ctypes::c_char; 9usize], -pub machine: [crate::ctypes::c_char; 9usize], +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { +pub start: __u64, +pub end: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct old_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { +pub reserved1: __u64, +pub reserved2: __u64, +pub reserved3: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct new_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], -pub domainname: [crate::ctypes::c_char; 65usize], +pub struct uffdio_api { +pub api: __u64, +pub features: __u64, +pub ioctls: __u64, } -impl membarrier_cmd { -pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_range { +pub start: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_register { +pub range: uffdio_range, +pub mode: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_copy { +pub dst: __u64, +pub src: __u64, +pub len: __u64, +pub mode: __u64, +pub copy: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_zeropage { +pub range: uffdio_range, +pub mode: __u64, +pub zeropage: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_writeprotect { +pub range: uffdio_range, +pub mode: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_continue { +pub range: uffdio_range, +pub mode: __u64, +pub mapped: __s64, +} +#[repr(C)] +#[derive(Debug)] +pub struct linux_dirent64 { +pub d_ino: crate::ctypes::c_ulonglong, +pub d_off: crate::ctypes::c_longlong, +pub d_reclen: __u16, +pub d_type: __u8, +pub d_name: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat { +pub st_dev: crate::ctypes::c_ulong, +pub st_ino: crate::ctypes::c_ulong, +pub st_mode: crate::ctypes::c_uint, +pub st_nlink: crate::ctypes::c_uint, +pub st_uid: crate::ctypes::c_uint, +pub st_gid: crate::ctypes::c_uint, +pub st_rdev: crate::ctypes::c_ulong, +pub __pad1: crate::ctypes::c_ulong, +pub st_size: crate::ctypes::c_long, +pub st_blksize: crate::ctypes::c_int, +pub __pad2: crate::ctypes::c_int, +pub st_blocks: crate::ctypes::c_long, +pub st_atime: crate::ctypes::c_long, +pub st_atime_nsec: crate::ctypes::c_ulong, +pub st_mtime: crate::ctypes::c_long, +pub st_mtime_nsec: crate::ctypes::c_ulong, +pub st_ctime: crate::ctypes::c_long, +pub st_ctime_nsec: crate::ctypes::c_ulong, +pub __unused4: crate::ctypes::c_uint, +pub __unused5: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat64 { +pub st_dev: crate::ctypes::c_ulonglong, +pub st_ino: crate::ctypes::c_ulonglong, +pub st_mode: crate::ctypes::c_uint, +pub st_nlink: crate::ctypes::c_uint, +pub st_uid: crate::ctypes::c_uint, +pub st_gid: crate::ctypes::c_uint, +pub st_rdev: crate::ctypes::c_ulonglong, +pub __pad1: crate::ctypes::c_ulonglong, +pub st_size: crate::ctypes::c_longlong, +pub st_blksize: crate::ctypes::c_int, +pub __pad2: crate::ctypes::c_int, +pub st_blocks: crate::ctypes::c_longlong, +pub st_atime: crate::ctypes::c_int, +pub st_atime_nsec: crate::ctypes::c_uint, +pub st_mtime: crate::ctypes::c_int, +pub st_mtime_nsec: crate::ctypes::c_uint, +pub st_ctime: crate::ctypes::c_int, +pub st_ctime_nsec: crate::ctypes::c_uint, +pub __unused4: crate::ctypes::c_uint, +pub __unused5: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u32, +pub f_bfree: __u32, +pub f_bavail: __u32, +pub f_files: __u32, +pub f_ffree: __u32, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct compat_statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct user_desc { +pub entry_number: crate::ctypes::c_uint, +pub base_addr: crate::ctypes::c_uint, +pub limit: crate::ctypes::c_uint, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub __bindgen_padding_0: [u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct kernel_sigset_t { +pub sig: [crate::ctypes::c_ulong; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct kernel_sigaction { +pub sa_handler_kernel: __kernel_sighandler_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_mask: kernel_sigset_t, +} +pub const LINUX_VERSION_CODE: u32 = 393984; +pub const LINUX_VERSION_MAJOR: u32 = 6; +pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; +pub const LINUX_VERSION_SUBLEVEL: u32 = 0; +pub const AT_SYSINFO_EHDR: u32 = 33; +pub const AT_L1I_CACHESIZE: u32 = 40; +pub const AT_L1I_CACHEGEOMETRY: u32 = 41; +pub const AT_L1D_CACHESIZE: u32 = 42; +pub const AT_L1D_CACHEGEOMETRY: u32 = 43; +pub const AT_L2_CACHESIZE: u32 = 44; +pub const AT_L2_CACHEGEOMETRY: u32 = 45; +pub const AT_L3_CACHESIZE: u32 = 46; +pub const AT_L3_CACHEGEOMETRY: u32 = 47; +pub const AT_VECTOR_SIZE_ARCH: u32 = 9; +pub const AT_NULL: u32 = 0; +pub const AT_IGNORE: u32 = 1; +pub const AT_EXECFD: u32 = 2; +pub const AT_PHDR: u32 = 3; +pub const AT_PHENT: u32 = 4; +pub const AT_PHNUM: u32 = 5; +pub const AT_PAGESZ: u32 = 6; +pub const AT_BASE: u32 = 7; +pub const AT_FLAGS: u32 = 8; +pub const AT_ENTRY: u32 = 9; +pub const AT_NOTELF: u32 = 10; +pub const AT_UID: u32 = 11; +pub const AT_EUID: u32 = 12; +pub const AT_GID: u32 = 13; +pub const AT_EGID: u32 = 14; +pub const AT_PLATFORM: u32 = 15; +pub const AT_HWCAP: u32 = 16; +pub const AT_CLKTCK: u32 = 17; +pub const AT_SECURE: u32 = 23; +pub const AT_BASE_PLATFORM: u32 = 24; +pub const AT_RANDOM: u32 = 25; +pub const AT_HWCAP2: u32 = 26; +pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; +pub const AT_RSEQ_ALIGN: u32 = 28; +pub const AT_EXECFN: u32 = 31; +pub const AT_MINSIGSTKSZ: u32 = 51; +pub const __FD_SETSIZE: u32 = 1024; +pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; +pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; +pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; +pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; +pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; +pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; +pub const VFS_CAP_REVISION_SHIFT: u32 = 24; +pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; +pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; +pub const VFS_CAP_REVISION_1: u32 = 16777216; +pub const VFS_CAP_U32_1: u32 = 1; +pub const VFS_CAP_REVISION_2: u32 = 33554432; +pub const VFS_CAP_U32_2: u32 = 2; +pub const VFS_CAP_REVISION_3: u32 = 50331648; +pub const VFS_CAP_U32_3: u32 = 2; +pub const VFS_CAP_U32: u32 = 2; +pub const VFS_CAP_REVISION: u32 = 50331648; +pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S: u32 = 1; +pub const CAP_CHOWN: u32 = 0; +pub const CAP_DAC_OVERRIDE: u32 = 1; +pub const CAP_DAC_READ_SEARCH: u32 = 2; +pub const CAP_FOWNER: u32 = 3; +pub const CAP_FSETID: u32 = 4; +pub const CAP_KILL: u32 = 5; +pub const CAP_SETGID: u32 = 6; +pub const CAP_SETUID: u32 = 7; +pub const CAP_SETPCAP: u32 = 8; +pub const CAP_LINUX_IMMUTABLE: u32 = 9; +pub const CAP_NET_BIND_SERVICE: u32 = 10; +pub const CAP_NET_BROADCAST: u32 = 11; +pub const CAP_NET_ADMIN: u32 = 12; +pub const CAP_NET_RAW: u32 = 13; +pub const CAP_IPC_LOCK: u32 = 14; +pub const CAP_IPC_OWNER: u32 = 15; +pub const CAP_SYS_MODULE: u32 = 16; +pub const CAP_SYS_RAWIO: u32 = 17; +pub const CAP_SYS_CHROOT: u32 = 18; +pub const CAP_SYS_PTRACE: u32 = 19; +pub const CAP_SYS_PACCT: u32 = 20; +pub const CAP_SYS_ADMIN: u32 = 21; +pub const CAP_SYS_BOOT: u32 = 22; +pub const CAP_SYS_NICE: u32 = 23; +pub const CAP_SYS_RESOURCE: u32 = 24; +pub const CAP_SYS_TIME: u32 = 25; +pub const CAP_SYS_TTY_CONFIG: u32 = 26; +pub const CAP_MKNOD: u32 = 27; +pub const CAP_LEASE: u32 = 28; +pub const CAP_AUDIT_WRITE: u32 = 29; +pub const CAP_AUDIT_CONTROL: u32 = 30; +pub const CAP_SETFCAP: u32 = 31; +pub const CAP_MAC_OVERRIDE: u32 = 32; +pub const CAP_MAC_ADMIN: u32 = 33; +pub const CAP_SYSLOG: u32 = 34; +pub const CAP_WAKE_ALARM: u32 = 35; +pub const CAP_BLOCK_SUSPEND: u32 = 36; +pub const CAP_AUDIT_READ: u32 = 37; +pub const CAP_PERFMON: u32 = 38; +pub const CAP_BPF: u32 = 39; +pub const CAP_CHECKPOINT_RESTORE: u32 = 40; +pub const CAP_LAST_CAP: u32 = 40; +pub const O_ACCMODE: u32 = 3; +pub const O_RDONLY: u32 = 0; +pub const O_WRONLY: u32 = 1; +pub const O_RDWR: u32 = 2; +pub const O_CREAT: u32 = 64; +pub const O_EXCL: u32 = 128; +pub const O_NOCTTY: u32 = 256; +pub const O_TRUNC: u32 = 512; +pub const O_APPEND: u32 = 1024; +pub const O_NONBLOCK: u32 = 2048; +pub const O_DSYNC: u32 = 4096; +pub const FASYNC: u32 = 8192; +pub const O_DIRECT: u32 = 16384; +pub const O_LARGEFILE: u32 = 32768; +pub const O_DIRECTORY: u32 = 65536; +pub const O_NOFOLLOW: u32 = 131072; +pub const O_NOATIME: u32 = 262144; +pub const O_CLOEXEC: u32 = 524288; +pub const __O_SYNC: u32 = 1048576; +pub const O_SYNC: u32 = 1052672; +pub const O_PATH: u32 = 2097152; +pub const __O_TMPFILE: u32 = 4194304; +pub const O_TMPFILE: u32 = 4259840; +pub const O_TMPFILE_MASK: u32 = 4259904; +pub const O_NDELAY: u32 = 2048; +pub const F_DUPFD: u32 = 0; +pub const F_GETFD: u32 = 1; +pub const F_SETFD: u32 = 2; +pub const F_GETFL: u32 = 3; +pub const F_SETFL: u32 = 4; +pub const F_GETLK: u32 = 5; +pub const F_SETLK: u32 = 6; +pub const F_SETLKW: u32 = 7; +pub const F_SETOWN: u32 = 8; +pub const F_GETOWN: u32 = 9; +pub const F_SETSIG: u32 = 10; +pub const F_GETSIG: u32 = 11; +pub const F_GETLK64: u32 = 12; +pub const F_SETLK64: u32 = 13; +pub const F_SETLKW64: u32 = 14; +pub const F_SETOWN_EX: u32 = 15; +pub const F_GETOWN_EX: u32 = 16; +pub const F_GETOWNER_UIDS: u32 = 17; +pub const F_OFD_GETLK: u32 = 36; +pub const F_OFD_SETLK: u32 = 37; +pub const F_OFD_SETLKW: u32 = 38; +pub const F_OWNER_TID: u32 = 0; +pub const F_OWNER_PID: u32 = 1; +pub const F_OWNER_PGRP: u32 = 2; +pub const FD_CLOEXEC: u32 = 1; +pub const F_RDLCK: u32 = 0; +pub const F_WRLCK: u32 = 1; +pub const F_UNLCK: u32 = 2; +pub const F_EXLCK: u32 = 4; +pub const F_SHLCK: u32 = 8; +pub const LOCK_SH: u32 = 1; +pub const LOCK_EX: u32 = 2; +pub const LOCK_NB: u32 = 4; +pub const LOCK_UN: u32 = 8; +pub const LOCK_MAND: u32 = 32; +pub const LOCK_READ: u32 = 64; +pub const LOCK_WRITE: u32 = 128; +pub const LOCK_RW: u32 = 192; +pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; +pub const RESOLVE_NO_XDEV: u32 = 1; +pub const RESOLVE_NO_MAGICLINKS: u32 = 2; +pub const RESOLVE_NO_SYMLINKS: u32 = 4; +pub const RESOLVE_BENEATH: u32 = 8; +pub const RESOLVE_IN_ROOT: u32 = 16; +pub const RESOLVE_CACHED: u32 = 32; +pub const F_SETLEASE: u32 = 1024; +pub const F_GETLEASE: u32 = 1025; +pub const F_CANCELLK: u32 = 1029; +pub const F_DUPFD_CLOEXEC: u32 = 1030; +pub const F_NOTIFY: u32 = 1026; +pub const F_SETPIPE_SZ: u32 = 1031; +pub const F_GETPIPE_SZ: u32 = 1032; +pub const F_ADD_SEALS: u32 = 1033; +pub const F_GET_SEALS: u32 = 1034; +pub const F_SEAL_SEAL: u32 = 1; +pub const F_SEAL_SHRINK: u32 = 2; +pub const F_SEAL_GROW: u32 = 4; +pub const F_SEAL_WRITE: u32 = 8; +pub const F_SEAL_FUTURE_WRITE: u32 = 16; +pub const F_SEAL_EXEC: u32 = 32; +pub const F_GET_RW_HINT: u32 = 1035; +pub const F_SET_RW_HINT: u32 = 1036; +pub const F_GET_FILE_RW_HINT: u32 = 1037; +pub const F_SET_FILE_RW_HINT: u32 = 1038; +pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; +pub const RWH_WRITE_LIFE_NONE: u32 = 1; +pub const RWH_WRITE_LIFE_SHORT: u32 = 2; +pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; +pub const RWH_WRITE_LIFE_LONG: u32 = 4; +pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; +pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; +pub const DN_ACCESS: u32 = 1; +pub const DN_MODIFY: u32 = 2; +pub const DN_CREATE: u32 = 4; +pub const DN_DELETE: u32 = 8; +pub const DN_RENAME: u32 = 16; +pub const DN_ATTRIB: u32 = 32; +pub const DN_MULTISHOT: u32 = 2147483648; +pub const AT_FDCWD: i32 = -100; +pub const AT_SYMLINK_NOFOLLOW: u32 = 256; +pub const AT_EACCESS: u32 = 512; +pub const AT_REMOVEDIR: u32 = 512; +pub const AT_SYMLINK_FOLLOW: u32 = 1024; +pub const AT_NO_AUTOMOUNT: u32 = 2048; +pub const AT_EMPTY_PATH: u32 = 4096; +pub const AT_STATX_SYNC_TYPE: u32 = 24576; +pub const AT_STATX_SYNC_AS_STAT: u32 = 0; +pub const AT_STATX_FORCE_SYNC: u32 = 8192; +pub const AT_STATX_DONT_SYNC: u32 = 16384; +pub const AT_RECURSIVE: u32 = 32768; +pub const EPOLL_CLOEXEC: u32 = 524288; +pub const EPOLL_CTL_ADD: u32 = 1; +pub const EPOLL_CTL_DEL: u32 = 2; +pub const EPOLL_CTL_MOD: u32 = 3; +pub const POSIX_FADV_NORMAL: u32 = 0; +pub const POSIX_FADV_RANDOM: u32 = 1; +pub const POSIX_FADV_SEQUENTIAL: u32 = 2; +pub const POSIX_FADV_WILLNEED: u32 = 3; +pub const POSIX_FADV_DONTNEED: u32 = 4; +pub const POSIX_FADV_NOREUSE: u32 = 5; +pub const FALLOC_FL_KEEP_SIZE: u32 = 1; +pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; +pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; +pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; +pub const FALLOC_FL_ZERO_RANGE: u32 = 16; +pub const FALLOC_FL_INSERT_RANGE: u32 = 32; +pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 14; +pub const _IOC_DIRBITS: u32 = 2; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 3; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 30; +pub const _IOC_NONE: u32 = 0; +pub const _IOC_WRITE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const IOC_IN: u32 = 1073741824; +pub const IOC_OUT: u32 = 2147483648; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const OPEN_TREE_CLOEXEC: u32 = 524288; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const FUTEX_WAIT: u32 = 0; +pub const FUTEX_WAKE: u32 = 1; +pub const FUTEX_FD: u32 = 2; +pub const FUTEX_REQUEUE: u32 = 3; +pub const FUTEX_CMP_REQUEUE: u32 = 4; +pub const FUTEX_WAKE_OP: u32 = 5; +pub const FUTEX_LOCK_PI: u32 = 6; +pub const FUTEX_UNLOCK_PI: u32 = 7; +pub const FUTEX_TRYLOCK_PI: u32 = 8; +pub const FUTEX_WAIT_BITSET: u32 = 9; +pub const FUTEX_WAKE_BITSET: u32 = 10; +pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; +pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; +pub const FUTEX_LOCK_PI2: u32 = 13; +pub const FUTEX_PRIVATE_FLAG: u32 = 128; +pub const FUTEX_CLOCK_REALTIME: u32 = 256; +pub const FUTEX_CMD_MASK: i32 = -385; +pub const FUTEX_WAIT_PRIVATE: u32 = 128; +pub const FUTEX_WAKE_PRIVATE: u32 = 129; +pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; +pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; +pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; +pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; +pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; +pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; +pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; +pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; +pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; +pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; +pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; +pub const FUTEX_32: u32 = 2; +pub const FUTEX_WAITV_MAX: u32 = 128; +pub const FUTEX_WAITERS: u32 = 2147483648; +pub const FUTEX_OWNER_DIED: u32 = 1073741824; +pub const FUTEX_TID_MASK: u32 = 1073741823; +pub const ROBUST_LIST_LIMIT: u32 = 2048; +pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; +pub const FUTEX_OP_SET: u32 = 0; +pub const FUTEX_OP_ADD: u32 = 1; +pub const FUTEX_OP_OR: u32 = 2; +pub const FUTEX_OP_ANDN: u32 = 3; +pub const FUTEX_OP_XOR: u32 = 4; +pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; +pub const FUTEX_OP_CMP_EQ: u32 = 0; +pub const FUTEX_OP_CMP_NE: u32 = 1; +pub const FUTEX_OP_CMP_LT: u32 = 2; +pub const FUTEX_OP_CMP_LE: u32 = 3; +pub const FUTEX_OP_CMP_GT: u32 = 4; +pub const FUTEX_OP_CMP_GE: u32 = 5; +pub const IN_ACCESS: u32 = 1; +pub const IN_MODIFY: u32 = 2; +pub const IN_ATTRIB: u32 = 4; +pub const IN_CLOSE_WRITE: u32 = 8; +pub const IN_CLOSE_NOWRITE: u32 = 16; +pub const IN_OPEN: u32 = 32; +pub const IN_MOVED_FROM: u32 = 64; +pub const IN_MOVED_TO: u32 = 128; +pub const IN_CREATE: u32 = 256; +pub const IN_DELETE: u32 = 512; +pub const IN_DELETE_SELF: u32 = 1024; +pub const IN_MOVE_SELF: u32 = 2048; +pub const IN_UNMOUNT: u32 = 8192; +pub const IN_Q_OVERFLOW: u32 = 16384; +pub const IN_IGNORED: u32 = 32768; +pub const IN_CLOSE: u32 = 24; +pub const IN_MOVE: u32 = 192; +pub const IN_ONLYDIR: u32 = 16777216; +pub const IN_DONT_FOLLOW: u32 = 33554432; +pub const IN_EXCL_UNLINK: u32 = 67108864; +pub const IN_MASK_CREATE: u32 = 268435456; +pub const IN_MASK_ADD: u32 = 536870912; +pub const IN_ISDIR: u32 = 1073741824; +pub const IN_ONESHOT: u32 = 2147483648; +pub const IN_ALL_EVENTS: u32 = 4095; +pub const IN_CLOEXEC: u32 = 524288; +pub const IN_NONBLOCK: u32 = 2048; +pub const ADFS_SUPER_MAGIC: u32 = 44533; +pub const AFFS_SUPER_MAGIC: u32 = 44543; +pub const AFS_SUPER_MAGIC: u32 = 1397113167; +pub const AUTOFS_SUPER_MAGIC: u32 = 391; +pub const CEPH_SUPER_MAGIC: u32 = 12805120; +pub const CODA_SUPER_MAGIC: u32 = 1937076805; +pub const CRAMFS_MAGIC: u32 = 684539205; +pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; +pub const DEBUGFS_MAGIC: u32 = 1684170528; +pub const SECURITYFS_MAGIC: u32 = 1935894131; +pub const SELINUX_MAGIC: u32 = 4185718668; +pub const SMACK_MAGIC: u32 = 1128357203; +pub const RAMFS_MAGIC: u32 = 2240043254; +pub const TMPFS_MAGIC: u32 = 16914836; +pub const HUGETLBFS_MAGIC: u32 = 2508478710; +pub const SQUASHFS_MAGIC: u32 = 1936814952; +pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; +pub const EFS_SUPER_MAGIC: u32 = 4278867; +pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; +pub const EXT2_SUPER_MAGIC: u32 = 61267; +pub const EXT3_SUPER_MAGIC: u32 = 61267; +pub const XENFS_SUPER_MAGIC: u32 = 2881100148; +pub const EXT4_SUPER_MAGIC: u32 = 61267; +pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; +pub const NILFS_SUPER_MAGIC: u32 = 13364; +pub const F2FS_SUPER_MAGIC: u32 = 4076150800; +pub const HPFS_SUPER_MAGIC: u32 = 4187351113; +pub const ISOFS_SUPER_MAGIC: u32 = 38496; +pub const JFFS2_SUPER_MAGIC: u32 = 29366; +pub const XFS_SUPER_MAGIC: u32 = 1481003842; +pub const PSTOREFS_MAGIC: u32 = 1634035564; +pub const EFIVARFS_MAGIC: u32 = 3730735588; +pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; +pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; +pub const FUSE_SUPER_MAGIC: u32 = 1702057286; +pub const MINIX_SUPER_MAGIC: u32 = 4991; +pub const MINIX_SUPER_MAGIC2: u32 = 5007; +pub const MINIX2_SUPER_MAGIC: u32 = 9320; +pub const MINIX2_SUPER_MAGIC2: u32 = 9336; +pub const MINIX3_SUPER_MAGIC: u32 = 19802; +pub const MSDOS_SUPER_MAGIC: u32 = 19780; +pub const EXFAT_SUPER_MAGIC: u32 = 538032816; +pub const NCP_SUPER_MAGIC: u32 = 22092; +pub const NFS_SUPER_MAGIC: u32 = 26985; +pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; +pub const OPENPROM_SUPER_MAGIC: u32 = 40865; +pub const QNX4_SUPER_MAGIC: u32 = 47; +pub const QNX6_SUPER_MAGIC: u32 = 1746473250; +pub const AFS_FS_MAGIC: u32 = 1799439955; +pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; +pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9] = b"ReIsErFs\0"; +pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr2Fs\0"; +pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr3Fs\0"; +pub const SMB_SUPER_MAGIC: u32 = 20859; +pub const CIFS_SUPER_MAGIC: u32 = 4283649346; +pub const SMB2_SUPER_MAGIC: u32 = 4266872130; +pub const CGROUP_SUPER_MAGIC: u32 = 2613483; +pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; +pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; +pub const STACK_END_MAGIC: u32 = 1470918301; +pub const TRACEFS_MAGIC: u32 = 1953653091; +pub const V9FS_MAGIC: u32 = 16914839; +pub const BDEVFS_MAGIC: u32 = 1650746742; +pub const DAXFS_MAGIC: u32 = 1684300152; +pub const BINFMTFS_MAGIC: u32 = 1112100429; +pub const DEVPTS_SUPER_MAGIC: u32 = 7377; +pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; +pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; +pub const PIPEFS_MAGIC: u32 = 1346981957; +pub const PROC_SUPER_MAGIC: u32 = 40864; +pub const SOCKFS_MAGIC: u32 = 1397703499; +pub const SYSFS_MAGIC: u32 = 1650812274; +pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; +pub const MTD_INODE_FS_MAGIC: u32 = 288389204; +pub const ANON_INODE_FS_MAGIC: u32 = 151263540; +pub const BTRFS_TEST_MAGIC: u32 = 1936880249; +pub const NSFS_MAGIC: u32 = 1853056627; +pub const BPF_FS_MAGIC: u32 = 3405662737; +pub const AAFS_MAGIC: u32 = 1513908720; +pub const ZONEFS_MAGIC: u32 = 1515144787; +pub const UDF_SUPER_MAGIC: u32 = 352400198; +pub const DMA_BUF_MAGIC: u32 = 1145913666; +pub const DEVMEM_MAGIC: u32 = 1162691661; +pub const SECRETMEM_MAGIC: u32 = 1397048141; +pub const PROT_READ: u32 = 1; +pub const PROT_WRITE: u32 = 2; +pub const PROT_EXEC: u32 = 4; +pub const PROT_SEM: u32 = 8; +pub const PROT_NONE: u32 = 0; +pub const PROT_GROWSDOWN: u32 = 16777216; +pub const PROT_GROWSUP: u32 = 33554432; +pub const MAP_TYPE: u32 = 15; +pub const MAP_FIXED: u32 = 16; +pub const MAP_ANONYMOUS: u32 = 32; +pub const MAP_POPULATE: u32 = 32768; +pub const MAP_NONBLOCK: u32 = 65536; +pub const MAP_STACK: u32 = 131072; +pub const MAP_HUGETLB: u32 = 262144; +pub const MAP_SYNC: u32 = 524288; +pub const MAP_FIXED_NOREPLACE: u32 = 1048576; +pub const MAP_UNINITIALIZED: u32 = 67108864; +pub const MLOCK_ONFAULT: u32 = 1; +pub const MS_ASYNC: u32 = 1; +pub const MS_INVALIDATE: u32 = 2; +pub const MS_SYNC: u32 = 4; +pub const MADV_NORMAL: u32 = 0; +pub const MADV_RANDOM: u32 = 1; +pub const MADV_SEQUENTIAL: u32 = 2; +pub const MADV_WILLNEED: u32 = 3; +pub const MADV_DONTNEED: u32 = 4; +pub const MADV_FREE: u32 = 8; +pub const MADV_REMOVE: u32 = 9; +pub const MADV_DONTFORK: u32 = 10; +pub const MADV_DOFORK: u32 = 11; +pub const MADV_HWPOISON: u32 = 100; +pub const MADV_SOFT_OFFLINE: u32 = 101; +pub const MADV_MERGEABLE: u32 = 12; +pub const MADV_UNMERGEABLE: u32 = 13; +pub const MADV_HUGEPAGE: u32 = 14; +pub const MADV_NOHUGEPAGE: u32 = 15; +pub const MADV_DONTDUMP: u32 = 16; +pub const MADV_DODUMP: u32 = 17; +pub const MADV_WIPEONFORK: u32 = 18; +pub const MADV_KEEPONFORK: u32 = 19; +pub const MADV_COLD: u32 = 20; +pub const MADV_PAGEOUT: u32 = 21; +pub const MADV_POPULATE_READ: u32 = 22; +pub const MADV_POPULATE_WRITE: u32 = 23; +pub const MADV_DONTNEED_LOCKED: u32 = 24; +pub const MADV_COLLAPSE: u32 = 25; +pub const MAP_FILE: u32 = 0; +pub const PKEY_DISABLE_ACCESS: u32 = 1; +pub const PKEY_DISABLE_WRITE: u32 = 2; +pub const PKEY_ACCESS_MASK: u32 = 3; +pub const MAP_GROWSDOWN: u32 = 256; +pub const MAP_DENYWRITE: u32 = 2048; +pub const MAP_EXECUTABLE: u32 = 4096; +pub const MAP_LOCKED: u32 = 8192; +pub const MAP_NORESERVE: u32 = 16384; +pub const MCL_CURRENT: u32 = 1; +pub const MCL_FUTURE: u32 = 2; +pub const MCL_ONFAULT: u32 = 4; +pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; +pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; +pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; +pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; +pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; +pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; +pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; +pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; +pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; +pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; +pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; +pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; +pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; +pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; +pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; +pub const MREMAP_MAYMOVE: u32 = 1; +pub const MREMAP_FIXED: u32 = 2; +pub const MREMAP_DONTUNMAP: u32 = 4; +pub const OVERCOMMIT_GUESS: u32 = 0; +pub const OVERCOMMIT_ALWAYS: u32 = 1; +pub const OVERCOMMIT_NEVER: u32 = 2; +pub const MAP_SHARED: u32 = 1; +pub const MAP_PRIVATE: u32 = 2; +pub const MAP_SHARED_VALIDATE: u32 = 3; +pub const MAP_HUGE_SHIFT: u32 = 26; +pub const MAP_HUGE_MASK: u32 = 63; +pub const MAP_HUGE_16KB: u32 = 939524096; +pub const MAP_HUGE_64KB: u32 = 1073741824; +pub const MAP_HUGE_512KB: u32 = 1275068416; +pub const MAP_HUGE_1MB: u32 = 1342177280; +pub const MAP_HUGE_2MB: u32 = 1409286144; +pub const MAP_HUGE_8MB: u32 = 1543503872; +pub const MAP_HUGE_16MB: u32 = 1610612736; +pub const MAP_HUGE_32MB: u32 = 1677721600; +pub const MAP_HUGE_256MB: u32 = 1879048192; +pub const MAP_HUGE_512MB: u32 = 1946157056; +pub const MAP_HUGE_1GB: u32 = 2013265920; +pub const MAP_HUGE_2GB: u32 = 2080374784; +pub const MAP_HUGE_16GB: u32 = 2281701376; +pub const POLLIN: u32 = 1; +pub const POLLPRI: u32 = 2; +pub const POLLOUT: u32 = 4; +pub const POLLERR: u32 = 8; +pub const POLLHUP: u32 = 16; +pub const POLLNVAL: u32 = 32; +pub const POLLRDNORM: u32 = 64; +pub const POLLRDBAND: u32 = 128; +pub const POLLWRNORM: u32 = 256; +pub const POLLWRBAND: u32 = 512; +pub const POLLMSG: u32 = 1024; +pub const POLLREMOVE: u32 = 4096; +pub const POLLRDHUP: u32 = 8192; +pub const GRND_NONBLOCK: u32 = 1; +pub const GRND_RANDOM: u32 = 2; +pub const GRND_INSECURE: u32 = 4; +pub const ITIMER_REAL: u32 = 0; +pub const ITIMER_VIRTUAL: u32 = 1; +pub const ITIMER_PROF: u32 = 2; +pub const CLOCK_REALTIME: u32 = 0; +pub const CLOCK_MONOTONIC: u32 = 1; +pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; +pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; +pub const CLOCK_MONOTONIC_RAW: u32 = 4; +pub const CLOCK_REALTIME_COARSE: u32 = 5; +pub const CLOCK_MONOTONIC_COARSE: u32 = 6; +pub const CLOCK_BOOTTIME: u32 = 7; +pub const CLOCK_REALTIME_ALARM: u32 = 8; +pub const CLOCK_BOOTTIME_ALARM: u32 = 9; +pub const CLOCK_SGI_CYCLE: u32 = 10; +pub const CLOCK_TAI: u32 = 11; +pub const MAX_CLOCKS: u32 = 16; +pub const CLOCKS_MASK: u32 = 1; +pub const CLOCKS_MONO: u32 = 1; +pub const TIMER_ABSTIME: u32 = 1; +pub const RUSAGE_SELF: u32 = 0; +pub const RUSAGE_CHILDREN: i32 = -1; +pub const RUSAGE_BOTH: i32 = -2; +pub const RUSAGE_THREAD: u32 = 1; +pub const RLIM64_INFINITY: i32 = -1; +pub const PRIO_MIN: i32 = -20; +pub const PRIO_MAX: u32 = 20; +pub const PRIO_PROCESS: u32 = 0; +pub const PRIO_PGRP: u32 = 1; +pub const PRIO_USER: u32 = 2; +pub const _STK_LIM: u32 = 8388608; +pub const MLOCK_LIMIT: u32 = 8388608; +pub const RLIMIT_CPU: u32 = 0; +pub const RLIMIT_FSIZE: u32 = 1; +pub const RLIMIT_DATA: u32 = 2; +pub const RLIMIT_STACK: u32 = 3; +pub const RLIMIT_CORE: u32 = 4; +pub const RLIMIT_RSS: u32 = 5; +pub const RLIMIT_NPROC: u32 = 6; +pub const RLIMIT_NOFILE: u32 = 7; +pub const RLIMIT_MEMLOCK: u32 = 8; +pub const RLIMIT_AS: u32 = 9; +pub const RLIMIT_LOCKS: u32 = 10; +pub const RLIMIT_SIGPENDING: u32 = 11; +pub const RLIMIT_MSGQUEUE: u32 = 12; +pub const RLIMIT_NICE: u32 = 13; +pub const RLIMIT_RTPRIO: u32 = 14; +pub const RLIMIT_RTTIME: u32 = 15; +pub const RLIM_NLIMITS: u32 = 16; +pub const RLIM_INFINITY: i32 = -1; +pub const CSIGNAL: u32 = 255; +pub const CLONE_VM: u32 = 256; +pub const CLONE_FS: u32 = 512; +pub const CLONE_FILES: u32 = 1024; +pub const CLONE_SIGHAND: u32 = 2048; +pub const CLONE_PIDFD: u32 = 4096; +pub const CLONE_PTRACE: u32 = 8192; +pub const CLONE_VFORK: u32 = 16384; +pub const CLONE_PARENT: u32 = 32768; +pub const CLONE_THREAD: u32 = 65536; +pub const CLONE_NEWNS: u32 = 131072; +pub const CLONE_SYSVSEM: u32 = 262144; +pub const CLONE_SETTLS: u32 = 524288; +pub const CLONE_PARENT_SETTID: u32 = 1048576; +pub const CLONE_CHILD_CLEARTID: u32 = 2097152; +pub const CLONE_DETACHED: u32 = 4194304; +pub const CLONE_UNTRACED: u32 = 8388608; +pub const CLONE_CHILD_SETTID: u32 = 16777216; +pub const CLONE_NEWCGROUP: u32 = 33554432; +pub const CLONE_NEWUTS: u32 = 67108864; +pub const CLONE_NEWIPC: u32 = 134217728; +pub const CLONE_NEWUSER: u32 = 268435456; +pub const CLONE_NEWPID: u32 = 536870912; +pub const CLONE_NEWNET: u32 = 1073741824; +pub const CLONE_IO: u32 = 2147483648; +pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; +pub const CLONE_INTO_CGROUP: u64 = 8589934592; +pub const CLONE_NEWTIME: u32 = 128; +pub const CLONE_ARGS_SIZE_VER0: u32 = 64; +pub const CLONE_ARGS_SIZE_VER1: u32 = 80; +pub const CLONE_ARGS_SIZE_VER2: u32 = 88; +pub const SCHED_NORMAL: u32 = 0; +pub const SCHED_FIFO: u32 = 1; +pub const SCHED_RR: u32 = 2; +pub const SCHED_BATCH: u32 = 3; +pub const SCHED_IDLE: u32 = 5; +pub const SCHED_DEADLINE: u32 = 6; +pub const SCHED_RESET_ON_FORK: u32 = 1073741824; +pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; +pub const SCHED_FLAG_RECLAIM: u32 = 2; +pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; +pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; +pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; +pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; +pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; +pub const SCHED_FLAG_KEEP_ALL: u32 = 24; +pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; +pub const SCHED_FLAG_ALL: u32 = 127; +pub const _NSIG: u32 = 64; +pub const SIGHUP: u32 = 1; +pub const SIGINT: u32 = 2; +pub const SIGQUIT: u32 = 3; +pub const SIGILL: u32 = 4; +pub const SIGTRAP: u32 = 5; +pub const SIGABRT: u32 = 6; +pub const SIGIOT: u32 = 6; +pub const SIGBUS: u32 = 7; +pub const SIGFPE: u32 = 8; +pub const SIGKILL: u32 = 9; +pub const SIGUSR1: u32 = 10; +pub const SIGSEGV: u32 = 11; +pub const SIGUSR2: u32 = 12; +pub const SIGPIPE: u32 = 13; +pub const SIGALRM: u32 = 14; +pub const SIGTERM: u32 = 15; +pub const SIGSTKFLT: u32 = 16; +pub const SIGCHLD: u32 = 17; +pub const SIGCONT: u32 = 18; +pub const SIGSTOP: u32 = 19; +pub const SIGTSTP: u32 = 20; +pub const SIGTTIN: u32 = 21; +pub const SIGTTOU: u32 = 22; +pub const SIGURG: u32 = 23; +pub const SIGXCPU: u32 = 24; +pub const SIGXFSZ: u32 = 25; +pub const SIGVTALRM: u32 = 26; +pub const SIGPROF: u32 = 27; +pub const SIGWINCH: u32 = 28; +pub const SIGIO: u32 = 29; +pub const SIGPOLL: u32 = 29; +pub const SIGPWR: u32 = 30; +pub const SIGSYS: u32 = 31; +pub const SIGUNUSED: u32 = 31; +pub const SIGRTMIN: u32 = 32; +pub const SIGRTMAX: u32 = 64; +pub const MINSIGSTKSZ: u32 = 2048; +pub const SIGSTKSZ: u32 = 8192; +pub const SA_NOCLDSTOP: u32 = 1; +pub const SA_NOCLDWAIT: u32 = 2; +pub const SA_SIGINFO: u32 = 4; +pub const SA_UNSUPPORTED: u32 = 1024; +pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SA_ONSTACK: u32 = 134217728; +pub const SA_RESTART: u32 = 268435456; +pub const SA_NODEFER: u32 = 1073741824; +pub const SA_RESETHAND: u32 = 2147483648; +pub const SA_NOMASK: u32 = 1073741824; +pub const SA_ONESHOT: u32 = 2147483648; +pub const SIG_BLOCK: u32 = 0; +pub const SIG_UNBLOCK: u32 = 1; +pub const SIG_SETMASK: u32 = 2; +pub const SI_MAX_SIZE: u32 = 128; +pub const SI_USER: u32 = 0; +pub const SI_KERNEL: u32 = 128; +pub const SI_QUEUE: i32 = -1; +pub const SI_TIMER: i32 = -2; +pub const SI_MESGQ: i32 = -3; +pub const SI_ASYNCIO: i32 = -4; +pub const SI_SIGIO: i32 = -5; +pub const SI_TKILL: i32 = -6; +pub const SI_DETHREAD: i32 = -7; +pub const SI_ASYNCNL: i32 = -60; +pub const ILL_ILLOPC: u32 = 1; +pub const ILL_ILLOPN: u32 = 2; +pub const ILL_ILLADR: u32 = 3; +pub const ILL_ILLTRP: u32 = 4; +pub const ILL_PRVOPC: u32 = 5; +pub const ILL_PRVREG: u32 = 6; +pub const ILL_COPROC: u32 = 7; +pub const ILL_BADSTK: u32 = 8; +pub const ILL_BADIADDR: u32 = 9; +pub const __ILL_BREAK: u32 = 10; +pub const __ILL_BNDMOD: u32 = 11; +pub const NSIGILL: u32 = 11; +pub const FPE_INTDIV: u32 = 1; +pub const FPE_INTOVF: u32 = 2; +pub const FPE_FLTDIV: u32 = 3; +pub const FPE_FLTOVF: u32 = 4; +pub const FPE_FLTUND: u32 = 5; +pub const FPE_FLTRES: u32 = 6; +pub const FPE_FLTINV: u32 = 7; +pub const FPE_FLTSUB: u32 = 8; +pub const __FPE_DECOVF: u32 = 9; +pub const __FPE_DECDIV: u32 = 10; +pub const __FPE_DECERR: u32 = 11; +pub const __FPE_INVASC: u32 = 12; +pub const __FPE_INVDEC: u32 = 13; +pub const FPE_FLTUNK: u32 = 14; +pub const FPE_CONDTRAP: u32 = 15; +pub const NSIGFPE: u32 = 15; +pub const SEGV_MAPERR: u32 = 1; +pub const SEGV_ACCERR: u32 = 2; +pub const SEGV_BNDERR: u32 = 3; +pub const SEGV_PKUERR: u32 = 4; +pub const SEGV_ACCADI: u32 = 5; +pub const SEGV_ADIDERR: u32 = 6; +pub const SEGV_ADIPERR: u32 = 7; +pub const SEGV_MTEAERR: u32 = 8; +pub const SEGV_MTESERR: u32 = 9; +pub const NSIGSEGV: u32 = 9; +pub const BUS_ADRALN: u32 = 1; +pub const BUS_ADRERR: u32 = 2; +pub const BUS_OBJERR: u32 = 3; +pub const BUS_MCEERR_AR: u32 = 4; +pub const BUS_MCEERR_AO: u32 = 5; +pub const NSIGBUS: u32 = 5; +pub const TRAP_BRKPT: u32 = 1; +pub const TRAP_TRACE: u32 = 2; +pub const TRAP_BRANCH: u32 = 3; +pub const TRAP_HWBKPT: u32 = 4; +pub const TRAP_UNK: u32 = 5; +pub const TRAP_PERF: u32 = 6; +pub const NSIGTRAP: u32 = 6; +pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; +pub const CLD_EXITED: u32 = 1; +pub const CLD_KILLED: u32 = 2; +pub const CLD_DUMPED: u32 = 3; +pub const CLD_TRAPPED: u32 = 4; +pub const CLD_STOPPED: u32 = 5; +pub const CLD_CONTINUED: u32 = 6; +pub const NSIGCHLD: u32 = 6; +pub const POLL_IN: u32 = 1; +pub const POLL_OUT: u32 = 2; +pub const POLL_MSG: u32 = 3; +pub const POLL_ERR: u32 = 4; +pub const POLL_PRI: u32 = 5; +pub const POLL_HUP: u32 = 6; +pub const NSIGPOLL: u32 = 6; +pub const SYS_SECCOMP: u32 = 1; +pub const SYS_USER_DISPATCH: u32 = 2; +pub const NSIGSYS: u32 = 2; +pub const EMT_TAGOVF: u32 = 1; +pub const NSIGEMT: u32 = 1; +pub const SIGEV_SIGNAL: u32 = 0; +pub const SIGEV_NONE: u32 = 1; +pub const SIGEV_THREAD: u32 = 2; +pub const SIGEV_THREAD_ID: u32 = 4; +pub const SIGEV_MAX_SIZE: u32 = 64; +pub const SS_ONSTACK: u32 = 1; +pub const SS_DISABLE: u32 = 2; +pub const SS_AUTODISARM: u32 = 2147483648; +pub const SS_FLAG_BITS: u32 = 2147483648; +pub const S_IFMT: u32 = 61440; +pub const S_IFSOCK: u32 = 49152; +pub const S_IFLNK: u32 = 40960; +pub const S_IFREG: u32 = 32768; +pub const S_IFBLK: u32 = 24576; +pub const S_IFDIR: u32 = 16384; +pub const S_IFCHR: u32 = 8192; +pub const S_IFIFO: u32 = 4096; +pub const S_ISUID: u32 = 2048; +pub const S_ISGID: u32 = 1024; +pub const S_ISVTX: u32 = 512; +pub const S_IRWXU: u32 = 448; +pub const S_IRUSR: u32 = 256; +pub const S_IWUSR: u32 = 128; +pub const S_IXUSR: u32 = 64; +pub const S_IRWXG: u32 = 56; +pub const S_IRGRP: u32 = 32; +pub const S_IWGRP: u32 = 16; +pub const S_IXGRP: u32 = 8; +pub const S_IRWXO: u32 = 7; +pub const S_IROTH: u32 = 4; +pub const S_IWOTH: u32 = 2; +pub const S_IXOTH: u32 = 1; +pub const STATX_TYPE: u32 = 1; +pub const STATX_MODE: u32 = 2; +pub const STATX_NLINK: u32 = 4; +pub const STATX_UID: u32 = 8; +pub const STATX_GID: u32 = 16; +pub const STATX_ATIME: u32 = 32; +pub const STATX_MTIME: u32 = 64; +pub const STATX_CTIME: u32 = 128; +pub const STATX_INO: u32 = 256; +pub const STATX_SIZE: u32 = 512; +pub const STATX_BLOCKS: u32 = 1024; +pub const STATX_BASIC_STATS: u32 = 2047; +pub const STATX_BTIME: u32 = 2048; +pub const STATX_MNT_ID: u32 = 4096; +pub const STATX_DIOALIGN: u32 = 8192; +pub const STATX__RESERVED: u32 = 2147483648; +pub const STATX_ALL: u32 = 4095; +pub const STATX_ATTR_COMPRESSED: u32 = 4; +pub const STATX_ATTR_IMMUTABLE: u32 = 16; +pub const STATX_ATTR_APPEND: u32 = 32; +pub const STATX_ATTR_NODUMP: u32 = 64; +pub const STATX_ATTR_ENCRYPTED: u32 = 2048; +pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; +pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; +pub const STATX_ATTR_VERITY: u32 = 1048576; +pub const STATX_ATTR_DAX: u32 = 2097152; +pub const IGNBRK: u32 = 1; +pub const BRKINT: u32 = 2; +pub const IGNPAR: u32 = 4; +pub const PARMRK: u32 = 8; +pub const INPCK: u32 = 16; +pub const ISTRIP: u32 = 32; +pub const INLCR: u32 = 64; +pub const IGNCR: u32 = 128; +pub const ICRNL: u32 = 256; +pub const IXANY: u32 = 2048; +pub const OPOST: u32 = 1; +pub const OCRNL: u32 = 8; +pub const ONOCR: u32 = 16; +pub const ONLRET: u32 = 32; +pub const OFILL: u32 = 64; +pub const OFDEL: u32 = 128; +pub const B0: u32 = 0; +pub const B50: u32 = 1; +pub const B75: u32 = 2; +pub const B110: u32 = 3; +pub const B134: u32 = 4; +pub const B150: u32 = 5; +pub const B200: u32 = 6; +pub const B300: u32 = 7; +pub const B600: u32 = 8; +pub const B1200: u32 = 9; +pub const B1800: u32 = 10; +pub const B2400: u32 = 11; +pub const B4800: u32 = 12; +pub const B9600: u32 = 13; +pub const B19200: u32 = 14; +pub const B38400: u32 = 15; +pub const EXTA: u32 = 14; +pub const EXTB: u32 = 15; +pub const ADDRB: u32 = 536870912; +pub const CMSPAR: u32 = 1073741824; +pub const CRTSCTS: u32 = 2147483648; +pub const IBSHIFT: u32 = 16; +pub const TCOOFF: u32 = 0; +pub const TCOON: u32 = 1; +pub const TCIOFF: u32 = 2; +pub const TCION: u32 = 3; +pub const TCIFLUSH: u32 = 0; +pub const TCOFLUSH: u32 = 1; +pub const TCIOFLUSH: u32 = 2; +pub const NCCS: u32 = 19; +pub const VINTR: u32 = 0; +pub const VQUIT: u32 = 1; +pub const VERASE: u32 = 2; +pub const VKILL: u32 = 3; +pub const VEOF: u32 = 4; +pub const VTIME: u32 = 5; +pub const VMIN: u32 = 6; +pub const VSWTC: u32 = 7; +pub const VSTART: u32 = 8; +pub const VSTOP: u32 = 9; +pub const VSUSP: u32 = 10; +pub const VEOL: u32 = 11; +pub const VREPRINT: u32 = 12; +pub const VDISCARD: u32 = 13; +pub const VWERASE: u32 = 14; +pub const VLNEXT: u32 = 15; +pub const VEOL2: u32 = 16; +pub const IUCLC: u32 = 512; +pub const IXON: u32 = 1024; +pub const IXOFF: u32 = 4096; +pub const IMAXBEL: u32 = 8192; +pub const IUTF8: u32 = 16384; +pub const OLCUC: u32 = 2; +pub const ONLCR: u32 = 4; +pub const NLDLY: u32 = 256; +pub const NL0: u32 = 0; +pub const NL1: u32 = 256; +pub const CRDLY: u32 = 1536; +pub const CR0: u32 = 0; +pub const CR1: u32 = 512; +pub const CR2: u32 = 1024; +pub const CR3: u32 = 1536; +pub const TABDLY: u32 = 6144; +pub const TAB0: u32 = 0; +pub const TAB1: u32 = 2048; +pub const TAB2: u32 = 4096; +pub const TAB3: u32 = 6144; +pub const XTABS: u32 = 6144; +pub const BSDLY: u32 = 8192; +pub const BS0: u32 = 0; +pub const BS1: u32 = 8192; +pub const VTDLY: u32 = 16384; +pub const VT0: u32 = 0; +pub const VT1: u32 = 16384; +pub const FFDLY: u32 = 32768; +pub const FF0: u32 = 0; +pub const FF1: u32 = 32768; +pub const CBAUD: u32 = 4111; +pub const CSIZE: u32 = 48; +pub const CS5: u32 = 0; +pub const CS6: u32 = 16; +pub const CS7: u32 = 32; +pub const CS8: u32 = 48; +pub const CSTOPB: u32 = 64; +pub const CREAD: u32 = 128; +pub const PARENB: u32 = 256; +pub const PARODD: u32 = 512; +pub const HUPCL: u32 = 1024; +pub const CLOCAL: u32 = 2048; +pub const CBAUDEX: u32 = 4096; +pub const BOTHER: u32 = 4096; +pub const B57600: u32 = 4097; +pub const B115200: u32 = 4098; +pub const B230400: u32 = 4099; +pub const B460800: u32 = 4100; +pub const B500000: u32 = 4101; +pub const B576000: u32 = 4102; +pub const B921600: u32 = 4103; +pub const B1000000: u32 = 4104; +pub const B1152000: u32 = 4105; +pub const B1500000: u32 = 4106; +pub const B2000000: u32 = 4107; +pub const B2500000: u32 = 4108; +pub const B3000000: u32 = 4109; +pub const B3500000: u32 = 4110; +pub const B4000000: u32 = 4111; +pub const CIBAUD: u32 = 269418496; +pub const ISIG: u32 = 1; +pub const ICANON: u32 = 2; +pub const XCASE: u32 = 4; +pub const ECHO: u32 = 8; +pub const ECHOE: u32 = 16; +pub const ECHOK: u32 = 32; +pub const ECHONL: u32 = 64; +pub const NOFLSH: u32 = 128; +pub const TOSTOP: u32 = 256; +pub const ECHOCTL: u32 = 512; +pub const ECHOPRT: u32 = 1024; +pub const ECHOKE: u32 = 2048; +pub const FLUSHO: u32 = 4096; +pub const PENDIN: u32 = 16384; +pub const IEXTEN: u32 = 32768; +pub const EXTPROC: u32 = 65536; +pub const TCSANOW: u32 = 0; +pub const TCSADRAIN: u32 = 1; +pub const TCSAFLUSH: u32 = 2; +pub const TIOCPKT_DATA: u32 = 0; +pub const TIOCPKT_FLUSHREAD: u32 = 1; +pub const TIOCPKT_FLUSHWRITE: u32 = 2; +pub const TIOCPKT_STOP: u32 = 4; +pub const TIOCPKT_START: u32 = 8; +pub const TIOCPKT_NOSTOP: u32 = 16; +pub const TIOCPKT_DOSTOP: u32 = 32; +pub const TIOCPKT_IOCTL: u32 = 64; +pub const TIOCSER_TEMT: u32 = 1; +pub const NCC: u32 = 8; +pub const TIOCM_LE: u32 = 1; +pub const TIOCM_DTR: u32 = 2; +pub const TIOCM_RTS: u32 = 4; +pub const TIOCM_ST: u32 = 8; +pub const TIOCM_SR: u32 = 16; +pub const TIOCM_CTS: u32 = 32; +pub const TIOCM_CAR: u32 = 64; +pub const TIOCM_RNG: u32 = 128; +pub const TIOCM_DSR: u32 = 256; +pub const TIOCM_CD: u32 = 64; +pub const TIOCM_RI: u32 = 128; +pub const TIOCM_OUT1: u32 = 8192; +pub const TIOCM_OUT2: u32 = 16384; +pub const TIOCM_LOOP: u32 = 32768; +pub const UIO_FASTIOV: u32 = 8; +pub const UIO_MAXIOV: u32 = 1024; +pub const __NR_io_setup: u32 = 0; +pub const __NR_io_destroy: u32 = 1; +pub const __NR_io_submit: u32 = 2; +pub const __NR_io_cancel: u32 = 3; +pub const __NR_setxattr: u32 = 5; +pub const __NR_lsetxattr: u32 = 6; +pub const __NR_fsetxattr: u32 = 7; +pub const __NR_getxattr: u32 = 8; +pub const __NR_lgetxattr: u32 = 9; +pub const __NR_fgetxattr: u32 = 10; +pub const __NR_listxattr: u32 = 11; +pub const __NR_llistxattr: u32 = 12; +pub const __NR_flistxattr: u32 = 13; +pub const __NR_removexattr: u32 = 14; +pub const __NR_lremovexattr: u32 = 15; +pub const __NR_fremovexattr: u32 = 16; +pub const __NR_getcwd: u32 = 17; +pub const __NR_lookup_dcookie: u32 = 18; +pub const __NR_eventfd2: u32 = 19; +pub const __NR_epoll_create1: u32 = 20; +pub const __NR_epoll_ctl: u32 = 21; +pub const __NR_epoll_pwait: u32 = 22; +pub const __NR_dup: u32 = 23; +pub const __NR_dup3: u32 = 24; +pub const __NR3264_fcntl: u32 = 25; +pub const __NR_inotify_init1: u32 = 26; +pub const __NR_inotify_add_watch: u32 = 27; +pub const __NR_inotify_rm_watch: u32 = 28; +pub const __NR_ioctl: u32 = 29; +pub const __NR_ioprio_set: u32 = 30; +pub const __NR_ioprio_get: u32 = 31; +pub const __NR_flock: u32 = 32; +pub const __NR_mknodat: u32 = 33; +pub const __NR_mkdirat: u32 = 34; +pub const __NR_unlinkat: u32 = 35; +pub const __NR_symlinkat: u32 = 36; +pub const __NR_linkat: u32 = 37; +pub const __NR_umount2: u32 = 39; +pub const __NR_mount: u32 = 40; +pub const __NR_pivot_root: u32 = 41; +pub const __NR_nfsservctl: u32 = 42; +pub const __NR3264_statfs: u32 = 43; +pub const __NR3264_fstatfs: u32 = 44; +pub const __NR3264_truncate: u32 = 45; +pub const __NR3264_ftruncate: u32 = 46; +pub const __NR_fallocate: u32 = 47; +pub const __NR_faccessat: u32 = 48; +pub const __NR_chdir: u32 = 49; +pub const __NR_fchdir: u32 = 50; +pub const __NR_chroot: u32 = 51; +pub const __NR_fchmod: u32 = 52; +pub const __NR_fchmodat: u32 = 53; +pub const __NR_fchownat: u32 = 54; +pub const __NR_fchown: u32 = 55; +pub const __NR_openat: u32 = 56; +pub const __NR_close: u32 = 57; +pub const __NR_vhangup: u32 = 58; +pub const __NR_pipe2: u32 = 59; +pub const __NR_quotactl: u32 = 60; +pub const __NR_getdents64: u32 = 61; +pub const __NR3264_lseek: u32 = 62; +pub const __NR_read: u32 = 63; +pub const __NR_write: u32 = 64; +pub const __NR_readv: u32 = 65; +pub const __NR_writev: u32 = 66; +pub const __NR_pread64: u32 = 67; +pub const __NR_pwrite64: u32 = 68; +pub const __NR_preadv: u32 = 69; +pub const __NR_pwritev: u32 = 70; +pub const __NR3264_sendfile: u32 = 71; +pub const __NR_signalfd4: u32 = 74; +pub const __NR_vmsplice: u32 = 75; +pub const __NR_splice: u32 = 76; +pub const __NR_tee: u32 = 77; +pub const __NR_readlinkat: u32 = 78; +pub const __NR_sync: u32 = 81; +pub const __NR_fsync: u32 = 82; +pub const __NR_fdatasync: u32 = 83; +pub const __NR_sync_file_range: u32 = 84; +pub const __NR_timerfd_create: u32 = 85; +pub const __NR_acct: u32 = 89; +pub const __NR_capget: u32 = 90; +pub const __NR_capset: u32 = 91; +pub const __NR_personality: u32 = 92; +pub const __NR_exit: u32 = 93; +pub const __NR_exit_group: u32 = 94; +pub const __NR_waitid: u32 = 95; +pub const __NR_set_tid_address: u32 = 96; +pub const __NR_unshare: u32 = 97; +pub const __NR_set_robust_list: u32 = 99; +pub const __NR_get_robust_list: u32 = 100; +pub const __NR_getitimer: u32 = 102; +pub const __NR_setitimer: u32 = 103; +pub const __NR_kexec_load: u32 = 104; +pub const __NR_init_module: u32 = 105; +pub const __NR_delete_module: u32 = 106; +pub const __NR_timer_create: u32 = 107; +pub const __NR_timer_getoverrun: u32 = 109; +pub const __NR_timer_delete: u32 = 111; +pub const __NR_syslog: u32 = 116; +pub const __NR_ptrace: u32 = 117; +pub const __NR_sched_setparam: u32 = 118; +pub const __NR_sched_setscheduler: u32 = 119; +pub const __NR_sched_getscheduler: u32 = 120; +pub const __NR_sched_getparam: u32 = 121; +pub const __NR_sched_setaffinity: u32 = 122; +pub const __NR_sched_getaffinity: u32 = 123; +pub const __NR_sched_yield: u32 = 124; +pub const __NR_sched_get_priority_max: u32 = 125; +pub const __NR_sched_get_priority_min: u32 = 126; +pub const __NR_restart_syscall: u32 = 128; +pub const __NR_kill: u32 = 129; +pub const __NR_tkill: u32 = 130; +pub const __NR_tgkill: u32 = 131; +pub const __NR_sigaltstack: u32 = 132; +pub const __NR_rt_sigsuspend: u32 = 133; +pub const __NR_rt_sigaction: u32 = 134; +pub const __NR_rt_sigprocmask: u32 = 135; +pub const __NR_rt_sigpending: u32 = 136; +pub const __NR_rt_sigqueueinfo: u32 = 138; +pub const __NR_rt_sigreturn: u32 = 139; +pub const __NR_setpriority: u32 = 140; +pub const __NR_getpriority: u32 = 141; +pub const __NR_reboot: u32 = 142; +pub const __NR_setregid: u32 = 143; +pub const __NR_setgid: u32 = 144; +pub const __NR_setreuid: u32 = 145; +pub const __NR_setuid: u32 = 146; +pub const __NR_setresuid: u32 = 147; +pub const __NR_getresuid: u32 = 148; +pub const __NR_setresgid: u32 = 149; +pub const __NR_getresgid: u32 = 150; +pub const __NR_setfsuid: u32 = 151; +pub const __NR_setfsgid: u32 = 152; +pub const __NR_times: u32 = 153; +pub const __NR_setpgid: u32 = 154; +pub const __NR_getpgid: u32 = 155; +pub const __NR_getsid: u32 = 156; +pub const __NR_setsid: u32 = 157; +pub const __NR_getgroups: u32 = 158; +pub const __NR_setgroups: u32 = 159; +pub const __NR_uname: u32 = 160; +pub const __NR_sethostname: u32 = 161; +pub const __NR_setdomainname: u32 = 162; +pub const __NR_getrusage: u32 = 165; +pub const __NR_umask: u32 = 166; +pub const __NR_prctl: u32 = 167; +pub const __NR_getcpu: u32 = 168; +pub const __NR_getpid: u32 = 172; +pub const __NR_getppid: u32 = 173; +pub const __NR_getuid: u32 = 174; +pub const __NR_geteuid: u32 = 175; +pub const __NR_getgid: u32 = 176; +pub const __NR_getegid: u32 = 177; +pub const __NR_gettid: u32 = 178; +pub const __NR_sysinfo: u32 = 179; +pub const __NR_mq_open: u32 = 180; +pub const __NR_mq_unlink: u32 = 181; +pub const __NR_mq_notify: u32 = 184; +pub const __NR_mq_getsetattr: u32 = 185; +pub const __NR_msgget: u32 = 186; +pub const __NR_msgctl: u32 = 187; +pub const __NR_msgrcv: u32 = 188; +pub const __NR_msgsnd: u32 = 189; +pub const __NR_semget: u32 = 190; +pub const __NR_semctl: u32 = 191; +pub const __NR_semop: u32 = 193; +pub const __NR_shmget: u32 = 194; +pub const __NR_shmctl: u32 = 195; +pub const __NR_shmat: u32 = 196; +pub const __NR_shmdt: u32 = 197; +pub const __NR_socket: u32 = 198; +pub const __NR_socketpair: u32 = 199; +pub const __NR_bind: u32 = 200; +pub const __NR_listen: u32 = 201; +pub const __NR_accept: u32 = 202; +pub const __NR_connect: u32 = 203; +pub const __NR_getsockname: u32 = 204; +pub const __NR_getpeername: u32 = 205; +pub const __NR_sendto: u32 = 206; +pub const __NR_recvfrom: u32 = 207; +pub const __NR_setsockopt: u32 = 208; +pub const __NR_getsockopt: u32 = 209; +pub const __NR_shutdown: u32 = 210; +pub const __NR_sendmsg: u32 = 211; +pub const __NR_recvmsg: u32 = 212; +pub const __NR_readahead: u32 = 213; +pub const __NR_brk: u32 = 214; +pub const __NR_munmap: u32 = 215; +pub const __NR_mremap: u32 = 216; +pub const __NR_add_key: u32 = 217; +pub const __NR_request_key: u32 = 218; +pub const __NR_keyctl: u32 = 219; +pub const __NR_clone: u32 = 220; +pub const __NR_execve: u32 = 221; +pub const __NR3264_mmap: u32 = 222; +pub const __NR3264_fadvise64: u32 = 223; +pub const __NR_swapon: u32 = 224; +pub const __NR_swapoff: u32 = 225; +pub const __NR_mprotect: u32 = 226; +pub const __NR_msync: u32 = 227; +pub const __NR_mlock: u32 = 228; +pub const __NR_munlock: u32 = 229; +pub const __NR_mlockall: u32 = 230; +pub const __NR_munlockall: u32 = 231; +pub const __NR_mincore: u32 = 232; +pub const __NR_madvise: u32 = 233; +pub const __NR_remap_file_pages: u32 = 234; +pub const __NR_mbind: u32 = 235; +pub const __NR_get_mempolicy: u32 = 236; +pub const __NR_set_mempolicy: u32 = 237; +pub const __NR_migrate_pages: u32 = 238; +pub const __NR_move_pages: u32 = 239; +pub const __NR_rt_tgsigqueueinfo: u32 = 240; +pub const __NR_perf_event_open: u32 = 241; +pub const __NR_accept4: u32 = 242; +pub const __NR_arch_specific_syscall: u32 = 244; +pub const __NR_prlimit64: u32 = 261; +pub const __NR_fanotify_init: u32 = 262; +pub const __NR_fanotify_mark: u32 = 263; +pub const __NR_name_to_handle_at: u32 = 264; +pub const __NR_open_by_handle_at: u32 = 265; +pub const __NR_syncfs: u32 = 267; +pub const __NR_setns: u32 = 268; +pub const __NR_sendmmsg: u32 = 269; +pub const __NR_process_vm_readv: u32 = 270; +pub const __NR_process_vm_writev: u32 = 271; +pub const __NR_kcmp: u32 = 272; +pub const __NR_finit_module: u32 = 273; +pub const __NR_sched_setattr: u32 = 274; +pub const __NR_sched_getattr: u32 = 275; +pub const __NR_renameat2: u32 = 276; +pub const __NR_seccomp: u32 = 277; +pub const __NR_getrandom: u32 = 278; +pub const __NR_memfd_create: u32 = 279; +pub const __NR_bpf: u32 = 280; +pub const __NR_execveat: u32 = 281; +pub const __NR_userfaultfd: u32 = 282; +pub const __NR_membarrier: u32 = 283; +pub const __NR_mlock2: u32 = 284; +pub const __NR_copy_file_range: u32 = 285; +pub const __NR_preadv2: u32 = 286; +pub const __NR_pwritev2: u32 = 287; +pub const __NR_pkey_mprotect: u32 = 288; +pub const __NR_pkey_alloc: u32 = 289; +pub const __NR_pkey_free: u32 = 290; +pub const __NR_statx: u32 = 291; +pub const __NR_rseq: u32 = 293; +pub const __NR_kexec_file_load: u32 = 294; +pub const __NR_clock_gettime64: u32 = 403; +pub const __NR_clock_settime64: u32 = 404; +pub const __NR_clock_adjtime64: u32 = 405; +pub const __NR_clock_getres_time64: u32 = 406; +pub const __NR_clock_nanosleep_time64: u32 = 407; +pub const __NR_timer_gettime64: u32 = 408; +pub const __NR_timer_settime64: u32 = 409; +pub const __NR_timerfd_gettime64: u32 = 410; +pub const __NR_timerfd_settime64: u32 = 411; +pub const __NR_utimensat_time64: u32 = 412; +pub const __NR_pselect6_time64: u32 = 413; +pub const __NR_ppoll_time64: u32 = 414; +pub const __NR_io_pgetevents_time64: u32 = 416; +pub const __NR_recvmmsg_time64: u32 = 417; +pub const __NR_mq_timedsend_time64: u32 = 418; +pub const __NR_mq_timedreceive_time64: u32 = 419; +pub const __NR_semtimedop_time64: u32 = 420; +pub const __NR_rt_sigtimedwait_time64: u32 = 421; +pub const __NR_futex_time64: u32 = 422; +pub const __NR_sched_rr_get_interval_time64: u32 = 423; +pub const __NR_pidfd_send_signal: u32 = 424; +pub const __NR_io_uring_setup: u32 = 425; +pub const __NR_io_uring_enter: u32 = 426; +pub const __NR_io_uring_register: u32 = 427; +pub const __NR_open_tree: u32 = 428; +pub const __NR_move_mount: u32 = 429; +pub const __NR_fsopen: u32 = 430; +pub const __NR_fsconfig: u32 = 431; +pub const __NR_fsmount: u32 = 432; +pub const __NR_fspick: u32 = 433; +pub const __NR_pidfd_open: u32 = 434; +pub const __NR_clone3: u32 = 435; +pub const __NR_close_range: u32 = 436; +pub const __NR_openat2: u32 = 437; +pub const __NR_pidfd_getfd: u32 = 438; +pub const __NR_faccessat2: u32 = 439; +pub const __NR_process_madvise: u32 = 440; +pub const __NR_epoll_pwait2: u32 = 441; +pub const __NR_mount_setattr: u32 = 442; +pub const __NR_quotactl_fd: u32 = 443; +pub const __NR_landlock_create_ruleset: u32 = 444; +pub const __NR_landlock_add_rule: u32 = 445; +pub const __NR_landlock_restrict_self: u32 = 446; +pub const __NR_memfd_secret: u32 = 447; +pub const __NR_process_mrelease: u32 = 448; +pub const __NR_futex_waitv: u32 = 449; +pub const __NR_set_mempolicy_home_node: u32 = 450; +pub const __NR_syscalls: u32 = 451; +pub const __NR_fcntl64: u32 = 25; +pub const __NR_statfs64: u32 = 43; +pub const __NR_fstatfs64: u32 = 44; +pub const __NR_truncate64: u32 = 45; +pub const __NR_ftruncate64: u32 = 46; +pub const __NR_llseek: u32 = 62; +pub const __NR_sendfile64: u32 = 71; +pub const __NR_mmap2: u32 = 222; +pub const __NR_fadvise64_64: u32 = 223; +pub const __NR_riscv_flush_icache: u32 = 259; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const P_ALL: u32 = 0; +pub const P_PID: u32 = 1; +pub const P_PGID: u32 = 2; +pub const P_PIDFD: u32 = 3; +pub const XATTR_CREATE: u32 = 1; +pub const XATTR_REPLACE: u32 = 2; +pub const XATTR_OS2_PREFIX: &[u8; 5] = b"os2.\0"; +pub const XATTR_MAC_OSX_PREFIX: &[u8; 5] = b"osx.\0"; +pub const XATTR_BTRFS_PREFIX: &[u8; 7] = b"btrfs.\0"; +pub const XATTR_HURD_PREFIX: &[u8; 5] = b"gnu.\0"; +pub const XATTR_SECURITY_PREFIX: &[u8; 10] = b"security.\0"; +pub const XATTR_SYSTEM_PREFIX: &[u8; 8] = b"system.\0"; +pub const XATTR_TRUSTED_PREFIX: &[u8; 9] = b"trusted.\0"; +pub const XATTR_USER_PREFIX: &[u8; 6] = b"user.\0"; +pub const XATTR_EVM_SUFFIX: &[u8; 4] = b"evm\0"; +pub const XATTR_NAME_EVM: &[u8; 13] = b"security.evm\0"; +pub const XATTR_IMA_SUFFIX: &[u8; 4] = b"ima\0"; +pub const XATTR_NAME_IMA: &[u8; 13] = b"security.ima\0"; +pub const XATTR_SELINUX_SUFFIX: &[u8; 8] = b"selinux\0"; +pub const XATTR_NAME_SELINUX: &[u8; 17] = b"security.selinux\0"; +pub const XATTR_SMACK_SUFFIX: &[u8; 8] = b"SMACK64\0"; +pub const XATTR_SMACK_IPIN: &[u8; 12] = b"SMACK64IPIN\0"; +pub const XATTR_SMACK_IPOUT: &[u8; 13] = b"SMACK64IPOUT\0"; +pub const XATTR_SMACK_EXEC: &[u8; 12] = b"SMACK64EXEC\0"; +pub const XATTR_SMACK_TRANSMUTE: &[u8; 17] = b"SMACK64TRANSMUTE\0"; +pub const XATTR_SMACK_MMAP: &[u8; 12] = b"SMACK64MMAP\0"; +pub const XATTR_NAME_SMACK: &[u8; 17] = b"security.SMACK64\0"; +pub const XATTR_NAME_SMACKIPIN: &[u8; 21] = b"security.SMACK64IPIN\0"; +pub const XATTR_NAME_SMACKIPOUT: &[u8; 22] = b"security.SMACK64IPOUT\0"; +pub const XATTR_NAME_SMACKEXEC: &[u8; 21] = b"security.SMACK64EXEC\0"; +pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26] = b"security.SMACK64TRANSMUTE\0"; +pub const XATTR_NAME_SMACKMMAP: &[u8; 21] = b"security.SMACK64MMAP\0"; +pub const XATTR_APPARMOR_SUFFIX: &[u8; 9] = b"apparmor\0"; +pub const XATTR_NAME_APPARMOR: &[u8; 18] = b"security.apparmor\0"; +pub const XATTR_CAPS_SUFFIX: &[u8; 11] = b"capability\0"; +pub const XATTR_NAME_CAPS: &[u8; 20] = b"security.capability\0"; +pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17] = b"posix_acl_access\0"; +pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24] = b"system.posix_acl_access\0"; +pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18] = b"posix_acl_default\0"; +pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25] = b"system.posix_acl_default\0"; +pub const MFD_CLOEXEC: u32 = 1; +pub const MFD_ALLOW_SEALING: u32 = 2; +pub const MFD_HUGETLB: u32 = 4; +pub const MFD_NOEXEC_SEAL: u32 = 8; +pub const MFD_EXEC: u32 = 16; +pub const MFD_HUGE_SHIFT: u32 = 26; +pub const MFD_HUGE_MASK: u32 = 63; +pub const MFD_HUGE_64KB: u32 = 1073741824; +pub const MFD_HUGE_512KB: u32 = 1275068416; +pub const MFD_HUGE_1MB: u32 = 1342177280; +pub const MFD_HUGE_2MB: u32 = 1409286144; +pub const MFD_HUGE_8MB: u32 = 1543503872; +pub const MFD_HUGE_16MB: u32 = 1610612736; +pub const MFD_HUGE_32MB: u32 = 1677721600; +pub const MFD_HUGE_256MB: u32 = 1879048192; +pub const MFD_HUGE_512MB: u32 = 1946157056; +pub const MFD_HUGE_1GB: u32 = 2013265920; +pub const MFD_HUGE_2GB: u32 = 2080374784; +pub const MFD_HUGE_16GB: u32 = 2281701376; +pub const TFD_TIMER_ABSTIME: u32 = 1; +pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; +pub const TFD_CLOEXEC: u32 = 524288; +pub const TFD_NONBLOCK: u32 = 2048; +pub const USERFAULTFD_IOC: u32 = 170; +pub const _UFFDIO_REGISTER: u32 = 0; +pub const _UFFDIO_UNREGISTER: u32 = 1; +pub const _UFFDIO_WAKE: u32 = 2; +pub const _UFFDIO_COPY: u32 = 3; +pub const _UFFDIO_ZEROPAGE: u32 = 4; +pub const _UFFDIO_WRITEPROTECT: u32 = 6; +pub const _UFFDIO_CONTINUE: u32 = 7; +pub const _UFFDIO_API: u32 = 63; +pub const UFFDIO: u32 = 170; +pub const UFFD_EVENT_PAGEFAULT: u32 = 18; +pub const UFFD_EVENT_FORK: u32 = 19; +pub const UFFD_EVENT_REMAP: u32 = 20; +pub const UFFD_EVENT_REMOVE: u32 = 21; +pub const UFFD_EVENT_UNMAP: u32 = 22; +pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; +pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; +pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; +pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; +pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; +pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; +pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; +pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; +pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; +pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; +pub const UFFD_FEATURE_SIGBUS: u32 = 128; +pub const UFFD_FEATURE_THREAD_ID: u32 = 256; +pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; +pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; +pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; +pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; +pub const UFFD_USER_MODE_ONLY: u32 = 1; +pub const DT_UNKNOWN: u32 = 0; +pub const DT_FIFO: u32 = 1; +pub const DT_CHR: u32 = 2; +pub const DT_DIR: u32 = 4; +pub const DT_BLK: u32 = 6; +pub const DT_REG: u32 = 8; +pub const DT_LNK: u32 = 10; +pub const DT_SOCK: u32 = 12; +pub const STAT_HAVE_NSEC: u32 = 1; +pub const F_OK: u32 = 0; +pub const R_OK: u32 = 4; +pub const W_OK: u32 = 2; +pub const X_OK: u32 = 1; +pub const UTIME_NOW: u32 = 1073741823; +pub const UTIME_OMIT: u32 = 1073741822; +pub const MNT_FORCE: u32 = 1; +pub const MNT_DETACH: u32 = 2; +pub const MNT_EXPIRE: u32 = 4; +pub const UMOUNT_NOFOLLOW: u32 = 8; +pub const UMOUNT_UNUSED: u32 = 2147483648; +pub const STDIN_FILENO: u32 = 0; +pub const STDOUT_FILENO: u32 = 1; +pub const STDERR_FILENO: u32 = 2; +pub const RWF_HIPRI: u32 = 1; +pub const RWF_DSYNC: u32 = 2; +pub const RWF_SYNC: u32 = 4; +pub const RWF_NOWAIT: u32 = 8; +pub const RWF_APPEND: u32 = 16; +pub const EFD_SEMAPHORE: u32 = 1; +pub const EFD_CLOEXEC: u32 = 524288; +pub const EFD_NONBLOCK: u32 = 2048; +pub const EPOLLIN: u32 = 1; +pub const EPOLLPRI: u32 = 2; +pub const EPOLLOUT: u32 = 4; +pub const EPOLLERR: u32 = 8; +pub const EPOLLHUP: u32 = 16; +pub const EPOLLNVAL: u32 = 32; +pub const EPOLLRDNORM: u32 = 64; +pub const EPOLLRDBAND: u32 = 128; +pub const EPOLLWRNORM: u32 = 256; +pub const EPOLLWRBAND: u32 = 512; +pub const EPOLLMSG: u32 = 1024; +pub const EPOLLRDHUP: u32 = 8192; +pub const EPOLLEXCLUSIVE: u32 = 268435456; +pub const EPOLLWAKEUP: u32 = 536870912; +pub const EPOLLONESHOT: u32 = 1073741824; +pub const EPOLLET: u32 = 2147483648; +pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; +pub const TFD_CREATE_FLAGS: u32 = 526336; +pub const TFD_SETTIME_FLAGS: u32 = 1; +pub const UFFD_API: u32 = 170; +pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; +pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; +pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; +pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; +pub const UFFDIO_COPY_MODE_WP: u32 = 2; +pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; +pub const SPLICE_F_MOVE: u32 = 1; +pub const SPLICE_F_NONBLOCK: u32 = 2; +pub const SPLICE_F_MORE: u32 = 4; +pub const SPLICE_F_GIFT: u32 = 8; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, } #[repr(u32)] #[non_exhaustive] @@ -4457,705 +2566,161 @@ pub enum membarrier_cmd_flag { MEMBARRIER_CMD_FLAG_CPU = 1, } -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct uffd_msg { -pub event: __u8, -pub reserved1: __u8, -pub reserved2: __u16, -pub reserved3: __u32, -pub arg: uffd_msg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1 { -pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, -pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, -pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, -pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, -pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, -} #[repr(C)] #[derive(Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { -pub flags: __u64, -pub address: __u64, -pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { -pub ptid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { -pub ufd: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { -pub from: __u64, -pub to: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { -pub start: __u64, -pub end: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { -pub reserved1: __u64, -pub reserved2: __u64, -pub reserved3: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_api { -pub api: __u64, -pub features: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_range { -pub start: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_register { -pub range: uffdio_range, -pub mode: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_copy { -pub dst: __u64, -pub src: __u64, -pub len: __u64, -pub mode: __u64, -pub copy: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_zeropage { -pub range: uffdio_range, -pub mode: __u64, -pub zeropage: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_writeprotect { -pub range: uffdio_range, -pub mode: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_continue { -pub range: uffdio_range, -pub mode: __u64, -pub mapped: __s64, -} -#[repr(C)] -pub struct io_uring_sqe { -pub opcode: __u8, -pub flags: __u8, -pub ioprio: __u16, -pub fd: __s32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, -pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, -pub len: __u32, -pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, -pub user_data: __u64, -pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, -pub personality: __u16, -pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, -pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_1 { -pub off: __u64, -pub addr2: __u64, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { -pub cmd_op: __u32, -pub __pad1: __u32, +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_2 { -pub addr: __u64, -pub splice_off_in: __u64, +pub union sigval { +pub sival_int: crate::ctypes::c_int, +pub sival_ptr: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_3 { -pub rw_flags: __kernel_rwf_t, -pub fsync_flags: __u32, -pub poll_events: __u16, -pub poll32_events: __u32, -pub sync_range_flags: __u32, -pub msg_flags: __u32, -pub timeout_flags: __u32, -pub accept_flags: __u32, -pub cancel_flags: __u32, -pub open_flags: __u32, -pub statx_flags: __u32, -pub fadvise_advice: __u32, -pub splice_flags: __u32, -pub rename_flags: __u32, -pub unlink_flags: __u32, -pub hardlink_flags: __u32, -pub xattr_flags: __u32, -pub msg_ring_flags: __u32, -pub uring_cmd_flags: __u32, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_4 { -pub buf_index: __u16, -pub buf_group: __u16, +pub union __sifields { +pub _kill: __sifields__bindgen_ty_1, +pub _timer: __sifields__bindgen_ty_2, +pub _rt: __sifields__bindgen_ty_3, +pub _sigchld: __sifields__bindgen_ty_4, +pub _sigfault: __sifields__bindgen_ty_5, +pub _sigpoll: __sifields__bindgen_ty_6, +pub _sigsys: __sifields__bindgen_ty_7, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_5 { -pub splice_fd_in: __s32, -pub file_index: __u32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { -pub addr_len: __u16, -pub __pad3: [__u16; 1usize], -} -#[repr(C)] -pub struct io_uring_sqe__bindgen_ty_6 { -pub __bindgen_anon_1: __BindgenUnionField, -pub cmd: __BindgenUnionField<[__u8; 0usize]>, -pub bindgen_union_field: [u64; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { -pub addr3: __u64, -pub __pad2: [__u64; 1usize], -} -pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT; -pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT; -pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT; -pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT; -pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT; -pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT; -pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -IOSQE_FIXED_FILE_BIT = 0, -IOSQE_IO_DRAIN_BIT = 1, -IOSQE_IO_LINK_BIT = 2, -IOSQE_IO_HARDLINK_BIT = 3, -IOSQE_ASYNC_BIT = 4, -IOSQE_BUFFER_SELECT_BIT = 5, -IOSQE_CQE_SKIP_SUCCESS_BIT = 6, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum io_uring_op { -IORING_OP_NOP = 0, -IORING_OP_READV = 1, -IORING_OP_WRITEV = 2, -IORING_OP_FSYNC = 3, -IORING_OP_READ_FIXED = 4, -IORING_OP_WRITE_FIXED = 5, -IORING_OP_POLL_ADD = 6, -IORING_OP_POLL_REMOVE = 7, -IORING_OP_SYNC_FILE_RANGE = 8, -IORING_OP_SENDMSG = 9, -IORING_OP_RECVMSG = 10, -IORING_OP_TIMEOUT = 11, -IORING_OP_TIMEOUT_REMOVE = 12, -IORING_OP_ACCEPT = 13, -IORING_OP_ASYNC_CANCEL = 14, -IORING_OP_LINK_TIMEOUT = 15, -IORING_OP_CONNECT = 16, -IORING_OP_FALLOCATE = 17, -IORING_OP_OPENAT = 18, -IORING_OP_CLOSE = 19, -IORING_OP_FILES_UPDATE = 20, -IORING_OP_STATX = 21, -IORING_OP_READ = 22, -IORING_OP_WRITE = 23, -IORING_OP_FADVISE = 24, -IORING_OP_MADVISE = 25, -IORING_OP_SEND = 26, -IORING_OP_RECV = 27, -IORING_OP_OPENAT2 = 28, -IORING_OP_EPOLL_CTL = 29, -IORING_OP_SPLICE = 30, -IORING_OP_PROVIDE_BUFFERS = 31, -IORING_OP_REMOVE_BUFFERS = 32, -IORING_OP_TEE = 33, -IORING_OP_SHUTDOWN = 34, -IORING_OP_RENAMEAT = 35, -IORING_OP_UNLINKAT = 36, -IORING_OP_MKDIRAT = 37, -IORING_OP_SYMLINKAT = 38, -IORING_OP_LINKAT = 39, -IORING_OP_MSG_RING = 40, -IORING_OP_FSETXATTR = 41, -IORING_OP_SETXATTR = 42, -IORING_OP_FGETXATTR = 43, -IORING_OP_GETXATTR = 44, -IORING_OP_SOCKET = 45, -IORING_OP_URING_CMD = 46, -IORING_OP_SEND_ZC = 47, -IORING_OP_SENDMSG_ZC = 48, -IORING_OP_LAST = 49, -} -pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA; -pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_8 { -IORING_MSG_DATA = 0, -IORING_MSG_SEND_FD = 1, -} -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_cqe { -pub user_data: __u64, -pub res: __s32, -pub flags: __u32, -pub big_cqe: __IncompleteArrayField<__u64>, -} -pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_9 { -IORING_CQE_BUFFER_SHIFT = 16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_sqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub flags: __u32, -pub dropped: __u32, -pub array: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_cqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub overflow: __u32, -pub cqes: __u32, -pub flags: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_params { -pub sq_entries: __u32, -pub cq_entries: __u32, -pub flags: __u32, -pub sq_thread_cpu: __u32, -pub sq_thread_idle: __u32, -pub features: __u32, -pub wq_fd: __u32, -pub resv: [__u32; 3usize], -pub sq_off: io_sqring_offsets, -pub cq_off: io_cqring_offsets, -} -pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS; -pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS; -pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES; -pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES; -pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD; -pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD; -pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE; -pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC; -pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE; -pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY; -pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY; -pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS; -pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS; -pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2; -pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2; -pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2; -pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE; -pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF; -pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF; -pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS; -pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS; -pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS; -pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING; -pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING; -pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL; -pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE; -pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST; -pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_USE_REGISTERED_RING; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_10 { -IORING_REGISTER_BUFFERS = 0, -IORING_UNREGISTER_BUFFERS = 1, -IORING_REGISTER_FILES = 2, -IORING_UNREGISTER_FILES = 3, -IORING_REGISTER_EVENTFD = 4, -IORING_UNREGISTER_EVENTFD = 5, -IORING_REGISTER_FILES_UPDATE = 6, -IORING_REGISTER_EVENTFD_ASYNC = 7, -IORING_REGISTER_PROBE = 8, -IORING_REGISTER_PERSONALITY = 9, -IORING_UNREGISTER_PERSONALITY = 10, -IORING_REGISTER_RESTRICTIONS = 11, -IORING_REGISTER_ENABLE_RINGS = 12, -IORING_REGISTER_FILES2 = 13, -IORING_REGISTER_FILES_UPDATE2 = 14, -IORING_REGISTER_BUFFERS2 = 15, -IORING_REGISTER_BUFFERS_UPDATE = 16, -IORING_REGISTER_IOWQ_AFF = 17, -IORING_UNREGISTER_IOWQ_AFF = 18, -IORING_REGISTER_IOWQ_MAX_WORKERS = 19, -IORING_REGISTER_RING_FDS = 20, -IORING_UNREGISTER_RING_FDS = 21, -IORING_REGISTER_PBUF_RING = 22, -IORING_UNREGISTER_PBUF_RING = 23, -IORING_REGISTER_SYNC_CANCEL = 24, -IORING_REGISTER_FILE_ALLOC_RANGE = 25, -IORING_REGISTER_LAST = 26, -IORING_REGISTER_USE_REGISTERED_RING = 2147483648, -} -pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND; -pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_11 { -IO_WQ_BOUND = 0, -IO_WQ_UNBOUND = 1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_files_update { -pub offset: __u32, -pub resv: __u32, -pub fds: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_register { -pub nr: __u32, -pub flags: __u32, -pub resv2: __u64, -pub data: __u64, -pub tags: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update2 { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -pub tags: __u64, -pub nr: __u32, -pub resv2: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_slot { -pub tag: __u64, -pub resv: [__u64; 3usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_register { -pub nr_slots: __u32, -pub resv: __u32, -pub resv2: __u64, -pub data: __u64, -pub resv3: __u64, +pub union __sifields__bindgen_ty_5__bindgen_ty_1 { +pub _trapno: crate::ctypes::c_int, +pub _addr_lsb: crate::ctypes::c_short, +pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, +pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, +pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_probe_op { -pub op: __u8, -pub resv: __u8, -pub flags: __u16, -pub resv2: __u32, +#[derive(Copy, Clone)] +pub union siginfo__bindgen_ty_1 { +pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, +pub _si_pad: [crate::ctypes::c_int; 32usize], } #[repr(C)] -#[derive(Debug)] -pub struct io_uring_probe { -pub last_op: __u8, -pub ops_len: __u8, -pub resv: __u16, -pub resv2: [__u32; 3usize], -pub ops: __IncompleteArrayField, +#[derive(Copy, Clone)] +pub union sigevent__bindgen_ty_1 { +pub _pad: [crate::ctypes::c_int; 13usize], +pub _tid: crate::ctypes::c_int, +pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] -pub struct io_uring_restriction { -pub opcode: __u16, -pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, -pub resv: __u8, -pub resv2: [__u32; 3usize], +pub union uffd_msg__bindgen_ty_1 { +pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, +pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, +pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, +pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, +pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_restriction__bindgen_ty_1 { -pub register_op: __u8, -pub sqe_op: __u8, -pub sqe_flags: __u8, +pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { +pub ptid: __u32, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf { -pub addr: __u64, -pub len: __u32, -pub bid: __u16, -pub resv: __u16, +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } } -#[repr(C)] -pub struct io_uring_buf_ring { -pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, } -#[repr(C)] -pub struct io_uring_buf_ring__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 2usize], +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { -pub resv1: __u64, -pub resv2: __u32, -pub resv3: __u16, -pub tail: __u16, +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; } -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { -pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, -pub bufs: __IncompleteArrayField, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_reg { -pub ring_addr: __u64, -pub ring_entries: __u32, -pub bgid: __u16, -pub pad: __u16, -pub resv: [__u64; 3usize], +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; } -pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP; -pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP; -pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; -pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; -pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_12 { -IORING_RESTRICTION_REGISTER_OP = 0, -IORING_RESTRICTION_SQE_OP = 1, -IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, -IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, -IORING_RESTRICTION_LAST = 4, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_getevents_arg { -pub sigmask: __u64, -pub sigmask_sz: __u32, -pub pad: __u32, -pub ts: __u64, +val } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sync_cancel_reg { -pub addr: __u64, -pub fd: __s32, -pub flags: __u32, -pub timeout: __kernel_timespec, -pub pad: [__u64; 4usize], +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_file_index_range { -pub off: __u32, -pub len: __u32, -pub resv: __u64, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_recvmsg_out { -pub namelen: __u32, -pub controllen: __u32, -pub payloadlen: __u32, -pub flags: __u32, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr { -pub __storage: __kernel_sockaddr_storage, +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct linger { -pub l_onoff: crate::ctypes::c_int, -pub l_linger: crate::ctypes::c_int, +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T } -#[repr(C)] -#[derive(Debug)] -pub struct linux_dirent64 { -pub d_ino: crate::ctypes::c_ulonglong, -pub d_off: crate::ctypes::c_longlong, -pub d_reclen: __u16, -pub d_type: __u8, -pub d_name: __IncompleteArrayField, +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T } -pub type socklen_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat { -pub st_dev: crate::ctypes::c_ulong, -pub st_ino: crate::ctypes::c_ulong, -pub st_mode: crate::ctypes::c_uint, -pub st_nlink: crate::ctypes::c_uint, -pub st_uid: crate::ctypes::c_uint, -pub st_gid: crate::ctypes::c_uint, -pub st_rdev: crate::ctypes::c_ulong, -pub __pad1: crate::ctypes::c_ulong, -pub st_size: crate::ctypes::c_long, -pub st_blksize: crate::ctypes::c_int, -pub __pad2: crate::ctypes::c_int, -pub st_blocks: crate::ctypes::c_long, -pub st_atime: crate::ctypes::c_long, -pub st_atime_nsec: crate::ctypes::c_ulong, -pub st_mtime: crate::ctypes::c_long, -pub st_mtime_nsec: crate::ctypes::c_ulong, -pub st_ctime: crate::ctypes::c_long, -pub st_ctime_nsec: crate::ctypes::c_ulong, -pub __unused4: crate::ctypes::c_uint, -pub __unused5: crate::ctypes::c_uint, +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat64 { -pub st_dev: crate::ctypes::c_ulonglong, -pub st_ino: crate::ctypes::c_ulonglong, -pub st_mode: crate::ctypes::c_uint, -pub st_nlink: crate::ctypes::c_uint, -pub st_uid: crate::ctypes::c_uint, -pub st_gid: crate::ctypes::c_uint, -pub st_rdev: crate::ctypes::c_ulonglong, -pub __pad1: crate::ctypes::c_ulonglong, -pub st_size: crate::ctypes::c_longlong, -pub st_blksize: crate::ctypes::c_int, -pub __pad2: crate::ctypes::c_int, -pub st_blocks: crate::ctypes::c_longlong, -pub st_atime: crate::ctypes::c_int, -pub st_atime_nsec: crate::ctypes::c_uint, -pub st_mtime: crate::ctypes::c_int, -pub st_mtime_nsec: crate::ctypes::c_uint, -pub st_ctime: crate::ctypes::c_int, -pub st_ctime_nsec: crate::ctypes::c_uint, -pub __unused4: crate::ctypes::c_uint, -pub __unused5: crate::ctypes::c_uint, +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u32, -pub f_bfree: __u32, -pub f_bavail: __u32, -pub f_files: __u32, -pub f_ffree: __u32, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct compat_statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], } -pub type __fsword_t = __u32; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_desc { -pub entry_number: crate::ctypes::c_uint, -pub base_addr: crate::ctypes::c_uint, -pub limit: crate::ctypes::c_uint, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub __bindgen_padding_0: [u8; 3usize], +impl membarrier_cmd { +pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; } impl user_desc { #[inline] @@ -5254,46 +2819,3 @@ __bindgen_bitfield_unit } } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr { -pub msg_name: *mut crate::ctypes::c_void, -pub msg_namelen: crate::ctypes::c_int, -pub msg_iov: *mut iovec, -pub msg_iovlen: size_t, -pub msg_control: *mut crate::ctypes::c_void, -pub msg_controllen: size_t, -pub msg_flags: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsghdr { -pub cmsg_len: size_t, -pub cmsg_level: crate::ctypes::c_int, -pub cmsg_type: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ucred { -pub pid: __u32, -pub uid: __u32, -pub gid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mmsghdr { -pub msg_hdr: msghdr, -pub msg_len: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigset_t { -pub sig: [crate::ctypes::c_ulong; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigaction { -pub sa_handler_kernel: __kernel_sighandler_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_mask: kernel_sigset_t, -} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/if_ether.rs temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/if_ether.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/if_ether.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/if_ether.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,167 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ethhdr { +pub h_dest: [crate::ctypes::c_uchar; 6usize], +pub h_source: [crate::ctypes::c_uchar; 6usize], +pub h_proto: __be16, +} +pub const ETH_ALEN: u32 = 6; +pub const ETH_TLEN: u32 = 2; +pub const ETH_HLEN: u32 = 14; +pub const ETH_ZLEN: u32 = 60; +pub const ETH_DATA_LEN: u32 = 1500; +pub const ETH_FRAME_LEN: u32 = 1514; +pub const ETH_FCS_LEN: u32 = 4; +pub const ETH_MIN_MTU: u32 = 68; +pub const ETH_MAX_MTU: u32 = 65535; +pub const ETH_P_LOOP: u32 = 96; +pub const ETH_P_PUP: u32 = 512; +pub const ETH_P_PUPAT: u32 = 513; +pub const ETH_P_TSN: u32 = 8944; +pub const ETH_P_ERSPAN2: u32 = 8939; +pub const ETH_P_IP: u32 = 2048; +pub const ETH_P_X25: u32 = 2053; +pub const ETH_P_ARP: u32 = 2054; +pub const ETH_P_BPQ: u32 = 2303; +pub const ETH_P_IEEEPUP: u32 = 2560; +pub const ETH_P_IEEEPUPAT: u32 = 2561; +pub const ETH_P_BATMAN: u32 = 17157; +pub const ETH_P_DEC: u32 = 24576; +pub const ETH_P_DNA_DL: u32 = 24577; +pub const ETH_P_DNA_RC: u32 = 24578; +pub const ETH_P_DNA_RT: u32 = 24579; +pub const ETH_P_LAT: u32 = 24580; +pub const ETH_P_DIAG: u32 = 24581; +pub const ETH_P_CUST: u32 = 24582; +pub const ETH_P_SCA: u32 = 24583; +pub const ETH_P_TEB: u32 = 25944; +pub const ETH_P_RARP: u32 = 32821; +pub const ETH_P_ATALK: u32 = 32923; +pub const ETH_P_AARP: u32 = 33011; +pub const ETH_P_8021Q: u32 = 33024; +pub const ETH_P_ERSPAN: u32 = 35006; +pub const ETH_P_IPX: u32 = 33079; +pub const ETH_P_IPV6: u32 = 34525; +pub const ETH_P_PAUSE: u32 = 34824; +pub const ETH_P_SLOW: u32 = 34825; +pub const ETH_P_WCCP: u32 = 34878; +pub const ETH_P_MPLS_UC: u32 = 34887; +pub const ETH_P_MPLS_MC: u32 = 34888; +pub const ETH_P_ATMMPOA: u32 = 34892; +pub const ETH_P_PPP_DISC: u32 = 34915; +pub const ETH_P_PPP_SES: u32 = 34916; +pub const ETH_P_LINK_CTL: u32 = 34924; +pub const ETH_P_ATMFATE: u32 = 34948; +pub const ETH_P_PAE: u32 = 34958; +pub const ETH_P_PROFINET: u32 = 34962; +pub const ETH_P_REALTEK: u32 = 34969; +pub const ETH_P_AOE: u32 = 34978; +pub const ETH_P_ETHERCAT: u32 = 34980; +pub const ETH_P_8021AD: u32 = 34984; +pub const ETH_P_802_EX1: u32 = 34997; +pub const ETH_P_PREAUTH: u32 = 35015; +pub const ETH_P_TIPC: u32 = 35018; +pub const ETH_P_LLDP: u32 = 35020; +pub const ETH_P_MRP: u32 = 35043; +pub const ETH_P_MACSEC: u32 = 35045; +pub const ETH_P_8021AH: u32 = 35047; +pub const ETH_P_MVRP: u32 = 35061; +pub const ETH_P_1588: u32 = 35063; +pub const ETH_P_NCSI: u32 = 35064; +pub const ETH_P_PRP: u32 = 35067; +pub const ETH_P_CFM: u32 = 35074; +pub const ETH_P_FCOE: u32 = 35078; +pub const ETH_P_IBOE: u32 = 35093; +pub const ETH_P_TDLS: u32 = 35085; +pub const ETH_P_FIP: u32 = 35092; +pub const ETH_P_80221: u32 = 35095; +pub const ETH_P_HSR: u32 = 35119; +pub const ETH_P_NSH: u32 = 35151; +pub const ETH_P_LOOPBACK: u32 = 36864; +pub const ETH_P_QINQ1: u32 = 37120; +pub const ETH_P_QINQ2: u32 = 37376; +pub const ETH_P_QINQ3: u32 = 37632; +pub const ETH_P_EDSA: u32 = 56026; +pub const ETH_P_DSA_8021Q: u32 = 56027; +pub const ETH_P_DSA_A5PSW: u32 = 57345; +pub const ETH_P_IFE: u32 = 60734; +pub const ETH_P_AF_IUCV: u32 = 64507; +pub const ETH_P_802_3_MIN: u32 = 1536; +pub const ETH_P_802_3: u32 = 1; +pub const ETH_P_AX25: u32 = 2; +pub const ETH_P_ALL: u32 = 3; +pub const ETH_P_802_2: u32 = 4; +pub const ETH_P_SNAP: u32 = 5; +pub const ETH_P_DDCMP: u32 = 6; +pub const ETH_P_WAN_PPP: u32 = 7; +pub const ETH_P_PPP_MP: u32 = 8; +pub const ETH_P_LOCALTALK: u32 = 9; +pub const ETH_P_CAN: u32 = 12; +pub const ETH_P_CANFD: u32 = 13; +pub const ETH_P_CANXL: u32 = 14; +pub const ETH_P_PPPTALK: u32 = 16; +pub const ETH_P_TR_802_2: u32 = 17; +pub const ETH_P_MOBITEX: u32 = 21; +pub const ETH_P_CONTROL: u32 = 22; +pub const ETH_P_IRDA: u32 = 23; +pub const ETH_P_ECONET: u32 = 24; +pub const ETH_P_HDLC: u32 = 25; +pub const ETH_P_ARCNET: u32 = 26; +pub const ETH_P_DSA: u32 = 27; +pub const ETH_P_TRAILER: u32 = 28; +pub const ETH_P_PHONET: u32 = 245; +pub const ETH_P_IEEE802154: u32 = 246; +pub const ETH_P_CAIF: u32 = 247; +pub const ETH_P_XDSA: u32 = 248; +pub const ETH_P_MAP: u32 = 249; +pub const ETH_P_MCTP: u32 = 250; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/ioctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/ioctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/ioctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,3 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/io_uring.rs temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/io_uring.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/io_uring.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/io_uring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1083 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_rwf_t = crate::ctypes::c_int; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +pub struct io_uring_sqe { +pub opcode: __u8, +pub flags: __u8, +pub ioprio: __u16, +pub fd: __s32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, +pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, +pub len: __u32, +pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, +pub user_data: __u64, +pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, +pub personality: __u16, +pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, +pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { +pub cmd_op: __u32, +pub __pad1: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { +pub addr_len: __u16, +pub __pad3: [__u16; 1usize], +} +#[repr(C)] +pub struct io_uring_sqe__bindgen_ty_6 { +pub __bindgen_anon_1: __BindgenUnionField, +pub cmd: __BindgenUnionField<[__u8; 0usize]>, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { +pub addr3: __u64, +pub __pad2: [__u64; 1usize], +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_cqe { +pub user_data: __u64, +pub res: __s32, +pub flags: __u32, +pub big_cqe: __IncompleteArrayField<__u64>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_sqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub flags: __u32, +pub dropped: __u32, +pub array: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_cqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub overflow: __u32, +pub cqes: __u32, +pub flags: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_params { +pub sq_entries: __u32, +pub cq_entries: __u32, +pub flags: __u32, +pub sq_thread_cpu: __u32, +pub sq_thread_idle: __u32, +pub features: __u32, +pub wq_fd: __u32, +pub resv: [__u32; 3usize], +pub sq_off: io_sqring_offsets, +pub cq_off: io_cqring_offsets, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_files_update { +pub offset: __u32, +pub resv: __u32, +pub fds: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_register { +pub nr: __u32, +pub flags: __u32, +pub resv2: __u64, +pub data: __u64, +pub tags: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update2 { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +pub tags: __u64, +pub nr: __u32, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_slot { +pub tag: __u64, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_register { +pub nr_slots: __u32, +pub resv: __u32, +pub resv2: __u64, +pub data: __u64, +pub resv3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_probe_op { +pub op: __u8, +pub resv: __u8, +pub flags: __u16, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_probe { +pub last_op: __u8, +pub ops_len: __u8, +pub resv: __u16, +pub resv2: [__u32; 3usize], +pub ops: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_restriction { +pub opcode: __u16, +pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, +pub resv: __u8, +pub resv2: [__u32; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf { +pub addr: __u64, +pub len: __u32, +pub bid: __u16, +pub resv: __u16, +} +#[repr(C)] +pub struct io_uring_buf_ring { +pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +} +#[repr(C)] +pub struct io_uring_buf_ring__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { +pub resv1: __u64, +pub resv2: __u32, +pub resv3: __u16, +pub tail: __u16, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { +pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, +pub bufs: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_reg { +pub ring_addr: __u64, +pub ring_entries: __u32, +pub bgid: __u16, +pub pad: __u16, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_getevents_arg { +pub sigmask: __u64, +pub sigmask_sz: __u32, +pub pad: __u32, +pub ts: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sync_cancel_reg { +pub addr: __u64, +pub fd: __s32, +pub flags: __u32, +pub timeout: __kernel_timespec, +pub pad: [__u64; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_file_index_range { +pub off: __u32, +pub len: __u32, +pub resv: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_recvmsg_out { +pub namelen: __u32, +pub controllen: __u32, +pub payloadlen: __u32, +pub flags: __u32, +} +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 14; +pub const _IOC_DIRBITS: u32 = 2; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 3; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 30; +pub const _IOC_NONE: u32 = 0; +pub const _IOC_WRITE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const IOC_IN: u32 = 1073741824; +pub const IOC_OUT: u32 = 2147483648; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const IORING_FILE_INDEX_ALLOC: i32 = -1; +pub const IORING_SETUP_IOPOLL: u32 = 1; +pub const IORING_SETUP_SQPOLL: u32 = 2; +pub const IORING_SETUP_SQ_AFF: u32 = 4; +pub const IORING_SETUP_CQSIZE: u32 = 8; +pub const IORING_SETUP_CLAMP: u32 = 16; +pub const IORING_SETUP_ATTACH_WQ: u32 = 32; +pub const IORING_SETUP_R_DISABLED: u32 = 64; +pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; +pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; +pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; +pub const IORING_SETUP_SQE128: u32 = 1024; +pub const IORING_SETUP_CQE32: u32 = 2048; +pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; +pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; +pub const IORING_URING_CMD_FIXED: u32 = 1; +pub const IORING_FSYNC_DATASYNC: u32 = 1; +pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; +pub const IORING_POLL_ADD_LEVEL: u32 = 8; +pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; +pub const IORING_ASYNC_CANCEL_FD: u32 = 2; +pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; +pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; +pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; +pub const IORING_RECV_MULTISHOT: u32 = 2; +pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; +pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; +pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; +pub const IORING_ACCEPT_MULTISHOT: u32 = 1; +pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; +pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; +pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; +pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; +pub const IORING_CQE_F_NOTIF: u32 = 8; +pub const IORING_OFF_SQ_RING: u32 = 0; +pub const IORING_OFF_CQ_RING: u32 = 134217728; +pub const IORING_OFF_SQES: u32 = 268435456; +pub const IORING_SQ_NEED_WAKEUP: u32 = 1; +pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; +pub const IORING_SQ_TASKRUN: u32 = 4; +pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; +pub const IORING_ENTER_GETEVENTS: u32 = 1; +pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; +pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; +pub const IORING_ENTER_REGISTERED_RING: u32 = 16; +pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; +pub const IORING_FEAT_NODROP: u32 = 2; +pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; +pub const IORING_FEAT_RW_CUR_POS: u32 = 8; +pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; +pub const IORING_FEAT_FAST_POLL: u32 = 32; +pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_FEAT_CQE_SKIP: u32 = 2048; +pub const IORING_FEAT_LINKED_FILE: u32 = 4096; +pub const IORING_FEAT_REG_REG_RING: u32 = 8192; +pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; +pub const IO_URING_OP_SUPPORTED: u32 = 1; +pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_FIXED_FILE_BIT; +pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_DRAIN_BIT; +pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_LINK_BIT; +pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_HARDLINK_BIT; +pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_ASYNC_BIT; +pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_BUFFER_SELECT_BIT; +pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_CQE_SKIP_SUCCESS_BIT; +pub const IORING_MSG_DATA: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_DATA; +pub const IORING_MSG_SEND_FD: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_SEND_FD; +pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = _bindgen_ty_3::IORING_CQE_BUFFER_SHIFT; +pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS; +pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_BUFFERS; +pub const IORING_REGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES; +pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_FILES; +pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD; +pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_EVENTFD; +pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE; +pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD_ASYNC; +pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PROBE; +pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PERSONALITY; +pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PERSONALITY; +pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RESTRICTIONS; +pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_ENABLE_RINGS; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES2; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE2; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS2; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS_UPDATE; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_AFF; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_IOWQ_AFF; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_MAX_WORKERS; +pub const IORING_REGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RING_FDS; +pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_RING_FDS; +pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PBUF_RING; +pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PBUF_RING; +pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_SYNC_CANCEL; +pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILE_ALLOC_RANGE; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_LAST; +pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_USE_REGISTERED_RING; +pub const IO_WQ_BOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_BOUND; +pub const IO_WQ_UNBOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_UNBOUND; +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_REGISTER_OP; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_OP; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_LAST; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IOSQE_FIXED_FILE_BIT = 0, +IOSQE_IO_DRAIN_BIT = 1, +IOSQE_IO_LINK_BIT = 2, +IOSQE_IO_HARDLINK_BIT = 3, +IOSQE_ASYNC_BIT = 4, +IOSQE_BUFFER_SELECT_BIT = 5, +IOSQE_CQE_SKIP_SUCCESS_BIT = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum io_uring_op { +IORING_OP_NOP = 0, +IORING_OP_READV = 1, +IORING_OP_WRITEV = 2, +IORING_OP_FSYNC = 3, +IORING_OP_READ_FIXED = 4, +IORING_OP_WRITE_FIXED = 5, +IORING_OP_POLL_ADD = 6, +IORING_OP_POLL_REMOVE = 7, +IORING_OP_SYNC_FILE_RANGE = 8, +IORING_OP_SENDMSG = 9, +IORING_OP_RECVMSG = 10, +IORING_OP_TIMEOUT = 11, +IORING_OP_TIMEOUT_REMOVE = 12, +IORING_OP_ACCEPT = 13, +IORING_OP_ASYNC_CANCEL = 14, +IORING_OP_LINK_TIMEOUT = 15, +IORING_OP_CONNECT = 16, +IORING_OP_FALLOCATE = 17, +IORING_OP_OPENAT = 18, +IORING_OP_CLOSE = 19, +IORING_OP_FILES_UPDATE = 20, +IORING_OP_STATX = 21, +IORING_OP_READ = 22, +IORING_OP_WRITE = 23, +IORING_OP_FADVISE = 24, +IORING_OP_MADVISE = 25, +IORING_OP_SEND = 26, +IORING_OP_RECV = 27, +IORING_OP_OPENAT2 = 28, +IORING_OP_EPOLL_CTL = 29, +IORING_OP_SPLICE = 30, +IORING_OP_PROVIDE_BUFFERS = 31, +IORING_OP_REMOVE_BUFFERS = 32, +IORING_OP_TEE = 33, +IORING_OP_SHUTDOWN = 34, +IORING_OP_RENAMEAT = 35, +IORING_OP_UNLINKAT = 36, +IORING_OP_MKDIRAT = 37, +IORING_OP_SYMLINKAT = 38, +IORING_OP_LINKAT = 39, +IORING_OP_MSG_RING = 40, +IORING_OP_FSETXATTR = 41, +IORING_OP_SETXATTR = 42, +IORING_OP_FGETXATTR = 43, +IORING_OP_GETXATTR = 44, +IORING_OP_SOCKET = 45, +IORING_OP_URING_CMD = 46, +IORING_OP_SEND_ZC = 47, +IORING_OP_SENDMSG_ZC = 48, +IORING_OP_LAST = 49, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IORING_MSG_DATA = 0, +IORING_MSG_SEND_FD = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IORING_CQE_BUFFER_SHIFT = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IORING_REGISTER_BUFFERS = 0, +IORING_UNREGISTER_BUFFERS = 1, +IORING_REGISTER_FILES = 2, +IORING_UNREGISTER_FILES = 3, +IORING_REGISTER_EVENTFD = 4, +IORING_UNREGISTER_EVENTFD = 5, +IORING_REGISTER_FILES_UPDATE = 6, +IORING_REGISTER_EVENTFD_ASYNC = 7, +IORING_REGISTER_PROBE = 8, +IORING_REGISTER_PERSONALITY = 9, +IORING_UNREGISTER_PERSONALITY = 10, +IORING_REGISTER_RESTRICTIONS = 11, +IORING_REGISTER_ENABLE_RINGS = 12, +IORING_REGISTER_FILES2 = 13, +IORING_REGISTER_FILES_UPDATE2 = 14, +IORING_REGISTER_BUFFERS2 = 15, +IORING_REGISTER_BUFFERS_UPDATE = 16, +IORING_REGISTER_IOWQ_AFF = 17, +IORING_UNREGISTER_IOWQ_AFF = 18, +IORING_REGISTER_IOWQ_MAX_WORKERS = 19, +IORING_REGISTER_RING_FDS = 20, +IORING_UNREGISTER_RING_FDS = 21, +IORING_REGISTER_PBUF_RING = 22, +IORING_UNREGISTER_PBUF_RING = 23, +IORING_REGISTER_SYNC_CANCEL = 24, +IORING_REGISTER_FILE_ALLOC_RANGE = 25, +IORING_REGISTER_LAST = 26, +IORING_REGISTER_USE_REGISTERED_RING = 2147483648, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IO_WQ_BOUND = 0, +IO_WQ_UNBOUND = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IORING_RESTRICTION_REGISTER_OP = 0, +IORING_RESTRICTION_SQE_OP = 1, +IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, +IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, +IORING_RESTRICTION_LAST = 4, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_1 { +pub off: __u64, +pub addr2: __u64, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_2 { +pub addr: __u64, +pub splice_off_in: __u64, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_3 { +pub rw_flags: __kernel_rwf_t, +pub fsync_flags: __u32, +pub poll_events: __u16, +pub poll32_events: __u32, +pub sync_range_flags: __u32, +pub msg_flags: __u32, +pub timeout_flags: __u32, +pub accept_flags: __u32, +pub cancel_flags: __u32, +pub open_flags: __u32, +pub statx_flags: __u32, +pub fadvise_advice: __u32, +pub splice_flags: __u32, +pub rename_flags: __u32, +pub unlink_flags: __u32, +pub hardlink_flags: __u32, +pub xattr_flags: __u32, +pub msg_ring_flags: __u32, +pub uring_cmd_flags: __u32, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_4 { +pub buf_index: __u16, +pub buf_group: __u16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { +pub splice_fd_in: __s32, +pub file_index: __u32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_restriction__bindgen_ty_1 { +pub register_op: __u8, +pub sqe_op: __u8, +pub sqe_flags: __u8, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/netlink.rs temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/netlink.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/netlink.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/netlink.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,356 +1,1492 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_nl { +pub nl_family: __kernel_sa_family_t, +pub nl_pad: crate::ctypes::c_ushort, +pub nl_pid: __u32, +pub nl_groups: __u32, } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsghdr { +pub nlmsg_len: __u32, +pub nlmsg_type: __u16, +pub nlmsg_flags: __u16, +pub nlmsg_seq: __u32, +pub nlmsg_pid: __u32, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsgerr { +pub error: crate::ctypes::c_int, +pub msg: nlmsghdr, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_pktinfo { +pub group: __u32, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_req { +pub nm_block_size: crate::ctypes::c_uint, +pub nm_block_nr: crate::ctypes::c_uint, +pub nm_frame_size: crate::ctypes::c_uint, +pub nm_frame_nr: crate::ctypes::c_uint, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_hdr { +pub nm_status: crate::ctypes::c_uint, +pub nm_len: crate::ctypes::c_uint, +pub nm_group: __u32, +pub nm_pid: __u32, +pub nm_uid: __u32, +pub nm_gid: __u32, } -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const __FD_SETSIZE: u32 = 1024; -pub const NETLINK_ROUTE: u32 = 0; -pub const NETLINK_UNUSED: u32 = 1; -pub const NETLINK_USERSOCK: u32 = 2; -pub const NETLINK_FIREWALL: u32 = 3; -pub const NETLINK_SOCK_DIAG: u32 = 4; -pub const NETLINK_NFLOG: u32 = 5; -pub const NETLINK_XFRM: u32 = 6; -pub const NETLINK_SELINUX: u32 = 7; -pub const NETLINK_ISCSI: u32 = 8; -pub const NETLINK_AUDIT: u32 = 9; -pub const NETLINK_FIB_LOOKUP: u32 = 10; -pub const NETLINK_CONNECTOR: u32 = 11; -pub const NETLINK_NETFILTER: u32 = 12; -pub const NETLINK_IP6_FW: u32 = 13; -pub const NETLINK_DNRTMSG: u32 = 14; -pub const NETLINK_KOBJECT_UEVENT: u32 = 15; -pub const NETLINK_GENERIC: u32 = 16; -pub const NETLINK_SCSITRANSPORT: u32 = 18; -pub const NETLINK_ECRYPTFS: u32 = 19; -pub const NETLINK_RDMA: u32 = 20; -pub const NETLINK_CRYPTO: u32 = 21; -pub const NETLINK_SMC: u32 = 22; -pub const NETLINK_INET_DIAG: u32 = 4; -pub const MAX_LINKS: u32 = 32; -pub const NLM_F_REQUEST: u32 = 1; -pub const NLM_F_MULTI: u32 = 2; -pub const NLM_F_ACK: u32 = 4; -pub const NLM_F_ECHO: u32 = 8; -pub const NLM_F_DUMP_INTR: u32 = 16; -pub const NLM_F_DUMP_FILTERED: u32 = 32; -pub const NLM_F_ROOT: u32 = 256; -pub const NLM_F_MATCH: u32 = 512; -pub const NLM_F_ATOMIC: u32 = 1024; -pub const NLM_F_DUMP: u32 = 768; -pub const NLM_F_REPLACE: u32 = 256; -pub const NLM_F_EXCL: u32 = 512; -pub const NLM_F_CREATE: u32 = 1024; -pub const NLM_F_APPEND: u32 = 2048; -pub const NLM_F_NONREC: u32 = 256; -pub const NLM_F_BULK: u32 = 512; -pub const NLM_F_CAPPED: u32 = 256; -pub const NLM_F_ACK_TLVS: u32 = 512; -pub const NLMSG_ALIGNTO: u32 = 4; -pub const NLMSG_NOOP: u32 = 1; -pub const NLMSG_ERROR: u32 = 2; -pub const NLMSG_DONE: u32 = 3; -pub const NLMSG_OVERRUN: u32 = 4; -pub const NLMSG_MIN_TYPE: u32 = 16; -pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; -pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; -pub const NETLINK_PKTINFO: u32 = 3; -pub const NETLINK_BROADCAST_ERROR: u32 = 4; -pub const NETLINK_NO_ENOBUFS: u32 = 5; -pub const NETLINK_RX_RING: u32 = 6; -pub const NETLINK_TX_RING: u32 = 7; -pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; -pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; -pub const NETLINK_CAP_ACK: u32 = 10; -pub const NETLINK_EXT_ACK: u32 = 11; -pub const NETLINK_GET_STRICT_CHK: u32 = 12; -pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; -pub const NET_MAJOR: u32 = 36; -pub const NLA_F_NESTED: u32 = 32768; -pub const NLA_F_NET_BYTEORDER: u32 = 16384; -pub const NLA_TYPE_MASK: i32 = -49153; -pub const NLA_ALIGNTO: u32 = 4; -pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; -pub const MACVLAN_FLAG_NODST: u32 = 2; -pub const IPVLAN_F_PRIVATE: u32 = 1; -pub const IPVLAN_F_VEPA: u32 = 2; -pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; -pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; -pub const MAX_VLAN_LIST_LEN: u32 = 1; -pub const PORT_PROFILE_MAX: u32 = 40; -pub const PORT_UUID_MAX: u32 = 16; -pub const PORT_SELF_VF: i32 = -1; -pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; -pub const XDP_FLAGS_SKB_MODE: u32 = 2; -pub const XDP_FLAGS_DRV_MODE: u32 = 4; -pub const XDP_FLAGS_HW_MODE: u32 = 8; -pub const XDP_FLAGS_REPLACE: u32 = 16; -pub const XDP_FLAGS_MODES: u32 = 14; -pub const XDP_FLAGS_MASK: u32 = 31; -pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; -pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; -pub const IFA_F_SECONDARY: u32 = 1; -pub const IFA_F_TEMPORARY: u32 = 1; -pub const IFA_F_NODAD: u32 = 2; -pub const IFA_F_OPTIMISTIC: u32 = 4; -pub const IFA_F_DADFAILED: u32 = 8; -pub const IFA_F_HOMEADDRESS: u32 = 16; -pub const IFA_F_DEPRECATED: u32 = 32; -pub const IFA_F_TENTATIVE: u32 = 64; -pub const IFA_F_PERMANENT: u32 = 128; -pub const IFA_F_MANAGETEMPADDR: u32 = 256; -pub const IFA_F_NOPREFIXROUTE: u32 = 512; -pub const IFA_F_MCAUTOJOIN: u32 = 1024; -pub const IFA_F_STABLE_PRIVACY: u32 = 2048; -pub const IFAPROT_UNSPEC: u32 = 0; -pub const IFAPROT_KERNEL_LO: u32 = 1; -pub const IFAPROT_KERNEL_RA: u32 = 2; -pub const IFAPROT_KERNEL_LL: u32 = 3; -pub const NTF_USE: u32 = 1; -pub const NTF_SELF: u32 = 2; -pub const NTF_MASTER: u32 = 4; -pub const NTF_PROXY: u32 = 8; -pub const NTF_EXT_LEARNED: u32 = 16; -pub const NTF_OFFLOADED: u32 = 32; -pub const NTF_STICKY: u32 = 64; -pub const NTF_ROUTER: u32 = 128; -pub const NTF_EXT_MANAGED: u32 = 1; -pub const NTF_EXT_LOCKED: u32 = 2; -pub const NUD_INCOMPLETE: u32 = 1; -pub const NUD_REACHABLE: u32 = 2; -pub const NUD_STALE: u32 = 4; -pub const NUD_DELAY: u32 = 8; -pub const NUD_PROBE: u32 = 16; -pub const NUD_FAILED: u32 = 32; -pub const NUD_NOARP: u32 = 64; -pub const NUD_PERMANENT: u32 = 128; -pub const NUD_NONE: u32 = 0; -pub const RTNL_FAMILY_IPMR: u32 = 128; -pub const RTNL_FAMILY_IP6MR: u32 = 129; -pub const RTNL_FAMILY_MAX: u32 = 129; -pub const RTA_ALIGNTO: u32 = 4; -pub const RTPROT_UNSPEC: u32 = 0; -pub const RTPROT_REDIRECT: u32 = 1; -pub const RTPROT_KERNEL: u32 = 2; -pub const RTPROT_BOOT: u32 = 3; -pub const RTPROT_STATIC: u32 = 4; -pub const RTPROT_GATED: u32 = 8; -pub const RTPROT_RA: u32 = 9; -pub const RTPROT_MRT: u32 = 10; -pub const RTPROT_ZEBRA: u32 = 11; -pub const RTPROT_BIRD: u32 = 12; -pub const RTPROT_DNROUTED: u32 = 13; -pub const RTPROT_XORP: u32 = 14; -pub const RTPROT_NTK: u32 = 15; -pub const RTPROT_DHCP: u32 = 16; -pub const RTPROT_MROUTED: u32 = 17; -pub const RTPROT_KEEPALIVED: u32 = 18; -pub const RTPROT_BABEL: u32 = 42; -pub const RTPROT_OPENR: u32 = 99; -pub const RTPROT_BGP: u32 = 186; -pub const RTPROT_ISIS: u32 = 187; -pub const RTPROT_OSPF: u32 = 188; -pub const RTPROT_RIP: u32 = 189; -pub const RTPROT_EIGRP: u32 = 192; -pub const RTM_F_NOTIFY: u32 = 256; -pub const RTM_F_CLONED: u32 = 512; -pub const RTM_F_EQUALIZE: u32 = 1024; -pub const RTM_F_PREFIX: u32 = 2048; -pub const RTM_F_LOOKUP_TABLE: u32 = 4096; -pub const RTM_F_FIB_MATCH: u32 = 8192; -pub const RTM_F_OFFLOAD: u32 = 16384; -pub const RTM_F_TRAP: u32 = 32768; -pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; -pub const RTNH_F_DEAD: u32 = 1; -pub const RTNH_F_PERVASIVE: u32 = 2; -pub const RTNH_F_ONLINK: u32 = 4; -pub const RTNH_F_OFFLOAD: u32 = 8; -pub const RTNH_F_LINKDOWN: u32 = 16; -pub const RTNH_F_UNRESOLVED: u32 = 32; -pub const RTNH_F_TRAP: u32 = 64; -pub const RTNH_COMPARE_MASK: u32 = 89; -pub const RTNH_ALIGNTO: u32 = 4; -pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; -pub const RTAX_FEATURE_ECN: u32 = 1; -pub const RTAX_FEATURE_SACK: u32 = 2; -pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; -pub const RTAX_FEATURE_ALLFRAG: u32 = 8; -pub const RTAX_FEATURE_MASK: u32 = 15; -pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; -pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; -pub const RTMGRP_LINK: u32 = 1; -pub const RTMGRP_NOTIFY: u32 = 2; -pub const RTMGRP_NEIGH: u32 = 4; -pub const RTMGRP_TC: u32 = 8; -pub const RTMGRP_IPV4_IFADDR: u32 = 16; -pub const RTMGRP_IPV4_MROUTE: u32 = 32; -pub const RTMGRP_IPV4_ROUTE: u32 = 64; -pub const RTMGRP_IPV4_RULE: u32 = 128; -pub const RTMGRP_IPV6_IFADDR: u32 = 256; -pub const RTMGRP_IPV6_MROUTE: u32 = 512; -pub const RTMGRP_IPV6_ROUTE: u32 = 1024; -pub const RTMGRP_IPV6_IFINFO: u32 = 2048; -pub const RTMGRP_DECnet_IFADDR: u32 = 4096; -pub const RTMGRP_DECnet_ROUTE: u32 = 16384; -pub const RTMGRP_IPV6_PREFIX: u32 = 131072; -pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; -pub const RTEXT_FILTER_VF: u32 = 1; -pub const RTEXT_FILTER_BRVLAN: u32 = 2; -pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; -pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; -pub const RTEXT_FILTER_MRP: u32 = 16; -pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; -pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; -pub const RTEXT_FILTER_MST: u32 = 128; -pub type size_t = crate::ctypes::c_uint; -pub type ssize_t = crate::ctypes::c_int; -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; #[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct nlattr { +pub nla_len: __u16, +pub nla_type: __u16, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, +#[derive(Debug, Copy, Clone)] +pub struct nla_bitfield32 { +pub value: __u32, +pub selector: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], +pub struct rtnl_link_stats { +pub rx_packets: __u32, +pub tx_packets: __u32, +pub rx_bytes: __u32, +pub tx_bytes: __u32, +pub rx_errors: __u32, +pub tx_errors: __u32, +pub rx_dropped: __u32, +pub tx_dropped: __u32, +pub multicast: __u32, +pub collisions: __u32, +pub rx_length_errors: __u32, +pub rx_over_errors: __u32, +pub rx_crc_errors: __u32, +pub rx_frame_errors: __u32, +pub rx_fifo_errors: __u32, +pub rx_missed_errors: __u32, +pub tx_aborted_errors: __u32, +pub tx_carrier_errors: __u32, +pub tx_fifo_errors: __u32, +pub tx_heartbeat_errors: __u32, +pub tx_window_errors: __u32, +pub rx_compressed: __u32, +pub tx_compressed: __u32, +pub rx_nohandler: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnl_link_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +pub collisions: __u64, +pub rx_length_errors: __u64, +pub rx_over_errors: __u64, +pub rx_crc_errors: __u64, +pub rx_frame_errors: __u64, +pub rx_fifo_errors: __u64, +pub rx_missed_errors: __u64, +pub tx_aborted_errors: __u64, +pub tx_carrier_errors: __u64, +pub tx_fifo_errors: __u64, +pub tx_heartbeat_errors: __u64, +pub tx_window_errors: __u64, +pub rx_compressed: __u64, +pub tx_compressed: __u64, +pub rx_nohandler: __u64, +pub rx_otherhost_dropped: __u64, } -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 32usize], +pub struct rtnl_hw_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, } -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_old_dev_t = crate::ctypes::c_uint; -pub type __kernel_size_t = crate::ctypes::c_uint; -pub type __kernel_ssize_t = crate::ctypes::c_int; -pub type __kernel_ptrdiff_t = crate::ctypes::c_int; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], +pub struct rtnl_link_ifmap { +pub mem_start: __u64, +pub mem_end: __u64, +pub base_addr: __u64, +pub irq: __u16, +pub dma: __u8, +pub port: __u8, } -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_nl { -pub nl_family: __kernel_sa_family_t, -pub nl_pad: crate::ctypes::c_ushort, -pub nl_pid: __u32, -pub nl_groups: __u32, +pub struct ifla_bridge_id { +pub prio: [__u8; 2usize], +pub addr: [__u8; 6usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsghdr { -pub nlmsg_len: __u32, -pub nlmsg_type: __u16, -pub nlmsg_flags: __u16, -pub nlmsg_seq: __u32, -pub nlmsg_pid: __u32, +pub struct ifla_cacheinfo { +pub max_reasm_len: __u32, +pub tstamp: __u32, +pub reachable_time: __u32, +pub retrans_time: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsgerr { -pub error: crate::ctypes::c_int, -pub msg: nlmsghdr, +pub struct ifla_vlan_flags { +pub flags: __u32, +pub mask: __u32, } -impl nlmsgerr_attrs { -pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_qos_mapping { +pub from: __u32, +pub to: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tunnel_msg { +pub family: __u8, +pub flags: __u8, +pub reserved2: __u16, +pub ifindex: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vxlan_port_range { +pub low: __be16, +pub high: __be16, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_mac { +pub vf: __u32, +pub mac: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_broadcast { +pub broadcast: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan_info { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +pub vlan_proto: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_tx_rate { +pub vf: __u32, +pub rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rate { +pub vf: __u32, +pub min_tx_rate: __u32, +pub max_tx_rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_spoofchk { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_guid { +pub vf: __u32, +pub guid: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_link_state { +pub vf: __u32, +pub link_state: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rss_query_en { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_trust { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_port_vsi { +pub vsi_mgr_id: __u8, +pub vsi_type_id: [__u8; 3usize], +pub vsi_type_version: __u8, +pub pad: [__u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct if_stats_msg { +pub family: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub ifindex: __u32, +pub filter_mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_rmnet_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifaddrmsg { +pub ifa_family: __u8, +pub ifa_prefixlen: __u8, +pub ifa_flags: __u8, +pub ifa_scope: __u8, +pub ifa_index: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifa_cacheinfo { +pub ifa_prefered: __u32, +pub ifa_valid: __u32, +pub cstamp: __u32, +pub tstamp: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndmsg { +pub ndm_family: __u8, +pub ndm_pad1: __u8, +pub ndm_pad2: __u16, +pub ndm_ifindex: __s32, +pub ndm_state: __u16, +pub ndm_flags: __u8, +pub ndm_type: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nda_cacheinfo { +pub ndm_confirmed: __u32, +pub ndm_used: __u32, +pub ndm_updated: __u32, +pub ndm_refcnt: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_stats { +pub ndts_allocs: __u64, +pub ndts_destroys: __u64, +pub ndts_hash_grows: __u64, +pub ndts_res_failed: __u64, +pub ndts_lookups: __u64, +pub ndts_hits: __u64, +pub ndts_rcv_probes_mcast: __u64, +pub ndts_rcv_probes_ucast: __u64, +pub ndts_periodic_gc_runs: __u64, +pub ndts_forced_gc_runs: __u64, +pub ndts_table_fulls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndtmsg { +pub ndtm_family: __u8, +pub ndtm_pad1: __u8, +pub ndtm_pad2: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_config { +pub ndtc_key_len: __u16, +pub ndtc_entry_size: __u16, +pub ndtc_entries: __u32, +pub ndtc_last_flush: __u32, +pub ndtc_last_rand: __u32, +pub ndtc_hash_rnd: __u32, +pub ndtc_hash_mask: __u32, +pub ndtc_hash_chain_gc: __u32, +pub ndtc_proxy_qlen: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtattr { +pub rta_len: crate::ctypes::c_ushort, +pub rta_type: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtmsg { +pub rtm_family: crate::ctypes::c_uchar, +pub rtm_dst_len: crate::ctypes::c_uchar, +pub rtm_src_len: crate::ctypes::c_uchar, +pub rtm_tos: crate::ctypes::c_uchar, +pub rtm_table: crate::ctypes::c_uchar, +pub rtm_protocol: crate::ctypes::c_uchar, +pub rtm_scope: crate::ctypes::c_uchar, +pub rtm_type: crate::ctypes::c_uchar, +pub rtm_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnexthop { +pub rtnh_len: crate::ctypes::c_ushort, +pub rtnh_flags: crate::ctypes::c_uchar, +pub rtnh_hops: crate::ctypes::c_uchar, +pub rtnh_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug)] +pub struct rtvia { +pub rtvia_family: __kernel_sa_family_t, +pub rtvia_addr: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_cacheinfo { +pub rta_clntref: __u32, +pub rta_lastuse: __u32, +pub rta_expires: __s32, +pub rta_error: __u32, +pub rta_used: __u32, +pub rta_id: __u32, +pub rta_ts: __u32, +pub rta_tsage: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rta_session { +pub proto: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub u: rta_session__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { +pub sport: __u16, +pub dport: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { +pub type_: __u8, +pub code: __u8, +pub ident: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_mfc_stats { +pub mfcs_packets: __u64, +pub mfcs_bytes: __u64, +pub mfcs_wrong_if: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtgenmsg { +pub rtgen_family: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifinfomsg { +pub ifi_family: crate::ctypes::c_uchar, +pub __ifi_pad: crate::ctypes::c_uchar, +pub ifi_type: crate::ctypes::c_ushort, +pub ifi_index: crate::ctypes::c_int, +pub ifi_flags: crate::ctypes::c_uint, +pub ifi_change: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefixmsg { +pub prefix_family: crate::ctypes::c_uchar, +pub prefix_pad1: crate::ctypes::c_uchar, +pub prefix_pad2: crate::ctypes::c_ushort, +pub prefix_ifindex: crate::ctypes::c_int, +pub prefix_type: crate::ctypes::c_uchar, +pub prefix_len: crate::ctypes::c_uchar, +pub prefix_flags: crate::ctypes::c_uchar, +pub prefix_pad3: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefix_cacheinfo { +pub preferred_time: __u32, +pub valid_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcmsg { +pub tcm_family: crate::ctypes::c_uchar, +pub tcm__pad1: crate::ctypes::c_uchar, +pub tcm__pad2: crate::ctypes::c_ushort, +pub tcm_ifindex: crate::ctypes::c_int, +pub tcm_handle: __u32, +pub tcm_parent: __u32, +pub tcm_info: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nduseroptmsg { +pub nduseropt_family: crate::ctypes::c_uchar, +pub nduseropt_pad1: crate::ctypes::c_uchar, +pub nduseropt_opts_len: crate::ctypes::c_ushort, +pub nduseropt_ifindex: crate::ctypes::c_int, +pub nduseropt_icmp_type: __u8, +pub nduseropt_icmp_code: __u8, +pub nduseropt_pad2: crate::ctypes::c_ushort, +pub nduseropt_pad3: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcamsg { +pub tca_family: crate::ctypes::c_uchar, +pub tca__pad1: crate::ctypes::c_uchar, +pub tca__pad2: crate::ctypes::c_ushort, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const NETLINK_ROUTE: u32 = 0; +pub const NETLINK_UNUSED: u32 = 1; +pub const NETLINK_USERSOCK: u32 = 2; +pub const NETLINK_FIREWALL: u32 = 3; +pub const NETLINK_SOCK_DIAG: u32 = 4; +pub const NETLINK_NFLOG: u32 = 5; +pub const NETLINK_XFRM: u32 = 6; +pub const NETLINK_SELINUX: u32 = 7; +pub const NETLINK_ISCSI: u32 = 8; +pub const NETLINK_AUDIT: u32 = 9; +pub const NETLINK_FIB_LOOKUP: u32 = 10; +pub const NETLINK_CONNECTOR: u32 = 11; +pub const NETLINK_NETFILTER: u32 = 12; +pub const NETLINK_IP6_FW: u32 = 13; +pub const NETLINK_DNRTMSG: u32 = 14; +pub const NETLINK_KOBJECT_UEVENT: u32 = 15; +pub const NETLINK_GENERIC: u32 = 16; +pub const NETLINK_SCSITRANSPORT: u32 = 18; +pub const NETLINK_ECRYPTFS: u32 = 19; +pub const NETLINK_RDMA: u32 = 20; +pub const NETLINK_CRYPTO: u32 = 21; +pub const NETLINK_SMC: u32 = 22; +pub const NETLINK_INET_DIAG: u32 = 4; +pub const MAX_LINKS: u32 = 32; +pub const NLM_F_REQUEST: u32 = 1; +pub const NLM_F_MULTI: u32 = 2; +pub const NLM_F_ACK: u32 = 4; +pub const NLM_F_ECHO: u32 = 8; +pub const NLM_F_DUMP_INTR: u32 = 16; +pub const NLM_F_DUMP_FILTERED: u32 = 32; +pub const NLM_F_ROOT: u32 = 256; +pub const NLM_F_MATCH: u32 = 512; +pub const NLM_F_ATOMIC: u32 = 1024; +pub const NLM_F_DUMP: u32 = 768; +pub const NLM_F_REPLACE: u32 = 256; +pub const NLM_F_EXCL: u32 = 512; +pub const NLM_F_CREATE: u32 = 1024; +pub const NLM_F_APPEND: u32 = 2048; +pub const NLM_F_NONREC: u32 = 256; +pub const NLM_F_BULK: u32 = 512; +pub const NLM_F_CAPPED: u32 = 256; +pub const NLM_F_ACK_TLVS: u32 = 512; +pub const NLMSG_ALIGNTO: u32 = 4; +pub const NLMSG_NOOP: u32 = 1; +pub const NLMSG_ERROR: u32 = 2; +pub const NLMSG_DONE: u32 = 3; +pub const NLMSG_OVERRUN: u32 = 4; +pub const NLMSG_MIN_TYPE: u32 = 16; +pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; +pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; +pub const NETLINK_PKTINFO: u32 = 3; +pub const NETLINK_BROADCAST_ERROR: u32 = 4; +pub const NETLINK_NO_ENOBUFS: u32 = 5; +pub const NETLINK_RX_RING: u32 = 6; +pub const NETLINK_TX_RING: u32 = 7; +pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; +pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; +pub const NETLINK_CAP_ACK: u32 = 10; +pub const NETLINK_EXT_ACK: u32 = 11; +pub const NETLINK_GET_STRICT_CHK: u32 = 12; +pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; +pub const NET_MAJOR: u32 = 36; +pub const NLA_F_NESTED: u32 = 32768; +pub const NLA_F_NET_BYTEORDER: u32 = 16384; +pub const NLA_TYPE_MASK: i32 = -49153; +pub const NLA_ALIGNTO: u32 = 4; +pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; +pub const MACVLAN_FLAG_NODST: u32 = 2; +pub const IPVLAN_F_PRIVATE: u32 = 1; +pub const IPVLAN_F_VEPA: u32 = 2; +pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; +pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; +pub const MAX_VLAN_LIST_LEN: u32 = 1; +pub const PORT_PROFILE_MAX: u32 = 40; +pub const PORT_UUID_MAX: u32 = 16; +pub const PORT_SELF_VF: i32 = -1; +pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; +pub const XDP_FLAGS_SKB_MODE: u32 = 2; +pub const XDP_FLAGS_DRV_MODE: u32 = 4; +pub const XDP_FLAGS_HW_MODE: u32 = 8; +pub const XDP_FLAGS_REPLACE: u32 = 16; +pub const XDP_FLAGS_MODES: u32 = 14; +pub const XDP_FLAGS_MASK: u32 = 31; +pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; +pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; +pub const IFA_F_SECONDARY: u32 = 1; +pub const IFA_F_TEMPORARY: u32 = 1; +pub const IFA_F_NODAD: u32 = 2; +pub const IFA_F_OPTIMISTIC: u32 = 4; +pub const IFA_F_DADFAILED: u32 = 8; +pub const IFA_F_HOMEADDRESS: u32 = 16; +pub const IFA_F_DEPRECATED: u32 = 32; +pub const IFA_F_TENTATIVE: u32 = 64; +pub const IFA_F_PERMANENT: u32 = 128; +pub const IFA_F_MANAGETEMPADDR: u32 = 256; +pub const IFA_F_NOPREFIXROUTE: u32 = 512; +pub const IFA_F_MCAUTOJOIN: u32 = 1024; +pub const IFA_F_STABLE_PRIVACY: u32 = 2048; +pub const IFAPROT_UNSPEC: u32 = 0; +pub const IFAPROT_KERNEL_LO: u32 = 1; +pub const IFAPROT_KERNEL_RA: u32 = 2; +pub const IFAPROT_KERNEL_LL: u32 = 3; +pub const NTF_USE: u32 = 1; +pub const NTF_SELF: u32 = 2; +pub const NTF_MASTER: u32 = 4; +pub const NTF_PROXY: u32 = 8; +pub const NTF_EXT_LEARNED: u32 = 16; +pub const NTF_OFFLOADED: u32 = 32; +pub const NTF_STICKY: u32 = 64; +pub const NTF_ROUTER: u32 = 128; +pub const NTF_EXT_MANAGED: u32 = 1; +pub const NTF_EXT_LOCKED: u32 = 2; +pub const NUD_INCOMPLETE: u32 = 1; +pub const NUD_REACHABLE: u32 = 2; +pub const NUD_STALE: u32 = 4; +pub const NUD_DELAY: u32 = 8; +pub const NUD_PROBE: u32 = 16; +pub const NUD_FAILED: u32 = 32; +pub const NUD_NOARP: u32 = 64; +pub const NUD_PERMANENT: u32 = 128; +pub const NUD_NONE: u32 = 0; +pub const RTNL_FAMILY_IPMR: u32 = 128; +pub const RTNL_FAMILY_IP6MR: u32 = 129; +pub const RTNL_FAMILY_MAX: u32 = 129; +pub const RTA_ALIGNTO: u32 = 4; +pub const RTPROT_UNSPEC: u32 = 0; +pub const RTPROT_REDIRECT: u32 = 1; +pub const RTPROT_KERNEL: u32 = 2; +pub const RTPROT_BOOT: u32 = 3; +pub const RTPROT_STATIC: u32 = 4; +pub const RTPROT_GATED: u32 = 8; +pub const RTPROT_RA: u32 = 9; +pub const RTPROT_MRT: u32 = 10; +pub const RTPROT_ZEBRA: u32 = 11; +pub const RTPROT_BIRD: u32 = 12; +pub const RTPROT_DNROUTED: u32 = 13; +pub const RTPROT_XORP: u32 = 14; +pub const RTPROT_NTK: u32 = 15; +pub const RTPROT_DHCP: u32 = 16; +pub const RTPROT_MROUTED: u32 = 17; +pub const RTPROT_KEEPALIVED: u32 = 18; +pub const RTPROT_BABEL: u32 = 42; +pub const RTPROT_OPENR: u32 = 99; +pub const RTPROT_BGP: u32 = 186; +pub const RTPROT_ISIS: u32 = 187; +pub const RTPROT_OSPF: u32 = 188; +pub const RTPROT_RIP: u32 = 189; +pub const RTPROT_EIGRP: u32 = 192; +pub const RTM_F_NOTIFY: u32 = 256; +pub const RTM_F_CLONED: u32 = 512; +pub const RTM_F_EQUALIZE: u32 = 1024; +pub const RTM_F_PREFIX: u32 = 2048; +pub const RTM_F_LOOKUP_TABLE: u32 = 4096; +pub const RTM_F_FIB_MATCH: u32 = 8192; +pub const RTM_F_OFFLOAD: u32 = 16384; +pub const RTM_F_TRAP: u32 = 32768; +pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; +pub const RTNH_F_DEAD: u32 = 1; +pub const RTNH_F_PERVASIVE: u32 = 2; +pub const RTNH_F_ONLINK: u32 = 4; +pub const RTNH_F_OFFLOAD: u32 = 8; +pub const RTNH_F_LINKDOWN: u32 = 16; +pub const RTNH_F_UNRESOLVED: u32 = 32; +pub const RTNH_F_TRAP: u32 = 64; +pub const RTNH_COMPARE_MASK: u32 = 89; +pub const RTNH_ALIGNTO: u32 = 4; +pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; +pub const RTAX_FEATURE_ECN: u32 = 1; +pub const RTAX_FEATURE_SACK: u32 = 2; +pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; +pub const RTAX_FEATURE_ALLFRAG: u32 = 8; +pub const RTAX_FEATURE_MASK: u32 = 15; +pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; +pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; +pub const RTMGRP_LINK: u32 = 1; +pub const RTMGRP_NOTIFY: u32 = 2; +pub const RTMGRP_NEIGH: u32 = 4; +pub const RTMGRP_TC: u32 = 8; +pub const RTMGRP_IPV4_IFADDR: u32 = 16; +pub const RTMGRP_IPV4_MROUTE: u32 = 32; +pub const RTMGRP_IPV4_ROUTE: u32 = 64; +pub const RTMGRP_IPV4_RULE: u32 = 128; +pub const RTMGRP_IPV6_IFADDR: u32 = 256; +pub const RTMGRP_IPV6_MROUTE: u32 = 512; +pub const RTMGRP_IPV6_ROUTE: u32 = 1024; +pub const RTMGRP_IPV6_IFINFO: u32 = 2048; +pub const RTMGRP_DECnet_IFADDR: u32 = 4096; +pub const RTMGRP_DECnet_ROUTE: u32 = 16384; +pub const RTMGRP_IPV6_PREFIX: u32 = 131072; +pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; +pub const RTEXT_FILTER_VF: u32 = 1; +pub const RTEXT_FILTER_BRVLAN: u32 = 2; +pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; +pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; +pub const RTEXT_FILTER_MRP: u32 = 16; +pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; +pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; +pub const RTEXT_FILTER_MST: u32 = 128; +pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; +pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; +pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; +pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; +pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; +pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; +pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; +pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; +pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; +pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; +pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; +pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; +pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; +pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; +pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; +pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; +pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; +pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; +pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; +pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; +pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; +pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; +pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; +pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; +pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; +pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; +pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; +pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; +pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; +pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; +pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; +pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; +pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; +pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; +pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; +pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; +pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; +pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; +pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; +pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; +pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; +pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; +pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; +pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; +pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; +pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; +pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; +pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; +pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; +pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; +pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; +pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; +pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; +pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; +pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; +pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; +pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; +pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; +pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; +pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; +pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; +pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; +pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; +pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; +pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; +pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; +pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; +pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; +pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; +pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; +pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; +pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; +pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; +pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; +pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; +pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; +pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; +pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; +pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; +pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; +pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; +pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; +pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; +pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; +pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; +pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; +pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; +pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; +pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; +pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; +pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; +pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; +pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; +pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; +pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; +pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; +pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; +pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; +pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; +pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; +pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; +pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; +pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; +pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; +pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; +pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; +pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; +pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; +pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; +pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; +pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; +pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; +pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; +pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; +pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; +pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; +pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; +pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; +pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; +pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; +pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; +pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; +pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; +pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; +pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; +pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; +pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; +pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; +pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; +pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; +pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; +pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; +pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; +pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; +pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; +pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; +pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; +pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; +pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; +pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; +pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; +pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; +pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; +pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; +pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; +pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; +pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; +pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; +pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; +pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; +pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; +pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; +pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; +pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; +pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; +pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; +pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; +pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; +pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; +pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; +pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; +pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; +pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; +pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; +pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; +pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; +pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; +pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; +pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; +pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; +pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; +pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; +pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; +pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; +pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; +pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; +pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; +pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; +pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; +pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; +pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; +pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; +pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; +pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; +pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; +pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; +pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; +pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; +pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; +pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; +pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; +pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; +pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; +pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; +pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; +pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; +pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; +pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; +pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; +pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; +pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; +pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; +pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; +pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; +pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; +pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; +pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; +pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; +pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; +pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; +pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; +pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; +pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; +pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; +pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; +pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; +pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; +pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; +pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; +pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; +pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; +pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; +pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; +pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; +pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; +pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; +pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; +pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; +pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; +pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; +pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; +pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; +pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; +pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; +pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; +pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; +pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; +pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; +pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; +pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; +pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; +pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; +pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; +pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; +pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; +pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; +pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; +pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; +pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; +pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; +pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; +pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; +pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; +pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; +pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; +pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; +pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; +pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; +pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; +pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; +pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; +pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; +pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; +pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; +pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; +pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; +pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; +pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; +pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; +pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; +pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; +pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; +pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; +pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; +pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; +pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; +pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; +pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; +pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; +pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; +pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; +pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; +pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; +pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; +pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; +pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; +pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; +pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; +pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; +pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; +pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; +pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; +pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; +pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; +pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; +pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; +pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; +pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; +pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; +pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; +pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; +pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; +pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; +pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; +pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; +pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; +pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; +pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; +pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; +pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; +pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; +pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; +pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; +pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; +pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; +pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; +pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; +pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; +pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; +pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; +pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; +pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; +pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; +pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; +pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; +pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; +pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; +pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; +pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; +pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; +pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; +pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; +pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; +pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; +pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; +pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; +pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; +pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; +pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; +pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; +pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; +pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; +pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; +pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; +pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; +pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; +pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; +pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; +pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; +pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; +pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; +pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; +pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; +pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; +pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; +pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; +pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; +pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; +pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; +pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; +pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; +pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; +pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; +pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; +pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; +pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; +pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; +pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; +pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; +pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; +pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; +pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; +pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; +pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; +pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; +pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; +pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; +pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; +pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; +pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; +pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; +pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; +pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; +pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; +pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; +pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; +pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; +pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; +pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; +pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; +pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; +pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; +pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; +pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; +pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; +pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; +pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; +pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; +pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; +pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; +pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; +pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; +pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; +pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; +pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; +pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; +pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; +pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; +pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; +pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; +pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; +pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; +pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; +pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; +pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; +pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; +pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; +pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; +pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; +pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; +pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; +pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; +pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; +pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; +pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; +pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; +pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; +pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; +pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; +pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; +pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; +pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; +pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; +pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; +pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; +pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; +pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; +pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; +pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; +pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; +pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; +pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; +pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; +pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; +pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; +pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; +pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; +pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; +pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; +pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; +pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; +pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; +pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; +pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; +pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; +pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; +pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; +pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; +pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; +pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; +pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; +pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; +pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; +pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; +pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; +pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; +pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; +pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; +pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; +pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; +pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; +pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; +pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; +pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; +pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; +pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; +pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; +pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; +pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; +pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; +pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; +pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; +pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; +pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; +pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; +pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; +pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; +pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; +pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; +pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; +pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; +pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; +pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; +pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; +pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; +pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; +pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; +pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; +pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; +pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; +pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; +pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; +pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; +pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; +pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; +pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; +pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; +pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; +pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; +pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; +pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; +pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; +pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; +pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; +pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; +pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; +pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; +pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; +pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; +pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; +pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; +pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; +pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; +pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; +pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; +pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; +pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; +pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; +pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; +pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; +pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; +pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; +pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; +pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; +pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; +pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; +pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; +pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; +pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; +pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; +pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; +pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; +pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; +pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; +pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; +pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; +pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; +pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; +pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; +pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; +pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; +pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; +pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; +pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; +pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; +pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; +pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; +pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; +pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; +pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; +pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; +pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; +pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; +pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; +pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; +pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; +pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; +pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; +pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; +pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; +pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; +pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; +pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; +pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; +pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; +pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; +pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; +pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; +pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; +pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; +pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; +pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; +pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; +pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; +pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; +pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; +pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; +pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; +pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; +pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; +pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; +pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; +pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; +pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; +pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; +pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; +pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; +pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; +pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; +pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; +pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; +pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; +pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; +pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; +pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; +pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; +pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; +pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; +pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; +pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; +pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; +pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; +pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; +pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; +pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; +pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; +pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; +pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; +pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; +pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; +pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; +pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; +pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; +pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; +pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; +pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; +pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; +pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; +pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; +pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; +pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; +pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; +pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; +pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; +pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; +pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; +pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; +pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; +pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; +pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; +pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; +pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; +pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; +pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; +pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; +pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; +pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; +pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; +pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; +pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; +pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; +pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; +pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; +pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; +pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; +pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; +pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; +pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; +pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; +pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; +pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; +pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; +pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; +pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; +pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; +pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; +pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; +pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; +pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; +pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; +pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; +pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; +pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; +pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; +pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; +pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; +pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; +pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; +pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; +pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; +pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; +pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; +pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; +pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; +pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; +pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; +pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; +pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; +pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; +pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; +pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; +pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; +pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; +pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; +pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; +pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; +pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; +pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; +pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; +pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; +pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; +pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; +pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; +pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -364,29 +1500,6 @@ NLMSGERR_ATTR_MISS_NEST = 6, __NLMSGERR_ATTR_MAX = 7, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_pktinfo { -pub group: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_req { -pub nm_block_size: crate::ctypes::c_uint, -pub nm_block_nr: crate::ctypes::c_uint, -pub nm_frame_size: crate::ctypes::c_uint, -pub nm_frame_nr: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_hdr { -pub nm_status: crate::ctypes::c_uint, -pub nm_len: crate::ctypes::c_uint, -pub nm_group: __u32, -pub nm_pid: __u32, -pub nm_uid: __u32, -pub nm_gid: __u32, -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -397,8 +1510,6 @@ NL_MMAP_STATUS_COPY = 3, NL_MMAP_STATUS_SKIP = 4, } -pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; -pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -406,208 +1517,46 @@ NETLINK_UNCONNECTED = 0, NETLINK_CONNECTED = 1, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nlattr { -pub nla_len: __u16, -pub nla_type: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nla_bitfield32 { -pub value: __u32, -pub selector: __u32, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_attribute_type { -NL_ATTR_TYPE_INVALID = 0, -NL_ATTR_TYPE_FLAG = 1, -NL_ATTR_TYPE_U8 = 2, -NL_ATTR_TYPE_U16 = 3, -NL_ATTR_TYPE_U32 = 4, -NL_ATTR_TYPE_U64 = 5, -NL_ATTR_TYPE_S8 = 6, -NL_ATTR_TYPE_S16 = 7, -NL_ATTR_TYPE_S32 = 8, -NL_ATTR_TYPE_S64 = 9, -NL_ATTR_TYPE_BINARY = 10, -NL_ATTR_TYPE_STRING = 11, -NL_ATTR_TYPE_NUL_STRING = 12, -NL_ATTR_TYPE_NESTED = 13, -NL_ATTR_TYPE_NESTED_ARRAY = 14, -NL_ATTR_TYPE_BITFIELD32 = 15, -} -impl netlink_policy_type_attr { -pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_policy_type_attr { -NL_POLICY_TYPE_ATTR_UNSPEC = 0, -NL_POLICY_TYPE_ATTR_TYPE = 1, -NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, -NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, -NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, -NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, -NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, -NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, -NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, -NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, -NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, -NL_POLICY_TYPE_ATTR_PAD = 11, -NL_POLICY_TYPE_ATTR_MASK = 12, -__NL_POLICY_TYPE_ATTR_MAX = 13, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats { -pub rx_packets: __u32, -pub tx_packets: __u32, -pub rx_bytes: __u32, -pub tx_bytes: __u32, -pub rx_errors: __u32, -pub tx_errors: __u32, -pub rx_dropped: __u32, -pub tx_dropped: __u32, -pub multicast: __u32, -pub collisions: __u32, -pub rx_length_errors: __u32, -pub rx_over_errors: __u32, -pub rx_crc_errors: __u32, -pub rx_frame_errors: __u32, -pub rx_fifo_errors: __u32, -pub rx_missed_errors: __u32, -pub tx_aborted_errors: __u32, -pub tx_carrier_errors: __u32, -pub tx_fifo_errors: __u32, -pub tx_heartbeat_errors: __u32, -pub tx_window_errors: __u32, -pub rx_compressed: __u32, -pub tx_compressed: __u32, -pub rx_nohandler: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, -pub collisions: __u64, -pub rx_length_errors: __u64, -pub rx_over_errors: __u64, -pub rx_crc_errors: __u64, -pub rx_frame_errors: __u64, -pub rx_fifo_errors: __u64, -pub rx_missed_errors: __u64, -pub tx_aborted_errors: __u64, -pub tx_carrier_errors: __u64, -pub tx_fifo_errors: __u64, -pub tx_heartbeat_errors: __u64, -pub tx_window_errors: __u64, -pub rx_compressed: __u64, -pub tx_compressed: __u64, -pub rx_nohandler: __u64, -pub rx_otherhost_dropped: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_hw_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, +pub enum netlink_attribute_type { +NL_ATTR_TYPE_INVALID = 0, +NL_ATTR_TYPE_FLAG = 1, +NL_ATTR_TYPE_U8 = 2, +NL_ATTR_TYPE_U16 = 3, +NL_ATTR_TYPE_U32 = 4, +NL_ATTR_TYPE_U64 = 5, +NL_ATTR_TYPE_S8 = 6, +NL_ATTR_TYPE_S16 = 7, +NL_ATTR_TYPE_S32 = 8, +NL_ATTR_TYPE_S64 = 9, +NL_ATTR_TYPE_BINARY = 10, +NL_ATTR_TYPE_STRING = 11, +NL_ATTR_TYPE_NUL_STRING = 12, +NL_ATTR_TYPE_NESTED = 13, +NL_ATTR_TYPE_NESTED_ARRAY = 14, +NL_ATTR_TYPE_BITFIELD32 = 15, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_ifmap { -pub mem_start: __u64, -pub mem_end: __u64, -pub base_addr: __u64, -pub irq: __u16, -pub dma: __u8, -pub port: __u8, +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_policy_type_attr { +NL_POLICY_TYPE_ATTR_UNSPEC = 0, +NL_POLICY_TYPE_ATTR_TYPE = 1, +NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, +NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, +NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, +NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, +NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, +NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, +NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, +NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, +NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, +NL_POLICY_TYPE_ATTR_PAD = 11, +NL_POLICY_TYPE_ATTR_MASK = 12, +__NL_POLICY_TYPE_ATTR_MAX = 13, } -pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; -pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; -pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; -pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; -pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; -pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; -pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; -pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; -pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; -pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; -pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; -pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; -pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; -pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; -pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; -pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; -pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; -pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; -pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; -pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; -pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; -pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; -pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; -pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; -pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; -pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; -pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; -pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; -pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; -pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; -pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; -pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; -pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; -pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; -pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; -pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; -pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; -pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; -pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; -pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; -pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; -pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; -pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; -pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; -pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; -pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; -pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; -pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; -pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; -pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; -pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; -pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; -pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; -pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; -pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; -pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; -pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; -pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; -pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; -pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; -pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; -pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; -pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; -pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; -pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -679,11 +1628,6 @@ IFLA_GRO_IPV4_MAX_SIZE = 64, __IFLA_MAX = 65, } -pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; -pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; -pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; -pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; -pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -693,9 +1637,6 @@ IFLA_PROTO_DOWN_REASON_VALUE = 2, __IFLA_PROTO_DOWN_REASON_CNT = 3, } -pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; -pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; -pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -704,17 +1645,6 @@ IFLA_INET_CONF = 1, __IFLA_INET_MAX = 2, } -pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; -pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; -pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; -pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; -pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; -pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; -pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; -pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; -pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; -pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; -pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -740,55 +1670,6 @@ IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, IN6_ADDR_GEN_MODE_RANDOM = 3, } -pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; -pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; -pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; -pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; -pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; -pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; -pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; -pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; -pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; -pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; -pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; -pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; -pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; -pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; -pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; -pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; -pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; -pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; -pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; -pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; -pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; -pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; -pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; -pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; -pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; -pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; -pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; -pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; -pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; -pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; -pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; -pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; -pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; -pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; -pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; -pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; -pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; -pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; -pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; -pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; -pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; -pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; -pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; -pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; -pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; -pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; -pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; -pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; -pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -825,83 +1706,31 @@ IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29, IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30, IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, -IFLA_BR_MCAST_QUERIER_INTVL = 32, -IFLA_BR_MCAST_QUERY_INTVL = 33, -IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, -IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, -IFLA_BR_NF_CALL_IPTABLES = 36, -IFLA_BR_NF_CALL_IP6TABLES = 37, -IFLA_BR_NF_CALL_ARPTABLES = 38, -IFLA_BR_VLAN_DEFAULT_PVID = 39, -IFLA_BR_PAD = 40, -IFLA_BR_VLAN_STATS_ENABLED = 41, -IFLA_BR_MCAST_STATS_ENABLED = 42, -IFLA_BR_MCAST_IGMP_VERSION = 43, -IFLA_BR_MCAST_MLD_VERSION = 44, -IFLA_BR_VLAN_STATS_PER_PORT = 45, -IFLA_BR_MULTI_BOOLOPT = 46, -IFLA_BR_MCAST_QUERIER_STATE = 47, -__IFLA_BR_MAX = 48, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_bridge_id { -pub prio: [__u8; 2usize], -pub addr: [__u8; 6usize], -} -pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; -pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -BRIDGE_MODE_UNSPEC = 0, -BRIDGE_MODE_HAIRPIN = 1, -} -pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; -pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; -pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; -pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; -pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; -pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; -pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; -pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; -pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; -pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; -pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; -pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; -pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; -pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; -pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; -pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; -pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; -pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; -pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; -pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; -pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; -pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; -pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; -pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; -pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; -pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; -pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; -pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; -pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; -pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; -pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; -pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; -pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; -pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; -pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; -pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; -pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; -pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; -pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; -pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; -pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; -pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +IFLA_BR_MCAST_QUERIER_INTVL = 32, +IFLA_BR_MCAST_QUERY_INTVL = 33, +IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, +IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, +IFLA_BR_NF_CALL_IPTABLES = 36, +IFLA_BR_NF_CALL_IP6TABLES = 37, +IFLA_BR_NF_CALL_ARPTABLES = 38, +IFLA_BR_VLAN_DEFAULT_PVID = 39, +IFLA_BR_PAD = 40, +IFLA_BR_VLAN_STATS_ENABLED = 41, +IFLA_BR_MCAST_STATS_ENABLED = 42, +IFLA_BR_MCAST_IGMP_VERSION = 43, +IFLA_BR_MCAST_MLD_VERSION = 44, +IFLA_BR_VLAN_STATS_PER_PORT = 45, +IFLA_BR_MULTI_BOOLOPT = 46, +IFLA_BR_MCAST_QUERIER_STATE = 47, +__IFLA_BR_MAX = 48, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +BRIDGE_MODE_UNSPEC = 0, +BRIDGE_MODE_HAIRPIN = 1, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -951,21 +1780,6 @@ IFLA_BRPORT_MCAST_MAX_GROUPS = 42, __IFLA_BRPORT_MAX = 43, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_cacheinfo { -pub max_reasm_len: __u32, -pub tstamp: __u32, -pub reachable_time: __u32, -pub retrans_time: __u32, -} -pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; -pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; -pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; -pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; -pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; -pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; -pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -978,13 +1792,6 @@ IFLA_INFO_SLAVE_DATA = 5, __IFLA_INFO_MAX = 6, } -pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; -pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; -pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; -pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; -pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; -pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; -pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -997,15 +1804,6 @@ IFLA_VLAN_PROTOCOL = 5, __IFLA_VLAN_MAX = 6, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; -pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; -pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1014,22 +1812,6 @@ IFLA_VLAN_QOS_MAPPING = 1, __IFLA_VLAN_QOS_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_qos_mapping { -pub from: __u32, -pub to: __u32, -} -pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; -pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; -pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; -pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; -pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; -pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; -pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; -pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; -pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; -pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1064,9 +1846,6 @@ MACVLAN_MACADDR_FLUSH = 2, MACVLAN_MACADDR_SET = 3, } -pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; -pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; -pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1075,9 +1854,6 @@ IFLA_VRF_TABLE = 1, __IFLA_VRF_MAX = 2, } -pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; -pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; -pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1086,23 +1862,6 @@ IFLA_VRF_PORT_TABLE = 1, __IFLA_VRF_PORT_MAX = 2, } -pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; -pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; -pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; -pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; -pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; -pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; -pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; -pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; -pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; -pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; -pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; -pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; -pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; -pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; -pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; -pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; -pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1125,11 +1884,6 @@ IFLA_MACSEC_OFFLOAD = 15, __IFLA_MACSEC_MAX = 16, } -pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; -pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; -pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; -pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; -pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1140,9 +1894,6 @@ IFLA_XFRM_COLLECT_METADATA = 3, __IFLA_XFRM_MAX = 4, } -impl macsec_validation_type { -pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1152,9 +1903,6 @@ MACSEC_VALIDATE_STRICT = 2, __MACSEC_VALIDATE_END = 3, } -impl macsec_offload { -pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1164,10 +1912,6 @@ MACSEC_OFFLOAD_MAC = 2, __MACSEC_OFFLOAD_END = 3, } -pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; -pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; -pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; -pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1186,25 +1930,6 @@ IPVLAN_MODE_L3S = 2, IPVLAN_MODE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tunnel_msg { -pub family: __u8, -pub flags: __u8, -pub reserved2: __u16, -pub ifindex: __u32, -} -pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; -pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; -pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; -pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; -pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; -pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; -pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; -pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; -pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1221,13 +1946,6 @@ VNIFILTER_ENTRY_STATS_PAD = 9, __VNIFILTER_ENTRY_STATS_MAX = 10, } -pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; -pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; -pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; -pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; -pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; -pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1240,9 +1958,6 @@ VXLAN_VNIFILTER_ENTRY_STATS = 5, __VXLAN_VNIFILTER_ENTRY_MAX = 6, } -pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; -pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1251,38 +1966,6 @@ VXLAN_VNIFILTER_ENTRY = 1, __VXLAN_VNIFILTER_MAX = 2, } -pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; -pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; -pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; -pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; -pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; -pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; -pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; -pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; -pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; -pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; -pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; -pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; -pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; -pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; -pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; -pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; -pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; -pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; -pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; -pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; -pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; -pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; -pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; -pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; -pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; -pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; -pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; -pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; -pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; -pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1320,15 +2003,6 @@ IFLA_VXLAN_VNIFILTER = 30, __IFLA_VXLAN_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vxlan_port_range { -pub low: __be16, -pub high: __be16, -} -impl ifla_vxlan_df { -pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1338,22 +2012,6 @@ VXLAN_DF_INHERIT = 2, __VXLAN_DF_END = 3, } -pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; -pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; -pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; -pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; -pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; -pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; -pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; -pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; -pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; -pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; -pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; -pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; -pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; -pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1375,9 +2033,6 @@ IFLA_GENEVE_INNER_PROTO_INHERIT = 14, __IFLA_GENEVE_MAX = 15, } -impl ifla_geneve_df { -pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1387,12 +2042,6 @@ GENEVE_DF_INHERIT = 2, __GENEVE_DF_END = 3, } -pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; -pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; -pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; -pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; -pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; -pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1404,9 +2053,6 @@ IFLA_BAREUDP_MULTIPROTO_MODE = 4, __IFLA_BAREUDP_MAX = 5, } -pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; -pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; -pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1422,60 +2068,19 @@ GTP_ROLE_GGSN = 0, GTP_ROLE_SGSN = 1, } -pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; -pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; -pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; -pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; -pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; -pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; -pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; -pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub enum _bindgen_ty_25 { IFLA_GTP_UNSPEC = 0, IFLA_GTP_FD0 = 1, -IFLA_GTP_FD1 = 2, -IFLA_GTP_PDP_HASHSIZE = 3, -IFLA_GTP_ROLE = 4, -IFLA_GTP_CREATE_SOCKETS = 5, -IFLA_GTP_RESTART_COUNT = 6, -__IFLA_GTP_MAX = 7, -} -pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; -pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; -pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; -pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; -pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; -pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; -pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; -pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; -pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; -pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; -pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; -pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; -pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; -pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; -pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; -pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; -pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; -pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; -pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; -pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; -pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; -pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; -pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; -pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; -pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; -pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; -pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; -pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; -pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; -pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; -pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; -pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; -pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +IFLA_GTP_FD1 = 2, +IFLA_GTP_PDP_HASHSIZE = 3, +IFLA_GTP_ROLE = 4, +IFLA_GTP_CREATE_SOCKETS = 5, +IFLA_GTP_RESTART_COUNT = 6, +__IFLA_GTP_MAX = 7, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1514,13 +2119,6 @@ IFLA_BOND_NS_IP6_TARGET = 31, __IFLA_BOND_MAX = 32, } -pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; -pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; -pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; -pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; -pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1533,17 +2131,6 @@ IFLA_BOND_AD_INFO_PARTNER_MAC = 5, __IFLA_BOND_AD_INFO_MAX = 6, } -pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; -pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; -pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; -pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; -pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; -pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; -pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; -pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; -pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1560,9 +2147,6 @@ IFLA_BOND_SLAVE_PRIO = 9, __IFLA_BOND_SLAVE_MAX = 10, } -pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; -pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; -pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1571,21 +2155,6 @@ IFLA_VF_INFO = 1, __IFLA_VF_INFO_MAX = 2, } -pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; -pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; -pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; -pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; -pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; -pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; -pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; -pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; -pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; -pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; -pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; -pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; -pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; -pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; -pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1606,27 +2175,6 @@ IFLA_VF_BROADCAST = 13, __IFLA_VF_MAX = 14, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_mac { -pub vf: __u32, -pub mac: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_broadcast { -pub broadcast: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -} -pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; -pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; -pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1635,43 +2183,6 @@ IFLA_VF_VLAN_INFO = 1, __IFLA_VF_VLAN_INFO_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan_info { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -pub vlan_proto: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_tx_rate { -pub vf: __u32, -pub rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rate { -pub vf: __u32, -pub min_tx_rate: __u32, -pub max_tx_rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_spoofchk { -pub vf: __u32, -pub setting: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_guid { -pub vf: __u32, -pub guid: __u64, -} -pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; -pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; -pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; -pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1681,28 +2192,6 @@ IFLA_VF_LINK_STATE_DISABLE = 2, __IFLA_VF_LINK_STATE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_link_state { -pub vf: __u32, -pub link_state: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rss_query_en { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; -pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; -pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; -pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; -pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; -pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; -pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; -pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; -pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; -pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1718,15 +2207,6 @@ IFLA_VF_STATS_TX_DROPPED = 8, __IFLA_VF_STATS_MAX = 9, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_trust { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; -pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; -pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1735,15 +2215,6 @@ IFLA_VF_PORT = 1, __IFLA_VF_PORT_MAX = 2, } -pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; -pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; -pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; -pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; -pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; -pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; -pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; -pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; -pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1758,10 +2229,6 @@ IFLA_PORT_RESPONSE = 7, __IFLA_PORT_MAX = 8, } -pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; -pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; -pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; -pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1771,19 +2238,6 @@ PORT_REQUEST_ASSOCIATE = 2, PORT_REQUEST_DISASSOCIATE = 3, } -pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; -pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; -pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; -pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; -pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; -pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; -pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; -pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; -pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; -pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; -pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1802,19 +2256,6 @@ PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, PORT_PROFILE_RESPONSE_ERROR = 261, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_port_vsi { -pub vsi_mgr_id: __u8, -pub vsi_type_id: [__u8; 3usize], -pub vsi_type_version: __u8, -pub pad: [__u8; 3usize], -} -pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; -pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; -pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; -pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; -pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1825,8 +2266,6 @@ IFLA_IPOIB_UMCAST = 3, __IFLA_IPOIB_MAX = 4, } -pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; -pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1834,9 +2273,6 @@ IPOIB_MODE_DATAGRAM = 0, IPOIB_MODE_CONNECTED = 1, } -pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; -pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; -pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1845,15 +2281,6 @@ HSR_PROTOCOL_PRP = 1, HSR_PROTOCOL_MAX = 2, } -pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; -pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; -pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; -pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; -pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; -pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; -pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; -pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; -pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1868,22 +2295,6 @@ IFLA_HSR_PROTOCOL = 7, __IFLA_HSR_MAX = 8, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_stats_msg { -pub family: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub ifindex: __u32, -pub filter_mask: __u32, -} -pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; -pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; -pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; -pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; -pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; -pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; -pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1896,10 +2307,6 @@ IFLA_STATS_AF_SPEC = 5, __IFLA_STATS_MAX = 6, } -pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; -pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; -pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1909,10 +2316,6 @@ IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, __IFLA_STATS_GETSET_MAX = 3, } -pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; -pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; -pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; -pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1922,11 +2325,6 @@ LINK_XSTATS_TYPE_BOND = 2, __LINK_XSTATS_TYPE_MAX = 3, } -pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; -pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1937,10 +2335,6 @@ IFLA_OFFLOAD_XSTATS_L3_STATS = 3, __IFLA_OFFLOAD_XSTATS_MAX = 4, } -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; -pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1950,11 +2344,6 @@ IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, } -pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; -pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; -pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; -pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; -pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1965,16 +2354,6 @@ XDP_ATTACHED_HW = 3, XDP_ATTACHED_MULTI = 4, } -pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; -pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; -pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; -pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; -pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; -pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; -pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; -pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; -pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; -pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1990,13 +2369,6 @@ IFLA_XDP_EXPECTED_FD = 8, __IFLA_XDP_MAX = 9, } -pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; -pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; -pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; -pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; -pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; -pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; -pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2009,17 +2381,6 @@ IFLA_EVENT_IGMP_RESEND = 5, IFLA_EVENT_BONDING_OPTIONS = 6, } -pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; -pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; -pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; -pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; -pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; -pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; -pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; -pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; -pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; -pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; -pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2035,11 +2396,7 @@ IFLA_TUN_NUM_QUEUES = 8, IFLA_TUN_NUM_DISABLED_QUEUES = 9, __IFLA_TUN_MAX = 10, -} -pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; -pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; -pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; -pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2049,15 +2406,6 @@ IFLA_RMNET_FLAGS = 2, __IFLA_RMNET_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_rmnet_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; -pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; -pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2066,9 +2414,6 @@ IFLA_MCTP_NET = 1, __IFLA_MCTP_MAX = 2, } -pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; -pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; -pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2077,28 +2422,6 @@ IFLA_DSA_MASTER = 1, __IFLA_DSA_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifaddrmsg { -pub ifa_family: __u8, -pub ifa_prefixlen: __u8, -pub ifa_flags: __u8, -pub ifa_scope: __u8, -pub ifa_index: __u32, -} -pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; -pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; -pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; -pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; -pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; -pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; -pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; -pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; -pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; -pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; -pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; -pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; -pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2117,44 +2440,6 @@ IFA_PROTO = 11, __IFA_MAX = 12, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifa_cacheinfo { -pub ifa_prefered: __u32, -pub ifa_valid: __u32, -pub cstamp: __u32, -pub tstamp: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndmsg { -pub ndm_family: __u8, -pub ndm_pad1: __u8, -pub ndm_pad2: __u16, -pub ndm_ifindex: __s32, -pub ndm_state: __u16, -pub ndm_flags: __u8, -pub ndm_type: __u8, -} -pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; -pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; -pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; -pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; -pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; -pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; -pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; -pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; -pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; -pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; -pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; -pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; -pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; -pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; -pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; -pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; -pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; -pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; -pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2179,50 +2464,6 @@ NDA_NDM_FLAGS_MASK = 17, __NDA_MAX = 18, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nda_cacheinfo { -pub ndm_confirmed: __u32, -pub ndm_used: __u32, -pub ndm_updated: __u32, -pub ndm_refcnt: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_stats { -pub ndts_allocs: __u64, -pub ndts_destroys: __u64, -pub ndts_hash_grows: __u64, -pub ndts_res_failed: __u64, -pub ndts_lookups: __u64, -pub ndts_hits: __u64, -pub ndts_rcv_probes_mcast: __u64, -pub ndts_rcv_probes_ucast: __u64, -pub ndts_periodic_gc_runs: __u64, -pub ndts_forced_gc_runs: __u64, -pub ndts_table_fulls: __u64, -} -pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; -pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; -pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; -pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; -pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; -pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; -pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; -pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; -pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; -pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; -pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; -pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; -pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; -pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; -pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; -pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; -pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; -pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; -pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; -pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; -pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2249,37 +2490,6 @@ NDTPA_INTERVAL_PROBE_TIME_MS = 19, __NDTPA_MAX = 20, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndtmsg { -pub ndtm_family: __u8, -pub ndtm_pad1: __u8, -pub ndtm_pad2: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_config { -pub ndtc_key_len: __u16, -pub ndtc_entry_size: __u16, -pub ndtc_entries: __u32, -pub ndtc_last_flush: __u32, -pub ndtc_last_rand: __u32, -pub ndtc_hash_rnd: __u32, -pub ndtc_hash_mask: __u32, -pub ndtc_hash_chain_gc: __u32, -pub ndtc_proxy_qlen: __u32, -} -pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; -pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; -pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; -pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; -pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; -pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; -pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; -pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; -pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; -pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; -pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2296,8 +2506,6 @@ NDTA_PAD = 9, __NDTA_MAX = 10, } -pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; -pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2305,10 +2513,6 @@ FDB_NOTIFY_BIT = 1, FDB_NOTIFY_INACTIVE_BIT = 2, } -pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; -pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; -pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; -pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2318,79 +2522,6 @@ NFEA_DONT_REFRESH = 2, __NFEA_MAX = 3, } -pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; -pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; -pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; -pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; -pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; -pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; -pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; -pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; -pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; -pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; -pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; -pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; -pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; -pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; -pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; -pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; -pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; -pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; -pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; -pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; -pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; -pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; -pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; -pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; -pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; -pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; -pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; -pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; -pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; -pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; -pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; -pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; -pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; -pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; -pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; -pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; -pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; -pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; -pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; -pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; -pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; -pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; -pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; -pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; -pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; -pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; -pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; -pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; -pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; -pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; -pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; -pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; -pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; -pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; -pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; -pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; -pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; -pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; -pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; -pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; -pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; -pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; -pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; -pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; -pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; -pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; -pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; -pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; -pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; -pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; -pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2457,49 +2588,17 @@ RTM_NEWLINKPROP = 108, RTM_DELLINKPROP = 109, RTM_GETLINKPROP = 110, -RTM_NEWVLAN = 112, -RTM_DELVLAN = 113, -RTM_GETVLAN = 114, -RTM_NEWNEXTHOPBUCKET = 116, -RTM_DELNEXTHOPBUCKET = 117, -RTM_GETNEXTHOPBUCKET = 118, -RTM_NEWTUNNEL = 120, -RTM_DELTUNNEL = 121, -RTM_GETTUNNEL = 122, -__RTM_MAX = 123, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtattr { -pub rta_len: crate::ctypes::c_ushort, -pub rta_type: crate::ctypes::c_ushort, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtmsg { -pub rtm_family: crate::ctypes::c_uchar, -pub rtm_dst_len: crate::ctypes::c_uchar, -pub rtm_src_len: crate::ctypes::c_uchar, -pub rtm_tos: crate::ctypes::c_uchar, -pub rtm_table: crate::ctypes::c_uchar, -pub rtm_protocol: crate::ctypes::c_uchar, -pub rtm_scope: crate::ctypes::c_uchar, -pub rtm_type: crate::ctypes::c_uchar, -pub rtm_flags: crate::ctypes::c_uint, +RTM_NEWVLAN = 112, +RTM_DELVLAN = 113, +RTM_GETVLAN = 114, +RTM_NEWNEXTHOPBUCKET = 116, +RTM_DELNEXTHOPBUCKET = 117, +RTM_GETNEXTHOPBUCKET = 118, +RTM_NEWTUNNEL = 120, +RTM_DELTUNNEL = 121, +RTM_GETTUNNEL = 122, +__RTM_MAX = 123, } -pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; -pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; -pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; -pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; -pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; -pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; -pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; -pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; -pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; -pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; -pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; -pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; -pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2576,51 +2675,6 @@ RTA_NH_ID = 30, __RTA_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnexthop { -pub rtnh_len: crate::ctypes::c_ushort, -pub rtnh_flags: crate::ctypes::c_uchar, -pub rtnh_hops: crate::ctypes::c_uchar, -pub rtnh_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug)] -pub struct rtvia { -pub rtvia_family: __kernel_sa_family_t, -pub rtvia_addr: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_cacheinfo { -pub rta_clntref: __u32, -pub rta_lastuse: __u32, -pub rta_expires: __s32, -pub rta_error: __u32, -pub rta_used: __u32, -pub rta_id: __u32, -pub rta_ts: __u32, -pub rta_tsage: __u32, -} -pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; -pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; -pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; -pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; -pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; -pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; -pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; -pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; -pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; -pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; -pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; -pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; -pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; -pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; -pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; -pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; -pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; -pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; -pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2645,72 +2699,6 @@ RTAX_FASTOPEN_NO_COOKIE = 17, __RTAX_MAX = 18, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rta_session { -pub proto: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub u: rta_session__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union rta_session__bindgen_ty_1 { -pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, -pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, -pub spi: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { -pub sport: __u16, -pub dport: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { -pub type_: __u8, -pub code: __u8, -pub ident: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_mfc_stats { -pub mfcs_packets: __u64, -pub mfcs_bytes: __u64, -pub mfcs_wrong_if: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtgenmsg { -pub rtgen_family: crate::ctypes::c_uchar, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifinfomsg { -pub ifi_family: crate::ctypes::c_uchar, -pub __ifi_pad: crate::ctypes::c_uchar, -pub ifi_type: crate::ctypes::c_ushort, -pub ifi_index: crate::ctypes::c_int, -pub ifi_flags: crate::ctypes::c_uint, -pub ifi_change: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefixmsg { -pub prefix_family: crate::ctypes::c_uchar, -pub prefix_pad1: crate::ctypes::c_uchar, -pub prefix_pad2: crate::ctypes::c_ushort, -pub prefix_ifindex: crate::ctypes::c_int, -pub prefix_type: crate::ctypes::c_uchar, -pub prefix_len: crate::ctypes::c_uchar, -pub prefix_flags: crate::ctypes::c_uchar, -pub prefix_pad3: crate::ctypes::c_uchar, -} -pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; -pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; -pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; -pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2720,41 +2708,6 @@ PREFIX_CACHEINFO = 2, __PREFIX_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefix_cacheinfo { -pub preferred_time: __u32, -pub valid_time: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcmsg { -pub tcm_family: crate::ctypes::c_uchar, -pub tcm__pad1: crate::ctypes::c_uchar, -pub tcm__pad2: crate::ctypes::c_ushort, -pub tcm_ifindex: crate::ctypes::c_int, -pub tcm_handle: __u32, -pub tcm_parent: __u32, -pub tcm_info: __u32, -} -pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; -pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; -pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; -pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; -pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; -pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; -pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; -pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; -pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; -pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; -pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; -pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; -pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; -pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; -pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; -pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; -pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; -pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2778,21 +2731,6 @@ TCA_EXT_WARN_MSG = 16, __TCA_MAX = 17, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nduseroptmsg { -pub nduseropt_family: crate::ctypes::c_uchar, -pub nduseropt_pad1: crate::ctypes::c_uchar, -pub nduseropt_opts_len: crate::ctypes::c_ushort, -pub nduseropt_ifindex: crate::ctypes::c_int, -pub nduseropt_icmp_type: __u8, -pub nduseropt_icmp_code: __u8, -pub nduseropt_pad2: crate::ctypes::c_ushort, -pub nduseropt_pad3: crate::ctypes::c_uint, -} -pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; -pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; -pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2844,20 +2782,6 @@ RTNLGRP_STATS = 36, __RTNLGRP_MAX = 37, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcamsg { -pub tca_family: crate::ctypes::c_uchar, -pub tca__pad1: crate::ctypes::c_uchar, -pub tca__pad2: crate::ctypes::c_ushort, -} -pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; -pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; -pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; -pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; -pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; -pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; -pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2870,3 +2794,61 @@ TCA_ROOT_EXT_WARN_MSG = 5, __TCA_ROOT_MAX = 6, } +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union rta_session__bindgen_ty_1 { +pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, +pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, +pub spi: __u32, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl nlmsgerr_attrs { +pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +} +impl netlink_policy_type_attr { +pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; +} +impl macsec_validation_type { +pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; +} +impl macsec_offload { +pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; +} +impl ifla_vxlan_df { +pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; +} +impl ifla_geneve_df { +pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/net.rs temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/net.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/net.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/net.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1836 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type socklen_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_addr { +pub s_addr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq { +pub imr_multiaddr: in_addr, +pub imr_interface: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreqn { +pub imr_multiaddr: in_addr, +pub imr_address: in_addr, +pub imr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq_source { +pub imr_multiaddr: __be32, +pub imr_interface: __be32, +pub imr_sourceaddr: __be32, +} +#[repr(C)] +pub struct ip_msfilter { +pub imsf_multiaddr: __be32, +pub imsf_interface: __be32, +pub imsf_fmode: __u32, +pub imsf_numsrc: __u32, +pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, +} +#[repr(C)] +pub struct ip_msfilter__bindgen_ty_1 { +pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, +pub __bindgen_anon_1: __BindgenUnionField, +pub bindgen_union_field: u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { +pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub imsf_slist_flex: __IncompleteArrayField<__be32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_req { +pub gr_interface: __u32, +pub gr_group: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_source_req { +pub gsr_interface: __u32, +pub gsr_group: __kernel_sockaddr_storage, +pub gsr_source: __kernel_sockaddr_storage, +} +#[repr(C)] +pub struct group_filter { +pub __bindgen_anon_1: group_filter__bindgen_ty_1, +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u32; 67usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { +pub gf_interface_aux: __u32, +pub gf_group_aux: __kernel_sockaddr_storage, +pub gf_fmode_aux: __u32, +pub gf_numsrc_aux: __u32, +pub gf_slist: [__kernel_sockaddr_storage; 1usize], +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { +pub gf_interface: __u32, +pub gf_group: __kernel_sockaddr_storage, +pub gf_fmode: __u32, +pub gf_numsrc: __u32, +pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_pktinfo { +pub ipi_ifindex: crate::ctypes::c_int, +pub ipi_spec_dst: in_addr, +pub ipi_addr: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_in { +pub sin_family: __kernel_sa_family_t, +pub sin_port: __be16, +pub sin_addr: in_addr, +pub __pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct iphdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub tos: __u8, +pub tot_len: __be16, +pub id: __be16, +pub frag_off: __be16, +pub ttl: __u8, +pub protocol: __u8, +pub check: __sum16, +pub __bindgen_anon_1: iphdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_auth_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub reserved: __be16, +pub spi: __be32, +pub seq_no: __be32, +pub auth_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_esp_hdr { +pub spi: __be32, +pub seq_no: __be32, +pub enc_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_comp_hdr { +pub nexthdr: __u8, +pub flags: __u8, +pub cpi: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_beet_phdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub padlen: __u8, +pub reserved: __u8, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_addr { +pub in6_u: in6_addr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr_in6 { +pub sin6_family: crate::ctypes::c_ushort, +pub sin6_port: __be16, +pub sin6_flowinfo: __be32, +pub sin6_addr: in6_addr, +pub sin6_scope_id: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6_mreq { +pub ipv6mr_multiaddr: in6_addr, +pub ipv6mr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_flowlabel_req { +pub flr_dst: in6_addr, +pub flr_label: __be32, +pub flr_action: __u8, +pub flr_share: __u8, +pub flr_flags: __u16, +pub flr_expires: __u16, +pub flr_linger: __u16, +pub __flr_pad: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_pktinfo { +pub ipi6_addr: in6_addr, +pub ipi6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ip6_mtuinfo { +pub ip6m_addr: sockaddr_in6, +pub ip6m_mtu: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_ifreq { +pub ifr6_addr: in6_addr, +pub ifr6_prefixlen: __u32, +pub ifr6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_rt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub type_: __u8, +pub segments_left: __u8, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_opt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +} +#[repr(C)] +pub struct rt0_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rt2_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: in6_addr, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct ipv6_destopt_hao { +pub type_: __u8, +pub length: __u8, +pub addr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub flow_lbl: [__u8; 3usize], +pub payload_len: __be16, +pub nexthdr: __u8, +pub hop_limit: __u8, +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcphdr { +pub source: __be16, +pub dest: __be16, +pub seq: __be32, +pub ack_seq: __be32, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub window: __be16, +pub check: __sum16, +pub urg_ptr: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_opt { +pub opt_code: __u32, +pub opt_val: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_window { +pub snd_wl1: __u32, +pub snd_wnd: __u32, +pub max_window: __u32, +pub rcv_wnd: __u32, +pub rcv_wup: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_info { +pub tcpi_state: __u8, +pub tcpi_ca_state: __u8, +pub tcpi_retransmits: __u8, +pub tcpi_probes: __u8, +pub tcpi_backoff: __u8, +pub tcpi_options: __u8, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub tcpi_rto: __u32, +pub tcpi_ato: __u32, +pub tcpi_snd_mss: __u32, +pub tcpi_rcv_mss: __u32, +pub tcpi_unacked: __u32, +pub tcpi_sacked: __u32, +pub tcpi_lost: __u32, +pub tcpi_retrans: __u32, +pub tcpi_fackets: __u32, +pub tcpi_last_data_sent: __u32, +pub tcpi_last_ack_sent: __u32, +pub tcpi_last_data_recv: __u32, +pub tcpi_last_ack_recv: __u32, +pub tcpi_pmtu: __u32, +pub tcpi_rcv_ssthresh: __u32, +pub tcpi_rtt: __u32, +pub tcpi_rttvar: __u32, +pub tcpi_snd_ssthresh: __u32, +pub tcpi_snd_cwnd: __u32, +pub tcpi_advmss: __u32, +pub tcpi_reordering: __u32, +pub tcpi_rcv_rtt: __u32, +pub tcpi_rcv_space: __u32, +pub tcpi_total_retrans: __u32, +pub tcpi_pacing_rate: __u64, +pub tcpi_max_pacing_rate: __u64, +pub tcpi_bytes_acked: __u64, +pub tcpi_bytes_received: __u64, +pub tcpi_segs_out: __u32, +pub tcpi_segs_in: __u32, +pub tcpi_notsent_bytes: __u32, +pub tcpi_min_rtt: __u32, +pub tcpi_data_segs_in: __u32, +pub tcpi_data_segs_out: __u32, +pub tcpi_delivery_rate: __u64, +pub tcpi_busy_time: __u64, +pub tcpi_rwnd_limited: __u64, +pub tcpi_sndbuf_limited: __u64, +pub tcpi_delivered: __u32, +pub tcpi_delivered_ce: __u32, +pub tcpi_bytes_sent: __u64, +pub tcpi_bytes_retrans: __u64, +pub tcpi_dsack_dups: __u32, +pub tcpi_reord_seen: __u32, +pub tcpi_rcv_ooopack: __u32, +pub tcpi_snd_wnd: __u32, +pub tcpi_rcv_wnd: __u32, +pub tcpi_rehash: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct tcp_md5sig { +pub tcpm_addr: __kernel_sockaddr_storage, +pub tcpm_flags: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_ifindex: crate::ctypes::c_int, +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_diag_md5sig { +pub tcpm_family: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_addr: [__be32; 4usize], +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_zerocopy_receive { +pub address: __u64, +pub length: __u32, +pub recv_skip_hint: __u32, +pub inq: __u32, +pub err: __s32, +pub copybuf_address: __u64, +pub copybuf_len: __s32, +pub flags: __u32, +pub msg_control: __u64, +pub msg_controllen: __u64, +pub msg_flags: __u32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_un { +pub sun_family: __kernel_sa_family_t, +pub sun_path: [crate::ctypes::c_char; 108usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr { +pub __storage: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct linger { +pub l_onoff: crate::ctypes::c_int, +pub l_linger: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct msghdr { +pub msg_name: *mut crate::ctypes::c_void, +pub msg_namelen: crate::ctypes::c_int, +pub msg_iov: *mut iovec, +pub msg_iovlen: usize, +pub msg_control: *mut crate::ctypes::c_void, +pub msg_controllen: usize, +pub msg_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct cmsghdr { +pub cmsg_len: usize, +pub cmsg_level: crate::ctypes::c_int, +pub cmsg_type: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ucred { +pub pid: __u32, +pub uid: __u32, +pub gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mmsghdr { +pub msg_hdr: msghdr, +pub msg_len: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub _address: u8, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const IP_TOS: u32 = 1; +pub const IP_TTL: u32 = 2; +pub const IP_HDRINCL: u32 = 3; +pub const IP_OPTIONS: u32 = 4; +pub const IP_ROUTER_ALERT: u32 = 5; +pub const IP_RECVOPTS: u32 = 6; +pub const IP_RETOPTS: u32 = 7; +pub const IP_PKTINFO: u32 = 8; +pub const IP_PKTOPTIONS: u32 = 9; +pub const IP_MTU_DISCOVER: u32 = 10; +pub const IP_RECVERR: u32 = 11; +pub const IP_RECVTTL: u32 = 12; +pub const IP_RECVTOS: u32 = 13; +pub const IP_MTU: u32 = 14; +pub const IP_FREEBIND: u32 = 15; +pub const IP_IPSEC_POLICY: u32 = 16; +pub const IP_XFRM_POLICY: u32 = 17; +pub const IP_PASSSEC: u32 = 18; +pub const IP_TRANSPARENT: u32 = 19; +pub const IP_RECVRETOPTS: u32 = 7; +pub const IP_ORIGDSTADDR: u32 = 20; +pub const IP_RECVORIGDSTADDR: u32 = 20; +pub const IP_MINTTL: u32 = 21; +pub const IP_NODEFRAG: u32 = 22; +pub const IP_CHECKSUM: u32 = 23; +pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; +pub const IP_RECVFRAGSIZE: u32 = 25; +pub const IP_RECVERR_RFC4884: u32 = 26; +pub const IP_PMTUDISC_DONT: u32 = 0; +pub const IP_PMTUDISC_WANT: u32 = 1; +pub const IP_PMTUDISC_DO: u32 = 2; +pub const IP_PMTUDISC_PROBE: u32 = 3; +pub const IP_PMTUDISC_INTERFACE: u32 = 4; +pub const IP_PMTUDISC_OMIT: u32 = 5; +pub const IP_MULTICAST_IF: u32 = 32; +pub const IP_MULTICAST_TTL: u32 = 33; +pub const IP_MULTICAST_LOOP: u32 = 34; +pub const IP_ADD_MEMBERSHIP: u32 = 35; +pub const IP_DROP_MEMBERSHIP: u32 = 36; +pub const IP_UNBLOCK_SOURCE: u32 = 37; +pub const IP_BLOCK_SOURCE: u32 = 38; +pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; +pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; +pub const IP_MSFILTER: u32 = 41; +pub const MCAST_JOIN_GROUP: u32 = 42; +pub const MCAST_BLOCK_SOURCE: u32 = 43; +pub const MCAST_UNBLOCK_SOURCE: u32 = 44; +pub const MCAST_LEAVE_GROUP: u32 = 45; +pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; +pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; +pub const MCAST_MSFILTER: u32 = 48; +pub const IP_MULTICAST_ALL: u32 = 49; +pub const IP_UNICAST_IF: u32 = 50; +pub const IP_LOCAL_PORT_RANGE: u32 = 51; +pub const MCAST_EXCLUDE: u32 = 0; +pub const MCAST_INCLUDE: u32 = 1; +pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; +pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; +pub const __SOCK_SIZE__: u32 = 16; +pub const IN_CLASSA_NET: u32 = 4278190080; +pub const IN_CLASSA_NSHIFT: u32 = 24; +pub const IN_CLASSA_HOST: u32 = 16777215; +pub const IN_CLASSA_MAX: u32 = 128; +pub const IN_CLASSB_NET: u32 = 4294901760; +pub const IN_CLASSB_NSHIFT: u32 = 16; +pub const IN_CLASSB_HOST: u32 = 65535; +pub const IN_CLASSB_MAX: u32 = 65536; +pub const IN_CLASSC_NET: u32 = 4294967040; +pub const IN_CLASSC_NSHIFT: u32 = 8; +pub const IN_CLASSC_HOST: u32 = 255; +pub const IN_MULTICAST_NET: u32 = 3758096384; +pub const IN_CLASSE_NET: u32 = 4294967295; +pub const IN_CLASSE_NSHIFT: u32 = 0; +pub const IN_LOOPBACKNET: u32 = 127; +pub const INADDR_LOOPBACK: u32 = 2130706433; +pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; +pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; +pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; +pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; +pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; +pub const __LITTLE_ENDIAN: u32 = 1234; +pub const IPTOS_TOS_MASK: u32 = 30; +pub const IPTOS_LOWDELAY: u32 = 16; +pub const IPTOS_THROUGHPUT: u32 = 8; +pub const IPTOS_RELIABILITY: u32 = 4; +pub const IPTOS_MINCOST: u32 = 2; +pub const IPTOS_PREC_MASK: u32 = 224; +pub const IPTOS_PREC_NETCONTROL: u32 = 224; +pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; +pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; +pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; +pub const IPTOS_PREC_FLASH: u32 = 96; +pub const IPTOS_PREC_IMMEDIATE: u32 = 64; +pub const IPTOS_PREC_PRIORITY: u32 = 32; +pub const IPTOS_PREC_ROUTINE: u32 = 0; +pub const IPOPT_COPY: u32 = 128; +pub const IPOPT_CLASS_MASK: u32 = 96; +pub const IPOPT_NUMBER_MASK: u32 = 31; +pub const IPOPT_CONTROL: u32 = 0; +pub const IPOPT_RESERVED1: u32 = 32; +pub const IPOPT_MEASUREMENT: u32 = 64; +pub const IPOPT_RESERVED2: u32 = 96; +pub const IPOPT_END: u32 = 0; +pub const IPOPT_NOOP: u32 = 1; +pub const IPOPT_SEC: u32 = 130; +pub const IPOPT_LSRR: u32 = 131; +pub const IPOPT_TIMESTAMP: u32 = 68; +pub const IPOPT_CIPSO: u32 = 134; +pub const IPOPT_RR: u32 = 7; +pub const IPOPT_SID: u32 = 136; +pub const IPOPT_SSRR: u32 = 137; +pub const IPOPT_RA: u32 = 148; +pub const IPVERSION: u32 = 4; +pub const MAXTTL: u32 = 255; +pub const IPDEFTTL: u32 = 64; +pub const IPOPT_OPTVAL: u32 = 0; +pub const IPOPT_OLEN: u32 = 1; +pub const IPOPT_OFFSET: u32 = 2; +pub const IPOPT_MINOFF: u32 = 4; +pub const MAX_IPOPTLEN: u32 = 40; +pub const IPOPT_NOP: u32 = 1; +pub const IPOPT_EOL: u32 = 0; +pub const IPOPT_TS: u32 = 68; +pub const IPOPT_TS_TSONLY: u32 = 0; +pub const IPOPT_TS_TSANDADDR: u32 = 1; +pub const IPOPT_TS_PRESPEC: u32 = 3; +pub const IPV4_BEET_PHMAXLEN: u32 = 8; +pub const IPV6_FL_A_GET: u32 = 0; +pub const IPV6_FL_A_PUT: u32 = 1; +pub const IPV6_FL_A_RENEW: u32 = 2; +pub const IPV6_FL_F_CREATE: u32 = 1; +pub const IPV6_FL_F_EXCL: u32 = 2; +pub const IPV6_FL_F_REFLECT: u32 = 4; +pub const IPV6_FL_F_REMOTE: u32 = 8; +pub const IPV6_FL_S_NONE: u32 = 0; +pub const IPV6_FL_S_EXCL: u32 = 1; +pub const IPV6_FL_S_PROCESS: u32 = 2; +pub const IPV6_FL_S_USER: u32 = 3; +pub const IPV6_FL_S_ANY: u32 = 255; +pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; +pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; +pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; +pub const IPV6_PRIORITY_FILLER: u32 = 256; +pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; +pub const IPV6_PRIORITY_RESERVED1: u32 = 768; +pub const IPV6_PRIORITY_BULK: u32 = 1024; +pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; +pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; +pub const IPV6_PRIORITY_CONTROL: u32 = 1792; +pub const IPV6_PRIORITY_8: u32 = 2048; +pub const IPV6_PRIORITY_9: u32 = 2304; +pub const IPV6_PRIORITY_10: u32 = 2560; +pub const IPV6_PRIORITY_11: u32 = 2816; +pub const IPV6_PRIORITY_12: u32 = 3072; +pub const IPV6_PRIORITY_13: u32 = 3328; +pub const IPV6_PRIORITY_14: u32 = 3584; +pub const IPV6_PRIORITY_15: u32 = 3840; +pub const IPPROTO_HOPOPTS: u32 = 0; +pub const IPPROTO_ROUTING: u32 = 43; +pub const IPPROTO_FRAGMENT: u32 = 44; +pub const IPPROTO_ICMPV6: u32 = 58; +pub const IPPROTO_NONE: u32 = 59; +pub const IPPROTO_DSTOPTS: u32 = 60; +pub const IPPROTO_MH: u32 = 135; +pub const IPV6_TLV_PAD1: u32 = 0; +pub const IPV6_TLV_PADN: u32 = 1; +pub const IPV6_TLV_ROUTERALERT: u32 = 5; +pub const IPV6_TLV_CALIPSO: u32 = 7; +pub const IPV6_TLV_IOAM: u32 = 49; +pub const IPV6_TLV_JUMBO: u32 = 194; +pub const IPV6_TLV_HAO: u32 = 201; +pub const IPV6_ADDRFORM: u32 = 1; +pub const IPV6_2292PKTINFO: u32 = 2; +pub const IPV6_2292HOPOPTS: u32 = 3; +pub const IPV6_2292DSTOPTS: u32 = 4; +pub const IPV6_2292RTHDR: u32 = 5; +pub const IPV6_2292PKTOPTIONS: u32 = 6; +pub const IPV6_CHECKSUM: u32 = 7; +pub const IPV6_2292HOPLIMIT: u32 = 8; +pub const IPV6_NEXTHOP: u32 = 9; +pub const IPV6_AUTHHDR: u32 = 10; +pub const IPV6_FLOWINFO: u32 = 11; +pub const IPV6_UNICAST_HOPS: u32 = 16; +pub const IPV6_MULTICAST_IF: u32 = 17; +pub const IPV6_MULTICAST_HOPS: u32 = 18; +pub const IPV6_MULTICAST_LOOP: u32 = 19; +pub const IPV6_ADD_MEMBERSHIP: u32 = 20; +pub const IPV6_DROP_MEMBERSHIP: u32 = 21; +pub const IPV6_ROUTER_ALERT: u32 = 22; +pub const IPV6_MTU_DISCOVER: u32 = 23; +pub const IPV6_MTU: u32 = 24; +pub const IPV6_RECVERR: u32 = 25; +pub const IPV6_V6ONLY: u32 = 26; +pub const IPV6_JOIN_ANYCAST: u32 = 27; +pub const IPV6_LEAVE_ANYCAST: u32 = 28; +pub const IPV6_MULTICAST_ALL: u32 = 29; +pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; +pub const IPV6_RECVERR_RFC4884: u32 = 31; +pub const IPV6_PMTUDISC_DONT: u32 = 0; +pub const IPV6_PMTUDISC_WANT: u32 = 1; +pub const IPV6_PMTUDISC_DO: u32 = 2; +pub const IPV6_PMTUDISC_PROBE: u32 = 3; +pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; +pub const IPV6_PMTUDISC_OMIT: u32 = 5; +pub const IPV6_FLOWLABEL_MGR: u32 = 32; +pub const IPV6_FLOWINFO_SEND: u32 = 33; +pub const IPV6_IPSEC_POLICY: u32 = 34; +pub const IPV6_XFRM_POLICY: u32 = 35; +pub const IPV6_HDRINCL: u32 = 36; +pub const IPV6_RECVPKTINFO: u32 = 49; +pub const IPV6_PKTINFO: u32 = 50; +pub const IPV6_RECVHOPLIMIT: u32 = 51; +pub const IPV6_HOPLIMIT: u32 = 52; +pub const IPV6_RECVHOPOPTS: u32 = 53; +pub const IPV6_HOPOPTS: u32 = 54; +pub const IPV6_RTHDRDSTOPTS: u32 = 55; +pub const IPV6_RECVRTHDR: u32 = 56; +pub const IPV6_RTHDR: u32 = 57; +pub const IPV6_RECVDSTOPTS: u32 = 58; +pub const IPV6_DSTOPTS: u32 = 59; +pub const IPV6_RECVPATHMTU: u32 = 60; +pub const IPV6_PATHMTU: u32 = 61; +pub const IPV6_DONTFRAG: u32 = 62; +pub const IPV6_RECVTCLASS: u32 = 66; +pub const IPV6_TCLASS: u32 = 67; +pub const IPV6_AUTOFLOWLABEL: u32 = 70; +pub const IPV6_ADDR_PREFERENCES: u32 = 72; +pub const IPV6_PREFER_SRC_TMP: u32 = 1; +pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; +pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; +pub const IPV6_PREFER_SRC_COA: u32 = 4; +pub const IPV6_PREFER_SRC_HOME: u32 = 1024; +pub const IPV6_PREFER_SRC_CGA: u32 = 8; +pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; +pub const IPV6_MINHOPCOUNT: u32 = 73; +pub const IPV6_ORIGDSTADDR: u32 = 74; +pub const IPV6_RECVORIGDSTADDR: u32 = 74; +pub const IPV6_TRANSPARENT: u32 = 75; +pub const IPV6_UNICAST_IF: u32 = 76; +pub const IPV6_RECVFRAGSIZE: u32 = 77; +pub const IPV6_FREEBIND: u32 = 78; +pub const IPV6_MIN_MTU: u32 = 1280; +pub const IPV6_SRCRT_STRICT: u32 = 1; +pub const IPV6_SRCRT_TYPE_0: u32 = 0; +pub const IPV6_SRCRT_TYPE_2: u32 = 2; +pub const IPV6_SRCRT_TYPE_3: u32 = 3; +pub const IPV6_SRCRT_TYPE_4: u32 = 4; +pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; +pub const SIOCGSTAMP_OLD: u32 = 35078; +pub const SIOCGSTAMPNS_OLD: u32 = 35079; +pub const SOL_SOCKET: u32 = 1; +pub const SO_DEBUG: u32 = 1; +pub const SO_REUSEADDR: u32 = 2; +pub const SO_TYPE: u32 = 3; +pub const SO_ERROR: u32 = 4; +pub const SO_DONTROUTE: u32 = 5; +pub const SO_BROADCAST: u32 = 6; +pub const SO_SNDBUF: u32 = 7; +pub const SO_RCVBUF: u32 = 8; +pub const SO_SNDBUFFORCE: u32 = 32; +pub const SO_RCVBUFFORCE: u32 = 33; +pub const SO_KEEPALIVE: u32 = 9; +pub const SO_OOBINLINE: u32 = 10; +pub const SO_NO_CHECK: u32 = 11; +pub const SO_PRIORITY: u32 = 12; +pub const SO_LINGER: u32 = 13; +pub const SO_BSDCOMPAT: u32 = 14; +pub const SO_REUSEPORT: u32 = 15; +pub const SO_PASSCRED: u32 = 16; +pub const SO_PEERCRED: u32 = 17; +pub const SO_RCVLOWAT: u32 = 18; +pub const SO_SNDLOWAT: u32 = 19; +pub const SO_RCVTIMEO_OLD: u32 = 20; +pub const SO_SNDTIMEO_OLD: u32 = 21; +pub const SO_SECURITY_AUTHENTICATION: u32 = 22; +pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; +pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; +pub const SO_BINDTODEVICE: u32 = 25; +pub const SO_ATTACH_FILTER: u32 = 26; +pub const SO_DETACH_FILTER: u32 = 27; +pub const SO_GET_FILTER: u32 = 26; +pub const SO_PEERNAME: u32 = 28; +pub const SO_ACCEPTCONN: u32 = 30; +pub const SO_PEERSEC: u32 = 31; +pub const SO_PASSSEC: u32 = 34; +pub const SO_MARK: u32 = 36; +pub const SO_PROTOCOL: u32 = 38; +pub const SO_DOMAIN: u32 = 39; +pub const SO_RXQ_OVFL: u32 = 40; +pub const SO_WIFI_STATUS: u32 = 41; +pub const SCM_WIFI_STATUS: u32 = 41; +pub const SO_PEEK_OFF: u32 = 42; +pub const SO_NOFCS: u32 = 43; +pub const SO_LOCK_FILTER: u32 = 44; +pub const SO_SELECT_ERR_QUEUE: u32 = 45; +pub const SO_BUSY_POLL: u32 = 46; +pub const SO_MAX_PACING_RATE: u32 = 47; +pub const SO_BPF_EXTENSIONS: u32 = 48; +pub const SO_INCOMING_CPU: u32 = 49; +pub const SO_ATTACH_BPF: u32 = 50; +pub const SO_DETACH_BPF: u32 = 27; +pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; +pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; +pub const SO_CNX_ADVICE: u32 = 53; +pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; +pub const SO_MEMINFO: u32 = 55; +pub const SO_INCOMING_NAPI_ID: u32 = 56; +pub const SO_COOKIE: u32 = 57; +pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; +pub const SO_PEERGROUPS: u32 = 59; +pub const SO_ZEROCOPY: u32 = 60; +pub const SO_TXTIME: u32 = 61; +pub const SCM_TXTIME: u32 = 61; +pub const SO_BINDTOIFINDEX: u32 = 62; +pub const SO_TIMESTAMP_OLD: u32 = 29; +pub const SO_TIMESTAMPNS_OLD: u32 = 35; +pub const SO_TIMESTAMPING_OLD: u32 = 37; +pub const SO_TIMESTAMP_NEW: u32 = 63; +pub const SO_TIMESTAMPNS_NEW: u32 = 64; +pub const SO_TIMESTAMPING_NEW: u32 = 65; +pub const SO_RCVTIMEO_NEW: u32 = 66; +pub const SO_SNDTIMEO_NEW: u32 = 67; +pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; +pub const SO_PREFER_BUSY_POLL: u32 = 69; +pub const SO_BUSY_POLL_BUDGET: u32 = 70; +pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; +pub const SO_TXREHASH: u32 = 74; +pub const SO_RCVMARK: u32 = 75; +pub const SYS_SOCKET: u32 = 1; +pub const SYS_BIND: u32 = 2; +pub const SYS_CONNECT: u32 = 3; +pub const SYS_LISTEN: u32 = 4; +pub const SYS_ACCEPT: u32 = 5; +pub const SYS_GETSOCKNAME: u32 = 6; +pub const SYS_GETPEERNAME: u32 = 7; +pub const SYS_SOCKETPAIR: u32 = 8; +pub const SYS_SEND: u32 = 9; +pub const SYS_RECV: u32 = 10; +pub const SYS_SENDTO: u32 = 11; +pub const SYS_RECVFROM: u32 = 12; +pub const SYS_SHUTDOWN: u32 = 13; +pub const SYS_SETSOCKOPT: u32 = 14; +pub const SYS_GETSOCKOPT: u32 = 15; +pub const SYS_SENDMSG: u32 = 16; +pub const SYS_RECVMSG: u32 = 17; +pub const SYS_ACCEPT4: u32 = 18; +pub const SYS_RECVMMSG: u32 = 19; +pub const SYS_SENDMMSG: u32 = 20; +pub const __SO_ACCEPTCON: u32 = 65536; +pub const TCP_MSS_DEFAULT: u32 = 536; +pub const TCP_MSS_DESIRED: u32 = 1220; +pub const TCP_NODELAY: u32 = 1; +pub const TCP_MAXSEG: u32 = 2; +pub const TCP_CORK: u32 = 3; +pub const TCP_KEEPIDLE: u32 = 4; +pub const TCP_KEEPINTVL: u32 = 5; +pub const TCP_KEEPCNT: u32 = 6; +pub const TCP_SYNCNT: u32 = 7; +pub const TCP_LINGER2: u32 = 8; +pub const TCP_DEFER_ACCEPT: u32 = 9; +pub const TCP_WINDOW_CLAMP: u32 = 10; +pub const TCP_INFO: u32 = 11; +pub const TCP_QUICKACK: u32 = 12; +pub const TCP_CONGESTION: u32 = 13; +pub const TCP_MD5SIG: u32 = 14; +pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; +pub const TCP_THIN_DUPACK: u32 = 17; +pub const TCP_USER_TIMEOUT: u32 = 18; +pub const TCP_REPAIR: u32 = 19; +pub const TCP_REPAIR_QUEUE: u32 = 20; +pub const TCP_QUEUE_SEQ: u32 = 21; +pub const TCP_REPAIR_OPTIONS: u32 = 22; +pub const TCP_FASTOPEN: u32 = 23; +pub const TCP_TIMESTAMP: u32 = 24; +pub const TCP_NOTSENT_LOWAT: u32 = 25; +pub const TCP_CC_INFO: u32 = 26; +pub const TCP_SAVE_SYN: u32 = 27; +pub const TCP_SAVED_SYN: u32 = 28; +pub const TCP_REPAIR_WINDOW: u32 = 29; +pub const TCP_FASTOPEN_CONNECT: u32 = 30; +pub const TCP_ULP: u32 = 31; +pub const TCP_MD5SIG_EXT: u32 = 32; +pub const TCP_FASTOPEN_KEY: u32 = 33; +pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; +pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; +pub const TCP_INQ: u32 = 36; +pub const TCP_CM_INQ: u32 = 36; +pub const TCP_TX_DELAY: u32 = 37; +pub const TCP_REPAIR_ON: u32 = 1; +pub const TCP_REPAIR_OFF: u32 = 0; +pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; +pub const TCPI_OPT_TIMESTAMPS: u32 = 1; +pub const TCPI_OPT_SACK: u32 = 2; +pub const TCPI_OPT_WSCALE: u32 = 4; +pub const TCPI_OPT_ECN: u32 = 8; +pub const TCPI_OPT_ECN_SEEN: u32 = 16; +pub const TCPI_OPT_SYN_DATA: u32 = 32; +pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; +pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; +pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; +pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; +pub const UNIX_PATH_MAX: u32 = 108; +pub const SHUT_RD: u32 = 0; +pub const SHUT_WR: u32 = 1; +pub const SHUT_RDWR: u32 = 2; +pub const SOCK_STREAM: u32 = 1; +pub const SOCK_DGRAM: u32 = 2; +pub const SOCK_RAW: u32 = 3; +pub const SOCK_RDM: u32 = 4; +pub const SOCK_SEQPACKET: u32 = 5; +pub const MSG_DONTWAIT: u32 = 64; +pub const AF_UNSPEC: u32 = 0; +pub const AF_UNIX: u32 = 1; +pub const AF_INET: u32 = 2; +pub const AF_AX25: u32 = 3; +pub const AF_IPX: u32 = 4; +pub const AF_APPLETALK: u32 = 5; +pub const AF_NETROM: u32 = 6; +pub const AF_BRIDGE: u32 = 7; +pub const AF_ATMPVC: u32 = 8; +pub const AF_X25: u32 = 9; +pub const AF_INET6: u32 = 10; +pub const AF_ROSE: u32 = 11; +pub const AF_DECnet: u32 = 12; +pub const AF_NETBEUI: u32 = 13; +pub const AF_SECURITY: u32 = 14; +pub const AF_KEY: u32 = 15; +pub const AF_NETLINK: u32 = 16; +pub const AF_PACKET: u32 = 17; +pub const AF_ASH: u32 = 18; +pub const AF_ECONET: u32 = 19; +pub const AF_ATMSVC: u32 = 20; +pub const AF_RDS: u32 = 21; +pub const AF_SNA: u32 = 22; +pub const AF_IRDA: u32 = 23; +pub const AF_PPPOX: u32 = 24; +pub const AF_WANPIPE: u32 = 25; +pub const AF_LLC: u32 = 26; +pub const AF_CAN: u32 = 29; +pub const AF_TIPC: u32 = 30; +pub const AF_BLUETOOTH: u32 = 31; +pub const AF_IUCV: u32 = 32; +pub const AF_RXRPC: u32 = 33; +pub const AF_ISDN: u32 = 34; +pub const AF_PHONET: u32 = 35; +pub const AF_IEEE802154: u32 = 36; +pub const AF_MAX: u32 = 37; +pub const MSG_OOB: u32 = 1; +pub const MSG_PEEK: u32 = 2; +pub const MSG_DONTROUTE: u32 = 4; +pub const MSG_CTRUNC: u32 = 8; +pub const MSG_PROBE: u32 = 16; +pub const MSG_TRUNC: u32 = 32; +pub const MSG_EOR: u32 = 128; +pub const MSG_WAITALL: u32 = 256; +pub const MSG_FIN: u32 = 512; +pub const MSG_SYN: u32 = 1024; +pub const MSG_CONFIRM: u32 = 2048; +pub const MSG_RST: u32 = 4096; +pub const MSG_ERRQUEUE: u32 = 8192; +pub const MSG_NOSIGNAL: u32 = 16384; +pub const MSG_MORE: u32 = 32768; +pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; +pub const SCM_RIGHTS: u32 = 1; +pub const SCM_CREDENTIALS: u32 = 2; +pub const SCM_SECURITY: u32 = 3; +pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; +pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; +pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; +pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; +pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; +pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; +pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; +pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; +pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; +pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; +pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; +pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; +pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; +pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; +pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; +pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; +pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; +pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; +pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; +pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; +pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; +pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; +pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; +pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; +pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; +pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; +pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; +pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; +pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; +pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; +pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; +pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; +pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; +pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; +pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; +pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; +pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; +pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; +pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; +pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; +pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; +pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; +pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; +pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; +pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; +pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; +pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; +pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; +pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; +pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; +pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; +pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; +pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; +pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; +pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; +pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; +pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; +pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; +pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; +pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; +pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; +pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; +pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; +pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; +pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; +pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; +pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; +pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; +pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; +pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; +pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; +pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; +pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; +pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; +pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; +pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; +pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; +pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; +pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; +pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; +pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; +pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; +pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; +pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; +pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; +pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; +pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; +pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; +pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; +pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; +pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; +pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; +pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; +pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; +pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; +pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; +pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; +pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; +pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; +pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; +pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; +pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; +pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; +pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; +pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; +pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; +pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; +pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; +pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; +pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; +pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; +pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; +pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; +pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; +pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; +pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; +pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; +pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; +pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; +pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; +pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; +pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; +pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; +pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; +pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; +pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; +pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; +pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; +pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; +pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; +pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; +pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; +pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; +pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; +pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; +pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; +pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; +pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; +pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; +pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; +pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; +pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; +pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; +pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; +pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; +pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; +pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; +pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; +pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; +pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; +pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; +pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IPPROTO_IP = 0, +IPPROTO_ICMP = 1, +IPPROTO_IGMP = 2, +IPPROTO_IPIP = 4, +IPPROTO_TCP = 6, +IPPROTO_EGP = 8, +IPPROTO_PUP = 12, +IPPROTO_UDP = 17, +IPPROTO_IDP = 22, +IPPROTO_TP = 29, +IPPROTO_DCCP = 33, +IPPROTO_IPV6 = 41, +IPPROTO_RSVP = 46, +IPPROTO_GRE = 47, +IPPROTO_ESP = 50, +IPPROTO_AH = 51, +IPPROTO_MTP = 92, +IPPROTO_BEETPH = 94, +IPPROTO_ENCAP = 98, +IPPROTO_PIM = 103, +IPPROTO_COMP = 108, +IPPROTO_L2TP = 115, +IPPROTO_SCTP = 132, +IPPROTO_UDPLITE = 136, +IPPROTO_MPLS = 137, +IPPROTO_ETHERNET = 143, +IPPROTO_RAW = 255, +IPPROTO_MPTCP = 262, +IPPROTO_MAX = 263, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IPV4_DEVCONF_FORWARDING = 1, +IPV4_DEVCONF_MC_FORWARDING = 2, +IPV4_DEVCONF_PROXY_ARP = 3, +IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, +IPV4_DEVCONF_SECURE_REDIRECTS = 5, +IPV4_DEVCONF_SEND_REDIRECTS = 6, +IPV4_DEVCONF_SHARED_MEDIA = 7, +IPV4_DEVCONF_RP_FILTER = 8, +IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, +IPV4_DEVCONF_BOOTP_RELAY = 10, +IPV4_DEVCONF_LOG_MARTIANS = 11, +IPV4_DEVCONF_TAG = 12, +IPV4_DEVCONF_ARPFILTER = 13, +IPV4_DEVCONF_MEDIUM_ID = 14, +IPV4_DEVCONF_NOXFRM = 15, +IPV4_DEVCONF_NOPOLICY = 16, +IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, +IPV4_DEVCONF_ARP_ANNOUNCE = 18, +IPV4_DEVCONF_ARP_IGNORE = 19, +IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, +IPV4_DEVCONF_ARP_ACCEPT = 21, +IPV4_DEVCONF_ARP_NOTIFY = 22, +IPV4_DEVCONF_ACCEPT_LOCAL = 23, +IPV4_DEVCONF_SRC_VMARK = 24, +IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, +IPV4_DEVCONF_ROUTE_LOCALNET = 26, +IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, +IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, +IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, +IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, +IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, +IPV4_DEVCONF_BC_FORWARDING = 32, +IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, +__IPV4_DEVCONF_MAX = 34, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +DEVCONF_FORWARDING = 0, +DEVCONF_HOPLIMIT = 1, +DEVCONF_MTU6 = 2, +DEVCONF_ACCEPT_RA = 3, +DEVCONF_ACCEPT_REDIRECTS = 4, +DEVCONF_AUTOCONF = 5, +DEVCONF_DAD_TRANSMITS = 6, +DEVCONF_RTR_SOLICITS = 7, +DEVCONF_RTR_SOLICIT_INTERVAL = 8, +DEVCONF_RTR_SOLICIT_DELAY = 9, +DEVCONF_USE_TEMPADDR = 10, +DEVCONF_TEMP_VALID_LFT = 11, +DEVCONF_TEMP_PREFERED_LFT = 12, +DEVCONF_REGEN_MAX_RETRY = 13, +DEVCONF_MAX_DESYNC_FACTOR = 14, +DEVCONF_MAX_ADDRESSES = 15, +DEVCONF_FORCE_MLD_VERSION = 16, +DEVCONF_ACCEPT_RA_DEFRTR = 17, +DEVCONF_ACCEPT_RA_PINFO = 18, +DEVCONF_ACCEPT_RA_RTR_PREF = 19, +DEVCONF_RTR_PROBE_INTERVAL = 20, +DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, +DEVCONF_PROXY_NDP = 22, +DEVCONF_OPTIMISTIC_DAD = 23, +DEVCONF_ACCEPT_SOURCE_ROUTE = 24, +DEVCONF_MC_FORWARDING = 25, +DEVCONF_DISABLE_IPV6 = 26, +DEVCONF_ACCEPT_DAD = 27, +DEVCONF_FORCE_TLLAO = 28, +DEVCONF_NDISC_NOTIFY = 29, +DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, +DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, +DEVCONF_SUPPRESS_FRAG_NDISC = 32, +DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, +DEVCONF_USE_OPTIMISTIC = 34, +DEVCONF_ACCEPT_RA_MTU = 35, +DEVCONF_STABLE_SECRET = 36, +DEVCONF_USE_OIF_ADDRS_ONLY = 37, +DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, +DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, +DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, +DEVCONF_DROP_UNSOLICITED_NA = 41, +DEVCONF_KEEP_ADDR_ON_DOWN = 42, +DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, +DEVCONF_SEG6_ENABLED = 44, +DEVCONF_SEG6_REQUIRE_HMAC = 45, +DEVCONF_ENHANCED_DAD = 46, +DEVCONF_ADDR_GEN_MODE = 47, +DEVCONF_DISABLE_POLICY = 48, +DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, +DEVCONF_NDISC_TCLASS = 50, +DEVCONF_RPL_SEG_ENABLED = 51, +DEVCONF_RA_DEFRTR_METRIC = 52, +DEVCONF_IOAM6_ENABLED = 53, +DEVCONF_IOAM6_ID = 54, +DEVCONF_IOAM6_ID_WIDE = 55, +DEVCONF_NDISC_EVICT_NOCARRIER = 56, +DEVCONF_ACCEPT_UNTRACKED_NA = 57, +DEVCONF_MAX = 58, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum socket_state { +SS_FREE = 0, +SS_UNCONNECTED = 1, +SS_CONNECTING = 2, +SS_CONNECTED = 3, +SS_DISCONNECTING = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +TCP_FLAG_CWR = 32768, +TCP_FLAG_ECE = 16384, +TCP_FLAG_URG = 8192, +TCP_FLAG_ACK = 4096, +TCP_FLAG_PSH = 2048, +TCP_FLAG_RST = 1024, +TCP_FLAG_SYN = 512, +TCP_FLAG_FIN = 256, +TCP_RESERVED_BITS = 15, +TCP_DATA_OFFSET = 240, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +TCP_NO_QUEUE = 0, +TCP_RECV_QUEUE = 1, +TCP_SEND_QUEUE = 2, +TCP_QUEUES_NR = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_fastopen_client_fail { +TFO_STATUS_UNSPEC = 0, +TFO_COOKIE_UNAVAILABLE = 1, +TFO_DATA_NOT_ACKED = 2, +TFO_SYN_RETRANSMITTED = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_ca_state { +TCP_CA_Open = 0, +TCP_CA_Disorder = 1, +TCP_CA_CWR = 2, +TCP_CA_Recovery = 3, +TCP_CA_Loss = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +TCP_NLA_PAD = 0, +TCP_NLA_BUSY = 1, +TCP_NLA_RWND_LIMITED = 2, +TCP_NLA_SNDBUF_LIMITED = 3, +TCP_NLA_DATA_SEGS_OUT = 4, +TCP_NLA_TOTAL_RETRANS = 5, +TCP_NLA_PACING_RATE = 6, +TCP_NLA_DELIVERY_RATE = 7, +TCP_NLA_SND_CWND = 8, +TCP_NLA_REORDERING = 9, +TCP_NLA_MIN_RTT = 10, +TCP_NLA_RECUR_RETRANS = 11, +TCP_NLA_DELIVERY_RATE_APP_LMT = 12, +TCP_NLA_SNDQ_SIZE = 13, +TCP_NLA_CA_STATE = 14, +TCP_NLA_SND_SSTHRESH = 15, +TCP_NLA_DELIVERED = 16, +TCP_NLA_DELIVERED_CE = 17, +TCP_NLA_BYTES_SENT = 18, +TCP_NLA_BYTES_RETRANS = 19, +TCP_NLA_DSACK_DUPS = 20, +TCP_NLA_REORD_SEEN = 21, +TCP_NLA_SRTT = 22, +TCP_NLA_TIMEOUT_REHASH = 23, +TCP_NLA_BYTES_NOTSENT = 24, +TCP_NLA_EDT = 25, +TCP_NLA_TTL = 26, +TCP_NLA_REHASH = 27, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union iphdr__bindgen_ty_1 { +pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union in6_addr__bindgen_ty_1 { +pub u6_addr8: [__u8; 16usize], +pub u6_addr16: [__be16; 8usize], +pub u6_addr32: [__be32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ipv6hdr__bindgen_ty_1 { +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union tcp_word_hdr { +pub hdr: tcphdr, +pub words: [__be32; 5usize], +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} +impl iphdr { +#[inline] +pub fn ihl(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_ihl(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; +ihl as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit +} +} +impl ipv6hdr { +#[inline] +pub fn priority(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_priority(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let priority: u8 = unsafe { ::core::mem::transmute(priority) }; +priority as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcphdr { +#[inline] +pub fn res1(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } +} +#[inline] +pub fn set_res1(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn doff(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } +} +#[inline] +pub fn set_doff(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn fin(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } +} +#[inline] +pub fn set_fin(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn syn(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } +} +#[inline] +pub fn set_syn(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 1u8, val as u64) +} +} +#[inline] +pub fn rst(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } +} +#[inline] +pub fn set_rst(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(10usize, 1u8, val as u64) +} +} +#[inline] +pub fn psh(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } +} +#[inline] +pub fn set_psh(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(11usize, 1u8, val as u64) +} +} +#[inline] +pub fn ack(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } +} +#[inline] +pub fn set_ack(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(12usize, 1u8, val as u64) +} +} +#[inline] +pub fn urg(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } +} +#[inline] +pub fn set_urg(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(13usize, 1u8, val as u64) +} +} +#[inline] +pub fn ece(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } +} +#[inline] +pub fn set_ece(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(14usize, 1u8, val as u64) +} +} +#[inline] +pub fn cwr(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +} +#[inline] +pub fn set_cwr(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(15usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let res1: u16 = unsafe { ::core::mem::transmute(res1) }; +res1 as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let doff: u16 = unsafe { ::core::mem::transmute(doff) }; +doff as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let fin: u16 = unsafe { ::core::mem::transmute(fin) }; +fin as u64 +}); +__bindgen_bitfield_unit.set(9usize, 1u8, { +let syn: u16 = unsafe { ::core::mem::transmute(syn) }; +syn as u64 +}); +__bindgen_bitfield_unit.set(10usize, 1u8, { +let rst: u16 = unsafe { ::core::mem::transmute(rst) }; +rst as u64 +}); +__bindgen_bitfield_unit.set(11usize, 1u8, { +let psh: u16 = unsafe { ::core::mem::transmute(psh) }; +psh as u64 +}); +__bindgen_bitfield_unit.set(12usize, 1u8, { +let ack: u16 = unsafe { ::core::mem::transmute(ack) }; +ack as u64 +}); +__bindgen_bitfield_unit.set(13usize, 1u8, { +let urg: u16 = unsafe { ::core::mem::transmute(urg) }; +urg as u64 +}); +__bindgen_bitfield_unit.set(14usize, 1u8, { +let ece: u16 = unsafe { ::core::mem::transmute(ece) }; +ece as u64 +}); +__bindgen_bitfield_unit.set(15usize, 1u8, { +let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; +cwr as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcp_info { +#[inline] +pub fn tcpi_snd_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_rcv_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +} +#[inline] +pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn tcpi_fastopen_client_fail(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +} +#[inline] +pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 2u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; +tcpi_snd_wscale as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; +tcpi_rcv_wscale as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; +tcpi_delivery_rate_app_limited as u64 +}); +__bindgen_bitfield_unit.set(9usize, 2u8, { +let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; +tcpi_fastopen_client_fail as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/prctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/prctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/prctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,221 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prctl_mm_map { +pub start_code: __u64, +pub end_code: __u64, +pub start_data: __u64, +pub end_data: __u64, +pub start_brk: __u64, +pub brk: __u64, +pub start_stack: __u64, +pub arg_start: __u64, +pub arg_end: __u64, +pub env_start: __u64, +pub env_end: __u64, +pub auxv: *mut __u64, +pub auxv_size: __u32, +pub exe_fd: __u32, +} +pub const PR_SET_PDEATHSIG: u32 = 1; +pub const PR_GET_PDEATHSIG: u32 = 2; +pub const PR_GET_DUMPABLE: u32 = 3; +pub const PR_SET_DUMPABLE: u32 = 4; +pub const PR_GET_UNALIGN: u32 = 5; +pub const PR_SET_UNALIGN: u32 = 6; +pub const PR_UNALIGN_NOPRINT: u32 = 1; +pub const PR_UNALIGN_SIGBUS: u32 = 2; +pub const PR_GET_KEEPCAPS: u32 = 7; +pub const PR_SET_KEEPCAPS: u32 = 8; +pub const PR_GET_FPEMU: u32 = 9; +pub const PR_SET_FPEMU: u32 = 10; +pub const PR_FPEMU_NOPRINT: u32 = 1; +pub const PR_FPEMU_SIGFPE: u32 = 2; +pub const PR_GET_FPEXC: u32 = 11; +pub const PR_SET_FPEXC: u32 = 12; +pub const PR_FP_EXC_SW_ENABLE: u32 = 128; +pub const PR_FP_EXC_DIV: u32 = 65536; +pub const PR_FP_EXC_OVF: u32 = 131072; +pub const PR_FP_EXC_UND: u32 = 262144; +pub const PR_FP_EXC_RES: u32 = 524288; +pub const PR_FP_EXC_INV: u32 = 1048576; +pub const PR_FP_EXC_DISABLED: u32 = 0; +pub const PR_FP_EXC_NONRECOV: u32 = 1; +pub const PR_FP_EXC_ASYNC: u32 = 2; +pub const PR_FP_EXC_PRECISE: u32 = 3; +pub const PR_GET_TIMING: u32 = 13; +pub const PR_SET_TIMING: u32 = 14; +pub const PR_TIMING_STATISTICAL: u32 = 0; +pub const PR_TIMING_TIMESTAMP: u32 = 1; +pub const PR_SET_NAME: u32 = 15; +pub const PR_GET_NAME: u32 = 16; +pub const PR_GET_ENDIAN: u32 = 19; +pub const PR_SET_ENDIAN: u32 = 20; +pub const PR_ENDIAN_BIG: u32 = 0; +pub const PR_ENDIAN_LITTLE: u32 = 1; +pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; +pub const PR_GET_SECCOMP: u32 = 21; +pub const PR_SET_SECCOMP: u32 = 22; +pub const PR_CAPBSET_READ: u32 = 23; +pub const PR_CAPBSET_DROP: u32 = 24; +pub const PR_GET_TSC: u32 = 25; +pub const PR_SET_TSC: u32 = 26; +pub const PR_TSC_ENABLE: u32 = 1; +pub const PR_TSC_SIGSEGV: u32 = 2; +pub const PR_GET_SECUREBITS: u32 = 27; +pub const PR_SET_SECUREBITS: u32 = 28; +pub const PR_SET_TIMERSLACK: u32 = 29; +pub const PR_GET_TIMERSLACK: u32 = 30; +pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; +pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; +pub const PR_MCE_KILL: u32 = 33; +pub const PR_MCE_KILL_CLEAR: u32 = 0; +pub const PR_MCE_KILL_SET: u32 = 1; +pub const PR_MCE_KILL_LATE: u32 = 0; +pub const PR_MCE_KILL_EARLY: u32 = 1; +pub const PR_MCE_KILL_DEFAULT: u32 = 2; +pub const PR_MCE_KILL_GET: u32 = 34; +pub const PR_SET_MM: u32 = 35; +pub const PR_SET_MM_START_CODE: u32 = 1; +pub const PR_SET_MM_END_CODE: u32 = 2; +pub const PR_SET_MM_START_DATA: u32 = 3; +pub const PR_SET_MM_END_DATA: u32 = 4; +pub const PR_SET_MM_START_STACK: u32 = 5; +pub const PR_SET_MM_START_BRK: u32 = 6; +pub const PR_SET_MM_BRK: u32 = 7; +pub const PR_SET_MM_ARG_START: u32 = 8; +pub const PR_SET_MM_ARG_END: u32 = 9; +pub const PR_SET_MM_ENV_START: u32 = 10; +pub const PR_SET_MM_ENV_END: u32 = 11; +pub const PR_SET_MM_AUXV: u32 = 12; +pub const PR_SET_MM_EXE_FILE: u32 = 13; +pub const PR_SET_MM_MAP: u32 = 14; +pub const PR_SET_MM_MAP_SIZE: u32 = 15; +pub const PR_SET_PTRACER: u32 = 1499557217; +pub const PR_SET_CHILD_SUBREAPER: u32 = 36; +pub const PR_GET_CHILD_SUBREAPER: u32 = 37; +pub const PR_SET_NO_NEW_PRIVS: u32 = 38; +pub const PR_GET_NO_NEW_PRIVS: u32 = 39; +pub const PR_GET_TID_ADDRESS: u32 = 40; +pub const PR_SET_THP_DISABLE: u32 = 41; +pub const PR_GET_THP_DISABLE: u32 = 42; +pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; +pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; +pub const PR_SET_FP_MODE: u32 = 45; +pub const PR_GET_FP_MODE: u32 = 46; +pub const PR_FP_MODE_FR: u32 = 1; +pub const PR_FP_MODE_FRE: u32 = 2; +pub const PR_CAP_AMBIENT: u32 = 47; +pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; +pub const PR_CAP_AMBIENT_RAISE: u32 = 2; +pub const PR_CAP_AMBIENT_LOWER: u32 = 3; +pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; +pub const PR_SVE_SET_VL: u32 = 50; +pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SVE_GET_VL: u32 = 51; +pub const PR_SVE_VL_LEN_MASK: u32 = 65535; +pub const PR_SVE_VL_INHERIT: u32 = 131072; +pub const PR_GET_SPECULATION_CTRL: u32 = 52; +pub const PR_SET_SPECULATION_CTRL: u32 = 53; +pub const PR_SPEC_STORE_BYPASS: u32 = 0; +pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; +pub const PR_SPEC_L1D_FLUSH: u32 = 2; +pub const PR_SPEC_NOT_AFFECTED: u32 = 0; +pub const PR_SPEC_PRCTL: u32 = 1; +pub const PR_SPEC_ENABLE: u32 = 2; +pub const PR_SPEC_DISABLE: u32 = 4; +pub const PR_SPEC_FORCE_DISABLE: u32 = 8; +pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; +pub const PR_PAC_RESET_KEYS: u32 = 54; +pub const PR_PAC_APIAKEY: u32 = 1; +pub const PR_PAC_APIBKEY: u32 = 2; +pub const PR_PAC_APDAKEY: u32 = 4; +pub const PR_PAC_APDBKEY: u32 = 8; +pub const PR_PAC_APGAKEY: u32 = 16; +pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; +pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; +pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; +pub const PR_MTE_TCF_NONE: u32 = 0; +pub const PR_MTE_TCF_SYNC: u32 = 2; +pub const PR_MTE_TCF_ASYNC: u32 = 4; +pub const PR_MTE_TCF_MASK: u32 = 6; +pub const PR_MTE_TAG_SHIFT: u32 = 3; +pub const PR_MTE_TAG_MASK: u32 = 524280; +pub const PR_MTE_TCF_SHIFT: u32 = 1; +pub const PR_SET_IO_FLUSHER: u32 = 57; +pub const PR_GET_IO_FLUSHER: u32 = 58; +pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; +pub const PR_SYS_DISPATCH_OFF: u32 = 0; +pub const PR_SYS_DISPATCH_ON: u32 = 1; +pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; +pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; +pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; +pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; +pub const PR_SCHED_CORE: u32 = 62; +pub const PR_SCHED_CORE_GET: u32 = 0; +pub const PR_SCHED_CORE_CREATE: u32 = 1; +pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; +pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; +pub const PR_SCHED_CORE_MAX: u32 = 4; +pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; +pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; +pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; +pub const PR_SME_SET_VL: u32 = 63; +pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SME_GET_VL: u32 = 64; +pub const PR_SME_VL_LEN_MASK: u32 = 65535; +pub const PR_SME_VL_INHERIT: u32 = 131072; +pub const PR_SET_MDWE: u32 = 65; +pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; +pub const PR_GET_MDWE: u32 = 66; +pub const PR_SET_VMA: u32 = 1398164801; +pub const PR_SET_VMA_ANON_NAME: u32 = 0; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/system.rs temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/system.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/riscv32/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,99 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sysinfo { +pub uptime: __kernel_long_t, +pub loads: [__kernel_ulong_t; 3usize], +pub totalram: __kernel_ulong_t, +pub freeram: __kernel_ulong_t, +pub sharedram: __kernel_ulong_t, +pub bufferram: __kernel_ulong_t, +pub totalswap: __kernel_ulong_t, +pub freeswap: __kernel_ulong_t, +pub procs: __u16, +pub pad: __u16, +pub totalhigh: __kernel_ulong_t, +pub freehigh: __kernel_ulong_t, +pub mem_unit: __u32, +pub _f: [crate::ctypes::c_char; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct oldold_utsname { +pub sysname: [crate::ctypes::c_char; 9usize], +pub nodename: [crate::ctypes::c_char; 9usize], +pub release: [crate::ctypes::c_char; 9usize], +pub version: [crate::ctypes::c_char; 9usize], +pub machine: [crate::ctypes::c_char; 9usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct old_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct new_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +pub domainname: [crate::ctypes::c_char; 65usize], +} +pub const SI_LOAD_SHIFT: u32 = 16; +pub const __OLD_UTS_LEN: u32 = 8; +pub const __NEW_UTS_LEN: u32 = 64; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/errno.rs temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/errno.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/errno.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const EPERM: u32 = 1; pub const ENOENT: u32 = 2; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/general.rs temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/general.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/general.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/general.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,2751 +1,216 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_sighandler_t = ::core::option::Option; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type cap_user_header_t = *mut __user_cap_header_struct; +pub type cap_user_data_t = *mut __user_cap_data_struct; +pub type __kernel_rwf_t = crate::ctypes::c_int; +pub type old_sigset_t = crate::ctypes::c_ulong; +pub type __signalfn_t = ::core::option::Option; +pub type __sighandler_t = __signalfn_t; +pub type __restorefn_t = ::core::option::Option; +pub type __sigrestore_t = __restorefn_t; +pub type stack_t = sigaltstack; +pub type sigval_t = sigval; +pub type siginfo_t = siginfo; +pub type sigevent_t = sigevent; +pub type cc_t = crate::ctypes::c_uchar; +pub type speed_t = crate::ctypes::c_uint; +pub type tcflag_t = crate::ctypes::c_uint; +pub type __fsword_t = __kernel_long_t; #[repr(C)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct __BindgenBitfieldUnit { storage: Storage, } -impl __BindgenBitfieldUnit { -#[inline] -pub const fn new(storage: Storage) -> Self { -Self { storage } -} -} -impl __BindgenBitfieldUnit -where -Storage: AsRef<[u8]> + AsMut<[u8]>, -{ -#[inline] -pub fn get_bit(&self, index: usize) -> bool { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = self.storage.as_ref()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -byte & mask == mask -} -#[inline] -pub fn set_bit(&mut self, index: usize, val: bool) { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = &mut self.storage.as_mut()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -if val { -*byte |= mask; -} else { -*byte &= !mask; -} -} -#[inline] -pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -let mut val = 0; -for i in 0..(bit_width as usize) { -if self.get_bit(i + bit_offset) { -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -val |= 1 << index; -} -} -val -} -#[inline] -pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -for i in 0..(bit_width as usize) { -let mask = 1 << i; -let val_bit_is_set = val & mask == mask; -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -self.set_bit(index + bit_offset, val_bit_is_set); -} -} -} #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) -} -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fd_set { +pub fds_bits: [crate::ctypes::c_ulong; 16usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fsid_t { +pub val: [crate::ctypes::c_int; 2usize], } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_header_struct { +pub version: __u32, +pub pid: crate::ctypes::c_int, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_data_struct { +pub effective: __u32, +pub permitted: __u32, +pub inheritable: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data { +pub magic_etc: __le32, +pub data: [vfs_cap_data__bindgen_ty_1; 2usize], } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data { +pub magic_etc: __le32, +pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], +pub rootid: __le32, } #[repr(C)] -pub struct __BindgenUnionField(::core::marker::PhantomData); -impl __BindgenUnionField { -#[inline] -pub const fn new() -> Self { -__BindgenUnionField(::core::marker::PhantomData) +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } -#[inline] -pub unsafe fn as_ref(&self) -> &T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct f_owner_ex { +pub type_: crate::ctypes::c_int, +pub pid: __kernel_pid_t, } -#[inline] -pub unsafe fn as_mut(&mut self) -> &mut T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_off_t, +pub l_len: __kernel_off_t, +pub l_pid: __kernel_pid_t, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock64 { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_loff_t, +pub l_len: __kernel_loff_t, +pub l_pid: __kernel_pid_t, } -impl ::core::default::Default for __BindgenUnionField { -#[inline] -fn default() -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct open_how { +pub flags: __u64, +pub mode: __u64, +pub resolve: __u64, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct epoll_event { +pub events: __poll_t, +pub data: __u64, } -impl ::core::clone::Clone for __BindgenUnionField { -#[inline] -fn clone(&self) -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, } -impl ::core::marker::Copy for __BindgenUnionField {} -impl ::core::fmt::Debug for __BindgenUnionField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__BindgenUnionField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, } -impl ::core::hash::Hash for __BindgenUnionField { -fn hash(&self, _state: &mut H) {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, } -impl ::core::cmp::PartialEq for __BindgenUnionField { -fn eq(&self, _other: &__BindgenUnionField) -> bool { -true +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, } -} -impl ::core::cmp::Eq for __BindgenUnionField {} -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const AT_SYSINFO_EHDR: u32 = 33; -pub const AT_L1I_CACHESIZE: u32 = 40; -pub const AT_L1I_CACHEGEOMETRY: u32 = 41; -pub const AT_L1D_CACHESIZE: u32 = 42; -pub const AT_L1D_CACHEGEOMETRY: u32 = 43; -pub const AT_L2_CACHESIZE: u32 = 44; -pub const AT_L2_CACHEGEOMETRY: u32 = 45; -pub const AT_L3_CACHESIZE: u32 = 46; -pub const AT_L3_CACHEGEOMETRY: u32 = 47; -pub const AT_VECTOR_SIZE_ARCH: u32 = 9; -pub const AT_NULL: u32 = 0; -pub const AT_IGNORE: u32 = 1; -pub const AT_EXECFD: u32 = 2; -pub const AT_PHDR: u32 = 3; -pub const AT_PHENT: u32 = 4; -pub const AT_PHNUM: u32 = 5; -pub const AT_PAGESZ: u32 = 6; -pub const AT_BASE: u32 = 7; -pub const AT_FLAGS: u32 = 8; -pub const AT_ENTRY: u32 = 9; -pub const AT_NOTELF: u32 = 10; -pub const AT_UID: u32 = 11; -pub const AT_EUID: u32 = 12; -pub const AT_GID: u32 = 13; -pub const AT_EGID: u32 = 14; -pub const AT_PLATFORM: u32 = 15; -pub const AT_HWCAP: u32 = 16; -pub const AT_CLKTCK: u32 = 17; -pub const AT_SECURE: u32 = 23; -pub const AT_BASE_PLATFORM: u32 = 24; -pub const AT_RANDOM: u32 = 25; -pub const AT_HWCAP2: u32 = 26; -pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; -pub const AT_RSEQ_ALIGN: u32 = 28; -pub const AT_EXECFN: u32 = 31; -pub const AT_MINSIGSTKSZ: u32 = 51; -pub const __FD_SETSIZE: u32 = 1024; -pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; -pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; -pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; -pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; -pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; -pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; -pub const VFS_CAP_REVISION_SHIFT: u32 = 24; -pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; -pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; -pub const VFS_CAP_REVISION_1: u32 = 16777216; -pub const VFS_CAP_U32_1: u32 = 1; -pub const VFS_CAP_REVISION_2: u32 = 33554432; -pub const VFS_CAP_U32_2: u32 = 2; -pub const VFS_CAP_REVISION_3: u32 = 50331648; -pub const VFS_CAP_U32_3: u32 = 2; -pub const VFS_CAP_U32: u32 = 2; -pub const VFS_CAP_REVISION: u32 = 50331648; -pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S: u32 = 1; -pub const CAP_CHOWN: u32 = 0; -pub const CAP_DAC_OVERRIDE: u32 = 1; -pub const CAP_DAC_READ_SEARCH: u32 = 2; -pub const CAP_FOWNER: u32 = 3; -pub const CAP_FSETID: u32 = 4; -pub const CAP_KILL: u32 = 5; -pub const CAP_SETGID: u32 = 6; -pub const CAP_SETUID: u32 = 7; -pub const CAP_SETPCAP: u32 = 8; -pub const CAP_LINUX_IMMUTABLE: u32 = 9; -pub const CAP_NET_BIND_SERVICE: u32 = 10; -pub const CAP_NET_BROADCAST: u32 = 11; -pub const CAP_NET_ADMIN: u32 = 12; -pub const CAP_NET_RAW: u32 = 13; -pub const CAP_IPC_LOCK: u32 = 14; -pub const CAP_IPC_OWNER: u32 = 15; -pub const CAP_SYS_MODULE: u32 = 16; -pub const CAP_SYS_RAWIO: u32 = 17; -pub const CAP_SYS_CHROOT: u32 = 18; -pub const CAP_SYS_PTRACE: u32 = 19; -pub const CAP_SYS_PACCT: u32 = 20; -pub const CAP_SYS_ADMIN: u32 = 21; -pub const CAP_SYS_BOOT: u32 = 22; -pub const CAP_SYS_NICE: u32 = 23; -pub const CAP_SYS_RESOURCE: u32 = 24; -pub const CAP_SYS_TIME: u32 = 25; -pub const CAP_SYS_TTY_CONFIG: u32 = 26; -pub const CAP_MKNOD: u32 = 27; -pub const CAP_LEASE: u32 = 28; -pub const CAP_AUDIT_WRITE: u32 = 29; -pub const CAP_AUDIT_CONTROL: u32 = 30; -pub const CAP_SETFCAP: u32 = 31; -pub const CAP_MAC_OVERRIDE: u32 = 32; -pub const CAP_MAC_ADMIN: u32 = 33; -pub const CAP_SYSLOG: u32 = 34; -pub const CAP_WAKE_ALARM: u32 = 35; -pub const CAP_BLOCK_SUSPEND: u32 = 36; -pub const CAP_AUDIT_READ: u32 = 37; -pub const CAP_PERFMON: u32 = 38; -pub const CAP_BPF: u32 = 39; -pub const CAP_CHECKPOINT_RESTORE: u32 = 40; -pub const CAP_LAST_CAP: u32 = 40; -pub const O_ACCMODE: u32 = 3; -pub const O_RDONLY: u32 = 0; -pub const O_WRONLY: u32 = 1; -pub const O_RDWR: u32 = 2; -pub const O_CREAT: u32 = 64; -pub const O_EXCL: u32 = 128; -pub const O_NOCTTY: u32 = 256; -pub const O_TRUNC: u32 = 512; -pub const O_APPEND: u32 = 1024; -pub const O_NONBLOCK: u32 = 2048; -pub const O_DSYNC: u32 = 4096; -pub const FASYNC: u32 = 8192; -pub const O_DIRECT: u32 = 16384; -pub const O_LARGEFILE: u32 = 32768; -pub const O_DIRECTORY: u32 = 65536; -pub const O_NOFOLLOW: u32 = 131072; -pub const O_NOATIME: u32 = 262144; -pub const O_CLOEXEC: u32 = 524288; -pub const __O_SYNC: u32 = 1048576; -pub const O_SYNC: u32 = 1052672; -pub const O_PATH: u32 = 2097152; -pub const __O_TMPFILE: u32 = 4194304; -pub const O_TMPFILE: u32 = 4259840; -pub const O_TMPFILE_MASK: u32 = 4259904; -pub const O_NDELAY: u32 = 2048; -pub const F_DUPFD: u32 = 0; -pub const F_GETFD: u32 = 1; -pub const F_SETFD: u32 = 2; -pub const F_GETFL: u32 = 3; -pub const F_SETFL: u32 = 4; -pub const F_GETLK: u32 = 5; -pub const F_SETLK: u32 = 6; -pub const F_SETLKW: u32 = 7; -pub const F_SETOWN: u32 = 8; -pub const F_GETOWN: u32 = 9; -pub const F_SETSIG: u32 = 10; -pub const F_GETSIG: u32 = 11; -pub const F_SETOWN_EX: u32 = 15; -pub const F_GETOWN_EX: u32 = 16; -pub const F_GETOWNER_UIDS: u32 = 17; -pub const F_OFD_GETLK: u32 = 36; -pub const F_OFD_SETLK: u32 = 37; -pub const F_OFD_SETLKW: u32 = 38; -pub const F_OWNER_TID: u32 = 0; -pub const F_OWNER_PID: u32 = 1; -pub const F_OWNER_PGRP: u32 = 2; -pub const FD_CLOEXEC: u32 = 1; -pub const F_RDLCK: u32 = 0; -pub const F_WRLCK: u32 = 1; -pub const F_UNLCK: u32 = 2; -pub const F_EXLCK: u32 = 4; -pub const F_SHLCK: u32 = 8; -pub const LOCK_SH: u32 = 1; -pub const LOCK_EX: u32 = 2; -pub const LOCK_NB: u32 = 4; -pub const LOCK_UN: u32 = 8; -pub const LOCK_MAND: u32 = 32; -pub const LOCK_READ: u32 = 64; -pub const LOCK_WRITE: u32 = 128; -pub const LOCK_RW: u32 = 192; -pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; -pub const RESOLVE_NO_XDEV: u32 = 1; -pub const RESOLVE_NO_MAGICLINKS: u32 = 2; -pub const RESOLVE_NO_SYMLINKS: u32 = 4; -pub const RESOLVE_BENEATH: u32 = 8; -pub const RESOLVE_IN_ROOT: u32 = 16; -pub const RESOLVE_CACHED: u32 = 32; -pub const F_SETLEASE: u32 = 1024; -pub const F_GETLEASE: u32 = 1025; -pub const F_CANCELLK: u32 = 1029; -pub const F_DUPFD_CLOEXEC: u32 = 1030; -pub const F_NOTIFY: u32 = 1026; -pub const F_SETPIPE_SZ: u32 = 1031; -pub const F_GETPIPE_SZ: u32 = 1032; -pub const F_ADD_SEALS: u32 = 1033; -pub const F_GET_SEALS: u32 = 1034; -pub const F_SEAL_SEAL: u32 = 1; -pub const F_SEAL_SHRINK: u32 = 2; -pub const F_SEAL_GROW: u32 = 4; -pub const F_SEAL_WRITE: u32 = 8; -pub const F_SEAL_FUTURE_WRITE: u32 = 16; -pub const F_SEAL_EXEC: u32 = 32; -pub const F_GET_RW_HINT: u32 = 1035; -pub const F_SET_RW_HINT: u32 = 1036; -pub const F_GET_FILE_RW_HINT: u32 = 1037; -pub const F_SET_FILE_RW_HINT: u32 = 1038; -pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; -pub const RWH_WRITE_LIFE_NONE: u32 = 1; -pub const RWH_WRITE_LIFE_SHORT: u32 = 2; -pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; -pub const RWH_WRITE_LIFE_LONG: u32 = 4; -pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; -pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; -pub const DN_ACCESS: u32 = 1; -pub const DN_MODIFY: u32 = 2; -pub const DN_CREATE: u32 = 4; -pub const DN_DELETE: u32 = 8; -pub const DN_RENAME: u32 = 16; -pub const DN_ATTRIB: u32 = 32; -pub const DN_MULTISHOT: u32 = 2147483648; -pub const AT_FDCWD: i32 = -100; -pub const AT_SYMLINK_NOFOLLOW: u32 = 256; -pub const AT_EACCESS: u32 = 512; -pub const AT_REMOVEDIR: u32 = 512; -pub const AT_SYMLINK_FOLLOW: u32 = 1024; -pub const AT_NO_AUTOMOUNT: u32 = 2048; -pub const AT_EMPTY_PATH: u32 = 4096; -pub const AT_STATX_SYNC_TYPE: u32 = 24576; -pub const AT_STATX_SYNC_AS_STAT: u32 = 0; -pub const AT_STATX_FORCE_SYNC: u32 = 8192; -pub const AT_STATX_DONT_SYNC: u32 = 16384; -pub const AT_RECURSIVE: u32 = 32768; -pub const EPOLL_CLOEXEC: u32 = 524288; -pub const EPOLL_CTL_ADD: u32 = 1; -pub const EPOLL_CTL_DEL: u32 = 2; -pub const EPOLL_CTL_MOD: u32 = 3; -pub const POSIX_FADV_NORMAL: u32 = 0; -pub const POSIX_FADV_RANDOM: u32 = 1; -pub const POSIX_FADV_SEQUENTIAL: u32 = 2; -pub const POSIX_FADV_WILLNEED: u32 = 3; -pub const POSIX_FADV_DONTNEED: u32 = 4; -pub const POSIX_FADV_NOREUSE: u32 = 5; -pub const FALLOC_FL_KEEP_SIZE: u32 = 1; -pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; -pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; -pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; -pub const FALLOC_FL_ZERO_RANGE: u32 = 16; -pub const FALLOC_FL_INSERT_RANGE: u32 = 32; -pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; -pub const NR_OPEN: u32 = 1024; -pub const NGROUPS_MAX: u32 = 65536; -pub const ARG_MAX: u32 = 131072; -pub const LINK_MAX: u32 = 127; -pub const MAX_CANON: u32 = 255; -pub const MAX_INPUT: u32 = 255; -pub const NAME_MAX: u32 = 255; -pub const PATH_MAX: u32 = 4096; -pub const PIPE_BUF: u32 = 4096; -pub const XATTR_NAME_MAX: u32 = 255; -pub const XATTR_SIZE_MAX: u32 = 65536; -pub const XATTR_LIST_MAX: u32 = 65536; -pub const RTSIG_MAX: u32 = 32; -pub const _IOC_NRBITS: u32 = 8; -pub const _IOC_TYPEBITS: u32 = 8; -pub const _IOC_SIZEBITS: u32 = 14; -pub const _IOC_DIRBITS: u32 = 2; -pub const _IOC_NRMASK: u32 = 255; -pub const _IOC_TYPEMASK: u32 = 255; -pub const _IOC_SIZEMASK: u32 = 16383; -pub const _IOC_DIRMASK: u32 = 3; -pub const _IOC_NRSHIFT: u32 = 0; -pub const _IOC_TYPESHIFT: u32 = 8; -pub const _IOC_SIZESHIFT: u32 = 16; -pub const _IOC_DIRSHIFT: u32 = 30; -pub const _IOC_NONE: u32 = 0; -pub const _IOC_WRITE: u32 = 1; -pub const _IOC_READ: u32 = 2; -pub const IOC_IN: u32 = 1073741824; -pub const IOC_OUT: u32 = 2147483648; -pub const IOC_INOUT: u32 = 3221225472; -pub const IOCSIZE_MASK: u32 = 1073676288; -pub const IOCSIZE_SHIFT: u32 = 16; -pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; -pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; -pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; -pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; -pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; -pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; -pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; -pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; -pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; -pub const FSCRYPT_POLICY_V1: u32 = 0; -pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; -pub const FSCRYPT_POLICY_V2: u32 = 2; -pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; -pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; -pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; -pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; -pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; -pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; -pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; -pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FS_POLICY_FLAGS_VALID: u32 = 7; -pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; -pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; -pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; -pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; -pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; -pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; -pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; -pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; -pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FS_MAX_KEY_SIZE: u32 = 64; -pub const MS_RDONLY: u32 = 1; -pub const MS_NOSUID: u32 = 2; -pub const MS_NODEV: u32 = 4; -pub const MS_NOEXEC: u32 = 8; -pub const MS_SYNCHRONOUS: u32 = 16; -pub const MS_REMOUNT: u32 = 32; -pub const MS_MANDLOCK: u32 = 64; -pub const MS_DIRSYNC: u32 = 128; -pub const MS_NOSYMFOLLOW: u32 = 256; -pub const MS_NOATIME: u32 = 1024; -pub const MS_NODIRATIME: u32 = 2048; -pub const MS_BIND: u32 = 4096; -pub const MS_MOVE: u32 = 8192; -pub const MS_REC: u32 = 16384; -pub const MS_VERBOSE: u32 = 32768; -pub const MS_SILENT: u32 = 32768; -pub const MS_POSIXACL: u32 = 65536; -pub const MS_UNBINDABLE: u32 = 131072; -pub const MS_PRIVATE: u32 = 262144; -pub const MS_SLAVE: u32 = 524288; -pub const MS_SHARED: u32 = 1048576; -pub const MS_RELATIME: u32 = 2097152; -pub const MS_KERNMOUNT: u32 = 4194304; -pub const MS_I_VERSION: u32 = 8388608; -pub const MS_STRICTATIME: u32 = 16777216; -pub const MS_LAZYTIME: u32 = 33554432; -pub const MS_SUBMOUNT: u32 = 67108864; -pub const MS_NOREMOTELOCK: u32 = 134217728; -pub const MS_NOSEC: u32 = 268435456; -pub const MS_BORN: u32 = 536870912; -pub const MS_ACTIVE: u32 = 1073741824; -pub const MS_NOUSER: u32 = 2147483648; -pub const MS_RMT_MASK: u32 = 41943121; -pub const MS_MGC_VAL: u32 = 3236757504; -pub const MS_MGC_MSK: u32 = 4294901760; -pub const OPEN_TREE_CLONE: u32 = 1; -pub const OPEN_TREE_CLOEXEC: u32 = 524288; -pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; -pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; -pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; -pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; -pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; -pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; -pub const MOVE_MOUNT_SET_GROUP: u32 = 256; -pub const MOVE_MOUNT__MASK: u32 = 375; -pub const FSOPEN_CLOEXEC: u32 = 1; -pub const FSPICK_CLOEXEC: u32 = 1; -pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; -pub const FSPICK_NO_AUTOMOUNT: u32 = 4; -pub const FSPICK_EMPTY_PATH: u32 = 8; -pub const FSMOUNT_CLOEXEC: u32 = 1; -pub const MOUNT_ATTR_RDONLY: u32 = 1; -pub const MOUNT_ATTR_NOSUID: u32 = 2; -pub const MOUNT_ATTR_NODEV: u32 = 4; -pub const MOUNT_ATTR_NOEXEC: u32 = 8; -pub const MOUNT_ATTR__ATIME: u32 = 112; -pub const MOUNT_ATTR_RELATIME: u32 = 0; -pub const MOUNT_ATTR_NOATIME: u32 = 16; -pub const MOUNT_ATTR_STRICTATIME: u32 = 32; -pub const MOUNT_ATTR_NODIRATIME: u32 = 128; -pub const MOUNT_ATTR_IDMAP: u32 = 1048576; -pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; -pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; -pub const INR_OPEN_CUR: u32 = 1024; -pub const INR_OPEN_MAX: u32 = 4096; -pub const BLOCK_SIZE_BITS: u32 = 10; -pub const BLOCK_SIZE: u32 = 1024; -pub const SEEK_SET: u32 = 0; -pub const SEEK_CUR: u32 = 1; -pub const SEEK_END: u32 = 2; -pub const SEEK_DATA: u32 = 3; -pub const SEEK_HOLE: u32 = 4; -pub const SEEK_MAX: u32 = 4; -pub const RENAME_NOREPLACE: u32 = 1; -pub const RENAME_EXCHANGE: u32 = 2; -pub const RENAME_WHITEOUT: u32 = 4; -pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; -pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; -pub const NR_FILE: u32 = 8192; -pub const FS_XFLAG_REALTIME: u32 = 1; -pub const FS_XFLAG_PREALLOC: u32 = 2; -pub const FS_XFLAG_IMMUTABLE: u32 = 8; -pub const FS_XFLAG_APPEND: u32 = 16; -pub const FS_XFLAG_SYNC: u32 = 32; -pub const FS_XFLAG_NOATIME: u32 = 64; -pub const FS_XFLAG_NODUMP: u32 = 128; -pub const FS_XFLAG_RTINHERIT: u32 = 256; -pub const FS_XFLAG_PROJINHERIT: u32 = 512; -pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; -pub const FS_XFLAG_EXTSIZE: u32 = 2048; -pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; -pub const FS_XFLAG_NODEFRAG: u32 = 8192; -pub const FS_XFLAG_FILESTREAM: u32 = 16384; -pub const FS_XFLAG_DAX: u32 = 32768; -pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; -pub const FS_XFLAG_HASATTR: u32 = 2147483648; -pub const BMAP_IOCTL: u32 = 1; -pub const FSLABEL_MAX: u32 = 256; -pub const FS_SECRM_FL: u32 = 1; -pub const FS_UNRM_FL: u32 = 2; -pub const FS_COMPR_FL: u32 = 4; -pub const FS_SYNC_FL: u32 = 8; -pub const FS_IMMUTABLE_FL: u32 = 16; -pub const FS_APPEND_FL: u32 = 32; -pub const FS_NODUMP_FL: u32 = 64; -pub const FS_NOATIME_FL: u32 = 128; -pub const FS_DIRTY_FL: u32 = 256; -pub const FS_COMPRBLK_FL: u32 = 512; -pub const FS_NOCOMP_FL: u32 = 1024; -pub const FS_ENCRYPT_FL: u32 = 2048; -pub const FS_BTREE_FL: u32 = 4096; -pub const FS_INDEX_FL: u32 = 4096; -pub const FS_IMAGIC_FL: u32 = 8192; -pub const FS_JOURNAL_DATA_FL: u32 = 16384; -pub const FS_NOTAIL_FL: u32 = 32768; -pub const FS_DIRSYNC_FL: u32 = 65536; -pub const FS_TOPDIR_FL: u32 = 131072; -pub const FS_HUGE_FILE_FL: u32 = 262144; -pub const FS_EXTENT_FL: u32 = 524288; -pub const FS_VERITY_FL: u32 = 1048576; -pub const FS_EA_INODE_FL: u32 = 2097152; -pub const FS_EOFBLOCKS_FL: u32 = 4194304; -pub const FS_NOCOW_FL: u32 = 8388608; -pub const FS_DAX_FL: u32 = 33554432; -pub const FS_INLINE_DATA_FL: u32 = 268435456; -pub const FS_PROJINHERIT_FL: u32 = 536870912; -pub const FS_CASEFOLD_FL: u32 = 1073741824; -pub const FS_RESERVED_FL: u32 = 2147483648; -pub const FS_FL_USER_VISIBLE: u32 = 253951; -pub const FS_FL_USER_MODIFIABLE: u32 = 229631; -pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; -pub const SYNC_FILE_RANGE_WRITE: u32 = 2; -pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; -pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; -pub const FUTEX_WAIT: u32 = 0; -pub const FUTEX_WAKE: u32 = 1; -pub const FUTEX_FD: u32 = 2; -pub const FUTEX_REQUEUE: u32 = 3; -pub const FUTEX_CMP_REQUEUE: u32 = 4; -pub const FUTEX_WAKE_OP: u32 = 5; -pub const FUTEX_LOCK_PI: u32 = 6; -pub const FUTEX_UNLOCK_PI: u32 = 7; -pub const FUTEX_TRYLOCK_PI: u32 = 8; -pub const FUTEX_WAIT_BITSET: u32 = 9; -pub const FUTEX_WAKE_BITSET: u32 = 10; -pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; -pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; -pub const FUTEX_LOCK_PI2: u32 = 13; -pub const FUTEX_PRIVATE_FLAG: u32 = 128; -pub const FUTEX_CLOCK_REALTIME: u32 = 256; -pub const FUTEX_CMD_MASK: i32 = -385; -pub const FUTEX_WAIT_PRIVATE: u32 = 128; -pub const FUTEX_WAKE_PRIVATE: u32 = 129; -pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; -pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; -pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; -pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; -pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; -pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; -pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; -pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; -pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; -pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; -pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; -pub const FUTEX_32: u32 = 2; -pub const FUTEX_WAITV_MAX: u32 = 128; -pub const FUTEX_WAITERS: u32 = 2147483648; -pub const FUTEX_OWNER_DIED: u32 = 1073741824; -pub const FUTEX_TID_MASK: u32 = 1073741823; -pub const ROBUST_LIST_LIMIT: u32 = 2048; -pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; -pub const FUTEX_OP_SET: u32 = 0; -pub const FUTEX_OP_ADD: u32 = 1; -pub const FUTEX_OP_OR: u32 = 2; -pub const FUTEX_OP_ANDN: u32 = 3; -pub const FUTEX_OP_XOR: u32 = 4; -pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; -pub const FUTEX_OP_CMP_EQ: u32 = 0; -pub const FUTEX_OP_CMP_NE: u32 = 1; -pub const FUTEX_OP_CMP_LT: u32 = 2; -pub const FUTEX_OP_CMP_LE: u32 = 3; -pub const FUTEX_OP_CMP_GT: u32 = 4; -pub const FUTEX_OP_CMP_GE: u32 = 5; -pub const __UAPI_DEF_IF_IFCONF: u32 = 1; -pub const __UAPI_DEF_IF_IFMAP: u32 = 1; -pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1; -pub const __UAPI_DEF_IF_IFREQ: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1; -pub const __UAPI_DEF_IN_ADDR: u32 = 1; -pub const __UAPI_DEF_IN_IPPROTO: u32 = 1; -pub const __UAPI_DEF_IN_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP_MREQ: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1; -pub const __UAPI_DEF_IN_CLASS: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1; -pub const __UAPI_DEF_IPV6_MREQ: u32 = 1; -pub const __UAPI_DEF_IPPROTO_V6: u32 = 1; -pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1; -pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1; -pub const __UAPI_DEF_XATTR: u32 = 1; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const IP_TOS: u32 = 1; -pub const IP_TTL: u32 = 2; -pub const IP_HDRINCL: u32 = 3; -pub const IP_OPTIONS: u32 = 4; -pub const IP_ROUTER_ALERT: u32 = 5; -pub const IP_RECVOPTS: u32 = 6; -pub const IP_RETOPTS: u32 = 7; -pub const IP_PKTINFO: u32 = 8; -pub const IP_PKTOPTIONS: u32 = 9; -pub const IP_MTU_DISCOVER: u32 = 10; -pub const IP_RECVERR: u32 = 11; -pub const IP_RECVTTL: u32 = 12; -pub const IP_RECVTOS: u32 = 13; -pub const IP_MTU: u32 = 14; -pub const IP_FREEBIND: u32 = 15; -pub const IP_IPSEC_POLICY: u32 = 16; -pub const IP_XFRM_POLICY: u32 = 17; -pub const IP_PASSSEC: u32 = 18; -pub const IP_TRANSPARENT: u32 = 19; -pub const IP_RECVRETOPTS: u32 = 7; -pub const IP_ORIGDSTADDR: u32 = 20; -pub const IP_RECVORIGDSTADDR: u32 = 20; -pub const IP_MINTTL: u32 = 21; -pub const IP_NODEFRAG: u32 = 22; -pub const IP_CHECKSUM: u32 = 23; -pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; -pub const IP_RECVFRAGSIZE: u32 = 25; -pub const IP_RECVERR_RFC4884: u32 = 26; -pub const IP_PMTUDISC_DONT: u32 = 0; -pub const IP_PMTUDISC_WANT: u32 = 1; -pub const IP_PMTUDISC_DO: u32 = 2; -pub const IP_PMTUDISC_PROBE: u32 = 3; -pub const IP_PMTUDISC_INTERFACE: u32 = 4; -pub const IP_PMTUDISC_OMIT: u32 = 5; -pub const IP_MULTICAST_IF: u32 = 32; -pub const IP_MULTICAST_TTL: u32 = 33; -pub const IP_MULTICAST_LOOP: u32 = 34; -pub const IP_ADD_MEMBERSHIP: u32 = 35; -pub const IP_DROP_MEMBERSHIP: u32 = 36; -pub const IP_UNBLOCK_SOURCE: u32 = 37; -pub const IP_BLOCK_SOURCE: u32 = 38; -pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; -pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; -pub const IP_MSFILTER: u32 = 41; -pub const MCAST_JOIN_GROUP: u32 = 42; -pub const MCAST_BLOCK_SOURCE: u32 = 43; -pub const MCAST_UNBLOCK_SOURCE: u32 = 44; -pub const MCAST_LEAVE_GROUP: u32 = 45; -pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; -pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; -pub const MCAST_MSFILTER: u32 = 48; -pub const IP_MULTICAST_ALL: u32 = 49; -pub const IP_UNICAST_IF: u32 = 50; -pub const IP_LOCAL_PORT_RANGE: u32 = 51; -pub const MCAST_EXCLUDE: u32 = 0; -pub const MCAST_INCLUDE: u32 = 1; -pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; -pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const __SOCK_SIZE__: u32 = 16; -pub const IN_CLASSA_NET: u32 = 4278190080; -pub const IN_CLASSA_NSHIFT: u32 = 24; -pub const IN_CLASSA_HOST: u32 = 16777215; -pub const IN_CLASSA_MAX: u32 = 128; -pub const IN_CLASSB_NET: u32 = 4294901760; -pub const IN_CLASSB_NSHIFT: u32 = 16; -pub const IN_CLASSB_HOST: u32 = 65535; -pub const IN_CLASSB_MAX: u32 = 65536; -pub const IN_CLASSC_NET: u32 = 4294967040; -pub const IN_CLASSC_NSHIFT: u32 = 8; -pub const IN_CLASSC_HOST: u32 = 255; -pub const IN_MULTICAST_NET: u32 = 3758096384; -pub const IN_CLASSE_NET: u32 = 4294967295; -pub const IN_CLASSE_NSHIFT: u32 = 0; -pub const IN_LOOPBACKNET: u32 = 127; -pub const INADDR_LOOPBACK: u32 = 2130706433; -pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; -pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; -pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; -pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; -pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; -pub const __LITTLE_ENDIAN: u32 = 1234; -pub const IN_ACCESS: u32 = 1; -pub const IN_MODIFY: u32 = 2; -pub const IN_ATTRIB: u32 = 4; -pub const IN_CLOSE_WRITE: u32 = 8; -pub const IN_CLOSE_NOWRITE: u32 = 16; -pub const IN_OPEN: u32 = 32; -pub const IN_MOVED_FROM: u32 = 64; -pub const IN_MOVED_TO: u32 = 128; -pub const IN_CREATE: u32 = 256; -pub const IN_DELETE: u32 = 512; -pub const IN_DELETE_SELF: u32 = 1024; -pub const IN_MOVE_SELF: u32 = 2048; -pub const IN_UNMOUNT: u32 = 8192; -pub const IN_Q_OVERFLOW: u32 = 16384; -pub const IN_IGNORED: u32 = 32768; -pub const IN_CLOSE: u32 = 24; -pub const IN_MOVE: u32 = 192; -pub const IN_ONLYDIR: u32 = 16777216; -pub const IN_DONT_FOLLOW: u32 = 33554432; -pub const IN_EXCL_UNLINK: u32 = 67108864; -pub const IN_MASK_CREATE: u32 = 268435456; -pub const IN_MASK_ADD: u32 = 536870912; -pub const IN_ISDIR: u32 = 1073741824; -pub const IN_ONESHOT: u32 = 2147483648; -pub const IN_ALL_EVENTS: u32 = 4095; -pub const IN_CLOEXEC: u32 = 524288; -pub const IN_NONBLOCK: u32 = 2048; -pub const IPTOS_TOS_MASK: u32 = 30; -pub const IPTOS_LOWDELAY: u32 = 16; -pub const IPTOS_THROUGHPUT: u32 = 8; -pub const IPTOS_RELIABILITY: u32 = 4; -pub const IPTOS_MINCOST: u32 = 2; -pub const IPTOS_PREC_MASK: u32 = 224; -pub const IPTOS_PREC_NETCONTROL: u32 = 224; -pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; -pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; -pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; -pub const IPTOS_PREC_FLASH: u32 = 96; -pub const IPTOS_PREC_IMMEDIATE: u32 = 64; -pub const IPTOS_PREC_PRIORITY: u32 = 32; -pub const IPTOS_PREC_ROUTINE: u32 = 0; -pub const IPOPT_COPY: u32 = 128; -pub const IPOPT_CLASS_MASK: u32 = 96; -pub const IPOPT_NUMBER_MASK: u32 = 31; -pub const IPOPT_CONTROL: u32 = 0; -pub const IPOPT_RESERVED1: u32 = 32; -pub const IPOPT_MEASUREMENT: u32 = 64; -pub const IPOPT_RESERVED2: u32 = 96; -pub const IPOPT_END: u32 = 0; -pub const IPOPT_NOOP: u32 = 1; -pub const IPOPT_SEC: u32 = 130; -pub const IPOPT_LSRR: u32 = 131; -pub const IPOPT_TIMESTAMP: u32 = 68; -pub const IPOPT_CIPSO: u32 = 134; -pub const IPOPT_RR: u32 = 7; -pub const IPOPT_SID: u32 = 136; -pub const IPOPT_SSRR: u32 = 137; -pub const IPOPT_RA: u32 = 148; -pub const IPVERSION: u32 = 4; -pub const MAXTTL: u32 = 255; -pub const IPDEFTTL: u32 = 64; -pub const IPOPT_OPTVAL: u32 = 0; -pub const IPOPT_OLEN: u32 = 1; -pub const IPOPT_OFFSET: u32 = 2; -pub const IPOPT_MINOFF: u32 = 4; -pub const MAX_IPOPTLEN: u32 = 40; -pub const IPOPT_NOP: u32 = 1; -pub const IPOPT_EOL: u32 = 0; -pub const IPOPT_TS: u32 = 68; -pub const IPOPT_TS_TSONLY: u32 = 0; -pub const IPOPT_TS_TSANDADDR: u32 = 1; -pub const IPOPT_TS_PRESPEC: u32 = 3; -pub const IPV4_BEET_PHMAXLEN: u32 = 8; -pub const IPV6_FL_A_GET: u32 = 0; -pub const IPV6_FL_A_PUT: u32 = 1; -pub const IPV6_FL_A_RENEW: u32 = 2; -pub const IPV6_FL_F_CREATE: u32 = 1; -pub const IPV6_FL_F_EXCL: u32 = 2; -pub const IPV6_FL_F_REFLECT: u32 = 4; -pub const IPV6_FL_F_REMOTE: u32 = 8; -pub const IPV6_FL_S_NONE: u32 = 0; -pub const IPV6_FL_S_EXCL: u32 = 1; -pub const IPV6_FL_S_PROCESS: u32 = 2; -pub const IPV6_FL_S_USER: u32 = 3; -pub const IPV6_FL_S_ANY: u32 = 255; -pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; -pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; -pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; -pub const IPV6_PRIORITY_FILLER: u32 = 256; -pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; -pub const IPV6_PRIORITY_RESERVED1: u32 = 768; -pub const IPV6_PRIORITY_BULK: u32 = 1024; -pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; -pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; -pub const IPV6_PRIORITY_CONTROL: u32 = 1792; -pub const IPV6_PRIORITY_8: u32 = 2048; -pub const IPV6_PRIORITY_9: u32 = 2304; -pub const IPV6_PRIORITY_10: u32 = 2560; -pub const IPV6_PRIORITY_11: u32 = 2816; -pub const IPV6_PRIORITY_12: u32 = 3072; -pub const IPV6_PRIORITY_13: u32 = 3328; -pub const IPV6_PRIORITY_14: u32 = 3584; -pub const IPV6_PRIORITY_15: u32 = 3840; -pub const IPPROTO_HOPOPTS: u32 = 0; -pub const IPPROTO_ROUTING: u32 = 43; -pub const IPPROTO_FRAGMENT: u32 = 44; -pub const IPPROTO_ICMPV6: u32 = 58; -pub const IPPROTO_NONE: u32 = 59; -pub const IPPROTO_DSTOPTS: u32 = 60; -pub const IPPROTO_MH: u32 = 135; -pub const IPV6_TLV_PAD1: u32 = 0; -pub const IPV6_TLV_PADN: u32 = 1; -pub const IPV6_TLV_ROUTERALERT: u32 = 5; -pub const IPV6_TLV_CALIPSO: u32 = 7; -pub const IPV6_TLV_IOAM: u32 = 49; -pub const IPV6_TLV_JUMBO: u32 = 194; -pub const IPV6_TLV_HAO: u32 = 201; -pub const IPV6_ADDRFORM: u32 = 1; -pub const IPV6_2292PKTINFO: u32 = 2; -pub const IPV6_2292HOPOPTS: u32 = 3; -pub const IPV6_2292DSTOPTS: u32 = 4; -pub const IPV6_2292RTHDR: u32 = 5; -pub const IPV6_2292PKTOPTIONS: u32 = 6; -pub const IPV6_CHECKSUM: u32 = 7; -pub const IPV6_2292HOPLIMIT: u32 = 8; -pub const IPV6_NEXTHOP: u32 = 9; -pub const IPV6_AUTHHDR: u32 = 10; -pub const IPV6_FLOWINFO: u32 = 11; -pub const IPV6_UNICAST_HOPS: u32 = 16; -pub const IPV6_MULTICAST_IF: u32 = 17; -pub const IPV6_MULTICAST_HOPS: u32 = 18; -pub const IPV6_MULTICAST_LOOP: u32 = 19; -pub const IPV6_ADD_MEMBERSHIP: u32 = 20; -pub const IPV6_DROP_MEMBERSHIP: u32 = 21; -pub const IPV6_ROUTER_ALERT: u32 = 22; -pub const IPV6_MTU_DISCOVER: u32 = 23; -pub const IPV6_MTU: u32 = 24; -pub const IPV6_RECVERR: u32 = 25; -pub const IPV6_V6ONLY: u32 = 26; -pub const IPV6_JOIN_ANYCAST: u32 = 27; -pub const IPV6_LEAVE_ANYCAST: u32 = 28; -pub const IPV6_MULTICAST_ALL: u32 = 29; -pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; -pub const IPV6_RECVERR_RFC4884: u32 = 31; -pub const IPV6_PMTUDISC_DONT: u32 = 0; -pub const IPV6_PMTUDISC_WANT: u32 = 1; -pub const IPV6_PMTUDISC_DO: u32 = 2; -pub const IPV6_PMTUDISC_PROBE: u32 = 3; -pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; -pub const IPV6_PMTUDISC_OMIT: u32 = 5; -pub const IPV6_FLOWLABEL_MGR: u32 = 32; -pub const IPV6_FLOWINFO_SEND: u32 = 33; -pub const IPV6_IPSEC_POLICY: u32 = 34; -pub const IPV6_XFRM_POLICY: u32 = 35; -pub const IPV6_HDRINCL: u32 = 36; -pub const IPV6_RECVPKTINFO: u32 = 49; -pub const IPV6_PKTINFO: u32 = 50; -pub const IPV6_RECVHOPLIMIT: u32 = 51; -pub const IPV6_HOPLIMIT: u32 = 52; -pub const IPV6_RECVHOPOPTS: u32 = 53; -pub const IPV6_HOPOPTS: u32 = 54; -pub const IPV6_RTHDRDSTOPTS: u32 = 55; -pub const IPV6_RECVRTHDR: u32 = 56; -pub const IPV6_RTHDR: u32 = 57; -pub const IPV6_RECVDSTOPTS: u32 = 58; -pub const IPV6_DSTOPTS: u32 = 59; -pub const IPV6_RECVPATHMTU: u32 = 60; -pub const IPV6_PATHMTU: u32 = 61; -pub const IPV6_DONTFRAG: u32 = 62; -pub const IPV6_RECVTCLASS: u32 = 66; -pub const IPV6_TCLASS: u32 = 67; -pub const IPV6_AUTOFLOWLABEL: u32 = 70; -pub const IPV6_ADDR_PREFERENCES: u32 = 72; -pub const IPV6_PREFER_SRC_TMP: u32 = 1; -pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; -pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; -pub const IPV6_PREFER_SRC_COA: u32 = 4; -pub const IPV6_PREFER_SRC_HOME: u32 = 1024; -pub const IPV6_PREFER_SRC_CGA: u32 = 8; -pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; -pub const IPV6_MINHOPCOUNT: u32 = 73; -pub const IPV6_ORIGDSTADDR: u32 = 74; -pub const IPV6_RECVORIGDSTADDR: u32 = 74; -pub const IPV6_TRANSPARENT: u32 = 75; -pub const IPV6_UNICAST_IF: u32 = 76; -pub const IPV6_RECVFRAGSIZE: u32 = 77; -pub const IPV6_FREEBIND: u32 = 78; -pub const IPV6_MIN_MTU: u32 = 1280; -pub const IPV6_SRCRT_STRICT: u32 = 1; -pub const IPV6_SRCRT_TYPE_0: u32 = 0; -pub const IPV6_SRCRT_TYPE_2: u32 = 2; -pub const IPV6_SRCRT_TYPE_3: u32 = 3; -pub const IPV6_SRCRT_TYPE_4: u32 = 4; -pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; -pub const ADFS_SUPER_MAGIC: u32 = 44533; -pub const AFFS_SUPER_MAGIC: u32 = 44543; -pub const AFS_SUPER_MAGIC: u32 = 1397113167; -pub const AUTOFS_SUPER_MAGIC: u32 = 391; -pub const CEPH_SUPER_MAGIC: u32 = 12805120; -pub const CODA_SUPER_MAGIC: u32 = 1937076805; -pub const CRAMFS_MAGIC: u32 = 684539205; -pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; -pub const DEBUGFS_MAGIC: u32 = 1684170528; -pub const SECURITYFS_MAGIC: u32 = 1935894131; -pub const SELINUX_MAGIC: u32 = 4185718668; -pub const SMACK_MAGIC: u32 = 1128357203; -pub const RAMFS_MAGIC: u32 = 2240043254; -pub const TMPFS_MAGIC: u32 = 16914836; -pub const HUGETLBFS_MAGIC: u32 = 2508478710; -pub const SQUASHFS_MAGIC: u32 = 1936814952; -pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; -pub const EFS_SUPER_MAGIC: u32 = 4278867; -pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; -pub const EXT2_SUPER_MAGIC: u32 = 61267; -pub const EXT3_SUPER_MAGIC: u32 = 61267; -pub const XENFS_SUPER_MAGIC: u32 = 2881100148; -pub const EXT4_SUPER_MAGIC: u32 = 61267; -pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; -pub const NILFS_SUPER_MAGIC: u32 = 13364; -pub const F2FS_SUPER_MAGIC: u32 = 4076150800; -pub const HPFS_SUPER_MAGIC: u32 = 4187351113; -pub const ISOFS_SUPER_MAGIC: u32 = 38496; -pub const JFFS2_SUPER_MAGIC: u32 = 29366; -pub const XFS_SUPER_MAGIC: u32 = 1481003842; -pub const PSTOREFS_MAGIC: u32 = 1634035564; -pub const EFIVARFS_MAGIC: u32 = 3730735588; -pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; -pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; -pub const FUSE_SUPER_MAGIC: u32 = 1702057286; -pub const MINIX_SUPER_MAGIC: u32 = 4991; -pub const MINIX_SUPER_MAGIC2: u32 = 5007; -pub const MINIX2_SUPER_MAGIC: u32 = 9320; -pub const MINIX2_SUPER_MAGIC2: u32 = 9336; -pub const MINIX3_SUPER_MAGIC: u32 = 19802; -pub const MSDOS_SUPER_MAGIC: u32 = 19780; -pub const EXFAT_SUPER_MAGIC: u32 = 538032816; -pub const NCP_SUPER_MAGIC: u32 = 22092; -pub const NFS_SUPER_MAGIC: u32 = 26985; -pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; -pub const OPENPROM_SUPER_MAGIC: u32 = 40865; -pub const QNX4_SUPER_MAGIC: u32 = 47; -pub const QNX6_SUPER_MAGIC: u32 = 1746473250; -pub const AFS_FS_MAGIC: u32 = 1799439955; -pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; -pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0"; -pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0"; -pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0"; -pub const SMB_SUPER_MAGIC: u32 = 20859; -pub const CIFS_SUPER_MAGIC: u32 = 4283649346; -pub const SMB2_SUPER_MAGIC: u32 = 4266872130; -pub const CGROUP_SUPER_MAGIC: u32 = 2613483; -pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; -pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; -pub const STACK_END_MAGIC: u32 = 1470918301; -pub const TRACEFS_MAGIC: u32 = 1953653091; -pub const V9FS_MAGIC: u32 = 16914839; -pub const BDEVFS_MAGIC: u32 = 1650746742; -pub const DAXFS_MAGIC: u32 = 1684300152; -pub const BINFMTFS_MAGIC: u32 = 1112100429; -pub const DEVPTS_SUPER_MAGIC: u32 = 7377; -pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; -pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; -pub const PIPEFS_MAGIC: u32 = 1346981957; -pub const PROC_SUPER_MAGIC: u32 = 40864; -pub const SOCKFS_MAGIC: u32 = 1397703499; -pub const SYSFS_MAGIC: u32 = 1650812274; -pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; -pub const MTD_INODE_FS_MAGIC: u32 = 288389204; -pub const ANON_INODE_FS_MAGIC: u32 = 151263540; -pub const BTRFS_TEST_MAGIC: u32 = 1936880249; -pub const NSFS_MAGIC: u32 = 1853056627; -pub const BPF_FS_MAGIC: u32 = 3405662737; -pub const AAFS_MAGIC: u32 = 1513908720; -pub const ZONEFS_MAGIC: u32 = 1515144787; -pub const UDF_SUPER_MAGIC: u32 = 352400198; -pub const DMA_BUF_MAGIC: u32 = 1145913666; -pub const DEVMEM_MAGIC: u32 = 1162691661; -pub const SECRETMEM_MAGIC: u32 = 1397048141; -pub const PROT_READ: u32 = 1; -pub const PROT_WRITE: u32 = 2; -pub const PROT_EXEC: u32 = 4; -pub const PROT_SEM: u32 = 8; -pub const PROT_NONE: u32 = 0; -pub const PROT_GROWSDOWN: u32 = 16777216; -pub const PROT_GROWSUP: u32 = 33554432; -pub const MAP_TYPE: u32 = 15; -pub const MAP_FIXED: u32 = 16; -pub const MAP_ANONYMOUS: u32 = 32; -pub const MAP_POPULATE: u32 = 32768; -pub const MAP_NONBLOCK: u32 = 65536; -pub const MAP_STACK: u32 = 131072; -pub const MAP_HUGETLB: u32 = 262144; -pub const MAP_SYNC: u32 = 524288; -pub const MAP_FIXED_NOREPLACE: u32 = 1048576; -pub const MAP_UNINITIALIZED: u32 = 67108864; -pub const MLOCK_ONFAULT: u32 = 1; -pub const MS_ASYNC: u32 = 1; -pub const MS_INVALIDATE: u32 = 2; -pub const MS_SYNC: u32 = 4; -pub const MADV_NORMAL: u32 = 0; -pub const MADV_RANDOM: u32 = 1; -pub const MADV_SEQUENTIAL: u32 = 2; -pub const MADV_WILLNEED: u32 = 3; -pub const MADV_DONTNEED: u32 = 4; -pub const MADV_FREE: u32 = 8; -pub const MADV_REMOVE: u32 = 9; -pub const MADV_DONTFORK: u32 = 10; -pub const MADV_DOFORK: u32 = 11; -pub const MADV_HWPOISON: u32 = 100; -pub const MADV_SOFT_OFFLINE: u32 = 101; -pub const MADV_MERGEABLE: u32 = 12; -pub const MADV_UNMERGEABLE: u32 = 13; -pub const MADV_HUGEPAGE: u32 = 14; -pub const MADV_NOHUGEPAGE: u32 = 15; -pub const MADV_DONTDUMP: u32 = 16; -pub const MADV_DODUMP: u32 = 17; -pub const MADV_WIPEONFORK: u32 = 18; -pub const MADV_KEEPONFORK: u32 = 19; -pub const MADV_COLD: u32 = 20; -pub const MADV_PAGEOUT: u32 = 21; -pub const MADV_POPULATE_READ: u32 = 22; -pub const MADV_POPULATE_WRITE: u32 = 23; -pub const MADV_DONTNEED_LOCKED: u32 = 24; -pub const MADV_COLLAPSE: u32 = 25; -pub const MAP_FILE: u32 = 0; -pub const PKEY_DISABLE_ACCESS: u32 = 1; -pub const PKEY_DISABLE_WRITE: u32 = 2; -pub const PKEY_ACCESS_MASK: u32 = 3; -pub const MAP_GROWSDOWN: u32 = 256; -pub const MAP_DENYWRITE: u32 = 2048; -pub const MAP_EXECUTABLE: u32 = 4096; -pub const MAP_LOCKED: u32 = 8192; -pub const MAP_NORESERVE: u32 = 16384; -pub const MCL_CURRENT: u32 = 1; -pub const MCL_FUTURE: u32 = 2; -pub const MCL_ONFAULT: u32 = 4; -pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; -pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; -pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; -pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; -pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; -pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; -pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; -pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; -pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; -pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; -pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; -pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; -pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; -pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; -pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; -pub const MREMAP_MAYMOVE: u32 = 1; -pub const MREMAP_FIXED: u32 = 2; -pub const MREMAP_DONTUNMAP: u32 = 4; -pub const OVERCOMMIT_GUESS: u32 = 0; -pub const OVERCOMMIT_ALWAYS: u32 = 1; -pub const OVERCOMMIT_NEVER: u32 = 2; -pub const MAP_SHARED: u32 = 1; -pub const MAP_PRIVATE: u32 = 2; -pub const MAP_SHARED_VALIDATE: u32 = 3; -pub const MAP_HUGE_SHIFT: u32 = 26; -pub const MAP_HUGE_MASK: u32 = 63; -pub const MAP_HUGE_16KB: u32 = 939524096; -pub const MAP_HUGE_64KB: u32 = 1073741824; -pub const MAP_HUGE_512KB: u32 = 1275068416; -pub const MAP_HUGE_1MB: u32 = 1342177280; -pub const MAP_HUGE_2MB: u32 = 1409286144; -pub const MAP_HUGE_8MB: u32 = 1543503872; -pub const MAP_HUGE_16MB: u32 = 1610612736; -pub const MAP_HUGE_32MB: u32 = 1677721600; -pub const MAP_HUGE_256MB: u32 = 1879048192; -pub const MAP_HUGE_512MB: u32 = 1946157056; -pub const MAP_HUGE_1GB: u32 = 2013265920; -pub const MAP_HUGE_2GB: u32 = 2080374784; -pub const MAP_HUGE_16GB: u32 = 2281701376; -pub const SIOCGSTAMP_OLD: u32 = 35078; -pub const SIOCGSTAMPNS_OLD: u32 = 35079; -pub const SOL_SOCKET: u32 = 1; -pub const SO_DEBUG: u32 = 1; -pub const SO_REUSEADDR: u32 = 2; -pub const SO_TYPE: u32 = 3; -pub const SO_ERROR: u32 = 4; -pub const SO_DONTROUTE: u32 = 5; -pub const SO_BROADCAST: u32 = 6; -pub const SO_SNDBUF: u32 = 7; -pub const SO_RCVBUF: u32 = 8; -pub const SO_SNDBUFFORCE: u32 = 32; -pub const SO_RCVBUFFORCE: u32 = 33; -pub const SO_KEEPALIVE: u32 = 9; -pub const SO_OOBINLINE: u32 = 10; -pub const SO_NO_CHECK: u32 = 11; -pub const SO_PRIORITY: u32 = 12; -pub const SO_LINGER: u32 = 13; -pub const SO_BSDCOMPAT: u32 = 14; -pub const SO_REUSEPORT: u32 = 15; -pub const SO_PASSCRED: u32 = 16; -pub const SO_PEERCRED: u32 = 17; -pub const SO_RCVLOWAT: u32 = 18; -pub const SO_SNDLOWAT: u32 = 19; -pub const SO_RCVTIMEO_OLD: u32 = 20; -pub const SO_SNDTIMEO_OLD: u32 = 21; -pub const SO_SECURITY_AUTHENTICATION: u32 = 22; -pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; -pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; -pub const SO_BINDTODEVICE: u32 = 25; -pub const SO_ATTACH_FILTER: u32 = 26; -pub const SO_DETACH_FILTER: u32 = 27; -pub const SO_GET_FILTER: u32 = 26; -pub const SO_PEERNAME: u32 = 28; -pub const SO_ACCEPTCONN: u32 = 30; -pub const SO_PEERSEC: u32 = 31; -pub const SO_PASSSEC: u32 = 34; -pub const SO_MARK: u32 = 36; -pub const SO_PROTOCOL: u32 = 38; -pub const SO_DOMAIN: u32 = 39; -pub const SO_RXQ_OVFL: u32 = 40; -pub const SO_WIFI_STATUS: u32 = 41; -pub const SCM_WIFI_STATUS: u32 = 41; -pub const SO_PEEK_OFF: u32 = 42; -pub const SO_NOFCS: u32 = 43; -pub const SO_LOCK_FILTER: u32 = 44; -pub const SO_SELECT_ERR_QUEUE: u32 = 45; -pub const SO_BUSY_POLL: u32 = 46; -pub const SO_MAX_PACING_RATE: u32 = 47; -pub const SO_BPF_EXTENSIONS: u32 = 48; -pub const SO_INCOMING_CPU: u32 = 49; -pub const SO_ATTACH_BPF: u32 = 50; -pub const SO_DETACH_BPF: u32 = 27; -pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; -pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; -pub const SO_CNX_ADVICE: u32 = 53; -pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; -pub const SO_MEMINFO: u32 = 55; -pub const SO_INCOMING_NAPI_ID: u32 = 56; -pub const SO_COOKIE: u32 = 57; -pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; -pub const SO_PEERGROUPS: u32 = 59; -pub const SO_ZEROCOPY: u32 = 60; -pub const SO_TXTIME: u32 = 61; -pub const SCM_TXTIME: u32 = 61; -pub const SO_BINDTOIFINDEX: u32 = 62; -pub const SO_TIMESTAMP_OLD: u32 = 29; -pub const SO_TIMESTAMPNS_OLD: u32 = 35; -pub const SO_TIMESTAMPING_OLD: u32 = 37; -pub const SO_TIMESTAMP_NEW: u32 = 63; -pub const SO_TIMESTAMPNS_NEW: u32 = 64; -pub const SO_TIMESTAMPING_NEW: u32 = 65; -pub const SO_RCVTIMEO_NEW: u32 = 66; -pub const SO_SNDTIMEO_NEW: u32 = 67; -pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; -pub const SO_PREFER_BUSY_POLL: u32 = 69; -pub const SO_BUSY_POLL_BUDGET: u32 = 70; -pub const SO_NETNS_COOKIE: u32 = 71; -pub const SO_BUF_LOCK: u32 = 72; -pub const SO_RESERVE_MEM: u32 = 73; -pub const SO_TXREHASH: u32 = 74; -pub const SO_RCVMARK: u32 = 75; -pub const SO_TIMESTAMP: u32 = 29; -pub const SO_TIMESTAMPNS: u32 = 35; -pub const SO_TIMESTAMPING: u32 = 37; -pub const SO_RCVTIMEO: u32 = 20; -pub const SO_SNDTIMEO: u32 = 21; -pub const SCM_TIMESTAMP: u32 = 29; -pub const SCM_TIMESTAMPNS: u32 = 35; -pub const SCM_TIMESTAMPING: u32 = 37; -pub const SYS_SOCKET: u32 = 1; -pub const SYS_BIND: u32 = 2; -pub const SYS_CONNECT: u32 = 3; -pub const SYS_LISTEN: u32 = 4; -pub const SYS_ACCEPT: u32 = 5; -pub const SYS_GETSOCKNAME: u32 = 6; -pub const SYS_GETPEERNAME: u32 = 7; -pub const SYS_SOCKETPAIR: u32 = 8; -pub const SYS_SEND: u32 = 9; -pub const SYS_RECV: u32 = 10; -pub const SYS_SENDTO: u32 = 11; -pub const SYS_RECVFROM: u32 = 12; -pub const SYS_SHUTDOWN: u32 = 13; -pub const SYS_SETSOCKOPT: u32 = 14; -pub const SYS_GETSOCKOPT: u32 = 15; -pub const SYS_SENDMSG: u32 = 16; -pub const SYS_RECVMSG: u32 = 17; -pub const SYS_ACCEPT4: u32 = 18; -pub const SYS_RECVMMSG: u32 = 19; -pub const SYS_SENDMMSG: u32 = 20; -pub const __SO_ACCEPTCON: u32 = 65536; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const POLLWRNORM: u32 = 256; -pub const POLLWRBAND: u32 = 512; -pub const POLLMSG: u32 = 1024; -pub const POLLREMOVE: u32 = 4096; -pub const POLLRDHUP: u32 = 8192; -pub const PR_SET_PDEATHSIG: u32 = 1; -pub const PR_GET_PDEATHSIG: u32 = 2; -pub const PR_GET_DUMPABLE: u32 = 3; -pub const PR_SET_DUMPABLE: u32 = 4; -pub const PR_GET_UNALIGN: u32 = 5; -pub const PR_SET_UNALIGN: u32 = 6; -pub const PR_UNALIGN_NOPRINT: u32 = 1; -pub const PR_UNALIGN_SIGBUS: u32 = 2; -pub const PR_GET_KEEPCAPS: u32 = 7; -pub const PR_SET_KEEPCAPS: u32 = 8; -pub const PR_GET_FPEMU: u32 = 9; -pub const PR_SET_FPEMU: u32 = 10; -pub const PR_FPEMU_NOPRINT: u32 = 1; -pub const PR_FPEMU_SIGFPE: u32 = 2; -pub const PR_GET_FPEXC: u32 = 11; -pub const PR_SET_FPEXC: u32 = 12; -pub const PR_FP_EXC_SW_ENABLE: u32 = 128; -pub const PR_FP_EXC_DIV: u32 = 65536; -pub const PR_FP_EXC_OVF: u32 = 131072; -pub const PR_FP_EXC_UND: u32 = 262144; -pub const PR_FP_EXC_RES: u32 = 524288; -pub const PR_FP_EXC_INV: u32 = 1048576; -pub const PR_FP_EXC_DISABLED: u32 = 0; -pub const PR_FP_EXC_NONRECOV: u32 = 1; -pub const PR_FP_EXC_ASYNC: u32 = 2; -pub const PR_FP_EXC_PRECISE: u32 = 3; -pub const PR_GET_TIMING: u32 = 13; -pub const PR_SET_TIMING: u32 = 14; -pub const PR_TIMING_STATISTICAL: u32 = 0; -pub const PR_TIMING_TIMESTAMP: u32 = 1; -pub const PR_SET_NAME: u32 = 15; -pub const PR_GET_NAME: u32 = 16; -pub const PR_GET_ENDIAN: u32 = 19; -pub const PR_SET_ENDIAN: u32 = 20; -pub const PR_ENDIAN_BIG: u32 = 0; -pub const PR_ENDIAN_LITTLE: u32 = 1; -pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; -pub const PR_GET_SECCOMP: u32 = 21; -pub const PR_SET_SECCOMP: u32 = 22; -pub const PR_CAPBSET_READ: u32 = 23; -pub const PR_CAPBSET_DROP: u32 = 24; -pub const PR_GET_TSC: u32 = 25; -pub const PR_SET_TSC: u32 = 26; -pub const PR_TSC_ENABLE: u32 = 1; -pub const PR_TSC_SIGSEGV: u32 = 2; -pub const PR_GET_SECUREBITS: u32 = 27; -pub const PR_SET_SECUREBITS: u32 = 28; -pub const PR_SET_TIMERSLACK: u32 = 29; -pub const PR_GET_TIMERSLACK: u32 = 30; -pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; -pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; -pub const PR_MCE_KILL: u32 = 33; -pub const PR_MCE_KILL_CLEAR: u32 = 0; -pub const PR_MCE_KILL_SET: u32 = 1; -pub const PR_MCE_KILL_LATE: u32 = 0; -pub const PR_MCE_KILL_EARLY: u32 = 1; -pub const PR_MCE_KILL_DEFAULT: u32 = 2; -pub const PR_MCE_KILL_GET: u32 = 34; -pub const PR_SET_MM: u32 = 35; -pub const PR_SET_MM_START_CODE: u32 = 1; -pub const PR_SET_MM_END_CODE: u32 = 2; -pub const PR_SET_MM_START_DATA: u32 = 3; -pub const PR_SET_MM_END_DATA: u32 = 4; -pub const PR_SET_MM_START_STACK: u32 = 5; -pub const PR_SET_MM_START_BRK: u32 = 6; -pub const PR_SET_MM_BRK: u32 = 7; -pub const PR_SET_MM_ARG_START: u32 = 8; -pub const PR_SET_MM_ARG_END: u32 = 9; -pub const PR_SET_MM_ENV_START: u32 = 10; -pub const PR_SET_MM_ENV_END: u32 = 11; -pub const PR_SET_MM_AUXV: u32 = 12; -pub const PR_SET_MM_EXE_FILE: u32 = 13; -pub const PR_SET_MM_MAP: u32 = 14; -pub const PR_SET_MM_MAP_SIZE: u32 = 15; -pub const PR_SET_PTRACER: u32 = 1499557217; -pub const PR_SET_CHILD_SUBREAPER: u32 = 36; -pub const PR_GET_CHILD_SUBREAPER: u32 = 37; -pub const PR_SET_NO_NEW_PRIVS: u32 = 38; -pub const PR_GET_NO_NEW_PRIVS: u32 = 39; -pub const PR_GET_TID_ADDRESS: u32 = 40; -pub const PR_SET_THP_DISABLE: u32 = 41; -pub const PR_GET_THP_DISABLE: u32 = 42; -pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; -pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; -pub const PR_SET_FP_MODE: u32 = 45; -pub const PR_GET_FP_MODE: u32 = 46; -pub const PR_FP_MODE_FR: u32 = 1; -pub const PR_FP_MODE_FRE: u32 = 2; -pub const PR_CAP_AMBIENT: u32 = 47; -pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; -pub const PR_CAP_AMBIENT_RAISE: u32 = 2; -pub const PR_CAP_AMBIENT_LOWER: u32 = 3; -pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; -pub const PR_SVE_SET_VL: u32 = 50; -pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SVE_GET_VL: u32 = 51; -pub const PR_SVE_VL_LEN_MASK: u32 = 65535; -pub const PR_SVE_VL_INHERIT: u32 = 131072; -pub const PR_GET_SPECULATION_CTRL: u32 = 52; -pub const PR_SET_SPECULATION_CTRL: u32 = 53; -pub const PR_SPEC_STORE_BYPASS: u32 = 0; -pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; -pub const PR_SPEC_L1D_FLUSH: u32 = 2; -pub const PR_SPEC_NOT_AFFECTED: u32 = 0; -pub const PR_SPEC_PRCTL: u32 = 1; -pub const PR_SPEC_ENABLE: u32 = 2; -pub const PR_SPEC_DISABLE: u32 = 4; -pub const PR_SPEC_FORCE_DISABLE: u32 = 8; -pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; -pub const PR_PAC_RESET_KEYS: u32 = 54; -pub const PR_PAC_APIAKEY: u32 = 1; -pub const PR_PAC_APIBKEY: u32 = 2; -pub const PR_PAC_APDAKEY: u32 = 4; -pub const PR_PAC_APDBKEY: u32 = 8; -pub const PR_PAC_APGAKEY: u32 = 16; -pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; -pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; -pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; -pub const PR_MTE_TCF_NONE: u32 = 0; -pub const PR_MTE_TCF_SYNC: u32 = 2; -pub const PR_MTE_TCF_ASYNC: u32 = 4; -pub const PR_MTE_TCF_MASK: u32 = 6; -pub const PR_MTE_TAG_SHIFT: u32 = 3; -pub const PR_MTE_TAG_MASK: u32 = 524280; -pub const PR_MTE_TCF_SHIFT: u32 = 1; -pub const PR_SET_IO_FLUSHER: u32 = 57; -pub const PR_GET_IO_FLUSHER: u32 = 58; -pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; -pub const PR_SYS_DISPATCH_OFF: u32 = 0; -pub const PR_SYS_DISPATCH_ON: u32 = 1; -pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; -pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; -pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; -pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; -pub const PR_SCHED_CORE: u32 = 62; -pub const PR_SCHED_CORE_GET: u32 = 0; -pub const PR_SCHED_CORE_CREATE: u32 = 1; -pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; -pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; -pub const PR_SCHED_CORE_MAX: u32 = 4; -pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; -pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; -pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; -pub const PR_SME_SET_VL: u32 = 63; -pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SME_GET_VL: u32 = 64; -pub const PR_SME_VL_LEN_MASK: u32 = 65535; -pub const PR_SME_VL_INHERIT: u32 = 131072; -pub const PR_SET_MDWE: u32 = 65; -pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; -pub const PR_GET_MDWE: u32 = 66; -pub const PR_SET_VMA: u32 = 1398164801; -pub const PR_SET_VMA_ANON_NAME: u32 = 0; -pub const GRND_NONBLOCK: u32 = 1; -pub const GRND_RANDOM: u32 = 2; -pub const GRND_INSECURE: u32 = 4; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -pub const CLOCK_REALTIME: u32 = 0; -pub const CLOCK_MONOTONIC: u32 = 1; -pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; -pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; -pub const CLOCK_MONOTONIC_RAW: u32 = 4; -pub const CLOCK_REALTIME_COARSE: u32 = 5; -pub const CLOCK_MONOTONIC_COARSE: u32 = 6; -pub const CLOCK_BOOTTIME: u32 = 7; -pub const CLOCK_REALTIME_ALARM: u32 = 8; -pub const CLOCK_BOOTTIME_ALARM: u32 = 9; -pub const CLOCK_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const RUSAGE_SELF: u32 = 0; -pub const RUSAGE_CHILDREN: i32 = -1; -pub const RUSAGE_BOTH: i32 = -2; -pub const RUSAGE_THREAD: u32 = 1; -pub const RLIM64_INFINITY: i32 = -1; -pub const PRIO_MIN: i32 = -20; -pub const PRIO_MAX: u32 = 20; -pub const PRIO_PROCESS: u32 = 0; -pub const PRIO_PGRP: u32 = 1; -pub const PRIO_USER: u32 = 2; -pub const _STK_LIM: u32 = 8388608; -pub const MLOCK_LIMIT: u32 = 8388608; -pub const RLIMIT_CPU: u32 = 0; -pub const RLIMIT_FSIZE: u32 = 1; -pub const RLIMIT_DATA: u32 = 2; -pub const RLIMIT_STACK: u32 = 3; -pub const RLIMIT_CORE: u32 = 4; -pub const RLIMIT_RSS: u32 = 5; -pub const RLIMIT_NPROC: u32 = 6; -pub const RLIMIT_NOFILE: u32 = 7; -pub const RLIMIT_MEMLOCK: u32 = 8; -pub const RLIMIT_AS: u32 = 9; -pub const RLIMIT_LOCKS: u32 = 10; -pub const RLIMIT_SIGPENDING: u32 = 11; -pub const RLIMIT_MSGQUEUE: u32 = 12; -pub const RLIMIT_NICE: u32 = 13; -pub const RLIMIT_RTPRIO: u32 = 14; -pub const RLIMIT_RTTIME: u32 = 15; -pub const RLIM_NLIMITS: u32 = 16; -pub const RLIM_INFINITY: i32 = -1; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const _NSIG: u32 = 64; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGBUS: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGUSR1: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGUSR2: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGSTKFLT: u32 = 16; -pub const SIGCHLD: u32 = 17; -pub const SIGCONT: u32 = 18; -pub const SIGSTOP: u32 = 19; -pub const SIGTSTP: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGURG: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGIO: u32 = 29; -pub const SIGPOLL: u32 = 29; -pub const SIGPWR: u32 = 30; -pub const SIGSYS: u32 = 31; -pub const SIGUNUSED: u32 = 31; -pub const SIGRTMIN: u32 = 32; -pub const SIGRTMAX: u32 = 64; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; -pub const SA_NOCLDSTOP: u32 = 1; -pub const SA_NOCLDWAIT: u32 = 2; -pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; -pub const SA_ONSTACK: u32 = 134217728; -pub const SA_RESTART: u32 = 268435456; -pub const SA_NODEFER: u32 = 1073741824; -pub const SA_RESETHAND: u32 = 2147483648; -pub const SA_NOMASK: u32 = 1073741824; -pub const SA_ONESHOT: u32 = 2147483648; -pub const SIG_BLOCK: u32 = 0; -pub const SIG_UNBLOCK: u32 = 1; -pub const SIG_SETMASK: u32 = 2; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; -pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const S_IFMT: u32 = 61440; -pub const S_IFSOCK: u32 = 49152; -pub const S_IFLNK: u32 = 40960; -pub const S_IFREG: u32 = 32768; -pub const S_IFBLK: u32 = 24576; -pub const S_IFDIR: u32 = 16384; -pub const S_IFCHR: u32 = 8192; -pub const S_IFIFO: u32 = 4096; -pub const S_ISUID: u32 = 2048; -pub const S_ISGID: u32 = 1024; -pub const S_ISVTX: u32 = 512; -pub const S_IRWXU: u32 = 448; -pub const S_IRUSR: u32 = 256; -pub const S_IWUSR: u32 = 128; -pub const S_IXUSR: u32 = 64; -pub const S_IRWXG: u32 = 56; -pub const S_IRGRP: u32 = 32; -pub const S_IWGRP: u32 = 16; -pub const S_IXGRP: u32 = 8; -pub const S_IRWXO: u32 = 7; -pub const S_IROTH: u32 = 4; -pub const S_IWOTH: u32 = 2; -pub const S_IXOTH: u32 = 1; -pub const STATX_TYPE: u32 = 1; -pub const STATX_MODE: u32 = 2; -pub const STATX_NLINK: u32 = 4; -pub const STATX_UID: u32 = 8; -pub const STATX_GID: u32 = 16; -pub const STATX_ATIME: u32 = 32; -pub const STATX_MTIME: u32 = 64; -pub const STATX_CTIME: u32 = 128; -pub const STATX_INO: u32 = 256; -pub const STATX_SIZE: u32 = 512; -pub const STATX_BLOCKS: u32 = 1024; -pub const STATX_BASIC_STATS: u32 = 2047; -pub const STATX_BTIME: u32 = 2048; -pub const STATX_MNT_ID: u32 = 4096; -pub const STATX_DIOALIGN: u32 = 8192; -pub const STATX__RESERVED: u32 = 2147483648; -pub const STATX_ALL: u32 = 4095; -pub const STATX_ATTR_COMPRESSED: u32 = 4; -pub const STATX_ATTR_IMMUTABLE: u32 = 16; -pub const STATX_ATTR_APPEND: u32 = 32; -pub const STATX_ATTR_NODUMP: u32 = 64; -pub const STATX_ATTR_ENCRYPTED: u32 = 2048; -pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; -pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; -pub const STATX_ATTR_VERITY: u32 = 1048576; -pub const STATX_ATTR_DAX: u32 = 2097152; -pub const SI_LOAD_SHIFT: u32 = 16; -pub const TCP_MSS_DEFAULT: u32 = 536; -pub const TCP_MSS_DESIRED: u32 = 1220; -pub const TCP_NODELAY: u32 = 1; -pub const TCP_MAXSEG: u32 = 2; -pub const TCP_CORK: u32 = 3; -pub const TCP_KEEPIDLE: u32 = 4; -pub const TCP_KEEPINTVL: u32 = 5; -pub const TCP_KEEPCNT: u32 = 6; -pub const TCP_SYNCNT: u32 = 7; -pub const TCP_LINGER2: u32 = 8; -pub const TCP_DEFER_ACCEPT: u32 = 9; -pub const TCP_WINDOW_CLAMP: u32 = 10; -pub const TCP_INFO: u32 = 11; -pub const TCP_QUICKACK: u32 = 12; -pub const TCP_CONGESTION: u32 = 13; -pub const TCP_MD5SIG: u32 = 14; -pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; -pub const TCP_THIN_DUPACK: u32 = 17; -pub const TCP_USER_TIMEOUT: u32 = 18; -pub const TCP_REPAIR: u32 = 19; -pub const TCP_REPAIR_QUEUE: u32 = 20; -pub const TCP_QUEUE_SEQ: u32 = 21; -pub const TCP_REPAIR_OPTIONS: u32 = 22; -pub const TCP_FASTOPEN: u32 = 23; -pub const TCP_TIMESTAMP: u32 = 24; -pub const TCP_NOTSENT_LOWAT: u32 = 25; -pub const TCP_CC_INFO: u32 = 26; -pub const TCP_SAVE_SYN: u32 = 27; -pub const TCP_SAVED_SYN: u32 = 28; -pub const TCP_REPAIR_WINDOW: u32 = 29; -pub const TCP_FASTOPEN_CONNECT: u32 = 30; -pub const TCP_ULP: u32 = 31; -pub const TCP_MD5SIG_EXT: u32 = 32; -pub const TCP_FASTOPEN_KEY: u32 = 33; -pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; -pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; -pub const TCP_INQ: u32 = 36; -pub const TCP_CM_INQ: u32 = 36; -pub const TCP_TX_DELAY: u32 = 37; -pub const TCP_REPAIR_ON: u32 = 1; -pub const TCP_REPAIR_OFF: u32 = 0; -pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; -pub const TCPI_OPT_TIMESTAMPS: u32 = 1; -pub const TCPI_OPT_SACK: u32 = 2; -pub const TCPI_OPT_WSCALE: u32 = 4; -pub const TCPI_OPT_ECN: u32 = 8; -pub const TCPI_OPT_ECN_SEEN: u32 = 16; -pub const TCPI_OPT_SYN_DATA: u32 = 32; -pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; -pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; -pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; -pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; -pub const IGNBRK: u32 = 1; -pub const BRKINT: u32 = 2; -pub const IGNPAR: u32 = 4; -pub const PARMRK: u32 = 8; -pub const INPCK: u32 = 16; -pub const ISTRIP: u32 = 32; -pub const INLCR: u32 = 64; -pub const IGNCR: u32 = 128; -pub const ICRNL: u32 = 256; -pub const IXANY: u32 = 2048; -pub const OPOST: u32 = 1; -pub const OCRNL: u32 = 8; -pub const ONOCR: u32 = 16; -pub const ONLRET: u32 = 32; -pub const OFILL: u32 = 64; -pub const OFDEL: u32 = 128; -pub const B0: u32 = 0; -pub const B50: u32 = 1; -pub const B75: u32 = 2; -pub const B110: u32 = 3; -pub const B134: u32 = 4; -pub const B150: u32 = 5; -pub const B200: u32 = 6; -pub const B300: u32 = 7; -pub const B600: u32 = 8; -pub const B1200: u32 = 9; -pub const B1800: u32 = 10; -pub const B2400: u32 = 11; -pub const B4800: u32 = 12; -pub const B9600: u32 = 13; -pub const B19200: u32 = 14; -pub const B38400: u32 = 15; -pub const EXTA: u32 = 14; -pub const EXTB: u32 = 15; -pub const ADDRB: u32 = 536870912; -pub const CMSPAR: u32 = 1073741824; -pub const CRTSCTS: u32 = 2147483648; -pub const IBSHIFT: u32 = 16; -pub const TCOOFF: u32 = 0; -pub const TCOON: u32 = 1; -pub const TCIOFF: u32 = 2; -pub const TCION: u32 = 3; -pub const TCIFLUSH: u32 = 0; -pub const TCOFLUSH: u32 = 1; -pub const TCIOFLUSH: u32 = 2; -pub const NCCS: u32 = 19; -pub const VINTR: u32 = 0; -pub const VQUIT: u32 = 1; -pub const VERASE: u32 = 2; -pub const VKILL: u32 = 3; -pub const VEOF: u32 = 4; -pub const VTIME: u32 = 5; -pub const VMIN: u32 = 6; -pub const VSWTC: u32 = 7; -pub const VSTART: u32 = 8; -pub const VSTOP: u32 = 9; -pub const VSUSP: u32 = 10; -pub const VEOL: u32 = 11; -pub const VREPRINT: u32 = 12; -pub const VDISCARD: u32 = 13; -pub const VWERASE: u32 = 14; -pub const VLNEXT: u32 = 15; -pub const VEOL2: u32 = 16; -pub const IUCLC: u32 = 512; -pub const IXON: u32 = 1024; -pub const IXOFF: u32 = 4096; -pub const IMAXBEL: u32 = 8192; -pub const IUTF8: u32 = 16384; -pub const OLCUC: u32 = 2; -pub const ONLCR: u32 = 4; -pub const NLDLY: u32 = 256; -pub const NL0: u32 = 0; -pub const NL1: u32 = 256; -pub const CRDLY: u32 = 1536; -pub const CR0: u32 = 0; -pub const CR1: u32 = 512; -pub const CR2: u32 = 1024; -pub const CR3: u32 = 1536; -pub const TABDLY: u32 = 6144; -pub const TAB0: u32 = 0; -pub const TAB1: u32 = 2048; -pub const TAB2: u32 = 4096; -pub const TAB3: u32 = 6144; -pub const XTABS: u32 = 6144; -pub const BSDLY: u32 = 8192; -pub const BS0: u32 = 0; -pub const BS1: u32 = 8192; -pub const VTDLY: u32 = 16384; -pub const VT0: u32 = 0; -pub const VT1: u32 = 16384; -pub const FFDLY: u32 = 32768; -pub const FF0: u32 = 0; -pub const FF1: u32 = 32768; -pub const CBAUD: u32 = 4111; -pub const CSIZE: u32 = 48; -pub const CS5: u32 = 0; -pub const CS6: u32 = 16; -pub const CS7: u32 = 32; -pub const CS8: u32 = 48; -pub const CSTOPB: u32 = 64; -pub const CREAD: u32 = 128; -pub const PARENB: u32 = 256; -pub const PARODD: u32 = 512; -pub const HUPCL: u32 = 1024; -pub const CLOCAL: u32 = 2048; -pub const CBAUDEX: u32 = 4096; -pub const BOTHER: u32 = 4096; -pub const B57600: u32 = 4097; -pub const B115200: u32 = 4098; -pub const B230400: u32 = 4099; -pub const B460800: u32 = 4100; -pub const B500000: u32 = 4101; -pub const B576000: u32 = 4102; -pub const B921600: u32 = 4103; -pub const B1000000: u32 = 4104; -pub const B1152000: u32 = 4105; -pub const B1500000: u32 = 4106; -pub const B2000000: u32 = 4107; -pub const B2500000: u32 = 4108; -pub const B3000000: u32 = 4109; -pub const B3500000: u32 = 4110; -pub const B4000000: u32 = 4111; -pub const CIBAUD: u32 = 269418496; -pub const ISIG: u32 = 1; -pub const ICANON: u32 = 2; -pub const XCASE: u32 = 4; -pub const ECHO: u32 = 8; -pub const ECHOE: u32 = 16; -pub const ECHOK: u32 = 32; -pub const ECHONL: u32 = 64; -pub const NOFLSH: u32 = 128; -pub const TOSTOP: u32 = 256; -pub const ECHOCTL: u32 = 512; -pub const ECHOPRT: u32 = 1024; -pub const ECHOKE: u32 = 2048; -pub const FLUSHO: u32 = 4096; -pub const PENDIN: u32 = 16384; -pub const IEXTEN: u32 = 32768; -pub const EXTPROC: u32 = 65536; -pub const TCSANOW: u32 = 0; -pub const TCSADRAIN: u32 = 1; -pub const TCSAFLUSH: u32 = 2; -pub const TIOCPKT_DATA: u32 = 0; -pub const TIOCPKT_FLUSHREAD: u32 = 1; -pub const TIOCPKT_FLUSHWRITE: u32 = 2; -pub const TIOCPKT_STOP: u32 = 4; -pub const TIOCPKT_START: u32 = 8; -pub const TIOCPKT_NOSTOP: u32 = 16; -pub const TIOCPKT_DOSTOP: u32 = 32; -pub const TIOCPKT_IOCTL: u32 = 64; -pub const TIOCSER_TEMT: u32 = 1; -pub const NCC: u32 = 8; -pub const TIOCM_LE: u32 = 1; -pub const TIOCM_DTR: u32 = 2; -pub const TIOCM_RTS: u32 = 4; -pub const TIOCM_ST: u32 = 8; -pub const TIOCM_SR: u32 = 16; -pub const TIOCM_CTS: u32 = 32; -pub const TIOCM_CAR: u32 = 64; -pub const TIOCM_RNG: u32 = 128; -pub const TIOCM_DSR: u32 = 256; -pub const TIOCM_CD: u32 = 64; -pub const TIOCM_RI: u32 = 128; -pub const TIOCM_OUT1: u32 = 8192; -pub const TIOCM_OUT2: u32 = 16384; -pub const TIOCM_LOOP: u32 = 32768; -pub const UIO_FASTIOV: u32 = 8; -pub const UIO_MAXIOV: u32 = 1024; -pub const UNIX_PATH_MAX: u32 = 108; -pub const __NR_io_setup: u32 = 0; -pub const __NR_io_destroy: u32 = 1; -pub const __NR_io_submit: u32 = 2; -pub const __NR_io_cancel: u32 = 3; -pub const __NR_io_getevents: u32 = 4; -pub const __NR_setxattr: u32 = 5; -pub const __NR_lsetxattr: u32 = 6; -pub const __NR_fsetxattr: u32 = 7; -pub const __NR_getxattr: u32 = 8; -pub const __NR_lgetxattr: u32 = 9; -pub const __NR_fgetxattr: u32 = 10; -pub const __NR_listxattr: u32 = 11; -pub const __NR_llistxattr: u32 = 12; -pub const __NR_flistxattr: u32 = 13; -pub const __NR_removexattr: u32 = 14; -pub const __NR_lremovexattr: u32 = 15; -pub const __NR_fremovexattr: u32 = 16; -pub const __NR_getcwd: u32 = 17; -pub const __NR_lookup_dcookie: u32 = 18; -pub const __NR_eventfd2: u32 = 19; -pub const __NR_epoll_create1: u32 = 20; -pub const __NR_epoll_ctl: u32 = 21; -pub const __NR_epoll_pwait: u32 = 22; -pub const __NR_dup: u32 = 23; -pub const __NR_dup3: u32 = 24; -pub const __NR3264_fcntl: u32 = 25; -pub const __NR_inotify_init1: u32 = 26; -pub const __NR_inotify_add_watch: u32 = 27; -pub const __NR_inotify_rm_watch: u32 = 28; -pub const __NR_ioctl: u32 = 29; -pub const __NR_ioprio_set: u32 = 30; -pub const __NR_ioprio_get: u32 = 31; -pub const __NR_flock: u32 = 32; -pub const __NR_mknodat: u32 = 33; -pub const __NR_mkdirat: u32 = 34; -pub const __NR_unlinkat: u32 = 35; -pub const __NR_symlinkat: u32 = 36; -pub const __NR_linkat: u32 = 37; -pub const __NR_umount2: u32 = 39; -pub const __NR_mount: u32 = 40; -pub const __NR_pivot_root: u32 = 41; -pub const __NR_nfsservctl: u32 = 42; -pub const __NR3264_statfs: u32 = 43; -pub const __NR3264_fstatfs: u32 = 44; -pub const __NR3264_truncate: u32 = 45; -pub const __NR3264_ftruncate: u32 = 46; -pub const __NR_fallocate: u32 = 47; -pub const __NR_faccessat: u32 = 48; -pub const __NR_chdir: u32 = 49; -pub const __NR_fchdir: u32 = 50; -pub const __NR_chroot: u32 = 51; -pub const __NR_fchmod: u32 = 52; -pub const __NR_fchmodat: u32 = 53; -pub const __NR_fchownat: u32 = 54; -pub const __NR_fchown: u32 = 55; -pub const __NR_openat: u32 = 56; -pub const __NR_close: u32 = 57; -pub const __NR_vhangup: u32 = 58; -pub const __NR_pipe2: u32 = 59; -pub const __NR_quotactl: u32 = 60; -pub const __NR_getdents64: u32 = 61; -pub const __NR3264_lseek: u32 = 62; -pub const __NR_read: u32 = 63; -pub const __NR_write: u32 = 64; -pub const __NR_readv: u32 = 65; -pub const __NR_writev: u32 = 66; -pub const __NR_pread64: u32 = 67; -pub const __NR_pwrite64: u32 = 68; -pub const __NR_preadv: u32 = 69; -pub const __NR_pwritev: u32 = 70; -pub const __NR3264_sendfile: u32 = 71; -pub const __NR_pselect6: u32 = 72; -pub const __NR_ppoll: u32 = 73; -pub const __NR_signalfd4: u32 = 74; -pub const __NR_vmsplice: u32 = 75; -pub const __NR_splice: u32 = 76; -pub const __NR_tee: u32 = 77; -pub const __NR_readlinkat: u32 = 78; -pub const __NR3264_fstatat: u32 = 79; -pub const __NR3264_fstat: u32 = 80; -pub const __NR_sync: u32 = 81; -pub const __NR_fsync: u32 = 82; -pub const __NR_fdatasync: u32 = 83; -pub const __NR_sync_file_range: u32 = 84; -pub const __NR_timerfd_create: u32 = 85; -pub const __NR_timerfd_settime: u32 = 86; -pub const __NR_timerfd_gettime: u32 = 87; -pub const __NR_utimensat: u32 = 88; -pub const __NR_acct: u32 = 89; -pub const __NR_capget: u32 = 90; -pub const __NR_capset: u32 = 91; -pub const __NR_personality: u32 = 92; -pub const __NR_exit: u32 = 93; -pub const __NR_exit_group: u32 = 94; -pub const __NR_waitid: u32 = 95; -pub const __NR_set_tid_address: u32 = 96; -pub const __NR_unshare: u32 = 97; -pub const __NR_futex: u32 = 98; -pub const __NR_set_robust_list: u32 = 99; -pub const __NR_get_robust_list: u32 = 100; -pub const __NR_nanosleep: u32 = 101; -pub const __NR_getitimer: u32 = 102; -pub const __NR_setitimer: u32 = 103; -pub const __NR_kexec_load: u32 = 104; -pub const __NR_init_module: u32 = 105; -pub const __NR_delete_module: u32 = 106; -pub const __NR_timer_create: u32 = 107; -pub const __NR_timer_gettime: u32 = 108; -pub const __NR_timer_getoverrun: u32 = 109; -pub const __NR_timer_settime: u32 = 110; -pub const __NR_timer_delete: u32 = 111; -pub const __NR_clock_settime: u32 = 112; -pub const __NR_clock_gettime: u32 = 113; -pub const __NR_clock_getres: u32 = 114; -pub const __NR_clock_nanosleep: u32 = 115; -pub const __NR_syslog: u32 = 116; -pub const __NR_ptrace: u32 = 117; -pub const __NR_sched_setparam: u32 = 118; -pub const __NR_sched_setscheduler: u32 = 119; -pub const __NR_sched_getscheduler: u32 = 120; -pub const __NR_sched_getparam: u32 = 121; -pub const __NR_sched_setaffinity: u32 = 122; -pub const __NR_sched_getaffinity: u32 = 123; -pub const __NR_sched_yield: u32 = 124; -pub const __NR_sched_get_priority_max: u32 = 125; -pub const __NR_sched_get_priority_min: u32 = 126; -pub const __NR_sched_rr_get_interval: u32 = 127; -pub const __NR_restart_syscall: u32 = 128; -pub const __NR_kill: u32 = 129; -pub const __NR_tkill: u32 = 130; -pub const __NR_tgkill: u32 = 131; -pub const __NR_sigaltstack: u32 = 132; -pub const __NR_rt_sigsuspend: u32 = 133; -pub const __NR_rt_sigaction: u32 = 134; -pub const __NR_rt_sigprocmask: u32 = 135; -pub const __NR_rt_sigpending: u32 = 136; -pub const __NR_rt_sigtimedwait: u32 = 137; -pub const __NR_rt_sigqueueinfo: u32 = 138; -pub const __NR_rt_sigreturn: u32 = 139; -pub const __NR_setpriority: u32 = 140; -pub const __NR_getpriority: u32 = 141; -pub const __NR_reboot: u32 = 142; -pub const __NR_setregid: u32 = 143; -pub const __NR_setgid: u32 = 144; -pub const __NR_setreuid: u32 = 145; -pub const __NR_setuid: u32 = 146; -pub const __NR_setresuid: u32 = 147; -pub const __NR_getresuid: u32 = 148; -pub const __NR_setresgid: u32 = 149; -pub const __NR_getresgid: u32 = 150; -pub const __NR_setfsuid: u32 = 151; -pub const __NR_setfsgid: u32 = 152; -pub const __NR_times: u32 = 153; -pub const __NR_setpgid: u32 = 154; -pub const __NR_getpgid: u32 = 155; -pub const __NR_getsid: u32 = 156; -pub const __NR_setsid: u32 = 157; -pub const __NR_getgroups: u32 = 158; -pub const __NR_setgroups: u32 = 159; -pub const __NR_uname: u32 = 160; -pub const __NR_sethostname: u32 = 161; -pub const __NR_setdomainname: u32 = 162; -pub const __NR_getrlimit: u32 = 163; -pub const __NR_setrlimit: u32 = 164; -pub const __NR_getrusage: u32 = 165; -pub const __NR_umask: u32 = 166; -pub const __NR_prctl: u32 = 167; -pub const __NR_getcpu: u32 = 168; -pub const __NR_gettimeofday: u32 = 169; -pub const __NR_settimeofday: u32 = 170; -pub const __NR_adjtimex: u32 = 171; -pub const __NR_getpid: u32 = 172; -pub const __NR_getppid: u32 = 173; -pub const __NR_getuid: u32 = 174; -pub const __NR_geteuid: u32 = 175; -pub const __NR_getgid: u32 = 176; -pub const __NR_getegid: u32 = 177; -pub const __NR_gettid: u32 = 178; -pub const __NR_sysinfo: u32 = 179; -pub const __NR_mq_open: u32 = 180; -pub const __NR_mq_unlink: u32 = 181; -pub const __NR_mq_timedsend: u32 = 182; -pub const __NR_mq_timedreceive: u32 = 183; -pub const __NR_mq_notify: u32 = 184; -pub const __NR_mq_getsetattr: u32 = 185; -pub const __NR_msgget: u32 = 186; -pub const __NR_msgctl: u32 = 187; -pub const __NR_msgrcv: u32 = 188; -pub const __NR_msgsnd: u32 = 189; -pub const __NR_semget: u32 = 190; -pub const __NR_semctl: u32 = 191; -pub const __NR_semtimedop: u32 = 192; -pub const __NR_semop: u32 = 193; -pub const __NR_shmget: u32 = 194; -pub const __NR_shmctl: u32 = 195; -pub const __NR_shmat: u32 = 196; -pub const __NR_shmdt: u32 = 197; -pub const __NR_socket: u32 = 198; -pub const __NR_socketpair: u32 = 199; -pub const __NR_bind: u32 = 200; -pub const __NR_listen: u32 = 201; -pub const __NR_accept: u32 = 202; -pub const __NR_connect: u32 = 203; -pub const __NR_getsockname: u32 = 204; -pub const __NR_getpeername: u32 = 205; -pub const __NR_sendto: u32 = 206; -pub const __NR_recvfrom: u32 = 207; -pub const __NR_setsockopt: u32 = 208; -pub const __NR_getsockopt: u32 = 209; -pub const __NR_shutdown: u32 = 210; -pub const __NR_sendmsg: u32 = 211; -pub const __NR_recvmsg: u32 = 212; -pub const __NR_readahead: u32 = 213; -pub const __NR_brk: u32 = 214; -pub const __NR_munmap: u32 = 215; -pub const __NR_mremap: u32 = 216; -pub const __NR_add_key: u32 = 217; -pub const __NR_request_key: u32 = 218; -pub const __NR_keyctl: u32 = 219; -pub const __NR_clone: u32 = 220; -pub const __NR_execve: u32 = 221; -pub const __NR3264_mmap: u32 = 222; -pub const __NR3264_fadvise64: u32 = 223; -pub const __NR_swapon: u32 = 224; -pub const __NR_swapoff: u32 = 225; -pub const __NR_mprotect: u32 = 226; -pub const __NR_msync: u32 = 227; -pub const __NR_mlock: u32 = 228; -pub const __NR_munlock: u32 = 229; -pub const __NR_mlockall: u32 = 230; -pub const __NR_munlockall: u32 = 231; -pub const __NR_mincore: u32 = 232; -pub const __NR_madvise: u32 = 233; -pub const __NR_remap_file_pages: u32 = 234; -pub const __NR_mbind: u32 = 235; -pub const __NR_get_mempolicy: u32 = 236; -pub const __NR_set_mempolicy: u32 = 237; -pub const __NR_migrate_pages: u32 = 238; -pub const __NR_move_pages: u32 = 239; -pub const __NR_rt_tgsigqueueinfo: u32 = 240; -pub const __NR_perf_event_open: u32 = 241; -pub const __NR_accept4: u32 = 242; -pub const __NR_recvmmsg: u32 = 243; -pub const __NR_arch_specific_syscall: u32 = 244; -pub const __NR_wait4: u32 = 260; -pub const __NR_prlimit64: u32 = 261; -pub const __NR_fanotify_init: u32 = 262; -pub const __NR_fanotify_mark: u32 = 263; -pub const __NR_name_to_handle_at: u32 = 264; -pub const __NR_open_by_handle_at: u32 = 265; -pub const __NR_clock_adjtime: u32 = 266; -pub const __NR_syncfs: u32 = 267; -pub const __NR_setns: u32 = 268; -pub const __NR_sendmmsg: u32 = 269; -pub const __NR_process_vm_readv: u32 = 270; -pub const __NR_process_vm_writev: u32 = 271; -pub const __NR_kcmp: u32 = 272; -pub const __NR_finit_module: u32 = 273; -pub const __NR_sched_setattr: u32 = 274; -pub const __NR_sched_getattr: u32 = 275; -pub const __NR_renameat2: u32 = 276; -pub const __NR_seccomp: u32 = 277; -pub const __NR_getrandom: u32 = 278; -pub const __NR_memfd_create: u32 = 279; -pub const __NR_bpf: u32 = 280; -pub const __NR_execveat: u32 = 281; -pub const __NR_userfaultfd: u32 = 282; -pub const __NR_membarrier: u32 = 283; -pub const __NR_mlock2: u32 = 284; -pub const __NR_copy_file_range: u32 = 285; -pub const __NR_preadv2: u32 = 286; -pub const __NR_pwritev2: u32 = 287; -pub const __NR_pkey_mprotect: u32 = 288; -pub const __NR_pkey_alloc: u32 = 289; -pub const __NR_pkey_free: u32 = 290; -pub const __NR_statx: u32 = 291; -pub const __NR_io_pgetevents: u32 = 292; -pub const __NR_rseq: u32 = 293; -pub const __NR_kexec_file_load: u32 = 294; -pub const __NR_pidfd_send_signal: u32 = 424; -pub const __NR_io_uring_setup: u32 = 425; -pub const __NR_io_uring_enter: u32 = 426; -pub const __NR_io_uring_register: u32 = 427; -pub const __NR_open_tree: u32 = 428; -pub const __NR_move_mount: u32 = 429; -pub const __NR_fsopen: u32 = 430; -pub const __NR_fsconfig: u32 = 431; -pub const __NR_fsmount: u32 = 432; -pub const __NR_fspick: u32 = 433; -pub const __NR_pidfd_open: u32 = 434; -pub const __NR_clone3: u32 = 435; -pub const __NR_close_range: u32 = 436; -pub const __NR_openat2: u32 = 437; -pub const __NR_pidfd_getfd: u32 = 438; -pub const __NR_faccessat2: u32 = 439; -pub const __NR_process_madvise: u32 = 440; -pub const __NR_epoll_pwait2: u32 = 441; -pub const __NR_mount_setattr: u32 = 442; -pub const __NR_quotactl_fd: u32 = 443; -pub const __NR_landlock_create_ruleset: u32 = 444; -pub const __NR_landlock_add_rule: u32 = 445; -pub const __NR_landlock_restrict_self: u32 = 446; -pub const __NR_memfd_secret: u32 = 447; -pub const __NR_process_mrelease: u32 = 448; -pub const __NR_futex_waitv: u32 = 449; -pub const __NR_set_mempolicy_home_node: u32 = 450; -pub const __NR_syscalls: u32 = 451; -pub const __NR_fcntl: u32 = 25; -pub const __NR_statfs: u32 = 43; -pub const __NR_fstatfs: u32 = 44; -pub const __NR_truncate: u32 = 45; -pub const __NR_ftruncate: u32 = 46; -pub const __NR_lseek: u32 = 62; -pub const __NR_sendfile: u32 = 71; -pub const __NR_newfstatat: u32 = 79; -pub const __NR_fstat: u32 = 80; -pub const __NR_mmap: u32 = 222; -pub const __NR_fadvise64: u32 = 223; -pub const __NR_riscv_flush_icache: u32 = 259; -pub const __OLD_UTS_LEN: u32 = 8; -pub const __NEW_UTS_LEN: u32 = 64; -pub const WNOHANG: u32 = 1; -pub const WUNTRACED: u32 = 2; -pub const WSTOPPED: u32 = 2; -pub const WEXITED: u32 = 4; -pub const WCONTINUED: u32 = 8; -pub const WNOWAIT: u32 = 16777216; -pub const __WNOTHREAD: u32 = 536870912; -pub const __WALL: u32 = 1073741824; -pub const __WCLONE: u32 = 2147483648; -pub const P_ALL: u32 = 0; -pub const P_PID: u32 = 1; -pub const P_PGID: u32 = 2; -pub const P_PIDFD: u32 = 3; -pub const XATTR_CREATE: u32 = 1; -pub const XATTR_REPLACE: u32 = 2; -pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0"; -pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0"; -pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0"; -pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0"; -pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0"; -pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0"; -pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0"; -pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0"; -pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0"; -pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0"; -pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0"; -pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0"; -pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0"; -pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0"; -pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0"; -pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0"; -pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0"; -pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0"; -pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0"; -pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0"; -pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0"; -pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0"; -pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0"; -pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0"; -pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0"; -pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0"; -pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0"; -pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0"; -pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0"; -pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0"; -pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0"; -pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0"; -pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0"; -pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0"; -pub const MFD_CLOEXEC: u32 = 1; -pub const MFD_ALLOW_SEALING: u32 = 2; -pub const MFD_HUGETLB: u32 = 4; -pub const MFD_NOEXEC_SEAL: u32 = 8; -pub const MFD_EXEC: u32 = 16; -pub const MFD_HUGE_SHIFT: u32 = 26; -pub const MFD_HUGE_MASK: u32 = 63; -pub const MFD_HUGE_64KB: u32 = 1073741824; -pub const MFD_HUGE_512KB: u32 = 1275068416; -pub const MFD_HUGE_1MB: u32 = 1342177280; -pub const MFD_HUGE_2MB: u32 = 1409286144; -pub const MFD_HUGE_8MB: u32 = 1543503872; -pub const MFD_HUGE_16MB: u32 = 1610612736; -pub const MFD_HUGE_32MB: u32 = 1677721600; -pub const MFD_HUGE_256MB: u32 = 1879048192; -pub const MFD_HUGE_512MB: u32 = 1946157056; -pub const MFD_HUGE_1GB: u32 = 2013265920; -pub const MFD_HUGE_2GB: u32 = 2080374784; -pub const MFD_HUGE_16GB: u32 = 2281701376; -pub const TFD_TIMER_ABSTIME: u32 = 1; -pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; -pub const TFD_CLOEXEC: u32 = 524288; -pub const TFD_NONBLOCK: u32 = 2048; -pub const USERFAULTFD_IOC: u32 = 170; -pub const _UFFDIO_REGISTER: u32 = 0; -pub const _UFFDIO_UNREGISTER: u32 = 1; -pub const _UFFDIO_WAKE: u32 = 2; -pub const _UFFDIO_COPY: u32 = 3; -pub const _UFFDIO_ZEROPAGE: u32 = 4; -pub const _UFFDIO_WRITEPROTECT: u32 = 6; -pub const _UFFDIO_CONTINUE: u32 = 7; -pub const _UFFDIO_API: u32 = 63; -pub const UFFDIO: u32 = 170; -pub const UFFD_EVENT_PAGEFAULT: u32 = 18; -pub const UFFD_EVENT_FORK: u32 = 19; -pub const UFFD_EVENT_REMAP: u32 = 20; -pub const UFFD_EVENT_REMOVE: u32 = 21; -pub const UFFD_EVENT_UNMAP: u32 = 22; -pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; -pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; -pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; -pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; -pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; -pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; -pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; -pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; -pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; -pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; -pub const UFFD_FEATURE_SIGBUS: u32 = 128; -pub const UFFD_FEATURE_THREAD_ID: u32 = 256; -pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; -pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; -pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; -pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; -pub const UFFD_USER_MODE_ONLY: u32 = 1; -pub const IORING_FILE_INDEX_ALLOC: i32 = -1; -pub const IORING_SETUP_IOPOLL: u32 = 1; -pub const IORING_SETUP_SQPOLL: u32 = 2; -pub const IORING_SETUP_SQ_AFF: u32 = 4; -pub const IORING_SETUP_CQSIZE: u32 = 8; -pub const IORING_SETUP_CLAMP: u32 = 16; -pub const IORING_SETUP_ATTACH_WQ: u32 = 32; -pub const IORING_SETUP_R_DISABLED: u32 = 64; -pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; -pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; -pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; -pub const IORING_SETUP_SQE128: u32 = 1024; -pub const IORING_SETUP_CQE32: u32 = 2048; -pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; -pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; -pub const IORING_URING_CMD_FIXED: u32 = 1; -pub const IORING_FSYNC_DATASYNC: u32 = 1; -pub const IORING_TIMEOUT_ABS: u32 = 1; -pub const IORING_TIMEOUT_UPDATE: u32 = 2; -pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; -pub const IORING_TIMEOUT_REALTIME: u32 = 8; -pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; -pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; -pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; -pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; -pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; -pub const IORING_POLL_ADD_MULTI: u32 = 1; -pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; -pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; -pub const IORING_POLL_ADD_LEVEL: u32 = 8; -pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; -pub const IORING_ASYNC_CANCEL_FD: u32 = 2; -pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; -pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; -pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; -pub const IORING_RECV_MULTISHOT: u32 = 2; -pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; -pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; -pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; -pub const IORING_ACCEPT_MULTISHOT: u32 = 1; -pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; -pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; -pub const IORING_CQE_F_BUFFER: u32 = 1; -pub const IORING_CQE_F_MORE: u32 = 2; -pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; -pub const IORING_CQE_F_NOTIF: u32 = 8; -pub const IORING_OFF_SQ_RING: u32 = 0; -pub const IORING_OFF_CQ_RING: u32 = 134217728; -pub const IORING_OFF_SQES: u32 = 268435456; -pub const IORING_SQ_NEED_WAKEUP: u32 = 1; -pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; -pub const IORING_SQ_TASKRUN: u32 = 4; -pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; -pub const IORING_ENTER_GETEVENTS: u32 = 1; -pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; -pub const IORING_ENTER_SQ_WAIT: u32 = 4; -pub const IORING_ENTER_EXT_ARG: u32 = 8; -pub const IORING_ENTER_REGISTERED_RING: u32 = 16; -pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; -pub const IORING_FEAT_NODROP: u32 = 2; -pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; -pub const IORING_FEAT_RW_CUR_POS: u32 = 8; -pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; -pub const IORING_FEAT_FAST_POLL: u32 = 32; -pub const IORING_FEAT_POLL_32BITS: u32 = 64; -pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; -pub const IORING_FEAT_EXT_ARG: u32 = 256; -pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; -pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; -pub const IORING_FEAT_CQE_SKIP: u32 = 2048; -pub const IORING_FEAT_LINKED_FILE: u32 = 4096; -pub const IORING_FEAT_REG_REG_RING: u32 = 8192; -pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; -pub const IORING_REGISTER_FILES_SKIP: i32 = -2; -pub const IO_URING_OP_SUPPORTED: u32 = 1; -pub const DT_UNKNOWN: u32 = 0; -pub const DT_FIFO: u32 = 1; -pub const DT_CHR: u32 = 2; -pub const DT_DIR: u32 = 4; -pub const DT_BLK: u32 = 6; -pub const DT_REG: u32 = 8; -pub const DT_LNK: u32 = 10; -pub const DT_SOCK: u32 = 12; -pub const SHUT_RD: u32 = 0; -pub const SHUT_WR: u32 = 1; -pub const SHUT_RDWR: u32 = 2; -pub const STAT_HAVE_NSEC: u32 = 1; -pub const SOCK_STREAM: u32 = 1; -pub const SOCK_DGRAM: u32 = 2; -pub const SOCK_RAW: u32 = 3; -pub const SOCK_RDM: u32 = 4; -pub const SOCK_SEQPACKET: u32 = 5; -pub const F_OK: u32 = 0; -pub const R_OK: u32 = 4; -pub const W_OK: u32 = 2; -pub const X_OK: u32 = 1; -pub const UTIME_NOW: u32 = 1073741823; -pub const UTIME_OMIT: u32 = 1073741822; -pub const MSG_DONTWAIT: u32 = 64; -pub const AF_UNSPEC: u32 = 0; -pub const AF_UNIX: u32 = 1; -pub const AF_INET: u32 = 2; -pub const AF_AX25: u32 = 3; -pub const AF_IPX: u32 = 4; -pub const AF_APPLETALK: u32 = 5; -pub const AF_NETROM: u32 = 6; -pub const AF_BRIDGE: u32 = 7; -pub const AF_ATMPVC: u32 = 8; -pub const AF_X25: u32 = 9; -pub const AF_INET6: u32 = 10; -pub const AF_ROSE: u32 = 11; -pub const AF_DECnet: u32 = 12; -pub const AF_NETBEUI: u32 = 13; -pub const AF_SECURITY: u32 = 14; -pub const AF_KEY: u32 = 15; -pub const AF_NETLINK: u32 = 16; -pub const AF_PACKET: u32 = 17; -pub const AF_ASH: u32 = 18; -pub const AF_ECONET: u32 = 19; -pub const AF_ATMSVC: u32 = 20; -pub const AF_RDS: u32 = 21; -pub const AF_SNA: u32 = 22; -pub const AF_IRDA: u32 = 23; -pub const AF_PPPOX: u32 = 24; -pub const AF_WANPIPE: u32 = 25; -pub const AF_LLC: u32 = 26; -pub const AF_CAN: u32 = 29; -pub const AF_TIPC: u32 = 30; -pub const AF_BLUETOOTH: u32 = 31; -pub const AF_IUCV: u32 = 32; -pub const AF_RXRPC: u32 = 33; -pub const AF_ISDN: u32 = 34; -pub const AF_PHONET: u32 = 35; -pub const AF_IEEE802154: u32 = 36; -pub const AF_MAX: u32 = 37; -pub const MSG_OOB: u32 = 1; -pub const MSG_PEEK: u32 = 2; -pub const MSG_DONTROUTE: u32 = 4; -pub const MSG_CTRUNC: u32 = 8; -pub const MSG_PROBE: u32 = 16; -pub const MSG_TRUNC: u32 = 32; -pub const MSG_EOR: u32 = 128; -pub const MSG_WAITALL: u32 = 256; -pub const MSG_FIN: u32 = 512; -pub const MSG_SYN: u32 = 1024; -pub const MSG_CONFIRM: u32 = 2048; -pub const MSG_RST: u32 = 4096; -pub const MSG_ERRQUEUE: u32 = 8192; -pub const MSG_NOSIGNAL: u32 = 16384; -pub const MSG_MORE: u32 = 32768; -pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; -pub const STDIN_FILENO: u32 = 0; -pub const STDOUT_FILENO: u32 = 1; -pub const STDERR_FILENO: u32 = 2; -pub const RWF_HIPRI: u32 = 1; -pub const RWF_DSYNC: u32 = 2; -pub const RWF_SYNC: u32 = 4; -pub const RWF_NOWAIT: u32 = 8; -pub const RWF_APPEND: u32 = 16; -pub const EFD_SEMAPHORE: u32 = 1; -pub const EFD_CLOEXEC: u32 = 524288; -pub const EFD_NONBLOCK: u32 = 2048; -pub const EPOLLIN: u32 = 1; -pub const EPOLLPRI: u32 = 2; -pub const EPOLLOUT: u32 = 4; -pub const EPOLLERR: u32 = 8; -pub const EPOLLHUP: u32 = 16; -pub const EPOLLNVAL: u32 = 32; -pub const EPOLLRDNORM: u32 = 64; -pub const EPOLLRDBAND: u32 = 128; -pub const EPOLLWRNORM: u32 = 256; -pub const EPOLLWRBAND: u32 = 512; -pub const EPOLLMSG: u32 = 1024; -pub const EPOLLRDHUP: u32 = 8192; -pub const EPOLLEXCLUSIVE: u32 = 268435456; -pub const EPOLLWAKEUP: u32 = 536870912; -pub const EPOLLONESHOT: u32 = 1073741824; -pub const EPOLLET: u32 = 2147483648; -pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; -pub const TFD_CREATE_FLAGS: u32 = 526336; -pub const TFD_SETTIME_FLAGS: u32 = 1; -pub const SCM_RIGHTS: u32 = 1; -pub const SCM_CREDENTIALS: u32 = 2; -pub const SCM_SECURITY: u32 = 3; -pub const UFFD_API: u32 = 170; -pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; -pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; -pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; -pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; -pub const UFFDIO_COPY_MODE_WP: u32 = 2; -pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; -pub const SPLICE_F_MOVE: u32 = 1; -pub const SPLICE_F_NONBLOCK: u32 = 2; -pub const SPLICE_F_MORE: u32 = 4; -pub const SPLICE_F_GIFT: u32 = 8; -pub const MNT_FORCE: u32 = 1; -pub const MNT_DETACH: u32 = 2; -pub const MNT_EXPIRE: u32 = 4; -pub const UMOUNT_NOFOLLOW: u32 = 8; -pub const UMOUNT_UNUSED: u32 = 2147483648; -pub type size_t = crate::ctypes::c_ulong; -pub type ssize_t = crate::ctypes::c_long; -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 16usize], -} -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_old_dev_t = crate::ctypes::c_uint; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_header_struct { -pub version: __u32, -pub pid: crate::ctypes::c_int, -} -pub type cap_user_header_t = *mut __user_cap_header_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_data_struct { -pub effective: __u32, -pub permitted: __u32, -pub inheritable: __u32, -} -pub type cap_user_data_t = *mut __user_cap_data_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data { -pub magic_etc: __le32, -pub data: [vfs_cap_data__bindgen_ty_1; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data { -pub magic_etc: __le32, -pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], -pub rootid: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct f_owner_ex { -pub type_: crate::ctypes::c_int, -pub pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_off_t, -pub l_len: __kernel_off_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock64 { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_loff_t, -pub l_len: __kernel_loff_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct open_how { -pub flags: __u64, -pub mode: __u64, -pub resolve: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct epoll_event { -pub events: __poll_t, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v1 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub master_key_descriptor: [__u8; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_key { -pub mode: __u32, -pub raw: [__u8; 64usize], -pub size: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v2 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub __reserved: [__u8; 4usize], -pub master_key_identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_get_policy_ex_arg { -pub policy_size: __u64, -pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { -pub version: __u8, -pub v1: fscrypt_policy_v1, -pub v2: fscrypt_policy_v2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_key_specifier { -pub type_: __u32, -pub __reserved: __u32, -pub u: fscrypt_key_specifier__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_key_specifier__bindgen_ty_1 { -pub __reserved: [__u8; 32usize], -pub descriptor: [__u8; 8usize], -pub identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct fscrypt_provisioning_key_payload { -pub type_: __u32, -pub __reserved: __u32, -pub raw: __IncompleteArrayField<__u8>, -} -#[repr(C)] -pub struct fscrypt_add_key_arg { -pub key_spec: fscrypt_key_specifier, -pub raw_size: __u32, -pub key_id: __u32, -pub __reserved: [__u32; 8usize], -pub raw: __IncompleteArrayField<__u8>, +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, } #[repr(C)] #[derive(Copy, Clone)] @@ -2764,19 +229,6 @@ pub user_count: __u32, pub __out_reserved: [__u32; 13usize], } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum fsconfig_command { -FSCONFIG_SET_FLAG = 0, -FSCONFIG_SET_STRING = 1, -FSCONFIG_SET_BINARY = 2, -FSCONFIG_SET_PATH = 3, -FSCONFIG_SET_PATH_EMPTY = 4, -FSCONFIG_SET_FD = 5, -FSCONFIG_CMD_CREATE = 6, -FSCONFIG_CMD_RECONFIGURE = 7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct mount_attr { @@ -2843,7 +295,6 @@ pub fsx_cowextsize: __u32, pub fsx_pad: [crate::ctypes::c_uchar; 8usize], } -pub type __kernel_rwf_t = crate::ctypes::c_int; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct futex_waitv { @@ -2857,670 +308,21 @@ pub struct robust_list { pub next: *mut robust_list, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct robust_list_head { -pub list: robust_list, -pub futex_offset: crate::ctypes::c_long, -pub list_op_pending: *mut robust_list, -} -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], -} -pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; -pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; -pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; -pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; -pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; -pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; -pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; -pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; -pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; -pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; -pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; -pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; -pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; -pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; -pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; -pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; -pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; -pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; -pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; -pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; -pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; -pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; -pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; -pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; -pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; -pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; -pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; -pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; -pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_1 { -IPPROTO_IP = 0, -IPPROTO_ICMP = 1, -IPPROTO_IGMP = 2, -IPPROTO_IPIP = 4, -IPPROTO_TCP = 6, -IPPROTO_EGP = 8, -IPPROTO_PUP = 12, -IPPROTO_UDP = 17, -IPPROTO_IDP = 22, -IPPROTO_TP = 29, -IPPROTO_DCCP = 33, -IPPROTO_IPV6 = 41, -IPPROTO_RSVP = 46, -IPPROTO_GRE = 47, -IPPROTO_ESP = 50, -IPPROTO_AH = 51, -IPPROTO_MTP = 92, -IPPROTO_BEETPH = 94, -IPPROTO_ENCAP = 98, -IPPROTO_PIM = 103, -IPPROTO_COMP = 108, -IPPROTO_L2TP = 115, -IPPROTO_SCTP = 132, -IPPROTO_UDPLITE = 136, -IPPROTO_MPLS = 137, -IPPROTO_ETHERNET = 143, -IPPROTO_RAW = 255, -IPPROTO_MPTCP = 262, -IPPROTO_MAX = 263, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_addr { -pub s_addr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq { -pub imr_multiaddr: in_addr, -pub imr_interface: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreqn { -pub imr_multiaddr: in_addr, -pub imr_address: in_addr, -pub imr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq_source { -pub imr_multiaddr: __be32, -pub imr_interface: __be32, -pub imr_sourceaddr: __be32, -} -#[repr(C)] -pub struct ip_msfilter { -pub imsf_multiaddr: __be32, -pub imsf_interface: __be32, -pub imsf_fmode: __u32, -pub imsf_numsrc: __u32, -pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, -} -#[repr(C)] -pub struct ip_msfilter__bindgen_ty_1 { -pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, -pub __bindgen_anon_1: __BindgenUnionField, -pub bindgen_union_field: u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { -pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -pub imsf_slist_flex: __IncompleteArrayField<__be32>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_req { -pub gr_interface: __u32, -pub gr_group: __kernel_sockaddr_storage, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_source_req { -pub gsr_interface: __u32, -pub gsr_group: __kernel_sockaddr_storage, -pub gsr_source: __kernel_sockaddr_storage, -} -#[repr(C)] -pub struct group_filter { -pub __bindgen_anon_1: group_filter__bindgen_ty_1, -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 34usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { -pub gf_interface_aux: __u32, -pub gf_group_aux: __kernel_sockaddr_storage, -pub gf_fmode_aux: __u32, -pub gf_numsrc_aux: __u32, -pub gf_slist: [__kernel_sockaddr_storage; 1usize], -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { -pub gf_interface: __u32, -pub gf_group: __kernel_sockaddr_storage, -pub gf_fmode: __u32, -pub gf_numsrc: __u32, -pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_pktinfo { -pub ipi_ifindex: crate::ctypes::c_int, -pub ipi_spec_dst: in_addr, -pub ipi_addr: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_in { -pub sin_family: __kernel_sa_family_t, -pub sin_port: __be16, -pub sin_addr: in_addr, -pub __pad: [crate::ctypes::c_uchar; 8usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct inotify_event { -pub wd: __s32, -pub mask: __u32, -pub cookie: __u32, -pub len: __u32, -pub name: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct iphdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub tos: __u8, -pub tot_len: __be16, -pub id: __be16, -pub frag_off: __be16, -pub ttl: __u8, -pub protocol: __u8, -pub check: __sum16, -pub __bindgen_anon_1: iphdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union iphdr__bindgen_ty_1 { -pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: __be32, -pub daddr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: __be32, -pub daddr: __be32, -} -impl iphdr { -#[inline] -pub fn ihl(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_ihl(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; -ihl as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_auth_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub reserved: __be16, -pub spi: __be32, -pub seq_no: __be32, -pub auth_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_esp_hdr { -pub spi: __be32, -pub seq_no: __be32, -pub enc_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_comp_hdr { -pub nexthdr: __u8, -pub flags: __u8, -pub cpi: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_beet_phdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub padlen: __u8, -pub reserved: __u8, -} -pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; -pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; -pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; -pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; -pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; -pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; -pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; -pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; -pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; -pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; -pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; -pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; -pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; -pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; -pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; -pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; -pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; -pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; -pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; -pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; -pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; -pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; -pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; -pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; -pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; -pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; -pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; -pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; -pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_2 { -IPV4_DEVCONF_FORWARDING = 1, -IPV4_DEVCONF_MC_FORWARDING = 2, -IPV4_DEVCONF_PROXY_ARP = 3, -IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, -IPV4_DEVCONF_SECURE_REDIRECTS = 5, -IPV4_DEVCONF_SEND_REDIRECTS = 6, -IPV4_DEVCONF_SHARED_MEDIA = 7, -IPV4_DEVCONF_RP_FILTER = 8, -IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, -IPV4_DEVCONF_BOOTP_RELAY = 10, -IPV4_DEVCONF_LOG_MARTIANS = 11, -IPV4_DEVCONF_TAG = 12, -IPV4_DEVCONF_ARPFILTER = 13, -IPV4_DEVCONF_MEDIUM_ID = 14, -IPV4_DEVCONF_NOXFRM = 15, -IPV4_DEVCONF_NOPOLICY = 16, -IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, -IPV4_DEVCONF_ARP_ANNOUNCE = 18, -IPV4_DEVCONF_ARP_IGNORE = 19, -IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, -IPV4_DEVCONF_ARP_ACCEPT = 21, -IPV4_DEVCONF_ARP_NOTIFY = 22, -IPV4_DEVCONF_ACCEPT_LOCAL = 23, -IPV4_DEVCONF_SRC_VMARK = 24, -IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, -IPV4_DEVCONF_ROUTE_LOCALNET = 26, -IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, -IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, -IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, -IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, -IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, -IPV4_DEVCONF_BC_FORWARDING = 32, -IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, -__IPV4_DEVCONF_MAX = 34, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_addr { -pub in6_u: in6_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union in6_addr__bindgen_ty_1 { -pub u6_addr8: [__u8; 16usize], -pub u6_addr16: [__be16; 8usize], -pub u6_addr32: [__be32; 4usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_in6 { -pub sin6_family: crate::ctypes::c_ushort, -pub sin6_port: __be16, -pub sin6_flowinfo: __be32, -pub sin6_addr: in6_addr, -pub sin6_scope_id: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6_mreq { -pub ipv6mr_multiaddr: in6_addr, -pub ipv6mr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_flowlabel_req { -pub flr_dst: in6_addr, -pub flr_label: __be32, -pub flr_action: __u8, -pub flr_share: __u8, -pub flr_flags: __u16, -pub flr_expires: __u16, -pub flr_linger: __u16, -pub __flr_pad: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_pktinfo { -pub ipi6_addr: in6_addr, -pub ipi6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ip6_mtuinfo { -pub ip6m_addr: sockaddr_in6, -pub ip6m_mtu: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_ifreq { -pub ifr6_addr: in6_addr, -pub ifr6_prefixlen: __u32, -pub ifr6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_rt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub type_: __u8, -pub segments_left: __u8, -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_opt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -} -#[repr(C)] -pub struct rt0_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rt2_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: in6_addr, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct ipv6_destopt_hao { -pub type_: __u8, -pub length: __u8, -pub addr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub flow_lbl: [__u8; 3usize], -pub payload_len: __be16, -pub nexthdr: __u8, -pub hop_limit: __u8, -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ipv6hdr__bindgen_ty_1 { -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -impl ipv6hdr { -#[inline] -pub fn priority(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_priority(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let priority: u8 = unsafe { ::core::mem::transmute(priority) }; -priority as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit -} -} -pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; -pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; -pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; -pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; -pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; -pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; -pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; -pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; -pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; -pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; -pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; -pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; -pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; -pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; -pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; -pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; -pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; -pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; -pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; -pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; -pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; -pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; -pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; -pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; -pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; -pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; -pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; -pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; -pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; -pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; -pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; -pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; -pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; -pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; -pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; -pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; -pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; -pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; -pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; -pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; -pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; -pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; -pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; -pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; -pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; -pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; -pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; -pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; -pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; -pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; -pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; -pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_3 { -DEVCONF_FORWARDING = 0, -DEVCONF_HOPLIMIT = 1, -DEVCONF_MTU6 = 2, -DEVCONF_ACCEPT_RA = 3, -DEVCONF_ACCEPT_REDIRECTS = 4, -DEVCONF_AUTOCONF = 5, -DEVCONF_DAD_TRANSMITS = 6, -DEVCONF_RTR_SOLICITS = 7, -DEVCONF_RTR_SOLICIT_INTERVAL = 8, -DEVCONF_RTR_SOLICIT_DELAY = 9, -DEVCONF_USE_TEMPADDR = 10, -DEVCONF_TEMP_VALID_LFT = 11, -DEVCONF_TEMP_PREFERED_LFT = 12, -DEVCONF_REGEN_MAX_RETRY = 13, -DEVCONF_MAX_DESYNC_FACTOR = 14, -DEVCONF_MAX_ADDRESSES = 15, -DEVCONF_FORCE_MLD_VERSION = 16, -DEVCONF_ACCEPT_RA_DEFRTR = 17, -DEVCONF_ACCEPT_RA_PINFO = 18, -DEVCONF_ACCEPT_RA_RTR_PREF = 19, -DEVCONF_RTR_PROBE_INTERVAL = 20, -DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, -DEVCONF_PROXY_NDP = 22, -DEVCONF_OPTIMISTIC_DAD = 23, -DEVCONF_ACCEPT_SOURCE_ROUTE = 24, -DEVCONF_MC_FORWARDING = 25, -DEVCONF_DISABLE_IPV6 = 26, -DEVCONF_ACCEPT_DAD = 27, -DEVCONF_FORCE_TLLAO = 28, -DEVCONF_NDISC_NOTIFY = 29, -DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, -DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, -DEVCONF_SUPPRESS_FRAG_NDISC = 32, -DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, -DEVCONF_USE_OPTIMISTIC = 34, -DEVCONF_ACCEPT_RA_MTU = 35, -DEVCONF_STABLE_SECRET = 36, -DEVCONF_USE_OIF_ADDRS_ONLY = 37, -DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, -DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, -DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, -DEVCONF_DROP_UNSOLICITED_NA = 41, -DEVCONF_KEEP_ADDR_ON_DOWN = 42, -DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, -DEVCONF_SEG6_ENABLED = 44, -DEVCONF_SEG6_REQUIRE_HMAC = 45, -DEVCONF_ENHANCED_DAD = 46, -DEVCONF_ADDR_GEN_MODE = 47, -DEVCONF_DISABLE_POLICY = 48, -DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, -DEVCONF_NDISC_TCLASS = 50, -DEVCONF_RPL_SEG_ENABLED = 51, -DEVCONF_RA_DEFRTR_METRIC = 52, -DEVCONF_IOAM6_ENABLED = 53, -DEVCONF_IOAM6_ID = 54, -DEVCONF_IOAM6_ID_WIDE = 55, -DEVCONF_NDISC_EVICT_NOCARRIER = 56, -DEVCONF_ACCEPT_UNTRACKED_NA = 57, -DEVCONF_MAX = 58, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum socket_state { -SS_FREE = 0, -SS_UNCONNECTED = 1, -SS_CONNECTING = 2, -SS_CONNECTED = 3, -SS_DISCONNECTING = 4, +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct robust_list_head { +pub list: robust_list, +pub futex_offset: crate::ctypes::c_long, +pub list_op_pending: *mut robust_list, +} +#[repr(C)] +#[derive(Debug)] +pub struct inotify_event { +pub wd: __s32, +pub mask: __u32, +pub cookie: __u32, +pub len: __u32, +pub name: __IncompleteArrayField, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -3530,24 +332,6 @@ pub revents: crate::ctypes::c_short, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prctl_mm_map { -pub start_code: __u64, -pub end_code: __u64, -pub start_data: __u64, -pub end_data: __u64, -pub start_brk: __u64, -pub brk: __u64, -pub start_stack: __u64, -pub arg_start: __u64, -pub arg_end: __u64, -pub env_start: __u64, -pub env_end: __u64, -pub auxv: *mut __u64, -pub auxv_size: __u32, -pub exe_fd: __u32, -} -#[repr(C)] #[derive(Debug)] pub struct rand_pool_info { pub entropy_count: crate::ctypes::c_int, @@ -3672,11 +456,6 @@ pub struct sigset_t { pub sig: [crate::ctypes::c_ulong; 1usize], } -pub type old_sigset_t = crate::ctypes::c_ulong; -pub type __signalfn_t = ::core::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::core::option::Option; -pub type __sigrestore_t = __restorefn_t; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct sigaction { @@ -3691,25 +470,6 @@ pub ss_flags: crate::ctypes::c_int, pub ss_size: __kernel_size_t, } -pub type stack_t = sigaltstack; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { -pub sival_int: crate::ctypes::c_int, -pub sival_ptr: *mut crate::ctypes::c_void, -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { -pub _kill: __sifields__bindgen_ty_1, -pub _timer: __sifields__bindgen_ty_2, -pub _rt: __sifields__bindgen_ty_3, -pub _sigchld: __sifields__bindgen_ty_4, -pub _sigfault: __sifields__bindgen_ty_5, -pub _sigpoll: __sifields__bindgen_ty_6, -pub _sigsys: __sifields__bindgen_ty_7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_1 { @@ -3747,15 +507,6 @@ pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { -pub _trapno: crate::ctypes::c_int, -pub _addr_lsb: crate::ctypes::c_short, -pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, -pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { pub _dummy_bnd: [crate::ctypes::c_char; 8usize], @@ -3795,568 +546,61 @@ } #[repr(C)] #[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { -pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, -pub _si_pad: [crate::ctypes::c_int; 32usize], -} -#[repr(C)] -#[derive(Copy, Clone)] pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { pub si_signo: crate::ctypes::c_int, pub si_errno: crate::ctypes::c_int, pub si_code: crate::ctypes::c_int, pub _sifields: __sifields, } -pub type siginfo_t = siginfo; #[repr(C)] #[derive(Copy, Clone)] pub struct sigevent { pub sigev_value: sigval_t, pub sigev_signo: crate::ctypes::c_int, -pub sigev_notify: crate::ctypes::c_int, -pub _sigev_un: sigevent__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { -pub _pad: [crate::ctypes::c_int; 12usize], -pub _tid: crate::ctypes::c_int, -pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { -pub _function: ::core::option::Option, -pub _attribute: *mut crate::ctypes::c_void, -} -pub type sigevent_t = sigevent; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statx_timestamp { -pub tv_sec: __s64, -pub tv_nsec: __u32, -pub __reserved: __s32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statx { -pub stx_mask: __u32, -pub stx_blksize: __u32, -pub stx_attributes: __u64, -pub stx_nlink: __u32, -pub stx_uid: __u32, -pub stx_gid: __u32, -pub stx_mode: __u16, -pub __spare0: [__u16; 1usize], -pub stx_ino: __u64, -pub stx_size: __u64, -pub stx_blocks: __u64, -pub stx_attributes_mask: __u64, -pub stx_atime: statx_timestamp, -pub stx_btime: statx_timestamp, -pub stx_ctime: statx_timestamp, -pub stx_mtime: statx_timestamp, -pub stx_rdev_major: __u32, -pub stx_rdev_minor: __u32, -pub stx_dev_major: __u32, -pub stx_dev_minor: __u32, -pub stx_mnt_id: __u64, -pub stx_dio_mem_align: __u32, -pub stx_dio_offset_align: __u32, -pub __spare3: [__u64; 12usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct sysinfo { -pub uptime: __kernel_long_t, -pub loads: [__kernel_ulong_t; 3usize], -pub totalram: __kernel_ulong_t, -pub freeram: __kernel_ulong_t, -pub sharedram: __kernel_ulong_t, -pub bufferram: __kernel_ulong_t, -pub totalswap: __kernel_ulong_t, -pub freeswap: __kernel_ulong_t, -pub procs: __u16, -pub pad: __u16, -pub totalhigh: __kernel_ulong_t, -pub freehigh: __kernel_ulong_t, -pub mem_unit: __u32, -pub _f: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcphdr { -pub source: __be16, -pub dest: __be16, -pub seq: __be32, -pub ack_seq: __be32, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub window: __be16, -pub check: __sum16, -pub urg_ptr: __be16, -} -impl tcphdr { -#[inline] -pub fn res1(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } -} -#[inline] -pub fn set_res1(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn doff(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } -} -#[inline] -pub fn set_doff(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn fin(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } -} -#[inline] -pub fn set_fin(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn syn(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } -} -#[inline] -pub fn set_syn(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 1u8, val as u64) -} -} -#[inline] -pub fn rst(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } -} -#[inline] -pub fn set_rst(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(10usize, 1u8, val as u64) -} -} -#[inline] -pub fn psh(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } -} -#[inline] -pub fn set_psh(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(11usize, 1u8, val as u64) -} -} -#[inline] -pub fn ack(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } -} -#[inline] -pub fn set_ack(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(12usize, 1u8, val as u64) -} -} -#[inline] -pub fn urg(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } -} -#[inline] -pub fn set_urg(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(13usize, 1u8, val as u64) -} -} -#[inline] -pub fn ece(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } -} -#[inline] -pub fn set_ece(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(14usize, 1u8, val as u64) -} -} -#[inline] -pub fn cwr(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } -} -#[inline] -pub fn set_cwr(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(15usize, 1u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let res1: u16 = unsafe { ::core::mem::transmute(res1) }; -res1 as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let doff: u16 = unsafe { ::core::mem::transmute(doff) }; -doff as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let fin: u16 = unsafe { ::core::mem::transmute(fin) }; -fin as u64 -}); -__bindgen_bitfield_unit.set(9usize, 1u8, { -let syn: u16 = unsafe { ::core::mem::transmute(syn) }; -syn as u64 -}); -__bindgen_bitfield_unit.set(10usize, 1u8, { -let rst: u16 = unsafe { ::core::mem::transmute(rst) }; -rst as u64 -}); -__bindgen_bitfield_unit.set(11usize, 1u8, { -let psh: u16 = unsafe { ::core::mem::transmute(psh) }; -psh as u64 -}); -__bindgen_bitfield_unit.set(12usize, 1u8, { -let ack: u16 = unsafe { ::core::mem::transmute(ack) }; -ack as u64 -}); -__bindgen_bitfield_unit.set(13usize, 1u8, { -let urg: u16 = unsafe { ::core::mem::transmute(urg) }; -urg as u64 -}); -__bindgen_bitfield_unit.set(14usize, 1u8, { -let ece: u16 = unsafe { ::core::mem::transmute(ece) }; -ece as u64 -}); -__bindgen_bitfield_unit.set(15usize, 1u8, { -let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; -cwr as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union tcp_word_hdr { -pub hdr: tcphdr, -pub words: [__be32; 5usize], -} -pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; -pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; -pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; -pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; -pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; -pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; -pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; -pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; -pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; -pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_4 { -TCP_FLAG_CWR = 32768, -TCP_FLAG_ECE = 16384, -TCP_FLAG_URG = 8192, -TCP_FLAG_ACK = 4096, -TCP_FLAG_PSH = 2048, -TCP_FLAG_RST = 1024, -TCP_FLAG_SYN = 512, -TCP_FLAG_FIN = 256, -TCP_RESERVED_BITS = 15, -TCP_DATA_OFFSET = 240, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_repair_opt { -pub opt_code: __u32, -pub opt_val: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_repair_window { -pub snd_wl1: __u32, -pub snd_wnd: __u32, -pub max_window: __u32, -pub rcv_wnd: __u32, -pub rcv_wup: __u32, -} -pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; -pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; -pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; -pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_5 { -TCP_NO_QUEUE = 0, -TCP_RECV_QUEUE = 1, -TCP_SEND_QUEUE = 2, -TCP_QUEUES_NR = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_fastopen_client_fail { -TFO_STATUS_UNSPEC = 0, -TFO_COOKIE_UNAVAILABLE = 1, -TFO_DATA_NOT_ACKED = 2, -TFO_SYN_RETRANSMITTED = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_ca_state { -TCP_CA_Open = 0, -TCP_CA_Disorder = 1, -TCP_CA_CWR = 2, -TCP_CA_Recovery = 3, -TCP_CA_Loss = 4, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_info { -pub tcpi_state: __u8, -pub tcpi_ca_state: __u8, -pub tcpi_retransmits: __u8, -pub tcpi_probes: __u8, -pub tcpi_backoff: __u8, -pub tcpi_options: __u8, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub tcpi_rto: __u32, -pub tcpi_ato: __u32, -pub tcpi_snd_mss: __u32, -pub tcpi_rcv_mss: __u32, -pub tcpi_unacked: __u32, -pub tcpi_sacked: __u32, -pub tcpi_lost: __u32, -pub tcpi_retrans: __u32, -pub tcpi_fackets: __u32, -pub tcpi_last_data_sent: __u32, -pub tcpi_last_ack_sent: __u32, -pub tcpi_last_data_recv: __u32, -pub tcpi_last_ack_recv: __u32, -pub tcpi_pmtu: __u32, -pub tcpi_rcv_ssthresh: __u32, -pub tcpi_rtt: __u32, -pub tcpi_rttvar: __u32, -pub tcpi_snd_ssthresh: __u32, -pub tcpi_snd_cwnd: __u32, -pub tcpi_advmss: __u32, -pub tcpi_reordering: __u32, -pub tcpi_rcv_rtt: __u32, -pub tcpi_rcv_space: __u32, -pub tcpi_total_retrans: __u32, -pub tcpi_pacing_rate: __u64, -pub tcpi_max_pacing_rate: __u64, -pub tcpi_bytes_acked: __u64, -pub tcpi_bytes_received: __u64, -pub tcpi_segs_out: __u32, -pub tcpi_segs_in: __u32, -pub tcpi_notsent_bytes: __u32, -pub tcpi_min_rtt: __u32, -pub tcpi_data_segs_in: __u32, -pub tcpi_data_segs_out: __u32, -pub tcpi_delivery_rate: __u64, -pub tcpi_busy_time: __u64, -pub tcpi_rwnd_limited: __u64, -pub tcpi_sndbuf_limited: __u64, -pub tcpi_delivered: __u32, -pub tcpi_delivered_ce: __u32, -pub tcpi_bytes_sent: __u64, -pub tcpi_bytes_retrans: __u64, -pub tcpi_dsack_dups: __u32, -pub tcpi_reord_seen: __u32, -pub tcpi_rcv_ooopack: __u32, -pub tcpi_snd_wnd: __u32, -pub tcpi_rcv_wnd: __u32, -pub tcpi_rehash: __u32, -} -impl tcp_info { -#[inline] -pub fn tcpi_snd_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_rcv_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } -} -#[inline] -pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn tcpi_fastopen_client_fail(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } -} -#[inline] -pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 2u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; -tcpi_snd_wscale as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; -tcpi_rcv_wscale as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; -tcpi_delivery_rate_app_limited as u64 -}); -__bindgen_bitfield_unit.set(9usize, 2u8, { -let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; -tcpi_fastopen_client_fail as u64 -}); -__bindgen_bitfield_unit -} -} -pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; -pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; -pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; -pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; -pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; -pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; -pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; -pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; -pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; -pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; -pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; -pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; -pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; -pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; -pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; -pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; -pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; -pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; -pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; -pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; -pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; -pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; -pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; -pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; -pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; -pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; -pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; -pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_6 { -TCP_NLA_PAD = 0, -TCP_NLA_BUSY = 1, -TCP_NLA_RWND_LIMITED = 2, -TCP_NLA_SNDBUF_LIMITED = 3, -TCP_NLA_DATA_SEGS_OUT = 4, -TCP_NLA_TOTAL_RETRANS = 5, -TCP_NLA_PACING_RATE = 6, -TCP_NLA_DELIVERY_RATE = 7, -TCP_NLA_SND_CWND = 8, -TCP_NLA_REORDERING = 9, -TCP_NLA_MIN_RTT = 10, -TCP_NLA_RECUR_RETRANS = 11, -TCP_NLA_DELIVERY_RATE_APP_LMT = 12, -TCP_NLA_SNDQ_SIZE = 13, -TCP_NLA_CA_STATE = 14, -TCP_NLA_SND_SSTHRESH = 15, -TCP_NLA_DELIVERED = 16, -TCP_NLA_DELIVERED_CE = 17, -TCP_NLA_BYTES_SENT = 18, -TCP_NLA_BYTES_RETRANS = 19, -TCP_NLA_DSACK_DUPS = 20, -TCP_NLA_REORD_SEEN = 21, -TCP_NLA_SRTT = 22, -TCP_NLA_TIMEOUT_REHASH = 23, -TCP_NLA_BYTES_NOTSENT = 24, -TCP_NLA_EDT = 25, -TCP_NLA_TTL = 26, -TCP_NLA_REHASH = 27, +pub sigev_notify: crate::ctypes::c_int, +pub _sigev_un: sigevent__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub struct tcp_md5sig { -pub tcpm_addr: __kernel_sockaddr_storage, -pub tcpm_flags: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_ifindex: crate::ctypes::c_int, -pub tcpm_key: [__u8; 80usize], +#[derive(Debug, Copy, Clone)] +pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { +pub _function: ::core::option::Option, +pub _attribute: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_diag_md5sig { -pub tcpm_family: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_addr: [__be32; 4usize], -pub tcpm_key: [__u8; 80usize], +pub struct statx_timestamp { +pub tv_sec: __s64, +pub tv_nsec: __u32, +pub __reserved: __s32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_zerocopy_receive { -pub address: __u64, -pub length: __u32, -pub recv_skip_hint: __u32, -pub inq: __u32, -pub err: __s32, -pub copybuf_address: __u64, -pub copybuf_len: __s32, -pub flags: __u32, -pub msg_control: __u64, -pub msg_controllen: __u64, -pub msg_flags: __u32, -pub reserved: __u32, +pub struct statx { +pub stx_mask: __u32, +pub stx_blksize: __u32, +pub stx_attributes: __u64, +pub stx_nlink: __u32, +pub stx_uid: __u32, +pub stx_gid: __u32, +pub stx_mode: __u16, +pub __spare0: [__u16; 1usize], +pub stx_ino: __u64, +pub stx_size: __u64, +pub stx_blocks: __u64, +pub stx_attributes_mask: __u64, +pub stx_atime: statx_timestamp, +pub stx_btime: statx_timestamp, +pub stx_ctime: statx_timestamp, +pub stx_mtime: statx_timestamp, +pub stx_rdev_major: __u32, +pub stx_rdev_minor: __u32, +pub stx_dev_major: __u32, +pub stx_dev_minor: __u32, +pub stx_mnt_id: __u64, +pub stx_dio_mem_align: __u32, +pub stx_dio_offset_align: __u32, +pub __spare3: [__u64; 12usize], } -pub type cc_t = crate::ctypes::c_uchar; -pub type speed_t = crate::ctypes::c_uint; -pub type tcflag_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct termios { @@ -4415,42 +659,1875 @@ pub iov_base: *mut crate::ctypes::c_void, pub iov_len: __kernel_size_t, } +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct uffd_msg { +pub event: __u8, +pub reserved1: __u8, +pub reserved2: __u16, +pub reserved3: __u32, +pub arg: uffd_msg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { +pub flags: __u64, +pub address: __u64, +pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { +pub ufd: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { +pub from: __u64, +pub to: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { +pub start: __u64, +pub end: __u64, +} #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_un { -pub sun_family: __kernel_sa_family_t, -pub sun_path: [crate::ctypes::c_char; 108usize], +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { +pub reserved1: __u64, +pub reserved2: __u64, +pub reserved3: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct oldold_utsname { -pub sysname: [crate::ctypes::c_char; 9usize], -pub nodename: [crate::ctypes::c_char; 9usize], -pub release: [crate::ctypes::c_char; 9usize], -pub version: [crate::ctypes::c_char; 9usize], -pub machine: [crate::ctypes::c_char; 9usize], +pub struct uffdio_api { +pub api: __u64, +pub features: __u64, +pub ioctls: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct old_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], +pub struct uffdio_range { +pub start: __u64, +pub len: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct new_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], -pub domainname: [crate::ctypes::c_char; 65usize], +pub struct uffdio_register { +pub range: uffdio_range, +pub mode: __u64, +pub ioctls: __u64, } -impl membarrier_cmd { -pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_copy { +pub dst: __u64, +pub src: __u64, +pub len: __u64, +pub mode: __u64, +pub copy: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_zeropage { +pub range: uffdio_range, +pub mode: __u64, +pub zeropage: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_writeprotect { +pub range: uffdio_range, +pub mode: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_continue { +pub range: uffdio_range, +pub mode: __u64, +pub mapped: __s64, +} +#[repr(C)] +#[derive(Debug)] +pub struct linux_dirent64 { +pub d_ino: crate::ctypes::c_ulong, +pub d_off: crate::ctypes::c_long, +pub d_reclen: __u16, +pub d_type: __u8, +pub d_name: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat { +pub st_dev: crate::ctypes::c_ulong, +pub st_ino: crate::ctypes::c_ulong, +pub st_mode: crate::ctypes::c_uint, +pub st_nlink: crate::ctypes::c_uint, +pub st_uid: crate::ctypes::c_uint, +pub st_gid: crate::ctypes::c_uint, +pub st_rdev: crate::ctypes::c_ulong, +pub __pad1: crate::ctypes::c_ulong, +pub st_size: crate::ctypes::c_long, +pub st_blksize: crate::ctypes::c_int, +pub __pad2: crate::ctypes::c_int, +pub st_blocks: crate::ctypes::c_long, +pub st_atime: crate::ctypes::c_long, +pub st_atime_nsec: crate::ctypes::c_ulong, +pub st_mtime: crate::ctypes::c_long, +pub st_mtime_nsec: crate::ctypes::c_ulong, +pub st_ctime: crate::ctypes::c_long, +pub st_ctime_nsec: crate::ctypes::c_ulong, +pub __unused4: crate::ctypes::c_uint, +pub __unused5: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs { +pub f_type: __kernel_long_t, +pub f_bsize: __kernel_long_t, +pub f_blocks: __kernel_long_t, +pub f_bfree: __kernel_long_t, +pub f_bavail: __kernel_long_t, +pub f_files: __kernel_long_t, +pub f_ffree: __kernel_long_t, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __kernel_long_t, +pub f_frsize: __kernel_long_t, +pub f_flags: __kernel_long_t, +pub f_spare: [__kernel_long_t; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs64 { +pub f_type: __kernel_long_t, +pub f_bsize: __kernel_long_t, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __kernel_long_t, +pub f_frsize: __kernel_long_t, +pub f_flags: __kernel_long_t, +pub f_spare: [__kernel_long_t; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct compat_statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct user_desc { +pub entry_number: crate::ctypes::c_uint, +pub base_addr: crate::ctypes::c_uint, +pub limit: crate::ctypes::c_uint, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub __bindgen_padding_0: [u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct kernel_sigset_t { +pub sig: [crate::ctypes::c_ulong; 1usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct kernel_sigaction { +pub sa_handler_kernel: __kernel_sighandler_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_mask: kernel_sigset_t, +} +pub const LINUX_VERSION_CODE: u32 = 393984; +pub const LINUX_VERSION_MAJOR: u32 = 6; +pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; +pub const LINUX_VERSION_SUBLEVEL: u32 = 0; +pub const AT_SYSINFO_EHDR: u32 = 33; +pub const AT_L1I_CACHESIZE: u32 = 40; +pub const AT_L1I_CACHEGEOMETRY: u32 = 41; +pub const AT_L1D_CACHESIZE: u32 = 42; +pub const AT_L1D_CACHEGEOMETRY: u32 = 43; +pub const AT_L2_CACHESIZE: u32 = 44; +pub const AT_L2_CACHEGEOMETRY: u32 = 45; +pub const AT_L3_CACHESIZE: u32 = 46; +pub const AT_L3_CACHEGEOMETRY: u32 = 47; +pub const AT_VECTOR_SIZE_ARCH: u32 = 9; +pub const AT_NULL: u32 = 0; +pub const AT_IGNORE: u32 = 1; +pub const AT_EXECFD: u32 = 2; +pub const AT_PHDR: u32 = 3; +pub const AT_PHENT: u32 = 4; +pub const AT_PHNUM: u32 = 5; +pub const AT_PAGESZ: u32 = 6; +pub const AT_BASE: u32 = 7; +pub const AT_FLAGS: u32 = 8; +pub const AT_ENTRY: u32 = 9; +pub const AT_NOTELF: u32 = 10; +pub const AT_UID: u32 = 11; +pub const AT_EUID: u32 = 12; +pub const AT_GID: u32 = 13; +pub const AT_EGID: u32 = 14; +pub const AT_PLATFORM: u32 = 15; +pub const AT_HWCAP: u32 = 16; +pub const AT_CLKTCK: u32 = 17; +pub const AT_SECURE: u32 = 23; +pub const AT_BASE_PLATFORM: u32 = 24; +pub const AT_RANDOM: u32 = 25; +pub const AT_HWCAP2: u32 = 26; +pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; +pub const AT_RSEQ_ALIGN: u32 = 28; +pub const AT_EXECFN: u32 = 31; +pub const AT_MINSIGSTKSZ: u32 = 51; +pub const __FD_SETSIZE: u32 = 1024; +pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; +pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; +pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; +pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; +pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; +pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; +pub const VFS_CAP_REVISION_SHIFT: u32 = 24; +pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; +pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; +pub const VFS_CAP_REVISION_1: u32 = 16777216; +pub const VFS_CAP_U32_1: u32 = 1; +pub const VFS_CAP_REVISION_2: u32 = 33554432; +pub const VFS_CAP_U32_2: u32 = 2; +pub const VFS_CAP_REVISION_3: u32 = 50331648; +pub const VFS_CAP_U32_3: u32 = 2; +pub const VFS_CAP_U32: u32 = 2; +pub const VFS_CAP_REVISION: u32 = 50331648; +pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S: u32 = 1; +pub const CAP_CHOWN: u32 = 0; +pub const CAP_DAC_OVERRIDE: u32 = 1; +pub const CAP_DAC_READ_SEARCH: u32 = 2; +pub const CAP_FOWNER: u32 = 3; +pub const CAP_FSETID: u32 = 4; +pub const CAP_KILL: u32 = 5; +pub const CAP_SETGID: u32 = 6; +pub const CAP_SETUID: u32 = 7; +pub const CAP_SETPCAP: u32 = 8; +pub const CAP_LINUX_IMMUTABLE: u32 = 9; +pub const CAP_NET_BIND_SERVICE: u32 = 10; +pub const CAP_NET_BROADCAST: u32 = 11; +pub const CAP_NET_ADMIN: u32 = 12; +pub const CAP_NET_RAW: u32 = 13; +pub const CAP_IPC_LOCK: u32 = 14; +pub const CAP_IPC_OWNER: u32 = 15; +pub const CAP_SYS_MODULE: u32 = 16; +pub const CAP_SYS_RAWIO: u32 = 17; +pub const CAP_SYS_CHROOT: u32 = 18; +pub const CAP_SYS_PTRACE: u32 = 19; +pub const CAP_SYS_PACCT: u32 = 20; +pub const CAP_SYS_ADMIN: u32 = 21; +pub const CAP_SYS_BOOT: u32 = 22; +pub const CAP_SYS_NICE: u32 = 23; +pub const CAP_SYS_RESOURCE: u32 = 24; +pub const CAP_SYS_TIME: u32 = 25; +pub const CAP_SYS_TTY_CONFIG: u32 = 26; +pub const CAP_MKNOD: u32 = 27; +pub const CAP_LEASE: u32 = 28; +pub const CAP_AUDIT_WRITE: u32 = 29; +pub const CAP_AUDIT_CONTROL: u32 = 30; +pub const CAP_SETFCAP: u32 = 31; +pub const CAP_MAC_OVERRIDE: u32 = 32; +pub const CAP_MAC_ADMIN: u32 = 33; +pub const CAP_SYSLOG: u32 = 34; +pub const CAP_WAKE_ALARM: u32 = 35; +pub const CAP_BLOCK_SUSPEND: u32 = 36; +pub const CAP_AUDIT_READ: u32 = 37; +pub const CAP_PERFMON: u32 = 38; +pub const CAP_BPF: u32 = 39; +pub const CAP_CHECKPOINT_RESTORE: u32 = 40; +pub const CAP_LAST_CAP: u32 = 40; +pub const O_ACCMODE: u32 = 3; +pub const O_RDONLY: u32 = 0; +pub const O_WRONLY: u32 = 1; +pub const O_RDWR: u32 = 2; +pub const O_CREAT: u32 = 64; +pub const O_EXCL: u32 = 128; +pub const O_NOCTTY: u32 = 256; +pub const O_TRUNC: u32 = 512; +pub const O_APPEND: u32 = 1024; +pub const O_NONBLOCK: u32 = 2048; +pub const O_DSYNC: u32 = 4096; +pub const FASYNC: u32 = 8192; +pub const O_DIRECT: u32 = 16384; +pub const O_LARGEFILE: u32 = 32768; +pub const O_DIRECTORY: u32 = 65536; +pub const O_NOFOLLOW: u32 = 131072; +pub const O_NOATIME: u32 = 262144; +pub const O_CLOEXEC: u32 = 524288; +pub const __O_SYNC: u32 = 1048576; +pub const O_SYNC: u32 = 1052672; +pub const O_PATH: u32 = 2097152; +pub const __O_TMPFILE: u32 = 4194304; +pub const O_TMPFILE: u32 = 4259840; +pub const O_TMPFILE_MASK: u32 = 4259904; +pub const O_NDELAY: u32 = 2048; +pub const F_DUPFD: u32 = 0; +pub const F_GETFD: u32 = 1; +pub const F_SETFD: u32 = 2; +pub const F_GETFL: u32 = 3; +pub const F_SETFL: u32 = 4; +pub const F_GETLK: u32 = 5; +pub const F_SETLK: u32 = 6; +pub const F_SETLKW: u32 = 7; +pub const F_SETOWN: u32 = 8; +pub const F_GETOWN: u32 = 9; +pub const F_SETSIG: u32 = 10; +pub const F_GETSIG: u32 = 11; +pub const F_SETOWN_EX: u32 = 15; +pub const F_GETOWN_EX: u32 = 16; +pub const F_GETOWNER_UIDS: u32 = 17; +pub const F_OFD_GETLK: u32 = 36; +pub const F_OFD_SETLK: u32 = 37; +pub const F_OFD_SETLKW: u32 = 38; +pub const F_OWNER_TID: u32 = 0; +pub const F_OWNER_PID: u32 = 1; +pub const F_OWNER_PGRP: u32 = 2; +pub const FD_CLOEXEC: u32 = 1; +pub const F_RDLCK: u32 = 0; +pub const F_WRLCK: u32 = 1; +pub const F_UNLCK: u32 = 2; +pub const F_EXLCK: u32 = 4; +pub const F_SHLCK: u32 = 8; +pub const LOCK_SH: u32 = 1; +pub const LOCK_EX: u32 = 2; +pub const LOCK_NB: u32 = 4; +pub const LOCK_UN: u32 = 8; +pub const LOCK_MAND: u32 = 32; +pub const LOCK_READ: u32 = 64; +pub const LOCK_WRITE: u32 = 128; +pub const LOCK_RW: u32 = 192; +pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; +pub const RESOLVE_NO_XDEV: u32 = 1; +pub const RESOLVE_NO_MAGICLINKS: u32 = 2; +pub const RESOLVE_NO_SYMLINKS: u32 = 4; +pub const RESOLVE_BENEATH: u32 = 8; +pub const RESOLVE_IN_ROOT: u32 = 16; +pub const RESOLVE_CACHED: u32 = 32; +pub const F_SETLEASE: u32 = 1024; +pub const F_GETLEASE: u32 = 1025; +pub const F_CANCELLK: u32 = 1029; +pub const F_DUPFD_CLOEXEC: u32 = 1030; +pub const F_NOTIFY: u32 = 1026; +pub const F_SETPIPE_SZ: u32 = 1031; +pub const F_GETPIPE_SZ: u32 = 1032; +pub const F_ADD_SEALS: u32 = 1033; +pub const F_GET_SEALS: u32 = 1034; +pub const F_SEAL_SEAL: u32 = 1; +pub const F_SEAL_SHRINK: u32 = 2; +pub const F_SEAL_GROW: u32 = 4; +pub const F_SEAL_WRITE: u32 = 8; +pub const F_SEAL_FUTURE_WRITE: u32 = 16; +pub const F_SEAL_EXEC: u32 = 32; +pub const F_GET_RW_HINT: u32 = 1035; +pub const F_SET_RW_HINT: u32 = 1036; +pub const F_GET_FILE_RW_HINT: u32 = 1037; +pub const F_SET_FILE_RW_HINT: u32 = 1038; +pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; +pub const RWH_WRITE_LIFE_NONE: u32 = 1; +pub const RWH_WRITE_LIFE_SHORT: u32 = 2; +pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; +pub const RWH_WRITE_LIFE_LONG: u32 = 4; +pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; +pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; +pub const DN_ACCESS: u32 = 1; +pub const DN_MODIFY: u32 = 2; +pub const DN_CREATE: u32 = 4; +pub const DN_DELETE: u32 = 8; +pub const DN_RENAME: u32 = 16; +pub const DN_ATTRIB: u32 = 32; +pub const DN_MULTISHOT: u32 = 2147483648; +pub const AT_FDCWD: i32 = -100; +pub const AT_SYMLINK_NOFOLLOW: u32 = 256; +pub const AT_EACCESS: u32 = 512; +pub const AT_REMOVEDIR: u32 = 512; +pub const AT_SYMLINK_FOLLOW: u32 = 1024; +pub const AT_NO_AUTOMOUNT: u32 = 2048; +pub const AT_EMPTY_PATH: u32 = 4096; +pub const AT_STATX_SYNC_TYPE: u32 = 24576; +pub const AT_STATX_SYNC_AS_STAT: u32 = 0; +pub const AT_STATX_FORCE_SYNC: u32 = 8192; +pub const AT_STATX_DONT_SYNC: u32 = 16384; +pub const AT_RECURSIVE: u32 = 32768; +pub const EPOLL_CLOEXEC: u32 = 524288; +pub const EPOLL_CTL_ADD: u32 = 1; +pub const EPOLL_CTL_DEL: u32 = 2; +pub const EPOLL_CTL_MOD: u32 = 3; +pub const POSIX_FADV_NORMAL: u32 = 0; +pub const POSIX_FADV_RANDOM: u32 = 1; +pub const POSIX_FADV_SEQUENTIAL: u32 = 2; +pub const POSIX_FADV_WILLNEED: u32 = 3; +pub const POSIX_FADV_DONTNEED: u32 = 4; +pub const POSIX_FADV_NOREUSE: u32 = 5; +pub const FALLOC_FL_KEEP_SIZE: u32 = 1; +pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; +pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; +pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; +pub const FALLOC_FL_ZERO_RANGE: u32 = 16; +pub const FALLOC_FL_INSERT_RANGE: u32 = 32; +pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 14; +pub const _IOC_DIRBITS: u32 = 2; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 3; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 30; +pub const _IOC_NONE: u32 = 0; +pub const _IOC_WRITE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const IOC_IN: u32 = 1073741824; +pub const IOC_OUT: u32 = 2147483648; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const OPEN_TREE_CLOEXEC: u32 = 524288; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const FUTEX_WAIT: u32 = 0; +pub const FUTEX_WAKE: u32 = 1; +pub const FUTEX_FD: u32 = 2; +pub const FUTEX_REQUEUE: u32 = 3; +pub const FUTEX_CMP_REQUEUE: u32 = 4; +pub const FUTEX_WAKE_OP: u32 = 5; +pub const FUTEX_LOCK_PI: u32 = 6; +pub const FUTEX_UNLOCK_PI: u32 = 7; +pub const FUTEX_TRYLOCK_PI: u32 = 8; +pub const FUTEX_WAIT_BITSET: u32 = 9; +pub const FUTEX_WAKE_BITSET: u32 = 10; +pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; +pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; +pub const FUTEX_LOCK_PI2: u32 = 13; +pub const FUTEX_PRIVATE_FLAG: u32 = 128; +pub const FUTEX_CLOCK_REALTIME: u32 = 256; +pub const FUTEX_CMD_MASK: i32 = -385; +pub const FUTEX_WAIT_PRIVATE: u32 = 128; +pub const FUTEX_WAKE_PRIVATE: u32 = 129; +pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; +pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; +pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; +pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; +pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; +pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; +pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; +pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; +pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; +pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; +pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; +pub const FUTEX_32: u32 = 2; +pub const FUTEX_WAITV_MAX: u32 = 128; +pub const FUTEX_WAITERS: u32 = 2147483648; +pub const FUTEX_OWNER_DIED: u32 = 1073741824; +pub const FUTEX_TID_MASK: u32 = 1073741823; +pub const ROBUST_LIST_LIMIT: u32 = 2048; +pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; +pub const FUTEX_OP_SET: u32 = 0; +pub const FUTEX_OP_ADD: u32 = 1; +pub const FUTEX_OP_OR: u32 = 2; +pub const FUTEX_OP_ANDN: u32 = 3; +pub const FUTEX_OP_XOR: u32 = 4; +pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; +pub const FUTEX_OP_CMP_EQ: u32 = 0; +pub const FUTEX_OP_CMP_NE: u32 = 1; +pub const FUTEX_OP_CMP_LT: u32 = 2; +pub const FUTEX_OP_CMP_LE: u32 = 3; +pub const FUTEX_OP_CMP_GT: u32 = 4; +pub const FUTEX_OP_CMP_GE: u32 = 5; +pub const IN_ACCESS: u32 = 1; +pub const IN_MODIFY: u32 = 2; +pub const IN_ATTRIB: u32 = 4; +pub const IN_CLOSE_WRITE: u32 = 8; +pub const IN_CLOSE_NOWRITE: u32 = 16; +pub const IN_OPEN: u32 = 32; +pub const IN_MOVED_FROM: u32 = 64; +pub const IN_MOVED_TO: u32 = 128; +pub const IN_CREATE: u32 = 256; +pub const IN_DELETE: u32 = 512; +pub const IN_DELETE_SELF: u32 = 1024; +pub const IN_MOVE_SELF: u32 = 2048; +pub const IN_UNMOUNT: u32 = 8192; +pub const IN_Q_OVERFLOW: u32 = 16384; +pub const IN_IGNORED: u32 = 32768; +pub const IN_CLOSE: u32 = 24; +pub const IN_MOVE: u32 = 192; +pub const IN_ONLYDIR: u32 = 16777216; +pub const IN_DONT_FOLLOW: u32 = 33554432; +pub const IN_EXCL_UNLINK: u32 = 67108864; +pub const IN_MASK_CREATE: u32 = 268435456; +pub const IN_MASK_ADD: u32 = 536870912; +pub const IN_ISDIR: u32 = 1073741824; +pub const IN_ONESHOT: u32 = 2147483648; +pub const IN_ALL_EVENTS: u32 = 4095; +pub const IN_CLOEXEC: u32 = 524288; +pub const IN_NONBLOCK: u32 = 2048; +pub const ADFS_SUPER_MAGIC: u32 = 44533; +pub const AFFS_SUPER_MAGIC: u32 = 44543; +pub const AFS_SUPER_MAGIC: u32 = 1397113167; +pub const AUTOFS_SUPER_MAGIC: u32 = 391; +pub const CEPH_SUPER_MAGIC: u32 = 12805120; +pub const CODA_SUPER_MAGIC: u32 = 1937076805; +pub const CRAMFS_MAGIC: u32 = 684539205; +pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; +pub const DEBUGFS_MAGIC: u32 = 1684170528; +pub const SECURITYFS_MAGIC: u32 = 1935894131; +pub const SELINUX_MAGIC: u32 = 4185718668; +pub const SMACK_MAGIC: u32 = 1128357203; +pub const RAMFS_MAGIC: u32 = 2240043254; +pub const TMPFS_MAGIC: u32 = 16914836; +pub const HUGETLBFS_MAGIC: u32 = 2508478710; +pub const SQUASHFS_MAGIC: u32 = 1936814952; +pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; +pub const EFS_SUPER_MAGIC: u32 = 4278867; +pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; +pub const EXT2_SUPER_MAGIC: u32 = 61267; +pub const EXT3_SUPER_MAGIC: u32 = 61267; +pub const XENFS_SUPER_MAGIC: u32 = 2881100148; +pub const EXT4_SUPER_MAGIC: u32 = 61267; +pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; +pub const NILFS_SUPER_MAGIC: u32 = 13364; +pub const F2FS_SUPER_MAGIC: u32 = 4076150800; +pub const HPFS_SUPER_MAGIC: u32 = 4187351113; +pub const ISOFS_SUPER_MAGIC: u32 = 38496; +pub const JFFS2_SUPER_MAGIC: u32 = 29366; +pub const XFS_SUPER_MAGIC: u32 = 1481003842; +pub const PSTOREFS_MAGIC: u32 = 1634035564; +pub const EFIVARFS_MAGIC: u32 = 3730735588; +pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; +pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; +pub const FUSE_SUPER_MAGIC: u32 = 1702057286; +pub const MINIX_SUPER_MAGIC: u32 = 4991; +pub const MINIX_SUPER_MAGIC2: u32 = 5007; +pub const MINIX2_SUPER_MAGIC: u32 = 9320; +pub const MINIX2_SUPER_MAGIC2: u32 = 9336; +pub const MINIX3_SUPER_MAGIC: u32 = 19802; +pub const MSDOS_SUPER_MAGIC: u32 = 19780; +pub const EXFAT_SUPER_MAGIC: u32 = 538032816; +pub const NCP_SUPER_MAGIC: u32 = 22092; +pub const NFS_SUPER_MAGIC: u32 = 26985; +pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; +pub const OPENPROM_SUPER_MAGIC: u32 = 40865; +pub const QNX4_SUPER_MAGIC: u32 = 47; +pub const QNX6_SUPER_MAGIC: u32 = 1746473250; +pub const AFS_FS_MAGIC: u32 = 1799439955; +pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; +pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9] = b"ReIsErFs\0"; +pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr2Fs\0"; +pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr3Fs\0"; +pub const SMB_SUPER_MAGIC: u32 = 20859; +pub const CIFS_SUPER_MAGIC: u32 = 4283649346; +pub const SMB2_SUPER_MAGIC: u32 = 4266872130; +pub const CGROUP_SUPER_MAGIC: u32 = 2613483; +pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; +pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; +pub const STACK_END_MAGIC: u32 = 1470918301; +pub const TRACEFS_MAGIC: u32 = 1953653091; +pub const V9FS_MAGIC: u32 = 16914839; +pub const BDEVFS_MAGIC: u32 = 1650746742; +pub const DAXFS_MAGIC: u32 = 1684300152; +pub const BINFMTFS_MAGIC: u32 = 1112100429; +pub const DEVPTS_SUPER_MAGIC: u32 = 7377; +pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; +pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; +pub const PIPEFS_MAGIC: u32 = 1346981957; +pub const PROC_SUPER_MAGIC: u32 = 40864; +pub const SOCKFS_MAGIC: u32 = 1397703499; +pub const SYSFS_MAGIC: u32 = 1650812274; +pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; +pub const MTD_INODE_FS_MAGIC: u32 = 288389204; +pub const ANON_INODE_FS_MAGIC: u32 = 151263540; +pub const BTRFS_TEST_MAGIC: u32 = 1936880249; +pub const NSFS_MAGIC: u32 = 1853056627; +pub const BPF_FS_MAGIC: u32 = 3405662737; +pub const AAFS_MAGIC: u32 = 1513908720; +pub const ZONEFS_MAGIC: u32 = 1515144787; +pub const UDF_SUPER_MAGIC: u32 = 352400198; +pub const DMA_BUF_MAGIC: u32 = 1145913666; +pub const DEVMEM_MAGIC: u32 = 1162691661; +pub const SECRETMEM_MAGIC: u32 = 1397048141; +pub const PROT_READ: u32 = 1; +pub const PROT_WRITE: u32 = 2; +pub const PROT_EXEC: u32 = 4; +pub const PROT_SEM: u32 = 8; +pub const PROT_NONE: u32 = 0; +pub const PROT_GROWSDOWN: u32 = 16777216; +pub const PROT_GROWSUP: u32 = 33554432; +pub const MAP_TYPE: u32 = 15; +pub const MAP_FIXED: u32 = 16; +pub const MAP_ANONYMOUS: u32 = 32; +pub const MAP_POPULATE: u32 = 32768; +pub const MAP_NONBLOCK: u32 = 65536; +pub const MAP_STACK: u32 = 131072; +pub const MAP_HUGETLB: u32 = 262144; +pub const MAP_SYNC: u32 = 524288; +pub const MAP_FIXED_NOREPLACE: u32 = 1048576; +pub const MAP_UNINITIALIZED: u32 = 67108864; +pub const MLOCK_ONFAULT: u32 = 1; +pub const MS_ASYNC: u32 = 1; +pub const MS_INVALIDATE: u32 = 2; +pub const MS_SYNC: u32 = 4; +pub const MADV_NORMAL: u32 = 0; +pub const MADV_RANDOM: u32 = 1; +pub const MADV_SEQUENTIAL: u32 = 2; +pub const MADV_WILLNEED: u32 = 3; +pub const MADV_DONTNEED: u32 = 4; +pub const MADV_FREE: u32 = 8; +pub const MADV_REMOVE: u32 = 9; +pub const MADV_DONTFORK: u32 = 10; +pub const MADV_DOFORK: u32 = 11; +pub const MADV_HWPOISON: u32 = 100; +pub const MADV_SOFT_OFFLINE: u32 = 101; +pub const MADV_MERGEABLE: u32 = 12; +pub const MADV_UNMERGEABLE: u32 = 13; +pub const MADV_HUGEPAGE: u32 = 14; +pub const MADV_NOHUGEPAGE: u32 = 15; +pub const MADV_DONTDUMP: u32 = 16; +pub const MADV_DODUMP: u32 = 17; +pub const MADV_WIPEONFORK: u32 = 18; +pub const MADV_KEEPONFORK: u32 = 19; +pub const MADV_COLD: u32 = 20; +pub const MADV_PAGEOUT: u32 = 21; +pub const MADV_POPULATE_READ: u32 = 22; +pub const MADV_POPULATE_WRITE: u32 = 23; +pub const MADV_DONTNEED_LOCKED: u32 = 24; +pub const MADV_COLLAPSE: u32 = 25; +pub const MAP_FILE: u32 = 0; +pub const PKEY_DISABLE_ACCESS: u32 = 1; +pub const PKEY_DISABLE_WRITE: u32 = 2; +pub const PKEY_ACCESS_MASK: u32 = 3; +pub const MAP_GROWSDOWN: u32 = 256; +pub const MAP_DENYWRITE: u32 = 2048; +pub const MAP_EXECUTABLE: u32 = 4096; +pub const MAP_LOCKED: u32 = 8192; +pub const MAP_NORESERVE: u32 = 16384; +pub const MCL_CURRENT: u32 = 1; +pub const MCL_FUTURE: u32 = 2; +pub const MCL_ONFAULT: u32 = 4; +pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; +pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; +pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; +pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; +pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; +pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; +pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; +pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; +pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; +pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; +pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; +pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; +pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; +pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; +pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; +pub const MREMAP_MAYMOVE: u32 = 1; +pub const MREMAP_FIXED: u32 = 2; +pub const MREMAP_DONTUNMAP: u32 = 4; +pub const OVERCOMMIT_GUESS: u32 = 0; +pub const OVERCOMMIT_ALWAYS: u32 = 1; +pub const OVERCOMMIT_NEVER: u32 = 2; +pub const MAP_SHARED: u32 = 1; +pub const MAP_PRIVATE: u32 = 2; +pub const MAP_SHARED_VALIDATE: u32 = 3; +pub const MAP_HUGE_SHIFT: u32 = 26; +pub const MAP_HUGE_MASK: u32 = 63; +pub const MAP_HUGE_16KB: u32 = 939524096; +pub const MAP_HUGE_64KB: u32 = 1073741824; +pub const MAP_HUGE_512KB: u32 = 1275068416; +pub const MAP_HUGE_1MB: u32 = 1342177280; +pub const MAP_HUGE_2MB: u32 = 1409286144; +pub const MAP_HUGE_8MB: u32 = 1543503872; +pub const MAP_HUGE_16MB: u32 = 1610612736; +pub const MAP_HUGE_32MB: u32 = 1677721600; +pub const MAP_HUGE_256MB: u32 = 1879048192; +pub const MAP_HUGE_512MB: u32 = 1946157056; +pub const MAP_HUGE_1GB: u32 = 2013265920; +pub const MAP_HUGE_2GB: u32 = 2080374784; +pub const MAP_HUGE_16GB: u32 = 2281701376; +pub const POLLIN: u32 = 1; +pub const POLLPRI: u32 = 2; +pub const POLLOUT: u32 = 4; +pub const POLLERR: u32 = 8; +pub const POLLHUP: u32 = 16; +pub const POLLNVAL: u32 = 32; +pub const POLLRDNORM: u32 = 64; +pub const POLLRDBAND: u32 = 128; +pub const POLLWRNORM: u32 = 256; +pub const POLLWRBAND: u32 = 512; +pub const POLLMSG: u32 = 1024; +pub const POLLREMOVE: u32 = 4096; +pub const POLLRDHUP: u32 = 8192; +pub const GRND_NONBLOCK: u32 = 1; +pub const GRND_RANDOM: u32 = 2; +pub const GRND_INSECURE: u32 = 4; +pub const ITIMER_REAL: u32 = 0; +pub const ITIMER_VIRTUAL: u32 = 1; +pub const ITIMER_PROF: u32 = 2; +pub const CLOCK_REALTIME: u32 = 0; +pub const CLOCK_MONOTONIC: u32 = 1; +pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; +pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; +pub const CLOCK_MONOTONIC_RAW: u32 = 4; +pub const CLOCK_REALTIME_COARSE: u32 = 5; +pub const CLOCK_MONOTONIC_COARSE: u32 = 6; +pub const CLOCK_BOOTTIME: u32 = 7; +pub const CLOCK_REALTIME_ALARM: u32 = 8; +pub const CLOCK_BOOTTIME_ALARM: u32 = 9; +pub const CLOCK_SGI_CYCLE: u32 = 10; +pub const CLOCK_TAI: u32 = 11; +pub const MAX_CLOCKS: u32 = 16; +pub const CLOCKS_MASK: u32 = 1; +pub const CLOCKS_MONO: u32 = 1; +pub const TIMER_ABSTIME: u32 = 1; +pub const RUSAGE_SELF: u32 = 0; +pub const RUSAGE_CHILDREN: i32 = -1; +pub const RUSAGE_BOTH: i32 = -2; +pub const RUSAGE_THREAD: u32 = 1; +pub const RLIM64_INFINITY: i32 = -1; +pub const PRIO_MIN: i32 = -20; +pub const PRIO_MAX: u32 = 20; +pub const PRIO_PROCESS: u32 = 0; +pub const PRIO_PGRP: u32 = 1; +pub const PRIO_USER: u32 = 2; +pub const _STK_LIM: u32 = 8388608; +pub const MLOCK_LIMIT: u32 = 8388608; +pub const RLIMIT_CPU: u32 = 0; +pub const RLIMIT_FSIZE: u32 = 1; +pub const RLIMIT_DATA: u32 = 2; +pub const RLIMIT_STACK: u32 = 3; +pub const RLIMIT_CORE: u32 = 4; +pub const RLIMIT_RSS: u32 = 5; +pub const RLIMIT_NPROC: u32 = 6; +pub const RLIMIT_NOFILE: u32 = 7; +pub const RLIMIT_MEMLOCK: u32 = 8; +pub const RLIMIT_AS: u32 = 9; +pub const RLIMIT_LOCKS: u32 = 10; +pub const RLIMIT_SIGPENDING: u32 = 11; +pub const RLIMIT_MSGQUEUE: u32 = 12; +pub const RLIMIT_NICE: u32 = 13; +pub const RLIMIT_RTPRIO: u32 = 14; +pub const RLIMIT_RTTIME: u32 = 15; +pub const RLIM_NLIMITS: u32 = 16; +pub const RLIM_INFINITY: i32 = -1; +pub const CSIGNAL: u32 = 255; +pub const CLONE_VM: u32 = 256; +pub const CLONE_FS: u32 = 512; +pub const CLONE_FILES: u32 = 1024; +pub const CLONE_SIGHAND: u32 = 2048; +pub const CLONE_PIDFD: u32 = 4096; +pub const CLONE_PTRACE: u32 = 8192; +pub const CLONE_VFORK: u32 = 16384; +pub const CLONE_PARENT: u32 = 32768; +pub const CLONE_THREAD: u32 = 65536; +pub const CLONE_NEWNS: u32 = 131072; +pub const CLONE_SYSVSEM: u32 = 262144; +pub const CLONE_SETTLS: u32 = 524288; +pub const CLONE_PARENT_SETTID: u32 = 1048576; +pub const CLONE_CHILD_CLEARTID: u32 = 2097152; +pub const CLONE_DETACHED: u32 = 4194304; +pub const CLONE_UNTRACED: u32 = 8388608; +pub const CLONE_CHILD_SETTID: u32 = 16777216; +pub const CLONE_NEWCGROUP: u32 = 33554432; +pub const CLONE_NEWUTS: u32 = 67108864; +pub const CLONE_NEWIPC: u32 = 134217728; +pub const CLONE_NEWUSER: u32 = 268435456; +pub const CLONE_NEWPID: u32 = 536870912; +pub const CLONE_NEWNET: u32 = 1073741824; +pub const CLONE_IO: u32 = 2147483648; +pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; +pub const CLONE_INTO_CGROUP: u64 = 8589934592; +pub const CLONE_NEWTIME: u32 = 128; +pub const CLONE_ARGS_SIZE_VER0: u32 = 64; +pub const CLONE_ARGS_SIZE_VER1: u32 = 80; +pub const CLONE_ARGS_SIZE_VER2: u32 = 88; +pub const SCHED_NORMAL: u32 = 0; +pub const SCHED_FIFO: u32 = 1; +pub const SCHED_RR: u32 = 2; +pub const SCHED_BATCH: u32 = 3; +pub const SCHED_IDLE: u32 = 5; +pub const SCHED_DEADLINE: u32 = 6; +pub const SCHED_RESET_ON_FORK: u32 = 1073741824; +pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; +pub const SCHED_FLAG_RECLAIM: u32 = 2; +pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; +pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; +pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; +pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; +pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; +pub const SCHED_FLAG_KEEP_ALL: u32 = 24; +pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; +pub const SCHED_FLAG_ALL: u32 = 127; +pub const _NSIG: u32 = 64; +pub const SIGHUP: u32 = 1; +pub const SIGINT: u32 = 2; +pub const SIGQUIT: u32 = 3; +pub const SIGILL: u32 = 4; +pub const SIGTRAP: u32 = 5; +pub const SIGABRT: u32 = 6; +pub const SIGIOT: u32 = 6; +pub const SIGBUS: u32 = 7; +pub const SIGFPE: u32 = 8; +pub const SIGKILL: u32 = 9; +pub const SIGUSR1: u32 = 10; +pub const SIGSEGV: u32 = 11; +pub const SIGUSR2: u32 = 12; +pub const SIGPIPE: u32 = 13; +pub const SIGALRM: u32 = 14; +pub const SIGTERM: u32 = 15; +pub const SIGSTKFLT: u32 = 16; +pub const SIGCHLD: u32 = 17; +pub const SIGCONT: u32 = 18; +pub const SIGSTOP: u32 = 19; +pub const SIGTSTP: u32 = 20; +pub const SIGTTIN: u32 = 21; +pub const SIGTTOU: u32 = 22; +pub const SIGURG: u32 = 23; +pub const SIGXCPU: u32 = 24; +pub const SIGXFSZ: u32 = 25; +pub const SIGVTALRM: u32 = 26; +pub const SIGPROF: u32 = 27; +pub const SIGWINCH: u32 = 28; +pub const SIGIO: u32 = 29; +pub const SIGPOLL: u32 = 29; +pub const SIGPWR: u32 = 30; +pub const SIGSYS: u32 = 31; +pub const SIGUNUSED: u32 = 31; +pub const SIGRTMIN: u32 = 32; +pub const SIGRTMAX: u32 = 64; +pub const MINSIGSTKSZ: u32 = 2048; +pub const SIGSTKSZ: u32 = 8192; +pub const SA_NOCLDSTOP: u32 = 1; +pub const SA_NOCLDWAIT: u32 = 2; +pub const SA_SIGINFO: u32 = 4; +pub const SA_UNSUPPORTED: u32 = 1024; +pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SA_ONSTACK: u32 = 134217728; +pub const SA_RESTART: u32 = 268435456; +pub const SA_NODEFER: u32 = 1073741824; +pub const SA_RESETHAND: u32 = 2147483648; +pub const SA_NOMASK: u32 = 1073741824; +pub const SA_ONESHOT: u32 = 2147483648; +pub const SIG_BLOCK: u32 = 0; +pub const SIG_UNBLOCK: u32 = 1; +pub const SIG_SETMASK: u32 = 2; +pub const SI_MAX_SIZE: u32 = 128; +pub const SI_USER: u32 = 0; +pub const SI_KERNEL: u32 = 128; +pub const SI_QUEUE: i32 = -1; +pub const SI_TIMER: i32 = -2; +pub const SI_MESGQ: i32 = -3; +pub const SI_ASYNCIO: i32 = -4; +pub const SI_SIGIO: i32 = -5; +pub const SI_TKILL: i32 = -6; +pub const SI_DETHREAD: i32 = -7; +pub const SI_ASYNCNL: i32 = -60; +pub const ILL_ILLOPC: u32 = 1; +pub const ILL_ILLOPN: u32 = 2; +pub const ILL_ILLADR: u32 = 3; +pub const ILL_ILLTRP: u32 = 4; +pub const ILL_PRVOPC: u32 = 5; +pub const ILL_PRVREG: u32 = 6; +pub const ILL_COPROC: u32 = 7; +pub const ILL_BADSTK: u32 = 8; +pub const ILL_BADIADDR: u32 = 9; +pub const __ILL_BREAK: u32 = 10; +pub const __ILL_BNDMOD: u32 = 11; +pub const NSIGILL: u32 = 11; +pub const FPE_INTDIV: u32 = 1; +pub const FPE_INTOVF: u32 = 2; +pub const FPE_FLTDIV: u32 = 3; +pub const FPE_FLTOVF: u32 = 4; +pub const FPE_FLTUND: u32 = 5; +pub const FPE_FLTRES: u32 = 6; +pub const FPE_FLTINV: u32 = 7; +pub const FPE_FLTSUB: u32 = 8; +pub const __FPE_DECOVF: u32 = 9; +pub const __FPE_DECDIV: u32 = 10; +pub const __FPE_DECERR: u32 = 11; +pub const __FPE_INVASC: u32 = 12; +pub const __FPE_INVDEC: u32 = 13; +pub const FPE_FLTUNK: u32 = 14; +pub const FPE_CONDTRAP: u32 = 15; +pub const NSIGFPE: u32 = 15; +pub const SEGV_MAPERR: u32 = 1; +pub const SEGV_ACCERR: u32 = 2; +pub const SEGV_BNDERR: u32 = 3; +pub const SEGV_PKUERR: u32 = 4; +pub const SEGV_ACCADI: u32 = 5; +pub const SEGV_ADIDERR: u32 = 6; +pub const SEGV_ADIPERR: u32 = 7; +pub const SEGV_MTEAERR: u32 = 8; +pub const SEGV_MTESERR: u32 = 9; +pub const NSIGSEGV: u32 = 9; +pub const BUS_ADRALN: u32 = 1; +pub const BUS_ADRERR: u32 = 2; +pub const BUS_OBJERR: u32 = 3; +pub const BUS_MCEERR_AR: u32 = 4; +pub const BUS_MCEERR_AO: u32 = 5; +pub const NSIGBUS: u32 = 5; +pub const TRAP_BRKPT: u32 = 1; +pub const TRAP_TRACE: u32 = 2; +pub const TRAP_BRANCH: u32 = 3; +pub const TRAP_HWBKPT: u32 = 4; +pub const TRAP_UNK: u32 = 5; +pub const TRAP_PERF: u32 = 6; +pub const NSIGTRAP: u32 = 6; +pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; +pub const CLD_EXITED: u32 = 1; +pub const CLD_KILLED: u32 = 2; +pub const CLD_DUMPED: u32 = 3; +pub const CLD_TRAPPED: u32 = 4; +pub const CLD_STOPPED: u32 = 5; +pub const CLD_CONTINUED: u32 = 6; +pub const NSIGCHLD: u32 = 6; +pub const POLL_IN: u32 = 1; +pub const POLL_OUT: u32 = 2; +pub const POLL_MSG: u32 = 3; +pub const POLL_ERR: u32 = 4; +pub const POLL_PRI: u32 = 5; +pub const POLL_HUP: u32 = 6; +pub const NSIGPOLL: u32 = 6; +pub const SYS_SECCOMP: u32 = 1; +pub const SYS_USER_DISPATCH: u32 = 2; +pub const NSIGSYS: u32 = 2; +pub const EMT_TAGOVF: u32 = 1; +pub const NSIGEMT: u32 = 1; +pub const SIGEV_SIGNAL: u32 = 0; +pub const SIGEV_NONE: u32 = 1; +pub const SIGEV_THREAD: u32 = 2; +pub const SIGEV_THREAD_ID: u32 = 4; +pub const SIGEV_MAX_SIZE: u32 = 64; +pub const SS_ONSTACK: u32 = 1; +pub const SS_DISABLE: u32 = 2; +pub const SS_AUTODISARM: u32 = 2147483648; +pub const SS_FLAG_BITS: u32 = 2147483648; +pub const S_IFMT: u32 = 61440; +pub const S_IFSOCK: u32 = 49152; +pub const S_IFLNK: u32 = 40960; +pub const S_IFREG: u32 = 32768; +pub const S_IFBLK: u32 = 24576; +pub const S_IFDIR: u32 = 16384; +pub const S_IFCHR: u32 = 8192; +pub const S_IFIFO: u32 = 4096; +pub const S_ISUID: u32 = 2048; +pub const S_ISGID: u32 = 1024; +pub const S_ISVTX: u32 = 512; +pub const S_IRWXU: u32 = 448; +pub const S_IRUSR: u32 = 256; +pub const S_IWUSR: u32 = 128; +pub const S_IXUSR: u32 = 64; +pub const S_IRWXG: u32 = 56; +pub const S_IRGRP: u32 = 32; +pub const S_IWGRP: u32 = 16; +pub const S_IXGRP: u32 = 8; +pub const S_IRWXO: u32 = 7; +pub const S_IROTH: u32 = 4; +pub const S_IWOTH: u32 = 2; +pub const S_IXOTH: u32 = 1; +pub const STATX_TYPE: u32 = 1; +pub const STATX_MODE: u32 = 2; +pub const STATX_NLINK: u32 = 4; +pub const STATX_UID: u32 = 8; +pub const STATX_GID: u32 = 16; +pub const STATX_ATIME: u32 = 32; +pub const STATX_MTIME: u32 = 64; +pub const STATX_CTIME: u32 = 128; +pub const STATX_INO: u32 = 256; +pub const STATX_SIZE: u32 = 512; +pub const STATX_BLOCKS: u32 = 1024; +pub const STATX_BASIC_STATS: u32 = 2047; +pub const STATX_BTIME: u32 = 2048; +pub const STATX_MNT_ID: u32 = 4096; +pub const STATX_DIOALIGN: u32 = 8192; +pub const STATX__RESERVED: u32 = 2147483648; +pub const STATX_ALL: u32 = 4095; +pub const STATX_ATTR_COMPRESSED: u32 = 4; +pub const STATX_ATTR_IMMUTABLE: u32 = 16; +pub const STATX_ATTR_APPEND: u32 = 32; +pub const STATX_ATTR_NODUMP: u32 = 64; +pub const STATX_ATTR_ENCRYPTED: u32 = 2048; +pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; +pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; +pub const STATX_ATTR_VERITY: u32 = 1048576; +pub const STATX_ATTR_DAX: u32 = 2097152; +pub const IGNBRK: u32 = 1; +pub const BRKINT: u32 = 2; +pub const IGNPAR: u32 = 4; +pub const PARMRK: u32 = 8; +pub const INPCK: u32 = 16; +pub const ISTRIP: u32 = 32; +pub const INLCR: u32 = 64; +pub const IGNCR: u32 = 128; +pub const ICRNL: u32 = 256; +pub const IXANY: u32 = 2048; +pub const OPOST: u32 = 1; +pub const OCRNL: u32 = 8; +pub const ONOCR: u32 = 16; +pub const ONLRET: u32 = 32; +pub const OFILL: u32 = 64; +pub const OFDEL: u32 = 128; +pub const B0: u32 = 0; +pub const B50: u32 = 1; +pub const B75: u32 = 2; +pub const B110: u32 = 3; +pub const B134: u32 = 4; +pub const B150: u32 = 5; +pub const B200: u32 = 6; +pub const B300: u32 = 7; +pub const B600: u32 = 8; +pub const B1200: u32 = 9; +pub const B1800: u32 = 10; +pub const B2400: u32 = 11; +pub const B4800: u32 = 12; +pub const B9600: u32 = 13; +pub const B19200: u32 = 14; +pub const B38400: u32 = 15; +pub const EXTA: u32 = 14; +pub const EXTB: u32 = 15; +pub const ADDRB: u32 = 536870912; +pub const CMSPAR: u32 = 1073741824; +pub const CRTSCTS: u32 = 2147483648; +pub const IBSHIFT: u32 = 16; +pub const TCOOFF: u32 = 0; +pub const TCOON: u32 = 1; +pub const TCIOFF: u32 = 2; +pub const TCION: u32 = 3; +pub const TCIFLUSH: u32 = 0; +pub const TCOFLUSH: u32 = 1; +pub const TCIOFLUSH: u32 = 2; +pub const NCCS: u32 = 19; +pub const VINTR: u32 = 0; +pub const VQUIT: u32 = 1; +pub const VERASE: u32 = 2; +pub const VKILL: u32 = 3; +pub const VEOF: u32 = 4; +pub const VTIME: u32 = 5; +pub const VMIN: u32 = 6; +pub const VSWTC: u32 = 7; +pub const VSTART: u32 = 8; +pub const VSTOP: u32 = 9; +pub const VSUSP: u32 = 10; +pub const VEOL: u32 = 11; +pub const VREPRINT: u32 = 12; +pub const VDISCARD: u32 = 13; +pub const VWERASE: u32 = 14; +pub const VLNEXT: u32 = 15; +pub const VEOL2: u32 = 16; +pub const IUCLC: u32 = 512; +pub const IXON: u32 = 1024; +pub const IXOFF: u32 = 4096; +pub const IMAXBEL: u32 = 8192; +pub const IUTF8: u32 = 16384; +pub const OLCUC: u32 = 2; +pub const ONLCR: u32 = 4; +pub const NLDLY: u32 = 256; +pub const NL0: u32 = 0; +pub const NL1: u32 = 256; +pub const CRDLY: u32 = 1536; +pub const CR0: u32 = 0; +pub const CR1: u32 = 512; +pub const CR2: u32 = 1024; +pub const CR3: u32 = 1536; +pub const TABDLY: u32 = 6144; +pub const TAB0: u32 = 0; +pub const TAB1: u32 = 2048; +pub const TAB2: u32 = 4096; +pub const TAB3: u32 = 6144; +pub const XTABS: u32 = 6144; +pub const BSDLY: u32 = 8192; +pub const BS0: u32 = 0; +pub const BS1: u32 = 8192; +pub const VTDLY: u32 = 16384; +pub const VT0: u32 = 0; +pub const VT1: u32 = 16384; +pub const FFDLY: u32 = 32768; +pub const FF0: u32 = 0; +pub const FF1: u32 = 32768; +pub const CBAUD: u32 = 4111; +pub const CSIZE: u32 = 48; +pub const CS5: u32 = 0; +pub const CS6: u32 = 16; +pub const CS7: u32 = 32; +pub const CS8: u32 = 48; +pub const CSTOPB: u32 = 64; +pub const CREAD: u32 = 128; +pub const PARENB: u32 = 256; +pub const PARODD: u32 = 512; +pub const HUPCL: u32 = 1024; +pub const CLOCAL: u32 = 2048; +pub const CBAUDEX: u32 = 4096; +pub const BOTHER: u32 = 4096; +pub const B57600: u32 = 4097; +pub const B115200: u32 = 4098; +pub const B230400: u32 = 4099; +pub const B460800: u32 = 4100; +pub const B500000: u32 = 4101; +pub const B576000: u32 = 4102; +pub const B921600: u32 = 4103; +pub const B1000000: u32 = 4104; +pub const B1152000: u32 = 4105; +pub const B1500000: u32 = 4106; +pub const B2000000: u32 = 4107; +pub const B2500000: u32 = 4108; +pub const B3000000: u32 = 4109; +pub const B3500000: u32 = 4110; +pub const B4000000: u32 = 4111; +pub const CIBAUD: u32 = 269418496; +pub const ISIG: u32 = 1; +pub const ICANON: u32 = 2; +pub const XCASE: u32 = 4; +pub const ECHO: u32 = 8; +pub const ECHOE: u32 = 16; +pub const ECHOK: u32 = 32; +pub const ECHONL: u32 = 64; +pub const NOFLSH: u32 = 128; +pub const TOSTOP: u32 = 256; +pub const ECHOCTL: u32 = 512; +pub const ECHOPRT: u32 = 1024; +pub const ECHOKE: u32 = 2048; +pub const FLUSHO: u32 = 4096; +pub const PENDIN: u32 = 16384; +pub const IEXTEN: u32 = 32768; +pub const EXTPROC: u32 = 65536; +pub const TCSANOW: u32 = 0; +pub const TCSADRAIN: u32 = 1; +pub const TCSAFLUSH: u32 = 2; +pub const TIOCPKT_DATA: u32 = 0; +pub const TIOCPKT_FLUSHREAD: u32 = 1; +pub const TIOCPKT_FLUSHWRITE: u32 = 2; +pub const TIOCPKT_STOP: u32 = 4; +pub const TIOCPKT_START: u32 = 8; +pub const TIOCPKT_NOSTOP: u32 = 16; +pub const TIOCPKT_DOSTOP: u32 = 32; +pub const TIOCPKT_IOCTL: u32 = 64; +pub const TIOCSER_TEMT: u32 = 1; +pub const NCC: u32 = 8; +pub const TIOCM_LE: u32 = 1; +pub const TIOCM_DTR: u32 = 2; +pub const TIOCM_RTS: u32 = 4; +pub const TIOCM_ST: u32 = 8; +pub const TIOCM_SR: u32 = 16; +pub const TIOCM_CTS: u32 = 32; +pub const TIOCM_CAR: u32 = 64; +pub const TIOCM_RNG: u32 = 128; +pub const TIOCM_DSR: u32 = 256; +pub const TIOCM_CD: u32 = 64; +pub const TIOCM_RI: u32 = 128; +pub const TIOCM_OUT1: u32 = 8192; +pub const TIOCM_OUT2: u32 = 16384; +pub const TIOCM_LOOP: u32 = 32768; +pub const UIO_FASTIOV: u32 = 8; +pub const UIO_MAXIOV: u32 = 1024; +pub const __NR_io_setup: u32 = 0; +pub const __NR_io_destroy: u32 = 1; +pub const __NR_io_submit: u32 = 2; +pub const __NR_io_cancel: u32 = 3; +pub const __NR_io_getevents: u32 = 4; +pub const __NR_setxattr: u32 = 5; +pub const __NR_lsetxattr: u32 = 6; +pub const __NR_fsetxattr: u32 = 7; +pub const __NR_getxattr: u32 = 8; +pub const __NR_lgetxattr: u32 = 9; +pub const __NR_fgetxattr: u32 = 10; +pub const __NR_listxattr: u32 = 11; +pub const __NR_llistxattr: u32 = 12; +pub const __NR_flistxattr: u32 = 13; +pub const __NR_removexattr: u32 = 14; +pub const __NR_lremovexattr: u32 = 15; +pub const __NR_fremovexattr: u32 = 16; +pub const __NR_getcwd: u32 = 17; +pub const __NR_lookup_dcookie: u32 = 18; +pub const __NR_eventfd2: u32 = 19; +pub const __NR_epoll_create1: u32 = 20; +pub const __NR_epoll_ctl: u32 = 21; +pub const __NR_epoll_pwait: u32 = 22; +pub const __NR_dup: u32 = 23; +pub const __NR_dup3: u32 = 24; +pub const __NR3264_fcntl: u32 = 25; +pub const __NR_inotify_init1: u32 = 26; +pub const __NR_inotify_add_watch: u32 = 27; +pub const __NR_inotify_rm_watch: u32 = 28; +pub const __NR_ioctl: u32 = 29; +pub const __NR_ioprio_set: u32 = 30; +pub const __NR_ioprio_get: u32 = 31; +pub const __NR_flock: u32 = 32; +pub const __NR_mknodat: u32 = 33; +pub const __NR_mkdirat: u32 = 34; +pub const __NR_unlinkat: u32 = 35; +pub const __NR_symlinkat: u32 = 36; +pub const __NR_linkat: u32 = 37; +pub const __NR_umount2: u32 = 39; +pub const __NR_mount: u32 = 40; +pub const __NR_pivot_root: u32 = 41; +pub const __NR_nfsservctl: u32 = 42; +pub const __NR3264_statfs: u32 = 43; +pub const __NR3264_fstatfs: u32 = 44; +pub const __NR3264_truncate: u32 = 45; +pub const __NR3264_ftruncate: u32 = 46; +pub const __NR_fallocate: u32 = 47; +pub const __NR_faccessat: u32 = 48; +pub const __NR_chdir: u32 = 49; +pub const __NR_fchdir: u32 = 50; +pub const __NR_chroot: u32 = 51; +pub const __NR_fchmod: u32 = 52; +pub const __NR_fchmodat: u32 = 53; +pub const __NR_fchownat: u32 = 54; +pub const __NR_fchown: u32 = 55; +pub const __NR_openat: u32 = 56; +pub const __NR_close: u32 = 57; +pub const __NR_vhangup: u32 = 58; +pub const __NR_pipe2: u32 = 59; +pub const __NR_quotactl: u32 = 60; +pub const __NR_getdents64: u32 = 61; +pub const __NR3264_lseek: u32 = 62; +pub const __NR_read: u32 = 63; +pub const __NR_write: u32 = 64; +pub const __NR_readv: u32 = 65; +pub const __NR_writev: u32 = 66; +pub const __NR_pread64: u32 = 67; +pub const __NR_pwrite64: u32 = 68; +pub const __NR_preadv: u32 = 69; +pub const __NR_pwritev: u32 = 70; +pub const __NR3264_sendfile: u32 = 71; +pub const __NR_pselect6: u32 = 72; +pub const __NR_ppoll: u32 = 73; +pub const __NR_signalfd4: u32 = 74; +pub const __NR_vmsplice: u32 = 75; +pub const __NR_splice: u32 = 76; +pub const __NR_tee: u32 = 77; +pub const __NR_readlinkat: u32 = 78; +pub const __NR3264_fstatat: u32 = 79; +pub const __NR3264_fstat: u32 = 80; +pub const __NR_sync: u32 = 81; +pub const __NR_fsync: u32 = 82; +pub const __NR_fdatasync: u32 = 83; +pub const __NR_sync_file_range: u32 = 84; +pub const __NR_timerfd_create: u32 = 85; +pub const __NR_timerfd_settime: u32 = 86; +pub const __NR_timerfd_gettime: u32 = 87; +pub const __NR_utimensat: u32 = 88; +pub const __NR_acct: u32 = 89; +pub const __NR_capget: u32 = 90; +pub const __NR_capset: u32 = 91; +pub const __NR_personality: u32 = 92; +pub const __NR_exit: u32 = 93; +pub const __NR_exit_group: u32 = 94; +pub const __NR_waitid: u32 = 95; +pub const __NR_set_tid_address: u32 = 96; +pub const __NR_unshare: u32 = 97; +pub const __NR_futex: u32 = 98; +pub const __NR_set_robust_list: u32 = 99; +pub const __NR_get_robust_list: u32 = 100; +pub const __NR_nanosleep: u32 = 101; +pub const __NR_getitimer: u32 = 102; +pub const __NR_setitimer: u32 = 103; +pub const __NR_kexec_load: u32 = 104; +pub const __NR_init_module: u32 = 105; +pub const __NR_delete_module: u32 = 106; +pub const __NR_timer_create: u32 = 107; +pub const __NR_timer_gettime: u32 = 108; +pub const __NR_timer_getoverrun: u32 = 109; +pub const __NR_timer_settime: u32 = 110; +pub const __NR_timer_delete: u32 = 111; +pub const __NR_clock_settime: u32 = 112; +pub const __NR_clock_gettime: u32 = 113; +pub const __NR_clock_getres: u32 = 114; +pub const __NR_clock_nanosleep: u32 = 115; +pub const __NR_syslog: u32 = 116; +pub const __NR_ptrace: u32 = 117; +pub const __NR_sched_setparam: u32 = 118; +pub const __NR_sched_setscheduler: u32 = 119; +pub const __NR_sched_getscheduler: u32 = 120; +pub const __NR_sched_getparam: u32 = 121; +pub const __NR_sched_setaffinity: u32 = 122; +pub const __NR_sched_getaffinity: u32 = 123; +pub const __NR_sched_yield: u32 = 124; +pub const __NR_sched_get_priority_max: u32 = 125; +pub const __NR_sched_get_priority_min: u32 = 126; +pub const __NR_sched_rr_get_interval: u32 = 127; +pub const __NR_restart_syscall: u32 = 128; +pub const __NR_kill: u32 = 129; +pub const __NR_tkill: u32 = 130; +pub const __NR_tgkill: u32 = 131; +pub const __NR_sigaltstack: u32 = 132; +pub const __NR_rt_sigsuspend: u32 = 133; +pub const __NR_rt_sigaction: u32 = 134; +pub const __NR_rt_sigprocmask: u32 = 135; +pub const __NR_rt_sigpending: u32 = 136; +pub const __NR_rt_sigtimedwait: u32 = 137; +pub const __NR_rt_sigqueueinfo: u32 = 138; +pub const __NR_rt_sigreturn: u32 = 139; +pub const __NR_setpriority: u32 = 140; +pub const __NR_getpriority: u32 = 141; +pub const __NR_reboot: u32 = 142; +pub const __NR_setregid: u32 = 143; +pub const __NR_setgid: u32 = 144; +pub const __NR_setreuid: u32 = 145; +pub const __NR_setuid: u32 = 146; +pub const __NR_setresuid: u32 = 147; +pub const __NR_getresuid: u32 = 148; +pub const __NR_setresgid: u32 = 149; +pub const __NR_getresgid: u32 = 150; +pub const __NR_setfsuid: u32 = 151; +pub const __NR_setfsgid: u32 = 152; +pub const __NR_times: u32 = 153; +pub const __NR_setpgid: u32 = 154; +pub const __NR_getpgid: u32 = 155; +pub const __NR_getsid: u32 = 156; +pub const __NR_setsid: u32 = 157; +pub const __NR_getgroups: u32 = 158; +pub const __NR_setgroups: u32 = 159; +pub const __NR_uname: u32 = 160; +pub const __NR_sethostname: u32 = 161; +pub const __NR_setdomainname: u32 = 162; +pub const __NR_getrlimit: u32 = 163; +pub const __NR_setrlimit: u32 = 164; +pub const __NR_getrusage: u32 = 165; +pub const __NR_umask: u32 = 166; +pub const __NR_prctl: u32 = 167; +pub const __NR_getcpu: u32 = 168; +pub const __NR_gettimeofday: u32 = 169; +pub const __NR_settimeofday: u32 = 170; +pub const __NR_adjtimex: u32 = 171; +pub const __NR_getpid: u32 = 172; +pub const __NR_getppid: u32 = 173; +pub const __NR_getuid: u32 = 174; +pub const __NR_geteuid: u32 = 175; +pub const __NR_getgid: u32 = 176; +pub const __NR_getegid: u32 = 177; +pub const __NR_gettid: u32 = 178; +pub const __NR_sysinfo: u32 = 179; +pub const __NR_mq_open: u32 = 180; +pub const __NR_mq_unlink: u32 = 181; +pub const __NR_mq_timedsend: u32 = 182; +pub const __NR_mq_timedreceive: u32 = 183; +pub const __NR_mq_notify: u32 = 184; +pub const __NR_mq_getsetattr: u32 = 185; +pub const __NR_msgget: u32 = 186; +pub const __NR_msgctl: u32 = 187; +pub const __NR_msgrcv: u32 = 188; +pub const __NR_msgsnd: u32 = 189; +pub const __NR_semget: u32 = 190; +pub const __NR_semctl: u32 = 191; +pub const __NR_semtimedop: u32 = 192; +pub const __NR_semop: u32 = 193; +pub const __NR_shmget: u32 = 194; +pub const __NR_shmctl: u32 = 195; +pub const __NR_shmat: u32 = 196; +pub const __NR_shmdt: u32 = 197; +pub const __NR_socket: u32 = 198; +pub const __NR_socketpair: u32 = 199; +pub const __NR_bind: u32 = 200; +pub const __NR_listen: u32 = 201; +pub const __NR_accept: u32 = 202; +pub const __NR_connect: u32 = 203; +pub const __NR_getsockname: u32 = 204; +pub const __NR_getpeername: u32 = 205; +pub const __NR_sendto: u32 = 206; +pub const __NR_recvfrom: u32 = 207; +pub const __NR_setsockopt: u32 = 208; +pub const __NR_getsockopt: u32 = 209; +pub const __NR_shutdown: u32 = 210; +pub const __NR_sendmsg: u32 = 211; +pub const __NR_recvmsg: u32 = 212; +pub const __NR_readahead: u32 = 213; +pub const __NR_brk: u32 = 214; +pub const __NR_munmap: u32 = 215; +pub const __NR_mremap: u32 = 216; +pub const __NR_add_key: u32 = 217; +pub const __NR_request_key: u32 = 218; +pub const __NR_keyctl: u32 = 219; +pub const __NR_clone: u32 = 220; +pub const __NR_execve: u32 = 221; +pub const __NR3264_mmap: u32 = 222; +pub const __NR3264_fadvise64: u32 = 223; +pub const __NR_swapon: u32 = 224; +pub const __NR_swapoff: u32 = 225; +pub const __NR_mprotect: u32 = 226; +pub const __NR_msync: u32 = 227; +pub const __NR_mlock: u32 = 228; +pub const __NR_munlock: u32 = 229; +pub const __NR_mlockall: u32 = 230; +pub const __NR_munlockall: u32 = 231; +pub const __NR_mincore: u32 = 232; +pub const __NR_madvise: u32 = 233; +pub const __NR_remap_file_pages: u32 = 234; +pub const __NR_mbind: u32 = 235; +pub const __NR_get_mempolicy: u32 = 236; +pub const __NR_set_mempolicy: u32 = 237; +pub const __NR_migrate_pages: u32 = 238; +pub const __NR_move_pages: u32 = 239; +pub const __NR_rt_tgsigqueueinfo: u32 = 240; +pub const __NR_perf_event_open: u32 = 241; +pub const __NR_accept4: u32 = 242; +pub const __NR_recvmmsg: u32 = 243; +pub const __NR_arch_specific_syscall: u32 = 244; +pub const __NR_wait4: u32 = 260; +pub const __NR_prlimit64: u32 = 261; +pub const __NR_fanotify_init: u32 = 262; +pub const __NR_fanotify_mark: u32 = 263; +pub const __NR_name_to_handle_at: u32 = 264; +pub const __NR_open_by_handle_at: u32 = 265; +pub const __NR_clock_adjtime: u32 = 266; +pub const __NR_syncfs: u32 = 267; +pub const __NR_setns: u32 = 268; +pub const __NR_sendmmsg: u32 = 269; +pub const __NR_process_vm_readv: u32 = 270; +pub const __NR_process_vm_writev: u32 = 271; +pub const __NR_kcmp: u32 = 272; +pub const __NR_finit_module: u32 = 273; +pub const __NR_sched_setattr: u32 = 274; +pub const __NR_sched_getattr: u32 = 275; +pub const __NR_renameat2: u32 = 276; +pub const __NR_seccomp: u32 = 277; +pub const __NR_getrandom: u32 = 278; +pub const __NR_memfd_create: u32 = 279; +pub const __NR_bpf: u32 = 280; +pub const __NR_execveat: u32 = 281; +pub const __NR_userfaultfd: u32 = 282; +pub const __NR_membarrier: u32 = 283; +pub const __NR_mlock2: u32 = 284; +pub const __NR_copy_file_range: u32 = 285; +pub const __NR_preadv2: u32 = 286; +pub const __NR_pwritev2: u32 = 287; +pub const __NR_pkey_mprotect: u32 = 288; +pub const __NR_pkey_alloc: u32 = 289; +pub const __NR_pkey_free: u32 = 290; +pub const __NR_statx: u32 = 291; +pub const __NR_io_pgetevents: u32 = 292; +pub const __NR_rseq: u32 = 293; +pub const __NR_kexec_file_load: u32 = 294; +pub const __NR_pidfd_send_signal: u32 = 424; +pub const __NR_io_uring_setup: u32 = 425; +pub const __NR_io_uring_enter: u32 = 426; +pub const __NR_io_uring_register: u32 = 427; +pub const __NR_open_tree: u32 = 428; +pub const __NR_move_mount: u32 = 429; +pub const __NR_fsopen: u32 = 430; +pub const __NR_fsconfig: u32 = 431; +pub const __NR_fsmount: u32 = 432; +pub const __NR_fspick: u32 = 433; +pub const __NR_pidfd_open: u32 = 434; +pub const __NR_clone3: u32 = 435; +pub const __NR_close_range: u32 = 436; +pub const __NR_openat2: u32 = 437; +pub const __NR_pidfd_getfd: u32 = 438; +pub const __NR_faccessat2: u32 = 439; +pub const __NR_process_madvise: u32 = 440; +pub const __NR_epoll_pwait2: u32 = 441; +pub const __NR_mount_setattr: u32 = 442; +pub const __NR_quotactl_fd: u32 = 443; +pub const __NR_landlock_create_ruleset: u32 = 444; +pub const __NR_landlock_add_rule: u32 = 445; +pub const __NR_landlock_restrict_self: u32 = 446; +pub const __NR_memfd_secret: u32 = 447; +pub const __NR_process_mrelease: u32 = 448; +pub const __NR_futex_waitv: u32 = 449; +pub const __NR_set_mempolicy_home_node: u32 = 450; +pub const __NR_syscalls: u32 = 451; +pub const __NR_fcntl: u32 = 25; +pub const __NR_statfs: u32 = 43; +pub const __NR_fstatfs: u32 = 44; +pub const __NR_truncate: u32 = 45; +pub const __NR_ftruncate: u32 = 46; +pub const __NR_lseek: u32 = 62; +pub const __NR_sendfile: u32 = 71; +pub const __NR_newfstatat: u32 = 79; +pub const __NR_fstat: u32 = 80; +pub const __NR_mmap: u32 = 222; +pub const __NR_fadvise64: u32 = 223; +pub const __NR_riscv_flush_icache: u32 = 259; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const P_ALL: u32 = 0; +pub const P_PID: u32 = 1; +pub const P_PGID: u32 = 2; +pub const P_PIDFD: u32 = 3; +pub const XATTR_CREATE: u32 = 1; +pub const XATTR_REPLACE: u32 = 2; +pub const XATTR_OS2_PREFIX: &[u8; 5] = b"os2.\0"; +pub const XATTR_MAC_OSX_PREFIX: &[u8; 5] = b"osx.\0"; +pub const XATTR_BTRFS_PREFIX: &[u8; 7] = b"btrfs.\0"; +pub const XATTR_HURD_PREFIX: &[u8; 5] = b"gnu.\0"; +pub const XATTR_SECURITY_PREFIX: &[u8; 10] = b"security.\0"; +pub const XATTR_SYSTEM_PREFIX: &[u8; 8] = b"system.\0"; +pub const XATTR_TRUSTED_PREFIX: &[u8; 9] = b"trusted.\0"; +pub const XATTR_USER_PREFIX: &[u8; 6] = b"user.\0"; +pub const XATTR_EVM_SUFFIX: &[u8; 4] = b"evm\0"; +pub const XATTR_NAME_EVM: &[u8; 13] = b"security.evm\0"; +pub const XATTR_IMA_SUFFIX: &[u8; 4] = b"ima\0"; +pub const XATTR_NAME_IMA: &[u8; 13] = b"security.ima\0"; +pub const XATTR_SELINUX_SUFFIX: &[u8; 8] = b"selinux\0"; +pub const XATTR_NAME_SELINUX: &[u8; 17] = b"security.selinux\0"; +pub const XATTR_SMACK_SUFFIX: &[u8; 8] = b"SMACK64\0"; +pub const XATTR_SMACK_IPIN: &[u8; 12] = b"SMACK64IPIN\0"; +pub const XATTR_SMACK_IPOUT: &[u8; 13] = b"SMACK64IPOUT\0"; +pub const XATTR_SMACK_EXEC: &[u8; 12] = b"SMACK64EXEC\0"; +pub const XATTR_SMACK_TRANSMUTE: &[u8; 17] = b"SMACK64TRANSMUTE\0"; +pub const XATTR_SMACK_MMAP: &[u8; 12] = b"SMACK64MMAP\0"; +pub const XATTR_NAME_SMACK: &[u8; 17] = b"security.SMACK64\0"; +pub const XATTR_NAME_SMACKIPIN: &[u8; 21] = b"security.SMACK64IPIN\0"; +pub const XATTR_NAME_SMACKIPOUT: &[u8; 22] = b"security.SMACK64IPOUT\0"; +pub const XATTR_NAME_SMACKEXEC: &[u8; 21] = b"security.SMACK64EXEC\0"; +pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26] = b"security.SMACK64TRANSMUTE\0"; +pub const XATTR_NAME_SMACKMMAP: &[u8; 21] = b"security.SMACK64MMAP\0"; +pub const XATTR_APPARMOR_SUFFIX: &[u8; 9] = b"apparmor\0"; +pub const XATTR_NAME_APPARMOR: &[u8; 18] = b"security.apparmor\0"; +pub const XATTR_CAPS_SUFFIX: &[u8; 11] = b"capability\0"; +pub const XATTR_NAME_CAPS: &[u8; 20] = b"security.capability\0"; +pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17] = b"posix_acl_access\0"; +pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24] = b"system.posix_acl_access\0"; +pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18] = b"posix_acl_default\0"; +pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25] = b"system.posix_acl_default\0"; +pub const MFD_CLOEXEC: u32 = 1; +pub const MFD_ALLOW_SEALING: u32 = 2; +pub const MFD_HUGETLB: u32 = 4; +pub const MFD_NOEXEC_SEAL: u32 = 8; +pub const MFD_EXEC: u32 = 16; +pub const MFD_HUGE_SHIFT: u32 = 26; +pub const MFD_HUGE_MASK: u32 = 63; +pub const MFD_HUGE_64KB: u32 = 1073741824; +pub const MFD_HUGE_512KB: u32 = 1275068416; +pub const MFD_HUGE_1MB: u32 = 1342177280; +pub const MFD_HUGE_2MB: u32 = 1409286144; +pub const MFD_HUGE_8MB: u32 = 1543503872; +pub const MFD_HUGE_16MB: u32 = 1610612736; +pub const MFD_HUGE_32MB: u32 = 1677721600; +pub const MFD_HUGE_256MB: u32 = 1879048192; +pub const MFD_HUGE_512MB: u32 = 1946157056; +pub const MFD_HUGE_1GB: u32 = 2013265920; +pub const MFD_HUGE_2GB: u32 = 2080374784; +pub const MFD_HUGE_16GB: u32 = 2281701376; +pub const TFD_TIMER_ABSTIME: u32 = 1; +pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; +pub const TFD_CLOEXEC: u32 = 524288; +pub const TFD_NONBLOCK: u32 = 2048; +pub const USERFAULTFD_IOC: u32 = 170; +pub const _UFFDIO_REGISTER: u32 = 0; +pub const _UFFDIO_UNREGISTER: u32 = 1; +pub const _UFFDIO_WAKE: u32 = 2; +pub const _UFFDIO_COPY: u32 = 3; +pub const _UFFDIO_ZEROPAGE: u32 = 4; +pub const _UFFDIO_WRITEPROTECT: u32 = 6; +pub const _UFFDIO_CONTINUE: u32 = 7; +pub const _UFFDIO_API: u32 = 63; +pub const UFFDIO: u32 = 170; +pub const UFFD_EVENT_PAGEFAULT: u32 = 18; +pub const UFFD_EVENT_FORK: u32 = 19; +pub const UFFD_EVENT_REMAP: u32 = 20; +pub const UFFD_EVENT_REMOVE: u32 = 21; +pub const UFFD_EVENT_UNMAP: u32 = 22; +pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; +pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; +pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; +pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; +pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; +pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; +pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; +pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; +pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; +pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; +pub const UFFD_FEATURE_SIGBUS: u32 = 128; +pub const UFFD_FEATURE_THREAD_ID: u32 = 256; +pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; +pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; +pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; +pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; +pub const UFFD_USER_MODE_ONLY: u32 = 1; +pub const DT_UNKNOWN: u32 = 0; +pub const DT_FIFO: u32 = 1; +pub const DT_CHR: u32 = 2; +pub const DT_DIR: u32 = 4; +pub const DT_BLK: u32 = 6; +pub const DT_REG: u32 = 8; +pub const DT_LNK: u32 = 10; +pub const DT_SOCK: u32 = 12; +pub const STAT_HAVE_NSEC: u32 = 1; +pub const F_OK: u32 = 0; +pub const R_OK: u32 = 4; +pub const W_OK: u32 = 2; +pub const X_OK: u32 = 1; +pub const UTIME_NOW: u32 = 1073741823; +pub const UTIME_OMIT: u32 = 1073741822; +pub const MNT_FORCE: u32 = 1; +pub const MNT_DETACH: u32 = 2; +pub const MNT_EXPIRE: u32 = 4; +pub const UMOUNT_NOFOLLOW: u32 = 8; +pub const UMOUNT_UNUSED: u32 = 2147483648; +pub const STDIN_FILENO: u32 = 0; +pub const STDOUT_FILENO: u32 = 1; +pub const STDERR_FILENO: u32 = 2; +pub const RWF_HIPRI: u32 = 1; +pub const RWF_DSYNC: u32 = 2; +pub const RWF_SYNC: u32 = 4; +pub const RWF_NOWAIT: u32 = 8; +pub const RWF_APPEND: u32 = 16; +pub const EFD_SEMAPHORE: u32 = 1; +pub const EFD_CLOEXEC: u32 = 524288; +pub const EFD_NONBLOCK: u32 = 2048; +pub const EPOLLIN: u32 = 1; +pub const EPOLLPRI: u32 = 2; +pub const EPOLLOUT: u32 = 4; +pub const EPOLLERR: u32 = 8; +pub const EPOLLHUP: u32 = 16; +pub const EPOLLNVAL: u32 = 32; +pub const EPOLLRDNORM: u32 = 64; +pub const EPOLLRDBAND: u32 = 128; +pub const EPOLLWRNORM: u32 = 256; +pub const EPOLLWRBAND: u32 = 512; +pub const EPOLLMSG: u32 = 1024; +pub const EPOLLRDHUP: u32 = 8192; +pub const EPOLLEXCLUSIVE: u32 = 268435456; +pub const EPOLLWAKEUP: u32 = 536870912; +pub const EPOLLONESHOT: u32 = 1073741824; +pub const EPOLLET: u32 = 2147483648; +pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; +pub const TFD_CREATE_FLAGS: u32 = 526336; +pub const TFD_SETTIME_FLAGS: u32 = 1; +pub const UFFD_API: u32 = 170; +pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; +pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; +pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; +pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; +pub const UFFDIO_COPY_MODE_WP: u32 = 2; +pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; +pub const SPLICE_F_MOVE: u32 = 1; +pub const SPLICE_F_NONBLOCK: u32 = 2; +pub const SPLICE_F_MORE: u32 = 4; +pub const SPLICE_F_GIFT: u32 = 8; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, } #[repr(u32)] #[non_exhaustive] @@ -4474,681 +2551,161 @@ pub enum membarrier_cmd_flag { MEMBARRIER_CMD_FLAG_CPU = 1, } -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct uffd_msg { -pub event: __u8, -pub reserved1: __u8, -pub reserved2: __u16, -pub reserved3: __u32, -pub arg: uffd_msg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1 { -pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, -pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, -pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, -pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, -pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { -pub flags: __u64, -pub address: __u64, -pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { -pub ptid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { -pub ufd: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { -pub from: __u64, -pub to: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { -pub start: __u64, -pub end: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { -pub reserved1: __u64, -pub reserved2: __u64, -pub reserved3: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_api { -pub api: __u64, -pub features: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_range { -pub start: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_register { -pub range: uffdio_range, -pub mode: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_copy { -pub dst: __u64, -pub src: __u64, -pub len: __u64, -pub mode: __u64, -pub copy: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_zeropage { -pub range: uffdio_range, -pub mode: __u64, -pub zeropage: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_writeprotect { -pub range: uffdio_range, -pub mode: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_continue { -pub range: uffdio_range, -pub mode: __u64, -pub mapped: __s64, -} -#[repr(C)] -pub struct io_uring_sqe { -pub opcode: __u8, -pub flags: __u8, -pub ioprio: __u16, -pub fd: __s32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, -pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, -pub len: __u32, -pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, -pub user_data: __u64, -pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, -pub personality: __u16, -pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, -pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_1 { -pub off: __u64, -pub addr2: __u64, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { -pub cmd_op: __u32, -pub __pad1: __u32, -} #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_2 { -pub addr: __u64, -pub splice_off_in: __u64, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_3 { -pub rw_flags: __kernel_rwf_t, -pub fsync_flags: __u32, -pub poll_events: __u16, -pub poll32_events: __u32, -pub sync_range_flags: __u32, -pub msg_flags: __u32, -pub timeout_flags: __u32, -pub accept_flags: __u32, -pub cancel_flags: __u32, -pub open_flags: __u32, -pub statx_flags: __u32, -pub fadvise_advice: __u32, -pub splice_flags: __u32, -pub rename_flags: __u32, -pub unlink_flags: __u32, -pub hardlink_flags: __u32, -pub xattr_flags: __u32, -pub msg_ring_flags: __u32, -pub uring_cmd_flags: __u32, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_4 { -pub buf_index: __u16, -pub buf_group: __u16, +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_5 { -pub splice_fd_in: __s32, -pub file_index: __u32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { -pub addr_len: __u16, -pub __pad3: [__u16; 1usize], -} -#[repr(C)] -pub struct io_uring_sqe__bindgen_ty_6 { -pub __bindgen_anon_1: __BindgenUnionField, -pub cmd: __BindgenUnionField<[__u8; 0usize]>, -pub bindgen_union_field: [u64; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { -pub addr3: __u64, -pub __pad2: [__u64; 1usize], -} -pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT; -pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT; -pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT; -pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT; -pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT; -pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT; -pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -IOSQE_FIXED_FILE_BIT = 0, -IOSQE_IO_DRAIN_BIT = 1, -IOSQE_IO_LINK_BIT = 2, -IOSQE_IO_HARDLINK_BIT = 3, -IOSQE_ASYNC_BIT = 4, -IOSQE_BUFFER_SELECT_BIT = 5, -IOSQE_CQE_SKIP_SUCCESS_BIT = 6, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum io_uring_op { -IORING_OP_NOP = 0, -IORING_OP_READV = 1, -IORING_OP_WRITEV = 2, -IORING_OP_FSYNC = 3, -IORING_OP_READ_FIXED = 4, -IORING_OP_WRITE_FIXED = 5, -IORING_OP_POLL_ADD = 6, -IORING_OP_POLL_REMOVE = 7, -IORING_OP_SYNC_FILE_RANGE = 8, -IORING_OP_SENDMSG = 9, -IORING_OP_RECVMSG = 10, -IORING_OP_TIMEOUT = 11, -IORING_OP_TIMEOUT_REMOVE = 12, -IORING_OP_ACCEPT = 13, -IORING_OP_ASYNC_CANCEL = 14, -IORING_OP_LINK_TIMEOUT = 15, -IORING_OP_CONNECT = 16, -IORING_OP_FALLOCATE = 17, -IORING_OP_OPENAT = 18, -IORING_OP_CLOSE = 19, -IORING_OP_FILES_UPDATE = 20, -IORING_OP_STATX = 21, -IORING_OP_READ = 22, -IORING_OP_WRITE = 23, -IORING_OP_FADVISE = 24, -IORING_OP_MADVISE = 25, -IORING_OP_SEND = 26, -IORING_OP_RECV = 27, -IORING_OP_OPENAT2 = 28, -IORING_OP_EPOLL_CTL = 29, -IORING_OP_SPLICE = 30, -IORING_OP_PROVIDE_BUFFERS = 31, -IORING_OP_REMOVE_BUFFERS = 32, -IORING_OP_TEE = 33, -IORING_OP_SHUTDOWN = 34, -IORING_OP_RENAMEAT = 35, -IORING_OP_UNLINKAT = 36, -IORING_OP_MKDIRAT = 37, -IORING_OP_SYMLINKAT = 38, -IORING_OP_LINKAT = 39, -IORING_OP_MSG_RING = 40, -IORING_OP_FSETXATTR = 41, -IORING_OP_SETXATTR = 42, -IORING_OP_FGETXATTR = 43, -IORING_OP_GETXATTR = 44, -IORING_OP_SOCKET = 45, -IORING_OP_URING_CMD = 46, -IORING_OP_SEND_ZC = 47, -IORING_OP_SENDMSG_ZC = 48, -IORING_OP_LAST = 49, -} -pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA; -pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_8 { -IORING_MSG_DATA = 0, -IORING_MSG_SEND_FD = 1, -} -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_cqe { -pub user_data: __u64, -pub res: __s32, -pub flags: __u32, -pub big_cqe: __IncompleteArrayField<__u64>, -} -pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_9 { -IORING_CQE_BUFFER_SHIFT = 16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_sqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub flags: __u32, -pub dropped: __u32, -pub array: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_cqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub overflow: __u32, -pub cqes: __u32, -pub flags: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_params { -pub sq_entries: __u32, -pub cq_entries: __u32, -pub flags: __u32, -pub sq_thread_cpu: __u32, -pub sq_thread_idle: __u32, -pub features: __u32, -pub wq_fd: __u32, -pub resv: [__u32; 3usize], -pub sq_off: io_sqring_offsets, -pub cq_off: io_cqring_offsets, -} -pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS; -pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS; -pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES; -pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES; -pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD; -pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD; -pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE; -pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC; -pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE; -pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY; -pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY; -pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS; -pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS; -pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2; -pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2; -pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2; -pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE; -pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF; -pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF; -pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS; -pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS; -pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS; -pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING; -pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING; -pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL; -pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE; -pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST; -pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_USE_REGISTERED_RING; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_10 { -IORING_REGISTER_BUFFERS = 0, -IORING_UNREGISTER_BUFFERS = 1, -IORING_REGISTER_FILES = 2, -IORING_UNREGISTER_FILES = 3, -IORING_REGISTER_EVENTFD = 4, -IORING_UNREGISTER_EVENTFD = 5, -IORING_REGISTER_FILES_UPDATE = 6, -IORING_REGISTER_EVENTFD_ASYNC = 7, -IORING_REGISTER_PROBE = 8, -IORING_REGISTER_PERSONALITY = 9, -IORING_UNREGISTER_PERSONALITY = 10, -IORING_REGISTER_RESTRICTIONS = 11, -IORING_REGISTER_ENABLE_RINGS = 12, -IORING_REGISTER_FILES2 = 13, -IORING_REGISTER_FILES_UPDATE2 = 14, -IORING_REGISTER_BUFFERS2 = 15, -IORING_REGISTER_BUFFERS_UPDATE = 16, -IORING_REGISTER_IOWQ_AFF = 17, -IORING_UNREGISTER_IOWQ_AFF = 18, -IORING_REGISTER_IOWQ_MAX_WORKERS = 19, -IORING_REGISTER_RING_FDS = 20, -IORING_UNREGISTER_RING_FDS = 21, -IORING_REGISTER_PBUF_RING = 22, -IORING_UNREGISTER_PBUF_RING = 23, -IORING_REGISTER_SYNC_CANCEL = 24, -IORING_REGISTER_FILE_ALLOC_RANGE = 25, -IORING_REGISTER_LAST = 26, -IORING_REGISTER_USE_REGISTERED_RING = 2147483648, -} -pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND; -pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_11 { -IO_WQ_BOUND = 0, -IO_WQ_UNBOUND = 1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_files_update { -pub offset: __u32, -pub resv: __u32, -pub fds: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_register { -pub nr: __u32, -pub flags: __u32, -pub resv2: __u64, -pub data: __u64, -pub tags: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update2 { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -pub tags: __u64, -pub nr: __u32, -pub resv2: __u32, +#[derive(Copy, Clone)] +pub union sigval { +pub sival_int: crate::ctypes::c_int, +pub sival_ptr: *mut crate::ctypes::c_void, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_slot { -pub tag: __u64, -pub resv: [__u64; 3usize], +#[derive(Copy, Clone)] +pub union __sifields { +pub _kill: __sifields__bindgen_ty_1, +pub _timer: __sifields__bindgen_ty_2, +pub _rt: __sifields__bindgen_ty_3, +pub _sigchld: __sifields__bindgen_ty_4, +pub _sigfault: __sifields__bindgen_ty_5, +pub _sigpoll: __sifields__bindgen_ty_6, +pub _sigsys: __sifields__bindgen_ty_7, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_register { -pub nr_slots: __u32, -pub resv: __u32, -pub resv2: __u64, -pub data: __u64, -pub resv3: __u64, +#[derive(Copy, Clone)] +pub union __sifields__bindgen_ty_5__bindgen_ty_1 { +pub _trapno: crate::ctypes::c_int, +pub _addr_lsb: crate::ctypes::c_short, +pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, +pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, +pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_probe_op { -pub op: __u8, -pub resv: __u8, -pub flags: __u16, -pub resv2: __u32, +#[derive(Copy, Clone)] +pub union siginfo__bindgen_ty_1 { +pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, +pub _si_pad: [crate::ctypes::c_int; 32usize], } #[repr(C)] -#[derive(Debug)] -pub struct io_uring_probe { -pub last_op: __u8, -pub ops_len: __u8, -pub resv: __u16, -pub resv2: [__u32; 3usize], -pub ops: __IncompleteArrayField, +#[derive(Copy, Clone)] +pub union sigevent__bindgen_ty_1 { +pub _pad: [crate::ctypes::c_int; 12usize], +pub _tid: crate::ctypes::c_int, +pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] -pub struct io_uring_restriction { -pub opcode: __u16, -pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, -pub resv: __u8, -pub resv2: [__u32; 3usize], +pub union uffd_msg__bindgen_ty_1 { +pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, +pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, +pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, +pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, +pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_restriction__bindgen_ty_1 { -pub register_op: __u8, -pub sqe_op: __u8, -pub sqe_flags: __u8, +pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { +pub ptid: __u32, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf { -pub addr: __u64, -pub len: __u32, -pub bid: __u16, -pub resv: __u16, +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } } -#[repr(C)] -pub struct io_uring_buf_ring { -pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, } -#[repr(C)] -pub struct io_uring_buf_ring__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 2usize], +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { -pub resv1: __u64, -pub resv2: __u32, -pub resv3: __u16, -pub tail: __u16, +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; } -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { -pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, -pub bufs: __IncompleteArrayField, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_reg { -pub ring_addr: __u64, -pub ring_entries: __u32, -pub bgid: __u16, -pub pad: __u16, -pub resv: [__u64; 3usize], +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; } -pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP; -pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP; -pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; -pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; -pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_12 { -IORING_RESTRICTION_REGISTER_OP = 0, -IORING_RESTRICTION_SQE_OP = 1, -IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, -IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, -IORING_RESTRICTION_LAST = 4, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_getevents_arg { -pub sigmask: __u64, -pub sigmask_sz: __u32, -pub pad: __u32, -pub ts: __u64, +val } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sync_cancel_reg { -pub addr: __u64, -pub fd: __s32, -pub flags: __u32, -pub timeout: __kernel_timespec, -pub pad: [__u64; 4usize], +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_file_index_range { -pub off: __u32, -pub len: __u32, -pub resv: __u64, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_recvmsg_out { -pub namelen: __u32, -pub controllen: __u32, -pub payloadlen: __u32, -pub flags: __u32, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr { -pub __storage: __kernel_sockaddr_storage, +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct linger { -pub l_onoff: crate::ctypes::c_int, -pub l_linger: crate::ctypes::c_int, +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T } -#[repr(C)] -#[derive(Debug)] -pub struct linux_dirent64 { -pub d_ino: crate::ctypes::c_ulong, -pub d_off: crate::ctypes::c_long, -pub d_reclen: __u16, -pub d_type: __u8, -pub d_name: __IncompleteArrayField, +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T } -pub type socklen_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat { -pub st_dev: crate::ctypes::c_ulong, -pub st_ino: crate::ctypes::c_ulong, -pub st_mode: crate::ctypes::c_uint, -pub st_nlink: crate::ctypes::c_uint, -pub st_uid: crate::ctypes::c_uint, -pub st_gid: crate::ctypes::c_uint, -pub st_rdev: crate::ctypes::c_ulong, -pub __pad1: crate::ctypes::c_ulong, -pub st_size: crate::ctypes::c_long, -pub st_blksize: crate::ctypes::c_int, -pub __pad2: crate::ctypes::c_int, -pub st_blocks: crate::ctypes::c_long, -pub st_atime: crate::ctypes::c_long, -pub st_atime_nsec: crate::ctypes::c_ulong, -pub st_mtime: crate::ctypes::c_long, -pub st_mtime_nsec: crate::ctypes::c_ulong, -pub st_ctime: crate::ctypes::c_long, -pub st_ctime_nsec: crate::ctypes::c_ulong, -pub __unused4: crate::ctypes::c_uint, -pub __unused5: crate::ctypes::c_uint, +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs { -pub f_type: __kernel_long_t, -pub f_bsize: __kernel_long_t, -pub f_blocks: __kernel_long_t, -pub f_bfree: __kernel_long_t, -pub f_bavail: __kernel_long_t, -pub f_files: __kernel_long_t, -pub f_ffree: __kernel_long_t, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __kernel_long_t, -pub f_frsize: __kernel_long_t, -pub f_flags: __kernel_long_t, -pub f_spare: [__kernel_long_t; 4usize], +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs64 { -pub f_type: __kernel_long_t, -pub f_bsize: __kernel_long_t, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __kernel_long_t, -pub f_frsize: __kernel_long_t, -pub f_flags: __kernel_long_t, -pub f_spare: [__kernel_long_t; 4usize], } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct compat_statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") } -pub type __fsword_t = __kernel_long_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_desc { -pub entry_number: crate::ctypes::c_uint, -pub base_addr: crate::ctypes::c_uint, -pub limit: crate::ctypes::c_uint, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub __bindgen_padding_0: [u8; 3usize], +} +impl membarrier_cmd { +pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; } impl user_desc { #[inline] @@ -5247,46 +2804,3 @@ __bindgen_bitfield_unit } } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr { -pub msg_name: *mut crate::ctypes::c_void, -pub msg_namelen: crate::ctypes::c_int, -pub msg_iov: *mut iovec, -pub msg_iovlen: size_t, -pub msg_control: *mut crate::ctypes::c_void, -pub msg_controllen: size_t, -pub msg_flags: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsghdr { -pub cmsg_len: size_t, -pub cmsg_level: crate::ctypes::c_int, -pub cmsg_type: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ucred { -pub pid: __u32, -pub uid: __u32, -pub gid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mmsghdr { -pub msg_hdr: msghdr, -pub msg_len: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigset_t { -pub sig: [crate::ctypes::c_ulong; 1usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigaction { -pub sa_handler_kernel: __kernel_sighandler_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_mask: kernel_sigset_t, -} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/if_ether.rs temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/if_ether.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/if_ether.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/if_ether.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,167 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ethhdr { +pub h_dest: [crate::ctypes::c_uchar; 6usize], +pub h_source: [crate::ctypes::c_uchar; 6usize], +pub h_proto: __be16, +} +pub const ETH_ALEN: u32 = 6; +pub const ETH_TLEN: u32 = 2; +pub const ETH_HLEN: u32 = 14; +pub const ETH_ZLEN: u32 = 60; +pub const ETH_DATA_LEN: u32 = 1500; +pub const ETH_FRAME_LEN: u32 = 1514; +pub const ETH_FCS_LEN: u32 = 4; +pub const ETH_MIN_MTU: u32 = 68; +pub const ETH_MAX_MTU: u32 = 65535; +pub const ETH_P_LOOP: u32 = 96; +pub const ETH_P_PUP: u32 = 512; +pub const ETH_P_PUPAT: u32 = 513; +pub const ETH_P_TSN: u32 = 8944; +pub const ETH_P_ERSPAN2: u32 = 8939; +pub const ETH_P_IP: u32 = 2048; +pub const ETH_P_X25: u32 = 2053; +pub const ETH_P_ARP: u32 = 2054; +pub const ETH_P_BPQ: u32 = 2303; +pub const ETH_P_IEEEPUP: u32 = 2560; +pub const ETH_P_IEEEPUPAT: u32 = 2561; +pub const ETH_P_BATMAN: u32 = 17157; +pub const ETH_P_DEC: u32 = 24576; +pub const ETH_P_DNA_DL: u32 = 24577; +pub const ETH_P_DNA_RC: u32 = 24578; +pub const ETH_P_DNA_RT: u32 = 24579; +pub const ETH_P_LAT: u32 = 24580; +pub const ETH_P_DIAG: u32 = 24581; +pub const ETH_P_CUST: u32 = 24582; +pub const ETH_P_SCA: u32 = 24583; +pub const ETH_P_TEB: u32 = 25944; +pub const ETH_P_RARP: u32 = 32821; +pub const ETH_P_ATALK: u32 = 32923; +pub const ETH_P_AARP: u32 = 33011; +pub const ETH_P_8021Q: u32 = 33024; +pub const ETH_P_ERSPAN: u32 = 35006; +pub const ETH_P_IPX: u32 = 33079; +pub const ETH_P_IPV6: u32 = 34525; +pub const ETH_P_PAUSE: u32 = 34824; +pub const ETH_P_SLOW: u32 = 34825; +pub const ETH_P_WCCP: u32 = 34878; +pub const ETH_P_MPLS_UC: u32 = 34887; +pub const ETH_P_MPLS_MC: u32 = 34888; +pub const ETH_P_ATMMPOA: u32 = 34892; +pub const ETH_P_PPP_DISC: u32 = 34915; +pub const ETH_P_PPP_SES: u32 = 34916; +pub const ETH_P_LINK_CTL: u32 = 34924; +pub const ETH_P_ATMFATE: u32 = 34948; +pub const ETH_P_PAE: u32 = 34958; +pub const ETH_P_PROFINET: u32 = 34962; +pub const ETH_P_REALTEK: u32 = 34969; +pub const ETH_P_AOE: u32 = 34978; +pub const ETH_P_ETHERCAT: u32 = 34980; +pub const ETH_P_8021AD: u32 = 34984; +pub const ETH_P_802_EX1: u32 = 34997; +pub const ETH_P_PREAUTH: u32 = 35015; +pub const ETH_P_TIPC: u32 = 35018; +pub const ETH_P_LLDP: u32 = 35020; +pub const ETH_P_MRP: u32 = 35043; +pub const ETH_P_MACSEC: u32 = 35045; +pub const ETH_P_8021AH: u32 = 35047; +pub const ETH_P_MVRP: u32 = 35061; +pub const ETH_P_1588: u32 = 35063; +pub const ETH_P_NCSI: u32 = 35064; +pub const ETH_P_PRP: u32 = 35067; +pub const ETH_P_CFM: u32 = 35074; +pub const ETH_P_FCOE: u32 = 35078; +pub const ETH_P_IBOE: u32 = 35093; +pub const ETH_P_TDLS: u32 = 35085; +pub const ETH_P_FIP: u32 = 35092; +pub const ETH_P_80221: u32 = 35095; +pub const ETH_P_HSR: u32 = 35119; +pub const ETH_P_NSH: u32 = 35151; +pub const ETH_P_LOOPBACK: u32 = 36864; +pub const ETH_P_QINQ1: u32 = 37120; +pub const ETH_P_QINQ2: u32 = 37376; +pub const ETH_P_QINQ3: u32 = 37632; +pub const ETH_P_EDSA: u32 = 56026; +pub const ETH_P_DSA_8021Q: u32 = 56027; +pub const ETH_P_DSA_A5PSW: u32 = 57345; +pub const ETH_P_IFE: u32 = 60734; +pub const ETH_P_AF_IUCV: u32 = 64507; +pub const ETH_P_802_3_MIN: u32 = 1536; +pub const ETH_P_802_3: u32 = 1; +pub const ETH_P_AX25: u32 = 2; +pub const ETH_P_ALL: u32 = 3; +pub const ETH_P_802_2: u32 = 4; +pub const ETH_P_SNAP: u32 = 5; +pub const ETH_P_DDCMP: u32 = 6; +pub const ETH_P_WAN_PPP: u32 = 7; +pub const ETH_P_PPP_MP: u32 = 8; +pub const ETH_P_LOCALTALK: u32 = 9; +pub const ETH_P_CAN: u32 = 12; +pub const ETH_P_CANFD: u32 = 13; +pub const ETH_P_CANXL: u32 = 14; +pub const ETH_P_PPPTALK: u32 = 16; +pub const ETH_P_TR_802_2: u32 = 17; +pub const ETH_P_MOBITEX: u32 = 21; +pub const ETH_P_CONTROL: u32 = 22; +pub const ETH_P_IRDA: u32 = 23; +pub const ETH_P_ECONET: u32 = 24; +pub const ETH_P_HDLC: u32 = 25; +pub const ETH_P_ARCNET: u32 = 26; +pub const ETH_P_DSA: u32 = 27; +pub const ETH_P_TRAILER: u32 = 28; +pub const ETH_P_PHONET: u32 = 245; +pub const ETH_P_IEEE802154: u32 = 246; +pub const ETH_P_CAIF: u32 = 247; +pub const ETH_P_XDSA: u32 = 248; +pub const ETH_P_MAP: u32 = 249; +pub const ETH_P_MCTP: u32 = 250; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/ioctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/ioctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/ioctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const FIONREAD: u32 = 21531; pub const FIONBIO: u32 = 21537; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/io_uring.rs temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/io_uring.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/io_uring.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/io_uring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1083 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_rwf_t = crate::ctypes::c_int; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +pub struct io_uring_sqe { +pub opcode: __u8, +pub flags: __u8, +pub ioprio: __u16, +pub fd: __s32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, +pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, +pub len: __u32, +pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, +pub user_data: __u64, +pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, +pub personality: __u16, +pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, +pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { +pub cmd_op: __u32, +pub __pad1: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { +pub addr_len: __u16, +pub __pad3: [__u16; 1usize], +} +#[repr(C)] +pub struct io_uring_sqe__bindgen_ty_6 { +pub __bindgen_anon_1: __BindgenUnionField, +pub cmd: __BindgenUnionField<[__u8; 0usize]>, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { +pub addr3: __u64, +pub __pad2: [__u64; 1usize], +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_cqe { +pub user_data: __u64, +pub res: __s32, +pub flags: __u32, +pub big_cqe: __IncompleteArrayField<__u64>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_sqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub flags: __u32, +pub dropped: __u32, +pub array: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_cqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub overflow: __u32, +pub cqes: __u32, +pub flags: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_params { +pub sq_entries: __u32, +pub cq_entries: __u32, +pub flags: __u32, +pub sq_thread_cpu: __u32, +pub sq_thread_idle: __u32, +pub features: __u32, +pub wq_fd: __u32, +pub resv: [__u32; 3usize], +pub sq_off: io_sqring_offsets, +pub cq_off: io_cqring_offsets, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_files_update { +pub offset: __u32, +pub resv: __u32, +pub fds: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_register { +pub nr: __u32, +pub flags: __u32, +pub resv2: __u64, +pub data: __u64, +pub tags: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update2 { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +pub tags: __u64, +pub nr: __u32, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_slot { +pub tag: __u64, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_register { +pub nr_slots: __u32, +pub resv: __u32, +pub resv2: __u64, +pub data: __u64, +pub resv3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_probe_op { +pub op: __u8, +pub resv: __u8, +pub flags: __u16, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_probe { +pub last_op: __u8, +pub ops_len: __u8, +pub resv: __u16, +pub resv2: [__u32; 3usize], +pub ops: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_restriction { +pub opcode: __u16, +pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, +pub resv: __u8, +pub resv2: [__u32; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf { +pub addr: __u64, +pub len: __u32, +pub bid: __u16, +pub resv: __u16, +} +#[repr(C)] +pub struct io_uring_buf_ring { +pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +} +#[repr(C)] +pub struct io_uring_buf_ring__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { +pub resv1: __u64, +pub resv2: __u32, +pub resv3: __u16, +pub tail: __u16, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { +pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, +pub bufs: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_reg { +pub ring_addr: __u64, +pub ring_entries: __u32, +pub bgid: __u16, +pub pad: __u16, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_getevents_arg { +pub sigmask: __u64, +pub sigmask_sz: __u32, +pub pad: __u32, +pub ts: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sync_cancel_reg { +pub addr: __u64, +pub fd: __s32, +pub flags: __u32, +pub timeout: __kernel_timespec, +pub pad: [__u64; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_file_index_range { +pub off: __u32, +pub len: __u32, +pub resv: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_recvmsg_out { +pub namelen: __u32, +pub controllen: __u32, +pub payloadlen: __u32, +pub flags: __u32, +} +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 14; +pub const _IOC_DIRBITS: u32 = 2; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 3; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 30; +pub const _IOC_NONE: u32 = 0; +pub const _IOC_WRITE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const IOC_IN: u32 = 1073741824; +pub const IOC_OUT: u32 = 2147483648; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const IORING_FILE_INDEX_ALLOC: i32 = -1; +pub const IORING_SETUP_IOPOLL: u32 = 1; +pub const IORING_SETUP_SQPOLL: u32 = 2; +pub const IORING_SETUP_SQ_AFF: u32 = 4; +pub const IORING_SETUP_CQSIZE: u32 = 8; +pub const IORING_SETUP_CLAMP: u32 = 16; +pub const IORING_SETUP_ATTACH_WQ: u32 = 32; +pub const IORING_SETUP_R_DISABLED: u32 = 64; +pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; +pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; +pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; +pub const IORING_SETUP_SQE128: u32 = 1024; +pub const IORING_SETUP_CQE32: u32 = 2048; +pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; +pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; +pub const IORING_URING_CMD_FIXED: u32 = 1; +pub const IORING_FSYNC_DATASYNC: u32 = 1; +pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; +pub const IORING_POLL_ADD_LEVEL: u32 = 8; +pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; +pub const IORING_ASYNC_CANCEL_FD: u32 = 2; +pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; +pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; +pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; +pub const IORING_RECV_MULTISHOT: u32 = 2; +pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; +pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; +pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; +pub const IORING_ACCEPT_MULTISHOT: u32 = 1; +pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; +pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; +pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; +pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; +pub const IORING_CQE_F_NOTIF: u32 = 8; +pub const IORING_OFF_SQ_RING: u32 = 0; +pub const IORING_OFF_CQ_RING: u32 = 134217728; +pub const IORING_OFF_SQES: u32 = 268435456; +pub const IORING_SQ_NEED_WAKEUP: u32 = 1; +pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; +pub const IORING_SQ_TASKRUN: u32 = 4; +pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; +pub const IORING_ENTER_GETEVENTS: u32 = 1; +pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; +pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; +pub const IORING_ENTER_REGISTERED_RING: u32 = 16; +pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; +pub const IORING_FEAT_NODROP: u32 = 2; +pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; +pub const IORING_FEAT_RW_CUR_POS: u32 = 8; +pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; +pub const IORING_FEAT_FAST_POLL: u32 = 32; +pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_FEAT_CQE_SKIP: u32 = 2048; +pub const IORING_FEAT_LINKED_FILE: u32 = 4096; +pub const IORING_FEAT_REG_REG_RING: u32 = 8192; +pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; +pub const IO_URING_OP_SUPPORTED: u32 = 1; +pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_FIXED_FILE_BIT; +pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_DRAIN_BIT; +pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_LINK_BIT; +pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_HARDLINK_BIT; +pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_ASYNC_BIT; +pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_BUFFER_SELECT_BIT; +pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_CQE_SKIP_SUCCESS_BIT; +pub const IORING_MSG_DATA: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_DATA; +pub const IORING_MSG_SEND_FD: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_SEND_FD; +pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = _bindgen_ty_3::IORING_CQE_BUFFER_SHIFT; +pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS; +pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_BUFFERS; +pub const IORING_REGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES; +pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_FILES; +pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD; +pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_EVENTFD; +pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE; +pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD_ASYNC; +pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PROBE; +pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PERSONALITY; +pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PERSONALITY; +pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RESTRICTIONS; +pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_ENABLE_RINGS; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES2; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE2; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS2; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS_UPDATE; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_AFF; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_IOWQ_AFF; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_MAX_WORKERS; +pub const IORING_REGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RING_FDS; +pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_RING_FDS; +pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PBUF_RING; +pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PBUF_RING; +pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_SYNC_CANCEL; +pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILE_ALLOC_RANGE; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_LAST; +pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_USE_REGISTERED_RING; +pub const IO_WQ_BOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_BOUND; +pub const IO_WQ_UNBOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_UNBOUND; +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_REGISTER_OP; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_OP; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_LAST; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IOSQE_FIXED_FILE_BIT = 0, +IOSQE_IO_DRAIN_BIT = 1, +IOSQE_IO_LINK_BIT = 2, +IOSQE_IO_HARDLINK_BIT = 3, +IOSQE_ASYNC_BIT = 4, +IOSQE_BUFFER_SELECT_BIT = 5, +IOSQE_CQE_SKIP_SUCCESS_BIT = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum io_uring_op { +IORING_OP_NOP = 0, +IORING_OP_READV = 1, +IORING_OP_WRITEV = 2, +IORING_OP_FSYNC = 3, +IORING_OP_READ_FIXED = 4, +IORING_OP_WRITE_FIXED = 5, +IORING_OP_POLL_ADD = 6, +IORING_OP_POLL_REMOVE = 7, +IORING_OP_SYNC_FILE_RANGE = 8, +IORING_OP_SENDMSG = 9, +IORING_OP_RECVMSG = 10, +IORING_OP_TIMEOUT = 11, +IORING_OP_TIMEOUT_REMOVE = 12, +IORING_OP_ACCEPT = 13, +IORING_OP_ASYNC_CANCEL = 14, +IORING_OP_LINK_TIMEOUT = 15, +IORING_OP_CONNECT = 16, +IORING_OP_FALLOCATE = 17, +IORING_OP_OPENAT = 18, +IORING_OP_CLOSE = 19, +IORING_OP_FILES_UPDATE = 20, +IORING_OP_STATX = 21, +IORING_OP_READ = 22, +IORING_OP_WRITE = 23, +IORING_OP_FADVISE = 24, +IORING_OP_MADVISE = 25, +IORING_OP_SEND = 26, +IORING_OP_RECV = 27, +IORING_OP_OPENAT2 = 28, +IORING_OP_EPOLL_CTL = 29, +IORING_OP_SPLICE = 30, +IORING_OP_PROVIDE_BUFFERS = 31, +IORING_OP_REMOVE_BUFFERS = 32, +IORING_OP_TEE = 33, +IORING_OP_SHUTDOWN = 34, +IORING_OP_RENAMEAT = 35, +IORING_OP_UNLINKAT = 36, +IORING_OP_MKDIRAT = 37, +IORING_OP_SYMLINKAT = 38, +IORING_OP_LINKAT = 39, +IORING_OP_MSG_RING = 40, +IORING_OP_FSETXATTR = 41, +IORING_OP_SETXATTR = 42, +IORING_OP_FGETXATTR = 43, +IORING_OP_GETXATTR = 44, +IORING_OP_SOCKET = 45, +IORING_OP_URING_CMD = 46, +IORING_OP_SEND_ZC = 47, +IORING_OP_SENDMSG_ZC = 48, +IORING_OP_LAST = 49, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IORING_MSG_DATA = 0, +IORING_MSG_SEND_FD = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IORING_CQE_BUFFER_SHIFT = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IORING_REGISTER_BUFFERS = 0, +IORING_UNREGISTER_BUFFERS = 1, +IORING_REGISTER_FILES = 2, +IORING_UNREGISTER_FILES = 3, +IORING_REGISTER_EVENTFD = 4, +IORING_UNREGISTER_EVENTFD = 5, +IORING_REGISTER_FILES_UPDATE = 6, +IORING_REGISTER_EVENTFD_ASYNC = 7, +IORING_REGISTER_PROBE = 8, +IORING_REGISTER_PERSONALITY = 9, +IORING_UNREGISTER_PERSONALITY = 10, +IORING_REGISTER_RESTRICTIONS = 11, +IORING_REGISTER_ENABLE_RINGS = 12, +IORING_REGISTER_FILES2 = 13, +IORING_REGISTER_FILES_UPDATE2 = 14, +IORING_REGISTER_BUFFERS2 = 15, +IORING_REGISTER_BUFFERS_UPDATE = 16, +IORING_REGISTER_IOWQ_AFF = 17, +IORING_UNREGISTER_IOWQ_AFF = 18, +IORING_REGISTER_IOWQ_MAX_WORKERS = 19, +IORING_REGISTER_RING_FDS = 20, +IORING_UNREGISTER_RING_FDS = 21, +IORING_REGISTER_PBUF_RING = 22, +IORING_UNREGISTER_PBUF_RING = 23, +IORING_REGISTER_SYNC_CANCEL = 24, +IORING_REGISTER_FILE_ALLOC_RANGE = 25, +IORING_REGISTER_LAST = 26, +IORING_REGISTER_USE_REGISTERED_RING = 2147483648, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IO_WQ_BOUND = 0, +IO_WQ_UNBOUND = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IORING_RESTRICTION_REGISTER_OP = 0, +IORING_RESTRICTION_SQE_OP = 1, +IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, +IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, +IORING_RESTRICTION_LAST = 4, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_1 { +pub off: __u64, +pub addr2: __u64, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_2 { +pub addr: __u64, +pub splice_off_in: __u64, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_3 { +pub rw_flags: __kernel_rwf_t, +pub fsync_flags: __u32, +pub poll_events: __u16, +pub poll32_events: __u32, +pub sync_range_flags: __u32, +pub msg_flags: __u32, +pub timeout_flags: __u32, +pub accept_flags: __u32, +pub cancel_flags: __u32, +pub open_flags: __u32, +pub statx_flags: __u32, +pub fadvise_advice: __u32, +pub splice_flags: __u32, +pub rename_flags: __u32, +pub unlink_flags: __u32, +pub hardlink_flags: __u32, +pub xattr_flags: __u32, +pub msg_ring_flags: __u32, +pub uring_cmd_flags: __u32, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_4 { +pub buf_index: __u16, +pub buf_group: __u16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { +pub splice_fd_in: __s32, +pub file_index: __u32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_restriction__bindgen_ty_1 { +pub register_op: __u8, +pub sqe_op: __u8, +pub sqe_flags: __u8, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/netlink.rs temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/netlink.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/netlink.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/netlink.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,356 +1,1492 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_nl { +pub nl_family: __kernel_sa_family_t, +pub nl_pad: crate::ctypes::c_ushort, +pub nl_pid: __u32, +pub nl_groups: __u32, } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsghdr { +pub nlmsg_len: __u32, +pub nlmsg_type: __u16, +pub nlmsg_flags: __u16, +pub nlmsg_seq: __u32, +pub nlmsg_pid: __u32, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsgerr { +pub error: crate::ctypes::c_int, +pub msg: nlmsghdr, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_pktinfo { +pub group: __u32, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_req { +pub nm_block_size: crate::ctypes::c_uint, +pub nm_block_nr: crate::ctypes::c_uint, +pub nm_frame_size: crate::ctypes::c_uint, +pub nm_frame_nr: crate::ctypes::c_uint, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_hdr { +pub nm_status: crate::ctypes::c_uint, +pub nm_len: crate::ctypes::c_uint, +pub nm_group: __u32, +pub nm_pid: __u32, +pub nm_uid: __u32, +pub nm_gid: __u32, } -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const __FD_SETSIZE: u32 = 1024; -pub const NETLINK_ROUTE: u32 = 0; -pub const NETLINK_UNUSED: u32 = 1; -pub const NETLINK_USERSOCK: u32 = 2; -pub const NETLINK_FIREWALL: u32 = 3; -pub const NETLINK_SOCK_DIAG: u32 = 4; -pub const NETLINK_NFLOG: u32 = 5; -pub const NETLINK_XFRM: u32 = 6; -pub const NETLINK_SELINUX: u32 = 7; -pub const NETLINK_ISCSI: u32 = 8; -pub const NETLINK_AUDIT: u32 = 9; -pub const NETLINK_FIB_LOOKUP: u32 = 10; -pub const NETLINK_CONNECTOR: u32 = 11; -pub const NETLINK_NETFILTER: u32 = 12; -pub const NETLINK_IP6_FW: u32 = 13; -pub const NETLINK_DNRTMSG: u32 = 14; -pub const NETLINK_KOBJECT_UEVENT: u32 = 15; -pub const NETLINK_GENERIC: u32 = 16; -pub const NETLINK_SCSITRANSPORT: u32 = 18; -pub const NETLINK_ECRYPTFS: u32 = 19; -pub const NETLINK_RDMA: u32 = 20; -pub const NETLINK_CRYPTO: u32 = 21; -pub const NETLINK_SMC: u32 = 22; -pub const NETLINK_INET_DIAG: u32 = 4; -pub const MAX_LINKS: u32 = 32; -pub const NLM_F_REQUEST: u32 = 1; -pub const NLM_F_MULTI: u32 = 2; -pub const NLM_F_ACK: u32 = 4; -pub const NLM_F_ECHO: u32 = 8; -pub const NLM_F_DUMP_INTR: u32 = 16; -pub const NLM_F_DUMP_FILTERED: u32 = 32; -pub const NLM_F_ROOT: u32 = 256; -pub const NLM_F_MATCH: u32 = 512; -pub const NLM_F_ATOMIC: u32 = 1024; -pub const NLM_F_DUMP: u32 = 768; -pub const NLM_F_REPLACE: u32 = 256; -pub const NLM_F_EXCL: u32 = 512; -pub const NLM_F_CREATE: u32 = 1024; -pub const NLM_F_APPEND: u32 = 2048; -pub const NLM_F_NONREC: u32 = 256; -pub const NLM_F_BULK: u32 = 512; -pub const NLM_F_CAPPED: u32 = 256; -pub const NLM_F_ACK_TLVS: u32 = 512; -pub const NLMSG_ALIGNTO: u32 = 4; -pub const NLMSG_NOOP: u32 = 1; -pub const NLMSG_ERROR: u32 = 2; -pub const NLMSG_DONE: u32 = 3; -pub const NLMSG_OVERRUN: u32 = 4; -pub const NLMSG_MIN_TYPE: u32 = 16; -pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; -pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; -pub const NETLINK_PKTINFO: u32 = 3; -pub const NETLINK_BROADCAST_ERROR: u32 = 4; -pub const NETLINK_NO_ENOBUFS: u32 = 5; -pub const NETLINK_RX_RING: u32 = 6; -pub const NETLINK_TX_RING: u32 = 7; -pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; -pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; -pub const NETLINK_CAP_ACK: u32 = 10; -pub const NETLINK_EXT_ACK: u32 = 11; -pub const NETLINK_GET_STRICT_CHK: u32 = 12; -pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; -pub const NET_MAJOR: u32 = 36; -pub const NLA_F_NESTED: u32 = 32768; -pub const NLA_F_NET_BYTEORDER: u32 = 16384; -pub const NLA_TYPE_MASK: i32 = -49153; -pub const NLA_ALIGNTO: u32 = 4; -pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; -pub const MACVLAN_FLAG_NODST: u32 = 2; -pub const IPVLAN_F_PRIVATE: u32 = 1; -pub const IPVLAN_F_VEPA: u32 = 2; -pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; -pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; -pub const MAX_VLAN_LIST_LEN: u32 = 1; -pub const PORT_PROFILE_MAX: u32 = 40; -pub const PORT_UUID_MAX: u32 = 16; -pub const PORT_SELF_VF: i32 = -1; -pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; -pub const XDP_FLAGS_SKB_MODE: u32 = 2; -pub const XDP_FLAGS_DRV_MODE: u32 = 4; -pub const XDP_FLAGS_HW_MODE: u32 = 8; -pub const XDP_FLAGS_REPLACE: u32 = 16; -pub const XDP_FLAGS_MODES: u32 = 14; -pub const XDP_FLAGS_MASK: u32 = 31; -pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; -pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; -pub const IFA_F_SECONDARY: u32 = 1; -pub const IFA_F_TEMPORARY: u32 = 1; -pub const IFA_F_NODAD: u32 = 2; -pub const IFA_F_OPTIMISTIC: u32 = 4; -pub const IFA_F_DADFAILED: u32 = 8; -pub const IFA_F_HOMEADDRESS: u32 = 16; -pub const IFA_F_DEPRECATED: u32 = 32; -pub const IFA_F_TENTATIVE: u32 = 64; -pub const IFA_F_PERMANENT: u32 = 128; -pub const IFA_F_MANAGETEMPADDR: u32 = 256; -pub const IFA_F_NOPREFIXROUTE: u32 = 512; -pub const IFA_F_MCAUTOJOIN: u32 = 1024; -pub const IFA_F_STABLE_PRIVACY: u32 = 2048; -pub const IFAPROT_UNSPEC: u32 = 0; -pub const IFAPROT_KERNEL_LO: u32 = 1; -pub const IFAPROT_KERNEL_RA: u32 = 2; -pub const IFAPROT_KERNEL_LL: u32 = 3; -pub const NTF_USE: u32 = 1; -pub const NTF_SELF: u32 = 2; -pub const NTF_MASTER: u32 = 4; -pub const NTF_PROXY: u32 = 8; -pub const NTF_EXT_LEARNED: u32 = 16; -pub const NTF_OFFLOADED: u32 = 32; -pub const NTF_STICKY: u32 = 64; -pub const NTF_ROUTER: u32 = 128; -pub const NTF_EXT_MANAGED: u32 = 1; -pub const NTF_EXT_LOCKED: u32 = 2; -pub const NUD_INCOMPLETE: u32 = 1; -pub const NUD_REACHABLE: u32 = 2; -pub const NUD_STALE: u32 = 4; -pub const NUD_DELAY: u32 = 8; -pub const NUD_PROBE: u32 = 16; -pub const NUD_FAILED: u32 = 32; -pub const NUD_NOARP: u32 = 64; -pub const NUD_PERMANENT: u32 = 128; -pub const NUD_NONE: u32 = 0; -pub const RTNL_FAMILY_IPMR: u32 = 128; -pub const RTNL_FAMILY_IP6MR: u32 = 129; -pub const RTNL_FAMILY_MAX: u32 = 129; -pub const RTA_ALIGNTO: u32 = 4; -pub const RTPROT_UNSPEC: u32 = 0; -pub const RTPROT_REDIRECT: u32 = 1; -pub const RTPROT_KERNEL: u32 = 2; -pub const RTPROT_BOOT: u32 = 3; -pub const RTPROT_STATIC: u32 = 4; -pub const RTPROT_GATED: u32 = 8; -pub const RTPROT_RA: u32 = 9; -pub const RTPROT_MRT: u32 = 10; -pub const RTPROT_ZEBRA: u32 = 11; -pub const RTPROT_BIRD: u32 = 12; -pub const RTPROT_DNROUTED: u32 = 13; -pub const RTPROT_XORP: u32 = 14; -pub const RTPROT_NTK: u32 = 15; -pub const RTPROT_DHCP: u32 = 16; -pub const RTPROT_MROUTED: u32 = 17; -pub const RTPROT_KEEPALIVED: u32 = 18; -pub const RTPROT_BABEL: u32 = 42; -pub const RTPROT_OPENR: u32 = 99; -pub const RTPROT_BGP: u32 = 186; -pub const RTPROT_ISIS: u32 = 187; -pub const RTPROT_OSPF: u32 = 188; -pub const RTPROT_RIP: u32 = 189; -pub const RTPROT_EIGRP: u32 = 192; -pub const RTM_F_NOTIFY: u32 = 256; -pub const RTM_F_CLONED: u32 = 512; -pub const RTM_F_EQUALIZE: u32 = 1024; -pub const RTM_F_PREFIX: u32 = 2048; -pub const RTM_F_LOOKUP_TABLE: u32 = 4096; -pub const RTM_F_FIB_MATCH: u32 = 8192; -pub const RTM_F_OFFLOAD: u32 = 16384; -pub const RTM_F_TRAP: u32 = 32768; -pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; -pub const RTNH_F_DEAD: u32 = 1; -pub const RTNH_F_PERVASIVE: u32 = 2; -pub const RTNH_F_ONLINK: u32 = 4; -pub const RTNH_F_OFFLOAD: u32 = 8; -pub const RTNH_F_LINKDOWN: u32 = 16; -pub const RTNH_F_UNRESOLVED: u32 = 32; -pub const RTNH_F_TRAP: u32 = 64; -pub const RTNH_COMPARE_MASK: u32 = 89; -pub const RTNH_ALIGNTO: u32 = 4; -pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; -pub const RTAX_FEATURE_ECN: u32 = 1; -pub const RTAX_FEATURE_SACK: u32 = 2; -pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; -pub const RTAX_FEATURE_ALLFRAG: u32 = 8; -pub const RTAX_FEATURE_MASK: u32 = 15; -pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; -pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; -pub const RTMGRP_LINK: u32 = 1; -pub const RTMGRP_NOTIFY: u32 = 2; -pub const RTMGRP_NEIGH: u32 = 4; -pub const RTMGRP_TC: u32 = 8; -pub const RTMGRP_IPV4_IFADDR: u32 = 16; -pub const RTMGRP_IPV4_MROUTE: u32 = 32; -pub const RTMGRP_IPV4_ROUTE: u32 = 64; -pub const RTMGRP_IPV4_RULE: u32 = 128; -pub const RTMGRP_IPV6_IFADDR: u32 = 256; -pub const RTMGRP_IPV6_MROUTE: u32 = 512; -pub const RTMGRP_IPV6_ROUTE: u32 = 1024; -pub const RTMGRP_IPV6_IFINFO: u32 = 2048; -pub const RTMGRP_DECnet_IFADDR: u32 = 4096; -pub const RTMGRP_DECnet_ROUTE: u32 = 16384; -pub const RTMGRP_IPV6_PREFIX: u32 = 131072; -pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; -pub const RTEXT_FILTER_VF: u32 = 1; -pub const RTEXT_FILTER_BRVLAN: u32 = 2; -pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; -pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; -pub const RTEXT_FILTER_MRP: u32 = 16; -pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; -pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; -pub const RTEXT_FILTER_MST: u32 = 128; -pub type size_t = crate::ctypes::c_ulong; -pub type ssize_t = crate::ctypes::c_long; -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; #[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct nlattr { +pub nla_len: __u16, +pub nla_type: __u16, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, +#[derive(Debug, Copy, Clone)] +pub struct nla_bitfield32 { +pub value: __u32, +pub selector: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], +pub struct rtnl_link_stats { +pub rx_packets: __u32, +pub tx_packets: __u32, +pub rx_bytes: __u32, +pub tx_bytes: __u32, +pub rx_errors: __u32, +pub tx_errors: __u32, +pub rx_dropped: __u32, +pub tx_dropped: __u32, +pub multicast: __u32, +pub collisions: __u32, +pub rx_length_errors: __u32, +pub rx_over_errors: __u32, +pub rx_crc_errors: __u32, +pub rx_frame_errors: __u32, +pub rx_fifo_errors: __u32, +pub rx_missed_errors: __u32, +pub tx_aborted_errors: __u32, +pub tx_carrier_errors: __u32, +pub tx_fifo_errors: __u32, +pub tx_heartbeat_errors: __u32, +pub tx_window_errors: __u32, +pub rx_compressed: __u32, +pub tx_compressed: __u32, +pub rx_nohandler: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnl_link_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +pub collisions: __u64, +pub rx_length_errors: __u64, +pub rx_over_errors: __u64, +pub rx_crc_errors: __u64, +pub rx_frame_errors: __u64, +pub rx_fifo_errors: __u64, +pub rx_missed_errors: __u64, +pub tx_aborted_errors: __u64, +pub tx_carrier_errors: __u64, +pub tx_fifo_errors: __u64, +pub tx_heartbeat_errors: __u64, +pub tx_window_errors: __u64, +pub rx_compressed: __u64, +pub tx_compressed: __u64, +pub rx_nohandler: __u64, +pub rx_otherhost_dropped: __u64, } -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 16usize], +pub struct rtnl_hw_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, } -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_old_dev_t = crate::ctypes::c_uint; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], +pub struct rtnl_link_ifmap { +pub mem_start: __u64, +pub mem_end: __u64, +pub base_addr: __u64, +pub irq: __u16, +pub dma: __u8, +pub port: __u8, } -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_nl { -pub nl_family: __kernel_sa_family_t, -pub nl_pad: crate::ctypes::c_ushort, -pub nl_pid: __u32, -pub nl_groups: __u32, +pub struct ifla_bridge_id { +pub prio: [__u8; 2usize], +pub addr: [__u8; 6usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsghdr { -pub nlmsg_len: __u32, -pub nlmsg_type: __u16, -pub nlmsg_flags: __u16, -pub nlmsg_seq: __u32, -pub nlmsg_pid: __u32, +pub struct ifla_cacheinfo { +pub max_reasm_len: __u32, +pub tstamp: __u32, +pub reachable_time: __u32, +pub retrans_time: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsgerr { -pub error: crate::ctypes::c_int, -pub msg: nlmsghdr, +pub struct ifla_vlan_flags { +pub flags: __u32, +pub mask: __u32, } -impl nlmsgerr_attrs { -pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_qos_mapping { +pub from: __u32, +pub to: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tunnel_msg { +pub family: __u8, +pub flags: __u8, +pub reserved2: __u16, +pub ifindex: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vxlan_port_range { +pub low: __be16, +pub high: __be16, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_mac { +pub vf: __u32, +pub mac: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_broadcast { +pub broadcast: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan_info { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +pub vlan_proto: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_tx_rate { +pub vf: __u32, +pub rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rate { +pub vf: __u32, +pub min_tx_rate: __u32, +pub max_tx_rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_spoofchk { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_guid { +pub vf: __u32, +pub guid: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_link_state { +pub vf: __u32, +pub link_state: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rss_query_en { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_trust { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_port_vsi { +pub vsi_mgr_id: __u8, +pub vsi_type_id: [__u8; 3usize], +pub vsi_type_version: __u8, +pub pad: [__u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct if_stats_msg { +pub family: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub ifindex: __u32, +pub filter_mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_rmnet_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifaddrmsg { +pub ifa_family: __u8, +pub ifa_prefixlen: __u8, +pub ifa_flags: __u8, +pub ifa_scope: __u8, +pub ifa_index: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifa_cacheinfo { +pub ifa_prefered: __u32, +pub ifa_valid: __u32, +pub cstamp: __u32, +pub tstamp: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndmsg { +pub ndm_family: __u8, +pub ndm_pad1: __u8, +pub ndm_pad2: __u16, +pub ndm_ifindex: __s32, +pub ndm_state: __u16, +pub ndm_flags: __u8, +pub ndm_type: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nda_cacheinfo { +pub ndm_confirmed: __u32, +pub ndm_used: __u32, +pub ndm_updated: __u32, +pub ndm_refcnt: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_stats { +pub ndts_allocs: __u64, +pub ndts_destroys: __u64, +pub ndts_hash_grows: __u64, +pub ndts_res_failed: __u64, +pub ndts_lookups: __u64, +pub ndts_hits: __u64, +pub ndts_rcv_probes_mcast: __u64, +pub ndts_rcv_probes_ucast: __u64, +pub ndts_periodic_gc_runs: __u64, +pub ndts_forced_gc_runs: __u64, +pub ndts_table_fulls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndtmsg { +pub ndtm_family: __u8, +pub ndtm_pad1: __u8, +pub ndtm_pad2: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_config { +pub ndtc_key_len: __u16, +pub ndtc_entry_size: __u16, +pub ndtc_entries: __u32, +pub ndtc_last_flush: __u32, +pub ndtc_last_rand: __u32, +pub ndtc_hash_rnd: __u32, +pub ndtc_hash_mask: __u32, +pub ndtc_hash_chain_gc: __u32, +pub ndtc_proxy_qlen: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtattr { +pub rta_len: crate::ctypes::c_ushort, +pub rta_type: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtmsg { +pub rtm_family: crate::ctypes::c_uchar, +pub rtm_dst_len: crate::ctypes::c_uchar, +pub rtm_src_len: crate::ctypes::c_uchar, +pub rtm_tos: crate::ctypes::c_uchar, +pub rtm_table: crate::ctypes::c_uchar, +pub rtm_protocol: crate::ctypes::c_uchar, +pub rtm_scope: crate::ctypes::c_uchar, +pub rtm_type: crate::ctypes::c_uchar, +pub rtm_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnexthop { +pub rtnh_len: crate::ctypes::c_ushort, +pub rtnh_flags: crate::ctypes::c_uchar, +pub rtnh_hops: crate::ctypes::c_uchar, +pub rtnh_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug)] +pub struct rtvia { +pub rtvia_family: __kernel_sa_family_t, +pub rtvia_addr: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_cacheinfo { +pub rta_clntref: __u32, +pub rta_lastuse: __u32, +pub rta_expires: __s32, +pub rta_error: __u32, +pub rta_used: __u32, +pub rta_id: __u32, +pub rta_ts: __u32, +pub rta_tsage: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rta_session { +pub proto: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub u: rta_session__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { +pub sport: __u16, +pub dport: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { +pub type_: __u8, +pub code: __u8, +pub ident: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_mfc_stats { +pub mfcs_packets: __u64, +pub mfcs_bytes: __u64, +pub mfcs_wrong_if: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtgenmsg { +pub rtgen_family: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifinfomsg { +pub ifi_family: crate::ctypes::c_uchar, +pub __ifi_pad: crate::ctypes::c_uchar, +pub ifi_type: crate::ctypes::c_ushort, +pub ifi_index: crate::ctypes::c_int, +pub ifi_flags: crate::ctypes::c_uint, +pub ifi_change: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefixmsg { +pub prefix_family: crate::ctypes::c_uchar, +pub prefix_pad1: crate::ctypes::c_uchar, +pub prefix_pad2: crate::ctypes::c_ushort, +pub prefix_ifindex: crate::ctypes::c_int, +pub prefix_type: crate::ctypes::c_uchar, +pub prefix_len: crate::ctypes::c_uchar, +pub prefix_flags: crate::ctypes::c_uchar, +pub prefix_pad3: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefix_cacheinfo { +pub preferred_time: __u32, +pub valid_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcmsg { +pub tcm_family: crate::ctypes::c_uchar, +pub tcm__pad1: crate::ctypes::c_uchar, +pub tcm__pad2: crate::ctypes::c_ushort, +pub tcm_ifindex: crate::ctypes::c_int, +pub tcm_handle: __u32, +pub tcm_parent: __u32, +pub tcm_info: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nduseroptmsg { +pub nduseropt_family: crate::ctypes::c_uchar, +pub nduseropt_pad1: crate::ctypes::c_uchar, +pub nduseropt_opts_len: crate::ctypes::c_ushort, +pub nduseropt_ifindex: crate::ctypes::c_int, +pub nduseropt_icmp_type: __u8, +pub nduseropt_icmp_code: __u8, +pub nduseropt_pad2: crate::ctypes::c_ushort, +pub nduseropt_pad3: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcamsg { +pub tca_family: crate::ctypes::c_uchar, +pub tca__pad1: crate::ctypes::c_uchar, +pub tca__pad2: crate::ctypes::c_ushort, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const NETLINK_ROUTE: u32 = 0; +pub const NETLINK_UNUSED: u32 = 1; +pub const NETLINK_USERSOCK: u32 = 2; +pub const NETLINK_FIREWALL: u32 = 3; +pub const NETLINK_SOCK_DIAG: u32 = 4; +pub const NETLINK_NFLOG: u32 = 5; +pub const NETLINK_XFRM: u32 = 6; +pub const NETLINK_SELINUX: u32 = 7; +pub const NETLINK_ISCSI: u32 = 8; +pub const NETLINK_AUDIT: u32 = 9; +pub const NETLINK_FIB_LOOKUP: u32 = 10; +pub const NETLINK_CONNECTOR: u32 = 11; +pub const NETLINK_NETFILTER: u32 = 12; +pub const NETLINK_IP6_FW: u32 = 13; +pub const NETLINK_DNRTMSG: u32 = 14; +pub const NETLINK_KOBJECT_UEVENT: u32 = 15; +pub const NETLINK_GENERIC: u32 = 16; +pub const NETLINK_SCSITRANSPORT: u32 = 18; +pub const NETLINK_ECRYPTFS: u32 = 19; +pub const NETLINK_RDMA: u32 = 20; +pub const NETLINK_CRYPTO: u32 = 21; +pub const NETLINK_SMC: u32 = 22; +pub const NETLINK_INET_DIAG: u32 = 4; +pub const MAX_LINKS: u32 = 32; +pub const NLM_F_REQUEST: u32 = 1; +pub const NLM_F_MULTI: u32 = 2; +pub const NLM_F_ACK: u32 = 4; +pub const NLM_F_ECHO: u32 = 8; +pub const NLM_F_DUMP_INTR: u32 = 16; +pub const NLM_F_DUMP_FILTERED: u32 = 32; +pub const NLM_F_ROOT: u32 = 256; +pub const NLM_F_MATCH: u32 = 512; +pub const NLM_F_ATOMIC: u32 = 1024; +pub const NLM_F_DUMP: u32 = 768; +pub const NLM_F_REPLACE: u32 = 256; +pub const NLM_F_EXCL: u32 = 512; +pub const NLM_F_CREATE: u32 = 1024; +pub const NLM_F_APPEND: u32 = 2048; +pub const NLM_F_NONREC: u32 = 256; +pub const NLM_F_BULK: u32 = 512; +pub const NLM_F_CAPPED: u32 = 256; +pub const NLM_F_ACK_TLVS: u32 = 512; +pub const NLMSG_ALIGNTO: u32 = 4; +pub const NLMSG_NOOP: u32 = 1; +pub const NLMSG_ERROR: u32 = 2; +pub const NLMSG_DONE: u32 = 3; +pub const NLMSG_OVERRUN: u32 = 4; +pub const NLMSG_MIN_TYPE: u32 = 16; +pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; +pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; +pub const NETLINK_PKTINFO: u32 = 3; +pub const NETLINK_BROADCAST_ERROR: u32 = 4; +pub const NETLINK_NO_ENOBUFS: u32 = 5; +pub const NETLINK_RX_RING: u32 = 6; +pub const NETLINK_TX_RING: u32 = 7; +pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; +pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; +pub const NETLINK_CAP_ACK: u32 = 10; +pub const NETLINK_EXT_ACK: u32 = 11; +pub const NETLINK_GET_STRICT_CHK: u32 = 12; +pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; +pub const NET_MAJOR: u32 = 36; +pub const NLA_F_NESTED: u32 = 32768; +pub const NLA_F_NET_BYTEORDER: u32 = 16384; +pub const NLA_TYPE_MASK: i32 = -49153; +pub const NLA_ALIGNTO: u32 = 4; +pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; +pub const MACVLAN_FLAG_NODST: u32 = 2; +pub const IPVLAN_F_PRIVATE: u32 = 1; +pub const IPVLAN_F_VEPA: u32 = 2; +pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; +pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; +pub const MAX_VLAN_LIST_LEN: u32 = 1; +pub const PORT_PROFILE_MAX: u32 = 40; +pub const PORT_UUID_MAX: u32 = 16; +pub const PORT_SELF_VF: i32 = -1; +pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; +pub const XDP_FLAGS_SKB_MODE: u32 = 2; +pub const XDP_FLAGS_DRV_MODE: u32 = 4; +pub const XDP_FLAGS_HW_MODE: u32 = 8; +pub const XDP_FLAGS_REPLACE: u32 = 16; +pub const XDP_FLAGS_MODES: u32 = 14; +pub const XDP_FLAGS_MASK: u32 = 31; +pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; +pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; +pub const IFA_F_SECONDARY: u32 = 1; +pub const IFA_F_TEMPORARY: u32 = 1; +pub const IFA_F_NODAD: u32 = 2; +pub const IFA_F_OPTIMISTIC: u32 = 4; +pub const IFA_F_DADFAILED: u32 = 8; +pub const IFA_F_HOMEADDRESS: u32 = 16; +pub const IFA_F_DEPRECATED: u32 = 32; +pub const IFA_F_TENTATIVE: u32 = 64; +pub const IFA_F_PERMANENT: u32 = 128; +pub const IFA_F_MANAGETEMPADDR: u32 = 256; +pub const IFA_F_NOPREFIXROUTE: u32 = 512; +pub const IFA_F_MCAUTOJOIN: u32 = 1024; +pub const IFA_F_STABLE_PRIVACY: u32 = 2048; +pub const IFAPROT_UNSPEC: u32 = 0; +pub const IFAPROT_KERNEL_LO: u32 = 1; +pub const IFAPROT_KERNEL_RA: u32 = 2; +pub const IFAPROT_KERNEL_LL: u32 = 3; +pub const NTF_USE: u32 = 1; +pub const NTF_SELF: u32 = 2; +pub const NTF_MASTER: u32 = 4; +pub const NTF_PROXY: u32 = 8; +pub const NTF_EXT_LEARNED: u32 = 16; +pub const NTF_OFFLOADED: u32 = 32; +pub const NTF_STICKY: u32 = 64; +pub const NTF_ROUTER: u32 = 128; +pub const NTF_EXT_MANAGED: u32 = 1; +pub const NTF_EXT_LOCKED: u32 = 2; +pub const NUD_INCOMPLETE: u32 = 1; +pub const NUD_REACHABLE: u32 = 2; +pub const NUD_STALE: u32 = 4; +pub const NUD_DELAY: u32 = 8; +pub const NUD_PROBE: u32 = 16; +pub const NUD_FAILED: u32 = 32; +pub const NUD_NOARP: u32 = 64; +pub const NUD_PERMANENT: u32 = 128; +pub const NUD_NONE: u32 = 0; +pub const RTNL_FAMILY_IPMR: u32 = 128; +pub const RTNL_FAMILY_IP6MR: u32 = 129; +pub const RTNL_FAMILY_MAX: u32 = 129; +pub const RTA_ALIGNTO: u32 = 4; +pub const RTPROT_UNSPEC: u32 = 0; +pub const RTPROT_REDIRECT: u32 = 1; +pub const RTPROT_KERNEL: u32 = 2; +pub const RTPROT_BOOT: u32 = 3; +pub const RTPROT_STATIC: u32 = 4; +pub const RTPROT_GATED: u32 = 8; +pub const RTPROT_RA: u32 = 9; +pub const RTPROT_MRT: u32 = 10; +pub const RTPROT_ZEBRA: u32 = 11; +pub const RTPROT_BIRD: u32 = 12; +pub const RTPROT_DNROUTED: u32 = 13; +pub const RTPROT_XORP: u32 = 14; +pub const RTPROT_NTK: u32 = 15; +pub const RTPROT_DHCP: u32 = 16; +pub const RTPROT_MROUTED: u32 = 17; +pub const RTPROT_KEEPALIVED: u32 = 18; +pub const RTPROT_BABEL: u32 = 42; +pub const RTPROT_OPENR: u32 = 99; +pub const RTPROT_BGP: u32 = 186; +pub const RTPROT_ISIS: u32 = 187; +pub const RTPROT_OSPF: u32 = 188; +pub const RTPROT_RIP: u32 = 189; +pub const RTPROT_EIGRP: u32 = 192; +pub const RTM_F_NOTIFY: u32 = 256; +pub const RTM_F_CLONED: u32 = 512; +pub const RTM_F_EQUALIZE: u32 = 1024; +pub const RTM_F_PREFIX: u32 = 2048; +pub const RTM_F_LOOKUP_TABLE: u32 = 4096; +pub const RTM_F_FIB_MATCH: u32 = 8192; +pub const RTM_F_OFFLOAD: u32 = 16384; +pub const RTM_F_TRAP: u32 = 32768; +pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; +pub const RTNH_F_DEAD: u32 = 1; +pub const RTNH_F_PERVASIVE: u32 = 2; +pub const RTNH_F_ONLINK: u32 = 4; +pub const RTNH_F_OFFLOAD: u32 = 8; +pub const RTNH_F_LINKDOWN: u32 = 16; +pub const RTNH_F_UNRESOLVED: u32 = 32; +pub const RTNH_F_TRAP: u32 = 64; +pub const RTNH_COMPARE_MASK: u32 = 89; +pub const RTNH_ALIGNTO: u32 = 4; +pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; +pub const RTAX_FEATURE_ECN: u32 = 1; +pub const RTAX_FEATURE_SACK: u32 = 2; +pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; +pub const RTAX_FEATURE_ALLFRAG: u32 = 8; +pub const RTAX_FEATURE_MASK: u32 = 15; +pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; +pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; +pub const RTMGRP_LINK: u32 = 1; +pub const RTMGRP_NOTIFY: u32 = 2; +pub const RTMGRP_NEIGH: u32 = 4; +pub const RTMGRP_TC: u32 = 8; +pub const RTMGRP_IPV4_IFADDR: u32 = 16; +pub const RTMGRP_IPV4_MROUTE: u32 = 32; +pub const RTMGRP_IPV4_ROUTE: u32 = 64; +pub const RTMGRP_IPV4_RULE: u32 = 128; +pub const RTMGRP_IPV6_IFADDR: u32 = 256; +pub const RTMGRP_IPV6_MROUTE: u32 = 512; +pub const RTMGRP_IPV6_ROUTE: u32 = 1024; +pub const RTMGRP_IPV6_IFINFO: u32 = 2048; +pub const RTMGRP_DECnet_IFADDR: u32 = 4096; +pub const RTMGRP_DECnet_ROUTE: u32 = 16384; +pub const RTMGRP_IPV6_PREFIX: u32 = 131072; +pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; +pub const RTEXT_FILTER_VF: u32 = 1; +pub const RTEXT_FILTER_BRVLAN: u32 = 2; +pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; +pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; +pub const RTEXT_FILTER_MRP: u32 = 16; +pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; +pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; +pub const RTEXT_FILTER_MST: u32 = 128; +pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; +pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; +pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; +pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; +pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; +pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; +pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; +pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; +pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; +pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; +pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; +pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; +pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; +pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; +pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; +pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; +pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; +pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; +pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; +pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; +pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; +pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; +pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; +pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; +pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; +pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; +pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; +pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; +pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; +pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; +pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; +pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; +pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; +pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; +pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; +pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; +pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; +pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; +pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; +pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; +pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; +pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; +pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; +pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; +pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; +pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; +pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; +pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; +pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; +pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; +pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; +pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; +pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; +pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; +pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; +pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; +pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; +pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; +pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; +pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; +pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; +pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; +pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; +pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; +pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; +pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; +pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; +pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; +pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; +pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; +pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; +pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; +pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; +pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; +pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; +pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; +pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; +pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; +pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; +pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; +pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; +pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; +pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; +pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; +pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; +pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; +pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; +pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; +pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; +pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; +pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; +pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; +pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; +pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; +pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; +pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; +pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; +pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; +pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; +pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; +pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; +pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; +pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; +pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; +pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; +pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; +pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; +pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; +pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; +pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; +pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; +pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; +pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; +pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; +pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; +pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; +pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; +pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; +pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; +pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; +pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; +pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; +pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; +pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; +pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; +pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; +pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; +pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; +pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; +pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; +pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; +pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; +pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; +pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; +pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; +pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; +pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; +pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; +pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; +pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; +pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; +pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; +pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; +pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; +pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; +pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; +pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; +pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; +pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; +pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; +pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; +pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; +pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; +pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; +pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; +pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; +pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; +pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; +pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; +pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; +pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; +pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; +pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; +pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; +pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; +pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; +pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; +pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; +pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; +pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; +pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; +pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; +pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; +pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; +pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; +pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; +pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; +pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; +pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; +pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; +pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; +pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; +pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; +pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; +pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; +pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; +pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; +pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; +pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; +pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; +pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; +pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; +pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; +pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; +pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; +pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; +pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; +pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; +pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; +pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; +pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; +pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; +pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; +pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; +pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; +pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; +pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; +pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; +pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; +pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; +pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; +pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; +pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; +pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; +pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; +pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; +pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; +pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; +pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; +pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; +pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; +pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; +pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; +pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; +pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; +pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; +pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; +pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; +pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; +pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; +pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; +pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; +pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; +pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; +pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; +pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; +pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; +pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; +pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; +pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; +pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; +pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; +pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; +pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; +pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; +pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; +pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; +pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; +pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; +pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; +pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; +pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; +pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; +pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; +pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; +pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; +pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; +pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; +pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; +pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; +pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; +pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; +pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; +pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; +pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; +pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; +pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; +pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; +pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; +pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; +pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; +pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; +pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; +pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; +pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; +pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; +pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; +pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; +pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; +pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; +pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; +pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; +pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; +pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; +pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; +pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; +pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; +pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; +pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; +pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; +pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; +pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; +pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; +pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; +pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; +pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; +pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; +pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; +pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; +pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; +pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; +pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; +pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; +pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; +pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; +pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; +pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; +pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; +pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; +pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; +pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; +pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; +pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; +pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; +pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; +pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; +pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; +pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; +pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; +pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; +pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; +pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; +pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; +pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; +pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; +pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; +pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; +pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; +pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; +pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; +pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; +pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; +pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; +pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; +pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; +pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; +pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; +pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; +pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; +pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; +pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; +pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; +pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; +pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; +pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; +pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; +pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; +pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; +pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; +pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; +pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; +pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; +pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; +pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; +pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; +pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; +pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; +pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; +pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; +pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; +pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; +pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; +pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; +pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; +pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; +pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; +pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; +pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; +pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; +pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; +pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; +pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; +pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; +pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; +pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; +pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; +pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; +pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; +pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; +pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; +pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; +pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; +pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; +pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; +pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; +pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; +pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; +pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; +pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; +pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; +pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; +pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; +pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; +pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; +pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; +pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; +pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; +pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; +pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; +pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; +pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; +pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; +pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; +pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; +pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; +pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; +pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; +pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; +pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; +pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; +pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; +pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; +pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; +pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; +pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; +pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; +pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; +pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; +pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; +pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; +pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; +pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; +pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; +pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; +pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; +pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; +pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; +pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; +pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; +pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; +pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; +pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; +pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; +pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; +pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; +pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; +pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; +pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; +pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; +pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; +pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; +pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; +pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; +pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; +pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; +pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; +pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; +pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; +pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; +pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; +pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; +pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; +pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; +pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; +pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; +pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; +pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; +pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; +pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; +pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; +pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; +pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; +pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; +pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; +pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; +pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; +pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; +pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; +pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; +pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; +pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; +pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; +pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; +pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; +pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; +pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; +pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; +pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; +pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; +pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; +pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; +pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; +pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; +pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; +pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; +pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; +pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; +pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; +pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; +pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; +pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; +pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; +pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; +pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; +pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; +pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; +pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; +pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; +pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; +pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; +pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; +pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; +pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; +pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; +pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; +pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; +pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; +pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; +pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; +pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; +pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; +pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; +pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; +pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; +pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; +pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; +pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; +pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; +pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; +pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; +pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; +pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; +pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; +pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; +pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; +pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; +pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; +pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; +pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; +pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; +pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; +pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; +pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; +pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; +pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; +pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; +pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; +pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; +pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; +pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; +pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; +pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; +pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; +pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; +pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; +pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; +pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; +pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; +pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; +pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; +pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; +pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; +pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; +pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; +pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; +pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; +pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; +pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; +pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; +pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; +pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; +pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; +pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; +pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; +pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; +pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; +pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; +pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; +pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; +pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; +pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; +pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; +pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; +pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; +pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; +pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; +pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; +pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; +pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; +pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; +pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; +pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; +pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; +pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; +pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; +pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; +pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; +pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; +pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; +pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; +pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; +pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; +pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; +pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; +pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; +pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; +pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; +pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; +pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; +pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; +pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; +pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; +pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; +pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; +pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; +pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; +pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; +pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; +pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; +pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; +pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; +pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; +pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; +pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; +pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; +pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; +pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; +pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; +pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; +pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; +pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; +pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; +pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; +pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; +pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; +pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; +pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; +pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; +pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; +pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; +pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; +pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; +pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; +pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; +pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; +pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; +pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; +pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; +pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; +pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; +pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; +pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; +pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; +pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; +pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; +pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; +pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; +pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; +pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; +pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; +pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; +pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; +pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; +pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; +pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; +pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; +pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; +pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; +pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; +pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; +pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; +pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; +pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; +pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; +pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; +pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; +pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; +pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; +pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; +pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; +pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; +pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; +pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; +pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; +pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; +pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; +pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; +pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; +pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; +pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; +pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; +pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; +pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; +pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; +pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; +pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; +pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; +pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; +pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; +pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; +pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; +pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; +pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; +pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; +pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; +pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; +pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; +pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; +pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; +pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; +pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; +pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; +pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; +pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -364,29 +1500,6 @@ NLMSGERR_ATTR_MISS_NEST = 6, __NLMSGERR_ATTR_MAX = 7, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_pktinfo { -pub group: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_req { -pub nm_block_size: crate::ctypes::c_uint, -pub nm_block_nr: crate::ctypes::c_uint, -pub nm_frame_size: crate::ctypes::c_uint, -pub nm_frame_nr: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_hdr { -pub nm_status: crate::ctypes::c_uint, -pub nm_len: crate::ctypes::c_uint, -pub nm_group: __u32, -pub nm_pid: __u32, -pub nm_uid: __u32, -pub nm_gid: __u32, -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -397,8 +1510,6 @@ NL_MMAP_STATUS_COPY = 3, NL_MMAP_STATUS_SKIP = 4, } -pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; -pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -406,208 +1517,46 @@ NETLINK_UNCONNECTED = 0, NETLINK_CONNECTED = 1, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nlattr { -pub nla_len: __u16, -pub nla_type: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nla_bitfield32 { -pub value: __u32, -pub selector: __u32, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_attribute_type { -NL_ATTR_TYPE_INVALID = 0, -NL_ATTR_TYPE_FLAG = 1, -NL_ATTR_TYPE_U8 = 2, -NL_ATTR_TYPE_U16 = 3, -NL_ATTR_TYPE_U32 = 4, -NL_ATTR_TYPE_U64 = 5, -NL_ATTR_TYPE_S8 = 6, -NL_ATTR_TYPE_S16 = 7, -NL_ATTR_TYPE_S32 = 8, -NL_ATTR_TYPE_S64 = 9, -NL_ATTR_TYPE_BINARY = 10, -NL_ATTR_TYPE_STRING = 11, -NL_ATTR_TYPE_NUL_STRING = 12, -NL_ATTR_TYPE_NESTED = 13, -NL_ATTR_TYPE_NESTED_ARRAY = 14, -NL_ATTR_TYPE_BITFIELD32 = 15, -} -impl netlink_policy_type_attr { -pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_policy_type_attr { -NL_POLICY_TYPE_ATTR_UNSPEC = 0, -NL_POLICY_TYPE_ATTR_TYPE = 1, -NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, -NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, -NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, -NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, -NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, -NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, -NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, -NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, -NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, -NL_POLICY_TYPE_ATTR_PAD = 11, -NL_POLICY_TYPE_ATTR_MASK = 12, -__NL_POLICY_TYPE_ATTR_MAX = 13, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats { -pub rx_packets: __u32, -pub tx_packets: __u32, -pub rx_bytes: __u32, -pub tx_bytes: __u32, -pub rx_errors: __u32, -pub tx_errors: __u32, -pub rx_dropped: __u32, -pub tx_dropped: __u32, -pub multicast: __u32, -pub collisions: __u32, -pub rx_length_errors: __u32, -pub rx_over_errors: __u32, -pub rx_crc_errors: __u32, -pub rx_frame_errors: __u32, -pub rx_fifo_errors: __u32, -pub rx_missed_errors: __u32, -pub tx_aborted_errors: __u32, -pub tx_carrier_errors: __u32, -pub tx_fifo_errors: __u32, -pub tx_heartbeat_errors: __u32, -pub tx_window_errors: __u32, -pub rx_compressed: __u32, -pub tx_compressed: __u32, -pub rx_nohandler: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, -pub collisions: __u64, -pub rx_length_errors: __u64, -pub rx_over_errors: __u64, -pub rx_crc_errors: __u64, -pub rx_frame_errors: __u64, -pub rx_fifo_errors: __u64, -pub rx_missed_errors: __u64, -pub tx_aborted_errors: __u64, -pub tx_carrier_errors: __u64, -pub tx_fifo_errors: __u64, -pub tx_heartbeat_errors: __u64, -pub tx_window_errors: __u64, -pub rx_compressed: __u64, -pub tx_compressed: __u64, -pub rx_nohandler: __u64, -pub rx_otherhost_dropped: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_hw_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, +pub enum netlink_attribute_type { +NL_ATTR_TYPE_INVALID = 0, +NL_ATTR_TYPE_FLAG = 1, +NL_ATTR_TYPE_U8 = 2, +NL_ATTR_TYPE_U16 = 3, +NL_ATTR_TYPE_U32 = 4, +NL_ATTR_TYPE_U64 = 5, +NL_ATTR_TYPE_S8 = 6, +NL_ATTR_TYPE_S16 = 7, +NL_ATTR_TYPE_S32 = 8, +NL_ATTR_TYPE_S64 = 9, +NL_ATTR_TYPE_BINARY = 10, +NL_ATTR_TYPE_STRING = 11, +NL_ATTR_TYPE_NUL_STRING = 12, +NL_ATTR_TYPE_NESTED = 13, +NL_ATTR_TYPE_NESTED_ARRAY = 14, +NL_ATTR_TYPE_BITFIELD32 = 15, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_ifmap { -pub mem_start: __u64, -pub mem_end: __u64, -pub base_addr: __u64, -pub irq: __u16, -pub dma: __u8, -pub port: __u8, +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_policy_type_attr { +NL_POLICY_TYPE_ATTR_UNSPEC = 0, +NL_POLICY_TYPE_ATTR_TYPE = 1, +NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, +NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, +NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, +NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, +NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, +NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, +NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, +NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, +NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, +NL_POLICY_TYPE_ATTR_PAD = 11, +NL_POLICY_TYPE_ATTR_MASK = 12, +__NL_POLICY_TYPE_ATTR_MAX = 13, } -pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; -pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; -pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; -pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; -pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; -pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; -pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; -pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; -pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; -pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; -pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; -pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; -pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; -pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; -pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; -pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; -pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; -pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; -pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; -pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; -pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; -pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; -pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; -pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; -pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; -pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; -pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; -pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; -pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; -pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; -pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; -pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; -pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; -pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; -pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; -pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; -pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; -pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; -pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; -pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; -pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; -pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; -pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; -pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; -pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; -pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; -pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; -pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; -pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; -pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; -pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; -pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; -pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; -pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; -pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; -pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; -pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; -pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; -pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; -pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; -pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; -pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; -pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; -pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; -pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -679,11 +1628,6 @@ IFLA_GRO_IPV4_MAX_SIZE = 64, __IFLA_MAX = 65, } -pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; -pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; -pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; -pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; -pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -693,9 +1637,6 @@ IFLA_PROTO_DOWN_REASON_VALUE = 2, __IFLA_PROTO_DOWN_REASON_CNT = 3, } -pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; -pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; -pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -704,17 +1645,6 @@ IFLA_INET_CONF = 1, __IFLA_INET_MAX = 2, } -pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; -pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; -pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; -pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; -pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; -pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; -pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; -pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; -pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; -pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; -pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -740,55 +1670,6 @@ IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, IN6_ADDR_GEN_MODE_RANDOM = 3, } -pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; -pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; -pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; -pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; -pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; -pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; -pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; -pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; -pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; -pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; -pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; -pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; -pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; -pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; -pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; -pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; -pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; -pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; -pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; -pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; -pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; -pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; -pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; -pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; -pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; -pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; -pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; -pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; -pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; -pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; -pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; -pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; -pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; -pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; -pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; -pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; -pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; -pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; -pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; -pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; -pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; -pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; -pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; -pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; -pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; -pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; -pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; -pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; -pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -825,83 +1706,31 @@ IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29, IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30, IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, -IFLA_BR_MCAST_QUERIER_INTVL = 32, -IFLA_BR_MCAST_QUERY_INTVL = 33, -IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, -IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, -IFLA_BR_NF_CALL_IPTABLES = 36, -IFLA_BR_NF_CALL_IP6TABLES = 37, -IFLA_BR_NF_CALL_ARPTABLES = 38, -IFLA_BR_VLAN_DEFAULT_PVID = 39, -IFLA_BR_PAD = 40, -IFLA_BR_VLAN_STATS_ENABLED = 41, -IFLA_BR_MCAST_STATS_ENABLED = 42, -IFLA_BR_MCAST_IGMP_VERSION = 43, -IFLA_BR_MCAST_MLD_VERSION = 44, -IFLA_BR_VLAN_STATS_PER_PORT = 45, -IFLA_BR_MULTI_BOOLOPT = 46, -IFLA_BR_MCAST_QUERIER_STATE = 47, -__IFLA_BR_MAX = 48, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_bridge_id { -pub prio: [__u8; 2usize], -pub addr: [__u8; 6usize], -} -pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; -pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -BRIDGE_MODE_UNSPEC = 0, -BRIDGE_MODE_HAIRPIN = 1, -} -pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; -pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; -pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; -pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; -pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; -pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; -pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; -pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; -pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; -pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; -pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; -pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; -pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; -pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; -pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; -pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; -pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; -pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; -pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; -pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; -pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; -pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; -pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; -pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; -pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; -pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; -pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; -pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; -pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; -pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; -pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; -pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; -pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; -pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; -pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; -pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; -pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; -pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; -pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; -pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; -pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; -pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +IFLA_BR_MCAST_QUERIER_INTVL = 32, +IFLA_BR_MCAST_QUERY_INTVL = 33, +IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, +IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, +IFLA_BR_NF_CALL_IPTABLES = 36, +IFLA_BR_NF_CALL_IP6TABLES = 37, +IFLA_BR_NF_CALL_ARPTABLES = 38, +IFLA_BR_VLAN_DEFAULT_PVID = 39, +IFLA_BR_PAD = 40, +IFLA_BR_VLAN_STATS_ENABLED = 41, +IFLA_BR_MCAST_STATS_ENABLED = 42, +IFLA_BR_MCAST_IGMP_VERSION = 43, +IFLA_BR_MCAST_MLD_VERSION = 44, +IFLA_BR_VLAN_STATS_PER_PORT = 45, +IFLA_BR_MULTI_BOOLOPT = 46, +IFLA_BR_MCAST_QUERIER_STATE = 47, +__IFLA_BR_MAX = 48, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +BRIDGE_MODE_UNSPEC = 0, +BRIDGE_MODE_HAIRPIN = 1, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -951,21 +1780,6 @@ IFLA_BRPORT_MCAST_MAX_GROUPS = 42, __IFLA_BRPORT_MAX = 43, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_cacheinfo { -pub max_reasm_len: __u32, -pub tstamp: __u32, -pub reachable_time: __u32, -pub retrans_time: __u32, -} -pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; -pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; -pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; -pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; -pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; -pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; -pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -978,13 +1792,6 @@ IFLA_INFO_SLAVE_DATA = 5, __IFLA_INFO_MAX = 6, } -pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; -pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; -pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; -pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; -pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; -pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; -pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -997,15 +1804,6 @@ IFLA_VLAN_PROTOCOL = 5, __IFLA_VLAN_MAX = 6, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; -pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; -pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1014,22 +1812,6 @@ IFLA_VLAN_QOS_MAPPING = 1, __IFLA_VLAN_QOS_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_qos_mapping { -pub from: __u32, -pub to: __u32, -} -pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; -pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; -pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; -pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; -pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; -pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; -pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; -pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; -pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; -pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1064,9 +1846,6 @@ MACVLAN_MACADDR_FLUSH = 2, MACVLAN_MACADDR_SET = 3, } -pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; -pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; -pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1075,9 +1854,6 @@ IFLA_VRF_TABLE = 1, __IFLA_VRF_MAX = 2, } -pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; -pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; -pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1086,23 +1862,6 @@ IFLA_VRF_PORT_TABLE = 1, __IFLA_VRF_PORT_MAX = 2, } -pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; -pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; -pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; -pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; -pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; -pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; -pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; -pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; -pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; -pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; -pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; -pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; -pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; -pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; -pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; -pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; -pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1125,11 +1884,6 @@ IFLA_MACSEC_OFFLOAD = 15, __IFLA_MACSEC_MAX = 16, } -pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; -pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; -pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; -pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; -pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1140,9 +1894,6 @@ IFLA_XFRM_COLLECT_METADATA = 3, __IFLA_XFRM_MAX = 4, } -impl macsec_validation_type { -pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1152,9 +1903,6 @@ MACSEC_VALIDATE_STRICT = 2, __MACSEC_VALIDATE_END = 3, } -impl macsec_offload { -pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1164,10 +1912,6 @@ MACSEC_OFFLOAD_MAC = 2, __MACSEC_OFFLOAD_END = 3, } -pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; -pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; -pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; -pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1186,25 +1930,6 @@ IPVLAN_MODE_L3S = 2, IPVLAN_MODE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tunnel_msg { -pub family: __u8, -pub flags: __u8, -pub reserved2: __u16, -pub ifindex: __u32, -} -pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; -pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; -pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; -pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; -pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; -pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; -pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; -pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; -pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1221,13 +1946,6 @@ VNIFILTER_ENTRY_STATS_PAD = 9, __VNIFILTER_ENTRY_STATS_MAX = 10, } -pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; -pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; -pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; -pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; -pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; -pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1240,9 +1958,6 @@ VXLAN_VNIFILTER_ENTRY_STATS = 5, __VXLAN_VNIFILTER_ENTRY_MAX = 6, } -pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; -pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1251,38 +1966,6 @@ VXLAN_VNIFILTER_ENTRY = 1, __VXLAN_VNIFILTER_MAX = 2, } -pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; -pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; -pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; -pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; -pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; -pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; -pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; -pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; -pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; -pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; -pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; -pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; -pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; -pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; -pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; -pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; -pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; -pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; -pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; -pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; -pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; -pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; -pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; -pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; -pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; -pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; -pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; -pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; -pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; -pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1320,15 +2003,6 @@ IFLA_VXLAN_VNIFILTER = 30, __IFLA_VXLAN_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vxlan_port_range { -pub low: __be16, -pub high: __be16, -} -impl ifla_vxlan_df { -pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1338,22 +2012,6 @@ VXLAN_DF_INHERIT = 2, __VXLAN_DF_END = 3, } -pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; -pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; -pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; -pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; -pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; -pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; -pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; -pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; -pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; -pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; -pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; -pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; -pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; -pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1375,9 +2033,6 @@ IFLA_GENEVE_INNER_PROTO_INHERIT = 14, __IFLA_GENEVE_MAX = 15, } -impl ifla_geneve_df { -pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1387,12 +2042,6 @@ GENEVE_DF_INHERIT = 2, __GENEVE_DF_END = 3, } -pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; -pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; -pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; -pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; -pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; -pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1404,9 +2053,6 @@ IFLA_BAREUDP_MULTIPROTO_MODE = 4, __IFLA_BAREUDP_MAX = 5, } -pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; -pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; -pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1422,60 +2068,19 @@ GTP_ROLE_GGSN = 0, GTP_ROLE_SGSN = 1, } -pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; -pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; -pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; -pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; -pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; -pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; -pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; -pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub enum _bindgen_ty_25 { IFLA_GTP_UNSPEC = 0, IFLA_GTP_FD0 = 1, -IFLA_GTP_FD1 = 2, -IFLA_GTP_PDP_HASHSIZE = 3, -IFLA_GTP_ROLE = 4, -IFLA_GTP_CREATE_SOCKETS = 5, -IFLA_GTP_RESTART_COUNT = 6, -__IFLA_GTP_MAX = 7, -} -pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; -pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; -pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; -pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; -pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; -pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; -pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; -pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; -pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; -pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; -pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; -pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; -pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; -pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; -pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; -pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; -pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; -pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; -pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; -pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; -pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; -pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; -pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; -pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; -pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; -pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; -pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; -pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; -pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; -pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; -pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; -pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; -pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +IFLA_GTP_FD1 = 2, +IFLA_GTP_PDP_HASHSIZE = 3, +IFLA_GTP_ROLE = 4, +IFLA_GTP_CREATE_SOCKETS = 5, +IFLA_GTP_RESTART_COUNT = 6, +__IFLA_GTP_MAX = 7, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1514,13 +2119,6 @@ IFLA_BOND_NS_IP6_TARGET = 31, __IFLA_BOND_MAX = 32, } -pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; -pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; -pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; -pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; -pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1533,17 +2131,6 @@ IFLA_BOND_AD_INFO_PARTNER_MAC = 5, __IFLA_BOND_AD_INFO_MAX = 6, } -pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; -pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; -pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; -pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; -pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; -pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; -pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; -pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; -pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1560,9 +2147,6 @@ IFLA_BOND_SLAVE_PRIO = 9, __IFLA_BOND_SLAVE_MAX = 10, } -pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; -pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; -pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1571,21 +2155,6 @@ IFLA_VF_INFO = 1, __IFLA_VF_INFO_MAX = 2, } -pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; -pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; -pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; -pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; -pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; -pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; -pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; -pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; -pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; -pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; -pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; -pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; -pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; -pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; -pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1606,27 +2175,6 @@ IFLA_VF_BROADCAST = 13, __IFLA_VF_MAX = 14, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_mac { -pub vf: __u32, -pub mac: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_broadcast { -pub broadcast: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -} -pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; -pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; -pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1635,43 +2183,6 @@ IFLA_VF_VLAN_INFO = 1, __IFLA_VF_VLAN_INFO_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan_info { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -pub vlan_proto: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_tx_rate { -pub vf: __u32, -pub rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rate { -pub vf: __u32, -pub min_tx_rate: __u32, -pub max_tx_rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_spoofchk { -pub vf: __u32, -pub setting: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_guid { -pub vf: __u32, -pub guid: __u64, -} -pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; -pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; -pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; -pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1681,28 +2192,6 @@ IFLA_VF_LINK_STATE_DISABLE = 2, __IFLA_VF_LINK_STATE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_link_state { -pub vf: __u32, -pub link_state: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rss_query_en { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; -pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; -pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; -pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; -pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; -pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; -pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; -pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; -pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; -pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1718,15 +2207,6 @@ IFLA_VF_STATS_TX_DROPPED = 8, __IFLA_VF_STATS_MAX = 9, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_trust { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; -pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; -pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1735,15 +2215,6 @@ IFLA_VF_PORT = 1, __IFLA_VF_PORT_MAX = 2, } -pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; -pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; -pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; -pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; -pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; -pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; -pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; -pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; -pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1758,10 +2229,6 @@ IFLA_PORT_RESPONSE = 7, __IFLA_PORT_MAX = 8, } -pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; -pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; -pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; -pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1771,19 +2238,6 @@ PORT_REQUEST_ASSOCIATE = 2, PORT_REQUEST_DISASSOCIATE = 3, } -pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; -pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; -pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; -pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; -pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; -pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; -pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; -pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; -pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; -pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; -pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1802,19 +2256,6 @@ PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, PORT_PROFILE_RESPONSE_ERROR = 261, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_port_vsi { -pub vsi_mgr_id: __u8, -pub vsi_type_id: [__u8; 3usize], -pub vsi_type_version: __u8, -pub pad: [__u8; 3usize], -} -pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; -pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; -pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; -pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; -pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1825,8 +2266,6 @@ IFLA_IPOIB_UMCAST = 3, __IFLA_IPOIB_MAX = 4, } -pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; -pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1834,9 +2273,6 @@ IPOIB_MODE_DATAGRAM = 0, IPOIB_MODE_CONNECTED = 1, } -pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; -pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; -pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1845,15 +2281,6 @@ HSR_PROTOCOL_PRP = 1, HSR_PROTOCOL_MAX = 2, } -pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; -pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; -pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; -pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; -pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; -pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; -pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; -pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; -pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1868,22 +2295,6 @@ IFLA_HSR_PROTOCOL = 7, __IFLA_HSR_MAX = 8, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_stats_msg { -pub family: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub ifindex: __u32, -pub filter_mask: __u32, -} -pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; -pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; -pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; -pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; -pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; -pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; -pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1896,10 +2307,6 @@ IFLA_STATS_AF_SPEC = 5, __IFLA_STATS_MAX = 6, } -pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; -pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; -pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1909,10 +2316,6 @@ IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, __IFLA_STATS_GETSET_MAX = 3, } -pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; -pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; -pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; -pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1922,11 +2325,6 @@ LINK_XSTATS_TYPE_BOND = 2, __LINK_XSTATS_TYPE_MAX = 3, } -pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; -pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1937,10 +2335,6 @@ IFLA_OFFLOAD_XSTATS_L3_STATS = 3, __IFLA_OFFLOAD_XSTATS_MAX = 4, } -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; -pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1950,11 +2344,6 @@ IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, } -pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; -pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; -pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; -pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; -pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1965,16 +2354,6 @@ XDP_ATTACHED_HW = 3, XDP_ATTACHED_MULTI = 4, } -pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; -pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; -pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; -pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; -pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; -pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; -pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; -pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; -pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; -pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1990,13 +2369,6 @@ IFLA_XDP_EXPECTED_FD = 8, __IFLA_XDP_MAX = 9, } -pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; -pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; -pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; -pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; -pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; -pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; -pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2009,17 +2381,6 @@ IFLA_EVENT_IGMP_RESEND = 5, IFLA_EVENT_BONDING_OPTIONS = 6, } -pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; -pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; -pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; -pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; -pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; -pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; -pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; -pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; -pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; -pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; -pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2035,11 +2396,7 @@ IFLA_TUN_NUM_QUEUES = 8, IFLA_TUN_NUM_DISABLED_QUEUES = 9, __IFLA_TUN_MAX = 10, -} -pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; -pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; -pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; -pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2049,15 +2406,6 @@ IFLA_RMNET_FLAGS = 2, __IFLA_RMNET_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_rmnet_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; -pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; -pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2066,9 +2414,6 @@ IFLA_MCTP_NET = 1, __IFLA_MCTP_MAX = 2, } -pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; -pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; -pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2077,28 +2422,6 @@ IFLA_DSA_MASTER = 1, __IFLA_DSA_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifaddrmsg { -pub ifa_family: __u8, -pub ifa_prefixlen: __u8, -pub ifa_flags: __u8, -pub ifa_scope: __u8, -pub ifa_index: __u32, -} -pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; -pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; -pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; -pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; -pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; -pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; -pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; -pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; -pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; -pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; -pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; -pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; -pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2117,44 +2440,6 @@ IFA_PROTO = 11, __IFA_MAX = 12, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifa_cacheinfo { -pub ifa_prefered: __u32, -pub ifa_valid: __u32, -pub cstamp: __u32, -pub tstamp: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndmsg { -pub ndm_family: __u8, -pub ndm_pad1: __u8, -pub ndm_pad2: __u16, -pub ndm_ifindex: __s32, -pub ndm_state: __u16, -pub ndm_flags: __u8, -pub ndm_type: __u8, -} -pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; -pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; -pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; -pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; -pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; -pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; -pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; -pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; -pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; -pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; -pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; -pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; -pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; -pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; -pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; -pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; -pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; -pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; -pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2179,50 +2464,6 @@ NDA_NDM_FLAGS_MASK = 17, __NDA_MAX = 18, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nda_cacheinfo { -pub ndm_confirmed: __u32, -pub ndm_used: __u32, -pub ndm_updated: __u32, -pub ndm_refcnt: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_stats { -pub ndts_allocs: __u64, -pub ndts_destroys: __u64, -pub ndts_hash_grows: __u64, -pub ndts_res_failed: __u64, -pub ndts_lookups: __u64, -pub ndts_hits: __u64, -pub ndts_rcv_probes_mcast: __u64, -pub ndts_rcv_probes_ucast: __u64, -pub ndts_periodic_gc_runs: __u64, -pub ndts_forced_gc_runs: __u64, -pub ndts_table_fulls: __u64, -} -pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; -pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; -pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; -pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; -pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; -pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; -pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; -pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; -pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; -pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; -pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; -pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; -pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; -pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; -pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; -pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; -pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; -pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; -pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; -pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; -pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2249,37 +2490,6 @@ NDTPA_INTERVAL_PROBE_TIME_MS = 19, __NDTPA_MAX = 20, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndtmsg { -pub ndtm_family: __u8, -pub ndtm_pad1: __u8, -pub ndtm_pad2: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_config { -pub ndtc_key_len: __u16, -pub ndtc_entry_size: __u16, -pub ndtc_entries: __u32, -pub ndtc_last_flush: __u32, -pub ndtc_last_rand: __u32, -pub ndtc_hash_rnd: __u32, -pub ndtc_hash_mask: __u32, -pub ndtc_hash_chain_gc: __u32, -pub ndtc_proxy_qlen: __u32, -} -pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; -pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; -pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; -pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; -pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; -pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; -pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; -pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; -pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; -pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; -pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2296,8 +2506,6 @@ NDTA_PAD = 9, __NDTA_MAX = 10, } -pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; -pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2305,10 +2513,6 @@ FDB_NOTIFY_BIT = 1, FDB_NOTIFY_INACTIVE_BIT = 2, } -pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; -pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; -pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; -pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2318,79 +2522,6 @@ NFEA_DONT_REFRESH = 2, __NFEA_MAX = 3, } -pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; -pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; -pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; -pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; -pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; -pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; -pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; -pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; -pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; -pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; -pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; -pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; -pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; -pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; -pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; -pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; -pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; -pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; -pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; -pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; -pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; -pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; -pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; -pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; -pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; -pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; -pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; -pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; -pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; -pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; -pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; -pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; -pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; -pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; -pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; -pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; -pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; -pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; -pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; -pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; -pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; -pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; -pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; -pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; -pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; -pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; -pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; -pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; -pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; -pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; -pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; -pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; -pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; -pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; -pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; -pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; -pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; -pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; -pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; -pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; -pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; -pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; -pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; -pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; -pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; -pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; -pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; -pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; -pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; -pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; -pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2457,49 +2588,17 @@ RTM_NEWLINKPROP = 108, RTM_DELLINKPROP = 109, RTM_GETLINKPROP = 110, -RTM_NEWVLAN = 112, -RTM_DELVLAN = 113, -RTM_GETVLAN = 114, -RTM_NEWNEXTHOPBUCKET = 116, -RTM_DELNEXTHOPBUCKET = 117, -RTM_GETNEXTHOPBUCKET = 118, -RTM_NEWTUNNEL = 120, -RTM_DELTUNNEL = 121, -RTM_GETTUNNEL = 122, -__RTM_MAX = 123, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtattr { -pub rta_len: crate::ctypes::c_ushort, -pub rta_type: crate::ctypes::c_ushort, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtmsg { -pub rtm_family: crate::ctypes::c_uchar, -pub rtm_dst_len: crate::ctypes::c_uchar, -pub rtm_src_len: crate::ctypes::c_uchar, -pub rtm_tos: crate::ctypes::c_uchar, -pub rtm_table: crate::ctypes::c_uchar, -pub rtm_protocol: crate::ctypes::c_uchar, -pub rtm_scope: crate::ctypes::c_uchar, -pub rtm_type: crate::ctypes::c_uchar, -pub rtm_flags: crate::ctypes::c_uint, +RTM_NEWVLAN = 112, +RTM_DELVLAN = 113, +RTM_GETVLAN = 114, +RTM_NEWNEXTHOPBUCKET = 116, +RTM_DELNEXTHOPBUCKET = 117, +RTM_GETNEXTHOPBUCKET = 118, +RTM_NEWTUNNEL = 120, +RTM_DELTUNNEL = 121, +RTM_GETTUNNEL = 122, +__RTM_MAX = 123, } -pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; -pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; -pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; -pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; -pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; -pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; -pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; -pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; -pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; -pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; -pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; -pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; -pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2576,51 +2675,6 @@ RTA_NH_ID = 30, __RTA_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnexthop { -pub rtnh_len: crate::ctypes::c_ushort, -pub rtnh_flags: crate::ctypes::c_uchar, -pub rtnh_hops: crate::ctypes::c_uchar, -pub rtnh_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug)] -pub struct rtvia { -pub rtvia_family: __kernel_sa_family_t, -pub rtvia_addr: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_cacheinfo { -pub rta_clntref: __u32, -pub rta_lastuse: __u32, -pub rta_expires: __s32, -pub rta_error: __u32, -pub rta_used: __u32, -pub rta_id: __u32, -pub rta_ts: __u32, -pub rta_tsage: __u32, -} -pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; -pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; -pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; -pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; -pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; -pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; -pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; -pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; -pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; -pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; -pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; -pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; -pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; -pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; -pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; -pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; -pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; -pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; -pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2645,72 +2699,6 @@ RTAX_FASTOPEN_NO_COOKIE = 17, __RTAX_MAX = 18, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rta_session { -pub proto: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub u: rta_session__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union rta_session__bindgen_ty_1 { -pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, -pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, -pub spi: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { -pub sport: __u16, -pub dport: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { -pub type_: __u8, -pub code: __u8, -pub ident: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_mfc_stats { -pub mfcs_packets: __u64, -pub mfcs_bytes: __u64, -pub mfcs_wrong_if: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtgenmsg { -pub rtgen_family: crate::ctypes::c_uchar, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifinfomsg { -pub ifi_family: crate::ctypes::c_uchar, -pub __ifi_pad: crate::ctypes::c_uchar, -pub ifi_type: crate::ctypes::c_ushort, -pub ifi_index: crate::ctypes::c_int, -pub ifi_flags: crate::ctypes::c_uint, -pub ifi_change: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefixmsg { -pub prefix_family: crate::ctypes::c_uchar, -pub prefix_pad1: crate::ctypes::c_uchar, -pub prefix_pad2: crate::ctypes::c_ushort, -pub prefix_ifindex: crate::ctypes::c_int, -pub prefix_type: crate::ctypes::c_uchar, -pub prefix_len: crate::ctypes::c_uchar, -pub prefix_flags: crate::ctypes::c_uchar, -pub prefix_pad3: crate::ctypes::c_uchar, -} -pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; -pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; -pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; -pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2720,41 +2708,6 @@ PREFIX_CACHEINFO = 2, __PREFIX_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefix_cacheinfo { -pub preferred_time: __u32, -pub valid_time: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcmsg { -pub tcm_family: crate::ctypes::c_uchar, -pub tcm__pad1: crate::ctypes::c_uchar, -pub tcm__pad2: crate::ctypes::c_ushort, -pub tcm_ifindex: crate::ctypes::c_int, -pub tcm_handle: __u32, -pub tcm_parent: __u32, -pub tcm_info: __u32, -} -pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; -pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; -pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; -pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; -pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; -pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; -pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; -pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; -pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; -pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; -pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; -pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; -pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; -pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; -pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; -pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; -pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; -pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2778,21 +2731,6 @@ TCA_EXT_WARN_MSG = 16, __TCA_MAX = 17, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nduseroptmsg { -pub nduseropt_family: crate::ctypes::c_uchar, -pub nduseropt_pad1: crate::ctypes::c_uchar, -pub nduseropt_opts_len: crate::ctypes::c_ushort, -pub nduseropt_ifindex: crate::ctypes::c_int, -pub nduseropt_icmp_type: __u8, -pub nduseropt_icmp_code: __u8, -pub nduseropt_pad2: crate::ctypes::c_ushort, -pub nduseropt_pad3: crate::ctypes::c_uint, -} -pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; -pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; -pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2844,20 +2782,6 @@ RTNLGRP_STATS = 36, __RTNLGRP_MAX = 37, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcamsg { -pub tca_family: crate::ctypes::c_uchar, -pub tca__pad1: crate::ctypes::c_uchar, -pub tca__pad2: crate::ctypes::c_ushort, -} -pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; -pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; -pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; -pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; -pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; -pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; -pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2870,3 +2794,61 @@ TCA_ROOT_EXT_WARN_MSG = 5, __TCA_ROOT_MAX = 6, } +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union rta_session__bindgen_ty_1 { +pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, +pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, +pub spi: __u32, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl nlmsgerr_attrs { +pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +} +impl netlink_policy_type_attr { +pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; +} +impl macsec_validation_type { +pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; +} +impl macsec_offload { +pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; +} +impl ifla_vxlan_df { +pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; +} +impl ifla_geneve_df { +pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/net.rs temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/net.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/net.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/net.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1844 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type socklen_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_addr { +pub s_addr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq { +pub imr_multiaddr: in_addr, +pub imr_interface: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreqn { +pub imr_multiaddr: in_addr, +pub imr_address: in_addr, +pub imr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq_source { +pub imr_multiaddr: __be32, +pub imr_interface: __be32, +pub imr_sourceaddr: __be32, +} +#[repr(C)] +pub struct ip_msfilter { +pub imsf_multiaddr: __be32, +pub imsf_interface: __be32, +pub imsf_fmode: __u32, +pub imsf_numsrc: __u32, +pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, +} +#[repr(C)] +pub struct ip_msfilter__bindgen_ty_1 { +pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, +pub __bindgen_anon_1: __BindgenUnionField, +pub bindgen_union_field: u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { +pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub imsf_slist_flex: __IncompleteArrayField<__be32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_req { +pub gr_interface: __u32, +pub gr_group: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_source_req { +pub gsr_interface: __u32, +pub gsr_group: __kernel_sockaddr_storage, +pub gsr_source: __kernel_sockaddr_storage, +} +#[repr(C)] +pub struct group_filter { +pub __bindgen_anon_1: group_filter__bindgen_ty_1, +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 34usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { +pub gf_interface_aux: __u32, +pub gf_group_aux: __kernel_sockaddr_storage, +pub gf_fmode_aux: __u32, +pub gf_numsrc_aux: __u32, +pub gf_slist: [__kernel_sockaddr_storage; 1usize], +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { +pub gf_interface: __u32, +pub gf_group: __kernel_sockaddr_storage, +pub gf_fmode: __u32, +pub gf_numsrc: __u32, +pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_pktinfo { +pub ipi_ifindex: crate::ctypes::c_int, +pub ipi_spec_dst: in_addr, +pub ipi_addr: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_in { +pub sin_family: __kernel_sa_family_t, +pub sin_port: __be16, +pub sin_addr: in_addr, +pub __pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct iphdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub tos: __u8, +pub tot_len: __be16, +pub id: __be16, +pub frag_off: __be16, +pub ttl: __u8, +pub protocol: __u8, +pub check: __sum16, +pub __bindgen_anon_1: iphdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_auth_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub reserved: __be16, +pub spi: __be32, +pub seq_no: __be32, +pub auth_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_esp_hdr { +pub spi: __be32, +pub seq_no: __be32, +pub enc_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_comp_hdr { +pub nexthdr: __u8, +pub flags: __u8, +pub cpi: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_beet_phdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub padlen: __u8, +pub reserved: __u8, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_addr { +pub in6_u: in6_addr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr_in6 { +pub sin6_family: crate::ctypes::c_ushort, +pub sin6_port: __be16, +pub sin6_flowinfo: __be32, +pub sin6_addr: in6_addr, +pub sin6_scope_id: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6_mreq { +pub ipv6mr_multiaddr: in6_addr, +pub ipv6mr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_flowlabel_req { +pub flr_dst: in6_addr, +pub flr_label: __be32, +pub flr_action: __u8, +pub flr_share: __u8, +pub flr_flags: __u16, +pub flr_expires: __u16, +pub flr_linger: __u16, +pub __flr_pad: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_pktinfo { +pub ipi6_addr: in6_addr, +pub ipi6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ip6_mtuinfo { +pub ip6m_addr: sockaddr_in6, +pub ip6m_mtu: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_ifreq { +pub ifr6_addr: in6_addr, +pub ifr6_prefixlen: __u32, +pub ifr6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_rt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub type_: __u8, +pub segments_left: __u8, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_opt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +} +#[repr(C)] +pub struct rt0_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rt2_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: in6_addr, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct ipv6_destopt_hao { +pub type_: __u8, +pub length: __u8, +pub addr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub flow_lbl: [__u8; 3usize], +pub payload_len: __be16, +pub nexthdr: __u8, +pub hop_limit: __u8, +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcphdr { +pub source: __be16, +pub dest: __be16, +pub seq: __be32, +pub ack_seq: __be32, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub window: __be16, +pub check: __sum16, +pub urg_ptr: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_opt { +pub opt_code: __u32, +pub opt_val: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_window { +pub snd_wl1: __u32, +pub snd_wnd: __u32, +pub max_window: __u32, +pub rcv_wnd: __u32, +pub rcv_wup: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_info { +pub tcpi_state: __u8, +pub tcpi_ca_state: __u8, +pub tcpi_retransmits: __u8, +pub tcpi_probes: __u8, +pub tcpi_backoff: __u8, +pub tcpi_options: __u8, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub tcpi_rto: __u32, +pub tcpi_ato: __u32, +pub tcpi_snd_mss: __u32, +pub tcpi_rcv_mss: __u32, +pub tcpi_unacked: __u32, +pub tcpi_sacked: __u32, +pub tcpi_lost: __u32, +pub tcpi_retrans: __u32, +pub tcpi_fackets: __u32, +pub tcpi_last_data_sent: __u32, +pub tcpi_last_ack_sent: __u32, +pub tcpi_last_data_recv: __u32, +pub tcpi_last_ack_recv: __u32, +pub tcpi_pmtu: __u32, +pub tcpi_rcv_ssthresh: __u32, +pub tcpi_rtt: __u32, +pub tcpi_rttvar: __u32, +pub tcpi_snd_ssthresh: __u32, +pub tcpi_snd_cwnd: __u32, +pub tcpi_advmss: __u32, +pub tcpi_reordering: __u32, +pub tcpi_rcv_rtt: __u32, +pub tcpi_rcv_space: __u32, +pub tcpi_total_retrans: __u32, +pub tcpi_pacing_rate: __u64, +pub tcpi_max_pacing_rate: __u64, +pub tcpi_bytes_acked: __u64, +pub tcpi_bytes_received: __u64, +pub tcpi_segs_out: __u32, +pub tcpi_segs_in: __u32, +pub tcpi_notsent_bytes: __u32, +pub tcpi_min_rtt: __u32, +pub tcpi_data_segs_in: __u32, +pub tcpi_data_segs_out: __u32, +pub tcpi_delivery_rate: __u64, +pub tcpi_busy_time: __u64, +pub tcpi_rwnd_limited: __u64, +pub tcpi_sndbuf_limited: __u64, +pub tcpi_delivered: __u32, +pub tcpi_delivered_ce: __u32, +pub tcpi_bytes_sent: __u64, +pub tcpi_bytes_retrans: __u64, +pub tcpi_dsack_dups: __u32, +pub tcpi_reord_seen: __u32, +pub tcpi_rcv_ooopack: __u32, +pub tcpi_snd_wnd: __u32, +pub tcpi_rcv_wnd: __u32, +pub tcpi_rehash: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct tcp_md5sig { +pub tcpm_addr: __kernel_sockaddr_storage, +pub tcpm_flags: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_ifindex: crate::ctypes::c_int, +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_diag_md5sig { +pub tcpm_family: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_addr: [__be32; 4usize], +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_zerocopy_receive { +pub address: __u64, +pub length: __u32, +pub recv_skip_hint: __u32, +pub inq: __u32, +pub err: __s32, +pub copybuf_address: __u64, +pub copybuf_len: __s32, +pub flags: __u32, +pub msg_control: __u64, +pub msg_controllen: __u64, +pub msg_flags: __u32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_un { +pub sun_family: __kernel_sa_family_t, +pub sun_path: [crate::ctypes::c_char; 108usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr { +pub __storage: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct linger { +pub l_onoff: crate::ctypes::c_int, +pub l_linger: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct msghdr { +pub msg_name: *mut crate::ctypes::c_void, +pub msg_namelen: crate::ctypes::c_int, +pub msg_iov: *mut iovec, +pub msg_iovlen: usize, +pub msg_control: *mut crate::ctypes::c_void, +pub msg_controllen: usize, +pub msg_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct cmsghdr { +pub cmsg_len: usize, +pub cmsg_level: crate::ctypes::c_int, +pub cmsg_type: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ucred { +pub pid: __u32, +pub uid: __u32, +pub gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mmsghdr { +pub msg_hdr: msghdr, +pub msg_len: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub _address: u8, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const IP_TOS: u32 = 1; +pub const IP_TTL: u32 = 2; +pub const IP_HDRINCL: u32 = 3; +pub const IP_OPTIONS: u32 = 4; +pub const IP_ROUTER_ALERT: u32 = 5; +pub const IP_RECVOPTS: u32 = 6; +pub const IP_RETOPTS: u32 = 7; +pub const IP_PKTINFO: u32 = 8; +pub const IP_PKTOPTIONS: u32 = 9; +pub const IP_MTU_DISCOVER: u32 = 10; +pub const IP_RECVERR: u32 = 11; +pub const IP_RECVTTL: u32 = 12; +pub const IP_RECVTOS: u32 = 13; +pub const IP_MTU: u32 = 14; +pub const IP_FREEBIND: u32 = 15; +pub const IP_IPSEC_POLICY: u32 = 16; +pub const IP_XFRM_POLICY: u32 = 17; +pub const IP_PASSSEC: u32 = 18; +pub const IP_TRANSPARENT: u32 = 19; +pub const IP_RECVRETOPTS: u32 = 7; +pub const IP_ORIGDSTADDR: u32 = 20; +pub const IP_RECVORIGDSTADDR: u32 = 20; +pub const IP_MINTTL: u32 = 21; +pub const IP_NODEFRAG: u32 = 22; +pub const IP_CHECKSUM: u32 = 23; +pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; +pub const IP_RECVFRAGSIZE: u32 = 25; +pub const IP_RECVERR_RFC4884: u32 = 26; +pub const IP_PMTUDISC_DONT: u32 = 0; +pub const IP_PMTUDISC_WANT: u32 = 1; +pub const IP_PMTUDISC_DO: u32 = 2; +pub const IP_PMTUDISC_PROBE: u32 = 3; +pub const IP_PMTUDISC_INTERFACE: u32 = 4; +pub const IP_PMTUDISC_OMIT: u32 = 5; +pub const IP_MULTICAST_IF: u32 = 32; +pub const IP_MULTICAST_TTL: u32 = 33; +pub const IP_MULTICAST_LOOP: u32 = 34; +pub const IP_ADD_MEMBERSHIP: u32 = 35; +pub const IP_DROP_MEMBERSHIP: u32 = 36; +pub const IP_UNBLOCK_SOURCE: u32 = 37; +pub const IP_BLOCK_SOURCE: u32 = 38; +pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; +pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; +pub const IP_MSFILTER: u32 = 41; +pub const MCAST_JOIN_GROUP: u32 = 42; +pub const MCAST_BLOCK_SOURCE: u32 = 43; +pub const MCAST_UNBLOCK_SOURCE: u32 = 44; +pub const MCAST_LEAVE_GROUP: u32 = 45; +pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; +pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; +pub const MCAST_MSFILTER: u32 = 48; +pub const IP_MULTICAST_ALL: u32 = 49; +pub const IP_UNICAST_IF: u32 = 50; +pub const IP_LOCAL_PORT_RANGE: u32 = 51; +pub const MCAST_EXCLUDE: u32 = 0; +pub const MCAST_INCLUDE: u32 = 1; +pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; +pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; +pub const __SOCK_SIZE__: u32 = 16; +pub const IN_CLASSA_NET: u32 = 4278190080; +pub const IN_CLASSA_NSHIFT: u32 = 24; +pub const IN_CLASSA_HOST: u32 = 16777215; +pub const IN_CLASSA_MAX: u32 = 128; +pub const IN_CLASSB_NET: u32 = 4294901760; +pub const IN_CLASSB_NSHIFT: u32 = 16; +pub const IN_CLASSB_HOST: u32 = 65535; +pub const IN_CLASSB_MAX: u32 = 65536; +pub const IN_CLASSC_NET: u32 = 4294967040; +pub const IN_CLASSC_NSHIFT: u32 = 8; +pub const IN_CLASSC_HOST: u32 = 255; +pub const IN_MULTICAST_NET: u32 = 3758096384; +pub const IN_CLASSE_NET: u32 = 4294967295; +pub const IN_CLASSE_NSHIFT: u32 = 0; +pub const IN_LOOPBACKNET: u32 = 127; +pub const INADDR_LOOPBACK: u32 = 2130706433; +pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; +pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; +pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; +pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; +pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; +pub const __LITTLE_ENDIAN: u32 = 1234; +pub const IPTOS_TOS_MASK: u32 = 30; +pub const IPTOS_LOWDELAY: u32 = 16; +pub const IPTOS_THROUGHPUT: u32 = 8; +pub const IPTOS_RELIABILITY: u32 = 4; +pub const IPTOS_MINCOST: u32 = 2; +pub const IPTOS_PREC_MASK: u32 = 224; +pub const IPTOS_PREC_NETCONTROL: u32 = 224; +pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; +pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; +pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; +pub const IPTOS_PREC_FLASH: u32 = 96; +pub const IPTOS_PREC_IMMEDIATE: u32 = 64; +pub const IPTOS_PREC_PRIORITY: u32 = 32; +pub const IPTOS_PREC_ROUTINE: u32 = 0; +pub const IPOPT_COPY: u32 = 128; +pub const IPOPT_CLASS_MASK: u32 = 96; +pub const IPOPT_NUMBER_MASK: u32 = 31; +pub const IPOPT_CONTROL: u32 = 0; +pub const IPOPT_RESERVED1: u32 = 32; +pub const IPOPT_MEASUREMENT: u32 = 64; +pub const IPOPT_RESERVED2: u32 = 96; +pub const IPOPT_END: u32 = 0; +pub const IPOPT_NOOP: u32 = 1; +pub const IPOPT_SEC: u32 = 130; +pub const IPOPT_LSRR: u32 = 131; +pub const IPOPT_TIMESTAMP: u32 = 68; +pub const IPOPT_CIPSO: u32 = 134; +pub const IPOPT_RR: u32 = 7; +pub const IPOPT_SID: u32 = 136; +pub const IPOPT_SSRR: u32 = 137; +pub const IPOPT_RA: u32 = 148; +pub const IPVERSION: u32 = 4; +pub const MAXTTL: u32 = 255; +pub const IPDEFTTL: u32 = 64; +pub const IPOPT_OPTVAL: u32 = 0; +pub const IPOPT_OLEN: u32 = 1; +pub const IPOPT_OFFSET: u32 = 2; +pub const IPOPT_MINOFF: u32 = 4; +pub const MAX_IPOPTLEN: u32 = 40; +pub const IPOPT_NOP: u32 = 1; +pub const IPOPT_EOL: u32 = 0; +pub const IPOPT_TS: u32 = 68; +pub const IPOPT_TS_TSONLY: u32 = 0; +pub const IPOPT_TS_TSANDADDR: u32 = 1; +pub const IPOPT_TS_PRESPEC: u32 = 3; +pub const IPV4_BEET_PHMAXLEN: u32 = 8; +pub const IPV6_FL_A_GET: u32 = 0; +pub const IPV6_FL_A_PUT: u32 = 1; +pub const IPV6_FL_A_RENEW: u32 = 2; +pub const IPV6_FL_F_CREATE: u32 = 1; +pub const IPV6_FL_F_EXCL: u32 = 2; +pub const IPV6_FL_F_REFLECT: u32 = 4; +pub const IPV6_FL_F_REMOTE: u32 = 8; +pub const IPV6_FL_S_NONE: u32 = 0; +pub const IPV6_FL_S_EXCL: u32 = 1; +pub const IPV6_FL_S_PROCESS: u32 = 2; +pub const IPV6_FL_S_USER: u32 = 3; +pub const IPV6_FL_S_ANY: u32 = 255; +pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; +pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; +pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; +pub const IPV6_PRIORITY_FILLER: u32 = 256; +pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; +pub const IPV6_PRIORITY_RESERVED1: u32 = 768; +pub const IPV6_PRIORITY_BULK: u32 = 1024; +pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; +pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; +pub const IPV6_PRIORITY_CONTROL: u32 = 1792; +pub const IPV6_PRIORITY_8: u32 = 2048; +pub const IPV6_PRIORITY_9: u32 = 2304; +pub const IPV6_PRIORITY_10: u32 = 2560; +pub const IPV6_PRIORITY_11: u32 = 2816; +pub const IPV6_PRIORITY_12: u32 = 3072; +pub const IPV6_PRIORITY_13: u32 = 3328; +pub const IPV6_PRIORITY_14: u32 = 3584; +pub const IPV6_PRIORITY_15: u32 = 3840; +pub const IPPROTO_HOPOPTS: u32 = 0; +pub const IPPROTO_ROUTING: u32 = 43; +pub const IPPROTO_FRAGMENT: u32 = 44; +pub const IPPROTO_ICMPV6: u32 = 58; +pub const IPPROTO_NONE: u32 = 59; +pub const IPPROTO_DSTOPTS: u32 = 60; +pub const IPPROTO_MH: u32 = 135; +pub const IPV6_TLV_PAD1: u32 = 0; +pub const IPV6_TLV_PADN: u32 = 1; +pub const IPV6_TLV_ROUTERALERT: u32 = 5; +pub const IPV6_TLV_CALIPSO: u32 = 7; +pub const IPV6_TLV_IOAM: u32 = 49; +pub const IPV6_TLV_JUMBO: u32 = 194; +pub const IPV6_TLV_HAO: u32 = 201; +pub const IPV6_ADDRFORM: u32 = 1; +pub const IPV6_2292PKTINFO: u32 = 2; +pub const IPV6_2292HOPOPTS: u32 = 3; +pub const IPV6_2292DSTOPTS: u32 = 4; +pub const IPV6_2292RTHDR: u32 = 5; +pub const IPV6_2292PKTOPTIONS: u32 = 6; +pub const IPV6_CHECKSUM: u32 = 7; +pub const IPV6_2292HOPLIMIT: u32 = 8; +pub const IPV6_NEXTHOP: u32 = 9; +pub const IPV6_AUTHHDR: u32 = 10; +pub const IPV6_FLOWINFO: u32 = 11; +pub const IPV6_UNICAST_HOPS: u32 = 16; +pub const IPV6_MULTICAST_IF: u32 = 17; +pub const IPV6_MULTICAST_HOPS: u32 = 18; +pub const IPV6_MULTICAST_LOOP: u32 = 19; +pub const IPV6_ADD_MEMBERSHIP: u32 = 20; +pub const IPV6_DROP_MEMBERSHIP: u32 = 21; +pub const IPV6_ROUTER_ALERT: u32 = 22; +pub const IPV6_MTU_DISCOVER: u32 = 23; +pub const IPV6_MTU: u32 = 24; +pub const IPV6_RECVERR: u32 = 25; +pub const IPV6_V6ONLY: u32 = 26; +pub const IPV6_JOIN_ANYCAST: u32 = 27; +pub const IPV6_LEAVE_ANYCAST: u32 = 28; +pub const IPV6_MULTICAST_ALL: u32 = 29; +pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; +pub const IPV6_RECVERR_RFC4884: u32 = 31; +pub const IPV6_PMTUDISC_DONT: u32 = 0; +pub const IPV6_PMTUDISC_WANT: u32 = 1; +pub const IPV6_PMTUDISC_DO: u32 = 2; +pub const IPV6_PMTUDISC_PROBE: u32 = 3; +pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; +pub const IPV6_PMTUDISC_OMIT: u32 = 5; +pub const IPV6_FLOWLABEL_MGR: u32 = 32; +pub const IPV6_FLOWINFO_SEND: u32 = 33; +pub const IPV6_IPSEC_POLICY: u32 = 34; +pub const IPV6_XFRM_POLICY: u32 = 35; +pub const IPV6_HDRINCL: u32 = 36; +pub const IPV6_RECVPKTINFO: u32 = 49; +pub const IPV6_PKTINFO: u32 = 50; +pub const IPV6_RECVHOPLIMIT: u32 = 51; +pub const IPV6_HOPLIMIT: u32 = 52; +pub const IPV6_RECVHOPOPTS: u32 = 53; +pub const IPV6_HOPOPTS: u32 = 54; +pub const IPV6_RTHDRDSTOPTS: u32 = 55; +pub const IPV6_RECVRTHDR: u32 = 56; +pub const IPV6_RTHDR: u32 = 57; +pub const IPV6_RECVDSTOPTS: u32 = 58; +pub const IPV6_DSTOPTS: u32 = 59; +pub const IPV6_RECVPATHMTU: u32 = 60; +pub const IPV6_PATHMTU: u32 = 61; +pub const IPV6_DONTFRAG: u32 = 62; +pub const IPV6_RECVTCLASS: u32 = 66; +pub const IPV6_TCLASS: u32 = 67; +pub const IPV6_AUTOFLOWLABEL: u32 = 70; +pub const IPV6_ADDR_PREFERENCES: u32 = 72; +pub const IPV6_PREFER_SRC_TMP: u32 = 1; +pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; +pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; +pub const IPV6_PREFER_SRC_COA: u32 = 4; +pub const IPV6_PREFER_SRC_HOME: u32 = 1024; +pub const IPV6_PREFER_SRC_CGA: u32 = 8; +pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; +pub const IPV6_MINHOPCOUNT: u32 = 73; +pub const IPV6_ORIGDSTADDR: u32 = 74; +pub const IPV6_RECVORIGDSTADDR: u32 = 74; +pub const IPV6_TRANSPARENT: u32 = 75; +pub const IPV6_UNICAST_IF: u32 = 76; +pub const IPV6_RECVFRAGSIZE: u32 = 77; +pub const IPV6_FREEBIND: u32 = 78; +pub const IPV6_MIN_MTU: u32 = 1280; +pub const IPV6_SRCRT_STRICT: u32 = 1; +pub const IPV6_SRCRT_TYPE_0: u32 = 0; +pub const IPV6_SRCRT_TYPE_2: u32 = 2; +pub const IPV6_SRCRT_TYPE_3: u32 = 3; +pub const IPV6_SRCRT_TYPE_4: u32 = 4; +pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; +pub const SIOCGSTAMP_OLD: u32 = 35078; +pub const SIOCGSTAMPNS_OLD: u32 = 35079; +pub const SOL_SOCKET: u32 = 1; +pub const SO_DEBUG: u32 = 1; +pub const SO_REUSEADDR: u32 = 2; +pub const SO_TYPE: u32 = 3; +pub const SO_ERROR: u32 = 4; +pub const SO_DONTROUTE: u32 = 5; +pub const SO_BROADCAST: u32 = 6; +pub const SO_SNDBUF: u32 = 7; +pub const SO_RCVBUF: u32 = 8; +pub const SO_SNDBUFFORCE: u32 = 32; +pub const SO_RCVBUFFORCE: u32 = 33; +pub const SO_KEEPALIVE: u32 = 9; +pub const SO_OOBINLINE: u32 = 10; +pub const SO_NO_CHECK: u32 = 11; +pub const SO_PRIORITY: u32 = 12; +pub const SO_LINGER: u32 = 13; +pub const SO_BSDCOMPAT: u32 = 14; +pub const SO_REUSEPORT: u32 = 15; +pub const SO_PASSCRED: u32 = 16; +pub const SO_PEERCRED: u32 = 17; +pub const SO_RCVLOWAT: u32 = 18; +pub const SO_SNDLOWAT: u32 = 19; +pub const SO_RCVTIMEO_OLD: u32 = 20; +pub const SO_SNDTIMEO_OLD: u32 = 21; +pub const SO_SECURITY_AUTHENTICATION: u32 = 22; +pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; +pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; +pub const SO_BINDTODEVICE: u32 = 25; +pub const SO_ATTACH_FILTER: u32 = 26; +pub const SO_DETACH_FILTER: u32 = 27; +pub const SO_GET_FILTER: u32 = 26; +pub const SO_PEERNAME: u32 = 28; +pub const SO_ACCEPTCONN: u32 = 30; +pub const SO_PEERSEC: u32 = 31; +pub const SO_PASSSEC: u32 = 34; +pub const SO_MARK: u32 = 36; +pub const SO_PROTOCOL: u32 = 38; +pub const SO_DOMAIN: u32 = 39; +pub const SO_RXQ_OVFL: u32 = 40; +pub const SO_WIFI_STATUS: u32 = 41; +pub const SCM_WIFI_STATUS: u32 = 41; +pub const SO_PEEK_OFF: u32 = 42; +pub const SO_NOFCS: u32 = 43; +pub const SO_LOCK_FILTER: u32 = 44; +pub const SO_SELECT_ERR_QUEUE: u32 = 45; +pub const SO_BUSY_POLL: u32 = 46; +pub const SO_MAX_PACING_RATE: u32 = 47; +pub const SO_BPF_EXTENSIONS: u32 = 48; +pub const SO_INCOMING_CPU: u32 = 49; +pub const SO_ATTACH_BPF: u32 = 50; +pub const SO_DETACH_BPF: u32 = 27; +pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; +pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; +pub const SO_CNX_ADVICE: u32 = 53; +pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; +pub const SO_MEMINFO: u32 = 55; +pub const SO_INCOMING_NAPI_ID: u32 = 56; +pub const SO_COOKIE: u32 = 57; +pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; +pub const SO_PEERGROUPS: u32 = 59; +pub const SO_ZEROCOPY: u32 = 60; +pub const SO_TXTIME: u32 = 61; +pub const SCM_TXTIME: u32 = 61; +pub const SO_BINDTOIFINDEX: u32 = 62; +pub const SO_TIMESTAMP_OLD: u32 = 29; +pub const SO_TIMESTAMPNS_OLD: u32 = 35; +pub const SO_TIMESTAMPING_OLD: u32 = 37; +pub const SO_TIMESTAMP_NEW: u32 = 63; +pub const SO_TIMESTAMPNS_NEW: u32 = 64; +pub const SO_TIMESTAMPING_NEW: u32 = 65; +pub const SO_RCVTIMEO_NEW: u32 = 66; +pub const SO_SNDTIMEO_NEW: u32 = 67; +pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; +pub const SO_PREFER_BUSY_POLL: u32 = 69; +pub const SO_BUSY_POLL_BUDGET: u32 = 70; +pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; +pub const SO_TXREHASH: u32 = 74; +pub const SO_RCVMARK: u32 = 75; +pub const SO_TIMESTAMP: u32 = 29; +pub const SO_TIMESTAMPNS: u32 = 35; +pub const SO_TIMESTAMPING: u32 = 37; +pub const SO_RCVTIMEO: u32 = 20; +pub const SO_SNDTIMEO: u32 = 21; +pub const SCM_TIMESTAMP: u32 = 29; +pub const SCM_TIMESTAMPNS: u32 = 35; +pub const SCM_TIMESTAMPING: u32 = 37; +pub const SYS_SOCKET: u32 = 1; +pub const SYS_BIND: u32 = 2; +pub const SYS_CONNECT: u32 = 3; +pub const SYS_LISTEN: u32 = 4; +pub const SYS_ACCEPT: u32 = 5; +pub const SYS_GETSOCKNAME: u32 = 6; +pub const SYS_GETPEERNAME: u32 = 7; +pub const SYS_SOCKETPAIR: u32 = 8; +pub const SYS_SEND: u32 = 9; +pub const SYS_RECV: u32 = 10; +pub const SYS_SENDTO: u32 = 11; +pub const SYS_RECVFROM: u32 = 12; +pub const SYS_SHUTDOWN: u32 = 13; +pub const SYS_SETSOCKOPT: u32 = 14; +pub const SYS_GETSOCKOPT: u32 = 15; +pub const SYS_SENDMSG: u32 = 16; +pub const SYS_RECVMSG: u32 = 17; +pub const SYS_ACCEPT4: u32 = 18; +pub const SYS_RECVMMSG: u32 = 19; +pub const SYS_SENDMMSG: u32 = 20; +pub const __SO_ACCEPTCON: u32 = 65536; +pub const TCP_MSS_DEFAULT: u32 = 536; +pub const TCP_MSS_DESIRED: u32 = 1220; +pub const TCP_NODELAY: u32 = 1; +pub const TCP_MAXSEG: u32 = 2; +pub const TCP_CORK: u32 = 3; +pub const TCP_KEEPIDLE: u32 = 4; +pub const TCP_KEEPINTVL: u32 = 5; +pub const TCP_KEEPCNT: u32 = 6; +pub const TCP_SYNCNT: u32 = 7; +pub const TCP_LINGER2: u32 = 8; +pub const TCP_DEFER_ACCEPT: u32 = 9; +pub const TCP_WINDOW_CLAMP: u32 = 10; +pub const TCP_INFO: u32 = 11; +pub const TCP_QUICKACK: u32 = 12; +pub const TCP_CONGESTION: u32 = 13; +pub const TCP_MD5SIG: u32 = 14; +pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; +pub const TCP_THIN_DUPACK: u32 = 17; +pub const TCP_USER_TIMEOUT: u32 = 18; +pub const TCP_REPAIR: u32 = 19; +pub const TCP_REPAIR_QUEUE: u32 = 20; +pub const TCP_QUEUE_SEQ: u32 = 21; +pub const TCP_REPAIR_OPTIONS: u32 = 22; +pub const TCP_FASTOPEN: u32 = 23; +pub const TCP_TIMESTAMP: u32 = 24; +pub const TCP_NOTSENT_LOWAT: u32 = 25; +pub const TCP_CC_INFO: u32 = 26; +pub const TCP_SAVE_SYN: u32 = 27; +pub const TCP_SAVED_SYN: u32 = 28; +pub const TCP_REPAIR_WINDOW: u32 = 29; +pub const TCP_FASTOPEN_CONNECT: u32 = 30; +pub const TCP_ULP: u32 = 31; +pub const TCP_MD5SIG_EXT: u32 = 32; +pub const TCP_FASTOPEN_KEY: u32 = 33; +pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; +pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; +pub const TCP_INQ: u32 = 36; +pub const TCP_CM_INQ: u32 = 36; +pub const TCP_TX_DELAY: u32 = 37; +pub const TCP_REPAIR_ON: u32 = 1; +pub const TCP_REPAIR_OFF: u32 = 0; +pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; +pub const TCPI_OPT_TIMESTAMPS: u32 = 1; +pub const TCPI_OPT_SACK: u32 = 2; +pub const TCPI_OPT_WSCALE: u32 = 4; +pub const TCPI_OPT_ECN: u32 = 8; +pub const TCPI_OPT_ECN_SEEN: u32 = 16; +pub const TCPI_OPT_SYN_DATA: u32 = 32; +pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; +pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; +pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; +pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; +pub const UNIX_PATH_MAX: u32 = 108; +pub const SHUT_RD: u32 = 0; +pub const SHUT_WR: u32 = 1; +pub const SHUT_RDWR: u32 = 2; +pub const SOCK_STREAM: u32 = 1; +pub const SOCK_DGRAM: u32 = 2; +pub const SOCK_RAW: u32 = 3; +pub const SOCK_RDM: u32 = 4; +pub const SOCK_SEQPACKET: u32 = 5; +pub const MSG_DONTWAIT: u32 = 64; +pub const AF_UNSPEC: u32 = 0; +pub const AF_UNIX: u32 = 1; +pub const AF_INET: u32 = 2; +pub const AF_AX25: u32 = 3; +pub const AF_IPX: u32 = 4; +pub const AF_APPLETALK: u32 = 5; +pub const AF_NETROM: u32 = 6; +pub const AF_BRIDGE: u32 = 7; +pub const AF_ATMPVC: u32 = 8; +pub const AF_X25: u32 = 9; +pub const AF_INET6: u32 = 10; +pub const AF_ROSE: u32 = 11; +pub const AF_DECnet: u32 = 12; +pub const AF_NETBEUI: u32 = 13; +pub const AF_SECURITY: u32 = 14; +pub const AF_KEY: u32 = 15; +pub const AF_NETLINK: u32 = 16; +pub const AF_PACKET: u32 = 17; +pub const AF_ASH: u32 = 18; +pub const AF_ECONET: u32 = 19; +pub const AF_ATMSVC: u32 = 20; +pub const AF_RDS: u32 = 21; +pub const AF_SNA: u32 = 22; +pub const AF_IRDA: u32 = 23; +pub const AF_PPPOX: u32 = 24; +pub const AF_WANPIPE: u32 = 25; +pub const AF_LLC: u32 = 26; +pub const AF_CAN: u32 = 29; +pub const AF_TIPC: u32 = 30; +pub const AF_BLUETOOTH: u32 = 31; +pub const AF_IUCV: u32 = 32; +pub const AF_RXRPC: u32 = 33; +pub const AF_ISDN: u32 = 34; +pub const AF_PHONET: u32 = 35; +pub const AF_IEEE802154: u32 = 36; +pub const AF_MAX: u32 = 37; +pub const MSG_OOB: u32 = 1; +pub const MSG_PEEK: u32 = 2; +pub const MSG_DONTROUTE: u32 = 4; +pub const MSG_CTRUNC: u32 = 8; +pub const MSG_PROBE: u32 = 16; +pub const MSG_TRUNC: u32 = 32; +pub const MSG_EOR: u32 = 128; +pub const MSG_WAITALL: u32 = 256; +pub const MSG_FIN: u32 = 512; +pub const MSG_SYN: u32 = 1024; +pub const MSG_CONFIRM: u32 = 2048; +pub const MSG_RST: u32 = 4096; +pub const MSG_ERRQUEUE: u32 = 8192; +pub const MSG_NOSIGNAL: u32 = 16384; +pub const MSG_MORE: u32 = 32768; +pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; +pub const SCM_RIGHTS: u32 = 1; +pub const SCM_CREDENTIALS: u32 = 2; +pub const SCM_SECURITY: u32 = 3; +pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; +pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; +pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; +pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; +pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; +pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; +pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; +pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; +pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; +pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; +pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; +pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; +pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; +pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; +pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; +pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; +pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; +pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; +pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; +pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; +pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; +pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; +pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; +pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; +pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; +pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; +pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; +pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; +pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; +pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; +pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; +pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; +pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; +pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; +pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; +pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; +pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; +pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; +pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; +pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; +pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; +pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; +pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; +pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; +pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; +pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; +pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; +pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; +pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; +pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; +pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; +pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; +pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; +pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; +pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; +pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; +pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; +pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; +pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; +pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; +pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; +pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; +pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; +pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; +pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; +pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; +pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; +pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; +pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; +pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; +pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; +pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; +pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; +pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; +pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; +pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; +pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; +pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; +pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; +pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; +pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; +pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; +pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; +pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; +pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; +pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; +pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; +pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; +pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; +pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; +pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; +pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; +pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; +pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; +pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; +pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; +pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; +pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; +pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; +pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; +pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; +pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; +pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; +pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; +pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; +pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; +pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; +pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; +pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; +pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; +pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; +pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; +pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; +pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; +pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; +pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; +pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; +pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; +pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; +pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; +pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; +pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; +pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; +pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; +pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; +pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; +pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; +pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; +pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; +pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; +pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; +pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; +pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; +pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; +pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; +pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; +pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; +pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; +pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; +pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; +pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; +pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; +pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; +pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; +pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; +pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; +pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; +pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; +pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; +pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; +pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; +pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IPPROTO_IP = 0, +IPPROTO_ICMP = 1, +IPPROTO_IGMP = 2, +IPPROTO_IPIP = 4, +IPPROTO_TCP = 6, +IPPROTO_EGP = 8, +IPPROTO_PUP = 12, +IPPROTO_UDP = 17, +IPPROTO_IDP = 22, +IPPROTO_TP = 29, +IPPROTO_DCCP = 33, +IPPROTO_IPV6 = 41, +IPPROTO_RSVP = 46, +IPPROTO_GRE = 47, +IPPROTO_ESP = 50, +IPPROTO_AH = 51, +IPPROTO_MTP = 92, +IPPROTO_BEETPH = 94, +IPPROTO_ENCAP = 98, +IPPROTO_PIM = 103, +IPPROTO_COMP = 108, +IPPROTO_L2TP = 115, +IPPROTO_SCTP = 132, +IPPROTO_UDPLITE = 136, +IPPROTO_MPLS = 137, +IPPROTO_ETHERNET = 143, +IPPROTO_RAW = 255, +IPPROTO_MPTCP = 262, +IPPROTO_MAX = 263, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IPV4_DEVCONF_FORWARDING = 1, +IPV4_DEVCONF_MC_FORWARDING = 2, +IPV4_DEVCONF_PROXY_ARP = 3, +IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, +IPV4_DEVCONF_SECURE_REDIRECTS = 5, +IPV4_DEVCONF_SEND_REDIRECTS = 6, +IPV4_DEVCONF_SHARED_MEDIA = 7, +IPV4_DEVCONF_RP_FILTER = 8, +IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, +IPV4_DEVCONF_BOOTP_RELAY = 10, +IPV4_DEVCONF_LOG_MARTIANS = 11, +IPV4_DEVCONF_TAG = 12, +IPV4_DEVCONF_ARPFILTER = 13, +IPV4_DEVCONF_MEDIUM_ID = 14, +IPV4_DEVCONF_NOXFRM = 15, +IPV4_DEVCONF_NOPOLICY = 16, +IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, +IPV4_DEVCONF_ARP_ANNOUNCE = 18, +IPV4_DEVCONF_ARP_IGNORE = 19, +IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, +IPV4_DEVCONF_ARP_ACCEPT = 21, +IPV4_DEVCONF_ARP_NOTIFY = 22, +IPV4_DEVCONF_ACCEPT_LOCAL = 23, +IPV4_DEVCONF_SRC_VMARK = 24, +IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, +IPV4_DEVCONF_ROUTE_LOCALNET = 26, +IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, +IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, +IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, +IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, +IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, +IPV4_DEVCONF_BC_FORWARDING = 32, +IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, +__IPV4_DEVCONF_MAX = 34, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +DEVCONF_FORWARDING = 0, +DEVCONF_HOPLIMIT = 1, +DEVCONF_MTU6 = 2, +DEVCONF_ACCEPT_RA = 3, +DEVCONF_ACCEPT_REDIRECTS = 4, +DEVCONF_AUTOCONF = 5, +DEVCONF_DAD_TRANSMITS = 6, +DEVCONF_RTR_SOLICITS = 7, +DEVCONF_RTR_SOLICIT_INTERVAL = 8, +DEVCONF_RTR_SOLICIT_DELAY = 9, +DEVCONF_USE_TEMPADDR = 10, +DEVCONF_TEMP_VALID_LFT = 11, +DEVCONF_TEMP_PREFERED_LFT = 12, +DEVCONF_REGEN_MAX_RETRY = 13, +DEVCONF_MAX_DESYNC_FACTOR = 14, +DEVCONF_MAX_ADDRESSES = 15, +DEVCONF_FORCE_MLD_VERSION = 16, +DEVCONF_ACCEPT_RA_DEFRTR = 17, +DEVCONF_ACCEPT_RA_PINFO = 18, +DEVCONF_ACCEPT_RA_RTR_PREF = 19, +DEVCONF_RTR_PROBE_INTERVAL = 20, +DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, +DEVCONF_PROXY_NDP = 22, +DEVCONF_OPTIMISTIC_DAD = 23, +DEVCONF_ACCEPT_SOURCE_ROUTE = 24, +DEVCONF_MC_FORWARDING = 25, +DEVCONF_DISABLE_IPV6 = 26, +DEVCONF_ACCEPT_DAD = 27, +DEVCONF_FORCE_TLLAO = 28, +DEVCONF_NDISC_NOTIFY = 29, +DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, +DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, +DEVCONF_SUPPRESS_FRAG_NDISC = 32, +DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, +DEVCONF_USE_OPTIMISTIC = 34, +DEVCONF_ACCEPT_RA_MTU = 35, +DEVCONF_STABLE_SECRET = 36, +DEVCONF_USE_OIF_ADDRS_ONLY = 37, +DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, +DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, +DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, +DEVCONF_DROP_UNSOLICITED_NA = 41, +DEVCONF_KEEP_ADDR_ON_DOWN = 42, +DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, +DEVCONF_SEG6_ENABLED = 44, +DEVCONF_SEG6_REQUIRE_HMAC = 45, +DEVCONF_ENHANCED_DAD = 46, +DEVCONF_ADDR_GEN_MODE = 47, +DEVCONF_DISABLE_POLICY = 48, +DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, +DEVCONF_NDISC_TCLASS = 50, +DEVCONF_RPL_SEG_ENABLED = 51, +DEVCONF_RA_DEFRTR_METRIC = 52, +DEVCONF_IOAM6_ENABLED = 53, +DEVCONF_IOAM6_ID = 54, +DEVCONF_IOAM6_ID_WIDE = 55, +DEVCONF_NDISC_EVICT_NOCARRIER = 56, +DEVCONF_ACCEPT_UNTRACKED_NA = 57, +DEVCONF_MAX = 58, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum socket_state { +SS_FREE = 0, +SS_UNCONNECTED = 1, +SS_CONNECTING = 2, +SS_CONNECTED = 3, +SS_DISCONNECTING = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +TCP_FLAG_CWR = 32768, +TCP_FLAG_ECE = 16384, +TCP_FLAG_URG = 8192, +TCP_FLAG_ACK = 4096, +TCP_FLAG_PSH = 2048, +TCP_FLAG_RST = 1024, +TCP_FLAG_SYN = 512, +TCP_FLAG_FIN = 256, +TCP_RESERVED_BITS = 15, +TCP_DATA_OFFSET = 240, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +TCP_NO_QUEUE = 0, +TCP_RECV_QUEUE = 1, +TCP_SEND_QUEUE = 2, +TCP_QUEUES_NR = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_fastopen_client_fail { +TFO_STATUS_UNSPEC = 0, +TFO_COOKIE_UNAVAILABLE = 1, +TFO_DATA_NOT_ACKED = 2, +TFO_SYN_RETRANSMITTED = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_ca_state { +TCP_CA_Open = 0, +TCP_CA_Disorder = 1, +TCP_CA_CWR = 2, +TCP_CA_Recovery = 3, +TCP_CA_Loss = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +TCP_NLA_PAD = 0, +TCP_NLA_BUSY = 1, +TCP_NLA_RWND_LIMITED = 2, +TCP_NLA_SNDBUF_LIMITED = 3, +TCP_NLA_DATA_SEGS_OUT = 4, +TCP_NLA_TOTAL_RETRANS = 5, +TCP_NLA_PACING_RATE = 6, +TCP_NLA_DELIVERY_RATE = 7, +TCP_NLA_SND_CWND = 8, +TCP_NLA_REORDERING = 9, +TCP_NLA_MIN_RTT = 10, +TCP_NLA_RECUR_RETRANS = 11, +TCP_NLA_DELIVERY_RATE_APP_LMT = 12, +TCP_NLA_SNDQ_SIZE = 13, +TCP_NLA_CA_STATE = 14, +TCP_NLA_SND_SSTHRESH = 15, +TCP_NLA_DELIVERED = 16, +TCP_NLA_DELIVERED_CE = 17, +TCP_NLA_BYTES_SENT = 18, +TCP_NLA_BYTES_RETRANS = 19, +TCP_NLA_DSACK_DUPS = 20, +TCP_NLA_REORD_SEEN = 21, +TCP_NLA_SRTT = 22, +TCP_NLA_TIMEOUT_REHASH = 23, +TCP_NLA_BYTES_NOTSENT = 24, +TCP_NLA_EDT = 25, +TCP_NLA_TTL = 26, +TCP_NLA_REHASH = 27, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union iphdr__bindgen_ty_1 { +pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union in6_addr__bindgen_ty_1 { +pub u6_addr8: [__u8; 16usize], +pub u6_addr16: [__be16; 8usize], +pub u6_addr32: [__be32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ipv6hdr__bindgen_ty_1 { +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union tcp_word_hdr { +pub hdr: tcphdr, +pub words: [__be32; 5usize], +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} +impl iphdr { +#[inline] +pub fn ihl(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_ihl(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; +ihl as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit +} +} +impl ipv6hdr { +#[inline] +pub fn priority(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_priority(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let priority: u8 = unsafe { ::core::mem::transmute(priority) }; +priority as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcphdr { +#[inline] +pub fn res1(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } +} +#[inline] +pub fn set_res1(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn doff(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } +} +#[inline] +pub fn set_doff(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn fin(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } +} +#[inline] +pub fn set_fin(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn syn(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } +} +#[inline] +pub fn set_syn(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 1u8, val as u64) +} +} +#[inline] +pub fn rst(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } +} +#[inline] +pub fn set_rst(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(10usize, 1u8, val as u64) +} +} +#[inline] +pub fn psh(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } +} +#[inline] +pub fn set_psh(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(11usize, 1u8, val as u64) +} +} +#[inline] +pub fn ack(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } +} +#[inline] +pub fn set_ack(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(12usize, 1u8, val as u64) +} +} +#[inline] +pub fn urg(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } +} +#[inline] +pub fn set_urg(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(13usize, 1u8, val as u64) +} +} +#[inline] +pub fn ece(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } +} +#[inline] +pub fn set_ece(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(14usize, 1u8, val as u64) +} +} +#[inline] +pub fn cwr(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +} +#[inline] +pub fn set_cwr(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(15usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let res1: u16 = unsafe { ::core::mem::transmute(res1) }; +res1 as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let doff: u16 = unsafe { ::core::mem::transmute(doff) }; +doff as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let fin: u16 = unsafe { ::core::mem::transmute(fin) }; +fin as u64 +}); +__bindgen_bitfield_unit.set(9usize, 1u8, { +let syn: u16 = unsafe { ::core::mem::transmute(syn) }; +syn as u64 +}); +__bindgen_bitfield_unit.set(10usize, 1u8, { +let rst: u16 = unsafe { ::core::mem::transmute(rst) }; +rst as u64 +}); +__bindgen_bitfield_unit.set(11usize, 1u8, { +let psh: u16 = unsafe { ::core::mem::transmute(psh) }; +psh as u64 +}); +__bindgen_bitfield_unit.set(12usize, 1u8, { +let ack: u16 = unsafe { ::core::mem::transmute(ack) }; +ack as u64 +}); +__bindgen_bitfield_unit.set(13usize, 1u8, { +let urg: u16 = unsafe { ::core::mem::transmute(urg) }; +urg as u64 +}); +__bindgen_bitfield_unit.set(14usize, 1u8, { +let ece: u16 = unsafe { ::core::mem::transmute(ece) }; +ece as u64 +}); +__bindgen_bitfield_unit.set(15usize, 1u8, { +let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; +cwr as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcp_info { +#[inline] +pub fn tcpi_snd_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_rcv_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +} +#[inline] +pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn tcpi_fastopen_client_fail(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +} +#[inline] +pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 2u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; +tcpi_snd_wscale as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; +tcpi_rcv_wscale as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; +tcpi_delivery_rate_app_limited as u64 +}); +__bindgen_bitfield_unit.set(9usize, 2u8, { +let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; +tcpi_fastopen_client_fail as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/prctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/prctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/prctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,221 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prctl_mm_map { +pub start_code: __u64, +pub end_code: __u64, +pub start_data: __u64, +pub end_data: __u64, +pub start_brk: __u64, +pub brk: __u64, +pub start_stack: __u64, +pub arg_start: __u64, +pub arg_end: __u64, +pub env_start: __u64, +pub env_end: __u64, +pub auxv: *mut __u64, +pub auxv_size: __u32, +pub exe_fd: __u32, +} +pub const PR_SET_PDEATHSIG: u32 = 1; +pub const PR_GET_PDEATHSIG: u32 = 2; +pub const PR_GET_DUMPABLE: u32 = 3; +pub const PR_SET_DUMPABLE: u32 = 4; +pub const PR_GET_UNALIGN: u32 = 5; +pub const PR_SET_UNALIGN: u32 = 6; +pub const PR_UNALIGN_NOPRINT: u32 = 1; +pub const PR_UNALIGN_SIGBUS: u32 = 2; +pub const PR_GET_KEEPCAPS: u32 = 7; +pub const PR_SET_KEEPCAPS: u32 = 8; +pub const PR_GET_FPEMU: u32 = 9; +pub const PR_SET_FPEMU: u32 = 10; +pub const PR_FPEMU_NOPRINT: u32 = 1; +pub const PR_FPEMU_SIGFPE: u32 = 2; +pub const PR_GET_FPEXC: u32 = 11; +pub const PR_SET_FPEXC: u32 = 12; +pub const PR_FP_EXC_SW_ENABLE: u32 = 128; +pub const PR_FP_EXC_DIV: u32 = 65536; +pub const PR_FP_EXC_OVF: u32 = 131072; +pub const PR_FP_EXC_UND: u32 = 262144; +pub const PR_FP_EXC_RES: u32 = 524288; +pub const PR_FP_EXC_INV: u32 = 1048576; +pub const PR_FP_EXC_DISABLED: u32 = 0; +pub const PR_FP_EXC_NONRECOV: u32 = 1; +pub const PR_FP_EXC_ASYNC: u32 = 2; +pub const PR_FP_EXC_PRECISE: u32 = 3; +pub const PR_GET_TIMING: u32 = 13; +pub const PR_SET_TIMING: u32 = 14; +pub const PR_TIMING_STATISTICAL: u32 = 0; +pub const PR_TIMING_TIMESTAMP: u32 = 1; +pub const PR_SET_NAME: u32 = 15; +pub const PR_GET_NAME: u32 = 16; +pub const PR_GET_ENDIAN: u32 = 19; +pub const PR_SET_ENDIAN: u32 = 20; +pub const PR_ENDIAN_BIG: u32 = 0; +pub const PR_ENDIAN_LITTLE: u32 = 1; +pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; +pub const PR_GET_SECCOMP: u32 = 21; +pub const PR_SET_SECCOMP: u32 = 22; +pub const PR_CAPBSET_READ: u32 = 23; +pub const PR_CAPBSET_DROP: u32 = 24; +pub const PR_GET_TSC: u32 = 25; +pub const PR_SET_TSC: u32 = 26; +pub const PR_TSC_ENABLE: u32 = 1; +pub const PR_TSC_SIGSEGV: u32 = 2; +pub const PR_GET_SECUREBITS: u32 = 27; +pub const PR_SET_SECUREBITS: u32 = 28; +pub const PR_SET_TIMERSLACK: u32 = 29; +pub const PR_GET_TIMERSLACK: u32 = 30; +pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; +pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; +pub const PR_MCE_KILL: u32 = 33; +pub const PR_MCE_KILL_CLEAR: u32 = 0; +pub const PR_MCE_KILL_SET: u32 = 1; +pub const PR_MCE_KILL_LATE: u32 = 0; +pub const PR_MCE_KILL_EARLY: u32 = 1; +pub const PR_MCE_KILL_DEFAULT: u32 = 2; +pub const PR_MCE_KILL_GET: u32 = 34; +pub const PR_SET_MM: u32 = 35; +pub const PR_SET_MM_START_CODE: u32 = 1; +pub const PR_SET_MM_END_CODE: u32 = 2; +pub const PR_SET_MM_START_DATA: u32 = 3; +pub const PR_SET_MM_END_DATA: u32 = 4; +pub const PR_SET_MM_START_STACK: u32 = 5; +pub const PR_SET_MM_START_BRK: u32 = 6; +pub const PR_SET_MM_BRK: u32 = 7; +pub const PR_SET_MM_ARG_START: u32 = 8; +pub const PR_SET_MM_ARG_END: u32 = 9; +pub const PR_SET_MM_ENV_START: u32 = 10; +pub const PR_SET_MM_ENV_END: u32 = 11; +pub const PR_SET_MM_AUXV: u32 = 12; +pub const PR_SET_MM_EXE_FILE: u32 = 13; +pub const PR_SET_MM_MAP: u32 = 14; +pub const PR_SET_MM_MAP_SIZE: u32 = 15; +pub const PR_SET_PTRACER: u32 = 1499557217; +pub const PR_SET_CHILD_SUBREAPER: u32 = 36; +pub const PR_GET_CHILD_SUBREAPER: u32 = 37; +pub const PR_SET_NO_NEW_PRIVS: u32 = 38; +pub const PR_GET_NO_NEW_PRIVS: u32 = 39; +pub const PR_GET_TID_ADDRESS: u32 = 40; +pub const PR_SET_THP_DISABLE: u32 = 41; +pub const PR_GET_THP_DISABLE: u32 = 42; +pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; +pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; +pub const PR_SET_FP_MODE: u32 = 45; +pub const PR_GET_FP_MODE: u32 = 46; +pub const PR_FP_MODE_FR: u32 = 1; +pub const PR_FP_MODE_FRE: u32 = 2; +pub const PR_CAP_AMBIENT: u32 = 47; +pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; +pub const PR_CAP_AMBIENT_RAISE: u32 = 2; +pub const PR_CAP_AMBIENT_LOWER: u32 = 3; +pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; +pub const PR_SVE_SET_VL: u32 = 50; +pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SVE_GET_VL: u32 = 51; +pub const PR_SVE_VL_LEN_MASK: u32 = 65535; +pub const PR_SVE_VL_INHERIT: u32 = 131072; +pub const PR_GET_SPECULATION_CTRL: u32 = 52; +pub const PR_SET_SPECULATION_CTRL: u32 = 53; +pub const PR_SPEC_STORE_BYPASS: u32 = 0; +pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; +pub const PR_SPEC_L1D_FLUSH: u32 = 2; +pub const PR_SPEC_NOT_AFFECTED: u32 = 0; +pub const PR_SPEC_PRCTL: u32 = 1; +pub const PR_SPEC_ENABLE: u32 = 2; +pub const PR_SPEC_DISABLE: u32 = 4; +pub const PR_SPEC_FORCE_DISABLE: u32 = 8; +pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; +pub const PR_PAC_RESET_KEYS: u32 = 54; +pub const PR_PAC_APIAKEY: u32 = 1; +pub const PR_PAC_APIBKEY: u32 = 2; +pub const PR_PAC_APDAKEY: u32 = 4; +pub const PR_PAC_APDBKEY: u32 = 8; +pub const PR_PAC_APGAKEY: u32 = 16; +pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; +pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; +pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; +pub const PR_MTE_TCF_NONE: u32 = 0; +pub const PR_MTE_TCF_SYNC: u32 = 2; +pub const PR_MTE_TCF_ASYNC: u32 = 4; +pub const PR_MTE_TCF_MASK: u32 = 6; +pub const PR_MTE_TAG_SHIFT: u32 = 3; +pub const PR_MTE_TAG_MASK: u32 = 524280; +pub const PR_MTE_TCF_SHIFT: u32 = 1; +pub const PR_SET_IO_FLUSHER: u32 = 57; +pub const PR_GET_IO_FLUSHER: u32 = 58; +pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; +pub const PR_SYS_DISPATCH_OFF: u32 = 0; +pub const PR_SYS_DISPATCH_ON: u32 = 1; +pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; +pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; +pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; +pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; +pub const PR_SCHED_CORE: u32 = 62; +pub const PR_SCHED_CORE_GET: u32 = 0; +pub const PR_SCHED_CORE_CREATE: u32 = 1; +pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; +pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; +pub const PR_SCHED_CORE_MAX: u32 = 4; +pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; +pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; +pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; +pub const PR_SME_SET_VL: u32 = 63; +pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SME_GET_VL: u32 = 64; +pub const PR_SME_VL_LEN_MASK: u32 = 65535; +pub const PR_SME_VL_INHERIT: u32 = 131072; +pub const PR_SET_MDWE: u32 = 65; +pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; +pub const PR_GET_MDWE: u32 = 66; +pub const PR_SET_VMA: u32 = 1398164801; +pub const PR_SET_VMA_ANON_NAME: u32 = 0; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/system.rs temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/system.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/riscv64/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,129 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +#[derive(Debug)] +pub struct sysinfo { +pub uptime: __kernel_long_t, +pub loads: [__kernel_ulong_t; 3usize], +pub totalram: __kernel_ulong_t, +pub freeram: __kernel_ulong_t, +pub sharedram: __kernel_ulong_t, +pub bufferram: __kernel_ulong_t, +pub totalswap: __kernel_ulong_t, +pub freeswap: __kernel_ulong_t, +pub procs: __u16, +pub pad: __u16, +pub totalhigh: __kernel_ulong_t, +pub freehigh: __kernel_ulong_t, +pub mem_unit: __u32, +pub _f: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct oldold_utsname { +pub sysname: [crate::ctypes::c_char; 9usize], +pub nodename: [crate::ctypes::c_char; 9usize], +pub release: [crate::ctypes::c_char; 9usize], +pub version: [crate::ctypes::c_char; 9usize], +pub machine: [crate::ctypes::c_char; 9usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct old_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct new_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +pub domainname: [crate::ctypes::c_char; 65usize], +} +pub const SI_LOAD_SHIFT: u32 = 16; +pub const __OLD_UTS_LEN: u32 = 8; +pub const __NEW_UTS_LEN: u32 = 64; +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/errno.rs temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/errno.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/errno.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const EPERM: u32 = 1; pub const ENOENT: u32 = 2; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/general.rs temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/general.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/general.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/general.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,2914 +1,317 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type addr_t = crate::ctypes::c_ulong; +pub type saddr_t = crate::ctypes::c_long; +pub type __kernel_sighandler_t = ::core::option::Option; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_size_t = crate::ctypes::c_ulong; +pub type __kernel_ssize_t = crate::ctypes::c_long; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_ino_t = crate::ctypes::c_uint; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_ptrdiff_t = crate::ctypes::c_long; +pub type __kernel_sigset_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type cap_user_header_t = *mut __user_cap_header_struct; +pub type cap_user_data_t = *mut __user_cap_data_struct; +pub type __kernel_rwf_t = crate::ctypes::c_int; +pub type sigset_t = crate::ctypes::c_ulong; +pub type __signalfn_t = ::core::option::Option; +pub type __sighandler_t = __signalfn_t; +pub type __restorefn_t = ::core::option::Option; +pub type __sigrestore_t = __restorefn_t; +pub type stack_t = sigaltstack; +pub type sigval_t = sigval; +pub type siginfo_t = siginfo; +pub type sigevent_t = sigevent; +pub type cc_t = crate::ctypes::c_uchar; +pub type speed_t = crate::ctypes::c_uint; +pub type tcflag_t = crate::ctypes::c_uint; +pub type fsid_t = __kernel_fsid_t; +pub type __fsword_t = __u32; #[repr(C)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct __BindgenBitfieldUnit { storage: Storage, } -impl __BindgenBitfieldUnit { -#[inline] -pub const fn new(storage: Storage) -> Self { -Self { storage } +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C, packed(4))] +#[derive(Copy, Clone)] +pub struct __vector128 { +pub __bindgen_anon_1: __vector128__bindgen_ty_1, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __vector128__bindgen_ty_1__bindgen_ty_1 { +pub high: __u64, +pub low: __u64, } -impl __BindgenBitfieldUnit -where -Storage: AsRef<[u8]> + AsMut<[u8]>, -{ -#[inline] -pub fn get_bit(&self, index: usize) -> bool { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = self.storage.as_ref()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -byte & mask == mask +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fd_set { +pub fds_bits: [crate::ctypes::c_ulong; 16usize], } -#[inline] -pub fn set_bit(&mut self, index: usize, val: bool) { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = &mut self.storage.as_mut()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -if val { -*byte |= mask; -} else { -*byte &= !mask; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fsid_t { +pub val: [crate::ctypes::c_int; 2usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_header_struct { +pub version: __u32, +pub pid: crate::ctypes::c_int, } -#[inline] -pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -let mut val = 0; -for i in 0..(bit_width as usize) { -if self.get_bit(i + bit_offset) { -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -val |= 1 << index; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_data_struct { +pub effective: __u32, +pub permitted: __u32, +pub inheritable: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data { +pub magic_etc: __le32, +pub data: [vfs_cap_data__bindgen_ty_1; 2usize], } -val +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } -#[inline] -pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -for i in 0..(bit_width as usize) { -let mask = 1 << i; -let val_bit_is_set = val & mask == mask; -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -self.set_bit(index + bit_offset, val_bit_is_set); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data { +pub magic_etc: __le32, +pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], +pub rootid: __le32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct f_owner_ex { +pub type_: crate::ctypes::c_int, +pub pid: __kernel_pid_t, } #[repr(C)] -#[derive(Default)] -pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[derive(Debug, Copy, Clone)] +pub struct flock { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_off_t, +pub l_len: __kernel_off_t, +pub l_pid: __kernel_pid_t, } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock64 { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_loff_t, +pub l_len: __kernel_loff_t, +pub l_pid: __kernel_pid_t, } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct open_how { +pub flags: __u64, +pub mode: __u64, +pub resolve: __u64, } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct epoll_event { +pub events: __poll_t, +pub data: __u64, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, } #[repr(C)] -pub struct __BindgenUnionField(::core::marker::PhantomData); -impl __BindgenUnionField { -#[inline] -pub const fn new() -> Self { -__BindgenUnionField(::core::marker::PhantomData) +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, } -#[inline] -pub unsafe fn as_ref(&self) -> &T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, } -#[inline] -pub unsafe fn as_mut(&mut self) -> &mut T { -::core::mem::transmute(self) +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], } -impl ::core::default::Default for __BindgenUnionField { -#[inline] -fn default() -> Self { -Self::new() +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, } -impl ::core::clone::Clone for __BindgenUnionField { -#[inline] -fn clone(&self) -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, } -impl ::core::marker::Copy for __BindgenUnionField {} -impl ::core::fmt::Debug for __BindgenUnionField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__BindgenUnionField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, } +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, } -impl ::core::hash::Hash for __BindgenUnionField { -fn hash(&self, _state: &mut H) {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, } -impl ::core::cmp::PartialEq for __BindgenUnionField { -fn eq(&self, _other: &__BindgenUnionField) -> bool { -true +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], } -} -impl ::core::cmp::Eq for __BindgenUnionField {} -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const AT_SYSINFO_EHDR: u32 = 33; -pub const AT_VECTOR_SIZE_ARCH: u32 = 1; -pub const AT_NULL: u32 = 0; -pub const AT_IGNORE: u32 = 1; -pub const AT_EXECFD: u32 = 2; -pub const AT_PHDR: u32 = 3; -pub const AT_PHENT: u32 = 4; -pub const AT_PHNUM: u32 = 5; -pub const AT_PAGESZ: u32 = 6; -pub const AT_BASE: u32 = 7; -pub const AT_FLAGS: u32 = 8; -pub const AT_ENTRY: u32 = 9; -pub const AT_NOTELF: u32 = 10; -pub const AT_UID: u32 = 11; -pub const AT_EUID: u32 = 12; -pub const AT_GID: u32 = 13; -pub const AT_EGID: u32 = 14; -pub const AT_PLATFORM: u32 = 15; -pub const AT_HWCAP: u32 = 16; -pub const AT_CLKTCK: u32 = 17; -pub const AT_SECURE: u32 = 23; -pub const AT_BASE_PLATFORM: u32 = 24; -pub const AT_RANDOM: u32 = 25; -pub const AT_HWCAP2: u32 = 26; -pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; -pub const AT_RSEQ_ALIGN: u32 = 28; -pub const AT_EXECFN: u32 = 31; -pub const AT_MINSIGSTKSZ: u32 = 51; -pub const __BITS_PER_LONG: u32 = 64; -pub const __FD_SETSIZE: u32 = 1024; -pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; -pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; -pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; -pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; -pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; -pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; -pub const VFS_CAP_REVISION_SHIFT: u32 = 24; -pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; -pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; -pub const VFS_CAP_REVISION_1: u32 = 16777216; -pub const VFS_CAP_U32_1: u32 = 1; -pub const VFS_CAP_REVISION_2: u32 = 33554432; -pub const VFS_CAP_U32_2: u32 = 2; -pub const VFS_CAP_REVISION_3: u32 = 50331648; -pub const VFS_CAP_U32_3: u32 = 2; -pub const VFS_CAP_U32: u32 = 2; -pub const VFS_CAP_REVISION: u32 = 50331648; -pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S: u32 = 1; -pub const CAP_CHOWN: u32 = 0; -pub const CAP_DAC_OVERRIDE: u32 = 1; -pub const CAP_DAC_READ_SEARCH: u32 = 2; -pub const CAP_FOWNER: u32 = 3; -pub const CAP_FSETID: u32 = 4; -pub const CAP_KILL: u32 = 5; -pub const CAP_SETGID: u32 = 6; -pub const CAP_SETUID: u32 = 7; -pub const CAP_SETPCAP: u32 = 8; -pub const CAP_LINUX_IMMUTABLE: u32 = 9; -pub const CAP_NET_BIND_SERVICE: u32 = 10; -pub const CAP_NET_BROADCAST: u32 = 11; -pub const CAP_NET_ADMIN: u32 = 12; -pub const CAP_NET_RAW: u32 = 13; -pub const CAP_IPC_LOCK: u32 = 14; -pub const CAP_IPC_OWNER: u32 = 15; -pub const CAP_SYS_MODULE: u32 = 16; -pub const CAP_SYS_RAWIO: u32 = 17; -pub const CAP_SYS_CHROOT: u32 = 18; -pub const CAP_SYS_PTRACE: u32 = 19; -pub const CAP_SYS_PACCT: u32 = 20; -pub const CAP_SYS_ADMIN: u32 = 21; -pub const CAP_SYS_BOOT: u32 = 22; -pub const CAP_SYS_NICE: u32 = 23; -pub const CAP_SYS_RESOURCE: u32 = 24; -pub const CAP_SYS_TIME: u32 = 25; -pub const CAP_SYS_TTY_CONFIG: u32 = 26; -pub const CAP_MKNOD: u32 = 27; -pub const CAP_LEASE: u32 = 28; -pub const CAP_AUDIT_WRITE: u32 = 29; -pub const CAP_AUDIT_CONTROL: u32 = 30; -pub const CAP_SETFCAP: u32 = 31; -pub const CAP_MAC_OVERRIDE: u32 = 32; -pub const CAP_MAC_ADMIN: u32 = 33; -pub const CAP_SYSLOG: u32 = 34; -pub const CAP_WAKE_ALARM: u32 = 35; -pub const CAP_BLOCK_SUSPEND: u32 = 36; -pub const CAP_AUDIT_READ: u32 = 37; -pub const CAP_PERFMON: u32 = 38; -pub const CAP_BPF: u32 = 39; -pub const CAP_CHECKPOINT_RESTORE: u32 = 40; -pub const CAP_LAST_CAP: u32 = 40; -pub const O_ACCMODE: u32 = 3; -pub const O_RDONLY: u32 = 0; -pub const O_WRONLY: u32 = 1; -pub const O_RDWR: u32 = 2; -pub const O_CREAT: u32 = 64; -pub const O_EXCL: u32 = 128; -pub const O_NOCTTY: u32 = 256; -pub const O_TRUNC: u32 = 512; -pub const O_APPEND: u32 = 1024; -pub const O_NONBLOCK: u32 = 2048; -pub const O_DSYNC: u32 = 4096; -pub const FASYNC: u32 = 8192; -pub const O_DIRECT: u32 = 16384; -pub const O_LARGEFILE: u32 = 32768; -pub const O_DIRECTORY: u32 = 65536; -pub const O_NOFOLLOW: u32 = 131072; -pub const O_NOATIME: u32 = 262144; -pub const O_CLOEXEC: u32 = 524288; -pub const __O_SYNC: u32 = 1048576; -pub const O_SYNC: u32 = 1052672; -pub const O_PATH: u32 = 2097152; -pub const __O_TMPFILE: u32 = 4194304; -pub const O_TMPFILE: u32 = 4259840; -pub const O_TMPFILE_MASK: u32 = 4259904; -pub const O_NDELAY: u32 = 2048; -pub const F_DUPFD: u32 = 0; -pub const F_GETFD: u32 = 1; -pub const F_SETFD: u32 = 2; -pub const F_GETFL: u32 = 3; -pub const F_SETFL: u32 = 4; -pub const F_GETLK: u32 = 5; -pub const F_SETLK: u32 = 6; -pub const F_SETLKW: u32 = 7; -pub const F_SETOWN: u32 = 8; -pub const F_GETOWN: u32 = 9; -pub const F_SETSIG: u32 = 10; -pub const F_GETSIG: u32 = 11; -pub const F_SETOWN_EX: u32 = 15; -pub const F_GETOWN_EX: u32 = 16; -pub const F_GETOWNER_UIDS: u32 = 17; -pub const F_OFD_GETLK: u32 = 36; -pub const F_OFD_SETLK: u32 = 37; -pub const F_OFD_SETLKW: u32 = 38; -pub const F_OWNER_TID: u32 = 0; -pub const F_OWNER_PID: u32 = 1; -pub const F_OWNER_PGRP: u32 = 2; -pub const FD_CLOEXEC: u32 = 1; -pub const F_RDLCK: u32 = 0; -pub const F_WRLCK: u32 = 1; -pub const F_UNLCK: u32 = 2; -pub const F_EXLCK: u32 = 4; -pub const F_SHLCK: u32 = 8; -pub const LOCK_SH: u32 = 1; -pub const LOCK_EX: u32 = 2; -pub const LOCK_NB: u32 = 4; -pub const LOCK_UN: u32 = 8; -pub const LOCK_MAND: u32 = 32; -pub const LOCK_READ: u32 = 64; -pub const LOCK_WRITE: u32 = 128; -pub const LOCK_RW: u32 = 192; -pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; -pub const RESOLVE_NO_XDEV: u32 = 1; -pub const RESOLVE_NO_MAGICLINKS: u32 = 2; -pub const RESOLVE_NO_SYMLINKS: u32 = 4; -pub const RESOLVE_BENEATH: u32 = 8; -pub const RESOLVE_IN_ROOT: u32 = 16; -pub const RESOLVE_CACHED: u32 = 32; -pub const F_SETLEASE: u32 = 1024; -pub const F_GETLEASE: u32 = 1025; -pub const F_CANCELLK: u32 = 1029; -pub const F_DUPFD_CLOEXEC: u32 = 1030; -pub const F_NOTIFY: u32 = 1026; -pub const F_SETPIPE_SZ: u32 = 1031; -pub const F_GETPIPE_SZ: u32 = 1032; -pub const F_ADD_SEALS: u32 = 1033; -pub const F_GET_SEALS: u32 = 1034; -pub const F_SEAL_SEAL: u32 = 1; -pub const F_SEAL_SHRINK: u32 = 2; -pub const F_SEAL_GROW: u32 = 4; -pub const F_SEAL_WRITE: u32 = 8; -pub const F_SEAL_FUTURE_WRITE: u32 = 16; -pub const F_SEAL_EXEC: u32 = 32; -pub const F_GET_RW_HINT: u32 = 1035; -pub const F_SET_RW_HINT: u32 = 1036; -pub const F_GET_FILE_RW_HINT: u32 = 1037; -pub const F_SET_FILE_RW_HINT: u32 = 1038; -pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; -pub const RWH_WRITE_LIFE_NONE: u32 = 1; -pub const RWH_WRITE_LIFE_SHORT: u32 = 2; -pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; -pub const RWH_WRITE_LIFE_LONG: u32 = 4; -pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; -pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; -pub const DN_ACCESS: u32 = 1; -pub const DN_MODIFY: u32 = 2; -pub const DN_CREATE: u32 = 4; -pub const DN_DELETE: u32 = 8; -pub const DN_RENAME: u32 = 16; -pub const DN_ATTRIB: u32 = 32; -pub const DN_MULTISHOT: u32 = 2147483648; -pub const AT_FDCWD: i32 = -100; -pub const AT_SYMLINK_NOFOLLOW: u32 = 256; -pub const AT_EACCESS: u32 = 512; -pub const AT_REMOVEDIR: u32 = 512; -pub const AT_SYMLINK_FOLLOW: u32 = 1024; -pub const AT_NO_AUTOMOUNT: u32 = 2048; -pub const AT_EMPTY_PATH: u32 = 4096; -pub const AT_STATX_SYNC_TYPE: u32 = 24576; -pub const AT_STATX_SYNC_AS_STAT: u32 = 0; -pub const AT_STATX_FORCE_SYNC: u32 = 8192; -pub const AT_STATX_DONT_SYNC: u32 = 16384; -pub const AT_RECURSIVE: u32 = 32768; -pub const EPOLL_CLOEXEC: u32 = 524288; -pub const EPOLL_CTL_ADD: u32 = 1; -pub const EPOLL_CTL_DEL: u32 = 2; -pub const EPOLL_CTL_MOD: u32 = 3; -pub const POSIX_FADV_NORMAL: u32 = 0; -pub const POSIX_FADV_RANDOM: u32 = 1; -pub const POSIX_FADV_SEQUENTIAL: u32 = 2; -pub const POSIX_FADV_WILLNEED: u32 = 3; -pub const POSIX_FADV_DONTNEED: u32 = 6; -pub const POSIX_FADV_NOREUSE: u32 = 7; -pub const FALLOC_FL_KEEP_SIZE: u32 = 1; -pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; -pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; -pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; -pub const FALLOC_FL_ZERO_RANGE: u32 = 16; -pub const FALLOC_FL_INSERT_RANGE: u32 = 32; -pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; -pub const NR_OPEN: u32 = 1024; -pub const NGROUPS_MAX: u32 = 65536; -pub const ARG_MAX: u32 = 131072; -pub const LINK_MAX: u32 = 127; -pub const MAX_CANON: u32 = 255; -pub const MAX_INPUT: u32 = 255; -pub const NAME_MAX: u32 = 255; -pub const PATH_MAX: u32 = 4096; -pub const PIPE_BUF: u32 = 4096; -pub const XATTR_NAME_MAX: u32 = 255; -pub const XATTR_SIZE_MAX: u32 = 65536; -pub const XATTR_LIST_MAX: u32 = 65536; -pub const RTSIG_MAX: u32 = 32; -pub const _IOC_NRBITS: u32 = 8; -pub const _IOC_TYPEBITS: u32 = 8; -pub const _IOC_SIZEBITS: u32 = 14; -pub const _IOC_DIRBITS: u32 = 2; -pub const _IOC_NRMASK: u32 = 255; -pub const _IOC_TYPEMASK: u32 = 255; -pub const _IOC_SIZEMASK: u32 = 16383; -pub const _IOC_DIRMASK: u32 = 3; -pub const _IOC_NRSHIFT: u32 = 0; -pub const _IOC_TYPESHIFT: u32 = 8; -pub const _IOC_SIZESHIFT: u32 = 16; -pub const _IOC_DIRSHIFT: u32 = 30; -pub const _IOC_NONE: u32 = 0; -pub const _IOC_WRITE: u32 = 1; -pub const _IOC_READ: u32 = 2; -pub const IOC_IN: u32 = 1073741824; -pub const IOC_OUT: u32 = 2147483648; -pub const IOC_INOUT: u32 = 3221225472; -pub const IOCSIZE_MASK: u32 = 1073676288; -pub const IOCSIZE_SHIFT: u32 = 16; -pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; -pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; -pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; -pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; -pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; -pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; -pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; -pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; -pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; -pub const FSCRYPT_POLICY_V1: u32 = 0; -pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; -pub const FSCRYPT_POLICY_V2: u32 = 2; -pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; -pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; -pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; -pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; -pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; -pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; -pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; -pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FS_POLICY_FLAGS_VALID: u32 = 7; -pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; -pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; -pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; -pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; -pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; -pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; -pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; -pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; -pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FS_MAX_KEY_SIZE: u32 = 64; -pub const MS_RDONLY: u32 = 1; -pub const MS_NOSUID: u32 = 2; -pub const MS_NODEV: u32 = 4; -pub const MS_NOEXEC: u32 = 8; -pub const MS_SYNCHRONOUS: u32 = 16; -pub const MS_REMOUNT: u32 = 32; -pub const MS_MANDLOCK: u32 = 64; -pub const MS_DIRSYNC: u32 = 128; -pub const MS_NOSYMFOLLOW: u32 = 256; -pub const MS_NOATIME: u32 = 1024; -pub const MS_NODIRATIME: u32 = 2048; -pub const MS_BIND: u32 = 4096; -pub const MS_MOVE: u32 = 8192; -pub const MS_REC: u32 = 16384; -pub const MS_VERBOSE: u32 = 32768; -pub const MS_SILENT: u32 = 32768; -pub const MS_POSIXACL: u32 = 65536; -pub const MS_UNBINDABLE: u32 = 131072; -pub const MS_PRIVATE: u32 = 262144; -pub const MS_SLAVE: u32 = 524288; -pub const MS_SHARED: u32 = 1048576; -pub const MS_RELATIME: u32 = 2097152; -pub const MS_KERNMOUNT: u32 = 4194304; -pub const MS_I_VERSION: u32 = 8388608; -pub const MS_STRICTATIME: u32 = 16777216; -pub const MS_LAZYTIME: u32 = 33554432; -pub const MS_SUBMOUNT: u32 = 67108864; -pub const MS_NOREMOTELOCK: u32 = 134217728; -pub const MS_NOSEC: u32 = 268435456; -pub const MS_BORN: u32 = 536870912; -pub const MS_ACTIVE: u32 = 1073741824; -pub const MS_NOUSER: u32 = 2147483648; -pub const MS_RMT_MASK: u32 = 41943121; -pub const MS_MGC_VAL: u32 = 3236757504; -pub const MS_MGC_MSK: u32 = 4294901760; -pub const OPEN_TREE_CLONE: u32 = 1; -pub const OPEN_TREE_CLOEXEC: u32 = 524288; -pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; -pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; -pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; -pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; -pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; -pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; -pub const MOVE_MOUNT_SET_GROUP: u32 = 256; -pub const MOVE_MOUNT__MASK: u32 = 375; -pub const FSOPEN_CLOEXEC: u32 = 1; -pub const FSPICK_CLOEXEC: u32 = 1; -pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; -pub const FSPICK_NO_AUTOMOUNT: u32 = 4; -pub const FSPICK_EMPTY_PATH: u32 = 8; -pub const FSMOUNT_CLOEXEC: u32 = 1; -pub const MOUNT_ATTR_RDONLY: u32 = 1; -pub const MOUNT_ATTR_NOSUID: u32 = 2; -pub const MOUNT_ATTR_NODEV: u32 = 4; -pub const MOUNT_ATTR_NOEXEC: u32 = 8; -pub const MOUNT_ATTR__ATIME: u32 = 112; -pub const MOUNT_ATTR_RELATIME: u32 = 0; -pub const MOUNT_ATTR_NOATIME: u32 = 16; -pub const MOUNT_ATTR_STRICTATIME: u32 = 32; -pub const MOUNT_ATTR_NODIRATIME: u32 = 128; -pub const MOUNT_ATTR_IDMAP: u32 = 1048576; -pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; -pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; -pub const INR_OPEN_CUR: u32 = 1024; -pub const INR_OPEN_MAX: u32 = 4096; -pub const BLOCK_SIZE_BITS: u32 = 10; -pub const BLOCK_SIZE: u32 = 1024; -pub const SEEK_SET: u32 = 0; -pub const SEEK_CUR: u32 = 1; -pub const SEEK_END: u32 = 2; -pub const SEEK_DATA: u32 = 3; -pub const SEEK_HOLE: u32 = 4; -pub const SEEK_MAX: u32 = 4; -pub const RENAME_NOREPLACE: u32 = 1; -pub const RENAME_EXCHANGE: u32 = 2; -pub const RENAME_WHITEOUT: u32 = 4; -pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; -pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; -pub const NR_FILE: u32 = 8192; -pub const FS_XFLAG_REALTIME: u32 = 1; -pub const FS_XFLAG_PREALLOC: u32 = 2; -pub const FS_XFLAG_IMMUTABLE: u32 = 8; -pub const FS_XFLAG_APPEND: u32 = 16; -pub const FS_XFLAG_SYNC: u32 = 32; -pub const FS_XFLAG_NOATIME: u32 = 64; -pub const FS_XFLAG_NODUMP: u32 = 128; -pub const FS_XFLAG_RTINHERIT: u32 = 256; -pub const FS_XFLAG_PROJINHERIT: u32 = 512; -pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; -pub const FS_XFLAG_EXTSIZE: u32 = 2048; -pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; -pub const FS_XFLAG_NODEFRAG: u32 = 8192; -pub const FS_XFLAG_FILESTREAM: u32 = 16384; -pub const FS_XFLAG_DAX: u32 = 32768; -pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; -pub const FS_XFLAG_HASATTR: u32 = 2147483648; -pub const BMAP_IOCTL: u32 = 1; -pub const FSLABEL_MAX: u32 = 256; -pub const FS_SECRM_FL: u32 = 1; -pub const FS_UNRM_FL: u32 = 2; -pub const FS_COMPR_FL: u32 = 4; -pub const FS_SYNC_FL: u32 = 8; -pub const FS_IMMUTABLE_FL: u32 = 16; -pub const FS_APPEND_FL: u32 = 32; -pub const FS_NODUMP_FL: u32 = 64; -pub const FS_NOATIME_FL: u32 = 128; -pub const FS_DIRTY_FL: u32 = 256; -pub const FS_COMPRBLK_FL: u32 = 512; -pub const FS_NOCOMP_FL: u32 = 1024; -pub const FS_ENCRYPT_FL: u32 = 2048; -pub const FS_BTREE_FL: u32 = 4096; -pub const FS_INDEX_FL: u32 = 4096; -pub const FS_IMAGIC_FL: u32 = 8192; -pub const FS_JOURNAL_DATA_FL: u32 = 16384; -pub const FS_NOTAIL_FL: u32 = 32768; -pub const FS_DIRSYNC_FL: u32 = 65536; -pub const FS_TOPDIR_FL: u32 = 131072; -pub const FS_HUGE_FILE_FL: u32 = 262144; -pub const FS_EXTENT_FL: u32 = 524288; -pub const FS_VERITY_FL: u32 = 1048576; -pub const FS_EA_INODE_FL: u32 = 2097152; -pub const FS_EOFBLOCKS_FL: u32 = 4194304; -pub const FS_NOCOW_FL: u32 = 8388608; -pub const FS_DAX_FL: u32 = 33554432; -pub const FS_INLINE_DATA_FL: u32 = 268435456; -pub const FS_PROJINHERIT_FL: u32 = 536870912; -pub const FS_CASEFOLD_FL: u32 = 1073741824; -pub const FS_RESERVED_FL: u32 = 2147483648; -pub const FS_FL_USER_VISIBLE: u32 = 253951; -pub const FS_FL_USER_MODIFIABLE: u32 = 229631; -pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; -pub const SYNC_FILE_RANGE_WRITE: u32 = 2; -pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; -pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; -pub const FUTEX_WAIT: u32 = 0; -pub const FUTEX_WAKE: u32 = 1; -pub const FUTEX_FD: u32 = 2; -pub const FUTEX_REQUEUE: u32 = 3; -pub const FUTEX_CMP_REQUEUE: u32 = 4; -pub const FUTEX_WAKE_OP: u32 = 5; -pub const FUTEX_LOCK_PI: u32 = 6; -pub const FUTEX_UNLOCK_PI: u32 = 7; -pub const FUTEX_TRYLOCK_PI: u32 = 8; -pub const FUTEX_WAIT_BITSET: u32 = 9; -pub const FUTEX_WAKE_BITSET: u32 = 10; -pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; -pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; -pub const FUTEX_LOCK_PI2: u32 = 13; -pub const FUTEX_PRIVATE_FLAG: u32 = 128; -pub const FUTEX_CLOCK_REALTIME: u32 = 256; -pub const FUTEX_CMD_MASK: i32 = -385; -pub const FUTEX_WAIT_PRIVATE: u32 = 128; -pub const FUTEX_WAKE_PRIVATE: u32 = 129; -pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; -pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; -pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; -pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; -pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; -pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; -pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; -pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; -pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; -pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; -pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; -pub const FUTEX_32: u32 = 2; -pub const FUTEX_WAITV_MAX: u32 = 128; -pub const FUTEX_WAITERS: u32 = 2147483648; -pub const FUTEX_OWNER_DIED: u32 = 1073741824; -pub const FUTEX_TID_MASK: u32 = 1073741823; -pub const ROBUST_LIST_LIMIT: u32 = 2048; -pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; -pub const FUTEX_OP_SET: u32 = 0; -pub const FUTEX_OP_ADD: u32 = 1; -pub const FUTEX_OP_OR: u32 = 2; -pub const FUTEX_OP_ANDN: u32 = 3; -pub const FUTEX_OP_XOR: u32 = 4; -pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; -pub const FUTEX_OP_CMP_EQ: u32 = 0; -pub const FUTEX_OP_CMP_NE: u32 = 1; -pub const FUTEX_OP_CMP_LT: u32 = 2; -pub const FUTEX_OP_CMP_LE: u32 = 3; -pub const FUTEX_OP_CMP_GT: u32 = 4; -pub const FUTEX_OP_CMP_GE: u32 = 5; -pub const __UAPI_DEF_IF_IFCONF: u32 = 1; -pub const __UAPI_DEF_IF_IFMAP: u32 = 1; -pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1; -pub const __UAPI_DEF_IF_IFREQ: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1; -pub const __UAPI_DEF_IN_ADDR: u32 = 1; -pub const __UAPI_DEF_IN_IPPROTO: u32 = 1; -pub const __UAPI_DEF_IN_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP_MREQ: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1; -pub const __UAPI_DEF_IN_CLASS: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1; -pub const __UAPI_DEF_IPV6_MREQ: u32 = 1; -pub const __UAPI_DEF_IPPROTO_V6: u32 = 1; -pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1; -pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1; -pub const __UAPI_DEF_XATTR: u32 = 1; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const IP_TOS: u32 = 1; -pub const IP_TTL: u32 = 2; -pub const IP_HDRINCL: u32 = 3; -pub const IP_OPTIONS: u32 = 4; -pub const IP_ROUTER_ALERT: u32 = 5; -pub const IP_RECVOPTS: u32 = 6; -pub const IP_RETOPTS: u32 = 7; -pub const IP_PKTINFO: u32 = 8; -pub const IP_PKTOPTIONS: u32 = 9; -pub const IP_MTU_DISCOVER: u32 = 10; -pub const IP_RECVERR: u32 = 11; -pub const IP_RECVTTL: u32 = 12; -pub const IP_RECVTOS: u32 = 13; -pub const IP_MTU: u32 = 14; -pub const IP_FREEBIND: u32 = 15; -pub const IP_IPSEC_POLICY: u32 = 16; -pub const IP_XFRM_POLICY: u32 = 17; -pub const IP_PASSSEC: u32 = 18; -pub const IP_TRANSPARENT: u32 = 19; -pub const IP_RECVRETOPTS: u32 = 7; -pub const IP_ORIGDSTADDR: u32 = 20; -pub const IP_RECVORIGDSTADDR: u32 = 20; -pub const IP_MINTTL: u32 = 21; -pub const IP_NODEFRAG: u32 = 22; -pub const IP_CHECKSUM: u32 = 23; -pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; -pub const IP_RECVFRAGSIZE: u32 = 25; -pub const IP_RECVERR_RFC4884: u32 = 26; -pub const IP_PMTUDISC_DONT: u32 = 0; -pub const IP_PMTUDISC_WANT: u32 = 1; -pub const IP_PMTUDISC_DO: u32 = 2; -pub const IP_PMTUDISC_PROBE: u32 = 3; -pub const IP_PMTUDISC_INTERFACE: u32 = 4; -pub const IP_PMTUDISC_OMIT: u32 = 5; -pub const IP_MULTICAST_IF: u32 = 32; -pub const IP_MULTICAST_TTL: u32 = 33; -pub const IP_MULTICAST_LOOP: u32 = 34; -pub const IP_ADD_MEMBERSHIP: u32 = 35; -pub const IP_DROP_MEMBERSHIP: u32 = 36; -pub const IP_UNBLOCK_SOURCE: u32 = 37; -pub const IP_BLOCK_SOURCE: u32 = 38; -pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; -pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; -pub const IP_MSFILTER: u32 = 41; -pub const MCAST_JOIN_GROUP: u32 = 42; -pub const MCAST_BLOCK_SOURCE: u32 = 43; -pub const MCAST_UNBLOCK_SOURCE: u32 = 44; -pub const MCAST_LEAVE_GROUP: u32 = 45; -pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; -pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; -pub const MCAST_MSFILTER: u32 = 48; -pub const IP_MULTICAST_ALL: u32 = 49; -pub const IP_UNICAST_IF: u32 = 50; -pub const IP_LOCAL_PORT_RANGE: u32 = 51; -pub const MCAST_EXCLUDE: u32 = 0; -pub const MCAST_INCLUDE: u32 = 1; -pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; -pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const __SOCK_SIZE__: u32 = 16; -pub const IN_CLASSA_NET: u32 = 4278190080; -pub const IN_CLASSA_NSHIFT: u32 = 24; -pub const IN_CLASSA_HOST: u32 = 16777215; -pub const IN_CLASSA_MAX: u32 = 128; -pub const IN_CLASSB_NET: u32 = 4294901760; -pub const IN_CLASSB_NSHIFT: u32 = 16; -pub const IN_CLASSB_HOST: u32 = 65535; -pub const IN_CLASSB_MAX: u32 = 65536; -pub const IN_CLASSC_NET: u32 = 4294967040; -pub const IN_CLASSC_NSHIFT: u32 = 8; -pub const IN_CLASSC_HOST: u32 = 255; -pub const IN_MULTICAST_NET: u32 = 3758096384; -pub const IN_CLASSE_NET: u32 = 4294967295; -pub const IN_CLASSE_NSHIFT: u32 = 0; -pub const IN_LOOPBACKNET: u32 = 127; -pub const INADDR_LOOPBACK: u32 = 2130706433; -pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; -pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; -pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; -pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; -pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; -pub const __BIG_ENDIAN: u32 = 4321; -pub const IN_ACCESS: u32 = 1; -pub const IN_MODIFY: u32 = 2; -pub const IN_ATTRIB: u32 = 4; -pub const IN_CLOSE_WRITE: u32 = 8; -pub const IN_CLOSE_NOWRITE: u32 = 16; -pub const IN_OPEN: u32 = 32; -pub const IN_MOVED_FROM: u32 = 64; -pub const IN_MOVED_TO: u32 = 128; -pub const IN_CREATE: u32 = 256; -pub const IN_DELETE: u32 = 512; -pub const IN_DELETE_SELF: u32 = 1024; -pub const IN_MOVE_SELF: u32 = 2048; -pub const IN_UNMOUNT: u32 = 8192; -pub const IN_Q_OVERFLOW: u32 = 16384; -pub const IN_IGNORED: u32 = 32768; -pub const IN_CLOSE: u32 = 24; -pub const IN_MOVE: u32 = 192; -pub const IN_ONLYDIR: u32 = 16777216; -pub const IN_DONT_FOLLOW: u32 = 33554432; -pub const IN_EXCL_UNLINK: u32 = 67108864; -pub const IN_MASK_CREATE: u32 = 268435456; -pub const IN_MASK_ADD: u32 = 536870912; -pub const IN_ISDIR: u32 = 1073741824; -pub const IN_ONESHOT: u32 = 2147483648; -pub const IN_ALL_EVENTS: u32 = 4095; -pub const IN_CLOEXEC: u32 = 524288; -pub const IN_NONBLOCK: u32 = 2048; -pub const IPTOS_TOS_MASK: u32 = 30; -pub const IPTOS_LOWDELAY: u32 = 16; -pub const IPTOS_THROUGHPUT: u32 = 8; -pub const IPTOS_RELIABILITY: u32 = 4; -pub const IPTOS_MINCOST: u32 = 2; -pub const IPTOS_PREC_MASK: u32 = 224; -pub const IPTOS_PREC_NETCONTROL: u32 = 224; -pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; -pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; -pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; -pub const IPTOS_PREC_FLASH: u32 = 96; -pub const IPTOS_PREC_IMMEDIATE: u32 = 64; -pub const IPTOS_PREC_PRIORITY: u32 = 32; -pub const IPTOS_PREC_ROUTINE: u32 = 0; -pub const IPOPT_COPY: u32 = 128; -pub const IPOPT_CLASS_MASK: u32 = 96; -pub const IPOPT_NUMBER_MASK: u32 = 31; -pub const IPOPT_CONTROL: u32 = 0; -pub const IPOPT_RESERVED1: u32 = 32; -pub const IPOPT_MEASUREMENT: u32 = 64; -pub const IPOPT_RESERVED2: u32 = 96; -pub const IPOPT_END: u32 = 0; -pub const IPOPT_NOOP: u32 = 1; -pub const IPOPT_SEC: u32 = 130; -pub const IPOPT_LSRR: u32 = 131; -pub const IPOPT_TIMESTAMP: u32 = 68; -pub const IPOPT_CIPSO: u32 = 134; -pub const IPOPT_RR: u32 = 7; -pub const IPOPT_SID: u32 = 136; -pub const IPOPT_SSRR: u32 = 137; -pub const IPOPT_RA: u32 = 148; -pub const IPVERSION: u32 = 4; -pub const MAXTTL: u32 = 255; -pub const IPDEFTTL: u32 = 64; -pub const IPOPT_OPTVAL: u32 = 0; -pub const IPOPT_OLEN: u32 = 1; -pub const IPOPT_OFFSET: u32 = 2; -pub const IPOPT_MINOFF: u32 = 4; -pub const MAX_IPOPTLEN: u32 = 40; -pub const IPOPT_NOP: u32 = 1; -pub const IPOPT_EOL: u32 = 0; -pub const IPOPT_TS: u32 = 68; -pub const IPOPT_TS_TSONLY: u32 = 0; -pub const IPOPT_TS_TSANDADDR: u32 = 1; -pub const IPOPT_TS_PRESPEC: u32 = 3; -pub const IPV4_BEET_PHMAXLEN: u32 = 8; -pub const IPV6_FL_A_GET: u32 = 0; -pub const IPV6_FL_A_PUT: u32 = 1; -pub const IPV6_FL_A_RENEW: u32 = 2; -pub const IPV6_FL_F_CREATE: u32 = 1; -pub const IPV6_FL_F_EXCL: u32 = 2; -pub const IPV6_FL_F_REFLECT: u32 = 4; -pub const IPV6_FL_F_REMOTE: u32 = 8; -pub const IPV6_FL_S_NONE: u32 = 0; -pub const IPV6_FL_S_EXCL: u32 = 1; -pub const IPV6_FL_S_PROCESS: u32 = 2; -pub const IPV6_FL_S_USER: u32 = 3; -pub const IPV6_FL_S_ANY: u32 = 255; -pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; -pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; -pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; -pub const IPV6_PRIORITY_FILLER: u32 = 256; -pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; -pub const IPV6_PRIORITY_RESERVED1: u32 = 768; -pub const IPV6_PRIORITY_BULK: u32 = 1024; -pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; -pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; -pub const IPV6_PRIORITY_CONTROL: u32 = 1792; -pub const IPV6_PRIORITY_8: u32 = 2048; -pub const IPV6_PRIORITY_9: u32 = 2304; -pub const IPV6_PRIORITY_10: u32 = 2560; -pub const IPV6_PRIORITY_11: u32 = 2816; -pub const IPV6_PRIORITY_12: u32 = 3072; -pub const IPV6_PRIORITY_13: u32 = 3328; -pub const IPV6_PRIORITY_14: u32 = 3584; -pub const IPV6_PRIORITY_15: u32 = 3840; -pub const IPPROTO_HOPOPTS: u32 = 0; -pub const IPPROTO_ROUTING: u32 = 43; -pub const IPPROTO_FRAGMENT: u32 = 44; -pub const IPPROTO_ICMPV6: u32 = 58; -pub const IPPROTO_NONE: u32 = 59; -pub const IPPROTO_DSTOPTS: u32 = 60; -pub const IPPROTO_MH: u32 = 135; -pub const IPV6_TLV_PAD1: u32 = 0; -pub const IPV6_TLV_PADN: u32 = 1; -pub const IPV6_TLV_ROUTERALERT: u32 = 5; -pub const IPV6_TLV_CALIPSO: u32 = 7; -pub const IPV6_TLV_IOAM: u32 = 49; -pub const IPV6_TLV_JUMBO: u32 = 194; -pub const IPV6_TLV_HAO: u32 = 201; -pub const IPV6_ADDRFORM: u32 = 1; -pub const IPV6_2292PKTINFO: u32 = 2; -pub const IPV6_2292HOPOPTS: u32 = 3; -pub const IPV6_2292DSTOPTS: u32 = 4; -pub const IPV6_2292RTHDR: u32 = 5; -pub const IPV6_2292PKTOPTIONS: u32 = 6; -pub const IPV6_CHECKSUM: u32 = 7; -pub const IPV6_2292HOPLIMIT: u32 = 8; -pub const IPV6_NEXTHOP: u32 = 9; -pub const IPV6_AUTHHDR: u32 = 10; -pub const IPV6_FLOWINFO: u32 = 11; -pub const IPV6_UNICAST_HOPS: u32 = 16; -pub const IPV6_MULTICAST_IF: u32 = 17; -pub const IPV6_MULTICAST_HOPS: u32 = 18; -pub const IPV6_MULTICAST_LOOP: u32 = 19; -pub const IPV6_ADD_MEMBERSHIP: u32 = 20; -pub const IPV6_DROP_MEMBERSHIP: u32 = 21; -pub const IPV6_ROUTER_ALERT: u32 = 22; -pub const IPV6_MTU_DISCOVER: u32 = 23; -pub const IPV6_MTU: u32 = 24; -pub const IPV6_RECVERR: u32 = 25; -pub const IPV6_V6ONLY: u32 = 26; -pub const IPV6_JOIN_ANYCAST: u32 = 27; -pub const IPV6_LEAVE_ANYCAST: u32 = 28; -pub const IPV6_MULTICAST_ALL: u32 = 29; -pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; -pub const IPV6_RECVERR_RFC4884: u32 = 31; -pub const IPV6_PMTUDISC_DONT: u32 = 0; -pub const IPV6_PMTUDISC_WANT: u32 = 1; -pub const IPV6_PMTUDISC_DO: u32 = 2; -pub const IPV6_PMTUDISC_PROBE: u32 = 3; -pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; -pub const IPV6_PMTUDISC_OMIT: u32 = 5; -pub const IPV6_FLOWLABEL_MGR: u32 = 32; -pub const IPV6_FLOWINFO_SEND: u32 = 33; -pub const IPV6_IPSEC_POLICY: u32 = 34; -pub const IPV6_XFRM_POLICY: u32 = 35; -pub const IPV6_HDRINCL: u32 = 36; -pub const IPV6_RECVPKTINFO: u32 = 49; -pub const IPV6_PKTINFO: u32 = 50; -pub const IPV6_RECVHOPLIMIT: u32 = 51; -pub const IPV6_HOPLIMIT: u32 = 52; -pub const IPV6_RECVHOPOPTS: u32 = 53; -pub const IPV6_HOPOPTS: u32 = 54; -pub const IPV6_RTHDRDSTOPTS: u32 = 55; -pub const IPV6_RECVRTHDR: u32 = 56; -pub const IPV6_RTHDR: u32 = 57; -pub const IPV6_RECVDSTOPTS: u32 = 58; -pub const IPV6_DSTOPTS: u32 = 59; -pub const IPV6_RECVPATHMTU: u32 = 60; -pub const IPV6_PATHMTU: u32 = 61; -pub const IPV6_DONTFRAG: u32 = 62; -pub const IPV6_RECVTCLASS: u32 = 66; -pub const IPV6_TCLASS: u32 = 67; -pub const IPV6_AUTOFLOWLABEL: u32 = 70; -pub const IPV6_ADDR_PREFERENCES: u32 = 72; -pub const IPV6_PREFER_SRC_TMP: u32 = 1; -pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; -pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; -pub const IPV6_PREFER_SRC_COA: u32 = 4; -pub const IPV6_PREFER_SRC_HOME: u32 = 1024; -pub const IPV6_PREFER_SRC_CGA: u32 = 8; -pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; -pub const IPV6_MINHOPCOUNT: u32 = 73; -pub const IPV6_ORIGDSTADDR: u32 = 74; -pub const IPV6_RECVORIGDSTADDR: u32 = 74; -pub const IPV6_TRANSPARENT: u32 = 75; -pub const IPV6_UNICAST_IF: u32 = 76; -pub const IPV6_RECVFRAGSIZE: u32 = 77; -pub const IPV6_FREEBIND: u32 = 78; -pub const IPV6_MIN_MTU: u32 = 1280; -pub const IPV6_SRCRT_STRICT: u32 = 1; -pub const IPV6_SRCRT_TYPE_0: u32 = 0; -pub const IPV6_SRCRT_TYPE_2: u32 = 2; -pub const IPV6_SRCRT_TYPE_3: u32 = 3; -pub const IPV6_SRCRT_TYPE_4: u32 = 4; -pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; -pub const ADFS_SUPER_MAGIC: u32 = 44533; -pub const AFFS_SUPER_MAGIC: u32 = 44543; -pub const AFS_SUPER_MAGIC: u32 = 1397113167; -pub const AUTOFS_SUPER_MAGIC: u32 = 391; -pub const CEPH_SUPER_MAGIC: u32 = 12805120; -pub const CODA_SUPER_MAGIC: u32 = 1937076805; -pub const CRAMFS_MAGIC: u32 = 684539205; -pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; -pub const DEBUGFS_MAGIC: u32 = 1684170528; -pub const SECURITYFS_MAGIC: u32 = 1935894131; -pub const SELINUX_MAGIC: u32 = 4185718668; -pub const SMACK_MAGIC: u32 = 1128357203; -pub const RAMFS_MAGIC: u32 = 2240043254; -pub const TMPFS_MAGIC: u32 = 16914836; -pub const HUGETLBFS_MAGIC: u32 = 2508478710; -pub const SQUASHFS_MAGIC: u32 = 1936814952; -pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; -pub const EFS_SUPER_MAGIC: u32 = 4278867; -pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; -pub const EXT2_SUPER_MAGIC: u32 = 61267; -pub const EXT3_SUPER_MAGIC: u32 = 61267; -pub const XENFS_SUPER_MAGIC: u32 = 2881100148; -pub const EXT4_SUPER_MAGIC: u32 = 61267; -pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; -pub const NILFS_SUPER_MAGIC: u32 = 13364; -pub const F2FS_SUPER_MAGIC: u32 = 4076150800; -pub const HPFS_SUPER_MAGIC: u32 = 4187351113; -pub const ISOFS_SUPER_MAGIC: u32 = 38496; -pub const JFFS2_SUPER_MAGIC: u32 = 29366; -pub const XFS_SUPER_MAGIC: u32 = 1481003842; -pub const PSTOREFS_MAGIC: u32 = 1634035564; -pub const EFIVARFS_MAGIC: u32 = 3730735588; -pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; -pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; -pub const FUSE_SUPER_MAGIC: u32 = 1702057286; -pub const MINIX_SUPER_MAGIC: u32 = 4991; -pub const MINIX_SUPER_MAGIC2: u32 = 5007; -pub const MINIX2_SUPER_MAGIC: u32 = 9320; -pub const MINIX2_SUPER_MAGIC2: u32 = 9336; -pub const MINIX3_SUPER_MAGIC: u32 = 19802; -pub const MSDOS_SUPER_MAGIC: u32 = 19780; -pub const EXFAT_SUPER_MAGIC: u32 = 538032816; -pub const NCP_SUPER_MAGIC: u32 = 22092; -pub const NFS_SUPER_MAGIC: u32 = 26985; -pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; -pub const OPENPROM_SUPER_MAGIC: u32 = 40865; -pub const QNX4_SUPER_MAGIC: u32 = 47; -pub const QNX6_SUPER_MAGIC: u32 = 1746473250; -pub const AFS_FS_MAGIC: u32 = 1799439955; -pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; -pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0"; -pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0"; -pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0"; -pub const SMB_SUPER_MAGIC: u32 = 20859; -pub const CIFS_SUPER_MAGIC: u32 = 4283649346; -pub const SMB2_SUPER_MAGIC: u32 = 4266872130; -pub const CGROUP_SUPER_MAGIC: u32 = 2613483; -pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; -pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; -pub const STACK_END_MAGIC: u32 = 1470918301; -pub const TRACEFS_MAGIC: u32 = 1953653091; -pub const V9FS_MAGIC: u32 = 16914839; -pub const BDEVFS_MAGIC: u32 = 1650746742; -pub const DAXFS_MAGIC: u32 = 1684300152; -pub const BINFMTFS_MAGIC: u32 = 1112100429; -pub const DEVPTS_SUPER_MAGIC: u32 = 7377; -pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; -pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; -pub const PIPEFS_MAGIC: u32 = 1346981957; -pub const PROC_SUPER_MAGIC: u32 = 40864; -pub const SOCKFS_MAGIC: u32 = 1397703499; -pub const SYSFS_MAGIC: u32 = 1650812274; -pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; -pub const MTD_INODE_FS_MAGIC: u32 = 288389204; -pub const ANON_INODE_FS_MAGIC: u32 = 151263540; -pub const BTRFS_TEST_MAGIC: u32 = 1936880249; -pub const NSFS_MAGIC: u32 = 1853056627; -pub const BPF_FS_MAGIC: u32 = 3405662737; -pub const AAFS_MAGIC: u32 = 1513908720; -pub const ZONEFS_MAGIC: u32 = 1515144787; -pub const UDF_SUPER_MAGIC: u32 = 352400198; -pub const DMA_BUF_MAGIC: u32 = 1145913666; -pub const DEVMEM_MAGIC: u32 = 1162691661; -pub const SECRETMEM_MAGIC: u32 = 1397048141; -pub const PROT_READ: u32 = 1; -pub const PROT_WRITE: u32 = 2; -pub const PROT_EXEC: u32 = 4; -pub const PROT_SEM: u32 = 8; -pub const PROT_NONE: u32 = 0; -pub const PROT_GROWSDOWN: u32 = 16777216; -pub const PROT_GROWSUP: u32 = 33554432; -pub const MAP_TYPE: u32 = 15; -pub const MAP_FIXED: u32 = 16; -pub const MAP_ANONYMOUS: u32 = 32; -pub const MAP_POPULATE: u32 = 32768; -pub const MAP_NONBLOCK: u32 = 65536; -pub const MAP_STACK: u32 = 131072; -pub const MAP_HUGETLB: u32 = 262144; -pub const MAP_SYNC: u32 = 524288; -pub const MAP_FIXED_NOREPLACE: u32 = 1048576; -pub const MAP_UNINITIALIZED: u32 = 67108864; -pub const MLOCK_ONFAULT: u32 = 1; -pub const MS_ASYNC: u32 = 1; -pub const MS_INVALIDATE: u32 = 2; -pub const MS_SYNC: u32 = 4; -pub const MADV_NORMAL: u32 = 0; -pub const MADV_RANDOM: u32 = 1; -pub const MADV_SEQUENTIAL: u32 = 2; -pub const MADV_WILLNEED: u32 = 3; -pub const MADV_DONTNEED: u32 = 4; -pub const MADV_FREE: u32 = 8; -pub const MADV_REMOVE: u32 = 9; -pub const MADV_DONTFORK: u32 = 10; -pub const MADV_DOFORK: u32 = 11; -pub const MADV_HWPOISON: u32 = 100; -pub const MADV_SOFT_OFFLINE: u32 = 101; -pub const MADV_MERGEABLE: u32 = 12; -pub const MADV_UNMERGEABLE: u32 = 13; -pub const MADV_HUGEPAGE: u32 = 14; -pub const MADV_NOHUGEPAGE: u32 = 15; -pub const MADV_DONTDUMP: u32 = 16; -pub const MADV_DODUMP: u32 = 17; -pub const MADV_WIPEONFORK: u32 = 18; -pub const MADV_KEEPONFORK: u32 = 19; -pub const MADV_COLD: u32 = 20; -pub const MADV_PAGEOUT: u32 = 21; -pub const MADV_POPULATE_READ: u32 = 22; -pub const MADV_POPULATE_WRITE: u32 = 23; -pub const MADV_DONTNEED_LOCKED: u32 = 24; -pub const MADV_COLLAPSE: u32 = 25; -pub const MAP_FILE: u32 = 0; -pub const PKEY_DISABLE_ACCESS: u32 = 1; -pub const PKEY_DISABLE_WRITE: u32 = 2; -pub const PKEY_ACCESS_MASK: u32 = 3; -pub const MAP_GROWSDOWN: u32 = 256; -pub const MAP_DENYWRITE: u32 = 2048; -pub const MAP_EXECUTABLE: u32 = 4096; -pub const MAP_LOCKED: u32 = 8192; -pub const MAP_NORESERVE: u32 = 16384; -pub const MCL_CURRENT: u32 = 1; -pub const MCL_FUTURE: u32 = 2; -pub const MCL_ONFAULT: u32 = 4; -pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; -pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; -pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; -pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; -pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; -pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; -pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; -pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; -pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; -pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; -pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; -pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; -pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; -pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; -pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; -pub const MREMAP_MAYMOVE: u32 = 1; -pub const MREMAP_FIXED: u32 = 2; -pub const MREMAP_DONTUNMAP: u32 = 4; -pub const OVERCOMMIT_GUESS: u32 = 0; -pub const OVERCOMMIT_ALWAYS: u32 = 1; -pub const OVERCOMMIT_NEVER: u32 = 2; -pub const MAP_SHARED: u32 = 1; -pub const MAP_PRIVATE: u32 = 2; -pub const MAP_SHARED_VALIDATE: u32 = 3; -pub const MAP_HUGE_SHIFT: u32 = 26; -pub const MAP_HUGE_MASK: u32 = 63; -pub const MAP_HUGE_16KB: u32 = 939524096; -pub const MAP_HUGE_64KB: u32 = 1073741824; -pub const MAP_HUGE_512KB: u32 = 1275068416; -pub const MAP_HUGE_1MB: u32 = 1342177280; -pub const MAP_HUGE_2MB: u32 = 1409286144; -pub const MAP_HUGE_8MB: u32 = 1543503872; -pub const MAP_HUGE_16MB: u32 = 1610612736; -pub const MAP_HUGE_32MB: u32 = 1677721600; -pub const MAP_HUGE_256MB: u32 = 1879048192; -pub const MAP_HUGE_512MB: u32 = 1946157056; -pub const MAP_HUGE_1GB: u32 = 2013265920; -pub const MAP_HUGE_2GB: u32 = 2080374784; -pub const MAP_HUGE_16GB: u32 = 2281701376; -pub const SIOCGSTAMP_OLD: u32 = 35078; -pub const SIOCGSTAMPNS_OLD: u32 = 35079; -pub const SOL_SOCKET: u32 = 1; -pub const SO_DEBUG: u32 = 1; -pub const SO_REUSEADDR: u32 = 2; -pub const SO_TYPE: u32 = 3; -pub const SO_ERROR: u32 = 4; -pub const SO_DONTROUTE: u32 = 5; -pub const SO_BROADCAST: u32 = 6; -pub const SO_SNDBUF: u32 = 7; -pub const SO_RCVBUF: u32 = 8; -pub const SO_SNDBUFFORCE: u32 = 32; -pub const SO_RCVBUFFORCE: u32 = 33; -pub const SO_KEEPALIVE: u32 = 9; -pub const SO_OOBINLINE: u32 = 10; -pub const SO_NO_CHECK: u32 = 11; -pub const SO_PRIORITY: u32 = 12; -pub const SO_LINGER: u32 = 13; -pub const SO_BSDCOMPAT: u32 = 14; -pub const SO_REUSEPORT: u32 = 15; -pub const SO_PASSCRED: u32 = 16; -pub const SO_PEERCRED: u32 = 17; -pub const SO_RCVLOWAT: u32 = 18; -pub const SO_SNDLOWAT: u32 = 19; -pub const SO_RCVTIMEO_OLD: u32 = 20; -pub const SO_SNDTIMEO_OLD: u32 = 21; -pub const SO_SECURITY_AUTHENTICATION: u32 = 22; -pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; -pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; -pub const SO_BINDTODEVICE: u32 = 25; -pub const SO_ATTACH_FILTER: u32 = 26; -pub const SO_DETACH_FILTER: u32 = 27; -pub const SO_GET_FILTER: u32 = 26; -pub const SO_PEERNAME: u32 = 28; -pub const SO_ACCEPTCONN: u32 = 30; -pub const SO_PEERSEC: u32 = 31; -pub const SO_PASSSEC: u32 = 34; -pub const SO_MARK: u32 = 36; -pub const SO_PROTOCOL: u32 = 38; -pub const SO_DOMAIN: u32 = 39; -pub const SO_RXQ_OVFL: u32 = 40; -pub const SO_WIFI_STATUS: u32 = 41; -pub const SCM_WIFI_STATUS: u32 = 41; -pub const SO_PEEK_OFF: u32 = 42; -pub const SO_NOFCS: u32 = 43; -pub const SO_LOCK_FILTER: u32 = 44; -pub const SO_SELECT_ERR_QUEUE: u32 = 45; -pub const SO_BUSY_POLL: u32 = 46; -pub const SO_MAX_PACING_RATE: u32 = 47; -pub const SO_BPF_EXTENSIONS: u32 = 48; -pub const SO_INCOMING_CPU: u32 = 49; -pub const SO_ATTACH_BPF: u32 = 50; -pub const SO_DETACH_BPF: u32 = 27; -pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; -pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; -pub const SO_CNX_ADVICE: u32 = 53; -pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; -pub const SO_MEMINFO: u32 = 55; -pub const SO_INCOMING_NAPI_ID: u32 = 56; -pub const SO_COOKIE: u32 = 57; -pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; -pub const SO_PEERGROUPS: u32 = 59; -pub const SO_ZEROCOPY: u32 = 60; -pub const SO_TXTIME: u32 = 61; -pub const SCM_TXTIME: u32 = 61; -pub const SO_BINDTOIFINDEX: u32 = 62; -pub const SO_TIMESTAMP_OLD: u32 = 29; -pub const SO_TIMESTAMPNS_OLD: u32 = 35; -pub const SO_TIMESTAMPING_OLD: u32 = 37; -pub const SO_TIMESTAMP_NEW: u32 = 63; -pub const SO_TIMESTAMPNS_NEW: u32 = 64; -pub const SO_TIMESTAMPING_NEW: u32 = 65; -pub const SO_RCVTIMEO_NEW: u32 = 66; -pub const SO_SNDTIMEO_NEW: u32 = 67; -pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; -pub const SO_PREFER_BUSY_POLL: u32 = 69; -pub const SO_BUSY_POLL_BUDGET: u32 = 70; -pub const SO_NETNS_COOKIE: u32 = 71; -pub const SO_BUF_LOCK: u32 = 72; -pub const SO_RESERVE_MEM: u32 = 73; -pub const SO_TXREHASH: u32 = 74; -pub const SO_RCVMARK: u32 = 75; -pub const SO_TIMESTAMP: u32 = 29; -pub const SO_TIMESTAMPNS: u32 = 35; -pub const SO_TIMESTAMPING: u32 = 37; -pub const SO_RCVTIMEO: u32 = 20; -pub const SO_SNDTIMEO: u32 = 21; -pub const SCM_TIMESTAMP: u32 = 29; -pub const SCM_TIMESTAMPNS: u32 = 35; -pub const SCM_TIMESTAMPING: u32 = 37; -pub const SYS_SOCKET: u32 = 1; -pub const SYS_BIND: u32 = 2; -pub const SYS_CONNECT: u32 = 3; -pub const SYS_LISTEN: u32 = 4; -pub const SYS_ACCEPT: u32 = 5; -pub const SYS_GETSOCKNAME: u32 = 6; -pub const SYS_GETPEERNAME: u32 = 7; -pub const SYS_SOCKETPAIR: u32 = 8; -pub const SYS_SEND: u32 = 9; -pub const SYS_RECV: u32 = 10; -pub const SYS_SENDTO: u32 = 11; -pub const SYS_RECVFROM: u32 = 12; -pub const SYS_SHUTDOWN: u32 = 13; -pub const SYS_SETSOCKOPT: u32 = 14; -pub const SYS_GETSOCKOPT: u32 = 15; -pub const SYS_SENDMSG: u32 = 16; -pub const SYS_RECVMSG: u32 = 17; -pub const SYS_ACCEPT4: u32 = 18; -pub const SYS_RECVMMSG: u32 = 19; -pub const SYS_SENDMMSG: u32 = 20; -pub const __SO_ACCEPTCON: u32 = 65536; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const POLLWRNORM: u32 = 256; -pub const POLLWRBAND: u32 = 512; -pub const POLLMSG: u32 = 1024; -pub const POLLREMOVE: u32 = 4096; -pub const POLLRDHUP: u32 = 8192; -pub const PR_SET_PDEATHSIG: u32 = 1; -pub const PR_GET_PDEATHSIG: u32 = 2; -pub const PR_GET_DUMPABLE: u32 = 3; -pub const PR_SET_DUMPABLE: u32 = 4; -pub const PR_GET_UNALIGN: u32 = 5; -pub const PR_SET_UNALIGN: u32 = 6; -pub const PR_UNALIGN_NOPRINT: u32 = 1; -pub const PR_UNALIGN_SIGBUS: u32 = 2; -pub const PR_GET_KEEPCAPS: u32 = 7; -pub const PR_SET_KEEPCAPS: u32 = 8; -pub const PR_GET_FPEMU: u32 = 9; -pub const PR_SET_FPEMU: u32 = 10; -pub const PR_FPEMU_NOPRINT: u32 = 1; -pub const PR_FPEMU_SIGFPE: u32 = 2; -pub const PR_GET_FPEXC: u32 = 11; -pub const PR_SET_FPEXC: u32 = 12; -pub const PR_FP_EXC_SW_ENABLE: u32 = 128; -pub const PR_FP_EXC_DIV: u32 = 65536; -pub const PR_FP_EXC_OVF: u32 = 131072; -pub const PR_FP_EXC_UND: u32 = 262144; -pub const PR_FP_EXC_RES: u32 = 524288; -pub const PR_FP_EXC_INV: u32 = 1048576; -pub const PR_FP_EXC_DISABLED: u32 = 0; -pub const PR_FP_EXC_NONRECOV: u32 = 1; -pub const PR_FP_EXC_ASYNC: u32 = 2; -pub const PR_FP_EXC_PRECISE: u32 = 3; -pub const PR_GET_TIMING: u32 = 13; -pub const PR_SET_TIMING: u32 = 14; -pub const PR_TIMING_STATISTICAL: u32 = 0; -pub const PR_TIMING_TIMESTAMP: u32 = 1; -pub const PR_SET_NAME: u32 = 15; -pub const PR_GET_NAME: u32 = 16; -pub const PR_GET_ENDIAN: u32 = 19; -pub const PR_SET_ENDIAN: u32 = 20; -pub const PR_ENDIAN_BIG: u32 = 0; -pub const PR_ENDIAN_LITTLE: u32 = 1; -pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; -pub const PR_GET_SECCOMP: u32 = 21; -pub const PR_SET_SECCOMP: u32 = 22; -pub const PR_CAPBSET_READ: u32 = 23; -pub const PR_CAPBSET_DROP: u32 = 24; -pub const PR_GET_TSC: u32 = 25; -pub const PR_SET_TSC: u32 = 26; -pub const PR_TSC_ENABLE: u32 = 1; -pub const PR_TSC_SIGSEGV: u32 = 2; -pub const PR_GET_SECUREBITS: u32 = 27; -pub const PR_SET_SECUREBITS: u32 = 28; -pub const PR_SET_TIMERSLACK: u32 = 29; -pub const PR_GET_TIMERSLACK: u32 = 30; -pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; -pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; -pub const PR_MCE_KILL: u32 = 33; -pub const PR_MCE_KILL_CLEAR: u32 = 0; -pub const PR_MCE_KILL_SET: u32 = 1; -pub const PR_MCE_KILL_LATE: u32 = 0; -pub const PR_MCE_KILL_EARLY: u32 = 1; -pub const PR_MCE_KILL_DEFAULT: u32 = 2; -pub const PR_MCE_KILL_GET: u32 = 34; -pub const PR_SET_MM: u32 = 35; -pub const PR_SET_MM_START_CODE: u32 = 1; -pub const PR_SET_MM_END_CODE: u32 = 2; -pub const PR_SET_MM_START_DATA: u32 = 3; -pub const PR_SET_MM_END_DATA: u32 = 4; -pub const PR_SET_MM_START_STACK: u32 = 5; -pub const PR_SET_MM_START_BRK: u32 = 6; -pub const PR_SET_MM_BRK: u32 = 7; -pub const PR_SET_MM_ARG_START: u32 = 8; -pub const PR_SET_MM_ARG_END: u32 = 9; -pub const PR_SET_MM_ENV_START: u32 = 10; -pub const PR_SET_MM_ENV_END: u32 = 11; -pub const PR_SET_MM_AUXV: u32 = 12; -pub const PR_SET_MM_EXE_FILE: u32 = 13; -pub const PR_SET_MM_MAP: u32 = 14; -pub const PR_SET_MM_MAP_SIZE: u32 = 15; -pub const PR_SET_PTRACER: u32 = 1499557217; -pub const PR_SET_CHILD_SUBREAPER: u32 = 36; -pub const PR_GET_CHILD_SUBREAPER: u32 = 37; -pub const PR_SET_NO_NEW_PRIVS: u32 = 38; -pub const PR_GET_NO_NEW_PRIVS: u32 = 39; -pub const PR_GET_TID_ADDRESS: u32 = 40; -pub const PR_SET_THP_DISABLE: u32 = 41; -pub const PR_GET_THP_DISABLE: u32 = 42; -pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; -pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; -pub const PR_SET_FP_MODE: u32 = 45; -pub const PR_GET_FP_MODE: u32 = 46; -pub const PR_FP_MODE_FR: u32 = 1; -pub const PR_FP_MODE_FRE: u32 = 2; -pub const PR_CAP_AMBIENT: u32 = 47; -pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; -pub const PR_CAP_AMBIENT_RAISE: u32 = 2; -pub const PR_CAP_AMBIENT_LOWER: u32 = 3; -pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; -pub const PR_SVE_SET_VL: u32 = 50; -pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SVE_GET_VL: u32 = 51; -pub const PR_SVE_VL_LEN_MASK: u32 = 65535; -pub const PR_SVE_VL_INHERIT: u32 = 131072; -pub const PR_GET_SPECULATION_CTRL: u32 = 52; -pub const PR_SET_SPECULATION_CTRL: u32 = 53; -pub const PR_SPEC_STORE_BYPASS: u32 = 0; -pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; -pub const PR_SPEC_L1D_FLUSH: u32 = 2; -pub const PR_SPEC_NOT_AFFECTED: u32 = 0; -pub const PR_SPEC_PRCTL: u32 = 1; -pub const PR_SPEC_ENABLE: u32 = 2; -pub const PR_SPEC_DISABLE: u32 = 4; -pub const PR_SPEC_FORCE_DISABLE: u32 = 8; -pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; -pub const PR_PAC_RESET_KEYS: u32 = 54; -pub const PR_PAC_APIAKEY: u32 = 1; -pub const PR_PAC_APIBKEY: u32 = 2; -pub const PR_PAC_APDAKEY: u32 = 4; -pub const PR_PAC_APDBKEY: u32 = 8; -pub const PR_PAC_APGAKEY: u32 = 16; -pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; -pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; -pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; -pub const PR_MTE_TCF_NONE: u32 = 0; -pub const PR_MTE_TCF_SYNC: u32 = 2; -pub const PR_MTE_TCF_ASYNC: u32 = 4; -pub const PR_MTE_TCF_MASK: u32 = 6; -pub const PR_MTE_TAG_SHIFT: u32 = 3; -pub const PR_MTE_TAG_MASK: u32 = 524280; -pub const PR_MTE_TCF_SHIFT: u32 = 1; -pub const PR_SET_IO_FLUSHER: u32 = 57; -pub const PR_GET_IO_FLUSHER: u32 = 58; -pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; -pub const PR_SYS_DISPATCH_OFF: u32 = 0; -pub const PR_SYS_DISPATCH_ON: u32 = 1; -pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; -pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; -pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; -pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; -pub const PR_SCHED_CORE: u32 = 62; -pub const PR_SCHED_CORE_GET: u32 = 0; -pub const PR_SCHED_CORE_CREATE: u32 = 1; -pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; -pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; -pub const PR_SCHED_CORE_MAX: u32 = 4; -pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; -pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; -pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; -pub const PR_SME_SET_VL: u32 = 63; -pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SME_GET_VL: u32 = 64; -pub const PR_SME_VL_LEN_MASK: u32 = 65535; -pub const PR_SME_VL_INHERIT: u32 = 131072; -pub const PR_SET_MDWE: u32 = 65; -pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; -pub const PR_GET_MDWE: u32 = 66; -pub const PR_SET_VMA: u32 = 1398164801; -pub const PR_SET_VMA_ANON_NAME: u32 = 0; -pub const GRND_NONBLOCK: u32 = 1; -pub const GRND_RANDOM: u32 = 2; -pub const GRND_INSECURE: u32 = 4; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -pub const CLOCK_REALTIME: u32 = 0; -pub const CLOCK_MONOTONIC: u32 = 1; -pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; -pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; -pub const CLOCK_MONOTONIC_RAW: u32 = 4; -pub const CLOCK_REALTIME_COARSE: u32 = 5; -pub const CLOCK_MONOTONIC_COARSE: u32 = 6; -pub const CLOCK_BOOTTIME: u32 = 7; -pub const CLOCK_REALTIME_ALARM: u32 = 8; -pub const CLOCK_BOOTTIME_ALARM: u32 = 9; -pub const CLOCK_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const RUSAGE_SELF: u32 = 0; -pub const RUSAGE_CHILDREN: i32 = -1; -pub const RUSAGE_BOTH: i32 = -2; -pub const RUSAGE_THREAD: u32 = 1; -pub const RLIM64_INFINITY: i32 = -1; -pub const PRIO_MIN: i32 = -20; -pub const PRIO_MAX: u32 = 20; -pub const PRIO_PROCESS: u32 = 0; -pub const PRIO_PGRP: u32 = 1; -pub const PRIO_USER: u32 = 2; -pub const _STK_LIM: u32 = 8388608; -pub const MLOCK_LIMIT: u32 = 8388608; -pub const RLIMIT_CPU: u32 = 0; -pub const RLIMIT_FSIZE: u32 = 1; -pub const RLIMIT_DATA: u32 = 2; -pub const RLIMIT_STACK: u32 = 3; -pub const RLIMIT_CORE: u32 = 4; -pub const RLIMIT_RSS: u32 = 5; -pub const RLIMIT_NPROC: u32 = 6; -pub const RLIMIT_NOFILE: u32 = 7; -pub const RLIMIT_MEMLOCK: u32 = 8; -pub const RLIMIT_AS: u32 = 9; -pub const RLIMIT_LOCKS: u32 = 10; -pub const RLIMIT_SIGPENDING: u32 = 11; -pub const RLIMIT_MSGQUEUE: u32 = 12; -pub const RLIMIT_NICE: u32 = 13; -pub const RLIMIT_RTPRIO: u32 = 14; -pub const RLIMIT_RTTIME: u32 = 15; -pub const RLIM_NLIMITS: u32 = 16; -pub const RLIM_INFINITY: i32 = -1; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const NSIG: u32 = 32; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGBUS: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGUSR1: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGUSR2: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGSTKFLT: u32 = 16; -pub const SIGCHLD: u32 = 17; -pub const SIGCONT: u32 = 18; -pub const SIGSTOP: u32 = 19; -pub const SIGTSTP: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGURG: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGIO: u32 = 29; -pub const SIGPOLL: u32 = 29; -pub const SIGPWR: u32 = 30; -pub const SIGSYS: u32 = 31; -pub const SIGUNUSED: u32 = 31; -pub const SIGRTMIN: u32 = 32; -pub const SA_RESTORER: u32 = 67108864; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; -pub const SA_NOCLDSTOP: u32 = 1; -pub const SA_NOCLDWAIT: u32 = 2; -pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; -pub const SA_ONSTACK: u32 = 134217728; -pub const SA_RESTART: u32 = 268435456; -pub const SA_NODEFER: u32 = 1073741824; -pub const SA_RESETHAND: u32 = 2147483648; -pub const SA_NOMASK: u32 = 1073741824; -pub const SA_ONESHOT: u32 = 2147483648; -pub const SIG_BLOCK: u32 = 0; -pub const SIG_UNBLOCK: u32 = 1; -pub const SIG_SETMASK: u32 = 2; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; -pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const S_IFMT: u32 = 61440; -pub const S_IFSOCK: u32 = 49152; -pub const S_IFLNK: u32 = 40960; -pub const S_IFREG: u32 = 32768; -pub const S_IFBLK: u32 = 24576; -pub const S_IFDIR: u32 = 16384; -pub const S_IFCHR: u32 = 8192; -pub const S_IFIFO: u32 = 4096; -pub const S_ISUID: u32 = 2048; -pub const S_ISGID: u32 = 1024; -pub const S_ISVTX: u32 = 512; -pub const S_IRWXU: u32 = 448; -pub const S_IRUSR: u32 = 256; -pub const S_IWUSR: u32 = 128; -pub const S_IXUSR: u32 = 64; -pub const S_IRWXG: u32 = 56; -pub const S_IRGRP: u32 = 32; -pub const S_IWGRP: u32 = 16; -pub const S_IXGRP: u32 = 8; -pub const S_IRWXO: u32 = 7; -pub const S_IROTH: u32 = 4; -pub const S_IWOTH: u32 = 2; -pub const S_IXOTH: u32 = 1; -pub const STATX_TYPE: u32 = 1; -pub const STATX_MODE: u32 = 2; -pub const STATX_NLINK: u32 = 4; -pub const STATX_UID: u32 = 8; -pub const STATX_GID: u32 = 16; -pub const STATX_ATIME: u32 = 32; -pub const STATX_MTIME: u32 = 64; -pub const STATX_CTIME: u32 = 128; -pub const STATX_INO: u32 = 256; -pub const STATX_SIZE: u32 = 512; -pub const STATX_BLOCKS: u32 = 1024; -pub const STATX_BASIC_STATS: u32 = 2047; -pub const STATX_BTIME: u32 = 2048; -pub const STATX_MNT_ID: u32 = 4096; -pub const STATX_DIOALIGN: u32 = 8192; -pub const STATX__RESERVED: u32 = 2147483648; -pub const STATX_ALL: u32 = 4095; -pub const STATX_ATTR_COMPRESSED: u32 = 4; -pub const STATX_ATTR_IMMUTABLE: u32 = 16; -pub const STATX_ATTR_APPEND: u32 = 32; -pub const STATX_ATTR_NODUMP: u32 = 64; -pub const STATX_ATTR_ENCRYPTED: u32 = 2048; -pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; -pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; -pub const STATX_ATTR_VERITY: u32 = 1048576; -pub const STATX_ATTR_DAX: u32 = 2097152; -pub const SI_LOAD_SHIFT: u32 = 16; -pub const TCP_MSS_DEFAULT: u32 = 536; -pub const TCP_MSS_DESIRED: u32 = 1220; -pub const TCP_NODELAY: u32 = 1; -pub const TCP_MAXSEG: u32 = 2; -pub const TCP_CORK: u32 = 3; -pub const TCP_KEEPIDLE: u32 = 4; -pub const TCP_KEEPINTVL: u32 = 5; -pub const TCP_KEEPCNT: u32 = 6; -pub const TCP_SYNCNT: u32 = 7; -pub const TCP_LINGER2: u32 = 8; -pub const TCP_DEFER_ACCEPT: u32 = 9; -pub const TCP_WINDOW_CLAMP: u32 = 10; -pub const TCP_INFO: u32 = 11; -pub const TCP_QUICKACK: u32 = 12; -pub const TCP_CONGESTION: u32 = 13; -pub const TCP_MD5SIG: u32 = 14; -pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; -pub const TCP_THIN_DUPACK: u32 = 17; -pub const TCP_USER_TIMEOUT: u32 = 18; -pub const TCP_REPAIR: u32 = 19; -pub const TCP_REPAIR_QUEUE: u32 = 20; -pub const TCP_QUEUE_SEQ: u32 = 21; -pub const TCP_REPAIR_OPTIONS: u32 = 22; -pub const TCP_FASTOPEN: u32 = 23; -pub const TCP_TIMESTAMP: u32 = 24; -pub const TCP_NOTSENT_LOWAT: u32 = 25; -pub const TCP_CC_INFO: u32 = 26; -pub const TCP_SAVE_SYN: u32 = 27; -pub const TCP_SAVED_SYN: u32 = 28; -pub const TCP_REPAIR_WINDOW: u32 = 29; -pub const TCP_FASTOPEN_CONNECT: u32 = 30; -pub const TCP_ULP: u32 = 31; -pub const TCP_MD5SIG_EXT: u32 = 32; -pub const TCP_FASTOPEN_KEY: u32 = 33; -pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; -pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; -pub const TCP_INQ: u32 = 36; -pub const TCP_CM_INQ: u32 = 36; -pub const TCP_TX_DELAY: u32 = 37; -pub const TCP_REPAIR_ON: u32 = 1; -pub const TCP_REPAIR_OFF: u32 = 0; -pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; -pub const TCPI_OPT_TIMESTAMPS: u32 = 1; -pub const TCPI_OPT_SACK: u32 = 2; -pub const TCPI_OPT_WSCALE: u32 = 4; -pub const TCPI_OPT_ECN: u32 = 8; -pub const TCPI_OPT_ECN_SEEN: u32 = 16; -pub const TCPI_OPT_SYN_DATA: u32 = 32; -pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; -pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; -pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; -pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; -pub const IGNBRK: u32 = 1; -pub const BRKINT: u32 = 2; -pub const IGNPAR: u32 = 4; -pub const PARMRK: u32 = 8; -pub const INPCK: u32 = 16; -pub const ISTRIP: u32 = 32; -pub const INLCR: u32 = 64; -pub const IGNCR: u32 = 128; -pub const ICRNL: u32 = 256; -pub const IXANY: u32 = 2048; -pub const OPOST: u32 = 1; -pub const OCRNL: u32 = 8; -pub const ONOCR: u32 = 16; -pub const ONLRET: u32 = 32; -pub const OFILL: u32 = 64; -pub const OFDEL: u32 = 128; -pub const B0: u32 = 0; -pub const B50: u32 = 1; -pub const B75: u32 = 2; -pub const B110: u32 = 3; -pub const B134: u32 = 4; -pub const B150: u32 = 5; -pub const B200: u32 = 6; -pub const B300: u32 = 7; -pub const B600: u32 = 8; -pub const B1200: u32 = 9; -pub const B1800: u32 = 10; -pub const B2400: u32 = 11; -pub const B4800: u32 = 12; -pub const B9600: u32 = 13; -pub const B19200: u32 = 14; -pub const B38400: u32 = 15; -pub const EXTA: u32 = 14; -pub const EXTB: u32 = 15; -pub const ADDRB: u32 = 536870912; -pub const CMSPAR: u32 = 1073741824; -pub const CRTSCTS: u32 = 2147483648; -pub const IBSHIFT: u32 = 16; -pub const TCOOFF: u32 = 0; -pub const TCOON: u32 = 1; -pub const TCIOFF: u32 = 2; -pub const TCION: u32 = 3; -pub const TCIFLUSH: u32 = 0; -pub const TCOFLUSH: u32 = 1; -pub const TCIOFLUSH: u32 = 2; -pub const NCCS: u32 = 19; -pub const VINTR: u32 = 0; -pub const VQUIT: u32 = 1; -pub const VERASE: u32 = 2; -pub const VKILL: u32 = 3; -pub const VEOF: u32 = 4; -pub const VTIME: u32 = 5; -pub const VMIN: u32 = 6; -pub const VSWTC: u32 = 7; -pub const VSTART: u32 = 8; -pub const VSTOP: u32 = 9; -pub const VSUSP: u32 = 10; -pub const VEOL: u32 = 11; -pub const VREPRINT: u32 = 12; -pub const VDISCARD: u32 = 13; -pub const VWERASE: u32 = 14; -pub const VLNEXT: u32 = 15; -pub const VEOL2: u32 = 16; -pub const IUCLC: u32 = 512; -pub const IXON: u32 = 1024; -pub const IXOFF: u32 = 4096; -pub const IMAXBEL: u32 = 8192; -pub const IUTF8: u32 = 16384; -pub const OLCUC: u32 = 2; -pub const ONLCR: u32 = 4; -pub const NLDLY: u32 = 256; -pub const NL0: u32 = 0; -pub const NL1: u32 = 256; -pub const CRDLY: u32 = 1536; -pub const CR0: u32 = 0; -pub const CR1: u32 = 512; -pub const CR2: u32 = 1024; -pub const CR3: u32 = 1536; -pub const TABDLY: u32 = 6144; -pub const TAB0: u32 = 0; -pub const TAB1: u32 = 2048; -pub const TAB2: u32 = 4096; -pub const TAB3: u32 = 6144; -pub const XTABS: u32 = 6144; -pub const BSDLY: u32 = 8192; -pub const BS0: u32 = 0; -pub const BS1: u32 = 8192; -pub const VTDLY: u32 = 16384; -pub const VT0: u32 = 0; -pub const VT1: u32 = 16384; -pub const FFDLY: u32 = 32768; -pub const FF0: u32 = 0; -pub const FF1: u32 = 32768; -pub const CBAUD: u32 = 4111; -pub const CSIZE: u32 = 48; -pub const CS5: u32 = 0; -pub const CS6: u32 = 16; -pub const CS7: u32 = 32; -pub const CS8: u32 = 48; -pub const CSTOPB: u32 = 64; -pub const CREAD: u32 = 128; -pub const PARENB: u32 = 256; -pub const PARODD: u32 = 512; -pub const HUPCL: u32 = 1024; -pub const CLOCAL: u32 = 2048; -pub const CBAUDEX: u32 = 4096; -pub const BOTHER: u32 = 4096; -pub const B57600: u32 = 4097; -pub const B115200: u32 = 4098; -pub const B230400: u32 = 4099; -pub const B460800: u32 = 4100; -pub const B500000: u32 = 4101; -pub const B576000: u32 = 4102; -pub const B921600: u32 = 4103; -pub const B1000000: u32 = 4104; -pub const B1152000: u32 = 4105; -pub const B1500000: u32 = 4106; -pub const B2000000: u32 = 4107; -pub const B2500000: u32 = 4108; -pub const B3000000: u32 = 4109; -pub const B3500000: u32 = 4110; -pub const B4000000: u32 = 4111; -pub const CIBAUD: u32 = 269418496; -pub const ISIG: u32 = 1; -pub const ICANON: u32 = 2; -pub const XCASE: u32 = 4; -pub const ECHO: u32 = 8; -pub const ECHOE: u32 = 16; -pub const ECHOK: u32 = 32; -pub const ECHONL: u32 = 64; -pub const NOFLSH: u32 = 128; -pub const TOSTOP: u32 = 256; -pub const ECHOCTL: u32 = 512; -pub const ECHOPRT: u32 = 1024; -pub const ECHOKE: u32 = 2048; -pub const FLUSHO: u32 = 4096; -pub const PENDIN: u32 = 16384; -pub const IEXTEN: u32 = 32768; -pub const EXTPROC: u32 = 65536; -pub const TCSANOW: u32 = 0; -pub const TCSADRAIN: u32 = 1; -pub const TCSAFLUSH: u32 = 2; -pub const TIOCPKT_DATA: u32 = 0; -pub const TIOCPKT_FLUSHREAD: u32 = 1; -pub const TIOCPKT_FLUSHWRITE: u32 = 2; -pub const TIOCPKT_STOP: u32 = 4; -pub const TIOCPKT_START: u32 = 8; -pub const TIOCPKT_NOSTOP: u32 = 16; -pub const TIOCPKT_DOSTOP: u32 = 32; -pub const TIOCPKT_IOCTL: u32 = 64; -pub const TIOCSER_TEMT: u32 = 1; -pub const NCC: u32 = 8; -pub const TIOCM_LE: u32 = 1; -pub const TIOCM_DTR: u32 = 2; -pub const TIOCM_RTS: u32 = 4; -pub const TIOCM_ST: u32 = 8; -pub const TIOCM_SR: u32 = 16; -pub const TIOCM_CTS: u32 = 32; -pub const TIOCM_CAR: u32 = 64; -pub const TIOCM_RNG: u32 = 128; -pub const TIOCM_DSR: u32 = 256; -pub const TIOCM_CD: u32 = 64; -pub const TIOCM_RI: u32 = 128; -pub const TIOCM_OUT1: u32 = 8192; -pub const TIOCM_OUT2: u32 = 16384; -pub const TIOCM_LOOP: u32 = 32768; -pub const UIO_FASTIOV: u32 = 8; -pub const UIO_MAXIOV: u32 = 1024; -pub const UNIX_PATH_MAX: u32 = 108; -pub const __NR_exit: u32 = 1; -pub const __NR_fork: u32 = 2; -pub const __NR_read: u32 = 3; -pub const __NR_write: u32 = 4; -pub const __NR_open: u32 = 5; -pub const __NR_close: u32 = 6; -pub const __NR_restart_syscall: u32 = 7; -pub const __NR_creat: u32 = 8; -pub const __NR_link: u32 = 9; -pub const __NR_unlink: u32 = 10; -pub const __NR_execve: u32 = 11; -pub const __NR_chdir: u32 = 12; -pub const __NR_mknod: u32 = 14; -pub const __NR_chmod: u32 = 15; -pub const __NR_lseek: u32 = 19; -pub const __NR_getpid: u32 = 20; -pub const __NR_mount: u32 = 21; -pub const __NR_umount: u32 = 22; -pub const __NR_ptrace: u32 = 26; -pub const __NR_alarm: u32 = 27; -pub const __NR_pause: u32 = 29; -pub const __NR_utime: u32 = 30; -pub const __NR_access: u32 = 33; -pub const __NR_nice: u32 = 34; -pub const __NR_sync: u32 = 36; -pub const __NR_kill: u32 = 37; -pub const __NR_rename: u32 = 38; -pub const __NR_mkdir: u32 = 39; -pub const __NR_rmdir: u32 = 40; -pub const __NR_dup: u32 = 41; -pub const __NR_pipe: u32 = 42; -pub const __NR_times: u32 = 43; -pub const __NR_brk: u32 = 45; -pub const __NR_signal: u32 = 48; -pub const __NR_acct: u32 = 51; -pub const __NR_umount2: u32 = 52; -pub const __NR_ioctl: u32 = 54; -pub const __NR_fcntl: u32 = 55; -pub const __NR_setpgid: u32 = 57; -pub const __NR_umask: u32 = 60; -pub const __NR_chroot: u32 = 61; -pub const __NR_ustat: u32 = 62; -pub const __NR_dup2: u32 = 63; -pub const __NR_getppid: u32 = 64; -pub const __NR_getpgrp: u32 = 65; -pub const __NR_setsid: u32 = 66; -pub const __NR_sigaction: u32 = 67; -pub const __NR_sigsuspend: u32 = 72; -pub const __NR_sigpending: u32 = 73; -pub const __NR_sethostname: u32 = 74; -pub const __NR_setrlimit: u32 = 75; -pub const __NR_getrusage: u32 = 77; -pub const __NR_gettimeofday: u32 = 78; -pub const __NR_settimeofday: u32 = 79; -pub const __NR_symlink: u32 = 83; -pub const __NR_readlink: u32 = 85; -pub const __NR_uselib: u32 = 86; -pub const __NR_swapon: u32 = 87; -pub const __NR_reboot: u32 = 88; -pub const __NR_readdir: u32 = 89; -pub const __NR_mmap: u32 = 90; -pub const __NR_munmap: u32 = 91; -pub const __NR_truncate: u32 = 92; -pub const __NR_ftruncate: u32 = 93; -pub const __NR_fchmod: u32 = 94; -pub const __NR_getpriority: u32 = 96; -pub const __NR_setpriority: u32 = 97; -pub const __NR_statfs: u32 = 99; -pub const __NR_fstatfs: u32 = 100; -pub const __NR_socketcall: u32 = 102; -pub const __NR_syslog: u32 = 103; -pub const __NR_setitimer: u32 = 104; -pub const __NR_getitimer: u32 = 105; -pub const __NR_stat: u32 = 106; -pub const __NR_lstat: u32 = 107; -pub const __NR_fstat: u32 = 108; -pub const __NR_lookup_dcookie: u32 = 110; -pub const __NR_vhangup: u32 = 111; -pub const __NR_idle: u32 = 112; -pub const __NR_wait4: u32 = 114; -pub const __NR_swapoff: u32 = 115; -pub const __NR_sysinfo: u32 = 116; -pub const __NR_ipc: u32 = 117; -pub const __NR_fsync: u32 = 118; -pub const __NR_sigreturn: u32 = 119; -pub const __NR_clone: u32 = 120; -pub const __NR_setdomainname: u32 = 121; -pub const __NR_uname: u32 = 122; -pub const __NR_adjtimex: u32 = 124; -pub const __NR_mprotect: u32 = 125; -pub const __NR_sigprocmask: u32 = 126; -pub const __NR_create_module: u32 = 127; -pub const __NR_init_module: u32 = 128; -pub const __NR_delete_module: u32 = 129; -pub const __NR_get_kernel_syms: u32 = 130; -pub const __NR_quotactl: u32 = 131; -pub const __NR_getpgid: u32 = 132; -pub const __NR_fchdir: u32 = 133; -pub const __NR_bdflush: u32 = 134; -pub const __NR_sysfs: u32 = 135; -pub const __NR_personality: u32 = 136; -pub const __NR_afs_syscall: u32 = 137; -pub const __NR_getdents: u32 = 141; -pub const __NR_select: u32 = 142; -pub const __NR_flock: u32 = 143; -pub const __NR_msync: u32 = 144; -pub const __NR_readv: u32 = 145; -pub const __NR_writev: u32 = 146; -pub const __NR_getsid: u32 = 147; -pub const __NR_fdatasync: u32 = 148; -pub const __NR__sysctl: u32 = 149; -pub const __NR_mlock: u32 = 150; -pub const __NR_munlock: u32 = 151; -pub const __NR_mlockall: u32 = 152; -pub const __NR_munlockall: u32 = 153; -pub const __NR_sched_setparam: u32 = 154; -pub const __NR_sched_getparam: u32 = 155; -pub const __NR_sched_setscheduler: u32 = 156; -pub const __NR_sched_getscheduler: u32 = 157; -pub const __NR_sched_yield: u32 = 158; -pub const __NR_sched_get_priority_max: u32 = 159; -pub const __NR_sched_get_priority_min: u32 = 160; -pub const __NR_sched_rr_get_interval: u32 = 161; -pub const __NR_nanosleep: u32 = 162; -pub const __NR_mremap: u32 = 163; -pub const __NR_query_module: u32 = 167; -pub const __NR_poll: u32 = 168; -pub const __NR_nfsservctl: u32 = 169; -pub const __NR_prctl: u32 = 172; -pub const __NR_rt_sigreturn: u32 = 173; -pub const __NR_rt_sigaction: u32 = 174; -pub const __NR_rt_sigprocmask: u32 = 175; -pub const __NR_rt_sigpending: u32 = 176; -pub const __NR_rt_sigtimedwait: u32 = 177; -pub const __NR_rt_sigqueueinfo: u32 = 178; -pub const __NR_rt_sigsuspend: u32 = 179; -pub const __NR_pread64: u32 = 180; -pub const __NR_pwrite64: u32 = 181; -pub const __NR_getcwd: u32 = 183; -pub const __NR_capget: u32 = 184; -pub const __NR_capset: u32 = 185; -pub const __NR_sigaltstack: u32 = 186; -pub const __NR_sendfile: u32 = 187; -pub const __NR_getpmsg: u32 = 188; -pub const __NR_putpmsg: u32 = 189; -pub const __NR_vfork: u32 = 190; -pub const __NR_getrlimit: u32 = 191; -pub const __NR_lchown: u32 = 198; -pub const __NR_getuid: u32 = 199; -pub const __NR_getgid: u32 = 200; -pub const __NR_geteuid: u32 = 201; -pub const __NR_getegid: u32 = 202; -pub const __NR_setreuid: u32 = 203; -pub const __NR_setregid: u32 = 204; -pub const __NR_getgroups: u32 = 205; -pub const __NR_setgroups: u32 = 206; -pub const __NR_fchown: u32 = 207; -pub const __NR_setresuid: u32 = 208; -pub const __NR_getresuid: u32 = 209; -pub const __NR_setresgid: u32 = 210; -pub const __NR_getresgid: u32 = 211; -pub const __NR_chown: u32 = 212; -pub const __NR_setuid: u32 = 213; -pub const __NR_setgid: u32 = 214; -pub const __NR_setfsuid: u32 = 215; -pub const __NR_setfsgid: u32 = 216; -pub const __NR_pivot_root: u32 = 217; -pub const __NR_mincore: u32 = 218; -pub const __NR_madvise: u32 = 219; -pub const __NR_getdents64: u32 = 220; -pub const __NR_readahead: u32 = 222; -pub const __NR_setxattr: u32 = 224; -pub const __NR_lsetxattr: u32 = 225; -pub const __NR_fsetxattr: u32 = 226; -pub const __NR_getxattr: u32 = 227; -pub const __NR_lgetxattr: u32 = 228; -pub const __NR_fgetxattr: u32 = 229; -pub const __NR_listxattr: u32 = 230; -pub const __NR_llistxattr: u32 = 231; -pub const __NR_flistxattr: u32 = 232; -pub const __NR_removexattr: u32 = 233; -pub const __NR_lremovexattr: u32 = 234; -pub const __NR_fremovexattr: u32 = 235; -pub const __NR_gettid: u32 = 236; -pub const __NR_tkill: u32 = 237; -pub const __NR_futex: u32 = 238; -pub const __NR_sched_setaffinity: u32 = 239; -pub const __NR_sched_getaffinity: u32 = 240; -pub const __NR_tgkill: u32 = 241; -pub const __NR_io_setup: u32 = 243; -pub const __NR_io_destroy: u32 = 244; -pub const __NR_io_getevents: u32 = 245; -pub const __NR_io_submit: u32 = 246; -pub const __NR_io_cancel: u32 = 247; -pub const __NR_exit_group: u32 = 248; -pub const __NR_epoll_create: u32 = 249; -pub const __NR_epoll_ctl: u32 = 250; -pub const __NR_epoll_wait: u32 = 251; -pub const __NR_set_tid_address: u32 = 252; -pub const __NR_fadvise64: u32 = 253; -pub const __NR_timer_create: u32 = 254; -pub const __NR_timer_settime: u32 = 255; -pub const __NR_timer_gettime: u32 = 256; -pub const __NR_timer_getoverrun: u32 = 257; -pub const __NR_timer_delete: u32 = 258; -pub const __NR_clock_settime: u32 = 259; -pub const __NR_clock_gettime: u32 = 260; -pub const __NR_clock_getres: u32 = 261; -pub const __NR_clock_nanosleep: u32 = 262; -pub const __NR_statfs64: u32 = 265; -pub const __NR_fstatfs64: u32 = 266; -pub const __NR_remap_file_pages: u32 = 267; -pub const __NR_mbind: u32 = 268; -pub const __NR_get_mempolicy: u32 = 269; -pub const __NR_set_mempolicy: u32 = 270; -pub const __NR_mq_open: u32 = 271; -pub const __NR_mq_unlink: u32 = 272; -pub const __NR_mq_timedsend: u32 = 273; -pub const __NR_mq_timedreceive: u32 = 274; -pub const __NR_mq_notify: u32 = 275; -pub const __NR_mq_getsetattr: u32 = 276; -pub const __NR_kexec_load: u32 = 277; -pub const __NR_add_key: u32 = 278; -pub const __NR_request_key: u32 = 279; -pub const __NR_keyctl: u32 = 280; -pub const __NR_waitid: u32 = 281; -pub const __NR_ioprio_set: u32 = 282; -pub const __NR_ioprio_get: u32 = 283; -pub const __NR_inotify_init: u32 = 284; -pub const __NR_inotify_add_watch: u32 = 285; -pub const __NR_inotify_rm_watch: u32 = 286; -pub const __NR_migrate_pages: u32 = 287; -pub const __NR_openat: u32 = 288; -pub const __NR_mkdirat: u32 = 289; -pub const __NR_mknodat: u32 = 290; -pub const __NR_fchownat: u32 = 291; -pub const __NR_futimesat: u32 = 292; -pub const __NR_newfstatat: u32 = 293; -pub const __NR_unlinkat: u32 = 294; -pub const __NR_renameat: u32 = 295; -pub const __NR_linkat: u32 = 296; -pub const __NR_symlinkat: u32 = 297; -pub const __NR_readlinkat: u32 = 298; -pub const __NR_fchmodat: u32 = 299; -pub const __NR_faccessat: u32 = 300; -pub const __NR_pselect6: u32 = 301; -pub const __NR_ppoll: u32 = 302; -pub const __NR_unshare: u32 = 303; -pub const __NR_set_robust_list: u32 = 304; -pub const __NR_get_robust_list: u32 = 305; -pub const __NR_splice: u32 = 306; -pub const __NR_sync_file_range: u32 = 307; -pub const __NR_tee: u32 = 308; -pub const __NR_vmsplice: u32 = 309; -pub const __NR_move_pages: u32 = 310; -pub const __NR_getcpu: u32 = 311; -pub const __NR_epoll_pwait: u32 = 312; -pub const __NR_utimes: u32 = 313; -pub const __NR_fallocate: u32 = 314; -pub const __NR_utimensat: u32 = 315; -pub const __NR_signalfd: u32 = 316; -pub const __NR_timerfd: u32 = 317; -pub const __NR_eventfd: u32 = 318; -pub const __NR_timerfd_create: u32 = 319; -pub const __NR_timerfd_settime: u32 = 320; -pub const __NR_timerfd_gettime: u32 = 321; -pub const __NR_signalfd4: u32 = 322; -pub const __NR_eventfd2: u32 = 323; -pub const __NR_inotify_init1: u32 = 324; -pub const __NR_pipe2: u32 = 325; -pub const __NR_dup3: u32 = 326; -pub const __NR_epoll_create1: u32 = 327; -pub const __NR_preadv: u32 = 328; -pub const __NR_pwritev: u32 = 329; -pub const __NR_rt_tgsigqueueinfo: u32 = 330; -pub const __NR_perf_event_open: u32 = 331; -pub const __NR_fanotify_init: u32 = 332; -pub const __NR_fanotify_mark: u32 = 333; -pub const __NR_prlimit64: u32 = 334; -pub const __NR_name_to_handle_at: u32 = 335; -pub const __NR_open_by_handle_at: u32 = 336; -pub const __NR_clock_adjtime: u32 = 337; -pub const __NR_syncfs: u32 = 338; -pub const __NR_setns: u32 = 339; -pub const __NR_process_vm_readv: u32 = 340; -pub const __NR_process_vm_writev: u32 = 341; -pub const __NR_s390_runtime_instr: u32 = 342; -pub const __NR_kcmp: u32 = 343; -pub const __NR_finit_module: u32 = 344; -pub const __NR_sched_setattr: u32 = 345; -pub const __NR_sched_getattr: u32 = 346; -pub const __NR_renameat2: u32 = 347; -pub const __NR_seccomp: u32 = 348; -pub const __NR_getrandom: u32 = 349; -pub const __NR_memfd_create: u32 = 350; -pub const __NR_bpf: u32 = 351; -pub const __NR_s390_pci_mmio_write: u32 = 352; -pub const __NR_s390_pci_mmio_read: u32 = 353; -pub const __NR_execveat: u32 = 354; -pub const __NR_userfaultfd: u32 = 355; -pub const __NR_membarrier: u32 = 356; -pub const __NR_recvmmsg: u32 = 357; -pub const __NR_sendmmsg: u32 = 358; -pub const __NR_socket: u32 = 359; -pub const __NR_socketpair: u32 = 360; -pub const __NR_bind: u32 = 361; -pub const __NR_connect: u32 = 362; -pub const __NR_listen: u32 = 363; -pub const __NR_accept4: u32 = 364; -pub const __NR_getsockopt: u32 = 365; -pub const __NR_setsockopt: u32 = 366; -pub const __NR_getsockname: u32 = 367; -pub const __NR_getpeername: u32 = 368; -pub const __NR_sendto: u32 = 369; -pub const __NR_sendmsg: u32 = 370; -pub const __NR_recvfrom: u32 = 371; -pub const __NR_recvmsg: u32 = 372; -pub const __NR_shutdown: u32 = 373; -pub const __NR_mlock2: u32 = 374; -pub const __NR_copy_file_range: u32 = 375; -pub const __NR_preadv2: u32 = 376; -pub const __NR_pwritev2: u32 = 377; -pub const __NR_s390_guarded_storage: u32 = 378; -pub const __NR_statx: u32 = 379; -pub const __NR_s390_sthyi: u32 = 380; -pub const __NR_kexec_file_load: u32 = 381; -pub const __NR_io_pgetevents: u32 = 382; -pub const __NR_rseq: u32 = 383; -pub const __NR_pkey_mprotect: u32 = 384; -pub const __NR_pkey_alloc: u32 = 385; -pub const __NR_pkey_free: u32 = 386; -pub const __NR_semtimedop: u32 = 392; -pub const __NR_semget: u32 = 393; -pub const __NR_semctl: u32 = 394; -pub const __NR_shmget: u32 = 395; -pub const __NR_shmctl: u32 = 396; -pub const __NR_shmat: u32 = 397; -pub const __NR_shmdt: u32 = 398; -pub const __NR_msgget: u32 = 399; -pub const __NR_msgsnd: u32 = 400; -pub const __NR_msgrcv: u32 = 401; -pub const __NR_msgctl: u32 = 402; -pub const __NR_pidfd_send_signal: u32 = 424; -pub const __NR_io_uring_setup: u32 = 425; -pub const __NR_io_uring_enter: u32 = 426; -pub const __NR_io_uring_register: u32 = 427; -pub const __NR_open_tree: u32 = 428; -pub const __NR_move_mount: u32 = 429; -pub const __NR_fsopen: u32 = 430; -pub const __NR_fsconfig: u32 = 431; -pub const __NR_fsmount: u32 = 432; -pub const __NR_fspick: u32 = 433; -pub const __NR_pidfd_open: u32 = 434; -pub const __NR_clone3: u32 = 435; -pub const __NR_close_range: u32 = 436; -pub const __NR_openat2: u32 = 437; -pub const __NR_pidfd_getfd: u32 = 438; -pub const __NR_faccessat2: u32 = 439; -pub const __NR_process_madvise: u32 = 440; -pub const __NR_epoll_pwait2: u32 = 441; -pub const __NR_mount_setattr: u32 = 442; -pub const __NR_quotactl_fd: u32 = 443; -pub const __NR_landlock_create_ruleset: u32 = 444; -pub const __NR_landlock_add_rule: u32 = 445; -pub const __NR_landlock_restrict_self: u32 = 446; -pub const __NR_process_mrelease: u32 = 448; -pub const __NR_futex_waitv: u32 = 449; -pub const __NR_set_mempolicy_home_node: u32 = 450; -pub const __OLD_UTS_LEN: u32 = 8; -pub const __NEW_UTS_LEN: u32 = 64; -pub const WNOHANG: u32 = 1; -pub const WUNTRACED: u32 = 2; -pub const WSTOPPED: u32 = 2; -pub const WEXITED: u32 = 4; -pub const WCONTINUED: u32 = 8; -pub const WNOWAIT: u32 = 16777216; -pub const __WNOTHREAD: u32 = 536870912; -pub const __WALL: u32 = 1073741824; -pub const __WCLONE: u32 = 2147483648; -pub const P_ALL: u32 = 0; -pub const P_PID: u32 = 1; -pub const P_PGID: u32 = 2; -pub const P_PIDFD: u32 = 3; -pub const XATTR_CREATE: u32 = 1; -pub const XATTR_REPLACE: u32 = 2; -pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0"; -pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0"; -pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0"; -pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0"; -pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0"; -pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0"; -pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0"; -pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0"; -pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0"; -pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0"; -pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0"; -pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0"; -pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0"; -pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0"; -pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0"; -pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0"; -pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0"; -pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0"; -pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0"; -pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0"; -pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0"; -pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0"; -pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0"; -pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0"; -pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0"; -pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0"; -pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0"; -pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0"; -pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0"; -pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0"; -pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0"; -pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0"; -pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0"; -pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0"; -pub const MFD_CLOEXEC: u32 = 1; -pub const MFD_ALLOW_SEALING: u32 = 2; -pub const MFD_HUGETLB: u32 = 4; -pub const MFD_NOEXEC_SEAL: u32 = 8; -pub const MFD_EXEC: u32 = 16; -pub const MFD_HUGE_SHIFT: u32 = 26; -pub const MFD_HUGE_MASK: u32 = 63; -pub const MFD_HUGE_64KB: u32 = 1073741824; -pub const MFD_HUGE_512KB: u32 = 1275068416; -pub const MFD_HUGE_1MB: u32 = 1342177280; -pub const MFD_HUGE_2MB: u32 = 1409286144; -pub const MFD_HUGE_8MB: u32 = 1543503872; -pub const MFD_HUGE_16MB: u32 = 1610612736; -pub const MFD_HUGE_32MB: u32 = 1677721600; -pub const MFD_HUGE_256MB: u32 = 1879048192; -pub const MFD_HUGE_512MB: u32 = 1946157056; -pub const MFD_HUGE_1GB: u32 = 2013265920; -pub const MFD_HUGE_2GB: u32 = 2080374784; -pub const MFD_HUGE_16GB: u32 = 2281701376; -pub const TFD_TIMER_ABSTIME: u32 = 1; -pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; -pub const TFD_CLOEXEC: u32 = 524288; -pub const TFD_NONBLOCK: u32 = 2048; -pub const USERFAULTFD_IOC: u32 = 170; -pub const _UFFDIO_REGISTER: u32 = 0; -pub const _UFFDIO_UNREGISTER: u32 = 1; -pub const _UFFDIO_WAKE: u32 = 2; -pub const _UFFDIO_COPY: u32 = 3; -pub const _UFFDIO_ZEROPAGE: u32 = 4; -pub const _UFFDIO_WRITEPROTECT: u32 = 6; -pub const _UFFDIO_CONTINUE: u32 = 7; -pub const _UFFDIO_API: u32 = 63; -pub const UFFDIO: u32 = 170; -pub const UFFD_EVENT_PAGEFAULT: u32 = 18; -pub const UFFD_EVENT_FORK: u32 = 19; -pub const UFFD_EVENT_REMAP: u32 = 20; -pub const UFFD_EVENT_REMOVE: u32 = 21; -pub const UFFD_EVENT_UNMAP: u32 = 22; -pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; -pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; -pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; -pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; -pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; -pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; -pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; -pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; -pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; -pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; -pub const UFFD_FEATURE_SIGBUS: u32 = 128; -pub const UFFD_FEATURE_THREAD_ID: u32 = 256; -pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; -pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; -pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; -pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; -pub const UFFD_USER_MODE_ONLY: u32 = 1; -pub const IORING_FILE_INDEX_ALLOC: i32 = -1; -pub const IORING_SETUP_IOPOLL: u32 = 1; -pub const IORING_SETUP_SQPOLL: u32 = 2; -pub const IORING_SETUP_SQ_AFF: u32 = 4; -pub const IORING_SETUP_CQSIZE: u32 = 8; -pub const IORING_SETUP_CLAMP: u32 = 16; -pub const IORING_SETUP_ATTACH_WQ: u32 = 32; -pub const IORING_SETUP_R_DISABLED: u32 = 64; -pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; -pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; -pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; -pub const IORING_SETUP_SQE128: u32 = 1024; -pub const IORING_SETUP_CQE32: u32 = 2048; -pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; -pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; -pub const IORING_URING_CMD_FIXED: u32 = 1; -pub const IORING_FSYNC_DATASYNC: u32 = 1; -pub const IORING_TIMEOUT_ABS: u32 = 1; -pub const IORING_TIMEOUT_UPDATE: u32 = 2; -pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; -pub const IORING_TIMEOUT_REALTIME: u32 = 8; -pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; -pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; -pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; -pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; -pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; -pub const IORING_POLL_ADD_MULTI: u32 = 1; -pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; -pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; -pub const IORING_POLL_ADD_LEVEL: u32 = 8; -pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; -pub const IORING_ASYNC_CANCEL_FD: u32 = 2; -pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; -pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; -pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; -pub const IORING_RECV_MULTISHOT: u32 = 2; -pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; -pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; -pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; -pub const IORING_ACCEPT_MULTISHOT: u32 = 1; -pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; -pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; -pub const IORING_CQE_F_BUFFER: u32 = 1; -pub const IORING_CQE_F_MORE: u32 = 2; -pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; -pub const IORING_CQE_F_NOTIF: u32 = 8; -pub const IORING_OFF_SQ_RING: u32 = 0; -pub const IORING_OFF_CQ_RING: u32 = 134217728; -pub const IORING_OFF_SQES: u32 = 268435456; -pub const IORING_SQ_NEED_WAKEUP: u32 = 1; -pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; -pub const IORING_SQ_TASKRUN: u32 = 4; -pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; -pub const IORING_ENTER_GETEVENTS: u32 = 1; -pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; -pub const IORING_ENTER_SQ_WAIT: u32 = 4; -pub const IORING_ENTER_EXT_ARG: u32 = 8; -pub const IORING_ENTER_REGISTERED_RING: u32 = 16; -pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; -pub const IORING_FEAT_NODROP: u32 = 2; -pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; -pub const IORING_FEAT_RW_CUR_POS: u32 = 8; -pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; -pub const IORING_FEAT_FAST_POLL: u32 = 32; -pub const IORING_FEAT_POLL_32BITS: u32 = 64; -pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; -pub const IORING_FEAT_EXT_ARG: u32 = 256; -pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; -pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; -pub const IORING_FEAT_CQE_SKIP: u32 = 2048; -pub const IORING_FEAT_LINKED_FILE: u32 = 4096; -pub const IORING_FEAT_REG_REG_RING: u32 = 8192; -pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; -pub const IORING_REGISTER_FILES_SKIP: i32 = -2; -pub const IO_URING_OP_SUPPORTED: u32 = 1; -pub const DT_UNKNOWN: u32 = 0; -pub const DT_FIFO: u32 = 1; -pub const DT_CHR: u32 = 2; -pub const DT_DIR: u32 = 4; -pub const DT_BLK: u32 = 6; -pub const DT_REG: u32 = 8; -pub const DT_LNK: u32 = 10; -pub const DT_SOCK: u32 = 12; -pub const SHUT_RD: u32 = 0; -pub const SHUT_WR: u32 = 1; -pub const SHUT_RDWR: u32 = 2; -pub const STAT_HAVE_NSEC: u32 = 1; -pub const SOCK_STREAM: u32 = 1; -pub const SOCK_DGRAM: u32 = 2; -pub const SOCK_RAW: u32 = 3; -pub const SOCK_RDM: u32 = 4; -pub const SOCK_SEQPACKET: u32 = 5; -pub const F_OK: u32 = 0; -pub const R_OK: u32 = 4; -pub const W_OK: u32 = 2; -pub const X_OK: u32 = 1; -pub const UTIME_NOW: u32 = 1073741823; -pub const UTIME_OMIT: u32 = 1073741822; -pub const MSG_DONTWAIT: u32 = 64; -pub const AF_UNSPEC: u32 = 0; -pub const AF_UNIX: u32 = 1; -pub const AF_INET: u32 = 2; -pub const AF_AX25: u32 = 3; -pub const AF_IPX: u32 = 4; -pub const AF_APPLETALK: u32 = 5; -pub const AF_NETROM: u32 = 6; -pub const AF_BRIDGE: u32 = 7; -pub const AF_ATMPVC: u32 = 8; -pub const AF_X25: u32 = 9; -pub const AF_INET6: u32 = 10; -pub const AF_ROSE: u32 = 11; -pub const AF_DECnet: u32 = 12; -pub const AF_NETBEUI: u32 = 13; -pub const AF_SECURITY: u32 = 14; -pub const AF_KEY: u32 = 15; -pub const AF_NETLINK: u32 = 16; -pub const AF_PACKET: u32 = 17; -pub const AF_ASH: u32 = 18; -pub const AF_ECONET: u32 = 19; -pub const AF_ATMSVC: u32 = 20; -pub const AF_RDS: u32 = 21; -pub const AF_SNA: u32 = 22; -pub const AF_IRDA: u32 = 23; -pub const AF_PPPOX: u32 = 24; -pub const AF_WANPIPE: u32 = 25; -pub const AF_LLC: u32 = 26; -pub const AF_CAN: u32 = 29; -pub const AF_TIPC: u32 = 30; -pub const AF_BLUETOOTH: u32 = 31; -pub const AF_IUCV: u32 = 32; -pub const AF_RXRPC: u32 = 33; -pub const AF_ISDN: u32 = 34; -pub const AF_PHONET: u32 = 35; -pub const AF_IEEE802154: u32 = 36; -pub const AF_MAX: u32 = 37; -pub const MSG_OOB: u32 = 1; -pub const MSG_PEEK: u32 = 2; -pub const MSG_DONTROUTE: u32 = 4; -pub const MSG_CTRUNC: u32 = 8; -pub const MSG_PROBE: u32 = 16; -pub const MSG_TRUNC: u32 = 32; -pub const MSG_EOR: u32 = 128; -pub const MSG_WAITALL: u32 = 256; -pub const MSG_FIN: u32 = 512; -pub const MSG_SYN: u32 = 1024; -pub const MSG_CONFIRM: u32 = 2048; -pub const MSG_RST: u32 = 4096; -pub const MSG_ERRQUEUE: u32 = 8192; -pub const MSG_NOSIGNAL: u32 = 16384; -pub const MSG_MORE: u32 = 32768; -pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; -pub const STDIN_FILENO: u32 = 0; -pub const STDOUT_FILENO: u32 = 1; -pub const STDERR_FILENO: u32 = 2; -pub const RWF_HIPRI: u32 = 1; -pub const RWF_DSYNC: u32 = 2; -pub const RWF_SYNC: u32 = 4; -pub const RWF_NOWAIT: u32 = 8; -pub const RWF_APPEND: u32 = 16; -pub const EFD_SEMAPHORE: u32 = 1; -pub const EFD_CLOEXEC: u32 = 524288; -pub const EFD_NONBLOCK: u32 = 2048; -pub const EPOLLIN: u32 = 1; -pub const EPOLLPRI: u32 = 2; -pub const EPOLLOUT: u32 = 4; -pub const EPOLLERR: u32 = 8; -pub const EPOLLHUP: u32 = 16; -pub const EPOLLNVAL: u32 = 32; -pub const EPOLLRDNORM: u32 = 64; -pub const EPOLLRDBAND: u32 = 128; -pub const EPOLLWRNORM: u32 = 256; -pub const EPOLLWRBAND: u32 = 512; -pub const EPOLLMSG: u32 = 1024; -pub const EPOLLRDHUP: u32 = 8192; -pub const EPOLLEXCLUSIVE: u32 = 268435456; -pub const EPOLLWAKEUP: u32 = 536870912; -pub const EPOLLONESHOT: u32 = 1073741824; -pub const EPOLLET: u32 = 2147483648; -pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; -pub const TFD_CREATE_FLAGS: u32 = 526336; -pub const TFD_SETTIME_FLAGS: u32 = 1; -pub const SCM_RIGHTS: u32 = 1; -pub const SCM_CREDENTIALS: u32 = 2; -pub const SCM_SECURITY: u32 = 3; -pub const UFFD_API: u32 = 170; -pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; -pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; -pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; -pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; -pub const UFFDIO_COPY_MODE_WP: u32 = 2; -pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; -pub const SPLICE_F_MOVE: u32 = 1; -pub const SPLICE_F_NONBLOCK: u32 = 2; -pub const SPLICE_F_MORE: u32 = 4; -pub const SPLICE_F_GIFT: u32 = 8; -pub const MNT_FORCE: u32 = 1; -pub const MNT_DETACH: u32 = 2; -pub const MNT_EXPIRE: u32 = 4; -pub const UMOUNT_NOFOLLOW: u32 = 8; -pub const UMOUNT_UNUSED: u32 = 2147483648; -pub const _NSIG: u32 = 64; -pub type size_t = crate::ctypes::c_ulong; -pub type ssize_t = crate::ctypes::c_long; -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; -pub type addr_t = crate::ctypes::c_ulong; -pub type saddr_t = crate::ctypes::c_long; -#[repr(C, packed(4))] -#[derive(Copy, Clone)] -pub struct __vector128 { -pub __bindgen_anon_1: __vector128__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __vector128__bindgen_ty_1 { -pub __bindgen_anon_1: __vector128__bindgen_ty_1__bindgen_ty_1, -pub u: [__u32; 4usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __vector128__bindgen_ty_1__bindgen_ty_1 { -pub high: __u64, -pub low: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 16usize], -} -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_size_t = crate::ctypes::c_ulong; -pub type __kernel_ssize_t = crate::ctypes::c_long; -pub type __kernel_old_dev_t = crate::ctypes::c_ushort; -pub type __kernel_ino_t = crate::ctypes::c_uint; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_ptrdiff_t = crate::ctypes::c_long; -pub type __kernel_sigset_t = crate::ctypes::c_ulong; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_header_struct { -pub version: __u32, -pub pid: crate::ctypes::c_int, -} -pub type cap_user_header_t = *mut __user_cap_header_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_data_struct { -pub effective: __u32, -pub permitted: __u32, -pub inheritable: __u32, -} -pub type cap_user_data_t = *mut __user_cap_data_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data { -pub magic_etc: __le32, -pub data: [vfs_cap_data__bindgen_ty_1; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data { -pub magic_etc: __le32, -pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], -pub rootid: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct f_owner_ex { -pub type_: crate::ctypes::c_int, -pub pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_off_t, -pub l_len: __kernel_off_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock64 { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_loff_t, -pub l_len: __kernel_loff_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct open_how { -pub flags: __u64, -pub mode: __u64, -pub resolve: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct epoll_event { -pub events: __poll_t, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v1 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub master_key_descriptor: [__u8; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_key { -pub mode: __u32, -pub raw: [__u8; 64usize], -pub size: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v2 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub __reserved: [__u8; 4usize], -pub master_key_identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_get_policy_ex_arg { -pub policy_size: __u64, -pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { -pub version: __u8, -pub v1: fscrypt_policy_v1, -pub v2: fscrypt_policy_v2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_key_specifier { -pub type_: __u32, -pub __reserved: __u32, -pub u: fscrypt_key_specifier__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_key_specifier__bindgen_ty_1 { -pub __reserved: [__u8; 32usize], -pub descriptor: [__u8; 8usize], -pub identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct fscrypt_provisioning_key_payload { -pub type_: __u32, -pub __reserved: __u32, -pub raw: __IncompleteArrayField<__u8>, -} -#[repr(C)] -pub struct fscrypt_add_key_arg { -pub key_spec: fscrypt_key_specifier, -pub raw_size: __u32, -pub key_id: __u32, -pub __reserved: [__u32; 8usize], -pub raw: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_remove_key_arg { -pub key_spec: fscrypt_key_specifier, -pub removal_status_flags: __u32, -pub __reserved: [__u32; 5usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_get_key_status_arg { -pub key_spec: fscrypt_key_specifier, -pub __reserved: [__u32; 6usize], -pub status: __u32, -pub status_flags: __u32, -pub user_count: __u32, -pub __out_reserved: [__u32; 13usize], -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum fsconfig_command { -FSCONFIG_SET_FLAG = 0, -FSCONFIG_SET_STRING = 1, -FSCONFIG_SET_BINARY = 2, -FSCONFIG_SET_PATH = 3, -FSCONFIG_SET_PATH_EMPTY = 4, -FSCONFIG_SET_FD = 5, -FSCONFIG_CMD_CREATE = 6, -FSCONFIG_CMD_RECONFIGURE = 7, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mount_attr { -pub attr_set: __u64, -pub attr_clr: __u64, -pub propagation: __u64, -pub userns_fd: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct file_clone_range { -pub src_fd: __s64, -pub src_offset: __u64, -pub src_length: __u64, -pub dest_offset: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fstrim_range { -pub start: __u64, -pub len: __u64, -pub minlen: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct file_dedupe_range_info { -pub dest_fd: __s64, -pub dest_offset: __u64, -pub bytes_deduped: __u64, -pub status: __s32, -pub reserved: __u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct file_dedupe_range { -pub src_offset: __u64, -pub src_length: __u64, -pub dest_count: __u16, -pub reserved1: __u16, -pub reserved2: __u32, -pub info: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct files_stat_struct { -pub nr_files: crate::ctypes::c_ulong, -pub nr_free_files: crate::ctypes::c_ulong, -pub max_files: crate::ctypes::c_ulong, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct inodes_stat_t { -pub nr_inodes: crate::ctypes::c_long, -pub nr_unused: crate::ctypes::c_long, -pub dummy: [crate::ctypes::c_long; 5usize], +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct fsxattr { -pub fsx_xflags: __u32, -pub fsx_extsize: __u32, -pub fsx_nextents: __u32, -pub fsx_projid: __u32, -pub fsx_cowextsize: __u32, -pub fsx_pad: [crate::ctypes::c_uchar; 8usize], -} -pub type __kernel_rwf_t = crate::ctypes::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] pub struct futex_waitv { pub val: __u64, pub uaddr: __u64, @@ -2918,672 +321,23 @@ #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct robust_list { -pub next: *mut robust_list, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct robust_list_head { -pub list: robust_list, -pub futex_offset: crate::ctypes::c_long, -pub list_op_pending: *mut robust_list, -} -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], -} -pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; -pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; -pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; -pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; -pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; -pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; -pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; -pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; -pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; -pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; -pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; -pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; -pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; -pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; -pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; -pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; -pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; -pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; -pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; -pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; -pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; -pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; -pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; -pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; -pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; -pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; -pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; -pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; -pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_1 { -IPPROTO_IP = 0, -IPPROTO_ICMP = 1, -IPPROTO_IGMP = 2, -IPPROTO_IPIP = 4, -IPPROTO_TCP = 6, -IPPROTO_EGP = 8, -IPPROTO_PUP = 12, -IPPROTO_UDP = 17, -IPPROTO_IDP = 22, -IPPROTO_TP = 29, -IPPROTO_DCCP = 33, -IPPROTO_IPV6 = 41, -IPPROTO_RSVP = 46, -IPPROTO_GRE = 47, -IPPROTO_ESP = 50, -IPPROTO_AH = 51, -IPPROTO_MTP = 92, -IPPROTO_BEETPH = 94, -IPPROTO_ENCAP = 98, -IPPROTO_PIM = 103, -IPPROTO_COMP = 108, -IPPROTO_L2TP = 115, -IPPROTO_SCTP = 132, -IPPROTO_UDPLITE = 136, -IPPROTO_MPLS = 137, -IPPROTO_ETHERNET = 143, -IPPROTO_RAW = 255, -IPPROTO_MPTCP = 262, -IPPROTO_MAX = 263, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_addr { -pub s_addr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq { -pub imr_multiaddr: in_addr, -pub imr_interface: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreqn { -pub imr_multiaddr: in_addr, -pub imr_address: in_addr, -pub imr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq_source { -pub imr_multiaddr: __be32, -pub imr_interface: __be32, -pub imr_sourceaddr: __be32, -} -#[repr(C)] -pub struct ip_msfilter { -pub imsf_multiaddr: __be32, -pub imsf_interface: __be32, -pub imsf_fmode: __u32, -pub imsf_numsrc: __u32, -pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, -} -#[repr(C)] -pub struct ip_msfilter__bindgen_ty_1 { -pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, -pub __bindgen_anon_1: __BindgenUnionField, -pub bindgen_union_field: u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { -pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -pub imsf_slist_flex: __IncompleteArrayField<__be32>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_req { -pub gr_interface: __u32, -pub gr_group: __kernel_sockaddr_storage, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_source_req { -pub gsr_interface: __u32, -pub gsr_group: __kernel_sockaddr_storage, -pub gsr_source: __kernel_sockaddr_storage, -} -#[repr(C)] -pub struct group_filter { -pub __bindgen_anon_1: group_filter__bindgen_ty_1, -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 34usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { -pub gf_interface_aux: __u32, -pub gf_group_aux: __kernel_sockaddr_storage, -pub gf_fmode_aux: __u32, -pub gf_numsrc_aux: __u32, -pub gf_slist: [__kernel_sockaddr_storage; 1usize], -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { -pub gf_interface: __u32, -pub gf_group: __kernel_sockaddr_storage, -pub gf_fmode: __u32, -pub gf_numsrc: __u32, -pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_pktinfo { -pub ipi_ifindex: crate::ctypes::c_int, -pub ipi_spec_dst: in_addr, -pub ipi_addr: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_in { -pub sin_family: __kernel_sa_family_t, -pub sin_port: __be16, -pub sin_addr: in_addr, -pub __pad: [crate::ctypes::c_uchar; 8usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct inotify_event { -pub wd: __s32, -pub mask: __u32, -pub cookie: __u32, -pub len: __u32, -pub name: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct iphdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub tos: __u8, -pub tot_len: __be16, -pub id: __be16, -pub frag_off: __be16, -pub ttl: __u8, -pub protocol: __u8, -pub check: __sum16, -pub __bindgen_anon_1: iphdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union iphdr__bindgen_ty_1 { -pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: __be32, -pub daddr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: __be32, -pub daddr: __be32, -} -impl iphdr { -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn ihl(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_ihl(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; -ihl as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_auth_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub reserved: __be16, -pub spi: __be32, -pub seq_no: __be32, -pub auth_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_esp_hdr { -pub spi: __be32, -pub seq_no: __be32, -pub enc_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_comp_hdr { -pub nexthdr: __u8, -pub flags: __u8, -pub cpi: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_beet_phdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub padlen: __u8, -pub reserved: __u8, -} -pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; -pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; -pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; -pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; -pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; -pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; -pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; -pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; -pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; -pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; -pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; -pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; -pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; -pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; -pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; -pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; -pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; -pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; -pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; -pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; -pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; -pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; -pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; -pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; -pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; -pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; -pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; -pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; -pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_2 { -IPV4_DEVCONF_FORWARDING = 1, -IPV4_DEVCONF_MC_FORWARDING = 2, -IPV4_DEVCONF_PROXY_ARP = 3, -IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, -IPV4_DEVCONF_SECURE_REDIRECTS = 5, -IPV4_DEVCONF_SEND_REDIRECTS = 6, -IPV4_DEVCONF_SHARED_MEDIA = 7, -IPV4_DEVCONF_RP_FILTER = 8, -IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, -IPV4_DEVCONF_BOOTP_RELAY = 10, -IPV4_DEVCONF_LOG_MARTIANS = 11, -IPV4_DEVCONF_TAG = 12, -IPV4_DEVCONF_ARPFILTER = 13, -IPV4_DEVCONF_MEDIUM_ID = 14, -IPV4_DEVCONF_NOXFRM = 15, -IPV4_DEVCONF_NOPOLICY = 16, -IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, -IPV4_DEVCONF_ARP_ANNOUNCE = 18, -IPV4_DEVCONF_ARP_IGNORE = 19, -IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, -IPV4_DEVCONF_ARP_ACCEPT = 21, -IPV4_DEVCONF_ARP_NOTIFY = 22, -IPV4_DEVCONF_ACCEPT_LOCAL = 23, -IPV4_DEVCONF_SRC_VMARK = 24, -IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, -IPV4_DEVCONF_ROUTE_LOCALNET = 26, -IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, -IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, -IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, -IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, -IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, -IPV4_DEVCONF_BC_FORWARDING = 32, -IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, -__IPV4_DEVCONF_MAX = 34, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_addr { -pub in6_u: in6_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union in6_addr__bindgen_ty_1 { -pub u6_addr8: [__u8; 16usize], -pub u6_addr16: [__be16; 8usize], -pub u6_addr32: [__be32; 4usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_in6 { -pub sin6_family: crate::ctypes::c_ushort, -pub sin6_port: __be16, -pub sin6_flowinfo: __be32, -pub sin6_addr: in6_addr, -pub sin6_scope_id: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6_mreq { -pub ipv6mr_multiaddr: in6_addr, -pub ipv6mr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_flowlabel_req { -pub flr_dst: in6_addr, -pub flr_label: __be32, -pub flr_action: __u8, -pub flr_share: __u8, -pub flr_flags: __u16, -pub flr_expires: __u16, -pub flr_linger: __u16, -pub __flr_pad: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_pktinfo { -pub ipi6_addr: in6_addr, -pub ipi6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ip6_mtuinfo { -pub ip6m_addr: sockaddr_in6, -pub ip6m_mtu: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_ifreq { -pub ifr6_addr: in6_addr, -pub ifr6_prefixlen: __u32, -pub ifr6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_rt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub type_: __u8, -pub segments_left: __u8, -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_opt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -} -#[repr(C)] -pub struct rt0_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rt2_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: in6_addr, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct ipv6_destopt_hao { -pub type_: __u8, -pub length: __u8, -pub addr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub flow_lbl: [__u8; 3usize], -pub payload_len: __be16, -pub nexthdr: __u8, -pub hop_limit: __u8, -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ipv6hdr__bindgen_ty_1 { -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -impl ipv6hdr { -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn priority(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_priority(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let priority: u8 = unsafe { ::core::mem::transmute(priority) }; -priority as u64 -}); -__bindgen_bitfield_unit -} -} -pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; -pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; -pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; -pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; -pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; -pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; -pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; -pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; -pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; -pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; -pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; -pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; -pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; -pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; -pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; -pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; -pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; -pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; -pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; -pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; -pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; -pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; -pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; -pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; -pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; -pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; -pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; -pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; -pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; -pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; -pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; -pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; -pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; -pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; -pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; -pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; -pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; -pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; -pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; -pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; -pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; -pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; -pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; -pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; -pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; -pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; -pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; -pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; -pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; -pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; -pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; -pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_3 { -DEVCONF_FORWARDING = 0, -DEVCONF_HOPLIMIT = 1, -DEVCONF_MTU6 = 2, -DEVCONF_ACCEPT_RA = 3, -DEVCONF_ACCEPT_REDIRECTS = 4, -DEVCONF_AUTOCONF = 5, -DEVCONF_DAD_TRANSMITS = 6, -DEVCONF_RTR_SOLICITS = 7, -DEVCONF_RTR_SOLICIT_INTERVAL = 8, -DEVCONF_RTR_SOLICIT_DELAY = 9, -DEVCONF_USE_TEMPADDR = 10, -DEVCONF_TEMP_VALID_LFT = 11, -DEVCONF_TEMP_PREFERED_LFT = 12, -DEVCONF_REGEN_MAX_RETRY = 13, -DEVCONF_MAX_DESYNC_FACTOR = 14, -DEVCONF_MAX_ADDRESSES = 15, -DEVCONF_FORCE_MLD_VERSION = 16, -DEVCONF_ACCEPT_RA_DEFRTR = 17, -DEVCONF_ACCEPT_RA_PINFO = 18, -DEVCONF_ACCEPT_RA_RTR_PREF = 19, -DEVCONF_RTR_PROBE_INTERVAL = 20, -DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, -DEVCONF_PROXY_NDP = 22, -DEVCONF_OPTIMISTIC_DAD = 23, -DEVCONF_ACCEPT_SOURCE_ROUTE = 24, -DEVCONF_MC_FORWARDING = 25, -DEVCONF_DISABLE_IPV6 = 26, -DEVCONF_ACCEPT_DAD = 27, -DEVCONF_FORCE_TLLAO = 28, -DEVCONF_NDISC_NOTIFY = 29, -DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, -DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, -DEVCONF_SUPPRESS_FRAG_NDISC = 32, -DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, -DEVCONF_USE_OPTIMISTIC = 34, -DEVCONF_ACCEPT_RA_MTU = 35, -DEVCONF_STABLE_SECRET = 36, -DEVCONF_USE_OIF_ADDRS_ONLY = 37, -DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, -DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, -DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, -DEVCONF_DROP_UNSOLICITED_NA = 41, -DEVCONF_KEEP_ADDR_ON_DOWN = 42, -DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, -DEVCONF_SEG6_ENABLED = 44, -DEVCONF_SEG6_REQUIRE_HMAC = 45, -DEVCONF_ENHANCED_DAD = 46, -DEVCONF_ADDR_GEN_MODE = 47, -DEVCONF_DISABLE_POLICY = 48, -DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, -DEVCONF_NDISC_TCLASS = 50, -DEVCONF_RPL_SEG_ENABLED = 51, -DEVCONF_RA_DEFRTR_METRIC = 52, -DEVCONF_IOAM6_ENABLED = 53, -DEVCONF_IOAM6_ID = 54, -DEVCONF_IOAM6_ID_WIDE = 55, -DEVCONF_NDISC_EVICT_NOCARRIER = 56, -DEVCONF_ACCEPT_UNTRACKED_NA = 57, -DEVCONF_MAX = 58, +pub next: *mut robust_list, } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum socket_state { -SS_FREE = 0, -SS_UNCONNECTED = 1, -SS_CONNECTING = 2, -SS_CONNECTED = 3, -SS_DISCONNECTING = 4, +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct robust_list_head { +pub list: robust_list, +pub futex_offset: crate::ctypes::c_long, +pub list_op_pending: *mut robust_list, +} +#[repr(C)] +#[derive(Debug)] +pub struct inotify_event { +pub wd: __s32, +pub mask: __u32, +pub cookie: __u32, +pub len: __u32, +pub name: __IncompleteArrayField, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -3593,24 +347,6 @@ pub revents: crate::ctypes::c_short, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prctl_mm_map { -pub start_code: __u64, -pub end_code: __u64, -pub start_data: __u64, -pub end_data: __u64, -pub start_brk: __u64, -pub brk: __u64, -pub start_stack: __u64, -pub arg_start: __u64, -pub arg_end: __u64, -pub env_start: __u64, -pub env_end: __u64, -pub auxv: *mut __u64, -pub auxv_size: __u32, -pub exe_fd: __u32, -} -#[repr(C)] #[derive(Debug)] pub struct rand_pool_info { pub entropy_count: crate::ctypes::c_int, @@ -3735,11 +471,6 @@ pub struct pt_regs { _unused: [u8; 0], } -pub type sigset_t = crate::ctypes::c_ulong; -pub type __signalfn_t = ::core::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::core::option::Option; -pub type __sigrestore_t = __restorefn_t; #[repr(C)] #[derive(Copy, Clone)] pub struct sigaction { @@ -3749,37 +480,12 @@ pub sa_mask: sigset_t, } #[repr(C)] -#[derive(Copy, Clone)] -pub union sigaction__bindgen_ty_1 { -pub _sa_handler: __sighandler_t, -pub _sa_sigaction: ::core::option::Option, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct sigaltstack { pub ss_sp: *mut crate::ctypes::c_void, pub ss_flags: crate::ctypes::c_int, pub ss_size: __kernel_size_t, } -pub type stack_t = sigaltstack; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { -pub sival_int: crate::ctypes::c_int, -pub sival_ptr: *mut crate::ctypes::c_void, -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { -pub _kill: __sifields__bindgen_ty_1, -pub _timer: __sifields__bindgen_ty_2, -pub _rt: __sifields__bindgen_ty_3, -pub _sigchld: __sifields__bindgen_ty_4, -pub _sigfault: __sifields__bindgen_ty_5, -pub _sigpoll: __sifields__bindgen_ty_6, -pub _sigsys: __sifields__bindgen_ty_7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_1 { @@ -3817,15 +523,6 @@ pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { -pub _trapno: crate::ctypes::c_int, -pub _addr_lsb: crate::ctypes::c_short, -pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, -pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { pub _dummy_bnd: [crate::ctypes::c_char; 8usize], @@ -3865,19 +562,12 @@ } #[repr(C)] #[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { -pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, -pub _si_pad: [crate::ctypes::c_int; 32usize], -} -#[repr(C)] -#[derive(Copy, Clone)] pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { pub si_signo: crate::ctypes::c_int, pub si_errno: crate::ctypes::c_int, pub si_code: crate::ctypes::c_int, pub _sifields: __sifields, } -pub type siginfo_t = siginfo; #[repr(C)] #[derive(Copy, Clone)] pub struct sigevent { @@ -3887,19 +577,11 @@ pub _sigev_un: sigevent__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { -pub _pad: [crate::ctypes::c_int; 12usize], -pub _tid: crate::ctypes::c_int, -pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { pub _function: ::core::option::Option, pub _attribute: *mut crate::ctypes::c_void, } -pub type sigevent_t = sigevent; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct statx_timestamp { @@ -3910,523 +592,31 @@ #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct statx { -pub stx_mask: __u32, -pub stx_blksize: __u32, -pub stx_attributes: __u64, -pub stx_nlink: __u32, -pub stx_uid: __u32, -pub stx_gid: __u32, -pub stx_mode: __u16, -pub __spare0: [__u16; 1usize], -pub stx_ino: __u64, -pub stx_size: __u64, -pub stx_blocks: __u64, -pub stx_attributes_mask: __u64, -pub stx_atime: statx_timestamp, -pub stx_btime: statx_timestamp, -pub stx_ctime: statx_timestamp, -pub stx_mtime: statx_timestamp, -pub stx_rdev_major: __u32, -pub stx_rdev_minor: __u32, -pub stx_dev_major: __u32, -pub stx_dev_minor: __u32, -pub stx_mnt_id: __u64, -pub stx_dio_mem_align: __u32, -pub stx_dio_offset_align: __u32, -pub __spare3: [__u64; 12usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct sysinfo { -pub uptime: __kernel_long_t, -pub loads: [__kernel_ulong_t; 3usize], -pub totalram: __kernel_ulong_t, -pub freeram: __kernel_ulong_t, -pub sharedram: __kernel_ulong_t, -pub bufferram: __kernel_ulong_t, -pub totalswap: __kernel_ulong_t, -pub freeswap: __kernel_ulong_t, -pub procs: __u16, -pub pad: __u16, -pub totalhigh: __kernel_ulong_t, -pub freehigh: __kernel_ulong_t, -pub mem_unit: __u32, -pub _f: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcphdr { -pub source: __be16, -pub dest: __be16, -pub seq: __be32, -pub ack_seq: __be32, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub window: __be16, -pub check: __sum16, -pub urg_ptr: __be16, -} -impl tcphdr { -#[inline] -pub fn doff(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } -} -#[inline] -pub fn set_doff(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn res1(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } -} -#[inline] -pub fn set_res1(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn cwr(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } -} -#[inline] -pub fn set_cwr(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn ece(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } -} -#[inline] -pub fn set_ece(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 1u8, val as u64) -} -} -#[inline] -pub fn urg(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } -} -#[inline] -pub fn set_urg(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(10usize, 1u8, val as u64) -} -} -#[inline] -pub fn ack(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } -} -#[inline] -pub fn set_ack(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(11usize, 1u8, val as u64) -} -} -#[inline] -pub fn psh(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } -} -#[inline] -pub fn set_psh(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(12usize, 1u8, val as u64) -} -} -#[inline] -pub fn rst(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } -} -#[inline] -pub fn set_rst(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(13usize, 1u8, val as u64) -} -} -#[inline] -pub fn syn(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } -} -#[inline] -pub fn set_syn(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(14usize, 1u8, val as u64) -} -} -#[inline] -pub fn fin(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } -} -#[inline] -pub fn set_fin(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(15usize, 1u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let doff: u16 = unsafe { ::core::mem::transmute(doff) }; -doff as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let res1: u16 = unsafe { ::core::mem::transmute(res1) }; -res1 as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; -cwr as u64 -}); -__bindgen_bitfield_unit.set(9usize, 1u8, { -let ece: u16 = unsafe { ::core::mem::transmute(ece) }; -ece as u64 -}); -__bindgen_bitfield_unit.set(10usize, 1u8, { -let urg: u16 = unsafe { ::core::mem::transmute(urg) }; -urg as u64 -}); -__bindgen_bitfield_unit.set(11usize, 1u8, { -let ack: u16 = unsafe { ::core::mem::transmute(ack) }; -ack as u64 -}); -__bindgen_bitfield_unit.set(12usize, 1u8, { -let psh: u16 = unsafe { ::core::mem::transmute(psh) }; -psh as u64 -}); -__bindgen_bitfield_unit.set(13usize, 1u8, { -let rst: u16 = unsafe { ::core::mem::transmute(rst) }; -rst as u64 -}); -__bindgen_bitfield_unit.set(14usize, 1u8, { -let syn: u16 = unsafe { ::core::mem::transmute(syn) }; -syn as u64 -}); -__bindgen_bitfield_unit.set(15usize, 1u8, { -let fin: u16 = unsafe { ::core::mem::transmute(fin) }; -fin as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union tcp_word_hdr { -pub hdr: tcphdr, -pub words: [__be32; 5usize], -} -pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; -pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; -pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; -pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; -pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; -pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; -pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; -pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; -pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; -pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_4 { -TCP_FLAG_CWR = 8388608, -TCP_FLAG_ECE = 4194304, -TCP_FLAG_URG = 2097152, -TCP_FLAG_ACK = 1048576, -TCP_FLAG_PSH = 524288, -TCP_FLAG_RST = 262144, -TCP_FLAG_SYN = 131072, -TCP_FLAG_FIN = 65536, -TCP_RESERVED_BITS = 251658240, -TCP_DATA_OFFSET = 4026531840, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_repair_opt { -pub opt_code: __u32, -pub opt_val: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_repair_window { -pub snd_wl1: __u32, -pub snd_wnd: __u32, -pub max_window: __u32, -pub rcv_wnd: __u32, -pub rcv_wup: __u32, -} -pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; -pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; -pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; -pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_5 { -TCP_NO_QUEUE = 0, -TCP_RECV_QUEUE = 1, -TCP_SEND_QUEUE = 2, -TCP_QUEUES_NR = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_fastopen_client_fail { -TFO_STATUS_UNSPEC = 0, -TFO_COOKIE_UNAVAILABLE = 1, -TFO_DATA_NOT_ACKED = 2, -TFO_SYN_RETRANSMITTED = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_ca_state { -TCP_CA_Open = 0, -TCP_CA_Disorder = 1, -TCP_CA_CWR = 2, -TCP_CA_Recovery = 3, -TCP_CA_Loss = 4, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_info { -pub tcpi_state: __u8, -pub tcpi_ca_state: __u8, -pub tcpi_retransmits: __u8, -pub tcpi_probes: __u8, -pub tcpi_backoff: __u8, -pub tcpi_options: __u8, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub tcpi_rto: __u32, -pub tcpi_ato: __u32, -pub tcpi_snd_mss: __u32, -pub tcpi_rcv_mss: __u32, -pub tcpi_unacked: __u32, -pub tcpi_sacked: __u32, -pub tcpi_lost: __u32, -pub tcpi_retrans: __u32, -pub tcpi_fackets: __u32, -pub tcpi_last_data_sent: __u32, -pub tcpi_last_ack_sent: __u32, -pub tcpi_last_data_recv: __u32, -pub tcpi_last_ack_recv: __u32, -pub tcpi_pmtu: __u32, -pub tcpi_rcv_ssthresh: __u32, -pub tcpi_rtt: __u32, -pub tcpi_rttvar: __u32, -pub tcpi_snd_ssthresh: __u32, -pub tcpi_snd_cwnd: __u32, -pub tcpi_advmss: __u32, -pub tcpi_reordering: __u32, -pub tcpi_rcv_rtt: __u32, -pub tcpi_rcv_space: __u32, -pub tcpi_total_retrans: __u32, -pub tcpi_pacing_rate: __u64, -pub tcpi_max_pacing_rate: __u64, -pub tcpi_bytes_acked: __u64, -pub tcpi_bytes_received: __u64, -pub tcpi_segs_out: __u32, -pub tcpi_segs_in: __u32, -pub tcpi_notsent_bytes: __u32, -pub tcpi_min_rtt: __u32, -pub tcpi_data_segs_in: __u32, -pub tcpi_data_segs_out: __u32, -pub tcpi_delivery_rate: __u64, -pub tcpi_busy_time: __u64, -pub tcpi_rwnd_limited: __u64, -pub tcpi_sndbuf_limited: __u64, -pub tcpi_delivered: __u32, -pub tcpi_delivered_ce: __u32, -pub tcpi_bytes_sent: __u64, -pub tcpi_bytes_retrans: __u64, -pub tcpi_dsack_dups: __u32, -pub tcpi_reord_seen: __u32, -pub tcpi_rcv_ooopack: __u32, -pub tcpi_snd_wnd: __u32, -pub tcpi_rcv_wnd: __u32, -pub tcpi_rehash: __u32, -} -impl tcp_info { -#[inline] -pub fn tcpi_snd_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_rcv_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } -} -#[inline] -pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn tcpi_fastopen_client_fail(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } -} -#[inline] -pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 2u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; -tcpi_snd_wscale as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; -tcpi_rcv_wscale as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; -tcpi_delivery_rate_app_limited as u64 -}); -__bindgen_bitfield_unit.set(9usize, 2u8, { -let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; -tcpi_fastopen_client_fail as u64 -}); -__bindgen_bitfield_unit -} -} -pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; -pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; -pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; -pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; -pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; -pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; -pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; -pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; -pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; -pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; -pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; -pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; -pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; -pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; -pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; -pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; -pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; -pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; -pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; -pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; -pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; -pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; -pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; -pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; -pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; -pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; -pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; -pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_6 { -TCP_NLA_PAD = 0, -TCP_NLA_BUSY = 1, -TCP_NLA_RWND_LIMITED = 2, -TCP_NLA_SNDBUF_LIMITED = 3, -TCP_NLA_DATA_SEGS_OUT = 4, -TCP_NLA_TOTAL_RETRANS = 5, -TCP_NLA_PACING_RATE = 6, -TCP_NLA_DELIVERY_RATE = 7, -TCP_NLA_SND_CWND = 8, -TCP_NLA_REORDERING = 9, -TCP_NLA_MIN_RTT = 10, -TCP_NLA_RECUR_RETRANS = 11, -TCP_NLA_DELIVERY_RATE_APP_LMT = 12, -TCP_NLA_SNDQ_SIZE = 13, -TCP_NLA_CA_STATE = 14, -TCP_NLA_SND_SSTHRESH = 15, -TCP_NLA_DELIVERED = 16, -TCP_NLA_DELIVERED_CE = 17, -TCP_NLA_BYTES_SENT = 18, -TCP_NLA_BYTES_RETRANS = 19, -TCP_NLA_DSACK_DUPS = 20, -TCP_NLA_REORD_SEEN = 21, -TCP_NLA_SRTT = 22, -TCP_NLA_TIMEOUT_REHASH = 23, -TCP_NLA_BYTES_NOTSENT = 24, -TCP_NLA_EDT = 25, -TCP_NLA_TTL = 26, -TCP_NLA_REHASH = 27, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct tcp_md5sig { -pub tcpm_addr: __kernel_sockaddr_storage, -pub tcpm_flags: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_ifindex: crate::ctypes::c_int, -pub tcpm_key: [__u8; 80usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_diag_md5sig { -pub tcpm_family: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_addr: [__be32; 4usize], -pub tcpm_key: [__u8; 80usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_zerocopy_receive { -pub address: __u64, -pub length: __u32, -pub recv_skip_hint: __u32, -pub inq: __u32, -pub err: __s32, -pub copybuf_address: __u64, -pub copybuf_len: __s32, -pub flags: __u32, -pub msg_control: __u64, -pub msg_controllen: __u64, -pub msg_flags: __u32, -pub reserved: __u32, +pub stx_mask: __u32, +pub stx_blksize: __u32, +pub stx_attributes: __u64, +pub stx_nlink: __u32, +pub stx_uid: __u32, +pub stx_gid: __u32, +pub stx_mode: __u16, +pub __spare0: [__u16; 1usize], +pub stx_ino: __u64, +pub stx_size: __u64, +pub stx_blocks: __u64, +pub stx_attributes_mask: __u64, +pub stx_atime: statx_timestamp, +pub stx_btime: statx_timestamp, +pub stx_ctime: statx_timestamp, +pub stx_mtime: statx_timestamp, +pub stx_rdev_major: __u32, +pub stx_rdev_minor: __u32, +pub stx_dev_major: __u32, +pub stx_dev_minor: __u32, +pub stx_mnt_id: __u64, +pub stx_dio_mem_align: __u32, +pub stx_dio_offset_align: __u32, +pub __spare3: [__u64; 12usize], } -pub type cc_t = crate::ctypes::c_uchar; -pub type speed_t = crate::ctypes::c_uint; -pub type tcflag_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct termios { @@ -4485,42 +675,1900 @@ pub iov_base: *mut crate::ctypes::c_void, pub iov_len: __kernel_size_t, } +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct uffd_msg { +pub event: __u8, +pub reserved1: __u8, +pub reserved2: __u16, +pub reserved3: __u32, +pub arg: uffd_msg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { +pub flags: __u64, +pub address: __u64, +pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +} #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_un { -pub sun_family: __kernel_sa_family_t, -pub sun_path: [crate::ctypes::c_char; 108usize], +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { +pub ufd: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct oldold_utsname { -pub sysname: [crate::ctypes::c_char; 9usize], -pub nodename: [crate::ctypes::c_char; 9usize], -pub release: [crate::ctypes::c_char; 9usize], -pub version: [crate::ctypes::c_char; 9usize], -pub machine: [crate::ctypes::c_char; 9usize], +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { +pub from: __u64, +pub to: __u64, +pub len: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct old_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { +pub start: __u64, +pub end: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct new_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], -pub domainname: [crate::ctypes::c_char; 65usize], +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { +pub reserved1: __u64, +pub reserved2: __u64, +pub reserved3: __u64, } -impl membarrier_cmd { -pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_api { +pub api: __u64, +pub features: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_range { +pub start: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_register { +pub range: uffdio_range, +pub mode: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_copy { +pub dst: __u64, +pub src: __u64, +pub len: __u64, +pub mode: __u64, +pub copy: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_zeropage { +pub range: uffdio_range, +pub mode: __u64, +pub zeropage: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_writeprotect { +pub range: uffdio_range, +pub mode: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_continue { +pub range: uffdio_range, +pub mode: __u64, +pub mapped: __s64, +} +#[repr(C)] +#[derive(Debug)] +pub struct linux_dirent64 { +pub d_ino: crate::ctypes::c_ulong, +pub d_off: crate::ctypes::c_long, +pub d_reclen: __u16, +pub d_type: __u8, +pub d_name: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat { +pub st_dev: crate::ctypes::c_ulong, +pub st_ino: crate::ctypes::c_ulong, +pub st_nlink: crate::ctypes::c_ulong, +pub st_mode: crate::ctypes::c_uint, +pub st_uid: crate::ctypes::c_uint, +pub st_gid: crate::ctypes::c_uint, +pub __pad1: crate::ctypes::c_uint, +pub st_rdev: crate::ctypes::c_ulong, +pub st_size: crate::ctypes::c_ulong, +pub st_atime: crate::ctypes::c_ulong, +pub st_atime_nsec: crate::ctypes::c_ulong, +pub st_mtime: crate::ctypes::c_ulong, +pub st_mtime_nsec: crate::ctypes::c_ulong, +pub st_ctime: crate::ctypes::c_ulong, +pub st_ctime_nsec: crate::ctypes::c_ulong, +pub st_blksize: crate::ctypes::c_ulong, +pub st_blocks: crate::ctypes::c_long, +pub __unused: [crate::ctypes::c_ulong; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs { +pub f_type: crate::ctypes::c_uint, +pub f_bsize: crate::ctypes::c_uint, +pub f_blocks: crate::ctypes::c_ulong, +pub f_bfree: crate::ctypes::c_ulong, +pub f_bavail: crate::ctypes::c_ulong, +pub f_files: crate::ctypes::c_ulong, +pub f_ffree: crate::ctypes::c_ulong, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: crate::ctypes::c_uint, +pub f_frsize: crate::ctypes::c_uint, +pub f_flags: crate::ctypes::c_uint, +pub f_spare: [crate::ctypes::c_uint; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs64 { +pub f_type: crate::ctypes::c_uint, +pub f_bsize: crate::ctypes::c_uint, +pub f_blocks: crate::ctypes::c_ulonglong, +pub f_bfree: crate::ctypes::c_ulonglong, +pub f_bavail: crate::ctypes::c_ulonglong, +pub f_files: crate::ctypes::c_ulonglong, +pub f_ffree: crate::ctypes::c_ulonglong, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: crate::ctypes::c_uint, +pub f_frsize: crate::ctypes::c_uint, +pub f_flags: crate::ctypes::c_uint, +pub f_spare: [crate::ctypes::c_uint; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct user_desc { +pub entry_number: crate::ctypes::c_uint, +pub base_addr: crate::ctypes::c_uint, +pub limit: crate::ctypes::c_uint, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub __bindgen_padding_0: [u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct kernel_sigset_t { +pub sig: [crate::ctypes::c_ulong; 1usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct kernel_sigaction { +pub sa_handler_kernel: __kernel_sighandler_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_restorer: __sigrestore_t, +pub sa_mask: kernel_sigset_t, +} +pub const LINUX_VERSION_CODE: u32 = 393984; +pub const LINUX_VERSION_MAJOR: u32 = 6; +pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; +pub const LINUX_VERSION_SUBLEVEL: u32 = 0; +pub const AT_SYSINFO_EHDR: u32 = 33; +pub const AT_VECTOR_SIZE_ARCH: u32 = 1; +pub const AT_NULL: u32 = 0; +pub const AT_IGNORE: u32 = 1; +pub const AT_EXECFD: u32 = 2; +pub const AT_PHDR: u32 = 3; +pub const AT_PHENT: u32 = 4; +pub const AT_PHNUM: u32 = 5; +pub const AT_PAGESZ: u32 = 6; +pub const AT_BASE: u32 = 7; +pub const AT_FLAGS: u32 = 8; +pub const AT_ENTRY: u32 = 9; +pub const AT_NOTELF: u32 = 10; +pub const AT_UID: u32 = 11; +pub const AT_EUID: u32 = 12; +pub const AT_GID: u32 = 13; +pub const AT_EGID: u32 = 14; +pub const AT_PLATFORM: u32 = 15; +pub const AT_HWCAP: u32 = 16; +pub const AT_CLKTCK: u32 = 17; +pub const AT_SECURE: u32 = 23; +pub const AT_BASE_PLATFORM: u32 = 24; +pub const AT_RANDOM: u32 = 25; +pub const AT_HWCAP2: u32 = 26; +pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; +pub const AT_RSEQ_ALIGN: u32 = 28; +pub const AT_EXECFN: u32 = 31; +pub const AT_MINSIGSTKSZ: u32 = 51; +pub const __FD_SETSIZE: u32 = 1024; +pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; +pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; +pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; +pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; +pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; +pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; +pub const VFS_CAP_REVISION_SHIFT: u32 = 24; +pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; +pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; +pub const VFS_CAP_REVISION_1: u32 = 16777216; +pub const VFS_CAP_U32_1: u32 = 1; +pub const VFS_CAP_REVISION_2: u32 = 33554432; +pub const VFS_CAP_U32_2: u32 = 2; +pub const VFS_CAP_REVISION_3: u32 = 50331648; +pub const VFS_CAP_U32_3: u32 = 2; +pub const VFS_CAP_U32: u32 = 2; +pub const VFS_CAP_REVISION: u32 = 50331648; +pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S: u32 = 1; +pub const CAP_CHOWN: u32 = 0; +pub const CAP_DAC_OVERRIDE: u32 = 1; +pub const CAP_DAC_READ_SEARCH: u32 = 2; +pub const CAP_FOWNER: u32 = 3; +pub const CAP_FSETID: u32 = 4; +pub const CAP_KILL: u32 = 5; +pub const CAP_SETGID: u32 = 6; +pub const CAP_SETUID: u32 = 7; +pub const CAP_SETPCAP: u32 = 8; +pub const CAP_LINUX_IMMUTABLE: u32 = 9; +pub const CAP_NET_BIND_SERVICE: u32 = 10; +pub const CAP_NET_BROADCAST: u32 = 11; +pub const CAP_NET_ADMIN: u32 = 12; +pub const CAP_NET_RAW: u32 = 13; +pub const CAP_IPC_LOCK: u32 = 14; +pub const CAP_IPC_OWNER: u32 = 15; +pub const CAP_SYS_MODULE: u32 = 16; +pub const CAP_SYS_RAWIO: u32 = 17; +pub const CAP_SYS_CHROOT: u32 = 18; +pub const CAP_SYS_PTRACE: u32 = 19; +pub const CAP_SYS_PACCT: u32 = 20; +pub const CAP_SYS_ADMIN: u32 = 21; +pub const CAP_SYS_BOOT: u32 = 22; +pub const CAP_SYS_NICE: u32 = 23; +pub const CAP_SYS_RESOURCE: u32 = 24; +pub const CAP_SYS_TIME: u32 = 25; +pub const CAP_SYS_TTY_CONFIG: u32 = 26; +pub const CAP_MKNOD: u32 = 27; +pub const CAP_LEASE: u32 = 28; +pub const CAP_AUDIT_WRITE: u32 = 29; +pub const CAP_AUDIT_CONTROL: u32 = 30; +pub const CAP_SETFCAP: u32 = 31; +pub const CAP_MAC_OVERRIDE: u32 = 32; +pub const CAP_MAC_ADMIN: u32 = 33; +pub const CAP_SYSLOG: u32 = 34; +pub const CAP_WAKE_ALARM: u32 = 35; +pub const CAP_BLOCK_SUSPEND: u32 = 36; +pub const CAP_AUDIT_READ: u32 = 37; +pub const CAP_PERFMON: u32 = 38; +pub const CAP_BPF: u32 = 39; +pub const CAP_CHECKPOINT_RESTORE: u32 = 40; +pub const CAP_LAST_CAP: u32 = 40; +pub const O_ACCMODE: u32 = 3; +pub const O_RDONLY: u32 = 0; +pub const O_WRONLY: u32 = 1; +pub const O_RDWR: u32 = 2; +pub const O_CREAT: u32 = 64; +pub const O_EXCL: u32 = 128; +pub const O_NOCTTY: u32 = 256; +pub const O_TRUNC: u32 = 512; +pub const O_APPEND: u32 = 1024; +pub const O_NONBLOCK: u32 = 2048; +pub const O_DSYNC: u32 = 4096; +pub const FASYNC: u32 = 8192; +pub const O_DIRECT: u32 = 16384; +pub const O_LARGEFILE: u32 = 32768; +pub const O_DIRECTORY: u32 = 65536; +pub const O_NOFOLLOW: u32 = 131072; +pub const O_NOATIME: u32 = 262144; +pub const O_CLOEXEC: u32 = 524288; +pub const __O_SYNC: u32 = 1048576; +pub const O_SYNC: u32 = 1052672; +pub const O_PATH: u32 = 2097152; +pub const __O_TMPFILE: u32 = 4194304; +pub const O_TMPFILE: u32 = 4259840; +pub const O_TMPFILE_MASK: u32 = 4259904; +pub const O_NDELAY: u32 = 2048; +pub const F_DUPFD: u32 = 0; +pub const F_GETFD: u32 = 1; +pub const F_SETFD: u32 = 2; +pub const F_GETFL: u32 = 3; +pub const F_SETFL: u32 = 4; +pub const F_GETLK: u32 = 5; +pub const F_SETLK: u32 = 6; +pub const F_SETLKW: u32 = 7; +pub const F_SETOWN: u32 = 8; +pub const F_GETOWN: u32 = 9; +pub const F_SETSIG: u32 = 10; +pub const F_GETSIG: u32 = 11; +pub const F_SETOWN_EX: u32 = 15; +pub const F_GETOWN_EX: u32 = 16; +pub const F_GETOWNER_UIDS: u32 = 17; +pub const F_OFD_GETLK: u32 = 36; +pub const F_OFD_SETLK: u32 = 37; +pub const F_OFD_SETLKW: u32 = 38; +pub const F_OWNER_TID: u32 = 0; +pub const F_OWNER_PID: u32 = 1; +pub const F_OWNER_PGRP: u32 = 2; +pub const FD_CLOEXEC: u32 = 1; +pub const F_RDLCK: u32 = 0; +pub const F_WRLCK: u32 = 1; +pub const F_UNLCK: u32 = 2; +pub const F_EXLCK: u32 = 4; +pub const F_SHLCK: u32 = 8; +pub const LOCK_SH: u32 = 1; +pub const LOCK_EX: u32 = 2; +pub const LOCK_NB: u32 = 4; +pub const LOCK_UN: u32 = 8; +pub const LOCK_MAND: u32 = 32; +pub const LOCK_READ: u32 = 64; +pub const LOCK_WRITE: u32 = 128; +pub const LOCK_RW: u32 = 192; +pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; +pub const RESOLVE_NO_XDEV: u32 = 1; +pub const RESOLVE_NO_MAGICLINKS: u32 = 2; +pub const RESOLVE_NO_SYMLINKS: u32 = 4; +pub const RESOLVE_BENEATH: u32 = 8; +pub const RESOLVE_IN_ROOT: u32 = 16; +pub const RESOLVE_CACHED: u32 = 32; +pub const F_SETLEASE: u32 = 1024; +pub const F_GETLEASE: u32 = 1025; +pub const F_CANCELLK: u32 = 1029; +pub const F_DUPFD_CLOEXEC: u32 = 1030; +pub const F_NOTIFY: u32 = 1026; +pub const F_SETPIPE_SZ: u32 = 1031; +pub const F_GETPIPE_SZ: u32 = 1032; +pub const F_ADD_SEALS: u32 = 1033; +pub const F_GET_SEALS: u32 = 1034; +pub const F_SEAL_SEAL: u32 = 1; +pub const F_SEAL_SHRINK: u32 = 2; +pub const F_SEAL_GROW: u32 = 4; +pub const F_SEAL_WRITE: u32 = 8; +pub const F_SEAL_FUTURE_WRITE: u32 = 16; +pub const F_SEAL_EXEC: u32 = 32; +pub const F_GET_RW_HINT: u32 = 1035; +pub const F_SET_RW_HINT: u32 = 1036; +pub const F_GET_FILE_RW_HINT: u32 = 1037; +pub const F_SET_FILE_RW_HINT: u32 = 1038; +pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; +pub const RWH_WRITE_LIFE_NONE: u32 = 1; +pub const RWH_WRITE_LIFE_SHORT: u32 = 2; +pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; +pub const RWH_WRITE_LIFE_LONG: u32 = 4; +pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; +pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; +pub const DN_ACCESS: u32 = 1; +pub const DN_MODIFY: u32 = 2; +pub const DN_CREATE: u32 = 4; +pub const DN_DELETE: u32 = 8; +pub const DN_RENAME: u32 = 16; +pub const DN_ATTRIB: u32 = 32; +pub const DN_MULTISHOT: u32 = 2147483648; +pub const AT_FDCWD: i32 = -100; +pub const AT_SYMLINK_NOFOLLOW: u32 = 256; +pub const AT_EACCESS: u32 = 512; +pub const AT_REMOVEDIR: u32 = 512; +pub const AT_SYMLINK_FOLLOW: u32 = 1024; +pub const AT_NO_AUTOMOUNT: u32 = 2048; +pub const AT_EMPTY_PATH: u32 = 4096; +pub const AT_STATX_SYNC_TYPE: u32 = 24576; +pub const AT_STATX_SYNC_AS_STAT: u32 = 0; +pub const AT_STATX_FORCE_SYNC: u32 = 8192; +pub const AT_STATX_DONT_SYNC: u32 = 16384; +pub const AT_RECURSIVE: u32 = 32768; +pub const EPOLL_CLOEXEC: u32 = 524288; +pub const EPOLL_CTL_ADD: u32 = 1; +pub const EPOLL_CTL_DEL: u32 = 2; +pub const EPOLL_CTL_MOD: u32 = 3; +pub const POSIX_FADV_NORMAL: u32 = 0; +pub const POSIX_FADV_RANDOM: u32 = 1; +pub const POSIX_FADV_SEQUENTIAL: u32 = 2; +pub const POSIX_FADV_WILLNEED: u32 = 3; +pub const POSIX_FADV_DONTNEED: u32 = 6; +pub const POSIX_FADV_NOREUSE: u32 = 7; +pub const FALLOC_FL_KEEP_SIZE: u32 = 1; +pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; +pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; +pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; +pub const FALLOC_FL_ZERO_RANGE: u32 = 16; +pub const FALLOC_FL_INSERT_RANGE: u32 = 32; +pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 14; +pub const _IOC_DIRBITS: u32 = 2; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 3; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 30; +pub const _IOC_NONE: u32 = 0; +pub const _IOC_WRITE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const IOC_IN: u32 = 1073741824; +pub const IOC_OUT: u32 = 2147483648; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const OPEN_TREE_CLOEXEC: u32 = 524288; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const FUTEX_WAIT: u32 = 0; +pub const FUTEX_WAKE: u32 = 1; +pub const FUTEX_FD: u32 = 2; +pub const FUTEX_REQUEUE: u32 = 3; +pub const FUTEX_CMP_REQUEUE: u32 = 4; +pub const FUTEX_WAKE_OP: u32 = 5; +pub const FUTEX_LOCK_PI: u32 = 6; +pub const FUTEX_UNLOCK_PI: u32 = 7; +pub const FUTEX_TRYLOCK_PI: u32 = 8; +pub const FUTEX_WAIT_BITSET: u32 = 9; +pub const FUTEX_WAKE_BITSET: u32 = 10; +pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; +pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; +pub const FUTEX_LOCK_PI2: u32 = 13; +pub const FUTEX_PRIVATE_FLAG: u32 = 128; +pub const FUTEX_CLOCK_REALTIME: u32 = 256; +pub const FUTEX_CMD_MASK: i32 = -385; +pub const FUTEX_WAIT_PRIVATE: u32 = 128; +pub const FUTEX_WAKE_PRIVATE: u32 = 129; +pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; +pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; +pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; +pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; +pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; +pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; +pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; +pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; +pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; +pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; +pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; +pub const FUTEX_32: u32 = 2; +pub const FUTEX_WAITV_MAX: u32 = 128; +pub const FUTEX_WAITERS: u32 = 2147483648; +pub const FUTEX_OWNER_DIED: u32 = 1073741824; +pub const FUTEX_TID_MASK: u32 = 1073741823; +pub const ROBUST_LIST_LIMIT: u32 = 2048; +pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; +pub const FUTEX_OP_SET: u32 = 0; +pub const FUTEX_OP_ADD: u32 = 1; +pub const FUTEX_OP_OR: u32 = 2; +pub const FUTEX_OP_ANDN: u32 = 3; +pub const FUTEX_OP_XOR: u32 = 4; +pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; +pub const FUTEX_OP_CMP_EQ: u32 = 0; +pub const FUTEX_OP_CMP_NE: u32 = 1; +pub const FUTEX_OP_CMP_LT: u32 = 2; +pub const FUTEX_OP_CMP_LE: u32 = 3; +pub const FUTEX_OP_CMP_GT: u32 = 4; +pub const FUTEX_OP_CMP_GE: u32 = 5; +pub const IN_ACCESS: u32 = 1; +pub const IN_MODIFY: u32 = 2; +pub const IN_ATTRIB: u32 = 4; +pub const IN_CLOSE_WRITE: u32 = 8; +pub const IN_CLOSE_NOWRITE: u32 = 16; +pub const IN_OPEN: u32 = 32; +pub const IN_MOVED_FROM: u32 = 64; +pub const IN_MOVED_TO: u32 = 128; +pub const IN_CREATE: u32 = 256; +pub const IN_DELETE: u32 = 512; +pub const IN_DELETE_SELF: u32 = 1024; +pub const IN_MOVE_SELF: u32 = 2048; +pub const IN_UNMOUNT: u32 = 8192; +pub const IN_Q_OVERFLOW: u32 = 16384; +pub const IN_IGNORED: u32 = 32768; +pub const IN_CLOSE: u32 = 24; +pub const IN_MOVE: u32 = 192; +pub const IN_ONLYDIR: u32 = 16777216; +pub const IN_DONT_FOLLOW: u32 = 33554432; +pub const IN_EXCL_UNLINK: u32 = 67108864; +pub const IN_MASK_CREATE: u32 = 268435456; +pub const IN_MASK_ADD: u32 = 536870912; +pub const IN_ISDIR: u32 = 1073741824; +pub const IN_ONESHOT: u32 = 2147483648; +pub const IN_ALL_EVENTS: u32 = 4095; +pub const IN_CLOEXEC: u32 = 524288; +pub const IN_NONBLOCK: u32 = 2048; +pub const ADFS_SUPER_MAGIC: u32 = 44533; +pub const AFFS_SUPER_MAGIC: u32 = 44543; +pub const AFS_SUPER_MAGIC: u32 = 1397113167; +pub const AUTOFS_SUPER_MAGIC: u32 = 391; +pub const CEPH_SUPER_MAGIC: u32 = 12805120; +pub const CODA_SUPER_MAGIC: u32 = 1937076805; +pub const CRAMFS_MAGIC: u32 = 684539205; +pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; +pub const DEBUGFS_MAGIC: u32 = 1684170528; +pub const SECURITYFS_MAGIC: u32 = 1935894131; +pub const SELINUX_MAGIC: u32 = 4185718668; +pub const SMACK_MAGIC: u32 = 1128357203; +pub const RAMFS_MAGIC: u32 = 2240043254; +pub const TMPFS_MAGIC: u32 = 16914836; +pub const HUGETLBFS_MAGIC: u32 = 2508478710; +pub const SQUASHFS_MAGIC: u32 = 1936814952; +pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; +pub const EFS_SUPER_MAGIC: u32 = 4278867; +pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; +pub const EXT2_SUPER_MAGIC: u32 = 61267; +pub const EXT3_SUPER_MAGIC: u32 = 61267; +pub const XENFS_SUPER_MAGIC: u32 = 2881100148; +pub const EXT4_SUPER_MAGIC: u32 = 61267; +pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; +pub const NILFS_SUPER_MAGIC: u32 = 13364; +pub const F2FS_SUPER_MAGIC: u32 = 4076150800; +pub const HPFS_SUPER_MAGIC: u32 = 4187351113; +pub const ISOFS_SUPER_MAGIC: u32 = 38496; +pub const JFFS2_SUPER_MAGIC: u32 = 29366; +pub const XFS_SUPER_MAGIC: u32 = 1481003842; +pub const PSTOREFS_MAGIC: u32 = 1634035564; +pub const EFIVARFS_MAGIC: u32 = 3730735588; +pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; +pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; +pub const FUSE_SUPER_MAGIC: u32 = 1702057286; +pub const MINIX_SUPER_MAGIC: u32 = 4991; +pub const MINIX_SUPER_MAGIC2: u32 = 5007; +pub const MINIX2_SUPER_MAGIC: u32 = 9320; +pub const MINIX2_SUPER_MAGIC2: u32 = 9336; +pub const MINIX3_SUPER_MAGIC: u32 = 19802; +pub const MSDOS_SUPER_MAGIC: u32 = 19780; +pub const EXFAT_SUPER_MAGIC: u32 = 538032816; +pub const NCP_SUPER_MAGIC: u32 = 22092; +pub const NFS_SUPER_MAGIC: u32 = 26985; +pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; +pub const OPENPROM_SUPER_MAGIC: u32 = 40865; +pub const QNX4_SUPER_MAGIC: u32 = 47; +pub const QNX6_SUPER_MAGIC: u32 = 1746473250; +pub const AFS_FS_MAGIC: u32 = 1799439955; +pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; +pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9] = b"ReIsErFs\0"; +pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr2Fs\0"; +pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr3Fs\0"; +pub const SMB_SUPER_MAGIC: u32 = 20859; +pub const CIFS_SUPER_MAGIC: u32 = 4283649346; +pub const SMB2_SUPER_MAGIC: u32 = 4266872130; +pub const CGROUP_SUPER_MAGIC: u32 = 2613483; +pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; +pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; +pub const STACK_END_MAGIC: u32 = 1470918301; +pub const TRACEFS_MAGIC: u32 = 1953653091; +pub const V9FS_MAGIC: u32 = 16914839; +pub const BDEVFS_MAGIC: u32 = 1650746742; +pub const DAXFS_MAGIC: u32 = 1684300152; +pub const BINFMTFS_MAGIC: u32 = 1112100429; +pub const DEVPTS_SUPER_MAGIC: u32 = 7377; +pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; +pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; +pub const PIPEFS_MAGIC: u32 = 1346981957; +pub const PROC_SUPER_MAGIC: u32 = 40864; +pub const SOCKFS_MAGIC: u32 = 1397703499; +pub const SYSFS_MAGIC: u32 = 1650812274; +pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; +pub const MTD_INODE_FS_MAGIC: u32 = 288389204; +pub const ANON_INODE_FS_MAGIC: u32 = 151263540; +pub const BTRFS_TEST_MAGIC: u32 = 1936880249; +pub const NSFS_MAGIC: u32 = 1853056627; +pub const BPF_FS_MAGIC: u32 = 3405662737; +pub const AAFS_MAGIC: u32 = 1513908720; +pub const ZONEFS_MAGIC: u32 = 1515144787; +pub const UDF_SUPER_MAGIC: u32 = 352400198; +pub const DMA_BUF_MAGIC: u32 = 1145913666; +pub const DEVMEM_MAGIC: u32 = 1162691661; +pub const SECRETMEM_MAGIC: u32 = 1397048141; +pub const PROT_READ: u32 = 1; +pub const PROT_WRITE: u32 = 2; +pub const PROT_EXEC: u32 = 4; +pub const PROT_SEM: u32 = 8; +pub const PROT_NONE: u32 = 0; +pub const PROT_GROWSDOWN: u32 = 16777216; +pub const PROT_GROWSUP: u32 = 33554432; +pub const MAP_TYPE: u32 = 15; +pub const MAP_FIXED: u32 = 16; +pub const MAP_ANONYMOUS: u32 = 32; +pub const MAP_POPULATE: u32 = 32768; +pub const MAP_NONBLOCK: u32 = 65536; +pub const MAP_STACK: u32 = 131072; +pub const MAP_HUGETLB: u32 = 262144; +pub const MAP_SYNC: u32 = 524288; +pub const MAP_FIXED_NOREPLACE: u32 = 1048576; +pub const MAP_UNINITIALIZED: u32 = 67108864; +pub const MLOCK_ONFAULT: u32 = 1; +pub const MS_ASYNC: u32 = 1; +pub const MS_INVALIDATE: u32 = 2; +pub const MS_SYNC: u32 = 4; +pub const MADV_NORMAL: u32 = 0; +pub const MADV_RANDOM: u32 = 1; +pub const MADV_SEQUENTIAL: u32 = 2; +pub const MADV_WILLNEED: u32 = 3; +pub const MADV_DONTNEED: u32 = 4; +pub const MADV_FREE: u32 = 8; +pub const MADV_REMOVE: u32 = 9; +pub const MADV_DONTFORK: u32 = 10; +pub const MADV_DOFORK: u32 = 11; +pub const MADV_HWPOISON: u32 = 100; +pub const MADV_SOFT_OFFLINE: u32 = 101; +pub const MADV_MERGEABLE: u32 = 12; +pub const MADV_UNMERGEABLE: u32 = 13; +pub const MADV_HUGEPAGE: u32 = 14; +pub const MADV_NOHUGEPAGE: u32 = 15; +pub const MADV_DONTDUMP: u32 = 16; +pub const MADV_DODUMP: u32 = 17; +pub const MADV_WIPEONFORK: u32 = 18; +pub const MADV_KEEPONFORK: u32 = 19; +pub const MADV_COLD: u32 = 20; +pub const MADV_PAGEOUT: u32 = 21; +pub const MADV_POPULATE_READ: u32 = 22; +pub const MADV_POPULATE_WRITE: u32 = 23; +pub const MADV_DONTNEED_LOCKED: u32 = 24; +pub const MADV_COLLAPSE: u32 = 25; +pub const MAP_FILE: u32 = 0; +pub const PKEY_DISABLE_ACCESS: u32 = 1; +pub const PKEY_DISABLE_WRITE: u32 = 2; +pub const PKEY_ACCESS_MASK: u32 = 3; +pub const MAP_GROWSDOWN: u32 = 256; +pub const MAP_DENYWRITE: u32 = 2048; +pub const MAP_EXECUTABLE: u32 = 4096; +pub const MAP_LOCKED: u32 = 8192; +pub const MAP_NORESERVE: u32 = 16384; +pub const MCL_CURRENT: u32 = 1; +pub const MCL_FUTURE: u32 = 2; +pub const MCL_ONFAULT: u32 = 4; +pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; +pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; +pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; +pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; +pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; +pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; +pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; +pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; +pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; +pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; +pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; +pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; +pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; +pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; +pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; +pub const MREMAP_MAYMOVE: u32 = 1; +pub const MREMAP_FIXED: u32 = 2; +pub const MREMAP_DONTUNMAP: u32 = 4; +pub const OVERCOMMIT_GUESS: u32 = 0; +pub const OVERCOMMIT_ALWAYS: u32 = 1; +pub const OVERCOMMIT_NEVER: u32 = 2; +pub const MAP_SHARED: u32 = 1; +pub const MAP_PRIVATE: u32 = 2; +pub const MAP_SHARED_VALIDATE: u32 = 3; +pub const MAP_HUGE_SHIFT: u32 = 26; +pub const MAP_HUGE_MASK: u32 = 63; +pub const MAP_HUGE_16KB: u32 = 939524096; +pub const MAP_HUGE_64KB: u32 = 1073741824; +pub const MAP_HUGE_512KB: u32 = 1275068416; +pub const MAP_HUGE_1MB: u32 = 1342177280; +pub const MAP_HUGE_2MB: u32 = 1409286144; +pub const MAP_HUGE_8MB: u32 = 1543503872; +pub const MAP_HUGE_16MB: u32 = 1610612736; +pub const MAP_HUGE_32MB: u32 = 1677721600; +pub const MAP_HUGE_256MB: u32 = 1879048192; +pub const MAP_HUGE_512MB: u32 = 1946157056; +pub const MAP_HUGE_1GB: u32 = 2013265920; +pub const MAP_HUGE_2GB: u32 = 2080374784; +pub const MAP_HUGE_16GB: u32 = 2281701376; +pub const POLLIN: u32 = 1; +pub const POLLPRI: u32 = 2; +pub const POLLOUT: u32 = 4; +pub const POLLERR: u32 = 8; +pub const POLLHUP: u32 = 16; +pub const POLLNVAL: u32 = 32; +pub const POLLRDNORM: u32 = 64; +pub const POLLRDBAND: u32 = 128; +pub const POLLWRNORM: u32 = 256; +pub const POLLWRBAND: u32 = 512; +pub const POLLMSG: u32 = 1024; +pub const POLLREMOVE: u32 = 4096; +pub const POLLRDHUP: u32 = 8192; +pub const GRND_NONBLOCK: u32 = 1; +pub const GRND_RANDOM: u32 = 2; +pub const GRND_INSECURE: u32 = 4; +pub const ITIMER_REAL: u32 = 0; +pub const ITIMER_VIRTUAL: u32 = 1; +pub const ITIMER_PROF: u32 = 2; +pub const CLOCK_REALTIME: u32 = 0; +pub const CLOCK_MONOTONIC: u32 = 1; +pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; +pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; +pub const CLOCK_MONOTONIC_RAW: u32 = 4; +pub const CLOCK_REALTIME_COARSE: u32 = 5; +pub const CLOCK_MONOTONIC_COARSE: u32 = 6; +pub const CLOCK_BOOTTIME: u32 = 7; +pub const CLOCK_REALTIME_ALARM: u32 = 8; +pub const CLOCK_BOOTTIME_ALARM: u32 = 9; +pub const CLOCK_SGI_CYCLE: u32 = 10; +pub const CLOCK_TAI: u32 = 11; +pub const MAX_CLOCKS: u32 = 16; +pub const CLOCKS_MASK: u32 = 1; +pub const CLOCKS_MONO: u32 = 1; +pub const TIMER_ABSTIME: u32 = 1; +pub const RUSAGE_SELF: u32 = 0; +pub const RUSAGE_CHILDREN: i32 = -1; +pub const RUSAGE_BOTH: i32 = -2; +pub const RUSAGE_THREAD: u32 = 1; +pub const RLIM64_INFINITY: i32 = -1; +pub const PRIO_MIN: i32 = -20; +pub const PRIO_MAX: u32 = 20; +pub const PRIO_PROCESS: u32 = 0; +pub const PRIO_PGRP: u32 = 1; +pub const PRIO_USER: u32 = 2; +pub const _STK_LIM: u32 = 8388608; +pub const MLOCK_LIMIT: u32 = 8388608; +pub const RLIMIT_CPU: u32 = 0; +pub const RLIMIT_FSIZE: u32 = 1; +pub const RLIMIT_DATA: u32 = 2; +pub const RLIMIT_STACK: u32 = 3; +pub const RLIMIT_CORE: u32 = 4; +pub const RLIMIT_RSS: u32 = 5; +pub const RLIMIT_NPROC: u32 = 6; +pub const RLIMIT_NOFILE: u32 = 7; +pub const RLIMIT_MEMLOCK: u32 = 8; +pub const RLIMIT_AS: u32 = 9; +pub const RLIMIT_LOCKS: u32 = 10; +pub const RLIMIT_SIGPENDING: u32 = 11; +pub const RLIMIT_MSGQUEUE: u32 = 12; +pub const RLIMIT_NICE: u32 = 13; +pub const RLIMIT_RTPRIO: u32 = 14; +pub const RLIMIT_RTTIME: u32 = 15; +pub const RLIM_NLIMITS: u32 = 16; +pub const RLIM_INFINITY: i32 = -1; +pub const CSIGNAL: u32 = 255; +pub const CLONE_VM: u32 = 256; +pub const CLONE_FS: u32 = 512; +pub const CLONE_FILES: u32 = 1024; +pub const CLONE_SIGHAND: u32 = 2048; +pub const CLONE_PIDFD: u32 = 4096; +pub const CLONE_PTRACE: u32 = 8192; +pub const CLONE_VFORK: u32 = 16384; +pub const CLONE_PARENT: u32 = 32768; +pub const CLONE_THREAD: u32 = 65536; +pub const CLONE_NEWNS: u32 = 131072; +pub const CLONE_SYSVSEM: u32 = 262144; +pub const CLONE_SETTLS: u32 = 524288; +pub const CLONE_PARENT_SETTID: u32 = 1048576; +pub const CLONE_CHILD_CLEARTID: u32 = 2097152; +pub const CLONE_DETACHED: u32 = 4194304; +pub const CLONE_UNTRACED: u32 = 8388608; +pub const CLONE_CHILD_SETTID: u32 = 16777216; +pub const CLONE_NEWCGROUP: u32 = 33554432; +pub const CLONE_NEWUTS: u32 = 67108864; +pub const CLONE_NEWIPC: u32 = 134217728; +pub const CLONE_NEWUSER: u32 = 268435456; +pub const CLONE_NEWPID: u32 = 536870912; +pub const CLONE_NEWNET: u32 = 1073741824; +pub const CLONE_IO: u32 = 2147483648; +pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; +pub const CLONE_INTO_CGROUP: u64 = 8589934592; +pub const CLONE_NEWTIME: u32 = 128; +pub const CLONE_ARGS_SIZE_VER0: u32 = 64; +pub const CLONE_ARGS_SIZE_VER1: u32 = 80; +pub const CLONE_ARGS_SIZE_VER2: u32 = 88; +pub const SCHED_NORMAL: u32 = 0; +pub const SCHED_FIFO: u32 = 1; +pub const SCHED_RR: u32 = 2; +pub const SCHED_BATCH: u32 = 3; +pub const SCHED_IDLE: u32 = 5; +pub const SCHED_DEADLINE: u32 = 6; +pub const SCHED_RESET_ON_FORK: u32 = 1073741824; +pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; +pub const SCHED_FLAG_RECLAIM: u32 = 2; +pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; +pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; +pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; +pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; +pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; +pub const SCHED_FLAG_KEEP_ALL: u32 = 24; +pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; +pub const SCHED_FLAG_ALL: u32 = 127; +pub const NSIG: u32 = 32; +pub const SIGHUP: u32 = 1; +pub const SIGINT: u32 = 2; +pub const SIGQUIT: u32 = 3; +pub const SIGILL: u32 = 4; +pub const SIGTRAP: u32 = 5; +pub const SIGABRT: u32 = 6; +pub const SIGIOT: u32 = 6; +pub const SIGBUS: u32 = 7; +pub const SIGFPE: u32 = 8; +pub const SIGKILL: u32 = 9; +pub const SIGUSR1: u32 = 10; +pub const SIGSEGV: u32 = 11; +pub const SIGUSR2: u32 = 12; +pub const SIGPIPE: u32 = 13; +pub const SIGALRM: u32 = 14; +pub const SIGTERM: u32 = 15; +pub const SIGSTKFLT: u32 = 16; +pub const SIGCHLD: u32 = 17; +pub const SIGCONT: u32 = 18; +pub const SIGSTOP: u32 = 19; +pub const SIGTSTP: u32 = 20; +pub const SIGTTIN: u32 = 21; +pub const SIGTTOU: u32 = 22; +pub const SIGURG: u32 = 23; +pub const SIGXCPU: u32 = 24; +pub const SIGXFSZ: u32 = 25; +pub const SIGVTALRM: u32 = 26; +pub const SIGPROF: u32 = 27; +pub const SIGWINCH: u32 = 28; +pub const SIGIO: u32 = 29; +pub const SIGPOLL: u32 = 29; +pub const SIGPWR: u32 = 30; +pub const SIGSYS: u32 = 31; +pub const SIGUNUSED: u32 = 31; +pub const SIGRTMIN: u32 = 32; +pub const SA_RESTORER: u32 = 67108864; +pub const MINSIGSTKSZ: u32 = 2048; +pub const SIGSTKSZ: u32 = 8192; +pub const SA_NOCLDSTOP: u32 = 1; +pub const SA_NOCLDWAIT: u32 = 2; +pub const SA_SIGINFO: u32 = 4; +pub const SA_UNSUPPORTED: u32 = 1024; +pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SA_ONSTACK: u32 = 134217728; +pub const SA_RESTART: u32 = 268435456; +pub const SA_NODEFER: u32 = 1073741824; +pub const SA_RESETHAND: u32 = 2147483648; +pub const SA_NOMASK: u32 = 1073741824; +pub const SA_ONESHOT: u32 = 2147483648; +pub const SIG_BLOCK: u32 = 0; +pub const SIG_UNBLOCK: u32 = 1; +pub const SIG_SETMASK: u32 = 2; +pub const SI_MAX_SIZE: u32 = 128; +pub const SI_USER: u32 = 0; +pub const SI_KERNEL: u32 = 128; +pub const SI_QUEUE: i32 = -1; +pub const SI_TIMER: i32 = -2; +pub const SI_MESGQ: i32 = -3; +pub const SI_ASYNCIO: i32 = -4; +pub const SI_SIGIO: i32 = -5; +pub const SI_TKILL: i32 = -6; +pub const SI_DETHREAD: i32 = -7; +pub const SI_ASYNCNL: i32 = -60; +pub const ILL_ILLOPC: u32 = 1; +pub const ILL_ILLOPN: u32 = 2; +pub const ILL_ILLADR: u32 = 3; +pub const ILL_ILLTRP: u32 = 4; +pub const ILL_PRVOPC: u32 = 5; +pub const ILL_PRVREG: u32 = 6; +pub const ILL_COPROC: u32 = 7; +pub const ILL_BADSTK: u32 = 8; +pub const ILL_BADIADDR: u32 = 9; +pub const __ILL_BREAK: u32 = 10; +pub const __ILL_BNDMOD: u32 = 11; +pub const NSIGILL: u32 = 11; +pub const FPE_INTDIV: u32 = 1; +pub const FPE_INTOVF: u32 = 2; +pub const FPE_FLTDIV: u32 = 3; +pub const FPE_FLTOVF: u32 = 4; +pub const FPE_FLTUND: u32 = 5; +pub const FPE_FLTRES: u32 = 6; +pub const FPE_FLTINV: u32 = 7; +pub const FPE_FLTSUB: u32 = 8; +pub const __FPE_DECOVF: u32 = 9; +pub const __FPE_DECDIV: u32 = 10; +pub const __FPE_DECERR: u32 = 11; +pub const __FPE_INVASC: u32 = 12; +pub const __FPE_INVDEC: u32 = 13; +pub const FPE_FLTUNK: u32 = 14; +pub const FPE_CONDTRAP: u32 = 15; +pub const NSIGFPE: u32 = 15; +pub const SEGV_MAPERR: u32 = 1; +pub const SEGV_ACCERR: u32 = 2; +pub const SEGV_BNDERR: u32 = 3; +pub const SEGV_PKUERR: u32 = 4; +pub const SEGV_ACCADI: u32 = 5; +pub const SEGV_ADIDERR: u32 = 6; +pub const SEGV_ADIPERR: u32 = 7; +pub const SEGV_MTEAERR: u32 = 8; +pub const SEGV_MTESERR: u32 = 9; +pub const NSIGSEGV: u32 = 9; +pub const BUS_ADRALN: u32 = 1; +pub const BUS_ADRERR: u32 = 2; +pub const BUS_OBJERR: u32 = 3; +pub const BUS_MCEERR_AR: u32 = 4; +pub const BUS_MCEERR_AO: u32 = 5; +pub const NSIGBUS: u32 = 5; +pub const TRAP_BRKPT: u32 = 1; +pub const TRAP_TRACE: u32 = 2; +pub const TRAP_BRANCH: u32 = 3; +pub const TRAP_HWBKPT: u32 = 4; +pub const TRAP_UNK: u32 = 5; +pub const TRAP_PERF: u32 = 6; +pub const NSIGTRAP: u32 = 6; +pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; +pub const CLD_EXITED: u32 = 1; +pub const CLD_KILLED: u32 = 2; +pub const CLD_DUMPED: u32 = 3; +pub const CLD_TRAPPED: u32 = 4; +pub const CLD_STOPPED: u32 = 5; +pub const CLD_CONTINUED: u32 = 6; +pub const NSIGCHLD: u32 = 6; +pub const POLL_IN: u32 = 1; +pub const POLL_OUT: u32 = 2; +pub const POLL_MSG: u32 = 3; +pub const POLL_ERR: u32 = 4; +pub const POLL_PRI: u32 = 5; +pub const POLL_HUP: u32 = 6; +pub const NSIGPOLL: u32 = 6; +pub const SYS_SECCOMP: u32 = 1; +pub const SYS_USER_DISPATCH: u32 = 2; +pub const NSIGSYS: u32 = 2; +pub const EMT_TAGOVF: u32 = 1; +pub const NSIGEMT: u32 = 1; +pub const SIGEV_SIGNAL: u32 = 0; +pub const SIGEV_NONE: u32 = 1; +pub const SIGEV_THREAD: u32 = 2; +pub const SIGEV_THREAD_ID: u32 = 4; +pub const SIGEV_MAX_SIZE: u32 = 64; +pub const SS_ONSTACK: u32 = 1; +pub const SS_DISABLE: u32 = 2; +pub const SS_AUTODISARM: u32 = 2147483648; +pub const SS_FLAG_BITS: u32 = 2147483648; +pub const S_IFMT: u32 = 61440; +pub const S_IFSOCK: u32 = 49152; +pub const S_IFLNK: u32 = 40960; +pub const S_IFREG: u32 = 32768; +pub const S_IFBLK: u32 = 24576; +pub const S_IFDIR: u32 = 16384; +pub const S_IFCHR: u32 = 8192; +pub const S_IFIFO: u32 = 4096; +pub const S_ISUID: u32 = 2048; +pub const S_ISGID: u32 = 1024; +pub const S_ISVTX: u32 = 512; +pub const S_IRWXU: u32 = 448; +pub const S_IRUSR: u32 = 256; +pub const S_IWUSR: u32 = 128; +pub const S_IXUSR: u32 = 64; +pub const S_IRWXG: u32 = 56; +pub const S_IRGRP: u32 = 32; +pub const S_IWGRP: u32 = 16; +pub const S_IXGRP: u32 = 8; +pub const S_IRWXO: u32 = 7; +pub const S_IROTH: u32 = 4; +pub const S_IWOTH: u32 = 2; +pub const S_IXOTH: u32 = 1; +pub const STATX_TYPE: u32 = 1; +pub const STATX_MODE: u32 = 2; +pub const STATX_NLINK: u32 = 4; +pub const STATX_UID: u32 = 8; +pub const STATX_GID: u32 = 16; +pub const STATX_ATIME: u32 = 32; +pub const STATX_MTIME: u32 = 64; +pub const STATX_CTIME: u32 = 128; +pub const STATX_INO: u32 = 256; +pub const STATX_SIZE: u32 = 512; +pub const STATX_BLOCKS: u32 = 1024; +pub const STATX_BASIC_STATS: u32 = 2047; +pub const STATX_BTIME: u32 = 2048; +pub const STATX_MNT_ID: u32 = 4096; +pub const STATX_DIOALIGN: u32 = 8192; +pub const STATX__RESERVED: u32 = 2147483648; +pub const STATX_ALL: u32 = 4095; +pub const STATX_ATTR_COMPRESSED: u32 = 4; +pub const STATX_ATTR_IMMUTABLE: u32 = 16; +pub const STATX_ATTR_APPEND: u32 = 32; +pub const STATX_ATTR_NODUMP: u32 = 64; +pub const STATX_ATTR_ENCRYPTED: u32 = 2048; +pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; +pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; +pub const STATX_ATTR_VERITY: u32 = 1048576; +pub const STATX_ATTR_DAX: u32 = 2097152; +pub const IGNBRK: u32 = 1; +pub const BRKINT: u32 = 2; +pub const IGNPAR: u32 = 4; +pub const PARMRK: u32 = 8; +pub const INPCK: u32 = 16; +pub const ISTRIP: u32 = 32; +pub const INLCR: u32 = 64; +pub const IGNCR: u32 = 128; +pub const ICRNL: u32 = 256; +pub const IXANY: u32 = 2048; +pub const OPOST: u32 = 1; +pub const OCRNL: u32 = 8; +pub const ONOCR: u32 = 16; +pub const ONLRET: u32 = 32; +pub const OFILL: u32 = 64; +pub const OFDEL: u32 = 128; +pub const B0: u32 = 0; +pub const B50: u32 = 1; +pub const B75: u32 = 2; +pub const B110: u32 = 3; +pub const B134: u32 = 4; +pub const B150: u32 = 5; +pub const B200: u32 = 6; +pub const B300: u32 = 7; +pub const B600: u32 = 8; +pub const B1200: u32 = 9; +pub const B1800: u32 = 10; +pub const B2400: u32 = 11; +pub const B4800: u32 = 12; +pub const B9600: u32 = 13; +pub const B19200: u32 = 14; +pub const B38400: u32 = 15; +pub const EXTA: u32 = 14; +pub const EXTB: u32 = 15; +pub const ADDRB: u32 = 536870912; +pub const CMSPAR: u32 = 1073741824; +pub const CRTSCTS: u32 = 2147483648; +pub const IBSHIFT: u32 = 16; +pub const TCOOFF: u32 = 0; +pub const TCOON: u32 = 1; +pub const TCIOFF: u32 = 2; +pub const TCION: u32 = 3; +pub const TCIFLUSH: u32 = 0; +pub const TCOFLUSH: u32 = 1; +pub const TCIOFLUSH: u32 = 2; +pub const NCCS: u32 = 19; +pub const VINTR: u32 = 0; +pub const VQUIT: u32 = 1; +pub const VERASE: u32 = 2; +pub const VKILL: u32 = 3; +pub const VEOF: u32 = 4; +pub const VTIME: u32 = 5; +pub const VMIN: u32 = 6; +pub const VSWTC: u32 = 7; +pub const VSTART: u32 = 8; +pub const VSTOP: u32 = 9; +pub const VSUSP: u32 = 10; +pub const VEOL: u32 = 11; +pub const VREPRINT: u32 = 12; +pub const VDISCARD: u32 = 13; +pub const VWERASE: u32 = 14; +pub const VLNEXT: u32 = 15; +pub const VEOL2: u32 = 16; +pub const IUCLC: u32 = 512; +pub const IXON: u32 = 1024; +pub const IXOFF: u32 = 4096; +pub const IMAXBEL: u32 = 8192; +pub const IUTF8: u32 = 16384; +pub const OLCUC: u32 = 2; +pub const ONLCR: u32 = 4; +pub const NLDLY: u32 = 256; +pub const NL0: u32 = 0; +pub const NL1: u32 = 256; +pub const CRDLY: u32 = 1536; +pub const CR0: u32 = 0; +pub const CR1: u32 = 512; +pub const CR2: u32 = 1024; +pub const CR3: u32 = 1536; +pub const TABDLY: u32 = 6144; +pub const TAB0: u32 = 0; +pub const TAB1: u32 = 2048; +pub const TAB2: u32 = 4096; +pub const TAB3: u32 = 6144; +pub const XTABS: u32 = 6144; +pub const BSDLY: u32 = 8192; +pub const BS0: u32 = 0; +pub const BS1: u32 = 8192; +pub const VTDLY: u32 = 16384; +pub const VT0: u32 = 0; +pub const VT1: u32 = 16384; +pub const FFDLY: u32 = 32768; +pub const FF0: u32 = 0; +pub const FF1: u32 = 32768; +pub const CBAUD: u32 = 4111; +pub const CSIZE: u32 = 48; +pub const CS5: u32 = 0; +pub const CS6: u32 = 16; +pub const CS7: u32 = 32; +pub const CS8: u32 = 48; +pub const CSTOPB: u32 = 64; +pub const CREAD: u32 = 128; +pub const PARENB: u32 = 256; +pub const PARODD: u32 = 512; +pub const HUPCL: u32 = 1024; +pub const CLOCAL: u32 = 2048; +pub const CBAUDEX: u32 = 4096; +pub const BOTHER: u32 = 4096; +pub const B57600: u32 = 4097; +pub const B115200: u32 = 4098; +pub const B230400: u32 = 4099; +pub const B460800: u32 = 4100; +pub const B500000: u32 = 4101; +pub const B576000: u32 = 4102; +pub const B921600: u32 = 4103; +pub const B1000000: u32 = 4104; +pub const B1152000: u32 = 4105; +pub const B1500000: u32 = 4106; +pub const B2000000: u32 = 4107; +pub const B2500000: u32 = 4108; +pub const B3000000: u32 = 4109; +pub const B3500000: u32 = 4110; +pub const B4000000: u32 = 4111; +pub const CIBAUD: u32 = 269418496; +pub const ISIG: u32 = 1; +pub const ICANON: u32 = 2; +pub const XCASE: u32 = 4; +pub const ECHO: u32 = 8; +pub const ECHOE: u32 = 16; +pub const ECHOK: u32 = 32; +pub const ECHONL: u32 = 64; +pub const NOFLSH: u32 = 128; +pub const TOSTOP: u32 = 256; +pub const ECHOCTL: u32 = 512; +pub const ECHOPRT: u32 = 1024; +pub const ECHOKE: u32 = 2048; +pub const FLUSHO: u32 = 4096; +pub const PENDIN: u32 = 16384; +pub const IEXTEN: u32 = 32768; +pub const EXTPROC: u32 = 65536; +pub const TCSANOW: u32 = 0; +pub const TCSADRAIN: u32 = 1; +pub const TCSAFLUSH: u32 = 2; +pub const TIOCPKT_DATA: u32 = 0; +pub const TIOCPKT_FLUSHREAD: u32 = 1; +pub const TIOCPKT_FLUSHWRITE: u32 = 2; +pub const TIOCPKT_STOP: u32 = 4; +pub const TIOCPKT_START: u32 = 8; +pub const TIOCPKT_NOSTOP: u32 = 16; +pub const TIOCPKT_DOSTOP: u32 = 32; +pub const TIOCPKT_IOCTL: u32 = 64; +pub const TIOCSER_TEMT: u32 = 1; +pub const NCC: u32 = 8; +pub const TIOCM_LE: u32 = 1; +pub const TIOCM_DTR: u32 = 2; +pub const TIOCM_RTS: u32 = 4; +pub const TIOCM_ST: u32 = 8; +pub const TIOCM_SR: u32 = 16; +pub const TIOCM_CTS: u32 = 32; +pub const TIOCM_CAR: u32 = 64; +pub const TIOCM_RNG: u32 = 128; +pub const TIOCM_DSR: u32 = 256; +pub const TIOCM_CD: u32 = 64; +pub const TIOCM_RI: u32 = 128; +pub const TIOCM_OUT1: u32 = 8192; +pub const TIOCM_OUT2: u32 = 16384; +pub const TIOCM_LOOP: u32 = 32768; +pub const UIO_FASTIOV: u32 = 8; +pub const UIO_MAXIOV: u32 = 1024; +pub const __NR_exit: u32 = 1; +pub const __NR_fork: u32 = 2; +pub const __NR_read: u32 = 3; +pub const __NR_write: u32 = 4; +pub const __NR_open: u32 = 5; +pub const __NR_close: u32 = 6; +pub const __NR_restart_syscall: u32 = 7; +pub const __NR_creat: u32 = 8; +pub const __NR_link: u32 = 9; +pub const __NR_unlink: u32 = 10; +pub const __NR_execve: u32 = 11; +pub const __NR_chdir: u32 = 12; +pub const __NR_mknod: u32 = 14; +pub const __NR_chmod: u32 = 15; +pub const __NR_lseek: u32 = 19; +pub const __NR_getpid: u32 = 20; +pub const __NR_mount: u32 = 21; +pub const __NR_umount: u32 = 22; +pub const __NR_ptrace: u32 = 26; +pub const __NR_alarm: u32 = 27; +pub const __NR_pause: u32 = 29; +pub const __NR_utime: u32 = 30; +pub const __NR_access: u32 = 33; +pub const __NR_nice: u32 = 34; +pub const __NR_sync: u32 = 36; +pub const __NR_kill: u32 = 37; +pub const __NR_rename: u32 = 38; +pub const __NR_mkdir: u32 = 39; +pub const __NR_rmdir: u32 = 40; +pub const __NR_dup: u32 = 41; +pub const __NR_pipe: u32 = 42; +pub const __NR_times: u32 = 43; +pub const __NR_brk: u32 = 45; +pub const __NR_signal: u32 = 48; +pub const __NR_acct: u32 = 51; +pub const __NR_umount2: u32 = 52; +pub const __NR_ioctl: u32 = 54; +pub const __NR_fcntl: u32 = 55; +pub const __NR_setpgid: u32 = 57; +pub const __NR_umask: u32 = 60; +pub const __NR_chroot: u32 = 61; +pub const __NR_ustat: u32 = 62; +pub const __NR_dup2: u32 = 63; +pub const __NR_getppid: u32 = 64; +pub const __NR_getpgrp: u32 = 65; +pub const __NR_setsid: u32 = 66; +pub const __NR_sigaction: u32 = 67; +pub const __NR_sigsuspend: u32 = 72; +pub const __NR_sigpending: u32 = 73; +pub const __NR_sethostname: u32 = 74; +pub const __NR_setrlimit: u32 = 75; +pub const __NR_getrusage: u32 = 77; +pub const __NR_gettimeofday: u32 = 78; +pub const __NR_settimeofday: u32 = 79; +pub const __NR_symlink: u32 = 83; +pub const __NR_readlink: u32 = 85; +pub const __NR_uselib: u32 = 86; +pub const __NR_swapon: u32 = 87; +pub const __NR_reboot: u32 = 88; +pub const __NR_readdir: u32 = 89; +pub const __NR_mmap: u32 = 90; +pub const __NR_munmap: u32 = 91; +pub const __NR_truncate: u32 = 92; +pub const __NR_ftruncate: u32 = 93; +pub const __NR_fchmod: u32 = 94; +pub const __NR_getpriority: u32 = 96; +pub const __NR_setpriority: u32 = 97; +pub const __NR_statfs: u32 = 99; +pub const __NR_fstatfs: u32 = 100; +pub const __NR_socketcall: u32 = 102; +pub const __NR_syslog: u32 = 103; +pub const __NR_setitimer: u32 = 104; +pub const __NR_getitimer: u32 = 105; +pub const __NR_stat: u32 = 106; +pub const __NR_lstat: u32 = 107; +pub const __NR_fstat: u32 = 108; +pub const __NR_lookup_dcookie: u32 = 110; +pub const __NR_vhangup: u32 = 111; +pub const __NR_idle: u32 = 112; +pub const __NR_wait4: u32 = 114; +pub const __NR_swapoff: u32 = 115; +pub const __NR_sysinfo: u32 = 116; +pub const __NR_ipc: u32 = 117; +pub const __NR_fsync: u32 = 118; +pub const __NR_sigreturn: u32 = 119; +pub const __NR_clone: u32 = 120; +pub const __NR_setdomainname: u32 = 121; +pub const __NR_uname: u32 = 122; +pub const __NR_adjtimex: u32 = 124; +pub const __NR_mprotect: u32 = 125; +pub const __NR_sigprocmask: u32 = 126; +pub const __NR_create_module: u32 = 127; +pub const __NR_init_module: u32 = 128; +pub const __NR_delete_module: u32 = 129; +pub const __NR_get_kernel_syms: u32 = 130; +pub const __NR_quotactl: u32 = 131; +pub const __NR_getpgid: u32 = 132; +pub const __NR_fchdir: u32 = 133; +pub const __NR_bdflush: u32 = 134; +pub const __NR_sysfs: u32 = 135; +pub const __NR_personality: u32 = 136; +pub const __NR_afs_syscall: u32 = 137; +pub const __NR_getdents: u32 = 141; +pub const __NR_select: u32 = 142; +pub const __NR_flock: u32 = 143; +pub const __NR_msync: u32 = 144; +pub const __NR_readv: u32 = 145; +pub const __NR_writev: u32 = 146; +pub const __NR_getsid: u32 = 147; +pub const __NR_fdatasync: u32 = 148; +pub const __NR__sysctl: u32 = 149; +pub const __NR_mlock: u32 = 150; +pub const __NR_munlock: u32 = 151; +pub const __NR_mlockall: u32 = 152; +pub const __NR_munlockall: u32 = 153; +pub const __NR_sched_setparam: u32 = 154; +pub const __NR_sched_getparam: u32 = 155; +pub const __NR_sched_setscheduler: u32 = 156; +pub const __NR_sched_getscheduler: u32 = 157; +pub const __NR_sched_yield: u32 = 158; +pub const __NR_sched_get_priority_max: u32 = 159; +pub const __NR_sched_get_priority_min: u32 = 160; +pub const __NR_sched_rr_get_interval: u32 = 161; +pub const __NR_nanosleep: u32 = 162; +pub const __NR_mremap: u32 = 163; +pub const __NR_query_module: u32 = 167; +pub const __NR_poll: u32 = 168; +pub const __NR_nfsservctl: u32 = 169; +pub const __NR_prctl: u32 = 172; +pub const __NR_rt_sigreturn: u32 = 173; +pub const __NR_rt_sigaction: u32 = 174; +pub const __NR_rt_sigprocmask: u32 = 175; +pub const __NR_rt_sigpending: u32 = 176; +pub const __NR_rt_sigtimedwait: u32 = 177; +pub const __NR_rt_sigqueueinfo: u32 = 178; +pub const __NR_rt_sigsuspend: u32 = 179; +pub const __NR_pread64: u32 = 180; +pub const __NR_pwrite64: u32 = 181; +pub const __NR_getcwd: u32 = 183; +pub const __NR_capget: u32 = 184; +pub const __NR_capset: u32 = 185; +pub const __NR_sigaltstack: u32 = 186; +pub const __NR_sendfile: u32 = 187; +pub const __NR_getpmsg: u32 = 188; +pub const __NR_putpmsg: u32 = 189; +pub const __NR_vfork: u32 = 190; +pub const __NR_getrlimit: u32 = 191; +pub const __NR_lchown: u32 = 198; +pub const __NR_getuid: u32 = 199; +pub const __NR_getgid: u32 = 200; +pub const __NR_geteuid: u32 = 201; +pub const __NR_getegid: u32 = 202; +pub const __NR_setreuid: u32 = 203; +pub const __NR_setregid: u32 = 204; +pub const __NR_getgroups: u32 = 205; +pub const __NR_setgroups: u32 = 206; +pub const __NR_fchown: u32 = 207; +pub const __NR_setresuid: u32 = 208; +pub const __NR_getresuid: u32 = 209; +pub const __NR_setresgid: u32 = 210; +pub const __NR_getresgid: u32 = 211; +pub const __NR_chown: u32 = 212; +pub const __NR_setuid: u32 = 213; +pub const __NR_setgid: u32 = 214; +pub const __NR_setfsuid: u32 = 215; +pub const __NR_setfsgid: u32 = 216; +pub const __NR_pivot_root: u32 = 217; +pub const __NR_mincore: u32 = 218; +pub const __NR_madvise: u32 = 219; +pub const __NR_getdents64: u32 = 220; +pub const __NR_readahead: u32 = 222; +pub const __NR_setxattr: u32 = 224; +pub const __NR_lsetxattr: u32 = 225; +pub const __NR_fsetxattr: u32 = 226; +pub const __NR_getxattr: u32 = 227; +pub const __NR_lgetxattr: u32 = 228; +pub const __NR_fgetxattr: u32 = 229; +pub const __NR_listxattr: u32 = 230; +pub const __NR_llistxattr: u32 = 231; +pub const __NR_flistxattr: u32 = 232; +pub const __NR_removexattr: u32 = 233; +pub const __NR_lremovexattr: u32 = 234; +pub const __NR_fremovexattr: u32 = 235; +pub const __NR_gettid: u32 = 236; +pub const __NR_tkill: u32 = 237; +pub const __NR_futex: u32 = 238; +pub const __NR_sched_setaffinity: u32 = 239; +pub const __NR_sched_getaffinity: u32 = 240; +pub const __NR_tgkill: u32 = 241; +pub const __NR_io_setup: u32 = 243; +pub const __NR_io_destroy: u32 = 244; +pub const __NR_io_getevents: u32 = 245; +pub const __NR_io_submit: u32 = 246; +pub const __NR_io_cancel: u32 = 247; +pub const __NR_exit_group: u32 = 248; +pub const __NR_epoll_create: u32 = 249; +pub const __NR_epoll_ctl: u32 = 250; +pub const __NR_epoll_wait: u32 = 251; +pub const __NR_set_tid_address: u32 = 252; +pub const __NR_fadvise64: u32 = 253; +pub const __NR_timer_create: u32 = 254; +pub const __NR_timer_settime: u32 = 255; +pub const __NR_timer_gettime: u32 = 256; +pub const __NR_timer_getoverrun: u32 = 257; +pub const __NR_timer_delete: u32 = 258; +pub const __NR_clock_settime: u32 = 259; +pub const __NR_clock_gettime: u32 = 260; +pub const __NR_clock_getres: u32 = 261; +pub const __NR_clock_nanosleep: u32 = 262; +pub const __NR_statfs64: u32 = 265; +pub const __NR_fstatfs64: u32 = 266; +pub const __NR_remap_file_pages: u32 = 267; +pub const __NR_mbind: u32 = 268; +pub const __NR_get_mempolicy: u32 = 269; +pub const __NR_set_mempolicy: u32 = 270; +pub const __NR_mq_open: u32 = 271; +pub const __NR_mq_unlink: u32 = 272; +pub const __NR_mq_timedsend: u32 = 273; +pub const __NR_mq_timedreceive: u32 = 274; +pub const __NR_mq_notify: u32 = 275; +pub const __NR_mq_getsetattr: u32 = 276; +pub const __NR_kexec_load: u32 = 277; +pub const __NR_add_key: u32 = 278; +pub const __NR_request_key: u32 = 279; +pub const __NR_keyctl: u32 = 280; +pub const __NR_waitid: u32 = 281; +pub const __NR_ioprio_set: u32 = 282; +pub const __NR_ioprio_get: u32 = 283; +pub const __NR_inotify_init: u32 = 284; +pub const __NR_inotify_add_watch: u32 = 285; +pub const __NR_inotify_rm_watch: u32 = 286; +pub const __NR_migrate_pages: u32 = 287; +pub const __NR_openat: u32 = 288; +pub const __NR_mkdirat: u32 = 289; +pub const __NR_mknodat: u32 = 290; +pub const __NR_fchownat: u32 = 291; +pub const __NR_futimesat: u32 = 292; +pub const __NR_newfstatat: u32 = 293; +pub const __NR_unlinkat: u32 = 294; +pub const __NR_renameat: u32 = 295; +pub const __NR_linkat: u32 = 296; +pub const __NR_symlinkat: u32 = 297; +pub const __NR_readlinkat: u32 = 298; +pub const __NR_fchmodat: u32 = 299; +pub const __NR_faccessat: u32 = 300; +pub const __NR_pselect6: u32 = 301; +pub const __NR_ppoll: u32 = 302; +pub const __NR_unshare: u32 = 303; +pub const __NR_set_robust_list: u32 = 304; +pub const __NR_get_robust_list: u32 = 305; +pub const __NR_splice: u32 = 306; +pub const __NR_sync_file_range: u32 = 307; +pub const __NR_tee: u32 = 308; +pub const __NR_vmsplice: u32 = 309; +pub const __NR_move_pages: u32 = 310; +pub const __NR_getcpu: u32 = 311; +pub const __NR_epoll_pwait: u32 = 312; +pub const __NR_utimes: u32 = 313; +pub const __NR_fallocate: u32 = 314; +pub const __NR_utimensat: u32 = 315; +pub const __NR_signalfd: u32 = 316; +pub const __NR_timerfd: u32 = 317; +pub const __NR_eventfd: u32 = 318; +pub const __NR_timerfd_create: u32 = 319; +pub const __NR_timerfd_settime: u32 = 320; +pub const __NR_timerfd_gettime: u32 = 321; +pub const __NR_signalfd4: u32 = 322; +pub const __NR_eventfd2: u32 = 323; +pub const __NR_inotify_init1: u32 = 324; +pub const __NR_pipe2: u32 = 325; +pub const __NR_dup3: u32 = 326; +pub const __NR_epoll_create1: u32 = 327; +pub const __NR_preadv: u32 = 328; +pub const __NR_pwritev: u32 = 329; +pub const __NR_rt_tgsigqueueinfo: u32 = 330; +pub const __NR_perf_event_open: u32 = 331; +pub const __NR_fanotify_init: u32 = 332; +pub const __NR_fanotify_mark: u32 = 333; +pub const __NR_prlimit64: u32 = 334; +pub const __NR_name_to_handle_at: u32 = 335; +pub const __NR_open_by_handle_at: u32 = 336; +pub const __NR_clock_adjtime: u32 = 337; +pub const __NR_syncfs: u32 = 338; +pub const __NR_setns: u32 = 339; +pub const __NR_process_vm_readv: u32 = 340; +pub const __NR_process_vm_writev: u32 = 341; +pub const __NR_s390_runtime_instr: u32 = 342; +pub const __NR_kcmp: u32 = 343; +pub const __NR_finit_module: u32 = 344; +pub const __NR_sched_setattr: u32 = 345; +pub const __NR_sched_getattr: u32 = 346; +pub const __NR_renameat2: u32 = 347; +pub const __NR_seccomp: u32 = 348; +pub const __NR_getrandom: u32 = 349; +pub const __NR_memfd_create: u32 = 350; +pub const __NR_bpf: u32 = 351; +pub const __NR_s390_pci_mmio_write: u32 = 352; +pub const __NR_s390_pci_mmio_read: u32 = 353; +pub const __NR_execveat: u32 = 354; +pub const __NR_userfaultfd: u32 = 355; +pub const __NR_membarrier: u32 = 356; +pub const __NR_recvmmsg: u32 = 357; +pub const __NR_sendmmsg: u32 = 358; +pub const __NR_socket: u32 = 359; +pub const __NR_socketpair: u32 = 360; +pub const __NR_bind: u32 = 361; +pub const __NR_connect: u32 = 362; +pub const __NR_listen: u32 = 363; +pub const __NR_accept4: u32 = 364; +pub const __NR_getsockopt: u32 = 365; +pub const __NR_setsockopt: u32 = 366; +pub const __NR_getsockname: u32 = 367; +pub const __NR_getpeername: u32 = 368; +pub const __NR_sendto: u32 = 369; +pub const __NR_sendmsg: u32 = 370; +pub const __NR_recvfrom: u32 = 371; +pub const __NR_recvmsg: u32 = 372; +pub const __NR_shutdown: u32 = 373; +pub const __NR_mlock2: u32 = 374; +pub const __NR_copy_file_range: u32 = 375; +pub const __NR_preadv2: u32 = 376; +pub const __NR_pwritev2: u32 = 377; +pub const __NR_s390_guarded_storage: u32 = 378; +pub const __NR_statx: u32 = 379; +pub const __NR_s390_sthyi: u32 = 380; +pub const __NR_kexec_file_load: u32 = 381; +pub const __NR_io_pgetevents: u32 = 382; +pub const __NR_rseq: u32 = 383; +pub const __NR_pkey_mprotect: u32 = 384; +pub const __NR_pkey_alloc: u32 = 385; +pub const __NR_pkey_free: u32 = 386; +pub const __NR_semtimedop: u32 = 392; +pub const __NR_semget: u32 = 393; +pub const __NR_semctl: u32 = 394; +pub const __NR_shmget: u32 = 395; +pub const __NR_shmctl: u32 = 396; +pub const __NR_shmat: u32 = 397; +pub const __NR_shmdt: u32 = 398; +pub const __NR_msgget: u32 = 399; +pub const __NR_msgsnd: u32 = 400; +pub const __NR_msgrcv: u32 = 401; +pub const __NR_msgctl: u32 = 402; +pub const __NR_pidfd_send_signal: u32 = 424; +pub const __NR_io_uring_setup: u32 = 425; +pub const __NR_io_uring_enter: u32 = 426; +pub const __NR_io_uring_register: u32 = 427; +pub const __NR_open_tree: u32 = 428; +pub const __NR_move_mount: u32 = 429; +pub const __NR_fsopen: u32 = 430; +pub const __NR_fsconfig: u32 = 431; +pub const __NR_fsmount: u32 = 432; +pub const __NR_fspick: u32 = 433; +pub const __NR_pidfd_open: u32 = 434; +pub const __NR_clone3: u32 = 435; +pub const __NR_close_range: u32 = 436; +pub const __NR_openat2: u32 = 437; +pub const __NR_pidfd_getfd: u32 = 438; +pub const __NR_faccessat2: u32 = 439; +pub const __NR_process_madvise: u32 = 440; +pub const __NR_epoll_pwait2: u32 = 441; +pub const __NR_mount_setattr: u32 = 442; +pub const __NR_quotactl_fd: u32 = 443; +pub const __NR_landlock_create_ruleset: u32 = 444; +pub const __NR_landlock_add_rule: u32 = 445; +pub const __NR_landlock_restrict_self: u32 = 446; +pub const __NR_process_mrelease: u32 = 448; +pub const __NR_futex_waitv: u32 = 449; +pub const __NR_set_mempolicy_home_node: u32 = 450; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const P_ALL: u32 = 0; +pub const P_PID: u32 = 1; +pub const P_PGID: u32 = 2; +pub const P_PIDFD: u32 = 3; +pub const XATTR_CREATE: u32 = 1; +pub const XATTR_REPLACE: u32 = 2; +pub const XATTR_OS2_PREFIX: &[u8; 5] = b"os2.\0"; +pub const XATTR_MAC_OSX_PREFIX: &[u8; 5] = b"osx.\0"; +pub const XATTR_BTRFS_PREFIX: &[u8; 7] = b"btrfs.\0"; +pub const XATTR_HURD_PREFIX: &[u8; 5] = b"gnu.\0"; +pub const XATTR_SECURITY_PREFIX: &[u8; 10] = b"security.\0"; +pub const XATTR_SYSTEM_PREFIX: &[u8; 8] = b"system.\0"; +pub const XATTR_TRUSTED_PREFIX: &[u8; 9] = b"trusted.\0"; +pub const XATTR_USER_PREFIX: &[u8; 6] = b"user.\0"; +pub const XATTR_EVM_SUFFIX: &[u8; 4] = b"evm\0"; +pub const XATTR_NAME_EVM: &[u8; 13] = b"security.evm\0"; +pub const XATTR_IMA_SUFFIX: &[u8; 4] = b"ima\0"; +pub const XATTR_NAME_IMA: &[u8; 13] = b"security.ima\0"; +pub const XATTR_SELINUX_SUFFIX: &[u8; 8] = b"selinux\0"; +pub const XATTR_NAME_SELINUX: &[u8; 17] = b"security.selinux\0"; +pub const XATTR_SMACK_SUFFIX: &[u8; 8] = b"SMACK64\0"; +pub const XATTR_SMACK_IPIN: &[u8; 12] = b"SMACK64IPIN\0"; +pub const XATTR_SMACK_IPOUT: &[u8; 13] = b"SMACK64IPOUT\0"; +pub const XATTR_SMACK_EXEC: &[u8; 12] = b"SMACK64EXEC\0"; +pub const XATTR_SMACK_TRANSMUTE: &[u8; 17] = b"SMACK64TRANSMUTE\0"; +pub const XATTR_SMACK_MMAP: &[u8; 12] = b"SMACK64MMAP\0"; +pub const XATTR_NAME_SMACK: &[u8; 17] = b"security.SMACK64\0"; +pub const XATTR_NAME_SMACKIPIN: &[u8; 21] = b"security.SMACK64IPIN\0"; +pub const XATTR_NAME_SMACKIPOUT: &[u8; 22] = b"security.SMACK64IPOUT\0"; +pub const XATTR_NAME_SMACKEXEC: &[u8; 21] = b"security.SMACK64EXEC\0"; +pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26] = b"security.SMACK64TRANSMUTE\0"; +pub const XATTR_NAME_SMACKMMAP: &[u8; 21] = b"security.SMACK64MMAP\0"; +pub const XATTR_APPARMOR_SUFFIX: &[u8; 9] = b"apparmor\0"; +pub const XATTR_NAME_APPARMOR: &[u8; 18] = b"security.apparmor\0"; +pub const XATTR_CAPS_SUFFIX: &[u8; 11] = b"capability\0"; +pub const XATTR_NAME_CAPS: &[u8; 20] = b"security.capability\0"; +pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17] = b"posix_acl_access\0"; +pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24] = b"system.posix_acl_access\0"; +pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18] = b"posix_acl_default\0"; +pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25] = b"system.posix_acl_default\0"; +pub const MFD_CLOEXEC: u32 = 1; +pub const MFD_ALLOW_SEALING: u32 = 2; +pub const MFD_HUGETLB: u32 = 4; +pub const MFD_NOEXEC_SEAL: u32 = 8; +pub const MFD_EXEC: u32 = 16; +pub const MFD_HUGE_SHIFT: u32 = 26; +pub const MFD_HUGE_MASK: u32 = 63; +pub const MFD_HUGE_64KB: u32 = 1073741824; +pub const MFD_HUGE_512KB: u32 = 1275068416; +pub const MFD_HUGE_1MB: u32 = 1342177280; +pub const MFD_HUGE_2MB: u32 = 1409286144; +pub const MFD_HUGE_8MB: u32 = 1543503872; +pub const MFD_HUGE_16MB: u32 = 1610612736; +pub const MFD_HUGE_32MB: u32 = 1677721600; +pub const MFD_HUGE_256MB: u32 = 1879048192; +pub const MFD_HUGE_512MB: u32 = 1946157056; +pub const MFD_HUGE_1GB: u32 = 2013265920; +pub const MFD_HUGE_2GB: u32 = 2080374784; +pub const MFD_HUGE_16GB: u32 = 2281701376; +pub const TFD_TIMER_ABSTIME: u32 = 1; +pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; +pub const TFD_CLOEXEC: u32 = 524288; +pub const TFD_NONBLOCK: u32 = 2048; +pub const USERFAULTFD_IOC: u32 = 170; +pub const _UFFDIO_REGISTER: u32 = 0; +pub const _UFFDIO_UNREGISTER: u32 = 1; +pub const _UFFDIO_WAKE: u32 = 2; +pub const _UFFDIO_COPY: u32 = 3; +pub const _UFFDIO_ZEROPAGE: u32 = 4; +pub const _UFFDIO_WRITEPROTECT: u32 = 6; +pub const _UFFDIO_CONTINUE: u32 = 7; +pub const _UFFDIO_API: u32 = 63; +pub const UFFDIO: u32 = 170; +pub const UFFD_EVENT_PAGEFAULT: u32 = 18; +pub const UFFD_EVENT_FORK: u32 = 19; +pub const UFFD_EVENT_REMAP: u32 = 20; +pub const UFFD_EVENT_REMOVE: u32 = 21; +pub const UFFD_EVENT_UNMAP: u32 = 22; +pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; +pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; +pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; +pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; +pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; +pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; +pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; +pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; +pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; +pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; +pub const UFFD_FEATURE_SIGBUS: u32 = 128; +pub const UFFD_FEATURE_THREAD_ID: u32 = 256; +pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; +pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; +pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; +pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; +pub const UFFD_USER_MODE_ONLY: u32 = 1; +pub const DT_UNKNOWN: u32 = 0; +pub const DT_FIFO: u32 = 1; +pub const DT_CHR: u32 = 2; +pub const DT_DIR: u32 = 4; +pub const DT_BLK: u32 = 6; +pub const DT_REG: u32 = 8; +pub const DT_LNK: u32 = 10; +pub const DT_SOCK: u32 = 12; +pub const STAT_HAVE_NSEC: u32 = 1; +pub const F_OK: u32 = 0; +pub const R_OK: u32 = 4; +pub const W_OK: u32 = 2; +pub const X_OK: u32 = 1; +pub const UTIME_NOW: u32 = 1073741823; +pub const UTIME_OMIT: u32 = 1073741822; +pub const MNT_FORCE: u32 = 1; +pub const MNT_DETACH: u32 = 2; +pub const MNT_EXPIRE: u32 = 4; +pub const UMOUNT_NOFOLLOW: u32 = 8; +pub const UMOUNT_UNUSED: u32 = 2147483648; +pub const STDIN_FILENO: u32 = 0; +pub const STDOUT_FILENO: u32 = 1; +pub const STDERR_FILENO: u32 = 2; +pub const RWF_HIPRI: u32 = 1; +pub const RWF_DSYNC: u32 = 2; +pub const RWF_SYNC: u32 = 4; +pub const RWF_NOWAIT: u32 = 8; +pub const RWF_APPEND: u32 = 16; +pub const EFD_SEMAPHORE: u32 = 1; +pub const EFD_CLOEXEC: u32 = 524288; +pub const EFD_NONBLOCK: u32 = 2048; +pub const EPOLLIN: u32 = 1; +pub const EPOLLPRI: u32 = 2; +pub const EPOLLOUT: u32 = 4; +pub const EPOLLERR: u32 = 8; +pub const EPOLLHUP: u32 = 16; +pub const EPOLLNVAL: u32 = 32; +pub const EPOLLRDNORM: u32 = 64; +pub const EPOLLRDBAND: u32 = 128; +pub const EPOLLWRNORM: u32 = 256; +pub const EPOLLWRBAND: u32 = 512; +pub const EPOLLMSG: u32 = 1024; +pub const EPOLLRDHUP: u32 = 8192; +pub const EPOLLEXCLUSIVE: u32 = 268435456; +pub const EPOLLWAKEUP: u32 = 536870912; +pub const EPOLLONESHOT: u32 = 1073741824; +pub const EPOLLET: u32 = 2147483648; +pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; +pub const TFD_CREATE_FLAGS: u32 = 526336; +pub const TFD_SETTIME_FLAGS: u32 = 1; +pub const UFFD_API: u32 = 170; +pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; +pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; +pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; +pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; +pub const UFFDIO_COPY_MODE_WP: u32 = 2; +pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; +pub const SPLICE_F_MOVE: u32 = 1; +pub const SPLICE_F_NONBLOCK: u32 = 2; +pub const SPLICE_F_MORE: u32 = 4; +pub const SPLICE_F_GIFT: u32 = 8; +pub const _NSIG: u32 = 64; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, } #[repr(u32)] #[non_exhaustive] @@ -4544,664 +2592,173 @@ pub enum membarrier_cmd_flag { MEMBARRIER_CMD_FLAG_CPU = 1, } -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct uffd_msg { -pub event: __u8, -pub reserved1: __u8, -pub reserved2: __u16, -pub reserved3: __u32, -pub arg: uffd_msg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1 { -pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, -pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, -pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, -pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, -pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { -pub flags: __u64, -pub address: __u64, -pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { -pub ptid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { -pub ufd: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { -pub from: __u64, -pub to: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { -pub start: __u64, -pub end: __u64, -} #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { -pub reserved1: __u64, -pub reserved2: __u64, -pub reserved3: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_api { -pub api: __u64, -pub features: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_range { -pub start: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_register { -pub range: uffdio_range, -pub mode: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_copy { -pub dst: __u64, -pub src: __u64, -pub len: __u64, -pub mode: __u64, -pub copy: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_zeropage { -pub range: uffdio_range, -pub mode: __u64, -pub zeropage: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_writeprotect { -pub range: uffdio_range, -pub mode: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_continue { -pub range: uffdio_range, -pub mode: __u64, -pub mapped: __s64, -} -#[repr(C)] -pub struct io_uring_sqe { -pub opcode: __u8, -pub flags: __u8, -pub ioprio: __u16, -pub fd: __s32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, -pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, -pub len: __u32, -pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, -pub user_data: __u64, -pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, -pub personality: __u16, -pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, -pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_1 { -pub off: __u64, -pub addr2: __u64, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { -pub cmd_op: __u32, -pub __pad1: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_2 { -pub addr: __u64, -pub splice_off_in: __u64, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_3 { -pub rw_flags: __kernel_rwf_t, -pub fsync_flags: __u32, -pub poll_events: __u16, -pub poll32_events: __u32, -pub sync_range_flags: __u32, -pub msg_flags: __u32, -pub timeout_flags: __u32, -pub accept_flags: __u32, -pub cancel_flags: __u32, -pub open_flags: __u32, -pub statx_flags: __u32, -pub fadvise_advice: __u32, -pub splice_flags: __u32, -pub rename_flags: __u32, -pub unlink_flags: __u32, -pub hardlink_flags: __u32, -pub xattr_flags: __u32, -pub msg_ring_flags: __u32, -pub uring_cmd_flags: __u32, -} -#[repr(C, packed)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_4 { -pub buf_index: __u16, -pub buf_group: __u16, +pub union __vector128__bindgen_ty_1 { +pub __bindgen_anon_1: __vector128__bindgen_ty_1__bindgen_ty_1, +pub u: [__u32; 4usize], } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_5 { -pub splice_fd_in: __s32, -pub file_index: __u32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { -pub addr_len: __u16, -pub __pad3: [__u16; 1usize], -} -#[repr(C)] -pub struct io_uring_sqe__bindgen_ty_6 { -pub __bindgen_anon_1: __BindgenUnionField, -pub cmd: __BindgenUnionField<[__u8; 0usize]>, -pub bindgen_union_field: [u64; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { -pub addr3: __u64, -pub __pad2: [__u64; 1usize], -} -pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT; -pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT; -pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT; -pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT; -pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT; -pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT; -pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -IOSQE_FIXED_FILE_BIT = 0, -IOSQE_IO_DRAIN_BIT = 1, -IOSQE_IO_LINK_BIT = 2, -IOSQE_IO_HARDLINK_BIT = 3, -IOSQE_ASYNC_BIT = 4, -IOSQE_BUFFER_SELECT_BIT = 5, -IOSQE_CQE_SKIP_SUCCESS_BIT = 6, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum io_uring_op { -IORING_OP_NOP = 0, -IORING_OP_READV = 1, -IORING_OP_WRITEV = 2, -IORING_OP_FSYNC = 3, -IORING_OP_READ_FIXED = 4, -IORING_OP_WRITE_FIXED = 5, -IORING_OP_POLL_ADD = 6, -IORING_OP_POLL_REMOVE = 7, -IORING_OP_SYNC_FILE_RANGE = 8, -IORING_OP_SENDMSG = 9, -IORING_OP_RECVMSG = 10, -IORING_OP_TIMEOUT = 11, -IORING_OP_TIMEOUT_REMOVE = 12, -IORING_OP_ACCEPT = 13, -IORING_OP_ASYNC_CANCEL = 14, -IORING_OP_LINK_TIMEOUT = 15, -IORING_OP_CONNECT = 16, -IORING_OP_FALLOCATE = 17, -IORING_OP_OPENAT = 18, -IORING_OP_CLOSE = 19, -IORING_OP_FILES_UPDATE = 20, -IORING_OP_STATX = 21, -IORING_OP_READ = 22, -IORING_OP_WRITE = 23, -IORING_OP_FADVISE = 24, -IORING_OP_MADVISE = 25, -IORING_OP_SEND = 26, -IORING_OP_RECV = 27, -IORING_OP_OPENAT2 = 28, -IORING_OP_EPOLL_CTL = 29, -IORING_OP_SPLICE = 30, -IORING_OP_PROVIDE_BUFFERS = 31, -IORING_OP_REMOVE_BUFFERS = 32, -IORING_OP_TEE = 33, -IORING_OP_SHUTDOWN = 34, -IORING_OP_RENAMEAT = 35, -IORING_OP_UNLINKAT = 36, -IORING_OP_MKDIRAT = 37, -IORING_OP_SYMLINKAT = 38, -IORING_OP_LINKAT = 39, -IORING_OP_MSG_RING = 40, -IORING_OP_FSETXATTR = 41, -IORING_OP_SETXATTR = 42, -IORING_OP_FGETXATTR = 43, -IORING_OP_GETXATTR = 44, -IORING_OP_SOCKET = 45, -IORING_OP_URING_CMD = 46, -IORING_OP_SEND_ZC = 47, -IORING_OP_SENDMSG_ZC = 48, -IORING_OP_LAST = 49, -} -pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA; -pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_8 { -IORING_MSG_DATA = 0, -IORING_MSG_SEND_FD = 1, -} -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_cqe { -pub user_data: __u64, -pub res: __s32, -pub flags: __u32, -pub big_cqe: __IncompleteArrayField<__u64>, -} -pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_9 { -IORING_CQE_BUFFER_SHIFT = 16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_sqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub flags: __u32, -pub dropped: __u32, -pub array: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_cqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub overflow: __u32, -pub cqes: __u32, -pub flags: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_params { -pub sq_entries: __u32, -pub cq_entries: __u32, -pub flags: __u32, -pub sq_thread_cpu: __u32, -pub sq_thread_idle: __u32, -pub features: __u32, -pub wq_fd: __u32, -pub resv: [__u32; 3usize], -pub sq_off: io_sqring_offsets, -pub cq_off: io_cqring_offsets, -} -pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS; -pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS; -pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES; -pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES; -pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD; -pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD; -pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE; -pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC; -pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE; -pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY; -pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY; -pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS; -pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS; -pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2; -pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2; -pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2; -pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE; -pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF; -pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF; -pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS; -pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS; -pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS; -pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING; -pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING; -pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL; -pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE; -pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST; -pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_USE_REGISTERED_RING; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_10 { -IORING_REGISTER_BUFFERS = 0, -IORING_UNREGISTER_BUFFERS = 1, -IORING_REGISTER_FILES = 2, -IORING_UNREGISTER_FILES = 3, -IORING_REGISTER_EVENTFD = 4, -IORING_UNREGISTER_EVENTFD = 5, -IORING_REGISTER_FILES_UPDATE = 6, -IORING_REGISTER_EVENTFD_ASYNC = 7, -IORING_REGISTER_PROBE = 8, -IORING_REGISTER_PERSONALITY = 9, -IORING_UNREGISTER_PERSONALITY = 10, -IORING_REGISTER_RESTRICTIONS = 11, -IORING_REGISTER_ENABLE_RINGS = 12, -IORING_REGISTER_FILES2 = 13, -IORING_REGISTER_FILES_UPDATE2 = 14, -IORING_REGISTER_BUFFERS2 = 15, -IORING_REGISTER_BUFFERS_UPDATE = 16, -IORING_REGISTER_IOWQ_AFF = 17, -IORING_UNREGISTER_IOWQ_AFF = 18, -IORING_REGISTER_IOWQ_MAX_WORKERS = 19, -IORING_REGISTER_RING_FDS = 20, -IORING_UNREGISTER_RING_FDS = 21, -IORING_REGISTER_PBUF_RING = 22, -IORING_UNREGISTER_PBUF_RING = 23, -IORING_REGISTER_SYNC_CANCEL = 24, -IORING_REGISTER_FILE_ALLOC_RANGE = 25, -IORING_REGISTER_LAST = 26, -IORING_REGISTER_USE_REGISTERED_RING = 2147483648, -} -pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND; -pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_11 { -IO_WQ_BOUND = 0, -IO_WQ_UNBOUND = 1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_files_update { -pub offset: __u32, -pub resv: __u32, -pub fds: __u64, +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_register { -pub nr: __u32, -pub flags: __u32, -pub resv2: __u64, -pub data: __u64, -pub tags: __u64, +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, +#[derive(Copy, Clone)] +pub union sigaction__bindgen_ty_1 { +pub _sa_handler: __sighandler_t, +pub _sa_sigaction: ::core::option::Option, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update2 { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -pub tags: __u64, -pub nr: __u32, -pub resv2: __u32, +#[derive(Copy, Clone)] +pub union sigval { +pub sival_int: crate::ctypes::c_int, +pub sival_ptr: *mut crate::ctypes::c_void, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_slot { -pub tag: __u64, -pub resv: [__u64; 3usize], +#[derive(Copy, Clone)] +pub union __sifields { +pub _kill: __sifields__bindgen_ty_1, +pub _timer: __sifields__bindgen_ty_2, +pub _rt: __sifields__bindgen_ty_3, +pub _sigchld: __sifields__bindgen_ty_4, +pub _sigfault: __sifields__bindgen_ty_5, +pub _sigpoll: __sifields__bindgen_ty_6, +pub _sigsys: __sifields__bindgen_ty_7, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_register { -pub nr_slots: __u32, -pub resv: __u32, -pub resv2: __u64, -pub data: __u64, -pub resv3: __u64, +#[derive(Copy, Clone)] +pub union __sifields__bindgen_ty_5__bindgen_ty_1 { +pub _trapno: crate::ctypes::c_int, +pub _addr_lsb: crate::ctypes::c_short, +pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, +pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, +pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_probe_op { -pub op: __u8, -pub resv: __u8, -pub flags: __u16, -pub resv2: __u32, +#[derive(Copy, Clone)] +pub union siginfo__bindgen_ty_1 { +pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, +pub _si_pad: [crate::ctypes::c_int; 32usize], } #[repr(C)] -#[derive(Debug)] -pub struct io_uring_probe { -pub last_op: __u8, -pub ops_len: __u8, -pub resv: __u16, -pub resv2: [__u32; 3usize], -pub ops: __IncompleteArrayField, +#[derive(Copy, Clone)] +pub union sigevent__bindgen_ty_1 { +pub _pad: [crate::ctypes::c_int; 12usize], +pub _tid: crate::ctypes::c_int, +pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] -pub struct io_uring_restriction { -pub opcode: __u16, -pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, -pub resv: __u8, -pub resv2: [__u32; 3usize], +pub union uffd_msg__bindgen_ty_1 { +pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, +pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, +pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, +pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, +pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_restriction__bindgen_ty_1 { -pub register_op: __u8, -pub sqe_op: __u8, -pub sqe_flags: __u8, +pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { +pub ptid: __u32, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf { -pub addr: __u64, -pub len: __u32, -pub bid: __u16, -pub resv: __u16, +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } } -#[repr(C)] -pub struct io_uring_buf_ring { -pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, } -#[repr(C)] -pub struct io_uring_buf_ring__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 2usize], +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { -pub resv1: __u64, -pub resv2: __u32, -pub resv3: __u16, -pub tail: __u16, +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; } -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { -pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, -pub bufs: __IncompleteArrayField, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_reg { -pub ring_addr: __u64, -pub ring_entries: __u32, -pub bgid: __u16, -pub pad: __u16, -pub resv: [__u64; 3usize], +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; } -pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP; -pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP; -pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; -pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; -pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_12 { -IORING_RESTRICTION_REGISTER_OP = 0, -IORING_RESTRICTION_SQE_OP = 1, -IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, -IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, -IORING_RESTRICTION_LAST = 4, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_getevents_arg { -pub sigmask: __u64, -pub sigmask_sz: __u32, -pub pad: __u32, -pub ts: __u64, +val } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sync_cancel_reg { -pub addr: __u64, -pub fd: __s32, -pub flags: __u32, -pub timeout: __kernel_timespec, -pub pad: [__u64; 4usize], +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_file_index_range { -pub off: __u32, -pub len: __u32, -pub resv: __u64, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_recvmsg_out { -pub namelen: __u32, -pub controllen: __u32, -pub payloadlen: __u32, -pub flags: __u32, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr { -pub __storage: __kernel_sockaddr_storage, +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct linger { -pub l_onoff: crate::ctypes::c_int, -pub l_linger: crate::ctypes::c_int, +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T } -#[repr(C)] -#[derive(Debug)] -pub struct linux_dirent64 { -pub d_ino: crate::ctypes::c_ulong, -pub d_off: crate::ctypes::c_long, -pub d_reclen: __u16, -pub d_type: __u8, -pub d_name: __IncompleteArrayField, +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T } -pub type socklen_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat { -pub st_dev: crate::ctypes::c_ulong, -pub st_ino: crate::ctypes::c_ulong, -pub st_nlink: crate::ctypes::c_ulong, -pub st_mode: crate::ctypes::c_uint, -pub st_uid: crate::ctypes::c_uint, -pub st_gid: crate::ctypes::c_uint, -pub __pad1: crate::ctypes::c_uint, -pub st_rdev: crate::ctypes::c_ulong, -pub st_size: crate::ctypes::c_ulong, -pub st_atime: crate::ctypes::c_ulong, -pub st_atime_nsec: crate::ctypes::c_ulong, -pub st_mtime: crate::ctypes::c_ulong, -pub st_mtime_nsec: crate::ctypes::c_ulong, -pub st_ctime: crate::ctypes::c_ulong, -pub st_ctime_nsec: crate::ctypes::c_ulong, -pub st_blksize: crate::ctypes::c_ulong, -pub st_blocks: crate::ctypes::c_long, -pub __unused: [crate::ctypes::c_ulong; 3usize], +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) } -pub type fsid_t = __kernel_fsid_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs { -pub f_type: crate::ctypes::c_uint, -pub f_bsize: crate::ctypes::c_uint, -pub f_blocks: crate::ctypes::c_ulong, -pub f_bfree: crate::ctypes::c_ulong, -pub f_bavail: crate::ctypes::c_ulong, -pub f_files: crate::ctypes::c_ulong, -pub f_ffree: crate::ctypes::c_ulong, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: crate::ctypes::c_uint, -pub f_frsize: crate::ctypes::c_uint, -pub f_flags: crate::ctypes::c_uint, -pub f_spare: [crate::ctypes::c_uint; 4usize], +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs64 { -pub f_type: crate::ctypes::c_uint, -pub f_bsize: crate::ctypes::c_uint, -pub f_blocks: crate::ctypes::c_ulonglong, -pub f_bfree: crate::ctypes::c_ulonglong, -pub f_bavail: crate::ctypes::c_ulonglong, -pub f_files: crate::ctypes::c_ulonglong, -pub f_ffree: crate::ctypes::c_ulonglong, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: crate::ctypes::c_uint, -pub f_frsize: crate::ctypes::c_uint, -pub f_flags: crate::ctypes::c_uint, -pub f_spare: [crate::ctypes::c_uint; 4usize], } -pub type __fsword_t = __u32; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_desc { -pub entry_number: crate::ctypes::c_uint, -pub base_addr: crate::ctypes::c_uint, -pub limit: crate::ctypes::c_uint, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub __bindgen_padding_0: [u8; 3usize], +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl membarrier_cmd { +pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; } impl user_desc { #[inline] @@ -5300,47 +2857,3 @@ __bindgen_bitfield_unit } } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr { -pub msg_name: *mut crate::ctypes::c_void, -pub msg_namelen: crate::ctypes::c_int, -pub msg_iov: *mut iovec, -pub msg_iovlen: size_t, -pub msg_control: *mut crate::ctypes::c_void, -pub msg_controllen: size_t, -pub msg_flags: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsghdr { -pub cmsg_len: size_t, -pub cmsg_level: crate::ctypes::c_int, -pub cmsg_type: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ucred { -pub pid: __u32, -pub uid: __u32, -pub gid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mmsghdr { -pub msg_hdr: msghdr, -pub msg_len: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigset_t { -pub sig: [crate::ctypes::c_ulong; 1usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigaction { -pub sa_handler_kernel: __kernel_sighandler_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_restorer: __sigrestore_t, -pub sa_mask: kernel_sigset_t, -} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/if_ether.rs temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/if_ether.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/if_ether.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/if_ether.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,187 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type addr_t = crate::ctypes::c_ulong; +pub type saddr_t = crate::ctypes::c_long; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_size_t = crate::ctypes::c_ulong; +pub type __kernel_ssize_t = crate::ctypes::c_long; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_ino_t = crate::ctypes::c_uint; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_ptrdiff_t = crate::ctypes::c_long; +pub type __kernel_sigset_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C, packed(4))] +#[derive(Copy, Clone)] +pub struct __vector128 { +pub __bindgen_anon_1: __vector128__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __vector128__bindgen_ty_1__bindgen_ty_1 { +pub high: __u64, +pub low: __u64, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ethhdr { +pub h_dest: [crate::ctypes::c_uchar; 6usize], +pub h_source: [crate::ctypes::c_uchar; 6usize], +pub h_proto: __be16, +} +pub const ETH_ALEN: u32 = 6; +pub const ETH_TLEN: u32 = 2; +pub const ETH_HLEN: u32 = 14; +pub const ETH_ZLEN: u32 = 60; +pub const ETH_DATA_LEN: u32 = 1500; +pub const ETH_FRAME_LEN: u32 = 1514; +pub const ETH_FCS_LEN: u32 = 4; +pub const ETH_MIN_MTU: u32 = 68; +pub const ETH_MAX_MTU: u32 = 65535; +pub const ETH_P_LOOP: u32 = 96; +pub const ETH_P_PUP: u32 = 512; +pub const ETH_P_PUPAT: u32 = 513; +pub const ETH_P_TSN: u32 = 8944; +pub const ETH_P_ERSPAN2: u32 = 8939; +pub const ETH_P_IP: u32 = 2048; +pub const ETH_P_X25: u32 = 2053; +pub const ETH_P_ARP: u32 = 2054; +pub const ETH_P_BPQ: u32 = 2303; +pub const ETH_P_IEEEPUP: u32 = 2560; +pub const ETH_P_IEEEPUPAT: u32 = 2561; +pub const ETH_P_BATMAN: u32 = 17157; +pub const ETH_P_DEC: u32 = 24576; +pub const ETH_P_DNA_DL: u32 = 24577; +pub const ETH_P_DNA_RC: u32 = 24578; +pub const ETH_P_DNA_RT: u32 = 24579; +pub const ETH_P_LAT: u32 = 24580; +pub const ETH_P_DIAG: u32 = 24581; +pub const ETH_P_CUST: u32 = 24582; +pub const ETH_P_SCA: u32 = 24583; +pub const ETH_P_TEB: u32 = 25944; +pub const ETH_P_RARP: u32 = 32821; +pub const ETH_P_ATALK: u32 = 32923; +pub const ETH_P_AARP: u32 = 33011; +pub const ETH_P_8021Q: u32 = 33024; +pub const ETH_P_ERSPAN: u32 = 35006; +pub const ETH_P_IPX: u32 = 33079; +pub const ETH_P_IPV6: u32 = 34525; +pub const ETH_P_PAUSE: u32 = 34824; +pub const ETH_P_SLOW: u32 = 34825; +pub const ETH_P_WCCP: u32 = 34878; +pub const ETH_P_MPLS_UC: u32 = 34887; +pub const ETH_P_MPLS_MC: u32 = 34888; +pub const ETH_P_ATMMPOA: u32 = 34892; +pub const ETH_P_PPP_DISC: u32 = 34915; +pub const ETH_P_PPP_SES: u32 = 34916; +pub const ETH_P_LINK_CTL: u32 = 34924; +pub const ETH_P_ATMFATE: u32 = 34948; +pub const ETH_P_PAE: u32 = 34958; +pub const ETH_P_PROFINET: u32 = 34962; +pub const ETH_P_REALTEK: u32 = 34969; +pub const ETH_P_AOE: u32 = 34978; +pub const ETH_P_ETHERCAT: u32 = 34980; +pub const ETH_P_8021AD: u32 = 34984; +pub const ETH_P_802_EX1: u32 = 34997; +pub const ETH_P_PREAUTH: u32 = 35015; +pub const ETH_P_TIPC: u32 = 35018; +pub const ETH_P_LLDP: u32 = 35020; +pub const ETH_P_MRP: u32 = 35043; +pub const ETH_P_MACSEC: u32 = 35045; +pub const ETH_P_8021AH: u32 = 35047; +pub const ETH_P_MVRP: u32 = 35061; +pub const ETH_P_1588: u32 = 35063; +pub const ETH_P_NCSI: u32 = 35064; +pub const ETH_P_PRP: u32 = 35067; +pub const ETH_P_CFM: u32 = 35074; +pub const ETH_P_FCOE: u32 = 35078; +pub const ETH_P_IBOE: u32 = 35093; +pub const ETH_P_TDLS: u32 = 35085; +pub const ETH_P_FIP: u32 = 35092; +pub const ETH_P_80221: u32 = 35095; +pub const ETH_P_HSR: u32 = 35119; +pub const ETH_P_NSH: u32 = 35151; +pub const ETH_P_LOOPBACK: u32 = 36864; +pub const ETH_P_QINQ1: u32 = 37120; +pub const ETH_P_QINQ2: u32 = 37376; +pub const ETH_P_QINQ3: u32 = 37632; +pub const ETH_P_EDSA: u32 = 56026; +pub const ETH_P_DSA_8021Q: u32 = 56027; +pub const ETH_P_DSA_A5PSW: u32 = 57345; +pub const ETH_P_IFE: u32 = 60734; +pub const ETH_P_AF_IUCV: u32 = 64507; +pub const ETH_P_802_3_MIN: u32 = 1536; +pub const ETH_P_802_3: u32 = 1; +pub const ETH_P_AX25: u32 = 2; +pub const ETH_P_ALL: u32 = 3; +pub const ETH_P_802_2: u32 = 4; +pub const ETH_P_SNAP: u32 = 5; +pub const ETH_P_DDCMP: u32 = 6; +pub const ETH_P_WAN_PPP: u32 = 7; +pub const ETH_P_PPP_MP: u32 = 8; +pub const ETH_P_LOCALTALK: u32 = 9; +pub const ETH_P_CAN: u32 = 12; +pub const ETH_P_CANFD: u32 = 13; +pub const ETH_P_CANXL: u32 = 14; +pub const ETH_P_PPPTALK: u32 = 16; +pub const ETH_P_TR_802_2: u32 = 17; +pub const ETH_P_MOBITEX: u32 = 21; +pub const ETH_P_CONTROL: u32 = 22; +pub const ETH_P_IRDA: u32 = 23; +pub const ETH_P_ECONET: u32 = 24; +pub const ETH_P_HDLC: u32 = 25; +pub const ETH_P_ARCNET: u32 = 26; +pub const ETH_P_DSA: u32 = 27; +pub const ETH_P_TRAILER: u32 = 28; +pub const ETH_P_PHONET: u32 = 245; +pub const ETH_P_IEEE802154: u32 = 246; +pub const ETH_P_CAIF: u32 = 247; +pub const ETH_P_XDSA: u32 = 248; +pub const ETH_P_MAP: u32 = 249; +pub const ETH_P_MCTP: u32 = 250; +#[repr(C)] +#[derive(Copy, Clone)] +pub union __vector128__bindgen_ty_1 { +pub __bindgen_anon_1: __vector128__bindgen_ty_1__bindgen_ty_1, +pub u: [__u32; 4usize], +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/ioctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/ioctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/ioctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const FIONREAD: u32 = 21531; pub const FIONBIO: u32 = 21537; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/io_uring.rs temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/io_uring.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/io_uring.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/io_uring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1103 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type addr_t = crate::ctypes::c_ulong; +pub type saddr_t = crate::ctypes::c_long; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_size_t = crate::ctypes::c_ulong; +pub type __kernel_ssize_t = crate::ctypes::c_long; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_ino_t = crate::ctypes::c_uint; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_ptrdiff_t = crate::ctypes::c_long; +pub type __kernel_sigset_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_rwf_t = crate::ctypes::c_int; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C, packed(4))] +#[derive(Copy, Clone)] +pub struct __vector128 { +pub __bindgen_anon_1: __vector128__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __vector128__bindgen_ty_1__bindgen_ty_1 { +pub high: __u64, +pub low: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +pub struct io_uring_sqe { +pub opcode: __u8, +pub flags: __u8, +pub ioprio: __u16, +pub fd: __s32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, +pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, +pub len: __u32, +pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, +pub user_data: __u64, +pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, +pub personality: __u16, +pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, +pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { +pub cmd_op: __u32, +pub __pad1: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { +pub addr_len: __u16, +pub __pad3: [__u16; 1usize], +} +#[repr(C)] +pub struct io_uring_sqe__bindgen_ty_6 { +pub __bindgen_anon_1: __BindgenUnionField, +pub cmd: __BindgenUnionField<[__u8; 0usize]>, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { +pub addr3: __u64, +pub __pad2: [__u64; 1usize], +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_cqe { +pub user_data: __u64, +pub res: __s32, +pub flags: __u32, +pub big_cqe: __IncompleteArrayField<__u64>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_sqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub flags: __u32, +pub dropped: __u32, +pub array: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_cqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub overflow: __u32, +pub cqes: __u32, +pub flags: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_params { +pub sq_entries: __u32, +pub cq_entries: __u32, +pub flags: __u32, +pub sq_thread_cpu: __u32, +pub sq_thread_idle: __u32, +pub features: __u32, +pub wq_fd: __u32, +pub resv: [__u32; 3usize], +pub sq_off: io_sqring_offsets, +pub cq_off: io_cqring_offsets, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_files_update { +pub offset: __u32, +pub resv: __u32, +pub fds: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_register { +pub nr: __u32, +pub flags: __u32, +pub resv2: __u64, +pub data: __u64, +pub tags: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update2 { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +pub tags: __u64, +pub nr: __u32, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_slot { +pub tag: __u64, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_register { +pub nr_slots: __u32, +pub resv: __u32, +pub resv2: __u64, +pub data: __u64, +pub resv3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_probe_op { +pub op: __u8, +pub resv: __u8, +pub flags: __u16, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_probe { +pub last_op: __u8, +pub ops_len: __u8, +pub resv: __u16, +pub resv2: [__u32; 3usize], +pub ops: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_restriction { +pub opcode: __u16, +pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, +pub resv: __u8, +pub resv2: [__u32; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf { +pub addr: __u64, +pub len: __u32, +pub bid: __u16, +pub resv: __u16, +} +#[repr(C)] +pub struct io_uring_buf_ring { +pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +} +#[repr(C)] +pub struct io_uring_buf_ring__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { +pub resv1: __u64, +pub resv2: __u32, +pub resv3: __u16, +pub tail: __u16, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { +pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, +pub bufs: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_reg { +pub ring_addr: __u64, +pub ring_entries: __u32, +pub bgid: __u16, +pub pad: __u16, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_getevents_arg { +pub sigmask: __u64, +pub sigmask_sz: __u32, +pub pad: __u32, +pub ts: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sync_cancel_reg { +pub addr: __u64, +pub fd: __s32, +pub flags: __u32, +pub timeout: __kernel_timespec, +pub pad: [__u64; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_file_index_range { +pub off: __u32, +pub len: __u32, +pub resv: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_recvmsg_out { +pub namelen: __u32, +pub controllen: __u32, +pub payloadlen: __u32, +pub flags: __u32, +} +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 14; +pub const _IOC_DIRBITS: u32 = 2; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 3; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 30; +pub const _IOC_NONE: u32 = 0; +pub const _IOC_WRITE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const IOC_IN: u32 = 1073741824; +pub const IOC_OUT: u32 = 2147483648; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const IORING_FILE_INDEX_ALLOC: i32 = -1; +pub const IORING_SETUP_IOPOLL: u32 = 1; +pub const IORING_SETUP_SQPOLL: u32 = 2; +pub const IORING_SETUP_SQ_AFF: u32 = 4; +pub const IORING_SETUP_CQSIZE: u32 = 8; +pub const IORING_SETUP_CLAMP: u32 = 16; +pub const IORING_SETUP_ATTACH_WQ: u32 = 32; +pub const IORING_SETUP_R_DISABLED: u32 = 64; +pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; +pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; +pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; +pub const IORING_SETUP_SQE128: u32 = 1024; +pub const IORING_SETUP_CQE32: u32 = 2048; +pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; +pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; +pub const IORING_URING_CMD_FIXED: u32 = 1; +pub const IORING_FSYNC_DATASYNC: u32 = 1; +pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; +pub const IORING_POLL_ADD_LEVEL: u32 = 8; +pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; +pub const IORING_ASYNC_CANCEL_FD: u32 = 2; +pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; +pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; +pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; +pub const IORING_RECV_MULTISHOT: u32 = 2; +pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; +pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; +pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; +pub const IORING_ACCEPT_MULTISHOT: u32 = 1; +pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; +pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; +pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; +pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; +pub const IORING_CQE_F_NOTIF: u32 = 8; +pub const IORING_OFF_SQ_RING: u32 = 0; +pub const IORING_OFF_CQ_RING: u32 = 134217728; +pub const IORING_OFF_SQES: u32 = 268435456; +pub const IORING_SQ_NEED_WAKEUP: u32 = 1; +pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; +pub const IORING_SQ_TASKRUN: u32 = 4; +pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; +pub const IORING_ENTER_GETEVENTS: u32 = 1; +pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; +pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; +pub const IORING_ENTER_REGISTERED_RING: u32 = 16; +pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; +pub const IORING_FEAT_NODROP: u32 = 2; +pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; +pub const IORING_FEAT_RW_CUR_POS: u32 = 8; +pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; +pub const IORING_FEAT_FAST_POLL: u32 = 32; +pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_FEAT_CQE_SKIP: u32 = 2048; +pub const IORING_FEAT_LINKED_FILE: u32 = 4096; +pub const IORING_FEAT_REG_REG_RING: u32 = 8192; +pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; +pub const IO_URING_OP_SUPPORTED: u32 = 1; +pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_FIXED_FILE_BIT; +pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_DRAIN_BIT; +pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_LINK_BIT; +pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_HARDLINK_BIT; +pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_ASYNC_BIT; +pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_BUFFER_SELECT_BIT; +pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_CQE_SKIP_SUCCESS_BIT; +pub const IORING_MSG_DATA: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_DATA; +pub const IORING_MSG_SEND_FD: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_SEND_FD; +pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = _bindgen_ty_3::IORING_CQE_BUFFER_SHIFT; +pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS; +pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_BUFFERS; +pub const IORING_REGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES; +pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_FILES; +pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD; +pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_EVENTFD; +pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE; +pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD_ASYNC; +pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PROBE; +pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PERSONALITY; +pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PERSONALITY; +pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RESTRICTIONS; +pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_ENABLE_RINGS; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES2; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE2; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS2; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS_UPDATE; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_AFF; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_IOWQ_AFF; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_MAX_WORKERS; +pub const IORING_REGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RING_FDS; +pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_RING_FDS; +pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PBUF_RING; +pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PBUF_RING; +pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_SYNC_CANCEL; +pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILE_ALLOC_RANGE; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_LAST; +pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_USE_REGISTERED_RING; +pub const IO_WQ_BOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_BOUND; +pub const IO_WQ_UNBOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_UNBOUND; +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_REGISTER_OP; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_OP; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_LAST; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IOSQE_FIXED_FILE_BIT = 0, +IOSQE_IO_DRAIN_BIT = 1, +IOSQE_IO_LINK_BIT = 2, +IOSQE_IO_HARDLINK_BIT = 3, +IOSQE_ASYNC_BIT = 4, +IOSQE_BUFFER_SELECT_BIT = 5, +IOSQE_CQE_SKIP_SUCCESS_BIT = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum io_uring_op { +IORING_OP_NOP = 0, +IORING_OP_READV = 1, +IORING_OP_WRITEV = 2, +IORING_OP_FSYNC = 3, +IORING_OP_READ_FIXED = 4, +IORING_OP_WRITE_FIXED = 5, +IORING_OP_POLL_ADD = 6, +IORING_OP_POLL_REMOVE = 7, +IORING_OP_SYNC_FILE_RANGE = 8, +IORING_OP_SENDMSG = 9, +IORING_OP_RECVMSG = 10, +IORING_OP_TIMEOUT = 11, +IORING_OP_TIMEOUT_REMOVE = 12, +IORING_OP_ACCEPT = 13, +IORING_OP_ASYNC_CANCEL = 14, +IORING_OP_LINK_TIMEOUT = 15, +IORING_OP_CONNECT = 16, +IORING_OP_FALLOCATE = 17, +IORING_OP_OPENAT = 18, +IORING_OP_CLOSE = 19, +IORING_OP_FILES_UPDATE = 20, +IORING_OP_STATX = 21, +IORING_OP_READ = 22, +IORING_OP_WRITE = 23, +IORING_OP_FADVISE = 24, +IORING_OP_MADVISE = 25, +IORING_OP_SEND = 26, +IORING_OP_RECV = 27, +IORING_OP_OPENAT2 = 28, +IORING_OP_EPOLL_CTL = 29, +IORING_OP_SPLICE = 30, +IORING_OP_PROVIDE_BUFFERS = 31, +IORING_OP_REMOVE_BUFFERS = 32, +IORING_OP_TEE = 33, +IORING_OP_SHUTDOWN = 34, +IORING_OP_RENAMEAT = 35, +IORING_OP_UNLINKAT = 36, +IORING_OP_MKDIRAT = 37, +IORING_OP_SYMLINKAT = 38, +IORING_OP_LINKAT = 39, +IORING_OP_MSG_RING = 40, +IORING_OP_FSETXATTR = 41, +IORING_OP_SETXATTR = 42, +IORING_OP_FGETXATTR = 43, +IORING_OP_GETXATTR = 44, +IORING_OP_SOCKET = 45, +IORING_OP_URING_CMD = 46, +IORING_OP_SEND_ZC = 47, +IORING_OP_SENDMSG_ZC = 48, +IORING_OP_LAST = 49, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IORING_MSG_DATA = 0, +IORING_MSG_SEND_FD = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IORING_CQE_BUFFER_SHIFT = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IORING_REGISTER_BUFFERS = 0, +IORING_UNREGISTER_BUFFERS = 1, +IORING_REGISTER_FILES = 2, +IORING_UNREGISTER_FILES = 3, +IORING_REGISTER_EVENTFD = 4, +IORING_UNREGISTER_EVENTFD = 5, +IORING_REGISTER_FILES_UPDATE = 6, +IORING_REGISTER_EVENTFD_ASYNC = 7, +IORING_REGISTER_PROBE = 8, +IORING_REGISTER_PERSONALITY = 9, +IORING_UNREGISTER_PERSONALITY = 10, +IORING_REGISTER_RESTRICTIONS = 11, +IORING_REGISTER_ENABLE_RINGS = 12, +IORING_REGISTER_FILES2 = 13, +IORING_REGISTER_FILES_UPDATE2 = 14, +IORING_REGISTER_BUFFERS2 = 15, +IORING_REGISTER_BUFFERS_UPDATE = 16, +IORING_REGISTER_IOWQ_AFF = 17, +IORING_UNREGISTER_IOWQ_AFF = 18, +IORING_REGISTER_IOWQ_MAX_WORKERS = 19, +IORING_REGISTER_RING_FDS = 20, +IORING_UNREGISTER_RING_FDS = 21, +IORING_REGISTER_PBUF_RING = 22, +IORING_UNREGISTER_PBUF_RING = 23, +IORING_REGISTER_SYNC_CANCEL = 24, +IORING_REGISTER_FILE_ALLOC_RANGE = 25, +IORING_REGISTER_LAST = 26, +IORING_REGISTER_USE_REGISTERED_RING = 2147483648, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IO_WQ_BOUND = 0, +IO_WQ_UNBOUND = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IORING_RESTRICTION_REGISTER_OP = 0, +IORING_RESTRICTION_SQE_OP = 1, +IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, +IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, +IORING_RESTRICTION_LAST = 4, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __vector128__bindgen_ty_1 { +pub __bindgen_anon_1: __vector128__bindgen_ty_1__bindgen_ty_1, +pub u: [__u32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_1 { +pub off: __u64, +pub addr2: __u64, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_2 { +pub addr: __u64, +pub splice_off_in: __u64, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_3 { +pub rw_flags: __kernel_rwf_t, +pub fsync_flags: __u32, +pub poll_events: __u16, +pub poll32_events: __u32, +pub sync_range_flags: __u32, +pub msg_flags: __u32, +pub timeout_flags: __u32, +pub accept_flags: __u32, +pub cancel_flags: __u32, +pub open_flags: __u32, +pub statx_flags: __u32, +pub fadvise_advice: __u32, +pub splice_flags: __u32, +pub rename_flags: __u32, +pub unlink_flags: __u32, +pub hardlink_flags: __u32, +pub xattr_flags: __u32, +pub msg_ring_flags: __u32, +pub uring_cmd_flags: __u32, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_4 { +pub buf_index: __u16, +pub buf_group: __u16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { +pub splice_fd_in: __s32, +pub file_index: __u32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_restriction__bindgen_ty_1 { +pub register_op: __u8, +pub sqe_op: __u8, +pub sqe_flags: __u8, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/netlink.rs temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/netlink.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/netlink.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/netlink.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,377 +1,1506 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type addr_t = crate::ctypes::c_ulong; +pub type saddr_t = crate::ctypes::c_long; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_size_t = crate::ctypes::c_ulong; +pub type __kernel_ssize_t = crate::ctypes::c_long; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_ino_t = crate::ctypes::c_uint; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_ptrdiff_t = crate::ctypes::c_long; +pub type __kernel_sigset_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C, packed(4))] +#[derive(Copy, Clone)] +pub struct __vector128 { +pub __bindgen_anon_1: __vector128__bindgen_ty_1, } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __vector128__bindgen_ty_1__bindgen_ty_1 { +pub high: __u64, +pub low: __u64, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_nl { +pub nl_family: __kernel_sa_family_t, +pub nl_pad: crate::ctypes::c_ushort, +pub nl_pid: __u32, +pub nl_groups: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsghdr { +pub nlmsg_len: __u32, +pub nlmsg_type: __u16, +pub nlmsg_flags: __u16, +pub nlmsg_seq: __u32, +pub nlmsg_pid: __u32, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsgerr { +pub error: crate::ctypes::c_int, +pub msg: nlmsghdr, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_pktinfo { +pub group: __u32, } -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const __BITS_PER_LONG: u32 = 64; -pub const __FD_SETSIZE: u32 = 1024; -pub const NETLINK_ROUTE: u32 = 0; -pub const NETLINK_UNUSED: u32 = 1; -pub const NETLINK_USERSOCK: u32 = 2; -pub const NETLINK_FIREWALL: u32 = 3; -pub const NETLINK_SOCK_DIAG: u32 = 4; -pub const NETLINK_NFLOG: u32 = 5; -pub const NETLINK_XFRM: u32 = 6; -pub const NETLINK_SELINUX: u32 = 7; -pub const NETLINK_ISCSI: u32 = 8; -pub const NETLINK_AUDIT: u32 = 9; -pub const NETLINK_FIB_LOOKUP: u32 = 10; -pub const NETLINK_CONNECTOR: u32 = 11; -pub const NETLINK_NETFILTER: u32 = 12; -pub const NETLINK_IP6_FW: u32 = 13; -pub const NETLINK_DNRTMSG: u32 = 14; -pub const NETLINK_KOBJECT_UEVENT: u32 = 15; -pub const NETLINK_GENERIC: u32 = 16; -pub const NETLINK_SCSITRANSPORT: u32 = 18; -pub const NETLINK_ECRYPTFS: u32 = 19; -pub const NETLINK_RDMA: u32 = 20; -pub const NETLINK_CRYPTO: u32 = 21; -pub const NETLINK_SMC: u32 = 22; -pub const NETLINK_INET_DIAG: u32 = 4; -pub const MAX_LINKS: u32 = 32; -pub const NLM_F_REQUEST: u32 = 1; -pub const NLM_F_MULTI: u32 = 2; -pub const NLM_F_ACK: u32 = 4; -pub const NLM_F_ECHO: u32 = 8; -pub const NLM_F_DUMP_INTR: u32 = 16; -pub const NLM_F_DUMP_FILTERED: u32 = 32; -pub const NLM_F_ROOT: u32 = 256; -pub const NLM_F_MATCH: u32 = 512; -pub const NLM_F_ATOMIC: u32 = 1024; -pub const NLM_F_DUMP: u32 = 768; -pub const NLM_F_REPLACE: u32 = 256; -pub const NLM_F_EXCL: u32 = 512; -pub const NLM_F_CREATE: u32 = 1024; -pub const NLM_F_APPEND: u32 = 2048; -pub const NLM_F_NONREC: u32 = 256; -pub const NLM_F_BULK: u32 = 512; -pub const NLM_F_CAPPED: u32 = 256; -pub const NLM_F_ACK_TLVS: u32 = 512; -pub const NLMSG_ALIGNTO: u32 = 4; -pub const NLMSG_NOOP: u32 = 1; -pub const NLMSG_ERROR: u32 = 2; -pub const NLMSG_DONE: u32 = 3; -pub const NLMSG_OVERRUN: u32 = 4; -pub const NLMSG_MIN_TYPE: u32 = 16; -pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; -pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; -pub const NETLINK_PKTINFO: u32 = 3; -pub const NETLINK_BROADCAST_ERROR: u32 = 4; -pub const NETLINK_NO_ENOBUFS: u32 = 5; -pub const NETLINK_RX_RING: u32 = 6; -pub const NETLINK_TX_RING: u32 = 7; -pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; -pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; -pub const NETLINK_CAP_ACK: u32 = 10; -pub const NETLINK_EXT_ACK: u32 = 11; -pub const NETLINK_GET_STRICT_CHK: u32 = 12; -pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; -pub const NET_MAJOR: u32 = 36; -pub const NLA_F_NESTED: u32 = 32768; -pub const NLA_F_NET_BYTEORDER: u32 = 16384; -pub const NLA_TYPE_MASK: i32 = -49153; -pub const NLA_ALIGNTO: u32 = 4; -pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; -pub const MACVLAN_FLAG_NODST: u32 = 2; -pub const IPVLAN_F_PRIVATE: u32 = 1; -pub const IPVLAN_F_VEPA: u32 = 2; -pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; -pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; -pub const MAX_VLAN_LIST_LEN: u32 = 1; -pub const PORT_PROFILE_MAX: u32 = 40; -pub const PORT_UUID_MAX: u32 = 16; -pub const PORT_SELF_VF: i32 = -1; -pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; -pub const XDP_FLAGS_SKB_MODE: u32 = 2; -pub const XDP_FLAGS_DRV_MODE: u32 = 4; -pub const XDP_FLAGS_HW_MODE: u32 = 8; -pub const XDP_FLAGS_REPLACE: u32 = 16; -pub const XDP_FLAGS_MODES: u32 = 14; -pub const XDP_FLAGS_MASK: u32 = 31; -pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; -pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; -pub const IFA_F_SECONDARY: u32 = 1; -pub const IFA_F_TEMPORARY: u32 = 1; -pub const IFA_F_NODAD: u32 = 2; -pub const IFA_F_OPTIMISTIC: u32 = 4; -pub const IFA_F_DADFAILED: u32 = 8; -pub const IFA_F_HOMEADDRESS: u32 = 16; -pub const IFA_F_DEPRECATED: u32 = 32; -pub const IFA_F_TENTATIVE: u32 = 64; -pub const IFA_F_PERMANENT: u32 = 128; -pub const IFA_F_MANAGETEMPADDR: u32 = 256; -pub const IFA_F_NOPREFIXROUTE: u32 = 512; -pub const IFA_F_MCAUTOJOIN: u32 = 1024; -pub const IFA_F_STABLE_PRIVACY: u32 = 2048; -pub const IFAPROT_UNSPEC: u32 = 0; -pub const IFAPROT_KERNEL_LO: u32 = 1; -pub const IFAPROT_KERNEL_RA: u32 = 2; -pub const IFAPROT_KERNEL_LL: u32 = 3; -pub const NTF_USE: u32 = 1; -pub const NTF_SELF: u32 = 2; -pub const NTF_MASTER: u32 = 4; -pub const NTF_PROXY: u32 = 8; -pub const NTF_EXT_LEARNED: u32 = 16; -pub const NTF_OFFLOADED: u32 = 32; -pub const NTF_STICKY: u32 = 64; -pub const NTF_ROUTER: u32 = 128; -pub const NTF_EXT_MANAGED: u32 = 1; -pub const NTF_EXT_LOCKED: u32 = 2; -pub const NUD_INCOMPLETE: u32 = 1; -pub const NUD_REACHABLE: u32 = 2; -pub const NUD_STALE: u32 = 4; -pub const NUD_DELAY: u32 = 8; -pub const NUD_PROBE: u32 = 16; -pub const NUD_FAILED: u32 = 32; -pub const NUD_NOARP: u32 = 64; -pub const NUD_PERMANENT: u32 = 128; -pub const NUD_NONE: u32 = 0; -pub const RTNL_FAMILY_IPMR: u32 = 128; -pub const RTNL_FAMILY_IP6MR: u32 = 129; -pub const RTNL_FAMILY_MAX: u32 = 129; -pub const RTA_ALIGNTO: u32 = 4; -pub const RTPROT_UNSPEC: u32 = 0; -pub const RTPROT_REDIRECT: u32 = 1; -pub const RTPROT_KERNEL: u32 = 2; -pub const RTPROT_BOOT: u32 = 3; -pub const RTPROT_STATIC: u32 = 4; -pub const RTPROT_GATED: u32 = 8; -pub const RTPROT_RA: u32 = 9; -pub const RTPROT_MRT: u32 = 10; -pub const RTPROT_ZEBRA: u32 = 11; -pub const RTPROT_BIRD: u32 = 12; -pub const RTPROT_DNROUTED: u32 = 13; -pub const RTPROT_XORP: u32 = 14; -pub const RTPROT_NTK: u32 = 15; -pub const RTPROT_DHCP: u32 = 16; -pub const RTPROT_MROUTED: u32 = 17; -pub const RTPROT_KEEPALIVED: u32 = 18; -pub const RTPROT_BABEL: u32 = 42; -pub const RTPROT_OPENR: u32 = 99; -pub const RTPROT_BGP: u32 = 186; -pub const RTPROT_ISIS: u32 = 187; -pub const RTPROT_OSPF: u32 = 188; -pub const RTPROT_RIP: u32 = 189; -pub const RTPROT_EIGRP: u32 = 192; -pub const RTM_F_NOTIFY: u32 = 256; -pub const RTM_F_CLONED: u32 = 512; -pub const RTM_F_EQUALIZE: u32 = 1024; -pub const RTM_F_PREFIX: u32 = 2048; -pub const RTM_F_LOOKUP_TABLE: u32 = 4096; -pub const RTM_F_FIB_MATCH: u32 = 8192; -pub const RTM_F_OFFLOAD: u32 = 16384; -pub const RTM_F_TRAP: u32 = 32768; -pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; -pub const RTNH_F_DEAD: u32 = 1; -pub const RTNH_F_PERVASIVE: u32 = 2; -pub const RTNH_F_ONLINK: u32 = 4; -pub const RTNH_F_OFFLOAD: u32 = 8; -pub const RTNH_F_LINKDOWN: u32 = 16; -pub const RTNH_F_UNRESOLVED: u32 = 32; -pub const RTNH_F_TRAP: u32 = 64; -pub const RTNH_COMPARE_MASK: u32 = 89; -pub const RTNH_ALIGNTO: u32 = 4; -pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; -pub const RTAX_FEATURE_ECN: u32 = 1; -pub const RTAX_FEATURE_SACK: u32 = 2; -pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; -pub const RTAX_FEATURE_ALLFRAG: u32 = 8; -pub const RTAX_FEATURE_MASK: u32 = 15; -pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; -pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; -pub const RTMGRP_LINK: u32 = 1; -pub const RTMGRP_NOTIFY: u32 = 2; -pub const RTMGRP_NEIGH: u32 = 4; -pub const RTMGRP_TC: u32 = 8; -pub const RTMGRP_IPV4_IFADDR: u32 = 16; -pub const RTMGRP_IPV4_MROUTE: u32 = 32; -pub const RTMGRP_IPV4_ROUTE: u32 = 64; -pub const RTMGRP_IPV4_RULE: u32 = 128; -pub const RTMGRP_IPV6_IFADDR: u32 = 256; -pub const RTMGRP_IPV6_MROUTE: u32 = 512; -pub const RTMGRP_IPV6_ROUTE: u32 = 1024; -pub const RTMGRP_IPV6_IFINFO: u32 = 2048; -pub const RTMGRP_DECnet_IFADDR: u32 = 4096; -pub const RTMGRP_DECnet_ROUTE: u32 = 16384; -pub const RTMGRP_IPV6_PREFIX: u32 = 131072; -pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; -pub const RTEXT_FILTER_VF: u32 = 1; -pub const RTEXT_FILTER_BRVLAN: u32 = 2; -pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; -pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; -pub const RTEXT_FILTER_MRP: u32 = 16; -pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; -pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; -pub const RTEXT_FILTER_MST: u32 = 128; -pub type size_t = crate::ctypes::c_ulong; -pub type ssize_t = crate::ctypes::c_long; -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; #[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_req { +pub nm_block_size: crate::ctypes::c_uint, +pub nm_block_nr: crate::ctypes::c_uint, +pub nm_frame_size: crate::ctypes::c_uint, +pub nm_frame_nr: crate::ctypes::c_uint, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_hdr { +pub nm_status: crate::ctypes::c_uint, +pub nm_len: crate::ctypes::c_uint, +pub nm_group: __u32, +pub nm_pid: __u32, +pub nm_uid: __u32, +pub nm_gid: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], -} -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; -pub type addr_t = crate::ctypes::c_ulong; -pub type saddr_t = crate::ctypes::c_long; -#[repr(C, packed(4))] -#[derive(Copy, Clone)] -pub struct __vector128 { -pub __bindgen_anon_1: __vector128__bindgen_ty_1, +pub struct nlattr { +pub nla_len: __u16, +pub nla_type: __u16, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __vector128__bindgen_ty_1 { -pub __bindgen_anon_1: __vector128__bindgen_ty_1__bindgen_ty_1, -pub u: [__u32; 4usize], +#[derive(Debug, Copy, Clone)] +pub struct nla_bitfield32 { +pub value: __u32, +pub selector: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __vector128__bindgen_ty_1__bindgen_ty_1 { -pub high: __u64, -pub low: __u64, +pub struct rtnl_link_stats { +pub rx_packets: __u32, +pub tx_packets: __u32, +pub rx_bytes: __u32, +pub tx_bytes: __u32, +pub rx_errors: __u32, +pub tx_errors: __u32, +pub rx_dropped: __u32, +pub tx_dropped: __u32, +pub multicast: __u32, +pub collisions: __u32, +pub rx_length_errors: __u32, +pub rx_over_errors: __u32, +pub rx_crc_errors: __u32, +pub rx_frame_errors: __u32, +pub rx_fifo_errors: __u32, +pub rx_missed_errors: __u32, +pub tx_aborted_errors: __u32, +pub tx_carrier_errors: __u32, +pub tx_fifo_errors: __u32, +pub tx_heartbeat_errors: __u32, +pub tx_window_errors: __u32, +pub rx_compressed: __u32, +pub tx_compressed: __u32, +pub rx_nohandler: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 16usize], +pub struct rtnl_link_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +pub collisions: __u64, +pub rx_length_errors: __u64, +pub rx_over_errors: __u64, +pub rx_crc_errors: __u64, +pub rx_frame_errors: __u64, +pub rx_fifo_errors: __u64, +pub rx_missed_errors: __u64, +pub tx_aborted_errors: __u64, +pub tx_carrier_errors: __u64, +pub tx_fifo_errors: __u64, +pub tx_heartbeat_errors: __u64, +pub tx_window_errors: __u64, +pub rx_compressed: __u64, +pub tx_compressed: __u64, +pub rx_nohandler: __u64, +pub rx_otherhost_dropped: __u64, } -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_size_t = crate::ctypes::c_ulong; -pub type __kernel_ssize_t = crate::ctypes::c_long; -pub type __kernel_old_dev_t = crate::ctypes::c_ushort; -pub type __kernel_ino_t = crate::ctypes::c_uint; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_ptrdiff_t = crate::ctypes::c_long; -pub type __kernel_sigset_t = crate::ctypes::c_ulong; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], +pub struct rtnl_hw_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, } -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_nl { -pub nl_family: __kernel_sa_family_t, -pub nl_pad: crate::ctypes::c_ushort, -pub nl_pid: __u32, -pub nl_groups: __u32, +pub struct rtnl_link_ifmap { +pub mem_start: __u64, +pub mem_end: __u64, +pub base_addr: __u64, +pub irq: __u16, +pub dma: __u8, +pub port: __u8, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsghdr { -pub nlmsg_len: __u32, -pub nlmsg_type: __u16, -pub nlmsg_flags: __u16, -pub nlmsg_seq: __u32, -pub nlmsg_pid: __u32, +pub struct ifla_bridge_id { +pub prio: [__u8; 2usize], +pub addr: [__u8; 6usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsgerr { -pub error: crate::ctypes::c_int, -pub msg: nlmsghdr, -} -impl nlmsgerr_attrs { -pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +pub struct ifla_cacheinfo { +pub max_reasm_len: __u32, +pub tstamp: __u32, +pub reachable_time: __u32, +pub retrans_time: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_qos_mapping { +pub from: __u32, +pub to: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tunnel_msg { +pub family: __u8, +pub flags: __u8, +pub reserved2: __u16, +pub ifindex: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vxlan_port_range { +pub low: __be16, +pub high: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_mac { +pub vf: __u32, +pub mac: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_broadcast { +pub broadcast: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan_info { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +pub vlan_proto: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_tx_rate { +pub vf: __u32, +pub rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rate { +pub vf: __u32, +pub min_tx_rate: __u32, +pub max_tx_rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_spoofchk { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_guid { +pub vf: __u32, +pub guid: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_link_state { +pub vf: __u32, +pub link_state: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rss_query_en { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_trust { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_port_vsi { +pub vsi_mgr_id: __u8, +pub vsi_type_id: [__u8; 3usize], +pub vsi_type_version: __u8, +pub pad: [__u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct if_stats_msg { +pub family: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub ifindex: __u32, +pub filter_mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_rmnet_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifaddrmsg { +pub ifa_family: __u8, +pub ifa_prefixlen: __u8, +pub ifa_flags: __u8, +pub ifa_scope: __u8, +pub ifa_index: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifa_cacheinfo { +pub ifa_prefered: __u32, +pub ifa_valid: __u32, +pub cstamp: __u32, +pub tstamp: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndmsg { +pub ndm_family: __u8, +pub ndm_pad1: __u8, +pub ndm_pad2: __u16, +pub ndm_ifindex: __s32, +pub ndm_state: __u16, +pub ndm_flags: __u8, +pub ndm_type: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nda_cacheinfo { +pub ndm_confirmed: __u32, +pub ndm_used: __u32, +pub ndm_updated: __u32, +pub ndm_refcnt: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_stats { +pub ndts_allocs: __u64, +pub ndts_destroys: __u64, +pub ndts_hash_grows: __u64, +pub ndts_res_failed: __u64, +pub ndts_lookups: __u64, +pub ndts_hits: __u64, +pub ndts_rcv_probes_mcast: __u64, +pub ndts_rcv_probes_ucast: __u64, +pub ndts_periodic_gc_runs: __u64, +pub ndts_forced_gc_runs: __u64, +pub ndts_table_fulls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndtmsg { +pub ndtm_family: __u8, +pub ndtm_pad1: __u8, +pub ndtm_pad2: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_config { +pub ndtc_key_len: __u16, +pub ndtc_entry_size: __u16, +pub ndtc_entries: __u32, +pub ndtc_last_flush: __u32, +pub ndtc_last_rand: __u32, +pub ndtc_hash_rnd: __u32, +pub ndtc_hash_mask: __u32, +pub ndtc_hash_chain_gc: __u32, +pub ndtc_proxy_qlen: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtattr { +pub rta_len: crate::ctypes::c_ushort, +pub rta_type: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtmsg { +pub rtm_family: crate::ctypes::c_uchar, +pub rtm_dst_len: crate::ctypes::c_uchar, +pub rtm_src_len: crate::ctypes::c_uchar, +pub rtm_tos: crate::ctypes::c_uchar, +pub rtm_table: crate::ctypes::c_uchar, +pub rtm_protocol: crate::ctypes::c_uchar, +pub rtm_scope: crate::ctypes::c_uchar, +pub rtm_type: crate::ctypes::c_uchar, +pub rtm_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnexthop { +pub rtnh_len: crate::ctypes::c_ushort, +pub rtnh_flags: crate::ctypes::c_uchar, +pub rtnh_hops: crate::ctypes::c_uchar, +pub rtnh_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug)] +pub struct rtvia { +pub rtvia_family: __kernel_sa_family_t, +pub rtvia_addr: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_cacheinfo { +pub rta_clntref: __u32, +pub rta_lastuse: __u32, +pub rta_expires: __s32, +pub rta_error: __u32, +pub rta_used: __u32, +pub rta_id: __u32, +pub rta_ts: __u32, +pub rta_tsage: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rta_session { +pub proto: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub u: rta_session__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { +pub sport: __u16, +pub dport: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { +pub type_: __u8, +pub code: __u8, +pub ident: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_mfc_stats { +pub mfcs_packets: __u64, +pub mfcs_bytes: __u64, +pub mfcs_wrong_if: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtgenmsg { +pub rtgen_family: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifinfomsg { +pub ifi_family: crate::ctypes::c_uchar, +pub __ifi_pad: crate::ctypes::c_uchar, +pub ifi_type: crate::ctypes::c_ushort, +pub ifi_index: crate::ctypes::c_int, +pub ifi_flags: crate::ctypes::c_uint, +pub ifi_change: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefixmsg { +pub prefix_family: crate::ctypes::c_uchar, +pub prefix_pad1: crate::ctypes::c_uchar, +pub prefix_pad2: crate::ctypes::c_ushort, +pub prefix_ifindex: crate::ctypes::c_int, +pub prefix_type: crate::ctypes::c_uchar, +pub prefix_len: crate::ctypes::c_uchar, +pub prefix_flags: crate::ctypes::c_uchar, +pub prefix_pad3: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefix_cacheinfo { +pub preferred_time: __u32, +pub valid_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcmsg { +pub tcm_family: crate::ctypes::c_uchar, +pub tcm__pad1: crate::ctypes::c_uchar, +pub tcm__pad2: crate::ctypes::c_ushort, +pub tcm_ifindex: crate::ctypes::c_int, +pub tcm_handle: __u32, +pub tcm_parent: __u32, +pub tcm_info: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nduseroptmsg { +pub nduseropt_family: crate::ctypes::c_uchar, +pub nduseropt_pad1: crate::ctypes::c_uchar, +pub nduseropt_opts_len: crate::ctypes::c_ushort, +pub nduseropt_ifindex: crate::ctypes::c_int, +pub nduseropt_icmp_type: __u8, +pub nduseropt_icmp_code: __u8, +pub nduseropt_pad2: crate::ctypes::c_ushort, +pub nduseropt_pad3: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcamsg { +pub tca_family: crate::ctypes::c_uchar, +pub tca__pad1: crate::ctypes::c_uchar, +pub tca__pad2: crate::ctypes::c_ushort, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const NETLINK_ROUTE: u32 = 0; +pub const NETLINK_UNUSED: u32 = 1; +pub const NETLINK_USERSOCK: u32 = 2; +pub const NETLINK_FIREWALL: u32 = 3; +pub const NETLINK_SOCK_DIAG: u32 = 4; +pub const NETLINK_NFLOG: u32 = 5; +pub const NETLINK_XFRM: u32 = 6; +pub const NETLINK_SELINUX: u32 = 7; +pub const NETLINK_ISCSI: u32 = 8; +pub const NETLINK_AUDIT: u32 = 9; +pub const NETLINK_FIB_LOOKUP: u32 = 10; +pub const NETLINK_CONNECTOR: u32 = 11; +pub const NETLINK_NETFILTER: u32 = 12; +pub const NETLINK_IP6_FW: u32 = 13; +pub const NETLINK_DNRTMSG: u32 = 14; +pub const NETLINK_KOBJECT_UEVENT: u32 = 15; +pub const NETLINK_GENERIC: u32 = 16; +pub const NETLINK_SCSITRANSPORT: u32 = 18; +pub const NETLINK_ECRYPTFS: u32 = 19; +pub const NETLINK_RDMA: u32 = 20; +pub const NETLINK_CRYPTO: u32 = 21; +pub const NETLINK_SMC: u32 = 22; +pub const NETLINK_INET_DIAG: u32 = 4; +pub const MAX_LINKS: u32 = 32; +pub const NLM_F_REQUEST: u32 = 1; +pub const NLM_F_MULTI: u32 = 2; +pub const NLM_F_ACK: u32 = 4; +pub const NLM_F_ECHO: u32 = 8; +pub const NLM_F_DUMP_INTR: u32 = 16; +pub const NLM_F_DUMP_FILTERED: u32 = 32; +pub const NLM_F_ROOT: u32 = 256; +pub const NLM_F_MATCH: u32 = 512; +pub const NLM_F_ATOMIC: u32 = 1024; +pub const NLM_F_DUMP: u32 = 768; +pub const NLM_F_REPLACE: u32 = 256; +pub const NLM_F_EXCL: u32 = 512; +pub const NLM_F_CREATE: u32 = 1024; +pub const NLM_F_APPEND: u32 = 2048; +pub const NLM_F_NONREC: u32 = 256; +pub const NLM_F_BULK: u32 = 512; +pub const NLM_F_CAPPED: u32 = 256; +pub const NLM_F_ACK_TLVS: u32 = 512; +pub const NLMSG_ALIGNTO: u32 = 4; +pub const NLMSG_NOOP: u32 = 1; +pub const NLMSG_ERROR: u32 = 2; +pub const NLMSG_DONE: u32 = 3; +pub const NLMSG_OVERRUN: u32 = 4; +pub const NLMSG_MIN_TYPE: u32 = 16; +pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; +pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; +pub const NETLINK_PKTINFO: u32 = 3; +pub const NETLINK_BROADCAST_ERROR: u32 = 4; +pub const NETLINK_NO_ENOBUFS: u32 = 5; +pub const NETLINK_RX_RING: u32 = 6; +pub const NETLINK_TX_RING: u32 = 7; +pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; +pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; +pub const NETLINK_CAP_ACK: u32 = 10; +pub const NETLINK_EXT_ACK: u32 = 11; +pub const NETLINK_GET_STRICT_CHK: u32 = 12; +pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; +pub const NET_MAJOR: u32 = 36; +pub const NLA_F_NESTED: u32 = 32768; +pub const NLA_F_NET_BYTEORDER: u32 = 16384; +pub const NLA_TYPE_MASK: i32 = -49153; +pub const NLA_ALIGNTO: u32 = 4; +pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; +pub const MACVLAN_FLAG_NODST: u32 = 2; +pub const IPVLAN_F_PRIVATE: u32 = 1; +pub const IPVLAN_F_VEPA: u32 = 2; +pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; +pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; +pub const MAX_VLAN_LIST_LEN: u32 = 1; +pub const PORT_PROFILE_MAX: u32 = 40; +pub const PORT_UUID_MAX: u32 = 16; +pub const PORT_SELF_VF: i32 = -1; +pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; +pub const XDP_FLAGS_SKB_MODE: u32 = 2; +pub const XDP_FLAGS_DRV_MODE: u32 = 4; +pub const XDP_FLAGS_HW_MODE: u32 = 8; +pub const XDP_FLAGS_REPLACE: u32 = 16; +pub const XDP_FLAGS_MODES: u32 = 14; +pub const XDP_FLAGS_MASK: u32 = 31; +pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; +pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; +pub const IFA_F_SECONDARY: u32 = 1; +pub const IFA_F_TEMPORARY: u32 = 1; +pub const IFA_F_NODAD: u32 = 2; +pub const IFA_F_OPTIMISTIC: u32 = 4; +pub const IFA_F_DADFAILED: u32 = 8; +pub const IFA_F_HOMEADDRESS: u32 = 16; +pub const IFA_F_DEPRECATED: u32 = 32; +pub const IFA_F_TENTATIVE: u32 = 64; +pub const IFA_F_PERMANENT: u32 = 128; +pub const IFA_F_MANAGETEMPADDR: u32 = 256; +pub const IFA_F_NOPREFIXROUTE: u32 = 512; +pub const IFA_F_MCAUTOJOIN: u32 = 1024; +pub const IFA_F_STABLE_PRIVACY: u32 = 2048; +pub const IFAPROT_UNSPEC: u32 = 0; +pub const IFAPROT_KERNEL_LO: u32 = 1; +pub const IFAPROT_KERNEL_RA: u32 = 2; +pub const IFAPROT_KERNEL_LL: u32 = 3; +pub const NTF_USE: u32 = 1; +pub const NTF_SELF: u32 = 2; +pub const NTF_MASTER: u32 = 4; +pub const NTF_PROXY: u32 = 8; +pub const NTF_EXT_LEARNED: u32 = 16; +pub const NTF_OFFLOADED: u32 = 32; +pub const NTF_STICKY: u32 = 64; +pub const NTF_ROUTER: u32 = 128; +pub const NTF_EXT_MANAGED: u32 = 1; +pub const NTF_EXT_LOCKED: u32 = 2; +pub const NUD_INCOMPLETE: u32 = 1; +pub const NUD_REACHABLE: u32 = 2; +pub const NUD_STALE: u32 = 4; +pub const NUD_DELAY: u32 = 8; +pub const NUD_PROBE: u32 = 16; +pub const NUD_FAILED: u32 = 32; +pub const NUD_NOARP: u32 = 64; +pub const NUD_PERMANENT: u32 = 128; +pub const NUD_NONE: u32 = 0; +pub const RTNL_FAMILY_IPMR: u32 = 128; +pub const RTNL_FAMILY_IP6MR: u32 = 129; +pub const RTNL_FAMILY_MAX: u32 = 129; +pub const RTA_ALIGNTO: u32 = 4; +pub const RTPROT_UNSPEC: u32 = 0; +pub const RTPROT_REDIRECT: u32 = 1; +pub const RTPROT_KERNEL: u32 = 2; +pub const RTPROT_BOOT: u32 = 3; +pub const RTPROT_STATIC: u32 = 4; +pub const RTPROT_GATED: u32 = 8; +pub const RTPROT_RA: u32 = 9; +pub const RTPROT_MRT: u32 = 10; +pub const RTPROT_ZEBRA: u32 = 11; +pub const RTPROT_BIRD: u32 = 12; +pub const RTPROT_DNROUTED: u32 = 13; +pub const RTPROT_XORP: u32 = 14; +pub const RTPROT_NTK: u32 = 15; +pub const RTPROT_DHCP: u32 = 16; +pub const RTPROT_MROUTED: u32 = 17; +pub const RTPROT_KEEPALIVED: u32 = 18; +pub const RTPROT_BABEL: u32 = 42; +pub const RTPROT_OPENR: u32 = 99; +pub const RTPROT_BGP: u32 = 186; +pub const RTPROT_ISIS: u32 = 187; +pub const RTPROT_OSPF: u32 = 188; +pub const RTPROT_RIP: u32 = 189; +pub const RTPROT_EIGRP: u32 = 192; +pub const RTM_F_NOTIFY: u32 = 256; +pub const RTM_F_CLONED: u32 = 512; +pub const RTM_F_EQUALIZE: u32 = 1024; +pub const RTM_F_PREFIX: u32 = 2048; +pub const RTM_F_LOOKUP_TABLE: u32 = 4096; +pub const RTM_F_FIB_MATCH: u32 = 8192; +pub const RTM_F_OFFLOAD: u32 = 16384; +pub const RTM_F_TRAP: u32 = 32768; +pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; +pub const RTNH_F_DEAD: u32 = 1; +pub const RTNH_F_PERVASIVE: u32 = 2; +pub const RTNH_F_ONLINK: u32 = 4; +pub const RTNH_F_OFFLOAD: u32 = 8; +pub const RTNH_F_LINKDOWN: u32 = 16; +pub const RTNH_F_UNRESOLVED: u32 = 32; +pub const RTNH_F_TRAP: u32 = 64; +pub const RTNH_COMPARE_MASK: u32 = 89; +pub const RTNH_ALIGNTO: u32 = 4; +pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; +pub const RTAX_FEATURE_ECN: u32 = 1; +pub const RTAX_FEATURE_SACK: u32 = 2; +pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; +pub const RTAX_FEATURE_ALLFRAG: u32 = 8; +pub const RTAX_FEATURE_MASK: u32 = 15; +pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; +pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; +pub const RTMGRP_LINK: u32 = 1; +pub const RTMGRP_NOTIFY: u32 = 2; +pub const RTMGRP_NEIGH: u32 = 4; +pub const RTMGRP_TC: u32 = 8; +pub const RTMGRP_IPV4_IFADDR: u32 = 16; +pub const RTMGRP_IPV4_MROUTE: u32 = 32; +pub const RTMGRP_IPV4_ROUTE: u32 = 64; +pub const RTMGRP_IPV4_RULE: u32 = 128; +pub const RTMGRP_IPV6_IFADDR: u32 = 256; +pub const RTMGRP_IPV6_MROUTE: u32 = 512; +pub const RTMGRP_IPV6_ROUTE: u32 = 1024; +pub const RTMGRP_IPV6_IFINFO: u32 = 2048; +pub const RTMGRP_DECnet_IFADDR: u32 = 4096; +pub const RTMGRP_DECnet_ROUTE: u32 = 16384; +pub const RTMGRP_IPV6_PREFIX: u32 = 131072; +pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; +pub const RTEXT_FILTER_VF: u32 = 1; +pub const RTEXT_FILTER_BRVLAN: u32 = 2; +pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; +pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; +pub const RTEXT_FILTER_MRP: u32 = 16; +pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; +pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; +pub const RTEXT_FILTER_MST: u32 = 128; +pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; +pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; +pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; +pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; +pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; +pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; +pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; +pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; +pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; +pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; +pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; +pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; +pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; +pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; +pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; +pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; +pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; +pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; +pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; +pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; +pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; +pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; +pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; +pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; +pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; +pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; +pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; +pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; +pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; +pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; +pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; +pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; +pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; +pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; +pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; +pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; +pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; +pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; +pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; +pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; +pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; +pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; +pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; +pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; +pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; +pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; +pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; +pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; +pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; +pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; +pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; +pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; +pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; +pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; +pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; +pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; +pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; +pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; +pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; +pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; +pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; +pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; +pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; +pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; +pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; +pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; +pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; +pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; +pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; +pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; +pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; +pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; +pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; +pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; +pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; +pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; +pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; +pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; +pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; +pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; +pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; +pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; +pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; +pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; +pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; +pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; +pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; +pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; +pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; +pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; +pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; +pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; +pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; +pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; +pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; +pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; +pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; +pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; +pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; +pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; +pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; +pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; +pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; +pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; +pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; +pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; +pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; +pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; +pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; +pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; +pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; +pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; +pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; +pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; +pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; +pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; +pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; +pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; +pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; +pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; +pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; +pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; +pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; +pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; +pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; +pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; +pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; +pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; +pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; +pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; +pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; +pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; +pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; +pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; +pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; +pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; +pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; +pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; +pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; +pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; +pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; +pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; +pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; +pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; +pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; +pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; +pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; +pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; +pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; +pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; +pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; +pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; +pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; +pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; +pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; +pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; +pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; +pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; +pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; +pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; +pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; +pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; +pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; +pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; +pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; +pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; +pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; +pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; +pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; +pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; +pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; +pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; +pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; +pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; +pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; +pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; +pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; +pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; +pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; +pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; +pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; +pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; +pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; +pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; +pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; +pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; +pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; +pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; +pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; +pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; +pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; +pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; +pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; +pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; +pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; +pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; +pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; +pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; +pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; +pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; +pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; +pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; +pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; +pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; +pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; +pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; +pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; +pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; +pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; +pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; +pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; +pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; +pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; +pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; +pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; +pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; +pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; +pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; +pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; +pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; +pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; +pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; +pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; +pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; +pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; +pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; +pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; +pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; +pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; +pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; +pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; +pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; +pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; +pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; +pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; +pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; +pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; +pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; +pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; +pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; +pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; +pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; +pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; +pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; +pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; +pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; +pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; +pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; +pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; +pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; +pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; +pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; +pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; +pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; +pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; +pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; +pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; +pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; +pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; +pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; +pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; +pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; +pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; +pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; +pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; +pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; +pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; +pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; +pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; +pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; +pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; +pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; +pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; +pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; +pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; +pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; +pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; +pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; +pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; +pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; +pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; +pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; +pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; +pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; +pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; +pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; +pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; +pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; +pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; +pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; +pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; +pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; +pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; +pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; +pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; +pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; +pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; +pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; +pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; +pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; +pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; +pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; +pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; +pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; +pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; +pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; +pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; +pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; +pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; +pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; +pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; +pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; +pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; +pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; +pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; +pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; +pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; +pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; +pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; +pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; +pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; +pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; +pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; +pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; +pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; +pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; +pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; +pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; +pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; +pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; +pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; +pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; +pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; +pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; +pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; +pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; +pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; +pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; +pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; +pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; +pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; +pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; +pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; +pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; +pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; +pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; +pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; +pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; +pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; +pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; +pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; +pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; +pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; +pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; +pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; +pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; +pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; +pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; +pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; +pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; +pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; +pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; +pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; +pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; +pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; +pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; +pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; +pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; +pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; +pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; +pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; +pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; +pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; +pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; +pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; +pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; +pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; +pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; +pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; +pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; +pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; +pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; +pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; +pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; +pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; +pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; +pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; +pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; +pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; +pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; +pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; +pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; +pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; +pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; +pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; +pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; +pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; +pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; +pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; +pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; +pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; +pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; +pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; +pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; +pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; +pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; +pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; +pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; +pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; +pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; +pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; +pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; +pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; +pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; +pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; +pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; +pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; +pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; +pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; +pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; +pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; +pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; +pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; +pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; +pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; +pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; +pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; +pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; +pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; +pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; +pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; +pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; +pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; +pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; +pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; +pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; +pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; +pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; +pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; +pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; +pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; +pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; +pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; +pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; +pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; +pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; +pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; +pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; +pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; +pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; +pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; +pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; +pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; +pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; +pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; +pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; +pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; +pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; +pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; +pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; +pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; +pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; +pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; +pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; +pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; +pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; +pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; +pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; +pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; +pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; +pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; +pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; +pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; +pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; +pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; +pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; +pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; +pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; +pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; +pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; +pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; +pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; +pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; +pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; +pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; +pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; +pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; +pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; +pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; +pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; +pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; +pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; +pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; +pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; +pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; +pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; +pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; +pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; +pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; +pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; +pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; +pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; +pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; +pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; +pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; +pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; +pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; +pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; +pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; +pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; +pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; +pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; +pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; +pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; +pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; +pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; +pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; +pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; +pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; +pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; +pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; +pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; +pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; +pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; +pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; +pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; +pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; +pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; +pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; +pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; +pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; +pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; +pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; +pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; +pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; +pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; +pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; +pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; +pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; +pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; +pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; +pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; +pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; +pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; +pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; +pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; +pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; +pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; +pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; +pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; +pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; +pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; +pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; +pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; +pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; +pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; +pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; +pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; +pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; +pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; +pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; +pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; +pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; +pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; +pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; +pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; +pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; +pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; +pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; +pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; +pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; +pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; +pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; +pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; +pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; +pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; +pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; +pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; +pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; +pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; +pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; +pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; +pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; +pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; +pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; +pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; +pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; +pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; +pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; +pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; +pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; +pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; +pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; +pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; +pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; +pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; +pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; +pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; +pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; +pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; +pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; +pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; +pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; +pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; +pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; +pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; +pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; +pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; +pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; +pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; +pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; +pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; +pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; +pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; +pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; +pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; +pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; +pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; +pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; +pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; +pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; +pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; +pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; +pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; +pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; +pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; +pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; +pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; +pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; +pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; +pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; +pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; +pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; +pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; +pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; +pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; +pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; +pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; +pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; +pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; +pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; +pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; +pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; +pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; +pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; +pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; +pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; +pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; +pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; +pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; +pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; +pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; +pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; +pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; +pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; +pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; +pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; +pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; +pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; +pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; +pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; +pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; +pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; +pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; +pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; +pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; +pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; +pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; +pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; +pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; +pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; +pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; +pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; +pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; +pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; +pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; +pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; +pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; +pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; +pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; +pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; +pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; +pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; +pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; +pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; +pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; +pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; +pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; +pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; +pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; +pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; +pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; +pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; +pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; +pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; +pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; +pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; +pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; +pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; +pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; +pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; +pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; +pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; +pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -385,29 +1514,6 @@ NLMSGERR_ATTR_MISS_NEST = 6, __NLMSGERR_ATTR_MAX = 7, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_pktinfo { -pub group: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_req { -pub nm_block_size: crate::ctypes::c_uint, -pub nm_block_nr: crate::ctypes::c_uint, -pub nm_frame_size: crate::ctypes::c_uint, -pub nm_frame_nr: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_hdr { -pub nm_status: crate::ctypes::c_uint, -pub nm_len: crate::ctypes::c_uint, -pub nm_group: __u32, -pub nm_pid: __u32, -pub nm_uid: __u32, -pub nm_gid: __u32, -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -418,8 +1524,6 @@ NL_MMAP_STATUS_COPY = 3, NL_MMAP_STATUS_SKIP = 4, } -pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; -pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -427,208 +1531,46 @@ NETLINK_UNCONNECTED = 0, NETLINK_CONNECTED = 1, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nlattr { -pub nla_len: __u16, -pub nla_type: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nla_bitfield32 { -pub value: __u32, -pub selector: __u32, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_attribute_type { -NL_ATTR_TYPE_INVALID = 0, -NL_ATTR_TYPE_FLAG = 1, -NL_ATTR_TYPE_U8 = 2, -NL_ATTR_TYPE_U16 = 3, -NL_ATTR_TYPE_U32 = 4, -NL_ATTR_TYPE_U64 = 5, -NL_ATTR_TYPE_S8 = 6, -NL_ATTR_TYPE_S16 = 7, -NL_ATTR_TYPE_S32 = 8, -NL_ATTR_TYPE_S64 = 9, -NL_ATTR_TYPE_BINARY = 10, -NL_ATTR_TYPE_STRING = 11, -NL_ATTR_TYPE_NUL_STRING = 12, -NL_ATTR_TYPE_NESTED = 13, -NL_ATTR_TYPE_NESTED_ARRAY = 14, -NL_ATTR_TYPE_BITFIELD32 = 15, -} -impl netlink_policy_type_attr { -pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; -} #[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_policy_type_attr { -NL_POLICY_TYPE_ATTR_UNSPEC = 0, -NL_POLICY_TYPE_ATTR_TYPE = 1, -NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, -NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, -NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, -NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, -NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, -NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, -NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, -NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, -NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, -NL_POLICY_TYPE_ATTR_PAD = 11, -NL_POLICY_TYPE_ATTR_MASK = 12, -__NL_POLICY_TYPE_ATTR_MAX = 13, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats { -pub rx_packets: __u32, -pub tx_packets: __u32, -pub rx_bytes: __u32, -pub tx_bytes: __u32, -pub rx_errors: __u32, -pub tx_errors: __u32, -pub rx_dropped: __u32, -pub tx_dropped: __u32, -pub multicast: __u32, -pub collisions: __u32, -pub rx_length_errors: __u32, -pub rx_over_errors: __u32, -pub rx_crc_errors: __u32, -pub rx_frame_errors: __u32, -pub rx_fifo_errors: __u32, -pub rx_missed_errors: __u32, -pub tx_aborted_errors: __u32, -pub tx_carrier_errors: __u32, -pub tx_fifo_errors: __u32, -pub tx_heartbeat_errors: __u32, -pub tx_window_errors: __u32, -pub rx_compressed: __u32, -pub tx_compressed: __u32, -pub rx_nohandler: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, -pub collisions: __u64, -pub rx_length_errors: __u64, -pub rx_over_errors: __u64, -pub rx_crc_errors: __u64, -pub rx_frame_errors: __u64, -pub rx_fifo_errors: __u64, -pub rx_missed_errors: __u64, -pub tx_aborted_errors: __u64, -pub tx_carrier_errors: __u64, -pub tx_fifo_errors: __u64, -pub tx_heartbeat_errors: __u64, -pub tx_window_errors: __u64, -pub rx_compressed: __u64, -pub tx_compressed: __u64, -pub rx_nohandler: __u64, -pub rx_otherhost_dropped: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_hw_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_attribute_type { +NL_ATTR_TYPE_INVALID = 0, +NL_ATTR_TYPE_FLAG = 1, +NL_ATTR_TYPE_U8 = 2, +NL_ATTR_TYPE_U16 = 3, +NL_ATTR_TYPE_U32 = 4, +NL_ATTR_TYPE_U64 = 5, +NL_ATTR_TYPE_S8 = 6, +NL_ATTR_TYPE_S16 = 7, +NL_ATTR_TYPE_S32 = 8, +NL_ATTR_TYPE_S64 = 9, +NL_ATTR_TYPE_BINARY = 10, +NL_ATTR_TYPE_STRING = 11, +NL_ATTR_TYPE_NUL_STRING = 12, +NL_ATTR_TYPE_NESTED = 13, +NL_ATTR_TYPE_NESTED_ARRAY = 14, +NL_ATTR_TYPE_BITFIELD32 = 15, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_ifmap { -pub mem_start: __u64, -pub mem_end: __u64, -pub base_addr: __u64, -pub irq: __u16, -pub dma: __u8, -pub port: __u8, +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_policy_type_attr { +NL_POLICY_TYPE_ATTR_UNSPEC = 0, +NL_POLICY_TYPE_ATTR_TYPE = 1, +NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, +NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, +NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, +NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, +NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, +NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, +NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, +NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, +NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, +NL_POLICY_TYPE_ATTR_PAD = 11, +NL_POLICY_TYPE_ATTR_MASK = 12, +__NL_POLICY_TYPE_ATTR_MAX = 13, } -pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; -pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; -pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; -pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; -pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; -pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; -pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; -pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; -pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; -pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; -pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; -pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; -pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; -pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; -pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; -pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; -pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; -pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; -pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; -pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; -pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; -pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; -pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; -pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; -pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; -pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; -pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; -pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; -pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; -pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; -pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; -pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; -pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; -pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; -pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; -pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; -pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; -pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; -pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; -pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; -pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; -pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; -pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; -pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; -pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; -pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; -pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; -pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; -pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; -pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; -pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; -pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; -pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; -pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; -pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; -pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; -pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; -pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; -pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; -pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; -pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; -pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; -pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; -pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; -pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -700,11 +1642,6 @@ IFLA_GRO_IPV4_MAX_SIZE = 64, __IFLA_MAX = 65, } -pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; -pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; -pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; -pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; -pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -714,9 +1651,6 @@ IFLA_PROTO_DOWN_REASON_VALUE = 2, __IFLA_PROTO_DOWN_REASON_CNT = 3, } -pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; -pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; -pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -725,17 +1659,6 @@ IFLA_INET_CONF = 1, __IFLA_INET_MAX = 2, } -pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; -pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; -pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; -pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; -pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; -pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; -pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; -pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; -pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; -pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; -pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -761,55 +1684,6 @@ IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, IN6_ADDR_GEN_MODE_RANDOM = 3, } -pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; -pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; -pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; -pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; -pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; -pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; -pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; -pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; -pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; -pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; -pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; -pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; -pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; -pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; -pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; -pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; -pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; -pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; -pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; -pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; -pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; -pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; -pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; -pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; -pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; -pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; -pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; -pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; -pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; -pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; -pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; -pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; -pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; -pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; -pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; -pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; -pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; -pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; -pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; -pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; -pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; -pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; -pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; -pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; -pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; -pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; -pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; -pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; -pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -848,81 +1722,29 @@ IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, IFLA_BR_MCAST_QUERIER_INTVL = 32, IFLA_BR_MCAST_QUERY_INTVL = 33, -IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, -IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, -IFLA_BR_NF_CALL_IPTABLES = 36, -IFLA_BR_NF_CALL_IP6TABLES = 37, -IFLA_BR_NF_CALL_ARPTABLES = 38, -IFLA_BR_VLAN_DEFAULT_PVID = 39, -IFLA_BR_PAD = 40, -IFLA_BR_VLAN_STATS_ENABLED = 41, -IFLA_BR_MCAST_STATS_ENABLED = 42, -IFLA_BR_MCAST_IGMP_VERSION = 43, -IFLA_BR_MCAST_MLD_VERSION = 44, -IFLA_BR_VLAN_STATS_PER_PORT = 45, -IFLA_BR_MULTI_BOOLOPT = 46, -IFLA_BR_MCAST_QUERIER_STATE = 47, -__IFLA_BR_MAX = 48, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_bridge_id { -pub prio: [__u8; 2usize], -pub addr: [__u8; 6usize], -} -pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; -pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -BRIDGE_MODE_UNSPEC = 0, -BRIDGE_MODE_HAIRPIN = 1, -} -pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; -pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; -pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; -pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; -pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; -pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; -pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; -pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; -pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; -pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; -pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; -pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; -pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; -pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; -pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; -pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; -pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; -pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; -pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; -pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; -pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; -pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; -pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; -pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; -pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; -pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; -pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; -pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; -pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; -pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; -pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; -pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; -pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; -pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; -pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; -pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; -pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; -pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; -pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; -pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; -pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; -pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, +IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, +IFLA_BR_NF_CALL_IPTABLES = 36, +IFLA_BR_NF_CALL_IP6TABLES = 37, +IFLA_BR_NF_CALL_ARPTABLES = 38, +IFLA_BR_VLAN_DEFAULT_PVID = 39, +IFLA_BR_PAD = 40, +IFLA_BR_VLAN_STATS_ENABLED = 41, +IFLA_BR_MCAST_STATS_ENABLED = 42, +IFLA_BR_MCAST_IGMP_VERSION = 43, +IFLA_BR_MCAST_MLD_VERSION = 44, +IFLA_BR_VLAN_STATS_PER_PORT = 45, +IFLA_BR_MULTI_BOOLOPT = 46, +IFLA_BR_MCAST_QUERIER_STATE = 47, +__IFLA_BR_MAX = 48, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +BRIDGE_MODE_UNSPEC = 0, +BRIDGE_MODE_HAIRPIN = 1, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -972,21 +1794,6 @@ IFLA_BRPORT_MCAST_MAX_GROUPS = 42, __IFLA_BRPORT_MAX = 43, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_cacheinfo { -pub max_reasm_len: __u32, -pub tstamp: __u32, -pub reachable_time: __u32, -pub retrans_time: __u32, -} -pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; -pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; -pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; -pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; -pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; -pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; -pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -999,13 +1806,6 @@ IFLA_INFO_SLAVE_DATA = 5, __IFLA_INFO_MAX = 6, } -pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; -pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; -pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; -pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; -pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; -pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; -pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1018,15 +1818,6 @@ IFLA_VLAN_PROTOCOL = 5, __IFLA_VLAN_MAX = 6, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; -pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; -pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1035,22 +1826,6 @@ IFLA_VLAN_QOS_MAPPING = 1, __IFLA_VLAN_QOS_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_qos_mapping { -pub from: __u32, -pub to: __u32, -} -pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; -pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; -pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; -pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; -pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; -pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; -pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; -pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; -pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; -pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1085,9 +1860,6 @@ MACVLAN_MACADDR_FLUSH = 2, MACVLAN_MACADDR_SET = 3, } -pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; -pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; -pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1096,9 +1868,6 @@ IFLA_VRF_TABLE = 1, __IFLA_VRF_MAX = 2, } -pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; -pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; -pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1107,23 +1876,6 @@ IFLA_VRF_PORT_TABLE = 1, __IFLA_VRF_PORT_MAX = 2, } -pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; -pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; -pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; -pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; -pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; -pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; -pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; -pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; -pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; -pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; -pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; -pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; -pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; -pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; -pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; -pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; -pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1146,11 +1898,6 @@ IFLA_MACSEC_OFFLOAD = 15, __IFLA_MACSEC_MAX = 16, } -pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; -pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; -pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; -pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; -pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1161,9 +1908,6 @@ IFLA_XFRM_COLLECT_METADATA = 3, __IFLA_XFRM_MAX = 4, } -impl macsec_validation_type { -pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1173,9 +1917,6 @@ MACSEC_VALIDATE_STRICT = 2, __MACSEC_VALIDATE_END = 3, } -impl macsec_offload { -pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1185,10 +1926,6 @@ MACSEC_OFFLOAD_MAC = 2, __MACSEC_OFFLOAD_END = 3, } -pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; -pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; -pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; -pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1207,25 +1944,6 @@ IPVLAN_MODE_L3S = 2, IPVLAN_MODE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tunnel_msg { -pub family: __u8, -pub flags: __u8, -pub reserved2: __u16, -pub ifindex: __u32, -} -pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; -pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; -pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; -pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; -pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; -pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; -pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; -pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; -pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1242,13 +1960,6 @@ VNIFILTER_ENTRY_STATS_PAD = 9, __VNIFILTER_ENTRY_STATS_MAX = 10, } -pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; -pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; -pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; -pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; -pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; -pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1261,9 +1972,6 @@ VXLAN_VNIFILTER_ENTRY_STATS = 5, __VXLAN_VNIFILTER_ENTRY_MAX = 6, } -pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; -pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1272,38 +1980,6 @@ VXLAN_VNIFILTER_ENTRY = 1, __VXLAN_VNIFILTER_MAX = 2, } -pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; -pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; -pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; -pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; -pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; -pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; -pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; -pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; -pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; -pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; -pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; -pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; -pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; -pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; -pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; -pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; -pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; -pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; -pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; -pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; -pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; -pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; -pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; -pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; -pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; -pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; -pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; -pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; -pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; -pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1341,15 +2017,6 @@ IFLA_VXLAN_VNIFILTER = 30, __IFLA_VXLAN_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vxlan_port_range { -pub low: __be16, -pub high: __be16, -} -impl ifla_vxlan_df { -pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1359,22 +2026,6 @@ VXLAN_DF_INHERIT = 2, __VXLAN_DF_END = 3, } -pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; -pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; -pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; -pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; -pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; -pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; -pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; -pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; -pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; -pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; -pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; -pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; -pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; -pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1396,9 +2047,6 @@ IFLA_GENEVE_INNER_PROTO_INHERIT = 14, __IFLA_GENEVE_MAX = 15, } -impl ifla_geneve_df { -pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1408,12 +2056,6 @@ GENEVE_DF_INHERIT = 2, __GENEVE_DF_END = 3, } -pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; -pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; -pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; -pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; -pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; -pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1425,9 +2067,6 @@ IFLA_BAREUDP_MULTIPROTO_MODE = 4, __IFLA_BAREUDP_MAX = 5, } -pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; -pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; -pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1443,60 +2082,19 @@ GTP_ROLE_GGSN = 0, GTP_ROLE_SGSN = 1, } -pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; -pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; -pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; -pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; -pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; -pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; -pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; -pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub enum _bindgen_ty_25 { -IFLA_GTP_UNSPEC = 0, -IFLA_GTP_FD0 = 1, -IFLA_GTP_FD1 = 2, -IFLA_GTP_PDP_HASHSIZE = 3, -IFLA_GTP_ROLE = 4, -IFLA_GTP_CREATE_SOCKETS = 5, -IFLA_GTP_RESTART_COUNT = 6, -__IFLA_GTP_MAX = 7, -} -pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; -pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; -pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; -pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; -pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; -pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; -pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; -pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; -pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; -pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; -pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; -pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; -pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; -pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; -pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; -pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; -pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; -pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; -pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; -pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; -pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; -pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; -pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; -pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; -pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; -pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; -pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; -pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; -pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; -pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; -pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; -pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; -pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +IFLA_GTP_UNSPEC = 0, +IFLA_GTP_FD0 = 1, +IFLA_GTP_FD1 = 2, +IFLA_GTP_PDP_HASHSIZE = 3, +IFLA_GTP_ROLE = 4, +IFLA_GTP_CREATE_SOCKETS = 5, +IFLA_GTP_RESTART_COUNT = 6, +__IFLA_GTP_MAX = 7, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1535,13 +2133,6 @@ IFLA_BOND_NS_IP6_TARGET = 31, __IFLA_BOND_MAX = 32, } -pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; -pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; -pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; -pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; -pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1554,17 +2145,6 @@ IFLA_BOND_AD_INFO_PARTNER_MAC = 5, __IFLA_BOND_AD_INFO_MAX = 6, } -pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; -pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; -pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; -pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; -pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; -pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; -pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; -pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; -pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1581,9 +2161,6 @@ IFLA_BOND_SLAVE_PRIO = 9, __IFLA_BOND_SLAVE_MAX = 10, } -pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; -pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; -pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1592,21 +2169,6 @@ IFLA_VF_INFO = 1, __IFLA_VF_INFO_MAX = 2, } -pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; -pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; -pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; -pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; -pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; -pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; -pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; -pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; -pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; -pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; -pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; -pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; -pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; -pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; -pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1627,27 +2189,6 @@ IFLA_VF_BROADCAST = 13, __IFLA_VF_MAX = 14, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_mac { -pub vf: __u32, -pub mac: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_broadcast { -pub broadcast: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -} -pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; -pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; -pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1656,43 +2197,6 @@ IFLA_VF_VLAN_INFO = 1, __IFLA_VF_VLAN_INFO_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan_info { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -pub vlan_proto: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_tx_rate { -pub vf: __u32, -pub rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rate { -pub vf: __u32, -pub min_tx_rate: __u32, -pub max_tx_rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_spoofchk { -pub vf: __u32, -pub setting: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_guid { -pub vf: __u32, -pub guid: __u64, -} -pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; -pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; -pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; -pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1702,28 +2206,6 @@ IFLA_VF_LINK_STATE_DISABLE = 2, __IFLA_VF_LINK_STATE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_link_state { -pub vf: __u32, -pub link_state: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rss_query_en { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; -pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; -pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; -pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; -pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; -pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; -pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; -pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; -pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; -pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1739,15 +2221,6 @@ IFLA_VF_STATS_TX_DROPPED = 8, __IFLA_VF_STATS_MAX = 9, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_trust { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; -pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; -pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1756,15 +2229,6 @@ IFLA_VF_PORT = 1, __IFLA_VF_PORT_MAX = 2, } -pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; -pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; -pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; -pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; -pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; -pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; -pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; -pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; -pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1779,10 +2243,6 @@ IFLA_PORT_RESPONSE = 7, __IFLA_PORT_MAX = 8, } -pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; -pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; -pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; -pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1792,19 +2252,6 @@ PORT_REQUEST_ASSOCIATE = 2, PORT_REQUEST_DISASSOCIATE = 3, } -pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; -pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; -pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; -pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; -pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; -pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; -pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; -pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; -pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; -pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; -pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1823,19 +2270,6 @@ PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, PORT_PROFILE_RESPONSE_ERROR = 261, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_port_vsi { -pub vsi_mgr_id: __u8, -pub vsi_type_id: [__u8; 3usize], -pub vsi_type_version: __u8, -pub pad: [__u8; 3usize], -} -pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; -pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; -pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; -pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; -pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1846,8 +2280,6 @@ IFLA_IPOIB_UMCAST = 3, __IFLA_IPOIB_MAX = 4, } -pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; -pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1855,9 +2287,6 @@ IPOIB_MODE_DATAGRAM = 0, IPOIB_MODE_CONNECTED = 1, } -pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; -pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; -pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1866,15 +2295,6 @@ HSR_PROTOCOL_PRP = 1, HSR_PROTOCOL_MAX = 2, } -pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; -pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; -pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; -pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; -pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; -pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; -pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; -pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; -pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1889,22 +2309,6 @@ IFLA_HSR_PROTOCOL = 7, __IFLA_HSR_MAX = 8, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_stats_msg { -pub family: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub ifindex: __u32, -pub filter_mask: __u32, -} -pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; -pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; -pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; -pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; -pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; -pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; -pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1917,10 +2321,6 @@ IFLA_STATS_AF_SPEC = 5, __IFLA_STATS_MAX = 6, } -pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; -pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; -pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1930,10 +2330,6 @@ IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, __IFLA_STATS_GETSET_MAX = 3, } -pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; -pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; -pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; -pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1943,11 +2339,6 @@ LINK_XSTATS_TYPE_BOND = 2, __LINK_XSTATS_TYPE_MAX = 3, } -pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; -pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1958,10 +2349,6 @@ IFLA_OFFLOAD_XSTATS_L3_STATS = 3, __IFLA_OFFLOAD_XSTATS_MAX = 4, } -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; -pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1971,11 +2358,6 @@ IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, } -pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; -pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; -pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; -pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; -pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1986,16 +2368,6 @@ XDP_ATTACHED_HW = 3, XDP_ATTACHED_MULTI = 4, } -pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; -pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; -pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; -pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; -pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; -pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; -pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; -pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; -pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; -pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2011,13 +2383,6 @@ IFLA_XDP_EXPECTED_FD = 8, __IFLA_XDP_MAX = 9, } -pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; -pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; -pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; -pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; -pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; -pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; -pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2027,20 +2392,9 @@ IFLA_EVENT_FEATURES = 2, IFLA_EVENT_BONDING_FAILOVER = 3, IFLA_EVENT_NOTIFY_PEERS = 4, -IFLA_EVENT_IGMP_RESEND = 5, -IFLA_EVENT_BONDING_OPTIONS = 6, -} -pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; -pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; -pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; -pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; -pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; -pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; -pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; -pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; -pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; -pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; -pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; +IFLA_EVENT_IGMP_RESEND = 5, +IFLA_EVENT_BONDING_OPTIONS = 6, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2057,10 +2411,6 @@ IFLA_TUN_NUM_DISABLED_QUEUES = 9, __IFLA_TUN_MAX = 10, } -pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; -pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; -pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; -pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2070,15 +2420,6 @@ IFLA_RMNET_FLAGS = 2, __IFLA_RMNET_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_rmnet_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; -pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; -pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2087,9 +2428,6 @@ IFLA_MCTP_NET = 1, __IFLA_MCTP_MAX = 2, } -pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; -pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; -pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2098,28 +2436,6 @@ IFLA_DSA_MASTER = 1, __IFLA_DSA_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifaddrmsg { -pub ifa_family: __u8, -pub ifa_prefixlen: __u8, -pub ifa_flags: __u8, -pub ifa_scope: __u8, -pub ifa_index: __u32, -} -pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; -pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; -pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; -pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; -pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; -pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; -pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; -pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; -pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; -pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; -pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; -pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; -pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2138,44 +2454,6 @@ IFA_PROTO = 11, __IFA_MAX = 12, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifa_cacheinfo { -pub ifa_prefered: __u32, -pub ifa_valid: __u32, -pub cstamp: __u32, -pub tstamp: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndmsg { -pub ndm_family: __u8, -pub ndm_pad1: __u8, -pub ndm_pad2: __u16, -pub ndm_ifindex: __s32, -pub ndm_state: __u16, -pub ndm_flags: __u8, -pub ndm_type: __u8, -} -pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; -pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; -pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; -pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; -pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; -pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; -pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; -pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; -pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; -pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; -pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; -pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; -pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; -pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; -pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; -pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; -pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; -pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; -pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2200,50 +2478,6 @@ NDA_NDM_FLAGS_MASK = 17, __NDA_MAX = 18, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nda_cacheinfo { -pub ndm_confirmed: __u32, -pub ndm_used: __u32, -pub ndm_updated: __u32, -pub ndm_refcnt: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_stats { -pub ndts_allocs: __u64, -pub ndts_destroys: __u64, -pub ndts_hash_grows: __u64, -pub ndts_res_failed: __u64, -pub ndts_lookups: __u64, -pub ndts_hits: __u64, -pub ndts_rcv_probes_mcast: __u64, -pub ndts_rcv_probes_ucast: __u64, -pub ndts_periodic_gc_runs: __u64, -pub ndts_forced_gc_runs: __u64, -pub ndts_table_fulls: __u64, -} -pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; -pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; -pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; -pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; -pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; -pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; -pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; -pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; -pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; -pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; -pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; -pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; -pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; -pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; -pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; -pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; -pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; -pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; -pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; -pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; -pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2270,37 +2504,6 @@ NDTPA_INTERVAL_PROBE_TIME_MS = 19, __NDTPA_MAX = 20, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndtmsg { -pub ndtm_family: __u8, -pub ndtm_pad1: __u8, -pub ndtm_pad2: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_config { -pub ndtc_key_len: __u16, -pub ndtc_entry_size: __u16, -pub ndtc_entries: __u32, -pub ndtc_last_flush: __u32, -pub ndtc_last_rand: __u32, -pub ndtc_hash_rnd: __u32, -pub ndtc_hash_mask: __u32, -pub ndtc_hash_chain_gc: __u32, -pub ndtc_proxy_qlen: __u32, -} -pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; -pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; -pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; -pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; -pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; -pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; -pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; -pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; -pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; -pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; -pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2317,8 +2520,6 @@ NDTA_PAD = 9, __NDTA_MAX = 10, } -pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; -pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2326,10 +2527,6 @@ FDB_NOTIFY_BIT = 1, FDB_NOTIFY_INACTIVE_BIT = 2, } -pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; -pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; -pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; -pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2339,79 +2536,6 @@ NFEA_DONT_REFRESH = 2, __NFEA_MAX = 3, } -pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; -pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; -pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; -pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; -pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; -pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; -pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; -pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; -pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; -pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; -pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; -pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; -pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; -pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; -pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; -pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; -pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; -pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; -pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; -pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; -pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; -pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; -pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; -pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; -pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; -pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; -pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; -pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; -pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; -pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; -pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; -pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; -pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; -pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; -pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; -pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; -pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; -pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; -pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; -pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; -pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; -pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; -pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; -pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; -pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; -pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; -pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; -pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; -pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; -pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; -pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; -pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; -pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; -pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; -pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; -pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; -pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; -pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; -pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; -pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; -pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; -pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; -pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; -pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; -pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; -pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; -pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; -pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; -pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; -pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; -pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2484,43 +2608,11 @@ RTM_NEWNEXTHOPBUCKET = 116, RTM_DELNEXTHOPBUCKET = 117, RTM_GETNEXTHOPBUCKET = 118, -RTM_NEWTUNNEL = 120, -RTM_DELTUNNEL = 121, -RTM_GETTUNNEL = 122, -__RTM_MAX = 123, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtattr { -pub rta_len: crate::ctypes::c_ushort, -pub rta_type: crate::ctypes::c_ushort, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtmsg { -pub rtm_family: crate::ctypes::c_uchar, -pub rtm_dst_len: crate::ctypes::c_uchar, -pub rtm_src_len: crate::ctypes::c_uchar, -pub rtm_tos: crate::ctypes::c_uchar, -pub rtm_table: crate::ctypes::c_uchar, -pub rtm_protocol: crate::ctypes::c_uchar, -pub rtm_scope: crate::ctypes::c_uchar, -pub rtm_type: crate::ctypes::c_uchar, -pub rtm_flags: crate::ctypes::c_uint, +RTM_NEWTUNNEL = 120, +RTM_DELTUNNEL = 121, +RTM_GETTUNNEL = 122, +__RTM_MAX = 123, } -pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; -pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; -pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; -pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; -pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; -pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; -pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; -pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; -pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; -pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; -pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; -pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; -pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2597,51 +2689,6 @@ RTA_NH_ID = 30, __RTA_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnexthop { -pub rtnh_len: crate::ctypes::c_ushort, -pub rtnh_flags: crate::ctypes::c_uchar, -pub rtnh_hops: crate::ctypes::c_uchar, -pub rtnh_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug)] -pub struct rtvia { -pub rtvia_family: __kernel_sa_family_t, -pub rtvia_addr: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_cacheinfo { -pub rta_clntref: __u32, -pub rta_lastuse: __u32, -pub rta_expires: __s32, -pub rta_error: __u32, -pub rta_used: __u32, -pub rta_id: __u32, -pub rta_ts: __u32, -pub rta_tsage: __u32, -} -pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; -pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; -pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; -pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; -pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; -pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; -pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; -pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; -pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; -pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; -pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; -pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; -pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; -pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; -pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; -pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; -pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; -pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; -pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2666,72 +2713,6 @@ RTAX_FASTOPEN_NO_COOKIE = 17, __RTAX_MAX = 18, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rta_session { -pub proto: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub u: rta_session__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union rta_session__bindgen_ty_1 { -pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, -pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, -pub spi: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { -pub sport: __u16, -pub dport: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { -pub type_: __u8, -pub code: __u8, -pub ident: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_mfc_stats { -pub mfcs_packets: __u64, -pub mfcs_bytes: __u64, -pub mfcs_wrong_if: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtgenmsg { -pub rtgen_family: crate::ctypes::c_uchar, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifinfomsg { -pub ifi_family: crate::ctypes::c_uchar, -pub __ifi_pad: crate::ctypes::c_uchar, -pub ifi_type: crate::ctypes::c_ushort, -pub ifi_index: crate::ctypes::c_int, -pub ifi_flags: crate::ctypes::c_uint, -pub ifi_change: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefixmsg { -pub prefix_family: crate::ctypes::c_uchar, -pub prefix_pad1: crate::ctypes::c_uchar, -pub prefix_pad2: crate::ctypes::c_ushort, -pub prefix_ifindex: crate::ctypes::c_int, -pub prefix_type: crate::ctypes::c_uchar, -pub prefix_len: crate::ctypes::c_uchar, -pub prefix_flags: crate::ctypes::c_uchar, -pub prefix_pad3: crate::ctypes::c_uchar, -} -pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; -pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; -pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; -pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2741,41 +2722,6 @@ PREFIX_CACHEINFO = 2, __PREFIX_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefix_cacheinfo { -pub preferred_time: __u32, -pub valid_time: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcmsg { -pub tcm_family: crate::ctypes::c_uchar, -pub tcm__pad1: crate::ctypes::c_uchar, -pub tcm__pad2: crate::ctypes::c_ushort, -pub tcm_ifindex: crate::ctypes::c_int, -pub tcm_handle: __u32, -pub tcm_parent: __u32, -pub tcm_info: __u32, -} -pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; -pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; -pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; -pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; -pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; -pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; -pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; -pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; -pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; -pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; -pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; -pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; -pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; -pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; -pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; -pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; -pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; -pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2799,21 +2745,6 @@ TCA_EXT_WARN_MSG = 16, __TCA_MAX = 17, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nduseroptmsg { -pub nduseropt_family: crate::ctypes::c_uchar, -pub nduseropt_pad1: crate::ctypes::c_uchar, -pub nduseropt_opts_len: crate::ctypes::c_ushort, -pub nduseropt_ifindex: crate::ctypes::c_int, -pub nduseropt_icmp_type: __u8, -pub nduseropt_icmp_code: __u8, -pub nduseropt_pad2: crate::ctypes::c_ushort, -pub nduseropt_pad3: crate::ctypes::c_uint, -} -pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; -pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; -pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2865,20 +2796,6 @@ RTNLGRP_STATS = 36, __RTNLGRP_MAX = 37, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcamsg { -pub tca_family: crate::ctypes::c_uchar, -pub tca__pad1: crate::ctypes::c_uchar, -pub tca__pad2: crate::ctypes::c_ushort, -} -pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; -pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; -pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; -pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; -pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; -pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; -pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2891,3 +2808,67 @@ TCA_ROOT_EXT_WARN_MSG = 5, __TCA_ROOT_MAX = 6, } +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __vector128__bindgen_ty_1 { +pub __bindgen_anon_1: __vector128__bindgen_ty_1__bindgen_ty_1, +pub u: [__u32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union rta_session__bindgen_ty_1 { +pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, +pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, +pub spi: __u32, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl nlmsgerr_attrs { +pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +} +impl netlink_policy_type_attr { +pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; +} +impl macsec_validation_type { +pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; +} +impl macsec_offload { +pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; +} +impl ifla_vxlan_df { +pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; +} +impl ifla_geneve_df { +pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/net.rs temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/net.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/net.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/net.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1864 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type addr_t = crate::ctypes::c_ulong; +pub type saddr_t = crate::ctypes::c_long; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_size_t = crate::ctypes::c_ulong; +pub type __kernel_ssize_t = crate::ctypes::c_long; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_ino_t = crate::ctypes::c_uint; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_ptrdiff_t = crate::ctypes::c_long; +pub type __kernel_sigset_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type socklen_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C, packed(4))] +#[derive(Copy, Clone)] +pub struct __vector128 { +pub __bindgen_anon_1: __vector128__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __vector128__bindgen_ty_1__bindgen_ty_1 { +pub high: __u64, +pub low: __u64, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_addr { +pub s_addr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq { +pub imr_multiaddr: in_addr, +pub imr_interface: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreqn { +pub imr_multiaddr: in_addr, +pub imr_address: in_addr, +pub imr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq_source { +pub imr_multiaddr: __be32, +pub imr_interface: __be32, +pub imr_sourceaddr: __be32, +} +#[repr(C)] +pub struct ip_msfilter { +pub imsf_multiaddr: __be32, +pub imsf_interface: __be32, +pub imsf_fmode: __u32, +pub imsf_numsrc: __u32, +pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, +} +#[repr(C)] +pub struct ip_msfilter__bindgen_ty_1 { +pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, +pub __bindgen_anon_1: __BindgenUnionField, +pub bindgen_union_field: u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { +pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub imsf_slist_flex: __IncompleteArrayField<__be32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_req { +pub gr_interface: __u32, +pub gr_group: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_source_req { +pub gsr_interface: __u32, +pub gsr_group: __kernel_sockaddr_storage, +pub gsr_source: __kernel_sockaddr_storage, +} +#[repr(C)] +pub struct group_filter { +pub __bindgen_anon_1: group_filter__bindgen_ty_1, +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 34usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { +pub gf_interface_aux: __u32, +pub gf_group_aux: __kernel_sockaddr_storage, +pub gf_fmode_aux: __u32, +pub gf_numsrc_aux: __u32, +pub gf_slist: [__kernel_sockaddr_storage; 1usize], +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { +pub gf_interface: __u32, +pub gf_group: __kernel_sockaddr_storage, +pub gf_fmode: __u32, +pub gf_numsrc: __u32, +pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_pktinfo { +pub ipi_ifindex: crate::ctypes::c_int, +pub ipi_spec_dst: in_addr, +pub ipi_addr: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_in { +pub sin_family: __kernel_sa_family_t, +pub sin_port: __be16, +pub sin_addr: in_addr, +pub __pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct iphdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub tos: __u8, +pub tot_len: __be16, +pub id: __be16, +pub frag_off: __be16, +pub ttl: __u8, +pub protocol: __u8, +pub check: __sum16, +pub __bindgen_anon_1: iphdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_auth_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub reserved: __be16, +pub spi: __be32, +pub seq_no: __be32, +pub auth_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_esp_hdr { +pub spi: __be32, +pub seq_no: __be32, +pub enc_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_comp_hdr { +pub nexthdr: __u8, +pub flags: __u8, +pub cpi: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_beet_phdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub padlen: __u8, +pub reserved: __u8, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_addr { +pub in6_u: in6_addr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr_in6 { +pub sin6_family: crate::ctypes::c_ushort, +pub sin6_port: __be16, +pub sin6_flowinfo: __be32, +pub sin6_addr: in6_addr, +pub sin6_scope_id: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6_mreq { +pub ipv6mr_multiaddr: in6_addr, +pub ipv6mr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_flowlabel_req { +pub flr_dst: in6_addr, +pub flr_label: __be32, +pub flr_action: __u8, +pub flr_share: __u8, +pub flr_flags: __u16, +pub flr_expires: __u16, +pub flr_linger: __u16, +pub __flr_pad: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_pktinfo { +pub ipi6_addr: in6_addr, +pub ipi6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ip6_mtuinfo { +pub ip6m_addr: sockaddr_in6, +pub ip6m_mtu: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_ifreq { +pub ifr6_addr: in6_addr, +pub ifr6_prefixlen: __u32, +pub ifr6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_rt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub type_: __u8, +pub segments_left: __u8, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_opt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +} +#[repr(C)] +pub struct rt0_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rt2_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: in6_addr, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct ipv6_destopt_hao { +pub type_: __u8, +pub length: __u8, +pub addr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub flow_lbl: [__u8; 3usize], +pub payload_len: __be16, +pub nexthdr: __u8, +pub hop_limit: __u8, +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcphdr { +pub source: __be16, +pub dest: __be16, +pub seq: __be32, +pub ack_seq: __be32, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub window: __be16, +pub check: __sum16, +pub urg_ptr: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_opt { +pub opt_code: __u32, +pub opt_val: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_window { +pub snd_wl1: __u32, +pub snd_wnd: __u32, +pub max_window: __u32, +pub rcv_wnd: __u32, +pub rcv_wup: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_info { +pub tcpi_state: __u8, +pub tcpi_ca_state: __u8, +pub tcpi_retransmits: __u8, +pub tcpi_probes: __u8, +pub tcpi_backoff: __u8, +pub tcpi_options: __u8, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub tcpi_rto: __u32, +pub tcpi_ato: __u32, +pub tcpi_snd_mss: __u32, +pub tcpi_rcv_mss: __u32, +pub tcpi_unacked: __u32, +pub tcpi_sacked: __u32, +pub tcpi_lost: __u32, +pub tcpi_retrans: __u32, +pub tcpi_fackets: __u32, +pub tcpi_last_data_sent: __u32, +pub tcpi_last_ack_sent: __u32, +pub tcpi_last_data_recv: __u32, +pub tcpi_last_ack_recv: __u32, +pub tcpi_pmtu: __u32, +pub tcpi_rcv_ssthresh: __u32, +pub tcpi_rtt: __u32, +pub tcpi_rttvar: __u32, +pub tcpi_snd_ssthresh: __u32, +pub tcpi_snd_cwnd: __u32, +pub tcpi_advmss: __u32, +pub tcpi_reordering: __u32, +pub tcpi_rcv_rtt: __u32, +pub tcpi_rcv_space: __u32, +pub tcpi_total_retrans: __u32, +pub tcpi_pacing_rate: __u64, +pub tcpi_max_pacing_rate: __u64, +pub tcpi_bytes_acked: __u64, +pub tcpi_bytes_received: __u64, +pub tcpi_segs_out: __u32, +pub tcpi_segs_in: __u32, +pub tcpi_notsent_bytes: __u32, +pub tcpi_min_rtt: __u32, +pub tcpi_data_segs_in: __u32, +pub tcpi_data_segs_out: __u32, +pub tcpi_delivery_rate: __u64, +pub tcpi_busy_time: __u64, +pub tcpi_rwnd_limited: __u64, +pub tcpi_sndbuf_limited: __u64, +pub tcpi_delivered: __u32, +pub tcpi_delivered_ce: __u32, +pub tcpi_bytes_sent: __u64, +pub tcpi_bytes_retrans: __u64, +pub tcpi_dsack_dups: __u32, +pub tcpi_reord_seen: __u32, +pub tcpi_rcv_ooopack: __u32, +pub tcpi_snd_wnd: __u32, +pub tcpi_rcv_wnd: __u32, +pub tcpi_rehash: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct tcp_md5sig { +pub tcpm_addr: __kernel_sockaddr_storage, +pub tcpm_flags: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_ifindex: crate::ctypes::c_int, +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_diag_md5sig { +pub tcpm_family: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_addr: [__be32; 4usize], +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_zerocopy_receive { +pub address: __u64, +pub length: __u32, +pub recv_skip_hint: __u32, +pub inq: __u32, +pub err: __s32, +pub copybuf_address: __u64, +pub copybuf_len: __s32, +pub flags: __u32, +pub msg_control: __u64, +pub msg_controllen: __u64, +pub msg_flags: __u32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_un { +pub sun_family: __kernel_sa_family_t, +pub sun_path: [crate::ctypes::c_char; 108usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr { +pub __storage: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct linger { +pub l_onoff: crate::ctypes::c_int, +pub l_linger: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct msghdr { +pub msg_name: *mut crate::ctypes::c_void, +pub msg_namelen: crate::ctypes::c_int, +pub msg_iov: *mut iovec, +pub msg_iovlen: usize, +pub msg_control: *mut crate::ctypes::c_void, +pub msg_controllen: usize, +pub msg_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct cmsghdr { +pub cmsg_len: usize, +pub cmsg_level: crate::ctypes::c_int, +pub cmsg_type: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ucred { +pub pid: __u32, +pub uid: __u32, +pub gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mmsghdr { +pub msg_hdr: msghdr, +pub msg_len: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub _address: u8, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const IP_TOS: u32 = 1; +pub const IP_TTL: u32 = 2; +pub const IP_HDRINCL: u32 = 3; +pub const IP_OPTIONS: u32 = 4; +pub const IP_ROUTER_ALERT: u32 = 5; +pub const IP_RECVOPTS: u32 = 6; +pub const IP_RETOPTS: u32 = 7; +pub const IP_PKTINFO: u32 = 8; +pub const IP_PKTOPTIONS: u32 = 9; +pub const IP_MTU_DISCOVER: u32 = 10; +pub const IP_RECVERR: u32 = 11; +pub const IP_RECVTTL: u32 = 12; +pub const IP_RECVTOS: u32 = 13; +pub const IP_MTU: u32 = 14; +pub const IP_FREEBIND: u32 = 15; +pub const IP_IPSEC_POLICY: u32 = 16; +pub const IP_XFRM_POLICY: u32 = 17; +pub const IP_PASSSEC: u32 = 18; +pub const IP_TRANSPARENT: u32 = 19; +pub const IP_RECVRETOPTS: u32 = 7; +pub const IP_ORIGDSTADDR: u32 = 20; +pub const IP_RECVORIGDSTADDR: u32 = 20; +pub const IP_MINTTL: u32 = 21; +pub const IP_NODEFRAG: u32 = 22; +pub const IP_CHECKSUM: u32 = 23; +pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; +pub const IP_RECVFRAGSIZE: u32 = 25; +pub const IP_RECVERR_RFC4884: u32 = 26; +pub const IP_PMTUDISC_DONT: u32 = 0; +pub const IP_PMTUDISC_WANT: u32 = 1; +pub const IP_PMTUDISC_DO: u32 = 2; +pub const IP_PMTUDISC_PROBE: u32 = 3; +pub const IP_PMTUDISC_INTERFACE: u32 = 4; +pub const IP_PMTUDISC_OMIT: u32 = 5; +pub const IP_MULTICAST_IF: u32 = 32; +pub const IP_MULTICAST_TTL: u32 = 33; +pub const IP_MULTICAST_LOOP: u32 = 34; +pub const IP_ADD_MEMBERSHIP: u32 = 35; +pub const IP_DROP_MEMBERSHIP: u32 = 36; +pub const IP_UNBLOCK_SOURCE: u32 = 37; +pub const IP_BLOCK_SOURCE: u32 = 38; +pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; +pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; +pub const IP_MSFILTER: u32 = 41; +pub const MCAST_JOIN_GROUP: u32 = 42; +pub const MCAST_BLOCK_SOURCE: u32 = 43; +pub const MCAST_UNBLOCK_SOURCE: u32 = 44; +pub const MCAST_LEAVE_GROUP: u32 = 45; +pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; +pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; +pub const MCAST_MSFILTER: u32 = 48; +pub const IP_MULTICAST_ALL: u32 = 49; +pub const IP_UNICAST_IF: u32 = 50; +pub const IP_LOCAL_PORT_RANGE: u32 = 51; +pub const MCAST_EXCLUDE: u32 = 0; +pub const MCAST_INCLUDE: u32 = 1; +pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; +pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; +pub const __SOCK_SIZE__: u32 = 16; +pub const IN_CLASSA_NET: u32 = 4278190080; +pub const IN_CLASSA_NSHIFT: u32 = 24; +pub const IN_CLASSA_HOST: u32 = 16777215; +pub const IN_CLASSA_MAX: u32 = 128; +pub const IN_CLASSB_NET: u32 = 4294901760; +pub const IN_CLASSB_NSHIFT: u32 = 16; +pub const IN_CLASSB_HOST: u32 = 65535; +pub const IN_CLASSB_MAX: u32 = 65536; +pub const IN_CLASSC_NET: u32 = 4294967040; +pub const IN_CLASSC_NSHIFT: u32 = 8; +pub const IN_CLASSC_HOST: u32 = 255; +pub const IN_MULTICAST_NET: u32 = 3758096384; +pub const IN_CLASSE_NET: u32 = 4294967295; +pub const IN_CLASSE_NSHIFT: u32 = 0; +pub const IN_LOOPBACKNET: u32 = 127; +pub const INADDR_LOOPBACK: u32 = 2130706433; +pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; +pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; +pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; +pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; +pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; +pub const __BIG_ENDIAN: u32 = 4321; +pub const IPTOS_TOS_MASK: u32 = 30; +pub const IPTOS_LOWDELAY: u32 = 16; +pub const IPTOS_THROUGHPUT: u32 = 8; +pub const IPTOS_RELIABILITY: u32 = 4; +pub const IPTOS_MINCOST: u32 = 2; +pub const IPTOS_PREC_MASK: u32 = 224; +pub const IPTOS_PREC_NETCONTROL: u32 = 224; +pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; +pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; +pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; +pub const IPTOS_PREC_FLASH: u32 = 96; +pub const IPTOS_PREC_IMMEDIATE: u32 = 64; +pub const IPTOS_PREC_PRIORITY: u32 = 32; +pub const IPTOS_PREC_ROUTINE: u32 = 0; +pub const IPOPT_COPY: u32 = 128; +pub const IPOPT_CLASS_MASK: u32 = 96; +pub const IPOPT_NUMBER_MASK: u32 = 31; +pub const IPOPT_CONTROL: u32 = 0; +pub const IPOPT_RESERVED1: u32 = 32; +pub const IPOPT_MEASUREMENT: u32 = 64; +pub const IPOPT_RESERVED2: u32 = 96; +pub const IPOPT_END: u32 = 0; +pub const IPOPT_NOOP: u32 = 1; +pub const IPOPT_SEC: u32 = 130; +pub const IPOPT_LSRR: u32 = 131; +pub const IPOPT_TIMESTAMP: u32 = 68; +pub const IPOPT_CIPSO: u32 = 134; +pub const IPOPT_RR: u32 = 7; +pub const IPOPT_SID: u32 = 136; +pub const IPOPT_SSRR: u32 = 137; +pub const IPOPT_RA: u32 = 148; +pub const IPVERSION: u32 = 4; +pub const MAXTTL: u32 = 255; +pub const IPDEFTTL: u32 = 64; +pub const IPOPT_OPTVAL: u32 = 0; +pub const IPOPT_OLEN: u32 = 1; +pub const IPOPT_OFFSET: u32 = 2; +pub const IPOPT_MINOFF: u32 = 4; +pub const MAX_IPOPTLEN: u32 = 40; +pub const IPOPT_NOP: u32 = 1; +pub const IPOPT_EOL: u32 = 0; +pub const IPOPT_TS: u32 = 68; +pub const IPOPT_TS_TSONLY: u32 = 0; +pub const IPOPT_TS_TSANDADDR: u32 = 1; +pub const IPOPT_TS_PRESPEC: u32 = 3; +pub const IPV4_BEET_PHMAXLEN: u32 = 8; +pub const IPV6_FL_A_GET: u32 = 0; +pub const IPV6_FL_A_PUT: u32 = 1; +pub const IPV6_FL_A_RENEW: u32 = 2; +pub const IPV6_FL_F_CREATE: u32 = 1; +pub const IPV6_FL_F_EXCL: u32 = 2; +pub const IPV6_FL_F_REFLECT: u32 = 4; +pub const IPV6_FL_F_REMOTE: u32 = 8; +pub const IPV6_FL_S_NONE: u32 = 0; +pub const IPV6_FL_S_EXCL: u32 = 1; +pub const IPV6_FL_S_PROCESS: u32 = 2; +pub const IPV6_FL_S_USER: u32 = 3; +pub const IPV6_FL_S_ANY: u32 = 255; +pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; +pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; +pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; +pub const IPV6_PRIORITY_FILLER: u32 = 256; +pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; +pub const IPV6_PRIORITY_RESERVED1: u32 = 768; +pub const IPV6_PRIORITY_BULK: u32 = 1024; +pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; +pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; +pub const IPV6_PRIORITY_CONTROL: u32 = 1792; +pub const IPV6_PRIORITY_8: u32 = 2048; +pub const IPV6_PRIORITY_9: u32 = 2304; +pub const IPV6_PRIORITY_10: u32 = 2560; +pub const IPV6_PRIORITY_11: u32 = 2816; +pub const IPV6_PRIORITY_12: u32 = 3072; +pub const IPV6_PRIORITY_13: u32 = 3328; +pub const IPV6_PRIORITY_14: u32 = 3584; +pub const IPV6_PRIORITY_15: u32 = 3840; +pub const IPPROTO_HOPOPTS: u32 = 0; +pub const IPPROTO_ROUTING: u32 = 43; +pub const IPPROTO_FRAGMENT: u32 = 44; +pub const IPPROTO_ICMPV6: u32 = 58; +pub const IPPROTO_NONE: u32 = 59; +pub const IPPROTO_DSTOPTS: u32 = 60; +pub const IPPROTO_MH: u32 = 135; +pub const IPV6_TLV_PAD1: u32 = 0; +pub const IPV6_TLV_PADN: u32 = 1; +pub const IPV6_TLV_ROUTERALERT: u32 = 5; +pub const IPV6_TLV_CALIPSO: u32 = 7; +pub const IPV6_TLV_IOAM: u32 = 49; +pub const IPV6_TLV_JUMBO: u32 = 194; +pub const IPV6_TLV_HAO: u32 = 201; +pub const IPV6_ADDRFORM: u32 = 1; +pub const IPV6_2292PKTINFO: u32 = 2; +pub const IPV6_2292HOPOPTS: u32 = 3; +pub const IPV6_2292DSTOPTS: u32 = 4; +pub const IPV6_2292RTHDR: u32 = 5; +pub const IPV6_2292PKTOPTIONS: u32 = 6; +pub const IPV6_CHECKSUM: u32 = 7; +pub const IPV6_2292HOPLIMIT: u32 = 8; +pub const IPV6_NEXTHOP: u32 = 9; +pub const IPV6_AUTHHDR: u32 = 10; +pub const IPV6_FLOWINFO: u32 = 11; +pub const IPV6_UNICAST_HOPS: u32 = 16; +pub const IPV6_MULTICAST_IF: u32 = 17; +pub const IPV6_MULTICAST_HOPS: u32 = 18; +pub const IPV6_MULTICAST_LOOP: u32 = 19; +pub const IPV6_ADD_MEMBERSHIP: u32 = 20; +pub const IPV6_DROP_MEMBERSHIP: u32 = 21; +pub const IPV6_ROUTER_ALERT: u32 = 22; +pub const IPV6_MTU_DISCOVER: u32 = 23; +pub const IPV6_MTU: u32 = 24; +pub const IPV6_RECVERR: u32 = 25; +pub const IPV6_V6ONLY: u32 = 26; +pub const IPV6_JOIN_ANYCAST: u32 = 27; +pub const IPV6_LEAVE_ANYCAST: u32 = 28; +pub const IPV6_MULTICAST_ALL: u32 = 29; +pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; +pub const IPV6_RECVERR_RFC4884: u32 = 31; +pub const IPV6_PMTUDISC_DONT: u32 = 0; +pub const IPV6_PMTUDISC_WANT: u32 = 1; +pub const IPV6_PMTUDISC_DO: u32 = 2; +pub const IPV6_PMTUDISC_PROBE: u32 = 3; +pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; +pub const IPV6_PMTUDISC_OMIT: u32 = 5; +pub const IPV6_FLOWLABEL_MGR: u32 = 32; +pub const IPV6_FLOWINFO_SEND: u32 = 33; +pub const IPV6_IPSEC_POLICY: u32 = 34; +pub const IPV6_XFRM_POLICY: u32 = 35; +pub const IPV6_HDRINCL: u32 = 36; +pub const IPV6_RECVPKTINFO: u32 = 49; +pub const IPV6_PKTINFO: u32 = 50; +pub const IPV6_RECVHOPLIMIT: u32 = 51; +pub const IPV6_HOPLIMIT: u32 = 52; +pub const IPV6_RECVHOPOPTS: u32 = 53; +pub const IPV6_HOPOPTS: u32 = 54; +pub const IPV6_RTHDRDSTOPTS: u32 = 55; +pub const IPV6_RECVRTHDR: u32 = 56; +pub const IPV6_RTHDR: u32 = 57; +pub const IPV6_RECVDSTOPTS: u32 = 58; +pub const IPV6_DSTOPTS: u32 = 59; +pub const IPV6_RECVPATHMTU: u32 = 60; +pub const IPV6_PATHMTU: u32 = 61; +pub const IPV6_DONTFRAG: u32 = 62; +pub const IPV6_RECVTCLASS: u32 = 66; +pub const IPV6_TCLASS: u32 = 67; +pub const IPV6_AUTOFLOWLABEL: u32 = 70; +pub const IPV6_ADDR_PREFERENCES: u32 = 72; +pub const IPV6_PREFER_SRC_TMP: u32 = 1; +pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; +pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; +pub const IPV6_PREFER_SRC_COA: u32 = 4; +pub const IPV6_PREFER_SRC_HOME: u32 = 1024; +pub const IPV6_PREFER_SRC_CGA: u32 = 8; +pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; +pub const IPV6_MINHOPCOUNT: u32 = 73; +pub const IPV6_ORIGDSTADDR: u32 = 74; +pub const IPV6_RECVORIGDSTADDR: u32 = 74; +pub const IPV6_TRANSPARENT: u32 = 75; +pub const IPV6_UNICAST_IF: u32 = 76; +pub const IPV6_RECVFRAGSIZE: u32 = 77; +pub const IPV6_FREEBIND: u32 = 78; +pub const IPV6_MIN_MTU: u32 = 1280; +pub const IPV6_SRCRT_STRICT: u32 = 1; +pub const IPV6_SRCRT_TYPE_0: u32 = 0; +pub const IPV6_SRCRT_TYPE_2: u32 = 2; +pub const IPV6_SRCRT_TYPE_3: u32 = 3; +pub const IPV6_SRCRT_TYPE_4: u32 = 4; +pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; +pub const SIOCGSTAMP_OLD: u32 = 35078; +pub const SIOCGSTAMPNS_OLD: u32 = 35079; +pub const SOL_SOCKET: u32 = 1; +pub const SO_DEBUG: u32 = 1; +pub const SO_REUSEADDR: u32 = 2; +pub const SO_TYPE: u32 = 3; +pub const SO_ERROR: u32 = 4; +pub const SO_DONTROUTE: u32 = 5; +pub const SO_BROADCAST: u32 = 6; +pub const SO_SNDBUF: u32 = 7; +pub const SO_RCVBUF: u32 = 8; +pub const SO_SNDBUFFORCE: u32 = 32; +pub const SO_RCVBUFFORCE: u32 = 33; +pub const SO_KEEPALIVE: u32 = 9; +pub const SO_OOBINLINE: u32 = 10; +pub const SO_NO_CHECK: u32 = 11; +pub const SO_PRIORITY: u32 = 12; +pub const SO_LINGER: u32 = 13; +pub const SO_BSDCOMPAT: u32 = 14; +pub const SO_REUSEPORT: u32 = 15; +pub const SO_PASSCRED: u32 = 16; +pub const SO_PEERCRED: u32 = 17; +pub const SO_RCVLOWAT: u32 = 18; +pub const SO_SNDLOWAT: u32 = 19; +pub const SO_RCVTIMEO_OLD: u32 = 20; +pub const SO_SNDTIMEO_OLD: u32 = 21; +pub const SO_SECURITY_AUTHENTICATION: u32 = 22; +pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; +pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; +pub const SO_BINDTODEVICE: u32 = 25; +pub const SO_ATTACH_FILTER: u32 = 26; +pub const SO_DETACH_FILTER: u32 = 27; +pub const SO_GET_FILTER: u32 = 26; +pub const SO_PEERNAME: u32 = 28; +pub const SO_ACCEPTCONN: u32 = 30; +pub const SO_PEERSEC: u32 = 31; +pub const SO_PASSSEC: u32 = 34; +pub const SO_MARK: u32 = 36; +pub const SO_PROTOCOL: u32 = 38; +pub const SO_DOMAIN: u32 = 39; +pub const SO_RXQ_OVFL: u32 = 40; +pub const SO_WIFI_STATUS: u32 = 41; +pub const SCM_WIFI_STATUS: u32 = 41; +pub const SO_PEEK_OFF: u32 = 42; +pub const SO_NOFCS: u32 = 43; +pub const SO_LOCK_FILTER: u32 = 44; +pub const SO_SELECT_ERR_QUEUE: u32 = 45; +pub const SO_BUSY_POLL: u32 = 46; +pub const SO_MAX_PACING_RATE: u32 = 47; +pub const SO_BPF_EXTENSIONS: u32 = 48; +pub const SO_INCOMING_CPU: u32 = 49; +pub const SO_ATTACH_BPF: u32 = 50; +pub const SO_DETACH_BPF: u32 = 27; +pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; +pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; +pub const SO_CNX_ADVICE: u32 = 53; +pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; +pub const SO_MEMINFO: u32 = 55; +pub const SO_INCOMING_NAPI_ID: u32 = 56; +pub const SO_COOKIE: u32 = 57; +pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; +pub const SO_PEERGROUPS: u32 = 59; +pub const SO_ZEROCOPY: u32 = 60; +pub const SO_TXTIME: u32 = 61; +pub const SCM_TXTIME: u32 = 61; +pub const SO_BINDTOIFINDEX: u32 = 62; +pub const SO_TIMESTAMP_OLD: u32 = 29; +pub const SO_TIMESTAMPNS_OLD: u32 = 35; +pub const SO_TIMESTAMPING_OLD: u32 = 37; +pub const SO_TIMESTAMP_NEW: u32 = 63; +pub const SO_TIMESTAMPNS_NEW: u32 = 64; +pub const SO_TIMESTAMPING_NEW: u32 = 65; +pub const SO_RCVTIMEO_NEW: u32 = 66; +pub const SO_SNDTIMEO_NEW: u32 = 67; +pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; +pub const SO_PREFER_BUSY_POLL: u32 = 69; +pub const SO_BUSY_POLL_BUDGET: u32 = 70; +pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; +pub const SO_TXREHASH: u32 = 74; +pub const SO_RCVMARK: u32 = 75; +pub const SO_TIMESTAMP: u32 = 29; +pub const SO_TIMESTAMPNS: u32 = 35; +pub const SO_TIMESTAMPING: u32 = 37; +pub const SO_RCVTIMEO: u32 = 20; +pub const SO_SNDTIMEO: u32 = 21; +pub const SCM_TIMESTAMP: u32 = 29; +pub const SCM_TIMESTAMPNS: u32 = 35; +pub const SCM_TIMESTAMPING: u32 = 37; +pub const SYS_SOCKET: u32 = 1; +pub const SYS_BIND: u32 = 2; +pub const SYS_CONNECT: u32 = 3; +pub const SYS_LISTEN: u32 = 4; +pub const SYS_ACCEPT: u32 = 5; +pub const SYS_GETSOCKNAME: u32 = 6; +pub const SYS_GETPEERNAME: u32 = 7; +pub const SYS_SOCKETPAIR: u32 = 8; +pub const SYS_SEND: u32 = 9; +pub const SYS_RECV: u32 = 10; +pub const SYS_SENDTO: u32 = 11; +pub const SYS_RECVFROM: u32 = 12; +pub const SYS_SHUTDOWN: u32 = 13; +pub const SYS_SETSOCKOPT: u32 = 14; +pub const SYS_GETSOCKOPT: u32 = 15; +pub const SYS_SENDMSG: u32 = 16; +pub const SYS_RECVMSG: u32 = 17; +pub const SYS_ACCEPT4: u32 = 18; +pub const SYS_RECVMMSG: u32 = 19; +pub const SYS_SENDMMSG: u32 = 20; +pub const __SO_ACCEPTCON: u32 = 65536; +pub const TCP_MSS_DEFAULT: u32 = 536; +pub const TCP_MSS_DESIRED: u32 = 1220; +pub const TCP_NODELAY: u32 = 1; +pub const TCP_MAXSEG: u32 = 2; +pub const TCP_CORK: u32 = 3; +pub const TCP_KEEPIDLE: u32 = 4; +pub const TCP_KEEPINTVL: u32 = 5; +pub const TCP_KEEPCNT: u32 = 6; +pub const TCP_SYNCNT: u32 = 7; +pub const TCP_LINGER2: u32 = 8; +pub const TCP_DEFER_ACCEPT: u32 = 9; +pub const TCP_WINDOW_CLAMP: u32 = 10; +pub const TCP_INFO: u32 = 11; +pub const TCP_QUICKACK: u32 = 12; +pub const TCP_CONGESTION: u32 = 13; +pub const TCP_MD5SIG: u32 = 14; +pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; +pub const TCP_THIN_DUPACK: u32 = 17; +pub const TCP_USER_TIMEOUT: u32 = 18; +pub const TCP_REPAIR: u32 = 19; +pub const TCP_REPAIR_QUEUE: u32 = 20; +pub const TCP_QUEUE_SEQ: u32 = 21; +pub const TCP_REPAIR_OPTIONS: u32 = 22; +pub const TCP_FASTOPEN: u32 = 23; +pub const TCP_TIMESTAMP: u32 = 24; +pub const TCP_NOTSENT_LOWAT: u32 = 25; +pub const TCP_CC_INFO: u32 = 26; +pub const TCP_SAVE_SYN: u32 = 27; +pub const TCP_SAVED_SYN: u32 = 28; +pub const TCP_REPAIR_WINDOW: u32 = 29; +pub const TCP_FASTOPEN_CONNECT: u32 = 30; +pub const TCP_ULP: u32 = 31; +pub const TCP_MD5SIG_EXT: u32 = 32; +pub const TCP_FASTOPEN_KEY: u32 = 33; +pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; +pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; +pub const TCP_INQ: u32 = 36; +pub const TCP_CM_INQ: u32 = 36; +pub const TCP_TX_DELAY: u32 = 37; +pub const TCP_REPAIR_ON: u32 = 1; +pub const TCP_REPAIR_OFF: u32 = 0; +pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; +pub const TCPI_OPT_TIMESTAMPS: u32 = 1; +pub const TCPI_OPT_SACK: u32 = 2; +pub const TCPI_OPT_WSCALE: u32 = 4; +pub const TCPI_OPT_ECN: u32 = 8; +pub const TCPI_OPT_ECN_SEEN: u32 = 16; +pub const TCPI_OPT_SYN_DATA: u32 = 32; +pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; +pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; +pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; +pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; +pub const UNIX_PATH_MAX: u32 = 108; +pub const SHUT_RD: u32 = 0; +pub const SHUT_WR: u32 = 1; +pub const SHUT_RDWR: u32 = 2; +pub const SOCK_STREAM: u32 = 1; +pub const SOCK_DGRAM: u32 = 2; +pub const SOCK_RAW: u32 = 3; +pub const SOCK_RDM: u32 = 4; +pub const SOCK_SEQPACKET: u32 = 5; +pub const MSG_DONTWAIT: u32 = 64; +pub const AF_UNSPEC: u32 = 0; +pub const AF_UNIX: u32 = 1; +pub const AF_INET: u32 = 2; +pub const AF_AX25: u32 = 3; +pub const AF_IPX: u32 = 4; +pub const AF_APPLETALK: u32 = 5; +pub const AF_NETROM: u32 = 6; +pub const AF_BRIDGE: u32 = 7; +pub const AF_ATMPVC: u32 = 8; +pub const AF_X25: u32 = 9; +pub const AF_INET6: u32 = 10; +pub const AF_ROSE: u32 = 11; +pub const AF_DECnet: u32 = 12; +pub const AF_NETBEUI: u32 = 13; +pub const AF_SECURITY: u32 = 14; +pub const AF_KEY: u32 = 15; +pub const AF_NETLINK: u32 = 16; +pub const AF_PACKET: u32 = 17; +pub const AF_ASH: u32 = 18; +pub const AF_ECONET: u32 = 19; +pub const AF_ATMSVC: u32 = 20; +pub const AF_RDS: u32 = 21; +pub const AF_SNA: u32 = 22; +pub const AF_IRDA: u32 = 23; +pub const AF_PPPOX: u32 = 24; +pub const AF_WANPIPE: u32 = 25; +pub const AF_LLC: u32 = 26; +pub const AF_CAN: u32 = 29; +pub const AF_TIPC: u32 = 30; +pub const AF_BLUETOOTH: u32 = 31; +pub const AF_IUCV: u32 = 32; +pub const AF_RXRPC: u32 = 33; +pub const AF_ISDN: u32 = 34; +pub const AF_PHONET: u32 = 35; +pub const AF_IEEE802154: u32 = 36; +pub const AF_MAX: u32 = 37; +pub const MSG_OOB: u32 = 1; +pub const MSG_PEEK: u32 = 2; +pub const MSG_DONTROUTE: u32 = 4; +pub const MSG_CTRUNC: u32 = 8; +pub const MSG_PROBE: u32 = 16; +pub const MSG_TRUNC: u32 = 32; +pub const MSG_EOR: u32 = 128; +pub const MSG_WAITALL: u32 = 256; +pub const MSG_FIN: u32 = 512; +pub const MSG_SYN: u32 = 1024; +pub const MSG_CONFIRM: u32 = 2048; +pub const MSG_RST: u32 = 4096; +pub const MSG_ERRQUEUE: u32 = 8192; +pub const MSG_NOSIGNAL: u32 = 16384; +pub const MSG_MORE: u32 = 32768; +pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; +pub const SCM_RIGHTS: u32 = 1; +pub const SCM_CREDENTIALS: u32 = 2; +pub const SCM_SECURITY: u32 = 3; +pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; +pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; +pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; +pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; +pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; +pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; +pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; +pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; +pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; +pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; +pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; +pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; +pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; +pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; +pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; +pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; +pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; +pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; +pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; +pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; +pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; +pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; +pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; +pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; +pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; +pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; +pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; +pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; +pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; +pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; +pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; +pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; +pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; +pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; +pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; +pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; +pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; +pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; +pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; +pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; +pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; +pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; +pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; +pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; +pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; +pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; +pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; +pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; +pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; +pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; +pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; +pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; +pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; +pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; +pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; +pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; +pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; +pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; +pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; +pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; +pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; +pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; +pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; +pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; +pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; +pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; +pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; +pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; +pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; +pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; +pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; +pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; +pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; +pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; +pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; +pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; +pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; +pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; +pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; +pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; +pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; +pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; +pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; +pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; +pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; +pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; +pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; +pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; +pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; +pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; +pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; +pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; +pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; +pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; +pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; +pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; +pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; +pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; +pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; +pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; +pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; +pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; +pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; +pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; +pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; +pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; +pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; +pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; +pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; +pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; +pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; +pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; +pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; +pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; +pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; +pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; +pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; +pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; +pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; +pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; +pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; +pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; +pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; +pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; +pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; +pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; +pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; +pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; +pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; +pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; +pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; +pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; +pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; +pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; +pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; +pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; +pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; +pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; +pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; +pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; +pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; +pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; +pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; +pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; +pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; +pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; +pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; +pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; +pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; +pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; +pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; +pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IPPROTO_IP = 0, +IPPROTO_ICMP = 1, +IPPROTO_IGMP = 2, +IPPROTO_IPIP = 4, +IPPROTO_TCP = 6, +IPPROTO_EGP = 8, +IPPROTO_PUP = 12, +IPPROTO_UDP = 17, +IPPROTO_IDP = 22, +IPPROTO_TP = 29, +IPPROTO_DCCP = 33, +IPPROTO_IPV6 = 41, +IPPROTO_RSVP = 46, +IPPROTO_GRE = 47, +IPPROTO_ESP = 50, +IPPROTO_AH = 51, +IPPROTO_MTP = 92, +IPPROTO_BEETPH = 94, +IPPROTO_ENCAP = 98, +IPPROTO_PIM = 103, +IPPROTO_COMP = 108, +IPPROTO_L2TP = 115, +IPPROTO_SCTP = 132, +IPPROTO_UDPLITE = 136, +IPPROTO_MPLS = 137, +IPPROTO_ETHERNET = 143, +IPPROTO_RAW = 255, +IPPROTO_MPTCP = 262, +IPPROTO_MAX = 263, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IPV4_DEVCONF_FORWARDING = 1, +IPV4_DEVCONF_MC_FORWARDING = 2, +IPV4_DEVCONF_PROXY_ARP = 3, +IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, +IPV4_DEVCONF_SECURE_REDIRECTS = 5, +IPV4_DEVCONF_SEND_REDIRECTS = 6, +IPV4_DEVCONF_SHARED_MEDIA = 7, +IPV4_DEVCONF_RP_FILTER = 8, +IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, +IPV4_DEVCONF_BOOTP_RELAY = 10, +IPV4_DEVCONF_LOG_MARTIANS = 11, +IPV4_DEVCONF_TAG = 12, +IPV4_DEVCONF_ARPFILTER = 13, +IPV4_DEVCONF_MEDIUM_ID = 14, +IPV4_DEVCONF_NOXFRM = 15, +IPV4_DEVCONF_NOPOLICY = 16, +IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, +IPV4_DEVCONF_ARP_ANNOUNCE = 18, +IPV4_DEVCONF_ARP_IGNORE = 19, +IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, +IPV4_DEVCONF_ARP_ACCEPT = 21, +IPV4_DEVCONF_ARP_NOTIFY = 22, +IPV4_DEVCONF_ACCEPT_LOCAL = 23, +IPV4_DEVCONF_SRC_VMARK = 24, +IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, +IPV4_DEVCONF_ROUTE_LOCALNET = 26, +IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, +IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, +IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, +IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, +IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, +IPV4_DEVCONF_BC_FORWARDING = 32, +IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, +__IPV4_DEVCONF_MAX = 34, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +DEVCONF_FORWARDING = 0, +DEVCONF_HOPLIMIT = 1, +DEVCONF_MTU6 = 2, +DEVCONF_ACCEPT_RA = 3, +DEVCONF_ACCEPT_REDIRECTS = 4, +DEVCONF_AUTOCONF = 5, +DEVCONF_DAD_TRANSMITS = 6, +DEVCONF_RTR_SOLICITS = 7, +DEVCONF_RTR_SOLICIT_INTERVAL = 8, +DEVCONF_RTR_SOLICIT_DELAY = 9, +DEVCONF_USE_TEMPADDR = 10, +DEVCONF_TEMP_VALID_LFT = 11, +DEVCONF_TEMP_PREFERED_LFT = 12, +DEVCONF_REGEN_MAX_RETRY = 13, +DEVCONF_MAX_DESYNC_FACTOR = 14, +DEVCONF_MAX_ADDRESSES = 15, +DEVCONF_FORCE_MLD_VERSION = 16, +DEVCONF_ACCEPT_RA_DEFRTR = 17, +DEVCONF_ACCEPT_RA_PINFO = 18, +DEVCONF_ACCEPT_RA_RTR_PREF = 19, +DEVCONF_RTR_PROBE_INTERVAL = 20, +DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, +DEVCONF_PROXY_NDP = 22, +DEVCONF_OPTIMISTIC_DAD = 23, +DEVCONF_ACCEPT_SOURCE_ROUTE = 24, +DEVCONF_MC_FORWARDING = 25, +DEVCONF_DISABLE_IPV6 = 26, +DEVCONF_ACCEPT_DAD = 27, +DEVCONF_FORCE_TLLAO = 28, +DEVCONF_NDISC_NOTIFY = 29, +DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, +DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, +DEVCONF_SUPPRESS_FRAG_NDISC = 32, +DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, +DEVCONF_USE_OPTIMISTIC = 34, +DEVCONF_ACCEPT_RA_MTU = 35, +DEVCONF_STABLE_SECRET = 36, +DEVCONF_USE_OIF_ADDRS_ONLY = 37, +DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, +DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, +DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, +DEVCONF_DROP_UNSOLICITED_NA = 41, +DEVCONF_KEEP_ADDR_ON_DOWN = 42, +DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, +DEVCONF_SEG6_ENABLED = 44, +DEVCONF_SEG6_REQUIRE_HMAC = 45, +DEVCONF_ENHANCED_DAD = 46, +DEVCONF_ADDR_GEN_MODE = 47, +DEVCONF_DISABLE_POLICY = 48, +DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, +DEVCONF_NDISC_TCLASS = 50, +DEVCONF_RPL_SEG_ENABLED = 51, +DEVCONF_RA_DEFRTR_METRIC = 52, +DEVCONF_IOAM6_ENABLED = 53, +DEVCONF_IOAM6_ID = 54, +DEVCONF_IOAM6_ID_WIDE = 55, +DEVCONF_NDISC_EVICT_NOCARRIER = 56, +DEVCONF_ACCEPT_UNTRACKED_NA = 57, +DEVCONF_MAX = 58, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum socket_state { +SS_FREE = 0, +SS_UNCONNECTED = 1, +SS_CONNECTING = 2, +SS_CONNECTED = 3, +SS_DISCONNECTING = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +TCP_FLAG_CWR = 8388608, +TCP_FLAG_ECE = 4194304, +TCP_FLAG_URG = 2097152, +TCP_FLAG_ACK = 1048576, +TCP_FLAG_PSH = 524288, +TCP_FLAG_RST = 262144, +TCP_FLAG_SYN = 131072, +TCP_FLAG_FIN = 65536, +TCP_RESERVED_BITS = 251658240, +TCP_DATA_OFFSET = 4026531840, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +TCP_NO_QUEUE = 0, +TCP_RECV_QUEUE = 1, +TCP_SEND_QUEUE = 2, +TCP_QUEUES_NR = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_fastopen_client_fail { +TFO_STATUS_UNSPEC = 0, +TFO_COOKIE_UNAVAILABLE = 1, +TFO_DATA_NOT_ACKED = 2, +TFO_SYN_RETRANSMITTED = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_ca_state { +TCP_CA_Open = 0, +TCP_CA_Disorder = 1, +TCP_CA_CWR = 2, +TCP_CA_Recovery = 3, +TCP_CA_Loss = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +TCP_NLA_PAD = 0, +TCP_NLA_BUSY = 1, +TCP_NLA_RWND_LIMITED = 2, +TCP_NLA_SNDBUF_LIMITED = 3, +TCP_NLA_DATA_SEGS_OUT = 4, +TCP_NLA_TOTAL_RETRANS = 5, +TCP_NLA_PACING_RATE = 6, +TCP_NLA_DELIVERY_RATE = 7, +TCP_NLA_SND_CWND = 8, +TCP_NLA_REORDERING = 9, +TCP_NLA_MIN_RTT = 10, +TCP_NLA_RECUR_RETRANS = 11, +TCP_NLA_DELIVERY_RATE_APP_LMT = 12, +TCP_NLA_SNDQ_SIZE = 13, +TCP_NLA_CA_STATE = 14, +TCP_NLA_SND_SSTHRESH = 15, +TCP_NLA_DELIVERED = 16, +TCP_NLA_DELIVERED_CE = 17, +TCP_NLA_BYTES_SENT = 18, +TCP_NLA_BYTES_RETRANS = 19, +TCP_NLA_DSACK_DUPS = 20, +TCP_NLA_REORD_SEEN = 21, +TCP_NLA_SRTT = 22, +TCP_NLA_TIMEOUT_REHASH = 23, +TCP_NLA_BYTES_NOTSENT = 24, +TCP_NLA_EDT = 25, +TCP_NLA_TTL = 26, +TCP_NLA_REHASH = 27, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __vector128__bindgen_ty_1 { +pub __bindgen_anon_1: __vector128__bindgen_ty_1__bindgen_ty_1, +pub u: [__u32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union iphdr__bindgen_ty_1 { +pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union in6_addr__bindgen_ty_1 { +pub u6_addr8: [__u8; 16usize], +pub u6_addr16: [__be16; 8usize], +pub u6_addr32: [__be32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ipv6hdr__bindgen_ty_1 { +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union tcp_word_hdr { +pub hdr: tcphdr, +pub words: [__be32; 5usize], +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} +impl iphdr { +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn ihl(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_ihl(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; +ihl as u64 +}); +__bindgen_bitfield_unit +} +} +impl ipv6hdr { +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn priority(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_priority(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let priority: u8 = unsafe { ::core::mem::transmute(priority) }; +priority as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcphdr { +#[inline] +pub fn doff(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } +} +#[inline] +pub fn set_doff(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn res1(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } +} +#[inline] +pub fn set_res1(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn cwr(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } +} +#[inline] +pub fn set_cwr(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn ece(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } +} +#[inline] +pub fn set_ece(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 1u8, val as u64) +} +} +#[inline] +pub fn urg(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } +} +#[inline] +pub fn set_urg(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(10usize, 1u8, val as u64) +} +} +#[inline] +pub fn ack(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } +} +#[inline] +pub fn set_ack(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(11usize, 1u8, val as u64) +} +} +#[inline] +pub fn psh(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } +} +#[inline] +pub fn set_psh(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(12usize, 1u8, val as u64) +} +} +#[inline] +pub fn rst(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } +} +#[inline] +pub fn set_rst(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(13usize, 1u8, val as u64) +} +} +#[inline] +pub fn syn(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } +} +#[inline] +pub fn set_syn(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(14usize, 1u8, val as u64) +} +} +#[inline] +pub fn fin(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +} +#[inline] +pub fn set_fin(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(15usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let doff: u16 = unsafe { ::core::mem::transmute(doff) }; +doff as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let res1: u16 = unsafe { ::core::mem::transmute(res1) }; +res1 as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; +cwr as u64 +}); +__bindgen_bitfield_unit.set(9usize, 1u8, { +let ece: u16 = unsafe { ::core::mem::transmute(ece) }; +ece as u64 +}); +__bindgen_bitfield_unit.set(10usize, 1u8, { +let urg: u16 = unsafe { ::core::mem::transmute(urg) }; +urg as u64 +}); +__bindgen_bitfield_unit.set(11usize, 1u8, { +let ack: u16 = unsafe { ::core::mem::transmute(ack) }; +ack as u64 +}); +__bindgen_bitfield_unit.set(12usize, 1u8, { +let psh: u16 = unsafe { ::core::mem::transmute(psh) }; +psh as u64 +}); +__bindgen_bitfield_unit.set(13usize, 1u8, { +let rst: u16 = unsafe { ::core::mem::transmute(rst) }; +rst as u64 +}); +__bindgen_bitfield_unit.set(14usize, 1u8, { +let syn: u16 = unsafe { ::core::mem::transmute(syn) }; +syn as u64 +}); +__bindgen_bitfield_unit.set(15usize, 1u8, { +let fin: u16 = unsafe { ::core::mem::transmute(fin) }; +fin as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcp_info { +#[inline] +pub fn tcpi_snd_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_rcv_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +} +#[inline] +pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn tcpi_fastopen_client_fail(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +} +#[inline] +pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 2u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; +tcpi_snd_wscale as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; +tcpi_rcv_wscale as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; +tcpi_delivery_rate_app_limited as u64 +}); +__bindgen_bitfield_unit.set(9usize, 2u8, { +let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; +tcpi_fastopen_client_fail as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/prctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/prctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/prctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,241 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type addr_t = crate::ctypes::c_ulong; +pub type saddr_t = crate::ctypes::c_long; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_size_t = crate::ctypes::c_ulong; +pub type __kernel_ssize_t = crate::ctypes::c_long; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_ino_t = crate::ctypes::c_uint; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_ptrdiff_t = crate::ctypes::c_long; +pub type __kernel_sigset_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C, packed(4))] +#[derive(Copy, Clone)] +pub struct __vector128 { +pub __bindgen_anon_1: __vector128__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __vector128__bindgen_ty_1__bindgen_ty_1 { +pub high: __u64, +pub low: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prctl_mm_map { +pub start_code: __u64, +pub end_code: __u64, +pub start_data: __u64, +pub end_data: __u64, +pub start_brk: __u64, +pub brk: __u64, +pub start_stack: __u64, +pub arg_start: __u64, +pub arg_end: __u64, +pub env_start: __u64, +pub env_end: __u64, +pub auxv: *mut __u64, +pub auxv_size: __u32, +pub exe_fd: __u32, +} +pub const PR_SET_PDEATHSIG: u32 = 1; +pub const PR_GET_PDEATHSIG: u32 = 2; +pub const PR_GET_DUMPABLE: u32 = 3; +pub const PR_SET_DUMPABLE: u32 = 4; +pub const PR_GET_UNALIGN: u32 = 5; +pub const PR_SET_UNALIGN: u32 = 6; +pub const PR_UNALIGN_NOPRINT: u32 = 1; +pub const PR_UNALIGN_SIGBUS: u32 = 2; +pub const PR_GET_KEEPCAPS: u32 = 7; +pub const PR_SET_KEEPCAPS: u32 = 8; +pub const PR_GET_FPEMU: u32 = 9; +pub const PR_SET_FPEMU: u32 = 10; +pub const PR_FPEMU_NOPRINT: u32 = 1; +pub const PR_FPEMU_SIGFPE: u32 = 2; +pub const PR_GET_FPEXC: u32 = 11; +pub const PR_SET_FPEXC: u32 = 12; +pub const PR_FP_EXC_SW_ENABLE: u32 = 128; +pub const PR_FP_EXC_DIV: u32 = 65536; +pub const PR_FP_EXC_OVF: u32 = 131072; +pub const PR_FP_EXC_UND: u32 = 262144; +pub const PR_FP_EXC_RES: u32 = 524288; +pub const PR_FP_EXC_INV: u32 = 1048576; +pub const PR_FP_EXC_DISABLED: u32 = 0; +pub const PR_FP_EXC_NONRECOV: u32 = 1; +pub const PR_FP_EXC_ASYNC: u32 = 2; +pub const PR_FP_EXC_PRECISE: u32 = 3; +pub const PR_GET_TIMING: u32 = 13; +pub const PR_SET_TIMING: u32 = 14; +pub const PR_TIMING_STATISTICAL: u32 = 0; +pub const PR_TIMING_TIMESTAMP: u32 = 1; +pub const PR_SET_NAME: u32 = 15; +pub const PR_GET_NAME: u32 = 16; +pub const PR_GET_ENDIAN: u32 = 19; +pub const PR_SET_ENDIAN: u32 = 20; +pub const PR_ENDIAN_BIG: u32 = 0; +pub const PR_ENDIAN_LITTLE: u32 = 1; +pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; +pub const PR_GET_SECCOMP: u32 = 21; +pub const PR_SET_SECCOMP: u32 = 22; +pub const PR_CAPBSET_READ: u32 = 23; +pub const PR_CAPBSET_DROP: u32 = 24; +pub const PR_GET_TSC: u32 = 25; +pub const PR_SET_TSC: u32 = 26; +pub const PR_TSC_ENABLE: u32 = 1; +pub const PR_TSC_SIGSEGV: u32 = 2; +pub const PR_GET_SECUREBITS: u32 = 27; +pub const PR_SET_SECUREBITS: u32 = 28; +pub const PR_SET_TIMERSLACK: u32 = 29; +pub const PR_GET_TIMERSLACK: u32 = 30; +pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; +pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; +pub const PR_MCE_KILL: u32 = 33; +pub const PR_MCE_KILL_CLEAR: u32 = 0; +pub const PR_MCE_KILL_SET: u32 = 1; +pub const PR_MCE_KILL_LATE: u32 = 0; +pub const PR_MCE_KILL_EARLY: u32 = 1; +pub const PR_MCE_KILL_DEFAULT: u32 = 2; +pub const PR_MCE_KILL_GET: u32 = 34; +pub const PR_SET_MM: u32 = 35; +pub const PR_SET_MM_START_CODE: u32 = 1; +pub const PR_SET_MM_END_CODE: u32 = 2; +pub const PR_SET_MM_START_DATA: u32 = 3; +pub const PR_SET_MM_END_DATA: u32 = 4; +pub const PR_SET_MM_START_STACK: u32 = 5; +pub const PR_SET_MM_START_BRK: u32 = 6; +pub const PR_SET_MM_BRK: u32 = 7; +pub const PR_SET_MM_ARG_START: u32 = 8; +pub const PR_SET_MM_ARG_END: u32 = 9; +pub const PR_SET_MM_ENV_START: u32 = 10; +pub const PR_SET_MM_ENV_END: u32 = 11; +pub const PR_SET_MM_AUXV: u32 = 12; +pub const PR_SET_MM_EXE_FILE: u32 = 13; +pub const PR_SET_MM_MAP: u32 = 14; +pub const PR_SET_MM_MAP_SIZE: u32 = 15; +pub const PR_SET_PTRACER: u32 = 1499557217; +pub const PR_SET_CHILD_SUBREAPER: u32 = 36; +pub const PR_GET_CHILD_SUBREAPER: u32 = 37; +pub const PR_SET_NO_NEW_PRIVS: u32 = 38; +pub const PR_GET_NO_NEW_PRIVS: u32 = 39; +pub const PR_GET_TID_ADDRESS: u32 = 40; +pub const PR_SET_THP_DISABLE: u32 = 41; +pub const PR_GET_THP_DISABLE: u32 = 42; +pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; +pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; +pub const PR_SET_FP_MODE: u32 = 45; +pub const PR_GET_FP_MODE: u32 = 46; +pub const PR_FP_MODE_FR: u32 = 1; +pub const PR_FP_MODE_FRE: u32 = 2; +pub const PR_CAP_AMBIENT: u32 = 47; +pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; +pub const PR_CAP_AMBIENT_RAISE: u32 = 2; +pub const PR_CAP_AMBIENT_LOWER: u32 = 3; +pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; +pub const PR_SVE_SET_VL: u32 = 50; +pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SVE_GET_VL: u32 = 51; +pub const PR_SVE_VL_LEN_MASK: u32 = 65535; +pub const PR_SVE_VL_INHERIT: u32 = 131072; +pub const PR_GET_SPECULATION_CTRL: u32 = 52; +pub const PR_SET_SPECULATION_CTRL: u32 = 53; +pub const PR_SPEC_STORE_BYPASS: u32 = 0; +pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; +pub const PR_SPEC_L1D_FLUSH: u32 = 2; +pub const PR_SPEC_NOT_AFFECTED: u32 = 0; +pub const PR_SPEC_PRCTL: u32 = 1; +pub const PR_SPEC_ENABLE: u32 = 2; +pub const PR_SPEC_DISABLE: u32 = 4; +pub const PR_SPEC_FORCE_DISABLE: u32 = 8; +pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; +pub const PR_PAC_RESET_KEYS: u32 = 54; +pub const PR_PAC_APIAKEY: u32 = 1; +pub const PR_PAC_APIBKEY: u32 = 2; +pub const PR_PAC_APDAKEY: u32 = 4; +pub const PR_PAC_APDBKEY: u32 = 8; +pub const PR_PAC_APGAKEY: u32 = 16; +pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; +pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; +pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; +pub const PR_MTE_TCF_NONE: u32 = 0; +pub const PR_MTE_TCF_SYNC: u32 = 2; +pub const PR_MTE_TCF_ASYNC: u32 = 4; +pub const PR_MTE_TCF_MASK: u32 = 6; +pub const PR_MTE_TAG_SHIFT: u32 = 3; +pub const PR_MTE_TAG_MASK: u32 = 524280; +pub const PR_MTE_TCF_SHIFT: u32 = 1; +pub const PR_SET_IO_FLUSHER: u32 = 57; +pub const PR_GET_IO_FLUSHER: u32 = 58; +pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; +pub const PR_SYS_DISPATCH_OFF: u32 = 0; +pub const PR_SYS_DISPATCH_ON: u32 = 1; +pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; +pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; +pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; +pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; +pub const PR_SCHED_CORE: u32 = 62; +pub const PR_SCHED_CORE_GET: u32 = 0; +pub const PR_SCHED_CORE_CREATE: u32 = 1; +pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; +pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; +pub const PR_SCHED_CORE_MAX: u32 = 4; +pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; +pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; +pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; +pub const PR_SME_SET_VL: u32 = 63; +pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SME_GET_VL: u32 = 64; +pub const PR_SME_VL_LEN_MASK: u32 = 65535; +pub const PR_SME_VL_INHERIT: u32 = 131072; +pub const PR_SET_MDWE: u32 = 65; +pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; +pub const PR_GET_MDWE: u32 = 66; +pub const PR_SET_VMA: u32 = 1398164801; +pub const PR_SET_VMA_ANON_NAME: u32 = 0; +#[repr(C)] +#[derive(Copy, Clone)] +pub union __vector128__bindgen_ty_1 { +pub __bindgen_anon_1: __vector128__bindgen_ty_1__bindgen_ty_1, +pub u: [__u32; 4usize], +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/system.rs temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/system.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/s390x/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,149 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type addr_t = crate::ctypes::c_ulong; +pub type saddr_t = crate::ctypes::c_long; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_size_t = crate::ctypes::c_ulong; +pub type __kernel_ssize_t = crate::ctypes::c_long; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_ino_t = crate::ctypes::c_uint; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_ptrdiff_t = crate::ctypes::c_long; +pub type __kernel_sigset_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C, packed(4))] +#[derive(Copy, Clone)] +pub struct __vector128 { +pub __bindgen_anon_1: __vector128__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __vector128__bindgen_ty_1__bindgen_ty_1 { +pub high: __u64, +pub low: __u64, +} +#[repr(C)] +#[derive(Debug)] +pub struct sysinfo { +pub uptime: __kernel_long_t, +pub loads: [__kernel_ulong_t; 3usize], +pub totalram: __kernel_ulong_t, +pub freeram: __kernel_ulong_t, +pub sharedram: __kernel_ulong_t, +pub bufferram: __kernel_ulong_t, +pub totalswap: __kernel_ulong_t, +pub freeswap: __kernel_ulong_t, +pub procs: __u16, +pub pad: __u16, +pub totalhigh: __kernel_ulong_t, +pub freehigh: __kernel_ulong_t, +pub mem_unit: __u32, +pub _f: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct oldold_utsname { +pub sysname: [crate::ctypes::c_char; 9usize], +pub nodename: [crate::ctypes::c_char; 9usize], +pub release: [crate::ctypes::c_char; 9usize], +pub version: [crate::ctypes::c_char; 9usize], +pub machine: [crate::ctypes::c_char; 9usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct old_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct new_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +pub domainname: [crate::ctypes::c_char; 65usize], +} +pub const SI_LOAD_SHIFT: u32 = 16; +pub const __OLD_UTS_LEN: u32 = 8; +pub const __NEW_UTS_LEN: u32 = 64; +#[repr(C)] +#[derive(Copy, Clone)] +pub union __vector128__bindgen_ty_1 { +pub __bindgen_anon_1: __vector128__bindgen_ty_1__bindgen_ty_1, +pub u: [__u32; 4usize], +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/errno.rs temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/errno.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/errno.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const EPERM: u32 = 1; pub const ENOENT: u32 = 2; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/general.rs temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/general.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/general.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/general.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4726 +1,623 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_sighandler_t = ::core::option::Option; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_long; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type cap_user_header_t = *mut __user_cap_header_struct; +pub type cap_user_data_t = *mut __user_cap_data_struct; +pub type __kernel_rwf_t = crate::ctypes::c_int; +pub type sigset_t = crate::ctypes::c_ulong; +pub type __signalfn_t = ::core::option::Option; +pub type __sighandler_t = __signalfn_t; +pub type __restorefn_t = ::core::option::Option; +pub type __sigrestore_t = __restorefn_t; +pub type stack_t = sigaltstack; +pub type sigval_t = sigval; +pub type siginfo_t = siginfo; +pub type sigevent_t = sigevent; +pub type cc_t = crate::ctypes::c_uchar; +pub type speed_t = crate::ctypes::c_uint; +pub type tcflag_t = crate::ctypes::c_ulong; +pub type __fsword_t = __u32; #[repr(C)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct __BindgenBitfieldUnit { storage: Storage, } -impl __BindgenBitfieldUnit { -#[inline] -pub const fn new(storage: Storage) -> Self { -Self { storage } -} -} -impl __BindgenBitfieldUnit -where -Storage: AsRef<[u8]> + AsMut<[u8]>, -{ -#[inline] -pub fn get_bit(&self, index: usize) -> bool { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = self.storage.as_ref()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -byte & mask == mask -} -#[inline] -pub fn set_bit(&mut self, index: usize, val: bool) { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = &mut self.storage.as_mut()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -if val { -*byte |= mask; -} else { -*byte &= !mask; -} -} -#[inline] -pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -let mut val = 0; -for i in 0..(bit_width as usize) { -if self.get_bit(i + bit_offset) { -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -val |= 1 << index; -} -} -val -} -#[inline] -pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -for i in 0..(bit_width as usize) { -let mask = 1 << i; -let val_bit_is_set = val & mask == mask; -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -self.set_bit(index + bit_offset, val_bit_is_set); -} -} -} #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) -} -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T -} -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T -} -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) -} -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fd_set { +pub fds_bits: [crate::ctypes::c_ulong; 32usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fsid_t { +pub val: [crate::ctypes::c_int; 2usize], } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_header_struct { +pub version: __u32, +pub pid: crate::ctypes::c_int, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_data_struct { +pub effective: __u32, +pub permitted: __u32, +pub inheritable: __u32, } #[repr(C)] -pub struct __BindgenUnionField(::core::marker::PhantomData); -impl __BindgenUnionField { -#[inline] -pub const fn new() -> Self { -__BindgenUnionField(::core::marker::PhantomData) +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data { +pub magic_etc: __le32, +pub data: [vfs_cap_data__bindgen_ty_1; 2usize], } -#[inline] -pub unsafe fn as_ref(&self) -> &T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } -#[inline] -pub unsafe fn as_mut(&mut self) -> &mut T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data { +pub magic_etc: __le32, +pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], +pub rootid: __le32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } -impl ::core::default::Default for __BindgenUnionField { -#[inline] -fn default() -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct f_owner_ex { +pub type_: crate::ctypes::c_int, +pub pid: __kernel_pid_t, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_off_t, +pub l_len: __kernel_off_t, +pub l_pid: __kernel_pid_t, +pub __unused: crate::ctypes::c_short, } -impl ::core::clone::Clone for __BindgenUnionField { -#[inline] -fn clone(&self) -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock64 { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_loff_t, +pub l_len: __kernel_loff_t, +pub l_pid: __kernel_pid_t, +pub __unused: crate::ctypes::c_short, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct open_how { +pub flags: __u64, +pub mode: __u64, +pub resolve: __u64, } -impl ::core::marker::Copy for __BindgenUnionField {} -impl ::core::fmt::Debug for __BindgenUnionField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__BindgenUnionField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct epoll_event { +pub events: __poll_t, +pub data: __u64, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], } -impl ::core::hash::Hash for __BindgenUnionField { -fn hash(&self, _state: &mut H) {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, } -impl ::core::cmp::PartialEq for __BindgenUnionField { -fn eq(&self, _other: &__BindgenUnionField) -> bool { -true +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], } -} -impl ::core::cmp::Eq for __BindgenUnionField {} -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const AT_SYSINFO_EHDR: u32 = 33; -pub const AT_ADI_BLKSZ: u32 = 48; -pub const AT_ADI_NBITS: u32 = 49; -pub const AT_ADI_UEONADI: u32 = 50; -pub const AT_VECTOR_SIZE_ARCH: u32 = 4; -pub const AT_NULL: u32 = 0; -pub const AT_IGNORE: u32 = 1; -pub const AT_EXECFD: u32 = 2; -pub const AT_PHDR: u32 = 3; -pub const AT_PHENT: u32 = 4; -pub const AT_PHNUM: u32 = 5; -pub const AT_PAGESZ: u32 = 6; -pub const AT_BASE: u32 = 7; -pub const AT_FLAGS: u32 = 8; -pub const AT_ENTRY: u32 = 9; -pub const AT_NOTELF: u32 = 10; -pub const AT_UID: u32 = 11; -pub const AT_EUID: u32 = 12; -pub const AT_GID: u32 = 13; -pub const AT_EGID: u32 = 14; -pub const AT_PLATFORM: u32 = 15; -pub const AT_HWCAP: u32 = 16; -pub const AT_CLKTCK: u32 = 17; -pub const AT_SECURE: u32 = 23; -pub const AT_BASE_PLATFORM: u32 = 24; -pub const AT_RANDOM: u32 = 25; -pub const AT_HWCAP2: u32 = 26; -pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; -pub const AT_RSEQ_ALIGN: u32 = 28; -pub const AT_EXECFN: u32 = 31; -pub const AT_MINSIGSTKSZ: u32 = 51; -pub const __BITS_PER_LONG: u32 = 32; -pub const __FD_SETSIZE: u32 = 1024; -pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; -pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; -pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; -pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; -pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; -pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; -pub const VFS_CAP_REVISION_SHIFT: u32 = 24; -pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; -pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; -pub const VFS_CAP_REVISION_1: u32 = 16777216; -pub const VFS_CAP_U32_1: u32 = 1; -pub const VFS_CAP_REVISION_2: u32 = 33554432; -pub const VFS_CAP_U32_2: u32 = 2; -pub const VFS_CAP_REVISION_3: u32 = 50331648; -pub const VFS_CAP_U32_3: u32 = 2; -pub const VFS_CAP_U32: u32 = 2; -pub const VFS_CAP_REVISION: u32 = 50331648; -pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S: u32 = 1; -pub const CAP_CHOWN: u32 = 0; -pub const CAP_DAC_OVERRIDE: u32 = 1; -pub const CAP_DAC_READ_SEARCH: u32 = 2; -pub const CAP_FOWNER: u32 = 3; -pub const CAP_FSETID: u32 = 4; -pub const CAP_KILL: u32 = 5; -pub const CAP_SETGID: u32 = 6; -pub const CAP_SETUID: u32 = 7; -pub const CAP_SETPCAP: u32 = 8; -pub const CAP_LINUX_IMMUTABLE: u32 = 9; -pub const CAP_NET_BIND_SERVICE: u32 = 10; -pub const CAP_NET_BROADCAST: u32 = 11; -pub const CAP_NET_ADMIN: u32 = 12; -pub const CAP_NET_RAW: u32 = 13; -pub const CAP_IPC_LOCK: u32 = 14; -pub const CAP_IPC_OWNER: u32 = 15; -pub const CAP_SYS_MODULE: u32 = 16; -pub const CAP_SYS_RAWIO: u32 = 17; -pub const CAP_SYS_CHROOT: u32 = 18; -pub const CAP_SYS_PTRACE: u32 = 19; -pub const CAP_SYS_PACCT: u32 = 20; -pub const CAP_SYS_ADMIN: u32 = 21; -pub const CAP_SYS_BOOT: u32 = 22; -pub const CAP_SYS_NICE: u32 = 23; -pub const CAP_SYS_RESOURCE: u32 = 24; -pub const CAP_SYS_TIME: u32 = 25; -pub const CAP_SYS_TTY_CONFIG: u32 = 26; -pub const CAP_MKNOD: u32 = 27; -pub const CAP_LEASE: u32 = 28; -pub const CAP_AUDIT_WRITE: u32 = 29; -pub const CAP_AUDIT_CONTROL: u32 = 30; -pub const CAP_SETFCAP: u32 = 31; -pub const CAP_MAC_OVERRIDE: u32 = 32; -pub const CAP_MAC_ADMIN: u32 = 33; -pub const CAP_SYSLOG: u32 = 34; -pub const CAP_WAKE_ALARM: u32 = 35; -pub const CAP_BLOCK_SUSPEND: u32 = 36; -pub const CAP_AUDIT_READ: u32 = 37; -pub const CAP_PERFMON: u32 = 38; -pub const CAP_BPF: u32 = 39; -pub const CAP_CHECKPOINT_RESTORE: u32 = 40; -pub const CAP_LAST_CAP: u32 = 40; -pub const O_APPEND: u32 = 8; -pub const FASYNC: u32 = 64; -pub const O_CREAT: u32 = 512; -pub const O_TRUNC: u32 = 1024; -pub const O_EXCL: u32 = 2048; -pub const O_DSYNC: u32 = 8192; -pub const O_NONBLOCK: u32 = 16384; -pub const O_NDELAY: u32 = 16388; -pub const O_NOCTTY: u32 = 32768; -pub const O_LARGEFILE: u32 = 262144; -pub const O_DIRECT: u32 = 1048576; -pub const O_NOATIME: u32 = 2097152; -pub const O_CLOEXEC: u32 = 4194304; -pub const __O_SYNC: u32 = 8388608; -pub const O_SYNC: u32 = 8396800; -pub const O_PATH: u32 = 16777216; -pub const __O_TMPFILE: u32 = 33554432; -pub const F_GETOWN: u32 = 5; -pub const F_SETOWN: u32 = 6; -pub const F_GETLK: u32 = 7; -pub const F_SETLK: u32 = 8; -pub const F_SETLKW: u32 = 9; -pub const F_RDLCK: u32 = 1; -pub const F_WRLCK: u32 = 2; -pub const F_UNLCK: u32 = 3; -pub const O_ACCMODE: u32 = 3; -pub const O_RDONLY: u32 = 0; -pub const O_WRONLY: u32 = 1; -pub const O_RDWR: u32 = 2; -pub const O_DIRECTORY: u32 = 65536; -pub const O_NOFOLLOW: u32 = 131072; -pub const O_TMPFILE: u32 = 33619968; -pub const O_TMPFILE_MASK: u32 = 33620480; -pub const F_DUPFD: u32 = 0; -pub const F_GETFD: u32 = 1; -pub const F_SETFD: u32 = 2; -pub const F_GETFL: u32 = 3; -pub const F_SETFL: u32 = 4; -pub const F_SETSIG: u32 = 10; -pub const F_GETSIG: u32 = 11; -pub const F_GETLK64: u32 = 12; -pub const F_SETLK64: u32 = 13; -pub const F_SETLKW64: u32 = 14; -pub const F_SETOWN_EX: u32 = 15; -pub const F_GETOWN_EX: u32 = 16; -pub const F_GETOWNER_UIDS: u32 = 17; -pub const F_OFD_GETLK: u32 = 36; -pub const F_OFD_SETLK: u32 = 37; -pub const F_OFD_SETLKW: u32 = 38; -pub const F_OWNER_TID: u32 = 0; -pub const F_OWNER_PID: u32 = 1; -pub const F_OWNER_PGRP: u32 = 2; -pub const FD_CLOEXEC: u32 = 1; -pub const F_EXLCK: u32 = 4; -pub const F_SHLCK: u32 = 8; -pub const LOCK_SH: u32 = 1; -pub const LOCK_EX: u32 = 2; -pub const LOCK_NB: u32 = 4; -pub const LOCK_UN: u32 = 8; -pub const LOCK_MAND: u32 = 32; -pub const LOCK_READ: u32 = 64; -pub const LOCK_WRITE: u32 = 128; -pub const LOCK_RW: u32 = 192; -pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; -pub const RESOLVE_NO_XDEV: u32 = 1; -pub const RESOLVE_NO_MAGICLINKS: u32 = 2; -pub const RESOLVE_NO_SYMLINKS: u32 = 4; -pub const RESOLVE_BENEATH: u32 = 8; -pub const RESOLVE_IN_ROOT: u32 = 16; -pub const RESOLVE_CACHED: u32 = 32; -pub const F_SETLEASE: u32 = 1024; -pub const F_GETLEASE: u32 = 1025; -pub const F_CANCELLK: u32 = 1029; -pub const F_DUPFD_CLOEXEC: u32 = 1030; -pub const F_NOTIFY: u32 = 1026; -pub const F_SETPIPE_SZ: u32 = 1031; -pub const F_GETPIPE_SZ: u32 = 1032; -pub const F_ADD_SEALS: u32 = 1033; -pub const F_GET_SEALS: u32 = 1034; -pub const F_SEAL_SEAL: u32 = 1; -pub const F_SEAL_SHRINK: u32 = 2; -pub const F_SEAL_GROW: u32 = 4; -pub const F_SEAL_WRITE: u32 = 8; -pub const F_SEAL_FUTURE_WRITE: u32 = 16; -pub const F_SEAL_EXEC: u32 = 32; -pub const F_GET_RW_HINT: u32 = 1035; -pub const F_SET_RW_HINT: u32 = 1036; -pub const F_GET_FILE_RW_HINT: u32 = 1037; -pub const F_SET_FILE_RW_HINT: u32 = 1038; -pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; -pub const RWH_WRITE_LIFE_NONE: u32 = 1; -pub const RWH_WRITE_LIFE_SHORT: u32 = 2; -pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; -pub const RWH_WRITE_LIFE_LONG: u32 = 4; -pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; -pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; -pub const DN_ACCESS: u32 = 1; -pub const DN_MODIFY: u32 = 2; -pub const DN_CREATE: u32 = 4; -pub const DN_DELETE: u32 = 8; -pub const DN_RENAME: u32 = 16; -pub const DN_ATTRIB: u32 = 32; -pub const DN_MULTISHOT: u32 = 2147483648; -pub const AT_FDCWD: i32 = -100; -pub const AT_SYMLINK_NOFOLLOW: u32 = 256; -pub const AT_EACCESS: u32 = 512; -pub const AT_REMOVEDIR: u32 = 512; -pub const AT_SYMLINK_FOLLOW: u32 = 1024; -pub const AT_NO_AUTOMOUNT: u32 = 2048; -pub const AT_EMPTY_PATH: u32 = 4096; -pub const AT_STATX_SYNC_TYPE: u32 = 24576; -pub const AT_STATX_SYNC_AS_STAT: u32 = 0; -pub const AT_STATX_FORCE_SYNC: u32 = 8192; -pub const AT_STATX_DONT_SYNC: u32 = 16384; -pub const AT_RECURSIVE: u32 = 32768; -pub const EPOLL_CLOEXEC: u32 = 4194304; -pub const EPOLL_CTL_ADD: u32 = 1; -pub const EPOLL_CTL_DEL: u32 = 2; -pub const EPOLL_CTL_MOD: u32 = 3; -pub const POSIX_FADV_NORMAL: u32 = 0; -pub const POSIX_FADV_RANDOM: u32 = 1; -pub const POSIX_FADV_SEQUENTIAL: u32 = 2; -pub const POSIX_FADV_WILLNEED: u32 = 3; -pub const POSIX_FADV_DONTNEED: u32 = 4; -pub const POSIX_FADV_NOREUSE: u32 = 5; -pub const FALLOC_FL_KEEP_SIZE: u32 = 1; -pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; -pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; -pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; -pub const FALLOC_FL_ZERO_RANGE: u32 = 16; -pub const FALLOC_FL_INSERT_RANGE: u32 = 32; -pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; -pub const NR_OPEN: u32 = 1024; -pub const NGROUPS_MAX: u32 = 65536; -pub const ARG_MAX: u32 = 131072; -pub const LINK_MAX: u32 = 127; -pub const MAX_CANON: u32 = 255; -pub const MAX_INPUT: u32 = 255; -pub const NAME_MAX: u32 = 255; -pub const PATH_MAX: u32 = 4096; -pub const PIPE_BUF: u32 = 4096; -pub const XATTR_NAME_MAX: u32 = 255; -pub const XATTR_SIZE_MAX: u32 = 65536; -pub const XATTR_LIST_MAX: u32 = 65536; -pub const RTSIG_MAX: u32 = 32; -pub const _IOC_NRBITS: u32 = 8; -pub const _IOC_TYPEBITS: u32 = 8; -pub const _IOC_SIZEBITS: u32 = 13; -pub const _IOC_DIRBITS: u32 = 3; -pub const _IOC_NRMASK: u32 = 255; -pub const _IOC_TYPEMASK: u32 = 255; -pub const _IOC_SIZEMASK: u32 = 8191; -pub const _IOC_XSIZEMASK: u32 = 16383; -pub const _IOC_DIRMASK: u32 = 7; -pub const _IOC_NRSHIFT: u32 = 0; -pub const _IOC_TYPESHIFT: u32 = 8; -pub const _IOC_SIZESHIFT: u32 = 16; -pub const _IOC_DIRSHIFT: u32 = 29; -pub const _IOC_NONE: u32 = 1; -pub const _IOC_READ: u32 = 2; -pub const _IOC_WRITE: u32 = 4; -pub const IOC_IN: u32 = 2147483648; -pub const IOC_OUT: u32 = 1073741824; -pub const IOC_INOUT: u32 = 3221225472; -pub const IOCSIZE_MASK: u32 = 1073676288; -pub const IOCSIZE_SHIFT: u32 = 16; -pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; -pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; -pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; -pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; -pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; -pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; -pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; -pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; -pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; -pub const FSCRYPT_POLICY_V1: u32 = 0; -pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; -pub const FSCRYPT_POLICY_V2: u32 = 2; -pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; -pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; -pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; -pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; -pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; -pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; -pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; -pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FS_POLICY_FLAGS_VALID: u32 = 7; -pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; -pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; -pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; -pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; -pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; -pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; -pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; -pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; -pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FS_MAX_KEY_SIZE: u32 = 64; -pub const MS_RDONLY: u32 = 1; -pub const MS_NOSUID: u32 = 2; -pub const MS_NODEV: u32 = 4; -pub const MS_NOEXEC: u32 = 8; -pub const MS_SYNCHRONOUS: u32 = 16; -pub const MS_REMOUNT: u32 = 32; -pub const MS_MANDLOCK: u32 = 64; -pub const MS_DIRSYNC: u32 = 128; -pub const MS_NOSYMFOLLOW: u32 = 256; -pub const MS_NOATIME: u32 = 1024; -pub const MS_NODIRATIME: u32 = 2048; -pub const MS_BIND: u32 = 4096; -pub const MS_MOVE: u32 = 8192; -pub const MS_REC: u32 = 16384; -pub const MS_VERBOSE: u32 = 32768; -pub const MS_SILENT: u32 = 32768; -pub const MS_POSIXACL: u32 = 65536; -pub const MS_UNBINDABLE: u32 = 131072; -pub const MS_PRIVATE: u32 = 262144; -pub const MS_SLAVE: u32 = 524288; -pub const MS_SHARED: u32 = 1048576; -pub const MS_RELATIME: u32 = 2097152; -pub const MS_KERNMOUNT: u32 = 4194304; -pub const MS_I_VERSION: u32 = 8388608; -pub const MS_STRICTATIME: u32 = 16777216; -pub const MS_LAZYTIME: u32 = 33554432; -pub const MS_SUBMOUNT: u32 = 67108864; -pub const MS_NOREMOTELOCK: u32 = 134217728; -pub const MS_NOSEC: u32 = 268435456; -pub const MS_BORN: u32 = 536870912; -pub const MS_ACTIVE: u32 = 1073741824; -pub const MS_NOUSER: u32 = 2147483648; -pub const MS_RMT_MASK: u32 = 41943121; -pub const MS_MGC_VAL: u32 = 3236757504; -pub const MS_MGC_MSK: u32 = 4294901760; -pub const OPEN_TREE_CLONE: u32 = 1; -pub const OPEN_TREE_CLOEXEC: u32 = 4194304; -pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; -pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; -pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; -pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; -pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; -pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; -pub const MOVE_MOUNT_SET_GROUP: u32 = 256; -pub const MOVE_MOUNT__MASK: u32 = 375; -pub const FSOPEN_CLOEXEC: u32 = 1; -pub const FSPICK_CLOEXEC: u32 = 1; -pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; -pub const FSPICK_NO_AUTOMOUNT: u32 = 4; -pub const FSPICK_EMPTY_PATH: u32 = 8; -pub const FSMOUNT_CLOEXEC: u32 = 1; -pub const MOUNT_ATTR_RDONLY: u32 = 1; -pub const MOUNT_ATTR_NOSUID: u32 = 2; -pub const MOUNT_ATTR_NODEV: u32 = 4; -pub const MOUNT_ATTR_NOEXEC: u32 = 8; -pub const MOUNT_ATTR__ATIME: u32 = 112; -pub const MOUNT_ATTR_RELATIME: u32 = 0; -pub const MOUNT_ATTR_NOATIME: u32 = 16; -pub const MOUNT_ATTR_STRICTATIME: u32 = 32; -pub const MOUNT_ATTR_NODIRATIME: u32 = 128; -pub const MOUNT_ATTR_IDMAP: u32 = 1048576; -pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; -pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; -pub const INR_OPEN_CUR: u32 = 1024; -pub const INR_OPEN_MAX: u32 = 4096; -pub const BLOCK_SIZE_BITS: u32 = 10; -pub const BLOCK_SIZE: u32 = 1024; -pub const SEEK_SET: u32 = 0; -pub const SEEK_CUR: u32 = 1; -pub const SEEK_END: u32 = 2; -pub const SEEK_DATA: u32 = 3; -pub const SEEK_HOLE: u32 = 4; -pub const SEEK_MAX: u32 = 4; -pub const RENAME_NOREPLACE: u32 = 1; -pub const RENAME_EXCHANGE: u32 = 2; -pub const RENAME_WHITEOUT: u32 = 4; -pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; -pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; -pub const NR_FILE: u32 = 8192; -pub const FS_XFLAG_REALTIME: u32 = 1; -pub const FS_XFLAG_PREALLOC: u32 = 2; -pub const FS_XFLAG_IMMUTABLE: u32 = 8; -pub const FS_XFLAG_APPEND: u32 = 16; -pub const FS_XFLAG_SYNC: u32 = 32; -pub const FS_XFLAG_NOATIME: u32 = 64; -pub const FS_XFLAG_NODUMP: u32 = 128; -pub const FS_XFLAG_RTINHERIT: u32 = 256; -pub const FS_XFLAG_PROJINHERIT: u32 = 512; -pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; -pub const FS_XFLAG_EXTSIZE: u32 = 2048; -pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; -pub const FS_XFLAG_NODEFRAG: u32 = 8192; -pub const FS_XFLAG_FILESTREAM: u32 = 16384; -pub const FS_XFLAG_DAX: u32 = 32768; -pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; -pub const FS_XFLAG_HASATTR: u32 = 2147483648; -pub const BMAP_IOCTL: u32 = 1; -pub const FSLABEL_MAX: u32 = 256; -pub const FS_SECRM_FL: u32 = 1; -pub const FS_UNRM_FL: u32 = 2; -pub const FS_COMPR_FL: u32 = 4; -pub const FS_SYNC_FL: u32 = 8; -pub const FS_IMMUTABLE_FL: u32 = 16; -pub const FS_APPEND_FL: u32 = 32; -pub const FS_NODUMP_FL: u32 = 64; -pub const FS_NOATIME_FL: u32 = 128; -pub const FS_DIRTY_FL: u32 = 256; -pub const FS_COMPRBLK_FL: u32 = 512; -pub const FS_NOCOMP_FL: u32 = 1024; -pub const FS_ENCRYPT_FL: u32 = 2048; -pub const FS_BTREE_FL: u32 = 4096; -pub const FS_INDEX_FL: u32 = 4096; -pub const FS_IMAGIC_FL: u32 = 8192; -pub const FS_JOURNAL_DATA_FL: u32 = 16384; -pub const FS_NOTAIL_FL: u32 = 32768; -pub const FS_DIRSYNC_FL: u32 = 65536; -pub const FS_TOPDIR_FL: u32 = 131072; -pub const FS_HUGE_FILE_FL: u32 = 262144; -pub const FS_EXTENT_FL: u32 = 524288; -pub const FS_VERITY_FL: u32 = 1048576; -pub const FS_EA_INODE_FL: u32 = 2097152; -pub const FS_EOFBLOCKS_FL: u32 = 4194304; -pub const FS_NOCOW_FL: u32 = 8388608; -pub const FS_DAX_FL: u32 = 33554432; -pub const FS_INLINE_DATA_FL: u32 = 268435456; -pub const FS_PROJINHERIT_FL: u32 = 536870912; -pub const FS_CASEFOLD_FL: u32 = 1073741824; -pub const FS_RESERVED_FL: u32 = 2147483648; -pub const FS_FL_USER_VISIBLE: u32 = 253951; -pub const FS_FL_USER_MODIFIABLE: u32 = 229631; -pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; -pub const SYNC_FILE_RANGE_WRITE: u32 = 2; -pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; -pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; -pub const FUTEX_WAIT: u32 = 0; -pub const FUTEX_WAKE: u32 = 1; -pub const FUTEX_FD: u32 = 2; -pub const FUTEX_REQUEUE: u32 = 3; -pub const FUTEX_CMP_REQUEUE: u32 = 4; -pub const FUTEX_WAKE_OP: u32 = 5; -pub const FUTEX_LOCK_PI: u32 = 6; -pub const FUTEX_UNLOCK_PI: u32 = 7; -pub const FUTEX_TRYLOCK_PI: u32 = 8; -pub const FUTEX_WAIT_BITSET: u32 = 9; -pub const FUTEX_WAKE_BITSET: u32 = 10; -pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; -pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; -pub const FUTEX_LOCK_PI2: u32 = 13; -pub const FUTEX_PRIVATE_FLAG: u32 = 128; -pub const FUTEX_CLOCK_REALTIME: u32 = 256; -pub const FUTEX_CMD_MASK: i32 = -385; -pub const FUTEX_WAIT_PRIVATE: u32 = 128; -pub const FUTEX_WAKE_PRIVATE: u32 = 129; -pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; -pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; -pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; -pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; -pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; -pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; -pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; -pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; -pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; -pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; -pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; -pub const FUTEX_32: u32 = 2; -pub const FUTEX_WAITV_MAX: u32 = 128; -pub const FUTEX_WAITERS: u32 = 2147483648; -pub const FUTEX_OWNER_DIED: u32 = 1073741824; -pub const FUTEX_TID_MASK: u32 = 1073741823; -pub const ROBUST_LIST_LIMIT: u32 = 2048; -pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; -pub const FUTEX_OP_SET: u32 = 0; -pub const FUTEX_OP_ADD: u32 = 1; -pub const FUTEX_OP_OR: u32 = 2; -pub const FUTEX_OP_ANDN: u32 = 3; -pub const FUTEX_OP_XOR: u32 = 4; -pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; -pub const FUTEX_OP_CMP_EQ: u32 = 0; -pub const FUTEX_OP_CMP_NE: u32 = 1; -pub const FUTEX_OP_CMP_LT: u32 = 2; -pub const FUTEX_OP_CMP_LE: u32 = 3; -pub const FUTEX_OP_CMP_GT: u32 = 4; -pub const FUTEX_OP_CMP_GE: u32 = 5; -pub const __UAPI_DEF_IF_IFCONF: u32 = 1; -pub const __UAPI_DEF_IF_IFMAP: u32 = 1; -pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1; -pub const __UAPI_DEF_IF_IFREQ: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1; -pub const __UAPI_DEF_IN_ADDR: u32 = 1; -pub const __UAPI_DEF_IN_IPPROTO: u32 = 1; -pub const __UAPI_DEF_IN_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP_MREQ: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1; -pub const __UAPI_DEF_IN_CLASS: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1; -pub const __UAPI_DEF_IPV6_MREQ: u32 = 1; -pub const __UAPI_DEF_IPPROTO_V6: u32 = 1; -pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1; -pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1; -pub const __UAPI_DEF_XATTR: u32 = 1; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const IP_TOS: u32 = 1; -pub const IP_TTL: u32 = 2; -pub const IP_HDRINCL: u32 = 3; -pub const IP_OPTIONS: u32 = 4; -pub const IP_ROUTER_ALERT: u32 = 5; -pub const IP_RECVOPTS: u32 = 6; -pub const IP_RETOPTS: u32 = 7; -pub const IP_PKTINFO: u32 = 8; -pub const IP_PKTOPTIONS: u32 = 9; -pub const IP_MTU_DISCOVER: u32 = 10; -pub const IP_RECVERR: u32 = 11; -pub const IP_RECVTTL: u32 = 12; -pub const IP_RECVTOS: u32 = 13; -pub const IP_MTU: u32 = 14; -pub const IP_FREEBIND: u32 = 15; -pub const IP_IPSEC_POLICY: u32 = 16; -pub const IP_XFRM_POLICY: u32 = 17; -pub const IP_PASSSEC: u32 = 18; -pub const IP_TRANSPARENT: u32 = 19; -pub const IP_RECVRETOPTS: u32 = 7; -pub const IP_ORIGDSTADDR: u32 = 20; -pub const IP_RECVORIGDSTADDR: u32 = 20; -pub const IP_MINTTL: u32 = 21; -pub const IP_NODEFRAG: u32 = 22; -pub const IP_CHECKSUM: u32 = 23; -pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; -pub const IP_RECVFRAGSIZE: u32 = 25; -pub const IP_RECVERR_RFC4884: u32 = 26; -pub const IP_PMTUDISC_DONT: u32 = 0; -pub const IP_PMTUDISC_WANT: u32 = 1; -pub const IP_PMTUDISC_DO: u32 = 2; -pub const IP_PMTUDISC_PROBE: u32 = 3; -pub const IP_PMTUDISC_INTERFACE: u32 = 4; -pub const IP_PMTUDISC_OMIT: u32 = 5; -pub const IP_MULTICAST_IF: u32 = 32; -pub const IP_MULTICAST_TTL: u32 = 33; -pub const IP_MULTICAST_LOOP: u32 = 34; -pub const IP_ADD_MEMBERSHIP: u32 = 35; -pub const IP_DROP_MEMBERSHIP: u32 = 36; -pub const IP_UNBLOCK_SOURCE: u32 = 37; -pub const IP_BLOCK_SOURCE: u32 = 38; -pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; -pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; -pub const IP_MSFILTER: u32 = 41; -pub const MCAST_JOIN_GROUP: u32 = 42; -pub const MCAST_BLOCK_SOURCE: u32 = 43; -pub const MCAST_UNBLOCK_SOURCE: u32 = 44; -pub const MCAST_LEAVE_GROUP: u32 = 45; -pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; -pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; -pub const MCAST_MSFILTER: u32 = 48; -pub const IP_MULTICAST_ALL: u32 = 49; -pub const IP_UNICAST_IF: u32 = 50; -pub const IP_LOCAL_PORT_RANGE: u32 = 51; -pub const MCAST_EXCLUDE: u32 = 0; -pub const MCAST_INCLUDE: u32 = 1; -pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; -pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const __SOCK_SIZE__: u32 = 16; -pub const IN_CLASSA_NET: u32 = 4278190080; -pub const IN_CLASSA_NSHIFT: u32 = 24; -pub const IN_CLASSA_HOST: u32 = 16777215; -pub const IN_CLASSA_MAX: u32 = 128; -pub const IN_CLASSB_NET: u32 = 4294901760; -pub const IN_CLASSB_NSHIFT: u32 = 16; -pub const IN_CLASSB_HOST: u32 = 65535; -pub const IN_CLASSB_MAX: u32 = 65536; -pub const IN_CLASSC_NET: u32 = 4294967040; -pub const IN_CLASSC_NSHIFT: u32 = 8; -pub const IN_CLASSC_HOST: u32 = 255; -pub const IN_MULTICAST_NET: u32 = 3758096384; -pub const IN_CLASSE_NET: u32 = 4294967295; -pub const IN_CLASSE_NSHIFT: u32 = 0; -pub const IN_LOOPBACKNET: u32 = 127; -pub const INADDR_LOOPBACK: u32 = 2130706433; -pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; -pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; -pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; -pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; -pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; -pub const __BIG_ENDIAN: u32 = 4321; -pub const ASI_NULL1: u32 = 0; -pub const ASI_NULL2: u32 = 1; -pub const ASI_CONTROL: u32 = 2; -pub const ASI_SEGMAP: u32 = 3; -pub const ASI_PTE: u32 = 4; -pub const ASI_HWFLUSHSEG: u32 = 5; -pub const ASI_HWFLUSHPAGE: u32 = 6; -pub const ASI_REGMAP: u32 = 6; -pub const ASI_HWFLUSHCONTEXT: u32 = 7; -pub const ASI_USERTXT: u32 = 8; -pub const ASI_KERNELTXT: u32 = 9; -pub const ASI_USERDATA: u32 = 10; -pub const ASI_KERNELDATA: u32 = 11; -pub const ASI_FLUSHSEG: u32 = 12; -pub const ASI_FLUSHPG: u32 = 13; -pub const ASI_FLUSHCTX: u32 = 14; -pub const ASI_M_RES00: u32 = 0; -pub const ASI_M_UNA01: u32 = 1; -pub const ASI_M_MXCC: u32 = 2; -pub const ASI_M_FLUSH_PROBE: u32 = 3; -pub const ASI_M_MMUREGS: u32 = 4; -pub const ASI_M_TLBDIAG: u32 = 5; -pub const ASI_M_DIAGS: u32 = 6; -pub const ASI_M_IODIAG: u32 = 7; -pub const ASI_M_USERTXT: u32 = 8; -pub const ASI_M_KERNELTXT: u32 = 9; -pub const ASI_M_USERDATA: u32 = 10; -pub const ASI_M_KERNELDATA: u32 = 11; -pub const ASI_M_TXTC_TAG: u32 = 12; -pub const ASI_M_TXTC_DATA: u32 = 13; -pub const ASI_M_DATAC_TAG: u32 = 14; -pub const ASI_M_DATAC_DATA: u32 = 15; -pub const ASI_M_FLUSH_PAGE: u32 = 16; -pub const ASI_M_FLUSH_SEG: u32 = 17; -pub const ASI_M_FLUSH_REGION: u32 = 18; -pub const ASI_M_FLUSH_CTX: u32 = 19; -pub const ASI_M_FLUSH_USER: u32 = 20; -pub const ASI_M_BCOPY: u32 = 23; -pub const ASI_M_IFLUSH_PAGE: u32 = 24; -pub const ASI_M_IFLUSH_SEG: u32 = 25; -pub const ASI_M_IFLUSH_REGION: u32 = 26; -pub const ASI_M_IFLUSH_CTX: u32 = 27; -pub const ASI_M_IFLUSH_USER: u32 = 28; -pub const ASI_M_BFILL: u32 = 31; -pub const ASI_M_BYPASS: u32 = 32; -pub const ASI_M_FBMEM: u32 = 41; -pub const ASI_M_VMEUS: u32 = 42; -pub const ASI_M_VMEPS: u32 = 43; -pub const ASI_M_VMEUT: u32 = 44; -pub const ASI_M_VMEPT: u32 = 45; -pub const ASI_M_SBUS: u32 = 46; -pub const ASI_M_CTL: u32 = 47; -pub const ASI_M_FLUSH_IWHOLE: u32 = 49; -pub const ASI_M_IC_FLCLEAR: u32 = 54; -pub const ASI_M_DC_FLCLEAR: u32 = 55; -pub const ASI_M_DCDR: u32 = 57; -pub const ASI_M_VIKING_TMP1: u32 = 64; -pub const ASI_M_ACTION: u32 = 76; -pub const ASI_LEON_NOCACHE: u32 = 1; -pub const ASI_LEON_DCACHE_MISS: u32 = 1; -pub const ASI_LEON_CACHEREGS: u32 = 2; -pub const ASI_LEON_IFLUSH: u32 = 16; -pub const ASI_LEON_DFLUSH: u32 = 17; -pub const ASI_LEON_MMUFLUSH: u32 = 24; -pub const ASI_LEON_MMUREGS: u32 = 25; -pub const ASI_LEON_BYPASS: u32 = 28; -pub const ASI_LEON_FLUSH_PAGE: u32 = 16; -pub const ASI_N: u32 = 4; -pub const ASI_NL: u32 = 12; -pub const ASI_AIUP: u32 = 16; -pub const ASI_AIUS: u32 = 17; -pub const ASI_AIUPL: u32 = 24; -pub const ASI_AIUSL: u32 = 25; -pub const ASI_P: u32 = 128; -pub const ASI_S: u32 = 129; -pub const ASI_PNF: u32 = 130; -pub const ASI_SNF: u32 = 131; -pub const ASI_PL: u32 = 136; -pub const ASI_SL: u32 = 137; -pub const ASI_PNFL: u32 = 138; -pub const ASI_SNFL: u32 = 139; -pub const ASI_MCD_PRIV_PRIMARY: u32 = 2; -pub const ASI_MCD_REAL: u32 = 5; -pub const ASI_PHYS_USE_EC: u32 = 20; -pub const ASI_PHYS_BYPASS_EC_E: u32 = 21; -pub const ASI_BLK_AIUP_4V: u32 = 22; -pub const ASI_BLK_AIUS_4V: u32 = 23; -pub const ASI_PHYS_USE_EC_L: u32 = 28; -pub const ASI_PHYS_BYPASS_EC_E_L: u32 = 29; -pub const ASI_BLK_AIUP_L_4V: u32 = 30; -pub const ASI_BLK_AIUS_L_4V: u32 = 31; -pub const ASI_SCRATCHPAD: u32 = 32; -pub const ASI_MMU: u32 = 33; -pub const ASI_BLK_INIT_QUAD_LDD_AIUS: u32 = 35; -pub const ASI_NUCLEUS_QUAD_LDD: u32 = 36; -pub const ASI_QUEUE: u32 = 37; -pub const ASI_QUAD_LDD_PHYS_4V: u32 = 38; -pub const ASI_NUCLEUS_QUAD_LDD_L: u32 = 44; -pub const ASI_QUAD_LDD_PHYS_L_4V: u32 = 46; -pub const ASI_PCACHE_DATA_STATUS: u32 = 48; -pub const ASI_PCACHE_DATA: u32 = 49; -pub const ASI_PCACHE_TAG: u32 = 50; -pub const ASI_PCACHE_SNOOP_TAG: u32 = 51; -pub const ASI_QUAD_LDD_PHYS: u32 = 52; -pub const ASI_WCACHE_VALID_BITS: u32 = 56; -pub const ASI_WCACHE_DATA: u32 = 57; -pub const ASI_WCACHE_TAG: u32 = 58; -pub const ASI_WCACHE_SNOOP_TAG: u32 = 59; -pub const ASI_QUAD_LDD_PHYS_L: u32 = 60; -pub const ASI_SRAM_FAST_INIT: u32 = 64; -pub const ASI_CORE_AVAILABLE: u32 = 65; -pub const ASI_CORE_ENABLE_STAT: u32 = 65; -pub const ASI_CORE_ENABLE: u32 = 65; -pub const ASI_XIR_STEERING: u32 = 65; -pub const ASI_CORE_RUNNING_RW: u32 = 65; -pub const ASI_CORE_RUNNING_W1S: u32 = 65; -pub const ASI_CORE_RUNNING_W1C: u32 = 65; -pub const ASI_CORE_RUNNING_STAT: u32 = 65; -pub const ASI_CMT_ERROR_STEERING: u32 = 65; -pub const ASI_DCACHE_INVALIDATE: u32 = 66; -pub const ASI_DCACHE_UTAG: u32 = 67; -pub const ASI_DCACHE_SNOOP_TAG: u32 = 68; -pub const ASI_LSU_CONTROL: u32 = 69; -pub const ASI_DCU_CONTROL_REG: u32 = 69; -pub const ASI_DCACHE_DATA: u32 = 70; -pub const ASI_DCACHE_TAG: u32 = 71; -pub const ASI_INTR_DISPATCH_STAT: u32 = 72; -pub const ASI_INTR_RECEIVE: u32 = 73; -pub const ASI_UPA_CONFIG: u32 = 74; -pub const ASI_JBUS_CONFIG: u32 = 74; -pub const ASI_SAFARI_CONFIG: u32 = 74; -pub const ASI_SAFARI_ADDRESS: u32 = 74; -pub const ASI_ESTATE_ERROR_EN: u32 = 75; -pub const ASI_AFSR: u32 = 76; -pub const ASI_AFAR: u32 = 77; -pub const ASI_EC_TAG_DATA: u32 = 78; -pub const ASI_IMMU: u32 = 80; -pub const ASI_IMMU_TSB_8KB_PTR: u32 = 81; -pub const ASI_IMMU_TSB_64KB_PTR: u32 = 82; -pub const ASI_ITLB_DATA_IN: u32 = 84; -pub const ASI_ITLB_DATA_ACCESS: u32 = 85; -pub const ASI_ITLB_TAG_READ: u32 = 86; -pub const ASI_IMMU_DEMAP: u32 = 87; -pub const ASI_DMMU: u32 = 88; -pub const ASI_DMMU_TSB_8KB_PTR: u32 = 89; -pub const ASI_DMMU_TSB_64KB_PTR: u32 = 90; -pub const ASI_DMMU_TSB_DIRECT_PTR: u32 = 91; -pub const ASI_DTLB_DATA_IN: u32 = 92; -pub const ASI_DTLB_DATA_ACCESS: u32 = 93; -pub const ASI_DTLB_TAG_READ: u32 = 94; -pub const ASI_DMMU_DEMAP: u32 = 95; -pub const ASI_IIU_INST_TRAP: u32 = 96; -pub const ASI_INTR_ID: u32 = 99; -pub const ASI_CORE_ID: u32 = 99; -pub const ASI_CESR_ID: u32 = 99; -pub const ASI_IC_INSTR: u32 = 102; -pub const ASI_IC_TAG: u32 = 103; -pub const ASI_IC_STAG: u32 = 104; -pub const ASI_IC_PRE_DECODE: u32 = 110; -pub const ASI_IC_NEXT_FIELD: u32 = 111; -pub const ASI_BRPRED_ARRAY: u32 = 111; -pub const ASI_BLK_AIUP: u32 = 112; -pub const ASI_BLK_AIUS: u32 = 113; -pub const ASI_MCU_CTRL_REG: u32 = 114; -pub const ASI_EC_DATA: u32 = 116; -pub const ASI_EC_CTRL: u32 = 117; -pub const ASI_EC_W: u32 = 118; -pub const ASI_UDB_ERROR_W: u32 = 119; -pub const ASI_UDB_CONTROL_W: u32 = 119; -pub const ASI_INTR_W: u32 = 119; -pub const ASI_INTR_DATAN_W: u32 = 119; -pub const ASI_INTR_DISPATCH_W: u32 = 119; -pub const ASI_BLK_AIUPL: u32 = 120; -pub const ASI_BLK_AIUSL: u32 = 121; -pub const ASI_EC_R: u32 = 126; -pub const ASI_UDBH_ERROR_R: u32 = 127; -pub const ASI_UDBL_ERROR_R: u32 = 127; -pub const ASI_UDBH_CONTROL_R: u32 = 127; -pub const ASI_UDBL_CONTROL_R: u32 = 127; -pub const ASI_INTR_R: u32 = 127; -pub const ASI_INTR_DATAN_R: u32 = 127; -pub const ASI_MCD_PRIMARY: u32 = 144; -pub const ASI_MCD_ST_BLKINIT_PRIMARY: u32 = 146; -pub const ASI_PIC: u32 = 176; -pub const ASI_PST8_P: u32 = 192; -pub const ASI_PST8_S: u32 = 193; -pub const ASI_PST16_P: u32 = 194; -pub const ASI_PST16_S: u32 = 195; -pub const ASI_PST32_P: u32 = 196; -pub const ASI_PST32_S: u32 = 197; -pub const ASI_PST8_PL: u32 = 200; -pub const ASI_PST8_SL: u32 = 201; -pub const ASI_PST16_PL: u32 = 202; -pub const ASI_PST16_SL: u32 = 203; -pub const ASI_PST32_PL: u32 = 204; -pub const ASI_PST32_SL: u32 = 205; -pub const ASI_FL8_P: u32 = 208; -pub const ASI_FL8_S: u32 = 209; -pub const ASI_FL16_P: u32 = 210; -pub const ASI_FL16_S: u32 = 211; -pub const ASI_FL8_PL: u32 = 216; -pub const ASI_FL8_SL: u32 = 217; -pub const ASI_FL16_PL: u32 = 218; -pub const ASI_FL16_SL: u32 = 219; -pub const ASI_BLK_COMMIT_P: u32 = 224; -pub const ASI_BLK_COMMIT_S: u32 = 225; -pub const ASI_BLK_INIT_QUAD_LDD_P: u32 = 226; -pub const ASI_BLK_INIT_QUAD_LDD_S: u32 = 227; -pub const ASI_BLK_P: u32 = 240; -pub const ASI_BLK_S: u32 = 241; -pub const ASI_ST_BLKINIT_MRU_P: u32 = 242; -pub const ASI_ST_BLKINIT_MRU_S: u32 = 243; -pub const ASI_BLK_PL: u32 = 248; -pub const ASI_BLK_SL: u32 = 249; -pub const ASI_ST_BLKINIT_MRU_PL: u32 = 250; -pub const ASI_ST_BLKINIT_MRU_SL: u32 = 251; -pub const IN_ACCESS: u32 = 1; -pub const IN_MODIFY: u32 = 2; -pub const IN_ATTRIB: u32 = 4; -pub const IN_CLOSE_WRITE: u32 = 8; -pub const IN_CLOSE_NOWRITE: u32 = 16; -pub const IN_OPEN: u32 = 32; -pub const IN_MOVED_FROM: u32 = 64; -pub const IN_MOVED_TO: u32 = 128; -pub const IN_CREATE: u32 = 256; -pub const IN_DELETE: u32 = 512; -pub const IN_DELETE_SELF: u32 = 1024; -pub const IN_MOVE_SELF: u32 = 2048; -pub const IN_UNMOUNT: u32 = 8192; -pub const IN_Q_OVERFLOW: u32 = 16384; -pub const IN_IGNORED: u32 = 32768; -pub const IN_CLOSE: u32 = 24; -pub const IN_MOVE: u32 = 192; -pub const IN_ONLYDIR: u32 = 16777216; -pub const IN_DONT_FOLLOW: u32 = 33554432; -pub const IN_EXCL_UNLINK: u32 = 67108864; -pub const IN_MASK_CREATE: u32 = 268435456; -pub const IN_MASK_ADD: u32 = 536870912; -pub const IN_ISDIR: u32 = 1073741824; -pub const IN_ONESHOT: u32 = 2147483648; -pub const IN_ALL_EVENTS: u32 = 4095; -pub const IN_CLOEXEC: u32 = 4194304; -pub const IN_NONBLOCK: u32 = 16384; -pub const IPTOS_TOS_MASK: u32 = 30; -pub const IPTOS_LOWDELAY: u32 = 16; -pub const IPTOS_THROUGHPUT: u32 = 8; -pub const IPTOS_RELIABILITY: u32 = 4; -pub const IPTOS_MINCOST: u32 = 2; -pub const IPTOS_PREC_MASK: u32 = 224; -pub const IPTOS_PREC_NETCONTROL: u32 = 224; -pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; -pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; -pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; -pub const IPTOS_PREC_FLASH: u32 = 96; -pub const IPTOS_PREC_IMMEDIATE: u32 = 64; -pub const IPTOS_PREC_PRIORITY: u32 = 32; -pub const IPTOS_PREC_ROUTINE: u32 = 0; -pub const IPOPT_COPY: u32 = 128; -pub const IPOPT_CLASS_MASK: u32 = 96; -pub const IPOPT_NUMBER_MASK: u32 = 31; -pub const IPOPT_CONTROL: u32 = 0; -pub const IPOPT_RESERVED1: u32 = 32; -pub const IPOPT_MEASUREMENT: u32 = 64; -pub const IPOPT_RESERVED2: u32 = 96; -pub const IPOPT_END: u32 = 0; -pub const IPOPT_NOOP: u32 = 1; -pub const IPOPT_SEC: u32 = 130; -pub const IPOPT_LSRR: u32 = 131; -pub const IPOPT_TIMESTAMP: u32 = 68; -pub const IPOPT_CIPSO: u32 = 134; -pub const IPOPT_RR: u32 = 7; -pub const IPOPT_SID: u32 = 136; -pub const IPOPT_SSRR: u32 = 137; -pub const IPOPT_RA: u32 = 148; -pub const IPVERSION: u32 = 4; -pub const MAXTTL: u32 = 255; -pub const IPDEFTTL: u32 = 64; -pub const IPOPT_OPTVAL: u32 = 0; -pub const IPOPT_OLEN: u32 = 1; -pub const IPOPT_OFFSET: u32 = 2; -pub const IPOPT_MINOFF: u32 = 4; -pub const MAX_IPOPTLEN: u32 = 40; -pub const IPOPT_NOP: u32 = 1; -pub const IPOPT_EOL: u32 = 0; -pub const IPOPT_TS: u32 = 68; -pub const IPOPT_TS_TSONLY: u32 = 0; -pub const IPOPT_TS_TSANDADDR: u32 = 1; -pub const IPOPT_TS_PRESPEC: u32 = 3; -pub const IPV4_BEET_PHMAXLEN: u32 = 8; -pub const IPV6_FL_A_GET: u32 = 0; -pub const IPV6_FL_A_PUT: u32 = 1; -pub const IPV6_FL_A_RENEW: u32 = 2; -pub const IPV6_FL_F_CREATE: u32 = 1; -pub const IPV6_FL_F_EXCL: u32 = 2; -pub const IPV6_FL_F_REFLECT: u32 = 4; -pub const IPV6_FL_F_REMOTE: u32 = 8; -pub const IPV6_FL_S_NONE: u32 = 0; -pub const IPV6_FL_S_EXCL: u32 = 1; -pub const IPV6_FL_S_PROCESS: u32 = 2; -pub const IPV6_FL_S_USER: u32 = 3; -pub const IPV6_FL_S_ANY: u32 = 255; -pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; -pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; -pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; -pub const IPV6_PRIORITY_FILLER: u32 = 256; -pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; -pub const IPV6_PRIORITY_RESERVED1: u32 = 768; -pub const IPV6_PRIORITY_BULK: u32 = 1024; -pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; -pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; -pub const IPV6_PRIORITY_CONTROL: u32 = 1792; -pub const IPV6_PRIORITY_8: u32 = 2048; -pub const IPV6_PRIORITY_9: u32 = 2304; -pub const IPV6_PRIORITY_10: u32 = 2560; -pub const IPV6_PRIORITY_11: u32 = 2816; -pub const IPV6_PRIORITY_12: u32 = 3072; -pub const IPV6_PRIORITY_13: u32 = 3328; -pub const IPV6_PRIORITY_14: u32 = 3584; -pub const IPV6_PRIORITY_15: u32 = 3840; -pub const IPPROTO_HOPOPTS: u32 = 0; -pub const IPPROTO_ROUTING: u32 = 43; -pub const IPPROTO_FRAGMENT: u32 = 44; -pub const IPPROTO_ICMPV6: u32 = 58; -pub const IPPROTO_NONE: u32 = 59; -pub const IPPROTO_DSTOPTS: u32 = 60; -pub const IPPROTO_MH: u32 = 135; -pub const IPV6_TLV_PAD1: u32 = 0; -pub const IPV6_TLV_PADN: u32 = 1; -pub const IPV6_TLV_ROUTERALERT: u32 = 5; -pub const IPV6_TLV_CALIPSO: u32 = 7; -pub const IPV6_TLV_IOAM: u32 = 49; -pub const IPV6_TLV_JUMBO: u32 = 194; -pub const IPV6_TLV_HAO: u32 = 201; -pub const IPV6_ADDRFORM: u32 = 1; -pub const IPV6_2292PKTINFO: u32 = 2; -pub const IPV6_2292HOPOPTS: u32 = 3; -pub const IPV6_2292DSTOPTS: u32 = 4; -pub const IPV6_2292RTHDR: u32 = 5; -pub const IPV6_2292PKTOPTIONS: u32 = 6; -pub const IPV6_CHECKSUM: u32 = 7; -pub const IPV6_2292HOPLIMIT: u32 = 8; -pub const IPV6_NEXTHOP: u32 = 9; -pub const IPV6_AUTHHDR: u32 = 10; -pub const IPV6_FLOWINFO: u32 = 11; -pub const IPV6_UNICAST_HOPS: u32 = 16; -pub const IPV6_MULTICAST_IF: u32 = 17; -pub const IPV6_MULTICAST_HOPS: u32 = 18; -pub const IPV6_MULTICAST_LOOP: u32 = 19; -pub const IPV6_ADD_MEMBERSHIP: u32 = 20; -pub const IPV6_DROP_MEMBERSHIP: u32 = 21; -pub const IPV6_ROUTER_ALERT: u32 = 22; -pub const IPV6_MTU_DISCOVER: u32 = 23; -pub const IPV6_MTU: u32 = 24; -pub const IPV6_RECVERR: u32 = 25; -pub const IPV6_V6ONLY: u32 = 26; -pub const IPV6_JOIN_ANYCAST: u32 = 27; -pub const IPV6_LEAVE_ANYCAST: u32 = 28; -pub const IPV6_MULTICAST_ALL: u32 = 29; -pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; -pub const IPV6_RECVERR_RFC4884: u32 = 31; -pub const IPV6_PMTUDISC_DONT: u32 = 0; -pub const IPV6_PMTUDISC_WANT: u32 = 1; -pub const IPV6_PMTUDISC_DO: u32 = 2; -pub const IPV6_PMTUDISC_PROBE: u32 = 3; -pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; -pub const IPV6_PMTUDISC_OMIT: u32 = 5; -pub const IPV6_FLOWLABEL_MGR: u32 = 32; -pub const IPV6_FLOWINFO_SEND: u32 = 33; -pub const IPV6_IPSEC_POLICY: u32 = 34; -pub const IPV6_XFRM_POLICY: u32 = 35; -pub const IPV6_HDRINCL: u32 = 36; -pub const IPV6_RECVPKTINFO: u32 = 49; -pub const IPV6_PKTINFO: u32 = 50; -pub const IPV6_RECVHOPLIMIT: u32 = 51; -pub const IPV6_HOPLIMIT: u32 = 52; -pub const IPV6_RECVHOPOPTS: u32 = 53; -pub const IPV6_HOPOPTS: u32 = 54; -pub const IPV6_RTHDRDSTOPTS: u32 = 55; -pub const IPV6_RECVRTHDR: u32 = 56; -pub const IPV6_RTHDR: u32 = 57; -pub const IPV6_RECVDSTOPTS: u32 = 58; -pub const IPV6_DSTOPTS: u32 = 59; -pub const IPV6_RECVPATHMTU: u32 = 60; -pub const IPV6_PATHMTU: u32 = 61; -pub const IPV6_DONTFRAG: u32 = 62; -pub const IPV6_RECVTCLASS: u32 = 66; -pub const IPV6_TCLASS: u32 = 67; -pub const IPV6_AUTOFLOWLABEL: u32 = 70; -pub const IPV6_ADDR_PREFERENCES: u32 = 72; -pub const IPV6_PREFER_SRC_TMP: u32 = 1; -pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; -pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; -pub const IPV6_PREFER_SRC_COA: u32 = 4; -pub const IPV6_PREFER_SRC_HOME: u32 = 1024; -pub const IPV6_PREFER_SRC_CGA: u32 = 8; -pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; -pub const IPV6_MINHOPCOUNT: u32 = 73; -pub const IPV6_ORIGDSTADDR: u32 = 74; -pub const IPV6_RECVORIGDSTADDR: u32 = 74; -pub const IPV6_TRANSPARENT: u32 = 75; -pub const IPV6_UNICAST_IF: u32 = 76; -pub const IPV6_RECVFRAGSIZE: u32 = 77; -pub const IPV6_FREEBIND: u32 = 78; -pub const IPV6_MIN_MTU: u32 = 1280; -pub const IPV6_SRCRT_STRICT: u32 = 1; -pub const IPV6_SRCRT_TYPE_0: u32 = 0; -pub const IPV6_SRCRT_TYPE_2: u32 = 2; -pub const IPV6_SRCRT_TYPE_3: u32 = 3; -pub const IPV6_SRCRT_TYPE_4: u32 = 4; -pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; -pub const ADFS_SUPER_MAGIC: u32 = 44533; -pub const AFFS_SUPER_MAGIC: u32 = 44543; -pub const AFS_SUPER_MAGIC: u32 = 1397113167; -pub const AUTOFS_SUPER_MAGIC: u32 = 391; -pub const CEPH_SUPER_MAGIC: u32 = 12805120; -pub const CODA_SUPER_MAGIC: u32 = 1937076805; -pub const CRAMFS_MAGIC: u32 = 684539205; -pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; -pub const DEBUGFS_MAGIC: u32 = 1684170528; -pub const SECURITYFS_MAGIC: u32 = 1935894131; -pub const SELINUX_MAGIC: u32 = 4185718668; -pub const SMACK_MAGIC: u32 = 1128357203; -pub const RAMFS_MAGIC: u32 = 2240043254; -pub const TMPFS_MAGIC: u32 = 16914836; -pub const HUGETLBFS_MAGIC: u32 = 2508478710; -pub const SQUASHFS_MAGIC: u32 = 1936814952; -pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; -pub const EFS_SUPER_MAGIC: u32 = 4278867; -pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; -pub const EXT2_SUPER_MAGIC: u32 = 61267; -pub const EXT3_SUPER_MAGIC: u32 = 61267; -pub const XENFS_SUPER_MAGIC: u32 = 2881100148; -pub const EXT4_SUPER_MAGIC: u32 = 61267; -pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; -pub const NILFS_SUPER_MAGIC: u32 = 13364; -pub const F2FS_SUPER_MAGIC: u32 = 4076150800; -pub const HPFS_SUPER_MAGIC: u32 = 4187351113; -pub const ISOFS_SUPER_MAGIC: u32 = 38496; -pub const JFFS2_SUPER_MAGIC: u32 = 29366; -pub const XFS_SUPER_MAGIC: u32 = 1481003842; -pub const PSTOREFS_MAGIC: u32 = 1634035564; -pub const EFIVARFS_MAGIC: u32 = 3730735588; -pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; -pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; -pub const FUSE_SUPER_MAGIC: u32 = 1702057286; -pub const MINIX_SUPER_MAGIC: u32 = 4991; -pub const MINIX_SUPER_MAGIC2: u32 = 5007; -pub const MINIX2_SUPER_MAGIC: u32 = 9320; -pub const MINIX2_SUPER_MAGIC2: u32 = 9336; -pub const MINIX3_SUPER_MAGIC: u32 = 19802; -pub const MSDOS_SUPER_MAGIC: u32 = 19780; -pub const EXFAT_SUPER_MAGIC: u32 = 538032816; -pub const NCP_SUPER_MAGIC: u32 = 22092; -pub const NFS_SUPER_MAGIC: u32 = 26985; -pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; -pub const OPENPROM_SUPER_MAGIC: u32 = 40865; -pub const QNX4_SUPER_MAGIC: u32 = 47; -pub const QNX6_SUPER_MAGIC: u32 = 1746473250; -pub const AFS_FS_MAGIC: u32 = 1799439955; -pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; -pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0"; -pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0"; -pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0"; -pub const SMB_SUPER_MAGIC: u32 = 20859; -pub const CIFS_SUPER_MAGIC: u32 = 4283649346; -pub const SMB2_SUPER_MAGIC: u32 = 4266872130; -pub const CGROUP_SUPER_MAGIC: u32 = 2613483; -pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; -pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; -pub const STACK_END_MAGIC: u32 = 1470918301; -pub const TRACEFS_MAGIC: u32 = 1953653091; -pub const V9FS_MAGIC: u32 = 16914839; -pub const BDEVFS_MAGIC: u32 = 1650746742; -pub const DAXFS_MAGIC: u32 = 1684300152; -pub const BINFMTFS_MAGIC: u32 = 1112100429; -pub const DEVPTS_SUPER_MAGIC: u32 = 7377; -pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; -pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; -pub const PIPEFS_MAGIC: u32 = 1346981957; -pub const PROC_SUPER_MAGIC: u32 = 40864; -pub const SOCKFS_MAGIC: u32 = 1397703499; -pub const SYSFS_MAGIC: u32 = 1650812274; -pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; -pub const MTD_INODE_FS_MAGIC: u32 = 288389204; -pub const ANON_INODE_FS_MAGIC: u32 = 151263540; -pub const BTRFS_TEST_MAGIC: u32 = 1936880249; -pub const NSFS_MAGIC: u32 = 1853056627; -pub const BPF_FS_MAGIC: u32 = 3405662737; -pub const AAFS_MAGIC: u32 = 1513908720; -pub const ZONEFS_MAGIC: u32 = 1515144787; -pub const UDF_SUPER_MAGIC: u32 = 352400198; -pub const DMA_BUF_MAGIC: u32 = 1145913666; -pub const DEVMEM_MAGIC: u32 = 1162691661; -pub const SECRETMEM_MAGIC: u32 = 1397048141; -pub const PROT_READ: u32 = 1; -pub const PROT_WRITE: u32 = 2; -pub const PROT_EXEC: u32 = 4; -pub const PROT_SEM: u32 = 8; -pub const PROT_NONE: u32 = 0; -pub const PROT_GROWSDOWN: u32 = 16777216; -pub const PROT_GROWSUP: u32 = 33554432; -pub const MAP_TYPE: u32 = 15; -pub const MAP_FIXED: u32 = 16; -pub const MAP_ANONYMOUS: u32 = 32; -pub const MAP_POPULATE: u32 = 32768; -pub const MAP_NONBLOCK: u32 = 65536; -pub const MAP_STACK: u32 = 131072; -pub const MAP_HUGETLB: u32 = 262144; -pub const MAP_SYNC: u32 = 524288; -pub const MAP_FIXED_NOREPLACE: u32 = 1048576; -pub const MAP_UNINITIALIZED: u32 = 67108864; -pub const MLOCK_ONFAULT: u32 = 1; -pub const MS_ASYNC: u32 = 1; -pub const MS_INVALIDATE: u32 = 2; -pub const MS_SYNC: u32 = 4; -pub const MADV_NORMAL: u32 = 0; -pub const MADV_RANDOM: u32 = 1; -pub const MADV_SEQUENTIAL: u32 = 2; -pub const MADV_WILLNEED: u32 = 3; -pub const MADV_DONTNEED: u32 = 4; -pub const MADV_FREE: u32 = 8; -pub const MADV_REMOVE: u32 = 9; -pub const MADV_DONTFORK: u32 = 10; -pub const MADV_DOFORK: u32 = 11; -pub const MADV_HWPOISON: u32 = 100; -pub const MADV_SOFT_OFFLINE: u32 = 101; -pub const MADV_MERGEABLE: u32 = 12; -pub const MADV_UNMERGEABLE: u32 = 13; -pub const MADV_HUGEPAGE: u32 = 14; -pub const MADV_NOHUGEPAGE: u32 = 15; -pub const MADV_DONTDUMP: u32 = 16; -pub const MADV_DODUMP: u32 = 17; -pub const MADV_WIPEONFORK: u32 = 18; -pub const MADV_KEEPONFORK: u32 = 19; -pub const MADV_COLD: u32 = 20; -pub const MADV_PAGEOUT: u32 = 21; -pub const MADV_POPULATE_READ: u32 = 22; -pub const MADV_POPULATE_WRITE: u32 = 23; -pub const MADV_DONTNEED_LOCKED: u32 = 24; -pub const MADV_COLLAPSE: u32 = 25; -pub const MAP_FILE: u32 = 0; -pub const PKEY_DISABLE_ACCESS: u32 = 1; -pub const PKEY_DISABLE_WRITE: u32 = 2; -pub const PKEY_ACCESS_MASK: u32 = 3; -pub const PROT_ADI: u32 = 16; -pub const MAP_RENAME: u32 = 32; -pub const MAP_NORESERVE: u32 = 64; -pub const MAP_INHERIT: u32 = 128; -pub const MAP_LOCKED: u32 = 256; -pub const _MAP_NEW: u32 = 2147483648; -pub const MAP_GROWSDOWN: u32 = 512; -pub const MAP_DENYWRITE: u32 = 2048; -pub const MAP_EXECUTABLE: u32 = 4096; -pub const MCL_CURRENT: u32 = 8192; -pub const MCL_FUTURE: u32 = 16384; -pub const MCL_ONFAULT: u32 = 32768; -pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; -pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; -pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; -pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; -pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; -pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; -pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; -pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; -pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; -pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; -pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; -pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; -pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; -pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; -pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; -pub const MREMAP_MAYMOVE: u32 = 1; -pub const MREMAP_FIXED: u32 = 2; -pub const MREMAP_DONTUNMAP: u32 = 4; -pub const OVERCOMMIT_GUESS: u32 = 0; -pub const OVERCOMMIT_ALWAYS: u32 = 1; -pub const OVERCOMMIT_NEVER: u32 = 2; -pub const MAP_SHARED: u32 = 1; -pub const MAP_PRIVATE: u32 = 2; -pub const MAP_SHARED_VALIDATE: u32 = 3; -pub const MAP_HUGE_SHIFT: u32 = 26; -pub const MAP_HUGE_MASK: u32 = 63; -pub const MAP_HUGE_16KB: u32 = 939524096; -pub const MAP_HUGE_64KB: u32 = 1073741824; -pub const MAP_HUGE_512KB: u32 = 1275068416; -pub const MAP_HUGE_1MB: u32 = 1342177280; -pub const MAP_HUGE_2MB: u32 = 1409286144; -pub const MAP_HUGE_8MB: u32 = 1543503872; -pub const MAP_HUGE_16MB: u32 = 1610612736; -pub const MAP_HUGE_32MB: u32 = 1677721600; -pub const MAP_HUGE_256MB: u32 = 1879048192; -pub const MAP_HUGE_512MB: u32 = 1946157056; -pub const MAP_HUGE_1GB: u32 = 2013265920; -pub const MAP_HUGE_2GB: u32 = 2080374784; -pub const MAP_HUGE_16GB: u32 = 2281701376; -pub const SIOCGSTAMP_OLD: u32 = 35078; -pub const SIOCGSTAMPNS_OLD: u32 = 35079; -pub const SOL_SOCKET: u32 = 65535; -pub const SO_DEBUG: u32 = 1; -pub const SO_PASSCRED: u32 = 2; -pub const SO_REUSEADDR: u32 = 4; -pub const SO_KEEPALIVE: u32 = 8; -pub const SO_DONTROUTE: u32 = 16; -pub const SO_BROADCAST: u32 = 32; -pub const SO_PEERCRED: u32 = 64; -pub const SO_LINGER: u32 = 128; -pub const SO_OOBINLINE: u32 = 256; -pub const SO_REUSEPORT: u32 = 512; -pub const SO_BSDCOMPAT: u32 = 1024; -pub const SO_RCVLOWAT: u32 = 2048; -pub const SO_SNDLOWAT: u32 = 4096; -pub const SO_RCVTIMEO_OLD: u32 = 8192; -pub const SO_SNDTIMEO_OLD: u32 = 16384; -pub const SO_ACCEPTCONN: u32 = 32768; -pub const SO_SNDBUF: u32 = 4097; -pub const SO_RCVBUF: u32 = 4098; -pub const SO_SNDBUFFORCE: u32 = 4106; -pub const SO_RCVBUFFORCE: u32 = 4107; -pub const SO_ERROR: u32 = 4103; -pub const SO_TYPE: u32 = 4104; -pub const SO_PROTOCOL: u32 = 4136; -pub const SO_DOMAIN: u32 = 4137; -pub const SO_NO_CHECK: u32 = 11; -pub const SO_PRIORITY: u32 = 12; -pub const SO_BINDTODEVICE: u32 = 13; -pub const SO_ATTACH_FILTER: u32 = 26; -pub const SO_DETACH_FILTER: u32 = 27; -pub const SO_GET_FILTER: u32 = 26; -pub const SO_PEERNAME: u32 = 28; -pub const SO_PEERSEC: u32 = 30; -pub const SO_PASSSEC: u32 = 31; -pub const SO_MARK: u32 = 34; -pub const SO_RXQ_OVFL: u32 = 36; -pub const SO_WIFI_STATUS: u32 = 37; -pub const SCM_WIFI_STATUS: u32 = 37; -pub const SO_PEEK_OFF: u32 = 38; -pub const SO_NOFCS: u32 = 39; -pub const SO_LOCK_FILTER: u32 = 40; -pub const SO_SELECT_ERR_QUEUE: u32 = 41; -pub const SO_BUSY_POLL: u32 = 48; -pub const SO_MAX_PACING_RATE: u32 = 49; -pub const SO_BPF_EXTENSIONS: u32 = 50; -pub const SO_INCOMING_CPU: u32 = 51; -pub const SO_ATTACH_BPF: u32 = 52; -pub const SO_DETACH_BPF: u32 = 27; -pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 53; -pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 54; -pub const SO_CNX_ADVICE: u32 = 55; -pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 56; -pub const SO_MEMINFO: u32 = 57; -pub const SO_INCOMING_NAPI_ID: u32 = 58; -pub const SO_COOKIE: u32 = 59; -pub const SCM_TIMESTAMPING_PKTINFO: u32 = 60; -pub const SO_PEERGROUPS: u32 = 61; -pub const SO_ZEROCOPY: u32 = 62; -pub const SO_TXTIME: u32 = 63; -pub const SCM_TXTIME: u32 = 63; -pub const SO_BINDTOIFINDEX: u32 = 65; -pub const SO_SECURITY_AUTHENTICATION: u32 = 20481; -pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 20482; -pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 20484; -pub const SO_TIMESTAMP_OLD: u32 = 29; -pub const SO_TIMESTAMPNS_OLD: u32 = 33; -pub const SO_TIMESTAMPING_OLD: u32 = 35; -pub const SO_TIMESTAMP_NEW: u32 = 70; -pub const SO_TIMESTAMPNS_NEW: u32 = 66; -pub const SO_TIMESTAMPING_NEW: u32 = 67; -pub const SO_RCVTIMEO_NEW: u32 = 68; -pub const SO_SNDTIMEO_NEW: u32 = 69; -pub const SO_DETACH_REUSEPORT_BPF: u32 = 71; -pub const SO_PREFER_BUSY_POLL: u32 = 72; -pub const SO_BUSY_POLL_BUDGET: u32 = 73; -pub const SO_NETNS_COOKIE: u32 = 80; -pub const SO_BUF_LOCK: u32 = 81; -pub const SO_RESERVE_MEM: u32 = 82; -pub const SO_TXREHASH: u32 = 83; -pub const SO_RCVMARK: u32 = 84; -pub const SYS_SOCKET: u32 = 1; -pub const SYS_BIND: u32 = 2; -pub const SYS_CONNECT: u32 = 3; -pub const SYS_LISTEN: u32 = 4; -pub const SYS_ACCEPT: u32 = 5; -pub const SYS_GETSOCKNAME: u32 = 6; -pub const SYS_GETPEERNAME: u32 = 7; -pub const SYS_SOCKETPAIR: u32 = 8; -pub const SYS_SEND: u32 = 9; -pub const SYS_RECV: u32 = 10; -pub const SYS_SENDTO: u32 = 11; -pub const SYS_RECVFROM: u32 = 12; -pub const SYS_SHUTDOWN: u32 = 13; -pub const SYS_SETSOCKOPT: u32 = 14; -pub const SYS_GETSOCKOPT: u32 = 15; -pub const SYS_SENDMSG: u32 = 16; -pub const SYS_RECVMSG: u32 = 17; -pub const SYS_ACCEPT4: u32 = 18; -pub const SYS_RECVMMSG: u32 = 19; -pub const SYS_SENDMMSG: u32 = 20; -pub const __SO_ACCEPTCON: u32 = 65536; -pub const POLLWRBAND: u32 = 256; -pub const POLLMSG: u32 = 512; -pub const POLLREMOVE: u32 = 1024; -pub const POLLRDHUP: u32 = 2048; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const PR_SET_PDEATHSIG: u32 = 1; -pub const PR_GET_PDEATHSIG: u32 = 2; -pub const PR_GET_DUMPABLE: u32 = 3; -pub const PR_SET_DUMPABLE: u32 = 4; -pub const PR_GET_UNALIGN: u32 = 5; -pub const PR_SET_UNALIGN: u32 = 6; -pub const PR_UNALIGN_NOPRINT: u32 = 1; -pub const PR_UNALIGN_SIGBUS: u32 = 2; -pub const PR_GET_KEEPCAPS: u32 = 7; -pub const PR_SET_KEEPCAPS: u32 = 8; -pub const PR_GET_FPEMU: u32 = 9; -pub const PR_SET_FPEMU: u32 = 10; -pub const PR_FPEMU_NOPRINT: u32 = 1; -pub const PR_FPEMU_SIGFPE: u32 = 2; -pub const PR_GET_FPEXC: u32 = 11; -pub const PR_SET_FPEXC: u32 = 12; -pub const PR_FP_EXC_SW_ENABLE: u32 = 128; -pub const PR_FP_EXC_DIV: u32 = 65536; -pub const PR_FP_EXC_OVF: u32 = 131072; -pub const PR_FP_EXC_UND: u32 = 262144; -pub const PR_FP_EXC_RES: u32 = 524288; -pub const PR_FP_EXC_INV: u32 = 1048576; -pub const PR_FP_EXC_DISABLED: u32 = 0; -pub const PR_FP_EXC_NONRECOV: u32 = 1; -pub const PR_FP_EXC_ASYNC: u32 = 2; -pub const PR_FP_EXC_PRECISE: u32 = 3; -pub const PR_GET_TIMING: u32 = 13; -pub const PR_SET_TIMING: u32 = 14; -pub const PR_TIMING_STATISTICAL: u32 = 0; -pub const PR_TIMING_TIMESTAMP: u32 = 1; -pub const PR_SET_NAME: u32 = 15; -pub const PR_GET_NAME: u32 = 16; -pub const PR_GET_ENDIAN: u32 = 19; -pub const PR_SET_ENDIAN: u32 = 20; -pub const PR_ENDIAN_BIG: u32 = 0; -pub const PR_ENDIAN_LITTLE: u32 = 1; -pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; -pub const PR_GET_SECCOMP: u32 = 21; -pub const PR_SET_SECCOMP: u32 = 22; -pub const PR_CAPBSET_READ: u32 = 23; -pub const PR_CAPBSET_DROP: u32 = 24; -pub const PR_GET_TSC: u32 = 25; -pub const PR_SET_TSC: u32 = 26; -pub const PR_TSC_ENABLE: u32 = 1; -pub const PR_TSC_SIGSEGV: u32 = 2; -pub const PR_GET_SECUREBITS: u32 = 27; -pub const PR_SET_SECUREBITS: u32 = 28; -pub const PR_SET_TIMERSLACK: u32 = 29; -pub const PR_GET_TIMERSLACK: u32 = 30; -pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; -pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; -pub const PR_MCE_KILL: u32 = 33; -pub const PR_MCE_KILL_CLEAR: u32 = 0; -pub const PR_MCE_KILL_SET: u32 = 1; -pub const PR_MCE_KILL_LATE: u32 = 0; -pub const PR_MCE_KILL_EARLY: u32 = 1; -pub const PR_MCE_KILL_DEFAULT: u32 = 2; -pub const PR_MCE_KILL_GET: u32 = 34; -pub const PR_SET_MM: u32 = 35; -pub const PR_SET_MM_START_CODE: u32 = 1; -pub const PR_SET_MM_END_CODE: u32 = 2; -pub const PR_SET_MM_START_DATA: u32 = 3; -pub const PR_SET_MM_END_DATA: u32 = 4; -pub const PR_SET_MM_START_STACK: u32 = 5; -pub const PR_SET_MM_START_BRK: u32 = 6; -pub const PR_SET_MM_BRK: u32 = 7; -pub const PR_SET_MM_ARG_START: u32 = 8; -pub const PR_SET_MM_ARG_END: u32 = 9; -pub const PR_SET_MM_ENV_START: u32 = 10; -pub const PR_SET_MM_ENV_END: u32 = 11; -pub const PR_SET_MM_AUXV: u32 = 12; -pub const PR_SET_MM_EXE_FILE: u32 = 13; -pub const PR_SET_MM_MAP: u32 = 14; -pub const PR_SET_MM_MAP_SIZE: u32 = 15; -pub const PR_SET_PTRACER: u32 = 1499557217; -pub const PR_SET_CHILD_SUBREAPER: u32 = 36; -pub const PR_GET_CHILD_SUBREAPER: u32 = 37; -pub const PR_SET_NO_NEW_PRIVS: u32 = 38; -pub const PR_GET_NO_NEW_PRIVS: u32 = 39; -pub const PR_GET_TID_ADDRESS: u32 = 40; -pub const PR_SET_THP_DISABLE: u32 = 41; -pub const PR_GET_THP_DISABLE: u32 = 42; -pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; -pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; -pub const PR_SET_FP_MODE: u32 = 45; -pub const PR_GET_FP_MODE: u32 = 46; -pub const PR_FP_MODE_FR: u32 = 1; -pub const PR_FP_MODE_FRE: u32 = 2; -pub const PR_CAP_AMBIENT: u32 = 47; -pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; -pub const PR_CAP_AMBIENT_RAISE: u32 = 2; -pub const PR_CAP_AMBIENT_LOWER: u32 = 3; -pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; -pub const PR_SVE_SET_VL: u32 = 50; -pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SVE_GET_VL: u32 = 51; -pub const PR_SVE_VL_LEN_MASK: u32 = 65535; -pub const PR_SVE_VL_INHERIT: u32 = 131072; -pub const PR_GET_SPECULATION_CTRL: u32 = 52; -pub const PR_SET_SPECULATION_CTRL: u32 = 53; -pub const PR_SPEC_STORE_BYPASS: u32 = 0; -pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; -pub const PR_SPEC_L1D_FLUSH: u32 = 2; -pub const PR_SPEC_NOT_AFFECTED: u32 = 0; -pub const PR_SPEC_PRCTL: u32 = 1; -pub const PR_SPEC_ENABLE: u32 = 2; -pub const PR_SPEC_DISABLE: u32 = 4; -pub const PR_SPEC_FORCE_DISABLE: u32 = 8; -pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; -pub const PR_PAC_RESET_KEYS: u32 = 54; -pub const PR_PAC_APIAKEY: u32 = 1; -pub const PR_PAC_APIBKEY: u32 = 2; -pub const PR_PAC_APDAKEY: u32 = 4; -pub const PR_PAC_APDBKEY: u32 = 8; -pub const PR_PAC_APGAKEY: u32 = 16; -pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; -pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; -pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; -pub const PR_MTE_TCF_NONE: u32 = 0; -pub const PR_MTE_TCF_SYNC: u32 = 2; -pub const PR_MTE_TCF_ASYNC: u32 = 4; -pub const PR_MTE_TCF_MASK: u32 = 6; -pub const PR_MTE_TAG_SHIFT: u32 = 3; -pub const PR_MTE_TAG_MASK: u32 = 524280; -pub const PR_MTE_TCF_SHIFT: u32 = 1; -pub const PR_SET_IO_FLUSHER: u32 = 57; -pub const PR_GET_IO_FLUSHER: u32 = 58; -pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; -pub const PR_SYS_DISPATCH_OFF: u32 = 0; -pub const PR_SYS_DISPATCH_ON: u32 = 1; -pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; -pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; -pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; -pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; -pub const PR_SCHED_CORE: u32 = 62; -pub const PR_SCHED_CORE_GET: u32 = 0; -pub const PR_SCHED_CORE_CREATE: u32 = 1; -pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; -pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; -pub const PR_SCHED_CORE_MAX: u32 = 4; -pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; -pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; -pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; -pub const PR_SME_SET_VL: u32 = 63; -pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SME_GET_VL: u32 = 64; -pub const PR_SME_VL_LEN_MASK: u32 = 65535; -pub const PR_SME_VL_INHERIT: u32 = 131072; -pub const PR_SET_MDWE: u32 = 65; -pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; -pub const PR_GET_MDWE: u32 = 66; -pub const PR_SET_VMA: u32 = 1398164801; -pub const PR_SET_VMA_ANON_NAME: u32 = 0; -pub const GRND_NONBLOCK: u32 = 1; -pub const GRND_RANDOM: u32 = 2; -pub const GRND_INSECURE: u32 = 4; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -pub const CLOCK_REALTIME: u32 = 0; -pub const CLOCK_MONOTONIC: u32 = 1; -pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; -pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; -pub const CLOCK_MONOTONIC_RAW: u32 = 4; -pub const CLOCK_REALTIME_COARSE: u32 = 5; -pub const CLOCK_MONOTONIC_COARSE: u32 = 6; -pub const CLOCK_BOOTTIME: u32 = 7; -pub const CLOCK_REALTIME_ALARM: u32 = 8; -pub const CLOCK_BOOTTIME_ALARM: u32 = 9; -pub const CLOCK_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const RUSAGE_SELF: u32 = 0; -pub const RUSAGE_CHILDREN: i32 = -1; -pub const RUSAGE_BOTH: i32 = -2; -pub const RUSAGE_THREAD: u32 = 1; -pub const RLIM64_INFINITY: i32 = -1; -pub const PRIO_MIN: i32 = -20; -pub const PRIO_MAX: u32 = 20; -pub const PRIO_PROCESS: u32 = 0; -pub const PRIO_PGRP: u32 = 1; -pub const PRIO_USER: u32 = 2; -pub const _STK_LIM: u32 = 8388608; -pub const MLOCK_LIMIT: u32 = 8388608; -pub const RLIMIT_NOFILE: u32 = 6; -pub const RLIMIT_NPROC: u32 = 7; -pub const RLIM_INFINITY: u32 = 2147483647; -pub const RLIMIT_CPU: u32 = 0; -pub const RLIMIT_FSIZE: u32 = 1; -pub const RLIMIT_DATA: u32 = 2; -pub const RLIMIT_STACK: u32 = 3; -pub const RLIMIT_CORE: u32 = 4; -pub const RLIMIT_RSS: u32 = 5; -pub const RLIMIT_MEMLOCK: u32 = 8; -pub const RLIMIT_AS: u32 = 9; -pub const RLIMIT_LOCKS: u32 = 10; -pub const RLIMIT_SIGPENDING: u32 = 11; -pub const RLIMIT_MSGQUEUE: u32 = 12; -pub const RLIMIT_NICE: u32 = 13; -pub const RLIMIT_RTPRIO: u32 = 14; -pub const RLIMIT_RTTIME: u32 = 15; -pub const RLIM_NLIMITS: u32 = 16; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SUBSIG_STACK: u32 = 0; -pub const SUBSIG_ILLINST: u32 = 2; -pub const SUBSIG_PRIVINST: u32 = 3; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGEMT: u32 = 7; -pub const SUBSIG_TAG: u32 = 10; -pub const SIGFPE: u32 = 8; -pub const SUBSIG_FPDISABLED: u32 = 1024; -pub const SUBSIG_FPERROR: u32 = 1028; -pub const SUBSIG_FPINTOVFL: u32 = 1; -pub const SUBSIG_FPSTSIG: u32 = 2; -pub const SUBSIG_IDIVZERO: u32 = 20; -pub const SUBSIG_FPINEXACT: u32 = 196; -pub const SUBSIG_FPDIVZERO: u32 = 200; -pub const SUBSIG_FPUNFLOW: u32 = 204; -pub const SUBSIG_FPOPERROR: u32 = 208; -pub const SUBSIG_FPOVFLOW: u32 = 212; -pub const SIGKILL: u32 = 9; -pub const SIGBUS: u32 = 10; -pub const SUBSIG_BUSTIMEOUT: u32 = 1; -pub const SUBSIG_ALIGNMENT: u32 = 2; -pub const SUBSIG_MISCERROR: u32 = 5; -pub const SIGSEGV: u32 = 11; -pub const SUBSIG_NOMAPPING: u32 = 3; -pub const SUBSIG_PROTECTION: u32 = 4; -pub const SUBSIG_SEGERROR: u32 = 5; -pub const SIGSYS: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGURG: u32 = 16; -pub const SIGSTOP: u32 = 17; -pub const SIGTSTP: u32 = 18; -pub const SIGCONT: u32 = 19; -pub const SIGCHLD: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGIO: u32 = 23; -pub const SIGPOLL: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGLOST: u32 = 29; -pub const SIGPWR: u32 = 29; -pub const SIGUSR1: u32 = 30; -pub const SIGUSR2: u32 = 31; -pub const __OLD_NSIG: u32 = 32; -pub const __NEW_NSIG: u32 = 64; -pub const _NSIG_BPW: u32 = 32; -pub const _NSIG_WORDS: u32 = 2; -pub const SIGRTMIN: u32 = 32; -pub const SIGRTMAX: u32 = 64; -pub const _NSIG: u32 = 32; -pub const NSIG: u32 = 32; -pub const _SV_SSTACK: u32 = 1; -pub const _SV_INTR: u32 = 2; -pub const _SV_RESET: u32 = 4; -pub const _SV_IGNCHILD: u32 = 8; -pub const SA_NOCLDSTOP: u32 = 8; -pub const SA_STACK: u32 = 1; -pub const SA_ONSTACK: u32 = 1; -pub const SA_RESTART: u32 = 2; -pub const SA_RESETHAND: u32 = 4; -pub const SA_NODEFER: u32 = 32; -pub const SA_NOCLDWAIT: u32 = 256; -pub const SA_SIGINFO: u32 = 512; -pub const SIG_BLOCK: u32 = 1; -pub const SIG_UNBLOCK: u32 = 2; -pub const SIG_SETMASK: u32 = 4; -pub const MINSIGSTKSZ: u32 = 4096; -pub const SIGSTKSZ: u32 = 16384; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; -pub const SA_NOMASK: u32 = 32; -pub const SA_ONESHOT: u32 = 4; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; -pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SI_NOINFO: u32 = 32767; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const S_IFMT: u32 = 61440; -pub const S_IFSOCK: u32 = 49152; -pub const S_IFLNK: u32 = 40960; -pub const S_IFREG: u32 = 32768; -pub const S_IFBLK: u32 = 24576; -pub const S_IFDIR: u32 = 16384; -pub const S_IFCHR: u32 = 8192; -pub const S_IFIFO: u32 = 4096; -pub const S_ISUID: u32 = 2048; -pub const S_ISGID: u32 = 1024; -pub const S_ISVTX: u32 = 512; -pub const S_IRWXU: u32 = 448; -pub const S_IRUSR: u32 = 256; -pub const S_IWUSR: u32 = 128; -pub const S_IXUSR: u32 = 64; -pub const S_IRWXG: u32 = 56; -pub const S_IRGRP: u32 = 32; -pub const S_IWGRP: u32 = 16; -pub const S_IXGRP: u32 = 8; -pub const S_IRWXO: u32 = 7; -pub const S_IROTH: u32 = 4; -pub const S_IWOTH: u32 = 2; -pub const S_IXOTH: u32 = 1; -pub const STATX_TYPE: u32 = 1; -pub const STATX_MODE: u32 = 2; -pub const STATX_NLINK: u32 = 4; -pub const STATX_UID: u32 = 8; -pub const STATX_GID: u32 = 16; -pub const STATX_ATIME: u32 = 32; -pub const STATX_MTIME: u32 = 64; -pub const STATX_CTIME: u32 = 128; -pub const STATX_INO: u32 = 256; -pub const STATX_SIZE: u32 = 512; -pub const STATX_BLOCKS: u32 = 1024; -pub const STATX_BASIC_STATS: u32 = 2047; -pub const STATX_BTIME: u32 = 2048; -pub const STATX_MNT_ID: u32 = 4096; -pub const STATX_DIOALIGN: u32 = 8192; -pub const STATX__RESERVED: u32 = 2147483648; -pub const STATX_ALL: u32 = 4095; -pub const STATX_ATTR_COMPRESSED: u32 = 4; -pub const STATX_ATTR_IMMUTABLE: u32 = 16; -pub const STATX_ATTR_APPEND: u32 = 32; -pub const STATX_ATTR_NODUMP: u32 = 64; -pub const STATX_ATTR_ENCRYPTED: u32 = 2048; -pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; -pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; -pub const STATX_ATTR_VERITY: u32 = 1048576; -pub const STATX_ATTR_DAX: u32 = 2097152; -pub const SI_LOAD_SHIFT: u32 = 16; -pub const TCP_MSS_DEFAULT: u32 = 536; -pub const TCP_MSS_DESIRED: u32 = 1220; -pub const TCP_NODELAY: u32 = 1; -pub const TCP_MAXSEG: u32 = 2; -pub const TCP_CORK: u32 = 3; -pub const TCP_KEEPIDLE: u32 = 4; -pub const TCP_KEEPINTVL: u32 = 5; -pub const TCP_KEEPCNT: u32 = 6; -pub const TCP_SYNCNT: u32 = 7; -pub const TCP_LINGER2: u32 = 8; -pub const TCP_DEFER_ACCEPT: u32 = 9; -pub const TCP_WINDOW_CLAMP: u32 = 10; -pub const TCP_INFO: u32 = 11; -pub const TCP_QUICKACK: u32 = 12; -pub const TCP_CONGESTION: u32 = 13; -pub const TCP_MD5SIG: u32 = 14; -pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; -pub const TCP_THIN_DUPACK: u32 = 17; -pub const TCP_USER_TIMEOUT: u32 = 18; -pub const TCP_REPAIR: u32 = 19; -pub const TCP_REPAIR_QUEUE: u32 = 20; -pub const TCP_QUEUE_SEQ: u32 = 21; -pub const TCP_REPAIR_OPTIONS: u32 = 22; -pub const TCP_FASTOPEN: u32 = 23; -pub const TCP_TIMESTAMP: u32 = 24; -pub const TCP_NOTSENT_LOWAT: u32 = 25; -pub const TCP_CC_INFO: u32 = 26; -pub const TCP_SAVE_SYN: u32 = 27; -pub const TCP_SAVED_SYN: u32 = 28; -pub const TCP_REPAIR_WINDOW: u32 = 29; -pub const TCP_FASTOPEN_CONNECT: u32 = 30; -pub const TCP_ULP: u32 = 31; -pub const TCP_MD5SIG_EXT: u32 = 32; -pub const TCP_FASTOPEN_KEY: u32 = 33; -pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; -pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; -pub const TCP_INQ: u32 = 36; -pub const TCP_CM_INQ: u32 = 36; -pub const TCP_TX_DELAY: u32 = 37; -pub const TCP_REPAIR_ON: u32 = 1; -pub const TCP_REPAIR_OFF: u32 = 0; -pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; -pub const TCPI_OPT_TIMESTAMPS: u32 = 1; -pub const TCPI_OPT_SACK: u32 = 2; -pub const TCPI_OPT_WSCALE: u32 = 4; -pub const TCPI_OPT_ECN: u32 = 8; -pub const TCPI_OPT_ECN_SEEN: u32 = 16; -pub const TCPI_OPT_SYN_DATA: u32 = 32; -pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; -pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; -pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; -pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; -pub const TIOCPKT_DATA: u32 = 0; -pub const TIOCPKT_FLUSHREAD: u32 = 1; -pub const TIOCPKT_FLUSHWRITE: u32 = 2; -pub const TIOCPKT_STOP: u32 = 4; -pub const TIOCPKT_START: u32 = 8; -pub const TIOCPKT_NOSTOP: u32 = 16; -pub const TIOCPKT_DOSTOP: u32 = 32; -pub const TIOCPKT_IOCTL: u32 = 64; -pub const IGNBRK: u32 = 1; -pub const BRKINT: u32 = 2; -pub const IGNPAR: u32 = 4; -pub const PARMRK: u32 = 8; -pub const INPCK: u32 = 16; -pub const ISTRIP: u32 = 32; -pub const INLCR: u32 = 64; -pub const IGNCR: u32 = 128; -pub const ICRNL: u32 = 256; -pub const IXANY: u32 = 2048; -pub const OPOST: u32 = 1; -pub const OCRNL: u32 = 8; -pub const ONOCR: u32 = 16; -pub const ONLRET: u32 = 32; -pub const OFILL: u32 = 64; -pub const OFDEL: u32 = 128; -pub const B0: u32 = 0; -pub const B50: u32 = 1; -pub const B75: u32 = 2; -pub const B110: u32 = 3; -pub const B134: u32 = 4; -pub const B150: u32 = 5; -pub const B200: u32 = 6; -pub const B300: u32 = 7; -pub const B600: u32 = 8; -pub const B1200: u32 = 9; -pub const B1800: u32 = 10; -pub const B2400: u32 = 11; -pub const B4800: u32 = 12; -pub const B9600: u32 = 13; -pub const B19200: u32 = 14; -pub const B38400: u32 = 15; -pub const EXTA: u32 = 14; -pub const EXTB: u32 = 15; -pub const ADDRB: u32 = 536870912; -pub const CMSPAR: u32 = 1073741824; -pub const CRTSCTS: u32 = 2147483648; -pub const IBSHIFT: u32 = 16; -pub const TCOOFF: u32 = 0; -pub const TCOON: u32 = 1; -pub const TCIOFF: u32 = 2; -pub const TCION: u32 = 3; -pub const TCIFLUSH: u32 = 0; -pub const TCOFLUSH: u32 = 1; -pub const TCIOFLUSH: u32 = 2; -pub const NCC: u32 = 8; -pub const NCCS: u32 = 17; -pub const VINTR: u32 = 0; -pub const VQUIT: u32 = 1; -pub const VERASE: u32 = 2; -pub const VKILL: u32 = 3; -pub const VEOF: u32 = 4; -pub const VEOL: u32 = 5; -pub const VEOL2: u32 = 6; -pub const VSWTC: u32 = 7; -pub const VSTART: u32 = 8; -pub const VSTOP: u32 = 9; -pub const VSUSP: u32 = 10; -pub const VDSUSP: u32 = 11; -pub const VREPRINT: u32 = 12; -pub const VDISCARD: u32 = 13; -pub const VWERASE: u32 = 14; -pub const VLNEXT: u32 = 15; -pub const VMIN: u32 = 4; -pub const VTIME: u32 = 5; -pub const IUCLC: u32 = 512; -pub const IXON: u32 = 1024; -pub const IXOFF: u32 = 4096; -pub const IMAXBEL: u32 = 8192; -pub const IUTF8: u32 = 16384; -pub const OLCUC: u32 = 2; -pub const ONLCR: u32 = 4; -pub const NLDLY: u32 = 256; -pub const NL0: u32 = 0; -pub const NL1: u32 = 256; -pub const CRDLY: u32 = 1536; -pub const CR0: u32 = 0; -pub const CR1: u32 = 512; -pub const CR2: u32 = 1024; -pub const CR3: u32 = 1536; -pub const TABDLY: u32 = 6144; -pub const TAB0: u32 = 0; -pub const TAB1: u32 = 2048; -pub const TAB2: u32 = 4096; -pub const TAB3: u32 = 6144; -pub const XTABS: u32 = 6144; -pub const BSDLY: u32 = 8192; -pub const BS0: u32 = 0; -pub const BS1: u32 = 8192; -pub const VTDLY: u32 = 16384; -pub const VT0: u32 = 0; -pub const VT1: u32 = 16384; -pub const FFDLY: u32 = 32768; -pub const FF0: u32 = 0; -pub const FF1: u32 = 32768; -pub const PAGEOUT: u32 = 65536; -pub const WRAP: u32 = 131072; -pub const CBAUD: u32 = 4111; -pub const CSIZE: u32 = 48; -pub const CS5: u32 = 0; -pub const CS6: u32 = 16; -pub const CS7: u32 = 32; -pub const CS8: u32 = 48; -pub const CSTOPB: u32 = 64; -pub const CREAD: u32 = 128; -pub const PARENB: u32 = 256; -pub const PARODD: u32 = 512; -pub const HUPCL: u32 = 1024; -pub const CLOCAL: u32 = 2048; -pub const CBAUDEX: u32 = 4096; -pub const BOTHER: u32 = 4096; -pub const B57600: u32 = 4097; -pub const B115200: u32 = 4098; -pub const B230400: u32 = 4099; -pub const B460800: u32 = 4100; -pub const B76800: u32 = 4101; -pub const B153600: u32 = 4102; -pub const B307200: u32 = 4103; -pub const B614400: u32 = 4104; -pub const B921600: u32 = 4105; -pub const B500000: u32 = 4106; -pub const B576000: u32 = 4107; -pub const B1000000: u32 = 4108; -pub const B1152000: u32 = 4109; -pub const B1500000: u32 = 4110; -pub const B2000000: u32 = 4111; -pub const CIBAUD: u32 = 269418496; -pub const ISIG: u32 = 1; -pub const ICANON: u32 = 2; -pub const XCASE: u32 = 4; -pub const ECHO: u32 = 8; -pub const ECHOE: u32 = 16; -pub const ECHOK: u32 = 32; -pub const ECHONL: u32 = 64; -pub const NOFLSH: u32 = 128; -pub const TOSTOP: u32 = 256; -pub const ECHOCTL: u32 = 512; -pub const ECHOPRT: u32 = 1024; -pub const ECHOKE: u32 = 2048; -pub const DEFECHO: u32 = 4096; -pub const FLUSHO: u32 = 8192; -pub const PENDIN: u32 = 16384; -pub const IEXTEN: u32 = 32768; -pub const EXTPROC: u32 = 65536; -pub const TIOCM_LE: u32 = 1; -pub const TIOCM_DTR: u32 = 2; -pub const TIOCM_RTS: u32 = 4; -pub const TIOCM_ST: u32 = 8; -pub const TIOCM_SR: u32 = 16; -pub const TIOCM_CTS: u32 = 32; -pub const TIOCM_CAR: u32 = 64; -pub const TIOCM_RNG: u32 = 128; -pub const TIOCM_DSR: u32 = 256; -pub const TIOCM_CD: u32 = 64; -pub const TIOCM_RI: u32 = 128; -pub const TIOCM_OUT1: u32 = 8192; -pub const TIOCM_OUT2: u32 = 16384; -pub const TIOCM_LOOP: u32 = 32768; -pub const TIOCSER_TEMT: u32 = 1; -pub const TCSANOW: u32 = 0; -pub const TCSADRAIN: u32 = 1; -pub const TCSAFLUSH: u32 = 2; -pub const UIO_FASTIOV: u32 = 8; -pub const UIO_MAXIOV: u32 = 1024; -pub const UNIX_PATH_MAX: u32 = 108; -pub const __NR_restart_syscall: u32 = 0; -pub const __NR_exit: u32 = 1; -pub const __NR_fork: u32 = 2; -pub const __NR_read: u32 = 3; -pub const __NR_write: u32 = 4; -pub const __NR_open: u32 = 5; -pub const __NR_close: u32 = 6; -pub const __NR_wait4: u32 = 7; -pub const __NR_creat: u32 = 8; -pub const __NR_link: u32 = 9; -pub const __NR_unlink: u32 = 10; -pub const __NR_execv: u32 = 11; -pub const __NR_chdir: u32 = 12; -pub const __NR_chown: u32 = 13; -pub const __NR_mknod: u32 = 14; -pub const __NR_chmod: u32 = 15; -pub const __NR_lchown: u32 = 16; -pub const __NR_brk: u32 = 17; -pub const __NR_perfctr: u32 = 18; -pub const __NR_lseek: u32 = 19; -pub const __NR_getpid: u32 = 20; -pub const __NR_capget: u32 = 21; -pub const __NR_capset: u32 = 22; -pub const __NR_setuid: u32 = 23; -pub const __NR_getuid: u32 = 24; -pub const __NR_vmsplice: u32 = 25; -pub const __NR_ptrace: u32 = 26; -pub const __NR_alarm: u32 = 27; -pub const __NR_sigaltstack: u32 = 28; -pub const __NR_pause: u32 = 29; -pub const __NR_utime: u32 = 30; -pub const __NR_lchown32: u32 = 31; -pub const __NR_fchown32: u32 = 32; -pub const __NR_access: u32 = 33; -pub const __NR_nice: u32 = 34; -pub const __NR_chown32: u32 = 35; -pub const __NR_sync: u32 = 36; -pub const __NR_kill: u32 = 37; -pub const __NR_stat: u32 = 38; -pub const __NR_sendfile: u32 = 39; -pub const __NR_lstat: u32 = 40; -pub const __NR_dup: u32 = 41; -pub const __NR_pipe: u32 = 42; -pub const __NR_times: u32 = 43; -pub const __NR_getuid32: u32 = 44; -pub const __NR_umount2: u32 = 45; -pub const __NR_setgid: u32 = 46; -pub const __NR_getgid: u32 = 47; -pub const __NR_signal: u32 = 48; -pub const __NR_geteuid: u32 = 49; -pub const __NR_getegid: u32 = 50; -pub const __NR_acct: u32 = 51; -pub const __NR_getgid32: u32 = 53; -pub const __NR_ioctl: u32 = 54; -pub const __NR_reboot: u32 = 55; -pub const __NR_mmap2: u32 = 56; -pub const __NR_symlink: u32 = 57; -pub const __NR_readlink: u32 = 58; -pub const __NR_execve: u32 = 59; -pub const __NR_umask: u32 = 60; -pub const __NR_chroot: u32 = 61; -pub const __NR_fstat: u32 = 62; -pub const __NR_fstat64: u32 = 63; -pub const __NR_getpagesize: u32 = 64; -pub const __NR_msync: u32 = 65; -pub const __NR_vfork: u32 = 66; -pub const __NR_pread64: u32 = 67; -pub const __NR_pwrite64: u32 = 68; -pub const __NR_geteuid32: u32 = 69; -pub const __NR_getegid32: u32 = 70; -pub const __NR_mmap: u32 = 71; -pub const __NR_setreuid32: u32 = 72; -pub const __NR_munmap: u32 = 73; -pub const __NR_mprotect: u32 = 74; -pub const __NR_madvise: u32 = 75; -pub const __NR_vhangup: u32 = 76; -pub const __NR_truncate64: u32 = 77; -pub const __NR_mincore: u32 = 78; -pub const __NR_getgroups: u32 = 79; -pub const __NR_setgroups: u32 = 80; -pub const __NR_getpgrp: u32 = 81; -pub const __NR_setgroups32: u32 = 82; -pub const __NR_setitimer: u32 = 83; -pub const __NR_ftruncate64: u32 = 84; -pub const __NR_swapon: u32 = 85; -pub const __NR_getitimer: u32 = 86; -pub const __NR_setuid32: u32 = 87; -pub const __NR_sethostname: u32 = 88; -pub const __NR_setgid32: u32 = 89; -pub const __NR_dup2: u32 = 90; -pub const __NR_setfsuid32: u32 = 91; -pub const __NR_fcntl: u32 = 92; -pub const __NR_select: u32 = 93; -pub const __NR_setfsgid32: u32 = 94; -pub const __NR_fsync: u32 = 95; -pub const __NR_setpriority: u32 = 96; -pub const __NR_socket: u32 = 97; -pub const __NR_connect: u32 = 98; -pub const __NR_accept: u32 = 99; -pub const __NR_getpriority: u32 = 100; -pub const __NR_rt_sigreturn: u32 = 101; -pub const __NR_rt_sigaction: u32 = 102; -pub const __NR_rt_sigprocmask: u32 = 103; -pub const __NR_rt_sigpending: u32 = 104; -pub const __NR_rt_sigtimedwait: u32 = 105; -pub const __NR_rt_sigqueueinfo: u32 = 106; -pub const __NR_rt_sigsuspend: u32 = 107; -pub const __NR_setresuid32: u32 = 108; -pub const __NR_getresuid32: u32 = 109; -pub const __NR_setresgid32: u32 = 110; -pub const __NR_getresgid32: u32 = 111; -pub const __NR_setregid32: u32 = 112; -pub const __NR_recvmsg: u32 = 113; -pub const __NR_sendmsg: u32 = 114; -pub const __NR_getgroups32: u32 = 115; -pub const __NR_gettimeofday: u32 = 116; -pub const __NR_getrusage: u32 = 117; -pub const __NR_getsockopt: u32 = 118; -pub const __NR_getcwd: u32 = 119; -pub const __NR_readv: u32 = 120; -pub const __NR_writev: u32 = 121; -pub const __NR_settimeofday: u32 = 122; -pub const __NR_fchown: u32 = 123; -pub const __NR_fchmod: u32 = 124; -pub const __NR_recvfrom: u32 = 125; -pub const __NR_setreuid: u32 = 126; -pub const __NR_setregid: u32 = 127; -pub const __NR_rename: u32 = 128; -pub const __NR_truncate: u32 = 129; -pub const __NR_ftruncate: u32 = 130; -pub const __NR_flock: u32 = 131; -pub const __NR_lstat64: u32 = 132; -pub const __NR_sendto: u32 = 133; -pub const __NR_shutdown: u32 = 134; -pub const __NR_socketpair: u32 = 135; -pub const __NR_mkdir: u32 = 136; -pub const __NR_rmdir: u32 = 137; -pub const __NR_utimes: u32 = 138; -pub const __NR_stat64: u32 = 139; -pub const __NR_sendfile64: u32 = 140; -pub const __NR_getpeername: u32 = 141; -pub const __NR_futex: u32 = 142; -pub const __NR_gettid: u32 = 143; -pub const __NR_getrlimit: u32 = 144; -pub const __NR_setrlimit: u32 = 145; -pub const __NR_pivot_root: u32 = 146; -pub const __NR_prctl: u32 = 147; -pub const __NR_pciconfig_read: u32 = 148; -pub const __NR_pciconfig_write: u32 = 149; -pub const __NR_getsockname: u32 = 150; -pub const __NR_inotify_init: u32 = 151; -pub const __NR_inotify_add_watch: u32 = 152; -pub const __NR_poll: u32 = 153; -pub const __NR_getdents64: u32 = 154; -pub const __NR_fcntl64: u32 = 155; -pub const __NR_inotify_rm_watch: u32 = 156; -pub const __NR_statfs: u32 = 157; -pub const __NR_fstatfs: u32 = 158; -pub const __NR_umount: u32 = 159; -pub const __NR_sched_set_affinity: u32 = 160; -pub const __NR_sched_get_affinity: u32 = 161; -pub const __NR_getdomainname: u32 = 162; -pub const __NR_setdomainname: u32 = 163; -pub const __NR_quotactl: u32 = 165; -pub const __NR_set_tid_address: u32 = 166; -pub const __NR_mount: u32 = 167; -pub const __NR_ustat: u32 = 168; -pub const __NR_setxattr: u32 = 169; -pub const __NR_lsetxattr: u32 = 170; -pub const __NR_fsetxattr: u32 = 171; -pub const __NR_getxattr: u32 = 172; -pub const __NR_lgetxattr: u32 = 173; -pub const __NR_getdents: u32 = 174; -pub const __NR_setsid: u32 = 175; -pub const __NR_fchdir: u32 = 176; -pub const __NR_fgetxattr: u32 = 177; -pub const __NR_listxattr: u32 = 178; -pub const __NR_llistxattr: u32 = 179; -pub const __NR_flistxattr: u32 = 180; -pub const __NR_removexattr: u32 = 181; -pub const __NR_lremovexattr: u32 = 182; -pub const __NR_sigpending: u32 = 183; -pub const __NR_query_module: u32 = 184; -pub const __NR_setpgid: u32 = 185; -pub const __NR_fremovexattr: u32 = 186; -pub const __NR_tkill: u32 = 187; -pub const __NR_exit_group: u32 = 188; -pub const __NR_uname: u32 = 189; -pub const __NR_init_module: u32 = 190; -pub const __NR_personality: u32 = 191; -pub const __NR_remap_file_pages: u32 = 192; -pub const __NR_epoll_create: u32 = 193; -pub const __NR_epoll_ctl: u32 = 194; -pub const __NR_epoll_wait: u32 = 195; -pub const __NR_ioprio_set: u32 = 196; -pub const __NR_getppid: u32 = 197; -pub const __NR_sigaction: u32 = 198; -pub const __NR_sgetmask: u32 = 199; -pub const __NR_ssetmask: u32 = 200; -pub const __NR_sigsuspend: u32 = 201; -pub const __NR_oldlstat: u32 = 202; -pub const __NR_uselib: u32 = 203; -pub const __NR_readdir: u32 = 204; -pub const __NR_readahead: u32 = 205; -pub const __NR_socketcall: u32 = 206; -pub const __NR_syslog: u32 = 207; -pub const __NR_lookup_dcookie: u32 = 208; -pub const __NR_fadvise64: u32 = 209; -pub const __NR_fadvise64_64: u32 = 210; -pub const __NR_tgkill: u32 = 211; -pub const __NR_waitpid: u32 = 212; -pub const __NR_swapoff: u32 = 213; -pub const __NR_sysinfo: u32 = 214; -pub const __NR_ipc: u32 = 215; -pub const __NR_sigreturn: u32 = 216; -pub const __NR_clone: u32 = 217; -pub const __NR_ioprio_get: u32 = 218; -pub const __NR_adjtimex: u32 = 219; -pub const __NR_sigprocmask: u32 = 220; -pub const __NR_create_module: u32 = 221; -pub const __NR_delete_module: u32 = 222; -pub const __NR_get_kernel_syms: u32 = 223; -pub const __NR_getpgid: u32 = 224; -pub const __NR_bdflush: u32 = 225; -pub const __NR_sysfs: u32 = 226; -pub const __NR_afs_syscall: u32 = 227; -pub const __NR_setfsuid: u32 = 228; -pub const __NR_setfsgid: u32 = 229; -pub const __NR__newselect: u32 = 230; -pub const __NR_time: u32 = 231; -pub const __NR_splice: u32 = 232; -pub const __NR_stime: u32 = 233; -pub const __NR_statfs64: u32 = 234; -pub const __NR_fstatfs64: u32 = 235; -pub const __NR__llseek: u32 = 236; -pub const __NR_mlock: u32 = 237; -pub const __NR_munlock: u32 = 238; -pub const __NR_mlockall: u32 = 239; -pub const __NR_munlockall: u32 = 240; -pub const __NR_sched_setparam: u32 = 241; -pub const __NR_sched_getparam: u32 = 242; -pub const __NR_sched_setscheduler: u32 = 243; -pub const __NR_sched_getscheduler: u32 = 244; -pub const __NR_sched_yield: u32 = 245; -pub const __NR_sched_get_priority_max: u32 = 246; -pub const __NR_sched_get_priority_min: u32 = 247; -pub const __NR_sched_rr_get_interval: u32 = 248; -pub const __NR_nanosleep: u32 = 249; -pub const __NR_mremap: u32 = 250; -pub const __NR__sysctl: u32 = 251; -pub const __NR_getsid: u32 = 252; -pub const __NR_fdatasync: u32 = 253; -pub const __NR_nfsservctl: u32 = 254; -pub const __NR_sync_file_range: u32 = 255; -pub const __NR_clock_settime: u32 = 256; -pub const __NR_clock_gettime: u32 = 257; -pub const __NR_clock_getres: u32 = 258; -pub const __NR_clock_nanosleep: u32 = 259; -pub const __NR_sched_getaffinity: u32 = 260; -pub const __NR_sched_setaffinity: u32 = 261; -pub const __NR_timer_settime: u32 = 262; -pub const __NR_timer_gettime: u32 = 263; -pub const __NR_timer_getoverrun: u32 = 264; -pub const __NR_timer_delete: u32 = 265; -pub const __NR_timer_create: u32 = 266; -pub const __NR_vserver: u32 = 267; -pub const __NR_io_setup: u32 = 268; -pub const __NR_io_destroy: u32 = 269; -pub const __NR_io_submit: u32 = 270; -pub const __NR_io_cancel: u32 = 271; -pub const __NR_io_getevents: u32 = 272; -pub const __NR_mq_open: u32 = 273; -pub const __NR_mq_unlink: u32 = 274; -pub const __NR_mq_timedsend: u32 = 275; -pub const __NR_mq_timedreceive: u32 = 276; -pub const __NR_mq_notify: u32 = 277; -pub const __NR_mq_getsetattr: u32 = 278; -pub const __NR_waitid: u32 = 279; -pub const __NR_tee: u32 = 280; -pub const __NR_add_key: u32 = 281; -pub const __NR_request_key: u32 = 282; -pub const __NR_keyctl: u32 = 283; -pub const __NR_openat: u32 = 284; -pub const __NR_mkdirat: u32 = 285; -pub const __NR_mknodat: u32 = 286; -pub const __NR_fchownat: u32 = 287; -pub const __NR_futimesat: u32 = 288; -pub const __NR_fstatat64: u32 = 289; -pub const __NR_unlinkat: u32 = 290; -pub const __NR_renameat: u32 = 291; -pub const __NR_linkat: u32 = 292; -pub const __NR_symlinkat: u32 = 293; -pub const __NR_readlinkat: u32 = 294; -pub const __NR_fchmodat: u32 = 295; -pub const __NR_faccessat: u32 = 296; -pub const __NR_pselect6: u32 = 297; -pub const __NR_ppoll: u32 = 298; -pub const __NR_unshare: u32 = 299; -pub const __NR_set_robust_list: u32 = 300; -pub const __NR_get_robust_list: u32 = 301; -pub const __NR_migrate_pages: u32 = 302; -pub const __NR_mbind: u32 = 303; -pub const __NR_get_mempolicy: u32 = 304; -pub const __NR_set_mempolicy: u32 = 305; -pub const __NR_kexec_load: u32 = 306; -pub const __NR_move_pages: u32 = 307; -pub const __NR_getcpu: u32 = 308; -pub const __NR_epoll_pwait: u32 = 309; -pub const __NR_utimensat: u32 = 310; -pub const __NR_signalfd: u32 = 311; -pub const __NR_timerfd_create: u32 = 312; -pub const __NR_eventfd: u32 = 313; -pub const __NR_fallocate: u32 = 314; -pub const __NR_timerfd_settime: u32 = 315; -pub const __NR_timerfd_gettime: u32 = 316; -pub const __NR_signalfd4: u32 = 317; -pub const __NR_eventfd2: u32 = 318; -pub const __NR_epoll_create1: u32 = 319; -pub const __NR_dup3: u32 = 320; -pub const __NR_pipe2: u32 = 321; -pub const __NR_inotify_init1: u32 = 322; -pub const __NR_accept4: u32 = 323; -pub const __NR_preadv: u32 = 324; -pub const __NR_pwritev: u32 = 325; -pub const __NR_rt_tgsigqueueinfo: u32 = 326; -pub const __NR_perf_event_open: u32 = 327; -pub const __NR_recvmmsg: u32 = 328; -pub const __NR_fanotify_init: u32 = 329; -pub const __NR_fanotify_mark: u32 = 330; -pub const __NR_prlimit64: u32 = 331; -pub const __NR_name_to_handle_at: u32 = 332; -pub const __NR_open_by_handle_at: u32 = 333; -pub const __NR_clock_adjtime: u32 = 334; -pub const __NR_syncfs: u32 = 335; -pub const __NR_sendmmsg: u32 = 336; -pub const __NR_setns: u32 = 337; -pub const __NR_process_vm_readv: u32 = 338; -pub const __NR_process_vm_writev: u32 = 339; -pub const __NR_kern_features: u32 = 340; -pub const __NR_kcmp: u32 = 341; -pub const __NR_finit_module: u32 = 342; -pub const __NR_sched_setattr: u32 = 343; -pub const __NR_sched_getattr: u32 = 344; -pub const __NR_renameat2: u32 = 345; -pub const __NR_seccomp: u32 = 346; -pub const __NR_getrandom: u32 = 347; -pub const __NR_memfd_create: u32 = 348; -pub const __NR_bpf: u32 = 349; -pub const __NR_execveat: u32 = 350; -pub const __NR_membarrier: u32 = 351; -pub const __NR_userfaultfd: u32 = 352; -pub const __NR_bind: u32 = 353; -pub const __NR_listen: u32 = 354; -pub const __NR_setsockopt: u32 = 355; -pub const __NR_mlock2: u32 = 356; -pub const __NR_copy_file_range: u32 = 357; -pub const __NR_preadv2: u32 = 358; -pub const __NR_pwritev2: u32 = 359; -pub const __NR_statx: u32 = 360; -pub const __NR_io_pgetevents: u32 = 361; -pub const __NR_pkey_mprotect: u32 = 362; -pub const __NR_pkey_alloc: u32 = 363; -pub const __NR_pkey_free: u32 = 364; -pub const __NR_rseq: u32 = 365; -pub const __NR_semget: u32 = 393; -pub const __NR_semctl: u32 = 394; -pub const __NR_shmget: u32 = 395; -pub const __NR_shmctl: u32 = 396; -pub const __NR_shmat: u32 = 397; -pub const __NR_shmdt: u32 = 398; -pub const __NR_msgget: u32 = 399; -pub const __NR_msgsnd: u32 = 400; -pub const __NR_msgrcv: u32 = 401; -pub const __NR_msgctl: u32 = 402; -pub const __NR_clock_gettime64: u32 = 403; -pub const __NR_clock_settime64: u32 = 404; -pub const __NR_clock_adjtime64: u32 = 405; -pub const __NR_clock_getres_time64: u32 = 406; -pub const __NR_clock_nanosleep_time64: u32 = 407; -pub const __NR_timer_gettime64: u32 = 408; -pub const __NR_timer_settime64: u32 = 409; -pub const __NR_timerfd_gettime64: u32 = 410; -pub const __NR_timerfd_settime64: u32 = 411; -pub const __NR_utimensat_time64: u32 = 412; -pub const __NR_pselect6_time64: u32 = 413; -pub const __NR_ppoll_time64: u32 = 414; -pub const __NR_io_pgetevents_time64: u32 = 416; -pub const __NR_recvmmsg_time64: u32 = 417; -pub const __NR_mq_timedsend_time64: u32 = 418; -pub const __NR_mq_timedreceive_time64: u32 = 419; -pub const __NR_semtimedop_time64: u32 = 420; -pub const __NR_rt_sigtimedwait_time64: u32 = 421; -pub const __NR_futex_time64: u32 = 422; -pub const __NR_sched_rr_get_interval_time64: u32 = 423; -pub const __NR_pidfd_send_signal: u32 = 424; -pub const __NR_io_uring_setup: u32 = 425; -pub const __NR_io_uring_enter: u32 = 426; -pub const __NR_io_uring_register: u32 = 427; -pub const __NR_open_tree: u32 = 428; -pub const __NR_move_mount: u32 = 429; -pub const __NR_fsopen: u32 = 430; -pub const __NR_fsconfig: u32 = 431; -pub const __NR_fsmount: u32 = 432; -pub const __NR_fspick: u32 = 433; -pub const __NR_pidfd_open: u32 = 434; -pub const __NR_close_range: u32 = 436; -pub const __NR_openat2: u32 = 437; -pub const __NR_pidfd_getfd: u32 = 438; -pub const __NR_faccessat2: u32 = 439; -pub const __NR_process_madvise: u32 = 440; -pub const __NR_epoll_pwait2: u32 = 441; -pub const __NR_mount_setattr: u32 = 442; -pub const __NR_quotactl_fd: u32 = 443; -pub const __NR_landlock_create_ruleset: u32 = 444; -pub const __NR_landlock_add_rule: u32 = 445; -pub const __NR_landlock_restrict_self: u32 = 446; -pub const __NR_process_mrelease: u32 = 448; -pub const __NR_futex_waitv: u32 = 449; -pub const __NR_set_mempolicy_home_node: u32 = 450; -pub const KERN_FEATURE_MIXED_MODE_STACK: u32 = 1; -pub const __OLD_UTS_LEN: u32 = 8; -pub const __NEW_UTS_LEN: u32 = 64; -pub const WNOHANG: u32 = 1; -pub const WUNTRACED: u32 = 2; -pub const WSTOPPED: u32 = 2; -pub const WEXITED: u32 = 4; -pub const WCONTINUED: u32 = 8; -pub const WNOWAIT: u32 = 16777216; -pub const __WNOTHREAD: u32 = 536870912; -pub const __WALL: u32 = 1073741824; -pub const __WCLONE: u32 = 2147483648; -pub const P_ALL: u32 = 0; -pub const P_PID: u32 = 1; -pub const P_PGID: u32 = 2; -pub const P_PIDFD: u32 = 3; -pub const XATTR_CREATE: u32 = 1; -pub const XATTR_REPLACE: u32 = 2; -pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0"; -pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0"; -pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0"; -pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0"; -pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0"; -pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0"; -pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0"; -pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0"; -pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0"; -pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0"; -pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0"; -pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0"; -pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0"; -pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0"; -pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0"; -pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0"; -pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0"; -pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0"; -pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0"; -pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0"; -pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0"; -pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0"; -pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0"; -pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0"; -pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0"; -pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0"; -pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0"; -pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0"; -pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0"; -pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0"; -pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0"; -pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0"; -pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0"; -pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0"; -pub const MFD_CLOEXEC: u32 = 1; -pub const MFD_ALLOW_SEALING: u32 = 2; -pub const MFD_HUGETLB: u32 = 4; -pub const MFD_NOEXEC_SEAL: u32 = 8; -pub const MFD_EXEC: u32 = 16; -pub const MFD_HUGE_SHIFT: u32 = 26; -pub const MFD_HUGE_MASK: u32 = 63; -pub const MFD_HUGE_64KB: u32 = 1073741824; -pub const MFD_HUGE_512KB: u32 = 1275068416; -pub const MFD_HUGE_1MB: u32 = 1342177280; -pub const MFD_HUGE_2MB: u32 = 1409286144; -pub const MFD_HUGE_8MB: u32 = 1543503872; -pub const MFD_HUGE_16MB: u32 = 1610612736; -pub const MFD_HUGE_32MB: u32 = 1677721600; -pub const MFD_HUGE_256MB: u32 = 1879048192; -pub const MFD_HUGE_512MB: u32 = 1946157056; -pub const MFD_HUGE_1GB: u32 = 2013265920; -pub const MFD_HUGE_2GB: u32 = 2080374784; -pub const MFD_HUGE_16GB: u32 = 2281701376; -pub const TFD_TIMER_ABSTIME: u32 = 1; -pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; -pub const TFD_CLOEXEC: u32 = 4194304; -pub const TFD_NONBLOCK: u32 = 16384; -pub const USERFAULTFD_IOC: u32 = 170; -pub const _UFFDIO_REGISTER: u32 = 0; -pub const _UFFDIO_UNREGISTER: u32 = 1; -pub const _UFFDIO_WAKE: u32 = 2; -pub const _UFFDIO_COPY: u32 = 3; -pub const _UFFDIO_ZEROPAGE: u32 = 4; -pub const _UFFDIO_WRITEPROTECT: u32 = 6; -pub const _UFFDIO_CONTINUE: u32 = 7; -pub const _UFFDIO_API: u32 = 63; -pub const UFFDIO: u32 = 170; -pub const UFFD_EVENT_PAGEFAULT: u32 = 18; -pub const UFFD_EVENT_FORK: u32 = 19; -pub const UFFD_EVENT_REMAP: u32 = 20; -pub const UFFD_EVENT_REMOVE: u32 = 21; -pub const UFFD_EVENT_UNMAP: u32 = 22; -pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; -pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; -pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; -pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; -pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; -pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; -pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; -pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; -pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; -pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; -pub const UFFD_FEATURE_SIGBUS: u32 = 128; -pub const UFFD_FEATURE_THREAD_ID: u32 = 256; -pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; -pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; -pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; -pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; -pub const UFFD_USER_MODE_ONLY: u32 = 1; -pub const IORING_FILE_INDEX_ALLOC: i32 = -1; -pub const IORING_SETUP_IOPOLL: u32 = 1; -pub const IORING_SETUP_SQPOLL: u32 = 2; -pub const IORING_SETUP_SQ_AFF: u32 = 4; -pub const IORING_SETUP_CQSIZE: u32 = 8; -pub const IORING_SETUP_CLAMP: u32 = 16; -pub const IORING_SETUP_ATTACH_WQ: u32 = 32; -pub const IORING_SETUP_R_DISABLED: u32 = 64; -pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; -pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; -pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; -pub const IORING_SETUP_SQE128: u32 = 1024; -pub const IORING_SETUP_CQE32: u32 = 2048; -pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; -pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; -pub const IORING_URING_CMD_FIXED: u32 = 1; -pub const IORING_FSYNC_DATASYNC: u32 = 1; -pub const IORING_TIMEOUT_ABS: u32 = 1; -pub const IORING_TIMEOUT_UPDATE: u32 = 2; -pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; -pub const IORING_TIMEOUT_REALTIME: u32 = 8; -pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; -pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; -pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; -pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; -pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; -pub const IORING_POLL_ADD_MULTI: u32 = 1; -pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; -pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; -pub const IORING_POLL_ADD_LEVEL: u32 = 8; -pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; -pub const IORING_ASYNC_CANCEL_FD: u32 = 2; -pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; -pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; -pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; -pub const IORING_RECV_MULTISHOT: u32 = 2; -pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; -pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; -pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; -pub const IORING_ACCEPT_MULTISHOT: u32 = 1; -pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; -pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; -pub const IORING_CQE_F_BUFFER: u32 = 1; -pub const IORING_CQE_F_MORE: u32 = 2; -pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; -pub const IORING_CQE_F_NOTIF: u32 = 8; -pub const IORING_OFF_SQ_RING: u32 = 0; -pub const IORING_OFF_CQ_RING: u32 = 134217728; -pub const IORING_OFF_SQES: u32 = 268435456; -pub const IORING_SQ_NEED_WAKEUP: u32 = 1; -pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; -pub const IORING_SQ_TASKRUN: u32 = 4; -pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; -pub const IORING_ENTER_GETEVENTS: u32 = 1; -pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; -pub const IORING_ENTER_SQ_WAIT: u32 = 4; -pub const IORING_ENTER_EXT_ARG: u32 = 8; -pub const IORING_ENTER_REGISTERED_RING: u32 = 16; -pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; -pub const IORING_FEAT_NODROP: u32 = 2; -pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; -pub const IORING_FEAT_RW_CUR_POS: u32 = 8; -pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; -pub const IORING_FEAT_FAST_POLL: u32 = 32; -pub const IORING_FEAT_POLL_32BITS: u32 = 64; -pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; -pub const IORING_FEAT_EXT_ARG: u32 = 256; -pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; -pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; -pub const IORING_FEAT_CQE_SKIP: u32 = 2048; -pub const IORING_FEAT_LINKED_FILE: u32 = 4096; -pub const IORING_FEAT_REG_REG_RING: u32 = 8192; -pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; -pub const IORING_REGISTER_FILES_SKIP: i32 = -2; -pub const IO_URING_OP_SUPPORTED: u32 = 1; -pub const DT_UNKNOWN: u32 = 0; -pub const DT_FIFO: u32 = 1; -pub const DT_CHR: u32 = 2; -pub const DT_DIR: u32 = 4; -pub const DT_BLK: u32 = 6; -pub const DT_REG: u32 = 8; -pub const DT_LNK: u32 = 10; -pub const DT_SOCK: u32 = 12; -pub const SHUT_RD: u32 = 0; -pub const SHUT_WR: u32 = 1; -pub const SHUT_RDWR: u32 = 2; -pub const STAT_HAVE_NSEC: u32 = 1; -pub const SOCK_STREAM: u32 = 1; -pub const SOCK_DGRAM: u32 = 2; -pub const SOCK_RAW: u32 = 3; -pub const SOCK_RDM: u32 = 4; -pub const SOCK_SEQPACKET: u32 = 5; -pub const F_OK: u32 = 0; -pub const R_OK: u32 = 4; -pub const W_OK: u32 = 2; -pub const X_OK: u32 = 1; -pub const UTIME_NOW: u32 = 1073741823; -pub const UTIME_OMIT: u32 = 1073741822; -pub const MSG_DONTWAIT: u32 = 64; -pub const AF_UNSPEC: u32 = 0; -pub const AF_UNIX: u32 = 1; -pub const AF_INET: u32 = 2; -pub const AF_AX25: u32 = 3; -pub const AF_IPX: u32 = 4; -pub const AF_APPLETALK: u32 = 5; -pub const AF_NETROM: u32 = 6; -pub const AF_BRIDGE: u32 = 7; -pub const AF_ATMPVC: u32 = 8; -pub const AF_X25: u32 = 9; -pub const AF_INET6: u32 = 10; -pub const AF_ROSE: u32 = 11; -pub const AF_DECnet: u32 = 12; -pub const AF_NETBEUI: u32 = 13; -pub const AF_SECURITY: u32 = 14; -pub const AF_KEY: u32 = 15; -pub const AF_NETLINK: u32 = 16; -pub const AF_PACKET: u32 = 17; -pub const AF_ASH: u32 = 18; -pub const AF_ECONET: u32 = 19; -pub const AF_ATMSVC: u32 = 20; -pub const AF_RDS: u32 = 21; -pub const AF_SNA: u32 = 22; -pub const AF_IRDA: u32 = 23; -pub const AF_PPPOX: u32 = 24; -pub const AF_WANPIPE: u32 = 25; -pub const AF_LLC: u32 = 26; -pub const AF_CAN: u32 = 29; -pub const AF_TIPC: u32 = 30; -pub const AF_BLUETOOTH: u32 = 31; -pub const AF_IUCV: u32 = 32; -pub const AF_RXRPC: u32 = 33; -pub const AF_ISDN: u32 = 34; -pub const AF_PHONET: u32 = 35; -pub const AF_IEEE802154: u32 = 36; -pub const AF_MAX: u32 = 37; -pub const MSG_OOB: u32 = 1; -pub const MSG_PEEK: u32 = 2; -pub const MSG_DONTROUTE: u32 = 4; -pub const MSG_CTRUNC: u32 = 8; -pub const MSG_PROBE: u32 = 16; -pub const MSG_TRUNC: u32 = 32; -pub const MSG_EOR: u32 = 128; -pub const MSG_WAITALL: u32 = 256; -pub const MSG_FIN: u32 = 512; -pub const MSG_SYN: u32 = 1024; -pub const MSG_CONFIRM: u32 = 2048; -pub const MSG_RST: u32 = 4096; -pub const MSG_ERRQUEUE: u32 = 8192; -pub const MSG_NOSIGNAL: u32 = 16384; -pub const MSG_MORE: u32 = 32768; -pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; -pub const STDIN_FILENO: u32 = 0; -pub const STDOUT_FILENO: u32 = 1; -pub const STDERR_FILENO: u32 = 2; -pub const RWF_HIPRI: u32 = 1; -pub const RWF_DSYNC: u32 = 2; -pub const RWF_SYNC: u32 = 4; -pub const RWF_NOWAIT: u32 = 8; -pub const RWF_APPEND: u32 = 16; -pub const EFD_SEMAPHORE: u32 = 1; -pub const EFD_CLOEXEC: u32 = 4194304; -pub const EFD_NONBLOCK: u32 = 16384; -pub const EPOLLIN: u32 = 1; -pub const EPOLLPRI: u32 = 2; -pub const EPOLLOUT: u32 = 4; -pub const EPOLLERR: u32 = 8; -pub const EPOLLHUP: u32 = 16; -pub const EPOLLNVAL: u32 = 32; -pub const EPOLLRDNORM: u32 = 64; -pub const EPOLLRDBAND: u32 = 128; -pub const EPOLLWRNORM: u32 = 256; -pub const EPOLLWRBAND: u32 = 512; -pub const EPOLLMSG: u32 = 1024; -pub const EPOLLRDHUP: u32 = 8192; -pub const EPOLLEXCLUSIVE: u32 = 268435456; -pub const EPOLLWAKEUP: u32 = 536870912; -pub const EPOLLONESHOT: u32 = 1073741824; -pub const EPOLLET: u32 = 2147483648; -pub const TFD_SHARED_FCNTL_FLAGS: u32 = 4210688; -pub const TFD_CREATE_FLAGS: u32 = 4210688; -pub const TFD_SETTIME_FLAGS: u32 = 1; -pub const SCM_RIGHTS: u32 = 1; -pub const SCM_CREDENTIALS: u32 = 2; -pub const SCM_SECURITY: u32 = 3; -pub const UFFD_API: u32 = 170; -pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; -pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; -pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; -pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; -pub const UFFDIO_COPY_MODE_WP: u32 = 2; -pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; -pub const SPLICE_F_MOVE: u32 = 1; -pub const SPLICE_F_NONBLOCK: u32 = 2; -pub const SPLICE_F_MORE: u32 = 4; -pub const SPLICE_F_GIFT: u32 = 8; -pub const MNT_FORCE: u32 = 1; -pub const MNT_DETACH: u32 = 2; -pub const MNT_EXPIRE: u32 = 4; -pub const UMOUNT_NOFOLLOW: u32 = 8; -pub const UMOUNT_UNUSED: u32 = 2147483648; -pub type size_t = crate::ctypes::c_uint; -pub type ssize_t = crate::ctypes::c_int; -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 32usize], -} -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_size_t = crate::ctypes::c_uint; -pub type __kernel_ssize_t = crate::ctypes::c_int; -pub type __kernel_ptrdiff_t = crate::ctypes::c_long; -pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; -pub type __kernel_uid_t = crate::ctypes::c_ushort; -pub type __kernel_gid_t = crate::ctypes::c_ushort; -pub type __kernel_mode_t = crate::ctypes::c_ushort; -pub type __kernel_daddr_t = crate::ctypes::c_long; -pub type __kernel_old_dev_t = crate::ctypes::c_ushort; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_header_struct { -pub version: __u32, -pub pid: crate::ctypes::c_int, -} -pub type cap_user_header_t = *mut __user_cap_header_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_data_struct { -pub effective: __u32, -pub permitted: __u32, -pub inheritable: __u32, -} -pub type cap_user_data_t = *mut __user_cap_data_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data { -pub magic_etc: __le32, -pub data: [vfs_cap_data__bindgen_ty_1; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data { -pub magic_etc: __le32, -pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], -pub rootid: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct f_owner_ex { -pub type_: crate::ctypes::c_int, -pub pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_off_t, -pub l_len: __kernel_off_t, -pub l_pid: __kernel_pid_t, -pub __unused: crate::ctypes::c_short, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock64 { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_loff_t, -pub l_len: __kernel_loff_t, -pub l_pid: __kernel_pid_t, -pub __unused: crate::ctypes::c_short, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct open_how { -pub flags: __u64, -pub mode: __u64, -pub resolve: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct epoll_event { -pub events: __poll_t, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v1 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub master_key_descriptor: [__u8; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_key { -pub mode: __u32, -pub raw: [__u8; 64usize], -pub size: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v2 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub __reserved: [__u8; 4usize], -pub master_key_identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_get_policy_ex_arg { -pub policy_size: __u64, -pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { -pub version: __u8, -pub v1: fscrypt_policy_v1, -pub v2: fscrypt_policy_v2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_key_specifier { -pub type_: __u32, -pub __reserved: __u32, -pub u: fscrypt_key_specifier__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_key_specifier__bindgen_ty_1 { -pub __reserved: [__u8; 32usize], -pub descriptor: [__u8; 8usize], -pub identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct fscrypt_provisioning_key_payload { -pub type_: __u32, -pub __reserved: __u32, -pub raw: __IncompleteArrayField<__u8>, -} -#[repr(C)] -pub struct fscrypt_add_key_arg { -pub key_spec: fscrypt_key_specifier, -pub raw_size: __u32, -pub key_id: __u32, -pub __reserved: [__u32; 8usize], -pub raw: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_remove_key_arg { -pub key_spec: fscrypt_key_specifier, -pub removal_status_flags: __u32, -pub __reserved: [__u32; 5usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_get_key_status_arg { -pub key_spec: fscrypt_key_specifier, -pub __reserved: [__u32; 6usize], -pub status: __u32, -pub status_flags: __u32, -pub user_count: __u32, -pub __out_reserved: [__u32; 13usize], -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum fsconfig_command { -FSCONFIG_SET_FLAG = 0, -FSCONFIG_SET_STRING = 1, -FSCONFIG_SET_BINARY = 2, -FSCONFIG_SET_PATH = 3, -FSCONFIG_SET_PATH_EMPTY = 4, -FSCONFIG_SET_FD = 5, -FSCONFIG_CMD_CREATE = 6, -FSCONFIG_CMD_RECONFIGURE = 7, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mount_attr { -pub attr_set: __u64, -pub attr_clr: __u64, -pub propagation: __u64, -pub userns_fd: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct file_clone_range { -pub src_fd: __s64, -pub src_offset: __u64, -pub src_length: __u64, -pub dest_offset: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fstrim_range { -pub start: __u64, -pub len: __u64, -pub minlen: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct file_dedupe_range_info { -pub dest_fd: __s64, -pub dest_offset: __u64, -pub bytes_deduped: __u64, -pub status: __s32, -pub reserved: __u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct file_dedupe_range { -pub src_offset: __u64, -pub src_length: __u64, -pub dest_count: __u16, -pub reserved1: __u16, -pub reserved2: __u32, -pub info: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct files_stat_struct { -pub nr_files: crate::ctypes::c_ulong, -pub nr_free_files: crate::ctypes::c_ulong, -pub max_files: crate::ctypes::c_ulong, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct inodes_stat_t { -pub nr_inodes: crate::ctypes::c_long, -pub nr_unused: crate::ctypes::c_long, -pub dummy: [crate::ctypes::c_long; 5usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fsxattr { -pub fsx_xflags: __u32, -pub fsx_extsize: __u32, -pub fsx_nextents: __u32, -pub fsx_projid: __u32, -pub fsx_cowextsize: __u32, -pub fsx_pad: [crate::ctypes::c_uchar; 8usize], -} -pub type __kernel_rwf_t = crate::ctypes::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct futex_waitv { -pub val: __u64, -pub uaddr: __u64, -pub flags: __u32, -pub __reserved: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct robust_list { -pub next: *mut robust_list, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct robust_list_head { -pub list: robust_list, -pub futex_offset: crate::ctypes::c_long, -pub list_op_pending: *mut robust_list, -} -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], -} -pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; -pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; -pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; -pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; -pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; -pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; -pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; -pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; -pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; -pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; -pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; -pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; -pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; -pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; -pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; -pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; -pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; -pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; -pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; -pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; -pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; -pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; -pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; -pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; -pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; -pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; -pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; -pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; -pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_1 { -IPPROTO_IP = 0, -IPPROTO_ICMP = 1, -IPPROTO_IGMP = 2, -IPPROTO_IPIP = 4, -IPPROTO_TCP = 6, -IPPROTO_EGP = 8, -IPPROTO_PUP = 12, -IPPROTO_UDP = 17, -IPPROTO_IDP = 22, -IPPROTO_TP = 29, -IPPROTO_DCCP = 33, -IPPROTO_IPV6 = 41, -IPPROTO_RSVP = 46, -IPPROTO_GRE = 47, -IPPROTO_ESP = 50, -IPPROTO_AH = 51, -IPPROTO_MTP = 92, -IPPROTO_BEETPH = 94, -IPPROTO_ENCAP = 98, -IPPROTO_PIM = 103, -IPPROTO_COMP = 108, -IPPROTO_L2TP = 115, -IPPROTO_SCTP = 132, -IPPROTO_UDPLITE = 136, -IPPROTO_MPLS = 137, -IPPROTO_ETHERNET = 143, -IPPROTO_RAW = 255, -IPPROTO_MPTCP = 262, -IPPROTO_MAX = 263, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_addr { -pub s_addr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq { -pub imr_multiaddr: in_addr, -pub imr_interface: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreqn { -pub imr_multiaddr: in_addr, -pub imr_address: in_addr, -pub imr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq_source { -pub imr_multiaddr: __be32, -pub imr_interface: __be32, -pub imr_sourceaddr: __be32, -} -#[repr(C)] -pub struct ip_msfilter { -pub imsf_multiaddr: __be32, -pub imsf_interface: __be32, -pub imsf_fmode: __u32, -pub imsf_numsrc: __u32, -pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, -} -#[repr(C)] -pub struct ip_msfilter__bindgen_ty_1 { -pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, -pub __bindgen_anon_1: __BindgenUnionField, -pub bindgen_union_field: u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { -pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -pub imsf_slist_flex: __IncompleteArrayField<__be32>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_req { -pub gr_interface: __u32, -pub gr_group: __kernel_sockaddr_storage, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_source_req { -pub gsr_interface: __u32, -pub gsr_group: __kernel_sockaddr_storage, -pub gsr_source: __kernel_sockaddr_storage, -} -#[repr(C)] -pub struct group_filter { -pub __bindgen_anon_1: group_filter__bindgen_ty_1, -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u32; 67usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { -pub gf_interface_aux: __u32, -pub gf_group_aux: __kernel_sockaddr_storage, -pub gf_fmode_aux: __u32, -pub gf_numsrc_aux: __u32, -pub gf_slist: [__kernel_sockaddr_storage; 1usize], -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { -pub gf_interface: __u32, -pub gf_group: __kernel_sockaddr_storage, -pub gf_fmode: __u32, -pub gf_numsrc: __u32, -pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_pktinfo { -pub ipi_ifindex: crate::ctypes::c_int, -pub ipi_spec_dst: in_addr, -pub ipi_addr: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_in { -pub sin_family: __kernel_sa_family_t, -pub sin_port: __be16, -pub sin_addr: in_addr, -pub __pad: [crate::ctypes::c_uchar; 8usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct inotify_event { -pub wd: __s32, -pub mask: __u32, -pub cookie: __u32, -pub len: __u32, -pub name: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct iphdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub tos: __u8, -pub tot_len: __be16, -pub id: __be16, -pub frag_off: __be16, -pub ttl: __u8, -pub protocol: __u8, -pub check: __sum16, -pub __bindgen_anon_1: iphdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union iphdr__bindgen_ty_1 { -pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: __be32, -pub daddr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: __be32, -pub daddr: __be32, -} -impl iphdr { -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn ihl(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_ihl(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; -ihl as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_auth_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub reserved: __be16, -pub spi: __be32, -pub seq_no: __be32, -pub auth_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_esp_hdr { -pub spi: __be32, -pub seq_no: __be32, -pub enc_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_comp_hdr { -pub nexthdr: __u8, -pub flags: __u8, -pub cpi: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_beet_phdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub padlen: __u8, -pub reserved: __u8, -} -pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; -pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; -pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; -pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; -pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; -pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; -pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; -pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; -pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; -pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; -pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; -pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; -pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; -pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; -pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; -pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; -pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; -pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; -pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; -pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; -pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; -pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; -pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; -pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; -pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; -pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; -pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; -pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; -pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_2 { -IPV4_DEVCONF_FORWARDING = 1, -IPV4_DEVCONF_MC_FORWARDING = 2, -IPV4_DEVCONF_PROXY_ARP = 3, -IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, -IPV4_DEVCONF_SECURE_REDIRECTS = 5, -IPV4_DEVCONF_SEND_REDIRECTS = 6, -IPV4_DEVCONF_SHARED_MEDIA = 7, -IPV4_DEVCONF_RP_FILTER = 8, -IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, -IPV4_DEVCONF_BOOTP_RELAY = 10, -IPV4_DEVCONF_LOG_MARTIANS = 11, -IPV4_DEVCONF_TAG = 12, -IPV4_DEVCONF_ARPFILTER = 13, -IPV4_DEVCONF_MEDIUM_ID = 14, -IPV4_DEVCONF_NOXFRM = 15, -IPV4_DEVCONF_NOPOLICY = 16, -IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, -IPV4_DEVCONF_ARP_ANNOUNCE = 18, -IPV4_DEVCONF_ARP_IGNORE = 19, -IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, -IPV4_DEVCONF_ARP_ACCEPT = 21, -IPV4_DEVCONF_ARP_NOTIFY = 22, -IPV4_DEVCONF_ACCEPT_LOCAL = 23, -IPV4_DEVCONF_SRC_VMARK = 24, -IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, -IPV4_DEVCONF_ROUTE_LOCALNET = 26, -IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, -IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, -IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, -IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, -IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, -IPV4_DEVCONF_BC_FORWARDING = 32, -IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, -__IPV4_DEVCONF_MAX = 34, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_addr { -pub in6_u: in6_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union in6_addr__bindgen_ty_1 { -pub u6_addr8: [__u8; 16usize], -pub u6_addr16: [__be16; 8usize], -pub u6_addr32: [__be32; 4usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_in6 { -pub sin6_family: crate::ctypes::c_ushort, -pub sin6_port: __be16, -pub sin6_flowinfo: __be32, -pub sin6_addr: in6_addr, -pub sin6_scope_id: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6_mreq { -pub ipv6mr_multiaddr: in6_addr, -pub ipv6mr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_flowlabel_req { -pub flr_dst: in6_addr, -pub flr_label: __be32, -pub flr_action: __u8, -pub flr_share: __u8, -pub flr_flags: __u16, -pub flr_expires: __u16, -pub flr_linger: __u16, -pub __flr_pad: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_pktinfo { -pub ipi6_addr: in6_addr, -pub ipi6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ip6_mtuinfo { -pub ip6m_addr: sockaddr_in6, -pub ip6m_mtu: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_ifreq { -pub ifr6_addr: in6_addr, -pub ifr6_prefixlen: __u32, -pub ifr6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_rt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub type_: __u8, -pub segments_left: __u8, -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_opt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -} -#[repr(C)] -pub struct rt0_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rt2_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: in6_addr, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct ipv6_destopt_hao { -pub type_: __u8, -pub length: __u8, -pub addr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub flow_lbl: [__u8; 3usize], -pub payload_len: __be16, -pub nexthdr: __u8, -pub hop_limit: __u8, -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ipv6hdr__bindgen_ty_1 { -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -impl ipv6hdr { -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn priority(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_priority(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let priority: u8 = unsafe { ::core::mem::transmute(priority) }; -priority as u64 -}); -__bindgen_bitfield_unit -} -} -pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; -pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; -pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; -pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; -pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; -pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; -pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; -pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; -pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; -pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; -pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; -pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; -pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; -pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; -pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; -pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; -pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; -pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; -pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; -pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; -pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; -pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; -pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; -pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; -pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; -pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; -pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; -pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; -pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; -pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; -pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; -pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; -pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; -pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; -pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; -pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; -pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; -pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; -pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; -pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; -pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; -pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; -pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; -pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; -pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; -pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; -pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; -pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; -pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; -pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; -pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; -pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_3 { -DEVCONF_FORWARDING = 0, -DEVCONF_HOPLIMIT = 1, -DEVCONF_MTU6 = 2, -DEVCONF_ACCEPT_RA = 3, -DEVCONF_ACCEPT_REDIRECTS = 4, -DEVCONF_AUTOCONF = 5, -DEVCONF_DAD_TRANSMITS = 6, -DEVCONF_RTR_SOLICITS = 7, -DEVCONF_RTR_SOLICIT_INTERVAL = 8, -DEVCONF_RTR_SOLICIT_DELAY = 9, -DEVCONF_USE_TEMPADDR = 10, -DEVCONF_TEMP_VALID_LFT = 11, -DEVCONF_TEMP_PREFERED_LFT = 12, -DEVCONF_REGEN_MAX_RETRY = 13, -DEVCONF_MAX_DESYNC_FACTOR = 14, -DEVCONF_MAX_ADDRESSES = 15, -DEVCONF_FORCE_MLD_VERSION = 16, -DEVCONF_ACCEPT_RA_DEFRTR = 17, -DEVCONF_ACCEPT_RA_PINFO = 18, -DEVCONF_ACCEPT_RA_RTR_PREF = 19, -DEVCONF_RTR_PROBE_INTERVAL = 20, -DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, -DEVCONF_PROXY_NDP = 22, -DEVCONF_OPTIMISTIC_DAD = 23, -DEVCONF_ACCEPT_SOURCE_ROUTE = 24, -DEVCONF_MC_FORWARDING = 25, -DEVCONF_DISABLE_IPV6 = 26, -DEVCONF_ACCEPT_DAD = 27, -DEVCONF_FORCE_TLLAO = 28, -DEVCONF_NDISC_NOTIFY = 29, -DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, -DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, -DEVCONF_SUPPRESS_FRAG_NDISC = 32, -DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, -DEVCONF_USE_OPTIMISTIC = 34, -DEVCONF_ACCEPT_RA_MTU = 35, -DEVCONF_STABLE_SECRET = 36, -DEVCONF_USE_OIF_ADDRS_ONLY = 37, -DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, -DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, -DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, -DEVCONF_DROP_UNSOLICITED_NA = 41, -DEVCONF_KEEP_ADDR_ON_DOWN = 42, -DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, -DEVCONF_SEG6_ENABLED = 44, -DEVCONF_SEG6_REQUIRE_HMAC = 45, -DEVCONF_ENHANCED_DAD = 46, -DEVCONF_ADDR_GEN_MODE = 47, -DEVCONF_DISABLE_POLICY = 48, -DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, -DEVCONF_NDISC_TCLASS = 50, -DEVCONF_RPL_SEG_ENABLED = 51, -DEVCONF_RA_DEFRTR_METRIC = 52, -DEVCONF_IOAM6_ENABLED = 53, -DEVCONF_IOAM6_ID = 54, -DEVCONF_IOAM6_ID_WIDE = 55, -DEVCONF_NDISC_EVICT_NOCARRIER = 56, -DEVCONF_ACCEPT_UNTRACKED_NA = 57, -DEVCONF_MAX = 58, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum socket_state { -SS_FREE = 0, -SS_UNCONNECTED = 1, -SS_CONNECTING = 2, -SS_CONNECTED = 3, -SS_DISCONNECTING = 4, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pollfd { -pub fd: crate::ctypes::c_int, -pub events: crate::ctypes::c_short, -pub revents: crate::ctypes::c_short, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prctl_mm_map { -pub start_code: __u64, -pub end_code: __u64, -pub start_data: __u64, -pub end_data: __u64, -pub start_brk: __u64, -pub brk: __u64, -pub start_stack: __u64, -pub arg_start: __u64, -pub arg_end: __u64, -pub env_start: __u64, -pub env_end: __u64, -pub auxv: *mut __u64, -pub auxv_size: __u32, -pub exe_fd: __u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct rand_pool_info { -pub entropy_count: crate::ctypes::c_int, -pub buf_size: crate::ctypes::c_int, -pub buf: __IncompleteArrayField<__u32>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_timespec { -pub tv_sec: __kernel_time64_t, -pub tv_nsec: crate::ctypes::c_longlong, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_itimerspec { -pub it_interval: __kernel_timespec, -pub it_value: __kernel_timespec, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_old_timeval { -pub tv_sec: __kernel_long_t, -pub tv_usec: __kernel_long_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_old_timespec { -pub tv_sec: __kernel_old_time_t, -pub tv_nsec: crate::ctypes::c_long, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_old_itimerval { -pub it_interval: __kernel_old_timeval, -pub it_value: __kernel_old_timeval, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sock_timeval { -pub tv_sec: __s64, -pub tv_usec: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timespec { -pub tv_sec: __kernel_old_time_t, -pub tv_nsec: crate::ctypes::c_long, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timeval { -pub tv_sec: __kernel_old_time_t, -pub tv_usec: __kernel_suseconds_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct itimerspec { -pub it_interval: timespec, -pub it_value: timespec, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct itimerval { -pub it_interval: timeval, -pub it_value: timeval, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timezone { -pub tz_minuteswest: crate::ctypes::c_int, -pub tz_dsttime: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rusage { -pub ru_utime: __kernel_old_timeval, -pub ru_stime: __kernel_old_timeval, -pub ru_maxrss: __kernel_long_t, -pub ru_ixrss: __kernel_long_t, -pub ru_idrss: __kernel_long_t, -pub ru_isrss: __kernel_long_t, -pub ru_minflt: __kernel_long_t, -pub ru_majflt: __kernel_long_t, -pub ru_nswap: __kernel_long_t, -pub ru_inblock: __kernel_long_t, -pub ru_oublock: __kernel_long_t, -pub ru_msgsnd: __kernel_long_t, -pub ru_msgrcv: __kernel_long_t, -pub ru_nsignals: __kernel_long_t, -pub ru_nvcsw: __kernel_long_t, -pub ru_nivcsw: __kernel_long_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rlimit { -pub rlim_cur: __kernel_ulong_t, -pub rlim_max: __kernel_ulong_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rlimit64 { -pub rlim_cur: __u64, -pub rlim_max: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct clone_args { -pub flags: __u64, -pub pidfd: __u64, -pub child_tid: __u64, -pub parent_tid: __u64, -pub exit_signal: __u64, -pub stack: __u64, -pub stack_size: __u64, -pub tls: __u64, -pub set_tid: __u64, -pub set_tid_size: __u64, -pub cgroup: __u64, -} -pub type sigset_t = crate::ctypes::c_ulong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __new_sigset_t { -pub sig: [crate::ctypes::c_ulong; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigstack { -pub the_stack: *mut crate::ctypes::c_char, -pub cur_status: crate::ctypes::c_int, -} -pub type __signalfn_t = ::core::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::core::option::Option; -pub type __sigrestore_t = __restorefn_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __new_sigaction { -pub sa_handler: __sighandler_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_restorer: __sigrestore_t, -pub sa_mask: __new_sigset_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigaction { -pub sa_handler: __sighandler_t, -pub sa_mask: sigset_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_restorer: ::core::option::Option, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigaltstack { -pub ss_sp: *mut crate::ctypes::c_void, -pub ss_flags: crate::ctypes::c_int, -pub ss_size: __kernel_size_t, -} -pub type stack_t = sigaltstack; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { -pub sival_int: crate::ctypes::c_int, -pub sival_ptr: *mut crate::ctypes::c_void, -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { -pub _kill: __sifields__bindgen_ty_1, -pub _timer: __sifields__bindgen_ty_2, -pub _rt: __sifields__bindgen_ty_3, -pub _sigchld: __sifields__bindgen_ty_4, -pub _sigfault: __sifields__bindgen_ty_5, -pub _sigpoll: __sifields__bindgen_ty_6, -pub _sigsys: __sifields__bindgen_ty_7, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_1 { -pub _pid: __kernel_pid_t, -pub _uid: __kernel_uid32_t, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sifields__bindgen_ty_2 { -pub _tid: __kernel_timer_t, -pub _overrun: crate::ctypes::c_int, -pub _sigval: sigval_t, -pub _sys_private: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sifields__bindgen_ty_3 { -pub _pid: __kernel_pid_t, -pub _uid: __kernel_uid32_t, -pub _sigval: sigval_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_4 { -pub _pid: __kernel_pid_t, -pub _uid: __kernel_uid32_t, -pub _status: crate::ctypes::c_int, -pub _utime: __kernel_clock_t, -pub _stime: __kernel_clock_t, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sifields__bindgen_ty_5 { -pub _addr: *mut crate::ctypes::c_void, -pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { -pub _trapno: crate::ctypes::c_int, -pub _addr_lsb: crate::ctypes::c_short, -pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, -pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { -pub _dummy_bnd: [crate::ctypes::c_char; 4usize], -pub _lower: *mut crate::ctypes::c_void, -pub _upper: *mut crate::ctypes::c_void, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 { -pub _dummy_pkey: [crate::ctypes::c_char; 4usize], -pub _pkey: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { -pub _data: crate::ctypes::c_ulong, -pub _type: __u32, -pub _flags: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_6 { -pub _band: crate::ctypes::c_long, -pub _fd: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_7 { -pub _call_addr: *mut crate::ctypes::c_void, -pub _syscall: crate::ctypes::c_int, -pub _arch: crate::ctypes::c_uint, +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] -pub struct siginfo { -pub __bindgen_anon_1: siginfo__bindgen_ty_1, +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { -pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, -pub _si_pad: [crate::ctypes::c_int; 32usize], +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, } #[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { -pub si_signo: crate::ctypes::c_int, -pub si_errno: crate::ctypes::c_int, -pub si_code: crate::ctypes::c_int, -pub _sifields: __sifields, +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, } -pub type siginfo_t = siginfo; #[repr(C)] #[derive(Copy, Clone)] -pub struct sigevent { -pub sigev_value: sigval_t, -pub sigev_signo: crate::ctypes::c_int, -pub sigev_notify: crate::ctypes::c_int, -pub _sigev_un: sigevent__bindgen_ty_1, +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], } #[repr(C)] #[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { -pub _pad: [crate::ctypes::c_int; 13usize], -pub _tid: crate::ctypes::c_int, -pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { -pub _function: ::core::option::Option, -pub _attribute: *mut crate::ctypes::c_void, +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, } -pub type sigevent_t = sigevent; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct statx_timestamp { -pub tv_sec: __s64, -pub tv_nsec: __u32, -pub __reserved: __s32, +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct statx { -pub stx_mask: __u32, -pub stx_blksize: __u32, -pub stx_attributes: __u64, -pub stx_nlink: __u32, -pub stx_uid: __u32, -pub stx_gid: __u32, -pub stx_mode: __u16, -pub __spare0: [__u16; 1usize], -pub stx_ino: __u64, -pub stx_size: __u64, -pub stx_blocks: __u64, -pub stx_attributes_mask: __u64, -pub stx_atime: statx_timestamp, -pub stx_btime: statx_timestamp, -pub stx_ctime: statx_timestamp, -pub stx_mtime: statx_timestamp, -pub stx_rdev_major: __u32, -pub stx_rdev_minor: __u32, -pub stx_dev_major: __u32, -pub stx_dev_minor: __u32, -pub stx_mnt_id: __u64, -pub stx_dio_mem_align: __u32, -pub stx_dio_offset_align: __u32, -pub __spare3: [__u64; 12usize], +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sysinfo { -pub uptime: __kernel_long_t, -pub loads: [__kernel_ulong_t; 3usize], -pub totalram: __kernel_ulong_t, -pub freeram: __kernel_ulong_t, -pub sharedram: __kernel_ulong_t, -pub bufferram: __kernel_ulong_t, -pub totalswap: __kernel_ulong_t, -pub freeswap: __kernel_ulong_t, -pub procs: __u16, -pub pad: __u16, -pub totalhigh: __kernel_ulong_t, -pub freehigh: __kernel_ulong_t, -pub mem_unit: __u32, -pub _f: [crate::ctypes::c_char; 8usize], +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcphdr { -pub source: __be16, -pub dest: __be16, -pub seq: __be32, -pub ack_seq: __be32, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub window: __be16, -pub check: __sum16, -pub urg_ptr: __be16, -} -impl tcphdr { -#[inline] -pub fn doff(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } -} -#[inline] -pub fn set_doff(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn res1(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } -} -#[inline] -pub fn set_res1(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn cwr(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } -} -#[inline] -pub fn set_cwr(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn ece(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } -} -#[inline] -pub fn set_ece(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 1u8, val as u64) -} +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, } -#[inline] -pub fn urg(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, } -#[inline] -pub fn set_urg(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(10usize, 1u8, val as u64) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], } -#[inline] -pub fn ack(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct futex_waitv { +pub val: __u64, +pub uaddr: __u64, +pub flags: __u32, +pub __reserved: __u32, } -#[inline] -pub fn set_ack(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(11usize, 1u8, val as u64) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct robust_list { +pub next: *mut robust_list, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct robust_list_head { +pub list: robust_list, +pub futex_offset: crate::ctypes::c_long, +pub list_op_pending: *mut robust_list, } -#[inline] -pub fn psh(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } +#[repr(C)] +#[derive(Debug)] +pub struct inotify_event { +pub wd: __s32, +pub mask: __u32, +pub cookie: __u32, +pub len: __u32, +pub name: __IncompleteArrayField, } -#[inline] -pub fn set_psh(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(12usize, 1u8, val as u64) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct pollfd { +pub fd: crate::ctypes::c_int, +pub events: crate::ctypes::c_short, +pub revents: crate::ctypes::c_short, } +#[repr(C)] +#[derive(Debug)] +pub struct rand_pool_info { +pub entropy_count: crate::ctypes::c_int, +pub buf_size: crate::ctypes::c_int, +pub buf: __IncompleteArrayField<__u32>, } -#[inline] -pub fn rst(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, } -#[inline] -pub fn set_rst(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(13usize, 1u8, val as u64) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, } -#[inline] -pub fn syn(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, } -#[inline] -pub fn set_syn(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(14usize, 1u8, val as u64) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, } -#[inline] -pub fn fin(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, } -#[inline] -pub fn set_fin(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(15usize, 1u8, val as u64) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct timeval { +pub tv_sec: __kernel_old_time_t, +pub tv_usec: __kernel_suseconds_t, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct itimerspec { +pub it_interval: timespec, +pub it_value: timespec, } -#[inline] -pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let doff: u16 = unsafe { ::core::mem::transmute(doff) }; -doff as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let res1: u16 = unsafe { ::core::mem::transmute(res1) }; -res1 as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; -cwr as u64 -}); -__bindgen_bitfield_unit.set(9usize, 1u8, { -let ece: u16 = unsafe { ::core::mem::transmute(ece) }; -ece as u64 -}); -__bindgen_bitfield_unit.set(10usize, 1u8, { -let urg: u16 = unsafe { ::core::mem::transmute(urg) }; -urg as u64 -}); -__bindgen_bitfield_unit.set(11usize, 1u8, { -let ack: u16 = unsafe { ::core::mem::transmute(ack) }; -ack as u64 -}); -__bindgen_bitfield_unit.set(12usize, 1u8, { -let psh: u16 = unsafe { ::core::mem::transmute(psh) }; -psh as u64 -}); -__bindgen_bitfield_unit.set(13usize, 1u8, { -let rst: u16 = unsafe { ::core::mem::transmute(rst) }; -rst as u64 -}); -__bindgen_bitfield_unit.set(14usize, 1u8, { -let syn: u16 = unsafe { ::core::mem::transmute(syn) }; -syn as u64 -}); -__bindgen_bitfield_unit.set(15usize, 1u8, { -let fin: u16 = unsafe { ::core::mem::transmute(fin) }; -fin as u64 -}); -__bindgen_bitfield_unit +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct itimerval { +pub it_interval: timeval, +pub it_value: timeval, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct timezone { +pub tz_minuteswest: crate::ctypes::c_int, +pub tz_dsttime: crate::ctypes::c_int, } #[repr(C)] -#[derive(Copy, Clone)] -pub union tcp_word_hdr { -pub hdr: tcphdr, -pub words: [__be32; 5usize], -} -pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; -pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; -pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; -pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; -pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; -pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; -pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; -pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; -pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; -pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_4 { -TCP_FLAG_CWR = 8388608, -TCP_FLAG_ECE = 4194304, -TCP_FLAG_URG = 2097152, -TCP_FLAG_ACK = 1048576, -TCP_FLAG_PSH = 524288, -TCP_FLAG_RST = 262144, -TCP_FLAG_SYN = 131072, -TCP_FLAG_FIN = 65536, -TCP_RESERVED_BITS = 251658240, -TCP_DATA_OFFSET = 4026531840, +#[derive(Debug, Copy, Clone)] +pub struct rusage { +pub ru_utime: __kernel_old_timeval, +pub ru_stime: __kernel_old_timeval, +pub ru_maxrss: __kernel_long_t, +pub ru_ixrss: __kernel_long_t, +pub ru_idrss: __kernel_long_t, +pub ru_isrss: __kernel_long_t, +pub ru_minflt: __kernel_long_t, +pub ru_majflt: __kernel_long_t, +pub ru_nswap: __kernel_long_t, +pub ru_inblock: __kernel_long_t, +pub ru_oublock: __kernel_long_t, +pub ru_msgsnd: __kernel_long_t, +pub ru_msgrcv: __kernel_long_t, +pub ru_nsignals: __kernel_long_t, +pub ru_nvcsw: __kernel_long_t, +pub ru_nivcsw: __kernel_long_t, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_repair_opt { -pub opt_code: __u32, -pub opt_val: __u32, +pub struct rlimit { +pub rlim_cur: __kernel_ulong_t, +pub rlim_max: __kernel_ulong_t, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_repair_window { -pub snd_wl1: __u32, -pub snd_wnd: __u32, -pub max_window: __u32, -pub rcv_wnd: __u32, -pub rcv_wup: __u32, -} -pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; -pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; -pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; -pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_5 { -TCP_NO_QUEUE = 0, -TCP_RECV_QUEUE = 1, -TCP_SEND_QUEUE = 2, -TCP_QUEUES_NR = 3, +pub struct rlimit64 { +pub rlim_cur: __u64, +pub rlim_max: __u64, } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_fastopen_client_fail { -TFO_STATUS_UNSPEC = 0, -TFO_COOKIE_UNAVAILABLE = 1, -TFO_DATA_NOT_ACKED = 2, -TFO_SYN_RETRANSMITTED = 3, +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct clone_args { +pub flags: __u64, +pub pidfd: __u64, +pub child_tid: __u64, +pub parent_tid: __u64, +pub exit_signal: __u64, +pub stack: __u64, +pub stack_size: __u64, +pub tls: __u64, +pub set_tid: __u64, +pub set_tid_size: __u64, +pub cgroup: __u64, } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_ca_state { -TCP_CA_Open = 0, -TCP_CA_Disorder = 1, -TCP_CA_CWR = 2, -TCP_CA_Recovery = 3, -TCP_CA_Loss = 4, +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __new_sigset_t { +pub sig: [crate::ctypes::c_ulong; 2usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_info { -pub tcpi_state: __u8, -pub tcpi_ca_state: __u8, -pub tcpi_retransmits: __u8, -pub tcpi_probes: __u8, -pub tcpi_backoff: __u8, -pub tcpi_options: __u8, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub tcpi_rto: __u32, -pub tcpi_ato: __u32, -pub tcpi_snd_mss: __u32, -pub tcpi_rcv_mss: __u32, -pub tcpi_unacked: __u32, -pub tcpi_sacked: __u32, -pub tcpi_lost: __u32, -pub tcpi_retrans: __u32, -pub tcpi_fackets: __u32, -pub tcpi_last_data_sent: __u32, -pub tcpi_last_ack_sent: __u32, -pub tcpi_last_data_recv: __u32, -pub tcpi_last_ack_recv: __u32, -pub tcpi_pmtu: __u32, -pub tcpi_rcv_ssthresh: __u32, -pub tcpi_rtt: __u32, -pub tcpi_rttvar: __u32, -pub tcpi_snd_ssthresh: __u32, -pub tcpi_snd_cwnd: __u32, -pub tcpi_advmss: __u32, -pub tcpi_reordering: __u32, -pub tcpi_rcv_rtt: __u32, -pub tcpi_rcv_space: __u32, -pub tcpi_total_retrans: __u32, -pub tcpi_pacing_rate: __u64, -pub tcpi_max_pacing_rate: __u64, -pub tcpi_bytes_acked: __u64, -pub tcpi_bytes_received: __u64, -pub tcpi_segs_out: __u32, -pub tcpi_segs_in: __u32, -pub tcpi_notsent_bytes: __u32, -pub tcpi_min_rtt: __u32, -pub tcpi_data_segs_in: __u32, -pub tcpi_data_segs_out: __u32, -pub tcpi_delivery_rate: __u64, -pub tcpi_busy_time: __u64, -pub tcpi_rwnd_limited: __u64, -pub tcpi_sndbuf_limited: __u64, -pub tcpi_delivered: __u32, -pub tcpi_delivered_ce: __u32, -pub tcpi_bytes_sent: __u64, -pub tcpi_bytes_retrans: __u64, -pub tcpi_dsack_dups: __u32, -pub tcpi_reord_seen: __u32, -pub tcpi_rcv_ooopack: __u32, -pub tcpi_snd_wnd: __u32, -pub tcpi_rcv_wnd: __u32, -pub tcpi_rehash: __u32, +pub struct sigstack { +pub the_stack: *mut crate::ctypes::c_char, +pub cur_status: crate::ctypes::c_int, } -impl tcp_info { -#[inline] -pub fn tcpi_snd_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __new_sigaction { +pub sa_handler: __sighandler_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_restorer: __sigrestore_t, +pub sa_mask: __new_sigset_t, } -#[inline] -pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sigaction { +pub sa_handler: __sighandler_t, +pub sa_mask: sigset_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_restorer: ::core::option::Option, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sigaltstack { +pub ss_sp: *mut crate::ctypes::c_void, +pub ss_flags: crate::ctypes::c_int, +pub ss_size: __kernel_size_t, } -#[inline] -pub fn tcpi_rcv_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_1 { +pub _pid: __kernel_pid_t, +pub _uid: __kernel_uid32_t, } -#[inline] -pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __sifields__bindgen_ty_2 { +pub _tid: __kernel_timer_t, +pub _overrun: crate::ctypes::c_int, +pub _sigval: sigval_t, +pub _sys_private: crate::ctypes::c_int, } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __sifields__bindgen_ty_3 { +pub _pid: __kernel_pid_t, +pub _uid: __kernel_uid32_t, +pub _sigval: sigval_t, } -#[inline] -pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_4 { +pub _pid: __kernel_pid_t, +pub _uid: __kernel_uid32_t, +pub _status: crate::ctypes::c_int, +pub _utime: __kernel_clock_t, +pub _stime: __kernel_clock_t, } -#[inline] -pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __sifields__bindgen_ty_5 { +pub _addr: *mut crate::ctypes::c_void, +pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { +pub _dummy_bnd: [crate::ctypes::c_char; 4usize], +pub _lower: *mut crate::ctypes::c_void, +pub _upper: *mut crate::ctypes::c_void, } -#[inline] -pub fn tcpi_fastopen_client_fail(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 { +pub _dummy_pkey: [crate::ctypes::c_char; 4usize], +pub _pkey: __u32, } -#[inline] -pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 2u8, val as u64) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { +pub _data: crate::ctypes::c_ulong, +pub _type: __u32, +pub _flags: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_6 { +pub _band: crate::ctypes::c_long, +pub _fd: crate::ctypes::c_int, } -#[inline] -pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; -tcpi_snd_wscale as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; -tcpi_rcv_wscale as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; -tcpi_delivery_rate_app_limited as u64 -}); -__bindgen_bitfield_unit.set(9usize, 2u8, { -let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; -tcpi_fastopen_client_fail as u64 -}); -__bindgen_bitfield_unit +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_7 { +pub _call_addr: *mut crate::ctypes::c_void, +pub _syscall: crate::ctypes::c_int, +pub _arch: crate::ctypes::c_uint, } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo { +pub __bindgen_anon_1: siginfo__bindgen_ty_1, } -pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; -pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; -pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; -pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; -pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; -pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; -pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; -pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; -pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; -pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; -pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; -pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; -pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; -pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; -pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; -pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; -pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; -pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; -pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; -pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; -pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; -pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; -pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; -pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; -pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; -pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; -pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; -pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_6 { -TCP_NLA_PAD = 0, -TCP_NLA_BUSY = 1, -TCP_NLA_RWND_LIMITED = 2, -TCP_NLA_SNDBUF_LIMITED = 3, -TCP_NLA_DATA_SEGS_OUT = 4, -TCP_NLA_TOTAL_RETRANS = 5, -TCP_NLA_PACING_RATE = 6, -TCP_NLA_DELIVERY_RATE = 7, -TCP_NLA_SND_CWND = 8, -TCP_NLA_REORDERING = 9, -TCP_NLA_MIN_RTT = 10, -TCP_NLA_RECUR_RETRANS = 11, -TCP_NLA_DELIVERY_RATE_APP_LMT = 12, -TCP_NLA_SNDQ_SIZE = 13, -TCP_NLA_CA_STATE = 14, -TCP_NLA_SND_SSTHRESH = 15, -TCP_NLA_DELIVERED = 16, -TCP_NLA_DELIVERED_CE = 17, -TCP_NLA_BYTES_SENT = 18, -TCP_NLA_BYTES_RETRANS = 19, -TCP_NLA_DSACK_DUPS = 20, -TCP_NLA_REORD_SEEN = 21, -TCP_NLA_SRTT = 22, -TCP_NLA_TIMEOUT_REHASH = 23, -TCP_NLA_BYTES_NOTSENT = 24, -TCP_NLA_EDT = 25, -TCP_NLA_TTL = 26, -TCP_NLA_REHASH = 27, +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { +pub si_signo: crate::ctypes::c_int, +pub si_errno: crate::ctypes::c_int, +pub si_code: crate::ctypes::c_int, +pub _sifields: __sifields, } #[repr(C)] #[derive(Copy, Clone)] -pub struct tcp_md5sig { -pub tcpm_addr: __kernel_sockaddr_storage, -pub tcpm_flags: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_ifindex: crate::ctypes::c_int, -pub tcpm_key: [__u8; 80usize], +pub struct sigevent { +pub sigev_value: sigval_t, +pub sigev_signo: crate::ctypes::c_int, +pub sigev_notify: crate::ctypes::c_int, +pub _sigev_un: sigevent__bindgen_ty_1, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_diag_md5sig { -pub tcpm_family: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_addr: [__be32; 4usize], -pub tcpm_key: [__u8; 80usize], +pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { +pub _function: ::core::option::Option, +pub _attribute: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_zerocopy_receive { -pub address: __u64, -pub length: __u32, -pub recv_skip_hint: __u32, -pub inq: __u32, -pub err: __s32, -pub copybuf_address: __u64, -pub copybuf_len: __s32, -pub flags: __u32, -pub msg_control: __u64, -pub msg_controllen: __u64, -pub msg_flags: __u32, -pub reserved: __u32, +pub struct statx_timestamp { +pub tv_sec: __s64, +pub tv_nsec: __u32, +pub __reserved: __s32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statx { +pub stx_mask: __u32, +pub stx_blksize: __u32, +pub stx_attributes: __u64, +pub stx_nlink: __u32, +pub stx_uid: __u32, +pub stx_gid: __u32, +pub stx_mode: __u16, +pub __spare0: [__u16; 1usize], +pub stx_ino: __u64, +pub stx_size: __u64, +pub stx_blocks: __u64, +pub stx_attributes_mask: __u64, +pub stx_atime: statx_timestamp, +pub stx_btime: statx_timestamp, +pub stx_ctime: statx_timestamp, +pub stx_mtime: statx_timestamp, +pub stx_rdev_major: __u32, +pub stx_rdev_minor: __u32, +pub stx_dev_major: __u32, +pub stx_dev_minor: __u32, +pub stx_mnt_id: __u64, +pub stx_dio_mem_align: __u32, +pub stx_dio_offset_align: __u32, +pub __spare3: [__u64; 12usize], } -pub type cc_t = crate::ctypes::c_uchar; -pub type speed_t = crate::ctypes::c_uint; -pub type tcflag_t = crate::ctypes::c_ulong; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct termio { @@ -4767,54 +664,2046 @@ } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct winsize { -pub ws_row: crate::ctypes::c_ushort, -pub ws_col: crate::ctypes::c_ushort, -pub ws_xpixel: crate::ctypes::c_ushort, -pub ws_ypixel: crate::ctypes::c_ushort, +pub struct winsize { +pub ws_row: crate::ctypes::c_ushort, +pub ws_col: crate::ctypes::c_ushort, +pub ws_xpixel: crate::ctypes::c_ushort, +pub ws_ypixel: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub iov_base: *mut crate::ctypes::c_void, +pub iov_len: __kernel_size_t, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct uffd_msg { +pub event: __u8, +pub reserved1: __u8, +pub reserved2: __u16, +pub reserved3: __u32, +pub arg: uffd_msg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { +pub flags: __u64, +pub address: __u64, +pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { +pub ufd: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { +pub from: __u64, +pub to: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { +pub start: __u64, +pub end: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { +pub reserved1: __u64, +pub reserved2: __u64, +pub reserved3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_api { +pub api: __u64, +pub features: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_range { +pub start: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_register { +pub range: uffdio_range, +pub mode: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_copy { +pub dst: __u64, +pub src: __u64, +pub len: __u64, +pub mode: __u64, +pub copy: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_zeropage { +pub range: uffdio_range, +pub mode: __u64, +pub zeropage: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_writeprotect { +pub range: uffdio_range, +pub mode: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_continue { +pub range: uffdio_range, +pub mode: __u64, +pub mapped: __s64, +} +#[repr(C)] +#[derive(Debug)] +pub struct linux_dirent64 { +pub d_ino: crate::ctypes::c_ulonglong, +pub d_off: crate::ctypes::c_longlong, +pub d_reclen: __u16, +pub d_type: __u8, +pub d_name: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat { +pub st_dev: crate::ctypes::c_ushort, +pub st_ino: __kernel_ino_t, +pub st_mode: __kernel_mode_t, +pub st_nlink: crate::ctypes::c_short, +pub st_uid: crate::ctypes::c_ushort, +pub st_gid: crate::ctypes::c_ushort, +pub st_rdev: crate::ctypes::c_ushort, +pub st_size: crate::ctypes::c_long, +pub st_atime: crate::ctypes::c_long, +pub st_atime_nsec: crate::ctypes::c_ulong, +pub st_mtime: crate::ctypes::c_long, +pub st_mtime_nsec: crate::ctypes::c_ulong, +pub st_ctime: crate::ctypes::c_long, +pub st_ctime_nsec: crate::ctypes::c_ulong, +pub st_blksize: crate::ctypes::c_long, +pub st_blocks: crate::ctypes::c_long, +pub __unused4: [crate::ctypes::c_ulong; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat64 { +pub st_dev: crate::ctypes::c_ulonglong, +pub st_ino: crate::ctypes::c_ulonglong, +pub st_mode: crate::ctypes::c_uint, +pub st_nlink: crate::ctypes::c_uint, +pub st_uid: crate::ctypes::c_uint, +pub st_gid: crate::ctypes::c_uint, +pub st_rdev: crate::ctypes::c_ulonglong, +pub __pad3: [crate::ctypes::c_uchar; 8usize], +pub st_size: crate::ctypes::c_longlong, +pub st_blksize: crate::ctypes::c_uint, +pub __pad4: [crate::ctypes::c_uchar; 8usize], +pub st_blocks: crate::ctypes::c_uint, +pub st_atime: crate::ctypes::c_uint, +pub st_atime_nsec: crate::ctypes::c_uint, +pub st_mtime: crate::ctypes::c_uint, +pub st_mtime_nsec: crate::ctypes::c_uint, +pub st_ctime: crate::ctypes::c_uint, +pub st_ctime_nsec: crate::ctypes::c_uint, +pub __unused4: crate::ctypes::c_uint, +pub __unused5: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u32, +pub f_bfree: __u32, +pub f_bavail: __u32, +pub f_files: __u32, +pub f_ffree: __u32, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct iovec { -pub iov_base: *mut crate::ctypes::c_void, -pub iov_len: __kernel_size_t, +pub struct statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_un { -pub sun_family: __kernel_sa_family_t, -pub sun_path: [crate::ctypes::c_char; 108usize], +pub struct compat_statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct oldold_utsname { -pub sysname: [crate::ctypes::c_char; 9usize], -pub nodename: [crate::ctypes::c_char; 9usize], -pub release: [crate::ctypes::c_char; 9usize], -pub version: [crate::ctypes::c_char; 9usize], -pub machine: [crate::ctypes::c_char; 9usize], +pub struct user_desc { +pub entry_number: crate::ctypes::c_uint, +pub base_addr: crate::ctypes::c_uint, +pub limit: crate::ctypes::c_uint, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub __bindgen_padding_0: [u8; 3usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct old_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], +pub struct kernel_sigset_t { +pub sig: [crate::ctypes::c_ulong; 1usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct new_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], -pub domainname: [crate::ctypes::c_char; 65usize], +pub struct kernel_sigaction { +pub sa_handler_kernel: __kernel_sighandler_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_mask: kernel_sigset_t, } -impl membarrier_cmd { -pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; +pub const LINUX_VERSION_CODE: u32 = 393984; +pub const LINUX_VERSION_MAJOR: u32 = 6; +pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; +pub const LINUX_VERSION_SUBLEVEL: u32 = 0; +pub const AT_SYSINFO_EHDR: u32 = 33; +pub const AT_ADI_BLKSZ: u32 = 48; +pub const AT_ADI_NBITS: u32 = 49; +pub const AT_ADI_UEONADI: u32 = 50; +pub const AT_VECTOR_SIZE_ARCH: u32 = 4; +pub const AT_NULL: u32 = 0; +pub const AT_IGNORE: u32 = 1; +pub const AT_EXECFD: u32 = 2; +pub const AT_PHDR: u32 = 3; +pub const AT_PHENT: u32 = 4; +pub const AT_PHNUM: u32 = 5; +pub const AT_PAGESZ: u32 = 6; +pub const AT_BASE: u32 = 7; +pub const AT_FLAGS: u32 = 8; +pub const AT_ENTRY: u32 = 9; +pub const AT_NOTELF: u32 = 10; +pub const AT_UID: u32 = 11; +pub const AT_EUID: u32 = 12; +pub const AT_GID: u32 = 13; +pub const AT_EGID: u32 = 14; +pub const AT_PLATFORM: u32 = 15; +pub const AT_HWCAP: u32 = 16; +pub const AT_CLKTCK: u32 = 17; +pub const AT_SECURE: u32 = 23; +pub const AT_BASE_PLATFORM: u32 = 24; +pub const AT_RANDOM: u32 = 25; +pub const AT_HWCAP2: u32 = 26; +pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; +pub const AT_RSEQ_ALIGN: u32 = 28; +pub const AT_EXECFN: u32 = 31; +pub const AT_MINSIGSTKSZ: u32 = 51; +pub const __FD_SETSIZE: u32 = 1024; +pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; +pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; +pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; +pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; +pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; +pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; +pub const VFS_CAP_REVISION_SHIFT: u32 = 24; +pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; +pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; +pub const VFS_CAP_REVISION_1: u32 = 16777216; +pub const VFS_CAP_U32_1: u32 = 1; +pub const VFS_CAP_REVISION_2: u32 = 33554432; +pub const VFS_CAP_U32_2: u32 = 2; +pub const VFS_CAP_REVISION_3: u32 = 50331648; +pub const VFS_CAP_U32_3: u32 = 2; +pub const VFS_CAP_U32: u32 = 2; +pub const VFS_CAP_REVISION: u32 = 50331648; +pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S: u32 = 1; +pub const CAP_CHOWN: u32 = 0; +pub const CAP_DAC_OVERRIDE: u32 = 1; +pub const CAP_DAC_READ_SEARCH: u32 = 2; +pub const CAP_FOWNER: u32 = 3; +pub const CAP_FSETID: u32 = 4; +pub const CAP_KILL: u32 = 5; +pub const CAP_SETGID: u32 = 6; +pub const CAP_SETUID: u32 = 7; +pub const CAP_SETPCAP: u32 = 8; +pub const CAP_LINUX_IMMUTABLE: u32 = 9; +pub const CAP_NET_BIND_SERVICE: u32 = 10; +pub const CAP_NET_BROADCAST: u32 = 11; +pub const CAP_NET_ADMIN: u32 = 12; +pub const CAP_NET_RAW: u32 = 13; +pub const CAP_IPC_LOCK: u32 = 14; +pub const CAP_IPC_OWNER: u32 = 15; +pub const CAP_SYS_MODULE: u32 = 16; +pub const CAP_SYS_RAWIO: u32 = 17; +pub const CAP_SYS_CHROOT: u32 = 18; +pub const CAP_SYS_PTRACE: u32 = 19; +pub const CAP_SYS_PACCT: u32 = 20; +pub const CAP_SYS_ADMIN: u32 = 21; +pub const CAP_SYS_BOOT: u32 = 22; +pub const CAP_SYS_NICE: u32 = 23; +pub const CAP_SYS_RESOURCE: u32 = 24; +pub const CAP_SYS_TIME: u32 = 25; +pub const CAP_SYS_TTY_CONFIG: u32 = 26; +pub const CAP_MKNOD: u32 = 27; +pub const CAP_LEASE: u32 = 28; +pub const CAP_AUDIT_WRITE: u32 = 29; +pub const CAP_AUDIT_CONTROL: u32 = 30; +pub const CAP_SETFCAP: u32 = 31; +pub const CAP_MAC_OVERRIDE: u32 = 32; +pub const CAP_MAC_ADMIN: u32 = 33; +pub const CAP_SYSLOG: u32 = 34; +pub const CAP_WAKE_ALARM: u32 = 35; +pub const CAP_BLOCK_SUSPEND: u32 = 36; +pub const CAP_AUDIT_READ: u32 = 37; +pub const CAP_PERFMON: u32 = 38; +pub const CAP_BPF: u32 = 39; +pub const CAP_CHECKPOINT_RESTORE: u32 = 40; +pub const CAP_LAST_CAP: u32 = 40; +pub const O_APPEND: u32 = 8; +pub const FASYNC: u32 = 64; +pub const O_CREAT: u32 = 512; +pub const O_TRUNC: u32 = 1024; +pub const O_EXCL: u32 = 2048; +pub const O_DSYNC: u32 = 8192; +pub const O_NONBLOCK: u32 = 16384; +pub const O_NDELAY: u32 = 16388; +pub const O_NOCTTY: u32 = 32768; +pub const O_LARGEFILE: u32 = 262144; +pub const O_DIRECT: u32 = 1048576; +pub const O_NOATIME: u32 = 2097152; +pub const O_CLOEXEC: u32 = 4194304; +pub const __O_SYNC: u32 = 8388608; +pub const O_SYNC: u32 = 8396800; +pub const O_PATH: u32 = 16777216; +pub const __O_TMPFILE: u32 = 33554432; +pub const F_GETOWN: u32 = 5; +pub const F_SETOWN: u32 = 6; +pub const F_GETLK: u32 = 7; +pub const F_SETLK: u32 = 8; +pub const F_SETLKW: u32 = 9; +pub const F_RDLCK: u32 = 1; +pub const F_WRLCK: u32 = 2; +pub const F_UNLCK: u32 = 3; +pub const O_ACCMODE: u32 = 3; +pub const O_RDONLY: u32 = 0; +pub const O_WRONLY: u32 = 1; +pub const O_RDWR: u32 = 2; +pub const O_DIRECTORY: u32 = 65536; +pub const O_NOFOLLOW: u32 = 131072; +pub const O_TMPFILE: u32 = 33619968; +pub const O_TMPFILE_MASK: u32 = 33620480; +pub const F_DUPFD: u32 = 0; +pub const F_GETFD: u32 = 1; +pub const F_SETFD: u32 = 2; +pub const F_GETFL: u32 = 3; +pub const F_SETFL: u32 = 4; +pub const F_SETSIG: u32 = 10; +pub const F_GETSIG: u32 = 11; +pub const F_GETLK64: u32 = 12; +pub const F_SETLK64: u32 = 13; +pub const F_SETLKW64: u32 = 14; +pub const F_SETOWN_EX: u32 = 15; +pub const F_GETOWN_EX: u32 = 16; +pub const F_GETOWNER_UIDS: u32 = 17; +pub const F_OFD_GETLK: u32 = 36; +pub const F_OFD_SETLK: u32 = 37; +pub const F_OFD_SETLKW: u32 = 38; +pub const F_OWNER_TID: u32 = 0; +pub const F_OWNER_PID: u32 = 1; +pub const F_OWNER_PGRP: u32 = 2; +pub const FD_CLOEXEC: u32 = 1; +pub const F_EXLCK: u32 = 4; +pub const F_SHLCK: u32 = 8; +pub const LOCK_SH: u32 = 1; +pub const LOCK_EX: u32 = 2; +pub const LOCK_NB: u32 = 4; +pub const LOCK_UN: u32 = 8; +pub const LOCK_MAND: u32 = 32; +pub const LOCK_READ: u32 = 64; +pub const LOCK_WRITE: u32 = 128; +pub const LOCK_RW: u32 = 192; +pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; +pub const RESOLVE_NO_XDEV: u32 = 1; +pub const RESOLVE_NO_MAGICLINKS: u32 = 2; +pub const RESOLVE_NO_SYMLINKS: u32 = 4; +pub const RESOLVE_BENEATH: u32 = 8; +pub const RESOLVE_IN_ROOT: u32 = 16; +pub const RESOLVE_CACHED: u32 = 32; +pub const F_SETLEASE: u32 = 1024; +pub const F_GETLEASE: u32 = 1025; +pub const F_CANCELLK: u32 = 1029; +pub const F_DUPFD_CLOEXEC: u32 = 1030; +pub const F_NOTIFY: u32 = 1026; +pub const F_SETPIPE_SZ: u32 = 1031; +pub const F_GETPIPE_SZ: u32 = 1032; +pub const F_ADD_SEALS: u32 = 1033; +pub const F_GET_SEALS: u32 = 1034; +pub const F_SEAL_SEAL: u32 = 1; +pub const F_SEAL_SHRINK: u32 = 2; +pub const F_SEAL_GROW: u32 = 4; +pub const F_SEAL_WRITE: u32 = 8; +pub const F_SEAL_FUTURE_WRITE: u32 = 16; +pub const F_SEAL_EXEC: u32 = 32; +pub const F_GET_RW_HINT: u32 = 1035; +pub const F_SET_RW_HINT: u32 = 1036; +pub const F_GET_FILE_RW_HINT: u32 = 1037; +pub const F_SET_FILE_RW_HINT: u32 = 1038; +pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; +pub const RWH_WRITE_LIFE_NONE: u32 = 1; +pub const RWH_WRITE_LIFE_SHORT: u32 = 2; +pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; +pub const RWH_WRITE_LIFE_LONG: u32 = 4; +pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; +pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; +pub const DN_ACCESS: u32 = 1; +pub const DN_MODIFY: u32 = 2; +pub const DN_CREATE: u32 = 4; +pub const DN_DELETE: u32 = 8; +pub const DN_RENAME: u32 = 16; +pub const DN_ATTRIB: u32 = 32; +pub const DN_MULTISHOT: u32 = 2147483648; +pub const AT_FDCWD: i32 = -100; +pub const AT_SYMLINK_NOFOLLOW: u32 = 256; +pub const AT_EACCESS: u32 = 512; +pub const AT_REMOVEDIR: u32 = 512; +pub const AT_SYMLINK_FOLLOW: u32 = 1024; +pub const AT_NO_AUTOMOUNT: u32 = 2048; +pub const AT_EMPTY_PATH: u32 = 4096; +pub const AT_STATX_SYNC_TYPE: u32 = 24576; +pub const AT_STATX_SYNC_AS_STAT: u32 = 0; +pub const AT_STATX_FORCE_SYNC: u32 = 8192; +pub const AT_STATX_DONT_SYNC: u32 = 16384; +pub const AT_RECURSIVE: u32 = 32768; +pub const EPOLL_CLOEXEC: u32 = 4194304; +pub const EPOLL_CTL_ADD: u32 = 1; +pub const EPOLL_CTL_DEL: u32 = 2; +pub const EPOLL_CTL_MOD: u32 = 3; +pub const POSIX_FADV_NORMAL: u32 = 0; +pub const POSIX_FADV_RANDOM: u32 = 1; +pub const POSIX_FADV_SEQUENTIAL: u32 = 2; +pub const POSIX_FADV_WILLNEED: u32 = 3; +pub const POSIX_FADV_DONTNEED: u32 = 4; +pub const POSIX_FADV_NOREUSE: u32 = 5; +pub const FALLOC_FL_KEEP_SIZE: u32 = 1; +pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; +pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; +pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; +pub const FALLOC_FL_ZERO_RANGE: u32 = 16; +pub const FALLOC_FL_INSERT_RANGE: u32 = 32; +pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_XSIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const OPEN_TREE_CLOEXEC: u32 = 4194304; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const FUTEX_WAIT: u32 = 0; +pub const FUTEX_WAKE: u32 = 1; +pub const FUTEX_FD: u32 = 2; +pub const FUTEX_REQUEUE: u32 = 3; +pub const FUTEX_CMP_REQUEUE: u32 = 4; +pub const FUTEX_WAKE_OP: u32 = 5; +pub const FUTEX_LOCK_PI: u32 = 6; +pub const FUTEX_UNLOCK_PI: u32 = 7; +pub const FUTEX_TRYLOCK_PI: u32 = 8; +pub const FUTEX_WAIT_BITSET: u32 = 9; +pub const FUTEX_WAKE_BITSET: u32 = 10; +pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; +pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; +pub const FUTEX_LOCK_PI2: u32 = 13; +pub const FUTEX_PRIVATE_FLAG: u32 = 128; +pub const FUTEX_CLOCK_REALTIME: u32 = 256; +pub const FUTEX_CMD_MASK: i32 = -385; +pub const FUTEX_WAIT_PRIVATE: u32 = 128; +pub const FUTEX_WAKE_PRIVATE: u32 = 129; +pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; +pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; +pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; +pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; +pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; +pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; +pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; +pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; +pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; +pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; +pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; +pub const FUTEX_32: u32 = 2; +pub const FUTEX_WAITV_MAX: u32 = 128; +pub const FUTEX_WAITERS: u32 = 2147483648; +pub const FUTEX_OWNER_DIED: u32 = 1073741824; +pub const FUTEX_TID_MASK: u32 = 1073741823; +pub const ROBUST_LIST_LIMIT: u32 = 2048; +pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; +pub const FUTEX_OP_SET: u32 = 0; +pub const FUTEX_OP_ADD: u32 = 1; +pub const FUTEX_OP_OR: u32 = 2; +pub const FUTEX_OP_ANDN: u32 = 3; +pub const FUTEX_OP_XOR: u32 = 4; +pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; +pub const FUTEX_OP_CMP_EQ: u32 = 0; +pub const FUTEX_OP_CMP_NE: u32 = 1; +pub const FUTEX_OP_CMP_LT: u32 = 2; +pub const FUTEX_OP_CMP_LE: u32 = 3; +pub const FUTEX_OP_CMP_GT: u32 = 4; +pub const FUTEX_OP_CMP_GE: u32 = 5; +pub const IN_ACCESS: u32 = 1; +pub const IN_MODIFY: u32 = 2; +pub const IN_ATTRIB: u32 = 4; +pub const IN_CLOSE_WRITE: u32 = 8; +pub const IN_CLOSE_NOWRITE: u32 = 16; +pub const IN_OPEN: u32 = 32; +pub const IN_MOVED_FROM: u32 = 64; +pub const IN_MOVED_TO: u32 = 128; +pub const IN_CREATE: u32 = 256; +pub const IN_DELETE: u32 = 512; +pub const IN_DELETE_SELF: u32 = 1024; +pub const IN_MOVE_SELF: u32 = 2048; +pub const IN_UNMOUNT: u32 = 8192; +pub const IN_Q_OVERFLOW: u32 = 16384; +pub const IN_IGNORED: u32 = 32768; +pub const IN_CLOSE: u32 = 24; +pub const IN_MOVE: u32 = 192; +pub const IN_ONLYDIR: u32 = 16777216; +pub const IN_DONT_FOLLOW: u32 = 33554432; +pub const IN_EXCL_UNLINK: u32 = 67108864; +pub const IN_MASK_CREATE: u32 = 268435456; +pub const IN_MASK_ADD: u32 = 536870912; +pub const IN_ISDIR: u32 = 1073741824; +pub const IN_ONESHOT: u32 = 2147483648; +pub const IN_ALL_EVENTS: u32 = 4095; +pub const IN_CLOEXEC: u32 = 4194304; +pub const IN_NONBLOCK: u32 = 16384; +pub const ADFS_SUPER_MAGIC: u32 = 44533; +pub const AFFS_SUPER_MAGIC: u32 = 44543; +pub const AFS_SUPER_MAGIC: u32 = 1397113167; +pub const AUTOFS_SUPER_MAGIC: u32 = 391; +pub const CEPH_SUPER_MAGIC: u32 = 12805120; +pub const CODA_SUPER_MAGIC: u32 = 1937076805; +pub const CRAMFS_MAGIC: u32 = 684539205; +pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; +pub const DEBUGFS_MAGIC: u32 = 1684170528; +pub const SECURITYFS_MAGIC: u32 = 1935894131; +pub const SELINUX_MAGIC: u32 = 4185718668; +pub const SMACK_MAGIC: u32 = 1128357203; +pub const RAMFS_MAGIC: u32 = 2240043254; +pub const TMPFS_MAGIC: u32 = 16914836; +pub const HUGETLBFS_MAGIC: u32 = 2508478710; +pub const SQUASHFS_MAGIC: u32 = 1936814952; +pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; +pub const EFS_SUPER_MAGIC: u32 = 4278867; +pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; +pub const EXT2_SUPER_MAGIC: u32 = 61267; +pub const EXT3_SUPER_MAGIC: u32 = 61267; +pub const XENFS_SUPER_MAGIC: u32 = 2881100148; +pub const EXT4_SUPER_MAGIC: u32 = 61267; +pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; +pub const NILFS_SUPER_MAGIC: u32 = 13364; +pub const F2FS_SUPER_MAGIC: u32 = 4076150800; +pub const HPFS_SUPER_MAGIC: u32 = 4187351113; +pub const ISOFS_SUPER_MAGIC: u32 = 38496; +pub const JFFS2_SUPER_MAGIC: u32 = 29366; +pub const XFS_SUPER_MAGIC: u32 = 1481003842; +pub const PSTOREFS_MAGIC: u32 = 1634035564; +pub const EFIVARFS_MAGIC: u32 = 3730735588; +pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; +pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; +pub const FUSE_SUPER_MAGIC: u32 = 1702057286; +pub const MINIX_SUPER_MAGIC: u32 = 4991; +pub const MINIX_SUPER_MAGIC2: u32 = 5007; +pub const MINIX2_SUPER_MAGIC: u32 = 9320; +pub const MINIX2_SUPER_MAGIC2: u32 = 9336; +pub const MINIX3_SUPER_MAGIC: u32 = 19802; +pub const MSDOS_SUPER_MAGIC: u32 = 19780; +pub const EXFAT_SUPER_MAGIC: u32 = 538032816; +pub const NCP_SUPER_MAGIC: u32 = 22092; +pub const NFS_SUPER_MAGIC: u32 = 26985; +pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; +pub const OPENPROM_SUPER_MAGIC: u32 = 40865; +pub const QNX4_SUPER_MAGIC: u32 = 47; +pub const QNX6_SUPER_MAGIC: u32 = 1746473250; +pub const AFS_FS_MAGIC: u32 = 1799439955; +pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; +pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9] = b"ReIsErFs\0"; +pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr2Fs\0"; +pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr3Fs\0"; +pub const SMB_SUPER_MAGIC: u32 = 20859; +pub const CIFS_SUPER_MAGIC: u32 = 4283649346; +pub const SMB2_SUPER_MAGIC: u32 = 4266872130; +pub const CGROUP_SUPER_MAGIC: u32 = 2613483; +pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; +pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; +pub const STACK_END_MAGIC: u32 = 1470918301; +pub const TRACEFS_MAGIC: u32 = 1953653091; +pub const V9FS_MAGIC: u32 = 16914839; +pub const BDEVFS_MAGIC: u32 = 1650746742; +pub const DAXFS_MAGIC: u32 = 1684300152; +pub const BINFMTFS_MAGIC: u32 = 1112100429; +pub const DEVPTS_SUPER_MAGIC: u32 = 7377; +pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; +pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; +pub const PIPEFS_MAGIC: u32 = 1346981957; +pub const PROC_SUPER_MAGIC: u32 = 40864; +pub const SOCKFS_MAGIC: u32 = 1397703499; +pub const SYSFS_MAGIC: u32 = 1650812274; +pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; +pub const MTD_INODE_FS_MAGIC: u32 = 288389204; +pub const ANON_INODE_FS_MAGIC: u32 = 151263540; +pub const BTRFS_TEST_MAGIC: u32 = 1936880249; +pub const NSFS_MAGIC: u32 = 1853056627; +pub const BPF_FS_MAGIC: u32 = 3405662737; +pub const AAFS_MAGIC: u32 = 1513908720; +pub const ZONEFS_MAGIC: u32 = 1515144787; +pub const UDF_SUPER_MAGIC: u32 = 352400198; +pub const DMA_BUF_MAGIC: u32 = 1145913666; +pub const DEVMEM_MAGIC: u32 = 1162691661; +pub const SECRETMEM_MAGIC: u32 = 1397048141; +pub const PROT_READ: u32 = 1; +pub const PROT_WRITE: u32 = 2; +pub const PROT_EXEC: u32 = 4; +pub const PROT_SEM: u32 = 8; +pub const PROT_NONE: u32 = 0; +pub const PROT_GROWSDOWN: u32 = 16777216; +pub const PROT_GROWSUP: u32 = 33554432; +pub const MAP_TYPE: u32 = 15; +pub const MAP_FIXED: u32 = 16; +pub const MAP_ANONYMOUS: u32 = 32; +pub const MAP_POPULATE: u32 = 32768; +pub const MAP_NONBLOCK: u32 = 65536; +pub const MAP_STACK: u32 = 131072; +pub const MAP_HUGETLB: u32 = 262144; +pub const MAP_SYNC: u32 = 524288; +pub const MAP_FIXED_NOREPLACE: u32 = 1048576; +pub const MAP_UNINITIALIZED: u32 = 67108864; +pub const MLOCK_ONFAULT: u32 = 1; +pub const MS_ASYNC: u32 = 1; +pub const MS_INVALIDATE: u32 = 2; +pub const MS_SYNC: u32 = 4; +pub const MADV_NORMAL: u32 = 0; +pub const MADV_RANDOM: u32 = 1; +pub const MADV_SEQUENTIAL: u32 = 2; +pub const MADV_WILLNEED: u32 = 3; +pub const MADV_DONTNEED: u32 = 4; +pub const MADV_FREE: u32 = 8; +pub const MADV_REMOVE: u32 = 9; +pub const MADV_DONTFORK: u32 = 10; +pub const MADV_DOFORK: u32 = 11; +pub const MADV_HWPOISON: u32 = 100; +pub const MADV_SOFT_OFFLINE: u32 = 101; +pub const MADV_MERGEABLE: u32 = 12; +pub const MADV_UNMERGEABLE: u32 = 13; +pub const MADV_HUGEPAGE: u32 = 14; +pub const MADV_NOHUGEPAGE: u32 = 15; +pub const MADV_DONTDUMP: u32 = 16; +pub const MADV_DODUMP: u32 = 17; +pub const MADV_WIPEONFORK: u32 = 18; +pub const MADV_KEEPONFORK: u32 = 19; +pub const MADV_COLD: u32 = 20; +pub const MADV_PAGEOUT: u32 = 21; +pub const MADV_POPULATE_READ: u32 = 22; +pub const MADV_POPULATE_WRITE: u32 = 23; +pub const MADV_DONTNEED_LOCKED: u32 = 24; +pub const MADV_COLLAPSE: u32 = 25; +pub const MAP_FILE: u32 = 0; +pub const PKEY_DISABLE_ACCESS: u32 = 1; +pub const PKEY_DISABLE_WRITE: u32 = 2; +pub const PKEY_ACCESS_MASK: u32 = 3; +pub const PROT_ADI: u32 = 16; +pub const MAP_RENAME: u32 = 32; +pub const MAP_NORESERVE: u32 = 64; +pub const MAP_INHERIT: u32 = 128; +pub const MAP_LOCKED: u32 = 256; +pub const _MAP_NEW: u32 = 2147483648; +pub const MAP_GROWSDOWN: u32 = 512; +pub const MAP_DENYWRITE: u32 = 2048; +pub const MAP_EXECUTABLE: u32 = 4096; +pub const MCL_CURRENT: u32 = 8192; +pub const MCL_FUTURE: u32 = 16384; +pub const MCL_ONFAULT: u32 = 32768; +pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; +pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; +pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; +pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; +pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; +pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; +pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; +pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; +pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; +pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; +pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; +pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; +pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; +pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; +pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; +pub const MREMAP_MAYMOVE: u32 = 1; +pub const MREMAP_FIXED: u32 = 2; +pub const MREMAP_DONTUNMAP: u32 = 4; +pub const OVERCOMMIT_GUESS: u32 = 0; +pub const OVERCOMMIT_ALWAYS: u32 = 1; +pub const OVERCOMMIT_NEVER: u32 = 2; +pub const MAP_SHARED: u32 = 1; +pub const MAP_PRIVATE: u32 = 2; +pub const MAP_SHARED_VALIDATE: u32 = 3; +pub const MAP_HUGE_SHIFT: u32 = 26; +pub const MAP_HUGE_MASK: u32 = 63; +pub const MAP_HUGE_16KB: u32 = 939524096; +pub const MAP_HUGE_64KB: u32 = 1073741824; +pub const MAP_HUGE_512KB: u32 = 1275068416; +pub const MAP_HUGE_1MB: u32 = 1342177280; +pub const MAP_HUGE_2MB: u32 = 1409286144; +pub const MAP_HUGE_8MB: u32 = 1543503872; +pub const MAP_HUGE_16MB: u32 = 1610612736; +pub const MAP_HUGE_32MB: u32 = 1677721600; +pub const MAP_HUGE_256MB: u32 = 1879048192; +pub const MAP_HUGE_512MB: u32 = 1946157056; +pub const MAP_HUGE_1GB: u32 = 2013265920; +pub const MAP_HUGE_2GB: u32 = 2080374784; +pub const MAP_HUGE_16GB: u32 = 2281701376; +pub const POLLWRBAND: u32 = 256; +pub const POLLMSG: u32 = 512; +pub const POLLREMOVE: u32 = 1024; +pub const POLLRDHUP: u32 = 2048; +pub const POLLIN: u32 = 1; +pub const POLLPRI: u32 = 2; +pub const POLLOUT: u32 = 4; +pub const POLLERR: u32 = 8; +pub const POLLHUP: u32 = 16; +pub const POLLNVAL: u32 = 32; +pub const POLLRDNORM: u32 = 64; +pub const POLLRDBAND: u32 = 128; +pub const GRND_NONBLOCK: u32 = 1; +pub const GRND_RANDOM: u32 = 2; +pub const GRND_INSECURE: u32 = 4; +pub const ITIMER_REAL: u32 = 0; +pub const ITIMER_VIRTUAL: u32 = 1; +pub const ITIMER_PROF: u32 = 2; +pub const CLOCK_REALTIME: u32 = 0; +pub const CLOCK_MONOTONIC: u32 = 1; +pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; +pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; +pub const CLOCK_MONOTONIC_RAW: u32 = 4; +pub const CLOCK_REALTIME_COARSE: u32 = 5; +pub const CLOCK_MONOTONIC_COARSE: u32 = 6; +pub const CLOCK_BOOTTIME: u32 = 7; +pub const CLOCK_REALTIME_ALARM: u32 = 8; +pub const CLOCK_BOOTTIME_ALARM: u32 = 9; +pub const CLOCK_SGI_CYCLE: u32 = 10; +pub const CLOCK_TAI: u32 = 11; +pub const MAX_CLOCKS: u32 = 16; +pub const CLOCKS_MASK: u32 = 1; +pub const CLOCKS_MONO: u32 = 1; +pub const TIMER_ABSTIME: u32 = 1; +pub const RUSAGE_SELF: u32 = 0; +pub const RUSAGE_CHILDREN: i32 = -1; +pub const RUSAGE_BOTH: i32 = -2; +pub const RUSAGE_THREAD: u32 = 1; +pub const RLIM64_INFINITY: i32 = -1; +pub const PRIO_MIN: i32 = -20; +pub const PRIO_MAX: u32 = 20; +pub const PRIO_PROCESS: u32 = 0; +pub const PRIO_PGRP: u32 = 1; +pub const PRIO_USER: u32 = 2; +pub const _STK_LIM: u32 = 8388608; +pub const MLOCK_LIMIT: u32 = 8388608; +pub const RLIMIT_NOFILE: u32 = 6; +pub const RLIMIT_NPROC: u32 = 7; +pub const RLIM_INFINITY: u32 = 2147483647; +pub const RLIMIT_CPU: u32 = 0; +pub const RLIMIT_FSIZE: u32 = 1; +pub const RLIMIT_DATA: u32 = 2; +pub const RLIMIT_STACK: u32 = 3; +pub const RLIMIT_CORE: u32 = 4; +pub const RLIMIT_RSS: u32 = 5; +pub const RLIMIT_MEMLOCK: u32 = 8; +pub const RLIMIT_AS: u32 = 9; +pub const RLIMIT_LOCKS: u32 = 10; +pub const RLIMIT_SIGPENDING: u32 = 11; +pub const RLIMIT_MSGQUEUE: u32 = 12; +pub const RLIMIT_NICE: u32 = 13; +pub const RLIMIT_RTPRIO: u32 = 14; +pub const RLIMIT_RTTIME: u32 = 15; +pub const RLIM_NLIMITS: u32 = 16; +pub const CSIGNAL: u32 = 255; +pub const CLONE_VM: u32 = 256; +pub const CLONE_FS: u32 = 512; +pub const CLONE_FILES: u32 = 1024; +pub const CLONE_SIGHAND: u32 = 2048; +pub const CLONE_PIDFD: u32 = 4096; +pub const CLONE_PTRACE: u32 = 8192; +pub const CLONE_VFORK: u32 = 16384; +pub const CLONE_PARENT: u32 = 32768; +pub const CLONE_THREAD: u32 = 65536; +pub const CLONE_NEWNS: u32 = 131072; +pub const CLONE_SYSVSEM: u32 = 262144; +pub const CLONE_SETTLS: u32 = 524288; +pub const CLONE_PARENT_SETTID: u32 = 1048576; +pub const CLONE_CHILD_CLEARTID: u32 = 2097152; +pub const CLONE_DETACHED: u32 = 4194304; +pub const CLONE_UNTRACED: u32 = 8388608; +pub const CLONE_CHILD_SETTID: u32 = 16777216; +pub const CLONE_NEWCGROUP: u32 = 33554432; +pub const CLONE_NEWUTS: u32 = 67108864; +pub const CLONE_NEWIPC: u32 = 134217728; +pub const CLONE_NEWUSER: u32 = 268435456; +pub const CLONE_NEWPID: u32 = 536870912; +pub const CLONE_NEWNET: u32 = 1073741824; +pub const CLONE_IO: u32 = 2147483648; +pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; +pub const CLONE_INTO_CGROUP: u64 = 8589934592; +pub const CLONE_NEWTIME: u32 = 128; +pub const CLONE_ARGS_SIZE_VER0: u32 = 64; +pub const CLONE_ARGS_SIZE_VER1: u32 = 80; +pub const CLONE_ARGS_SIZE_VER2: u32 = 88; +pub const SCHED_NORMAL: u32 = 0; +pub const SCHED_FIFO: u32 = 1; +pub const SCHED_RR: u32 = 2; +pub const SCHED_BATCH: u32 = 3; +pub const SCHED_IDLE: u32 = 5; +pub const SCHED_DEADLINE: u32 = 6; +pub const SCHED_RESET_ON_FORK: u32 = 1073741824; +pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; +pub const SCHED_FLAG_RECLAIM: u32 = 2; +pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; +pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; +pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; +pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; +pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; +pub const SCHED_FLAG_KEEP_ALL: u32 = 24; +pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; +pub const SCHED_FLAG_ALL: u32 = 127; +pub const SIGHUP: u32 = 1; +pub const SIGINT: u32 = 2; +pub const SIGQUIT: u32 = 3; +pub const SIGILL: u32 = 4; +pub const SUBSIG_STACK: u32 = 0; +pub const SUBSIG_ILLINST: u32 = 2; +pub const SUBSIG_PRIVINST: u32 = 3; +pub const SIGTRAP: u32 = 5; +pub const SIGABRT: u32 = 6; +pub const SIGIOT: u32 = 6; +pub const SIGEMT: u32 = 7; +pub const SUBSIG_TAG: u32 = 10; +pub const SIGFPE: u32 = 8; +pub const SUBSIG_FPDISABLED: u32 = 1024; +pub const SUBSIG_FPERROR: u32 = 1028; +pub const SUBSIG_FPINTOVFL: u32 = 1; +pub const SUBSIG_FPSTSIG: u32 = 2; +pub const SUBSIG_IDIVZERO: u32 = 20; +pub const SUBSIG_FPINEXACT: u32 = 196; +pub const SUBSIG_FPDIVZERO: u32 = 200; +pub const SUBSIG_FPUNFLOW: u32 = 204; +pub const SUBSIG_FPOPERROR: u32 = 208; +pub const SUBSIG_FPOVFLOW: u32 = 212; +pub const SIGKILL: u32 = 9; +pub const SIGBUS: u32 = 10; +pub const SUBSIG_BUSTIMEOUT: u32 = 1; +pub const SUBSIG_ALIGNMENT: u32 = 2; +pub const SUBSIG_MISCERROR: u32 = 5; +pub const SIGSEGV: u32 = 11; +pub const SUBSIG_NOMAPPING: u32 = 3; +pub const SUBSIG_PROTECTION: u32 = 4; +pub const SUBSIG_SEGERROR: u32 = 5; +pub const SIGSYS: u32 = 12; +pub const SIGPIPE: u32 = 13; +pub const SIGALRM: u32 = 14; +pub const SIGTERM: u32 = 15; +pub const SIGURG: u32 = 16; +pub const SIGSTOP: u32 = 17; +pub const SIGTSTP: u32 = 18; +pub const SIGCONT: u32 = 19; +pub const SIGCHLD: u32 = 20; +pub const SIGTTIN: u32 = 21; +pub const SIGTTOU: u32 = 22; +pub const SIGIO: u32 = 23; +pub const SIGPOLL: u32 = 23; +pub const SIGXCPU: u32 = 24; +pub const SIGXFSZ: u32 = 25; +pub const SIGVTALRM: u32 = 26; +pub const SIGPROF: u32 = 27; +pub const SIGWINCH: u32 = 28; +pub const SIGLOST: u32 = 29; +pub const SIGPWR: u32 = 29; +pub const SIGUSR1: u32 = 30; +pub const SIGUSR2: u32 = 31; +pub const __OLD_NSIG: u32 = 32; +pub const __NEW_NSIG: u32 = 64; +pub const _NSIG_BPW: u32 = 32; +pub const _NSIG_WORDS: u32 = 2; +pub const SIGRTMIN: u32 = 32; +pub const SIGRTMAX: u32 = 64; +pub const _NSIG: u32 = 32; +pub const NSIG: u32 = 32; +pub const _SV_SSTACK: u32 = 1; +pub const _SV_INTR: u32 = 2; +pub const _SV_RESET: u32 = 4; +pub const _SV_IGNCHILD: u32 = 8; +pub const SA_NOCLDSTOP: u32 = 8; +pub const SA_STACK: u32 = 1; +pub const SA_ONSTACK: u32 = 1; +pub const SA_RESTART: u32 = 2; +pub const SA_RESETHAND: u32 = 4; +pub const SA_NODEFER: u32 = 32; +pub const SA_NOCLDWAIT: u32 = 256; +pub const SA_SIGINFO: u32 = 512; +pub const SIG_BLOCK: u32 = 1; +pub const SIG_UNBLOCK: u32 = 2; +pub const SIG_SETMASK: u32 = 4; +pub const MINSIGSTKSZ: u32 = 4096; +pub const SIGSTKSZ: u32 = 16384; +pub const SA_UNSUPPORTED: u32 = 1024; +pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SA_NOMASK: u32 = 32; +pub const SA_ONESHOT: u32 = 4; +pub const SI_MAX_SIZE: u32 = 128; +pub const SI_USER: u32 = 0; +pub const SI_KERNEL: u32 = 128; +pub const SI_QUEUE: i32 = -1; +pub const SI_TIMER: i32 = -2; +pub const SI_MESGQ: i32 = -3; +pub const SI_ASYNCIO: i32 = -4; +pub const SI_SIGIO: i32 = -5; +pub const SI_TKILL: i32 = -6; +pub const SI_DETHREAD: i32 = -7; +pub const SI_ASYNCNL: i32 = -60; +pub const ILL_ILLOPC: u32 = 1; +pub const ILL_ILLOPN: u32 = 2; +pub const ILL_ILLADR: u32 = 3; +pub const ILL_ILLTRP: u32 = 4; +pub const ILL_PRVOPC: u32 = 5; +pub const ILL_PRVREG: u32 = 6; +pub const ILL_COPROC: u32 = 7; +pub const ILL_BADSTK: u32 = 8; +pub const ILL_BADIADDR: u32 = 9; +pub const __ILL_BREAK: u32 = 10; +pub const __ILL_BNDMOD: u32 = 11; +pub const NSIGILL: u32 = 11; +pub const FPE_INTDIV: u32 = 1; +pub const FPE_INTOVF: u32 = 2; +pub const FPE_FLTDIV: u32 = 3; +pub const FPE_FLTOVF: u32 = 4; +pub const FPE_FLTUND: u32 = 5; +pub const FPE_FLTRES: u32 = 6; +pub const FPE_FLTINV: u32 = 7; +pub const FPE_FLTSUB: u32 = 8; +pub const __FPE_DECOVF: u32 = 9; +pub const __FPE_DECDIV: u32 = 10; +pub const __FPE_DECERR: u32 = 11; +pub const __FPE_INVASC: u32 = 12; +pub const __FPE_INVDEC: u32 = 13; +pub const FPE_FLTUNK: u32 = 14; +pub const FPE_CONDTRAP: u32 = 15; +pub const NSIGFPE: u32 = 15; +pub const SEGV_MAPERR: u32 = 1; +pub const SEGV_ACCERR: u32 = 2; +pub const SEGV_BNDERR: u32 = 3; +pub const SEGV_PKUERR: u32 = 4; +pub const SEGV_ACCADI: u32 = 5; +pub const SEGV_ADIDERR: u32 = 6; +pub const SEGV_ADIPERR: u32 = 7; +pub const SEGV_MTEAERR: u32 = 8; +pub const SEGV_MTESERR: u32 = 9; +pub const NSIGSEGV: u32 = 9; +pub const BUS_ADRALN: u32 = 1; +pub const BUS_ADRERR: u32 = 2; +pub const BUS_OBJERR: u32 = 3; +pub const BUS_MCEERR_AR: u32 = 4; +pub const BUS_MCEERR_AO: u32 = 5; +pub const NSIGBUS: u32 = 5; +pub const TRAP_BRKPT: u32 = 1; +pub const TRAP_TRACE: u32 = 2; +pub const TRAP_BRANCH: u32 = 3; +pub const TRAP_HWBKPT: u32 = 4; +pub const TRAP_UNK: u32 = 5; +pub const TRAP_PERF: u32 = 6; +pub const NSIGTRAP: u32 = 6; +pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; +pub const CLD_EXITED: u32 = 1; +pub const CLD_KILLED: u32 = 2; +pub const CLD_DUMPED: u32 = 3; +pub const CLD_TRAPPED: u32 = 4; +pub const CLD_STOPPED: u32 = 5; +pub const CLD_CONTINUED: u32 = 6; +pub const NSIGCHLD: u32 = 6; +pub const POLL_IN: u32 = 1; +pub const POLL_OUT: u32 = 2; +pub const POLL_MSG: u32 = 3; +pub const POLL_ERR: u32 = 4; +pub const POLL_PRI: u32 = 5; +pub const POLL_HUP: u32 = 6; +pub const NSIGPOLL: u32 = 6; +pub const SYS_SECCOMP: u32 = 1; +pub const SYS_USER_DISPATCH: u32 = 2; +pub const NSIGSYS: u32 = 2; +pub const EMT_TAGOVF: u32 = 1; +pub const NSIGEMT: u32 = 1; +pub const SIGEV_SIGNAL: u32 = 0; +pub const SIGEV_NONE: u32 = 1; +pub const SIGEV_THREAD: u32 = 2; +pub const SIGEV_THREAD_ID: u32 = 4; +pub const SIGEV_MAX_SIZE: u32 = 64; +pub const SI_NOINFO: u32 = 32767; +pub const SS_ONSTACK: u32 = 1; +pub const SS_DISABLE: u32 = 2; +pub const SS_AUTODISARM: u32 = 2147483648; +pub const SS_FLAG_BITS: u32 = 2147483648; +pub const S_IFMT: u32 = 61440; +pub const S_IFSOCK: u32 = 49152; +pub const S_IFLNK: u32 = 40960; +pub const S_IFREG: u32 = 32768; +pub const S_IFBLK: u32 = 24576; +pub const S_IFDIR: u32 = 16384; +pub const S_IFCHR: u32 = 8192; +pub const S_IFIFO: u32 = 4096; +pub const S_ISUID: u32 = 2048; +pub const S_ISGID: u32 = 1024; +pub const S_ISVTX: u32 = 512; +pub const S_IRWXU: u32 = 448; +pub const S_IRUSR: u32 = 256; +pub const S_IWUSR: u32 = 128; +pub const S_IXUSR: u32 = 64; +pub const S_IRWXG: u32 = 56; +pub const S_IRGRP: u32 = 32; +pub const S_IWGRP: u32 = 16; +pub const S_IXGRP: u32 = 8; +pub const S_IRWXO: u32 = 7; +pub const S_IROTH: u32 = 4; +pub const S_IWOTH: u32 = 2; +pub const S_IXOTH: u32 = 1; +pub const STATX_TYPE: u32 = 1; +pub const STATX_MODE: u32 = 2; +pub const STATX_NLINK: u32 = 4; +pub const STATX_UID: u32 = 8; +pub const STATX_GID: u32 = 16; +pub const STATX_ATIME: u32 = 32; +pub const STATX_MTIME: u32 = 64; +pub const STATX_CTIME: u32 = 128; +pub const STATX_INO: u32 = 256; +pub const STATX_SIZE: u32 = 512; +pub const STATX_BLOCKS: u32 = 1024; +pub const STATX_BASIC_STATS: u32 = 2047; +pub const STATX_BTIME: u32 = 2048; +pub const STATX_MNT_ID: u32 = 4096; +pub const STATX_DIOALIGN: u32 = 8192; +pub const STATX__RESERVED: u32 = 2147483648; +pub const STATX_ALL: u32 = 4095; +pub const STATX_ATTR_COMPRESSED: u32 = 4; +pub const STATX_ATTR_IMMUTABLE: u32 = 16; +pub const STATX_ATTR_APPEND: u32 = 32; +pub const STATX_ATTR_NODUMP: u32 = 64; +pub const STATX_ATTR_ENCRYPTED: u32 = 2048; +pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; +pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; +pub const STATX_ATTR_VERITY: u32 = 1048576; +pub const STATX_ATTR_DAX: u32 = 2097152; +pub const TIOCPKT_DATA: u32 = 0; +pub const TIOCPKT_FLUSHREAD: u32 = 1; +pub const TIOCPKT_FLUSHWRITE: u32 = 2; +pub const TIOCPKT_STOP: u32 = 4; +pub const TIOCPKT_START: u32 = 8; +pub const TIOCPKT_NOSTOP: u32 = 16; +pub const TIOCPKT_DOSTOP: u32 = 32; +pub const TIOCPKT_IOCTL: u32 = 64; +pub const IGNBRK: u32 = 1; +pub const BRKINT: u32 = 2; +pub const IGNPAR: u32 = 4; +pub const PARMRK: u32 = 8; +pub const INPCK: u32 = 16; +pub const ISTRIP: u32 = 32; +pub const INLCR: u32 = 64; +pub const IGNCR: u32 = 128; +pub const ICRNL: u32 = 256; +pub const IXANY: u32 = 2048; +pub const OPOST: u32 = 1; +pub const OCRNL: u32 = 8; +pub const ONOCR: u32 = 16; +pub const ONLRET: u32 = 32; +pub const OFILL: u32 = 64; +pub const OFDEL: u32 = 128; +pub const B0: u32 = 0; +pub const B50: u32 = 1; +pub const B75: u32 = 2; +pub const B110: u32 = 3; +pub const B134: u32 = 4; +pub const B150: u32 = 5; +pub const B200: u32 = 6; +pub const B300: u32 = 7; +pub const B600: u32 = 8; +pub const B1200: u32 = 9; +pub const B1800: u32 = 10; +pub const B2400: u32 = 11; +pub const B4800: u32 = 12; +pub const B9600: u32 = 13; +pub const B19200: u32 = 14; +pub const B38400: u32 = 15; +pub const EXTA: u32 = 14; +pub const EXTB: u32 = 15; +pub const ADDRB: u32 = 536870912; +pub const CMSPAR: u32 = 1073741824; +pub const CRTSCTS: u32 = 2147483648; +pub const IBSHIFT: u32 = 16; +pub const TCOOFF: u32 = 0; +pub const TCOON: u32 = 1; +pub const TCIOFF: u32 = 2; +pub const TCION: u32 = 3; +pub const TCIFLUSH: u32 = 0; +pub const TCOFLUSH: u32 = 1; +pub const TCIOFLUSH: u32 = 2; +pub const NCC: u32 = 8; +pub const NCCS: u32 = 17; +pub const VINTR: u32 = 0; +pub const VQUIT: u32 = 1; +pub const VERASE: u32 = 2; +pub const VKILL: u32 = 3; +pub const VEOF: u32 = 4; +pub const VEOL: u32 = 5; +pub const VEOL2: u32 = 6; +pub const VSWTC: u32 = 7; +pub const VSTART: u32 = 8; +pub const VSTOP: u32 = 9; +pub const VSUSP: u32 = 10; +pub const VDSUSP: u32 = 11; +pub const VREPRINT: u32 = 12; +pub const VDISCARD: u32 = 13; +pub const VWERASE: u32 = 14; +pub const VLNEXT: u32 = 15; +pub const VMIN: u32 = 4; +pub const VTIME: u32 = 5; +pub const IUCLC: u32 = 512; +pub const IXON: u32 = 1024; +pub const IXOFF: u32 = 4096; +pub const IMAXBEL: u32 = 8192; +pub const IUTF8: u32 = 16384; +pub const OLCUC: u32 = 2; +pub const ONLCR: u32 = 4; +pub const NLDLY: u32 = 256; +pub const NL0: u32 = 0; +pub const NL1: u32 = 256; +pub const CRDLY: u32 = 1536; +pub const CR0: u32 = 0; +pub const CR1: u32 = 512; +pub const CR2: u32 = 1024; +pub const CR3: u32 = 1536; +pub const TABDLY: u32 = 6144; +pub const TAB0: u32 = 0; +pub const TAB1: u32 = 2048; +pub const TAB2: u32 = 4096; +pub const TAB3: u32 = 6144; +pub const XTABS: u32 = 6144; +pub const BSDLY: u32 = 8192; +pub const BS0: u32 = 0; +pub const BS1: u32 = 8192; +pub const VTDLY: u32 = 16384; +pub const VT0: u32 = 0; +pub const VT1: u32 = 16384; +pub const FFDLY: u32 = 32768; +pub const FF0: u32 = 0; +pub const FF1: u32 = 32768; +pub const PAGEOUT: u32 = 65536; +pub const WRAP: u32 = 131072; +pub const CBAUD: u32 = 4111; +pub const CSIZE: u32 = 48; +pub const CS5: u32 = 0; +pub const CS6: u32 = 16; +pub const CS7: u32 = 32; +pub const CS8: u32 = 48; +pub const CSTOPB: u32 = 64; +pub const CREAD: u32 = 128; +pub const PARENB: u32 = 256; +pub const PARODD: u32 = 512; +pub const HUPCL: u32 = 1024; +pub const CLOCAL: u32 = 2048; +pub const CBAUDEX: u32 = 4096; +pub const BOTHER: u32 = 4096; +pub const B57600: u32 = 4097; +pub const B115200: u32 = 4098; +pub const B230400: u32 = 4099; +pub const B460800: u32 = 4100; +pub const B76800: u32 = 4101; +pub const B153600: u32 = 4102; +pub const B307200: u32 = 4103; +pub const B614400: u32 = 4104; +pub const B921600: u32 = 4105; +pub const B500000: u32 = 4106; +pub const B576000: u32 = 4107; +pub const B1000000: u32 = 4108; +pub const B1152000: u32 = 4109; +pub const B1500000: u32 = 4110; +pub const B2000000: u32 = 4111; +pub const CIBAUD: u32 = 269418496; +pub const ISIG: u32 = 1; +pub const ICANON: u32 = 2; +pub const XCASE: u32 = 4; +pub const ECHO: u32 = 8; +pub const ECHOE: u32 = 16; +pub const ECHOK: u32 = 32; +pub const ECHONL: u32 = 64; +pub const NOFLSH: u32 = 128; +pub const TOSTOP: u32 = 256; +pub const ECHOCTL: u32 = 512; +pub const ECHOPRT: u32 = 1024; +pub const ECHOKE: u32 = 2048; +pub const DEFECHO: u32 = 4096; +pub const FLUSHO: u32 = 8192; +pub const PENDIN: u32 = 16384; +pub const IEXTEN: u32 = 32768; +pub const EXTPROC: u32 = 65536; +pub const TIOCM_LE: u32 = 1; +pub const TIOCM_DTR: u32 = 2; +pub const TIOCM_RTS: u32 = 4; +pub const TIOCM_ST: u32 = 8; +pub const TIOCM_SR: u32 = 16; +pub const TIOCM_CTS: u32 = 32; +pub const TIOCM_CAR: u32 = 64; +pub const TIOCM_RNG: u32 = 128; +pub const TIOCM_DSR: u32 = 256; +pub const TIOCM_CD: u32 = 64; +pub const TIOCM_RI: u32 = 128; +pub const TIOCM_OUT1: u32 = 8192; +pub const TIOCM_OUT2: u32 = 16384; +pub const TIOCM_LOOP: u32 = 32768; +pub const TIOCSER_TEMT: u32 = 1; +pub const TCSANOW: u32 = 0; +pub const TCSADRAIN: u32 = 1; +pub const TCSAFLUSH: u32 = 2; +pub const UIO_FASTIOV: u32 = 8; +pub const UIO_MAXIOV: u32 = 1024; +pub const __NR_restart_syscall: u32 = 0; +pub const __NR_exit: u32 = 1; +pub const __NR_fork: u32 = 2; +pub const __NR_read: u32 = 3; +pub const __NR_write: u32 = 4; +pub const __NR_open: u32 = 5; +pub const __NR_close: u32 = 6; +pub const __NR_wait4: u32 = 7; +pub const __NR_creat: u32 = 8; +pub const __NR_link: u32 = 9; +pub const __NR_unlink: u32 = 10; +pub const __NR_execv: u32 = 11; +pub const __NR_chdir: u32 = 12; +pub const __NR_chown: u32 = 13; +pub const __NR_mknod: u32 = 14; +pub const __NR_chmod: u32 = 15; +pub const __NR_lchown: u32 = 16; +pub const __NR_brk: u32 = 17; +pub const __NR_perfctr: u32 = 18; +pub const __NR_lseek: u32 = 19; +pub const __NR_getpid: u32 = 20; +pub const __NR_capget: u32 = 21; +pub const __NR_capset: u32 = 22; +pub const __NR_setuid: u32 = 23; +pub const __NR_getuid: u32 = 24; +pub const __NR_vmsplice: u32 = 25; +pub const __NR_ptrace: u32 = 26; +pub const __NR_alarm: u32 = 27; +pub const __NR_sigaltstack: u32 = 28; +pub const __NR_pause: u32 = 29; +pub const __NR_utime: u32 = 30; +pub const __NR_lchown32: u32 = 31; +pub const __NR_fchown32: u32 = 32; +pub const __NR_access: u32 = 33; +pub const __NR_nice: u32 = 34; +pub const __NR_chown32: u32 = 35; +pub const __NR_sync: u32 = 36; +pub const __NR_kill: u32 = 37; +pub const __NR_stat: u32 = 38; +pub const __NR_sendfile: u32 = 39; +pub const __NR_lstat: u32 = 40; +pub const __NR_dup: u32 = 41; +pub const __NR_pipe: u32 = 42; +pub const __NR_times: u32 = 43; +pub const __NR_getuid32: u32 = 44; +pub const __NR_umount2: u32 = 45; +pub const __NR_setgid: u32 = 46; +pub const __NR_getgid: u32 = 47; +pub const __NR_signal: u32 = 48; +pub const __NR_geteuid: u32 = 49; +pub const __NR_getegid: u32 = 50; +pub const __NR_acct: u32 = 51; +pub const __NR_getgid32: u32 = 53; +pub const __NR_ioctl: u32 = 54; +pub const __NR_reboot: u32 = 55; +pub const __NR_mmap2: u32 = 56; +pub const __NR_symlink: u32 = 57; +pub const __NR_readlink: u32 = 58; +pub const __NR_execve: u32 = 59; +pub const __NR_umask: u32 = 60; +pub const __NR_chroot: u32 = 61; +pub const __NR_fstat: u32 = 62; +pub const __NR_fstat64: u32 = 63; +pub const __NR_getpagesize: u32 = 64; +pub const __NR_msync: u32 = 65; +pub const __NR_vfork: u32 = 66; +pub const __NR_pread64: u32 = 67; +pub const __NR_pwrite64: u32 = 68; +pub const __NR_geteuid32: u32 = 69; +pub const __NR_getegid32: u32 = 70; +pub const __NR_mmap: u32 = 71; +pub const __NR_setreuid32: u32 = 72; +pub const __NR_munmap: u32 = 73; +pub const __NR_mprotect: u32 = 74; +pub const __NR_madvise: u32 = 75; +pub const __NR_vhangup: u32 = 76; +pub const __NR_truncate64: u32 = 77; +pub const __NR_mincore: u32 = 78; +pub const __NR_getgroups: u32 = 79; +pub const __NR_setgroups: u32 = 80; +pub const __NR_getpgrp: u32 = 81; +pub const __NR_setgroups32: u32 = 82; +pub const __NR_setitimer: u32 = 83; +pub const __NR_ftruncate64: u32 = 84; +pub const __NR_swapon: u32 = 85; +pub const __NR_getitimer: u32 = 86; +pub const __NR_setuid32: u32 = 87; +pub const __NR_sethostname: u32 = 88; +pub const __NR_setgid32: u32 = 89; +pub const __NR_dup2: u32 = 90; +pub const __NR_setfsuid32: u32 = 91; +pub const __NR_fcntl: u32 = 92; +pub const __NR_select: u32 = 93; +pub const __NR_setfsgid32: u32 = 94; +pub const __NR_fsync: u32 = 95; +pub const __NR_setpriority: u32 = 96; +pub const __NR_socket: u32 = 97; +pub const __NR_connect: u32 = 98; +pub const __NR_accept: u32 = 99; +pub const __NR_getpriority: u32 = 100; +pub const __NR_rt_sigreturn: u32 = 101; +pub const __NR_rt_sigaction: u32 = 102; +pub const __NR_rt_sigprocmask: u32 = 103; +pub const __NR_rt_sigpending: u32 = 104; +pub const __NR_rt_sigtimedwait: u32 = 105; +pub const __NR_rt_sigqueueinfo: u32 = 106; +pub const __NR_rt_sigsuspend: u32 = 107; +pub const __NR_setresuid32: u32 = 108; +pub const __NR_getresuid32: u32 = 109; +pub const __NR_setresgid32: u32 = 110; +pub const __NR_getresgid32: u32 = 111; +pub const __NR_setregid32: u32 = 112; +pub const __NR_recvmsg: u32 = 113; +pub const __NR_sendmsg: u32 = 114; +pub const __NR_getgroups32: u32 = 115; +pub const __NR_gettimeofday: u32 = 116; +pub const __NR_getrusage: u32 = 117; +pub const __NR_getsockopt: u32 = 118; +pub const __NR_getcwd: u32 = 119; +pub const __NR_readv: u32 = 120; +pub const __NR_writev: u32 = 121; +pub const __NR_settimeofday: u32 = 122; +pub const __NR_fchown: u32 = 123; +pub const __NR_fchmod: u32 = 124; +pub const __NR_recvfrom: u32 = 125; +pub const __NR_setreuid: u32 = 126; +pub const __NR_setregid: u32 = 127; +pub const __NR_rename: u32 = 128; +pub const __NR_truncate: u32 = 129; +pub const __NR_ftruncate: u32 = 130; +pub const __NR_flock: u32 = 131; +pub const __NR_lstat64: u32 = 132; +pub const __NR_sendto: u32 = 133; +pub const __NR_shutdown: u32 = 134; +pub const __NR_socketpair: u32 = 135; +pub const __NR_mkdir: u32 = 136; +pub const __NR_rmdir: u32 = 137; +pub const __NR_utimes: u32 = 138; +pub const __NR_stat64: u32 = 139; +pub const __NR_sendfile64: u32 = 140; +pub const __NR_getpeername: u32 = 141; +pub const __NR_futex: u32 = 142; +pub const __NR_gettid: u32 = 143; +pub const __NR_getrlimit: u32 = 144; +pub const __NR_setrlimit: u32 = 145; +pub const __NR_pivot_root: u32 = 146; +pub const __NR_prctl: u32 = 147; +pub const __NR_pciconfig_read: u32 = 148; +pub const __NR_pciconfig_write: u32 = 149; +pub const __NR_getsockname: u32 = 150; +pub const __NR_inotify_init: u32 = 151; +pub const __NR_inotify_add_watch: u32 = 152; +pub const __NR_poll: u32 = 153; +pub const __NR_getdents64: u32 = 154; +pub const __NR_fcntl64: u32 = 155; +pub const __NR_inotify_rm_watch: u32 = 156; +pub const __NR_statfs: u32 = 157; +pub const __NR_fstatfs: u32 = 158; +pub const __NR_umount: u32 = 159; +pub const __NR_sched_set_affinity: u32 = 160; +pub const __NR_sched_get_affinity: u32 = 161; +pub const __NR_getdomainname: u32 = 162; +pub const __NR_setdomainname: u32 = 163; +pub const __NR_quotactl: u32 = 165; +pub const __NR_set_tid_address: u32 = 166; +pub const __NR_mount: u32 = 167; +pub const __NR_ustat: u32 = 168; +pub const __NR_setxattr: u32 = 169; +pub const __NR_lsetxattr: u32 = 170; +pub const __NR_fsetxattr: u32 = 171; +pub const __NR_getxattr: u32 = 172; +pub const __NR_lgetxattr: u32 = 173; +pub const __NR_getdents: u32 = 174; +pub const __NR_setsid: u32 = 175; +pub const __NR_fchdir: u32 = 176; +pub const __NR_fgetxattr: u32 = 177; +pub const __NR_listxattr: u32 = 178; +pub const __NR_llistxattr: u32 = 179; +pub const __NR_flistxattr: u32 = 180; +pub const __NR_removexattr: u32 = 181; +pub const __NR_lremovexattr: u32 = 182; +pub const __NR_sigpending: u32 = 183; +pub const __NR_query_module: u32 = 184; +pub const __NR_setpgid: u32 = 185; +pub const __NR_fremovexattr: u32 = 186; +pub const __NR_tkill: u32 = 187; +pub const __NR_exit_group: u32 = 188; +pub const __NR_uname: u32 = 189; +pub const __NR_init_module: u32 = 190; +pub const __NR_personality: u32 = 191; +pub const __NR_remap_file_pages: u32 = 192; +pub const __NR_epoll_create: u32 = 193; +pub const __NR_epoll_ctl: u32 = 194; +pub const __NR_epoll_wait: u32 = 195; +pub const __NR_ioprio_set: u32 = 196; +pub const __NR_getppid: u32 = 197; +pub const __NR_sigaction: u32 = 198; +pub const __NR_sgetmask: u32 = 199; +pub const __NR_ssetmask: u32 = 200; +pub const __NR_sigsuspend: u32 = 201; +pub const __NR_oldlstat: u32 = 202; +pub const __NR_uselib: u32 = 203; +pub const __NR_readdir: u32 = 204; +pub const __NR_readahead: u32 = 205; +pub const __NR_socketcall: u32 = 206; +pub const __NR_syslog: u32 = 207; +pub const __NR_lookup_dcookie: u32 = 208; +pub const __NR_fadvise64: u32 = 209; +pub const __NR_fadvise64_64: u32 = 210; +pub const __NR_tgkill: u32 = 211; +pub const __NR_waitpid: u32 = 212; +pub const __NR_swapoff: u32 = 213; +pub const __NR_sysinfo: u32 = 214; +pub const __NR_ipc: u32 = 215; +pub const __NR_sigreturn: u32 = 216; +pub const __NR_clone: u32 = 217; +pub const __NR_ioprio_get: u32 = 218; +pub const __NR_adjtimex: u32 = 219; +pub const __NR_sigprocmask: u32 = 220; +pub const __NR_create_module: u32 = 221; +pub const __NR_delete_module: u32 = 222; +pub const __NR_get_kernel_syms: u32 = 223; +pub const __NR_getpgid: u32 = 224; +pub const __NR_bdflush: u32 = 225; +pub const __NR_sysfs: u32 = 226; +pub const __NR_afs_syscall: u32 = 227; +pub const __NR_setfsuid: u32 = 228; +pub const __NR_setfsgid: u32 = 229; +pub const __NR__newselect: u32 = 230; +pub const __NR_time: u32 = 231; +pub const __NR_splice: u32 = 232; +pub const __NR_stime: u32 = 233; +pub const __NR_statfs64: u32 = 234; +pub const __NR_fstatfs64: u32 = 235; +pub const __NR__llseek: u32 = 236; +pub const __NR_mlock: u32 = 237; +pub const __NR_munlock: u32 = 238; +pub const __NR_mlockall: u32 = 239; +pub const __NR_munlockall: u32 = 240; +pub const __NR_sched_setparam: u32 = 241; +pub const __NR_sched_getparam: u32 = 242; +pub const __NR_sched_setscheduler: u32 = 243; +pub const __NR_sched_getscheduler: u32 = 244; +pub const __NR_sched_yield: u32 = 245; +pub const __NR_sched_get_priority_max: u32 = 246; +pub const __NR_sched_get_priority_min: u32 = 247; +pub const __NR_sched_rr_get_interval: u32 = 248; +pub const __NR_nanosleep: u32 = 249; +pub const __NR_mremap: u32 = 250; +pub const __NR__sysctl: u32 = 251; +pub const __NR_getsid: u32 = 252; +pub const __NR_fdatasync: u32 = 253; +pub const __NR_nfsservctl: u32 = 254; +pub const __NR_sync_file_range: u32 = 255; +pub const __NR_clock_settime: u32 = 256; +pub const __NR_clock_gettime: u32 = 257; +pub const __NR_clock_getres: u32 = 258; +pub const __NR_clock_nanosleep: u32 = 259; +pub const __NR_sched_getaffinity: u32 = 260; +pub const __NR_sched_setaffinity: u32 = 261; +pub const __NR_timer_settime: u32 = 262; +pub const __NR_timer_gettime: u32 = 263; +pub const __NR_timer_getoverrun: u32 = 264; +pub const __NR_timer_delete: u32 = 265; +pub const __NR_timer_create: u32 = 266; +pub const __NR_vserver: u32 = 267; +pub const __NR_io_setup: u32 = 268; +pub const __NR_io_destroy: u32 = 269; +pub const __NR_io_submit: u32 = 270; +pub const __NR_io_cancel: u32 = 271; +pub const __NR_io_getevents: u32 = 272; +pub const __NR_mq_open: u32 = 273; +pub const __NR_mq_unlink: u32 = 274; +pub const __NR_mq_timedsend: u32 = 275; +pub const __NR_mq_timedreceive: u32 = 276; +pub const __NR_mq_notify: u32 = 277; +pub const __NR_mq_getsetattr: u32 = 278; +pub const __NR_waitid: u32 = 279; +pub const __NR_tee: u32 = 280; +pub const __NR_add_key: u32 = 281; +pub const __NR_request_key: u32 = 282; +pub const __NR_keyctl: u32 = 283; +pub const __NR_openat: u32 = 284; +pub const __NR_mkdirat: u32 = 285; +pub const __NR_mknodat: u32 = 286; +pub const __NR_fchownat: u32 = 287; +pub const __NR_futimesat: u32 = 288; +pub const __NR_fstatat64: u32 = 289; +pub const __NR_unlinkat: u32 = 290; +pub const __NR_renameat: u32 = 291; +pub const __NR_linkat: u32 = 292; +pub const __NR_symlinkat: u32 = 293; +pub const __NR_readlinkat: u32 = 294; +pub const __NR_fchmodat: u32 = 295; +pub const __NR_faccessat: u32 = 296; +pub const __NR_pselect6: u32 = 297; +pub const __NR_ppoll: u32 = 298; +pub const __NR_unshare: u32 = 299; +pub const __NR_set_robust_list: u32 = 300; +pub const __NR_get_robust_list: u32 = 301; +pub const __NR_migrate_pages: u32 = 302; +pub const __NR_mbind: u32 = 303; +pub const __NR_get_mempolicy: u32 = 304; +pub const __NR_set_mempolicy: u32 = 305; +pub const __NR_kexec_load: u32 = 306; +pub const __NR_move_pages: u32 = 307; +pub const __NR_getcpu: u32 = 308; +pub const __NR_epoll_pwait: u32 = 309; +pub const __NR_utimensat: u32 = 310; +pub const __NR_signalfd: u32 = 311; +pub const __NR_timerfd_create: u32 = 312; +pub const __NR_eventfd: u32 = 313; +pub const __NR_fallocate: u32 = 314; +pub const __NR_timerfd_settime: u32 = 315; +pub const __NR_timerfd_gettime: u32 = 316; +pub const __NR_signalfd4: u32 = 317; +pub const __NR_eventfd2: u32 = 318; +pub const __NR_epoll_create1: u32 = 319; +pub const __NR_dup3: u32 = 320; +pub const __NR_pipe2: u32 = 321; +pub const __NR_inotify_init1: u32 = 322; +pub const __NR_accept4: u32 = 323; +pub const __NR_preadv: u32 = 324; +pub const __NR_pwritev: u32 = 325; +pub const __NR_rt_tgsigqueueinfo: u32 = 326; +pub const __NR_perf_event_open: u32 = 327; +pub const __NR_recvmmsg: u32 = 328; +pub const __NR_fanotify_init: u32 = 329; +pub const __NR_fanotify_mark: u32 = 330; +pub const __NR_prlimit64: u32 = 331; +pub const __NR_name_to_handle_at: u32 = 332; +pub const __NR_open_by_handle_at: u32 = 333; +pub const __NR_clock_adjtime: u32 = 334; +pub const __NR_syncfs: u32 = 335; +pub const __NR_sendmmsg: u32 = 336; +pub const __NR_setns: u32 = 337; +pub const __NR_process_vm_readv: u32 = 338; +pub const __NR_process_vm_writev: u32 = 339; +pub const __NR_kern_features: u32 = 340; +pub const __NR_kcmp: u32 = 341; +pub const __NR_finit_module: u32 = 342; +pub const __NR_sched_setattr: u32 = 343; +pub const __NR_sched_getattr: u32 = 344; +pub const __NR_renameat2: u32 = 345; +pub const __NR_seccomp: u32 = 346; +pub const __NR_getrandom: u32 = 347; +pub const __NR_memfd_create: u32 = 348; +pub const __NR_bpf: u32 = 349; +pub const __NR_execveat: u32 = 350; +pub const __NR_membarrier: u32 = 351; +pub const __NR_userfaultfd: u32 = 352; +pub const __NR_bind: u32 = 353; +pub const __NR_listen: u32 = 354; +pub const __NR_setsockopt: u32 = 355; +pub const __NR_mlock2: u32 = 356; +pub const __NR_copy_file_range: u32 = 357; +pub const __NR_preadv2: u32 = 358; +pub const __NR_pwritev2: u32 = 359; +pub const __NR_statx: u32 = 360; +pub const __NR_io_pgetevents: u32 = 361; +pub const __NR_pkey_mprotect: u32 = 362; +pub const __NR_pkey_alloc: u32 = 363; +pub const __NR_pkey_free: u32 = 364; +pub const __NR_rseq: u32 = 365; +pub const __NR_semget: u32 = 393; +pub const __NR_semctl: u32 = 394; +pub const __NR_shmget: u32 = 395; +pub const __NR_shmctl: u32 = 396; +pub const __NR_shmat: u32 = 397; +pub const __NR_shmdt: u32 = 398; +pub const __NR_msgget: u32 = 399; +pub const __NR_msgsnd: u32 = 400; +pub const __NR_msgrcv: u32 = 401; +pub const __NR_msgctl: u32 = 402; +pub const __NR_clock_gettime64: u32 = 403; +pub const __NR_clock_settime64: u32 = 404; +pub const __NR_clock_adjtime64: u32 = 405; +pub const __NR_clock_getres_time64: u32 = 406; +pub const __NR_clock_nanosleep_time64: u32 = 407; +pub const __NR_timer_gettime64: u32 = 408; +pub const __NR_timer_settime64: u32 = 409; +pub const __NR_timerfd_gettime64: u32 = 410; +pub const __NR_timerfd_settime64: u32 = 411; +pub const __NR_utimensat_time64: u32 = 412; +pub const __NR_pselect6_time64: u32 = 413; +pub const __NR_ppoll_time64: u32 = 414; +pub const __NR_io_pgetevents_time64: u32 = 416; +pub const __NR_recvmmsg_time64: u32 = 417; +pub const __NR_mq_timedsend_time64: u32 = 418; +pub const __NR_mq_timedreceive_time64: u32 = 419; +pub const __NR_semtimedop_time64: u32 = 420; +pub const __NR_rt_sigtimedwait_time64: u32 = 421; +pub const __NR_futex_time64: u32 = 422; +pub const __NR_sched_rr_get_interval_time64: u32 = 423; +pub const __NR_pidfd_send_signal: u32 = 424; +pub const __NR_io_uring_setup: u32 = 425; +pub const __NR_io_uring_enter: u32 = 426; +pub const __NR_io_uring_register: u32 = 427; +pub const __NR_open_tree: u32 = 428; +pub const __NR_move_mount: u32 = 429; +pub const __NR_fsopen: u32 = 430; +pub const __NR_fsconfig: u32 = 431; +pub const __NR_fsmount: u32 = 432; +pub const __NR_fspick: u32 = 433; +pub const __NR_pidfd_open: u32 = 434; +pub const __NR_close_range: u32 = 436; +pub const __NR_openat2: u32 = 437; +pub const __NR_pidfd_getfd: u32 = 438; +pub const __NR_faccessat2: u32 = 439; +pub const __NR_process_madvise: u32 = 440; +pub const __NR_epoll_pwait2: u32 = 441; +pub const __NR_mount_setattr: u32 = 442; +pub const __NR_quotactl_fd: u32 = 443; +pub const __NR_landlock_create_ruleset: u32 = 444; +pub const __NR_landlock_add_rule: u32 = 445; +pub const __NR_landlock_restrict_self: u32 = 446; +pub const __NR_process_mrelease: u32 = 448; +pub const __NR_futex_waitv: u32 = 449; +pub const __NR_set_mempolicy_home_node: u32 = 450; +pub const KERN_FEATURE_MIXED_MODE_STACK: u32 = 1; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const P_ALL: u32 = 0; +pub const P_PID: u32 = 1; +pub const P_PGID: u32 = 2; +pub const P_PIDFD: u32 = 3; +pub const XATTR_CREATE: u32 = 1; +pub const XATTR_REPLACE: u32 = 2; +pub const XATTR_OS2_PREFIX: &[u8; 5] = b"os2.\0"; +pub const XATTR_MAC_OSX_PREFIX: &[u8; 5] = b"osx.\0"; +pub const XATTR_BTRFS_PREFIX: &[u8; 7] = b"btrfs.\0"; +pub const XATTR_HURD_PREFIX: &[u8; 5] = b"gnu.\0"; +pub const XATTR_SECURITY_PREFIX: &[u8; 10] = b"security.\0"; +pub const XATTR_SYSTEM_PREFIX: &[u8; 8] = b"system.\0"; +pub const XATTR_TRUSTED_PREFIX: &[u8; 9] = b"trusted.\0"; +pub const XATTR_USER_PREFIX: &[u8; 6] = b"user.\0"; +pub const XATTR_EVM_SUFFIX: &[u8; 4] = b"evm\0"; +pub const XATTR_NAME_EVM: &[u8; 13] = b"security.evm\0"; +pub const XATTR_IMA_SUFFIX: &[u8; 4] = b"ima\0"; +pub const XATTR_NAME_IMA: &[u8; 13] = b"security.ima\0"; +pub const XATTR_SELINUX_SUFFIX: &[u8; 8] = b"selinux\0"; +pub const XATTR_NAME_SELINUX: &[u8; 17] = b"security.selinux\0"; +pub const XATTR_SMACK_SUFFIX: &[u8; 8] = b"SMACK64\0"; +pub const XATTR_SMACK_IPIN: &[u8; 12] = b"SMACK64IPIN\0"; +pub const XATTR_SMACK_IPOUT: &[u8; 13] = b"SMACK64IPOUT\0"; +pub const XATTR_SMACK_EXEC: &[u8; 12] = b"SMACK64EXEC\0"; +pub const XATTR_SMACK_TRANSMUTE: &[u8; 17] = b"SMACK64TRANSMUTE\0"; +pub const XATTR_SMACK_MMAP: &[u8; 12] = b"SMACK64MMAP\0"; +pub const XATTR_NAME_SMACK: &[u8; 17] = b"security.SMACK64\0"; +pub const XATTR_NAME_SMACKIPIN: &[u8; 21] = b"security.SMACK64IPIN\0"; +pub const XATTR_NAME_SMACKIPOUT: &[u8; 22] = b"security.SMACK64IPOUT\0"; +pub const XATTR_NAME_SMACKEXEC: &[u8; 21] = b"security.SMACK64EXEC\0"; +pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26] = b"security.SMACK64TRANSMUTE\0"; +pub const XATTR_NAME_SMACKMMAP: &[u8; 21] = b"security.SMACK64MMAP\0"; +pub const XATTR_APPARMOR_SUFFIX: &[u8; 9] = b"apparmor\0"; +pub const XATTR_NAME_APPARMOR: &[u8; 18] = b"security.apparmor\0"; +pub const XATTR_CAPS_SUFFIX: &[u8; 11] = b"capability\0"; +pub const XATTR_NAME_CAPS: &[u8; 20] = b"security.capability\0"; +pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17] = b"posix_acl_access\0"; +pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24] = b"system.posix_acl_access\0"; +pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18] = b"posix_acl_default\0"; +pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25] = b"system.posix_acl_default\0"; +pub const MFD_CLOEXEC: u32 = 1; +pub const MFD_ALLOW_SEALING: u32 = 2; +pub const MFD_HUGETLB: u32 = 4; +pub const MFD_NOEXEC_SEAL: u32 = 8; +pub const MFD_EXEC: u32 = 16; +pub const MFD_HUGE_SHIFT: u32 = 26; +pub const MFD_HUGE_MASK: u32 = 63; +pub const MFD_HUGE_64KB: u32 = 1073741824; +pub const MFD_HUGE_512KB: u32 = 1275068416; +pub const MFD_HUGE_1MB: u32 = 1342177280; +pub const MFD_HUGE_2MB: u32 = 1409286144; +pub const MFD_HUGE_8MB: u32 = 1543503872; +pub const MFD_HUGE_16MB: u32 = 1610612736; +pub const MFD_HUGE_32MB: u32 = 1677721600; +pub const MFD_HUGE_256MB: u32 = 1879048192; +pub const MFD_HUGE_512MB: u32 = 1946157056; +pub const MFD_HUGE_1GB: u32 = 2013265920; +pub const MFD_HUGE_2GB: u32 = 2080374784; +pub const MFD_HUGE_16GB: u32 = 2281701376; +pub const TFD_TIMER_ABSTIME: u32 = 1; +pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; +pub const TFD_CLOEXEC: u32 = 4194304; +pub const TFD_NONBLOCK: u32 = 16384; +pub const USERFAULTFD_IOC: u32 = 170; +pub const _UFFDIO_REGISTER: u32 = 0; +pub const _UFFDIO_UNREGISTER: u32 = 1; +pub const _UFFDIO_WAKE: u32 = 2; +pub const _UFFDIO_COPY: u32 = 3; +pub const _UFFDIO_ZEROPAGE: u32 = 4; +pub const _UFFDIO_WRITEPROTECT: u32 = 6; +pub const _UFFDIO_CONTINUE: u32 = 7; +pub const _UFFDIO_API: u32 = 63; +pub const UFFDIO: u32 = 170; +pub const UFFD_EVENT_PAGEFAULT: u32 = 18; +pub const UFFD_EVENT_FORK: u32 = 19; +pub const UFFD_EVENT_REMAP: u32 = 20; +pub const UFFD_EVENT_REMOVE: u32 = 21; +pub const UFFD_EVENT_UNMAP: u32 = 22; +pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; +pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; +pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; +pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; +pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; +pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; +pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; +pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; +pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; +pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; +pub const UFFD_FEATURE_SIGBUS: u32 = 128; +pub const UFFD_FEATURE_THREAD_ID: u32 = 256; +pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; +pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; +pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; +pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; +pub const UFFD_USER_MODE_ONLY: u32 = 1; +pub const DT_UNKNOWN: u32 = 0; +pub const DT_FIFO: u32 = 1; +pub const DT_CHR: u32 = 2; +pub const DT_DIR: u32 = 4; +pub const DT_BLK: u32 = 6; +pub const DT_REG: u32 = 8; +pub const DT_LNK: u32 = 10; +pub const DT_SOCK: u32 = 12; +pub const STAT_HAVE_NSEC: u32 = 1; +pub const F_OK: u32 = 0; +pub const R_OK: u32 = 4; +pub const W_OK: u32 = 2; +pub const X_OK: u32 = 1; +pub const UTIME_NOW: u32 = 1073741823; +pub const UTIME_OMIT: u32 = 1073741822; +pub const MNT_FORCE: u32 = 1; +pub const MNT_DETACH: u32 = 2; +pub const MNT_EXPIRE: u32 = 4; +pub const UMOUNT_NOFOLLOW: u32 = 8; +pub const UMOUNT_UNUSED: u32 = 2147483648; +pub const STDIN_FILENO: u32 = 0; +pub const STDOUT_FILENO: u32 = 1; +pub const STDERR_FILENO: u32 = 2; +pub const RWF_HIPRI: u32 = 1; +pub const RWF_DSYNC: u32 = 2; +pub const RWF_SYNC: u32 = 4; +pub const RWF_NOWAIT: u32 = 8; +pub const RWF_APPEND: u32 = 16; +pub const EFD_SEMAPHORE: u32 = 1; +pub const EFD_CLOEXEC: u32 = 4194304; +pub const EFD_NONBLOCK: u32 = 16384; +pub const EPOLLIN: u32 = 1; +pub const EPOLLPRI: u32 = 2; +pub const EPOLLOUT: u32 = 4; +pub const EPOLLERR: u32 = 8; +pub const EPOLLHUP: u32 = 16; +pub const EPOLLNVAL: u32 = 32; +pub const EPOLLRDNORM: u32 = 64; +pub const EPOLLRDBAND: u32 = 128; +pub const EPOLLWRNORM: u32 = 256; +pub const EPOLLWRBAND: u32 = 512; +pub const EPOLLMSG: u32 = 1024; +pub const EPOLLRDHUP: u32 = 8192; +pub const EPOLLEXCLUSIVE: u32 = 268435456; +pub const EPOLLWAKEUP: u32 = 536870912; +pub const EPOLLONESHOT: u32 = 1073741824; +pub const EPOLLET: u32 = 2147483648; +pub const TFD_SHARED_FCNTL_FLAGS: u32 = 4210688; +pub const TFD_CREATE_FLAGS: u32 = 4210688; +pub const TFD_SETTIME_FLAGS: u32 = 1; +pub const UFFD_API: u32 = 170; +pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; +pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; +pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; +pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; +pub const UFFDIO_COPY_MODE_WP: u32 = 2; +pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; +pub const SPLICE_F_MOVE: u32 = 1; +pub const SPLICE_F_NONBLOCK: u32 = 2; +pub const SPLICE_F_MORE: u32 = 4; +pub const SPLICE_F_GIFT: u32 = 8; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, } #[repr(u32)] #[non_exhaustive] @@ -4838,702 +2727,161 @@ pub enum membarrier_cmd_flag { MEMBARRIER_CMD_FLAG_CPU = 1, } -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct uffd_msg { -pub event: __u8, -pub reserved1: __u8, -pub reserved2: __u16, -pub reserved3: __u32, -pub arg: uffd_msg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1 { -pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, -pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, -pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, -pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, -pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { -pub flags: __u64, -pub address: __u64, -pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { -pub ptid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { -pub ufd: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { -pub from: __u64, -pub to: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { -pub start: __u64, -pub end: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { -pub reserved1: __u64, -pub reserved2: __u64, -pub reserved3: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_api { -pub api: __u64, -pub features: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_range { -pub start: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_register { -pub range: uffdio_range, -pub mode: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_copy { -pub dst: __u64, -pub src: __u64, -pub len: __u64, -pub mode: __u64, -pub copy: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_zeropage { -pub range: uffdio_range, -pub mode: __u64, -pub zeropage: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_writeprotect { -pub range: uffdio_range, -pub mode: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_continue { -pub range: uffdio_range, -pub mode: __u64, -pub mapped: __s64, -} -#[repr(C)] -pub struct io_uring_sqe { -pub opcode: __u8, -pub flags: __u8, -pub ioprio: __u16, -pub fd: __s32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, -pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, -pub len: __u32, -pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, -pub user_data: __u64, -pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, -pub personality: __u16, -pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, -pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, -} #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_1 { -pub off: __u64, -pub addr2: __u64, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { -pub cmd_op: __u32, -pub __pad1: __u32, +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_2 { -pub addr: __u64, -pub splice_off_in: __u64, +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_3 { -pub rw_flags: __kernel_rwf_t, -pub fsync_flags: __u32, -pub poll_events: __u16, -pub poll32_events: __u32, -pub sync_range_flags: __u32, -pub msg_flags: __u32, -pub timeout_flags: __u32, -pub accept_flags: __u32, -pub cancel_flags: __u32, -pub open_flags: __u32, -pub statx_flags: __u32, -pub fadvise_advice: __u32, -pub splice_flags: __u32, -pub rename_flags: __u32, -pub unlink_flags: __u32, -pub hardlink_flags: __u32, -pub xattr_flags: __u32, -pub msg_ring_flags: __u32, -pub uring_cmd_flags: __u32, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_4 { -pub buf_index: __u16, -pub buf_group: __u16, +pub union sigval { +pub sival_int: crate::ctypes::c_int, +pub sival_ptr: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_5 { -pub splice_fd_in: __s32, -pub file_index: __u32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { -pub addr_len: __u16, -pub __pad3: [__u16; 1usize], -} -#[repr(C)] -pub struct io_uring_sqe__bindgen_ty_6 { -pub __bindgen_anon_1: __BindgenUnionField, -pub cmd: __BindgenUnionField<[__u8; 0usize]>, -pub bindgen_union_field: [u64; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { -pub addr3: __u64, -pub __pad2: [__u64; 1usize], -} -pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT; -pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT; -pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT; -pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT; -pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT; -pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT; -pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -IOSQE_FIXED_FILE_BIT = 0, -IOSQE_IO_DRAIN_BIT = 1, -IOSQE_IO_LINK_BIT = 2, -IOSQE_IO_HARDLINK_BIT = 3, -IOSQE_ASYNC_BIT = 4, -IOSQE_BUFFER_SELECT_BIT = 5, -IOSQE_CQE_SKIP_SUCCESS_BIT = 6, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum io_uring_op { -IORING_OP_NOP = 0, -IORING_OP_READV = 1, -IORING_OP_WRITEV = 2, -IORING_OP_FSYNC = 3, -IORING_OP_READ_FIXED = 4, -IORING_OP_WRITE_FIXED = 5, -IORING_OP_POLL_ADD = 6, -IORING_OP_POLL_REMOVE = 7, -IORING_OP_SYNC_FILE_RANGE = 8, -IORING_OP_SENDMSG = 9, -IORING_OP_RECVMSG = 10, -IORING_OP_TIMEOUT = 11, -IORING_OP_TIMEOUT_REMOVE = 12, -IORING_OP_ACCEPT = 13, -IORING_OP_ASYNC_CANCEL = 14, -IORING_OP_LINK_TIMEOUT = 15, -IORING_OP_CONNECT = 16, -IORING_OP_FALLOCATE = 17, -IORING_OP_OPENAT = 18, -IORING_OP_CLOSE = 19, -IORING_OP_FILES_UPDATE = 20, -IORING_OP_STATX = 21, -IORING_OP_READ = 22, -IORING_OP_WRITE = 23, -IORING_OP_FADVISE = 24, -IORING_OP_MADVISE = 25, -IORING_OP_SEND = 26, -IORING_OP_RECV = 27, -IORING_OP_OPENAT2 = 28, -IORING_OP_EPOLL_CTL = 29, -IORING_OP_SPLICE = 30, -IORING_OP_PROVIDE_BUFFERS = 31, -IORING_OP_REMOVE_BUFFERS = 32, -IORING_OP_TEE = 33, -IORING_OP_SHUTDOWN = 34, -IORING_OP_RENAMEAT = 35, -IORING_OP_UNLINKAT = 36, -IORING_OP_MKDIRAT = 37, -IORING_OP_SYMLINKAT = 38, -IORING_OP_LINKAT = 39, -IORING_OP_MSG_RING = 40, -IORING_OP_FSETXATTR = 41, -IORING_OP_SETXATTR = 42, -IORING_OP_FGETXATTR = 43, -IORING_OP_GETXATTR = 44, -IORING_OP_SOCKET = 45, -IORING_OP_URING_CMD = 46, -IORING_OP_SEND_ZC = 47, -IORING_OP_SENDMSG_ZC = 48, -IORING_OP_LAST = 49, -} -pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA; -pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_8 { -IORING_MSG_DATA = 0, -IORING_MSG_SEND_FD = 1, -} -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_cqe { -pub user_data: __u64, -pub res: __s32, -pub flags: __u32, -pub big_cqe: __IncompleteArrayField<__u64>, -} -pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_9 { -IORING_CQE_BUFFER_SHIFT = 16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_sqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub flags: __u32, -pub dropped: __u32, -pub array: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_cqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub overflow: __u32, -pub cqes: __u32, -pub flags: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_params { -pub sq_entries: __u32, -pub cq_entries: __u32, -pub flags: __u32, -pub sq_thread_cpu: __u32, -pub sq_thread_idle: __u32, -pub features: __u32, -pub wq_fd: __u32, -pub resv: [__u32; 3usize], -pub sq_off: io_sqring_offsets, -pub cq_off: io_cqring_offsets, -} -pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS; -pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS; -pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES; -pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES; -pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD; -pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD; -pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE; -pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC; -pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE; -pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY; -pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY; -pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS; -pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS; -pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2; -pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2; -pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2; -pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE; -pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF; -pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF; -pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS; -pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS; -pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS; -pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING; -pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING; -pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL; -pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE; -pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST; -pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_USE_REGISTERED_RING; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_10 { -IORING_REGISTER_BUFFERS = 0, -IORING_UNREGISTER_BUFFERS = 1, -IORING_REGISTER_FILES = 2, -IORING_UNREGISTER_FILES = 3, -IORING_REGISTER_EVENTFD = 4, -IORING_UNREGISTER_EVENTFD = 5, -IORING_REGISTER_FILES_UPDATE = 6, -IORING_REGISTER_EVENTFD_ASYNC = 7, -IORING_REGISTER_PROBE = 8, -IORING_REGISTER_PERSONALITY = 9, -IORING_UNREGISTER_PERSONALITY = 10, -IORING_REGISTER_RESTRICTIONS = 11, -IORING_REGISTER_ENABLE_RINGS = 12, -IORING_REGISTER_FILES2 = 13, -IORING_REGISTER_FILES_UPDATE2 = 14, -IORING_REGISTER_BUFFERS2 = 15, -IORING_REGISTER_BUFFERS_UPDATE = 16, -IORING_REGISTER_IOWQ_AFF = 17, -IORING_UNREGISTER_IOWQ_AFF = 18, -IORING_REGISTER_IOWQ_MAX_WORKERS = 19, -IORING_REGISTER_RING_FDS = 20, -IORING_UNREGISTER_RING_FDS = 21, -IORING_REGISTER_PBUF_RING = 22, -IORING_UNREGISTER_PBUF_RING = 23, -IORING_REGISTER_SYNC_CANCEL = 24, -IORING_REGISTER_FILE_ALLOC_RANGE = 25, -IORING_REGISTER_LAST = 26, -IORING_REGISTER_USE_REGISTERED_RING = 2147483648, -} -pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND; -pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_11 { -IO_WQ_BOUND = 0, -IO_WQ_UNBOUND = 1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_files_update { -pub offset: __u32, -pub resv: __u32, -pub fds: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_register { -pub nr: __u32, -pub flags: __u32, -pub resv2: __u64, -pub data: __u64, -pub tags: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update2 { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -pub tags: __u64, -pub nr: __u32, -pub resv2: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_slot { -pub tag: __u64, -pub resv: [__u64; 3usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_register { -pub nr_slots: __u32, -pub resv: __u32, -pub resv2: __u64, -pub data: __u64, -pub resv3: __u64, +pub union __sifields { +pub _kill: __sifields__bindgen_ty_1, +pub _timer: __sifields__bindgen_ty_2, +pub _rt: __sifields__bindgen_ty_3, +pub _sigchld: __sifields__bindgen_ty_4, +pub _sigfault: __sifields__bindgen_ty_5, +pub _sigpoll: __sifields__bindgen_ty_6, +pub _sigsys: __sifields__bindgen_ty_7, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_probe_op { -pub op: __u8, -pub resv: __u8, -pub flags: __u16, -pub resv2: __u32, +#[derive(Copy, Clone)] +pub union __sifields__bindgen_ty_5__bindgen_ty_1 { +pub _trapno: crate::ctypes::c_int, +pub _addr_lsb: crate::ctypes::c_short, +pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, +pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, +pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] -#[derive(Debug)] -pub struct io_uring_probe { -pub last_op: __u8, -pub ops_len: __u8, -pub resv: __u16, -pub resv2: [__u32; 3usize], -pub ops: __IncompleteArrayField, +#[derive(Copy, Clone)] +pub union siginfo__bindgen_ty_1 { +pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, +pub _si_pad: [crate::ctypes::c_int; 32usize], } #[repr(C)] #[derive(Copy, Clone)] -pub struct io_uring_restriction { -pub opcode: __u16, -pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, -pub resv: __u8, -pub resv2: [__u32; 3usize], +pub union sigevent__bindgen_ty_1 { +pub _pad: [crate::ctypes::c_int; 13usize], +pub _tid: crate::ctypes::c_int, +pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_restriction__bindgen_ty_1 { -pub register_op: __u8, -pub sqe_op: __u8, -pub sqe_flags: __u8, +pub union uffd_msg__bindgen_ty_1 { +pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, +pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, +pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, +pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, +pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf { -pub addr: __u64, -pub len: __u32, -pub bid: __u16, -pub resv: __u16, +#[derive(Copy, Clone)] +pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { +pub ptid: __u32, } -#[repr(C)] -pub struct io_uring_buf_ring { -pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } } -#[repr(C)] -pub struct io_uring_buf_ring__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 2usize], } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { -pub resv1: __u64, -pub resv2: __u32, -pub resv3: __u16, -pub tail: __u16, +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask } -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { -pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, -pub bufs: __IncompleteArrayField, +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_reg { -pub ring_addr: __u64, -pub ring_entries: __u32, -pub bgid: __u16, -pub pad: __u16, -pub resv: [__u64; 3usize], } -pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP; -pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP; -pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; -pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; -pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_12 { -IORING_RESTRICTION_REGISTER_OP = 0, -IORING_RESTRICTION_SQE_OP = 1, -IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, -IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, -IORING_RESTRICTION_LAST = 4, +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_getevents_arg { -pub sigmask: __u64, -pub sigmask_sz: __u32, -pub pad: __u32, -pub ts: __u64, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sync_cancel_reg { -pub addr: __u64, -pub fd: __s32, -pub flags: __u32, -pub timeout: __kernel_timespec, -pub pad: [__u64; 4usize], +val } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_file_index_range { -pub off: __u32, -pub len: __u32, -pub resv: __u64, +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_recvmsg_out { -pub namelen: __u32, -pub controllen: __u32, -pub payloadlen: __u32, -pub flags: __u32, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr { -pub __storage: __kernel_sockaddr_storage, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct linger { -pub l_onoff: crate::ctypes::c_int, -pub l_linger: crate::ctypes::c_int, +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) } -#[repr(C)] -#[derive(Debug)] -pub struct linux_dirent64 { -pub d_ino: crate::ctypes::c_ulonglong, -pub d_off: crate::ctypes::c_longlong, -pub d_reclen: __u16, -pub d_type: __u8, -pub d_name: __IncompleteArrayField, +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T } -pub type socklen_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat { -pub st_dev: crate::ctypes::c_ushort, -pub st_ino: __kernel_ino_t, -pub st_mode: __kernel_mode_t, -pub st_nlink: crate::ctypes::c_short, -pub st_uid: crate::ctypes::c_ushort, -pub st_gid: crate::ctypes::c_ushort, -pub st_rdev: crate::ctypes::c_ushort, -pub st_size: crate::ctypes::c_long, -pub st_atime: crate::ctypes::c_long, -pub st_atime_nsec: crate::ctypes::c_ulong, -pub st_mtime: crate::ctypes::c_long, -pub st_mtime_nsec: crate::ctypes::c_ulong, -pub st_ctime: crate::ctypes::c_long, -pub st_ctime_nsec: crate::ctypes::c_ulong, -pub st_blksize: crate::ctypes::c_long, -pub st_blocks: crate::ctypes::c_long, -pub __unused4: [crate::ctypes::c_ulong; 2usize], +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat64 { -pub st_dev: crate::ctypes::c_ulonglong, -pub st_ino: crate::ctypes::c_ulonglong, -pub st_mode: crate::ctypes::c_uint, -pub st_nlink: crate::ctypes::c_uint, -pub st_uid: crate::ctypes::c_uint, -pub st_gid: crate::ctypes::c_uint, -pub st_rdev: crate::ctypes::c_ulonglong, -pub __pad3: [crate::ctypes::c_uchar; 8usize], -pub st_size: crate::ctypes::c_longlong, -pub st_blksize: crate::ctypes::c_uint, -pub __pad4: [crate::ctypes::c_uchar; 8usize], -pub st_blocks: crate::ctypes::c_uint, -pub st_atime: crate::ctypes::c_uint, -pub st_atime_nsec: crate::ctypes::c_uint, -pub st_mtime: crate::ctypes::c_uint, -pub st_mtime_nsec: crate::ctypes::c_uint, -pub st_ctime: crate::ctypes::c_uint, -pub st_ctime_nsec: crate::ctypes::c_uint, -pub __unused4: crate::ctypes::c_uint, -pub __unused5: crate::ctypes::c_uint, +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u32, -pub f_bfree: __u32, -pub f_bavail: __u32, -pub f_files: __u32, -pub f_ffree: __u32, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct compat_statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") } -pub type __fsword_t = __u32; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_desc { -pub entry_number: crate::ctypes::c_uint, -pub base_addr: crate::ctypes::c_uint, -pub limit: crate::ctypes::c_uint, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub __bindgen_padding_0: [u8; 3usize], +} +impl membarrier_cmd { +pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; } impl user_desc { #[inline] @@ -5632,46 +2980,3 @@ __bindgen_bitfield_unit } } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr { -pub msg_name: *mut crate::ctypes::c_void, -pub msg_namelen: crate::ctypes::c_int, -pub msg_iov: *mut iovec, -pub msg_iovlen: size_t, -pub msg_control: *mut crate::ctypes::c_void, -pub msg_controllen: size_t, -pub msg_flags: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsghdr { -pub cmsg_len: size_t, -pub cmsg_level: crate::ctypes::c_int, -pub cmsg_type: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ucred { -pub pid: __u32, -pub uid: __u32, -pub gid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mmsghdr { -pub msg_hdr: msghdr, -pub msg_len: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigset_t { -pub sig: [crate::ctypes::c_ulong; 1usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigaction { -pub sa_handler_kernel: __kernel_sighandler_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_mask: kernel_sigset_t, -} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/if_ether.rs temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/if_ether.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/if_ether.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/if_ether.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,167 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_long; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ethhdr { +pub h_dest: [crate::ctypes::c_uchar; 6usize], +pub h_source: [crate::ctypes::c_uchar; 6usize], +pub h_proto: __be16, +} +pub const ETH_ALEN: u32 = 6; +pub const ETH_TLEN: u32 = 2; +pub const ETH_HLEN: u32 = 14; +pub const ETH_ZLEN: u32 = 60; +pub const ETH_DATA_LEN: u32 = 1500; +pub const ETH_FRAME_LEN: u32 = 1514; +pub const ETH_FCS_LEN: u32 = 4; +pub const ETH_MIN_MTU: u32 = 68; +pub const ETH_MAX_MTU: u32 = 65535; +pub const ETH_P_LOOP: u32 = 96; +pub const ETH_P_PUP: u32 = 512; +pub const ETH_P_PUPAT: u32 = 513; +pub const ETH_P_TSN: u32 = 8944; +pub const ETH_P_ERSPAN2: u32 = 8939; +pub const ETH_P_IP: u32 = 2048; +pub const ETH_P_X25: u32 = 2053; +pub const ETH_P_ARP: u32 = 2054; +pub const ETH_P_BPQ: u32 = 2303; +pub const ETH_P_IEEEPUP: u32 = 2560; +pub const ETH_P_IEEEPUPAT: u32 = 2561; +pub const ETH_P_BATMAN: u32 = 17157; +pub const ETH_P_DEC: u32 = 24576; +pub const ETH_P_DNA_DL: u32 = 24577; +pub const ETH_P_DNA_RC: u32 = 24578; +pub const ETH_P_DNA_RT: u32 = 24579; +pub const ETH_P_LAT: u32 = 24580; +pub const ETH_P_DIAG: u32 = 24581; +pub const ETH_P_CUST: u32 = 24582; +pub const ETH_P_SCA: u32 = 24583; +pub const ETH_P_TEB: u32 = 25944; +pub const ETH_P_RARP: u32 = 32821; +pub const ETH_P_ATALK: u32 = 32923; +pub const ETH_P_AARP: u32 = 33011; +pub const ETH_P_8021Q: u32 = 33024; +pub const ETH_P_ERSPAN: u32 = 35006; +pub const ETH_P_IPX: u32 = 33079; +pub const ETH_P_IPV6: u32 = 34525; +pub const ETH_P_PAUSE: u32 = 34824; +pub const ETH_P_SLOW: u32 = 34825; +pub const ETH_P_WCCP: u32 = 34878; +pub const ETH_P_MPLS_UC: u32 = 34887; +pub const ETH_P_MPLS_MC: u32 = 34888; +pub const ETH_P_ATMMPOA: u32 = 34892; +pub const ETH_P_PPP_DISC: u32 = 34915; +pub const ETH_P_PPP_SES: u32 = 34916; +pub const ETH_P_LINK_CTL: u32 = 34924; +pub const ETH_P_ATMFATE: u32 = 34948; +pub const ETH_P_PAE: u32 = 34958; +pub const ETH_P_PROFINET: u32 = 34962; +pub const ETH_P_REALTEK: u32 = 34969; +pub const ETH_P_AOE: u32 = 34978; +pub const ETH_P_ETHERCAT: u32 = 34980; +pub const ETH_P_8021AD: u32 = 34984; +pub const ETH_P_802_EX1: u32 = 34997; +pub const ETH_P_PREAUTH: u32 = 35015; +pub const ETH_P_TIPC: u32 = 35018; +pub const ETH_P_LLDP: u32 = 35020; +pub const ETH_P_MRP: u32 = 35043; +pub const ETH_P_MACSEC: u32 = 35045; +pub const ETH_P_8021AH: u32 = 35047; +pub const ETH_P_MVRP: u32 = 35061; +pub const ETH_P_1588: u32 = 35063; +pub const ETH_P_NCSI: u32 = 35064; +pub const ETH_P_PRP: u32 = 35067; +pub const ETH_P_CFM: u32 = 35074; +pub const ETH_P_FCOE: u32 = 35078; +pub const ETH_P_IBOE: u32 = 35093; +pub const ETH_P_TDLS: u32 = 35085; +pub const ETH_P_FIP: u32 = 35092; +pub const ETH_P_80221: u32 = 35095; +pub const ETH_P_HSR: u32 = 35119; +pub const ETH_P_NSH: u32 = 35151; +pub const ETH_P_LOOPBACK: u32 = 36864; +pub const ETH_P_QINQ1: u32 = 37120; +pub const ETH_P_QINQ2: u32 = 37376; +pub const ETH_P_QINQ3: u32 = 37632; +pub const ETH_P_EDSA: u32 = 56026; +pub const ETH_P_DSA_8021Q: u32 = 56027; +pub const ETH_P_DSA_A5PSW: u32 = 57345; +pub const ETH_P_IFE: u32 = 60734; +pub const ETH_P_AF_IUCV: u32 = 64507; +pub const ETH_P_802_3_MIN: u32 = 1536; +pub const ETH_P_802_3: u32 = 1; +pub const ETH_P_AX25: u32 = 2; +pub const ETH_P_ALL: u32 = 3; +pub const ETH_P_802_2: u32 = 4; +pub const ETH_P_SNAP: u32 = 5; +pub const ETH_P_DDCMP: u32 = 6; +pub const ETH_P_WAN_PPP: u32 = 7; +pub const ETH_P_PPP_MP: u32 = 8; +pub const ETH_P_LOCALTALK: u32 = 9; +pub const ETH_P_CAN: u32 = 12; +pub const ETH_P_CANFD: u32 = 13; +pub const ETH_P_CANXL: u32 = 14; +pub const ETH_P_PPPTALK: u32 = 16; +pub const ETH_P_TR_802_2: u32 = 17; +pub const ETH_P_MOBITEX: u32 = 21; +pub const ETH_P_CONTROL: u32 = 22; +pub const ETH_P_IRDA: u32 = 23; +pub const ETH_P_ECONET: u32 = 24; +pub const ETH_P_HDLC: u32 = 25; +pub const ETH_P_ARCNET: u32 = 26; +pub const ETH_P_DSA: u32 = 27; +pub const ETH_P_TRAILER: u32 = 28; +pub const ETH_P_PHONET: u32 = 245; +pub const ETH_P_IEEE802154: u32 = 246; +pub const ETH_P_CAIF: u32 = 247; +pub const ETH_P_XDSA: u32 = 248; +pub const ETH_P_MAP: u32 = 249; +pub const ETH_P_MCTP: u32 = 250; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/ioctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/ioctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/ioctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,3 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/io_uring.rs temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/io_uring.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/io_uring.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/io_uring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1084 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_long; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_rwf_t = crate::ctypes::c_int; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +pub struct io_uring_sqe { +pub opcode: __u8, +pub flags: __u8, +pub ioprio: __u16, +pub fd: __s32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, +pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, +pub len: __u32, +pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, +pub user_data: __u64, +pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, +pub personality: __u16, +pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, +pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { +pub cmd_op: __u32, +pub __pad1: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { +pub addr_len: __u16, +pub __pad3: [__u16; 1usize], +} +#[repr(C)] +pub struct io_uring_sqe__bindgen_ty_6 { +pub __bindgen_anon_1: __BindgenUnionField, +pub cmd: __BindgenUnionField<[__u8; 0usize]>, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { +pub addr3: __u64, +pub __pad2: [__u64; 1usize], +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_cqe { +pub user_data: __u64, +pub res: __s32, +pub flags: __u32, +pub big_cqe: __IncompleteArrayField<__u64>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_sqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub flags: __u32, +pub dropped: __u32, +pub array: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_cqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub overflow: __u32, +pub cqes: __u32, +pub flags: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_params { +pub sq_entries: __u32, +pub cq_entries: __u32, +pub flags: __u32, +pub sq_thread_cpu: __u32, +pub sq_thread_idle: __u32, +pub features: __u32, +pub wq_fd: __u32, +pub resv: [__u32; 3usize], +pub sq_off: io_sqring_offsets, +pub cq_off: io_cqring_offsets, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_files_update { +pub offset: __u32, +pub resv: __u32, +pub fds: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_register { +pub nr: __u32, +pub flags: __u32, +pub resv2: __u64, +pub data: __u64, +pub tags: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update2 { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +pub tags: __u64, +pub nr: __u32, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_slot { +pub tag: __u64, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_register { +pub nr_slots: __u32, +pub resv: __u32, +pub resv2: __u64, +pub data: __u64, +pub resv3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_probe_op { +pub op: __u8, +pub resv: __u8, +pub flags: __u16, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_probe { +pub last_op: __u8, +pub ops_len: __u8, +pub resv: __u16, +pub resv2: [__u32; 3usize], +pub ops: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_restriction { +pub opcode: __u16, +pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, +pub resv: __u8, +pub resv2: [__u32; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf { +pub addr: __u64, +pub len: __u32, +pub bid: __u16, +pub resv: __u16, +} +#[repr(C)] +pub struct io_uring_buf_ring { +pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +} +#[repr(C)] +pub struct io_uring_buf_ring__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { +pub resv1: __u64, +pub resv2: __u32, +pub resv3: __u16, +pub tail: __u16, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { +pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, +pub bufs: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_reg { +pub ring_addr: __u64, +pub ring_entries: __u32, +pub bgid: __u16, +pub pad: __u16, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_getevents_arg { +pub sigmask: __u64, +pub sigmask_sz: __u32, +pub pad: __u32, +pub ts: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sync_cancel_reg { +pub addr: __u64, +pub fd: __s32, +pub flags: __u32, +pub timeout: __kernel_timespec, +pub pad: [__u64; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_file_index_range { +pub off: __u32, +pub len: __u32, +pub resv: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_recvmsg_out { +pub namelen: __u32, +pub controllen: __u32, +pub payloadlen: __u32, +pub flags: __u32, +} +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_XSIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const IORING_FILE_INDEX_ALLOC: i32 = -1; +pub const IORING_SETUP_IOPOLL: u32 = 1; +pub const IORING_SETUP_SQPOLL: u32 = 2; +pub const IORING_SETUP_SQ_AFF: u32 = 4; +pub const IORING_SETUP_CQSIZE: u32 = 8; +pub const IORING_SETUP_CLAMP: u32 = 16; +pub const IORING_SETUP_ATTACH_WQ: u32 = 32; +pub const IORING_SETUP_R_DISABLED: u32 = 64; +pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; +pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; +pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; +pub const IORING_SETUP_SQE128: u32 = 1024; +pub const IORING_SETUP_CQE32: u32 = 2048; +pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; +pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; +pub const IORING_URING_CMD_FIXED: u32 = 1; +pub const IORING_FSYNC_DATASYNC: u32 = 1; +pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; +pub const IORING_POLL_ADD_LEVEL: u32 = 8; +pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; +pub const IORING_ASYNC_CANCEL_FD: u32 = 2; +pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; +pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; +pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; +pub const IORING_RECV_MULTISHOT: u32 = 2; +pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; +pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; +pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; +pub const IORING_ACCEPT_MULTISHOT: u32 = 1; +pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; +pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; +pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; +pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; +pub const IORING_CQE_F_NOTIF: u32 = 8; +pub const IORING_OFF_SQ_RING: u32 = 0; +pub const IORING_OFF_CQ_RING: u32 = 134217728; +pub const IORING_OFF_SQES: u32 = 268435456; +pub const IORING_SQ_NEED_WAKEUP: u32 = 1; +pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; +pub const IORING_SQ_TASKRUN: u32 = 4; +pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; +pub const IORING_ENTER_GETEVENTS: u32 = 1; +pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; +pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; +pub const IORING_ENTER_REGISTERED_RING: u32 = 16; +pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; +pub const IORING_FEAT_NODROP: u32 = 2; +pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; +pub const IORING_FEAT_RW_CUR_POS: u32 = 8; +pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; +pub const IORING_FEAT_FAST_POLL: u32 = 32; +pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_FEAT_CQE_SKIP: u32 = 2048; +pub const IORING_FEAT_LINKED_FILE: u32 = 4096; +pub const IORING_FEAT_REG_REG_RING: u32 = 8192; +pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; +pub const IO_URING_OP_SUPPORTED: u32 = 1; +pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_FIXED_FILE_BIT; +pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_DRAIN_BIT; +pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_LINK_BIT; +pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_HARDLINK_BIT; +pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_ASYNC_BIT; +pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_BUFFER_SELECT_BIT; +pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_CQE_SKIP_SUCCESS_BIT; +pub const IORING_MSG_DATA: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_DATA; +pub const IORING_MSG_SEND_FD: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_SEND_FD; +pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = _bindgen_ty_3::IORING_CQE_BUFFER_SHIFT; +pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS; +pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_BUFFERS; +pub const IORING_REGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES; +pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_FILES; +pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD; +pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_EVENTFD; +pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE; +pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD_ASYNC; +pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PROBE; +pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PERSONALITY; +pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PERSONALITY; +pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RESTRICTIONS; +pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_ENABLE_RINGS; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES2; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE2; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS2; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS_UPDATE; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_AFF; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_IOWQ_AFF; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_MAX_WORKERS; +pub const IORING_REGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RING_FDS; +pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_RING_FDS; +pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PBUF_RING; +pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PBUF_RING; +pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_SYNC_CANCEL; +pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILE_ALLOC_RANGE; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_LAST; +pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_USE_REGISTERED_RING; +pub const IO_WQ_BOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_BOUND; +pub const IO_WQ_UNBOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_UNBOUND; +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_REGISTER_OP; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_OP; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_LAST; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IOSQE_FIXED_FILE_BIT = 0, +IOSQE_IO_DRAIN_BIT = 1, +IOSQE_IO_LINK_BIT = 2, +IOSQE_IO_HARDLINK_BIT = 3, +IOSQE_ASYNC_BIT = 4, +IOSQE_BUFFER_SELECT_BIT = 5, +IOSQE_CQE_SKIP_SUCCESS_BIT = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum io_uring_op { +IORING_OP_NOP = 0, +IORING_OP_READV = 1, +IORING_OP_WRITEV = 2, +IORING_OP_FSYNC = 3, +IORING_OP_READ_FIXED = 4, +IORING_OP_WRITE_FIXED = 5, +IORING_OP_POLL_ADD = 6, +IORING_OP_POLL_REMOVE = 7, +IORING_OP_SYNC_FILE_RANGE = 8, +IORING_OP_SENDMSG = 9, +IORING_OP_RECVMSG = 10, +IORING_OP_TIMEOUT = 11, +IORING_OP_TIMEOUT_REMOVE = 12, +IORING_OP_ACCEPT = 13, +IORING_OP_ASYNC_CANCEL = 14, +IORING_OP_LINK_TIMEOUT = 15, +IORING_OP_CONNECT = 16, +IORING_OP_FALLOCATE = 17, +IORING_OP_OPENAT = 18, +IORING_OP_CLOSE = 19, +IORING_OP_FILES_UPDATE = 20, +IORING_OP_STATX = 21, +IORING_OP_READ = 22, +IORING_OP_WRITE = 23, +IORING_OP_FADVISE = 24, +IORING_OP_MADVISE = 25, +IORING_OP_SEND = 26, +IORING_OP_RECV = 27, +IORING_OP_OPENAT2 = 28, +IORING_OP_EPOLL_CTL = 29, +IORING_OP_SPLICE = 30, +IORING_OP_PROVIDE_BUFFERS = 31, +IORING_OP_REMOVE_BUFFERS = 32, +IORING_OP_TEE = 33, +IORING_OP_SHUTDOWN = 34, +IORING_OP_RENAMEAT = 35, +IORING_OP_UNLINKAT = 36, +IORING_OP_MKDIRAT = 37, +IORING_OP_SYMLINKAT = 38, +IORING_OP_LINKAT = 39, +IORING_OP_MSG_RING = 40, +IORING_OP_FSETXATTR = 41, +IORING_OP_SETXATTR = 42, +IORING_OP_FGETXATTR = 43, +IORING_OP_GETXATTR = 44, +IORING_OP_SOCKET = 45, +IORING_OP_URING_CMD = 46, +IORING_OP_SEND_ZC = 47, +IORING_OP_SENDMSG_ZC = 48, +IORING_OP_LAST = 49, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IORING_MSG_DATA = 0, +IORING_MSG_SEND_FD = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IORING_CQE_BUFFER_SHIFT = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IORING_REGISTER_BUFFERS = 0, +IORING_UNREGISTER_BUFFERS = 1, +IORING_REGISTER_FILES = 2, +IORING_UNREGISTER_FILES = 3, +IORING_REGISTER_EVENTFD = 4, +IORING_UNREGISTER_EVENTFD = 5, +IORING_REGISTER_FILES_UPDATE = 6, +IORING_REGISTER_EVENTFD_ASYNC = 7, +IORING_REGISTER_PROBE = 8, +IORING_REGISTER_PERSONALITY = 9, +IORING_UNREGISTER_PERSONALITY = 10, +IORING_REGISTER_RESTRICTIONS = 11, +IORING_REGISTER_ENABLE_RINGS = 12, +IORING_REGISTER_FILES2 = 13, +IORING_REGISTER_FILES_UPDATE2 = 14, +IORING_REGISTER_BUFFERS2 = 15, +IORING_REGISTER_BUFFERS_UPDATE = 16, +IORING_REGISTER_IOWQ_AFF = 17, +IORING_UNREGISTER_IOWQ_AFF = 18, +IORING_REGISTER_IOWQ_MAX_WORKERS = 19, +IORING_REGISTER_RING_FDS = 20, +IORING_UNREGISTER_RING_FDS = 21, +IORING_REGISTER_PBUF_RING = 22, +IORING_UNREGISTER_PBUF_RING = 23, +IORING_REGISTER_SYNC_CANCEL = 24, +IORING_REGISTER_FILE_ALLOC_RANGE = 25, +IORING_REGISTER_LAST = 26, +IORING_REGISTER_USE_REGISTERED_RING = 2147483648, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IO_WQ_BOUND = 0, +IO_WQ_UNBOUND = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IORING_RESTRICTION_REGISTER_OP = 0, +IORING_RESTRICTION_SQE_OP = 1, +IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, +IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, +IORING_RESTRICTION_LAST = 4, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_1 { +pub off: __u64, +pub addr2: __u64, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_2 { +pub addr: __u64, +pub splice_off_in: __u64, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_3 { +pub rw_flags: __kernel_rwf_t, +pub fsync_flags: __u32, +pub poll_events: __u16, +pub poll32_events: __u32, +pub sync_range_flags: __u32, +pub msg_flags: __u32, +pub timeout_flags: __u32, +pub accept_flags: __u32, +pub cancel_flags: __u32, +pub open_flags: __u32, +pub statx_flags: __u32, +pub fadvise_advice: __u32, +pub splice_flags: __u32, +pub rename_flags: __u32, +pub unlink_flags: __u32, +pub hardlink_flags: __u32, +pub xattr_flags: __u32, +pub msg_ring_flags: __u32, +pub uring_cmd_flags: __u32, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_4 { +pub buf_index: __u16, +pub buf_group: __u16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { +pub splice_fd_in: __s32, +pub file_index: __u32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_restriction__bindgen_ty_1 { +pub register_op: __u8, +pub sqe_op: __u8, +pub sqe_flags: __u8, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/netlink.rs temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/netlink.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/netlink.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/netlink.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,357 +1,1492 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_long; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_nl { +pub nl_family: __kernel_sa_family_t, +pub nl_pad: crate::ctypes::c_ushort, +pub nl_pid: __u32, +pub nl_groups: __u32, } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsghdr { +pub nlmsg_len: __u32, +pub nlmsg_type: __u16, +pub nlmsg_flags: __u16, +pub nlmsg_seq: __u32, +pub nlmsg_pid: __u32, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsgerr { +pub error: crate::ctypes::c_int, +pub msg: nlmsghdr, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_pktinfo { +pub group: __u32, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_req { +pub nm_block_size: crate::ctypes::c_uint, +pub nm_block_nr: crate::ctypes::c_uint, +pub nm_frame_size: crate::ctypes::c_uint, +pub nm_frame_nr: crate::ctypes::c_uint, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_hdr { +pub nm_status: crate::ctypes::c_uint, +pub nm_len: crate::ctypes::c_uint, +pub nm_group: __u32, +pub nm_pid: __u32, +pub nm_uid: __u32, +pub nm_gid: __u32, } -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const __BITS_PER_LONG: u32 = 32; -pub const __FD_SETSIZE: u32 = 1024; -pub const NETLINK_ROUTE: u32 = 0; -pub const NETLINK_UNUSED: u32 = 1; -pub const NETLINK_USERSOCK: u32 = 2; -pub const NETLINK_FIREWALL: u32 = 3; -pub const NETLINK_SOCK_DIAG: u32 = 4; -pub const NETLINK_NFLOG: u32 = 5; -pub const NETLINK_XFRM: u32 = 6; -pub const NETLINK_SELINUX: u32 = 7; -pub const NETLINK_ISCSI: u32 = 8; -pub const NETLINK_AUDIT: u32 = 9; -pub const NETLINK_FIB_LOOKUP: u32 = 10; -pub const NETLINK_CONNECTOR: u32 = 11; -pub const NETLINK_NETFILTER: u32 = 12; -pub const NETLINK_IP6_FW: u32 = 13; -pub const NETLINK_DNRTMSG: u32 = 14; -pub const NETLINK_KOBJECT_UEVENT: u32 = 15; -pub const NETLINK_GENERIC: u32 = 16; -pub const NETLINK_SCSITRANSPORT: u32 = 18; -pub const NETLINK_ECRYPTFS: u32 = 19; -pub const NETLINK_RDMA: u32 = 20; -pub const NETLINK_CRYPTO: u32 = 21; -pub const NETLINK_SMC: u32 = 22; -pub const NETLINK_INET_DIAG: u32 = 4; -pub const MAX_LINKS: u32 = 32; -pub const NLM_F_REQUEST: u32 = 1; -pub const NLM_F_MULTI: u32 = 2; -pub const NLM_F_ACK: u32 = 4; -pub const NLM_F_ECHO: u32 = 8; -pub const NLM_F_DUMP_INTR: u32 = 16; -pub const NLM_F_DUMP_FILTERED: u32 = 32; -pub const NLM_F_ROOT: u32 = 256; -pub const NLM_F_MATCH: u32 = 512; -pub const NLM_F_ATOMIC: u32 = 1024; -pub const NLM_F_DUMP: u32 = 768; -pub const NLM_F_REPLACE: u32 = 256; -pub const NLM_F_EXCL: u32 = 512; -pub const NLM_F_CREATE: u32 = 1024; -pub const NLM_F_APPEND: u32 = 2048; -pub const NLM_F_NONREC: u32 = 256; -pub const NLM_F_BULK: u32 = 512; -pub const NLM_F_CAPPED: u32 = 256; -pub const NLM_F_ACK_TLVS: u32 = 512; -pub const NLMSG_ALIGNTO: u32 = 4; -pub const NLMSG_NOOP: u32 = 1; -pub const NLMSG_ERROR: u32 = 2; -pub const NLMSG_DONE: u32 = 3; -pub const NLMSG_OVERRUN: u32 = 4; -pub const NLMSG_MIN_TYPE: u32 = 16; -pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; -pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; -pub const NETLINK_PKTINFO: u32 = 3; -pub const NETLINK_BROADCAST_ERROR: u32 = 4; -pub const NETLINK_NO_ENOBUFS: u32 = 5; -pub const NETLINK_RX_RING: u32 = 6; -pub const NETLINK_TX_RING: u32 = 7; -pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; -pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; -pub const NETLINK_CAP_ACK: u32 = 10; -pub const NETLINK_EXT_ACK: u32 = 11; -pub const NETLINK_GET_STRICT_CHK: u32 = 12; -pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; -pub const NET_MAJOR: u32 = 36; -pub const NLA_F_NESTED: u32 = 32768; -pub const NLA_F_NET_BYTEORDER: u32 = 16384; -pub const NLA_TYPE_MASK: i32 = -49153; -pub const NLA_ALIGNTO: u32 = 4; -pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; -pub const MACVLAN_FLAG_NODST: u32 = 2; -pub const IPVLAN_F_PRIVATE: u32 = 1; -pub const IPVLAN_F_VEPA: u32 = 2; -pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; -pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; -pub const MAX_VLAN_LIST_LEN: u32 = 1; -pub const PORT_PROFILE_MAX: u32 = 40; -pub const PORT_UUID_MAX: u32 = 16; -pub const PORT_SELF_VF: i32 = -1; -pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; -pub const XDP_FLAGS_SKB_MODE: u32 = 2; -pub const XDP_FLAGS_DRV_MODE: u32 = 4; -pub const XDP_FLAGS_HW_MODE: u32 = 8; -pub const XDP_FLAGS_REPLACE: u32 = 16; -pub const XDP_FLAGS_MODES: u32 = 14; -pub const XDP_FLAGS_MASK: u32 = 31; -pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; -pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; -pub const IFA_F_SECONDARY: u32 = 1; -pub const IFA_F_TEMPORARY: u32 = 1; -pub const IFA_F_NODAD: u32 = 2; -pub const IFA_F_OPTIMISTIC: u32 = 4; -pub const IFA_F_DADFAILED: u32 = 8; -pub const IFA_F_HOMEADDRESS: u32 = 16; -pub const IFA_F_DEPRECATED: u32 = 32; -pub const IFA_F_TENTATIVE: u32 = 64; -pub const IFA_F_PERMANENT: u32 = 128; -pub const IFA_F_MANAGETEMPADDR: u32 = 256; -pub const IFA_F_NOPREFIXROUTE: u32 = 512; -pub const IFA_F_MCAUTOJOIN: u32 = 1024; -pub const IFA_F_STABLE_PRIVACY: u32 = 2048; -pub const IFAPROT_UNSPEC: u32 = 0; -pub const IFAPROT_KERNEL_LO: u32 = 1; -pub const IFAPROT_KERNEL_RA: u32 = 2; -pub const IFAPROT_KERNEL_LL: u32 = 3; -pub const NTF_USE: u32 = 1; -pub const NTF_SELF: u32 = 2; -pub const NTF_MASTER: u32 = 4; -pub const NTF_PROXY: u32 = 8; -pub const NTF_EXT_LEARNED: u32 = 16; -pub const NTF_OFFLOADED: u32 = 32; -pub const NTF_STICKY: u32 = 64; -pub const NTF_ROUTER: u32 = 128; -pub const NTF_EXT_MANAGED: u32 = 1; -pub const NTF_EXT_LOCKED: u32 = 2; -pub const NUD_INCOMPLETE: u32 = 1; -pub const NUD_REACHABLE: u32 = 2; -pub const NUD_STALE: u32 = 4; -pub const NUD_DELAY: u32 = 8; -pub const NUD_PROBE: u32 = 16; -pub const NUD_FAILED: u32 = 32; -pub const NUD_NOARP: u32 = 64; -pub const NUD_PERMANENT: u32 = 128; -pub const NUD_NONE: u32 = 0; -pub const RTNL_FAMILY_IPMR: u32 = 128; -pub const RTNL_FAMILY_IP6MR: u32 = 129; -pub const RTNL_FAMILY_MAX: u32 = 129; -pub const RTA_ALIGNTO: u32 = 4; -pub const RTPROT_UNSPEC: u32 = 0; -pub const RTPROT_REDIRECT: u32 = 1; -pub const RTPROT_KERNEL: u32 = 2; -pub const RTPROT_BOOT: u32 = 3; -pub const RTPROT_STATIC: u32 = 4; -pub const RTPROT_GATED: u32 = 8; -pub const RTPROT_RA: u32 = 9; -pub const RTPROT_MRT: u32 = 10; -pub const RTPROT_ZEBRA: u32 = 11; -pub const RTPROT_BIRD: u32 = 12; -pub const RTPROT_DNROUTED: u32 = 13; -pub const RTPROT_XORP: u32 = 14; -pub const RTPROT_NTK: u32 = 15; -pub const RTPROT_DHCP: u32 = 16; -pub const RTPROT_MROUTED: u32 = 17; -pub const RTPROT_KEEPALIVED: u32 = 18; -pub const RTPROT_BABEL: u32 = 42; -pub const RTPROT_OPENR: u32 = 99; -pub const RTPROT_BGP: u32 = 186; -pub const RTPROT_ISIS: u32 = 187; -pub const RTPROT_OSPF: u32 = 188; -pub const RTPROT_RIP: u32 = 189; -pub const RTPROT_EIGRP: u32 = 192; -pub const RTM_F_NOTIFY: u32 = 256; -pub const RTM_F_CLONED: u32 = 512; -pub const RTM_F_EQUALIZE: u32 = 1024; -pub const RTM_F_PREFIX: u32 = 2048; -pub const RTM_F_LOOKUP_TABLE: u32 = 4096; -pub const RTM_F_FIB_MATCH: u32 = 8192; -pub const RTM_F_OFFLOAD: u32 = 16384; -pub const RTM_F_TRAP: u32 = 32768; -pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; -pub const RTNH_F_DEAD: u32 = 1; -pub const RTNH_F_PERVASIVE: u32 = 2; -pub const RTNH_F_ONLINK: u32 = 4; -pub const RTNH_F_OFFLOAD: u32 = 8; -pub const RTNH_F_LINKDOWN: u32 = 16; -pub const RTNH_F_UNRESOLVED: u32 = 32; -pub const RTNH_F_TRAP: u32 = 64; -pub const RTNH_COMPARE_MASK: u32 = 89; -pub const RTNH_ALIGNTO: u32 = 4; -pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; -pub const RTAX_FEATURE_ECN: u32 = 1; -pub const RTAX_FEATURE_SACK: u32 = 2; -pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; -pub const RTAX_FEATURE_ALLFRAG: u32 = 8; -pub const RTAX_FEATURE_MASK: u32 = 15; -pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; -pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; -pub const RTMGRP_LINK: u32 = 1; -pub const RTMGRP_NOTIFY: u32 = 2; -pub const RTMGRP_NEIGH: u32 = 4; -pub const RTMGRP_TC: u32 = 8; -pub const RTMGRP_IPV4_IFADDR: u32 = 16; -pub const RTMGRP_IPV4_MROUTE: u32 = 32; -pub const RTMGRP_IPV4_ROUTE: u32 = 64; -pub const RTMGRP_IPV4_RULE: u32 = 128; -pub const RTMGRP_IPV6_IFADDR: u32 = 256; -pub const RTMGRP_IPV6_MROUTE: u32 = 512; -pub const RTMGRP_IPV6_ROUTE: u32 = 1024; -pub const RTMGRP_IPV6_IFINFO: u32 = 2048; -pub const RTMGRP_DECnet_IFADDR: u32 = 4096; -pub const RTMGRP_DECnet_ROUTE: u32 = 16384; -pub const RTMGRP_IPV6_PREFIX: u32 = 131072; -pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; -pub const RTEXT_FILTER_VF: u32 = 1; -pub const RTEXT_FILTER_BRVLAN: u32 = 2; -pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; -pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; -pub const RTEXT_FILTER_MRP: u32 = 16; -pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; -pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; -pub const RTEXT_FILTER_MST: u32 = 128; -pub type size_t = crate::ctypes::c_uint; -pub type ssize_t = crate::ctypes::c_int; -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; #[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct nlattr { +pub nla_len: __u16, +pub nla_type: __u16, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, +#[derive(Debug, Copy, Clone)] +pub struct nla_bitfield32 { +pub value: __u32, +pub selector: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], +pub struct rtnl_link_stats { +pub rx_packets: __u32, +pub tx_packets: __u32, +pub rx_bytes: __u32, +pub tx_bytes: __u32, +pub rx_errors: __u32, +pub tx_errors: __u32, +pub rx_dropped: __u32, +pub tx_dropped: __u32, +pub multicast: __u32, +pub collisions: __u32, +pub rx_length_errors: __u32, +pub rx_over_errors: __u32, +pub rx_crc_errors: __u32, +pub rx_frame_errors: __u32, +pub rx_fifo_errors: __u32, +pub rx_missed_errors: __u32, +pub tx_aborted_errors: __u32, +pub tx_carrier_errors: __u32, +pub tx_fifo_errors: __u32, +pub tx_heartbeat_errors: __u32, +pub tx_window_errors: __u32, +pub rx_compressed: __u32, +pub tx_compressed: __u32, +pub rx_nohandler: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnl_link_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +pub collisions: __u64, +pub rx_length_errors: __u64, +pub rx_over_errors: __u64, +pub rx_crc_errors: __u64, +pub rx_frame_errors: __u64, +pub rx_fifo_errors: __u64, +pub rx_missed_errors: __u64, +pub tx_aborted_errors: __u64, +pub tx_carrier_errors: __u64, +pub tx_fifo_errors: __u64, +pub tx_heartbeat_errors: __u64, +pub tx_window_errors: __u64, +pub rx_compressed: __u64, +pub tx_compressed: __u64, +pub rx_nohandler: __u64, +pub rx_otherhost_dropped: __u64, } -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 32usize], +pub struct rtnl_hw_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, } -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_size_t = crate::ctypes::c_uint; -pub type __kernel_ssize_t = crate::ctypes::c_int; -pub type __kernel_ptrdiff_t = crate::ctypes::c_long; -pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; -pub type __kernel_uid_t = crate::ctypes::c_ushort; -pub type __kernel_gid_t = crate::ctypes::c_ushort; -pub type __kernel_mode_t = crate::ctypes::c_ushort; -pub type __kernel_daddr_t = crate::ctypes::c_long; -pub type __kernel_old_dev_t = crate::ctypes::c_ushort; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], +pub struct rtnl_link_ifmap { +pub mem_start: __u64, +pub mem_end: __u64, +pub base_addr: __u64, +pub irq: __u16, +pub dma: __u8, +pub port: __u8, } -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_nl { -pub nl_family: __kernel_sa_family_t, -pub nl_pad: crate::ctypes::c_ushort, -pub nl_pid: __u32, -pub nl_groups: __u32, +pub struct ifla_bridge_id { +pub prio: [__u8; 2usize], +pub addr: [__u8; 6usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsghdr { -pub nlmsg_len: __u32, -pub nlmsg_type: __u16, -pub nlmsg_flags: __u16, -pub nlmsg_seq: __u32, -pub nlmsg_pid: __u32, +pub struct ifla_cacheinfo { +pub max_reasm_len: __u32, +pub tstamp: __u32, +pub reachable_time: __u32, +pub retrans_time: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsgerr { -pub error: crate::ctypes::c_int, -pub msg: nlmsghdr, +pub struct ifla_vlan_flags { +pub flags: __u32, +pub mask: __u32, } -impl nlmsgerr_attrs { -pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_qos_mapping { +pub from: __u32, +pub to: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tunnel_msg { +pub family: __u8, +pub flags: __u8, +pub reserved2: __u16, +pub ifindex: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vxlan_port_range { +pub low: __be16, +pub high: __be16, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_mac { +pub vf: __u32, +pub mac: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_broadcast { +pub broadcast: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan_info { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +pub vlan_proto: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_tx_rate { +pub vf: __u32, +pub rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rate { +pub vf: __u32, +pub min_tx_rate: __u32, +pub max_tx_rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_spoofchk { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_guid { +pub vf: __u32, +pub guid: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_link_state { +pub vf: __u32, +pub link_state: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rss_query_en { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_trust { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_port_vsi { +pub vsi_mgr_id: __u8, +pub vsi_type_id: [__u8; 3usize], +pub vsi_type_version: __u8, +pub pad: [__u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct if_stats_msg { +pub family: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub ifindex: __u32, +pub filter_mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_rmnet_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifaddrmsg { +pub ifa_family: __u8, +pub ifa_prefixlen: __u8, +pub ifa_flags: __u8, +pub ifa_scope: __u8, +pub ifa_index: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifa_cacheinfo { +pub ifa_prefered: __u32, +pub ifa_valid: __u32, +pub cstamp: __u32, +pub tstamp: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndmsg { +pub ndm_family: __u8, +pub ndm_pad1: __u8, +pub ndm_pad2: __u16, +pub ndm_ifindex: __s32, +pub ndm_state: __u16, +pub ndm_flags: __u8, +pub ndm_type: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nda_cacheinfo { +pub ndm_confirmed: __u32, +pub ndm_used: __u32, +pub ndm_updated: __u32, +pub ndm_refcnt: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_stats { +pub ndts_allocs: __u64, +pub ndts_destroys: __u64, +pub ndts_hash_grows: __u64, +pub ndts_res_failed: __u64, +pub ndts_lookups: __u64, +pub ndts_hits: __u64, +pub ndts_rcv_probes_mcast: __u64, +pub ndts_rcv_probes_ucast: __u64, +pub ndts_periodic_gc_runs: __u64, +pub ndts_forced_gc_runs: __u64, +pub ndts_table_fulls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndtmsg { +pub ndtm_family: __u8, +pub ndtm_pad1: __u8, +pub ndtm_pad2: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_config { +pub ndtc_key_len: __u16, +pub ndtc_entry_size: __u16, +pub ndtc_entries: __u32, +pub ndtc_last_flush: __u32, +pub ndtc_last_rand: __u32, +pub ndtc_hash_rnd: __u32, +pub ndtc_hash_mask: __u32, +pub ndtc_hash_chain_gc: __u32, +pub ndtc_proxy_qlen: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtattr { +pub rta_len: crate::ctypes::c_ushort, +pub rta_type: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtmsg { +pub rtm_family: crate::ctypes::c_uchar, +pub rtm_dst_len: crate::ctypes::c_uchar, +pub rtm_src_len: crate::ctypes::c_uchar, +pub rtm_tos: crate::ctypes::c_uchar, +pub rtm_table: crate::ctypes::c_uchar, +pub rtm_protocol: crate::ctypes::c_uchar, +pub rtm_scope: crate::ctypes::c_uchar, +pub rtm_type: crate::ctypes::c_uchar, +pub rtm_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnexthop { +pub rtnh_len: crate::ctypes::c_ushort, +pub rtnh_flags: crate::ctypes::c_uchar, +pub rtnh_hops: crate::ctypes::c_uchar, +pub rtnh_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug)] +pub struct rtvia { +pub rtvia_family: __kernel_sa_family_t, +pub rtvia_addr: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_cacheinfo { +pub rta_clntref: __u32, +pub rta_lastuse: __u32, +pub rta_expires: __s32, +pub rta_error: __u32, +pub rta_used: __u32, +pub rta_id: __u32, +pub rta_ts: __u32, +pub rta_tsage: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rta_session { +pub proto: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub u: rta_session__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { +pub sport: __u16, +pub dport: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { +pub type_: __u8, +pub code: __u8, +pub ident: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_mfc_stats { +pub mfcs_packets: __u64, +pub mfcs_bytes: __u64, +pub mfcs_wrong_if: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtgenmsg { +pub rtgen_family: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifinfomsg { +pub ifi_family: crate::ctypes::c_uchar, +pub __ifi_pad: crate::ctypes::c_uchar, +pub ifi_type: crate::ctypes::c_ushort, +pub ifi_index: crate::ctypes::c_int, +pub ifi_flags: crate::ctypes::c_uint, +pub ifi_change: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefixmsg { +pub prefix_family: crate::ctypes::c_uchar, +pub prefix_pad1: crate::ctypes::c_uchar, +pub prefix_pad2: crate::ctypes::c_ushort, +pub prefix_ifindex: crate::ctypes::c_int, +pub prefix_type: crate::ctypes::c_uchar, +pub prefix_len: crate::ctypes::c_uchar, +pub prefix_flags: crate::ctypes::c_uchar, +pub prefix_pad3: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefix_cacheinfo { +pub preferred_time: __u32, +pub valid_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcmsg { +pub tcm_family: crate::ctypes::c_uchar, +pub tcm__pad1: crate::ctypes::c_uchar, +pub tcm__pad2: crate::ctypes::c_ushort, +pub tcm_ifindex: crate::ctypes::c_int, +pub tcm_handle: __u32, +pub tcm_parent: __u32, +pub tcm_info: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nduseroptmsg { +pub nduseropt_family: crate::ctypes::c_uchar, +pub nduseropt_pad1: crate::ctypes::c_uchar, +pub nduseropt_opts_len: crate::ctypes::c_ushort, +pub nduseropt_ifindex: crate::ctypes::c_int, +pub nduseropt_icmp_type: __u8, +pub nduseropt_icmp_code: __u8, +pub nduseropt_pad2: crate::ctypes::c_ushort, +pub nduseropt_pad3: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcamsg { +pub tca_family: crate::ctypes::c_uchar, +pub tca__pad1: crate::ctypes::c_uchar, +pub tca__pad2: crate::ctypes::c_ushort, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const NETLINK_ROUTE: u32 = 0; +pub const NETLINK_UNUSED: u32 = 1; +pub const NETLINK_USERSOCK: u32 = 2; +pub const NETLINK_FIREWALL: u32 = 3; +pub const NETLINK_SOCK_DIAG: u32 = 4; +pub const NETLINK_NFLOG: u32 = 5; +pub const NETLINK_XFRM: u32 = 6; +pub const NETLINK_SELINUX: u32 = 7; +pub const NETLINK_ISCSI: u32 = 8; +pub const NETLINK_AUDIT: u32 = 9; +pub const NETLINK_FIB_LOOKUP: u32 = 10; +pub const NETLINK_CONNECTOR: u32 = 11; +pub const NETLINK_NETFILTER: u32 = 12; +pub const NETLINK_IP6_FW: u32 = 13; +pub const NETLINK_DNRTMSG: u32 = 14; +pub const NETLINK_KOBJECT_UEVENT: u32 = 15; +pub const NETLINK_GENERIC: u32 = 16; +pub const NETLINK_SCSITRANSPORT: u32 = 18; +pub const NETLINK_ECRYPTFS: u32 = 19; +pub const NETLINK_RDMA: u32 = 20; +pub const NETLINK_CRYPTO: u32 = 21; +pub const NETLINK_SMC: u32 = 22; +pub const NETLINK_INET_DIAG: u32 = 4; +pub const MAX_LINKS: u32 = 32; +pub const NLM_F_REQUEST: u32 = 1; +pub const NLM_F_MULTI: u32 = 2; +pub const NLM_F_ACK: u32 = 4; +pub const NLM_F_ECHO: u32 = 8; +pub const NLM_F_DUMP_INTR: u32 = 16; +pub const NLM_F_DUMP_FILTERED: u32 = 32; +pub const NLM_F_ROOT: u32 = 256; +pub const NLM_F_MATCH: u32 = 512; +pub const NLM_F_ATOMIC: u32 = 1024; +pub const NLM_F_DUMP: u32 = 768; +pub const NLM_F_REPLACE: u32 = 256; +pub const NLM_F_EXCL: u32 = 512; +pub const NLM_F_CREATE: u32 = 1024; +pub const NLM_F_APPEND: u32 = 2048; +pub const NLM_F_NONREC: u32 = 256; +pub const NLM_F_BULK: u32 = 512; +pub const NLM_F_CAPPED: u32 = 256; +pub const NLM_F_ACK_TLVS: u32 = 512; +pub const NLMSG_ALIGNTO: u32 = 4; +pub const NLMSG_NOOP: u32 = 1; +pub const NLMSG_ERROR: u32 = 2; +pub const NLMSG_DONE: u32 = 3; +pub const NLMSG_OVERRUN: u32 = 4; +pub const NLMSG_MIN_TYPE: u32 = 16; +pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; +pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; +pub const NETLINK_PKTINFO: u32 = 3; +pub const NETLINK_BROADCAST_ERROR: u32 = 4; +pub const NETLINK_NO_ENOBUFS: u32 = 5; +pub const NETLINK_RX_RING: u32 = 6; +pub const NETLINK_TX_RING: u32 = 7; +pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; +pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; +pub const NETLINK_CAP_ACK: u32 = 10; +pub const NETLINK_EXT_ACK: u32 = 11; +pub const NETLINK_GET_STRICT_CHK: u32 = 12; +pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; +pub const NET_MAJOR: u32 = 36; +pub const NLA_F_NESTED: u32 = 32768; +pub const NLA_F_NET_BYTEORDER: u32 = 16384; +pub const NLA_TYPE_MASK: i32 = -49153; +pub const NLA_ALIGNTO: u32 = 4; +pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; +pub const MACVLAN_FLAG_NODST: u32 = 2; +pub const IPVLAN_F_PRIVATE: u32 = 1; +pub const IPVLAN_F_VEPA: u32 = 2; +pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; +pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; +pub const MAX_VLAN_LIST_LEN: u32 = 1; +pub const PORT_PROFILE_MAX: u32 = 40; +pub const PORT_UUID_MAX: u32 = 16; +pub const PORT_SELF_VF: i32 = -1; +pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; +pub const XDP_FLAGS_SKB_MODE: u32 = 2; +pub const XDP_FLAGS_DRV_MODE: u32 = 4; +pub const XDP_FLAGS_HW_MODE: u32 = 8; +pub const XDP_FLAGS_REPLACE: u32 = 16; +pub const XDP_FLAGS_MODES: u32 = 14; +pub const XDP_FLAGS_MASK: u32 = 31; +pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; +pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; +pub const IFA_F_SECONDARY: u32 = 1; +pub const IFA_F_TEMPORARY: u32 = 1; +pub const IFA_F_NODAD: u32 = 2; +pub const IFA_F_OPTIMISTIC: u32 = 4; +pub const IFA_F_DADFAILED: u32 = 8; +pub const IFA_F_HOMEADDRESS: u32 = 16; +pub const IFA_F_DEPRECATED: u32 = 32; +pub const IFA_F_TENTATIVE: u32 = 64; +pub const IFA_F_PERMANENT: u32 = 128; +pub const IFA_F_MANAGETEMPADDR: u32 = 256; +pub const IFA_F_NOPREFIXROUTE: u32 = 512; +pub const IFA_F_MCAUTOJOIN: u32 = 1024; +pub const IFA_F_STABLE_PRIVACY: u32 = 2048; +pub const IFAPROT_UNSPEC: u32 = 0; +pub const IFAPROT_KERNEL_LO: u32 = 1; +pub const IFAPROT_KERNEL_RA: u32 = 2; +pub const IFAPROT_KERNEL_LL: u32 = 3; +pub const NTF_USE: u32 = 1; +pub const NTF_SELF: u32 = 2; +pub const NTF_MASTER: u32 = 4; +pub const NTF_PROXY: u32 = 8; +pub const NTF_EXT_LEARNED: u32 = 16; +pub const NTF_OFFLOADED: u32 = 32; +pub const NTF_STICKY: u32 = 64; +pub const NTF_ROUTER: u32 = 128; +pub const NTF_EXT_MANAGED: u32 = 1; +pub const NTF_EXT_LOCKED: u32 = 2; +pub const NUD_INCOMPLETE: u32 = 1; +pub const NUD_REACHABLE: u32 = 2; +pub const NUD_STALE: u32 = 4; +pub const NUD_DELAY: u32 = 8; +pub const NUD_PROBE: u32 = 16; +pub const NUD_FAILED: u32 = 32; +pub const NUD_NOARP: u32 = 64; +pub const NUD_PERMANENT: u32 = 128; +pub const NUD_NONE: u32 = 0; +pub const RTNL_FAMILY_IPMR: u32 = 128; +pub const RTNL_FAMILY_IP6MR: u32 = 129; +pub const RTNL_FAMILY_MAX: u32 = 129; +pub const RTA_ALIGNTO: u32 = 4; +pub const RTPROT_UNSPEC: u32 = 0; +pub const RTPROT_REDIRECT: u32 = 1; +pub const RTPROT_KERNEL: u32 = 2; +pub const RTPROT_BOOT: u32 = 3; +pub const RTPROT_STATIC: u32 = 4; +pub const RTPROT_GATED: u32 = 8; +pub const RTPROT_RA: u32 = 9; +pub const RTPROT_MRT: u32 = 10; +pub const RTPROT_ZEBRA: u32 = 11; +pub const RTPROT_BIRD: u32 = 12; +pub const RTPROT_DNROUTED: u32 = 13; +pub const RTPROT_XORP: u32 = 14; +pub const RTPROT_NTK: u32 = 15; +pub const RTPROT_DHCP: u32 = 16; +pub const RTPROT_MROUTED: u32 = 17; +pub const RTPROT_KEEPALIVED: u32 = 18; +pub const RTPROT_BABEL: u32 = 42; +pub const RTPROT_OPENR: u32 = 99; +pub const RTPROT_BGP: u32 = 186; +pub const RTPROT_ISIS: u32 = 187; +pub const RTPROT_OSPF: u32 = 188; +pub const RTPROT_RIP: u32 = 189; +pub const RTPROT_EIGRP: u32 = 192; +pub const RTM_F_NOTIFY: u32 = 256; +pub const RTM_F_CLONED: u32 = 512; +pub const RTM_F_EQUALIZE: u32 = 1024; +pub const RTM_F_PREFIX: u32 = 2048; +pub const RTM_F_LOOKUP_TABLE: u32 = 4096; +pub const RTM_F_FIB_MATCH: u32 = 8192; +pub const RTM_F_OFFLOAD: u32 = 16384; +pub const RTM_F_TRAP: u32 = 32768; +pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; +pub const RTNH_F_DEAD: u32 = 1; +pub const RTNH_F_PERVASIVE: u32 = 2; +pub const RTNH_F_ONLINK: u32 = 4; +pub const RTNH_F_OFFLOAD: u32 = 8; +pub const RTNH_F_LINKDOWN: u32 = 16; +pub const RTNH_F_UNRESOLVED: u32 = 32; +pub const RTNH_F_TRAP: u32 = 64; +pub const RTNH_COMPARE_MASK: u32 = 89; +pub const RTNH_ALIGNTO: u32 = 4; +pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; +pub const RTAX_FEATURE_ECN: u32 = 1; +pub const RTAX_FEATURE_SACK: u32 = 2; +pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; +pub const RTAX_FEATURE_ALLFRAG: u32 = 8; +pub const RTAX_FEATURE_MASK: u32 = 15; +pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; +pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; +pub const RTMGRP_LINK: u32 = 1; +pub const RTMGRP_NOTIFY: u32 = 2; +pub const RTMGRP_NEIGH: u32 = 4; +pub const RTMGRP_TC: u32 = 8; +pub const RTMGRP_IPV4_IFADDR: u32 = 16; +pub const RTMGRP_IPV4_MROUTE: u32 = 32; +pub const RTMGRP_IPV4_ROUTE: u32 = 64; +pub const RTMGRP_IPV4_RULE: u32 = 128; +pub const RTMGRP_IPV6_IFADDR: u32 = 256; +pub const RTMGRP_IPV6_MROUTE: u32 = 512; +pub const RTMGRP_IPV6_ROUTE: u32 = 1024; +pub const RTMGRP_IPV6_IFINFO: u32 = 2048; +pub const RTMGRP_DECnet_IFADDR: u32 = 4096; +pub const RTMGRP_DECnet_ROUTE: u32 = 16384; +pub const RTMGRP_IPV6_PREFIX: u32 = 131072; +pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; +pub const RTEXT_FILTER_VF: u32 = 1; +pub const RTEXT_FILTER_BRVLAN: u32 = 2; +pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; +pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; +pub const RTEXT_FILTER_MRP: u32 = 16; +pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; +pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; +pub const RTEXT_FILTER_MST: u32 = 128; +pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; +pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; +pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; +pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; +pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; +pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; +pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; +pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; +pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; +pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; +pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; +pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; +pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; +pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; +pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; +pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; +pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; +pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; +pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; +pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; +pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; +pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; +pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; +pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; +pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; +pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; +pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; +pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; +pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; +pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; +pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; +pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; +pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; +pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; +pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; +pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; +pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; +pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; +pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; +pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; +pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; +pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; +pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; +pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; +pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; +pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; +pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; +pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; +pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; +pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; +pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; +pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; +pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; +pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; +pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; +pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; +pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; +pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; +pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; +pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; +pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; +pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; +pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; +pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; +pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; +pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; +pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; +pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; +pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; +pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; +pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; +pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; +pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; +pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; +pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; +pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; +pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; +pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; +pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; +pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; +pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; +pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; +pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; +pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; +pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; +pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; +pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; +pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; +pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; +pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; +pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; +pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; +pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; +pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; +pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; +pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; +pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; +pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; +pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; +pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; +pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; +pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; +pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; +pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; +pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; +pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; +pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; +pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; +pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; +pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; +pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; +pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; +pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; +pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; +pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; +pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; +pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; +pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; +pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; +pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; +pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; +pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; +pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; +pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; +pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; +pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; +pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; +pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; +pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; +pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; +pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; +pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; +pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; +pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; +pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; +pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; +pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; +pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; +pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; +pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; +pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; +pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; +pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; +pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; +pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; +pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; +pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; +pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; +pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; +pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; +pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; +pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; +pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; +pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; +pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; +pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; +pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; +pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; +pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; +pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; +pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; +pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; +pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; +pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; +pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; +pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; +pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; +pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; +pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; +pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; +pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; +pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; +pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; +pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; +pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; +pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; +pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; +pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; +pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; +pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; +pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; +pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; +pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; +pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; +pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; +pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; +pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; +pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; +pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; +pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; +pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; +pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; +pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; +pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; +pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; +pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; +pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; +pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; +pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; +pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; +pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; +pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; +pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; +pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; +pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; +pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; +pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; +pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; +pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; +pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; +pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; +pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; +pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; +pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; +pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; +pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; +pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; +pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; +pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; +pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; +pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; +pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; +pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; +pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; +pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; +pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; +pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; +pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; +pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; +pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; +pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; +pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; +pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; +pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; +pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; +pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; +pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; +pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; +pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; +pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; +pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; +pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; +pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; +pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; +pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; +pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; +pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; +pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; +pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; +pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; +pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; +pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; +pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; +pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; +pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; +pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; +pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; +pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; +pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; +pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; +pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; +pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; +pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; +pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; +pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; +pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; +pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; +pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; +pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; +pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; +pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; +pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; +pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; +pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; +pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; +pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; +pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; +pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; +pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; +pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; +pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; +pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; +pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; +pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; +pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; +pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; +pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; +pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; +pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; +pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; +pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; +pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; +pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; +pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; +pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; +pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; +pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; +pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; +pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; +pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; +pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; +pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; +pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; +pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; +pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; +pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; +pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; +pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; +pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; +pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; +pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; +pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; +pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; +pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; +pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; +pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; +pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; +pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; +pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; +pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; +pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; +pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; +pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; +pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; +pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; +pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; +pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; +pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; +pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; +pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; +pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; +pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; +pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; +pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; +pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; +pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; +pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; +pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; +pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; +pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; +pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; +pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; +pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; +pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; +pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; +pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; +pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; +pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; +pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; +pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; +pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; +pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; +pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; +pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; +pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; +pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; +pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; +pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; +pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; +pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; +pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; +pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; +pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; +pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; +pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; +pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; +pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; +pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; +pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; +pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; +pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; +pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; +pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; +pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; +pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; +pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; +pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; +pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; +pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; +pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; +pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; +pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; +pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; +pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; +pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; +pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; +pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; +pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; +pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; +pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; +pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; +pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; +pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; +pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; +pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; +pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; +pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; +pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; +pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; +pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; +pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; +pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; +pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; +pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; +pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; +pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; +pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; +pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; +pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; +pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; +pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; +pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; +pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; +pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; +pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; +pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; +pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; +pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; +pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; +pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; +pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; +pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; +pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; +pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; +pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; +pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; +pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; +pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; +pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; +pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; +pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; +pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; +pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; +pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; +pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; +pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; +pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; +pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; +pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; +pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; +pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; +pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; +pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; +pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; +pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; +pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; +pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; +pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; +pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; +pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; +pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; +pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; +pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; +pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; +pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; +pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; +pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; +pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; +pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; +pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; +pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; +pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; +pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; +pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; +pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; +pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; +pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; +pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; +pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; +pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; +pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; +pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; +pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; +pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; +pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; +pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; +pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; +pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; +pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; +pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; +pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; +pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; +pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; +pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; +pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; +pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; +pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; +pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; +pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; +pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; +pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; +pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; +pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; +pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; +pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; +pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; +pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; +pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; +pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; +pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; +pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; +pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; +pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; +pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; +pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; +pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; +pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; +pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; +pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; +pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; +pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; +pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; +pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; +pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; +pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; +pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; +pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; +pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; +pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; +pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; +pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; +pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; +pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; +pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; +pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; +pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; +pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; +pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; +pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; +pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; +pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; +pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; +pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; +pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; +pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; +pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; +pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; +pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; +pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; +pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; +pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; +pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; +pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; +pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; +pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; +pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; +pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; +pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; +pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; +pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; +pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; +pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; +pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; +pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; +pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; +pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; +pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; +pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; +pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; +pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; +pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; +pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; +pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; +pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; +pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; +pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; +pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; +pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; +pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; +pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; +pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; +pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; +pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; +pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; +pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; +pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; +pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; +pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; +pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; +pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; +pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; +pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; +pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; +pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; +pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; +pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; +pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; +pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; +pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; +pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; +pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; +pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; +pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; +pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; +pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; +pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; +pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; +pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; +pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; +pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; +pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; +pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; +pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; +pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; +pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; +pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; +pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; +pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; +pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; +pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; +pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; +pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; +pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; +pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; +pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; +pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; +pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; +pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; +pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; +pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; +pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; +pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; +pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; +pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; +pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; +pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; +pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; +pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; +pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; +pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; +pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; +pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; +pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; +pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; +pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; +pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; +pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; +pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; +pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; +pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; +pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; +pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; +pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; +pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; +pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; +pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; +pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; +pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; +pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; +pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; +pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; +pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; +pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; +pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; +pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; +pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; +pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; +pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; +pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; +pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; +pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; +pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; +pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; +pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; +pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; +pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; +pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; +pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; +pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; +pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; +pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; +pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; +pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; +pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; +pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; +pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; +pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; +pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; +pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; +pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; +pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; +pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; +pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; +pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; +pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; +pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; +pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; +pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; +pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; +pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; +pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; +pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; +pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; +pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; +pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; +pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; +pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; +pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; +pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; +pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; +pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; +pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; +pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; +pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -365,29 +1500,6 @@ NLMSGERR_ATTR_MISS_NEST = 6, __NLMSGERR_ATTR_MAX = 7, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_pktinfo { -pub group: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_req { -pub nm_block_size: crate::ctypes::c_uint, -pub nm_block_nr: crate::ctypes::c_uint, -pub nm_frame_size: crate::ctypes::c_uint, -pub nm_frame_nr: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_hdr { -pub nm_status: crate::ctypes::c_uint, -pub nm_len: crate::ctypes::c_uint, -pub nm_group: __u32, -pub nm_pid: __u32, -pub nm_uid: __u32, -pub nm_gid: __u32, -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -398,8 +1510,6 @@ NL_MMAP_STATUS_COPY = 3, NL_MMAP_STATUS_SKIP = 4, } -pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; -pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -407,208 +1517,46 @@ NETLINK_UNCONNECTED = 0, NETLINK_CONNECTED = 1, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nlattr { -pub nla_len: __u16, -pub nla_type: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nla_bitfield32 { -pub value: __u32, -pub selector: __u32, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_attribute_type { -NL_ATTR_TYPE_INVALID = 0, -NL_ATTR_TYPE_FLAG = 1, -NL_ATTR_TYPE_U8 = 2, -NL_ATTR_TYPE_U16 = 3, -NL_ATTR_TYPE_U32 = 4, -NL_ATTR_TYPE_U64 = 5, -NL_ATTR_TYPE_S8 = 6, -NL_ATTR_TYPE_S16 = 7, -NL_ATTR_TYPE_S32 = 8, -NL_ATTR_TYPE_S64 = 9, -NL_ATTR_TYPE_BINARY = 10, -NL_ATTR_TYPE_STRING = 11, -NL_ATTR_TYPE_NUL_STRING = 12, -NL_ATTR_TYPE_NESTED = 13, -NL_ATTR_TYPE_NESTED_ARRAY = 14, -NL_ATTR_TYPE_BITFIELD32 = 15, -} -impl netlink_policy_type_attr { -pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_policy_type_attr { -NL_POLICY_TYPE_ATTR_UNSPEC = 0, -NL_POLICY_TYPE_ATTR_TYPE = 1, -NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, -NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, -NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, -NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, -NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, -NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, -NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, -NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, -NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, -NL_POLICY_TYPE_ATTR_PAD = 11, -NL_POLICY_TYPE_ATTR_MASK = 12, -__NL_POLICY_TYPE_ATTR_MAX = 13, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats { -pub rx_packets: __u32, -pub tx_packets: __u32, -pub rx_bytes: __u32, -pub tx_bytes: __u32, -pub rx_errors: __u32, -pub tx_errors: __u32, -pub rx_dropped: __u32, -pub tx_dropped: __u32, -pub multicast: __u32, -pub collisions: __u32, -pub rx_length_errors: __u32, -pub rx_over_errors: __u32, -pub rx_crc_errors: __u32, -pub rx_frame_errors: __u32, -pub rx_fifo_errors: __u32, -pub rx_missed_errors: __u32, -pub tx_aborted_errors: __u32, -pub tx_carrier_errors: __u32, -pub tx_fifo_errors: __u32, -pub tx_heartbeat_errors: __u32, -pub tx_window_errors: __u32, -pub rx_compressed: __u32, -pub tx_compressed: __u32, -pub rx_nohandler: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, -pub collisions: __u64, -pub rx_length_errors: __u64, -pub rx_over_errors: __u64, -pub rx_crc_errors: __u64, -pub rx_frame_errors: __u64, -pub rx_fifo_errors: __u64, -pub rx_missed_errors: __u64, -pub tx_aborted_errors: __u64, -pub tx_carrier_errors: __u64, -pub tx_fifo_errors: __u64, -pub tx_heartbeat_errors: __u64, -pub tx_window_errors: __u64, -pub rx_compressed: __u64, -pub tx_compressed: __u64, -pub rx_nohandler: __u64, -pub rx_otherhost_dropped: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_hw_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, +pub enum netlink_attribute_type { +NL_ATTR_TYPE_INVALID = 0, +NL_ATTR_TYPE_FLAG = 1, +NL_ATTR_TYPE_U8 = 2, +NL_ATTR_TYPE_U16 = 3, +NL_ATTR_TYPE_U32 = 4, +NL_ATTR_TYPE_U64 = 5, +NL_ATTR_TYPE_S8 = 6, +NL_ATTR_TYPE_S16 = 7, +NL_ATTR_TYPE_S32 = 8, +NL_ATTR_TYPE_S64 = 9, +NL_ATTR_TYPE_BINARY = 10, +NL_ATTR_TYPE_STRING = 11, +NL_ATTR_TYPE_NUL_STRING = 12, +NL_ATTR_TYPE_NESTED = 13, +NL_ATTR_TYPE_NESTED_ARRAY = 14, +NL_ATTR_TYPE_BITFIELD32 = 15, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_ifmap { -pub mem_start: __u64, -pub mem_end: __u64, -pub base_addr: __u64, -pub irq: __u16, -pub dma: __u8, -pub port: __u8, +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_policy_type_attr { +NL_POLICY_TYPE_ATTR_UNSPEC = 0, +NL_POLICY_TYPE_ATTR_TYPE = 1, +NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, +NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, +NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, +NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, +NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, +NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, +NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, +NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, +NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, +NL_POLICY_TYPE_ATTR_PAD = 11, +NL_POLICY_TYPE_ATTR_MASK = 12, +__NL_POLICY_TYPE_ATTR_MAX = 13, } -pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; -pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; -pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; -pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; -pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; -pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; -pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; -pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; -pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; -pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; -pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; -pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; -pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; -pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; -pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; -pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; -pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; -pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; -pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; -pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; -pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; -pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; -pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; -pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; -pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; -pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; -pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; -pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; -pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; -pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; -pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; -pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; -pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; -pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; -pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; -pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; -pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; -pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; -pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; -pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; -pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; -pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; -pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; -pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; -pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; -pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; -pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; -pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; -pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; -pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; -pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; -pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; -pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; -pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; -pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; -pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; -pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; -pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; -pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; -pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; -pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; -pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; -pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; -pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; -pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -680,11 +1628,6 @@ IFLA_GRO_IPV4_MAX_SIZE = 64, __IFLA_MAX = 65, } -pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; -pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; -pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; -pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; -pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -694,9 +1637,6 @@ IFLA_PROTO_DOWN_REASON_VALUE = 2, __IFLA_PROTO_DOWN_REASON_CNT = 3, } -pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; -pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; -pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -705,17 +1645,6 @@ IFLA_INET_CONF = 1, __IFLA_INET_MAX = 2, } -pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; -pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; -pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; -pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; -pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; -pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; -pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; -pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; -pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; -pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; -pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -741,55 +1670,6 @@ IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, IN6_ADDR_GEN_MODE_RANDOM = 3, } -pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; -pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; -pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; -pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; -pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; -pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; -pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; -pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; -pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; -pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; -pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; -pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; -pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; -pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; -pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; -pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; -pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; -pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; -pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; -pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; -pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; -pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; -pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; -pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; -pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; -pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; -pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; -pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; -pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; -pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; -pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; -pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; -pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; -pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; -pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; -pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; -pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; -pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; -pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; -pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; -pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; -pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; -pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; -pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; -pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; -pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; -pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; -pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; -pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -826,83 +1706,31 @@ IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29, IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30, IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, -IFLA_BR_MCAST_QUERIER_INTVL = 32, -IFLA_BR_MCAST_QUERY_INTVL = 33, -IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, -IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, -IFLA_BR_NF_CALL_IPTABLES = 36, -IFLA_BR_NF_CALL_IP6TABLES = 37, -IFLA_BR_NF_CALL_ARPTABLES = 38, -IFLA_BR_VLAN_DEFAULT_PVID = 39, -IFLA_BR_PAD = 40, -IFLA_BR_VLAN_STATS_ENABLED = 41, -IFLA_BR_MCAST_STATS_ENABLED = 42, -IFLA_BR_MCAST_IGMP_VERSION = 43, -IFLA_BR_MCAST_MLD_VERSION = 44, -IFLA_BR_VLAN_STATS_PER_PORT = 45, -IFLA_BR_MULTI_BOOLOPT = 46, -IFLA_BR_MCAST_QUERIER_STATE = 47, -__IFLA_BR_MAX = 48, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_bridge_id { -pub prio: [__u8; 2usize], -pub addr: [__u8; 6usize], -} -pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; -pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -BRIDGE_MODE_UNSPEC = 0, -BRIDGE_MODE_HAIRPIN = 1, -} -pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; -pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; -pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; -pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; -pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; -pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; -pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; -pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; -pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; -pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; -pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; -pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; -pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; -pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; -pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; -pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; -pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; -pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; -pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; -pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; -pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; -pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; -pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; -pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; -pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; -pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; -pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; -pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; -pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; -pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; -pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; -pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; -pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; -pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; -pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; -pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; -pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; -pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; -pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; -pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; -pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; -pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +IFLA_BR_MCAST_QUERIER_INTVL = 32, +IFLA_BR_MCAST_QUERY_INTVL = 33, +IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, +IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, +IFLA_BR_NF_CALL_IPTABLES = 36, +IFLA_BR_NF_CALL_IP6TABLES = 37, +IFLA_BR_NF_CALL_ARPTABLES = 38, +IFLA_BR_VLAN_DEFAULT_PVID = 39, +IFLA_BR_PAD = 40, +IFLA_BR_VLAN_STATS_ENABLED = 41, +IFLA_BR_MCAST_STATS_ENABLED = 42, +IFLA_BR_MCAST_IGMP_VERSION = 43, +IFLA_BR_MCAST_MLD_VERSION = 44, +IFLA_BR_VLAN_STATS_PER_PORT = 45, +IFLA_BR_MULTI_BOOLOPT = 46, +IFLA_BR_MCAST_QUERIER_STATE = 47, +__IFLA_BR_MAX = 48, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +BRIDGE_MODE_UNSPEC = 0, +BRIDGE_MODE_HAIRPIN = 1, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -952,21 +1780,6 @@ IFLA_BRPORT_MCAST_MAX_GROUPS = 42, __IFLA_BRPORT_MAX = 43, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_cacheinfo { -pub max_reasm_len: __u32, -pub tstamp: __u32, -pub reachable_time: __u32, -pub retrans_time: __u32, -} -pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; -pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; -pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; -pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; -pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; -pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; -pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -979,13 +1792,6 @@ IFLA_INFO_SLAVE_DATA = 5, __IFLA_INFO_MAX = 6, } -pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; -pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; -pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; -pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; -pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; -pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; -pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -998,15 +1804,6 @@ IFLA_VLAN_PROTOCOL = 5, __IFLA_VLAN_MAX = 6, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; -pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; -pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1015,22 +1812,6 @@ IFLA_VLAN_QOS_MAPPING = 1, __IFLA_VLAN_QOS_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_qos_mapping { -pub from: __u32, -pub to: __u32, -} -pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; -pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; -pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; -pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; -pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; -pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; -pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; -pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; -pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; -pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1065,9 +1846,6 @@ MACVLAN_MACADDR_FLUSH = 2, MACVLAN_MACADDR_SET = 3, } -pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; -pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; -pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1076,9 +1854,6 @@ IFLA_VRF_TABLE = 1, __IFLA_VRF_MAX = 2, } -pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; -pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; -pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1087,23 +1862,6 @@ IFLA_VRF_PORT_TABLE = 1, __IFLA_VRF_PORT_MAX = 2, } -pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; -pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; -pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; -pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; -pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; -pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; -pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; -pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; -pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; -pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; -pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; -pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; -pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; -pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; -pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; -pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; -pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1126,11 +1884,6 @@ IFLA_MACSEC_OFFLOAD = 15, __IFLA_MACSEC_MAX = 16, } -pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; -pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; -pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; -pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; -pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1141,9 +1894,6 @@ IFLA_XFRM_COLLECT_METADATA = 3, __IFLA_XFRM_MAX = 4, } -impl macsec_validation_type { -pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1153,9 +1903,6 @@ MACSEC_VALIDATE_STRICT = 2, __MACSEC_VALIDATE_END = 3, } -impl macsec_offload { -pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1165,10 +1912,6 @@ MACSEC_OFFLOAD_MAC = 2, __MACSEC_OFFLOAD_END = 3, } -pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; -pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; -pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; -pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1187,25 +1930,6 @@ IPVLAN_MODE_L3S = 2, IPVLAN_MODE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tunnel_msg { -pub family: __u8, -pub flags: __u8, -pub reserved2: __u16, -pub ifindex: __u32, -} -pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; -pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; -pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; -pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; -pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; -pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; -pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; -pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; -pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1222,13 +1946,6 @@ VNIFILTER_ENTRY_STATS_PAD = 9, __VNIFILTER_ENTRY_STATS_MAX = 10, } -pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; -pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; -pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; -pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; -pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; -pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1241,9 +1958,6 @@ VXLAN_VNIFILTER_ENTRY_STATS = 5, __VXLAN_VNIFILTER_ENTRY_MAX = 6, } -pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; -pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1252,38 +1966,6 @@ VXLAN_VNIFILTER_ENTRY = 1, __VXLAN_VNIFILTER_MAX = 2, } -pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; -pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; -pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; -pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; -pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; -pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; -pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; -pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; -pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; -pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; -pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; -pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; -pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; -pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; -pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; -pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; -pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; -pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; -pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; -pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; -pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; -pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; -pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; -pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; -pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; -pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; -pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; -pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; -pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; -pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1321,15 +2003,6 @@ IFLA_VXLAN_VNIFILTER = 30, __IFLA_VXLAN_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vxlan_port_range { -pub low: __be16, -pub high: __be16, -} -impl ifla_vxlan_df { -pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1339,22 +2012,6 @@ VXLAN_DF_INHERIT = 2, __VXLAN_DF_END = 3, } -pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; -pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; -pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; -pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; -pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; -pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; -pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; -pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; -pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; -pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; -pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; -pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; -pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; -pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1376,9 +2033,6 @@ IFLA_GENEVE_INNER_PROTO_INHERIT = 14, __IFLA_GENEVE_MAX = 15, } -impl ifla_geneve_df { -pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1388,12 +2042,6 @@ GENEVE_DF_INHERIT = 2, __GENEVE_DF_END = 3, } -pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; -pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; -pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; -pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; -pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; -pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1405,9 +2053,6 @@ IFLA_BAREUDP_MULTIPROTO_MODE = 4, __IFLA_BAREUDP_MAX = 5, } -pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; -pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; -pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1423,60 +2068,19 @@ GTP_ROLE_GGSN = 0, GTP_ROLE_SGSN = 1, } -pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; -pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; -pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; -pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; -pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; -pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; -pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; -pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub enum _bindgen_ty_25 { IFLA_GTP_UNSPEC = 0, IFLA_GTP_FD0 = 1, -IFLA_GTP_FD1 = 2, -IFLA_GTP_PDP_HASHSIZE = 3, -IFLA_GTP_ROLE = 4, -IFLA_GTP_CREATE_SOCKETS = 5, -IFLA_GTP_RESTART_COUNT = 6, -__IFLA_GTP_MAX = 7, -} -pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; -pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; -pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; -pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; -pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; -pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; -pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; -pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; -pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; -pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; -pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; -pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; -pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; -pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; -pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; -pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; -pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; -pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; -pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; -pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; -pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; -pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; -pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; -pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; -pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; -pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; -pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; -pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; -pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; -pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; -pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; -pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; -pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +IFLA_GTP_FD1 = 2, +IFLA_GTP_PDP_HASHSIZE = 3, +IFLA_GTP_ROLE = 4, +IFLA_GTP_CREATE_SOCKETS = 5, +IFLA_GTP_RESTART_COUNT = 6, +__IFLA_GTP_MAX = 7, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1515,13 +2119,6 @@ IFLA_BOND_NS_IP6_TARGET = 31, __IFLA_BOND_MAX = 32, } -pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; -pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; -pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; -pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; -pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1534,17 +2131,6 @@ IFLA_BOND_AD_INFO_PARTNER_MAC = 5, __IFLA_BOND_AD_INFO_MAX = 6, } -pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; -pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; -pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; -pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; -pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; -pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; -pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; -pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; -pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1561,9 +2147,6 @@ IFLA_BOND_SLAVE_PRIO = 9, __IFLA_BOND_SLAVE_MAX = 10, } -pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; -pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; -pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1572,21 +2155,6 @@ IFLA_VF_INFO = 1, __IFLA_VF_INFO_MAX = 2, } -pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; -pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; -pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; -pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; -pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; -pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; -pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; -pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; -pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; -pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; -pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; -pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; -pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; -pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; -pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1607,27 +2175,6 @@ IFLA_VF_BROADCAST = 13, __IFLA_VF_MAX = 14, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_mac { -pub vf: __u32, -pub mac: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_broadcast { -pub broadcast: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -} -pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; -pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; -pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1636,43 +2183,6 @@ IFLA_VF_VLAN_INFO = 1, __IFLA_VF_VLAN_INFO_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan_info { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -pub vlan_proto: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_tx_rate { -pub vf: __u32, -pub rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rate { -pub vf: __u32, -pub min_tx_rate: __u32, -pub max_tx_rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_spoofchk { -pub vf: __u32, -pub setting: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_guid { -pub vf: __u32, -pub guid: __u64, -} -pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; -pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; -pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; -pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1682,28 +2192,6 @@ IFLA_VF_LINK_STATE_DISABLE = 2, __IFLA_VF_LINK_STATE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_link_state { -pub vf: __u32, -pub link_state: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rss_query_en { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; -pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; -pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; -pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; -pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; -pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; -pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; -pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; -pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; -pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1719,15 +2207,6 @@ IFLA_VF_STATS_TX_DROPPED = 8, __IFLA_VF_STATS_MAX = 9, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_trust { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; -pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; -pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1736,15 +2215,6 @@ IFLA_VF_PORT = 1, __IFLA_VF_PORT_MAX = 2, } -pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; -pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; -pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; -pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; -pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; -pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; -pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; -pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; -pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1759,10 +2229,6 @@ IFLA_PORT_RESPONSE = 7, __IFLA_PORT_MAX = 8, } -pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; -pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; -pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; -pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1772,19 +2238,6 @@ PORT_REQUEST_ASSOCIATE = 2, PORT_REQUEST_DISASSOCIATE = 3, } -pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; -pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; -pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; -pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; -pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; -pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; -pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; -pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; -pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; -pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; -pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1803,19 +2256,6 @@ PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, PORT_PROFILE_RESPONSE_ERROR = 261, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_port_vsi { -pub vsi_mgr_id: __u8, -pub vsi_type_id: [__u8; 3usize], -pub vsi_type_version: __u8, -pub pad: [__u8; 3usize], -} -pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; -pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; -pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; -pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; -pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1826,8 +2266,6 @@ IFLA_IPOIB_UMCAST = 3, __IFLA_IPOIB_MAX = 4, } -pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; -pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1835,9 +2273,6 @@ IPOIB_MODE_DATAGRAM = 0, IPOIB_MODE_CONNECTED = 1, } -pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; -pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; -pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1846,15 +2281,6 @@ HSR_PROTOCOL_PRP = 1, HSR_PROTOCOL_MAX = 2, } -pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; -pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; -pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; -pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; -pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; -pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; -pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; -pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; -pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1869,22 +2295,6 @@ IFLA_HSR_PROTOCOL = 7, __IFLA_HSR_MAX = 8, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_stats_msg { -pub family: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub ifindex: __u32, -pub filter_mask: __u32, -} -pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; -pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; -pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; -pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; -pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; -pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; -pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1897,10 +2307,6 @@ IFLA_STATS_AF_SPEC = 5, __IFLA_STATS_MAX = 6, } -pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; -pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; -pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1910,10 +2316,6 @@ IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, __IFLA_STATS_GETSET_MAX = 3, } -pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; -pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; -pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; -pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1923,11 +2325,6 @@ LINK_XSTATS_TYPE_BOND = 2, __LINK_XSTATS_TYPE_MAX = 3, } -pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; -pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1938,10 +2335,6 @@ IFLA_OFFLOAD_XSTATS_L3_STATS = 3, __IFLA_OFFLOAD_XSTATS_MAX = 4, } -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; -pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1951,11 +2344,6 @@ IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, } -pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; -pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; -pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; -pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; -pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1966,16 +2354,6 @@ XDP_ATTACHED_HW = 3, XDP_ATTACHED_MULTI = 4, } -pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; -pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; -pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; -pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; -pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; -pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; -pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; -pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; -pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; -pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1991,13 +2369,6 @@ IFLA_XDP_EXPECTED_FD = 8, __IFLA_XDP_MAX = 9, } -pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; -pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; -pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; -pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; -pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; -pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; -pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2010,17 +2381,6 @@ IFLA_EVENT_IGMP_RESEND = 5, IFLA_EVENT_BONDING_OPTIONS = 6, } -pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; -pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; -pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; -pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; -pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; -pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; -pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; -pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; -pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; -pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; -pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2036,11 +2396,7 @@ IFLA_TUN_NUM_QUEUES = 8, IFLA_TUN_NUM_DISABLED_QUEUES = 9, __IFLA_TUN_MAX = 10, -} -pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; -pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; -pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; -pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2050,15 +2406,6 @@ IFLA_RMNET_FLAGS = 2, __IFLA_RMNET_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_rmnet_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; -pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; -pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2067,9 +2414,6 @@ IFLA_MCTP_NET = 1, __IFLA_MCTP_MAX = 2, } -pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; -pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; -pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2078,28 +2422,6 @@ IFLA_DSA_MASTER = 1, __IFLA_DSA_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifaddrmsg { -pub ifa_family: __u8, -pub ifa_prefixlen: __u8, -pub ifa_flags: __u8, -pub ifa_scope: __u8, -pub ifa_index: __u32, -} -pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; -pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; -pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; -pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; -pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; -pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; -pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; -pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; -pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; -pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; -pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; -pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; -pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2118,44 +2440,6 @@ IFA_PROTO = 11, __IFA_MAX = 12, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifa_cacheinfo { -pub ifa_prefered: __u32, -pub ifa_valid: __u32, -pub cstamp: __u32, -pub tstamp: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndmsg { -pub ndm_family: __u8, -pub ndm_pad1: __u8, -pub ndm_pad2: __u16, -pub ndm_ifindex: __s32, -pub ndm_state: __u16, -pub ndm_flags: __u8, -pub ndm_type: __u8, -} -pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; -pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; -pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; -pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; -pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; -pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; -pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; -pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; -pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; -pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; -pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; -pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; -pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; -pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; -pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; -pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; -pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; -pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; -pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2180,50 +2464,6 @@ NDA_NDM_FLAGS_MASK = 17, __NDA_MAX = 18, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nda_cacheinfo { -pub ndm_confirmed: __u32, -pub ndm_used: __u32, -pub ndm_updated: __u32, -pub ndm_refcnt: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_stats { -pub ndts_allocs: __u64, -pub ndts_destroys: __u64, -pub ndts_hash_grows: __u64, -pub ndts_res_failed: __u64, -pub ndts_lookups: __u64, -pub ndts_hits: __u64, -pub ndts_rcv_probes_mcast: __u64, -pub ndts_rcv_probes_ucast: __u64, -pub ndts_periodic_gc_runs: __u64, -pub ndts_forced_gc_runs: __u64, -pub ndts_table_fulls: __u64, -} -pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; -pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; -pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; -pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; -pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; -pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; -pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; -pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; -pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; -pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; -pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; -pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; -pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; -pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; -pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; -pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; -pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; -pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; -pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; -pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; -pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2250,37 +2490,6 @@ NDTPA_INTERVAL_PROBE_TIME_MS = 19, __NDTPA_MAX = 20, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndtmsg { -pub ndtm_family: __u8, -pub ndtm_pad1: __u8, -pub ndtm_pad2: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_config { -pub ndtc_key_len: __u16, -pub ndtc_entry_size: __u16, -pub ndtc_entries: __u32, -pub ndtc_last_flush: __u32, -pub ndtc_last_rand: __u32, -pub ndtc_hash_rnd: __u32, -pub ndtc_hash_mask: __u32, -pub ndtc_hash_chain_gc: __u32, -pub ndtc_proxy_qlen: __u32, -} -pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; -pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; -pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; -pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; -pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; -pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; -pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; -pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; -pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; -pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; -pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2297,8 +2506,6 @@ NDTA_PAD = 9, __NDTA_MAX = 10, } -pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; -pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2306,10 +2513,6 @@ FDB_NOTIFY_BIT = 1, FDB_NOTIFY_INACTIVE_BIT = 2, } -pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; -pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; -pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; -pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2319,79 +2522,6 @@ NFEA_DONT_REFRESH = 2, __NFEA_MAX = 3, } -pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; -pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; -pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; -pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; -pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; -pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; -pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; -pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; -pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; -pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; -pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; -pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; -pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; -pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; -pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; -pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; -pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; -pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; -pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; -pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; -pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; -pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; -pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; -pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; -pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; -pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; -pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; -pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; -pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; -pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; -pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; -pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; -pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; -pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; -pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; -pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; -pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; -pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; -pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; -pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; -pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; -pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; -pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; -pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; -pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; -pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; -pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; -pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; -pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; -pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; -pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; -pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; -pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; -pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; -pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; -pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; -pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; -pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; -pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; -pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; -pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; -pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; -pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; -pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; -pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; -pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; -pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; -pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; -pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; -pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; -pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2458,49 +2588,17 @@ RTM_NEWLINKPROP = 108, RTM_DELLINKPROP = 109, RTM_GETLINKPROP = 110, -RTM_NEWVLAN = 112, -RTM_DELVLAN = 113, -RTM_GETVLAN = 114, -RTM_NEWNEXTHOPBUCKET = 116, -RTM_DELNEXTHOPBUCKET = 117, -RTM_GETNEXTHOPBUCKET = 118, -RTM_NEWTUNNEL = 120, -RTM_DELTUNNEL = 121, -RTM_GETTUNNEL = 122, -__RTM_MAX = 123, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtattr { -pub rta_len: crate::ctypes::c_ushort, -pub rta_type: crate::ctypes::c_ushort, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtmsg { -pub rtm_family: crate::ctypes::c_uchar, -pub rtm_dst_len: crate::ctypes::c_uchar, -pub rtm_src_len: crate::ctypes::c_uchar, -pub rtm_tos: crate::ctypes::c_uchar, -pub rtm_table: crate::ctypes::c_uchar, -pub rtm_protocol: crate::ctypes::c_uchar, -pub rtm_scope: crate::ctypes::c_uchar, -pub rtm_type: crate::ctypes::c_uchar, -pub rtm_flags: crate::ctypes::c_uint, +RTM_NEWVLAN = 112, +RTM_DELVLAN = 113, +RTM_GETVLAN = 114, +RTM_NEWNEXTHOPBUCKET = 116, +RTM_DELNEXTHOPBUCKET = 117, +RTM_GETNEXTHOPBUCKET = 118, +RTM_NEWTUNNEL = 120, +RTM_DELTUNNEL = 121, +RTM_GETTUNNEL = 122, +__RTM_MAX = 123, } -pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; -pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; -pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; -pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; -pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; -pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; -pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; -pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; -pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; -pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; -pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; -pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; -pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2577,51 +2675,6 @@ RTA_NH_ID = 30, __RTA_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnexthop { -pub rtnh_len: crate::ctypes::c_ushort, -pub rtnh_flags: crate::ctypes::c_uchar, -pub rtnh_hops: crate::ctypes::c_uchar, -pub rtnh_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug)] -pub struct rtvia { -pub rtvia_family: __kernel_sa_family_t, -pub rtvia_addr: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_cacheinfo { -pub rta_clntref: __u32, -pub rta_lastuse: __u32, -pub rta_expires: __s32, -pub rta_error: __u32, -pub rta_used: __u32, -pub rta_id: __u32, -pub rta_ts: __u32, -pub rta_tsage: __u32, -} -pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; -pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; -pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; -pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; -pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; -pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; -pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; -pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; -pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; -pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; -pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; -pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; -pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; -pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; -pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; -pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; -pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; -pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; -pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2646,72 +2699,6 @@ RTAX_FASTOPEN_NO_COOKIE = 17, __RTAX_MAX = 18, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rta_session { -pub proto: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub u: rta_session__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union rta_session__bindgen_ty_1 { -pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, -pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, -pub spi: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { -pub sport: __u16, -pub dport: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { -pub type_: __u8, -pub code: __u8, -pub ident: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_mfc_stats { -pub mfcs_packets: __u64, -pub mfcs_bytes: __u64, -pub mfcs_wrong_if: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtgenmsg { -pub rtgen_family: crate::ctypes::c_uchar, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifinfomsg { -pub ifi_family: crate::ctypes::c_uchar, -pub __ifi_pad: crate::ctypes::c_uchar, -pub ifi_type: crate::ctypes::c_ushort, -pub ifi_index: crate::ctypes::c_int, -pub ifi_flags: crate::ctypes::c_uint, -pub ifi_change: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefixmsg { -pub prefix_family: crate::ctypes::c_uchar, -pub prefix_pad1: crate::ctypes::c_uchar, -pub prefix_pad2: crate::ctypes::c_ushort, -pub prefix_ifindex: crate::ctypes::c_int, -pub prefix_type: crate::ctypes::c_uchar, -pub prefix_len: crate::ctypes::c_uchar, -pub prefix_flags: crate::ctypes::c_uchar, -pub prefix_pad3: crate::ctypes::c_uchar, -} -pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; -pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; -pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; -pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2721,41 +2708,6 @@ PREFIX_CACHEINFO = 2, __PREFIX_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefix_cacheinfo { -pub preferred_time: __u32, -pub valid_time: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcmsg { -pub tcm_family: crate::ctypes::c_uchar, -pub tcm__pad1: crate::ctypes::c_uchar, -pub tcm__pad2: crate::ctypes::c_ushort, -pub tcm_ifindex: crate::ctypes::c_int, -pub tcm_handle: __u32, -pub tcm_parent: __u32, -pub tcm_info: __u32, -} -pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; -pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; -pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; -pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; -pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; -pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; -pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; -pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; -pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; -pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; -pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; -pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; -pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; -pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; -pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; -pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; -pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; -pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2779,21 +2731,6 @@ TCA_EXT_WARN_MSG = 16, __TCA_MAX = 17, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nduseroptmsg { -pub nduseropt_family: crate::ctypes::c_uchar, -pub nduseropt_pad1: crate::ctypes::c_uchar, -pub nduseropt_opts_len: crate::ctypes::c_ushort, -pub nduseropt_ifindex: crate::ctypes::c_int, -pub nduseropt_icmp_type: __u8, -pub nduseropt_icmp_code: __u8, -pub nduseropt_pad2: crate::ctypes::c_ushort, -pub nduseropt_pad3: crate::ctypes::c_uint, -} -pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; -pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; -pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2845,20 +2782,6 @@ RTNLGRP_STATS = 36, __RTNLGRP_MAX = 37, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcamsg { -pub tca_family: crate::ctypes::c_uchar, -pub tca__pad1: crate::ctypes::c_uchar, -pub tca__pad2: crate::ctypes::c_ushort, -} -pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; -pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; -pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; -pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; -pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; -pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; -pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2871,3 +2794,61 @@ TCA_ROOT_EXT_WARN_MSG = 5, __TCA_ROOT_MAX = 6, } +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union rta_session__bindgen_ty_1 { +pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, +pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, +pub spi: __u32, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl nlmsgerr_attrs { +pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +} +impl netlink_policy_type_attr { +pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; +} +impl macsec_validation_type { +pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; +} +impl macsec_offload { +pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; +} +impl ifla_vxlan_df { +pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; +} +impl ifla_geneve_df { +pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/net.rs temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/net.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/net.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/net.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,2052 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_long; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type socklen_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_addr { +pub s_addr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq { +pub imr_multiaddr: in_addr, +pub imr_interface: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreqn { +pub imr_multiaddr: in_addr, +pub imr_address: in_addr, +pub imr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq_source { +pub imr_multiaddr: __be32, +pub imr_interface: __be32, +pub imr_sourceaddr: __be32, +} +#[repr(C)] +pub struct ip_msfilter { +pub imsf_multiaddr: __be32, +pub imsf_interface: __be32, +pub imsf_fmode: __u32, +pub imsf_numsrc: __u32, +pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, +} +#[repr(C)] +pub struct ip_msfilter__bindgen_ty_1 { +pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, +pub __bindgen_anon_1: __BindgenUnionField, +pub bindgen_union_field: u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { +pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub imsf_slist_flex: __IncompleteArrayField<__be32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_req { +pub gr_interface: __u32, +pub gr_group: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_source_req { +pub gsr_interface: __u32, +pub gsr_group: __kernel_sockaddr_storage, +pub gsr_source: __kernel_sockaddr_storage, +} +#[repr(C)] +pub struct group_filter { +pub __bindgen_anon_1: group_filter__bindgen_ty_1, +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u32; 67usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { +pub gf_interface_aux: __u32, +pub gf_group_aux: __kernel_sockaddr_storage, +pub gf_fmode_aux: __u32, +pub gf_numsrc_aux: __u32, +pub gf_slist: [__kernel_sockaddr_storage; 1usize], +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { +pub gf_interface: __u32, +pub gf_group: __kernel_sockaddr_storage, +pub gf_fmode: __u32, +pub gf_numsrc: __u32, +pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_pktinfo { +pub ipi_ifindex: crate::ctypes::c_int, +pub ipi_spec_dst: in_addr, +pub ipi_addr: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_in { +pub sin_family: __kernel_sa_family_t, +pub sin_port: __be16, +pub sin_addr: in_addr, +pub __pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct iphdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub tos: __u8, +pub tot_len: __be16, +pub id: __be16, +pub frag_off: __be16, +pub ttl: __u8, +pub protocol: __u8, +pub check: __sum16, +pub __bindgen_anon_1: iphdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_auth_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub reserved: __be16, +pub spi: __be32, +pub seq_no: __be32, +pub auth_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_esp_hdr { +pub spi: __be32, +pub seq_no: __be32, +pub enc_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_comp_hdr { +pub nexthdr: __u8, +pub flags: __u8, +pub cpi: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_beet_phdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub padlen: __u8, +pub reserved: __u8, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_addr { +pub in6_u: in6_addr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr_in6 { +pub sin6_family: crate::ctypes::c_ushort, +pub sin6_port: __be16, +pub sin6_flowinfo: __be32, +pub sin6_addr: in6_addr, +pub sin6_scope_id: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6_mreq { +pub ipv6mr_multiaddr: in6_addr, +pub ipv6mr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_flowlabel_req { +pub flr_dst: in6_addr, +pub flr_label: __be32, +pub flr_action: __u8, +pub flr_share: __u8, +pub flr_flags: __u16, +pub flr_expires: __u16, +pub flr_linger: __u16, +pub __flr_pad: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_pktinfo { +pub ipi6_addr: in6_addr, +pub ipi6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ip6_mtuinfo { +pub ip6m_addr: sockaddr_in6, +pub ip6m_mtu: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_ifreq { +pub ifr6_addr: in6_addr, +pub ifr6_prefixlen: __u32, +pub ifr6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_rt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub type_: __u8, +pub segments_left: __u8, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_opt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +} +#[repr(C)] +pub struct rt0_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rt2_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: in6_addr, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct ipv6_destopt_hao { +pub type_: __u8, +pub length: __u8, +pub addr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub flow_lbl: [__u8; 3usize], +pub payload_len: __be16, +pub nexthdr: __u8, +pub hop_limit: __u8, +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcphdr { +pub source: __be16, +pub dest: __be16, +pub seq: __be32, +pub ack_seq: __be32, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub window: __be16, +pub check: __sum16, +pub urg_ptr: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_opt { +pub opt_code: __u32, +pub opt_val: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_window { +pub snd_wl1: __u32, +pub snd_wnd: __u32, +pub max_window: __u32, +pub rcv_wnd: __u32, +pub rcv_wup: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_info { +pub tcpi_state: __u8, +pub tcpi_ca_state: __u8, +pub tcpi_retransmits: __u8, +pub tcpi_probes: __u8, +pub tcpi_backoff: __u8, +pub tcpi_options: __u8, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub tcpi_rto: __u32, +pub tcpi_ato: __u32, +pub tcpi_snd_mss: __u32, +pub tcpi_rcv_mss: __u32, +pub tcpi_unacked: __u32, +pub tcpi_sacked: __u32, +pub tcpi_lost: __u32, +pub tcpi_retrans: __u32, +pub tcpi_fackets: __u32, +pub tcpi_last_data_sent: __u32, +pub tcpi_last_ack_sent: __u32, +pub tcpi_last_data_recv: __u32, +pub tcpi_last_ack_recv: __u32, +pub tcpi_pmtu: __u32, +pub tcpi_rcv_ssthresh: __u32, +pub tcpi_rtt: __u32, +pub tcpi_rttvar: __u32, +pub tcpi_snd_ssthresh: __u32, +pub tcpi_snd_cwnd: __u32, +pub tcpi_advmss: __u32, +pub tcpi_reordering: __u32, +pub tcpi_rcv_rtt: __u32, +pub tcpi_rcv_space: __u32, +pub tcpi_total_retrans: __u32, +pub tcpi_pacing_rate: __u64, +pub tcpi_max_pacing_rate: __u64, +pub tcpi_bytes_acked: __u64, +pub tcpi_bytes_received: __u64, +pub tcpi_segs_out: __u32, +pub tcpi_segs_in: __u32, +pub tcpi_notsent_bytes: __u32, +pub tcpi_min_rtt: __u32, +pub tcpi_data_segs_in: __u32, +pub tcpi_data_segs_out: __u32, +pub tcpi_delivery_rate: __u64, +pub tcpi_busy_time: __u64, +pub tcpi_rwnd_limited: __u64, +pub tcpi_sndbuf_limited: __u64, +pub tcpi_delivered: __u32, +pub tcpi_delivered_ce: __u32, +pub tcpi_bytes_sent: __u64, +pub tcpi_bytes_retrans: __u64, +pub tcpi_dsack_dups: __u32, +pub tcpi_reord_seen: __u32, +pub tcpi_rcv_ooopack: __u32, +pub tcpi_snd_wnd: __u32, +pub tcpi_rcv_wnd: __u32, +pub tcpi_rehash: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct tcp_md5sig { +pub tcpm_addr: __kernel_sockaddr_storage, +pub tcpm_flags: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_ifindex: crate::ctypes::c_int, +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_diag_md5sig { +pub tcpm_family: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_addr: [__be32; 4usize], +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_zerocopy_receive { +pub address: __u64, +pub length: __u32, +pub recv_skip_hint: __u32, +pub inq: __u32, +pub err: __s32, +pub copybuf_address: __u64, +pub copybuf_len: __s32, +pub flags: __u32, +pub msg_control: __u64, +pub msg_controllen: __u64, +pub msg_flags: __u32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_un { +pub sun_family: __kernel_sa_family_t, +pub sun_path: [crate::ctypes::c_char; 108usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr { +pub __storage: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct linger { +pub l_onoff: crate::ctypes::c_int, +pub l_linger: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct msghdr { +pub msg_name: *mut crate::ctypes::c_void, +pub msg_namelen: crate::ctypes::c_int, +pub msg_iov: *mut iovec, +pub msg_iovlen: usize, +pub msg_control: *mut crate::ctypes::c_void, +pub msg_controllen: usize, +pub msg_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct cmsghdr { +pub cmsg_len: usize, +pub cmsg_level: crate::ctypes::c_int, +pub cmsg_type: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ucred { +pub pid: __u32, +pub uid: __u32, +pub gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mmsghdr { +pub msg_hdr: msghdr, +pub msg_len: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub _address: u8, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const IP_TOS: u32 = 1; +pub const IP_TTL: u32 = 2; +pub const IP_HDRINCL: u32 = 3; +pub const IP_OPTIONS: u32 = 4; +pub const IP_ROUTER_ALERT: u32 = 5; +pub const IP_RECVOPTS: u32 = 6; +pub const IP_RETOPTS: u32 = 7; +pub const IP_PKTINFO: u32 = 8; +pub const IP_PKTOPTIONS: u32 = 9; +pub const IP_MTU_DISCOVER: u32 = 10; +pub const IP_RECVERR: u32 = 11; +pub const IP_RECVTTL: u32 = 12; +pub const IP_RECVTOS: u32 = 13; +pub const IP_MTU: u32 = 14; +pub const IP_FREEBIND: u32 = 15; +pub const IP_IPSEC_POLICY: u32 = 16; +pub const IP_XFRM_POLICY: u32 = 17; +pub const IP_PASSSEC: u32 = 18; +pub const IP_TRANSPARENT: u32 = 19; +pub const IP_RECVRETOPTS: u32 = 7; +pub const IP_ORIGDSTADDR: u32 = 20; +pub const IP_RECVORIGDSTADDR: u32 = 20; +pub const IP_MINTTL: u32 = 21; +pub const IP_NODEFRAG: u32 = 22; +pub const IP_CHECKSUM: u32 = 23; +pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; +pub const IP_RECVFRAGSIZE: u32 = 25; +pub const IP_RECVERR_RFC4884: u32 = 26; +pub const IP_PMTUDISC_DONT: u32 = 0; +pub const IP_PMTUDISC_WANT: u32 = 1; +pub const IP_PMTUDISC_DO: u32 = 2; +pub const IP_PMTUDISC_PROBE: u32 = 3; +pub const IP_PMTUDISC_INTERFACE: u32 = 4; +pub const IP_PMTUDISC_OMIT: u32 = 5; +pub const IP_MULTICAST_IF: u32 = 32; +pub const IP_MULTICAST_TTL: u32 = 33; +pub const IP_MULTICAST_LOOP: u32 = 34; +pub const IP_ADD_MEMBERSHIP: u32 = 35; +pub const IP_DROP_MEMBERSHIP: u32 = 36; +pub const IP_UNBLOCK_SOURCE: u32 = 37; +pub const IP_BLOCK_SOURCE: u32 = 38; +pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; +pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; +pub const IP_MSFILTER: u32 = 41; +pub const MCAST_JOIN_GROUP: u32 = 42; +pub const MCAST_BLOCK_SOURCE: u32 = 43; +pub const MCAST_UNBLOCK_SOURCE: u32 = 44; +pub const MCAST_LEAVE_GROUP: u32 = 45; +pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; +pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; +pub const MCAST_MSFILTER: u32 = 48; +pub const IP_MULTICAST_ALL: u32 = 49; +pub const IP_UNICAST_IF: u32 = 50; +pub const IP_LOCAL_PORT_RANGE: u32 = 51; +pub const MCAST_EXCLUDE: u32 = 0; +pub const MCAST_INCLUDE: u32 = 1; +pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; +pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; +pub const __SOCK_SIZE__: u32 = 16; +pub const IN_CLASSA_NET: u32 = 4278190080; +pub const IN_CLASSA_NSHIFT: u32 = 24; +pub const IN_CLASSA_HOST: u32 = 16777215; +pub const IN_CLASSA_MAX: u32 = 128; +pub const IN_CLASSB_NET: u32 = 4294901760; +pub const IN_CLASSB_NSHIFT: u32 = 16; +pub const IN_CLASSB_HOST: u32 = 65535; +pub const IN_CLASSB_MAX: u32 = 65536; +pub const IN_CLASSC_NET: u32 = 4294967040; +pub const IN_CLASSC_NSHIFT: u32 = 8; +pub const IN_CLASSC_HOST: u32 = 255; +pub const IN_MULTICAST_NET: u32 = 3758096384; +pub const IN_CLASSE_NET: u32 = 4294967295; +pub const IN_CLASSE_NSHIFT: u32 = 0; +pub const IN_LOOPBACKNET: u32 = 127; +pub const INADDR_LOOPBACK: u32 = 2130706433; +pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; +pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; +pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; +pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; +pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; +pub const __BIG_ENDIAN: u32 = 4321; +pub const ASI_NULL1: u32 = 0; +pub const ASI_NULL2: u32 = 1; +pub const ASI_CONTROL: u32 = 2; +pub const ASI_SEGMAP: u32 = 3; +pub const ASI_PTE: u32 = 4; +pub const ASI_HWFLUSHSEG: u32 = 5; +pub const ASI_HWFLUSHPAGE: u32 = 6; +pub const ASI_REGMAP: u32 = 6; +pub const ASI_HWFLUSHCONTEXT: u32 = 7; +pub const ASI_USERTXT: u32 = 8; +pub const ASI_KERNELTXT: u32 = 9; +pub const ASI_USERDATA: u32 = 10; +pub const ASI_KERNELDATA: u32 = 11; +pub const ASI_FLUSHSEG: u32 = 12; +pub const ASI_FLUSHPG: u32 = 13; +pub const ASI_FLUSHCTX: u32 = 14; +pub const ASI_M_RES00: u32 = 0; +pub const ASI_M_UNA01: u32 = 1; +pub const ASI_M_MXCC: u32 = 2; +pub const ASI_M_FLUSH_PROBE: u32 = 3; +pub const ASI_M_MMUREGS: u32 = 4; +pub const ASI_M_TLBDIAG: u32 = 5; +pub const ASI_M_DIAGS: u32 = 6; +pub const ASI_M_IODIAG: u32 = 7; +pub const ASI_M_USERTXT: u32 = 8; +pub const ASI_M_KERNELTXT: u32 = 9; +pub const ASI_M_USERDATA: u32 = 10; +pub const ASI_M_KERNELDATA: u32 = 11; +pub const ASI_M_TXTC_TAG: u32 = 12; +pub const ASI_M_TXTC_DATA: u32 = 13; +pub const ASI_M_DATAC_TAG: u32 = 14; +pub const ASI_M_DATAC_DATA: u32 = 15; +pub const ASI_M_FLUSH_PAGE: u32 = 16; +pub const ASI_M_FLUSH_SEG: u32 = 17; +pub const ASI_M_FLUSH_REGION: u32 = 18; +pub const ASI_M_FLUSH_CTX: u32 = 19; +pub const ASI_M_FLUSH_USER: u32 = 20; +pub const ASI_M_BCOPY: u32 = 23; +pub const ASI_M_IFLUSH_PAGE: u32 = 24; +pub const ASI_M_IFLUSH_SEG: u32 = 25; +pub const ASI_M_IFLUSH_REGION: u32 = 26; +pub const ASI_M_IFLUSH_CTX: u32 = 27; +pub const ASI_M_IFLUSH_USER: u32 = 28; +pub const ASI_M_BFILL: u32 = 31; +pub const ASI_M_BYPASS: u32 = 32; +pub const ASI_M_FBMEM: u32 = 41; +pub const ASI_M_VMEUS: u32 = 42; +pub const ASI_M_VMEPS: u32 = 43; +pub const ASI_M_VMEUT: u32 = 44; +pub const ASI_M_VMEPT: u32 = 45; +pub const ASI_M_SBUS: u32 = 46; +pub const ASI_M_CTL: u32 = 47; +pub const ASI_M_FLUSH_IWHOLE: u32 = 49; +pub const ASI_M_IC_FLCLEAR: u32 = 54; +pub const ASI_M_DC_FLCLEAR: u32 = 55; +pub const ASI_M_DCDR: u32 = 57; +pub const ASI_M_VIKING_TMP1: u32 = 64; +pub const ASI_M_ACTION: u32 = 76; +pub const ASI_LEON_NOCACHE: u32 = 1; +pub const ASI_LEON_DCACHE_MISS: u32 = 1; +pub const ASI_LEON_CACHEREGS: u32 = 2; +pub const ASI_LEON_IFLUSH: u32 = 16; +pub const ASI_LEON_DFLUSH: u32 = 17; +pub const ASI_LEON_MMUFLUSH: u32 = 24; +pub const ASI_LEON_MMUREGS: u32 = 25; +pub const ASI_LEON_BYPASS: u32 = 28; +pub const ASI_LEON_FLUSH_PAGE: u32 = 16; +pub const ASI_N: u32 = 4; +pub const ASI_NL: u32 = 12; +pub const ASI_AIUP: u32 = 16; +pub const ASI_AIUS: u32 = 17; +pub const ASI_AIUPL: u32 = 24; +pub const ASI_AIUSL: u32 = 25; +pub const ASI_P: u32 = 128; +pub const ASI_S: u32 = 129; +pub const ASI_PNF: u32 = 130; +pub const ASI_SNF: u32 = 131; +pub const ASI_PL: u32 = 136; +pub const ASI_SL: u32 = 137; +pub const ASI_PNFL: u32 = 138; +pub const ASI_SNFL: u32 = 139; +pub const ASI_MCD_PRIV_PRIMARY: u32 = 2; +pub const ASI_MCD_REAL: u32 = 5; +pub const ASI_PHYS_USE_EC: u32 = 20; +pub const ASI_PHYS_BYPASS_EC_E: u32 = 21; +pub const ASI_BLK_AIUP_4V: u32 = 22; +pub const ASI_BLK_AIUS_4V: u32 = 23; +pub const ASI_PHYS_USE_EC_L: u32 = 28; +pub const ASI_PHYS_BYPASS_EC_E_L: u32 = 29; +pub const ASI_BLK_AIUP_L_4V: u32 = 30; +pub const ASI_BLK_AIUS_L_4V: u32 = 31; +pub const ASI_SCRATCHPAD: u32 = 32; +pub const ASI_MMU: u32 = 33; +pub const ASI_BLK_INIT_QUAD_LDD_AIUS: u32 = 35; +pub const ASI_NUCLEUS_QUAD_LDD: u32 = 36; +pub const ASI_QUEUE: u32 = 37; +pub const ASI_QUAD_LDD_PHYS_4V: u32 = 38; +pub const ASI_NUCLEUS_QUAD_LDD_L: u32 = 44; +pub const ASI_QUAD_LDD_PHYS_L_4V: u32 = 46; +pub const ASI_PCACHE_DATA_STATUS: u32 = 48; +pub const ASI_PCACHE_DATA: u32 = 49; +pub const ASI_PCACHE_TAG: u32 = 50; +pub const ASI_PCACHE_SNOOP_TAG: u32 = 51; +pub const ASI_QUAD_LDD_PHYS: u32 = 52; +pub const ASI_WCACHE_VALID_BITS: u32 = 56; +pub const ASI_WCACHE_DATA: u32 = 57; +pub const ASI_WCACHE_TAG: u32 = 58; +pub const ASI_WCACHE_SNOOP_TAG: u32 = 59; +pub const ASI_QUAD_LDD_PHYS_L: u32 = 60; +pub const ASI_SRAM_FAST_INIT: u32 = 64; +pub const ASI_CORE_AVAILABLE: u32 = 65; +pub const ASI_CORE_ENABLE_STAT: u32 = 65; +pub const ASI_CORE_ENABLE: u32 = 65; +pub const ASI_XIR_STEERING: u32 = 65; +pub const ASI_CORE_RUNNING_RW: u32 = 65; +pub const ASI_CORE_RUNNING_W1S: u32 = 65; +pub const ASI_CORE_RUNNING_W1C: u32 = 65; +pub const ASI_CORE_RUNNING_STAT: u32 = 65; +pub const ASI_CMT_ERROR_STEERING: u32 = 65; +pub const ASI_DCACHE_INVALIDATE: u32 = 66; +pub const ASI_DCACHE_UTAG: u32 = 67; +pub const ASI_DCACHE_SNOOP_TAG: u32 = 68; +pub const ASI_LSU_CONTROL: u32 = 69; +pub const ASI_DCU_CONTROL_REG: u32 = 69; +pub const ASI_DCACHE_DATA: u32 = 70; +pub const ASI_DCACHE_TAG: u32 = 71; +pub const ASI_INTR_DISPATCH_STAT: u32 = 72; +pub const ASI_INTR_RECEIVE: u32 = 73; +pub const ASI_UPA_CONFIG: u32 = 74; +pub const ASI_JBUS_CONFIG: u32 = 74; +pub const ASI_SAFARI_CONFIG: u32 = 74; +pub const ASI_SAFARI_ADDRESS: u32 = 74; +pub const ASI_ESTATE_ERROR_EN: u32 = 75; +pub const ASI_AFSR: u32 = 76; +pub const ASI_AFAR: u32 = 77; +pub const ASI_EC_TAG_DATA: u32 = 78; +pub const ASI_IMMU: u32 = 80; +pub const ASI_IMMU_TSB_8KB_PTR: u32 = 81; +pub const ASI_IMMU_TSB_64KB_PTR: u32 = 82; +pub const ASI_ITLB_DATA_IN: u32 = 84; +pub const ASI_ITLB_DATA_ACCESS: u32 = 85; +pub const ASI_ITLB_TAG_READ: u32 = 86; +pub const ASI_IMMU_DEMAP: u32 = 87; +pub const ASI_DMMU: u32 = 88; +pub const ASI_DMMU_TSB_8KB_PTR: u32 = 89; +pub const ASI_DMMU_TSB_64KB_PTR: u32 = 90; +pub const ASI_DMMU_TSB_DIRECT_PTR: u32 = 91; +pub const ASI_DTLB_DATA_IN: u32 = 92; +pub const ASI_DTLB_DATA_ACCESS: u32 = 93; +pub const ASI_DTLB_TAG_READ: u32 = 94; +pub const ASI_DMMU_DEMAP: u32 = 95; +pub const ASI_IIU_INST_TRAP: u32 = 96; +pub const ASI_INTR_ID: u32 = 99; +pub const ASI_CORE_ID: u32 = 99; +pub const ASI_CESR_ID: u32 = 99; +pub const ASI_IC_INSTR: u32 = 102; +pub const ASI_IC_TAG: u32 = 103; +pub const ASI_IC_STAG: u32 = 104; +pub const ASI_IC_PRE_DECODE: u32 = 110; +pub const ASI_IC_NEXT_FIELD: u32 = 111; +pub const ASI_BRPRED_ARRAY: u32 = 111; +pub const ASI_BLK_AIUP: u32 = 112; +pub const ASI_BLK_AIUS: u32 = 113; +pub const ASI_MCU_CTRL_REG: u32 = 114; +pub const ASI_EC_DATA: u32 = 116; +pub const ASI_EC_CTRL: u32 = 117; +pub const ASI_EC_W: u32 = 118; +pub const ASI_UDB_ERROR_W: u32 = 119; +pub const ASI_UDB_CONTROL_W: u32 = 119; +pub const ASI_INTR_W: u32 = 119; +pub const ASI_INTR_DATAN_W: u32 = 119; +pub const ASI_INTR_DISPATCH_W: u32 = 119; +pub const ASI_BLK_AIUPL: u32 = 120; +pub const ASI_BLK_AIUSL: u32 = 121; +pub const ASI_EC_R: u32 = 126; +pub const ASI_UDBH_ERROR_R: u32 = 127; +pub const ASI_UDBL_ERROR_R: u32 = 127; +pub const ASI_UDBH_CONTROL_R: u32 = 127; +pub const ASI_UDBL_CONTROL_R: u32 = 127; +pub const ASI_INTR_R: u32 = 127; +pub const ASI_INTR_DATAN_R: u32 = 127; +pub const ASI_MCD_PRIMARY: u32 = 144; +pub const ASI_MCD_ST_BLKINIT_PRIMARY: u32 = 146; +pub const ASI_PIC: u32 = 176; +pub const ASI_PST8_P: u32 = 192; +pub const ASI_PST8_S: u32 = 193; +pub const ASI_PST16_P: u32 = 194; +pub const ASI_PST16_S: u32 = 195; +pub const ASI_PST32_P: u32 = 196; +pub const ASI_PST32_S: u32 = 197; +pub const ASI_PST8_PL: u32 = 200; +pub const ASI_PST8_SL: u32 = 201; +pub const ASI_PST16_PL: u32 = 202; +pub const ASI_PST16_SL: u32 = 203; +pub const ASI_PST32_PL: u32 = 204; +pub const ASI_PST32_SL: u32 = 205; +pub const ASI_FL8_P: u32 = 208; +pub const ASI_FL8_S: u32 = 209; +pub const ASI_FL16_P: u32 = 210; +pub const ASI_FL16_S: u32 = 211; +pub const ASI_FL8_PL: u32 = 216; +pub const ASI_FL8_SL: u32 = 217; +pub const ASI_FL16_PL: u32 = 218; +pub const ASI_FL16_SL: u32 = 219; +pub const ASI_BLK_COMMIT_P: u32 = 224; +pub const ASI_BLK_COMMIT_S: u32 = 225; +pub const ASI_BLK_INIT_QUAD_LDD_P: u32 = 226; +pub const ASI_BLK_INIT_QUAD_LDD_S: u32 = 227; +pub const ASI_BLK_P: u32 = 240; +pub const ASI_BLK_S: u32 = 241; +pub const ASI_ST_BLKINIT_MRU_P: u32 = 242; +pub const ASI_ST_BLKINIT_MRU_S: u32 = 243; +pub const ASI_BLK_PL: u32 = 248; +pub const ASI_BLK_SL: u32 = 249; +pub const ASI_ST_BLKINIT_MRU_PL: u32 = 250; +pub const ASI_ST_BLKINIT_MRU_SL: u32 = 251; +pub const IPTOS_TOS_MASK: u32 = 30; +pub const IPTOS_LOWDELAY: u32 = 16; +pub const IPTOS_THROUGHPUT: u32 = 8; +pub const IPTOS_RELIABILITY: u32 = 4; +pub const IPTOS_MINCOST: u32 = 2; +pub const IPTOS_PREC_MASK: u32 = 224; +pub const IPTOS_PREC_NETCONTROL: u32 = 224; +pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; +pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; +pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; +pub const IPTOS_PREC_FLASH: u32 = 96; +pub const IPTOS_PREC_IMMEDIATE: u32 = 64; +pub const IPTOS_PREC_PRIORITY: u32 = 32; +pub const IPTOS_PREC_ROUTINE: u32 = 0; +pub const IPOPT_COPY: u32 = 128; +pub const IPOPT_CLASS_MASK: u32 = 96; +pub const IPOPT_NUMBER_MASK: u32 = 31; +pub const IPOPT_CONTROL: u32 = 0; +pub const IPOPT_RESERVED1: u32 = 32; +pub const IPOPT_MEASUREMENT: u32 = 64; +pub const IPOPT_RESERVED2: u32 = 96; +pub const IPOPT_END: u32 = 0; +pub const IPOPT_NOOP: u32 = 1; +pub const IPOPT_SEC: u32 = 130; +pub const IPOPT_LSRR: u32 = 131; +pub const IPOPT_TIMESTAMP: u32 = 68; +pub const IPOPT_CIPSO: u32 = 134; +pub const IPOPT_RR: u32 = 7; +pub const IPOPT_SID: u32 = 136; +pub const IPOPT_SSRR: u32 = 137; +pub const IPOPT_RA: u32 = 148; +pub const IPVERSION: u32 = 4; +pub const MAXTTL: u32 = 255; +pub const IPDEFTTL: u32 = 64; +pub const IPOPT_OPTVAL: u32 = 0; +pub const IPOPT_OLEN: u32 = 1; +pub const IPOPT_OFFSET: u32 = 2; +pub const IPOPT_MINOFF: u32 = 4; +pub const MAX_IPOPTLEN: u32 = 40; +pub const IPOPT_NOP: u32 = 1; +pub const IPOPT_EOL: u32 = 0; +pub const IPOPT_TS: u32 = 68; +pub const IPOPT_TS_TSONLY: u32 = 0; +pub const IPOPT_TS_TSANDADDR: u32 = 1; +pub const IPOPT_TS_PRESPEC: u32 = 3; +pub const IPV4_BEET_PHMAXLEN: u32 = 8; +pub const IPV6_FL_A_GET: u32 = 0; +pub const IPV6_FL_A_PUT: u32 = 1; +pub const IPV6_FL_A_RENEW: u32 = 2; +pub const IPV6_FL_F_CREATE: u32 = 1; +pub const IPV6_FL_F_EXCL: u32 = 2; +pub const IPV6_FL_F_REFLECT: u32 = 4; +pub const IPV6_FL_F_REMOTE: u32 = 8; +pub const IPV6_FL_S_NONE: u32 = 0; +pub const IPV6_FL_S_EXCL: u32 = 1; +pub const IPV6_FL_S_PROCESS: u32 = 2; +pub const IPV6_FL_S_USER: u32 = 3; +pub const IPV6_FL_S_ANY: u32 = 255; +pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; +pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; +pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; +pub const IPV6_PRIORITY_FILLER: u32 = 256; +pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; +pub const IPV6_PRIORITY_RESERVED1: u32 = 768; +pub const IPV6_PRIORITY_BULK: u32 = 1024; +pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; +pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; +pub const IPV6_PRIORITY_CONTROL: u32 = 1792; +pub const IPV6_PRIORITY_8: u32 = 2048; +pub const IPV6_PRIORITY_9: u32 = 2304; +pub const IPV6_PRIORITY_10: u32 = 2560; +pub const IPV6_PRIORITY_11: u32 = 2816; +pub const IPV6_PRIORITY_12: u32 = 3072; +pub const IPV6_PRIORITY_13: u32 = 3328; +pub const IPV6_PRIORITY_14: u32 = 3584; +pub const IPV6_PRIORITY_15: u32 = 3840; +pub const IPPROTO_HOPOPTS: u32 = 0; +pub const IPPROTO_ROUTING: u32 = 43; +pub const IPPROTO_FRAGMENT: u32 = 44; +pub const IPPROTO_ICMPV6: u32 = 58; +pub const IPPROTO_NONE: u32 = 59; +pub const IPPROTO_DSTOPTS: u32 = 60; +pub const IPPROTO_MH: u32 = 135; +pub const IPV6_TLV_PAD1: u32 = 0; +pub const IPV6_TLV_PADN: u32 = 1; +pub const IPV6_TLV_ROUTERALERT: u32 = 5; +pub const IPV6_TLV_CALIPSO: u32 = 7; +pub const IPV6_TLV_IOAM: u32 = 49; +pub const IPV6_TLV_JUMBO: u32 = 194; +pub const IPV6_TLV_HAO: u32 = 201; +pub const IPV6_ADDRFORM: u32 = 1; +pub const IPV6_2292PKTINFO: u32 = 2; +pub const IPV6_2292HOPOPTS: u32 = 3; +pub const IPV6_2292DSTOPTS: u32 = 4; +pub const IPV6_2292RTHDR: u32 = 5; +pub const IPV6_2292PKTOPTIONS: u32 = 6; +pub const IPV6_CHECKSUM: u32 = 7; +pub const IPV6_2292HOPLIMIT: u32 = 8; +pub const IPV6_NEXTHOP: u32 = 9; +pub const IPV6_AUTHHDR: u32 = 10; +pub const IPV6_FLOWINFO: u32 = 11; +pub const IPV6_UNICAST_HOPS: u32 = 16; +pub const IPV6_MULTICAST_IF: u32 = 17; +pub const IPV6_MULTICAST_HOPS: u32 = 18; +pub const IPV6_MULTICAST_LOOP: u32 = 19; +pub const IPV6_ADD_MEMBERSHIP: u32 = 20; +pub const IPV6_DROP_MEMBERSHIP: u32 = 21; +pub const IPV6_ROUTER_ALERT: u32 = 22; +pub const IPV6_MTU_DISCOVER: u32 = 23; +pub const IPV6_MTU: u32 = 24; +pub const IPV6_RECVERR: u32 = 25; +pub const IPV6_V6ONLY: u32 = 26; +pub const IPV6_JOIN_ANYCAST: u32 = 27; +pub const IPV6_LEAVE_ANYCAST: u32 = 28; +pub const IPV6_MULTICAST_ALL: u32 = 29; +pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; +pub const IPV6_RECVERR_RFC4884: u32 = 31; +pub const IPV6_PMTUDISC_DONT: u32 = 0; +pub const IPV6_PMTUDISC_WANT: u32 = 1; +pub const IPV6_PMTUDISC_DO: u32 = 2; +pub const IPV6_PMTUDISC_PROBE: u32 = 3; +pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; +pub const IPV6_PMTUDISC_OMIT: u32 = 5; +pub const IPV6_FLOWLABEL_MGR: u32 = 32; +pub const IPV6_FLOWINFO_SEND: u32 = 33; +pub const IPV6_IPSEC_POLICY: u32 = 34; +pub const IPV6_XFRM_POLICY: u32 = 35; +pub const IPV6_HDRINCL: u32 = 36; +pub const IPV6_RECVPKTINFO: u32 = 49; +pub const IPV6_PKTINFO: u32 = 50; +pub const IPV6_RECVHOPLIMIT: u32 = 51; +pub const IPV6_HOPLIMIT: u32 = 52; +pub const IPV6_RECVHOPOPTS: u32 = 53; +pub const IPV6_HOPOPTS: u32 = 54; +pub const IPV6_RTHDRDSTOPTS: u32 = 55; +pub const IPV6_RECVRTHDR: u32 = 56; +pub const IPV6_RTHDR: u32 = 57; +pub const IPV6_RECVDSTOPTS: u32 = 58; +pub const IPV6_DSTOPTS: u32 = 59; +pub const IPV6_RECVPATHMTU: u32 = 60; +pub const IPV6_PATHMTU: u32 = 61; +pub const IPV6_DONTFRAG: u32 = 62; +pub const IPV6_RECVTCLASS: u32 = 66; +pub const IPV6_TCLASS: u32 = 67; +pub const IPV6_AUTOFLOWLABEL: u32 = 70; +pub const IPV6_ADDR_PREFERENCES: u32 = 72; +pub const IPV6_PREFER_SRC_TMP: u32 = 1; +pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; +pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; +pub const IPV6_PREFER_SRC_COA: u32 = 4; +pub const IPV6_PREFER_SRC_HOME: u32 = 1024; +pub const IPV6_PREFER_SRC_CGA: u32 = 8; +pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; +pub const IPV6_MINHOPCOUNT: u32 = 73; +pub const IPV6_ORIGDSTADDR: u32 = 74; +pub const IPV6_RECVORIGDSTADDR: u32 = 74; +pub const IPV6_TRANSPARENT: u32 = 75; +pub const IPV6_UNICAST_IF: u32 = 76; +pub const IPV6_RECVFRAGSIZE: u32 = 77; +pub const IPV6_FREEBIND: u32 = 78; +pub const IPV6_MIN_MTU: u32 = 1280; +pub const IPV6_SRCRT_STRICT: u32 = 1; +pub const IPV6_SRCRT_TYPE_0: u32 = 0; +pub const IPV6_SRCRT_TYPE_2: u32 = 2; +pub const IPV6_SRCRT_TYPE_3: u32 = 3; +pub const IPV6_SRCRT_TYPE_4: u32 = 4; +pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; +pub const SIOCGSTAMP_OLD: u32 = 35078; +pub const SIOCGSTAMPNS_OLD: u32 = 35079; +pub const SOL_SOCKET: u32 = 65535; +pub const SO_DEBUG: u32 = 1; +pub const SO_PASSCRED: u32 = 2; +pub const SO_REUSEADDR: u32 = 4; +pub const SO_KEEPALIVE: u32 = 8; +pub const SO_DONTROUTE: u32 = 16; +pub const SO_BROADCAST: u32 = 32; +pub const SO_PEERCRED: u32 = 64; +pub const SO_LINGER: u32 = 128; +pub const SO_OOBINLINE: u32 = 256; +pub const SO_REUSEPORT: u32 = 512; +pub const SO_BSDCOMPAT: u32 = 1024; +pub const SO_RCVLOWAT: u32 = 2048; +pub const SO_SNDLOWAT: u32 = 4096; +pub const SO_RCVTIMEO_OLD: u32 = 8192; +pub const SO_SNDTIMEO_OLD: u32 = 16384; +pub const SO_ACCEPTCONN: u32 = 32768; +pub const SO_SNDBUF: u32 = 4097; +pub const SO_RCVBUF: u32 = 4098; +pub const SO_SNDBUFFORCE: u32 = 4106; +pub const SO_RCVBUFFORCE: u32 = 4107; +pub const SO_ERROR: u32 = 4103; +pub const SO_TYPE: u32 = 4104; +pub const SO_PROTOCOL: u32 = 4136; +pub const SO_DOMAIN: u32 = 4137; +pub const SO_NO_CHECK: u32 = 11; +pub const SO_PRIORITY: u32 = 12; +pub const SO_BINDTODEVICE: u32 = 13; +pub const SO_ATTACH_FILTER: u32 = 26; +pub const SO_DETACH_FILTER: u32 = 27; +pub const SO_GET_FILTER: u32 = 26; +pub const SO_PEERNAME: u32 = 28; +pub const SO_PEERSEC: u32 = 30; +pub const SO_PASSSEC: u32 = 31; +pub const SO_MARK: u32 = 34; +pub const SO_RXQ_OVFL: u32 = 36; +pub const SO_WIFI_STATUS: u32 = 37; +pub const SCM_WIFI_STATUS: u32 = 37; +pub const SO_PEEK_OFF: u32 = 38; +pub const SO_NOFCS: u32 = 39; +pub const SO_LOCK_FILTER: u32 = 40; +pub const SO_SELECT_ERR_QUEUE: u32 = 41; +pub const SO_BUSY_POLL: u32 = 48; +pub const SO_MAX_PACING_RATE: u32 = 49; +pub const SO_BPF_EXTENSIONS: u32 = 50; +pub const SO_INCOMING_CPU: u32 = 51; +pub const SO_ATTACH_BPF: u32 = 52; +pub const SO_DETACH_BPF: u32 = 27; +pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 53; +pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 54; +pub const SO_CNX_ADVICE: u32 = 55; +pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 56; +pub const SO_MEMINFO: u32 = 57; +pub const SO_INCOMING_NAPI_ID: u32 = 58; +pub const SO_COOKIE: u32 = 59; +pub const SCM_TIMESTAMPING_PKTINFO: u32 = 60; +pub const SO_PEERGROUPS: u32 = 61; +pub const SO_ZEROCOPY: u32 = 62; +pub const SO_TXTIME: u32 = 63; +pub const SCM_TXTIME: u32 = 63; +pub const SO_BINDTOIFINDEX: u32 = 65; +pub const SO_SECURITY_AUTHENTICATION: u32 = 20481; +pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 20482; +pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 20484; +pub const SO_TIMESTAMP_OLD: u32 = 29; +pub const SO_TIMESTAMPNS_OLD: u32 = 33; +pub const SO_TIMESTAMPING_OLD: u32 = 35; +pub const SO_TIMESTAMP_NEW: u32 = 70; +pub const SO_TIMESTAMPNS_NEW: u32 = 66; +pub const SO_TIMESTAMPING_NEW: u32 = 67; +pub const SO_RCVTIMEO_NEW: u32 = 68; +pub const SO_SNDTIMEO_NEW: u32 = 69; +pub const SO_DETACH_REUSEPORT_BPF: u32 = 71; +pub const SO_PREFER_BUSY_POLL: u32 = 72; +pub const SO_BUSY_POLL_BUDGET: u32 = 73; +pub const SO_NETNS_COOKIE: u32 = 80; +pub const SO_BUF_LOCK: u32 = 81; +pub const SO_RESERVE_MEM: u32 = 82; +pub const SO_TXREHASH: u32 = 83; +pub const SO_RCVMARK: u32 = 84; +pub const SYS_SOCKET: u32 = 1; +pub const SYS_BIND: u32 = 2; +pub const SYS_CONNECT: u32 = 3; +pub const SYS_LISTEN: u32 = 4; +pub const SYS_ACCEPT: u32 = 5; +pub const SYS_GETSOCKNAME: u32 = 6; +pub const SYS_GETPEERNAME: u32 = 7; +pub const SYS_SOCKETPAIR: u32 = 8; +pub const SYS_SEND: u32 = 9; +pub const SYS_RECV: u32 = 10; +pub const SYS_SENDTO: u32 = 11; +pub const SYS_RECVFROM: u32 = 12; +pub const SYS_SHUTDOWN: u32 = 13; +pub const SYS_SETSOCKOPT: u32 = 14; +pub const SYS_GETSOCKOPT: u32 = 15; +pub const SYS_SENDMSG: u32 = 16; +pub const SYS_RECVMSG: u32 = 17; +pub const SYS_ACCEPT4: u32 = 18; +pub const SYS_RECVMMSG: u32 = 19; +pub const SYS_SENDMMSG: u32 = 20; +pub const __SO_ACCEPTCON: u32 = 65536; +pub const TCP_MSS_DEFAULT: u32 = 536; +pub const TCP_MSS_DESIRED: u32 = 1220; +pub const TCP_NODELAY: u32 = 1; +pub const TCP_MAXSEG: u32 = 2; +pub const TCP_CORK: u32 = 3; +pub const TCP_KEEPIDLE: u32 = 4; +pub const TCP_KEEPINTVL: u32 = 5; +pub const TCP_KEEPCNT: u32 = 6; +pub const TCP_SYNCNT: u32 = 7; +pub const TCP_LINGER2: u32 = 8; +pub const TCP_DEFER_ACCEPT: u32 = 9; +pub const TCP_WINDOW_CLAMP: u32 = 10; +pub const TCP_INFO: u32 = 11; +pub const TCP_QUICKACK: u32 = 12; +pub const TCP_CONGESTION: u32 = 13; +pub const TCP_MD5SIG: u32 = 14; +pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; +pub const TCP_THIN_DUPACK: u32 = 17; +pub const TCP_USER_TIMEOUT: u32 = 18; +pub const TCP_REPAIR: u32 = 19; +pub const TCP_REPAIR_QUEUE: u32 = 20; +pub const TCP_QUEUE_SEQ: u32 = 21; +pub const TCP_REPAIR_OPTIONS: u32 = 22; +pub const TCP_FASTOPEN: u32 = 23; +pub const TCP_TIMESTAMP: u32 = 24; +pub const TCP_NOTSENT_LOWAT: u32 = 25; +pub const TCP_CC_INFO: u32 = 26; +pub const TCP_SAVE_SYN: u32 = 27; +pub const TCP_SAVED_SYN: u32 = 28; +pub const TCP_REPAIR_WINDOW: u32 = 29; +pub const TCP_FASTOPEN_CONNECT: u32 = 30; +pub const TCP_ULP: u32 = 31; +pub const TCP_MD5SIG_EXT: u32 = 32; +pub const TCP_FASTOPEN_KEY: u32 = 33; +pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; +pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; +pub const TCP_INQ: u32 = 36; +pub const TCP_CM_INQ: u32 = 36; +pub const TCP_TX_DELAY: u32 = 37; +pub const TCP_REPAIR_ON: u32 = 1; +pub const TCP_REPAIR_OFF: u32 = 0; +pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; +pub const TCPI_OPT_TIMESTAMPS: u32 = 1; +pub const TCPI_OPT_SACK: u32 = 2; +pub const TCPI_OPT_WSCALE: u32 = 4; +pub const TCPI_OPT_ECN: u32 = 8; +pub const TCPI_OPT_ECN_SEEN: u32 = 16; +pub const TCPI_OPT_SYN_DATA: u32 = 32; +pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; +pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; +pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; +pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; +pub const UNIX_PATH_MAX: u32 = 108; +pub const SHUT_RD: u32 = 0; +pub const SHUT_WR: u32 = 1; +pub const SHUT_RDWR: u32 = 2; +pub const SOCK_STREAM: u32 = 1; +pub const SOCK_DGRAM: u32 = 2; +pub const SOCK_RAW: u32 = 3; +pub const SOCK_RDM: u32 = 4; +pub const SOCK_SEQPACKET: u32 = 5; +pub const MSG_DONTWAIT: u32 = 64; +pub const AF_UNSPEC: u32 = 0; +pub const AF_UNIX: u32 = 1; +pub const AF_INET: u32 = 2; +pub const AF_AX25: u32 = 3; +pub const AF_IPX: u32 = 4; +pub const AF_APPLETALK: u32 = 5; +pub const AF_NETROM: u32 = 6; +pub const AF_BRIDGE: u32 = 7; +pub const AF_ATMPVC: u32 = 8; +pub const AF_X25: u32 = 9; +pub const AF_INET6: u32 = 10; +pub const AF_ROSE: u32 = 11; +pub const AF_DECnet: u32 = 12; +pub const AF_NETBEUI: u32 = 13; +pub const AF_SECURITY: u32 = 14; +pub const AF_KEY: u32 = 15; +pub const AF_NETLINK: u32 = 16; +pub const AF_PACKET: u32 = 17; +pub const AF_ASH: u32 = 18; +pub const AF_ECONET: u32 = 19; +pub const AF_ATMSVC: u32 = 20; +pub const AF_RDS: u32 = 21; +pub const AF_SNA: u32 = 22; +pub const AF_IRDA: u32 = 23; +pub const AF_PPPOX: u32 = 24; +pub const AF_WANPIPE: u32 = 25; +pub const AF_LLC: u32 = 26; +pub const AF_CAN: u32 = 29; +pub const AF_TIPC: u32 = 30; +pub const AF_BLUETOOTH: u32 = 31; +pub const AF_IUCV: u32 = 32; +pub const AF_RXRPC: u32 = 33; +pub const AF_ISDN: u32 = 34; +pub const AF_PHONET: u32 = 35; +pub const AF_IEEE802154: u32 = 36; +pub const AF_MAX: u32 = 37; +pub const MSG_OOB: u32 = 1; +pub const MSG_PEEK: u32 = 2; +pub const MSG_DONTROUTE: u32 = 4; +pub const MSG_CTRUNC: u32 = 8; +pub const MSG_PROBE: u32 = 16; +pub const MSG_TRUNC: u32 = 32; +pub const MSG_EOR: u32 = 128; +pub const MSG_WAITALL: u32 = 256; +pub const MSG_FIN: u32 = 512; +pub const MSG_SYN: u32 = 1024; +pub const MSG_CONFIRM: u32 = 2048; +pub const MSG_RST: u32 = 4096; +pub const MSG_ERRQUEUE: u32 = 8192; +pub const MSG_NOSIGNAL: u32 = 16384; +pub const MSG_MORE: u32 = 32768; +pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; +pub const SCM_RIGHTS: u32 = 1; +pub const SCM_CREDENTIALS: u32 = 2; +pub const SCM_SECURITY: u32 = 3; +pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; +pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; +pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; +pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; +pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; +pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; +pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; +pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; +pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; +pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; +pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; +pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; +pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; +pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; +pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; +pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; +pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; +pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; +pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; +pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; +pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; +pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; +pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; +pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; +pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; +pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; +pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; +pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; +pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; +pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; +pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; +pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; +pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; +pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; +pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; +pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; +pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; +pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; +pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; +pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; +pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; +pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; +pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; +pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; +pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; +pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; +pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; +pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; +pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; +pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; +pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; +pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; +pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; +pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; +pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; +pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; +pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; +pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; +pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; +pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; +pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; +pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; +pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; +pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; +pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; +pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; +pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; +pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; +pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; +pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; +pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; +pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; +pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; +pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; +pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; +pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; +pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; +pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; +pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; +pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; +pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; +pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; +pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; +pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; +pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; +pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; +pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; +pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; +pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; +pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; +pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; +pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; +pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; +pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; +pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; +pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; +pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; +pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; +pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; +pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; +pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; +pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; +pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; +pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; +pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; +pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; +pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; +pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; +pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; +pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; +pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; +pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; +pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; +pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; +pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; +pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; +pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; +pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; +pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; +pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; +pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; +pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; +pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; +pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; +pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; +pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; +pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; +pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; +pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; +pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; +pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; +pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; +pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; +pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; +pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; +pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; +pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; +pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; +pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; +pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; +pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; +pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; +pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; +pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; +pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; +pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; +pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; +pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; +pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; +pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; +pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; +pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IPPROTO_IP = 0, +IPPROTO_ICMP = 1, +IPPROTO_IGMP = 2, +IPPROTO_IPIP = 4, +IPPROTO_TCP = 6, +IPPROTO_EGP = 8, +IPPROTO_PUP = 12, +IPPROTO_UDP = 17, +IPPROTO_IDP = 22, +IPPROTO_TP = 29, +IPPROTO_DCCP = 33, +IPPROTO_IPV6 = 41, +IPPROTO_RSVP = 46, +IPPROTO_GRE = 47, +IPPROTO_ESP = 50, +IPPROTO_AH = 51, +IPPROTO_MTP = 92, +IPPROTO_BEETPH = 94, +IPPROTO_ENCAP = 98, +IPPROTO_PIM = 103, +IPPROTO_COMP = 108, +IPPROTO_L2TP = 115, +IPPROTO_SCTP = 132, +IPPROTO_UDPLITE = 136, +IPPROTO_MPLS = 137, +IPPROTO_ETHERNET = 143, +IPPROTO_RAW = 255, +IPPROTO_MPTCP = 262, +IPPROTO_MAX = 263, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IPV4_DEVCONF_FORWARDING = 1, +IPV4_DEVCONF_MC_FORWARDING = 2, +IPV4_DEVCONF_PROXY_ARP = 3, +IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, +IPV4_DEVCONF_SECURE_REDIRECTS = 5, +IPV4_DEVCONF_SEND_REDIRECTS = 6, +IPV4_DEVCONF_SHARED_MEDIA = 7, +IPV4_DEVCONF_RP_FILTER = 8, +IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, +IPV4_DEVCONF_BOOTP_RELAY = 10, +IPV4_DEVCONF_LOG_MARTIANS = 11, +IPV4_DEVCONF_TAG = 12, +IPV4_DEVCONF_ARPFILTER = 13, +IPV4_DEVCONF_MEDIUM_ID = 14, +IPV4_DEVCONF_NOXFRM = 15, +IPV4_DEVCONF_NOPOLICY = 16, +IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, +IPV4_DEVCONF_ARP_ANNOUNCE = 18, +IPV4_DEVCONF_ARP_IGNORE = 19, +IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, +IPV4_DEVCONF_ARP_ACCEPT = 21, +IPV4_DEVCONF_ARP_NOTIFY = 22, +IPV4_DEVCONF_ACCEPT_LOCAL = 23, +IPV4_DEVCONF_SRC_VMARK = 24, +IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, +IPV4_DEVCONF_ROUTE_LOCALNET = 26, +IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, +IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, +IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, +IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, +IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, +IPV4_DEVCONF_BC_FORWARDING = 32, +IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, +__IPV4_DEVCONF_MAX = 34, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +DEVCONF_FORWARDING = 0, +DEVCONF_HOPLIMIT = 1, +DEVCONF_MTU6 = 2, +DEVCONF_ACCEPT_RA = 3, +DEVCONF_ACCEPT_REDIRECTS = 4, +DEVCONF_AUTOCONF = 5, +DEVCONF_DAD_TRANSMITS = 6, +DEVCONF_RTR_SOLICITS = 7, +DEVCONF_RTR_SOLICIT_INTERVAL = 8, +DEVCONF_RTR_SOLICIT_DELAY = 9, +DEVCONF_USE_TEMPADDR = 10, +DEVCONF_TEMP_VALID_LFT = 11, +DEVCONF_TEMP_PREFERED_LFT = 12, +DEVCONF_REGEN_MAX_RETRY = 13, +DEVCONF_MAX_DESYNC_FACTOR = 14, +DEVCONF_MAX_ADDRESSES = 15, +DEVCONF_FORCE_MLD_VERSION = 16, +DEVCONF_ACCEPT_RA_DEFRTR = 17, +DEVCONF_ACCEPT_RA_PINFO = 18, +DEVCONF_ACCEPT_RA_RTR_PREF = 19, +DEVCONF_RTR_PROBE_INTERVAL = 20, +DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, +DEVCONF_PROXY_NDP = 22, +DEVCONF_OPTIMISTIC_DAD = 23, +DEVCONF_ACCEPT_SOURCE_ROUTE = 24, +DEVCONF_MC_FORWARDING = 25, +DEVCONF_DISABLE_IPV6 = 26, +DEVCONF_ACCEPT_DAD = 27, +DEVCONF_FORCE_TLLAO = 28, +DEVCONF_NDISC_NOTIFY = 29, +DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, +DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, +DEVCONF_SUPPRESS_FRAG_NDISC = 32, +DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, +DEVCONF_USE_OPTIMISTIC = 34, +DEVCONF_ACCEPT_RA_MTU = 35, +DEVCONF_STABLE_SECRET = 36, +DEVCONF_USE_OIF_ADDRS_ONLY = 37, +DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, +DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, +DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, +DEVCONF_DROP_UNSOLICITED_NA = 41, +DEVCONF_KEEP_ADDR_ON_DOWN = 42, +DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, +DEVCONF_SEG6_ENABLED = 44, +DEVCONF_SEG6_REQUIRE_HMAC = 45, +DEVCONF_ENHANCED_DAD = 46, +DEVCONF_ADDR_GEN_MODE = 47, +DEVCONF_DISABLE_POLICY = 48, +DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, +DEVCONF_NDISC_TCLASS = 50, +DEVCONF_RPL_SEG_ENABLED = 51, +DEVCONF_RA_DEFRTR_METRIC = 52, +DEVCONF_IOAM6_ENABLED = 53, +DEVCONF_IOAM6_ID = 54, +DEVCONF_IOAM6_ID_WIDE = 55, +DEVCONF_NDISC_EVICT_NOCARRIER = 56, +DEVCONF_ACCEPT_UNTRACKED_NA = 57, +DEVCONF_MAX = 58, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum socket_state { +SS_FREE = 0, +SS_UNCONNECTED = 1, +SS_CONNECTING = 2, +SS_CONNECTED = 3, +SS_DISCONNECTING = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +TCP_FLAG_CWR = 8388608, +TCP_FLAG_ECE = 4194304, +TCP_FLAG_URG = 2097152, +TCP_FLAG_ACK = 1048576, +TCP_FLAG_PSH = 524288, +TCP_FLAG_RST = 262144, +TCP_FLAG_SYN = 131072, +TCP_FLAG_FIN = 65536, +TCP_RESERVED_BITS = 251658240, +TCP_DATA_OFFSET = 4026531840, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +TCP_NO_QUEUE = 0, +TCP_RECV_QUEUE = 1, +TCP_SEND_QUEUE = 2, +TCP_QUEUES_NR = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_fastopen_client_fail { +TFO_STATUS_UNSPEC = 0, +TFO_COOKIE_UNAVAILABLE = 1, +TFO_DATA_NOT_ACKED = 2, +TFO_SYN_RETRANSMITTED = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_ca_state { +TCP_CA_Open = 0, +TCP_CA_Disorder = 1, +TCP_CA_CWR = 2, +TCP_CA_Recovery = 3, +TCP_CA_Loss = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +TCP_NLA_PAD = 0, +TCP_NLA_BUSY = 1, +TCP_NLA_RWND_LIMITED = 2, +TCP_NLA_SNDBUF_LIMITED = 3, +TCP_NLA_DATA_SEGS_OUT = 4, +TCP_NLA_TOTAL_RETRANS = 5, +TCP_NLA_PACING_RATE = 6, +TCP_NLA_DELIVERY_RATE = 7, +TCP_NLA_SND_CWND = 8, +TCP_NLA_REORDERING = 9, +TCP_NLA_MIN_RTT = 10, +TCP_NLA_RECUR_RETRANS = 11, +TCP_NLA_DELIVERY_RATE_APP_LMT = 12, +TCP_NLA_SNDQ_SIZE = 13, +TCP_NLA_CA_STATE = 14, +TCP_NLA_SND_SSTHRESH = 15, +TCP_NLA_DELIVERED = 16, +TCP_NLA_DELIVERED_CE = 17, +TCP_NLA_BYTES_SENT = 18, +TCP_NLA_BYTES_RETRANS = 19, +TCP_NLA_DSACK_DUPS = 20, +TCP_NLA_REORD_SEEN = 21, +TCP_NLA_SRTT = 22, +TCP_NLA_TIMEOUT_REHASH = 23, +TCP_NLA_BYTES_NOTSENT = 24, +TCP_NLA_EDT = 25, +TCP_NLA_TTL = 26, +TCP_NLA_REHASH = 27, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union iphdr__bindgen_ty_1 { +pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union in6_addr__bindgen_ty_1 { +pub u6_addr8: [__u8; 16usize], +pub u6_addr16: [__be16; 8usize], +pub u6_addr32: [__be32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ipv6hdr__bindgen_ty_1 { +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union tcp_word_hdr { +pub hdr: tcphdr, +pub words: [__be32; 5usize], +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} +impl iphdr { +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn ihl(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_ihl(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; +ihl as u64 +}); +__bindgen_bitfield_unit +} +} +impl ipv6hdr { +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn priority(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_priority(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let priority: u8 = unsafe { ::core::mem::transmute(priority) }; +priority as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcphdr { +#[inline] +pub fn doff(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } +} +#[inline] +pub fn set_doff(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn res1(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } +} +#[inline] +pub fn set_res1(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn cwr(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } +} +#[inline] +pub fn set_cwr(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn ece(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } +} +#[inline] +pub fn set_ece(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 1u8, val as u64) +} +} +#[inline] +pub fn urg(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } +} +#[inline] +pub fn set_urg(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(10usize, 1u8, val as u64) +} +} +#[inline] +pub fn ack(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } +} +#[inline] +pub fn set_ack(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(11usize, 1u8, val as u64) +} +} +#[inline] +pub fn psh(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } +} +#[inline] +pub fn set_psh(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(12usize, 1u8, val as u64) +} +} +#[inline] +pub fn rst(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } +} +#[inline] +pub fn set_rst(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(13usize, 1u8, val as u64) +} +} +#[inline] +pub fn syn(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } +} +#[inline] +pub fn set_syn(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(14usize, 1u8, val as u64) +} +} +#[inline] +pub fn fin(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +} +#[inline] +pub fn set_fin(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(15usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let doff: u16 = unsafe { ::core::mem::transmute(doff) }; +doff as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let res1: u16 = unsafe { ::core::mem::transmute(res1) }; +res1 as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; +cwr as u64 +}); +__bindgen_bitfield_unit.set(9usize, 1u8, { +let ece: u16 = unsafe { ::core::mem::transmute(ece) }; +ece as u64 +}); +__bindgen_bitfield_unit.set(10usize, 1u8, { +let urg: u16 = unsafe { ::core::mem::transmute(urg) }; +urg as u64 +}); +__bindgen_bitfield_unit.set(11usize, 1u8, { +let ack: u16 = unsafe { ::core::mem::transmute(ack) }; +ack as u64 +}); +__bindgen_bitfield_unit.set(12usize, 1u8, { +let psh: u16 = unsafe { ::core::mem::transmute(psh) }; +psh as u64 +}); +__bindgen_bitfield_unit.set(13usize, 1u8, { +let rst: u16 = unsafe { ::core::mem::transmute(rst) }; +rst as u64 +}); +__bindgen_bitfield_unit.set(14usize, 1u8, { +let syn: u16 = unsafe { ::core::mem::transmute(syn) }; +syn as u64 +}); +__bindgen_bitfield_unit.set(15usize, 1u8, { +let fin: u16 = unsafe { ::core::mem::transmute(fin) }; +fin as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcp_info { +#[inline] +pub fn tcpi_snd_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_rcv_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +} +#[inline] +pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn tcpi_fastopen_client_fail(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +} +#[inline] +pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 2u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; +tcpi_snd_wscale as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; +tcpi_rcv_wscale as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; +tcpi_delivery_rate_app_limited as u64 +}); +__bindgen_bitfield_unit.set(9usize, 2u8, { +let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; +tcpi_fastopen_client_fail as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/prctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/prctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/prctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,221 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_long; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prctl_mm_map { +pub start_code: __u64, +pub end_code: __u64, +pub start_data: __u64, +pub end_data: __u64, +pub start_brk: __u64, +pub brk: __u64, +pub start_stack: __u64, +pub arg_start: __u64, +pub arg_end: __u64, +pub env_start: __u64, +pub env_end: __u64, +pub auxv: *mut __u64, +pub auxv_size: __u32, +pub exe_fd: __u32, +} +pub const PR_SET_PDEATHSIG: u32 = 1; +pub const PR_GET_PDEATHSIG: u32 = 2; +pub const PR_GET_DUMPABLE: u32 = 3; +pub const PR_SET_DUMPABLE: u32 = 4; +pub const PR_GET_UNALIGN: u32 = 5; +pub const PR_SET_UNALIGN: u32 = 6; +pub const PR_UNALIGN_NOPRINT: u32 = 1; +pub const PR_UNALIGN_SIGBUS: u32 = 2; +pub const PR_GET_KEEPCAPS: u32 = 7; +pub const PR_SET_KEEPCAPS: u32 = 8; +pub const PR_GET_FPEMU: u32 = 9; +pub const PR_SET_FPEMU: u32 = 10; +pub const PR_FPEMU_NOPRINT: u32 = 1; +pub const PR_FPEMU_SIGFPE: u32 = 2; +pub const PR_GET_FPEXC: u32 = 11; +pub const PR_SET_FPEXC: u32 = 12; +pub const PR_FP_EXC_SW_ENABLE: u32 = 128; +pub const PR_FP_EXC_DIV: u32 = 65536; +pub const PR_FP_EXC_OVF: u32 = 131072; +pub const PR_FP_EXC_UND: u32 = 262144; +pub const PR_FP_EXC_RES: u32 = 524288; +pub const PR_FP_EXC_INV: u32 = 1048576; +pub const PR_FP_EXC_DISABLED: u32 = 0; +pub const PR_FP_EXC_NONRECOV: u32 = 1; +pub const PR_FP_EXC_ASYNC: u32 = 2; +pub const PR_FP_EXC_PRECISE: u32 = 3; +pub const PR_GET_TIMING: u32 = 13; +pub const PR_SET_TIMING: u32 = 14; +pub const PR_TIMING_STATISTICAL: u32 = 0; +pub const PR_TIMING_TIMESTAMP: u32 = 1; +pub const PR_SET_NAME: u32 = 15; +pub const PR_GET_NAME: u32 = 16; +pub const PR_GET_ENDIAN: u32 = 19; +pub const PR_SET_ENDIAN: u32 = 20; +pub const PR_ENDIAN_BIG: u32 = 0; +pub const PR_ENDIAN_LITTLE: u32 = 1; +pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; +pub const PR_GET_SECCOMP: u32 = 21; +pub const PR_SET_SECCOMP: u32 = 22; +pub const PR_CAPBSET_READ: u32 = 23; +pub const PR_CAPBSET_DROP: u32 = 24; +pub const PR_GET_TSC: u32 = 25; +pub const PR_SET_TSC: u32 = 26; +pub const PR_TSC_ENABLE: u32 = 1; +pub const PR_TSC_SIGSEGV: u32 = 2; +pub const PR_GET_SECUREBITS: u32 = 27; +pub const PR_SET_SECUREBITS: u32 = 28; +pub const PR_SET_TIMERSLACK: u32 = 29; +pub const PR_GET_TIMERSLACK: u32 = 30; +pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; +pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; +pub const PR_MCE_KILL: u32 = 33; +pub const PR_MCE_KILL_CLEAR: u32 = 0; +pub const PR_MCE_KILL_SET: u32 = 1; +pub const PR_MCE_KILL_LATE: u32 = 0; +pub const PR_MCE_KILL_EARLY: u32 = 1; +pub const PR_MCE_KILL_DEFAULT: u32 = 2; +pub const PR_MCE_KILL_GET: u32 = 34; +pub const PR_SET_MM: u32 = 35; +pub const PR_SET_MM_START_CODE: u32 = 1; +pub const PR_SET_MM_END_CODE: u32 = 2; +pub const PR_SET_MM_START_DATA: u32 = 3; +pub const PR_SET_MM_END_DATA: u32 = 4; +pub const PR_SET_MM_START_STACK: u32 = 5; +pub const PR_SET_MM_START_BRK: u32 = 6; +pub const PR_SET_MM_BRK: u32 = 7; +pub const PR_SET_MM_ARG_START: u32 = 8; +pub const PR_SET_MM_ARG_END: u32 = 9; +pub const PR_SET_MM_ENV_START: u32 = 10; +pub const PR_SET_MM_ENV_END: u32 = 11; +pub const PR_SET_MM_AUXV: u32 = 12; +pub const PR_SET_MM_EXE_FILE: u32 = 13; +pub const PR_SET_MM_MAP: u32 = 14; +pub const PR_SET_MM_MAP_SIZE: u32 = 15; +pub const PR_SET_PTRACER: u32 = 1499557217; +pub const PR_SET_CHILD_SUBREAPER: u32 = 36; +pub const PR_GET_CHILD_SUBREAPER: u32 = 37; +pub const PR_SET_NO_NEW_PRIVS: u32 = 38; +pub const PR_GET_NO_NEW_PRIVS: u32 = 39; +pub const PR_GET_TID_ADDRESS: u32 = 40; +pub const PR_SET_THP_DISABLE: u32 = 41; +pub const PR_GET_THP_DISABLE: u32 = 42; +pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; +pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; +pub const PR_SET_FP_MODE: u32 = 45; +pub const PR_GET_FP_MODE: u32 = 46; +pub const PR_FP_MODE_FR: u32 = 1; +pub const PR_FP_MODE_FRE: u32 = 2; +pub const PR_CAP_AMBIENT: u32 = 47; +pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; +pub const PR_CAP_AMBIENT_RAISE: u32 = 2; +pub const PR_CAP_AMBIENT_LOWER: u32 = 3; +pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; +pub const PR_SVE_SET_VL: u32 = 50; +pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SVE_GET_VL: u32 = 51; +pub const PR_SVE_VL_LEN_MASK: u32 = 65535; +pub const PR_SVE_VL_INHERIT: u32 = 131072; +pub const PR_GET_SPECULATION_CTRL: u32 = 52; +pub const PR_SET_SPECULATION_CTRL: u32 = 53; +pub const PR_SPEC_STORE_BYPASS: u32 = 0; +pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; +pub const PR_SPEC_L1D_FLUSH: u32 = 2; +pub const PR_SPEC_NOT_AFFECTED: u32 = 0; +pub const PR_SPEC_PRCTL: u32 = 1; +pub const PR_SPEC_ENABLE: u32 = 2; +pub const PR_SPEC_DISABLE: u32 = 4; +pub const PR_SPEC_FORCE_DISABLE: u32 = 8; +pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; +pub const PR_PAC_RESET_KEYS: u32 = 54; +pub const PR_PAC_APIAKEY: u32 = 1; +pub const PR_PAC_APIBKEY: u32 = 2; +pub const PR_PAC_APDAKEY: u32 = 4; +pub const PR_PAC_APDBKEY: u32 = 8; +pub const PR_PAC_APGAKEY: u32 = 16; +pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; +pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; +pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; +pub const PR_MTE_TCF_NONE: u32 = 0; +pub const PR_MTE_TCF_SYNC: u32 = 2; +pub const PR_MTE_TCF_ASYNC: u32 = 4; +pub const PR_MTE_TCF_MASK: u32 = 6; +pub const PR_MTE_TAG_SHIFT: u32 = 3; +pub const PR_MTE_TAG_MASK: u32 = 524280; +pub const PR_MTE_TCF_SHIFT: u32 = 1; +pub const PR_SET_IO_FLUSHER: u32 = 57; +pub const PR_GET_IO_FLUSHER: u32 = 58; +pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; +pub const PR_SYS_DISPATCH_OFF: u32 = 0; +pub const PR_SYS_DISPATCH_ON: u32 = 1; +pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; +pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; +pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; +pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; +pub const PR_SCHED_CORE: u32 = 62; +pub const PR_SCHED_CORE_GET: u32 = 0; +pub const PR_SCHED_CORE_CREATE: u32 = 1; +pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; +pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; +pub const PR_SCHED_CORE_MAX: u32 = 4; +pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; +pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; +pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; +pub const PR_SME_SET_VL: u32 = 63; +pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SME_GET_VL: u32 = 64; +pub const PR_SME_VL_LEN_MASK: u32 = 65535; +pub const PR_SME_VL_INHERIT: u32 = 131072; +pub const PR_SET_MDWE: u32 = 65; +pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; +pub const PR_GET_MDWE: u32 = 66; +pub const PR_SET_VMA: u32 = 1398164801; +pub const PR_SET_VMA_ANON_NAME: u32 = 0; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/system.rs temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/system.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/sparc/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,99 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_long; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_daddr_t = crate::ctypes::c_long; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sysinfo { +pub uptime: __kernel_long_t, +pub loads: [__kernel_ulong_t; 3usize], +pub totalram: __kernel_ulong_t, +pub freeram: __kernel_ulong_t, +pub sharedram: __kernel_ulong_t, +pub bufferram: __kernel_ulong_t, +pub totalswap: __kernel_ulong_t, +pub freeswap: __kernel_ulong_t, +pub procs: __u16, +pub pad: __u16, +pub totalhigh: __kernel_ulong_t, +pub freehigh: __kernel_ulong_t, +pub mem_unit: __u32, +pub _f: [crate::ctypes::c_char; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct oldold_utsname { +pub sysname: [crate::ctypes::c_char; 9usize], +pub nodename: [crate::ctypes::c_char; 9usize], +pub release: [crate::ctypes::c_char; 9usize], +pub version: [crate::ctypes::c_char; 9usize], +pub machine: [crate::ctypes::c_char; 9usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct old_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct new_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +pub domainname: [crate::ctypes::c_char; 65usize], +} +pub const SI_LOAD_SHIFT: u32 = 16; +pub const __OLD_UTS_LEN: u32 = 8; +pub const __NEW_UTS_LEN: u32 = 64; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/errno.rs temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/errno.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/errno.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const EPERM: u32 = 1; pub const ENOENT: u32 = 2; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/general.rs temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/general.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/general.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/general.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,3073 +1,224 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_sighandler_t = ::core::option::Option; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_suseconds_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type cap_user_header_t = *mut __user_cap_header_struct; +pub type cap_user_data_t = *mut __user_cap_data_struct; +pub type __kernel_rwf_t = crate::ctypes::c_int; +pub type sigset_t = crate::ctypes::c_ulong; +pub type __signalfn_t = ::core::option::Option; +pub type __sighandler_t = __signalfn_t; +pub type __restorefn_t = ::core::option::Option; +pub type __sigrestore_t = __restorefn_t; +pub type stack_t = sigaltstack; +pub type sigval_t = sigval; +pub type siginfo_t = siginfo; +pub type sigevent_t = sigevent; +pub type cc_t = crate::ctypes::c_uchar; +pub type speed_t = crate::ctypes::c_uint; +pub type tcflag_t = crate::ctypes::c_uint; +pub type __fsword_t = __kernel_long_t; #[repr(C)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct __BindgenBitfieldUnit { storage: Storage, } -impl __BindgenBitfieldUnit { -#[inline] -pub const fn new(storage: Storage) -> Self { -Self { storage } -} -} -impl __BindgenBitfieldUnit -where -Storage: AsRef<[u8]> + AsMut<[u8]>, -{ -#[inline] -pub fn get_bit(&self, index: usize) -> bool { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = self.storage.as_ref()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -byte & mask == mask -} -#[inline] -pub fn set_bit(&mut self, index: usize, val: bool) { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = &mut self.storage.as_mut()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -if val { -*byte |= mask; -} else { -*byte &= !mask; -} -} -#[inline] -pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -let mut val = 0; -for i in 0..(bit_width as usize) { -if self.get_bit(i + bit_offset) { -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -val |= 1 << index; -} -} -val -} -#[inline] -pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -for i in 0..(bit_width as usize) { -let mask = 1 << i; -let val_bit_is_set = val & mask == mask; -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -self.set_bit(index + bit_offset, val_bit_is_set); -} -} -} #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fd_set { +pub fds_bits: [crate::ctypes::c_ulong; 16usize], } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_suseconds_t, } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fsid_t { +pub val: [crate::ctypes::c_int; 2usize], } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_header_struct { +pub version: __u32, +pub pid: crate::ctypes::c_int, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_data_struct { +pub effective: __u32, +pub permitted: __u32, +pub inheritable: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data { +pub magic_etc: __le32, +pub data: [vfs_cap_data__bindgen_ty_1; 2usize], } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data { +pub magic_etc: __le32, +pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], +pub rootid: __le32, } #[repr(C)] -pub struct __BindgenUnionField(::core::marker::PhantomData); -impl __BindgenUnionField { -#[inline] -pub const fn new() -> Self { -__BindgenUnionField(::core::marker::PhantomData) +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } -#[inline] -pub unsafe fn as_ref(&self) -> &T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct f_owner_ex { +pub type_: crate::ctypes::c_int, +pub pid: __kernel_pid_t, } -#[inline] -pub unsafe fn as_mut(&mut self) -> &mut T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_off_t, +pub l_len: __kernel_off_t, +pub l_pid: __kernel_pid_t, +pub __unused: crate::ctypes::c_short, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock64 { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_loff_t, +pub l_len: __kernel_loff_t, +pub l_pid: __kernel_pid_t, +pub __unused: crate::ctypes::c_short, } -impl ::core::default::Default for __BindgenUnionField { -#[inline] -fn default() -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct open_how { +pub flags: __u64, +pub mode: __u64, +pub resolve: __u64, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct epoll_event { +pub events: __poll_t, +pub data: __u64, } -impl ::core::clone::Clone for __BindgenUnionField { -#[inline] -fn clone(&self) -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, } -impl ::core::marker::Copy for __BindgenUnionField {} -impl ::core::fmt::Debug for __BindgenUnionField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__BindgenUnionField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, } -impl ::core::hash::Hash for __BindgenUnionField { -fn hash(&self, _state: &mut H) {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, } -impl ::core::cmp::PartialEq for __BindgenUnionField { -fn eq(&self, _other: &__BindgenUnionField) -> bool { -true +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, } -} -impl ::core::cmp::Eq for __BindgenUnionField {} -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const AT_SYSINFO_EHDR: u32 = 33; -pub const AT_ADI_BLKSZ: u32 = 48; -pub const AT_ADI_NBITS: u32 = 49; -pub const AT_ADI_UEONADI: u32 = 50; -pub const AT_VECTOR_SIZE_ARCH: u32 = 4; -pub const AT_NULL: u32 = 0; -pub const AT_IGNORE: u32 = 1; -pub const AT_EXECFD: u32 = 2; -pub const AT_PHDR: u32 = 3; -pub const AT_PHENT: u32 = 4; -pub const AT_PHNUM: u32 = 5; -pub const AT_PAGESZ: u32 = 6; -pub const AT_BASE: u32 = 7; -pub const AT_FLAGS: u32 = 8; -pub const AT_ENTRY: u32 = 9; -pub const AT_NOTELF: u32 = 10; -pub const AT_UID: u32 = 11; -pub const AT_EUID: u32 = 12; -pub const AT_GID: u32 = 13; -pub const AT_EGID: u32 = 14; -pub const AT_PLATFORM: u32 = 15; -pub const AT_HWCAP: u32 = 16; -pub const AT_CLKTCK: u32 = 17; -pub const AT_SECURE: u32 = 23; -pub const AT_BASE_PLATFORM: u32 = 24; -pub const AT_RANDOM: u32 = 25; -pub const AT_HWCAP2: u32 = 26; -pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; -pub const AT_RSEQ_ALIGN: u32 = 28; -pub const AT_EXECFN: u32 = 31; -pub const AT_MINSIGSTKSZ: u32 = 51; -pub const __BITS_PER_LONG: u32 = 64; -pub const __FD_SETSIZE: u32 = 1024; -pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; -pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; -pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; -pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; -pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; -pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; -pub const VFS_CAP_REVISION_SHIFT: u32 = 24; -pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; -pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; -pub const VFS_CAP_REVISION_1: u32 = 16777216; -pub const VFS_CAP_U32_1: u32 = 1; -pub const VFS_CAP_REVISION_2: u32 = 33554432; -pub const VFS_CAP_U32_2: u32 = 2; -pub const VFS_CAP_REVISION_3: u32 = 50331648; -pub const VFS_CAP_U32_3: u32 = 2; -pub const VFS_CAP_U32: u32 = 2; -pub const VFS_CAP_REVISION: u32 = 50331648; -pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S: u32 = 1; -pub const CAP_CHOWN: u32 = 0; -pub const CAP_DAC_OVERRIDE: u32 = 1; -pub const CAP_DAC_READ_SEARCH: u32 = 2; -pub const CAP_FOWNER: u32 = 3; -pub const CAP_FSETID: u32 = 4; -pub const CAP_KILL: u32 = 5; -pub const CAP_SETGID: u32 = 6; -pub const CAP_SETUID: u32 = 7; -pub const CAP_SETPCAP: u32 = 8; -pub const CAP_LINUX_IMMUTABLE: u32 = 9; -pub const CAP_NET_BIND_SERVICE: u32 = 10; -pub const CAP_NET_BROADCAST: u32 = 11; -pub const CAP_NET_ADMIN: u32 = 12; -pub const CAP_NET_RAW: u32 = 13; -pub const CAP_IPC_LOCK: u32 = 14; -pub const CAP_IPC_OWNER: u32 = 15; -pub const CAP_SYS_MODULE: u32 = 16; -pub const CAP_SYS_RAWIO: u32 = 17; -pub const CAP_SYS_CHROOT: u32 = 18; -pub const CAP_SYS_PTRACE: u32 = 19; -pub const CAP_SYS_PACCT: u32 = 20; -pub const CAP_SYS_ADMIN: u32 = 21; -pub const CAP_SYS_BOOT: u32 = 22; -pub const CAP_SYS_NICE: u32 = 23; -pub const CAP_SYS_RESOURCE: u32 = 24; -pub const CAP_SYS_TIME: u32 = 25; -pub const CAP_SYS_TTY_CONFIG: u32 = 26; -pub const CAP_MKNOD: u32 = 27; -pub const CAP_LEASE: u32 = 28; -pub const CAP_AUDIT_WRITE: u32 = 29; -pub const CAP_AUDIT_CONTROL: u32 = 30; -pub const CAP_SETFCAP: u32 = 31; -pub const CAP_MAC_OVERRIDE: u32 = 32; -pub const CAP_MAC_ADMIN: u32 = 33; -pub const CAP_SYSLOG: u32 = 34; -pub const CAP_WAKE_ALARM: u32 = 35; -pub const CAP_BLOCK_SUSPEND: u32 = 36; -pub const CAP_AUDIT_READ: u32 = 37; -pub const CAP_PERFMON: u32 = 38; -pub const CAP_BPF: u32 = 39; -pub const CAP_CHECKPOINT_RESTORE: u32 = 40; -pub const CAP_LAST_CAP: u32 = 40; -pub const O_APPEND: u32 = 8; -pub const FASYNC: u32 = 64; -pub const O_CREAT: u32 = 512; -pub const O_TRUNC: u32 = 1024; -pub const O_EXCL: u32 = 2048; -pub const O_DSYNC: u32 = 8192; -pub const O_NONBLOCK: u32 = 16384; -pub const O_NDELAY: u32 = 4; -pub const O_NOCTTY: u32 = 32768; -pub const O_LARGEFILE: u32 = 262144; -pub const O_DIRECT: u32 = 1048576; -pub const O_NOATIME: u32 = 2097152; -pub const O_CLOEXEC: u32 = 4194304; -pub const __O_SYNC: u32 = 8388608; -pub const O_SYNC: u32 = 8396800; -pub const O_PATH: u32 = 16777216; -pub const __O_TMPFILE: u32 = 33554432; -pub const F_GETOWN: u32 = 5; -pub const F_SETOWN: u32 = 6; -pub const F_GETLK: u32 = 7; -pub const F_SETLK: u32 = 8; -pub const F_SETLKW: u32 = 9; -pub const F_RDLCK: u32 = 1; -pub const F_WRLCK: u32 = 2; -pub const F_UNLCK: u32 = 3; -pub const O_ACCMODE: u32 = 3; -pub const O_RDONLY: u32 = 0; -pub const O_WRONLY: u32 = 1; -pub const O_RDWR: u32 = 2; -pub const O_DIRECTORY: u32 = 65536; -pub const O_NOFOLLOW: u32 = 131072; -pub const O_TMPFILE: u32 = 33619968; -pub const O_TMPFILE_MASK: u32 = 33620480; -pub const F_DUPFD: u32 = 0; -pub const F_GETFD: u32 = 1; -pub const F_SETFD: u32 = 2; -pub const F_GETFL: u32 = 3; -pub const F_SETFL: u32 = 4; -pub const F_SETSIG: u32 = 10; -pub const F_GETSIG: u32 = 11; -pub const F_SETOWN_EX: u32 = 15; -pub const F_GETOWN_EX: u32 = 16; -pub const F_GETOWNER_UIDS: u32 = 17; -pub const F_OFD_GETLK: u32 = 36; -pub const F_OFD_SETLK: u32 = 37; -pub const F_OFD_SETLKW: u32 = 38; -pub const F_OWNER_TID: u32 = 0; -pub const F_OWNER_PID: u32 = 1; -pub const F_OWNER_PGRP: u32 = 2; -pub const FD_CLOEXEC: u32 = 1; -pub const F_EXLCK: u32 = 4; -pub const F_SHLCK: u32 = 8; -pub const LOCK_SH: u32 = 1; -pub const LOCK_EX: u32 = 2; -pub const LOCK_NB: u32 = 4; -pub const LOCK_UN: u32 = 8; -pub const LOCK_MAND: u32 = 32; -pub const LOCK_READ: u32 = 64; -pub const LOCK_WRITE: u32 = 128; -pub const LOCK_RW: u32 = 192; -pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; -pub const RESOLVE_NO_XDEV: u32 = 1; -pub const RESOLVE_NO_MAGICLINKS: u32 = 2; -pub const RESOLVE_NO_SYMLINKS: u32 = 4; -pub const RESOLVE_BENEATH: u32 = 8; -pub const RESOLVE_IN_ROOT: u32 = 16; -pub const RESOLVE_CACHED: u32 = 32; -pub const F_SETLEASE: u32 = 1024; -pub const F_GETLEASE: u32 = 1025; -pub const F_CANCELLK: u32 = 1029; -pub const F_DUPFD_CLOEXEC: u32 = 1030; -pub const F_NOTIFY: u32 = 1026; -pub const F_SETPIPE_SZ: u32 = 1031; -pub const F_GETPIPE_SZ: u32 = 1032; -pub const F_ADD_SEALS: u32 = 1033; -pub const F_GET_SEALS: u32 = 1034; -pub const F_SEAL_SEAL: u32 = 1; -pub const F_SEAL_SHRINK: u32 = 2; -pub const F_SEAL_GROW: u32 = 4; -pub const F_SEAL_WRITE: u32 = 8; -pub const F_SEAL_FUTURE_WRITE: u32 = 16; -pub const F_SEAL_EXEC: u32 = 32; -pub const F_GET_RW_HINT: u32 = 1035; -pub const F_SET_RW_HINT: u32 = 1036; -pub const F_GET_FILE_RW_HINT: u32 = 1037; -pub const F_SET_FILE_RW_HINT: u32 = 1038; -pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; -pub const RWH_WRITE_LIFE_NONE: u32 = 1; -pub const RWH_WRITE_LIFE_SHORT: u32 = 2; -pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; -pub const RWH_WRITE_LIFE_LONG: u32 = 4; -pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; -pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; -pub const DN_ACCESS: u32 = 1; -pub const DN_MODIFY: u32 = 2; -pub const DN_CREATE: u32 = 4; -pub const DN_DELETE: u32 = 8; -pub const DN_RENAME: u32 = 16; -pub const DN_ATTRIB: u32 = 32; -pub const DN_MULTISHOT: u32 = 2147483648; -pub const AT_FDCWD: i32 = -100; -pub const AT_SYMLINK_NOFOLLOW: u32 = 256; -pub const AT_EACCESS: u32 = 512; -pub const AT_REMOVEDIR: u32 = 512; -pub const AT_SYMLINK_FOLLOW: u32 = 1024; -pub const AT_NO_AUTOMOUNT: u32 = 2048; -pub const AT_EMPTY_PATH: u32 = 4096; -pub const AT_STATX_SYNC_TYPE: u32 = 24576; -pub const AT_STATX_SYNC_AS_STAT: u32 = 0; -pub const AT_STATX_FORCE_SYNC: u32 = 8192; -pub const AT_STATX_DONT_SYNC: u32 = 16384; -pub const AT_RECURSIVE: u32 = 32768; -pub const EPOLL_CLOEXEC: u32 = 4194304; -pub const EPOLL_CTL_ADD: u32 = 1; -pub const EPOLL_CTL_DEL: u32 = 2; -pub const EPOLL_CTL_MOD: u32 = 3; -pub const POSIX_FADV_NORMAL: u32 = 0; -pub const POSIX_FADV_RANDOM: u32 = 1; -pub const POSIX_FADV_SEQUENTIAL: u32 = 2; -pub const POSIX_FADV_WILLNEED: u32 = 3; -pub const POSIX_FADV_DONTNEED: u32 = 4; -pub const POSIX_FADV_NOREUSE: u32 = 5; -pub const FALLOC_FL_KEEP_SIZE: u32 = 1; -pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; -pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; -pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; -pub const FALLOC_FL_ZERO_RANGE: u32 = 16; -pub const FALLOC_FL_INSERT_RANGE: u32 = 32; -pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; -pub const NR_OPEN: u32 = 1024; -pub const NGROUPS_MAX: u32 = 65536; -pub const ARG_MAX: u32 = 131072; -pub const LINK_MAX: u32 = 127; -pub const MAX_CANON: u32 = 255; -pub const MAX_INPUT: u32 = 255; -pub const NAME_MAX: u32 = 255; -pub const PATH_MAX: u32 = 4096; -pub const PIPE_BUF: u32 = 4096; -pub const XATTR_NAME_MAX: u32 = 255; -pub const XATTR_SIZE_MAX: u32 = 65536; -pub const XATTR_LIST_MAX: u32 = 65536; -pub const RTSIG_MAX: u32 = 32; -pub const _IOC_NRBITS: u32 = 8; -pub const _IOC_TYPEBITS: u32 = 8; -pub const _IOC_SIZEBITS: u32 = 13; -pub const _IOC_DIRBITS: u32 = 3; -pub const _IOC_NRMASK: u32 = 255; -pub const _IOC_TYPEMASK: u32 = 255; -pub const _IOC_SIZEMASK: u32 = 8191; -pub const _IOC_XSIZEMASK: u32 = 16383; -pub const _IOC_DIRMASK: u32 = 7; -pub const _IOC_NRSHIFT: u32 = 0; -pub const _IOC_TYPESHIFT: u32 = 8; -pub const _IOC_SIZESHIFT: u32 = 16; -pub const _IOC_DIRSHIFT: u32 = 29; -pub const _IOC_NONE: u32 = 1; -pub const _IOC_READ: u32 = 2; -pub const _IOC_WRITE: u32 = 4; -pub const IOC_IN: u32 = 2147483648; -pub const IOC_OUT: u32 = 1073741824; -pub const IOC_INOUT: u32 = 3221225472; -pub const IOCSIZE_MASK: u32 = 1073676288; -pub const IOCSIZE_SHIFT: u32 = 16; -pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; -pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; -pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; -pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; -pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; -pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; -pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; -pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; -pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; -pub const FSCRYPT_POLICY_V1: u32 = 0; -pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; -pub const FSCRYPT_POLICY_V2: u32 = 2; -pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; -pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; -pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; -pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; -pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; -pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; -pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; -pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FS_POLICY_FLAGS_VALID: u32 = 7; -pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; -pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; -pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; -pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; -pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; -pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; -pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; -pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; -pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FS_MAX_KEY_SIZE: u32 = 64; -pub const MS_RDONLY: u32 = 1; -pub const MS_NOSUID: u32 = 2; -pub const MS_NODEV: u32 = 4; -pub const MS_NOEXEC: u32 = 8; -pub const MS_SYNCHRONOUS: u32 = 16; -pub const MS_REMOUNT: u32 = 32; -pub const MS_MANDLOCK: u32 = 64; -pub const MS_DIRSYNC: u32 = 128; -pub const MS_NOSYMFOLLOW: u32 = 256; -pub const MS_NOATIME: u32 = 1024; -pub const MS_NODIRATIME: u32 = 2048; -pub const MS_BIND: u32 = 4096; -pub const MS_MOVE: u32 = 8192; -pub const MS_REC: u32 = 16384; -pub const MS_VERBOSE: u32 = 32768; -pub const MS_SILENT: u32 = 32768; -pub const MS_POSIXACL: u32 = 65536; -pub const MS_UNBINDABLE: u32 = 131072; -pub const MS_PRIVATE: u32 = 262144; -pub const MS_SLAVE: u32 = 524288; -pub const MS_SHARED: u32 = 1048576; -pub const MS_RELATIME: u32 = 2097152; -pub const MS_KERNMOUNT: u32 = 4194304; -pub const MS_I_VERSION: u32 = 8388608; -pub const MS_STRICTATIME: u32 = 16777216; -pub const MS_LAZYTIME: u32 = 33554432; -pub const MS_SUBMOUNT: u32 = 67108864; -pub const MS_NOREMOTELOCK: u32 = 134217728; -pub const MS_NOSEC: u32 = 268435456; -pub const MS_BORN: u32 = 536870912; -pub const MS_ACTIVE: u32 = 1073741824; -pub const MS_NOUSER: u32 = 2147483648; -pub const MS_RMT_MASK: u32 = 41943121; -pub const MS_MGC_VAL: u32 = 3236757504; -pub const MS_MGC_MSK: u32 = 4294901760; -pub const OPEN_TREE_CLONE: u32 = 1; -pub const OPEN_TREE_CLOEXEC: u32 = 4194304; -pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; -pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; -pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; -pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; -pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; -pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; -pub const MOVE_MOUNT_SET_GROUP: u32 = 256; -pub const MOVE_MOUNT__MASK: u32 = 375; -pub const FSOPEN_CLOEXEC: u32 = 1; -pub const FSPICK_CLOEXEC: u32 = 1; -pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; -pub const FSPICK_NO_AUTOMOUNT: u32 = 4; -pub const FSPICK_EMPTY_PATH: u32 = 8; -pub const FSMOUNT_CLOEXEC: u32 = 1; -pub const MOUNT_ATTR_RDONLY: u32 = 1; -pub const MOUNT_ATTR_NOSUID: u32 = 2; -pub const MOUNT_ATTR_NODEV: u32 = 4; -pub const MOUNT_ATTR_NOEXEC: u32 = 8; -pub const MOUNT_ATTR__ATIME: u32 = 112; -pub const MOUNT_ATTR_RELATIME: u32 = 0; -pub const MOUNT_ATTR_NOATIME: u32 = 16; -pub const MOUNT_ATTR_STRICTATIME: u32 = 32; -pub const MOUNT_ATTR_NODIRATIME: u32 = 128; -pub const MOUNT_ATTR_IDMAP: u32 = 1048576; -pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; -pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; -pub const INR_OPEN_CUR: u32 = 1024; -pub const INR_OPEN_MAX: u32 = 4096; -pub const BLOCK_SIZE_BITS: u32 = 10; -pub const BLOCK_SIZE: u32 = 1024; -pub const SEEK_SET: u32 = 0; -pub const SEEK_CUR: u32 = 1; -pub const SEEK_END: u32 = 2; -pub const SEEK_DATA: u32 = 3; -pub const SEEK_HOLE: u32 = 4; -pub const SEEK_MAX: u32 = 4; -pub const RENAME_NOREPLACE: u32 = 1; -pub const RENAME_EXCHANGE: u32 = 2; -pub const RENAME_WHITEOUT: u32 = 4; -pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; -pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; -pub const NR_FILE: u32 = 8192; -pub const FS_XFLAG_REALTIME: u32 = 1; -pub const FS_XFLAG_PREALLOC: u32 = 2; -pub const FS_XFLAG_IMMUTABLE: u32 = 8; -pub const FS_XFLAG_APPEND: u32 = 16; -pub const FS_XFLAG_SYNC: u32 = 32; -pub const FS_XFLAG_NOATIME: u32 = 64; -pub const FS_XFLAG_NODUMP: u32 = 128; -pub const FS_XFLAG_RTINHERIT: u32 = 256; -pub const FS_XFLAG_PROJINHERIT: u32 = 512; -pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; -pub const FS_XFLAG_EXTSIZE: u32 = 2048; -pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; -pub const FS_XFLAG_NODEFRAG: u32 = 8192; -pub const FS_XFLAG_FILESTREAM: u32 = 16384; -pub const FS_XFLAG_DAX: u32 = 32768; -pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; -pub const FS_XFLAG_HASATTR: u32 = 2147483648; -pub const BMAP_IOCTL: u32 = 1; -pub const FSLABEL_MAX: u32 = 256; -pub const FS_SECRM_FL: u32 = 1; -pub const FS_UNRM_FL: u32 = 2; -pub const FS_COMPR_FL: u32 = 4; -pub const FS_SYNC_FL: u32 = 8; -pub const FS_IMMUTABLE_FL: u32 = 16; -pub const FS_APPEND_FL: u32 = 32; -pub const FS_NODUMP_FL: u32 = 64; -pub const FS_NOATIME_FL: u32 = 128; -pub const FS_DIRTY_FL: u32 = 256; -pub const FS_COMPRBLK_FL: u32 = 512; -pub const FS_NOCOMP_FL: u32 = 1024; -pub const FS_ENCRYPT_FL: u32 = 2048; -pub const FS_BTREE_FL: u32 = 4096; -pub const FS_INDEX_FL: u32 = 4096; -pub const FS_IMAGIC_FL: u32 = 8192; -pub const FS_JOURNAL_DATA_FL: u32 = 16384; -pub const FS_NOTAIL_FL: u32 = 32768; -pub const FS_DIRSYNC_FL: u32 = 65536; -pub const FS_TOPDIR_FL: u32 = 131072; -pub const FS_HUGE_FILE_FL: u32 = 262144; -pub const FS_EXTENT_FL: u32 = 524288; -pub const FS_VERITY_FL: u32 = 1048576; -pub const FS_EA_INODE_FL: u32 = 2097152; -pub const FS_EOFBLOCKS_FL: u32 = 4194304; -pub const FS_NOCOW_FL: u32 = 8388608; -pub const FS_DAX_FL: u32 = 33554432; -pub const FS_INLINE_DATA_FL: u32 = 268435456; -pub const FS_PROJINHERIT_FL: u32 = 536870912; -pub const FS_CASEFOLD_FL: u32 = 1073741824; -pub const FS_RESERVED_FL: u32 = 2147483648; -pub const FS_FL_USER_VISIBLE: u32 = 253951; -pub const FS_FL_USER_MODIFIABLE: u32 = 229631; -pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; -pub const SYNC_FILE_RANGE_WRITE: u32 = 2; -pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; -pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; -pub const FUTEX_WAIT: u32 = 0; -pub const FUTEX_WAKE: u32 = 1; -pub const FUTEX_FD: u32 = 2; -pub const FUTEX_REQUEUE: u32 = 3; -pub const FUTEX_CMP_REQUEUE: u32 = 4; -pub const FUTEX_WAKE_OP: u32 = 5; -pub const FUTEX_LOCK_PI: u32 = 6; -pub const FUTEX_UNLOCK_PI: u32 = 7; -pub const FUTEX_TRYLOCK_PI: u32 = 8; -pub const FUTEX_WAIT_BITSET: u32 = 9; -pub const FUTEX_WAKE_BITSET: u32 = 10; -pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; -pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; -pub const FUTEX_LOCK_PI2: u32 = 13; -pub const FUTEX_PRIVATE_FLAG: u32 = 128; -pub const FUTEX_CLOCK_REALTIME: u32 = 256; -pub const FUTEX_CMD_MASK: i32 = -385; -pub const FUTEX_WAIT_PRIVATE: u32 = 128; -pub const FUTEX_WAKE_PRIVATE: u32 = 129; -pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; -pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; -pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; -pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; -pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; -pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; -pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; -pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; -pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; -pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; -pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; -pub const FUTEX_32: u32 = 2; -pub const FUTEX_WAITV_MAX: u32 = 128; -pub const FUTEX_WAITERS: u32 = 2147483648; -pub const FUTEX_OWNER_DIED: u32 = 1073741824; -pub const FUTEX_TID_MASK: u32 = 1073741823; -pub const ROBUST_LIST_LIMIT: u32 = 2048; -pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; -pub const FUTEX_OP_SET: u32 = 0; -pub const FUTEX_OP_ADD: u32 = 1; -pub const FUTEX_OP_OR: u32 = 2; -pub const FUTEX_OP_ANDN: u32 = 3; -pub const FUTEX_OP_XOR: u32 = 4; -pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; -pub const FUTEX_OP_CMP_EQ: u32 = 0; -pub const FUTEX_OP_CMP_NE: u32 = 1; -pub const FUTEX_OP_CMP_LT: u32 = 2; -pub const FUTEX_OP_CMP_LE: u32 = 3; -pub const FUTEX_OP_CMP_GT: u32 = 4; -pub const FUTEX_OP_CMP_GE: u32 = 5; -pub const __UAPI_DEF_IF_IFCONF: u32 = 1; -pub const __UAPI_DEF_IF_IFMAP: u32 = 1; -pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1; -pub const __UAPI_DEF_IF_IFREQ: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1; -pub const __UAPI_DEF_IN_ADDR: u32 = 1; -pub const __UAPI_DEF_IN_IPPROTO: u32 = 1; -pub const __UAPI_DEF_IN_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP_MREQ: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1; -pub const __UAPI_DEF_IN_CLASS: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1; -pub const __UAPI_DEF_IPV6_MREQ: u32 = 1; -pub const __UAPI_DEF_IPPROTO_V6: u32 = 1; -pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1; -pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1; -pub const __UAPI_DEF_XATTR: u32 = 1; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const IP_TOS: u32 = 1; -pub const IP_TTL: u32 = 2; -pub const IP_HDRINCL: u32 = 3; -pub const IP_OPTIONS: u32 = 4; -pub const IP_ROUTER_ALERT: u32 = 5; -pub const IP_RECVOPTS: u32 = 6; -pub const IP_RETOPTS: u32 = 7; -pub const IP_PKTINFO: u32 = 8; -pub const IP_PKTOPTIONS: u32 = 9; -pub const IP_MTU_DISCOVER: u32 = 10; -pub const IP_RECVERR: u32 = 11; -pub const IP_RECVTTL: u32 = 12; -pub const IP_RECVTOS: u32 = 13; -pub const IP_MTU: u32 = 14; -pub const IP_FREEBIND: u32 = 15; -pub const IP_IPSEC_POLICY: u32 = 16; -pub const IP_XFRM_POLICY: u32 = 17; -pub const IP_PASSSEC: u32 = 18; -pub const IP_TRANSPARENT: u32 = 19; -pub const IP_RECVRETOPTS: u32 = 7; -pub const IP_ORIGDSTADDR: u32 = 20; -pub const IP_RECVORIGDSTADDR: u32 = 20; -pub const IP_MINTTL: u32 = 21; -pub const IP_NODEFRAG: u32 = 22; -pub const IP_CHECKSUM: u32 = 23; -pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; -pub const IP_RECVFRAGSIZE: u32 = 25; -pub const IP_RECVERR_RFC4884: u32 = 26; -pub const IP_PMTUDISC_DONT: u32 = 0; -pub const IP_PMTUDISC_WANT: u32 = 1; -pub const IP_PMTUDISC_DO: u32 = 2; -pub const IP_PMTUDISC_PROBE: u32 = 3; -pub const IP_PMTUDISC_INTERFACE: u32 = 4; -pub const IP_PMTUDISC_OMIT: u32 = 5; -pub const IP_MULTICAST_IF: u32 = 32; -pub const IP_MULTICAST_TTL: u32 = 33; -pub const IP_MULTICAST_LOOP: u32 = 34; -pub const IP_ADD_MEMBERSHIP: u32 = 35; -pub const IP_DROP_MEMBERSHIP: u32 = 36; -pub const IP_UNBLOCK_SOURCE: u32 = 37; -pub const IP_BLOCK_SOURCE: u32 = 38; -pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; -pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; -pub const IP_MSFILTER: u32 = 41; -pub const MCAST_JOIN_GROUP: u32 = 42; -pub const MCAST_BLOCK_SOURCE: u32 = 43; -pub const MCAST_UNBLOCK_SOURCE: u32 = 44; -pub const MCAST_LEAVE_GROUP: u32 = 45; -pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; -pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; -pub const MCAST_MSFILTER: u32 = 48; -pub const IP_MULTICAST_ALL: u32 = 49; -pub const IP_UNICAST_IF: u32 = 50; -pub const IP_LOCAL_PORT_RANGE: u32 = 51; -pub const MCAST_EXCLUDE: u32 = 0; -pub const MCAST_INCLUDE: u32 = 1; -pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; -pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const __SOCK_SIZE__: u32 = 16; -pub const IN_CLASSA_NET: u32 = 4278190080; -pub const IN_CLASSA_NSHIFT: u32 = 24; -pub const IN_CLASSA_HOST: u32 = 16777215; -pub const IN_CLASSA_MAX: u32 = 128; -pub const IN_CLASSB_NET: u32 = 4294901760; -pub const IN_CLASSB_NSHIFT: u32 = 16; -pub const IN_CLASSB_HOST: u32 = 65535; -pub const IN_CLASSB_MAX: u32 = 65536; -pub const IN_CLASSC_NET: u32 = 4294967040; -pub const IN_CLASSC_NSHIFT: u32 = 8; -pub const IN_CLASSC_HOST: u32 = 255; -pub const IN_MULTICAST_NET: u32 = 3758096384; -pub const IN_CLASSE_NET: u32 = 4294967295; -pub const IN_CLASSE_NSHIFT: u32 = 0; -pub const IN_LOOPBACKNET: u32 = 127; -pub const INADDR_LOOPBACK: u32 = 2130706433; -pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; -pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; -pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; -pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; -pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; -pub const __BIG_ENDIAN: u32 = 4321; -pub const ASI_NULL1: u32 = 0; -pub const ASI_NULL2: u32 = 1; -pub const ASI_CONTROL: u32 = 2; -pub const ASI_SEGMAP: u32 = 3; -pub const ASI_PTE: u32 = 4; -pub const ASI_HWFLUSHSEG: u32 = 5; -pub const ASI_HWFLUSHPAGE: u32 = 6; -pub const ASI_REGMAP: u32 = 6; -pub const ASI_HWFLUSHCONTEXT: u32 = 7; -pub const ASI_USERTXT: u32 = 8; -pub const ASI_KERNELTXT: u32 = 9; -pub const ASI_USERDATA: u32 = 10; -pub const ASI_KERNELDATA: u32 = 11; -pub const ASI_FLUSHSEG: u32 = 12; -pub const ASI_FLUSHPG: u32 = 13; -pub const ASI_FLUSHCTX: u32 = 14; -pub const ASI_M_RES00: u32 = 0; -pub const ASI_M_UNA01: u32 = 1; -pub const ASI_M_MXCC: u32 = 2; -pub const ASI_M_FLUSH_PROBE: u32 = 3; -pub const ASI_M_MMUREGS: u32 = 4; -pub const ASI_M_TLBDIAG: u32 = 5; -pub const ASI_M_DIAGS: u32 = 6; -pub const ASI_M_IODIAG: u32 = 7; -pub const ASI_M_USERTXT: u32 = 8; -pub const ASI_M_KERNELTXT: u32 = 9; -pub const ASI_M_USERDATA: u32 = 10; -pub const ASI_M_KERNELDATA: u32 = 11; -pub const ASI_M_TXTC_TAG: u32 = 12; -pub const ASI_M_TXTC_DATA: u32 = 13; -pub const ASI_M_DATAC_TAG: u32 = 14; -pub const ASI_M_DATAC_DATA: u32 = 15; -pub const ASI_M_FLUSH_PAGE: u32 = 16; -pub const ASI_M_FLUSH_SEG: u32 = 17; -pub const ASI_M_FLUSH_REGION: u32 = 18; -pub const ASI_M_FLUSH_CTX: u32 = 19; -pub const ASI_M_FLUSH_USER: u32 = 20; -pub const ASI_M_BCOPY: u32 = 23; -pub const ASI_M_IFLUSH_PAGE: u32 = 24; -pub const ASI_M_IFLUSH_SEG: u32 = 25; -pub const ASI_M_IFLUSH_REGION: u32 = 26; -pub const ASI_M_IFLUSH_CTX: u32 = 27; -pub const ASI_M_IFLUSH_USER: u32 = 28; -pub const ASI_M_BFILL: u32 = 31; -pub const ASI_M_BYPASS: u32 = 32; -pub const ASI_M_FBMEM: u32 = 41; -pub const ASI_M_VMEUS: u32 = 42; -pub const ASI_M_VMEPS: u32 = 43; -pub const ASI_M_VMEUT: u32 = 44; -pub const ASI_M_VMEPT: u32 = 45; -pub const ASI_M_SBUS: u32 = 46; -pub const ASI_M_CTL: u32 = 47; -pub const ASI_M_FLUSH_IWHOLE: u32 = 49; -pub const ASI_M_IC_FLCLEAR: u32 = 54; -pub const ASI_M_DC_FLCLEAR: u32 = 55; -pub const ASI_M_DCDR: u32 = 57; -pub const ASI_M_VIKING_TMP1: u32 = 64; -pub const ASI_M_ACTION: u32 = 76; -pub const ASI_LEON_NOCACHE: u32 = 1; -pub const ASI_LEON_DCACHE_MISS: u32 = 1; -pub const ASI_LEON_CACHEREGS: u32 = 2; -pub const ASI_LEON_IFLUSH: u32 = 16; -pub const ASI_LEON_DFLUSH: u32 = 17; -pub const ASI_LEON_MMUFLUSH: u32 = 24; -pub const ASI_LEON_MMUREGS: u32 = 25; -pub const ASI_LEON_BYPASS: u32 = 28; -pub const ASI_LEON_FLUSH_PAGE: u32 = 16; -pub const ASI_N: u32 = 4; -pub const ASI_NL: u32 = 12; -pub const ASI_AIUP: u32 = 16; -pub const ASI_AIUS: u32 = 17; -pub const ASI_AIUPL: u32 = 24; -pub const ASI_AIUSL: u32 = 25; -pub const ASI_P: u32 = 128; -pub const ASI_S: u32 = 129; -pub const ASI_PNF: u32 = 130; -pub const ASI_SNF: u32 = 131; -pub const ASI_PL: u32 = 136; -pub const ASI_SL: u32 = 137; -pub const ASI_PNFL: u32 = 138; -pub const ASI_SNFL: u32 = 139; -pub const ASI_MCD_PRIV_PRIMARY: u32 = 2; -pub const ASI_MCD_REAL: u32 = 5; -pub const ASI_PHYS_USE_EC: u32 = 20; -pub const ASI_PHYS_BYPASS_EC_E: u32 = 21; -pub const ASI_BLK_AIUP_4V: u32 = 22; -pub const ASI_BLK_AIUS_4V: u32 = 23; -pub const ASI_PHYS_USE_EC_L: u32 = 28; -pub const ASI_PHYS_BYPASS_EC_E_L: u32 = 29; -pub const ASI_BLK_AIUP_L_4V: u32 = 30; -pub const ASI_BLK_AIUS_L_4V: u32 = 31; -pub const ASI_SCRATCHPAD: u32 = 32; -pub const ASI_MMU: u32 = 33; -pub const ASI_BLK_INIT_QUAD_LDD_AIUS: u32 = 35; -pub const ASI_NUCLEUS_QUAD_LDD: u32 = 36; -pub const ASI_QUEUE: u32 = 37; -pub const ASI_QUAD_LDD_PHYS_4V: u32 = 38; -pub const ASI_NUCLEUS_QUAD_LDD_L: u32 = 44; -pub const ASI_QUAD_LDD_PHYS_L_4V: u32 = 46; -pub const ASI_PCACHE_DATA_STATUS: u32 = 48; -pub const ASI_PCACHE_DATA: u32 = 49; -pub const ASI_PCACHE_TAG: u32 = 50; -pub const ASI_PCACHE_SNOOP_TAG: u32 = 51; -pub const ASI_QUAD_LDD_PHYS: u32 = 52; -pub const ASI_WCACHE_VALID_BITS: u32 = 56; -pub const ASI_WCACHE_DATA: u32 = 57; -pub const ASI_WCACHE_TAG: u32 = 58; -pub const ASI_WCACHE_SNOOP_TAG: u32 = 59; -pub const ASI_QUAD_LDD_PHYS_L: u32 = 60; -pub const ASI_SRAM_FAST_INIT: u32 = 64; -pub const ASI_CORE_AVAILABLE: u32 = 65; -pub const ASI_CORE_ENABLE_STAT: u32 = 65; -pub const ASI_CORE_ENABLE: u32 = 65; -pub const ASI_XIR_STEERING: u32 = 65; -pub const ASI_CORE_RUNNING_RW: u32 = 65; -pub const ASI_CORE_RUNNING_W1S: u32 = 65; -pub const ASI_CORE_RUNNING_W1C: u32 = 65; -pub const ASI_CORE_RUNNING_STAT: u32 = 65; -pub const ASI_CMT_ERROR_STEERING: u32 = 65; -pub const ASI_DCACHE_INVALIDATE: u32 = 66; -pub const ASI_DCACHE_UTAG: u32 = 67; -pub const ASI_DCACHE_SNOOP_TAG: u32 = 68; -pub const ASI_LSU_CONTROL: u32 = 69; -pub const ASI_DCU_CONTROL_REG: u32 = 69; -pub const ASI_DCACHE_DATA: u32 = 70; -pub const ASI_DCACHE_TAG: u32 = 71; -pub const ASI_INTR_DISPATCH_STAT: u32 = 72; -pub const ASI_INTR_RECEIVE: u32 = 73; -pub const ASI_UPA_CONFIG: u32 = 74; -pub const ASI_JBUS_CONFIG: u32 = 74; -pub const ASI_SAFARI_CONFIG: u32 = 74; -pub const ASI_SAFARI_ADDRESS: u32 = 74; -pub const ASI_ESTATE_ERROR_EN: u32 = 75; -pub const ASI_AFSR: u32 = 76; -pub const ASI_AFAR: u32 = 77; -pub const ASI_EC_TAG_DATA: u32 = 78; -pub const ASI_IMMU: u32 = 80; -pub const ASI_IMMU_TSB_8KB_PTR: u32 = 81; -pub const ASI_IMMU_TSB_64KB_PTR: u32 = 82; -pub const ASI_ITLB_DATA_IN: u32 = 84; -pub const ASI_ITLB_DATA_ACCESS: u32 = 85; -pub const ASI_ITLB_TAG_READ: u32 = 86; -pub const ASI_IMMU_DEMAP: u32 = 87; -pub const ASI_DMMU: u32 = 88; -pub const ASI_DMMU_TSB_8KB_PTR: u32 = 89; -pub const ASI_DMMU_TSB_64KB_PTR: u32 = 90; -pub const ASI_DMMU_TSB_DIRECT_PTR: u32 = 91; -pub const ASI_DTLB_DATA_IN: u32 = 92; -pub const ASI_DTLB_DATA_ACCESS: u32 = 93; -pub const ASI_DTLB_TAG_READ: u32 = 94; -pub const ASI_DMMU_DEMAP: u32 = 95; -pub const ASI_IIU_INST_TRAP: u32 = 96; -pub const ASI_INTR_ID: u32 = 99; -pub const ASI_CORE_ID: u32 = 99; -pub const ASI_CESR_ID: u32 = 99; -pub const ASI_IC_INSTR: u32 = 102; -pub const ASI_IC_TAG: u32 = 103; -pub const ASI_IC_STAG: u32 = 104; -pub const ASI_IC_PRE_DECODE: u32 = 110; -pub const ASI_IC_NEXT_FIELD: u32 = 111; -pub const ASI_BRPRED_ARRAY: u32 = 111; -pub const ASI_BLK_AIUP: u32 = 112; -pub const ASI_BLK_AIUS: u32 = 113; -pub const ASI_MCU_CTRL_REG: u32 = 114; -pub const ASI_EC_DATA: u32 = 116; -pub const ASI_EC_CTRL: u32 = 117; -pub const ASI_EC_W: u32 = 118; -pub const ASI_UDB_ERROR_W: u32 = 119; -pub const ASI_UDB_CONTROL_W: u32 = 119; -pub const ASI_INTR_W: u32 = 119; -pub const ASI_INTR_DATAN_W: u32 = 119; -pub const ASI_INTR_DISPATCH_W: u32 = 119; -pub const ASI_BLK_AIUPL: u32 = 120; -pub const ASI_BLK_AIUSL: u32 = 121; -pub const ASI_EC_R: u32 = 126; -pub const ASI_UDBH_ERROR_R: u32 = 127; -pub const ASI_UDBL_ERROR_R: u32 = 127; -pub const ASI_UDBH_CONTROL_R: u32 = 127; -pub const ASI_UDBL_CONTROL_R: u32 = 127; -pub const ASI_INTR_R: u32 = 127; -pub const ASI_INTR_DATAN_R: u32 = 127; -pub const ASI_MCD_PRIMARY: u32 = 144; -pub const ASI_MCD_ST_BLKINIT_PRIMARY: u32 = 146; -pub const ASI_PIC: u32 = 176; -pub const ASI_PST8_P: u32 = 192; -pub const ASI_PST8_S: u32 = 193; -pub const ASI_PST16_P: u32 = 194; -pub const ASI_PST16_S: u32 = 195; -pub const ASI_PST32_P: u32 = 196; -pub const ASI_PST32_S: u32 = 197; -pub const ASI_PST8_PL: u32 = 200; -pub const ASI_PST8_SL: u32 = 201; -pub const ASI_PST16_PL: u32 = 202; -pub const ASI_PST16_SL: u32 = 203; -pub const ASI_PST32_PL: u32 = 204; -pub const ASI_PST32_SL: u32 = 205; -pub const ASI_FL8_P: u32 = 208; -pub const ASI_FL8_S: u32 = 209; -pub const ASI_FL16_P: u32 = 210; -pub const ASI_FL16_S: u32 = 211; -pub const ASI_FL8_PL: u32 = 216; -pub const ASI_FL8_SL: u32 = 217; -pub const ASI_FL16_PL: u32 = 218; -pub const ASI_FL16_SL: u32 = 219; -pub const ASI_BLK_COMMIT_P: u32 = 224; -pub const ASI_BLK_COMMIT_S: u32 = 225; -pub const ASI_BLK_INIT_QUAD_LDD_P: u32 = 226; -pub const ASI_BLK_INIT_QUAD_LDD_S: u32 = 227; -pub const ASI_BLK_P: u32 = 240; -pub const ASI_BLK_S: u32 = 241; -pub const ASI_ST_BLKINIT_MRU_P: u32 = 242; -pub const ASI_ST_BLKINIT_MRU_S: u32 = 243; -pub const ASI_BLK_PL: u32 = 248; -pub const ASI_BLK_SL: u32 = 249; -pub const ASI_ST_BLKINIT_MRU_PL: u32 = 250; -pub const ASI_ST_BLKINIT_MRU_SL: u32 = 251; -pub const IN_ACCESS: u32 = 1; -pub const IN_MODIFY: u32 = 2; -pub const IN_ATTRIB: u32 = 4; -pub const IN_CLOSE_WRITE: u32 = 8; -pub const IN_CLOSE_NOWRITE: u32 = 16; -pub const IN_OPEN: u32 = 32; -pub const IN_MOVED_FROM: u32 = 64; -pub const IN_MOVED_TO: u32 = 128; -pub const IN_CREATE: u32 = 256; -pub const IN_DELETE: u32 = 512; -pub const IN_DELETE_SELF: u32 = 1024; -pub const IN_MOVE_SELF: u32 = 2048; -pub const IN_UNMOUNT: u32 = 8192; -pub const IN_Q_OVERFLOW: u32 = 16384; -pub const IN_IGNORED: u32 = 32768; -pub const IN_CLOSE: u32 = 24; -pub const IN_MOVE: u32 = 192; -pub const IN_ONLYDIR: u32 = 16777216; -pub const IN_DONT_FOLLOW: u32 = 33554432; -pub const IN_EXCL_UNLINK: u32 = 67108864; -pub const IN_MASK_CREATE: u32 = 268435456; -pub const IN_MASK_ADD: u32 = 536870912; -pub const IN_ISDIR: u32 = 1073741824; -pub const IN_ONESHOT: u32 = 2147483648; -pub const IN_ALL_EVENTS: u32 = 4095; -pub const IN_CLOEXEC: u32 = 4194304; -pub const IN_NONBLOCK: u32 = 16384; -pub const IPTOS_TOS_MASK: u32 = 30; -pub const IPTOS_LOWDELAY: u32 = 16; -pub const IPTOS_THROUGHPUT: u32 = 8; -pub const IPTOS_RELIABILITY: u32 = 4; -pub const IPTOS_MINCOST: u32 = 2; -pub const IPTOS_PREC_MASK: u32 = 224; -pub const IPTOS_PREC_NETCONTROL: u32 = 224; -pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; -pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; -pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; -pub const IPTOS_PREC_FLASH: u32 = 96; -pub const IPTOS_PREC_IMMEDIATE: u32 = 64; -pub const IPTOS_PREC_PRIORITY: u32 = 32; -pub const IPTOS_PREC_ROUTINE: u32 = 0; -pub const IPOPT_COPY: u32 = 128; -pub const IPOPT_CLASS_MASK: u32 = 96; -pub const IPOPT_NUMBER_MASK: u32 = 31; -pub const IPOPT_CONTROL: u32 = 0; -pub const IPOPT_RESERVED1: u32 = 32; -pub const IPOPT_MEASUREMENT: u32 = 64; -pub const IPOPT_RESERVED2: u32 = 96; -pub const IPOPT_END: u32 = 0; -pub const IPOPT_NOOP: u32 = 1; -pub const IPOPT_SEC: u32 = 130; -pub const IPOPT_LSRR: u32 = 131; -pub const IPOPT_TIMESTAMP: u32 = 68; -pub const IPOPT_CIPSO: u32 = 134; -pub const IPOPT_RR: u32 = 7; -pub const IPOPT_SID: u32 = 136; -pub const IPOPT_SSRR: u32 = 137; -pub const IPOPT_RA: u32 = 148; -pub const IPVERSION: u32 = 4; -pub const MAXTTL: u32 = 255; -pub const IPDEFTTL: u32 = 64; -pub const IPOPT_OPTVAL: u32 = 0; -pub const IPOPT_OLEN: u32 = 1; -pub const IPOPT_OFFSET: u32 = 2; -pub const IPOPT_MINOFF: u32 = 4; -pub const MAX_IPOPTLEN: u32 = 40; -pub const IPOPT_NOP: u32 = 1; -pub const IPOPT_EOL: u32 = 0; -pub const IPOPT_TS: u32 = 68; -pub const IPOPT_TS_TSONLY: u32 = 0; -pub const IPOPT_TS_TSANDADDR: u32 = 1; -pub const IPOPT_TS_PRESPEC: u32 = 3; -pub const IPV4_BEET_PHMAXLEN: u32 = 8; -pub const IPV6_FL_A_GET: u32 = 0; -pub const IPV6_FL_A_PUT: u32 = 1; -pub const IPV6_FL_A_RENEW: u32 = 2; -pub const IPV6_FL_F_CREATE: u32 = 1; -pub const IPV6_FL_F_EXCL: u32 = 2; -pub const IPV6_FL_F_REFLECT: u32 = 4; -pub const IPV6_FL_F_REMOTE: u32 = 8; -pub const IPV6_FL_S_NONE: u32 = 0; -pub const IPV6_FL_S_EXCL: u32 = 1; -pub const IPV6_FL_S_PROCESS: u32 = 2; -pub const IPV6_FL_S_USER: u32 = 3; -pub const IPV6_FL_S_ANY: u32 = 255; -pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; -pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; -pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; -pub const IPV6_PRIORITY_FILLER: u32 = 256; -pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; -pub const IPV6_PRIORITY_RESERVED1: u32 = 768; -pub const IPV6_PRIORITY_BULK: u32 = 1024; -pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; -pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; -pub const IPV6_PRIORITY_CONTROL: u32 = 1792; -pub const IPV6_PRIORITY_8: u32 = 2048; -pub const IPV6_PRIORITY_9: u32 = 2304; -pub const IPV6_PRIORITY_10: u32 = 2560; -pub const IPV6_PRIORITY_11: u32 = 2816; -pub const IPV6_PRIORITY_12: u32 = 3072; -pub const IPV6_PRIORITY_13: u32 = 3328; -pub const IPV6_PRIORITY_14: u32 = 3584; -pub const IPV6_PRIORITY_15: u32 = 3840; -pub const IPPROTO_HOPOPTS: u32 = 0; -pub const IPPROTO_ROUTING: u32 = 43; -pub const IPPROTO_FRAGMENT: u32 = 44; -pub const IPPROTO_ICMPV6: u32 = 58; -pub const IPPROTO_NONE: u32 = 59; -pub const IPPROTO_DSTOPTS: u32 = 60; -pub const IPPROTO_MH: u32 = 135; -pub const IPV6_TLV_PAD1: u32 = 0; -pub const IPV6_TLV_PADN: u32 = 1; -pub const IPV6_TLV_ROUTERALERT: u32 = 5; -pub const IPV6_TLV_CALIPSO: u32 = 7; -pub const IPV6_TLV_IOAM: u32 = 49; -pub const IPV6_TLV_JUMBO: u32 = 194; -pub const IPV6_TLV_HAO: u32 = 201; -pub const IPV6_ADDRFORM: u32 = 1; -pub const IPV6_2292PKTINFO: u32 = 2; -pub const IPV6_2292HOPOPTS: u32 = 3; -pub const IPV6_2292DSTOPTS: u32 = 4; -pub const IPV6_2292RTHDR: u32 = 5; -pub const IPV6_2292PKTOPTIONS: u32 = 6; -pub const IPV6_CHECKSUM: u32 = 7; -pub const IPV6_2292HOPLIMIT: u32 = 8; -pub const IPV6_NEXTHOP: u32 = 9; -pub const IPV6_AUTHHDR: u32 = 10; -pub const IPV6_FLOWINFO: u32 = 11; -pub const IPV6_UNICAST_HOPS: u32 = 16; -pub const IPV6_MULTICAST_IF: u32 = 17; -pub const IPV6_MULTICAST_HOPS: u32 = 18; -pub const IPV6_MULTICAST_LOOP: u32 = 19; -pub const IPV6_ADD_MEMBERSHIP: u32 = 20; -pub const IPV6_DROP_MEMBERSHIP: u32 = 21; -pub const IPV6_ROUTER_ALERT: u32 = 22; -pub const IPV6_MTU_DISCOVER: u32 = 23; -pub const IPV6_MTU: u32 = 24; -pub const IPV6_RECVERR: u32 = 25; -pub const IPV6_V6ONLY: u32 = 26; -pub const IPV6_JOIN_ANYCAST: u32 = 27; -pub const IPV6_LEAVE_ANYCAST: u32 = 28; -pub const IPV6_MULTICAST_ALL: u32 = 29; -pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; -pub const IPV6_RECVERR_RFC4884: u32 = 31; -pub const IPV6_PMTUDISC_DONT: u32 = 0; -pub const IPV6_PMTUDISC_WANT: u32 = 1; -pub const IPV6_PMTUDISC_DO: u32 = 2; -pub const IPV6_PMTUDISC_PROBE: u32 = 3; -pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; -pub const IPV6_PMTUDISC_OMIT: u32 = 5; -pub const IPV6_FLOWLABEL_MGR: u32 = 32; -pub const IPV6_FLOWINFO_SEND: u32 = 33; -pub const IPV6_IPSEC_POLICY: u32 = 34; -pub const IPV6_XFRM_POLICY: u32 = 35; -pub const IPV6_HDRINCL: u32 = 36; -pub const IPV6_RECVPKTINFO: u32 = 49; -pub const IPV6_PKTINFO: u32 = 50; -pub const IPV6_RECVHOPLIMIT: u32 = 51; -pub const IPV6_HOPLIMIT: u32 = 52; -pub const IPV6_RECVHOPOPTS: u32 = 53; -pub const IPV6_HOPOPTS: u32 = 54; -pub const IPV6_RTHDRDSTOPTS: u32 = 55; -pub const IPV6_RECVRTHDR: u32 = 56; -pub const IPV6_RTHDR: u32 = 57; -pub const IPV6_RECVDSTOPTS: u32 = 58; -pub const IPV6_DSTOPTS: u32 = 59; -pub const IPV6_RECVPATHMTU: u32 = 60; -pub const IPV6_PATHMTU: u32 = 61; -pub const IPV6_DONTFRAG: u32 = 62; -pub const IPV6_RECVTCLASS: u32 = 66; -pub const IPV6_TCLASS: u32 = 67; -pub const IPV6_AUTOFLOWLABEL: u32 = 70; -pub const IPV6_ADDR_PREFERENCES: u32 = 72; -pub const IPV6_PREFER_SRC_TMP: u32 = 1; -pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; -pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; -pub const IPV6_PREFER_SRC_COA: u32 = 4; -pub const IPV6_PREFER_SRC_HOME: u32 = 1024; -pub const IPV6_PREFER_SRC_CGA: u32 = 8; -pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; -pub const IPV6_MINHOPCOUNT: u32 = 73; -pub const IPV6_ORIGDSTADDR: u32 = 74; -pub const IPV6_RECVORIGDSTADDR: u32 = 74; -pub const IPV6_TRANSPARENT: u32 = 75; -pub const IPV6_UNICAST_IF: u32 = 76; -pub const IPV6_RECVFRAGSIZE: u32 = 77; -pub const IPV6_FREEBIND: u32 = 78; -pub const IPV6_MIN_MTU: u32 = 1280; -pub const IPV6_SRCRT_STRICT: u32 = 1; -pub const IPV6_SRCRT_TYPE_0: u32 = 0; -pub const IPV6_SRCRT_TYPE_2: u32 = 2; -pub const IPV6_SRCRT_TYPE_3: u32 = 3; -pub const IPV6_SRCRT_TYPE_4: u32 = 4; -pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; -pub const ADFS_SUPER_MAGIC: u32 = 44533; -pub const AFFS_SUPER_MAGIC: u32 = 44543; -pub const AFS_SUPER_MAGIC: u32 = 1397113167; -pub const AUTOFS_SUPER_MAGIC: u32 = 391; -pub const CEPH_SUPER_MAGIC: u32 = 12805120; -pub const CODA_SUPER_MAGIC: u32 = 1937076805; -pub const CRAMFS_MAGIC: u32 = 684539205; -pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; -pub const DEBUGFS_MAGIC: u32 = 1684170528; -pub const SECURITYFS_MAGIC: u32 = 1935894131; -pub const SELINUX_MAGIC: u32 = 4185718668; -pub const SMACK_MAGIC: u32 = 1128357203; -pub const RAMFS_MAGIC: u32 = 2240043254; -pub const TMPFS_MAGIC: u32 = 16914836; -pub const HUGETLBFS_MAGIC: u32 = 2508478710; -pub const SQUASHFS_MAGIC: u32 = 1936814952; -pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; -pub const EFS_SUPER_MAGIC: u32 = 4278867; -pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; -pub const EXT2_SUPER_MAGIC: u32 = 61267; -pub const EXT3_SUPER_MAGIC: u32 = 61267; -pub const XENFS_SUPER_MAGIC: u32 = 2881100148; -pub const EXT4_SUPER_MAGIC: u32 = 61267; -pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; -pub const NILFS_SUPER_MAGIC: u32 = 13364; -pub const F2FS_SUPER_MAGIC: u32 = 4076150800; -pub const HPFS_SUPER_MAGIC: u32 = 4187351113; -pub const ISOFS_SUPER_MAGIC: u32 = 38496; -pub const JFFS2_SUPER_MAGIC: u32 = 29366; -pub const XFS_SUPER_MAGIC: u32 = 1481003842; -pub const PSTOREFS_MAGIC: u32 = 1634035564; -pub const EFIVARFS_MAGIC: u32 = 3730735588; -pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; -pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; -pub const FUSE_SUPER_MAGIC: u32 = 1702057286; -pub const MINIX_SUPER_MAGIC: u32 = 4991; -pub const MINIX_SUPER_MAGIC2: u32 = 5007; -pub const MINIX2_SUPER_MAGIC: u32 = 9320; -pub const MINIX2_SUPER_MAGIC2: u32 = 9336; -pub const MINIX3_SUPER_MAGIC: u32 = 19802; -pub const MSDOS_SUPER_MAGIC: u32 = 19780; -pub const EXFAT_SUPER_MAGIC: u32 = 538032816; -pub const NCP_SUPER_MAGIC: u32 = 22092; -pub const NFS_SUPER_MAGIC: u32 = 26985; -pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; -pub const OPENPROM_SUPER_MAGIC: u32 = 40865; -pub const QNX4_SUPER_MAGIC: u32 = 47; -pub const QNX6_SUPER_MAGIC: u32 = 1746473250; -pub const AFS_FS_MAGIC: u32 = 1799439955; -pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; -pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0"; -pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0"; -pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0"; -pub const SMB_SUPER_MAGIC: u32 = 20859; -pub const CIFS_SUPER_MAGIC: u32 = 4283649346; -pub const SMB2_SUPER_MAGIC: u32 = 4266872130; -pub const CGROUP_SUPER_MAGIC: u32 = 2613483; -pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; -pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; -pub const STACK_END_MAGIC: u32 = 1470918301; -pub const TRACEFS_MAGIC: u32 = 1953653091; -pub const V9FS_MAGIC: u32 = 16914839; -pub const BDEVFS_MAGIC: u32 = 1650746742; -pub const DAXFS_MAGIC: u32 = 1684300152; -pub const BINFMTFS_MAGIC: u32 = 1112100429; -pub const DEVPTS_SUPER_MAGIC: u32 = 7377; -pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; -pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; -pub const PIPEFS_MAGIC: u32 = 1346981957; -pub const PROC_SUPER_MAGIC: u32 = 40864; -pub const SOCKFS_MAGIC: u32 = 1397703499; -pub const SYSFS_MAGIC: u32 = 1650812274; -pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; -pub const MTD_INODE_FS_MAGIC: u32 = 288389204; -pub const ANON_INODE_FS_MAGIC: u32 = 151263540; -pub const BTRFS_TEST_MAGIC: u32 = 1936880249; -pub const NSFS_MAGIC: u32 = 1853056627; -pub const BPF_FS_MAGIC: u32 = 3405662737; -pub const AAFS_MAGIC: u32 = 1513908720; -pub const ZONEFS_MAGIC: u32 = 1515144787; -pub const UDF_SUPER_MAGIC: u32 = 352400198; -pub const DMA_BUF_MAGIC: u32 = 1145913666; -pub const DEVMEM_MAGIC: u32 = 1162691661; -pub const SECRETMEM_MAGIC: u32 = 1397048141; -pub const PROT_READ: u32 = 1; -pub const PROT_WRITE: u32 = 2; -pub const PROT_EXEC: u32 = 4; -pub const PROT_SEM: u32 = 8; -pub const PROT_NONE: u32 = 0; -pub const PROT_GROWSDOWN: u32 = 16777216; -pub const PROT_GROWSUP: u32 = 33554432; -pub const MAP_TYPE: u32 = 15; -pub const MAP_FIXED: u32 = 16; -pub const MAP_ANONYMOUS: u32 = 32; -pub const MAP_POPULATE: u32 = 32768; -pub const MAP_NONBLOCK: u32 = 65536; -pub const MAP_STACK: u32 = 131072; -pub const MAP_HUGETLB: u32 = 262144; -pub const MAP_SYNC: u32 = 524288; -pub const MAP_FIXED_NOREPLACE: u32 = 1048576; -pub const MAP_UNINITIALIZED: u32 = 67108864; -pub const MLOCK_ONFAULT: u32 = 1; -pub const MS_ASYNC: u32 = 1; -pub const MS_INVALIDATE: u32 = 2; -pub const MS_SYNC: u32 = 4; -pub const MADV_NORMAL: u32 = 0; -pub const MADV_RANDOM: u32 = 1; -pub const MADV_SEQUENTIAL: u32 = 2; -pub const MADV_WILLNEED: u32 = 3; -pub const MADV_DONTNEED: u32 = 4; -pub const MADV_FREE: u32 = 8; -pub const MADV_REMOVE: u32 = 9; -pub const MADV_DONTFORK: u32 = 10; -pub const MADV_DOFORK: u32 = 11; -pub const MADV_HWPOISON: u32 = 100; -pub const MADV_SOFT_OFFLINE: u32 = 101; -pub const MADV_MERGEABLE: u32 = 12; -pub const MADV_UNMERGEABLE: u32 = 13; -pub const MADV_HUGEPAGE: u32 = 14; -pub const MADV_NOHUGEPAGE: u32 = 15; -pub const MADV_DONTDUMP: u32 = 16; -pub const MADV_DODUMP: u32 = 17; -pub const MADV_WIPEONFORK: u32 = 18; -pub const MADV_KEEPONFORK: u32 = 19; -pub const MADV_COLD: u32 = 20; -pub const MADV_PAGEOUT: u32 = 21; -pub const MADV_POPULATE_READ: u32 = 22; -pub const MADV_POPULATE_WRITE: u32 = 23; -pub const MADV_DONTNEED_LOCKED: u32 = 24; -pub const MADV_COLLAPSE: u32 = 25; -pub const MAP_FILE: u32 = 0; -pub const PKEY_DISABLE_ACCESS: u32 = 1; -pub const PKEY_DISABLE_WRITE: u32 = 2; -pub const PKEY_ACCESS_MASK: u32 = 3; -pub const PROT_ADI: u32 = 16; -pub const MAP_RENAME: u32 = 32; -pub const MAP_NORESERVE: u32 = 64; -pub const MAP_INHERIT: u32 = 128; -pub const MAP_LOCKED: u32 = 256; -pub const _MAP_NEW: u32 = 2147483648; -pub const MAP_GROWSDOWN: u32 = 512; -pub const MAP_DENYWRITE: u32 = 2048; -pub const MAP_EXECUTABLE: u32 = 4096; -pub const MCL_CURRENT: u32 = 8192; -pub const MCL_FUTURE: u32 = 16384; -pub const MCL_ONFAULT: u32 = 32768; -pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; -pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; -pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; -pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; -pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; -pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; -pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; -pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; -pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; -pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; -pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; -pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; -pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; -pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; -pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; -pub const MREMAP_MAYMOVE: u32 = 1; -pub const MREMAP_FIXED: u32 = 2; -pub const MREMAP_DONTUNMAP: u32 = 4; -pub const OVERCOMMIT_GUESS: u32 = 0; -pub const OVERCOMMIT_ALWAYS: u32 = 1; -pub const OVERCOMMIT_NEVER: u32 = 2; -pub const MAP_SHARED: u32 = 1; -pub const MAP_PRIVATE: u32 = 2; -pub const MAP_SHARED_VALIDATE: u32 = 3; -pub const MAP_HUGE_SHIFT: u32 = 26; -pub const MAP_HUGE_MASK: u32 = 63; -pub const MAP_HUGE_16KB: u32 = 939524096; -pub const MAP_HUGE_64KB: u32 = 1073741824; -pub const MAP_HUGE_512KB: u32 = 1275068416; -pub const MAP_HUGE_1MB: u32 = 1342177280; -pub const MAP_HUGE_2MB: u32 = 1409286144; -pub const MAP_HUGE_8MB: u32 = 1543503872; -pub const MAP_HUGE_16MB: u32 = 1610612736; -pub const MAP_HUGE_32MB: u32 = 1677721600; -pub const MAP_HUGE_256MB: u32 = 1879048192; -pub const MAP_HUGE_512MB: u32 = 1946157056; -pub const MAP_HUGE_1GB: u32 = 2013265920; -pub const MAP_HUGE_2GB: u32 = 2080374784; -pub const MAP_HUGE_16GB: u32 = 2281701376; -pub const SIOCGSTAMP_OLD: u32 = 35078; -pub const SIOCGSTAMPNS_OLD: u32 = 35079; -pub const SOL_SOCKET: u32 = 65535; -pub const SO_DEBUG: u32 = 1; -pub const SO_PASSCRED: u32 = 2; -pub const SO_REUSEADDR: u32 = 4; -pub const SO_KEEPALIVE: u32 = 8; -pub const SO_DONTROUTE: u32 = 16; -pub const SO_BROADCAST: u32 = 32; -pub const SO_PEERCRED: u32 = 64; -pub const SO_LINGER: u32 = 128; -pub const SO_OOBINLINE: u32 = 256; -pub const SO_REUSEPORT: u32 = 512; -pub const SO_BSDCOMPAT: u32 = 1024; -pub const SO_RCVLOWAT: u32 = 2048; -pub const SO_SNDLOWAT: u32 = 4096; -pub const SO_RCVTIMEO_OLD: u32 = 8192; -pub const SO_SNDTIMEO_OLD: u32 = 16384; -pub const SO_ACCEPTCONN: u32 = 32768; -pub const SO_SNDBUF: u32 = 4097; -pub const SO_RCVBUF: u32 = 4098; -pub const SO_SNDBUFFORCE: u32 = 4106; -pub const SO_RCVBUFFORCE: u32 = 4107; -pub const SO_ERROR: u32 = 4103; -pub const SO_TYPE: u32 = 4104; -pub const SO_PROTOCOL: u32 = 4136; -pub const SO_DOMAIN: u32 = 4137; -pub const SO_NO_CHECK: u32 = 11; -pub const SO_PRIORITY: u32 = 12; -pub const SO_BINDTODEVICE: u32 = 13; -pub const SO_ATTACH_FILTER: u32 = 26; -pub const SO_DETACH_FILTER: u32 = 27; -pub const SO_GET_FILTER: u32 = 26; -pub const SO_PEERNAME: u32 = 28; -pub const SO_PEERSEC: u32 = 30; -pub const SO_PASSSEC: u32 = 31; -pub const SO_MARK: u32 = 34; -pub const SO_RXQ_OVFL: u32 = 36; -pub const SO_WIFI_STATUS: u32 = 37; -pub const SCM_WIFI_STATUS: u32 = 37; -pub const SO_PEEK_OFF: u32 = 38; -pub const SO_NOFCS: u32 = 39; -pub const SO_LOCK_FILTER: u32 = 40; -pub const SO_SELECT_ERR_QUEUE: u32 = 41; -pub const SO_BUSY_POLL: u32 = 48; -pub const SO_MAX_PACING_RATE: u32 = 49; -pub const SO_BPF_EXTENSIONS: u32 = 50; -pub const SO_INCOMING_CPU: u32 = 51; -pub const SO_ATTACH_BPF: u32 = 52; -pub const SO_DETACH_BPF: u32 = 27; -pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 53; -pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 54; -pub const SO_CNX_ADVICE: u32 = 55; -pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 56; -pub const SO_MEMINFO: u32 = 57; -pub const SO_INCOMING_NAPI_ID: u32 = 58; -pub const SO_COOKIE: u32 = 59; -pub const SCM_TIMESTAMPING_PKTINFO: u32 = 60; -pub const SO_PEERGROUPS: u32 = 61; -pub const SO_ZEROCOPY: u32 = 62; -pub const SO_TXTIME: u32 = 63; -pub const SCM_TXTIME: u32 = 63; -pub const SO_BINDTOIFINDEX: u32 = 65; -pub const SO_SECURITY_AUTHENTICATION: u32 = 20481; -pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 20482; -pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 20484; -pub const SO_TIMESTAMP_OLD: u32 = 29; -pub const SO_TIMESTAMPNS_OLD: u32 = 33; -pub const SO_TIMESTAMPING_OLD: u32 = 35; -pub const SO_TIMESTAMP_NEW: u32 = 70; -pub const SO_TIMESTAMPNS_NEW: u32 = 66; -pub const SO_TIMESTAMPING_NEW: u32 = 67; -pub const SO_RCVTIMEO_NEW: u32 = 68; -pub const SO_SNDTIMEO_NEW: u32 = 69; -pub const SO_DETACH_REUSEPORT_BPF: u32 = 71; -pub const SO_PREFER_BUSY_POLL: u32 = 72; -pub const SO_BUSY_POLL_BUDGET: u32 = 73; -pub const SO_NETNS_COOKIE: u32 = 80; -pub const SO_BUF_LOCK: u32 = 81; -pub const SO_RESERVE_MEM: u32 = 82; -pub const SO_TXREHASH: u32 = 83; -pub const SO_RCVMARK: u32 = 84; -pub const SO_TIMESTAMP: u32 = 29; -pub const SO_TIMESTAMPNS: u32 = 33; -pub const SO_TIMESTAMPING: u32 = 35; -pub const SO_RCVTIMEO: u32 = 8192; -pub const SO_SNDTIMEO: u32 = 16384; -pub const SCM_TIMESTAMP: u32 = 29; -pub const SCM_TIMESTAMPNS: u32 = 33; -pub const SCM_TIMESTAMPING: u32 = 35; -pub const SYS_SOCKET: u32 = 1; -pub const SYS_BIND: u32 = 2; -pub const SYS_CONNECT: u32 = 3; -pub const SYS_LISTEN: u32 = 4; -pub const SYS_ACCEPT: u32 = 5; -pub const SYS_GETSOCKNAME: u32 = 6; -pub const SYS_GETPEERNAME: u32 = 7; -pub const SYS_SOCKETPAIR: u32 = 8; -pub const SYS_SEND: u32 = 9; -pub const SYS_RECV: u32 = 10; -pub const SYS_SENDTO: u32 = 11; -pub const SYS_RECVFROM: u32 = 12; -pub const SYS_SHUTDOWN: u32 = 13; -pub const SYS_SETSOCKOPT: u32 = 14; -pub const SYS_GETSOCKOPT: u32 = 15; -pub const SYS_SENDMSG: u32 = 16; -pub const SYS_RECVMSG: u32 = 17; -pub const SYS_ACCEPT4: u32 = 18; -pub const SYS_RECVMMSG: u32 = 19; -pub const SYS_SENDMMSG: u32 = 20; -pub const __SO_ACCEPTCON: u32 = 65536; -pub const POLLWRBAND: u32 = 256; -pub const POLLMSG: u32 = 512; -pub const POLLREMOVE: u32 = 1024; -pub const POLLRDHUP: u32 = 2048; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const PR_SET_PDEATHSIG: u32 = 1; -pub const PR_GET_PDEATHSIG: u32 = 2; -pub const PR_GET_DUMPABLE: u32 = 3; -pub const PR_SET_DUMPABLE: u32 = 4; -pub const PR_GET_UNALIGN: u32 = 5; -pub const PR_SET_UNALIGN: u32 = 6; -pub const PR_UNALIGN_NOPRINT: u32 = 1; -pub const PR_UNALIGN_SIGBUS: u32 = 2; -pub const PR_GET_KEEPCAPS: u32 = 7; -pub const PR_SET_KEEPCAPS: u32 = 8; -pub const PR_GET_FPEMU: u32 = 9; -pub const PR_SET_FPEMU: u32 = 10; -pub const PR_FPEMU_NOPRINT: u32 = 1; -pub const PR_FPEMU_SIGFPE: u32 = 2; -pub const PR_GET_FPEXC: u32 = 11; -pub const PR_SET_FPEXC: u32 = 12; -pub const PR_FP_EXC_SW_ENABLE: u32 = 128; -pub const PR_FP_EXC_DIV: u32 = 65536; -pub const PR_FP_EXC_OVF: u32 = 131072; -pub const PR_FP_EXC_UND: u32 = 262144; -pub const PR_FP_EXC_RES: u32 = 524288; -pub const PR_FP_EXC_INV: u32 = 1048576; -pub const PR_FP_EXC_DISABLED: u32 = 0; -pub const PR_FP_EXC_NONRECOV: u32 = 1; -pub const PR_FP_EXC_ASYNC: u32 = 2; -pub const PR_FP_EXC_PRECISE: u32 = 3; -pub const PR_GET_TIMING: u32 = 13; -pub const PR_SET_TIMING: u32 = 14; -pub const PR_TIMING_STATISTICAL: u32 = 0; -pub const PR_TIMING_TIMESTAMP: u32 = 1; -pub const PR_SET_NAME: u32 = 15; -pub const PR_GET_NAME: u32 = 16; -pub const PR_GET_ENDIAN: u32 = 19; -pub const PR_SET_ENDIAN: u32 = 20; -pub const PR_ENDIAN_BIG: u32 = 0; -pub const PR_ENDIAN_LITTLE: u32 = 1; -pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; -pub const PR_GET_SECCOMP: u32 = 21; -pub const PR_SET_SECCOMP: u32 = 22; -pub const PR_CAPBSET_READ: u32 = 23; -pub const PR_CAPBSET_DROP: u32 = 24; -pub const PR_GET_TSC: u32 = 25; -pub const PR_SET_TSC: u32 = 26; -pub const PR_TSC_ENABLE: u32 = 1; -pub const PR_TSC_SIGSEGV: u32 = 2; -pub const PR_GET_SECUREBITS: u32 = 27; -pub const PR_SET_SECUREBITS: u32 = 28; -pub const PR_SET_TIMERSLACK: u32 = 29; -pub const PR_GET_TIMERSLACK: u32 = 30; -pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; -pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; -pub const PR_MCE_KILL: u32 = 33; -pub const PR_MCE_KILL_CLEAR: u32 = 0; -pub const PR_MCE_KILL_SET: u32 = 1; -pub const PR_MCE_KILL_LATE: u32 = 0; -pub const PR_MCE_KILL_EARLY: u32 = 1; -pub const PR_MCE_KILL_DEFAULT: u32 = 2; -pub const PR_MCE_KILL_GET: u32 = 34; -pub const PR_SET_MM: u32 = 35; -pub const PR_SET_MM_START_CODE: u32 = 1; -pub const PR_SET_MM_END_CODE: u32 = 2; -pub const PR_SET_MM_START_DATA: u32 = 3; -pub const PR_SET_MM_END_DATA: u32 = 4; -pub const PR_SET_MM_START_STACK: u32 = 5; -pub const PR_SET_MM_START_BRK: u32 = 6; -pub const PR_SET_MM_BRK: u32 = 7; -pub const PR_SET_MM_ARG_START: u32 = 8; -pub const PR_SET_MM_ARG_END: u32 = 9; -pub const PR_SET_MM_ENV_START: u32 = 10; -pub const PR_SET_MM_ENV_END: u32 = 11; -pub const PR_SET_MM_AUXV: u32 = 12; -pub const PR_SET_MM_EXE_FILE: u32 = 13; -pub const PR_SET_MM_MAP: u32 = 14; -pub const PR_SET_MM_MAP_SIZE: u32 = 15; -pub const PR_SET_PTRACER: u32 = 1499557217; -pub const PR_SET_CHILD_SUBREAPER: u32 = 36; -pub const PR_GET_CHILD_SUBREAPER: u32 = 37; -pub const PR_SET_NO_NEW_PRIVS: u32 = 38; -pub const PR_GET_NO_NEW_PRIVS: u32 = 39; -pub const PR_GET_TID_ADDRESS: u32 = 40; -pub const PR_SET_THP_DISABLE: u32 = 41; -pub const PR_GET_THP_DISABLE: u32 = 42; -pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; -pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; -pub const PR_SET_FP_MODE: u32 = 45; -pub const PR_GET_FP_MODE: u32 = 46; -pub const PR_FP_MODE_FR: u32 = 1; -pub const PR_FP_MODE_FRE: u32 = 2; -pub const PR_CAP_AMBIENT: u32 = 47; -pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; -pub const PR_CAP_AMBIENT_RAISE: u32 = 2; -pub const PR_CAP_AMBIENT_LOWER: u32 = 3; -pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; -pub const PR_SVE_SET_VL: u32 = 50; -pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SVE_GET_VL: u32 = 51; -pub const PR_SVE_VL_LEN_MASK: u32 = 65535; -pub const PR_SVE_VL_INHERIT: u32 = 131072; -pub const PR_GET_SPECULATION_CTRL: u32 = 52; -pub const PR_SET_SPECULATION_CTRL: u32 = 53; -pub const PR_SPEC_STORE_BYPASS: u32 = 0; -pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; -pub const PR_SPEC_L1D_FLUSH: u32 = 2; -pub const PR_SPEC_NOT_AFFECTED: u32 = 0; -pub const PR_SPEC_PRCTL: u32 = 1; -pub const PR_SPEC_ENABLE: u32 = 2; -pub const PR_SPEC_DISABLE: u32 = 4; -pub const PR_SPEC_FORCE_DISABLE: u32 = 8; -pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; -pub const PR_PAC_RESET_KEYS: u32 = 54; -pub const PR_PAC_APIAKEY: u32 = 1; -pub const PR_PAC_APIBKEY: u32 = 2; -pub const PR_PAC_APDAKEY: u32 = 4; -pub const PR_PAC_APDBKEY: u32 = 8; -pub const PR_PAC_APGAKEY: u32 = 16; -pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; -pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; -pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; -pub const PR_MTE_TCF_NONE: u32 = 0; -pub const PR_MTE_TCF_SYNC: u32 = 2; -pub const PR_MTE_TCF_ASYNC: u32 = 4; -pub const PR_MTE_TCF_MASK: u32 = 6; -pub const PR_MTE_TAG_SHIFT: u32 = 3; -pub const PR_MTE_TAG_MASK: u32 = 524280; -pub const PR_MTE_TCF_SHIFT: u32 = 1; -pub const PR_SET_IO_FLUSHER: u32 = 57; -pub const PR_GET_IO_FLUSHER: u32 = 58; -pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; -pub const PR_SYS_DISPATCH_OFF: u32 = 0; -pub const PR_SYS_DISPATCH_ON: u32 = 1; -pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; -pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; -pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; -pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; -pub const PR_SCHED_CORE: u32 = 62; -pub const PR_SCHED_CORE_GET: u32 = 0; -pub const PR_SCHED_CORE_CREATE: u32 = 1; -pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; -pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; -pub const PR_SCHED_CORE_MAX: u32 = 4; -pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; -pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; -pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; -pub const PR_SME_SET_VL: u32 = 63; -pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SME_GET_VL: u32 = 64; -pub const PR_SME_VL_LEN_MASK: u32 = 65535; -pub const PR_SME_VL_INHERIT: u32 = 131072; -pub const PR_SET_MDWE: u32 = 65; -pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; -pub const PR_GET_MDWE: u32 = 66; -pub const PR_SET_VMA: u32 = 1398164801; -pub const PR_SET_VMA_ANON_NAME: u32 = 0; -pub const GRND_NONBLOCK: u32 = 1; -pub const GRND_RANDOM: u32 = 2; -pub const GRND_INSECURE: u32 = 4; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -pub const CLOCK_REALTIME: u32 = 0; -pub const CLOCK_MONOTONIC: u32 = 1; -pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; -pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; -pub const CLOCK_MONOTONIC_RAW: u32 = 4; -pub const CLOCK_REALTIME_COARSE: u32 = 5; -pub const CLOCK_MONOTONIC_COARSE: u32 = 6; -pub const CLOCK_BOOTTIME: u32 = 7; -pub const CLOCK_REALTIME_ALARM: u32 = 8; -pub const CLOCK_BOOTTIME_ALARM: u32 = 9; -pub const CLOCK_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const RUSAGE_SELF: u32 = 0; -pub const RUSAGE_CHILDREN: i32 = -1; -pub const RUSAGE_BOTH: i32 = -2; -pub const RUSAGE_THREAD: u32 = 1; -pub const RLIM64_INFINITY: i32 = -1; -pub const PRIO_MIN: i32 = -20; -pub const PRIO_MAX: u32 = 20; -pub const PRIO_PROCESS: u32 = 0; -pub const PRIO_PGRP: u32 = 1; -pub const PRIO_USER: u32 = 2; -pub const _STK_LIM: u32 = 8388608; -pub const MLOCK_LIMIT: u32 = 8388608; -pub const RLIMIT_NOFILE: u32 = 6; -pub const RLIMIT_NPROC: u32 = 7; -pub const RLIMIT_CPU: u32 = 0; -pub const RLIMIT_FSIZE: u32 = 1; -pub const RLIMIT_DATA: u32 = 2; -pub const RLIMIT_STACK: u32 = 3; -pub const RLIMIT_CORE: u32 = 4; -pub const RLIMIT_RSS: u32 = 5; -pub const RLIMIT_MEMLOCK: u32 = 8; -pub const RLIMIT_AS: u32 = 9; -pub const RLIMIT_LOCKS: u32 = 10; -pub const RLIMIT_SIGPENDING: u32 = 11; -pub const RLIMIT_MSGQUEUE: u32 = 12; -pub const RLIMIT_NICE: u32 = 13; -pub const RLIMIT_RTPRIO: u32 = 14; -pub const RLIMIT_RTTIME: u32 = 15; -pub const RLIM_NLIMITS: u32 = 16; -pub const RLIM_INFINITY: i32 = -1; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SUBSIG_STACK: u32 = 0; -pub const SUBSIG_ILLINST: u32 = 2; -pub const SUBSIG_PRIVINST: u32 = 3; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGEMT: u32 = 7; -pub const SUBSIG_TAG: u32 = 10; -pub const SIGFPE: u32 = 8; -pub const SUBSIG_FPDISABLED: u32 = 1024; -pub const SUBSIG_FPERROR: u32 = 1028; -pub const SUBSIG_FPINTOVFL: u32 = 1; -pub const SUBSIG_FPSTSIG: u32 = 2; -pub const SUBSIG_IDIVZERO: u32 = 20; -pub const SUBSIG_FPINEXACT: u32 = 196; -pub const SUBSIG_FPDIVZERO: u32 = 200; -pub const SUBSIG_FPUNFLOW: u32 = 204; -pub const SUBSIG_FPOPERROR: u32 = 208; -pub const SUBSIG_FPOVFLOW: u32 = 212; -pub const SIGKILL: u32 = 9; -pub const SIGBUS: u32 = 10; -pub const SUBSIG_BUSTIMEOUT: u32 = 1; -pub const SUBSIG_ALIGNMENT: u32 = 2; -pub const SUBSIG_MISCERROR: u32 = 5; -pub const SIGSEGV: u32 = 11; -pub const SUBSIG_NOMAPPING: u32 = 3; -pub const SUBSIG_PROTECTION: u32 = 4; -pub const SUBSIG_SEGERROR: u32 = 5; -pub const SIGSYS: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGURG: u32 = 16; -pub const SIGSTOP: u32 = 17; -pub const SIGTSTP: u32 = 18; -pub const SIGCONT: u32 = 19; -pub const SIGCHLD: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGIO: u32 = 23; -pub const SIGPOLL: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGLOST: u32 = 29; -pub const SIGPWR: u32 = 29; -pub const SIGUSR1: u32 = 30; -pub const SIGUSR2: u32 = 31; -pub const __OLD_NSIG: u32 = 32; -pub const __NEW_NSIG: u32 = 64; -pub const _NSIG_BPW: u32 = 64; -pub const _NSIG_WORDS: u32 = 1; -pub const SIGRTMIN: u32 = 32; -pub const SIGRTMAX: u32 = 64; -pub const _NSIG: u32 = 32; -pub const NSIG: u32 = 32; -pub const _SV_SSTACK: u32 = 1; -pub const _SV_INTR: u32 = 2; -pub const _SV_RESET: u32 = 4; -pub const _SV_IGNCHILD: u32 = 8; -pub const SA_NOCLDSTOP: u32 = 8; -pub const SA_STACK: u32 = 1; -pub const SA_ONSTACK: u32 = 1; -pub const SA_RESTART: u32 = 2; -pub const SA_RESETHAND: u32 = 4; -pub const SA_NODEFER: u32 = 32; -pub const SA_NOCLDWAIT: u32 = 256; -pub const SA_SIGINFO: u32 = 512; -pub const SIG_BLOCK: u32 = 1; -pub const SIG_UNBLOCK: u32 = 2; -pub const SIG_SETMASK: u32 = 4; -pub const MINSIGSTKSZ: u32 = 4096; -pub const SIGSTKSZ: u32 = 16384; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; -pub const SA_NOMASK: u32 = 32; -pub const SA_ONESHOT: u32 = 4; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; -pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SI_NOINFO: u32 = 32767; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const S_IFMT: u32 = 61440; -pub const S_IFSOCK: u32 = 49152; -pub const S_IFLNK: u32 = 40960; -pub const S_IFREG: u32 = 32768; -pub const S_IFBLK: u32 = 24576; -pub const S_IFDIR: u32 = 16384; -pub const S_IFCHR: u32 = 8192; -pub const S_IFIFO: u32 = 4096; -pub const S_ISUID: u32 = 2048; -pub const S_ISGID: u32 = 1024; -pub const S_ISVTX: u32 = 512; -pub const S_IRWXU: u32 = 448; -pub const S_IRUSR: u32 = 256; -pub const S_IWUSR: u32 = 128; -pub const S_IXUSR: u32 = 64; -pub const S_IRWXG: u32 = 56; -pub const S_IRGRP: u32 = 32; -pub const S_IWGRP: u32 = 16; -pub const S_IXGRP: u32 = 8; -pub const S_IRWXO: u32 = 7; -pub const S_IROTH: u32 = 4; -pub const S_IWOTH: u32 = 2; -pub const S_IXOTH: u32 = 1; -pub const STATX_TYPE: u32 = 1; -pub const STATX_MODE: u32 = 2; -pub const STATX_NLINK: u32 = 4; -pub const STATX_UID: u32 = 8; -pub const STATX_GID: u32 = 16; -pub const STATX_ATIME: u32 = 32; -pub const STATX_MTIME: u32 = 64; -pub const STATX_CTIME: u32 = 128; -pub const STATX_INO: u32 = 256; -pub const STATX_SIZE: u32 = 512; -pub const STATX_BLOCKS: u32 = 1024; -pub const STATX_BASIC_STATS: u32 = 2047; -pub const STATX_BTIME: u32 = 2048; -pub const STATX_MNT_ID: u32 = 4096; -pub const STATX_DIOALIGN: u32 = 8192; -pub const STATX__RESERVED: u32 = 2147483648; -pub const STATX_ALL: u32 = 4095; -pub const STATX_ATTR_COMPRESSED: u32 = 4; -pub const STATX_ATTR_IMMUTABLE: u32 = 16; -pub const STATX_ATTR_APPEND: u32 = 32; -pub const STATX_ATTR_NODUMP: u32 = 64; -pub const STATX_ATTR_ENCRYPTED: u32 = 2048; -pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; -pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; -pub const STATX_ATTR_VERITY: u32 = 1048576; -pub const STATX_ATTR_DAX: u32 = 2097152; -pub const SI_LOAD_SHIFT: u32 = 16; -pub const TCP_MSS_DEFAULT: u32 = 536; -pub const TCP_MSS_DESIRED: u32 = 1220; -pub const TCP_NODELAY: u32 = 1; -pub const TCP_MAXSEG: u32 = 2; -pub const TCP_CORK: u32 = 3; -pub const TCP_KEEPIDLE: u32 = 4; -pub const TCP_KEEPINTVL: u32 = 5; -pub const TCP_KEEPCNT: u32 = 6; -pub const TCP_SYNCNT: u32 = 7; -pub const TCP_LINGER2: u32 = 8; -pub const TCP_DEFER_ACCEPT: u32 = 9; -pub const TCP_WINDOW_CLAMP: u32 = 10; -pub const TCP_INFO: u32 = 11; -pub const TCP_QUICKACK: u32 = 12; -pub const TCP_CONGESTION: u32 = 13; -pub const TCP_MD5SIG: u32 = 14; -pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; -pub const TCP_THIN_DUPACK: u32 = 17; -pub const TCP_USER_TIMEOUT: u32 = 18; -pub const TCP_REPAIR: u32 = 19; -pub const TCP_REPAIR_QUEUE: u32 = 20; -pub const TCP_QUEUE_SEQ: u32 = 21; -pub const TCP_REPAIR_OPTIONS: u32 = 22; -pub const TCP_FASTOPEN: u32 = 23; -pub const TCP_TIMESTAMP: u32 = 24; -pub const TCP_NOTSENT_LOWAT: u32 = 25; -pub const TCP_CC_INFO: u32 = 26; -pub const TCP_SAVE_SYN: u32 = 27; -pub const TCP_SAVED_SYN: u32 = 28; -pub const TCP_REPAIR_WINDOW: u32 = 29; -pub const TCP_FASTOPEN_CONNECT: u32 = 30; -pub const TCP_ULP: u32 = 31; -pub const TCP_MD5SIG_EXT: u32 = 32; -pub const TCP_FASTOPEN_KEY: u32 = 33; -pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; -pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; -pub const TCP_INQ: u32 = 36; -pub const TCP_CM_INQ: u32 = 36; -pub const TCP_TX_DELAY: u32 = 37; -pub const TCP_REPAIR_ON: u32 = 1; -pub const TCP_REPAIR_OFF: u32 = 0; -pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; -pub const TCPI_OPT_TIMESTAMPS: u32 = 1; -pub const TCPI_OPT_SACK: u32 = 2; -pub const TCPI_OPT_WSCALE: u32 = 4; -pub const TCPI_OPT_ECN: u32 = 8; -pub const TCPI_OPT_ECN_SEEN: u32 = 16; -pub const TCPI_OPT_SYN_DATA: u32 = 32; -pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; -pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; -pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; -pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; -pub const TIOCPKT_DATA: u32 = 0; -pub const TIOCPKT_FLUSHREAD: u32 = 1; -pub const TIOCPKT_FLUSHWRITE: u32 = 2; -pub const TIOCPKT_STOP: u32 = 4; -pub const TIOCPKT_START: u32 = 8; -pub const TIOCPKT_NOSTOP: u32 = 16; -pub const TIOCPKT_DOSTOP: u32 = 32; -pub const TIOCPKT_IOCTL: u32 = 64; -pub const IGNBRK: u32 = 1; -pub const BRKINT: u32 = 2; -pub const IGNPAR: u32 = 4; -pub const PARMRK: u32 = 8; -pub const INPCK: u32 = 16; -pub const ISTRIP: u32 = 32; -pub const INLCR: u32 = 64; -pub const IGNCR: u32 = 128; -pub const ICRNL: u32 = 256; -pub const IXANY: u32 = 2048; -pub const OPOST: u32 = 1; -pub const OCRNL: u32 = 8; -pub const ONOCR: u32 = 16; -pub const ONLRET: u32 = 32; -pub const OFILL: u32 = 64; -pub const OFDEL: u32 = 128; -pub const B0: u32 = 0; -pub const B50: u32 = 1; -pub const B75: u32 = 2; -pub const B110: u32 = 3; -pub const B134: u32 = 4; -pub const B150: u32 = 5; -pub const B200: u32 = 6; -pub const B300: u32 = 7; -pub const B600: u32 = 8; -pub const B1200: u32 = 9; -pub const B1800: u32 = 10; -pub const B2400: u32 = 11; -pub const B4800: u32 = 12; -pub const B9600: u32 = 13; -pub const B19200: u32 = 14; -pub const B38400: u32 = 15; -pub const EXTA: u32 = 14; -pub const EXTB: u32 = 15; -pub const ADDRB: u32 = 536870912; -pub const CMSPAR: u32 = 1073741824; -pub const CRTSCTS: u32 = 2147483648; -pub const IBSHIFT: u32 = 16; -pub const TCOOFF: u32 = 0; -pub const TCOON: u32 = 1; -pub const TCIOFF: u32 = 2; -pub const TCION: u32 = 3; -pub const TCIFLUSH: u32 = 0; -pub const TCOFLUSH: u32 = 1; -pub const TCIOFLUSH: u32 = 2; -pub const NCC: u32 = 8; -pub const NCCS: u32 = 17; -pub const VINTR: u32 = 0; -pub const VQUIT: u32 = 1; -pub const VERASE: u32 = 2; -pub const VKILL: u32 = 3; -pub const VEOF: u32 = 4; -pub const VEOL: u32 = 5; -pub const VEOL2: u32 = 6; -pub const VSWTC: u32 = 7; -pub const VSTART: u32 = 8; -pub const VSTOP: u32 = 9; -pub const VSUSP: u32 = 10; -pub const VDSUSP: u32 = 11; -pub const VREPRINT: u32 = 12; -pub const VDISCARD: u32 = 13; -pub const VWERASE: u32 = 14; -pub const VLNEXT: u32 = 15; -pub const VMIN: u32 = 4; -pub const VTIME: u32 = 5; -pub const IUCLC: u32 = 512; -pub const IXON: u32 = 1024; -pub const IXOFF: u32 = 4096; -pub const IMAXBEL: u32 = 8192; -pub const IUTF8: u32 = 16384; -pub const OLCUC: u32 = 2; -pub const ONLCR: u32 = 4; -pub const NLDLY: u32 = 256; -pub const NL0: u32 = 0; -pub const NL1: u32 = 256; -pub const CRDLY: u32 = 1536; -pub const CR0: u32 = 0; -pub const CR1: u32 = 512; -pub const CR2: u32 = 1024; -pub const CR3: u32 = 1536; -pub const TABDLY: u32 = 6144; -pub const TAB0: u32 = 0; -pub const TAB1: u32 = 2048; -pub const TAB2: u32 = 4096; -pub const TAB3: u32 = 6144; -pub const XTABS: u32 = 6144; -pub const BSDLY: u32 = 8192; -pub const BS0: u32 = 0; -pub const BS1: u32 = 8192; -pub const VTDLY: u32 = 16384; -pub const VT0: u32 = 0; -pub const VT1: u32 = 16384; -pub const FFDLY: u32 = 32768; -pub const FF0: u32 = 0; -pub const FF1: u32 = 32768; -pub const PAGEOUT: u32 = 65536; -pub const WRAP: u32 = 131072; -pub const CBAUD: u32 = 4111; -pub const CSIZE: u32 = 48; -pub const CS5: u32 = 0; -pub const CS6: u32 = 16; -pub const CS7: u32 = 32; -pub const CS8: u32 = 48; -pub const CSTOPB: u32 = 64; -pub const CREAD: u32 = 128; -pub const PARENB: u32 = 256; -pub const PARODD: u32 = 512; -pub const HUPCL: u32 = 1024; -pub const CLOCAL: u32 = 2048; -pub const CBAUDEX: u32 = 4096; -pub const BOTHER: u32 = 4096; -pub const B57600: u32 = 4097; -pub const B115200: u32 = 4098; -pub const B230400: u32 = 4099; -pub const B460800: u32 = 4100; -pub const B76800: u32 = 4101; -pub const B153600: u32 = 4102; -pub const B307200: u32 = 4103; -pub const B614400: u32 = 4104; -pub const B921600: u32 = 4105; -pub const B500000: u32 = 4106; -pub const B576000: u32 = 4107; -pub const B1000000: u32 = 4108; -pub const B1152000: u32 = 4109; -pub const B1500000: u32 = 4110; -pub const B2000000: u32 = 4111; -pub const CIBAUD: u32 = 269418496; -pub const ISIG: u32 = 1; -pub const ICANON: u32 = 2; -pub const XCASE: u32 = 4; -pub const ECHO: u32 = 8; -pub const ECHOE: u32 = 16; -pub const ECHOK: u32 = 32; -pub const ECHONL: u32 = 64; -pub const NOFLSH: u32 = 128; -pub const TOSTOP: u32 = 256; -pub const ECHOCTL: u32 = 512; -pub const ECHOPRT: u32 = 1024; -pub const ECHOKE: u32 = 2048; -pub const DEFECHO: u32 = 4096; -pub const FLUSHO: u32 = 8192; -pub const PENDIN: u32 = 16384; -pub const IEXTEN: u32 = 32768; -pub const EXTPROC: u32 = 65536; -pub const TIOCM_LE: u32 = 1; -pub const TIOCM_DTR: u32 = 2; -pub const TIOCM_RTS: u32 = 4; -pub const TIOCM_ST: u32 = 8; -pub const TIOCM_SR: u32 = 16; -pub const TIOCM_CTS: u32 = 32; -pub const TIOCM_CAR: u32 = 64; -pub const TIOCM_RNG: u32 = 128; -pub const TIOCM_DSR: u32 = 256; -pub const TIOCM_CD: u32 = 64; -pub const TIOCM_RI: u32 = 128; -pub const TIOCM_OUT1: u32 = 8192; -pub const TIOCM_OUT2: u32 = 16384; -pub const TIOCM_LOOP: u32 = 32768; -pub const TIOCSER_TEMT: u32 = 1; -pub const TCSANOW: u32 = 0; -pub const TCSADRAIN: u32 = 1; -pub const TCSAFLUSH: u32 = 2; -pub const UIO_FASTIOV: u32 = 8; -pub const UIO_MAXIOV: u32 = 1024; -pub const UNIX_PATH_MAX: u32 = 108; -pub const __NR_restart_syscall: u32 = 0; -pub const __NR_exit: u32 = 1; -pub const __NR_fork: u32 = 2; -pub const __NR_read: u32 = 3; -pub const __NR_write: u32 = 4; -pub const __NR_open: u32 = 5; -pub const __NR_close: u32 = 6; -pub const __NR_wait4: u32 = 7; -pub const __NR_creat: u32 = 8; -pub const __NR_link: u32 = 9; -pub const __NR_unlink: u32 = 10; -pub const __NR_execv: u32 = 11; -pub const __NR_chdir: u32 = 12; -pub const __NR_chown: u32 = 13; -pub const __NR_mknod: u32 = 14; -pub const __NR_chmod: u32 = 15; -pub const __NR_lchown: u32 = 16; -pub const __NR_brk: u32 = 17; -pub const __NR_perfctr: u32 = 18; -pub const __NR_lseek: u32 = 19; -pub const __NR_getpid: u32 = 20; -pub const __NR_capget: u32 = 21; -pub const __NR_capset: u32 = 22; -pub const __NR_setuid: u32 = 23; -pub const __NR_getuid: u32 = 24; -pub const __NR_vmsplice: u32 = 25; -pub const __NR_ptrace: u32 = 26; -pub const __NR_alarm: u32 = 27; -pub const __NR_sigaltstack: u32 = 28; -pub const __NR_pause: u32 = 29; -pub const __NR_utime: u32 = 30; -pub const __NR_access: u32 = 33; -pub const __NR_nice: u32 = 34; -pub const __NR_sync: u32 = 36; -pub const __NR_kill: u32 = 37; -pub const __NR_stat: u32 = 38; -pub const __NR_sendfile: u32 = 39; -pub const __NR_lstat: u32 = 40; -pub const __NR_dup: u32 = 41; -pub const __NR_pipe: u32 = 42; -pub const __NR_times: u32 = 43; -pub const __NR_umount2: u32 = 45; -pub const __NR_setgid: u32 = 46; -pub const __NR_getgid: u32 = 47; -pub const __NR_signal: u32 = 48; -pub const __NR_geteuid: u32 = 49; -pub const __NR_getegid: u32 = 50; -pub const __NR_acct: u32 = 51; -pub const __NR_memory_ordering: u32 = 52; -pub const __NR_ioctl: u32 = 54; -pub const __NR_reboot: u32 = 55; -pub const __NR_symlink: u32 = 57; -pub const __NR_readlink: u32 = 58; -pub const __NR_execve: u32 = 59; -pub const __NR_umask: u32 = 60; -pub const __NR_chroot: u32 = 61; -pub const __NR_fstat: u32 = 62; -pub const __NR_fstat64: u32 = 63; -pub const __NR_getpagesize: u32 = 64; -pub const __NR_msync: u32 = 65; -pub const __NR_vfork: u32 = 66; -pub const __NR_pread64: u32 = 67; -pub const __NR_pwrite64: u32 = 68; -pub const __NR_mmap: u32 = 71; -pub const __NR_munmap: u32 = 73; -pub const __NR_mprotect: u32 = 74; -pub const __NR_madvise: u32 = 75; -pub const __NR_vhangup: u32 = 76; -pub const __NR_mincore: u32 = 78; -pub const __NR_getgroups: u32 = 79; -pub const __NR_setgroups: u32 = 80; -pub const __NR_getpgrp: u32 = 81; -pub const __NR_setitimer: u32 = 83; -pub const __NR_swapon: u32 = 85; -pub const __NR_getitimer: u32 = 86; -pub const __NR_sethostname: u32 = 88; -pub const __NR_dup2: u32 = 90; -pub const __NR_fcntl: u32 = 92; -pub const __NR_select: u32 = 93; -pub const __NR_fsync: u32 = 95; -pub const __NR_setpriority: u32 = 96; -pub const __NR_socket: u32 = 97; -pub const __NR_connect: u32 = 98; -pub const __NR_accept: u32 = 99; -pub const __NR_getpriority: u32 = 100; -pub const __NR_rt_sigreturn: u32 = 101; -pub const __NR_rt_sigaction: u32 = 102; -pub const __NR_rt_sigprocmask: u32 = 103; -pub const __NR_rt_sigpending: u32 = 104; -pub const __NR_rt_sigtimedwait: u32 = 105; -pub const __NR_rt_sigqueueinfo: u32 = 106; -pub const __NR_rt_sigsuspend: u32 = 107; -pub const __NR_setresuid: u32 = 108; -pub const __NR_getresuid: u32 = 109; -pub const __NR_setresgid: u32 = 110; -pub const __NR_getresgid: u32 = 111; -pub const __NR_recvmsg: u32 = 113; -pub const __NR_sendmsg: u32 = 114; -pub const __NR_gettimeofday: u32 = 116; -pub const __NR_getrusage: u32 = 117; -pub const __NR_getsockopt: u32 = 118; -pub const __NR_getcwd: u32 = 119; -pub const __NR_readv: u32 = 120; -pub const __NR_writev: u32 = 121; -pub const __NR_settimeofday: u32 = 122; -pub const __NR_fchown: u32 = 123; -pub const __NR_fchmod: u32 = 124; -pub const __NR_recvfrom: u32 = 125; -pub const __NR_setreuid: u32 = 126; -pub const __NR_setregid: u32 = 127; -pub const __NR_rename: u32 = 128; -pub const __NR_truncate: u32 = 129; -pub const __NR_ftruncate: u32 = 130; -pub const __NR_flock: u32 = 131; -pub const __NR_lstat64: u32 = 132; -pub const __NR_sendto: u32 = 133; -pub const __NR_shutdown: u32 = 134; -pub const __NR_socketpair: u32 = 135; -pub const __NR_mkdir: u32 = 136; -pub const __NR_rmdir: u32 = 137; -pub const __NR_utimes: u32 = 138; -pub const __NR_stat64: u32 = 139; -pub const __NR_sendfile64: u32 = 140; -pub const __NR_getpeername: u32 = 141; -pub const __NR_futex: u32 = 142; -pub const __NR_gettid: u32 = 143; -pub const __NR_getrlimit: u32 = 144; -pub const __NR_setrlimit: u32 = 145; -pub const __NR_pivot_root: u32 = 146; -pub const __NR_prctl: u32 = 147; -pub const __NR_pciconfig_read: u32 = 148; -pub const __NR_pciconfig_write: u32 = 149; -pub const __NR_getsockname: u32 = 150; -pub const __NR_inotify_init: u32 = 151; -pub const __NR_inotify_add_watch: u32 = 152; -pub const __NR_poll: u32 = 153; -pub const __NR_getdents64: u32 = 154; -pub const __NR_inotify_rm_watch: u32 = 156; -pub const __NR_statfs: u32 = 157; -pub const __NR_fstatfs: u32 = 158; -pub const __NR_umount: u32 = 159; -pub const __NR_sched_set_affinity: u32 = 160; -pub const __NR_sched_get_affinity: u32 = 161; -pub const __NR_getdomainname: u32 = 162; -pub const __NR_setdomainname: u32 = 163; -pub const __NR_utrap_install: u32 = 164; -pub const __NR_quotactl: u32 = 165; -pub const __NR_set_tid_address: u32 = 166; -pub const __NR_mount: u32 = 167; -pub const __NR_ustat: u32 = 168; -pub const __NR_setxattr: u32 = 169; -pub const __NR_lsetxattr: u32 = 170; -pub const __NR_fsetxattr: u32 = 171; -pub const __NR_getxattr: u32 = 172; -pub const __NR_lgetxattr: u32 = 173; -pub const __NR_getdents: u32 = 174; -pub const __NR_setsid: u32 = 175; -pub const __NR_fchdir: u32 = 176; -pub const __NR_fgetxattr: u32 = 177; -pub const __NR_listxattr: u32 = 178; -pub const __NR_llistxattr: u32 = 179; -pub const __NR_flistxattr: u32 = 180; -pub const __NR_removexattr: u32 = 181; -pub const __NR_lremovexattr: u32 = 182; -pub const __NR_sigpending: u32 = 183; -pub const __NR_query_module: u32 = 184; -pub const __NR_setpgid: u32 = 185; -pub const __NR_fremovexattr: u32 = 186; -pub const __NR_tkill: u32 = 187; -pub const __NR_exit_group: u32 = 188; -pub const __NR_uname: u32 = 189; -pub const __NR_init_module: u32 = 190; -pub const __NR_personality: u32 = 191; -pub const __NR_remap_file_pages: u32 = 192; -pub const __NR_epoll_create: u32 = 193; -pub const __NR_epoll_ctl: u32 = 194; -pub const __NR_epoll_wait: u32 = 195; -pub const __NR_ioprio_set: u32 = 196; -pub const __NR_getppid: u32 = 197; -pub const __NR_sigaction: u32 = 198; -pub const __NR_sgetmask: u32 = 199; -pub const __NR_ssetmask: u32 = 200; -pub const __NR_sigsuspend: u32 = 201; -pub const __NR_oldlstat: u32 = 202; -pub const __NR_uselib: u32 = 203; -pub const __NR_readdir: u32 = 204; -pub const __NR_readahead: u32 = 205; -pub const __NR_socketcall: u32 = 206; -pub const __NR_syslog: u32 = 207; -pub const __NR_lookup_dcookie: u32 = 208; -pub const __NR_fadvise64: u32 = 209; -pub const __NR_fadvise64_64: u32 = 210; -pub const __NR_tgkill: u32 = 211; -pub const __NR_waitpid: u32 = 212; -pub const __NR_swapoff: u32 = 213; -pub const __NR_sysinfo: u32 = 214; -pub const __NR_ipc: u32 = 215; -pub const __NR_sigreturn: u32 = 216; -pub const __NR_clone: u32 = 217; -pub const __NR_ioprio_get: u32 = 218; -pub const __NR_adjtimex: u32 = 219; -pub const __NR_sigprocmask: u32 = 220; -pub const __NR_create_module: u32 = 221; -pub const __NR_delete_module: u32 = 222; -pub const __NR_get_kernel_syms: u32 = 223; -pub const __NR_getpgid: u32 = 224; -pub const __NR_bdflush: u32 = 225; -pub const __NR_sysfs: u32 = 226; -pub const __NR_afs_syscall: u32 = 227; -pub const __NR_setfsuid: u32 = 228; -pub const __NR_setfsgid: u32 = 229; -pub const __NR__newselect: u32 = 230; -pub const __NR_splice: u32 = 232; -pub const __NR_stime: u32 = 233; -pub const __NR_statfs64: u32 = 234; -pub const __NR_fstatfs64: u32 = 235; -pub const __NR__llseek: u32 = 236; -pub const __NR_mlock: u32 = 237; -pub const __NR_munlock: u32 = 238; -pub const __NR_mlockall: u32 = 239; -pub const __NR_munlockall: u32 = 240; -pub const __NR_sched_setparam: u32 = 241; -pub const __NR_sched_getparam: u32 = 242; -pub const __NR_sched_setscheduler: u32 = 243; -pub const __NR_sched_getscheduler: u32 = 244; -pub const __NR_sched_yield: u32 = 245; -pub const __NR_sched_get_priority_max: u32 = 246; -pub const __NR_sched_get_priority_min: u32 = 247; -pub const __NR_sched_rr_get_interval: u32 = 248; -pub const __NR_nanosleep: u32 = 249; -pub const __NR_mremap: u32 = 250; -pub const __NR__sysctl: u32 = 251; -pub const __NR_getsid: u32 = 252; -pub const __NR_fdatasync: u32 = 253; -pub const __NR_nfsservctl: u32 = 254; -pub const __NR_sync_file_range: u32 = 255; -pub const __NR_clock_settime: u32 = 256; -pub const __NR_clock_gettime: u32 = 257; -pub const __NR_clock_getres: u32 = 258; -pub const __NR_clock_nanosleep: u32 = 259; -pub const __NR_sched_getaffinity: u32 = 260; -pub const __NR_sched_setaffinity: u32 = 261; -pub const __NR_timer_settime: u32 = 262; -pub const __NR_timer_gettime: u32 = 263; -pub const __NR_timer_getoverrun: u32 = 264; -pub const __NR_timer_delete: u32 = 265; -pub const __NR_timer_create: u32 = 266; -pub const __NR_vserver: u32 = 267; -pub const __NR_io_setup: u32 = 268; -pub const __NR_io_destroy: u32 = 269; -pub const __NR_io_submit: u32 = 270; -pub const __NR_io_cancel: u32 = 271; -pub const __NR_io_getevents: u32 = 272; -pub const __NR_mq_open: u32 = 273; -pub const __NR_mq_unlink: u32 = 274; -pub const __NR_mq_timedsend: u32 = 275; -pub const __NR_mq_timedreceive: u32 = 276; -pub const __NR_mq_notify: u32 = 277; -pub const __NR_mq_getsetattr: u32 = 278; -pub const __NR_waitid: u32 = 279; -pub const __NR_tee: u32 = 280; -pub const __NR_add_key: u32 = 281; -pub const __NR_request_key: u32 = 282; -pub const __NR_keyctl: u32 = 283; -pub const __NR_openat: u32 = 284; -pub const __NR_mkdirat: u32 = 285; -pub const __NR_mknodat: u32 = 286; -pub const __NR_fchownat: u32 = 287; -pub const __NR_futimesat: u32 = 288; -pub const __NR_fstatat64: u32 = 289; -pub const __NR_unlinkat: u32 = 290; -pub const __NR_renameat: u32 = 291; -pub const __NR_linkat: u32 = 292; -pub const __NR_symlinkat: u32 = 293; -pub const __NR_readlinkat: u32 = 294; -pub const __NR_fchmodat: u32 = 295; -pub const __NR_faccessat: u32 = 296; -pub const __NR_pselect6: u32 = 297; -pub const __NR_ppoll: u32 = 298; -pub const __NR_unshare: u32 = 299; -pub const __NR_set_robust_list: u32 = 300; -pub const __NR_get_robust_list: u32 = 301; -pub const __NR_migrate_pages: u32 = 302; -pub const __NR_mbind: u32 = 303; -pub const __NR_get_mempolicy: u32 = 304; -pub const __NR_set_mempolicy: u32 = 305; -pub const __NR_kexec_load: u32 = 306; -pub const __NR_move_pages: u32 = 307; -pub const __NR_getcpu: u32 = 308; -pub const __NR_epoll_pwait: u32 = 309; -pub const __NR_utimensat: u32 = 310; -pub const __NR_signalfd: u32 = 311; -pub const __NR_timerfd_create: u32 = 312; -pub const __NR_eventfd: u32 = 313; -pub const __NR_fallocate: u32 = 314; -pub const __NR_timerfd_settime: u32 = 315; -pub const __NR_timerfd_gettime: u32 = 316; -pub const __NR_signalfd4: u32 = 317; -pub const __NR_eventfd2: u32 = 318; -pub const __NR_epoll_create1: u32 = 319; -pub const __NR_dup3: u32 = 320; -pub const __NR_pipe2: u32 = 321; -pub const __NR_inotify_init1: u32 = 322; -pub const __NR_accept4: u32 = 323; -pub const __NR_preadv: u32 = 324; -pub const __NR_pwritev: u32 = 325; -pub const __NR_rt_tgsigqueueinfo: u32 = 326; -pub const __NR_perf_event_open: u32 = 327; -pub const __NR_recvmmsg: u32 = 328; -pub const __NR_fanotify_init: u32 = 329; -pub const __NR_fanotify_mark: u32 = 330; -pub const __NR_prlimit64: u32 = 331; -pub const __NR_name_to_handle_at: u32 = 332; -pub const __NR_open_by_handle_at: u32 = 333; -pub const __NR_clock_adjtime: u32 = 334; -pub const __NR_syncfs: u32 = 335; -pub const __NR_sendmmsg: u32 = 336; -pub const __NR_setns: u32 = 337; -pub const __NR_process_vm_readv: u32 = 338; -pub const __NR_process_vm_writev: u32 = 339; -pub const __NR_kern_features: u32 = 340; -pub const __NR_kcmp: u32 = 341; -pub const __NR_finit_module: u32 = 342; -pub const __NR_sched_setattr: u32 = 343; -pub const __NR_sched_getattr: u32 = 344; -pub const __NR_renameat2: u32 = 345; -pub const __NR_seccomp: u32 = 346; -pub const __NR_getrandom: u32 = 347; -pub const __NR_memfd_create: u32 = 348; -pub const __NR_bpf: u32 = 349; -pub const __NR_execveat: u32 = 350; -pub const __NR_membarrier: u32 = 351; -pub const __NR_userfaultfd: u32 = 352; -pub const __NR_bind: u32 = 353; -pub const __NR_listen: u32 = 354; -pub const __NR_setsockopt: u32 = 355; -pub const __NR_mlock2: u32 = 356; -pub const __NR_copy_file_range: u32 = 357; -pub const __NR_preadv2: u32 = 358; -pub const __NR_pwritev2: u32 = 359; -pub const __NR_statx: u32 = 360; -pub const __NR_io_pgetevents: u32 = 361; -pub const __NR_pkey_mprotect: u32 = 362; -pub const __NR_pkey_alloc: u32 = 363; -pub const __NR_pkey_free: u32 = 364; -pub const __NR_rseq: u32 = 365; -pub const __NR_semtimedop: u32 = 392; -pub const __NR_semget: u32 = 393; -pub const __NR_semctl: u32 = 394; -pub const __NR_shmget: u32 = 395; -pub const __NR_shmctl: u32 = 396; -pub const __NR_shmat: u32 = 397; -pub const __NR_shmdt: u32 = 398; -pub const __NR_msgget: u32 = 399; -pub const __NR_msgsnd: u32 = 400; -pub const __NR_msgrcv: u32 = 401; -pub const __NR_msgctl: u32 = 402; -pub const __NR_pidfd_send_signal: u32 = 424; -pub const __NR_io_uring_setup: u32 = 425; -pub const __NR_io_uring_enter: u32 = 426; -pub const __NR_io_uring_register: u32 = 427; -pub const __NR_open_tree: u32 = 428; -pub const __NR_move_mount: u32 = 429; -pub const __NR_fsopen: u32 = 430; -pub const __NR_fsconfig: u32 = 431; -pub const __NR_fsmount: u32 = 432; -pub const __NR_fspick: u32 = 433; -pub const __NR_pidfd_open: u32 = 434; -pub const __NR_close_range: u32 = 436; -pub const __NR_openat2: u32 = 437; -pub const __NR_pidfd_getfd: u32 = 438; -pub const __NR_faccessat2: u32 = 439; -pub const __NR_process_madvise: u32 = 440; -pub const __NR_epoll_pwait2: u32 = 441; -pub const __NR_mount_setattr: u32 = 442; -pub const __NR_quotactl_fd: u32 = 443; -pub const __NR_landlock_create_ruleset: u32 = 444; -pub const __NR_landlock_add_rule: u32 = 445; -pub const __NR_landlock_restrict_self: u32 = 446; -pub const __NR_process_mrelease: u32 = 448; -pub const __NR_futex_waitv: u32 = 449; -pub const __NR_set_mempolicy_home_node: u32 = 450; -pub const KERN_FEATURE_MIXED_MODE_STACK: u32 = 1; -pub const __OLD_UTS_LEN: u32 = 8; -pub const __NEW_UTS_LEN: u32 = 64; -pub const WNOHANG: u32 = 1; -pub const WUNTRACED: u32 = 2; -pub const WSTOPPED: u32 = 2; -pub const WEXITED: u32 = 4; -pub const WCONTINUED: u32 = 8; -pub const WNOWAIT: u32 = 16777216; -pub const __WNOTHREAD: u32 = 536870912; -pub const __WALL: u32 = 1073741824; -pub const __WCLONE: u32 = 2147483648; -pub const P_ALL: u32 = 0; -pub const P_PID: u32 = 1; -pub const P_PGID: u32 = 2; -pub const P_PIDFD: u32 = 3; -pub const XATTR_CREATE: u32 = 1; -pub const XATTR_REPLACE: u32 = 2; -pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0"; -pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0"; -pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0"; -pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0"; -pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0"; -pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0"; -pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0"; -pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0"; -pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0"; -pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0"; -pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0"; -pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0"; -pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0"; -pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0"; -pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0"; -pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0"; -pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0"; -pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0"; -pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0"; -pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0"; -pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0"; -pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0"; -pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0"; -pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0"; -pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0"; -pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0"; -pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0"; -pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0"; -pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0"; -pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0"; -pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0"; -pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0"; -pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0"; -pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0"; -pub const MFD_CLOEXEC: u32 = 1; -pub const MFD_ALLOW_SEALING: u32 = 2; -pub const MFD_HUGETLB: u32 = 4; -pub const MFD_NOEXEC_SEAL: u32 = 8; -pub const MFD_EXEC: u32 = 16; -pub const MFD_HUGE_SHIFT: u32 = 26; -pub const MFD_HUGE_MASK: u32 = 63; -pub const MFD_HUGE_64KB: u32 = 1073741824; -pub const MFD_HUGE_512KB: u32 = 1275068416; -pub const MFD_HUGE_1MB: u32 = 1342177280; -pub const MFD_HUGE_2MB: u32 = 1409286144; -pub const MFD_HUGE_8MB: u32 = 1543503872; -pub const MFD_HUGE_16MB: u32 = 1610612736; -pub const MFD_HUGE_32MB: u32 = 1677721600; -pub const MFD_HUGE_256MB: u32 = 1879048192; -pub const MFD_HUGE_512MB: u32 = 1946157056; -pub const MFD_HUGE_1GB: u32 = 2013265920; -pub const MFD_HUGE_2GB: u32 = 2080374784; -pub const MFD_HUGE_16GB: u32 = 2281701376; -pub const TFD_TIMER_ABSTIME: u32 = 1; -pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; -pub const TFD_CLOEXEC: u32 = 4194304; -pub const TFD_NONBLOCK: u32 = 16384; -pub const USERFAULTFD_IOC: u32 = 170; -pub const _UFFDIO_REGISTER: u32 = 0; -pub const _UFFDIO_UNREGISTER: u32 = 1; -pub const _UFFDIO_WAKE: u32 = 2; -pub const _UFFDIO_COPY: u32 = 3; -pub const _UFFDIO_ZEROPAGE: u32 = 4; -pub const _UFFDIO_WRITEPROTECT: u32 = 6; -pub const _UFFDIO_CONTINUE: u32 = 7; -pub const _UFFDIO_API: u32 = 63; -pub const UFFDIO: u32 = 170; -pub const UFFD_EVENT_PAGEFAULT: u32 = 18; -pub const UFFD_EVENT_FORK: u32 = 19; -pub const UFFD_EVENT_REMAP: u32 = 20; -pub const UFFD_EVENT_REMOVE: u32 = 21; -pub const UFFD_EVENT_UNMAP: u32 = 22; -pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; -pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; -pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; -pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; -pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; -pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; -pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; -pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; -pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; -pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; -pub const UFFD_FEATURE_SIGBUS: u32 = 128; -pub const UFFD_FEATURE_THREAD_ID: u32 = 256; -pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; -pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; -pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; -pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; -pub const UFFD_USER_MODE_ONLY: u32 = 1; -pub const IORING_FILE_INDEX_ALLOC: i32 = -1; -pub const IORING_SETUP_IOPOLL: u32 = 1; -pub const IORING_SETUP_SQPOLL: u32 = 2; -pub const IORING_SETUP_SQ_AFF: u32 = 4; -pub const IORING_SETUP_CQSIZE: u32 = 8; -pub const IORING_SETUP_CLAMP: u32 = 16; -pub const IORING_SETUP_ATTACH_WQ: u32 = 32; -pub const IORING_SETUP_R_DISABLED: u32 = 64; -pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; -pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; -pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; -pub const IORING_SETUP_SQE128: u32 = 1024; -pub const IORING_SETUP_CQE32: u32 = 2048; -pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; -pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; -pub const IORING_URING_CMD_FIXED: u32 = 1; -pub const IORING_FSYNC_DATASYNC: u32 = 1; -pub const IORING_TIMEOUT_ABS: u32 = 1; -pub const IORING_TIMEOUT_UPDATE: u32 = 2; -pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; -pub const IORING_TIMEOUT_REALTIME: u32 = 8; -pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; -pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; -pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; -pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; -pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; -pub const IORING_POLL_ADD_MULTI: u32 = 1; -pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; -pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; -pub const IORING_POLL_ADD_LEVEL: u32 = 8; -pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; -pub const IORING_ASYNC_CANCEL_FD: u32 = 2; -pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; -pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; -pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; -pub const IORING_RECV_MULTISHOT: u32 = 2; -pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; -pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; -pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; -pub const IORING_ACCEPT_MULTISHOT: u32 = 1; -pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; -pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; -pub const IORING_CQE_F_BUFFER: u32 = 1; -pub const IORING_CQE_F_MORE: u32 = 2; -pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; -pub const IORING_CQE_F_NOTIF: u32 = 8; -pub const IORING_OFF_SQ_RING: u32 = 0; -pub const IORING_OFF_CQ_RING: u32 = 134217728; -pub const IORING_OFF_SQES: u32 = 268435456; -pub const IORING_SQ_NEED_WAKEUP: u32 = 1; -pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; -pub const IORING_SQ_TASKRUN: u32 = 4; -pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; -pub const IORING_ENTER_GETEVENTS: u32 = 1; -pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; -pub const IORING_ENTER_SQ_WAIT: u32 = 4; -pub const IORING_ENTER_EXT_ARG: u32 = 8; -pub const IORING_ENTER_REGISTERED_RING: u32 = 16; -pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; -pub const IORING_FEAT_NODROP: u32 = 2; -pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; -pub const IORING_FEAT_RW_CUR_POS: u32 = 8; -pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; -pub const IORING_FEAT_FAST_POLL: u32 = 32; -pub const IORING_FEAT_POLL_32BITS: u32 = 64; -pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; -pub const IORING_FEAT_EXT_ARG: u32 = 256; -pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; -pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; -pub const IORING_FEAT_CQE_SKIP: u32 = 2048; -pub const IORING_FEAT_LINKED_FILE: u32 = 4096; -pub const IORING_FEAT_REG_REG_RING: u32 = 8192; -pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; -pub const IORING_REGISTER_FILES_SKIP: i32 = -2; -pub const IO_URING_OP_SUPPORTED: u32 = 1; -pub const DT_UNKNOWN: u32 = 0; -pub const DT_FIFO: u32 = 1; -pub const DT_CHR: u32 = 2; -pub const DT_DIR: u32 = 4; -pub const DT_BLK: u32 = 6; -pub const DT_REG: u32 = 8; -pub const DT_LNK: u32 = 10; -pub const DT_SOCK: u32 = 12; -pub const SHUT_RD: u32 = 0; -pub const SHUT_WR: u32 = 1; -pub const SHUT_RDWR: u32 = 2; -pub const SOCK_STREAM: u32 = 1; -pub const SOCK_DGRAM: u32 = 2; -pub const SOCK_RAW: u32 = 3; -pub const SOCK_RDM: u32 = 4; -pub const SOCK_SEQPACKET: u32 = 5; -pub const F_OK: u32 = 0; -pub const R_OK: u32 = 4; -pub const W_OK: u32 = 2; -pub const X_OK: u32 = 1; -pub const UTIME_NOW: u32 = 1073741823; -pub const UTIME_OMIT: u32 = 1073741822; -pub const MSG_DONTWAIT: u32 = 64; -pub const AF_UNSPEC: u32 = 0; -pub const AF_UNIX: u32 = 1; -pub const AF_INET: u32 = 2; -pub const AF_AX25: u32 = 3; -pub const AF_IPX: u32 = 4; -pub const AF_APPLETALK: u32 = 5; -pub const AF_NETROM: u32 = 6; -pub const AF_BRIDGE: u32 = 7; -pub const AF_ATMPVC: u32 = 8; -pub const AF_X25: u32 = 9; -pub const AF_INET6: u32 = 10; -pub const AF_ROSE: u32 = 11; -pub const AF_DECnet: u32 = 12; -pub const AF_NETBEUI: u32 = 13; -pub const AF_SECURITY: u32 = 14; -pub const AF_KEY: u32 = 15; -pub const AF_NETLINK: u32 = 16; -pub const AF_PACKET: u32 = 17; -pub const AF_ASH: u32 = 18; -pub const AF_ECONET: u32 = 19; -pub const AF_ATMSVC: u32 = 20; -pub const AF_RDS: u32 = 21; -pub const AF_SNA: u32 = 22; -pub const AF_IRDA: u32 = 23; -pub const AF_PPPOX: u32 = 24; -pub const AF_WANPIPE: u32 = 25; -pub const AF_LLC: u32 = 26; -pub const AF_CAN: u32 = 29; -pub const AF_TIPC: u32 = 30; -pub const AF_BLUETOOTH: u32 = 31; -pub const AF_IUCV: u32 = 32; -pub const AF_RXRPC: u32 = 33; -pub const AF_ISDN: u32 = 34; -pub const AF_PHONET: u32 = 35; -pub const AF_IEEE802154: u32 = 36; -pub const AF_MAX: u32 = 37; -pub const MSG_OOB: u32 = 1; -pub const MSG_PEEK: u32 = 2; -pub const MSG_DONTROUTE: u32 = 4; -pub const MSG_CTRUNC: u32 = 8; -pub const MSG_PROBE: u32 = 16; -pub const MSG_TRUNC: u32 = 32; -pub const MSG_EOR: u32 = 128; -pub const MSG_WAITALL: u32 = 256; -pub const MSG_FIN: u32 = 512; -pub const MSG_SYN: u32 = 1024; -pub const MSG_CONFIRM: u32 = 2048; -pub const MSG_RST: u32 = 4096; -pub const MSG_ERRQUEUE: u32 = 8192; -pub const MSG_NOSIGNAL: u32 = 16384; -pub const MSG_MORE: u32 = 32768; -pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; -pub const STDIN_FILENO: u32 = 0; -pub const STDOUT_FILENO: u32 = 1; -pub const STDERR_FILENO: u32 = 2; -pub const RWF_HIPRI: u32 = 1; -pub const RWF_DSYNC: u32 = 2; -pub const RWF_SYNC: u32 = 4; -pub const RWF_NOWAIT: u32 = 8; -pub const RWF_APPEND: u32 = 16; -pub const EFD_SEMAPHORE: u32 = 1; -pub const EFD_CLOEXEC: u32 = 4194304; -pub const EFD_NONBLOCK: u32 = 16384; -pub const EPOLLIN: u32 = 1; -pub const EPOLLPRI: u32 = 2; -pub const EPOLLOUT: u32 = 4; -pub const EPOLLERR: u32 = 8; -pub const EPOLLHUP: u32 = 16; -pub const EPOLLNVAL: u32 = 32; -pub const EPOLLRDNORM: u32 = 64; -pub const EPOLLRDBAND: u32 = 128; -pub const EPOLLWRNORM: u32 = 256; -pub const EPOLLWRBAND: u32 = 512; -pub const EPOLLMSG: u32 = 1024; -pub const EPOLLRDHUP: u32 = 8192; -pub const EPOLLEXCLUSIVE: u32 = 268435456; -pub const EPOLLWAKEUP: u32 = 536870912; -pub const EPOLLONESHOT: u32 = 1073741824; -pub const EPOLLET: u32 = 2147483648; -pub const TFD_SHARED_FCNTL_FLAGS: u32 = 4210688; -pub const TFD_CREATE_FLAGS: u32 = 4210688; -pub const TFD_SETTIME_FLAGS: u32 = 1; -pub const SCM_RIGHTS: u32 = 1; -pub const SCM_CREDENTIALS: u32 = 2; -pub const SCM_SECURITY: u32 = 3; -pub const UFFD_API: u32 = 170; -pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; -pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; -pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; -pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; -pub const UFFDIO_COPY_MODE_WP: u32 = 2; -pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; -pub const SPLICE_F_MOVE: u32 = 1; -pub const SPLICE_F_NONBLOCK: u32 = 2; -pub const SPLICE_F_MORE: u32 = 4; -pub const SPLICE_F_GIFT: u32 = 8; -pub const MNT_FORCE: u32 = 1; -pub const MNT_DETACH: u32 = 2; -pub const MNT_EXPIRE: u32 = 4; -pub const UMOUNT_NOFOLLOW: u32 = 8; -pub const UMOUNT_UNUSED: u32 = 2147483648; -pub type size_t = crate::ctypes::c_ulong; -pub type ssize_t = crate::ctypes::c_long; -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 16usize], -} -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_old_uid_t = crate::ctypes::c_ushort; -pub type __kernel_old_gid_t = crate::ctypes::c_ushort; -pub type __kernel_suseconds_t = crate::ctypes::c_int; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_old_timeval { -pub tv_sec: __kernel_long_t, -pub tv_usec: __kernel_suseconds_t, -} -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_dev_t = crate::ctypes::c_uint; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_header_struct { -pub version: __u32, -pub pid: crate::ctypes::c_int, -} -pub type cap_user_header_t = *mut __user_cap_header_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_data_struct { -pub effective: __u32, -pub permitted: __u32, -pub inheritable: __u32, -} -pub type cap_user_data_t = *mut __user_cap_data_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data { -pub magic_etc: __le32, -pub data: [vfs_cap_data__bindgen_ty_1; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data { -pub magic_etc: __le32, -pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], -pub rootid: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct f_owner_ex { -pub type_: crate::ctypes::c_int, -pub pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_off_t, -pub l_len: __kernel_off_t, -pub l_pid: __kernel_pid_t, -pub __unused: crate::ctypes::c_short, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock64 { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_loff_t, -pub l_len: __kernel_loff_t, -pub l_pid: __kernel_pid_t, -pub __unused: crate::ctypes::c_short, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct open_how { -pub flags: __u64, -pub mode: __u64, -pub resolve: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct epoll_event { -pub events: __poll_t, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v1 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub master_key_descriptor: [__u8; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_key { -pub mode: __u32, -pub raw: [__u8; 64usize], -pub size: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v2 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub __reserved: [__u8; 4usize], -pub master_key_identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_get_policy_ex_arg { -pub policy_size: __u64, -pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { -pub version: __u8, -pub v1: fscrypt_policy_v1, -pub v2: fscrypt_policy_v2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_key_specifier { -pub type_: __u32, -pub __reserved: __u32, -pub u: fscrypt_key_specifier__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_key_specifier__bindgen_ty_1 { -pub __reserved: [__u8; 32usize], -pub descriptor: [__u8; 8usize], -pub identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct fscrypt_provisioning_key_payload { -pub type_: __u32, -pub __reserved: __u32, -pub raw: __IncompleteArrayField<__u8>, -} -#[repr(C)] -pub struct fscrypt_add_key_arg { -pub key_spec: fscrypt_key_specifier, -pub raw_size: __u32, -pub key_id: __u32, -pub __reserved: [__u32; 8usize], -pub raw: __IncompleteArrayField<__u8>, +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, } #[repr(C)] #[derive(Copy, Clone)] @@ -3086,19 +237,6 @@ pub user_count: __u32, pub __out_reserved: [__u32; 13usize], } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum fsconfig_command { -FSCONFIG_SET_FLAG = 0, -FSCONFIG_SET_STRING = 1, -FSCONFIG_SET_BINARY = 2, -FSCONFIG_SET_PATH = 3, -FSCONFIG_SET_PATH_EMPTY = 4, -FSCONFIG_SET_FD = 5, -FSCONFIG_CMD_CREATE = 6, -FSCONFIG_CMD_RECONFIGURE = 7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct mount_attr { @@ -3149,700 +287,50 @@ pub max_files: crate::ctypes::c_ulong, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct inodes_stat_t { -pub nr_inodes: crate::ctypes::c_long, -pub nr_unused: crate::ctypes::c_long, -pub dummy: [crate::ctypes::c_long; 5usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fsxattr { -pub fsx_xflags: __u32, -pub fsx_extsize: __u32, -pub fsx_nextents: __u32, -pub fsx_projid: __u32, -pub fsx_cowextsize: __u32, -pub fsx_pad: [crate::ctypes::c_uchar; 8usize], -} -pub type __kernel_rwf_t = crate::ctypes::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct futex_waitv { -pub val: __u64, -pub uaddr: __u64, -pub flags: __u32, -pub __reserved: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct robust_list { -pub next: *mut robust_list, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct robust_list_head { -pub list: robust_list, -pub futex_offset: crate::ctypes::c_long, -pub list_op_pending: *mut robust_list, -} -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], -} -pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; -pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; -pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; -pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; -pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; -pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; -pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; -pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; -pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; -pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; -pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; -pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; -pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; -pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; -pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; -pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; -pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; -pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; -pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; -pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; -pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; -pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; -pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; -pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; -pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; -pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; -pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; -pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; -pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_1 { -IPPROTO_IP = 0, -IPPROTO_ICMP = 1, -IPPROTO_IGMP = 2, -IPPROTO_IPIP = 4, -IPPROTO_TCP = 6, -IPPROTO_EGP = 8, -IPPROTO_PUP = 12, -IPPROTO_UDP = 17, -IPPROTO_IDP = 22, -IPPROTO_TP = 29, -IPPROTO_DCCP = 33, -IPPROTO_IPV6 = 41, -IPPROTO_RSVP = 46, -IPPROTO_GRE = 47, -IPPROTO_ESP = 50, -IPPROTO_AH = 51, -IPPROTO_MTP = 92, -IPPROTO_BEETPH = 94, -IPPROTO_ENCAP = 98, -IPPROTO_PIM = 103, -IPPROTO_COMP = 108, -IPPROTO_L2TP = 115, -IPPROTO_SCTP = 132, -IPPROTO_UDPLITE = 136, -IPPROTO_MPLS = 137, -IPPROTO_ETHERNET = 143, -IPPROTO_RAW = 255, -IPPROTO_MPTCP = 262, -IPPROTO_MAX = 263, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_addr { -pub s_addr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq { -pub imr_multiaddr: in_addr, -pub imr_interface: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreqn { -pub imr_multiaddr: in_addr, -pub imr_address: in_addr, -pub imr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq_source { -pub imr_multiaddr: __be32, -pub imr_interface: __be32, -pub imr_sourceaddr: __be32, -} -#[repr(C)] -pub struct ip_msfilter { -pub imsf_multiaddr: __be32, -pub imsf_interface: __be32, -pub imsf_fmode: __u32, -pub imsf_numsrc: __u32, -pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, -} -#[repr(C)] -pub struct ip_msfilter__bindgen_ty_1 { -pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, -pub __bindgen_anon_1: __BindgenUnionField, -pub bindgen_union_field: u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { -pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -pub imsf_slist_flex: __IncompleteArrayField<__be32>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_req { -pub gr_interface: __u32, -pub gr_group: __kernel_sockaddr_storage, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_source_req { -pub gsr_interface: __u32, -pub gsr_group: __kernel_sockaddr_storage, -pub gsr_source: __kernel_sockaddr_storage, -} -#[repr(C)] -pub struct group_filter { -pub __bindgen_anon_1: group_filter__bindgen_ty_1, -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 34usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { -pub gf_interface_aux: __u32, -pub gf_group_aux: __kernel_sockaddr_storage, -pub gf_fmode_aux: __u32, -pub gf_numsrc_aux: __u32, -pub gf_slist: [__kernel_sockaddr_storage; 1usize], -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { -pub gf_interface: __u32, -pub gf_group: __kernel_sockaddr_storage, -pub gf_fmode: __u32, -pub gf_numsrc: __u32, -pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_pktinfo { -pub ipi_ifindex: crate::ctypes::c_int, -pub ipi_spec_dst: in_addr, -pub ipi_addr: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_in { -pub sin_family: __kernel_sa_family_t, -pub sin_port: __be16, -pub sin_addr: in_addr, -pub __pad: [crate::ctypes::c_uchar; 8usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct inotify_event { -pub wd: __s32, -pub mask: __u32, -pub cookie: __u32, -pub len: __u32, -pub name: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct iphdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub tos: __u8, -pub tot_len: __be16, -pub id: __be16, -pub frag_off: __be16, -pub ttl: __u8, -pub protocol: __u8, -pub check: __sum16, -pub __bindgen_anon_1: iphdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union iphdr__bindgen_ty_1 { -pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: __be32, -pub daddr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: __be32, -pub daddr: __be32, -} -impl iphdr { -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn ihl(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_ihl(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; -ihl as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_auth_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub reserved: __be16, -pub spi: __be32, -pub seq_no: __be32, -pub auth_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_esp_hdr { -pub spi: __be32, -pub seq_no: __be32, -pub enc_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_comp_hdr { -pub nexthdr: __u8, -pub flags: __u8, -pub cpi: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_beet_phdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub padlen: __u8, -pub reserved: __u8, -} -pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; -pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; -pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; -pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; -pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; -pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; -pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; -pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; -pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; -pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; -pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; -pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; -pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; -pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; -pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; -pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; -pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; -pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; -pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; -pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; -pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; -pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; -pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; -pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; -pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; -pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; -pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; -pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; -pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_2 { -IPV4_DEVCONF_FORWARDING = 1, -IPV4_DEVCONF_MC_FORWARDING = 2, -IPV4_DEVCONF_PROXY_ARP = 3, -IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, -IPV4_DEVCONF_SECURE_REDIRECTS = 5, -IPV4_DEVCONF_SEND_REDIRECTS = 6, -IPV4_DEVCONF_SHARED_MEDIA = 7, -IPV4_DEVCONF_RP_FILTER = 8, -IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, -IPV4_DEVCONF_BOOTP_RELAY = 10, -IPV4_DEVCONF_LOG_MARTIANS = 11, -IPV4_DEVCONF_TAG = 12, -IPV4_DEVCONF_ARPFILTER = 13, -IPV4_DEVCONF_MEDIUM_ID = 14, -IPV4_DEVCONF_NOXFRM = 15, -IPV4_DEVCONF_NOPOLICY = 16, -IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, -IPV4_DEVCONF_ARP_ANNOUNCE = 18, -IPV4_DEVCONF_ARP_IGNORE = 19, -IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, -IPV4_DEVCONF_ARP_ACCEPT = 21, -IPV4_DEVCONF_ARP_NOTIFY = 22, -IPV4_DEVCONF_ACCEPT_LOCAL = 23, -IPV4_DEVCONF_SRC_VMARK = 24, -IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, -IPV4_DEVCONF_ROUTE_LOCALNET = 26, -IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, -IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, -IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, -IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, -IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, -IPV4_DEVCONF_BC_FORWARDING = 32, -IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, -__IPV4_DEVCONF_MAX = 34, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_addr { -pub in6_u: in6_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union in6_addr__bindgen_ty_1 { -pub u6_addr8: [__u8; 16usize], -pub u6_addr16: [__be16; 8usize], -pub u6_addr32: [__be32; 4usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_in6 { -pub sin6_family: crate::ctypes::c_ushort, -pub sin6_port: __be16, -pub sin6_flowinfo: __be32, -pub sin6_addr: in6_addr, -pub sin6_scope_id: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6_mreq { -pub ipv6mr_multiaddr: in6_addr, -pub ipv6mr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_flowlabel_req { -pub flr_dst: in6_addr, -pub flr_label: __be32, -pub flr_action: __u8, -pub flr_share: __u8, -pub flr_flags: __u16, -pub flr_expires: __u16, -pub flr_linger: __u16, -pub __flr_pad: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_pktinfo { -pub ipi6_addr: in6_addr, -pub ipi6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ip6_mtuinfo { -pub ip6m_addr: sockaddr_in6, -pub ip6m_mtu: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_ifreq { -pub ifr6_addr: in6_addr, -pub ifr6_prefixlen: __u32, -pub ifr6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_rt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub type_: __u8, -pub segments_left: __u8, -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_opt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -} -#[repr(C)] -pub struct rt0_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rt2_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: in6_addr, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct ipv6_destopt_hao { -pub type_: __u8, -pub length: __u8, -pub addr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub flow_lbl: [__u8; 3usize], -pub payload_len: __be16, -pub nexthdr: __u8, -pub hop_limit: __u8, -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], } #[repr(C)] -#[derive(Copy, Clone)] -pub union ipv6hdr__bindgen_ty_1 { -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], } #[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: in6_addr, -pub daddr: in6_addr, +#[derive(Debug, Copy, Clone)] +pub struct futex_waitv { +pub val: __u64, +pub uaddr: __u64, +pub flags: __u32, +pub __reserved: __u32, } #[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -impl ipv6hdr { -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn priority(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_priority(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let priority: u8 = unsafe { ::core::mem::transmute(priority) }; -priority as u64 -}); -__bindgen_bitfield_unit -} +#[derive(Debug, Copy, Clone)] +pub struct robust_list { +pub next: *mut robust_list, } -pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; -pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; -pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; -pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; -pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; -pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; -pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; -pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; -pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; -pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; -pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; -pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; -pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; -pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; -pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; -pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; -pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; -pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; -pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; -pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; -pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; -pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; -pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; -pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; -pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; -pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; -pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; -pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; -pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; -pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; -pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; -pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; -pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; -pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; -pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; -pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; -pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; -pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; -pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; -pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; -pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; -pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; -pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; -pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; -pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; -pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; -pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; -pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; -pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; -pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; -pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; -pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_3 { -DEVCONF_FORWARDING = 0, -DEVCONF_HOPLIMIT = 1, -DEVCONF_MTU6 = 2, -DEVCONF_ACCEPT_RA = 3, -DEVCONF_ACCEPT_REDIRECTS = 4, -DEVCONF_AUTOCONF = 5, -DEVCONF_DAD_TRANSMITS = 6, -DEVCONF_RTR_SOLICITS = 7, -DEVCONF_RTR_SOLICIT_INTERVAL = 8, -DEVCONF_RTR_SOLICIT_DELAY = 9, -DEVCONF_USE_TEMPADDR = 10, -DEVCONF_TEMP_VALID_LFT = 11, -DEVCONF_TEMP_PREFERED_LFT = 12, -DEVCONF_REGEN_MAX_RETRY = 13, -DEVCONF_MAX_DESYNC_FACTOR = 14, -DEVCONF_MAX_ADDRESSES = 15, -DEVCONF_FORCE_MLD_VERSION = 16, -DEVCONF_ACCEPT_RA_DEFRTR = 17, -DEVCONF_ACCEPT_RA_PINFO = 18, -DEVCONF_ACCEPT_RA_RTR_PREF = 19, -DEVCONF_RTR_PROBE_INTERVAL = 20, -DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, -DEVCONF_PROXY_NDP = 22, -DEVCONF_OPTIMISTIC_DAD = 23, -DEVCONF_ACCEPT_SOURCE_ROUTE = 24, -DEVCONF_MC_FORWARDING = 25, -DEVCONF_DISABLE_IPV6 = 26, -DEVCONF_ACCEPT_DAD = 27, -DEVCONF_FORCE_TLLAO = 28, -DEVCONF_NDISC_NOTIFY = 29, -DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, -DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, -DEVCONF_SUPPRESS_FRAG_NDISC = 32, -DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, -DEVCONF_USE_OPTIMISTIC = 34, -DEVCONF_ACCEPT_RA_MTU = 35, -DEVCONF_STABLE_SECRET = 36, -DEVCONF_USE_OIF_ADDRS_ONLY = 37, -DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, -DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, -DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, -DEVCONF_DROP_UNSOLICITED_NA = 41, -DEVCONF_KEEP_ADDR_ON_DOWN = 42, -DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, -DEVCONF_SEG6_ENABLED = 44, -DEVCONF_SEG6_REQUIRE_HMAC = 45, -DEVCONF_ENHANCED_DAD = 46, -DEVCONF_ADDR_GEN_MODE = 47, -DEVCONF_DISABLE_POLICY = 48, -DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, -DEVCONF_NDISC_TCLASS = 50, -DEVCONF_RPL_SEG_ENABLED = 51, -DEVCONF_RA_DEFRTR_METRIC = 52, -DEVCONF_IOAM6_ENABLED = 53, -DEVCONF_IOAM6_ID = 54, -DEVCONF_IOAM6_ID_WIDE = 55, -DEVCONF_NDISC_EVICT_NOCARRIER = 56, -DEVCONF_ACCEPT_UNTRACKED_NA = 57, -DEVCONF_MAX = 58, +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct robust_list_head { +pub list: robust_list, +pub futex_offset: crate::ctypes::c_long, +pub list_op_pending: *mut robust_list, } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum socket_state { -SS_FREE = 0, -SS_UNCONNECTED = 1, -SS_CONNECTING = 2, -SS_CONNECTED = 3, -SS_DISCONNECTING = 4, +#[repr(C)] +#[derive(Debug)] +pub struct inotify_event { +pub wd: __s32, +pub mask: __u32, +pub cookie: __u32, +pub len: __u32, +pub name: __IncompleteArrayField, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -3852,24 +340,6 @@ pub revents: crate::ctypes::c_short, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prctl_mm_map { -pub start_code: __u64, -pub end_code: __u64, -pub start_data: __u64, -pub end_data: __u64, -pub start_brk: __u64, -pub brk: __u64, -pub start_stack: __u64, -pub arg_start: __u64, -pub arg_end: __u64, -pub env_start: __u64, -pub env_end: __u64, -pub auxv: *mut __u64, -pub auxv_size: __u32, -pub exe_fd: __u32, -} -#[repr(C)] #[derive(Debug)] pub struct rand_pool_info { pub entropy_count: crate::ctypes::c_int, @@ -3983,7 +453,6 @@ pub set_tid_size: __u64, pub cgroup: __u64, } -pub type sigset_t = crate::ctypes::c_ulong; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __new_sigset_t { @@ -3995,10 +464,6 @@ pub the_stack: *mut crate::ctypes::c_char, pub cur_status: crate::ctypes::c_int, } -pub type __signalfn_t = ::core::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::core::option::Option; -pub type __sigrestore_t = __restorefn_t; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __new_sigaction { @@ -4022,25 +487,6 @@ pub ss_flags: crate::ctypes::c_int, pub ss_size: __kernel_size_t, } -pub type stack_t = sigaltstack; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { -pub sival_int: crate::ctypes::c_int, -pub sival_ptr: *mut crate::ctypes::c_void, -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { -pub _kill: __sifields__bindgen_ty_1, -pub _timer: __sifields__bindgen_ty_2, -pub _rt: __sifields__bindgen_ty_3, -pub _sigchld: __sifields__bindgen_ty_4, -pub _sigfault: __sifields__bindgen_ty_5, -pub _sigpoll: __sifields__bindgen_ty_6, -pub _sigsys: __sifields__bindgen_ty_7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_1 { @@ -4078,15 +524,6 @@ pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { -pub _trapno: crate::ctypes::c_int, -pub _addr_lsb: crate::ctypes::c_short, -pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, -pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { pub _dummy_bnd: [crate::ctypes::c_char; 8usize], @@ -4108,680 +545,2119 @@ } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_6 { -pub _band: crate::ctypes::c_int, -pub _fd: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_7 { -pub _call_addr: *mut crate::ctypes::c_void, -pub _syscall: crate::ctypes::c_int, -pub _arch: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo { -pub __bindgen_anon_1: siginfo__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { -pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, -pub _si_pad: [crate::ctypes::c_int; 32usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { -pub si_signo: crate::ctypes::c_int, -pub si_errno: crate::ctypes::c_int, -pub si_code: crate::ctypes::c_int, -pub _sifields: __sifields, -} -pub type siginfo_t = siginfo; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigevent { -pub sigev_value: sigval_t, -pub sigev_signo: crate::ctypes::c_int, -pub sigev_notify: crate::ctypes::c_int, -pub _sigev_un: sigevent__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { -pub _pad: [crate::ctypes::c_int; 12usize], -pub _tid: crate::ctypes::c_int, -pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { -pub _function: ::core::option::Option, -pub _attribute: *mut crate::ctypes::c_void, -} -pub type sigevent_t = sigevent; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statx_timestamp { -pub tv_sec: __s64, -pub tv_nsec: __u32, -pub __reserved: __s32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statx { -pub stx_mask: __u32, -pub stx_blksize: __u32, -pub stx_attributes: __u64, -pub stx_nlink: __u32, -pub stx_uid: __u32, -pub stx_gid: __u32, -pub stx_mode: __u16, -pub __spare0: [__u16; 1usize], -pub stx_ino: __u64, -pub stx_size: __u64, -pub stx_blocks: __u64, -pub stx_attributes_mask: __u64, -pub stx_atime: statx_timestamp, -pub stx_btime: statx_timestamp, -pub stx_ctime: statx_timestamp, -pub stx_mtime: statx_timestamp, -pub stx_rdev_major: __u32, -pub stx_rdev_minor: __u32, -pub stx_dev_major: __u32, -pub stx_dev_minor: __u32, -pub stx_mnt_id: __u64, -pub stx_dio_mem_align: __u32, -pub stx_dio_offset_align: __u32, -pub __spare3: [__u64; 12usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct sysinfo { -pub uptime: __kernel_long_t, -pub loads: [__kernel_ulong_t; 3usize], -pub totalram: __kernel_ulong_t, -pub freeram: __kernel_ulong_t, -pub sharedram: __kernel_ulong_t, -pub bufferram: __kernel_ulong_t, -pub totalswap: __kernel_ulong_t, -pub freeswap: __kernel_ulong_t, -pub procs: __u16, -pub pad: __u16, -pub totalhigh: __kernel_ulong_t, -pub freehigh: __kernel_ulong_t, -pub mem_unit: __u32, -pub _f: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcphdr { -pub source: __be16, -pub dest: __be16, -pub seq: __be32, -pub ack_seq: __be32, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub window: __be16, -pub check: __sum16, -pub urg_ptr: __be16, -} -impl tcphdr { -#[inline] -pub fn doff(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } -} -#[inline] -pub fn set_doff(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn res1(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } -} -#[inline] -pub fn set_res1(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn cwr(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } -} -#[inline] -pub fn set_cwr(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn ece(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } -} -#[inline] -pub fn set_ece(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 1u8, val as u64) -} -} -#[inline] -pub fn urg(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } -} -#[inline] -pub fn set_urg(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(10usize, 1u8, val as u64) -} -} -#[inline] -pub fn ack(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } -} -#[inline] -pub fn set_ack(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(11usize, 1u8, val as u64) -} -} -#[inline] -pub fn psh(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } -} -#[inline] -pub fn set_psh(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(12usize, 1u8, val as u64) -} -} -#[inline] -pub fn rst(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } -} -#[inline] -pub fn set_rst(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(13usize, 1u8, val as u64) -} -} -#[inline] -pub fn syn(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } -} -#[inline] -pub fn set_syn(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(14usize, 1u8, val as u64) -} -} -#[inline] -pub fn fin(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } -} -#[inline] -pub fn set_fin(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(15usize, 1u8, val as u64) +pub struct __sifields__bindgen_ty_6 { +pub _band: crate::ctypes::c_int, +pub _fd: crate::ctypes::c_int, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_7 { +pub _call_addr: *mut crate::ctypes::c_void, +pub _syscall: crate::ctypes::c_int, +pub _arch: crate::ctypes::c_uint, } -#[inline] -pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let doff: u16 = unsafe { ::core::mem::transmute(doff) }; -doff as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let res1: u16 = unsafe { ::core::mem::transmute(res1) }; -res1 as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; -cwr as u64 -}); -__bindgen_bitfield_unit.set(9usize, 1u8, { -let ece: u16 = unsafe { ::core::mem::transmute(ece) }; -ece as u64 -}); -__bindgen_bitfield_unit.set(10usize, 1u8, { -let urg: u16 = unsafe { ::core::mem::transmute(urg) }; -urg as u64 -}); -__bindgen_bitfield_unit.set(11usize, 1u8, { -let ack: u16 = unsafe { ::core::mem::transmute(ack) }; -ack as u64 -}); -__bindgen_bitfield_unit.set(12usize, 1u8, { -let psh: u16 = unsafe { ::core::mem::transmute(psh) }; -psh as u64 -}); -__bindgen_bitfield_unit.set(13usize, 1u8, { -let rst: u16 = unsafe { ::core::mem::transmute(rst) }; -rst as u64 -}); -__bindgen_bitfield_unit.set(14usize, 1u8, { -let syn: u16 = unsafe { ::core::mem::transmute(syn) }; -syn as u64 -}); -__bindgen_bitfield_unit.set(15usize, 1u8, { -let fin: u16 = unsafe { ::core::mem::transmute(fin) }; -fin as u64 -}); -__bindgen_bitfield_unit +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo { +pub __bindgen_anon_1: siginfo__bindgen_ty_1, } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { +pub si_signo: crate::ctypes::c_int, +pub si_errno: crate::ctypes::c_int, +pub si_code: crate::ctypes::c_int, +pub _sifields: __sifields, } #[repr(C)] #[derive(Copy, Clone)] -pub union tcp_word_hdr { -pub hdr: tcphdr, -pub words: [__be32; 5usize], -} -pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; -pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; -pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; -pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; -pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; -pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; -pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; -pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; -pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; -pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_4 { -TCP_FLAG_CWR = 8388608, -TCP_FLAG_ECE = 4194304, -TCP_FLAG_URG = 2097152, -TCP_FLAG_ACK = 1048576, -TCP_FLAG_PSH = 524288, -TCP_FLAG_RST = 262144, -TCP_FLAG_SYN = 131072, -TCP_FLAG_FIN = 65536, -TCP_RESERVED_BITS = 251658240, -TCP_DATA_OFFSET = 4026531840, +pub struct sigevent { +pub sigev_value: sigval_t, +pub sigev_signo: crate::ctypes::c_int, +pub sigev_notify: crate::ctypes::c_int, +pub _sigev_un: sigevent__bindgen_ty_1, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_repair_opt { -pub opt_code: __u32, -pub opt_val: __u32, +pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { +pub _function: ::core::option::Option, +pub _attribute: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_repair_window { -pub snd_wl1: __u32, -pub snd_wnd: __u32, -pub max_window: __u32, -pub rcv_wnd: __u32, -pub rcv_wup: __u32, -} -pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; -pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; -pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; -pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_5 { -TCP_NO_QUEUE = 0, -TCP_RECV_QUEUE = 1, -TCP_SEND_QUEUE = 2, -TCP_QUEUES_NR = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_fastopen_client_fail { -TFO_STATUS_UNSPEC = 0, -TFO_COOKIE_UNAVAILABLE = 1, -TFO_DATA_NOT_ACKED = 2, -TFO_SYN_RETRANSMITTED = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_ca_state { -TCP_CA_Open = 0, -TCP_CA_Disorder = 1, -TCP_CA_CWR = 2, -TCP_CA_Recovery = 3, -TCP_CA_Loss = 4, +pub struct statx_timestamp { +pub tv_sec: __s64, +pub tv_nsec: __u32, +pub __reserved: __s32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_info { -pub tcpi_state: __u8, -pub tcpi_ca_state: __u8, -pub tcpi_retransmits: __u8, -pub tcpi_probes: __u8, -pub tcpi_backoff: __u8, -pub tcpi_options: __u8, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub tcpi_rto: __u32, -pub tcpi_ato: __u32, -pub tcpi_snd_mss: __u32, -pub tcpi_rcv_mss: __u32, -pub tcpi_unacked: __u32, -pub tcpi_sacked: __u32, -pub tcpi_lost: __u32, -pub tcpi_retrans: __u32, -pub tcpi_fackets: __u32, -pub tcpi_last_data_sent: __u32, -pub tcpi_last_ack_sent: __u32, -pub tcpi_last_data_recv: __u32, -pub tcpi_last_ack_recv: __u32, -pub tcpi_pmtu: __u32, -pub tcpi_rcv_ssthresh: __u32, -pub tcpi_rtt: __u32, -pub tcpi_rttvar: __u32, -pub tcpi_snd_ssthresh: __u32, -pub tcpi_snd_cwnd: __u32, -pub tcpi_advmss: __u32, -pub tcpi_reordering: __u32, -pub tcpi_rcv_rtt: __u32, -pub tcpi_rcv_space: __u32, -pub tcpi_total_retrans: __u32, -pub tcpi_pacing_rate: __u64, -pub tcpi_max_pacing_rate: __u64, -pub tcpi_bytes_acked: __u64, -pub tcpi_bytes_received: __u64, -pub tcpi_segs_out: __u32, -pub tcpi_segs_in: __u32, -pub tcpi_notsent_bytes: __u32, -pub tcpi_min_rtt: __u32, -pub tcpi_data_segs_in: __u32, -pub tcpi_data_segs_out: __u32, -pub tcpi_delivery_rate: __u64, -pub tcpi_busy_time: __u64, -pub tcpi_rwnd_limited: __u64, -pub tcpi_sndbuf_limited: __u64, -pub tcpi_delivered: __u32, -pub tcpi_delivered_ce: __u32, -pub tcpi_bytes_sent: __u64, -pub tcpi_bytes_retrans: __u64, -pub tcpi_dsack_dups: __u32, -pub tcpi_reord_seen: __u32, -pub tcpi_rcv_ooopack: __u32, -pub tcpi_snd_wnd: __u32, -pub tcpi_rcv_wnd: __u32, -pub tcpi_rehash: __u32, -} -impl tcp_info { -#[inline] -pub fn tcpi_snd_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +pub struct statx { +pub stx_mask: __u32, +pub stx_blksize: __u32, +pub stx_attributes: __u64, +pub stx_nlink: __u32, +pub stx_uid: __u32, +pub stx_gid: __u32, +pub stx_mode: __u16, +pub __spare0: [__u16; 1usize], +pub stx_ino: __u64, +pub stx_size: __u64, +pub stx_blocks: __u64, +pub stx_attributes_mask: __u64, +pub stx_atime: statx_timestamp, +pub stx_btime: statx_timestamp, +pub stx_ctime: statx_timestamp, +pub stx_mtime: statx_timestamp, +pub stx_rdev_major: __u32, +pub stx_rdev_minor: __u32, +pub stx_dev_major: __u32, +pub stx_dev_minor: __u32, +pub stx_mnt_id: __u64, +pub stx_dio_mem_align: __u32, +pub stx_dio_offset_align: __u32, +pub __spare3: [__u64; 12usize], } -#[inline] -pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct termio { +pub c_iflag: crate::ctypes::c_ushort, +pub c_oflag: crate::ctypes::c_ushort, +pub c_cflag: crate::ctypes::c_ushort, +pub c_lflag: crate::ctypes::c_ushort, +pub c_line: crate::ctypes::c_uchar, +pub c_cc: [crate::ctypes::c_uchar; 8usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct termios { +pub c_iflag: tcflag_t, +pub c_oflag: tcflag_t, +pub c_cflag: tcflag_t, +pub c_lflag: tcflag_t, +pub c_line: cc_t, +pub c_cc: [cc_t; 17usize], } -#[inline] -pub fn tcpi_rcv_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct termios2 { +pub c_iflag: tcflag_t, +pub c_oflag: tcflag_t, +pub c_cflag: tcflag_t, +pub c_lflag: tcflag_t, +pub c_line: cc_t, +pub c_cc: [cc_t; 19usize], +pub c_ispeed: speed_t, +pub c_ospeed: speed_t, } -#[inline] -pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ktermios { +pub c_iflag: tcflag_t, +pub c_oflag: tcflag_t, +pub c_cflag: tcflag_t, +pub c_lflag: tcflag_t, +pub c_line: cc_t, +pub c_cc: [cc_t; 19usize], +pub c_ispeed: speed_t, +pub c_ospeed: speed_t, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct winsize { +pub ws_row: crate::ctypes::c_ushort, +pub ws_col: crate::ctypes::c_ushort, +pub ws_xpixel: crate::ctypes::c_ushort, +pub ws_ypixel: crate::ctypes::c_ushort, } -#[inline] -pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub iov_base: *mut crate::ctypes::c_void, +pub iov_len: __kernel_size_t, } -#[inline] -pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct uffd_msg { +pub event: __u8, +pub reserved1: __u8, +pub reserved2: __u16, +pub reserved3: __u32, +pub arg: uffd_msg__bindgen_ty_1, } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { +pub flags: __u64, +pub address: __u64, +pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, } -#[inline] -pub fn tcpi_fastopen_client_fail(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { +pub ufd: __u32, } -#[inline] -pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 2u8, val as u64) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { +pub from: __u64, +pub to: __u64, +pub len: __u64, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { +pub start: __u64, +pub end: __u64, } -#[inline] -pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; -tcpi_snd_wscale as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; -tcpi_rcv_wscale as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; -tcpi_delivery_rate_app_limited as u64 -}); -__bindgen_bitfield_unit.set(9usize, 2u8, { -let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; -tcpi_fastopen_client_fail as u64 -}); -__bindgen_bitfield_unit +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { +pub reserved1: __u64, +pub reserved2: __u64, +pub reserved3: __u64, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_api { +pub api: __u64, +pub features: __u64, +pub ioctls: __u64, } -pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; -pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; -pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; -pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; -pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; -pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; -pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; -pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; -pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; -pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; -pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; -pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; -pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; -pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; -pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; -pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; -pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; -pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; -pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; -pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; -pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; -pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; -pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; -pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; -pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; -pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; -pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; -pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_6 { -TCP_NLA_PAD = 0, -TCP_NLA_BUSY = 1, -TCP_NLA_RWND_LIMITED = 2, -TCP_NLA_SNDBUF_LIMITED = 3, -TCP_NLA_DATA_SEGS_OUT = 4, -TCP_NLA_TOTAL_RETRANS = 5, -TCP_NLA_PACING_RATE = 6, -TCP_NLA_DELIVERY_RATE = 7, -TCP_NLA_SND_CWND = 8, -TCP_NLA_REORDERING = 9, -TCP_NLA_MIN_RTT = 10, -TCP_NLA_RECUR_RETRANS = 11, -TCP_NLA_DELIVERY_RATE_APP_LMT = 12, -TCP_NLA_SNDQ_SIZE = 13, -TCP_NLA_CA_STATE = 14, -TCP_NLA_SND_SSTHRESH = 15, -TCP_NLA_DELIVERED = 16, -TCP_NLA_DELIVERED_CE = 17, -TCP_NLA_BYTES_SENT = 18, -TCP_NLA_BYTES_RETRANS = 19, -TCP_NLA_DSACK_DUPS = 20, -TCP_NLA_REORD_SEEN = 21, -TCP_NLA_SRTT = 22, -TCP_NLA_TIMEOUT_REHASH = 23, -TCP_NLA_BYTES_NOTSENT = 24, -TCP_NLA_EDT = 25, -TCP_NLA_TTL = 26, -TCP_NLA_REHASH = 27, +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_range { +pub start: __u64, +pub len: __u64, } #[repr(C)] -#[derive(Copy, Clone)] -pub struct tcp_md5sig { -pub tcpm_addr: __kernel_sockaddr_storage, -pub tcpm_flags: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_ifindex: crate::ctypes::c_int, -pub tcpm_key: [__u8; 80usize], +#[derive(Debug, Copy, Clone)] +pub struct uffdio_register { +pub range: uffdio_range, +pub mode: __u64, +pub ioctls: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_diag_md5sig { -pub tcpm_family: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_addr: [__be32; 4usize], -pub tcpm_key: [__u8; 80usize], +pub struct uffdio_copy { +pub dst: __u64, +pub src: __u64, +pub len: __u64, +pub mode: __u64, +pub copy: __s64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_zerocopy_receive { -pub address: __u64, -pub length: __u32, -pub recv_skip_hint: __u32, -pub inq: __u32, -pub err: __s32, -pub copybuf_address: __u64, -pub copybuf_len: __s32, -pub flags: __u32, -pub msg_control: __u64, -pub msg_controllen: __u64, -pub msg_flags: __u32, -pub reserved: __u32, +pub struct uffdio_zeropage { +pub range: uffdio_range, +pub mode: __u64, +pub zeropage: __s64, } -pub type cc_t = crate::ctypes::c_uchar; -pub type speed_t = crate::ctypes::c_uint; -pub type tcflag_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct termio { -pub c_iflag: crate::ctypes::c_ushort, -pub c_oflag: crate::ctypes::c_ushort, -pub c_cflag: crate::ctypes::c_ushort, -pub c_lflag: crate::ctypes::c_ushort, -pub c_line: crate::ctypes::c_uchar, -pub c_cc: [crate::ctypes::c_uchar; 8usize], +pub struct uffdio_writeprotect { +pub range: uffdio_range, +pub mode: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct termios { -pub c_iflag: tcflag_t, -pub c_oflag: tcflag_t, -pub c_cflag: tcflag_t, -pub c_lflag: tcflag_t, -pub c_line: cc_t, -pub c_cc: [cc_t; 17usize], +pub struct uffdio_continue { +pub range: uffdio_range, +pub mode: __u64, +pub mapped: __s64, +} +#[repr(C)] +#[derive(Debug)] +pub struct linux_dirent64 { +pub d_ino: crate::ctypes::c_ulong, +pub d_off: crate::ctypes::c_long, +pub d_reclen: __u16, +pub d_type: __u8, +pub d_name: __IncompleteArrayField, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct termios2 { -pub c_iflag: tcflag_t, -pub c_oflag: tcflag_t, -pub c_cflag: tcflag_t, -pub c_lflag: tcflag_t, -pub c_line: cc_t, -pub c_cc: [cc_t; 19usize], -pub c_ispeed: speed_t, -pub c_ospeed: speed_t, +pub struct stat { +pub st_dev: crate::ctypes::c_uint, +pub st_ino: __kernel_ino_t, +pub st_mode: __kernel_mode_t, +pub st_nlink: crate::ctypes::c_short, +pub st_uid: __kernel_uid32_t, +pub st_gid: __kernel_gid32_t, +pub st_rdev: crate::ctypes::c_uint, +pub st_size: crate::ctypes::c_long, +pub st_atime: crate::ctypes::c_long, +pub st_mtime: crate::ctypes::c_long, +pub st_ctime: crate::ctypes::c_long, +pub st_blksize: crate::ctypes::c_long, +pub st_blocks: crate::ctypes::c_long, +pub __unused4: [crate::ctypes::c_ulong; 2usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ktermios { -pub c_iflag: tcflag_t, -pub c_oflag: tcflag_t, -pub c_cflag: tcflag_t, -pub c_lflag: tcflag_t, -pub c_line: cc_t, -pub c_cc: [cc_t; 19usize], -pub c_ispeed: speed_t, -pub c_ospeed: speed_t, +pub struct stat64 { +pub st_dev: crate::ctypes::c_ulong, +pub st_ino: crate::ctypes::c_ulong, +pub st_nlink: crate::ctypes::c_ulong, +pub st_mode: crate::ctypes::c_uint, +pub st_uid: crate::ctypes::c_uint, +pub st_gid: crate::ctypes::c_uint, +pub __pad0: crate::ctypes::c_uint, +pub st_rdev: crate::ctypes::c_ulong, +pub st_size: crate::ctypes::c_long, +pub st_blksize: crate::ctypes::c_long, +pub st_blocks: crate::ctypes::c_long, +pub st_atime: crate::ctypes::c_ulong, +pub st_atime_nsec: crate::ctypes::c_ulong, +pub st_mtime: crate::ctypes::c_ulong, +pub st_mtime_nsec: crate::ctypes::c_ulong, +pub st_ctime: crate::ctypes::c_ulong, +pub st_ctime_nsec: crate::ctypes::c_ulong, +pub __unused: [crate::ctypes::c_long; 3usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct winsize { -pub ws_row: crate::ctypes::c_ushort, -pub ws_col: crate::ctypes::c_ushort, -pub ws_xpixel: crate::ctypes::c_ushort, -pub ws_ypixel: crate::ctypes::c_ushort, +pub struct statfs { +pub f_type: __kernel_long_t, +pub f_bsize: __kernel_long_t, +pub f_blocks: __kernel_long_t, +pub f_bfree: __kernel_long_t, +pub f_bavail: __kernel_long_t, +pub f_files: __kernel_long_t, +pub f_ffree: __kernel_long_t, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __kernel_long_t, +pub f_frsize: __kernel_long_t, +pub f_flags: __kernel_long_t, +pub f_spare: [__kernel_long_t; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct iovec { -pub iov_base: *mut crate::ctypes::c_void, -pub iov_len: __kernel_size_t, +pub struct statfs64 { +pub f_type: __kernel_long_t, +pub f_bsize: __kernel_long_t, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __kernel_long_t, +pub f_frsize: __kernel_long_t, +pub f_flags: __kernel_long_t, +pub f_spare: [__kernel_long_t; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_un { -pub sun_family: __kernel_sa_family_t, -pub sun_path: [crate::ctypes::c_char; 108usize], +pub struct compat_statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct oldold_utsname { -pub sysname: [crate::ctypes::c_char; 9usize], -pub nodename: [crate::ctypes::c_char; 9usize], -pub release: [crate::ctypes::c_char; 9usize], -pub version: [crate::ctypes::c_char; 9usize], -pub machine: [crate::ctypes::c_char; 9usize], +pub struct user_desc { +pub entry_number: crate::ctypes::c_uint, +pub base_addr: crate::ctypes::c_uint, +pub limit: crate::ctypes::c_uint, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub __bindgen_padding_0: [u8; 3usize], } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct old_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], +#[derive(Debug)] +pub struct kernel_sigset_t { +pub sig: __IncompleteArrayField, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct new_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], -pub domainname: [crate::ctypes::c_char; 65usize], +#[derive(Debug)] +pub struct kernel_sigaction { +pub sa_handler_kernel: __kernel_sighandler_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_mask: kernel_sigset_t, } -impl membarrier_cmd { -pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; +pub const LINUX_VERSION_CODE: u32 = 393984; +pub const LINUX_VERSION_MAJOR: u32 = 6; +pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; +pub const LINUX_VERSION_SUBLEVEL: u32 = 0; +pub const AT_SYSINFO_EHDR: u32 = 33; +pub const AT_ADI_BLKSZ: u32 = 48; +pub const AT_ADI_NBITS: u32 = 49; +pub const AT_ADI_UEONADI: u32 = 50; +pub const AT_VECTOR_SIZE_ARCH: u32 = 4; +pub const AT_NULL: u32 = 0; +pub const AT_IGNORE: u32 = 1; +pub const AT_EXECFD: u32 = 2; +pub const AT_PHDR: u32 = 3; +pub const AT_PHENT: u32 = 4; +pub const AT_PHNUM: u32 = 5; +pub const AT_PAGESZ: u32 = 6; +pub const AT_BASE: u32 = 7; +pub const AT_FLAGS: u32 = 8; +pub const AT_ENTRY: u32 = 9; +pub const AT_NOTELF: u32 = 10; +pub const AT_UID: u32 = 11; +pub const AT_EUID: u32 = 12; +pub const AT_GID: u32 = 13; +pub const AT_EGID: u32 = 14; +pub const AT_PLATFORM: u32 = 15; +pub const AT_HWCAP: u32 = 16; +pub const AT_CLKTCK: u32 = 17; +pub const AT_SECURE: u32 = 23; +pub const AT_BASE_PLATFORM: u32 = 24; +pub const AT_RANDOM: u32 = 25; +pub const AT_HWCAP2: u32 = 26; +pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; +pub const AT_RSEQ_ALIGN: u32 = 28; +pub const AT_EXECFN: u32 = 31; +pub const AT_MINSIGSTKSZ: u32 = 51; +pub const __FD_SETSIZE: u32 = 1024; +pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; +pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; +pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; +pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; +pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; +pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; +pub const VFS_CAP_REVISION_SHIFT: u32 = 24; +pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; +pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; +pub const VFS_CAP_REVISION_1: u32 = 16777216; +pub const VFS_CAP_U32_1: u32 = 1; +pub const VFS_CAP_REVISION_2: u32 = 33554432; +pub const VFS_CAP_U32_2: u32 = 2; +pub const VFS_CAP_REVISION_3: u32 = 50331648; +pub const VFS_CAP_U32_3: u32 = 2; +pub const VFS_CAP_U32: u32 = 2; +pub const VFS_CAP_REVISION: u32 = 50331648; +pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S: u32 = 1; +pub const CAP_CHOWN: u32 = 0; +pub const CAP_DAC_OVERRIDE: u32 = 1; +pub const CAP_DAC_READ_SEARCH: u32 = 2; +pub const CAP_FOWNER: u32 = 3; +pub const CAP_FSETID: u32 = 4; +pub const CAP_KILL: u32 = 5; +pub const CAP_SETGID: u32 = 6; +pub const CAP_SETUID: u32 = 7; +pub const CAP_SETPCAP: u32 = 8; +pub const CAP_LINUX_IMMUTABLE: u32 = 9; +pub const CAP_NET_BIND_SERVICE: u32 = 10; +pub const CAP_NET_BROADCAST: u32 = 11; +pub const CAP_NET_ADMIN: u32 = 12; +pub const CAP_NET_RAW: u32 = 13; +pub const CAP_IPC_LOCK: u32 = 14; +pub const CAP_IPC_OWNER: u32 = 15; +pub const CAP_SYS_MODULE: u32 = 16; +pub const CAP_SYS_RAWIO: u32 = 17; +pub const CAP_SYS_CHROOT: u32 = 18; +pub const CAP_SYS_PTRACE: u32 = 19; +pub const CAP_SYS_PACCT: u32 = 20; +pub const CAP_SYS_ADMIN: u32 = 21; +pub const CAP_SYS_BOOT: u32 = 22; +pub const CAP_SYS_NICE: u32 = 23; +pub const CAP_SYS_RESOURCE: u32 = 24; +pub const CAP_SYS_TIME: u32 = 25; +pub const CAP_SYS_TTY_CONFIG: u32 = 26; +pub const CAP_MKNOD: u32 = 27; +pub const CAP_LEASE: u32 = 28; +pub const CAP_AUDIT_WRITE: u32 = 29; +pub const CAP_AUDIT_CONTROL: u32 = 30; +pub const CAP_SETFCAP: u32 = 31; +pub const CAP_MAC_OVERRIDE: u32 = 32; +pub const CAP_MAC_ADMIN: u32 = 33; +pub const CAP_SYSLOG: u32 = 34; +pub const CAP_WAKE_ALARM: u32 = 35; +pub const CAP_BLOCK_SUSPEND: u32 = 36; +pub const CAP_AUDIT_READ: u32 = 37; +pub const CAP_PERFMON: u32 = 38; +pub const CAP_BPF: u32 = 39; +pub const CAP_CHECKPOINT_RESTORE: u32 = 40; +pub const CAP_LAST_CAP: u32 = 40; +pub const O_APPEND: u32 = 8; +pub const FASYNC: u32 = 64; +pub const O_CREAT: u32 = 512; +pub const O_TRUNC: u32 = 1024; +pub const O_EXCL: u32 = 2048; +pub const O_DSYNC: u32 = 8192; +pub const O_NONBLOCK: u32 = 16384; +pub const O_NDELAY: u32 = 4; +pub const O_NOCTTY: u32 = 32768; +pub const O_LARGEFILE: u32 = 262144; +pub const O_DIRECT: u32 = 1048576; +pub const O_NOATIME: u32 = 2097152; +pub const O_CLOEXEC: u32 = 4194304; +pub const __O_SYNC: u32 = 8388608; +pub const O_SYNC: u32 = 8396800; +pub const O_PATH: u32 = 16777216; +pub const __O_TMPFILE: u32 = 33554432; +pub const F_GETOWN: u32 = 5; +pub const F_SETOWN: u32 = 6; +pub const F_GETLK: u32 = 7; +pub const F_SETLK: u32 = 8; +pub const F_SETLKW: u32 = 9; +pub const F_RDLCK: u32 = 1; +pub const F_WRLCK: u32 = 2; +pub const F_UNLCK: u32 = 3; +pub const O_ACCMODE: u32 = 3; +pub const O_RDONLY: u32 = 0; +pub const O_WRONLY: u32 = 1; +pub const O_RDWR: u32 = 2; +pub const O_DIRECTORY: u32 = 65536; +pub const O_NOFOLLOW: u32 = 131072; +pub const O_TMPFILE: u32 = 33619968; +pub const O_TMPFILE_MASK: u32 = 33620480; +pub const F_DUPFD: u32 = 0; +pub const F_GETFD: u32 = 1; +pub const F_SETFD: u32 = 2; +pub const F_GETFL: u32 = 3; +pub const F_SETFL: u32 = 4; +pub const F_SETSIG: u32 = 10; +pub const F_GETSIG: u32 = 11; +pub const F_SETOWN_EX: u32 = 15; +pub const F_GETOWN_EX: u32 = 16; +pub const F_GETOWNER_UIDS: u32 = 17; +pub const F_OFD_GETLK: u32 = 36; +pub const F_OFD_SETLK: u32 = 37; +pub const F_OFD_SETLKW: u32 = 38; +pub const F_OWNER_TID: u32 = 0; +pub const F_OWNER_PID: u32 = 1; +pub const F_OWNER_PGRP: u32 = 2; +pub const FD_CLOEXEC: u32 = 1; +pub const F_EXLCK: u32 = 4; +pub const F_SHLCK: u32 = 8; +pub const LOCK_SH: u32 = 1; +pub const LOCK_EX: u32 = 2; +pub const LOCK_NB: u32 = 4; +pub const LOCK_UN: u32 = 8; +pub const LOCK_MAND: u32 = 32; +pub const LOCK_READ: u32 = 64; +pub const LOCK_WRITE: u32 = 128; +pub const LOCK_RW: u32 = 192; +pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; +pub const RESOLVE_NO_XDEV: u32 = 1; +pub const RESOLVE_NO_MAGICLINKS: u32 = 2; +pub const RESOLVE_NO_SYMLINKS: u32 = 4; +pub const RESOLVE_BENEATH: u32 = 8; +pub const RESOLVE_IN_ROOT: u32 = 16; +pub const RESOLVE_CACHED: u32 = 32; +pub const F_SETLEASE: u32 = 1024; +pub const F_GETLEASE: u32 = 1025; +pub const F_CANCELLK: u32 = 1029; +pub const F_DUPFD_CLOEXEC: u32 = 1030; +pub const F_NOTIFY: u32 = 1026; +pub const F_SETPIPE_SZ: u32 = 1031; +pub const F_GETPIPE_SZ: u32 = 1032; +pub const F_ADD_SEALS: u32 = 1033; +pub const F_GET_SEALS: u32 = 1034; +pub const F_SEAL_SEAL: u32 = 1; +pub const F_SEAL_SHRINK: u32 = 2; +pub const F_SEAL_GROW: u32 = 4; +pub const F_SEAL_WRITE: u32 = 8; +pub const F_SEAL_FUTURE_WRITE: u32 = 16; +pub const F_SEAL_EXEC: u32 = 32; +pub const F_GET_RW_HINT: u32 = 1035; +pub const F_SET_RW_HINT: u32 = 1036; +pub const F_GET_FILE_RW_HINT: u32 = 1037; +pub const F_SET_FILE_RW_HINT: u32 = 1038; +pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; +pub const RWH_WRITE_LIFE_NONE: u32 = 1; +pub const RWH_WRITE_LIFE_SHORT: u32 = 2; +pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; +pub const RWH_WRITE_LIFE_LONG: u32 = 4; +pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; +pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; +pub const DN_ACCESS: u32 = 1; +pub const DN_MODIFY: u32 = 2; +pub const DN_CREATE: u32 = 4; +pub const DN_DELETE: u32 = 8; +pub const DN_RENAME: u32 = 16; +pub const DN_ATTRIB: u32 = 32; +pub const DN_MULTISHOT: u32 = 2147483648; +pub const AT_FDCWD: i32 = -100; +pub const AT_SYMLINK_NOFOLLOW: u32 = 256; +pub const AT_EACCESS: u32 = 512; +pub const AT_REMOVEDIR: u32 = 512; +pub const AT_SYMLINK_FOLLOW: u32 = 1024; +pub const AT_NO_AUTOMOUNT: u32 = 2048; +pub const AT_EMPTY_PATH: u32 = 4096; +pub const AT_STATX_SYNC_TYPE: u32 = 24576; +pub const AT_STATX_SYNC_AS_STAT: u32 = 0; +pub const AT_STATX_FORCE_SYNC: u32 = 8192; +pub const AT_STATX_DONT_SYNC: u32 = 16384; +pub const AT_RECURSIVE: u32 = 32768; +pub const EPOLL_CLOEXEC: u32 = 4194304; +pub const EPOLL_CTL_ADD: u32 = 1; +pub const EPOLL_CTL_DEL: u32 = 2; +pub const EPOLL_CTL_MOD: u32 = 3; +pub const POSIX_FADV_NORMAL: u32 = 0; +pub const POSIX_FADV_RANDOM: u32 = 1; +pub const POSIX_FADV_SEQUENTIAL: u32 = 2; +pub const POSIX_FADV_WILLNEED: u32 = 3; +pub const POSIX_FADV_DONTNEED: u32 = 4; +pub const POSIX_FADV_NOREUSE: u32 = 5; +pub const FALLOC_FL_KEEP_SIZE: u32 = 1; +pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; +pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; +pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; +pub const FALLOC_FL_ZERO_RANGE: u32 = 16; +pub const FALLOC_FL_INSERT_RANGE: u32 = 32; +pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_XSIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const OPEN_TREE_CLOEXEC: u32 = 4194304; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const FUTEX_WAIT: u32 = 0; +pub const FUTEX_WAKE: u32 = 1; +pub const FUTEX_FD: u32 = 2; +pub const FUTEX_REQUEUE: u32 = 3; +pub const FUTEX_CMP_REQUEUE: u32 = 4; +pub const FUTEX_WAKE_OP: u32 = 5; +pub const FUTEX_LOCK_PI: u32 = 6; +pub const FUTEX_UNLOCK_PI: u32 = 7; +pub const FUTEX_TRYLOCK_PI: u32 = 8; +pub const FUTEX_WAIT_BITSET: u32 = 9; +pub const FUTEX_WAKE_BITSET: u32 = 10; +pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; +pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; +pub const FUTEX_LOCK_PI2: u32 = 13; +pub const FUTEX_PRIVATE_FLAG: u32 = 128; +pub const FUTEX_CLOCK_REALTIME: u32 = 256; +pub const FUTEX_CMD_MASK: i32 = -385; +pub const FUTEX_WAIT_PRIVATE: u32 = 128; +pub const FUTEX_WAKE_PRIVATE: u32 = 129; +pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; +pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; +pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; +pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; +pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; +pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; +pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; +pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; +pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; +pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; +pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; +pub const FUTEX_32: u32 = 2; +pub const FUTEX_WAITV_MAX: u32 = 128; +pub const FUTEX_WAITERS: u32 = 2147483648; +pub const FUTEX_OWNER_DIED: u32 = 1073741824; +pub const FUTEX_TID_MASK: u32 = 1073741823; +pub const ROBUST_LIST_LIMIT: u32 = 2048; +pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; +pub const FUTEX_OP_SET: u32 = 0; +pub const FUTEX_OP_ADD: u32 = 1; +pub const FUTEX_OP_OR: u32 = 2; +pub const FUTEX_OP_ANDN: u32 = 3; +pub const FUTEX_OP_XOR: u32 = 4; +pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; +pub const FUTEX_OP_CMP_EQ: u32 = 0; +pub const FUTEX_OP_CMP_NE: u32 = 1; +pub const FUTEX_OP_CMP_LT: u32 = 2; +pub const FUTEX_OP_CMP_LE: u32 = 3; +pub const FUTEX_OP_CMP_GT: u32 = 4; +pub const FUTEX_OP_CMP_GE: u32 = 5; +pub const IN_ACCESS: u32 = 1; +pub const IN_MODIFY: u32 = 2; +pub const IN_ATTRIB: u32 = 4; +pub const IN_CLOSE_WRITE: u32 = 8; +pub const IN_CLOSE_NOWRITE: u32 = 16; +pub const IN_OPEN: u32 = 32; +pub const IN_MOVED_FROM: u32 = 64; +pub const IN_MOVED_TO: u32 = 128; +pub const IN_CREATE: u32 = 256; +pub const IN_DELETE: u32 = 512; +pub const IN_DELETE_SELF: u32 = 1024; +pub const IN_MOVE_SELF: u32 = 2048; +pub const IN_UNMOUNT: u32 = 8192; +pub const IN_Q_OVERFLOW: u32 = 16384; +pub const IN_IGNORED: u32 = 32768; +pub const IN_CLOSE: u32 = 24; +pub const IN_MOVE: u32 = 192; +pub const IN_ONLYDIR: u32 = 16777216; +pub const IN_DONT_FOLLOW: u32 = 33554432; +pub const IN_EXCL_UNLINK: u32 = 67108864; +pub const IN_MASK_CREATE: u32 = 268435456; +pub const IN_MASK_ADD: u32 = 536870912; +pub const IN_ISDIR: u32 = 1073741824; +pub const IN_ONESHOT: u32 = 2147483648; +pub const IN_ALL_EVENTS: u32 = 4095; +pub const IN_CLOEXEC: u32 = 4194304; +pub const IN_NONBLOCK: u32 = 16384; +pub const ADFS_SUPER_MAGIC: u32 = 44533; +pub const AFFS_SUPER_MAGIC: u32 = 44543; +pub const AFS_SUPER_MAGIC: u32 = 1397113167; +pub const AUTOFS_SUPER_MAGIC: u32 = 391; +pub const CEPH_SUPER_MAGIC: u32 = 12805120; +pub const CODA_SUPER_MAGIC: u32 = 1937076805; +pub const CRAMFS_MAGIC: u32 = 684539205; +pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; +pub const DEBUGFS_MAGIC: u32 = 1684170528; +pub const SECURITYFS_MAGIC: u32 = 1935894131; +pub const SELINUX_MAGIC: u32 = 4185718668; +pub const SMACK_MAGIC: u32 = 1128357203; +pub const RAMFS_MAGIC: u32 = 2240043254; +pub const TMPFS_MAGIC: u32 = 16914836; +pub const HUGETLBFS_MAGIC: u32 = 2508478710; +pub const SQUASHFS_MAGIC: u32 = 1936814952; +pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; +pub const EFS_SUPER_MAGIC: u32 = 4278867; +pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; +pub const EXT2_SUPER_MAGIC: u32 = 61267; +pub const EXT3_SUPER_MAGIC: u32 = 61267; +pub const XENFS_SUPER_MAGIC: u32 = 2881100148; +pub const EXT4_SUPER_MAGIC: u32 = 61267; +pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; +pub const NILFS_SUPER_MAGIC: u32 = 13364; +pub const F2FS_SUPER_MAGIC: u32 = 4076150800; +pub const HPFS_SUPER_MAGIC: u32 = 4187351113; +pub const ISOFS_SUPER_MAGIC: u32 = 38496; +pub const JFFS2_SUPER_MAGIC: u32 = 29366; +pub const XFS_SUPER_MAGIC: u32 = 1481003842; +pub const PSTOREFS_MAGIC: u32 = 1634035564; +pub const EFIVARFS_MAGIC: u32 = 3730735588; +pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; +pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; +pub const FUSE_SUPER_MAGIC: u32 = 1702057286; +pub const MINIX_SUPER_MAGIC: u32 = 4991; +pub const MINIX_SUPER_MAGIC2: u32 = 5007; +pub const MINIX2_SUPER_MAGIC: u32 = 9320; +pub const MINIX2_SUPER_MAGIC2: u32 = 9336; +pub const MINIX3_SUPER_MAGIC: u32 = 19802; +pub const MSDOS_SUPER_MAGIC: u32 = 19780; +pub const EXFAT_SUPER_MAGIC: u32 = 538032816; +pub const NCP_SUPER_MAGIC: u32 = 22092; +pub const NFS_SUPER_MAGIC: u32 = 26985; +pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; +pub const OPENPROM_SUPER_MAGIC: u32 = 40865; +pub const QNX4_SUPER_MAGIC: u32 = 47; +pub const QNX6_SUPER_MAGIC: u32 = 1746473250; +pub const AFS_FS_MAGIC: u32 = 1799439955; +pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; +pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9] = b"ReIsErFs\0"; +pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr2Fs\0"; +pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr3Fs\0"; +pub const SMB_SUPER_MAGIC: u32 = 20859; +pub const CIFS_SUPER_MAGIC: u32 = 4283649346; +pub const SMB2_SUPER_MAGIC: u32 = 4266872130; +pub const CGROUP_SUPER_MAGIC: u32 = 2613483; +pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; +pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; +pub const STACK_END_MAGIC: u32 = 1470918301; +pub const TRACEFS_MAGIC: u32 = 1953653091; +pub const V9FS_MAGIC: u32 = 16914839; +pub const BDEVFS_MAGIC: u32 = 1650746742; +pub const DAXFS_MAGIC: u32 = 1684300152; +pub const BINFMTFS_MAGIC: u32 = 1112100429; +pub const DEVPTS_SUPER_MAGIC: u32 = 7377; +pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; +pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; +pub const PIPEFS_MAGIC: u32 = 1346981957; +pub const PROC_SUPER_MAGIC: u32 = 40864; +pub const SOCKFS_MAGIC: u32 = 1397703499; +pub const SYSFS_MAGIC: u32 = 1650812274; +pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; +pub const MTD_INODE_FS_MAGIC: u32 = 288389204; +pub const ANON_INODE_FS_MAGIC: u32 = 151263540; +pub const BTRFS_TEST_MAGIC: u32 = 1936880249; +pub const NSFS_MAGIC: u32 = 1853056627; +pub const BPF_FS_MAGIC: u32 = 3405662737; +pub const AAFS_MAGIC: u32 = 1513908720; +pub const ZONEFS_MAGIC: u32 = 1515144787; +pub const UDF_SUPER_MAGIC: u32 = 352400198; +pub const DMA_BUF_MAGIC: u32 = 1145913666; +pub const DEVMEM_MAGIC: u32 = 1162691661; +pub const SECRETMEM_MAGIC: u32 = 1397048141; +pub const PROT_READ: u32 = 1; +pub const PROT_WRITE: u32 = 2; +pub const PROT_EXEC: u32 = 4; +pub const PROT_SEM: u32 = 8; +pub const PROT_NONE: u32 = 0; +pub const PROT_GROWSDOWN: u32 = 16777216; +pub const PROT_GROWSUP: u32 = 33554432; +pub const MAP_TYPE: u32 = 15; +pub const MAP_FIXED: u32 = 16; +pub const MAP_ANONYMOUS: u32 = 32; +pub const MAP_POPULATE: u32 = 32768; +pub const MAP_NONBLOCK: u32 = 65536; +pub const MAP_STACK: u32 = 131072; +pub const MAP_HUGETLB: u32 = 262144; +pub const MAP_SYNC: u32 = 524288; +pub const MAP_FIXED_NOREPLACE: u32 = 1048576; +pub const MAP_UNINITIALIZED: u32 = 67108864; +pub const MLOCK_ONFAULT: u32 = 1; +pub const MS_ASYNC: u32 = 1; +pub const MS_INVALIDATE: u32 = 2; +pub const MS_SYNC: u32 = 4; +pub const MADV_NORMAL: u32 = 0; +pub const MADV_RANDOM: u32 = 1; +pub const MADV_SEQUENTIAL: u32 = 2; +pub const MADV_WILLNEED: u32 = 3; +pub const MADV_DONTNEED: u32 = 4; +pub const MADV_FREE: u32 = 8; +pub const MADV_REMOVE: u32 = 9; +pub const MADV_DONTFORK: u32 = 10; +pub const MADV_DOFORK: u32 = 11; +pub const MADV_HWPOISON: u32 = 100; +pub const MADV_SOFT_OFFLINE: u32 = 101; +pub const MADV_MERGEABLE: u32 = 12; +pub const MADV_UNMERGEABLE: u32 = 13; +pub const MADV_HUGEPAGE: u32 = 14; +pub const MADV_NOHUGEPAGE: u32 = 15; +pub const MADV_DONTDUMP: u32 = 16; +pub const MADV_DODUMP: u32 = 17; +pub const MADV_WIPEONFORK: u32 = 18; +pub const MADV_KEEPONFORK: u32 = 19; +pub const MADV_COLD: u32 = 20; +pub const MADV_PAGEOUT: u32 = 21; +pub const MADV_POPULATE_READ: u32 = 22; +pub const MADV_POPULATE_WRITE: u32 = 23; +pub const MADV_DONTNEED_LOCKED: u32 = 24; +pub const MADV_COLLAPSE: u32 = 25; +pub const MAP_FILE: u32 = 0; +pub const PKEY_DISABLE_ACCESS: u32 = 1; +pub const PKEY_DISABLE_WRITE: u32 = 2; +pub const PKEY_ACCESS_MASK: u32 = 3; +pub const PROT_ADI: u32 = 16; +pub const MAP_RENAME: u32 = 32; +pub const MAP_NORESERVE: u32 = 64; +pub const MAP_INHERIT: u32 = 128; +pub const MAP_LOCKED: u32 = 256; +pub const _MAP_NEW: u32 = 2147483648; +pub const MAP_GROWSDOWN: u32 = 512; +pub const MAP_DENYWRITE: u32 = 2048; +pub const MAP_EXECUTABLE: u32 = 4096; +pub const MCL_CURRENT: u32 = 8192; +pub const MCL_FUTURE: u32 = 16384; +pub const MCL_ONFAULT: u32 = 32768; +pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; +pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; +pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; +pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; +pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; +pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; +pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; +pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; +pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; +pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; +pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; +pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; +pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; +pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; +pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; +pub const MREMAP_MAYMOVE: u32 = 1; +pub const MREMAP_FIXED: u32 = 2; +pub const MREMAP_DONTUNMAP: u32 = 4; +pub const OVERCOMMIT_GUESS: u32 = 0; +pub const OVERCOMMIT_ALWAYS: u32 = 1; +pub const OVERCOMMIT_NEVER: u32 = 2; +pub const MAP_SHARED: u32 = 1; +pub const MAP_PRIVATE: u32 = 2; +pub const MAP_SHARED_VALIDATE: u32 = 3; +pub const MAP_HUGE_SHIFT: u32 = 26; +pub const MAP_HUGE_MASK: u32 = 63; +pub const MAP_HUGE_16KB: u32 = 939524096; +pub const MAP_HUGE_64KB: u32 = 1073741824; +pub const MAP_HUGE_512KB: u32 = 1275068416; +pub const MAP_HUGE_1MB: u32 = 1342177280; +pub const MAP_HUGE_2MB: u32 = 1409286144; +pub const MAP_HUGE_8MB: u32 = 1543503872; +pub const MAP_HUGE_16MB: u32 = 1610612736; +pub const MAP_HUGE_32MB: u32 = 1677721600; +pub const MAP_HUGE_256MB: u32 = 1879048192; +pub const MAP_HUGE_512MB: u32 = 1946157056; +pub const MAP_HUGE_1GB: u32 = 2013265920; +pub const MAP_HUGE_2GB: u32 = 2080374784; +pub const MAP_HUGE_16GB: u32 = 2281701376; +pub const POLLWRBAND: u32 = 256; +pub const POLLMSG: u32 = 512; +pub const POLLREMOVE: u32 = 1024; +pub const POLLRDHUP: u32 = 2048; +pub const POLLIN: u32 = 1; +pub const POLLPRI: u32 = 2; +pub const POLLOUT: u32 = 4; +pub const POLLERR: u32 = 8; +pub const POLLHUP: u32 = 16; +pub const POLLNVAL: u32 = 32; +pub const POLLRDNORM: u32 = 64; +pub const POLLRDBAND: u32 = 128; +pub const GRND_NONBLOCK: u32 = 1; +pub const GRND_RANDOM: u32 = 2; +pub const GRND_INSECURE: u32 = 4; +pub const ITIMER_REAL: u32 = 0; +pub const ITIMER_VIRTUAL: u32 = 1; +pub const ITIMER_PROF: u32 = 2; +pub const CLOCK_REALTIME: u32 = 0; +pub const CLOCK_MONOTONIC: u32 = 1; +pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; +pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; +pub const CLOCK_MONOTONIC_RAW: u32 = 4; +pub const CLOCK_REALTIME_COARSE: u32 = 5; +pub const CLOCK_MONOTONIC_COARSE: u32 = 6; +pub const CLOCK_BOOTTIME: u32 = 7; +pub const CLOCK_REALTIME_ALARM: u32 = 8; +pub const CLOCK_BOOTTIME_ALARM: u32 = 9; +pub const CLOCK_SGI_CYCLE: u32 = 10; +pub const CLOCK_TAI: u32 = 11; +pub const MAX_CLOCKS: u32 = 16; +pub const CLOCKS_MASK: u32 = 1; +pub const CLOCKS_MONO: u32 = 1; +pub const TIMER_ABSTIME: u32 = 1; +pub const RUSAGE_SELF: u32 = 0; +pub const RUSAGE_CHILDREN: i32 = -1; +pub const RUSAGE_BOTH: i32 = -2; +pub const RUSAGE_THREAD: u32 = 1; +pub const RLIM64_INFINITY: i32 = -1; +pub const PRIO_MIN: i32 = -20; +pub const PRIO_MAX: u32 = 20; +pub const PRIO_PROCESS: u32 = 0; +pub const PRIO_PGRP: u32 = 1; +pub const PRIO_USER: u32 = 2; +pub const _STK_LIM: u32 = 8388608; +pub const MLOCK_LIMIT: u32 = 8388608; +pub const RLIMIT_NOFILE: u32 = 6; +pub const RLIMIT_NPROC: u32 = 7; +pub const RLIMIT_CPU: u32 = 0; +pub const RLIMIT_FSIZE: u32 = 1; +pub const RLIMIT_DATA: u32 = 2; +pub const RLIMIT_STACK: u32 = 3; +pub const RLIMIT_CORE: u32 = 4; +pub const RLIMIT_RSS: u32 = 5; +pub const RLIMIT_MEMLOCK: u32 = 8; +pub const RLIMIT_AS: u32 = 9; +pub const RLIMIT_LOCKS: u32 = 10; +pub const RLIMIT_SIGPENDING: u32 = 11; +pub const RLIMIT_MSGQUEUE: u32 = 12; +pub const RLIMIT_NICE: u32 = 13; +pub const RLIMIT_RTPRIO: u32 = 14; +pub const RLIMIT_RTTIME: u32 = 15; +pub const RLIM_NLIMITS: u32 = 16; +pub const RLIM_INFINITY: i32 = -1; +pub const CSIGNAL: u32 = 255; +pub const CLONE_VM: u32 = 256; +pub const CLONE_FS: u32 = 512; +pub const CLONE_FILES: u32 = 1024; +pub const CLONE_SIGHAND: u32 = 2048; +pub const CLONE_PIDFD: u32 = 4096; +pub const CLONE_PTRACE: u32 = 8192; +pub const CLONE_VFORK: u32 = 16384; +pub const CLONE_PARENT: u32 = 32768; +pub const CLONE_THREAD: u32 = 65536; +pub const CLONE_NEWNS: u32 = 131072; +pub const CLONE_SYSVSEM: u32 = 262144; +pub const CLONE_SETTLS: u32 = 524288; +pub const CLONE_PARENT_SETTID: u32 = 1048576; +pub const CLONE_CHILD_CLEARTID: u32 = 2097152; +pub const CLONE_DETACHED: u32 = 4194304; +pub const CLONE_UNTRACED: u32 = 8388608; +pub const CLONE_CHILD_SETTID: u32 = 16777216; +pub const CLONE_NEWCGROUP: u32 = 33554432; +pub const CLONE_NEWUTS: u32 = 67108864; +pub const CLONE_NEWIPC: u32 = 134217728; +pub const CLONE_NEWUSER: u32 = 268435456; +pub const CLONE_NEWPID: u32 = 536870912; +pub const CLONE_NEWNET: u32 = 1073741824; +pub const CLONE_IO: u32 = 2147483648; +pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; +pub const CLONE_INTO_CGROUP: u64 = 8589934592; +pub const CLONE_NEWTIME: u32 = 128; +pub const CLONE_ARGS_SIZE_VER0: u32 = 64; +pub const CLONE_ARGS_SIZE_VER1: u32 = 80; +pub const CLONE_ARGS_SIZE_VER2: u32 = 88; +pub const SCHED_NORMAL: u32 = 0; +pub const SCHED_FIFO: u32 = 1; +pub const SCHED_RR: u32 = 2; +pub const SCHED_BATCH: u32 = 3; +pub const SCHED_IDLE: u32 = 5; +pub const SCHED_DEADLINE: u32 = 6; +pub const SCHED_RESET_ON_FORK: u32 = 1073741824; +pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; +pub const SCHED_FLAG_RECLAIM: u32 = 2; +pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; +pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; +pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; +pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; +pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; +pub const SCHED_FLAG_KEEP_ALL: u32 = 24; +pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; +pub const SCHED_FLAG_ALL: u32 = 127; +pub const SIGHUP: u32 = 1; +pub const SIGINT: u32 = 2; +pub const SIGQUIT: u32 = 3; +pub const SIGILL: u32 = 4; +pub const SUBSIG_STACK: u32 = 0; +pub const SUBSIG_ILLINST: u32 = 2; +pub const SUBSIG_PRIVINST: u32 = 3; +pub const SIGTRAP: u32 = 5; +pub const SIGABRT: u32 = 6; +pub const SIGIOT: u32 = 6; +pub const SIGEMT: u32 = 7; +pub const SUBSIG_TAG: u32 = 10; +pub const SIGFPE: u32 = 8; +pub const SUBSIG_FPDISABLED: u32 = 1024; +pub const SUBSIG_FPERROR: u32 = 1028; +pub const SUBSIG_FPINTOVFL: u32 = 1; +pub const SUBSIG_FPSTSIG: u32 = 2; +pub const SUBSIG_IDIVZERO: u32 = 20; +pub const SUBSIG_FPINEXACT: u32 = 196; +pub const SUBSIG_FPDIVZERO: u32 = 200; +pub const SUBSIG_FPUNFLOW: u32 = 204; +pub const SUBSIG_FPOPERROR: u32 = 208; +pub const SUBSIG_FPOVFLOW: u32 = 212; +pub const SIGKILL: u32 = 9; +pub const SIGBUS: u32 = 10; +pub const SUBSIG_BUSTIMEOUT: u32 = 1; +pub const SUBSIG_ALIGNMENT: u32 = 2; +pub const SUBSIG_MISCERROR: u32 = 5; +pub const SIGSEGV: u32 = 11; +pub const SUBSIG_NOMAPPING: u32 = 3; +pub const SUBSIG_PROTECTION: u32 = 4; +pub const SUBSIG_SEGERROR: u32 = 5; +pub const SIGSYS: u32 = 12; +pub const SIGPIPE: u32 = 13; +pub const SIGALRM: u32 = 14; +pub const SIGTERM: u32 = 15; +pub const SIGURG: u32 = 16; +pub const SIGSTOP: u32 = 17; +pub const SIGTSTP: u32 = 18; +pub const SIGCONT: u32 = 19; +pub const SIGCHLD: u32 = 20; +pub const SIGTTIN: u32 = 21; +pub const SIGTTOU: u32 = 22; +pub const SIGIO: u32 = 23; +pub const SIGPOLL: u32 = 23; +pub const SIGXCPU: u32 = 24; +pub const SIGXFSZ: u32 = 25; +pub const SIGVTALRM: u32 = 26; +pub const SIGPROF: u32 = 27; +pub const SIGWINCH: u32 = 28; +pub const SIGLOST: u32 = 29; +pub const SIGPWR: u32 = 29; +pub const SIGUSR1: u32 = 30; +pub const SIGUSR2: u32 = 31; +pub const __OLD_NSIG: u32 = 32; +pub const __NEW_NSIG: u32 = 64; +pub const _NSIG_BPW: u32 = 64; +pub const _NSIG_WORDS: u32 = 1; +pub const SIGRTMIN: u32 = 32; +pub const SIGRTMAX: u32 = 64; +pub const _NSIG: u32 = 32; +pub const NSIG: u32 = 32; +pub const _SV_SSTACK: u32 = 1; +pub const _SV_INTR: u32 = 2; +pub const _SV_RESET: u32 = 4; +pub const _SV_IGNCHILD: u32 = 8; +pub const SA_NOCLDSTOP: u32 = 8; +pub const SA_STACK: u32 = 1; +pub const SA_ONSTACK: u32 = 1; +pub const SA_RESTART: u32 = 2; +pub const SA_RESETHAND: u32 = 4; +pub const SA_NODEFER: u32 = 32; +pub const SA_NOCLDWAIT: u32 = 256; +pub const SA_SIGINFO: u32 = 512; +pub const SIG_BLOCK: u32 = 1; +pub const SIG_UNBLOCK: u32 = 2; +pub const SIG_SETMASK: u32 = 4; +pub const MINSIGSTKSZ: u32 = 4096; +pub const SIGSTKSZ: u32 = 16384; +pub const SA_UNSUPPORTED: u32 = 1024; +pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SA_NOMASK: u32 = 32; +pub const SA_ONESHOT: u32 = 4; +pub const SI_MAX_SIZE: u32 = 128; +pub const SI_USER: u32 = 0; +pub const SI_KERNEL: u32 = 128; +pub const SI_QUEUE: i32 = -1; +pub const SI_TIMER: i32 = -2; +pub const SI_MESGQ: i32 = -3; +pub const SI_ASYNCIO: i32 = -4; +pub const SI_SIGIO: i32 = -5; +pub const SI_TKILL: i32 = -6; +pub const SI_DETHREAD: i32 = -7; +pub const SI_ASYNCNL: i32 = -60; +pub const ILL_ILLOPC: u32 = 1; +pub const ILL_ILLOPN: u32 = 2; +pub const ILL_ILLADR: u32 = 3; +pub const ILL_ILLTRP: u32 = 4; +pub const ILL_PRVOPC: u32 = 5; +pub const ILL_PRVREG: u32 = 6; +pub const ILL_COPROC: u32 = 7; +pub const ILL_BADSTK: u32 = 8; +pub const ILL_BADIADDR: u32 = 9; +pub const __ILL_BREAK: u32 = 10; +pub const __ILL_BNDMOD: u32 = 11; +pub const NSIGILL: u32 = 11; +pub const FPE_INTDIV: u32 = 1; +pub const FPE_INTOVF: u32 = 2; +pub const FPE_FLTDIV: u32 = 3; +pub const FPE_FLTOVF: u32 = 4; +pub const FPE_FLTUND: u32 = 5; +pub const FPE_FLTRES: u32 = 6; +pub const FPE_FLTINV: u32 = 7; +pub const FPE_FLTSUB: u32 = 8; +pub const __FPE_DECOVF: u32 = 9; +pub const __FPE_DECDIV: u32 = 10; +pub const __FPE_DECERR: u32 = 11; +pub const __FPE_INVASC: u32 = 12; +pub const __FPE_INVDEC: u32 = 13; +pub const FPE_FLTUNK: u32 = 14; +pub const FPE_CONDTRAP: u32 = 15; +pub const NSIGFPE: u32 = 15; +pub const SEGV_MAPERR: u32 = 1; +pub const SEGV_ACCERR: u32 = 2; +pub const SEGV_BNDERR: u32 = 3; +pub const SEGV_PKUERR: u32 = 4; +pub const SEGV_ACCADI: u32 = 5; +pub const SEGV_ADIDERR: u32 = 6; +pub const SEGV_ADIPERR: u32 = 7; +pub const SEGV_MTEAERR: u32 = 8; +pub const SEGV_MTESERR: u32 = 9; +pub const NSIGSEGV: u32 = 9; +pub const BUS_ADRALN: u32 = 1; +pub const BUS_ADRERR: u32 = 2; +pub const BUS_OBJERR: u32 = 3; +pub const BUS_MCEERR_AR: u32 = 4; +pub const BUS_MCEERR_AO: u32 = 5; +pub const NSIGBUS: u32 = 5; +pub const TRAP_BRKPT: u32 = 1; +pub const TRAP_TRACE: u32 = 2; +pub const TRAP_BRANCH: u32 = 3; +pub const TRAP_HWBKPT: u32 = 4; +pub const TRAP_UNK: u32 = 5; +pub const TRAP_PERF: u32 = 6; +pub const NSIGTRAP: u32 = 6; +pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; +pub const CLD_EXITED: u32 = 1; +pub const CLD_KILLED: u32 = 2; +pub const CLD_DUMPED: u32 = 3; +pub const CLD_TRAPPED: u32 = 4; +pub const CLD_STOPPED: u32 = 5; +pub const CLD_CONTINUED: u32 = 6; +pub const NSIGCHLD: u32 = 6; +pub const POLL_IN: u32 = 1; +pub const POLL_OUT: u32 = 2; +pub const POLL_MSG: u32 = 3; +pub const POLL_ERR: u32 = 4; +pub const POLL_PRI: u32 = 5; +pub const POLL_HUP: u32 = 6; +pub const NSIGPOLL: u32 = 6; +pub const SYS_SECCOMP: u32 = 1; +pub const SYS_USER_DISPATCH: u32 = 2; +pub const NSIGSYS: u32 = 2; +pub const EMT_TAGOVF: u32 = 1; +pub const NSIGEMT: u32 = 1; +pub const SIGEV_SIGNAL: u32 = 0; +pub const SIGEV_NONE: u32 = 1; +pub const SIGEV_THREAD: u32 = 2; +pub const SIGEV_THREAD_ID: u32 = 4; +pub const SIGEV_MAX_SIZE: u32 = 64; +pub const SI_NOINFO: u32 = 32767; +pub const SS_ONSTACK: u32 = 1; +pub const SS_DISABLE: u32 = 2; +pub const SS_AUTODISARM: u32 = 2147483648; +pub const SS_FLAG_BITS: u32 = 2147483648; +pub const S_IFMT: u32 = 61440; +pub const S_IFSOCK: u32 = 49152; +pub const S_IFLNK: u32 = 40960; +pub const S_IFREG: u32 = 32768; +pub const S_IFBLK: u32 = 24576; +pub const S_IFDIR: u32 = 16384; +pub const S_IFCHR: u32 = 8192; +pub const S_IFIFO: u32 = 4096; +pub const S_ISUID: u32 = 2048; +pub const S_ISGID: u32 = 1024; +pub const S_ISVTX: u32 = 512; +pub const S_IRWXU: u32 = 448; +pub const S_IRUSR: u32 = 256; +pub const S_IWUSR: u32 = 128; +pub const S_IXUSR: u32 = 64; +pub const S_IRWXG: u32 = 56; +pub const S_IRGRP: u32 = 32; +pub const S_IWGRP: u32 = 16; +pub const S_IXGRP: u32 = 8; +pub const S_IRWXO: u32 = 7; +pub const S_IROTH: u32 = 4; +pub const S_IWOTH: u32 = 2; +pub const S_IXOTH: u32 = 1; +pub const STATX_TYPE: u32 = 1; +pub const STATX_MODE: u32 = 2; +pub const STATX_NLINK: u32 = 4; +pub const STATX_UID: u32 = 8; +pub const STATX_GID: u32 = 16; +pub const STATX_ATIME: u32 = 32; +pub const STATX_MTIME: u32 = 64; +pub const STATX_CTIME: u32 = 128; +pub const STATX_INO: u32 = 256; +pub const STATX_SIZE: u32 = 512; +pub const STATX_BLOCKS: u32 = 1024; +pub const STATX_BASIC_STATS: u32 = 2047; +pub const STATX_BTIME: u32 = 2048; +pub const STATX_MNT_ID: u32 = 4096; +pub const STATX_DIOALIGN: u32 = 8192; +pub const STATX__RESERVED: u32 = 2147483648; +pub const STATX_ALL: u32 = 4095; +pub const STATX_ATTR_COMPRESSED: u32 = 4; +pub const STATX_ATTR_IMMUTABLE: u32 = 16; +pub const STATX_ATTR_APPEND: u32 = 32; +pub const STATX_ATTR_NODUMP: u32 = 64; +pub const STATX_ATTR_ENCRYPTED: u32 = 2048; +pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; +pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; +pub const STATX_ATTR_VERITY: u32 = 1048576; +pub const STATX_ATTR_DAX: u32 = 2097152; +pub const TIOCPKT_DATA: u32 = 0; +pub const TIOCPKT_FLUSHREAD: u32 = 1; +pub const TIOCPKT_FLUSHWRITE: u32 = 2; +pub const TIOCPKT_STOP: u32 = 4; +pub const TIOCPKT_START: u32 = 8; +pub const TIOCPKT_NOSTOP: u32 = 16; +pub const TIOCPKT_DOSTOP: u32 = 32; +pub const TIOCPKT_IOCTL: u32 = 64; +pub const IGNBRK: u32 = 1; +pub const BRKINT: u32 = 2; +pub const IGNPAR: u32 = 4; +pub const PARMRK: u32 = 8; +pub const INPCK: u32 = 16; +pub const ISTRIP: u32 = 32; +pub const INLCR: u32 = 64; +pub const IGNCR: u32 = 128; +pub const ICRNL: u32 = 256; +pub const IXANY: u32 = 2048; +pub const OPOST: u32 = 1; +pub const OCRNL: u32 = 8; +pub const ONOCR: u32 = 16; +pub const ONLRET: u32 = 32; +pub const OFILL: u32 = 64; +pub const OFDEL: u32 = 128; +pub const B0: u32 = 0; +pub const B50: u32 = 1; +pub const B75: u32 = 2; +pub const B110: u32 = 3; +pub const B134: u32 = 4; +pub const B150: u32 = 5; +pub const B200: u32 = 6; +pub const B300: u32 = 7; +pub const B600: u32 = 8; +pub const B1200: u32 = 9; +pub const B1800: u32 = 10; +pub const B2400: u32 = 11; +pub const B4800: u32 = 12; +pub const B9600: u32 = 13; +pub const B19200: u32 = 14; +pub const B38400: u32 = 15; +pub const EXTA: u32 = 14; +pub const EXTB: u32 = 15; +pub const ADDRB: u32 = 536870912; +pub const CMSPAR: u32 = 1073741824; +pub const CRTSCTS: u32 = 2147483648; +pub const IBSHIFT: u32 = 16; +pub const TCOOFF: u32 = 0; +pub const TCOON: u32 = 1; +pub const TCIOFF: u32 = 2; +pub const TCION: u32 = 3; +pub const TCIFLUSH: u32 = 0; +pub const TCOFLUSH: u32 = 1; +pub const TCIOFLUSH: u32 = 2; +pub const NCC: u32 = 8; +pub const NCCS: u32 = 17; +pub const VINTR: u32 = 0; +pub const VQUIT: u32 = 1; +pub const VERASE: u32 = 2; +pub const VKILL: u32 = 3; +pub const VEOF: u32 = 4; +pub const VEOL: u32 = 5; +pub const VEOL2: u32 = 6; +pub const VSWTC: u32 = 7; +pub const VSTART: u32 = 8; +pub const VSTOP: u32 = 9; +pub const VSUSP: u32 = 10; +pub const VDSUSP: u32 = 11; +pub const VREPRINT: u32 = 12; +pub const VDISCARD: u32 = 13; +pub const VWERASE: u32 = 14; +pub const VLNEXT: u32 = 15; +pub const VMIN: u32 = 4; +pub const VTIME: u32 = 5; +pub const IUCLC: u32 = 512; +pub const IXON: u32 = 1024; +pub const IXOFF: u32 = 4096; +pub const IMAXBEL: u32 = 8192; +pub const IUTF8: u32 = 16384; +pub const OLCUC: u32 = 2; +pub const ONLCR: u32 = 4; +pub const NLDLY: u32 = 256; +pub const NL0: u32 = 0; +pub const NL1: u32 = 256; +pub const CRDLY: u32 = 1536; +pub const CR0: u32 = 0; +pub const CR1: u32 = 512; +pub const CR2: u32 = 1024; +pub const CR3: u32 = 1536; +pub const TABDLY: u32 = 6144; +pub const TAB0: u32 = 0; +pub const TAB1: u32 = 2048; +pub const TAB2: u32 = 4096; +pub const TAB3: u32 = 6144; +pub const XTABS: u32 = 6144; +pub const BSDLY: u32 = 8192; +pub const BS0: u32 = 0; +pub const BS1: u32 = 8192; +pub const VTDLY: u32 = 16384; +pub const VT0: u32 = 0; +pub const VT1: u32 = 16384; +pub const FFDLY: u32 = 32768; +pub const FF0: u32 = 0; +pub const FF1: u32 = 32768; +pub const PAGEOUT: u32 = 65536; +pub const WRAP: u32 = 131072; +pub const CBAUD: u32 = 4111; +pub const CSIZE: u32 = 48; +pub const CS5: u32 = 0; +pub const CS6: u32 = 16; +pub const CS7: u32 = 32; +pub const CS8: u32 = 48; +pub const CSTOPB: u32 = 64; +pub const CREAD: u32 = 128; +pub const PARENB: u32 = 256; +pub const PARODD: u32 = 512; +pub const HUPCL: u32 = 1024; +pub const CLOCAL: u32 = 2048; +pub const CBAUDEX: u32 = 4096; +pub const BOTHER: u32 = 4096; +pub const B57600: u32 = 4097; +pub const B115200: u32 = 4098; +pub const B230400: u32 = 4099; +pub const B460800: u32 = 4100; +pub const B76800: u32 = 4101; +pub const B153600: u32 = 4102; +pub const B307200: u32 = 4103; +pub const B614400: u32 = 4104; +pub const B921600: u32 = 4105; +pub const B500000: u32 = 4106; +pub const B576000: u32 = 4107; +pub const B1000000: u32 = 4108; +pub const B1152000: u32 = 4109; +pub const B1500000: u32 = 4110; +pub const B2000000: u32 = 4111; +pub const CIBAUD: u32 = 269418496; +pub const ISIG: u32 = 1; +pub const ICANON: u32 = 2; +pub const XCASE: u32 = 4; +pub const ECHO: u32 = 8; +pub const ECHOE: u32 = 16; +pub const ECHOK: u32 = 32; +pub const ECHONL: u32 = 64; +pub const NOFLSH: u32 = 128; +pub const TOSTOP: u32 = 256; +pub const ECHOCTL: u32 = 512; +pub const ECHOPRT: u32 = 1024; +pub const ECHOKE: u32 = 2048; +pub const DEFECHO: u32 = 4096; +pub const FLUSHO: u32 = 8192; +pub const PENDIN: u32 = 16384; +pub const IEXTEN: u32 = 32768; +pub const EXTPROC: u32 = 65536; +pub const TIOCM_LE: u32 = 1; +pub const TIOCM_DTR: u32 = 2; +pub const TIOCM_RTS: u32 = 4; +pub const TIOCM_ST: u32 = 8; +pub const TIOCM_SR: u32 = 16; +pub const TIOCM_CTS: u32 = 32; +pub const TIOCM_CAR: u32 = 64; +pub const TIOCM_RNG: u32 = 128; +pub const TIOCM_DSR: u32 = 256; +pub const TIOCM_CD: u32 = 64; +pub const TIOCM_RI: u32 = 128; +pub const TIOCM_OUT1: u32 = 8192; +pub const TIOCM_OUT2: u32 = 16384; +pub const TIOCM_LOOP: u32 = 32768; +pub const TIOCSER_TEMT: u32 = 1; +pub const TCSANOW: u32 = 0; +pub const TCSADRAIN: u32 = 1; +pub const TCSAFLUSH: u32 = 2; +pub const UIO_FASTIOV: u32 = 8; +pub const UIO_MAXIOV: u32 = 1024; +pub const __NR_restart_syscall: u32 = 0; +pub const __NR_exit: u32 = 1; +pub const __NR_fork: u32 = 2; +pub const __NR_read: u32 = 3; +pub const __NR_write: u32 = 4; +pub const __NR_open: u32 = 5; +pub const __NR_close: u32 = 6; +pub const __NR_wait4: u32 = 7; +pub const __NR_creat: u32 = 8; +pub const __NR_link: u32 = 9; +pub const __NR_unlink: u32 = 10; +pub const __NR_execv: u32 = 11; +pub const __NR_chdir: u32 = 12; +pub const __NR_chown: u32 = 13; +pub const __NR_mknod: u32 = 14; +pub const __NR_chmod: u32 = 15; +pub const __NR_lchown: u32 = 16; +pub const __NR_brk: u32 = 17; +pub const __NR_perfctr: u32 = 18; +pub const __NR_lseek: u32 = 19; +pub const __NR_getpid: u32 = 20; +pub const __NR_capget: u32 = 21; +pub const __NR_capset: u32 = 22; +pub const __NR_setuid: u32 = 23; +pub const __NR_getuid: u32 = 24; +pub const __NR_vmsplice: u32 = 25; +pub const __NR_ptrace: u32 = 26; +pub const __NR_alarm: u32 = 27; +pub const __NR_sigaltstack: u32 = 28; +pub const __NR_pause: u32 = 29; +pub const __NR_utime: u32 = 30; +pub const __NR_access: u32 = 33; +pub const __NR_nice: u32 = 34; +pub const __NR_sync: u32 = 36; +pub const __NR_kill: u32 = 37; +pub const __NR_stat: u32 = 38; +pub const __NR_sendfile: u32 = 39; +pub const __NR_lstat: u32 = 40; +pub const __NR_dup: u32 = 41; +pub const __NR_pipe: u32 = 42; +pub const __NR_times: u32 = 43; +pub const __NR_umount2: u32 = 45; +pub const __NR_setgid: u32 = 46; +pub const __NR_getgid: u32 = 47; +pub const __NR_signal: u32 = 48; +pub const __NR_geteuid: u32 = 49; +pub const __NR_getegid: u32 = 50; +pub const __NR_acct: u32 = 51; +pub const __NR_memory_ordering: u32 = 52; +pub const __NR_ioctl: u32 = 54; +pub const __NR_reboot: u32 = 55; +pub const __NR_symlink: u32 = 57; +pub const __NR_readlink: u32 = 58; +pub const __NR_execve: u32 = 59; +pub const __NR_umask: u32 = 60; +pub const __NR_chroot: u32 = 61; +pub const __NR_fstat: u32 = 62; +pub const __NR_fstat64: u32 = 63; +pub const __NR_getpagesize: u32 = 64; +pub const __NR_msync: u32 = 65; +pub const __NR_vfork: u32 = 66; +pub const __NR_pread64: u32 = 67; +pub const __NR_pwrite64: u32 = 68; +pub const __NR_mmap: u32 = 71; +pub const __NR_munmap: u32 = 73; +pub const __NR_mprotect: u32 = 74; +pub const __NR_madvise: u32 = 75; +pub const __NR_vhangup: u32 = 76; +pub const __NR_mincore: u32 = 78; +pub const __NR_getgroups: u32 = 79; +pub const __NR_setgroups: u32 = 80; +pub const __NR_getpgrp: u32 = 81; +pub const __NR_setitimer: u32 = 83; +pub const __NR_swapon: u32 = 85; +pub const __NR_getitimer: u32 = 86; +pub const __NR_sethostname: u32 = 88; +pub const __NR_dup2: u32 = 90; +pub const __NR_fcntl: u32 = 92; +pub const __NR_select: u32 = 93; +pub const __NR_fsync: u32 = 95; +pub const __NR_setpriority: u32 = 96; +pub const __NR_socket: u32 = 97; +pub const __NR_connect: u32 = 98; +pub const __NR_accept: u32 = 99; +pub const __NR_getpriority: u32 = 100; +pub const __NR_rt_sigreturn: u32 = 101; +pub const __NR_rt_sigaction: u32 = 102; +pub const __NR_rt_sigprocmask: u32 = 103; +pub const __NR_rt_sigpending: u32 = 104; +pub const __NR_rt_sigtimedwait: u32 = 105; +pub const __NR_rt_sigqueueinfo: u32 = 106; +pub const __NR_rt_sigsuspend: u32 = 107; +pub const __NR_setresuid: u32 = 108; +pub const __NR_getresuid: u32 = 109; +pub const __NR_setresgid: u32 = 110; +pub const __NR_getresgid: u32 = 111; +pub const __NR_recvmsg: u32 = 113; +pub const __NR_sendmsg: u32 = 114; +pub const __NR_gettimeofday: u32 = 116; +pub const __NR_getrusage: u32 = 117; +pub const __NR_getsockopt: u32 = 118; +pub const __NR_getcwd: u32 = 119; +pub const __NR_readv: u32 = 120; +pub const __NR_writev: u32 = 121; +pub const __NR_settimeofday: u32 = 122; +pub const __NR_fchown: u32 = 123; +pub const __NR_fchmod: u32 = 124; +pub const __NR_recvfrom: u32 = 125; +pub const __NR_setreuid: u32 = 126; +pub const __NR_setregid: u32 = 127; +pub const __NR_rename: u32 = 128; +pub const __NR_truncate: u32 = 129; +pub const __NR_ftruncate: u32 = 130; +pub const __NR_flock: u32 = 131; +pub const __NR_lstat64: u32 = 132; +pub const __NR_sendto: u32 = 133; +pub const __NR_shutdown: u32 = 134; +pub const __NR_socketpair: u32 = 135; +pub const __NR_mkdir: u32 = 136; +pub const __NR_rmdir: u32 = 137; +pub const __NR_utimes: u32 = 138; +pub const __NR_stat64: u32 = 139; +pub const __NR_sendfile64: u32 = 140; +pub const __NR_getpeername: u32 = 141; +pub const __NR_futex: u32 = 142; +pub const __NR_gettid: u32 = 143; +pub const __NR_getrlimit: u32 = 144; +pub const __NR_setrlimit: u32 = 145; +pub const __NR_pivot_root: u32 = 146; +pub const __NR_prctl: u32 = 147; +pub const __NR_pciconfig_read: u32 = 148; +pub const __NR_pciconfig_write: u32 = 149; +pub const __NR_getsockname: u32 = 150; +pub const __NR_inotify_init: u32 = 151; +pub const __NR_inotify_add_watch: u32 = 152; +pub const __NR_poll: u32 = 153; +pub const __NR_getdents64: u32 = 154; +pub const __NR_inotify_rm_watch: u32 = 156; +pub const __NR_statfs: u32 = 157; +pub const __NR_fstatfs: u32 = 158; +pub const __NR_umount: u32 = 159; +pub const __NR_sched_set_affinity: u32 = 160; +pub const __NR_sched_get_affinity: u32 = 161; +pub const __NR_getdomainname: u32 = 162; +pub const __NR_setdomainname: u32 = 163; +pub const __NR_utrap_install: u32 = 164; +pub const __NR_quotactl: u32 = 165; +pub const __NR_set_tid_address: u32 = 166; +pub const __NR_mount: u32 = 167; +pub const __NR_ustat: u32 = 168; +pub const __NR_setxattr: u32 = 169; +pub const __NR_lsetxattr: u32 = 170; +pub const __NR_fsetxattr: u32 = 171; +pub const __NR_getxattr: u32 = 172; +pub const __NR_lgetxattr: u32 = 173; +pub const __NR_getdents: u32 = 174; +pub const __NR_setsid: u32 = 175; +pub const __NR_fchdir: u32 = 176; +pub const __NR_fgetxattr: u32 = 177; +pub const __NR_listxattr: u32 = 178; +pub const __NR_llistxattr: u32 = 179; +pub const __NR_flistxattr: u32 = 180; +pub const __NR_removexattr: u32 = 181; +pub const __NR_lremovexattr: u32 = 182; +pub const __NR_sigpending: u32 = 183; +pub const __NR_query_module: u32 = 184; +pub const __NR_setpgid: u32 = 185; +pub const __NR_fremovexattr: u32 = 186; +pub const __NR_tkill: u32 = 187; +pub const __NR_exit_group: u32 = 188; +pub const __NR_uname: u32 = 189; +pub const __NR_init_module: u32 = 190; +pub const __NR_personality: u32 = 191; +pub const __NR_remap_file_pages: u32 = 192; +pub const __NR_epoll_create: u32 = 193; +pub const __NR_epoll_ctl: u32 = 194; +pub const __NR_epoll_wait: u32 = 195; +pub const __NR_ioprio_set: u32 = 196; +pub const __NR_getppid: u32 = 197; +pub const __NR_sigaction: u32 = 198; +pub const __NR_sgetmask: u32 = 199; +pub const __NR_ssetmask: u32 = 200; +pub const __NR_sigsuspend: u32 = 201; +pub const __NR_oldlstat: u32 = 202; +pub const __NR_uselib: u32 = 203; +pub const __NR_readdir: u32 = 204; +pub const __NR_readahead: u32 = 205; +pub const __NR_socketcall: u32 = 206; +pub const __NR_syslog: u32 = 207; +pub const __NR_lookup_dcookie: u32 = 208; +pub const __NR_fadvise64: u32 = 209; +pub const __NR_fadvise64_64: u32 = 210; +pub const __NR_tgkill: u32 = 211; +pub const __NR_waitpid: u32 = 212; +pub const __NR_swapoff: u32 = 213; +pub const __NR_sysinfo: u32 = 214; +pub const __NR_ipc: u32 = 215; +pub const __NR_sigreturn: u32 = 216; +pub const __NR_clone: u32 = 217; +pub const __NR_ioprio_get: u32 = 218; +pub const __NR_adjtimex: u32 = 219; +pub const __NR_sigprocmask: u32 = 220; +pub const __NR_create_module: u32 = 221; +pub const __NR_delete_module: u32 = 222; +pub const __NR_get_kernel_syms: u32 = 223; +pub const __NR_getpgid: u32 = 224; +pub const __NR_bdflush: u32 = 225; +pub const __NR_sysfs: u32 = 226; +pub const __NR_afs_syscall: u32 = 227; +pub const __NR_setfsuid: u32 = 228; +pub const __NR_setfsgid: u32 = 229; +pub const __NR__newselect: u32 = 230; +pub const __NR_splice: u32 = 232; +pub const __NR_stime: u32 = 233; +pub const __NR_statfs64: u32 = 234; +pub const __NR_fstatfs64: u32 = 235; +pub const __NR__llseek: u32 = 236; +pub const __NR_mlock: u32 = 237; +pub const __NR_munlock: u32 = 238; +pub const __NR_mlockall: u32 = 239; +pub const __NR_munlockall: u32 = 240; +pub const __NR_sched_setparam: u32 = 241; +pub const __NR_sched_getparam: u32 = 242; +pub const __NR_sched_setscheduler: u32 = 243; +pub const __NR_sched_getscheduler: u32 = 244; +pub const __NR_sched_yield: u32 = 245; +pub const __NR_sched_get_priority_max: u32 = 246; +pub const __NR_sched_get_priority_min: u32 = 247; +pub const __NR_sched_rr_get_interval: u32 = 248; +pub const __NR_nanosleep: u32 = 249; +pub const __NR_mremap: u32 = 250; +pub const __NR__sysctl: u32 = 251; +pub const __NR_getsid: u32 = 252; +pub const __NR_fdatasync: u32 = 253; +pub const __NR_nfsservctl: u32 = 254; +pub const __NR_sync_file_range: u32 = 255; +pub const __NR_clock_settime: u32 = 256; +pub const __NR_clock_gettime: u32 = 257; +pub const __NR_clock_getres: u32 = 258; +pub const __NR_clock_nanosleep: u32 = 259; +pub const __NR_sched_getaffinity: u32 = 260; +pub const __NR_sched_setaffinity: u32 = 261; +pub const __NR_timer_settime: u32 = 262; +pub const __NR_timer_gettime: u32 = 263; +pub const __NR_timer_getoverrun: u32 = 264; +pub const __NR_timer_delete: u32 = 265; +pub const __NR_timer_create: u32 = 266; +pub const __NR_vserver: u32 = 267; +pub const __NR_io_setup: u32 = 268; +pub const __NR_io_destroy: u32 = 269; +pub const __NR_io_submit: u32 = 270; +pub const __NR_io_cancel: u32 = 271; +pub const __NR_io_getevents: u32 = 272; +pub const __NR_mq_open: u32 = 273; +pub const __NR_mq_unlink: u32 = 274; +pub const __NR_mq_timedsend: u32 = 275; +pub const __NR_mq_timedreceive: u32 = 276; +pub const __NR_mq_notify: u32 = 277; +pub const __NR_mq_getsetattr: u32 = 278; +pub const __NR_waitid: u32 = 279; +pub const __NR_tee: u32 = 280; +pub const __NR_add_key: u32 = 281; +pub const __NR_request_key: u32 = 282; +pub const __NR_keyctl: u32 = 283; +pub const __NR_openat: u32 = 284; +pub const __NR_mkdirat: u32 = 285; +pub const __NR_mknodat: u32 = 286; +pub const __NR_fchownat: u32 = 287; +pub const __NR_futimesat: u32 = 288; +pub const __NR_fstatat64: u32 = 289; +pub const __NR_unlinkat: u32 = 290; +pub const __NR_renameat: u32 = 291; +pub const __NR_linkat: u32 = 292; +pub const __NR_symlinkat: u32 = 293; +pub const __NR_readlinkat: u32 = 294; +pub const __NR_fchmodat: u32 = 295; +pub const __NR_faccessat: u32 = 296; +pub const __NR_pselect6: u32 = 297; +pub const __NR_ppoll: u32 = 298; +pub const __NR_unshare: u32 = 299; +pub const __NR_set_robust_list: u32 = 300; +pub const __NR_get_robust_list: u32 = 301; +pub const __NR_migrate_pages: u32 = 302; +pub const __NR_mbind: u32 = 303; +pub const __NR_get_mempolicy: u32 = 304; +pub const __NR_set_mempolicy: u32 = 305; +pub const __NR_kexec_load: u32 = 306; +pub const __NR_move_pages: u32 = 307; +pub const __NR_getcpu: u32 = 308; +pub const __NR_epoll_pwait: u32 = 309; +pub const __NR_utimensat: u32 = 310; +pub const __NR_signalfd: u32 = 311; +pub const __NR_timerfd_create: u32 = 312; +pub const __NR_eventfd: u32 = 313; +pub const __NR_fallocate: u32 = 314; +pub const __NR_timerfd_settime: u32 = 315; +pub const __NR_timerfd_gettime: u32 = 316; +pub const __NR_signalfd4: u32 = 317; +pub const __NR_eventfd2: u32 = 318; +pub const __NR_epoll_create1: u32 = 319; +pub const __NR_dup3: u32 = 320; +pub const __NR_pipe2: u32 = 321; +pub const __NR_inotify_init1: u32 = 322; +pub const __NR_accept4: u32 = 323; +pub const __NR_preadv: u32 = 324; +pub const __NR_pwritev: u32 = 325; +pub const __NR_rt_tgsigqueueinfo: u32 = 326; +pub const __NR_perf_event_open: u32 = 327; +pub const __NR_recvmmsg: u32 = 328; +pub const __NR_fanotify_init: u32 = 329; +pub const __NR_fanotify_mark: u32 = 330; +pub const __NR_prlimit64: u32 = 331; +pub const __NR_name_to_handle_at: u32 = 332; +pub const __NR_open_by_handle_at: u32 = 333; +pub const __NR_clock_adjtime: u32 = 334; +pub const __NR_syncfs: u32 = 335; +pub const __NR_sendmmsg: u32 = 336; +pub const __NR_setns: u32 = 337; +pub const __NR_process_vm_readv: u32 = 338; +pub const __NR_process_vm_writev: u32 = 339; +pub const __NR_kern_features: u32 = 340; +pub const __NR_kcmp: u32 = 341; +pub const __NR_finit_module: u32 = 342; +pub const __NR_sched_setattr: u32 = 343; +pub const __NR_sched_getattr: u32 = 344; +pub const __NR_renameat2: u32 = 345; +pub const __NR_seccomp: u32 = 346; +pub const __NR_getrandom: u32 = 347; +pub const __NR_memfd_create: u32 = 348; +pub const __NR_bpf: u32 = 349; +pub const __NR_execveat: u32 = 350; +pub const __NR_membarrier: u32 = 351; +pub const __NR_userfaultfd: u32 = 352; +pub const __NR_bind: u32 = 353; +pub const __NR_listen: u32 = 354; +pub const __NR_setsockopt: u32 = 355; +pub const __NR_mlock2: u32 = 356; +pub const __NR_copy_file_range: u32 = 357; +pub const __NR_preadv2: u32 = 358; +pub const __NR_pwritev2: u32 = 359; +pub const __NR_statx: u32 = 360; +pub const __NR_io_pgetevents: u32 = 361; +pub const __NR_pkey_mprotect: u32 = 362; +pub const __NR_pkey_alloc: u32 = 363; +pub const __NR_pkey_free: u32 = 364; +pub const __NR_rseq: u32 = 365; +pub const __NR_semtimedop: u32 = 392; +pub const __NR_semget: u32 = 393; +pub const __NR_semctl: u32 = 394; +pub const __NR_shmget: u32 = 395; +pub const __NR_shmctl: u32 = 396; +pub const __NR_shmat: u32 = 397; +pub const __NR_shmdt: u32 = 398; +pub const __NR_msgget: u32 = 399; +pub const __NR_msgsnd: u32 = 400; +pub const __NR_msgrcv: u32 = 401; +pub const __NR_msgctl: u32 = 402; +pub const __NR_pidfd_send_signal: u32 = 424; +pub const __NR_io_uring_setup: u32 = 425; +pub const __NR_io_uring_enter: u32 = 426; +pub const __NR_io_uring_register: u32 = 427; +pub const __NR_open_tree: u32 = 428; +pub const __NR_move_mount: u32 = 429; +pub const __NR_fsopen: u32 = 430; +pub const __NR_fsconfig: u32 = 431; +pub const __NR_fsmount: u32 = 432; +pub const __NR_fspick: u32 = 433; +pub const __NR_pidfd_open: u32 = 434; +pub const __NR_close_range: u32 = 436; +pub const __NR_openat2: u32 = 437; +pub const __NR_pidfd_getfd: u32 = 438; +pub const __NR_faccessat2: u32 = 439; +pub const __NR_process_madvise: u32 = 440; +pub const __NR_epoll_pwait2: u32 = 441; +pub const __NR_mount_setattr: u32 = 442; +pub const __NR_quotactl_fd: u32 = 443; +pub const __NR_landlock_create_ruleset: u32 = 444; +pub const __NR_landlock_add_rule: u32 = 445; +pub const __NR_landlock_restrict_self: u32 = 446; +pub const __NR_process_mrelease: u32 = 448; +pub const __NR_futex_waitv: u32 = 449; +pub const __NR_set_mempolicy_home_node: u32 = 450; +pub const KERN_FEATURE_MIXED_MODE_STACK: u32 = 1; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const P_ALL: u32 = 0; +pub const P_PID: u32 = 1; +pub const P_PGID: u32 = 2; +pub const P_PIDFD: u32 = 3; +pub const XATTR_CREATE: u32 = 1; +pub const XATTR_REPLACE: u32 = 2; +pub const XATTR_OS2_PREFIX: &[u8; 5] = b"os2.\0"; +pub const XATTR_MAC_OSX_PREFIX: &[u8; 5] = b"osx.\0"; +pub const XATTR_BTRFS_PREFIX: &[u8; 7] = b"btrfs.\0"; +pub const XATTR_HURD_PREFIX: &[u8; 5] = b"gnu.\0"; +pub const XATTR_SECURITY_PREFIX: &[u8; 10] = b"security.\0"; +pub const XATTR_SYSTEM_PREFIX: &[u8; 8] = b"system.\0"; +pub const XATTR_TRUSTED_PREFIX: &[u8; 9] = b"trusted.\0"; +pub const XATTR_USER_PREFIX: &[u8; 6] = b"user.\0"; +pub const XATTR_EVM_SUFFIX: &[u8; 4] = b"evm\0"; +pub const XATTR_NAME_EVM: &[u8; 13] = b"security.evm\0"; +pub const XATTR_IMA_SUFFIX: &[u8; 4] = b"ima\0"; +pub const XATTR_NAME_IMA: &[u8; 13] = b"security.ima\0"; +pub const XATTR_SELINUX_SUFFIX: &[u8; 8] = b"selinux\0"; +pub const XATTR_NAME_SELINUX: &[u8; 17] = b"security.selinux\0"; +pub const XATTR_SMACK_SUFFIX: &[u8; 8] = b"SMACK64\0"; +pub const XATTR_SMACK_IPIN: &[u8; 12] = b"SMACK64IPIN\0"; +pub const XATTR_SMACK_IPOUT: &[u8; 13] = b"SMACK64IPOUT\0"; +pub const XATTR_SMACK_EXEC: &[u8; 12] = b"SMACK64EXEC\0"; +pub const XATTR_SMACK_TRANSMUTE: &[u8; 17] = b"SMACK64TRANSMUTE\0"; +pub const XATTR_SMACK_MMAP: &[u8; 12] = b"SMACK64MMAP\0"; +pub const XATTR_NAME_SMACK: &[u8; 17] = b"security.SMACK64\0"; +pub const XATTR_NAME_SMACKIPIN: &[u8; 21] = b"security.SMACK64IPIN\0"; +pub const XATTR_NAME_SMACKIPOUT: &[u8; 22] = b"security.SMACK64IPOUT\0"; +pub const XATTR_NAME_SMACKEXEC: &[u8; 21] = b"security.SMACK64EXEC\0"; +pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26] = b"security.SMACK64TRANSMUTE\0"; +pub const XATTR_NAME_SMACKMMAP: &[u8; 21] = b"security.SMACK64MMAP\0"; +pub const XATTR_APPARMOR_SUFFIX: &[u8; 9] = b"apparmor\0"; +pub const XATTR_NAME_APPARMOR: &[u8; 18] = b"security.apparmor\0"; +pub const XATTR_CAPS_SUFFIX: &[u8; 11] = b"capability\0"; +pub const XATTR_NAME_CAPS: &[u8; 20] = b"security.capability\0"; +pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17] = b"posix_acl_access\0"; +pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24] = b"system.posix_acl_access\0"; +pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18] = b"posix_acl_default\0"; +pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25] = b"system.posix_acl_default\0"; +pub const MFD_CLOEXEC: u32 = 1; +pub const MFD_ALLOW_SEALING: u32 = 2; +pub const MFD_HUGETLB: u32 = 4; +pub const MFD_NOEXEC_SEAL: u32 = 8; +pub const MFD_EXEC: u32 = 16; +pub const MFD_HUGE_SHIFT: u32 = 26; +pub const MFD_HUGE_MASK: u32 = 63; +pub const MFD_HUGE_64KB: u32 = 1073741824; +pub const MFD_HUGE_512KB: u32 = 1275068416; +pub const MFD_HUGE_1MB: u32 = 1342177280; +pub const MFD_HUGE_2MB: u32 = 1409286144; +pub const MFD_HUGE_8MB: u32 = 1543503872; +pub const MFD_HUGE_16MB: u32 = 1610612736; +pub const MFD_HUGE_32MB: u32 = 1677721600; +pub const MFD_HUGE_256MB: u32 = 1879048192; +pub const MFD_HUGE_512MB: u32 = 1946157056; +pub const MFD_HUGE_1GB: u32 = 2013265920; +pub const MFD_HUGE_2GB: u32 = 2080374784; +pub const MFD_HUGE_16GB: u32 = 2281701376; +pub const TFD_TIMER_ABSTIME: u32 = 1; +pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; +pub const TFD_CLOEXEC: u32 = 4194304; +pub const TFD_NONBLOCK: u32 = 16384; +pub const USERFAULTFD_IOC: u32 = 170; +pub const _UFFDIO_REGISTER: u32 = 0; +pub const _UFFDIO_UNREGISTER: u32 = 1; +pub const _UFFDIO_WAKE: u32 = 2; +pub const _UFFDIO_COPY: u32 = 3; +pub const _UFFDIO_ZEROPAGE: u32 = 4; +pub const _UFFDIO_WRITEPROTECT: u32 = 6; +pub const _UFFDIO_CONTINUE: u32 = 7; +pub const _UFFDIO_API: u32 = 63; +pub const UFFDIO: u32 = 170; +pub const UFFD_EVENT_PAGEFAULT: u32 = 18; +pub const UFFD_EVENT_FORK: u32 = 19; +pub const UFFD_EVENT_REMAP: u32 = 20; +pub const UFFD_EVENT_REMOVE: u32 = 21; +pub const UFFD_EVENT_UNMAP: u32 = 22; +pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; +pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; +pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; +pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; +pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; +pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; +pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; +pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; +pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; +pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; +pub const UFFD_FEATURE_SIGBUS: u32 = 128; +pub const UFFD_FEATURE_THREAD_ID: u32 = 256; +pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; +pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; +pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; +pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; +pub const UFFD_USER_MODE_ONLY: u32 = 1; +pub const DT_UNKNOWN: u32 = 0; +pub const DT_FIFO: u32 = 1; +pub const DT_CHR: u32 = 2; +pub const DT_DIR: u32 = 4; +pub const DT_BLK: u32 = 6; +pub const DT_REG: u32 = 8; +pub const DT_LNK: u32 = 10; +pub const DT_SOCK: u32 = 12; +pub const F_OK: u32 = 0; +pub const R_OK: u32 = 4; +pub const W_OK: u32 = 2; +pub const X_OK: u32 = 1; +pub const UTIME_NOW: u32 = 1073741823; +pub const UTIME_OMIT: u32 = 1073741822; +pub const MNT_FORCE: u32 = 1; +pub const MNT_DETACH: u32 = 2; +pub const MNT_EXPIRE: u32 = 4; +pub const UMOUNT_NOFOLLOW: u32 = 8; +pub const UMOUNT_UNUSED: u32 = 2147483648; +pub const STDIN_FILENO: u32 = 0; +pub const STDOUT_FILENO: u32 = 1; +pub const STDERR_FILENO: u32 = 2; +pub const RWF_HIPRI: u32 = 1; +pub const RWF_DSYNC: u32 = 2; +pub const RWF_SYNC: u32 = 4; +pub const RWF_NOWAIT: u32 = 8; +pub const RWF_APPEND: u32 = 16; +pub const EFD_SEMAPHORE: u32 = 1; +pub const EFD_CLOEXEC: u32 = 4194304; +pub const EFD_NONBLOCK: u32 = 16384; +pub const EPOLLIN: u32 = 1; +pub const EPOLLPRI: u32 = 2; +pub const EPOLLOUT: u32 = 4; +pub const EPOLLERR: u32 = 8; +pub const EPOLLHUP: u32 = 16; +pub const EPOLLNVAL: u32 = 32; +pub const EPOLLRDNORM: u32 = 64; +pub const EPOLLRDBAND: u32 = 128; +pub const EPOLLWRNORM: u32 = 256; +pub const EPOLLWRBAND: u32 = 512; +pub const EPOLLMSG: u32 = 1024; +pub const EPOLLRDHUP: u32 = 8192; +pub const EPOLLEXCLUSIVE: u32 = 268435456; +pub const EPOLLWAKEUP: u32 = 536870912; +pub const EPOLLONESHOT: u32 = 1073741824; +pub const EPOLLET: u32 = 2147483648; +pub const TFD_SHARED_FCNTL_FLAGS: u32 = 4210688; +pub const TFD_CREATE_FLAGS: u32 = 4210688; +pub const TFD_SETTIME_FLAGS: u32 = 1; +pub const UFFD_API: u32 = 170; +pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; +pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; +pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; +pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; +pub const UFFDIO_COPY_MODE_WP: u32 = 2; +pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; +pub const SPLICE_F_MOVE: u32 = 1; +pub const SPLICE_F_NONBLOCK: u32 = 2; +pub const SPLICE_F_MORE: u32 = 4; +pub const SPLICE_F_GIFT: u32 = 8; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, } #[repr(u32)] #[non_exhaustive] @@ -4805,697 +2681,161 @@ pub enum membarrier_cmd_flag { MEMBARRIER_CMD_FLAG_CPU = 1, } -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct uffd_msg { -pub event: __u8, -pub reserved1: __u8, -pub reserved2: __u16, -pub reserved3: __u32, -pub arg: uffd_msg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1 { -pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, -pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, -pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, -pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, -pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { -pub flags: __u64, -pub address: __u64, -pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { -pub ptid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { -pub ufd: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { -pub from: __u64, -pub to: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { -pub start: __u64, -pub end: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { -pub reserved1: __u64, -pub reserved2: __u64, -pub reserved3: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_api { -pub api: __u64, -pub features: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_range { -pub start: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_register { -pub range: uffdio_range, -pub mode: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_copy { -pub dst: __u64, -pub src: __u64, -pub len: __u64, -pub mode: __u64, -pub copy: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_zeropage { -pub range: uffdio_range, -pub mode: __u64, -pub zeropage: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_writeprotect { -pub range: uffdio_range, -pub mode: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_continue { -pub range: uffdio_range, -pub mode: __u64, -pub mapped: __s64, -} -#[repr(C)] -pub struct io_uring_sqe { -pub opcode: __u8, -pub flags: __u8, -pub ioprio: __u16, -pub fd: __s32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, -pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, -pub len: __u32, -pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, -pub user_data: __u64, -pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, -pub personality: __u16, -pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, -pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, -} #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_1 { -pub off: __u64, -pub addr2: __u64, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { -pub cmd_op: __u32, -pub __pad1: __u32, +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_2 { -pub addr: __u64, -pub splice_off_in: __u64, +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_3 { -pub rw_flags: __kernel_rwf_t, -pub fsync_flags: __u32, -pub poll_events: __u16, -pub poll32_events: __u32, -pub sync_range_flags: __u32, -pub msg_flags: __u32, -pub timeout_flags: __u32, -pub accept_flags: __u32, -pub cancel_flags: __u32, -pub open_flags: __u32, -pub statx_flags: __u32, -pub fadvise_advice: __u32, -pub splice_flags: __u32, -pub rename_flags: __u32, -pub unlink_flags: __u32, -pub hardlink_flags: __u32, -pub xattr_flags: __u32, -pub msg_ring_flags: __u32, -pub uring_cmd_flags: __u32, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_4 { -pub buf_index: __u16, -pub buf_group: __u16, +pub union sigval { +pub sival_int: crate::ctypes::c_int, +pub sival_ptr: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_5 { -pub splice_fd_in: __s32, -pub file_index: __u32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { -pub addr_len: __u16, -pub __pad3: [__u16; 1usize], -} -#[repr(C)] -pub struct io_uring_sqe__bindgen_ty_6 { -pub __bindgen_anon_1: __BindgenUnionField, -pub cmd: __BindgenUnionField<[__u8; 0usize]>, -pub bindgen_union_field: [u64; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { -pub addr3: __u64, -pub __pad2: [__u64; 1usize], -} -pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT; -pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT; -pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT; -pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT; -pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT; -pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT; -pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -IOSQE_FIXED_FILE_BIT = 0, -IOSQE_IO_DRAIN_BIT = 1, -IOSQE_IO_LINK_BIT = 2, -IOSQE_IO_HARDLINK_BIT = 3, -IOSQE_ASYNC_BIT = 4, -IOSQE_BUFFER_SELECT_BIT = 5, -IOSQE_CQE_SKIP_SUCCESS_BIT = 6, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum io_uring_op { -IORING_OP_NOP = 0, -IORING_OP_READV = 1, -IORING_OP_WRITEV = 2, -IORING_OP_FSYNC = 3, -IORING_OP_READ_FIXED = 4, -IORING_OP_WRITE_FIXED = 5, -IORING_OP_POLL_ADD = 6, -IORING_OP_POLL_REMOVE = 7, -IORING_OP_SYNC_FILE_RANGE = 8, -IORING_OP_SENDMSG = 9, -IORING_OP_RECVMSG = 10, -IORING_OP_TIMEOUT = 11, -IORING_OP_TIMEOUT_REMOVE = 12, -IORING_OP_ACCEPT = 13, -IORING_OP_ASYNC_CANCEL = 14, -IORING_OP_LINK_TIMEOUT = 15, -IORING_OP_CONNECT = 16, -IORING_OP_FALLOCATE = 17, -IORING_OP_OPENAT = 18, -IORING_OP_CLOSE = 19, -IORING_OP_FILES_UPDATE = 20, -IORING_OP_STATX = 21, -IORING_OP_READ = 22, -IORING_OP_WRITE = 23, -IORING_OP_FADVISE = 24, -IORING_OP_MADVISE = 25, -IORING_OP_SEND = 26, -IORING_OP_RECV = 27, -IORING_OP_OPENAT2 = 28, -IORING_OP_EPOLL_CTL = 29, -IORING_OP_SPLICE = 30, -IORING_OP_PROVIDE_BUFFERS = 31, -IORING_OP_REMOVE_BUFFERS = 32, -IORING_OP_TEE = 33, -IORING_OP_SHUTDOWN = 34, -IORING_OP_RENAMEAT = 35, -IORING_OP_UNLINKAT = 36, -IORING_OP_MKDIRAT = 37, -IORING_OP_SYMLINKAT = 38, -IORING_OP_LINKAT = 39, -IORING_OP_MSG_RING = 40, -IORING_OP_FSETXATTR = 41, -IORING_OP_SETXATTR = 42, -IORING_OP_FGETXATTR = 43, -IORING_OP_GETXATTR = 44, -IORING_OP_SOCKET = 45, -IORING_OP_URING_CMD = 46, -IORING_OP_SEND_ZC = 47, -IORING_OP_SENDMSG_ZC = 48, -IORING_OP_LAST = 49, -} -pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA; -pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_8 { -IORING_MSG_DATA = 0, -IORING_MSG_SEND_FD = 1, -} -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_cqe { -pub user_data: __u64, -pub res: __s32, -pub flags: __u32, -pub big_cqe: __IncompleteArrayField<__u64>, -} -pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_9 { -IORING_CQE_BUFFER_SHIFT = 16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_sqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub flags: __u32, -pub dropped: __u32, -pub array: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_cqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub overflow: __u32, -pub cqes: __u32, -pub flags: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_params { -pub sq_entries: __u32, -pub cq_entries: __u32, -pub flags: __u32, -pub sq_thread_cpu: __u32, -pub sq_thread_idle: __u32, -pub features: __u32, -pub wq_fd: __u32, -pub resv: [__u32; 3usize], -pub sq_off: io_sqring_offsets, -pub cq_off: io_cqring_offsets, -} -pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS; -pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS; -pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES; -pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES; -pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD; -pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD; -pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE; -pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC; -pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE; -pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY; -pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY; -pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS; -pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS; -pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2; -pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2; -pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2; -pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE; -pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF; -pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF; -pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS; -pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS; -pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS; -pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING; -pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING; -pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL; -pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE; -pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST; -pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_USE_REGISTERED_RING; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_10 { -IORING_REGISTER_BUFFERS = 0, -IORING_UNREGISTER_BUFFERS = 1, -IORING_REGISTER_FILES = 2, -IORING_UNREGISTER_FILES = 3, -IORING_REGISTER_EVENTFD = 4, -IORING_UNREGISTER_EVENTFD = 5, -IORING_REGISTER_FILES_UPDATE = 6, -IORING_REGISTER_EVENTFD_ASYNC = 7, -IORING_REGISTER_PROBE = 8, -IORING_REGISTER_PERSONALITY = 9, -IORING_UNREGISTER_PERSONALITY = 10, -IORING_REGISTER_RESTRICTIONS = 11, -IORING_REGISTER_ENABLE_RINGS = 12, -IORING_REGISTER_FILES2 = 13, -IORING_REGISTER_FILES_UPDATE2 = 14, -IORING_REGISTER_BUFFERS2 = 15, -IORING_REGISTER_BUFFERS_UPDATE = 16, -IORING_REGISTER_IOWQ_AFF = 17, -IORING_UNREGISTER_IOWQ_AFF = 18, -IORING_REGISTER_IOWQ_MAX_WORKERS = 19, -IORING_REGISTER_RING_FDS = 20, -IORING_UNREGISTER_RING_FDS = 21, -IORING_REGISTER_PBUF_RING = 22, -IORING_UNREGISTER_PBUF_RING = 23, -IORING_REGISTER_SYNC_CANCEL = 24, -IORING_REGISTER_FILE_ALLOC_RANGE = 25, -IORING_REGISTER_LAST = 26, -IORING_REGISTER_USE_REGISTERED_RING = 2147483648, -} -pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND; -pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_11 { -IO_WQ_BOUND = 0, -IO_WQ_UNBOUND = 1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_files_update { -pub offset: __u32, -pub resv: __u32, -pub fds: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_register { -pub nr: __u32, -pub flags: __u32, -pub resv2: __u64, -pub data: __u64, -pub tags: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update2 { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -pub tags: __u64, -pub nr: __u32, -pub resv2: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_slot { -pub tag: __u64, -pub resv: [__u64; 3usize], +pub union __sifields { +pub _kill: __sifields__bindgen_ty_1, +pub _timer: __sifields__bindgen_ty_2, +pub _rt: __sifields__bindgen_ty_3, +pub _sigchld: __sifields__bindgen_ty_4, +pub _sigfault: __sifields__bindgen_ty_5, +pub _sigpoll: __sifields__bindgen_ty_6, +pub _sigsys: __sifields__bindgen_ty_7, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_register { -pub nr_slots: __u32, -pub resv: __u32, -pub resv2: __u64, -pub data: __u64, -pub resv3: __u64, +#[derive(Copy, Clone)] +pub union __sifields__bindgen_ty_5__bindgen_ty_1 { +pub _trapno: crate::ctypes::c_int, +pub _addr_lsb: crate::ctypes::c_short, +pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, +pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, +pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_probe_op { -pub op: __u8, -pub resv: __u8, -pub flags: __u16, -pub resv2: __u32, +#[derive(Copy, Clone)] +pub union siginfo__bindgen_ty_1 { +pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, +pub _si_pad: [crate::ctypes::c_int; 32usize], } #[repr(C)] -#[derive(Debug)] -pub struct io_uring_probe { -pub last_op: __u8, -pub ops_len: __u8, -pub resv: __u16, -pub resv2: [__u32; 3usize], -pub ops: __IncompleteArrayField, +#[derive(Copy, Clone)] +pub union sigevent__bindgen_ty_1 { +pub _pad: [crate::ctypes::c_int; 12usize], +pub _tid: crate::ctypes::c_int, +pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] -pub struct io_uring_restriction { -pub opcode: __u16, -pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, -pub resv: __u8, -pub resv2: [__u32; 3usize], +pub union uffd_msg__bindgen_ty_1 { +pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, +pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, +pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, +pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, +pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_restriction__bindgen_ty_1 { -pub register_op: __u8, -pub sqe_op: __u8, -pub sqe_flags: __u8, +pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { +pub ptid: __u32, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf { -pub addr: __u64, -pub len: __u32, -pub bid: __u16, -pub resv: __u16, +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } } -#[repr(C)] -pub struct io_uring_buf_ring { -pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, } -#[repr(C)] -pub struct io_uring_buf_ring__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 2usize], +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { -pub resv1: __u64, -pub resv2: __u32, -pub resv3: __u16, -pub tail: __u16, +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; } -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { -pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, -pub bufs: __IncompleteArrayField, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_reg { -pub ring_addr: __u64, -pub ring_entries: __u32, -pub bgid: __u16, -pub pad: __u16, -pub resv: [__u64; 3usize], +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; } -pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP; -pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP; -pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; -pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; -pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_12 { -IORING_RESTRICTION_REGISTER_OP = 0, -IORING_RESTRICTION_SQE_OP = 1, -IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, -IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, -IORING_RESTRICTION_LAST = 4, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_getevents_arg { -pub sigmask: __u64, -pub sigmask_sz: __u32, -pub pad: __u32, -pub ts: __u64, +val } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sync_cancel_reg { -pub addr: __u64, -pub fd: __s32, -pub flags: __u32, -pub timeout: __kernel_timespec, -pub pad: [__u64; 4usize], +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_file_index_range { -pub off: __u32, -pub len: __u32, -pub resv: __u64, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_recvmsg_out { -pub namelen: __u32, -pub controllen: __u32, -pub payloadlen: __u32, -pub flags: __u32, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr { -pub __storage: __kernel_sockaddr_storage, +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct linger { -pub l_onoff: crate::ctypes::c_int, -pub l_linger: crate::ctypes::c_int, +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T } -#[repr(C)] -#[derive(Debug)] -pub struct linux_dirent64 { -pub d_ino: crate::ctypes::c_ulong, -pub d_off: crate::ctypes::c_long, -pub d_reclen: __u16, -pub d_type: __u8, -pub d_name: __IncompleteArrayField, +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T } -pub type socklen_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat { -pub st_dev: crate::ctypes::c_uint, -pub st_ino: __kernel_ino_t, -pub st_mode: __kernel_mode_t, -pub st_nlink: crate::ctypes::c_short, -pub st_uid: __kernel_uid32_t, -pub st_gid: __kernel_gid32_t, -pub st_rdev: crate::ctypes::c_uint, -pub st_size: crate::ctypes::c_long, -pub st_atime: crate::ctypes::c_long, -pub st_mtime: crate::ctypes::c_long, -pub st_ctime: crate::ctypes::c_long, -pub st_blksize: crate::ctypes::c_long, -pub st_blocks: crate::ctypes::c_long, -pub __unused4: [crate::ctypes::c_ulong; 2usize], +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat64 { -pub st_dev: crate::ctypes::c_ulong, -pub st_ino: crate::ctypes::c_ulong, -pub st_nlink: crate::ctypes::c_ulong, -pub st_mode: crate::ctypes::c_uint, -pub st_uid: crate::ctypes::c_uint, -pub st_gid: crate::ctypes::c_uint, -pub __pad0: crate::ctypes::c_uint, -pub st_rdev: crate::ctypes::c_ulong, -pub st_size: crate::ctypes::c_long, -pub st_blksize: crate::ctypes::c_long, -pub st_blocks: crate::ctypes::c_long, -pub st_atime: crate::ctypes::c_ulong, -pub st_atime_nsec: crate::ctypes::c_ulong, -pub st_mtime: crate::ctypes::c_ulong, -pub st_mtime_nsec: crate::ctypes::c_ulong, -pub st_ctime: crate::ctypes::c_ulong, -pub st_ctime_nsec: crate::ctypes::c_ulong, -pub __unused: [crate::ctypes::c_long; 3usize], +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs { -pub f_type: __kernel_long_t, -pub f_bsize: __kernel_long_t, -pub f_blocks: __kernel_long_t, -pub f_bfree: __kernel_long_t, -pub f_bavail: __kernel_long_t, -pub f_files: __kernel_long_t, -pub f_ffree: __kernel_long_t, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __kernel_long_t, -pub f_frsize: __kernel_long_t, -pub f_flags: __kernel_long_t, -pub f_spare: [__kernel_long_t; 4usize], } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs64 { -pub f_type: __kernel_long_t, -pub f_bsize: __kernel_long_t, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __kernel_long_t, -pub f_frsize: __kernel_long_t, -pub f_flags: __kernel_long_t, -pub f_spare: [__kernel_long_t; 4usize], +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct compat_statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], } -pub type __fsword_t = __kernel_long_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_desc { -pub entry_number: crate::ctypes::c_uint, -pub base_addr: crate::ctypes::c_uint, -pub limit: crate::ctypes::c_uint, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub __bindgen_padding_0: [u8; 3usize], +impl membarrier_cmd { +pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; } impl user_desc { #[inline] @@ -5594,46 +2934,3 @@ __bindgen_bitfield_unit } } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr { -pub msg_name: *mut crate::ctypes::c_void, -pub msg_namelen: crate::ctypes::c_int, -pub msg_iov: *mut iovec, -pub msg_iovlen: size_t, -pub msg_control: *mut crate::ctypes::c_void, -pub msg_controllen: size_t, -pub msg_flags: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsghdr { -pub cmsg_len: size_t, -pub cmsg_level: crate::ctypes::c_int, -pub cmsg_type: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ucred { -pub pid: __u32, -pub uid: __u32, -pub gid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mmsghdr { -pub msg_hdr: msghdr, -pub msg_len: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug)] -pub struct kernel_sigset_t { -pub sig: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Debug)] -pub struct kernel_sigaction { -pub sa_handler_kernel: __kernel_sighandler_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_mask: kernel_sigset_t, -} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/if_ether.rs temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/if_ether.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/if_ether.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/if_ether.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,173 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_suseconds_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_suseconds_t, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ethhdr { +pub h_dest: [crate::ctypes::c_uchar; 6usize], +pub h_source: [crate::ctypes::c_uchar; 6usize], +pub h_proto: __be16, +} +pub const ETH_ALEN: u32 = 6; +pub const ETH_TLEN: u32 = 2; +pub const ETH_HLEN: u32 = 14; +pub const ETH_ZLEN: u32 = 60; +pub const ETH_DATA_LEN: u32 = 1500; +pub const ETH_FRAME_LEN: u32 = 1514; +pub const ETH_FCS_LEN: u32 = 4; +pub const ETH_MIN_MTU: u32 = 68; +pub const ETH_MAX_MTU: u32 = 65535; +pub const ETH_P_LOOP: u32 = 96; +pub const ETH_P_PUP: u32 = 512; +pub const ETH_P_PUPAT: u32 = 513; +pub const ETH_P_TSN: u32 = 8944; +pub const ETH_P_ERSPAN2: u32 = 8939; +pub const ETH_P_IP: u32 = 2048; +pub const ETH_P_X25: u32 = 2053; +pub const ETH_P_ARP: u32 = 2054; +pub const ETH_P_BPQ: u32 = 2303; +pub const ETH_P_IEEEPUP: u32 = 2560; +pub const ETH_P_IEEEPUPAT: u32 = 2561; +pub const ETH_P_BATMAN: u32 = 17157; +pub const ETH_P_DEC: u32 = 24576; +pub const ETH_P_DNA_DL: u32 = 24577; +pub const ETH_P_DNA_RC: u32 = 24578; +pub const ETH_P_DNA_RT: u32 = 24579; +pub const ETH_P_LAT: u32 = 24580; +pub const ETH_P_DIAG: u32 = 24581; +pub const ETH_P_CUST: u32 = 24582; +pub const ETH_P_SCA: u32 = 24583; +pub const ETH_P_TEB: u32 = 25944; +pub const ETH_P_RARP: u32 = 32821; +pub const ETH_P_ATALK: u32 = 32923; +pub const ETH_P_AARP: u32 = 33011; +pub const ETH_P_8021Q: u32 = 33024; +pub const ETH_P_ERSPAN: u32 = 35006; +pub const ETH_P_IPX: u32 = 33079; +pub const ETH_P_IPV6: u32 = 34525; +pub const ETH_P_PAUSE: u32 = 34824; +pub const ETH_P_SLOW: u32 = 34825; +pub const ETH_P_WCCP: u32 = 34878; +pub const ETH_P_MPLS_UC: u32 = 34887; +pub const ETH_P_MPLS_MC: u32 = 34888; +pub const ETH_P_ATMMPOA: u32 = 34892; +pub const ETH_P_PPP_DISC: u32 = 34915; +pub const ETH_P_PPP_SES: u32 = 34916; +pub const ETH_P_LINK_CTL: u32 = 34924; +pub const ETH_P_ATMFATE: u32 = 34948; +pub const ETH_P_PAE: u32 = 34958; +pub const ETH_P_PROFINET: u32 = 34962; +pub const ETH_P_REALTEK: u32 = 34969; +pub const ETH_P_AOE: u32 = 34978; +pub const ETH_P_ETHERCAT: u32 = 34980; +pub const ETH_P_8021AD: u32 = 34984; +pub const ETH_P_802_EX1: u32 = 34997; +pub const ETH_P_PREAUTH: u32 = 35015; +pub const ETH_P_TIPC: u32 = 35018; +pub const ETH_P_LLDP: u32 = 35020; +pub const ETH_P_MRP: u32 = 35043; +pub const ETH_P_MACSEC: u32 = 35045; +pub const ETH_P_8021AH: u32 = 35047; +pub const ETH_P_MVRP: u32 = 35061; +pub const ETH_P_1588: u32 = 35063; +pub const ETH_P_NCSI: u32 = 35064; +pub const ETH_P_PRP: u32 = 35067; +pub const ETH_P_CFM: u32 = 35074; +pub const ETH_P_FCOE: u32 = 35078; +pub const ETH_P_IBOE: u32 = 35093; +pub const ETH_P_TDLS: u32 = 35085; +pub const ETH_P_FIP: u32 = 35092; +pub const ETH_P_80221: u32 = 35095; +pub const ETH_P_HSR: u32 = 35119; +pub const ETH_P_NSH: u32 = 35151; +pub const ETH_P_LOOPBACK: u32 = 36864; +pub const ETH_P_QINQ1: u32 = 37120; +pub const ETH_P_QINQ2: u32 = 37376; +pub const ETH_P_QINQ3: u32 = 37632; +pub const ETH_P_EDSA: u32 = 56026; +pub const ETH_P_DSA_8021Q: u32 = 56027; +pub const ETH_P_DSA_A5PSW: u32 = 57345; +pub const ETH_P_IFE: u32 = 60734; +pub const ETH_P_AF_IUCV: u32 = 64507; +pub const ETH_P_802_3_MIN: u32 = 1536; +pub const ETH_P_802_3: u32 = 1; +pub const ETH_P_AX25: u32 = 2; +pub const ETH_P_ALL: u32 = 3; +pub const ETH_P_802_2: u32 = 4; +pub const ETH_P_SNAP: u32 = 5; +pub const ETH_P_DDCMP: u32 = 6; +pub const ETH_P_WAN_PPP: u32 = 7; +pub const ETH_P_PPP_MP: u32 = 8; +pub const ETH_P_LOCALTALK: u32 = 9; +pub const ETH_P_CAN: u32 = 12; +pub const ETH_P_CANFD: u32 = 13; +pub const ETH_P_CANXL: u32 = 14; +pub const ETH_P_PPPTALK: u32 = 16; +pub const ETH_P_TR_802_2: u32 = 17; +pub const ETH_P_MOBITEX: u32 = 21; +pub const ETH_P_CONTROL: u32 = 22; +pub const ETH_P_IRDA: u32 = 23; +pub const ETH_P_ECONET: u32 = 24; +pub const ETH_P_HDLC: u32 = 25; +pub const ETH_P_ARCNET: u32 = 26; +pub const ETH_P_DSA: u32 = 27; +pub const ETH_P_TRAILER: u32 = 28; +pub const ETH_P_PHONET: u32 = 245; +pub const ETH_P_IEEE802154: u32 = 246; +pub const ETH_P_CAIF: u32 = 247; +pub const ETH_P_XDSA: u32 = 248; +pub const ETH_P_MAP: u32 = 249; +pub const ETH_P_MCTP: u32 = 250; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/ioctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/ioctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/ioctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,3 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/io_uring.rs temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/io_uring.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/io_uring.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/io_uring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1084 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_suseconds_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_rwf_t = crate::ctypes::c_int; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_suseconds_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +pub struct io_uring_sqe { +pub opcode: __u8, +pub flags: __u8, +pub ioprio: __u16, +pub fd: __s32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, +pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, +pub len: __u32, +pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, +pub user_data: __u64, +pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, +pub personality: __u16, +pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, +pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { +pub cmd_op: __u32, +pub __pad1: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { +pub addr_len: __u16, +pub __pad3: [__u16; 1usize], +} +#[repr(C)] +pub struct io_uring_sqe__bindgen_ty_6 { +pub __bindgen_anon_1: __BindgenUnionField, +pub cmd: __BindgenUnionField<[__u8; 0usize]>, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { +pub addr3: __u64, +pub __pad2: [__u64; 1usize], +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_cqe { +pub user_data: __u64, +pub res: __s32, +pub flags: __u32, +pub big_cqe: __IncompleteArrayField<__u64>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_sqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub flags: __u32, +pub dropped: __u32, +pub array: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_cqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub overflow: __u32, +pub cqes: __u32, +pub flags: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_params { +pub sq_entries: __u32, +pub cq_entries: __u32, +pub flags: __u32, +pub sq_thread_cpu: __u32, +pub sq_thread_idle: __u32, +pub features: __u32, +pub wq_fd: __u32, +pub resv: [__u32; 3usize], +pub sq_off: io_sqring_offsets, +pub cq_off: io_cqring_offsets, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_files_update { +pub offset: __u32, +pub resv: __u32, +pub fds: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_register { +pub nr: __u32, +pub flags: __u32, +pub resv2: __u64, +pub data: __u64, +pub tags: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update2 { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +pub tags: __u64, +pub nr: __u32, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_slot { +pub tag: __u64, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_register { +pub nr_slots: __u32, +pub resv: __u32, +pub resv2: __u64, +pub data: __u64, +pub resv3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_probe_op { +pub op: __u8, +pub resv: __u8, +pub flags: __u16, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_probe { +pub last_op: __u8, +pub ops_len: __u8, +pub resv: __u16, +pub resv2: [__u32; 3usize], +pub ops: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_restriction { +pub opcode: __u16, +pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, +pub resv: __u8, +pub resv2: [__u32; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf { +pub addr: __u64, +pub len: __u32, +pub bid: __u16, +pub resv: __u16, +} +#[repr(C)] +pub struct io_uring_buf_ring { +pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +} +#[repr(C)] +pub struct io_uring_buf_ring__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { +pub resv1: __u64, +pub resv2: __u32, +pub resv3: __u16, +pub tail: __u16, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { +pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, +pub bufs: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_reg { +pub ring_addr: __u64, +pub ring_entries: __u32, +pub bgid: __u16, +pub pad: __u16, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_getevents_arg { +pub sigmask: __u64, +pub sigmask_sz: __u32, +pub pad: __u32, +pub ts: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sync_cancel_reg { +pub addr: __u64, +pub fd: __s32, +pub flags: __u32, +pub timeout: __kernel_timespec, +pub pad: [__u64; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_file_index_range { +pub off: __u32, +pub len: __u32, +pub resv: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_recvmsg_out { +pub namelen: __u32, +pub controllen: __u32, +pub payloadlen: __u32, +pub flags: __u32, +} +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 13; +pub const _IOC_DIRBITS: u32 = 3; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 8191; +pub const _IOC_XSIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 7; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 29; +pub const _IOC_NONE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const _IOC_WRITE: u32 = 4; +pub const IOC_IN: u32 = 2147483648; +pub const IOC_OUT: u32 = 1073741824; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const IORING_FILE_INDEX_ALLOC: i32 = -1; +pub const IORING_SETUP_IOPOLL: u32 = 1; +pub const IORING_SETUP_SQPOLL: u32 = 2; +pub const IORING_SETUP_SQ_AFF: u32 = 4; +pub const IORING_SETUP_CQSIZE: u32 = 8; +pub const IORING_SETUP_CLAMP: u32 = 16; +pub const IORING_SETUP_ATTACH_WQ: u32 = 32; +pub const IORING_SETUP_R_DISABLED: u32 = 64; +pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; +pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; +pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; +pub const IORING_SETUP_SQE128: u32 = 1024; +pub const IORING_SETUP_CQE32: u32 = 2048; +pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; +pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; +pub const IORING_URING_CMD_FIXED: u32 = 1; +pub const IORING_FSYNC_DATASYNC: u32 = 1; +pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; +pub const IORING_POLL_ADD_LEVEL: u32 = 8; +pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; +pub const IORING_ASYNC_CANCEL_FD: u32 = 2; +pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; +pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; +pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; +pub const IORING_RECV_MULTISHOT: u32 = 2; +pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; +pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; +pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; +pub const IORING_ACCEPT_MULTISHOT: u32 = 1; +pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; +pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; +pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; +pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; +pub const IORING_CQE_F_NOTIF: u32 = 8; +pub const IORING_OFF_SQ_RING: u32 = 0; +pub const IORING_OFF_CQ_RING: u32 = 134217728; +pub const IORING_OFF_SQES: u32 = 268435456; +pub const IORING_SQ_NEED_WAKEUP: u32 = 1; +pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; +pub const IORING_SQ_TASKRUN: u32 = 4; +pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; +pub const IORING_ENTER_GETEVENTS: u32 = 1; +pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; +pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; +pub const IORING_ENTER_REGISTERED_RING: u32 = 16; +pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; +pub const IORING_FEAT_NODROP: u32 = 2; +pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; +pub const IORING_FEAT_RW_CUR_POS: u32 = 8; +pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; +pub const IORING_FEAT_FAST_POLL: u32 = 32; +pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_FEAT_CQE_SKIP: u32 = 2048; +pub const IORING_FEAT_LINKED_FILE: u32 = 4096; +pub const IORING_FEAT_REG_REG_RING: u32 = 8192; +pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; +pub const IO_URING_OP_SUPPORTED: u32 = 1; +pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_FIXED_FILE_BIT; +pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_DRAIN_BIT; +pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_LINK_BIT; +pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_HARDLINK_BIT; +pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_ASYNC_BIT; +pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_BUFFER_SELECT_BIT; +pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_CQE_SKIP_SUCCESS_BIT; +pub const IORING_MSG_DATA: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_DATA; +pub const IORING_MSG_SEND_FD: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_SEND_FD; +pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = _bindgen_ty_3::IORING_CQE_BUFFER_SHIFT; +pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS; +pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_BUFFERS; +pub const IORING_REGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES; +pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_FILES; +pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD; +pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_EVENTFD; +pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE; +pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD_ASYNC; +pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PROBE; +pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PERSONALITY; +pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PERSONALITY; +pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RESTRICTIONS; +pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_ENABLE_RINGS; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES2; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE2; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS2; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS_UPDATE; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_AFF; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_IOWQ_AFF; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_MAX_WORKERS; +pub const IORING_REGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RING_FDS; +pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_RING_FDS; +pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PBUF_RING; +pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PBUF_RING; +pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_SYNC_CANCEL; +pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILE_ALLOC_RANGE; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_LAST; +pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_USE_REGISTERED_RING; +pub const IO_WQ_BOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_BOUND; +pub const IO_WQ_UNBOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_UNBOUND; +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_REGISTER_OP; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_OP; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_LAST; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IOSQE_FIXED_FILE_BIT = 0, +IOSQE_IO_DRAIN_BIT = 1, +IOSQE_IO_LINK_BIT = 2, +IOSQE_IO_HARDLINK_BIT = 3, +IOSQE_ASYNC_BIT = 4, +IOSQE_BUFFER_SELECT_BIT = 5, +IOSQE_CQE_SKIP_SUCCESS_BIT = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum io_uring_op { +IORING_OP_NOP = 0, +IORING_OP_READV = 1, +IORING_OP_WRITEV = 2, +IORING_OP_FSYNC = 3, +IORING_OP_READ_FIXED = 4, +IORING_OP_WRITE_FIXED = 5, +IORING_OP_POLL_ADD = 6, +IORING_OP_POLL_REMOVE = 7, +IORING_OP_SYNC_FILE_RANGE = 8, +IORING_OP_SENDMSG = 9, +IORING_OP_RECVMSG = 10, +IORING_OP_TIMEOUT = 11, +IORING_OP_TIMEOUT_REMOVE = 12, +IORING_OP_ACCEPT = 13, +IORING_OP_ASYNC_CANCEL = 14, +IORING_OP_LINK_TIMEOUT = 15, +IORING_OP_CONNECT = 16, +IORING_OP_FALLOCATE = 17, +IORING_OP_OPENAT = 18, +IORING_OP_CLOSE = 19, +IORING_OP_FILES_UPDATE = 20, +IORING_OP_STATX = 21, +IORING_OP_READ = 22, +IORING_OP_WRITE = 23, +IORING_OP_FADVISE = 24, +IORING_OP_MADVISE = 25, +IORING_OP_SEND = 26, +IORING_OP_RECV = 27, +IORING_OP_OPENAT2 = 28, +IORING_OP_EPOLL_CTL = 29, +IORING_OP_SPLICE = 30, +IORING_OP_PROVIDE_BUFFERS = 31, +IORING_OP_REMOVE_BUFFERS = 32, +IORING_OP_TEE = 33, +IORING_OP_SHUTDOWN = 34, +IORING_OP_RENAMEAT = 35, +IORING_OP_UNLINKAT = 36, +IORING_OP_MKDIRAT = 37, +IORING_OP_SYMLINKAT = 38, +IORING_OP_LINKAT = 39, +IORING_OP_MSG_RING = 40, +IORING_OP_FSETXATTR = 41, +IORING_OP_SETXATTR = 42, +IORING_OP_FGETXATTR = 43, +IORING_OP_GETXATTR = 44, +IORING_OP_SOCKET = 45, +IORING_OP_URING_CMD = 46, +IORING_OP_SEND_ZC = 47, +IORING_OP_SENDMSG_ZC = 48, +IORING_OP_LAST = 49, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IORING_MSG_DATA = 0, +IORING_MSG_SEND_FD = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IORING_CQE_BUFFER_SHIFT = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IORING_REGISTER_BUFFERS = 0, +IORING_UNREGISTER_BUFFERS = 1, +IORING_REGISTER_FILES = 2, +IORING_UNREGISTER_FILES = 3, +IORING_REGISTER_EVENTFD = 4, +IORING_UNREGISTER_EVENTFD = 5, +IORING_REGISTER_FILES_UPDATE = 6, +IORING_REGISTER_EVENTFD_ASYNC = 7, +IORING_REGISTER_PROBE = 8, +IORING_REGISTER_PERSONALITY = 9, +IORING_UNREGISTER_PERSONALITY = 10, +IORING_REGISTER_RESTRICTIONS = 11, +IORING_REGISTER_ENABLE_RINGS = 12, +IORING_REGISTER_FILES2 = 13, +IORING_REGISTER_FILES_UPDATE2 = 14, +IORING_REGISTER_BUFFERS2 = 15, +IORING_REGISTER_BUFFERS_UPDATE = 16, +IORING_REGISTER_IOWQ_AFF = 17, +IORING_UNREGISTER_IOWQ_AFF = 18, +IORING_REGISTER_IOWQ_MAX_WORKERS = 19, +IORING_REGISTER_RING_FDS = 20, +IORING_UNREGISTER_RING_FDS = 21, +IORING_REGISTER_PBUF_RING = 22, +IORING_UNREGISTER_PBUF_RING = 23, +IORING_REGISTER_SYNC_CANCEL = 24, +IORING_REGISTER_FILE_ALLOC_RANGE = 25, +IORING_REGISTER_LAST = 26, +IORING_REGISTER_USE_REGISTERED_RING = 2147483648, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IO_WQ_BOUND = 0, +IO_WQ_UNBOUND = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IORING_RESTRICTION_REGISTER_OP = 0, +IORING_RESTRICTION_SQE_OP = 1, +IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, +IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, +IORING_RESTRICTION_LAST = 4, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_1 { +pub off: __u64, +pub addr2: __u64, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_2 { +pub addr: __u64, +pub splice_off_in: __u64, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_3 { +pub rw_flags: __kernel_rwf_t, +pub fsync_flags: __u32, +pub poll_events: __u16, +pub poll32_events: __u32, +pub sync_range_flags: __u32, +pub msg_flags: __u32, +pub timeout_flags: __u32, +pub accept_flags: __u32, +pub cancel_flags: __u32, +pub open_flags: __u32, +pub statx_flags: __u32, +pub fadvise_advice: __u32, +pub splice_flags: __u32, +pub rename_flags: __u32, +pub unlink_flags: __u32, +pub hardlink_flags: __u32, +pub xattr_flags: __u32, +pub msg_ring_flags: __u32, +pub uring_cmd_flags: __u32, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_4 { +pub buf_index: __u16, +pub buf_group: __u16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { +pub splice_fd_in: __s32, +pub file_index: __u32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_restriction__bindgen_ty_1 { +pub register_op: __u8, +pub sqe_op: __u8, +pub sqe_flags: __u8, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/netlink.rs temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/netlink.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/netlink.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/netlink.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,363 +1,1498 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_suseconds_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_suseconds_t, } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_nl { +pub nl_family: __kernel_sa_family_t, +pub nl_pad: crate::ctypes::c_ushort, +pub nl_pid: __u32, +pub nl_groups: __u32, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsghdr { +pub nlmsg_len: __u32, +pub nlmsg_type: __u16, +pub nlmsg_flags: __u16, +pub nlmsg_seq: __u32, +pub nlmsg_pid: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsgerr { +pub error: crate::ctypes::c_int, +pub msg: nlmsghdr, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_pktinfo { +pub group: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_req { +pub nm_block_size: crate::ctypes::c_uint, +pub nm_block_nr: crate::ctypes::c_uint, +pub nm_frame_size: crate::ctypes::c_uint, +pub nm_frame_nr: crate::ctypes::c_uint, } -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const __BITS_PER_LONG: u32 = 64; -pub const __FD_SETSIZE: u32 = 1024; -pub const NETLINK_ROUTE: u32 = 0; -pub const NETLINK_UNUSED: u32 = 1; -pub const NETLINK_USERSOCK: u32 = 2; -pub const NETLINK_FIREWALL: u32 = 3; -pub const NETLINK_SOCK_DIAG: u32 = 4; -pub const NETLINK_NFLOG: u32 = 5; -pub const NETLINK_XFRM: u32 = 6; -pub const NETLINK_SELINUX: u32 = 7; -pub const NETLINK_ISCSI: u32 = 8; -pub const NETLINK_AUDIT: u32 = 9; -pub const NETLINK_FIB_LOOKUP: u32 = 10; -pub const NETLINK_CONNECTOR: u32 = 11; -pub const NETLINK_NETFILTER: u32 = 12; -pub const NETLINK_IP6_FW: u32 = 13; -pub const NETLINK_DNRTMSG: u32 = 14; -pub const NETLINK_KOBJECT_UEVENT: u32 = 15; -pub const NETLINK_GENERIC: u32 = 16; -pub const NETLINK_SCSITRANSPORT: u32 = 18; -pub const NETLINK_ECRYPTFS: u32 = 19; -pub const NETLINK_RDMA: u32 = 20; -pub const NETLINK_CRYPTO: u32 = 21; -pub const NETLINK_SMC: u32 = 22; -pub const NETLINK_INET_DIAG: u32 = 4; -pub const MAX_LINKS: u32 = 32; -pub const NLM_F_REQUEST: u32 = 1; -pub const NLM_F_MULTI: u32 = 2; -pub const NLM_F_ACK: u32 = 4; -pub const NLM_F_ECHO: u32 = 8; -pub const NLM_F_DUMP_INTR: u32 = 16; -pub const NLM_F_DUMP_FILTERED: u32 = 32; -pub const NLM_F_ROOT: u32 = 256; -pub const NLM_F_MATCH: u32 = 512; -pub const NLM_F_ATOMIC: u32 = 1024; -pub const NLM_F_DUMP: u32 = 768; -pub const NLM_F_REPLACE: u32 = 256; -pub const NLM_F_EXCL: u32 = 512; -pub const NLM_F_CREATE: u32 = 1024; -pub const NLM_F_APPEND: u32 = 2048; -pub const NLM_F_NONREC: u32 = 256; -pub const NLM_F_BULK: u32 = 512; -pub const NLM_F_CAPPED: u32 = 256; -pub const NLM_F_ACK_TLVS: u32 = 512; -pub const NLMSG_ALIGNTO: u32 = 4; -pub const NLMSG_NOOP: u32 = 1; -pub const NLMSG_ERROR: u32 = 2; -pub const NLMSG_DONE: u32 = 3; -pub const NLMSG_OVERRUN: u32 = 4; -pub const NLMSG_MIN_TYPE: u32 = 16; -pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; -pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; -pub const NETLINK_PKTINFO: u32 = 3; -pub const NETLINK_BROADCAST_ERROR: u32 = 4; -pub const NETLINK_NO_ENOBUFS: u32 = 5; -pub const NETLINK_RX_RING: u32 = 6; -pub const NETLINK_TX_RING: u32 = 7; -pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; -pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; -pub const NETLINK_CAP_ACK: u32 = 10; -pub const NETLINK_EXT_ACK: u32 = 11; -pub const NETLINK_GET_STRICT_CHK: u32 = 12; -pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; -pub const NET_MAJOR: u32 = 36; -pub const NLA_F_NESTED: u32 = 32768; -pub const NLA_F_NET_BYTEORDER: u32 = 16384; -pub const NLA_TYPE_MASK: i32 = -49153; -pub const NLA_ALIGNTO: u32 = 4; -pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; -pub const MACVLAN_FLAG_NODST: u32 = 2; -pub const IPVLAN_F_PRIVATE: u32 = 1; -pub const IPVLAN_F_VEPA: u32 = 2; -pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; -pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; -pub const MAX_VLAN_LIST_LEN: u32 = 1; -pub const PORT_PROFILE_MAX: u32 = 40; -pub const PORT_UUID_MAX: u32 = 16; -pub const PORT_SELF_VF: i32 = -1; -pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; -pub const XDP_FLAGS_SKB_MODE: u32 = 2; -pub const XDP_FLAGS_DRV_MODE: u32 = 4; -pub const XDP_FLAGS_HW_MODE: u32 = 8; -pub const XDP_FLAGS_REPLACE: u32 = 16; -pub const XDP_FLAGS_MODES: u32 = 14; -pub const XDP_FLAGS_MASK: u32 = 31; -pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; -pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; -pub const IFA_F_SECONDARY: u32 = 1; -pub const IFA_F_TEMPORARY: u32 = 1; -pub const IFA_F_NODAD: u32 = 2; -pub const IFA_F_OPTIMISTIC: u32 = 4; -pub const IFA_F_DADFAILED: u32 = 8; -pub const IFA_F_HOMEADDRESS: u32 = 16; -pub const IFA_F_DEPRECATED: u32 = 32; -pub const IFA_F_TENTATIVE: u32 = 64; -pub const IFA_F_PERMANENT: u32 = 128; -pub const IFA_F_MANAGETEMPADDR: u32 = 256; -pub const IFA_F_NOPREFIXROUTE: u32 = 512; -pub const IFA_F_MCAUTOJOIN: u32 = 1024; -pub const IFA_F_STABLE_PRIVACY: u32 = 2048; -pub const IFAPROT_UNSPEC: u32 = 0; -pub const IFAPROT_KERNEL_LO: u32 = 1; -pub const IFAPROT_KERNEL_RA: u32 = 2; -pub const IFAPROT_KERNEL_LL: u32 = 3; -pub const NTF_USE: u32 = 1; -pub const NTF_SELF: u32 = 2; -pub const NTF_MASTER: u32 = 4; -pub const NTF_PROXY: u32 = 8; -pub const NTF_EXT_LEARNED: u32 = 16; -pub const NTF_OFFLOADED: u32 = 32; -pub const NTF_STICKY: u32 = 64; -pub const NTF_ROUTER: u32 = 128; -pub const NTF_EXT_MANAGED: u32 = 1; -pub const NTF_EXT_LOCKED: u32 = 2; -pub const NUD_INCOMPLETE: u32 = 1; -pub const NUD_REACHABLE: u32 = 2; -pub const NUD_STALE: u32 = 4; -pub const NUD_DELAY: u32 = 8; -pub const NUD_PROBE: u32 = 16; -pub const NUD_FAILED: u32 = 32; -pub const NUD_NOARP: u32 = 64; -pub const NUD_PERMANENT: u32 = 128; -pub const NUD_NONE: u32 = 0; -pub const RTNL_FAMILY_IPMR: u32 = 128; -pub const RTNL_FAMILY_IP6MR: u32 = 129; -pub const RTNL_FAMILY_MAX: u32 = 129; -pub const RTA_ALIGNTO: u32 = 4; -pub const RTPROT_UNSPEC: u32 = 0; -pub const RTPROT_REDIRECT: u32 = 1; -pub const RTPROT_KERNEL: u32 = 2; -pub const RTPROT_BOOT: u32 = 3; -pub const RTPROT_STATIC: u32 = 4; -pub const RTPROT_GATED: u32 = 8; -pub const RTPROT_RA: u32 = 9; -pub const RTPROT_MRT: u32 = 10; -pub const RTPROT_ZEBRA: u32 = 11; -pub const RTPROT_BIRD: u32 = 12; -pub const RTPROT_DNROUTED: u32 = 13; -pub const RTPROT_XORP: u32 = 14; -pub const RTPROT_NTK: u32 = 15; -pub const RTPROT_DHCP: u32 = 16; -pub const RTPROT_MROUTED: u32 = 17; -pub const RTPROT_KEEPALIVED: u32 = 18; -pub const RTPROT_BABEL: u32 = 42; -pub const RTPROT_OPENR: u32 = 99; -pub const RTPROT_BGP: u32 = 186; -pub const RTPROT_ISIS: u32 = 187; -pub const RTPROT_OSPF: u32 = 188; -pub const RTPROT_RIP: u32 = 189; -pub const RTPROT_EIGRP: u32 = 192; -pub const RTM_F_NOTIFY: u32 = 256; -pub const RTM_F_CLONED: u32 = 512; -pub const RTM_F_EQUALIZE: u32 = 1024; -pub const RTM_F_PREFIX: u32 = 2048; -pub const RTM_F_LOOKUP_TABLE: u32 = 4096; -pub const RTM_F_FIB_MATCH: u32 = 8192; -pub const RTM_F_OFFLOAD: u32 = 16384; -pub const RTM_F_TRAP: u32 = 32768; -pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; -pub const RTNH_F_DEAD: u32 = 1; -pub const RTNH_F_PERVASIVE: u32 = 2; -pub const RTNH_F_ONLINK: u32 = 4; -pub const RTNH_F_OFFLOAD: u32 = 8; -pub const RTNH_F_LINKDOWN: u32 = 16; -pub const RTNH_F_UNRESOLVED: u32 = 32; -pub const RTNH_F_TRAP: u32 = 64; -pub const RTNH_COMPARE_MASK: u32 = 89; -pub const RTNH_ALIGNTO: u32 = 4; -pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; -pub const RTAX_FEATURE_ECN: u32 = 1; -pub const RTAX_FEATURE_SACK: u32 = 2; -pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; -pub const RTAX_FEATURE_ALLFRAG: u32 = 8; -pub const RTAX_FEATURE_MASK: u32 = 15; -pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; -pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; -pub const RTMGRP_LINK: u32 = 1; -pub const RTMGRP_NOTIFY: u32 = 2; -pub const RTMGRP_NEIGH: u32 = 4; -pub const RTMGRP_TC: u32 = 8; -pub const RTMGRP_IPV4_IFADDR: u32 = 16; -pub const RTMGRP_IPV4_MROUTE: u32 = 32; -pub const RTMGRP_IPV4_ROUTE: u32 = 64; -pub const RTMGRP_IPV4_RULE: u32 = 128; -pub const RTMGRP_IPV6_IFADDR: u32 = 256; -pub const RTMGRP_IPV6_MROUTE: u32 = 512; -pub const RTMGRP_IPV6_ROUTE: u32 = 1024; -pub const RTMGRP_IPV6_IFINFO: u32 = 2048; -pub const RTMGRP_DECnet_IFADDR: u32 = 4096; -pub const RTMGRP_DECnet_ROUTE: u32 = 16384; -pub const RTMGRP_IPV6_PREFIX: u32 = 131072; -pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; -pub const RTEXT_FILTER_VF: u32 = 1; -pub const RTEXT_FILTER_BRVLAN: u32 = 2; -pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; -pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; -pub const RTEXT_FILTER_MRP: u32 = 16; -pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; -pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; -pub const RTEXT_FILTER_MST: u32 = 128; -pub type size_t = crate::ctypes::c_ulong; -pub type ssize_t = crate::ctypes::c_long; -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; #[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_hdr { +pub nm_status: crate::ctypes::c_uint, +pub nm_len: crate::ctypes::c_uint, +pub nm_group: __u32, +pub nm_pid: __u32, +pub nm_uid: __u32, +pub nm_gid: __u32, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, +#[derive(Debug, Copy, Clone)] +pub struct nlattr { +pub nla_len: __u16, +pub nla_type: __u16, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], +pub struct nla_bitfield32 { +pub value: __u32, +pub selector: __u32, } -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 16usize], +pub struct rtnl_link_stats { +pub rx_packets: __u32, +pub tx_packets: __u32, +pub rx_bytes: __u32, +pub tx_bytes: __u32, +pub rx_errors: __u32, +pub tx_errors: __u32, +pub rx_dropped: __u32, +pub tx_dropped: __u32, +pub multicast: __u32, +pub collisions: __u32, +pub rx_length_errors: __u32, +pub rx_over_errors: __u32, +pub rx_crc_errors: __u32, +pub rx_frame_errors: __u32, +pub rx_fifo_errors: __u32, +pub rx_missed_errors: __u32, +pub tx_aborted_errors: __u32, +pub tx_carrier_errors: __u32, +pub tx_fifo_errors: __u32, +pub tx_heartbeat_errors: __u32, +pub tx_window_errors: __u32, +pub rx_compressed: __u32, +pub tx_compressed: __u32, +pub rx_nohandler: __u32, } -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_old_uid_t = crate::ctypes::c_ushort; -pub type __kernel_old_gid_t = crate::ctypes::c_ushort; -pub type __kernel_suseconds_t = crate::ctypes::c_int; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_old_timeval { -pub tv_sec: __kernel_long_t, -pub tv_usec: __kernel_suseconds_t, +pub struct rtnl_link_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +pub collisions: __u64, +pub rx_length_errors: __u64, +pub rx_over_errors: __u64, +pub rx_crc_errors: __u64, +pub rx_frame_errors: __u64, +pub rx_fifo_errors: __u64, +pub rx_missed_errors: __u64, +pub tx_aborted_errors: __u64, +pub tx_carrier_errors: __u64, +pub tx_fifo_errors: __u64, +pub tx_heartbeat_errors: __u64, +pub tx_window_errors: __u64, +pub rx_compressed: __u64, +pub tx_compressed: __u64, +pub rx_nohandler: __u64, +pub rx_otherhost_dropped: __u64, } -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_dev_t = crate::ctypes::c_uint; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], +pub struct rtnl_hw_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, } -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_nl { -pub nl_family: __kernel_sa_family_t, -pub nl_pad: crate::ctypes::c_ushort, -pub nl_pid: __u32, -pub nl_groups: __u32, +pub struct rtnl_link_ifmap { +pub mem_start: __u64, +pub mem_end: __u64, +pub base_addr: __u64, +pub irq: __u16, +pub dma: __u8, +pub port: __u8, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsghdr { -pub nlmsg_len: __u32, -pub nlmsg_type: __u16, -pub nlmsg_flags: __u16, -pub nlmsg_seq: __u32, -pub nlmsg_pid: __u32, +pub struct ifla_bridge_id { +pub prio: [__u8; 2usize], +pub addr: [__u8; 6usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsgerr { -pub error: crate::ctypes::c_int, -pub msg: nlmsghdr, +pub struct ifla_cacheinfo { +pub max_reasm_len: __u32, +pub tstamp: __u32, +pub reachable_time: __u32, +pub retrans_time: __u32, } -impl nlmsgerr_attrs { -pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_qos_mapping { +pub from: __u32, +pub to: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tunnel_msg { +pub family: __u8, +pub flags: __u8, +pub reserved2: __u16, +pub ifindex: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vxlan_port_range { +pub low: __be16, +pub high: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_mac { +pub vf: __u32, +pub mac: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_broadcast { +pub broadcast: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan_info { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +pub vlan_proto: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_tx_rate { +pub vf: __u32, +pub rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rate { +pub vf: __u32, +pub min_tx_rate: __u32, +pub max_tx_rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_spoofchk { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_guid { +pub vf: __u32, +pub guid: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_link_state { +pub vf: __u32, +pub link_state: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rss_query_en { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_trust { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_port_vsi { +pub vsi_mgr_id: __u8, +pub vsi_type_id: [__u8; 3usize], +pub vsi_type_version: __u8, +pub pad: [__u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct if_stats_msg { +pub family: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub ifindex: __u32, +pub filter_mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_rmnet_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifaddrmsg { +pub ifa_family: __u8, +pub ifa_prefixlen: __u8, +pub ifa_flags: __u8, +pub ifa_scope: __u8, +pub ifa_index: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifa_cacheinfo { +pub ifa_prefered: __u32, +pub ifa_valid: __u32, +pub cstamp: __u32, +pub tstamp: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndmsg { +pub ndm_family: __u8, +pub ndm_pad1: __u8, +pub ndm_pad2: __u16, +pub ndm_ifindex: __s32, +pub ndm_state: __u16, +pub ndm_flags: __u8, +pub ndm_type: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nda_cacheinfo { +pub ndm_confirmed: __u32, +pub ndm_used: __u32, +pub ndm_updated: __u32, +pub ndm_refcnt: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_stats { +pub ndts_allocs: __u64, +pub ndts_destroys: __u64, +pub ndts_hash_grows: __u64, +pub ndts_res_failed: __u64, +pub ndts_lookups: __u64, +pub ndts_hits: __u64, +pub ndts_rcv_probes_mcast: __u64, +pub ndts_rcv_probes_ucast: __u64, +pub ndts_periodic_gc_runs: __u64, +pub ndts_forced_gc_runs: __u64, +pub ndts_table_fulls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndtmsg { +pub ndtm_family: __u8, +pub ndtm_pad1: __u8, +pub ndtm_pad2: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_config { +pub ndtc_key_len: __u16, +pub ndtc_entry_size: __u16, +pub ndtc_entries: __u32, +pub ndtc_last_flush: __u32, +pub ndtc_last_rand: __u32, +pub ndtc_hash_rnd: __u32, +pub ndtc_hash_mask: __u32, +pub ndtc_hash_chain_gc: __u32, +pub ndtc_proxy_qlen: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtattr { +pub rta_len: crate::ctypes::c_ushort, +pub rta_type: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtmsg { +pub rtm_family: crate::ctypes::c_uchar, +pub rtm_dst_len: crate::ctypes::c_uchar, +pub rtm_src_len: crate::ctypes::c_uchar, +pub rtm_tos: crate::ctypes::c_uchar, +pub rtm_table: crate::ctypes::c_uchar, +pub rtm_protocol: crate::ctypes::c_uchar, +pub rtm_scope: crate::ctypes::c_uchar, +pub rtm_type: crate::ctypes::c_uchar, +pub rtm_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnexthop { +pub rtnh_len: crate::ctypes::c_ushort, +pub rtnh_flags: crate::ctypes::c_uchar, +pub rtnh_hops: crate::ctypes::c_uchar, +pub rtnh_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug)] +pub struct rtvia { +pub rtvia_family: __kernel_sa_family_t, +pub rtvia_addr: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_cacheinfo { +pub rta_clntref: __u32, +pub rta_lastuse: __u32, +pub rta_expires: __s32, +pub rta_error: __u32, +pub rta_used: __u32, +pub rta_id: __u32, +pub rta_ts: __u32, +pub rta_tsage: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rta_session { +pub proto: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub u: rta_session__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { +pub sport: __u16, +pub dport: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { +pub type_: __u8, +pub code: __u8, +pub ident: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_mfc_stats { +pub mfcs_packets: __u64, +pub mfcs_bytes: __u64, +pub mfcs_wrong_if: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtgenmsg { +pub rtgen_family: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifinfomsg { +pub ifi_family: crate::ctypes::c_uchar, +pub __ifi_pad: crate::ctypes::c_uchar, +pub ifi_type: crate::ctypes::c_ushort, +pub ifi_index: crate::ctypes::c_int, +pub ifi_flags: crate::ctypes::c_uint, +pub ifi_change: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefixmsg { +pub prefix_family: crate::ctypes::c_uchar, +pub prefix_pad1: crate::ctypes::c_uchar, +pub prefix_pad2: crate::ctypes::c_ushort, +pub prefix_ifindex: crate::ctypes::c_int, +pub prefix_type: crate::ctypes::c_uchar, +pub prefix_len: crate::ctypes::c_uchar, +pub prefix_flags: crate::ctypes::c_uchar, +pub prefix_pad3: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefix_cacheinfo { +pub preferred_time: __u32, +pub valid_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcmsg { +pub tcm_family: crate::ctypes::c_uchar, +pub tcm__pad1: crate::ctypes::c_uchar, +pub tcm__pad2: crate::ctypes::c_ushort, +pub tcm_ifindex: crate::ctypes::c_int, +pub tcm_handle: __u32, +pub tcm_parent: __u32, +pub tcm_info: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nduseroptmsg { +pub nduseropt_family: crate::ctypes::c_uchar, +pub nduseropt_pad1: crate::ctypes::c_uchar, +pub nduseropt_opts_len: crate::ctypes::c_ushort, +pub nduseropt_ifindex: crate::ctypes::c_int, +pub nduseropt_icmp_type: __u8, +pub nduseropt_icmp_code: __u8, +pub nduseropt_pad2: crate::ctypes::c_ushort, +pub nduseropt_pad3: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcamsg { +pub tca_family: crate::ctypes::c_uchar, +pub tca__pad1: crate::ctypes::c_uchar, +pub tca__pad2: crate::ctypes::c_ushort, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const NETLINK_ROUTE: u32 = 0; +pub const NETLINK_UNUSED: u32 = 1; +pub const NETLINK_USERSOCK: u32 = 2; +pub const NETLINK_FIREWALL: u32 = 3; +pub const NETLINK_SOCK_DIAG: u32 = 4; +pub const NETLINK_NFLOG: u32 = 5; +pub const NETLINK_XFRM: u32 = 6; +pub const NETLINK_SELINUX: u32 = 7; +pub const NETLINK_ISCSI: u32 = 8; +pub const NETLINK_AUDIT: u32 = 9; +pub const NETLINK_FIB_LOOKUP: u32 = 10; +pub const NETLINK_CONNECTOR: u32 = 11; +pub const NETLINK_NETFILTER: u32 = 12; +pub const NETLINK_IP6_FW: u32 = 13; +pub const NETLINK_DNRTMSG: u32 = 14; +pub const NETLINK_KOBJECT_UEVENT: u32 = 15; +pub const NETLINK_GENERIC: u32 = 16; +pub const NETLINK_SCSITRANSPORT: u32 = 18; +pub const NETLINK_ECRYPTFS: u32 = 19; +pub const NETLINK_RDMA: u32 = 20; +pub const NETLINK_CRYPTO: u32 = 21; +pub const NETLINK_SMC: u32 = 22; +pub const NETLINK_INET_DIAG: u32 = 4; +pub const MAX_LINKS: u32 = 32; +pub const NLM_F_REQUEST: u32 = 1; +pub const NLM_F_MULTI: u32 = 2; +pub const NLM_F_ACK: u32 = 4; +pub const NLM_F_ECHO: u32 = 8; +pub const NLM_F_DUMP_INTR: u32 = 16; +pub const NLM_F_DUMP_FILTERED: u32 = 32; +pub const NLM_F_ROOT: u32 = 256; +pub const NLM_F_MATCH: u32 = 512; +pub const NLM_F_ATOMIC: u32 = 1024; +pub const NLM_F_DUMP: u32 = 768; +pub const NLM_F_REPLACE: u32 = 256; +pub const NLM_F_EXCL: u32 = 512; +pub const NLM_F_CREATE: u32 = 1024; +pub const NLM_F_APPEND: u32 = 2048; +pub const NLM_F_NONREC: u32 = 256; +pub const NLM_F_BULK: u32 = 512; +pub const NLM_F_CAPPED: u32 = 256; +pub const NLM_F_ACK_TLVS: u32 = 512; +pub const NLMSG_ALIGNTO: u32 = 4; +pub const NLMSG_NOOP: u32 = 1; +pub const NLMSG_ERROR: u32 = 2; +pub const NLMSG_DONE: u32 = 3; +pub const NLMSG_OVERRUN: u32 = 4; +pub const NLMSG_MIN_TYPE: u32 = 16; +pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; +pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; +pub const NETLINK_PKTINFO: u32 = 3; +pub const NETLINK_BROADCAST_ERROR: u32 = 4; +pub const NETLINK_NO_ENOBUFS: u32 = 5; +pub const NETLINK_RX_RING: u32 = 6; +pub const NETLINK_TX_RING: u32 = 7; +pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; +pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; +pub const NETLINK_CAP_ACK: u32 = 10; +pub const NETLINK_EXT_ACK: u32 = 11; +pub const NETLINK_GET_STRICT_CHK: u32 = 12; +pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; +pub const NET_MAJOR: u32 = 36; +pub const NLA_F_NESTED: u32 = 32768; +pub const NLA_F_NET_BYTEORDER: u32 = 16384; +pub const NLA_TYPE_MASK: i32 = -49153; +pub const NLA_ALIGNTO: u32 = 4; +pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; +pub const MACVLAN_FLAG_NODST: u32 = 2; +pub const IPVLAN_F_PRIVATE: u32 = 1; +pub const IPVLAN_F_VEPA: u32 = 2; +pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; +pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; +pub const MAX_VLAN_LIST_LEN: u32 = 1; +pub const PORT_PROFILE_MAX: u32 = 40; +pub const PORT_UUID_MAX: u32 = 16; +pub const PORT_SELF_VF: i32 = -1; +pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; +pub const XDP_FLAGS_SKB_MODE: u32 = 2; +pub const XDP_FLAGS_DRV_MODE: u32 = 4; +pub const XDP_FLAGS_HW_MODE: u32 = 8; +pub const XDP_FLAGS_REPLACE: u32 = 16; +pub const XDP_FLAGS_MODES: u32 = 14; +pub const XDP_FLAGS_MASK: u32 = 31; +pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; +pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; +pub const IFA_F_SECONDARY: u32 = 1; +pub const IFA_F_TEMPORARY: u32 = 1; +pub const IFA_F_NODAD: u32 = 2; +pub const IFA_F_OPTIMISTIC: u32 = 4; +pub const IFA_F_DADFAILED: u32 = 8; +pub const IFA_F_HOMEADDRESS: u32 = 16; +pub const IFA_F_DEPRECATED: u32 = 32; +pub const IFA_F_TENTATIVE: u32 = 64; +pub const IFA_F_PERMANENT: u32 = 128; +pub const IFA_F_MANAGETEMPADDR: u32 = 256; +pub const IFA_F_NOPREFIXROUTE: u32 = 512; +pub const IFA_F_MCAUTOJOIN: u32 = 1024; +pub const IFA_F_STABLE_PRIVACY: u32 = 2048; +pub const IFAPROT_UNSPEC: u32 = 0; +pub const IFAPROT_KERNEL_LO: u32 = 1; +pub const IFAPROT_KERNEL_RA: u32 = 2; +pub const IFAPROT_KERNEL_LL: u32 = 3; +pub const NTF_USE: u32 = 1; +pub const NTF_SELF: u32 = 2; +pub const NTF_MASTER: u32 = 4; +pub const NTF_PROXY: u32 = 8; +pub const NTF_EXT_LEARNED: u32 = 16; +pub const NTF_OFFLOADED: u32 = 32; +pub const NTF_STICKY: u32 = 64; +pub const NTF_ROUTER: u32 = 128; +pub const NTF_EXT_MANAGED: u32 = 1; +pub const NTF_EXT_LOCKED: u32 = 2; +pub const NUD_INCOMPLETE: u32 = 1; +pub const NUD_REACHABLE: u32 = 2; +pub const NUD_STALE: u32 = 4; +pub const NUD_DELAY: u32 = 8; +pub const NUD_PROBE: u32 = 16; +pub const NUD_FAILED: u32 = 32; +pub const NUD_NOARP: u32 = 64; +pub const NUD_PERMANENT: u32 = 128; +pub const NUD_NONE: u32 = 0; +pub const RTNL_FAMILY_IPMR: u32 = 128; +pub const RTNL_FAMILY_IP6MR: u32 = 129; +pub const RTNL_FAMILY_MAX: u32 = 129; +pub const RTA_ALIGNTO: u32 = 4; +pub const RTPROT_UNSPEC: u32 = 0; +pub const RTPROT_REDIRECT: u32 = 1; +pub const RTPROT_KERNEL: u32 = 2; +pub const RTPROT_BOOT: u32 = 3; +pub const RTPROT_STATIC: u32 = 4; +pub const RTPROT_GATED: u32 = 8; +pub const RTPROT_RA: u32 = 9; +pub const RTPROT_MRT: u32 = 10; +pub const RTPROT_ZEBRA: u32 = 11; +pub const RTPROT_BIRD: u32 = 12; +pub const RTPROT_DNROUTED: u32 = 13; +pub const RTPROT_XORP: u32 = 14; +pub const RTPROT_NTK: u32 = 15; +pub const RTPROT_DHCP: u32 = 16; +pub const RTPROT_MROUTED: u32 = 17; +pub const RTPROT_KEEPALIVED: u32 = 18; +pub const RTPROT_BABEL: u32 = 42; +pub const RTPROT_OPENR: u32 = 99; +pub const RTPROT_BGP: u32 = 186; +pub const RTPROT_ISIS: u32 = 187; +pub const RTPROT_OSPF: u32 = 188; +pub const RTPROT_RIP: u32 = 189; +pub const RTPROT_EIGRP: u32 = 192; +pub const RTM_F_NOTIFY: u32 = 256; +pub const RTM_F_CLONED: u32 = 512; +pub const RTM_F_EQUALIZE: u32 = 1024; +pub const RTM_F_PREFIX: u32 = 2048; +pub const RTM_F_LOOKUP_TABLE: u32 = 4096; +pub const RTM_F_FIB_MATCH: u32 = 8192; +pub const RTM_F_OFFLOAD: u32 = 16384; +pub const RTM_F_TRAP: u32 = 32768; +pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; +pub const RTNH_F_DEAD: u32 = 1; +pub const RTNH_F_PERVASIVE: u32 = 2; +pub const RTNH_F_ONLINK: u32 = 4; +pub const RTNH_F_OFFLOAD: u32 = 8; +pub const RTNH_F_LINKDOWN: u32 = 16; +pub const RTNH_F_UNRESOLVED: u32 = 32; +pub const RTNH_F_TRAP: u32 = 64; +pub const RTNH_COMPARE_MASK: u32 = 89; +pub const RTNH_ALIGNTO: u32 = 4; +pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; +pub const RTAX_FEATURE_ECN: u32 = 1; +pub const RTAX_FEATURE_SACK: u32 = 2; +pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; +pub const RTAX_FEATURE_ALLFRAG: u32 = 8; +pub const RTAX_FEATURE_MASK: u32 = 15; +pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; +pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; +pub const RTMGRP_LINK: u32 = 1; +pub const RTMGRP_NOTIFY: u32 = 2; +pub const RTMGRP_NEIGH: u32 = 4; +pub const RTMGRP_TC: u32 = 8; +pub const RTMGRP_IPV4_IFADDR: u32 = 16; +pub const RTMGRP_IPV4_MROUTE: u32 = 32; +pub const RTMGRP_IPV4_ROUTE: u32 = 64; +pub const RTMGRP_IPV4_RULE: u32 = 128; +pub const RTMGRP_IPV6_IFADDR: u32 = 256; +pub const RTMGRP_IPV6_MROUTE: u32 = 512; +pub const RTMGRP_IPV6_ROUTE: u32 = 1024; +pub const RTMGRP_IPV6_IFINFO: u32 = 2048; +pub const RTMGRP_DECnet_IFADDR: u32 = 4096; +pub const RTMGRP_DECnet_ROUTE: u32 = 16384; +pub const RTMGRP_IPV6_PREFIX: u32 = 131072; +pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; +pub const RTEXT_FILTER_VF: u32 = 1; +pub const RTEXT_FILTER_BRVLAN: u32 = 2; +pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; +pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; +pub const RTEXT_FILTER_MRP: u32 = 16; +pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; +pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; +pub const RTEXT_FILTER_MST: u32 = 128; +pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; +pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; +pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; +pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; +pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; +pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; +pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; +pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; +pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; +pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; +pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; +pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; +pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; +pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; +pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; +pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; +pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; +pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; +pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; +pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; +pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; +pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; +pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; +pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; +pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; +pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; +pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; +pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; +pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; +pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; +pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; +pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; +pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; +pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; +pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; +pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; +pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; +pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; +pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; +pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; +pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; +pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; +pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; +pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; +pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; +pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; +pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; +pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; +pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; +pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; +pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; +pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; +pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; +pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; +pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; +pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; +pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; +pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; +pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; +pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; +pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; +pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; +pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; +pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; +pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; +pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; +pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; +pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; +pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; +pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; +pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; +pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; +pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; +pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; +pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; +pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; +pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; +pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; +pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; +pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; +pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; +pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; +pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; +pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; +pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; +pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; +pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; +pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; +pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; +pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; +pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; +pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; +pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; +pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; +pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; +pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; +pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; +pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; +pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; +pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; +pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; +pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; +pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; +pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; +pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; +pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; +pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; +pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; +pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; +pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; +pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; +pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; +pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; +pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; +pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; +pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; +pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; +pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; +pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; +pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; +pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; +pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; +pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; +pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; +pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; +pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; +pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; +pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; +pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; +pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; +pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; +pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; +pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; +pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; +pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; +pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; +pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; +pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; +pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; +pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; +pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; +pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; +pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; +pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; +pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; +pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; +pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; +pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; +pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; +pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; +pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; +pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; +pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; +pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; +pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; +pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; +pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; +pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; +pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; +pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; +pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; +pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; +pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; +pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; +pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; +pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; +pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; +pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; +pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; +pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; +pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; +pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; +pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; +pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; +pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; +pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; +pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; +pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; +pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; +pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; +pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; +pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; +pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; +pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; +pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; +pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; +pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; +pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; +pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; +pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; +pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; +pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; +pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; +pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; +pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; +pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; +pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; +pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; +pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; +pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; +pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; +pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; +pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; +pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; +pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; +pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; +pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; +pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; +pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; +pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; +pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; +pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; +pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; +pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; +pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; +pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; +pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; +pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; +pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; +pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; +pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; +pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; +pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; +pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; +pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; +pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; +pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; +pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; +pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; +pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; +pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; +pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; +pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; +pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; +pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; +pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; +pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; +pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; +pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; +pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; +pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; +pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; +pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; +pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; +pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; +pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; +pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; +pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; +pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; +pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; +pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; +pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; +pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; +pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; +pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; +pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; +pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; +pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; +pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; +pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; +pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; +pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; +pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; +pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; +pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; +pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; +pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; +pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; +pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; +pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; +pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; +pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; +pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; +pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; +pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; +pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; +pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; +pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; +pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; +pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; +pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; +pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; +pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; +pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; +pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; +pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; +pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; +pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; +pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; +pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; +pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; +pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; +pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; +pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; +pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; +pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; +pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; +pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; +pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; +pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; +pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; +pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; +pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; +pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; +pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; +pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; +pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; +pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; +pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; +pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; +pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; +pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; +pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; +pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; +pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; +pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; +pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; +pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; +pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; +pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; +pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; +pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; +pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; +pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; +pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; +pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; +pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; +pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; +pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; +pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; +pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; +pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; +pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; +pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; +pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; +pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; +pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; +pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; +pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; +pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; +pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; +pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; +pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; +pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; +pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; +pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; +pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; +pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; +pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; +pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; +pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; +pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; +pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; +pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; +pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; +pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; +pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; +pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; +pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; +pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; +pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; +pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; +pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; +pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; +pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; +pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; +pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; +pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; +pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; +pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; +pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; +pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; +pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; +pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; +pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; +pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; +pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; +pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; +pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; +pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; +pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; +pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; +pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; +pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; +pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; +pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; +pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; +pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; +pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; +pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; +pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; +pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; +pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; +pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; +pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; +pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; +pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; +pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; +pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; +pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; +pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; +pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; +pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; +pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; +pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; +pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; +pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; +pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; +pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; +pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; +pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; +pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; +pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; +pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; +pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; +pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; +pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; +pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; +pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; +pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; +pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; +pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; +pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; +pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; +pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; +pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; +pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; +pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; +pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; +pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; +pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; +pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; +pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; +pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; +pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; +pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; +pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; +pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; +pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; +pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; +pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; +pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; +pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; +pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; +pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; +pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; +pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; +pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; +pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; +pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; +pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; +pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; +pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; +pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; +pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; +pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; +pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; +pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; +pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; +pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; +pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; +pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; +pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; +pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; +pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; +pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; +pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; +pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; +pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; +pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; +pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; +pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; +pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; +pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; +pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; +pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; +pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; +pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; +pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; +pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; +pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; +pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; +pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; +pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; +pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; +pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; +pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; +pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; +pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; +pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; +pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; +pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; +pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; +pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; +pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; +pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; +pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; +pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; +pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; +pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; +pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; +pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; +pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; +pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; +pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; +pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; +pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; +pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; +pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; +pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; +pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; +pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; +pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; +pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; +pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; +pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; +pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; +pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; +pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; +pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; +pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; +pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; +pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; +pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; +pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; +pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; +pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; +pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; +pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; +pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; +pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; +pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; +pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; +pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; +pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; +pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; +pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; +pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; +pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; +pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; +pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; +pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; +pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; +pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; +pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; +pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; +pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; +pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; +pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; +pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; +pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; +pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; +pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; +pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; +pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; +pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; +pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; +pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; +pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; +pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; +pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; +pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; +pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; +pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; +pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; +pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; +pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; +pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; +pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; +pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; +pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; +pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; +pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; +pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; +pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; +pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; +pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; +pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; +pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; +pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; +pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; +pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; +pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; +pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; +pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; +pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; +pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; +pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; +pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; +pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; +pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; +pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; +pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; +pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; +pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; +pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; +pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; +pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; +pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; +pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; +pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; +pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; +pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; +pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; +pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; +pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; +pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; +pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; +pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; +pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; +pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; +pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; +pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; +pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; +pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; +pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; +pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; +pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; +pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; +pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; +pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; +pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; +pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; +pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; +pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; +pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; +pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; +pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; +pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; +pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; +pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; +pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; +pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; +pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; +pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; +pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; +pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; +pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; +pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; +pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; +pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; +pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; +pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; +pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; +pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; +pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; +pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; +pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; +pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; +pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; +pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; +pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; +pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; +pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; +pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; +pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; +pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; +pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; +pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; +pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; +pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; +pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; +pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; +pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; +pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; +pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; +pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; +pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; +pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; +pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; +pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; +pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; +pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; +pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; +pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; +pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; +pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; +pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; +pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; +pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; +pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; +pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; +pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; +pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; +pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; +pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; +pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; +pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; +pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; +pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; +pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; +pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; +pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; +pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; +pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; +pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; +pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; +pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; +pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; +pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; +pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; +pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; +pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; +pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -371,29 +1506,6 @@ NLMSGERR_ATTR_MISS_NEST = 6, __NLMSGERR_ATTR_MAX = 7, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_pktinfo { -pub group: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_req { -pub nm_block_size: crate::ctypes::c_uint, -pub nm_block_nr: crate::ctypes::c_uint, -pub nm_frame_size: crate::ctypes::c_uint, -pub nm_frame_nr: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_hdr { -pub nm_status: crate::ctypes::c_uint, -pub nm_len: crate::ctypes::c_uint, -pub nm_group: __u32, -pub nm_pid: __u32, -pub nm_uid: __u32, -pub nm_gid: __u32, -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -404,8 +1516,6 @@ NL_MMAP_STATUS_COPY = 3, NL_MMAP_STATUS_SKIP = 4, } -pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; -pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -413,208 +1523,46 @@ NETLINK_UNCONNECTED = 0, NETLINK_CONNECTED = 1, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nlattr { -pub nla_len: __u16, -pub nla_type: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nla_bitfield32 { -pub value: __u32, -pub selector: __u32, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_attribute_type { -NL_ATTR_TYPE_INVALID = 0, -NL_ATTR_TYPE_FLAG = 1, -NL_ATTR_TYPE_U8 = 2, -NL_ATTR_TYPE_U16 = 3, -NL_ATTR_TYPE_U32 = 4, -NL_ATTR_TYPE_U64 = 5, -NL_ATTR_TYPE_S8 = 6, -NL_ATTR_TYPE_S16 = 7, -NL_ATTR_TYPE_S32 = 8, -NL_ATTR_TYPE_S64 = 9, -NL_ATTR_TYPE_BINARY = 10, -NL_ATTR_TYPE_STRING = 11, -NL_ATTR_TYPE_NUL_STRING = 12, -NL_ATTR_TYPE_NESTED = 13, -NL_ATTR_TYPE_NESTED_ARRAY = 14, -NL_ATTR_TYPE_BITFIELD32 = 15, -} -impl netlink_policy_type_attr { -pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_policy_type_attr { -NL_POLICY_TYPE_ATTR_UNSPEC = 0, -NL_POLICY_TYPE_ATTR_TYPE = 1, -NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, -NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, -NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, -NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, -NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, -NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, -NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, -NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, -NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, -NL_POLICY_TYPE_ATTR_PAD = 11, -NL_POLICY_TYPE_ATTR_MASK = 12, -__NL_POLICY_TYPE_ATTR_MAX = 13, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats { -pub rx_packets: __u32, -pub tx_packets: __u32, -pub rx_bytes: __u32, -pub tx_bytes: __u32, -pub rx_errors: __u32, -pub tx_errors: __u32, -pub rx_dropped: __u32, -pub tx_dropped: __u32, -pub multicast: __u32, -pub collisions: __u32, -pub rx_length_errors: __u32, -pub rx_over_errors: __u32, -pub rx_crc_errors: __u32, -pub rx_frame_errors: __u32, -pub rx_fifo_errors: __u32, -pub rx_missed_errors: __u32, -pub tx_aborted_errors: __u32, -pub tx_carrier_errors: __u32, -pub tx_fifo_errors: __u32, -pub tx_heartbeat_errors: __u32, -pub tx_window_errors: __u32, -pub rx_compressed: __u32, -pub tx_compressed: __u32, -pub rx_nohandler: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, -pub collisions: __u64, -pub rx_length_errors: __u64, -pub rx_over_errors: __u64, -pub rx_crc_errors: __u64, -pub rx_frame_errors: __u64, -pub rx_fifo_errors: __u64, -pub rx_missed_errors: __u64, -pub tx_aborted_errors: __u64, -pub tx_carrier_errors: __u64, -pub tx_fifo_errors: __u64, -pub tx_heartbeat_errors: __u64, -pub tx_window_errors: __u64, -pub rx_compressed: __u64, -pub tx_compressed: __u64, -pub rx_nohandler: __u64, -pub rx_otherhost_dropped: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_hw_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, +pub enum netlink_attribute_type { +NL_ATTR_TYPE_INVALID = 0, +NL_ATTR_TYPE_FLAG = 1, +NL_ATTR_TYPE_U8 = 2, +NL_ATTR_TYPE_U16 = 3, +NL_ATTR_TYPE_U32 = 4, +NL_ATTR_TYPE_U64 = 5, +NL_ATTR_TYPE_S8 = 6, +NL_ATTR_TYPE_S16 = 7, +NL_ATTR_TYPE_S32 = 8, +NL_ATTR_TYPE_S64 = 9, +NL_ATTR_TYPE_BINARY = 10, +NL_ATTR_TYPE_STRING = 11, +NL_ATTR_TYPE_NUL_STRING = 12, +NL_ATTR_TYPE_NESTED = 13, +NL_ATTR_TYPE_NESTED_ARRAY = 14, +NL_ATTR_TYPE_BITFIELD32 = 15, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_ifmap { -pub mem_start: __u64, -pub mem_end: __u64, -pub base_addr: __u64, -pub irq: __u16, -pub dma: __u8, -pub port: __u8, +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_policy_type_attr { +NL_POLICY_TYPE_ATTR_UNSPEC = 0, +NL_POLICY_TYPE_ATTR_TYPE = 1, +NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, +NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, +NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, +NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, +NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, +NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, +NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, +NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, +NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, +NL_POLICY_TYPE_ATTR_PAD = 11, +NL_POLICY_TYPE_ATTR_MASK = 12, +__NL_POLICY_TYPE_ATTR_MAX = 13, } -pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; -pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; -pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; -pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; -pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; -pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; -pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; -pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; -pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; -pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; -pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; -pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; -pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; -pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; -pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; -pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; -pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; -pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; -pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; -pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; -pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; -pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; -pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; -pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; -pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; -pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; -pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; -pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; -pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; -pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; -pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; -pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; -pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; -pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; -pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; -pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; -pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; -pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; -pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; -pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; -pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; -pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; -pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; -pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; -pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; -pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; -pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; -pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; -pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; -pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; -pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; -pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; -pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; -pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; -pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; -pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; -pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; -pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; -pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; -pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; -pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; -pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; -pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; -pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; -pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -686,11 +1634,6 @@ IFLA_GRO_IPV4_MAX_SIZE = 64, __IFLA_MAX = 65, } -pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; -pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; -pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; -pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; -pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -700,9 +1643,6 @@ IFLA_PROTO_DOWN_REASON_VALUE = 2, __IFLA_PROTO_DOWN_REASON_CNT = 3, } -pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; -pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; -pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -711,17 +1651,6 @@ IFLA_INET_CONF = 1, __IFLA_INET_MAX = 2, } -pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; -pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; -pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; -pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; -pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; -pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; -pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; -pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; -pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; -pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; -pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -747,55 +1676,6 @@ IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, IN6_ADDR_GEN_MODE_RANDOM = 3, } -pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; -pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; -pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; -pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; -pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; -pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; -pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; -pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; -pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; -pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; -pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; -pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; -pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; -pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; -pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; -pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; -pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; -pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; -pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; -pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; -pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; -pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; -pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; -pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; -pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; -pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; -pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; -pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; -pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; -pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; -pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; -pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; -pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; -pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; -pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; -pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; -pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; -pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; -pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; -pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; -pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; -pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; -pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; -pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; -pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; -pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; -pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; -pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; -pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -832,83 +1712,31 @@ IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29, IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30, IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, -IFLA_BR_MCAST_QUERIER_INTVL = 32, -IFLA_BR_MCAST_QUERY_INTVL = 33, -IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, -IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, -IFLA_BR_NF_CALL_IPTABLES = 36, -IFLA_BR_NF_CALL_IP6TABLES = 37, -IFLA_BR_NF_CALL_ARPTABLES = 38, -IFLA_BR_VLAN_DEFAULT_PVID = 39, -IFLA_BR_PAD = 40, -IFLA_BR_VLAN_STATS_ENABLED = 41, -IFLA_BR_MCAST_STATS_ENABLED = 42, -IFLA_BR_MCAST_IGMP_VERSION = 43, -IFLA_BR_MCAST_MLD_VERSION = 44, -IFLA_BR_VLAN_STATS_PER_PORT = 45, -IFLA_BR_MULTI_BOOLOPT = 46, -IFLA_BR_MCAST_QUERIER_STATE = 47, -__IFLA_BR_MAX = 48, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_bridge_id { -pub prio: [__u8; 2usize], -pub addr: [__u8; 6usize], -} -pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; -pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -BRIDGE_MODE_UNSPEC = 0, -BRIDGE_MODE_HAIRPIN = 1, -} -pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; -pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; -pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; -pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; -pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; -pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; -pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; -pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; -pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; -pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; -pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; -pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; -pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; -pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; -pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; -pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; -pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; -pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; -pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; -pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; -pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; -pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; -pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; -pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; -pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; -pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; -pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; -pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; -pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; -pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; -pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; -pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; -pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; -pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; -pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; -pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; -pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; -pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; -pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; -pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; -pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; -pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +IFLA_BR_MCAST_QUERIER_INTVL = 32, +IFLA_BR_MCAST_QUERY_INTVL = 33, +IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, +IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, +IFLA_BR_NF_CALL_IPTABLES = 36, +IFLA_BR_NF_CALL_IP6TABLES = 37, +IFLA_BR_NF_CALL_ARPTABLES = 38, +IFLA_BR_VLAN_DEFAULT_PVID = 39, +IFLA_BR_PAD = 40, +IFLA_BR_VLAN_STATS_ENABLED = 41, +IFLA_BR_MCAST_STATS_ENABLED = 42, +IFLA_BR_MCAST_IGMP_VERSION = 43, +IFLA_BR_MCAST_MLD_VERSION = 44, +IFLA_BR_VLAN_STATS_PER_PORT = 45, +IFLA_BR_MULTI_BOOLOPT = 46, +IFLA_BR_MCAST_QUERIER_STATE = 47, +__IFLA_BR_MAX = 48, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +BRIDGE_MODE_UNSPEC = 0, +BRIDGE_MODE_HAIRPIN = 1, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -958,21 +1786,6 @@ IFLA_BRPORT_MCAST_MAX_GROUPS = 42, __IFLA_BRPORT_MAX = 43, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_cacheinfo { -pub max_reasm_len: __u32, -pub tstamp: __u32, -pub reachable_time: __u32, -pub retrans_time: __u32, -} -pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; -pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; -pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; -pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; -pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; -pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; -pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -985,13 +1798,6 @@ IFLA_INFO_SLAVE_DATA = 5, __IFLA_INFO_MAX = 6, } -pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; -pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; -pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; -pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; -pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; -pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; -pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1004,15 +1810,6 @@ IFLA_VLAN_PROTOCOL = 5, __IFLA_VLAN_MAX = 6, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; -pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; -pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1021,22 +1818,6 @@ IFLA_VLAN_QOS_MAPPING = 1, __IFLA_VLAN_QOS_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_qos_mapping { -pub from: __u32, -pub to: __u32, -} -pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; -pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; -pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; -pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; -pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; -pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; -pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; -pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; -pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; -pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1071,9 +1852,6 @@ MACVLAN_MACADDR_FLUSH = 2, MACVLAN_MACADDR_SET = 3, } -pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; -pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; -pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1082,9 +1860,6 @@ IFLA_VRF_TABLE = 1, __IFLA_VRF_MAX = 2, } -pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; -pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; -pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1093,23 +1868,6 @@ IFLA_VRF_PORT_TABLE = 1, __IFLA_VRF_PORT_MAX = 2, } -pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; -pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; -pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; -pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; -pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; -pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; -pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; -pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; -pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; -pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; -pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; -pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; -pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; -pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; -pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; -pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; -pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1132,11 +1890,6 @@ IFLA_MACSEC_OFFLOAD = 15, __IFLA_MACSEC_MAX = 16, } -pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; -pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; -pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; -pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; -pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1147,9 +1900,6 @@ IFLA_XFRM_COLLECT_METADATA = 3, __IFLA_XFRM_MAX = 4, } -impl macsec_validation_type { -pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1159,9 +1909,6 @@ MACSEC_VALIDATE_STRICT = 2, __MACSEC_VALIDATE_END = 3, } -impl macsec_offload { -pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1171,10 +1918,6 @@ MACSEC_OFFLOAD_MAC = 2, __MACSEC_OFFLOAD_END = 3, } -pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; -pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; -pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; -pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1193,25 +1936,6 @@ IPVLAN_MODE_L3S = 2, IPVLAN_MODE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tunnel_msg { -pub family: __u8, -pub flags: __u8, -pub reserved2: __u16, -pub ifindex: __u32, -} -pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; -pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; -pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; -pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; -pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; -pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; -pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; -pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; -pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1228,13 +1952,6 @@ VNIFILTER_ENTRY_STATS_PAD = 9, __VNIFILTER_ENTRY_STATS_MAX = 10, } -pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; -pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; -pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; -pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; -pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; -pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1247,9 +1964,6 @@ VXLAN_VNIFILTER_ENTRY_STATS = 5, __VXLAN_VNIFILTER_ENTRY_MAX = 6, } -pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; -pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1258,38 +1972,6 @@ VXLAN_VNIFILTER_ENTRY = 1, __VXLAN_VNIFILTER_MAX = 2, } -pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; -pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; -pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; -pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; -pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; -pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; -pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; -pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; -pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; -pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; -pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; -pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; -pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; -pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; -pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; -pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; -pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; -pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; -pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; -pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; -pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; -pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; -pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; -pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; -pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; -pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; -pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; -pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; -pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; -pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1327,15 +2009,6 @@ IFLA_VXLAN_VNIFILTER = 30, __IFLA_VXLAN_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vxlan_port_range { -pub low: __be16, -pub high: __be16, -} -impl ifla_vxlan_df { -pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1345,22 +2018,6 @@ VXLAN_DF_INHERIT = 2, __VXLAN_DF_END = 3, } -pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; -pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; -pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; -pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; -pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; -pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; -pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; -pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; -pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; -pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; -pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; -pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; -pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; -pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1382,9 +2039,6 @@ IFLA_GENEVE_INNER_PROTO_INHERIT = 14, __IFLA_GENEVE_MAX = 15, } -impl ifla_geneve_df { -pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1394,12 +2048,6 @@ GENEVE_DF_INHERIT = 2, __GENEVE_DF_END = 3, } -pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; -pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; -pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; -pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; -pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; -pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1411,9 +2059,6 @@ IFLA_BAREUDP_MULTIPROTO_MODE = 4, __IFLA_BAREUDP_MAX = 5, } -pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; -pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; -pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1429,60 +2074,19 @@ GTP_ROLE_GGSN = 0, GTP_ROLE_SGSN = 1, } -pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; -pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; -pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; -pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; -pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; -pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; -pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; -pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub enum _bindgen_ty_25 { IFLA_GTP_UNSPEC = 0, IFLA_GTP_FD0 = 1, -IFLA_GTP_FD1 = 2, -IFLA_GTP_PDP_HASHSIZE = 3, -IFLA_GTP_ROLE = 4, -IFLA_GTP_CREATE_SOCKETS = 5, -IFLA_GTP_RESTART_COUNT = 6, -__IFLA_GTP_MAX = 7, -} -pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; -pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; -pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; -pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; -pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; -pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; -pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; -pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; -pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; -pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; -pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; -pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; -pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; -pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; -pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; -pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; -pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; -pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; -pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; -pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; -pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; -pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; -pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; -pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; -pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; -pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; -pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; -pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; -pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; -pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; -pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; -pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; -pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +IFLA_GTP_FD1 = 2, +IFLA_GTP_PDP_HASHSIZE = 3, +IFLA_GTP_ROLE = 4, +IFLA_GTP_CREATE_SOCKETS = 5, +IFLA_GTP_RESTART_COUNT = 6, +__IFLA_GTP_MAX = 7, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1521,13 +2125,6 @@ IFLA_BOND_NS_IP6_TARGET = 31, __IFLA_BOND_MAX = 32, } -pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; -pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; -pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; -pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; -pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1540,17 +2137,6 @@ IFLA_BOND_AD_INFO_PARTNER_MAC = 5, __IFLA_BOND_AD_INFO_MAX = 6, } -pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; -pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; -pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; -pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; -pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; -pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; -pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; -pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; -pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1567,9 +2153,6 @@ IFLA_BOND_SLAVE_PRIO = 9, __IFLA_BOND_SLAVE_MAX = 10, } -pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; -pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; -pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1578,21 +2161,6 @@ IFLA_VF_INFO = 1, __IFLA_VF_INFO_MAX = 2, } -pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; -pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; -pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; -pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; -pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; -pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; -pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; -pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; -pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; -pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; -pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; -pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; -pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; -pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; -pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1613,27 +2181,6 @@ IFLA_VF_BROADCAST = 13, __IFLA_VF_MAX = 14, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_mac { -pub vf: __u32, -pub mac: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_broadcast { -pub broadcast: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -} -pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; -pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; -pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1642,43 +2189,6 @@ IFLA_VF_VLAN_INFO = 1, __IFLA_VF_VLAN_INFO_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan_info { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -pub vlan_proto: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_tx_rate { -pub vf: __u32, -pub rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rate { -pub vf: __u32, -pub min_tx_rate: __u32, -pub max_tx_rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_spoofchk { -pub vf: __u32, -pub setting: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_guid { -pub vf: __u32, -pub guid: __u64, -} -pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; -pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; -pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; -pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1688,28 +2198,6 @@ IFLA_VF_LINK_STATE_DISABLE = 2, __IFLA_VF_LINK_STATE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_link_state { -pub vf: __u32, -pub link_state: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rss_query_en { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; -pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; -pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; -pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; -pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; -pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; -pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; -pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; -pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; -pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1725,15 +2213,6 @@ IFLA_VF_STATS_TX_DROPPED = 8, __IFLA_VF_STATS_MAX = 9, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_trust { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; -pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; -pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1742,15 +2221,6 @@ IFLA_VF_PORT = 1, __IFLA_VF_PORT_MAX = 2, } -pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; -pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; -pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; -pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; -pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; -pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; -pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; -pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; -pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1765,10 +2235,6 @@ IFLA_PORT_RESPONSE = 7, __IFLA_PORT_MAX = 8, } -pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; -pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; -pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; -pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1778,19 +2244,6 @@ PORT_REQUEST_ASSOCIATE = 2, PORT_REQUEST_DISASSOCIATE = 3, } -pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; -pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; -pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; -pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; -pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; -pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; -pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; -pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; -pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; -pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; -pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1809,19 +2262,6 @@ PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, PORT_PROFILE_RESPONSE_ERROR = 261, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_port_vsi { -pub vsi_mgr_id: __u8, -pub vsi_type_id: [__u8; 3usize], -pub vsi_type_version: __u8, -pub pad: [__u8; 3usize], -} -pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; -pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; -pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; -pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; -pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1832,8 +2272,6 @@ IFLA_IPOIB_UMCAST = 3, __IFLA_IPOIB_MAX = 4, } -pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; -pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1841,9 +2279,6 @@ IPOIB_MODE_DATAGRAM = 0, IPOIB_MODE_CONNECTED = 1, } -pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; -pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; -pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1852,15 +2287,6 @@ HSR_PROTOCOL_PRP = 1, HSR_PROTOCOL_MAX = 2, } -pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; -pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; -pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; -pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; -pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; -pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; -pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; -pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; -pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1875,22 +2301,6 @@ IFLA_HSR_PROTOCOL = 7, __IFLA_HSR_MAX = 8, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_stats_msg { -pub family: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub ifindex: __u32, -pub filter_mask: __u32, -} -pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; -pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; -pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; -pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; -pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; -pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; -pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1903,10 +2313,6 @@ IFLA_STATS_AF_SPEC = 5, __IFLA_STATS_MAX = 6, } -pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; -pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; -pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1916,10 +2322,6 @@ IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, __IFLA_STATS_GETSET_MAX = 3, } -pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; -pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; -pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; -pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1929,11 +2331,6 @@ LINK_XSTATS_TYPE_BOND = 2, __LINK_XSTATS_TYPE_MAX = 3, } -pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; -pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1944,10 +2341,6 @@ IFLA_OFFLOAD_XSTATS_L3_STATS = 3, __IFLA_OFFLOAD_XSTATS_MAX = 4, } -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; -pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1957,11 +2350,6 @@ IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, } -pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; -pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; -pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; -pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; -pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1972,16 +2360,6 @@ XDP_ATTACHED_HW = 3, XDP_ATTACHED_MULTI = 4, } -pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; -pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; -pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; -pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; -pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; -pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; -pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; -pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; -pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; -pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1997,13 +2375,6 @@ IFLA_XDP_EXPECTED_FD = 8, __IFLA_XDP_MAX = 9, } -pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; -pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; -pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; -pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; -pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; -pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; -pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2016,17 +2387,6 @@ IFLA_EVENT_IGMP_RESEND = 5, IFLA_EVENT_BONDING_OPTIONS = 6, } -pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; -pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; -pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; -pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; -pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; -pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; -pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; -pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; -pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; -pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; -pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2042,11 +2402,7 @@ IFLA_TUN_NUM_QUEUES = 8, IFLA_TUN_NUM_DISABLED_QUEUES = 9, __IFLA_TUN_MAX = 10, -} -pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; -pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; -pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; -pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2056,15 +2412,6 @@ IFLA_RMNET_FLAGS = 2, __IFLA_RMNET_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_rmnet_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; -pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; -pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2073,9 +2420,6 @@ IFLA_MCTP_NET = 1, __IFLA_MCTP_MAX = 2, } -pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; -pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; -pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2084,28 +2428,6 @@ IFLA_DSA_MASTER = 1, __IFLA_DSA_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifaddrmsg { -pub ifa_family: __u8, -pub ifa_prefixlen: __u8, -pub ifa_flags: __u8, -pub ifa_scope: __u8, -pub ifa_index: __u32, -} -pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; -pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; -pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; -pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; -pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; -pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; -pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; -pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; -pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; -pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; -pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; -pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; -pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2124,44 +2446,6 @@ IFA_PROTO = 11, __IFA_MAX = 12, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifa_cacheinfo { -pub ifa_prefered: __u32, -pub ifa_valid: __u32, -pub cstamp: __u32, -pub tstamp: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndmsg { -pub ndm_family: __u8, -pub ndm_pad1: __u8, -pub ndm_pad2: __u16, -pub ndm_ifindex: __s32, -pub ndm_state: __u16, -pub ndm_flags: __u8, -pub ndm_type: __u8, -} -pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; -pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; -pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; -pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; -pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; -pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; -pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; -pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; -pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; -pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; -pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; -pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; -pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; -pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; -pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; -pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; -pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; -pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; -pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2186,50 +2470,6 @@ NDA_NDM_FLAGS_MASK = 17, __NDA_MAX = 18, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nda_cacheinfo { -pub ndm_confirmed: __u32, -pub ndm_used: __u32, -pub ndm_updated: __u32, -pub ndm_refcnt: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_stats { -pub ndts_allocs: __u64, -pub ndts_destroys: __u64, -pub ndts_hash_grows: __u64, -pub ndts_res_failed: __u64, -pub ndts_lookups: __u64, -pub ndts_hits: __u64, -pub ndts_rcv_probes_mcast: __u64, -pub ndts_rcv_probes_ucast: __u64, -pub ndts_periodic_gc_runs: __u64, -pub ndts_forced_gc_runs: __u64, -pub ndts_table_fulls: __u64, -} -pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; -pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; -pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; -pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; -pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; -pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; -pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; -pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; -pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; -pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; -pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; -pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; -pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; -pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; -pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; -pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; -pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; -pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; -pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; -pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; -pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2256,37 +2496,6 @@ NDTPA_INTERVAL_PROBE_TIME_MS = 19, __NDTPA_MAX = 20, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndtmsg { -pub ndtm_family: __u8, -pub ndtm_pad1: __u8, -pub ndtm_pad2: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_config { -pub ndtc_key_len: __u16, -pub ndtc_entry_size: __u16, -pub ndtc_entries: __u32, -pub ndtc_last_flush: __u32, -pub ndtc_last_rand: __u32, -pub ndtc_hash_rnd: __u32, -pub ndtc_hash_mask: __u32, -pub ndtc_hash_chain_gc: __u32, -pub ndtc_proxy_qlen: __u32, -} -pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; -pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; -pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; -pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; -pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; -pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; -pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; -pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; -pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; -pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; -pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2303,8 +2512,6 @@ NDTA_PAD = 9, __NDTA_MAX = 10, } -pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; -pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2312,10 +2519,6 @@ FDB_NOTIFY_BIT = 1, FDB_NOTIFY_INACTIVE_BIT = 2, } -pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; -pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; -pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; -pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2325,79 +2528,6 @@ NFEA_DONT_REFRESH = 2, __NFEA_MAX = 3, } -pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; -pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; -pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; -pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; -pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; -pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; -pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; -pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; -pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; -pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; -pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; -pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; -pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; -pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; -pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; -pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; -pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; -pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; -pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; -pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; -pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; -pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; -pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; -pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; -pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; -pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; -pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; -pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; -pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; -pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; -pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; -pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; -pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; -pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; -pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; -pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; -pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; -pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; -pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; -pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; -pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; -pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; -pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; -pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; -pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; -pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; -pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; -pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; -pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; -pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; -pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; -pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; -pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; -pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; -pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; -pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; -pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; -pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; -pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; -pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; -pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; -pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; -pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; -pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; -pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; -pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; -pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; -pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; -pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; -pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; -pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2464,49 +2594,17 @@ RTM_NEWLINKPROP = 108, RTM_DELLINKPROP = 109, RTM_GETLINKPROP = 110, -RTM_NEWVLAN = 112, -RTM_DELVLAN = 113, -RTM_GETVLAN = 114, -RTM_NEWNEXTHOPBUCKET = 116, -RTM_DELNEXTHOPBUCKET = 117, -RTM_GETNEXTHOPBUCKET = 118, -RTM_NEWTUNNEL = 120, -RTM_DELTUNNEL = 121, -RTM_GETTUNNEL = 122, -__RTM_MAX = 123, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtattr { -pub rta_len: crate::ctypes::c_ushort, -pub rta_type: crate::ctypes::c_ushort, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtmsg { -pub rtm_family: crate::ctypes::c_uchar, -pub rtm_dst_len: crate::ctypes::c_uchar, -pub rtm_src_len: crate::ctypes::c_uchar, -pub rtm_tos: crate::ctypes::c_uchar, -pub rtm_table: crate::ctypes::c_uchar, -pub rtm_protocol: crate::ctypes::c_uchar, -pub rtm_scope: crate::ctypes::c_uchar, -pub rtm_type: crate::ctypes::c_uchar, -pub rtm_flags: crate::ctypes::c_uint, +RTM_NEWVLAN = 112, +RTM_DELVLAN = 113, +RTM_GETVLAN = 114, +RTM_NEWNEXTHOPBUCKET = 116, +RTM_DELNEXTHOPBUCKET = 117, +RTM_GETNEXTHOPBUCKET = 118, +RTM_NEWTUNNEL = 120, +RTM_DELTUNNEL = 121, +RTM_GETTUNNEL = 122, +__RTM_MAX = 123, } -pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; -pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; -pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; -pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; -pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; -pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; -pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; -pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; -pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; -pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; -pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; -pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; -pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2583,51 +2681,6 @@ RTA_NH_ID = 30, __RTA_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnexthop { -pub rtnh_len: crate::ctypes::c_ushort, -pub rtnh_flags: crate::ctypes::c_uchar, -pub rtnh_hops: crate::ctypes::c_uchar, -pub rtnh_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug)] -pub struct rtvia { -pub rtvia_family: __kernel_sa_family_t, -pub rtvia_addr: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_cacheinfo { -pub rta_clntref: __u32, -pub rta_lastuse: __u32, -pub rta_expires: __s32, -pub rta_error: __u32, -pub rta_used: __u32, -pub rta_id: __u32, -pub rta_ts: __u32, -pub rta_tsage: __u32, -} -pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; -pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; -pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; -pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; -pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; -pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; -pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; -pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; -pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; -pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; -pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; -pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; -pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; -pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; -pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; -pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; -pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; -pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; -pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2652,72 +2705,6 @@ RTAX_FASTOPEN_NO_COOKIE = 17, __RTAX_MAX = 18, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rta_session { -pub proto: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub u: rta_session__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union rta_session__bindgen_ty_1 { -pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, -pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, -pub spi: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { -pub sport: __u16, -pub dport: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { -pub type_: __u8, -pub code: __u8, -pub ident: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_mfc_stats { -pub mfcs_packets: __u64, -pub mfcs_bytes: __u64, -pub mfcs_wrong_if: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtgenmsg { -pub rtgen_family: crate::ctypes::c_uchar, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifinfomsg { -pub ifi_family: crate::ctypes::c_uchar, -pub __ifi_pad: crate::ctypes::c_uchar, -pub ifi_type: crate::ctypes::c_ushort, -pub ifi_index: crate::ctypes::c_int, -pub ifi_flags: crate::ctypes::c_uint, -pub ifi_change: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefixmsg { -pub prefix_family: crate::ctypes::c_uchar, -pub prefix_pad1: crate::ctypes::c_uchar, -pub prefix_pad2: crate::ctypes::c_ushort, -pub prefix_ifindex: crate::ctypes::c_int, -pub prefix_type: crate::ctypes::c_uchar, -pub prefix_len: crate::ctypes::c_uchar, -pub prefix_flags: crate::ctypes::c_uchar, -pub prefix_pad3: crate::ctypes::c_uchar, -} -pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; -pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; -pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; -pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2727,41 +2714,6 @@ PREFIX_CACHEINFO = 2, __PREFIX_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefix_cacheinfo { -pub preferred_time: __u32, -pub valid_time: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcmsg { -pub tcm_family: crate::ctypes::c_uchar, -pub tcm__pad1: crate::ctypes::c_uchar, -pub tcm__pad2: crate::ctypes::c_ushort, -pub tcm_ifindex: crate::ctypes::c_int, -pub tcm_handle: __u32, -pub tcm_parent: __u32, -pub tcm_info: __u32, -} -pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; -pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; -pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; -pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; -pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; -pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; -pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; -pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; -pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; -pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; -pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; -pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; -pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; -pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; -pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; -pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; -pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; -pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2785,21 +2737,6 @@ TCA_EXT_WARN_MSG = 16, __TCA_MAX = 17, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nduseroptmsg { -pub nduseropt_family: crate::ctypes::c_uchar, -pub nduseropt_pad1: crate::ctypes::c_uchar, -pub nduseropt_opts_len: crate::ctypes::c_ushort, -pub nduseropt_ifindex: crate::ctypes::c_int, -pub nduseropt_icmp_type: __u8, -pub nduseropt_icmp_code: __u8, -pub nduseropt_pad2: crate::ctypes::c_ushort, -pub nduseropt_pad3: crate::ctypes::c_uint, -} -pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; -pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; -pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2851,20 +2788,6 @@ RTNLGRP_STATS = 36, __RTNLGRP_MAX = 37, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcamsg { -pub tca_family: crate::ctypes::c_uchar, -pub tca__pad1: crate::ctypes::c_uchar, -pub tca__pad2: crate::ctypes::c_ushort, -} -pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; -pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; -pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; -pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; -pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; -pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; -pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2877,3 +2800,61 @@ TCA_ROOT_EXT_WARN_MSG = 5, __TCA_ROOT_MAX = 6, } +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union rta_session__bindgen_ty_1 { +pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, +pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, +pub spi: __u32, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl nlmsgerr_attrs { +pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +} +impl netlink_policy_type_attr { +pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; +} +impl macsec_validation_type { +pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; +} +impl macsec_offload { +pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; +} +impl ifla_vxlan_df { +pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; +} +impl ifla_geneve_df { +pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/net.rs temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/net.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/net.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/net.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,2066 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_suseconds_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type socklen_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_suseconds_t, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_addr { +pub s_addr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq { +pub imr_multiaddr: in_addr, +pub imr_interface: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreqn { +pub imr_multiaddr: in_addr, +pub imr_address: in_addr, +pub imr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq_source { +pub imr_multiaddr: __be32, +pub imr_interface: __be32, +pub imr_sourceaddr: __be32, +} +#[repr(C)] +pub struct ip_msfilter { +pub imsf_multiaddr: __be32, +pub imsf_interface: __be32, +pub imsf_fmode: __u32, +pub imsf_numsrc: __u32, +pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, +} +#[repr(C)] +pub struct ip_msfilter__bindgen_ty_1 { +pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, +pub __bindgen_anon_1: __BindgenUnionField, +pub bindgen_union_field: u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { +pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub imsf_slist_flex: __IncompleteArrayField<__be32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_req { +pub gr_interface: __u32, +pub gr_group: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_source_req { +pub gsr_interface: __u32, +pub gsr_group: __kernel_sockaddr_storage, +pub gsr_source: __kernel_sockaddr_storage, +} +#[repr(C)] +pub struct group_filter { +pub __bindgen_anon_1: group_filter__bindgen_ty_1, +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 34usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { +pub gf_interface_aux: __u32, +pub gf_group_aux: __kernel_sockaddr_storage, +pub gf_fmode_aux: __u32, +pub gf_numsrc_aux: __u32, +pub gf_slist: [__kernel_sockaddr_storage; 1usize], +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { +pub gf_interface: __u32, +pub gf_group: __kernel_sockaddr_storage, +pub gf_fmode: __u32, +pub gf_numsrc: __u32, +pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_pktinfo { +pub ipi_ifindex: crate::ctypes::c_int, +pub ipi_spec_dst: in_addr, +pub ipi_addr: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_in { +pub sin_family: __kernel_sa_family_t, +pub sin_port: __be16, +pub sin_addr: in_addr, +pub __pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct iphdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub tos: __u8, +pub tot_len: __be16, +pub id: __be16, +pub frag_off: __be16, +pub ttl: __u8, +pub protocol: __u8, +pub check: __sum16, +pub __bindgen_anon_1: iphdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_auth_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub reserved: __be16, +pub spi: __be32, +pub seq_no: __be32, +pub auth_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_esp_hdr { +pub spi: __be32, +pub seq_no: __be32, +pub enc_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_comp_hdr { +pub nexthdr: __u8, +pub flags: __u8, +pub cpi: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_beet_phdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub padlen: __u8, +pub reserved: __u8, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_addr { +pub in6_u: in6_addr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr_in6 { +pub sin6_family: crate::ctypes::c_ushort, +pub sin6_port: __be16, +pub sin6_flowinfo: __be32, +pub sin6_addr: in6_addr, +pub sin6_scope_id: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6_mreq { +pub ipv6mr_multiaddr: in6_addr, +pub ipv6mr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_flowlabel_req { +pub flr_dst: in6_addr, +pub flr_label: __be32, +pub flr_action: __u8, +pub flr_share: __u8, +pub flr_flags: __u16, +pub flr_expires: __u16, +pub flr_linger: __u16, +pub __flr_pad: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_pktinfo { +pub ipi6_addr: in6_addr, +pub ipi6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ip6_mtuinfo { +pub ip6m_addr: sockaddr_in6, +pub ip6m_mtu: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_ifreq { +pub ifr6_addr: in6_addr, +pub ifr6_prefixlen: __u32, +pub ifr6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_rt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub type_: __u8, +pub segments_left: __u8, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_opt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +} +#[repr(C)] +pub struct rt0_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rt2_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: in6_addr, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct ipv6_destopt_hao { +pub type_: __u8, +pub length: __u8, +pub addr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub flow_lbl: [__u8; 3usize], +pub payload_len: __be16, +pub nexthdr: __u8, +pub hop_limit: __u8, +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcphdr { +pub source: __be16, +pub dest: __be16, +pub seq: __be32, +pub ack_seq: __be32, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub window: __be16, +pub check: __sum16, +pub urg_ptr: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_opt { +pub opt_code: __u32, +pub opt_val: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_window { +pub snd_wl1: __u32, +pub snd_wnd: __u32, +pub max_window: __u32, +pub rcv_wnd: __u32, +pub rcv_wup: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_info { +pub tcpi_state: __u8, +pub tcpi_ca_state: __u8, +pub tcpi_retransmits: __u8, +pub tcpi_probes: __u8, +pub tcpi_backoff: __u8, +pub tcpi_options: __u8, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub tcpi_rto: __u32, +pub tcpi_ato: __u32, +pub tcpi_snd_mss: __u32, +pub tcpi_rcv_mss: __u32, +pub tcpi_unacked: __u32, +pub tcpi_sacked: __u32, +pub tcpi_lost: __u32, +pub tcpi_retrans: __u32, +pub tcpi_fackets: __u32, +pub tcpi_last_data_sent: __u32, +pub tcpi_last_ack_sent: __u32, +pub tcpi_last_data_recv: __u32, +pub tcpi_last_ack_recv: __u32, +pub tcpi_pmtu: __u32, +pub tcpi_rcv_ssthresh: __u32, +pub tcpi_rtt: __u32, +pub tcpi_rttvar: __u32, +pub tcpi_snd_ssthresh: __u32, +pub tcpi_snd_cwnd: __u32, +pub tcpi_advmss: __u32, +pub tcpi_reordering: __u32, +pub tcpi_rcv_rtt: __u32, +pub tcpi_rcv_space: __u32, +pub tcpi_total_retrans: __u32, +pub tcpi_pacing_rate: __u64, +pub tcpi_max_pacing_rate: __u64, +pub tcpi_bytes_acked: __u64, +pub tcpi_bytes_received: __u64, +pub tcpi_segs_out: __u32, +pub tcpi_segs_in: __u32, +pub tcpi_notsent_bytes: __u32, +pub tcpi_min_rtt: __u32, +pub tcpi_data_segs_in: __u32, +pub tcpi_data_segs_out: __u32, +pub tcpi_delivery_rate: __u64, +pub tcpi_busy_time: __u64, +pub tcpi_rwnd_limited: __u64, +pub tcpi_sndbuf_limited: __u64, +pub tcpi_delivered: __u32, +pub tcpi_delivered_ce: __u32, +pub tcpi_bytes_sent: __u64, +pub tcpi_bytes_retrans: __u64, +pub tcpi_dsack_dups: __u32, +pub tcpi_reord_seen: __u32, +pub tcpi_rcv_ooopack: __u32, +pub tcpi_snd_wnd: __u32, +pub tcpi_rcv_wnd: __u32, +pub tcpi_rehash: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct tcp_md5sig { +pub tcpm_addr: __kernel_sockaddr_storage, +pub tcpm_flags: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_ifindex: crate::ctypes::c_int, +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_diag_md5sig { +pub tcpm_family: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_addr: [__be32; 4usize], +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_zerocopy_receive { +pub address: __u64, +pub length: __u32, +pub recv_skip_hint: __u32, +pub inq: __u32, +pub err: __s32, +pub copybuf_address: __u64, +pub copybuf_len: __s32, +pub flags: __u32, +pub msg_control: __u64, +pub msg_controllen: __u64, +pub msg_flags: __u32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_un { +pub sun_family: __kernel_sa_family_t, +pub sun_path: [crate::ctypes::c_char; 108usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr { +pub __storage: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct linger { +pub l_onoff: crate::ctypes::c_int, +pub l_linger: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct msghdr { +pub msg_name: *mut crate::ctypes::c_void, +pub msg_namelen: crate::ctypes::c_int, +pub msg_iov: *mut iovec, +pub msg_iovlen: usize, +pub msg_control: *mut crate::ctypes::c_void, +pub msg_controllen: usize, +pub msg_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct cmsghdr { +pub cmsg_len: usize, +pub cmsg_level: crate::ctypes::c_int, +pub cmsg_type: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ucred { +pub pid: __u32, +pub uid: __u32, +pub gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mmsghdr { +pub msg_hdr: msghdr, +pub msg_len: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub _address: u8, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const IP_TOS: u32 = 1; +pub const IP_TTL: u32 = 2; +pub const IP_HDRINCL: u32 = 3; +pub const IP_OPTIONS: u32 = 4; +pub const IP_ROUTER_ALERT: u32 = 5; +pub const IP_RECVOPTS: u32 = 6; +pub const IP_RETOPTS: u32 = 7; +pub const IP_PKTINFO: u32 = 8; +pub const IP_PKTOPTIONS: u32 = 9; +pub const IP_MTU_DISCOVER: u32 = 10; +pub const IP_RECVERR: u32 = 11; +pub const IP_RECVTTL: u32 = 12; +pub const IP_RECVTOS: u32 = 13; +pub const IP_MTU: u32 = 14; +pub const IP_FREEBIND: u32 = 15; +pub const IP_IPSEC_POLICY: u32 = 16; +pub const IP_XFRM_POLICY: u32 = 17; +pub const IP_PASSSEC: u32 = 18; +pub const IP_TRANSPARENT: u32 = 19; +pub const IP_RECVRETOPTS: u32 = 7; +pub const IP_ORIGDSTADDR: u32 = 20; +pub const IP_RECVORIGDSTADDR: u32 = 20; +pub const IP_MINTTL: u32 = 21; +pub const IP_NODEFRAG: u32 = 22; +pub const IP_CHECKSUM: u32 = 23; +pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; +pub const IP_RECVFRAGSIZE: u32 = 25; +pub const IP_RECVERR_RFC4884: u32 = 26; +pub const IP_PMTUDISC_DONT: u32 = 0; +pub const IP_PMTUDISC_WANT: u32 = 1; +pub const IP_PMTUDISC_DO: u32 = 2; +pub const IP_PMTUDISC_PROBE: u32 = 3; +pub const IP_PMTUDISC_INTERFACE: u32 = 4; +pub const IP_PMTUDISC_OMIT: u32 = 5; +pub const IP_MULTICAST_IF: u32 = 32; +pub const IP_MULTICAST_TTL: u32 = 33; +pub const IP_MULTICAST_LOOP: u32 = 34; +pub const IP_ADD_MEMBERSHIP: u32 = 35; +pub const IP_DROP_MEMBERSHIP: u32 = 36; +pub const IP_UNBLOCK_SOURCE: u32 = 37; +pub const IP_BLOCK_SOURCE: u32 = 38; +pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; +pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; +pub const IP_MSFILTER: u32 = 41; +pub const MCAST_JOIN_GROUP: u32 = 42; +pub const MCAST_BLOCK_SOURCE: u32 = 43; +pub const MCAST_UNBLOCK_SOURCE: u32 = 44; +pub const MCAST_LEAVE_GROUP: u32 = 45; +pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; +pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; +pub const MCAST_MSFILTER: u32 = 48; +pub const IP_MULTICAST_ALL: u32 = 49; +pub const IP_UNICAST_IF: u32 = 50; +pub const IP_LOCAL_PORT_RANGE: u32 = 51; +pub const MCAST_EXCLUDE: u32 = 0; +pub const MCAST_INCLUDE: u32 = 1; +pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; +pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; +pub const __SOCK_SIZE__: u32 = 16; +pub const IN_CLASSA_NET: u32 = 4278190080; +pub const IN_CLASSA_NSHIFT: u32 = 24; +pub const IN_CLASSA_HOST: u32 = 16777215; +pub const IN_CLASSA_MAX: u32 = 128; +pub const IN_CLASSB_NET: u32 = 4294901760; +pub const IN_CLASSB_NSHIFT: u32 = 16; +pub const IN_CLASSB_HOST: u32 = 65535; +pub const IN_CLASSB_MAX: u32 = 65536; +pub const IN_CLASSC_NET: u32 = 4294967040; +pub const IN_CLASSC_NSHIFT: u32 = 8; +pub const IN_CLASSC_HOST: u32 = 255; +pub const IN_MULTICAST_NET: u32 = 3758096384; +pub const IN_CLASSE_NET: u32 = 4294967295; +pub const IN_CLASSE_NSHIFT: u32 = 0; +pub const IN_LOOPBACKNET: u32 = 127; +pub const INADDR_LOOPBACK: u32 = 2130706433; +pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; +pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; +pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; +pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; +pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; +pub const __BIG_ENDIAN: u32 = 4321; +pub const ASI_NULL1: u32 = 0; +pub const ASI_NULL2: u32 = 1; +pub const ASI_CONTROL: u32 = 2; +pub const ASI_SEGMAP: u32 = 3; +pub const ASI_PTE: u32 = 4; +pub const ASI_HWFLUSHSEG: u32 = 5; +pub const ASI_HWFLUSHPAGE: u32 = 6; +pub const ASI_REGMAP: u32 = 6; +pub const ASI_HWFLUSHCONTEXT: u32 = 7; +pub const ASI_USERTXT: u32 = 8; +pub const ASI_KERNELTXT: u32 = 9; +pub const ASI_USERDATA: u32 = 10; +pub const ASI_KERNELDATA: u32 = 11; +pub const ASI_FLUSHSEG: u32 = 12; +pub const ASI_FLUSHPG: u32 = 13; +pub const ASI_FLUSHCTX: u32 = 14; +pub const ASI_M_RES00: u32 = 0; +pub const ASI_M_UNA01: u32 = 1; +pub const ASI_M_MXCC: u32 = 2; +pub const ASI_M_FLUSH_PROBE: u32 = 3; +pub const ASI_M_MMUREGS: u32 = 4; +pub const ASI_M_TLBDIAG: u32 = 5; +pub const ASI_M_DIAGS: u32 = 6; +pub const ASI_M_IODIAG: u32 = 7; +pub const ASI_M_USERTXT: u32 = 8; +pub const ASI_M_KERNELTXT: u32 = 9; +pub const ASI_M_USERDATA: u32 = 10; +pub const ASI_M_KERNELDATA: u32 = 11; +pub const ASI_M_TXTC_TAG: u32 = 12; +pub const ASI_M_TXTC_DATA: u32 = 13; +pub const ASI_M_DATAC_TAG: u32 = 14; +pub const ASI_M_DATAC_DATA: u32 = 15; +pub const ASI_M_FLUSH_PAGE: u32 = 16; +pub const ASI_M_FLUSH_SEG: u32 = 17; +pub const ASI_M_FLUSH_REGION: u32 = 18; +pub const ASI_M_FLUSH_CTX: u32 = 19; +pub const ASI_M_FLUSH_USER: u32 = 20; +pub const ASI_M_BCOPY: u32 = 23; +pub const ASI_M_IFLUSH_PAGE: u32 = 24; +pub const ASI_M_IFLUSH_SEG: u32 = 25; +pub const ASI_M_IFLUSH_REGION: u32 = 26; +pub const ASI_M_IFLUSH_CTX: u32 = 27; +pub const ASI_M_IFLUSH_USER: u32 = 28; +pub const ASI_M_BFILL: u32 = 31; +pub const ASI_M_BYPASS: u32 = 32; +pub const ASI_M_FBMEM: u32 = 41; +pub const ASI_M_VMEUS: u32 = 42; +pub const ASI_M_VMEPS: u32 = 43; +pub const ASI_M_VMEUT: u32 = 44; +pub const ASI_M_VMEPT: u32 = 45; +pub const ASI_M_SBUS: u32 = 46; +pub const ASI_M_CTL: u32 = 47; +pub const ASI_M_FLUSH_IWHOLE: u32 = 49; +pub const ASI_M_IC_FLCLEAR: u32 = 54; +pub const ASI_M_DC_FLCLEAR: u32 = 55; +pub const ASI_M_DCDR: u32 = 57; +pub const ASI_M_VIKING_TMP1: u32 = 64; +pub const ASI_M_ACTION: u32 = 76; +pub const ASI_LEON_NOCACHE: u32 = 1; +pub const ASI_LEON_DCACHE_MISS: u32 = 1; +pub const ASI_LEON_CACHEREGS: u32 = 2; +pub const ASI_LEON_IFLUSH: u32 = 16; +pub const ASI_LEON_DFLUSH: u32 = 17; +pub const ASI_LEON_MMUFLUSH: u32 = 24; +pub const ASI_LEON_MMUREGS: u32 = 25; +pub const ASI_LEON_BYPASS: u32 = 28; +pub const ASI_LEON_FLUSH_PAGE: u32 = 16; +pub const ASI_N: u32 = 4; +pub const ASI_NL: u32 = 12; +pub const ASI_AIUP: u32 = 16; +pub const ASI_AIUS: u32 = 17; +pub const ASI_AIUPL: u32 = 24; +pub const ASI_AIUSL: u32 = 25; +pub const ASI_P: u32 = 128; +pub const ASI_S: u32 = 129; +pub const ASI_PNF: u32 = 130; +pub const ASI_SNF: u32 = 131; +pub const ASI_PL: u32 = 136; +pub const ASI_SL: u32 = 137; +pub const ASI_PNFL: u32 = 138; +pub const ASI_SNFL: u32 = 139; +pub const ASI_MCD_PRIV_PRIMARY: u32 = 2; +pub const ASI_MCD_REAL: u32 = 5; +pub const ASI_PHYS_USE_EC: u32 = 20; +pub const ASI_PHYS_BYPASS_EC_E: u32 = 21; +pub const ASI_BLK_AIUP_4V: u32 = 22; +pub const ASI_BLK_AIUS_4V: u32 = 23; +pub const ASI_PHYS_USE_EC_L: u32 = 28; +pub const ASI_PHYS_BYPASS_EC_E_L: u32 = 29; +pub const ASI_BLK_AIUP_L_4V: u32 = 30; +pub const ASI_BLK_AIUS_L_4V: u32 = 31; +pub const ASI_SCRATCHPAD: u32 = 32; +pub const ASI_MMU: u32 = 33; +pub const ASI_BLK_INIT_QUAD_LDD_AIUS: u32 = 35; +pub const ASI_NUCLEUS_QUAD_LDD: u32 = 36; +pub const ASI_QUEUE: u32 = 37; +pub const ASI_QUAD_LDD_PHYS_4V: u32 = 38; +pub const ASI_NUCLEUS_QUAD_LDD_L: u32 = 44; +pub const ASI_QUAD_LDD_PHYS_L_4V: u32 = 46; +pub const ASI_PCACHE_DATA_STATUS: u32 = 48; +pub const ASI_PCACHE_DATA: u32 = 49; +pub const ASI_PCACHE_TAG: u32 = 50; +pub const ASI_PCACHE_SNOOP_TAG: u32 = 51; +pub const ASI_QUAD_LDD_PHYS: u32 = 52; +pub const ASI_WCACHE_VALID_BITS: u32 = 56; +pub const ASI_WCACHE_DATA: u32 = 57; +pub const ASI_WCACHE_TAG: u32 = 58; +pub const ASI_WCACHE_SNOOP_TAG: u32 = 59; +pub const ASI_QUAD_LDD_PHYS_L: u32 = 60; +pub const ASI_SRAM_FAST_INIT: u32 = 64; +pub const ASI_CORE_AVAILABLE: u32 = 65; +pub const ASI_CORE_ENABLE_STAT: u32 = 65; +pub const ASI_CORE_ENABLE: u32 = 65; +pub const ASI_XIR_STEERING: u32 = 65; +pub const ASI_CORE_RUNNING_RW: u32 = 65; +pub const ASI_CORE_RUNNING_W1S: u32 = 65; +pub const ASI_CORE_RUNNING_W1C: u32 = 65; +pub const ASI_CORE_RUNNING_STAT: u32 = 65; +pub const ASI_CMT_ERROR_STEERING: u32 = 65; +pub const ASI_DCACHE_INVALIDATE: u32 = 66; +pub const ASI_DCACHE_UTAG: u32 = 67; +pub const ASI_DCACHE_SNOOP_TAG: u32 = 68; +pub const ASI_LSU_CONTROL: u32 = 69; +pub const ASI_DCU_CONTROL_REG: u32 = 69; +pub const ASI_DCACHE_DATA: u32 = 70; +pub const ASI_DCACHE_TAG: u32 = 71; +pub const ASI_INTR_DISPATCH_STAT: u32 = 72; +pub const ASI_INTR_RECEIVE: u32 = 73; +pub const ASI_UPA_CONFIG: u32 = 74; +pub const ASI_JBUS_CONFIG: u32 = 74; +pub const ASI_SAFARI_CONFIG: u32 = 74; +pub const ASI_SAFARI_ADDRESS: u32 = 74; +pub const ASI_ESTATE_ERROR_EN: u32 = 75; +pub const ASI_AFSR: u32 = 76; +pub const ASI_AFAR: u32 = 77; +pub const ASI_EC_TAG_DATA: u32 = 78; +pub const ASI_IMMU: u32 = 80; +pub const ASI_IMMU_TSB_8KB_PTR: u32 = 81; +pub const ASI_IMMU_TSB_64KB_PTR: u32 = 82; +pub const ASI_ITLB_DATA_IN: u32 = 84; +pub const ASI_ITLB_DATA_ACCESS: u32 = 85; +pub const ASI_ITLB_TAG_READ: u32 = 86; +pub const ASI_IMMU_DEMAP: u32 = 87; +pub const ASI_DMMU: u32 = 88; +pub const ASI_DMMU_TSB_8KB_PTR: u32 = 89; +pub const ASI_DMMU_TSB_64KB_PTR: u32 = 90; +pub const ASI_DMMU_TSB_DIRECT_PTR: u32 = 91; +pub const ASI_DTLB_DATA_IN: u32 = 92; +pub const ASI_DTLB_DATA_ACCESS: u32 = 93; +pub const ASI_DTLB_TAG_READ: u32 = 94; +pub const ASI_DMMU_DEMAP: u32 = 95; +pub const ASI_IIU_INST_TRAP: u32 = 96; +pub const ASI_INTR_ID: u32 = 99; +pub const ASI_CORE_ID: u32 = 99; +pub const ASI_CESR_ID: u32 = 99; +pub const ASI_IC_INSTR: u32 = 102; +pub const ASI_IC_TAG: u32 = 103; +pub const ASI_IC_STAG: u32 = 104; +pub const ASI_IC_PRE_DECODE: u32 = 110; +pub const ASI_IC_NEXT_FIELD: u32 = 111; +pub const ASI_BRPRED_ARRAY: u32 = 111; +pub const ASI_BLK_AIUP: u32 = 112; +pub const ASI_BLK_AIUS: u32 = 113; +pub const ASI_MCU_CTRL_REG: u32 = 114; +pub const ASI_EC_DATA: u32 = 116; +pub const ASI_EC_CTRL: u32 = 117; +pub const ASI_EC_W: u32 = 118; +pub const ASI_UDB_ERROR_W: u32 = 119; +pub const ASI_UDB_CONTROL_W: u32 = 119; +pub const ASI_INTR_W: u32 = 119; +pub const ASI_INTR_DATAN_W: u32 = 119; +pub const ASI_INTR_DISPATCH_W: u32 = 119; +pub const ASI_BLK_AIUPL: u32 = 120; +pub const ASI_BLK_AIUSL: u32 = 121; +pub const ASI_EC_R: u32 = 126; +pub const ASI_UDBH_ERROR_R: u32 = 127; +pub const ASI_UDBL_ERROR_R: u32 = 127; +pub const ASI_UDBH_CONTROL_R: u32 = 127; +pub const ASI_UDBL_CONTROL_R: u32 = 127; +pub const ASI_INTR_R: u32 = 127; +pub const ASI_INTR_DATAN_R: u32 = 127; +pub const ASI_MCD_PRIMARY: u32 = 144; +pub const ASI_MCD_ST_BLKINIT_PRIMARY: u32 = 146; +pub const ASI_PIC: u32 = 176; +pub const ASI_PST8_P: u32 = 192; +pub const ASI_PST8_S: u32 = 193; +pub const ASI_PST16_P: u32 = 194; +pub const ASI_PST16_S: u32 = 195; +pub const ASI_PST32_P: u32 = 196; +pub const ASI_PST32_S: u32 = 197; +pub const ASI_PST8_PL: u32 = 200; +pub const ASI_PST8_SL: u32 = 201; +pub const ASI_PST16_PL: u32 = 202; +pub const ASI_PST16_SL: u32 = 203; +pub const ASI_PST32_PL: u32 = 204; +pub const ASI_PST32_SL: u32 = 205; +pub const ASI_FL8_P: u32 = 208; +pub const ASI_FL8_S: u32 = 209; +pub const ASI_FL16_P: u32 = 210; +pub const ASI_FL16_S: u32 = 211; +pub const ASI_FL8_PL: u32 = 216; +pub const ASI_FL8_SL: u32 = 217; +pub const ASI_FL16_PL: u32 = 218; +pub const ASI_FL16_SL: u32 = 219; +pub const ASI_BLK_COMMIT_P: u32 = 224; +pub const ASI_BLK_COMMIT_S: u32 = 225; +pub const ASI_BLK_INIT_QUAD_LDD_P: u32 = 226; +pub const ASI_BLK_INIT_QUAD_LDD_S: u32 = 227; +pub const ASI_BLK_P: u32 = 240; +pub const ASI_BLK_S: u32 = 241; +pub const ASI_ST_BLKINIT_MRU_P: u32 = 242; +pub const ASI_ST_BLKINIT_MRU_S: u32 = 243; +pub const ASI_BLK_PL: u32 = 248; +pub const ASI_BLK_SL: u32 = 249; +pub const ASI_ST_BLKINIT_MRU_PL: u32 = 250; +pub const ASI_ST_BLKINIT_MRU_SL: u32 = 251; +pub const IPTOS_TOS_MASK: u32 = 30; +pub const IPTOS_LOWDELAY: u32 = 16; +pub const IPTOS_THROUGHPUT: u32 = 8; +pub const IPTOS_RELIABILITY: u32 = 4; +pub const IPTOS_MINCOST: u32 = 2; +pub const IPTOS_PREC_MASK: u32 = 224; +pub const IPTOS_PREC_NETCONTROL: u32 = 224; +pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; +pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; +pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; +pub const IPTOS_PREC_FLASH: u32 = 96; +pub const IPTOS_PREC_IMMEDIATE: u32 = 64; +pub const IPTOS_PREC_PRIORITY: u32 = 32; +pub const IPTOS_PREC_ROUTINE: u32 = 0; +pub const IPOPT_COPY: u32 = 128; +pub const IPOPT_CLASS_MASK: u32 = 96; +pub const IPOPT_NUMBER_MASK: u32 = 31; +pub const IPOPT_CONTROL: u32 = 0; +pub const IPOPT_RESERVED1: u32 = 32; +pub const IPOPT_MEASUREMENT: u32 = 64; +pub const IPOPT_RESERVED2: u32 = 96; +pub const IPOPT_END: u32 = 0; +pub const IPOPT_NOOP: u32 = 1; +pub const IPOPT_SEC: u32 = 130; +pub const IPOPT_LSRR: u32 = 131; +pub const IPOPT_TIMESTAMP: u32 = 68; +pub const IPOPT_CIPSO: u32 = 134; +pub const IPOPT_RR: u32 = 7; +pub const IPOPT_SID: u32 = 136; +pub const IPOPT_SSRR: u32 = 137; +pub const IPOPT_RA: u32 = 148; +pub const IPVERSION: u32 = 4; +pub const MAXTTL: u32 = 255; +pub const IPDEFTTL: u32 = 64; +pub const IPOPT_OPTVAL: u32 = 0; +pub const IPOPT_OLEN: u32 = 1; +pub const IPOPT_OFFSET: u32 = 2; +pub const IPOPT_MINOFF: u32 = 4; +pub const MAX_IPOPTLEN: u32 = 40; +pub const IPOPT_NOP: u32 = 1; +pub const IPOPT_EOL: u32 = 0; +pub const IPOPT_TS: u32 = 68; +pub const IPOPT_TS_TSONLY: u32 = 0; +pub const IPOPT_TS_TSANDADDR: u32 = 1; +pub const IPOPT_TS_PRESPEC: u32 = 3; +pub const IPV4_BEET_PHMAXLEN: u32 = 8; +pub const IPV6_FL_A_GET: u32 = 0; +pub const IPV6_FL_A_PUT: u32 = 1; +pub const IPV6_FL_A_RENEW: u32 = 2; +pub const IPV6_FL_F_CREATE: u32 = 1; +pub const IPV6_FL_F_EXCL: u32 = 2; +pub const IPV6_FL_F_REFLECT: u32 = 4; +pub const IPV6_FL_F_REMOTE: u32 = 8; +pub const IPV6_FL_S_NONE: u32 = 0; +pub const IPV6_FL_S_EXCL: u32 = 1; +pub const IPV6_FL_S_PROCESS: u32 = 2; +pub const IPV6_FL_S_USER: u32 = 3; +pub const IPV6_FL_S_ANY: u32 = 255; +pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; +pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; +pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; +pub const IPV6_PRIORITY_FILLER: u32 = 256; +pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; +pub const IPV6_PRIORITY_RESERVED1: u32 = 768; +pub const IPV6_PRIORITY_BULK: u32 = 1024; +pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; +pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; +pub const IPV6_PRIORITY_CONTROL: u32 = 1792; +pub const IPV6_PRIORITY_8: u32 = 2048; +pub const IPV6_PRIORITY_9: u32 = 2304; +pub const IPV6_PRIORITY_10: u32 = 2560; +pub const IPV6_PRIORITY_11: u32 = 2816; +pub const IPV6_PRIORITY_12: u32 = 3072; +pub const IPV6_PRIORITY_13: u32 = 3328; +pub const IPV6_PRIORITY_14: u32 = 3584; +pub const IPV6_PRIORITY_15: u32 = 3840; +pub const IPPROTO_HOPOPTS: u32 = 0; +pub const IPPROTO_ROUTING: u32 = 43; +pub const IPPROTO_FRAGMENT: u32 = 44; +pub const IPPROTO_ICMPV6: u32 = 58; +pub const IPPROTO_NONE: u32 = 59; +pub const IPPROTO_DSTOPTS: u32 = 60; +pub const IPPROTO_MH: u32 = 135; +pub const IPV6_TLV_PAD1: u32 = 0; +pub const IPV6_TLV_PADN: u32 = 1; +pub const IPV6_TLV_ROUTERALERT: u32 = 5; +pub const IPV6_TLV_CALIPSO: u32 = 7; +pub const IPV6_TLV_IOAM: u32 = 49; +pub const IPV6_TLV_JUMBO: u32 = 194; +pub const IPV6_TLV_HAO: u32 = 201; +pub const IPV6_ADDRFORM: u32 = 1; +pub const IPV6_2292PKTINFO: u32 = 2; +pub const IPV6_2292HOPOPTS: u32 = 3; +pub const IPV6_2292DSTOPTS: u32 = 4; +pub const IPV6_2292RTHDR: u32 = 5; +pub const IPV6_2292PKTOPTIONS: u32 = 6; +pub const IPV6_CHECKSUM: u32 = 7; +pub const IPV6_2292HOPLIMIT: u32 = 8; +pub const IPV6_NEXTHOP: u32 = 9; +pub const IPV6_AUTHHDR: u32 = 10; +pub const IPV6_FLOWINFO: u32 = 11; +pub const IPV6_UNICAST_HOPS: u32 = 16; +pub const IPV6_MULTICAST_IF: u32 = 17; +pub const IPV6_MULTICAST_HOPS: u32 = 18; +pub const IPV6_MULTICAST_LOOP: u32 = 19; +pub const IPV6_ADD_MEMBERSHIP: u32 = 20; +pub const IPV6_DROP_MEMBERSHIP: u32 = 21; +pub const IPV6_ROUTER_ALERT: u32 = 22; +pub const IPV6_MTU_DISCOVER: u32 = 23; +pub const IPV6_MTU: u32 = 24; +pub const IPV6_RECVERR: u32 = 25; +pub const IPV6_V6ONLY: u32 = 26; +pub const IPV6_JOIN_ANYCAST: u32 = 27; +pub const IPV6_LEAVE_ANYCAST: u32 = 28; +pub const IPV6_MULTICAST_ALL: u32 = 29; +pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; +pub const IPV6_RECVERR_RFC4884: u32 = 31; +pub const IPV6_PMTUDISC_DONT: u32 = 0; +pub const IPV6_PMTUDISC_WANT: u32 = 1; +pub const IPV6_PMTUDISC_DO: u32 = 2; +pub const IPV6_PMTUDISC_PROBE: u32 = 3; +pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; +pub const IPV6_PMTUDISC_OMIT: u32 = 5; +pub const IPV6_FLOWLABEL_MGR: u32 = 32; +pub const IPV6_FLOWINFO_SEND: u32 = 33; +pub const IPV6_IPSEC_POLICY: u32 = 34; +pub const IPV6_XFRM_POLICY: u32 = 35; +pub const IPV6_HDRINCL: u32 = 36; +pub const IPV6_RECVPKTINFO: u32 = 49; +pub const IPV6_PKTINFO: u32 = 50; +pub const IPV6_RECVHOPLIMIT: u32 = 51; +pub const IPV6_HOPLIMIT: u32 = 52; +pub const IPV6_RECVHOPOPTS: u32 = 53; +pub const IPV6_HOPOPTS: u32 = 54; +pub const IPV6_RTHDRDSTOPTS: u32 = 55; +pub const IPV6_RECVRTHDR: u32 = 56; +pub const IPV6_RTHDR: u32 = 57; +pub const IPV6_RECVDSTOPTS: u32 = 58; +pub const IPV6_DSTOPTS: u32 = 59; +pub const IPV6_RECVPATHMTU: u32 = 60; +pub const IPV6_PATHMTU: u32 = 61; +pub const IPV6_DONTFRAG: u32 = 62; +pub const IPV6_RECVTCLASS: u32 = 66; +pub const IPV6_TCLASS: u32 = 67; +pub const IPV6_AUTOFLOWLABEL: u32 = 70; +pub const IPV6_ADDR_PREFERENCES: u32 = 72; +pub const IPV6_PREFER_SRC_TMP: u32 = 1; +pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; +pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; +pub const IPV6_PREFER_SRC_COA: u32 = 4; +pub const IPV6_PREFER_SRC_HOME: u32 = 1024; +pub const IPV6_PREFER_SRC_CGA: u32 = 8; +pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; +pub const IPV6_MINHOPCOUNT: u32 = 73; +pub const IPV6_ORIGDSTADDR: u32 = 74; +pub const IPV6_RECVORIGDSTADDR: u32 = 74; +pub const IPV6_TRANSPARENT: u32 = 75; +pub const IPV6_UNICAST_IF: u32 = 76; +pub const IPV6_RECVFRAGSIZE: u32 = 77; +pub const IPV6_FREEBIND: u32 = 78; +pub const IPV6_MIN_MTU: u32 = 1280; +pub const IPV6_SRCRT_STRICT: u32 = 1; +pub const IPV6_SRCRT_TYPE_0: u32 = 0; +pub const IPV6_SRCRT_TYPE_2: u32 = 2; +pub const IPV6_SRCRT_TYPE_3: u32 = 3; +pub const IPV6_SRCRT_TYPE_4: u32 = 4; +pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; +pub const SIOCGSTAMP_OLD: u32 = 35078; +pub const SIOCGSTAMPNS_OLD: u32 = 35079; +pub const SOL_SOCKET: u32 = 65535; +pub const SO_DEBUG: u32 = 1; +pub const SO_PASSCRED: u32 = 2; +pub const SO_REUSEADDR: u32 = 4; +pub const SO_KEEPALIVE: u32 = 8; +pub const SO_DONTROUTE: u32 = 16; +pub const SO_BROADCAST: u32 = 32; +pub const SO_PEERCRED: u32 = 64; +pub const SO_LINGER: u32 = 128; +pub const SO_OOBINLINE: u32 = 256; +pub const SO_REUSEPORT: u32 = 512; +pub const SO_BSDCOMPAT: u32 = 1024; +pub const SO_RCVLOWAT: u32 = 2048; +pub const SO_SNDLOWAT: u32 = 4096; +pub const SO_RCVTIMEO_OLD: u32 = 8192; +pub const SO_SNDTIMEO_OLD: u32 = 16384; +pub const SO_ACCEPTCONN: u32 = 32768; +pub const SO_SNDBUF: u32 = 4097; +pub const SO_RCVBUF: u32 = 4098; +pub const SO_SNDBUFFORCE: u32 = 4106; +pub const SO_RCVBUFFORCE: u32 = 4107; +pub const SO_ERROR: u32 = 4103; +pub const SO_TYPE: u32 = 4104; +pub const SO_PROTOCOL: u32 = 4136; +pub const SO_DOMAIN: u32 = 4137; +pub const SO_NO_CHECK: u32 = 11; +pub const SO_PRIORITY: u32 = 12; +pub const SO_BINDTODEVICE: u32 = 13; +pub const SO_ATTACH_FILTER: u32 = 26; +pub const SO_DETACH_FILTER: u32 = 27; +pub const SO_GET_FILTER: u32 = 26; +pub const SO_PEERNAME: u32 = 28; +pub const SO_PEERSEC: u32 = 30; +pub const SO_PASSSEC: u32 = 31; +pub const SO_MARK: u32 = 34; +pub const SO_RXQ_OVFL: u32 = 36; +pub const SO_WIFI_STATUS: u32 = 37; +pub const SCM_WIFI_STATUS: u32 = 37; +pub const SO_PEEK_OFF: u32 = 38; +pub const SO_NOFCS: u32 = 39; +pub const SO_LOCK_FILTER: u32 = 40; +pub const SO_SELECT_ERR_QUEUE: u32 = 41; +pub const SO_BUSY_POLL: u32 = 48; +pub const SO_MAX_PACING_RATE: u32 = 49; +pub const SO_BPF_EXTENSIONS: u32 = 50; +pub const SO_INCOMING_CPU: u32 = 51; +pub const SO_ATTACH_BPF: u32 = 52; +pub const SO_DETACH_BPF: u32 = 27; +pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 53; +pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 54; +pub const SO_CNX_ADVICE: u32 = 55; +pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 56; +pub const SO_MEMINFO: u32 = 57; +pub const SO_INCOMING_NAPI_ID: u32 = 58; +pub const SO_COOKIE: u32 = 59; +pub const SCM_TIMESTAMPING_PKTINFO: u32 = 60; +pub const SO_PEERGROUPS: u32 = 61; +pub const SO_ZEROCOPY: u32 = 62; +pub const SO_TXTIME: u32 = 63; +pub const SCM_TXTIME: u32 = 63; +pub const SO_BINDTOIFINDEX: u32 = 65; +pub const SO_SECURITY_AUTHENTICATION: u32 = 20481; +pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 20482; +pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 20484; +pub const SO_TIMESTAMP_OLD: u32 = 29; +pub const SO_TIMESTAMPNS_OLD: u32 = 33; +pub const SO_TIMESTAMPING_OLD: u32 = 35; +pub const SO_TIMESTAMP_NEW: u32 = 70; +pub const SO_TIMESTAMPNS_NEW: u32 = 66; +pub const SO_TIMESTAMPING_NEW: u32 = 67; +pub const SO_RCVTIMEO_NEW: u32 = 68; +pub const SO_SNDTIMEO_NEW: u32 = 69; +pub const SO_DETACH_REUSEPORT_BPF: u32 = 71; +pub const SO_PREFER_BUSY_POLL: u32 = 72; +pub const SO_BUSY_POLL_BUDGET: u32 = 73; +pub const SO_NETNS_COOKIE: u32 = 80; +pub const SO_BUF_LOCK: u32 = 81; +pub const SO_RESERVE_MEM: u32 = 82; +pub const SO_TXREHASH: u32 = 83; +pub const SO_RCVMARK: u32 = 84; +pub const SO_TIMESTAMP: u32 = 29; +pub const SO_TIMESTAMPNS: u32 = 33; +pub const SO_TIMESTAMPING: u32 = 35; +pub const SO_RCVTIMEO: u32 = 8192; +pub const SO_SNDTIMEO: u32 = 16384; +pub const SCM_TIMESTAMP: u32 = 29; +pub const SCM_TIMESTAMPNS: u32 = 33; +pub const SCM_TIMESTAMPING: u32 = 35; +pub const SYS_SOCKET: u32 = 1; +pub const SYS_BIND: u32 = 2; +pub const SYS_CONNECT: u32 = 3; +pub const SYS_LISTEN: u32 = 4; +pub const SYS_ACCEPT: u32 = 5; +pub const SYS_GETSOCKNAME: u32 = 6; +pub const SYS_GETPEERNAME: u32 = 7; +pub const SYS_SOCKETPAIR: u32 = 8; +pub const SYS_SEND: u32 = 9; +pub const SYS_RECV: u32 = 10; +pub const SYS_SENDTO: u32 = 11; +pub const SYS_RECVFROM: u32 = 12; +pub const SYS_SHUTDOWN: u32 = 13; +pub const SYS_SETSOCKOPT: u32 = 14; +pub const SYS_GETSOCKOPT: u32 = 15; +pub const SYS_SENDMSG: u32 = 16; +pub const SYS_RECVMSG: u32 = 17; +pub const SYS_ACCEPT4: u32 = 18; +pub const SYS_RECVMMSG: u32 = 19; +pub const SYS_SENDMMSG: u32 = 20; +pub const __SO_ACCEPTCON: u32 = 65536; +pub const TCP_MSS_DEFAULT: u32 = 536; +pub const TCP_MSS_DESIRED: u32 = 1220; +pub const TCP_NODELAY: u32 = 1; +pub const TCP_MAXSEG: u32 = 2; +pub const TCP_CORK: u32 = 3; +pub const TCP_KEEPIDLE: u32 = 4; +pub const TCP_KEEPINTVL: u32 = 5; +pub const TCP_KEEPCNT: u32 = 6; +pub const TCP_SYNCNT: u32 = 7; +pub const TCP_LINGER2: u32 = 8; +pub const TCP_DEFER_ACCEPT: u32 = 9; +pub const TCP_WINDOW_CLAMP: u32 = 10; +pub const TCP_INFO: u32 = 11; +pub const TCP_QUICKACK: u32 = 12; +pub const TCP_CONGESTION: u32 = 13; +pub const TCP_MD5SIG: u32 = 14; +pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; +pub const TCP_THIN_DUPACK: u32 = 17; +pub const TCP_USER_TIMEOUT: u32 = 18; +pub const TCP_REPAIR: u32 = 19; +pub const TCP_REPAIR_QUEUE: u32 = 20; +pub const TCP_QUEUE_SEQ: u32 = 21; +pub const TCP_REPAIR_OPTIONS: u32 = 22; +pub const TCP_FASTOPEN: u32 = 23; +pub const TCP_TIMESTAMP: u32 = 24; +pub const TCP_NOTSENT_LOWAT: u32 = 25; +pub const TCP_CC_INFO: u32 = 26; +pub const TCP_SAVE_SYN: u32 = 27; +pub const TCP_SAVED_SYN: u32 = 28; +pub const TCP_REPAIR_WINDOW: u32 = 29; +pub const TCP_FASTOPEN_CONNECT: u32 = 30; +pub const TCP_ULP: u32 = 31; +pub const TCP_MD5SIG_EXT: u32 = 32; +pub const TCP_FASTOPEN_KEY: u32 = 33; +pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; +pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; +pub const TCP_INQ: u32 = 36; +pub const TCP_CM_INQ: u32 = 36; +pub const TCP_TX_DELAY: u32 = 37; +pub const TCP_REPAIR_ON: u32 = 1; +pub const TCP_REPAIR_OFF: u32 = 0; +pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; +pub const TCPI_OPT_TIMESTAMPS: u32 = 1; +pub const TCPI_OPT_SACK: u32 = 2; +pub const TCPI_OPT_WSCALE: u32 = 4; +pub const TCPI_OPT_ECN: u32 = 8; +pub const TCPI_OPT_ECN_SEEN: u32 = 16; +pub const TCPI_OPT_SYN_DATA: u32 = 32; +pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; +pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; +pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; +pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; +pub const UNIX_PATH_MAX: u32 = 108; +pub const SHUT_RD: u32 = 0; +pub const SHUT_WR: u32 = 1; +pub const SHUT_RDWR: u32 = 2; +pub const SOCK_STREAM: u32 = 1; +pub const SOCK_DGRAM: u32 = 2; +pub const SOCK_RAW: u32 = 3; +pub const SOCK_RDM: u32 = 4; +pub const SOCK_SEQPACKET: u32 = 5; +pub const MSG_DONTWAIT: u32 = 64; +pub const AF_UNSPEC: u32 = 0; +pub const AF_UNIX: u32 = 1; +pub const AF_INET: u32 = 2; +pub const AF_AX25: u32 = 3; +pub const AF_IPX: u32 = 4; +pub const AF_APPLETALK: u32 = 5; +pub const AF_NETROM: u32 = 6; +pub const AF_BRIDGE: u32 = 7; +pub const AF_ATMPVC: u32 = 8; +pub const AF_X25: u32 = 9; +pub const AF_INET6: u32 = 10; +pub const AF_ROSE: u32 = 11; +pub const AF_DECnet: u32 = 12; +pub const AF_NETBEUI: u32 = 13; +pub const AF_SECURITY: u32 = 14; +pub const AF_KEY: u32 = 15; +pub const AF_NETLINK: u32 = 16; +pub const AF_PACKET: u32 = 17; +pub const AF_ASH: u32 = 18; +pub const AF_ECONET: u32 = 19; +pub const AF_ATMSVC: u32 = 20; +pub const AF_RDS: u32 = 21; +pub const AF_SNA: u32 = 22; +pub const AF_IRDA: u32 = 23; +pub const AF_PPPOX: u32 = 24; +pub const AF_WANPIPE: u32 = 25; +pub const AF_LLC: u32 = 26; +pub const AF_CAN: u32 = 29; +pub const AF_TIPC: u32 = 30; +pub const AF_BLUETOOTH: u32 = 31; +pub const AF_IUCV: u32 = 32; +pub const AF_RXRPC: u32 = 33; +pub const AF_ISDN: u32 = 34; +pub const AF_PHONET: u32 = 35; +pub const AF_IEEE802154: u32 = 36; +pub const AF_MAX: u32 = 37; +pub const MSG_OOB: u32 = 1; +pub const MSG_PEEK: u32 = 2; +pub const MSG_DONTROUTE: u32 = 4; +pub const MSG_CTRUNC: u32 = 8; +pub const MSG_PROBE: u32 = 16; +pub const MSG_TRUNC: u32 = 32; +pub const MSG_EOR: u32 = 128; +pub const MSG_WAITALL: u32 = 256; +pub const MSG_FIN: u32 = 512; +pub const MSG_SYN: u32 = 1024; +pub const MSG_CONFIRM: u32 = 2048; +pub const MSG_RST: u32 = 4096; +pub const MSG_ERRQUEUE: u32 = 8192; +pub const MSG_NOSIGNAL: u32 = 16384; +pub const MSG_MORE: u32 = 32768; +pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; +pub const SCM_RIGHTS: u32 = 1; +pub const SCM_CREDENTIALS: u32 = 2; +pub const SCM_SECURITY: u32 = 3; +pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; +pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; +pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; +pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; +pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; +pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; +pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; +pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; +pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; +pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; +pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; +pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; +pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; +pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; +pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; +pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; +pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; +pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; +pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; +pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; +pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; +pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; +pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; +pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; +pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; +pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; +pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; +pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; +pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; +pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; +pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; +pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; +pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; +pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; +pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; +pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; +pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; +pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; +pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; +pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; +pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; +pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; +pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; +pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; +pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; +pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; +pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; +pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; +pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; +pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; +pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; +pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; +pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; +pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; +pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; +pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; +pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; +pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; +pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; +pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; +pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; +pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; +pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; +pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; +pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; +pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; +pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; +pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; +pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; +pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; +pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; +pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; +pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; +pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; +pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; +pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; +pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; +pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; +pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; +pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; +pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; +pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; +pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; +pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; +pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; +pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; +pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; +pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; +pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; +pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; +pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; +pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; +pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; +pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; +pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; +pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; +pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; +pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; +pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; +pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; +pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; +pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; +pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; +pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; +pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; +pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; +pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; +pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; +pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; +pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; +pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; +pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; +pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; +pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; +pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; +pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; +pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; +pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; +pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; +pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; +pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; +pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; +pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; +pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; +pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; +pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; +pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; +pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; +pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; +pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; +pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; +pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; +pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; +pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; +pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; +pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; +pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; +pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; +pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; +pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; +pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; +pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; +pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; +pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; +pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; +pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; +pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; +pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; +pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; +pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; +pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; +pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IPPROTO_IP = 0, +IPPROTO_ICMP = 1, +IPPROTO_IGMP = 2, +IPPROTO_IPIP = 4, +IPPROTO_TCP = 6, +IPPROTO_EGP = 8, +IPPROTO_PUP = 12, +IPPROTO_UDP = 17, +IPPROTO_IDP = 22, +IPPROTO_TP = 29, +IPPROTO_DCCP = 33, +IPPROTO_IPV6 = 41, +IPPROTO_RSVP = 46, +IPPROTO_GRE = 47, +IPPROTO_ESP = 50, +IPPROTO_AH = 51, +IPPROTO_MTP = 92, +IPPROTO_BEETPH = 94, +IPPROTO_ENCAP = 98, +IPPROTO_PIM = 103, +IPPROTO_COMP = 108, +IPPROTO_L2TP = 115, +IPPROTO_SCTP = 132, +IPPROTO_UDPLITE = 136, +IPPROTO_MPLS = 137, +IPPROTO_ETHERNET = 143, +IPPROTO_RAW = 255, +IPPROTO_MPTCP = 262, +IPPROTO_MAX = 263, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IPV4_DEVCONF_FORWARDING = 1, +IPV4_DEVCONF_MC_FORWARDING = 2, +IPV4_DEVCONF_PROXY_ARP = 3, +IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, +IPV4_DEVCONF_SECURE_REDIRECTS = 5, +IPV4_DEVCONF_SEND_REDIRECTS = 6, +IPV4_DEVCONF_SHARED_MEDIA = 7, +IPV4_DEVCONF_RP_FILTER = 8, +IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, +IPV4_DEVCONF_BOOTP_RELAY = 10, +IPV4_DEVCONF_LOG_MARTIANS = 11, +IPV4_DEVCONF_TAG = 12, +IPV4_DEVCONF_ARPFILTER = 13, +IPV4_DEVCONF_MEDIUM_ID = 14, +IPV4_DEVCONF_NOXFRM = 15, +IPV4_DEVCONF_NOPOLICY = 16, +IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, +IPV4_DEVCONF_ARP_ANNOUNCE = 18, +IPV4_DEVCONF_ARP_IGNORE = 19, +IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, +IPV4_DEVCONF_ARP_ACCEPT = 21, +IPV4_DEVCONF_ARP_NOTIFY = 22, +IPV4_DEVCONF_ACCEPT_LOCAL = 23, +IPV4_DEVCONF_SRC_VMARK = 24, +IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, +IPV4_DEVCONF_ROUTE_LOCALNET = 26, +IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, +IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, +IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, +IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, +IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, +IPV4_DEVCONF_BC_FORWARDING = 32, +IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, +__IPV4_DEVCONF_MAX = 34, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +DEVCONF_FORWARDING = 0, +DEVCONF_HOPLIMIT = 1, +DEVCONF_MTU6 = 2, +DEVCONF_ACCEPT_RA = 3, +DEVCONF_ACCEPT_REDIRECTS = 4, +DEVCONF_AUTOCONF = 5, +DEVCONF_DAD_TRANSMITS = 6, +DEVCONF_RTR_SOLICITS = 7, +DEVCONF_RTR_SOLICIT_INTERVAL = 8, +DEVCONF_RTR_SOLICIT_DELAY = 9, +DEVCONF_USE_TEMPADDR = 10, +DEVCONF_TEMP_VALID_LFT = 11, +DEVCONF_TEMP_PREFERED_LFT = 12, +DEVCONF_REGEN_MAX_RETRY = 13, +DEVCONF_MAX_DESYNC_FACTOR = 14, +DEVCONF_MAX_ADDRESSES = 15, +DEVCONF_FORCE_MLD_VERSION = 16, +DEVCONF_ACCEPT_RA_DEFRTR = 17, +DEVCONF_ACCEPT_RA_PINFO = 18, +DEVCONF_ACCEPT_RA_RTR_PREF = 19, +DEVCONF_RTR_PROBE_INTERVAL = 20, +DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, +DEVCONF_PROXY_NDP = 22, +DEVCONF_OPTIMISTIC_DAD = 23, +DEVCONF_ACCEPT_SOURCE_ROUTE = 24, +DEVCONF_MC_FORWARDING = 25, +DEVCONF_DISABLE_IPV6 = 26, +DEVCONF_ACCEPT_DAD = 27, +DEVCONF_FORCE_TLLAO = 28, +DEVCONF_NDISC_NOTIFY = 29, +DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, +DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, +DEVCONF_SUPPRESS_FRAG_NDISC = 32, +DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, +DEVCONF_USE_OPTIMISTIC = 34, +DEVCONF_ACCEPT_RA_MTU = 35, +DEVCONF_STABLE_SECRET = 36, +DEVCONF_USE_OIF_ADDRS_ONLY = 37, +DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, +DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, +DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, +DEVCONF_DROP_UNSOLICITED_NA = 41, +DEVCONF_KEEP_ADDR_ON_DOWN = 42, +DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, +DEVCONF_SEG6_ENABLED = 44, +DEVCONF_SEG6_REQUIRE_HMAC = 45, +DEVCONF_ENHANCED_DAD = 46, +DEVCONF_ADDR_GEN_MODE = 47, +DEVCONF_DISABLE_POLICY = 48, +DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, +DEVCONF_NDISC_TCLASS = 50, +DEVCONF_RPL_SEG_ENABLED = 51, +DEVCONF_RA_DEFRTR_METRIC = 52, +DEVCONF_IOAM6_ENABLED = 53, +DEVCONF_IOAM6_ID = 54, +DEVCONF_IOAM6_ID_WIDE = 55, +DEVCONF_NDISC_EVICT_NOCARRIER = 56, +DEVCONF_ACCEPT_UNTRACKED_NA = 57, +DEVCONF_MAX = 58, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum socket_state { +SS_FREE = 0, +SS_UNCONNECTED = 1, +SS_CONNECTING = 2, +SS_CONNECTED = 3, +SS_DISCONNECTING = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +TCP_FLAG_CWR = 8388608, +TCP_FLAG_ECE = 4194304, +TCP_FLAG_URG = 2097152, +TCP_FLAG_ACK = 1048576, +TCP_FLAG_PSH = 524288, +TCP_FLAG_RST = 262144, +TCP_FLAG_SYN = 131072, +TCP_FLAG_FIN = 65536, +TCP_RESERVED_BITS = 251658240, +TCP_DATA_OFFSET = 4026531840, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +TCP_NO_QUEUE = 0, +TCP_RECV_QUEUE = 1, +TCP_SEND_QUEUE = 2, +TCP_QUEUES_NR = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_fastopen_client_fail { +TFO_STATUS_UNSPEC = 0, +TFO_COOKIE_UNAVAILABLE = 1, +TFO_DATA_NOT_ACKED = 2, +TFO_SYN_RETRANSMITTED = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_ca_state { +TCP_CA_Open = 0, +TCP_CA_Disorder = 1, +TCP_CA_CWR = 2, +TCP_CA_Recovery = 3, +TCP_CA_Loss = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +TCP_NLA_PAD = 0, +TCP_NLA_BUSY = 1, +TCP_NLA_RWND_LIMITED = 2, +TCP_NLA_SNDBUF_LIMITED = 3, +TCP_NLA_DATA_SEGS_OUT = 4, +TCP_NLA_TOTAL_RETRANS = 5, +TCP_NLA_PACING_RATE = 6, +TCP_NLA_DELIVERY_RATE = 7, +TCP_NLA_SND_CWND = 8, +TCP_NLA_REORDERING = 9, +TCP_NLA_MIN_RTT = 10, +TCP_NLA_RECUR_RETRANS = 11, +TCP_NLA_DELIVERY_RATE_APP_LMT = 12, +TCP_NLA_SNDQ_SIZE = 13, +TCP_NLA_CA_STATE = 14, +TCP_NLA_SND_SSTHRESH = 15, +TCP_NLA_DELIVERED = 16, +TCP_NLA_DELIVERED_CE = 17, +TCP_NLA_BYTES_SENT = 18, +TCP_NLA_BYTES_RETRANS = 19, +TCP_NLA_DSACK_DUPS = 20, +TCP_NLA_REORD_SEEN = 21, +TCP_NLA_SRTT = 22, +TCP_NLA_TIMEOUT_REHASH = 23, +TCP_NLA_BYTES_NOTSENT = 24, +TCP_NLA_EDT = 25, +TCP_NLA_TTL = 26, +TCP_NLA_REHASH = 27, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union iphdr__bindgen_ty_1 { +pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union in6_addr__bindgen_ty_1 { +pub u6_addr8: [__u8; 16usize], +pub u6_addr16: [__be16; 8usize], +pub u6_addr32: [__be32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ipv6hdr__bindgen_ty_1 { +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union tcp_word_hdr { +pub hdr: tcphdr, +pub words: [__be32; 5usize], +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} +impl iphdr { +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn ihl(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_ihl(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; +ihl as u64 +}); +__bindgen_bitfield_unit +} +} +impl ipv6hdr { +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn priority(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_priority(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let priority: u8 = unsafe { ::core::mem::transmute(priority) }; +priority as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcphdr { +#[inline] +pub fn doff(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } +} +#[inline] +pub fn set_doff(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn res1(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } +} +#[inline] +pub fn set_res1(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn cwr(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } +} +#[inline] +pub fn set_cwr(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn ece(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } +} +#[inline] +pub fn set_ece(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 1u8, val as u64) +} +} +#[inline] +pub fn urg(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } +} +#[inline] +pub fn set_urg(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(10usize, 1u8, val as u64) +} +} +#[inline] +pub fn ack(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } +} +#[inline] +pub fn set_ack(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(11usize, 1u8, val as u64) +} +} +#[inline] +pub fn psh(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } +} +#[inline] +pub fn set_psh(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(12usize, 1u8, val as u64) +} +} +#[inline] +pub fn rst(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } +} +#[inline] +pub fn set_rst(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(13usize, 1u8, val as u64) +} +} +#[inline] +pub fn syn(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } +} +#[inline] +pub fn set_syn(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(14usize, 1u8, val as u64) +} +} +#[inline] +pub fn fin(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +} +#[inline] +pub fn set_fin(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(15usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let doff: u16 = unsafe { ::core::mem::transmute(doff) }; +doff as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let res1: u16 = unsafe { ::core::mem::transmute(res1) }; +res1 as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; +cwr as u64 +}); +__bindgen_bitfield_unit.set(9usize, 1u8, { +let ece: u16 = unsafe { ::core::mem::transmute(ece) }; +ece as u64 +}); +__bindgen_bitfield_unit.set(10usize, 1u8, { +let urg: u16 = unsafe { ::core::mem::transmute(urg) }; +urg as u64 +}); +__bindgen_bitfield_unit.set(11usize, 1u8, { +let ack: u16 = unsafe { ::core::mem::transmute(ack) }; +ack as u64 +}); +__bindgen_bitfield_unit.set(12usize, 1u8, { +let psh: u16 = unsafe { ::core::mem::transmute(psh) }; +psh as u64 +}); +__bindgen_bitfield_unit.set(13usize, 1u8, { +let rst: u16 = unsafe { ::core::mem::transmute(rst) }; +rst as u64 +}); +__bindgen_bitfield_unit.set(14usize, 1u8, { +let syn: u16 = unsafe { ::core::mem::transmute(syn) }; +syn as u64 +}); +__bindgen_bitfield_unit.set(15usize, 1u8, { +let fin: u16 = unsafe { ::core::mem::transmute(fin) }; +fin as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcp_info { +#[inline] +pub fn tcpi_snd_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_rcv_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +} +#[inline] +pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn tcpi_fastopen_client_fail(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +} +#[inline] +pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 2u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; +tcpi_snd_wscale as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; +tcpi_rcv_wscale as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; +tcpi_delivery_rate_app_limited as u64 +}); +__bindgen_bitfield_unit.set(9usize, 2u8, { +let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; +tcpi_fastopen_client_fail as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/prctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/prctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/prctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,227 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_suseconds_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_suseconds_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prctl_mm_map { +pub start_code: __u64, +pub end_code: __u64, +pub start_data: __u64, +pub end_data: __u64, +pub start_brk: __u64, +pub brk: __u64, +pub start_stack: __u64, +pub arg_start: __u64, +pub arg_end: __u64, +pub env_start: __u64, +pub env_end: __u64, +pub auxv: *mut __u64, +pub auxv_size: __u32, +pub exe_fd: __u32, +} +pub const PR_SET_PDEATHSIG: u32 = 1; +pub const PR_GET_PDEATHSIG: u32 = 2; +pub const PR_GET_DUMPABLE: u32 = 3; +pub const PR_SET_DUMPABLE: u32 = 4; +pub const PR_GET_UNALIGN: u32 = 5; +pub const PR_SET_UNALIGN: u32 = 6; +pub const PR_UNALIGN_NOPRINT: u32 = 1; +pub const PR_UNALIGN_SIGBUS: u32 = 2; +pub const PR_GET_KEEPCAPS: u32 = 7; +pub const PR_SET_KEEPCAPS: u32 = 8; +pub const PR_GET_FPEMU: u32 = 9; +pub const PR_SET_FPEMU: u32 = 10; +pub const PR_FPEMU_NOPRINT: u32 = 1; +pub const PR_FPEMU_SIGFPE: u32 = 2; +pub const PR_GET_FPEXC: u32 = 11; +pub const PR_SET_FPEXC: u32 = 12; +pub const PR_FP_EXC_SW_ENABLE: u32 = 128; +pub const PR_FP_EXC_DIV: u32 = 65536; +pub const PR_FP_EXC_OVF: u32 = 131072; +pub const PR_FP_EXC_UND: u32 = 262144; +pub const PR_FP_EXC_RES: u32 = 524288; +pub const PR_FP_EXC_INV: u32 = 1048576; +pub const PR_FP_EXC_DISABLED: u32 = 0; +pub const PR_FP_EXC_NONRECOV: u32 = 1; +pub const PR_FP_EXC_ASYNC: u32 = 2; +pub const PR_FP_EXC_PRECISE: u32 = 3; +pub const PR_GET_TIMING: u32 = 13; +pub const PR_SET_TIMING: u32 = 14; +pub const PR_TIMING_STATISTICAL: u32 = 0; +pub const PR_TIMING_TIMESTAMP: u32 = 1; +pub const PR_SET_NAME: u32 = 15; +pub const PR_GET_NAME: u32 = 16; +pub const PR_GET_ENDIAN: u32 = 19; +pub const PR_SET_ENDIAN: u32 = 20; +pub const PR_ENDIAN_BIG: u32 = 0; +pub const PR_ENDIAN_LITTLE: u32 = 1; +pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; +pub const PR_GET_SECCOMP: u32 = 21; +pub const PR_SET_SECCOMP: u32 = 22; +pub const PR_CAPBSET_READ: u32 = 23; +pub const PR_CAPBSET_DROP: u32 = 24; +pub const PR_GET_TSC: u32 = 25; +pub const PR_SET_TSC: u32 = 26; +pub const PR_TSC_ENABLE: u32 = 1; +pub const PR_TSC_SIGSEGV: u32 = 2; +pub const PR_GET_SECUREBITS: u32 = 27; +pub const PR_SET_SECUREBITS: u32 = 28; +pub const PR_SET_TIMERSLACK: u32 = 29; +pub const PR_GET_TIMERSLACK: u32 = 30; +pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; +pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; +pub const PR_MCE_KILL: u32 = 33; +pub const PR_MCE_KILL_CLEAR: u32 = 0; +pub const PR_MCE_KILL_SET: u32 = 1; +pub const PR_MCE_KILL_LATE: u32 = 0; +pub const PR_MCE_KILL_EARLY: u32 = 1; +pub const PR_MCE_KILL_DEFAULT: u32 = 2; +pub const PR_MCE_KILL_GET: u32 = 34; +pub const PR_SET_MM: u32 = 35; +pub const PR_SET_MM_START_CODE: u32 = 1; +pub const PR_SET_MM_END_CODE: u32 = 2; +pub const PR_SET_MM_START_DATA: u32 = 3; +pub const PR_SET_MM_END_DATA: u32 = 4; +pub const PR_SET_MM_START_STACK: u32 = 5; +pub const PR_SET_MM_START_BRK: u32 = 6; +pub const PR_SET_MM_BRK: u32 = 7; +pub const PR_SET_MM_ARG_START: u32 = 8; +pub const PR_SET_MM_ARG_END: u32 = 9; +pub const PR_SET_MM_ENV_START: u32 = 10; +pub const PR_SET_MM_ENV_END: u32 = 11; +pub const PR_SET_MM_AUXV: u32 = 12; +pub const PR_SET_MM_EXE_FILE: u32 = 13; +pub const PR_SET_MM_MAP: u32 = 14; +pub const PR_SET_MM_MAP_SIZE: u32 = 15; +pub const PR_SET_PTRACER: u32 = 1499557217; +pub const PR_SET_CHILD_SUBREAPER: u32 = 36; +pub const PR_GET_CHILD_SUBREAPER: u32 = 37; +pub const PR_SET_NO_NEW_PRIVS: u32 = 38; +pub const PR_GET_NO_NEW_PRIVS: u32 = 39; +pub const PR_GET_TID_ADDRESS: u32 = 40; +pub const PR_SET_THP_DISABLE: u32 = 41; +pub const PR_GET_THP_DISABLE: u32 = 42; +pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; +pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; +pub const PR_SET_FP_MODE: u32 = 45; +pub const PR_GET_FP_MODE: u32 = 46; +pub const PR_FP_MODE_FR: u32 = 1; +pub const PR_FP_MODE_FRE: u32 = 2; +pub const PR_CAP_AMBIENT: u32 = 47; +pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; +pub const PR_CAP_AMBIENT_RAISE: u32 = 2; +pub const PR_CAP_AMBIENT_LOWER: u32 = 3; +pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; +pub const PR_SVE_SET_VL: u32 = 50; +pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SVE_GET_VL: u32 = 51; +pub const PR_SVE_VL_LEN_MASK: u32 = 65535; +pub const PR_SVE_VL_INHERIT: u32 = 131072; +pub const PR_GET_SPECULATION_CTRL: u32 = 52; +pub const PR_SET_SPECULATION_CTRL: u32 = 53; +pub const PR_SPEC_STORE_BYPASS: u32 = 0; +pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; +pub const PR_SPEC_L1D_FLUSH: u32 = 2; +pub const PR_SPEC_NOT_AFFECTED: u32 = 0; +pub const PR_SPEC_PRCTL: u32 = 1; +pub const PR_SPEC_ENABLE: u32 = 2; +pub const PR_SPEC_DISABLE: u32 = 4; +pub const PR_SPEC_FORCE_DISABLE: u32 = 8; +pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; +pub const PR_PAC_RESET_KEYS: u32 = 54; +pub const PR_PAC_APIAKEY: u32 = 1; +pub const PR_PAC_APIBKEY: u32 = 2; +pub const PR_PAC_APDAKEY: u32 = 4; +pub const PR_PAC_APDBKEY: u32 = 8; +pub const PR_PAC_APGAKEY: u32 = 16; +pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; +pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; +pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; +pub const PR_MTE_TCF_NONE: u32 = 0; +pub const PR_MTE_TCF_SYNC: u32 = 2; +pub const PR_MTE_TCF_ASYNC: u32 = 4; +pub const PR_MTE_TCF_MASK: u32 = 6; +pub const PR_MTE_TAG_SHIFT: u32 = 3; +pub const PR_MTE_TAG_MASK: u32 = 524280; +pub const PR_MTE_TCF_SHIFT: u32 = 1; +pub const PR_SET_IO_FLUSHER: u32 = 57; +pub const PR_GET_IO_FLUSHER: u32 = 58; +pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; +pub const PR_SYS_DISPATCH_OFF: u32 = 0; +pub const PR_SYS_DISPATCH_ON: u32 = 1; +pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; +pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; +pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; +pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; +pub const PR_SCHED_CORE: u32 = 62; +pub const PR_SCHED_CORE_GET: u32 = 0; +pub const PR_SCHED_CORE_CREATE: u32 = 1; +pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; +pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; +pub const PR_SCHED_CORE_MAX: u32 = 4; +pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; +pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; +pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; +pub const PR_SME_SET_VL: u32 = 63; +pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SME_GET_VL: u32 = 64; +pub const PR_SME_VL_LEN_MASK: u32 = 65535; +pub const PR_SME_VL_INHERIT: u32 = 131072; +pub const PR_SET_MDWE: u32 = 65; +pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; +pub const PR_GET_MDWE: u32 = 66; +pub const PR_SET_VMA: u32 = 1398164801; +pub const PR_SET_VMA_ANON_NAME: u32 = 0; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/system.rs temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/system.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/sparc64/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,135 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_suseconds_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_dev_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_suseconds_t, +} +#[repr(C)] +#[derive(Debug)] +pub struct sysinfo { +pub uptime: __kernel_long_t, +pub loads: [__kernel_ulong_t; 3usize], +pub totalram: __kernel_ulong_t, +pub freeram: __kernel_ulong_t, +pub sharedram: __kernel_ulong_t, +pub bufferram: __kernel_ulong_t, +pub totalswap: __kernel_ulong_t, +pub freeswap: __kernel_ulong_t, +pub procs: __u16, +pub pad: __u16, +pub totalhigh: __kernel_ulong_t, +pub freehigh: __kernel_ulong_t, +pub mem_unit: __u32, +pub _f: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct oldold_utsname { +pub sysname: [crate::ctypes::c_char; 9usize], +pub nodename: [crate::ctypes::c_char; 9usize], +pub release: [crate::ctypes::c_char; 9usize], +pub version: [crate::ctypes::c_char; 9usize], +pub machine: [crate::ctypes::c_char; 9usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct old_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct new_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +pub domainname: [crate::ctypes::c_char; 65usize], +} +pub const SI_LOAD_SHIFT: u32 = 16; +pub const __OLD_UTS_LEN: u32 = 8; +pub const __NEW_UTS_LEN: u32 = 64; +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x32/errno.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x32/errno.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x32/errno.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x32/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const EPERM: u32 = 1; pub const ENOENT: u32 = 2; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x32/general.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x32/general.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x32/general.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x32/general.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,2790 +1,224 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_sighandler_t = ::core::option::Option; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_longlong; +pub type __kernel_ulong_t = crate::ctypes::c_ulonglong; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type cap_user_header_t = *mut __user_cap_header_struct; +pub type cap_user_data_t = *mut __user_cap_data_struct; +pub type __kernel_rwf_t = crate::ctypes::c_int; +pub type sigset_t = crate::ctypes::c_ulong; +pub type __signalfn_t = ::core::option::Option; +pub type __sighandler_t = __signalfn_t; +pub type __restorefn_t = ::core::option::Option; +pub type __sigrestore_t = __restorefn_t; +pub type stack_t = sigaltstack; +pub type __kernel_si_clock_t = crate::ctypes::c_longlong; +pub type sigval_t = sigval; +pub type siginfo_t = siginfo; +pub type sigevent_t = sigevent; +pub type cc_t = crate::ctypes::c_uchar; +pub type speed_t = crate::ctypes::c_uint; +pub type tcflag_t = crate::ctypes::c_uint; +pub type __fsword_t = __u32; #[repr(C)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct __BindgenBitfieldUnit { storage: Storage, } -impl __BindgenBitfieldUnit { -#[inline] -pub const fn new(storage: Storage) -> Self { -Self { storage } -} -} -impl __BindgenBitfieldUnit -where -Storage: AsRef<[u8]> + AsMut<[u8]>, -{ -#[inline] -pub fn get_bit(&self, index: usize) -> bool { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = self.storage.as_ref()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -byte & mask == mask -} -#[inline] -pub fn set_bit(&mut self, index: usize, val: bool) { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = &mut self.storage.as_mut()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -if val { -*byte |= mask; -} else { -*byte &= !mask; -} -} -#[inline] -pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -let mut val = 0; -for i in 0..(bit_width as usize) { -if self.get_bit(i + bit_offset) { -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -val |= 1 << index; -} -} -val -} -#[inline] -pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -for i in 0..(bit_width as usize) { -let mask = 1 << i; -let val_bit_is_set = val & mask == mask; -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -self.set_bit(index + bit_offset, val_bit_is_set); -} -} -} #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fd_set { +pub fds_bits: [crate::ctypes::c_ulong; 32usize], } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fsid_t { +pub val: [crate::ctypes::c_int; 2usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_header_struct { +pub version: __u32, +pub pid: crate::ctypes::c_int, } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_data_struct { +pub effective: __u32, +pub permitted: __u32, +pub inheritable: __u32, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data { +pub magic_etc: __le32, +pub data: [vfs_cap_data__bindgen_ty_1; 2usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data { +pub magic_etc: __le32, +pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], +pub rootid: __le32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } #[repr(C)] -pub struct __BindgenUnionField(::core::marker::PhantomData); -impl __BindgenUnionField { -#[inline] -pub const fn new() -> Self { -__BindgenUnionField(::core::marker::PhantomData) +#[derive(Debug, Copy, Clone)] +pub struct f_owner_ex { +pub type_: crate::ctypes::c_int, +pub pid: __kernel_pid_t, } -#[inline] -pub unsafe fn as_ref(&self) -> &T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_off_t, +pub l_len: __kernel_off_t, +pub l_pid: __kernel_pid_t, } -#[inline] -pub unsafe fn as_mut(&mut self) -> &mut T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock64 { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_loff_t, +pub l_len: __kernel_loff_t, +pub l_pid: __kernel_pid_t, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct open_how { +pub flags: __u64, +pub mode: __u64, +pub resolve: __u64, } -impl ::core::default::Default for __BindgenUnionField { -#[inline] -fn default() -> Self { -Self::new() +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct epoll_event { +pub events: __poll_t, +pub data: __u64, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], } -impl ::core::clone::Clone for __BindgenUnionField { -#[inline] -fn clone(&self) -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], } -impl ::core::marker::Copy for __BindgenUnionField {} -impl ::core::fmt::Debug for __BindgenUnionField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__BindgenUnionField") +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, } -impl ::core::hash::Hash for __BindgenUnionField { -fn hash(&self, _state: &mut H) {} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, } -impl ::core::cmp::PartialEq for __BindgenUnionField { -fn eq(&self, _other: &__BindgenUnionField) -> bool { -true +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, } -} -impl ::core::cmp::Eq for __BindgenUnionField {} -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const AT_SYSINFO_EHDR: u32 = 33; -pub const AT_VECTOR_SIZE_ARCH: u32 = 3; -pub const AT_NULL: u32 = 0; -pub const AT_IGNORE: u32 = 1; -pub const AT_EXECFD: u32 = 2; -pub const AT_PHDR: u32 = 3; -pub const AT_PHENT: u32 = 4; -pub const AT_PHNUM: u32 = 5; -pub const AT_PAGESZ: u32 = 6; -pub const AT_BASE: u32 = 7; -pub const AT_FLAGS: u32 = 8; -pub const AT_ENTRY: u32 = 9; -pub const AT_NOTELF: u32 = 10; -pub const AT_UID: u32 = 11; -pub const AT_EUID: u32 = 12; -pub const AT_GID: u32 = 13; -pub const AT_EGID: u32 = 14; -pub const AT_PLATFORM: u32 = 15; -pub const AT_HWCAP: u32 = 16; -pub const AT_CLKTCK: u32 = 17; -pub const AT_SECURE: u32 = 23; -pub const AT_BASE_PLATFORM: u32 = 24; -pub const AT_RANDOM: u32 = 25; -pub const AT_HWCAP2: u32 = 26; -pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; -pub const AT_RSEQ_ALIGN: u32 = 28; -pub const AT_EXECFN: u32 = 31; -pub const AT_MINSIGSTKSZ: u32 = 51; -pub const __BITS_PER_LONG: u32 = 32; -pub const __FD_SETSIZE: u32 = 1024; -pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; -pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; -pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; -pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; -pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; -pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; -pub const VFS_CAP_REVISION_SHIFT: u32 = 24; -pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; -pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; -pub const VFS_CAP_REVISION_1: u32 = 16777216; -pub const VFS_CAP_U32_1: u32 = 1; -pub const VFS_CAP_REVISION_2: u32 = 33554432; -pub const VFS_CAP_U32_2: u32 = 2; -pub const VFS_CAP_REVISION_3: u32 = 50331648; -pub const VFS_CAP_U32_3: u32 = 2; -pub const VFS_CAP_U32: u32 = 2; -pub const VFS_CAP_REVISION: u32 = 50331648; -pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S: u32 = 1; -pub const CAP_CHOWN: u32 = 0; -pub const CAP_DAC_OVERRIDE: u32 = 1; -pub const CAP_DAC_READ_SEARCH: u32 = 2; -pub const CAP_FOWNER: u32 = 3; -pub const CAP_FSETID: u32 = 4; -pub const CAP_KILL: u32 = 5; -pub const CAP_SETGID: u32 = 6; -pub const CAP_SETUID: u32 = 7; -pub const CAP_SETPCAP: u32 = 8; -pub const CAP_LINUX_IMMUTABLE: u32 = 9; -pub const CAP_NET_BIND_SERVICE: u32 = 10; -pub const CAP_NET_BROADCAST: u32 = 11; -pub const CAP_NET_ADMIN: u32 = 12; -pub const CAP_NET_RAW: u32 = 13; -pub const CAP_IPC_LOCK: u32 = 14; -pub const CAP_IPC_OWNER: u32 = 15; -pub const CAP_SYS_MODULE: u32 = 16; -pub const CAP_SYS_RAWIO: u32 = 17; -pub const CAP_SYS_CHROOT: u32 = 18; -pub const CAP_SYS_PTRACE: u32 = 19; -pub const CAP_SYS_PACCT: u32 = 20; -pub const CAP_SYS_ADMIN: u32 = 21; -pub const CAP_SYS_BOOT: u32 = 22; -pub const CAP_SYS_NICE: u32 = 23; -pub const CAP_SYS_RESOURCE: u32 = 24; -pub const CAP_SYS_TIME: u32 = 25; -pub const CAP_SYS_TTY_CONFIG: u32 = 26; -pub const CAP_MKNOD: u32 = 27; -pub const CAP_LEASE: u32 = 28; -pub const CAP_AUDIT_WRITE: u32 = 29; -pub const CAP_AUDIT_CONTROL: u32 = 30; -pub const CAP_SETFCAP: u32 = 31; -pub const CAP_MAC_OVERRIDE: u32 = 32; -pub const CAP_MAC_ADMIN: u32 = 33; -pub const CAP_SYSLOG: u32 = 34; -pub const CAP_WAKE_ALARM: u32 = 35; -pub const CAP_BLOCK_SUSPEND: u32 = 36; -pub const CAP_AUDIT_READ: u32 = 37; -pub const CAP_PERFMON: u32 = 38; -pub const CAP_BPF: u32 = 39; -pub const CAP_CHECKPOINT_RESTORE: u32 = 40; -pub const CAP_LAST_CAP: u32 = 40; -pub const O_ACCMODE: u32 = 3; -pub const O_RDONLY: u32 = 0; -pub const O_WRONLY: u32 = 1; -pub const O_RDWR: u32 = 2; -pub const O_CREAT: u32 = 64; -pub const O_EXCL: u32 = 128; -pub const O_NOCTTY: u32 = 256; -pub const O_TRUNC: u32 = 512; -pub const O_APPEND: u32 = 1024; -pub const O_NONBLOCK: u32 = 2048; -pub const O_DSYNC: u32 = 4096; -pub const FASYNC: u32 = 8192; -pub const O_DIRECT: u32 = 16384; -pub const O_LARGEFILE: u32 = 32768; -pub const O_DIRECTORY: u32 = 65536; -pub const O_NOFOLLOW: u32 = 131072; -pub const O_NOATIME: u32 = 262144; -pub const O_CLOEXEC: u32 = 524288; -pub const __O_SYNC: u32 = 1048576; -pub const O_SYNC: u32 = 1052672; -pub const O_PATH: u32 = 2097152; -pub const __O_TMPFILE: u32 = 4194304; -pub const O_TMPFILE: u32 = 4259840; -pub const O_TMPFILE_MASK: u32 = 4259904; -pub const O_NDELAY: u32 = 2048; -pub const F_DUPFD: u32 = 0; -pub const F_GETFD: u32 = 1; -pub const F_SETFD: u32 = 2; -pub const F_GETFL: u32 = 3; -pub const F_SETFL: u32 = 4; -pub const F_GETLK: u32 = 5; -pub const F_SETLK: u32 = 6; -pub const F_SETLKW: u32 = 7; -pub const F_SETOWN: u32 = 8; -pub const F_GETOWN: u32 = 9; -pub const F_SETSIG: u32 = 10; -pub const F_GETSIG: u32 = 11; -pub const F_GETLK64: u32 = 12; -pub const F_SETLK64: u32 = 13; -pub const F_SETLKW64: u32 = 14; -pub const F_SETOWN_EX: u32 = 15; -pub const F_GETOWN_EX: u32 = 16; -pub const F_GETOWNER_UIDS: u32 = 17; -pub const F_OFD_GETLK: u32 = 36; -pub const F_OFD_SETLK: u32 = 37; -pub const F_OFD_SETLKW: u32 = 38; -pub const F_OWNER_TID: u32 = 0; -pub const F_OWNER_PID: u32 = 1; -pub const F_OWNER_PGRP: u32 = 2; -pub const FD_CLOEXEC: u32 = 1; -pub const F_RDLCK: u32 = 0; -pub const F_WRLCK: u32 = 1; -pub const F_UNLCK: u32 = 2; -pub const F_EXLCK: u32 = 4; -pub const F_SHLCK: u32 = 8; -pub const LOCK_SH: u32 = 1; -pub const LOCK_EX: u32 = 2; -pub const LOCK_NB: u32 = 4; -pub const LOCK_UN: u32 = 8; -pub const LOCK_MAND: u32 = 32; -pub const LOCK_READ: u32 = 64; -pub const LOCK_WRITE: u32 = 128; -pub const LOCK_RW: u32 = 192; -pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; -pub const RESOLVE_NO_XDEV: u32 = 1; -pub const RESOLVE_NO_MAGICLINKS: u32 = 2; -pub const RESOLVE_NO_SYMLINKS: u32 = 4; -pub const RESOLVE_BENEATH: u32 = 8; -pub const RESOLVE_IN_ROOT: u32 = 16; -pub const RESOLVE_CACHED: u32 = 32; -pub const F_SETLEASE: u32 = 1024; -pub const F_GETLEASE: u32 = 1025; -pub const F_CANCELLK: u32 = 1029; -pub const F_DUPFD_CLOEXEC: u32 = 1030; -pub const F_NOTIFY: u32 = 1026; -pub const F_SETPIPE_SZ: u32 = 1031; -pub const F_GETPIPE_SZ: u32 = 1032; -pub const F_ADD_SEALS: u32 = 1033; -pub const F_GET_SEALS: u32 = 1034; -pub const F_SEAL_SEAL: u32 = 1; -pub const F_SEAL_SHRINK: u32 = 2; -pub const F_SEAL_GROW: u32 = 4; -pub const F_SEAL_WRITE: u32 = 8; -pub const F_SEAL_FUTURE_WRITE: u32 = 16; -pub const F_SEAL_EXEC: u32 = 32; -pub const F_GET_RW_HINT: u32 = 1035; -pub const F_SET_RW_HINT: u32 = 1036; -pub const F_GET_FILE_RW_HINT: u32 = 1037; -pub const F_SET_FILE_RW_HINT: u32 = 1038; -pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; -pub const RWH_WRITE_LIFE_NONE: u32 = 1; -pub const RWH_WRITE_LIFE_SHORT: u32 = 2; -pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; -pub const RWH_WRITE_LIFE_LONG: u32 = 4; -pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; -pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; -pub const DN_ACCESS: u32 = 1; -pub const DN_MODIFY: u32 = 2; -pub const DN_CREATE: u32 = 4; -pub const DN_DELETE: u32 = 8; -pub const DN_RENAME: u32 = 16; -pub const DN_ATTRIB: u32 = 32; -pub const DN_MULTISHOT: u32 = 2147483648; -pub const AT_FDCWD: i32 = -100; -pub const AT_SYMLINK_NOFOLLOW: u32 = 256; -pub const AT_EACCESS: u32 = 512; -pub const AT_REMOVEDIR: u32 = 512; -pub const AT_SYMLINK_FOLLOW: u32 = 1024; -pub const AT_NO_AUTOMOUNT: u32 = 2048; -pub const AT_EMPTY_PATH: u32 = 4096; -pub const AT_STATX_SYNC_TYPE: u32 = 24576; -pub const AT_STATX_SYNC_AS_STAT: u32 = 0; -pub const AT_STATX_FORCE_SYNC: u32 = 8192; -pub const AT_STATX_DONT_SYNC: u32 = 16384; -pub const AT_RECURSIVE: u32 = 32768; -pub const EPOLL_CLOEXEC: u32 = 524288; -pub const EPOLL_CTL_ADD: u32 = 1; -pub const EPOLL_CTL_DEL: u32 = 2; -pub const EPOLL_CTL_MOD: u32 = 3; -pub const POSIX_FADV_NORMAL: u32 = 0; -pub const POSIX_FADV_RANDOM: u32 = 1; -pub const POSIX_FADV_SEQUENTIAL: u32 = 2; -pub const POSIX_FADV_WILLNEED: u32 = 3; -pub const POSIX_FADV_DONTNEED: u32 = 4; -pub const POSIX_FADV_NOREUSE: u32 = 5; -pub const FALLOC_FL_KEEP_SIZE: u32 = 1; -pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; -pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; -pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; -pub const FALLOC_FL_ZERO_RANGE: u32 = 16; -pub const FALLOC_FL_INSERT_RANGE: u32 = 32; -pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; -pub const NR_OPEN: u32 = 1024; -pub const NGROUPS_MAX: u32 = 65536; -pub const ARG_MAX: u32 = 131072; -pub const LINK_MAX: u32 = 127; -pub const MAX_CANON: u32 = 255; -pub const MAX_INPUT: u32 = 255; -pub const NAME_MAX: u32 = 255; -pub const PATH_MAX: u32 = 4096; -pub const PIPE_BUF: u32 = 4096; -pub const XATTR_NAME_MAX: u32 = 255; -pub const XATTR_SIZE_MAX: u32 = 65536; -pub const XATTR_LIST_MAX: u32 = 65536; -pub const RTSIG_MAX: u32 = 32; -pub const _IOC_NRBITS: u32 = 8; -pub const _IOC_TYPEBITS: u32 = 8; -pub const _IOC_SIZEBITS: u32 = 14; -pub const _IOC_DIRBITS: u32 = 2; -pub const _IOC_NRMASK: u32 = 255; -pub const _IOC_TYPEMASK: u32 = 255; -pub const _IOC_SIZEMASK: u32 = 16383; -pub const _IOC_DIRMASK: u32 = 3; -pub const _IOC_NRSHIFT: u32 = 0; -pub const _IOC_TYPESHIFT: u32 = 8; -pub const _IOC_SIZESHIFT: u32 = 16; -pub const _IOC_DIRSHIFT: u32 = 30; -pub const _IOC_NONE: u32 = 0; -pub const _IOC_WRITE: u32 = 1; -pub const _IOC_READ: u32 = 2; -pub const IOC_IN: u32 = 1073741824; -pub const IOC_OUT: u32 = 2147483648; -pub const IOC_INOUT: u32 = 3221225472; -pub const IOCSIZE_MASK: u32 = 1073676288; -pub const IOCSIZE_SHIFT: u32 = 16; -pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; -pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; -pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; -pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; -pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; -pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; -pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; -pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; -pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; -pub const FSCRYPT_POLICY_V1: u32 = 0; -pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; -pub const FSCRYPT_POLICY_V2: u32 = 2; -pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; -pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; -pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; -pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; -pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; -pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; -pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; -pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FS_POLICY_FLAGS_VALID: u32 = 7; -pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; -pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; -pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; -pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; -pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; -pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; -pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; -pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; -pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FS_MAX_KEY_SIZE: u32 = 64; -pub const MS_RDONLY: u32 = 1; -pub const MS_NOSUID: u32 = 2; -pub const MS_NODEV: u32 = 4; -pub const MS_NOEXEC: u32 = 8; -pub const MS_SYNCHRONOUS: u32 = 16; -pub const MS_REMOUNT: u32 = 32; -pub const MS_MANDLOCK: u32 = 64; -pub const MS_DIRSYNC: u32 = 128; -pub const MS_NOSYMFOLLOW: u32 = 256; -pub const MS_NOATIME: u32 = 1024; -pub const MS_NODIRATIME: u32 = 2048; -pub const MS_BIND: u32 = 4096; -pub const MS_MOVE: u32 = 8192; -pub const MS_REC: u32 = 16384; -pub const MS_VERBOSE: u32 = 32768; -pub const MS_SILENT: u32 = 32768; -pub const MS_POSIXACL: u32 = 65536; -pub const MS_UNBINDABLE: u32 = 131072; -pub const MS_PRIVATE: u32 = 262144; -pub const MS_SLAVE: u32 = 524288; -pub const MS_SHARED: u32 = 1048576; -pub const MS_RELATIME: u32 = 2097152; -pub const MS_KERNMOUNT: u32 = 4194304; -pub const MS_I_VERSION: u32 = 8388608; -pub const MS_STRICTATIME: u32 = 16777216; -pub const MS_LAZYTIME: u32 = 33554432; -pub const MS_SUBMOUNT: u32 = 67108864; -pub const MS_NOREMOTELOCK: u32 = 134217728; -pub const MS_NOSEC: u32 = 268435456; -pub const MS_BORN: u32 = 536870912; -pub const MS_ACTIVE: u32 = 1073741824; -pub const MS_NOUSER: u32 = 2147483648; -pub const MS_RMT_MASK: u32 = 41943121; -pub const MS_MGC_VAL: u32 = 3236757504; -pub const MS_MGC_MSK: u32 = 4294901760; -pub const OPEN_TREE_CLONE: u32 = 1; -pub const OPEN_TREE_CLOEXEC: u32 = 524288; -pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; -pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; -pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; -pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; -pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; -pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; -pub const MOVE_MOUNT_SET_GROUP: u32 = 256; -pub const MOVE_MOUNT__MASK: u32 = 375; -pub const FSOPEN_CLOEXEC: u32 = 1; -pub const FSPICK_CLOEXEC: u32 = 1; -pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; -pub const FSPICK_NO_AUTOMOUNT: u32 = 4; -pub const FSPICK_EMPTY_PATH: u32 = 8; -pub const FSMOUNT_CLOEXEC: u32 = 1; -pub const MOUNT_ATTR_RDONLY: u32 = 1; -pub const MOUNT_ATTR_NOSUID: u32 = 2; -pub const MOUNT_ATTR_NODEV: u32 = 4; -pub const MOUNT_ATTR_NOEXEC: u32 = 8; -pub const MOUNT_ATTR__ATIME: u32 = 112; -pub const MOUNT_ATTR_RELATIME: u32 = 0; -pub const MOUNT_ATTR_NOATIME: u32 = 16; -pub const MOUNT_ATTR_STRICTATIME: u32 = 32; -pub const MOUNT_ATTR_NODIRATIME: u32 = 128; -pub const MOUNT_ATTR_IDMAP: u32 = 1048576; -pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; -pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; -pub const INR_OPEN_CUR: u32 = 1024; -pub const INR_OPEN_MAX: u32 = 4096; -pub const BLOCK_SIZE_BITS: u32 = 10; -pub const BLOCK_SIZE: u32 = 1024; -pub const SEEK_SET: u32 = 0; -pub const SEEK_CUR: u32 = 1; -pub const SEEK_END: u32 = 2; -pub const SEEK_DATA: u32 = 3; -pub const SEEK_HOLE: u32 = 4; -pub const SEEK_MAX: u32 = 4; -pub const RENAME_NOREPLACE: u32 = 1; -pub const RENAME_EXCHANGE: u32 = 2; -pub const RENAME_WHITEOUT: u32 = 4; -pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; -pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; -pub const NR_FILE: u32 = 8192; -pub const FS_XFLAG_REALTIME: u32 = 1; -pub const FS_XFLAG_PREALLOC: u32 = 2; -pub const FS_XFLAG_IMMUTABLE: u32 = 8; -pub const FS_XFLAG_APPEND: u32 = 16; -pub const FS_XFLAG_SYNC: u32 = 32; -pub const FS_XFLAG_NOATIME: u32 = 64; -pub const FS_XFLAG_NODUMP: u32 = 128; -pub const FS_XFLAG_RTINHERIT: u32 = 256; -pub const FS_XFLAG_PROJINHERIT: u32 = 512; -pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; -pub const FS_XFLAG_EXTSIZE: u32 = 2048; -pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; -pub const FS_XFLAG_NODEFRAG: u32 = 8192; -pub const FS_XFLAG_FILESTREAM: u32 = 16384; -pub const FS_XFLAG_DAX: u32 = 32768; -pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; -pub const FS_XFLAG_HASATTR: u32 = 2147483648; -pub const BMAP_IOCTL: u32 = 1; -pub const FSLABEL_MAX: u32 = 256; -pub const FS_SECRM_FL: u32 = 1; -pub const FS_UNRM_FL: u32 = 2; -pub const FS_COMPR_FL: u32 = 4; -pub const FS_SYNC_FL: u32 = 8; -pub const FS_IMMUTABLE_FL: u32 = 16; -pub const FS_APPEND_FL: u32 = 32; -pub const FS_NODUMP_FL: u32 = 64; -pub const FS_NOATIME_FL: u32 = 128; -pub const FS_DIRTY_FL: u32 = 256; -pub const FS_COMPRBLK_FL: u32 = 512; -pub const FS_NOCOMP_FL: u32 = 1024; -pub const FS_ENCRYPT_FL: u32 = 2048; -pub const FS_BTREE_FL: u32 = 4096; -pub const FS_INDEX_FL: u32 = 4096; -pub const FS_IMAGIC_FL: u32 = 8192; -pub const FS_JOURNAL_DATA_FL: u32 = 16384; -pub const FS_NOTAIL_FL: u32 = 32768; -pub const FS_DIRSYNC_FL: u32 = 65536; -pub const FS_TOPDIR_FL: u32 = 131072; -pub const FS_HUGE_FILE_FL: u32 = 262144; -pub const FS_EXTENT_FL: u32 = 524288; -pub const FS_VERITY_FL: u32 = 1048576; -pub const FS_EA_INODE_FL: u32 = 2097152; -pub const FS_EOFBLOCKS_FL: u32 = 4194304; -pub const FS_NOCOW_FL: u32 = 8388608; -pub const FS_DAX_FL: u32 = 33554432; -pub const FS_INLINE_DATA_FL: u32 = 268435456; -pub const FS_PROJINHERIT_FL: u32 = 536870912; -pub const FS_CASEFOLD_FL: u32 = 1073741824; -pub const FS_RESERVED_FL: u32 = 2147483648; -pub const FS_FL_USER_VISIBLE: u32 = 253951; -pub const FS_FL_USER_MODIFIABLE: u32 = 229631; -pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; -pub const SYNC_FILE_RANGE_WRITE: u32 = 2; -pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; -pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; -pub const FUTEX_WAIT: u32 = 0; -pub const FUTEX_WAKE: u32 = 1; -pub const FUTEX_FD: u32 = 2; -pub const FUTEX_REQUEUE: u32 = 3; -pub const FUTEX_CMP_REQUEUE: u32 = 4; -pub const FUTEX_WAKE_OP: u32 = 5; -pub const FUTEX_LOCK_PI: u32 = 6; -pub const FUTEX_UNLOCK_PI: u32 = 7; -pub const FUTEX_TRYLOCK_PI: u32 = 8; -pub const FUTEX_WAIT_BITSET: u32 = 9; -pub const FUTEX_WAKE_BITSET: u32 = 10; -pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; -pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; -pub const FUTEX_LOCK_PI2: u32 = 13; -pub const FUTEX_PRIVATE_FLAG: u32 = 128; -pub const FUTEX_CLOCK_REALTIME: u32 = 256; -pub const FUTEX_CMD_MASK: i32 = -385; -pub const FUTEX_WAIT_PRIVATE: u32 = 128; -pub const FUTEX_WAKE_PRIVATE: u32 = 129; -pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; -pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; -pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; -pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; -pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; -pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; -pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; -pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; -pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; -pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; -pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; -pub const FUTEX_32: u32 = 2; -pub const FUTEX_WAITV_MAX: u32 = 128; -pub const FUTEX_WAITERS: u32 = 2147483648; -pub const FUTEX_OWNER_DIED: u32 = 1073741824; -pub const FUTEX_TID_MASK: u32 = 1073741823; -pub const ROBUST_LIST_LIMIT: u32 = 2048; -pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; -pub const FUTEX_OP_SET: u32 = 0; -pub const FUTEX_OP_ADD: u32 = 1; -pub const FUTEX_OP_OR: u32 = 2; -pub const FUTEX_OP_ANDN: u32 = 3; -pub const FUTEX_OP_XOR: u32 = 4; -pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; -pub const FUTEX_OP_CMP_EQ: u32 = 0; -pub const FUTEX_OP_CMP_NE: u32 = 1; -pub const FUTEX_OP_CMP_LT: u32 = 2; -pub const FUTEX_OP_CMP_LE: u32 = 3; -pub const FUTEX_OP_CMP_GT: u32 = 4; -pub const FUTEX_OP_CMP_GE: u32 = 5; -pub const __UAPI_DEF_IF_IFCONF: u32 = 1; -pub const __UAPI_DEF_IF_IFMAP: u32 = 1; -pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1; -pub const __UAPI_DEF_IF_IFREQ: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1; -pub const __UAPI_DEF_IN_ADDR: u32 = 1; -pub const __UAPI_DEF_IN_IPPROTO: u32 = 1; -pub const __UAPI_DEF_IN_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP_MREQ: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1; -pub const __UAPI_DEF_IN_CLASS: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1; -pub const __UAPI_DEF_IPV6_MREQ: u32 = 1; -pub const __UAPI_DEF_IPPROTO_V6: u32 = 1; -pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1; -pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1; -pub const __UAPI_DEF_XATTR: u32 = 1; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const IP_TOS: u32 = 1; -pub const IP_TTL: u32 = 2; -pub const IP_HDRINCL: u32 = 3; -pub const IP_OPTIONS: u32 = 4; -pub const IP_ROUTER_ALERT: u32 = 5; -pub const IP_RECVOPTS: u32 = 6; -pub const IP_RETOPTS: u32 = 7; -pub const IP_PKTINFO: u32 = 8; -pub const IP_PKTOPTIONS: u32 = 9; -pub const IP_MTU_DISCOVER: u32 = 10; -pub const IP_RECVERR: u32 = 11; -pub const IP_RECVTTL: u32 = 12; -pub const IP_RECVTOS: u32 = 13; -pub const IP_MTU: u32 = 14; -pub const IP_FREEBIND: u32 = 15; -pub const IP_IPSEC_POLICY: u32 = 16; -pub const IP_XFRM_POLICY: u32 = 17; -pub const IP_PASSSEC: u32 = 18; -pub const IP_TRANSPARENT: u32 = 19; -pub const IP_RECVRETOPTS: u32 = 7; -pub const IP_ORIGDSTADDR: u32 = 20; -pub const IP_RECVORIGDSTADDR: u32 = 20; -pub const IP_MINTTL: u32 = 21; -pub const IP_NODEFRAG: u32 = 22; -pub const IP_CHECKSUM: u32 = 23; -pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; -pub const IP_RECVFRAGSIZE: u32 = 25; -pub const IP_RECVERR_RFC4884: u32 = 26; -pub const IP_PMTUDISC_DONT: u32 = 0; -pub const IP_PMTUDISC_WANT: u32 = 1; -pub const IP_PMTUDISC_DO: u32 = 2; -pub const IP_PMTUDISC_PROBE: u32 = 3; -pub const IP_PMTUDISC_INTERFACE: u32 = 4; -pub const IP_PMTUDISC_OMIT: u32 = 5; -pub const IP_MULTICAST_IF: u32 = 32; -pub const IP_MULTICAST_TTL: u32 = 33; -pub const IP_MULTICAST_LOOP: u32 = 34; -pub const IP_ADD_MEMBERSHIP: u32 = 35; -pub const IP_DROP_MEMBERSHIP: u32 = 36; -pub const IP_UNBLOCK_SOURCE: u32 = 37; -pub const IP_BLOCK_SOURCE: u32 = 38; -pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; -pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; -pub const IP_MSFILTER: u32 = 41; -pub const MCAST_JOIN_GROUP: u32 = 42; -pub const MCAST_BLOCK_SOURCE: u32 = 43; -pub const MCAST_UNBLOCK_SOURCE: u32 = 44; -pub const MCAST_LEAVE_GROUP: u32 = 45; -pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; -pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; -pub const MCAST_MSFILTER: u32 = 48; -pub const IP_MULTICAST_ALL: u32 = 49; -pub const IP_UNICAST_IF: u32 = 50; -pub const IP_LOCAL_PORT_RANGE: u32 = 51; -pub const MCAST_EXCLUDE: u32 = 0; -pub const MCAST_INCLUDE: u32 = 1; -pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; -pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const __SOCK_SIZE__: u32 = 16; -pub const IN_CLASSA_NET: u32 = 4278190080; -pub const IN_CLASSA_NSHIFT: u32 = 24; -pub const IN_CLASSA_HOST: u32 = 16777215; -pub const IN_CLASSA_MAX: u32 = 128; -pub const IN_CLASSB_NET: u32 = 4294901760; -pub const IN_CLASSB_NSHIFT: u32 = 16; -pub const IN_CLASSB_HOST: u32 = 65535; -pub const IN_CLASSB_MAX: u32 = 65536; -pub const IN_CLASSC_NET: u32 = 4294967040; -pub const IN_CLASSC_NSHIFT: u32 = 8; -pub const IN_CLASSC_HOST: u32 = 255; -pub const IN_MULTICAST_NET: u32 = 3758096384; -pub const IN_CLASSE_NET: u32 = 4294967295; -pub const IN_CLASSE_NSHIFT: u32 = 0; -pub const IN_LOOPBACKNET: u32 = 127; -pub const INADDR_LOOPBACK: u32 = 2130706433; -pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; -pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; -pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; -pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; -pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; -pub const __LITTLE_ENDIAN: u32 = 1234; -pub const IN_ACCESS: u32 = 1; -pub const IN_MODIFY: u32 = 2; -pub const IN_ATTRIB: u32 = 4; -pub const IN_CLOSE_WRITE: u32 = 8; -pub const IN_CLOSE_NOWRITE: u32 = 16; -pub const IN_OPEN: u32 = 32; -pub const IN_MOVED_FROM: u32 = 64; -pub const IN_MOVED_TO: u32 = 128; -pub const IN_CREATE: u32 = 256; -pub const IN_DELETE: u32 = 512; -pub const IN_DELETE_SELF: u32 = 1024; -pub const IN_MOVE_SELF: u32 = 2048; -pub const IN_UNMOUNT: u32 = 8192; -pub const IN_Q_OVERFLOW: u32 = 16384; -pub const IN_IGNORED: u32 = 32768; -pub const IN_CLOSE: u32 = 24; -pub const IN_MOVE: u32 = 192; -pub const IN_ONLYDIR: u32 = 16777216; -pub const IN_DONT_FOLLOW: u32 = 33554432; -pub const IN_EXCL_UNLINK: u32 = 67108864; -pub const IN_MASK_CREATE: u32 = 268435456; -pub const IN_MASK_ADD: u32 = 536870912; -pub const IN_ISDIR: u32 = 1073741824; -pub const IN_ONESHOT: u32 = 2147483648; -pub const IN_ALL_EVENTS: u32 = 4095; -pub const IN_CLOEXEC: u32 = 524288; -pub const IN_NONBLOCK: u32 = 2048; -pub const IPTOS_TOS_MASK: u32 = 30; -pub const IPTOS_LOWDELAY: u32 = 16; -pub const IPTOS_THROUGHPUT: u32 = 8; -pub const IPTOS_RELIABILITY: u32 = 4; -pub const IPTOS_MINCOST: u32 = 2; -pub const IPTOS_PREC_MASK: u32 = 224; -pub const IPTOS_PREC_NETCONTROL: u32 = 224; -pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; -pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; -pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; -pub const IPTOS_PREC_FLASH: u32 = 96; -pub const IPTOS_PREC_IMMEDIATE: u32 = 64; -pub const IPTOS_PREC_PRIORITY: u32 = 32; -pub const IPTOS_PREC_ROUTINE: u32 = 0; -pub const IPOPT_COPY: u32 = 128; -pub const IPOPT_CLASS_MASK: u32 = 96; -pub const IPOPT_NUMBER_MASK: u32 = 31; -pub const IPOPT_CONTROL: u32 = 0; -pub const IPOPT_RESERVED1: u32 = 32; -pub const IPOPT_MEASUREMENT: u32 = 64; -pub const IPOPT_RESERVED2: u32 = 96; -pub const IPOPT_END: u32 = 0; -pub const IPOPT_NOOP: u32 = 1; -pub const IPOPT_SEC: u32 = 130; -pub const IPOPT_LSRR: u32 = 131; -pub const IPOPT_TIMESTAMP: u32 = 68; -pub const IPOPT_CIPSO: u32 = 134; -pub const IPOPT_RR: u32 = 7; -pub const IPOPT_SID: u32 = 136; -pub const IPOPT_SSRR: u32 = 137; -pub const IPOPT_RA: u32 = 148; -pub const IPVERSION: u32 = 4; -pub const MAXTTL: u32 = 255; -pub const IPDEFTTL: u32 = 64; -pub const IPOPT_OPTVAL: u32 = 0; -pub const IPOPT_OLEN: u32 = 1; -pub const IPOPT_OFFSET: u32 = 2; -pub const IPOPT_MINOFF: u32 = 4; -pub const MAX_IPOPTLEN: u32 = 40; -pub const IPOPT_NOP: u32 = 1; -pub const IPOPT_EOL: u32 = 0; -pub const IPOPT_TS: u32 = 68; -pub const IPOPT_TS_TSONLY: u32 = 0; -pub const IPOPT_TS_TSANDADDR: u32 = 1; -pub const IPOPT_TS_PRESPEC: u32 = 3; -pub const IPV4_BEET_PHMAXLEN: u32 = 8; -pub const IPV6_FL_A_GET: u32 = 0; -pub const IPV6_FL_A_PUT: u32 = 1; -pub const IPV6_FL_A_RENEW: u32 = 2; -pub const IPV6_FL_F_CREATE: u32 = 1; -pub const IPV6_FL_F_EXCL: u32 = 2; -pub const IPV6_FL_F_REFLECT: u32 = 4; -pub const IPV6_FL_F_REMOTE: u32 = 8; -pub const IPV6_FL_S_NONE: u32 = 0; -pub const IPV6_FL_S_EXCL: u32 = 1; -pub const IPV6_FL_S_PROCESS: u32 = 2; -pub const IPV6_FL_S_USER: u32 = 3; -pub const IPV6_FL_S_ANY: u32 = 255; -pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; -pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; -pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; -pub const IPV6_PRIORITY_FILLER: u32 = 256; -pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; -pub const IPV6_PRIORITY_RESERVED1: u32 = 768; -pub const IPV6_PRIORITY_BULK: u32 = 1024; -pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; -pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; -pub const IPV6_PRIORITY_CONTROL: u32 = 1792; -pub const IPV6_PRIORITY_8: u32 = 2048; -pub const IPV6_PRIORITY_9: u32 = 2304; -pub const IPV6_PRIORITY_10: u32 = 2560; -pub const IPV6_PRIORITY_11: u32 = 2816; -pub const IPV6_PRIORITY_12: u32 = 3072; -pub const IPV6_PRIORITY_13: u32 = 3328; -pub const IPV6_PRIORITY_14: u32 = 3584; -pub const IPV6_PRIORITY_15: u32 = 3840; -pub const IPPROTO_HOPOPTS: u32 = 0; -pub const IPPROTO_ROUTING: u32 = 43; -pub const IPPROTO_FRAGMENT: u32 = 44; -pub const IPPROTO_ICMPV6: u32 = 58; -pub const IPPROTO_NONE: u32 = 59; -pub const IPPROTO_DSTOPTS: u32 = 60; -pub const IPPROTO_MH: u32 = 135; -pub const IPV6_TLV_PAD1: u32 = 0; -pub const IPV6_TLV_PADN: u32 = 1; -pub const IPV6_TLV_ROUTERALERT: u32 = 5; -pub const IPV6_TLV_CALIPSO: u32 = 7; -pub const IPV6_TLV_IOAM: u32 = 49; -pub const IPV6_TLV_JUMBO: u32 = 194; -pub const IPV6_TLV_HAO: u32 = 201; -pub const IPV6_ADDRFORM: u32 = 1; -pub const IPV6_2292PKTINFO: u32 = 2; -pub const IPV6_2292HOPOPTS: u32 = 3; -pub const IPV6_2292DSTOPTS: u32 = 4; -pub const IPV6_2292RTHDR: u32 = 5; -pub const IPV6_2292PKTOPTIONS: u32 = 6; -pub const IPV6_CHECKSUM: u32 = 7; -pub const IPV6_2292HOPLIMIT: u32 = 8; -pub const IPV6_NEXTHOP: u32 = 9; -pub const IPV6_AUTHHDR: u32 = 10; -pub const IPV6_FLOWINFO: u32 = 11; -pub const IPV6_UNICAST_HOPS: u32 = 16; -pub const IPV6_MULTICAST_IF: u32 = 17; -pub const IPV6_MULTICAST_HOPS: u32 = 18; -pub const IPV6_MULTICAST_LOOP: u32 = 19; -pub const IPV6_ADD_MEMBERSHIP: u32 = 20; -pub const IPV6_DROP_MEMBERSHIP: u32 = 21; -pub const IPV6_ROUTER_ALERT: u32 = 22; -pub const IPV6_MTU_DISCOVER: u32 = 23; -pub const IPV6_MTU: u32 = 24; -pub const IPV6_RECVERR: u32 = 25; -pub const IPV6_V6ONLY: u32 = 26; -pub const IPV6_JOIN_ANYCAST: u32 = 27; -pub const IPV6_LEAVE_ANYCAST: u32 = 28; -pub const IPV6_MULTICAST_ALL: u32 = 29; -pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; -pub const IPV6_RECVERR_RFC4884: u32 = 31; -pub const IPV6_PMTUDISC_DONT: u32 = 0; -pub const IPV6_PMTUDISC_WANT: u32 = 1; -pub const IPV6_PMTUDISC_DO: u32 = 2; -pub const IPV6_PMTUDISC_PROBE: u32 = 3; -pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; -pub const IPV6_PMTUDISC_OMIT: u32 = 5; -pub const IPV6_FLOWLABEL_MGR: u32 = 32; -pub const IPV6_FLOWINFO_SEND: u32 = 33; -pub const IPV6_IPSEC_POLICY: u32 = 34; -pub const IPV6_XFRM_POLICY: u32 = 35; -pub const IPV6_HDRINCL: u32 = 36; -pub const IPV6_RECVPKTINFO: u32 = 49; -pub const IPV6_PKTINFO: u32 = 50; -pub const IPV6_RECVHOPLIMIT: u32 = 51; -pub const IPV6_HOPLIMIT: u32 = 52; -pub const IPV6_RECVHOPOPTS: u32 = 53; -pub const IPV6_HOPOPTS: u32 = 54; -pub const IPV6_RTHDRDSTOPTS: u32 = 55; -pub const IPV6_RECVRTHDR: u32 = 56; -pub const IPV6_RTHDR: u32 = 57; -pub const IPV6_RECVDSTOPTS: u32 = 58; -pub const IPV6_DSTOPTS: u32 = 59; -pub const IPV6_RECVPATHMTU: u32 = 60; -pub const IPV6_PATHMTU: u32 = 61; -pub const IPV6_DONTFRAG: u32 = 62; -pub const IPV6_RECVTCLASS: u32 = 66; -pub const IPV6_TCLASS: u32 = 67; -pub const IPV6_AUTOFLOWLABEL: u32 = 70; -pub const IPV6_ADDR_PREFERENCES: u32 = 72; -pub const IPV6_PREFER_SRC_TMP: u32 = 1; -pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; -pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; -pub const IPV6_PREFER_SRC_COA: u32 = 4; -pub const IPV6_PREFER_SRC_HOME: u32 = 1024; -pub const IPV6_PREFER_SRC_CGA: u32 = 8; -pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; -pub const IPV6_MINHOPCOUNT: u32 = 73; -pub const IPV6_ORIGDSTADDR: u32 = 74; -pub const IPV6_RECVORIGDSTADDR: u32 = 74; -pub const IPV6_TRANSPARENT: u32 = 75; -pub const IPV6_UNICAST_IF: u32 = 76; -pub const IPV6_RECVFRAGSIZE: u32 = 77; -pub const IPV6_FREEBIND: u32 = 78; -pub const IPV6_MIN_MTU: u32 = 1280; -pub const IPV6_SRCRT_STRICT: u32 = 1; -pub const IPV6_SRCRT_TYPE_0: u32 = 0; -pub const IPV6_SRCRT_TYPE_2: u32 = 2; -pub const IPV6_SRCRT_TYPE_3: u32 = 3; -pub const IPV6_SRCRT_TYPE_4: u32 = 4; -pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; -pub const ADFS_SUPER_MAGIC: u32 = 44533; -pub const AFFS_SUPER_MAGIC: u32 = 44543; -pub const AFS_SUPER_MAGIC: u32 = 1397113167; -pub const AUTOFS_SUPER_MAGIC: u32 = 391; -pub const CEPH_SUPER_MAGIC: u32 = 12805120; -pub const CODA_SUPER_MAGIC: u32 = 1937076805; -pub const CRAMFS_MAGIC: u32 = 684539205; -pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; -pub const DEBUGFS_MAGIC: u32 = 1684170528; -pub const SECURITYFS_MAGIC: u32 = 1935894131; -pub const SELINUX_MAGIC: u32 = 4185718668; -pub const SMACK_MAGIC: u32 = 1128357203; -pub const RAMFS_MAGIC: u32 = 2240043254; -pub const TMPFS_MAGIC: u32 = 16914836; -pub const HUGETLBFS_MAGIC: u32 = 2508478710; -pub const SQUASHFS_MAGIC: u32 = 1936814952; -pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; -pub const EFS_SUPER_MAGIC: u32 = 4278867; -pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; -pub const EXT2_SUPER_MAGIC: u32 = 61267; -pub const EXT3_SUPER_MAGIC: u32 = 61267; -pub const XENFS_SUPER_MAGIC: u32 = 2881100148; -pub const EXT4_SUPER_MAGIC: u32 = 61267; -pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; -pub const NILFS_SUPER_MAGIC: u32 = 13364; -pub const F2FS_SUPER_MAGIC: u32 = 4076150800; -pub const HPFS_SUPER_MAGIC: u32 = 4187351113; -pub const ISOFS_SUPER_MAGIC: u32 = 38496; -pub const JFFS2_SUPER_MAGIC: u32 = 29366; -pub const XFS_SUPER_MAGIC: u32 = 1481003842; -pub const PSTOREFS_MAGIC: u32 = 1634035564; -pub const EFIVARFS_MAGIC: u32 = 3730735588; -pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; -pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; -pub const FUSE_SUPER_MAGIC: u32 = 1702057286; -pub const MINIX_SUPER_MAGIC: u32 = 4991; -pub const MINIX_SUPER_MAGIC2: u32 = 5007; -pub const MINIX2_SUPER_MAGIC: u32 = 9320; -pub const MINIX2_SUPER_MAGIC2: u32 = 9336; -pub const MINIX3_SUPER_MAGIC: u32 = 19802; -pub const MSDOS_SUPER_MAGIC: u32 = 19780; -pub const EXFAT_SUPER_MAGIC: u32 = 538032816; -pub const NCP_SUPER_MAGIC: u32 = 22092; -pub const NFS_SUPER_MAGIC: u32 = 26985; -pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; -pub const OPENPROM_SUPER_MAGIC: u32 = 40865; -pub const QNX4_SUPER_MAGIC: u32 = 47; -pub const QNX6_SUPER_MAGIC: u32 = 1746473250; -pub const AFS_FS_MAGIC: u32 = 1799439955; -pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; -pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0"; -pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0"; -pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0"; -pub const SMB_SUPER_MAGIC: u32 = 20859; -pub const CIFS_SUPER_MAGIC: u32 = 4283649346; -pub const SMB2_SUPER_MAGIC: u32 = 4266872130; -pub const CGROUP_SUPER_MAGIC: u32 = 2613483; -pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; -pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; -pub const STACK_END_MAGIC: u32 = 1470918301; -pub const TRACEFS_MAGIC: u32 = 1953653091; -pub const V9FS_MAGIC: u32 = 16914839; -pub const BDEVFS_MAGIC: u32 = 1650746742; -pub const DAXFS_MAGIC: u32 = 1684300152; -pub const BINFMTFS_MAGIC: u32 = 1112100429; -pub const DEVPTS_SUPER_MAGIC: u32 = 7377; -pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; -pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; -pub const PIPEFS_MAGIC: u32 = 1346981957; -pub const PROC_SUPER_MAGIC: u32 = 40864; -pub const SOCKFS_MAGIC: u32 = 1397703499; -pub const SYSFS_MAGIC: u32 = 1650812274; -pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; -pub const MTD_INODE_FS_MAGIC: u32 = 288389204; -pub const ANON_INODE_FS_MAGIC: u32 = 151263540; -pub const BTRFS_TEST_MAGIC: u32 = 1936880249; -pub const NSFS_MAGIC: u32 = 1853056627; -pub const BPF_FS_MAGIC: u32 = 3405662737; -pub const AAFS_MAGIC: u32 = 1513908720; -pub const ZONEFS_MAGIC: u32 = 1515144787; -pub const UDF_SUPER_MAGIC: u32 = 352400198; -pub const DMA_BUF_MAGIC: u32 = 1145913666; -pub const DEVMEM_MAGIC: u32 = 1162691661; -pub const SECRETMEM_MAGIC: u32 = 1397048141; -pub const MAP_32BIT: u32 = 64; -pub const PROT_READ: u32 = 1; -pub const PROT_WRITE: u32 = 2; -pub const PROT_EXEC: u32 = 4; -pub const PROT_SEM: u32 = 8; -pub const PROT_NONE: u32 = 0; -pub const PROT_GROWSDOWN: u32 = 16777216; -pub const PROT_GROWSUP: u32 = 33554432; -pub const MAP_TYPE: u32 = 15; -pub const MAP_FIXED: u32 = 16; -pub const MAP_ANONYMOUS: u32 = 32; -pub const MAP_POPULATE: u32 = 32768; -pub const MAP_NONBLOCK: u32 = 65536; -pub const MAP_STACK: u32 = 131072; -pub const MAP_HUGETLB: u32 = 262144; -pub const MAP_SYNC: u32 = 524288; -pub const MAP_FIXED_NOREPLACE: u32 = 1048576; -pub const MAP_UNINITIALIZED: u32 = 67108864; -pub const MLOCK_ONFAULT: u32 = 1; -pub const MS_ASYNC: u32 = 1; -pub const MS_INVALIDATE: u32 = 2; -pub const MS_SYNC: u32 = 4; -pub const MADV_NORMAL: u32 = 0; -pub const MADV_RANDOM: u32 = 1; -pub const MADV_SEQUENTIAL: u32 = 2; -pub const MADV_WILLNEED: u32 = 3; -pub const MADV_DONTNEED: u32 = 4; -pub const MADV_FREE: u32 = 8; -pub const MADV_REMOVE: u32 = 9; -pub const MADV_DONTFORK: u32 = 10; -pub const MADV_DOFORK: u32 = 11; -pub const MADV_HWPOISON: u32 = 100; -pub const MADV_SOFT_OFFLINE: u32 = 101; -pub const MADV_MERGEABLE: u32 = 12; -pub const MADV_UNMERGEABLE: u32 = 13; -pub const MADV_HUGEPAGE: u32 = 14; -pub const MADV_NOHUGEPAGE: u32 = 15; -pub const MADV_DONTDUMP: u32 = 16; -pub const MADV_DODUMP: u32 = 17; -pub const MADV_WIPEONFORK: u32 = 18; -pub const MADV_KEEPONFORK: u32 = 19; -pub const MADV_COLD: u32 = 20; -pub const MADV_PAGEOUT: u32 = 21; -pub const MADV_POPULATE_READ: u32 = 22; -pub const MADV_POPULATE_WRITE: u32 = 23; -pub const MADV_DONTNEED_LOCKED: u32 = 24; -pub const MADV_COLLAPSE: u32 = 25; -pub const MAP_FILE: u32 = 0; -pub const PKEY_DISABLE_ACCESS: u32 = 1; -pub const PKEY_DISABLE_WRITE: u32 = 2; -pub const PKEY_ACCESS_MASK: u32 = 3; -pub const MAP_GROWSDOWN: u32 = 256; -pub const MAP_DENYWRITE: u32 = 2048; -pub const MAP_EXECUTABLE: u32 = 4096; -pub const MAP_LOCKED: u32 = 8192; -pub const MAP_NORESERVE: u32 = 16384; -pub const MCL_CURRENT: u32 = 1; -pub const MCL_FUTURE: u32 = 2; -pub const MCL_ONFAULT: u32 = 4; -pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; -pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; -pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; -pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; -pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; -pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; -pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; -pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; -pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; -pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; -pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; -pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; -pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; -pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; -pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; -pub const MREMAP_MAYMOVE: u32 = 1; -pub const MREMAP_FIXED: u32 = 2; -pub const MREMAP_DONTUNMAP: u32 = 4; -pub const OVERCOMMIT_GUESS: u32 = 0; -pub const OVERCOMMIT_ALWAYS: u32 = 1; -pub const OVERCOMMIT_NEVER: u32 = 2; -pub const MAP_SHARED: u32 = 1; -pub const MAP_PRIVATE: u32 = 2; -pub const MAP_SHARED_VALIDATE: u32 = 3; -pub const MAP_HUGE_SHIFT: u32 = 26; -pub const MAP_HUGE_MASK: u32 = 63; -pub const MAP_HUGE_16KB: u32 = 939524096; -pub const MAP_HUGE_64KB: u32 = 1073741824; -pub const MAP_HUGE_512KB: u32 = 1275068416; -pub const MAP_HUGE_1MB: u32 = 1342177280; -pub const MAP_HUGE_2MB: u32 = 1409286144; -pub const MAP_HUGE_8MB: u32 = 1543503872; -pub const MAP_HUGE_16MB: u32 = 1610612736; -pub const MAP_HUGE_32MB: u32 = 1677721600; -pub const MAP_HUGE_256MB: u32 = 1879048192; -pub const MAP_HUGE_512MB: u32 = 1946157056; -pub const MAP_HUGE_1GB: u32 = 2013265920; -pub const MAP_HUGE_2GB: u32 = 2080374784; -pub const MAP_HUGE_16GB: u32 = 2281701376; -pub const SIOCGSTAMP_OLD: u32 = 35078; -pub const SIOCGSTAMPNS_OLD: u32 = 35079; -pub const SOL_SOCKET: u32 = 1; -pub const SO_DEBUG: u32 = 1; -pub const SO_REUSEADDR: u32 = 2; -pub const SO_TYPE: u32 = 3; -pub const SO_ERROR: u32 = 4; -pub const SO_DONTROUTE: u32 = 5; -pub const SO_BROADCAST: u32 = 6; -pub const SO_SNDBUF: u32 = 7; -pub const SO_RCVBUF: u32 = 8; -pub const SO_SNDBUFFORCE: u32 = 32; -pub const SO_RCVBUFFORCE: u32 = 33; -pub const SO_KEEPALIVE: u32 = 9; -pub const SO_OOBINLINE: u32 = 10; -pub const SO_NO_CHECK: u32 = 11; -pub const SO_PRIORITY: u32 = 12; -pub const SO_LINGER: u32 = 13; -pub const SO_BSDCOMPAT: u32 = 14; -pub const SO_REUSEPORT: u32 = 15; -pub const SO_PASSCRED: u32 = 16; -pub const SO_PEERCRED: u32 = 17; -pub const SO_RCVLOWAT: u32 = 18; -pub const SO_SNDLOWAT: u32 = 19; -pub const SO_RCVTIMEO_OLD: u32 = 20; -pub const SO_SNDTIMEO_OLD: u32 = 21; -pub const SO_SECURITY_AUTHENTICATION: u32 = 22; -pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; -pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; -pub const SO_BINDTODEVICE: u32 = 25; -pub const SO_ATTACH_FILTER: u32 = 26; -pub const SO_DETACH_FILTER: u32 = 27; -pub const SO_GET_FILTER: u32 = 26; -pub const SO_PEERNAME: u32 = 28; -pub const SO_ACCEPTCONN: u32 = 30; -pub const SO_PEERSEC: u32 = 31; -pub const SO_PASSSEC: u32 = 34; -pub const SO_MARK: u32 = 36; -pub const SO_PROTOCOL: u32 = 38; -pub const SO_DOMAIN: u32 = 39; -pub const SO_RXQ_OVFL: u32 = 40; -pub const SO_WIFI_STATUS: u32 = 41; -pub const SCM_WIFI_STATUS: u32 = 41; -pub const SO_PEEK_OFF: u32 = 42; -pub const SO_NOFCS: u32 = 43; -pub const SO_LOCK_FILTER: u32 = 44; -pub const SO_SELECT_ERR_QUEUE: u32 = 45; -pub const SO_BUSY_POLL: u32 = 46; -pub const SO_MAX_PACING_RATE: u32 = 47; -pub const SO_BPF_EXTENSIONS: u32 = 48; -pub const SO_INCOMING_CPU: u32 = 49; -pub const SO_ATTACH_BPF: u32 = 50; -pub const SO_DETACH_BPF: u32 = 27; -pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; -pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; -pub const SO_CNX_ADVICE: u32 = 53; -pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; -pub const SO_MEMINFO: u32 = 55; -pub const SO_INCOMING_NAPI_ID: u32 = 56; -pub const SO_COOKIE: u32 = 57; -pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; -pub const SO_PEERGROUPS: u32 = 59; -pub const SO_ZEROCOPY: u32 = 60; -pub const SO_TXTIME: u32 = 61; -pub const SCM_TXTIME: u32 = 61; -pub const SO_BINDTOIFINDEX: u32 = 62; -pub const SO_TIMESTAMP_OLD: u32 = 29; -pub const SO_TIMESTAMPNS_OLD: u32 = 35; -pub const SO_TIMESTAMPING_OLD: u32 = 37; -pub const SO_TIMESTAMP_NEW: u32 = 63; -pub const SO_TIMESTAMPNS_NEW: u32 = 64; -pub const SO_TIMESTAMPING_NEW: u32 = 65; -pub const SO_RCVTIMEO_NEW: u32 = 66; -pub const SO_SNDTIMEO_NEW: u32 = 67; -pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; -pub const SO_PREFER_BUSY_POLL: u32 = 69; -pub const SO_BUSY_POLL_BUDGET: u32 = 70; -pub const SO_NETNS_COOKIE: u32 = 71; -pub const SO_BUF_LOCK: u32 = 72; -pub const SO_RESERVE_MEM: u32 = 73; -pub const SO_TXREHASH: u32 = 74; -pub const SO_RCVMARK: u32 = 75; -pub const SO_TIMESTAMP: u32 = 29; -pub const SO_TIMESTAMPNS: u32 = 35; -pub const SO_TIMESTAMPING: u32 = 37; -pub const SO_RCVTIMEO: u32 = 20; -pub const SO_SNDTIMEO: u32 = 21; -pub const SCM_TIMESTAMP: u32 = 29; -pub const SCM_TIMESTAMPNS: u32 = 35; -pub const SCM_TIMESTAMPING: u32 = 37; -pub const SYS_SOCKET: u32 = 1; -pub const SYS_BIND: u32 = 2; -pub const SYS_CONNECT: u32 = 3; -pub const SYS_LISTEN: u32 = 4; -pub const SYS_ACCEPT: u32 = 5; -pub const SYS_GETSOCKNAME: u32 = 6; -pub const SYS_GETPEERNAME: u32 = 7; -pub const SYS_SOCKETPAIR: u32 = 8; -pub const SYS_SEND: u32 = 9; -pub const SYS_RECV: u32 = 10; -pub const SYS_SENDTO: u32 = 11; -pub const SYS_RECVFROM: u32 = 12; -pub const SYS_SHUTDOWN: u32 = 13; -pub const SYS_SETSOCKOPT: u32 = 14; -pub const SYS_GETSOCKOPT: u32 = 15; -pub const SYS_SENDMSG: u32 = 16; -pub const SYS_RECVMSG: u32 = 17; -pub const SYS_ACCEPT4: u32 = 18; -pub const SYS_RECVMMSG: u32 = 19; -pub const SYS_SENDMMSG: u32 = 20; -pub const __SO_ACCEPTCON: u32 = 65536; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const POLLWRNORM: u32 = 256; -pub const POLLWRBAND: u32 = 512; -pub const POLLMSG: u32 = 1024; -pub const POLLREMOVE: u32 = 4096; -pub const POLLRDHUP: u32 = 8192; -pub const PR_SET_PDEATHSIG: u32 = 1; -pub const PR_GET_PDEATHSIG: u32 = 2; -pub const PR_GET_DUMPABLE: u32 = 3; -pub const PR_SET_DUMPABLE: u32 = 4; -pub const PR_GET_UNALIGN: u32 = 5; -pub const PR_SET_UNALIGN: u32 = 6; -pub const PR_UNALIGN_NOPRINT: u32 = 1; -pub const PR_UNALIGN_SIGBUS: u32 = 2; -pub const PR_GET_KEEPCAPS: u32 = 7; -pub const PR_SET_KEEPCAPS: u32 = 8; -pub const PR_GET_FPEMU: u32 = 9; -pub const PR_SET_FPEMU: u32 = 10; -pub const PR_FPEMU_NOPRINT: u32 = 1; -pub const PR_FPEMU_SIGFPE: u32 = 2; -pub const PR_GET_FPEXC: u32 = 11; -pub const PR_SET_FPEXC: u32 = 12; -pub const PR_FP_EXC_SW_ENABLE: u32 = 128; -pub const PR_FP_EXC_DIV: u32 = 65536; -pub const PR_FP_EXC_OVF: u32 = 131072; -pub const PR_FP_EXC_UND: u32 = 262144; -pub const PR_FP_EXC_RES: u32 = 524288; -pub const PR_FP_EXC_INV: u32 = 1048576; -pub const PR_FP_EXC_DISABLED: u32 = 0; -pub const PR_FP_EXC_NONRECOV: u32 = 1; -pub const PR_FP_EXC_ASYNC: u32 = 2; -pub const PR_FP_EXC_PRECISE: u32 = 3; -pub const PR_GET_TIMING: u32 = 13; -pub const PR_SET_TIMING: u32 = 14; -pub const PR_TIMING_STATISTICAL: u32 = 0; -pub const PR_TIMING_TIMESTAMP: u32 = 1; -pub const PR_SET_NAME: u32 = 15; -pub const PR_GET_NAME: u32 = 16; -pub const PR_GET_ENDIAN: u32 = 19; -pub const PR_SET_ENDIAN: u32 = 20; -pub const PR_ENDIAN_BIG: u32 = 0; -pub const PR_ENDIAN_LITTLE: u32 = 1; -pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; -pub const PR_GET_SECCOMP: u32 = 21; -pub const PR_SET_SECCOMP: u32 = 22; -pub const PR_CAPBSET_READ: u32 = 23; -pub const PR_CAPBSET_DROP: u32 = 24; -pub const PR_GET_TSC: u32 = 25; -pub const PR_SET_TSC: u32 = 26; -pub const PR_TSC_ENABLE: u32 = 1; -pub const PR_TSC_SIGSEGV: u32 = 2; -pub const PR_GET_SECUREBITS: u32 = 27; -pub const PR_SET_SECUREBITS: u32 = 28; -pub const PR_SET_TIMERSLACK: u32 = 29; -pub const PR_GET_TIMERSLACK: u32 = 30; -pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; -pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; -pub const PR_MCE_KILL: u32 = 33; -pub const PR_MCE_KILL_CLEAR: u32 = 0; -pub const PR_MCE_KILL_SET: u32 = 1; -pub const PR_MCE_KILL_LATE: u32 = 0; -pub const PR_MCE_KILL_EARLY: u32 = 1; -pub const PR_MCE_KILL_DEFAULT: u32 = 2; -pub const PR_MCE_KILL_GET: u32 = 34; -pub const PR_SET_MM: u32 = 35; -pub const PR_SET_MM_START_CODE: u32 = 1; -pub const PR_SET_MM_END_CODE: u32 = 2; -pub const PR_SET_MM_START_DATA: u32 = 3; -pub const PR_SET_MM_END_DATA: u32 = 4; -pub const PR_SET_MM_START_STACK: u32 = 5; -pub const PR_SET_MM_START_BRK: u32 = 6; -pub const PR_SET_MM_BRK: u32 = 7; -pub const PR_SET_MM_ARG_START: u32 = 8; -pub const PR_SET_MM_ARG_END: u32 = 9; -pub const PR_SET_MM_ENV_START: u32 = 10; -pub const PR_SET_MM_ENV_END: u32 = 11; -pub const PR_SET_MM_AUXV: u32 = 12; -pub const PR_SET_MM_EXE_FILE: u32 = 13; -pub const PR_SET_MM_MAP: u32 = 14; -pub const PR_SET_MM_MAP_SIZE: u32 = 15; -pub const PR_SET_PTRACER: u32 = 1499557217; -pub const PR_SET_CHILD_SUBREAPER: u32 = 36; -pub const PR_GET_CHILD_SUBREAPER: u32 = 37; -pub const PR_SET_NO_NEW_PRIVS: u32 = 38; -pub const PR_GET_NO_NEW_PRIVS: u32 = 39; -pub const PR_GET_TID_ADDRESS: u32 = 40; -pub const PR_SET_THP_DISABLE: u32 = 41; -pub const PR_GET_THP_DISABLE: u32 = 42; -pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; -pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; -pub const PR_SET_FP_MODE: u32 = 45; -pub const PR_GET_FP_MODE: u32 = 46; -pub const PR_FP_MODE_FR: u32 = 1; -pub const PR_FP_MODE_FRE: u32 = 2; -pub const PR_CAP_AMBIENT: u32 = 47; -pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; -pub const PR_CAP_AMBIENT_RAISE: u32 = 2; -pub const PR_CAP_AMBIENT_LOWER: u32 = 3; -pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; -pub const PR_SVE_SET_VL: u32 = 50; -pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SVE_GET_VL: u32 = 51; -pub const PR_SVE_VL_LEN_MASK: u32 = 65535; -pub const PR_SVE_VL_INHERIT: u32 = 131072; -pub const PR_GET_SPECULATION_CTRL: u32 = 52; -pub const PR_SET_SPECULATION_CTRL: u32 = 53; -pub const PR_SPEC_STORE_BYPASS: u32 = 0; -pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; -pub const PR_SPEC_L1D_FLUSH: u32 = 2; -pub const PR_SPEC_NOT_AFFECTED: u32 = 0; -pub const PR_SPEC_PRCTL: u32 = 1; -pub const PR_SPEC_ENABLE: u32 = 2; -pub const PR_SPEC_DISABLE: u32 = 4; -pub const PR_SPEC_FORCE_DISABLE: u32 = 8; -pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; -pub const PR_PAC_RESET_KEYS: u32 = 54; -pub const PR_PAC_APIAKEY: u32 = 1; -pub const PR_PAC_APIBKEY: u32 = 2; -pub const PR_PAC_APDAKEY: u32 = 4; -pub const PR_PAC_APDBKEY: u32 = 8; -pub const PR_PAC_APGAKEY: u32 = 16; -pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; -pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; -pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; -pub const PR_MTE_TCF_NONE: u32 = 0; -pub const PR_MTE_TCF_SYNC: u32 = 2; -pub const PR_MTE_TCF_ASYNC: u32 = 4; -pub const PR_MTE_TCF_MASK: u32 = 6; -pub const PR_MTE_TAG_SHIFT: u32 = 3; -pub const PR_MTE_TAG_MASK: u32 = 524280; -pub const PR_MTE_TCF_SHIFT: u32 = 1; -pub const PR_SET_IO_FLUSHER: u32 = 57; -pub const PR_GET_IO_FLUSHER: u32 = 58; -pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; -pub const PR_SYS_DISPATCH_OFF: u32 = 0; -pub const PR_SYS_DISPATCH_ON: u32 = 1; -pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; -pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; -pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; -pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; -pub const PR_SCHED_CORE: u32 = 62; -pub const PR_SCHED_CORE_GET: u32 = 0; -pub const PR_SCHED_CORE_CREATE: u32 = 1; -pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; -pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; -pub const PR_SCHED_CORE_MAX: u32 = 4; -pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; -pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; -pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; -pub const PR_SME_SET_VL: u32 = 63; -pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SME_GET_VL: u32 = 64; -pub const PR_SME_VL_LEN_MASK: u32 = 65535; -pub const PR_SME_VL_INHERIT: u32 = 131072; -pub const PR_SET_MDWE: u32 = 65; -pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; -pub const PR_GET_MDWE: u32 = 66; -pub const PR_SET_VMA: u32 = 1398164801; -pub const PR_SET_VMA_ANON_NAME: u32 = 0; -pub const GRND_NONBLOCK: u32 = 1; -pub const GRND_RANDOM: u32 = 2; -pub const GRND_INSECURE: u32 = 4; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -pub const CLOCK_REALTIME: u32 = 0; -pub const CLOCK_MONOTONIC: u32 = 1; -pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; -pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; -pub const CLOCK_MONOTONIC_RAW: u32 = 4; -pub const CLOCK_REALTIME_COARSE: u32 = 5; -pub const CLOCK_MONOTONIC_COARSE: u32 = 6; -pub const CLOCK_BOOTTIME: u32 = 7; -pub const CLOCK_REALTIME_ALARM: u32 = 8; -pub const CLOCK_BOOTTIME_ALARM: u32 = 9; -pub const CLOCK_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const RUSAGE_SELF: u32 = 0; -pub const RUSAGE_CHILDREN: i32 = -1; -pub const RUSAGE_BOTH: i32 = -2; -pub const RUSAGE_THREAD: u32 = 1; -pub const RLIM64_INFINITY: i32 = -1; -pub const PRIO_MIN: i32 = -20; -pub const PRIO_MAX: u32 = 20; -pub const PRIO_PROCESS: u32 = 0; -pub const PRIO_PGRP: u32 = 1; -pub const PRIO_USER: u32 = 2; -pub const _STK_LIM: u32 = 8388608; -pub const MLOCK_LIMIT: u32 = 8388608; -pub const RLIMIT_CPU: u32 = 0; -pub const RLIMIT_FSIZE: u32 = 1; -pub const RLIMIT_DATA: u32 = 2; -pub const RLIMIT_STACK: u32 = 3; -pub const RLIMIT_CORE: u32 = 4; -pub const RLIMIT_RSS: u32 = 5; -pub const RLIMIT_NPROC: u32 = 6; -pub const RLIMIT_NOFILE: u32 = 7; -pub const RLIMIT_MEMLOCK: u32 = 8; -pub const RLIMIT_AS: u32 = 9; -pub const RLIMIT_LOCKS: u32 = 10; -pub const RLIMIT_SIGPENDING: u32 = 11; -pub const RLIMIT_MSGQUEUE: u32 = 12; -pub const RLIMIT_NICE: u32 = 13; -pub const RLIMIT_RTPRIO: u32 = 14; -pub const RLIMIT_RTTIME: u32 = 15; -pub const RLIM_NLIMITS: u32 = 16; -pub const RLIM_INFINITY: i32 = -1; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const NSIG: u32 = 32; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGBUS: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGUSR1: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGUSR2: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGSTKFLT: u32 = 16; -pub const SIGCHLD: u32 = 17; -pub const SIGCONT: u32 = 18; -pub const SIGSTOP: u32 = 19; -pub const SIGTSTP: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGURG: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGIO: u32 = 29; -pub const SIGPOLL: u32 = 29; -pub const SIGPWR: u32 = 30; -pub const SIGSYS: u32 = 31; -pub const SIGUNUSED: u32 = 31; -pub const SIGRTMIN: u32 = 32; -pub const SA_RESTORER: u32 = 67108864; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; -pub const SA_NOCLDSTOP: u32 = 1; -pub const SA_NOCLDWAIT: u32 = 2; -pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; -pub const SA_ONSTACK: u32 = 134217728; -pub const SA_RESTART: u32 = 268435456; -pub const SA_NODEFER: u32 = 1073741824; -pub const SA_RESETHAND: u32 = 2147483648; -pub const SA_NOMASK: u32 = 1073741824; -pub const SA_ONESHOT: u32 = 2147483648; -pub const SIG_BLOCK: u32 = 0; -pub const SIG_UNBLOCK: u32 = 1; -pub const SIG_SETMASK: u32 = 2; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; -pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const S_IFMT: u32 = 61440; -pub const S_IFSOCK: u32 = 49152; -pub const S_IFLNK: u32 = 40960; -pub const S_IFREG: u32 = 32768; -pub const S_IFBLK: u32 = 24576; -pub const S_IFDIR: u32 = 16384; -pub const S_IFCHR: u32 = 8192; -pub const S_IFIFO: u32 = 4096; -pub const S_ISUID: u32 = 2048; -pub const S_ISGID: u32 = 1024; -pub const S_ISVTX: u32 = 512; -pub const S_IRWXU: u32 = 448; -pub const S_IRUSR: u32 = 256; -pub const S_IWUSR: u32 = 128; -pub const S_IXUSR: u32 = 64; -pub const S_IRWXG: u32 = 56; -pub const S_IRGRP: u32 = 32; -pub const S_IWGRP: u32 = 16; -pub const S_IXGRP: u32 = 8; -pub const S_IRWXO: u32 = 7; -pub const S_IROTH: u32 = 4; -pub const S_IWOTH: u32 = 2; -pub const S_IXOTH: u32 = 1; -pub const STATX_TYPE: u32 = 1; -pub const STATX_MODE: u32 = 2; -pub const STATX_NLINK: u32 = 4; -pub const STATX_UID: u32 = 8; -pub const STATX_GID: u32 = 16; -pub const STATX_ATIME: u32 = 32; -pub const STATX_MTIME: u32 = 64; -pub const STATX_CTIME: u32 = 128; -pub const STATX_INO: u32 = 256; -pub const STATX_SIZE: u32 = 512; -pub const STATX_BLOCKS: u32 = 1024; -pub const STATX_BASIC_STATS: u32 = 2047; -pub const STATX_BTIME: u32 = 2048; -pub const STATX_MNT_ID: u32 = 4096; -pub const STATX_DIOALIGN: u32 = 8192; -pub const STATX__RESERVED: u32 = 2147483648; -pub const STATX_ALL: u32 = 4095; -pub const STATX_ATTR_COMPRESSED: u32 = 4; -pub const STATX_ATTR_IMMUTABLE: u32 = 16; -pub const STATX_ATTR_APPEND: u32 = 32; -pub const STATX_ATTR_NODUMP: u32 = 64; -pub const STATX_ATTR_ENCRYPTED: u32 = 2048; -pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; -pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; -pub const STATX_ATTR_VERITY: u32 = 1048576; -pub const STATX_ATTR_DAX: u32 = 2097152; -pub const SI_LOAD_SHIFT: u32 = 16; -pub const TCP_MSS_DEFAULT: u32 = 536; -pub const TCP_MSS_DESIRED: u32 = 1220; -pub const TCP_NODELAY: u32 = 1; -pub const TCP_MAXSEG: u32 = 2; -pub const TCP_CORK: u32 = 3; -pub const TCP_KEEPIDLE: u32 = 4; -pub const TCP_KEEPINTVL: u32 = 5; -pub const TCP_KEEPCNT: u32 = 6; -pub const TCP_SYNCNT: u32 = 7; -pub const TCP_LINGER2: u32 = 8; -pub const TCP_DEFER_ACCEPT: u32 = 9; -pub const TCP_WINDOW_CLAMP: u32 = 10; -pub const TCP_INFO: u32 = 11; -pub const TCP_QUICKACK: u32 = 12; -pub const TCP_CONGESTION: u32 = 13; -pub const TCP_MD5SIG: u32 = 14; -pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; -pub const TCP_THIN_DUPACK: u32 = 17; -pub const TCP_USER_TIMEOUT: u32 = 18; -pub const TCP_REPAIR: u32 = 19; -pub const TCP_REPAIR_QUEUE: u32 = 20; -pub const TCP_QUEUE_SEQ: u32 = 21; -pub const TCP_REPAIR_OPTIONS: u32 = 22; -pub const TCP_FASTOPEN: u32 = 23; -pub const TCP_TIMESTAMP: u32 = 24; -pub const TCP_NOTSENT_LOWAT: u32 = 25; -pub const TCP_CC_INFO: u32 = 26; -pub const TCP_SAVE_SYN: u32 = 27; -pub const TCP_SAVED_SYN: u32 = 28; -pub const TCP_REPAIR_WINDOW: u32 = 29; -pub const TCP_FASTOPEN_CONNECT: u32 = 30; -pub const TCP_ULP: u32 = 31; -pub const TCP_MD5SIG_EXT: u32 = 32; -pub const TCP_FASTOPEN_KEY: u32 = 33; -pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; -pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; -pub const TCP_INQ: u32 = 36; -pub const TCP_CM_INQ: u32 = 36; -pub const TCP_TX_DELAY: u32 = 37; -pub const TCP_REPAIR_ON: u32 = 1; -pub const TCP_REPAIR_OFF: u32 = 0; -pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; -pub const TCPI_OPT_TIMESTAMPS: u32 = 1; -pub const TCPI_OPT_SACK: u32 = 2; -pub const TCPI_OPT_WSCALE: u32 = 4; -pub const TCPI_OPT_ECN: u32 = 8; -pub const TCPI_OPT_ECN_SEEN: u32 = 16; -pub const TCPI_OPT_SYN_DATA: u32 = 32; -pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; -pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; -pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; -pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; -pub const IGNBRK: u32 = 1; -pub const BRKINT: u32 = 2; -pub const IGNPAR: u32 = 4; -pub const PARMRK: u32 = 8; -pub const INPCK: u32 = 16; -pub const ISTRIP: u32 = 32; -pub const INLCR: u32 = 64; -pub const IGNCR: u32 = 128; -pub const ICRNL: u32 = 256; -pub const IXANY: u32 = 2048; -pub const OPOST: u32 = 1; -pub const OCRNL: u32 = 8; -pub const ONOCR: u32 = 16; -pub const ONLRET: u32 = 32; -pub const OFILL: u32 = 64; -pub const OFDEL: u32 = 128; -pub const B0: u32 = 0; -pub const B50: u32 = 1; -pub const B75: u32 = 2; -pub const B110: u32 = 3; -pub const B134: u32 = 4; -pub const B150: u32 = 5; -pub const B200: u32 = 6; -pub const B300: u32 = 7; -pub const B600: u32 = 8; -pub const B1200: u32 = 9; -pub const B1800: u32 = 10; -pub const B2400: u32 = 11; -pub const B4800: u32 = 12; -pub const B9600: u32 = 13; -pub const B19200: u32 = 14; -pub const B38400: u32 = 15; -pub const EXTA: u32 = 14; -pub const EXTB: u32 = 15; -pub const ADDRB: u32 = 536870912; -pub const CMSPAR: u32 = 1073741824; -pub const CRTSCTS: u32 = 2147483648; -pub const IBSHIFT: u32 = 16; -pub const TCOOFF: u32 = 0; -pub const TCOON: u32 = 1; -pub const TCIOFF: u32 = 2; -pub const TCION: u32 = 3; -pub const TCIFLUSH: u32 = 0; -pub const TCOFLUSH: u32 = 1; -pub const TCIOFLUSH: u32 = 2; -pub const NCCS: u32 = 19; -pub const VINTR: u32 = 0; -pub const VQUIT: u32 = 1; -pub const VERASE: u32 = 2; -pub const VKILL: u32 = 3; -pub const VEOF: u32 = 4; -pub const VTIME: u32 = 5; -pub const VMIN: u32 = 6; -pub const VSWTC: u32 = 7; -pub const VSTART: u32 = 8; -pub const VSTOP: u32 = 9; -pub const VSUSP: u32 = 10; -pub const VEOL: u32 = 11; -pub const VREPRINT: u32 = 12; -pub const VDISCARD: u32 = 13; -pub const VWERASE: u32 = 14; -pub const VLNEXT: u32 = 15; -pub const VEOL2: u32 = 16; -pub const IUCLC: u32 = 512; -pub const IXON: u32 = 1024; -pub const IXOFF: u32 = 4096; -pub const IMAXBEL: u32 = 8192; -pub const IUTF8: u32 = 16384; -pub const OLCUC: u32 = 2; -pub const ONLCR: u32 = 4; -pub const NLDLY: u32 = 256; -pub const NL0: u32 = 0; -pub const NL1: u32 = 256; -pub const CRDLY: u32 = 1536; -pub const CR0: u32 = 0; -pub const CR1: u32 = 512; -pub const CR2: u32 = 1024; -pub const CR3: u32 = 1536; -pub const TABDLY: u32 = 6144; -pub const TAB0: u32 = 0; -pub const TAB1: u32 = 2048; -pub const TAB2: u32 = 4096; -pub const TAB3: u32 = 6144; -pub const XTABS: u32 = 6144; -pub const BSDLY: u32 = 8192; -pub const BS0: u32 = 0; -pub const BS1: u32 = 8192; -pub const VTDLY: u32 = 16384; -pub const VT0: u32 = 0; -pub const VT1: u32 = 16384; -pub const FFDLY: u32 = 32768; -pub const FF0: u32 = 0; -pub const FF1: u32 = 32768; -pub const CBAUD: u32 = 4111; -pub const CSIZE: u32 = 48; -pub const CS5: u32 = 0; -pub const CS6: u32 = 16; -pub const CS7: u32 = 32; -pub const CS8: u32 = 48; -pub const CSTOPB: u32 = 64; -pub const CREAD: u32 = 128; -pub const PARENB: u32 = 256; -pub const PARODD: u32 = 512; -pub const HUPCL: u32 = 1024; -pub const CLOCAL: u32 = 2048; -pub const CBAUDEX: u32 = 4096; -pub const BOTHER: u32 = 4096; -pub const B57600: u32 = 4097; -pub const B115200: u32 = 4098; -pub const B230400: u32 = 4099; -pub const B460800: u32 = 4100; -pub const B500000: u32 = 4101; -pub const B576000: u32 = 4102; -pub const B921600: u32 = 4103; -pub const B1000000: u32 = 4104; -pub const B1152000: u32 = 4105; -pub const B1500000: u32 = 4106; -pub const B2000000: u32 = 4107; -pub const B2500000: u32 = 4108; -pub const B3000000: u32 = 4109; -pub const B3500000: u32 = 4110; -pub const B4000000: u32 = 4111; -pub const CIBAUD: u32 = 269418496; -pub const ISIG: u32 = 1; -pub const ICANON: u32 = 2; -pub const XCASE: u32 = 4; -pub const ECHO: u32 = 8; -pub const ECHOE: u32 = 16; -pub const ECHOK: u32 = 32; -pub const ECHONL: u32 = 64; -pub const NOFLSH: u32 = 128; -pub const TOSTOP: u32 = 256; -pub const ECHOCTL: u32 = 512; -pub const ECHOPRT: u32 = 1024; -pub const ECHOKE: u32 = 2048; -pub const FLUSHO: u32 = 4096; -pub const PENDIN: u32 = 16384; -pub const IEXTEN: u32 = 32768; -pub const EXTPROC: u32 = 65536; -pub const TCSANOW: u32 = 0; -pub const TCSADRAIN: u32 = 1; -pub const TCSAFLUSH: u32 = 2; -pub const TIOCPKT_DATA: u32 = 0; -pub const TIOCPKT_FLUSHREAD: u32 = 1; -pub const TIOCPKT_FLUSHWRITE: u32 = 2; -pub const TIOCPKT_STOP: u32 = 4; -pub const TIOCPKT_START: u32 = 8; -pub const TIOCPKT_NOSTOP: u32 = 16; -pub const TIOCPKT_DOSTOP: u32 = 32; -pub const TIOCPKT_IOCTL: u32 = 64; -pub const TIOCSER_TEMT: u32 = 1; -pub const NCC: u32 = 8; -pub const TIOCM_LE: u32 = 1; -pub const TIOCM_DTR: u32 = 2; -pub const TIOCM_RTS: u32 = 4; -pub const TIOCM_ST: u32 = 8; -pub const TIOCM_SR: u32 = 16; -pub const TIOCM_CTS: u32 = 32; -pub const TIOCM_CAR: u32 = 64; -pub const TIOCM_RNG: u32 = 128; -pub const TIOCM_DSR: u32 = 256; -pub const TIOCM_CD: u32 = 64; -pub const TIOCM_RI: u32 = 128; -pub const TIOCM_OUT1: u32 = 8192; -pub const TIOCM_OUT2: u32 = 16384; -pub const TIOCM_LOOP: u32 = 32768; -pub const UIO_FASTIOV: u32 = 8; -pub const UIO_MAXIOV: u32 = 1024; -pub const UNIX_PATH_MAX: u32 = 108; -pub const __X32_SYSCALL_BIT: u32 = 1073741824; -pub const __NR_read: u32 = 1073741824; -pub const __NR_write: u32 = 1073741825; -pub const __NR_open: u32 = 1073741826; -pub const __NR_close: u32 = 1073741827; -pub const __NR_stat: u32 = 1073741828; -pub const __NR_fstat: u32 = 1073741829; -pub const __NR_lstat: u32 = 1073741830; -pub const __NR_poll: u32 = 1073741831; -pub const __NR_lseek: u32 = 1073741832; -pub const __NR_mmap: u32 = 1073741833; -pub const __NR_mprotect: u32 = 1073741834; -pub const __NR_munmap: u32 = 1073741835; -pub const __NR_brk: u32 = 1073741836; -pub const __NR_rt_sigprocmask: u32 = 1073741838; -pub const __NR_pread64: u32 = 1073741841; -pub const __NR_pwrite64: u32 = 1073741842; -pub const __NR_access: u32 = 1073741845; -pub const __NR_pipe: u32 = 1073741846; -pub const __NR_select: u32 = 1073741847; -pub const __NR_sched_yield: u32 = 1073741848; -pub const __NR_mremap: u32 = 1073741849; -pub const __NR_msync: u32 = 1073741850; -pub const __NR_mincore: u32 = 1073741851; -pub const __NR_madvise: u32 = 1073741852; -pub const __NR_shmget: u32 = 1073741853; -pub const __NR_shmat: u32 = 1073741854; -pub const __NR_shmctl: u32 = 1073741855; -pub const __NR_dup: u32 = 1073741856; -pub const __NR_dup2: u32 = 1073741857; -pub const __NR_pause: u32 = 1073741858; -pub const __NR_nanosleep: u32 = 1073741859; -pub const __NR_getitimer: u32 = 1073741860; -pub const __NR_alarm: u32 = 1073741861; -pub const __NR_setitimer: u32 = 1073741862; -pub const __NR_getpid: u32 = 1073741863; -pub const __NR_sendfile: u32 = 1073741864; -pub const __NR_socket: u32 = 1073741865; -pub const __NR_connect: u32 = 1073741866; -pub const __NR_accept: u32 = 1073741867; -pub const __NR_sendto: u32 = 1073741868; -pub const __NR_shutdown: u32 = 1073741872; -pub const __NR_bind: u32 = 1073741873; -pub const __NR_listen: u32 = 1073741874; -pub const __NR_getsockname: u32 = 1073741875; -pub const __NR_getpeername: u32 = 1073741876; -pub const __NR_socketpair: u32 = 1073741877; -pub const __NR_clone: u32 = 1073741880; -pub const __NR_fork: u32 = 1073741881; -pub const __NR_vfork: u32 = 1073741882; -pub const __NR_exit: u32 = 1073741884; -pub const __NR_wait4: u32 = 1073741885; -pub const __NR_kill: u32 = 1073741886; -pub const __NR_uname: u32 = 1073741887; -pub const __NR_semget: u32 = 1073741888; -pub const __NR_semop: u32 = 1073741889; -pub const __NR_semctl: u32 = 1073741890; -pub const __NR_shmdt: u32 = 1073741891; -pub const __NR_msgget: u32 = 1073741892; -pub const __NR_msgsnd: u32 = 1073741893; -pub const __NR_msgrcv: u32 = 1073741894; -pub const __NR_msgctl: u32 = 1073741895; -pub const __NR_fcntl: u32 = 1073741896; -pub const __NR_flock: u32 = 1073741897; -pub const __NR_fsync: u32 = 1073741898; -pub const __NR_fdatasync: u32 = 1073741899; -pub const __NR_truncate: u32 = 1073741900; -pub const __NR_ftruncate: u32 = 1073741901; -pub const __NR_getdents: u32 = 1073741902; -pub const __NR_getcwd: u32 = 1073741903; -pub const __NR_chdir: u32 = 1073741904; -pub const __NR_fchdir: u32 = 1073741905; -pub const __NR_rename: u32 = 1073741906; -pub const __NR_mkdir: u32 = 1073741907; -pub const __NR_rmdir: u32 = 1073741908; -pub const __NR_creat: u32 = 1073741909; -pub const __NR_link: u32 = 1073741910; -pub const __NR_unlink: u32 = 1073741911; -pub const __NR_symlink: u32 = 1073741912; -pub const __NR_readlink: u32 = 1073741913; -pub const __NR_chmod: u32 = 1073741914; -pub const __NR_fchmod: u32 = 1073741915; -pub const __NR_chown: u32 = 1073741916; -pub const __NR_fchown: u32 = 1073741917; -pub const __NR_lchown: u32 = 1073741918; -pub const __NR_umask: u32 = 1073741919; -pub const __NR_gettimeofday: u32 = 1073741920; -pub const __NR_getrlimit: u32 = 1073741921; -pub const __NR_getrusage: u32 = 1073741922; -pub const __NR_sysinfo: u32 = 1073741923; -pub const __NR_times: u32 = 1073741924; -pub const __NR_getuid: u32 = 1073741926; -pub const __NR_syslog: u32 = 1073741927; -pub const __NR_getgid: u32 = 1073741928; -pub const __NR_setuid: u32 = 1073741929; -pub const __NR_setgid: u32 = 1073741930; -pub const __NR_geteuid: u32 = 1073741931; -pub const __NR_getegid: u32 = 1073741932; -pub const __NR_setpgid: u32 = 1073741933; -pub const __NR_getppid: u32 = 1073741934; -pub const __NR_getpgrp: u32 = 1073741935; -pub const __NR_setsid: u32 = 1073741936; -pub const __NR_setreuid: u32 = 1073741937; -pub const __NR_setregid: u32 = 1073741938; -pub const __NR_getgroups: u32 = 1073741939; -pub const __NR_setgroups: u32 = 1073741940; -pub const __NR_setresuid: u32 = 1073741941; -pub const __NR_getresuid: u32 = 1073741942; -pub const __NR_setresgid: u32 = 1073741943; -pub const __NR_getresgid: u32 = 1073741944; -pub const __NR_getpgid: u32 = 1073741945; -pub const __NR_setfsuid: u32 = 1073741946; -pub const __NR_setfsgid: u32 = 1073741947; -pub const __NR_getsid: u32 = 1073741948; -pub const __NR_capget: u32 = 1073741949; -pub const __NR_capset: u32 = 1073741950; -pub const __NR_rt_sigsuspend: u32 = 1073741954; -pub const __NR_utime: u32 = 1073741956; -pub const __NR_mknod: u32 = 1073741957; -pub const __NR_personality: u32 = 1073741959; -pub const __NR_ustat: u32 = 1073741960; -pub const __NR_statfs: u32 = 1073741961; -pub const __NR_fstatfs: u32 = 1073741962; -pub const __NR_sysfs: u32 = 1073741963; -pub const __NR_getpriority: u32 = 1073741964; -pub const __NR_setpriority: u32 = 1073741965; -pub const __NR_sched_setparam: u32 = 1073741966; -pub const __NR_sched_getparam: u32 = 1073741967; -pub const __NR_sched_setscheduler: u32 = 1073741968; -pub const __NR_sched_getscheduler: u32 = 1073741969; -pub const __NR_sched_get_priority_max: u32 = 1073741970; -pub const __NR_sched_get_priority_min: u32 = 1073741971; -pub const __NR_sched_rr_get_interval: u32 = 1073741972; -pub const __NR_mlock: u32 = 1073741973; -pub const __NR_munlock: u32 = 1073741974; -pub const __NR_mlockall: u32 = 1073741975; -pub const __NR_munlockall: u32 = 1073741976; -pub const __NR_vhangup: u32 = 1073741977; -pub const __NR_modify_ldt: u32 = 1073741978; -pub const __NR_pivot_root: u32 = 1073741979; -pub const __NR_prctl: u32 = 1073741981; -pub const __NR_arch_prctl: u32 = 1073741982; -pub const __NR_adjtimex: u32 = 1073741983; -pub const __NR_setrlimit: u32 = 1073741984; -pub const __NR_chroot: u32 = 1073741985; -pub const __NR_sync: u32 = 1073741986; -pub const __NR_acct: u32 = 1073741987; -pub const __NR_settimeofday: u32 = 1073741988; -pub const __NR_mount: u32 = 1073741989; -pub const __NR_umount2: u32 = 1073741990; -pub const __NR_swapon: u32 = 1073741991; -pub const __NR_swapoff: u32 = 1073741992; -pub const __NR_reboot: u32 = 1073741993; -pub const __NR_sethostname: u32 = 1073741994; -pub const __NR_setdomainname: u32 = 1073741995; -pub const __NR_iopl: u32 = 1073741996; -pub const __NR_ioperm: u32 = 1073741997; -pub const __NR_init_module: u32 = 1073741999; -pub const __NR_delete_module: u32 = 1073742000; -pub const __NR_quotactl: u32 = 1073742003; -pub const __NR_getpmsg: u32 = 1073742005; -pub const __NR_putpmsg: u32 = 1073742006; -pub const __NR_afs_syscall: u32 = 1073742007; -pub const __NR_tuxcall: u32 = 1073742008; -pub const __NR_security: u32 = 1073742009; -pub const __NR_gettid: u32 = 1073742010; -pub const __NR_readahead: u32 = 1073742011; -pub const __NR_setxattr: u32 = 1073742012; -pub const __NR_lsetxattr: u32 = 1073742013; -pub const __NR_fsetxattr: u32 = 1073742014; -pub const __NR_getxattr: u32 = 1073742015; -pub const __NR_lgetxattr: u32 = 1073742016; -pub const __NR_fgetxattr: u32 = 1073742017; -pub const __NR_listxattr: u32 = 1073742018; -pub const __NR_llistxattr: u32 = 1073742019; -pub const __NR_flistxattr: u32 = 1073742020; -pub const __NR_removexattr: u32 = 1073742021; -pub const __NR_lremovexattr: u32 = 1073742022; -pub const __NR_fremovexattr: u32 = 1073742023; -pub const __NR_tkill: u32 = 1073742024; -pub const __NR_time: u32 = 1073742025; -pub const __NR_futex: u32 = 1073742026; -pub const __NR_sched_setaffinity: u32 = 1073742027; -pub const __NR_sched_getaffinity: u32 = 1073742028; -pub const __NR_io_destroy: u32 = 1073742031; -pub const __NR_io_getevents: u32 = 1073742032; -pub const __NR_io_cancel: u32 = 1073742034; -pub const __NR_lookup_dcookie: u32 = 1073742036; -pub const __NR_epoll_create: u32 = 1073742037; -pub const __NR_remap_file_pages: u32 = 1073742040; -pub const __NR_getdents64: u32 = 1073742041; -pub const __NR_set_tid_address: u32 = 1073742042; -pub const __NR_restart_syscall: u32 = 1073742043; -pub const __NR_semtimedop: u32 = 1073742044; -pub const __NR_fadvise64: u32 = 1073742045; -pub const __NR_timer_settime: u32 = 1073742047; -pub const __NR_timer_gettime: u32 = 1073742048; -pub const __NR_timer_getoverrun: u32 = 1073742049; -pub const __NR_timer_delete: u32 = 1073742050; -pub const __NR_clock_settime: u32 = 1073742051; -pub const __NR_clock_gettime: u32 = 1073742052; -pub const __NR_clock_getres: u32 = 1073742053; -pub const __NR_clock_nanosleep: u32 = 1073742054; -pub const __NR_exit_group: u32 = 1073742055; -pub const __NR_epoll_wait: u32 = 1073742056; -pub const __NR_epoll_ctl: u32 = 1073742057; -pub const __NR_tgkill: u32 = 1073742058; -pub const __NR_utimes: u32 = 1073742059; -pub const __NR_mbind: u32 = 1073742061; -pub const __NR_set_mempolicy: u32 = 1073742062; -pub const __NR_get_mempolicy: u32 = 1073742063; -pub const __NR_mq_open: u32 = 1073742064; -pub const __NR_mq_unlink: u32 = 1073742065; -pub const __NR_mq_timedsend: u32 = 1073742066; -pub const __NR_mq_timedreceive: u32 = 1073742067; -pub const __NR_mq_getsetattr: u32 = 1073742069; -pub const __NR_add_key: u32 = 1073742072; -pub const __NR_request_key: u32 = 1073742073; -pub const __NR_keyctl: u32 = 1073742074; -pub const __NR_ioprio_set: u32 = 1073742075; -pub const __NR_ioprio_get: u32 = 1073742076; -pub const __NR_inotify_init: u32 = 1073742077; -pub const __NR_inotify_add_watch: u32 = 1073742078; -pub const __NR_inotify_rm_watch: u32 = 1073742079; -pub const __NR_migrate_pages: u32 = 1073742080; -pub const __NR_openat: u32 = 1073742081; -pub const __NR_mkdirat: u32 = 1073742082; -pub const __NR_mknodat: u32 = 1073742083; -pub const __NR_fchownat: u32 = 1073742084; -pub const __NR_futimesat: u32 = 1073742085; -pub const __NR_newfstatat: u32 = 1073742086; -pub const __NR_unlinkat: u32 = 1073742087; -pub const __NR_renameat: u32 = 1073742088; -pub const __NR_linkat: u32 = 1073742089; -pub const __NR_symlinkat: u32 = 1073742090; -pub const __NR_readlinkat: u32 = 1073742091; -pub const __NR_fchmodat: u32 = 1073742092; -pub const __NR_faccessat: u32 = 1073742093; -pub const __NR_pselect6: u32 = 1073742094; -pub const __NR_ppoll: u32 = 1073742095; -pub const __NR_unshare: u32 = 1073742096; -pub const __NR_splice: u32 = 1073742099; -pub const __NR_tee: u32 = 1073742100; -pub const __NR_sync_file_range: u32 = 1073742101; -pub const __NR_utimensat: u32 = 1073742104; -pub const __NR_epoll_pwait: u32 = 1073742105; -pub const __NR_signalfd: u32 = 1073742106; -pub const __NR_timerfd_create: u32 = 1073742107; -pub const __NR_eventfd: u32 = 1073742108; -pub const __NR_fallocate: u32 = 1073742109; -pub const __NR_timerfd_settime: u32 = 1073742110; -pub const __NR_timerfd_gettime: u32 = 1073742111; -pub const __NR_accept4: u32 = 1073742112; -pub const __NR_signalfd4: u32 = 1073742113; -pub const __NR_eventfd2: u32 = 1073742114; -pub const __NR_epoll_create1: u32 = 1073742115; -pub const __NR_dup3: u32 = 1073742116; -pub const __NR_pipe2: u32 = 1073742117; -pub const __NR_inotify_init1: u32 = 1073742118; -pub const __NR_perf_event_open: u32 = 1073742122; -pub const __NR_fanotify_init: u32 = 1073742124; -pub const __NR_fanotify_mark: u32 = 1073742125; -pub const __NR_prlimit64: u32 = 1073742126; -pub const __NR_name_to_handle_at: u32 = 1073742127; -pub const __NR_open_by_handle_at: u32 = 1073742128; -pub const __NR_clock_adjtime: u32 = 1073742129; -pub const __NR_syncfs: u32 = 1073742130; -pub const __NR_setns: u32 = 1073742132; -pub const __NR_getcpu: u32 = 1073742133; -pub const __NR_kcmp: u32 = 1073742136; -pub const __NR_finit_module: u32 = 1073742137; -pub const __NR_sched_setattr: u32 = 1073742138; -pub const __NR_sched_getattr: u32 = 1073742139; -pub const __NR_renameat2: u32 = 1073742140; -pub const __NR_seccomp: u32 = 1073742141; -pub const __NR_getrandom: u32 = 1073742142; -pub const __NR_memfd_create: u32 = 1073742143; -pub const __NR_kexec_file_load: u32 = 1073742144; -pub const __NR_bpf: u32 = 1073742145; -pub const __NR_userfaultfd: u32 = 1073742147; -pub const __NR_membarrier: u32 = 1073742148; -pub const __NR_mlock2: u32 = 1073742149; -pub const __NR_copy_file_range: u32 = 1073742150; -pub const __NR_pkey_mprotect: u32 = 1073742153; -pub const __NR_pkey_alloc: u32 = 1073742154; -pub const __NR_pkey_free: u32 = 1073742155; -pub const __NR_statx: u32 = 1073742156; -pub const __NR_io_pgetevents: u32 = 1073742157; -pub const __NR_rseq: u32 = 1073742158; -pub const __NR_pidfd_send_signal: u32 = 1073742248; -pub const __NR_io_uring_setup: u32 = 1073742249; -pub const __NR_io_uring_enter: u32 = 1073742250; -pub const __NR_io_uring_register: u32 = 1073742251; -pub const __NR_open_tree: u32 = 1073742252; -pub const __NR_move_mount: u32 = 1073742253; -pub const __NR_fsopen: u32 = 1073742254; -pub const __NR_fsconfig: u32 = 1073742255; -pub const __NR_fsmount: u32 = 1073742256; -pub const __NR_fspick: u32 = 1073742257; -pub const __NR_pidfd_open: u32 = 1073742258; -pub const __NR_clone3: u32 = 1073742259; -pub const __NR_close_range: u32 = 1073742260; -pub const __NR_openat2: u32 = 1073742261; -pub const __NR_pidfd_getfd: u32 = 1073742262; -pub const __NR_faccessat2: u32 = 1073742263; -pub const __NR_process_madvise: u32 = 1073742264; -pub const __NR_epoll_pwait2: u32 = 1073742265; -pub const __NR_mount_setattr: u32 = 1073742266; -pub const __NR_quotactl_fd: u32 = 1073742267; -pub const __NR_landlock_create_ruleset: u32 = 1073742268; -pub const __NR_landlock_add_rule: u32 = 1073742269; -pub const __NR_landlock_restrict_self: u32 = 1073742270; -pub const __NR_memfd_secret: u32 = 1073742271; -pub const __NR_process_mrelease: u32 = 1073742272; -pub const __NR_futex_waitv: u32 = 1073742273; -pub const __NR_set_mempolicy_home_node: u32 = 1073742274; -pub const __NR_rt_sigaction: u32 = 1073742336; -pub const __NR_rt_sigreturn: u32 = 1073742337; -pub const __NR_ioctl: u32 = 1073742338; -pub const __NR_readv: u32 = 1073742339; -pub const __NR_writev: u32 = 1073742340; -pub const __NR_recvfrom: u32 = 1073742341; -pub const __NR_sendmsg: u32 = 1073742342; -pub const __NR_recvmsg: u32 = 1073742343; -pub const __NR_execve: u32 = 1073742344; -pub const __NR_ptrace: u32 = 1073742345; -pub const __NR_rt_sigpending: u32 = 1073742346; -pub const __NR_rt_sigtimedwait: u32 = 1073742347; -pub const __NR_rt_sigqueueinfo: u32 = 1073742348; -pub const __NR_sigaltstack: u32 = 1073742349; -pub const __NR_timer_create: u32 = 1073742350; -pub const __NR_mq_notify: u32 = 1073742351; -pub const __NR_kexec_load: u32 = 1073742352; -pub const __NR_waitid: u32 = 1073742353; -pub const __NR_set_robust_list: u32 = 1073742354; -pub const __NR_get_robust_list: u32 = 1073742355; -pub const __NR_vmsplice: u32 = 1073742356; -pub const __NR_move_pages: u32 = 1073742357; -pub const __NR_preadv: u32 = 1073742358; -pub const __NR_pwritev: u32 = 1073742359; -pub const __NR_rt_tgsigqueueinfo: u32 = 1073742360; -pub const __NR_recvmmsg: u32 = 1073742361; -pub const __NR_sendmmsg: u32 = 1073742362; -pub const __NR_process_vm_readv: u32 = 1073742363; -pub const __NR_process_vm_writev: u32 = 1073742364; -pub const __NR_setsockopt: u32 = 1073742365; -pub const __NR_getsockopt: u32 = 1073742366; -pub const __NR_io_setup: u32 = 1073742367; -pub const __NR_io_submit: u32 = 1073742368; -pub const __NR_execveat: u32 = 1073742369; -pub const __NR_preadv2: u32 = 1073742370; -pub const __NR_pwritev2: u32 = 1073742371; -pub const __OLD_UTS_LEN: u32 = 8; -pub const __NEW_UTS_LEN: u32 = 64; -pub const WNOHANG: u32 = 1; -pub const WUNTRACED: u32 = 2; -pub const WSTOPPED: u32 = 2; -pub const WEXITED: u32 = 4; -pub const WCONTINUED: u32 = 8; -pub const WNOWAIT: u32 = 16777216; -pub const __WNOTHREAD: u32 = 536870912; -pub const __WALL: u32 = 1073741824; -pub const __WCLONE: u32 = 2147483648; -pub const P_ALL: u32 = 0; -pub const P_PID: u32 = 1; -pub const P_PGID: u32 = 2; -pub const P_PIDFD: u32 = 3; -pub const XATTR_CREATE: u32 = 1; -pub const XATTR_REPLACE: u32 = 2; -pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0"; -pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0"; -pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0"; -pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0"; -pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0"; -pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0"; -pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0"; -pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0"; -pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0"; -pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0"; -pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0"; -pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0"; -pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0"; -pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0"; -pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0"; -pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0"; -pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0"; -pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0"; -pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0"; -pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0"; -pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0"; -pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0"; -pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0"; -pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0"; -pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0"; -pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0"; -pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0"; -pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0"; -pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0"; -pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0"; -pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0"; -pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0"; -pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0"; -pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0"; -pub const MFD_CLOEXEC: u32 = 1; -pub const MFD_ALLOW_SEALING: u32 = 2; -pub const MFD_HUGETLB: u32 = 4; -pub const MFD_NOEXEC_SEAL: u32 = 8; -pub const MFD_EXEC: u32 = 16; -pub const MFD_HUGE_SHIFT: u32 = 26; -pub const MFD_HUGE_MASK: u32 = 63; -pub const MFD_HUGE_64KB: u32 = 1073741824; -pub const MFD_HUGE_512KB: u32 = 1275068416; -pub const MFD_HUGE_1MB: u32 = 1342177280; -pub const MFD_HUGE_2MB: u32 = 1409286144; -pub const MFD_HUGE_8MB: u32 = 1543503872; -pub const MFD_HUGE_16MB: u32 = 1610612736; -pub const MFD_HUGE_32MB: u32 = 1677721600; -pub const MFD_HUGE_256MB: u32 = 1879048192; -pub const MFD_HUGE_512MB: u32 = 1946157056; -pub const MFD_HUGE_1GB: u32 = 2013265920; -pub const MFD_HUGE_2GB: u32 = 2080374784; -pub const MFD_HUGE_16GB: u32 = 2281701376; -pub const TFD_TIMER_ABSTIME: u32 = 1; -pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; -pub const TFD_CLOEXEC: u32 = 524288; -pub const TFD_NONBLOCK: u32 = 2048; -pub const USERFAULTFD_IOC: u32 = 170; -pub const _UFFDIO_REGISTER: u32 = 0; -pub const _UFFDIO_UNREGISTER: u32 = 1; -pub const _UFFDIO_WAKE: u32 = 2; -pub const _UFFDIO_COPY: u32 = 3; -pub const _UFFDIO_ZEROPAGE: u32 = 4; -pub const _UFFDIO_WRITEPROTECT: u32 = 6; -pub const _UFFDIO_CONTINUE: u32 = 7; -pub const _UFFDIO_API: u32 = 63; -pub const UFFDIO: u32 = 170; -pub const UFFD_EVENT_PAGEFAULT: u32 = 18; -pub const UFFD_EVENT_FORK: u32 = 19; -pub const UFFD_EVENT_REMAP: u32 = 20; -pub const UFFD_EVENT_REMOVE: u32 = 21; -pub const UFFD_EVENT_UNMAP: u32 = 22; -pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; -pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; -pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; -pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; -pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; -pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; -pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; -pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; -pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; -pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; -pub const UFFD_FEATURE_SIGBUS: u32 = 128; -pub const UFFD_FEATURE_THREAD_ID: u32 = 256; -pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; -pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; -pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; -pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; -pub const UFFD_USER_MODE_ONLY: u32 = 1; -pub const IORING_FILE_INDEX_ALLOC: i32 = -1; -pub const IORING_SETUP_IOPOLL: u32 = 1; -pub const IORING_SETUP_SQPOLL: u32 = 2; -pub const IORING_SETUP_SQ_AFF: u32 = 4; -pub const IORING_SETUP_CQSIZE: u32 = 8; -pub const IORING_SETUP_CLAMP: u32 = 16; -pub const IORING_SETUP_ATTACH_WQ: u32 = 32; -pub const IORING_SETUP_R_DISABLED: u32 = 64; -pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; -pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; -pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; -pub const IORING_SETUP_SQE128: u32 = 1024; -pub const IORING_SETUP_CQE32: u32 = 2048; -pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; -pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; -pub const IORING_URING_CMD_FIXED: u32 = 1; -pub const IORING_FSYNC_DATASYNC: u32 = 1; -pub const IORING_TIMEOUT_ABS: u32 = 1; -pub const IORING_TIMEOUT_UPDATE: u32 = 2; -pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; -pub const IORING_TIMEOUT_REALTIME: u32 = 8; -pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; -pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; -pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; -pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; -pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; -pub const IORING_POLL_ADD_MULTI: u32 = 1; -pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; -pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; -pub const IORING_POLL_ADD_LEVEL: u32 = 8; -pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; -pub const IORING_ASYNC_CANCEL_FD: u32 = 2; -pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; -pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; -pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; -pub const IORING_RECV_MULTISHOT: u32 = 2; -pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; -pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; -pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; -pub const IORING_ACCEPT_MULTISHOT: u32 = 1; -pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; -pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; -pub const IORING_CQE_F_BUFFER: u32 = 1; -pub const IORING_CQE_F_MORE: u32 = 2; -pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; -pub const IORING_CQE_F_NOTIF: u32 = 8; -pub const IORING_OFF_SQ_RING: u32 = 0; -pub const IORING_OFF_CQ_RING: u32 = 134217728; -pub const IORING_OFF_SQES: u32 = 268435456; -pub const IORING_SQ_NEED_WAKEUP: u32 = 1; -pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; -pub const IORING_SQ_TASKRUN: u32 = 4; -pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; -pub const IORING_ENTER_GETEVENTS: u32 = 1; -pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; -pub const IORING_ENTER_SQ_WAIT: u32 = 4; -pub const IORING_ENTER_EXT_ARG: u32 = 8; -pub const IORING_ENTER_REGISTERED_RING: u32 = 16; -pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; -pub const IORING_FEAT_NODROP: u32 = 2; -pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; -pub const IORING_FEAT_RW_CUR_POS: u32 = 8; -pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; -pub const IORING_FEAT_FAST_POLL: u32 = 32; -pub const IORING_FEAT_POLL_32BITS: u32 = 64; -pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; -pub const IORING_FEAT_EXT_ARG: u32 = 256; -pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; -pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; -pub const IORING_FEAT_CQE_SKIP: u32 = 2048; -pub const IORING_FEAT_LINKED_FILE: u32 = 4096; -pub const IORING_FEAT_REG_REG_RING: u32 = 8192; -pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; -pub const IORING_REGISTER_FILES_SKIP: i32 = -2; -pub const IO_URING_OP_SUPPORTED: u32 = 1; -pub const DT_UNKNOWN: u32 = 0; -pub const DT_FIFO: u32 = 1; -pub const DT_CHR: u32 = 2; -pub const DT_DIR: u32 = 4; -pub const DT_BLK: u32 = 6; -pub const DT_REG: u32 = 8; -pub const DT_LNK: u32 = 10; -pub const DT_SOCK: u32 = 12; -pub const SHUT_RD: u32 = 0; -pub const SHUT_WR: u32 = 1; -pub const SHUT_RDWR: u32 = 2; -pub const STAT_HAVE_NSEC: u32 = 1; -pub const SOCK_STREAM: u32 = 1; -pub const SOCK_DGRAM: u32 = 2; -pub const SOCK_RAW: u32 = 3; -pub const SOCK_RDM: u32 = 4; -pub const SOCK_SEQPACKET: u32 = 5; -pub const F_OK: u32 = 0; -pub const R_OK: u32 = 4; -pub const W_OK: u32 = 2; -pub const X_OK: u32 = 1; -pub const UTIME_NOW: u32 = 1073741823; -pub const UTIME_OMIT: u32 = 1073741822; -pub const MSG_DONTWAIT: u32 = 64; -pub const AF_UNSPEC: u32 = 0; -pub const AF_UNIX: u32 = 1; -pub const AF_INET: u32 = 2; -pub const AF_AX25: u32 = 3; -pub const AF_IPX: u32 = 4; -pub const AF_APPLETALK: u32 = 5; -pub const AF_NETROM: u32 = 6; -pub const AF_BRIDGE: u32 = 7; -pub const AF_ATMPVC: u32 = 8; -pub const AF_X25: u32 = 9; -pub const AF_INET6: u32 = 10; -pub const AF_ROSE: u32 = 11; -pub const AF_DECnet: u32 = 12; -pub const AF_NETBEUI: u32 = 13; -pub const AF_SECURITY: u32 = 14; -pub const AF_KEY: u32 = 15; -pub const AF_NETLINK: u32 = 16; -pub const AF_PACKET: u32 = 17; -pub const AF_ASH: u32 = 18; -pub const AF_ECONET: u32 = 19; -pub const AF_ATMSVC: u32 = 20; -pub const AF_RDS: u32 = 21; -pub const AF_SNA: u32 = 22; -pub const AF_IRDA: u32 = 23; -pub const AF_PPPOX: u32 = 24; -pub const AF_WANPIPE: u32 = 25; -pub const AF_LLC: u32 = 26; -pub const AF_CAN: u32 = 29; -pub const AF_TIPC: u32 = 30; -pub const AF_BLUETOOTH: u32 = 31; -pub const AF_IUCV: u32 = 32; -pub const AF_RXRPC: u32 = 33; -pub const AF_ISDN: u32 = 34; -pub const AF_PHONET: u32 = 35; -pub const AF_IEEE802154: u32 = 36; -pub const AF_MAX: u32 = 37; -pub const MSG_OOB: u32 = 1; -pub const MSG_PEEK: u32 = 2; -pub const MSG_DONTROUTE: u32 = 4; -pub const MSG_CTRUNC: u32 = 8; -pub const MSG_PROBE: u32 = 16; -pub const MSG_TRUNC: u32 = 32; -pub const MSG_EOR: u32 = 128; -pub const MSG_WAITALL: u32 = 256; -pub const MSG_FIN: u32 = 512; -pub const MSG_SYN: u32 = 1024; -pub const MSG_CONFIRM: u32 = 2048; -pub const MSG_RST: u32 = 4096; -pub const MSG_ERRQUEUE: u32 = 8192; -pub const MSG_NOSIGNAL: u32 = 16384; -pub const MSG_MORE: u32 = 32768; -pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; -pub const STDIN_FILENO: u32 = 0; -pub const STDOUT_FILENO: u32 = 1; -pub const STDERR_FILENO: u32 = 2; -pub const RWF_HIPRI: u32 = 1; -pub const RWF_DSYNC: u32 = 2; -pub const RWF_SYNC: u32 = 4; -pub const RWF_NOWAIT: u32 = 8; -pub const RWF_APPEND: u32 = 16; -pub const EFD_SEMAPHORE: u32 = 1; -pub const EFD_CLOEXEC: u32 = 524288; -pub const EFD_NONBLOCK: u32 = 2048; -pub const EPOLLIN: u32 = 1; -pub const EPOLLPRI: u32 = 2; -pub const EPOLLOUT: u32 = 4; -pub const EPOLLERR: u32 = 8; -pub const EPOLLHUP: u32 = 16; -pub const EPOLLNVAL: u32 = 32; -pub const EPOLLRDNORM: u32 = 64; -pub const EPOLLRDBAND: u32 = 128; -pub const EPOLLWRNORM: u32 = 256; -pub const EPOLLWRBAND: u32 = 512; -pub const EPOLLMSG: u32 = 1024; -pub const EPOLLRDHUP: u32 = 8192; -pub const EPOLLEXCLUSIVE: u32 = 268435456; -pub const EPOLLWAKEUP: u32 = 536870912; -pub const EPOLLONESHOT: u32 = 1073741824; -pub const EPOLLET: u32 = 2147483648; -pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; -pub const TFD_CREATE_FLAGS: u32 = 526336; -pub const TFD_SETTIME_FLAGS: u32 = 1; -pub const ARCH_SET_FS: u32 = 4098; -pub const SCM_RIGHTS: u32 = 1; -pub const SCM_CREDENTIALS: u32 = 2; -pub const SCM_SECURITY: u32 = 3; -pub const UFFD_API: u32 = 170; -pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; -pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; -pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; -pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; -pub const UFFDIO_COPY_MODE_WP: u32 = 2; -pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; -pub const SPLICE_F_MOVE: u32 = 1; -pub const SPLICE_F_NONBLOCK: u32 = 2; -pub const SPLICE_F_MORE: u32 = 4; -pub const SPLICE_F_GIFT: u32 = 8; -pub const MNT_FORCE: u32 = 1; -pub const MNT_DETACH: u32 = 2; -pub const MNT_EXPIRE: u32 = 4; -pub const UMOUNT_NOFOLLOW: u32 = 8; -pub const UMOUNT_UNUSED: u32 = 2147483648; -pub const _NSIG: u32 = 64; -pub type size_t = crate::ctypes::c_uint; -pub type ssize_t = crate::ctypes::c_int; -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 32usize], -} -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_long_t = crate::ctypes::c_longlong; -pub type __kernel_ulong_t = crate::ctypes::c_ulonglong; -pub type __kernel_old_uid_t = crate::ctypes::c_ushort; -pub type __kernel_old_gid_t = crate::ctypes::c_ushort; -pub type __kernel_old_dev_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_size_t = crate::ctypes::c_uint; -pub type __kernel_ssize_t = crate::ctypes::c_int; -pub type __kernel_ptrdiff_t = crate::ctypes::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_header_struct { -pub version: __u32, -pub pid: crate::ctypes::c_int, -} -pub type cap_user_header_t = *mut __user_cap_header_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_data_struct { -pub effective: __u32, -pub permitted: __u32, -pub inheritable: __u32, -} -pub type cap_user_data_t = *mut __user_cap_data_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data { -pub magic_etc: __le32, -pub data: [vfs_cap_data__bindgen_ty_1; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data { -pub magic_etc: __le32, -pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], -pub rootid: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct f_owner_ex { -pub type_: crate::ctypes::c_int, -pub pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_off_t, -pub l_len: __kernel_off_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock64 { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_loff_t, -pub l_len: __kernel_loff_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct open_how { -pub flags: __u64, -pub mode: __u64, -pub resolve: __u64, -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct epoll_event { -pub events: __poll_t, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v1 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub master_key_descriptor: [__u8; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_key { -pub mode: __u32, -pub raw: [__u8; 64usize], -pub size: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v2 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub __reserved: [__u8; 4usize], -pub master_key_identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_get_policy_ex_arg { -pub policy_size: __u64, -pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { -pub version: __u8, -pub v1: fscrypt_policy_v1, -pub v2: fscrypt_policy_v2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_key_specifier { -pub type_: __u32, -pub __reserved: __u32, -pub u: fscrypt_key_specifier__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_key_specifier__bindgen_ty_1 { -pub __reserved: [__u8; 32usize], -pub descriptor: [__u8; 8usize], -pub identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct fscrypt_provisioning_key_payload { -pub type_: __u32, -pub __reserved: __u32, -pub raw: __IncompleteArrayField<__u8>, -} -#[repr(C)] -pub struct fscrypt_add_key_arg { -pub key_spec: fscrypt_key_specifier, -pub raw_size: __u32, -pub key_id: __u32, -pub __reserved: [__u32; 8usize], -pub raw: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_remove_key_arg { -pub key_spec: fscrypt_key_specifier, -pub removal_status_flags: __u32, -pub __reserved: [__u32; 5usize], +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], } #[repr(C)] #[derive(Copy, Clone)] @@ -2796,19 +230,6 @@ pub user_count: __u32, pub __out_reserved: [__u32; 13usize], } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum fsconfig_command { -FSCONFIG_SET_FLAG = 0, -FSCONFIG_SET_STRING = 1, -FSCONFIG_SET_BINARY = 2, -FSCONFIG_SET_PATH = 3, -FSCONFIG_SET_PATH_EMPTY = 4, -FSCONFIG_SET_FD = 5, -FSCONFIG_CMD_CREATE = 6, -FSCONFIG_CMD_RECONFIGURE = 7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct mount_attr { @@ -2875,7 +296,6 @@ pub fsx_cowextsize: __u32, pub fsx_pad: [crate::ctypes::c_uchar; 8usize], } -pub type __kernel_rwf_t = crate::ctypes::c_int; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct futex_waitv { @@ -2889,670 +309,21 @@ pub struct robust_list { pub next: *mut robust_list, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct robust_list_head { -pub list: robust_list, -pub futex_offset: crate::ctypes::c_long, -pub list_op_pending: *mut robust_list, -} -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], -} -pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; -pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; -pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; -pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; -pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; -pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; -pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; -pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; -pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; -pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; -pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; -pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; -pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; -pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; -pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; -pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; -pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; -pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; -pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; -pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; -pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; -pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; -pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; -pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; -pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; -pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; -pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; -pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; -pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_1 { -IPPROTO_IP = 0, -IPPROTO_ICMP = 1, -IPPROTO_IGMP = 2, -IPPROTO_IPIP = 4, -IPPROTO_TCP = 6, -IPPROTO_EGP = 8, -IPPROTO_PUP = 12, -IPPROTO_UDP = 17, -IPPROTO_IDP = 22, -IPPROTO_TP = 29, -IPPROTO_DCCP = 33, -IPPROTO_IPV6 = 41, -IPPROTO_RSVP = 46, -IPPROTO_GRE = 47, -IPPROTO_ESP = 50, -IPPROTO_AH = 51, -IPPROTO_MTP = 92, -IPPROTO_BEETPH = 94, -IPPROTO_ENCAP = 98, -IPPROTO_PIM = 103, -IPPROTO_COMP = 108, -IPPROTO_L2TP = 115, -IPPROTO_SCTP = 132, -IPPROTO_UDPLITE = 136, -IPPROTO_MPLS = 137, -IPPROTO_ETHERNET = 143, -IPPROTO_RAW = 255, -IPPROTO_MPTCP = 262, -IPPROTO_MAX = 263, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_addr { -pub s_addr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq { -pub imr_multiaddr: in_addr, -pub imr_interface: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreqn { -pub imr_multiaddr: in_addr, -pub imr_address: in_addr, -pub imr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq_source { -pub imr_multiaddr: __be32, -pub imr_interface: __be32, -pub imr_sourceaddr: __be32, -} -#[repr(C)] -pub struct ip_msfilter { -pub imsf_multiaddr: __be32, -pub imsf_interface: __be32, -pub imsf_fmode: __u32, -pub imsf_numsrc: __u32, -pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, -} -#[repr(C)] -pub struct ip_msfilter__bindgen_ty_1 { -pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, -pub __bindgen_anon_1: __BindgenUnionField, -pub bindgen_union_field: u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { -pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -pub imsf_slist_flex: __IncompleteArrayField<__be32>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_req { -pub gr_interface: __u32, -pub gr_group: __kernel_sockaddr_storage, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_source_req { -pub gsr_interface: __u32, -pub gsr_group: __kernel_sockaddr_storage, -pub gsr_source: __kernel_sockaddr_storage, -} -#[repr(C)] -pub struct group_filter { -pub __bindgen_anon_1: group_filter__bindgen_ty_1, -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u32; 67usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { -pub gf_interface_aux: __u32, -pub gf_group_aux: __kernel_sockaddr_storage, -pub gf_fmode_aux: __u32, -pub gf_numsrc_aux: __u32, -pub gf_slist: [__kernel_sockaddr_storage; 1usize], -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { -pub gf_interface: __u32, -pub gf_group: __kernel_sockaddr_storage, -pub gf_fmode: __u32, -pub gf_numsrc: __u32, -pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_pktinfo { -pub ipi_ifindex: crate::ctypes::c_int, -pub ipi_spec_dst: in_addr, -pub ipi_addr: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_in { -pub sin_family: __kernel_sa_family_t, -pub sin_port: __be16, -pub sin_addr: in_addr, -pub __pad: [crate::ctypes::c_uchar; 8usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct inotify_event { -pub wd: __s32, -pub mask: __u32, -pub cookie: __u32, -pub len: __u32, -pub name: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct iphdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub tos: __u8, -pub tot_len: __be16, -pub id: __be16, -pub frag_off: __be16, -pub ttl: __u8, -pub protocol: __u8, -pub check: __sum16, -pub __bindgen_anon_1: iphdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union iphdr__bindgen_ty_1 { -pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: __be32, -pub daddr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: __be32, -pub daddr: __be32, -} -impl iphdr { -#[inline] -pub fn ihl(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_ihl(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; -ihl as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_auth_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub reserved: __be16, -pub spi: __be32, -pub seq_no: __be32, -pub auth_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_esp_hdr { -pub spi: __be32, -pub seq_no: __be32, -pub enc_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_comp_hdr { -pub nexthdr: __u8, -pub flags: __u8, -pub cpi: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_beet_phdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub padlen: __u8, -pub reserved: __u8, -} -pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; -pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; -pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; -pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; -pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; -pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; -pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; -pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; -pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; -pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; -pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; -pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; -pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; -pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; -pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; -pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; -pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; -pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; -pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; -pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; -pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; -pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; -pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; -pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; -pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; -pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; -pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; -pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; -pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_2 { -IPV4_DEVCONF_FORWARDING = 1, -IPV4_DEVCONF_MC_FORWARDING = 2, -IPV4_DEVCONF_PROXY_ARP = 3, -IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, -IPV4_DEVCONF_SECURE_REDIRECTS = 5, -IPV4_DEVCONF_SEND_REDIRECTS = 6, -IPV4_DEVCONF_SHARED_MEDIA = 7, -IPV4_DEVCONF_RP_FILTER = 8, -IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, -IPV4_DEVCONF_BOOTP_RELAY = 10, -IPV4_DEVCONF_LOG_MARTIANS = 11, -IPV4_DEVCONF_TAG = 12, -IPV4_DEVCONF_ARPFILTER = 13, -IPV4_DEVCONF_MEDIUM_ID = 14, -IPV4_DEVCONF_NOXFRM = 15, -IPV4_DEVCONF_NOPOLICY = 16, -IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, -IPV4_DEVCONF_ARP_ANNOUNCE = 18, -IPV4_DEVCONF_ARP_IGNORE = 19, -IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, -IPV4_DEVCONF_ARP_ACCEPT = 21, -IPV4_DEVCONF_ARP_NOTIFY = 22, -IPV4_DEVCONF_ACCEPT_LOCAL = 23, -IPV4_DEVCONF_SRC_VMARK = 24, -IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, -IPV4_DEVCONF_ROUTE_LOCALNET = 26, -IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, -IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, -IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, -IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, -IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, -IPV4_DEVCONF_BC_FORWARDING = 32, -IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, -__IPV4_DEVCONF_MAX = 34, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_addr { -pub in6_u: in6_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union in6_addr__bindgen_ty_1 { -pub u6_addr8: [__u8; 16usize], -pub u6_addr16: [__be16; 8usize], -pub u6_addr32: [__be32; 4usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_in6 { -pub sin6_family: crate::ctypes::c_ushort, -pub sin6_port: __be16, -pub sin6_flowinfo: __be32, -pub sin6_addr: in6_addr, -pub sin6_scope_id: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6_mreq { -pub ipv6mr_multiaddr: in6_addr, -pub ipv6mr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_flowlabel_req { -pub flr_dst: in6_addr, -pub flr_label: __be32, -pub flr_action: __u8, -pub flr_share: __u8, -pub flr_flags: __u16, -pub flr_expires: __u16, -pub flr_linger: __u16, -pub __flr_pad: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_pktinfo { -pub ipi6_addr: in6_addr, -pub ipi6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ip6_mtuinfo { -pub ip6m_addr: sockaddr_in6, -pub ip6m_mtu: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_ifreq { -pub ifr6_addr: in6_addr, -pub ifr6_prefixlen: __u32, -pub ifr6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_rt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub type_: __u8, -pub segments_left: __u8, -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_opt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -} -#[repr(C)] -pub struct rt0_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rt2_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: in6_addr, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct ipv6_destopt_hao { -pub type_: __u8, -pub length: __u8, -pub addr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub flow_lbl: [__u8; 3usize], -pub payload_len: __be16, -pub nexthdr: __u8, -pub hop_limit: __u8, -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ipv6hdr__bindgen_ty_1 { -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -impl ipv6hdr { -#[inline] -pub fn priority(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_priority(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let priority: u8 = unsafe { ::core::mem::transmute(priority) }; -priority as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit -} -} -pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; -pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; -pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; -pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; -pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; -pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; -pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; -pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; -pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; -pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; -pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; -pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; -pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; -pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; -pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; -pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; -pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; -pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; -pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; -pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; -pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; -pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; -pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; -pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; -pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; -pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; -pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; -pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; -pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; -pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; -pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; -pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; -pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; -pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; -pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; -pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; -pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; -pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; -pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; -pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; -pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; -pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; -pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; -pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; -pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; -pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; -pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; -pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; -pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; -pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; -pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; -pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_3 { -DEVCONF_FORWARDING = 0, -DEVCONF_HOPLIMIT = 1, -DEVCONF_MTU6 = 2, -DEVCONF_ACCEPT_RA = 3, -DEVCONF_ACCEPT_REDIRECTS = 4, -DEVCONF_AUTOCONF = 5, -DEVCONF_DAD_TRANSMITS = 6, -DEVCONF_RTR_SOLICITS = 7, -DEVCONF_RTR_SOLICIT_INTERVAL = 8, -DEVCONF_RTR_SOLICIT_DELAY = 9, -DEVCONF_USE_TEMPADDR = 10, -DEVCONF_TEMP_VALID_LFT = 11, -DEVCONF_TEMP_PREFERED_LFT = 12, -DEVCONF_REGEN_MAX_RETRY = 13, -DEVCONF_MAX_DESYNC_FACTOR = 14, -DEVCONF_MAX_ADDRESSES = 15, -DEVCONF_FORCE_MLD_VERSION = 16, -DEVCONF_ACCEPT_RA_DEFRTR = 17, -DEVCONF_ACCEPT_RA_PINFO = 18, -DEVCONF_ACCEPT_RA_RTR_PREF = 19, -DEVCONF_RTR_PROBE_INTERVAL = 20, -DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, -DEVCONF_PROXY_NDP = 22, -DEVCONF_OPTIMISTIC_DAD = 23, -DEVCONF_ACCEPT_SOURCE_ROUTE = 24, -DEVCONF_MC_FORWARDING = 25, -DEVCONF_DISABLE_IPV6 = 26, -DEVCONF_ACCEPT_DAD = 27, -DEVCONF_FORCE_TLLAO = 28, -DEVCONF_NDISC_NOTIFY = 29, -DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, -DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, -DEVCONF_SUPPRESS_FRAG_NDISC = 32, -DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, -DEVCONF_USE_OPTIMISTIC = 34, -DEVCONF_ACCEPT_RA_MTU = 35, -DEVCONF_STABLE_SECRET = 36, -DEVCONF_USE_OIF_ADDRS_ONLY = 37, -DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, -DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, -DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, -DEVCONF_DROP_UNSOLICITED_NA = 41, -DEVCONF_KEEP_ADDR_ON_DOWN = 42, -DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, -DEVCONF_SEG6_ENABLED = 44, -DEVCONF_SEG6_REQUIRE_HMAC = 45, -DEVCONF_ENHANCED_DAD = 46, -DEVCONF_ADDR_GEN_MODE = 47, -DEVCONF_DISABLE_POLICY = 48, -DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, -DEVCONF_NDISC_TCLASS = 50, -DEVCONF_RPL_SEG_ENABLED = 51, -DEVCONF_RA_DEFRTR_METRIC = 52, -DEVCONF_IOAM6_ENABLED = 53, -DEVCONF_IOAM6_ID = 54, -DEVCONF_IOAM6_ID_WIDE = 55, -DEVCONF_NDISC_EVICT_NOCARRIER = 56, -DEVCONF_ACCEPT_UNTRACKED_NA = 57, -DEVCONF_MAX = 58, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum socket_state { -SS_FREE = 0, -SS_UNCONNECTED = 1, -SS_CONNECTING = 2, -SS_CONNECTED = 3, -SS_DISCONNECTING = 4, +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct robust_list_head { +pub list: robust_list, +pub futex_offset: crate::ctypes::c_long, +pub list_op_pending: *mut robust_list, +} +#[repr(C)] +#[derive(Debug)] +pub struct inotify_event { +pub wd: __s32, +pub mask: __u32, +pub cookie: __u32, +pub len: __u32, +pub name: __IncompleteArrayField, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -3562,24 +333,6 @@ pub revents: crate::ctypes::c_short, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prctl_mm_map { -pub start_code: __u64, -pub end_code: __u64, -pub start_data: __u64, -pub end_data: __u64, -pub start_brk: __u64, -pub brk: __u64, -pub start_stack: __u64, -pub arg_start: __u64, -pub arg_end: __u64, -pub env_start: __u64, -pub env_end: __u64, -pub auxv: *mut __u64, -pub auxv_size: __u32, -pub exe_fd: __u32, -} -#[repr(C)] #[derive(Debug)] pub struct rand_pool_info { pub entropy_count: crate::ctypes::c_int, @@ -3699,11 +452,6 @@ pub set_tid_size: __u64, pub cgroup: __u64, } -pub type sigset_t = crate::ctypes::c_ulong; -pub type __signalfn_t = ::core::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::core::option::Option; -pub type __sigrestore_t = __restorefn_t; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct sigaction { @@ -3719,26 +467,6 @@ pub ss_flags: crate::ctypes::c_int, pub ss_size: __kernel_size_t, } -pub type stack_t = sigaltstack; -pub type __kernel_si_clock_t = crate::ctypes::c_longlong; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { -pub sival_int: crate::ctypes::c_int, -pub sival_ptr: *mut crate::ctypes::c_void, -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { -pub _kill: __sifields__bindgen_ty_1, -pub _timer: __sifields__bindgen_ty_2, -pub _rt: __sifields__bindgen_ty_3, -pub _sigchld: __sifields__bindgen_ty_4, -pub _sigfault: __sifields__bindgen_ty_5, -pub _sigpoll: __sifields__bindgen_ty_6, -pub _sigsys: __sifields__bindgen_ty_7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_1 { @@ -3776,15 +504,6 @@ pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { -pub _trapno: crate::ctypes::c_int, -pub _addr_lsb: crate::ctypes::c_short, -pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, -pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { pub _dummy_bnd: [crate::ctypes::c_char; 4usize], @@ -3825,19 +544,12 @@ } #[repr(C)] #[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { -pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, -pub _si_pad: [crate::ctypes::c_int; 32usize], -} -#[repr(C)] -#[derive(Copy, Clone)] pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { pub si_signo: crate::ctypes::c_int, pub si_errno: crate::ctypes::c_int, pub si_code: crate::ctypes::c_int, pub _sifields: __sifields, } -pub type siginfo_t = siginfo; #[repr(C)] #[derive(Copy, Clone)] pub struct sigevent { @@ -3847,19 +559,11 @@ pub _sigev_un: sigevent__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { -pub _pad: [crate::ctypes::c_int; 13usize], -pub _tid: crate::ctypes::c_int, -pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { pub _function: ::core::option::Option, pub _attribute: *mut crate::ctypes::c_void, } -pub type sigevent_t = sigevent; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct statx_timestamp { @@ -3896,591 +600,1977 @@ pub __spare3: [__u64; 12usize], } #[repr(C)] -#[derive(Debug)] -pub struct sysinfo { -pub uptime: __kernel_long_t, -pub loads: [__kernel_ulong_t; 3usize], -pub totalram: __kernel_ulong_t, -pub freeram: __kernel_ulong_t, -pub sharedram: __kernel_ulong_t, -pub bufferram: __kernel_ulong_t, -pub totalswap: __kernel_ulong_t, -pub freeswap: __kernel_ulong_t, -pub procs: __u16, -pub pad: __u16, -pub totalhigh: __kernel_ulong_t, -pub freehigh: __kernel_ulong_t, -pub mem_unit: __u32, -pub _f: __IncompleteArrayField, +#[derive(Debug, Copy, Clone)] +pub struct termios { +pub c_iflag: tcflag_t, +pub c_oflag: tcflag_t, +pub c_cflag: tcflag_t, +pub c_lflag: tcflag_t, +pub c_line: cc_t, +pub c_cc: [cc_t; 19usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcphdr { -pub source: __be16, -pub dest: __be16, -pub seq: __be32, -pub ack_seq: __be32, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub window: __be16, -pub check: __sum16, -pub urg_ptr: __be16, -} -impl tcphdr { -#[inline] -pub fn res1(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } -} -#[inline] -pub fn set_res1(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn doff(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } -} -#[inline] -pub fn set_doff(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn fin(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } -} -#[inline] -pub fn set_fin(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn syn(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } -} -#[inline] -pub fn set_syn(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 1u8, val as u64) -} -} -#[inline] -pub fn rst(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } -} -#[inline] -pub fn set_rst(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(10usize, 1u8, val as u64) -} -} -#[inline] -pub fn psh(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } -} -#[inline] -pub fn set_psh(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(11usize, 1u8, val as u64) -} -} -#[inline] -pub fn ack(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } -} -#[inline] -pub fn set_ack(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(12usize, 1u8, val as u64) -} -} -#[inline] -pub fn urg(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } -} -#[inline] -pub fn set_urg(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(13usize, 1u8, val as u64) -} -} -#[inline] -pub fn ece(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } -} -#[inline] -pub fn set_ece(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(14usize, 1u8, val as u64) -} +pub struct termios2 { +pub c_iflag: tcflag_t, +pub c_oflag: tcflag_t, +pub c_cflag: tcflag_t, +pub c_lflag: tcflag_t, +pub c_line: cc_t, +pub c_cc: [cc_t; 19usize], +pub c_ispeed: speed_t, +pub c_ospeed: speed_t, } -#[inline] -pub fn cwr(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ktermios { +pub c_iflag: tcflag_t, +pub c_oflag: tcflag_t, +pub c_cflag: tcflag_t, +pub c_lflag: tcflag_t, +pub c_line: cc_t, +pub c_cc: [cc_t; 19usize], +pub c_ispeed: speed_t, +pub c_ospeed: speed_t, } -#[inline] -pub fn set_cwr(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(15usize, 1u8, val as u64) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct winsize { +pub ws_row: crate::ctypes::c_ushort, +pub ws_col: crate::ctypes::c_ushort, +pub ws_xpixel: crate::ctypes::c_ushort, +pub ws_ypixel: crate::ctypes::c_ushort, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct termio { +pub c_iflag: crate::ctypes::c_ushort, +pub c_oflag: crate::ctypes::c_ushort, +pub c_cflag: crate::ctypes::c_ushort, +pub c_lflag: crate::ctypes::c_ushort, +pub c_line: crate::ctypes::c_uchar, +pub c_cc: [crate::ctypes::c_uchar; 8usize], } -#[inline] -pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let res1: u16 = unsafe { ::core::mem::transmute(res1) }; -res1 as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let doff: u16 = unsafe { ::core::mem::transmute(doff) }; -doff as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let fin: u16 = unsafe { ::core::mem::transmute(fin) }; -fin as u64 -}); -__bindgen_bitfield_unit.set(9usize, 1u8, { -let syn: u16 = unsafe { ::core::mem::transmute(syn) }; -syn as u64 -}); -__bindgen_bitfield_unit.set(10usize, 1u8, { -let rst: u16 = unsafe { ::core::mem::transmute(rst) }; -rst as u64 -}); -__bindgen_bitfield_unit.set(11usize, 1u8, { -let psh: u16 = unsafe { ::core::mem::transmute(psh) }; -psh as u64 -}); -__bindgen_bitfield_unit.set(12usize, 1u8, { -let ack: u16 = unsafe { ::core::mem::transmute(ack) }; -ack as u64 -}); -__bindgen_bitfield_unit.set(13usize, 1u8, { -let urg: u16 = unsafe { ::core::mem::transmute(urg) }; -urg as u64 -}); -__bindgen_bitfield_unit.set(14usize, 1u8, { -let ece: u16 = unsafe { ::core::mem::transmute(ece) }; -ece as u64 -}); -__bindgen_bitfield_unit.set(15usize, 1u8, { -let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; -cwr as u64 -}); -__bindgen_bitfield_unit +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub iov_base: *mut crate::ctypes::c_void, +pub iov_len: __kernel_size_t, } +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct uffd_msg { +pub event: __u8, +pub reserved1: __u8, +pub reserved2: __u16, +pub reserved3: __u32, +pub arg: uffd_msg__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] -pub union tcp_word_hdr { -pub hdr: tcphdr, -pub words: [__be32; 5usize], -} -pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; -pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; -pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; -pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; -pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; -pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; -pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; -pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; -pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; -pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_4 { -TCP_FLAG_CWR = 32768, -TCP_FLAG_ECE = 16384, -TCP_FLAG_URG = 8192, -TCP_FLAG_ACK = 4096, -TCP_FLAG_PSH = 2048, -TCP_FLAG_RST = 1024, -TCP_FLAG_SYN = 512, -TCP_FLAG_FIN = 256, -TCP_RESERVED_BITS = 15, -TCP_DATA_OFFSET = 240, +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { +pub flags: __u64, +pub address: __u64, +pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_repair_opt { -pub opt_code: __u32, -pub opt_val: __u32, +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { +pub ufd: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_repair_window { -pub snd_wl1: __u32, -pub snd_wnd: __u32, -pub max_window: __u32, -pub rcv_wnd: __u32, -pub rcv_wup: __u32, -} -pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; -pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; -pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; -pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_5 { -TCP_NO_QUEUE = 0, -TCP_RECV_QUEUE = 1, -TCP_SEND_QUEUE = 2, -TCP_QUEUES_NR = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_fastopen_client_fail { -TFO_STATUS_UNSPEC = 0, -TFO_COOKIE_UNAVAILABLE = 1, -TFO_DATA_NOT_ACKED = 2, -TFO_SYN_RETRANSMITTED = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_ca_state { -TCP_CA_Open = 0, -TCP_CA_Disorder = 1, -TCP_CA_CWR = 2, -TCP_CA_Recovery = 3, -TCP_CA_Loss = 4, +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { +pub from: __u64, +pub to: __u64, +pub len: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_info { -pub tcpi_state: __u8, -pub tcpi_ca_state: __u8, -pub tcpi_retransmits: __u8, -pub tcpi_probes: __u8, -pub tcpi_backoff: __u8, -pub tcpi_options: __u8, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub tcpi_rto: __u32, -pub tcpi_ato: __u32, -pub tcpi_snd_mss: __u32, -pub tcpi_rcv_mss: __u32, -pub tcpi_unacked: __u32, -pub tcpi_sacked: __u32, -pub tcpi_lost: __u32, -pub tcpi_retrans: __u32, -pub tcpi_fackets: __u32, -pub tcpi_last_data_sent: __u32, -pub tcpi_last_ack_sent: __u32, -pub tcpi_last_data_recv: __u32, -pub tcpi_last_ack_recv: __u32, -pub tcpi_pmtu: __u32, -pub tcpi_rcv_ssthresh: __u32, -pub tcpi_rtt: __u32, -pub tcpi_rttvar: __u32, -pub tcpi_snd_ssthresh: __u32, -pub tcpi_snd_cwnd: __u32, -pub tcpi_advmss: __u32, -pub tcpi_reordering: __u32, -pub tcpi_rcv_rtt: __u32, -pub tcpi_rcv_space: __u32, -pub tcpi_total_retrans: __u32, -pub tcpi_pacing_rate: __u64, -pub tcpi_max_pacing_rate: __u64, -pub tcpi_bytes_acked: __u64, -pub tcpi_bytes_received: __u64, -pub tcpi_segs_out: __u32, -pub tcpi_segs_in: __u32, -pub tcpi_notsent_bytes: __u32, -pub tcpi_min_rtt: __u32, -pub tcpi_data_segs_in: __u32, -pub tcpi_data_segs_out: __u32, -pub tcpi_delivery_rate: __u64, -pub tcpi_busy_time: __u64, -pub tcpi_rwnd_limited: __u64, -pub tcpi_sndbuf_limited: __u64, -pub tcpi_delivered: __u32, -pub tcpi_delivered_ce: __u32, -pub tcpi_bytes_sent: __u64, -pub tcpi_bytes_retrans: __u64, -pub tcpi_dsack_dups: __u32, -pub tcpi_reord_seen: __u32, -pub tcpi_rcv_ooopack: __u32, -pub tcpi_snd_wnd: __u32, -pub tcpi_rcv_wnd: __u32, -pub tcpi_rehash: __u32, -} -impl tcp_info { -#[inline] -pub fn tcpi_snd_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_rcv_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } -} -#[inline] -pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn tcpi_fastopen_client_fail(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } -} -#[inline] -pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 2u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; -tcpi_snd_wscale as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; -tcpi_rcv_wscale as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; -tcpi_delivery_rate_app_limited as u64 -}); -__bindgen_bitfield_unit.set(9usize, 2u8, { -let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; -tcpi_fastopen_client_fail as u64 -}); -__bindgen_bitfield_unit +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { +pub start: __u64, +pub end: __u64, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { +pub reserved1: __u64, +pub reserved2: __u64, +pub reserved3: __u64, } -pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; -pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; -pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; -pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; -pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; -pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; -pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; -pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; -pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; -pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; -pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; -pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; -pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; -pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; -pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; -pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; -pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; -pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; -pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; -pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; -pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; -pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; -pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; -pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; -pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; -pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; -pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; -pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_6 { -TCP_NLA_PAD = 0, -TCP_NLA_BUSY = 1, -TCP_NLA_RWND_LIMITED = 2, -TCP_NLA_SNDBUF_LIMITED = 3, -TCP_NLA_DATA_SEGS_OUT = 4, -TCP_NLA_TOTAL_RETRANS = 5, -TCP_NLA_PACING_RATE = 6, -TCP_NLA_DELIVERY_RATE = 7, -TCP_NLA_SND_CWND = 8, -TCP_NLA_REORDERING = 9, -TCP_NLA_MIN_RTT = 10, -TCP_NLA_RECUR_RETRANS = 11, -TCP_NLA_DELIVERY_RATE_APP_LMT = 12, -TCP_NLA_SNDQ_SIZE = 13, -TCP_NLA_CA_STATE = 14, -TCP_NLA_SND_SSTHRESH = 15, -TCP_NLA_DELIVERED = 16, -TCP_NLA_DELIVERED_CE = 17, -TCP_NLA_BYTES_SENT = 18, -TCP_NLA_BYTES_RETRANS = 19, -TCP_NLA_DSACK_DUPS = 20, -TCP_NLA_REORD_SEEN = 21, -TCP_NLA_SRTT = 22, -TCP_NLA_TIMEOUT_REHASH = 23, -TCP_NLA_BYTES_NOTSENT = 24, -TCP_NLA_EDT = 25, -TCP_NLA_TTL = 26, -TCP_NLA_REHASH = 27, +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_api { +pub api: __u64, +pub features: __u64, +pub ioctls: __u64, } #[repr(C)] -#[derive(Copy, Clone)] -pub struct tcp_md5sig { -pub tcpm_addr: __kernel_sockaddr_storage, -pub tcpm_flags: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_ifindex: crate::ctypes::c_int, -pub tcpm_key: [__u8; 80usize], +#[derive(Debug, Copy, Clone)] +pub struct uffdio_range { +pub start: __u64, +pub len: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_diag_md5sig { -pub tcpm_family: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_addr: [__be32; 4usize], -pub tcpm_key: [__u8; 80usize], +pub struct uffdio_register { +pub range: uffdio_range, +pub mode: __u64, +pub ioctls: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_zerocopy_receive { -pub address: __u64, -pub length: __u32, -pub recv_skip_hint: __u32, -pub inq: __u32, -pub err: __s32, -pub copybuf_address: __u64, -pub copybuf_len: __s32, -pub flags: __u32, -pub msg_control: __u64, -pub msg_controllen: __u64, -pub msg_flags: __u32, -pub reserved: __u32, +pub struct uffdio_copy { +pub dst: __u64, +pub src: __u64, +pub len: __u64, +pub mode: __u64, +pub copy: __s64, } -pub type cc_t = crate::ctypes::c_uchar; -pub type speed_t = crate::ctypes::c_uint; -pub type tcflag_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct termios { -pub c_iflag: tcflag_t, -pub c_oflag: tcflag_t, -pub c_cflag: tcflag_t, -pub c_lflag: tcflag_t, -pub c_line: cc_t, -pub c_cc: [cc_t; 19usize], +pub struct uffdio_zeropage { +pub range: uffdio_range, +pub mode: __u64, +pub zeropage: __s64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct termios2 { -pub c_iflag: tcflag_t, -pub c_oflag: tcflag_t, -pub c_cflag: tcflag_t, -pub c_lflag: tcflag_t, -pub c_line: cc_t, -pub c_cc: [cc_t; 19usize], -pub c_ispeed: speed_t, -pub c_ospeed: speed_t, +pub struct uffdio_writeprotect { +pub range: uffdio_range, +pub mode: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ktermios { -pub c_iflag: tcflag_t, -pub c_oflag: tcflag_t, -pub c_cflag: tcflag_t, -pub c_lflag: tcflag_t, -pub c_line: cc_t, -pub c_cc: [cc_t; 19usize], -pub c_ispeed: speed_t, -pub c_ospeed: speed_t, +pub struct uffdio_continue { +pub range: uffdio_range, +pub mode: __u64, +pub mapped: __s64, +} +#[repr(C)] +#[derive(Debug)] +pub struct linux_dirent64 { +pub d_ino: crate::ctypes::c_ulonglong, +pub d_off: crate::ctypes::c_longlong, +pub d_reclen: __u16, +pub d_type: __u8, +pub d_name: __IncompleteArrayField, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct winsize { -pub ws_row: crate::ctypes::c_ushort, -pub ws_col: crate::ctypes::c_ushort, -pub ws_xpixel: crate::ctypes::c_ushort, -pub ws_ypixel: crate::ctypes::c_ushort, +pub struct stat { +pub st_dev: __kernel_ulong_t, +pub st_ino: __kernel_ulong_t, +pub st_nlink: __kernel_ulong_t, +pub st_mode: crate::ctypes::c_uint, +pub st_uid: crate::ctypes::c_uint, +pub st_gid: crate::ctypes::c_uint, +pub __pad0: crate::ctypes::c_uint, +pub st_rdev: __kernel_ulong_t, +pub st_size: __kernel_long_t, +pub st_blksize: __kernel_long_t, +pub st_blocks: __kernel_long_t, +pub st_atime: __kernel_ulong_t, +pub st_atime_nsec: __kernel_ulong_t, +pub st_mtime: __kernel_ulong_t, +pub st_mtime_nsec: __kernel_ulong_t, +pub st_ctime: __kernel_ulong_t, +pub st_ctime_nsec: __kernel_ulong_t, +pub __unused: [__kernel_long_t; 3usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct termio { -pub c_iflag: crate::ctypes::c_ushort, -pub c_oflag: crate::ctypes::c_ushort, -pub c_cflag: crate::ctypes::c_ushort, -pub c_lflag: crate::ctypes::c_ushort, -pub c_line: crate::ctypes::c_uchar, -pub c_cc: [crate::ctypes::c_uchar; 8usize], +pub struct __old_kernel_stat { +pub st_dev: crate::ctypes::c_ushort, +pub st_ino: crate::ctypes::c_ushort, +pub st_mode: crate::ctypes::c_ushort, +pub st_nlink: crate::ctypes::c_ushort, +pub st_uid: crate::ctypes::c_ushort, +pub st_gid: crate::ctypes::c_ushort, +pub st_rdev: crate::ctypes::c_ushort, +pub st_size: crate::ctypes::c_uint, +pub st_atime: crate::ctypes::c_uint, +pub st_mtime: crate::ctypes::c_uint, +pub st_ctime: crate::ctypes::c_uint, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct iovec { -pub iov_base: *mut crate::ctypes::c_void, -pub iov_len: __kernel_size_t, +pub struct statfs { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u32, +pub f_bfree: __u32, +pub f_bavail: __u32, +pub f_files: __u32, +pub f_ffree: __u32, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_un { -pub sun_family: __kernel_sa_family_t, -pub sun_path: [crate::ctypes::c_char; 108usize], +pub struct statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], +} +#[repr(C, packed(4))] +#[derive(Debug, Copy, Clone)] +pub struct compat_statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct oldold_utsname { -pub sysname: [crate::ctypes::c_char; 9usize], -pub nodename: [crate::ctypes::c_char; 9usize], -pub release: [crate::ctypes::c_char; 9usize], -pub version: [crate::ctypes::c_char; 9usize], -pub machine: [crate::ctypes::c_char; 9usize], +pub struct user_desc { +pub entry_number: crate::ctypes::c_uint, +pub base_addr: crate::ctypes::c_uint, +pub limit: crate::ctypes::c_uint, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub __bindgen_padding_0: [u8; 3usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct old_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], +pub struct kernel_sigset_t { +pub sig: [crate::ctypes::c_ulong; 2usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct new_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], -pub domainname: [crate::ctypes::c_char; 65usize], +pub struct kernel_sigaction { +pub sa_handler_kernel: __kernel_sighandler_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_restorer: __sigrestore_t, +pub sa_mask: kernel_sigset_t, } -impl membarrier_cmd { -pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; +pub const LINUX_VERSION_CODE: u32 = 393984; +pub const LINUX_VERSION_MAJOR: u32 = 6; +pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; +pub const LINUX_VERSION_SUBLEVEL: u32 = 0; +pub const AT_SYSINFO_EHDR: u32 = 33; +pub const AT_VECTOR_SIZE_ARCH: u32 = 3; +pub const AT_NULL: u32 = 0; +pub const AT_IGNORE: u32 = 1; +pub const AT_EXECFD: u32 = 2; +pub const AT_PHDR: u32 = 3; +pub const AT_PHENT: u32 = 4; +pub const AT_PHNUM: u32 = 5; +pub const AT_PAGESZ: u32 = 6; +pub const AT_BASE: u32 = 7; +pub const AT_FLAGS: u32 = 8; +pub const AT_ENTRY: u32 = 9; +pub const AT_NOTELF: u32 = 10; +pub const AT_UID: u32 = 11; +pub const AT_EUID: u32 = 12; +pub const AT_GID: u32 = 13; +pub const AT_EGID: u32 = 14; +pub const AT_PLATFORM: u32 = 15; +pub const AT_HWCAP: u32 = 16; +pub const AT_CLKTCK: u32 = 17; +pub const AT_SECURE: u32 = 23; +pub const AT_BASE_PLATFORM: u32 = 24; +pub const AT_RANDOM: u32 = 25; +pub const AT_HWCAP2: u32 = 26; +pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; +pub const AT_RSEQ_ALIGN: u32 = 28; +pub const AT_EXECFN: u32 = 31; +pub const AT_MINSIGSTKSZ: u32 = 51; +pub const __FD_SETSIZE: u32 = 1024; +pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; +pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; +pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; +pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; +pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; +pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; +pub const VFS_CAP_REVISION_SHIFT: u32 = 24; +pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; +pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; +pub const VFS_CAP_REVISION_1: u32 = 16777216; +pub const VFS_CAP_U32_1: u32 = 1; +pub const VFS_CAP_REVISION_2: u32 = 33554432; +pub const VFS_CAP_U32_2: u32 = 2; +pub const VFS_CAP_REVISION_3: u32 = 50331648; +pub const VFS_CAP_U32_3: u32 = 2; +pub const VFS_CAP_U32: u32 = 2; +pub const VFS_CAP_REVISION: u32 = 50331648; +pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S: u32 = 1; +pub const CAP_CHOWN: u32 = 0; +pub const CAP_DAC_OVERRIDE: u32 = 1; +pub const CAP_DAC_READ_SEARCH: u32 = 2; +pub const CAP_FOWNER: u32 = 3; +pub const CAP_FSETID: u32 = 4; +pub const CAP_KILL: u32 = 5; +pub const CAP_SETGID: u32 = 6; +pub const CAP_SETUID: u32 = 7; +pub const CAP_SETPCAP: u32 = 8; +pub const CAP_LINUX_IMMUTABLE: u32 = 9; +pub const CAP_NET_BIND_SERVICE: u32 = 10; +pub const CAP_NET_BROADCAST: u32 = 11; +pub const CAP_NET_ADMIN: u32 = 12; +pub const CAP_NET_RAW: u32 = 13; +pub const CAP_IPC_LOCK: u32 = 14; +pub const CAP_IPC_OWNER: u32 = 15; +pub const CAP_SYS_MODULE: u32 = 16; +pub const CAP_SYS_RAWIO: u32 = 17; +pub const CAP_SYS_CHROOT: u32 = 18; +pub const CAP_SYS_PTRACE: u32 = 19; +pub const CAP_SYS_PACCT: u32 = 20; +pub const CAP_SYS_ADMIN: u32 = 21; +pub const CAP_SYS_BOOT: u32 = 22; +pub const CAP_SYS_NICE: u32 = 23; +pub const CAP_SYS_RESOURCE: u32 = 24; +pub const CAP_SYS_TIME: u32 = 25; +pub const CAP_SYS_TTY_CONFIG: u32 = 26; +pub const CAP_MKNOD: u32 = 27; +pub const CAP_LEASE: u32 = 28; +pub const CAP_AUDIT_WRITE: u32 = 29; +pub const CAP_AUDIT_CONTROL: u32 = 30; +pub const CAP_SETFCAP: u32 = 31; +pub const CAP_MAC_OVERRIDE: u32 = 32; +pub const CAP_MAC_ADMIN: u32 = 33; +pub const CAP_SYSLOG: u32 = 34; +pub const CAP_WAKE_ALARM: u32 = 35; +pub const CAP_BLOCK_SUSPEND: u32 = 36; +pub const CAP_AUDIT_READ: u32 = 37; +pub const CAP_PERFMON: u32 = 38; +pub const CAP_BPF: u32 = 39; +pub const CAP_CHECKPOINT_RESTORE: u32 = 40; +pub const CAP_LAST_CAP: u32 = 40; +pub const O_ACCMODE: u32 = 3; +pub const O_RDONLY: u32 = 0; +pub const O_WRONLY: u32 = 1; +pub const O_RDWR: u32 = 2; +pub const O_CREAT: u32 = 64; +pub const O_EXCL: u32 = 128; +pub const O_NOCTTY: u32 = 256; +pub const O_TRUNC: u32 = 512; +pub const O_APPEND: u32 = 1024; +pub const O_NONBLOCK: u32 = 2048; +pub const O_DSYNC: u32 = 4096; +pub const FASYNC: u32 = 8192; +pub const O_DIRECT: u32 = 16384; +pub const O_LARGEFILE: u32 = 32768; +pub const O_DIRECTORY: u32 = 65536; +pub const O_NOFOLLOW: u32 = 131072; +pub const O_NOATIME: u32 = 262144; +pub const O_CLOEXEC: u32 = 524288; +pub const __O_SYNC: u32 = 1048576; +pub const O_SYNC: u32 = 1052672; +pub const O_PATH: u32 = 2097152; +pub const __O_TMPFILE: u32 = 4194304; +pub const O_TMPFILE: u32 = 4259840; +pub const O_TMPFILE_MASK: u32 = 4259904; +pub const O_NDELAY: u32 = 2048; +pub const F_DUPFD: u32 = 0; +pub const F_GETFD: u32 = 1; +pub const F_SETFD: u32 = 2; +pub const F_GETFL: u32 = 3; +pub const F_SETFL: u32 = 4; +pub const F_GETLK: u32 = 5; +pub const F_SETLK: u32 = 6; +pub const F_SETLKW: u32 = 7; +pub const F_SETOWN: u32 = 8; +pub const F_GETOWN: u32 = 9; +pub const F_SETSIG: u32 = 10; +pub const F_GETSIG: u32 = 11; +pub const F_GETLK64: u32 = 12; +pub const F_SETLK64: u32 = 13; +pub const F_SETLKW64: u32 = 14; +pub const F_SETOWN_EX: u32 = 15; +pub const F_GETOWN_EX: u32 = 16; +pub const F_GETOWNER_UIDS: u32 = 17; +pub const F_OFD_GETLK: u32 = 36; +pub const F_OFD_SETLK: u32 = 37; +pub const F_OFD_SETLKW: u32 = 38; +pub const F_OWNER_TID: u32 = 0; +pub const F_OWNER_PID: u32 = 1; +pub const F_OWNER_PGRP: u32 = 2; +pub const FD_CLOEXEC: u32 = 1; +pub const F_RDLCK: u32 = 0; +pub const F_WRLCK: u32 = 1; +pub const F_UNLCK: u32 = 2; +pub const F_EXLCK: u32 = 4; +pub const F_SHLCK: u32 = 8; +pub const LOCK_SH: u32 = 1; +pub const LOCK_EX: u32 = 2; +pub const LOCK_NB: u32 = 4; +pub const LOCK_UN: u32 = 8; +pub const LOCK_MAND: u32 = 32; +pub const LOCK_READ: u32 = 64; +pub const LOCK_WRITE: u32 = 128; +pub const LOCK_RW: u32 = 192; +pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; +pub const RESOLVE_NO_XDEV: u32 = 1; +pub const RESOLVE_NO_MAGICLINKS: u32 = 2; +pub const RESOLVE_NO_SYMLINKS: u32 = 4; +pub const RESOLVE_BENEATH: u32 = 8; +pub const RESOLVE_IN_ROOT: u32 = 16; +pub const RESOLVE_CACHED: u32 = 32; +pub const F_SETLEASE: u32 = 1024; +pub const F_GETLEASE: u32 = 1025; +pub const F_CANCELLK: u32 = 1029; +pub const F_DUPFD_CLOEXEC: u32 = 1030; +pub const F_NOTIFY: u32 = 1026; +pub const F_SETPIPE_SZ: u32 = 1031; +pub const F_GETPIPE_SZ: u32 = 1032; +pub const F_ADD_SEALS: u32 = 1033; +pub const F_GET_SEALS: u32 = 1034; +pub const F_SEAL_SEAL: u32 = 1; +pub const F_SEAL_SHRINK: u32 = 2; +pub const F_SEAL_GROW: u32 = 4; +pub const F_SEAL_WRITE: u32 = 8; +pub const F_SEAL_FUTURE_WRITE: u32 = 16; +pub const F_SEAL_EXEC: u32 = 32; +pub const F_GET_RW_HINT: u32 = 1035; +pub const F_SET_RW_HINT: u32 = 1036; +pub const F_GET_FILE_RW_HINT: u32 = 1037; +pub const F_SET_FILE_RW_HINT: u32 = 1038; +pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; +pub const RWH_WRITE_LIFE_NONE: u32 = 1; +pub const RWH_WRITE_LIFE_SHORT: u32 = 2; +pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; +pub const RWH_WRITE_LIFE_LONG: u32 = 4; +pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; +pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; +pub const DN_ACCESS: u32 = 1; +pub const DN_MODIFY: u32 = 2; +pub const DN_CREATE: u32 = 4; +pub const DN_DELETE: u32 = 8; +pub const DN_RENAME: u32 = 16; +pub const DN_ATTRIB: u32 = 32; +pub const DN_MULTISHOT: u32 = 2147483648; +pub const AT_FDCWD: i32 = -100; +pub const AT_SYMLINK_NOFOLLOW: u32 = 256; +pub const AT_EACCESS: u32 = 512; +pub const AT_REMOVEDIR: u32 = 512; +pub const AT_SYMLINK_FOLLOW: u32 = 1024; +pub const AT_NO_AUTOMOUNT: u32 = 2048; +pub const AT_EMPTY_PATH: u32 = 4096; +pub const AT_STATX_SYNC_TYPE: u32 = 24576; +pub const AT_STATX_SYNC_AS_STAT: u32 = 0; +pub const AT_STATX_FORCE_SYNC: u32 = 8192; +pub const AT_STATX_DONT_SYNC: u32 = 16384; +pub const AT_RECURSIVE: u32 = 32768; +pub const EPOLL_CLOEXEC: u32 = 524288; +pub const EPOLL_CTL_ADD: u32 = 1; +pub const EPOLL_CTL_DEL: u32 = 2; +pub const EPOLL_CTL_MOD: u32 = 3; +pub const POSIX_FADV_NORMAL: u32 = 0; +pub const POSIX_FADV_RANDOM: u32 = 1; +pub const POSIX_FADV_SEQUENTIAL: u32 = 2; +pub const POSIX_FADV_WILLNEED: u32 = 3; +pub const POSIX_FADV_DONTNEED: u32 = 4; +pub const POSIX_FADV_NOREUSE: u32 = 5; +pub const FALLOC_FL_KEEP_SIZE: u32 = 1; +pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; +pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; +pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; +pub const FALLOC_FL_ZERO_RANGE: u32 = 16; +pub const FALLOC_FL_INSERT_RANGE: u32 = 32; +pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 14; +pub const _IOC_DIRBITS: u32 = 2; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 3; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 30; +pub const _IOC_NONE: u32 = 0; +pub const _IOC_WRITE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const IOC_IN: u32 = 1073741824; +pub const IOC_OUT: u32 = 2147483648; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const OPEN_TREE_CLOEXEC: u32 = 524288; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const FUTEX_WAIT: u32 = 0; +pub const FUTEX_WAKE: u32 = 1; +pub const FUTEX_FD: u32 = 2; +pub const FUTEX_REQUEUE: u32 = 3; +pub const FUTEX_CMP_REQUEUE: u32 = 4; +pub const FUTEX_WAKE_OP: u32 = 5; +pub const FUTEX_LOCK_PI: u32 = 6; +pub const FUTEX_UNLOCK_PI: u32 = 7; +pub const FUTEX_TRYLOCK_PI: u32 = 8; +pub const FUTEX_WAIT_BITSET: u32 = 9; +pub const FUTEX_WAKE_BITSET: u32 = 10; +pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; +pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; +pub const FUTEX_LOCK_PI2: u32 = 13; +pub const FUTEX_PRIVATE_FLAG: u32 = 128; +pub const FUTEX_CLOCK_REALTIME: u32 = 256; +pub const FUTEX_CMD_MASK: i32 = -385; +pub const FUTEX_WAIT_PRIVATE: u32 = 128; +pub const FUTEX_WAKE_PRIVATE: u32 = 129; +pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; +pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; +pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; +pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; +pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; +pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; +pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; +pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; +pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; +pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; +pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; +pub const FUTEX_32: u32 = 2; +pub const FUTEX_WAITV_MAX: u32 = 128; +pub const FUTEX_WAITERS: u32 = 2147483648; +pub const FUTEX_OWNER_DIED: u32 = 1073741824; +pub const FUTEX_TID_MASK: u32 = 1073741823; +pub const ROBUST_LIST_LIMIT: u32 = 2048; +pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; +pub const FUTEX_OP_SET: u32 = 0; +pub const FUTEX_OP_ADD: u32 = 1; +pub const FUTEX_OP_OR: u32 = 2; +pub const FUTEX_OP_ANDN: u32 = 3; +pub const FUTEX_OP_XOR: u32 = 4; +pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; +pub const FUTEX_OP_CMP_EQ: u32 = 0; +pub const FUTEX_OP_CMP_NE: u32 = 1; +pub const FUTEX_OP_CMP_LT: u32 = 2; +pub const FUTEX_OP_CMP_LE: u32 = 3; +pub const FUTEX_OP_CMP_GT: u32 = 4; +pub const FUTEX_OP_CMP_GE: u32 = 5; +pub const IN_ACCESS: u32 = 1; +pub const IN_MODIFY: u32 = 2; +pub const IN_ATTRIB: u32 = 4; +pub const IN_CLOSE_WRITE: u32 = 8; +pub const IN_CLOSE_NOWRITE: u32 = 16; +pub const IN_OPEN: u32 = 32; +pub const IN_MOVED_FROM: u32 = 64; +pub const IN_MOVED_TO: u32 = 128; +pub const IN_CREATE: u32 = 256; +pub const IN_DELETE: u32 = 512; +pub const IN_DELETE_SELF: u32 = 1024; +pub const IN_MOVE_SELF: u32 = 2048; +pub const IN_UNMOUNT: u32 = 8192; +pub const IN_Q_OVERFLOW: u32 = 16384; +pub const IN_IGNORED: u32 = 32768; +pub const IN_CLOSE: u32 = 24; +pub const IN_MOVE: u32 = 192; +pub const IN_ONLYDIR: u32 = 16777216; +pub const IN_DONT_FOLLOW: u32 = 33554432; +pub const IN_EXCL_UNLINK: u32 = 67108864; +pub const IN_MASK_CREATE: u32 = 268435456; +pub const IN_MASK_ADD: u32 = 536870912; +pub const IN_ISDIR: u32 = 1073741824; +pub const IN_ONESHOT: u32 = 2147483648; +pub const IN_ALL_EVENTS: u32 = 4095; +pub const IN_CLOEXEC: u32 = 524288; +pub const IN_NONBLOCK: u32 = 2048; +pub const ADFS_SUPER_MAGIC: u32 = 44533; +pub const AFFS_SUPER_MAGIC: u32 = 44543; +pub const AFS_SUPER_MAGIC: u32 = 1397113167; +pub const AUTOFS_SUPER_MAGIC: u32 = 391; +pub const CEPH_SUPER_MAGIC: u32 = 12805120; +pub const CODA_SUPER_MAGIC: u32 = 1937076805; +pub const CRAMFS_MAGIC: u32 = 684539205; +pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; +pub const DEBUGFS_MAGIC: u32 = 1684170528; +pub const SECURITYFS_MAGIC: u32 = 1935894131; +pub const SELINUX_MAGIC: u32 = 4185718668; +pub const SMACK_MAGIC: u32 = 1128357203; +pub const RAMFS_MAGIC: u32 = 2240043254; +pub const TMPFS_MAGIC: u32 = 16914836; +pub const HUGETLBFS_MAGIC: u32 = 2508478710; +pub const SQUASHFS_MAGIC: u32 = 1936814952; +pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; +pub const EFS_SUPER_MAGIC: u32 = 4278867; +pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; +pub const EXT2_SUPER_MAGIC: u32 = 61267; +pub const EXT3_SUPER_MAGIC: u32 = 61267; +pub const XENFS_SUPER_MAGIC: u32 = 2881100148; +pub const EXT4_SUPER_MAGIC: u32 = 61267; +pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; +pub const NILFS_SUPER_MAGIC: u32 = 13364; +pub const F2FS_SUPER_MAGIC: u32 = 4076150800; +pub const HPFS_SUPER_MAGIC: u32 = 4187351113; +pub const ISOFS_SUPER_MAGIC: u32 = 38496; +pub const JFFS2_SUPER_MAGIC: u32 = 29366; +pub const XFS_SUPER_MAGIC: u32 = 1481003842; +pub const PSTOREFS_MAGIC: u32 = 1634035564; +pub const EFIVARFS_MAGIC: u32 = 3730735588; +pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; +pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; +pub const FUSE_SUPER_MAGIC: u32 = 1702057286; +pub const MINIX_SUPER_MAGIC: u32 = 4991; +pub const MINIX_SUPER_MAGIC2: u32 = 5007; +pub const MINIX2_SUPER_MAGIC: u32 = 9320; +pub const MINIX2_SUPER_MAGIC2: u32 = 9336; +pub const MINIX3_SUPER_MAGIC: u32 = 19802; +pub const MSDOS_SUPER_MAGIC: u32 = 19780; +pub const EXFAT_SUPER_MAGIC: u32 = 538032816; +pub const NCP_SUPER_MAGIC: u32 = 22092; +pub const NFS_SUPER_MAGIC: u32 = 26985; +pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; +pub const OPENPROM_SUPER_MAGIC: u32 = 40865; +pub const QNX4_SUPER_MAGIC: u32 = 47; +pub const QNX6_SUPER_MAGIC: u32 = 1746473250; +pub const AFS_FS_MAGIC: u32 = 1799439955; +pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; +pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9] = b"ReIsErFs\0"; +pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr2Fs\0"; +pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr3Fs\0"; +pub const SMB_SUPER_MAGIC: u32 = 20859; +pub const CIFS_SUPER_MAGIC: u32 = 4283649346; +pub const SMB2_SUPER_MAGIC: u32 = 4266872130; +pub const CGROUP_SUPER_MAGIC: u32 = 2613483; +pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; +pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; +pub const STACK_END_MAGIC: u32 = 1470918301; +pub const TRACEFS_MAGIC: u32 = 1953653091; +pub const V9FS_MAGIC: u32 = 16914839; +pub const BDEVFS_MAGIC: u32 = 1650746742; +pub const DAXFS_MAGIC: u32 = 1684300152; +pub const BINFMTFS_MAGIC: u32 = 1112100429; +pub const DEVPTS_SUPER_MAGIC: u32 = 7377; +pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; +pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; +pub const PIPEFS_MAGIC: u32 = 1346981957; +pub const PROC_SUPER_MAGIC: u32 = 40864; +pub const SOCKFS_MAGIC: u32 = 1397703499; +pub const SYSFS_MAGIC: u32 = 1650812274; +pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; +pub const MTD_INODE_FS_MAGIC: u32 = 288389204; +pub const ANON_INODE_FS_MAGIC: u32 = 151263540; +pub const BTRFS_TEST_MAGIC: u32 = 1936880249; +pub const NSFS_MAGIC: u32 = 1853056627; +pub const BPF_FS_MAGIC: u32 = 3405662737; +pub const AAFS_MAGIC: u32 = 1513908720; +pub const ZONEFS_MAGIC: u32 = 1515144787; +pub const UDF_SUPER_MAGIC: u32 = 352400198; +pub const DMA_BUF_MAGIC: u32 = 1145913666; +pub const DEVMEM_MAGIC: u32 = 1162691661; +pub const SECRETMEM_MAGIC: u32 = 1397048141; +pub const MAP_32BIT: u32 = 64; +pub const PROT_READ: u32 = 1; +pub const PROT_WRITE: u32 = 2; +pub const PROT_EXEC: u32 = 4; +pub const PROT_SEM: u32 = 8; +pub const PROT_NONE: u32 = 0; +pub const PROT_GROWSDOWN: u32 = 16777216; +pub const PROT_GROWSUP: u32 = 33554432; +pub const MAP_TYPE: u32 = 15; +pub const MAP_FIXED: u32 = 16; +pub const MAP_ANONYMOUS: u32 = 32; +pub const MAP_POPULATE: u32 = 32768; +pub const MAP_NONBLOCK: u32 = 65536; +pub const MAP_STACK: u32 = 131072; +pub const MAP_HUGETLB: u32 = 262144; +pub const MAP_SYNC: u32 = 524288; +pub const MAP_FIXED_NOREPLACE: u32 = 1048576; +pub const MAP_UNINITIALIZED: u32 = 67108864; +pub const MLOCK_ONFAULT: u32 = 1; +pub const MS_ASYNC: u32 = 1; +pub const MS_INVALIDATE: u32 = 2; +pub const MS_SYNC: u32 = 4; +pub const MADV_NORMAL: u32 = 0; +pub const MADV_RANDOM: u32 = 1; +pub const MADV_SEQUENTIAL: u32 = 2; +pub const MADV_WILLNEED: u32 = 3; +pub const MADV_DONTNEED: u32 = 4; +pub const MADV_FREE: u32 = 8; +pub const MADV_REMOVE: u32 = 9; +pub const MADV_DONTFORK: u32 = 10; +pub const MADV_DOFORK: u32 = 11; +pub const MADV_HWPOISON: u32 = 100; +pub const MADV_SOFT_OFFLINE: u32 = 101; +pub const MADV_MERGEABLE: u32 = 12; +pub const MADV_UNMERGEABLE: u32 = 13; +pub const MADV_HUGEPAGE: u32 = 14; +pub const MADV_NOHUGEPAGE: u32 = 15; +pub const MADV_DONTDUMP: u32 = 16; +pub const MADV_DODUMP: u32 = 17; +pub const MADV_WIPEONFORK: u32 = 18; +pub const MADV_KEEPONFORK: u32 = 19; +pub const MADV_COLD: u32 = 20; +pub const MADV_PAGEOUT: u32 = 21; +pub const MADV_POPULATE_READ: u32 = 22; +pub const MADV_POPULATE_WRITE: u32 = 23; +pub const MADV_DONTNEED_LOCKED: u32 = 24; +pub const MADV_COLLAPSE: u32 = 25; +pub const MAP_FILE: u32 = 0; +pub const PKEY_DISABLE_ACCESS: u32 = 1; +pub const PKEY_DISABLE_WRITE: u32 = 2; +pub const PKEY_ACCESS_MASK: u32 = 3; +pub const MAP_GROWSDOWN: u32 = 256; +pub const MAP_DENYWRITE: u32 = 2048; +pub const MAP_EXECUTABLE: u32 = 4096; +pub const MAP_LOCKED: u32 = 8192; +pub const MAP_NORESERVE: u32 = 16384; +pub const MCL_CURRENT: u32 = 1; +pub const MCL_FUTURE: u32 = 2; +pub const MCL_ONFAULT: u32 = 4; +pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; +pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; +pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; +pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; +pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; +pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; +pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; +pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; +pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; +pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; +pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; +pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; +pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; +pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; +pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; +pub const MREMAP_MAYMOVE: u32 = 1; +pub const MREMAP_FIXED: u32 = 2; +pub const MREMAP_DONTUNMAP: u32 = 4; +pub const OVERCOMMIT_GUESS: u32 = 0; +pub const OVERCOMMIT_ALWAYS: u32 = 1; +pub const OVERCOMMIT_NEVER: u32 = 2; +pub const MAP_SHARED: u32 = 1; +pub const MAP_PRIVATE: u32 = 2; +pub const MAP_SHARED_VALIDATE: u32 = 3; +pub const MAP_HUGE_SHIFT: u32 = 26; +pub const MAP_HUGE_MASK: u32 = 63; +pub const MAP_HUGE_16KB: u32 = 939524096; +pub const MAP_HUGE_64KB: u32 = 1073741824; +pub const MAP_HUGE_512KB: u32 = 1275068416; +pub const MAP_HUGE_1MB: u32 = 1342177280; +pub const MAP_HUGE_2MB: u32 = 1409286144; +pub const MAP_HUGE_8MB: u32 = 1543503872; +pub const MAP_HUGE_16MB: u32 = 1610612736; +pub const MAP_HUGE_32MB: u32 = 1677721600; +pub const MAP_HUGE_256MB: u32 = 1879048192; +pub const MAP_HUGE_512MB: u32 = 1946157056; +pub const MAP_HUGE_1GB: u32 = 2013265920; +pub const MAP_HUGE_2GB: u32 = 2080374784; +pub const MAP_HUGE_16GB: u32 = 2281701376; +pub const POLLIN: u32 = 1; +pub const POLLPRI: u32 = 2; +pub const POLLOUT: u32 = 4; +pub const POLLERR: u32 = 8; +pub const POLLHUP: u32 = 16; +pub const POLLNVAL: u32 = 32; +pub const POLLRDNORM: u32 = 64; +pub const POLLRDBAND: u32 = 128; +pub const POLLWRNORM: u32 = 256; +pub const POLLWRBAND: u32 = 512; +pub const POLLMSG: u32 = 1024; +pub const POLLREMOVE: u32 = 4096; +pub const POLLRDHUP: u32 = 8192; +pub const GRND_NONBLOCK: u32 = 1; +pub const GRND_RANDOM: u32 = 2; +pub const GRND_INSECURE: u32 = 4; +pub const ITIMER_REAL: u32 = 0; +pub const ITIMER_VIRTUAL: u32 = 1; +pub const ITIMER_PROF: u32 = 2; +pub const CLOCK_REALTIME: u32 = 0; +pub const CLOCK_MONOTONIC: u32 = 1; +pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; +pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; +pub const CLOCK_MONOTONIC_RAW: u32 = 4; +pub const CLOCK_REALTIME_COARSE: u32 = 5; +pub const CLOCK_MONOTONIC_COARSE: u32 = 6; +pub const CLOCK_BOOTTIME: u32 = 7; +pub const CLOCK_REALTIME_ALARM: u32 = 8; +pub const CLOCK_BOOTTIME_ALARM: u32 = 9; +pub const CLOCK_SGI_CYCLE: u32 = 10; +pub const CLOCK_TAI: u32 = 11; +pub const MAX_CLOCKS: u32 = 16; +pub const CLOCKS_MASK: u32 = 1; +pub const CLOCKS_MONO: u32 = 1; +pub const TIMER_ABSTIME: u32 = 1; +pub const RUSAGE_SELF: u32 = 0; +pub const RUSAGE_CHILDREN: i32 = -1; +pub const RUSAGE_BOTH: i32 = -2; +pub const RUSAGE_THREAD: u32 = 1; +pub const RLIM64_INFINITY: i32 = -1; +pub const PRIO_MIN: i32 = -20; +pub const PRIO_MAX: u32 = 20; +pub const PRIO_PROCESS: u32 = 0; +pub const PRIO_PGRP: u32 = 1; +pub const PRIO_USER: u32 = 2; +pub const _STK_LIM: u32 = 8388608; +pub const MLOCK_LIMIT: u32 = 8388608; +pub const RLIMIT_CPU: u32 = 0; +pub const RLIMIT_FSIZE: u32 = 1; +pub const RLIMIT_DATA: u32 = 2; +pub const RLIMIT_STACK: u32 = 3; +pub const RLIMIT_CORE: u32 = 4; +pub const RLIMIT_RSS: u32 = 5; +pub const RLIMIT_NPROC: u32 = 6; +pub const RLIMIT_NOFILE: u32 = 7; +pub const RLIMIT_MEMLOCK: u32 = 8; +pub const RLIMIT_AS: u32 = 9; +pub const RLIMIT_LOCKS: u32 = 10; +pub const RLIMIT_SIGPENDING: u32 = 11; +pub const RLIMIT_MSGQUEUE: u32 = 12; +pub const RLIMIT_NICE: u32 = 13; +pub const RLIMIT_RTPRIO: u32 = 14; +pub const RLIMIT_RTTIME: u32 = 15; +pub const RLIM_NLIMITS: u32 = 16; +pub const RLIM_INFINITY: i32 = -1; +pub const CSIGNAL: u32 = 255; +pub const CLONE_VM: u32 = 256; +pub const CLONE_FS: u32 = 512; +pub const CLONE_FILES: u32 = 1024; +pub const CLONE_SIGHAND: u32 = 2048; +pub const CLONE_PIDFD: u32 = 4096; +pub const CLONE_PTRACE: u32 = 8192; +pub const CLONE_VFORK: u32 = 16384; +pub const CLONE_PARENT: u32 = 32768; +pub const CLONE_THREAD: u32 = 65536; +pub const CLONE_NEWNS: u32 = 131072; +pub const CLONE_SYSVSEM: u32 = 262144; +pub const CLONE_SETTLS: u32 = 524288; +pub const CLONE_PARENT_SETTID: u32 = 1048576; +pub const CLONE_CHILD_CLEARTID: u32 = 2097152; +pub const CLONE_DETACHED: u32 = 4194304; +pub const CLONE_UNTRACED: u32 = 8388608; +pub const CLONE_CHILD_SETTID: u32 = 16777216; +pub const CLONE_NEWCGROUP: u32 = 33554432; +pub const CLONE_NEWUTS: u32 = 67108864; +pub const CLONE_NEWIPC: u32 = 134217728; +pub const CLONE_NEWUSER: u32 = 268435456; +pub const CLONE_NEWPID: u32 = 536870912; +pub const CLONE_NEWNET: u32 = 1073741824; +pub const CLONE_IO: u32 = 2147483648; +pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; +pub const CLONE_INTO_CGROUP: u64 = 8589934592; +pub const CLONE_NEWTIME: u32 = 128; +pub const CLONE_ARGS_SIZE_VER0: u32 = 64; +pub const CLONE_ARGS_SIZE_VER1: u32 = 80; +pub const CLONE_ARGS_SIZE_VER2: u32 = 88; +pub const SCHED_NORMAL: u32 = 0; +pub const SCHED_FIFO: u32 = 1; +pub const SCHED_RR: u32 = 2; +pub const SCHED_BATCH: u32 = 3; +pub const SCHED_IDLE: u32 = 5; +pub const SCHED_DEADLINE: u32 = 6; +pub const SCHED_RESET_ON_FORK: u32 = 1073741824; +pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; +pub const SCHED_FLAG_RECLAIM: u32 = 2; +pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; +pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; +pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; +pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; +pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; +pub const SCHED_FLAG_KEEP_ALL: u32 = 24; +pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; +pub const SCHED_FLAG_ALL: u32 = 127; +pub const NSIG: u32 = 32; +pub const SIGHUP: u32 = 1; +pub const SIGINT: u32 = 2; +pub const SIGQUIT: u32 = 3; +pub const SIGILL: u32 = 4; +pub const SIGTRAP: u32 = 5; +pub const SIGABRT: u32 = 6; +pub const SIGIOT: u32 = 6; +pub const SIGBUS: u32 = 7; +pub const SIGFPE: u32 = 8; +pub const SIGKILL: u32 = 9; +pub const SIGUSR1: u32 = 10; +pub const SIGSEGV: u32 = 11; +pub const SIGUSR2: u32 = 12; +pub const SIGPIPE: u32 = 13; +pub const SIGALRM: u32 = 14; +pub const SIGTERM: u32 = 15; +pub const SIGSTKFLT: u32 = 16; +pub const SIGCHLD: u32 = 17; +pub const SIGCONT: u32 = 18; +pub const SIGSTOP: u32 = 19; +pub const SIGTSTP: u32 = 20; +pub const SIGTTIN: u32 = 21; +pub const SIGTTOU: u32 = 22; +pub const SIGURG: u32 = 23; +pub const SIGXCPU: u32 = 24; +pub const SIGXFSZ: u32 = 25; +pub const SIGVTALRM: u32 = 26; +pub const SIGPROF: u32 = 27; +pub const SIGWINCH: u32 = 28; +pub const SIGIO: u32 = 29; +pub const SIGPOLL: u32 = 29; +pub const SIGPWR: u32 = 30; +pub const SIGSYS: u32 = 31; +pub const SIGUNUSED: u32 = 31; +pub const SIGRTMIN: u32 = 32; +pub const SA_RESTORER: u32 = 67108864; +pub const MINSIGSTKSZ: u32 = 2048; +pub const SIGSTKSZ: u32 = 8192; +pub const SA_NOCLDSTOP: u32 = 1; +pub const SA_NOCLDWAIT: u32 = 2; +pub const SA_SIGINFO: u32 = 4; +pub const SA_UNSUPPORTED: u32 = 1024; +pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SA_ONSTACK: u32 = 134217728; +pub const SA_RESTART: u32 = 268435456; +pub const SA_NODEFER: u32 = 1073741824; +pub const SA_RESETHAND: u32 = 2147483648; +pub const SA_NOMASK: u32 = 1073741824; +pub const SA_ONESHOT: u32 = 2147483648; +pub const SIG_BLOCK: u32 = 0; +pub const SIG_UNBLOCK: u32 = 1; +pub const SIG_SETMASK: u32 = 2; +pub const SI_MAX_SIZE: u32 = 128; +pub const SI_USER: u32 = 0; +pub const SI_KERNEL: u32 = 128; +pub const SI_QUEUE: i32 = -1; +pub const SI_TIMER: i32 = -2; +pub const SI_MESGQ: i32 = -3; +pub const SI_ASYNCIO: i32 = -4; +pub const SI_SIGIO: i32 = -5; +pub const SI_TKILL: i32 = -6; +pub const SI_DETHREAD: i32 = -7; +pub const SI_ASYNCNL: i32 = -60; +pub const ILL_ILLOPC: u32 = 1; +pub const ILL_ILLOPN: u32 = 2; +pub const ILL_ILLADR: u32 = 3; +pub const ILL_ILLTRP: u32 = 4; +pub const ILL_PRVOPC: u32 = 5; +pub const ILL_PRVREG: u32 = 6; +pub const ILL_COPROC: u32 = 7; +pub const ILL_BADSTK: u32 = 8; +pub const ILL_BADIADDR: u32 = 9; +pub const __ILL_BREAK: u32 = 10; +pub const __ILL_BNDMOD: u32 = 11; +pub const NSIGILL: u32 = 11; +pub const FPE_INTDIV: u32 = 1; +pub const FPE_INTOVF: u32 = 2; +pub const FPE_FLTDIV: u32 = 3; +pub const FPE_FLTOVF: u32 = 4; +pub const FPE_FLTUND: u32 = 5; +pub const FPE_FLTRES: u32 = 6; +pub const FPE_FLTINV: u32 = 7; +pub const FPE_FLTSUB: u32 = 8; +pub const __FPE_DECOVF: u32 = 9; +pub const __FPE_DECDIV: u32 = 10; +pub const __FPE_DECERR: u32 = 11; +pub const __FPE_INVASC: u32 = 12; +pub const __FPE_INVDEC: u32 = 13; +pub const FPE_FLTUNK: u32 = 14; +pub const FPE_CONDTRAP: u32 = 15; +pub const NSIGFPE: u32 = 15; +pub const SEGV_MAPERR: u32 = 1; +pub const SEGV_ACCERR: u32 = 2; +pub const SEGV_BNDERR: u32 = 3; +pub const SEGV_PKUERR: u32 = 4; +pub const SEGV_ACCADI: u32 = 5; +pub const SEGV_ADIDERR: u32 = 6; +pub const SEGV_ADIPERR: u32 = 7; +pub const SEGV_MTEAERR: u32 = 8; +pub const SEGV_MTESERR: u32 = 9; +pub const NSIGSEGV: u32 = 9; +pub const BUS_ADRALN: u32 = 1; +pub const BUS_ADRERR: u32 = 2; +pub const BUS_OBJERR: u32 = 3; +pub const BUS_MCEERR_AR: u32 = 4; +pub const BUS_MCEERR_AO: u32 = 5; +pub const NSIGBUS: u32 = 5; +pub const TRAP_BRKPT: u32 = 1; +pub const TRAP_TRACE: u32 = 2; +pub const TRAP_BRANCH: u32 = 3; +pub const TRAP_HWBKPT: u32 = 4; +pub const TRAP_UNK: u32 = 5; +pub const TRAP_PERF: u32 = 6; +pub const NSIGTRAP: u32 = 6; +pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; +pub const CLD_EXITED: u32 = 1; +pub const CLD_KILLED: u32 = 2; +pub const CLD_DUMPED: u32 = 3; +pub const CLD_TRAPPED: u32 = 4; +pub const CLD_STOPPED: u32 = 5; +pub const CLD_CONTINUED: u32 = 6; +pub const NSIGCHLD: u32 = 6; +pub const POLL_IN: u32 = 1; +pub const POLL_OUT: u32 = 2; +pub const POLL_MSG: u32 = 3; +pub const POLL_ERR: u32 = 4; +pub const POLL_PRI: u32 = 5; +pub const POLL_HUP: u32 = 6; +pub const NSIGPOLL: u32 = 6; +pub const SYS_SECCOMP: u32 = 1; +pub const SYS_USER_DISPATCH: u32 = 2; +pub const NSIGSYS: u32 = 2; +pub const EMT_TAGOVF: u32 = 1; +pub const NSIGEMT: u32 = 1; +pub const SIGEV_SIGNAL: u32 = 0; +pub const SIGEV_NONE: u32 = 1; +pub const SIGEV_THREAD: u32 = 2; +pub const SIGEV_THREAD_ID: u32 = 4; +pub const SIGEV_MAX_SIZE: u32 = 64; +pub const SS_ONSTACK: u32 = 1; +pub const SS_DISABLE: u32 = 2; +pub const SS_AUTODISARM: u32 = 2147483648; +pub const SS_FLAG_BITS: u32 = 2147483648; +pub const S_IFMT: u32 = 61440; +pub const S_IFSOCK: u32 = 49152; +pub const S_IFLNK: u32 = 40960; +pub const S_IFREG: u32 = 32768; +pub const S_IFBLK: u32 = 24576; +pub const S_IFDIR: u32 = 16384; +pub const S_IFCHR: u32 = 8192; +pub const S_IFIFO: u32 = 4096; +pub const S_ISUID: u32 = 2048; +pub const S_ISGID: u32 = 1024; +pub const S_ISVTX: u32 = 512; +pub const S_IRWXU: u32 = 448; +pub const S_IRUSR: u32 = 256; +pub const S_IWUSR: u32 = 128; +pub const S_IXUSR: u32 = 64; +pub const S_IRWXG: u32 = 56; +pub const S_IRGRP: u32 = 32; +pub const S_IWGRP: u32 = 16; +pub const S_IXGRP: u32 = 8; +pub const S_IRWXO: u32 = 7; +pub const S_IROTH: u32 = 4; +pub const S_IWOTH: u32 = 2; +pub const S_IXOTH: u32 = 1; +pub const STATX_TYPE: u32 = 1; +pub const STATX_MODE: u32 = 2; +pub const STATX_NLINK: u32 = 4; +pub const STATX_UID: u32 = 8; +pub const STATX_GID: u32 = 16; +pub const STATX_ATIME: u32 = 32; +pub const STATX_MTIME: u32 = 64; +pub const STATX_CTIME: u32 = 128; +pub const STATX_INO: u32 = 256; +pub const STATX_SIZE: u32 = 512; +pub const STATX_BLOCKS: u32 = 1024; +pub const STATX_BASIC_STATS: u32 = 2047; +pub const STATX_BTIME: u32 = 2048; +pub const STATX_MNT_ID: u32 = 4096; +pub const STATX_DIOALIGN: u32 = 8192; +pub const STATX__RESERVED: u32 = 2147483648; +pub const STATX_ALL: u32 = 4095; +pub const STATX_ATTR_COMPRESSED: u32 = 4; +pub const STATX_ATTR_IMMUTABLE: u32 = 16; +pub const STATX_ATTR_APPEND: u32 = 32; +pub const STATX_ATTR_NODUMP: u32 = 64; +pub const STATX_ATTR_ENCRYPTED: u32 = 2048; +pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; +pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; +pub const STATX_ATTR_VERITY: u32 = 1048576; +pub const STATX_ATTR_DAX: u32 = 2097152; +pub const IGNBRK: u32 = 1; +pub const BRKINT: u32 = 2; +pub const IGNPAR: u32 = 4; +pub const PARMRK: u32 = 8; +pub const INPCK: u32 = 16; +pub const ISTRIP: u32 = 32; +pub const INLCR: u32 = 64; +pub const IGNCR: u32 = 128; +pub const ICRNL: u32 = 256; +pub const IXANY: u32 = 2048; +pub const OPOST: u32 = 1; +pub const OCRNL: u32 = 8; +pub const ONOCR: u32 = 16; +pub const ONLRET: u32 = 32; +pub const OFILL: u32 = 64; +pub const OFDEL: u32 = 128; +pub const B0: u32 = 0; +pub const B50: u32 = 1; +pub const B75: u32 = 2; +pub const B110: u32 = 3; +pub const B134: u32 = 4; +pub const B150: u32 = 5; +pub const B200: u32 = 6; +pub const B300: u32 = 7; +pub const B600: u32 = 8; +pub const B1200: u32 = 9; +pub const B1800: u32 = 10; +pub const B2400: u32 = 11; +pub const B4800: u32 = 12; +pub const B9600: u32 = 13; +pub const B19200: u32 = 14; +pub const B38400: u32 = 15; +pub const EXTA: u32 = 14; +pub const EXTB: u32 = 15; +pub const ADDRB: u32 = 536870912; +pub const CMSPAR: u32 = 1073741824; +pub const CRTSCTS: u32 = 2147483648; +pub const IBSHIFT: u32 = 16; +pub const TCOOFF: u32 = 0; +pub const TCOON: u32 = 1; +pub const TCIOFF: u32 = 2; +pub const TCION: u32 = 3; +pub const TCIFLUSH: u32 = 0; +pub const TCOFLUSH: u32 = 1; +pub const TCIOFLUSH: u32 = 2; +pub const NCCS: u32 = 19; +pub const VINTR: u32 = 0; +pub const VQUIT: u32 = 1; +pub const VERASE: u32 = 2; +pub const VKILL: u32 = 3; +pub const VEOF: u32 = 4; +pub const VTIME: u32 = 5; +pub const VMIN: u32 = 6; +pub const VSWTC: u32 = 7; +pub const VSTART: u32 = 8; +pub const VSTOP: u32 = 9; +pub const VSUSP: u32 = 10; +pub const VEOL: u32 = 11; +pub const VREPRINT: u32 = 12; +pub const VDISCARD: u32 = 13; +pub const VWERASE: u32 = 14; +pub const VLNEXT: u32 = 15; +pub const VEOL2: u32 = 16; +pub const IUCLC: u32 = 512; +pub const IXON: u32 = 1024; +pub const IXOFF: u32 = 4096; +pub const IMAXBEL: u32 = 8192; +pub const IUTF8: u32 = 16384; +pub const OLCUC: u32 = 2; +pub const ONLCR: u32 = 4; +pub const NLDLY: u32 = 256; +pub const NL0: u32 = 0; +pub const NL1: u32 = 256; +pub const CRDLY: u32 = 1536; +pub const CR0: u32 = 0; +pub const CR1: u32 = 512; +pub const CR2: u32 = 1024; +pub const CR3: u32 = 1536; +pub const TABDLY: u32 = 6144; +pub const TAB0: u32 = 0; +pub const TAB1: u32 = 2048; +pub const TAB2: u32 = 4096; +pub const TAB3: u32 = 6144; +pub const XTABS: u32 = 6144; +pub const BSDLY: u32 = 8192; +pub const BS0: u32 = 0; +pub const BS1: u32 = 8192; +pub const VTDLY: u32 = 16384; +pub const VT0: u32 = 0; +pub const VT1: u32 = 16384; +pub const FFDLY: u32 = 32768; +pub const FF0: u32 = 0; +pub const FF1: u32 = 32768; +pub const CBAUD: u32 = 4111; +pub const CSIZE: u32 = 48; +pub const CS5: u32 = 0; +pub const CS6: u32 = 16; +pub const CS7: u32 = 32; +pub const CS8: u32 = 48; +pub const CSTOPB: u32 = 64; +pub const CREAD: u32 = 128; +pub const PARENB: u32 = 256; +pub const PARODD: u32 = 512; +pub const HUPCL: u32 = 1024; +pub const CLOCAL: u32 = 2048; +pub const CBAUDEX: u32 = 4096; +pub const BOTHER: u32 = 4096; +pub const B57600: u32 = 4097; +pub const B115200: u32 = 4098; +pub const B230400: u32 = 4099; +pub const B460800: u32 = 4100; +pub const B500000: u32 = 4101; +pub const B576000: u32 = 4102; +pub const B921600: u32 = 4103; +pub const B1000000: u32 = 4104; +pub const B1152000: u32 = 4105; +pub const B1500000: u32 = 4106; +pub const B2000000: u32 = 4107; +pub const B2500000: u32 = 4108; +pub const B3000000: u32 = 4109; +pub const B3500000: u32 = 4110; +pub const B4000000: u32 = 4111; +pub const CIBAUD: u32 = 269418496; +pub const ISIG: u32 = 1; +pub const ICANON: u32 = 2; +pub const XCASE: u32 = 4; +pub const ECHO: u32 = 8; +pub const ECHOE: u32 = 16; +pub const ECHOK: u32 = 32; +pub const ECHONL: u32 = 64; +pub const NOFLSH: u32 = 128; +pub const TOSTOP: u32 = 256; +pub const ECHOCTL: u32 = 512; +pub const ECHOPRT: u32 = 1024; +pub const ECHOKE: u32 = 2048; +pub const FLUSHO: u32 = 4096; +pub const PENDIN: u32 = 16384; +pub const IEXTEN: u32 = 32768; +pub const EXTPROC: u32 = 65536; +pub const TCSANOW: u32 = 0; +pub const TCSADRAIN: u32 = 1; +pub const TCSAFLUSH: u32 = 2; +pub const TIOCPKT_DATA: u32 = 0; +pub const TIOCPKT_FLUSHREAD: u32 = 1; +pub const TIOCPKT_FLUSHWRITE: u32 = 2; +pub const TIOCPKT_STOP: u32 = 4; +pub const TIOCPKT_START: u32 = 8; +pub const TIOCPKT_NOSTOP: u32 = 16; +pub const TIOCPKT_DOSTOP: u32 = 32; +pub const TIOCPKT_IOCTL: u32 = 64; +pub const TIOCSER_TEMT: u32 = 1; +pub const NCC: u32 = 8; +pub const TIOCM_LE: u32 = 1; +pub const TIOCM_DTR: u32 = 2; +pub const TIOCM_RTS: u32 = 4; +pub const TIOCM_ST: u32 = 8; +pub const TIOCM_SR: u32 = 16; +pub const TIOCM_CTS: u32 = 32; +pub const TIOCM_CAR: u32 = 64; +pub const TIOCM_RNG: u32 = 128; +pub const TIOCM_DSR: u32 = 256; +pub const TIOCM_CD: u32 = 64; +pub const TIOCM_RI: u32 = 128; +pub const TIOCM_OUT1: u32 = 8192; +pub const TIOCM_OUT2: u32 = 16384; +pub const TIOCM_LOOP: u32 = 32768; +pub const UIO_FASTIOV: u32 = 8; +pub const UIO_MAXIOV: u32 = 1024; +pub const __X32_SYSCALL_BIT: u32 = 1073741824; +pub const __NR_read: u32 = 1073741824; +pub const __NR_write: u32 = 1073741825; +pub const __NR_open: u32 = 1073741826; +pub const __NR_close: u32 = 1073741827; +pub const __NR_stat: u32 = 1073741828; +pub const __NR_fstat: u32 = 1073741829; +pub const __NR_lstat: u32 = 1073741830; +pub const __NR_poll: u32 = 1073741831; +pub const __NR_lseek: u32 = 1073741832; +pub const __NR_mmap: u32 = 1073741833; +pub const __NR_mprotect: u32 = 1073741834; +pub const __NR_munmap: u32 = 1073741835; +pub const __NR_brk: u32 = 1073741836; +pub const __NR_rt_sigprocmask: u32 = 1073741838; +pub const __NR_pread64: u32 = 1073741841; +pub const __NR_pwrite64: u32 = 1073741842; +pub const __NR_access: u32 = 1073741845; +pub const __NR_pipe: u32 = 1073741846; +pub const __NR_select: u32 = 1073741847; +pub const __NR_sched_yield: u32 = 1073741848; +pub const __NR_mremap: u32 = 1073741849; +pub const __NR_msync: u32 = 1073741850; +pub const __NR_mincore: u32 = 1073741851; +pub const __NR_madvise: u32 = 1073741852; +pub const __NR_shmget: u32 = 1073741853; +pub const __NR_shmat: u32 = 1073741854; +pub const __NR_shmctl: u32 = 1073741855; +pub const __NR_dup: u32 = 1073741856; +pub const __NR_dup2: u32 = 1073741857; +pub const __NR_pause: u32 = 1073741858; +pub const __NR_nanosleep: u32 = 1073741859; +pub const __NR_getitimer: u32 = 1073741860; +pub const __NR_alarm: u32 = 1073741861; +pub const __NR_setitimer: u32 = 1073741862; +pub const __NR_getpid: u32 = 1073741863; +pub const __NR_sendfile: u32 = 1073741864; +pub const __NR_socket: u32 = 1073741865; +pub const __NR_connect: u32 = 1073741866; +pub const __NR_accept: u32 = 1073741867; +pub const __NR_sendto: u32 = 1073741868; +pub const __NR_shutdown: u32 = 1073741872; +pub const __NR_bind: u32 = 1073741873; +pub const __NR_listen: u32 = 1073741874; +pub const __NR_getsockname: u32 = 1073741875; +pub const __NR_getpeername: u32 = 1073741876; +pub const __NR_socketpair: u32 = 1073741877; +pub const __NR_clone: u32 = 1073741880; +pub const __NR_fork: u32 = 1073741881; +pub const __NR_vfork: u32 = 1073741882; +pub const __NR_exit: u32 = 1073741884; +pub const __NR_wait4: u32 = 1073741885; +pub const __NR_kill: u32 = 1073741886; +pub const __NR_uname: u32 = 1073741887; +pub const __NR_semget: u32 = 1073741888; +pub const __NR_semop: u32 = 1073741889; +pub const __NR_semctl: u32 = 1073741890; +pub const __NR_shmdt: u32 = 1073741891; +pub const __NR_msgget: u32 = 1073741892; +pub const __NR_msgsnd: u32 = 1073741893; +pub const __NR_msgrcv: u32 = 1073741894; +pub const __NR_msgctl: u32 = 1073741895; +pub const __NR_fcntl: u32 = 1073741896; +pub const __NR_flock: u32 = 1073741897; +pub const __NR_fsync: u32 = 1073741898; +pub const __NR_fdatasync: u32 = 1073741899; +pub const __NR_truncate: u32 = 1073741900; +pub const __NR_ftruncate: u32 = 1073741901; +pub const __NR_getdents: u32 = 1073741902; +pub const __NR_getcwd: u32 = 1073741903; +pub const __NR_chdir: u32 = 1073741904; +pub const __NR_fchdir: u32 = 1073741905; +pub const __NR_rename: u32 = 1073741906; +pub const __NR_mkdir: u32 = 1073741907; +pub const __NR_rmdir: u32 = 1073741908; +pub const __NR_creat: u32 = 1073741909; +pub const __NR_link: u32 = 1073741910; +pub const __NR_unlink: u32 = 1073741911; +pub const __NR_symlink: u32 = 1073741912; +pub const __NR_readlink: u32 = 1073741913; +pub const __NR_chmod: u32 = 1073741914; +pub const __NR_fchmod: u32 = 1073741915; +pub const __NR_chown: u32 = 1073741916; +pub const __NR_fchown: u32 = 1073741917; +pub const __NR_lchown: u32 = 1073741918; +pub const __NR_umask: u32 = 1073741919; +pub const __NR_gettimeofday: u32 = 1073741920; +pub const __NR_getrlimit: u32 = 1073741921; +pub const __NR_getrusage: u32 = 1073741922; +pub const __NR_sysinfo: u32 = 1073741923; +pub const __NR_times: u32 = 1073741924; +pub const __NR_getuid: u32 = 1073741926; +pub const __NR_syslog: u32 = 1073741927; +pub const __NR_getgid: u32 = 1073741928; +pub const __NR_setuid: u32 = 1073741929; +pub const __NR_setgid: u32 = 1073741930; +pub const __NR_geteuid: u32 = 1073741931; +pub const __NR_getegid: u32 = 1073741932; +pub const __NR_setpgid: u32 = 1073741933; +pub const __NR_getppid: u32 = 1073741934; +pub const __NR_getpgrp: u32 = 1073741935; +pub const __NR_setsid: u32 = 1073741936; +pub const __NR_setreuid: u32 = 1073741937; +pub const __NR_setregid: u32 = 1073741938; +pub const __NR_getgroups: u32 = 1073741939; +pub const __NR_setgroups: u32 = 1073741940; +pub const __NR_setresuid: u32 = 1073741941; +pub const __NR_getresuid: u32 = 1073741942; +pub const __NR_setresgid: u32 = 1073741943; +pub const __NR_getresgid: u32 = 1073741944; +pub const __NR_getpgid: u32 = 1073741945; +pub const __NR_setfsuid: u32 = 1073741946; +pub const __NR_setfsgid: u32 = 1073741947; +pub const __NR_getsid: u32 = 1073741948; +pub const __NR_capget: u32 = 1073741949; +pub const __NR_capset: u32 = 1073741950; +pub const __NR_rt_sigsuspend: u32 = 1073741954; +pub const __NR_utime: u32 = 1073741956; +pub const __NR_mknod: u32 = 1073741957; +pub const __NR_personality: u32 = 1073741959; +pub const __NR_ustat: u32 = 1073741960; +pub const __NR_statfs: u32 = 1073741961; +pub const __NR_fstatfs: u32 = 1073741962; +pub const __NR_sysfs: u32 = 1073741963; +pub const __NR_getpriority: u32 = 1073741964; +pub const __NR_setpriority: u32 = 1073741965; +pub const __NR_sched_setparam: u32 = 1073741966; +pub const __NR_sched_getparam: u32 = 1073741967; +pub const __NR_sched_setscheduler: u32 = 1073741968; +pub const __NR_sched_getscheduler: u32 = 1073741969; +pub const __NR_sched_get_priority_max: u32 = 1073741970; +pub const __NR_sched_get_priority_min: u32 = 1073741971; +pub const __NR_sched_rr_get_interval: u32 = 1073741972; +pub const __NR_mlock: u32 = 1073741973; +pub const __NR_munlock: u32 = 1073741974; +pub const __NR_mlockall: u32 = 1073741975; +pub const __NR_munlockall: u32 = 1073741976; +pub const __NR_vhangup: u32 = 1073741977; +pub const __NR_modify_ldt: u32 = 1073741978; +pub const __NR_pivot_root: u32 = 1073741979; +pub const __NR_prctl: u32 = 1073741981; +pub const __NR_arch_prctl: u32 = 1073741982; +pub const __NR_adjtimex: u32 = 1073741983; +pub const __NR_setrlimit: u32 = 1073741984; +pub const __NR_chroot: u32 = 1073741985; +pub const __NR_sync: u32 = 1073741986; +pub const __NR_acct: u32 = 1073741987; +pub const __NR_settimeofday: u32 = 1073741988; +pub const __NR_mount: u32 = 1073741989; +pub const __NR_umount2: u32 = 1073741990; +pub const __NR_swapon: u32 = 1073741991; +pub const __NR_swapoff: u32 = 1073741992; +pub const __NR_reboot: u32 = 1073741993; +pub const __NR_sethostname: u32 = 1073741994; +pub const __NR_setdomainname: u32 = 1073741995; +pub const __NR_iopl: u32 = 1073741996; +pub const __NR_ioperm: u32 = 1073741997; +pub const __NR_init_module: u32 = 1073741999; +pub const __NR_delete_module: u32 = 1073742000; +pub const __NR_quotactl: u32 = 1073742003; +pub const __NR_getpmsg: u32 = 1073742005; +pub const __NR_putpmsg: u32 = 1073742006; +pub const __NR_afs_syscall: u32 = 1073742007; +pub const __NR_tuxcall: u32 = 1073742008; +pub const __NR_security: u32 = 1073742009; +pub const __NR_gettid: u32 = 1073742010; +pub const __NR_readahead: u32 = 1073742011; +pub const __NR_setxattr: u32 = 1073742012; +pub const __NR_lsetxattr: u32 = 1073742013; +pub const __NR_fsetxattr: u32 = 1073742014; +pub const __NR_getxattr: u32 = 1073742015; +pub const __NR_lgetxattr: u32 = 1073742016; +pub const __NR_fgetxattr: u32 = 1073742017; +pub const __NR_listxattr: u32 = 1073742018; +pub const __NR_llistxattr: u32 = 1073742019; +pub const __NR_flistxattr: u32 = 1073742020; +pub const __NR_removexattr: u32 = 1073742021; +pub const __NR_lremovexattr: u32 = 1073742022; +pub const __NR_fremovexattr: u32 = 1073742023; +pub const __NR_tkill: u32 = 1073742024; +pub const __NR_time: u32 = 1073742025; +pub const __NR_futex: u32 = 1073742026; +pub const __NR_sched_setaffinity: u32 = 1073742027; +pub const __NR_sched_getaffinity: u32 = 1073742028; +pub const __NR_io_destroy: u32 = 1073742031; +pub const __NR_io_getevents: u32 = 1073742032; +pub const __NR_io_cancel: u32 = 1073742034; +pub const __NR_lookup_dcookie: u32 = 1073742036; +pub const __NR_epoll_create: u32 = 1073742037; +pub const __NR_remap_file_pages: u32 = 1073742040; +pub const __NR_getdents64: u32 = 1073742041; +pub const __NR_set_tid_address: u32 = 1073742042; +pub const __NR_restart_syscall: u32 = 1073742043; +pub const __NR_semtimedop: u32 = 1073742044; +pub const __NR_fadvise64: u32 = 1073742045; +pub const __NR_timer_settime: u32 = 1073742047; +pub const __NR_timer_gettime: u32 = 1073742048; +pub const __NR_timer_getoverrun: u32 = 1073742049; +pub const __NR_timer_delete: u32 = 1073742050; +pub const __NR_clock_settime: u32 = 1073742051; +pub const __NR_clock_gettime: u32 = 1073742052; +pub const __NR_clock_getres: u32 = 1073742053; +pub const __NR_clock_nanosleep: u32 = 1073742054; +pub const __NR_exit_group: u32 = 1073742055; +pub const __NR_epoll_wait: u32 = 1073742056; +pub const __NR_epoll_ctl: u32 = 1073742057; +pub const __NR_tgkill: u32 = 1073742058; +pub const __NR_utimes: u32 = 1073742059; +pub const __NR_mbind: u32 = 1073742061; +pub const __NR_set_mempolicy: u32 = 1073742062; +pub const __NR_get_mempolicy: u32 = 1073742063; +pub const __NR_mq_open: u32 = 1073742064; +pub const __NR_mq_unlink: u32 = 1073742065; +pub const __NR_mq_timedsend: u32 = 1073742066; +pub const __NR_mq_timedreceive: u32 = 1073742067; +pub const __NR_mq_getsetattr: u32 = 1073742069; +pub const __NR_add_key: u32 = 1073742072; +pub const __NR_request_key: u32 = 1073742073; +pub const __NR_keyctl: u32 = 1073742074; +pub const __NR_ioprio_set: u32 = 1073742075; +pub const __NR_ioprio_get: u32 = 1073742076; +pub const __NR_inotify_init: u32 = 1073742077; +pub const __NR_inotify_add_watch: u32 = 1073742078; +pub const __NR_inotify_rm_watch: u32 = 1073742079; +pub const __NR_migrate_pages: u32 = 1073742080; +pub const __NR_openat: u32 = 1073742081; +pub const __NR_mkdirat: u32 = 1073742082; +pub const __NR_mknodat: u32 = 1073742083; +pub const __NR_fchownat: u32 = 1073742084; +pub const __NR_futimesat: u32 = 1073742085; +pub const __NR_newfstatat: u32 = 1073742086; +pub const __NR_unlinkat: u32 = 1073742087; +pub const __NR_renameat: u32 = 1073742088; +pub const __NR_linkat: u32 = 1073742089; +pub const __NR_symlinkat: u32 = 1073742090; +pub const __NR_readlinkat: u32 = 1073742091; +pub const __NR_fchmodat: u32 = 1073742092; +pub const __NR_faccessat: u32 = 1073742093; +pub const __NR_pselect6: u32 = 1073742094; +pub const __NR_ppoll: u32 = 1073742095; +pub const __NR_unshare: u32 = 1073742096; +pub const __NR_splice: u32 = 1073742099; +pub const __NR_tee: u32 = 1073742100; +pub const __NR_sync_file_range: u32 = 1073742101; +pub const __NR_utimensat: u32 = 1073742104; +pub const __NR_epoll_pwait: u32 = 1073742105; +pub const __NR_signalfd: u32 = 1073742106; +pub const __NR_timerfd_create: u32 = 1073742107; +pub const __NR_eventfd: u32 = 1073742108; +pub const __NR_fallocate: u32 = 1073742109; +pub const __NR_timerfd_settime: u32 = 1073742110; +pub const __NR_timerfd_gettime: u32 = 1073742111; +pub const __NR_accept4: u32 = 1073742112; +pub const __NR_signalfd4: u32 = 1073742113; +pub const __NR_eventfd2: u32 = 1073742114; +pub const __NR_epoll_create1: u32 = 1073742115; +pub const __NR_dup3: u32 = 1073742116; +pub const __NR_pipe2: u32 = 1073742117; +pub const __NR_inotify_init1: u32 = 1073742118; +pub const __NR_perf_event_open: u32 = 1073742122; +pub const __NR_fanotify_init: u32 = 1073742124; +pub const __NR_fanotify_mark: u32 = 1073742125; +pub const __NR_prlimit64: u32 = 1073742126; +pub const __NR_name_to_handle_at: u32 = 1073742127; +pub const __NR_open_by_handle_at: u32 = 1073742128; +pub const __NR_clock_adjtime: u32 = 1073742129; +pub const __NR_syncfs: u32 = 1073742130; +pub const __NR_setns: u32 = 1073742132; +pub const __NR_getcpu: u32 = 1073742133; +pub const __NR_kcmp: u32 = 1073742136; +pub const __NR_finit_module: u32 = 1073742137; +pub const __NR_sched_setattr: u32 = 1073742138; +pub const __NR_sched_getattr: u32 = 1073742139; +pub const __NR_renameat2: u32 = 1073742140; +pub const __NR_seccomp: u32 = 1073742141; +pub const __NR_getrandom: u32 = 1073742142; +pub const __NR_memfd_create: u32 = 1073742143; +pub const __NR_kexec_file_load: u32 = 1073742144; +pub const __NR_bpf: u32 = 1073742145; +pub const __NR_userfaultfd: u32 = 1073742147; +pub const __NR_membarrier: u32 = 1073742148; +pub const __NR_mlock2: u32 = 1073742149; +pub const __NR_copy_file_range: u32 = 1073742150; +pub const __NR_pkey_mprotect: u32 = 1073742153; +pub const __NR_pkey_alloc: u32 = 1073742154; +pub const __NR_pkey_free: u32 = 1073742155; +pub const __NR_statx: u32 = 1073742156; +pub const __NR_io_pgetevents: u32 = 1073742157; +pub const __NR_rseq: u32 = 1073742158; +pub const __NR_pidfd_send_signal: u32 = 1073742248; +pub const __NR_io_uring_setup: u32 = 1073742249; +pub const __NR_io_uring_enter: u32 = 1073742250; +pub const __NR_io_uring_register: u32 = 1073742251; +pub const __NR_open_tree: u32 = 1073742252; +pub const __NR_move_mount: u32 = 1073742253; +pub const __NR_fsopen: u32 = 1073742254; +pub const __NR_fsconfig: u32 = 1073742255; +pub const __NR_fsmount: u32 = 1073742256; +pub const __NR_fspick: u32 = 1073742257; +pub const __NR_pidfd_open: u32 = 1073742258; +pub const __NR_clone3: u32 = 1073742259; +pub const __NR_close_range: u32 = 1073742260; +pub const __NR_openat2: u32 = 1073742261; +pub const __NR_pidfd_getfd: u32 = 1073742262; +pub const __NR_faccessat2: u32 = 1073742263; +pub const __NR_process_madvise: u32 = 1073742264; +pub const __NR_epoll_pwait2: u32 = 1073742265; +pub const __NR_mount_setattr: u32 = 1073742266; +pub const __NR_quotactl_fd: u32 = 1073742267; +pub const __NR_landlock_create_ruleset: u32 = 1073742268; +pub const __NR_landlock_add_rule: u32 = 1073742269; +pub const __NR_landlock_restrict_self: u32 = 1073742270; +pub const __NR_memfd_secret: u32 = 1073742271; +pub const __NR_process_mrelease: u32 = 1073742272; +pub const __NR_futex_waitv: u32 = 1073742273; +pub const __NR_set_mempolicy_home_node: u32 = 1073742274; +pub const __NR_rt_sigaction: u32 = 1073742336; +pub const __NR_rt_sigreturn: u32 = 1073742337; +pub const __NR_ioctl: u32 = 1073742338; +pub const __NR_readv: u32 = 1073742339; +pub const __NR_writev: u32 = 1073742340; +pub const __NR_recvfrom: u32 = 1073742341; +pub const __NR_sendmsg: u32 = 1073742342; +pub const __NR_recvmsg: u32 = 1073742343; +pub const __NR_execve: u32 = 1073742344; +pub const __NR_ptrace: u32 = 1073742345; +pub const __NR_rt_sigpending: u32 = 1073742346; +pub const __NR_rt_sigtimedwait: u32 = 1073742347; +pub const __NR_rt_sigqueueinfo: u32 = 1073742348; +pub const __NR_sigaltstack: u32 = 1073742349; +pub const __NR_timer_create: u32 = 1073742350; +pub const __NR_mq_notify: u32 = 1073742351; +pub const __NR_kexec_load: u32 = 1073742352; +pub const __NR_waitid: u32 = 1073742353; +pub const __NR_set_robust_list: u32 = 1073742354; +pub const __NR_get_robust_list: u32 = 1073742355; +pub const __NR_vmsplice: u32 = 1073742356; +pub const __NR_move_pages: u32 = 1073742357; +pub const __NR_preadv: u32 = 1073742358; +pub const __NR_pwritev: u32 = 1073742359; +pub const __NR_rt_tgsigqueueinfo: u32 = 1073742360; +pub const __NR_recvmmsg: u32 = 1073742361; +pub const __NR_sendmmsg: u32 = 1073742362; +pub const __NR_process_vm_readv: u32 = 1073742363; +pub const __NR_process_vm_writev: u32 = 1073742364; +pub const __NR_setsockopt: u32 = 1073742365; +pub const __NR_getsockopt: u32 = 1073742366; +pub const __NR_io_setup: u32 = 1073742367; +pub const __NR_io_submit: u32 = 1073742368; +pub const __NR_execveat: u32 = 1073742369; +pub const __NR_preadv2: u32 = 1073742370; +pub const __NR_pwritev2: u32 = 1073742371; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const P_ALL: u32 = 0; +pub const P_PID: u32 = 1; +pub const P_PGID: u32 = 2; +pub const P_PIDFD: u32 = 3; +pub const XATTR_CREATE: u32 = 1; +pub const XATTR_REPLACE: u32 = 2; +pub const XATTR_OS2_PREFIX: &[u8; 5] = b"os2.\0"; +pub const XATTR_MAC_OSX_PREFIX: &[u8; 5] = b"osx.\0"; +pub const XATTR_BTRFS_PREFIX: &[u8; 7] = b"btrfs.\0"; +pub const XATTR_HURD_PREFIX: &[u8; 5] = b"gnu.\0"; +pub const XATTR_SECURITY_PREFIX: &[u8; 10] = b"security.\0"; +pub const XATTR_SYSTEM_PREFIX: &[u8; 8] = b"system.\0"; +pub const XATTR_TRUSTED_PREFIX: &[u8; 9] = b"trusted.\0"; +pub const XATTR_USER_PREFIX: &[u8; 6] = b"user.\0"; +pub const XATTR_EVM_SUFFIX: &[u8; 4] = b"evm\0"; +pub const XATTR_NAME_EVM: &[u8; 13] = b"security.evm\0"; +pub const XATTR_IMA_SUFFIX: &[u8; 4] = b"ima\0"; +pub const XATTR_NAME_IMA: &[u8; 13] = b"security.ima\0"; +pub const XATTR_SELINUX_SUFFIX: &[u8; 8] = b"selinux\0"; +pub const XATTR_NAME_SELINUX: &[u8; 17] = b"security.selinux\0"; +pub const XATTR_SMACK_SUFFIX: &[u8; 8] = b"SMACK64\0"; +pub const XATTR_SMACK_IPIN: &[u8; 12] = b"SMACK64IPIN\0"; +pub const XATTR_SMACK_IPOUT: &[u8; 13] = b"SMACK64IPOUT\0"; +pub const XATTR_SMACK_EXEC: &[u8; 12] = b"SMACK64EXEC\0"; +pub const XATTR_SMACK_TRANSMUTE: &[u8; 17] = b"SMACK64TRANSMUTE\0"; +pub const XATTR_SMACK_MMAP: &[u8; 12] = b"SMACK64MMAP\0"; +pub const XATTR_NAME_SMACK: &[u8; 17] = b"security.SMACK64\0"; +pub const XATTR_NAME_SMACKIPIN: &[u8; 21] = b"security.SMACK64IPIN\0"; +pub const XATTR_NAME_SMACKIPOUT: &[u8; 22] = b"security.SMACK64IPOUT\0"; +pub const XATTR_NAME_SMACKEXEC: &[u8; 21] = b"security.SMACK64EXEC\0"; +pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26] = b"security.SMACK64TRANSMUTE\0"; +pub const XATTR_NAME_SMACKMMAP: &[u8; 21] = b"security.SMACK64MMAP\0"; +pub const XATTR_APPARMOR_SUFFIX: &[u8; 9] = b"apparmor\0"; +pub const XATTR_NAME_APPARMOR: &[u8; 18] = b"security.apparmor\0"; +pub const XATTR_CAPS_SUFFIX: &[u8; 11] = b"capability\0"; +pub const XATTR_NAME_CAPS: &[u8; 20] = b"security.capability\0"; +pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17] = b"posix_acl_access\0"; +pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24] = b"system.posix_acl_access\0"; +pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18] = b"posix_acl_default\0"; +pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25] = b"system.posix_acl_default\0"; +pub const MFD_CLOEXEC: u32 = 1; +pub const MFD_ALLOW_SEALING: u32 = 2; +pub const MFD_HUGETLB: u32 = 4; +pub const MFD_NOEXEC_SEAL: u32 = 8; +pub const MFD_EXEC: u32 = 16; +pub const MFD_HUGE_SHIFT: u32 = 26; +pub const MFD_HUGE_MASK: u32 = 63; +pub const MFD_HUGE_64KB: u32 = 1073741824; +pub const MFD_HUGE_512KB: u32 = 1275068416; +pub const MFD_HUGE_1MB: u32 = 1342177280; +pub const MFD_HUGE_2MB: u32 = 1409286144; +pub const MFD_HUGE_8MB: u32 = 1543503872; +pub const MFD_HUGE_16MB: u32 = 1610612736; +pub const MFD_HUGE_32MB: u32 = 1677721600; +pub const MFD_HUGE_256MB: u32 = 1879048192; +pub const MFD_HUGE_512MB: u32 = 1946157056; +pub const MFD_HUGE_1GB: u32 = 2013265920; +pub const MFD_HUGE_2GB: u32 = 2080374784; +pub const MFD_HUGE_16GB: u32 = 2281701376; +pub const TFD_TIMER_ABSTIME: u32 = 1; +pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; +pub const TFD_CLOEXEC: u32 = 524288; +pub const TFD_NONBLOCK: u32 = 2048; +pub const USERFAULTFD_IOC: u32 = 170; +pub const _UFFDIO_REGISTER: u32 = 0; +pub const _UFFDIO_UNREGISTER: u32 = 1; +pub const _UFFDIO_WAKE: u32 = 2; +pub const _UFFDIO_COPY: u32 = 3; +pub const _UFFDIO_ZEROPAGE: u32 = 4; +pub const _UFFDIO_WRITEPROTECT: u32 = 6; +pub const _UFFDIO_CONTINUE: u32 = 7; +pub const _UFFDIO_API: u32 = 63; +pub const UFFDIO: u32 = 170; +pub const UFFD_EVENT_PAGEFAULT: u32 = 18; +pub const UFFD_EVENT_FORK: u32 = 19; +pub const UFFD_EVENT_REMAP: u32 = 20; +pub const UFFD_EVENT_REMOVE: u32 = 21; +pub const UFFD_EVENT_UNMAP: u32 = 22; +pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; +pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; +pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; +pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; +pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; +pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; +pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; +pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; +pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; +pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; +pub const UFFD_FEATURE_SIGBUS: u32 = 128; +pub const UFFD_FEATURE_THREAD_ID: u32 = 256; +pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; +pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; +pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; +pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; +pub const UFFD_USER_MODE_ONLY: u32 = 1; +pub const DT_UNKNOWN: u32 = 0; +pub const DT_FIFO: u32 = 1; +pub const DT_CHR: u32 = 2; +pub const DT_DIR: u32 = 4; +pub const DT_BLK: u32 = 6; +pub const DT_REG: u32 = 8; +pub const DT_LNK: u32 = 10; +pub const DT_SOCK: u32 = 12; +pub const STAT_HAVE_NSEC: u32 = 1; +pub const F_OK: u32 = 0; +pub const R_OK: u32 = 4; +pub const W_OK: u32 = 2; +pub const X_OK: u32 = 1; +pub const UTIME_NOW: u32 = 1073741823; +pub const UTIME_OMIT: u32 = 1073741822; +pub const MNT_FORCE: u32 = 1; +pub const MNT_DETACH: u32 = 2; +pub const MNT_EXPIRE: u32 = 4; +pub const UMOUNT_NOFOLLOW: u32 = 8; +pub const UMOUNT_UNUSED: u32 = 2147483648; +pub const STDIN_FILENO: u32 = 0; +pub const STDOUT_FILENO: u32 = 1; +pub const STDERR_FILENO: u32 = 2; +pub const RWF_HIPRI: u32 = 1; +pub const RWF_DSYNC: u32 = 2; +pub const RWF_SYNC: u32 = 4; +pub const RWF_NOWAIT: u32 = 8; +pub const RWF_APPEND: u32 = 16; +pub const EFD_SEMAPHORE: u32 = 1; +pub const EFD_CLOEXEC: u32 = 524288; +pub const EFD_NONBLOCK: u32 = 2048; +pub const EPOLLIN: u32 = 1; +pub const EPOLLPRI: u32 = 2; +pub const EPOLLOUT: u32 = 4; +pub const EPOLLERR: u32 = 8; +pub const EPOLLHUP: u32 = 16; +pub const EPOLLNVAL: u32 = 32; +pub const EPOLLRDNORM: u32 = 64; +pub const EPOLLRDBAND: u32 = 128; +pub const EPOLLWRNORM: u32 = 256; +pub const EPOLLWRBAND: u32 = 512; +pub const EPOLLMSG: u32 = 1024; +pub const EPOLLRDHUP: u32 = 8192; +pub const EPOLLEXCLUSIVE: u32 = 268435456; +pub const EPOLLWAKEUP: u32 = 536870912; +pub const EPOLLONESHOT: u32 = 1073741824; +pub const EPOLLET: u32 = 2147483648; +pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; +pub const TFD_CREATE_FLAGS: u32 = 526336; +pub const TFD_SETTIME_FLAGS: u32 = 1; +pub const ARCH_SET_FS: u32 = 4098; +pub const UFFD_API: u32 = 170; +pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; +pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; +pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; +pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; +pub const UFFDIO_COPY_MODE_WP: u32 = 2; +pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; +pub const SPLICE_F_MOVE: u32 = 1; +pub const SPLICE_F_NONBLOCK: u32 = 2; +pub const SPLICE_F_MORE: u32 = 4; +pub const SPLICE_F_GIFT: u32 = 8; +pub const _NSIG: u32 = 64; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, } #[repr(u32)] #[non_exhaustive] @@ -4504,694 +2594,161 @@ pub enum membarrier_cmd_flag { MEMBARRIER_CMD_FLAG_CPU = 1, } -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct uffd_msg { -pub event: __u8, -pub reserved1: __u8, -pub reserved2: __u16, -pub reserved3: __u32, -pub arg: uffd_msg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1 { -pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, -pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, -pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, -pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, -pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { -pub flags: __u64, -pub address: __u64, -pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { -pub ptid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { -pub ufd: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { -pub from: __u64, -pub to: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { -pub start: __u64, -pub end: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { -pub reserved1: __u64, -pub reserved2: __u64, -pub reserved3: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_api { -pub api: __u64, -pub features: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_range { -pub start: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_register { -pub range: uffdio_range, -pub mode: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_copy { -pub dst: __u64, -pub src: __u64, -pub len: __u64, -pub mode: __u64, -pub copy: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_zeropage { -pub range: uffdio_range, -pub mode: __u64, -pub zeropage: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_writeprotect { -pub range: uffdio_range, -pub mode: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_continue { -pub range: uffdio_range, -pub mode: __u64, -pub mapped: __s64, -} -#[repr(C)] -pub struct io_uring_sqe { -pub opcode: __u8, -pub flags: __u8, -pub ioprio: __u16, -pub fd: __s32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, -pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, -pub len: __u32, -pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, -pub user_data: __u64, -pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, -pub personality: __u16, -pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, -pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, -} #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_1 { -pub off: __u64, -pub addr2: __u64, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { -pub cmd_op: __u32, -pub __pad1: __u32, +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_2 { -pub addr: __u64, -pub splice_off_in: __u64, +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_3 { -pub rw_flags: __kernel_rwf_t, -pub fsync_flags: __u32, -pub poll_events: __u16, -pub poll32_events: __u32, -pub sync_range_flags: __u32, -pub msg_flags: __u32, -pub timeout_flags: __u32, -pub accept_flags: __u32, -pub cancel_flags: __u32, -pub open_flags: __u32, -pub statx_flags: __u32, -pub fadvise_advice: __u32, -pub splice_flags: __u32, -pub rename_flags: __u32, -pub unlink_flags: __u32, -pub hardlink_flags: __u32, -pub xattr_flags: __u32, -pub msg_ring_flags: __u32, -pub uring_cmd_flags: __u32, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_4 { -pub buf_index: __u16, -pub buf_group: __u16, +pub union sigval { +pub sival_int: crate::ctypes::c_int, +pub sival_ptr: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_5 { -pub splice_fd_in: __s32, -pub file_index: __u32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { -pub addr_len: __u16, -pub __pad3: [__u16; 1usize], -} -#[repr(C)] -pub struct io_uring_sqe__bindgen_ty_6 { -pub __bindgen_anon_1: __BindgenUnionField, -pub cmd: __BindgenUnionField<[__u8; 0usize]>, -pub bindgen_union_field: [u64; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { -pub addr3: __u64, -pub __pad2: [__u64; 1usize], -} -pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT; -pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT; -pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT; -pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT; -pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT; -pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT; -pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -IOSQE_FIXED_FILE_BIT = 0, -IOSQE_IO_DRAIN_BIT = 1, -IOSQE_IO_LINK_BIT = 2, -IOSQE_IO_HARDLINK_BIT = 3, -IOSQE_ASYNC_BIT = 4, -IOSQE_BUFFER_SELECT_BIT = 5, -IOSQE_CQE_SKIP_SUCCESS_BIT = 6, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum io_uring_op { -IORING_OP_NOP = 0, -IORING_OP_READV = 1, -IORING_OP_WRITEV = 2, -IORING_OP_FSYNC = 3, -IORING_OP_READ_FIXED = 4, -IORING_OP_WRITE_FIXED = 5, -IORING_OP_POLL_ADD = 6, -IORING_OP_POLL_REMOVE = 7, -IORING_OP_SYNC_FILE_RANGE = 8, -IORING_OP_SENDMSG = 9, -IORING_OP_RECVMSG = 10, -IORING_OP_TIMEOUT = 11, -IORING_OP_TIMEOUT_REMOVE = 12, -IORING_OP_ACCEPT = 13, -IORING_OP_ASYNC_CANCEL = 14, -IORING_OP_LINK_TIMEOUT = 15, -IORING_OP_CONNECT = 16, -IORING_OP_FALLOCATE = 17, -IORING_OP_OPENAT = 18, -IORING_OP_CLOSE = 19, -IORING_OP_FILES_UPDATE = 20, -IORING_OP_STATX = 21, -IORING_OP_READ = 22, -IORING_OP_WRITE = 23, -IORING_OP_FADVISE = 24, -IORING_OP_MADVISE = 25, -IORING_OP_SEND = 26, -IORING_OP_RECV = 27, -IORING_OP_OPENAT2 = 28, -IORING_OP_EPOLL_CTL = 29, -IORING_OP_SPLICE = 30, -IORING_OP_PROVIDE_BUFFERS = 31, -IORING_OP_REMOVE_BUFFERS = 32, -IORING_OP_TEE = 33, -IORING_OP_SHUTDOWN = 34, -IORING_OP_RENAMEAT = 35, -IORING_OP_UNLINKAT = 36, -IORING_OP_MKDIRAT = 37, -IORING_OP_SYMLINKAT = 38, -IORING_OP_LINKAT = 39, -IORING_OP_MSG_RING = 40, -IORING_OP_FSETXATTR = 41, -IORING_OP_SETXATTR = 42, -IORING_OP_FGETXATTR = 43, -IORING_OP_GETXATTR = 44, -IORING_OP_SOCKET = 45, -IORING_OP_URING_CMD = 46, -IORING_OP_SEND_ZC = 47, -IORING_OP_SENDMSG_ZC = 48, -IORING_OP_LAST = 49, -} -pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA; -pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_8 { -IORING_MSG_DATA = 0, -IORING_MSG_SEND_FD = 1, -} -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_cqe { -pub user_data: __u64, -pub res: __s32, -pub flags: __u32, -pub big_cqe: __IncompleteArrayField<__u64>, -} -pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_9 { -IORING_CQE_BUFFER_SHIFT = 16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_sqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub flags: __u32, -pub dropped: __u32, -pub array: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_cqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub overflow: __u32, -pub cqes: __u32, -pub flags: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_params { -pub sq_entries: __u32, -pub cq_entries: __u32, -pub flags: __u32, -pub sq_thread_cpu: __u32, -pub sq_thread_idle: __u32, -pub features: __u32, -pub wq_fd: __u32, -pub resv: [__u32; 3usize], -pub sq_off: io_sqring_offsets, -pub cq_off: io_cqring_offsets, -} -pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS; -pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS; -pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES; -pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES; -pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD; -pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD; -pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE; -pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC; -pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE; -pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY; -pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY; -pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS; -pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS; -pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2; -pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2; -pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2; -pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE; -pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF; -pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF; -pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS; -pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS; -pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS; -pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING; -pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING; -pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL; -pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE; -pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST; -pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_USE_REGISTERED_RING; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_10 { -IORING_REGISTER_BUFFERS = 0, -IORING_UNREGISTER_BUFFERS = 1, -IORING_REGISTER_FILES = 2, -IORING_UNREGISTER_FILES = 3, -IORING_REGISTER_EVENTFD = 4, -IORING_UNREGISTER_EVENTFD = 5, -IORING_REGISTER_FILES_UPDATE = 6, -IORING_REGISTER_EVENTFD_ASYNC = 7, -IORING_REGISTER_PROBE = 8, -IORING_REGISTER_PERSONALITY = 9, -IORING_UNREGISTER_PERSONALITY = 10, -IORING_REGISTER_RESTRICTIONS = 11, -IORING_REGISTER_ENABLE_RINGS = 12, -IORING_REGISTER_FILES2 = 13, -IORING_REGISTER_FILES_UPDATE2 = 14, -IORING_REGISTER_BUFFERS2 = 15, -IORING_REGISTER_BUFFERS_UPDATE = 16, -IORING_REGISTER_IOWQ_AFF = 17, -IORING_UNREGISTER_IOWQ_AFF = 18, -IORING_REGISTER_IOWQ_MAX_WORKERS = 19, -IORING_REGISTER_RING_FDS = 20, -IORING_UNREGISTER_RING_FDS = 21, -IORING_REGISTER_PBUF_RING = 22, -IORING_UNREGISTER_PBUF_RING = 23, -IORING_REGISTER_SYNC_CANCEL = 24, -IORING_REGISTER_FILE_ALLOC_RANGE = 25, -IORING_REGISTER_LAST = 26, -IORING_REGISTER_USE_REGISTERED_RING = 2147483648, -} -pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND; -pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_11 { -IO_WQ_BOUND = 0, -IO_WQ_UNBOUND = 1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_files_update { -pub offset: __u32, -pub resv: __u32, -pub fds: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_register { -pub nr: __u32, -pub flags: __u32, -pub resv2: __u64, -pub data: __u64, -pub tags: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update2 { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -pub tags: __u64, -pub nr: __u32, -pub resv2: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_slot { -pub tag: __u64, -pub resv: [__u64; 3usize], +pub union __sifields { +pub _kill: __sifields__bindgen_ty_1, +pub _timer: __sifields__bindgen_ty_2, +pub _rt: __sifields__bindgen_ty_3, +pub _sigchld: __sifields__bindgen_ty_4, +pub _sigfault: __sifields__bindgen_ty_5, +pub _sigpoll: __sifields__bindgen_ty_6, +pub _sigsys: __sifields__bindgen_ty_7, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_register { -pub nr_slots: __u32, -pub resv: __u32, -pub resv2: __u64, -pub data: __u64, -pub resv3: __u64, +#[derive(Copy, Clone)] +pub union __sifields__bindgen_ty_5__bindgen_ty_1 { +pub _trapno: crate::ctypes::c_int, +pub _addr_lsb: crate::ctypes::c_short, +pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, +pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, +pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_probe_op { -pub op: __u8, -pub resv: __u8, -pub flags: __u16, -pub resv2: __u32, +#[derive(Copy, Clone)] +pub union siginfo__bindgen_ty_1 { +pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, +pub _si_pad: [crate::ctypes::c_int; 32usize], } #[repr(C)] -#[derive(Debug)] -pub struct io_uring_probe { -pub last_op: __u8, -pub ops_len: __u8, -pub resv: __u16, -pub resv2: [__u32; 3usize], -pub ops: __IncompleteArrayField, +#[derive(Copy, Clone)] +pub union sigevent__bindgen_ty_1 { +pub _pad: [crate::ctypes::c_int; 13usize], +pub _tid: crate::ctypes::c_int, +pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] -pub struct io_uring_restriction { -pub opcode: __u16, -pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, -pub resv: __u8, -pub resv2: [__u32; 3usize], +pub union uffd_msg__bindgen_ty_1 { +pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, +pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, +pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, +pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, +pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_restriction__bindgen_ty_1 { -pub register_op: __u8, -pub sqe_op: __u8, -pub sqe_flags: __u8, +pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { +pub ptid: __u32, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf { -pub addr: __u64, -pub len: __u32, -pub bid: __u16, -pub resv: __u16, +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } } -#[repr(C)] -pub struct io_uring_buf_ring { -pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, } -#[repr(C)] -pub struct io_uring_buf_ring__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 2usize], +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { -pub resv1: __u64, -pub resv2: __u32, -pub resv3: __u16, -pub tail: __u16, +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; } -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { -pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, -pub bufs: __IncompleteArrayField, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_reg { -pub ring_addr: __u64, -pub ring_entries: __u32, -pub bgid: __u16, -pub pad: __u16, -pub resv: [__u64; 3usize], +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; } -pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP; -pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP; -pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; -pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; -pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_12 { -IORING_RESTRICTION_REGISTER_OP = 0, -IORING_RESTRICTION_SQE_OP = 1, -IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, -IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, -IORING_RESTRICTION_LAST = 4, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_getevents_arg { -pub sigmask: __u64, -pub sigmask_sz: __u32, -pub pad: __u32, -pub ts: __u64, +val } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sync_cancel_reg { -pub addr: __u64, -pub fd: __s32, -pub flags: __u32, -pub timeout: __kernel_timespec, -pub pad: [__u64; 4usize], +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_file_index_range { -pub off: __u32, -pub len: __u32, -pub resv: __u64, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_recvmsg_out { -pub namelen: __u32, -pub controllen: __u32, -pub payloadlen: __u32, -pub flags: __u32, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr { -pub __storage: __kernel_sockaddr_storage, +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct linger { -pub l_onoff: crate::ctypes::c_int, -pub l_linger: crate::ctypes::c_int, +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T } -#[repr(C)] -#[derive(Debug)] -pub struct linux_dirent64 { -pub d_ino: crate::ctypes::c_ulonglong, -pub d_off: crate::ctypes::c_longlong, -pub d_reclen: __u16, -pub d_type: __u8, -pub d_name: __IncompleteArrayField, +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T } -pub type socklen_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat { -pub st_dev: __kernel_ulong_t, -pub st_ino: __kernel_ulong_t, -pub st_nlink: __kernel_ulong_t, -pub st_mode: crate::ctypes::c_uint, -pub st_uid: crate::ctypes::c_uint, -pub st_gid: crate::ctypes::c_uint, -pub __pad0: crate::ctypes::c_uint, -pub st_rdev: __kernel_ulong_t, -pub st_size: __kernel_long_t, -pub st_blksize: __kernel_long_t, -pub st_blocks: __kernel_long_t, -pub st_atime: __kernel_ulong_t, -pub st_atime_nsec: __kernel_ulong_t, -pub st_mtime: __kernel_ulong_t, -pub st_mtime_nsec: __kernel_ulong_t, -pub st_ctime: __kernel_ulong_t, -pub st_ctime_nsec: __kernel_ulong_t, -pub __unused: [__kernel_long_t; 3usize], +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __old_kernel_stat { -pub st_dev: crate::ctypes::c_ushort, -pub st_ino: crate::ctypes::c_ushort, -pub st_mode: crate::ctypes::c_ushort, -pub st_nlink: crate::ctypes::c_ushort, -pub st_uid: crate::ctypes::c_ushort, -pub st_gid: crate::ctypes::c_ushort, -pub st_rdev: crate::ctypes::c_ushort, -pub st_size: crate::ctypes::c_uint, -pub st_atime: crate::ctypes::c_uint, -pub st_mtime: crate::ctypes::c_uint, -pub st_ctime: crate::ctypes::c_uint, +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u32, -pub f_bfree: __u32, -pub f_bavail: __u32, -pub f_files: __u32, -pub f_ffree: __u32, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") } -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct compat_statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], } -pub type __fsword_t = __u32; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_desc { -pub entry_number: crate::ctypes::c_uint, -pub base_addr: crate::ctypes::c_uint, -pub limit: crate::ctypes::c_uint, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub __bindgen_padding_0: [u8; 3usize], +impl membarrier_cmd { +pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; } impl user_desc { #[inline] @@ -5305,47 +2862,3 @@ __bindgen_bitfield_unit } } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr { -pub msg_name: *mut crate::ctypes::c_void, -pub msg_namelen: crate::ctypes::c_int, -pub msg_iov: *mut iovec, -pub msg_iovlen: size_t, -pub msg_control: *mut crate::ctypes::c_void, -pub msg_controllen: size_t, -pub msg_flags: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsghdr { -pub cmsg_len: size_t, -pub cmsg_level: crate::ctypes::c_int, -pub cmsg_type: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ucred { -pub pid: __u32, -pub uid: __u32, -pub gid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mmsghdr { -pub msg_hdr: msghdr, -pub msg_len: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigset_t { -pub sig: [crate::ctypes::c_ulong; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigaction { -pub sa_handler_kernel: __kernel_sighandler_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_restorer: __sigrestore_t, -pub sa_mask: kernel_sigset_t, -} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x32/if_ether.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x32/if_ether.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x32/if_ether.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x32/if_ether.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,167 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_longlong; +pub type __kernel_ulong_t = crate::ctypes::c_ulonglong; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ethhdr { +pub h_dest: [crate::ctypes::c_uchar; 6usize], +pub h_source: [crate::ctypes::c_uchar; 6usize], +pub h_proto: __be16, +} +pub const ETH_ALEN: u32 = 6; +pub const ETH_TLEN: u32 = 2; +pub const ETH_HLEN: u32 = 14; +pub const ETH_ZLEN: u32 = 60; +pub const ETH_DATA_LEN: u32 = 1500; +pub const ETH_FRAME_LEN: u32 = 1514; +pub const ETH_FCS_LEN: u32 = 4; +pub const ETH_MIN_MTU: u32 = 68; +pub const ETH_MAX_MTU: u32 = 65535; +pub const ETH_P_LOOP: u32 = 96; +pub const ETH_P_PUP: u32 = 512; +pub const ETH_P_PUPAT: u32 = 513; +pub const ETH_P_TSN: u32 = 8944; +pub const ETH_P_ERSPAN2: u32 = 8939; +pub const ETH_P_IP: u32 = 2048; +pub const ETH_P_X25: u32 = 2053; +pub const ETH_P_ARP: u32 = 2054; +pub const ETH_P_BPQ: u32 = 2303; +pub const ETH_P_IEEEPUP: u32 = 2560; +pub const ETH_P_IEEEPUPAT: u32 = 2561; +pub const ETH_P_BATMAN: u32 = 17157; +pub const ETH_P_DEC: u32 = 24576; +pub const ETH_P_DNA_DL: u32 = 24577; +pub const ETH_P_DNA_RC: u32 = 24578; +pub const ETH_P_DNA_RT: u32 = 24579; +pub const ETH_P_LAT: u32 = 24580; +pub const ETH_P_DIAG: u32 = 24581; +pub const ETH_P_CUST: u32 = 24582; +pub const ETH_P_SCA: u32 = 24583; +pub const ETH_P_TEB: u32 = 25944; +pub const ETH_P_RARP: u32 = 32821; +pub const ETH_P_ATALK: u32 = 32923; +pub const ETH_P_AARP: u32 = 33011; +pub const ETH_P_8021Q: u32 = 33024; +pub const ETH_P_ERSPAN: u32 = 35006; +pub const ETH_P_IPX: u32 = 33079; +pub const ETH_P_IPV6: u32 = 34525; +pub const ETH_P_PAUSE: u32 = 34824; +pub const ETH_P_SLOW: u32 = 34825; +pub const ETH_P_WCCP: u32 = 34878; +pub const ETH_P_MPLS_UC: u32 = 34887; +pub const ETH_P_MPLS_MC: u32 = 34888; +pub const ETH_P_ATMMPOA: u32 = 34892; +pub const ETH_P_PPP_DISC: u32 = 34915; +pub const ETH_P_PPP_SES: u32 = 34916; +pub const ETH_P_LINK_CTL: u32 = 34924; +pub const ETH_P_ATMFATE: u32 = 34948; +pub const ETH_P_PAE: u32 = 34958; +pub const ETH_P_PROFINET: u32 = 34962; +pub const ETH_P_REALTEK: u32 = 34969; +pub const ETH_P_AOE: u32 = 34978; +pub const ETH_P_ETHERCAT: u32 = 34980; +pub const ETH_P_8021AD: u32 = 34984; +pub const ETH_P_802_EX1: u32 = 34997; +pub const ETH_P_PREAUTH: u32 = 35015; +pub const ETH_P_TIPC: u32 = 35018; +pub const ETH_P_LLDP: u32 = 35020; +pub const ETH_P_MRP: u32 = 35043; +pub const ETH_P_MACSEC: u32 = 35045; +pub const ETH_P_8021AH: u32 = 35047; +pub const ETH_P_MVRP: u32 = 35061; +pub const ETH_P_1588: u32 = 35063; +pub const ETH_P_NCSI: u32 = 35064; +pub const ETH_P_PRP: u32 = 35067; +pub const ETH_P_CFM: u32 = 35074; +pub const ETH_P_FCOE: u32 = 35078; +pub const ETH_P_IBOE: u32 = 35093; +pub const ETH_P_TDLS: u32 = 35085; +pub const ETH_P_FIP: u32 = 35092; +pub const ETH_P_80221: u32 = 35095; +pub const ETH_P_HSR: u32 = 35119; +pub const ETH_P_NSH: u32 = 35151; +pub const ETH_P_LOOPBACK: u32 = 36864; +pub const ETH_P_QINQ1: u32 = 37120; +pub const ETH_P_QINQ2: u32 = 37376; +pub const ETH_P_QINQ3: u32 = 37632; +pub const ETH_P_EDSA: u32 = 56026; +pub const ETH_P_DSA_8021Q: u32 = 56027; +pub const ETH_P_DSA_A5PSW: u32 = 57345; +pub const ETH_P_IFE: u32 = 60734; +pub const ETH_P_AF_IUCV: u32 = 64507; +pub const ETH_P_802_3_MIN: u32 = 1536; +pub const ETH_P_802_3: u32 = 1; +pub const ETH_P_AX25: u32 = 2; +pub const ETH_P_ALL: u32 = 3; +pub const ETH_P_802_2: u32 = 4; +pub const ETH_P_SNAP: u32 = 5; +pub const ETH_P_DDCMP: u32 = 6; +pub const ETH_P_WAN_PPP: u32 = 7; +pub const ETH_P_PPP_MP: u32 = 8; +pub const ETH_P_LOCALTALK: u32 = 9; +pub const ETH_P_CAN: u32 = 12; +pub const ETH_P_CANFD: u32 = 13; +pub const ETH_P_CANXL: u32 = 14; +pub const ETH_P_PPPTALK: u32 = 16; +pub const ETH_P_TR_802_2: u32 = 17; +pub const ETH_P_MOBITEX: u32 = 21; +pub const ETH_P_CONTROL: u32 = 22; +pub const ETH_P_IRDA: u32 = 23; +pub const ETH_P_ECONET: u32 = 24; +pub const ETH_P_HDLC: u32 = 25; +pub const ETH_P_ARCNET: u32 = 26; +pub const ETH_P_DSA: u32 = 27; +pub const ETH_P_TRAILER: u32 = 28; +pub const ETH_P_PHONET: u32 = 245; +pub const ETH_P_IEEE802154: u32 = 246; +pub const ETH_P_CAIF: u32 = 247; +pub const ETH_P_XDSA: u32 = 248; +pub const ETH_P_MAP: u32 = 249; +pub const ETH_P_MCTP: u32 = 250; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x32/ioctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x32/ioctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x32/ioctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x32/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const FIONREAD: u32 = 21531; pub const FIONBIO: u32 = 21537; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x32/io_uring.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x32/io_uring.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x32/io_uring.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x32/io_uring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1083 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_longlong; +pub type __kernel_ulong_t = crate::ctypes::c_ulonglong; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_rwf_t = crate::ctypes::c_int; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +pub struct io_uring_sqe { +pub opcode: __u8, +pub flags: __u8, +pub ioprio: __u16, +pub fd: __s32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, +pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, +pub len: __u32, +pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, +pub user_data: __u64, +pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, +pub personality: __u16, +pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, +pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { +pub cmd_op: __u32, +pub __pad1: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { +pub addr_len: __u16, +pub __pad3: [__u16; 1usize], +} +#[repr(C)] +pub struct io_uring_sqe__bindgen_ty_6 { +pub __bindgen_anon_1: __BindgenUnionField, +pub cmd: __BindgenUnionField<[__u8; 0usize]>, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { +pub addr3: __u64, +pub __pad2: [__u64; 1usize], +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_cqe { +pub user_data: __u64, +pub res: __s32, +pub flags: __u32, +pub big_cqe: __IncompleteArrayField<__u64>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_sqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub flags: __u32, +pub dropped: __u32, +pub array: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_cqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub overflow: __u32, +pub cqes: __u32, +pub flags: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_params { +pub sq_entries: __u32, +pub cq_entries: __u32, +pub flags: __u32, +pub sq_thread_cpu: __u32, +pub sq_thread_idle: __u32, +pub features: __u32, +pub wq_fd: __u32, +pub resv: [__u32; 3usize], +pub sq_off: io_sqring_offsets, +pub cq_off: io_cqring_offsets, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_files_update { +pub offset: __u32, +pub resv: __u32, +pub fds: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_register { +pub nr: __u32, +pub flags: __u32, +pub resv2: __u64, +pub data: __u64, +pub tags: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update2 { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +pub tags: __u64, +pub nr: __u32, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_slot { +pub tag: __u64, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_register { +pub nr_slots: __u32, +pub resv: __u32, +pub resv2: __u64, +pub data: __u64, +pub resv3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_probe_op { +pub op: __u8, +pub resv: __u8, +pub flags: __u16, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_probe { +pub last_op: __u8, +pub ops_len: __u8, +pub resv: __u16, +pub resv2: [__u32; 3usize], +pub ops: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_restriction { +pub opcode: __u16, +pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, +pub resv: __u8, +pub resv2: [__u32; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf { +pub addr: __u64, +pub len: __u32, +pub bid: __u16, +pub resv: __u16, +} +#[repr(C)] +pub struct io_uring_buf_ring { +pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +} +#[repr(C)] +pub struct io_uring_buf_ring__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { +pub resv1: __u64, +pub resv2: __u32, +pub resv3: __u16, +pub tail: __u16, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { +pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, +pub bufs: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_reg { +pub ring_addr: __u64, +pub ring_entries: __u32, +pub bgid: __u16, +pub pad: __u16, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_getevents_arg { +pub sigmask: __u64, +pub sigmask_sz: __u32, +pub pad: __u32, +pub ts: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sync_cancel_reg { +pub addr: __u64, +pub fd: __s32, +pub flags: __u32, +pub timeout: __kernel_timespec, +pub pad: [__u64; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_file_index_range { +pub off: __u32, +pub len: __u32, +pub resv: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_recvmsg_out { +pub namelen: __u32, +pub controllen: __u32, +pub payloadlen: __u32, +pub flags: __u32, +} +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 14; +pub const _IOC_DIRBITS: u32 = 2; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 3; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 30; +pub const _IOC_NONE: u32 = 0; +pub const _IOC_WRITE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const IOC_IN: u32 = 1073741824; +pub const IOC_OUT: u32 = 2147483648; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const IORING_FILE_INDEX_ALLOC: i32 = -1; +pub const IORING_SETUP_IOPOLL: u32 = 1; +pub const IORING_SETUP_SQPOLL: u32 = 2; +pub const IORING_SETUP_SQ_AFF: u32 = 4; +pub const IORING_SETUP_CQSIZE: u32 = 8; +pub const IORING_SETUP_CLAMP: u32 = 16; +pub const IORING_SETUP_ATTACH_WQ: u32 = 32; +pub const IORING_SETUP_R_DISABLED: u32 = 64; +pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; +pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; +pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; +pub const IORING_SETUP_SQE128: u32 = 1024; +pub const IORING_SETUP_CQE32: u32 = 2048; +pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; +pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; +pub const IORING_URING_CMD_FIXED: u32 = 1; +pub const IORING_FSYNC_DATASYNC: u32 = 1; +pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; +pub const IORING_POLL_ADD_LEVEL: u32 = 8; +pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; +pub const IORING_ASYNC_CANCEL_FD: u32 = 2; +pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; +pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; +pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; +pub const IORING_RECV_MULTISHOT: u32 = 2; +pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; +pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; +pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; +pub const IORING_ACCEPT_MULTISHOT: u32 = 1; +pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; +pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; +pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; +pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; +pub const IORING_CQE_F_NOTIF: u32 = 8; +pub const IORING_OFF_SQ_RING: u32 = 0; +pub const IORING_OFF_CQ_RING: u32 = 134217728; +pub const IORING_OFF_SQES: u32 = 268435456; +pub const IORING_SQ_NEED_WAKEUP: u32 = 1; +pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; +pub const IORING_SQ_TASKRUN: u32 = 4; +pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; +pub const IORING_ENTER_GETEVENTS: u32 = 1; +pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; +pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; +pub const IORING_ENTER_REGISTERED_RING: u32 = 16; +pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; +pub const IORING_FEAT_NODROP: u32 = 2; +pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; +pub const IORING_FEAT_RW_CUR_POS: u32 = 8; +pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; +pub const IORING_FEAT_FAST_POLL: u32 = 32; +pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_FEAT_CQE_SKIP: u32 = 2048; +pub const IORING_FEAT_LINKED_FILE: u32 = 4096; +pub const IORING_FEAT_REG_REG_RING: u32 = 8192; +pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; +pub const IO_URING_OP_SUPPORTED: u32 = 1; +pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_FIXED_FILE_BIT; +pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_DRAIN_BIT; +pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_LINK_BIT; +pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_HARDLINK_BIT; +pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_ASYNC_BIT; +pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_BUFFER_SELECT_BIT; +pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_CQE_SKIP_SUCCESS_BIT; +pub const IORING_MSG_DATA: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_DATA; +pub const IORING_MSG_SEND_FD: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_SEND_FD; +pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = _bindgen_ty_3::IORING_CQE_BUFFER_SHIFT; +pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS; +pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_BUFFERS; +pub const IORING_REGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES; +pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_FILES; +pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD; +pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_EVENTFD; +pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE; +pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD_ASYNC; +pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PROBE; +pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PERSONALITY; +pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PERSONALITY; +pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RESTRICTIONS; +pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_ENABLE_RINGS; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES2; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE2; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS2; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS_UPDATE; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_AFF; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_IOWQ_AFF; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_MAX_WORKERS; +pub const IORING_REGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RING_FDS; +pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_RING_FDS; +pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PBUF_RING; +pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PBUF_RING; +pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_SYNC_CANCEL; +pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILE_ALLOC_RANGE; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_LAST; +pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_USE_REGISTERED_RING; +pub const IO_WQ_BOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_BOUND; +pub const IO_WQ_UNBOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_UNBOUND; +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_REGISTER_OP; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_OP; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_LAST; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IOSQE_FIXED_FILE_BIT = 0, +IOSQE_IO_DRAIN_BIT = 1, +IOSQE_IO_LINK_BIT = 2, +IOSQE_IO_HARDLINK_BIT = 3, +IOSQE_ASYNC_BIT = 4, +IOSQE_BUFFER_SELECT_BIT = 5, +IOSQE_CQE_SKIP_SUCCESS_BIT = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum io_uring_op { +IORING_OP_NOP = 0, +IORING_OP_READV = 1, +IORING_OP_WRITEV = 2, +IORING_OP_FSYNC = 3, +IORING_OP_READ_FIXED = 4, +IORING_OP_WRITE_FIXED = 5, +IORING_OP_POLL_ADD = 6, +IORING_OP_POLL_REMOVE = 7, +IORING_OP_SYNC_FILE_RANGE = 8, +IORING_OP_SENDMSG = 9, +IORING_OP_RECVMSG = 10, +IORING_OP_TIMEOUT = 11, +IORING_OP_TIMEOUT_REMOVE = 12, +IORING_OP_ACCEPT = 13, +IORING_OP_ASYNC_CANCEL = 14, +IORING_OP_LINK_TIMEOUT = 15, +IORING_OP_CONNECT = 16, +IORING_OP_FALLOCATE = 17, +IORING_OP_OPENAT = 18, +IORING_OP_CLOSE = 19, +IORING_OP_FILES_UPDATE = 20, +IORING_OP_STATX = 21, +IORING_OP_READ = 22, +IORING_OP_WRITE = 23, +IORING_OP_FADVISE = 24, +IORING_OP_MADVISE = 25, +IORING_OP_SEND = 26, +IORING_OP_RECV = 27, +IORING_OP_OPENAT2 = 28, +IORING_OP_EPOLL_CTL = 29, +IORING_OP_SPLICE = 30, +IORING_OP_PROVIDE_BUFFERS = 31, +IORING_OP_REMOVE_BUFFERS = 32, +IORING_OP_TEE = 33, +IORING_OP_SHUTDOWN = 34, +IORING_OP_RENAMEAT = 35, +IORING_OP_UNLINKAT = 36, +IORING_OP_MKDIRAT = 37, +IORING_OP_SYMLINKAT = 38, +IORING_OP_LINKAT = 39, +IORING_OP_MSG_RING = 40, +IORING_OP_FSETXATTR = 41, +IORING_OP_SETXATTR = 42, +IORING_OP_FGETXATTR = 43, +IORING_OP_GETXATTR = 44, +IORING_OP_SOCKET = 45, +IORING_OP_URING_CMD = 46, +IORING_OP_SEND_ZC = 47, +IORING_OP_SENDMSG_ZC = 48, +IORING_OP_LAST = 49, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IORING_MSG_DATA = 0, +IORING_MSG_SEND_FD = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IORING_CQE_BUFFER_SHIFT = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IORING_REGISTER_BUFFERS = 0, +IORING_UNREGISTER_BUFFERS = 1, +IORING_REGISTER_FILES = 2, +IORING_UNREGISTER_FILES = 3, +IORING_REGISTER_EVENTFD = 4, +IORING_UNREGISTER_EVENTFD = 5, +IORING_REGISTER_FILES_UPDATE = 6, +IORING_REGISTER_EVENTFD_ASYNC = 7, +IORING_REGISTER_PROBE = 8, +IORING_REGISTER_PERSONALITY = 9, +IORING_UNREGISTER_PERSONALITY = 10, +IORING_REGISTER_RESTRICTIONS = 11, +IORING_REGISTER_ENABLE_RINGS = 12, +IORING_REGISTER_FILES2 = 13, +IORING_REGISTER_FILES_UPDATE2 = 14, +IORING_REGISTER_BUFFERS2 = 15, +IORING_REGISTER_BUFFERS_UPDATE = 16, +IORING_REGISTER_IOWQ_AFF = 17, +IORING_UNREGISTER_IOWQ_AFF = 18, +IORING_REGISTER_IOWQ_MAX_WORKERS = 19, +IORING_REGISTER_RING_FDS = 20, +IORING_UNREGISTER_RING_FDS = 21, +IORING_REGISTER_PBUF_RING = 22, +IORING_UNREGISTER_PBUF_RING = 23, +IORING_REGISTER_SYNC_CANCEL = 24, +IORING_REGISTER_FILE_ALLOC_RANGE = 25, +IORING_REGISTER_LAST = 26, +IORING_REGISTER_USE_REGISTERED_RING = 2147483648, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IO_WQ_BOUND = 0, +IO_WQ_UNBOUND = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IORING_RESTRICTION_REGISTER_OP = 0, +IORING_RESTRICTION_SQE_OP = 1, +IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, +IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, +IORING_RESTRICTION_LAST = 4, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_1 { +pub off: __u64, +pub addr2: __u64, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_2 { +pub addr: __u64, +pub splice_off_in: __u64, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_3 { +pub rw_flags: __kernel_rwf_t, +pub fsync_flags: __u32, +pub poll_events: __u16, +pub poll32_events: __u32, +pub sync_range_flags: __u32, +pub msg_flags: __u32, +pub timeout_flags: __u32, +pub accept_flags: __u32, +pub cancel_flags: __u32, +pub open_flags: __u32, +pub statx_flags: __u32, +pub fadvise_advice: __u32, +pub splice_flags: __u32, +pub rename_flags: __u32, +pub unlink_flags: __u32, +pub hardlink_flags: __u32, +pub xattr_flags: __u32, +pub msg_ring_flags: __u32, +pub uring_cmd_flags: __u32, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_4 { +pub buf_index: __u16, +pub buf_group: __u16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { +pub splice_fd_in: __s32, +pub file_index: __u32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_restriction__bindgen_ty_1 { +pub register_op: __u8, +pub sqe_op: __u8, +pub sqe_flags: __u8, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x32/netlink.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x32/netlink.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x32/netlink.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x32/netlink.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,357 +1,1492 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_longlong; +pub type __kernel_ulong_t = crate::ctypes::c_ulonglong; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_nl { +pub nl_family: __kernel_sa_family_t, +pub nl_pad: crate::ctypes::c_ushort, +pub nl_pid: __u32, +pub nl_groups: __u32, } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsghdr { +pub nlmsg_len: __u32, +pub nlmsg_type: __u16, +pub nlmsg_flags: __u16, +pub nlmsg_seq: __u32, +pub nlmsg_pid: __u32, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsgerr { +pub error: crate::ctypes::c_int, +pub msg: nlmsghdr, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_pktinfo { +pub group: __u32, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_req { +pub nm_block_size: crate::ctypes::c_uint, +pub nm_block_nr: crate::ctypes::c_uint, +pub nm_frame_size: crate::ctypes::c_uint, +pub nm_frame_nr: crate::ctypes::c_uint, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_hdr { +pub nm_status: crate::ctypes::c_uint, +pub nm_len: crate::ctypes::c_uint, +pub nm_group: __u32, +pub nm_pid: __u32, +pub nm_uid: __u32, +pub nm_gid: __u32, } -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const __BITS_PER_LONG: u32 = 32; -pub const __FD_SETSIZE: u32 = 1024; -pub const NETLINK_ROUTE: u32 = 0; -pub const NETLINK_UNUSED: u32 = 1; -pub const NETLINK_USERSOCK: u32 = 2; -pub const NETLINK_FIREWALL: u32 = 3; -pub const NETLINK_SOCK_DIAG: u32 = 4; -pub const NETLINK_NFLOG: u32 = 5; -pub const NETLINK_XFRM: u32 = 6; -pub const NETLINK_SELINUX: u32 = 7; -pub const NETLINK_ISCSI: u32 = 8; -pub const NETLINK_AUDIT: u32 = 9; -pub const NETLINK_FIB_LOOKUP: u32 = 10; -pub const NETLINK_CONNECTOR: u32 = 11; -pub const NETLINK_NETFILTER: u32 = 12; -pub const NETLINK_IP6_FW: u32 = 13; -pub const NETLINK_DNRTMSG: u32 = 14; -pub const NETLINK_KOBJECT_UEVENT: u32 = 15; -pub const NETLINK_GENERIC: u32 = 16; -pub const NETLINK_SCSITRANSPORT: u32 = 18; -pub const NETLINK_ECRYPTFS: u32 = 19; -pub const NETLINK_RDMA: u32 = 20; -pub const NETLINK_CRYPTO: u32 = 21; -pub const NETLINK_SMC: u32 = 22; -pub const NETLINK_INET_DIAG: u32 = 4; -pub const MAX_LINKS: u32 = 32; -pub const NLM_F_REQUEST: u32 = 1; -pub const NLM_F_MULTI: u32 = 2; -pub const NLM_F_ACK: u32 = 4; -pub const NLM_F_ECHO: u32 = 8; -pub const NLM_F_DUMP_INTR: u32 = 16; -pub const NLM_F_DUMP_FILTERED: u32 = 32; -pub const NLM_F_ROOT: u32 = 256; -pub const NLM_F_MATCH: u32 = 512; -pub const NLM_F_ATOMIC: u32 = 1024; -pub const NLM_F_DUMP: u32 = 768; -pub const NLM_F_REPLACE: u32 = 256; -pub const NLM_F_EXCL: u32 = 512; -pub const NLM_F_CREATE: u32 = 1024; -pub const NLM_F_APPEND: u32 = 2048; -pub const NLM_F_NONREC: u32 = 256; -pub const NLM_F_BULK: u32 = 512; -pub const NLM_F_CAPPED: u32 = 256; -pub const NLM_F_ACK_TLVS: u32 = 512; -pub const NLMSG_ALIGNTO: u32 = 4; -pub const NLMSG_NOOP: u32 = 1; -pub const NLMSG_ERROR: u32 = 2; -pub const NLMSG_DONE: u32 = 3; -pub const NLMSG_OVERRUN: u32 = 4; -pub const NLMSG_MIN_TYPE: u32 = 16; -pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; -pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; -pub const NETLINK_PKTINFO: u32 = 3; -pub const NETLINK_BROADCAST_ERROR: u32 = 4; -pub const NETLINK_NO_ENOBUFS: u32 = 5; -pub const NETLINK_RX_RING: u32 = 6; -pub const NETLINK_TX_RING: u32 = 7; -pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; -pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; -pub const NETLINK_CAP_ACK: u32 = 10; -pub const NETLINK_EXT_ACK: u32 = 11; -pub const NETLINK_GET_STRICT_CHK: u32 = 12; -pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; -pub const NET_MAJOR: u32 = 36; -pub const NLA_F_NESTED: u32 = 32768; -pub const NLA_F_NET_BYTEORDER: u32 = 16384; -pub const NLA_TYPE_MASK: i32 = -49153; -pub const NLA_ALIGNTO: u32 = 4; -pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; -pub const MACVLAN_FLAG_NODST: u32 = 2; -pub const IPVLAN_F_PRIVATE: u32 = 1; -pub const IPVLAN_F_VEPA: u32 = 2; -pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; -pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; -pub const MAX_VLAN_LIST_LEN: u32 = 1; -pub const PORT_PROFILE_MAX: u32 = 40; -pub const PORT_UUID_MAX: u32 = 16; -pub const PORT_SELF_VF: i32 = -1; -pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; -pub const XDP_FLAGS_SKB_MODE: u32 = 2; -pub const XDP_FLAGS_DRV_MODE: u32 = 4; -pub const XDP_FLAGS_HW_MODE: u32 = 8; -pub const XDP_FLAGS_REPLACE: u32 = 16; -pub const XDP_FLAGS_MODES: u32 = 14; -pub const XDP_FLAGS_MASK: u32 = 31; -pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; -pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; -pub const IFA_F_SECONDARY: u32 = 1; -pub const IFA_F_TEMPORARY: u32 = 1; -pub const IFA_F_NODAD: u32 = 2; -pub const IFA_F_OPTIMISTIC: u32 = 4; -pub const IFA_F_DADFAILED: u32 = 8; -pub const IFA_F_HOMEADDRESS: u32 = 16; -pub const IFA_F_DEPRECATED: u32 = 32; -pub const IFA_F_TENTATIVE: u32 = 64; -pub const IFA_F_PERMANENT: u32 = 128; -pub const IFA_F_MANAGETEMPADDR: u32 = 256; -pub const IFA_F_NOPREFIXROUTE: u32 = 512; -pub const IFA_F_MCAUTOJOIN: u32 = 1024; -pub const IFA_F_STABLE_PRIVACY: u32 = 2048; -pub const IFAPROT_UNSPEC: u32 = 0; -pub const IFAPROT_KERNEL_LO: u32 = 1; -pub const IFAPROT_KERNEL_RA: u32 = 2; -pub const IFAPROT_KERNEL_LL: u32 = 3; -pub const NTF_USE: u32 = 1; -pub const NTF_SELF: u32 = 2; -pub const NTF_MASTER: u32 = 4; -pub const NTF_PROXY: u32 = 8; -pub const NTF_EXT_LEARNED: u32 = 16; -pub const NTF_OFFLOADED: u32 = 32; -pub const NTF_STICKY: u32 = 64; -pub const NTF_ROUTER: u32 = 128; -pub const NTF_EXT_MANAGED: u32 = 1; -pub const NTF_EXT_LOCKED: u32 = 2; -pub const NUD_INCOMPLETE: u32 = 1; -pub const NUD_REACHABLE: u32 = 2; -pub const NUD_STALE: u32 = 4; -pub const NUD_DELAY: u32 = 8; -pub const NUD_PROBE: u32 = 16; -pub const NUD_FAILED: u32 = 32; -pub const NUD_NOARP: u32 = 64; -pub const NUD_PERMANENT: u32 = 128; -pub const NUD_NONE: u32 = 0; -pub const RTNL_FAMILY_IPMR: u32 = 128; -pub const RTNL_FAMILY_IP6MR: u32 = 129; -pub const RTNL_FAMILY_MAX: u32 = 129; -pub const RTA_ALIGNTO: u32 = 4; -pub const RTPROT_UNSPEC: u32 = 0; -pub const RTPROT_REDIRECT: u32 = 1; -pub const RTPROT_KERNEL: u32 = 2; -pub const RTPROT_BOOT: u32 = 3; -pub const RTPROT_STATIC: u32 = 4; -pub const RTPROT_GATED: u32 = 8; -pub const RTPROT_RA: u32 = 9; -pub const RTPROT_MRT: u32 = 10; -pub const RTPROT_ZEBRA: u32 = 11; -pub const RTPROT_BIRD: u32 = 12; -pub const RTPROT_DNROUTED: u32 = 13; -pub const RTPROT_XORP: u32 = 14; -pub const RTPROT_NTK: u32 = 15; -pub const RTPROT_DHCP: u32 = 16; -pub const RTPROT_MROUTED: u32 = 17; -pub const RTPROT_KEEPALIVED: u32 = 18; -pub const RTPROT_BABEL: u32 = 42; -pub const RTPROT_OPENR: u32 = 99; -pub const RTPROT_BGP: u32 = 186; -pub const RTPROT_ISIS: u32 = 187; -pub const RTPROT_OSPF: u32 = 188; -pub const RTPROT_RIP: u32 = 189; -pub const RTPROT_EIGRP: u32 = 192; -pub const RTM_F_NOTIFY: u32 = 256; -pub const RTM_F_CLONED: u32 = 512; -pub const RTM_F_EQUALIZE: u32 = 1024; -pub const RTM_F_PREFIX: u32 = 2048; -pub const RTM_F_LOOKUP_TABLE: u32 = 4096; -pub const RTM_F_FIB_MATCH: u32 = 8192; -pub const RTM_F_OFFLOAD: u32 = 16384; -pub const RTM_F_TRAP: u32 = 32768; -pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; -pub const RTNH_F_DEAD: u32 = 1; -pub const RTNH_F_PERVASIVE: u32 = 2; -pub const RTNH_F_ONLINK: u32 = 4; -pub const RTNH_F_OFFLOAD: u32 = 8; -pub const RTNH_F_LINKDOWN: u32 = 16; -pub const RTNH_F_UNRESOLVED: u32 = 32; -pub const RTNH_F_TRAP: u32 = 64; -pub const RTNH_COMPARE_MASK: u32 = 89; -pub const RTNH_ALIGNTO: u32 = 4; -pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; -pub const RTAX_FEATURE_ECN: u32 = 1; -pub const RTAX_FEATURE_SACK: u32 = 2; -pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; -pub const RTAX_FEATURE_ALLFRAG: u32 = 8; -pub const RTAX_FEATURE_MASK: u32 = 15; -pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; -pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; -pub const RTMGRP_LINK: u32 = 1; -pub const RTMGRP_NOTIFY: u32 = 2; -pub const RTMGRP_NEIGH: u32 = 4; -pub const RTMGRP_TC: u32 = 8; -pub const RTMGRP_IPV4_IFADDR: u32 = 16; -pub const RTMGRP_IPV4_MROUTE: u32 = 32; -pub const RTMGRP_IPV4_ROUTE: u32 = 64; -pub const RTMGRP_IPV4_RULE: u32 = 128; -pub const RTMGRP_IPV6_IFADDR: u32 = 256; -pub const RTMGRP_IPV6_MROUTE: u32 = 512; -pub const RTMGRP_IPV6_ROUTE: u32 = 1024; -pub const RTMGRP_IPV6_IFINFO: u32 = 2048; -pub const RTMGRP_DECnet_IFADDR: u32 = 4096; -pub const RTMGRP_DECnet_ROUTE: u32 = 16384; -pub const RTMGRP_IPV6_PREFIX: u32 = 131072; -pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; -pub const RTEXT_FILTER_VF: u32 = 1; -pub const RTEXT_FILTER_BRVLAN: u32 = 2; -pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; -pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; -pub const RTEXT_FILTER_MRP: u32 = 16; -pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; -pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; -pub const RTEXT_FILTER_MST: u32 = 128; -pub type size_t = crate::ctypes::c_uint; -pub type ssize_t = crate::ctypes::c_int; -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; #[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct nlattr { +pub nla_len: __u16, +pub nla_type: __u16, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, +#[derive(Debug, Copy, Clone)] +pub struct nla_bitfield32 { +pub value: __u32, +pub selector: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], +pub struct rtnl_link_stats { +pub rx_packets: __u32, +pub tx_packets: __u32, +pub rx_bytes: __u32, +pub tx_bytes: __u32, +pub rx_errors: __u32, +pub tx_errors: __u32, +pub rx_dropped: __u32, +pub tx_dropped: __u32, +pub multicast: __u32, +pub collisions: __u32, +pub rx_length_errors: __u32, +pub rx_over_errors: __u32, +pub rx_crc_errors: __u32, +pub rx_frame_errors: __u32, +pub rx_fifo_errors: __u32, +pub rx_missed_errors: __u32, +pub tx_aborted_errors: __u32, +pub tx_carrier_errors: __u32, +pub tx_fifo_errors: __u32, +pub tx_heartbeat_errors: __u32, +pub tx_window_errors: __u32, +pub rx_compressed: __u32, +pub tx_compressed: __u32, +pub rx_nohandler: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnl_link_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +pub collisions: __u64, +pub rx_length_errors: __u64, +pub rx_over_errors: __u64, +pub rx_crc_errors: __u64, +pub rx_frame_errors: __u64, +pub rx_fifo_errors: __u64, +pub rx_missed_errors: __u64, +pub tx_aborted_errors: __u64, +pub tx_carrier_errors: __u64, +pub tx_fifo_errors: __u64, +pub tx_heartbeat_errors: __u64, +pub tx_window_errors: __u64, +pub rx_compressed: __u64, +pub tx_compressed: __u64, +pub rx_nohandler: __u64, +pub rx_otherhost_dropped: __u64, } -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 32usize], +pub struct rtnl_hw_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, } -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_long_t = crate::ctypes::c_longlong; -pub type __kernel_ulong_t = crate::ctypes::c_ulonglong; -pub type __kernel_old_uid_t = crate::ctypes::c_ushort; -pub type __kernel_old_gid_t = crate::ctypes::c_ushort; -pub type __kernel_old_dev_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_size_t = crate::ctypes::c_uint; -pub type __kernel_ssize_t = crate::ctypes::c_int; -pub type __kernel_ptrdiff_t = crate::ctypes::c_int; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], +pub struct rtnl_link_ifmap { +pub mem_start: __u64, +pub mem_end: __u64, +pub base_addr: __u64, +pub irq: __u16, +pub dma: __u8, +pub port: __u8, } -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_nl { -pub nl_family: __kernel_sa_family_t, -pub nl_pad: crate::ctypes::c_ushort, -pub nl_pid: __u32, -pub nl_groups: __u32, +pub struct ifla_bridge_id { +pub prio: [__u8; 2usize], +pub addr: [__u8; 6usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsghdr { -pub nlmsg_len: __u32, -pub nlmsg_type: __u16, -pub nlmsg_flags: __u16, -pub nlmsg_seq: __u32, -pub nlmsg_pid: __u32, +pub struct ifla_cacheinfo { +pub max_reasm_len: __u32, +pub tstamp: __u32, +pub reachable_time: __u32, +pub retrans_time: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsgerr { -pub error: crate::ctypes::c_int, -pub msg: nlmsghdr, +pub struct ifla_vlan_flags { +pub flags: __u32, +pub mask: __u32, } -impl nlmsgerr_attrs { -pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_qos_mapping { +pub from: __u32, +pub to: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tunnel_msg { +pub family: __u8, +pub flags: __u8, +pub reserved2: __u16, +pub ifindex: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vxlan_port_range { +pub low: __be16, +pub high: __be16, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_mac { +pub vf: __u32, +pub mac: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_broadcast { +pub broadcast: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan_info { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +pub vlan_proto: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_tx_rate { +pub vf: __u32, +pub rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rate { +pub vf: __u32, +pub min_tx_rate: __u32, +pub max_tx_rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_spoofchk { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_guid { +pub vf: __u32, +pub guid: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_link_state { +pub vf: __u32, +pub link_state: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rss_query_en { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_trust { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_port_vsi { +pub vsi_mgr_id: __u8, +pub vsi_type_id: [__u8; 3usize], +pub vsi_type_version: __u8, +pub pad: [__u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct if_stats_msg { +pub family: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub ifindex: __u32, +pub filter_mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_rmnet_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifaddrmsg { +pub ifa_family: __u8, +pub ifa_prefixlen: __u8, +pub ifa_flags: __u8, +pub ifa_scope: __u8, +pub ifa_index: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifa_cacheinfo { +pub ifa_prefered: __u32, +pub ifa_valid: __u32, +pub cstamp: __u32, +pub tstamp: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndmsg { +pub ndm_family: __u8, +pub ndm_pad1: __u8, +pub ndm_pad2: __u16, +pub ndm_ifindex: __s32, +pub ndm_state: __u16, +pub ndm_flags: __u8, +pub ndm_type: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nda_cacheinfo { +pub ndm_confirmed: __u32, +pub ndm_used: __u32, +pub ndm_updated: __u32, +pub ndm_refcnt: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_stats { +pub ndts_allocs: __u64, +pub ndts_destroys: __u64, +pub ndts_hash_grows: __u64, +pub ndts_res_failed: __u64, +pub ndts_lookups: __u64, +pub ndts_hits: __u64, +pub ndts_rcv_probes_mcast: __u64, +pub ndts_rcv_probes_ucast: __u64, +pub ndts_periodic_gc_runs: __u64, +pub ndts_forced_gc_runs: __u64, +pub ndts_table_fulls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndtmsg { +pub ndtm_family: __u8, +pub ndtm_pad1: __u8, +pub ndtm_pad2: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_config { +pub ndtc_key_len: __u16, +pub ndtc_entry_size: __u16, +pub ndtc_entries: __u32, +pub ndtc_last_flush: __u32, +pub ndtc_last_rand: __u32, +pub ndtc_hash_rnd: __u32, +pub ndtc_hash_mask: __u32, +pub ndtc_hash_chain_gc: __u32, +pub ndtc_proxy_qlen: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtattr { +pub rta_len: crate::ctypes::c_ushort, +pub rta_type: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtmsg { +pub rtm_family: crate::ctypes::c_uchar, +pub rtm_dst_len: crate::ctypes::c_uchar, +pub rtm_src_len: crate::ctypes::c_uchar, +pub rtm_tos: crate::ctypes::c_uchar, +pub rtm_table: crate::ctypes::c_uchar, +pub rtm_protocol: crate::ctypes::c_uchar, +pub rtm_scope: crate::ctypes::c_uchar, +pub rtm_type: crate::ctypes::c_uchar, +pub rtm_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnexthop { +pub rtnh_len: crate::ctypes::c_ushort, +pub rtnh_flags: crate::ctypes::c_uchar, +pub rtnh_hops: crate::ctypes::c_uchar, +pub rtnh_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug)] +pub struct rtvia { +pub rtvia_family: __kernel_sa_family_t, +pub rtvia_addr: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_cacheinfo { +pub rta_clntref: __u32, +pub rta_lastuse: __u32, +pub rta_expires: __s32, +pub rta_error: __u32, +pub rta_used: __u32, +pub rta_id: __u32, +pub rta_ts: __u32, +pub rta_tsage: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rta_session { +pub proto: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub u: rta_session__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { +pub sport: __u16, +pub dport: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { +pub type_: __u8, +pub code: __u8, +pub ident: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_mfc_stats { +pub mfcs_packets: __u64, +pub mfcs_bytes: __u64, +pub mfcs_wrong_if: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtgenmsg { +pub rtgen_family: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifinfomsg { +pub ifi_family: crate::ctypes::c_uchar, +pub __ifi_pad: crate::ctypes::c_uchar, +pub ifi_type: crate::ctypes::c_ushort, +pub ifi_index: crate::ctypes::c_int, +pub ifi_flags: crate::ctypes::c_uint, +pub ifi_change: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefixmsg { +pub prefix_family: crate::ctypes::c_uchar, +pub prefix_pad1: crate::ctypes::c_uchar, +pub prefix_pad2: crate::ctypes::c_ushort, +pub prefix_ifindex: crate::ctypes::c_int, +pub prefix_type: crate::ctypes::c_uchar, +pub prefix_len: crate::ctypes::c_uchar, +pub prefix_flags: crate::ctypes::c_uchar, +pub prefix_pad3: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefix_cacheinfo { +pub preferred_time: __u32, +pub valid_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcmsg { +pub tcm_family: crate::ctypes::c_uchar, +pub tcm__pad1: crate::ctypes::c_uchar, +pub tcm__pad2: crate::ctypes::c_ushort, +pub tcm_ifindex: crate::ctypes::c_int, +pub tcm_handle: __u32, +pub tcm_parent: __u32, +pub tcm_info: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nduseroptmsg { +pub nduseropt_family: crate::ctypes::c_uchar, +pub nduseropt_pad1: crate::ctypes::c_uchar, +pub nduseropt_opts_len: crate::ctypes::c_ushort, +pub nduseropt_ifindex: crate::ctypes::c_int, +pub nduseropt_icmp_type: __u8, +pub nduseropt_icmp_code: __u8, +pub nduseropt_pad2: crate::ctypes::c_ushort, +pub nduseropt_pad3: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcamsg { +pub tca_family: crate::ctypes::c_uchar, +pub tca__pad1: crate::ctypes::c_uchar, +pub tca__pad2: crate::ctypes::c_ushort, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const NETLINK_ROUTE: u32 = 0; +pub const NETLINK_UNUSED: u32 = 1; +pub const NETLINK_USERSOCK: u32 = 2; +pub const NETLINK_FIREWALL: u32 = 3; +pub const NETLINK_SOCK_DIAG: u32 = 4; +pub const NETLINK_NFLOG: u32 = 5; +pub const NETLINK_XFRM: u32 = 6; +pub const NETLINK_SELINUX: u32 = 7; +pub const NETLINK_ISCSI: u32 = 8; +pub const NETLINK_AUDIT: u32 = 9; +pub const NETLINK_FIB_LOOKUP: u32 = 10; +pub const NETLINK_CONNECTOR: u32 = 11; +pub const NETLINK_NETFILTER: u32 = 12; +pub const NETLINK_IP6_FW: u32 = 13; +pub const NETLINK_DNRTMSG: u32 = 14; +pub const NETLINK_KOBJECT_UEVENT: u32 = 15; +pub const NETLINK_GENERIC: u32 = 16; +pub const NETLINK_SCSITRANSPORT: u32 = 18; +pub const NETLINK_ECRYPTFS: u32 = 19; +pub const NETLINK_RDMA: u32 = 20; +pub const NETLINK_CRYPTO: u32 = 21; +pub const NETLINK_SMC: u32 = 22; +pub const NETLINK_INET_DIAG: u32 = 4; +pub const MAX_LINKS: u32 = 32; +pub const NLM_F_REQUEST: u32 = 1; +pub const NLM_F_MULTI: u32 = 2; +pub const NLM_F_ACK: u32 = 4; +pub const NLM_F_ECHO: u32 = 8; +pub const NLM_F_DUMP_INTR: u32 = 16; +pub const NLM_F_DUMP_FILTERED: u32 = 32; +pub const NLM_F_ROOT: u32 = 256; +pub const NLM_F_MATCH: u32 = 512; +pub const NLM_F_ATOMIC: u32 = 1024; +pub const NLM_F_DUMP: u32 = 768; +pub const NLM_F_REPLACE: u32 = 256; +pub const NLM_F_EXCL: u32 = 512; +pub const NLM_F_CREATE: u32 = 1024; +pub const NLM_F_APPEND: u32 = 2048; +pub const NLM_F_NONREC: u32 = 256; +pub const NLM_F_BULK: u32 = 512; +pub const NLM_F_CAPPED: u32 = 256; +pub const NLM_F_ACK_TLVS: u32 = 512; +pub const NLMSG_ALIGNTO: u32 = 4; +pub const NLMSG_NOOP: u32 = 1; +pub const NLMSG_ERROR: u32 = 2; +pub const NLMSG_DONE: u32 = 3; +pub const NLMSG_OVERRUN: u32 = 4; +pub const NLMSG_MIN_TYPE: u32 = 16; +pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; +pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; +pub const NETLINK_PKTINFO: u32 = 3; +pub const NETLINK_BROADCAST_ERROR: u32 = 4; +pub const NETLINK_NO_ENOBUFS: u32 = 5; +pub const NETLINK_RX_RING: u32 = 6; +pub const NETLINK_TX_RING: u32 = 7; +pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; +pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; +pub const NETLINK_CAP_ACK: u32 = 10; +pub const NETLINK_EXT_ACK: u32 = 11; +pub const NETLINK_GET_STRICT_CHK: u32 = 12; +pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; +pub const NET_MAJOR: u32 = 36; +pub const NLA_F_NESTED: u32 = 32768; +pub const NLA_F_NET_BYTEORDER: u32 = 16384; +pub const NLA_TYPE_MASK: i32 = -49153; +pub const NLA_ALIGNTO: u32 = 4; +pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; +pub const MACVLAN_FLAG_NODST: u32 = 2; +pub const IPVLAN_F_PRIVATE: u32 = 1; +pub const IPVLAN_F_VEPA: u32 = 2; +pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; +pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; +pub const MAX_VLAN_LIST_LEN: u32 = 1; +pub const PORT_PROFILE_MAX: u32 = 40; +pub const PORT_UUID_MAX: u32 = 16; +pub const PORT_SELF_VF: i32 = -1; +pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; +pub const XDP_FLAGS_SKB_MODE: u32 = 2; +pub const XDP_FLAGS_DRV_MODE: u32 = 4; +pub const XDP_FLAGS_HW_MODE: u32 = 8; +pub const XDP_FLAGS_REPLACE: u32 = 16; +pub const XDP_FLAGS_MODES: u32 = 14; +pub const XDP_FLAGS_MASK: u32 = 31; +pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; +pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; +pub const IFA_F_SECONDARY: u32 = 1; +pub const IFA_F_TEMPORARY: u32 = 1; +pub const IFA_F_NODAD: u32 = 2; +pub const IFA_F_OPTIMISTIC: u32 = 4; +pub const IFA_F_DADFAILED: u32 = 8; +pub const IFA_F_HOMEADDRESS: u32 = 16; +pub const IFA_F_DEPRECATED: u32 = 32; +pub const IFA_F_TENTATIVE: u32 = 64; +pub const IFA_F_PERMANENT: u32 = 128; +pub const IFA_F_MANAGETEMPADDR: u32 = 256; +pub const IFA_F_NOPREFIXROUTE: u32 = 512; +pub const IFA_F_MCAUTOJOIN: u32 = 1024; +pub const IFA_F_STABLE_PRIVACY: u32 = 2048; +pub const IFAPROT_UNSPEC: u32 = 0; +pub const IFAPROT_KERNEL_LO: u32 = 1; +pub const IFAPROT_KERNEL_RA: u32 = 2; +pub const IFAPROT_KERNEL_LL: u32 = 3; +pub const NTF_USE: u32 = 1; +pub const NTF_SELF: u32 = 2; +pub const NTF_MASTER: u32 = 4; +pub const NTF_PROXY: u32 = 8; +pub const NTF_EXT_LEARNED: u32 = 16; +pub const NTF_OFFLOADED: u32 = 32; +pub const NTF_STICKY: u32 = 64; +pub const NTF_ROUTER: u32 = 128; +pub const NTF_EXT_MANAGED: u32 = 1; +pub const NTF_EXT_LOCKED: u32 = 2; +pub const NUD_INCOMPLETE: u32 = 1; +pub const NUD_REACHABLE: u32 = 2; +pub const NUD_STALE: u32 = 4; +pub const NUD_DELAY: u32 = 8; +pub const NUD_PROBE: u32 = 16; +pub const NUD_FAILED: u32 = 32; +pub const NUD_NOARP: u32 = 64; +pub const NUD_PERMANENT: u32 = 128; +pub const NUD_NONE: u32 = 0; +pub const RTNL_FAMILY_IPMR: u32 = 128; +pub const RTNL_FAMILY_IP6MR: u32 = 129; +pub const RTNL_FAMILY_MAX: u32 = 129; +pub const RTA_ALIGNTO: u32 = 4; +pub const RTPROT_UNSPEC: u32 = 0; +pub const RTPROT_REDIRECT: u32 = 1; +pub const RTPROT_KERNEL: u32 = 2; +pub const RTPROT_BOOT: u32 = 3; +pub const RTPROT_STATIC: u32 = 4; +pub const RTPROT_GATED: u32 = 8; +pub const RTPROT_RA: u32 = 9; +pub const RTPROT_MRT: u32 = 10; +pub const RTPROT_ZEBRA: u32 = 11; +pub const RTPROT_BIRD: u32 = 12; +pub const RTPROT_DNROUTED: u32 = 13; +pub const RTPROT_XORP: u32 = 14; +pub const RTPROT_NTK: u32 = 15; +pub const RTPROT_DHCP: u32 = 16; +pub const RTPROT_MROUTED: u32 = 17; +pub const RTPROT_KEEPALIVED: u32 = 18; +pub const RTPROT_BABEL: u32 = 42; +pub const RTPROT_OPENR: u32 = 99; +pub const RTPROT_BGP: u32 = 186; +pub const RTPROT_ISIS: u32 = 187; +pub const RTPROT_OSPF: u32 = 188; +pub const RTPROT_RIP: u32 = 189; +pub const RTPROT_EIGRP: u32 = 192; +pub const RTM_F_NOTIFY: u32 = 256; +pub const RTM_F_CLONED: u32 = 512; +pub const RTM_F_EQUALIZE: u32 = 1024; +pub const RTM_F_PREFIX: u32 = 2048; +pub const RTM_F_LOOKUP_TABLE: u32 = 4096; +pub const RTM_F_FIB_MATCH: u32 = 8192; +pub const RTM_F_OFFLOAD: u32 = 16384; +pub const RTM_F_TRAP: u32 = 32768; +pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; +pub const RTNH_F_DEAD: u32 = 1; +pub const RTNH_F_PERVASIVE: u32 = 2; +pub const RTNH_F_ONLINK: u32 = 4; +pub const RTNH_F_OFFLOAD: u32 = 8; +pub const RTNH_F_LINKDOWN: u32 = 16; +pub const RTNH_F_UNRESOLVED: u32 = 32; +pub const RTNH_F_TRAP: u32 = 64; +pub const RTNH_COMPARE_MASK: u32 = 89; +pub const RTNH_ALIGNTO: u32 = 4; +pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; +pub const RTAX_FEATURE_ECN: u32 = 1; +pub const RTAX_FEATURE_SACK: u32 = 2; +pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; +pub const RTAX_FEATURE_ALLFRAG: u32 = 8; +pub const RTAX_FEATURE_MASK: u32 = 15; +pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; +pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; +pub const RTMGRP_LINK: u32 = 1; +pub const RTMGRP_NOTIFY: u32 = 2; +pub const RTMGRP_NEIGH: u32 = 4; +pub const RTMGRP_TC: u32 = 8; +pub const RTMGRP_IPV4_IFADDR: u32 = 16; +pub const RTMGRP_IPV4_MROUTE: u32 = 32; +pub const RTMGRP_IPV4_ROUTE: u32 = 64; +pub const RTMGRP_IPV4_RULE: u32 = 128; +pub const RTMGRP_IPV6_IFADDR: u32 = 256; +pub const RTMGRP_IPV6_MROUTE: u32 = 512; +pub const RTMGRP_IPV6_ROUTE: u32 = 1024; +pub const RTMGRP_IPV6_IFINFO: u32 = 2048; +pub const RTMGRP_DECnet_IFADDR: u32 = 4096; +pub const RTMGRP_DECnet_ROUTE: u32 = 16384; +pub const RTMGRP_IPV6_PREFIX: u32 = 131072; +pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; +pub const RTEXT_FILTER_VF: u32 = 1; +pub const RTEXT_FILTER_BRVLAN: u32 = 2; +pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; +pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; +pub const RTEXT_FILTER_MRP: u32 = 16; +pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; +pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; +pub const RTEXT_FILTER_MST: u32 = 128; +pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; +pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; +pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; +pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; +pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; +pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; +pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; +pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; +pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; +pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; +pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; +pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; +pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; +pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; +pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; +pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; +pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; +pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; +pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; +pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; +pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; +pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; +pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; +pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; +pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; +pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; +pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; +pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; +pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; +pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; +pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; +pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; +pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; +pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; +pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; +pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; +pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; +pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; +pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; +pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; +pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; +pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; +pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; +pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; +pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; +pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; +pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; +pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; +pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; +pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; +pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; +pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; +pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; +pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; +pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; +pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; +pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; +pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; +pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; +pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; +pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; +pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; +pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; +pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; +pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; +pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; +pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; +pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; +pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; +pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; +pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; +pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; +pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; +pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; +pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; +pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; +pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; +pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; +pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; +pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; +pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; +pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; +pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; +pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; +pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; +pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; +pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; +pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; +pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; +pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; +pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; +pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; +pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; +pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; +pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; +pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; +pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; +pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; +pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; +pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; +pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; +pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; +pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; +pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; +pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; +pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; +pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; +pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; +pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; +pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; +pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; +pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; +pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; +pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; +pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; +pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; +pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; +pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; +pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; +pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; +pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; +pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; +pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; +pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; +pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; +pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; +pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; +pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; +pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; +pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; +pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; +pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; +pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; +pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; +pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; +pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; +pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; +pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; +pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; +pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; +pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; +pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; +pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; +pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; +pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; +pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; +pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; +pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; +pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; +pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; +pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; +pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; +pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; +pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; +pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; +pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; +pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; +pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; +pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; +pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; +pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; +pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; +pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; +pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; +pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; +pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; +pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; +pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; +pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; +pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; +pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; +pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; +pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; +pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; +pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; +pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; +pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; +pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; +pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; +pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; +pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; +pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; +pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; +pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; +pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; +pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; +pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; +pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; +pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; +pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; +pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; +pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; +pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; +pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; +pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; +pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; +pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; +pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; +pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; +pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; +pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; +pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; +pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; +pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; +pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; +pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; +pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; +pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; +pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; +pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; +pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; +pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; +pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; +pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; +pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; +pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; +pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; +pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; +pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; +pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; +pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; +pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; +pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; +pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; +pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; +pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; +pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; +pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; +pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; +pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; +pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; +pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; +pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; +pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; +pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; +pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; +pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; +pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; +pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; +pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; +pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; +pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; +pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; +pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; +pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; +pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; +pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; +pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; +pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; +pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; +pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; +pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; +pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; +pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; +pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; +pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; +pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; +pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; +pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; +pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; +pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; +pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; +pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; +pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; +pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; +pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; +pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; +pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; +pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; +pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; +pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; +pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; +pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; +pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; +pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; +pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; +pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; +pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; +pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; +pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; +pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; +pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; +pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; +pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; +pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; +pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; +pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; +pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; +pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; +pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; +pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; +pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; +pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; +pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; +pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; +pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; +pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; +pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; +pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; +pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; +pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; +pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; +pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; +pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; +pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; +pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; +pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; +pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; +pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; +pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; +pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; +pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; +pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; +pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; +pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; +pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; +pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; +pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; +pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; +pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; +pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; +pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; +pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; +pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; +pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; +pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; +pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; +pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; +pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; +pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; +pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; +pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; +pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; +pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; +pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; +pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; +pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; +pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; +pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; +pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; +pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; +pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; +pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; +pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; +pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; +pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; +pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; +pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; +pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; +pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; +pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; +pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; +pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; +pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; +pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; +pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; +pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; +pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; +pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; +pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; +pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; +pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; +pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; +pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; +pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; +pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; +pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; +pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; +pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; +pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; +pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; +pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; +pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; +pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; +pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; +pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; +pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; +pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; +pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; +pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; +pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; +pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; +pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; +pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; +pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; +pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; +pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; +pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; +pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; +pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; +pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; +pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; +pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; +pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; +pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; +pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; +pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; +pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; +pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; +pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; +pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; +pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; +pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; +pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; +pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; +pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; +pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; +pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; +pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; +pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; +pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; +pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; +pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; +pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; +pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; +pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; +pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; +pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; +pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; +pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; +pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; +pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; +pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; +pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; +pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; +pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; +pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; +pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; +pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; +pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; +pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; +pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; +pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; +pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; +pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; +pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; +pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; +pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; +pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; +pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; +pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; +pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; +pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; +pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; +pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; +pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; +pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; +pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; +pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; +pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; +pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; +pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; +pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; +pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; +pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; +pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; +pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; +pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; +pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; +pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; +pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; +pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; +pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; +pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; +pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; +pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; +pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; +pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; +pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; +pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; +pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; +pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; +pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; +pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; +pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; +pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; +pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; +pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; +pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; +pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; +pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; +pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; +pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; +pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; +pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; +pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; +pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; +pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; +pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; +pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; +pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; +pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; +pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; +pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; +pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; +pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; +pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; +pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; +pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; +pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; +pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; +pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; +pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; +pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; +pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; +pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; +pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; +pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; +pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; +pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; +pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; +pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; +pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; +pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; +pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; +pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; +pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; +pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; +pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; +pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; +pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; +pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; +pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; +pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; +pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; +pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; +pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; +pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; +pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; +pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; +pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; +pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; +pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; +pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; +pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; +pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; +pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; +pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; +pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; +pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; +pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; +pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; +pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; +pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; +pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; +pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; +pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; +pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; +pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; +pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; +pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; +pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; +pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; +pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; +pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; +pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; +pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; +pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; +pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; +pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; +pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; +pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; +pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; +pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; +pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; +pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; +pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; +pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; +pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; +pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; +pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; +pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; +pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; +pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; +pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; +pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; +pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; +pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; +pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; +pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; +pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; +pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; +pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; +pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; +pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; +pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; +pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; +pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; +pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; +pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; +pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; +pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; +pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; +pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; +pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; +pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; +pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; +pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; +pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; +pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; +pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; +pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; +pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; +pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; +pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; +pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; +pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; +pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; +pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; +pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; +pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; +pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; +pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; +pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; +pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; +pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; +pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; +pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; +pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; +pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; +pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; +pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; +pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; +pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; +pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; +pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; +pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; +pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; +pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; +pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; +pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; +pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; +pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; +pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; +pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; +pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; +pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; +pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; +pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; +pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; +pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; +pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; +pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; +pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; +pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; +pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; +pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; +pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; +pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; +pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; +pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; +pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; +pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; +pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; +pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; +pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; +pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; +pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; +pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; +pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; +pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; +pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; +pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; +pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; +pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; +pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; +pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; +pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; +pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; +pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; +pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; +pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; +pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; +pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; +pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; +pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; +pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; +pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; +pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; +pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; +pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; +pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; +pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; +pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; +pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; +pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; +pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; +pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; +pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; +pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; +pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; +pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; +pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; +pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; +pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; +pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; +pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; +pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; +pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; +pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; +pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; +pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; +pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; +pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -365,29 +1500,6 @@ NLMSGERR_ATTR_MISS_NEST = 6, __NLMSGERR_ATTR_MAX = 7, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_pktinfo { -pub group: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_req { -pub nm_block_size: crate::ctypes::c_uint, -pub nm_block_nr: crate::ctypes::c_uint, -pub nm_frame_size: crate::ctypes::c_uint, -pub nm_frame_nr: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_hdr { -pub nm_status: crate::ctypes::c_uint, -pub nm_len: crate::ctypes::c_uint, -pub nm_group: __u32, -pub nm_pid: __u32, -pub nm_uid: __u32, -pub nm_gid: __u32, -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -398,8 +1510,6 @@ NL_MMAP_STATUS_COPY = 3, NL_MMAP_STATUS_SKIP = 4, } -pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; -pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -407,208 +1517,46 @@ NETLINK_UNCONNECTED = 0, NETLINK_CONNECTED = 1, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nlattr { -pub nla_len: __u16, -pub nla_type: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nla_bitfield32 { -pub value: __u32, -pub selector: __u32, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_attribute_type { -NL_ATTR_TYPE_INVALID = 0, -NL_ATTR_TYPE_FLAG = 1, -NL_ATTR_TYPE_U8 = 2, -NL_ATTR_TYPE_U16 = 3, -NL_ATTR_TYPE_U32 = 4, -NL_ATTR_TYPE_U64 = 5, -NL_ATTR_TYPE_S8 = 6, -NL_ATTR_TYPE_S16 = 7, -NL_ATTR_TYPE_S32 = 8, -NL_ATTR_TYPE_S64 = 9, -NL_ATTR_TYPE_BINARY = 10, -NL_ATTR_TYPE_STRING = 11, -NL_ATTR_TYPE_NUL_STRING = 12, -NL_ATTR_TYPE_NESTED = 13, -NL_ATTR_TYPE_NESTED_ARRAY = 14, -NL_ATTR_TYPE_BITFIELD32 = 15, -} -impl netlink_policy_type_attr { -pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_policy_type_attr { -NL_POLICY_TYPE_ATTR_UNSPEC = 0, -NL_POLICY_TYPE_ATTR_TYPE = 1, -NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, -NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, -NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, -NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, -NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, -NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, -NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, -NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, -NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, -NL_POLICY_TYPE_ATTR_PAD = 11, -NL_POLICY_TYPE_ATTR_MASK = 12, -__NL_POLICY_TYPE_ATTR_MAX = 13, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats { -pub rx_packets: __u32, -pub tx_packets: __u32, -pub rx_bytes: __u32, -pub tx_bytes: __u32, -pub rx_errors: __u32, -pub tx_errors: __u32, -pub rx_dropped: __u32, -pub tx_dropped: __u32, -pub multicast: __u32, -pub collisions: __u32, -pub rx_length_errors: __u32, -pub rx_over_errors: __u32, -pub rx_crc_errors: __u32, -pub rx_frame_errors: __u32, -pub rx_fifo_errors: __u32, -pub rx_missed_errors: __u32, -pub tx_aborted_errors: __u32, -pub tx_carrier_errors: __u32, -pub tx_fifo_errors: __u32, -pub tx_heartbeat_errors: __u32, -pub tx_window_errors: __u32, -pub rx_compressed: __u32, -pub tx_compressed: __u32, -pub rx_nohandler: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, -pub collisions: __u64, -pub rx_length_errors: __u64, -pub rx_over_errors: __u64, -pub rx_crc_errors: __u64, -pub rx_frame_errors: __u64, -pub rx_fifo_errors: __u64, -pub rx_missed_errors: __u64, -pub tx_aborted_errors: __u64, -pub tx_carrier_errors: __u64, -pub tx_fifo_errors: __u64, -pub tx_heartbeat_errors: __u64, -pub tx_window_errors: __u64, -pub rx_compressed: __u64, -pub tx_compressed: __u64, -pub rx_nohandler: __u64, -pub rx_otherhost_dropped: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_hw_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, +pub enum netlink_attribute_type { +NL_ATTR_TYPE_INVALID = 0, +NL_ATTR_TYPE_FLAG = 1, +NL_ATTR_TYPE_U8 = 2, +NL_ATTR_TYPE_U16 = 3, +NL_ATTR_TYPE_U32 = 4, +NL_ATTR_TYPE_U64 = 5, +NL_ATTR_TYPE_S8 = 6, +NL_ATTR_TYPE_S16 = 7, +NL_ATTR_TYPE_S32 = 8, +NL_ATTR_TYPE_S64 = 9, +NL_ATTR_TYPE_BINARY = 10, +NL_ATTR_TYPE_STRING = 11, +NL_ATTR_TYPE_NUL_STRING = 12, +NL_ATTR_TYPE_NESTED = 13, +NL_ATTR_TYPE_NESTED_ARRAY = 14, +NL_ATTR_TYPE_BITFIELD32 = 15, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_ifmap { -pub mem_start: __u64, -pub mem_end: __u64, -pub base_addr: __u64, -pub irq: __u16, -pub dma: __u8, -pub port: __u8, +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_policy_type_attr { +NL_POLICY_TYPE_ATTR_UNSPEC = 0, +NL_POLICY_TYPE_ATTR_TYPE = 1, +NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, +NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, +NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, +NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, +NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, +NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, +NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, +NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, +NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, +NL_POLICY_TYPE_ATTR_PAD = 11, +NL_POLICY_TYPE_ATTR_MASK = 12, +__NL_POLICY_TYPE_ATTR_MAX = 13, } -pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; -pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; -pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; -pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; -pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; -pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; -pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; -pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; -pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; -pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; -pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; -pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; -pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; -pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; -pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; -pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; -pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; -pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; -pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; -pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; -pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; -pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; -pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; -pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; -pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; -pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; -pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; -pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; -pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; -pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; -pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; -pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; -pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; -pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; -pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; -pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; -pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; -pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; -pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; -pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; -pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; -pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; -pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; -pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; -pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; -pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; -pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; -pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; -pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; -pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; -pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; -pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; -pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; -pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; -pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; -pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; -pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; -pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; -pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; -pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; -pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; -pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; -pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; -pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; -pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -680,11 +1628,6 @@ IFLA_GRO_IPV4_MAX_SIZE = 64, __IFLA_MAX = 65, } -pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; -pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; -pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; -pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; -pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -694,9 +1637,6 @@ IFLA_PROTO_DOWN_REASON_VALUE = 2, __IFLA_PROTO_DOWN_REASON_CNT = 3, } -pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; -pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; -pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -705,17 +1645,6 @@ IFLA_INET_CONF = 1, __IFLA_INET_MAX = 2, } -pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; -pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; -pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; -pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; -pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; -pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; -pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; -pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; -pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; -pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; -pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -741,55 +1670,6 @@ IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, IN6_ADDR_GEN_MODE_RANDOM = 3, } -pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; -pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; -pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; -pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; -pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; -pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; -pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; -pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; -pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; -pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; -pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; -pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; -pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; -pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; -pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; -pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; -pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; -pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; -pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; -pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; -pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; -pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; -pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; -pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; -pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; -pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; -pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; -pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; -pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; -pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; -pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; -pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; -pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; -pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; -pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; -pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; -pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; -pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; -pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; -pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; -pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; -pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; -pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; -pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; -pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; -pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; -pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; -pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; -pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -826,83 +1706,31 @@ IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29, IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30, IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, -IFLA_BR_MCAST_QUERIER_INTVL = 32, -IFLA_BR_MCAST_QUERY_INTVL = 33, -IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, -IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, -IFLA_BR_NF_CALL_IPTABLES = 36, -IFLA_BR_NF_CALL_IP6TABLES = 37, -IFLA_BR_NF_CALL_ARPTABLES = 38, -IFLA_BR_VLAN_DEFAULT_PVID = 39, -IFLA_BR_PAD = 40, -IFLA_BR_VLAN_STATS_ENABLED = 41, -IFLA_BR_MCAST_STATS_ENABLED = 42, -IFLA_BR_MCAST_IGMP_VERSION = 43, -IFLA_BR_MCAST_MLD_VERSION = 44, -IFLA_BR_VLAN_STATS_PER_PORT = 45, -IFLA_BR_MULTI_BOOLOPT = 46, -IFLA_BR_MCAST_QUERIER_STATE = 47, -__IFLA_BR_MAX = 48, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_bridge_id { -pub prio: [__u8; 2usize], -pub addr: [__u8; 6usize], -} -pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; -pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -BRIDGE_MODE_UNSPEC = 0, -BRIDGE_MODE_HAIRPIN = 1, -} -pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; -pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; -pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; -pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; -pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; -pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; -pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; -pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; -pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; -pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; -pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; -pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; -pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; -pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; -pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; -pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; -pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; -pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; -pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; -pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; -pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; -pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; -pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; -pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; -pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; -pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; -pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; -pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; -pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; -pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; -pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; -pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; -pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; -pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; -pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; -pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; -pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; -pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; -pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; -pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; -pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; -pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +IFLA_BR_MCAST_QUERIER_INTVL = 32, +IFLA_BR_MCAST_QUERY_INTVL = 33, +IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, +IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, +IFLA_BR_NF_CALL_IPTABLES = 36, +IFLA_BR_NF_CALL_IP6TABLES = 37, +IFLA_BR_NF_CALL_ARPTABLES = 38, +IFLA_BR_VLAN_DEFAULT_PVID = 39, +IFLA_BR_PAD = 40, +IFLA_BR_VLAN_STATS_ENABLED = 41, +IFLA_BR_MCAST_STATS_ENABLED = 42, +IFLA_BR_MCAST_IGMP_VERSION = 43, +IFLA_BR_MCAST_MLD_VERSION = 44, +IFLA_BR_VLAN_STATS_PER_PORT = 45, +IFLA_BR_MULTI_BOOLOPT = 46, +IFLA_BR_MCAST_QUERIER_STATE = 47, +__IFLA_BR_MAX = 48, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +BRIDGE_MODE_UNSPEC = 0, +BRIDGE_MODE_HAIRPIN = 1, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -952,21 +1780,6 @@ IFLA_BRPORT_MCAST_MAX_GROUPS = 42, __IFLA_BRPORT_MAX = 43, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_cacheinfo { -pub max_reasm_len: __u32, -pub tstamp: __u32, -pub reachable_time: __u32, -pub retrans_time: __u32, -} -pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; -pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; -pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; -pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; -pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; -pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; -pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -979,13 +1792,6 @@ IFLA_INFO_SLAVE_DATA = 5, __IFLA_INFO_MAX = 6, } -pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; -pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; -pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; -pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; -pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; -pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; -pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -998,15 +1804,6 @@ IFLA_VLAN_PROTOCOL = 5, __IFLA_VLAN_MAX = 6, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; -pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; -pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1015,22 +1812,6 @@ IFLA_VLAN_QOS_MAPPING = 1, __IFLA_VLAN_QOS_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_qos_mapping { -pub from: __u32, -pub to: __u32, -} -pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; -pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; -pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; -pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; -pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; -pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; -pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; -pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; -pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; -pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1065,9 +1846,6 @@ MACVLAN_MACADDR_FLUSH = 2, MACVLAN_MACADDR_SET = 3, } -pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; -pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; -pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1076,9 +1854,6 @@ IFLA_VRF_TABLE = 1, __IFLA_VRF_MAX = 2, } -pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; -pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; -pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1087,23 +1862,6 @@ IFLA_VRF_PORT_TABLE = 1, __IFLA_VRF_PORT_MAX = 2, } -pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; -pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; -pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; -pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; -pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; -pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; -pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; -pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; -pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; -pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; -pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; -pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; -pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; -pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; -pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; -pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; -pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1126,11 +1884,6 @@ IFLA_MACSEC_OFFLOAD = 15, __IFLA_MACSEC_MAX = 16, } -pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; -pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; -pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; -pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; -pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1141,9 +1894,6 @@ IFLA_XFRM_COLLECT_METADATA = 3, __IFLA_XFRM_MAX = 4, } -impl macsec_validation_type { -pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1153,9 +1903,6 @@ MACSEC_VALIDATE_STRICT = 2, __MACSEC_VALIDATE_END = 3, } -impl macsec_offload { -pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1165,10 +1912,6 @@ MACSEC_OFFLOAD_MAC = 2, __MACSEC_OFFLOAD_END = 3, } -pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; -pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; -pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; -pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1187,25 +1930,6 @@ IPVLAN_MODE_L3S = 2, IPVLAN_MODE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tunnel_msg { -pub family: __u8, -pub flags: __u8, -pub reserved2: __u16, -pub ifindex: __u32, -} -pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; -pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; -pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; -pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; -pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; -pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; -pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; -pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; -pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1222,13 +1946,6 @@ VNIFILTER_ENTRY_STATS_PAD = 9, __VNIFILTER_ENTRY_STATS_MAX = 10, } -pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; -pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; -pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; -pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; -pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; -pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1241,9 +1958,6 @@ VXLAN_VNIFILTER_ENTRY_STATS = 5, __VXLAN_VNIFILTER_ENTRY_MAX = 6, } -pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; -pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1252,38 +1966,6 @@ VXLAN_VNIFILTER_ENTRY = 1, __VXLAN_VNIFILTER_MAX = 2, } -pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; -pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; -pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; -pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; -pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; -pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; -pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; -pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; -pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; -pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; -pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; -pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; -pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; -pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; -pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; -pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; -pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; -pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; -pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; -pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; -pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; -pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; -pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; -pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; -pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; -pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; -pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; -pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; -pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; -pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1321,15 +2003,6 @@ IFLA_VXLAN_VNIFILTER = 30, __IFLA_VXLAN_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vxlan_port_range { -pub low: __be16, -pub high: __be16, -} -impl ifla_vxlan_df { -pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1339,22 +2012,6 @@ VXLAN_DF_INHERIT = 2, __VXLAN_DF_END = 3, } -pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; -pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; -pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; -pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; -pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; -pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; -pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; -pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; -pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; -pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; -pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; -pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; -pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; -pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1376,9 +2033,6 @@ IFLA_GENEVE_INNER_PROTO_INHERIT = 14, __IFLA_GENEVE_MAX = 15, } -impl ifla_geneve_df { -pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1388,12 +2042,6 @@ GENEVE_DF_INHERIT = 2, __GENEVE_DF_END = 3, } -pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; -pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; -pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; -pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; -pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; -pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1405,9 +2053,6 @@ IFLA_BAREUDP_MULTIPROTO_MODE = 4, __IFLA_BAREUDP_MAX = 5, } -pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; -pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; -pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1423,60 +2068,19 @@ GTP_ROLE_GGSN = 0, GTP_ROLE_SGSN = 1, } -pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; -pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; -pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; -pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; -pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; -pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; -pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; -pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub enum _bindgen_ty_25 { IFLA_GTP_UNSPEC = 0, IFLA_GTP_FD0 = 1, -IFLA_GTP_FD1 = 2, -IFLA_GTP_PDP_HASHSIZE = 3, -IFLA_GTP_ROLE = 4, -IFLA_GTP_CREATE_SOCKETS = 5, -IFLA_GTP_RESTART_COUNT = 6, -__IFLA_GTP_MAX = 7, -} -pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; -pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; -pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; -pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; -pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; -pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; -pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; -pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; -pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; -pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; -pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; -pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; -pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; -pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; -pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; -pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; -pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; -pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; -pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; -pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; -pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; -pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; -pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; -pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; -pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; -pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; -pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; -pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; -pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; -pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; -pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; -pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; -pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +IFLA_GTP_FD1 = 2, +IFLA_GTP_PDP_HASHSIZE = 3, +IFLA_GTP_ROLE = 4, +IFLA_GTP_CREATE_SOCKETS = 5, +IFLA_GTP_RESTART_COUNT = 6, +__IFLA_GTP_MAX = 7, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1515,13 +2119,6 @@ IFLA_BOND_NS_IP6_TARGET = 31, __IFLA_BOND_MAX = 32, } -pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; -pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; -pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; -pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; -pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1534,17 +2131,6 @@ IFLA_BOND_AD_INFO_PARTNER_MAC = 5, __IFLA_BOND_AD_INFO_MAX = 6, } -pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; -pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; -pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; -pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; -pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; -pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; -pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; -pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; -pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1561,9 +2147,6 @@ IFLA_BOND_SLAVE_PRIO = 9, __IFLA_BOND_SLAVE_MAX = 10, } -pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; -pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; -pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1572,21 +2155,6 @@ IFLA_VF_INFO = 1, __IFLA_VF_INFO_MAX = 2, } -pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; -pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; -pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; -pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; -pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; -pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; -pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; -pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; -pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; -pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; -pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; -pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; -pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; -pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; -pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1607,27 +2175,6 @@ IFLA_VF_BROADCAST = 13, __IFLA_VF_MAX = 14, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_mac { -pub vf: __u32, -pub mac: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_broadcast { -pub broadcast: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -} -pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; -pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; -pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1636,43 +2183,6 @@ IFLA_VF_VLAN_INFO = 1, __IFLA_VF_VLAN_INFO_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan_info { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -pub vlan_proto: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_tx_rate { -pub vf: __u32, -pub rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rate { -pub vf: __u32, -pub min_tx_rate: __u32, -pub max_tx_rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_spoofchk { -pub vf: __u32, -pub setting: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_guid { -pub vf: __u32, -pub guid: __u64, -} -pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; -pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; -pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; -pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1682,28 +2192,6 @@ IFLA_VF_LINK_STATE_DISABLE = 2, __IFLA_VF_LINK_STATE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_link_state { -pub vf: __u32, -pub link_state: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rss_query_en { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; -pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; -pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; -pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; -pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; -pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; -pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; -pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; -pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; -pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1719,15 +2207,6 @@ IFLA_VF_STATS_TX_DROPPED = 8, __IFLA_VF_STATS_MAX = 9, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_trust { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; -pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; -pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1736,15 +2215,6 @@ IFLA_VF_PORT = 1, __IFLA_VF_PORT_MAX = 2, } -pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; -pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; -pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; -pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; -pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; -pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; -pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; -pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; -pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1759,10 +2229,6 @@ IFLA_PORT_RESPONSE = 7, __IFLA_PORT_MAX = 8, } -pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; -pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; -pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; -pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1772,19 +2238,6 @@ PORT_REQUEST_ASSOCIATE = 2, PORT_REQUEST_DISASSOCIATE = 3, } -pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; -pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; -pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; -pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; -pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; -pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; -pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; -pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; -pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; -pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; -pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1803,19 +2256,6 @@ PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, PORT_PROFILE_RESPONSE_ERROR = 261, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_port_vsi { -pub vsi_mgr_id: __u8, -pub vsi_type_id: [__u8; 3usize], -pub vsi_type_version: __u8, -pub pad: [__u8; 3usize], -} -pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; -pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; -pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; -pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; -pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1826,8 +2266,6 @@ IFLA_IPOIB_UMCAST = 3, __IFLA_IPOIB_MAX = 4, } -pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; -pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1835,9 +2273,6 @@ IPOIB_MODE_DATAGRAM = 0, IPOIB_MODE_CONNECTED = 1, } -pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; -pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; -pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1846,15 +2281,6 @@ HSR_PROTOCOL_PRP = 1, HSR_PROTOCOL_MAX = 2, } -pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; -pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; -pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; -pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; -pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; -pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; -pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; -pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; -pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1869,22 +2295,6 @@ IFLA_HSR_PROTOCOL = 7, __IFLA_HSR_MAX = 8, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_stats_msg { -pub family: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub ifindex: __u32, -pub filter_mask: __u32, -} -pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; -pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; -pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; -pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; -pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; -pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; -pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1897,10 +2307,6 @@ IFLA_STATS_AF_SPEC = 5, __IFLA_STATS_MAX = 6, } -pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; -pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; -pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1910,10 +2316,6 @@ IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, __IFLA_STATS_GETSET_MAX = 3, } -pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; -pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; -pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; -pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1923,11 +2325,6 @@ LINK_XSTATS_TYPE_BOND = 2, __LINK_XSTATS_TYPE_MAX = 3, } -pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; -pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1938,10 +2335,6 @@ IFLA_OFFLOAD_XSTATS_L3_STATS = 3, __IFLA_OFFLOAD_XSTATS_MAX = 4, } -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; -pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1951,11 +2344,6 @@ IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, } -pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; -pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; -pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; -pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; -pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1966,16 +2354,6 @@ XDP_ATTACHED_HW = 3, XDP_ATTACHED_MULTI = 4, } -pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; -pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; -pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; -pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; -pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; -pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; -pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; -pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; -pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; -pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1991,13 +2369,6 @@ IFLA_XDP_EXPECTED_FD = 8, __IFLA_XDP_MAX = 9, } -pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; -pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; -pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; -pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; -pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; -pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; -pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2010,17 +2381,6 @@ IFLA_EVENT_IGMP_RESEND = 5, IFLA_EVENT_BONDING_OPTIONS = 6, } -pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; -pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; -pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; -pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; -pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; -pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; -pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; -pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; -pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; -pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; -pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2036,11 +2396,7 @@ IFLA_TUN_NUM_QUEUES = 8, IFLA_TUN_NUM_DISABLED_QUEUES = 9, __IFLA_TUN_MAX = 10, -} -pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; -pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; -pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; -pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2050,15 +2406,6 @@ IFLA_RMNET_FLAGS = 2, __IFLA_RMNET_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_rmnet_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; -pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; -pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2067,9 +2414,6 @@ IFLA_MCTP_NET = 1, __IFLA_MCTP_MAX = 2, } -pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; -pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; -pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2078,28 +2422,6 @@ IFLA_DSA_MASTER = 1, __IFLA_DSA_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifaddrmsg { -pub ifa_family: __u8, -pub ifa_prefixlen: __u8, -pub ifa_flags: __u8, -pub ifa_scope: __u8, -pub ifa_index: __u32, -} -pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; -pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; -pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; -pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; -pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; -pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; -pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; -pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; -pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; -pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; -pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; -pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; -pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2118,44 +2440,6 @@ IFA_PROTO = 11, __IFA_MAX = 12, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifa_cacheinfo { -pub ifa_prefered: __u32, -pub ifa_valid: __u32, -pub cstamp: __u32, -pub tstamp: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndmsg { -pub ndm_family: __u8, -pub ndm_pad1: __u8, -pub ndm_pad2: __u16, -pub ndm_ifindex: __s32, -pub ndm_state: __u16, -pub ndm_flags: __u8, -pub ndm_type: __u8, -} -pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; -pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; -pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; -pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; -pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; -pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; -pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; -pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; -pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; -pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; -pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; -pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; -pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; -pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; -pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; -pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; -pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; -pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; -pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2180,50 +2464,6 @@ NDA_NDM_FLAGS_MASK = 17, __NDA_MAX = 18, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nda_cacheinfo { -pub ndm_confirmed: __u32, -pub ndm_used: __u32, -pub ndm_updated: __u32, -pub ndm_refcnt: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_stats { -pub ndts_allocs: __u64, -pub ndts_destroys: __u64, -pub ndts_hash_grows: __u64, -pub ndts_res_failed: __u64, -pub ndts_lookups: __u64, -pub ndts_hits: __u64, -pub ndts_rcv_probes_mcast: __u64, -pub ndts_rcv_probes_ucast: __u64, -pub ndts_periodic_gc_runs: __u64, -pub ndts_forced_gc_runs: __u64, -pub ndts_table_fulls: __u64, -} -pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; -pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; -pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; -pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; -pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; -pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; -pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; -pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; -pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; -pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; -pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; -pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; -pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; -pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; -pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; -pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; -pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; -pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; -pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; -pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; -pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2250,37 +2490,6 @@ NDTPA_INTERVAL_PROBE_TIME_MS = 19, __NDTPA_MAX = 20, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndtmsg { -pub ndtm_family: __u8, -pub ndtm_pad1: __u8, -pub ndtm_pad2: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_config { -pub ndtc_key_len: __u16, -pub ndtc_entry_size: __u16, -pub ndtc_entries: __u32, -pub ndtc_last_flush: __u32, -pub ndtc_last_rand: __u32, -pub ndtc_hash_rnd: __u32, -pub ndtc_hash_mask: __u32, -pub ndtc_hash_chain_gc: __u32, -pub ndtc_proxy_qlen: __u32, -} -pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; -pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; -pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; -pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; -pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; -pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; -pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; -pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; -pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; -pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; -pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2297,8 +2506,6 @@ NDTA_PAD = 9, __NDTA_MAX = 10, } -pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; -pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2306,10 +2513,6 @@ FDB_NOTIFY_BIT = 1, FDB_NOTIFY_INACTIVE_BIT = 2, } -pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; -pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; -pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; -pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2319,79 +2522,6 @@ NFEA_DONT_REFRESH = 2, __NFEA_MAX = 3, } -pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; -pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; -pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; -pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; -pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; -pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; -pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; -pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; -pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; -pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; -pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; -pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; -pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; -pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; -pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; -pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; -pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; -pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; -pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; -pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; -pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; -pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; -pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; -pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; -pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; -pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; -pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; -pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; -pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; -pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; -pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; -pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; -pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; -pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; -pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; -pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; -pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; -pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; -pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; -pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; -pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; -pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; -pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; -pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; -pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; -pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; -pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; -pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; -pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; -pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; -pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; -pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; -pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; -pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; -pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; -pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; -pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; -pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; -pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; -pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; -pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; -pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; -pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; -pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; -pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; -pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; -pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; -pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; -pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; -pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; -pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2458,49 +2588,17 @@ RTM_NEWLINKPROP = 108, RTM_DELLINKPROP = 109, RTM_GETLINKPROP = 110, -RTM_NEWVLAN = 112, -RTM_DELVLAN = 113, -RTM_GETVLAN = 114, -RTM_NEWNEXTHOPBUCKET = 116, -RTM_DELNEXTHOPBUCKET = 117, -RTM_GETNEXTHOPBUCKET = 118, -RTM_NEWTUNNEL = 120, -RTM_DELTUNNEL = 121, -RTM_GETTUNNEL = 122, -__RTM_MAX = 123, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtattr { -pub rta_len: crate::ctypes::c_ushort, -pub rta_type: crate::ctypes::c_ushort, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtmsg { -pub rtm_family: crate::ctypes::c_uchar, -pub rtm_dst_len: crate::ctypes::c_uchar, -pub rtm_src_len: crate::ctypes::c_uchar, -pub rtm_tos: crate::ctypes::c_uchar, -pub rtm_table: crate::ctypes::c_uchar, -pub rtm_protocol: crate::ctypes::c_uchar, -pub rtm_scope: crate::ctypes::c_uchar, -pub rtm_type: crate::ctypes::c_uchar, -pub rtm_flags: crate::ctypes::c_uint, +RTM_NEWVLAN = 112, +RTM_DELVLAN = 113, +RTM_GETVLAN = 114, +RTM_NEWNEXTHOPBUCKET = 116, +RTM_DELNEXTHOPBUCKET = 117, +RTM_GETNEXTHOPBUCKET = 118, +RTM_NEWTUNNEL = 120, +RTM_DELTUNNEL = 121, +RTM_GETTUNNEL = 122, +__RTM_MAX = 123, } -pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; -pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; -pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; -pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; -pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; -pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; -pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; -pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; -pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; -pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; -pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; -pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; -pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2577,51 +2675,6 @@ RTA_NH_ID = 30, __RTA_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnexthop { -pub rtnh_len: crate::ctypes::c_ushort, -pub rtnh_flags: crate::ctypes::c_uchar, -pub rtnh_hops: crate::ctypes::c_uchar, -pub rtnh_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug)] -pub struct rtvia { -pub rtvia_family: __kernel_sa_family_t, -pub rtvia_addr: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_cacheinfo { -pub rta_clntref: __u32, -pub rta_lastuse: __u32, -pub rta_expires: __s32, -pub rta_error: __u32, -pub rta_used: __u32, -pub rta_id: __u32, -pub rta_ts: __u32, -pub rta_tsage: __u32, -} -pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; -pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; -pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; -pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; -pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; -pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; -pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; -pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; -pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; -pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; -pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; -pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; -pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; -pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; -pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; -pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; -pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; -pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; -pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2646,72 +2699,6 @@ RTAX_FASTOPEN_NO_COOKIE = 17, __RTAX_MAX = 18, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rta_session { -pub proto: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub u: rta_session__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union rta_session__bindgen_ty_1 { -pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, -pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, -pub spi: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { -pub sport: __u16, -pub dport: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { -pub type_: __u8, -pub code: __u8, -pub ident: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_mfc_stats { -pub mfcs_packets: __u64, -pub mfcs_bytes: __u64, -pub mfcs_wrong_if: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtgenmsg { -pub rtgen_family: crate::ctypes::c_uchar, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifinfomsg { -pub ifi_family: crate::ctypes::c_uchar, -pub __ifi_pad: crate::ctypes::c_uchar, -pub ifi_type: crate::ctypes::c_ushort, -pub ifi_index: crate::ctypes::c_int, -pub ifi_flags: crate::ctypes::c_uint, -pub ifi_change: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefixmsg { -pub prefix_family: crate::ctypes::c_uchar, -pub prefix_pad1: crate::ctypes::c_uchar, -pub prefix_pad2: crate::ctypes::c_ushort, -pub prefix_ifindex: crate::ctypes::c_int, -pub prefix_type: crate::ctypes::c_uchar, -pub prefix_len: crate::ctypes::c_uchar, -pub prefix_flags: crate::ctypes::c_uchar, -pub prefix_pad3: crate::ctypes::c_uchar, -} -pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; -pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; -pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; -pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2721,41 +2708,6 @@ PREFIX_CACHEINFO = 2, __PREFIX_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefix_cacheinfo { -pub preferred_time: __u32, -pub valid_time: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcmsg { -pub tcm_family: crate::ctypes::c_uchar, -pub tcm__pad1: crate::ctypes::c_uchar, -pub tcm__pad2: crate::ctypes::c_ushort, -pub tcm_ifindex: crate::ctypes::c_int, -pub tcm_handle: __u32, -pub tcm_parent: __u32, -pub tcm_info: __u32, -} -pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; -pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; -pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; -pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; -pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; -pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; -pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; -pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; -pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; -pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; -pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; -pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; -pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; -pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; -pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; -pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; -pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; -pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2779,21 +2731,6 @@ TCA_EXT_WARN_MSG = 16, __TCA_MAX = 17, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nduseroptmsg { -pub nduseropt_family: crate::ctypes::c_uchar, -pub nduseropt_pad1: crate::ctypes::c_uchar, -pub nduseropt_opts_len: crate::ctypes::c_ushort, -pub nduseropt_ifindex: crate::ctypes::c_int, -pub nduseropt_icmp_type: __u8, -pub nduseropt_icmp_code: __u8, -pub nduseropt_pad2: crate::ctypes::c_ushort, -pub nduseropt_pad3: crate::ctypes::c_uint, -} -pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; -pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; -pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2845,20 +2782,6 @@ RTNLGRP_STATS = 36, __RTNLGRP_MAX = 37, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcamsg { -pub tca_family: crate::ctypes::c_uchar, -pub tca__pad1: crate::ctypes::c_uchar, -pub tca__pad2: crate::ctypes::c_ushort, -} -pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; -pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; -pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; -pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; -pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; -pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; -pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2871,3 +2794,61 @@ TCA_ROOT_EXT_WARN_MSG = 5, __TCA_ROOT_MAX = 6, } +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union rta_session__bindgen_ty_1 { +pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, +pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, +pub spi: __u32, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl nlmsgerr_attrs { +pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +} +impl netlink_policy_type_attr { +pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; +} +impl macsec_validation_type { +pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; +} +impl macsec_offload { +pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; +} +impl ifla_vxlan_df { +pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; +} +impl ifla_geneve_df { +pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x32/net.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x32/net.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x32/net.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x32/net.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1844 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_longlong; +pub type __kernel_ulong_t = crate::ctypes::c_ulonglong; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type socklen_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_addr { +pub s_addr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq { +pub imr_multiaddr: in_addr, +pub imr_interface: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreqn { +pub imr_multiaddr: in_addr, +pub imr_address: in_addr, +pub imr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq_source { +pub imr_multiaddr: __be32, +pub imr_interface: __be32, +pub imr_sourceaddr: __be32, +} +#[repr(C)] +pub struct ip_msfilter { +pub imsf_multiaddr: __be32, +pub imsf_interface: __be32, +pub imsf_fmode: __u32, +pub imsf_numsrc: __u32, +pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, +} +#[repr(C)] +pub struct ip_msfilter__bindgen_ty_1 { +pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, +pub __bindgen_anon_1: __BindgenUnionField, +pub bindgen_union_field: u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { +pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub imsf_slist_flex: __IncompleteArrayField<__be32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_req { +pub gr_interface: __u32, +pub gr_group: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_source_req { +pub gsr_interface: __u32, +pub gsr_group: __kernel_sockaddr_storage, +pub gsr_source: __kernel_sockaddr_storage, +} +#[repr(C)] +pub struct group_filter { +pub __bindgen_anon_1: group_filter__bindgen_ty_1, +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u32; 67usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { +pub gf_interface_aux: __u32, +pub gf_group_aux: __kernel_sockaddr_storage, +pub gf_fmode_aux: __u32, +pub gf_numsrc_aux: __u32, +pub gf_slist: [__kernel_sockaddr_storage; 1usize], +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { +pub gf_interface: __u32, +pub gf_group: __kernel_sockaddr_storage, +pub gf_fmode: __u32, +pub gf_numsrc: __u32, +pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_pktinfo { +pub ipi_ifindex: crate::ctypes::c_int, +pub ipi_spec_dst: in_addr, +pub ipi_addr: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_in { +pub sin_family: __kernel_sa_family_t, +pub sin_port: __be16, +pub sin_addr: in_addr, +pub __pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct iphdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub tos: __u8, +pub tot_len: __be16, +pub id: __be16, +pub frag_off: __be16, +pub ttl: __u8, +pub protocol: __u8, +pub check: __sum16, +pub __bindgen_anon_1: iphdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_auth_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub reserved: __be16, +pub spi: __be32, +pub seq_no: __be32, +pub auth_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_esp_hdr { +pub spi: __be32, +pub seq_no: __be32, +pub enc_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_comp_hdr { +pub nexthdr: __u8, +pub flags: __u8, +pub cpi: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_beet_phdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub padlen: __u8, +pub reserved: __u8, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_addr { +pub in6_u: in6_addr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr_in6 { +pub sin6_family: crate::ctypes::c_ushort, +pub sin6_port: __be16, +pub sin6_flowinfo: __be32, +pub sin6_addr: in6_addr, +pub sin6_scope_id: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6_mreq { +pub ipv6mr_multiaddr: in6_addr, +pub ipv6mr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_flowlabel_req { +pub flr_dst: in6_addr, +pub flr_label: __be32, +pub flr_action: __u8, +pub flr_share: __u8, +pub flr_flags: __u16, +pub flr_expires: __u16, +pub flr_linger: __u16, +pub __flr_pad: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_pktinfo { +pub ipi6_addr: in6_addr, +pub ipi6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ip6_mtuinfo { +pub ip6m_addr: sockaddr_in6, +pub ip6m_mtu: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_ifreq { +pub ifr6_addr: in6_addr, +pub ifr6_prefixlen: __u32, +pub ifr6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_rt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub type_: __u8, +pub segments_left: __u8, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_opt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +} +#[repr(C)] +pub struct rt0_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rt2_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: in6_addr, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct ipv6_destopt_hao { +pub type_: __u8, +pub length: __u8, +pub addr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub flow_lbl: [__u8; 3usize], +pub payload_len: __be16, +pub nexthdr: __u8, +pub hop_limit: __u8, +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcphdr { +pub source: __be16, +pub dest: __be16, +pub seq: __be32, +pub ack_seq: __be32, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub window: __be16, +pub check: __sum16, +pub urg_ptr: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_opt { +pub opt_code: __u32, +pub opt_val: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_window { +pub snd_wl1: __u32, +pub snd_wnd: __u32, +pub max_window: __u32, +pub rcv_wnd: __u32, +pub rcv_wup: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_info { +pub tcpi_state: __u8, +pub tcpi_ca_state: __u8, +pub tcpi_retransmits: __u8, +pub tcpi_probes: __u8, +pub tcpi_backoff: __u8, +pub tcpi_options: __u8, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub tcpi_rto: __u32, +pub tcpi_ato: __u32, +pub tcpi_snd_mss: __u32, +pub tcpi_rcv_mss: __u32, +pub tcpi_unacked: __u32, +pub tcpi_sacked: __u32, +pub tcpi_lost: __u32, +pub tcpi_retrans: __u32, +pub tcpi_fackets: __u32, +pub tcpi_last_data_sent: __u32, +pub tcpi_last_ack_sent: __u32, +pub tcpi_last_data_recv: __u32, +pub tcpi_last_ack_recv: __u32, +pub tcpi_pmtu: __u32, +pub tcpi_rcv_ssthresh: __u32, +pub tcpi_rtt: __u32, +pub tcpi_rttvar: __u32, +pub tcpi_snd_ssthresh: __u32, +pub tcpi_snd_cwnd: __u32, +pub tcpi_advmss: __u32, +pub tcpi_reordering: __u32, +pub tcpi_rcv_rtt: __u32, +pub tcpi_rcv_space: __u32, +pub tcpi_total_retrans: __u32, +pub tcpi_pacing_rate: __u64, +pub tcpi_max_pacing_rate: __u64, +pub tcpi_bytes_acked: __u64, +pub tcpi_bytes_received: __u64, +pub tcpi_segs_out: __u32, +pub tcpi_segs_in: __u32, +pub tcpi_notsent_bytes: __u32, +pub tcpi_min_rtt: __u32, +pub tcpi_data_segs_in: __u32, +pub tcpi_data_segs_out: __u32, +pub tcpi_delivery_rate: __u64, +pub tcpi_busy_time: __u64, +pub tcpi_rwnd_limited: __u64, +pub tcpi_sndbuf_limited: __u64, +pub tcpi_delivered: __u32, +pub tcpi_delivered_ce: __u32, +pub tcpi_bytes_sent: __u64, +pub tcpi_bytes_retrans: __u64, +pub tcpi_dsack_dups: __u32, +pub tcpi_reord_seen: __u32, +pub tcpi_rcv_ooopack: __u32, +pub tcpi_snd_wnd: __u32, +pub tcpi_rcv_wnd: __u32, +pub tcpi_rehash: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct tcp_md5sig { +pub tcpm_addr: __kernel_sockaddr_storage, +pub tcpm_flags: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_ifindex: crate::ctypes::c_int, +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_diag_md5sig { +pub tcpm_family: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_addr: [__be32; 4usize], +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_zerocopy_receive { +pub address: __u64, +pub length: __u32, +pub recv_skip_hint: __u32, +pub inq: __u32, +pub err: __s32, +pub copybuf_address: __u64, +pub copybuf_len: __s32, +pub flags: __u32, +pub msg_control: __u64, +pub msg_controllen: __u64, +pub msg_flags: __u32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_un { +pub sun_family: __kernel_sa_family_t, +pub sun_path: [crate::ctypes::c_char; 108usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr { +pub __storage: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct linger { +pub l_onoff: crate::ctypes::c_int, +pub l_linger: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct msghdr { +pub msg_name: *mut crate::ctypes::c_void, +pub msg_namelen: crate::ctypes::c_int, +pub msg_iov: *mut iovec, +pub msg_iovlen: usize, +pub msg_control: *mut crate::ctypes::c_void, +pub msg_controllen: usize, +pub msg_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct cmsghdr { +pub cmsg_len: usize, +pub cmsg_level: crate::ctypes::c_int, +pub cmsg_type: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ucred { +pub pid: __u32, +pub uid: __u32, +pub gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mmsghdr { +pub msg_hdr: msghdr, +pub msg_len: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub _address: u8, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const IP_TOS: u32 = 1; +pub const IP_TTL: u32 = 2; +pub const IP_HDRINCL: u32 = 3; +pub const IP_OPTIONS: u32 = 4; +pub const IP_ROUTER_ALERT: u32 = 5; +pub const IP_RECVOPTS: u32 = 6; +pub const IP_RETOPTS: u32 = 7; +pub const IP_PKTINFO: u32 = 8; +pub const IP_PKTOPTIONS: u32 = 9; +pub const IP_MTU_DISCOVER: u32 = 10; +pub const IP_RECVERR: u32 = 11; +pub const IP_RECVTTL: u32 = 12; +pub const IP_RECVTOS: u32 = 13; +pub const IP_MTU: u32 = 14; +pub const IP_FREEBIND: u32 = 15; +pub const IP_IPSEC_POLICY: u32 = 16; +pub const IP_XFRM_POLICY: u32 = 17; +pub const IP_PASSSEC: u32 = 18; +pub const IP_TRANSPARENT: u32 = 19; +pub const IP_RECVRETOPTS: u32 = 7; +pub const IP_ORIGDSTADDR: u32 = 20; +pub const IP_RECVORIGDSTADDR: u32 = 20; +pub const IP_MINTTL: u32 = 21; +pub const IP_NODEFRAG: u32 = 22; +pub const IP_CHECKSUM: u32 = 23; +pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; +pub const IP_RECVFRAGSIZE: u32 = 25; +pub const IP_RECVERR_RFC4884: u32 = 26; +pub const IP_PMTUDISC_DONT: u32 = 0; +pub const IP_PMTUDISC_WANT: u32 = 1; +pub const IP_PMTUDISC_DO: u32 = 2; +pub const IP_PMTUDISC_PROBE: u32 = 3; +pub const IP_PMTUDISC_INTERFACE: u32 = 4; +pub const IP_PMTUDISC_OMIT: u32 = 5; +pub const IP_MULTICAST_IF: u32 = 32; +pub const IP_MULTICAST_TTL: u32 = 33; +pub const IP_MULTICAST_LOOP: u32 = 34; +pub const IP_ADD_MEMBERSHIP: u32 = 35; +pub const IP_DROP_MEMBERSHIP: u32 = 36; +pub const IP_UNBLOCK_SOURCE: u32 = 37; +pub const IP_BLOCK_SOURCE: u32 = 38; +pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; +pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; +pub const IP_MSFILTER: u32 = 41; +pub const MCAST_JOIN_GROUP: u32 = 42; +pub const MCAST_BLOCK_SOURCE: u32 = 43; +pub const MCAST_UNBLOCK_SOURCE: u32 = 44; +pub const MCAST_LEAVE_GROUP: u32 = 45; +pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; +pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; +pub const MCAST_MSFILTER: u32 = 48; +pub const IP_MULTICAST_ALL: u32 = 49; +pub const IP_UNICAST_IF: u32 = 50; +pub const IP_LOCAL_PORT_RANGE: u32 = 51; +pub const MCAST_EXCLUDE: u32 = 0; +pub const MCAST_INCLUDE: u32 = 1; +pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; +pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; +pub const __SOCK_SIZE__: u32 = 16; +pub const IN_CLASSA_NET: u32 = 4278190080; +pub const IN_CLASSA_NSHIFT: u32 = 24; +pub const IN_CLASSA_HOST: u32 = 16777215; +pub const IN_CLASSA_MAX: u32 = 128; +pub const IN_CLASSB_NET: u32 = 4294901760; +pub const IN_CLASSB_NSHIFT: u32 = 16; +pub const IN_CLASSB_HOST: u32 = 65535; +pub const IN_CLASSB_MAX: u32 = 65536; +pub const IN_CLASSC_NET: u32 = 4294967040; +pub const IN_CLASSC_NSHIFT: u32 = 8; +pub const IN_CLASSC_HOST: u32 = 255; +pub const IN_MULTICAST_NET: u32 = 3758096384; +pub const IN_CLASSE_NET: u32 = 4294967295; +pub const IN_CLASSE_NSHIFT: u32 = 0; +pub const IN_LOOPBACKNET: u32 = 127; +pub const INADDR_LOOPBACK: u32 = 2130706433; +pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; +pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; +pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; +pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; +pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; +pub const __LITTLE_ENDIAN: u32 = 1234; +pub const IPTOS_TOS_MASK: u32 = 30; +pub const IPTOS_LOWDELAY: u32 = 16; +pub const IPTOS_THROUGHPUT: u32 = 8; +pub const IPTOS_RELIABILITY: u32 = 4; +pub const IPTOS_MINCOST: u32 = 2; +pub const IPTOS_PREC_MASK: u32 = 224; +pub const IPTOS_PREC_NETCONTROL: u32 = 224; +pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; +pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; +pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; +pub const IPTOS_PREC_FLASH: u32 = 96; +pub const IPTOS_PREC_IMMEDIATE: u32 = 64; +pub const IPTOS_PREC_PRIORITY: u32 = 32; +pub const IPTOS_PREC_ROUTINE: u32 = 0; +pub const IPOPT_COPY: u32 = 128; +pub const IPOPT_CLASS_MASK: u32 = 96; +pub const IPOPT_NUMBER_MASK: u32 = 31; +pub const IPOPT_CONTROL: u32 = 0; +pub const IPOPT_RESERVED1: u32 = 32; +pub const IPOPT_MEASUREMENT: u32 = 64; +pub const IPOPT_RESERVED2: u32 = 96; +pub const IPOPT_END: u32 = 0; +pub const IPOPT_NOOP: u32 = 1; +pub const IPOPT_SEC: u32 = 130; +pub const IPOPT_LSRR: u32 = 131; +pub const IPOPT_TIMESTAMP: u32 = 68; +pub const IPOPT_CIPSO: u32 = 134; +pub const IPOPT_RR: u32 = 7; +pub const IPOPT_SID: u32 = 136; +pub const IPOPT_SSRR: u32 = 137; +pub const IPOPT_RA: u32 = 148; +pub const IPVERSION: u32 = 4; +pub const MAXTTL: u32 = 255; +pub const IPDEFTTL: u32 = 64; +pub const IPOPT_OPTVAL: u32 = 0; +pub const IPOPT_OLEN: u32 = 1; +pub const IPOPT_OFFSET: u32 = 2; +pub const IPOPT_MINOFF: u32 = 4; +pub const MAX_IPOPTLEN: u32 = 40; +pub const IPOPT_NOP: u32 = 1; +pub const IPOPT_EOL: u32 = 0; +pub const IPOPT_TS: u32 = 68; +pub const IPOPT_TS_TSONLY: u32 = 0; +pub const IPOPT_TS_TSANDADDR: u32 = 1; +pub const IPOPT_TS_PRESPEC: u32 = 3; +pub const IPV4_BEET_PHMAXLEN: u32 = 8; +pub const IPV6_FL_A_GET: u32 = 0; +pub const IPV6_FL_A_PUT: u32 = 1; +pub const IPV6_FL_A_RENEW: u32 = 2; +pub const IPV6_FL_F_CREATE: u32 = 1; +pub const IPV6_FL_F_EXCL: u32 = 2; +pub const IPV6_FL_F_REFLECT: u32 = 4; +pub const IPV6_FL_F_REMOTE: u32 = 8; +pub const IPV6_FL_S_NONE: u32 = 0; +pub const IPV6_FL_S_EXCL: u32 = 1; +pub const IPV6_FL_S_PROCESS: u32 = 2; +pub const IPV6_FL_S_USER: u32 = 3; +pub const IPV6_FL_S_ANY: u32 = 255; +pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; +pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; +pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; +pub const IPV6_PRIORITY_FILLER: u32 = 256; +pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; +pub const IPV6_PRIORITY_RESERVED1: u32 = 768; +pub const IPV6_PRIORITY_BULK: u32 = 1024; +pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; +pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; +pub const IPV6_PRIORITY_CONTROL: u32 = 1792; +pub const IPV6_PRIORITY_8: u32 = 2048; +pub const IPV6_PRIORITY_9: u32 = 2304; +pub const IPV6_PRIORITY_10: u32 = 2560; +pub const IPV6_PRIORITY_11: u32 = 2816; +pub const IPV6_PRIORITY_12: u32 = 3072; +pub const IPV6_PRIORITY_13: u32 = 3328; +pub const IPV6_PRIORITY_14: u32 = 3584; +pub const IPV6_PRIORITY_15: u32 = 3840; +pub const IPPROTO_HOPOPTS: u32 = 0; +pub const IPPROTO_ROUTING: u32 = 43; +pub const IPPROTO_FRAGMENT: u32 = 44; +pub const IPPROTO_ICMPV6: u32 = 58; +pub const IPPROTO_NONE: u32 = 59; +pub const IPPROTO_DSTOPTS: u32 = 60; +pub const IPPROTO_MH: u32 = 135; +pub const IPV6_TLV_PAD1: u32 = 0; +pub const IPV6_TLV_PADN: u32 = 1; +pub const IPV6_TLV_ROUTERALERT: u32 = 5; +pub const IPV6_TLV_CALIPSO: u32 = 7; +pub const IPV6_TLV_IOAM: u32 = 49; +pub const IPV6_TLV_JUMBO: u32 = 194; +pub const IPV6_TLV_HAO: u32 = 201; +pub const IPV6_ADDRFORM: u32 = 1; +pub const IPV6_2292PKTINFO: u32 = 2; +pub const IPV6_2292HOPOPTS: u32 = 3; +pub const IPV6_2292DSTOPTS: u32 = 4; +pub const IPV6_2292RTHDR: u32 = 5; +pub const IPV6_2292PKTOPTIONS: u32 = 6; +pub const IPV6_CHECKSUM: u32 = 7; +pub const IPV6_2292HOPLIMIT: u32 = 8; +pub const IPV6_NEXTHOP: u32 = 9; +pub const IPV6_AUTHHDR: u32 = 10; +pub const IPV6_FLOWINFO: u32 = 11; +pub const IPV6_UNICAST_HOPS: u32 = 16; +pub const IPV6_MULTICAST_IF: u32 = 17; +pub const IPV6_MULTICAST_HOPS: u32 = 18; +pub const IPV6_MULTICAST_LOOP: u32 = 19; +pub const IPV6_ADD_MEMBERSHIP: u32 = 20; +pub const IPV6_DROP_MEMBERSHIP: u32 = 21; +pub const IPV6_ROUTER_ALERT: u32 = 22; +pub const IPV6_MTU_DISCOVER: u32 = 23; +pub const IPV6_MTU: u32 = 24; +pub const IPV6_RECVERR: u32 = 25; +pub const IPV6_V6ONLY: u32 = 26; +pub const IPV6_JOIN_ANYCAST: u32 = 27; +pub const IPV6_LEAVE_ANYCAST: u32 = 28; +pub const IPV6_MULTICAST_ALL: u32 = 29; +pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; +pub const IPV6_RECVERR_RFC4884: u32 = 31; +pub const IPV6_PMTUDISC_DONT: u32 = 0; +pub const IPV6_PMTUDISC_WANT: u32 = 1; +pub const IPV6_PMTUDISC_DO: u32 = 2; +pub const IPV6_PMTUDISC_PROBE: u32 = 3; +pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; +pub const IPV6_PMTUDISC_OMIT: u32 = 5; +pub const IPV6_FLOWLABEL_MGR: u32 = 32; +pub const IPV6_FLOWINFO_SEND: u32 = 33; +pub const IPV6_IPSEC_POLICY: u32 = 34; +pub const IPV6_XFRM_POLICY: u32 = 35; +pub const IPV6_HDRINCL: u32 = 36; +pub const IPV6_RECVPKTINFO: u32 = 49; +pub const IPV6_PKTINFO: u32 = 50; +pub const IPV6_RECVHOPLIMIT: u32 = 51; +pub const IPV6_HOPLIMIT: u32 = 52; +pub const IPV6_RECVHOPOPTS: u32 = 53; +pub const IPV6_HOPOPTS: u32 = 54; +pub const IPV6_RTHDRDSTOPTS: u32 = 55; +pub const IPV6_RECVRTHDR: u32 = 56; +pub const IPV6_RTHDR: u32 = 57; +pub const IPV6_RECVDSTOPTS: u32 = 58; +pub const IPV6_DSTOPTS: u32 = 59; +pub const IPV6_RECVPATHMTU: u32 = 60; +pub const IPV6_PATHMTU: u32 = 61; +pub const IPV6_DONTFRAG: u32 = 62; +pub const IPV6_RECVTCLASS: u32 = 66; +pub const IPV6_TCLASS: u32 = 67; +pub const IPV6_AUTOFLOWLABEL: u32 = 70; +pub const IPV6_ADDR_PREFERENCES: u32 = 72; +pub const IPV6_PREFER_SRC_TMP: u32 = 1; +pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; +pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; +pub const IPV6_PREFER_SRC_COA: u32 = 4; +pub const IPV6_PREFER_SRC_HOME: u32 = 1024; +pub const IPV6_PREFER_SRC_CGA: u32 = 8; +pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; +pub const IPV6_MINHOPCOUNT: u32 = 73; +pub const IPV6_ORIGDSTADDR: u32 = 74; +pub const IPV6_RECVORIGDSTADDR: u32 = 74; +pub const IPV6_TRANSPARENT: u32 = 75; +pub const IPV6_UNICAST_IF: u32 = 76; +pub const IPV6_RECVFRAGSIZE: u32 = 77; +pub const IPV6_FREEBIND: u32 = 78; +pub const IPV6_MIN_MTU: u32 = 1280; +pub const IPV6_SRCRT_STRICT: u32 = 1; +pub const IPV6_SRCRT_TYPE_0: u32 = 0; +pub const IPV6_SRCRT_TYPE_2: u32 = 2; +pub const IPV6_SRCRT_TYPE_3: u32 = 3; +pub const IPV6_SRCRT_TYPE_4: u32 = 4; +pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; +pub const SIOCGSTAMP_OLD: u32 = 35078; +pub const SIOCGSTAMPNS_OLD: u32 = 35079; +pub const SOL_SOCKET: u32 = 1; +pub const SO_DEBUG: u32 = 1; +pub const SO_REUSEADDR: u32 = 2; +pub const SO_TYPE: u32 = 3; +pub const SO_ERROR: u32 = 4; +pub const SO_DONTROUTE: u32 = 5; +pub const SO_BROADCAST: u32 = 6; +pub const SO_SNDBUF: u32 = 7; +pub const SO_RCVBUF: u32 = 8; +pub const SO_SNDBUFFORCE: u32 = 32; +pub const SO_RCVBUFFORCE: u32 = 33; +pub const SO_KEEPALIVE: u32 = 9; +pub const SO_OOBINLINE: u32 = 10; +pub const SO_NO_CHECK: u32 = 11; +pub const SO_PRIORITY: u32 = 12; +pub const SO_LINGER: u32 = 13; +pub const SO_BSDCOMPAT: u32 = 14; +pub const SO_REUSEPORT: u32 = 15; +pub const SO_PASSCRED: u32 = 16; +pub const SO_PEERCRED: u32 = 17; +pub const SO_RCVLOWAT: u32 = 18; +pub const SO_SNDLOWAT: u32 = 19; +pub const SO_RCVTIMEO_OLD: u32 = 20; +pub const SO_SNDTIMEO_OLD: u32 = 21; +pub const SO_SECURITY_AUTHENTICATION: u32 = 22; +pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; +pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; +pub const SO_BINDTODEVICE: u32 = 25; +pub const SO_ATTACH_FILTER: u32 = 26; +pub const SO_DETACH_FILTER: u32 = 27; +pub const SO_GET_FILTER: u32 = 26; +pub const SO_PEERNAME: u32 = 28; +pub const SO_ACCEPTCONN: u32 = 30; +pub const SO_PEERSEC: u32 = 31; +pub const SO_PASSSEC: u32 = 34; +pub const SO_MARK: u32 = 36; +pub const SO_PROTOCOL: u32 = 38; +pub const SO_DOMAIN: u32 = 39; +pub const SO_RXQ_OVFL: u32 = 40; +pub const SO_WIFI_STATUS: u32 = 41; +pub const SCM_WIFI_STATUS: u32 = 41; +pub const SO_PEEK_OFF: u32 = 42; +pub const SO_NOFCS: u32 = 43; +pub const SO_LOCK_FILTER: u32 = 44; +pub const SO_SELECT_ERR_QUEUE: u32 = 45; +pub const SO_BUSY_POLL: u32 = 46; +pub const SO_MAX_PACING_RATE: u32 = 47; +pub const SO_BPF_EXTENSIONS: u32 = 48; +pub const SO_INCOMING_CPU: u32 = 49; +pub const SO_ATTACH_BPF: u32 = 50; +pub const SO_DETACH_BPF: u32 = 27; +pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; +pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; +pub const SO_CNX_ADVICE: u32 = 53; +pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; +pub const SO_MEMINFO: u32 = 55; +pub const SO_INCOMING_NAPI_ID: u32 = 56; +pub const SO_COOKIE: u32 = 57; +pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; +pub const SO_PEERGROUPS: u32 = 59; +pub const SO_ZEROCOPY: u32 = 60; +pub const SO_TXTIME: u32 = 61; +pub const SCM_TXTIME: u32 = 61; +pub const SO_BINDTOIFINDEX: u32 = 62; +pub const SO_TIMESTAMP_OLD: u32 = 29; +pub const SO_TIMESTAMPNS_OLD: u32 = 35; +pub const SO_TIMESTAMPING_OLD: u32 = 37; +pub const SO_TIMESTAMP_NEW: u32 = 63; +pub const SO_TIMESTAMPNS_NEW: u32 = 64; +pub const SO_TIMESTAMPING_NEW: u32 = 65; +pub const SO_RCVTIMEO_NEW: u32 = 66; +pub const SO_SNDTIMEO_NEW: u32 = 67; +pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; +pub const SO_PREFER_BUSY_POLL: u32 = 69; +pub const SO_BUSY_POLL_BUDGET: u32 = 70; +pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; +pub const SO_TXREHASH: u32 = 74; +pub const SO_RCVMARK: u32 = 75; +pub const SO_TIMESTAMP: u32 = 29; +pub const SO_TIMESTAMPNS: u32 = 35; +pub const SO_TIMESTAMPING: u32 = 37; +pub const SO_RCVTIMEO: u32 = 20; +pub const SO_SNDTIMEO: u32 = 21; +pub const SCM_TIMESTAMP: u32 = 29; +pub const SCM_TIMESTAMPNS: u32 = 35; +pub const SCM_TIMESTAMPING: u32 = 37; +pub const SYS_SOCKET: u32 = 1; +pub const SYS_BIND: u32 = 2; +pub const SYS_CONNECT: u32 = 3; +pub const SYS_LISTEN: u32 = 4; +pub const SYS_ACCEPT: u32 = 5; +pub const SYS_GETSOCKNAME: u32 = 6; +pub const SYS_GETPEERNAME: u32 = 7; +pub const SYS_SOCKETPAIR: u32 = 8; +pub const SYS_SEND: u32 = 9; +pub const SYS_RECV: u32 = 10; +pub const SYS_SENDTO: u32 = 11; +pub const SYS_RECVFROM: u32 = 12; +pub const SYS_SHUTDOWN: u32 = 13; +pub const SYS_SETSOCKOPT: u32 = 14; +pub const SYS_GETSOCKOPT: u32 = 15; +pub const SYS_SENDMSG: u32 = 16; +pub const SYS_RECVMSG: u32 = 17; +pub const SYS_ACCEPT4: u32 = 18; +pub const SYS_RECVMMSG: u32 = 19; +pub const SYS_SENDMMSG: u32 = 20; +pub const __SO_ACCEPTCON: u32 = 65536; +pub const TCP_MSS_DEFAULT: u32 = 536; +pub const TCP_MSS_DESIRED: u32 = 1220; +pub const TCP_NODELAY: u32 = 1; +pub const TCP_MAXSEG: u32 = 2; +pub const TCP_CORK: u32 = 3; +pub const TCP_KEEPIDLE: u32 = 4; +pub const TCP_KEEPINTVL: u32 = 5; +pub const TCP_KEEPCNT: u32 = 6; +pub const TCP_SYNCNT: u32 = 7; +pub const TCP_LINGER2: u32 = 8; +pub const TCP_DEFER_ACCEPT: u32 = 9; +pub const TCP_WINDOW_CLAMP: u32 = 10; +pub const TCP_INFO: u32 = 11; +pub const TCP_QUICKACK: u32 = 12; +pub const TCP_CONGESTION: u32 = 13; +pub const TCP_MD5SIG: u32 = 14; +pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; +pub const TCP_THIN_DUPACK: u32 = 17; +pub const TCP_USER_TIMEOUT: u32 = 18; +pub const TCP_REPAIR: u32 = 19; +pub const TCP_REPAIR_QUEUE: u32 = 20; +pub const TCP_QUEUE_SEQ: u32 = 21; +pub const TCP_REPAIR_OPTIONS: u32 = 22; +pub const TCP_FASTOPEN: u32 = 23; +pub const TCP_TIMESTAMP: u32 = 24; +pub const TCP_NOTSENT_LOWAT: u32 = 25; +pub const TCP_CC_INFO: u32 = 26; +pub const TCP_SAVE_SYN: u32 = 27; +pub const TCP_SAVED_SYN: u32 = 28; +pub const TCP_REPAIR_WINDOW: u32 = 29; +pub const TCP_FASTOPEN_CONNECT: u32 = 30; +pub const TCP_ULP: u32 = 31; +pub const TCP_MD5SIG_EXT: u32 = 32; +pub const TCP_FASTOPEN_KEY: u32 = 33; +pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; +pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; +pub const TCP_INQ: u32 = 36; +pub const TCP_CM_INQ: u32 = 36; +pub const TCP_TX_DELAY: u32 = 37; +pub const TCP_REPAIR_ON: u32 = 1; +pub const TCP_REPAIR_OFF: u32 = 0; +pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; +pub const TCPI_OPT_TIMESTAMPS: u32 = 1; +pub const TCPI_OPT_SACK: u32 = 2; +pub const TCPI_OPT_WSCALE: u32 = 4; +pub const TCPI_OPT_ECN: u32 = 8; +pub const TCPI_OPT_ECN_SEEN: u32 = 16; +pub const TCPI_OPT_SYN_DATA: u32 = 32; +pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; +pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; +pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; +pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; +pub const UNIX_PATH_MAX: u32 = 108; +pub const SHUT_RD: u32 = 0; +pub const SHUT_WR: u32 = 1; +pub const SHUT_RDWR: u32 = 2; +pub const SOCK_STREAM: u32 = 1; +pub const SOCK_DGRAM: u32 = 2; +pub const SOCK_RAW: u32 = 3; +pub const SOCK_RDM: u32 = 4; +pub const SOCK_SEQPACKET: u32 = 5; +pub const MSG_DONTWAIT: u32 = 64; +pub const AF_UNSPEC: u32 = 0; +pub const AF_UNIX: u32 = 1; +pub const AF_INET: u32 = 2; +pub const AF_AX25: u32 = 3; +pub const AF_IPX: u32 = 4; +pub const AF_APPLETALK: u32 = 5; +pub const AF_NETROM: u32 = 6; +pub const AF_BRIDGE: u32 = 7; +pub const AF_ATMPVC: u32 = 8; +pub const AF_X25: u32 = 9; +pub const AF_INET6: u32 = 10; +pub const AF_ROSE: u32 = 11; +pub const AF_DECnet: u32 = 12; +pub const AF_NETBEUI: u32 = 13; +pub const AF_SECURITY: u32 = 14; +pub const AF_KEY: u32 = 15; +pub const AF_NETLINK: u32 = 16; +pub const AF_PACKET: u32 = 17; +pub const AF_ASH: u32 = 18; +pub const AF_ECONET: u32 = 19; +pub const AF_ATMSVC: u32 = 20; +pub const AF_RDS: u32 = 21; +pub const AF_SNA: u32 = 22; +pub const AF_IRDA: u32 = 23; +pub const AF_PPPOX: u32 = 24; +pub const AF_WANPIPE: u32 = 25; +pub const AF_LLC: u32 = 26; +pub const AF_CAN: u32 = 29; +pub const AF_TIPC: u32 = 30; +pub const AF_BLUETOOTH: u32 = 31; +pub const AF_IUCV: u32 = 32; +pub const AF_RXRPC: u32 = 33; +pub const AF_ISDN: u32 = 34; +pub const AF_PHONET: u32 = 35; +pub const AF_IEEE802154: u32 = 36; +pub const AF_MAX: u32 = 37; +pub const MSG_OOB: u32 = 1; +pub const MSG_PEEK: u32 = 2; +pub const MSG_DONTROUTE: u32 = 4; +pub const MSG_CTRUNC: u32 = 8; +pub const MSG_PROBE: u32 = 16; +pub const MSG_TRUNC: u32 = 32; +pub const MSG_EOR: u32 = 128; +pub const MSG_WAITALL: u32 = 256; +pub const MSG_FIN: u32 = 512; +pub const MSG_SYN: u32 = 1024; +pub const MSG_CONFIRM: u32 = 2048; +pub const MSG_RST: u32 = 4096; +pub const MSG_ERRQUEUE: u32 = 8192; +pub const MSG_NOSIGNAL: u32 = 16384; +pub const MSG_MORE: u32 = 32768; +pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; +pub const SCM_RIGHTS: u32 = 1; +pub const SCM_CREDENTIALS: u32 = 2; +pub const SCM_SECURITY: u32 = 3; +pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; +pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; +pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; +pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; +pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; +pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; +pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; +pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; +pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; +pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; +pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; +pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; +pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; +pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; +pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; +pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; +pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; +pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; +pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; +pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; +pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; +pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; +pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; +pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; +pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; +pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; +pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; +pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; +pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; +pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; +pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; +pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; +pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; +pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; +pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; +pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; +pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; +pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; +pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; +pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; +pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; +pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; +pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; +pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; +pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; +pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; +pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; +pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; +pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; +pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; +pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; +pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; +pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; +pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; +pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; +pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; +pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; +pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; +pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; +pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; +pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; +pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; +pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; +pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; +pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; +pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; +pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; +pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; +pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; +pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; +pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; +pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; +pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; +pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; +pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; +pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; +pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; +pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; +pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; +pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; +pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; +pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; +pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; +pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; +pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; +pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; +pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; +pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; +pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; +pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; +pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; +pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; +pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; +pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; +pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; +pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; +pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; +pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; +pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; +pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; +pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; +pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; +pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; +pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; +pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; +pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; +pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; +pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; +pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; +pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; +pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; +pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; +pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; +pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; +pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; +pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; +pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; +pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; +pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; +pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; +pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; +pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; +pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; +pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; +pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; +pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; +pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; +pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; +pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; +pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; +pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; +pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; +pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; +pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; +pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; +pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; +pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; +pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; +pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; +pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; +pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; +pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; +pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; +pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; +pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; +pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; +pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; +pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; +pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; +pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; +pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; +pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IPPROTO_IP = 0, +IPPROTO_ICMP = 1, +IPPROTO_IGMP = 2, +IPPROTO_IPIP = 4, +IPPROTO_TCP = 6, +IPPROTO_EGP = 8, +IPPROTO_PUP = 12, +IPPROTO_UDP = 17, +IPPROTO_IDP = 22, +IPPROTO_TP = 29, +IPPROTO_DCCP = 33, +IPPROTO_IPV6 = 41, +IPPROTO_RSVP = 46, +IPPROTO_GRE = 47, +IPPROTO_ESP = 50, +IPPROTO_AH = 51, +IPPROTO_MTP = 92, +IPPROTO_BEETPH = 94, +IPPROTO_ENCAP = 98, +IPPROTO_PIM = 103, +IPPROTO_COMP = 108, +IPPROTO_L2TP = 115, +IPPROTO_SCTP = 132, +IPPROTO_UDPLITE = 136, +IPPROTO_MPLS = 137, +IPPROTO_ETHERNET = 143, +IPPROTO_RAW = 255, +IPPROTO_MPTCP = 262, +IPPROTO_MAX = 263, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IPV4_DEVCONF_FORWARDING = 1, +IPV4_DEVCONF_MC_FORWARDING = 2, +IPV4_DEVCONF_PROXY_ARP = 3, +IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, +IPV4_DEVCONF_SECURE_REDIRECTS = 5, +IPV4_DEVCONF_SEND_REDIRECTS = 6, +IPV4_DEVCONF_SHARED_MEDIA = 7, +IPV4_DEVCONF_RP_FILTER = 8, +IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, +IPV4_DEVCONF_BOOTP_RELAY = 10, +IPV4_DEVCONF_LOG_MARTIANS = 11, +IPV4_DEVCONF_TAG = 12, +IPV4_DEVCONF_ARPFILTER = 13, +IPV4_DEVCONF_MEDIUM_ID = 14, +IPV4_DEVCONF_NOXFRM = 15, +IPV4_DEVCONF_NOPOLICY = 16, +IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, +IPV4_DEVCONF_ARP_ANNOUNCE = 18, +IPV4_DEVCONF_ARP_IGNORE = 19, +IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, +IPV4_DEVCONF_ARP_ACCEPT = 21, +IPV4_DEVCONF_ARP_NOTIFY = 22, +IPV4_DEVCONF_ACCEPT_LOCAL = 23, +IPV4_DEVCONF_SRC_VMARK = 24, +IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, +IPV4_DEVCONF_ROUTE_LOCALNET = 26, +IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, +IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, +IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, +IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, +IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, +IPV4_DEVCONF_BC_FORWARDING = 32, +IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, +__IPV4_DEVCONF_MAX = 34, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +DEVCONF_FORWARDING = 0, +DEVCONF_HOPLIMIT = 1, +DEVCONF_MTU6 = 2, +DEVCONF_ACCEPT_RA = 3, +DEVCONF_ACCEPT_REDIRECTS = 4, +DEVCONF_AUTOCONF = 5, +DEVCONF_DAD_TRANSMITS = 6, +DEVCONF_RTR_SOLICITS = 7, +DEVCONF_RTR_SOLICIT_INTERVAL = 8, +DEVCONF_RTR_SOLICIT_DELAY = 9, +DEVCONF_USE_TEMPADDR = 10, +DEVCONF_TEMP_VALID_LFT = 11, +DEVCONF_TEMP_PREFERED_LFT = 12, +DEVCONF_REGEN_MAX_RETRY = 13, +DEVCONF_MAX_DESYNC_FACTOR = 14, +DEVCONF_MAX_ADDRESSES = 15, +DEVCONF_FORCE_MLD_VERSION = 16, +DEVCONF_ACCEPT_RA_DEFRTR = 17, +DEVCONF_ACCEPT_RA_PINFO = 18, +DEVCONF_ACCEPT_RA_RTR_PREF = 19, +DEVCONF_RTR_PROBE_INTERVAL = 20, +DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, +DEVCONF_PROXY_NDP = 22, +DEVCONF_OPTIMISTIC_DAD = 23, +DEVCONF_ACCEPT_SOURCE_ROUTE = 24, +DEVCONF_MC_FORWARDING = 25, +DEVCONF_DISABLE_IPV6 = 26, +DEVCONF_ACCEPT_DAD = 27, +DEVCONF_FORCE_TLLAO = 28, +DEVCONF_NDISC_NOTIFY = 29, +DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, +DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, +DEVCONF_SUPPRESS_FRAG_NDISC = 32, +DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, +DEVCONF_USE_OPTIMISTIC = 34, +DEVCONF_ACCEPT_RA_MTU = 35, +DEVCONF_STABLE_SECRET = 36, +DEVCONF_USE_OIF_ADDRS_ONLY = 37, +DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, +DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, +DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, +DEVCONF_DROP_UNSOLICITED_NA = 41, +DEVCONF_KEEP_ADDR_ON_DOWN = 42, +DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, +DEVCONF_SEG6_ENABLED = 44, +DEVCONF_SEG6_REQUIRE_HMAC = 45, +DEVCONF_ENHANCED_DAD = 46, +DEVCONF_ADDR_GEN_MODE = 47, +DEVCONF_DISABLE_POLICY = 48, +DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, +DEVCONF_NDISC_TCLASS = 50, +DEVCONF_RPL_SEG_ENABLED = 51, +DEVCONF_RA_DEFRTR_METRIC = 52, +DEVCONF_IOAM6_ENABLED = 53, +DEVCONF_IOAM6_ID = 54, +DEVCONF_IOAM6_ID_WIDE = 55, +DEVCONF_NDISC_EVICT_NOCARRIER = 56, +DEVCONF_ACCEPT_UNTRACKED_NA = 57, +DEVCONF_MAX = 58, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum socket_state { +SS_FREE = 0, +SS_UNCONNECTED = 1, +SS_CONNECTING = 2, +SS_CONNECTED = 3, +SS_DISCONNECTING = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +TCP_FLAG_CWR = 32768, +TCP_FLAG_ECE = 16384, +TCP_FLAG_URG = 8192, +TCP_FLAG_ACK = 4096, +TCP_FLAG_PSH = 2048, +TCP_FLAG_RST = 1024, +TCP_FLAG_SYN = 512, +TCP_FLAG_FIN = 256, +TCP_RESERVED_BITS = 15, +TCP_DATA_OFFSET = 240, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +TCP_NO_QUEUE = 0, +TCP_RECV_QUEUE = 1, +TCP_SEND_QUEUE = 2, +TCP_QUEUES_NR = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_fastopen_client_fail { +TFO_STATUS_UNSPEC = 0, +TFO_COOKIE_UNAVAILABLE = 1, +TFO_DATA_NOT_ACKED = 2, +TFO_SYN_RETRANSMITTED = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_ca_state { +TCP_CA_Open = 0, +TCP_CA_Disorder = 1, +TCP_CA_CWR = 2, +TCP_CA_Recovery = 3, +TCP_CA_Loss = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +TCP_NLA_PAD = 0, +TCP_NLA_BUSY = 1, +TCP_NLA_RWND_LIMITED = 2, +TCP_NLA_SNDBUF_LIMITED = 3, +TCP_NLA_DATA_SEGS_OUT = 4, +TCP_NLA_TOTAL_RETRANS = 5, +TCP_NLA_PACING_RATE = 6, +TCP_NLA_DELIVERY_RATE = 7, +TCP_NLA_SND_CWND = 8, +TCP_NLA_REORDERING = 9, +TCP_NLA_MIN_RTT = 10, +TCP_NLA_RECUR_RETRANS = 11, +TCP_NLA_DELIVERY_RATE_APP_LMT = 12, +TCP_NLA_SNDQ_SIZE = 13, +TCP_NLA_CA_STATE = 14, +TCP_NLA_SND_SSTHRESH = 15, +TCP_NLA_DELIVERED = 16, +TCP_NLA_DELIVERED_CE = 17, +TCP_NLA_BYTES_SENT = 18, +TCP_NLA_BYTES_RETRANS = 19, +TCP_NLA_DSACK_DUPS = 20, +TCP_NLA_REORD_SEEN = 21, +TCP_NLA_SRTT = 22, +TCP_NLA_TIMEOUT_REHASH = 23, +TCP_NLA_BYTES_NOTSENT = 24, +TCP_NLA_EDT = 25, +TCP_NLA_TTL = 26, +TCP_NLA_REHASH = 27, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union iphdr__bindgen_ty_1 { +pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union in6_addr__bindgen_ty_1 { +pub u6_addr8: [__u8; 16usize], +pub u6_addr16: [__be16; 8usize], +pub u6_addr32: [__be32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ipv6hdr__bindgen_ty_1 { +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union tcp_word_hdr { +pub hdr: tcphdr, +pub words: [__be32; 5usize], +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} +impl iphdr { +#[inline] +pub fn ihl(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_ihl(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; +ihl as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit +} +} +impl ipv6hdr { +#[inline] +pub fn priority(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_priority(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let priority: u8 = unsafe { ::core::mem::transmute(priority) }; +priority as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcphdr { +#[inline] +pub fn res1(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } +} +#[inline] +pub fn set_res1(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn doff(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } +} +#[inline] +pub fn set_doff(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn fin(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } +} +#[inline] +pub fn set_fin(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn syn(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } +} +#[inline] +pub fn set_syn(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 1u8, val as u64) +} +} +#[inline] +pub fn rst(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } +} +#[inline] +pub fn set_rst(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(10usize, 1u8, val as u64) +} +} +#[inline] +pub fn psh(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } +} +#[inline] +pub fn set_psh(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(11usize, 1u8, val as u64) +} +} +#[inline] +pub fn ack(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } +} +#[inline] +pub fn set_ack(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(12usize, 1u8, val as u64) +} +} +#[inline] +pub fn urg(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } +} +#[inline] +pub fn set_urg(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(13usize, 1u8, val as u64) +} +} +#[inline] +pub fn ece(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } +} +#[inline] +pub fn set_ece(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(14usize, 1u8, val as u64) +} +} +#[inline] +pub fn cwr(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +} +#[inline] +pub fn set_cwr(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(15usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let res1: u16 = unsafe { ::core::mem::transmute(res1) }; +res1 as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let doff: u16 = unsafe { ::core::mem::transmute(doff) }; +doff as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let fin: u16 = unsafe { ::core::mem::transmute(fin) }; +fin as u64 +}); +__bindgen_bitfield_unit.set(9usize, 1u8, { +let syn: u16 = unsafe { ::core::mem::transmute(syn) }; +syn as u64 +}); +__bindgen_bitfield_unit.set(10usize, 1u8, { +let rst: u16 = unsafe { ::core::mem::transmute(rst) }; +rst as u64 +}); +__bindgen_bitfield_unit.set(11usize, 1u8, { +let psh: u16 = unsafe { ::core::mem::transmute(psh) }; +psh as u64 +}); +__bindgen_bitfield_unit.set(12usize, 1u8, { +let ack: u16 = unsafe { ::core::mem::transmute(ack) }; +ack as u64 +}); +__bindgen_bitfield_unit.set(13usize, 1u8, { +let urg: u16 = unsafe { ::core::mem::transmute(urg) }; +urg as u64 +}); +__bindgen_bitfield_unit.set(14usize, 1u8, { +let ece: u16 = unsafe { ::core::mem::transmute(ece) }; +ece as u64 +}); +__bindgen_bitfield_unit.set(15usize, 1u8, { +let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; +cwr as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcp_info { +#[inline] +pub fn tcpi_snd_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_rcv_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +} +#[inline] +pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn tcpi_fastopen_client_fail(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +} +#[inline] +pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 2u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; +tcpi_snd_wscale as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; +tcpi_rcv_wscale as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; +tcpi_delivery_rate_app_limited as u64 +}); +__bindgen_bitfield_unit.set(9usize, 2u8, { +let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; +tcpi_fastopen_client_fail as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x32/prctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x32/prctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x32/prctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x32/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,221 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_longlong; +pub type __kernel_ulong_t = crate::ctypes::c_ulonglong; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prctl_mm_map { +pub start_code: __u64, +pub end_code: __u64, +pub start_data: __u64, +pub end_data: __u64, +pub start_brk: __u64, +pub brk: __u64, +pub start_stack: __u64, +pub arg_start: __u64, +pub arg_end: __u64, +pub env_start: __u64, +pub env_end: __u64, +pub auxv: *mut __u64, +pub auxv_size: __u32, +pub exe_fd: __u32, +} +pub const PR_SET_PDEATHSIG: u32 = 1; +pub const PR_GET_PDEATHSIG: u32 = 2; +pub const PR_GET_DUMPABLE: u32 = 3; +pub const PR_SET_DUMPABLE: u32 = 4; +pub const PR_GET_UNALIGN: u32 = 5; +pub const PR_SET_UNALIGN: u32 = 6; +pub const PR_UNALIGN_NOPRINT: u32 = 1; +pub const PR_UNALIGN_SIGBUS: u32 = 2; +pub const PR_GET_KEEPCAPS: u32 = 7; +pub const PR_SET_KEEPCAPS: u32 = 8; +pub const PR_GET_FPEMU: u32 = 9; +pub const PR_SET_FPEMU: u32 = 10; +pub const PR_FPEMU_NOPRINT: u32 = 1; +pub const PR_FPEMU_SIGFPE: u32 = 2; +pub const PR_GET_FPEXC: u32 = 11; +pub const PR_SET_FPEXC: u32 = 12; +pub const PR_FP_EXC_SW_ENABLE: u32 = 128; +pub const PR_FP_EXC_DIV: u32 = 65536; +pub const PR_FP_EXC_OVF: u32 = 131072; +pub const PR_FP_EXC_UND: u32 = 262144; +pub const PR_FP_EXC_RES: u32 = 524288; +pub const PR_FP_EXC_INV: u32 = 1048576; +pub const PR_FP_EXC_DISABLED: u32 = 0; +pub const PR_FP_EXC_NONRECOV: u32 = 1; +pub const PR_FP_EXC_ASYNC: u32 = 2; +pub const PR_FP_EXC_PRECISE: u32 = 3; +pub const PR_GET_TIMING: u32 = 13; +pub const PR_SET_TIMING: u32 = 14; +pub const PR_TIMING_STATISTICAL: u32 = 0; +pub const PR_TIMING_TIMESTAMP: u32 = 1; +pub const PR_SET_NAME: u32 = 15; +pub const PR_GET_NAME: u32 = 16; +pub const PR_GET_ENDIAN: u32 = 19; +pub const PR_SET_ENDIAN: u32 = 20; +pub const PR_ENDIAN_BIG: u32 = 0; +pub const PR_ENDIAN_LITTLE: u32 = 1; +pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; +pub const PR_GET_SECCOMP: u32 = 21; +pub const PR_SET_SECCOMP: u32 = 22; +pub const PR_CAPBSET_READ: u32 = 23; +pub const PR_CAPBSET_DROP: u32 = 24; +pub const PR_GET_TSC: u32 = 25; +pub const PR_SET_TSC: u32 = 26; +pub const PR_TSC_ENABLE: u32 = 1; +pub const PR_TSC_SIGSEGV: u32 = 2; +pub const PR_GET_SECUREBITS: u32 = 27; +pub const PR_SET_SECUREBITS: u32 = 28; +pub const PR_SET_TIMERSLACK: u32 = 29; +pub const PR_GET_TIMERSLACK: u32 = 30; +pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; +pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; +pub const PR_MCE_KILL: u32 = 33; +pub const PR_MCE_KILL_CLEAR: u32 = 0; +pub const PR_MCE_KILL_SET: u32 = 1; +pub const PR_MCE_KILL_LATE: u32 = 0; +pub const PR_MCE_KILL_EARLY: u32 = 1; +pub const PR_MCE_KILL_DEFAULT: u32 = 2; +pub const PR_MCE_KILL_GET: u32 = 34; +pub const PR_SET_MM: u32 = 35; +pub const PR_SET_MM_START_CODE: u32 = 1; +pub const PR_SET_MM_END_CODE: u32 = 2; +pub const PR_SET_MM_START_DATA: u32 = 3; +pub const PR_SET_MM_END_DATA: u32 = 4; +pub const PR_SET_MM_START_STACK: u32 = 5; +pub const PR_SET_MM_START_BRK: u32 = 6; +pub const PR_SET_MM_BRK: u32 = 7; +pub const PR_SET_MM_ARG_START: u32 = 8; +pub const PR_SET_MM_ARG_END: u32 = 9; +pub const PR_SET_MM_ENV_START: u32 = 10; +pub const PR_SET_MM_ENV_END: u32 = 11; +pub const PR_SET_MM_AUXV: u32 = 12; +pub const PR_SET_MM_EXE_FILE: u32 = 13; +pub const PR_SET_MM_MAP: u32 = 14; +pub const PR_SET_MM_MAP_SIZE: u32 = 15; +pub const PR_SET_PTRACER: u32 = 1499557217; +pub const PR_SET_CHILD_SUBREAPER: u32 = 36; +pub const PR_GET_CHILD_SUBREAPER: u32 = 37; +pub const PR_SET_NO_NEW_PRIVS: u32 = 38; +pub const PR_GET_NO_NEW_PRIVS: u32 = 39; +pub const PR_GET_TID_ADDRESS: u32 = 40; +pub const PR_SET_THP_DISABLE: u32 = 41; +pub const PR_GET_THP_DISABLE: u32 = 42; +pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; +pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; +pub const PR_SET_FP_MODE: u32 = 45; +pub const PR_GET_FP_MODE: u32 = 46; +pub const PR_FP_MODE_FR: u32 = 1; +pub const PR_FP_MODE_FRE: u32 = 2; +pub const PR_CAP_AMBIENT: u32 = 47; +pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; +pub const PR_CAP_AMBIENT_RAISE: u32 = 2; +pub const PR_CAP_AMBIENT_LOWER: u32 = 3; +pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; +pub const PR_SVE_SET_VL: u32 = 50; +pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SVE_GET_VL: u32 = 51; +pub const PR_SVE_VL_LEN_MASK: u32 = 65535; +pub const PR_SVE_VL_INHERIT: u32 = 131072; +pub const PR_GET_SPECULATION_CTRL: u32 = 52; +pub const PR_SET_SPECULATION_CTRL: u32 = 53; +pub const PR_SPEC_STORE_BYPASS: u32 = 0; +pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; +pub const PR_SPEC_L1D_FLUSH: u32 = 2; +pub const PR_SPEC_NOT_AFFECTED: u32 = 0; +pub const PR_SPEC_PRCTL: u32 = 1; +pub const PR_SPEC_ENABLE: u32 = 2; +pub const PR_SPEC_DISABLE: u32 = 4; +pub const PR_SPEC_FORCE_DISABLE: u32 = 8; +pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; +pub const PR_PAC_RESET_KEYS: u32 = 54; +pub const PR_PAC_APIAKEY: u32 = 1; +pub const PR_PAC_APIBKEY: u32 = 2; +pub const PR_PAC_APDAKEY: u32 = 4; +pub const PR_PAC_APDBKEY: u32 = 8; +pub const PR_PAC_APGAKEY: u32 = 16; +pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; +pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; +pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; +pub const PR_MTE_TCF_NONE: u32 = 0; +pub const PR_MTE_TCF_SYNC: u32 = 2; +pub const PR_MTE_TCF_ASYNC: u32 = 4; +pub const PR_MTE_TCF_MASK: u32 = 6; +pub const PR_MTE_TAG_SHIFT: u32 = 3; +pub const PR_MTE_TAG_MASK: u32 = 524280; +pub const PR_MTE_TCF_SHIFT: u32 = 1; +pub const PR_SET_IO_FLUSHER: u32 = 57; +pub const PR_GET_IO_FLUSHER: u32 = 58; +pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; +pub const PR_SYS_DISPATCH_OFF: u32 = 0; +pub const PR_SYS_DISPATCH_ON: u32 = 1; +pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; +pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; +pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; +pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; +pub const PR_SCHED_CORE: u32 = 62; +pub const PR_SCHED_CORE_GET: u32 = 0; +pub const PR_SCHED_CORE_CREATE: u32 = 1; +pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; +pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; +pub const PR_SCHED_CORE_MAX: u32 = 4; +pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; +pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; +pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; +pub const PR_SME_SET_VL: u32 = 63; +pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SME_GET_VL: u32 = 64; +pub const PR_SME_VL_LEN_MASK: u32 = 65535; +pub const PR_SME_VL_INHERIT: u32 = 131072; +pub const PR_SET_MDWE: u32 = 65; +pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; +pub const PR_GET_MDWE: u32 = 66; +pub const PR_SET_VMA: u32 = 1398164801; +pub const PR_SET_VMA_ANON_NAME: u32 = 0; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x32/system.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x32/system.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x32/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x32/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,129 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_long_t = crate::ctypes::c_longlong; +pub type __kernel_ulong_t = crate::ctypes::c_ulonglong; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +#[derive(Debug)] +pub struct sysinfo { +pub uptime: __kernel_long_t, +pub loads: [__kernel_ulong_t; 3usize], +pub totalram: __kernel_ulong_t, +pub freeram: __kernel_ulong_t, +pub sharedram: __kernel_ulong_t, +pub bufferram: __kernel_ulong_t, +pub totalswap: __kernel_ulong_t, +pub freeswap: __kernel_ulong_t, +pub procs: __u16, +pub pad: __u16, +pub totalhigh: __kernel_ulong_t, +pub freehigh: __kernel_ulong_t, +pub mem_unit: __u32, +pub _f: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct oldold_utsname { +pub sysname: [crate::ctypes::c_char; 9usize], +pub nodename: [crate::ctypes::c_char; 9usize], +pub release: [crate::ctypes::c_char; 9usize], +pub version: [crate::ctypes::c_char; 9usize], +pub machine: [crate::ctypes::c_char; 9usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct old_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct new_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +pub domainname: [crate::ctypes::c_char; 65usize], +} +pub const SI_LOAD_SHIFT: u32 = 16; +pub const __OLD_UTS_LEN: u32 = 8; +pub const __NEW_UTS_LEN: u32 = 64; +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x86/errno.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x86/errno.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x86/errno.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x86/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const EPERM: u32 = 1; pub const ENOENT: u32 = 2; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x86/general.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x86/general.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x86/general.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x86/general.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,2866 +1,216 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_sighandler_t = ::core::option::Option; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type cap_user_header_t = *mut __user_cap_header_struct; +pub type cap_user_data_t = *mut __user_cap_data_struct; +pub type __kernel_rwf_t = crate::ctypes::c_int; +pub type sigset_t = crate::ctypes::c_ulong; +pub type __signalfn_t = ::core::option::Option; +pub type __sighandler_t = __signalfn_t; +pub type __restorefn_t = ::core::option::Option; +pub type __sigrestore_t = __restorefn_t; +pub type stack_t = sigaltstack; +pub type sigval_t = sigval; +pub type siginfo_t = siginfo; +pub type sigevent_t = sigevent; +pub type cc_t = crate::ctypes::c_uchar; +pub type speed_t = crate::ctypes::c_uint; +pub type tcflag_t = crate::ctypes::c_uint; +pub type __fsword_t = __u32; #[repr(C)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct __BindgenBitfieldUnit { storage: Storage, } -impl __BindgenBitfieldUnit { -#[inline] -pub const fn new(storage: Storage) -> Self { -Self { storage } -} -} -impl __BindgenBitfieldUnit -where -Storage: AsRef<[u8]> + AsMut<[u8]>, -{ -#[inline] -pub fn get_bit(&self, index: usize) -> bool { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = self.storage.as_ref()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -byte & mask == mask -} -#[inline] -pub fn set_bit(&mut self, index: usize, val: bool) { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = &mut self.storage.as_mut()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -if val { -*byte |= mask; -} else { -*byte &= !mask; -} -} -#[inline] -pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -let mut val = 0; -for i in 0..(bit_width as usize) { -if self.get_bit(i + bit_offset) { -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -val |= 1 << index; -} -} -val -} -#[inline] -pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -for i in 0..(bit_width as usize) { -let mask = 1 << i; -let val_bit_is_set = val & mask == mask; -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -self.set_bit(index + bit_offset, val_bit_is_set); -} -} -} #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) -} -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fd_set { +pub fds_bits: [crate::ctypes::c_ulong; 32usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fsid_t { +pub val: [crate::ctypes::c_int; 2usize], } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_header_struct { +pub version: __u32, +pub pid: crate::ctypes::c_int, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_data_struct { +pub effective: __u32, +pub permitted: __u32, +pub inheritable: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data { +pub magic_etc: __le32, +pub data: [vfs_cap_data__bindgen_ty_1; 2usize], } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data { +pub magic_etc: __le32, +pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], +pub rootid: __le32, } #[repr(C)] -pub struct __BindgenUnionField(::core::marker::PhantomData); -impl __BindgenUnionField { -#[inline] -pub const fn new() -> Self { -__BindgenUnionField(::core::marker::PhantomData) +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } -#[inline] -pub unsafe fn as_ref(&self) -> &T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct f_owner_ex { +pub type_: crate::ctypes::c_int, +pub pid: __kernel_pid_t, } -#[inline] -pub unsafe fn as_mut(&mut self) -> &mut T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_off_t, +pub l_len: __kernel_off_t, +pub l_pid: __kernel_pid_t, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock64 { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_loff_t, +pub l_len: __kernel_loff_t, +pub l_pid: __kernel_pid_t, } -impl ::core::default::Default for __BindgenUnionField { -#[inline] -fn default() -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct open_how { +pub flags: __u64, +pub mode: __u64, +pub resolve: __u64, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct epoll_event { +pub events: __poll_t, +pub data: __u64, } -impl ::core::clone::Clone for __BindgenUnionField { -#[inline] -fn clone(&self) -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, } -impl ::core::marker::Copy for __BindgenUnionField {} -impl ::core::fmt::Debug for __BindgenUnionField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__BindgenUnionField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, } -impl ::core::hash::Hash for __BindgenUnionField { -fn hash(&self, _state: &mut H) {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, } -impl ::core::cmp::PartialEq for __BindgenUnionField { -fn eq(&self, _other: &__BindgenUnionField) -> bool { -true +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, } -} -impl ::core::cmp::Eq for __BindgenUnionField {} -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const AT_SYSINFO: u32 = 32; -pub const AT_SYSINFO_EHDR: u32 = 33; -pub const AT_VECTOR_SIZE_ARCH: u32 = 3; -pub const AT_NULL: u32 = 0; -pub const AT_IGNORE: u32 = 1; -pub const AT_EXECFD: u32 = 2; -pub const AT_PHDR: u32 = 3; -pub const AT_PHENT: u32 = 4; -pub const AT_PHNUM: u32 = 5; -pub const AT_PAGESZ: u32 = 6; -pub const AT_BASE: u32 = 7; -pub const AT_FLAGS: u32 = 8; -pub const AT_ENTRY: u32 = 9; -pub const AT_NOTELF: u32 = 10; -pub const AT_UID: u32 = 11; -pub const AT_EUID: u32 = 12; -pub const AT_GID: u32 = 13; -pub const AT_EGID: u32 = 14; -pub const AT_PLATFORM: u32 = 15; -pub const AT_HWCAP: u32 = 16; -pub const AT_CLKTCK: u32 = 17; -pub const AT_SECURE: u32 = 23; -pub const AT_BASE_PLATFORM: u32 = 24; -pub const AT_RANDOM: u32 = 25; -pub const AT_HWCAP2: u32 = 26; -pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; -pub const AT_RSEQ_ALIGN: u32 = 28; -pub const AT_EXECFN: u32 = 31; -pub const AT_MINSIGSTKSZ: u32 = 51; -pub const __BITS_PER_LONG: u32 = 32; -pub const __FD_SETSIZE: u32 = 1024; -pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; -pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; -pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; -pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; -pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; -pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; -pub const VFS_CAP_REVISION_SHIFT: u32 = 24; -pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; -pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; -pub const VFS_CAP_REVISION_1: u32 = 16777216; -pub const VFS_CAP_U32_1: u32 = 1; -pub const VFS_CAP_REVISION_2: u32 = 33554432; -pub const VFS_CAP_U32_2: u32 = 2; -pub const VFS_CAP_REVISION_3: u32 = 50331648; -pub const VFS_CAP_U32_3: u32 = 2; -pub const VFS_CAP_U32: u32 = 2; -pub const VFS_CAP_REVISION: u32 = 50331648; -pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S: u32 = 1; -pub const CAP_CHOWN: u32 = 0; -pub const CAP_DAC_OVERRIDE: u32 = 1; -pub const CAP_DAC_READ_SEARCH: u32 = 2; -pub const CAP_FOWNER: u32 = 3; -pub const CAP_FSETID: u32 = 4; -pub const CAP_KILL: u32 = 5; -pub const CAP_SETGID: u32 = 6; -pub const CAP_SETUID: u32 = 7; -pub const CAP_SETPCAP: u32 = 8; -pub const CAP_LINUX_IMMUTABLE: u32 = 9; -pub const CAP_NET_BIND_SERVICE: u32 = 10; -pub const CAP_NET_BROADCAST: u32 = 11; -pub const CAP_NET_ADMIN: u32 = 12; -pub const CAP_NET_RAW: u32 = 13; -pub const CAP_IPC_LOCK: u32 = 14; -pub const CAP_IPC_OWNER: u32 = 15; -pub const CAP_SYS_MODULE: u32 = 16; -pub const CAP_SYS_RAWIO: u32 = 17; -pub const CAP_SYS_CHROOT: u32 = 18; -pub const CAP_SYS_PTRACE: u32 = 19; -pub const CAP_SYS_PACCT: u32 = 20; -pub const CAP_SYS_ADMIN: u32 = 21; -pub const CAP_SYS_BOOT: u32 = 22; -pub const CAP_SYS_NICE: u32 = 23; -pub const CAP_SYS_RESOURCE: u32 = 24; -pub const CAP_SYS_TIME: u32 = 25; -pub const CAP_SYS_TTY_CONFIG: u32 = 26; -pub const CAP_MKNOD: u32 = 27; -pub const CAP_LEASE: u32 = 28; -pub const CAP_AUDIT_WRITE: u32 = 29; -pub const CAP_AUDIT_CONTROL: u32 = 30; -pub const CAP_SETFCAP: u32 = 31; -pub const CAP_MAC_OVERRIDE: u32 = 32; -pub const CAP_MAC_ADMIN: u32 = 33; -pub const CAP_SYSLOG: u32 = 34; -pub const CAP_WAKE_ALARM: u32 = 35; -pub const CAP_BLOCK_SUSPEND: u32 = 36; -pub const CAP_AUDIT_READ: u32 = 37; -pub const CAP_PERFMON: u32 = 38; -pub const CAP_BPF: u32 = 39; -pub const CAP_CHECKPOINT_RESTORE: u32 = 40; -pub const CAP_LAST_CAP: u32 = 40; -pub const O_ACCMODE: u32 = 3; -pub const O_RDONLY: u32 = 0; -pub const O_WRONLY: u32 = 1; -pub const O_RDWR: u32 = 2; -pub const O_CREAT: u32 = 64; -pub const O_EXCL: u32 = 128; -pub const O_NOCTTY: u32 = 256; -pub const O_TRUNC: u32 = 512; -pub const O_APPEND: u32 = 1024; -pub const O_NONBLOCK: u32 = 2048; -pub const O_DSYNC: u32 = 4096; -pub const FASYNC: u32 = 8192; -pub const O_DIRECT: u32 = 16384; -pub const O_LARGEFILE: u32 = 32768; -pub const O_DIRECTORY: u32 = 65536; -pub const O_NOFOLLOW: u32 = 131072; -pub const O_NOATIME: u32 = 262144; -pub const O_CLOEXEC: u32 = 524288; -pub const __O_SYNC: u32 = 1048576; -pub const O_SYNC: u32 = 1052672; -pub const O_PATH: u32 = 2097152; -pub const __O_TMPFILE: u32 = 4194304; -pub const O_TMPFILE: u32 = 4259840; -pub const O_TMPFILE_MASK: u32 = 4259904; -pub const O_NDELAY: u32 = 2048; -pub const F_DUPFD: u32 = 0; -pub const F_GETFD: u32 = 1; -pub const F_SETFD: u32 = 2; -pub const F_GETFL: u32 = 3; -pub const F_SETFL: u32 = 4; -pub const F_GETLK: u32 = 5; -pub const F_SETLK: u32 = 6; -pub const F_SETLKW: u32 = 7; -pub const F_SETOWN: u32 = 8; -pub const F_GETOWN: u32 = 9; -pub const F_SETSIG: u32 = 10; -pub const F_GETSIG: u32 = 11; -pub const F_GETLK64: u32 = 12; -pub const F_SETLK64: u32 = 13; -pub const F_SETLKW64: u32 = 14; -pub const F_SETOWN_EX: u32 = 15; -pub const F_GETOWN_EX: u32 = 16; -pub const F_GETOWNER_UIDS: u32 = 17; -pub const F_OFD_GETLK: u32 = 36; -pub const F_OFD_SETLK: u32 = 37; -pub const F_OFD_SETLKW: u32 = 38; -pub const F_OWNER_TID: u32 = 0; -pub const F_OWNER_PID: u32 = 1; -pub const F_OWNER_PGRP: u32 = 2; -pub const FD_CLOEXEC: u32 = 1; -pub const F_RDLCK: u32 = 0; -pub const F_WRLCK: u32 = 1; -pub const F_UNLCK: u32 = 2; -pub const F_EXLCK: u32 = 4; -pub const F_SHLCK: u32 = 8; -pub const LOCK_SH: u32 = 1; -pub const LOCK_EX: u32 = 2; -pub const LOCK_NB: u32 = 4; -pub const LOCK_UN: u32 = 8; -pub const LOCK_MAND: u32 = 32; -pub const LOCK_READ: u32 = 64; -pub const LOCK_WRITE: u32 = 128; -pub const LOCK_RW: u32 = 192; -pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; -pub const RESOLVE_NO_XDEV: u32 = 1; -pub const RESOLVE_NO_MAGICLINKS: u32 = 2; -pub const RESOLVE_NO_SYMLINKS: u32 = 4; -pub const RESOLVE_BENEATH: u32 = 8; -pub const RESOLVE_IN_ROOT: u32 = 16; -pub const RESOLVE_CACHED: u32 = 32; -pub const F_SETLEASE: u32 = 1024; -pub const F_GETLEASE: u32 = 1025; -pub const F_CANCELLK: u32 = 1029; -pub const F_DUPFD_CLOEXEC: u32 = 1030; -pub const F_NOTIFY: u32 = 1026; -pub const F_SETPIPE_SZ: u32 = 1031; -pub const F_GETPIPE_SZ: u32 = 1032; -pub const F_ADD_SEALS: u32 = 1033; -pub const F_GET_SEALS: u32 = 1034; -pub const F_SEAL_SEAL: u32 = 1; -pub const F_SEAL_SHRINK: u32 = 2; -pub const F_SEAL_GROW: u32 = 4; -pub const F_SEAL_WRITE: u32 = 8; -pub const F_SEAL_FUTURE_WRITE: u32 = 16; -pub const F_SEAL_EXEC: u32 = 32; -pub const F_GET_RW_HINT: u32 = 1035; -pub const F_SET_RW_HINT: u32 = 1036; -pub const F_GET_FILE_RW_HINT: u32 = 1037; -pub const F_SET_FILE_RW_HINT: u32 = 1038; -pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; -pub const RWH_WRITE_LIFE_NONE: u32 = 1; -pub const RWH_WRITE_LIFE_SHORT: u32 = 2; -pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; -pub const RWH_WRITE_LIFE_LONG: u32 = 4; -pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; -pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; -pub const DN_ACCESS: u32 = 1; -pub const DN_MODIFY: u32 = 2; -pub const DN_CREATE: u32 = 4; -pub const DN_DELETE: u32 = 8; -pub const DN_RENAME: u32 = 16; -pub const DN_ATTRIB: u32 = 32; -pub const DN_MULTISHOT: u32 = 2147483648; -pub const AT_FDCWD: i32 = -100; -pub const AT_SYMLINK_NOFOLLOW: u32 = 256; -pub const AT_EACCESS: u32 = 512; -pub const AT_REMOVEDIR: u32 = 512; -pub const AT_SYMLINK_FOLLOW: u32 = 1024; -pub const AT_NO_AUTOMOUNT: u32 = 2048; -pub const AT_EMPTY_PATH: u32 = 4096; -pub const AT_STATX_SYNC_TYPE: u32 = 24576; -pub const AT_STATX_SYNC_AS_STAT: u32 = 0; -pub const AT_STATX_FORCE_SYNC: u32 = 8192; -pub const AT_STATX_DONT_SYNC: u32 = 16384; -pub const AT_RECURSIVE: u32 = 32768; -pub const EPOLL_CLOEXEC: u32 = 524288; -pub const EPOLL_CTL_ADD: u32 = 1; -pub const EPOLL_CTL_DEL: u32 = 2; -pub const EPOLL_CTL_MOD: u32 = 3; -pub const POSIX_FADV_NORMAL: u32 = 0; -pub const POSIX_FADV_RANDOM: u32 = 1; -pub const POSIX_FADV_SEQUENTIAL: u32 = 2; -pub const POSIX_FADV_WILLNEED: u32 = 3; -pub const POSIX_FADV_DONTNEED: u32 = 4; -pub const POSIX_FADV_NOREUSE: u32 = 5; -pub const FALLOC_FL_KEEP_SIZE: u32 = 1; -pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; -pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; -pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; -pub const FALLOC_FL_ZERO_RANGE: u32 = 16; -pub const FALLOC_FL_INSERT_RANGE: u32 = 32; -pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; -pub const NR_OPEN: u32 = 1024; -pub const NGROUPS_MAX: u32 = 65536; -pub const ARG_MAX: u32 = 131072; -pub const LINK_MAX: u32 = 127; -pub const MAX_CANON: u32 = 255; -pub const MAX_INPUT: u32 = 255; -pub const NAME_MAX: u32 = 255; -pub const PATH_MAX: u32 = 4096; -pub const PIPE_BUF: u32 = 4096; -pub const XATTR_NAME_MAX: u32 = 255; -pub const XATTR_SIZE_MAX: u32 = 65536; -pub const XATTR_LIST_MAX: u32 = 65536; -pub const RTSIG_MAX: u32 = 32; -pub const _IOC_NRBITS: u32 = 8; -pub const _IOC_TYPEBITS: u32 = 8; -pub const _IOC_SIZEBITS: u32 = 14; -pub const _IOC_DIRBITS: u32 = 2; -pub const _IOC_NRMASK: u32 = 255; -pub const _IOC_TYPEMASK: u32 = 255; -pub const _IOC_SIZEMASK: u32 = 16383; -pub const _IOC_DIRMASK: u32 = 3; -pub const _IOC_NRSHIFT: u32 = 0; -pub const _IOC_TYPESHIFT: u32 = 8; -pub const _IOC_SIZESHIFT: u32 = 16; -pub const _IOC_DIRSHIFT: u32 = 30; -pub const _IOC_NONE: u32 = 0; -pub const _IOC_WRITE: u32 = 1; -pub const _IOC_READ: u32 = 2; -pub const IOC_IN: u32 = 1073741824; -pub const IOC_OUT: u32 = 2147483648; -pub const IOC_INOUT: u32 = 3221225472; -pub const IOCSIZE_MASK: u32 = 1073676288; -pub const IOCSIZE_SHIFT: u32 = 16; -pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; -pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; -pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; -pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; -pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; -pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; -pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; -pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; -pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; -pub const FSCRYPT_POLICY_V1: u32 = 0; -pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; -pub const FSCRYPT_POLICY_V2: u32 = 2; -pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; -pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; -pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; -pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; -pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; -pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; -pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; -pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FS_POLICY_FLAGS_VALID: u32 = 7; -pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; -pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; -pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; -pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; -pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; -pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; -pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; -pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; -pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FS_MAX_KEY_SIZE: u32 = 64; -pub const MS_RDONLY: u32 = 1; -pub const MS_NOSUID: u32 = 2; -pub const MS_NODEV: u32 = 4; -pub const MS_NOEXEC: u32 = 8; -pub const MS_SYNCHRONOUS: u32 = 16; -pub const MS_REMOUNT: u32 = 32; -pub const MS_MANDLOCK: u32 = 64; -pub const MS_DIRSYNC: u32 = 128; -pub const MS_NOSYMFOLLOW: u32 = 256; -pub const MS_NOATIME: u32 = 1024; -pub const MS_NODIRATIME: u32 = 2048; -pub const MS_BIND: u32 = 4096; -pub const MS_MOVE: u32 = 8192; -pub const MS_REC: u32 = 16384; -pub const MS_VERBOSE: u32 = 32768; -pub const MS_SILENT: u32 = 32768; -pub const MS_POSIXACL: u32 = 65536; -pub const MS_UNBINDABLE: u32 = 131072; -pub const MS_PRIVATE: u32 = 262144; -pub const MS_SLAVE: u32 = 524288; -pub const MS_SHARED: u32 = 1048576; -pub const MS_RELATIME: u32 = 2097152; -pub const MS_KERNMOUNT: u32 = 4194304; -pub const MS_I_VERSION: u32 = 8388608; -pub const MS_STRICTATIME: u32 = 16777216; -pub const MS_LAZYTIME: u32 = 33554432; -pub const MS_SUBMOUNT: u32 = 67108864; -pub const MS_NOREMOTELOCK: u32 = 134217728; -pub const MS_NOSEC: u32 = 268435456; -pub const MS_BORN: u32 = 536870912; -pub const MS_ACTIVE: u32 = 1073741824; -pub const MS_NOUSER: u32 = 2147483648; -pub const MS_RMT_MASK: u32 = 41943121; -pub const MS_MGC_VAL: u32 = 3236757504; -pub const MS_MGC_MSK: u32 = 4294901760; -pub const OPEN_TREE_CLONE: u32 = 1; -pub const OPEN_TREE_CLOEXEC: u32 = 524288; -pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; -pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; -pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; -pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; -pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; -pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; -pub const MOVE_MOUNT_SET_GROUP: u32 = 256; -pub const MOVE_MOUNT__MASK: u32 = 375; -pub const FSOPEN_CLOEXEC: u32 = 1; -pub const FSPICK_CLOEXEC: u32 = 1; -pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; -pub const FSPICK_NO_AUTOMOUNT: u32 = 4; -pub const FSPICK_EMPTY_PATH: u32 = 8; -pub const FSMOUNT_CLOEXEC: u32 = 1; -pub const MOUNT_ATTR_RDONLY: u32 = 1; -pub const MOUNT_ATTR_NOSUID: u32 = 2; -pub const MOUNT_ATTR_NODEV: u32 = 4; -pub const MOUNT_ATTR_NOEXEC: u32 = 8; -pub const MOUNT_ATTR__ATIME: u32 = 112; -pub const MOUNT_ATTR_RELATIME: u32 = 0; -pub const MOUNT_ATTR_NOATIME: u32 = 16; -pub const MOUNT_ATTR_STRICTATIME: u32 = 32; -pub const MOUNT_ATTR_NODIRATIME: u32 = 128; -pub const MOUNT_ATTR_IDMAP: u32 = 1048576; -pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; -pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; -pub const INR_OPEN_CUR: u32 = 1024; -pub const INR_OPEN_MAX: u32 = 4096; -pub const BLOCK_SIZE_BITS: u32 = 10; -pub const BLOCK_SIZE: u32 = 1024; -pub const SEEK_SET: u32 = 0; -pub const SEEK_CUR: u32 = 1; -pub const SEEK_END: u32 = 2; -pub const SEEK_DATA: u32 = 3; -pub const SEEK_HOLE: u32 = 4; -pub const SEEK_MAX: u32 = 4; -pub const RENAME_NOREPLACE: u32 = 1; -pub const RENAME_EXCHANGE: u32 = 2; -pub const RENAME_WHITEOUT: u32 = 4; -pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; -pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; -pub const NR_FILE: u32 = 8192; -pub const FS_XFLAG_REALTIME: u32 = 1; -pub const FS_XFLAG_PREALLOC: u32 = 2; -pub const FS_XFLAG_IMMUTABLE: u32 = 8; -pub const FS_XFLAG_APPEND: u32 = 16; -pub const FS_XFLAG_SYNC: u32 = 32; -pub const FS_XFLAG_NOATIME: u32 = 64; -pub const FS_XFLAG_NODUMP: u32 = 128; -pub const FS_XFLAG_RTINHERIT: u32 = 256; -pub const FS_XFLAG_PROJINHERIT: u32 = 512; -pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; -pub const FS_XFLAG_EXTSIZE: u32 = 2048; -pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; -pub const FS_XFLAG_NODEFRAG: u32 = 8192; -pub const FS_XFLAG_FILESTREAM: u32 = 16384; -pub const FS_XFLAG_DAX: u32 = 32768; -pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; -pub const FS_XFLAG_HASATTR: u32 = 2147483648; -pub const BMAP_IOCTL: u32 = 1; -pub const FSLABEL_MAX: u32 = 256; -pub const FS_SECRM_FL: u32 = 1; -pub const FS_UNRM_FL: u32 = 2; -pub const FS_COMPR_FL: u32 = 4; -pub const FS_SYNC_FL: u32 = 8; -pub const FS_IMMUTABLE_FL: u32 = 16; -pub const FS_APPEND_FL: u32 = 32; -pub const FS_NODUMP_FL: u32 = 64; -pub const FS_NOATIME_FL: u32 = 128; -pub const FS_DIRTY_FL: u32 = 256; -pub const FS_COMPRBLK_FL: u32 = 512; -pub const FS_NOCOMP_FL: u32 = 1024; -pub const FS_ENCRYPT_FL: u32 = 2048; -pub const FS_BTREE_FL: u32 = 4096; -pub const FS_INDEX_FL: u32 = 4096; -pub const FS_IMAGIC_FL: u32 = 8192; -pub const FS_JOURNAL_DATA_FL: u32 = 16384; -pub const FS_NOTAIL_FL: u32 = 32768; -pub const FS_DIRSYNC_FL: u32 = 65536; -pub const FS_TOPDIR_FL: u32 = 131072; -pub const FS_HUGE_FILE_FL: u32 = 262144; -pub const FS_EXTENT_FL: u32 = 524288; -pub const FS_VERITY_FL: u32 = 1048576; -pub const FS_EA_INODE_FL: u32 = 2097152; -pub const FS_EOFBLOCKS_FL: u32 = 4194304; -pub const FS_NOCOW_FL: u32 = 8388608; -pub const FS_DAX_FL: u32 = 33554432; -pub const FS_INLINE_DATA_FL: u32 = 268435456; -pub const FS_PROJINHERIT_FL: u32 = 536870912; -pub const FS_CASEFOLD_FL: u32 = 1073741824; -pub const FS_RESERVED_FL: u32 = 2147483648; -pub const FS_FL_USER_VISIBLE: u32 = 253951; -pub const FS_FL_USER_MODIFIABLE: u32 = 229631; -pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; -pub const SYNC_FILE_RANGE_WRITE: u32 = 2; -pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; -pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; -pub const FUTEX_WAIT: u32 = 0; -pub const FUTEX_WAKE: u32 = 1; -pub const FUTEX_FD: u32 = 2; -pub const FUTEX_REQUEUE: u32 = 3; -pub const FUTEX_CMP_REQUEUE: u32 = 4; -pub const FUTEX_WAKE_OP: u32 = 5; -pub const FUTEX_LOCK_PI: u32 = 6; -pub const FUTEX_UNLOCK_PI: u32 = 7; -pub const FUTEX_TRYLOCK_PI: u32 = 8; -pub const FUTEX_WAIT_BITSET: u32 = 9; -pub const FUTEX_WAKE_BITSET: u32 = 10; -pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; -pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; -pub const FUTEX_LOCK_PI2: u32 = 13; -pub const FUTEX_PRIVATE_FLAG: u32 = 128; -pub const FUTEX_CLOCK_REALTIME: u32 = 256; -pub const FUTEX_CMD_MASK: i32 = -385; -pub const FUTEX_WAIT_PRIVATE: u32 = 128; -pub const FUTEX_WAKE_PRIVATE: u32 = 129; -pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; -pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; -pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; -pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; -pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; -pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; -pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; -pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; -pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; -pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; -pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; -pub const FUTEX_32: u32 = 2; -pub const FUTEX_WAITV_MAX: u32 = 128; -pub const FUTEX_WAITERS: u32 = 2147483648; -pub const FUTEX_OWNER_DIED: u32 = 1073741824; -pub const FUTEX_TID_MASK: u32 = 1073741823; -pub const ROBUST_LIST_LIMIT: u32 = 2048; -pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; -pub const FUTEX_OP_SET: u32 = 0; -pub const FUTEX_OP_ADD: u32 = 1; -pub const FUTEX_OP_OR: u32 = 2; -pub const FUTEX_OP_ANDN: u32 = 3; -pub const FUTEX_OP_XOR: u32 = 4; -pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; -pub const FUTEX_OP_CMP_EQ: u32 = 0; -pub const FUTEX_OP_CMP_NE: u32 = 1; -pub const FUTEX_OP_CMP_LT: u32 = 2; -pub const FUTEX_OP_CMP_LE: u32 = 3; -pub const FUTEX_OP_CMP_GT: u32 = 4; -pub const FUTEX_OP_CMP_GE: u32 = 5; -pub const __UAPI_DEF_IF_IFCONF: u32 = 1; -pub const __UAPI_DEF_IF_IFMAP: u32 = 1; -pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1; -pub const __UAPI_DEF_IF_IFREQ: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1; -pub const __UAPI_DEF_IN_ADDR: u32 = 1; -pub const __UAPI_DEF_IN_IPPROTO: u32 = 1; -pub const __UAPI_DEF_IN_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP_MREQ: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1; -pub const __UAPI_DEF_IN_CLASS: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1; -pub const __UAPI_DEF_IPV6_MREQ: u32 = 1; -pub const __UAPI_DEF_IPPROTO_V6: u32 = 1; -pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1; -pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1; -pub const __UAPI_DEF_XATTR: u32 = 1; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const IP_TOS: u32 = 1; -pub const IP_TTL: u32 = 2; -pub const IP_HDRINCL: u32 = 3; -pub const IP_OPTIONS: u32 = 4; -pub const IP_ROUTER_ALERT: u32 = 5; -pub const IP_RECVOPTS: u32 = 6; -pub const IP_RETOPTS: u32 = 7; -pub const IP_PKTINFO: u32 = 8; -pub const IP_PKTOPTIONS: u32 = 9; -pub const IP_MTU_DISCOVER: u32 = 10; -pub const IP_RECVERR: u32 = 11; -pub const IP_RECVTTL: u32 = 12; -pub const IP_RECVTOS: u32 = 13; -pub const IP_MTU: u32 = 14; -pub const IP_FREEBIND: u32 = 15; -pub const IP_IPSEC_POLICY: u32 = 16; -pub const IP_XFRM_POLICY: u32 = 17; -pub const IP_PASSSEC: u32 = 18; -pub const IP_TRANSPARENT: u32 = 19; -pub const IP_RECVRETOPTS: u32 = 7; -pub const IP_ORIGDSTADDR: u32 = 20; -pub const IP_RECVORIGDSTADDR: u32 = 20; -pub const IP_MINTTL: u32 = 21; -pub const IP_NODEFRAG: u32 = 22; -pub const IP_CHECKSUM: u32 = 23; -pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; -pub const IP_RECVFRAGSIZE: u32 = 25; -pub const IP_RECVERR_RFC4884: u32 = 26; -pub const IP_PMTUDISC_DONT: u32 = 0; -pub const IP_PMTUDISC_WANT: u32 = 1; -pub const IP_PMTUDISC_DO: u32 = 2; -pub const IP_PMTUDISC_PROBE: u32 = 3; -pub const IP_PMTUDISC_INTERFACE: u32 = 4; -pub const IP_PMTUDISC_OMIT: u32 = 5; -pub const IP_MULTICAST_IF: u32 = 32; -pub const IP_MULTICAST_TTL: u32 = 33; -pub const IP_MULTICAST_LOOP: u32 = 34; -pub const IP_ADD_MEMBERSHIP: u32 = 35; -pub const IP_DROP_MEMBERSHIP: u32 = 36; -pub const IP_UNBLOCK_SOURCE: u32 = 37; -pub const IP_BLOCK_SOURCE: u32 = 38; -pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; -pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; -pub const IP_MSFILTER: u32 = 41; -pub const MCAST_JOIN_GROUP: u32 = 42; -pub const MCAST_BLOCK_SOURCE: u32 = 43; -pub const MCAST_UNBLOCK_SOURCE: u32 = 44; -pub const MCAST_LEAVE_GROUP: u32 = 45; -pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; -pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; -pub const MCAST_MSFILTER: u32 = 48; -pub const IP_MULTICAST_ALL: u32 = 49; -pub const IP_UNICAST_IF: u32 = 50; -pub const IP_LOCAL_PORT_RANGE: u32 = 51; -pub const MCAST_EXCLUDE: u32 = 0; -pub const MCAST_INCLUDE: u32 = 1; -pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; -pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const __SOCK_SIZE__: u32 = 16; -pub const IN_CLASSA_NET: u32 = 4278190080; -pub const IN_CLASSA_NSHIFT: u32 = 24; -pub const IN_CLASSA_HOST: u32 = 16777215; -pub const IN_CLASSA_MAX: u32 = 128; -pub const IN_CLASSB_NET: u32 = 4294901760; -pub const IN_CLASSB_NSHIFT: u32 = 16; -pub const IN_CLASSB_HOST: u32 = 65535; -pub const IN_CLASSB_MAX: u32 = 65536; -pub const IN_CLASSC_NET: u32 = 4294967040; -pub const IN_CLASSC_NSHIFT: u32 = 8; -pub const IN_CLASSC_HOST: u32 = 255; -pub const IN_MULTICAST_NET: u32 = 3758096384; -pub const IN_CLASSE_NET: u32 = 4294967295; -pub const IN_CLASSE_NSHIFT: u32 = 0; -pub const IN_LOOPBACKNET: u32 = 127; -pub const INADDR_LOOPBACK: u32 = 2130706433; -pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; -pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; -pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; -pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; -pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; -pub const __LITTLE_ENDIAN: u32 = 1234; -pub const IN_ACCESS: u32 = 1; -pub const IN_MODIFY: u32 = 2; -pub const IN_ATTRIB: u32 = 4; -pub const IN_CLOSE_WRITE: u32 = 8; -pub const IN_CLOSE_NOWRITE: u32 = 16; -pub const IN_OPEN: u32 = 32; -pub const IN_MOVED_FROM: u32 = 64; -pub const IN_MOVED_TO: u32 = 128; -pub const IN_CREATE: u32 = 256; -pub const IN_DELETE: u32 = 512; -pub const IN_DELETE_SELF: u32 = 1024; -pub const IN_MOVE_SELF: u32 = 2048; -pub const IN_UNMOUNT: u32 = 8192; -pub const IN_Q_OVERFLOW: u32 = 16384; -pub const IN_IGNORED: u32 = 32768; -pub const IN_CLOSE: u32 = 24; -pub const IN_MOVE: u32 = 192; -pub const IN_ONLYDIR: u32 = 16777216; -pub const IN_DONT_FOLLOW: u32 = 33554432; -pub const IN_EXCL_UNLINK: u32 = 67108864; -pub const IN_MASK_CREATE: u32 = 268435456; -pub const IN_MASK_ADD: u32 = 536870912; -pub const IN_ISDIR: u32 = 1073741824; -pub const IN_ONESHOT: u32 = 2147483648; -pub const IN_ALL_EVENTS: u32 = 4095; -pub const IN_CLOEXEC: u32 = 524288; -pub const IN_NONBLOCK: u32 = 2048; -pub const IPTOS_TOS_MASK: u32 = 30; -pub const IPTOS_LOWDELAY: u32 = 16; -pub const IPTOS_THROUGHPUT: u32 = 8; -pub const IPTOS_RELIABILITY: u32 = 4; -pub const IPTOS_MINCOST: u32 = 2; -pub const IPTOS_PREC_MASK: u32 = 224; -pub const IPTOS_PREC_NETCONTROL: u32 = 224; -pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; -pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; -pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; -pub const IPTOS_PREC_FLASH: u32 = 96; -pub const IPTOS_PREC_IMMEDIATE: u32 = 64; -pub const IPTOS_PREC_PRIORITY: u32 = 32; -pub const IPTOS_PREC_ROUTINE: u32 = 0; -pub const IPOPT_COPY: u32 = 128; -pub const IPOPT_CLASS_MASK: u32 = 96; -pub const IPOPT_NUMBER_MASK: u32 = 31; -pub const IPOPT_CONTROL: u32 = 0; -pub const IPOPT_RESERVED1: u32 = 32; -pub const IPOPT_MEASUREMENT: u32 = 64; -pub const IPOPT_RESERVED2: u32 = 96; -pub const IPOPT_END: u32 = 0; -pub const IPOPT_NOOP: u32 = 1; -pub const IPOPT_SEC: u32 = 130; -pub const IPOPT_LSRR: u32 = 131; -pub const IPOPT_TIMESTAMP: u32 = 68; -pub const IPOPT_CIPSO: u32 = 134; -pub const IPOPT_RR: u32 = 7; -pub const IPOPT_SID: u32 = 136; -pub const IPOPT_SSRR: u32 = 137; -pub const IPOPT_RA: u32 = 148; -pub const IPVERSION: u32 = 4; -pub const MAXTTL: u32 = 255; -pub const IPDEFTTL: u32 = 64; -pub const IPOPT_OPTVAL: u32 = 0; -pub const IPOPT_OLEN: u32 = 1; -pub const IPOPT_OFFSET: u32 = 2; -pub const IPOPT_MINOFF: u32 = 4; -pub const MAX_IPOPTLEN: u32 = 40; -pub const IPOPT_NOP: u32 = 1; -pub const IPOPT_EOL: u32 = 0; -pub const IPOPT_TS: u32 = 68; -pub const IPOPT_TS_TSONLY: u32 = 0; -pub const IPOPT_TS_TSANDADDR: u32 = 1; -pub const IPOPT_TS_PRESPEC: u32 = 3; -pub const IPV4_BEET_PHMAXLEN: u32 = 8; -pub const IPV6_FL_A_GET: u32 = 0; -pub const IPV6_FL_A_PUT: u32 = 1; -pub const IPV6_FL_A_RENEW: u32 = 2; -pub const IPV6_FL_F_CREATE: u32 = 1; -pub const IPV6_FL_F_EXCL: u32 = 2; -pub const IPV6_FL_F_REFLECT: u32 = 4; -pub const IPV6_FL_F_REMOTE: u32 = 8; -pub const IPV6_FL_S_NONE: u32 = 0; -pub const IPV6_FL_S_EXCL: u32 = 1; -pub const IPV6_FL_S_PROCESS: u32 = 2; -pub const IPV6_FL_S_USER: u32 = 3; -pub const IPV6_FL_S_ANY: u32 = 255; -pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; -pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; -pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; -pub const IPV6_PRIORITY_FILLER: u32 = 256; -pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; -pub const IPV6_PRIORITY_RESERVED1: u32 = 768; -pub const IPV6_PRIORITY_BULK: u32 = 1024; -pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; -pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; -pub const IPV6_PRIORITY_CONTROL: u32 = 1792; -pub const IPV6_PRIORITY_8: u32 = 2048; -pub const IPV6_PRIORITY_9: u32 = 2304; -pub const IPV6_PRIORITY_10: u32 = 2560; -pub const IPV6_PRIORITY_11: u32 = 2816; -pub const IPV6_PRIORITY_12: u32 = 3072; -pub const IPV6_PRIORITY_13: u32 = 3328; -pub const IPV6_PRIORITY_14: u32 = 3584; -pub const IPV6_PRIORITY_15: u32 = 3840; -pub const IPPROTO_HOPOPTS: u32 = 0; -pub const IPPROTO_ROUTING: u32 = 43; -pub const IPPROTO_FRAGMENT: u32 = 44; -pub const IPPROTO_ICMPV6: u32 = 58; -pub const IPPROTO_NONE: u32 = 59; -pub const IPPROTO_DSTOPTS: u32 = 60; -pub const IPPROTO_MH: u32 = 135; -pub const IPV6_TLV_PAD1: u32 = 0; -pub const IPV6_TLV_PADN: u32 = 1; -pub const IPV6_TLV_ROUTERALERT: u32 = 5; -pub const IPV6_TLV_CALIPSO: u32 = 7; -pub const IPV6_TLV_IOAM: u32 = 49; -pub const IPV6_TLV_JUMBO: u32 = 194; -pub const IPV6_TLV_HAO: u32 = 201; -pub const IPV6_ADDRFORM: u32 = 1; -pub const IPV6_2292PKTINFO: u32 = 2; -pub const IPV6_2292HOPOPTS: u32 = 3; -pub const IPV6_2292DSTOPTS: u32 = 4; -pub const IPV6_2292RTHDR: u32 = 5; -pub const IPV6_2292PKTOPTIONS: u32 = 6; -pub const IPV6_CHECKSUM: u32 = 7; -pub const IPV6_2292HOPLIMIT: u32 = 8; -pub const IPV6_NEXTHOP: u32 = 9; -pub const IPV6_AUTHHDR: u32 = 10; -pub const IPV6_FLOWINFO: u32 = 11; -pub const IPV6_UNICAST_HOPS: u32 = 16; -pub const IPV6_MULTICAST_IF: u32 = 17; -pub const IPV6_MULTICAST_HOPS: u32 = 18; -pub const IPV6_MULTICAST_LOOP: u32 = 19; -pub const IPV6_ADD_MEMBERSHIP: u32 = 20; -pub const IPV6_DROP_MEMBERSHIP: u32 = 21; -pub const IPV6_ROUTER_ALERT: u32 = 22; -pub const IPV6_MTU_DISCOVER: u32 = 23; -pub const IPV6_MTU: u32 = 24; -pub const IPV6_RECVERR: u32 = 25; -pub const IPV6_V6ONLY: u32 = 26; -pub const IPV6_JOIN_ANYCAST: u32 = 27; -pub const IPV6_LEAVE_ANYCAST: u32 = 28; -pub const IPV6_MULTICAST_ALL: u32 = 29; -pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; -pub const IPV6_RECVERR_RFC4884: u32 = 31; -pub const IPV6_PMTUDISC_DONT: u32 = 0; -pub const IPV6_PMTUDISC_WANT: u32 = 1; -pub const IPV6_PMTUDISC_DO: u32 = 2; -pub const IPV6_PMTUDISC_PROBE: u32 = 3; -pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; -pub const IPV6_PMTUDISC_OMIT: u32 = 5; -pub const IPV6_FLOWLABEL_MGR: u32 = 32; -pub const IPV6_FLOWINFO_SEND: u32 = 33; -pub const IPV6_IPSEC_POLICY: u32 = 34; -pub const IPV6_XFRM_POLICY: u32 = 35; -pub const IPV6_HDRINCL: u32 = 36; -pub const IPV6_RECVPKTINFO: u32 = 49; -pub const IPV6_PKTINFO: u32 = 50; -pub const IPV6_RECVHOPLIMIT: u32 = 51; -pub const IPV6_HOPLIMIT: u32 = 52; -pub const IPV6_RECVHOPOPTS: u32 = 53; -pub const IPV6_HOPOPTS: u32 = 54; -pub const IPV6_RTHDRDSTOPTS: u32 = 55; -pub const IPV6_RECVRTHDR: u32 = 56; -pub const IPV6_RTHDR: u32 = 57; -pub const IPV6_RECVDSTOPTS: u32 = 58; -pub const IPV6_DSTOPTS: u32 = 59; -pub const IPV6_RECVPATHMTU: u32 = 60; -pub const IPV6_PATHMTU: u32 = 61; -pub const IPV6_DONTFRAG: u32 = 62; -pub const IPV6_RECVTCLASS: u32 = 66; -pub const IPV6_TCLASS: u32 = 67; -pub const IPV6_AUTOFLOWLABEL: u32 = 70; -pub const IPV6_ADDR_PREFERENCES: u32 = 72; -pub const IPV6_PREFER_SRC_TMP: u32 = 1; -pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; -pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; -pub const IPV6_PREFER_SRC_COA: u32 = 4; -pub const IPV6_PREFER_SRC_HOME: u32 = 1024; -pub const IPV6_PREFER_SRC_CGA: u32 = 8; -pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; -pub const IPV6_MINHOPCOUNT: u32 = 73; -pub const IPV6_ORIGDSTADDR: u32 = 74; -pub const IPV6_RECVORIGDSTADDR: u32 = 74; -pub const IPV6_TRANSPARENT: u32 = 75; -pub const IPV6_UNICAST_IF: u32 = 76; -pub const IPV6_RECVFRAGSIZE: u32 = 77; -pub const IPV6_FREEBIND: u32 = 78; -pub const IPV6_MIN_MTU: u32 = 1280; -pub const IPV6_SRCRT_STRICT: u32 = 1; -pub const IPV6_SRCRT_TYPE_0: u32 = 0; -pub const IPV6_SRCRT_TYPE_2: u32 = 2; -pub const IPV6_SRCRT_TYPE_3: u32 = 3; -pub const IPV6_SRCRT_TYPE_4: u32 = 4; -pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; -pub const ADFS_SUPER_MAGIC: u32 = 44533; -pub const AFFS_SUPER_MAGIC: u32 = 44543; -pub const AFS_SUPER_MAGIC: u32 = 1397113167; -pub const AUTOFS_SUPER_MAGIC: u32 = 391; -pub const CEPH_SUPER_MAGIC: u32 = 12805120; -pub const CODA_SUPER_MAGIC: u32 = 1937076805; -pub const CRAMFS_MAGIC: u32 = 684539205; -pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; -pub const DEBUGFS_MAGIC: u32 = 1684170528; -pub const SECURITYFS_MAGIC: u32 = 1935894131; -pub const SELINUX_MAGIC: u32 = 4185718668; -pub const SMACK_MAGIC: u32 = 1128357203; -pub const RAMFS_MAGIC: u32 = 2240043254; -pub const TMPFS_MAGIC: u32 = 16914836; -pub const HUGETLBFS_MAGIC: u32 = 2508478710; -pub const SQUASHFS_MAGIC: u32 = 1936814952; -pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; -pub const EFS_SUPER_MAGIC: u32 = 4278867; -pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; -pub const EXT2_SUPER_MAGIC: u32 = 61267; -pub const EXT3_SUPER_MAGIC: u32 = 61267; -pub const XENFS_SUPER_MAGIC: u32 = 2881100148; -pub const EXT4_SUPER_MAGIC: u32 = 61267; -pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; -pub const NILFS_SUPER_MAGIC: u32 = 13364; -pub const F2FS_SUPER_MAGIC: u32 = 4076150800; -pub const HPFS_SUPER_MAGIC: u32 = 4187351113; -pub const ISOFS_SUPER_MAGIC: u32 = 38496; -pub const JFFS2_SUPER_MAGIC: u32 = 29366; -pub const XFS_SUPER_MAGIC: u32 = 1481003842; -pub const PSTOREFS_MAGIC: u32 = 1634035564; -pub const EFIVARFS_MAGIC: u32 = 3730735588; -pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; -pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; -pub const FUSE_SUPER_MAGIC: u32 = 1702057286; -pub const MINIX_SUPER_MAGIC: u32 = 4991; -pub const MINIX_SUPER_MAGIC2: u32 = 5007; -pub const MINIX2_SUPER_MAGIC: u32 = 9320; -pub const MINIX2_SUPER_MAGIC2: u32 = 9336; -pub const MINIX3_SUPER_MAGIC: u32 = 19802; -pub const MSDOS_SUPER_MAGIC: u32 = 19780; -pub const EXFAT_SUPER_MAGIC: u32 = 538032816; -pub const NCP_SUPER_MAGIC: u32 = 22092; -pub const NFS_SUPER_MAGIC: u32 = 26985; -pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; -pub const OPENPROM_SUPER_MAGIC: u32 = 40865; -pub const QNX4_SUPER_MAGIC: u32 = 47; -pub const QNX6_SUPER_MAGIC: u32 = 1746473250; -pub const AFS_FS_MAGIC: u32 = 1799439955; -pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; -pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0"; -pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0"; -pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0"; -pub const SMB_SUPER_MAGIC: u32 = 20859; -pub const CIFS_SUPER_MAGIC: u32 = 4283649346; -pub const SMB2_SUPER_MAGIC: u32 = 4266872130; -pub const CGROUP_SUPER_MAGIC: u32 = 2613483; -pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; -pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; -pub const STACK_END_MAGIC: u32 = 1470918301; -pub const TRACEFS_MAGIC: u32 = 1953653091; -pub const V9FS_MAGIC: u32 = 16914839; -pub const BDEVFS_MAGIC: u32 = 1650746742; -pub const DAXFS_MAGIC: u32 = 1684300152; -pub const BINFMTFS_MAGIC: u32 = 1112100429; -pub const DEVPTS_SUPER_MAGIC: u32 = 7377; -pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; -pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; -pub const PIPEFS_MAGIC: u32 = 1346981957; -pub const PROC_SUPER_MAGIC: u32 = 40864; -pub const SOCKFS_MAGIC: u32 = 1397703499; -pub const SYSFS_MAGIC: u32 = 1650812274; -pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; -pub const MTD_INODE_FS_MAGIC: u32 = 288389204; -pub const ANON_INODE_FS_MAGIC: u32 = 151263540; -pub const BTRFS_TEST_MAGIC: u32 = 1936880249; -pub const NSFS_MAGIC: u32 = 1853056627; -pub const BPF_FS_MAGIC: u32 = 3405662737; -pub const AAFS_MAGIC: u32 = 1513908720; -pub const ZONEFS_MAGIC: u32 = 1515144787; -pub const UDF_SUPER_MAGIC: u32 = 352400198; -pub const DMA_BUF_MAGIC: u32 = 1145913666; -pub const DEVMEM_MAGIC: u32 = 1162691661; -pub const SECRETMEM_MAGIC: u32 = 1397048141; -pub const MAP_32BIT: u32 = 64; -pub const PROT_READ: u32 = 1; -pub const PROT_WRITE: u32 = 2; -pub const PROT_EXEC: u32 = 4; -pub const PROT_SEM: u32 = 8; -pub const PROT_NONE: u32 = 0; -pub const PROT_GROWSDOWN: u32 = 16777216; -pub const PROT_GROWSUP: u32 = 33554432; -pub const MAP_TYPE: u32 = 15; -pub const MAP_FIXED: u32 = 16; -pub const MAP_ANONYMOUS: u32 = 32; -pub const MAP_POPULATE: u32 = 32768; -pub const MAP_NONBLOCK: u32 = 65536; -pub const MAP_STACK: u32 = 131072; -pub const MAP_HUGETLB: u32 = 262144; -pub const MAP_SYNC: u32 = 524288; -pub const MAP_FIXED_NOREPLACE: u32 = 1048576; -pub const MAP_UNINITIALIZED: u32 = 67108864; -pub const MLOCK_ONFAULT: u32 = 1; -pub const MS_ASYNC: u32 = 1; -pub const MS_INVALIDATE: u32 = 2; -pub const MS_SYNC: u32 = 4; -pub const MADV_NORMAL: u32 = 0; -pub const MADV_RANDOM: u32 = 1; -pub const MADV_SEQUENTIAL: u32 = 2; -pub const MADV_WILLNEED: u32 = 3; -pub const MADV_DONTNEED: u32 = 4; -pub const MADV_FREE: u32 = 8; -pub const MADV_REMOVE: u32 = 9; -pub const MADV_DONTFORK: u32 = 10; -pub const MADV_DOFORK: u32 = 11; -pub const MADV_HWPOISON: u32 = 100; -pub const MADV_SOFT_OFFLINE: u32 = 101; -pub const MADV_MERGEABLE: u32 = 12; -pub const MADV_UNMERGEABLE: u32 = 13; -pub const MADV_HUGEPAGE: u32 = 14; -pub const MADV_NOHUGEPAGE: u32 = 15; -pub const MADV_DONTDUMP: u32 = 16; -pub const MADV_DODUMP: u32 = 17; -pub const MADV_WIPEONFORK: u32 = 18; -pub const MADV_KEEPONFORK: u32 = 19; -pub const MADV_COLD: u32 = 20; -pub const MADV_PAGEOUT: u32 = 21; -pub const MADV_POPULATE_READ: u32 = 22; -pub const MADV_POPULATE_WRITE: u32 = 23; -pub const MADV_DONTNEED_LOCKED: u32 = 24; -pub const MADV_COLLAPSE: u32 = 25; -pub const MAP_FILE: u32 = 0; -pub const PKEY_DISABLE_ACCESS: u32 = 1; -pub const PKEY_DISABLE_WRITE: u32 = 2; -pub const PKEY_ACCESS_MASK: u32 = 3; -pub const MAP_GROWSDOWN: u32 = 256; -pub const MAP_DENYWRITE: u32 = 2048; -pub const MAP_EXECUTABLE: u32 = 4096; -pub const MAP_LOCKED: u32 = 8192; -pub const MAP_NORESERVE: u32 = 16384; -pub const MCL_CURRENT: u32 = 1; -pub const MCL_FUTURE: u32 = 2; -pub const MCL_ONFAULT: u32 = 4; -pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; -pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; -pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; -pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; -pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; -pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; -pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; -pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; -pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; -pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; -pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; -pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; -pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; -pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; -pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; -pub const MREMAP_MAYMOVE: u32 = 1; -pub const MREMAP_FIXED: u32 = 2; -pub const MREMAP_DONTUNMAP: u32 = 4; -pub const OVERCOMMIT_GUESS: u32 = 0; -pub const OVERCOMMIT_ALWAYS: u32 = 1; -pub const OVERCOMMIT_NEVER: u32 = 2; -pub const MAP_SHARED: u32 = 1; -pub const MAP_PRIVATE: u32 = 2; -pub const MAP_SHARED_VALIDATE: u32 = 3; -pub const MAP_HUGE_SHIFT: u32 = 26; -pub const MAP_HUGE_MASK: u32 = 63; -pub const MAP_HUGE_16KB: u32 = 939524096; -pub const MAP_HUGE_64KB: u32 = 1073741824; -pub const MAP_HUGE_512KB: u32 = 1275068416; -pub const MAP_HUGE_1MB: u32 = 1342177280; -pub const MAP_HUGE_2MB: u32 = 1409286144; -pub const MAP_HUGE_8MB: u32 = 1543503872; -pub const MAP_HUGE_16MB: u32 = 1610612736; -pub const MAP_HUGE_32MB: u32 = 1677721600; -pub const MAP_HUGE_256MB: u32 = 1879048192; -pub const MAP_HUGE_512MB: u32 = 1946157056; -pub const MAP_HUGE_1GB: u32 = 2013265920; -pub const MAP_HUGE_2GB: u32 = 2080374784; -pub const MAP_HUGE_16GB: u32 = 2281701376; -pub const SIOCGSTAMP_OLD: u32 = 35078; -pub const SIOCGSTAMPNS_OLD: u32 = 35079; -pub const SOL_SOCKET: u32 = 1; -pub const SO_DEBUG: u32 = 1; -pub const SO_REUSEADDR: u32 = 2; -pub const SO_TYPE: u32 = 3; -pub const SO_ERROR: u32 = 4; -pub const SO_DONTROUTE: u32 = 5; -pub const SO_BROADCAST: u32 = 6; -pub const SO_SNDBUF: u32 = 7; -pub const SO_RCVBUF: u32 = 8; -pub const SO_SNDBUFFORCE: u32 = 32; -pub const SO_RCVBUFFORCE: u32 = 33; -pub const SO_KEEPALIVE: u32 = 9; -pub const SO_OOBINLINE: u32 = 10; -pub const SO_NO_CHECK: u32 = 11; -pub const SO_PRIORITY: u32 = 12; -pub const SO_LINGER: u32 = 13; -pub const SO_BSDCOMPAT: u32 = 14; -pub const SO_REUSEPORT: u32 = 15; -pub const SO_PASSCRED: u32 = 16; -pub const SO_PEERCRED: u32 = 17; -pub const SO_RCVLOWAT: u32 = 18; -pub const SO_SNDLOWAT: u32 = 19; -pub const SO_RCVTIMEO_OLD: u32 = 20; -pub const SO_SNDTIMEO_OLD: u32 = 21; -pub const SO_SECURITY_AUTHENTICATION: u32 = 22; -pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; -pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; -pub const SO_BINDTODEVICE: u32 = 25; -pub const SO_ATTACH_FILTER: u32 = 26; -pub const SO_DETACH_FILTER: u32 = 27; -pub const SO_GET_FILTER: u32 = 26; -pub const SO_PEERNAME: u32 = 28; -pub const SO_ACCEPTCONN: u32 = 30; -pub const SO_PEERSEC: u32 = 31; -pub const SO_PASSSEC: u32 = 34; -pub const SO_MARK: u32 = 36; -pub const SO_PROTOCOL: u32 = 38; -pub const SO_DOMAIN: u32 = 39; -pub const SO_RXQ_OVFL: u32 = 40; -pub const SO_WIFI_STATUS: u32 = 41; -pub const SCM_WIFI_STATUS: u32 = 41; -pub const SO_PEEK_OFF: u32 = 42; -pub const SO_NOFCS: u32 = 43; -pub const SO_LOCK_FILTER: u32 = 44; -pub const SO_SELECT_ERR_QUEUE: u32 = 45; -pub const SO_BUSY_POLL: u32 = 46; -pub const SO_MAX_PACING_RATE: u32 = 47; -pub const SO_BPF_EXTENSIONS: u32 = 48; -pub const SO_INCOMING_CPU: u32 = 49; -pub const SO_ATTACH_BPF: u32 = 50; -pub const SO_DETACH_BPF: u32 = 27; -pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; -pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; -pub const SO_CNX_ADVICE: u32 = 53; -pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; -pub const SO_MEMINFO: u32 = 55; -pub const SO_INCOMING_NAPI_ID: u32 = 56; -pub const SO_COOKIE: u32 = 57; -pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; -pub const SO_PEERGROUPS: u32 = 59; -pub const SO_ZEROCOPY: u32 = 60; -pub const SO_TXTIME: u32 = 61; -pub const SCM_TXTIME: u32 = 61; -pub const SO_BINDTOIFINDEX: u32 = 62; -pub const SO_TIMESTAMP_OLD: u32 = 29; -pub const SO_TIMESTAMPNS_OLD: u32 = 35; -pub const SO_TIMESTAMPING_OLD: u32 = 37; -pub const SO_TIMESTAMP_NEW: u32 = 63; -pub const SO_TIMESTAMPNS_NEW: u32 = 64; -pub const SO_TIMESTAMPING_NEW: u32 = 65; -pub const SO_RCVTIMEO_NEW: u32 = 66; -pub const SO_SNDTIMEO_NEW: u32 = 67; -pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; -pub const SO_PREFER_BUSY_POLL: u32 = 69; -pub const SO_BUSY_POLL_BUDGET: u32 = 70; -pub const SO_NETNS_COOKIE: u32 = 71; -pub const SO_BUF_LOCK: u32 = 72; -pub const SO_RESERVE_MEM: u32 = 73; -pub const SO_TXREHASH: u32 = 74; -pub const SO_RCVMARK: u32 = 75; -pub const SYS_SOCKET: u32 = 1; -pub const SYS_BIND: u32 = 2; -pub const SYS_CONNECT: u32 = 3; -pub const SYS_LISTEN: u32 = 4; -pub const SYS_ACCEPT: u32 = 5; -pub const SYS_GETSOCKNAME: u32 = 6; -pub const SYS_GETPEERNAME: u32 = 7; -pub const SYS_SOCKETPAIR: u32 = 8; -pub const SYS_SEND: u32 = 9; -pub const SYS_RECV: u32 = 10; -pub const SYS_SENDTO: u32 = 11; -pub const SYS_RECVFROM: u32 = 12; -pub const SYS_SHUTDOWN: u32 = 13; -pub const SYS_SETSOCKOPT: u32 = 14; -pub const SYS_GETSOCKOPT: u32 = 15; -pub const SYS_SENDMSG: u32 = 16; -pub const SYS_RECVMSG: u32 = 17; -pub const SYS_ACCEPT4: u32 = 18; -pub const SYS_RECVMMSG: u32 = 19; -pub const SYS_SENDMMSG: u32 = 20; -pub const __SO_ACCEPTCON: u32 = 65536; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const POLLWRNORM: u32 = 256; -pub const POLLWRBAND: u32 = 512; -pub const POLLMSG: u32 = 1024; -pub const POLLREMOVE: u32 = 4096; -pub const POLLRDHUP: u32 = 8192; -pub const PR_SET_PDEATHSIG: u32 = 1; -pub const PR_GET_PDEATHSIG: u32 = 2; -pub const PR_GET_DUMPABLE: u32 = 3; -pub const PR_SET_DUMPABLE: u32 = 4; -pub const PR_GET_UNALIGN: u32 = 5; -pub const PR_SET_UNALIGN: u32 = 6; -pub const PR_UNALIGN_NOPRINT: u32 = 1; -pub const PR_UNALIGN_SIGBUS: u32 = 2; -pub const PR_GET_KEEPCAPS: u32 = 7; -pub const PR_SET_KEEPCAPS: u32 = 8; -pub const PR_GET_FPEMU: u32 = 9; -pub const PR_SET_FPEMU: u32 = 10; -pub const PR_FPEMU_NOPRINT: u32 = 1; -pub const PR_FPEMU_SIGFPE: u32 = 2; -pub const PR_GET_FPEXC: u32 = 11; -pub const PR_SET_FPEXC: u32 = 12; -pub const PR_FP_EXC_SW_ENABLE: u32 = 128; -pub const PR_FP_EXC_DIV: u32 = 65536; -pub const PR_FP_EXC_OVF: u32 = 131072; -pub const PR_FP_EXC_UND: u32 = 262144; -pub const PR_FP_EXC_RES: u32 = 524288; -pub const PR_FP_EXC_INV: u32 = 1048576; -pub const PR_FP_EXC_DISABLED: u32 = 0; -pub const PR_FP_EXC_NONRECOV: u32 = 1; -pub const PR_FP_EXC_ASYNC: u32 = 2; -pub const PR_FP_EXC_PRECISE: u32 = 3; -pub const PR_GET_TIMING: u32 = 13; -pub const PR_SET_TIMING: u32 = 14; -pub const PR_TIMING_STATISTICAL: u32 = 0; -pub const PR_TIMING_TIMESTAMP: u32 = 1; -pub const PR_SET_NAME: u32 = 15; -pub const PR_GET_NAME: u32 = 16; -pub const PR_GET_ENDIAN: u32 = 19; -pub const PR_SET_ENDIAN: u32 = 20; -pub const PR_ENDIAN_BIG: u32 = 0; -pub const PR_ENDIAN_LITTLE: u32 = 1; -pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; -pub const PR_GET_SECCOMP: u32 = 21; -pub const PR_SET_SECCOMP: u32 = 22; -pub const PR_CAPBSET_READ: u32 = 23; -pub const PR_CAPBSET_DROP: u32 = 24; -pub const PR_GET_TSC: u32 = 25; -pub const PR_SET_TSC: u32 = 26; -pub const PR_TSC_ENABLE: u32 = 1; -pub const PR_TSC_SIGSEGV: u32 = 2; -pub const PR_GET_SECUREBITS: u32 = 27; -pub const PR_SET_SECUREBITS: u32 = 28; -pub const PR_SET_TIMERSLACK: u32 = 29; -pub const PR_GET_TIMERSLACK: u32 = 30; -pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; -pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; -pub const PR_MCE_KILL: u32 = 33; -pub const PR_MCE_KILL_CLEAR: u32 = 0; -pub const PR_MCE_KILL_SET: u32 = 1; -pub const PR_MCE_KILL_LATE: u32 = 0; -pub const PR_MCE_KILL_EARLY: u32 = 1; -pub const PR_MCE_KILL_DEFAULT: u32 = 2; -pub const PR_MCE_KILL_GET: u32 = 34; -pub const PR_SET_MM: u32 = 35; -pub const PR_SET_MM_START_CODE: u32 = 1; -pub const PR_SET_MM_END_CODE: u32 = 2; -pub const PR_SET_MM_START_DATA: u32 = 3; -pub const PR_SET_MM_END_DATA: u32 = 4; -pub const PR_SET_MM_START_STACK: u32 = 5; -pub const PR_SET_MM_START_BRK: u32 = 6; -pub const PR_SET_MM_BRK: u32 = 7; -pub const PR_SET_MM_ARG_START: u32 = 8; -pub const PR_SET_MM_ARG_END: u32 = 9; -pub const PR_SET_MM_ENV_START: u32 = 10; -pub const PR_SET_MM_ENV_END: u32 = 11; -pub const PR_SET_MM_AUXV: u32 = 12; -pub const PR_SET_MM_EXE_FILE: u32 = 13; -pub const PR_SET_MM_MAP: u32 = 14; -pub const PR_SET_MM_MAP_SIZE: u32 = 15; -pub const PR_SET_PTRACER: u32 = 1499557217; -pub const PR_SET_CHILD_SUBREAPER: u32 = 36; -pub const PR_GET_CHILD_SUBREAPER: u32 = 37; -pub const PR_SET_NO_NEW_PRIVS: u32 = 38; -pub const PR_GET_NO_NEW_PRIVS: u32 = 39; -pub const PR_GET_TID_ADDRESS: u32 = 40; -pub const PR_SET_THP_DISABLE: u32 = 41; -pub const PR_GET_THP_DISABLE: u32 = 42; -pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; -pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; -pub const PR_SET_FP_MODE: u32 = 45; -pub const PR_GET_FP_MODE: u32 = 46; -pub const PR_FP_MODE_FR: u32 = 1; -pub const PR_FP_MODE_FRE: u32 = 2; -pub const PR_CAP_AMBIENT: u32 = 47; -pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; -pub const PR_CAP_AMBIENT_RAISE: u32 = 2; -pub const PR_CAP_AMBIENT_LOWER: u32 = 3; -pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; -pub const PR_SVE_SET_VL: u32 = 50; -pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SVE_GET_VL: u32 = 51; -pub const PR_SVE_VL_LEN_MASK: u32 = 65535; -pub const PR_SVE_VL_INHERIT: u32 = 131072; -pub const PR_GET_SPECULATION_CTRL: u32 = 52; -pub const PR_SET_SPECULATION_CTRL: u32 = 53; -pub const PR_SPEC_STORE_BYPASS: u32 = 0; -pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; -pub const PR_SPEC_L1D_FLUSH: u32 = 2; -pub const PR_SPEC_NOT_AFFECTED: u32 = 0; -pub const PR_SPEC_PRCTL: u32 = 1; -pub const PR_SPEC_ENABLE: u32 = 2; -pub const PR_SPEC_DISABLE: u32 = 4; -pub const PR_SPEC_FORCE_DISABLE: u32 = 8; -pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; -pub const PR_PAC_RESET_KEYS: u32 = 54; -pub const PR_PAC_APIAKEY: u32 = 1; -pub const PR_PAC_APIBKEY: u32 = 2; -pub const PR_PAC_APDAKEY: u32 = 4; -pub const PR_PAC_APDBKEY: u32 = 8; -pub const PR_PAC_APGAKEY: u32 = 16; -pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; -pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; -pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; -pub const PR_MTE_TCF_NONE: u32 = 0; -pub const PR_MTE_TCF_SYNC: u32 = 2; -pub const PR_MTE_TCF_ASYNC: u32 = 4; -pub const PR_MTE_TCF_MASK: u32 = 6; -pub const PR_MTE_TAG_SHIFT: u32 = 3; -pub const PR_MTE_TAG_MASK: u32 = 524280; -pub const PR_MTE_TCF_SHIFT: u32 = 1; -pub const PR_SET_IO_FLUSHER: u32 = 57; -pub const PR_GET_IO_FLUSHER: u32 = 58; -pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; -pub const PR_SYS_DISPATCH_OFF: u32 = 0; -pub const PR_SYS_DISPATCH_ON: u32 = 1; -pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; -pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; -pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; -pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; -pub const PR_SCHED_CORE: u32 = 62; -pub const PR_SCHED_CORE_GET: u32 = 0; -pub const PR_SCHED_CORE_CREATE: u32 = 1; -pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; -pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; -pub const PR_SCHED_CORE_MAX: u32 = 4; -pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; -pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; -pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; -pub const PR_SME_SET_VL: u32 = 63; -pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SME_GET_VL: u32 = 64; -pub const PR_SME_VL_LEN_MASK: u32 = 65535; -pub const PR_SME_VL_INHERIT: u32 = 131072; -pub const PR_SET_MDWE: u32 = 65; -pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; -pub const PR_GET_MDWE: u32 = 66; -pub const PR_SET_VMA: u32 = 1398164801; -pub const PR_SET_VMA_ANON_NAME: u32 = 0; -pub const GRND_NONBLOCK: u32 = 1; -pub const GRND_RANDOM: u32 = 2; -pub const GRND_INSECURE: u32 = 4; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -pub const CLOCK_REALTIME: u32 = 0; -pub const CLOCK_MONOTONIC: u32 = 1; -pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; -pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; -pub const CLOCK_MONOTONIC_RAW: u32 = 4; -pub const CLOCK_REALTIME_COARSE: u32 = 5; -pub const CLOCK_MONOTONIC_COARSE: u32 = 6; -pub const CLOCK_BOOTTIME: u32 = 7; -pub const CLOCK_REALTIME_ALARM: u32 = 8; -pub const CLOCK_BOOTTIME_ALARM: u32 = 9; -pub const CLOCK_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const RUSAGE_SELF: u32 = 0; -pub const RUSAGE_CHILDREN: i32 = -1; -pub const RUSAGE_BOTH: i32 = -2; -pub const RUSAGE_THREAD: u32 = 1; -pub const RLIM64_INFINITY: i32 = -1; -pub const PRIO_MIN: i32 = -20; -pub const PRIO_MAX: u32 = 20; -pub const PRIO_PROCESS: u32 = 0; -pub const PRIO_PGRP: u32 = 1; -pub const PRIO_USER: u32 = 2; -pub const _STK_LIM: u32 = 8388608; -pub const MLOCK_LIMIT: u32 = 8388608; -pub const RLIMIT_CPU: u32 = 0; -pub const RLIMIT_FSIZE: u32 = 1; -pub const RLIMIT_DATA: u32 = 2; -pub const RLIMIT_STACK: u32 = 3; -pub const RLIMIT_CORE: u32 = 4; -pub const RLIMIT_RSS: u32 = 5; -pub const RLIMIT_NPROC: u32 = 6; -pub const RLIMIT_NOFILE: u32 = 7; -pub const RLIMIT_MEMLOCK: u32 = 8; -pub const RLIMIT_AS: u32 = 9; -pub const RLIMIT_LOCKS: u32 = 10; -pub const RLIMIT_SIGPENDING: u32 = 11; -pub const RLIMIT_MSGQUEUE: u32 = 12; -pub const RLIMIT_NICE: u32 = 13; -pub const RLIMIT_RTPRIO: u32 = 14; -pub const RLIMIT_RTTIME: u32 = 15; -pub const RLIM_NLIMITS: u32 = 16; -pub const RLIM_INFINITY: i32 = -1; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const NSIG: u32 = 32; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGBUS: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGUSR1: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGUSR2: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGSTKFLT: u32 = 16; -pub const SIGCHLD: u32 = 17; -pub const SIGCONT: u32 = 18; -pub const SIGSTOP: u32 = 19; -pub const SIGTSTP: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGURG: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGIO: u32 = 29; -pub const SIGPOLL: u32 = 29; -pub const SIGPWR: u32 = 30; -pub const SIGSYS: u32 = 31; -pub const SIGUNUSED: u32 = 31; -pub const SIGRTMIN: u32 = 32; -pub const SA_RESTORER: u32 = 67108864; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; -pub const SA_NOCLDSTOP: u32 = 1; -pub const SA_NOCLDWAIT: u32 = 2; -pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; -pub const SA_ONSTACK: u32 = 134217728; -pub const SA_RESTART: u32 = 268435456; -pub const SA_NODEFER: u32 = 1073741824; -pub const SA_RESETHAND: u32 = 2147483648; -pub const SA_NOMASK: u32 = 1073741824; -pub const SA_ONESHOT: u32 = 2147483648; -pub const SIG_BLOCK: u32 = 0; -pub const SIG_UNBLOCK: u32 = 1; -pub const SIG_SETMASK: u32 = 2; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; -pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const S_IFMT: u32 = 61440; -pub const S_IFSOCK: u32 = 49152; -pub const S_IFLNK: u32 = 40960; -pub const S_IFREG: u32 = 32768; -pub const S_IFBLK: u32 = 24576; -pub const S_IFDIR: u32 = 16384; -pub const S_IFCHR: u32 = 8192; -pub const S_IFIFO: u32 = 4096; -pub const S_ISUID: u32 = 2048; -pub const S_ISGID: u32 = 1024; -pub const S_ISVTX: u32 = 512; -pub const S_IRWXU: u32 = 448; -pub const S_IRUSR: u32 = 256; -pub const S_IWUSR: u32 = 128; -pub const S_IXUSR: u32 = 64; -pub const S_IRWXG: u32 = 56; -pub const S_IRGRP: u32 = 32; -pub const S_IWGRP: u32 = 16; -pub const S_IXGRP: u32 = 8; -pub const S_IRWXO: u32 = 7; -pub const S_IROTH: u32 = 4; -pub const S_IWOTH: u32 = 2; -pub const S_IXOTH: u32 = 1; -pub const STATX_TYPE: u32 = 1; -pub const STATX_MODE: u32 = 2; -pub const STATX_NLINK: u32 = 4; -pub const STATX_UID: u32 = 8; -pub const STATX_GID: u32 = 16; -pub const STATX_ATIME: u32 = 32; -pub const STATX_MTIME: u32 = 64; -pub const STATX_CTIME: u32 = 128; -pub const STATX_INO: u32 = 256; -pub const STATX_SIZE: u32 = 512; -pub const STATX_BLOCKS: u32 = 1024; -pub const STATX_BASIC_STATS: u32 = 2047; -pub const STATX_BTIME: u32 = 2048; -pub const STATX_MNT_ID: u32 = 4096; -pub const STATX_DIOALIGN: u32 = 8192; -pub const STATX__RESERVED: u32 = 2147483648; -pub const STATX_ALL: u32 = 4095; -pub const STATX_ATTR_COMPRESSED: u32 = 4; -pub const STATX_ATTR_IMMUTABLE: u32 = 16; -pub const STATX_ATTR_APPEND: u32 = 32; -pub const STATX_ATTR_NODUMP: u32 = 64; -pub const STATX_ATTR_ENCRYPTED: u32 = 2048; -pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; -pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; -pub const STATX_ATTR_VERITY: u32 = 1048576; -pub const STATX_ATTR_DAX: u32 = 2097152; -pub const SI_LOAD_SHIFT: u32 = 16; -pub const TCP_MSS_DEFAULT: u32 = 536; -pub const TCP_MSS_DESIRED: u32 = 1220; -pub const TCP_NODELAY: u32 = 1; -pub const TCP_MAXSEG: u32 = 2; -pub const TCP_CORK: u32 = 3; -pub const TCP_KEEPIDLE: u32 = 4; -pub const TCP_KEEPINTVL: u32 = 5; -pub const TCP_KEEPCNT: u32 = 6; -pub const TCP_SYNCNT: u32 = 7; -pub const TCP_LINGER2: u32 = 8; -pub const TCP_DEFER_ACCEPT: u32 = 9; -pub const TCP_WINDOW_CLAMP: u32 = 10; -pub const TCP_INFO: u32 = 11; -pub const TCP_QUICKACK: u32 = 12; -pub const TCP_CONGESTION: u32 = 13; -pub const TCP_MD5SIG: u32 = 14; -pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; -pub const TCP_THIN_DUPACK: u32 = 17; -pub const TCP_USER_TIMEOUT: u32 = 18; -pub const TCP_REPAIR: u32 = 19; -pub const TCP_REPAIR_QUEUE: u32 = 20; -pub const TCP_QUEUE_SEQ: u32 = 21; -pub const TCP_REPAIR_OPTIONS: u32 = 22; -pub const TCP_FASTOPEN: u32 = 23; -pub const TCP_TIMESTAMP: u32 = 24; -pub const TCP_NOTSENT_LOWAT: u32 = 25; -pub const TCP_CC_INFO: u32 = 26; -pub const TCP_SAVE_SYN: u32 = 27; -pub const TCP_SAVED_SYN: u32 = 28; -pub const TCP_REPAIR_WINDOW: u32 = 29; -pub const TCP_FASTOPEN_CONNECT: u32 = 30; -pub const TCP_ULP: u32 = 31; -pub const TCP_MD5SIG_EXT: u32 = 32; -pub const TCP_FASTOPEN_KEY: u32 = 33; -pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; -pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; -pub const TCP_INQ: u32 = 36; -pub const TCP_CM_INQ: u32 = 36; -pub const TCP_TX_DELAY: u32 = 37; -pub const TCP_REPAIR_ON: u32 = 1; -pub const TCP_REPAIR_OFF: u32 = 0; -pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; -pub const TCPI_OPT_TIMESTAMPS: u32 = 1; -pub const TCPI_OPT_SACK: u32 = 2; -pub const TCPI_OPT_WSCALE: u32 = 4; -pub const TCPI_OPT_ECN: u32 = 8; -pub const TCPI_OPT_ECN_SEEN: u32 = 16; -pub const TCPI_OPT_SYN_DATA: u32 = 32; -pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; -pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; -pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; -pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; -pub const IGNBRK: u32 = 1; -pub const BRKINT: u32 = 2; -pub const IGNPAR: u32 = 4; -pub const PARMRK: u32 = 8; -pub const INPCK: u32 = 16; -pub const ISTRIP: u32 = 32; -pub const INLCR: u32 = 64; -pub const IGNCR: u32 = 128; -pub const ICRNL: u32 = 256; -pub const IXANY: u32 = 2048; -pub const OPOST: u32 = 1; -pub const OCRNL: u32 = 8; -pub const ONOCR: u32 = 16; -pub const ONLRET: u32 = 32; -pub const OFILL: u32 = 64; -pub const OFDEL: u32 = 128; -pub const B0: u32 = 0; -pub const B50: u32 = 1; -pub const B75: u32 = 2; -pub const B110: u32 = 3; -pub const B134: u32 = 4; -pub const B150: u32 = 5; -pub const B200: u32 = 6; -pub const B300: u32 = 7; -pub const B600: u32 = 8; -pub const B1200: u32 = 9; -pub const B1800: u32 = 10; -pub const B2400: u32 = 11; -pub const B4800: u32 = 12; -pub const B9600: u32 = 13; -pub const B19200: u32 = 14; -pub const B38400: u32 = 15; -pub const EXTA: u32 = 14; -pub const EXTB: u32 = 15; -pub const ADDRB: u32 = 536870912; -pub const CMSPAR: u32 = 1073741824; -pub const CRTSCTS: u32 = 2147483648; -pub const IBSHIFT: u32 = 16; -pub const TCOOFF: u32 = 0; -pub const TCOON: u32 = 1; -pub const TCIOFF: u32 = 2; -pub const TCION: u32 = 3; -pub const TCIFLUSH: u32 = 0; -pub const TCOFLUSH: u32 = 1; -pub const TCIOFLUSH: u32 = 2; -pub const NCCS: u32 = 19; -pub const VINTR: u32 = 0; -pub const VQUIT: u32 = 1; -pub const VERASE: u32 = 2; -pub const VKILL: u32 = 3; -pub const VEOF: u32 = 4; -pub const VTIME: u32 = 5; -pub const VMIN: u32 = 6; -pub const VSWTC: u32 = 7; -pub const VSTART: u32 = 8; -pub const VSTOP: u32 = 9; -pub const VSUSP: u32 = 10; -pub const VEOL: u32 = 11; -pub const VREPRINT: u32 = 12; -pub const VDISCARD: u32 = 13; -pub const VWERASE: u32 = 14; -pub const VLNEXT: u32 = 15; -pub const VEOL2: u32 = 16; -pub const IUCLC: u32 = 512; -pub const IXON: u32 = 1024; -pub const IXOFF: u32 = 4096; -pub const IMAXBEL: u32 = 8192; -pub const IUTF8: u32 = 16384; -pub const OLCUC: u32 = 2; -pub const ONLCR: u32 = 4; -pub const NLDLY: u32 = 256; -pub const NL0: u32 = 0; -pub const NL1: u32 = 256; -pub const CRDLY: u32 = 1536; -pub const CR0: u32 = 0; -pub const CR1: u32 = 512; -pub const CR2: u32 = 1024; -pub const CR3: u32 = 1536; -pub const TABDLY: u32 = 6144; -pub const TAB0: u32 = 0; -pub const TAB1: u32 = 2048; -pub const TAB2: u32 = 4096; -pub const TAB3: u32 = 6144; -pub const XTABS: u32 = 6144; -pub const BSDLY: u32 = 8192; -pub const BS0: u32 = 0; -pub const BS1: u32 = 8192; -pub const VTDLY: u32 = 16384; -pub const VT0: u32 = 0; -pub const VT1: u32 = 16384; -pub const FFDLY: u32 = 32768; -pub const FF0: u32 = 0; -pub const FF1: u32 = 32768; -pub const CBAUD: u32 = 4111; -pub const CSIZE: u32 = 48; -pub const CS5: u32 = 0; -pub const CS6: u32 = 16; -pub const CS7: u32 = 32; -pub const CS8: u32 = 48; -pub const CSTOPB: u32 = 64; -pub const CREAD: u32 = 128; -pub const PARENB: u32 = 256; -pub const PARODD: u32 = 512; -pub const HUPCL: u32 = 1024; -pub const CLOCAL: u32 = 2048; -pub const CBAUDEX: u32 = 4096; -pub const BOTHER: u32 = 4096; -pub const B57600: u32 = 4097; -pub const B115200: u32 = 4098; -pub const B230400: u32 = 4099; -pub const B460800: u32 = 4100; -pub const B500000: u32 = 4101; -pub const B576000: u32 = 4102; -pub const B921600: u32 = 4103; -pub const B1000000: u32 = 4104; -pub const B1152000: u32 = 4105; -pub const B1500000: u32 = 4106; -pub const B2000000: u32 = 4107; -pub const B2500000: u32 = 4108; -pub const B3000000: u32 = 4109; -pub const B3500000: u32 = 4110; -pub const B4000000: u32 = 4111; -pub const CIBAUD: u32 = 269418496; -pub const ISIG: u32 = 1; -pub const ICANON: u32 = 2; -pub const XCASE: u32 = 4; -pub const ECHO: u32 = 8; -pub const ECHOE: u32 = 16; -pub const ECHOK: u32 = 32; -pub const ECHONL: u32 = 64; -pub const NOFLSH: u32 = 128; -pub const TOSTOP: u32 = 256; -pub const ECHOCTL: u32 = 512; -pub const ECHOPRT: u32 = 1024; -pub const ECHOKE: u32 = 2048; -pub const FLUSHO: u32 = 4096; -pub const PENDIN: u32 = 16384; -pub const IEXTEN: u32 = 32768; -pub const EXTPROC: u32 = 65536; -pub const TCSANOW: u32 = 0; -pub const TCSADRAIN: u32 = 1; -pub const TCSAFLUSH: u32 = 2; -pub const TIOCPKT_DATA: u32 = 0; -pub const TIOCPKT_FLUSHREAD: u32 = 1; -pub const TIOCPKT_FLUSHWRITE: u32 = 2; -pub const TIOCPKT_STOP: u32 = 4; -pub const TIOCPKT_START: u32 = 8; -pub const TIOCPKT_NOSTOP: u32 = 16; -pub const TIOCPKT_DOSTOP: u32 = 32; -pub const TIOCPKT_IOCTL: u32 = 64; -pub const TIOCSER_TEMT: u32 = 1; -pub const NCC: u32 = 8; -pub const TIOCM_LE: u32 = 1; -pub const TIOCM_DTR: u32 = 2; -pub const TIOCM_RTS: u32 = 4; -pub const TIOCM_ST: u32 = 8; -pub const TIOCM_SR: u32 = 16; -pub const TIOCM_CTS: u32 = 32; -pub const TIOCM_CAR: u32 = 64; -pub const TIOCM_RNG: u32 = 128; -pub const TIOCM_DSR: u32 = 256; -pub const TIOCM_CD: u32 = 64; -pub const TIOCM_RI: u32 = 128; -pub const TIOCM_OUT1: u32 = 8192; -pub const TIOCM_OUT2: u32 = 16384; -pub const TIOCM_LOOP: u32 = 32768; -pub const UIO_FASTIOV: u32 = 8; -pub const UIO_MAXIOV: u32 = 1024; -pub const UNIX_PATH_MAX: u32 = 108; -pub const __X32_SYSCALL_BIT: u32 = 1073741824; -pub const __NR_restart_syscall: u32 = 0; -pub const __NR_exit: u32 = 1; -pub const __NR_fork: u32 = 2; -pub const __NR_read: u32 = 3; -pub const __NR_write: u32 = 4; -pub const __NR_open: u32 = 5; -pub const __NR_close: u32 = 6; -pub const __NR_waitpid: u32 = 7; -pub const __NR_creat: u32 = 8; -pub const __NR_link: u32 = 9; -pub const __NR_unlink: u32 = 10; -pub const __NR_execve: u32 = 11; -pub const __NR_chdir: u32 = 12; -pub const __NR_time: u32 = 13; -pub const __NR_mknod: u32 = 14; -pub const __NR_chmod: u32 = 15; -pub const __NR_lchown: u32 = 16; -pub const __NR_break: u32 = 17; -pub const __NR_oldstat: u32 = 18; -pub const __NR_lseek: u32 = 19; -pub const __NR_getpid: u32 = 20; -pub const __NR_mount: u32 = 21; -pub const __NR_umount: u32 = 22; -pub const __NR_setuid: u32 = 23; -pub const __NR_getuid: u32 = 24; -pub const __NR_stime: u32 = 25; -pub const __NR_ptrace: u32 = 26; -pub const __NR_alarm: u32 = 27; -pub const __NR_oldfstat: u32 = 28; -pub const __NR_pause: u32 = 29; -pub const __NR_utime: u32 = 30; -pub const __NR_stty: u32 = 31; -pub const __NR_gtty: u32 = 32; -pub const __NR_access: u32 = 33; -pub const __NR_nice: u32 = 34; -pub const __NR_ftime: u32 = 35; -pub const __NR_sync: u32 = 36; -pub const __NR_kill: u32 = 37; -pub const __NR_rename: u32 = 38; -pub const __NR_mkdir: u32 = 39; -pub const __NR_rmdir: u32 = 40; -pub const __NR_dup: u32 = 41; -pub const __NR_pipe: u32 = 42; -pub const __NR_times: u32 = 43; -pub const __NR_prof: u32 = 44; -pub const __NR_brk: u32 = 45; -pub const __NR_setgid: u32 = 46; -pub const __NR_getgid: u32 = 47; -pub const __NR_signal: u32 = 48; -pub const __NR_geteuid: u32 = 49; -pub const __NR_getegid: u32 = 50; -pub const __NR_acct: u32 = 51; -pub const __NR_umount2: u32 = 52; -pub const __NR_lock: u32 = 53; -pub const __NR_ioctl: u32 = 54; -pub const __NR_fcntl: u32 = 55; -pub const __NR_mpx: u32 = 56; -pub const __NR_setpgid: u32 = 57; -pub const __NR_ulimit: u32 = 58; -pub const __NR_oldolduname: u32 = 59; -pub const __NR_umask: u32 = 60; -pub const __NR_chroot: u32 = 61; -pub const __NR_ustat: u32 = 62; -pub const __NR_dup2: u32 = 63; -pub const __NR_getppid: u32 = 64; -pub const __NR_getpgrp: u32 = 65; -pub const __NR_setsid: u32 = 66; -pub const __NR_sigaction: u32 = 67; -pub const __NR_sgetmask: u32 = 68; -pub const __NR_ssetmask: u32 = 69; -pub const __NR_setreuid: u32 = 70; -pub const __NR_setregid: u32 = 71; -pub const __NR_sigsuspend: u32 = 72; -pub const __NR_sigpending: u32 = 73; -pub const __NR_sethostname: u32 = 74; -pub const __NR_setrlimit: u32 = 75; -pub const __NR_getrlimit: u32 = 76; -pub const __NR_getrusage: u32 = 77; -pub const __NR_gettimeofday: u32 = 78; -pub const __NR_settimeofday: u32 = 79; -pub const __NR_getgroups: u32 = 80; -pub const __NR_setgroups: u32 = 81; -pub const __NR_select: u32 = 82; -pub const __NR_symlink: u32 = 83; -pub const __NR_oldlstat: u32 = 84; -pub const __NR_readlink: u32 = 85; -pub const __NR_uselib: u32 = 86; -pub const __NR_swapon: u32 = 87; -pub const __NR_reboot: u32 = 88; -pub const __NR_readdir: u32 = 89; -pub const __NR_mmap: u32 = 90; -pub const __NR_munmap: u32 = 91; -pub const __NR_truncate: u32 = 92; -pub const __NR_ftruncate: u32 = 93; -pub const __NR_fchmod: u32 = 94; -pub const __NR_fchown: u32 = 95; -pub const __NR_getpriority: u32 = 96; -pub const __NR_setpriority: u32 = 97; -pub const __NR_profil: u32 = 98; -pub const __NR_statfs: u32 = 99; -pub const __NR_fstatfs: u32 = 100; -pub const __NR_ioperm: u32 = 101; -pub const __NR_socketcall: u32 = 102; -pub const __NR_syslog: u32 = 103; -pub const __NR_setitimer: u32 = 104; -pub const __NR_getitimer: u32 = 105; -pub const __NR_stat: u32 = 106; -pub const __NR_lstat: u32 = 107; -pub const __NR_fstat: u32 = 108; -pub const __NR_olduname: u32 = 109; -pub const __NR_iopl: u32 = 110; -pub const __NR_vhangup: u32 = 111; -pub const __NR_idle: u32 = 112; -pub const __NR_vm86old: u32 = 113; -pub const __NR_wait4: u32 = 114; -pub const __NR_swapoff: u32 = 115; -pub const __NR_sysinfo: u32 = 116; -pub const __NR_ipc: u32 = 117; -pub const __NR_fsync: u32 = 118; -pub const __NR_sigreturn: u32 = 119; -pub const __NR_clone: u32 = 120; -pub const __NR_setdomainname: u32 = 121; -pub const __NR_uname: u32 = 122; -pub const __NR_modify_ldt: u32 = 123; -pub const __NR_adjtimex: u32 = 124; -pub const __NR_mprotect: u32 = 125; -pub const __NR_sigprocmask: u32 = 126; -pub const __NR_create_module: u32 = 127; -pub const __NR_init_module: u32 = 128; -pub const __NR_delete_module: u32 = 129; -pub const __NR_get_kernel_syms: u32 = 130; -pub const __NR_quotactl: u32 = 131; -pub const __NR_getpgid: u32 = 132; -pub const __NR_fchdir: u32 = 133; -pub const __NR_bdflush: u32 = 134; -pub const __NR_sysfs: u32 = 135; -pub const __NR_personality: u32 = 136; -pub const __NR_afs_syscall: u32 = 137; -pub const __NR_setfsuid: u32 = 138; -pub const __NR_setfsgid: u32 = 139; -pub const __NR__llseek: u32 = 140; -pub const __NR_getdents: u32 = 141; -pub const __NR__newselect: u32 = 142; -pub const __NR_flock: u32 = 143; -pub const __NR_msync: u32 = 144; -pub const __NR_readv: u32 = 145; -pub const __NR_writev: u32 = 146; -pub const __NR_getsid: u32 = 147; -pub const __NR_fdatasync: u32 = 148; -pub const __NR__sysctl: u32 = 149; -pub const __NR_mlock: u32 = 150; -pub const __NR_munlock: u32 = 151; -pub const __NR_mlockall: u32 = 152; -pub const __NR_munlockall: u32 = 153; -pub const __NR_sched_setparam: u32 = 154; -pub const __NR_sched_getparam: u32 = 155; -pub const __NR_sched_setscheduler: u32 = 156; -pub const __NR_sched_getscheduler: u32 = 157; -pub const __NR_sched_yield: u32 = 158; -pub const __NR_sched_get_priority_max: u32 = 159; -pub const __NR_sched_get_priority_min: u32 = 160; -pub const __NR_sched_rr_get_interval: u32 = 161; -pub const __NR_nanosleep: u32 = 162; -pub const __NR_mremap: u32 = 163; -pub const __NR_setresuid: u32 = 164; -pub const __NR_getresuid: u32 = 165; -pub const __NR_vm86: u32 = 166; -pub const __NR_query_module: u32 = 167; -pub const __NR_poll: u32 = 168; -pub const __NR_nfsservctl: u32 = 169; -pub const __NR_setresgid: u32 = 170; -pub const __NR_getresgid: u32 = 171; -pub const __NR_prctl: u32 = 172; -pub const __NR_rt_sigreturn: u32 = 173; -pub const __NR_rt_sigaction: u32 = 174; -pub const __NR_rt_sigprocmask: u32 = 175; -pub const __NR_rt_sigpending: u32 = 176; -pub const __NR_rt_sigtimedwait: u32 = 177; -pub const __NR_rt_sigqueueinfo: u32 = 178; -pub const __NR_rt_sigsuspend: u32 = 179; -pub const __NR_pread64: u32 = 180; -pub const __NR_pwrite64: u32 = 181; -pub const __NR_chown: u32 = 182; -pub const __NR_getcwd: u32 = 183; -pub const __NR_capget: u32 = 184; -pub const __NR_capset: u32 = 185; -pub const __NR_sigaltstack: u32 = 186; -pub const __NR_sendfile: u32 = 187; -pub const __NR_getpmsg: u32 = 188; -pub const __NR_putpmsg: u32 = 189; -pub const __NR_vfork: u32 = 190; -pub const __NR_ugetrlimit: u32 = 191; -pub const __NR_mmap2: u32 = 192; -pub const __NR_truncate64: u32 = 193; -pub const __NR_ftruncate64: u32 = 194; -pub const __NR_stat64: u32 = 195; -pub const __NR_lstat64: u32 = 196; -pub const __NR_fstat64: u32 = 197; -pub const __NR_lchown32: u32 = 198; -pub const __NR_getuid32: u32 = 199; -pub const __NR_getgid32: u32 = 200; -pub const __NR_geteuid32: u32 = 201; -pub const __NR_getegid32: u32 = 202; -pub const __NR_setreuid32: u32 = 203; -pub const __NR_setregid32: u32 = 204; -pub const __NR_getgroups32: u32 = 205; -pub const __NR_setgroups32: u32 = 206; -pub const __NR_fchown32: u32 = 207; -pub const __NR_setresuid32: u32 = 208; -pub const __NR_getresuid32: u32 = 209; -pub const __NR_setresgid32: u32 = 210; -pub const __NR_getresgid32: u32 = 211; -pub const __NR_chown32: u32 = 212; -pub const __NR_setuid32: u32 = 213; -pub const __NR_setgid32: u32 = 214; -pub const __NR_setfsuid32: u32 = 215; -pub const __NR_setfsgid32: u32 = 216; -pub const __NR_pivot_root: u32 = 217; -pub const __NR_mincore: u32 = 218; -pub const __NR_madvise: u32 = 219; -pub const __NR_getdents64: u32 = 220; -pub const __NR_fcntl64: u32 = 221; -pub const __NR_gettid: u32 = 224; -pub const __NR_readahead: u32 = 225; -pub const __NR_setxattr: u32 = 226; -pub const __NR_lsetxattr: u32 = 227; -pub const __NR_fsetxattr: u32 = 228; -pub const __NR_getxattr: u32 = 229; -pub const __NR_lgetxattr: u32 = 230; -pub const __NR_fgetxattr: u32 = 231; -pub const __NR_listxattr: u32 = 232; -pub const __NR_llistxattr: u32 = 233; -pub const __NR_flistxattr: u32 = 234; -pub const __NR_removexattr: u32 = 235; -pub const __NR_lremovexattr: u32 = 236; -pub const __NR_fremovexattr: u32 = 237; -pub const __NR_tkill: u32 = 238; -pub const __NR_sendfile64: u32 = 239; -pub const __NR_futex: u32 = 240; -pub const __NR_sched_setaffinity: u32 = 241; -pub const __NR_sched_getaffinity: u32 = 242; -pub const __NR_set_thread_area: u32 = 243; -pub const __NR_get_thread_area: u32 = 244; -pub const __NR_io_setup: u32 = 245; -pub const __NR_io_destroy: u32 = 246; -pub const __NR_io_getevents: u32 = 247; -pub const __NR_io_submit: u32 = 248; -pub const __NR_io_cancel: u32 = 249; -pub const __NR_fadvise64: u32 = 250; -pub const __NR_exit_group: u32 = 252; -pub const __NR_lookup_dcookie: u32 = 253; -pub const __NR_epoll_create: u32 = 254; -pub const __NR_epoll_ctl: u32 = 255; -pub const __NR_epoll_wait: u32 = 256; -pub const __NR_remap_file_pages: u32 = 257; -pub const __NR_set_tid_address: u32 = 258; -pub const __NR_timer_create: u32 = 259; -pub const __NR_timer_settime: u32 = 260; -pub const __NR_timer_gettime: u32 = 261; -pub const __NR_timer_getoverrun: u32 = 262; -pub const __NR_timer_delete: u32 = 263; -pub const __NR_clock_settime: u32 = 264; -pub const __NR_clock_gettime: u32 = 265; -pub const __NR_clock_getres: u32 = 266; -pub const __NR_clock_nanosleep: u32 = 267; -pub const __NR_statfs64: u32 = 268; -pub const __NR_fstatfs64: u32 = 269; -pub const __NR_tgkill: u32 = 270; -pub const __NR_utimes: u32 = 271; -pub const __NR_fadvise64_64: u32 = 272; -pub const __NR_vserver: u32 = 273; -pub const __NR_mbind: u32 = 274; -pub const __NR_get_mempolicy: u32 = 275; -pub const __NR_set_mempolicy: u32 = 276; -pub const __NR_mq_open: u32 = 277; -pub const __NR_mq_unlink: u32 = 278; -pub const __NR_mq_timedsend: u32 = 279; -pub const __NR_mq_timedreceive: u32 = 280; -pub const __NR_mq_notify: u32 = 281; -pub const __NR_mq_getsetattr: u32 = 282; -pub const __NR_kexec_load: u32 = 283; -pub const __NR_waitid: u32 = 284; -pub const __NR_add_key: u32 = 286; -pub const __NR_request_key: u32 = 287; -pub const __NR_keyctl: u32 = 288; -pub const __NR_ioprio_set: u32 = 289; -pub const __NR_ioprio_get: u32 = 290; -pub const __NR_inotify_init: u32 = 291; -pub const __NR_inotify_add_watch: u32 = 292; -pub const __NR_inotify_rm_watch: u32 = 293; -pub const __NR_migrate_pages: u32 = 294; -pub const __NR_openat: u32 = 295; -pub const __NR_mkdirat: u32 = 296; -pub const __NR_mknodat: u32 = 297; -pub const __NR_fchownat: u32 = 298; -pub const __NR_futimesat: u32 = 299; -pub const __NR_fstatat64: u32 = 300; -pub const __NR_unlinkat: u32 = 301; -pub const __NR_renameat: u32 = 302; -pub const __NR_linkat: u32 = 303; -pub const __NR_symlinkat: u32 = 304; -pub const __NR_readlinkat: u32 = 305; -pub const __NR_fchmodat: u32 = 306; -pub const __NR_faccessat: u32 = 307; -pub const __NR_pselect6: u32 = 308; -pub const __NR_ppoll: u32 = 309; -pub const __NR_unshare: u32 = 310; -pub const __NR_set_robust_list: u32 = 311; -pub const __NR_get_robust_list: u32 = 312; -pub const __NR_splice: u32 = 313; -pub const __NR_sync_file_range: u32 = 314; -pub const __NR_tee: u32 = 315; -pub const __NR_vmsplice: u32 = 316; -pub const __NR_move_pages: u32 = 317; -pub const __NR_getcpu: u32 = 318; -pub const __NR_epoll_pwait: u32 = 319; -pub const __NR_utimensat: u32 = 320; -pub const __NR_signalfd: u32 = 321; -pub const __NR_timerfd_create: u32 = 322; -pub const __NR_eventfd: u32 = 323; -pub const __NR_fallocate: u32 = 324; -pub const __NR_timerfd_settime: u32 = 325; -pub const __NR_timerfd_gettime: u32 = 326; -pub const __NR_signalfd4: u32 = 327; -pub const __NR_eventfd2: u32 = 328; -pub const __NR_epoll_create1: u32 = 329; -pub const __NR_dup3: u32 = 330; -pub const __NR_pipe2: u32 = 331; -pub const __NR_inotify_init1: u32 = 332; -pub const __NR_preadv: u32 = 333; -pub const __NR_pwritev: u32 = 334; -pub const __NR_rt_tgsigqueueinfo: u32 = 335; -pub const __NR_perf_event_open: u32 = 336; -pub const __NR_recvmmsg: u32 = 337; -pub const __NR_fanotify_init: u32 = 338; -pub const __NR_fanotify_mark: u32 = 339; -pub const __NR_prlimit64: u32 = 340; -pub const __NR_name_to_handle_at: u32 = 341; -pub const __NR_open_by_handle_at: u32 = 342; -pub const __NR_clock_adjtime: u32 = 343; -pub const __NR_syncfs: u32 = 344; -pub const __NR_sendmmsg: u32 = 345; -pub const __NR_setns: u32 = 346; -pub const __NR_process_vm_readv: u32 = 347; -pub const __NR_process_vm_writev: u32 = 348; -pub const __NR_kcmp: u32 = 349; -pub const __NR_finit_module: u32 = 350; -pub const __NR_sched_setattr: u32 = 351; -pub const __NR_sched_getattr: u32 = 352; -pub const __NR_renameat2: u32 = 353; -pub const __NR_seccomp: u32 = 354; -pub const __NR_getrandom: u32 = 355; -pub const __NR_memfd_create: u32 = 356; -pub const __NR_bpf: u32 = 357; -pub const __NR_execveat: u32 = 358; -pub const __NR_socket: u32 = 359; -pub const __NR_socketpair: u32 = 360; -pub const __NR_bind: u32 = 361; -pub const __NR_connect: u32 = 362; -pub const __NR_listen: u32 = 363; -pub const __NR_accept4: u32 = 364; -pub const __NR_getsockopt: u32 = 365; -pub const __NR_setsockopt: u32 = 366; -pub const __NR_getsockname: u32 = 367; -pub const __NR_getpeername: u32 = 368; -pub const __NR_sendto: u32 = 369; -pub const __NR_sendmsg: u32 = 370; -pub const __NR_recvfrom: u32 = 371; -pub const __NR_recvmsg: u32 = 372; -pub const __NR_shutdown: u32 = 373; -pub const __NR_userfaultfd: u32 = 374; -pub const __NR_membarrier: u32 = 375; -pub const __NR_mlock2: u32 = 376; -pub const __NR_copy_file_range: u32 = 377; -pub const __NR_preadv2: u32 = 378; -pub const __NR_pwritev2: u32 = 379; -pub const __NR_pkey_mprotect: u32 = 380; -pub const __NR_pkey_alloc: u32 = 381; -pub const __NR_pkey_free: u32 = 382; -pub const __NR_statx: u32 = 383; -pub const __NR_arch_prctl: u32 = 384; -pub const __NR_io_pgetevents: u32 = 385; -pub const __NR_rseq: u32 = 386; -pub const __NR_semget: u32 = 393; -pub const __NR_semctl: u32 = 394; -pub const __NR_shmget: u32 = 395; -pub const __NR_shmctl: u32 = 396; -pub const __NR_shmat: u32 = 397; -pub const __NR_shmdt: u32 = 398; -pub const __NR_msgget: u32 = 399; -pub const __NR_msgsnd: u32 = 400; -pub const __NR_msgrcv: u32 = 401; -pub const __NR_msgctl: u32 = 402; -pub const __NR_clock_gettime64: u32 = 403; -pub const __NR_clock_settime64: u32 = 404; -pub const __NR_clock_adjtime64: u32 = 405; -pub const __NR_clock_getres_time64: u32 = 406; -pub const __NR_clock_nanosleep_time64: u32 = 407; -pub const __NR_timer_gettime64: u32 = 408; -pub const __NR_timer_settime64: u32 = 409; -pub const __NR_timerfd_gettime64: u32 = 410; -pub const __NR_timerfd_settime64: u32 = 411; -pub const __NR_utimensat_time64: u32 = 412; -pub const __NR_pselect6_time64: u32 = 413; -pub const __NR_ppoll_time64: u32 = 414; -pub const __NR_io_pgetevents_time64: u32 = 416; -pub const __NR_recvmmsg_time64: u32 = 417; -pub const __NR_mq_timedsend_time64: u32 = 418; -pub const __NR_mq_timedreceive_time64: u32 = 419; -pub const __NR_semtimedop_time64: u32 = 420; -pub const __NR_rt_sigtimedwait_time64: u32 = 421; -pub const __NR_futex_time64: u32 = 422; -pub const __NR_sched_rr_get_interval_time64: u32 = 423; -pub const __NR_pidfd_send_signal: u32 = 424; -pub const __NR_io_uring_setup: u32 = 425; -pub const __NR_io_uring_enter: u32 = 426; -pub const __NR_io_uring_register: u32 = 427; -pub const __NR_open_tree: u32 = 428; -pub const __NR_move_mount: u32 = 429; -pub const __NR_fsopen: u32 = 430; -pub const __NR_fsconfig: u32 = 431; -pub const __NR_fsmount: u32 = 432; -pub const __NR_fspick: u32 = 433; -pub const __NR_pidfd_open: u32 = 434; -pub const __NR_clone3: u32 = 435; -pub const __NR_close_range: u32 = 436; -pub const __NR_openat2: u32 = 437; -pub const __NR_pidfd_getfd: u32 = 438; -pub const __NR_faccessat2: u32 = 439; -pub const __NR_process_madvise: u32 = 440; -pub const __NR_epoll_pwait2: u32 = 441; -pub const __NR_mount_setattr: u32 = 442; -pub const __NR_quotactl_fd: u32 = 443; -pub const __NR_landlock_create_ruleset: u32 = 444; -pub const __NR_landlock_add_rule: u32 = 445; -pub const __NR_landlock_restrict_self: u32 = 446; -pub const __NR_memfd_secret: u32 = 447; -pub const __NR_process_mrelease: u32 = 448; -pub const __NR_futex_waitv: u32 = 449; -pub const __NR_set_mempolicy_home_node: u32 = 450; -pub const __OLD_UTS_LEN: u32 = 8; -pub const __NEW_UTS_LEN: u32 = 64; -pub const WNOHANG: u32 = 1; -pub const WUNTRACED: u32 = 2; -pub const WSTOPPED: u32 = 2; -pub const WEXITED: u32 = 4; -pub const WCONTINUED: u32 = 8; -pub const WNOWAIT: u32 = 16777216; -pub const __WNOTHREAD: u32 = 536870912; -pub const __WALL: u32 = 1073741824; -pub const __WCLONE: u32 = 2147483648; -pub const P_ALL: u32 = 0; -pub const P_PID: u32 = 1; -pub const P_PGID: u32 = 2; -pub const P_PIDFD: u32 = 3; -pub const XATTR_CREATE: u32 = 1; -pub const XATTR_REPLACE: u32 = 2; -pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0"; -pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0"; -pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0"; -pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0"; -pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0"; -pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0"; -pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0"; -pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0"; -pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0"; -pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0"; -pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0"; -pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0"; -pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0"; -pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0"; -pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0"; -pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0"; -pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0"; -pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0"; -pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0"; -pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0"; -pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0"; -pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0"; -pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0"; -pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0"; -pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0"; -pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0"; -pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0"; -pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0"; -pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0"; -pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0"; -pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0"; -pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0"; -pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0"; -pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0"; -pub const MFD_CLOEXEC: u32 = 1; -pub const MFD_ALLOW_SEALING: u32 = 2; -pub const MFD_HUGETLB: u32 = 4; -pub const MFD_NOEXEC_SEAL: u32 = 8; -pub const MFD_EXEC: u32 = 16; -pub const MFD_HUGE_SHIFT: u32 = 26; -pub const MFD_HUGE_MASK: u32 = 63; -pub const MFD_HUGE_64KB: u32 = 1073741824; -pub const MFD_HUGE_512KB: u32 = 1275068416; -pub const MFD_HUGE_1MB: u32 = 1342177280; -pub const MFD_HUGE_2MB: u32 = 1409286144; -pub const MFD_HUGE_8MB: u32 = 1543503872; -pub const MFD_HUGE_16MB: u32 = 1610612736; -pub const MFD_HUGE_32MB: u32 = 1677721600; -pub const MFD_HUGE_256MB: u32 = 1879048192; -pub const MFD_HUGE_512MB: u32 = 1946157056; -pub const MFD_HUGE_1GB: u32 = 2013265920; -pub const MFD_HUGE_2GB: u32 = 2080374784; -pub const MFD_HUGE_16GB: u32 = 2281701376; -pub const TFD_TIMER_ABSTIME: u32 = 1; -pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; -pub const TFD_CLOEXEC: u32 = 524288; -pub const TFD_NONBLOCK: u32 = 2048; -pub const USERFAULTFD_IOC: u32 = 170; -pub const _UFFDIO_REGISTER: u32 = 0; -pub const _UFFDIO_UNREGISTER: u32 = 1; -pub const _UFFDIO_WAKE: u32 = 2; -pub const _UFFDIO_COPY: u32 = 3; -pub const _UFFDIO_ZEROPAGE: u32 = 4; -pub const _UFFDIO_WRITEPROTECT: u32 = 6; -pub const _UFFDIO_CONTINUE: u32 = 7; -pub const _UFFDIO_API: u32 = 63; -pub const UFFDIO: u32 = 170; -pub const UFFD_EVENT_PAGEFAULT: u32 = 18; -pub const UFFD_EVENT_FORK: u32 = 19; -pub const UFFD_EVENT_REMAP: u32 = 20; -pub const UFFD_EVENT_REMOVE: u32 = 21; -pub const UFFD_EVENT_UNMAP: u32 = 22; -pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; -pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; -pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; -pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; -pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; -pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; -pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; -pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; -pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; -pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; -pub const UFFD_FEATURE_SIGBUS: u32 = 128; -pub const UFFD_FEATURE_THREAD_ID: u32 = 256; -pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; -pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; -pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; -pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; -pub const UFFD_USER_MODE_ONLY: u32 = 1; -pub const IORING_FILE_INDEX_ALLOC: i32 = -1; -pub const IORING_SETUP_IOPOLL: u32 = 1; -pub const IORING_SETUP_SQPOLL: u32 = 2; -pub const IORING_SETUP_SQ_AFF: u32 = 4; -pub const IORING_SETUP_CQSIZE: u32 = 8; -pub const IORING_SETUP_CLAMP: u32 = 16; -pub const IORING_SETUP_ATTACH_WQ: u32 = 32; -pub const IORING_SETUP_R_DISABLED: u32 = 64; -pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; -pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; -pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; -pub const IORING_SETUP_SQE128: u32 = 1024; -pub const IORING_SETUP_CQE32: u32 = 2048; -pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; -pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; -pub const IORING_URING_CMD_FIXED: u32 = 1; -pub const IORING_FSYNC_DATASYNC: u32 = 1; -pub const IORING_TIMEOUT_ABS: u32 = 1; -pub const IORING_TIMEOUT_UPDATE: u32 = 2; -pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; -pub const IORING_TIMEOUT_REALTIME: u32 = 8; -pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; -pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; -pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; -pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; -pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; -pub const IORING_POLL_ADD_MULTI: u32 = 1; -pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; -pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; -pub const IORING_POLL_ADD_LEVEL: u32 = 8; -pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; -pub const IORING_ASYNC_CANCEL_FD: u32 = 2; -pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; -pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; -pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; -pub const IORING_RECV_MULTISHOT: u32 = 2; -pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; -pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; -pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; -pub const IORING_ACCEPT_MULTISHOT: u32 = 1; -pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; -pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; -pub const IORING_CQE_F_BUFFER: u32 = 1; -pub const IORING_CQE_F_MORE: u32 = 2; -pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; -pub const IORING_CQE_F_NOTIF: u32 = 8; -pub const IORING_OFF_SQ_RING: u32 = 0; -pub const IORING_OFF_CQ_RING: u32 = 134217728; -pub const IORING_OFF_SQES: u32 = 268435456; -pub const IORING_SQ_NEED_WAKEUP: u32 = 1; -pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; -pub const IORING_SQ_TASKRUN: u32 = 4; -pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; -pub const IORING_ENTER_GETEVENTS: u32 = 1; -pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; -pub const IORING_ENTER_SQ_WAIT: u32 = 4; -pub const IORING_ENTER_EXT_ARG: u32 = 8; -pub const IORING_ENTER_REGISTERED_RING: u32 = 16; -pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; -pub const IORING_FEAT_NODROP: u32 = 2; -pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; -pub const IORING_FEAT_RW_CUR_POS: u32 = 8; -pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; -pub const IORING_FEAT_FAST_POLL: u32 = 32; -pub const IORING_FEAT_POLL_32BITS: u32 = 64; -pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; -pub const IORING_FEAT_EXT_ARG: u32 = 256; -pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; -pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; -pub const IORING_FEAT_CQE_SKIP: u32 = 2048; -pub const IORING_FEAT_LINKED_FILE: u32 = 4096; -pub const IORING_FEAT_REG_REG_RING: u32 = 8192; -pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; -pub const IORING_REGISTER_FILES_SKIP: i32 = -2; -pub const IO_URING_OP_SUPPORTED: u32 = 1; -pub const DT_UNKNOWN: u32 = 0; -pub const DT_FIFO: u32 = 1; -pub const DT_CHR: u32 = 2; -pub const DT_DIR: u32 = 4; -pub const DT_BLK: u32 = 6; -pub const DT_REG: u32 = 8; -pub const DT_LNK: u32 = 10; -pub const DT_SOCK: u32 = 12; -pub const SHUT_RD: u32 = 0; -pub const SHUT_WR: u32 = 1; -pub const SHUT_RDWR: u32 = 2; -pub const STAT_HAVE_NSEC: u32 = 1; -pub const STAT64_HAS_BROKEN_ST_INO: u32 = 1; -pub const SOCK_STREAM: u32 = 1; -pub const SOCK_DGRAM: u32 = 2; -pub const SOCK_RAW: u32 = 3; -pub const SOCK_RDM: u32 = 4; -pub const SOCK_SEQPACKET: u32 = 5; -pub const F_OK: u32 = 0; -pub const R_OK: u32 = 4; -pub const W_OK: u32 = 2; -pub const X_OK: u32 = 1; -pub const UTIME_NOW: u32 = 1073741823; -pub const UTIME_OMIT: u32 = 1073741822; -pub const MSG_DONTWAIT: u32 = 64; -pub const AF_UNSPEC: u32 = 0; -pub const AF_UNIX: u32 = 1; -pub const AF_INET: u32 = 2; -pub const AF_AX25: u32 = 3; -pub const AF_IPX: u32 = 4; -pub const AF_APPLETALK: u32 = 5; -pub const AF_NETROM: u32 = 6; -pub const AF_BRIDGE: u32 = 7; -pub const AF_ATMPVC: u32 = 8; -pub const AF_X25: u32 = 9; -pub const AF_INET6: u32 = 10; -pub const AF_ROSE: u32 = 11; -pub const AF_DECnet: u32 = 12; -pub const AF_NETBEUI: u32 = 13; -pub const AF_SECURITY: u32 = 14; -pub const AF_KEY: u32 = 15; -pub const AF_NETLINK: u32 = 16; -pub const AF_PACKET: u32 = 17; -pub const AF_ASH: u32 = 18; -pub const AF_ECONET: u32 = 19; -pub const AF_ATMSVC: u32 = 20; -pub const AF_RDS: u32 = 21; -pub const AF_SNA: u32 = 22; -pub const AF_IRDA: u32 = 23; -pub const AF_PPPOX: u32 = 24; -pub const AF_WANPIPE: u32 = 25; -pub const AF_LLC: u32 = 26; -pub const AF_CAN: u32 = 29; -pub const AF_TIPC: u32 = 30; -pub const AF_BLUETOOTH: u32 = 31; -pub const AF_IUCV: u32 = 32; -pub const AF_RXRPC: u32 = 33; -pub const AF_ISDN: u32 = 34; -pub const AF_PHONET: u32 = 35; -pub const AF_IEEE802154: u32 = 36; -pub const AF_MAX: u32 = 37; -pub const MSG_OOB: u32 = 1; -pub const MSG_PEEK: u32 = 2; -pub const MSG_DONTROUTE: u32 = 4; -pub const MSG_CTRUNC: u32 = 8; -pub const MSG_PROBE: u32 = 16; -pub const MSG_TRUNC: u32 = 32; -pub const MSG_EOR: u32 = 128; -pub const MSG_WAITALL: u32 = 256; -pub const MSG_FIN: u32 = 512; -pub const MSG_SYN: u32 = 1024; -pub const MSG_CONFIRM: u32 = 2048; -pub const MSG_RST: u32 = 4096; -pub const MSG_ERRQUEUE: u32 = 8192; -pub const MSG_NOSIGNAL: u32 = 16384; -pub const MSG_MORE: u32 = 32768; -pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; -pub const STDIN_FILENO: u32 = 0; -pub const STDOUT_FILENO: u32 = 1; -pub const STDERR_FILENO: u32 = 2; -pub const RWF_HIPRI: u32 = 1; -pub const RWF_DSYNC: u32 = 2; -pub const RWF_SYNC: u32 = 4; -pub const RWF_NOWAIT: u32 = 8; -pub const RWF_APPEND: u32 = 16; -pub const EFD_SEMAPHORE: u32 = 1; -pub const EFD_CLOEXEC: u32 = 524288; -pub const EFD_NONBLOCK: u32 = 2048; -pub const EPOLLIN: u32 = 1; -pub const EPOLLPRI: u32 = 2; -pub const EPOLLOUT: u32 = 4; -pub const EPOLLERR: u32 = 8; -pub const EPOLLHUP: u32 = 16; -pub const EPOLLNVAL: u32 = 32; -pub const EPOLLRDNORM: u32 = 64; -pub const EPOLLRDBAND: u32 = 128; -pub const EPOLLWRNORM: u32 = 256; -pub const EPOLLWRBAND: u32 = 512; -pub const EPOLLMSG: u32 = 1024; -pub const EPOLLRDHUP: u32 = 8192; -pub const EPOLLEXCLUSIVE: u32 = 268435456; -pub const EPOLLWAKEUP: u32 = 536870912; -pub const EPOLLONESHOT: u32 = 1073741824; -pub const EPOLLET: u32 = 2147483648; -pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; -pub const TFD_CREATE_FLAGS: u32 = 526336; -pub const TFD_SETTIME_FLAGS: u32 = 1; -pub const ARCH_SET_FS: u32 = 4098; -pub const SCM_RIGHTS: u32 = 1; -pub const SCM_CREDENTIALS: u32 = 2; -pub const SCM_SECURITY: u32 = 3; -pub const UFFD_API: u32 = 170; -pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; -pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; -pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; -pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; -pub const UFFDIO_COPY_MODE_WP: u32 = 2; -pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; -pub const SPLICE_F_MOVE: u32 = 1; -pub const SPLICE_F_NONBLOCK: u32 = 2; -pub const SPLICE_F_MORE: u32 = 4; -pub const SPLICE_F_GIFT: u32 = 8; -pub const MNT_FORCE: u32 = 1; -pub const MNT_DETACH: u32 = 2; -pub const MNT_EXPIRE: u32 = 4; -pub const UMOUNT_NOFOLLOW: u32 = 8; -pub const UMOUNT_UNUSED: u32 = 2147483648; -pub const _NSIG: u32 = 64; -pub type size_t = crate::ctypes::c_uint; -pub type ssize_t = crate::ctypes::c_int; -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 32usize], -} -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_mode_t = crate::ctypes::c_ushort; -pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; -pub type __kernel_uid_t = crate::ctypes::c_ushort; -pub type __kernel_gid_t = crate::ctypes::c_ushort; -pub type __kernel_old_dev_t = crate::ctypes::c_ushort; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_size_t = crate::ctypes::c_uint; -pub type __kernel_ssize_t = crate::ctypes::c_int; -pub type __kernel_ptrdiff_t = crate::ctypes::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_header_struct { -pub version: __u32, -pub pid: crate::ctypes::c_int, -} -pub type cap_user_header_t = *mut __user_cap_header_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_data_struct { -pub effective: __u32, -pub permitted: __u32, -pub inheritable: __u32, -} -pub type cap_user_data_t = *mut __user_cap_data_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data { -pub magic_etc: __le32, -pub data: [vfs_cap_data__bindgen_ty_1; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data { -pub magic_etc: __le32, -pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], -pub rootid: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct f_owner_ex { -pub type_: crate::ctypes::c_int, -pub pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_off_t, -pub l_len: __kernel_off_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock64 { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_loff_t, -pub l_len: __kernel_loff_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct open_how { -pub flags: __u64, -pub mode: __u64, -pub resolve: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct epoll_event { -pub events: __poll_t, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v1 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub master_key_descriptor: [__u8; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_key { -pub mode: __u32, -pub raw: [__u8; 64usize], -pub size: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v2 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub __reserved: [__u8; 4usize], -pub master_key_identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_get_policy_ex_arg { -pub policy_size: __u64, -pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { -pub version: __u8, -pub v1: fscrypt_policy_v1, -pub v2: fscrypt_policy_v2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_key_specifier { -pub type_: __u32, -pub __reserved: __u32, -pub u: fscrypt_key_specifier__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_key_specifier__bindgen_ty_1 { -pub __reserved: [__u8; 32usize], -pub descriptor: [__u8; 8usize], -pub identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct fscrypt_provisioning_key_payload { -pub type_: __u32, -pub __reserved: __u32, -pub raw: __IncompleteArrayField<__u8>, -} -#[repr(C)] -pub struct fscrypt_add_key_arg { -pub key_spec: fscrypt_key_specifier, -pub raw_size: __u32, -pub key_id: __u32, -pub __reserved: [__u32; 8usize], -pub raw: __IncompleteArrayField<__u8>, +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, } #[repr(C)] #[derive(Copy, Clone)] @@ -2879,19 +229,6 @@ pub user_count: __u32, pub __out_reserved: [__u32; 13usize], } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum fsconfig_command { -FSCONFIG_SET_FLAG = 0, -FSCONFIG_SET_STRING = 1, -FSCONFIG_SET_BINARY = 2, -FSCONFIG_SET_PATH = 3, -FSCONFIG_SET_PATH_EMPTY = 4, -FSCONFIG_SET_FD = 5, -FSCONFIG_CMD_CREATE = 6, -FSCONFIG_CMD_RECONFIGURE = 7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct mount_attr { @@ -2958,7 +295,6 @@ pub fsx_cowextsize: __u32, pub fsx_pad: [crate::ctypes::c_uchar; 8usize], } -pub type __kernel_rwf_t = crate::ctypes::c_int; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct futex_waitv { @@ -2979,190 +315,6 @@ pub futex_offset: crate::ctypes::c_long, pub list_op_pending: *mut robust_list, } -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], -} -pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; -pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; -pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; -pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; -pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; -pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; -pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; -pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; -pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; -pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; -pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; -pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; -pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; -pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; -pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; -pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; -pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; -pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; -pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; -pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; -pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; -pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; -pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; -pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; -pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; -pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; -pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; -pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; -pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_1 { -IPPROTO_IP = 0, -IPPROTO_ICMP = 1, -IPPROTO_IGMP = 2, -IPPROTO_IPIP = 4, -IPPROTO_TCP = 6, -IPPROTO_EGP = 8, -IPPROTO_PUP = 12, -IPPROTO_UDP = 17, -IPPROTO_IDP = 22, -IPPROTO_TP = 29, -IPPROTO_DCCP = 33, -IPPROTO_IPV6 = 41, -IPPROTO_RSVP = 46, -IPPROTO_GRE = 47, -IPPROTO_ESP = 50, -IPPROTO_AH = 51, -IPPROTO_MTP = 92, -IPPROTO_BEETPH = 94, -IPPROTO_ENCAP = 98, -IPPROTO_PIM = 103, -IPPROTO_COMP = 108, -IPPROTO_L2TP = 115, -IPPROTO_SCTP = 132, -IPPROTO_UDPLITE = 136, -IPPROTO_MPLS = 137, -IPPROTO_ETHERNET = 143, -IPPROTO_RAW = 255, -IPPROTO_MPTCP = 262, -IPPROTO_MAX = 263, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_addr { -pub s_addr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq { -pub imr_multiaddr: in_addr, -pub imr_interface: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreqn { -pub imr_multiaddr: in_addr, -pub imr_address: in_addr, -pub imr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq_source { -pub imr_multiaddr: __be32, -pub imr_interface: __be32, -pub imr_sourceaddr: __be32, -} -#[repr(C)] -pub struct ip_msfilter { -pub imsf_multiaddr: __be32, -pub imsf_interface: __be32, -pub imsf_fmode: __u32, -pub imsf_numsrc: __u32, -pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, -} -#[repr(C)] -pub struct ip_msfilter__bindgen_ty_1 { -pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, -pub __bindgen_anon_1: __BindgenUnionField, -pub bindgen_union_field: u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { -pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -pub imsf_slist_flex: __IncompleteArrayField<__be32>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_req { -pub gr_interface: __u32, -pub gr_group: __kernel_sockaddr_storage, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_source_req { -pub gsr_interface: __u32, -pub gsr_group: __kernel_sockaddr_storage, -pub gsr_source: __kernel_sockaddr_storage, -} -#[repr(C)] -pub struct group_filter { -pub __bindgen_anon_1: group_filter__bindgen_ty_1, -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u32; 67usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { -pub gf_interface_aux: __u32, -pub gf_group_aux: __kernel_sockaddr_storage, -pub gf_fmode_aux: __u32, -pub gf_numsrc_aux: __u32, -pub gf_slist: [__kernel_sockaddr_storage; 1usize], -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { -pub gf_interface: __u32, -pub gf_group: __kernel_sockaddr_storage, -pub gf_fmode: __u32, -pub gf_numsrc: __u32, -pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_pktinfo { -pub ipi_ifindex: crate::ctypes::c_int, -pub ipi_spec_dst: in_addr, -pub ipi_addr: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_in { -pub sin_family: __kernel_sa_family_t, -pub sin_port: __be16, -pub sin_addr: in_addr, -pub __pad: [crate::ctypes::c_uchar; 8usize], -} #[repr(C)] #[derive(Debug)] pub struct inotify_event { @@ -3173,471 +325,6 @@ pub name: __IncompleteArrayField, } #[repr(C)] -#[derive(Copy, Clone)] -pub struct iphdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub tos: __u8, -pub tot_len: __be16, -pub id: __be16, -pub frag_off: __be16, -pub ttl: __u8, -pub protocol: __u8, -pub check: __sum16, -pub __bindgen_anon_1: iphdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union iphdr__bindgen_ty_1 { -pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: __be32, -pub daddr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: __be32, -pub daddr: __be32, -} -impl iphdr { -#[inline] -pub fn ihl(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_ihl(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; -ihl as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_auth_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub reserved: __be16, -pub spi: __be32, -pub seq_no: __be32, -pub auth_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_esp_hdr { -pub spi: __be32, -pub seq_no: __be32, -pub enc_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_comp_hdr { -pub nexthdr: __u8, -pub flags: __u8, -pub cpi: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_beet_phdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub padlen: __u8, -pub reserved: __u8, -} -pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; -pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; -pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; -pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; -pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; -pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; -pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; -pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; -pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; -pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; -pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; -pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; -pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; -pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; -pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; -pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; -pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; -pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; -pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; -pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; -pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; -pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; -pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; -pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; -pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; -pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; -pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; -pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; -pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_2 { -IPV4_DEVCONF_FORWARDING = 1, -IPV4_DEVCONF_MC_FORWARDING = 2, -IPV4_DEVCONF_PROXY_ARP = 3, -IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, -IPV4_DEVCONF_SECURE_REDIRECTS = 5, -IPV4_DEVCONF_SEND_REDIRECTS = 6, -IPV4_DEVCONF_SHARED_MEDIA = 7, -IPV4_DEVCONF_RP_FILTER = 8, -IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, -IPV4_DEVCONF_BOOTP_RELAY = 10, -IPV4_DEVCONF_LOG_MARTIANS = 11, -IPV4_DEVCONF_TAG = 12, -IPV4_DEVCONF_ARPFILTER = 13, -IPV4_DEVCONF_MEDIUM_ID = 14, -IPV4_DEVCONF_NOXFRM = 15, -IPV4_DEVCONF_NOPOLICY = 16, -IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, -IPV4_DEVCONF_ARP_ANNOUNCE = 18, -IPV4_DEVCONF_ARP_IGNORE = 19, -IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, -IPV4_DEVCONF_ARP_ACCEPT = 21, -IPV4_DEVCONF_ARP_NOTIFY = 22, -IPV4_DEVCONF_ACCEPT_LOCAL = 23, -IPV4_DEVCONF_SRC_VMARK = 24, -IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, -IPV4_DEVCONF_ROUTE_LOCALNET = 26, -IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, -IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, -IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, -IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, -IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, -IPV4_DEVCONF_BC_FORWARDING = 32, -IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, -__IPV4_DEVCONF_MAX = 34, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_addr { -pub in6_u: in6_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union in6_addr__bindgen_ty_1 { -pub u6_addr8: [__u8; 16usize], -pub u6_addr16: [__be16; 8usize], -pub u6_addr32: [__be32; 4usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_in6 { -pub sin6_family: crate::ctypes::c_ushort, -pub sin6_port: __be16, -pub sin6_flowinfo: __be32, -pub sin6_addr: in6_addr, -pub sin6_scope_id: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6_mreq { -pub ipv6mr_multiaddr: in6_addr, -pub ipv6mr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_flowlabel_req { -pub flr_dst: in6_addr, -pub flr_label: __be32, -pub flr_action: __u8, -pub flr_share: __u8, -pub flr_flags: __u16, -pub flr_expires: __u16, -pub flr_linger: __u16, -pub __flr_pad: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_pktinfo { -pub ipi6_addr: in6_addr, -pub ipi6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ip6_mtuinfo { -pub ip6m_addr: sockaddr_in6, -pub ip6m_mtu: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_ifreq { -pub ifr6_addr: in6_addr, -pub ifr6_prefixlen: __u32, -pub ifr6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_rt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub type_: __u8, -pub segments_left: __u8, -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_opt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -} -#[repr(C)] -pub struct rt0_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rt2_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: in6_addr, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct ipv6_destopt_hao { -pub type_: __u8, -pub length: __u8, -pub addr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub flow_lbl: [__u8; 3usize], -pub payload_len: __be16, -pub nexthdr: __u8, -pub hop_limit: __u8, -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ipv6hdr__bindgen_ty_1 { -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -impl ipv6hdr { -#[inline] -pub fn priority(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_priority(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let priority: u8 = unsafe { ::core::mem::transmute(priority) }; -priority as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit -} -} -pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; -pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; -pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; -pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; -pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; -pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; -pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; -pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; -pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; -pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; -pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; -pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; -pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; -pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; -pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; -pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; -pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; -pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; -pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; -pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; -pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; -pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; -pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; -pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; -pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; -pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; -pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; -pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; -pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; -pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; -pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; -pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; -pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; -pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; -pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; -pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; -pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; -pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; -pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; -pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; -pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; -pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; -pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; -pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; -pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; -pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; -pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; -pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; -pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; -pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; -pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; -pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_3 { -DEVCONF_FORWARDING = 0, -DEVCONF_HOPLIMIT = 1, -DEVCONF_MTU6 = 2, -DEVCONF_ACCEPT_RA = 3, -DEVCONF_ACCEPT_REDIRECTS = 4, -DEVCONF_AUTOCONF = 5, -DEVCONF_DAD_TRANSMITS = 6, -DEVCONF_RTR_SOLICITS = 7, -DEVCONF_RTR_SOLICIT_INTERVAL = 8, -DEVCONF_RTR_SOLICIT_DELAY = 9, -DEVCONF_USE_TEMPADDR = 10, -DEVCONF_TEMP_VALID_LFT = 11, -DEVCONF_TEMP_PREFERED_LFT = 12, -DEVCONF_REGEN_MAX_RETRY = 13, -DEVCONF_MAX_DESYNC_FACTOR = 14, -DEVCONF_MAX_ADDRESSES = 15, -DEVCONF_FORCE_MLD_VERSION = 16, -DEVCONF_ACCEPT_RA_DEFRTR = 17, -DEVCONF_ACCEPT_RA_PINFO = 18, -DEVCONF_ACCEPT_RA_RTR_PREF = 19, -DEVCONF_RTR_PROBE_INTERVAL = 20, -DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, -DEVCONF_PROXY_NDP = 22, -DEVCONF_OPTIMISTIC_DAD = 23, -DEVCONF_ACCEPT_SOURCE_ROUTE = 24, -DEVCONF_MC_FORWARDING = 25, -DEVCONF_DISABLE_IPV6 = 26, -DEVCONF_ACCEPT_DAD = 27, -DEVCONF_FORCE_TLLAO = 28, -DEVCONF_NDISC_NOTIFY = 29, -DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, -DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, -DEVCONF_SUPPRESS_FRAG_NDISC = 32, -DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, -DEVCONF_USE_OPTIMISTIC = 34, -DEVCONF_ACCEPT_RA_MTU = 35, -DEVCONF_STABLE_SECRET = 36, -DEVCONF_USE_OIF_ADDRS_ONLY = 37, -DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, -DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, -DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, -DEVCONF_DROP_UNSOLICITED_NA = 41, -DEVCONF_KEEP_ADDR_ON_DOWN = 42, -DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, -DEVCONF_SEG6_ENABLED = 44, -DEVCONF_SEG6_REQUIRE_HMAC = 45, -DEVCONF_ENHANCED_DAD = 46, -DEVCONF_ADDR_GEN_MODE = 47, -DEVCONF_DISABLE_POLICY = 48, -DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, -DEVCONF_NDISC_TCLASS = 50, -DEVCONF_RPL_SEG_ENABLED = 51, -DEVCONF_RA_DEFRTR_METRIC = 52, -DEVCONF_IOAM6_ENABLED = 53, -DEVCONF_IOAM6_ID = 54, -DEVCONF_IOAM6_ID_WIDE = 55, -DEVCONF_NDISC_EVICT_NOCARRIER = 56, -DEVCONF_ACCEPT_UNTRACKED_NA = 57, -DEVCONF_MAX = 58, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum socket_state { -SS_FREE = 0, -SS_UNCONNECTED = 1, -SS_CONNECTING = 2, -SS_CONNECTED = 3, -SS_DISCONNECTING = 4, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct pollfd { pub fd: crate::ctypes::c_int, @@ -3645,24 +332,6 @@ pub revents: crate::ctypes::c_short, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prctl_mm_map { -pub start_code: __u64, -pub end_code: __u64, -pub start_data: __u64, -pub end_data: __u64, -pub start_brk: __u64, -pub brk: __u64, -pub start_stack: __u64, -pub arg_start: __u64, -pub arg_end: __u64, -pub env_start: __u64, -pub env_end: __u64, -pub auxv: *mut __u64, -pub auxv_size: __u32, -pub exe_fd: __u32, -} -#[repr(C)] #[derive(Debug)] pub struct rand_pool_info { pub entropy_count: crate::ctypes::c_int, @@ -3783,24 +452,13 @@ pub set_tid_size: __u64, pub cgroup: __u64, } -pub type sigset_t = crate::ctypes::c_ulong; -pub type __signalfn_t = ::core::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::core::option::Option; -pub type __sigrestore_t = __restorefn_t; #[repr(C)] #[derive(Copy, Clone)] pub struct sigaction { pub _u: sigaction__bindgen_ty_1, pub sa_mask: sigset_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_restorer: ::core::option::Option, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigaction__bindgen_ty_1 { -pub _sa_handler: __sighandler_t, -pub _sa_sigaction: ::core::option::Option, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_restorer: ::core::option::Option, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -3809,25 +467,6 @@ pub ss_flags: crate::ctypes::c_int, pub ss_size: __kernel_size_t, } -pub type stack_t = sigaltstack; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { -pub sival_int: crate::ctypes::c_int, -pub sival_ptr: *mut crate::ctypes::c_void, -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { -pub _kill: __sifields__bindgen_ty_1, -pub _timer: __sifields__bindgen_ty_2, -pub _rt: __sifields__bindgen_ty_3, -pub _sigchld: __sifields__bindgen_ty_4, -pub _sigfault: __sifields__bindgen_ty_5, -pub _sigpoll: __sifields__bindgen_ty_6, -pub _sigsys: __sifields__bindgen_ty_7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_1 { @@ -3865,15 +504,6 @@ pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { -pub _trapno: crate::ctypes::c_int, -pub _addr_lsb: crate::ctypes::c_short, -pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, -pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { pub _dummy_bnd: [crate::ctypes::c_char; 4usize], @@ -3884,597 +514,90 @@ #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 { pub _dummy_pkey: [crate::ctypes::c_char; 4usize], -pub _pkey: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { -pub _data: crate::ctypes::c_ulong, -pub _type: __u32, -pub _flags: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_6 { -pub _band: crate::ctypes::c_long, -pub _fd: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sifields__bindgen_ty_7 { -pub _call_addr: *mut crate::ctypes::c_void, -pub _syscall: crate::ctypes::c_int, -pub _arch: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo { -pub __bindgen_anon_1: siginfo__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { -pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, -pub _si_pad: [crate::ctypes::c_int; 32usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { -pub si_signo: crate::ctypes::c_int, -pub si_errno: crate::ctypes::c_int, -pub si_code: crate::ctypes::c_int, -pub _sifields: __sifields, -} -pub type siginfo_t = siginfo; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigevent { -pub sigev_value: sigval_t, -pub sigev_signo: crate::ctypes::c_int, -pub sigev_notify: crate::ctypes::c_int, -pub _sigev_un: sigevent__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { -pub _pad: [crate::ctypes::c_int; 13usize], -pub _tid: crate::ctypes::c_int, -pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { -pub _function: ::core::option::Option, -pub _attribute: *mut crate::ctypes::c_void, -} -pub type sigevent_t = sigevent; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statx_timestamp { -pub tv_sec: __s64, -pub tv_nsec: __u32, -pub __reserved: __s32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statx { -pub stx_mask: __u32, -pub stx_blksize: __u32, -pub stx_attributes: __u64, -pub stx_nlink: __u32, -pub stx_uid: __u32, -pub stx_gid: __u32, -pub stx_mode: __u16, -pub __spare0: [__u16; 1usize], -pub stx_ino: __u64, -pub stx_size: __u64, -pub stx_blocks: __u64, -pub stx_attributes_mask: __u64, -pub stx_atime: statx_timestamp, -pub stx_btime: statx_timestamp, -pub stx_ctime: statx_timestamp, -pub stx_mtime: statx_timestamp, -pub stx_rdev_major: __u32, -pub stx_rdev_minor: __u32, -pub stx_dev_major: __u32, -pub stx_dev_minor: __u32, -pub stx_mnt_id: __u64, -pub stx_dio_mem_align: __u32, -pub stx_dio_offset_align: __u32, -pub __spare3: [__u64; 12usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sysinfo { -pub uptime: __kernel_long_t, -pub loads: [__kernel_ulong_t; 3usize], -pub totalram: __kernel_ulong_t, -pub freeram: __kernel_ulong_t, -pub sharedram: __kernel_ulong_t, -pub bufferram: __kernel_ulong_t, -pub totalswap: __kernel_ulong_t, -pub freeswap: __kernel_ulong_t, -pub procs: __u16, -pub pad: __u16, -pub totalhigh: __kernel_ulong_t, -pub freehigh: __kernel_ulong_t, -pub mem_unit: __u32, -pub _f: [crate::ctypes::c_char; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcphdr { -pub source: __be16, -pub dest: __be16, -pub seq: __be32, -pub ack_seq: __be32, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub window: __be16, -pub check: __sum16, -pub urg_ptr: __be16, -} -impl tcphdr { -#[inline] -pub fn res1(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } -} -#[inline] -pub fn set_res1(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn doff(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } -} -#[inline] -pub fn set_doff(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn fin(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } -} -#[inline] -pub fn set_fin(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn syn(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } -} -#[inline] -pub fn set_syn(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 1u8, val as u64) -} -} -#[inline] -pub fn rst(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } -} -#[inline] -pub fn set_rst(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(10usize, 1u8, val as u64) -} -} -#[inline] -pub fn psh(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } -} -#[inline] -pub fn set_psh(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(11usize, 1u8, val as u64) -} -} -#[inline] -pub fn ack(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } -} -#[inline] -pub fn set_ack(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(12usize, 1u8, val as u64) -} -} -#[inline] -pub fn urg(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } -} -#[inline] -pub fn set_urg(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(13usize, 1u8, val as u64) -} -} -#[inline] -pub fn ece(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } -} -#[inline] -pub fn set_ece(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(14usize, 1u8, val as u64) -} -} -#[inline] -pub fn cwr(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } -} -#[inline] -pub fn set_cwr(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(15usize, 1u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let res1: u16 = unsafe { ::core::mem::transmute(res1) }; -res1 as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let doff: u16 = unsafe { ::core::mem::transmute(doff) }; -doff as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let fin: u16 = unsafe { ::core::mem::transmute(fin) }; -fin as u64 -}); -__bindgen_bitfield_unit.set(9usize, 1u8, { -let syn: u16 = unsafe { ::core::mem::transmute(syn) }; -syn as u64 -}); -__bindgen_bitfield_unit.set(10usize, 1u8, { -let rst: u16 = unsafe { ::core::mem::transmute(rst) }; -rst as u64 -}); -__bindgen_bitfield_unit.set(11usize, 1u8, { -let psh: u16 = unsafe { ::core::mem::transmute(psh) }; -psh as u64 -}); -__bindgen_bitfield_unit.set(12usize, 1u8, { -let ack: u16 = unsafe { ::core::mem::transmute(ack) }; -ack as u64 -}); -__bindgen_bitfield_unit.set(13usize, 1u8, { -let urg: u16 = unsafe { ::core::mem::transmute(urg) }; -urg as u64 -}); -__bindgen_bitfield_unit.set(14usize, 1u8, { -let ece: u16 = unsafe { ::core::mem::transmute(ece) }; -ece as u64 -}); -__bindgen_bitfield_unit.set(15usize, 1u8, { -let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; -cwr as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union tcp_word_hdr { -pub hdr: tcphdr, -pub words: [__be32; 5usize], -} -pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; -pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; -pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; -pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; -pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; -pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; -pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; -pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; -pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; -pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_4 { -TCP_FLAG_CWR = 32768, -TCP_FLAG_ECE = 16384, -TCP_FLAG_URG = 8192, -TCP_FLAG_ACK = 4096, -TCP_FLAG_PSH = 2048, -TCP_FLAG_RST = 1024, -TCP_FLAG_SYN = 512, -TCP_FLAG_FIN = 256, -TCP_RESERVED_BITS = 15, -TCP_DATA_OFFSET = 240, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_repair_opt { -pub opt_code: __u32, -pub opt_val: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_repair_window { -pub snd_wl1: __u32, -pub snd_wnd: __u32, -pub max_window: __u32, -pub rcv_wnd: __u32, -pub rcv_wup: __u32, -} -pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; -pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; -pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; -pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_5 { -TCP_NO_QUEUE = 0, -TCP_RECV_QUEUE = 1, -TCP_SEND_QUEUE = 2, -TCP_QUEUES_NR = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_fastopen_client_fail { -TFO_STATUS_UNSPEC = 0, -TFO_COOKIE_UNAVAILABLE = 1, -TFO_DATA_NOT_ACKED = 2, -TFO_SYN_RETRANSMITTED = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_ca_state { -TCP_CA_Open = 0, -TCP_CA_Disorder = 1, -TCP_CA_CWR = 2, -TCP_CA_Recovery = 3, -TCP_CA_Loss = 4, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcp_info { -pub tcpi_state: __u8, -pub tcpi_ca_state: __u8, -pub tcpi_retransmits: __u8, -pub tcpi_probes: __u8, -pub tcpi_backoff: __u8, -pub tcpi_options: __u8, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub tcpi_rto: __u32, -pub tcpi_ato: __u32, -pub tcpi_snd_mss: __u32, -pub tcpi_rcv_mss: __u32, -pub tcpi_unacked: __u32, -pub tcpi_sacked: __u32, -pub tcpi_lost: __u32, -pub tcpi_retrans: __u32, -pub tcpi_fackets: __u32, -pub tcpi_last_data_sent: __u32, -pub tcpi_last_ack_sent: __u32, -pub tcpi_last_data_recv: __u32, -pub tcpi_last_ack_recv: __u32, -pub tcpi_pmtu: __u32, -pub tcpi_rcv_ssthresh: __u32, -pub tcpi_rtt: __u32, -pub tcpi_rttvar: __u32, -pub tcpi_snd_ssthresh: __u32, -pub tcpi_snd_cwnd: __u32, -pub tcpi_advmss: __u32, -pub tcpi_reordering: __u32, -pub tcpi_rcv_rtt: __u32, -pub tcpi_rcv_space: __u32, -pub tcpi_total_retrans: __u32, -pub tcpi_pacing_rate: __u64, -pub tcpi_max_pacing_rate: __u64, -pub tcpi_bytes_acked: __u64, -pub tcpi_bytes_received: __u64, -pub tcpi_segs_out: __u32, -pub tcpi_segs_in: __u32, -pub tcpi_notsent_bytes: __u32, -pub tcpi_min_rtt: __u32, -pub tcpi_data_segs_in: __u32, -pub tcpi_data_segs_out: __u32, -pub tcpi_delivery_rate: __u64, -pub tcpi_busy_time: __u64, -pub tcpi_rwnd_limited: __u64, -pub tcpi_sndbuf_limited: __u64, -pub tcpi_delivered: __u32, -pub tcpi_delivered_ce: __u32, -pub tcpi_bytes_sent: __u64, -pub tcpi_bytes_retrans: __u64, -pub tcpi_dsack_dups: __u32, -pub tcpi_reord_seen: __u32, -pub tcpi_rcv_ooopack: __u32, -pub tcpi_snd_wnd: __u32, -pub tcpi_rcv_wnd: __u32, -pub tcpi_rehash: __u32, -} -impl tcp_info { -#[inline] -pub fn tcpi_snd_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_rcv_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } -} -#[inline] -pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn tcpi_fastopen_client_fail(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +pub _pkey: __u32, } -#[inline] -pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 2u8, val as u64) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { +pub _data: crate::ctypes::c_ulong, +pub _type: __u32, +pub _flags: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_6 { +pub _band: crate::ctypes::c_long, +pub _fd: crate::ctypes::c_int, } -#[inline] -pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; -tcpi_snd_wscale as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; -tcpi_rcv_wscale as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; -tcpi_delivery_rate_app_limited as u64 -}); -__bindgen_bitfield_unit.set(9usize, 2u8, { -let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; -tcpi_fastopen_client_fail as u64 -}); -__bindgen_bitfield_unit +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __sifields__bindgen_ty_7 { +pub _call_addr: *mut crate::ctypes::c_void, +pub _syscall: crate::ctypes::c_int, +pub _arch: crate::ctypes::c_uint, } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo { +pub __bindgen_anon_1: siginfo__bindgen_ty_1, } -pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; -pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; -pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; -pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; -pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; -pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; -pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; -pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; -pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; -pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; -pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; -pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; -pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; -pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; -pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; -pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; -pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; -pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; -pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; -pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; -pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; -pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; -pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; -pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; -pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; -pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; -pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; -pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_6 { -TCP_NLA_PAD = 0, -TCP_NLA_BUSY = 1, -TCP_NLA_RWND_LIMITED = 2, -TCP_NLA_SNDBUF_LIMITED = 3, -TCP_NLA_DATA_SEGS_OUT = 4, -TCP_NLA_TOTAL_RETRANS = 5, -TCP_NLA_PACING_RATE = 6, -TCP_NLA_DELIVERY_RATE = 7, -TCP_NLA_SND_CWND = 8, -TCP_NLA_REORDERING = 9, -TCP_NLA_MIN_RTT = 10, -TCP_NLA_RECUR_RETRANS = 11, -TCP_NLA_DELIVERY_RATE_APP_LMT = 12, -TCP_NLA_SNDQ_SIZE = 13, -TCP_NLA_CA_STATE = 14, -TCP_NLA_SND_SSTHRESH = 15, -TCP_NLA_DELIVERED = 16, -TCP_NLA_DELIVERED_CE = 17, -TCP_NLA_BYTES_SENT = 18, -TCP_NLA_BYTES_RETRANS = 19, -TCP_NLA_DSACK_DUPS = 20, -TCP_NLA_REORD_SEEN = 21, -TCP_NLA_SRTT = 22, -TCP_NLA_TIMEOUT_REHASH = 23, -TCP_NLA_BYTES_NOTSENT = 24, -TCP_NLA_EDT = 25, -TCP_NLA_TTL = 26, -TCP_NLA_REHASH = 27, +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { +pub si_signo: crate::ctypes::c_int, +pub si_errno: crate::ctypes::c_int, +pub si_code: crate::ctypes::c_int, +pub _sifields: __sifields, } #[repr(C)] #[derive(Copy, Clone)] -pub struct tcp_md5sig { -pub tcpm_addr: __kernel_sockaddr_storage, -pub tcpm_flags: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_ifindex: crate::ctypes::c_int, -pub tcpm_key: [__u8; 80usize], +pub struct sigevent { +pub sigev_value: sigval_t, +pub sigev_signo: crate::ctypes::c_int, +pub sigev_notify: crate::ctypes::c_int, +pub _sigev_un: sigevent__bindgen_ty_1, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_diag_md5sig { -pub tcpm_family: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_addr: [__be32; 4usize], -pub tcpm_key: [__u8; 80usize], +pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { +pub _function: ::core::option::Option, +pub _attribute: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_zerocopy_receive { -pub address: __u64, -pub length: __u32, -pub recv_skip_hint: __u32, -pub inq: __u32, -pub err: __s32, -pub copybuf_address: __u64, -pub copybuf_len: __s32, -pub flags: __u32, -pub msg_control: __u64, -pub msg_controllen: __u64, -pub msg_flags: __u32, -pub reserved: __u32, +pub struct statx_timestamp { +pub tv_sec: __s64, +pub tv_nsec: __u32, +pub __reserved: __s32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statx { +pub stx_mask: __u32, +pub stx_blksize: __u32, +pub stx_attributes: __u64, +pub stx_nlink: __u32, +pub stx_uid: __u32, +pub stx_gid: __u32, +pub stx_mode: __u16, +pub __spare0: [__u16; 1usize], +pub stx_ino: __u64, +pub stx_size: __u64, +pub stx_blocks: __u64, +pub stx_attributes_mask: __u64, +pub stx_atime: statx_timestamp, +pub stx_btime: statx_timestamp, +pub stx_ctime: statx_timestamp, +pub stx_mtime: statx_timestamp, +pub stx_rdev_major: __u32, +pub stx_rdev_minor: __u32, +pub stx_dev_major: __u32, +pub stx_dev_minor: __u32, +pub stx_mnt_id: __u64, +pub stx_dio_mem_align: __u32, +pub stx_dio_offset_align: __u32, +pub __spare3: [__u64; 12usize], } -pub type cc_t = crate::ctypes::c_uchar; -pub type speed_t = crate::ctypes::c_uint; -pub type tcflag_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct termios { @@ -4519,56 +642,2048 @@ } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct termio { -pub c_iflag: crate::ctypes::c_ushort, -pub c_oflag: crate::ctypes::c_ushort, -pub c_cflag: crate::ctypes::c_ushort, -pub c_lflag: crate::ctypes::c_ushort, -pub c_line: crate::ctypes::c_uchar, -pub c_cc: [crate::ctypes::c_uchar; 8usize], +pub struct termio { +pub c_iflag: crate::ctypes::c_ushort, +pub c_oflag: crate::ctypes::c_ushort, +pub c_cflag: crate::ctypes::c_ushort, +pub c_lflag: crate::ctypes::c_ushort, +pub c_line: crate::ctypes::c_uchar, +pub c_cc: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub iov_base: *mut crate::ctypes::c_void, +pub iov_len: __kernel_size_t, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct uffd_msg { +pub event: __u8, +pub reserved1: __u8, +pub reserved2: __u16, +pub reserved3: __u32, +pub arg: uffd_msg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { +pub flags: __u64, +pub address: __u64, +pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { +pub ufd: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { +pub from: __u64, +pub to: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { +pub start: __u64, +pub end: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { +pub reserved1: __u64, +pub reserved2: __u64, +pub reserved3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_api { +pub api: __u64, +pub features: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_range { +pub start: __u64, +pub len: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_register { +pub range: uffdio_range, +pub mode: __u64, +pub ioctls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_copy { +pub dst: __u64, +pub src: __u64, +pub len: __u64, +pub mode: __u64, +pub copy: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_zeropage { +pub range: uffdio_range, +pub mode: __u64, +pub zeropage: __s64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_writeprotect { +pub range: uffdio_range, +pub mode: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffdio_continue { +pub range: uffdio_range, +pub mode: __u64, +pub mapped: __s64, +} +#[repr(C)] +#[derive(Debug)] +pub struct linux_dirent64 { +pub d_ino: crate::ctypes::c_ulonglong, +pub d_off: crate::ctypes::c_longlong, +pub d_reclen: __u16, +pub d_type: __u8, +pub d_name: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat { +pub st_dev: crate::ctypes::c_ulong, +pub st_ino: crate::ctypes::c_ulong, +pub st_mode: crate::ctypes::c_ushort, +pub st_nlink: crate::ctypes::c_ushort, +pub st_uid: crate::ctypes::c_ushort, +pub st_gid: crate::ctypes::c_ushort, +pub st_rdev: crate::ctypes::c_ulong, +pub st_size: crate::ctypes::c_ulong, +pub st_blksize: crate::ctypes::c_ulong, +pub st_blocks: crate::ctypes::c_ulong, +pub st_atime: crate::ctypes::c_ulong, +pub st_atime_nsec: crate::ctypes::c_ulong, +pub st_mtime: crate::ctypes::c_ulong, +pub st_mtime_nsec: crate::ctypes::c_ulong, +pub st_ctime: crate::ctypes::c_ulong, +pub st_ctime_nsec: crate::ctypes::c_ulong, +pub __unused4: crate::ctypes::c_ulong, +pub __unused5: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stat64 { +pub st_dev: crate::ctypes::c_ulonglong, +pub __pad0: [crate::ctypes::c_uchar; 4usize], +pub __st_ino: crate::ctypes::c_ulong, +pub st_mode: crate::ctypes::c_uint, +pub st_nlink: crate::ctypes::c_uint, +pub st_uid: crate::ctypes::c_ulong, +pub st_gid: crate::ctypes::c_ulong, +pub st_rdev: crate::ctypes::c_ulonglong, +pub __pad3: [crate::ctypes::c_uchar; 4usize], +pub st_size: crate::ctypes::c_longlong, +pub st_blksize: crate::ctypes::c_ulong, +pub st_blocks: crate::ctypes::c_ulonglong, +pub st_atime: crate::ctypes::c_ulong, +pub st_atime_nsec: crate::ctypes::c_ulong, +pub st_mtime: crate::ctypes::c_ulong, +pub st_mtime_nsec: crate::ctypes::c_uint, +pub st_ctime: crate::ctypes::c_ulong, +pub st_ctime_nsec: crate::ctypes::c_ulong, +pub st_ino: crate::ctypes::c_ulonglong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __old_kernel_stat { +pub st_dev: crate::ctypes::c_ushort, +pub st_ino: crate::ctypes::c_ushort, +pub st_mode: crate::ctypes::c_ushort, +pub st_nlink: crate::ctypes::c_ushort, +pub st_uid: crate::ctypes::c_ushort, +pub st_gid: crate::ctypes::c_ushort, +pub st_rdev: crate::ctypes::c_ushort, +pub st_size: crate::ctypes::c_ulong, +pub st_atime: crate::ctypes::c_ulong, +pub st_mtime: crate::ctypes::c_ulong, +pub st_ctime: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u32, +pub f_bfree: __u32, +pub f_bavail: __u32, +pub f_files: __u32, +pub f_ffree: __u32, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct iovec { -pub iov_base: *mut crate::ctypes::c_void, -pub iov_len: __kernel_size_t, +pub struct statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], } -#[repr(C)] +#[repr(C, packed(4))] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_un { -pub sun_family: __kernel_sa_family_t, -pub sun_path: [crate::ctypes::c_char; 108usize], +pub struct compat_statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct oldold_utsname { -pub sysname: [crate::ctypes::c_char; 9usize], -pub nodename: [crate::ctypes::c_char; 9usize], -pub release: [crate::ctypes::c_char; 9usize], -pub version: [crate::ctypes::c_char; 9usize], -pub machine: [crate::ctypes::c_char; 9usize], +pub struct user_desc { +pub entry_number: crate::ctypes::c_uint, +pub base_addr: crate::ctypes::c_uint, +pub limit: crate::ctypes::c_uint, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub __bindgen_padding_0: [u8; 3usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct old_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], +pub struct kernel_sigset_t { +pub sig: [crate::ctypes::c_ulong; 2usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct new_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], -pub domainname: [crate::ctypes::c_char; 65usize], +pub struct kernel_sigaction { +pub sa_handler_kernel: __kernel_sighandler_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_restorer: __sigrestore_t, +pub sa_mask: kernel_sigset_t, } -impl membarrier_cmd { -pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; +pub const LINUX_VERSION_CODE: u32 = 393984; +pub const LINUX_VERSION_MAJOR: u32 = 6; +pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; +pub const LINUX_VERSION_SUBLEVEL: u32 = 0; +pub const AT_SYSINFO: u32 = 32; +pub const AT_SYSINFO_EHDR: u32 = 33; +pub const AT_VECTOR_SIZE_ARCH: u32 = 3; +pub const AT_NULL: u32 = 0; +pub const AT_IGNORE: u32 = 1; +pub const AT_EXECFD: u32 = 2; +pub const AT_PHDR: u32 = 3; +pub const AT_PHENT: u32 = 4; +pub const AT_PHNUM: u32 = 5; +pub const AT_PAGESZ: u32 = 6; +pub const AT_BASE: u32 = 7; +pub const AT_FLAGS: u32 = 8; +pub const AT_ENTRY: u32 = 9; +pub const AT_NOTELF: u32 = 10; +pub const AT_UID: u32 = 11; +pub const AT_EUID: u32 = 12; +pub const AT_GID: u32 = 13; +pub const AT_EGID: u32 = 14; +pub const AT_PLATFORM: u32 = 15; +pub const AT_HWCAP: u32 = 16; +pub const AT_CLKTCK: u32 = 17; +pub const AT_SECURE: u32 = 23; +pub const AT_BASE_PLATFORM: u32 = 24; +pub const AT_RANDOM: u32 = 25; +pub const AT_HWCAP2: u32 = 26; +pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; +pub const AT_RSEQ_ALIGN: u32 = 28; +pub const AT_EXECFN: u32 = 31; +pub const AT_MINSIGSTKSZ: u32 = 51; +pub const __FD_SETSIZE: u32 = 1024; +pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; +pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; +pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; +pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; +pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; +pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; +pub const VFS_CAP_REVISION_SHIFT: u32 = 24; +pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; +pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; +pub const VFS_CAP_REVISION_1: u32 = 16777216; +pub const VFS_CAP_U32_1: u32 = 1; +pub const VFS_CAP_REVISION_2: u32 = 33554432; +pub const VFS_CAP_U32_2: u32 = 2; +pub const VFS_CAP_REVISION_3: u32 = 50331648; +pub const VFS_CAP_U32_3: u32 = 2; +pub const VFS_CAP_U32: u32 = 2; +pub const VFS_CAP_REVISION: u32 = 50331648; +pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S: u32 = 1; +pub const CAP_CHOWN: u32 = 0; +pub const CAP_DAC_OVERRIDE: u32 = 1; +pub const CAP_DAC_READ_SEARCH: u32 = 2; +pub const CAP_FOWNER: u32 = 3; +pub const CAP_FSETID: u32 = 4; +pub const CAP_KILL: u32 = 5; +pub const CAP_SETGID: u32 = 6; +pub const CAP_SETUID: u32 = 7; +pub const CAP_SETPCAP: u32 = 8; +pub const CAP_LINUX_IMMUTABLE: u32 = 9; +pub const CAP_NET_BIND_SERVICE: u32 = 10; +pub const CAP_NET_BROADCAST: u32 = 11; +pub const CAP_NET_ADMIN: u32 = 12; +pub const CAP_NET_RAW: u32 = 13; +pub const CAP_IPC_LOCK: u32 = 14; +pub const CAP_IPC_OWNER: u32 = 15; +pub const CAP_SYS_MODULE: u32 = 16; +pub const CAP_SYS_RAWIO: u32 = 17; +pub const CAP_SYS_CHROOT: u32 = 18; +pub const CAP_SYS_PTRACE: u32 = 19; +pub const CAP_SYS_PACCT: u32 = 20; +pub const CAP_SYS_ADMIN: u32 = 21; +pub const CAP_SYS_BOOT: u32 = 22; +pub const CAP_SYS_NICE: u32 = 23; +pub const CAP_SYS_RESOURCE: u32 = 24; +pub const CAP_SYS_TIME: u32 = 25; +pub const CAP_SYS_TTY_CONFIG: u32 = 26; +pub const CAP_MKNOD: u32 = 27; +pub const CAP_LEASE: u32 = 28; +pub const CAP_AUDIT_WRITE: u32 = 29; +pub const CAP_AUDIT_CONTROL: u32 = 30; +pub const CAP_SETFCAP: u32 = 31; +pub const CAP_MAC_OVERRIDE: u32 = 32; +pub const CAP_MAC_ADMIN: u32 = 33; +pub const CAP_SYSLOG: u32 = 34; +pub const CAP_WAKE_ALARM: u32 = 35; +pub const CAP_BLOCK_SUSPEND: u32 = 36; +pub const CAP_AUDIT_READ: u32 = 37; +pub const CAP_PERFMON: u32 = 38; +pub const CAP_BPF: u32 = 39; +pub const CAP_CHECKPOINT_RESTORE: u32 = 40; +pub const CAP_LAST_CAP: u32 = 40; +pub const O_ACCMODE: u32 = 3; +pub const O_RDONLY: u32 = 0; +pub const O_WRONLY: u32 = 1; +pub const O_RDWR: u32 = 2; +pub const O_CREAT: u32 = 64; +pub const O_EXCL: u32 = 128; +pub const O_NOCTTY: u32 = 256; +pub const O_TRUNC: u32 = 512; +pub const O_APPEND: u32 = 1024; +pub const O_NONBLOCK: u32 = 2048; +pub const O_DSYNC: u32 = 4096; +pub const FASYNC: u32 = 8192; +pub const O_DIRECT: u32 = 16384; +pub const O_LARGEFILE: u32 = 32768; +pub const O_DIRECTORY: u32 = 65536; +pub const O_NOFOLLOW: u32 = 131072; +pub const O_NOATIME: u32 = 262144; +pub const O_CLOEXEC: u32 = 524288; +pub const __O_SYNC: u32 = 1048576; +pub const O_SYNC: u32 = 1052672; +pub const O_PATH: u32 = 2097152; +pub const __O_TMPFILE: u32 = 4194304; +pub const O_TMPFILE: u32 = 4259840; +pub const O_TMPFILE_MASK: u32 = 4259904; +pub const O_NDELAY: u32 = 2048; +pub const F_DUPFD: u32 = 0; +pub const F_GETFD: u32 = 1; +pub const F_SETFD: u32 = 2; +pub const F_GETFL: u32 = 3; +pub const F_SETFL: u32 = 4; +pub const F_GETLK: u32 = 5; +pub const F_SETLK: u32 = 6; +pub const F_SETLKW: u32 = 7; +pub const F_SETOWN: u32 = 8; +pub const F_GETOWN: u32 = 9; +pub const F_SETSIG: u32 = 10; +pub const F_GETSIG: u32 = 11; +pub const F_GETLK64: u32 = 12; +pub const F_SETLK64: u32 = 13; +pub const F_SETLKW64: u32 = 14; +pub const F_SETOWN_EX: u32 = 15; +pub const F_GETOWN_EX: u32 = 16; +pub const F_GETOWNER_UIDS: u32 = 17; +pub const F_OFD_GETLK: u32 = 36; +pub const F_OFD_SETLK: u32 = 37; +pub const F_OFD_SETLKW: u32 = 38; +pub const F_OWNER_TID: u32 = 0; +pub const F_OWNER_PID: u32 = 1; +pub const F_OWNER_PGRP: u32 = 2; +pub const FD_CLOEXEC: u32 = 1; +pub const F_RDLCK: u32 = 0; +pub const F_WRLCK: u32 = 1; +pub const F_UNLCK: u32 = 2; +pub const F_EXLCK: u32 = 4; +pub const F_SHLCK: u32 = 8; +pub const LOCK_SH: u32 = 1; +pub const LOCK_EX: u32 = 2; +pub const LOCK_NB: u32 = 4; +pub const LOCK_UN: u32 = 8; +pub const LOCK_MAND: u32 = 32; +pub const LOCK_READ: u32 = 64; +pub const LOCK_WRITE: u32 = 128; +pub const LOCK_RW: u32 = 192; +pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; +pub const RESOLVE_NO_XDEV: u32 = 1; +pub const RESOLVE_NO_MAGICLINKS: u32 = 2; +pub const RESOLVE_NO_SYMLINKS: u32 = 4; +pub const RESOLVE_BENEATH: u32 = 8; +pub const RESOLVE_IN_ROOT: u32 = 16; +pub const RESOLVE_CACHED: u32 = 32; +pub const F_SETLEASE: u32 = 1024; +pub const F_GETLEASE: u32 = 1025; +pub const F_CANCELLK: u32 = 1029; +pub const F_DUPFD_CLOEXEC: u32 = 1030; +pub const F_NOTIFY: u32 = 1026; +pub const F_SETPIPE_SZ: u32 = 1031; +pub const F_GETPIPE_SZ: u32 = 1032; +pub const F_ADD_SEALS: u32 = 1033; +pub const F_GET_SEALS: u32 = 1034; +pub const F_SEAL_SEAL: u32 = 1; +pub const F_SEAL_SHRINK: u32 = 2; +pub const F_SEAL_GROW: u32 = 4; +pub const F_SEAL_WRITE: u32 = 8; +pub const F_SEAL_FUTURE_WRITE: u32 = 16; +pub const F_SEAL_EXEC: u32 = 32; +pub const F_GET_RW_HINT: u32 = 1035; +pub const F_SET_RW_HINT: u32 = 1036; +pub const F_GET_FILE_RW_HINT: u32 = 1037; +pub const F_SET_FILE_RW_HINT: u32 = 1038; +pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; +pub const RWH_WRITE_LIFE_NONE: u32 = 1; +pub const RWH_WRITE_LIFE_SHORT: u32 = 2; +pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; +pub const RWH_WRITE_LIFE_LONG: u32 = 4; +pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; +pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; +pub const DN_ACCESS: u32 = 1; +pub const DN_MODIFY: u32 = 2; +pub const DN_CREATE: u32 = 4; +pub const DN_DELETE: u32 = 8; +pub const DN_RENAME: u32 = 16; +pub const DN_ATTRIB: u32 = 32; +pub const DN_MULTISHOT: u32 = 2147483648; +pub const AT_FDCWD: i32 = -100; +pub const AT_SYMLINK_NOFOLLOW: u32 = 256; +pub const AT_EACCESS: u32 = 512; +pub const AT_REMOVEDIR: u32 = 512; +pub const AT_SYMLINK_FOLLOW: u32 = 1024; +pub const AT_NO_AUTOMOUNT: u32 = 2048; +pub const AT_EMPTY_PATH: u32 = 4096; +pub const AT_STATX_SYNC_TYPE: u32 = 24576; +pub const AT_STATX_SYNC_AS_STAT: u32 = 0; +pub const AT_STATX_FORCE_SYNC: u32 = 8192; +pub const AT_STATX_DONT_SYNC: u32 = 16384; +pub const AT_RECURSIVE: u32 = 32768; +pub const EPOLL_CLOEXEC: u32 = 524288; +pub const EPOLL_CTL_ADD: u32 = 1; +pub const EPOLL_CTL_DEL: u32 = 2; +pub const EPOLL_CTL_MOD: u32 = 3; +pub const POSIX_FADV_NORMAL: u32 = 0; +pub const POSIX_FADV_RANDOM: u32 = 1; +pub const POSIX_FADV_SEQUENTIAL: u32 = 2; +pub const POSIX_FADV_WILLNEED: u32 = 3; +pub const POSIX_FADV_DONTNEED: u32 = 4; +pub const POSIX_FADV_NOREUSE: u32 = 5; +pub const FALLOC_FL_KEEP_SIZE: u32 = 1; +pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; +pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; +pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; +pub const FALLOC_FL_ZERO_RANGE: u32 = 16; +pub const FALLOC_FL_INSERT_RANGE: u32 = 32; +pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 14; +pub const _IOC_DIRBITS: u32 = 2; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 3; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 30; +pub const _IOC_NONE: u32 = 0; +pub const _IOC_WRITE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const IOC_IN: u32 = 1073741824; +pub const IOC_OUT: u32 = 2147483648; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const OPEN_TREE_CLOEXEC: u32 = 524288; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const FUTEX_WAIT: u32 = 0; +pub const FUTEX_WAKE: u32 = 1; +pub const FUTEX_FD: u32 = 2; +pub const FUTEX_REQUEUE: u32 = 3; +pub const FUTEX_CMP_REQUEUE: u32 = 4; +pub const FUTEX_WAKE_OP: u32 = 5; +pub const FUTEX_LOCK_PI: u32 = 6; +pub const FUTEX_UNLOCK_PI: u32 = 7; +pub const FUTEX_TRYLOCK_PI: u32 = 8; +pub const FUTEX_WAIT_BITSET: u32 = 9; +pub const FUTEX_WAKE_BITSET: u32 = 10; +pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; +pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; +pub const FUTEX_LOCK_PI2: u32 = 13; +pub const FUTEX_PRIVATE_FLAG: u32 = 128; +pub const FUTEX_CLOCK_REALTIME: u32 = 256; +pub const FUTEX_CMD_MASK: i32 = -385; +pub const FUTEX_WAIT_PRIVATE: u32 = 128; +pub const FUTEX_WAKE_PRIVATE: u32 = 129; +pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; +pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; +pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; +pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; +pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; +pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; +pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; +pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; +pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; +pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; +pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; +pub const FUTEX_32: u32 = 2; +pub const FUTEX_WAITV_MAX: u32 = 128; +pub const FUTEX_WAITERS: u32 = 2147483648; +pub const FUTEX_OWNER_DIED: u32 = 1073741824; +pub const FUTEX_TID_MASK: u32 = 1073741823; +pub const ROBUST_LIST_LIMIT: u32 = 2048; +pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; +pub const FUTEX_OP_SET: u32 = 0; +pub const FUTEX_OP_ADD: u32 = 1; +pub const FUTEX_OP_OR: u32 = 2; +pub const FUTEX_OP_ANDN: u32 = 3; +pub const FUTEX_OP_XOR: u32 = 4; +pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; +pub const FUTEX_OP_CMP_EQ: u32 = 0; +pub const FUTEX_OP_CMP_NE: u32 = 1; +pub const FUTEX_OP_CMP_LT: u32 = 2; +pub const FUTEX_OP_CMP_LE: u32 = 3; +pub const FUTEX_OP_CMP_GT: u32 = 4; +pub const FUTEX_OP_CMP_GE: u32 = 5; +pub const IN_ACCESS: u32 = 1; +pub const IN_MODIFY: u32 = 2; +pub const IN_ATTRIB: u32 = 4; +pub const IN_CLOSE_WRITE: u32 = 8; +pub const IN_CLOSE_NOWRITE: u32 = 16; +pub const IN_OPEN: u32 = 32; +pub const IN_MOVED_FROM: u32 = 64; +pub const IN_MOVED_TO: u32 = 128; +pub const IN_CREATE: u32 = 256; +pub const IN_DELETE: u32 = 512; +pub const IN_DELETE_SELF: u32 = 1024; +pub const IN_MOVE_SELF: u32 = 2048; +pub const IN_UNMOUNT: u32 = 8192; +pub const IN_Q_OVERFLOW: u32 = 16384; +pub const IN_IGNORED: u32 = 32768; +pub const IN_CLOSE: u32 = 24; +pub const IN_MOVE: u32 = 192; +pub const IN_ONLYDIR: u32 = 16777216; +pub const IN_DONT_FOLLOW: u32 = 33554432; +pub const IN_EXCL_UNLINK: u32 = 67108864; +pub const IN_MASK_CREATE: u32 = 268435456; +pub const IN_MASK_ADD: u32 = 536870912; +pub const IN_ISDIR: u32 = 1073741824; +pub const IN_ONESHOT: u32 = 2147483648; +pub const IN_ALL_EVENTS: u32 = 4095; +pub const IN_CLOEXEC: u32 = 524288; +pub const IN_NONBLOCK: u32 = 2048; +pub const ADFS_SUPER_MAGIC: u32 = 44533; +pub const AFFS_SUPER_MAGIC: u32 = 44543; +pub const AFS_SUPER_MAGIC: u32 = 1397113167; +pub const AUTOFS_SUPER_MAGIC: u32 = 391; +pub const CEPH_SUPER_MAGIC: u32 = 12805120; +pub const CODA_SUPER_MAGIC: u32 = 1937076805; +pub const CRAMFS_MAGIC: u32 = 684539205; +pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; +pub const DEBUGFS_MAGIC: u32 = 1684170528; +pub const SECURITYFS_MAGIC: u32 = 1935894131; +pub const SELINUX_MAGIC: u32 = 4185718668; +pub const SMACK_MAGIC: u32 = 1128357203; +pub const RAMFS_MAGIC: u32 = 2240043254; +pub const TMPFS_MAGIC: u32 = 16914836; +pub const HUGETLBFS_MAGIC: u32 = 2508478710; +pub const SQUASHFS_MAGIC: u32 = 1936814952; +pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; +pub const EFS_SUPER_MAGIC: u32 = 4278867; +pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; +pub const EXT2_SUPER_MAGIC: u32 = 61267; +pub const EXT3_SUPER_MAGIC: u32 = 61267; +pub const XENFS_SUPER_MAGIC: u32 = 2881100148; +pub const EXT4_SUPER_MAGIC: u32 = 61267; +pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; +pub const NILFS_SUPER_MAGIC: u32 = 13364; +pub const F2FS_SUPER_MAGIC: u32 = 4076150800; +pub const HPFS_SUPER_MAGIC: u32 = 4187351113; +pub const ISOFS_SUPER_MAGIC: u32 = 38496; +pub const JFFS2_SUPER_MAGIC: u32 = 29366; +pub const XFS_SUPER_MAGIC: u32 = 1481003842; +pub const PSTOREFS_MAGIC: u32 = 1634035564; +pub const EFIVARFS_MAGIC: u32 = 3730735588; +pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; +pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; +pub const FUSE_SUPER_MAGIC: u32 = 1702057286; +pub const MINIX_SUPER_MAGIC: u32 = 4991; +pub const MINIX_SUPER_MAGIC2: u32 = 5007; +pub const MINIX2_SUPER_MAGIC: u32 = 9320; +pub const MINIX2_SUPER_MAGIC2: u32 = 9336; +pub const MINIX3_SUPER_MAGIC: u32 = 19802; +pub const MSDOS_SUPER_MAGIC: u32 = 19780; +pub const EXFAT_SUPER_MAGIC: u32 = 538032816; +pub const NCP_SUPER_MAGIC: u32 = 22092; +pub const NFS_SUPER_MAGIC: u32 = 26985; +pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; +pub const OPENPROM_SUPER_MAGIC: u32 = 40865; +pub const QNX4_SUPER_MAGIC: u32 = 47; +pub const QNX6_SUPER_MAGIC: u32 = 1746473250; +pub const AFS_FS_MAGIC: u32 = 1799439955; +pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; +pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9] = b"ReIsErFs\0"; +pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr2Fs\0"; +pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr3Fs\0"; +pub const SMB_SUPER_MAGIC: u32 = 20859; +pub const CIFS_SUPER_MAGIC: u32 = 4283649346; +pub const SMB2_SUPER_MAGIC: u32 = 4266872130; +pub const CGROUP_SUPER_MAGIC: u32 = 2613483; +pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; +pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; +pub const STACK_END_MAGIC: u32 = 1470918301; +pub const TRACEFS_MAGIC: u32 = 1953653091; +pub const V9FS_MAGIC: u32 = 16914839; +pub const BDEVFS_MAGIC: u32 = 1650746742; +pub const DAXFS_MAGIC: u32 = 1684300152; +pub const BINFMTFS_MAGIC: u32 = 1112100429; +pub const DEVPTS_SUPER_MAGIC: u32 = 7377; +pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; +pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; +pub const PIPEFS_MAGIC: u32 = 1346981957; +pub const PROC_SUPER_MAGIC: u32 = 40864; +pub const SOCKFS_MAGIC: u32 = 1397703499; +pub const SYSFS_MAGIC: u32 = 1650812274; +pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; +pub const MTD_INODE_FS_MAGIC: u32 = 288389204; +pub const ANON_INODE_FS_MAGIC: u32 = 151263540; +pub const BTRFS_TEST_MAGIC: u32 = 1936880249; +pub const NSFS_MAGIC: u32 = 1853056627; +pub const BPF_FS_MAGIC: u32 = 3405662737; +pub const AAFS_MAGIC: u32 = 1513908720; +pub const ZONEFS_MAGIC: u32 = 1515144787; +pub const UDF_SUPER_MAGIC: u32 = 352400198; +pub const DMA_BUF_MAGIC: u32 = 1145913666; +pub const DEVMEM_MAGIC: u32 = 1162691661; +pub const SECRETMEM_MAGIC: u32 = 1397048141; +pub const MAP_32BIT: u32 = 64; +pub const PROT_READ: u32 = 1; +pub const PROT_WRITE: u32 = 2; +pub const PROT_EXEC: u32 = 4; +pub const PROT_SEM: u32 = 8; +pub const PROT_NONE: u32 = 0; +pub const PROT_GROWSDOWN: u32 = 16777216; +pub const PROT_GROWSUP: u32 = 33554432; +pub const MAP_TYPE: u32 = 15; +pub const MAP_FIXED: u32 = 16; +pub const MAP_ANONYMOUS: u32 = 32; +pub const MAP_POPULATE: u32 = 32768; +pub const MAP_NONBLOCK: u32 = 65536; +pub const MAP_STACK: u32 = 131072; +pub const MAP_HUGETLB: u32 = 262144; +pub const MAP_SYNC: u32 = 524288; +pub const MAP_FIXED_NOREPLACE: u32 = 1048576; +pub const MAP_UNINITIALIZED: u32 = 67108864; +pub const MLOCK_ONFAULT: u32 = 1; +pub const MS_ASYNC: u32 = 1; +pub const MS_INVALIDATE: u32 = 2; +pub const MS_SYNC: u32 = 4; +pub const MADV_NORMAL: u32 = 0; +pub const MADV_RANDOM: u32 = 1; +pub const MADV_SEQUENTIAL: u32 = 2; +pub const MADV_WILLNEED: u32 = 3; +pub const MADV_DONTNEED: u32 = 4; +pub const MADV_FREE: u32 = 8; +pub const MADV_REMOVE: u32 = 9; +pub const MADV_DONTFORK: u32 = 10; +pub const MADV_DOFORK: u32 = 11; +pub const MADV_HWPOISON: u32 = 100; +pub const MADV_SOFT_OFFLINE: u32 = 101; +pub const MADV_MERGEABLE: u32 = 12; +pub const MADV_UNMERGEABLE: u32 = 13; +pub const MADV_HUGEPAGE: u32 = 14; +pub const MADV_NOHUGEPAGE: u32 = 15; +pub const MADV_DONTDUMP: u32 = 16; +pub const MADV_DODUMP: u32 = 17; +pub const MADV_WIPEONFORK: u32 = 18; +pub const MADV_KEEPONFORK: u32 = 19; +pub const MADV_COLD: u32 = 20; +pub const MADV_PAGEOUT: u32 = 21; +pub const MADV_POPULATE_READ: u32 = 22; +pub const MADV_POPULATE_WRITE: u32 = 23; +pub const MADV_DONTNEED_LOCKED: u32 = 24; +pub const MADV_COLLAPSE: u32 = 25; +pub const MAP_FILE: u32 = 0; +pub const PKEY_DISABLE_ACCESS: u32 = 1; +pub const PKEY_DISABLE_WRITE: u32 = 2; +pub const PKEY_ACCESS_MASK: u32 = 3; +pub const MAP_GROWSDOWN: u32 = 256; +pub const MAP_DENYWRITE: u32 = 2048; +pub const MAP_EXECUTABLE: u32 = 4096; +pub const MAP_LOCKED: u32 = 8192; +pub const MAP_NORESERVE: u32 = 16384; +pub const MCL_CURRENT: u32 = 1; +pub const MCL_FUTURE: u32 = 2; +pub const MCL_ONFAULT: u32 = 4; +pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; +pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; +pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; +pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; +pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; +pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; +pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; +pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; +pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; +pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; +pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; +pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; +pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; +pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; +pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; +pub const MREMAP_MAYMOVE: u32 = 1; +pub const MREMAP_FIXED: u32 = 2; +pub const MREMAP_DONTUNMAP: u32 = 4; +pub const OVERCOMMIT_GUESS: u32 = 0; +pub const OVERCOMMIT_ALWAYS: u32 = 1; +pub const OVERCOMMIT_NEVER: u32 = 2; +pub const MAP_SHARED: u32 = 1; +pub const MAP_PRIVATE: u32 = 2; +pub const MAP_SHARED_VALIDATE: u32 = 3; +pub const MAP_HUGE_SHIFT: u32 = 26; +pub const MAP_HUGE_MASK: u32 = 63; +pub const MAP_HUGE_16KB: u32 = 939524096; +pub const MAP_HUGE_64KB: u32 = 1073741824; +pub const MAP_HUGE_512KB: u32 = 1275068416; +pub const MAP_HUGE_1MB: u32 = 1342177280; +pub const MAP_HUGE_2MB: u32 = 1409286144; +pub const MAP_HUGE_8MB: u32 = 1543503872; +pub const MAP_HUGE_16MB: u32 = 1610612736; +pub const MAP_HUGE_32MB: u32 = 1677721600; +pub const MAP_HUGE_256MB: u32 = 1879048192; +pub const MAP_HUGE_512MB: u32 = 1946157056; +pub const MAP_HUGE_1GB: u32 = 2013265920; +pub const MAP_HUGE_2GB: u32 = 2080374784; +pub const MAP_HUGE_16GB: u32 = 2281701376; +pub const POLLIN: u32 = 1; +pub const POLLPRI: u32 = 2; +pub const POLLOUT: u32 = 4; +pub const POLLERR: u32 = 8; +pub const POLLHUP: u32 = 16; +pub const POLLNVAL: u32 = 32; +pub const POLLRDNORM: u32 = 64; +pub const POLLRDBAND: u32 = 128; +pub const POLLWRNORM: u32 = 256; +pub const POLLWRBAND: u32 = 512; +pub const POLLMSG: u32 = 1024; +pub const POLLREMOVE: u32 = 4096; +pub const POLLRDHUP: u32 = 8192; +pub const GRND_NONBLOCK: u32 = 1; +pub const GRND_RANDOM: u32 = 2; +pub const GRND_INSECURE: u32 = 4; +pub const ITIMER_REAL: u32 = 0; +pub const ITIMER_VIRTUAL: u32 = 1; +pub const ITIMER_PROF: u32 = 2; +pub const CLOCK_REALTIME: u32 = 0; +pub const CLOCK_MONOTONIC: u32 = 1; +pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; +pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; +pub const CLOCK_MONOTONIC_RAW: u32 = 4; +pub const CLOCK_REALTIME_COARSE: u32 = 5; +pub const CLOCK_MONOTONIC_COARSE: u32 = 6; +pub const CLOCK_BOOTTIME: u32 = 7; +pub const CLOCK_REALTIME_ALARM: u32 = 8; +pub const CLOCK_BOOTTIME_ALARM: u32 = 9; +pub const CLOCK_SGI_CYCLE: u32 = 10; +pub const CLOCK_TAI: u32 = 11; +pub const MAX_CLOCKS: u32 = 16; +pub const CLOCKS_MASK: u32 = 1; +pub const CLOCKS_MONO: u32 = 1; +pub const TIMER_ABSTIME: u32 = 1; +pub const RUSAGE_SELF: u32 = 0; +pub const RUSAGE_CHILDREN: i32 = -1; +pub const RUSAGE_BOTH: i32 = -2; +pub const RUSAGE_THREAD: u32 = 1; +pub const RLIM64_INFINITY: i32 = -1; +pub const PRIO_MIN: i32 = -20; +pub const PRIO_MAX: u32 = 20; +pub const PRIO_PROCESS: u32 = 0; +pub const PRIO_PGRP: u32 = 1; +pub const PRIO_USER: u32 = 2; +pub const _STK_LIM: u32 = 8388608; +pub const MLOCK_LIMIT: u32 = 8388608; +pub const RLIMIT_CPU: u32 = 0; +pub const RLIMIT_FSIZE: u32 = 1; +pub const RLIMIT_DATA: u32 = 2; +pub const RLIMIT_STACK: u32 = 3; +pub const RLIMIT_CORE: u32 = 4; +pub const RLIMIT_RSS: u32 = 5; +pub const RLIMIT_NPROC: u32 = 6; +pub const RLIMIT_NOFILE: u32 = 7; +pub const RLIMIT_MEMLOCK: u32 = 8; +pub const RLIMIT_AS: u32 = 9; +pub const RLIMIT_LOCKS: u32 = 10; +pub const RLIMIT_SIGPENDING: u32 = 11; +pub const RLIMIT_MSGQUEUE: u32 = 12; +pub const RLIMIT_NICE: u32 = 13; +pub const RLIMIT_RTPRIO: u32 = 14; +pub const RLIMIT_RTTIME: u32 = 15; +pub const RLIM_NLIMITS: u32 = 16; +pub const RLIM_INFINITY: i32 = -1; +pub const CSIGNAL: u32 = 255; +pub const CLONE_VM: u32 = 256; +pub const CLONE_FS: u32 = 512; +pub const CLONE_FILES: u32 = 1024; +pub const CLONE_SIGHAND: u32 = 2048; +pub const CLONE_PIDFD: u32 = 4096; +pub const CLONE_PTRACE: u32 = 8192; +pub const CLONE_VFORK: u32 = 16384; +pub const CLONE_PARENT: u32 = 32768; +pub const CLONE_THREAD: u32 = 65536; +pub const CLONE_NEWNS: u32 = 131072; +pub const CLONE_SYSVSEM: u32 = 262144; +pub const CLONE_SETTLS: u32 = 524288; +pub const CLONE_PARENT_SETTID: u32 = 1048576; +pub const CLONE_CHILD_CLEARTID: u32 = 2097152; +pub const CLONE_DETACHED: u32 = 4194304; +pub const CLONE_UNTRACED: u32 = 8388608; +pub const CLONE_CHILD_SETTID: u32 = 16777216; +pub const CLONE_NEWCGROUP: u32 = 33554432; +pub const CLONE_NEWUTS: u32 = 67108864; +pub const CLONE_NEWIPC: u32 = 134217728; +pub const CLONE_NEWUSER: u32 = 268435456; +pub const CLONE_NEWPID: u32 = 536870912; +pub const CLONE_NEWNET: u32 = 1073741824; +pub const CLONE_IO: u32 = 2147483648; +pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; +pub const CLONE_INTO_CGROUP: u64 = 8589934592; +pub const CLONE_NEWTIME: u32 = 128; +pub const CLONE_ARGS_SIZE_VER0: u32 = 64; +pub const CLONE_ARGS_SIZE_VER1: u32 = 80; +pub const CLONE_ARGS_SIZE_VER2: u32 = 88; +pub const SCHED_NORMAL: u32 = 0; +pub const SCHED_FIFO: u32 = 1; +pub const SCHED_RR: u32 = 2; +pub const SCHED_BATCH: u32 = 3; +pub const SCHED_IDLE: u32 = 5; +pub const SCHED_DEADLINE: u32 = 6; +pub const SCHED_RESET_ON_FORK: u32 = 1073741824; +pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; +pub const SCHED_FLAG_RECLAIM: u32 = 2; +pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; +pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; +pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; +pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; +pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; +pub const SCHED_FLAG_KEEP_ALL: u32 = 24; +pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; +pub const SCHED_FLAG_ALL: u32 = 127; +pub const NSIG: u32 = 32; +pub const SIGHUP: u32 = 1; +pub const SIGINT: u32 = 2; +pub const SIGQUIT: u32 = 3; +pub const SIGILL: u32 = 4; +pub const SIGTRAP: u32 = 5; +pub const SIGABRT: u32 = 6; +pub const SIGIOT: u32 = 6; +pub const SIGBUS: u32 = 7; +pub const SIGFPE: u32 = 8; +pub const SIGKILL: u32 = 9; +pub const SIGUSR1: u32 = 10; +pub const SIGSEGV: u32 = 11; +pub const SIGUSR2: u32 = 12; +pub const SIGPIPE: u32 = 13; +pub const SIGALRM: u32 = 14; +pub const SIGTERM: u32 = 15; +pub const SIGSTKFLT: u32 = 16; +pub const SIGCHLD: u32 = 17; +pub const SIGCONT: u32 = 18; +pub const SIGSTOP: u32 = 19; +pub const SIGTSTP: u32 = 20; +pub const SIGTTIN: u32 = 21; +pub const SIGTTOU: u32 = 22; +pub const SIGURG: u32 = 23; +pub const SIGXCPU: u32 = 24; +pub const SIGXFSZ: u32 = 25; +pub const SIGVTALRM: u32 = 26; +pub const SIGPROF: u32 = 27; +pub const SIGWINCH: u32 = 28; +pub const SIGIO: u32 = 29; +pub const SIGPOLL: u32 = 29; +pub const SIGPWR: u32 = 30; +pub const SIGSYS: u32 = 31; +pub const SIGUNUSED: u32 = 31; +pub const SIGRTMIN: u32 = 32; +pub const SA_RESTORER: u32 = 67108864; +pub const MINSIGSTKSZ: u32 = 2048; +pub const SIGSTKSZ: u32 = 8192; +pub const SA_NOCLDSTOP: u32 = 1; +pub const SA_NOCLDWAIT: u32 = 2; +pub const SA_SIGINFO: u32 = 4; +pub const SA_UNSUPPORTED: u32 = 1024; +pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SA_ONSTACK: u32 = 134217728; +pub const SA_RESTART: u32 = 268435456; +pub const SA_NODEFER: u32 = 1073741824; +pub const SA_RESETHAND: u32 = 2147483648; +pub const SA_NOMASK: u32 = 1073741824; +pub const SA_ONESHOT: u32 = 2147483648; +pub const SIG_BLOCK: u32 = 0; +pub const SIG_UNBLOCK: u32 = 1; +pub const SIG_SETMASK: u32 = 2; +pub const SI_MAX_SIZE: u32 = 128; +pub const SI_USER: u32 = 0; +pub const SI_KERNEL: u32 = 128; +pub const SI_QUEUE: i32 = -1; +pub const SI_TIMER: i32 = -2; +pub const SI_MESGQ: i32 = -3; +pub const SI_ASYNCIO: i32 = -4; +pub const SI_SIGIO: i32 = -5; +pub const SI_TKILL: i32 = -6; +pub const SI_DETHREAD: i32 = -7; +pub const SI_ASYNCNL: i32 = -60; +pub const ILL_ILLOPC: u32 = 1; +pub const ILL_ILLOPN: u32 = 2; +pub const ILL_ILLADR: u32 = 3; +pub const ILL_ILLTRP: u32 = 4; +pub const ILL_PRVOPC: u32 = 5; +pub const ILL_PRVREG: u32 = 6; +pub const ILL_COPROC: u32 = 7; +pub const ILL_BADSTK: u32 = 8; +pub const ILL_BADIADDR: u32 = 9; +pub const __ILL_BREAK: u32 = 10; +pub const __ILL_BNDMOD: u32 = 11; +pub const NSIGILL: u32 = 11; +pub const FPE_INTDIV: u32 = 1; +pub const FPE_INTOVF: u32 = 2; +pub const FPE_FLTDIV: u32 = 3; +pub const FPE_FLTOVF: u32 = 4; +pub const FPE_FLTUND: u32 = 5; +pub const FPE_FLTRES: u32 = 6; +pub const FPE_FLTINV: u32 = 7; +pub const FPE_FLTSUB: u32 = 8; +pub const __FPE_DECOVF: u32 = 9; +pub const __FPE_DECDIV: u32 = 10; +pub const __FPE_DECERR: u32 = 11; +pub const __FPE_INVASC: u32 = 12; +pub const __FPE_INVDEC: u32 = 13; +pub const FPE_FLTUNK: u32 = 14; +pub const FPE_CONDTRAP: u32 = 15; +pub const NSIGFPE: u32 = 15; +pub const SEGV_MAPERR: u32 = 1; +pub const SEGV_ACCERR: u32 = 2; +pub const SEGV_BNDERR: u32 = 3; +pub const SEGV_PKUERR: u32 = 4; +pub const SEGV_ACCADI: u32 = 5; +pub const SEGV_ADIDERR: u32 = 6; +pub const SEGV_ADIPERR: u32 = 7; +pub const SEGV_MTEAERR: u32 = 8; +pub const SEGV_MTESERR: u32 = 9; +pub const NSIGSEGV: u32 = 9; +pub const BUS_ADRALN: u32 = 1; +pub const BUS_ADRERR: u32 = 2; +pub const BUS_OBJERR: u32 = 3; +pub const BUS_MCEERR_AR: u32 = 4; +pub const BUS_MCEERR_AO: u32 = 5; +pub const NSIGBUS: u32 = 5; +pub const TRAP_BRKPT: u32 = 1; +pub const TRAP_TRACE: u32 = 2; +pub const TRAP_BRANCH: u32 = 3; +pub const TRAP_HWBKPT: u32 = 4; +pub const TRAP_UNK: u32 = 5; +pub const TRAP_PERF: u32 = 6; +pub const NSIGTRAP: u32 = 6; +pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; +pub const CLD_EXITED: u32 = 1; +pub const CLD_KILLED: u32 = 2; +pub const CLD_DUMPED: u32 = 3; +pub const CLD_TRAPPED: u32 = 4; +pub const CLD_STOPPED: u32 = 5; +pub const CLD_CONTINUED: u32 = 6; +pub const NSIGCHLD: u32 = 6; +pub const POLL_IN: u32 = 1; +pub const POLL_OUT: u32 = 2; +pub const POLL_MSG: u32 = 3; +pub const POLL_ERR: u32 = 4; +pub const POLL_PRI: u32 = 5; +pub const POLL_HUP: u32 = 6; +pub const NSIGPOLL: u32 = 6; +pub const SYS_SECCOMP: u32 = 1; +pub const SYS_USER_DISPATCH: u32 = 2; +pub const NSIGSYS: u32 = 2; +pub const EMT_TAGOVF: u32 = 1; +pub const NSIGEMT: u32 = 1; +pub const SIGEV_SIGNAL: u32 = 0; +pub const SIGEV_NONE: u32 = 1; +pub const SIGEV_THREAD: u32 = 2; +pub const SIGEV_THREAD_ID: u32 = 4; +pub const SIGEV_MAX_SIZE: u32 = 64; +pub const SS_ONSTACK: u32 = 1; +pub const SS_DISABLE: u32 = 2; +pub const SS_AUTODISARM: u32 = 2147483648; +pub const SS_FLAG_BITS: u32 = 2147483648; +pub const S_IFMT: u32 = 61440; +pub const S_IFSOCK: u32 = 49152; +pub const S_IFLNK: u32 = 40960; +pub const S_IFREG: u32 = 32768; +pub const S_IFBLK: u32 = 24576; +pub const S_IFDIR: u32 = 16384; +pub const S_IFCHR: u32 = 8192; +pub const S_IFIFO: u32 = 4096; +pub const S_ISUID: u32 = 2048; +pub const S_ISGID: u32 = 1024; +pub const S_ISVTX: u32 = 512; +pub const S_IRWXU: u32 = 448; +pub const S_IRUSR: u32 = 256; +pub const S_IWUSR: u32 = 128; +pub const S_IXUSR: u32 = 64; +pub const S_IRWXG: u32 = 56; +pub const S_IRGRP: u32 = 32; +pub const S_IWGRP: u32 = 16; +pub const S_IXGRP: u32 = 8; +pub const S_IRWXO: u32 = 7; +pub const S_IROTH: u32 = 4; +pub const S_IWOTH: u32 = 2; +pub const S_IXOTH: u32 = 1; +pub const STATX_TYPE: u32 = 1; +pub const STATX_MODE: u32 = 2; +pub const STATX_NLINK: u32 = 4; +pub const STATX_UID: u32 = 8; +pub const STATX_GID: u32 = 16; +pub const STATX_ATIME: u32 = 32; +pub const STATX_MTIME: u32 = 64; +pub const STATX_CTIME: u32 = 128; +pub const STATX_INO: u32 = 256; +pub const STATX_SIZE: u32 = 512; +pub const STATX_BLOCKS: u32 = 1024; +pub const STATX_BASIC_STATS: u32 = 2047; +pub const STATX_BTIME: u32 = 2048; +pub const STATX_MNT_ID: u32 = 4096; +pub const STATX_DIOALIGN: u32 = 8192; +pub const STATX__RESERVED: u32 = 2147483648; +pub const STATX_ALL: u32 = 4095; +pub const STATX_ATTR_COMPRESSED: u32 = 4; +pub const STATX_ATTR_IMMUTABLE: u32 = 16; +pub const STATX_ATTR_APPEND: u32 = 32; +pub const STATX_ATTR_NODUMP: u32 = 64; +pub const STATX_ATTR_ENCRYPTED: u32 = 2048; +pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; +pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; +pub const STATX_ATTR_VERITY: u32 = 1048576; +pub const STATX_ATTR_DAX: u32 = 2097152; +pub const IGNBRK: u32 = 1; +pub const BRKINT: u32 = 2; +pub const IGNPAR: u32 = 4; +pub const PARMRK: u32 = 8; +pub const INPCK: u32 = 16; +pub const ISTRIP: u32 = 32; +pub const INLCR: u32 = 64; +pub const IGNCR: u32 = 128; +pub const ICRNL: u32 = 256; +pub const IXANY: u32 = 2048; +pub const OPOST: u32 = 1; +pub const OCRNL: u32 = 8; +pub const ONOCR: u32 = 16; +pub const ONLRET: u32 = 32; +pub const OFILL: u32 = 64; +pub const OFDEL: u32 = 128; +pub const B0: u32 = 0; +pub const B50: u32 = 1; +pub const B75: u32 = 2; +pub const B110: u32 = 3; +pub const B134: u32 = 4; +pub const B150: u32 = 5; +pub const B200: u32 = 6; +pub const B300: u32 = 7; +pub const B600: u32 = 8; +pub const B1200: u32 = 9; +pub const B1800: u32 = 10; +pub const B2400: u32 = 11; +pub const B4800: u32 = 12; +pub const B9600: u32 = 13; +pub const B19200: u32 = 14; +pub const B38400: u32 = 15; +pub const EXTA: u32 = 14; +pub const EXTB: u32 = 15; +pub const ADDRB: u32 = 536870912; +pub const CMSPAR: u32 = 1073741824; +pub const CRTSCTS: u32 = 2147483648; +pub const IBSHIFT: u32 = 16; +pub const TCOOFF: u32 = 0; +pub const TCOON: u32 = 1; +pub const TCIOFF: u32 = 2; +pub const TCION: u32 = 3; +pub const TCIFLUSH: u32 = 0; +pub const TCOFLUSH: u32 = 1; +pub const TCIOFLUSH: u32 = 2; +pub const NCCS: u32 = 19; +pub const VINTR: u32 = 0; +pub const VQUIT: u32 = 1; +pub const VERASE: u32 = 2; +pub const VKILL: u32 = 3; +pub const VEOF: u32 = 4; +pub const VTIME: u32 = 5; +pub const VMIN: u32 = 6; +pub const VSWTC: u32 = 7; +pub const VSTART: u32 = 8; +pub const VSTOP: u32 = 9; +pub const VSUSP: u32 = 10; +pub const VEOL: u32 = 11; +pub const VREPRINT: u32 = 12; +pub const VDISCARD: u32 = 13; +pub const VWERASE: u32 = 14; +pub const VLNEXT: u32 = 15; +pub const VEOL2: u32 = 16; +pub const IUCLC: u32 = 512; +pub const IXON: u32 = 1024; +pub const IXOFF: u32 = 4096; +pub const IMAXBEL: u32 = 8192; +pub const IUTF8: u32 = 16384; +pub const OLCUC: u32 = 2; +pub const ONLCR: u32 = 4; +pub const NLDLY: u32 = 256; +pub const NL0: u32 = 0; +pub const NL1: u32 = 256; +pub const CRDLY: u32 = 1536; +pub const CR0: u32 = 0; +pub const CR1: u32 = 512; +pub const CR2: u32 = 1024; +pub const CR3: u32 = 1536; +pub const TABDLY: u32 = 6144; +pub const TAB0: u32 = 0; +pub const TAB1: u32 = 2048; +pub const TAB2: u32 = 4096; +pub const TAB3: u32 = 6144; +pub const XTABS: u32 = 6144; +pub const BSDLY: u32 = 8192; +pub const BS0: u32 = 0; +pub const BS1: u32 = 8192; +pub const VTDLY: u32 = 16384; +pub const VT0: u32 = 0; +pub const VT1: u32 = 16384; +pub const FFDLY: u32 = 32768; +pub const FF0: u32 = 0; +pub const FF1: u32 = 32768; +pub const CBAUD: u32 = 4111; +pub const CSIZE: u32 = 48; +pub const CS5: u32 = 0; +pub const CS6: u32 = 16; +pub const CS7: u32 = 32; +pub const CS8: u32 = 48; +pub const CSTOPB: u32 = 64; +pub const CREAD: u32 = 128; +pub const PARENB: u32 = 256; +pub const PARODD: u32 = 512; +pub const HUPCL: u32 = 1024; +pub const CLOCAL: u32 = 2048; +pub const CBAUDEX: u32 = 4096; +pub const BOTHER: u32 = 4096; +pub const B57600: u32 = 4097; +pub const B115200: u32 = 4098; +pub const B230400: u32 = 4099; +pub const B460800: u32 = 4100; +pub const B500000: u32 = 4101; +pub const B576000: u32 = 4102; +pub const B921600: u32 = 4103; +pub const B1000000: u32 = 4104; +pub const B1152000: u32 = 4105; +pub const B1500000: u32 = 4106; +pub const B2000000: u32 = 4107; +pub const B2500000: u32 = 4108; +pub const B3000000: u32 = 4109; +pub const B3500000: u32 = 4110; +pub const B4000000: u32 = 4111; +pub const CIBAUD: u32 = 269418496; +pub const ISIG: u32 = 1; +pub const ICANON: u32 = 2; +pub const XCASE: u32 = 4; +pub const ECHO: u32 = 8; +pub const ECHOE: u32 = 16; +pub const ECHOK: u32 = 32; +pub const ECHONL: u32 = 64; +pub const NOFLSH: u32 = 128; +pub const TOSTOP: u32 = 256; +pub const ECHOCTL: u32 = 512; +pub const ECHOPRT: u32 = 1024; +pub const ECHOKE: u32 = 2048; +pub const FLUSHO: u32 = 4096; +pub const PENDIN: u32 = 16384; +pub const IEXTEN: u32 = 32768; +pub const EXTPROC: u32 = 65536; +pub const TCSANOW: u32 = 0; +pub const TCSADRAIN: u32 = 1; +pub const TCSAFLUSH: u32 = 2; +pub const TIOCPKT_DATA: u32 = 0; +pub const TIOCPKT_FLUSHREAD: u32 = 1; +pub const TIOCPKT_FLUSHWRITE: u32 = 2; +pub const TIOCPKT_STOP: u32 = 4; +pub const TIOCPKT_START: u32 = 8; +pub const TIOCPKT_NOSTOP: u32 = 16; +pub const TIOCPKT_DOSTOP: u32 = 32; +pub const TIOCPKT_IOCTL: u32 = 64; +pub const TIOCSER_TEMT: u32 = 1; +pub const NCC: u32 = 8; +pub const TIOCM_LE: u32 = 1; +pub const TIOCM_DTR: u32 = 2; +pub const TIOCM_RTS: u32 = 4; +pub const TIOCM_ST: u32 = 8; +pub const TIOCM_SR: u32 = 16; +pub const TIOCM_CTS: u32 = 32; +pub const TIOCM_CAR: u32 = 64; +pub const TIOCM_RNG: u32 = 128; +pub const TIOCM_DSR: u32 = 256; +pub const TIOCM_CD: u32 = 64; +pub const TIOCM_RI: u32 = 128; +pub const TIOCM_OUT1: u32 = 8192; +pub const TIOCM_OUT2: u32 = 16384; +pub const TIOCM_LOOP: u32 = 32768; +pub const UIO_FASTIOV: u32 = 8; +pub const UIO_MAXIOV: u32 = 1024; +pub const __X32_SYSCALL_BIT: u32 = 1073741824; +pub const __NR_restart_syscall: u32 = 0; +pub const __NR_exit: u32 = 1; +pub const __NR_fork: u32 = 2; +pub const __NR_read: u32 = 3; +pub const __NR_write: u32 = 4; +pub const __NR_open: u32 = 5; +pub const __NR_close: u32 = 6; +pub const __NR_waitpid: u32 = 7; +pub const __NR_creat: u32 = 8; +pub const __NR_link: u32 = 9; +pub const __NR_unlink: u32 = 10; +pub const __NR_execve: u32 = 11; +pub const __NR_chdir: u32 = 12; +pub const __NR_time: u32 = 13; +pub const __NR_mknod: u32 = 14; +pub const __NR_chmod: u32 = 15; +pub const __NR_lchown: u32 = 16; +pub const __NR_break: u32 = 17; +pub const __NR_oldstat: u32 = 18; +pub const __NR_lseek: u32 = 19; +pub const __NR_getpid: u32 = 20; +pub const __NR_mount: u32 = 21; +pub const __NR_umount: u32 = 22; +pub const __NR_setuid: u32 = 23; +pub const __NR_getuid: u32 = 24; +pub const __NR_stime: u32 = 25; +pub const __NR_ptrace: u32 = 26; +pub const __NR_alarm: u32 = 27; +pub const __NR_oldfstat: u32 = 28; +pub const __NR_pause: u32 = 29; +pub const __NR_utime: u32 = 30; +pub const __NR_stty: u32 = 31; +pub const __NR_gtty: u32 = 32; +pub const __NR_access: u32 = 33; +pub const __NR_nice: u32 = 34; +pub const __NR_ftime: u32 = 35; +pub const __NR_sync: u32 = 36; +pub const __NR_kill: u32 = 37; +pub const __NR_rename: u32 = 38; +pub const __NR_mkdir: u32 = 39; +pub const __NR_rmdir: u32 = 40; +pub const __NR_dup: u32 = 41; +pub const __NR_pipe: u32 = 42; +pub const __NR_times: u32 = 43; +pub const __NR_prof: u32 = 44; +pub const __NR_brk: u32 = 45; +pub const __NR_setgid: u32 = 46; +pub const __NR_getgid: u32 = 47; +pub const __NR_signal: u32 = 48; +pub const __NR_geteuid: u32 = 49; +pub const __NR_getegid: u32 = 50; +pub const __NR_acct: u32 = 51; +pub const __NR_umount2: u32 = 52; +pub const __NR_lock: u32 = 53; +pub const __NR_ioctl: u32 = 54; +pub const __NR_fcntl: u32 = 55; +pub const __NR_mpx: u32 = 56; +pub const __NR_setpgid: u32 = 57; +pub const __NR_ulimit: u32 = 58; +pub const __NR_oldolduname: u32 = 59; +pub const __NR_umask: u32 = 60; +pub const __NR_chroot: u32 = 61; +pub const __NR_ustat: u32 = 62; +pub const __NR_dup2: u32 = 63; +pub const __NR_getppid: u32 = 64; +pub const __NR_getpgrp: u32 = 65; +pub const __NR_setsid: u32 = 66; +pub const __NR_sigaction: u32 = 67; +pub const __NR_sgetmask: u32 = 68; +pub const __NR_ssetmask: u32 = 69; +pub const __NR_setreuid: u32 = 70; +pub const __NR_setregid: u32 = 71; +pub const __NR_sigsuspend: u32 = 72; +pub const __NR_sigpending: u32 = 73; +pub const __NR_sethostname: u32 = 74; +pub const __NR_setrlimit: u32 = 75; +pub const __NR_getrlimit: u32 = 76; +pub const __NR_getrusage: u32 = 77; +pub const __NR_gettimeofday: u32 = 78; +pub const __NR_settimeofday: u32 = 79; +pub const __NR_getgroups: u32 = 80; +pub const __NR_setgroups: u32 = 81; +pub const __NR_select: u32 = 82; +pub const __NR_symlink: u32 = 83; +pub const __NR_oldlstat: u32 = 84; +pub const __NR_readlink: u32 = 85; +pub const __NR_uselib: u32 = 86; +pub const __NR_swapon: u32 = 87; +pub const __NR_reboot: u32 = 88; +pub const __NR_readdir: u32 = 89; +pub const __NR_mmap: u32 = 90; +pub const __NR_munmap: u32 = 91; +pub const __NR_truncate: u32 = 92; +pub const __NR_ftruncate: u32 = 93; +pub const __NR_fchmod: u32 = 94; +pub const __NR_fchown: u32 = 95; +pub const __NR_getpriority: u32 = 96; +pub const __NR_setpriority: u32 = 97; +pub const __NR_profil: u32 = 98; +pub const __NR_statfs: u32 = 99; +pub const __NR_fstatfs: u32 = 100; +pub const __NR_ioperm: u32 = 101; +pub const __NR_socketcall: u32 = 102; +pub const __NR_syslog: u32 = 103; +pub const __NR_setitimer: u32 = 104; +pub const __NR_getitimer: u32 = 105; +pub const __NR_stat: u32 = 106; +pub const __NR_lstat: u32 = 107; +pub const __NR_fstat: u32 = 108; +pub const __NR_olduname: u32 = 109; +pub const __NR_iopl: u32 = 110; +pub const __NR_vhangup: u32 = 111; +pub const __NR_idle: u32 = 112; +pub const __NR_vm86old: u32 = 113; +pub const __NR_wait4: u32 = 114; +pub const __NR_swapoff: u32 = 115; +pub const __NR_sysinfo: u32 = 116; +pub const __NR_ipc: u32 = 117; +pub const __NR_fsync: u32 = 118; +pub const __NR_sigreturn: u32 = 119; +pub const __NR_clone: u32 = 120; +pub const __NR_setdomainname: u32 = 121; +pub const __NR_uname: u32 = 122; +pub const __NR_modify_ldt: u32 = 123; +pub const __NR_adjtimex: u32 = 124; +pub const __NR_mprotect: u32 = 125; +pub const __NR_sigprocmask: u32 = 126; +pub const __NR_create_module: u32 = 127; +pub const __NR_init_module: u32 = 128; +pub const __NR_delete_module: u32 = 129; +pub const __NR_get_kernel_syms: u32 = 130; +pub const __NR_quotactl: u32 = 131; +pub const __NR_getpgid: u32 = 132; +pub const __NR_fchdir: u32 = 133; +pub const __NR_bdflush: u32 = 134; +pub const __NR_sysfs: u32 = 135; +pub const __NR_personality: u32 = 136; +pub const __NR_afs_syscall: u32 = 137; +pub const __NR_setfsuid: u32 = 138; +pub const __NR_setfsgid: u32 = 139; +pub const __NR__llseek: u32 = 140; +pub const __NR_getdents: u32 = 141; +pub const __NR__newselect: u32 = 142; +pub const __NR_flock: u32 = 143; +pub const __NR_msync: u32 = 144; +pub const __NR_readv: u32 = 145; +pub const __NR_writev: u32 = 146; +pub const __NR_getsid: u32 = 147; +pub const __NR_fdatasync: u32 = 148; +pub const __NR__sysctl: u32 = 149; +pub const __NR_mlock: u32 = 150; +pub const __NR_munlock: u32 = 151; +pub const __NR_mlockall: u32 = 152; +pub const __NR_munlockall: u32 = 153; +pub const __NR_sched_setparam: u32 = 154; +pub const __NR_sched_getparam: u32 = 155; +pub const __NR_sched_setscheduler: u32 = 156; +pub const __NR_sched_getscheduler: u32 = 157; +pub const __NR_sched_yield: u32 = 158; +pub const __NR_sched_get_priority_max: u32 = 159; +pub const __NR_sched_get_priority_min: u32 = 160; +pub const __NR_sched_rr_get_interval: u32 = 161; +pub const __NR_nanosleep: u32 = 162; +pub const __NR_mremap: u32 = 163; +pub const __NR_setresuid: u32 = 164; +pub const __NR_getresuid: u32 = 165; +pub const __NR_vm86: u32 = 166; +pub const __NR_query_module: u32 = 167; +pub const __NR_poll: u32 = 168; +pub const __NR_nfsservctl: u32 = 169; +pub const __NR_setresgid: u32 = 170; +pub const __NR_getresgid: u32 = 171; +pub const __NR_prctl: u32 = 172; +pub const __NR_rt_sigreturn: u32 = 173; +pub const __NR_rt_sigaction: u32 = 174; +pub const __NR_rt_sigprocmask: u32 = 175; +pub const __NR_rt_sigpending: u32 = 176; +pub const __NR_rt_sigtimedwait: u32 = 177; +pub const __NR_rt_sigqueueinfo: u32 = 178; +pub const __NR_rt_sigsuspend: u32 = 179; +pub const __NR_pread64: u32 = 180; +pub const __NR_pwrite64: u32 = 181; +pub const __NR_chown: u32 = 182; +pub const __NR_getcwd: u32 = 183; +pub const __NR_capget: u32 = 184; +pub const __NR_capset: u32 = 185; +pub const __NR_sigaltstack: u32 = 186; +pub const __NR_sendfile: u32 = 187; +pub const __NR_getpmsg: u32 = 188; +pub const __NR_putpmsg: u32 = 189; +pub const __NR_vfork: u32 = 190; +pub const __NR_ugetrlimit: u32 = 191; +pub const __NR_mmap2: u32 = 192; +pub const __NR_truncate64: u32 = 193; +pub const __NR_ftruncate64: u32 = 194; +pub const __NR_stat64: u32 = 195; +pub const __NR_lstat64: u32 = 196; +pub const __NR_fstat64: u32 = 197; +pub const __NR_lchown32: u32 = 198; +pub const __NR_getuid32: u32 = 199; +pub const __NR_getgid32: u32 = 200; +pub const __NR_geteuid32: u32 = 201; +pub const __NR_getegid32: u32 = 202; +pub const __NR_setreuid32: u32 = 203; +pub const __NR_setregid32: u32 = 204; +pub const __NR_getgroups32: u32 = 205; +pub const __NR_setgroups32: u32 = 206; +pub const __NR_fchown32: u32 = 207; +pub const __NR_setresuid32: u32 = 208; +pub const __NR_getresuid32: u32 = 209; +pub const __NR_setresgid32: u32 = 210; +pub const __NR_getresgid32: u32 = 211; +pub const __NR_chown32: u32 = 212; +pub const __NR_setuid32: u32 = 213; +pub const __NR_setgid32: u32 = 214; +pub const __NR_setfsuid32: u32 = 215; +pub const __NR_setfsgid32: u32 = 216; +pub const __NR_pivot_root: u32 = 217; +pub const __NR_mincore: u32 = 218; +pub const __NR_madvise: u32 = 219; +pub const __NR_getdents64: u32 = 220; +pub const __NR_fcntl64: u32 = 221; +pub const __NR_gettid: u32 = 224; +pub const __NR_readahead: u32 = 225; +pub const __NR_setxattr: u32 = 226; +pub const __NR_lsetxattr: u32 = 227; +pub const __NR_fsetxattr: u32 = 228; +pub const __NR_getxattr: u32 = 229; +pub const __NR_lgetxattr: u32 = 230; +pub const __NR_fgetxattr: u32 = 231; +pub const __NR_listxattr: u32 = 232; +pub const __NR_llistxattr: u32 = 233; +pub const __NR_flistxattr: u32 = 234; +pub const __NR_removexattr: u32 = 235; +pub const __NR_lremovexattr: u32 = 236; +pub const __NR_fremovexattr: u32 = 237; +pub const __NR_tkill: u32 = 238; +pub const __NR_sendfile64: u32 = 239; +pub const __NR_futex: u32 = 240; +pub const __NR_sched_setaffinity: u32 = 241; +pub const __NR_sched_getaffinity: u32 = 242; +pub const __NR_set_thread_area: u32 = 243; +pub const __NR_get_thread_area: u32 = 244; +pub const __NR_io_setup: u32 = 245; +pub const __NR_io_destroy: u32 = 246; +pub const __NR_io_getevents: u32 = 247; +pub const __NR_io_submit: u32 = 248; +pub const __NR_io_cancel: u32 = 249; +pub const __NR_fadvise64: u32 = 250; +pub const __NR_exit_group: u32 = 252; +pub const __NR_lookup_dcookie: u32 = 253; +pub const __NR_epoll_create: u32 = 254; +pub const __NR_epoll_ctl: u32 = 255; +pub const __NR_epoll_wait: u32 = 256; +pub const __NR_remap_file_pages: u32 = 257; +pub const __NR_set_tid_address: u32 = 258; +pub const __NR_timer_create: u32 = 259; +pub const __NR_timer_settime: u32 = 260; +pub const __NR_timer_gettime: u32 = 261; +pub const __NR_timer_getoverrun: u32 = 262; +pub const __NR_timer_delete: u32 = 263; +pub const __NR_clock_settime: u32 = 264; +pub const __NR_clock_gettime: u32 = 265; +pub const __NR_clock_getres: u32 = 266; +pub const __NR_clock_nanosleep: u32 = 267; +pub const __NR_statfs64: u32 = 268; +pub const __NR_fstatfs64: u32 = 269; +pub const __NR_tgkill: u32 = 270; +pub const __NR_utimes: u32 = 271; +pub const __NR_fadvise64_64: u32 = 272; +pub const __NR_vserver: u32 = 273; +pub const __NR_mbind: u32 = 274; +pub const __NR_get_mempolicy: u32 = 275; +pub const __NR_set_mempolicy: u32 = 276; +pub const __NR_mq_open: u32 = 277; +pub const __NR_mq_unlink: u32 = 278; +pub const __NR_mq_timedsend: u32 = 279; +pub const __NR_mq_timedreceive: u32 = 280; +pub const __NR_mq_notify: u32 = 281; +pub const __NR_mq_getsetattr: u32 = 282; +pub const __NR_kexec_load: u32 = 283; +pub const __NR_waitid: u32 = 284; +pub const __NR_add_key: u32 = 286; +pub const __NR_request_key: u32 = 287; +pub const __NR_keyctl: u32 = 288; +pub const __NR_ioprio_set: u32 = 289; +pub const __NR_ioprio_get: u32 = 290; +pub const __NR_inotify_init: u32 = 291; +pub const __NR_inotify_add_watch: u32 = 292; +pub const __NR_inotify_rm_watch: u32 = 293; +pub const __NR_migrate_pages: u32 = 294; +pub const __NR_openat: u32 = 295; +pub const __NR_mkdirat: u32 = 296; +pub const __NR_mknodat: u32 = 297; +pub const __NR_fchownat: u32 = 298; +pub const __NR_futimesat: u32 = 299; +pub const __NR_fstatat64: u32 = 300; +pub const __NR_unlinkat: u32 = 301; +pub const __NR_renameat: u32 = 302; +pub const __NR_linkat: u32 = 303; +pub const __NR_symlinkat: u32 = 304; +pub const __NR_readlinkat: u32 = 305; +pub const __NR_fchmodat: u32 = 306; +pub const __NR_faccessat: u32 = 307; +pub const __NR_pselect6: u32 = 308; +pub const __NR_ppoll: u32 = 309; +pub const __NR_unshare: u32 = 310; +pub const __NR_set_robust_list: u32 = 311; +pub const __NR_get_robust_list: u32 = 312; +pub const __NR_splice: u32 = 313; +pub const __NR_sync_file_range: u32 = 314; +pub const __NR_tee: u32 = 315; +pub const __NR_vmsplice: u32 = 316; +pub const __NR_move_pages: u32 = 317; +pub const __NR_getcpu: u32 = 318; +pub const __NR_epoll_pwait: u32 = 319; +pub const __NR_utimensat: u32 = 320; +pub const __NR_signalfd: u32 = 321; +pub const __NR_timerfd_create: u32 = 322; +pub const __NR_eventfd: u32 = 323; +pub const __NR_fallocate: u32 = 324; +pub const __NR_timerfd_settime: u32 = 325; +pub const __NR_timerfd_gettime: u32 = 326; +pub const __NR_signalfd4: u32 = 327; +pub const __NR_eventfd2: u32 = 328; +pub const __NR_epoll_create1: u32 = 329; +pub const __NR_dup3: u32 = 330; +pub const __NR_pipe2: u32 = 331; +pub const __NR_inotify_init1: u32 = 332; +pub const __NR_preadv: u32 = 333; +pub const __NR_pwritev: u32 = 334; +pub const __NR_rt_tgsigqueueinfo: u32 = 335; +pub const __NR_perf_event_open: u32 = 336; +pub const __NR_recvmmsg: u32 = 337; +pub const __NR_fanotify_init: u32 = 338; +pub const __NR_fanotify_mark: u32 = 339; +pub const __NR_prlimit64: u32 = 340; +pub const __NR_name_to_handle_at: u32 = 341; +pub const __NR_open_by_handle_at: u32 = 342; +pub const __NR_clock_adjtime: u32 = 343; +pub const __NR_syncfs: u32 = 344; +pub const __NR_sendmmsg: u32 = 345; +pub const __NR_setns: u32 = 346; +pub const __NR_process_vm_readv: u32 = 347; +pub const __NR_process_vm_writev: u32 = 348; +pub const __NR_kcmp: u32 = 349; +pub const __NR_finit_module: u32 = 350; +pub const __NR_sched_setattr: u32 = 351; +pub const __NR_sched_getattr: u32 = 352; +pub const __NR_renameat2: u32 = 353; +pub const __NR_seccomp: u32 = 354; +pub const __NR_getrandom: u32 = 355; +pub const __NR_memfd_create: u32 = 356; +pub const __NR_bpf: u32 = 357; +pub const __NR_execveat: u32 = 358; +pub const __NR_socket: u32 = 359; +pub const __NR_socketpair: u32 = 360; +pub const __NR_bind: u32 = 361; +pub const __NR_connect: u32 = 362; +pub const __NR_listen: u32 = 363; +pub const __NR_accept4: u32 = 364; +pub const __NR_getsockopt: u32 = 365; +pub const __NR_setsockopt: u32 = 366; +pub const __NR_getsockname: u32 = 367; +pub const __NR_getpeername: u32 = 368; +pub const __NR_sendto: u32 = 369; +pub const __NR_sendmsg: u32 = 370; +pub const __NR_recvfrom: u32 = 371; +pub const __NR_recvmsg: u32 = 372; +pub const __NR_shutdown: u32 = 373; +pub const __NR_userfaultfd: u32 = 374; +pub const __NR_membarrier: u32 = 375; +pub const __NR_mlock2: u32 = 376; +pub const __NR_copy_file_range: u32 = 377; +pub const __NR_preadv2: u32 = 378; +pub const __NR_pwritev2: u32 = 379; +pub const __NR_pkey_mprotect: u32 = 380; +pub const __NR_pkey_alloc: u32 = 381; +pub const __NR_pkey_free: u32 = 382; +pub const __NR_statx: u32 = 383; +pub const __NR_arch_prctl: u32 = 384; +pub const __NR_io_pgetevents: u32 = 385; +pub const __NR_rseq: u32 = 386; +pub const __NR_semget: u32 = 393; +pub const __NR_semctl: u32 = 394; +pub const __NR_shmget: u32 = 395; +pub const __NR_shmctl: u32 = 396; +pub const __NR_shmat: u32 = 397; +pub const __NR_shmdt: u32 = 398; +pub const __NR_msgget: u32 = 399; +pub const __NR_msgsnd: u32 = 400; +pub const __NR_msgrcv: u32 = 401; +pub const __NR_msgctl: u32 = 402; +pub const __NR_clock_gettime64: u32 = 403; +pub const __NR_clock_settime64: u32 = 404; +pub const __NR_clock_adjtime64: u32 = 405; +pub const __NR_clock_getres_time64: u32 = 406; +pub const __NR_clock_nanosleep_time64: u32 = 407; +pub const __NR_timer_gettime64: u32 = 408; +pub const __NR_timer_settime64: u32 = 409; +pub const __NR_timerfd_gettime64: u32 = 410; +pub const __NR_timerfd_settime64: u32 = 411; +pub const __NR_utimensat_time64: u32 = 412; +pub const __NR_pselect6_time64: u32 = 413; +pub const __NR_ppoll_time64: u32 = 414; +pub const __NR_io_pgetevents_time64: u32 = 416; +pub const __NR_recvmmsg_time64: u32 = 417; +pub const __NR_mq_timedsend_time64: u32 = 418; +pub const __NR_mq_timedreceive_time64: u32 = 419; +pub const __NR_semtimedop_time64: u32 = 420; +pub const __NR_rt_sigtimedwait_time64: u32 = 421; +pub const __NR_futex_time64: u32 = 422; +pub const __NR_sched_rr_get_interval_time64: u32 = 423; +pub const __NR_pidfd_send_signal: u32 = 424; +pub const __NR_io_uring_setup: u32 = 425; +pub const __NR_io_uring_enter: u32 = 426; +pub const __NR_io_uring_register: u32 = 427; +pub const __NR_open_tree: u32 = 428; +pub const __NR_move_mount: u32 = 429; +pub const __NR_fsopen: u32 = 430; +pub const __NR_fsconfig: u32 = 431; +pub const __NR_fsmount: u32 = 432; +pub const __NR_fspick: u32 = 433; +pub const __NR_pidfd_open: u32 = 434; +pub const __NR_clone3: u32 = 435; +pub const __NR_close_range: u32 = 436; +pub const __NR_openat2: u32 = 437; +pub const __NR_pidfd_getfd: u32 = 438; +pub const __NR_faccessat2: u32 = 439; +pub const __NR_process_madvise: u32 = 440; +pub const __NR_epoll_pwait2: u32 = 441; +pub const __NR_mount_setattr: u32 = 442; +pub const __NR_quotactl_fd: u32 = 443; +pub const __NR_landlock_create_ruleset: u32 = 444; +pub const __NR_landlock_add_rule: u32 = 445; +pub const __NR_landlock_restrict_self: u32 = 446; +pub const __NR_memfd_secret: u32 = 447; +pub const __NR_process_mrelease: u32 = 448; +pub const __NR_futex_waitv: u32 = 449; +pub const __NR_set_mempolicy_home_node: u32 = 450; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const P_ALL: u32 = 0; +pub const P_PID: u32 = 1; +pub const P_PGID: u32 = 2; +pub const P_PIDFD: u32 = 3; +pub const XATTR_CREATE: u32 = 1; +pub const XATTR_REPLACE: u32 = 2; +pub const XATTR_OS2_PREFIX: &[u8; 5] = b"os2.\0"; +pub const XATTR_MAC_OSX_PREFIX: &[u8; 5] = b"osx.\0"; +pub const XATTR_BTRFS_PREFIX: &[u8; 7] = b"btrfs.\0"; +pub const XATTR_HURD_PREFIX: &[u8; 5] = b"gnu.\0"; +pub const XATTR_SECURITY_PREFIX: &[u8; 10] = b"security.\0"; +pub const XATTR_SYSTEM_PREFIX: &[u8; 8] = b"system.\0"; +pub const XATTR_TRUSTED_PREFIX: &[u8; 9] = b"trusted.\0"; +pub const XATTR_USER_PREFIX: &[u8; 6] = b"user.\0"; +pub const XATTR_EVM_SUFFIX: &[u8; 4] = b"evm\0"; +pub const XATTR_NAME_EVM: &[u8; 13] = b"security.evm\0"; +pub const XATTR_IMA_SUFFIX: &[u8; 4] = b"ima\0"; +pub const XATTR_NAME_IMA: &[u8; 13] = b"security.ima\0"; +pub const XATTR_SELINUX_SUFFIX: &[u8; 8] = b"selinux\0"; +pub const XATTR_NAME_SELINUX: &[u8; 17] = b"security.selinux\0"; +pub const XATTR_SMACK_SUFFIX: &[u8; 8] = b"SMACK64\0"; +pub const XATTR_SMACK_IPIN: &[u8; 12] = b"SMACK64IPIN\0"; +pub const XATTR_SMACK_IPOUT: &[u8; 13] = b"SMACK64IPOUT\0"; +pub const XATTR_SMACK_EXEC: &[u8; 12] = b"SMACK64EXEC\0"; +pub const XATTR_SMACK_TRANSMUTE: &[u8; 17] = b"SMACK64TRANSMUTE\0"; +pub const XATTR_SMACK_MMAP: &[u8; 12] = b"SMACK64MMAP\0"; +pub const XATTR_NAME_SMACK: &[u8; 17] = b"security.SMACK64\0"; +pub const XATTR_NAME_SMACKIPIN: &[u8; 21] = b"security.SMACK64IPIN\0"; +pub const XATTR_NAME_SMACKIPOUT: &[u8; 22] = b"security.SMACK64IPOUT\0"; +pub const XATTR_NAME_SMACKEXEC: &[u8; 21] = b"security.SMACK64EXEC\0"; +pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26] = b"security.SMACK64TRANSMUTE\0"; +pub const XATTR_NAME_SMACKMMAP: &[u8; 21] = b"security.SMACK64MMAP\0"; +pub const XATTR_APPARMOR_SUFFIX: &[u8; 9] = b"apparmor\0"; +pub const XATTR_NAME_APPARMOR: &[u8; 18] = b"security.apparmor\0"; +pub const XATTR_CAPS_SUFFIX: &[u8; 11] = b"capability\0"; +pub const XATTR_NAME_CAPS: &[u8; 20] = b"security.capability\0"; +pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17] = b"posix_acl_access\0"; +pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24] = b"system.posix_acl_access\0"; +pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18] = b"posix_acl_default\0"; +pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25] = b"system.posix_acl_default\0"; +pub const MFD_CLOEXEC: u32 = 1; +pub const MFD_ALLOW_SEALING: u32 = 2; +pub const MFD_HUGETLB: u32 = 4; +pub const MFD_NOEXEC_SEAL: u32 = 8; +pub const MFD_EXEC: u32 = 16; +pub const MFD_HUGE_SHIFT: u32 = 26; +pub const MFD_HUGE_MASK: u32 = 63; +pub const MFD_HUGE_64KB: u32 = 1073741824; +pub const MFD_HUGE_512KB: u32 = 1275068416; +pub const MFD_HUGE_1MB: u32 = 1342177280; +pub const MFD_HUGE_2MB: u32 = 1409286144; +pub const MFD_HUGE_8MB: u32 = 1543503872; +pub const MFD_HUGE_16MB: u32 = 1610612736; +pub const MFD_HUGE_32MB: u32 = 1677721600; +pub const MFD_HUGE_256MB: u32 = 1879048192; +pub const MFD_HUGE_512MB: u32 = 1946157056; +pub const MFD_HUGE_1GB: u32 = 2013265920; +pub const MFD_HUGE_2GB: u32 = 2080374784; +pub const MFD_HUGE_16GB: u32 = 2281701376; +pub const TFD_TIMER_ABSTIME: u32 = 1; +pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; +pub const TFD_CLOEXEC: u32 = 524288; +pub const TFD_NONBLOCK: u32 = 2048; +pub const USERFAULTFD_IOC: u32 = 170; +pub const _UFFDIO_REGISTER: u32 = 0; +pub const _UFFDIO_UNREGISTER: u32 = 1; +pub const _UFFDIO_WAKE: u32 = 2; +pub const _UFFDIO_COPY: u32 = 3; +pub const _UFFDIO_ZEROPAGE: u32 = 4; +pub const _UFFDIO_WRITEPROTECT: u32 = 6; +pub const _UFFDIO_CONTINUE: u32 = 7; +pub const _UFFDIO_API: u32 = 63; +pub const UFFDIO: u32 = 170; +pub const UFFD_EVENT_PAGEFAULT: u32 = 18; +pub const UFFD_EVENT_FORK: u32 = 19; +pub const UFFD_EVENT_REMAP: u32 = 20; +pub const UFFD_EVENT_REMOVE: u32 = 21; +pub const UFFD_EVENT_UNMAP: u32 = 22; +pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; +pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; +pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; +pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; +pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; +pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; +pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; +pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; +pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; +pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; +pub const UFFD_FEATURE_SIGBUS: u32 = 128; +pub const UFFD_FEATURE_THREAD_ID: u32 = 256; +pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; +pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; +pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; +pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; +pub const UFFD_USER_MODE_ONLY: u32 = 1; +pub const DT_UNKNOWN: u32 = 0; +pub const DT_FIFO: u32 = 1; +pub const DT_CHR: u32 = 2; +pub const DT_DIR: u32 = 4; +pub const DT_BLK: u32 = 6; +pub const DT_REG: u32 = 8; +pub const DT_LNK: u32 = 10; +pub const DT_SOCK: u32 = 12; +pub const STAT_HAVE_NSEC: u32 = 1; +pub const STAT64_HAS_BROKEN_ST_INO: u32 = 1; +pub const F_OK: u32 = 0; +pub const R_OK: u32 = 4; +pub const W_OK: u32 = 2; +pub const X_OK: u32 = 1; +pub const UTIME_NOW: u32 = 1073741823; +pub const UTIME_OMIT: u32 = 1073741822; +pub const MNT_FORCE: u32 = 1; +pub const MNT_DETACH: u32 = 2; +pub const MNT_EXPIRE: u32 = 4; +pub const UMOUNT_NOFOLLOW: u32 = 8; +pub const UMOUNT_UNUSED: u32 = 2147483648; +pub const STDIN_FILENO: u32 = 0; +pub const STDOUT_FILENO: u32 = 1; +pub const STDERR_FILENO: u32 = 2; +pub const RWF_HIPRI: u32 = 1; +pub const RWF_DSYNC: u32 = 2; +pub const RWF_SYNC: u32 = 4; +pub const RWF_NOWAIT: u32 = 8; +pub const RWF_APPEND: u32 = 16; +pub const EFD_SEMAPHORE: u32 = 1; +pub const EFD_CLOEXEC: u32 = 524288; +pub const EFD_NONBLOCK: u32 = 2048; +pub const EPOLLIN: u32 = 1; +pub const EPOLLPRI: u32 = 2; +pub const EPOLLOUT: u32 = 4; +pub const EPOLLERR: u32 = 8; +pub const EPOLLHUP: u32 = 16; +pub const EPOLLNVAL: u32 = 32; +pub const EPOLLRDNORM: u32 = 64; +pub const EPOLLRDBAND: u32 = 128; +pub const EPOLLWRNORM: u32 = 256; +pub const EPOLLWRBAND: u32 = 512; +pub const EPOLLMSG: u32 = 1024; +pub const EPOLLRDHUP: u32 = 8192; +pub const EPOLLEXCLUSIVE: u32 = 268435456; +pub const EPOLLWAKEUP: u32 = 536870912; +pub const EPOLLONESHOT: u32 = 1073741824; +pub const EPOLLET: u32 = 2147483648; +pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; +pub const TFD_CREATE_FLAGS: u32 = 526336; +pub const TFD_SETTIME_FLAGS: u32 = 1; +pub const ARCH_SET_FS: u32 = 4098; +pub const UFFD_API: u32 = 170; +pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; +pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; +pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; +pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; +pub const UFFDIO_COPY_MODE_WP: u32 = 2; +pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; +pub const SPLICE_F_MOVE: u32 = 1; +pub const SPLICE_F_NONBLOCK: u32 = 2; +pub const SPLICE_F_MORE: u32 = 4; +pub const SPLICE_F_GIFT: u32 = 8; +pub const _NSIG: u32 = 64; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, } #[repr(u32)] #[non_exhaustive] @@ -4592,721 +2707,167 @@ pub enum membarrier_cmd_flag { MEMBARRIER_CMD_FLAG_CPU = 1, } -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct uffd_msg { -pub event: __u8, -pub reserved1: __u8, -pub reserved2: __u16, -pub reserved3: __u32, -pub arg: uffd_msg__bindgen_ty_1, -} #[repr(C)] #[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1 { -pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, -pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, -pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, -pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, -pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, } #[repr(C)] #[derive(Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { -pub flags: __u64, -pub address: __u64, -pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], } #[repr(C)] #[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { -pub ptid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { -pub ufd: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { -pub from: __u64, -pub to: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { -pub start: __u64, -pub end: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { -pub reserved1: __u64, -pub reserved2: __u64, -pub reserved3: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_api { -pub api: __u64, -pub features: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_range { -pub start: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_register { -pub range: uffdio_range, -pub mode: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_copy { -pub dst: __u64, -pub src: __u64, -pub len: __u64, -pub mode: __u64, -pub copy: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_zeropage { -pub range: uffdio_range, -pub mode: __u64, -pub zeropage: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_writeprotect { -pub range: uffdio_range, -pub mode: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_continue { -pub range: uffdio_range, -pub mode: __u64, -pub mapped: __s64, -} -#[repr(C)] -pub struct io_uring_sqe { -pub opcode: __u8, -pub flags: __u8, -pub ioprio: __u16, -pub fd: __s32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, -pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, -pub len: __u32, -pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, -pub user_data: __u64, -pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, -pub personality: __u16, -pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, -pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +pub union sigaction__bindgen_ty_1 { +pub _sa_handler: __sighandler_t, +pub _sa_sigaction: ::core::option::Option, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_1 { -pub off: __u64, -pub addr2: __u64, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { -pub cmd_op: __u32, -pub __pad1: __u32, +pub union sigval { +pub sival_int: crate::ctypes::c_int, +pub sival_ptr: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_2 { -pub addr: __u64, -pub splice_off_in: __u64, +pub union __sifields { +pub _kill: __sifields__bindgen_ty_1, +pub _timer: __sifields__bindgen_ty_2, +pub _rt: __sifields__bindgen_ty_3, +pub _sigchld: __sifields__bindgen_ty_4, +pub _sigfault: __sifields__bindgen_ty_5, +pub _sigpoll: __sifields__bindgen_ty_6, +pub _sigsys: __sifields__bindgen_ty_7, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_3 { -pub rw_flags: __kernel_rwf_t, -pub fsync_flags: __u32, -pub poll_events: __u16, -pub poll32_events: __u32, -pub sync_range_flags: __u32, -pub msg_flags: __u32, -pub timeout_flags: __u32, -pub accept_flags: __u32, -pub cancel_flags: __u32, -pub open_flags: __u32, -pub statx_flags: __u32, -pub fadvise_advice: __u32, -pub splice_flags: __u32, -pub rename_flags: __u32, -pub unlink_flags: __u32, -pub hardlink_flags: __u32, -pub xattr_flags: __u32, -pub msg_ring_flags: __u32, -pub uring_cmd_flags: __u32, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_4 { -pub buf_index: __u16, -pub buf_group: __u16, +pub union __sifields__bindgen_ty_5__bindgen_ty_1 { +pub _trapno: crate::ctypes::c_int, +pub _addr_lsb: crate::ctypes::c_short, +pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, +pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, +pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_5 { -pub splice_fd_in: __s32, -pub file_index: __u32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { -pub addr_len: __u16, -pub __pad3: [__u16; 1usize], -} -#[repr(C)] -pub struct io_uring_sqe__bindgen_ty_6 { -pub __bindgen_anon_1: __BindgenUnionField, -pub cmd: __BindgenUnionField<[__u8; 0usize]>, -pub bindgen_union_field: [u32; 4usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { -pub addr3: __u64, -pub __pad2: [__u64; 1usize], -} -pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT; -pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT; -pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT; -pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT; -pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT; -pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT; -pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -IOSQE_FIXED_FILE_BIT = 0, -IOSQE_IO_DRAIN_BIT = 1, -IOSQE_IO_LINK_BIT = 2, -IOSQE_IO_HARDLINK_BIT = 3, -IOSQE_ASYNC_BIT = 4, -IOSQE_BUFFER_SELECT_BIT = 5, -IOSQE_CQE_SKIP_SUCCESS_BIT = 6, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum io_uring_op { -IORING_OP_NOP = 0, -IORING_OP_READV = 1, -IORING_OP_WRITEV = 2, -IORING_OP_FSYNC = 3, -IORING_OP_READ_FIXED = 4, -IORING_OP_WRITE_FIXED = 5, -IORING_OP_POLL_ADD = 6, -IORING_OP_POLL_REMOVE = 7, -IORING_OP_SYNC_FILE_RANGE = 8, -IORING_OP_SENDMSG = 9, -IORING_OP_RECVMSG = 10, -IORING_OP_TIMEOUT = 11, -IORING_OP_TIMEOUT_REMOVE = 12, -IORING_OP_ACCEPT = 13, -IORING_OP_ASYNC_CANCEL = 14, -IORING_OP_LINK_TIMEOUT = 15, -IORING_OP_CONNECT = 16, -IORING_OP_FALLOCATE = 17, -IORING_OP_OPENAT = 18, -IORING_OP_CLOSE = 19, -IORING_OP_FILES_UPDATE = 20, -IORING_OP_STATX = 21, -IORING_OP_READ = 22, -IORING_OP_WRITE = 23, -IORING_OP_FADVISE = 24, -IORING_OP_MADVISE = 25, -IORING_OP_SEND = 26, -IORING_OP_RECV = 27, -IORING_OP_OPENAT2 = 28, -IORING_OP_EPOLL_CTL = 29, -IORING_OP_SPLICE = 30, -IORING_OP_PROVIDE_BUFFERS = 31, -IORING_OP_REMOVE_BUFFERS = 32, -IORING_OP_TEE = 33, -IORING_OP_SHUTDOWN = 34, -IORING_OP_RENAMEAT = 35, -IORING_OP_UNLINKAT = 36, -IORING_OP_MKDIRAT = 37, -IORING_OP_SYMLINKAT = 38, -IORING_OP_LINKAT = 39, -IORING_OP_MSG_RING = 40, -IORING_OP_FSETXATTR = 41, -IORING_OP_SETXATTR = 42, -IORING_OP_FGETXATTR = 43, -IORING_OP_GETXATTR = 44, -IORING_OP_SOCKET = 45, -IORING_OP_URING_CMD = 46, -IORING_OP_SEND_ZC = 47, -IORING_OP_SENDMSG_ZC = 48, -IORING_OP_LAST = 49, -} -pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA; -pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_8 { -IORING_MSG_DATA = 0, -IORING_MSG_SEND_FD = 1, -} -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_cqe { -pub user_data: __u64, -pub res: __s32, -pub flags: __u32, -pub big_cqe: __IncompleteArrayField<__u64>, -} -pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_9 { -IORING_CQE_BUFFER_SHIFT = 16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_sqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub flags: __u32, -pub dropped: __u32, -pub array: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_cqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub overflow: __u32, -pub cqes: __u32, -pub flags: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_params { -pub sq_entries: __u32, -pub cq_entries: __u32, -pub flags: __u32, -pub sq_thread_cpu: __u32, -pub sq_thread_idle: __u32, -pub features: __u32, -pub wq_fd: __u32, -pub resv: [__u32; 3usize], -pub sq_off: io_sqring_offsets, -pub cq_off: io_cqring_offsets, -} -pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS; -pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS; -pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES; -pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES; -pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD; -pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD; -pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE; -pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC; -pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE; -pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY; -pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY; -pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS; -pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS; -pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2; -pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2; -pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2; -pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE; -pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF; -pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF; -pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS; -pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS; -pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS; -pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING; -pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING; -pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL; -pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE; -pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST; -pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_USE_REGISTERED_RING; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_10 { -IORING_REGISTER_BUFFERS = 0, -IORING_UNREGISTER_BUFFERS = 1, -IORING_REGISTER_FILES = 2, -IORING_UNREGISTER_FILES = 3, -IORING_REGISTER_EVENTFD = 4, -IORING_UNREGISTER_EVENTFD = 5, -IORING_REGISTER_FILES_UPDATE = 6, -IORING_REGISTER_EVENTFD_ASYNC = 7, -IORING_REGISTER_PROBE = 8, -IORING_REGISTER_PERSONALITY = 9, -IORING_UNREGISTER_PERSONALITY = 10, -IORING_REGISTER_RESTRICTIONS = 11, -IORING_REGISTER_ENABLE_RINGS = 12, -IORING_REGISTER_FILES2 = 13, -IORING_REGISTER_FILES_UPDATE2 = 14, -IORING_REGISTER_BUFFERS2 = 15, -IORING_REGISTER_BUFFERS_UPDATE = 16, -IORING_REGISTER_IOWQ_AFF = 17, -IORING_UNREGISTER_IOWQ_AFF = 18, -IORING_REGISTER_IOWQ_MAX_WORKERS = 19, -IORING_REGISTER_RING_FDS = 20, -IORING_UNREGISTER_RING_FDS = 21, -IORING_REGISTER_PBUF_RING = 22, -IORING_UNREGISTER_PBUF_RING = 23, -IORING_REGISTER_SYNC_CANCEL = 24, -IORING_REGISTER_FILE_ALLOC_RANGE = 25, -IORING_REGISTER_LAST = 26, -IORING_REGISTER_USE_REGISTERED_RING = 2147483648, -} -pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND; -pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_11 { -IO_WQ_BOUND = 0, -IO_WQ_UNBOUND = 1, -} -#[repr(C)] -#[repr(align(8))] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_files_update { -pub offset: __u32, -pub resv: __u32, -pub fds: __u64, -} -#[repr(C)] -#[repr(align(8))] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_register { -pub nr: __u32, -pub flags: __u32, -pub resv2: __u64, -pub data: __u64, -pub tags: __u64, -} -#[repr(C)] -#[repr(align(8))] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -} -#[repr(C)] -#[repr(align(8))] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update2 { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -pub tags: __u64, -pub nr: __u32, -pub resv2: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_slot { -pub tag: __u64, -pub resv: [__u64; 3usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_register { -pub nr_slots: __u32, -pub resv: __u32, -pub resv2: __u64, -pub data: __u64, -pub resv3: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_probe_op { -pub op: __u8, -pub resv: __u8, -pub flags: __u16, -pub resv2: __u32, +pub union siginfo__bindgen_ty_1 { +pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, +pub _si_pad: [crate::ctypes::c_int; 32usize], } #[repr(C)] -#[derive(Debug)] -pub struct io_uring_probe { -pub last_op: __u8, -pub ops_len: __u8, -pub resv: __u16, -pub resv2: [__u32; 3usize], -pub ops: __IncompleteArrayField, +#[derive(Copy, Clone)] +pub union sigevent__bindgen_ty_1 { +pub _pad: [crate::ctypes::c_int; 13usize], +pub _tid: crate::ctypes::c_int, +pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] -pub struct io_uring_restriction { -pub opcode: __u16, -pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, -pub resv: __u8, -pub resv2: [__u32; 3usize], +pub union uffd_msg__bindgen_ty_1 { +pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, +pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, +pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, +pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, +pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_restriction__bindgen_ty_1 { -pub register_op: __u8, -pub sqe_op: __u8, -pub sqe_flags: __u8, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf { -pub addr: __u64, -pub len: __u32, -pub bid: __u16, -pub resv: __u16, +pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { +pub ptid: __u32, } -#[repr(C)] -pub struct io_uring_buf_ring { -pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } } -#[repr(C)] -pub struct io_uring_buf_ring__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u32; 4usize], } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { -pub resv1: __u64, -pub resv2: __u32, -pub resv3: __u16, -pub tail: __u16, +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask } -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { -pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, -pub bufs: __IncompleteArrayField, +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_reg { -pub ring_addr: __u64, -pub ring_entries: __u32, -pub bgid: __u16, -pub pad: __u16, -pub resv: [__u64; 3usize], } -pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP; -pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP; -pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; -pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; -pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_12 { -IORING_RESTRICTION_REGISTER_OP = 0, -IORING_RESTRICTION_SQE_OP = 1, -IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, -IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, -IORING_RESTRICTION_LAST = 4, +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_getevents_arg { -pub sigmask: __u64, -pub sigmask_sz: __u32, -pub pad: __u32, -pub ts: __u64, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sync_cancel_reg { -pub addr: __u64, -pub fd: __s32, -pub flags: __u32, -pub timeout: __kernel_timespec, -pub pad: [__u64; 4usize], +val } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_file_index_range { -pub off: __u32, -pub len: __u32, -pub resv: __u64, +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_recvmsg_out { -pub namelen: __u32, -pub controllen: __u32, -pub payloadlen: __u32, -pub flags: __u32, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr { -pub __storage: __kernel_sockaddr_storage, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct linger { -pub l_onoff: crate::ctypes::c_int, -pub l_linger: crate::ctypes::c_int, +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) } -#[repr(C)] -#[derive(Debug)] -pub struct linux_dirent64 { -pub d_ino: crate::ctypes::c_ulonglong, -pub d_off: crate::ctypes::c_longlong, -pub d_reclen: __u16, -pub d_type: __u8, -pub d_name: __IncompleteArrayField, +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T } -pub type socklen_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat { -pub st_dev: crate::ctypes::c_ulong, -pub st_ino: crate::ctypes::c_ulong, -pub st_mode: crate::ctypes::c_ushort, -pub st_nlink: crate::ctypes::c_ushort, -pub st_uid: crate::ctypes::c_ushort, -pub st_gid: crate::ctypes::c_ushort, -pub st_rdev: crate::ctypes::c_ulong, -pub st_size: crate::ctypes::c_ulong, -pub st_blksize: crate::ctypes::c_ulong, -pub st_blocks: crate::ctypes::c_ulong, -pub st_atime: crate::ctypes::c_ulong, -pub st_atime_nsec: crate::ctypes::c_ulong, -pub st_mtime: crate::ctypes::c_ulong, -pub st_mtime_nsec: crate::ctypes::c_ulong, -pub st_ctime: crate::ctypes::c_ulong, -pub st_ctime_nsec: crate::ctypes::c_ulong, -pub __unused4: crate::ctypes::c_ulong, -pub __unused5: crate::ctypes::c_ulong, +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat64 { -pub st_dev: crate::ctypes::c_ulonglong, -pub __pad0: [crate::ctypes::c_uchar; 4usize], -pub __st_ino: crate::ctypes::c_ulong, -pub st_mode: crate::ctypes::c_uint, -pub st_nlink: crate::ctypes::c_uint, -pub st_uid: crate::ctypes::c_ulong, -pub st_gid: crate::ctypes::c_ulong, -pub st_rdev: crate::ctypes::c_ulonglong, -pub __pad3: [crate::ctypes::c_uchar; 4usize], -pub st_size: crate::ctypes::c_longlong, -pub st_blksize: crate::ctypes::c_ulong, -pub st_blocks: crate::ctypes::c_ulonglong, -pub st_atime: crate::ctypes::c_ulong, -pub st_atime_nsec: crate::ctypes::c_ulong, -pub st_mtime: crate::ctypes::c_ulong, -pub st_mtime_nsec: crate::ctypes::c_uint, -pub st_ctime: crate::ctypes::c_ulong, -pub st_ctime_nsec: crate::ctypes::c_ulong, -pub st_ino: crate::ctypes::c_ulonglong, +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __old_kernel_stat { -pub st_dev: crate::ctypes::c_ushort, -pub st_ino: crate::ctypes::c_ushort, -pub st_mode: crate::ctypes::c_ushort, -pub st_nlink: crate::ctypes::c_ushort, -pub st_uid: crate::ctypes::c_ushort, -pub st_gid: crate::ctypes::c_ushort, -pub st_rdev: crate::ctypes::c_ushort, -pub st_size: crate::ctypes::c_ulong, -pub st_atime: crate::ctypes::c_ulong, -pub st_mtime: crate::ctypes::c_ulong, -pub st_ctime: crate::ctypes::c_ulong, +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u32, -pub f_bfree: __u32, -pub f_bavail: __u32, -pub f_files: __u32, -pub f_ffree: __u32, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") } -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct compat_statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], } -pub type __fsword_t = __u32; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_desc { -pub entry_number: crate::ctypes::c_uint, -pub base_addr: crate::ctypes::c_uint, -pub limit: crate::ctypes::c_uint, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub __bindgen_padding_0: [u8; 3usize], +impl membarrier_cmd { +pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; } impl user_desc { #[inline] @@ -5405,47 +2966,3 @@ __bindgen_bitfield_unit } } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr { -pub msg_name: *mut crate::ctypes::c_void, -pub msg_namelen: crate::ctypes::c_int, -pub msg_iov: *mut iovec, -pub msg_iovlen: size_t, -pub msg_control: *mut crate::ctypes::c_void, -pub msg_controllen: size_t, -pub msg_flags: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsghdr { -pub cmsg_len: size_t, -pub cmsg_level: crate::ctypes::c_int, -pub cmsg_type: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ucred { -pub pid: __u32, -pub uid: __u32, -pub gid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mmsghdr { -pub msg_hdr: msghdr, -pub msg_len: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigset_t { -pub sig: [crate::ctypes::c_ulong; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigaction { -pub sa_handler_kernel: __kernel_sighandler_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_restorer: __sigrestore_t, -pub sa_mask: kernel_sigset_t, -} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x86/if_ether.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x86/if_ether.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x86/if_ether.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x86/if_ether.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,167 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ethhdr { +pub h_dest: [crate::ctypes::c_uchar; 6usize], +pub h_source: [crate::ctypes::c_uchar; 6usize], +pub h_proto: __be16, +} +pub const ETH_ALEN: u32 = 6; +pub const ETH_TLEN: u32 = 2; +pub const ETH_HLEN: u32 = 14; +pub const ETH_ZLEN: u32 = 60; +pub const ETH_DATA_LEN: u32 = 1500; +pub const ETH_FRAME_LEN: u32 = 1514; +pub const ETH_FCS_LEN: u32 = 4; +pub const ETH_MIN_MTU: u32 = 68; +pub const ETH_MAX_MTU: u32 = 65535; +pub const ETH_P_LOOP: u32 = 96; +pub const ETH_P_PUP: u32 = 512; +pub const ETH_P_PUPAT: u32 = 513; +pub const ETH_P_TSN: u32 = 8944; +pub const ETH_P_ERSPAN2: u32 = 8939; +pub const ETH_P_IP: u32 = 2048; +pub const ETH_P_X25: u32 = 2053; +pub const ETH_P_ARP: u32 = 2054; +pub const ETH_P_BPQ: u32 = 2303; +pub const ETH_P_IEEEPUP: u32 = 2560; +pub const ETH_P_IEEEPUPAT: u32 = 2561; +pub const ETH_P_BATMAN: u32 = 17157; +pub const ETH_P_DEC: u32 = 24576; +pub const ETH_P_DNA_DL: u32 = 24577; +pub const ETH_P_DNA_RC: u32 = 24578; +pub const ETH_P_DNA_RT: u32 = 24579; +pub const ETH_P_LAT: u32 = 24580; +pub const ETH_P_DIAG: u32 = 24581; +pub const ETH_P_CUST: u32 = 24582; +pub const ETH_P_SCA: u32 = 24583; +pub const ETH_P_TEB: u32 = 25944; +pub const ETH_P_RARP: u32 = 32821; +pub const ETH_P_ATALK: u32 = 32923; +pub const ETH_P_AARP: u32 = 33011; +pub const ETH_P_8021Q: u32 = 33024; +pub const ETH_P_ERSPAN: u32 = 35006; +pub const ETH_P_IPX: u32 = 33079; +pub const ETH_P_IPV6: u32 = 34525; +pub const ETH_P_PAUSE: u32 = 34824; +pub const ETH_P_SLOW: u32 = 34825; +pub const ETH_P_WCCP: u32 = 34878; +pub const ETH_P_MPLS_UC: u32 = 34887; +pub const ETH_P_MPLS_MC: u32 = 34888; +pub const ETH_P_ATMMPOA: u32 = 34892; +pub const ETH_P_PPP_DISC: u32 = 34915; +pub const ETH_P_PPP_SES: u32 = 34916; +pub const ETH_P_LINK_CTL: u32 = 34924; +pub const ETH_P_ATMFATE: u32 = 34948; +pub const ETH_P_PAE: u32 = 34958; +pub const ETH_P_PROFINET: u32 = 34962; +pub const ETH_P_REALTEK: u32 = 34969; +pub const ETH_P_AOE: u32 = 34978; +pub const ETH_P_ETHERCAT: u32 = 34980; +pub const ETH_P_8021AD: u32 = 34984; +pub const ETH_P_802_EX1: u32 = 34997; +pub const ETH_P_PREAUTH: u32 = 35015; +pub const ETH_P_TIPC: u32 = 35018; +pub const ETH_P_LLDP: u32 = 35020; +pub const ETH_P_MRP: u32 = 35043; +pub const ETH_P_MACSEC: u32 = 35045; +pub const ETH_P_8021AH: u32 = 35047; +pub const ETH_P_MVRP: u32 = 35061; +pub const ETH_P_1588: u32 = 35063; +pub const ETH_P_NCSI: u32 = 35064; +pub const ETH_P_PRP: u32 = 35067; +pub const ETH_P_CFM: u32 = 35074; +pub const ETH_P_FCOE: u32 = 35078; +pub const ETH_P_IBOE: u32 = 35093; +pub const ETH_P_TDLS: u32 = 35085; +pub const ETH_P_FIP: u32 = 35092; +pub const ETH_P_80221: u32 = 35095; +pub const ETH_P_HSR: u32 = 35119; +pub const ETH_P_NSH: u32 = 35151; +pub const ETH_P_LOOPBACK: u32 = 36864; +pub const ETH_P_QINQ1: u32 = 37120; +pub const ETH_P_QINQ2: u32 = 37376; +pub const ETH_P_QINQ3: u32 = 37632; +pub const ETH_P_EDSA: u32 = 56026; +pub const ETH_P_DSA_8021Q: u32 = 56027; +pub const ETH_P_DSA_A5PSW: u32 = 57345; +pub const ETH_P_IFE: u32 = 60734; +pub const ETH_P_AF_IUCV: u32 = 64507; +pub const ETH_P_802_3_MIN: u32 = 1536; +pub const ETH_P_802_3: u32 = 1; +pub const ETH_P_AX25: u32 = 2; +pub const ETH_P_ALL: u32 = 3; +pub const ETH_P_802_2: u32 = 4; +pub const ETH_P_SNAP: u32 = 5; +pub const ETH_P_DDCMP: u32 = 6; +pub const ETH_P_WAN_PPP: u32 = 7; +pub const ETH_P_PPP_MP: u32 = 8; +pub const ETH_P_LOCALTALK: u32 = 9; +pub const ETH_P_CAN: u32 = 12; +pub const ETH_P_CANFD: u32 = 13; +pub const ETH_P_CANXL: u32 = 14; +pub const ETH_P_PPPTALK: u32 = 16; +pub const ETH_P_TR_802_2: u32 = 17; +pub const ETH_P_MOBITEX: u32 = 21; +pub const ETH_P_CONTROL: u32 = 22; +pub const ETH_P_IRDA: u32 = 23; +pub const ETH_P_ECONET: u32 = 24; +pub const ETH_P_HDLC: u32 = 25; +pub const ETH_P_ARCNET: u32 = 26; +pub const ETH_P_DSA: u32 = 27; +pub const ETH_P_TRAILER: u32 = 28; +pub const ETH_P_PHONET: u32 = 245; +pub const ETH_P_IEEE802154: u32 = 246; +pub const ETH_P_CAIF: u32 = 247; +pub const ETH_P_XDSA: u32 = 248; +pub const ETH_P_MAP: u32 = 249; +pub const ETH_P_MCTP: u32 = 250; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x86/ioctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x86/ioctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x86/ioctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x86/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const FIONREAD: u32 = 21531; pub const FIONBIO: u32 = 21537; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x86/io_uring.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x86/io_uring.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x86/io_uring.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x86/io_uring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1087 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_rwf_t = crate::ctypes::c_int; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +pub struct io_uring_sqe { +pub opcode: __u8, +pub flags: __u8, +pub ioprio: __u16, +pub fd: __s32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, +pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, +pub len: __u32, +pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, +pub user_data: __u64, +pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, +pub personality: __u16, +pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, +pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { +pub cmd_op: __u32, +pub __pad1: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { +pub addr_len: __u16, +pub __pad3: [__u16; 1usize], +} +#[repr(C)] +pub struct io_uring_sqe__bindgen_ty_6 { +pub __bindgen_anon_1: __BindgenUnionField, +pub cmd: __BindgenUnionField<[__u8; 0usize]>, +pub bindgen_union_field: [u32; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { +pub addr3: __u64, +pub __pad2: [__u64; 1usize], +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_cqe { +pub user_data: __u64, +pub res: __s32, +pub flags: __u32, +pub big_cqe: __IncompleteArrayField<__u64>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_sqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub flags: __u32, +pub dropped: __u32, +pub array: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_cqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub overflow: __u32, +pub cqes: __u32, +pub flags: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_params { +pub sq_entries: __u32, +pub cq_entries: __u32, +pub flags: __u32, +pub sq_thread_cpu: __u32, +pub sq_thread_idle: __u32, +pub features: __u32, +pub wq_fd: __u32, +pub resv: [__u32; 3usize], +pub sq_off: io_sqring_offsets, +pub cq_off: io_cqring_offsets, +} +#[repr(C)] +#[repr(align(8))] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_files_update { +pub offset: __u32, +pub resv: __u32, +pub fds: __u64, +} +#[repr(C)] +#[repr(align(8))] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_register { +pub nr: __u32, +pub flags: __u32, +pub resv2: __u64, +pub data: __u64, +pub tags: __u64, +} +#[repr(C)] +#[repr(align(8))] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +} +#[repr(C)] +#[repr(align(8))] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update2 { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +pub tags: __u64, +pub nr: __u32, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_slot { +pub tag: __u64, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_register { +pub nr_slots: __u32, +pub resv: __u32, +pub resv2: __u64, +pub data: __u64, +pub resv3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_probe_op { +pub op: __u8, +pub resv: __u8, +pub flags: __u16, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_probe { +pub last_op: __u8, +pub ops_len: __u8, +pub resv: __u16, +pub resv2: [__u32; 3usize], +pub ops: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_restriction { +pub opcode: __u16, +pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, +pub resv: __u8, +pub resv2: [__u32; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf { +pub addr: __u64, +pub len: __u32, +pub bid: __u16, +pub resv: __u16, +} +#[repr(C)] +pub struct io_uring_buf_ring { +pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +} +#[repr(C)] +pub struct io_uring_buf_ring__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u32; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { +pub resv1: __u64, +pub resv2: __u32, +pub resv3: __u16, +pub tail: __u16, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { +pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, +pub bufs: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_reg { +pub ring_addr: __u64, +pub ring_entries: __u32, +pub bgid: __u16, +pub pad: __u16, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_getevents_arg { +pub sigmask: __u64, +pub sigmask_sz: __u32, +pub pad: __u32, +pub ts: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sync_cancel_reg { +pub addr: __u64, +pub fd: __s32, +pub flags: __u32, +pub timeout: __kernel_timespec, +pub pad: [__u64; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_file_index_range { +pub off: __u32, +pub len: __u32, +pub resv: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_recvmsg_out { +pub namelen: __u32, +pub controllen: __u32, +pub payloadlen: __u32, +pub flags: __u32, +} +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 14; +pub const _IOC_DIRBITS: u32 = 2; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 3; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 30; +pub const _IOC_NONE: u32 = 0; +pub const _IOC_WRITE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const IOC_IN: u32 = 1073741824; +pub const IOC_OUT: u32 = 2147483648; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const IORING_FILE_INDEX_ALLOC: i32 = -1; +pub const IORING_SETUP_IOPOLL: u32 = 1; +pub const IORING_SETUP_SQPOLL: u32 = 2; +pub const IORING_SETUP_SQ_AFF: u32 = 4; +pub const IORING_SETUP_CQSIZE: u32 = 8; +pub const IORING_SETUP_CLAMP: u32 = 16; +pub const IORING_SETUP_ATTACH_WQ: u32 = 32; +pub const IORING_SETUP_R_DISABLED: u32 = 64; +pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; +pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; +pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; +pub const IORING_SETUP_SQE128: u32 = 1024; +pub const IORING_SETUP_CQE32: u32 = 2048; +pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; +pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; +pub const IORING_URING_CMD_FIXED: u32 = 1; +pub const IORING_FSYNC_DATASYNC: u32 = 1; +pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; +pub const IORING_POLL_ADD_LEVEL: u32 = 8; +pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; +pub const IORING_ASYNC_CANCEL_FD: u32 = 2; +pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; +pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; +pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; +pub const IORING_RECV_MULTISHOT: u32 = 2; +pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; +pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; +pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; +pub const IORING_ACCEPT_MULTISHOT: u32 = 1; +pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; +pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; +pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; +pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; +pub const IORING_CQE_F_NOTIF: u32 = 8; +pub const IORING_OFF_SQ_RING: u32 = 0; +pub const IORING_OFF_CQ_RING: u32 = 134217728; +pub const IORING_OFF_SQES: u32 = 268435456; +pub const IORING_SQ_NEED_WAKEUP: u32 = 1; +pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; +pub const IORING_SQ_TASKRUN: u32 = 4; +pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; +pub const IORING_ENTER_GETEVENTS: u32 = 1; +pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; +pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; +pub const IORING_ENTER_REGISTERED_RING: u32 = 16; +pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; +pub const IORING_FEAT_NODROP: u32 = 2; +pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; +pub const IORING_FEAT_RW_CUR_POS: u32 = 8; +pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; +pub const IORING_FEAT_FAST_POLL: u32 = 32; +pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_FEAT_CQE_SKIP: u32 = 2048; +pub const IORING_FEAT_LINKED_FILE: u32 = 4096; +pub const IORING_FEAT_REG_REG_RING: u32 = 8192; +pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; +pub const IO_URING_OP_SUPPORTED: u32 = 1; +pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_FIXED_FILE_BIT; +pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_DRAIN_BIT; +pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_LINK_BIT; +pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_HARDLINK_BIT; +pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_ASYNC_BIT; +pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_BUFFER_SELECT_BIT; +pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_CQE_SKIP_SUCCESS_BIT; +pub const IORING_MSG_DATA: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_DATA; +pub const IORING_MSG_SEND_FD: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_SEND_FD; +pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = _bindgen_ty_3::IORING_CQE_BUFFER_SHIFT; +pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS; +pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_BUFFERS; +pub const IORING_REGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES; +pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_FILES; +pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD; +pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_EVENTFD; +pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE; +pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD_ASYNC; +pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PROBE; +pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PERSONALITY; +pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PERSONALITY; +pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RESTRICTIONS; +pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_ENABLE_RINGS; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES2; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE2; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS2; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS_UPDATE; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_AFF; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_IOWQ_AFF; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_MAX_WORKERS; +pub const IORING_REGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RING_FDS; +pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_RING_FDS; +pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PBUF_RING; +pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PBUF_RING; +pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_SYNC_CANCEL; +pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILE_ALLOC_RANGE; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_LAST; +pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_USE_REGISTERED_RING; +pub const IO_WQ_BOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_BOUND; +pub const IO_WQ_UNBOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_UNBOUND; +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_REGISTER_OP; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_OP; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_LAST; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IOSQE_FIXED_FILE_BIT = 0, +IOSQE_IO_DRAIN_BIT = 1, +IOSQE_IO_LINK_BIT = 2, +IOSQE_IO_HARDLINK_BIT = 3, +IOSQE_ASYNC_BIT = 4, +IOSQE_BUFFER_SELECT_BIT = 5, +IOSQE_CQE_SKIP_SUCCESS_BIT = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum io_uring_op { +IORING_OP_NOP = 0, +IORING_OP_READV = 1, +IORING_OP_WRITEV = 2, +IORING_OP_FSYNC = 3, +IORING_OP_READ_FIXED = 4, +IORING_OP_WRITE_FIXED = 5, +IORING_OP_POLL_ADD = 6, +IORING_OP_POLL_REMOVE = 7, +IORING_OP_SYNC_FILE_RANGE = 8, +IORING_OP_SENDMSG = 9, +IORING_OP_RECVMSG = 10, +IORING_OP_TIMEOUT = 11, +IORING_OP_TIMEOUT_REMOVE = 12, +IORING_OP_ACCEPT = 13, +IORING_OP_ASYNC_CANCEL = 14, +IORING_OP_LINK_TIMEOUT = 15, +IORING_OP_CONNECT = 16, +IORING_OP_FALLOCATE = 17, +IORING_OP_OPENAT = 18, +IORING_OP_CLOSE = 19, +IORING_OP_FILES_UPDATE = 20, +IORING_OP_STATX = 21, +IORING_OP_READ = 22, +IORING_OP_WRITE = 23, +IORING_OP_FADVISE = 24, +IORING_OP_MADVISE = 25, +IORING_OP_SEND = 26, +IORING_OP_RECV = 27, +IORING_OP_OPENAT2 = 28, +IORING_OP_EPOLL_CTL = 29, +IORING_OP_SPLICE = 30, +IORING_OP_PROVIDE_BUFFERS = 31, +IORING_OP_REMOVE_BUFFERS = 32, +IORING_OP_TEE = 33, +IORING_OP_SHUTDOWN = 34, +IORING_OP_RENAMEAT = 35, +IORING_OP_UNLINKAT = 36, +IORING_OP_MKDIRAT = 37, +IORING_OP_SYMLINKAT = 38, +IORING_OP_LINKAT = 39, +IORING_OP_MSG_RING = 40, +IORING_OP_FSETXATTR = 41, +IORING_OP_SETXATTR = 42, +IORING_OP_FGETXATTR = 43, +IORING_OP_GETXATTR = 44, +IORING_OP_SOCKET = 45, +IORING_OP_URING_CMD = 46, +IORING_OP_SEND_ZC = 47, +IORING_OP_SENDMSG_ZC = 48, +IORING_OP_LAST = 49, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IORING_MSG_DATA = 0, +IORING_MSG_SEND_FD = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IORING_CQE_BUFFER_SHIFT = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IORING_REGISTER_BUFFERS = 0, +IORING_UNREGISTER_BUFFERS = 1, +IORING_REGISTER_FILES = 2, +IORING_UNREGISTER_FILES = 3, +IORING_REGISTER_EVENTFD = 4, +IORING_UNREGISTER_EVENTFD = 5, +IORING_REGISTER_FILES_UPDATE = 6, +IORING_REGISTER_EVENTFD_ASYNC = 7, +IORING_REGISTER_PROBE = 8, +IORING_REGISTER_PERSONALITY = 9, +IORING_UNREGISTER_PERSONALITY = 10, +IORING_REGISTER_RESTRICTIONS = 11, +IORING_REGISTER_ENABLE_RINGS = 12, +IORING_REGISTER_FILES2 = 13, +IORING_REGISTER_FILES_UPDATE2 = 14, +IORING_REGISTER_BUFFERS2 = 15, +IORING_REGISTER_BUFFERS_UPDATE = 16, +IORING_REGISTER_IOWQ_AFF = 17, +IORING_UNREGISTER_IOWQ_AFF = 18, +IORING_REGISTER_IOWQ_MAX_WORKERS = 19, +IORING_REGISTER_RING_FDS = 20, +IORING_UNREGISTER_RING_FDS = 21, +IORING_REGISTER_PBUF_RING = 22, +IORING_UNREGISTER_PBUF_RING = 23, +IORING_REGISTER_SYNC_CANCEL = 24, +IORING_REGISTER_FILE_ALLOC_RANGE = 25, +IORING_REGISTER_LAST = 26, +IORING_REGISTER_USE_REGISTERED_RING = 2147483648, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IO_WQ_BOUND = 0, +IO_WQ_UNBOUND = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IORING_RESTRICTION_REGISTER_OP = 0, +IORING_RESTRICTION_SQE_OP = 1, +IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, +IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, +IORING_RESTRICTION_LAST = 4, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_1 { +pub off: __u64, +pub addr2: __u64, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_2 { +pub addr: __u64, +pub splice_off_in: __u64, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_3 { +pub rw_flags: __kernel_rwf_t, +pub fsync_flags: __u32, +pub poll_events: __u16, +pub poll32_events: __u32, +pub sync_range_flags: __u32, +pub msg_flags: __u32, +pub timeout_flags: __u32, +pub accept_flags: __u32, +pub cancel_flags: __u32, +pub open_flags: __u32, +pub statx_flags: __u32, +pub fadvise_advice: __u32, +pub splice_flags: __u32, +pub rename_flags: __u32, +pub unlink_flags: __u32, +pub hardlink_flags: __u32, +pub xattr_flags: __u32, +pub msg_ring_flags: __u32, +pub uring_cmd_flags: __u32, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_4 { +pub buf_index: __u16, +pub buf_group: __u16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { +pub splice_fd_in: __s32, +pub file_index: __u32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_restriction__bindgen_ty_1 { +pub register_op: __u8, +pub sqe_op: __u8, +pub sqe_flags: __u8, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x86/netlink.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x86/netlink.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x86/netlink.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x86/netlink.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,357 +1,1492 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_nl { +pub nl_family: __kernel_sa_family_t, +pub nl_pad: crate::ctypes::c_ushort, +pub nl_pid: __u32, +pub nl_groups: __u32, } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsghdr { +pub nlmsg_len: __u32, +pub nlmsg_type: __u16, +pub nlmsg_flags: __u16, +pub nlmsg_seq: __u32, +pub nlmsg_pid: __u32, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsgerr { +pub error: crate::ctypes::c_int, +pub msg: nlmsghdr, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_pktinfo { +pub group: __u32, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_req { +pub nm_block_size: crate::ctypes::c_uint, +pub nm_block_nr: crate::ctypes::c_uint, +pub nm_frame_size: crate::ctypes::c_uint, +pub nm_frame_nr: crate::ctypes::c_uint, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_hdr { +pub nm_status: crate::ctypes::c_uint, +pub nm_len: crate::ctypes::c_uint, +pub nm_group: __u32, +pub nm_pid: __u32, +pub nm_uid: __u32, +pub nm_gid: __u32, } -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const __BITS_PER_LONG: u32 = 32; -pub const __FD_SETSIZE: u32 = 1024; -pub const NETLINK_ROUTE: u32 = 0; -pub const NETLINK_UNUSED: u32 = 1; -pub const NETLINK_USERSOCK: u32 = 2; -pub const NETLINK_FIREWALL: u32 = 3; -pub const NETLINK_SOCK_DIAG: u32 = 4; -pub const NETLINK_NFLOG: u32 = 5; -pub const NETLINK_XFRM: u32 = 6; -pub const NETLINK_SELINUX: u32 = 7; -pub const NETLINK_ISCSI: u32 = 8; -pub const NETLINK_AUDIT: u32 = 9; -pub const NETLINK_FIB_LOOKUP: u32 = 10; -pub const NETLINK_CONNECTOR: u32 = 11; -pub const NETLINK_NETFILTER: u32 = 12; -pub const NETLINK_IP6_FW: u32 = 13; -pub const NETLINK_DNRTMSG: u32 = 14; -pub const NETLINK_KOBJECT_UEVENT: u32 = 15; -pub const NETLINK_GENERIC: u32 = 16; -pub const NETLINK_SCSITRANSPORT: u32 = 18; -pub const NETLINK_ECRYPTFS: u32 = 19; -pub const NETLINK_RDMA: u32 = 20; -pub const NETLINK_CRYPTO: u32 = 21; -pub const NETLINK_SMC: u32 = 22; -pub const NETLINK_INET_DIAG: u32 = 4; -pub const MAX_LINKS: u32 = 32; -pub const NLM_F_REQUEST: u32 = 1; -pub const NLM_F_MULTI: u32 = 2; -pub const NLM_F_ACK: u32 = 4; -pub const NLM_F_ECHO: u32 = 8; -pub const NLM_F_DUMP_INTR: u32 = 16; -pub const NLM_F_DUMP_FILTERED: u32 = 32; -pub const NLM_F_ROOT: u32 = 256; -pub const NLM_F_MATCH: u32 = 512; -pub const NLM_F_ATOMIC: u32 = 1024; -pub const NLM_F_DUMP: u32 = 768; -pub const NLM_F_REPLACE: u32 = 256; -pub const NLM_F_EXCL: u32 = 512; -pub const NLM_F_CREATE: u32 = 1024; -pub const NLM_F_APPEND: u32 = 2048; -pub const NLM_F_NONREC: u32 = 256; -pub const NLM_F_BULK: u32 = 512; -pub const NLM_F_CAPPED: u32 = 256; -pub const NLM_F_ACK_TLVS: u32 = 512; -pub const NLMSG_ALIGNTO: u32 = 4; -pub const NLMSG_NOOP: u32 = 1; -pub const NLMSG_ERROR: u32 = 2; -pub const NLMSG_DONE: u32 = 3; -pub const NLMSG_OVERRUN: u32 = 4; -pub const NLMSG_MIN_TYPE: u32 = 16; -pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; -pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; -pub const NETLINK_PKTINFO: u32 = 3; -pub const NETLINK_BROADCAST_ERROR: u32 = 4; -pub const NETLINK_NO_ENOBUFS: u32 = 5; -pub const NETLINK_RX_RING: u32 = 6; -pub const NETLINK_TX_RING: u32 = 7; -pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; -pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; -pub const NETLINK_CAP_ACK: u32 = 10; -pub const NETLINK_EXT_ACK: u32 = 11; -pub const NETLINK_GET_STRICT_CHK: u32 = 12; -pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; -pub const NET_MAJOR: u32 = 36; -pub const NLA_F_NESTED: u32 = 32768; -pub const NLA_F_NET_BYTEORDER: u32 = 16384; -pub const NLA_TYPE_MASK: i32 = -49153; -pub const NLA_ALIGNTO: u32 = 4; -pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; -pub const MACVLAN_FLAG_NODST: u32 = 2; -pub const IPVLAN_F_PRIVATE: u32 = 1; -pub const IPVLAN_F_VEPA: u32 = 2; -pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; -pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; -pub const MAX_VLAN_LIST_LEN: u32 = 1; -pub const PORT_PROFILE_MAX: u32 = 40; -pub const PORT_UUID_MAX: u32 = 16; -pub const PORT_SELF_VF: i32 = -1; -pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; -pub const XDP_FLAGS_SKB_MODE: u32 = 2; -pub const XDP_FLAGS_DRV_MODE: u32 = 4; -pub const XDP_FLAGS_HW_MODE: u32 = 8; -pub const XDP_FLAGS_REPLACE: u32 = 16; -pub const XDP_FLAGS_MODES: u32 = 14; -pub const XDP_FLAGS_MASK: u32 = 31; -pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; -pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; -pub const IFA_F_SECONDARY: u32 = 1; -pub const IFA_F_TEMPORARY: u32 = 1; -pub const IFA_F_NODAD: u32 = 2; -pub const IFA_F_OPTIMISTIC: u32 = 4; -pub const IFA_F_DADFAILED: u32 = 8; -pub const IFA_F_HOMEADDRESS: u32 = 16; -pub const IFA_F_DEPRECATED: u32 = 32; -pub const IFA_F_TENTATIVE: u32 = 64; -pub const IFA_F_PERMANENT: u32 = 128; -pub const IFA_F_MANAGETEMPADDR: u32 = 256; -pub const IFA_F_NOPREFIXROUTE: u32 = 512; -pub const IFA_F_MCAUTOJOIN: u32 = 1024; -pub const IFA_F_STABLE_PRIVACY: u32 = 2048; -pub const IFAPROT_UNSPEC: u32 = 0; -pub const IFAPROT_KERNEL_LO: u32 = 1; -pub const IFAPROT_KERNEL_RA: u32 = 2; -pub const IFAPROT_KERNEL_LL: u32 = 3; -pub const NTF_USE: u32 = 1; -pub const NTF_SELF: u32 = 2; -pub const NTF_MASTER: u32 = 4; -pub const NTF_PROXY: u32 = 8; -pub const NTF_EXT_LEARNED: u32 = 16; -pub const NTF_OFFLOADED: u32 = 32; -pub const NTF_STICKY: u32 = 64; -pub const NTF_ROUTER: u32 = 128; -pub const NTF_EXT_MANAGED: u32 = 1; -pub const NTF_EXT_LOCKED: u32 = 2; -pub const NUD_INCOMPLETE: u32 = 1; -pub const NUD_REACHABLE: u32 = 2; -pub const NUD_STALE: u32 = 4; -pub const NUD_DELAY: u32 = 8; -pub const NUD_PROBE: u32 = 16; -pub const NUD_FAILED: u32 = 32; -pub const NUD_NOARP: u32 = 64; -pub const NUD_PERMANENT: u32 = 128; -pub const NUD_NONE: u32 = 0; -pub const RTNL_FAMILY_IPMR: u32 = 128; -pub const RTNL_FAMILY_IP6MR: u32 = 129; -pub const RTNL_FAMILY_MAX: u32 = 129; -pub const RTA_ALIGNTO: u32 = 4; -pub const RTPROT_UNSPEC: u32 = 0; -pub const RTPROT_REDIRECT: u32 = 1; -pub const RTPROT_KERNEL: u32 = 2; -pub const RTPROT_BOOT: u32 = 3; -pub const RTPROT_STATIC: u32 = 4; -pub const RTPROT_GATED: u32 = 8; -pub const RTPROT_RA: u32 = 9; -pub const RTPROT_MRT: u32 = 10; -pub const RTPROT_ZEBRA: u32 = 11; -pub const RTPROT_BIRD: u32 = 12; -pub const RTPROT_DNROUTED: u32 = 13; -pub const RTPROT_XORP: u32 = 14; -pub const RTPROT_NTK: u32 = 15; -pub const RTPROT_DHCP: u32 = 16; -pub const RTPROT_MROUTED: u32 = 17; -pub const RTPROT_KEEPALIVED: u32 = 18; -pub const RTPROT_BABEL: u32 = 42; -pub const RTPROT_OPENR: u32 = 99; -pub const RTPROT_BGP: u32 = 186; -pub const RTPROT_ISIS: u32 = 187; -pub const RTPROT_OSPF: u32 = 188; -pub const RTPROT_RIP: u32 = 189; -pub const RTPROT_EIGRP: u32 = 192; -pub const RTM_F_NOTIFY: u32 = 256; -pub const RTM_F_CLONED: u32 = 512; -pub const RTM_F_EQUALIZE: u32 = 1024; -pub const RTM_F_PREFIX: u32 = 2048; -pub const RTM_F_LOOKUP_TABLE: u32 = 4096; -pub const RTM_F_FIB_MATCH: u32 = 8192; -pub const RTM_F_OFFLOAD: u32 = 16384; -pub const RTM_F_TRAP: u32 = 32768; -pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; -pub const RTNH_F_DEAD: u32 = 1; -pub const RTNH_F_PERVASIVE: u32 = 2; -pub const RTNH_F_ONLINK: u32 = 4; -pub const RTNH_F_OFFLOAD: u32 = 8; -pub const RTNH_F_LINKDOWN: u32 = 16; -pub const RTNH_F_UNRESOLVED: u32 = 32; -pub const RTNH_F_TRAP: u32 = 64; -pub const RTNH_COMPARE_MASK: u32 = 89; -pub const RTNH_ALIGNTO: u32 = 4; -pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; -pub const RTAX_FEATURE_ECN: u32 = 1; -pub const RTAX_FEATURE_SACK: u32 = 2; -pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; -pub const RTAX_FEATURE_ALLFRAG: u32 = 8; -pub const RTAX_FEATURE_MASK: u32 = 15; -pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; -pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; -pub const RTMGRP_LINK: u32 = 1; -pub const RTMGRP_NOTIFY: u32 = 2; -pub const RTMGRP_NEIGH: u32 = 4; -pub const RTMGRP_TC: u32 = 8; -pub const RTMGRP_IPV4_IFADDR: u32 = 16; -pub const RTMGRP_IPV4_MROUTE: u32 = 32; -pub const RTMGRP_IPV4_ROUTE: u32 = 64; -pub const RTMGRP_IPV4_RULE: u32 = 128; -pub const RTMGRP_IPV6_IFADDR: u32 = 256; -pub const RTMGRP_IPV6_MROUTE: u32 = 512; -pub const RTMGRP_IPV6_ROUTE: u32 = 1024; -pub const RTMGRP_IPV6_IFINFO: u32 = 2048; -pub const RTMGRP_DECnet_IFADDR: u32 = 4096; -pub const RTMGRP_DECnet_ROUTE: u32 = 16384; -pub const RTMGRP_IPV6_PREFIX: u32 = 131072; -pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; -pub const RTEXT_FILTER_VF: u32 = 1; -pub const RTEXT_FILTER_BRVLAN: u32 = 2; -pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; -pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; -pub const RTEXT_FILTER_MRP: u32 = 16; -pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; -pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; -pub const RTEXT_FILTER_MST: u32 = 128; -pub type size_t = crate::ctypes::c_uint; -pub type ssize_t = crate::ctypes::c_int; -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; #[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct nlattr { +pub nla_len: __u16, +pub nla_type: __u16, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, +#[derive(Debug, Copy, Clone)] +pub struct nla_bitfield32 { +pub value: __u32, +pub selector: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], +pub struct rtnl_link_stats { +pub rx_packets: __u32, +pub tx_packets: __u32, +pub rx_bytes: __u32, +pub tx_bytes: __u32, +pub rx_errors: __u32, +pub tx_errors: __u32, +pub rx_dropped: __u32, +pub tx_dropped: __u32, +pub multicast: __u32, +pub collisions: __u32, +pub rx_length_errors: __u32, +pub rx_over_errors: __u32, +pub rx_crc_errors: __u32, +pub rx_frame_errors: __u32, +pub rx_fifo_errors: __u32, +pub rx_missed_errors: __u32, +pub tx_aborted_errors: __u32, +pub tx_carrier_errors: __u32, +pub tx_fifo_errors: __u32, +pub tx_heartbeat_errors: __u32, +pub tx_window_errors: __u32, +pub rx_compressed: __u32, +pub tx_compressed: __u32, +pub rx_nohandler: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnl_link_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +pub collisions: __u64, +pub rx_length_errors: __u64, +pub rx_over_errors: __u64, +pub rx_crc_errors: __u64, +pub rx_frame_errors: __u64, +pub rx_fifo_errors: __u64, +pub rx_missed_errors: __u64, +pub tx_aborted_errors: __u64, +pub tx_carrier_errors: __u64, +pub tx_fifo_errors: __u64, +pub tx_heartbeat_errors: __u64, +pub tx_window_errors: __u64, +pub rx_compressed: __u64, +pub tx_compressed: __u64, +pub rx_nohandler: __u64, +pub rx_otherhost_dropped: __u64, } -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 32usize], +pub struct rtnl_hw_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, } -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_mode_t = crate::ctypes::c_ushort; -pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; -pub type __kernel_uid_t = crate::ctypes::c_ushort; -pub type __kernel_gid_t = crate::ctypes::c_ushort; -pub type __kernel_old_dev_t = crate::ctypes::c_ushort; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_old_uid_t = __kernel_uid_t; -pub type __kernel_old_gid_t = __kernel_gid_t; -pub type __kernel_size_t = crate::ctypes::c_uint; -pub type __kernel_ssize_t = crate::ctypes::c_int; -pub type __kernel_ptrdiff_t = crate::ctypes::c_int; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], +pub struct rtnl_link_ifmap { +pub mem_start: __u64, +pub mem_end: __u64, +pub base_addr: __u64, +pub irq: __u16, +pub dma: __u8, +pub port: __u8, } -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_nl { -pub nl_family: __kernel_sa_family_t, -pub nl_pad: crate::ctypes::c_ushort, -pub nl_pid: __u32, -pub nl_groups: __u32, +pub struct ifla_bridge_id { +pub prio: [__u8; 2usize], +pub addr: [__u8; 6usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsghdr { -pub nlmsg_len: __u32, -pub nlmsg_type: __u16, -pub nlmsg_flags: __u16, -pub nlmsg_seq: __u32, -pub nlmsg_pid: __u32, +pub struct ifla_cacheinfo { +pub max_reasm_len: __u32, +pub tstamp: __u32, +pub reachable_time: __u32, +pub retrans_time: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsgerr { -pub error: crate::ctypes::c_int, -pub msg: nlmsghdr, +pub struct ifla_vlan_flags { +pub flags: __u32, +pub mask: __u32, } -impl nlmsgerr_attrs { -pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_qos_mapping { +pub from: __u32, +pub to: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tunnel_msg { +pub family: __u8, +pub flags: __u8, +pub reserved2: __u16, +pub ifindex: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vxlan_port_range { +pub low: __be16, +pub high: __be16, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_mac { +pub vf: __u32, +pub mac: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_broadcast { +pub broadcast: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan_info { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +pub vlan_proto: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_tx_rate { +pub vf: __u32, +pub rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rate { +pub vf: __u32, +pub min_tx_rate: __u32, +pub max_tx_rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_spoofchk { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_guid { +pub vf: __u32, +pub guid: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_link_state { +pub vf: __u32, +pub link_state: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rss_query_en { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_trust { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_port_vsi { +pub vsi_mgr_id: __u8, +pub vsi_type_id: [__u8; 3usize], +pub vsi_type_version: __u8, +pub pad: [__u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct if_stats_msg { +pub family: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub ifindex: __u32, +pub filter_mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_rmnet_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifaddrmsg { +pub ifa_family: __u8, +pub ifa_prefixlen: __u8, +pub ifa_flags: __u8, +pub ifa_scope: __u8, +pub ifa_index: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifa_cacheinfo { +pub ifa_prefered: __u32, +pub ifa_valid: __u32, +pub cstamp: __u32, +pub tstamp: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndmsg { +pub ndm_family: __u8, +pub ndm_pad1: __u8, +pub ndm_pad2: __u16, +pub ndm_ifindex: __s32, +pub ndm_state: __u16, +pub ndm_flags: __u8, +pub ndm_type: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nda_cacheinfo { +pub ndm_confirmed: __u32, +pub ndm_used: __u32, +pub ndm_updated: __u32, +pub ndm_refcnt: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_stats { +pub ndts_allocs: __u64, +pub ndts_destroys: __u64, +pub ndts_hash_grows: __u64, +pub ndts_res_failed: __u64, +pub ndts_lookups: __u64, +pub ndts_hits: __u64, +pub ndts_rcv_probes_mcast: __u64, +pub ndts_rcv_probes_ucast: __u64, +pub ndts_periodic_gc_runs: __u64, +pub ndts_forced_gc_runs: __u64, +pub ndts_table_fulls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndtmsg { +pub ndtm_family: __u8, +pub ndtm_pad1: __u8, +pub ndtm_pad2: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_config { +pub ndtc_key_len: __u16, +pub ndtc_entry_size: __u16, +pub ndtc_entries: __u32, +pub ndtc_last_flush: __u32, +pub ndtc_last_rand: __u32, +pub ndtc_hash_rnd: __u32, +pub ndtc_hash_mask: __u32, +pub ndtc_hash_chain_gc: __u32, +pub ndtc_proxy_qlen: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtattr { +pub rta_len: crate::ctypes::c_ushort, +pub rta_type: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtmsg { +pub rtm_family: crate::ctypes::c_uchar, +pub rtm_dst_len: crate::ctypes::c_uchar, +pub rtm_src_len: crate::ctypes::c_uchar, +pub rtm_tos: crate::ctypes::c_uchar, +pub rtm_table: crate::ctypes::c_uchar, +pub rtm_protocol: crate::ctypes::c_uchar, +pub rtm_scope: crate::ctypes::c_uchar, +pub rtm_type: crate::ctypes::c_uchar, +pub rtm_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnexthop { +pub rtnh_len: crate::ctypes::c_ushort, +pub rtnh_flags: crate::ctypes::c_uchar, +pub rtnh_hops: crate::ctypes::c_uchar, +pub rtnh_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug)] +pub struct rtvia { +pub rtvia_family: __kernel_sa_family_t, +pub rtvia_addr: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_cacheinfo { +pub rta_clntref: __u32, +pub rta_lastuse: __u32, +pub rta_expires: __s32, +pub rta_error: __u32, +pub rta_used: __u32, +pub rta_id: __u32, +pub rta_ts: __u32, +pub rta_tsage: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rta_session { +pub proto: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub u: rta_session__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { +pub sport: __u16, +pub dport: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { +pub type_: __u8, +pub code: __u8, +pub ident: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_mfc_stats { +pub mfcs_packets: __u64, +pub mfcs_bytes: __u64, +pub mfcs_wrong_if: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtgenmsg { +pub rtgen_family: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifinfomsg { +pub ifi_family: crate::ctypes::c_uchar, +pub __ifi_pad: crate::ctypes::c_uchar, +pub ifi_type: crate::ctypes::c_ushort, +pub ifi_index: crate::ctypes::c_int, +pub ifi_flags: crate::ctypes::c_uint, +pub ifi_change: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefixmsg { +pub prefix_family: crate::ctypes::c_uchar, +pub prefix_pad1: crate::ctypes::c_uchar, +pub prefix_pad2: crate::ctypes::c_ushort, +pub prefix_ifindex: crate::ctypes::c_int, +pub prefix_type: crate::ctypes::c_uchar, +pub prefix_len: crate::ctypes::c_uchar, +pub prefix_flags: crate::ctypes::c_uchar, +pub prefix_pad3: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefix_cacheinfo { +pub preferred_time: __u32, +pub valid_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcmsg { +pub tcm_family: crate::ctypes::c_uchar, +pub tcm__pad1: crate::ctypes::c_uchar, +pub tcm__pad2: crate::ctypes::c_ushort, +pub tcm_ifindex: crate::ctypes::c_int, +pub tcm_handle: __u32, +pub tcm_parent: __u32, +pub tcm_info: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nduseroptmsg { +pub nduseropt_family: crate::ctypes::c_uchar, +pub nduseropt_pad1: crate::ctypes::c_uchar, +pub nduseropt_opts_len: crate::ctypes::c_ushort, +pub nduseropt_ifindex: crate::ctypes::c_int, +pub nduseropt_icmp_type: __u8, +pub nduseropt_icmp_code: __u8, +pub nduseropt_pad2: crate::ctypes::c_ushort, +pub nduseropt_pad3: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcamsg { +pub tca_family: crate::ctypes::c_uchar, +pub tca__pad1: crate::ctypes::c_uchar, +pub tca__pad2: crate::ctypes::c_ushort, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const NETLINK_ROUTE: u32 = 0; +pub const NETLINK_UNUSED: u32 = 1; +pub const NETLINK_USERSOCK: u32 = 2; +pub const NETLINK_FIREWALL: u32 = 3; +pub const NETLINK_SOCK_DIAG: u32 = 4; +pub const NETLINK_NFLOG: u32 = 5; +pub const NETLINK_XFRM: u32 = 6; +pub const NETLINK_SELINUX: u32 = 7; +pub const NETLINK_ISCSI: u32 = 8; +pub const NETLINK_AUDIT: u32 = 9; +pub const NETLINK_FIB_LOOKUP: u32 = 10; +pub const NETLINK_CONNECTOR: u32 = 11; +pub const NETLINK_NETFILTER: u32 = 12; +pub const NETLINK_IP6_FW: u32 = 13; +pub const NETLINK_DNRTMSG: u32 = 14; +pub const NETLINK_KOBJECT_UEVENT: u32 = 15; +pub const NETLINK_GENERIC: u32 = 16; +pub const NETLINK_SCSITRANSPORT: u32 = 18; +pub const NETLINK_ECRYPTFS: u32 = 19; +pub const NETLINK_RDMA: u32 = 20; +pub const NETLINK_CRYPTO: u32 = 21; +pub const NETLINK_SMC: u32 = 22; +pub const NETLINK_INET_DIAG: u32 = 4; +pub const MAX_LINKS: u32 = 32; +pub const NLM_F_REQUEST: u32 = 1; +pub const NLM_F_MULTI: u32 = 2; +pub const NLM_F_ACK: u32 = 4; +pub const NLM_F_ECHO: u32 = 8; +pub const NLM_F_DUMP_INTR: u32 = 16; +pub const NLM_F_DUMP_FILTERED: u32 = 32; +pub const NLM_F_ROOT: u32 = 256; +pub const NLM_F_MATCH: u32 = 512; +pub const NLM_F_ATOMIC: u32 = 1024; +pub const NLM_F_DUMP: u32 = 768; +pub const NLM_F_REPLACE: u32 = 256; +pub const NLM_F_EXCL: u32 = 512; +pub const NLM_F_CREATE: u32 = 1024; +pub const NLM_F_APPEND: u32 = 2048; +pub const NLM_F_NONREC: u32 = 256; +pub const NLM_F_BULK: u32 = 512; +pub const NLM_F_CAPPED: u32 = 256; +pub const NLM_F_ACK_TLVS: u32 = 512; +pub const NLMSG_ALIGNTO: u32 = 4; +pub const NLMSG_NOOP: u32 = 1; +pub const NLMSG_ERROR: u32 = 2; +pub const NLMSG_DONE: u32 = 3; +pub const NLMSG_OVERRUN: u32 = 4; +pub const NLMSG_MIN_TYPE: u32 = 16; +pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; +pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; +pub const NETLINK_PKTINFO: u32 = 3; +pub const NETLINK_BROADCAST_ERROR: u32 = 4; +pub const NETLINK_NO_ENOBUFS: u32 = 5; +pub const NETLINK_RX_RING: u32 = 6; +pub const NETLINK_TX_RING: u32 = 7; +pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; +pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; +pub const NETLINK_CAP_ACK: u32 = 10; +pub const NETLINK_EXT_ACK: u32 = 11; +pub const NETLINK_GET_STRICT_CHK: u32 = 12; +pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; +pub const NET_MAJOR: u32 = 36; +pub const NLA_F_NESTED: u32 = 32768; +pub const NLA_F_NET_BYTEORDER: u32 = 16384; +pub const NLA_TYPE_MASK: i32 = -49153; +pub const NLA_ALIGNTO: u32 = 4; +pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; +pub const MACVLAN_FLAG_NODST: u32 = 2; +pub const IPVLAN_F_PRIVATE: u32 = 1; +pub const IPVLAN_F_VEPA: u32 = 2; +pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; +pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; +pub const MAX_VLAN_LIST_LEN: u32 = 1; +pub const PORT_PROFILE_MAX: u32 = 40; +pub const PORT_UUID_MAX: u32 = 16; +pub const PORT_SELF_VF: i32 = -1; +pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; +pub const XDP_FLAGS_SKB_MODE: u32 = 2; +pub const XDP_FLAGS_DRV_MODE: u32 = 4; +pub const XDP_FLAGS_HW_MODE: u32 = 8; +pub const XDP_FLAGS_REPLACE: u32 = 16; +pub const XDP_FLAGS_MODES: u32 = 14; +pub const XDP_FLAGS_MASK: u32 = 31; +pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; +pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; +pub const IFA_F_SECONDARY: u32 = 1; +pub const IFA_F_TEMPORARY: u32 = 1; +pub const IFA_F_NODAD: u32 = 2; +pub const IFA_F_OPTIMISTIC: u32 = 4; +pub const IFA_F_DADFAILED: u32 = 8; +pub const IFA_F_HOMEADDRESS: u32 = 16; +pub const IFA_F_DEPRECATED: u32 = 32; +pub const IFA_F_TENTATIVE: u32 = 64; +pub const IFA_F_PERMANENT: u32 = 128; +pub const IFA_F_MANAGETEMPADDR: u32 = 256; +pub const IFA_F_NOPREFIXROUTE: u32 = 512; +pub const IFA_F_MCAUTOJOIN: u32 = 1024; +pub const IFA_F_STABLE_PRIVACY: u32 = 2048; +pub const IFAPROT_UNSPEC: u32 = 0; +pub const IFAPROT_KERNEL_LO: u32 = 1; +pub const IFAPROT_KERNEL_RA: u32 = 2; +pub const IFAPROT_KERNEL_LL: u32 = 3; +pub const NTF_USE: u32 = 1; +pub const NTF_SELF: u32 = 2; +pub const NTF_MASTER: u32 = 4; +pub const NTF_PROXY: u32 = 8; +pub const NTF_EXT_LEARNED: u32 = 16; +pub const NTF_OFFLOADED: u32 = 32; +pub const NTF_STICKY: u32 = 64; +pub const NTF_ROUTER: u32 = 128; +pub const NTF_EXT_MANAGED: u32 = 1; +pub const NTF_EXT_LOCKED: u32 = 2; +pub const NUD_INCOMPLETE: u32 = 1; +pub const NUD_REACHABLE: u32 = 2; +pub const NUD_STALE: u32 = 4; +pub const NUD_DELAY: u32 = 8; +pub const NUD_PROBE: u32 = 16; +pub const NUD_FAILED: u32 = 32; +pub const NUD_NOARP: u32 = 64; +pub const NUD_PERMANENT: u32 = 128; +pub const NUD_NONE: u32 = 0; +pub const RTNL_FAMILY_IPMR: u32 = 128; +pub const RTNL_FAMILY_IP6MR: u32 = 129; +pub const RTNL_FAMILY_MAX: u32 = 129; +pub const RTA_ALIGNTO: u32 = 4; +pub const RTPROT_UNSPEC: u32 = 0; +pub const RTPROT_REDIRECT: u32 = 1; +pub const RTPROT_KERNEL: u32 = 2; +pub const RTPROT_BOOT: u32 = 3; +pub const RTPROT_STATIC: u32 = 4; +pub const RTPROT_GATED: u32 = 8; +pub const RTPROT_RA: u32 = 9; +pub const RTPROT_MRT: u32 = 10; +pub const RTPROT_ZEBRA: u32 = 11; +pub const RTPROT_BIRD: u32 = 12; +pub const RTPROT_DNROUTED: u32 = 13; +pub const RTPROT_XORP: u32 = 14; +pub const RTPROT_NTK: u32 = 15; +pub const RTPROT_DHCP: u32 = 16; +pub const RTPROT_MROUTED: u32 = 17; +pub const RTPROT_KEEPALIVED: u32 = 18; +pub const RTPROT_BABEL: u32 = 42; +pub const RTPROT_OPENR: u32 = 99; +pub const RTPROT_BGP: u32 = 186; +pub const RTPROT_ISIS: u32 = 187; +pub const RTPROT_OSPF: u32 = 188; +pub const RTPROT_RIP: u32 = 189; +pub const RTPROT_EIGRP: u32 = 192; +pub const RTM_F_NOTIFY: u32 = 256; +pub const RTM_F_CLONED: u32 = 512; +pub const RTM_F_EQUALIZE: u32 = 1024; +pub const RTM_F_PREFIX: u32 = 2048; +pub const RTM_F_LOOKUP_TABLE: u32 = 4096; +pub const RTM_F_FIB_MATCH: u32 = 8192; +pub const RTM_F_OFFLOAD: u32 = 16384; +pub const RTM_F_TRAP: u32 = 32768; +pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; +pub const RTNH_F_DEAD: u32 = 1; +pub const RTNH_F_PERVASIVE: u32 = 2; +pub const RTNH_F_ONLINK: u32 = 4; +pub const RTNH_F_OFFLOAD: u32 = 8; +pub const RTNH_F_LINKDOWN: u32 = 16; +pub const RTNH_F_UNRESOLVED: u32 = 32; +pub const RTNH_F_TRAP: u32 = 64; +pub const RTNH_COMPARE_MASK: u32 = 89; +pub const RTNH_ALIGNTO: u32 = 4; +pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; +pub const RTAX_FEATURE_ECN: u32 = 1; +pub const RTAX_FEATURE_SACK: u32 = 2; +pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; +pub const RTAX_FEATURE_ALLFRAG: u32 = 8; +pub const RTAX_FEATURE_MASK: u32 = 15; +pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; +pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; +pub const RTMGRP_LINK: u32 = 1; +pub const RTMGRP_NOTIFY: u32 = 2; +pub const RTMGRP_NEIGH: u32 = 4; +pub const RTMGRP_TC: u32 = 8; +pub const RTMGRP_IPV4_IFADDR: u32 = 16; +pub const RTMGRP_IPV4_MROUTE: u32 = 32; +pub const RTMGRP_IPV4_ROUTE: u32 = 64; +pub const RTMGRP_IPV4_RULE: u32 = 128; +pub const RTMGRP_IPV6_IFADDR: u32 = 256; +pub const RTMGRP_IPV6_MROUTE: u32 = 512; +pub const RTMGRP_IPV6_ROUTE: u32 = 1024; +pub const RTMGRP_IPV6_IFINFO: u32 = 2048; +pub const RTMGRP_DECnet_IFADDR: u32 = 4096; +pub const RTMGRP_DECnet_ROUTE: u32 = 16384; +pub const RTMGRP_IPV6_PREFIX: u32 = 131072; +pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; +pub const RTEXT_FILTER_VF: u32 = 1; +pub const RTEXT_FILTER_BRVLAN: u32 = 2; +pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; +pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; +pub const RTEXT_FILTER_MRP: u32 = 16; +pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; +pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; +pub const RTEXT_FILTER_MST: u32 = 128; +pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; +pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; +pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; +pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; +pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; +pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; +pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; +pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; +pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; +pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; +pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; +pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; +pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; +pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; +pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; +pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; +pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; +pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; +pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; +pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; +pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; +pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; +pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; +pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; +pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; +pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; +pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; +pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; +pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; +pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; +pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; +pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; +pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; +pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; +pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; +pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; +pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; +pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; +pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; +pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; +pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; +pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; +pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; +pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; +pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; +pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; +pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; +pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; +pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; +pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; +pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; +pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; +pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; +pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; +pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; +pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; +pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; +pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; +pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; +pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; +pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; +pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; +pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; +pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; +pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; +pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; +pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; +pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; +pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; +pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; +pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; +pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; +pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; +pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; +pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; +pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; +pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; +pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; +pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; +pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; +pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; +pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; +pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; +pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; +pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; +pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; +pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; +pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; +pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; +pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; +pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; +pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; +pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; +pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; +pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; +pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; +pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; +pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; +pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; +pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; +pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; +pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; +pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; +pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; +pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; +pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; +pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; +pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; +pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; +pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; +pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; +pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; +pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; +pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; +pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; +pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; +pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; +pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; +pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; +pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; +pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; +pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; +pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; +pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; +pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; +pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; +pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; +pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; +pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; +pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; +pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; +pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; +pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; +pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; +pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; +pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; +pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; +pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; +pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; +pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; +pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; +pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; +pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; +pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; +pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; +pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; +pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; +pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; +pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; +pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; +pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; +pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; +pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; +pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; +pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; +pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; +pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; +pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; +pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; +pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; +pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; +pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; +pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; +pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; +pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; +pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; +pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; +pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; +pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; +pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; +pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; +pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; +pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; +pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; +pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; +pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; +pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; +pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; +pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; +pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; +pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; +pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; +pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; +pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; +pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; +pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; +pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; +pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; +pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; +pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; +pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; +pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; +pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; +pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; +pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; +pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; +pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; +pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; +pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; +pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; +pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; +pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; +pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; +pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; +pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; +pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; +pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; +pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; +pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; +pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; +pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; +pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; +pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; +pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; +pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; +pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; +pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; +pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; +pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; +pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; +pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; +pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; +pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; +pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; +pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; +pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; +pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; +pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; +pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; +pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; +pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; +pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; +pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; +pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; +pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; +pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; +pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; +pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; +pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; +pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; +pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; +pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; +pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; +pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; +pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; +pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; +pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; +pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; +pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; +pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; +pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; +pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; +pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; +pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; +pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; +pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; +pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; +pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; +pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; +pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; +pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; +pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; +pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; +pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; +pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; +pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; +pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; +pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; +pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; +pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; +pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; +pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; +pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; +pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; +pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; +pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; +pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; +pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; +pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; +pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; +pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; +pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; +pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; +pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; +pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; +pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; +pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; +pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; +pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; +pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; +pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; +pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; +pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; +pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; +pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; +pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; +pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; +pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; +pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; +pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; +pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; +pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; +pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; +pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; +pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; +pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; +pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; +pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; +pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; +pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; +pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; +pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; +pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; +pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; +pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; +pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; +pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; +pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; +pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; +pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; +pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; +pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; +pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; +pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; +pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; +pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; +pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; +pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; +pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; +pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; +pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; +pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; +pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; +pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; +pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; +pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; +pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; +pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; +pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; +pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; +pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; +pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; +pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; +pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; +pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; +pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; +pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; +pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; +pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; +pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; +pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; +pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; +pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; +pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; +pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; +pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; +pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; +pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; +pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; +pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; +pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; +pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; +pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; +pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; +pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; +pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; +pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; +pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; +pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; +pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; +pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; +pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; +pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; +pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; +pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; +pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; +pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; +pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; +pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; +pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; +pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; +pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; +pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; +pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; +pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; +pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; +pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; +pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; +pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; +pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; +pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; +pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; +pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; +pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; +pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; +pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; +pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; +pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; +pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; +pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; +pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; +pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; +pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; +pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; +pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; +pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; +pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; +pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; +pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; +pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; +pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; +pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; +pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; +pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; +pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; +pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; +pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; +pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; +pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; +pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; +pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; +pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; +pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; +pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; +pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; +pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; +pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; +pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; +pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; +pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; +pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; +pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; +pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; +pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; +pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; +pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; +pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; +pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; +pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; +pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; +pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; +pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; +pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; +pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; +pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; +pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; +pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; +pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; +pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; +pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; +pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; +pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; +pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; +pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; +pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; +pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; +pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; +pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; +pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; +pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; +pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; +pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; +pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; +pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; +pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; +pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; +pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; +pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; +pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; +pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; +pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; +pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; +pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; +pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; +pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; +pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; +pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; +pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; +pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; +pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; +pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; +pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; +pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; +pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; +pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; +pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; +pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; +pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; +pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; +pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; +pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; +pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; +pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; +pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; +pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; +pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; +pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; +pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; +pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; +pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; +pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; +pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; +pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; +pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; +pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; +pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; +pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; +pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; +pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; +pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; +pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; +pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; +pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; +pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; +pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; +pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; +pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; +pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; +pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; +pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; +pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; +pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; +pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; +pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; +pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; +pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; +pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; +pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; +pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; +pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; +pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; +pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; +pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; +pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; +pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; +pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; +pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; +pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; +pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; +pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; +pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; +pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; +pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; +pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; +pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; +pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; +pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; +pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; +pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; +pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; +pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; +pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; +pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; +pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; +pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; +pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; +pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; +pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; +pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; +pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; +pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; +pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; +pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; +pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; +pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; +pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; +pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; +pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; +pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; +pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; +pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; +pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; +pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; +pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; +pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; +pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; +pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; +pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; +pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; +pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; +pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; +pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; +pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; +pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; +pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; +pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; +pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; +pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; +pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; +pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; +pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; +pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; +pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; +pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; +pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; +pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; +pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; +pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; +pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; +pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; +pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; +pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; +pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; +pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; +pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; +pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; +pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; +pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; +pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; +pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; +pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; +pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; +pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; +pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; +pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; +pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; +pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; +pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; +pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; +pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; +pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; +pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; +pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; +pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; +pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; +pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; +pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; +pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; +pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; +pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; +pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; +pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; +pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; +pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; +pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; +pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; +pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; +pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; +pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; +pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; +pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; +pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; +pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; +pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; +pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; +pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; +pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; +pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; +pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; +pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; +pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; +pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; +pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; +pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; +pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; +pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; +pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; +pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; +pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; +pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; +pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; +pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; +pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; +pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; +pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; +pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; +pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; +pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; +pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; +pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; +pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; +pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; +pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; +pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; +pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; +pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; +pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; +pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; +pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; +pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; +pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; +pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; +pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; +pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; +pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; +pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; +pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; +pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; +pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; +pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; +pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; +pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; +pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; +pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; +pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; +pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; +pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; +pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; +pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; +pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; +pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; +pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; +pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; +pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -365,29 +1500,6 @@ NLMSGERR_ATTR_MISS_NEST = 6, __NLMSGERR_ATTR_MAX = 7, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_pktinfo { -pub group: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_req { -pub nm_block_size: crate::ctypes::c_uint, -pub nm_block_nr: crate::ctypes::c_uint, -pub nm_frame_size: crate::ctypes::c_uint, -pub nm_frame_nr: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_hdr { -pub nm_status: crate::ctypes::c_uint, -pub nm_len: crate::ctypes::c_uint, -pub nm_group: __u32, -pub nm_pid: __u32, -pub nm_uid: __u32, -pub nm_gid: __u32, -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -398,8 +1510,6 @@ NL_MMAP_STATUS_COPY = 3, NL_MMAP_STATUS_SKIP = 4, } -pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; -pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -407,208 +1517,46 @@ NETLINK_UNCONNECTED = 0, NETLINK_CONNECTED = 1, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nlattr { -pub nla_len: __u16, -pub nla_type: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nla_bitfield32 { -pub value: __u32, -pub selector: __u32, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_attribute_type { -NL_ATTR_TYPE_INVALID = 0, -NL_ATTR_TYPE_FLAG = 1, -NL_ATTR_TYPE_U8 = 2, -NL_ATTR_TYPE_U16 = 3, -NL_ATTR_TYPE_U32 = 4, -NL_ATTR_TYPE_U64 = 5, -NL_ATTR_TYPE_S8 = 6, -NL_ATTR_TYPE_S16 = 7, -NL_ATTR_TYPE_S32 = 8, -NL_ATTR_TYPE_S64 = 9, -NL_ATTR_TYPE_BINARY = 10, -NL_ATTR_TYPE_STRING = 11, -NL_ATTR_TYPE_NUL_STRING = 12, -NL_ATTR_TYPE_NESTED = 13, -NL_ATTR_TYPE_NESTED_ARRAY = 14, -NL_ATTR_TYPE_BITFIELD32 = 15, -} -impl netlink_policy_type_attr { -pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_policy_type_attr { -NL_POLICY_TYPE_ATTR_UNSPEC = 0, -NL_POLICY_TYPE_ATTR_TYPE = 1, -NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, -NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, -NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, -NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, -NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, -NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, -NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, -NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, -NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, -NL_POLICY_TYPE_ATTR_PAD = 11, -NL_POLICY_TYPE_ATTR_MASK = 12, -__NL_POLICY_TYPE_ATTR_MAX = 13, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats { -pub rx_packets: __u32, -pub tx_packets: __u32, -pub rx_bytes: __u32, -pub tx_bytes: __u32, -pub rx_errors: __u32, -pub tx_errors: __u32, -pub rx_dropped: __u32, -pub tx_dropped: __u32, -pub multicast: __u32, -pub collisions: __u32, -pub rx_length_errors: __u32, -pub rx_over_errors: __u32, -pub rx_crc_errors: __u32, -pub rx_frame_errors: __u32, -pub rx_fifo_errors: __u32, -pub rx_missed_errors: __u32, -pub tx_aborted_errors: __u32, -pub tx_carrier_errors: __u32, -pub tx_fifo_errors: __u32, -pub tx_heartbeat_errors: __u32, -pub tx_window_errors: __u32, -pub rx_compressed: __u32, -pub tx_compressed: __u32, -pub rx_nohandler: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, -pub collisions: __u64, -pub rx_length_errors: __u64, -pub rx_over_errors: __u64, -pub rx_crc_errors: __u64, -pub rx_frame_errors: __u64, -pub rx_fifo_errors: __u64, -pub rx_missed_errors: __u64, -pub tx_aborted_errors: __u64, -pub tx_carrier_errors: __u64, -pub tx_fifo_errors: __u64, -pub tx_heartbeat_errors: __u64, -pub tx_window_errors: __u64, -pub rx_compressed: __u64, -pub tx_compressed: __u64, -pub rx_nohandler: __u64, -pub rx_otherhost_dropped: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_hw_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, +pub enum netlink_attribute_type { +NL_ATTR_TYPE_INVALID = 0, +NL_ATTR_TYPE_FLAG = 1, +NL_ATTR_TYPE_U8 = 2, +NL_ATTR_TYPE_U16 = 3, +NL_ATTR_TYPE_U32 = 4, +NL_ATTR_TYPE_U64 = 5, +NL_ATTR_TYPE_S8 = 6, +NL_ATTR_TYPE_S16 = 7, +NL_ATTR_TYPE_S32 = 8, +NL_ATTR_TYPE_S64 = 9, +NL_ATTR_TYPE_BINARY = 10, +NL_ATTR_TYPE_STRING = 11, +NL_ATTR_TYPE_NUL_STRING = 12, +NL_ATTR_TYPE_NESTED = 13, +NL_ATTR_TYPE_NESTED_ARRAY = 14, +NL_ATTR_TYPE_BITFIELD32 = 15, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_ifmap { -pub mem_start: __u64, -pub mem_end: __u64, -pub base_addr: __u64, -pub irq: __u16, -pub dma: __u8, -pub port: __u8, +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_policy_type_attr { +NL_POLICY_TYPE_ATTR_UNSPEC = 0, +NL_POLICY_TYPE_ATTR_TYPE = 1, +NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, +NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, +NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, +NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, +NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, +NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, +NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, +NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, +NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, +NL_POLICY_TYPE_ATTR_PAD = 11, +NL_POLICY_TYPE_ATTR_MASK = 12, +__NL_POLICY_TYPE_ATTR_MAX = 13, } -pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; -pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; -pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; -pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; -pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; -pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; -pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; -pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; -pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; -pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; -pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; -pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; -pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; -pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; -pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; -pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; -pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; -pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; -pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; -pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; -pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; -pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; -pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; -pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; -pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; -pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; -pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; -pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; -pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; -pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; -pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; -pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; -pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; -pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; -pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; -pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; -pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; -pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; -pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; -pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; -pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; -pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; -pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; -pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; -pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; -pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; -pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; -pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; -pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; -pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; -pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; -pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; -pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; -pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; -pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; -pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; -pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; -pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; -pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; -pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; -pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; -pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; -pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; -pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; -pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -680,11 +1628,6 @@ IFLA_GRO_IPV4_MAX_SIZE = 64, __IFLA_MAX = 65, } -pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; -pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; -pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; -pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; -pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -694,9 +1637,6 @@ IFLA_PROTO_DOWN_REASON_VALUE = 2, __IFLA_PROTO_DOWN_REASON_CNT = 3, } -pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; -pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; -pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -705,17 +1645,6 @@ IFLA_INET_CONF = 1, __IFLA_INET_MAX = 2, } -pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; -pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; -pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; -pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; -pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; -pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; -pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; -pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; -pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; -pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; -pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -741,55 +1670,6 @@ IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, IN6_ADDR_GEN_MODE_RANDOM = 3, } -pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; -pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; -pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; -pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; -pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; -pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; -pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; -pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; -pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; -pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; -pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; -pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; -pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; -pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; -pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; -pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; -pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; -pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; -pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; -pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; -pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; -pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; -pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; -pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; -pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; -pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; -pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; -pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; -pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; -pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; -pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; -pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; -pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; -pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; -pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; -pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; -pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; -pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; -pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; -pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; -pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; -pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; -pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; -pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; -pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; -pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; -pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; -pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; -pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -826,83 +1706,31 @@ IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29, IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30, IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, -IFLA_BR_MCAST_QUERIER_INTVL = 32, -IFLA_BR_MCAST_QUERY_INTVL = 33, -IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, -IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, -IFLA_BR_NF_CALL_IPTABLES = 36, -IFLA_BR_NF_CALL_IP6TABLES = 37, -IFLA_BR_NF_CALL_ARPTABLES = 38, -IFLA_BR_VLAN_DEFAULT_PVID = 39, -IFLA_BR_PAD = 40, -IFLA_BR_VLAN_STATS_ENABLED = 41, -IFLA_BR_MCAST_STATS_ENABLED = 42, -IFLA_BR_MCAST_IGMP_VERSION = 43, -IFLA_BR_MCAST_MLD_VERSION = 44, -IFLA_BR_VLAN_STATS_PER_PORT = 45, -IFLA_BR_MULTI_BOOLOPT = 46, -IFLA_BR_MCAST_QUERIER_STATE = 47, -__IFLA_BR_MAX = 48, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_bridge_id { -pub prio: [__u8; 2usize], -pub addr: [__u8; 6usize], -} -pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; -pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -BRIDGE_MODE_UNSPEC = 0, -BRIDGE_MODE_HAIRPIN = 1, -} -pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; -pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; -pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; -pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; -pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; -pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; -pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; -pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; -pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; -pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; -pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; -pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; -pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; -pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; -pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; -pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; -pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; -pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; -pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; -pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; -pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; -pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; -pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; -pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; -pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; -pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; -pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; -pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; -pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; -pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; -pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; -pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; -pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; -pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; -pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; -pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; -pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; -pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; -pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; -pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; -pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; -pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +IFLA_BR_MCAST_QUERIER_INTVL = 32, +IFLA_BR_MCAST_QUERY_INTVL = 33, +IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, +IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, +IFLA_BR_NF_CALL_IPTABLES = 36, +IFLA_BR_NF_CALL_IP6TABLES = 37, +IFLA_BR_NF_CALL_ARPTABLES = 38, +IFLA_BR_VLAN_DEFAULT_PVID = 39, +IFLA_BR_PAD = 40, +IFLA_BR_VLAN_STATS_ENABLED = 41, +IFLA_BR_MCAST_STATS_ENABLED = 42, +IFLA_BR_MCAST_IGMP_VERSION = 43, +IFLA_BR_MCAST_MLD_VERSION = 44, +IFLA_BR_VLAN_STATS_PER_PORT = 45, +IFLA_BR_MULTI_BOOLOPT = 46, +IFLA_BR_MCAST_QUERIER_STATE = 47, +__IFLA_BR_MAX = 48, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +BRIDGE_MODE_UNSPEC = 0, +BRIDGE_MODE_HAIRPIN = 1, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -952,21 +1780,6 @@ IFLA_BRPORT_MCAST_MAX_GROUPS = 42, __IFLA_BRPORT_MAX = 43, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_cacheinfo { -pub max_reasm_len: __u32, -pub tstamp: __u32, -pub reachable_time: __u32, -pub retrans_time: __u32, -} -pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; -pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; -pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; -pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; -pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; -pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; -pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -979,13 +1792,6 @@ IFLA_INFO_SLAVE_DATA = 5, __IFLA_INFO_MAX = 6, } -pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; -pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; -pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; -pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; -pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; -pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; -pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -998,15 +1804,6 @@ IFLA_VLAN_PROTOCOL = 5, __IFLA_VLAN_MAX = 6, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; -pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; -pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1015,22 +1812,6 @@ IFLA_VLAN_QOS_MAPPING = 1, __IFLA_VLAN_QOS_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_qos_mapping { -pub from: __u32, -pub to: __u32, -} -pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; -pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; -pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; -pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; -pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; -pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; -pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; -pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; -pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; -pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1065,9 +1846,6 @@ MACVLAN_MACADDR_FLUSH = 2, MACVLAN_MACADDR_SET = 3, } -pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; -pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; -pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1076,9 +1854,6 @@ IFLA_VRF_TABLE = 1, __IFLA_VRF_MAX = 2, } -pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; -pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; -pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1087,23 +1862,6 @@ IFLA_VRF_PORT_TABLE = 1, __IFLA_VRF_PORT_MAX = 2, } -pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; -pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; -pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; -pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; -pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; -pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; -pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; -pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; -pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; -pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; -pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; -pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; -pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; -pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; -pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; -pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; -pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1126,11 +1884,6 @@ IFLA_MACSEC_OFFLOAD = 15, __IFLA_MACSEC_MAX = 16, } -pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; -pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; -pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; -pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; -pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1141,9 +1894,6 @@ IFLA_XFRM_COLLECT_METADATA = 3, __IFLA_XFRM_MAX = 4, } -impl macsec_validation_type { -pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1153,9 +1903,6 @@ MACSEC_VALIDATE_STRICT = 2, __MACSEC_VALIDATE_END = 3, } -impl macsec_offload { -pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1165,10 +1912,6 @@ MACSEC_OFFLOAD_MAC = 2, __MACSEC_OFFLOAD_END = 3, } -pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; -pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; -pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; -pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1187,25 +1930,6 @@ IPVLAN_MODE_L3S = 2, IPVLAN_MODE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tunnel_msg { -pub family: __u8, -pub flags: __u8, -pub reserved2: __u16, -pub ifindex: __u32, -} -pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; -pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; -pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; -pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; -pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; -pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; -pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; -pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; -pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1222,13 +1946,6 @@ VNIFILTER_ENTRY_STATS_PAD = 9, __VNIFILTER_ENTRY_STATS_MAX = 10, } -pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; -pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; -pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; -pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; -pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; -pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1241,9 +1958,6 @@ VXLAN_VNIFILTER_ENTRY_STATS = 5, __VXLAN_VNIFILTER_ENTRY_MAX = 6, } -pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; -pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1252,38 +1966,6 @@ VXLAN_VNIFILTER_ENTRY = 1, __VXLAN_VNIFILTER_MAX = 2, } -pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; -pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; -pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; -pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; -pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; -pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; -pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; -pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; -pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; -pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; -pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; -pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; -pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; -pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; -pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; -pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; -pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; -pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; -pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; -pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; -pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; -pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; -pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; -pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; -pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; -pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; -pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; -pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; -pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; -pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1321,15 +2003,6 @@ IFLA_VXLAN_VNIFILTER = 30, __IFLA_VXLAN_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vxlan_port_range { -pub low: __be16, -pub high: __be16, -} -impl ifla_vxlan_df { -pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1339,22 +2012,6 @@ VXLAN_DF_INHERIT = 2, __VXLAN_DF_END = 3, } -pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; -pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; -pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; -pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; -pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; -pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; -pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; -pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; -pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; -pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; -pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; -pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; -pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; -pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1376,9 +2033,6 @@ IFLA_GENEVE_INNER_PROTO_INHERIT = 14, __IFLA_GENEVE_MAX = 15, } -impl ifla_geneve_df { -pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1388,12 +2042,6 @@ GENEVE_DF_INHERIT = 2, __GENEVE_DF_END = 3, } -pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; -pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; -pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; -pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; -pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; -pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1405,9 +2053,6 @@ IFLA_BAREUDP_MULTIPROTO_MODE = 4, __IFLA_BAREUDP_MAX = 5, } -pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; -pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; -pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1423,60 +2068,19 @@ GTP_ROLE_GGSN = 0, GTP_ROLE_SGSN = 1, } -pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; -pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; -pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; -pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; -pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; -pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; -pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; -pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub enum _bindgen_ty_25 { IFLA_GTP_UNSPEC = 0, IFLA_GTP_FD0 = 1, -IFLA_GTP_FD1 = 2, -IFLA_GTP_PDP_HASHSIZE = 3, -IFLA_GTP_ROLE = 4, -IFLA_GTP_CREATE_SOCKETS = 5, -IFLA_GTP_RESTART_COUNT = 6, -__IFLA_GTP_MAX = 7, -} -pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; -pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; -pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; -pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; -pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; -pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; -pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; -pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; -pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; -pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; -pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; -pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; -pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; -pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; -pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; -pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; -pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; -pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; -pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; -pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; -pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; -pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; -pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; -pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; -pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; -pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; -pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; -pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; -pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; -pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; -pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; -pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; -pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +IFLA_GTP_FD1 = 2, +IFLA_GTP_PDP_HASHSIZE = 3, +IFLA_GTP_ROLE = 4, +IFLA_GTP_CREATE_SOCKETS = 5, +IFLA_GTP_RESTART_COUNT = 6, +__IFLA_GTP_MAX = 7, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1515,13 +2119,6 @@ IFLA_BOND_NS_IP6_TARGET = 31, __IFLA_BOND_MAX = 32, } -pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; -pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; -pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; -pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; -pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1534,17 +2131,6 @@ IFLA_BOND_AD_INFO_PARTNER_MAC = 5, __IFLA_BOND_AD_INFO_MAX = 6, } -pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; -pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; -pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; -pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; -pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; -pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; -pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; -pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; -pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1561,9 +2147,6 @@ IFLA_BOND_SLAVE_PRIO = 9, __IFLA_BOND_SLAVE_MAX = 10, } -pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; -pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; -pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1572,21 +2155,6 @@ IFLA_VF_INFO = 1, __IFLA_VF_INFO_MAX = 2, } -pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; -pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; -pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; -pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; -pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; -pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; -pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; -pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; -pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; -pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; -pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; -pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; -pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; -pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; -pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1607,27 +2175,6 @@ IFLA_VF_BROADCAST = 13, __IFLA_VF_MAX = 14, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_mac { -pub vf: __u32, -pub mac: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_broadcast { -pub broadcast: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -} -pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; -pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; -pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1636,43 +2183,6 @@ IFLA_VF_VLAN_INFO = 1, __IFLA_VF_VLAN_INFO_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan_info { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -pub vlan_proto: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_tx_rate { -pub vf: __u32, -pub rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rate { -pub vf: __u32, -pub min_tx_rate: __u32, -pub max_tx_rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_spoofchk { -pub vf: __u32, -pub setting: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_guid { -pub vf: __u32, -pub guid: __u64, -} -pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; -pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; -pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; -pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1682,28 +2192,6 @@ IFLA_VF_LINK_STATE_DISABLE = 2, __IFLA_VF_LINK_STATE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_link_state { -pub vf: __u32, -pub link_state: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rss_query_en { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; -pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; -pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; -pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; -pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; -pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; -pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; -pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; -pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; -pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1719,15 +2207,6 @@ IFLA_VF_STATS_TX_DROPPED = 8, __IFLA_VF_STATS_MAX = 9, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_trust { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; -pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; -pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1736,15 +2215,6 @@ IFLA_VF_PORT = 1, __IFLA_VF_PORT_MAX = 2, } -pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; -pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; -pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; -pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; -pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; -pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; -pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; -pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; -pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1759,10 +2229,6 @@ IFLA_PORT_RESPONSE = 7, __IFLA_PORT_MAX = 8, } -pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; -pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; -pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; -pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1772,19 +2238,6 @@ PORT_REQUEST_ASSOCIATE = 2, PORT_REQUEST_DISASSOCIATE = 3, } -pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; -pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; -pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; -pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; -pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; -pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; -pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; -pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; -pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; -pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; -pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1803,19 +2256,6 @@ PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, PORT_PROFILE_RESPONSE_ERROR = 261, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_port_vsi { -pub vsi_mgr_id: __u8, -pub vsi_type_id: [__u8; 3usize], -pub vsi_type_version: __u8, -pub pad: [__u8; 3usize], -} -pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; -pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; -pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; -pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; -pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1826,8 +2266,6 @@ IFLA_IPOIB_UMCAST = 3, __IFLA_IPOIB_MAX = 4, } -pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; -pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1835,9 +2273,6 @@ IPOIB_MODE_DATAGRAM = 0, IPOIB_MODE_CONNECTED = 1, } -pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; -pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; -pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1846,15 +2281,6 @@ HSR_PROTOCOL_PRP = 1, HSR_PROTOCOL_MAX = 2, } -pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; -pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; -pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; -pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; -pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; -pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; -pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; -pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; -pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1869,22 +2295,6 @@ IFLA_HSR_PROTOCOL = 7, __IFLA_HSR_MAX = 8, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_stats_msg { -pub family: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub ifindex: __u32, -pub filter_mask: __u32, -} -pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; -pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; -pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; -pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; -pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; -pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; -pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1897,10 +2307,6 @@ IFLA_STATS_AF_SPEC = 5, __IFLA_STATS_MAX = 6, } -pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; -pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; -pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1910,10 +2316,6 @@ IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, __IFLA_STATS_GETSET_MAX = 3, } -pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; -pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; -pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; -pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1923,11 +2325,6 @@ LINK_XSTATS_TYPE_BOND = 2, __LINK_XSTATS_TYPE_MAX = 3, } -pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; -pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1938,10 +2335,6 @@ IFLA_OFFLOAD_XSTATS_L3_STATS = 3, __IFLA_OFFLOAD_XSTATS_MAX = 4, } -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; -pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1951,11 +2344,6 @@ IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, } -pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; -pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; -pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; -pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; -pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1966,16 +2354,6 @@ XDP_ATTACHED_HW = 3, XDP_ATTACHED_MULTI = 4, } -pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; -pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; -pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; -pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; -pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; -pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; -pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; -pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; -pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; -pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1991,13 +2369,6 @@ IFLA_XDP_EXPECTED_FD = 8, __IFLA_XDP_MAX = 9, } -pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; -pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; -pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; -pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; -pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; -pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; -pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2010,17 +2381,6 @@ IFLA_EVENT_IGMP_RESEND = 5, IFLA_EVENT_BONDING_OPTIONS = 6, } -pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; -pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; -pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; -pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; -pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; -pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; -pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; -pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; -pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; -pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; -pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2036,11 +2396,7 @@ IFLA_TUN_NUM_QUEUES = 8, IFLA_TUN_NUM_DISABLED_QUEUES = 9, __IFLA_TUN_MAX = 10, -} -pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; -pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; -pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; -pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2050,15 +2406,6 @@ IFLA_RMNET_FLAGS = 2, __IFLA_RMNET_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_rmnet_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; -pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; -pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2067,9 +2414,6 @@ IFLA_MCTP_NET = 1, __IFLA_MCTP_MAX = 2, } -pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; -pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; -pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2078,28 +2422,6 @@ IFLA_DSA_MASTER = 1, __IFLA_DSA_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifaddrmsg { -pub ifa_family: __u8, -pub ifa_prefixlen: __u8, -pub ifa_flags: __u8, -pub ifa_scope: __u8, -pub ifa_index: __u32, -} -pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; -pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; -pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; -pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; -pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; -pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; -pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; -pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; -pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; -pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; -pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; -pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; -pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2118,44 +2440,6 @@ IFA_PROTO = 11, __IFA_MAX = 12, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifa_cacheinfo { -pub ifa_prefered: __u32, -pub ifa_valid: __u32, -pub cstamp: __u32, -pub tstamp: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndmsg { -pub ndm_family: __u8, -pub ndm_pad1: __u8, -pub ndm_pad2: __u16, -pub ndm_ifindex: __s32, -pub ndm_state: __u16, -pub ndm_flags: __u8, -pub ndm_type: __u8, -} -pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; -pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; -pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; -pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; -pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; -pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; -pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; -pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; -pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; -pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; -pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; -pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; -pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; -pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; -pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; -pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; -pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; -pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; -pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2180,50 +2464,6 @@ NDA_NDM_FLAGS_MASK = 17, __NDA_MAX = 18, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nda_cacheinfo { -pub ndm_confirmed: __u32, -pub ndm_used: __u32, -pub ndm_updated: __u32, -pub ndm_refcnt: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_stats { -pub ndts_allocs: __u64, -pub ndts_destroys: __u64, -pub ndts_hash_grows: __u64, -pub ndts_res_failed: __u64, -pub ndts_lookups: __u64, -pub ndts_hits: __u64, -pub ndts_rcv_probes_mcast: __u64, -pub ndts_rcv_probes_ucast: __u64, -pub ndts_periodic_gc_runs: __u64, -pub ndts_forced_gc_runs: __u64, -pub ndts_table_fulls: __u64, -} -pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; -pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; -pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; -pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; -pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; -pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; -pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; -pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; -pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; -pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; -pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; -pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; -pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; -pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; -pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; -pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; -pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; -pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; -pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; -pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; -pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2250,37 +2490,6 @@ NDTPA_INTERVAL_PROBE_TIME_MS = 19, __NDTPA_MAX = 20, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndtmsg { -pub ndtm_family: __u8, -pub ndtm_pad1: __u8, -pub ndtm_pad2: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_config { -pub ndtc_key_len: __u16, -pub ndtc_entry_size: __u16, -pub ndtc_entries: __u32, -pub ndtc_last_flush: __u32, -pub ndtc_last_rand: __u32, -pub ndtc_hash_rnd: __u32, -pub ndtc_hash_mask: __u32, -pub ndtc_hash_chain_gc: __u32, -pub ndtc_proxy_qlen: __u32, -} -pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; -pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; -pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; -pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; -pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; -pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; -pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; -pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; -pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; -pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; -pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2297,8 +2506,6 @@ NDTA_PAD = 9, __NDTA_MAX = 10, } -pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; -pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2306,10 +2513,6 @@ FDB_NOTIFY_BIT = 1, FDB_NOTIFY_INACTIVE_BIT = 2, } -pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; -pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; -pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; -pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2319,79 +2522,6 @@ NFEA_DONT_REFRESH = 2, __NFEA_MAX = 3, } -pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; -pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; -pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; -pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; -pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; -pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; -pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; -pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; -pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; -pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; -pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; -pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; -pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; -pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; -pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; -pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; -pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; -pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; -pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; -pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; -pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; -pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; -pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; -pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; -pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; -pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; -pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; -pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; -pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; -pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; -pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; -pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; -pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; -pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; -pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; -pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; -pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; -pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; -pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; -pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; -pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; -pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; -pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; -pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; -pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; -pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; -pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; -pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; -pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; -pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; -pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; -pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; -pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; -pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; -pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; -pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; -pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; -pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; -pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; -pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; -pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; -pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; -pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; -pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; -pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; -pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; -pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; -pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; -pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; -pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; -pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2458,49 +2588,17 @@ RTM_NEWLINKPROP = 108, RTM_DELLINKPROP = 109, RTM_GETLINKPROP = 110, -RTM_NEWVLAN = 112, -RTM_DELVLAN = 113, -RTM_GETVLAN = 114, -RTM_NEWNEXTHOPBUCKET = 116, -RTM_DELNEXTHOPBUCKET = 117, -RTM_GETNEXTHOPBUCKET = 118, -RTM_NEWTUNNEL = 120, -RTM_DELTUNNEL = 121, -RTM_GETTUNNEL = 122, -__RTM_MAX = 123, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtattr { -pub rta_len: crate::ctypes::c_ushort, -pub rta_type: crate::ctypes::c_ushort, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtmsg { -pub rtm_family: crate::ctypes::c_uchar, -pub rtm_dst_len: crate::ctypes::c_uchar, -pub rtm_src_len: crate::ctypes::c_uchar, -pub rtm_tos: crate::ctypes::c_uchar, -pub rtm_table: crate::ctypes::c_uchar, -pub rtm_protocol: crate::ctypes::c_uchar, -pub rtm_scope: crate::ctypes::c_uchar, -pub rtm_type: crate::ctypes::c_uchar, -pub rtm_flags: crate::ctypes::c_uint, +RTM_NEWVLAN = 112, +RTM_DELVLAN = 113, +RTM_GETVLAN = 114, +RTM_NEWNEXTHOPBUCKET = 116, +RTM_DELNEXTHOPBUCKET = 117, +RTM_GETNEXTHOPBUCKET = 118, +RTM_NEWTUNNEL = 120, +RTM_DELTUNNEL = 121, +RTM_GETTUNNEL = 122, +__RTM_MAX = 123, } -pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; -pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; -pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; -pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; -pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; -pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; -pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; -pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; -pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; -pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; -pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; -pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; -pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2577,51 +2675,6 @@ RTA_NH_ID = 30, __RTA_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnexthop { -pub rtnh_len: crate::ctypes::c_ushort, -pub rtnh_flags: crate::ctypes::c_uchar, -pub rtnh_hops: crate::ctypes::c_uchar, -pub rtnh_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug)] -pub struct rtvia { -pub rtvia_family: __kernel_sa_family_t, -pub rtvia_addr: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_cacheinfo { -pub rta_clntref: __u32, -pub rta_lastuse: __u32, -pub rta_expires: __s32, -pub rta_error: __u32, -pub rta_used: __u32, -pub rta_id: __u32, -pub rta_ts: __u32, -pub rta_tsage: __u32, -} -pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; -pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; -pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; -pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; -pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; -pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; -pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; -pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; -pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; -pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; -pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; -pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; -pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; -pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; -pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; -pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; -pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; -pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; -pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2646,72 +2699,6 @@ RTAX_FASTOPEN_NO_COOKIE = 17, __RTAX_MAX = 18, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rta_session { -pub proto: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub u: rta_session__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union rta_session__bindgen_ty_1 { -pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, -pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, -pub spi: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { -pub sport: __u16, -pub dport: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { -pub type_: __u8, -pub code: __u8, -pub ident: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_mfc_stats { -pub mfcs_packets: __u64, -pub mfcs_bytes: __u64, -pub mfcs_wrong_if: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtgenmsg { -pub rtgen_family: crate::ctypes::c_uchar, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifinfomsg { -pub ifi_family: crate::ctypes::c_uchar, -pub __ifi_pad: crate::ctypes::c_uchar, -pub ifi_type: crate::ctypes::c_ushort, -pub ifi_index: crate::ctypes::c_int, -pub ifi_flags: crate::ctypes::c_uint, -pub ifi_change: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefixmsg { -pub prefix_family: crate::ctypes::c_uchar, -pub prefix_pad1: crate::ctypes::c_uchar, -pub prefix_pad2: crate::ctypes::c_ushort, -pub prefix_ifindex: crate::ctypes::c_int, -pub prefix_type: crate::ctypes::c_uchar, -pub prefix_len: crate::ctypes::c_uchar, -pub prefix_flags: crate::ctypes::c_uchar, -pub prefix_pad3: crate::ctypes::c_uchar, -} -pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; -pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; -pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; -pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2721,41 +2708,6 @@ PREFIX_CACHEINFO = 2, __PREFIX_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefix_cacheinfo { -pub preferred_time: __u32, -pub valid_time: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcmsg { -pub tcm_family: crate::ctypes::c_uchar, -pub tcm__pad1: crate::ctypes::c_uchar, -pub tcm__pad2: crate::ctypes::c_ushort, -pub tcm_ifindex: crate::ctypes::c_int, -pub tcm_handle: __u32, -pub tcm_parent: __u32, -pub tcm_info: __u32, -} -pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; -pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; -pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; -pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; -pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; -pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; -pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; -pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; -pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; -pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; -pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; -pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; -pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; -pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; -pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; -pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; -pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; -pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2779,21 +2731,6 @@ TCA_EXT_WARN_MSG = 16, __TCA_MAX = 17, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nduseroptmsg { -pub nduseropt_family: crate::ctypes::c_uchar, -pub nduseropt_pad1: crate::ctypes::c_uchar, -pub nduseropt_opts_len: crate::ctypes::c_ushort, -pub nduseropt_ifindex: crate::ctypes::c_int, -pub nduseropt_icmp_type: __u8, -pub nduseropt_icmp_code: __u8, -pub nduseropt_pad2: crate::ctypes::c_ushort, -pub nduseropt_pad3: crate::ctypes::c_uint, -} -pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; -pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; -pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2845,20 +2782,6 @@ RTNLGRP_STATS = 36, __RTNLGRP_MAX = 37, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcamsg { -pub tca_family: crate::ctypes::c_uchar, -pub tca__pad1: crate::ctypes::c_uchar, -pub tca__pad2: crate::ctypes::c_ushort, -} -pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; -pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; -pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; -pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; -pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; -pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; -pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2871,3 +2794,61 @@ TCA_ROOT_EXT_WARN_MSG = 5, __TCA_ROOT_MAX = 6, } +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union rta_session__bindgen_ty_1 { +pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, +pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, +pub spi: __u32, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl nlmsgerr_attrs { +pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +} +impl netlink_policy_type_attr { +pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; +} +impl macsec_validation_type { +pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; +} +impl macsec_offload { +pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; +} +impl ifla_vxlan_df { +pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; +} +impl ifla_geneve_df { +pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x86/net.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x86/net.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x86/net.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x86/net.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1836 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type socklen_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_addr { +pub s_addr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq { +pub imr_multiaddr: in_addr, +pub imr_interface: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreqn { +pub imr_multiaddr: in_addr, +pub imr_address: in_addr, +pub imr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq_source { +pub imr_multiaddr: __be32, +pub imr_interface: __be32, +pub imr_sourceaddr: __be32, +} +#[repr(C)] +pub struct ip_msfilter { +pub imsf_multiaddr: __be32, +pub imsf_interface: __be32, +pub imsf_fmode: __u32, +pub imsf_numsrc: __u32, +pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, +} +#[repr(C)] +pub struct ip_msfilter__bindgen_ty_1 { +pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, +pub __bindgen_anon_1: __BindgenUnionField, +pub bindgen_union_field: u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { +pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub imsf_slist_flex: __IncompleteArrayField<__be32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_req { +pub gr_interface: __u32, +pub gr_group: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_source_req { +pub gsr_interface: __u32, +pub gsr_group: __kernel_sockaddr_storage, +pub gsr_source: __kernel_sockaddr_storage, +} +#[repr(C)] +pub struct group_filter { +pub __bindgen_anon_1: group_filter__bindgen_ty_1, +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u32; 67usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { +pub gf_interface_aux: __u32, +pub gf_group_aux: __kernel_sockaddr_storage, +pub gf_fmode_aux: __u32, +pub gf_numsrc_aux: __u32, +pub gf_slist: [__kernel_sockaddr_storage; 1usize], +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { +pub gf_interface: __u32, +pub gf_group: __kernel_sockaddr_storage, +pub gf_fmode: __u32, +pub gf_numsrc: __u32, +pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_pktinfo { +pub ipi_ifindex: crate::ctypes::c_int, +pub ipi_spec_dst: in_addr, +pub ipi_addr: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_in { +pub sin_family: __kernel_sa_family_t, +pub sin_port: __be16, +pub sin_addr: in_addr, +pub __pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct iphdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub tos: __u8, +pub tot_len: __be16, +pub id: __be16, +pub frag_off: __be16, +pub ttl: __u8, +pub protocol: __u8, +pub check: __sum16, +pub __bindgen_anon_1: iphdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_auth_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub reserved: __be16, +pub spi: __be32, +pub seq_no: __be32, +pub auth_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_esp_hdr { +pub spi: __be32, +pub seq_no: __be32, +pub enc_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_comp_hdr { +pub nexthdr: __u8, +pub flags: __u8, +pub cpi: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_beet_phdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub padlen: __u8, +pub reserved: __u8, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_addr { +pub in6_u: in6_addr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr_in6 { +pub sin6_family: crate::ctypes::c_ushort, +pub sin6_port: __be16, +pub sin6_flowinfo: __be32, +pub sin6_addr: in6_addr, +pub sin6_scope_id: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6_mreq { +pub ipv6mr_multiaddr: in6_addr, +pub ipv6mr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_flowlabel_req { +pub flr_dst: in6_addr, +pub flr_label: __be32, +pub flr_action: __u8, +pub flr_share: __u8, +pub flr_flags: __u16, +pub flr_expires: __u16, +pub flr_linger: __u16, +pub __flr_pad: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_pktinfo { +pub ipi6_addr: in6_addr, +pub ipi6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ip6_mtuinfo { +pub ip6m_addr: sockaddr_in6, +pub ip6m_mtu: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_ifreq { +pub ifr6_addr: in6_addr, +pub ifr6_prefixlen: __u32, +pub ifr6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_rt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub type_: __u8, +pub segments_left: __u8, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_opt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +} +#[repr(C)] +pub struct rt0_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rt2_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: in6_addr, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct ipv6_destopt_hao { +pub type_: __u8, +pub length: __u8, +pub addr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub flow_lbl: [__u8; 3usize], +pub payload_len: __be16, +pub nexthdr: __u8, +pub hop_limit: __u8, +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcphdr { +pub source: __be16, +pub dest: __be16, +pub seq: __be32, +pub ack_seq: __be32, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub window: __be16, +pub check: __sum16, +pub urg_ptr: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_opt { +pub opt_code: __u32, +pub opt_val: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_window { +pub snd_wl1: __u32, +pub snd_wnd: __u32, +pub max_window: __u32, +pub rcv_wnd: __u32, +pub rcv_wup: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_info { +pub tcpi_state: __u8, +pub tcpi_ca_state: __u8, +pub tcpi_retransmits: __u8, +pub tcpi_probes: __u8, +pub tcpi_backoff: __u8, +pub tcpi_options: __u8, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub tcpi_rto: __u32, +pub tcpi_ato: __u32, +pub tcpi_snd_mss: __u32, +pub tcpi_rcv_mss: __u32, +pub tcpi_unacked: __u32, +pub tcpi_sacked: __u32, +pub tcpi_lost: __u32, +pub tcpi_retrans: __u32, +pub tcpi_fackets: __u32, +pub tcpi_last_data_sent: __u32, +pub tcpi_last_ack_sent: __u32, +pub tcpi_last_data_recv: __u32, +pub tcpi_last_ack_recv: __u32, +pub tcpi_pmtu: __u32, +pub tcpi_rcv_ssthresh: __u32, +pub tcpi_rtt: __u32, +pub tcpi_rttvar: __u32, +pub tcpi_snd_ssthresh: __u32, +pub tcpi_snd_cwnd: __u32, +pub tcpi_advmss: __u32, +pub tcpi_reordering: __u32, +pub tcpi_rcv_rtt: __u32, +pub tcpi_rcv_space: __u32, +pub tcpi_total_retrans: __u32, +pub tcpi_pacing_rate: __u64, +pub tcpi_max_pacing_rate: __u64, +pub tcpi_bytes_acked: __u64, +pub tcpi_bytes_received: __u64, +pub tcpi_segs_out: __u32, +pub tcpi_segs_in: __u32, +pub tcpi_notsent_bytes: __u32, +pub tcpi_min_rtt: __u32, +pub tcpi_data_segs_in: __u32, +pub tcpi_data_segs_out: __u32, +pub tcpi_delivery_rate: __u64, +pub tcpi_busy_time: __u64, +pub tcpi_rwnd_limited: __u64, +pub tcpi_sndbuf_limited: __u64, +pub tcpi_delivered: __u32, +pub tcpi_delivered_ce: __u32, +pub tcpi_bytes_sent: __u64, +pub tcpi_bytes_retrans: __u64, +pub tcpi_dsack_dups: __u32, +pub tcpi_reord_seen: __u32, +pub tcpi_rcv_ooopack: __u32, +pub tcpi_snd_wnd: __u32, +pub tcpi_rcv_wnd: __u32, +pub tcpi_rehash: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct tcp_md5sig { +pub tcpm_addr: __kernel_sockaddr_storage, +pub tcpm_flags: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_ifindex: crate::ctypes::c_int, +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_diag_md5sig { +pub tcpm_family: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_addr: [__be32; 4usize], +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_zerocopy_receive { +pub address: __u64, +pub length: __u32, +pub recv_skip_hint: __u32, +pub inq: __u32, +pub err: __s32, +pub copybuf_address: __u64, +pub copybuf_len: __s32, +pub flags: __u32, +pub msg_control: __u64, +pub msg_controllen: __u64, +pub msg_flags: __u32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_un { +pub sun_family: __kernel_sa_family_t, +pub sun_path: [crate::ctypes::c_char; 108usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr { +pub __storage: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct linger { +pub l_onoff: crate::ctypes::c_int, +pub l_linger: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct msghdr { +pub msg_name: *mut crate::ctypes::c_void, +pub msg_namelen: crate::ctypes::c_int, +pub msg_iov: *mut iovec, +pub msg_iovlen: usize, +pub msg_control: *mut crate::ctypes::c_void, +pub msg_controllen: usize, +pub msg_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct cmsghdr { +pub cmsg_len: usize, +pub cmsg_level: crate::ctypes::c_int, +pub cmsg_type: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ucred { +pub pid: __u32, +pub uid: __u32, +pub gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mmsghdr { +pub msg_hdr: msghdr, +pub msg_len: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub _address: u8, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const IP_TOS: u32 = 1; +pub const IP_TTL: u32 = 2; +pub const IP_HDRINCL: u32 = 3; +pub const IP_OPTIONS: u32 = 4; +pub const IP_ROUTER_ALERT: u32 = 5; +pub const IP_RECVOPTS: u32 = 6; +pub const IP_RETOPTS: u32 = 7; +pub const IP_PKTINFO: u32 = 8; +pub const IP_PKTOPTIONS: u32 = 9; +pub const IP_MTU_DISCOVER: u32 = 10; +pub const IP_RECVERR: u32 = 11; +pub const IP_RECVTTL: u32 = 12; +pub const IP_RECVTOS: u32 = 13; +pub const IP_MTU: u32 = 14; +pub const IP_FREEBIND: u32 = 15; +pub const IP_IPSEC_POLICY: u32 = 16; +pub const IP_XFRM_POLICY: u32 = 17; +pub const IP_PASSSEC: u32 = 18; +pub const IP_TRANSPARENT: u32 = 19; +pub const IP_RECVRETOPTS: u32 = 7; +pub const IP_ORIGDSTADDR: u32 = 20; +pub const IP_RECVORIGDSTADDR: u32 = 20; +pub const IP_MINTTL: u32 = 21; +pub const IP_NODEFRAG: u32 = 22; +pub const IP_CHECKSUM: u32 = 23; +pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; +pub const IP_RECVFRAGSIZE: u32 = 25; +pub const IP_RECVERR_RFC4884: u32 = 26; +pub const IP_PMTUDISC_DONT: u32 = 0; +pub const IP_PMTUDISC_WANT: u32 = 1; +pub const IP_PMTUDISC_DO: u32 = 2; +pub const IP_PMTUDISC_PROBE: u32 = 3; +pub const IP_PMTUDISC_INTERFACE: u32 = 4; +pub const IP_PMTUDISC_OMIT: u32 = 5; +pub const IP_MULTICAST_IF: u32 = 32; +pub const IP_MULTICAST_TTL: u32 = 33; +pub const IP_MULTICAST_LOOP: u32 = 34; +pub const IP_ADD_MEMBERSHIP: u32 = 35; +pub const IP_DROP_MEMBERSHIP: u32 = 36; +pub const IP_UNBLOCK_SOURCE: u32 = 37; +pub const IP_BLOCK_SOURCE: u32 = 38; +pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; +pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; +pub const IP_MSFILTER: u32 = 41; +pub const MCAST_JOIN_GROUP: u32 = 42; +pub const MCAST_BLOCK_SOURCE: u32 = 43; +pub const MCAST_UNBLOCK_SOURCE: u32 = 44; +pub const MCAST_LEAVE_GROUP: u32 = 45; +pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; +pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; +pub const MCAST_MSFILTER: u32 = 48; +pub const IP_MULTICAST_ALL: u32 = 49; +pub const IP_UNICAST_IF: u32 = 50; +pub const IP_LOCAL_PORT_RANGE: u32 = 51; +pub const MCAST_EXCLUDE: u32 = 0; +pub const MCAST_INCLUDE: u32 = 1; +pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; +pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; +pub const __SOCK_SIZE__: u32 = 16; +pub const IN_CLASSA_NET: u32 = 4278190080; +pub const IN_CLASSA_NSHIFT: u32 = 24; +pub const IN_CLASSA_HOST: u32 = 16777215; +pub const IN_CLASSA_MAX: u32 = 128; +pub const IN_CLASSB_NET: u32 = 4294901760; +pub const IN_CLASSB_NSHIFT: u32 = 16; +pub const IN_CLASSB_HOST: u32 = 65535; +pub const IN_CLASSB_MAX: u32 = 65536; +pub const IN_CLASSC_NET: u32 = 4294967040; +pub const IN_CLASSC_NSHIFT: u32 = 8; +pub const IN_CLASSC_HOST: u32 = 255; +pub const IN_MULTICAST_NET: u32 = 3758096384; +pub const IN_CLASSE_NET: u32 = 4294967295; +pub const IN_CLASSE_NSHIFT: u32 = 0; +pub const IN_LOOPBACKNET: u32 = 127; +pub const INADDR_LOOPBACK: u32 = 2130706433; +pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; +pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; +pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; +pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; +pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; +pub const __LITTLE_ENDIAN: u32 = 1234; +pub const IPTOS_TOS_MASK: u32 = 30; +pub const IPTOS_LOWDELAY: u32 = 16; +pub const IPTOS_THROUGHPUT: u32 = 8; +pub const IPTOS_RELIABILITY: u32 = 4; +pub const IPTOS_MINCOST: u32 = 2; +pub const IPTOS_PREC_MASK: u32 = 224; +pub const IPTOS_PREC_NETCONTROL: u32 = 224; +pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; +pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; +pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; +pub const IPTOS_PREC_FLASH: u32 = 96; +pub const IPTOS_PREC_IMMEDIATE: u32 = 64; +pub const IPTOS_PREC_PRIORITY: u32 = 32; +pub const IPTOS_PREC_ROUTINE: u32 = 0; +pub const IPOPT_COPY: u32 = 128; +pub const IPOPT_CLASS_MASK: u32 = 96; +pub const IPOPT_NUMBER_MASK: u32 = 31; +pub const IPOPT_CONTROL: u32 = 0; +pub const IPOPT_RESERVED1: u32 = 32; +pub const IPOPT_MEASUREMENT: u32 = 64; +pub const IPOPT_RESERVED2: u32 = 96; +pub const IPOPT_END: u32 = 0; +pub const IPOPT_NOOP: u32 = 1; +pub const IPOPT_SEC: u32 = 130; +pub const IPOPT_LSRR: u32 = 131; +pub const IPOPT_TIMESTAMP: u32 = 68; +pub const IPOPT_CIPSO: u32 = 134; +pub const IPOPT_RR: u32 = 7; +pub const IPOPT_SID: u32 = 136; +pub const IPOPT_SSRR: u32 = 137; +pub const IPOPT_RA: u32 = 148; +pub const IPVERSION: u32 = 4; +pub const MAXTTL: u32 = 255; +pub const IPDEFTTL: u32 = 64; +pub const IPOPT_OPTVAL: u32 = 0; +pub const IPOPT_OLEN: u32 = 1; +pub const IPOPT_OFFSET: u32 = 2; +pub const IPOPT_MINOFF: u32 = 4; +pub const MAX_IPOPTLEN: u32 = 40; +pub const IPOPT_NOP: u32 = 1; +pub const IPOPT_EOL: u32 = 0; +pub const IPOPT_TS: u32 = 68; +pub const IPOPT_TS_TSONLY: u32 = 0; +pub const IPOPT_TS_TSANDADDR: u32 = 1; +pub const IPOPT_TS_PRESPEC: u32 = 3; +pub const IPV4_BEET_PHMAXLEN: u32 = 8; +pub const IPV6_FL_A_GET: u32 = 0; +pub const IPV6_FL_A_PUT: u32 = 1; +pub const IPV6_FL_A_RENEW: u32 = 2; +pub const IPV6_FL_F_CREATE: u32 = 1; +pub const IPV6_FL_F_EXCL: u32 = 2; +pub const IPV6_FL_F_REFLECT: u32 = 4; +pub const IPV6_FL_F_REMOTE: u32 = 8; +pub const IPV6_FL_S_NONE: u32 = 0; +pub const IPV6_FL_S_EXCL: u32 = 1; +pub const IPV6_FL_S_PROCESS: u32 = 2; +pub const IPV6_FL_S_USER: u32 = 3; +pub const IPV6_FL_S_ANY: u32 = 255; +pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; +pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; +pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; +pub const IPV6_PRIORITY_FILLER: u32 = 256; +pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; +pub const IPV6_PRIORITY_RESERVED1: u32 = 768; +pub const IPV6_PRIORITY_BULK: u32 = 1024; +pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; +pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; +pub const IPV6_PRIORITY_CONTROL: u32 = 1792; +pub const IPV6_PRIORITY_8: u32 = 2048; +pub const IPV6_PRIORITY_9: u32 = 2304; +pub const IPV6_PRIORITY_10: u32 = 2560; +pub const IPV6_PRIORITY_11: u32 = 2816; +pub const IPV6_PRIORITY_12: u32 = 3072; +pub const IPV6_PRIORITY_13: u32 = 3328; +pub const IPV6_PRIORITY_14: u32 = 3584; +pub const IPV6_PRIORITY_15: u32 = 3840; +pub const IPPROTO_HOPOPTS: u32 = 0; +pub const IPPROTO_ROUTING: u32 = 43; +pub const IPPROTO_FRAGMENT: u32 = 44; +pub const IPPROTO_ICMPV6: u32 = 58; +pub const IPPROTO_NONE: u32 = 59; +pub const IPPROTO_DSTOPTS: u32 = 60; +pub const IPPROTO_MH: u32 = 135; +pub const IPV6_TLV_PAD1: u32 = 0; +pub const IPV6_TLV_PADN: u32 = 1; +pub const IPV6_TLV_ROUTERALERT: u32 = 5; +pub const IPV6_TLV_CALIPSO: u32 = 7; +pub const IPV6_TLV_IOAM: u32 = 49; +pub const IPV6_TLV_JUMBO: u32 = 194; +pub const IPV6_TLV_HAO: u32 = 201; +pub const IPV6_ADDRFORM: u32 = 1; +pub const IPV6_2292PKTINFO: u32 = 2; +pub const IPV6_2292HOPOPTS: u32 = 3; +pub const IPV6_2292DSTOPTS: u32 = 4; +pub const IPV6_2292RTHDR: u32 = 5; +pub const IPV6_2292PKTOPTIONS: u32 = 6; +pub const IPV6_CHECKSUM: u32 = 7; +pub const IPV6_2292HOPLIMIT: u32 = 8; +pub const IPV6_NEXTHOP: u32 = 9; +pub const IPV6_AUTHHDR: u32 = 10; +pub const IPV6_FLOWINFO: u32 = 11; +pub const IPV6_UNICAST_HOPS: u32 = 16; +pub const IPV6_MULTICAST_IF: u32 = 17; +pub const IPV6_MULTICAST_HOPS: u32 = 18; +pub const IPV6_MULTICAST_LOOP: u32 = 19; +pub const IPV6_ADD_MEMBERSHIP: u32 = 20; +pub const IPV6_DROP_MEMBERSHIP: u32 = 21; +pub const IPV6_ROUTER_ALERT: u32 = 22; +pub const IPV6_MTU_DISCOVER: u32 = 23; +pub const IPV6_MTU: u32 = 24; +pub const IPV6_RECVERR: u32 = 25; +pub const IPV6_V6ONLY: u32 = 26; +pub const IPV6_JOIN_ANYCAST: u32 = 27; +pub const IPV6_LEAVE_ANYCAST: u32 = 28; +pub const IPV6_MULTICAST_ALL: u32 = 29; +pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; +pub const IPV6_RECVERR_RFC4884: u32 = 31; +pub const IPV6_PMTUDISC_DONT: u32 = 0; +pub const IPV6_PMTUDISC_WANT: u32 = 1; +pub const IPV6_PMTUDISC_DO: u32 = 2; +pub const IPV6_PMTUDISC_PROBE: u32 = 3; +pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; +pub const IPV6_PMTUDISC_OMIT: u32 = 5; +pub const IPV6_FLOWLABEL_MGR: u32 = 32; +pub const IPV6_FLOWINFO_SEND: u32 = 33; +pub const IPV6_IPSEC_POLICY: u32 = 34; +pub const IPV6_XFRM_POLICY: u32 = 35; +pub const IPV6_HDRINCL: u32 = 36; +pub const IPV6_RECVPKTINFO: u32 = 49; +pub const IPV6_PKTINFO: u32 = 50; +pub const IPV6_RECVHOPLIMIT: u32 = 51; +pub const IPV6_HOPLIMIT: u32 = 52; +pub const IPV6_RECVHOPOPTS: u32 = 53; +pub const IPV6_HOPOPTS: u32 = 54; +pub const IPV6_RTHDRDSTOPTS: u32 = 55; +pub const IPV6_RECVRTHDR: u32 = 56; +pub const IPV6_RTHDR: u32 = 57; +pub const IPV6_RECVDSTOPTS: u32 = 58; +pub const IPV6_DSTOPTS: u32 = 59; +pub const IPV6_RECVPATHMTU: u32 = 60; +pub const IPV6_PATHMTU: u32 = 61; +pub const IPV6_DONTFRAG: u32 = 62; +pub const IPV6_RECVTCLASS: u32 = 66; +pub const IPV6_TCLASS: u32 = 67; +pub const IPV6_AUTOFLOWLABEL: u32 = 70; +pub const IPV6_ADDR_PREFERENCES: u32 = 72; +pub const IPV6_PREFER_SRC_TMP: u32 = 1; +pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; +pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; +pub const IPV6_PREFER_SRC_COA: u32 = 4; +pub const IPV6_PREFER_SRC_HOME: u32 = 1024; +pub const IPV6_PREFER_SRC_CGA: u32 = 8; +pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; +pub const IPV6_MINHOPCOUNT: u32 = 73; +pub const IPV6_ORIGDSTADDR: u32 = 74; +pub const IPV6_RECVORIGDSTADDR: u32 = 74; +pub const IPV6_TRANSPARENT: u32 = 75; +pub const IPV6_UNICAST_IF: u32 = 76; +pub const IPV6_RECVFRAGSIZE: u32 = 77; +pub const IPV6_FREEBIND: u32 = 78; +pub const IPV6_MIN_MTU: u32 = 1280; +pub const IPV6_SRCRT_STRICT: u32 = 1; +pub const IPV6_SRCRT_TYPE_0: u32 = 0; +pub const IPV6_SRCRT_TYPE_2: u32 = 2; +pub const IPV6_SRCRT_TYPE_3: u32 = 3; +pub const IPV6_SRCRT_TYPE_4: u32 = 4; +pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; +pub const SIOCGSTAMP_OLD: u32 = 35078; +pub const SIOCGSTAMPNS_OLD: u32 = 35079; +pub const SOL_SOCKET: u32 = 1; +pub const SO_DEBUG: u32 = 1; +pub const SO_REUSEADDR: u32 = 2; +pub const SO_TYPE: u32 = 3; +pub const SO_ERROR: u32 = 4; +pub const SO_DONTROUTE: u32 = 5; +pub const SO_BROADCAST: u32 = 6; +pub const SO_SNDBUF: u32 = 7; +pub const SO_RCVBUF: u32 = 8; +pub const SO_SNDBUFFORCE: u32 = 32; +pub const SO_RCVBUFFORCE: u32 = 33; +pub const SO_KEEPALIVE: u32 = 9; +pub const SO_OOBINLINE: u32 = 10; +pub const SO_NO_CHECK: u32 = 11; +pub const SO_PRIORITY: u32 = 12; +pub const SO_LINGER: u32 = 13; +pub const SO_BSDCOMPAT: u32 = 14; +pub const SO_REUSEPORT: u32 = 15; +pub const SO_PASSCRED: u32 = 16; +pub const SO_PEERCRED: u32 = 17; +pub const SO_RCVLOWAT: u32 = 18; +pub const SO_SNDLOWAT: u32 = 19; +pub const SO_RCVTIMEO_OLD: u32 = 20; +pub const SO_SNDTIMEO_OLD: u32 = 21; +pub const SO_SECURITY_AUTHENTICATION: u32 = 22; +pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; +pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; +pub const SO_BINDTODEVICE: u32 = 25; +pub const SO_ATTACH_FILTER: u32 = 26; +pub const SO_DETACH_FILTER: u32 = 27; +pub const SO_GET_FILTER: u32 = 26; +pub const SO_PEERNAME: u32 = 28; +pub const SO_ACCEPTCONN: u32 = 30; +pub const SO_PEERSEC: u32 = 31; +pub const SO_PASSSEC: u32 = 34; +pub const SO_MARK: u32 = 36; +pub const SO_PROTOCOL: u32 = 38; +pub const SO_DOMAIN: u32 = 39; +pub const SO_RXQ_OVFL: u32 = 40; +pub const SO_WIFI_STATUS: u32 = 41; +pub const SCM_WIFI_STATUS: u32 = 41; +pub const SO_PEEK_OFF: u32 = 42; +pub const SO_NOFCS: u32 = 43; +pub const SO_LOCK_FILTER: u32 = 44; +pub const SO_SELECT_ERR_QUEUE: u32 = 45; +pub const SO_BUSY_POLL: u32 = 46; +pub const SO_MAX_PACING_RATE: u32 = 47; +pub const SO_BPF_EXTENSIONS: u32 = 48; +pub const SO_INCOMING_CPU: u32 = 49; +pub const SO_ATTACH_BPF: u32 = 50; +pub const SO_DETACH_BPF: u32 = 27; +pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; +pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; +pub const SO_CNX_ADVICE: u32 = 53; +pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; +pub const SO_MEMINFO: u32 = 55; +pub const SO_INCOMING_NAPI_ID: u32 = 56; +pub const SO_COOKIE: u32 = 57; +pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; +pub const SO_PEERGROUPS: u32 = 59; +pub const SO_ZEROCOPY: u32 = 60; +pub const SO_TXTIME: u32 = 61; +pub const SCM_TXTIME: u32 = 61; +pub const SO_BINDTOIFINDEX: u32 = 62; +pub const SO_TIMESTAMP_OLD: u32 = 29; +pub const SO_TIMESTAMPNS_OLD: u32 = 35; +pub const SO_TIMESTAMPING_OLD: u32 = 37; +pub const SO_TIMESTAMP_NEW: u32 = 63; +pub const SO_TIMESTAMPNS_NEW: u32 = 64; +pub const SO_TIMESTAMPING_NEW: u32 = 65; +pub const SO_RCVTIMEO_NEW: u32 = 66; +pub const SO_SNDTIMEO_NEW: u32 = 67; +pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; +pub const SO_PREFER_BUSY_POLL: u32 = 69; +pub const SO_BUSY_POLL_BUDGET: u32 = 70; +pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; +pub const SO_TXREHASH: u32 = 74; +pub const SO_RCVMARK: u32 = 75; +pub const SYS_SOCKET: u32 = 1; +pub const SYS_BIND: u32 = 2; +pub const SYS_CONNECT: u32 = 3; +pub const SYS_LISTEN: u32 = 4; +pub const SYS_ACCEPT: u32 = 5; +pub const SYS_GETSOCKNAME: u32 = 6; +pub const SYS_GETPEERNAME: u32 = 7; +pub const SYS_SOCKETPAIR: u32 = 8; +pub const SYS_SEND: u32 = 9; +pub const SYS_RECV: u32 = 10; +pub const SYS_SENDTO: u32 = 11; +pub const SYS_RECVFROM: u32 = 12; +pub const SYS_SHUTDOWN: u32 = 13; +pub const SYS_SETSOCKOPT: u32 = 14; +pub const SYS_GETSOCKOPT: u32 = 15; +pub const SYS_SENDMSG: u32 = 16; +pub const SYS_RECVMSG: u32 = 17; +pub const SYS_ACCEPT4: u32 = 18; +pub const SYS_RECVMMSG: u32 = 19; +pub const SYS_SENDMMSG: u32 = 20; +pub const __SO_ACCEPTCON: u32 = 65536; +pub const TCP_MSS_DEFAULT: u32 = 536; +pub const TCP_MSS_DESIRED: u32 = 1220; +pub const TCP_NODELAY: u32 = 1; +pub const TCP_MAXSEG: u32 = 2; +pub const TCP_CORK: u32 = 3; +pub const TCP_KEEPIDLE: u32 = 4; +pub const TCP_KEEPINTVL: u32 = 5; +pub const TCP_KEEPCNT: u32 = 6; +pub const TCP_SYNCNT: u32 = 7; +pub const TCP_LINGER2: u32 = 8; +pub const TCP_DEFER_ACCEPT: u32 = 9; +pub const TCP_WINDOW_CLAMP: u32 = 10; +pub const TCP_INFO: u32 = 11; +pub const TCP_QUICKACK: u32 = 12; +pub const TCP_CONGESTION: u32 = 13; +pub const TCP_MD5SIG: u32 = 14; +pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; +pub const TCP_THIN_DUPACK: u32 = 17; +pub const TCP_USER_TIMEOUT: u32 = 18; +pub const TCP_REPAIR: u32 = 19; +pub const TCP_REPAIR_QUEUE: u32 = 20; +pub const TCP_QUEUE_SEQ: u32 = 21; +pub const TCP_REPAIR_OPTIONS: u32 = 22; +pub const TCP_FASTOPEN: u32 = 23; +pub const TCP_TIMESTAMP: u32 = 24; +pub const TCP_NOTSENT_LOWAT: u32 = 25; +pub const TCP_CC_INFO: u32 = 26; +pub const TCP_SAVE_SYN: u32 = 27; +pub const TCP_SAVED_SYN: u32 = 28; +pub const TCP_REPAIR_WINDOW: u32 = 29; +pub const TCP_FASTOPEN_CONNECT: u32 = 30; +pub const TCP_ULP: u32 = 31; +pub const TCP_MD5SIG_EXT: u32 = 32; +pub const TCP_FASTOPEN_KEY: u32 = 33; +pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; +pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; +pub const TCP_INQ: u32 = 36; +pub const TCP_CM_INQ: u32 = 36; +pub const TCP_TX_DELAY: u32 = 37; +pub const TCP_REPAIR_ON: u32 = 1; +pub const TCP_REPAIR_OFF: u32 = 0; +pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; +pub const TCPI_OPT_TIMESTAMPS: u32 = 1; +pub const TCPI_OPT_SACK: u32 = 2; +pub const TCPI_OPT_WSCALE: u32 = 4; +pub const TCPI_OPT_ECN: u32 = 8; +pub const TCPI_OPT_ECN_SEEN: u32 = 16; +pub const TCPI_OPT_SYN_DATA: u32 = 32; +pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; +pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; +pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; +pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; +pub const UNIX_PATH_MAX: u32 = 108; +pub const SHUT_RD: u32 = 0; +pub const SHUT_WR: u32 = 1; +pub const SHUT_RDWR: u32 = 2; +pub const SOCK_STREAM: u32 = 1; +pub const SOCK_DGRAM: u32 = 2; +pub const SOCK_RAW: u32 = 3; +pub const SOCK_RDM: u32 = 4; +pub const SOCK_SEQPACKET: u32 = 5; +pub const MSG_DONTWAIT: u32 = 64; +pub const AF_UNSPEC: u32 = 0; +pub const AF_UNIX: u32 = 1; +pub const AF_INET: u32 = 2; +pub const AF_AX25: u32 = 3; +pub const AF_IPX: u32 = 4; +pub const AF_APPLETALK: u32 = 5; +pub const AF_NETROM: u32 = 6; +pub const AF_BRIDGE: u32 = 7; +pub const AF_ATMPVC: u32 = 8; +pub const AF_X25: u32 = 9; +pub const AF_INET6: u32 = 10; +pub const AF_ROSE: u32 = 11; +pub const AF_DECnet: u32 = 12; +pub const AF_NETBEUI: u32 = 13; +pub const AF_SECURITY: u32 = 14; +pub const AF_KEY: u32 = 15; +pub const AF_NETLINK: u32 = 16; +pub const AF_PACKET: u32 = 17; +pub const AF_ASH: u32 = 18; +pub const AF_ECONET: u32 = 19; +pub const AF_ATMSVC: u32 = 20; +pub const AF_RDS: u32 = 21; +pub const AF_SNA: u32 = 22; +pub const AF_IRDA: u32 = 23; +pub const AF_PPPOX: u32 = 24; +pub const AF_WANPIPE: u32 = 25; +pub const AF_LLC: u32 = 26; +pub const AF_CAN: u32 = 29; +pub const AF_TIPC: u32 = 30; +pub const AF_BLUETOOTH: u32 = 31; +pub const AF_IUCV: u32 = 32; +pub const AF_RXRPC: u32 = 33; +pub const AF_ISDN: u32 = 34; +pub const AF_PHONET: u32 = 35; +pub const AF_IEEE802154: u32 = 36; +pub const AF_MAX: u32 = 37; +pub const MSG_OOB: u32 = 1; +pub const MSG_PEEK: u32 = 2; +pub const MSG_DONTROUTE: u32 = 4; +pub const MSG_CTRUNC: u32 = 8; +pub const MSG_PROBE: u32 = 16; +pub const MSG_TRUNC: u32 = 32; +pub const MSG_EOR: u32 = 128; +pub const MSG_WAITALL: u32 = 256; +pub const MSG_FIN: u32 = 512; +pub const MSG_SYN: u32 = 1024; +pub const MSG_CONFIRM: u32 = 2048; +pub const MSG_RST: u32 = 4096; +pub const MSG_ERRQUEUE: u32 = 8192; +pub const MSG_NOSIGNAL: u32 = 16384; +pub const MSG_MORE: u32 = 32768; +pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; +pub const SCM_RIGHTS: u32 = 1; +pub const SCM_CREDENTIALS: u32 = 2; +pub const SCM_SECURITY: u32 = 3; +pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; +pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; +pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; +pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; +pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; +pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; +pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; +pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; +pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; +pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; +pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; +pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; +pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; +pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; +pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; +pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; +pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; +pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; +pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; +pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; +pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; +pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; +pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; +pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; +pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; +pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; +pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; +pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; +pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; +pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; +pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; +pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; +pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; +pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; +pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; +pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; +pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; +pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; +pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; +pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; +pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; +pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; +pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; +pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; +pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; +pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; +pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; +pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; +pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; +pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; +pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; +pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; +pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; +pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; +pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; +pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; +pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; +pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; +pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; +pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; +pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; +pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; +pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; +pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; +pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; +pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; +pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; +pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; +pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; +pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; +pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; +pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; +pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; +pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; +pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; +pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; +pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; +pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; +pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; +pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; +pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; +pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; +pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; +pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; +pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; +pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; +pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; +pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; +pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; +pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; +pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; +pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; +pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; +pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; +pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; +pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; +pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; +pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; +pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; +pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; +pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; +pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; +pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; +pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; +pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; +pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; +pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; +pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; +pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; +pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; +pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; +pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; +pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; +pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; +pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; +pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; +pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; +pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; +pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; +pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; +pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; +pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; +pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; +pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; +pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; +pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; +pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; +pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; +pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; +pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; +pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; +pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; +pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; +pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; +pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; +pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; +pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; +pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; +pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; +pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; +pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; +pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; +pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; +pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; +pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; +pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; +pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; +pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; +pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; +pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; +pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; +pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IPPROTO_IP = 0, +IPPROTO_ICMP = 1, +IPPROTO_IGMP = 2, +IPPROTO_IPIP = 4, +IPPROTO_TCP = 6, +IPPROTO_EGP = 8, +IPPROTO_PUP = 12, +IPPROTO_UDP = 17, +IPPROTO_IDP = 22, +IPPROTO_TP = 29, +IPPROTO_DCCP = 33, +IPPROTO_IPV6 = 41, +IPPROTO_RSVP = 46, +IPPROTO_GRE = 47, +IPPROTO_ESP = 50, +IPPROTO_AH = 51, +IPPROTO_MTP = 92, +IPPROTO_BEETPH = 94, +IPPROTO_ENCAP = 98, +IPPROTO_PIM = 103, +IPPROTO_COMP = 108, +IPPROTO_L2TP = 115, +IPPROTO_SCTP = 132, +IPPROTO_UDPLITE = 136, +IPPROTO_MPLS = 137, +IPPROTO_ETHERNET = 143, +IPPROTO_RAW = 255, +IPPROTO_MPTCP = 262, +IPPROTO_MAX = 263, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IPV4_DEVCONF_FORWARDING = 1, +IPV4_DEVCONF_MC_FORWARDING = 2, +IPV4_DEVCONF_PROXY_ARP = 3, +IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, +IPV4_DEVCONF_SECURE_REDIRECTS = 5, +IPV4_DEVCONF_SEND_REDIRECTS = 6, +IPV4_DEVCONF_SHARED_MEDIA = 7, +IPV4_DEVCONF_RP_FILTER = 8, +IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, +IPV4_DEVCONF_BOOTP_RELAY = 10, +IPV4_DEVCONF_LOG_MARTIANS = 11, +IPV4_DEVCONF_TAG = 12, +IPV4_DEVCONF_ARPFILTER = 13, +IPV4_DEVCONF_MEDIUM_ID = 14, +IPV4_DEVCONF_NOXFRM = 15, +IPV4_DEVCONF_NOPOLICY = 16, +IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, +IPV4_DEVCONF_ARP_ANNOUNCE = 18, +IPV4_DEVCONF_ARP_IGNORE = 19, +IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, +IPV4_DEVCONF_ARP_ACCEPT = 21, +IPV4_DEVCONF_ARP_NOTIFY = 22, +IPV4_DEVCONF_ACCEPT_LOCAL = 23, +IPV4_DEVCONF_SRC_VMARK = 24, +IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, +IPV4_DEVCONF_ROUTE_LOCALNET = 26, +IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, +IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, +IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, +IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, +IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, +IPV4_DEVCONF_BC_FORWARDING = 32, +IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, +__IPV4_DEVCONF_MAX = 34, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +DEVCONF_FORWARDING = 0, +DEVCONF_HOPLIMIT = 1, +DEVCONF_MTU6 = 2, +DEVCONF_ACCEPT_RA = 3, +DEVCONF_ACCEPT_REDIRECTS = 4, +DEVCONF_AUTOCONF = 5, +DEVCONF_DAD_TRANSMITS = 6, +DEVCONF_RTR_SOLICITS = 7, +DEVCONF_RTR_SOLICIT_INTERVAL = 8, +DEVCONF_RTR_SOLICIT_DELAY = 9, +DEVCONF_USE_TEMPADDR = 10, +DEVCONF_TEMP_VALID_LFT = 11, +DEVCONF_TEMP_PREFERED_LFT = 12, +DEVCONF_REGEN_MAX_RETRY = 13, +DEVCONF_MAX_DESYNC_FACTOR = 14, +DEVCONF_MAX_ADDRESSES = 15, +DEVCONF_FORCE_MLD_VERSION = 16, +DEVCONF_ACCEPT_RA_DEFRTR = 17, +DEVCONF_ACCEPT_RA_PINFO = 18, +DEVCONF_ACCEPT_RA_RTR_PREF = 19, +DEVCONF_RTR_PROBE_INTERVAL = 20, +DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, +DEVCONF_PROXY_NDP = 22, +DEVCONF_OPTIMISTIC_DAD = 23, +DEVCONF_ACCEPT_SOURCE_ROUTE = 24, +DEVCONF_MC_FORWARDING = 25, +DEVCONF_DISABLE_IPV6 = 26, +DEVCONF_ACCEPT_DAD = 27, +DEVCONF_FORCE_TLLAO = 28, +DEVCONF_NDISC_NOTIFY = 29, +DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, +DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, +DEVCONF_SUPPRESS_FRAG_NDISC = 32, +DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, +DEVCONF_USE_OPTIMISTIC = 34, +DEVCONF_ACCEPT_RA_MTU = 35, +DEVCONF_STABLE_SECRET = 36, +DEVCONF_USE_OIF_ADDRS_ONLY = 37, +DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, +DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, +DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, +DEVCONF_DROP_UNSOLICITED_NA = 41, +DEVCONF_KEEP_ADDR_ON_DOWN = 42, +DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, +DEVCONF_SEG6_ENABLED = 44, +DEVCONF_SEG6_REQUIRE_HMAC = 45, +DEVCONF_ENHANCED_DAD = 46, +DEVCONF_ADDR_GEN_MODE = 47, +DEVCONF_DISABLE_POLICY = 48, +DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, +DEVCONF_NDISC_TCLASS = 50, +DEVCONF_RPL_SEG_ENABLED = 51, +DEVCONF_RA_DEFRTR_METRIC = 52, +DEVCONF_IOAM6_ENABLED = 53, +DEVCONF_IOAM6_ID = 54, +DEVCONF_IOAM6_ID_WIDE = 55, +DEVCONF_NDISC_EVICT_NOCARRIER = 56, +DEVCONF_ACCEPT_UNTRACKED_NA = 57, +DEVCONF_MAX = 58, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum socket_state { +SS_FREE = 0, +SS_UNCONNECTED = 1, +SS_CONNECTING = 2, +SS_CONNECTED = 3, +SS_DISCONNECTING = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +TCP_FLAG_CWR = 32768, +TCP_FLAG_ECE = 16384, +TCP_FLAG_URG = 8192, +TCP_FLAG_ACK = 4096, +TCP_FLAG_PSH = 2048, +TCP_FLAG_RST = 1024, +TCP_FLAG_SYN = 512, +TCP_FLAG_FIN = 256, +TCP_RESERVED_BITS = 15, +TCP_DATA_OFFSET = 240, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +TCP_NO_QUEUE = 0, +TCP_RECV_QUEUE = 1, +TCP_SEND_QUEUE = 2, +TCP_QUEUES_NR = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_fastopen_client_fail { +TFO_STATUS_UNSPEC = 0, +TFO_COOKIE_UNAVAILABLE = 1, +TFO_DATA_NOT_ACKED = 2, +TFO_SYN_RETRANSMITTED = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_ca_state { +TCP_CA_Open = 0, +TCP_CA_Disorder = 1, +TCP_CA_CWR = 2, +TCP_CA_Recovery = 3, +TCP_CA_Loss = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +TCP_NLA_PAD = 0, +TCP_NLA_BUSY = 1, +TCP_NLA_RWND_LIMITED = 2, +TCP_NLA_SNDBUF_LIMITED = 3, +TCP_NLA_DATA_SEGS_OUT = 4, +TCP_NLA_TOTAL_RETRANS = 5, +TCP_NLA_PACING_RATE = 6, +TCP_NLA_DELIVERY_RATE = 7, +TCP_NLA_SND_CWND = 8, +TCP_NLA_REORDERING = 9, +TCP_NLA_MIN_RTT = 10, +TCP_NLA_RECUR_RETRANS = 11, +TCP_NLA_DELIVERY_RATE_APP_LMT = 12, +TCP_NLA_SNDQ_SIZE = 13, +TCP_NLA_CA_STATE = 14, +TCP_NLA_SND_SSTHRESH = 15, +TCP_NLA_DELIVERED = 16, +TCP_NLA_DELIVERED_CE = 17, +TCP_NLA_BYTES_SENT = 18, +TCP_NLA_BYTES_RETRANS = 19, +TCP_NLA_DSACK_DUPS = 20, +TCP_NLA_REORD_SEEN = 21, +TCP_NLA_SRTT = 22, +TCP_NLA_TIMEOUT_REHASH = 23, +TCP_NLA_BYTES_NOTSENT = 24, +TCP_NLA_EDT = 25, +TCP_NLA_TTL = 26, +TCP_NLA_REHASH = 27, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union iphdr__bindgen_ty_1 { +pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union in6_addr__bindgen_ty_1 { +pub u6_addr8: [__u8; 16usize], +pub u6_addr16: [__be16; 8usize], +pub u6_addr32: [__be32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ipv6hdr__bindgen_ty_1 { +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union tcp_word_hdr { +pub hdr: tcphdr, +pub words: [__be32; 5usize], +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} +impl iphdr { +#[inline] +pub fn ihl(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_ihl(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; +ihl as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit +} +} +impl ipv6hdr { +#[inline] +pub fn priority(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_priority(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let priority: u8 = unsafe { ::core::mem::transmute(priority) }; +priority as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcphdr { +#[inline] +pub fn res1(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } +} +#[inline] +pub fn set_res1(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn doff(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } +} +#[inline] +pub fn set_doff(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn fin(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } +} +#[inline] +pub fn set_fin(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn syn(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } +} +#[inline] +pub fn set_syn(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 1u8, val as u64) +} +} +#[inline] +pub fn rst(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } +} +#[inline] +pub fn set_rst(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(10usize, 1u8, val as u64) +} +} +#[inline] +pub fn psh(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } +} +#[inline] +pub fn set_psh(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(11usize, 1u8, val as u64) +} +} +#[inline] +pub fn ack(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } +} +#[inline] +pub fn set_ack(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(12usize, 1u8, val as u64) +} +} +#[inline] +pub fn urg(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } +} +#[inline] +pub fn set_urg(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(13usize, 1u8, val as u64) +} +} +#[inline] +pub fn ece(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } +} +#[inline] +pub fn set_ece(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(14usize, 1u8, val as u64) +} +} +#[inline] +pub fn cwr(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +} +#[inline] +pub fn set_cwr(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(15usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let res1: u16 = unsafe { ::core::mem::transmute(res1) }; +res1 as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let doff: u16 = unsafe { ::core::mem::transmute(doff) }; +doff as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let fin: u16 = unsafe { ::core::mem::transmute(fin) }; +fin as u64 +}); +__bindgen_bitfield_unit.set(9usize, 1u8, { +let syn: u16 = unsafe { ::core::mem::transmute(syn) }; +syn as u64 +}); +__bindgen_bitfield_unit.set(10usize, 1u8, { +let rst: u16 = unsafe { ::core::mem::transmute(rst) }; +rst as u64 +}); +__bindgen_bitfield_unit.set(11usize, 1u8, { +let psh: u16 = unsafe { ::core::mem::transmute(psh) }; +psh as u64 +}); +__bindgen_bitfield_unit.set(12usize, 1u8, { +let ack: u16 = unsafe { ::core::mem::transmute(ack) }; +ack as u64 +}); +__bindgen_bitfield_unit.set(13usize, 1u8, { +let urg: u16 = unsafe { ::core::mem::transmute(urg) }; +urg as u64 +}); +__bindgen_bitfield_unit.set(14usize, 1u8, { +let ece: u16 = unsafe { ::core::mem::transmute(ece) }; +ece as u64 +}); +__bindgen_bitfield_unit.set(15usize, 1u8, { +let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; +cwr as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcp_info { +#[inline] +pub fn tcpi_snd_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_rcv_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +} +#[inline] +pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn tcpi_fastopen_client_fail(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +} +#[inline] +pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 2u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; +tcpi_snd_wscale as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; +tcpi_rcv_wscale as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; +tcpi_delivery_rate_app_limited as u64 +}); +__bindgen_bitfield_unit.set(9usize, 2u8, { +let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; +tcpi_fastopen_client_fail as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x86/prctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x86/prctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x86/prctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x86/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,221 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prctl_mm_map { +pub start_code: __u64, +pub end_code: __u64, +pub start_data: __u64, +pub end_data: __u64, +pub start_brk: __u64, +pub brk: __u64, +pub start_stack: __u64, +pub arg_start: __u64, +pub arg_end: __u64, +pub env_start: __u64, +pub env_end: __u64, +pub auxv: *mut __u64, +pub auxv_size: __u32, +pub exe_fd: __u32, +} +pub const PR_SET_PDEATHSIG: u32 = 1; +pub const PR_GET_PDEATHSIG: u32 = 2; +pub const PR_GET_DUMPABLE: u32 = 3; +pub const PR_SET_DUMPABLE: u32 = 4; +pub const PR_GET_UNALIGN: u32 = 5; +pub const PR_SET_UNALIGN: u32 = 6; +pub const PR_UNALIGN_NOPRINT: u32 = 1; +pub const PR_UNALIGN_SIGBUS: u32 = 2; +pub const PR_GET_KEEPCAPS: u32 = 7; +pub const PR_SET_KEEPCAPS: u32 = 8; +pub const PR_GET_FPEMU: u32 = 9; +pub const PR_SET_FPEMU: u32 = 10; +pub const PR_FPEMU_NOPRINT: u32 = 1; +pub const PR_FPEMU_SIGFPE: u32 = 2; +pub const PR_GET_FPEXC: u32 = 11; +pub const PR_SET_FPEXC: u32 = 12; +pub const PR_FP_EXC_SW_ENABLE: u32 = 128; +pub const PR_FP_EXC_DIV: u32 = 65536; +pub const PR_FP_EXC_OVF: u32 = 131072; +pub const PR_FP_EXC_UND: u32 = 262144; +pub const PR_FP_EXC_RES: u32 = 524288; +pub const PR_FP_EXC_INV: u32 = 1048576; +pub const PR_FP_EXC_DISABLED: u32 = 0; +pub const PR_FP_EXC_NONRECOV: u32 = 1; +pub const PR_FP_EXC_ASYNC: u32 = 2; +pub const PR_FP_EXC_PRECISE: u32 = 3; +pub const PR_GET_TIMING: u32 = 13; +pub const PR_SET_TIMING: u32 = 14; +pub const PR_TIMING_STATISTICAL: u32 = 0; +pub const PR_TIMING_TIMESTAMP: u32 = 1; +pub const PR_SET_NAME: u32 = 15; +pub const PR_GET_NAME: u32 = 16; +pub const PR_GET_ENDIAN: u32 = 19; +pub const PR_SET_ENDIAN: u32 = 20; +pub const PR_ENDIAN_BIG: u32 = 0; +pub const PR_ENDIAN_LITTLE: u32 = 1; +pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; +pub const PR_GET_SECCOMP: u32 = 21; +pub const PR_SET_SECCOMP: u32 = 22; +pub const PR_CAPBSET_READ: u32 = 23; +pub const PR_CAPBSET_DROP: u32 = 24; +pub const PR_GET_TSC: u32 = 25; +pub const PR_SET_TSC: u32 = 26; +pub const PR_TSC_ENABLE: u32 = 1; +pub const PR_TSC_SIGSEGV: u32 = 2; +pub const PR_GET_SECUREBITS: u32 = 27; +pub const PR_SET_SECUREBITS: u32 = 28; +pub const PR_SET_TIMERSLACK: u32 = 29; +pub const PR_GET_TIMERSLACK: u32 = 30; +pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; +pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; +pub const PR_MCE_KILL: u32 = 33; +pub const PR_MCE_KILL_CLEAR: u32 = 0; +pub const PR_MCE_KILL_SET: u32 = 1; +pub const PR_MCE_KILL_LATE: u32 = 0; +pub const PR_MCE_KILL_EARLY: u32 = 1; +pub const PR_MCE_KILL_DEFAULT: u32 = 2; +pub const PR_MCE_KILL_GET: u32 = 34; +pub const PR_SET_MM: u32 = 35; +pub const PR_SET_MM_START_CODE: u32 = 1; +pub const PR_SET_MM_END_CODE: u32 = 2; +pub const PR_SET_MM_START_DATA: u32 = 3; +pub const PR_SET_MM_END_DATA: u32 = 4; +pub const PR_SET_MM_START_STACK: u32 = 5; +pub const PR_SET_MM_START_BRK: u32 = 6; +pub const PR_SET_MM_BRK: u32 = 7; +pub const PR_SET_MM_ARG_START: u32 = 8; +pub const PR_SET_MM_ARG_END: u32 = 9; +pub const PR_SET_MM_ENV_START: u32 = 10; +pub const PR_SET_MM_ENV_END: u32 = 11; +pub const PR_SET_MM_AUXV: u32 = 12; +pub const PR_SET_MM_EXE_FILE: u32 = 13; +pub const PR_SET_MM_MAP: u32 = 14; +pub const PR_SET_MM_MAP_SIZE: u32 = 15; +pub const PR_SET_PTRACER: u32 = 1499557217; +pub const PR_SET_CHILD_SUBREAPER: u32 = 36; +pub const PR_GET_CHILD_SUBREAPER: u32 = 37; +pub const PR_SET_NO_NEW_PRIVS: u32 = 38; +pub const PR_GET_NO_NEW_PRIVS: u32 = 39; +pub const PR_GET_TID_ADDRESS: u32 = 40; +pub const PR_SET_THP_DISABLE: u32 = 41; +pub const PR_GET_THP_DISABLE: u32 = 42; +pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; +pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; +pub const PR_SET_FP_MODE: u32 = 45; +pub const PR_GET_FP_MODE: u32 = 46; +pub const PR_FP_MODE_FR: u32 = 1; +pub const PR_FP_MODE_FRE: u32 = 2; +pub const PR_CAP_AMBIENT: u32 = 47; +pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; +pub const PR_CAP_AMBIENT_RAISE: u32 = 2; +pub const PR_CAP_AMBIENT_LOWER: u32 = 3; +pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; +pub const PR_SVE_SET_VL: u32 = 50; +pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SVE_GET_VL: u32 = 51; +pub const PR_SVE_VL_LEN_MASK: u32 = 65535; +pub const PR_SVE_VL_INHERIT: u32 = 131072; +pub const PR_GET_SPECULATION_CTRL: u32 = 52; +pub const PR_SET_SPECULATION_CTRL: u32 = 53; +pub const PR_SPEC_STORE_BYPASS: u32 = 0; +pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; +pub const PR_SPEC_L1D_FLUSH: u32 = 2; +pub const PR_SPEC_NOT_AFFECTED: u32 = 0; +pub const PR_SPEC_PRCTL: u32 = 1; +pub const PR_SPEC_ENABLE: u32 = 2; +pub const PR_SPEC_DISABLE: u32 = 4; +pub const PR_SPEC_FORCE_DISABLE: u32 = 8; +pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; +pub const PR_PAC_RESET_KEYS: u32 = 54; +pub const PR_PAC_APIAKEY: u32 = 1; +pub const PR_PAC_APIBKEY: u32 = 2; +pub const PR_PAC_APDAKEY: u32 = 4; +pub const PR_PAC_APDBKEY: u32 = 8; +pub const PR_PAC_APGAKEY: u32 = 16; +pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; +pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; +pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; +pub const PR_MTE_TCF_NONE: u32 = 0; +pub const PR_MTE_TCF_SYNC: u32 = 2; +pub const PR_MTE_TCF_ASYNC: u32 = 4; +pub const PR_MTE_TCF_MASK: u32 = 6; +pub const PR_MTE_TAG_SHIFT: u32 = 3; +pub const PR_MTE_TAG_MASK: u32 = 524280; +pub const PR_MTE_TCF_SHIFT: u32 = 1; +pub const PR_SET_IO_FLUSHER: u32 = 57; +pub const PR_GET_IO_FLUSHER: u32 = 58; +pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; +pub const PR_SYS_DISPATCH_OFF: u32 = 0; +pub const PR_SYS_DISPATCH_ON: u32 = 1; +pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; +pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; +pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; +pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; +pub const PR_SCHED_CORE: u32 = 62; +pub const PR_SCHED_CORE_GET: u32 = 0; +pub const PR_SCHED_CORE_CREATE: u32 = 1; +pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; +pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; +pub const PR_SCHED_CORE_MAX: u32 = 4; +pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; +pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; +pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; +pub const PR_SME_SET_VL: u32 = 63; +pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SME_GET_VL: u32 = 64; +pub const PR_SME_VL_LEN_MASK: u32 = 65535; +pub const PR_SME_VL_INHERIT: u32 = 131072; +pub const PR_SET_MDWE: u32 = 65; +pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; +pub const PR_GET_MDWE: u32 = 66; +pub const PR_SET_VMA: u32 = 1398164801; +pub const PR_SET_VMA_ANON_NAME: u32 = 0; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x86/system.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x86/system.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x86/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x86/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,99 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_mode_t = crate::ctypes::c_ushort; +pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort; +pub type __kernel_uid_t = crate::ctypes::c_ushort; +pub type __kernel_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ushort; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_old_uid_t = __kernel_uid_t; +pub type __kernel_old_gid_t = __kernel_gid_t; +pub type __kernel_size_t = crate::ctypes::c_uint; +pub type __kernel_ssize_t = crate::ctypes::c_int; +pub type __kernel_ptrdiff_t = crate::ctypes::c_int; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sysinfo { +pub uptime: __kernel_long_t, +pub loads: [__kernel_ulong_t; 3usize], +pub totalram: __kernel_ulong_t, +pub freeram: __kernel_ulong_t, +pub sharedram: __kernel_ulong_t, +pub bufferram: __kernel_ulong_t, +pub totalswap: __kernel_ulong_t, +pub freeswap: __kernel_ulong_t, +pub procs: __u16, +pub pad: __u16, +pub totalhigh: __kernel_ulong_t, +pub freehigh: __kernel_ulong_t, +pub mem_unit: __u32, +pub _f: [crate::ctypes::c_char; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct oldold_utsname { +pub sysname: [crate::ctypes::c_char; 9usize], +pub nodename: [crate::ctypes::c_char; 9usize], +pub release: [crate::ctypes::c_char; 9usize], +pub version: [crate::ctypes::c_char; 9usize], +pub machine: [crate::ctypes::c_char; 9usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct old_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct new_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +pub domainname: [crate::ctypes::c_char; 65usize], +} +pub const SI_LOAD_SHIFT: u32 = 16; +pub const __OLD_UTS_LEN: u32 = 8; +pub const __NEW_UTS_LEN: u32 = 64; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/errno.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/errno.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/errno.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const EPERM: u32 = 1; pub const ENOENT: u32 = 2; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/general.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/general.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/general.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/general.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,2791 +1,216 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_sighandler_t = ::core::option::Option; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type cap_user_header_t = *mut __user_cap_header_struct; +pub type cap_user_data_t = *mut __user_cap_data_struct; +pub type __kernel_rwf_t = crate::ctypes::c_int; +pub type sigset_t = crate::ctypes::c_ulong; +pub type __signalfn_t = ::core::option::Option; +pub type __sighandler_t = __signalfn_t; +pub type __restorefn_t = ::core::option::Option; +pub type __sigrestore_t = __restorefn_t; +pub type stack_t = sigaltstack; +pub type sigval_t = sigval; +pub type siginfo_t = siginfo; +pub type sigevent_t = sigevent; +pub type cc_t = crate::ctypes::c_uchar; +pub type speed_t = crate::ctypes::c_uint; +pub type tcflag_t = crate::ctypes::c_uint; +pub type __fsword_t = __kernel_long_t; #[repr(C)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct __BindgenBitfieldUnit { storage: Storage, } -impl __BindgenBitfieldUnit { -#[inline] -pub const fn new(storage: Storage) -> Self { -Self { storage } -} -} -impl __BindgenBitfieldUnit -where -Storage: AsRef<[u8]> + AsMut<[u8]>, -{ -#[inline] -pub fn get_bit(&self, index: usize) -> bool { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = self.storage.as_ref()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -byte & mask == mask -} -#[inline] -pub fn set_bit(&mut self, index: usize, val: bool) { -debug_assert!(index / 8 < self.storage.as_ref().len()); -let byte_index = index / 8; -let byte = &mut self.storage.as_mut()[byte_index]; -let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; -let mask = 1 << bit_index; -if val { -*byte |= mask; -} else { -*byte &= !mask; -} -} -#[inline] -pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -let mut val = 0; -for i in 0..(bit_width as usize) { -if self.get_bit(i + bit_offset) { -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -val |= 1 << index; -} -} -val -} -#[inline] -pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { -debug_assert!(bit_width <= 64); -debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); -debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); -for i in 0..(bit_width as usize) { -let mask = 1 << i; -let val_bit_is_set = val & mask == mask; -let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; -self.set_bit(index + bit_offset, val_bit_is_set); -} -} -} #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) -} -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fd_set { +pub fds_bits: [crate::ctypes::c_ulong; 16usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_fsid_t { +pub val: [crate::ctypes::c_int; 2usize], } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_header_struct { +pub version: __u32, +pub pid: crate::ctypes::c_int, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __user_cap_data_struct { +pub effective: __u32, +pub permitted: __u32, +pub inheritable: __u32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data { +pub magic_etc: __le32, +pub data: [vfs_cap_data__bindgen_ty_1; 2usize], } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data { +pub magic_etc: __le32, +pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], +pub rootid: __le32, } #[repr(C)] -pub struct __BindgenUnionField(::core::marker::PhantomData); -impl __BindgenUnionField { -#[inline] -pub const fn new() -> Self { -__BindgenUnionField(::core::marker::PhantomData) +#[derive(Debug, Copy, Clone)] +pub struct vfs_ns_cap_data__bindgen_ty_1 { +pub permitted: __le32, +pub inheritable: __le32, } -#[inline] -pub unsafe fn as_ref(&self) -> &T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct f_owner_ex { +pub type_: crate::ctypes::c_int, +pub pid: __kernel_pid_t, } -#[inline] -pub unsafe fn as_mut(&mut self) -> &mut T { -::core::mem::transmute(self) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_off_t, +pub l_len: __kernel_off_t, +pub l_pid: __kernel_pid_t, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct flock64 { +pub l_type: crate::ctypes::c_short, +pub l_whence: crate::ctypes::c_short, +pub l_start: __kernel_loff_t, +pub l_len: __kernel_loff_t, +pub l_pid: __kernel_pid_t, } -impl ::core::default::Default for __BindgenUnionField { -#[inline] -fn default() -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct open_how { +pub flags: __u64, +pub mode: __u64, +pub resolve: __u64, } +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct epoll_event { +pub events: __poll_t, +pub data: __u64, } -impl ::core::clone::Clone for __BindgenUnionField { -#[inline] -fn clone(&self) -> Self { -Self::new() +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, } -impl ::core::marker::Copy for __BindgenUnionField {} -impl ::core::fmt::Debug for __BindgenUnionField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__BindgenUnionField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], } +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, } -impl ::core::hash::Hash for __BindgenUnionField { -fn hash(&self, _state: &mut H) {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, } -impl ::core::cmp::PartialEq for __BindgenUnionField { -fn eq(&self, _other: &__BindgenUnionField) -> bool { -true +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, } -} -impl ::core::cmp::Eq for __BindgenUnionField {} -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const AT_SYSINFO_EHDR: u32 = 33; -pub const AT_VECTOR_SIZE_ARCH: u32 = 3; -pub const AT_NULL: u32 = 0; -pub const AT_IGNORE: u32 = 1; -pub const AT_EXECFD: u32 = 2; -pub const AT_PHDR: u32 = 3; -pub const AT_PHENT: u32 = 4; -pub const AT_PHNUM: u32 = 5; -pub const AT_PAGESZ: u32 = 6; -pub const AT_BASE: u32 = 7; -pub const AT_FLAGS: u32 = 8; -pub const AT_ENTRY: u32 = 9; -pub const AT_NOTELF: u32 = 10; -pub const AT_UID: u32 = 11; -pub const AT_EUID: u32 = 12; -pub const AT_GID: u32 = 13; -pub const AT_EGID: u32 = 14; -pub const AT_PLATFORM: u32 = 15; -pub const AT_HWCAP: u32 = 16; -pub const AT_CLKTCK: u32 = 17; -pub const AT_SECURE: u32 = 23; -pub const AT_BASE_PLATFORM: u32 = 24; -pub const AT_RANDOM: u32 = 25; -pub const AT_HWCAP2: u32 = 26; -pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; -pub const AT_RSEQ_ALIGN: u32 = 28; -pub const AT_EXECFN: u32 = 31; -pub const AT_MINSIGSTKSZ: u32 = 51; -pub const __BITS_PER_LONG: u32 = 64; -pub const __FD_SETSIZE: u32 = 1024; -pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; -pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; -pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; -pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; -pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; -pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; -pub const VFS_CAP_REVISION_SHIFT: u32 = 24; -pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; -pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; -pub const VFS_CAP_REVISION_1: u32 = 16777216; -pub const VFS_CAP_U32_1: u32 = 1; -pub const VFS_CAP_REVISION_2: u32 = 33554432; -pub const VFS_CAP_U32_2: u32 = 2; -pub const VFS_CAP_REVISION_3: u32 = 50331648; -pub const VFS_CAP_U32_3: u32 = 2; -pub const VFS_CAP_U32: u32 = 2; -pub const VFS_CAP_REVISION: u32 = 50331648; -pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; -pub const _LINUX_CAPABILITY_U32S: u32 = 1; -pub const CAP_CHOWN: u32 = 0; -pub const CAP_DAC_OVERRIDE: u32 = 1; -pub const CAP_DAC_READ_SEARCH: u32 = 2; -pub const CAP_FOWNER: u32 = 3; -pub const CAP_FSETID: u32 = 4; -pub const CAP_KILL: u32 = 5; -pub const CAP_SETGID: u32 = 6; -pub const CAP_SETUID: u32 = 7; -pub const CAP_SETPCAP: u32 = 8; -pub const CAP_LINUX_IMMUTABLE: u32 = 9; -pub const CAP_NET_BIND_SERVICE: u32 = 10; -pub const CAP_NET_BROADCAST: u32 = 11; -pub const CAP_NET_ADMIN: u32 = 12; -pub const CAP_NET_RAW: u32 = 13; -pub const CAP_IPC_LOCK: u32 = 14; -pub const CAP_IPC_OWNER: u32 = 15; -pub const CAP_SYS_MODULE: u32 = 16; -pub const CAP_SYS_RAWIO: u32 = 17; -pub const CAP_SYS_CHROOT: u32 = 18; -pub const CAP_SYS_PTRACE: u32 = 19; -pub const CAP_SYS_PACCT: u32 = 20; -pub const CAP_SYS_ADMIN: u32 = 21; -pub const CAP_SYS_BOOT: u32 = 22; -pub const CAP_SYS_NICE: u32 = 23; -pub const CAP_SYS_RESOURCE: u32 = 24; -pub const CAP_SYS_TIME: u32 = 25; -pub const CAP_SYS_TTY_CONFIG: u32 = 26; -pub const CAP_MKNOD: u32 = 27; -pub const CAP_LEASE: u32 = 28; -pub const CAP_AUDIT_WRITE: u32 = 29; -pub const CAP_AUDIT_CONTROL: u32 = 30; -pub const CAP_SETFCAP: u32 = 31; -pub const CAP_MAC_OVERRIDE: u32 = 32; -pub const CAP_MAC_ADMIN: u32 = 33; -pub const CAP_SYSLOG: u32 = 34; -pub const CAP_WAKE_ALARM: u32 = 35; -pub const CAP_BLOCK_SUSPEND: u32 = 36; -pub const CAP_AUDIT_READ: u32 = 37; -pub const CAP_PERFMON: u32 = 38; -pub const CAP_BPF: u32 = 39; -pub const CAP_CHECKPOINT_RESTORE: u32 = 40; -pub const CAP_LAST_CAP: u32 = 40; -pub const O_ACCMODE: u32 = 3; -pub const O_RDONLY: u32 = 0; -pub const O_WRONLY: u32 = 1; -pub const O_RDWR: u32 = 2; -pub const O_CREAT: u32 = 64; -pub const O_EXCL: u32 = 128; -pub const O_NOCTTY: u32 = 256; -pub const O_TRUNC: u32 = 512; -pub const O_APPEND: u32 = 1024; -pub const O_NONBLOCK: u32 = 2048; -pub const O_DSYNC: u32 = 4096; -pub const FASYNC: u32 = 8192; -pub const O_DIRECT: u32 = 16384; -pub const O_LARGEFILE: u32 = 32768; -pub const O_DIRECTORY: u32 = 65536; -pub const O_NOFOLLOW: u32 = 131072; -pub const O_NOATIME: u32 = 262144; -pub const O_CLOEXEC: u32 = 524288; -pub const __O_SYNC: u32 = 1048576; -pub const O_SYNC: u32 = 1052672; -pub const O_PATH: u32 = 2097152; -pub const __O_TMPFILE: u32 = 4194304; -pub const O_TMPFILE: u32 = 4259840; -pub const O_TMPFILE_MASK: u32 = 4259904; -pub const O_NDELAY: u32 = 2048; -pub const F_DUPFD: u32 = 0; -pub const F_GETFD: u32 = 1; -pub const F_SETFD: u32 = 2; -pub const F_GETFL: u32 = 3; -pub const F_SETFL: u32 = 4; -pub const F_GETLK: u32 = 5; -pub const F_SETLK: u32 = 6; -pub const F_SETLKW: u32 = 7; -pub const F_SETOWN: u32 = 8; -pub const F_GETOWN: u32 = 9; -pub const F_SETSIG: u32 = 10; -pub const F_GETSIG: u32 = 11; -pub const F_SETOWN_EX: u32 = 15; -pub const F_GETOWN_EX: u32 = 16; -pub const F_GETOWNER_UIDS: u32 = 17; -pub const F_OFD_GETLK: u32 = 36; -pub const F_OFD_SETLK: u32 = 37; -pub const F_OFD_SETLKW: u32 = 38; -pub const F_OWNER_TID: u32 = 0; -pub const F_OWNER_PID: u32 = 1; -pub const F_OWNER_PGRP: u32 = 2; -pub const FD_CLOEXEC: u32 = 1; -pub const F_RDLCK: u32 = 0; -pub const F_WRLCK: u32 = 1; -pub const F_UNLCK: u32 = 2; -pub const F_EXLCK: u32 = 4; -pub const F_SHLCK: u32 = 8; -pub const LOCK_SH: u32 = 1; -pub const LOCK_EX: u32 = 2; -pub const LOCK_NB: u32 = 4; -pub const LOCK_UN: u32 = 8; -pub const LOCK_MAND: u32 = 32; -pub const LOCK_READ: u32 = 64; -pub const LOCK_WRITE: u32 = 128; -pub const LOCK_RW: u32 = 192; -pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; -pub const RESOLVE_NO_XDEV: u32 = 1; -pub const RESOLVE_NO_MAGICLINKS: u32 = 2; -pub const RESOLVE_NO_SYMLINKS: u32 = 4; -pub const RESOLVE_BENEATH: u32 = 8; -pub const RESOLVE_IN_ROOT: u32 = 16; -pub const RESOLVE_CACHED: u32 = 32; -pub const F_SETLEASE: u32 = 1024; -pub const F_GETLEASE: u32 = 1025; -pub const F_CANCELLK: u32 = 1029; -pub const F_DUPFD_CLOEXEC: u32 = 1030; -pub const F_NOTIFY: u32 = 1026; -pub const F_SETPIPE_SZ: u32 = 1031; -pub const F_GETPIPE_SZ: u32 = 1032; -pub const F_ADD_SEALS: u32 = 1033; -pub const F_GET_SEALS: u32 = 1034; -pub const F_SEAL_SEAL: u32 = 1; -pub const F_SEAL_SHRINK: u32 = 2; -pub const F_SEAL_GROW: u32 = 4; -pub const F_SEAL_WRITE: u32 = 8; -pub const F_SEAL_FUTURE_WRITE: u32 = 16; -pub const F_SEAL_EXEC: u32 = 32; -pub const F_GET_RW_HINT: u32 = 1035; -pub const F_SET_RW_HINT: u32 = 1036; -pub const F_GET_FILE_RW_HINT: u32 = 1037; -pub const F_SET_FILE_RW_HINT: u32 = 1038; -pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; -pub const RWH_WRITE_LIFE_NONE: u32 = 1; -pub const RWH_WRITE_LIFE_SHORT: u32 = 2; -pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; -pub const RWH_WRITE_LIFE_LONG: u32 = 4; -pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; -pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; -pub const DN_ACCESS: u32 = 1; -pub const DN_MODIFY: u32 = 2; -pub const DN_CREATE: u32 = 4; -pub const DN_DELETE: u32 = 8; -pub const DN_RENAME: u32 = 16; -pub const DN_ATTRIB: u32 = 32; -pub const DN_MULTISHOT: u32 = 2147483648; -pub const AT_FDCWD: i32 = -100; -pub const AT_SYMLINK_NOFOLLOW: u32 = 256; -pub const AT_EACCESS: u32 = 512; -pub const AT_REMOVEDIR: u32 = 512; -pub const AT_SYMLINK_FOLLOW: u32 = 1024; -pub const AT_NO_AUTOMOUNT: u32 = 2048; -pub const AT_EMPTY_PATH: u32 = 4096; -pub const AT_STATX_SYNC_TYPE: u32 = 24576; -pub const AT_STATX_SYNC_AS_STAT: u32 = 0; -pub const AT_STATX_FORCE_SYNC: u32 = 8192; -pub const AT_STATX_DONT_SYNC: u32 = 16384; -pub const AT_RECURSIVE: u32 = 32768; -pub const EPOLL_CLOEXEC: u32 = 524288; -pub const EPOLL_CTL_ADD: u32 = 1; -pub const EPOLL_CTL_DEL: u32 = 2; -pub const EPOLL_CTL_MOD: u32 = 3; -pub const POSIX_FADV_NORMAL: u32 = 0; -pub const POSIX_FADV_RANDOM: u32 = 1; -pub const POSIX_FADV_SEQUENTIAL: u32 = 2; -pub const POSIX_FADV_WILLNEED: u32 = 3; -pub const POSIX_FADV_DONTNEED: u32 = 4; -pub const POSIX_FADV_NOREUSE: u32 = 5; -pub const FALLOC_FL_KEEP_SIZE: u32 = 1; -pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; -pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; -pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; -pub const FALLOC_FL_ZERO_RANGE: u32 = 16; -pub const FALLOC_FL_INSERT_RANGE: u32 = 32; -pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; -pub const NR_OPEN: u32 = 1024; -pub const NGROUPS_MAX: u32 = 65536; -pub const ARG_MAX: u32 = 131072; -pub const LINK_MAX: u32 = 127; -pub const MAX_CANON: u32 = 255; -pub const MAX_INPUT: u32 = 255; -pub const NAME_MAX: u32 = 255; -pub const PATH_MAX: u32 = 4096; -pub const PIPE_BUF: u32 = 4096; -pub const XATTR_NAME_MAX: u32 = 255; -pub const XATTR_SIZE_MAX: u32 = 65536; -pub const XATTR_LIST_MAX: u32 = 65536; -pub const RTSIG_MAX: u32 = 32; -pub const _IOC_NRBITS: u32 = 8; -pub const _IOC_TYPEBITS: u32 = 8; -pub const _IOC_SIZEBITS: u32 = 14; -pub const _IOC_DIRBITS: u32 = 2; -pub const _IOC_NRMASK: u32 = 255; -pub const _IOC_TYPEMASK: u32 = 255; -pub const _IOC_SIZEMASK: u32 = 16383; -pub const _IOC_DIRMASK: u32 = 3; -pub const _IOC_NRSHIFT: u32 = 0; -pub const _IOC_TYPESHIFT: u32 = 8; -pub const _IOC_SIZESHIFT: u32 = 16; -pub const _IOC_DIRSHIFT: u32 = 30; -pub const _IOC_NONE: u32 = 0; -pub const _IOC_WRITE: u32 = 1; -pub const _IOC_READ: u32 = 2; -pub const IOC_IN: u32 = 1073741824; -pub const IOC_OUT: u32 = 2147483648; -pub const IOC_INOUT: u32 = 3221225472; -pub const IOCSIZE_MASK: u32 = 1073676288; -pub const IOCSIZE_SHIFT: u32 = 16; -pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; -pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; -pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; -pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; -pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; -pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; -pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; -pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; -pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; -pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; -pub const FSCRYPT_POLICY_V1: u32 = 0; -pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; -pub const FSCRYPT_POLICY_V2: u32 = 2; -pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; -pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; -pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; -pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; -pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; -pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; -pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; -pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; -pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; -pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; -pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; -pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; -pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; -pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; -pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; -pub const FS_POLICY_FLAGS_VALID: u32 = 7; -pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; -pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; -pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; -pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; -pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; -pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; -pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; -pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; -pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; -pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; -pub const FS_MAX_KEY_SIZE: u32 = 64; -pub const MS_RDONLY: u32 = 1; -pub const MS_NOSUID: u32 = 2; -pub const MS_NODEV: u32 = 4; -pub const MS_NOEXEC: u32 = 8; -pub const MS_SYNCHRONOUS: u32 = 16; -pub const MS_REMOUNT: u32 = 32; -pub const MS_MANDLOCK: u32 = 64; -pub const MS_DIRSYNC: u32 = 128; -pub const MS_NOSYMFOLLOW: u32 = 256; -pub const MS_NOATIME: u32 = 1024; -pub const MS_NODIRATIME: u32 = 2048; -pub const MS_BIND: u32 = 4096; -pub const MS_MOVE: u32 = 8192; -pub const MS_REC: u32 = 16384; -pub const MS_VERBOSE: u32 = 32768; -pub const MS_SILENT: u32 = 32768; -pub const MS_POSIXACL: u32 = 65536; -pub const MS_UNBINDABLE: u32 = 131072; -pub const MS_PRIVATE: u32 = 262144; -pub const MS_SLAVE: u32 = 524288; -pub const MS_SHARED: u32 = 1048576; -pub const MS_RELATIME: u32 = 2097152; -pub const MS_KERNMOUNT: u32 = 4194304; -pub const MS_I_VERSION: u32 = 8388608; -pub const MS_STRICTATIME: u32 = 16777216; -pub const MS_LAZYTIME: u32 = 33554432; -pub const MS_SUBMOUNT: u32 = 67108864; -pub const MS_NOREMOTELOCK: u32 = 134217728; -pub const MS_NOSEC: u32 = 268435456; -pub const MS_BORN: u32 = 536870912; -pub const MS_ACTIVE: u32 = 1073741824; -pub const MS_NOUSER: u32 = 2147483648; -pub const MS_RMT_MASK: u32 = 41943121; -pub const MS_MGC_VAL: u32 = 3236757504; -pub const MS_MGC_MSK: u32 = 4294901760; -pub const OPEN_TREE_CLONE: u32 = 1; -pub const OPEN_TREE_CLOEXEC: u32 = 524288; -pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; -pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; -pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; -pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; -pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; -pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; -pub const MOVE_MOUNT_SET_GROUP: u32 = 256; -pub const MOVE_MOUNT__MASK: u32 = 375; -pub const FSOPEN_CLOEXEC: u32 = 1; -pub const FSPICK_CLOEXEC: u32 = 1; -pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; -pub const FSPICK_NO_AUTOMOUNT: u32 = 4; -pub const FSPICK_EMPTY_PATH: u32 = 8; -pub const FSMOUNT_CLOEXEC: u32 = 1; -pub const MOUNT_ATTR_RDONLY: u32 = 1; -pub const MOUNT_ATTR_NOSUID: u32 = 2; -pub const MOUNT_ATTR_NODEV: u32 = 4; -pub const MOUNT_ATTR_NOEXEC: u32 = 8; -pub const MOUNT_ATTR__ATIME: u32 = 112; -pub const MOUNT_ATTR_RELATIME: u32 = 0; -pub const MOUNT_ATTR_NOATIME: u32 = 16; -pub const MOUNT_ATTR_STRICTATIME: u32 = 32; -pub const MOUNT_ATTR_NODIRATIME: u32 = 128; -pub const MOUNT_ATTR_IDMAP: u32 = 1048576; -pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; -pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; -pub const INR_OPEN_CUR: u32 = 1024; -pub const INR_OPEN_MAX: u32 = 4096; -pub const BLOCK_SIZE_BITS: u32 = 10; -pub const BLOCK_SIZE: u32 = 1024; -pub const SEEK_SET: u32 = 0; -pub const SEEK_CUR: u32 = 1; -pub const SEEK_END: u32 = 2; -pub const SEEK_DATA: u32 = 3; -pub const SEEK_HOLE: u32 = 4; -pub const SEEK_MAX: u32 = 4; -pub const RENAME_NOREPLACE: u32 = 1; -pub const RENAME_EXCHANGE: u32 = 2; -pub const RENAME_WHITEOUT: u32 = 4; -pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; -pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; -pub const NR_FILE: u32 = 8192; -pub const FS_XFLAG_REALTIME: u32 = 1; -pub const FS_XFLAG_PREALLOC: u32 = 2; -pub const FS_XFLAG_IMMUTABLE: u32 = 8; -pub const FS_XFLAG_APPEND: u32 = 16; -pub const FS_XFLAG_SYNC: u32 = 32; -pub const FS_XFLAG_NOATIME: u32 = 64; -pub const FS_XFLAG_NODUMP: u32 = 128; -pub const FS_XFLAG_RTINHERIT: u32 = 256; -pub const FS_XFLAG_PROJINHERIT: u32 = 512; -pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; -pub const FS_XFLAG_EXTSIZE: u32 = 2048; -pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; -pub const FS_XFLAG_NODEFRAG: u32 = 8192; -pub const FS_XFLAG_FILESTREAM: u32 = 16384; -pub const FS_XFLAG_DAX: u32 = 32768; -pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; -pub const FS_XFLAG_HASATTR: u32 = 2147483648; -pub const BMAP_IOCTL: u32 = 1; -pub const FSLABEL_MAX: u32 = 256; -pub const FS_SECRM_FL: u32 = 1; -pub const FS_UNRM_FL: u32 = 2; -pub const FS_COMPR_FL: u32 = 4; -pub const FS_SYNC_FL: u32 = 8; -pub const FS_IMMUTABLE_FL: u32 = 16; -pub const FS_APPEND_FL: u32 = 32; -pub const FS_NODUMP_FL: u32 = 64; -pub const FS_NOATIME_FL: u32 = 128; -pub const FS_DIRTY_FL: u32 = 256; -pub const FS_COMPRBLK_FL: u32 = 512; -pub const FS_NOCOMP_FL: u32 = 1024; -pub const FS_ENCRYPT_FL: u32 = 2048; -pub const FS_BTREE_FL: u32 = 4096; -pub const FS_INDEX_FL: u32 = 4096; -pub const FS_IMAGIC_FL: u32 = 8192; -pub const FS_JOURNAL_DATA_FL: u32 = 16384; -pub const FS_NOTAIL_FL: u32 = 32768; -pub const FS_DIRSYNC_FL: u32 = 65536; -pub const FS_TOPDIR_FL: u32 = 131072; -pub const FS_HUGE_FILE_FL: u32 = 262144; -pub const FS_EXTENT_FL: u32 = 524288; -pub const FS_VERITY_FL: u32 = 1048576; -pub const FS_EA_INODE_FL: u32 = 2097152; -pub const FS_EOFBLOCKS_FL: u32 = 4194304; -pub const FS_NOCOW_FL: u32 = 8388608; -pub const FS_DAX_FL: u32 = 33554432; -pub const FS_INLINE_DATA_FL: u32 = 268435456; -pub const FS_PROJINHERIT_FL: u32 = 536870912; -pub const FS_CASEFOLD_FL: u32 = 1073741824; -pub const FS_RESERVED_FL: u32 = 2147483648; -pub const FS_FL_USER_VISIBLE: u32 = 253951; -pub const FS_FL_USER_MODIFIABLE: u32 = 229631; -pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; -pub const SYNC_FILE_RANGE_WRITE: u32 = 2; -pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; -pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; -pub const FUTEX_WAIT: u32 = 0; -pub const FUTEX_WAKE: u32 = 1; -pub const FUTEX_FD: u32 = 2; -pub const FUTEX_REQUEUE: u32 = 3; -pub const FUTEX_CMP_REQUEUE: u32 = 4; -pub const FUTEX_WAKE_OP: u32 = 5; -pub const FUTEX_LOCK_PI: u32 = 6; -pub const FUTEX_UNLOCK_PI: u32 = 7; -pub const FUTEX_TRYLOCK_PI: u32 = 8; -pub const FUTEX_WAIT_BITSET: u32 = 9; -pub const FUTEX_WAKE_BITSET: u32 = 10; -pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; -pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; -pub const FUTEX_LOCK_PI2: u32 = 13; -pub const FUTEX_PRIVATE_FLAG: u32 = 128; -pub const FUTEX_CLOCK_REALTIME: u32 = 256; -pub const FUTEX_CMD_MASK: i32 = -385; -pub const FUTEX_WAIT_PRIVATE: u32 = 128; -pub const FUTEX_WAKE_PRIVATE: u32 = 129; -pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; -pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; -pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; -pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; -pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; -pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; -pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; -pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; -pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; -pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; -pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; -pub const FUTEX_32: u32 = 2; -pub const FUTEX_WAITV_MAX: u32 = 128; -pub const FUTEX_WAITERS: u32 = 2147483648; -pub const FUTEX_OWNER_DIED: u32 = 1073741824; -pub const FUTEX_TID_MASK: u32 = 1073741823; -pub const ROBUST_LIST_LIMIT: u32 = 2048; -pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; -pub const FUTEX_OP_SET: u32 = 0; -pub const FUTEX_OP_ADD: u32 = 1; -pub const FUTEX_OP_OR: u32 = 2; -pub const FUTEX_OP_ANDN: u32 = 3; -pub const FUTEX_OP_XOR: u32 = 4; -pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; -pub const FUTEX_OP_CMP_EQ: u32 = 0; -pub const FUTEX_OP_CMP_NE: u32 = 1; -pub const FUTEX_OP_CMP_LT: u32 = 2; -pub const FUTEX_OP_CMP_LE: u32 = 3; -pub const FUTEX_OP_CMP_GT: u32 = 4; -pub const FUTEX_OP_CMP_GE: u32 = 5; -pub const __UAPI_DEF_IF_IFCONF: u32 = 1; -pub const __UAPI_DEF_IF_IFMAP: u32 = 1; -pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1; -pub const __UAPI_DEF_IF_IFREQ: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1; -pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1; -pub const __UAPI_DEF_IN_ADDR: u32 = 1; -pub const __UAPI_DEF_IN_IPPROTO: u32 = 1; -pub const __UAPI_DEF_IN_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP_MREQ: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1; -pub const __UAPI_DEF_IN_CLASS: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR: u32 = 1; -pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1; -pub const __UAPI_DEF_IPV6_MREQ: u32 = 1; -pub const __UAPI_DEF_IPPROTO_V6: u32 = 1; -pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1; -pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1; -pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1; -pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1; -pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1; -pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1; -pub const __UAPI_DEF_XATTR: u32 = 1; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const IP_TOS: u32 = 1; -pub const IP_TTL: u32 = 2; -pub const IP_HDRINCL: u32 = 3; -pub const IP_OPTIONS: u32 = 4; -pub const IP_ROUTER_ALERT: u32 = 5; -pub const IP_RECVOPTS: u32 = 6; -pub const IP_RETOPTS: u32 = 7; -pub const IP_PKTINFO: u32 = 8; -pub const IP_PKTOPTIONS: u32 = 9; -pub const IP_MTU_DISCOVER: u32 = 10; -pub const IP_RECVERR: u32 = 11; -pub const IP_RECVTTL: u32 = 12; -pub const IP_RECVTOS: u32 = 13; -pub const IP_MTU: u32 = 14; -pub const IP_FREEBIND: u32 = 15; -pub const IP_IPSEC_POLICY: u32 = 16; -pub const IP_XFRM_POLICY: u32 = 17; -pub const IP_PASSSEC: u32 = 18; -pub const IP_TRANSPARENT: u32 = 19; -pub const IP_RECVRETOPTS: u32 = 7; -pub const IP_ORIGDSTADDR: u32 = 20; -pub const IP_RECVORIGDSTADDR: u32 = 20; -pub const IP_MINTTL: u32 = 21; -pub const IP_NODEFRAG: u32 = 22; -pub const IP_CHECKSUM: u32 = 23; -pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; -pub const IP_RECVFRAGSIZE: u32 = 25; -pub const IP_RECVERR_RFC4884: u32 = 26; -pub const IP_PMTUDISC_DONT: u32 = 0; -pub const IP_PMTUDISC_WANT: u32 = 1; -pub const IP_PMTUDISC_DO: u32 = 2; -pub const IP_PMTUDISC_PROBE: u32 = 3; -pub const IP_PMTUDISC_INTERFACE: u32 = 4; -pub const IP_PMTUDISC_OMIT: u32 = 5; -pub const IP_MULTICAST_IF: u32 = 32; -pub const IP_MULTICAST_TTL: u32 = 33; -pub const IP_MULTICAST_LOOP: u32 = 34; -pub const IP_ADD_MEMBERSHIP: u32 = 35; -pub const IP_DROP_MEMBERSHIP: u32 = 36; -pub const IP_UNBLOCK_SOURCE: u32 = 37; -pub const IP_BLOCK_SOURCE: u32 = 38; -pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; -pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; -pub const IP_MSFILTER: u32 = 41; -pub const MCAST_JOIN_GROUP: u32 = 42; -pub const MCAST_BLOCK_SOURCE: u32 = 43; -pub const MCAST_UNBLOCK_SOURCE: u32 = 44; -pub const MCAST_LEAVE_GROUP: u32 = 45; -pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; -pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; -pub const MCAST_MSFILTER: u32 = 48; -pub const IP_MULTICAST_ALL: u32 = 49; -pub const IP_UNICAST_IF: u32 = 50; -pub const IP_LOCAL_PORT_RANGE: u32 = 51; -pub const MCAST_EXCLUDE: u32 = 0; -pub const MCAST_INCLUDE: u32 = 1; -pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; -pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const __SOCK_SIZE__: u32 = 16; -pub const IN_CLASSA_NET: u32 = 4278190080; -pub const IN_CLASSA_NSHIFT: u32 = 24; -pub const IN_CLASSA_HOST: u32 = 16777215; -pub const IN_CLASSA_MAX: u32 = 128; -pub const IN_CLASSB_NET: u32 = 4294901760; -pub const IN_CLASSB_NSHIFT: u32 = 16; -pub const IN_CLASSB_HOST: u32 = 65535; -pub const IN_CLASSB_MAX: u32 = 65536; -pub const IN_CLASSC_NET: u32 = 4294967040; -pub const IN_CLASSC_NSHIFT: u32 = 8; -pub const IN_CLASSC_HOST: u32 = 255; -pub const IN_MULTICAST_NET: u32 = 3758096384; -pub const IN_CLASSE_NET: u32 = 4294967295; -pub const IN_CLASSE_NSHIFT: u32 = 0; -pub const IN_LOOPBACKNET: u32 = 127; -pub const INADDR_LOOPBACK: u32 = 2130706433; -pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; -pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; -pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; -pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; -pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; -pub const __LITTLE_ENDIAN: u32 = 1234; -pub const IN_ACCESS: u32 = 1; -pub const IN_MODIFY: u32 = 2; -pub const IN_ATTRIB: u32 = 4; -pub const IN_CLOSE_WRITE: u32 = 8; -pub const IN_CLOSE_NOWRITE: u32 = 16; -pub const IN_OPEN: u32 = 32; -pub const IN_MOVED_FROM: u32 = 64; -pub const IN_MOVED_TO: u32 = 128; -pub const IN_CREATE: u32 = 256; -pub const IN_DELETE: u32 = 512; -pub const IN_DELETE_SELF: u32 = 1024; -pub const IN_MOVE_SELF: u32 = 2048; -pub const IN_UNMOUNT: u32 = 8192; -pub const IN_Q_OVERFLOW: u32 = 16384; -pub const IN_IGNORED: u32 = 32768; -pub const IN_CLOSE: u32 = 24; -pub const IN_MOVE: u32 = 192; -pub const IN_ONLYDIR: u32 = 16777216; -pub const IN_DONT_FOLLOW: u32 = 33554432; -pub const IN_EXCL_UNLINK: u32 = 67108864; -pub const IN_MASK_CREATE: u32 = 268435456; -pub const IN_MASK_ADD: u32 = 536870912; -pub const IN_ISDIR: u32 = 1073741824; -pub const IN_ONESHOT: u32 = 2147483648; -pub const IN_ALL_EVENTS: u32 = 4095; -pub const IN_CLOEXEC: u32 = 524288; -pub const IN_NONBLOCK: u32 = 2048; -pub const IPTOS_TOS_MASK: u32 = 30; -pub const IPTOS_LOWDELAY: u32 = 16; -pub const IPTOS_THROUGHPUT: u32 = 8; -pub const IPTOS_RELIABILITY: u32 = 4; -pub const IPTOS_MINCOST: u32 = 2; -pub const IPTOS_PREC_MASK: u32 = 224; -pub const IPTOS_PREC_NETCONTROL: u32 = 224; -pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; -pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; -pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; -pub const IPTOS_PREC_FLASH: u32 = 96; -pub const IPTOS_PREC_IMMEDIATE: u32 = 64; -pub const IPTOS_PREC_PRIORITY: u32 = 32; -pub const IPTOS_PREC_ROUTINE: u32 = 0; -pub const IPOPT_COPY: u32 = 128; -pub const IPOPT_CLASS_MASK: u32 = 96; -pub const IPOPT_NUMBER_MASK: u32 = 31; -pub const IPOPT_CONTROL: u32 = 0; -pub const IPOPT_RESERVED1: u32 = 32; -pub const IPOPT_MEASUREMENT: u32 = 64; -pub const IPOPT_RESERVED2: u32 = 96; -pub const IPOPT_END: u32 = 0; -pub const IPOPT_NOOP: u32 = 1; -pub const IPOPT_SEC: u32 = 130; -pub const IPOPT_LSRR: u32 = 131; -pub const IPOPT_TIMESTAMP: u32 = 68; -pub const IPOPT_CIPSO: u32 = 134; -pub const IPOPT_RR: u32 = 7; -pub const IPOPT_SID: u32 = 136; -pub const IPOPT_SSRR: u32 = 137; -pub const IPOPT_RA: u32 = 148; -pub const IPVERSION: u32 = 4; -pub const MAXTTL: u32 = 255; -pub const IPDEFTTL: u32 = 64; -pub const IPOPT_OPTVAL: u32 = 0; -pub const IPOPT_OLEN: u32 = 1; -pub const IPOPT_OFFSET: u32 = 2; -pub const IPOPT_MINOFF: u32 = 4; -pub const MAX_IPOPTLEN: u32 = 40; -pub const IPOPT_NOP: u32 = 1; -pub const IPOPT_EOL: u32 = 0; -pub const IPOPT_TS: u32 = 68; -pub const IPOPT_TS_TSONLY: u32 = 0; -pub const IPOPT_TS_TSANDADDR: u32 = 1; -pub const IPOPT_TS_PRESPEC: u32 = 3; -pub const IPV4_BEET_PHMAXLEN: u32 = 8; -pub const IPV6_FL_A_GET: u32 = 0; -pub const IPV6_FL_A_PUT: u32 = 1; -pub const IPV6_FL_A_RENEW: u32 = 2; -pub const IPV6_FL_F_CREATE: u32 = 1; -pub const IPV6_FL_F_EXCL: u32 = 2; -pub const IPV6_FL_F_REFLECT: u32 = 4; -pub const IPV6_FL_F_REMOTE: u32 = 8; -pub const IPV6_FL_S_NONE: u32 = 0; -pub const IPV6_FL_S_EXCL: u32 = 1; -pub const IPV6_FL_S_PROCESS: u32 = 2; -pub const IPV6_FL_S_USER: u32 = 3; -pub const IPV6_FL_S_ANY: u32 = 255; -pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; -pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; -pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; -pub const IPV6_PRIORITY_FILLER: u32 = 256; -pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; -pub const IPV6_PRIORITY_RESERVED1: u32 = 768; -pub const IPV6_PRIORITY_BULK: u32 = 1024; -pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; -pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; -pub const IPV6_PRIORITY_CONTROL: u32 = 1792; -pub const IPV6_PRIORITY_8: u32 = 2048; -pub const IPV6_PRIORITY_9: u32 = 2304; -pub const IPV6_PRIORITY_10: u32 = 2560; -pub const IPV6_PRIORITY_11: u32 = 2816; -pub const IPV6_PRIORITY_12: u32 = 3072; -pub const IPV6_PRIORITY_13: u32 = 3328; -pub const IPV6_PRIORITY_14: u32 = 3584; -pub const IPV6_PRIORITY_15: u32 = 3840; -pub const IPPROTO_HOPOPTS: u32 = 0; -pub const IPPROTO_ROUTING: u32 = 43; -pub const IPPROTO_FRAGMENT: u32 = 44; -pub const IPPROTO_ICMPV6: u32 = 58; -pub const IPPROTO_NONE: u32 = 59; -pub const IPPROTO_DSTOPTS: u32 = 60; -pub const IPPROTO_MH: u32 = 135; -pub const IPV6_TLV_PAD1: u32 = 0; -pub const IPV6_TLV_PADN: u32 = 1; -pub const IPV6_TLV_ROUTERALERT: u32 = 5; -pub const IPV6_TLV_CALIPSO: u32 = 7; -pub const IPV6_TLV_IOAM: u32 = 49; -pub const IPV6_TLV_JUMBO: u32 = 194; -pub const IPV6_TLV_HAO: u32 = 201; -pub const IPV6_ADDRFORM: u32 = 1; -pub const IPV6_2292PKTINFO: u32 = 2; -pub const IPV6_2292HOPOPTS: u32 = 3; -pub const IPV6_2292DSTOPTS: u32 = 4; -pub const IPV6_2292RTHDR: u32 = 5; -pub const IPV6_2292PKTOPTIONS: u32 = 6; -pub const IPV6_CHECKSUM: u32 = 7; -pub const IPV6_2292HOPLIMIT: u32 = 8; -pub const IPV6_NEXTHOP: u32 = 9; -pub const IPV6_AUTHHDR: u32 = 10; -pub const IPV6_FLOWINFO: u32 = 11; -pub const IPV6_UNICAST_HOPS: u32 = 16; -pub const IPV6_MULTICAST_IF: u32 = 17; -pub const IPV6_MULTICAST_HOPS: u32 = 18; -pub const IPV6_MULTICAST_LOOP: u32 = 19; -pub const IPV6_ADD_MEMBERSHIP: u32 = 20; -pub const IPV6_DROP_MEMBERSHIP: u32 = 21; -pub const IPV6_ROUTER_ALERT: u32 = 22; -pub const IPV6_MTU_DISCOVER: u32 = 23; -pub const IPV6_MTU: u32 = 24; -pub const IPV6_RECVERR: u32 = 25; -pub const IPV6_V6ONLY: u32 = 26; -pub const IPV6_JOIN_ANYCAST: u32 = 27; -pub const IPV6_LEAVE_ANYCAST: u32 = 28; -pub const IPV6_MULTICAST_ALL: u32 = 29; -pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; -pub const IPV6_RECVERR_RFC4884: u32 = 31; -pub const IPV6_PMTUDISC_DONT: u32 = 0; -pub const IPV6_PMTUDISC_WANT: u32 = 1; -pub const IPV6_PMTUDISC_DO: u32 = 2; -pub const IPV6_PMTUDISC_PROBE: u32 = 3; -pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; -pub const IPV6_PMTUDISC_OMIT: u32 = 5; -pub const IPV6_FLOWLABEL_MGR: u32 = 32; -pub const IPV6_FLOWINFO_SEND: u32 = 33; -pub const IPV6_IPSEC_POLICY: u32 = 34; -pub const IPV6_XFRM_POLICY: u32 = 35; -pub const IPV6_HDRINCL: u32 = 36; -pub const IPV6_RECVPKTINFO: u32 = 49; -pub const IPV6_PKTINFO: u32 = 50; -pub const IPV6_RECVHOPLIMIT: u32 = 51; -pub const IPV6_HOPLIMIT: u32 = 52; -pub const IPV6_RECVHOPOPTS: u32 = 53; -pub const IPV6_HOPOPTS: u32 = 54; -pub const IPV6_RTHDRDSTOPTS: u32 = 55; -pub const IPV6_RECVRTHDR: u32 = 56; -pub const IPV6_RTHDR: u32 = 57; -pub const IPV6_RECVDSTOPTS: u32 = 58; -pub const IPV6_DSTOPTS: u32 = 59; -pub const IPV6_RECVPATHMTU: u32 = 60; -pub const IPV6_PATHMTU: u32 = 61; -pub const IPV6_DONTFRAG: u32 = 62; -pub const IPV6_RECVTCLASS: u32 = 66; -pub const IPV6_TCLASS: u32 = 67; -pub const IPV6_AUTOFLOWLABEL: u32 = 70; -pub const IPV6_ADDR_PREFERENCES: u32 = 72; -pub const IPV6_PREFER_SRC_TMP: u32 = 1; -pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; -pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; -pub const IPV6_PREFER_SRC_COA: u32 = 4; -pub const IPV6_PREFER_SRC_HOME: u32 = 1024; -pub const IPV6_PREFER_SRC_CGA: u32 = 8; -pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; -pub const IPV6_MINHOPCOUNT: u32 = 73; -pub const IPV6_ORIGDSTADDR: u32 = 74; -pub const IPV6_RECVORIGDSTADDR: u32 = 74; -pub const IPV6_TRANSPARENT: u32 = 75; -pub const IPV6_UNICAST_IF: u32 = 76; -pub const IPV6_RECVFRAGSIZE: u32 = 77; -pub const IPV6_FREEBIND: u32 = 78; -pub const IPV6_MIN_MTU: u32 = 1280; -pub const IPV6_SRCRT_STRICT: u32 = 1; -pub const IPV6_SRCRT_TYPE_0: u32 = 0; -pub const IPV6_SRCRT_TYPE_2: u32 = 2; -pub const IPV6_SRCRT_TYPE_3: u32 = 3; -pub const IPV6_SRCRT_TYPE_4: u32 = 4; -pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; -pub const ADFS_SUPER_MAGIC: u32 = 44533; -pub const AFFS_SUPER_MAGIC: u32 = 44543; -pub const AFS_SUPER_MAGIC: u32 = 1397113167; -pub const AUTOFS_SUPER_MAGIC: u32 = 391; -pub const CEPH_SUPER_MAGIC: u32 = 12805120; -pub const CODA_SUPER_MAGIC: u32 = 1937076805; -pub const CRAMFS_MAGIC: u32 = 684539205; -pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; -pub const DEBUGFS_MAGIC: u32 = 1684170528; -pub const SECURITYFS_MAGIC: u32 = 1935894131; -pub const SELINUX_MAGIC: u32 = 4185718668; -pub const SMACK_MAGIC: u32 = 1128357203; -pub const RAMFS_MAGIC: u32 = 2240043254; -pub const TMPFS_MAGIC: u32 = 16914836; -pub const HUGETLBFS_MAGIC: u32 = 2508478710; -pub const SQUASHFS_MAGIC: u32 = 1936814952; -pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; -pub const EFS_SUPER_MAGIC: u32 = 4278867; -pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; -pub const EXT2_SUPER_MAGIC: u32 = 61267; -pub const EXT3_SUPER_MAGIC: u32 = 61267; -pub const XENFS_SUPER_MAGIC: u32 = 2881100148; -pub const EXT4_SUPER_MAGIC: u32 = 61267; -pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; -pub const NILFS_SUPER_MAGIC: u32 = 13364; -pub const F2FS_SUPER_MAGIC: u32 = 4076150800; -pub const HPFS_SUPER_MAGIC: u32 = 4187351113; -pub const ISOFS_SUPER_MAGIC: u32 = 38496; -pub const JFFS2_SUPER_MAGIC: u32 = 29366; -pub const XFS_SUPER_MAGIC: u32 = 1481003842; -pub const PSTOREFS_MAGIC: u32 = 1634035564; -pub const EFIVARFS_MAGIC: u32 = 3730735588; -pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; -pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; -pub const FUSE_SUPER_MAGIC: u32 = 1702057286; -pub const MINIX_SUPER_MAGIC: u32 = 4991; -pub const MINIX_SUPER_MAGIC2: u32 = 5007; -pub const MINIX2_SUPER_MAGIC: u32 = 9320; -pub const MINIX2_SUPER_MAGIC2: u32 = 9336; -pub const MINIX3_SUPER_MAGIC: u32 = 19802; -pub const MSDOS_SUPER_MAGIC: u32 = 19780; -pub const EXFAT_SUPER_MAGIC: u32 = 538032816; -pub const NCP_SUPER_MAGIC: u32 = 22092; -pub const NFS_SUPER_MAGIC: u32 = 26985; -pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; -pub const OPENPROM_SUPER_MAGIC: u32 = 40865; -pub const QNX4_SUPER_MAGIC: u32 = 47; -pub const QNX6_SUPER_MAGIC: u32 = 1746473250; -pub const AFS_FS_MAGIC: u32 = 1799439955; -pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; -pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0"; -pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0"; -pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0"; -pub const SMB_SUPER_MAGIC: u32 = 20859; -pub const CIFS_SUPER_MAGIC: u32 = 4283649346; -pub const SMB2_SUPER_MAGIC: u32 = 4266872130; -pub const CGROUP_SUPER_MAGIC: u32 = 2613483; -pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; -pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; -pub const STACK_END_MAGIC: u32 = 1470918301; -pub const TRACEFS_MAGIC: u32 = 1953653091; -pub const V9FS_MAGIC: u32 = 16914839; -pub const BDEVFS_MAGIC: u32 = 1650746742; -pub const DAXFS_MAGIC: u32 = 1684300152; -pub const BINFMTFS_MAGIC: u32 = 1112100429; -pub const DEVPTS_SUPER_MAGIC: u32 = 7377; -pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; -pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; -pub const PIPEFS_MAGIC: u32 = 1346981957; -pub const PROC_SUPER_MAGIC: u32 = 40864; -pub const SOCKFS_MAGIC: u32 = 1397703499; -pub const SYSFS_MAGIC: u32 = 1650812274; -pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; -pub const MTD_INODE_FS_MAGIC: u32 = 288389204; -pub const ANON_INODE_FS_MAGIC: u32 = 151263540; -pub const BTRFS_TEST_MAGIC: u32 = 1936880249; -pub const NSFS_MAGIC: u32 = 1853056627; -pub const BPF_FS_MAGIC: u32 = 3405662737; -pub const AAFS_MAGIC: u32 = 1513908720; -pub const ZONEFS_MAGIC: u32 = 1515144787; -pub const UDF_SUPER_MAGIC: u32 = 352400198; -pub const DMA_BUF_MAGIC: u32 = 1145913666; -pub const DEVMEM_MAGIC: u32 = 1162691661; -pub const SECRETMEM_MAGIC: u32 = 1397048141; -pub const MAP_32BIT: u32 = 64; -pub const PROT_READ: u32 = 1; -pub const PROT_WRITE: u32 = 2; -pub const PROT_EXEC: u32 = 4; -pub const PROT_SEM: u32 = 8; -pub const PROT_NONE: u32 = 0; -pub const PROT_GROWSDOWN: u32 = 16777216; -pub const PROT_GROWSUP: u32 = 33554432; -pub const MAP_TYPE: u32 = 15; -pub const MAP_FIXED: u32 = 16; -pub const MAP_ANONYMOUS: u32 = 32; -pub const MAP_POPULATE: u32 = 32768; -pub const MAP_NONBLOCK: u32 = 65536; -pub const MAP_STACK: u32 = 131072; -pub const MAP_HUGETLB: u32 = 262144; -pub const MAP_SYNC: u32 = 524288; -pub const MAP_FIXED_NOREPLACE: u32 = 1048576; -pub const MAP_UNINITIALIZED: u32 = 67108864; -pub const MLOCK_ONFAULT: u32 = 1; -pub const MS_ASYNC: u32 = 1; -pub const MS_INVALIDATE: u32 = 2; -pub const MS_SYNC: u32 = 4; -pub const MADV_NORMAL: u32 = 0; -pub const MADV_RANDOM: u32 = 1; -pub const MADV_SEQUENTIAL: u32 = 2; -pub const MADV_WILLNEED: u32 = 3; -pub const MADV_DONTNEED: u32 = 4; -pub const MADV_FREE: u32 = 8; -pub const MADV_REMOVE: u32 = 9; -pub const MADV_DONTFORK: u32 = 10; -pub const MADV_DOFORK: u32 = 11; -pub const MADV_HWPOISON: u32 = 100; -pub const MADV_SOFT_OFFLINE: u32 = 101; -pub const MADV_MERGEABLE: u32 = 12; -pub const MADV_UNMERGEABLE: u32 = 13; -pub const MADV_HUGEPAGE: u32 = 14; -pub const MADV_NOHUGEPAGE: u32 = 15; -pub const MADV_DONTDUMP: u32 = 16; -pub const MADV_DODUMP: u32 = 17; -pub const MADV_WIPEONFORK: u32 = 18; -pub const MADV_KEEPONFORK: u32 = 19; -pub const MADV_COLD: u32 = 20; -pub const MADV_PAGEOUT: u32 = 21; -pub const MADV_POPULATE_READ: u32 = 22; -pub const MADV_POPULATE_WRITE: u32 = 23; -pub const MADV_DONTNEED_LOCKED: u32 = 24; -pub const MADV_COLLAPSE: u32 = 25; -pub const MAP_FILE: u32 = 0; -pub const PKEY_DISABLE_ACCESS: u32 = 1; -pub const PKEY_DISABLE_WRITE: u32 = 2; -pub const PKEY_ACCESS_MASK: u32 = 3; -pub const MAP_GROWSDOWN: u32 = 256; -pub const MAP_DENYWRITE: u32 = 2048; -pub const MAP_EXECUTABLE: u32 = 4096; -pub const MAP_LOCKED: u32 = 8192; -pub const MAP_NORESERVE: u32 = 16384; -pub const MCL_CURRENT: u32 = 1; -pub const MCL_FUTURE: u32 = 2; -pub const MCL_ONFAULT: u32 = 4; -pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; -pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; -pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; -pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; -pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; -pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; -pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; -pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; -pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; -pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; -pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; -pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; -pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; -pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; -pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; -pub const MREMAP_MAYMOVE: u32 = 1; -pub const MREMAP_FIXED: u32 = 2; -pub const MREMAP_DONTUNMAP: u32 = 4; -pub const OVERCOMMIT_GUESS: u32 = 0; -pub const OVERCOMMIT_ALWAYS: u32 = 1; -pub const OVERCOMMIT_NEVER: u32 = 2; -pub const MAP_SHARED: u32 = 1; -pub const MAP_PRIVATE: u32 = 2; -pub const MAP_SHARED_VALIDATE: u32 = 3; -pub const MAP_HUGE_SHIFT: u32 = 26; -pub const MAP_HUGE_MASK: u32 = 63; -pub const MAP_HUGE_16KB: u32 = 939524096; -pub const MAP_HUGE_64KB: u32 = 1073741824; -pub const MAP_HUGE_512KB: u32 = 1275068416; -pub const MAP_HUGE_1MB: u32 = 1342177280; -pub const MAP_HUGE_2MB: u32 = 1409286144; -pub const MAP_HUGE_8MB: u32 = 1543503872; -pub const MAP_HUGE_16MB: u32 = 1610612736; -pub const MAP_HUGE_32MB: u32 = 1677721600; -pub const MAP_HUGE_256MB: u32 = 1879048192; -pub const MAP_HUGE_512MB: u32 = 1946157056; -pub const MAP_HUGE_1GB: u32 = 2013265920; -pub const MAP_HUGE_2GB: u32 = 2080374784; -pub const MAP_HUGE_16GB: u32 = 2281701376; -pub const SIOCGSTAMP_OLD: u32 = 35078; -pub const SIOCGSTAMPNS_OLD: u32 = 35079; -pub const SOL_SOCKET: u32 = 1; -pub const SO_DEBUG: u32 = 1; -pub const SO_REUSEADDR: u32 = 2; -pub const SO_TYPE: u32 = 3; -pub const SO_ERROR: u32 = 4; -pub const SO_DONTROUTE: u32 = 5; -pub const SO_BROADCAST: u32 = 6; -pub const SO_SNDBUF: u32 = 7; -pub const SO_RCVBUF: u32 = 8; -pub const SO_SNDBUFFORCE: u32 = 32; -pub const SO_RCVBUFFORCE: u32 = 33; -pub const SO_KEEPALIVE: u32 = 9; -pub const SO_OOBINLINE: u32 = 10; -pub const SO_NO_CHECK: u32 = 11; -pub const SO_PRIORITY: u32 = 12; -pub const SO_LINGER: u32 = 13; -pub const SO_BSDCOMPAT: u32 = 14; -pub const SO_REUSEPORT: u32 = 15; -pub const SO_PASSCRED: u32 = 16; -pub const SO_PEERCRED: u32 = 17; -pub const SO_RCVLOWAT: u32 = 18; -pub const SO_SNDLOWAT: u32 = 19; -pub const SO_RCVTIMEO_OLD: u32 = 20; -pub const SO_SNDTIMEO_OLD: u32 = 21; -pub const SO_SECURITY_AUTHENTICATION: u32 = 22; -pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; -pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; -pub const SO_BINDTODEVICE: u32 = 25; -pub const SO_ATTACH_FILTER: u32 = 26; -pub const SO_DETACH_FILTER: u32 = 27; -pub const SO_GET_FILTER: u32 = 26; -pub const SO_PEERNAME: u32 = 28; -pub const SO_ACCEPTCONN: u32 = 30; -pub const SO_PEERSEC: u32 = 31; -pub const SO_PASSSEC: u32 = 34; -pub const SO_MARK: u32 = 36; -pub const SO_PROTOCOL: u32 = 38; -pub const SO_DOMAIN: u32 = 39; -pub const SO_RXQ_OVFL: u32 = 40; -pub const SO_WIFI_STATUS: u32 = 41; -pub const SCM_WIFI_STATUS: u32 = 41; -pub const SO_PEEK_OFF: u32 = 42; -pub const SO_NOFCS: u32 = 43; -pub const SO_LOCK_FILTER: u32 = 44; -pub const SO_SELECT_ERR_QUEUE: u32 = 45; -pub const SO_BUSY_POLL: u32 = 46; -pub const SO_MAX_PACING_RATE: u32 = 47; -pub const SO_BPF_EXTENSIONS: u32 = 48; -pub const SO_INCOMING_CPU: u32 = 49; -pub const SO_ATTACH_BPF: u32 = 50; -pub const SO_DETACH_BPF: u32 = 27; -pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; -pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; -pub const SO_CNX_ADVICE: u32 = 53; -pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; -pub const SO_MEMINFO: u32 = 55; -pub const SO_INCOMING_NAPI_ID: u32 = 56; -pub const SO_COOKIE: u32 = 57; -pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; -pub const SO_PEERGROUPS: u32 = 59; -pub const SO_ZEROCOPY: u32 = 60; -pub const SO_TXTIME: u32 = 61; -pub const SCM_TXTIME: u32 = 61; -pub const SO_BINDTOIFINDEX: u32 = 62; -pub const SO_TIMESTAMP_OLD: u32 = 29; -pub const SO_TIMESTAMPNS_OLD: u32 = 35; -pub const SO_TIMESTAMPING_OLD: u32 = 37; -pub const SO_TIMESTAMP_NEW: u32 = 63; -pub const SO_TIMESTAMPNS_NEW: u32 = 64; -pub const SO_TIMESTAMPING_NEW: u32 = 65; -pub const SO_RCVTIMEO_NEW: u32 = 66; -pub const SO_SNDTIMEO_NEW: u32 = 67; -pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; -pub const SO_PREFER_BUSY_POLL: u32 = 69; -pub const SO_BUSY_POLL_BUDGET: u32 = 70; -pub const SO_NETNS_COOKIE: u32 = 71; -pub const SO_BUF_LOCK: u32 = 72; -pub const SO_RESERVE_MEM: u32 = 73; -pub const SO_TXREHASH: u32 = 74; -pub const SO_RCVMARK: u32 = 75; -pub const SO_TIMESTAMP: u32 = 29; -pub const SO_TIMESTAMPNS: u32 = 35; -pub const SO_TIMESTAMPING: u32 = 37; -pub const SO_RCVTIMEO: u32 = 20; -pub const SO_SNDTIMEO: u32 = 21; -pub const SCM_TIMESTAMP: u32 = 29; -pub const SCM_TIMESTAMPNS: u32 = 35; -pub const SCM_TIMESTAMPING: u32 = 37; -pub const SYS_SOCKET: u32 = 1; -pub const SYS_BIND: u32 = 2; -pub const SYS_CONNECT: u32 = 3; -pub const SYS_LISTEN: u32 = 4; -pub const SYS_ACCEPT: u32 = 5; -pub const SYS_GETSOCKNAME: u32 = 6; -pub const SYS_GETPEERNAME: u32 = 7; -pub const SYS_SOCKETPAIR: u32 = 8; -pub const SYS_SEND: u32 = 9; -pub const SYS_RECV: u32 = 10; -pub const SYS_SENDTO: u32 = 11; -pub const SYS_RECVFROM: u32 = 12; -pub const SYS_SHUTDOWN: u32 = 13; -pub const SYS_SETSOCKOPT: u32 = 14; -pub const SYS_GETSOCKOPT: u32 = 15; -pub const SYS_SENDMSG: u32 = 16; -pub const SYS_RECVMSG: u32 = 17; -pub const SYS_ACCEPT4: u32 = 18; -pub const SYS_RECVMMSG: u32 = 19; -pub const SYS_SENDMMSG: u32 = 20; -pub const __SO_ACCEPTCON: u32 = 65536; -pub const POLLIN: u32 = 1; -pub const POLLPRI: u32 = 2; -pub const POLLOUT: u32 = 4; -pub const POLLERR: u32 = 8; -pub const POLLHUP: u32 = 16; -pub const POLLNVAL: u32 = 32; -pub const POLLRDNORM: u32 = 64; -pub const POLLRDBAND: u32 = 128; -pub const POLLWRNORM: u32 = 256; -pub const POLLWRBAND: u32 = 512; -pub const POLLMSG: u32 = 1024; -pub const POLLREMOVE: u32 = 4096; -pub const POLLRDHUP: u32 = 8192; -pub const PR_SET_PDEATHSIG: u32 = 1; -pub const PR_GET_PDEATHSIG: u32 = 2; -pub const PR_GET_DUMPABLE: u32 = 3; -pub const PR_SET_DUMPABLE: u32 = 4; -pub const PR_GET_UNALIGN: u32 = 5; -pub const PR_SET_UNALIGN: u32 = 6; -pub const PR_UNALIGN_NOPRINT: u32 = 1; -pub const PR_UNALIGN_SIGBUS: u32 = 2; -pub const PR_GET_KEEPCAPS: u32 = 7; -pub const PR_SET_KEEPCAPS: u32 = 8; -pub const PR_GET_FPEMU: u32 = 9; -pub const PR_SET_FPEMU: u32 = 10; -pub const PR_FPEMU_NOPRINT: u32 = 1; -pub const PR_FPEMU_SIGFPE: u32 = 2; -pub const PR_GET_FPEXC: u32 = 11; -pub const PR_SET_FPEXC: u32 = 12; -pub const PR_FP_EXC_SW_ENABLE: u32 = 128; -pub const PR_FP_EXC_DIV: u32 = 65536; -pub const PR_FP_EXC_OVF: u32 = 131072; -pub const PR_FP_EXC_UND: u32 = 262144; -pub const PR_FP_EXC_RES: u32 = 524288; -pub const PR_FP_EXC_INV: u32 = 1048576; -pub const PR_FP_EXC_DISABLED: u32 = 0; -pub const PR_FP_EXC_NONRECOV: u32 = 1; -pub const PR_FP_EXC_ASYNC: u32 = 2; -pub const PR_FP_EXC_PRECISE: u32 = 3; -pub const PR_GET_TIMING: u32 = 13; -pub const PR_SET_TIMING: u32 = 14; -pub const PR_TIMING_STATISTICAL: u32 = 0; -pub const PR_TIMING_TIMESTAMP: u32 = 1; -pub const PR_SET_NAME: u32 = 15; -pub const PR_GET_NAME: u32 = 16; -pub const PR_GET_ENDIAN: u32 = 19; -pub const PR_SET_ENDIAN: u32 = 20; -pub const PR_ENDIAN_BIG: u32 = 0; -pub const PR_ENDIAN_LITTLE: u32 = 1; -pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; -pub const PR_GET_SECCOMP: u32 = 21; -pub const PR_SET_SECCOMP: u32 = 22; -pub const PR_CAPBSET_READ: u32 = 23; -pub const PR_CAPBSET_DROP: u32 = 24; -pub const PR_GET_TSC: u32 = 25; -pub const PR_SET_TSC: u32 = 26; -pub const PR_TSC_ENABLE: u32 = 1; -pub const PR_TSC_SIGSEGV: u32 = 2; -pub const PR_GET_SECUREBITS: u32 = 27; -pub const PR_SET_SECUREBITS: u32 = 28; -pub const PR_SET_TIMERSLACK: u32 = 29; -pub const PR_GET_TIMERSLACK: u32 = 30; -pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; -pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; -pub const PR_MCE_KILL: u32 = 33; -pub const PR_MCE_KILL_CLEAR: u32 = 0; -pub const PR_MCE_KILL_SET: u32 = 1; -pub const PR_MCE_KILL_LATE: u32 = 0; -pub const PR_MCE_KILL_EARLY: u32 = 1; -pub const PR_MCE_KILL_DEFAULT: u32 = 2; -pub const PR_MCE_KILL_GET: u32 = 34; -pub const PR_SET_MM: u32 = 35; -pub const PR_SET_MM_START_CODE: u32 = 1; -pub const PR_SET_MM_END_CODE: u32 = 2; -pub const PR_SET_MM_START_DATA: u32 = 3; -pub const PR_SET_MM_END_DATA: u32 = 4; -pub const PR_SET_MM_START_STACK: u32 = 5; -pub const PR_SET_MM_START_BRK: u32 = 6; -pub const PR_SET_MM_BRK: u32 = 7; -pub const PR_SET_MM_ARG_START: u32 = 8; -pub const PR_SET_MM_ARG_END: u32 = 9; -pub const PR_SET_MM_ENV_START: u32 = 10; -pub const PR_SET_MM_ENV_END: u32 = 11; -pub const PR_SET_MM_AUXV: u32 = 12; -pub const PR_SET_MM_EXE_FILE: u32 = 13; -pub const PR_SET_MM_MAP: u32 = 14; -pub const PR_SET_MM_MAP_SIZE: u32 = 15; -pub const PR_SET_PTRACER: u32 = 1499557217; -pub const PR_SET_CHILD_SUBREAPER: u32 = 36; -pub const PR_GET_CHILD_SUBREAPER: u32 = 37; -pub const PR_SET_NO_NEW_PRIVS: u32 = 38; -pub const PR_GET_NO_NEW_PRIVS: u32 = 39; -pub const PR_GET_TID_ADDRESS: u32 = 40; -pub const PR_SET_THP_DISABLE: u32 = 41; -pub const PR_GET_THP_DISABLE: u32 = 42; -pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; -pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; -pub const PR_SET_FP_MODE: u32 = 45; -pub const PR_GET_FP_MODE: u32 = 46; -pub const PR_FP_MODE_FR: u32 = 1; -pub const PR_FP_MODE_FRE: u32 = 2; -pub const PR_CAP_AMBIENT: u32 = 47; -pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; -pub const PR_CAP_AMBIENT_RAISE: u32 = 2; -pub const PR_CAP_AMBIENT_LOWER: u32 = 3; -pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; -pub const PR_SVE_SET_VL: u32 = 50; -pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SVE_GET_VL: u32 = 51; -pub const PR_SVE_VL_LEN_MASK: u32 = 65535; -pub const PR_SVE_VL_INHERIT: u32 = 131072; -pub const PR_GET_SPECULATION_CTRL: u32 = 52; -pub const PR_SET_SPECULATION_CTRL: u32 = 53; -pub const PR_SPEC_STORE_BYPASS: u32 = 0; -pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; -pub const PR_SPEC_L1D_FLUSH: u32 = 2; -pub const PR_SPEC_NOT_AFFECTED: u32 = 0; -pub const PR_SPEC_PRCTL: u32 = 1; -pub const PR_SPEC_ENABLE: u32 = 2; -pub const PR_SPEC_DISABLE: u32 = 4; -pub const PR_SPEC_FORCE_DISABLE: u32 = 8; -pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; -pub const PR_PAC_RESET_KEYS: u32 = 54; -pub const PR_PAC_APIAKEY: u32 = 1; -pub const PR_PAC_APIBKEY: u32 = 2; -pub const PR_PAC_APDAKEY: u32 = 4; -pub const PR_PAC_APDBKEY: u32 = 8; -pub const PR_PAC_APGAKEY: u32 = 16; -pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; -pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; -pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; -pub const PR_MTE_TCF_NONE: u32 = 0; -pub const PR_MTE_TCF_SYNC: u32 = 2; -pub const PR_MTE_TCF_ASYNC: u32 = 4; -pub const PR_MTE_TCF_MASK: u32 = 6; -pub const PR_MTE_TAG_SHIFT: u32 = 3; -pub const PR_MTE_TAG_MASK: u32 = 524280; -pub const PR_MTE_TCF_SHIFT: u32 = 1; -pub const PR_SET_IO_FLUSHER: u32 = 57; -pub const PR_GET_IO_FLUSHER: u32 = 58; -pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; -pub const PR_SYS_DISPATCH_OFF: u32 = 0; -pub const PR_SYS_DISPATCH_ON: u32 = 1; -pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; -pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; -pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; -pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; -pub const PR_SCHED_CORE: u32 = 62; -pub const PR_SCHED_CORE_GET: u32 = 0; -pub const PR_SCHED_CORE_CREATE: u32 = 1; -pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; -pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; -pub const PR_SCHED_CORE_MAX: u32 = 4; -pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; -pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; -pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; -pub const PR_SME_SET_VL: u32 = 63; -pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; -pub const PR_SME_GET_VL: u32 = 64; -pub const PR_SME_VL_LEN_MASK: u32 = 65535; -pub const PR_SME_VL_INHERIT: u32 = 131072; -pub const PR_SET_MDWE: u32 = 65; -pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; -pub const PR_GET_MDWE: u32 = 66; -pub const PR_SET_VMA: u32 = 1398164801; -pub const PR_SET_VMA_ANON_NAME: u32 = 0; -pub const GRND_NONBLOCK: u32 = 1; -pub const GRND_RANDOM: u32 = 2; -pub const GRND_INSECURE: u32 = 4; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -pub const CLOCK_REALTIME: u32 = 0; -pub const CLOCK_MONOTONIC: u32 = 1; -pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; -pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; -pub const CLOCK_MONOTONIC_RAW: u32 = 4; -pub const CLOCK_REALTIME_COARSE: u32 = 5; -pub const CLOCK_MONOTONIC_COARSE: u32 = 6; -pub const CLOCK_BOOTTIME: u32 = 7; -pub const CLOCK_REALTIME_ALARM: u32 = 8; -pub const CLOCK_BOOTTIME_ALARM: u32 = 9; -pub const CLOCK_SGI_CYCLE: u32 = 10; -pub const CLOCK_TAI: u32 = 11; -pub const MAX_CLOCKS: u32 = 16; -pub const CLOCKS_MASK: u32 = 1; -pub const CLOCKS_MONO: u32 = 1; -pub const TIMER_ABSTIME: u32 = 1; -pub const RUSAGE_SELF: u32 = 0; -pub const RUSAGE_CHILDREN: i32 = -1; -pub const RUSAGE_BOTH: i32 = -2; -pub const RUSAGE_THREAD: u32 = 1; -pub const RLIM64_INFINITY: i32 = -1; -pub const PRIO_MIN: i32 = -20; -pub const PRIO_MAX: u32 = 20; -pub const PRIO_PROCESS: u32 = 0; -pub const PRIO_PGRP: u32 = 1; -pub const PRIO_USER: u32 = 2; -pub const _STK_LIM: u32 = 8388608; -pub const MLOCK_LIMIT: u32 = 8388608; -pub const RLIMIT_CPU: u32 = 0; -pub const RLIMIT_FSIZE: u32 = 1; -pub const RLIMIT_DATA: u32 = 2; -pub const RLIMIT_STACK: u32 = 3; -pub const RLIMIT_CORE: u32 = 4; -pub const RLIMIT_RSS: u32 = 5; -pub const RLIMIT_NPROC: u32 = 6; -pub const RLIMIT_NOFILE: u32 = 7; -pub const RLIMIT_MEMLOCK: u32 = 8; -pub const RLIMIT_AS: u32 = 9; -pub const RLIMIT_LOCKS: u32 = 10; -pub const RLIMIT_SIGPENDING: u32 = 11; -pub const RLIMIT_MSGQUEUE: u32 = 12; -pub const RLIMIT_NICE: u32 = 13; -pub const RLIMIT_RTPRIO: u32 = 14; -pub const RLIMIT_RTTIME: u32 = 15; -pub const RLIM_NLIMITS: u32 = 16; -pub const RLIM_INFINITY: i32 = -1; -pub const CSIGNAL: u32 = 255; -pub const CLONE_VM: u32 = 256; -pub const CLONE_FS: u32 = 512; -pub const CLONE_FILES: u32 = 1024; -pub const CLONE_SIGHAND: u32 = 2048; -pub const CLONE_PIDFD: u32 = 4096; -pub const CLONE_PTRACE: u32 = 8192; -pub const CLONE_VFORK: u32 = 16384; -pub const CLONE_PARENT: u32 = 32768; -pub const CLONE_THREAD: u32 = 65536; -pub const CLONE_NEWNS: u32 = 131072; -pub const CLONE_SYSVSEM: u32 = 262144; -pub const CLONE_SETTLS: u32 = 524288; -pub const CLONE_PARENT_SETTID: u32 = 1048576; -pub const CLONE_CHILD_CLEARTID: u32 = 2097152; -pub const CLONE_DETACHED: u32 = 4194304; -pub const CLONE_UNTRACED: u32 = 8388608; -pub const CLONE_CHILD_SETTID: u32 = 16777216; -pub const CLONE_NEWCGROUP: u32 = 33554432; -pub const CLONE_NEWUTS: u32 = 67108864; -pub const CLONE_NEWIPC: u32 = 134217728; -pub const CLONE_NEWUSER: u32 = 268435456; -pub const CLONE_NEWPID: u32 = 536870912; -pub const CLONE_NEWNET: u32 = 1073741824; -pub const CLONE_IO: u32 = 2147483648; -pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; -pub const CLONE_INTO_CGROUP: u64 = 8589934592; -pub const CLONE_NEWTIME: u32 = 128; -pub const CLONE_ARGS_SIZE_VER0: u32 = 64; -pub const CLONE_ARGS_SIZE_VER1: u32 = 80; -pub const CLONE_ARGS_SIZE_VER2: u32 = 88; -pub const SCHED_NORMAL: u32 = 0; -pub const SCHED_FIFO: u32 = 1; -pub const SCHED_RR: u32 = 2; -pub const SCHED_BATCH: u32 = 3; -pub const SCHED_IDLE: u32 = 5; -pub const SCHED_DEADLINE: u32 = 6; -pub const SCHED_RESET_ON_FORK: u32 = 1073741824; -pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; -pub const SCHED_FLAG_RECLAIM: u32 = 2; -pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; -pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; -pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; -pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; -pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; -pub const SCHED_FLAG_KEEP_ALL: u32 = 24; -pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; -pub const SCHED_FLAG_ALL: u32 = 127; -pub const NSIG: u32 = 32; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGBUS: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGUSR1: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGUSR2: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGSTKFLT: u32 = 16; -pub const SIGCHLD: u32 = 17; -pub const SIGCONT: u32 = 18; -pub const SIGSTOP: u32 = 19; -pub const SIGTSTP: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGURG: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGIO: u32 = 29; -pub const SIGPOLL: u32 = 29; -pub const SIGPWR: u32 = 30; -pub const SIGSYS: u32 = 31; -pub const SIGUNUSED: u32 = 31; -pub const SIGRTMIN: u32 = 32; -pub const SA_RESTORER: u32 = 67108864; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 8192; -pub const SA_NOCLDSTOP: u32 = 1; -pub const SA_NOCLDWAIT: u32 = 2; -pub const SA_SIGINFO: u32 = 4; -pub const SA_UNSUPPORTED: u32 = 1024; -pub const SA_EXPOSE_TAGBITS: u32 = 2048; -pub const SA_ONSTACK: u32 = 134217728; -pub const SA_RESTART: u32 = 268435456; -pub const SA_NODEFER: u32 = 1073741824; -pub const SA_RESETHAND: u32 = 2147483648; -pub const SA_NOMASK: u32 = 1073741824; -pub const SA_ONESHOT: u32 = 2147483648; -pub const SIG_BLOCK: u32 = 0; -pub const SIG_UNBLOCK: u32 = 1; -pub const SIG_SETMASK: u32 = 2; -pub const SI_MAX_SIZE: u32 = 128; -pub const SI_USER: u32 = 0; -pub const SI_KERNEL: u32 = 128; -pub const SI_QUEUE: i32 = -1; -pub const SI_TIMER: i32 = -2; -pub const SI_MESGQ: i32 = -3; -pub const SI_ASYNCIO: i32 = -4; -pub const SI_SIGIO: i32 = -5; -pub const SI_TKILL: i32 = -6; -pub const SI_DETHREAD: i32 = -7; -pub const SI_ASYNCNL: i32 = -60; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const ILL_BADIADDR: u32 = 9; -pub const __ILL_BREAK: u32 = 10; -pub const __ILL_BNDMOD: u32 = 11; -pub const NSIGILL: u32 = 11; -pub const FPE_INTDIV: u32 = 1; -pub const FPE_INTOVF: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const __FPE_DECOVF: u32 = 9; -pub const __FPE_DECDIV: u32 = 10; -pub const __FPE_DECERR: u32 = 11; -pub const __FPE_INVASC: u32 = 12; -pub const __FPE_INVDEC: u32 = 13; -pub const FPE_FLTUNK: u32 = 14; -pub const FPE_CONDTRAP: u32 = 15; -pub const NSIGFPE: u32 = 15; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_BNDERR: u32 = 3; -pub const SEGV_PKUERR: u32 = 4; -pub const SEGV_ACCADI: u32 = 5; -pub const SEGV_ADIDERR: u32 = 6; -pub const SEGV_ADIPERR: u32 = 7; -pub const SEGV_MTEAERR: u32 = 8; -pub const SEGV_MTESERR: u32 = 9; -pub const NSIGSEGV: u32 = 9; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_MCEERR_AR: u32 = 4; -pub const BUS_MCEERR_AO: u32 = 5; -pub const NSIGBUS: u32 = 5; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_BRANCH: u32 = 3; -pub const TRAP_HWBKPT: u32 = 4; -pub const TRAP_UNK: u32 = 5; -pub const TRAP_PERF: u32 = 6; -pub const NSIGTRAP: u32 = 6; -pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const NSIGCHLD: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const NSIGPOLL: u32 = 6; -pub const SYS_SECCOMP: u32 = 1; -pub const SYS_USER_DISPATCH: u32 = 2; -pub const NSIGSYS: u32 = 2; -pub const EMT_TAGOVF: u32 = 1; -pub const NSIGEMT: u32 = 1; -pub const SIGEV_SIGNAL: u32 = 0; -pub const SIGEV_NONE: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const SIGEV_MAX_SIZE: u32 = 64; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 2; -pub const SS_AUTODISARM: u32 = 2147483648; -pub const SS_FLAG_BITS: u32 = 2147483648; -pub const S_IFMT: u32 = 61440; -pub const S_IFSOCK: u32 = 49152; -pub const S_IFLNK: u32 = 40960; -pub const S_IFREG: u32 = 32768; -pub const S_IFBLK: u32 = 24576; -pub const S_IFDIR: u32 = 16384; -pub const S_IFCHR: u32 = 8192; -pub const S_IFIFO: u32 = 4096; -pub const S_ISUID: u32 = 2048; -pub const S_ISGID: u32 = 1024; -pub const S_ISVTX: u32 = 512; -pub const S_IRWXU: u32 = 448; -pub const S_IRUSR: u32 = 256; -pub const S_IWUSR: u32 = 128; -pub const S_IXUSR: u32 = 64; -pub const S_IRWXG: u32 = 56; -pub const S_IRGRP: u32 = 32; -pub const S_IWGRP: u32 = 16; -pub const S_IXGRP: u32 = 8; -pub const S_IRWXO: u32 = 7; -pub const S_IROTH: u32 = 4; -pub const S_IWOTH: u32 = 2; -pub const S_IXOTH: u32 = 1; -pub const STATX_TYPE: u32 = 1; -pub const STATX_MODE: u32 = 2; -pub const STATX_NLINK: u32 = 4; -pub const STATX_UID: u32 = 8; -pub const STATX_GID: u32 = 16; -pub const STATX_ATIME: u32 = 32; -pub const STATX_MTIME: u32 = 64; -pub const STATX_CTIME: u32 = 128; -pub const STATX_INO: u32 = 256; -pub const STATX_SIZE: u32 = 512; -pub const STATX_BLOCKS: u32 = 1024; -pub const STATX_BASIC_STATS: u32 = 2047; -pub const STATX_BTIME: u32 = 2048; -pub const STATX_MNT_ID: u32 = 4096; -pub const STATX_DIOALIGN: u32 = 8192; -pub const STATX__RESERVED: u32 = 2147483648; -pub const STATX_ALL: u32 = 4095; -pub const STATX_ATTR_COMPRESSED: u32 = 4; -pub const STATX_ATTR_IMMUTABLE: u32 = 16; -pub const STATX_ATTR_APPEND: u32 = 32; -pub const STATX_ATTR_NODUMP: u32 = 64; -pub const STATX_ATTR_ENCRYPTED: u32 = 2048; -pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; -pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; -pub const STATX_ATTR_VERITY: u32 = 1048576; -pub const STATX_ATTR_DAX: u32 = 2097152; -pub const SI_LOAD_SHIFT: u32 = 16; -pub const TCP_MSS_DEFAULT: u32 = 536; -pub const TCP_MSS_DESIRED: u32 = 1220; -pub const TCP_NODELAY: u32 = 1; -pub const TCP_MAXSEG: u32 = 2; -pub const TCP_CORK: u32 = 3; -pub const TCP_KEEPIDLE: u32 = 4; -pub const TCP_KEEPINTVL: u32 = 5; -pub const TCP_KEEPCNT: u32 = 6; -pub const TCP_SYNCNT: u32 = 7; -pub const TCP_LINGER2: u32 = 8; -pub const TCP_DEFER_ACCEPT: u32 = 9; -pub const TCP_WINDOW_CLAMP: u32 = 10; -pub const TCP_INFO: u32 = 11; -pub const TCP_QUICKACK: u32 = 12; -pub const TCP_CONGESTION: u32 = 13; -pub const TCP_MD5SIG: u32 = 14; -pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; -pub const TCP_THIN_DUPACK: u32 = 17; -pub const TCP_USER_TIMEOUT: u32 = 18; -pub const TCP_REPAIR: u32 = 19; -pub const TCP_REPAIR_QUEUE: u32 = 20; -pub const TCP_QUEUE_SEQ: u32 = 21; -pub const TCP_REPAIR_OPTIONS: u32 = 22; -pub const TCP_FASTOPEN: u32 = 23; -pub const TCP_TIMESTAMP: u32 = 24; -pub const TCP_NOTSENT_LOWAT: u32 = 25; -pub const TCP_CC_INFO: u32 = 26; -pub const TCP_SAVE_SYN: u32 = 27; -pub const TCP_SAVED_SYN: u32 = 28; -pub const TCP_REPAIR_WINDOW: u32 = 29; -pub const TCP_FASTOPEN_CONNECT: u32 = 30; -pub const TCP_ULP: u32 = 31; -pub const TCP_MD5SIG_EXT: u32 = 32; -pub const TCP_FASTOPEN_KEY: u32 = 33; -pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; -pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; -pub const TCP_INQ: u32 = 36; -pub const TCP_CM_INQ: u32 = 36; -pub const TCP_TX_DELAY: u32 = 37; -pub const TCP_REPAIR_ON: u32 = 1; -pub const TCP_REPAIR_OFF: u32 = 0; -pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; -pub const TCPI_OPT_TIMESTAMPS: u32 = 1; -pub const TCPI_OPT_SACK: u32 = 2; -pub const TCPI_OPT_WSCALE: u32 = 4; -pub const TCPI_OPT_ECN: u32 = 8; -pub const TCPI_OPT_ECN_SEEN: u32 = 16; -pub const TCPI_OPT_SYN_DATA: u32 = 32; -pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; -pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; -pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; -pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; -pub const IGNBRK: u32 = 1; -pub const BRKINT: u32 = 2; -pub const IGNPAR: u32 = 4; -pub const PARMRK: u32 = 8; -pub const INPCK: u32 = 16; -pub const ISTRIP: u32 = 32; -pub const INLCR: u32 = 64; -pub const IGNCR: u32 = 128; -pub const ICRNL: u32 = 256; -pub const IXANY: u32 = 2048; -pub const OPOST: u32 = 1; -pub const OCRNL: u32 = 8; -pub const ONOCR: u32 = 16; -pub const ONLRET: u32 = 32; -pub const OFILL: u32 = 64; -pub const OFDEL: u32 = 128; -pub const B0: u32 = 0; -pub const B50: u32 = 1; -pub const B75: u32 = 2; -pub const B110: u32 = 3; -pub const B134: u32 = 4; -pub const B150: u32 = 5; -pub const B200: u32 = 6; -pub const B300: u32 = 7; -pub const B600: u32 = 8; -pub const B1200: u32 = 9; -pub const B1800: u32 = 10; -pub const B2400: u32 = 11; -pub const B4800: u32 = 12; -pub const B9600: u32 = 13; -pub const B19200: u32 = 14; -pub const B38400: u32 = 15; -pub const EXTA: u32 = 14; -pub const EXTB: u32 = 15; -pub const ADDRB: u32 = 536870912; -pub const CMSPAR: u32 = 1073741824; -pub const CRTSCTS: u32 = 2147483648; -pub const IBSHIFT: u32 = 16; -pub const TCOOFF: u32 = 0; -pub const TCOON: u32 = 1; -pub const TCIOFF: u32 = 2; -pub const TCION: u32 = 3; -pub const TCIFLUSH: u32 = 0; -pub const TCOFLUSH: u32 = 1; -pub const TCIOFLUSH: u32 = 2; -pub const NCCS: u32 = 19; -pub const VINTR: u32 = 0; -pub const VQUIT: u32 = 1; -pub const VERASE: u32 = 2; -pub const VKILL: u32 = 3; -pub const VEOF: u32 = 4; -pub const VTIME: u32 = 5; -pub const VMIN: u32 = 6; -pub const VSWTC: u32 = 7; -pub const VSTART: u32 = 8; -pub const VSTOP: u32 = 9; -pub const VSUSP: u32 = 10; -pub const VEOL: u32 = 11; -pub const VREPRINT: u32 = 12; -pub const VDISCARD: u32 = 13; -pub const VWERASE: u32 = 14; -pub const VLNEXT: u32 = 15; -pub const VEOL2: u32 = 16; -pub const IUCLC: u32 = 512; -pub const IXON: u32 = 1024; -pub const IXOFF: u32 = 4096; -pub const IMAXBEL: u32 = 8192; -pub const IUTF8: u32 = 16384; -pub const OLCUC: u32 = 2; -pub const ONLCR: u32 = 4; -pub const NLDLY: u32 = 256; -pub const NL0: u32 = 0; -pub const NL1: u32 = 256; -pub const CRDLY: u32 = 1536; -pub const CR0: u32 = 0; -pub const CR1: u32 = 512; -pub const CR2: u32 = 1024; -pub const CR3: u32 = 1536; -pub const TABDLY: u32 = 6144; -pub const TAB0: u32 = 0; -pub const TAB1: u32 = 2048; -pub const TAB2: u32 = 4096; -pub const TAB3: u32 = 6144; -pub const XTABS: u32 = 6144; -pub const BSDLY: u32 = 8192; -pub const BS0: u32 = 0; -pub const BS1: u32 = 8192; -pub const VTDLY: u32 = 16384; -pub const VT0: u32 = 0; -pub const VT1: u32 = 16384; -pub const FFDLY: u32 = 32768; -pub const FF0: u32 = 0; -pub const FF1: u32 = 32768; -pub const CBAUD: u32 = 4111; -pub const CSIZE: u32 = 48; -pub const CS5: u32 = 0; -pub const CS6: u32 = 16; -pub const CS7: u32 = 32; -pub const CS8: u32 = 48; -pub const CSTOPB: u32 = 64; -pub const CREAD: u32 = 128; -pub const PARENB: u32 = 256; -pub const PARODD: u32 = 512; -pub const HUPCL: u32 = 1024; -pub const CLOCAL: u32 = 2048; -pub const CBAUDEX: u32 = 4096; -pub const BOTHER: u32 = 4096; -pub const B57600: u32 = 4097; -pub const B115200: u32 = 4098; -pub const B230400: u32 = 4099; -pub const B460800: u32 = 4100; -pub const B500000: u32 = 4101; -pub const B576000: u32 = 4102; -pub const B921600: u32 = 4103; -pub const B1000000: u32 = 4104; -pub const B1152000: u32 = 4105; -pub const B1500000: u32 = 4106; -pub const B2000000: u32 = 4107; -pub const B2500000: u32 = 4108; -pub const B3000000: u32 = 4109; -pub const B3500000: u32 = 4110; -pub const B4000000: u32 = 4111; -pub const CIBAUD: u32 = 269418496; -pub const ISIG: u32 = 1; -pub const ICANON: u32 = 2; -pub const XCASE: u32 = 4; -pub const ECHO: u32 = 8; -pub const ECHOE: u32 = 16; -pub const ECHOK: u32 = 32; -pub const ECHONL: u32 = 64; -pub const NOFLSH: u32 = 128; -pub const TOSTOP: u32 = 256; -pub const ECHOCTL: u32 = 512; -pub const ECHOPRT: u32 = 1024; -pub const ECHOKE: u32 = 2048; -pub const FLUSHO: u32 = 4096; -pub const PENDIN: u32 = 16384; -pub const IEXTEN: u32 = 32768; -pub const EXTPROC: u32 = 65536; -pub const TCSANOW: u32 = 0; -pub const TCSADRAIN: u32 = 1; -pub const TCSAFLUSH: u32 = 2; -pub const TIOCPKT_DATA: u32 = 0; -pub const TIOCPKT_FLUSHREAD: u32 = 1; -pub const TIOCPKT_FLUSHWRITE: u32 = 2; -pub const TIOCPKT_STOP: u32 = 4; -pub const TIOCPKT_START: u32 = 8; -pub const TIOCPKT_NOSTOP: u32 = 16; -pub const TIOCPKT_DOSTOP: u32 = 32; -pub const TIOCPKT_IOCTL: u32 = 64; -pub const TIOCSER_TEMT: u32 = 1; -pub const NCC: u32 = 8; -pub const TIOCM_LE: u32 = 1; -pub const TIOCM_DTR: u32 = 2; -pub const TIOCM_RTS: u32 = 4; -pub const TIOCM_ST: u32 = 8; -pub const TIOCM_SR: u32 = 16; -pub const TIOCM_CTS: u32 = 32; -pub const TIOCM_CAR: u32 = 64; -pub const TIOCM_RNG: u32 = 128; -pub const TIOCM_DSR: u32 = 256; -pub const TIOCM_CD: u32 = 64; -pub const TIOCM_RI: u32 = 128; -pub const TIOCM_OUT1: u32 = 8192; -pub const TIOCM_OUT2: u32 = 16384; -pub const TIOCM_LOOP: u32 = 32768; -pub const UIO_FASTIOV: u32 = 8; -pub const UIO_MAXIOV: u32 = 1024; -pub const UNIX_PATH_MAX: u32 = 108; -pub const __X32_SYSCALL_BIT: u32 = 1073741824; -pub const __NR_read: u32 = 0; -pub const __NR_write: u32 = 1; -pub const __NR_open: u32 = 2; -pub const __NR_close: u32 = 3; -pub const __NR_stat: u32 = 4; -pub const __NR_fstat: u32 = 5; -pub const __NR_lstat: u32 = 6; -pub const __NR_poll: u32 = 7; -pub const __NR_lseek: u32 = 8; -pub const __NR_mmap: u32 = 9; -pub const __NR_mprotect: u32 = 10; -pub const __NR_munmap: u32 = 11; -pub const __NR_brk: u32 = 12; -pub const __NR_rt_sigaction: u32 = 13; -pub const __NR_rt_sigprocmask: u32 = 14; -pub const __NR_rt_sigreturn: u32 = 15; -pub const __NR_ioctl: u32 = 16; -pub const __NR_pread64: u32 = 17; -pub const __NR_pwrite64: u32 = 18; -pub const __NR_readv: u32 = 19; -pub const __NR_writev: u32 = 20; -pub const __NR_access: u32 = 21; -pub const __NR_pipe: u32 = 22; -pub const __NR_select: u32 = 23; -pub const __NR_sched_yield: u32 = 24; -pub const __NR_mremap: u32 = 25; -pub const __NR_msync: u32 = 26; -pub const __NR_mincore: u32 = 27; -pub const __NR_madvise: u32 = 28; -pub const __NR_shmget: u32 = 29; -pub const __NR_shmat: u32 = 30; -pub const __NR_shmctl: u32 = 31; -pub const __NR_dup: u32 = 32; -pub const __NR_dup2: u32 = 33; -pub const __NR_pause: u32 = 34; -pub const __NR_nanosleep: u32 = 35; -pub const __NR_getitimer: u32 = 36; -pub const __NR_alarm: u32 = 37; -pub const __NR_setitimer: u32 = 38; -pub const __NR_getpid: u32 = 39; -pub const __NR_sendfile: u32 = 40; -pub const __NR_socket: u32 = 41; -pub const __NR_connect: u32 = 42; -pub const __NR_accept: u32 = 43; -pub const __NR_sendto: u32 = 44; -pub const __NR_recvfrom: u32 = 45; -pub const __NR_sendmsg: u32 = 46; -pub const __NR_recvmsg: u32 = 47; -pub const __NR_shutdown: u32 = 48; -pub const __NR_bind: u32 = 49; -pub const __NR_listen: u32 = 50; -pub const __NR_getsockname: u32 = 51; -pub const __NR_getpeername: u32 = 52; -pub const __NR_socketpair: u32 = 53; -pub const __NR_setsockopt: u32 = 54; -pub const __NR_getsockopt: u32 = 55; -pub const __NR_clone: u32 = 56; -pub const __NR_fork: u32 = 57; -pub const __NR_vfork: u32 = 58; -pub const __NR_execve: u32 = 59; -pub const __NR_exit: u32 = 60; -pub const __NR_wait4: u32 = 61; -pub const __NR_kill: u32 = 62; -pub const __NR_uname: u32 = 63; -pub const __NR_semget: u32 = 64; -pub const __NR_semop: u32 = 65; -pub const __NR_semctl: u32 = 66; -pub const __NR_shmdt: u32 = 67; -pub const __NR_msgget: u32 = 68; -pub const __NR_msgsnd: u32 = 69; -pub const __NR_msgrcv: u32 = 70; -pub const __NR_msgctl: u32 = 71; -pub const __NR_fcntl: u32 = 72; -pub const __NR_flock: u32 = 73; -pub const __NR_fsync: u32 = 74; -pub const __NR_fdatasync: u32 = 75; -pub const __NR_truncate: u32 = 76; -pub const __NR_ftruncate: u32 = 77; -pub const __NR_getdents: u32 = 78; -pub const __NR_getcwd: u32 = 79; -pub const __NR_chdir: u32 = 80; -pub const __NR_fchdir: u32 = 81; -pub const __NR_rename: u32 = 82; -pub const __NR_mkdir: u32 = 83; -pub const __NR_rmdir: u32 = 84; -pub const __NR_creat: u32 = 85; -pub const __NR_link: u32 = 86; -pub const __NR_unlink: u32 = 87; -pub const __NR_symlink: u32 = 88; -pub const __NR_readlink: u32 = 89; -pub const __NR_chmod: u32 = 90; -pub const __NR_fchmod: u32 = 91; -pub const __NR_chown: u32 = 92; -pub const __NR_fchown: u32 = 93; -pub const __NR_lchown: u32 = 94; -pub const __NR_umask: u32 = 95; -pub const __NR_gettimeofday: u32 = 96; -pub const __NR_getrlimit: u32 = 97; -pub const __NR_getrusage: u32 = 98; -pub const __NR_sysinfo: u32 = 99; -pub const __NR_times: u32 = 100; -pub const __NR_ptrace: u32 = 101; -pub const __NR_getuid: u32 = 102; -pub const __NR_syslog: u32 = 103; -pub const __NR_getgid: u32 = 104; -pub const __NR_setuid: u32 = 105; -pub const __NR_setgid: u32 = 106; -pub const __NR_geteuid: u32 = 107; -pub const __NR_getegid: u32 = 108; -pub const __NR_setpgid: u32 = 109; -pub const __NR_getppid: u32 = 110; -pub const __NR_getpgrp: u32 = 111; -pub const __NR_setsid: u32 = 112; -pub const __NR_setreuid: u32 = 113; -pub const __NR_setregid: u32 = 114; -pub const __NR_getgroups: u32 = 115; -pub const __NR_setgroups: u32 = 116; -pub const __NR_setresuid: u32 = 117; -pub const __NR_getresuid: u32 = 118; -pub const __NR_setresgid: u32 = 119; -pub const __NR_getresgid: u32 = 120; -pub const __NR_getpgid: u32 = 121; -pub const __NR_setfsuid: u32 = 122; -pub const __NR_setfsgid: u32 = 123; -pub const __NR_getsid: u32 = 124; -pub const __NR_capget: u32 = 125; -pub const __NR_capset: u32 = 126; -pub const __NR_rt_sigpending: u32 = 127; -pub const __NR_rt_sigtimedwait: u32 = 128; -pub const __NR_rt_sigqueueinfo: u32 = 129; -pub const __NR_rt_sigsuspend: u32 = 130; -pub const __NR_sigaltstack: u32 = 131; -pub const __NR_utime: u32 = 132; -pub const __NR_mknod: u32 = 133; -pub const __NR_uselib: u32 = 134; -pub const __NR_personality: u32 = 135; -pub const __NR_ustat: u32 = 136; -pub const __NR_statfs: u32 = 137; -pub const __NR_fstatfs: u32 = 138; -pub const __NR_sysfs: u32 = 139; -pub const __NR_getpriority: u32 = 140; -pub const __NR_setpriority: u32 = 141; -pub const __NR_sched_setparam: u32 = 142; -pub const __NR_sched_getparam: u32 = 143; -pub const __NR_sched_setscheduler: u32 = 144; -pub const __NR_sched_getscheduler: u32 = 145; -pub const __NR_sched_get_priority_max: u32 = 146; -pub const __NR_sched_get_priority_min: u32 = 147; -pub const __NR_sched_rr_get_interval: u32 = 148; -pub const __NR_mlock: u32 = 149; -pub const __NR_munlock: u32 = 150; -pub const __NR_mlockall: u32 = 151; -pub const __NR_munlockall: u32 = 152; -pub const __NR_vhangup: u32 = 153; -pub const __NR_modify_ldt: u32 = 154; -pub const __NR_pivot_root: u32 = 155; -pub const __NR__sysctl: u32 = 156; -pub const __NR_prctl: u32 = 157; -pub const __NR_arch_prctl: u32 = 158; -pub const __NR_adjtimex: u32 = 159; -pub const __NR_setrlimit: u32 = 160; -pub const __NR_chroot: u32 = 161; -pub const __NR_sync: u32 = 162; -pub const __NR_acct: u32 = 163; -pub const __NR_settimeofday: u32 = 164; -pub const __NR_mount: u32 = 165; -pub const __NR_umount2: u32 = 166; -pub const __NR_swapon: u32 = 167; -pub const __NR_swapoff: u32 = 168; -pub const __NR_reboot: u32 = 169; -pub const __NR_sethostname: u32 = 170; -pub const __NR_setdomainname: u32 = 171; -pub const __NR_iopl: u32 = 172; -pub const __NR_ioperm: u32 = 173; -pub const __NR_create_module: u32 = 174; -pub const __NR_init_module: u32 = 175; -pub const __NR_delete_module: u32 = 176; -pub const __NR_get_kernel_syms: u32 = 177; -pub const __NR_query_module: u32 = 178; -pub const __NR_quotactl: u32 = 179; -pub const __NR_nfsservctl: u32 = 180; -pub const __NR_getpmsg: u32 = 181; -pub const __NR_putpmsg: u32 = 182; -pub const __NR_afs_syscall: u32 = 183; -pub const __NR_tuxcall: u32 = 184; -pub const __NR_security: u32 = 185; -pub const __NR_gettid: u32 = 186; -pub const __NR_readahead: u32 = 187; -pub const __NR_setxattr: u32 = 188; -pub const __NR_lsetxattr: u32 = 189; -pub const __NR_fsetxattr: u32 = 190; -pub const __NR_getxattr: u32 = 191; -pub const __NR_lgetxattr: u32 = 192; -pub const __NR_fgetxattr: u32 = 193; -pub const __NR_listxattr: u32 = 194; -pub const __NR_llistxattr: u32 = 195; -pub const __NR_flistxattr: u32 = 196; -pub const __NR_removexattr: u32 = 197; -pub const __NR_lremovexattr: u32 = 198; -pub const __NR_fremovexattr: u32 = 199; -pub const __NR_tkill: u32 = 200; -pub const __NR_time: u32 = 201; -pub const __NR_futex: u32 = 202; -pub const __NR_sched_setaffinity: u32 = 203; -pub const __NR_sched_getaffinity: u32 = 204; -pub const __NR_set_thread_area: u32 = 205; -pub const __NR_io_setup: u32 = 206; -pub const __NR_io_destroy: u32 = 207; -pub const __NR_io_getevents: u32 = 208; -pub const __NR_io_submit: u32 = 209; -pub const __NR_io_cancel: u32 = 210; -pub const __NR_get_thread_area: u32 = 211; -pub const __NR_lookup_dcookie: u32 = 212; -pub const __NR_epoll_create: u32 = 213; -pub const __NR_epoll_ctl_old: u32 = 214; -pub const __NR_epoll_wait_old: u32 = 215; -pub const __NR_remap_file_pages: u32 = 216; -pub const __NR_getdents64: u32 = 217; -pub const __NR_set_tid_address: u32 = 218; -pub const __NR_restart_syscall: u32 = 219; -pub const __NR_semtimedop: u32 = 220; -pub const __NR_fadvise64: u32 = 221; -pub const __NR_timer_create: u32 = 222; -pub const __NR_timer_settime: u32 = 223; -pub const __NR_timer_gettime: u32 = 224; -pub const __NR_timer_getoverrun: u32 = 225; -pub const __NR_timer_delete: u32 = 226; -pub const __NR_clock_settime: u32 = 227; -pub const __NR_clock_gettime: u32 = 228; -pub const __NR_clock_getres: u32 = 229; -pub const __NR_clock_nanosleep: u32 = 230; -pub const __NR_exit_group: u32 = 231; -pub const __NR_epoll_wait: u32 = 232; -pub const __NR_epoll_ctl: u32 = 233; -pub const __NR_tgkill: u32 = 234; -pub const __NR_utimes: u32 = 235; -pub const __NR_vserver: u32 = 236; -pub const __NR_mbind: u32 = 237; -pub const __NR_set_mempolicy: u32 = 238; -pub const __NR_get_mempolicy: u32 = 239; -pub const __NR_mq_open: u32 = 240; -pub const __NR_mq_unlink: u32 = 241; -pub const __NR_mq_timedsend: u32 = 242; -pub const __NR_mq_timedreceive: u32 = 243; -pub const __NR_mq_notify: u32 = 244; -pub const __NR_mq_getsetattr: u32 = 245; -pub const __NR_kexec_load: u32 = 246; -pub const __NR_waitid: u32 = 247; -pub const __NR_add_key: u32 = 248; -pub const __NR_request_key: u32 = 249; -pub const __NR_keyctl: u32 = 250; -pub const __NR_ioprio_set: u32 = 251; -pub const __NR_ioprio_get: u32 = 252; -pub const __NR_inotify_init: u32 = 253; -pub const __NR_inotify_add_watch: u32 = 254; -pub const __NR_inotify_rm_watch: u32 = 255; -pub const __NR_migrate_pages: u32 = 256; -pub const __NR_openat: u32 = 257; -pub const __NR_mkdirat: u32 = 258; -pub const __NR_mknodat: u32 = 259; -pub const __NR_fchownat: u32 = 260; -pub const __NR_futimesat: u32 = 261; -pub const __NR_newfstatat: u32 = 262; -pub const __NR_unlinkat: u32 = 263; -pub const __NR_renameat: u32 = 264; -pub const __NR_linkat: u32 = 265; -pub const __NR_symlinkat: u32 = 266; -pub const __NR_readlinkat: u32 = 267; -pub const __NR_fchmodat: u32 = 268; -pub const __NR_faccessat: u32 = 269; -pub const __NR_pselect6: u32 = 270; -pub const __NR_ppoll: u32 = 271; -pub const __NR_unshare: u32 = 272; -pub const __NR_set_robust_list: u32 = 273; -pub const __NR_get_robust_list: u32 = 274; -pub const __NR_splice: u32 = 275; -pub const __NR_tee: u32 = 276; -pub const __NR_sync_file_range: u32 = 277; -pub const __NR_vmsplice: u32 = 278; -pub const __NR_move_pages: u32 = 279; -pub const __NR_utimensat: u32 = 280; -pub const __NR_epoll_pwait: u32 = 281; -pub const __NR_signalfd: u32 = 282; -pub const __NR_timerfd_create: u32 = 283; -pub const __NR_eventfd: u32 = 284; -pub const __NR_fallocate: u32 = 285; -pub const __NR_timerfd_settime: u32 = 286; -pub const __NR_timerfd_gettime: u32 = 287; -pub const __NR_accept4: u32 = 288; -pub const __NR_signalfd4: u32 = 289; -pub const __NR_eventfd2: u32 = 290; -pub const __NR_epoll_create1: u32 = 291; -pub const __NR_dup3: u32 = 292; -pub const __NR_pipe2: u32 = 293; -pub const __NR_inotify_init1: u32 = 294; -pub const __NR_preadv: u32 = 295; -pub const __NR_pwritev: u32 = 296; -pub const __NR_rt_tgsigqueueinfo: u32 = 297; -pub const __NR_perf_event_open: u32 = 298; -pub const __NR_recvmmsg: u32 = 299; -pub const __NR_fanotify_init: u32 = 300; -pub const __NR_fanotify_mark: u32 = 301; -pub const __NR_prlimit64: u32 = 302; -pub const __NR_name_to_handle_at: u32 = 303; -pub const __NR_open_by_handle_at: u32 = 304; -pub const __NR_clock_adjtime: u32 = 305; -pub const __NR_syncfs: u32 = 306; -pub const __NR_sendmmsg: u32 = 307; -pub const __NR_setns: u32 = 308; -pub const __NR_getcpu: u32 = 309; -pub const __NR_process_vm_readv: u32 = 310; -pub const __NR_process_vm_writev: u32 = 311; -pub const __NR_kcmp: u32 = 312; -pub const __NR_finit_module: u32 = 313; -pub const __NR_sched_setattr: u32 = 314; -pub const __NR_sched_getattr: u32 = 315; -pub const __NR_renameat2: u32 = 316; -pub const __NR_seccomp: u32 = 317; -pub const __NR_getrandom: u32 = 318; -pub const __NR_memfd_create: u32 = 319; -pub const __NR_kexec_file_load: u32 = 320; -pub const __NR_bpf: u32 = 321; -pub const __NR_execveat: u32 = 322; -pub const __NR_userfaultfd: u32 = 323; -pub const __NR_membarrier: u32 = 324; -pub const __NR_mlock2: u32 = 325; -pub const __NR_copy_file_range: u32 = 326; -pub const __NR_preadv2: u32 = 327; -pub const __NR_pwritev2: u32 = 328; -pub const __NR_pkey_mprotect: u32 = 329; -pub const __NR_pkey_alloc: u32 = 330; -pub const __NR_pkey_free: u32 = 331; -pub const __NR_statx: u32 = 332; -pub const __NR_io_pgetevents: u32 = 333; -pub const __NR_rseq: u32 = 334; -pub const __NR_pidfd_send_signal: u32 = 424; -pub const __NR_io_uring_setup: u32 = 425; -pub const __NR_io_uring_enter: u32 = 426; -pub const __NR_io_uring_register: u32 = 427; -pub const __NR_open_tree: u32 = 428; -pub const __NR_move_mount: u32 = 429; -pub const __NR_fsopen: u32 = 430; -pub const __NR_fsconfig: u32 = 431; -pub const __NR_fsmount: u32 = 432; -pub const __NR_fspick: u32 = 433; -pub const __NR_pidfd_open: u32 = 434; -pub const __NR_clone3: u32 = 435; -pub const __NR_close_range: u32 = 436; -pub const __NR_openat2: u32 = 437; -pub const __NR_pidfd_getfd: u32 = 438; -pub const __NR_faccessat2: u32 = 439; -pub const __NR_process_madvise: u32 = 440; -pub const __NR_epoll_pwait2: u32 = 441; -pub const __NR_mount_setattr: u32 = 442; -pub const __NR_quotactl_fd: u32 = 443; -pub const __NR_landlock_create_ruleset: u32 = 444; -pub const __NR_landlock_add_rule: u32 = 445; -pub const __NR_landlock_restrict_self: u32 = 446; -pub const __NR_memfd_secret: u32 = 447; -pub const __NR_process_mrelease: u32 = 448; -pub const __NR_futex_waitv: u32 = 449; -pub const __NR_set_mempolicy_home_node: u32 = 450; -pub const __OLD_UTS_LEN: u32 = 8; -pub const __NEW_UTS_LEN: u32 = 64; -pub const WNOHANG: u32 = 1; -pub const WUNTRACED: u32 = 2; -pub const WSTOPPED: u32 = 2; -pub const WEXITED: u32 = 4; -pub const WCONTINUED: u32 = 8; -pub const WNOWAIT: u32 = 16777216; -pub const __WNOTHREAD: u32 = 536870912; -pub const __WALL: u32 = 1073741824; -pub const __WCLONE: u32 = 2147483648; -pub const P_ALL: u32 = 0; -pub const P_PID: u32 = 1; -pub const P_PGID: u32 = 2; -pub const P_PIDFD: u32 = 3; -pub const XATTR_CREATE: u32 = 1; -pub const XATTR_REPLACE: u32 = 2; -pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0"; -pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0"; -pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0"; -pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0"; -pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0"; -pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0"; -pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0"; -pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0"; -pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0"; -pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0"; -pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0"; -pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0"; -pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0"; -pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0"; -pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0"; -pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0"; -pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0"; -pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0"; -pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0"; -pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0"; -pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0"; -pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0"; -pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0"; -pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0"; -pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0"; -pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0"; -pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0"; -pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0"; -pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0"; -pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0"; -pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0"; -pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0"; -pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0"; -pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0"; -pub const MFD_CLOEXEC: u32 = 1; -pub const MFD_ALLOW_SEALING: u32 = 2; -pub const MFD_HUGETLB: u32 = 4; -pub const MFD_NOEXEC_SEAL: u32 = 8; -pub const MFD_EXEC: u32 = 16; -pub const MFD_HUGE_SHIFT: u32 = 26; -pub const MFD_HUGE_MASK: u32 = 63; -pub const MFD_HUGE_64KB: u32 = 1073741824; -pub const MFD_HUGE_512KB: u32 = 1275068416; -pub const MFD_HUGE_1MB: u32 = 1342177280; -pub const MFD_HUGE_2MB: u32 = 1409286144; -pub const MFD_HUGE_8MB: u32 = 1543503872; -pub const MFD_HUGE_16MB: u32 = 1610612736; -pub const MFD_HUGE_32MB: u32 = 1677721600; -pub const MFD_HUGE_256MB: u32 = 1879048192; -pub const MFD_HUGE_512MB: u32 = 1946157056; -pub const MFD_HUGE_1GB: u32 = 2013265920; -pub const MFD_HUGE_2GB: u32 = 2080374784; -pub const MFD_HUGE_16GB: u32 = 2281701376; -pub const TFD_TIMER_ABSTIME: u32 = 1; -pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; -pub const TFD_CLOEXEC: u32 = 524288; -pub const TFD_NONBLOCK: u32 = 2048; -pub const USERFAULTFD_IOC: u32 = 170; -pub const _UFFDIO_REGISTER: u32 = 0; -pub const _UFFDIO_UNREGISTER: u32 = 1; -pub const _UFFDIO_WAKE: u32 = 2; -pub const _UFFDIO_COPY: u32 = 3; -pub const _UFFDIO_ZEROPAGE: u32 = 4; -pub const _UFFDIO_WRITEPROTECT: u32 = 6; -pub const _UFFDIO_CONTINUE: u32 = 7; -pub const _UFFDIO_API: u32 = 63; -pub const UFFDIO: u32 = 170; -pub const UFFD_EVENT_PAGEFAULT: u32 = 18; -pub const UFFD_EVENT_FORK: u32 = 19; -pub const UFFD_EVENT_REMAP: u32 = 20; -pub const UFFD_EVENT_REMOVE: u32 = 21; -pub const UFFD_EVENT_UNMAP: u32 = 22; -pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; -pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; -pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; -pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; -pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; -pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; -pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; -pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; -pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; -pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; -pub const UFFD_FEATURE_SIGBUS: u32 = 128; -pub const UFFD_FEATURE_THREAD_ID: u32 = 256; -pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; -pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; -pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; -pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; -pub const UFFD_USER_MODE_ONLY: u32 = 1; -pub const IORING_FILE_INDEX_ALLOC: i32 = -1; -pub const IORING_SETUP_IOPOLL: u32 = 1; -pub const IORING_SETUP_SQPOLL: u32 = 2; -pub const IORING_SETUP_SQ_AFF: u32 = 4; -pub const IORING_SETUP_CQSIZE: u32 = 8; -pub const IORING_SETUP_CLAMP: u32 = 16; -pub const IORING_SETUP_ATTACH_WQ: u32 = 32; -pub const IORING_SETUP_R_DISABLED: u32 = 64; -pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; -pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; -pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; -pub const IORING_SETUP_SQE128: u32 = 1024; -pub const IORING_SETUP_CQE32: u32 = 2048; -pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; -pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; -pub const IORING_URING_CMD_FIXED: u32 = 1; -pub const IORING_FSYNC_DATASYNC: u32 = 1; -pub const IORING_TIMEOUT_ABS: u32 = 1; -pub const IORING_TIMEOUT_UPDATE: u32 = 2; -pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; -pub const IORING_TIMEOUT_REALTIME: u32 = 8; -pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; -pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; -pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; -pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; -pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; -pub const IORING_POLL_ADD_MULTI: u32 = 1; -pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; -pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; -pub const IORING_POLL_ADD_LEVEL: u32 = 8; -pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; -pub const IORING_ASYNC_CANCEL_FD: u32 = 2; -pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; -pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; -pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; -pub const IORING_RECV_MULTISHOT: u32 = 2; -pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; -pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; -pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; -pub const IORING_ACCEPT_MULTISHOT: u32 = 1; -pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; -pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; -pub const IORING_CQE_F_BUFFER: u32 = 1; -pub const IORING_CQE_F_MORE: u32 = 2; -pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; -pub const IORING_CQE_F_NOTIF: u32 = 8; -pub const IORING_OFF_SQ_RING: u32 = 0; -pub const IORING_OFF_CQ_RING: u32 = 134217728; -pub const IORING_OFF_SQES: u32 = 268435456; -pub const IORING_SQ_NEED_WAKEUP: u32 = 1; -pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; -pub const IORING_SQ_TASKRUN: u32 = 4; -pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; -pub const IORING_ENTER_GETEVENTS: u32 = 1; -pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; -pub const IORING_ENTER_SQ_WAIT: u32 = 4; -pub const IORING_ENTER_EXT_ARG: u32 = 8; -pub const IORING_ENTER_REGISTERED_RING: u32 = 16; -pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; -pub const IORING_FEAT_NODROP: u32 = 2; -pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; -pub const IORING_FEAT_RW_CUR_POS: u32 = 8; -pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; -pub const IORING_FEAT_FAST_POLL: u32 = 32; -pub const IORING_FEAT_POLL_32BITS: u32 = 64; -pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; -pub const IORING_FEAT_EXT_ARG: u32 = 256; -pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; -pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; -pub const IORING_FEAT_CQE_SKIP: u32 = 2048; -pub const IORING_FEAT_LINKED_FILE: u32 = 4096; -pub const IORING_FEAT_REG_REG_RING: u32 = 8192; -pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; -pub const IORING_REGISTER_FILES_SKIP: i32 = -2; -pub const IO_URING_OP_SUPPORTED: u32 = 1; -pub const DT_UNKNOWN: u32 = 0; -pub const DT_FIFO: u32 = 1; -pub const DT_CHR: u32 = 2; -pub const DT_DIR: u32 = 4; -pub const DT_BLK: u32 = 6; -pub const DT_REG: u32 = 8; -pub const DT_LNK: u32 = 10; -pub const DT_SOCK: u32 = 12; -pub const SHUT_RD: u32 = 0; -pub const SHUT_WR: u32 = 1; -pub const SHUT_RDWR: u32 = 2; -pub const STAT_HAVE_NSEC: u32 = 1; -pub const SOCK_STREAM: u32 = 1; -pub const SOCK_DGRAM: u32 = 2; -pub const SOCK_RAW: u32 = 3; -pub const SOCK_RDM: u32 = 4; -pub const SOCK_SEQPACKET: u32 = 5; -pub const F_OK: u32 = 0; -pub const R_OK: u32 = 4; -pub const W_OK: u32 = 2; -pub const X_OK: u32 = 1; -pub const UTIME_NOW: u32 = 1073741823; -pub const UTIME_OMIT: u32 = 1073741822; -pub const MSG_DONTWAIT: u32 = 64; -pub const AF_UNSPEC: u32 = 0; -pub const AF_UNIX: u32 = 1; -pub const AF_INET: u32 = 2; -pub const AF_AX25: u32 = 3; -pub const AF_IPX: u32 = 4; -pub const AF_APPLETALK: u32 = 5; -pub const AF_NETROM: u32 = 6; -pub const AF_BRIDGE: u32 = 7; -pub const AF_ATMPVC: u32 = 8; -pub const AF_X25: u32 = 9; -pub const AF_INET6: u32 = 10; -pub const AF_ROSE: u32 = 11; -pub const AF_DECnet: u32 = 12; -pub const AF_NETBEUI: u32 = 13; -pub const AF_SECURITY: u32 = 14; -pub const AF_KEY: u32 = 15; -pub const AF_NETLINK: u32 = 16; -pub const AF_PACKET: u32 = 17; -pub const AF_ASH: u32 = 18; -pub const AF_ECONET: u32 = 19; -pub const AF_ATMSVC: u32 = 20; -pub const AF_RDS: u32 = 21; -pub const AF_SNA: u32 = 22; -pub const AF_IRDA: u32 = 23; -pub const AF_PPPOX: u32 = 24; -pub const AF_WANPIPE: u32 = 25; -pub const AF_LLC: u32 = 26; -pub const AF_CAN: u32 = 29; -pub const AF_TIPC: u32 = 30; -pub const AF_BLUETOOTH: u32 = 31; -pub const AF_IUCV: u32 = 32; -pub const AF_RXRPC: u32 = 33; -pub const AF_ISDN: u32 = 34; -pub const AF_PHONET: u32 = 35; -pub const AF_IEEE802154: u32 = 36; -pub const AF_MAX: u32 = 37; -pub const MSG_OOB: u32 = 1; -pub const MSG_PEEK: u32 = 2; -pub const MSG_DONTROUTE: u32 = 4; -pub const MSG_CTRUNC: u32 = 8; -pub const MSG_PROBE: u32 = 16; -pub const MSG_TRUNC: u32 = 32; -pub const MSG_EOR: u32 = 128; -pub const MSG_WAITALL: u32 = 256; -pub const MSG_FIN: u32 = 512; -pub const MSG_SYN: u32 = 1024; -pub const MSG_CONFIRM: u32 = 2048; -pub const MSG_RST: u32 = 4096; -pub const MSG_ERRQUEUE: u32 = 8192; -pub const MSG_NOSIGNAL: u32 = 16384; -pub const MSG_MORE: u32 = 32768; -pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; -pub const STDIN_FILENO: u32 = 0; -pub const STDOUT_FILENO: u32 = 1; -pub const STDERR_FILENO: u32 = 2; -pub const RWF_HIPRI: u32 = 1; -pub const RWF_DSYNC: u32 = 2; -pub const RWF_SYNC: u32 = 4; -pub const RWF_NOWAIT: u32 = 8; -pub const RWF_APPEND: u32 = 16; -pub const EFD_SEMAPHORE: u32 = 1; -pub const EFD_CLOEXEC: u32 = 524288; -pub const EFD_NONBLOCK: u32 = 2048; -pub const EPOLLIN: u32 = 1; -pub const EPOLLPRI: u32 = 2; -pub const EPOLLOUT: u32 = 4; -pub const EPOLLERR: u32 = 8; -pub const EPOLLHUP: u32 = 16; -pub const EPOLLNVAL: u32 = 32; -pub const EPOLLRDNORM: u32 = 64; -pub const EPOLLRDBAND: u32 = 128; -pub const EPOLLWRNORM: u32 = 256; -pub const EPOLLWRBAND: u32 = 512; -pub const EPOLLMSG: u32 = 1024; -pub const EPOLLRDHUP: u32 = 8192; -pub const EPOLLEXCLUSIVE: u32 = 268435456; -pub const EPOLLWAKEUP: u32 = 536870912; -pub const EPOLLONESHOT: u32 = 1073741824; -pub const EPOLLET: u32 = 2147483648; -pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; -pub const TFD_CREATE_FLAGS: u32 = 526336; -pub const TFD_SETTIME_FLAGS: u32 = 1; -pub const ARCH_SET_FS: u32 = 4098; -pub const SCM_RIGHTS: u32 = 1; -pub const SCM_CREDENTIALS: u32 = 2; -pub const SCM_SECURITY: u32 = 3; -pub const UFFD_API: u32 = 170; -pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; -pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; -pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; -pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; -pub const UFFDIO_COPY_MODE_WP: u32 = 2; -pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; -pub const SPLICE_F_MOVE: u32 = 1; -pub const SPLICE_F_NONBLOCK: u32 = 2; -pub const SPLICE_F_MORE: u32 = 4; -pub const SPLICE_F_GIFT: u32 = 8; -pub const MNT_FORCE: u32 = 1; -pub const MNT_DETACH: u32 = 2; -pub const MNT_EXPIRE: u32 = 4; -pub const UMOUNT_NOFOLLOW: u32 = 8; -pub const UMOUNT_UNUSED: u32 = 2147483648; -pub const _NSIG: u32 = 64; -pub type size_t = crate::ctypes::c_ulong; -pub type ssize_t = crate::ctypes::c_long; -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 16usize], -} -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_old_uid_t = crate::ctypes::c_ushort; -pub type __kernel_old_gid_t = crate::ctypes::c_ushort; -pub type __kernel_old_dev_t = crate::ctypes::c_ulong; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_header_struct { -pub version: __u32, -pub pid: crate::ctypes::c_int, -} -pub type cap_user_header_t = *mut __user_cap_header_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __user_cap_data_struct { -pub effective: __u32, -pub permitted: __u32, -pub inheritable: __u32, -} -pub type cap_user_data_t = *mut __user_cap_data_struct; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data { -pub magic_etc: __le32, -pub data: [vfs_cap_data__bindgen_ty_1; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data { -pub magic_etc: __le32, -pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], -pub rootid: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct vfs_ns_cap_data__bindgen_ty_1 { -pub permitted: __le32, -pub inheritable: __le32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct f_owner_ex { -pub type_: crate::ctypes::c_int, -pub pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_off_t, -pub l_len: __kernel_off_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct flock64 { -pub l_type: crate::ctypes::c_short, -pub l_whence: crate::ctypes::c_short, -pub l_start: __kernel_loff_t, -pub l_len: __kernel_loff_t, -pub l_pid: __kernel_pid_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct open_how { -pub flags: __u64, -pub mode: __u64, -pub resolve: __u64, -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct epoll_event { -pub events: __poll_t, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v1 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub master_key_descriptor: [__u8; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_key { -pub mode: __u32, -pub raw: [__u8; 64usize], -pub size: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fscrypt_policy_v2 { -pub version: __u8, -pub contents_encryption_mode: __u8, -pub filenames_encryption_mode: __u8, -pub flags: __u8, -pub __reserved: [__u8; 4usize], -pub master_key_identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_get_policy_ex_arg { -pub policy_size: __u64, -pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { -pub version: __u8, -pub v1: fscrypt_policy_v1, -pub v2: fscrypt_policy_v2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct fscrypt_key_specifier { -pub type_: __u32, -pub __reserved: __u32, -pub u: fscrypt_key_specifier__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union fscrypt_key_specifier__bindgen_ty_1 { -pub __reserved: [__u8; 32usize], -pub descriptor: [__u8; 8usize], -pub identifier: [__u8; 16usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct fscrypt_provisioning_key_payload { -pub type_: __u32, -pub __reserved: __u32, -pub raw: __IncompleteArrayField<__u8>, -} -#[repr(C)] -pub struct fscrypt_add_key_arg { -pub key_spec: fscrypt_key_specifier, -pub raw_size: __u32, -pub key_id: __u32, -pub __reserved: [__u32; 8usize], -pub raw: __IncompleteArrayField<__u8>, +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, } #[repr(C)] #[derive(Copy, Clone)] @@ -2804,19 +229,6 @@ pub user_count: __u32, pub __out_reserved: [__u32; 13usize], } -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum fsconfig_command { -FSCONFIG_SET_FLAG = 0, -FSCONFIG_SET_STRING = 1, -FSCONFIG_SET_BINARY = 2, -FSCONFIG_SET_PATH = 3, -FSCONFIG_SET_PATH_EMPTY = 4, -FSCONFIG_SET_FD = 5, -FSCONFIG_CMD_CREATE = 6, -FSCONFIG_CMD_RECONFIGURE = 7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct mount_attr { @@ -2883,7 +295,6 @@ pub fsx_cowextsize: __u32, pub fsx_pad: [crate::ctypes::c_uchar; 8usize], } -pub type __kernel_rwf_t = crate::ctypes::c_int; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct futex_waitv { @@ -2904,664 +315,15 @@ pub futex_offset: crate::ctypes::c_long, pub list_op_pending: *mut robust_list, } -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], -} -pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; -pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; -pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; -pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; -pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; -pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; -pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; -pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; -pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; -pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; -pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; -pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; -pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; -pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; -pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; -pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; -pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; -pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; -pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; -pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; -pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; -pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; -pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; -pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; -pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; -pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; -pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; -pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; -pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_1 { -IPPROTO_IP = 0, -IPPROTO_ICMP = 1, -IPPROTO_IGMP = 2, -IPPROTO_IPIP = 4, -IPPROTO_TCP = 6, -IPPROTO_EGP = 8, -IPPROTO_PUP = 12, -IPPROTO_UDP = 17, -IPPROTO_IDP = 22, -IPPROTO_TP = 29, -IPPROTO_DCCP = 33, -IPPROTO_IPV6 = 41, -IPPROTO_RSVP = 46, -IPPROTO_GRE = 47, -IPPROTO_ESP = 50, -IPPROTO_AH = 51, -IPPROTO_MTP = 92, -IPPROTO_BEETPH = 94, -IPPROTO_ENCAP = 98, -IPPROTO_PIM = 103, -IPPROTO_COMP = 108, -IPPROTO_L2TP = 115, -IPPROTO_SCTP = 132, -IPPROTO_UDPLITE = 136, -IPPROTO_MPLS = 137, -IPPROTO_ETHERNET = 143, -IPPROTO_RAW = 255, -IPPROTO_MPTCP = 262, -IPPROTO_MAX = 263, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_addr { -pub s_addr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq { -pub imr_multiaddr: in_addr, -pub imr_interface: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreqn { -pub imr_multiaddr: in_addr, -pub imr_address: in_addr, -pub imr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq_source { -pub imr_multiaddr: __be32, -pub imr_interface: __be32, -pub imr_sourceaddr: __be32, -} -#[repr(C)] -pub struct ip_msfilter { -pub imsf_multiaddr: __be32, -pub imsf_interface: __be32, -pub imsf_fmode: __u32, -pub imsf_numsrc: __u32, -pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, -} -#[repr(C)] -pub struct ip_msfilter__bindgen_ty_1 { -pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, -pub __bindgen_anon_1: __BindgenUnionField, -pub bindgen_union_field: u32, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { -pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -pub imsf_slist_flex: __IncompleteArrayField<__be32>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_req { -pub gr_interface: __u32, -pub gr_group: __kernel_sockaddr_storage, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_source_req { -pub gsr_interface: __u32, -pub gsr_group: __kernel_sockaddr_storage, -pub gsr_source: __kernel_sockaddr_storage, -} -#[repr(C)] -pub struct group_filter { -pub __bindgen_anon_1: group_filter__bindgen_ty_1, -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 34usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { -pub gf_interface_aux: __u32, -pub gf_group_aux: __kernel_sockaddr_storage, -pub gf_fmode_aux: __u32, -pub gf_numsrc_aux: __u32, -pub gf_slist: [__kernel_sockaddr_storage; 1usize], -} -#[repr(C)] -pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { -pub gf_interface: __u32, -pub gf_group: __kernel_sockaddr_storage, -pub gf_fmode: __u32, -pub gf_numsrc: __u32, -pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_pktinfo { -pub ipi_ifindex: crate::ctypes::c_int, -pub ipi_spec_dst: in_addr, -pub ipi_addr: in_addr, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_in { -pub sin_family: __kernel_sa_family_t, -pub sin_port: __be16, -pub sin_addr: in_addr, -pub __pad: [crate::ctypes::c_uchar; 8usize], -} -#[repr(C)] -#[derive(Debug)] -pub struct inotify_event { -pub wd: __s32, -pub mask: __u32, -pub cookie: __u32, -pub len: __u32, -pub name: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct iphdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub tos: __u8, -pub tot_len: __be16, -pub id: __be16, -pub frag_off: __be16, -pub ttl: __u8, -pub protocol: __u8, -pub check: __sum16, -pub __bindgen_anon_1: iphdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union iphdr__bindgen_ty_1 { -pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: __be32, -pub daddr: __be32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: __be32, -pub daddr: __be32, -} -impl iphdr { -#[inline] -pub fn ihl(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_ihl(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; -ihl as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit -} -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_auth_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub reserved: __be16, -pub spi: __be32, -pub seq_no: __be32, -pub auth_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug)] -pub struct ip_esp_hdr { -pub spi: __be32, -pub seq_no: __be32, -pub enc_data: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_comp_hdr { -pub nexthdr: __u8, -pub flags: __u8, -pub cpi: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_beet_phdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub padlen: __u8, -pub reserved: __u8, -} -pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; -pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; -pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; -pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; -pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; -pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; -pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; -pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; -pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; -pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; -pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; -pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; -pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; -pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; -pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; -pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; -pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; -pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; -pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; -pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; -pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; -pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; -pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; -pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; -pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; -pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; -pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; -pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; -pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; -pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_2 { -IPV4_DEVCONF_FORWARDING = 1, -IPV4_DEVCONF_MC_FORWARDING = 2, -IPV4_DEVCONF_PROXY_ARP = 3, -IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, -IPV4_DEVCONF_SECURE_REDIRECTS = 5, -IPV4_DEVCONF_SEND_REDIRECTS = 6, -IPV4_DEVCONF_SHARED_MEDIA = 7, -IPV4_DEVCONF_RP_FILTER = 8, -IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, -IPV4_DEVCONF_BOOTP_RELAY = 10, -IPV4_DEVCONF_LOG_MARTIANS = 11, -IPV4_DEVCONF_TAG = 12, -IPV4_DEVCONF_ARPFILTER = 13, -IPV4_DEVCONF_MEDIUM_ID = 14, -IPV4_DEVCONF_NOXFRM = 15, -IPV4_DEVCONF_NOPOLICY = 16, -IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, -IPV4_DEVCONF_ARP_ANNOUNCE = 18, -IPV4_DEVCONF_ARP_IGNORE = 19, -IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, -IPV4_DEVCONF_ARP_ACCEPT = 21, -IPV4_DEVCONF_ARP_NOTIFY = 22, -IPV4_DEVCONF_ACCEPT_LOCAL = 23, -IPV4_DEVCONF_SRC_VMARK = 24, -IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, -IPV4_DEVCONF_ROUTE_LOCALNET = 26, -IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, -IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, -IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, -IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, -IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, -IPV4_DEVCONF_BC_FORWARDING = 32, -IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, -__IPV4_DEVCONF_MAX = 34, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_addr { -pub in6_u: in6_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union in6_addr__bindgen_ty_1 { -pub u6_addr8: [__u8; 16usize], -pub u6_addr16: [__be16; 8usize], -pub u6_addr32: [__be32; 4usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_in6 { -pub sin6_family: crate::ctypes::c_ushort, -pub sin6_port: __be16, -pub sin6_flowinfo: __be32, -pub sin6_addr: in6_addr, -pub sin6_scope_id: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6_mreq { -pub ipv6mr_multiaddr: in6_addr, -pub ipv6mr_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_flowlabel_req { -pub flr_dst: in6_addr, -pub flr_label: __be32, -pub flr_action: __u8, -pub flr_share: __u8, -pub flr_flags: __u16, -pub flr_expires: __u16, -pub flr_linger: __u16, -pub __flr_pad: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_pktinfo { -pub ipi6_addr: in6_addr, -pub ipi6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ip6_mtuinfo { -pub ip6m_addr: sockaddr_in6, -pub ip6m_mtu: __u32, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_ifreq { -pub ifr6_addr: in6_addr, -pub ifr6_prefixlen: __u32, -pub ifr6_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_rt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -pub type_: __u8, -pub segments_left: __u8, -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct ipv6_opt_hdr { -pub nexthdr: __u8, -pub hdrlen: __u8, -} -#[repr(C)] -pub struct rt0_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: __IncompleteArrayField, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rt2_hdr { -pub rt_hdr: ipv6_rt_hdr, -pub reserved: __u32, -pub addr: in6_addr, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct ipv6_destopt_hao { -pub type_: __u8, -pub length: __u8, -pub addr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr { -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub flow_lbl: [__u8; 3usize], -pub payload_len: __be16, -pub nexthdr: __u8, -pub hop_limit: __u8, -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ipv6hdr__bindgen_ty_1 { -pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, -pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { -pub saddr: in6_addr, -pub daddr: in6_addr, -} -impl ipv6hdr { -#[inline] -pub fn priority(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_priority(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn version(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_version(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let priority: u8 = unsafe { ::core::mem::transmute(priority) }; -priority as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let version: u8 = unsafe { ::core::mem::transmute(version) }; -version as u64 -}); -__bindgen_bitfield_unit -} -} -pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; -pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; -pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; -pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; -pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; -pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; -pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; -pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; -pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; -pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; -pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; -pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; -pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; -pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; -pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; -pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; -pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; -pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; -pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; -pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; -pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; -pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; -pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; -pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; -pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; -pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; -pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; -pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; -pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; -pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; -pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; -pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; -pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; -pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; -pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; -pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; -pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; -pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; -pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; -pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; -pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; -pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; -pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; -pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; -pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; -pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; -pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; -pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; -pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; -pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; -pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; -pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; -pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; -pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; -pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; -pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; -pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_3 { -DEVCONF_FORWARDING = 0, -DEVCONF_HOPLIMIT = 1, -DEVCONF_MTU6 = 2, -DEVCONF_ACCEPT_RA = 3, -DEVCONF_ACCEPT_REDIRECTS = 4, -DEVCONF_AUTOCONF = 5, -DEVCONF_DAD_TRANSMITS = 6, -DEVCONF_RTR_SOLICITS = 7, -DEVCONF_RTR_SOLICIT_INTERVAL = 8, -DEVCONF_RTR_SOLICIT_DELAY = 9, -DEVCONF_USE_TEMPADDR = 10, -DEVCONF_TEMP_VALID_LFT = 11, -DEVCONF_TEMP_PREFERED_LFT = 12, -DEVCONF_REGEN_MAX_RETRY = 13, -DEVCONF_MAX_DESYNC_FACTOR = 14, -DEVCONF_MAX_ADDRESSES = 15, -DEVCONF_FORCE_MLD_VERSION = 16, -DEVCONF_ACCEPT_RA_DEFRTR = 17, -DEVCONF_ACCEPT_RA_PINFO = 18, -DEVCONF_ACCEPT_RA_RTR_PREF = 19, -DEVCONF_RTR_PROBE_INTERVAL = 20, -DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, -DEVCONF_PROXY_NDP = 22, -DEVCONF_OPTIMISTIC_DAD = 23, -DEVCONF_ACCEPT_SOURCE_ROUTE = 24, -DEVCONF_MC_FORWARDING = 25, -DEVCONF_DISABLE_IPV6 = 26, -DEVCONF_ACCEPT_DAD = 27, -DEVCONF_FORCE_TLLAO = 28, -DEVCONF_NDISC_NOTIFY = 29, -DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, -DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, -DEVCONF_SUPPRESS_FRAG_NDISC = 32, -DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, -DEVCONF_USE_OPTIMISTIC = 34, -DEVCONF_ACCEPT_RA_MTU = 35, -DEVCONF_STABLE_SECRET = 36, -DEVCONF_USE_OIF_ADDRS_ONLY = 37, -DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, -DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, -DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, -DEVCONF_DROP_UNSOLICITED_NA = 41, -DEVCONF_KEEP_ADDR_ON_DOWN = 42, -DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, -DEVCONF_SEG6_ENABLED = 44, -DEVCONF_SEG6_REQUIRE_HMAC = 45, -DEVCONF_ENHANCED_DAD = 46, -DEVCONF_ADDR_GEN_MODE = 47, -DEVCONF_DISABLE_POLICY = 48, -DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, -DEVCONF_NDISC_TCLASS = 50, -DEVCONF_RPL_SEG_ENABLED = 51, -DEVCONF_RA_DEFRTR_METRIC = 52, -DEVCONF_IOAM6_ENABLED = 53, -DEVCONF_IOAM6_ID = 54, -DEVCONF_IOAM6_ID_WIDE = 55, -DEVCONF_NDISC_EVICT_NOCARRIER = 56, -DEVCONF_ACCEPT_UNTRACKED_NA = 57, -DEVCONF_MAX = 58, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum socket_state { -SS_FREE = 0, -SS_UNCONNECTED = 1, -SS_CONNECTING = 2, -SS_CONNECTED = 3, -SS_DISCONNECTING = 4, -} +#[repr(C)] +#[derive(Debug)] +pub struct inotify_event { +pub wd: __s32, +pub mask: __u32, +pub cookie: __u32, +pub len: __u32, +pub name: __IncompleteArrayField, +} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct pollfd { @@ -3570,24 +332,6 @@ pub revents: crate::ctypes::c_short, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prctl_mm_map { -pub start_code: __u64, -pub end_code: __u64, -pub start_data: __u64, -pub end_data: __u64, -pub start_brk: __u64, -pub brk: __u64, -pub start_stack: __u64, -pub arg_start: __u64, -pub arg_end: __u64, -pub env_start: __u64, -pub env_end: __u64, -pub auxv: *mut __u64, -pub auxv_size: __u32, -pub exe_fd: __u32, -} -#[repr(C)] #[derive(Debug)] pub struct rand_pool_info { pub entropy_count: crate::ctypes::c_int, @@ -3707,11 +451,6 @@ pub set_tid_size: __u64, pub cgroup: __u64, } -pub type sigset_t = crate::ctypes::c_ulong; -pub type __signalfn_t = ::core::option::Option; -pub type __sighandler_t = __signalfn_t; -pub type __restorefn_t = ::core::option::Option; -pub type __sigrestore_t = __restorefn_t; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct sigaction { @@ -3727,25 +466,6 @@ pub ss_flags: crate::ctypes::c_int, pub ss_size: __kernel_size_t, } -pub type stack_t = sigaltstack; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { -pub sival_int: crate::ctypes::c_int, -pub sival_ptr: *mut crate::ctypes::c_void, -} -pub type sigval_t = sigval; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields { -pub _kill: __sifields__bindgen_ty_1, -pub _timer: __sifields__bindgen_ty_2, -pub _rt: __sifields__bindgen_ty_3, -pub _sigchld: __sifields__bindgen_ty_4, -pub _sigfault: __sifields__bindgen_ty_5, -pub _sigpoll: __sifields__bindgen_ty_6, -pub _sigsys: __sifields__bindgen_ty_7, -} #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_1 { @@ -3783,15 +503,6 @@ pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __sifields__bindgen_ty_5__bindgen_ty_1 { -pub _trapno: crate::ctypes::c_int, -pub _addr_lsb: crate::ctypes::c_short, -pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, -pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, -pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { pub _dummy_bnd: [crate::ctypes::c_char; 8usize], @@ -3831,19 +542,12 @@ } #[repr(C)] #[derive(Copy, Clone)] -pub union siginfo__bindgen_ty_1 { -pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, -pub _si_pad: [crate::ctypes::c_int; 32usize], -} -#[repr(C)] -#[derive(Copy, Clone)] pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { pub si_signo: crate::ctypes::c_int, pub si_errno: crate::ctypes::c_int, pub si_code: crate::ctypes::c_int, pub _sifields: __sifields, } -pub type siginfo_t = siginfo; #[repr(C)] #[derive(Copy, Clone)] pub struct sigevent { @@ -3853,19 +557,11 @@ pub _sigev_un: sigevent__bindgen_ty_1, } #[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { -pub _pad: [crate::ctypes::c_int; 12usize], -pub _tid: crate::ctypes::c_int, -pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] #[derive(Debug, Copy, Clone)] pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { pub _function: ::core::option::Option, pub _attribute: *mut crate::ctypes::c_void, } -pub type sigevent_t = sigevent; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct statx_timestamp { @@ -3902,591 +598,1985 @@ pub __spare3: [__u64; 12usize], } #[repr(C)] -#[derive(Debug)] -pub struct sysinfo { -pub uptime: __kernel_long_t, -pub loads: [__kernel_ulong_t; 3usize], -pub totalram: __kernel_ulong_t, -pub freeram: __kernel_ulong_t, -pub sharedram: __kernel_ulong_t, -pub bufferram: __kernel_ulong_t, -pub totalswap: __kernel_ulong_t, -pub freeswap: __kernel_ulong_t, -pub procs: __u16, -pub pad: __u16, -pub totalhigh: __kernel_ulong_t, -pub freehigh: __kernel_ulong_t, -pub mem_unit: __u32, -pub _f: __IncompleteArrayField, +#[derive(Debug, Copy, Clone)] +pub struct termios { +pub c_iflag: tcflag_t, +pub c_oflag: tcflag_t, +pub c_cflag: tcflag_t, +pub c_lflag: tcflag_t, +pub c_line: cc_t, +pub c_cc: [cc_t; 19usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcphdr { -pub source: __be16, -pub dest: __be16, -pub seq: __be32, -pub ack_seq: __be32, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub window: __be16, -pub check: __sum16, -pub urg_ptr: __be16, -} -impl tcphdr { -#[inline] -pub fn res1(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } -} -#[inline] -pub fn set_res1(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn doff(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } -} -#[inline] -pub fn set_doff(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn fin(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } -} -#[inline] -pub fn set_fin(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn syn(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } -} -#[inline] -pub fn set_syn(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 1u8, val as u64) -} -} -#[inline] -pub fn rst(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } -} -#[inline] -pub fn set_rst(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(10usize, 1u8, val as u64) -} -} -#[inline] -pub fn psh(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } -} -#[inline] -pub fn set_psh(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(11usize, 1u8, val as u64) -} -} -#[inline] -pub fn ack(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } -} -#[inline] -pub fn set_ack(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(12usize, 1u8, val as u64) -} -} -#[inline] -pub fn urg(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } -} -#[inline] -pub fn set_urg(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(13usize, 1u8, val as u64) -} -} -#[inline] -pub fn ece(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } -} -#[inline] -pub fn set_ece(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(14usize, 1u8, val as u64) -} +pub struct termios2 { +pub c_iflag: tcflag_t, +pub c_oflag: tcflag_t, +pub c_cflag: tcflag_t, +pub c_lflag: tcflag_t, +pub c_line: cc_t, +pub c_cc: [cc_t; 19usize], +pub c_ispeed: speed_t, +pub c_ospeed: speed_t, } -#[inline] -pub fn cwr(&self) -> __u16 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ktermios { +pub c_iflag: tcflag_t, +pub c_oflag: tcflag_t, +pub c_cflag: tcflag_t, +pub c_lflag: tcflag_t, +pub c_line: cc_t, +pub c_cc: [cc_t; 19usize], +pub c_ispeed: speed_t, +pub c_ospeed: speed_t, } -#[inline] -pub fn set_cwr(&mut self, val: __u16) { -unsafe { -let val: u16 = ::core::mem::transmute(val); -self._bitfield_1.set(15usize, 1u8, val as u64) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct winsize { +pub ws_row: crate::ctypes::c_ushort, +pub ws_col: crate::ctypes::c_ushort, +pub ws_xpixel: crate::ctypes::c_ushort, +pub ws_ypixel: crate::ctypes::c_ushort, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct termio { +pub c_iflag: crate::ctypes::c_ushort, +pub c_oflag: crate::ctypes::c_ushort, +pub c_cflag: crate::ctypes::c_ushort, +pub c_lflag: crate::ctypes::c_ushort, +pub c_line: crate::ctypes::c_uchar, +pub c_cc: [crate::ctypes::c_uchar; 8usize], } -#[inline] -pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let res1: u16 = unsafe { ::core::mem::transmute(res1) }; -res1 as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let doff: u16 = unsafe { ::core::mem::transmute(doff) }; -doff as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let fin: u16 = unsafe { ::core::mem::transmute(fin) }; -fin as u64 -}); -__bindgen_bitfield_unit.set(9usize, 1u8, { -let syn: u16 = unsafe { ::core::mem::transmute(syn) }; -syn as u64 -}); -__bindgen_bitfield_unit.set(10usize, 1u8, { -let rst: u16 = unsafe { ::core::mem::transmute(rst) }; -rst as u64 -}); -__bindgen_bitfield_unit.set(11usize, 1u8, { -let psh: u16 = unsafe { ::core::mem::transmute(psh) }; -psh as u64 -}); -__bindgen_bitfield_unit.set(12usize, 1u8, { -let ack: u16 = unsafe { ::core::mem::transmute(ack) }; -ack as u64 -}); -__bindgen_bitfield_unit.set(13usize, 1u8, { -let urg: u16 = unsafe { ::core::mem::transmute(urg) }; -urg as u64 -}); -__bindgen_bitfield_unit.set(14usize, 1u8, { -let ece: u16 = unsafe { ::core::mem::transmute(ece) }; -ece as u64 -}); -__bindgen_bitfield_unit.set(15usize, 1u8, { -let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; -cwr as u64 -}); -__bindgen_bitfield_unit +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub iov_base: *mut crate::ctypes::c_void, +pub iov_len: __kernel_size_t, } +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct uffd_msg { +pub event: __u8, +pub reserved1: __u8, +pub reserved2: __u16, +pub reserved3: __u32, +pub arg: uffd_msg__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] -pub union tcp_word_hdr { -pub hdr: tcphdr, -pub words: [__be32; 5usize], -} -pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; -pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; -pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; -pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; -pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; -pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; -pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; -pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; -pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; -pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_4 { -TCP_FLAG_CWR = 32768, -TCP_FLAG_ECE = 16384, -TCP_FLAG_URG = 8192, -TCP_FLAG_ACK = 4096, -TCP_FLAG_PSH = 2048, -TCP_FLAG_RST = 1024, -TCP_FLAG_SYN = 512, -TCP_FLAG_FIN = 256, -TCP_RESERVED_BITS = 15, -TCP_DATA_OFFSET = 240, +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { +pub flags: __u64, +pub address: __u64, +pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_repair_opt { -pub opt_code: __u32, -pub opt_val: __u32, +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { +pub ufd: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_repair_window { -pub snd_wl1: __u32, -pub snd_wnd: __u32, -pub max_window: __u32, -pub rcv_wnd: __u32, -pub rcv_wup: __u32, -} -pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; -pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; -pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; -pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_5 { -TCP_NO_QUEUE = 0, -TCP_RECV_QUEUE = 1, -TCP_SEND_QUEUE = 2, -TCP_QUEUES_NR = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_fastopen_client_fail { -TFO_STATUS_UNSPEC = 0, -TFO_COOKIE_UNAVAILABLE = 1, -TFO_DATA_NOT_ACKED = 2, -TFO_SYN_RETRANSMITTED = 3, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum tcp_ca_state { -TCP_CA_Open = 0, -TCP_CA_Disorder = 1, -TCP_CA_CWR = 2, -TCP_CA_Recovery = 3, -TCP_CA_Loss = 4, +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { +pub from: __u64, +pub to: __u64, +pub len: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_info { -pub tcpi_state: __u8, -pub tcpi_ca_state: __u8, -pub tcpi_retransmits: __u8, -pub tcpi_probes: __u8, -pub tcpi_backoff: __u8, -pub tcpi_options: __u8, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -pub tcpi_rto: __u32, -pub tcpi_ato: __u32, -pub tcpi_snd_mss: __u32, -pub tcpi_rcv_mss: __u32, -pub tcpi_unacked: __u32, -pub tcpi_sacked: __u32, -pub tcpi_lost: __u32, -pub tcpi_retrans: __u32, -pub tcpi_fackets: __u32, -pub tcpi_last_data_sent: __u32, -pub tcpi_last_ack_sent: __u32, -pub tcpi_last_data_recv: __u32, -pub tcpi_last_ack_recv: __u32, -pub tcpi_pmtu: __u32, -pub tcpi_rcv_ssthresh: __u32, -pub tcpi_rtt: __u32, -pub tcpi_rttvar: __u32, -pub tcpi_snd_ssthresh: __u32, -pub tcpi_snd_cwnd: __u32, -pub tcpi_advmss: __u32, -pub tcpi_reordering: __u32, -pub tcpi_rcv_rtt: __u32, -pub tcpi_rcv_space: __u32, -pub tcpi_total_retrans: __u32, -pub tcpi_pacing_rate: __u64, -pub tcpi_max_pacing_rate: __u64, -pub tcpi_bytes_acked: __u64, -pub tcpi_bytes_received: __u64, -pub tcpi_segs_out: __u32, -pub tcpi_segs_in: __u32, -pub tcpi_notsent_bytes: __u32, -pub tcpi_min_rtt: __u32, -pub tcpi_data_segs_in: __u32, -pub tcpi_data_segs_out: __u32, -pub tcpi_delivery_rate: __u64, -pub tcpi_busy_time: __u64, -pub tcpi_rwnd_limited: __u64, -pub tcpi_sndbuf_limited: __u64, -pub tcpi_delivered: __u32, -pub tcpi_delivered_ce: __u32, -pub tcpi_bytes_sent: __u64, -pub tcpi_bytes_retrans: __u64, -pub tcpi_dsack_dups: __u32, -pub tcpi_reord_seen: __u32, -pub tcpi_rcv_ooopack: __u32, -pub tcpi_snd_wnd: __u32, -pub tcpi_rcv_wnd: __u32, -pub tcpi_rehash: __u32, -} -impl tcp_info { -#[inline] -pub fn tcpi_snd_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(0usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_rcv_wscale(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } -} -#[inline] -pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(4usize, 4u8, val as u64) -} -} -#[inline] -pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } -} -#[inline] -pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(8usize, 1u8, val as u64) -} -} -#[inline] -pub fn tcpi_fastopen_client_fail(&self) -> __u8 { -unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } -} -#[inline] -pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { -unsafe { -let val: u8 = ::core::mem::transmute(val); -self._bitfield_1.set(9usize, 2u8, val as u64) -} -} -#[inline] -pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { -let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); -__bindgen_bitfield_unit.set(0usize, 4u8, { -let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; -tcpi_snd_wscale as u64 -}); -__bindgen_bitfield_unit.set(4usize, 4u8, { -let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; -tcpi_rcv_wscale as u64 -}); -__bindgen_bitfield_unit.set(8usize, 1u8, { -let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; -tcpi_delivery_rate_app_limited as u64 -}); -__bindgen_bitfield_unit.set(9usize, 2u8, { -let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; -tcpi_fastopen_client_fail as u64 -}); -__bindgen_bitfield_unit -} +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { +pub start: __u64, +pub end: __u64, } -pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; -pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; -pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; -pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; -pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; -pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; -pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; -pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; -pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; -pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; -pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; -pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; -pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; -pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; -pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; -pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; -pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; -pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; -pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; -pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; -pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; -pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; -pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; -pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; -pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; -pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; -pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; -pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_6 { -TCP_NLA_PAD = 0, -TCP_NLA_BUSY = 1, -TCP_NLA_RWND_LIMITED = 2, -TCP_NLA_SNDBUF_LIMITED = 3, -TCP_NLA_DATA_SEGS_OUT = 4, -TCP_NLA_TOTAL_RETRANS = 5, -TCP_NLA_PACING_RATE = 6, -TCP_NLA_DELIVERY_RATE = 7, -TCP_NLA_SND_CWND = 8, -TCP_NLA_REORDERING = 9, -TCP_NLA_MIN_RTT = 10, -TCP_NLA_RECUR_RETRANS = 11, -TCP_NLA_DELIVERY_RATE_APP_LMT = 12, -TCP_NLA_SNDQ_SIZE = 13, -TCP_NLA_CA_STATE = 14, -TCP_NLA_SND_SSTHRESH = 15, -TCP_NLA_DELIVERED = 16, -TCP_NLA_DELIVERED_CE = 17, -TCP_NLA_BYTES_SENT = 18, -TCP_NLA_BYTES_RETRANS = 19, -TCP_NLA_DSACK_DUPS = 20, -TCP_NLA_REORD_SEEN = 21, -TCP_NLA_SRTT = 22, -TCP_NLA_TIMEOUT_REHASH = 23, -TCP_NLA_BYTES_NOTSENT = 24, -TCP_NLA_EDT = 25, -TCP_NLA_TTL = 26, -TCP_NLA_REHASH = 27, +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { +pub reserved1: __u64, +pub reserved2: __u64, +pub reserved3: __u64, } #[repr(C)] -#[derive(Copy, Clone)] -pub struct tcp_md5sig { -pub tcpm_addr: __kernel_sockaddr_storage, -pub tcpm_flags: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_ifindex: crate::ctypes::c_int, -pub tcpm_key: [__u8; 80usize], +#[derive(Debug, Copy, Clone)] +pub struct uffdio_api { +pub api: __u64, +pub features: __u64, +pub ioctls: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_diag_md5sig { -pub tcpm_family: __u8, -pub tcpm_prefixlen: __u8, -pub tcpm_keylen: __u16, -pub tcpm_addr: [__be32; 4usize], -pub tcpm_key: [__u8; 80usize], +pub struct uffdio_range { +pub start: __u64, +pub len: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct tcp_zerocopy_receive { -pub address: __u64, -pub length: __u32, -pub recv_skip_hint: __u32, -pub inq: __u32, -pub err: __s32, -pub copybuf_address: __u64, -pub copybuf_len: __s32, -pub flags: __u32, -pub msg_control: __u64, -pub msg_controllen: __u64, -pub msg_flags: __u32, -pub reserved: __u32, +pub struct uffdio_register { +pub range: uffdio_range, +pub mode: __u64, +pub ioctls: __u64, } -pub type cc_t = crate::ctypes::c_uchar; -pub type speed_t = crate::ctypes::c_uint; -pub type tcflag_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct termios { -pub c_iflag: tcflag_t, -pub c_oflag: tcflag_t, -pub c_cflag: tcflag_t, -pub c_lflag: tcflag_t, -pub c_line: cc_t, -pub c_cc: [cc_t; 19usize], +pub struct uffdio_copy { +pub dst: __u64, +pub src: __u64, +pub len: __u64, +pub mode: __u64, +pub copy: __s64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct termios2 { -pub c_iflag: tcflag_t, -pub c_oflag: tcflag_t, -pub c_cflag: tcflag_t, -pub c_lflag: tcflag_t, -pub c_line: cc_t, -pub c_cc: [cc_t; 19usize], -pub c_ispeed: speed_t, -pub c_ospeed: speed_t, +pub struct uffdio_zeropage { +pub range: uffdio_range, +pub mode: __u64, +pub zeropage: __s64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct ktermios { -pub c_iflag: tcflag_t, -pub c_oflag: tcflag_t, -pub c_cflag: tcflag_t, -pub c_lflag: tcflag_t, -pub c_line: cc_t, -pub c_cc: [cc_t; 19usize], -pub c_ispeed: speed_t, -pub c_ospeed: speed_t, +pub struct uffdio_writeprotect { +pub range: uffdio_range, +pub mode: __u64, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct winsize { -pub ws_row: crate::ctypes::c_ushort, -pub ws_col: crate::ctypes::c_ushort, -pub ws_xpixel: crate::ctypes::c_ushort, -pub ws_ypixel: crate::ctypes::c_ushort, +pub struct uffdio_continue { +pub range: uffdio_range, +pub mode: __u64, +pub mapped: __s64, +} +#[repr(C)] +#[derive(Debug)] +pub struct linux_dirent64 { +pub d_ino: crate::ctypes::c_ulong, +pub d_off: crate::ctypes::c_long, +pub d_reclen: __u16, +pub d_type: __u8, +pub d_name: __IncompleteArrayField, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct termio { -pub c_iflag: crate::ctypes::c_ushort, -pub c_oflag: crate::ctypes::c_ushort, -pub c_cflag: crate::ctypes::c_ushort, -pub c_lflag: crate::ctypes::c_ushort, -pub c_line: crate::ctypes::c_uchar, -pub c_cc: [crate::ctypes::c_uchar; 8usize], +pub struct stat { +pub st_dev: __kernel_ulong_t, +pub st_ino: __kernel_ulong_t, +pub st_nlink: __kernel_ulong_t, +pub st_mode: crate::ctypes::c_uint, +pub st_uid: crate::ctypes::c_uint, +pub st_gid: crate::ctypes::c_uint, +pub __pad0: crate::ctypes::c_uint, +pub st_rdev: __kernel_ulong_t, +pub st_size: __kernel_long_t, +pub st_blksize: __kernel_long_t, +pub st_blocks: __kernel_long_t, +pub st_atime: __kernel_ulong_t, +pub st_atime_nsec: __kernel_ulong_t, +pub st_mtime: __kernel_ulong_t, +pub st_mtime_nsec: __kernel_ulong_t, +pub st_ctime: __kernel_ulong_t, +pub st_ctime_nsec: __kernel_ulong_t, +pub __unused: [__kernel_long_t; 3usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct iovec { -pub iov_base: *mut crate::ctypes::c_void, -pub iov_len: __kernel_size_t, +pub struct __old_kernel_stat { +pub st_dev: crate::ctypes::c_ushort, +pub st_ino: crate::ctypes::c_ushort, +pub st_mode: crate::ctypes::c_ushort, +pub st_nlink: crate::ctypes::c_ushort, +pub st_uid: crate::ctypes::c_ushort, +pub st_gid: crate::ctypes::c_ushort, +pub st_rdev: crate::ctypes::c_ushort, +pub st_size: crate::ctypes::c_uint, +pub st_atime: crate::ctypes::c_uint, +pub st_mtime: crate::ctypes::c_uint, +pub st_ctime: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct statfs { +pub f_type: __kernel_long_t, +pub f_bsize: __kernel_long_t, +pub f_blocks: __kernel_long_t, +pub f_bfree: __kernel_long_t, +pub f_bavail: __kernel_long_t, +pub f_files: __kernel_long_t, +pub f_ffree: __kernel_long_t, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __kernel_long_t, +pub f_frsize: __kernel_long_t, +pub f_flags: __kernel_long_t, +pub f_spare: [__kernel_long_t; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_un { -pub sun_family: __kernel_sa_family_t, -pub sun_path: [crate::ctypes::c_char; 108usize], +pub struct statfs64 { +pub f_type: __kernel_long_t, +pub f_bsize: __kernel_long_t, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __kernel_long_t, +pub f_frsize: __kernel_long_t, +pub f_flags: __kernel_long_t, +pub f_spare: [__kernel_long_t; 4usize], +} +#[repr(C, packed(4))] +#[derive(Debug, Copy, Clone)] +pub struct compat_statfs64 { +pub f_type: __u32, +pub f_bsize: __u32, +pub f_blocks: __u64, +pub f_bfree: __u64, +pub f_bavail: __u64, +pub f_files: __u64, +pub f_ffree: __u64, +pub f_fsid: __kernel_fsid_t, +pub f_namelen: __u32, +pub f_frsize: __u32, +pub f_flags: __u32, +pub f_spare: [__u32; 4usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct oldold_utsname { -pub sysname: [crate::ctypes::c_char; 9usize], -pub nodename: [crate::ctypes::c_char; 9usize], -pub release: [crate::ctypes::c_char; 9usize], -pub version: [crate::ctypes::c_char; 9usize], -pub machine: [crate::ctypes::c_char; 9usize], +pub struct user_desc { +pub entry_number: crate::ctypes::c_uint, +pub base_addr: crate::ctypes::c_uint, +pub limit: crate::ctypes::c_uint, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub __bindgen_padding_0: [u8; 3usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct old_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], +pub struct kernel_sigset_t { +pub sig: [crate::ctypes::c_ulong; 1usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct new_utsname { -pub sysname: [crate::ctypes::c_char; 65usize], -pub nodename: [crate::ctypes::c_char; 65usize], -pub release: [crate::ctypes::c_char; 65usize], -pub version: [crate::ctypes::c_char; 65usize], -pub machine: [crate::ctypes::c_char; 65usize], -pub domainname: [crate::ctypes::c_char; 65usize], +pub struct kernel_sigaction { +pub sa_handler_kernel: __kernel_sighandler_t, +pub sa_flags: crate::ctypes::c_ulong, +pub sa_restorer: __sigrestore_t, +pub sa_mask: kernel_sigset_t, } -impl membarrier_cmd { -pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; +pub const LINUX_VERSION_CODE: u32 = 393984; +pub const LINUX_VERSION_MAJOR: u32 = 6; +pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; +pub const LINUX_VERSION_SUBLEVEL: u32 = 0; +pub const AT_SYSINFO_EHDR: u32 = 33; +pub const AT_VECTOR_SIZE_ARCH: u32 = 3; +pub const AT_NULL: u32 = 0; +pub const AT_IGNORE: u32 = 1; +pub const AT_EXECFD: u32 = 2; +pub const AT_PHDR: u32 = 3; +pub const AT_PHENT: u32 = 4; +pub const AT_PHNUM: u32 = 5; +pub const AT_PAGESZ: u32 = 6; +pub const AT_BASE: u32 = 7; +pub const AT_FLAGS: u32 = 8; +pub const AT_ENTRY: u32 = 9; +pub const AT_NOTELF: u32 = 10; +pub const AT_UID: u32 = 11; +pub const AT_EUID: u32 = 12; +pub const AT_GID: u32 = 13; +pub const AT_EGID: u32 = 14; +pub const AT_PLATFORM: u32 = 15; +pub const AT_HWCAP: u32 = 16; +pub const AT_CLKTCK: u32 = 17; +pub const AT_SECURE: u32 = 23; +pub const AT_BASE_PLATFORM: u32 = 24; +pub const AT_RANDOM: u32 = 25; +pub const AT_HWCAP2: u32 = 26; +pub const AT_RSEQ_FEATURE_SIZE: u32 = 27; +pub const AT_RSEQ_ALIGN: u32 = 28; +pub const AT_EXECFN: u32 = 31; +pub const AT_MINSIGSTKSZ: u32 = 51; +pub const __FD_SETSIZE: u32 = 1024; +pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; +pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; +pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; +pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; +pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; +pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; +pub const VFS_CAP_REVISION_SHIFT: u32 = 24; +pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; +pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; +pub const VFS_CAP_REVISION_1: u32 = 16777216; +pub const VFS_CAP_U32_1: u32 = 1; +pub const VFS_CAP_REVISION_2: u32 = 33554432; +pub const VFS_CAP_U32_2: u32 = 2; +pub const VFS_CAP_REVISION_3: u32 = 50331648; +pub const VFS_CAP_U32_3: u32 = 2; +pub const VFS_CAP_U32: u32 = 2; +pub const VFS_CAP_REVISION: u32 = 50331648; +pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; +pub const _LINUX_CAPABILITY_U32S: u32 = 1; +pub const CAP_CHOWN: u32 = 0; +pub const CAP_DAC_OVERRIDE: u32 = 1; +pub const CAP_DAC_READ_SEARCH: u32 = 2; +pub const CAP_FOWNER: u32 = 3; +pub const CAP_FSETID: u32 = 4; +pub const CAP_KILL: u32 = 5; +pub const CAP_SETGID: u32 = 6; +pub const CAP_SETUID: u32 = 7; +pub const CAP_SETPCAP: u32 = 8; +pub const CAP_LINUX_IMMUTABLE: u32 = 9; +pub const CAP_NET_BIND_SERVICE: u32 = 10; +pub const CAP_NET_BROADCAST: u32 = 11; +pub const CAP_NET_ADMIN: u32 = 12; +pub const CAP_NET_RAW: u32 = 13; +pub const CAP_IPC_LOCK: u32 = 14; +pub const CAP_IPC_OWNER: u32 = 15; +pub const CAP_SYS_MODULE: u32 = 16; +pub const CAP_SYS_RAWIO: u32 = 17; +pub const CAP_SYS_CHROOT: u32 = 18; +pub const CAP_SYS_PTRACE: u32 = 19; +pub const CAP_SYS_PACCT: u32 = 20; +pub const CAP_SYS_ADMIN: u32 = 21; +pub const CAP_SYS_BOOT: u32 = 22; +pub const CAP_SYS_NICE: u32 = 23; +pub const CAP_SYS_RESOURCE: u32 = 24; +pub const CAP_SYS_TIME: u32 = 25; +pub const CAP_SYS_TTY_CONFIG: u32 = 26; +pub const CAP_MKNOD: u32 = 27; +pub const CAP_LEASE: u32 = 28; +pub const CAP_AUDIT_WRITE: u32 = 29; +pub const CAP_AUDIT_CONTROL: u32 = 30; +pub const CAP_SETFCAP: u32 = 31; +pub const CAP_MAC_OVERRIDE: u32 = 32; +pub const CAP_MAC_ADMIN: u32 = 33; +pub const CAP_SYSLOG: u32 = 34; +pub const CAP_WAKE_ALARM: u32 = 35; +pub const CAP_BLOCK_SUSPEND: u32 = 36; +pub const CAP_AUDIT_READ: u32 = 37; +pub const CAP_PERFMON: u32 = 38; +pub const CAP_BPF: u32 = 39; +pub const CAP_CHECKPOINT_RESTORE: u32 = 40; +pub const CAP_LAST_CAP: u32 = 40; +pub const O_ACCMODE: u32 = 3; +pub const O_RDONLY: u32 = 0; +pub const O_WRONLY: u32 = 1; +pub const O_RDWR: u32 = 2; +pub const O_CREAT: u32 = 64; +pub const O_EXCL: u32 = 128; +pub const O_NOCTTY: u32 = 256; +pub const O_TRUNC: u32 = 512; +pub const O_APPEND: u32 = 1024; +pub const O_NONBLOCK: u32 = 2048; +pub const O_DSYNC: u32 = 4096; +pub const FASYNC: u32 = 8192; +pub const O_DIRECT: u32 = 16384; +pub const O_LARGEFILE: u32 = 32768; +pub const O_DIRECTORY: u32 = 65536; +pub const O_NOFOLLOW: u32 = 131072; +pub const O_NOATIME: u32 = 262144; +pub const O_CLOEXEC: u32 = 524288; +pub const __O_SYNC: u32 = 1048576; +pub const O_SYNC: u32 = 1052672; +pub const O_PATH: u32 = 2097152; +pub const __O_TMPFILE: u32 = 4194304; +pub const O_TMPFILE: u32 = 4259840; +pub const O_TMPFILE_MASK: u32 = 4259904; +pub const O_NDELAY: u32 = 2048; +pub const F_DUPFD: u32 = 0; +pub const F_GETFD: u32 = 1; +pub const F_SETFD: u32 = 2; +pub const F_GETFL: u32 = 3; +pub const F_SETFL: u32 = 4; +pub const F_GETLK: u32 = 5; +pub const F_SETLK: u32 = 6; +pub const F_SETLKW: u32 = 7; +pub const F_SETOWN: u32 = 8; +pub const F_GETOWN: u32 = 9; +pub const F_SETSIG: u32 = 10; +pub const F_GETSIG: u32 = 11; +pub const F_SETOWN_EX: u32 = 15; +pub const F_GETOWN_EX: u32 = 16; +pub const F_GETOWNER_UIDS: u32 = 17; +pub const F_OFD_GETLK: u32 = 36; +pub const F_OFD_SETLK: u32 = 37; +pub const F_OFD_SETLKW: u32 = 38; +pub const F_OWNER_TID: u32 = 0; +pub const F_OWNER_PID: u32 = 1; +pub const F_OWNER_PGRP: u32 = 2; +pub const FD_CLOEXEC: u32 = 1; +pub const F_RDLCK: u32 = 0; +pub const F_WRLCK: u32 = 1; +pub const F_UNLCK: u32 = 2; +pub const F_EXLCK: u32 = 4; +pub const F_SHLCK: u32 = 8; +pub const LOCK_SH: u32 = 1; +pub const LOCK_EX: u32 = 2; +pub const LOCK_NB: u32 = 4; +pub const LOCK_UN: u32 = 8; +pub const LOCK_MAND: u32 = 32; +pub const LOCK_READ: u32 = 64; +pub const LOCK_WRITE: u32 = 128; +pub const LOCK_RW: u32 = 192; +pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; +pub const RESOLVE_NO_XDEV: u32 = 1; +pub const RESOLVE_NO_MAGICLINKS: u32 = 2; +pub const RESOLVE_NO_SYMLINKS: u32 = 4; +pub const RESOLVE_BENEATH: u32 = 8; +pub const RESOLVE_IN_ROOT: u32 = 16; +pub const RESOLVE_CACHED: u32 = 32; +pub const F_SETLEASE: u32 = 1024; +pub const F_GETLEASE: u32 = 1025; +pub const F_CANCELLK: u32 = 1029; +pub const F_DUPFD_CLOEXEC: u32 = 1030; +pub const F_NOTIFY: u32 = 1026; +pub const F_SETPIPE_SZ: u32 = 1031; +pub const F_GETPIPE_SZ: u32 = 1032; +pub const F_ADD_SEALS: u32 = 1033; +pub const F_GET_SEALS: u32 = 1034; +pub const F_SEAL_SEAL: u32 = 1; +pub const F_SEAL_SHRINK: u32 = 2; +pub const F_SEAL_GROW: u32 = 4; +pub const F_SEAL_WRITE: u32 = 8; +pub const F_SEAL_FUTURE_WRITE: u32 = 16; +pub const F_SEAL_EXEC: u32 = 32; +pub const F_GET_RW_HINT: u32 = 1035; +pub const F_SET_RW_HINT: u32 = 1036; +pub const F_GET_FILE_RW_HINT: u32 = 1037; +pub const F_SET_FILE_RW_HINT: u32 = 1038; +pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; +pub const RWH_WRITE_LIFE_NONE: u32 = 1; +pub const RWH_WRITE_LIFE_SHORT: u32 = 2; +pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; +pub const RWH_WRITE_LIFE_LONG: u32 = 4; +pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; +pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; +pub const DN_ACCESS: u32 = 1; +pub const DN_MODIFY: u32 = 2; +pub const DN_CREATE: u32 = 4; +pub const DN_DELETE: u32 = 8; +pub const DN_RENAME: u32 = 16; +pub const DN_ATTRIB: u32 = 32; +pub const DN_MULTISHOT: u32 = 2147483648; +pub const AT_FDCWD: i32 = -100; +pub const AT_SYMLINK_NOFOLLOW: u32 = 256; +pub const AT_EACCESS: u32 = 512; +pub const AT_REMOVEDIR: u32 = 512; +pub const AT_SYMLINK_FOLLOW: u32 = 1024; +pub const AT_NO_AUTOMOUNT: u32 = 2048; +pub const AT_EMPTY_PATH: u32 = 4096; +pub const AT_STATX_SYNC_TYPE: u32 = 24576; +pub const AT_STATX_SYNC_AS_STAT: u32 = 0; +pub const AT_STATX_FORCE_SYNC: u32 = 8192; +pub const AT_STATX_DONT_SYNC: u32 = 16384; +pub const AT_RECURSIVE: u32 = 32768; +pub const EPOLL_CLOEXEC: u32 = 524288; +pub const EPOLL_CTL_ADD: u32 = 1; +pub const EPOLL_CTL_DEL: u32 = 2; +pub const EPOLL_CTL_MOD: u32 = 3; +pub const POSIX_FADV_NORMAL: u32 = 0; +pub const POSIX_FADV_RANDOM: u32 = 1; +pub const POSIX_FADV_SEQUENTIAL: u32 = 2; +pub const POSIX_FADV_WILLNEED: u32 = 3; +pub const POSIX_FADV_DONTNEED: u32 = 4; +pub const POSIX_FADV_NOREUSE: u32 = 5; +pub const FALLOC_FL_KEEP_SIZE: u32 = 1; +pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; +pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; +pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; +pub const FALLOC_FL_ZERO_RANGE: u32 = 16; +pub const FALLOC_FL_INSERT_RANGE: u32 = 32; +pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 14; +pub const _IOC_DIRBITS: u32 = 2; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 3; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 30; +pub const _IOC_NONE: u32 = 0; +pub const _IOC_WRITE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const IOC_IN: u32 = 1073741824; +pub const IOC_OUT: u32 = 2147483648; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const OPEN_TREE_CLOEXEC: u32 = 524288; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const FUTEX_WAIT: u32 = 0; +pub const FUTEX_WAKE: u32 = 1; +pub const FUTEX_FD: u32 = 2; +pub const FUTEX_REQUEUE: u32 = 3; +pub const FUTEX_CMP_REQUEUE: u32 = 4; +pub const FUTEX_WAKE_OP: u32 = 5; +pub const FUTEX_LOCK_PI: u32 = 6; +pub const FUTEX_UNLOCK_PI: u32 = 7; +pub const FUTEX_TRYLOCK_PI: u32 = 8; +pub const FUTEX_WAIT_BITSET: u32 = 9; +pub const FUTEX_WAKE_BITSET: u32 = 10; +pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; +pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; +pub const FUTEX_LOCK_PI2: u32 = 13; +pub const FUTEX_PRIVATE_FLAG: u32 = 128; +pub const FUTEX_CLOCK_REALTIME: u32 = 256; +pub const FUTEX_CMD_MASK: i32 = -385; +pub const FUTEX_WAIT_PRIVATE: u32 = 128; +pub const FUTEX_WAKE_PRIVATE: u32 = 129; +pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; +pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; +pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; +pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; +pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; +pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; +pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; +pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; +pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; +pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; +pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; +pub const FUTEX_32: u32 = 2; +pub const FUTEX_WAITV_MAX: u32 = 128; +pub const FUTEX_WAITERS: u32 = 2147483648; +pub const FUTEX_OWNER_DIED: u32 = 1073741824; +pub const FUTEX_TID_MASK: u32 = 1073741823; +pub const ROBUST_LIST_LIMIT: u32 = 2048; +pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; +pub const FUTEX_OP_SET: u32 = 0; +pub const FUTEX_OP_ADD: u32 = 1; +pub const FUTEX_OP_OR: u32 = 2; +pub const FUTEX_OP_ANDN: u32 = 3; +pub const FUTEX_OP_XOR: u32 = 4; +pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; +pub const FUTEX_OP_CMP_EQ: u32 = 0; +pub const FUTEX_OP_CMP_NE: u32 = 1; +pub const FUTEX_OP_CMP_LT: u32 = 2; +pub const FUTEX_OP_CMP_LE: u32 = 3; +pub const FUTEX_OP_CMP_GT: u32 = 4; +pub const FUTEX_OP_CMP_GE: u32 = 5; +pub const IN_ACCESS: u32 = 1; +pub const IN_MODIFY: u32 = 2; +pub const IN_ATTRIB: u32 = 4; +pub const IN_CLOSE_WRITE: u32 = 8; +pub const IN_CLOSE_NOWRITE: u32 = 16; +pub const IN_OPEN: u32 = 32; +pub const IN_MOVED_FROM: u32 = 64; +pub const IN_MOVED_TO: u32 = 128; +pub const IN_CREATE: u32 = 256; +pub const IN_DELETE: u32 = 512; +pub const IN_DELETE_SELF: u32 = 1024; +pub const IN_MOVE_SELF: u32 = 2048; +pub const IN_UNMOUNT: u32 = 8192; +pub const IN_Q_OVERFLOW: u32 = 16384; +pub const IN_IGNORED: u32 = 32768; +pub const IN_CLOSE: u32 = 24; +pub const IN_MOVE: u32 = 192; +pub const IN_ONLYDIR: u32 = 16777216; +pub const IN_DONT_FOLLOW: u32 = 33554432; +pub const IN_EXCL_UNLINK: u32 = 67108864; +pub const IN_MASK_CREATE: u32 = 268435456; +pub const IN_MASK_ADD: u32 = 536870912; +pub const IN_ISDIR: u32 = 1073741824; +pub const IN_ONESHOT: u32 = 2147483648; +pub const IN_ALL_EVENTS: u32 = 4095; +pub const IN_CLOEXEC: u32 = 524288; +pub const IN_NONBLOCK: u32 = 2048; +pub const ADFS_SUPER_MAGIC: u32 = 44533; +pub const AFFS_SUPER_MAGIC: u32 = 44543; +pub const AFS_SUPER_MAGIC: u32 = 1397113167; +pub const AUTOFS_SUPER_MAGIC: u32 = 391; +pub const CEPH_SUPER_MAGIC: u32 = 12805120; +pub const CODA_SUPER_MAGIC: u32 = 1937076805; +pub const CRAMFS_MAGIC: u32 = 684539205; +pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; +pub const DEBUGFS_MAGIC: u32 = 1684170528; +pub const SECURITYFS_MAGIC: u32 = 1935894131; +pub const SELINUX_MAGIC: u32 = 4185718668; +pub const SMACK_MAGIC: u32 = 1128357203; +pub const RAMFS_MAGIC: u32 = 2240043254; +pub const TMPFS_MAGIC: u32 = 16914836; +pub const HUGETLBFS_MAGIC: u32 = 2508478710; +pub const SQUASHFS_MAGIC: u32 = 1936814952; +pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; +pub const EFS_SUPER_MAGIC: u32 = 4278867; +pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; +pub const EXT2_SUPER_MAGIC: u32 = 61267; +pub const EXT3_SUPER_MAGIC: u32 = 61267; +pub const XENFS_SUPER_MAGIC: u32 = 2881100148; +pub const EXT4_SUPER_MAGIC: u32 = 61267; +pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; +pub const NILFS_SUPER_MAGIC: u32 = 13364; +pub const F2FS_SUPER_MAGIC: u32 = 4076150800; +pub const HPFS_SUPER_MAGIC: u32 = 4187351113; +pub const ISOFS_SUPER_MAGIC: u32 = 38496; +pub const JFFS2_SUPER_MAGIC: u32 = 29366; +pub const XFS_SUPER_MAGIC: u32 = 1481003842; +pub const PSTOREFS_MAGIC: u32 = 1634035564; +pub const EFIVARFS_MAGIC: u32 = 3730735588; +pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; +pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; +pub const FUSE_SUPER_MAGIC: u32 = 1702057286; +pub const MINIX_SUPER_MAGIC: u32 = 4991; +pub const MINIX_SUPER_MAGIC2: u32 = 5007; +pub const MINIX2_SUPER_MAGIC: u32 = 9320; +pub const MINIX2_SUPER_MAGIC2: u32 = 9336; +pub const MINIX3_SUPER_MAGIC: u32 = 19802; +pub const MSDOS_SUPER_MAGIC: u32 = 19780; +pub const EXFAT_SUPER_MAGIC: u32 = 538032816; +pub const NCP_SUPER_MAGIC: u32 = 22092; +pub const NFS_SUPER_MAGIC: u32 = 26985; +pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; +pub const OPENPROM_SUPER_MAGIC: u32 = 40865; +pub const QNX4_SUPER_MAGIC: u32 = 47; +pub const QNX6_SUPER_MAGIC: u32 = 1746473250; +pub const AFS_FS_MAGIC: u32 = 1799439955; +pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; +pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9] = b"ReIsErFs\0"; +pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr2Fs\0"; +pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10] = b"ReIsEr3Fs\0"; +pub const SMB_SUPER_MAGIC: u32 = 20859; +pub const CIFS_SUPER_MAGIC: u32 = 4283649346; +pub const SMB2_SUPER_MAGIC: u32 = 4266872130; +pub const CGROUP_SUPER_MAGIC: u32 = 2613483; +pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; +pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; +pub const STACK_END_MAGIC: u32 = 1470918301; +pub const TRACEFS_MAGIC: u32 = 1953653091; +pub const V9FS_MAGIC: u32 = 16914839; +pub const BDEVFS_MAGIC: u32 = 1650746742; +pub const DAXFS_MAGIC: u32 = 1684300152; +pub const BINFMTFS_MAGIC: u32 = 1112100429; +pub const DEVPTS_SUPER_MAGIC: u32 = 7377; +pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; +pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; +pub const PIPEFS_MAGIC: u32 = 1346981957; +pub const PROC_SUPER_MAGIC: u32 = 40864; +pub const SOCKFS_MAGIC: u32 = 1397703499; +pub const SYSFS_MAGIC: u32 = 1650812274; +pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; +pub const MTD_INODE_FS_MAGIC: u32 = 288389204; +pub const ANON_INODE_FS_MAGIC: u32 = 151263540; +pub const BTRFS_TEST_MAGIC: u32 = 1936880249; +pub const NSFS_MAGIC: u32 = 1853056627; +pub const BPF_FS_MAGIC: u32 = 3405662737; +pub const AAFS_MAGIC: u32 = 1513908720; +pub const ZONEFS_MAGIC: u32 = 1515144787; +pub const UDF_SUPER_MAGIC: u32 = 352400198; +pub const DMA_BUF_MAGIC: u32 = 1145913666; +pub const DEVMEM_MAGIC: u32 = 1162691661; +pub const SECRETMEM_MAGIC: u32 = 1397048141; +pub const MAP_32BIT: u32 = 64; +pub const PROT_READ: u32 = 1; +pub const PROT_WRITE: u32 = 2; +pub const PROT_EXEC: u32 = 4; +pub const PROT_SEM: u32 = 8; +pub const PROT_NONE: u32 = 0; +pub const PROT_GROWSDOWN: u32 = 16777216; +pub const PROT_GROWSUP: u32 = 33554432; +pub const MAP_TYPE: u32 = 15; +pub const MAP_FIXED: u32 = 16; +pub const MAP_ANONYMOUS: u32 = 32; +pub const MAP_POPULATE: u32 = 32768; +pub const MAP_NONBLOCK: u32 = 65536; +pub const MAP_STACK: u32 = 131072; +pub const MAP_HUGETLB: u32 = 262144; +pub const MAP_SYNC: u32 = 524288; +pub const MAP_FIXED_NOREPLACE: u32 = 1048576; +pub const MAP_UNINITIALIZED: u32 = 67108864; +pub const MLOCK_ONFAULT: u32 = 1; +pub const MS_ASYNC: u32 = 1; +pub const MS_INVALIDATE: u32 = 2; +pub const MS_SYNC: u32 = 4; +pub const MADV_NORMAL: u32 = 0; +pub const MADV_RANDOM: u32 = 1; +pub const MADV_SEQUENTIAL: u32 = 2; +pub const MADV_WILLNEED: u32 = 3; +pub const MADV_DONTNEED: u32 = 4; +pub const MADV_FREE: u32 = 8; +pub const MADV_REMOVE: u32 = 9; +pub const MADV_DONTFORK: u32 = 10; +pub const MADV_DOFORK: u32 = 11; +pub const MADV_HWPOISON: u32 = 100; +pub const MADV_SOFT_OFFLINE: u32 = 101; +pub const MADV_MERGEABLE: u32 = 12; +pub const MADV_UNMERGEABLE: u32 = 13; +pub const MADV_HUGEPAGE: u32 = 14; +pub const MADV_NOHUGEPAGE: u32 = 15; +pub const MADV_DONTDUMP: u32 = 16; +pub const MADV_DODUMP: u32 = 17; +pub const MADV_WIPEONFORK: u32 = 18; +pub const MADV_KEEPONFORK: u32 = 19; +pub const MADV_COLD: u32 = 20; +pub const MADV_PAGEOUT: u32 = 21; +pub const MADV_POPULATE_READ: u32 = 22; +pub const MADV_POPULATE_WRITE: u32 = 23; +pub const MADV_DONTNEED_LOCKED: u32 = 24; +pub const MADV_COLLAPSE: u32 = 25; +pub const MAP_FILE: u32 = 0; +pub const PKEY_DISABLE_ACCESS: u32 = 1; +pub const PKEY_DISABLE_WRITE: u32 = 2; +pub const PKEY_ACCESS_MASK: u32 = 3; +pub const MAP_GROWSDOWN: u32 = 256; +pub const MAP_DENYWRITE: u32 = 2048; +pub const MAP_EXECUTABLE: u32 = 4096; +pub const MAP_LOCKED: u32 = 8192; +pub const MAP_NORESERVE: u32 = 16384; +pub const MCL_CURRENT: u32 = 1; +pub const MCL_FUTURE: u32 = 2; +pub const MCL_ONFAULT: u32 = 4; +pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; +pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; +pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; +pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; +pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; +pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; +pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; +pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; +pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; +pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; +pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; +pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; +pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; +pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; +pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; +pub const MREMAP_MAYMOVE: u32 = 1; +pub const MREMAP_FIXED: u32 = 2; +pub const MREMAP_DONTUNMAP: u32 = 4; +pub const OVERCOMMIT_GUESS: u32 = 0; +pub const OVERCOMMIT_ALWAYS: u32 = 1; +pub const OVERCOMMIT_NEVER: u32 = 2; +pub const MAP_SHARED: u32 = 1; +pub const MAP_PRIVATE: u32 = 2; +pub const MAP_SHARED_VALIDATE: u32 = 3; +pub const MAP_HUGE_SHIFT: u32 = 26; +pub const MAP_HUGE_MASK: u32 = 63; +pub const MAP_HUGE_16KB: u32 = 939524096; +pub const MAP_HUGE_64KB: u32 = 1073741824; +pub const MAP_HUGE_512KB: u32 = 1275068416; +pub const MAP_HUGE_1MB: u32 = 1342177280; +pub const MAP_HUGE_2MB: u32 = 1409286144; +pub const MAP_HUGE_8MB: u32 = 1543503872; +pub const MAP_HUGE_16MB: u32 = 1610612736; +pub const MAP_HUGE_32MB: u32 = 1677721600; +pub const MAP_HUGE_256MB: u32 = 1879048192; +pub const MAP_HUGE_512MB: u32 = 1946157056; +pub const MAP_HUGE_1GB: u32 = 2013265920; +pub const MAP_HUGE_2GB: u32 = 2080374784; +pub const MAP_HUGE_16GB: u32 = 2281701376; +pub const POLLIN: u32 = 1; +pub const POLLPRI: u32 = 2; +pub const POLLOUT: u32 = 4; +pub const POLLERR: u32 = 8; +pub const POLLHUP: u32 = 16; +pub const POLLNVAL: u32 = 32; +pub const POLLRDNORM: u32 = 64; +pub const POLLRDBAND: u32 = 128; +pub const POLLWRNORM: u32 = 256; +pub const POLLWRBAND: u32 = 512; +pub const POLLMSG: u32 = 1024; +pub const POLLREMOVE: u32 = 4096; +pub const POLLRDHUP: u32 = 8192; +pub const GRND_NONBLOCK: u32 = 1; +pub const GRND_RANDOM: u32 = 2; +pub const GRND_INSECURE: u32 = 4; +pub const ITIMER_REAL: u32 = 0; +pub const ITIMER_VIRTUAL: u32 = 1; +pub const ITIMER_PROF: u32 = 2; +pub const CLOCK_REALTIME: u32 = 0; +pub const CLOCK_MONOTONIC: u32 = 1; +pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; +pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; +pub const CLOCK_MONOTONIC_RAW: u32 = 4; +pub const CLOCK_REALTIME_COARSE: u32 = 5; +pub const CLOCK_MONOTONIC_COARSE: u32 = 6; +pub const CLOCK_BOOTTIME: u32 = 7; +pub const CLOCK_REALTIME_ALARM: u32 = 8; +pub const CLOCK_BOOTTIME_ALARM: u32 = 9; +pub const CLOCK_SGI_CYCLE: u32 = 10; +pub const CLOCK_TAI: u32 = 11; +pub const MAX_CLOCKS: u32 = 16; +pub const CLOCKS_MASK: u32 = 1; +pub const CLOCKS_MONO: u32 = 1; +pub const TIMER_ABSTIME: u32 = 1; +pub const RUSAGE_SELF: u32 = 0; +pub const RUSAGE_CHILDREN: i32 = -1; +pub const RUSAGE_BOTH: i32 = -2; +pub const RUSAGE_THREAD: u32 = 1; +pub const RLIM64_INFINITY: i32 = -1; +pub const PRIO_MIN: i32 = -20; +pub const PRIO_MAX: u32 = 20; +pub const PRIO_PROCESS: u32 = 0; +pub const PRIO_PGRP: u32 = 1; +pub const PRIO_USER: u32 = 2; +pub const _STK_LIM: u32 = 8388608; +pub const MLOCK_LIMIT: u32 = 8388608; +pub const RLIMIT_CPU: u32 = 0; +pub const RLIMIT_FSIZE: u32 = 1; +pub const RLIMIT_DATA: u32 = 2; +pub const RLIMIT_STACK: u32 = 3; +pub const RLIMIT_CORE: u32 = 4; +pub const RLIMIT_RSS: u32 = 5; +pub const RLIMIT_NPROC: u32 = 6; +pub const RLIMIT_NOFILE: u32 = 7; +pub const RLIMIT_MEMLOCK: u32 = 8; +pub const RLIMIT_AS: u32 = 9; +pub const RLIMIT_LOCKS: u32 = 10; +pub const RLIMIT_SIGPENDING: u32 = 11; +pub const RLIMIT_MSGQUEUE: u32 = 12; +pub const RLIMIT_NICE: u32 = 13; +pub const RLIMIT_RTPRIO: u32 = 14; +pub const RLIMIT_RTTIME: u32 = 15; +pub const RLIM_NLIMITS: u32 = 16; +pub const RLIM_INFINITY: i32 = -1; +pub const CSIGNAL: u32 = 255; +pub const CLONE_VM: u32 = 256; +pub const CLONE_FS: u32 = 512; +pub const CLONE_FILES: u32 = 1024; +pub const CLONE_SIGHAND: u32 = 2048; +pub const CLONE_PIDFD: u32 = 4096; +pub const CLONE_PTRACE: u32 = 8192; +pub const CLONE_VFORK: u32 = 16384; +pub const CLONE_PARENT: u32 = 32768; +pub const CLONE_THREAD: u32 = 65536; +pub const CLONE_NEWNS: u32 = 131072; +pub const CLONE_SYSVSEM: u32 = 262144; +pub const CLONE_SETTLS: u32 = 524288; +pub const CLONE_PARENT_SETTID: u32 = 1048576; +pub const CLONE_CHILD_CLEARTID: u32 = 2097152; +pub const CLONE_DETACHED: u32 = 4194304; +pub const CLONE_UNTRACED: u32 = 8388608; +pub const CLONE_CHILD_SETTID: u32 = 16777216; +pub const CLONE_NEWCGROUP: u32 = 33554432; +pub const CLONE_NEWUTS: u32 = 67108864; +pub const CLONE_NEWIPC: u32 = 134217728; +pub const CLONE_NEWUSER: u32 = 268435456; +pub const CLONE_NEWPID: u32 = 536870912; +pub const CLONE_NEWNET: u32 = 1073741824; +pub const CLONE_IO: u32 = 2147483648; +pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; +pub const CLONE_INTO_CGROUP: u64 = 8589934592; +pub const CLONE_NEWTIME: u32 = 128; +pub const CLONE_ARGS_SIZE_VER0: u32 = 64; +pub const CLONE_ARGS_SIZE_VER1: u32 = 80; +pub const CLONE_ARGS_SIZE_VER2: u32 = 88; +pub const SCHED_NORMAL: u32 = 0; +pub const SCHED_FIFO: u32 = 1; +pub const SCHED_RR: u32 = 2; +pub const SCHED_BATCH: u32 = 3; +pub const SCHED_IDLE: u32 = 5; +pub const SCHED_DEADLINE: u32 = 6; +pub const SCHED_RESET_ON_FORK: u32 = 1073741824; +pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; +pub const SCHED_FLAG_RECLAIM: u32 = 2; +pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; +pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; +pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; +pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; +pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; +pub const SCHED_FLAG_KEEP_ALL: u32 = 24; +pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; +pub const SCHED_FLAG_ALL: u32 = 127; +pub const NSIG: u32 = 32; +pub const SIGHUP: u32 = 1; +pub const SIGINT: u32 = 2; +pub const SIGQUIT: u32 = 3; +pub const SIGILL: u32 = 4; +pub const SIGTRAP: u32 = 5; +pub const SIGABRT: u32 = 6; +pub const SIGIOT: u32 = 6; +pub const SIGBUS: u32 = 7; +pub const SIGFPE: u32 = 8; +pub const SIGKILL: u32 = 9; +pub const SIGUSR1: u32 = 10; +pub const SIGSEGV: u32 = 11; +pub const SIGUSR2: u32 = 12; +pub const SIGPIPE: u32 = 13; +pub const SIGALRM: u32 = 14; +pub const SIGTERM: u32 = 15; +pub const SIGSTKFLT: u32 = 16; +pub const SIGCHLD: u32 = 17; +pub const SIGCONT: u32 = 18; +pub const SIGSTOP: u32 = 19; +pub const SIGTSTP: u32 = 20; +pub const SIGTTIN: u32 = 21; +pub const SIGTTOU: u32 = 22; +pub const SIGURG: u32 = 23; +pub const SIGXCPU: u32 = 24; +pub const SIGXFSZ: u32 = 25; +pub const SIGVTALRM: u32 = 26; +pub const SIGPROF: u32 = 27; +pub const SIGWINCH: u32 = 28; +pub const SIGIO: u32 = 29; +pub const SIGPOLL: u32 = 29; +pub const SIGPWR: u32 = 30; +pub const SIGSYS: u32 = 31; +pub const SIGUNUSED: u32 = 31; +pub const SIGRTMIN: u32 = 32; +pub const SA_RESTORER: u32 = 67108864; +pub const MINSIGSTKSZ: u32 = 2048; +pub const SIGSTKSZ: u32 = 8192; +pub const SA_NOCLDSTOP: u32 = 1; +pub const SA_NOCLDWAIT: u32 = 2; +pub const SA_SIGINFO: u32 = 4; +pub const SA_UNSUPPORTED: u32 = 1024; +pub const SA_EXPOSE_TAGBITS: u32 = 2048; +pub const SA_ONSTACK: u32 = 134217728; +pub const SA_RESTART: u32 = 268435456; +pub const SA_NODEFER: u32 = 1073741824; +pub const SA_RESETHAND: u32 = 2147483648; +pub const SA_NOMASK: u32 = 1073741824; +pub const SA_ONESHOT: u32 = 2147483648; +pub const SIG_BLOCK: u32 = 0; +pub const SIG_UNBLOCK: u32 = 1; +pub const SIG_SETMASK: u32 = 2; +pub const SI_MAX_SIZE: u32 = 128; +pub const SI_USER: u32 = 0; +pub const SI_KERNEL: u32 = 128; +pub const SI_QUEUE: i32 = -1; +pub const SI_TIMER: i32 = -2; +pub const SI_MESGQ: i32 = -3; +pub const SI_ASYNCIO: i32 = -4; +pub const SI_SIGIO: i32 = -5; +pub const SI_TKILL: i32 = -6; +pub const SI_DETHREAD: i32 = -7; +pub const SI_ASYNCNL: i32 = -60; +pub const ILL_ILLOPC: u32 = 1; +pub const ILL_ILLOPN: u32 = 2; +pub const ILL_ILLADR: u32 = 3; +pub const ILL_ILLTRP: u32 = 4; +pub const ILL_PRVOPC: u32 = 5; +pub const ILL_PRVREG: u32 = 6; +pub const ILL_COPROC: u32 = 7; +pub const ILL_BADSTK: u32 = 8; +pub const ILL_BADIADDR: u32 = 9; +pub const __ILL_BREAK: u32 = 10; +pub const __ILL_BNDMOD: u32 = 11; +pub const NSIGILL: u32 = 11; +pub const FPE_INTDIV: u32 = 1; +pub const FPE_INTOVF: u32 = 2; +pub const FPE_FLTDIV: u32 = 3; +pub const FPE_FLTOVF: u32 = 4; +pub const FPE_FLTUND: u32 = 5; +pub const FPE_FLTRES: u32 = 6; +pub const FPE_FLTINV: u32 = 7; +pub const FPE_FLTSUB: u32 = 8; +pub const __FPE_DECOVF: u32 = 9; +pub const __FPE_DECDIV: u32 = 10; +pub const __FPE_DECERR: u32 = 11; +pub const __FPE_INVASC: u32 = 12; +pub const __FPE_INVDEC: u32 = 13; +pub const FPE_FLTUNK: u32 = 14; +pub const FPE_CONDTRAP: u32 = 15; +pub const NSIGFPE: u32 = 15; +pub const SEGV_MAPERR: u32 = 1; +pub const SEGV_ACCERR: u32 = 2; +pub const SEGV_BNDERR: u32 = 3; +pub const SEGV_PKUERR: u32 = 4; +pub const SEGV_ACCADI: u32 = 5; +pub const SEGV_ADIDERR: u32 = 6; +pub const SEGV_ADIPERR: u32 = 7; +pub const SEGV_MTEAERR: u32 = 8; +pub const SEGV_MTESERR: u32 = 9; +pub const NSIGSEGV: u32 = 9; +pub const BUS_ADRALN: u32 = 1; +pub const BUS_ADRERR: u32 = 2; +pub const BUS_OBJERR: u32 = 3; +pub const BUS_MCEERR_AR: u32 = 4; +pub const BUS_MCEERR_AO: u32 = 5; +pub const NSIGBUS: u32 = 5; +pub const TRAP_BRKPT: u32 = 1; +pub const TRAP_TRACE: u32 = 2; +pub const TRAP_BRANCH: u32 = 3; +pub const TRAP_HWBKPT: u32 = 4; +pub const TRAP_UNK: u32 = 5; +pub const TRAP_PERF: u32 = 6; +pub const NSIGTRAP: u32 = 6; +pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; +pub const CLD_EXITED: u32 = 1; +pub const CLD_KILLED: u32 = 2; +pub const CLD_DUMPED: u32 = 3; +pub const CLD_TRAPPED: u32 = 4; +pub const CLD_STOPPED: u32 = 5; +pub const CLD_CONTINUED: u32 = 6; +pub const NSIGCHLD: u32 = 6; +pub const POLL_IN: u32 = 1; +pub const POLL_OUT: u32 = 2; +pub const POLL_MSG: u32 = 3; +pub const POLL_ERR: u32 = 4; +pub const POLL_PRI: u32 = 5; +pub const POLL_HUP: u32 = 6; +pub const NSIGPOLL: u32 = 6; +pub const SYS_SECCOMP: u32 = 1; +pub const SYS_USER_DISPATCH: u32 = 2; +pub const NSIGSYS: u32 = 2; +pub const EMT_TAGOVF: u32 = 1; +pub const NSIGEMT: u32 = 1; +pub const SIGEV_SIGNAL: u32 = 0; +pub const SIGEV_NONE: u32 = 1; +pub const SIGEV_THREAD: u32 = 2; +pub const SIGEV_THREAD_ID: u32 = 4; +pub const SIGEV_MAX_SIZE: u32 = 64; +pub const SS_ONSTACK: u32 = 1; +pub const SS_DISABLE: u32 = 2; +pub const SS_AUTODISARM: u32 = 2147483648; +pub const SS_FLAG_BITS: u32 = 2147483648; +pub const S_IFMT: u32 = 61440; +pub const S_IFSOCK: u32 = 49152; +pub const S_IFLNK: u32 = 40960; +pub const S_IFREG: u32 = 32768; +pub const S_IFBLK: u32 = 24576; +pub const S_IFDIR: u32 = 16384; +pub const S_IFCHR: u32 = 8192; +pub const S_IFIFO: u32 = 4096; +pub const S_ISUID: u32 = 2048; +pub const S_ISGID: u32 = 1024; +pub const S_ISVTX: u32 = 512; +pub const S_IRWXU: u32 = 448; +pub const S_IRUSR: u32 = 256; +pub const S_IWUSR: u32 = 128; +pub const S_IXUSR: u32 = 64; +pub const S_IRWXG: u32 = 56; +pub const S_IRGRP: u32 = 32; +pub const S_IWGRP: u32 = 16; +pub const S_IXGRP: u32 = 8; +pub const S_IRWXO: u32 = 7; +pub const S_IROTH: u32 = 4; +pub const S_IWOTH: u32 = 2; +pub const S_IXOTH: u32 = 1; +pub const STATX_TYPE: u32 = 1; +pub const STATX_MODE: u32 = 2; +pub const STATX_NLINK: u32 = 4; +pub const STATX_UID: u32 = 8; +pub const STATX_GID: u32 = 16; +pub const STATX_ATIME: u32 = 32; +pub const STATX_MTIME: u32 = 64; +pub const STATX_CTIME: u32 = 128; +pub const STATX_INO: u32 = 256; +pub const STATX_SIZE: u32 = 512; +pub const STATX_BLOCKS: u32 = 1024; +pub const STATX_BASIC_STATS: u32 = 2047; +pub const STATX_BTIME: u32 = 2048; +pub const STATX_MNT_ID: u32 = 4096; +pub const STATX_DIOALIGN: u32 = 8192; +pub const STATX__RESERVED: u32 = 2147483648; +pub const STATX_ALL: u32 = 4095; +pub const STATX_ATTR_COMPRESSED: u32 = 4; +pub const STATX_ATTR_IMMUTABLE: u32 = 16; +pub const STATX_ATTR_APPEND: u32 = 32; +pub const STATX_ATTR_NODUMP: u32 = 64; +pub const STATX_ATTR_ENCRYPTED: u32 = 2048; +pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; +pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; +pub const STATX_ATTR_VERITY: u32 = 1048576; +pub const STATX_ATTR_DAX: u32 = 2097152; +pub const IGNBRK: u32 = 1; +pub const BRKINT: u32 = 2; +pub const IGNPAR: u32 = 4; +pub const PARMRK: u32 = 8; +pub const INPCK: u32 = 16; +pub const ISTRIP: u32 = 32; +pub const INLCR: u32 = 64; +pub const IGNCR: u32 = 128; +pub const ICRNL: u32 = 256; +pub const IXANY: u32 = 2048; +pub const OPOST: u32 = 1; +pub const OCRNL: u32 = 8; +pub const ONOCR: u32 = 16; +pub const ONLRET: u32 = 32; +pub const OFILL: u32 = 64; +pub const OFDEL: u32 = 128; +pub const B0: u32 = 0; +pub const B50: u32 = 1; +pub const B75: u32 = 2; +pub const B110: u32 = 3; +pub const B134: u32 = 4; +pub const B150: u32 = 5; +pub const B200: u32 = 6; +pub const B300: u32 = 7; +pub const B600: u32 = 8; +pub const B1200: u32 = 9; +pub const B1800: u32 = 10; +pub const B2400: u32 = 11; +pub const B4800: u32 = 12; +pub const B9600: u32 = 13; +pub const B19200: u32 = 14; +pub const B38400: u32 = 15; +pub const EXTA: u32 = 14; +pub const EXTB: u32 = 15; +pub const ADDRB: u32 = 536870912; +pub const CMSPAR: u32 = 1073741824; +pub const CRTSCTS: u32 = 2147483648; +pub const IBSHIFT: u32 = 16; +pub const TCOOFF: u32 = 0; +pub const TCOON: u32 = 1; +pub const TCIOFF: u32 = 2; +pub const TCION: u32 = 3; +pub const TCIFLUSH: u32 = 0; +pub const TCOFLUSH: u32 = 1; +pub const TCIOFLUSH: u32 = 2; +pub const NCCS: u32 = 19; +pub const VINTR: u32 = 0; +pub const VQUIT: u32 = 1; +pub const VERASE: u32 = 2; +pub const VKILL: u32 = 3; +pub const VEOF: u32 = 4; +pub const VTIME: u32 = 5; +pub const VMIN: u32 = 6; +pub const VSWTC: u32 = 7; +pub const VSTART: u32 = 8; +pub const VSTOP: u32 = 9; +pub const VSUSP: u32 = 10; +pub const VEOL: u32 = 11; +pub const VREPRINT: u32 = 12; +pub const VDISCARD: u32 = 13; +pub const VWERASE: u32 = 14; +pub const VLNEXT: u32 = 15; +pub const VEOL2: u32 = 16; +pub const IUCLC: u32 = 512; +pub const IXON: u32 = 1024; +pub const IXOFF: u32 = 4096; +pub const IMAXBEL: u32 = 8192; +pub const IUTF8: u32 = 16384; +pub const OLCUC: u32 = 2; +pub const ONLCR: u32 = 4; +pub const NLDLY: u32 = 256; +pub const NL0: u32 = 0; +pub const NL1: u32 = 256; +pub const CRDLY: u32 = 1536; +pub const CR0: u32 = 0; +pub const CR1: u32 = 512; +pub const CR2: u32 = 1024; +pub const CR3: u32 = 1536; +pub const TABDLY: u32 = 6144; +pub const TAB0: u32 = 0; +pub const TAB1: u32 = 2048; +pub const TAB2: u32 = 4096; +pub const TAB3: u32 = 6144; +pub const XTABS: u32 = 6144; +pub const BSDLY: u32 = 8192; +pub const BS0: u32 = 0; +pub const BS1: u32 = 8192; +pub const VTDLY: u32 = 16384; +pub const VT0: u32 = 0; +pub const VT1: u32 = 16384; +pub const FFDLY: u32 = 32768; +pub const FF0: u32 = 0; +pub const FF1: u32 = 32768; +pub const CBAUD: u32 = 4111; +pub const CSIZE: u32 = 48; +pub const CS5: u32 = 0; +pub const CS6: u32 = 16; +pub const CS7: u32 = 32; +pub const CS8: u32 = 48; +pub const CSTOPB: u32 = 64; +pub const CREAD: u32 = 128; +pub const PARENB: u32 = 256; +pub const PARODD: u32 = 512; +pub const HUPCL: u32 = 1024; +pub const CLOCAL: u32 = 2048; +pub const CBAUDEX: u32 = 4096; +pub const BOTHER: u32 = 4096; +pub const B57600: u32 = 4097; +pub const B115200: u32 = 4098; +pub const B230400: u32 = 4099; +pub const B460800: u32 = 4100; +pub const B500000: u32 = 4101; +pub const B576000: u32 = 4102; +pub const B921600: u32 = 4103; +pub const B1000000: u32 = 4104; +pub const B1152000: u32 = 4105; +pub const B1500000: u32 = 4106; +pub const B2000000: u32 = 4107; +pub const B2500000: u32 = 4108; +pub const B3000000: u32 = 4109; +pub const B3500000: u32 = 4110; +pub const B4000000: u32 = 4111; +pub const CIBAUD: u32 = 269418496; +pub const ISIG: u32 = 1; +pub const ICANON: u32 = 2; +pub const XCASE: u32 = 4; +pub const ECHO: u32 = 8; +pub const ECHOE: u32 = 16; +pub const ECHOK: u32 = 32; +pub const ECHONL: u32 = 64; +pub const NOFLSH: u32 = 128; +pub const TOSTOP: u32 = 256; +pub const ECHOCTL: u32 = 512; +pub const ECHOPRT: u32 = 1024; +pub const ECHOKE: u32 = 2048; +pub const FLUSHO: u32 = 4096; +pub const PENDIN: u32 = 16384; +pub const IEXTEN: u32 = 32768; +pub const EXTPROC: u32 = 65536; +pub const TCSANOW: u32 = 0; +pub const TCSADRAIN: u32 = 1; +pub const TCSAFLUSH: u32 = 2; +pub const TIOCPKT_DATA: u32 = 0; +pub const TIOCPKT_FLUSHREAD: u32 = 1; +pub const TIOCPKT_FLUSHWRITE: u32 = 2; +pub const TIOCPKT_STOP: u32 = 4; +pub const TIOCPKT_START: u32 = 8; +pub const TIOCPKT_NOSTOP: u32 = 16; +pub const TIOCPKT_DOSTOP: u32 = 32; +pub const TIOCPKT_IOCTL: u32 = 64; +pub const TIOCSER_TEMT: u32 = 1; +pub const NCC: u32 = 8; +pub const TIOCM_LE: u32 = 1; +pub const TIOCM_DTR: u32 = 2; +pub const TIOCM_RTS: u32 = 4; +pub const TIOCM_ST: u32 = 8; +pub const TIOCM_SR: u32 = 16; +pub const TIOCM_CTS: u32 = 32; +pub const TIOCM_CAR: u32 = 64; +pub const TIOCM_RNG: u32 = 128; +pub const TIOCM_DSR: u32 = 256; +pub const TIOCM_CD: u32 = 64; +pub const TIOCM_RI: u32 = 128; +pub const TIOCM_OUT1: u32 = 8192; +pub const TIOCM_OUT2: u32 = 16384; +pub const TIOCM_LOOP: u32 = 32768; +pub const UIO_FASTIOV: u32 = 8; +pub const UIO_MAXIOV: u32 = 1024; +pub const __X32_SYSCALL_BIT: u32 = 1073741824; +pub const __NR_read: u32 = 0; +pub const __NR_write: u32 = 1; +pub const __NR_open: u32 = 2; +pub const __NR_close: u32 = 3; +pub const __NR_stat: u32 = 4; +pub const __NR_fstat: u32 = 5; +pub const __NR_lstat: u32 = 6; +pub const __NR_poll: u32 = 7; +pub const __NR_lseek: u32 = 8; +pub const __NR_mmap: u32 = 9; +pub const __NR_mprotect: u32 = 10; +pub const __NR_munmap: u32 = 11; +pub const __NR_brk: u32 = 12; +pub const __NR_rt_sigaction: u32 = 13; +pub const __NR_rt_sigprocmask: u32 = 14; +pub const __NR_rt_sigreturn: u32 = 15; +pub const __NR_ioctl: u32 = 16; +pub const __NR_pread64: u32 = 17; +pub const __NR_pwrite64: u32 = 18; +pub const __NR_readv: u32 = 19; +pub const __NR_writev: u32 = 20; +pub const __NR_access: u32 = 21; +pub const __NR_pipe: u32 = 22; +pub const __NR_select: u32 = 23; +pub const __NR_sched_yield: u32 = 24; +pub const __NR_mremap: u32 = 25; +pub const __NR_msync: u32 = 26; +pub const __NR_mincore: u32 = 27; +pub const __NR_madvise: u32 = 28; +pub const __NR_shmget: u32 = 29; +pub const __NR_shmat: u32 = 30; +pub const __NR_shmctl: u32 = 31; +pub const __NR_dup: u32 = 32; +pub const __NR_dup2: u32 = 33; +pub const __NR_pause: u32 = 34; +pub const __NR_nanosleep: u32 = 35; +pub const __NR_getitimer: u32 = 36; +pub const __NR_alarm: u32 = 37; +pub const __NR_setitimer: u32 = 38; +pub const __NR_getpid: u32 = 39; +pub const __NR_sendfile: u32 = 40; +pub const __NR_socket: u32 = 41; +pub const __NR_connect: u32 = 42; +pub const __NR_accept: u32 = 43; +pub const __NR_sendto: u32 = 44; +pub const __NR_recvfrom: u32 = 45; +pub const __NR_sendmsg: u32 = 46; +pub const __NR_recvmsg: u32 = 47; +pub const __NR_shutdown: u32 = 48; +pub const __NR_bind: u32 = 49; +pub const __NR_listen: u32 = 50; +pub const __NR_getsockname: u32 = 51; +pub const __NR_getpeername: u32 = 52; +pub const __NR_socketpair: u32 = 53; +pub const __NR_setsockopt: u32 = 54; +pub const __NR_getsockopt: u32 = 55; +pub const __NR_clone: u32 = 56; +pub const __NR_fork: u32 = 57; +pub const __NR_vfork: u32 = 58; +pub const __NR_execve: u32 = 59; +pub const __NR_exit: u32 = 60; +pub const __NR_wait4: u32 = 61; +pub const __NR_kill: u32 = 62; +pub const __NR_uname: u32 = 63; +pub const __NR_semget: u32 = 64; +pub const __NR_semop: u32 = 65; +pub const __NR_semctl: u32 = 66; +pub const __NR_shmdt: u32 = 67; +pub const __NR_msgget: u32 = 68; +pub const __NR_msgsnd: u32 = 69; +pub const __NR_msgrcv: u32 = 70; +pub const __NR_msgctl: u32 = 71; +pub const __NR_fcntl: u32 = 72; +pub const __NR_flock: u32 = 73; +pub const __NR_fsync: u32 = 74; +pub const __NR_fdatasync: u32 = 75; +pub const __NR_truncate: u32 = 76; +pub const __NR_ftruncate: u32 = 77; +pub const __NR_getdents: u32 = 78; +pub const __NR_getcwd: u32 = 79; +pub const __NR_chdir: u32 = 80; +pub const __NR_fchdir: u32 = 81; +pub const __NR_rename: u32 = 82; +pub const __NR_mkdir: u32 = 83; +pub const __NR_rmdir: u32 = 84; +pub const __NR_creat: u32 = 85; +pub const __NR_link: u32 = 86; +pub const __NR_unlink: u32 = 87; +pub const __NR_symlink: u32 = 88; +pub const __NR_readlink: u32 = 89; +pub const __NR_chmod: u32 = 90; +pub const __NR_fchmod: u32 = 91; +pub const __NR_chown: u32 = 92; +pub const __NR_fchown: u32 = 93; +pub const __NR_lchown: u32 = 94; +pub const __NR_umask: u32 = 95; +pub const __NR_gettimeofday: u32 = 96; +pub const __NR_getrlimit: u32 = 97; +pub const __NR_getrusage: u32 = 98; +pub const __NR_sysinfo: u32 = 99; +pub const __NR_times: u32 = 100; +pub const __NR_ptrace: u32 = 101; +pub const __NR_getuid: u32 = 102; +pub const __NR_syslog: u32 = 103; +pub const __NR_getgid: u32 = 104; +pub const __NR_setuid: u32 = 105; +pub const __NR_setgid: u32 = 106; +pub const __NR_geteuid: u32 = 107; +pub const __NR_getegid: u32 = 108; +pub const __NR_setpgid: u32 = 109; +pub const __NR_getppid: u32 = 110; +pub const __NR_getpgrp: u32 = 111; +pub const __NR_setsid: u32 = 112; +pub const __NR_setreuid: u32 = 113; +pub const __NR_setregid: u32 = 114; +pub const __NR_getgroups: u32 = 115; +pub const __NR_setgroups: u32 = 116; +pub const __NR_setresuid: u32 = 117; +pub const __NR_getresuid: u32 = 118; +pub const __NR_setresgid: u32 = 119; +pub const __NR_getresgid: u32 = 120; +pub const __NR_getpgid: u32 = 121; +pub const __NR_setfsuid: u32 = 122; +pub const __NR_setfsgid: u32 = 123; +pub const __NR_getsid: u32 = 124; +pub const __NR_capget: u32 = 125; +pub const __NR_capset: u32 = 126; +pub const __NR_rt_sigpending: u32 = 127; +pub const __NR_rt_sigtimedwait: u32 = 128; +pub const __NR_rt_sigqueueinfo: u32 = 129; +pub const __NR_rt_sigsuspend: u32 = 130; +pub const __NR_sigaltstack: u32 = 131; +pub const __NR_utime: u32 = 132; +pub const __NR_mknod: u32 = 133; +pub const __NR_uselib: u32 = 134; +pub const __NR_personality: u32 = 135; +pub const __NR_ustat: u32 = 136; +pub const __NR_statfs: u32 = 137; +pub const __NR_fstatfs: u32 = 138; +pub const __NR_sysfs: u32 = 139; +pub const __NR_getpriority: u32 = 140; +pub const __NR_setpriority: u32 = 141; +pub const __NR_sched_setparam: u32 = 142; +pub const __NR_sched_getparam: u32 = 143; +pub const __NR_sched_setscheduler: u32 = 144; +pub const __NR_sched_getscheduler: u32 = 145; +pub const __NR_sched_get_priority_max: u32 = 146; +pub const __NR_sched_get_priority_min: u32 = 147; +pub const __NR_sched_rr_get_interval: u32 = 148; +pub const __NR_mlock: u32 = 149; +pub const __NR_munlock: u32 = 150; +pub const __NR_mlockall: u32 = 151; +pub const __NR_munlockall: u32 = 152; +pub const __NR_vhangup: u32 = 153; +pub const __NR_modify_ldt: u32 = 154; +pub const __NR_pivot_root: u32 = 155; +pub const __NR__sysctl: u32 = 156; +pub const __NR_prctl: u32 = 157; +pub const __NR_arch_prctl: u32 = 158; +pub const __NR_adjtimex: u32 = 159; +pub const __NR_setrlimit: u32 = 160; +pub const __NR_chroot: u32 = 161; +pub const __NR_sync: u32 = 162; +pub const __NR_acct: u32 = 163; +pub const __NR_settimeofday: u32 = 164; +pub const __NR_mount: u32 = 165; +pub const __NR_umount2: u32 = 166; +pub const __NR_swapon: u32 = 167; +pub const __NR_swapoff: u32 = 168; +pub const __NR_reboot: u32 = 169; +pub const __NR_sethostname: u32 = 170; +pub const __NR_setdomainname: u32 = 171; +pub const __NR_iopl: u32 = 172; +pub const __NR_ioperm: u32 = 173; +pub const __NR_create_module: u32 = 174; +pub const __NR_init_module: u32 = 175; +pub const __NR_delete_module: u32 = 176; +pub const __NR_get_kernel_syms: u32 = 177; +pub const __NR_query_module: u32 = 178; +pub const __NR_quotactl: u32 = 179; +pub const __NR_nfsservctl: u32 = 180; +pub const __NR_getpmsg: u32 = 181; +pub const __NR_putpmsg: u32 = 182; +pub const __NR_afs_syscall: u32 = 183; +pub const __NR_tuxcall: u32 = 184; +pub const __NR_security: u32 = 185; +pub const __NR_gettid: u32 = 186; +pub const __NR_readahead: u32 = 187; +pub const __NR_setxattr: u32 = 188; +pub const __NR_lsetxattr: u32 = 189; +pub const __NR_fsetxattr: u32 = 190; +pub const __NR_getxattr: u32 = 191; +pub const __NR_lgetxattr: u32 = 192; +pub const __NR_fgetxattr: u32 = 193; +pub const __NR_listxattr: u32 = 194; +pub const __NR_llistxattr: u32 = 195; +pub const __NR_flistxattr: u32 = 196; +pub const __NR_removexattr: u32 = 197; +pub const __NR_lremovexattr: u32 = 198; +pub const __NR_fremovexattr: u32 = 199; +pub const __NR_tkill: u32 = 200; +pub const __NR_time: u32 = 201; +pub const __NR_futex: u32 = 202; +pub const __NR_sched_setaffinity: u32 = 203; +pub const __NR_sched_getaffinity: u32 = 204; +pub const __NR_set_thread_area: u32 = 205; +pub const __NR_io_setup: u32 = 206; +pub const __NR_io_destroy: u32 = 207; +pub const __NR_io_getevents: u32 = 208; +pub const __NR_io_submit: u32 = 209; +pub const __NR_io_cancel: u32 = 210; +pub const __NR_get_thread_area: u32 = 211; +pub const __NR_lookup_dcookie: u32 = 212; +pub const __NR_epoll_create: u32 = 213; +pub const __NR_epoll_ctl_old: u32 = 214; +pub const __NR_epoll_wait_old: u32 = 215; +pub const __NR_remap_file_pages: u32 = 216; +pub const __NR_getdents64: u32 = 217; +pub const __NR_set_tid_address: u32 = 218; +pub const __NR_restart_syscall: u32 = 219; +pub const __NR_semtimedop: u32 = 220; +pub const __NR_fadvise64: u32 = 221; +pub const __NR_timer_create: u32 = 222; +pub const __NR_timer_settime: u32 = 223; +pub const __NR_timer_gettime: u32 = 224; +pub const __NR_timer_getoverrun: u32 = 225; +pub const __NR_timer_delete: u32 = 226; +pub const __NR_clock_settime: u32 = 227; +pub const __NR_clock_gettime: u32 = 228; +pub const __NR_clock_getres: u32 = 229; +pub const __NR_clock_nanosleep: u32 = 230; +pub const __NR_exit_group: u32 = 231; +pub const __NR_epoll_wait: u32 = 232; +pub const __NR_epoll_ctl: u32 = 233; +pub const __NR_tgkill: u32 = 234; +pub const __NR_utimes: u32 = 235; +pub const __NR_vserver: u32 = 236; +pub const __NR_mbind: u32 = 237; +pub const __NR_set_mempolicy: u32 = 238; +pub const __NR_get_mempolicy: u32 = 239; +pub const __NR_mq_open: u32 = 240; +pub const __NR_mq_unlink: u32 = 241; +pub const __NR_mq_timedsend: u32 = 242; +pub const __NR_mq_timedreceive: u32 = 243; +pub const __NR_mq_notify: u32 = 244; +pub const __NR_mq_getsetattr: u32 = 245; +pub const __NR_kexec_load: u32 = 246; +pub const __NR_waitid: u32 = 247; +pub const __NR_add_key: u32 = 248; +pub const __NR_request_key: u32 = 249; +pub const __NR_keyctl: u32 = 250; +pub const __NR_ioprio_set: u32 = 251; +pub const __NR_ioprio_get: u32 = 252; +pub const __NR_inotify_init: u32 = 253; +pub const __NR_inotify_add_watch: u32 = 254; +pub const __NR_inotify_rm_watch: u32 = 255; +pub const __NR_migrate_pages: u32 = 256; +pub const __NR_openat: u32 = 257; +pub const __NR_mkdirat: u32 = 258; +pub const __NR_mknodat: u32 = 259; +pub const __NR_fchownat: u32 = 260; +pub const __NR_futimesat: u32 = 261; +pub const __NR_newfstatat: u32 = 262; +pub const __NR_unlinkat: u32 = 263; +pub const __NR_renameat: u32 = 264; +pub const __NR_linkat: u32 = 265; +pub const __NR_symlinkat: u32 = 266; +pub const __NR_readlinkat: u32 = 267; +pub const __NR_fchmodat: u32 = 268; +pub const __NR_faccessat: u32 = 269; +pub const __NR_pselect6: u32 = 270; +pub const __NR_ppoll: u32 = 271; +pub const __NR_unshare: u32 = 272; +pub const __NR_set_robust_list: u32 = 273; +pub const __NR_get_robust_list: u32 = 274; +pub const __NR_splice: u32 = 275; +pub const __NR_tee: u32 = 276; +pub const __NR_sync_file_range: u32 = 277; +pub const __NR_vmsplice: u32 = 278; +pub const __NR_move_pages: u32 = 279; +pub const __NR_utimensat: u32 = 280; +pub const __NR_epoll_pwait: u32 = 281; +pub const __NR_signalfd: u32 = 282; +pub const __NR_timerfd_create: u32 = 283; +pub const __NR_eventfd: u32 = 284; +pub const __NR_fallocate: u32 = 285; +pub const __NR_timerfd_settime: u32 = 286; +pub const __NR_timerfd_gettime: u32 = 287; +pub const __NR_accept4: u32 = 288; +pub const __NR_signalfd4: u32 = 289; +pub const __NR_eventfd2: u32 = 290; +pub const __NR_epoll_create1: u32 = 291; +pub const __NR_dup3: u32 = 292; +pub const __NR_pipe2: u32 = 293; +pub const __NR_inotify_init1: u32 = 294; +pub const __NR_preadv: u32 = 295; +pub const __NR_pwritev: u32 = 296; +pub const __NR_rt_tgsigqueueinfo: u32 = 297; +pub const __NR_perf_event_open: u32 = 298; +pub const __NR_recvmmsg: u32 = 299; +pub const __NR_fanotify_init: u32 = 300; +pub const __NR_fanotify_mark: u32 = 301; +pub const __NR_prlimit64: u32 = 302; +pub const __NR_name_to_handle_at: u32 = 303; +pub const __NR_open_by_handle_at: u32 = 304; +pub const __NR_clock_adjtime: u32 = 305; +pub const __NR_syncfs: u32 = 306; +pub const __NR_sendmmsg: u32 = 307; +pub const __NR_setns: u32 = 308; +pub const __NR_getcpu: u32 = 309; +pub const __NR_process_vm_readv: u32 = 310; +pub const __NR_process_vm_writev: u32 = 311; +pub const __NR_kcmp: u32 = 312; +pub const __NR_finit_module: u32 = 313; +pub const __NR_sched_setattr: u32 = 314; +pub const __NR_sched_getattr: u32 = 315; +pub const __NR_renameat2: u32 = 316; +pub const __NR_seccomp: u32 = 317; +pub const __NR_getrandom: u32 = 318; +pub const __NR_memfd_create: u32 = 319; +pub const __NR_kexec_file_load: u32 = 320; +pub const __NR_bpf: u32 = 321; +pub const __NR_execveat: u32 = 322; +pub const __NR_userfaultfd: u32 = 323; +pub const __NR_membarrier: u32 = 324; +pub const __NR_mlock2: u32 = 325; +pub const __NR_copy_file_range: u32 = 326; +pub const __NR_preadv2: u32 = 327; +pub const __NR_pwritev2: u32 = 328; +pub const __NR_pkey_mprotect: u32 = 329; +pub const __NR_pkey_alloc: u32 = 330; +pub const __NR_pkey_free: u32 = 331; +pub const __NR_statx: u32 = 332; +pub const __NR_io_pgetevents: u32 = 333; +pub const __NR_rseq: u32 = 334; +pub const __NR_pidfd_send_signal: u32 = 424; +pub const __NR_io_uring_setup: u32 = 425; +pub const __NR_io_uring_enter: u32 = 426; +pub const __NR_io_uring_register: u32 = 427; +pub const __NR_open_tree: u32 = 428; +pub const __NR_move_mount: u32 = 429; +pub const __NR_fsopen: u32 = 430; +pub const __NR_fsconfig: u32 = 431; +pub const __NR_fsmount: u32 = 432; +pub const __NR_fspick: u32 = 433; +pub const __NR_pidfd_open: u32 = 434; +pub const __NR_clone3: u32 = 435; +pub const __NR_close_range: u32 = 436; +pub const __NR_openat2: u32 = 437; +pub const __NR_pidfd_getfd: u32 = 438; +pub const __NR_faccessat2: u32 = 439; +pub const __NR_process_madvise: u32 = 440; +pub const __NR_epoll_pwait2: u32 = 441; +pub const __NR_mount_setattr: u32 = 442; +pub const __NR_quotactl_fd: u32 = 443; +pub const __NR_landlock_create_ruleset: u32 = 444; +pub const __NR_landlock_add_rule: u32 = 445; +pub const __NR_landlock_restrict_self: u32 = 446; +pub const __NR_memfd_secret: u32 = 447; +pub const __NR_process_mrelease: u32 = 448; +pub const __NR_futex_waitv: u32 = 449; +pub const __NR_set_mempolicy_home_node: u32 = 450; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const P_ALL: u32 = 0; +pub const P_PID: u32 = 1; +pub const P_PGID: u32 = 2; +pub const P_PIDFD: u32 = 3; +pub const XATTR_CREATE: u32 = 1; +pub const XATTR_REPLACE: u32 = 2; +pub const XATTR_OS2_PREFIX: &[u8; 5] = b"os2.\0"; +pub const XATTR_MAC_OSX_PREFIX: &[u8; 5] = b"osx.\0"; +pub const XATTR_BTRFS_PREFIX: &[u8; 7] = b"btrfs.\0"; +pub const XATTR_HURD_PREFIX: &[u8; 5] = b"gnu.\0"; +pub const XATTR_SECURITY_PREFIX: &[u8; 10] = b"security.\0"; +pub const XATTR_SYSTEM_PREFIX: &[u8; 8] = b"system.\0"; +pub const XATTR_TRUSTED_PREFIX: &[u8; 9] = b"trusted.\0"; +pub const XATTR_USER_PREFIX: &[u8; 6] = b"user.\0"; +pub const XATTR_EVM_SUFFIX: &[u8; 4] = b"evm\0"; +pub const XATTR_NAME_EVM: &[u8; 13] = b"security.evm\0"; +pub const XATTR_IMA_SUFFIX: &[u8; 4] = b"ima\0"; +pub const XATTR_NAME_IMA: &[u8; 13] = b"security.ima\0"; +pub const XATTR_SELINUX_SUFFIX: &[u8; 8] = b"selinux\0"; +pub const XATTR_NAME_SELINUX: &[u8; 17] = b"security.selinux\0"; +pub const XATTR_SMACK_SUFFIX: &[u8; 8] = b"SMACK64\0"; +pub const XATTR_SMACK_IPIN: &[u8; 12] = b"SMACK64IPIN\0"; +pub const XATTR_SMACK_IPOUT: &[u8; 13] = b"SMACK64IPOUT\0"; +pub const XATTR_SMACK_EXEC: &[u8; 12] = b"SMACK64EXEC\0"; +pub const XATTR_SMACK_TRANSMUTE: &[u8; 17] = b"SMACK64TRANSMUTE\0"; +pub const XATTR_SMACK_MMAP: &[u8; 12] = b"SMACK64MMAP\0"; +pub const XATTR_NAME_SMACK: &[u8; 17] = b"security.SMACK64\0"; +pub const XATTR_NAME_SMACKIPIN: &[u8; 21] = b"security.SMACK64IPIN\0"; +pub const XATTR_NAME_SMACKIPOUT: &[u8; 22] = b"security.SMACK64IPOUT\0"; +pub const XATTR_NAME_SMACKEXEC: &[u8; 21] = b"security.SMACK64EXEC\0"; +pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26] = b"security.SMACK64TRANSMUTE\0"; +pub const XATTR_NAME_SMACKMMAP: &[u8; 21] = b"security.SMACK64MMAP\0"; +pub const XATTR_APPARMOR_SUFFIX: &[u8; 9] = b"apparmor\0"; +pub const XATTR_NAME_APPARMOR: &[u8; 18] = b"security.apparmor\0"; +pub const XATTR_CAPS_SUFFIX: &[u8; 11] = b"capability\0"; +pub const XATTR_NAME_CAPS: &[u8; 20] = b"security.capability\0"; +pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17] = b"posix_acl_access\0"; +pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24] = b"system.posix_acl_access\0"; +pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18] = b"posix_acl_default\0"; +pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25] = b"system.posix_acl_default\0"; +pub const MFD_CLOEXEC: u32 = 1; +pub const MFD_ALLOW_SEALING: u32 = 2; +pub const MFD_HUGETLB: u32 = 4; +pub const MFD_NOEXEC_SEAL: u32 = 8; +pub const MFD_EXEC: u32 = 16; +pub const MFD_HUGE_SHIFT: u32 = 26; +pub const MFD_HUGE_MASK: u32 = 63; +pub const MFD_HUGE_64KB: u32 = 1073741824; +pub const MFD_HUGE_512KB: u32 = 1275068416; +pub const MFD_HUGE_1MB: u32 = 1342177280; +pub const MFD_HUGE_2MB: u32 = 1409286144; +pub const MFD_HUGE_8MB: u32 = 1543503872; +pub const MFD_HUGE_16MB: u32 = 1610612736; +pub const MFD_HUGE_32MB: u32 = 1677721600; +pub const MFD_HUGE_256MB: u32 = 1879048192; +pub const MFD_HUGE_512MB: u32 = 1946157056; +pub const MFD_HUGE_1GB: u32 = 2013265920; +pub const MFD_HUGE_2GB: u32 = 2080374784; +pub const MFD_HUGE_16GB: u32 = 2281701376; +pub const TFD_TIMER_ABSTIME: u32 = 1; +pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; +pub const TFD_CLOEXEC: u32 = 524288; +pub const TFD_NONBLOCK: u32 = 2048; +pub const USERFAULTFD_IOC: u32 = 170; +pub const _UFFDIO_REGISTER: u32 = 0; +pub const _UFFDIO_UNREGISTER: u32 = 1; +pub const _UFFDIO_WAKE: u32 = 2; +pub const _UFFDIO_COPY: u32 = 3; +pub const _UFFDIO_ZEROPAGE: u32 = 4; +pub const _UFFDIO_WRITEPROTECT: u32 = 6; +pub const _UFFDIO_CONTINUE: u32 = 7; +pub const _UFFDIO_API: u32 = 63; +pub const UFFDIO: u32 = 170; +pub const UFFD_EVENT_PAGEFAULT: u32 = 18; +pub const UFFD_EVENT_FORK: u32 = 19; +pub const UFFD_EVENT_REMAP: u32 = 20; +pub const UFFD_EVENT_REMOVE: u32 = 21; +pub const UFFD_EVENT_UNMAP: u32 = 22; +pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; +pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; +pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; +pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; +pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; +pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; +pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; +pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; +pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; +pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; +pub const UFFD_FEATURE_SIGBUS: u32 = 128; +pub const UFFD_FEATURE_THREAD_ID: u32 = 256; +pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; +pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; +pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; +pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; +pub const UFFD_USER_MODE_ONLY: u32 = 1; +pub const DT_UNKNOWN: u32 = 0; +pub const DT_FIFO: u32 = 1; +pub const DT_CHR: u32 = 2; +pub const DT_DIR: u32 = 4; +pub const DT_BLK: u32 = 6; +pub const DT_REG: u32 = 8; +pub const DT_LNK: u32 = 10; +pub const DT_SOCK: u32 = 12; +pub const STAT_HAVE_NSEC: u32 = 1; +pub const F_OK: u32 = 0; +pub const R_OK: u32 = 4; +pub const W_OK: u32 = 2; +pub const X_OK: u32 = 1; +pub const UTIME_NOW: u32 = 1073741823; +pub const UTIME_OMIT: u32 = 1073741822; +pub const MNT_FORCE: u32 = 1; +pub const MNT_DETACH: u32 = 2; +pub const MNT_EXPIRE: u32 = 4; +pub const UMOUNT_NOFOLLOW: u32 = 8; +pub const UMOUNT_UNUSED: u32 = 2147483648; +pub const STDIN_FILENO: u32 = 0; +pub const STDOUT_FILENO: u32 = 1; +pub const STDERR_FILENO: u32 = 2; +pub const RWF_HIPRI: u32 = 1; +pub const RWF_DSYNC: u32 = 2; +pub const RWF_SYNC: u32 = 4; +pub const RWF_NOWAIT: u32 = 8; +pub const RWF_APPEND: u32 = 16; +pub const EFD_SEMAPHORE: u32 = 1; +pub const EFD_CLOEXEC: u32 = 524288; +pub const EFD_NONBLOCK: u32 = 2048; +pub const EPOLLIN: u32 = 1; +pub const EPOLLPRI: u32 = 2; +pub const EPOLLOUT: u32 = 4; +pub const EPOLLERR: u32 = 8; +pub const EPOLLHUP: u32 = 16; +pub const EPOLLNVAL: u32 = 32; +pub const EPOLLRDNORM: u32 = 64; +pub const EPOLLRDBAND: u32 = 128; +pub const EPOLLWRNORM: u32 = 256; +pub const EPOLLWRBAND: u32 = 512; +pub const EPOLLMSG: u32 = 1024; +pub const EPOLLRDHUP: u32 = 8192; +pub const EPOLLEXCLUSIVE: u32 = 268435456; +pub const EPOLLWAKEUP: u32 = 536870912; +pub const EPOLLONESHOT: u32 = 1073741824; +pub const EPOLLET: u32 = 2147483648; +pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; +pub const TFD_CREATE_FLAGS: u32 = 526336; +pub const TFD_SETTIME_FLAGS: u32 = 1; +pub const ARCH_SET_FS: u32 = 4098; +pub const UFFD_API: u32 = 170; +pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; +pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; +pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; +pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; +pub const UFFDIO_COPY_MODE_WP: u32 = 2; +pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; +pub const SPLICE_F_MOVE: u32 = 1; +pub const SPLICE_F_NONBLOCK: u32 = 2; +pub const SPLICE_F_MORE: u32 = 4; +pub const SPLICE_F_GIFT: u32 = 8; +pub const _NSIG: u32 = 64; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, } #[repr(u32)] #[non_exhaustive] @@ -4510,694 +2600,161 @@ pub enum membarrier_cmd_flag { MEMBARRIER_CMD_FLAG_CPU = 1, } -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct uffd_msg { -pub event: __u8, -pub reserved1: __u8, -pub reserved2: __u16, -pub reserved3: __u32, -pub arg: uffd_msg__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1 { -pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, -pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, -pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, -pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, -pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { -pub flags: __u64, -pub address: __u64, -pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { -pub ptid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { -pub ufd: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { -pub from: __u64, -pub to: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { -pub start: __u64, -pub end: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { -pub reserved1: __u64, -pub reserved2: __u64, -pub reserved3: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_api { -pub api: __u64, -pub features: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_range { -pub start: __u64, -pub len: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_register { -pub range: uffdio_range, -pub mode: __u64, -pub ioctls: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_copy { -pub dst: __u64, -pub src: __u64, -pub len: __u64, -pub mode: __u64, -pub copy: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_zeropage { -pub range: uffdio_range, -pub mode: __u64, -pub zeropage: __s64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_writeprotect { -pub range: uffdio_range, -pub mode: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uffdio_continue { -pub range: uffdio_range, -pub mode: __u64, -pub mapped: __s64, -} -#[repr(C)] -pub struct io_uring_sqe { -pub opcode: __u8, -pub flags: __u8, -pub ioprio: __u16, -pub fd: __s32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, -pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, -pub len: __u32, -pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, -pub user_data: __u64, -pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, -pub personality: __u16, -pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, -pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, -} #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_1 { -pub off: __u64, -pub addr2: __u64, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { -pub cmd_op: __u32, -pub __pad1: __u32, +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_2 { -pub addr: __u64, -pub splice_off_in: __u64, +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_3 { -pub rw_flags: __kernel_rwf_t, -pub fsync_flags: __u32, -pub poll_events: __u16, -pub poll32_events: __u32, -pub sync_range_flags: __u32, -pub msg_flags: __u32, -pub timeout_flags: __u32, -pub accept_flags: __u32, -pub cancel_flags: __u32, -pub open_flags: __u32, -pub statx_flags: __u32, -pub fadvise_advice: __u32, -pub splice_flags: __u32, -pub rename_flags: __u32, -pub unlink_flags: __u32, -pub hardlink_flags: __u32, -pub xattr_flags: __u32, -pub msg_ring_flags: __u32, -pub uring_cmd_flags: __u32, -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_4 { -pub buf_index: __u16, -pub buf_group: __u16, +pub union sigval { +pub sival_int: crate::ctypes::c_int, +pub sival_ptr: *mut crate::ctypes::c_void, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_5 { -pub splice_fd_in: __s32, -pub file_index: __u32, -pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { -pub addr_len: __u16, -pub __pad3: [__u16; 1usize], -} -#[repr(C)] -pub struct io_uring_sqe__bindgen_ty_6 { -pub __bindgen_anon_1: __BindgenUnionField, -pub cmd: __BindgenUnionField<[__u8; 0usize]>, -pub bindgen_union_field: [u64; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { -pub addr3: __u64, -pub __pad2: [__u64; 1usize], -} -pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT; -pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT; -pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT; -pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT; -pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT; -pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT; -pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -IOSQE_FIXED_FILE_BIT = 0, -IOSQE_IO_DRAIN_BIT = 1, -IOSQE_IO_LINK_BIT = 2, -IOSQE_IO_HARDLINK_BIT = 3, -IOSQE_ASYNC_BIT = 4, -IOSQE_BUFFER_SELECT_BIT = 5, -IOSQE_CQE_SKIP_SUCCESS_BIT = 6, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum io_uring_op { -IORING_OP_NOP = 0, -IORING_OP_READV = 1, -IORING_OP_WRITEV = 2, -IORING_OP_FSYNC = 3, -IORING_OP_READ_FIXED = 4, -IORING_OP_WRITE_FIXED = 5, -IORING_OP_POLL_ADD = 6, -IORING_OP_POLL_REMOVE = 7, -IORING_OP_SYNC_FILE_RANGE = 8, -IORING_OP_SENDMSG = 9, -IORING_OP_RECVMSG = 10, -IORING_OP_TIMEOUT = 11, -IORING_OP_TIMEOUT_REMOVE = 12, -IORING_OP_ACCEPT = 13, -IORING_OP_ASYNC_CANCEL = 14, -IORING_OP_LINK_TIMEOUT = 15, -IORING_OP_CONNECT = 16, -IORING_OP_FALLOCATE = 17, -IORING_OP_OPENAT = 18, -IORING_OP_CLOSE = 19, -IORING_OP_FILES_UPDATE = 20, -IORING_OP_STATX = 21, -IORING_OP_READ = 22, -IORING_OP_WRITE = 23, -IORING_OP_FADVISE = 24, -IORING_OP_MADVISE = 25, -IORING_OP_SEND = 26, -IORING_OP_RECV = 27, -IORING_OP_OPENAT2 = 28, -IORING_OP_EPOLL_CTL = 29, -IORING_OP_SPLICE = 30, -IORING_OP_PROVIDE_BUFFERS = 31, -IORING_OP_REMOVE_BUFFERS = 32, -IORING_OP_TEE = 33, -IORING_OP_SHUTDOWN = 34, -IORING_OP_RENAMEAT = 35, -IORING_OP_UNLINKAT = 36, -IORING_OP_MKDIRAT = 37, -IORING_OP_SYMLINKAT = 38, -IORING_OP_LINKAT = 39, -IORING_OP_MSG_RING = 40, -IORING_OP_FSETXATTR = 41, -IORING_OP_SETXATTR = 42, -IORING_OP_FGETXATTR = 43, -IORING_OP_GETXATTR = 44, -IORING_OP_SOCKET = 45, -IORING_OP_URING_CMD = 46, -IORING_OP_SEND_ZC = 47, -IORING_OP_SENDMSG_ZC = 48, -IORING_OP_LAST = 49, -} -pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA; -pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_8 { -IORING_MSG_DATA = 0, -IORING_MSG_SEND_FD = 1, -} -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_cqe { -pub user_data: __u64, -pub res: __s32, -pub flags: __u32, -pub big_cqe: __IncompleteArrayField<__u64>, -} -pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_9 { -IORING_CQE_BUFFER_SHIFT = 16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_sqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub flags: __u32, -pub dropped: __u32, -pub array: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_cqring_offsets { -pub head: __u32, -pub tail: __u32, -pub ring_mask: __u32, -pub ring_entries: __u32, -pub overflow: __u32, -pub cqes: __u32, -pub flags: __u32, -pub resv1: __u32, -pub resv2: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_params { -pub sq_entries: __u32, -pub cq_entries: __u32, -pub flags: __u32, -pub sq_thread_cpu: __u32, -pub sq_thread_idle: __u32, -pub features: __u32, -pub wq_fd: __u32, -pub resv: [__u32; 3usize], -pub sq_off: io_sqring_offsets, -pub cq_off: io_cqring_offsets, -} -pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS; -pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS; -pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES; -pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES; -pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD; -pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD; -pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE; -pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC; -pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE; -pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY; -pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY; -pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS; -pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS; -pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2; -pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2; -pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2; -pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE; -pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF; -pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF; -pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS; -pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS; -pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS; -pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING; -pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING; -pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL; -pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE; -pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST; -pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_USE_REGISTERED_RING; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_10 { -IORING_REGISTER_BUFFERS = 0, -IORING_UNREGISTER_BUFFERS = 1, -IORING_REGISTER_FILES = 2, -IORING_UNREGISTER_FILES = 3, -IORING_REGISTER_EVENTFD = 4, -IORING_UNREGISTER_EVENTFD = 5, -IORING_REGISTER_FILES_UPDATE = 6, -IORING_REGISTER_EVENTFD_ASYNC = 7, -IORING_REGISTER_PROBE = 8, -IORING_REGISTER_PERSONALITY = 9, -IORING_UNREGISTER_PERSONALITY = 10, -IORING_REGISTER_RESTRICTIONS = 11, -IORING_REGISTER_ENABLE_RINGS = 12, -IORING_REGISTER_FILES2 = 13, -IORING_REGISTER_FILES_UPDATE2 = 14, -IORING_REGISTER_BUFFERS2 = 15, -IORING_REGISTER_BUFFERS_UPDATE = 16, -IORING_REGISTER_IOWQ_AFF = 17, -IORING_UNREGISTER_IOWQ_AFF = 18, -IORING_REGISTER_IOWQ_MAX_WORKERS = 19, -IORING_REGISTER_RING_FDS = 20, -IORING_UNREGISTER_RING_FDS = 21, -IORING_REGISTER_PBUF_RING = 22, -IORING_UNREGISTER_PBUF_RING = 23, -IORING_REGISTER_SYNC_CANCEL = 24, -IORING_REGISTER_FILE_ALLOC_RANGE = 25, -IORING_REGISTER_LAST = 26, -IORING_REGISTER_USE_REGISTERED_RING = 2147483648, -} -pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND; -pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_11 { -IO_WQ_BOUND = 0, -IO_WQ_UNBOUND = 1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_files_update { -pub offset: __u32, -pub resv: __u32, -pub fds: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_register { -pub nr: __u32, -pub flags: __u32, -pub resv2: __u64, -pub data: __u64, -pub tags: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_rsrc_update2 { -pub offset: __u32, -pub resv: __u32, -pub data: __u64, -pub tags: __u64, -pub nr: __u32, -pub resv2: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_slot { -pub tag: __u64, -pub resv: [__u64; 3usize], +pub union __sifields { +pub _kill: __sifields__bindgen_ty_1, +pub _timer: __sifields__bindgen_ty_2, +pub _rt: __sifields__bindgen_ty_3, +pub _sigchld: __sifields__bindgen_ty_4, +pub _sigfault: __sifields__bindgen_ty_5, +pub _sigpoll: __sifields__bindgen_ty_6, +pub _sigsys: __sifields__bindgen_ty_7, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_notification_register { -pub nr_slots: __u32, -pub resv: __u32, -pub resv2: __u64, -pub data: __u64, -pub resv3: __u64, +#[derive(Copy, Clone)] +pub union __sifields__bindgen_ty_5__bindgen_ty_1 { +pub _trapno: crate::ctypes::c_int, +pub _addr_lsb: crate::ctypes::c_short, +pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, +pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, +pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_probe_op { -pub op: __u8, -pub resv: __u8, -pub flags: __u16, -pub resv2: __u32, +#[derive(Copy, Clone)] +pub union siginfo__bindgen_ty_1 { +pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, +pub _si_pad: [crate::ctypes::c_int; 32usize], } #[repr(C)] -#[derive(Debug)] -pub struct io_uring_probe { -pub last_op: __u8, -pub ops_len: __u8, -pub resv: __u16, -pub resv2: [__u32; 3usize], -pub ops: __IncompleteArrayField, +#[derive(Copy, Clone)] +pub union sigevent__bindgen_ty_1 { +pub _pad: [crate::ctypes::c_int; 12usize], +pub _tid: crate::ctypes::c_int, +pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] -pub struct io_uring_restriction { -pub opcode: __u16, -pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, -pub resv: __u8, -pub resv2: [__u32; 3usize], +pub union uffd_msg__bindgen_ty_1 { +pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, +pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, +pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, +pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, +pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, } #[repr(C)] #[derive(Copy, Clone)] -pub union io_uring_restriction__bindgen_ty_1 { -pub register_op: __u8, -pub sqe_op: __u8, -pub sqe_flags: __u8, +pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { +pub ptid: __u32, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf { -pub addr: __u64, -pub len: __u32, -pub bid: __u16, -pub resv: __u16, +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } } -#[repr(C)] -pub struct io_uring_buf_ring { -pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, } -#[repr(C)] -pub struct io_uring_buf_ring__bindgen_ty_1 { -pub __bindgen_anon_1: __BindgenUnionField, -pub __bindgen_anon_2: __BindgenUnionField, -pub bindgen_union_field: [u64; 2usize], +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { -pub resv1: __u64, -pub resv2: __u32, -pub resv3: __u16, -pub tail: __u16, +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; } -#[repr(C)] -#[derive(Debug)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { -pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, -pub bufs: __IncompleteArrayField, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_buf_reg { -pub ring_addr: __u64, -pub ring_entries: __u32, -pub bgid: __u16, -pub pad: __u16, -pub resv: [__u64; 3usize], +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; } -pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP; -pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP; -pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; -pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; -pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_12 { -IORING_RESTRICTION_REGISTER_OP = 0, -IORING_RESTRICTION_SQE_OP = 1, -IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, -IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, -IORING_RESTRICTION_LAST = 4, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_getevents_arg { -pub sigmask: __u64, -pub sigmask_sz: __u32, -pub pad: __u32, -pub ts: __u64, +val } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_sync_cancel_reg { -pub addr: __u64, -pub fd: __s32, -pub flags: __u32, -pub timeout: __kernel_timespec, -pub pad: [__u64; 4usize], +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_file_index_range { -pub off: __u32, -pub len: __u32, -pub resv: __u64, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct io_uring_recvmsg_out { -pub namelen: __u32, -pub controllen: __u32, -pub payloadlen: __u32, -pub flags: __u32, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr { -pub __storage: __kernel_sockaddr_storage, +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct linger { -pub l_onoff: crate::ctypes::c_int, -pub l_linger: crate::ctypes::c_int, +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T } -#[repr(C)] -#[derive(Debug)] -pub struct linux_dirent64 { -pub d_ino: crate::ctypes::c_ulong, -pub d_off: crate::ctypes::c_long, -pub d_reclen: __u16, -pub d_type: __u8, -pub d_name: __IncompleteArrayField, +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T } -pub type socklen_t = crate::ctypes::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct stat { -pub st_dev: __kernel_ulong_t, -pub st_ino: __kernel_ulong_t, -pub st_nlink: __kernel_ulong_t, -pub st_mode: crate::ctypes::c_uint, -pub st_uid: crate::ctypes::c_uint, -pub st_gid: crate::ctypes::c_uint, -pub __pad0: crate::ctypes::c_uint, -pub st_rdev: __kernel_ulong_t, -pub st_size: __kernel_long_t, -pub st_blksize: __kernel_long_t, -pub st_blocks: __kernel_long_t, -pub st_atime: __kernel_ulong_t, -pub st_atime_nsec: __kernel_ulong_t, -pub st_mtime: __kernel_ulong_t, -pub st_mtime_nsec: __kernel_ulong_t, -pub st_ctime: __kernel_ulong_t, -pub st_ctime_nsec: __kernel_ulong_t, -pub __unused: [__kernel_long_t; 3usize], +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __old_kernel_stat { -pub st_dev: crate::ctypes::c_ushort, -pub st_ino: crate::ctypes::c_ushort, -pub st_mode: crate::ctypes::c_ushort, -pub st_nlink: crate::ctypes::c_ushort, -pub st_uid: crate::ctypes::c_ushort, -pub st_gid: crate::ctypes::c_ushort, -pub st_rdev: crate::ctypes::c_ushort, -pub st_size: crate::ctypes::c_uint, -pub st_atime: crate::ctypes::c_uint, -pub st_mtime: crate::ctypes::c_uint, -pub st_ctime: crate::ctypes::c_uint, +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs { -pub f_type: __kernel_long_t, -pub f_bsize: __kernel_long_t, -pub f_blocks: __kernel_long_t, -pub f_bfree: __kernel_long_t, -pub f_bavail: __kernel_long_t, -pub f_files: __kernel_long_t, -pub f_ffree: __kernel_long_t, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __kernel_long_t, -pub f_frsize: __kernel_long_t, -pub f_flags: __kernel_long_t, -pub f_spare: [__kernel_long_t; 4usize], } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct statfs64 { -pub f_type: __kernel_long_t, -pub f_bsize: __kernel_long_t, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __kernel_long_t, -pub f_frsize: __kernel_long_t, -pub f_flags: __kernel_long_t, -pub f_spare: [__kernel_long_t; 4usize], +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") } -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct compat_statfs64 { -pub f_type: __u32, -pub f_bsize: __u32, -pub f_blocks: __u64, -pub f_bfree: __u64, -pub f_bavail: __u64, -pub f_files: __u64, -pub f_ffree: __u64, -pub f_fsid: __kernel_fsid_t, -pub f_namelen: __u32, -pub f_frsize: __u32, -pub f_flags: __u32, -pub f_spare: [__u32; 4usize], } -pub type __fsword_t = __kernel_long_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct user_desc { -pub entry_number: crate::ctypes::c_uint, -pub base_addr: crate::ctypes::c_uint, -pub limit: crate::ctypes::c_uint, -pub _bitfield_align_1: [u8; 0], -pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, -pub __bindgen_padding_0: [u8; 3usize], +impl membarrier_cmd { +pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; } impl user_desc { #[inline] @@ -5311,47 +2868,3 @@ __bindgen_bitfield_unit } } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr { -pub msg_name: *mut crate::ctypes::c_void, -pub msg_namelen: crate::ctypes::c_int, -pub msg_iov: *mut iovec, -pub msg_iovlen: size_t, -pub msg_control: *mut crate::ctypes::c_void, -pub msg_controllen: size_t, -pub msg_flags: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsghdr { -pub cmsg_len: size_t, -pub cmsg_level: crate::ctypes::c_int, -pub cmsg_type: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ucred { -pub pid: __u32, -pub uid: __u32, -pub gid: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mmsghdr { -pub msg_hdr: msghdr, -pub msg_len: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigset_t { -pub sig: [crate::ctypes::c_ulong; 1usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kernel_sigaction { -pub sa_handler_kernel: __kernel_sighandler_t, -pub sa_flags: crate::ctypes::c_ulong, -pub sa_restorer: __sigrestore_t, -pub sa_mask: kernel_sigset_t, -} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/if_ether.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/if_ether.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/if_ether.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/if_ether.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,167 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ethhdr { +pub h_dest: [crate::ctypes::c_uchar; 6usize], +pub h_source: [crate::ctypes::c_uchar; 6usize], +pub h_proto: __be16, +} +pub const ETH_ALEN: u32 = 6; +pub const ETH_TLEN: u32 = 2; +pub const ETH_HLEN: u32 = 14; +pub const ETH_ZLEN: u32 = 60; +pub const ETH_DATA_LEN: u32 = 1500; +pub const ETH_FRAME_LEN: u32 = 1514; +pub const ETH_FCS_LEN: u32 = 4; +pub const ETH_MIN_MTU: u32 = 68; +pub const ETH_MAX_MTU: u32 = 65535; +pub const ETH_P_LOOP: u32 = 96; +pub const ETH_P_PUP: u32 = 512; +pub const ETH_P_PUPAT: u32 = 513; +pub const ETH_P_TSN: u32 = 8944; +pub const ETH_P_ERSPAN2: u32 = 8939; +pub const ETH_P_IP: u32 = 2048; +pub const ETH_P_X25: u32 = 2053; +pub const ETH_P_ARP: u32 = 2054; +pub const ETH_P_BPQ: u32 = 2303; +pub const ETH_P_IEEEPUP: u32 = 2560; +pub const ETH_P_IEEEPUPAT: u32 = 2561; +pub const ETH_P_BATMAN: u32 = 17157; +pub const ETH_P_DEC: u32 = 24576; +pub const ETH_P_DNA_DL: u32 = 24577; +pub const ETH_P_DNA_RC: u32 = 24578; +pub const ETH_P_DNA_RT: u32 = 24579; +pub const ETH_P_LAT: u32 = 24580; +pub const ETH_P_DIAG: u32 = 24581; +pub const ETH_P_CUST: u32 = 24582; +pub const ETH_P_SCA: u32 = 24583; +pub const ETH_P_TEB: u32 = 25944; +pub const ETH_P_RARP: u32 = 32821; +pub const ETH_P_ATALK: u32 = 32923; +pub const ETH_P_AARP: u32 = 33011; +pub const ETH_P_8021Q: u32 = 33024; +pub const ETH_P_ERSPAN: u32 = 35006; +pub const ETH_P_IPX: u32 = 33079; +pub const ETH_P_IPV6: u32 = 34525; +pub const ETH_P_PAUSE: u32 = 34824; +pub const ETH_P_SLOW: u32 = 34825; +pub const ETH_P_WCCP: u32 = 34878; +pub const ETH_P_MPLS_UC: u32 = 34887; +pub const ETH_P_MPLS_MC: u32 = 34888; +pub const ETH_P_ATMMPOA: u32 = 34892; +pub const ETH_P_PPP_DISC: u32 = 34915; +pub const ETH_P_PPP_SES: u32 = 34916; +pub const ETH_P_LINK_CTL: u32 = 34924; +pub const ETH_P_ATMFATE: u32 = 34948; +pub const ETH_P_PAE: u32 = 34958; +pub const ETH_P_PROFINET: u32 = 34962; +pub const ETH_P_REALTEK: u32 = 34969; +pub const ETH_P_AOE: u32 = 34978; +pub const ETH_P_ETHERCAT: u32 = 34980; +pub const ETH_P_8021AD: u32 = 34984; +pub const ETH_P_802_EX1: u32 = 34997; +pub const ETH_P_PREAUTH: u32 = 35015; +pub const ETH_P_TIPC: u32 = 35018; +pub const ETH_P_LLDP: u32 = 35020; +pub const ETH_P_MRP: u32 = 35043; +pub const ETH_P_MACSEC: u32 = 35045; +pub const ETH_P_8021AH: u32 = 35047; +pub const ETH_P_MVRP: u32 = 35061; +pub const ETH_P_1588: u32 = 35063; +pub const ETH_P_NCSI: u32 = 35064; +pub const ETH_P_PRP: u32 = 35067; +pub const ETH_P_CFM: u32 = 35074; +pub const ETH_P_FCOE: u32 = 35078; +pub const ETH_P_IBOE: u32 = 35093; +pub const ETH_P_TDLS: u32 = 35085; +pub const ETH_P_FIP: u32 = 35092; +pub const ETH_P_80221: u32 = 35095; +pub const ETH_P_HSR: u32 = 35119; +pub const ETH_P_NSH: u32 = 35151; +pub const ETH_P_LOOPBACK: u32 = 36864; +pub const ETH_P_QINQ1: u32 = 37120; +pub const ETH_P_QINQ2: u32 = 37376; +pub const ETH_P_QINQ3: u32 = 37632; +pub const ETH_P_EDSA: u32 = 56026; +pub const ETH_P_DSA_8021Q: u32 = 56027; +pub const ETH_P_DSA_A5PSW: u32 = 57345; +pub const ETH_P_IFE: u32 = 60734; +pub const ETH_P_AF_IUCV: u32 = 64507; +pub const ETH_P_802_3_MIN: u32 = 1536; +pub const ETH_P_802_3: u32 = 1; +pub const ETH_P_AX25: u32 = 2; +pub const ETH_P_ALL: u32 = 3; +pub const ETH_P_802_2: u32 = 4; +pub const ETH_P_SNAP: u32 = 5; +pub const ETH_P_DDCMP: u32 = 6; +pub const ETH_P_WAN_PPP: u32 = 7; +pub const ETH_P_PPP_MP: u32 = 8; +pub const ETH_P_LOCALTALK: u32 = 9; +pub const ETH_P_CAN: u32 = 12; +pub const ETH_P_CANFD: u32 = 13; +pub const ETH_P_CANXL: u32 = 14; +pub const ETH_P_PPPTALK: u32 = 16; +pub const ETH_P_TR_802_2: u32 = 17; +pub const ETH_P_MOBITEX: u32 = 21; +pub const ETH_P_CONTROL: u32 = 22; +pub const ETH_P_IRDA: u32 = 23; +pub const ETH_P_ECONET: u32 = 24; +pub const ETH_P_HDLC: u32 = 25; +pub const ETH_P_ARCNET: u32 = 26; +pub const ETH_P_DSA: u32 = 27; +pub const ETH_P_TRAILER: u32 = 28; +pub const ETH_P_PHONET: u32 = 245; +pub const ETH_P_IEEE802154: u32 = 246; +pub const ETH_P_CAIF: u32 = 247; +pub const ETH_P_XDSA: u32 = 248; +pub const ETH_P_MAP: u32 = 249; +pub const ETH_P_MCTP: u32 = 250; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/ioctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/ioctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/ioctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ pub const FIONREAD: u32 = 21531; pub const FIONBIO: u32 = 21537; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/io_uring.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/io_uring.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/io_uring.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/io_uring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1083 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_rwf_t = crate::ctypes::c_int; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v1 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub master_key_descriptor: [__u8; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_key { +pub mode: __u32, +pub raw: [__u8; 64usize], +pub size: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fscrypt_policy_v2 { +pub version: __u8, +pub contents_encryption_mode: __u8, +pub filenames_encryption_mode: __u8, +pub flags: __u8, +pub __reserved: [__u8; 4usize], +pub master_key_identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_policy_ex_arg { +pub policy_size: __u64, +pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_key_specifier { +pub type_: __u32, +pub __reserved: __u32, +pub u: fscrypt_key_specifier__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug)] +pub struct fscrypt_provisioning_key_payload { +pub type_: __u32, +pub __reserved: __u32, +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +pub struct fscrypt_add_key_arg { +pub key_spec: fscrypt_key_specifier, +pub raw_size: __u32, +pub key_id: __u32, +pub __reserved: [__u32; 8usize], +pub raw: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_remove_key_arg { +pub key_spec: fscrypt_key_specifier, +pub removal_status_flags: __u32, +pub __reserved: [__u32; 5usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct fscrypt_get_key_status_arg { +pub key_spec: fscrypt_key_specifier, +pub __reserved: [__u32; 6usize], +pub status: __u32, +pub status_flags: __u32, +pub user_count: __u32, +pub __out_reserved: [__u32; 13usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mount_attr { +pub attr_set: __u64, +pub attr_clr: __u64, +pub propagation: __u64, +pub userns_fd: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_clone_range { +pub src_fd: __s64, +pub src_offset: __u64, +pub src_length: __u64, +pub dest_offset: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fstrim_range { +pub start: __u64, +pub len: __u64, +pub minlen: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct file_dedupe_range_info { +pub dest_fd: __s64, +pub dest_offset: __u64, +pub bytes_deduped: __u64, +pub status: __s32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct file_dedupe_range { +pub src_offset: __u64, +pub src_length: __u64, +pub dest_count: __u16, +pub reserved1: __u16, +pub reserved2: __u32, +pub info: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct files_stat_struct { +pub nr_files: crate::ctypes::c_ulong, +pub nr_free_files: crate::ctypes::c_ulong, +pub max_files: crate::ctypes::c_ulong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct inodes_stat_t { +pub nr_inodes: crate::ctypes::c_long, +pub nr_unused: crate::ctypes::c_long, +pub dummy: [crate::ctypes::c_long; 5usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct fsxattr { +pub fsx_xflags: __u32, +pub fsx_extsize: __u32, +pub fsx_nextents: __u32, +pub fsx_projid: __u32, +pub fsx_cowextsize: __u32, +pub fsx_pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_timespec { +pub tv_sec: __kernel_time64_t, +pub tv_nsec: crate::ctypes::c_longlong, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_itimerspec { +pub it_interval: __kernel_timespec, +pub it_value: __kernel_timespec, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timeval { +pub tv_sec: __kernel_long_t, +pub tv_usec: __kernel_long_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_timespec { +pub tv_sec: __kernel_old_time_t, +pub tv_nsec: crate::ctypes::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_old_itimerval { +pub it_interval: __kernel_old_timeval, +pub it_value: __kernel_old_timeval, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sock_timeval { +pub tv_sec: __s64, +pub tv_usec: __s64, +} +#[repr(C)] +pub struct io_uring_sqe { +pub opcode: __u8, +pub flags: __u8, +pub ioprio: __u16, +pub fd: __s32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, +pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, +pub len: __u32, +pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, +pub user_data: __u64, +pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, +pub personality: __u16, +pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, +pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { +pub cmd_op: __u32, +pub __pad1: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { +pub addr_len: __u16, +pub __pad3: [__u16; 1usize], +} +#[repr(C)] +pub struct io_uring_sqe__bindgen_ty_6 { +pub __bindgen_anon_1: __BindgenUnionField, +pub cmd: __BindgenUnionField<[__u8; 0usize]>, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { +pub addr3: __u64, +pub __pad2: [__u64; 1usize], +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_cqe { +pub user_data: __u64, +pub res: __s32, +pub flags: __u32, +pub big_cqe: __IncompleteArrayField<__u64>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_sqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub flags: __u32, +pub dropped: __u32, +pub array: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_cqring_offsets { +pub head: __u32, +pub tail: __u32, +pub ring_mask: __u32, +pub ring_entries: __u32, +pub overflow: __u32, +pub cqes: __u32, +pub flags: __u32, +pub resv1: __u32, +pub resv2: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_params { +pub sq_entries: __u32, +pub cq_entries: __u32, +pub flags: __u32, +pub sq_thread_cpu: __u32, +pub sq_thread_idle: __u32, +pub features: __u32, +pub wq_fd: __u32, +pub resv: [__u32; 3usize], +pub sq_off: io_sqring_offsets, +pub cq_off: io_cqring_offsets, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_files_update { +pub offset: __u32, +pub resv: __u32, +pub fds: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_register { +pub nr: __u32, +pub flags: __u32, +pub resv2: __u64, +pub data: __u64, +pub tags: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_rsrc_update2 { +pub offset: __u32, +pub resv: __u32, +pub data: __u64, +pub tags: __u64, +pub nr: __u32, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_slot { +pub tag: __u64, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_notification_register { +pub nr_slots: __u32, +pub resv: __u32, +pub resv2: __u64, +pub data: __u64, +pub resv3: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_probe_op { +pub op: __u8, +pub resv: __u8, +pub flags: __u16, +pub resv2: __u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_probe { +pub last_op: __u8, +pub ops_len: __u8, +pub resv: __u16, +pub resv2: [__u32; 3usize], +pub ops: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_restriction { +pub opcode: __u16, +pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, +pub resv: __u8, +pub resv2: [__u32; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf { +pub addr: __u64, +pub len: __u32, +pub bid: __u16, +pub resv: __u16, +} +#[repr(C)] +pub struct io_uring_buf_ring { +pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, +} +#[repr(C)] +pub struct io_uring_buf_ring__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { +pub resv1: __u64, +pub resv2: __u32, +pub resv3: __u16, +pub tail: __u16, +} +#[repr(C)] +#[derive(Debug)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2 { +pub __empty_bufs: io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, +pub bufs: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_buf_reg { +pub ring_addr: __u64, +pub ring_entries: __u32, +pub bgid: __u16, +pub pad: __u16, +pub resv: [__u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_getevents_arg { +pub sigmask: __u64, +pub sigmask_sz: __u32, +pub pad: __u32, +pub ts: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_sync_cancel_reg { +pub addr: __u64, +pub fd: __s32, +pub flags: __u32, +pub timeout: __kernel_timespec, +pub pad: [__u64; 4usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_file_index_range { +pub off: __u32, +pub len: __u32, +pub resv: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct io_uring_recvmsg_out { +pub namelen: __u32, +pub controllen: __u32, +pub payloadlen: __u32, +pub flags: __u32, +} +pub const NR_OPEN: u32 = 1024; +pub const NGROUPS_MAX: u32 = 65536; +pub const ARG_MAX: u32 = 131072; +pub const LINK_MAX: u32 = 127; +pub const MAX_CANON: u32 = 255; +pub const MAX_INPUT: u32 = 255; +pub const NAME_MAX: u32 = 255; +pub const PATH_MAX: u32 = 4096; +pub const PIPE_BUF: u32 = 4096; +pub const XATTR_NAME_MAX: u32 = 255; +pub const XATTR_SIZE_MAX: u32 = 65536; +pub const XATTR_LIST_MAX: u32 = 65536; +pub const RTSIG_MAX: u32 = 32; +pub const _IOC_NRBITS: u32 = 8; +pub const _IOC_TYPEBITS: u32 = 8; +pub const _IOC_SIZEBITS: u32 = 14; +pub const _IOC_DIRBITS: u32 = 2; +pub const _IOC_NRMASK: u32 = 255; +pub const _IOC_TYPEMASK: u32 = 255; +pub const _IOC_SIZEMASK: u32 = 16383; +pub const _IOC_DIRMASK: u32 = 3; +pub const _IOC_NRSHIFT: u32 = 0; +pub const _IOC_TYPESHIFT: u32 = 8; +pub const _IOC_SIZESHIFT: u32 = 16; +pub const _IOC_DIRSHIFT: u32 = 30; +pub const _IOC_NONE: u32 = 0; +pub const _IOC_WRITE: u32 = 1; +pub const _IOC_READ: u32 = 2; +pub const IOC_IN: u32 = 1073741824; +pub const IOC_OUT: u32 = 2147483648; +pub const IOC_INOUT: u32 = 3221225472; +pub const IOCSIZE_MASK: u32 = 1073676288; +pub const IOCSIZE_SHIFT: u32 = 16; +pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; +pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; +pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; +pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; +pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; +pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; +pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; +pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; +pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; +pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; +pub const FSCRYPT_POLICY_V1: u32 = 0; +pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; +pub const FSCRYPT_POLICY_V2: u32 = 2; +pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; +pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; +pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; +pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; +pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; +pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; +pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; +pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; +pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; +pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; +pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; +pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; +pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; +pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; +pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; +pub const FS_POLICY_FLAGS_VALID: u32 = 7; +pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; +pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; +pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; +pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; +pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; +pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; +pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; +pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; +pub const FS_KEY_DESC_PREFIX: &[u8; 9] = b"fscrypt:\0"; +pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; +pub const FS_MAX_KEY_SIZE: u32 = 64; +pub const MS_RDONLY: u32 = 1; +pub const MS_NOSUID: u32 = 2; +pub const MS_NODEV: u32 = 4; +pub const MS_NOEXEC: u32 = 8; +pub const MS_SYNCHRONOUS: u32 = 16; +pub const MS_REMOUNT: u32 = 32; +pub const MS_MANDLOCK: u32 = 64; +pub const MS_DIRSYNC: u32 = 128; +pub const MS_NOSYMFOLLOW: u32 = 256; +pub const MS_NOATIME: u32 = 1024; +pub const MS_NODIRATIME: u32 = 2048; +pub const MS_BIND: u32 = 4096; +pub const MS_MOVE: u32 = 8192; +pub const MS_REC: u32 = 16384; +pub const MS_VERBOSE: u32 = 32768; +pub const MS_SILENT: u32 = 32768; +pub const MS_POSIXACL: u32 = 65536; +pub const MS_UNBINDABLE: u32 = 131072; +pub const MS_PRIVATE: u32 = 262144; +pub const MS_SLAVE: u32 = 524288; +pub const MS_SHARED: u32 = 1048576; +pub const MS_RELATIME: u32 = 2097152; +pub const MS_KERNMOUNT: u32 = 4194304; +pub const MS_I_VERSION: u32 = 8388608; +pub const MS_STRICTATIME: u32 = 16777216; +pub const MS_LAZYTIME: u32 = 33554432; +pub const MS_SUBMOUNT: u32 = 67108864; +pub const MS_NOREMOTELOCK: u32 = 134217728; +pub const MS_NOSEC: u32 = 268435456; +pub const MS_BORN: u32 = 536870912; +pub const MS_ACTIVE: u32 = 1073741824; +pub const MS_NOUSER: u32 = 2147483648; +pub const MS_RMT_MASK: u32 = 41943121; +pub const MS_MGC_VAL: u32 = 3236757504; +pub const MS_MGC_MSK: u32 = 4294901760; +pub const OPEN_TREE_CLONE: u32 = 1; +pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; +pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; +pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; +pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; +pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; +pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; +pub const MOVE_MOUNT_SET_GROUP: u32 = 256; +pub const MOVE_MOUNT__MASK: u32 = 375; +pub const FSOPEN_CLOEXEC: u32 = 1; +pub const FSPICK_CLOEXEC: u32 = 1; +pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; +pub const FSPICK_NO_AUTOMOUNT: u32 = 4; +pub const FSPICK_EMPTY_PATH: u32 = 8; +pub const FSMOUNT_CLOEXEC: u32 = 1; +pub const MOUNT_ATTR_RDONLY: u32 = 1; +pub const MOUNT_ATTR_NOSUID: u32 = 2; +pub const MOUNT_ATTR_NODEV: u32 = 4; +pub const MOUNT_ATTR_NOEXEC: u32 = 8; +pub const MOUNT_ATTR__ATIME: u32 = 112; +pub const MOUNT_ATTR_RELATIME: u32 = 0; +pub const MOUNT_ATTR_NOATIME: u32 = 16; +pub const MOUNT_ATTR_STRICTATIME: u32 = 32; +pub const MOUNT_ATTR_NODIRATIME: u32 = 128; +pub const MOUNT_ATTR_IDMAP: u32 = 1048576; +pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; +pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; +pub const INR_OPEN_CUR: u32 = 1024; +pub const INR_OPEN_MAX: u32 = 4096; +pub const BLOCK_SIZE_BITS: u32 = 10; +pub const BLOCK_SIZE: u32 = 1024; +pub const SEEK_SET: u32 = 0; +pub const SEEK_CUR: u32 = 1; +pub const SEEK_END: u32 = 2; +pub const SEEK_DATA: u32 = 3; +pub const SEEK_HOLE: u32 = 4; +pub const SEEK_MAX: u32 = 4; +pub const RENAME_NOREPLACE: u32 = 1; +pub const RENAME_EXCHANGE: u32 = 2; +pub const RENAME_WHITEOUT: u32 = 4; +pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; +pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; +pub const NR_FILE: u32 = 8192; +pub const FS_XFLAG_REALTIME: u32 = 1; +pub const FS_XFLAG_PREALLOC: u32 = 2; +pub const FS_XFLAG_IMMUTABLE: u32 = 8; +pub const FS_XFLAG_APPEND: u32 = 16; +pub const FS_XFLAG_SYNC: u32 = 32; +pub const FS_XFLAG_NOATIME: u32 = 64; +pub const FS_XFLAG_NODUMP: u32 = 128; +pub const FS_XFLAG_RTINHERIT: u32 = 256; +pub const FS_XFLAG_PROJINHERIT: u32 = 512; +pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; +pub const FS_XFLAG_EXTSIZE: u32 = 2048; +pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; +pub const FS_XFLAG_NODEFRAG: u32 = 8192; +pub const FS_XFLAG_FILESTREAM: u32 = 16384; +pub const FS_XFLAG_DAX: u32 = 32768; +pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; +pub const FS_XFLAG_HASATTR: u32 = 2147483648; +pub const BMAP_IOCTL: u32 = 1; +pub const FSLABEL_MAX: u32 = 256; +pub const FS_SECRM_FL: u32 = 1; +pub const FS_UNRM_FL: u32 = 2; +pub const FS_COMPR_FL: u32 = 4; +pub const FS_SYNC_FL: u32 = 8; +pub const FS_IMMUTABLE_FL: u32 = 16; +pub const FS_APPEND_FL: u32 = 32; +pub const FS_NODUMP_FL: u32 = 64; +pub const FS_NOATIME_FL: u32 = 128; +pub const FS_DIRTY_FL: u32 = 256; +pub const FS_COMPRBLK_FL: u32 = 512; +pub const FS_NOCOMP_FL: u32 = 1024; +pub const FS_ENCRYPT_FL: u32 = 2048; +pub const FS_BTREE_FL: u32 = 4096; +pub const FS_INDEX_FL: u32 = 4096; +pub const FS_IMAGIC_FL: u32 = 8192; +pub const FS_JOURNAL_DATA_FL: u32 = 16384; +pub const FS_NOTAIL_FL: u32 = 32768; +pub const FS_DIRSYNC_FL: u32 = 65536; +pub const FS_TOPDIR_FL: u32 = 131072; +pub const FS_HUGE_FILE_FL: u32 = 262144; +pub const FS_EXTENT_FL: u32 = 524288; +pub const FS_VERITY_FL: u32 = 1048576; +pub const FS_EA_INODE_FL: u32 = 2097152; +pub const FS_EOFBLOCKS_FL: u32 = 4194304; +pub const FS_NOCOW_FL: u32 = 8388608; +pub const FS_DAX_FL: u32 = 33554432; +pub const FS_INLINE_DATA_FL: u32 = 268435456; +pub const FS_PROJINHERIT_FL: u32 = 536870912; +pub const FS_CASEFOLD_FL: u32 = 1073741824; +pub const FS_RESERVED_FL: u32 = 2147483648; +pub const FS_FL_USER_VISIBLE: u32 = 253951; +pub const FS_FL_USER_MODIFIABLE: u32 = 229631; +pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; +pub const SYNC_FILE_RANGE_WRITE: u32 = 2; +pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; +pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; +pub const IORING_FILE_INDEX_ALLOC: i32 = -1; +pub const IORING_SETUP_IOPOLL: u32 = 1; +pub const IORING_SETUP_SQPOLL: u32 = 2; +pub const IORING_SETUP_SQ_AFF: u32 = 4; +pub const IORING_SETUP_CQSIZE: u32 = 8; +pub const IORING_SETUP_CLAMP: u32 = 16; +pub const IORING_SETUP_ATTACH_WQ: u32 = 32; +pub const IORING_SETUP_R_DISABLED: u32 = 64; +pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; +pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; +pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; +pub const IORING_SETUP_SQE128: u32 = 1024; +pub const IORING_SETUP_CQE32: u32 = 2048; +pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; +pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; +pub const IORING_URING_CMD_FIXED: u32 = 1; +pub const IORING_FSYNC_DATASYNC: u32 = 1; +pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; +pub const IORING_POLL_ADD_LEVEL: u32 = 8; +pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; +pub const IORING_ASYNC_CANCEL_FD: u32 = 2; +pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; +pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; +pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; +pub const IORING_RECV_MULTISHOT: u32 = 2; +pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; +pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; +pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; +pub const IORING_ACCEPT_MULTISHOT: u32 = 1; +pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; +pub const IORING_MSG_RING_FLAGS_PASS: u32 = 2; +pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; +pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; +pub const IORING_CQE_F_NOTIF: u32 = 8; +pub const IORING_OFF_SQ_RING: u32 = 0; +pub const IORING_OFF_CQ_RING: u32 = 134217728; +pub const IORING_OFF_SQES: u32 = 268435456; +pub const IORING_SQ_NEED_WAKEUP: u32 = 1; +pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; +pub const IORING_SQ_TASKRUN: u32 = 4; +pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; +pub const IORING_ENTER_GETEVENTS: u32 = 1; +pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; +pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; +pub const IORING_ENTER_REGISTERED_RING: u32 = 16; +pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; +pub const IORING_FEAT_NODROP: u32 = 2; +pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; +pub const IORING_FEAT_RW_CUR_POS: u32 = 8; +pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; +pub const IORING_FEAT_FAST_POLL: u32 = 32; +pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_FEAT_CQE_SKIP: u32 = 2048; +pub const IORING_FEAT_LINKED_FILE: u32 = 4096; +pub const IORING_FEAT_REG_REG_RING: u32 = 8192; +pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; +pub const IO_URING_OP_SUPPORTED: u32 = 1; +pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_FIXED_FILE_BIT; +pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_DRAIN_BIT; +pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_LINK_BIT; +pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_IO_HARDLINK_BIT; +pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_ASYNC_BIT; +pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_BUFFER_SELECT_BIT; +pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_1 = _bindgen_ty_1::IOSQE_CQE_SKIP_SUCCESS_BIT; +pub const IORING_MSG_DATA: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_DATA; +pub const IORING_MSG_SEND_FD: _bindgen_ty_2 = _bindgen_ty_2::IORING_MSG_SEND_FD; +pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = _bindgen_ty_3::IORING_CQE_BUFFER_SHIFT; +pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS; +pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_BUFFERS; +pub const IORING_REGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES; +pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_FILES; +pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD; +pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_EVENTFD; +pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE; +pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_EVENTFD_ASYNC; +pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PROBE; +pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PERSONALITY; +pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PERSONALITY; +pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RESTRICTIONS; +pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_ENABLE_RINGS; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES2; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILES_UPDATE2; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS2; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_BUFFERS_UPDATE; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_AFF; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_IOWQ_AFF; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_IOWQ_MAX_WORKERS; +pub const IORING_REGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_RING_FDS; +pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_RING_FDS; +pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_PBUF_RING; +pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_UNREGISTER_PBUF_RING; +pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_SYNC_CANCEL; +pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_FILE_ALLOC_RANGE; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_LAST; +pub const IORING_REGISTER_USE_REGISTERED_RING: _bindgen_ty_4 = _bindgen_ty_4::IORING_REGISTER_USE_REGISTERED_RING; +pub const IO_WQ_BOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_BOUND; +pub const IO_WQ_UNBOUND: _bindgen_ty_5 = _bindgen_ty_5::IO_WQ_UNBOUND; +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_REGISTER_OP; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_OP; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_6 = _bindgen_ty_6::IORING_RESTRICTION_LAST; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum fsconfig_command { +FSCONFIG_SET_FLAG = 0, +FSCONFIG_SET_STRING = 1, +FSCONFIG_SET_BINARY = 2, +FSCONFIG_SET_PATH = 3, +FSCONFIG_SET_PATH_EMPTY = 4, +FSCONFIG_SET_FD = 5, +FSCONFIG_CMD_CREATE = 6, +FSCONFIG_CMD_RECONFIGURE = 7, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IOSQE_FIXED_FILE_BIT = 0, +IOSQE_IO_DRAIN_BIT = 1, +IOSQE_IO_LINK_BIT = 2, +IOSQE_IO_HARDLINK_BIT = 3, +IOSQE_ASYNC_BIT = 4, +IOSQE_BUFFER_SELECT_BIT = 5, +IOSQE_CQE_SKIP_SUCCESS_BIT = 6, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum io_uring_op { +IORING_OP_NOP = 0, +IORING_OP_READV = 1, +IORING_OP_WRITEV = 2, +IORING_OP_FSYNC = 3, +IORING_OP_READ_FIXED = 4, +IORING_OP_WRITE_FIXED = 5, +IORING_OP_POLL_ADD = 6, +IORING_OP_POLL_REMOVE = 7, +IORING_OP_SYNC_FILE_RANGE = 8, +IORING_OP_SENDMSG = 9, +IORING_OP_RECVMSG = 10, +IORING_OP_TIMEOUT = 11, +IORING_OP_TIMEOUT_REMOVE = 12, +IORING_OP_ACCEPT = 13, +IORING_OP_ASYNC_CANCEL = 14, +IORING_OP_LINK_TIMEOUT = 15, +IORING_OP_CONNECT = 16, +IORING_OP_FALLOCATE = 17, +IORING_OP_OPENAT = 18, +IORING_OP_CLOSE = 19, +IORING_OP_FILES_UPDATE = 20, +IORING_OP_STATX = 21, +IORING_OP_READ = 22, +IORING_OP_WRITE = 23, +IORING_OP_FADVISE = 24, +IORING_OP_MADVISE = 25, +IORING_OP_SEND = 26, +IORING_OP_RECV = 27, +IORING_OP_OPENAT2 = 28, +IORING_OP_EPOLL_CTL = 29, +IORING_OP_SPLICE = 30, +IORING_OP_PROVIDE_BUFFERS = 31, +IORING_OP_REMOVE_BUFFERS = 32, +IORING_OP_TEE = 33, +IORING_OP_SHUTDOWN = 34, +IORING_OP_RENAMEAT = 35, +IORING_OP_UNLINKAT = 36, +IORING_OP_MKDIRAT = 37, +IORING_OP_SYMLINKAT = 38, +IORING_OP_LINKAT = 39, +IORING_OP_MSG_RING = 40, +IORING_OP_FSETXATTR = 41, +IORING_OP_SETXATTR = 42, +IORING_OP_FGETXATTR = 43, +IORING_OP_GETXATTR = 44, +IORING_OP_SOCKET = 45, +IORING_OP_URING_CMD = 46, +IORING_OP_SEND_ZC = 47, +IORING_OP_SENDMSG_ZC = 48, +IORING_OP_LAST = 49, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IORING_MSG_DATA = 0, +IORING_MSG_SEND_FD = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +IORING_CQE_BUFFER_SHIFT = 16, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +IORING_REGISTER_BUFFERS = 0, +IORING_UNREGISTER_BUFFERS = 1, +IORING_REGISTER_FILES = 2, +IORING_UNREGISTER_FILES = 3, +IORING_REGISTER_EVENTFD = 4, +IORING_UNREGISTER_EVENTFD = 5, +IORING_REGISTER_FILES_UPDATE = 6, +IORING_REGISTER_EVENTFD_ASYNC = 7, +IORING_REGISTER_PROBE = 8, +IORING_REGISTER_PERSONALITY = 9, +IORING_UNREGISTER_PERSONALITY = 10, +IORING_REGISTER_RESTRICTIONS = 11, +IORING_REGISTER_ENABLE_RINGS = 12, +IORING_REGISTER_FILES2 = 13, +IORING_REGISTER_FILES_UPDATE2 = 14, +IORING_REGISTER_BUFFERS2 = 15, +IORING_REGISTER_BUFFERS_UPDATE = 16, +IORING_REGISTER_IOWQ_AFF = 17, +IORING_UNREGISTER_IOWQ_AFF = 18, +IORING_REGISTER_IOWQ_MAX_WORKERS = 19, +IORING_REGISTER_RING_FDS = 20, +IORING_UNREGISTER_RING_FDS = 21, +IORING_REGISTER_PBUF_RING = 22, +IORING_UNREGISTER_PBUF_RING = 23, +IORING_REGISTER_SYNC_CANCEL = 24, +IORING_REGISTER_FILE_ALLOC_RANGE = 25, +IORING_REGISTER_LAST = 26, +IORING_REGISTER_USE_REGISTERED_RING = 2147483648, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +IO_WQ_BOUND = 0, +IO_WQ_UNBOUND = 1, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +IORING_RESTRICTION_REGISTER_OP = 0, +IORING_RESTRICTION_SQE_OP = 1, +IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, +IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, +IORING_RESTRICTION_LAST = 4, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { +pub version: __u8, +pub v1: fscrypt_policy_v1, +pub v2: fscrypt_policy_v2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union fscrypt_key_specifier__bindgen_ty_1 { +pub __reserved: [__u8; 32usize], +pub descriptor: [__u8; 8usize], +pub identifier: [__u8; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_1 { +pub off: __u64, +pub addr2: __u64, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_2 { +pub addr: __u64, +pub splice_off_in: __u64, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_3 { +pub rw_flags: __kernel_rwf_t, +pub fsync_flags: __u32, +pub poll_events: __u16, +pub poll32_events: __u32, +pub sync_range_flags: __u32, +pub msg_flags: __u32, +pub timeout_flags: __u32, +pub accept_flags: __u32, +pub cancel_flags: __u32, +pub open_flags: __u32, +pub statx_flags: __u32, +pub fadvise_advice: __u32, +pub splice_flags: __u32, +pub rename_flags: __u32, +pub unlink_flags: __u32, +pub hardlink_flags: __u32, +pub xattr_flags: __u32, +pub msg_ring_flags: __u32, +pub uring_cmd_flags: __u32, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_4 { +pub buf_index: __u16, +pub buf_group: __u16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { +pub splice_fd_in: __s32, +pub file_index: __u32, +pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_restriction__bindgen_ty_1 { +pub register_op: __u8, +pub sqe_op: __u8, +pub sqe_flags: __u8, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/netlink.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/netlink.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/netlink.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/netlink.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,357 +1,1492 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.66.1 */ +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { -#[inline] -pub const fn new() -> Self { -__IncompleteArrayField(::core::marker::PhantomData, []) +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, } -#[inline] -pub fn as_ptr(&self) -> *const T { -self as *const _ as *const T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], } -#[inline] -pub fn as_mut_ptr(&mut self) -> *mut T { -self as *mut _ as *mut T +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_nl { +pub nl_family: __kernel_sa_family_t, +pub nl_pad: crate::ctypes::c_ushort, +pub nl_pid: __u32, +pub nl_groups: __u32, } -#[inline] -pub unsafe fn as_slice(&self, len: usize) -> &[T] { -::core::slice::from_raw_parts(self.as_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsghdr { +pub nlmsg_len: __u32, +pub nlmsg_type: __u16, +pub nlmsg_flags: __u16, +pub nlmsg_seq: __u32, +pub nlmsg_pid: __u32, } -#[inline] -pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { -::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nlmsgerr { +pub error: crate::ctypes::c_int, +pub msg: nlmsghdr, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_pktinfo { +pub group: __u32, } -impl ::core::fmt::Debug for __IncompleteArrayField { -fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { -fmt.write_str("__IncompleteArrayField") +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_req { +pub nm_block_size: crate::ctypes::c_uint, +pub nm_block_nr: crate::ctypes::c_uint, +pub nm_frame_size: crate::ctypes::c_uint, +pub nm_frame_nr: crate::ctypes::c_uint, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nl_mmap_hdr { +pub nm_status: crate::ctypes::c_uint, +pub nm_len: crate::ctypes::c_uint, +pub nm_group: __u32, +pub nm_pid: __u32, +pub nm_uid: __u32, +pub nm_gid: __u32, } -pub const LINUX_VERSION_CODE: u32 = 393984; -pub const LINUX_VERSION_MAJOR: u32 = 6; -pub const LINUX_VERSION_PATCHLEVEL: u32 = 3; -pub const LINUX_VERSION_SUBLEVEL: u32 = 0; -pub const _K_SS_MAXSIZE: u32 = 128; -pub const SOCK_SNDBUF_LOCK: u32 = 1; -pub const SOCK_RCVBUF_LOCK: u32 = 2; -pub const SOCK_BUF_LOCK_MASK: u32 = 3; -pub const SOCK_TXREHASH_DEFAULT: u32 = 255; -pub const SOCK_TXREHASH_DISABLED: u32 = 0; -pub const SOCK_TXREHASH_ENABLED: u32 = 1; -pub const __BITS_PER_LONG: u32 = 64; -pub const __FD_SETSIZE: u32 = 1024; -pub const NETLINK_ROUTE: u32 = 0; -pub const NETLINK_UNUSED: u32 = 1; -pub const NETLINK_USERSOCK: u32 = 2; -pub const NETLINK_FIREWALL: u32 = 3; -pub const NETLINK_SOCK_DIAG: u32 = 4; -pub const NETLINK_NFLOG: u32 = 5; -pub const NETLINK_XFRM: u32 = 6; -pub const NETLINK_SELINUX: u32 = 7; -pub const NETLINK_ISCSI: u32 = 8; -pub const NETLINK_AUDIT: u32 = 9; -pub const NETLINK_FIB_LOOKUP: u32 = 10; -pub const NETLINK_CONNECTOR: u32 = 11; -pub const NETLINK_NETFILTER: u32 = 12; -pub const NETLINK_IP6_FW: u32 = 13; -pub const NETLINK_DNRTMSG: u32 = 14; -pub const NETLINK_KOBJECT_UEVENT: u32 = 15; -pub const NETLINK_GENERIC: u32 = 16; -pub const NETLINK_SCSITRANSPORT: u32 = 18; -pub const NETLINK_ECRYPTFS: u32 = 19; -pub const NETLINK_RDMA: u32 = 20; -pub const NETLINK_CRYPTO: u32 = 21; -pub const NETLINK_SMC: u32 = 22; -pub const NETLINK_INET_DIAG: u32 = 4; -pub const MAX_LINKS: u32 = 32; -pub const NLM_F_REQUEST: u32 = 1; -pub const NLM_F_MULTI: u32 = 2; -pub const NLM_F_ACK: u32 = 4; -pub const NLM_F_ECHO: u32 = 8; -pub const NLM_F_DUMP_INTR: u32 = 16; -pub const NLM_F_DUMP_FILTERED: u32 = 32; -pub const NLM_F_ROOT: u32 = 256; -pub const NLM_F_MATCH: u32 = 512; -pub const NLM_F_ATOMIC: u32 = 1024; -pub const NLM_F_DUMP: u32 = 768; -pub const NLM_F_REPLACE: u32 = 256; -pub const NLM_F_EXCL: u32 = 512; -pub const NLM_F_CREATE: u32 = 1024; -pub const NLM_F_APPEND: u32 = 2048; -pub const NLM_F_NONREC: u32 = 256; -pub const NLM_F_BULK: u32 = 512; -pub const NLM_F_CAPPED: u32 = 256; -pub const NLM_F_ACK_TLVS: u32 = 512; -pub const NLMSG_ALIGNTO: u32 = 4; -pub const NLMSG_NOOP: u32 = 1; -pub const NLMSG_ERROR: u32 = 2; -pub const NLMSG_DONE: u32 = 3; -pub const NLMSG_OVERRUN: u32 = 4; -pub const NLMSG_MIN_TYPE: u32 = 16; -pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; -pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; -pub const NETLINK_PKTINFO: u32 = 3; -pub const NETLINK_BROADCAST_ERROR: u32 = 4; -pub const NETLINK_NO_ENOBUFS: u32 = 5; -pub const NETLINK_RX_RING: u32 = 6; -pub const NETLINK_TX_RING: u32 = 7; -pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; -pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; -pub const NETLINK_CAP_ACK: u32 = 10; -pub const NETLINK_EXT_ACK: u32 = 11; -pub const NETLINK_GET_STRICT_CHK: u32 = 12; -pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; -pub const NET_MAJOR: u32 = 36; -pub const NLA_F_NESTED: u32 = 32768; -pub const NLA_F_NET_BYTEORDER: u32 = 16384; -pub const NLA_TYPE_MASK: i32 = -49153; -pub const NLA_ALIGNTO: u32 = 4; -pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; -pub const MACVLAN_FLAG_NODST: u32 = 2; -pub const IPVLAN_F_PRIVATE: u32 = 1; -pub const IPVLAN_F_VEPA: u32 = 2; -pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; -pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; -pub const MAX_VLAN_LIST_LEN: u32 = 1; -pub const PORT_PROFILE_MAX: u32 = 40; -pub const PORT_UUID_MAX: u32 = 16; -pub const PORT_SELF_VF: i32 = -1; -pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; -pub const XDP_FLAGS_SKB_MODE: u32 = 2; -pub const XDP_FLAGS_DRV_MODE: u32 = 4; -pub const XDP_FLAGS_HW_MODE: u32 = 8; -pub const XDP_FLAGS_REPLACE: u32 = 16; -pub const XDP_FLAGS_MODES: u32 = 14; -pub const XDP_FLAGS_MASK: u32 = 31; -pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; -pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; -pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; -pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; -pub const IFA_F_SECONDARY: u32 = 1; -pub const IFA_F_TEMPORARY: u32 = 1; -pub const IFA_F_NODAD: u32 = 2; -pub const IFA_F_OPTIMISTIC: u32 = 4; -pub const IFA_F_DADFAILED: u32 = 8; -pub const IFA_F_HOMEADDRESS: u32 = 16; -pub const IFA_F_DEPRECATED: u32 = 32; -pub const IFA_F_TENTATIVE: u32 = 64; -pub const IFA_F_PERMANENT: u32 = 128; -pub const IFA_F_MANAGETEMPADDR: u32 = 256; -pub const IFA_F_NOPREFIXROUTE: u32 = 512; -pub const IFA_F_MCAUTOJOIN: u32 = 1024; -pub const IFA_F_STABLE_PRIVACY: u32 = 2048; -pub const IFAPROT_UNSPEC: u32 = 0; -pub const IFAPROT_KERNEL_LO: u32 = 1; -pub const IFAPROT_KERNEL_RA: u32 = 2; -pub const IFAPROT_KERNEL_LL: u32 = 3; -pub const NTF_USE: u32 = 1; -pub const NTF_SELF: u32 = 2; -pub const NTF_MASTER: u32 = 4; -pub const NTF_PROXY: u32 = 8; -pub const NTF_EXT_LEARNED: u32 = 16; -pub const NTF_OFFLOADED: u32 = 32; -pub const NTF_STICKY: u32 = 64; -pub const NTF_ROUTER: u32 = 128; -pub const NTF_EXT_MANAGED: u32 = 1; -pub const NTF_EXT_LOCKED: u32 = 2; -pub const NUD_INCOMPLETE: u32 = 1; -pub const NUD_REACHABLE: u32 = 2; -pub const NUD_STALE: u32 = 4; -pub const NUD_DELAY: u32 = 8; -pub const NUD_PROBE: u32 = 16; -pub const NUD_FAILED: u32 = 32; -pub const NUD_NOARP: u32 = 64; -pub const NUD_PERMANENT: u32 = 128; -pub const NUD_NONE: u32 = 0; -pub const RTNL_FAMILY_IPMR: u32 = 128; -pub const RTNL_FAMILY_IP6MR: u32 = 129; -pub const RTNL_FAMILY_MAX: u32 = 129; -pub const RTA_ALIGNTO: u32 = 4; -pub const RTPROT_UNSPEC: u32 = 0; -pub const RTPROT_REDIRECT: u32 = 1; -pub const RTPROT_KERNEL: u32 = 2; -pub const RTPROT_BOOT: u32 = 3; -pub const RTPROT_STATIC: u32 = 4; -pub const RTPROT_GATED: u32 = 8; -pub const RTPROT_RA: u32 = 9; -pub const RTPROT_MRT: u32 = 10; -pub const RTPROT_ZEBRA: u32 = 11; -pub const RTPROT_BIRD: u32 = 12; -pub const RTPROT_DNROUTED: u32 = 13; -pub const RTPROT_XORP: u32 = 14; -pub const RTPROT_NTK: u32 = 15; -pub const RTPROT_DHCP: u32 = 16; -pub const RTPROT_MROUTED: u32 = 17; -pub const RTPROT_KEEPALIVED: u32 = 18; -pub const RTPROT_BABEL: u32 = 42; -pub const RTPROT_OPENR: u32 = 99; -pub const RTPROT_BGP: u32 = 186; -pub const RTPROT_ISIS: u32 = 187; -pub const RTPROT_OSPF: u32 = 188; -pub const RTPROT_RIP: u32 = 189; -pub const RTPROT_EIGRP: u32 = 192; -pub const RTM_F_NOTIFY: u32 = 256; -pub const RTM_F_CLONED: u32 = 512; -pub const RTM_F_EQUALIZE: u32 = 1024; -pub const RTM_F_PREFIX: u32 = 2048; -pub const RTM_F_LOOKUP_TABLE: u32 = 4096; -pub const RTM_F_FIB_MATCH: u32 = 8192; -pub const RTM_F_OFFLOAD: u32 = 16384; -pub const RTM_F_TRAP: u32 = 32768; -pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; -pub const RTNH_F_DEAD: u32 = 1; -pub const RTNH_F_PERVASIVE: u32 = 2; -pub const RTNH_F_ONLINK: u32 = 4; -pub const RTNH_F_OFFLOAD: u32 = 8; -pub const RTNH_F_LINKDOWN: u32 = 16; -pub const RTNH_F_UNRESOLVED: u32 = 32; -pub const RTNH_F_TRAP: u32 = 64; -pub const RTNH_COMPARE_MASK: u32 = 89; -pub const RTNH_ALIGNTO: u32 = 4; -pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; -pub const RTAX_FEATURE_ECN: u32 = 1; -pub const RTAX_FEATURE_SACK: u32 = 2; -pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; -pub const RTAX_FEATURE_ALLFRAG: u32 = 8; -pub const RTAX_FEATURE_MASK: u32 = 15; -pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; -pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; -pub const RTMGRP_LINK: u32 = 1; -pub const RTMGRP_NOTIFY: u32 = 2; -pub const RTMGRP_NEIGH: u32 = 4; -pub const RTMGRP_TC: u32 = 8; -pub const RTMGRP_IPV4_IFADDR: u32 = 16; -pub const RTMGRP_IPV4_MROUTE: u32 = 32; -pub const RTMGRP_IPV4_ROUTE: u32 = 64; -pub const RTMGRP_IPV4_RULE: u32 = 128; -pub const RTMGRP_IPV6_IFADDR: u32 = 256; -pub const RTMGRP_IPV6_MROUTE: u32 = 512; -pub const RTMGRP_IPV6_ROUTE: u32 = 1024; -pub const RTMGRP_IPV6_IFINFO: u32 = 2048; -pub const RTMGRP_DECnet_IFADDR: u32 = 4096; -pub const RTMGRP_DECnet_ROUTE: u32 = 16384; -pub const RTMGRP_IPV6_PREFIX: u32 = 131072; -pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; -pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; -pub const RTEXT_FILTER_VF: u32 = 1; -pub const RTEXT_FILTER_BRVLAN: u32 = 2; -pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; -pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; -pub const RTEXT_FILTER_MRP: u32 = 16; -pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; -pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; -pub const RTEXT_FILTER_MST: u32 = 128; -pub type size_t = crate::ctypes::c_ulong; -pub type ssize_t = crate::ctypes::c_long; -pub type __kernel_sa_family_t = crate::ctypes::c_ushort; #[repr(C)] -#[derive(Copy, Clone)] -pub struct __kernel_sockaddr_storage { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +#[derive(Debug, Copy, Clone)] +pub struct nlattr { +pub nla_len: __u16, +pub nla_type: __u16, } #[repr(C)] -#[derive(Copy, Clone)] -pub union __kernel_sockaddr_storage__bindgen_ty_1 { -pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, -pub __align: *mut crate::ctypes::c_void, +#[derive(Debug, Copy, Clone)] +pub struct nla_bitfield32 { +pub value: __u32, +pub selector: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { -pub ss_family: __kernel_sa_family_t, -pub __data: [crate::ctypes::c_char; 126usize], +pub struct rtnl_link_stats { +pub rx_packets: __u32, +pub tx_packets: __u32, +pub rx_bytes: __u32, +pub tx_bytes: __u32, +pub rx_errors: __u32, +pub tx_errors: __u32, +pub rx_dropped: __u32, +pub tx_dropped: __u32, +pub multicast: __u32, +pub collisions: __u32, +pub rx_length_errors: __u32, +pub rx_over_errors: __u32, +pub rx_crc_errors: __u32, +pub rx_frame_errors: __u32, +pub rx_fifo_errors: __u32, +pub rx_missed_errors: __u32, +pub tx_aborted_errors: __u32, +pub tx_carrier_errors: __u32, +pub tx_fifo_errors: __u32, +pub tx_heartbeat_errors: __u32, +pub tx_window_errors: __u32, +pub rx_compressed: __u32, +pub tx_compressed: __u32, +pub rx_nohandler: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnl_link_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, +pub collisions: __u64, +pub rx_length_errors: __u64, +pub rx_over_errors: __u64, +pub rx_crc_errors: __u64, +pub rx_frame_errors: __u64, +pub rx_fifo_errors: __u64, +pub rx_missed_errors: __u64, +pub tx_aborted_errors: __u64, +pub tx_carrier_errors: __u64, +pub tx_fifo_errors: __u64, +pub tx_heartbeat_errors: __u64, +pub tx_window_errors: __u64, +pub rx_compressed: __u64, +pub tx_compressed: __u64, +pub rx_nohandler: __u64, +pub rx_otherhost_dropped: __u64, } -pub type __s8 = crate::ctypes::c_schar; -pub type __u8 = crate::ctypes::c_uchar; -pub type __s16 = crate::ctypes::c_short; -pub type __u16 = crate::ctypes::c_ushort; -pub type __s32 = crate::ctypes::c_int; -pub type __u32 = crate::ctypes::c_uint; -pub type __s64 = crate::ctypes::c_longlong; -pub type __u64 = crate::ctypes::c_ulonglong; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fd_set { -pub fds_bits: [crate::ctypes::c_ulong; 16usize], +pub struct rtnl_hw_stats64 { +pub rx_packets: __u64, +pub tx_packets: __u64, +pub rx_bytes: __u64, +pub tx_bytes: __u64, +pub rx_errors: __u64, +pub tx_errors: __u64, +pub rx_dropped: __u64, +pub tx_dropped: __u64, +pub multicast: __u64, } -pub type __kernel_sighandler_t = ::core::option::Option; -pub type __kernel_key_t = crate::ctypes::c_int; -pub type __kernel_mqd_t = crate::ctypes::c_int; -pub type __kernel_old_uid_t = crate::ctypes::c_ushort; -pub type __kernel_old_gid_t = crate::ctypes::c_ushort; -pub type __kernel_old_dev_t = crate::ctypes::c_ulong; -pub type __kernel_long_t = crate::ctypes::c_long; -pub type __kernel_ulong_t = crate::ctypes::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = crate::ctypes::c_uint; -pub type __kernel_pid_t = crate::ctypes::c_int; -pub type __kernel_ipc_pid_t = crate::ctypes::c_int; -pub type __kernel_uid_t = crate::ctypes::c_uint; -pub type __kernel_gid_t = crate::ctypes::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = crate::ctypes::c_int; -pub type __kernel_uid32_t = crate::ctypes::c_uint; -pub type __kernel_gid32_t = crate::ctypes::c_uint; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct __kernel_fsid_t { -pub val: [crate::ctypes::c_int; 2usize], +pub struct rtnl_link_ifmap { +pub mem_start: __u64, +pub mem_end: __u64, +pub base_addr: __u64, +pub irq: __u16, +pub dma: __u8, +pub port: __u8, } -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = crate::ctypes::c_longlong; -pub type __kernel_old_time_t = __kernel_long_t; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_time64_t = crate::ctypes::c_longlong; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = crate::ctypes::c_int; -pub type __kernel_clockid_t = crate::ctypes::c_int; -pub type __kernel_caddr_t = *mut crate::ctypes::c_char; -pub type __kernel_uid16_t = crate::ctypes::c_ushort; -pub type __kernel_gid16_t = crate::ctypes::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __poll_t = crate::ctypes::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct sockaddr_nl { -pub nl_family: __kernel_sa_family_t, -pub nl_pad: crate::ctypes::c_ushort, -pub nl_pid: __u32, -pub nl_groups: __u32, +pub struct ifla_bridge_id { +pub prio: [__u8; 2usize], +pub addr: [__u8; 6usize], } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsghdr { -pub nlmsg_len: __u32, -pub nlmsg_type: __u16, -pub nlmsg_flags: __u16, -pub nlmsg_seq: __u32, -pub nlmsg_pid: __u32, +pub struct ifla_cacheinfo { +pub max_reasm_len: __u32, +pub tstamp: __u32, +pub reachable_time: __u32, +pub retrans_time: __u32, } #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct nlmsgerr { -pub error: crate::ctypes::c_int, -pub msg: nlmsghdr, +pub struct ifla_vlan_flags { +pub flags: __u32, +pub mask: __u32, } -impl nlmsgerr_attrs { -pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vlan_qos_mapping { +pub from: __u32, +pub to: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tunnel_msg { +pub family: __u8, +pub flags: __u8, +pub reserved2: __u16, +pub ifindex: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vxlan_port_range { +pub low: __be16, +pub high: __be16, } +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_mac { +pub vf: __u32, +pub mac: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_broadcast { +pub broadcast: [__u8; 32usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_vlan_info { +pub vf: __u32, +pub vlan: __u32, +pub qos: __u32, +pub vlan_proto: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_tx_rate { +pub vf: __u32, +pub rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rate { +pub vf: __u32, +pub min_tx_rate: __u32, +pub max_tx_rate: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_spoofchk { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_guid { +pub vf: __u32, +pub guid: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_link_state { +pub vf: __u32, +pub link_state: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_rss_query_en { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_vf_trust { +pub vf: __u32, +pub setting: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_port_vsi { +pub vsi_mgr_id: __u8, +pub vsi_type_id: [__u8; 3usize], +pub vsi_type_version: __u8, +pub pad: [__u8; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct if_stats_msg { +pub family: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub ifindex: __u32, +pub filter_mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifla_rmnet_flags { +pub flags: __u32, +pub mask: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifaddrmsg { +pub ifa_family: __u8, +pub ifa_prefixlen: __u8, +pub ifa_flags: __u8, +pub ifa_scope: __u8, +pub ifa_index: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifa_cacheinfo { +pub ifa_prefered: __u32, +pub ifa_valid: __u32, +pub cstamp: __u32, +pub tstamp: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndmsg { +pub ndm_family: __u8, +pub ndm_pad1: __u8, +pub ndm_pad2: __u16, +pub ndm_ifindex: __s32, +pub ndm_state: __u16, +pub ndm_flags: __u8, +pub ndm_type: __u8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nda_cacheinfo { +pub ndm_confirmed: __u32, +pub ndm_used: __u32, +pub ndm_updated: __u32, +pub ndm_refcnt: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_stats { +pub ndts_allocs: __u64, +pub ndts_destroys: __u64, +pub ndts_hash_grows: __u64, +pub ndts_res_failed: __u64, +pub ndts_lookups: __u64, +pub ndts_hits: __u64, +pub ndts_rcv_probes_mcast: __u64, +pub ndts_rcv_probes_ucast: __u64, +pub ndts_periodic_gc_runs: __u64, +pub ndts_forced_gc_runs: __u64, +pub ndts_table_fulls: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndtmsg { +pub ndtm_family: __u8, +pub ndtm_pad1: __u8, +pub ndtm_pad2: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ndt_config { +pub ndtc_key_len: __u16, +pub ndtc_entry_size: __u16, +pub ndtc_entries: __u32, +pub ndtc_last_flush: __u32, +pub ndtc_last_rand: __u32, +pub ndtc_hash_rnd: __u32, +pub ndtc_hash_mask: __u32, +pub ndtc_hash_chain_gc: __u32, +pub ndtc_proxy_qlen: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtattr { +pub rta_len: crate::ctypes::c_ushort, +pub rta_type: crate::ctypes::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtmsg { +pub rtm_family: crate::ctypes::c_uchar, +pub rtm_dst_len: crate::ctypes::c_uchar, +pub rtm_src_len: crate::ctypes::c_uchar, +pub rtm_tos: crate::ctypes::c_uchar, +pub rtm_table: crate::ctypes::c_uchar, +pub rtm_protocol: crate::ctypes::c_uchar, +pub rtm_scope: crate::ctypes::c_uchar, +pub rtm_type: crate::ctypes::c_uchar, +pub rtm_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtnexthop { +pub rtnh_len: crate::ctypes::c_ushort, +pub rtnh_flags: crate::ctypes::c_uchar, +pub rtnh_hops: crate::ctypes::c_uchar, +pub rtnh_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug)] +pub struct rtvia { +pub rtvia_family: __kernel_sa_family_t, +pub rtvia_addr: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_cacheinfo { +pub rta_clntref: __u32, +pub rta_lastuse: __u32, +pub rta_expires: __s32, +pub rta_error: __u32, +pub rta_used: __u32, +pub rta_id: __u32, +pub rta_ts: __u32, +pub rta_tsage: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rta_session { +pub proto: __u8, +pub pad1: __u8, +pub pad2: __u16, +pub u: rta_session__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { +pub sport: __u16, +pub dport: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { +pub type_: __u8, +pub code: __u8, +pub ident: __u16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rta_mfc_stats { +pub mfcs_packets: __u64, +pub mfcs_bytes: __u64, +pub mfcs_wrong_if: __u64, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct rtgenmsg { +pub rtgen_family: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ifinfomsg { +pub ifi_family: crate::ctypes::c_uchar, +pub __ifi_pad: crate::ctypes::c_uchar, +pub ifi_type: crate::ctypes::c_ushort, +pub ifi_index: crate::ctypes::c_int, +pub ifi_flags: crate::ctypes::c_uint, +pub ifi_change: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefixmsg { +pub prefix_family: crate::ctypes::c_uchar, +pub prefix_pad1: crate::ctypes::c_uchar, +pub prefix_pad2: crate::ctypes::c_ushort, +pub prefix_ifindex: crate::ctypes::c_int, +pub prefix_type: crate::ctypes::c_uchar, +pub prefix_len: crate::ctypes::c_uchar, +pub prefix_flags: crate::ctypes::c_uchar, +pub prefix_pad3: crate::ctypes::c_uchar, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prefix_cacheinfo { +pub preferred_time: __u32, +pub valid_time: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcmsg { +pub tcm_family: crate::ctypes::c_uchar, +pub tcm__pad1: crate::ctypes::c_uchar, +pub tcm__pad2: crate::ctypes::c_ushort, +pub tcm_ifindex: crate::ctypes::c_int, +pub tcm_handle: __u32, +pub tcm_parent: __u32, +pub tcm_info: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct nduseroptmsg { +pub nduseropt_family: crate::ctypes::c_uchar, +pub nduseropt_pad1: crate::ctypes::c_uchar, +pub nduseropt_opts_len: crate::ctypes::c_ushort, +pub nduseropt_ifindex: crate::ctypes::c_int, +pub nduseropt_icmp_type: __u8, +pub nduseropt_icmp_code: __u8, +pub nduseropt_pad2: crate::ctypes::c_ushort, +pub nduseropt_pad3: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcamsg { +pub tca_family: crate::ctypes::c_uchar, +pub tca__pad1: crate::ctypes::c_uchar, +pub tca__pad2: crate::ctypes::c_ushort, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const NETLINK_ROUTE: u32 = 0; +pub const NETLINK_UNUSED: u32 = 1; +pub const NETLINK_USERSOCK: u32 = 2; +pub const NETLINK_FIREWALL: u32 = 3; +pub const NETLINK_SOCK_DIAG: u32 = 4; +pub const NETLINK_NFLOG: u32 = 5; +pub const NETLINK_XFRM: u32 = 6; +pub const NETLINK_SELINUX: u32 = 7; +pub const NETLINK_ISCSI: u32 = 8; +pub const NETLINK_AUDIT: u32 = 9; +pub const NETLINK_FIB_LOOKUP: u32 = 10; +pub const NETLINK_CONNECTOR: u32 = 11; +pub const NETLINK_NETFILTER: u32 = 12; +pub const NETLINK_IP6_FW: u32 = 13; +pub const NETLINK_DNRTMSG: u32 = 14; +pub const NETLINK_KOBJECT_UEVENT: u32 = 15; +pub const NETLINK_GENERIC: u32 = 16; +pub const NETLINK_SCSITRANSPORT: u32 = 18; +pub const NETLINK_ECRYPTFS: u32 = 19; +pub const NETLINK_RDMA: u32 = 20; +pub const NETLINK_CRYPTO: u32 = 21; +pub const NETLINK_SMC: u32 = 22; +pub const NETLINK_INET_DIAG: u32 = 4; +pub const MAX_LINKS: u32 = 32; +pub const NLM_F_REQUEST: u32 = 1; +pub const NLM_F_MULTI: u32 = 2; +pub const NLM_F_ACK: u32 = 4; +pub const NLM_F_ECHO: u32 = 8; +pub const NLM_F_DUMP_INTR: u32 = 16; +pub const NLM_F_DUMP_FILTERED: u32 = 32; +pub const NLM_F_ROOT: u32 = 256; +pub const NLM_F_MATCH: u32 = 512; +pub const NLM_F_ATOMIC: u32 = 1024; +pub const NLM_F_DUMP: u32 = 768; +pub const NLM_F_REPLACE: u32 = 256; +pub const NLM_F_EXCL: u32 = 512; +pub const NLM_F_CREATE: u32 = 1024; +pub const NLM_F_APPEND: u32 = 2048; +pub const NLM_F_NONREC: u32 = 256; +pub const NLM_F_BULK: u32 = 512; +pub const NLM_F_CAPPED: u32 = 256; +pub const NLM_F_ACK_TLVS: u32 = 512; +pub const NLMSG_ALIGNTO: u32 = 4; +pub const NLMSG_NOOP: u32 = 1; +pub const NLMSG_ERROR: u32 = 2; +pub const NLMSG_DONE: u32 = 3; +pub const NLMSG_OVERRUN: u32 = 4; +pub const NLMSG_MIN_TYPE: u32 = 16; +pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; +pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; +pub const NETLINK_PKTINFO: u32 = 3; +pub const NETLINK_BROADCAST_ERROR: u32 = 4; +pub const NETLINK_NO_ENOBUFS: u32 = 5; +pub const NETLINK_RX_RING: u32 = 6; +pub const NETLINK_TX_RING: u32 = 7; +pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; +pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; +pub const NETLINK_CAP_ACK: u32 = 10; +pub const NETLINK_EXT_ACK: u32 = 11; +pub const NETLINK_GET_STRICT_CHK: u32 = 12; +pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; +pub const NET_MAJOR: u32 = 36; +pub const NLA_F_NESTED: u32 = 32768; +pub const NLA_F_NET_BYTEORDER: u32 = 16384; +pub const NLA_TYPE_MASK: i32 = -49153; +pub const NLA_ALIGNTO: u32 = 4; +pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; +pub const MACVLAN_FLAG_NODST: u32 = 2; +pub const IPVLAN_F_PRIVATE: u32 = 1; +pub const IPVLAN_F_VEPA: u32 = 2; +pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; +pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; +pub const MAX_VLAN_LIST_LEN: u32 = 1; +pub const PORT_PROFILE_MAX: u32 = 40; +pub const PORT_UUID_MAX: u32 = 16; +pub const PORT_SELF_VF: i32 = -1; +pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; +pub const XDP_FLAGS_SKB_MODE: u32 = 2; +pub const XDP_FLAGS_DRV_MODE: u32 = 4; +pub const XDP_FLAGS_HW_MODE: u32 = 8; +pub const XDP_FLAGS_REPLACE: u32 = 16; +pub const XDP_FLAGS_MODES: u32 = 14; +pub const XDP_FLAGS_MASK: u32 = 31; +pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; +pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; +pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; +pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; +pub const IFA_F_SECONDARY: u32 = 1; +pub const IFA_F_TEMPORARY: u32 = 1; +pub const IFA_F_NODAD: u32 = 2; +pub const IFA_F_OPTIMISTIC: u32 = 4; +pub const IFA_F_DADFAILED: u32 = 8; +pub const IFA_F_HOMEADDRESS: u32 = 16; +pub const IFA_F_DEPRECATED: u32 = 32; +pub const IFA_F_TENTATIVE: u32 = 64; +pub const IFA_F_PERMANENT: u32 = 128; +pub const IFA_F_MANAGETEMPADDR: u32 = 256; +pub const IFA_F_NOPREFIXROUTE: u32 = 512; +pub const IFA_F_MCAUTOJOIN: u32 = 1024; +pub const IFA_F_STABLE_PRIVACY: u32 = 2048; +pub const IFAPROT_UNSPEC: u32 = 0; +pub const IFAPROT_KERNEL_LO: u32 = 1; +pub const IFAPROT_KERNEL_RA: u32 = 2; +pub const IFAPROT_KERNEL_LL: u32 = 3; +pub const NTF_USE: u32 = 1; +pub const NTF_SELF: u32 = 2; +pub const NTF_MASTER: u32 = 4; +pub const NTF_PROXY: u32 = 8; +pub const NTF_EXT_LEARNED: u32 = 16; +pub const NTF_OFFLOADED: u32 = 32; +pub const NTF_STICKY: u32 = 64; +pub const NTF_ROUTER: u32 = 128; +pub const NTF_EXT_MANAGED: u32 = 1; +pub const NTF_EXT_LOCKED: u32 = 2; +pub const NUD_INCOMPLETE: u32 = 1; +pub const NUD_REACHABLE: u32 = 2; +pub const NUD_STALE: u32 = 4; +pub const NUD_DELAY: u32 = 8; +pub const NUD_PROBE: u32 = 16; +pub const NUD_FAILED: u32 = 32; +pub const NUD_NOARP: u32 = 64; +pub const NUD_PERMANENT: u32 = 128; +pub const NUD_NONE: u32 = 0; +pub const RTNL_FAMILY_IPMR: u32 = 128; +pub const RTNL_FAMILY_IP6MR: u32 = 129; +pub const RTNL_FAMILY_MAX: u32 = 129; +pub const RTA_ALIGNTO: u32 = 4; +pub const RTPROT_UNSPEC: u32 = 0; +pub const RTPROT_REDIRECT: u32 = 1; +pub const RTPROT_KERNEL: u32 = 2; +pub const RTPROT_BOOT: u32 = 3; +pub const RTPROT_STATIC: u32 = 4; +pub const RTPROT_GATED: u32 = 8; +pub const RTPROT_RA: u32 = 9; +pub const RTPROT_MRT: u32 = 10; +pub const RTPROT_ZEBRA: u32 = 11; +pub const RTPROT_BIRD: u32 = 12; +pub const RTPROT_DNROUTED: u32 = 13; +pub const RTPROT_XORP: u32 = 14; +pub const RTPROT_NTK: u32 = 15; +pub const RTPROT_DHCP: u32 = 16; +pub const RTPROT_MROUTED: u32 = 17; +pub const RTPROT_KEEPALIVED: u32 = 18; +pub const RTPROT_BABEL: u32 = 42; +pub const RTPROT_OPENR: u32 = 99; +pub const RTPROT_BGP: u32 = 186; +pub const RTPROT_ISIS: u32 = 187; +pub const RTPROT_OSPF: u32 = 188; +pub const RTPROT_RIP: u32 = 189; +pub const RTPROT_EIGRP: u32 = 192; +pub const RTM_F_NOTIFY: u32 = 256; +pub const RTM_F_CLONED: u32 = 512; +pub const RTM_F_EQUALIZE: u32 = 1024; +pub const RTM_F_PREFIX: u32 = 2048; +pub const RTM_F_LOOKUP_TABLE: u32 = 4096; +pub const RTM_F_FIB_MATCH: u32 = 8192; +pub const RTM_F_OFFLOAD: u32 = 16384; +pub const RTM_F_TRAP: u32 = 32768; +pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; +pub const RTNH_F_DEAD: u32 = 1; +pub const RTNH_F_PERVASIVE: u32 = 2; +pub const RTNH_F_ONLINK: u32 = 4; +pub const RTNH_F_OFFLOAD: u32 = 8; +pub const RTNH_F_LINKDOWN: u32 = 16; +pub const RTNH_F_UNRESOLVED: u32 = 32; +pub const RTNH_F_TRAP: u32 = 64; +pub const RTNH_COMPARE_MASK: u32 = 89; +pub const RTNH_ALIGNTO: u32 = 4; +pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; +pub const RTAX_FEATURE_ECN: u32 = 1; +pub const RTAX_FEATURE_SACK: u32 = 2; +pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; +pub const RTAX_FEATURE_ALLFRAG: u32 = 8; +pub const RTAX_FEATURE_MASK: u32 = 15; +pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; +pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; +pub const RTMGRP_LINK: u32 = 1; +pub const RTMGRP_NOTIFY: u32 = 2; +pub const RTMGRP_NEIGH: u32 = 4; +pub const RTMGRP_TC: u32 = 8; +pub const RTMGRP_IPV4_IFADDR: u32 = 16; +pub const RTMGRP_IPV4_MROUTE: u32 = 32; +pub const RTMGRP_IPV4_ROUTE: u32 = 64; +pub const RTMGRP_IPV4_RULE: u32 = 128; +pub const RTMGRP_IPV6_IFADDR: u32 = 256; +pub const RTMGRP_IPV6_MROUTE: u32 = 512; +pub const RTMGRP_IPV6_ROUTE: u32 = 1024; +pub const RTMGRP_IPV6_IFINFO: u32 = 2048; +pub const RTMGRP_DECnet_IFADDR: u32 = 4096; +pub const RTMGRP_DECnet_ROUTE: u32 = 16384; +pub const RTMGRP_IPV6_PREFIX: u32 = 131072; +pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; +pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; +pub const RTEXT_FILTER_VF: u32 = 1; +pub const RTEXT_FILTER_BRVLAN: u32 = 2; +pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; +pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; +pub const RTEXT_FILTER_MRP: u32 = 16; +pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; +pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; +pub const RTEXT_FILTER_MST: u32 = 128; +pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; +pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; +pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; +pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; +pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; +pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; +pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; +pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; +pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; +pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; +pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; +pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; +pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; +pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; +pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; +pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; +pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; +pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; +pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; +pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; +pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; +pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; +pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; +pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; +pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; +pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; +pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; +pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; +pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; +pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; +pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; +pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; +pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; +pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; +pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; +pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; +pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; +pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; +pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; +pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; +pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; +pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; +pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; +pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; +pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; +pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; +pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; +pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; +pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; +pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; +pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; +pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; +pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; +pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; +pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; +pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; +pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; +pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; +pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; +pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; +pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; +pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; +pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; +pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; +pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; +pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; +pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; +pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; +pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; +pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; +pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; +pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; +pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; +pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; +pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; +pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; +pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; +pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; +pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; +pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; +pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; +pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; +pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; +pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; +pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; +pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; +pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; +pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; +pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; +pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; +pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; +pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; +pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; +pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; +pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; +pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; +pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; +pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; +pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; +pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; +pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; +pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; +pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; +pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; +pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; +pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; +pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; +pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; +pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; +pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; +pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; +pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; +pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; +pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; +pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; +pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; +pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; +pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; +pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; +pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; +pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; +pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; +pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; +pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; +pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; +pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; +pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; +pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; +pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; +pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; +pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; +pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; +pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; +pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; +pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; +pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; +pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; +pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; +pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; +pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; +pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; +pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; +pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; +pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; +pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; +pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; +pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; +pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; +pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; +pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; +pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; +pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; +pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; +pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; +pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; +pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; +pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; +pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; +pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; +pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; +pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; +pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; +pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; +pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; +pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; +pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; +pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; +pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; +pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; +pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; +pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; +pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; +pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; +pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; +pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; +pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; +pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; +pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; +pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; +pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; +pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; +pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; +pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; +pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; +pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; +pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; +pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; +pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; +pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; +pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; +pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; +pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; +pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; +pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; +pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; +pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; +pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; +pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; +pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; +pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; +pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; +pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; +pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; +pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; +pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; +pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; +pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; +pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; +pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; +pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; +pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; +pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; +pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; +pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; +pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; +pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; +pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; +pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; +pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; +pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; +pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; +pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; +pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; +pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; +pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; +pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; +pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; +pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; +pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; +pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; +pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; +pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; +pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; +pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; +pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; +pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; +pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; +pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; +pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; +pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; +pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; +pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; +pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; +pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; +pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; +pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; +pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; +pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; +pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; +pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; +pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; +pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; +pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; +pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; +pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; +pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; +pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; +pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; +pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; +pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; +pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; +pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; +pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; +pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; +pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; +pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; +pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; +pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; +pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; +pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; +pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; +pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; +pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; +pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; +pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; +pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; +pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; +pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; +pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; +pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; +pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; +pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; +pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; +pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; +pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; +pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; +pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; +pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; +pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; +pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; +pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; +pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; +pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; +pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; +pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; +pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; +pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; +pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; +pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; +pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; +pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; +pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; +pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; +pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; +pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; +pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; +pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; +pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; +pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; +pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; +pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; +pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; +pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; +pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; +pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; +pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; +pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; +pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; +pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; +pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; +pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; +pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; +pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; +pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; +pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; +pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; +pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; +pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; +pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; +pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; +pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; +pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; +pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; +pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; +pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; +pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; +pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; +pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; +pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; +pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; +pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; +pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; +pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; +pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; +pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; +pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; +pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; +pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; +pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; +pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; +pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; +pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; +pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; +pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; +pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; +pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; +pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; +pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; +pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; +pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; +pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; +pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; +pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; +pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; +pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; +pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; +pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; +pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; +pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; +pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; +pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; +pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; +pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; +pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; +pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; +pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; +pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; +pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; +pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; +pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; +pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; +pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; +pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; +pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; +pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; +pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; +pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; +pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; +pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; +pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; +pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; +pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; +pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; +pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; +pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; +pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; +pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; +pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; +pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; +pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; +pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; +pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; +pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; +pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; +pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; +pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; +pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; +pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; +pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; +pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; +pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; +pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; +pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; +pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; +pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; +pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; +pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; +pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; +pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; +pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; +pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; +pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; +pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; +pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; +pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; +pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; +pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; +pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; +pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; +pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; +pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; +pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; +pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; +pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; +pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; +pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; +pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; +pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; +pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; +pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; +pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; +pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; +pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; +pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; +pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; +pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; +pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; +pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; +pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; +pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; +pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; +pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; +pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; +pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; +pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; +pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; +pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; +pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; +pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; +pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; +pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; +pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; +pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; +pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; +pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; +pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; +pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; +pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; +pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; +pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; +pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; +pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; +pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; +pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; +pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; +pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; +pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; +pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; +pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; +pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; +pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; +pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; +pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; +pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; +pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; +pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; +pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; +pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; +pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; +pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; +pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; +pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; +pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; +pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; +pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; +pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; +pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; +pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; +pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; +pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; +pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; +pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; +pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; +pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; +pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; +pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; +pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; +pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; +pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; +pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; +pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; +pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; +pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; +pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; +pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; +pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; +pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; +pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; +pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; +pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; +pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; +pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; +pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; +pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; +pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; +pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; +pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; +pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; +pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; +pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; +pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; +pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; +pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; +pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; +pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; +pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; +pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; +pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; +pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; +pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; +pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; +pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; +pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; +pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; +pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; +pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; +pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; +pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; +pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; +pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; +pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; +pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; +pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; +pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; +pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; +pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; +pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; +pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; +pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; +pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; +pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; +pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; +pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; +pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; +pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; +pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; +pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; +pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; +pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; +pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; +pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; +pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; +pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; +pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; +pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; +pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; +pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; +pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; +pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; +pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; +pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; +pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; +pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; +pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; +pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; +pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; +pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; +pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; +pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; +pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; +pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; +pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; +pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; +pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; +pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; +pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; +pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; +pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; +pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; +pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; +pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; +pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; +pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; +pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; +pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; +pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; +pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; +pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; +pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; +pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; +pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; +pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; +pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; +pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; +pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; +pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; +pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; +pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; +pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; +pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; +pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; +pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; +pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; +pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; +pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; +pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; +pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; +pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; +pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; +pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; +pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; +pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; +pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; +pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; +pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; +pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; +pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; +pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; +pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; +pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; +pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; +pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; +pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; +pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; +pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; +pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; +pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; +pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; +pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; +pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; +pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; +pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; +pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; +pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; +pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; +pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; +pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; +pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; +pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; +pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; +pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; +pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; +pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; +pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; +pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; +pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; +pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; +pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; +pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; +pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; +pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; +pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; +pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; +pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; +pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; +pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; +pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; +pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; +pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; +pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; +pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; +pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; +pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; +pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; +pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; +pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; +pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; +pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; +pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; +pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; +pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; +pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; +pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; +pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; +pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; +pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; +pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; +pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; +pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; +pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; +pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; +pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; +pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; +pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; +pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; +pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; +pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; +pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; +pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; +pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; +pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; +pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; +pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; +pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; +pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; +pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; +pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -365,29 +1500,6 @@ NLMSGERR_ATTR_MISS_NEST = 6, __NLMSGERR_ATTR_MAX = 7, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_pktinfo { -pub group: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_req { -pub nm_block_size: crate::ctypes::c_uint, -pub nm_block_nr: crate::ctypes::c_uint, -pub nm_frame_size: crate::ctypes::c_uint, -pub nm_frame_nr: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nl_mmap_hdr { -pub nm_status: crate::ctypes::c_uint, -pub nm_len: crate::ctypes::c_uint, -pub nm_group: __u32, -pub nm_pid: __u32, -pub nm_uid: __u32, -pub nm_gid: __u32, -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -398,8 +1510,6 @@ NL_MMAP_STATUS_COPY = 3, NL_MMAP_STATUS_SKIP = 4, } -pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; -pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -407,208 +1517,46 @@ NETLINK_UNCONNECTED = 0, NETLINK_CONNECTED = 1, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nlattr { -pub nla_len: __u16, -pub nla_type: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nla_bitfield32 { -pub value: __u32, -pub selector: __u32, -} -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_attribute_type { -NL_ATTR_TYPE_INVALID = 0, -NL_ATTR_TYPE_FLAG = 1, -NL_ATTR_TYPE_U8 = 2, -NL_ATTR_TYPE_U16 = 3, -NL_ATTR_TYPE_U32 = 4, -NL_ATTR_TYPE_U64 = 5, -NL_ATTR_TYPE_S8 = 6, -NL_ATTR_TYPE_S16 = 7, -NL_ATTR_TYPE_S32 = 8, -NL_ATTR_TYPE_S64 = 9, -NL_ATTR_TYPE_BINARY = 10, -NL_ATTR_TYPE_STRING = 11, -NL_ATTR_TYPE_NUL_STRING = 12, -NL_ATTR_TYPE_NESTED = 13, -NL_ATTR_TYPE_NESTED_ARRAY = 14, -NL_ATTR_TYPE_BITFIELD32 = 15, -} -impl netlink_policy_type_attr { -pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum netlink_policy_type_attr { -NL_POLICY_TYPE_ATTR_UNSPEC = 0, -NL_POLICY_TYPE_ATTR_TYPE = 1, -NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, -NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, -NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, -NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, -NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, -NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, -NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, -NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, -NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, -NL_POLICY_TYPE_ATTR_PAD = 11, -NL_POLICY_TYPE_ATTR_MASK = 12, -__NL_POLICY_TYPE_ATTR_MAX = 13, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats { -pub rx_packets: __u32, -pub tx_packets: __u32, -pub rx_bytes: __u32, -pub tx_bytes: __u32, -pub rx_errors: __u32, -pub tx_errors: __u32, -pub rx_dropped: __u32, -pub tx_dropped: __u32, -pub multicast: __u32, -pub collisions: __u32, -pub rx_length_errors: __u32, -pub rx_over_errors: __u32, -pub rx_crc_errors: __u32, -pub rx_frame_errors: __u32, -pub rx_fifo_errors: __u32, -pub rx_missed_errors: __u32, -pub tx_aborted_errors: __u32, -pub tx_carrier_errors: __u32, -pub tx_fifo_errors: __u32, -pub tx_heartbeat_errors: __u32, -pub tx_window_errors: __u32, -pub rx_compressed: __u32, -pub tx_compressed: __u32, -pub rx_nohandler: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, -pub collisions: __u64, -pub rx_length_errors: __u64, -pub rx_over_errors: __u64, -pub rx_crc_errors: __u64, -pub rx_frame_errors: __u64, -pub rx_fifo_errors: __u64, -pub rx_missed_errors: __u64, -pub tx_aborted_errors: __u64, -pub tx_carrier_errors: __u64, -pub tx_fifo_errors: __u64, -pub tx_heartbeat_errors: __u64, -pub tx_window_errors: __u64, -pub rx_compressed: __u64, -pub tx_compressed: __u64, -pub rx_nohandler: __u64, -pub rx_otherhost_dropped: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_hw_stats64 { -pub rx_packets: __u64, -pub tx_packets: __u64, -pub rx_bytes: __u64, -pub tx_bytes: __u64, -pub rx_errors: __u64, -pub tx_errors: __u64, -pub rx_dropped: __u64, -pub tx_dropped: __u64, -pub multicast: __u64, +pub enum netlink_attribute_type { +NL_ATTR_TYPE_INVALID = 0, +NL_ATTR_TYPE_FLAG = 1, +NL_ATTR_TYPE_U8 = 2, +NL_ATTR_TYPE_U16 = 3, +NL_ATTR_TYPE_U32 = 4, +NL_ATTR_TYPE_U64 = 5, +NL_ATTR_TYPE_S8 = 6, +NL_ATTR_TYPE_S16 = 7, +NL_ATTR_TYPE_S32 = 8, +NL_ATTR_TYPE_S64 = 9, +NL_ATTR_TYPE_BINARY = 10, +NL_ATTR_TYPE_STRING = 11, +NL_ATTR_TYPE_NUL_STRING = 12, +NL_ATTR_TYPE_NESTED = 13, +NL_ATTR_TYPE_NESTED_ARRAY = 14, +NL_ATTR_TYPE_BITFIELD32 = 15, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnl_link_ifmap { -pub mem_start: __u64, -pub mem_end: __u64, -pub base_addr: __u64, -pub irq: __u16, -pub dma: __u8, -pub port: __u8, +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum netlink_policy_type_attr { +NL_POLICY_TYPE_ATTR_UNSPEC = 0, +NL_POLICY_TYPE_ATTR_TYPE = 1, +NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, +NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, +NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, +NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, +NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, +NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, +NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, +NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, +NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, +NL_POLICY_TYPE_ATTR_PAD = 11, +NL_POLICY_TYPE_ATTR_MASK = 12, +__NL_POLICY_TYPE_ATTR_MAX = 13, } -pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; -pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; -pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; -pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; -pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; -pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; -pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; -pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; -pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; -pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; -pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; -pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; -pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; -pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; -pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; -pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; -pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; -pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; -pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; -pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; -pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; -pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; -pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; -pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; -pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; -pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; -pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; -pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; -pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; -pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; -pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; -pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; -pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; -pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; -pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; -pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; -pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; -pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; -pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; -pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; -pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; -pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; -pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; -pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; -pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; -pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; -pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; -pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; -pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; -pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; -pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; -pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; -pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; -pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; -pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; -pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; -pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; -pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; -pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; -pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; -pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; -pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; -pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; -pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE; -pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE; -pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -680,11 +1628,6 @@ IFLA_GRO_IPV4_MAX_SIZE = 64, __IFLA_MAX = 65, } -pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; -pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; -pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; -pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; -pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -694,9 +1637,6 @@ IFLA_PROTO_DOWN_REASON_VALUE = 2, __IFLA_PROTO_DOWN_REASON_CNT = 3, } -pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; -pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; -pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -705,17 +1645,6 @@ IFLA_INET_CONF = 1, __IFLA_INET_MAX = 2, } -pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; -pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; -pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; -pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; -pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; -pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; -pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; -pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; -pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; -pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; -pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -741,55 +1670,6 @@ IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, IN6_ADDR_GEN_MODE_RANDOM = 3, } -pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; -pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; -pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; -pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; -pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; -pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; -pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; -pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; -pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; -pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; -pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; -pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; -pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; -pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; -pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; -pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; -pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; -pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; -pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; -pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; -pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; -pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; -pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; -pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; -pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; -pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; -pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; -pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; -pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; -pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; -pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; -pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; -pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; -pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; -pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; -pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; -pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; -pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; -pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; -pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; -pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; -pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; -pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; -pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; -pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; -pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; -pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; -pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; -pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -826,83 +1706,31 @@ IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29, IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30, IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, -IFLA_BR_MCAST_QUERIER_INTVL = 32, -IFLA_BR_MCAST_QUERY_INTVL = 33, -IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, -IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, -IFLA_BR_NF_CALL_IPTABLES = 36, -IFLA_BR_NF_CALL_IP6TABLES = 37, -IFLA_BR_NF_CALL_ARPTABLES = 38, -IFLA_BR_VLAN_DEFAULT_PVID = 39, -IFLA_BR_PAD = 40, -IFLA_BR_VLAN_STATS_ENABLED = 41, -IFLA_BR_MCAST_STATS_ENABLED = 42, -IFLA_BR_MCAST_IGMP_VERSION = 43, -IFLA_BR_MCAST_MLD_VERSION = 44, -IFLA_BR_VLAN_STATS_PER_PORT = 45, -IFLA_BR_MULTI_BOOLOPT = 46, -IFLA_BR_MCAST_QUERIER_STATE = 47, -__IFLA_BR_MAX = 48, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_bridge_id { -pub prio: [__u8; 2usize], -pub addr: [__u8; 6usize], -} -pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; -pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; -#[repr(u32)] -#[non_exhaustive] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_7 { -BRIDGE_MODE_UNSPEC = 0, -BRIDGE_MODE_HAIRPIN = 1, -} -pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; -pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; -pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; -pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; -pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; -pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; -pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; -pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; -pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; -pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; -pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; -pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; -pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; -pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; -pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; -pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; -pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; -pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; -pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; -pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; -pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; -pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; -pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; -pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; -pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; -pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; -pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; -pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; -pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; -pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; -pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; -pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; -pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; -pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; -pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; -pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; -pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; -pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; -pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; -pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; -pub const IFLA_BRPORT_MCAST_N_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_N_GROUPS; -pub const IFLA_BRPORT_MCAST_MAX_GROUPS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_MAX_GROUPS; -pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; +IFLA_BR_MCAST_QUERIER_INTVL = 32, +IFLA_BR_MCAST_QUERY_INTVL = 33, +IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, +IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, +IFLA_BR_NF_CALL_IPTABLES = 36, +IFLA_BR_NF_CALL_IP6TABLES = 37, +IFLA_BR_NF_CALL_ARPTABLES = 38, +IFLA_BR_VLAN_DEFAULT_PVID = 39, +IFLA_BR_PAD = 40, +IFLA_BR_VLAN_STATS_ENABLED = 41, +IFLA_BR_MCAST_STATS_ENABLED = 42, +IFLA_BR_MCAST_IGMP_VERSION = 43, +IFLA_BR_MCAST_MLD_VERSION = 44, +IFLA_BR_VLAN_STATS_PER_PORT = 45, +IFLA_BR_MULTI_BOOLOPT = 46, +IFLA_BR_MCAST_QUERIER_STATE = 47, +__IFLA_BR_MAX = 48, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { +BRIDGE_MODE_UNSPEC = 0, +BRIDGE_MODE_HAIRPIN = 1, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -952,21 +1780,6 @@ IFLA_BRPORT_MCAST_MAX_GROUPS = 42, __IFLA_BRPORT_MAX = 43, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_cacheinfo { -pub max_reasm_len: __u32, -pub tstamp: __u32, -pub reachable_time: __u32, -pub retrans_time: __u32, -} -pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; -pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; -pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; -pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; -pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; -pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; -pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -979,13 +1792,6 @@ IFLA_INFO_SLAVE_DATA = 5, __IFLA_INFO_MAX = 6, } -pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; -pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; -pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; -pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; -pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; -pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; -pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -998,15 +1804,6 @@ IFLA_VLAN_PROTOCOL = 5, __IFLA_VLAN_MAX = 6, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; -pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; -pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1015,22 +1812,6 @@ IFLA_VLAN_QOS_MAPPING = 1, __IFLA_VLAN_QOS_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vlan_qos_mapping { -pub from: __u32, -pub to: __u32, -} -pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; -pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; -pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; -pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; -pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; -pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; -pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; -pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; -pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; -pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1065,9 +1846,6 @@ MACVLAN_MACADDR_FLUSH = 2, MACVLAN_MACADDR_SET = 3, } -pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; -pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; -pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1076,9 +1854,6 @@ IFLA_VRF_TABLE = 1, __IFLA_VRF_MAX = 2, } -pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; -pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; -pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1087,23 +1862,6 @@ IFLA_VRF_PORT_TABLE = 1, __IFLA_VRF_PORT_MAX = 2, } -pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; -pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; -pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; -pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; -pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; -pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; -pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; -pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; -pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; -pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; -pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; -pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; -pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; -pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; -pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; -pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; -pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1126,11 +1884,6 @@ IFLA_MACSEC_OFFLOAD = 15, __IFLA_MACSEC_MAX = 16, } -pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; -pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; -pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; -pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; -pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1141,9 +1894,6 @@ IFLA_XFRM_COLLECT_METADATA = 3, __IFLA_XFRM_MAX = 4, } -impl macsec_validation_type { -pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1153,9 +1903,6 @@ MACSEC_VALIDATE_STRICT = 2, __MACSEC_VALIDATE_END = 3, } -impl macsec_offload { -pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1165,10 +1912,6 @@ MACSEC_OFFLOAD_MAC = 2, __MACSEC_OFFLOAD_END = 3, } -pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; -pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; -pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; -pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1187,25 +1930,6 @@ IPVLAN_MODE_L3S = 2, IPVLAN_MODE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tunnel_msg { -pub family: __u8, -pub flags: __u8, -pub reserved2: __u16, -pub ifindex: __u32, -} -pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; -pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; -pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; -pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; -pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; -pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; -pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; -pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; -pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; -pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1222,13 +1946,6 @@ VNIFILTER_ENTRY_STATS_PAD = 9, __VNIFILTER_ENTRY_STATS_MAX = 10, } -pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; -pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; -pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; -pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; -pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; -pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1241,9 +1958,6 @@ VXLAN_VNIFILTER_ENTRY_STATS = 5, __VXLAN_VNIFILTER_ENTRY_MAX = 6, } -pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; -pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; -pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1252,38 +1966,6 @@ VXLAN_VNIFILTER_ENTRY = 1, __VXLAN_VNIFILTER_MAX = 2, } -pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; -pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; -pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; -pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; -pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; -pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; -pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; -pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; -pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; -pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; -pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; -pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; -pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; -pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; -pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; -pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; -pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; -pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; -pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; -pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; -pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; -pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; -pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; -pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; -pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; -pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; -pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; -pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; -pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; -pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; -pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1321,15 +2003,6 @@ IFLA_VXLAN_VNIFILTER = 30, __IFLA_VXLAN_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vxlan_port_range { -pub low: __be16, -pub high: __be16, -} -impl ifla_vxlan_df { -pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1339,22 +2012,6 @@ VXLAN_DF_INHERIT = 2, __VXLAN_DF_END = 3, } -pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; -pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; -pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; -pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; -pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; -pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; -pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; -pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; -pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; -pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; -pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; -pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; -pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; -pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; -pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1376,9 +2033,6 @@ IFLA_GENEVE_INNER_PROTO_INHERIT = 14, __IFLA_GENEVE_MAX = 15, } -impl ifla_geneve_df { -pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; -} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1388,12 +2042,6 @@ GENEVE_DF_INHERIT = 2, __GENEVE_DF_END = 3, } -pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; -pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; -pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; -pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; -pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; -pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1405,9 +2053,6 @@ IFLA_BAREUDP_MULTIPROTO_MODE = 4, __IFLA_BAREUDP_MAX = 5, } -pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; -pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; -pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1423,60 +2068,19 @@ GTP_ROLE_GGSN = 0, GTP_ROLE_SGSN = 1, } -pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; -pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; -pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; -pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; -pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; -pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; -pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; -pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] pub enum _bindgen_ty_25 { IFLA_GTP_UNSPEC = 0, IFLA_GTP_FD0 = 1, -IFLA_GTP_FD1 = 2, -IFLA_GTP_PDP_HASHSIZE = 3, -IFLA_GTP_ROLE = 4, -IFLA_GTP_CREATE_SOCKETS = 5, -IFLA_GTP_RESTART_COUNT = 6, -__IFLA_GTP_MAX = 7, -} -pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; -pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; -pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; -pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; -pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; -pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; -pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; -pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; -pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; -pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; -pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; -pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; -pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; -pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; -pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; -pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; -pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; -pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; -pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; -pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; -pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; -pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; -pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; -pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; -pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; -pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; -pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; -pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; -pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; -pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; -pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; -pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; -pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; +IFLA_GTP_FD1 = 2, +IFLA_GTP_PDP_HASHSIZE = 3, +IFLA_GTP_ROLE = 4, +IFLA_GTP_CREATE_SOCKETS = 5, +IFLA_GTP_RESTART_COUNT = 6, +__IFLA_GTP_MAX = 7, +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1515,13 +2119,6 @@ IFLA_BOND_NS_IP6_TARGET = 31, __IFLA_BOND_MAX = 32, } -pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; -pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; -pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; -pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; -pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; -pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1534,17 +2131,6 @@ IFLA_BOND_AD_INFO_PARTNER_MAC = 5, __IFLA_BOND_AD_INFO_MAX = 6, } -pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; -pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; -pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; -pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; -pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; -pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; -pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; -pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; -pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; -pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1561,9 +2147,6 @@ IFLA_BOND_SLAVE_PRIO = 9, __IFLA_BOND_SLAVE_MAX = 10, } -pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; -pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; -pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1572,21 +2155,6 @@ IFLA_VF_INFO = 1, __IFLA_VF_INFO_MAX = 2, } -pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; -pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; -pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; -pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; -pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; -pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; -pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; -pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; -pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; -pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; -pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; -pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; -pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; -pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; -pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1607,27 +2175,6 @@ IFLA_VF_BROADCAST = 13, __IFLA_VF_MAX = 14, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_mac { -pub vf: __u32, -pub mac: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_broadcast { -pub broadcast: [__u8; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -} -pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; -pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; -pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1636,43 +2183,6 @@ IFLA_VF_VLAN_INFO = 1, __IFLA_VF_VLAN_INFO_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_vlan_info { -pub vf: __u32, -pub vlan: __u32, -pub qos: __u32, -pub vlan_proto: __be16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_tx_rate { -pub vf: __u32, -pub rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rate { -pub vf: __u32, -pub min_tx_rate: __u32, -pub max_tx_rate: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_spoofchk { -pub vf: __u32, -pub setting: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_guid { -pub vf: __u32, -pub guid: __u64, -} -pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; -pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; -pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; -pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1682,28 +2192,6 @@ IFLA_VF_LINK_STATE_DISABLE = 2, __IFLA_VF_LINK_STATE_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_link_state { -pub vf: __u32, -pub link_state: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_rss_query_en { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; -pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; -pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; -pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; -pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; -pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; -pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; -pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; -pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; -pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1719,15 +2207,6 @@ IFLA_VF_STATS_TX_DROPPED = 8, __IFLA_VF_STATS_MAX = 9, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_vf_trust { -pub vf: __u32, -pub setting: __u32, -} -pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; -pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; -pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1736,15 +2215,6 @@ IFLA_VF_PORT = 1, __IFLA_VF_PORT_MAX = 2, } -pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; -pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; -pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; -pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; -pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; -pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; -pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; -pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; -pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1759,10 +2229,6 @@ IFLA_PORT_RESPONSE = 7, __IFLA_PORT_MAX = 8, } -pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; -pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; -pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; -pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1772,19 +2238,6 @@ PORT_REQUEST_ASSOCIATE = 2, PORT_REQUEST_DISASSOCIATE = 3, } -pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; -pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; -pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; -pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; -pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; -pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; -pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; -pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; -pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; -pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; -pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; -pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1803,19 +2256,6 @@ PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, PORT_PROFILE_RESPONSE_ERROR = 261, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_port_vsi { -pub vsi_mgr_id: __u8, -pub vsi_type_id: [__u8; 3usize], -pub vsi_type_version: __u8, -pub pad: [__u8; 3usize], -} -pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; -pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; -pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; -pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; -pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1826,8 +2266,6 @@ IFLA_IPOIB_UMCAST = 3, __IFLA_IPOIB_MAX = 4, } -pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; -pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1835,9 +2273,6 @@ IPOIB_MODE_DATAGRAM = 0, IPOIB_MODE_CONNECTED = 1, } -pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; -pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; -pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1846,15 +2281,6 @@ HSR_PROTOCOL_PRP = 1, HSR_PROTOCOL_MAX = 2, } -pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; -pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; -pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; -pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; -pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; -pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; -pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; -pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; -pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1869,22 +2295,6 @@ IFLA_HSR_PROTOCOL = 7, __IFLA_HSR_MAX = 8, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_stats_msg { -pub family: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub ifindex: __u32, -pub filter_mask: __u32, -} -pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; -pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; -pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; -pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; -pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; -pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; -pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1897,10 +2307,6 @@ IFLA_STATS_AF_SPEC = 5, __IFLA_STATS_MAX = 6, } -pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; -pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; -pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1910,10 +2316,6 @@ IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, __IFLA_STATS_GETSET_MAX = 3, } -pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; -pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; -pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; -pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1923,11 +2325,6 @@ LINK_XSTATS_TYPE_BOND = 2, __LINK_XSTATS_TYPE_MAX = 3, } -pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; -pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; -pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1938,10 +2335,6 @@ IFLA_OFFLOAD_XSTATS_L3_STATS = 3, __IFLA_OFFLOAD_XSTATS_MAX = 4, } -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; -pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; -pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1951,11 +2344,6 @@ IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, } -pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; -pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; -pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; -pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; -pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1966,16 +2354,6 @@ XDP_ATTACHED_HW = 3, XDP_ATTACHED_MULTI = 4, } -pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; -pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; -pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; -pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; -pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; -pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; -pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; -pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; -pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; -pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -1991,13 +2369,6 @@ IFLA_XDP_EXPECTED_FD = 8, __IFLA_XDP_MAX = 9, } -pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; -pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; -pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; -pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; -pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; -pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; -pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2010,17 +2381,6 @@ IFLA_EVENT_IGMP_RESEND = 5, IFLA_EVENT_BONDING_OPTIONS = 6, } -pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; -pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; -pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; -pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; -pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; -pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; -pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; -pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; -pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; -pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; -pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2036,11 +2396,7 @@ IFLA_TUN_NUM_QUEUES = 8, IFLA_TUN_NUM_DISABLED_QUEUES = 9, __IFLA_TUN_MAX = 10, -} -pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; -pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; -pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; -pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; +} #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2050,15 +2406,6 @@ IFLA_RMNET_FLAGS = 2, __IFLA_RMNET_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifla_rmnet_flags { -pub flags: __u32, -pub mask: __u32, -} -pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; -pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; -pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2067,9 +2414,6 @@ IFLA_MCTP_NET = 1, __IFLA_MCTP_MAX = 2, } -pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; -pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; -pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2078,28 +2422,6 @@ IFLA_DSA_MASTER = 1, __IFLA_DSA_MAX = 2, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifaddrmsg { -pub ifa_family: __u8, -pub ifa_prefixlen: __u8, -pub ifa_flags: __u8, -pub ifa_scope: __u8, -pub ifa_index: __u32, -} -pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; -pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; -pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; -pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; -pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; -pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; -pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; -pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; -pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; -pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; -pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; -pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; -pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2118,44 +2440,6 @@ IFA_PROTO = 11, __IFA_MAX = 12, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifa_cacheinfo { -pub ifa_prefered: __u32, -pub ifa_valid: __u32, -pub cstamp: __u32, -pub tstamp: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndmsg { -pub ndm_family: __u8, -pub ndm_pad1: __u8, -pub ndm_pad2: __u16, -pub ndm_ifindex: __s32, -pub ndm_state: __u16, -pub ndm_flags: __u8, -pub ndm_type: __u8, -} -pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; -pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; -pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; -pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; -pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; -pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; -pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; -pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; -pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; -pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; -pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; -pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; -pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; -pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; -pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; -pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; -pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; -pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; -pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2180,50 +2464,6 @@ NDA_NDM_FLAGS_MASK = 17, __NDA_MAX = 18, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nda_cacheinfo { -pub ndm_confirmed: __u32, -pub ndm_used: __u32, -pub ndm_updated: __u32, -pub ndm_refcnt: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_stats { -pub ndts_allocs: __u64, -pub ndts_destroys: __u64, -pub ndts_hash_grows: __u64, -pub ndts_res_failed: __u64, -pub ndts_lookups: __u64, -pub ndts_hits: __u64, -pub ndts_rcv_probes_mcast: __u64, -pub ndts_rcv_probes_ucast: __u64, -pub ndts_periodic_gc_runs: __u64, -pub ndts_forced_gc_runs: __u64, -pub ndts_table_fulls: __u64, -} -pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; -pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; -pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; -pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; -pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; -pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; -pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; -pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; -pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; -pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; -pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; -pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; -pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; -pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; -pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; -pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; -pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; -pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; -pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; -pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; -pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2250,37 +2490,6 @@ NDTPA_INTERVAL_PROBE_TIME_MS = 19, __NDTPA_MAX = 20, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndtmsg { -pub ndtm_family: __u8, -pub ndtm_pad1: __u8, -pub ndtm_pad2: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ndt_config { -pub ndtc_key_len: __u16, -pub ndtc_entry_size: __u16, -pub ndtc_entries: __u32, -pub ndtc_last_flush: __u32, -pub ndtc_last_rand: __u32, -pub ndtc_hash_rnd: __u32, -pub ndtc_hash_mask: __u32, -pub ndtc_hash_chain_gc: __u32, -pub ndtc_proxy_qlen: __u32, -} -pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; -pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; -pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; -pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; -pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; -pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; -pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; -pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; -pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; -pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; -pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2297,8 +2506,6 @@ NDTA_PAD = 9, __NDTA_MAX = 10, } -pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; -pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2306,10 +2513,6 @@ FDB_NOTIFY_BIT = 1, FDB_NOTIFY_INACTIVE_BIT = 2, } -pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; -pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; -pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; -pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2319,79 +2522,6 @@ NFEA_DONT_REFRESH = 2, __NFEA_MAX = 3, } -pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; -pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; -pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; -pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; -pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; -pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; -pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; -pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; -pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; -pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; -pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; -pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; -pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; -pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; -pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; -pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; -pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; -pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; -pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; -pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; -pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; -pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; -pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; -pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; -pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; -pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; -pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; -pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; -pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; -pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; -pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; -pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; -pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; -pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; -pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; -pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; -pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; -pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; -pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; -pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; -pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; -pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; -pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; -pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; -pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; -pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; -pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; -pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; -pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; -pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; -pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; -pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; -pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; -pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; -pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; -pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; -pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; -pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; -pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; -pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; -pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; -pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; -pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; -pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; -pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; -pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; -pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; -pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; -pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; -pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; -pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; -pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2458,49 +2588,17 @@ RTM_NEWLINKPROP = 108, RTM_DELLINKPROP = 109, RTM_GETLINKPROP = 110, -RTM_NEWVLAN = 112, -RTM_DELVLAN = 113, -RTM_GETVLAN = 114, -RTM_NEWNEXTHOPBUCKET = 116, -RTM_DELNEXTHOPBUCKET = 117, -RTM_GETNEXTHOPBUCKET = 118, -RTM_NEWTUNNEL = 120, -RTM_DELTUNNEL = 121, -RTM_GETTUNNEL = 122, -__RTM_MAX = 123, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtattr { -pub rta_len: crate::ctypes::c_ushort, -pub rta_type: crate::ctypes::c_ushort, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtmsg { -pub rtm_family: crate::ctypes::c_uchar, -pub rtm_dst_len: crate::ctypes::c_uchar, -pub rtm_src_len: crate::ctypes::c_uchar, -pub rtm_tos: crate::ctypes::c_uchar, -pub rtm_table: crate::ctypes::c_uchar, -pub rtm_protocol: crate::ctypes::c_uchar, -pub rtm_scope: crate::ctypes::c_uchar, -pub rtm_type: crate::ctypes::c_uchar, -pub rtm_flags: crate::ctypes::c_uint, +RTM_NEWVLAN = 112, +RTM_DELVLAN = 113, +RTM_GETVLAN = 114, +RTM_NEWNEXTHOPBUCKET = 116, +RTM_DELNEXTHOPBUCKET = 117, +RTM_GETNEXTHOPBUCKET = 118, +RTM_NEWTUNNEL = 120, +RTM_DELTUNNEL = 121, +RTM_GETTUNNEL = 122, +__RTM_MAX = 123, } -pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; -pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; -pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; -pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; -pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; -pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; -pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; -pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; -pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; -pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; -pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; -pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; -pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2577,51 +2675,6 @@ RTA_NH_ID = 30, __RTA_MAX = 31, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtnexthop { -pub rtnh_len: crate::ctypes::c_ushort, -pub rtnh_flags: crate::ctypes::c_uchar, -pub rtnh_hops: crate::ctypes::c_uchar, -pub rtnh_ifindex: crate::ctypes::c_int, -} -#[repr(C)] -#[derive(Debug)] -pub struct rtvia { -pub rtvia_family: __kernel_sa_family_t, -pub rtvia_addr: __IncompleteArrayField<__u8>, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_cacheinfo { -pub rta_clntref: __u32, -pub rta_lastuse: __u32, -pub rta_expires: __s32, -pub rta_error: __u32, -pub rta_used: __u32, -pub rta_id: __u32, -pub rta_ts: __u32, -pub rta_tsage: __u32, -} -pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; -pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; -pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; -pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; -pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; -pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; -pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; -pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; -pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; -pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; -pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; -pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; -pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; -pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; -pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; -pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; -pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; -pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; -pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2646,72 +2699,6 @@ RTAX_FASTOPEN_NO_COOKIE = 17, __RTAX_MAX = 18, } -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rta_session { -pub proto: __u8, -pub pad1: __u8, -pub pad2: __u16, -pub u: rta_session__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union rta_session__bindgen_ty_1 { -pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, -pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, -pub spi: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { -pub sport: __u16, -pub dport: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { -pub type_: __u8, -pub code: __u8, -pub ident: __u16, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rta_mfc_stats { -pub mfcs_packets: __u64, -pub mfcs_bytes: __u64, -pub mfcs_wrong_if: __u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtgenmsg { -pub rtgen_family: crate::ctypes::c_uchar, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifinfomsg { -pub ifi_family: crate::ctypes::c_uchar, -pub __ifi_pad: crate::ctypes::c_uchar, -pub ifi_type: crate::ctypes::c_ushort, -pub ifi_index: crate::ctypes::c_int, -pub ifi_flags: crate::ctypes::c_uint, -pub ifi_change: crate::ctypes::c_uint, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefixmsg { -pub prefix_family: crate::ctypes::c_uchar, -pub prefix_pad1: crate::ctypes::c_uchar, -pub prefix_pad2: crate::ctypes::c_ushort, -pub prefix_ifindex: crate::ctypes::c_int, -pub prefix_type: crate::ctypes::c_uchar, -pub prefix_len: crate::ctypes::c_uchar, -pub prefix_flags: crate::ctypes::c_uchar, -pub prefix_pad3: crate::ctypes::c_uchar, -} -pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; -pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; -pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; -pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2721,41 +2708,6 @@ PREFIX_CACHEINFO = 2, __PREFIX_MAX = 3, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct prefix_cacheinfo { -pub preferred_time: __u32, -pub valid_time: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcmsg { -pub tcm_family: crate::ctypes::c_uchar, -pub tcm__pad1: crate::ctypes::c_uchar, -pub tcm__pad2: crate::ctypes::c_ushort, -pub tcm_ifindex: crate::ctypes::c_int, -pub tcm_handle: __u32, -pub tcm_parent: __u32, -pub tcm_info: __u32, -} -pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; -pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; -pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; -pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; -pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; -pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; -pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; -pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; -pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; -pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; -pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; -pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; -pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; -pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; -pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; -pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; -pub const TCA_EXT_WARN_MSG: _bindgen_ty_64 = _bindgen_ty_64::TCA_EXT_WARN_MSG; -pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2779,21 +2731,6 @@ TCA_EXT_WARN_MSG = 16, __TCA_MAX = 17, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nduseroptmsg { -pub nduseropt_family: crate::ctypes::c_uchar, -pub nduseropt_pad1: crate::ctypes::c_uchar, -pub nduseropt_opts_len: crate::ctypes::c_ushort, -pub nduseropt_ifindex: crate::ctypes::c_int, -pub nduseropt_icmp_type: __u8, -pub nduseropt_icmp_code: __u8, -pub nduseropt_pad2: crate::ctypes::c_ushort, -pub nduseropt_pad3: crate::ctypes::c_uint, -} -pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; -pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; -pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2845,20 +2782,6 @@ RTNLGRP_STATS = 36, __RTNLGRP_MAX = 37, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcamsg { -pub tca_family: crate::ctypes::c_uchar, -pub tca__pad1: crate::ctypes::c_uchar, -pub tca__pad2: crate::ctypes::c_ushort, -} -pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; -pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; -pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; -pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; -pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; -pub const TCA_ROOT_EXT_WARN_MSG: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_EXT_WARN_MSG; -pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -2871,3 +2794,61 @@ TCA_ROOT_EXT_WARN_MSG = 5, __TCA_ROOT_MAX = 6, } +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union rta_session__bindgen_ty_1 { +pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, +pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, +pub spi: __u32, +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl nlmsgerr_attrs { +pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; +} +impl netlink_policy_type_attr { +pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; +} +impl macsec_validation_type { +pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; +} +impl macsec_offload { +pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; +} +impl ifla_vxlan_df { +pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; +} +impl ifla_geneve_df { +pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/net.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/net.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/net.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/net.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1844 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +pub type __kernel_sa_family_t = crate::ctypes::c_ushort; +pub type socklen_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit { +storage: Storage, +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +pub struct __BindgenUnionField(::core::marker::PhantomData); +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __kernel_sockaddr_storage { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { +pub ss_family: __kernel_sa_family_t, +pub __data: [crate::ctypes::c_char; 126usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_addr { +pub s_addr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq { +pub imr_multiaddr: in_addr, +pub imr_interface: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreqn { +pub imr_multiaddr: in_addr, +pub imr_address: in_addr, +pub imr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_mreq_source { +pub imr_multiaddr: __be32, +pub imr_interface: __be32, +pub imr_sourceaddr: __be32, +} +#[repr(C)] +pub struct ip_msfilter { +pub imsf_multiaddr: __be32, +pub imsf_interface: __be32, +pub imsf_fmode: __u32, +pub imsf_numsrc: __u32, +pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, +} +#[repr(C)] +pub struct ip_msfilter__bindgen_ty_1 { +pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, +pub __bindgen_anon_1: __BindgenUnionField, +pub bindgen_union_field: u32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { +pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, +pub imsf_slist_flex: __IncompleteArrayField<__be32>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_req { +pub gr_interface: __u32, +pub gr_group: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_source_req { +pub gsr_interface: __u32, +pub gsr_group: __kernel_sockaddr_storage, +pub gsr_source: __kernel_sockaddr_storage, +} +#[repr(C)] +pub struct group_filter { +pub __bindgen_anon_1: group_filter__bindgen_ty_1, +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1 { +pub __bindgen_anon_1: __BindgenUnionField, +pub __bindgen_anon_2: __BindgenUnionField, +pub bindgen_union_field: [u64; 34usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { +pub gf_interface_aux: __u32, +pub gf_group_aux: __kernel_sockaddr_storage, +pub gf_fmode_aux: __u32, +pub gf_numsrc_aux: __u32, +pub gf_slist: [__kernel_sockaddr_storage; 1usize], +} +#[repr(C)] +pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { +pub gf_interface: __u32, +pub gf_group: __kernel_sockaddr_storage, +pub gf_fmode: __u32, +pub gf_numsrc: __u32, +pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct in_pktinfo { +pub ipi_ifindex: crate::ctypes::c_int, +pub ipi_spec_dst: in_addr, +pub ipi_addr: in_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_in { +pub sin_family: __kernel_sa_family_t, +pub sin_port: __be16, +pub sin_addr: in_addr, +pub __pad: [crate::ctypes::c_uchar; 8usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct iphdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub tos: __u8, +pub tot_len: __be16, +pub id: __be16, +pub frag_off: __be16, +pub ttl: __u8, +pub protocol: __u8, +pub check: __sum16, +pub __bindgen_anon_1: iphdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: __be32, +pub daddr: __be32, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_auth_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub reserved: __be16, +pub spi: __be32, +pub seq_no: __be32, +pub auth_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug)] +pub struct ip_esp_hdr { +pub spi: __be32, +pub seq_no: __be32, +pub enc_data: __IncompleteArrayField<__u8>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_comp_hdr { +pub nexthdr: __u8, +pub flags: __u8, +pub cpi: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ip_beet_phdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub padlen: __u8, +pub reserved: __u8, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_addr { +pub in6_u: in6_addr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr_in6 { +pub sin6_family: crate::ctypes::c_ushort, +pub sin6_port: __be16, +pub sin6_flowinfo: __be32, +pub sin6_addr: in6_addr, +pub sin6_scope_id: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6_mreq { +pub ipv6mr_multiaddr: in6_addr, +pub ipv6mr_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_flowlabel_req { +pub flr_dst: in6_addr, +pub flr_label: __be32, +pub flr_action: __u8, +pub flr_share: __u8, +pub flr_flags: __u16, +pub flr_expires: __u16, +pub flr_linger: __u16, +pub __flr_pad: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_pktinfo { +pub ipi6_addr: in6_addr, +pub ipi6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ip6_mtuinfo { +pub ip6m_addr: sockaddr_in6, +pub ip6m_mtu: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct in6_ifreq { +pub ifr6_addr: in6_addr, +pub ifr6_prefixlen: __u32, +pub ifr6_ifindex: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_rt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +pub type_: __u8, +pub segments_left: __u8, +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct ipv6_opt_hdr { +pub nexthdr: __u8, +pub hdrlen: __u8, +} +#[repr(C)] +pub struct rt0_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct rt2_hdr { +pub rt_hdr: ipv6_rt_hdr, +pub reserved: __u32, +pub addr: in6_addr, +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub struct ipv6_destopt_hao { +pub type_: __u8, +pub length: __u8, +pub addr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr { +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, +pub flow_lbl: [__u8; 3usize], +pub payload_len: __be16, +pub nexthdr: __u8, +pub hop_limit: __u8, +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { +pub saddr: in6_addr, +pub daddr: in6_addr, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcphdr { +pub source: __be16, +pub dest: __be16, +pub seq: __be32, +pub ack_seq: __be32, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub window: __be16, +pub check: __sum16, +pub urg_ptr: __be16, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_opt { +pub opt_code: __u32, +pub opt_val: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_repair_window { +pub snd_wl1: __u32, +pub snd_wnd: __u32, +pub max_window: __u32, +pub rcv_wnd: __u32, +pub rcv_wup: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_info { +pub tcpi_state: __u8, +pub tcpi_ca_state: __u8, +pub tcpi_retransmits: __u8, +pub tcpi_probes: __u8, +pub tcpi_backoff: __u8, +pub tcpi_options: __u8, +pub _bitfield_align_1: [u8; 0], +pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, +pub tcpi_rto: __u32, +pub tcpi_ato: __u32, +pub tcpi_snd_mss: __u32, +pub tcpi_rcv_mss: __u32, +pub tcpi_unacked: __u32, +pub tcpi_sacked: __u32, +pub tcpi_lost: __u32, +pub tcpi_retrans: __u32, +pub tcpi_fackets: __u32, +pub tcpi_last_data_sent: __u32, +pub tcpi_last_ack_sent: __u32, +pub tcpi_last_data_recv: __u32, +pub tcpi_last_ack_recv: __u32, +pub tcpi_pmtu: __u32, +pub tcpi_rcv_ssthresh: __u32, +pub tcpi_rtt: __u32, +pub tcpi_rttvar: __u32, +pub tcpi_snd_ssthresh: __u32, +pub tcpi_snd_cwnd: __u32, +pub tcpi_advmss: __u32, +pub tcpi_reordering: __u32, +pub tcpi_rcv_rtt: __u32, +pub tcpi_rcv_space: __u32, +pub tcpi_total_retrans: __u32, +pub tcpi_pacing_rate: __u64, +pub tcpi_max_pacing_rate: __u64, +pub tcpi_bytes_acked: __u64, +pub tcpi_bytes_received: __u64, +pub tcpi_segs_out: __u32, +pub tcpi_segs_in: __u32, +pub tcpi_notsent_bytes: __u32, +pub tcpi_min_rtt: __u32, +pub tcpi_data_segs_in: __u32, +pub tcpi_data_segs_out: __u32, +pub tcpi_delivery_rate: __u64, +pub tcpi_busy_time: __u64, +pub tcpi_rwnd_limited: __u64, +pub tcpi_sndbuf_limited: __u64, +pub tcpi_delivered: __u32, +pub tcpi_delivered_ce: __u32, +pub tcpi_bytes_sent: __u64, +pub tcpi_bytes_retrans: __u64, +pub tcpi_dsack_dups: __u32, +pub tcpi_reord_seen: __u32, +pub tcpi_rcv_ooopack: __u32, +pub tcpi_snd_wnd: __u32, +pub tcpi_rcv_wnd: __u32, +pub tcpi_rehash: __u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct tcp_md5sig { +pub tcpm_addr: __kernel_sockaddr_storage, +pub tcpm_flags: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_ifindex: crate::ctypes::c_int, +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_diag_md5sig { +pub tcpm_family: __u8, +pub tcpm_prefixlen: __u8, +pub tcpm_keylen: __u16, +pub tcpm_addr: [__be32; 4usize], +pub tcpm_key: [__u8; 80usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tcp_zerocopy_receive { +pub address: __u64, +pub length: __u32, +pub recv_skip_hint: __u32, +pub inq: __u32, +pub err: __s32, +pub copybuf_address: __u64, +pub copybuf_len: __s32, +pub flags: __u32, +pub msg_control: __u64, +pub msg_controllen: __u64, +pub msg_flags: __u32, +pub reserved: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct sockaddr_un { +pub sun_family: __kernel_sa_family_t, +pub sun_path: [crate::ctypes::c_char; 108usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sockaddr { +pub __storage: __kernel_sockaddr_storage, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct linger { +pub l_onoff: crate::ctypes::c_int, +pub l_linger: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct msghdr { +pub msg_name: *mut crate::ctypes::c_void, +pub msg_namelen: crate::ctypes::c_int, +pub msg_iov: *mut iovec, +pub msg_iovlen: usize, +pub msg_control: *mut crate::ctypes::c_void, +pub msg_controllen: usize, +pub msg_flags: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct cmsghdr { +pub cmsg_len: usize, +pub cmsg_level: crate::ctypes::c_int, +pub cmsg_type: crate::ctypes::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ucred { +pub pid: __u32, +pub uid: __u32, +pub gid: __u32, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct mmsghdr { +pub msg_hdr: msghdr, +pub msg_len: crate::ctypes::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct iovec { +pub _address: u8, +} +pub const _K_SS_MAXSIZE: u32 = 128; +pub const SOCK_SNDBUF_LOCK: u32 = 1; +pub const SOCK_RCVBUF_LOCK: u32 = 2; +pub const SOCK_BUF_LOCK_MASK: u32 = 3; +pub const SOCK_TXREHASH_DEFAULT: u32 = 255; +pub const SOCK_TXREHASH_DISABLED: u32 = 0; +pub const SOCK_TXREHASH_ENABLED: u32 = 1; +pub const IP_TOS: u32 = 1; +pub const IP_TTL: u32 = 2; +pub const IP_HDRINCL: u32 = 3; +pub const IP_OPTIONS: u32 = 4; +pub const IP_ROUTER_ALERT: u32 = 5; +pub const IP_RECVOPTS: u32 = 6; +pub const IP_RETOPTS: u32 = 7; +pub const IP_PKTINFO: u32 = 8; +pub const IP_PKTOPTIONS: u32 = 9; +pub const IP_MTU_DISCOVER: u32 = 10; +pub const IP_RECVERR: u32 = 11; +pub const IP_RECVTTL: u32 = 12; +pub const IP_RECVTOS: u32 = 13; +pub const IP_MTU: u32 = 14; +pub const IP_FREEBIND: u32 = 15; +pub const IP_IPSEC_POLICY: u32 = 16; +pub const IP_XFRM_POLICY: u32 = 17; +pub const IP_PASSSEC: u32 = 18; +pub const IP_TRANSPARENT: u32 = 19; +pub const IP_RECVRETOPTS: u32 = 7; +pub const IP_ORIGDSTADDR: u32 = 20; +pub const IP_RECVORIGDSTADDR: u32 = 20; +pub const IP_MINTTL: u32 = 21; +pub const IP_NODEFRAG: u32 = 22; +pub const IP_CHECKSUM: u32 = 23; +pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; +pub const IP_RECVFRAGSIZE: u32 = 25; +pub const IP_RECVERR_RFC4884: u32 = 26; +pub const IP_PMTUDISC_DONT: u32 = 0; +pub const IP_PMTUDISC_WANT: u32 = 1; +pub const IP_PMTUDISC_DO: u32 = 2; +pub const IP_PMTUDISC_PROBE: u32 = 3; +pub const IP_PMTUDISC_INTERFACE: u32 = 4; +pub const IP_PMTUDISC_OMIT: u32 = 5; +pub const IP_MULTICAST_IF: u32 = 32; +pub const IP_MULTICAST_TTL: u32 = 33; +pub const IP_MULTICAST_LOOP: u32 = 34; +pub const IP_ADD_MEMBERSHIP: u32 = 35; +pub const IP_DROP_MEMBERSHIP: u32 = 36; +pub const IP_UNBLOCK_SOURCE: u32 = 37; +pub const IP_BLOCK_SOURCE: u32 = 38; +pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; +pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; +pub const IP_MSFILTER: u32 = 41; +pub const MCAST_JOIN_GROUP: u32 = 42; +pub const MCAST_BLOCK_SOURCE: u32 = 43; +pub const MCAST_UNBLOCK_SOURCE: u32 = 44; +pub const MCAST_LEAVE_GROUP: u32 = 45; +pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; +pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; +pub const MCAST_MSFILTER: u32 = 48; +pub const IP_MULTICAST_ALL: u32 = 49; +pub const IP_UNICAST_IF: u32 = 50; +pub const IP_LOCAL_PORT_RANGE: u32 = 51; +pub const MCAST_EXCLUDE: u32 = 0; +pub const MCAST_INCLUDE: u32 = 1; +pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; +pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; +pub const __SOCK_SIZE__: u32 = 16; +pub const IN_CLASSA_NET: u32 = 4278190080; +pub const IN_CLASSA_NSHIFT: u32 = 24; +pub const IN_CLASSA_HOST: u32 = 16777215; +pub const IN_CLASSA_MAX: u32 = 128; +pub const IN_CLASSB_NET: u32 = 4294901760; +pub const IN_CLASSB_NSHIFT: u32 = 16; +pub const IN_CLASSB_HOST: u32 = 65535; +pub const IN_CLASSB_MAX: u32 = 65536; +pub const IN_CLASSC_NET: u32 = 4294967040; +pub const IN_CLASSC_NSHIFT: u32 = 8; +pub const IN_CLASSC_HOST: u32 = 255; +pub const IN_MULTICAST_NET: u32 = 3758096384; +pub const IN_CLASSE_NET: u32 = 4294967295; +pub const IN_CLASSE_NSHIFT: u32 = 0; +pub const IN_LOOPBACKNET: u32 = 127; +pub const INADDR_LOOPBACK: u32 = 2130706433; +pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; +pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; +pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; +pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; +pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; +pub const __LITTLE_ENDIAN: u32 = 1234; +pub const IPTOS_TOS_MASK: u32 = 30; +pub const IPTOS_LOWDELAY: u32 = 16; +pub const IPTOS_THROUGHPUT: u32 = 8; +pub const IPTOS_RELIABILITY: u32 = 4; +pub const IPTOS_MINCOST: u32 = 2; +pub const IPTOS_PREC_MASK: u32 = 224; +pub const IPTOS_PREC_NETCONTROL: u32 = 224; +pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; +pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; +pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; +pub const IPTOS_PREC_FLASH: u32 = 96; +pub const IPTOS_PREC_IMMEDIATE: u32 = 64; +pub const IPTOS_PREC_PRIORITY: u32 = 32; +pub const IPTOS_PREC_ROUTINE: u32 = 0; +pub const IPOPT_COPY: u32 = 128; +pub const IPOPT_CLASS_MASK: u32 = 96; +pub const IPOPT_NUMBER_MASK: u32 = 31; +pub const IPOPT_CONTROL: u32 = 0; +pub const IPOPT_RESERVED1: u32 = 32; +pub const IPOPT_MEASUREMENT: u32 = 64; +pub const IPOPT_RESERVED2: u32 = 96; +pub const IPOPT_END: u32 = 0; +pub const IPOPT_NOOP: u32 = 1; +pub const IPOPT_SEC: u32 = 130; +pub const IPOPT_LSRR: u32 = 131; +pub const IPOPT_TIMESTAMP: u32 = 68; +pub const IPOPT_CIPSO: u32 = 134; +pub const IPOPT_RR: u32 = 7; +pub const IPOPT_SID: u32 = 136; +pub const IPOPT_SSRR: u32 = 137; +pub const IPOPT_RA: u32 = 148; +pub const IPVERSION: u32 = 4; +pub const MAXTTL: u32 = 255; +pub const IPDEFTTL: u32 = 64; +pub const IPOPT_OPTVAL: u32 = 0; +pub const IPOPT_OLEN: u32 = 1; +pub const IPOPT_OFFSET: u32 = 2; +pub const IPOPT_MINOFF: u32 = 4; +pub const MAX_IPOPTLEN: u32 = 40; +pub const IPOPT_NOP: u32 = 1; +pub const IPOPT_EOL: u32 = 0; +pub const IPOPT_TS: u32 = 68; +pub const IPOPT_TS_TSONLY: u32 = 0; +pub const IPOPT_TS_TSANDADDR: u32 = 1; +pub const IPOPT_TS_PRESPEC: u32 = 3; +pub const IPV4_BEET_PHMAXLEN: u32 = 8; +pub const IPV6_FL_A_GET: u32 = 0; +pub const IPV6_FL_A_PUT: u32 = 1; +pub const IPV6_FL_A_RENEW: u32 = 2; +pub const IPV6_FL_F_CREATE: u32 = 1; +pub const IPV6_FL_F_EXCL: u32 = 2; +pub const IPV6_FL_F_REFLECT: u32 = 4; +pub const IPV6_FL_F_REMOTE: u32 = 8; +pub const IPV6_FL_S_NONE: u32 = 0; +pub const IPV6_FL_S_EXCL: u32 = 1; +pub const IPV6_FL_S_PROCESS: u32 = 2; +pub const IPV6_FL_S_USER: u32 = 3; +pub const IPV6_FL_S_ANY: u32 = 255; +pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; +pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; +pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; +pub const IPV6_PRIORITY_FILLER: u32 = 256; +pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; +pub const IPV6_PRIORITY_RESERVED1: u32 = 768; +pub const IPV6_PRIORITY_BULK: u32 = 1024; +pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; +pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; +pub const IPV6_PRIORITY_CONTROL: u32 = 1792; +pub const IPV6_PRIORITY_8: u32 = 2048; +pub const IPV6_PRIORITY_9: u32 = 2304; +pub const IPV6_PRIORITY_10: u32 = 2560; +pub const IPV6_PRIORITY_11: u32 = 2816; +pub const IPV6_PRIORITY_12: u32 = 3072; +pub const IPV6_PRIORITY_13: u32 = 3328; +pub const IPV6_PRIORITY_14: u32 = 3584; +pub const IPV6_PRIORITY_15: u32 = 3840; +pub const IPPROTO_HOPOPTS: u32 = 0; +pub const IPPROTO_ROUTING: u32 = 43; +pub const IPPROTO_FRAGMENT: u32 = 44; +pub const IPPROTO_ICMPV6: u32 = 58; +pub const IPPROTO_NONE: u32 = 59; +pub const IPPROTO_DSTOPTS: u32 = 60; +pub const IPPROTO_MH: u32 = 135; +pub const IPV6_TLV_PAD1: u32 = 0; +pub const IPV6_TLV_PADN: u32 = 1; +pub const IPV6_TLV_ROUTERALERT: u32 = 5; +pub const IPV6_TLV_CALIPSO: u32 = 7; +pub const IPV6_TLV_IOAM: u32 = 49; +pub const IPV6_TLV_JUMBO: u32 = 194; +pub const IPV6_TLV_HAO: u32 = 201; +pub const IPV6_ADDRFORM: u32 = 1; +pub const IPV6_2292PKTINFO: u32 = 2; +pub const IPV6_2292HOPOPTS: u32 = 3; +pub const IPV6_2292DSTOPTS: u32 = 4; +pub const IPV6_2292RTHDR: u32 = 5; +pub const IPV6_2292PKTOPTIONS: u32 = 6; +pub const IPV6_CHECKSUM: u32 = 7; +pub const IPV6_2292HOPLIMIT: u32 = 8; +pub const IPV6_NEXTHOP: u32 = 9; +pub const IPV6_AUTHHDR: u32 = 10; +pub const IPV6_FLOWINFO: u32 = 11; +pub const IPV6_UNICAST_HOPS: u32 = 16; +pub const IPV6_MULTICAST_IF: u32 = 17; +pub const IPV6_MULTICAST_HOPS: u32 = 18; +pub const IPV6_MULTICAST_LOOP: u32 = 19; +pub const IPV6_ADD_MEMBERSHIP: u32 = 20; +pub const IPV6_DROP_MEMBERSHIP: u32 = 21; +pub const IPV6_ROUTER_ALERT: u32 = 22; +pub const IPV6_MTU_DISCOVER: u32 = 23; +pub const IPV6_MTU: u32 = 24; +pub const IPV6_RECVERR: u32 = 25; +pub const IPV6_V6ONLY: u32 = 26; +pub const IPV6_JOIN_ANYCAST: u32 = 27; +pub const IPV6_LEAVE_ANYCAST: u32 = 28; +pub const IPV6_MULTICAST_ALL: u32 = 29; +pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; +pub const IPV6_RECVERR_RFC4884: u32 = 31; +pub const IPV6_PMTUDISC_DONT: u32 = 0; +pub const IPV6_PMTUDISC_WANT: u32 = 1; +pub const IPV6_PMTUDISC_DO: u32 = 2; +pub const IPV6_PMTUDISC_PROBE: u32 = 3; +pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; +pub const IPV6_PMTUDISC_OMIT: u32 = 5; +pub const IPV6_FLOWLABEL_MGR: u32 = 32; +pub const IPV6_FLOWINFO_SEND: u32 = 33; +pub const IPV6_IPSEC_POLICY: u32 = 34; +pub const IPV6_XFRM_POLICY: u32 = 35; +pub const IPV6_HDRINCL: u32 = 36; +pub const IPV6_RECVPKTINFO: u32 = 49; +pub const IPV6_PKTINFO: u32 = 50; +pub const IPV6_RECVHOPLIMIT: u32 = 51; +pub const IPV6_HOPLIMIT: u32 = 52; +pub const IPV6_RECVHOPOPTS: u32 = 53; +pub const IPV6_HOPOPTS: u32 = 54; +pub const IPV6_RTHDRDSTOPTS: u32 = 55; +pub const IPV6_RECVRTHDR: u32 = 56; +pub const IPV6_RTHDR: u32 = 57; +pub const IPV6_RECVDSTOPTS: u32 = 58; +pub const IPV6_DSTOPTS: u32 = 59; +pub const IPV6_RECVPATHMTU: u32 = 60; +pub const IPV6_PATHMTU: u32 = 61; +pub const IPV6_DONTFRAG: u32 = 62; +pub const IPV6_RECVTCLASS: u32 = 66; +pub const IPV6_TCLASS: u32 = 67; +pub const IPV6_AUTOFLOWLABEL: u32 = 70; +pub const IPV6_ADDR_PREFERENCES: u32 = 72; +pub const IPV6_PREFER_SRC_TMP: u32 = 1; +pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; +pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; +pub const IPV6_PREFER_SRC_COA: u32 = 4; +pub const IPV6_PREFER_SRC_HOME: u32 = 1024; +pub const IPV6_PREFER_SRC_CGA: u32 = 8; +pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; +pub const IPV6_MINHOPCOUNT: u32 = 73; +pub const IPV6_ORIGDSTADDR: u32 = 74; +pub const IPV6_RECVORIGDSTADDR: u32 = 74; +pub const IPV6_TRANSPARENT: u32 = 75; +pub const IPV6_UNICAST_IF: u32 = 76; +pub const IPV6_RECVFRAGSIZE: u32 = 77; +pub const IPV6_FREEBIND: u32 = 78; +pub const IPV6_MIN_MTU: u32 = 1280; +pub const IPV6_SRCRT_STRICT: u32 = 1; +pub const IPV6_SRCRT_TYPE_0: u32 = 0; +pub const IPV6_SRCRT_TYPE_2: u32 = 2; +pub const IPV6_SRCRT_TYPE_3: u32 = 3; +pub const IPV6_SRCRT_TYPE_4: u32 = 4; +pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; +pub const SIOCGSTAMP_OLD: u32 = 35078; +pub const SIOCGSTAMPNS_OLD: u32 = 35079; +pub const SOL_SOCKET: u32 = 1; +pub const SO_DEBUG: u32 = 1; +pub const SO_REUSEADDR: u32 = 2; +pub const SO_TYPE: u32 = 3; +pub const SO_ERROR: u32 = 4; +pub const SO_DONTROUTE: u32 = 5; +pub const SO_BROADCAST: u32 = 6; +pub const SO_SNDBUF: u32 = 7; +pub const SO_RCVBUF: u32 = 8; +pub const SO_SNDBUFFORCE: u32 = 32; +pub const SO_RCVBUFFORCE: u32 = 33; +pub const SO_KEEPALIVE: u32 = 9; +pub const SO_OOBINLINE: u32 = 10; +pub const SO_NO_CHECK: u32 = 11; +pub const SO_PRIORITY: u32 = 12; +pub const SO_LINGER: u32 = 13; +pub const SO_BSDCOMPAT: u32 = 14; +pub const SO_REUSEPORT: u32 = 15; +pub const SO_PASSCRED: u32 = 16; +pub const SO_PEERCRED: u32 = 17; +pub const SO_RCVLOWAT: u32 = 18; +pub const SO_SNDLOWAT: u32 = 19; +pub const SO_RCVTIMEO_OLD: u32 = 20; +pub const SO_SNDTIMEO_OLD: u32 = 21; +pub const SO_SECURITY_AUTHENTICATION: u32 = 22; +pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; +pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; +pub const SO_BINDTODEVICE: u32 = 25; +pub const SO_ATTACH_FILTER: u32 = 26; +pub const SO_DETACH_FILTER: u32 = 27; +pub const SO_GET_FILTER: u32 = 26; +pub const SO_PEERNAME: u32 = 28; +pub const SO_ACCEPTCONN: u32 = 30; +pub const SO_PEERSEC: u32 = 31; +pub const SO_PASSSEC: u32 = 34; +pub const SO_MARK: u32 = 36; +pub const SO_PROTOCOL: u32 = 38; +pub const SO_DOMAIN: u32 = 39; +pub const SO_RXQ_OVFL: u32 = 40; +pub const SO_WIFI_STATUS: u32 = 41; +pub const SCM_WIFI_STATUS: u32 = 41; +pub const SO_PEEK_OFF: u32 = 42; +pub const SO_NOFCS: u32 = 43; +pub const SO_LOCK_FILTER: u32 = 44; +pub const SO_SELECT_ERR_QUEUE: u32 = 45; +pub const SO_BUSY_POLL: u32 = 46; +pub const SO_MAX_PACING_RATE: u32 = 47; +pub const SO_BPF_EXTENSIONS: u32 = 48; +pub const SO_INCOMING_CPU: u32 = 49; +pub const SO_ATTACH_BPF: u32 = 50; +pub const SO_DETACH_BPF: u32 = 27; +pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; +pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; +pub const SO_CNX_ADVICE: u32 = 53; +pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; +pub const SO_MEMINFO: u32 = 55; +pub const SO_INCOMING_NAPI_ID: u32 = 56; +pub const SO_COOKIE: u32 = 57; +pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; +pub const SO_PEERGROUPS: u32 = 59; +pub const SO_ZEROCOPY: u32 = 60; +pub const SO_TXTIME: u32 = 61; +pub const SCM_TXTIME: u32 = 61; +pub const SO_BINDTOIFINDEX: u32 = 62; +pub const SO_TIMESTAMP_OLD: u32 = 29; +pub const SO_TIMESTAMPNS_OLD: u32 = 35; +pub const SO_TIMESTAMPING_OLD: u32 = 37; +pub const SO_TIMESTAMP_NEW: u32 = 63; +pub const SO_TIMESTAMPNS_NEW: u32 = 64; +pub const SO_TIMESTAMPING_NEW: u32 = 65; +pub const SO_RCVTIMEO_NEW: u32 = 66; +pub const SO_SNDTIMEO_NEW: u32 = 67; +pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; +pub const SO_PREFER_BUSY_POLL: u32 = 69; +pub const SO_BUSY_POLL_BUDGET: u32 = 70; +pub const SO_NETNS_COOKIE: u32 = 71; +pub const SO_BUF_LOCK: u32 = 72; +pub const SO_RESERVE_MEM: u32 = 73; +pub const SO_TXREHASH: u32 = 74; +pub const SO_RCVMARK: u32 = 75; +pub const SO_TIMESTAMP: u32 = 29; +pub const SO_TIMESTAMPNS: u32 = 35; +pub const SO_TIMESTAMPING: u32 = 37; +pub const SO_RCVTIMEO: u32 = 20; +pub const SO_SNDTIMEO: u32 = 21; +pub const SCM_TIMESTAMP: u32 = 29; +pub const SCM_TIMESTAMPNS: u32 = 35; +pub const SCM_TIMESTAMPING: u32 = 37; +pub const SYS_SOCKET: u32 = 1; +pub const SYS_BIND: u32 = 2; +pub const SYS_CONNECT: u32 = 3; +pub const SYS_LISTEN: u32 = 4; +pub const SYS_ACCEPT: u32 = 5; +pub const SYS_GETSOCKNAME: u32 = 6; +pub const SYS_GETPEERNAME: u32 = 7; +pub const SYS_SOCKETPAIR: u32 = 8; +pub const SYS_SEND: u32 = 9; +pub const SYS_RECV: u32 = 10; +pub const SYS_SENDTO: u32 = 11; +pub const SYS_RECVFROM: u32 = 12; +pub const SYS_SHUTDOWN: u32 = 13; +pub const SYS_SETSOCKOPT: u32 = 14; +pub const SYS_GETSOCKOPT: u32 = 15; +pub const SYS_SENDMSG: u32 = 16; +pub const SYS_RECVMSG: u32 = 17; +pub const SYS_ACCEPT4: u32 = 18; +pub const SYS_RECVMMSG: u32 = 19; +pub const SYS_SENDMMSG: u32 = 20; +pub const __SO_ACCEPTCON: u32 = 65536; +pub const TCP_MSS_DEFAULT: u32 = 536; +pub const TCP_MSS_DESIRED: u32 = 1220; +pub const TCP_NODELAY: u32 = 1; +pub const TCP_MAXSEG: u32 = 2; +pub const TCP_CORK: u32 = 3; +pub const TCP_KEEPIDLE: u32 = 4; +pub const TCP_KEEPINTVL: u32 = 5; +pub const TCP_KEEPCNT: u32 = 6; +pub const TCP_SYNCNT: u32 = 7; +pub const TCP_LINGER2: u32 = 8; +pub const TCP_DEFER_ACCEPT: u32 = 9; +pub const TCP_WINDOW_CLAMP: u32 = 10; +pub const TCP_INFO: u32 = 11; +pub const TCP_QUICKACK: u32 = 12; +pub const TCP_CONGESTION: u32 = 13; +pub const TCP_MD5SIG: u32 = 14; +pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; +pub const TCP_THIN_DUPACK: u32 = 17; +pub const TCP_USER_TIMEOUT: u32 = 18; +pub const TCP_REPAIR: u32 = 19; +pub const TCP_REPAIR_QUEUE: u32 = 20; +pub const TCP_QUEUE_SEQ: u32 = 21; +pub const TCP_REPAIR_OPTIONS: u32 = 22; +pub const TCP_FASTOPEN: u32 = 23; +pub const TCP_TIMESTAMP: u32 = 24; +pub const TCP_NOTSENT_LOWAT: u32 = 25; +pub const TCP_CC_INFO: u32 = 26; +pub const TCP_SAVE_SYN: u32 = 27; +pub const TCP_SAVED_SYN: u32 = 28; +pub const TCP_REPAIR_WINDOW: u32 = 29; +pub const TCP_FASTOPEN_CONNECT: u32 = 30; +pub const TCP_ULP: u32 = 31; +pub const TCP_MD5SIG_EXT: u32 = 32; +pub const TCP_FASTOPEN_KEY: u32 = 33; +pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; +pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; +pub const TCP_INQ: u32 = 36; +pub const TCP_CM_INQ: u32 = 36; +pub const TCP_TX_DELAY: u32 = 37; +pub const TCP_REPAIR_ON: u32 = 1; +pub const TCP_REPAIR_OFF: u32 = 0; +pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; +pub const TCPI_OPT_TIMESTAMPS: u32 = 1; +pub const TCPI_OPT_SACK: u32 = 2; +pub const TCPI_OPT_WSCALE: u32 = 4; +pub const TCPI_OPT_ECN: u32 = 8; +pub const TCPI_OPT_ECN_SEEN: u32 = 16; +pub const TCPI_OPT_SYN_DATA: u32 = 32; +pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; +pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; +pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; +pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; +pub const UNIX_PATH_MAX: u32 = 108; +pub const SHUT_RD: u32 = 0; +pub const SHUT_WR: u32 = 1; +pub const SHUT_RDWR: u32 = 2; +pub const SOCK_STREAM: u32 = 1; +pub const SOCK_DGRAM: u32 = 2; +pub const SOCK_RAW: u32 = 3; +pub const SOCK_RDM: u32 = 4; +pub const SOCK_SEQPACKET: u32 = 5; +pub const MSG_DONTWAIT: u32 = 64; +pub const AF_UNSPEC: u32 = 0; +pub const AF_UNIX: u32 = 1; +pub const AF_INET: u32 = 2; +pub const AF_AX25: u32 = 3; +pub const AF_IPX: u32 = 4; +pub const AF_APPLETALK: u32 = 5; +pub const AF_NETROM: u32 = 6; +pub const AF_BRIDGE: u32 = 7; +pub const AF_ATMPVC: u32 = 8; +pub const AF_X25: u32 = 9; +pub const AF_INET6: u32 = 10; +pub const AF_ROSE: u32 = 11; +pub const AF_DECnet: u32 = 12; +pub const AF_NETBEUI: u32 = 13; +pub const AF_SECURITY: u32 = 14; +pub const AF_KEY: u32 = 15; +pub const AF_NETLINK: u32 = 16; +pub const AF_PACKET: u32 = 17; +pub const AF_ASH: u32 = 18; +pub const AF_ECONET: u32 = 19; +pub const AF_ATMSVC: u32 = 20; +pub const AF_RDS: u32 = 21; +pub const AF_SNA: u32 = 22; +pub const AF_IRDA: u32 = 23; +pub const AF_PPPOX: u32 = 24; +pub const AF_WANPIPE: u32 = 25; +pub const AF_LLC: u32 = 26; +pub const AF_CAN: u32 = 29; +pub const AF_TIPC: u32 = 30; +pub const AF_BLUETOOTH: u32 = 31; +pub const AF_IUCV: u32 = 32; +pub const AF_RXRPC: u32 = 33; +pub const AF_ISDN: u32 = 34; +pub const AF_PHONET: u32 = 35; +pub const AF_IEEE802154: u32 = 36; +pub const AF_MAX: u32 = 37; +pub const MSG_OOB: u32 = 1; +pub const MSG_PEEK: u32 = 2; +pub const MSG_DONTROUTE: u32 = 4; +pub const MSG_CTRUNC: u32 = 8; +pub const MSG_PROBE: u32 = 16; +pub const MSG_TRUNC: u32 = 32; +pub const MSG_EOR: u32 = 128; +pub const MSG_WAITALL: u32 = 256; +pub const MSG_FIN: u32 = 512; +pub const MSG_SYN: u32 = 1024; +pub const MSG_CONFIRM: u32 = 2048; +pub const MSG_RST: u32 = 4096; +pub const MSG_ERRQUEUE: u32 = 8192; +pub const MSG_NOSIGNAL: u32 = 16384; +pub const MSG_MORE: u32 = 32768; +pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; +pub const SCM_RIGHTS: u32 = 1; +pub const SCM_CREDENTIALS: u32 = 2; +pub const SCM_SECURITY: u32 = 3; +pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; +pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; +pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; +pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; +pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; +pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; +pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; +pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; +pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; +pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; +pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; +pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; +pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; +pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; +pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; +pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; +pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; +pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; +pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; +pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; +pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; +pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; +pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; +pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; +pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; +pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; +pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; +pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; +pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; +pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; +pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; +pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; +pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; +pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; +pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; +pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; +pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; +pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; +pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; +pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; +pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; +pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; +pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; +pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; +pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; +pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; +pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; +pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; +pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; +pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; +pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; +pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; +pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; +pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; +pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; +pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; +pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; +pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; +pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; +pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; +pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; +pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; +pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; +pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; +pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; +pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; +pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; +pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; +pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; +pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; +pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; +pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; +pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; +pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; +pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; +pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; +pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; +pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; +pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; +pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; +pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; +pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; +pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; +pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; +pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; +pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; +pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; +pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; +pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; +pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; +pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; +pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; +pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; +pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; +pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; +pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; +pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; +pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; +pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; +pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; +pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; +pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; +pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; +pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; +pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; +pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; +pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; +pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; +pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; +pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; +pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; +pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; +pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; +pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; +pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; +pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; +pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; +pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; +pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; +pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; +pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; +pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; +pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; +pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; +pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; +pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; +pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; +pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; +pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; +pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; +pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; +pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; +pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; +pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; +pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; +pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; +pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; +pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; +pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; +pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; +pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; +pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; +pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; +pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; +pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; +pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; +pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; +pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; +pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; +pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; +pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; +pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; +pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; +pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; +pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; +pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; +pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; +pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { +IPPROTO_IP = 0, +IPPROTO_ICMP = 1, +IPPROTO_IGMP = 2, +IPPROTO_IPIP = 4, +IPPROTO_TCP = 6, +IPPROTO_EGP = 8, +IPPROTO_PUP = 12, +IPPROTO_UDP = 17, +IPPROTO_IDP = 22, +IPPROTO_TP = 29, +IPPROTO_DCCP = 33, +IPPROTO_IPV6 = 41, +IPPROTO_RSVP = 46, +IPPROTO_GRE = 47, +IPPROTO_ESP = 50, +IPPROTO_AH = 51, +IPPROTO_MTP = 92, +IPPROTO_BEETPH = 94, +IPPROTO_ENCAP = 98, +IPPROTO_PIM = 103, +IPPROTO_COMP = 108, +IPPROTO_L2TP = 115, +IPPROTO_SCTP = 132, +IPPROTO_UDPLITE = 136, +IPPROTO_MPLS = 137, +IPPROTO_ETHERNET = 143, +IPPROTO_RAW = 255, +IPPROTO_MPTCP = 262, +IPPROTO_MAX = 263, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { +IPV4_DEVCONF_FORWARDING = 1, +IPV4_DEVCONF_MC_FORWARDING = 2, +IPV4_DEVCONF_PROXY_ARP = 3, +IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, +IPV4_DEVCONF_SECURE_REDIRECTS = 5, +IPV4_DEVCONF_SEND_REDIRECTS = 6, +IPV4_DEVCONF_SHARED_MEDIA = 7, +IPV4_DEVCONF_RP_FILTER = 8, +IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, +IPV4_DEVCONF_BOOTP_RELAY = 10, +IPV4_DEVCONF_LOG_MARTIANS = 11, +IPV4_DEVCONF_TAG = 12, +IPV4_DEVCONF_ARPFILTER = 13, +IPV4_DEVCONF_MEDIUM_ID = 14, +IPV4_DEVCONF_NOXFRM = 15, +IPV4_DEVCONF_NOPOLICY = 16, +IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, +IPV4_DEVCONF_ARP_ANNOUNCE = 18, +IPV4_DEVCONF_ARP_IGNORE = 19, +IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, +IPV4_DEVCONF_ARP_ACCEPT = 21, +IPV4_DEVCONF_ARP_NOTIFY = 22, +IPV4_DEVCONF_ACCEPT_LOCAL = 23, +IPV4_DEVCONF_SRC_VMARK = 24, +IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, +IPV4_DEVCONF_ROUTE_LOCALNET = 26, +IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, +IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, +IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, +IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, +IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, +IPV4_DEVCONF_BC_FORWARDING = 32, +IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, +__IPV4_DEVCONF_MAX = 34, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { +DEVCONF_FORWARDING = 0, +DEVCONF_HOPLIMIT = 1, +DEVCONF_MTU6 = 2, +DEVCONF_ACCEPT_RA = 3, +DEVCONF_ACCEPT_REDIRECTS = 4, +DEVCONF_AUTOCONF = 5, +DEVCONF_DAD_TRANSMITS = 6, +DEVCONF_RTR_SOLICITS = 7, +DEVCONF_RTR_SOLICIT_INTERVAL = 8, +DEVCONF_RTR_SOLICIT_DELAY = 9, +DEVCONF_USE_TEMPADDR = 10, +DEVCONF_TEMP_VALID_LFT = 11, +DEVCONF_TEMP_PREFERED_LFT = 12, +DEVCONF_REGEN_MAX_RETRY = 13, +DEVCONF_MAX_DESYNC_FACTOR = 14, +DEVCONF_MAX_ADDRESSES = 15, +DEVCONF_FORCE_MLD_VERSION = 16, +DEVCONF_ACCEPT_RA_DEFRTR = 17, +DEVCONF_ACCEPT_RA_PINFO = 18, +DEVCONF_ACCEPT_RA_RTR_PREF = 19, +DEVCONF_RTR_PROBE_INTERVAL = 20, +DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, +DEVCONF_PROXY_NDP = 22, +DEVCONF_OPTIMISTIC_DAD = 23, +DEVCONF_ACCEPT_SOURCE_ROUTE = 24, +DEVCONF_MC_FORWARDING = 25, +DEVCONF_DISABLE_IPV6 = 26, +DEVCONF_ACCEPT_DAD = 27, +DEVCONF_FORCE_TLLAO = 28, +DEVCONF_NDISC_NOTIFY = 29, +DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, +DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, +DEVCONF_SUPPRESS_FRAG_NDISC = 32, +DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, +DEVCONF_USE_OPTIMISTIC = 34, +DEVCONF_ACCEPT_RA_MTU = 35, +DEVCONF_STABLE_SECRET = 36, +DEVCONF_USE_OIF_ADDRS_ONLY = 37, +DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, +DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, +DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, +DEVCONF_DROP_UNSOLICITED_NA = 41, +DEVCONF_KEEP_ADDR_ON_DOWN = 42, +DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, +DEVCONF_SEG6_ENABLED = 44, +DEVCONF_SEG6_REQUIRE_HMAC = 45, +DEVCONF_ENHANCED_DAD = 46, +DEVCONF_ADDR_GEN_MODE = 47, +DEVCONF_DISABLE_POLICY = 48, +DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, +DEVCONF_NDISC_TCLASS = 50, +DEVCONF_RPL_SEG_ENABLED = 51, +DEVCONF_RA_DEFRTR_METRIC = 52, +DEVCONF_IOAM6_ENABLED = 53, +DEVCONF_IOAM6_ID = 54, +DEVCONF_IOAM6_ID_WIDE = 55, +DEVCONF_NDISC_EVICT_NOCARRIER = 56, +DEVCONF_ACCEPT_UNTRACKED_NA = 57, +DEVCONF_MAX = 58, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum socket_state { +SS_FREE = 0, +SS_UNCONNECTED = 1, +SS_CONNECTING = 2, +SS_CONNECTED = 3, +SS_DISCONNECTING = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { +TCP_FLAG_CWR = 32768, +TCP_FLAG_ECE = 16384, +TCP_FLAG_URG = 8192, +TCP_FLAG_ACK = 4096, +TCP_FLAG_PSH = 2048, +TCP_FLAG_RST = 1024, +TCP_FLAG_SYN = 512, +TCP_FLAG_FIN = 256, +TCP_RESERVED_BITS = 15, +TCP_DATA_OFFSET = 240, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { +TCP_NO_QUEUE = 0, +TCP_RECV_QUEUE = 1, +TCP_SEND_QUEUE = 2, +TCP_QUEUES_NR = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_fastopen_client_fail { +TFO_STATUS_UNSPEC = 0, +TFO_COOKIE_UNAVAILABLE = 1, +TFO_DATA_NOT_ACKED = 2, +TFO_SYN_RETRANSMITTED = 3, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum tcp_ca_state { +TCP_CA_Open = 0, +TCP_CA_Disorder = 1, +TCP_CA_CWR = 2, +TCP_CA_Recovery = 3, +TCP_CA_Loss = 4, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { +TCP_NLA_PAD = 0, +TCP_NLA_BUSY = 1, +TCP_NLA_RWND_LIMITED = 2, +TCP_NLA_SNDBUF_LIMITED = 3, +TCP_NLA_DATA_SEGS_OUT = 4, +TCP_NLA_TOTAL_RETRANS = 5, +TCP_NLA_PACING_RATE = 6, +TCP_NLA_DELIVERY_RATE = 7, +TCP_NLA_SND_CWND = 8, +TCP_NLA_REORDERING = 9, +TCP_NLA_MIN_RTT = 10, +TCP_NLA_RECUR_RETRANS = 11, +TCP_NLA_DELIVERY_RATE_APP_LMT = 12, +TCP_NLA_SNDQ_SIZE = 13, +TCP_NLA_CA_STATE = 14, +TCP_NLA_SND_SSTHRESH = 15, +TCP_NLA_DELIVERED = 16, +TCP_NLA_DELIVERED_CE = 17, +TCP_NLA_BYTES_SENT = 18, +TCP_NLA_BYTES_RETRANS = 19, +TCP_NLA_DSACK_DUPS = 20, +TCP_NLA_REORD_SEEN = 21, +TCP_NLA_SRTT = 22, +TCP_NLA_TIMEOUT_REHASH = 23, +TCP_NLA_BYTES_NOTSENT = 24, +TCP_NLA_EDT = 25, +TCP_NLA_TTL = 26, +TCP_NLA_REHASH = 27, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __kernel_sockaddr_storage__bindgen_ty_1 { +pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, +pub __align: *mut crate::ctypes::c_void, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union iphdr__bindgen_ty_1 { +pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union in6_addr__bindgen_ty_1 { +pub u6_addr8: [__u8; 16usize], +pub u6_addr16: [__be16; 8usize], +pub u6_addr32: [__be32; 4usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ipv6hdr__bindgen_ty_1 { +pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, +pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union tcp_word_hdr { +pub hdr: tcphdr, +pub words: [__be32; 5usize], +} +impl __BindgenBitfieldUnit { +#[inline] +pub const fn new(storage: Storage) -> Self { +Self { storage } +} +} +impl __BindgenBitfieldUnit +where +Storage: AsRef<[u8]> + AsMut<[u8]>, +{ +#[inline] +pub fn get_bit(&self, index: usize) -> bool { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = self.storage.as_ref()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +byte & mask == mask +} +#[inline] +pub fn set_bit(&mut self, index: usize, val: bool) { +debug_assert!(index / 8 < self.storage.as_ref().len()); +let byte_index = index / 8; +let byte = &mut self.storage.as_mut()[byte_index]; +let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; +let mask = 1 << bit_index; +if val { +*byte |= mask; +} else { +*byte &= !mask; +} +} +#[inline] +pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +let mut val = 0; +for i in 0..(bit_width as usize) { +if self.get_bit(i + bit_offset) { +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +val |= 1 << index; +} +} +val +} +#[inline] +pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { +debug_assert!(bit_width <= 64); +debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); +debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); +for i in 0..(bit_width as usize) { +let mask = 1 << i; +let val_bit_is_set = val & mask == mask; +let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; +self.set_bit(index + bit_offset, val_bit_is_set); +} +} +} +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} +impl __BindgenUnionField { +#[inline] +pub const fn new() -> Self { +__BindgenUnionField(::core::marker::PhantomData) +} +#[inline] +pub unsafe fn as_ref(&self) -> &T { +::core::mem::transmute(self) +} +#[inline] +pub unsafe fn as_mut(&mut self) -> &mut T { +::core::mem::transmute(self) +} +} +impl ::core::default::Default for __BindgenUnionField { +#[inline] +fn default() -> Self { +Self::new() +} +} +impl ::core::clone::Clone for __BindgenUnionField { +#[inline] +fn clone(&self) -> Self { +Self::new() +} +} +impl ::core::marker::Copy for __BindgenUnionField {} +impl ::core::fmt::Debug for __BindgenUnionField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__BindgenUnionField") +} +} +impl ::core::hash::Hash for __BindgenUnionField { +fn hash(&self, _state: &mut H) {} +} +impl ::core::cmp::PartialEq for __BindgenUnionField { +fn eq(&self, _other: &__BindgenUnionField) -> bool { +true +} +} +impl ::core::cmp::Eq for __BindgenUnionField {} +impl iphdr { +#[inline] +pub fn ihl(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_ihl(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; +ihl as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit +} +} +impl ipv6hdr { +#[inline] +pub fn priority(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_priority(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn version(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_version(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let priority: u8 = unsafe { ::core::mem::transmute(priority) }; +priority as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let version: u8 = unsafe { ::core::mem::transmute(version) }; +version as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcphdr { +#[inline] +pub fn res1(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } +} +#[inline] +pub fn set_res1(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn doff(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } +} +#[inline] +pub fn set_doff(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn fin(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } +} +#[inline] +pub fn set_fin(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn syn(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } +} +#[inline] +pub fn set_syn(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 1u8, val as u64) +} +} +#[inline] +pub fn rst(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } +} +#[inline] +pub fn set_rst(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(10usize, 1u8, val as u64) +} +} +#[inline] +pub fn psh(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } +} +#[inline] +pub fn set_psh(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(11usize, 1u8, val as u64) +} +} +#[inline] +pub fn ack(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } +} +#[inline] +pub fn set_ack(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(12usize, 1u8, val as u64) +} +} +#[inline] +pub fn urg(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } +} +#[inline] +pub fn set_urg(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(13usize, 1u8, val as u64) +} +} +#[inline] +pub fn ece(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } +} +#[inline] +pub fn set_ece(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(14usize, 1u8, val as u64) +} +} +#[inline] +pub fn cwr(&self) -> __u16 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } +} +#[inline] +pub fn set_cwr(&mut self, val: __u16) { +unsafe { +let val: u16 = ::core::mem::transmute(val); +self._bitfield_1.set(15usize, 1u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let res1: u16 = unsafe { ::core::mem::transmute(res1) }; +res1 as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let doff: u16 = unsafe { ::core::mem::transmute(doff) }; +doff as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let fin: u16 = unsafe { ::core::mem::transmute(fin) }; +fin as u64 +}); +__bindgen_bitfield_unit.set(9usize, 1u8, { +let syn: u16 = unsafe { ::core::mem::transmute(syn) }; +syn as u64 +}); +__bindgen_bitfield_unit.set(10usize, 1u8, { +let rst: u16 = unsafe { ::core::mem::transmute(rst) }; +rst as u64 +}); +__bindgen_bitfield_unit.set(11usize, 1u8, { +let psh: u16 = unsafe { ::core::mem::transmute(psh) }; +psh as u64 +}); +__bindgen_bitfield_unit.set(12usize, 1u8, { +let ack: u16 = unsafe { ::core::mem::transmute(ack) }; +ack as u64 +}); +__bindgen_bitfield_unit.set(13usize, 1u8, { +let urg: u16 = unsafe { ::core::mem::transmute(urg) }; +urg as u64 +}); +__bindgen_bitfield_unit.set(14usize, 1u8, { +let ece: u16 = unsafe { ::core::mem::transmute(ece) }; +ece as u64 +}); +__bindgen_bitfield_unit.set(15usize, 1u8, { +let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; +cwr as u64 +}); +__bindgen_bitfield_unit +} +} +impl tcp_info { +#[inline] +pub fn tcpi_snd_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(0usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_rcv_wscale(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } +} +#[inline] +pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(4usize, 4u8, val as u64) +} +} +#[inline] +pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } +} +#[inline] +pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(8usize, 1u8, val as u64) +} +} +#[inline] +pub fn tcpi_fastopen_client_fail(&self) -> __u8 { +unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } +} +#[inline] +pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { +unsafe { +let val: u8 = ::core::mem::transmute(val); +self._bitfield_1.set(9usize, 2u8, val as u64) +} +} +#[inline] +pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { +let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); +__bindgen_bitfield_unit.set(0usize, 4u8, { +let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; +tcpi_snd_wscale as u64 +}); +__bindgen_bitfield_unit.set(4usize, 4u8, { +let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; +tcpi_rcv_wscale as u64 +}); +__bindgen_bitfield_unit.set(8usize, 1u8, { +let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; +tcpi_delivery_rate_app_limited as u64 +}); +__bindgen_bitfield_unit.set(9usize, 2u8, { +let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; +tcpi_fastopen_client_fail as u64 +}); +__bindgen_bitfield_unit +} +} diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/prctl.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/prctl.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/prctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,221 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct prctl_mm_map { +pub start_code: __u64, +pub end_code: __u64, +pub start_data: __u64, +pub end_data: __u64, +pub start_brk: __u64, +pub brk: __u64, +pub start_stack: __u64, +pub arg_start: __u64, +pub arg_end: __u64, +pub env_start: __u64, +pub env_end: __u64, +pub auxv: *mut __u64, +pub auxv_size: __u32, +pub exe_fd: __u32, +} +pub const PR_SET_PDEATHSIG: u32 = 1; +pub const PR_GET_PDEATHSIG: u32 = 2; +pub const PR_GET_DUMPABLE: u32 = 3; +pub const PR_SET_DUMPABLE: u32 = 4; +pub const PR_GET_UNALIGN: u32 = 5; +pub const PR_SET_UNALIGN: u32 = 6; +pub const PR_UNALIGN_NOPRINT: u32 = 1; +pub const PR_UNALIGN_SIGBUS: u32 = 2; +pub const PR_GET_KEEPCAPS: u32 = 7; +pub const PR_SET_KEEPCAPS: u32 = 8; +pub const PR_GET_FPEMU: u32 = 9; +pub const PR_SET_FPEMU: u32 = 10; +pub const PR_FPEMU_NOPRINT: u32 = 1; +pub const PR_FPEMU_SIGFPE: u32 = 2; +pub const PR_GET_FPEXC: u32 = 11; +pub const PR_SET_FPEXC: u32 = 12; +pub const PR_FP_EXC_SW_ENABLE: u32 = 128; +pub const PR_FP_EXC_DIV: u32 = 65536; +pub const PR_FP_EXC_OVF: u32 = 131072; +pub const PR_FP_EXC_UND: u32 = 262144; +pub const PR_FP_EXC_RES: u32 = 524288; +pub const PR_FP_EXC_INV: u32 = 1048576; +pub const PR_FP_EXC_DISABLED: u32 = 0; +pub const PR_FP_EXC_NONRECOV: u32 = 1; +pub const PR_FP_EXC_ASYNC: u32 = 2; +pub const PR_FP_EXC_PRECISE: u32 = 3; +pub const PR_GET_TIMING: u32 = 13; +pub const PR_SET_TIMING: u32 = 14; +pub const PR_TIMING_STATISTICAL: u32 = 0; +pub const PR_TIMING_TIMESTAMP: u32 = 1; +pub const PR_SET_NAME: u32 = 15; +pub const PR_GET_NAME: u32 = 16; +pub const PR_GET_ENDIAN: u32 = 19; +pub const PR_SET_ENDIAN: u32 = 20; +pub const PR_ENDIAN_BIG: u32 = 0; +pub const PR_ENDIAN_LITTLE: u32 = 1; +pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; +pub const PR_GET_SECCOMP: u32 = 21; +pub const PR_SET_SECCOMP: u32 = 22; +pub const PR_CAPBSET_READ: u32 = 23; +pub const PR_CAPBSET_DROP: u32 = 24; +pub const PR_GET_TSC: u32 = 25; +pub const PR_SET_TSC: u32 = 26; +pub const PR_TSC_ENABLE: u32 = 1; +pub const PR_TSC_SIGSEGV: u32 = 2; +pub const PR_GET_SECUREBITS: u32 = 27; +pub const PR_SET_SECUREBITS: u32 = 28; +pub const PR_SET_TIMERSLACK: u32 = 29; +pub const PR_GET_TIMERSLACK: u32 = 30; +pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; +pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; +pub const PR_MCE_KILL: u32 = 33; +pub const PR_MCE_KILL_CLEAR: u32 = 0; +pub const PR_MCE_KILL_SET: u32 = 1; +pub const PR_MCE_KILL_LATE: u32 = 0; +pub const PR_MCE_KILL_EARLY: u32 = 1; +pub const PR_MCE_KILL_DEFAULT: u32 = 2; +pub const PR_MCE_KILL_GET: u32 = 34; +pub const PR_SET_MM: u32 = 35; +pub const PR_SET_MM_START_CODE: u32 = 1; +pub const PR_SET_MM_END_CODE: u32 = 2; +pub const PR_SET_MM_START_DATA: u32 = 3; +pub const PR_SET_MM_END_DATA: u32 = 4; +pub const PR_SET_MM_START_STACK: u32 = 5; +pub const PR_SET_MM_START_BRK: u32 = 6; +pub const PR_SET_MM_BRK: u32 = 7; +pub const PR_SET_MM_ARG_START: u32 = 8; +pub const PR_SET_MM_ARG_END: u32 = 9; +pub const PR_SET_MM_ENV_START: u32 = 10; +pub const PR_SET_MM_ENV_END: u32 = 11; +pub const PR_SET_MM_AUXV: u32 = 12; +pub const PR_SET_MM_EXE_FILE: u32 = 13; +pub const PR_SET_MM_MAP: u32 = 14; +pub const PR_SET_MM_MAP_SIZE: u32 = 15; +pub const PR_SET_PTRACER: u32 = 1499557217; +pub const PR_SET_CHILD_SUBREAPER: u32 = 36; +pub const PR_GET_CHILD_SUBREAPER: u32 = 37; +pub const PR_SET_NO_NEW_PRIVS: u32 = 38; +pub const PR_GET_NO_NEW_PRIVS: u32 = 39; +pub const PR_GET_TID_ADDRESS: u32 = 40; +pub const PR_SET_THP_DISABLE: u32 = 41; +pub const PR_GET_THP_DISABLE: u32 = 42; +pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; +pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; +pub const PR_SET_FP_MODE: u32 = 45; +pub const PR_GET_FP_MODE: u32 = 46; +pub const PR_FP_MODE_FR: u32 = 1; +pub const PR_FP_MODE_FRE: u32 = 2; +pub const PR_CAP_AMBIENT: u32 = 47; +pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; +pub const PR_CAP_AMBIENT_RAISE: u32 = 2; +pub const PR_CAP_AMBIENT_LOWER: u32 = 3; +pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; +pub const PR_SVE_SET_VL: u32 = 50; +pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SVE_GET_VL: u32 = 51; +pub const PR_SVE_VL_LEN_MASK: u32 = 65535; +pub const PR_SVE_VL_INHERIT: u32 = 131072; +pub const PR_GET_SPECULATION_CTRL: u32 = 52; +pub const PR_SET_SPECULATION_CTRL: u32 = 53; +pub const PR_SPEC_STORE_BYPASS: u32 = 0; +pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; +pub const PR_SPEC_L1D_FLUSH: u32 = 2; +pub const PR_SPEC_NOT_AFFECTED: u32 = 0; +pub const PR_SPEC_PRCTL: u32 = 1; +pub const PR_SPEC_ENABLE: u32 = 2; +pub const PR_SPEC_DISABLE: u32 = 4; +pub const PR_SPEC_FORCE_DISABLE: u32 = 8; +pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; +pub const PR_PAC_RESET_KEYS: u32 = 54; +pub const PR_PAC_APIAKEY: u32 = 1; +pub const PR_PAC_APIBKEY: u32 = 2; +pub const PR_PAC_APDAKEY: u32 = 4; +pub const PR_PAC_APDBKEY: u32 = 8; +pub const PR_PAC_APGAKEY: u32 = 16; +pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; +pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; +pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; +pub const PR_MTE_TCF_NONE: u32 = 0; +pub const PR_MTE_TCF_SYNC: u32 = 2; +pub const PR_MTE_TCF_ASYNC: u32 = 4; +pub const PR_MTE_TCF_MASK: u32 = 6; +pub const PR_MTE_TAG_SHIFT: u32 = 3; +pub const PR_MTE_TAG_MASK: u32 = 524280; +pub const PR_MTE_TCF_SHIFT: u32 = 1; +pub const PR_SET_IO_FLUSHER: u32 = 57; +pub const PR_GET_IO_FLUSHER: u32 = 58; +pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; +pub const PR_SYS_DISPATCH_OFF: u32 = 0; +pub const PR_SYS_DISPATCH_ON: u32 = 1; +pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; +pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; +pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; +pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; +pub const PR_SCHED_CORE: u32 = 62; +pub const PR_SCHED_CORE_GET: u32 = 0; +pub const PR_SCHED_CORE_CREATE: u32 = 1; +pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; +pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; +pub const PR_SCHED_CORE_MAX: u32 = 4; +pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; +pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; +pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; +pub const PR_SME_SET_VL: u32 = 63; +pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SME_GET_VL: u32 = 64; +pub const PR_SME_VL_LEN_MASK: u32 = 65535; +pub const PR_SME_VL_INHERIT: u32 = 131072; +pub const PR_SET_MDWE: u32 = 65; +pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; +pub const PR_GET_MDWE: u32 = 66; +pub const PR_SET_VMA: u32 = 1398164801; +pub const PR_SET_VMA_ANON_NAME: u32 = 0; diff -Nru temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/system.rs temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/system.rs --- temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/linux-raw-sys/src/x86_64/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,129 @@ +/* automatically generated by rust-bindgen 0.66.1 */ + +pub type __s8 = crate::ctypes::c_schar; +pub type __u8 = crate::ctypes::c_uchar; +pub type __s16 = crate::ctypes::c_short; +pub type __u16 = crate::ctypes::c_ushort; +pub type __s32 = crate::ctypes::c_int; +pub type __u32 = crate::ctypes::c_uint; +pub type __s64 = crate::ctypes::c_longlong; +pub type __u64 = crate::ctypes::c_ulonglong; +pub type __kernel_key_t = crate::ctypes::c_int; +pub type __kernel_mqd_t = crate::ctypes::c_int; +pub type __kernel_old_uid_t = crate::ctypes::c_ushort; +pub type __kernel_old_gid_t = crate::ctypes::c_ushort; +pub type __kernel_old_dev_t = crate::ctypes::c_ulong; +pub type __kernel_long_t = crate::ctypes::c_long; +pub type __kernel_ulong_t = crate::ctypes::c_ulong; +pub type __kernel_ino_t = __kernel_ulong_t; +pub type __kernel_mode_t = crate::ctypes::c_uint; +pub type __kernel_pid_t = crate::ctypes::c_int; +pub type __kernel_ipc_pid_t = crate::ctypes::c_int; +pub type __kernel_uid_t = crate::ctypes::c_uint; +pub type __kernel_gid_t = crate::ctypes::c_uint; +pub type __kernel_suseconds_t = __kernel_long_t; +pub type __kernel_daddr_t = crate::ctypes::c_int; +pub type __kernel_uid32_t = crate::ctypes::c_uint; +pub type __kernel_gid32_t = crate::ctypes::c_uint; +pub type __kernel_size_t = __kernel_ulong_t; +pub type __kernel_ssize_t = __kernel_long_t; +pub type __kernel_ptrdiff_t = __kernel_long_t; +pub type __kernel_off_t = __kernel_long_t; +pub type __kernel_loff_t = crate::ctypes::c_longlong; +pub type __kernel_old_time_t = __kernel_long_t; +pub type __kernel_time_t = __kernel_long_t; +pub type __kernel_time64_t = crate::ctypes::c_longlong; +pub type __kernel_clock_t = __kernel_long_t; +pub type __kernel_timer_t = crate::ctypes::c_int; +pub type __kernel_clockid_t = crate::ctypes::c_int; +pub type __kernel_caddr_t = *mut crate::ctypes::c_char; +pub type __kernel_uid16_t = crate::ctypes::c_ushort; +pub type __kernel_gid16_t = crate::ctypes::c_ushort; +pub type __le16 = __u16; +pub type __be16 = __u16; +pub type __le32 = __u32; +pub type __be32 = __u32; +pub type __le64 = __u64; +pub type __be64 = __u64; +pub type __sum16 = __u16; +pub type __wsum = __u32; +pub type __poll_t = crate::ctypes::c_uint; +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); +#[repr(C)] +#[derive(Debug)] +pub struct sysinfo { +pub uptime: __kernel_long_t, +pub loads: [__kernel_ulong_t; 3usize], +pub totalram: __kernel_ulong_t, +pub freeram: __kernel_ulong_t, +pub sharedram: __kernel_ulong_t, +pub bufferram: __kernel_ulong_t, +pub totalswap: __kernel_ulong_t, +pub freeswap: __kernel_ulong_t, +pub procs: __u16, +pub pad: __u16, +pub totalhigh: __kernel_ulong_t, +pub freehigh: __kernel_ulong_t, +pub mem_unit: __u32, +pub _f: __IncompleteArrayField, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct oldold_utsname { +pub sysname: [crate::ctypes::c_char; 9usize], +pub nodename: [crate::ctypes::c_char; 9usize], +pub release: [crate::ctypes::c_char; 9usize], +pub version: [crate::ctypes::c_char; 9usize], +pub machine: [crate::ctypes::c_char; 9usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct old_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct new_utsname { +pub sysname: [crate::ctypes::c_char; 65usize], +pub nodename: [crate::ctypes::c_char; 65usize], +pub release: [crate::ctypes::c_char; 65usize], +pub version: [crate::ctypes::c_char; 65usize], +pub machine: [crate::ctypes::c_char; 65usize], +pub domainname: [crate::ctypes::c_char; 65usize], +} +pub const SI_LOAD_SHIFT: u32 = 16; +pub const __OLD_UTS_LEN: u32 = 8; +pub const __NEW_UTS_LEN: u32 = 64; +impl __IncompleteArrayField { +#[inline] +pub const fn new() -> Self { +__IncompleteArrayField(::core::marker::PhantomData, []) +} +#[inline] +pub fn as_ptr(&self) -> *const T { +self as *const _ as *const T +} +#[inline] +pub fn as_mut_ptr(&mut self) -> *mut T { +self as *mut _ as *mut T +} +#[inline] +pub unsafe fn as_slice(&self, len: usize) -> &[T] { +::core::slice::from_raw_parts(self.as_ptr(), len) +} +#[inline] +pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { +::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) +} +} +impl ::core::fmt::Debug for __IncompleteArrayField { +fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { +fmt.write_str("__IncompleteArrayField") +} +} diff -Nru temporalio-1.3.0/vendor/log/.cargo-checksum.json temporalio-1.3.0/vendor/log/.cargo-checksum.json --- temporalio-1.3.0/vendor/log/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/log/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"ec02b20ae6390252656b99ca3edf9f0ee457d44d2ada1e0ff5e0a4cbf0f809c3","Cargo.toml":"e9fb9f9514a722e4e49c56ed6e6b3a008de2cfc3c5439373226a01378c7ca444","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"e297502f3ff18aace3858ed44e7d7da1be3cad26cd63887013b8d958b216b671","benches/value.rs":"6ce7689c8c714c93fa58afa984aefe54f0fc279fdd69e1582d013c97d1688eba","src/kv/error.rs":"5dea46a9eb2128442a60f7f8a0e0b9e5f155bc0e9ecc5134f91e466cb04c8a31","src/kv/key.rs":"941979c92db5f9b999b9eba4f96a8d43da034da80849fbfa65277f122b5fc39f","src/kv/mod.rs":"3592b750c206d5a36545d0c5f2e5db79c499c3f96dced13c5aeeacc7409b4ff6","src/kv/source.rs":"4fd7f0083caef44094984c02bd3d15d7e5fd6b95e809b2d6abab31aa8d01f5c3","src/kv/value.rs":"7f0ee0327dcfbb3df3ed4f0c8caed4bebd4b76bb7407f32f100d660f2a10eabd","src/lib.rs":"039fdb0d37e00a10c1ea805b9c0a27b31cfb7a901f075ed77523193248706a1d","src/macros.rs":"f44454d68bbe2d4b319cb3f7480de400d3999cc96cbf86d665ff63ac587ac8aa","src/serde.rs":"1f8614b42ffb1b34bdf58ce3ab6584b760a8a9e9aa6e00b27dc229cbc46f0a2b","triagebot.toml":"a135e10c777cd13459559bdf74fb704c1379af7c9b0f70bc49fa6f5a837daa81"},"package":"b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"} \ No newline at end of file +{"files":{"CHANGELOG.md":"4cf5d5c08ecf2cca9bfc6c0393fb06375675e1a712cd0da17426d54dd6b26281","Cargo.toml":"400053190237140d908218465ab8942fe65196c43925be6faef37e284b5817ff","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"788bda1deb337541be7ddaf8a7483d1c315f008aeab72374973135ad490e06c4","benches/value.rs":"6ce7689c8c714c93fa58afa984aefe54f0fc279fdd69e1582d013c97d1688eba","src/__private_api.rs":"de6799f0772181878a2fbfb93146641243a86f1115f2e8234a255d70105e2e65","src/kv/error.rs":"5dea46a9eb2128442a60f7f8a0e0b9e5f155bc0e9ecc5134f91e466cb04c8a31","src/kv/key.rs":"941979c92db5f9b999b9eba4f96a8d43da034da80849fbfa65277f122b5fc39f","src/kv/mod.rs":"3592b750c206d5a36545d0c5f2e5db79c499c3f96dced13c5aeeacc7409b4ff6","src/kv/source.rs":"4fd7f0083caef44094984c02bd3d15d7e5fd6b95e809b2d6abab31aa8d01f5c3","src/kv/value.rs":"7f0ee0327dcfbb3df3ed4f0c8caed4bebd4b76bb7407f32f100d660f2a10eabd","src/lib.rs":"1332fb825d498244bf068ce929d744c7316888c7f99e4711149af69ed028730c","src/macros.rs":"f0604416b1a839ba84509c17bff3741766cfa401cb09c0b00e33c36ae1c710ad","src/serde.rs":"1f8614b42ffb1b34bdf58ce3ab6584b760a8a9e9aa6e00b27dc229cbc46f0a2b","triagebot.toml":"a135e10c777cd13459559bdf74fb704c1379af7c9b0f70bc49fa6f5a837daa81"},"package":"b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/log/Cargo.toml temporalio-1.3.0/vendor/log/Cargo.toml --- temporalio-1.3.0/vendor/log/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/log/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] rust-version = "1.60.0" name = "log" -version = "0.4.19" +version = "0.4.20" authors = ["The Rust Project Developers"] exclude = ["rfcs/**/*"] description = """ @@ -64,8 +64,9 @@ optional = true default-features = false -[dev-dependencies.rustversion] -version = "1.0" +[dev-dependencies.proc-macro2] +version = "1.0.63" +default-features = false [dev-dependencies.serde] version = "1.0" diff -Nru temporalio-1.3.0/vendor/log/CHANGELOG.md temporalio-1.3.0/vendor/log/CHANGELOG.md --- temporalio-1.3.0/vendor/log/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/log/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -2,6 +2,11 @@ ## [Unreleased] +## [0.4.20] - 2023-07-11 + +* Remove rustversion dev-dependency by @Thomasdezeeuw in https://github.com/rust-lang/log/pull/568 +* Remove `local_inner_macros` usage by @EFanZh in https://github.com/rust-lang/log/pull/570 + ## [0.4.19] - 2023-06-10 * Use target_has_atomic instead of the old atomic_cas cfg by @GuillaumeGomez in https://github.com/rust-lang/log/pull/555 @@ -244,6 +249,7 @@ Look at the [release tags] for information about older releases. [Unreleased]: https://github.com/rust-lang-nursery/log/compare/0.4.18...HEAD +[0.4.20]: https://github.com/rust-lang-nursery/log/compare/0.4.19...0.4.20 [0.4.19]: https://github.com/rust-lang-nursery/log/compare/0.4.18...0.4.19 [0.4.18]: https://github.com/rust-lang-nursery/log/compare/0.4.17...0.4.18 [0.4.17]: https://github.com/rust-lang-nursery/log/compare/0.4.16...0.4.17 diff -Nru temporalio-1.3.0/vendor/log/README.md temporalio-1.3.0/vendor/log/README.md --- temporalio-1.3.0/vendor/log/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/log/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -80,6 +80,7 @@ * [`android_log`](https://docs.rs/android_log/*/android_log/) * [`win_dbg_logger`](https://docs.rs/win_dbg_logger/*/win_dbg_logger/) * [`db_logger`](https://docs.rs/db_logger/*/db_logger/) + * [`log-to-defmt`](https://docs.rs/log-to-defmt/*/log_to_defmt/) * For WebAssembly binaries: * [`console_log`](https://docs.rs/console_log/*/console_log/) * For dynamic libraries: diff -Nru temporalio-1.3.0/vendor/log/src/lib.rs temporalio-1.3.0/vendor/log/src/lib.rs --- temporalio-1.3.0/vendor/log/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/log/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -148,6 +148,7 @@ //! * [android_log] //! * [win_dbg_logger] //! * [db_logger] +//! * [log-to-defmt] //! * For WebAssembly binaries: //! * [console_log] //! * For dynamic libraries: @@ -313,13 +314,14 @@ //! [android_log]: https://docs.rs/android_log/*/android_log/ //! [win_dbg_logger]: https://docs.rs/win_dbg_logger/*/win_dbg_logger/ //! [db_logger]: https://docs.rs/db_logger/*/db_logger/ +//! [log-to-defmt]: https://docs.rs/log-to-defmt/*/log_to_defmt/ //! [console_log]: https://docs.rs/console_log/*/console_log/ //! [structured-logger]: https://docs.rs/structured-logger/latest/structured_logger/ #![doc( html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png", html_favicon_url = "https://www.rust-lang.org/favicon.ico", - html_root_url = "https://docs.rs/log/0.4.19" + html_root_url = "https://docs.rs/log/0.4.20" )] #![warn(missing_docs)] #![deny(missing_debug_implementations, unconditional_recursion)] @@ -1466,64 +1468,7 @@ // WARNING: this is not part of the crate's public API and is subject to change at any time #[doc(hidden)] -#[cfg(not(feature = "kv_unstable"))] -pub fn __private_api_log( - args: fmt::Arguments, - level: Level, - &(target, module_path, file, line): &(&str, &'static str, &'static str, u32), - kvs: Option<&[(&str, &str)]>, -) { - if kvs.is_some() { - panic!( - "key-value support is experimental and must be enabled using the `kv_unstable` feature" - ) - } - - logger().log( - &Record::builder() - .args(args) - .level(level) - .target(target) - .module_path_static(Some(module_path)) - .file_static(Some(file)) - .line(Some(line)) - .build(), - ); -} - -// WARNING: this is not part of the crate's public API and is subject to change at any time -#[doc(hidden)] -#[cfg(feature = "kv_unstable")] -pub fn __private_api_log( - args: fmt::Arguments, - level: Level, - &(target, module_path, file, line): &(&str, &'static str, &'static str, u32), - kvs: Option<&[(&str, &dyn kv::ToValue)]>, -) { - logger().log( - &Record::builder() - .args(args) - .level(level) - .target(target) - .module_path_static(Some(module_path)) - .file_static(Some(file)) - .line(Some(line)) - .key_values(&kvs) - .build(), - ); -} - -// WARNING: this is not part of the crate's public API and is subject to change at any time -#[doc(hidden)] -pub fn __private_api_enabled(level: Level, target: &str) -> bool { - logger().enabled(&Metadata::builder().level(level).target(target).build()) -} - -// WARNING: this is not part of the crate's public API and is subject to change at any time -#[doc(hidden)] -pub mod __private_api { - pub use std::option::Option; -} +pub mod __private_api; /// The statically resolved maximum log level. /// diff -Nru temporalio-1.3.0/vendor/log/src/macros.rs temporalio-1.3.0/vendor/log/src/macros.rs --- temporalio-1.3.0/vendor/log/src/macros.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/log/src/macros.rs 2023-10-30 19:40:00.000000000 +0000 @@ -27,17 +27,18 @@ /// data.0, data.1, private_data); /// # } /// ``` -#[macro_export(local_inner_macros)] +#[macro_export] macro_rules! log { // log!(target: "my_target", Level::Info, key1 = 42, key2 = true; "a {} event", "log"); (target: $target:expr, $lvl:expr, $($key:tt = $value:expr),+; $($arg:tt)+) => ({ let lvl = $lvl; if lvl <= $crate::STATIC_MAX_LEVEL && lvl <= $crate::max_level() { - $crate::__private_api_log( - __log_format_args!($($arg)+), + $crate::__private_api::log( + $crate::__private_api::format_args!($($arg)+), lvl, - &($target, __log_module_path!(), __log_file!(), __log_line!()), - $crate::__private_api::Option::Some(&[$((__log_key!($key), &$value)),+]) + &($target, $crate::__private_api::module_path!(), $crate::__private_api::file!()), + $crate::__private_api::line!(), + $crate::__private_api::Option::Some(&[$(($crate::__log_key!($key), &$value)),+]) ); } }); @@ -46,17 +47,18 @@ (target: $target:expr, $lvl:expr, $($arg:tt)+) => ({ let lvl = $lvl; if lvl <= $crate::STATIC_MAX_LEVEL && lvl <= $crate::max_level() { - $crate::__private_api_log( - __log_format_args!($($arg)+), + $crate::__private_api::log( + $crate::__private_api::format_args!($($arg)+), lvl, - &($target, __log_module_path!(), __log_file!(), __log_line!()), + &($target, $crate::__private_api::module_path!(), $crate::__private_api::file!()), + $crate::__private_api::line!(), $crate::__private_api::Option::None, ); } }); // log!(Level::Info, "a log event") - ($lvl:expr, $($arg:tt)+) => (log!(target: __log_module_path!(), $lvl, $($arg)+)); + ($lvl:expr, $($arg:tt)+) => ($crate::log!(target: $crate::__private_api::module_path!(), $lvl, $($arg)+)); } /// Logs a message at the error level. @@ -73,14 +75,14 @@ /// error!(target: "app_events", "App Error: {}, Port: {}", err_info, 22); /// # } /// ``` -#[macro_export(local_inner_macros)] +#[macro_export] macro_rules! error { // error!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log") // error!(target: "my_target", "a {} event", "log") - (target: $target:expr, $($arg:tt)+) => (log!(target: $target, $crate::Level::Error, $($arg)+)); + (target: $target:expr, $($arg:tt)+) => ($crate::log!(target: $target, $crate::Level::Error, $($arg)+)); // error!("a {} event", "log") - ($($arg:tt)+) => (log!($crate::Level::Error, $($arg)+)) + ($($arg:tt)+) => ($crate::log!($crate::Level::Error, $($arg)+)) } /// Logs a message at the warn level. @@ -97,14 +99,14 @@ /// warn!(target: "input_events", "App received warning: {}", warn_description); /// # } /// ``` -#[macro_export(local_inner_macros)] +#[macro_export] macro_rules! warn { // warn!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log") // warn!(target: "my_target", "a {} event", "log") - (target: $target:expr, $($arg:tt)+) => (log!(target: $target, $crate::Level::Warn, $($arg)+)); + (target: $target:expr, $($arg:tt)+) => ($crate::log!(target: $target, $crate::Level::Warn, $($arg)+)); // warn!("a {} event", "log") - ($($arg:tt)+) => (log!($crate::Level::Warn, $($arg)+)) + ($($arg:tt)+) => ($crate::log!($crate::Level::Warn, $($arg)+)) } /// Logs a message at the info level. @@ -123,14 +125,14 @@ /// conn_info.port, conn_info.speed); /// # } /// ``` -#[macro_export(local_inner_macros)] +#[macro_export] macro_rules! info { // info!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log") // info!(target: "my_target", "a {} event", "log") - (target: $target:expr, $($arg:tt)+) => (log!(target: $target, $crate::Level::Info, $($arg)+)); + (target: $target:expr, $($arg:tt)+) => ($crate::log!(target: $target, $crate::Level::Info, $($arg)+)); // info!("a {} event", "log") - ($($arg:tt)+) => (log!($crate::Level::Info, $($arg)+)) + ($($arg:tt)+) => ($crate::log!($crate::Level::Info, $($arg)+)) } /// Logs a message at the debug level. @@ -148,14 +150,14 @@ /// debug!(target: "app_events", "New position: x: {}, y: {}", pos.x, pos.y); /// # } /// ``` -#[macro_export(local_inner_macros)] +#[macro_export] macro_rules! debug { // debug!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log") // debug!(target: "my_target", "a {} event", "log") - (target: $target:expr, $($arg:tt)+) => (log!(target: $target, $crate::Level::Debug, $($arg)+)); + (target: $target:expr, $($arg:tt)+) => ($crate::log!(target: $target, $crate::Level::Debug, $($arg)+)); // debug!("a {} event", "log") - ($($arg:tt)+) => (log!($crate::Level::Debug, $($arg)+)) + ($($arg:tt)+) => ($crate::log!($crate::Level::Debug, $($arg)+)) } /// Logs a message at the trace level. @@ -175,14 +177,14 @@ /// if pos.y >= 0.0 { "positive" } else { "negative" }); /// # } /// ``` -#[macro_export(local_inner_macros)] +#[macro_export] macro_rules! trace { // trace!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log") // trace!(target: "my_target", "a {} event", "log") - (target: $target:expr, $($arg:tt)+) => (log!(target: $target, $crate::Level::Trace, $($arg)+)); + (target: $target:expr, $($arg:tt)+) => ($crate::log!(target: $target, $crate::Level::Trace, $($arg)+)); // trace!("a {} event", "log") - ($($arg:tt)+) => (log!($crate::Level::Trace, $($arg)+)) + ($($arg:tt)+) => ($crate::log!($crate::Level::Trace, $($arg)+)) } /// Determines if a message logged at the specified level in that module will @@ -211,58 +213,16 @@ /// # fn expensive_call() -> Data { Data { x: 0, y: 0 } } /// # fn main() {} /// ``` -#[macro_export(local_inner_macros)] +#[macro_export] macro_rules! log_enabled { (target: $target:expr, $lvl:expr) => {{ let lvl = $lvl; lvl <= $crate::STATIC_MAX_LEVEL && lvl <= $crate::max_level() - && $crate::__private_api_enabled(lvl, $target) + && $crate::__private_api::enabled(lvl, $target) }}; ($lvl:expr) => { - log_enabled!(target: __log_module_path!(), $lvl) - }; -} - -// The log macro above cannot invoke format_args directly because it uses -// local_inner_macros. A format_args invocation there would resolve to -// $crate::format_args which does not exist. Instead invoke format_args here -// outside of local_inner_macros so that it resolves (probably) to -// core::format_args or std::format_args. Same for the several macros that -// follow. -// -// This is a workaround until we drop support for pre-1.30 compilers. At that -// point we can remove use of local_inner_macros, use $crate:: when invoking -// local macros, and invoke format_args directly. -#[doc(hidden)] -#[macro_export] -macro_rules! __log_format_args { - ($($args:tt)*) => { - format_args!($($args)*) - }; -} - -#[doc(hidden)] -#[macro_export] -macro_rules! __log_module_path { - () => { - module_path!() - }; -} - -#[doc(hidden)] -#[macro_export] -macro_rules! __log_file { - () => { - file!() - }; -} - -#[doc(hidden)] -#[macro_export] -macro_rules! __log_line { - () => { - line!() + $crate::log_enabled!(target: $crate::__private_api::module_path!(), $lvl) }; } @@ -271,7 +231,7 @@ macro_rules! __log_key { // key1 = 42 ($($args:ident)*) => { - stringify!($($args)*) + $crate::__private_api::stringify!($($args)*) }; // "key1" = 42 ($($args:expr)*) => { diff -Nru temporalio-1.3.0/vendor/log/src/__private_api.rs temporalio-1.3.0/vendor/log/src/__private_api.rs --- temporalio-1.3.0/vendor/log/src/__private_api.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/log/src/__private_api.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,57 @@ +//! WARNING: this is not part of the crate's public API and is subject to change at any time + +use crate::{Level, Metadata, Record}; +use std::fmt::Arguments; +pub use std::option::Option; +pub use std::{file, format_args, line, module_path, stringify}; + +#[cfg(not(feature = "kv_unstable"))] +pub fn log( + args: Arguments, + level: Level, + &(target, module_path, file): &(&str, &'static str, &'static str), + line: u32, + kvs: Option<&[(&str, &str)]>, +) { + if kvs.is_some() { + panic!( + "key-value support is experimental and must be enabled using the `kv_unstable` feature" + ) + } + + crate::logger().log( + &Record::builder() + .args(args) + .level(level) + .target(target) + .module_path_static(Some(module_path)) + .file_static(Some(file)) + .line(Some(line)) + .build(), + ); +} + +#[cfg(feature = "kv_unstable")] +pub fn log( + args: Arguments, + level: Level, + &(target, module_path, file): &(&str, &'static str, &'static str), + line: u32, + kvs: Option<&[(&str, &dyn crate::kv::ToValue)]>, +) { + crate::logger().log( + &Record::builder() + .args(args) + .level(level) + .target(target) + .module_path_static(Some(module_path)) + .file_static(Some(file)) + .line(Some(line)) + .key_values(&kvs) + .build(), + ); +} + +pub fn enabled(level: Level, target: &str) -> bool { + crate::logger().enabled(&Metadata::builder().level(level).target(target).build()) +} diff -Nru temporalio-1.3.0/vendor/lru/.cargo-checksum.json temporalio-1.3.0/vendor/lru/.cargo-checksum.json --- temporalio-1.3.0/vendor/lru/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/lru/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"17396fd79a84d7e3bd9c8308ddfdd6955694f0f51c277620ae860ce4be241bf5","Cargo.toml":"14d8b06ac4a1e786b3122462181d1bdbd001fa4895786879319307aaf8b500e4","LICENSE":"061dc50af2cd9340703daf61978af3200cf681b12ea67a323c33ba109a23a45e","README.md":"a869369c74321a06164538f0a3c1e1126ac331ed885d21d58f822c3f95482803","src/lib.rs":"cb5a9509e17b0f39a217037c5dd0e07f12898752ae05bfea36f2418b427ce893"},"package":"718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670"} \ No newline at end of file +{"files":{"CHANGELOG.md":"2da0dcb306696b930bd1840d968e7f3394ff0a02bbf8cc9ab75171b82bbc72db","Cargo.toml":"63f483082b2b587d486ae64c39ea241f758e0d5ee7f0cdbf912685b5aae3ced8","LICENSE":"061dc50af2cd9340703daf61978af3200cf681b12ea67a323c33ba109a23a45e","README.md":"a9e0ca7a8ad3950a51cfa07f2c57e90856e4a86ce7812962a02d3bc93dfc40f3","src/lib.rs":"cb5a9509e17b0f39a217037c5dd0e07f12898752ae05bfea36f2418b427ce893"},"package":"eedb2bdbad7e0634f83989bf596f497b070130daaa398ab22d84c39e266deec5"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/lru/Cargo.toml temporalio-1.3.0/vendor/lru/Cargo.toml --- temporalio-1.3.0/vendor/lru/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/lru/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,7 +11,7 @@ [package] name = "lru" -version = "0.10.1" +version = "0.11.0" authors = ["Jerome Froelich "] description = "A LRU cache implementation" homepage = "https://github.com/jeromefroe/lru-rs" @@ -29,7 +29,7 @@ repository = "https://github.com/jeromefroe/lru-rs.git" [dependencies.hashbrown] -version = "0.13" +version = "0.14" optional = true [dev-dependencies.scoped_threadpool] diff -Nru temporalio-1.3.0/vendor/lru/CHANGELOG.md temporalio-1.3.0/vendor/lru/CHANGELOG.md --- temporalio-1.3.0/vendor/lru/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/lru/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,10 @@ # Changelog -## [v0.10.1](https://github.com/jeromefroe/lru-rs/tree/0.10.1) - 2023-07-29 +## [v0.11.0](https://github.com/jeromefroe/lru-rs/tree/0.11.0) - 2023-07-11 + +- Update dependency on hashbrown to 0.14 and update MSRV to 1.64.0. + +## [v0.10.1](https://github.com/jeromefroe/lru-rs/tree/0.10.1) - 2023-06-29 - Add `try_get_or_insert` method. diff -Nru temporalio-1.3.0/vendor/lru/README.md temporalio-1.3.0/vendor/lru/README.md --- temporalio-1.3.0/vendor/lru/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/lru/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ all of which are O(1). This crate was heavily influenced by the [LRU Cache implementation in an earlier version of Rust's std::collections crate]. -The MSRV for this crate is 1.61.0. +The MSRV for this crate is 1.64.0. ## Example diff -Nru temporalio-1.3.0/vendor/mach/.cargo-checksum.json temporalio-1.3.0/vendor/mach/.cargo-checksum.json --- temporalio-1.3.0/vendor/mach/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -{"files":{"Cargo.toml":"6cf25dae1f0fd842fb63275ae47904879e66b36290f6fc7ed02090f3ac657b51","LICENSE.md":"399507a62fba271ddb3e24dc857e85b571fbb76435546f51b212cf04d8463f58","README.md":"8e5094a355def0f762dcc92fd68f475bb65016dd0fbeadc0d8a50303d6fb5381","ci/build_fail.sh":"6c2401edd356a43739ef6c27deccfc7703f883ff8d21f49395d8edb806542728","ci/deploy_and_run_on_ios_simulator.rs":"acde74c117544575b2e7ef7531759ec0a6e28bd65d69da16944c746f711ec27d","ci/run.sh":"2eef6140f5f53373f961c682d2b292f8d4b57b2124f1f0e53d5168db27f38d52","examples/dump_process_registers.rs":"e9d0d023cb2cc8272f239cd134152dfa0169017c2a454db1490d2f4548efe6c8","src/boolean.rs":"1d24ea9872748881cd7269a383a7c344e3a650df23f0e44e3b6c266fb8205d9a","src/bootstrap.rs":"a5ab69d74ad8bfb8fad1cb45c8c571977c0bf907a70e767309a437580cee184c","src/clock.rs":"a33c1bfb2f174abb695d164c469ee744be52fec4bc345656e6027d063e150d71","src/clock_priv.rs":"a8e6a96896a94eda67c9fb6e45c564581a711cc9fdcf7674251bb6c0c28b47c2","src/clock_reply.rs":"bac04b6602dcdd4daac8e3a0a1e56fa4b6de20cf2c3fe7bb583358166aca8a3b","src/clock_types.rs":"d55d1d2a953e477f9dd064bd684b118235aa7bd79de85cdeaf75e21510aaaefa","src/dyld_kernel.rs":"566a17f597aa29619a1ce15f6b22577fc70ac5356f96e00fddbcb28560a5c83c","src/exc.rs":"2246493bef2c596b92f115ab673a10d50c6003d11abb8e73d7707ebc19e8ae5a","src/exception_types.rs":"c7894831d73145adb1a4b5d2a5d0b346f2b2dc05382b97f2f3f0275d337f6dfc","src/kern_return.rs":"153339995674136ef05d9595bdcf831595db0d0714a737ecd1ccd45391c56657","src/lib.rs":"7570054fdec1fb73200cb1cf736c97bdeeb82f2aef78aec11e8498af769bba86","src/mach_init.rs":"df49bd287fd05fb74bc76254df7607fad0d6b90cb20da803e9f9a1dc2fcfe2fc","src/mach_port.rs":"07e300871eac4687ccc98d725e550482f136f9780f9f353a0f01f768bc58229b","src/mach_time.rs":"b9493e820acf21fee1f6e7e82a510d887925dc1117d6b71b681acc40cfa776af","src/mach_types.rs":"e2d17741ebcdcdff9686ec9ee5c90fb7a150ce990979507da01c351771fb3a19","src/memory_object_types.rs":"6fcb446c00ddd5ef4920efe618bd89df2e87f7ae3cf660a2bc1d25cf1f331dc2","src/message.rs":"501e743438342ea37cf7db81d6ebd17528da9d78e77d1f1643412e7dc569649f","src/port.rs":"36fc636e2cae2c1f69246b54eb3ca2b33d7e75846df50587fb14597d34b05594","src/structs.rs":"132e21e91313e6ec13e3ad5ed9c71852e8a55fbbaba449dbb1b3ca889bed4889","src/task.rs":"282ea602db2d08711785e0050a06b322a3fe4a4aac34b3c9116fe13e033898dd","src/task_info.rs":"cf87cffe567fee8871e0ce9762b7d8bbd5058dfbb309678d382149dedbe7f14a","src/thread_act.rs":"647198e0f9e3fe409a0610ee98560de3af4f152bcc4761f943e67723193b8a25","src/thread_status.rs":"3fe98fadd61ce01b4f9dc3bc0ef8c9496798f0147822a4ddffe5d0eaf2f32c0a","src/traps.rs":"a15d0dc206c53cf69cb9d11c6ed5477b7dd9937ea68b5a453011be9d004c44a9","src/vm.rs":"9edecf858dcd8e22efbc6ad1838cbfa6a0fc5b334bd21d87b3f05d24058b549e","src/vm_attributes.rs":"55fd9c1661a147a4e374051a6da1884f0c9629aabc514e01561f0e0c365aa18a","src/vm_behavior.rs":"a5d195a52602f5ebe2991774c2390a6f20f1bfa82168dd62e88f2804134da1f3","src/vm_inherit.rs":"dbc7432350869733d6e7cf1da8617d97aafbeb1afcb1bdc60ed7ab53e37abf61","src/vm_page_size.rs":"9e5333f750cd7380465cd34b4611c1f7b5251c11befca0d4482a323e0b1c20b2","src/vm_prot.rs":"15f8f82fbdd67ed31185abd5cc3418332f4371d39ecef6a7e47ddf17bdb5146c","src/vm_purgable.rs":"a39a9fcd85f0394cd169c888e2d7e461d56bf97cf9f81a384df06262e40c9f24","src/vm_region.rs":"d95de52828f28987fa95eb54327b2d278f31769091befb653d286b21d51efc73","src/vm_statistics.rs":"49b452bf56080200d6bf3c32ae8b6642b142fbb13560849ef6a2dc96b650ab4a","src/vm_sync.rs":"4897306cf6c57929830766253637c9adc475e472949a351efc8ada28c20e0d0f","src/vm_types.rs":"a47f71193172ce233018dfd40de2b9a56cdfcdfb18e04c1c0761cb6fc36f51b8"},"package":"b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/mach/Cargo.toml temporalio-1.3.0/vendor/mach/Cargo.toml --- temporalio-1.3.0/vendor/mach/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -# 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 believe there's an error in this file please file an -# issue against the rust-lang/cargo repository. If you're -# editing this file be aware that the upstream Cargo.toml -# will likely look very different (and much more reasonable) - -[package] -edition = "2015" -name = "mach" -version = "0.3.2" -authors = ["Nick Fitzgerald ", "David Cuddeback ", "Gonzalo Brito Gadeschi "] -description = "A Rust interface to the user-space API of the Mach 3.0 kernel that underlies OSX." -readme = "README.md" -keywords = ["kernel", "macos", "darwin"] -categories = ["api-bindings", "external-ffi-bindings", "no-std", "os"] -license = "BSD-2-Clause" -repository = "https://github.com/fitzgen/mach" - -[features] -default = [] -deprecated = [] -rustc-dep-of-std = ["rustc-std-workspace-core", "libc/rustc-dep-of-std"] -[target."cfg(any(target_os = \"macos\", target_os = \"ios\"))".dependencies.libc] -version = "0.2" -default-features = false - -[target."cfg(any(target_os = \"macos\", target_os = \"ios\"))".dependencies.rustc-std-workspace-core] -version = "1.0.0" -optional = true -[badges.is-it-maintained-issue-resolution] -repository = "fitzgen/mach" - -[badges.is-it-maintained-open-issues] -repository = "fitzgen/mach" - -[badges.maintenance] -status = "passively-maintained" - -[badges.travis-ci] -repository = "fitzgen/mach" diff -Nru temporalio-1.3.0/vendor/mach/ci/build_fail.sh temporalio-1.3.0/vendor/mach/ci/build_fail.sh --- temporalio-1.3.0/vendor/mach/ci/build_fail.sh 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/ci/build_fail.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -#!/usr/bin/env bash - -set -ex - -: "${TARGET?The TARGET environment variable must be set.}" - -! cargo build --target "${TARGET}" diff -Nru temporalio-1.3.0/vendor/mach/ci/deploy_and_run_on_ios_simulator.rs temporalio-1.3.0/vendor/mach/ci/deploy_and_run_on_ios_simulator.rs --- temporalio-1.3.0/vendor/mach/ci/deploy_and_run_on_ios_simulator.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/ci/deploy_and_run_on_ios_simulator.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,175 +0,0 @@ -// Copyright 2017 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// This is a script to deploy and execute a binary on an iOS simulator. -// The primary use of this is to be able to run unit tests on the simulator and -// retrieve the results. -// -// To do this through Cargo instead, use Dinghy -// (https://github.com/snipsco/dinghy): cargo dinghy install, then cargo dinghy -// test. -// -// Source: this script is part of libc -// https://github.com/rust-lang/libc/blob/master/ci/ios/deploy_and_run_on_ios_simulator.rs -// and should be sync'ed with it when ci breaks (or periodically). - -use std::env; -use std::fs::{self, File}; -use std::io::Write; -use std::path::Path; -use std::process; -use std::process::Command; - -macro_rules! t { - ($e:expr) => (match $e { - Ok(e) => e, - Err(e) => panic!("{} failed with: {}", stringify!($e), e), - }) -} - -// Step one: Wrap as an app -fn package_as_simulator_app(crate_name: &str, test_binary_path: &Path) { - println!("Packaging simulator app"); - drop(fs::remove_dir_all("ios_simulator_app")); - t!(fs::create_dir("ios_simulator_app")); - t!(fs::copy(test_binary_path, - Path::new("ios_simulator_app").join(crate_name))); - - let mut f = t!(File::create("ios_simulator_app/Info.plist")); - t!(f.write_all(format!(r#" - - - - - CFBundleExecutable - {} - CFBundleIdentifier - com.rust.unittests - - - "#, crate_name).as_bytes())); -} - -// Step two: Start the iOS simulator -fn start_simulator() { - println!("Looking for iOS simulator"); - let output = t!(Command::new("xcrun").arg("simctl").arg("list").output()); - assert!(output.status.success()); - let mut simulator_exists = false; - let mut simulator_booted = false; - let mut found_rust_sim = false; - let stdout = t!(String::from_utf8(output.stdout)); - for line in stdout.lines() { - if line.contains("rust_ios") { - if found_rust_sim { - panic!("Duplicate rust_ios simulators found. Please \ - double-check xcrun simctl list."); - } - simulator_exists = true; - simulator_booted = line.contains("(Booted)"); - found_rust_sim = true; - } - } - - if simulator_exists == false { - println!("Creating iOS simulator"); - Command::new("xcrun") - .arg("simctl") - .arg("create") - .arg("rust_ios") - .arg("com.apple.CoreSimulator.SimDeviceType.iPhone-SE") - .arg("com.apple.CoreSimulator.SimRuntime.iOS-10-2") - .check_status(); - } else if simulator_booted == true { - println!("Shutting down already-booted simulator"); - Command::new("xcrun") - .arg("simctl") - .arg("shutdown") - .arg("rust_ios") - .check_status(); - } - - println!("Starting iOS simulator"); - // We can't uninstall the app (if present) as that will hang if the - // simulator isn't completely booted; just erase the simulator instead. - Command::new("xcrun").arg("simctl").arg("erase").arg("rust_ios").check_status(); - Command::new("xcrun").arg("simctl").arg("boot").arg("rust_ios").check_status(); -} - -// Step three: Install the app -fn install_app_to_simulator() { - println!("Installing app to simulator"); - Command::new("xcrun") - .arg("simctl") - .arg("install") - .arg("booted") - .arg("ios_simulator_app/") - .check_status(); -} - -// Step four: Run the app -fn run_app_on_simulator() { - println!("Running app"); - let output = t!(Command::new("xcrun") - .arg("simctl") - .arg("launch") - .arg("--console") - .arg("booted") - .arg("com.rust.unittests") - .output()); - - println!("stdout --\n{}\n", String::from_utf8_lossy(&output.stdout)); - println!("stderr --\n{}\n", String::from_utf8_lossy(&output.stderr)); - - let stdout = String::from_utf8_lossy(&output.stdout); - let passed = stdout.lines() - .find(|l| l.contains("PASSED")) - .map(|l| l.contains("tests")) - .unwrap_or(false); - - println!("Shutting down simulator"); - Command::new("xcrun") - .arg("simctl") - .arg("shutdown") - .arg("rust_ios") - .check_status(); - if !passed { - panic!("tests didn't pass"); - } -} - -trait CheckStatus { - fn check_status(&mut self); -} - -impl CheckStatus for Command { - fn check_status(&mut self) { - println!("\trunning: {:?}", self); - assert!(t!(self.status()).success()); - } -} - -fn main() { - let args: Vec = env::args().collect(); - if args.len() != 2 { - println!("Usage: {} ", args[0]); - process::exit(-1); - } - - let test_binary_path = Path::new(&args[1]); - let crate_name = test_binary_path.file_name().unwrap(); - - package_as_simulator_app(crate_name.to_str().unwrap(), test_binary_path); - start_simulator(); - install_app_to_simulator(); - run_app_on_simulator(); -} diff -Nru temporalio-1.3.0/vendor/mach/ci/run.sh temporalio-1.3.0/vendor/mach/ci/run.sh --- temporalio-1.3.0/vendor/mach/ci/run.sh 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/ci/run.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -#!/usr/bin/env sh - -set -ex - -: "${TARGET?The TARGET environment variable must be set.}" -: "${TRAVIS_RUST_VERSION?The TRAVIS_RUST_VERSION environment variable must be set.}" - -echo "Running tests for target: ${TARGET}" -export RUST_BACKTRACE=1 -export RUST_TEST_THREADS=1 -export RUST_TEST_NOCAPTURE=1 -export CARGO_INCREMENTAL=0 -export CARGO_CODEGEN_UNITS=1 -export RUSTFLAGS="-C codegen-units=1 " - -case "${TARGET}" in - *"ios"*) - export RUSTFLAGS="${RUSTFLAGS} -C link-args=-mios-simulator-version-min=7.0" - rustc ./ci/deploy_and_run_on_ios_simulator.rs -o ios_cargo_runner --verbose - if [ "${TARGET}" = "x86_64-apple-ios" ]; then - export CARGO_TARGET_X86_64_APPLE_IOS_RUNNER - CARGO_TARGET_X86_64_APPLE_IOS_RUNNER="$(pwd)/ios_cargo_runner" - fi - if [ "${TARGET}" = "i386-apple-ios" ]; then - export CARGO_TARGET_I386_APPLE_IOS_RUNNER - CARGO_TARGET_I386_APPLE_IOS_RUNNER="$(pwd)/ios_cargo_runner" - fi - ;; - *) - ;; -esac - -# Build w/o std -cargo clean -cargo build --no-default-features --target "${TARGET}" -vv 2>&1 | tee build_no_std.txt - -# Check that the no-std builds are not linked against a libc with default -# features or the std feature enabled: -! grep -q "default" build_no_std.txt -! grep -q "std" build_no_std.txt -# Make sure that the resulting build contains no std symbols -! find target/ -name "*.rlib" -exec nm {} \; | grep "std" - -# Runs mach's run-time tests: -if [ -z "$NORUN" ]; then - cargo test --target "${TARGET}" -vv - cargo test --target "${TARGET}" -vv --features deprecated - cargo test --no-default-features --target "${TARGET}" -vv -fi - -# Runs ctest to verify mach's ABI against the system libraries: -if [ -z "$NOCTEST" ]; then - if [ "${TRAVIS_RUST_VERSION}" = "nightly" ]; then - cargo test --manifest-path mach-test/Cargo.toml --target "${TARGET}" -vv - cargo test --no-default-features --manifest-path mach-test/Cargo.toml --target "${TARGET}" -vv - fi -fi diff -Nru temporalio-1.3.0/vendor/mach/examples/dump_process_registers.rs temporalio-1.3.0/vendor/mach/examples/dump_process_registers.rs --- temporalio-1.3.0/vendor/mach/examples/dump_process_registers.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/examples/dump_process_registers.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,136 +0,0 @@ -//! A script to read and dump to stdout the current register values of a -//! process. - -extern crate libc; -extern crate mach; - -use std::io; -use std::mem; -use std::ptr; - -use mach::kern_return::KERN_SUCCESS; -use mach::mach_types::{task_t, thread_act_array_t}; -use mach::message::mach_msg_type_number_t; -use mach::port::mach_port_name_t; -use mach::structs::x86_thread_state64_t; -use mach::task::{task_resume, task_suspend, task_threads}; -use mach::thread_act::thread_get_state; -use mach::thread_status::x86_THREAD_STATE64; -use mach::traps::{mach_task_self, task_for_pid}; - -use std::io::prelude::*; - -fn read_int() -> Result<::libc::c_int, ()> { - let stdin = io::stdin(); - let mut line = String::new(); - - stdin.read_line(&mut line).ok().unwrap(); - let mut value: ::libc::c_int = 0; - - for c in line.chars().take_while(|&c| c != '\n') { - if let Some(d) = c.to_digit(10) { - value = value * 10 + (d as ::libc::c_int); - } else { - return Err(()); - } - } - return Ok(value); -} - -fn resume(task: task_t) { - unsafe { - let kret = task_resume(task); - if kret != KERN_SUCCESS { - println!("Did not succeed in resuming task."); - println!("kern_return_t error {}", kret); - panic!(); - } - } -} - -fn main() { - print!("Enter pid: "); - io::stdout().flush().ok(); - - let pid = match read_int() { - Ok(v) => v, - Err(_) => { - println!("Bad pid!"); - return; - } - }; - - println!("pid = {}", &pid); - - let task: mach_port_name_t = 0; - unsafe { - let kret = task_for_pid( - mach_task_self() as mach_port_name_t, - pid, - mem::transmute(&task), - ); - if kret != KERN_SUCCESS { - println!("Did not succeed in getting task for pid {}", pid); - println!("kern_return_t error {}", kret); - println!(""); - println!("Did you forget to run with 'sudo'? This script will"); - println!("probably fail without it."); - return; - } - } - - println!("task = 0x{:x}", &task); - - unsafe { - let kret = task_suspend(task as task_t); - if kret != KERN_SUCCESS { - println!("Did not succeed in suspending task."); - println!("kern_return_t error {}", kret); - return; - } - } - - let thread_list: thread_act_array_t = ptr::null_mut(); - let thread_count: mach_msg_type_number_t = 0; - unsafe { - let kret = task_threads( - task as task_t, - mem::transmute(&thread_list), - mem::transmute(&thread_count), - ); - if kret != KERN_SUCCESS { - println!("Did not succeed in getting task's threads"); - println!("kern_return_t error {}", kret); - resume(task as task_t); - return; - } - } - - println!("Task is running {} threads", &thread_count); - - unsafe { - let threads = - Vec::from_raw_parts(thread_list, thread_count as usize, thread_count as usize); - let state = x86_thread_state64_t::new(); - let state_count = x86_thread_state64_t::count(); - for (idx, &thread) in threads.iter().enumerate() { - println!("Thread {}:", idx); - let kret = thread_get_state( - thread, - x86_THREAD_STATE64, - mem::transmute(&state), - mem::transmute(&state_count), - ); - if kret != KERN_SUCCESS { - println!("Did not succeed in getting task's thread state"); - println!("kern_return_t error {}", kret); - continue; - } - - println!("{:?}", state); - } - } - - resume(task as task_t); - println!("Success!"); -} diff -Nru temporalio-1.3.0/vendor/mach/LICENSE.md temporalio-1.3.0/vendor/mach/LICENSE.md --- temporalio-1.3.0/vendor/mach/LICENSE.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/LICENSE.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -Copyright (c) 2015, Nick Fitzgerald -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff -Nru temporalio-1.3.0/vendor/mach/README.md temporalio-1.3.0/vendor/mach/README.md --- temporalio-1.3.0/vendor/mach/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/README.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -[![Build Status][travis_ci_badge]][travis_ci] [![Latest Version]][crates.io] [![docs]][docs.rs] - -A Rust interface to the **user-space** API of the Mach 3.0 kernel exposed in -`/usr/include/mach` that underlies macOS and is linked via `libSystem` (and -`libsystem_kernel`). - -This library does not expose the **kernel-space** API of the Mach 3.0 kernel -exposed in -`SDK/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/mach`. - -That is, if you are writing a kernel-resident device drivers or some other -kernel extensions you have to use something else. The user-space kernel API is -often API-incompatible with the kernel space one, and even in the cases where -they match, they are sometimes ABI incompatible such that using this library -would have **undefined behavior**. - -# Usage - -Add the following to your `Cargo.toml` to conditionally include mach on those -platforms that support it. - -```toml -[target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies.mach] -version = "0.3" -``` - -The following crate features are available: - -* **deprecated** (disabled by default): exposes deprecated APIs that have been - removed from the latest versions of the MacOS SDKs. The behavior of using - these APIs on MacOS versions that do not support them is undefined (hopefully - a linker error). - -# Platform support - -The following table describes the current CI set-up: - -| Target | Min. Rust | XCode | build | ctest | run | -|-----------------------|-----------|---------------|-------|-------|-----| -| `x86_64-apple-darwin` | 1.33.0 | 6.4 - 10.0 | ✓ | ✓ | ✓ | -| `i686-apple-darwin` | 1.33.0 | 6.4 - 10.0 | ✓ | ✓ | ✓ | -| `i386-apple-ios` | 1.33.0 | 6.4 - 9.4 [0] | ✓ | - | - | -| `x86_64-apple-ios` | 1.33.0 | 6.4 - 10.0 | ✓ | - | - | -| `armv7-apple-ios` | nightly | 6.4 - 10.0 | ✓ | - | - | -| `aarch64-apple-ios` | nightly | 6.4 - 10.0 | ✓ | - | - | - -[0] `i386-apple-ios` is deprecated in XCode 10.0. - -[travis_ci]: https://travis-ci.org/fitzgen/mach -[travis_ci_badge]: https://travis-ci.org/fitzgen/mach.png?branch=master -[crates.io]: https://crates.io/crates/mach -[Latest Version]: https://img.shields.io/crates/v/mach.svg -[docs]: https://docs.rs/mach/badge.svg -[docs.rs]: https://docs.rs/mach/ - diff -Nru temporalio-1.3.0/vendor/mach/src/boolean.rs temporalio-1.3.0/vendor/mach/src/boolean.rs --- temporalio-1.3.0/vendor/mach/src/boolean.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/boolean.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -//! This module corresponds to `mach/i386/boolean.h`. - -#[cfg(target_arch = "x86_64")] -pub type boolean_t = ::libc::c_uint; - -#[cfg(not(target_arch = "x86_64"))] -pub type boolean_t = ::libc::c_int; diff -Nru temporalio-1.3.0/vendor/mach/src/bootstrap.rs temporalio-1.3.0/vendor/mach/src/bootstrap.rs --- temporalio-1.3.0/vendor/mach/src/bootstrap.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/bootstrap.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,76 +0,0 @@ -//! This module corresponds to `bootstrap.h` - -use boolean::boolean_t; -use kern_return::kern_return_t; -use port::mach_port_t; - -pub const BOOTSTRAP_MAX_NAME_LEN: ::libc::c_uint = 128; -pub const BOOTSTRAP_MAX_CMD_LEN: ::libc::c_uint = 512; - -pub const BOOTSTRAP_MAX_LOOKUP_COUNT: ::libc::c_uint = 20; - -pub const BOOTSTRAP_SUCCESS: ::libc::c_uint = 0; -pub const BOOTSTRAP_NOT_PRIVILEGED: ::libc::c_uint = 1100; -pub const BOOTSTRAP_NAME_IN_USE: ::libc::c_uint = 1101; -pub const BOOTSTRAP_UNKNOWN_SERVICE: ::libc::c_uint = 1102; -pub const BOOTSTRAP_SERVICE_ACTIVE: ::libc::c_uint = 1103; -pub const BOOTSTRAP_BAD_COUNT: ::libc::c_uint = 1104; -pub const BOOTSTRAP_NO_MEMORY: ::libc::c_uint = 1105; -pub const BOOTSTRAP_NO_CHILDREN: ::libc::c_uint = 1106; - -pub const BOOTSTRAP_STATUS_INACTIVE: ::libc::c_uint = 0; -pub const BOOTSTRAP_STATUS_ACTIVE: ::libc::c_uint = 1; -pub const BOOTSTRAP_STATUS_ON_DEMAND: ::libc::c_uint = 2; - -pub type name_t = [::libc::c_char; 128]; -pub type cmd_t = [::libc::c_char; 512]; -pub type name_array_t = *mut name_t; -pub type bootstrap_status_t = ::libc::c_int; -pub type bootstrap_status_array_t = *mut bootstrap_status_t; -pub type bootstrap_property_t = ::libc::c_uint; -pub type bootstrap_property_array_t = *mut bootstrap_property_t; -pub type bool_array_t = *mut boolean_t; - -extern "C" { - pub static bootstrap_port: mach_port_t; - pub fn bootstrap_create_server( - bp: mach_port_t, - server_cmd: *mut ::libc::c_char, - server_uid: ::libc::uid_t, - on_demand: boolean_t, - server_port: *mut mach_port_t, - ) -> kern_return_t; - pub fn bootstrap_subset( - bp: mach_port_t, - requestor_port: mach_port_t, - subset_port: *mut mach_port_t, - ) -> kern_return_t; - pub fn bootstrap_unprivileged(bp: mach_port_t, unpriv_port: *mut mach_port_t) -> kern_return_t; - pub fn bootstrap_parent(bp: mach_port_t, parent_port: *mut mach_port_t) -> kern_return_t; - pub fn bootstrap_register( - bp: mach_port_t, - service_name: *mut ::libc::c_char, - sp: mach_port_t, - ) -> kern_return_t; - pub fn bootstrap_create_service( - bp: mach_port_t, - service_name: *mut ::libc::c_char, - sp: *mut mach_port_t, - ) -> kern_return_t; - pub fn bootstrap_check_in( - bp: mach_port_t, - service_name: *const ::libc::c_char, - sp: *mut mach_port_t, - ) -> kern_return_t; - pub fn bootstrap_look_up( - bp: mach_port_t, - service_name: *const ::libc::c_char, - sp: *mut mach_port_t, - ) -> kern_return_t; - pub fn bootstrap_status( - bp: mach_port_t, - service_name: *mut ::libc::c_char, - service_active: *mut bootstrap_status_t, - ) -> kern_return_t; - pub fn bootstrap_strerror(r: kern_return_t) -> *const ::libc::c_char; -} diff -Nru temporalio-1.3.0/vendor/mach/src/clock_priv.rs temporalio-1.3.0/vendor/mach/src/clock_priv.rs --- temporalio-1.3.0/vendor/mach/src/clock_priv.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/clock_priv.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -//! This module roughly corresponds to `mach/clock_priv.h`. - -use clock_types::{clock_attr_t, clock_flavor_t, mach_timespec_t}; -use kern_return::kern_return_t; -use mach_types::clock_ctrl_t; -use message::mach_msg_type_number_t; - -extern "C" { - pub fn clock_set_time(clock_ctrl: clock_ctrl_t, new_time: mach_timespec_t) -> kern_return_t; - pub fn clock_set_attributes( - clock_ctrl: clock_ctrl_t, - flavor: clock_flavor_t, - clock_attr: clock_attr_t, - clock_attrCnt: mach_msg_type_number_t, - ) -> kern_return_t; -} diff -Nru temporalio-1.3.0/vendor/mach/src/clock_reply.rs temporalio-1.3.0/vendor/mach/src/clock_reply.rs --- temporalio-1.3.0/vendor/mach/src/clock_reply.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/clock_reply.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -//! This module roughly corresponds to `mach/clock_reply.h`. - -use clock_types::{alarm_type_t, mach_timespec_t}; -use kern_return::kern_return_t; -use mach_types::clock_reply_t; -use message::mach_msg_type_name_t; - -extern "C" { - pub fn clock_alarm_reply( - alarm_port: clock_reply_t, - alarm_portPoly: mach_msg_type_name_t, - alarm_code: kern_return_t, - alarm_type: alarm_type_t, - alarm_time: mach_timespec_t, - ) -> kern_return_t; -} diff -Nru temporalio-1.3.0/vendor/mach/src/clock.rs temporalio-1.3.0/vendor/mach/src/clock.rs --- temporalio-1.3.0/vendor/mach/src/clock.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/clock.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -//! This module roughly corresponds to `mach/clock.h`. - -pub const clock_MSG_COUNT: ::libc::c_uint = 3; - -use clock_types::{alarm_type_t, clock_attr_t, clock_flavor_t, mach_timespec_t}; -use kern_return::kern_return_t; -use mach_types::{clock_reply_t, clock_serv_t}; -use message::mach_msg_type_number_t; - -extern "C" { - pub fn clock_get_time( - clock_serv: clock_serv_t, - cur_time: *mut mach_timespec_t, - ) -> kern_return_t; - pub fn clock_get_attributes( - clock_serv: clock_serv_t, - flavor: clock_flavor_t, - clock_attr: clock_attr_t, - clock_attrCnt: *mut mach_msg_type_number_t, - ) -> kern_return_t; - pub fn clock_alarm( - clock_serv: clock_serv_t, - alarm_type: alarm_type_t, - alarm_time: mach_timespec_t, - alarm_port: clock_reply_t, - ) -> kern_return_t; -} diff -Nru temporalio-1.3.0/vendor/mach/src/clock_types.rs temporalio-1.3.0/vendor/mach/src/clock_types.rs --- temporalio-1.3.0/vendor/mach/src/clock_types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/clock_types.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,75 +0,0 @@ -//! This module roughly corresponds to `mach/clock_types.h`. - -pub type alarm_type_t = ::libc::c_int; -pub type sleep_type_t = ::libc::c_int; -pub type clock_id_t = ::libc::c_int; -pub type clock_flavor_t = ::libc::c_int; -pub type clock_attr_t = *mut ::libc::c_int; -pub type clock_res_t = ::libc::c_int; - -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct mach_timespec { - pub tv_sec: ::libc::c_uint, - pub tv_nsec: clock_res_t, -} -pub type mach_timespec_t = mach_timespec; - -pub const SYSTEM_CLOCK: ::libc::c_uint = 0; -pub const CALENDAR_CLOCK: ::libc::c_uint = 1; -pub const REALTIME_CLOCK: ::libc::c_uint = 0; - -pub const CLOCK_GET_TIME_RES: ::libc::c_uint = 1; -pub const CLOCK_ALARM_CURRES: ::libc::c_uint = 3; -pub const CLOCK_ALARM_MINRES: ::libc::c_uint = 4; -pub const CLOCK_ALARM_MAXRES: ::libc::c_uint = 5; - -pub const NSEC_PER_USEC: ::libc::c_ulonglong = 1000; -pub const USEC_PER_SEC: ::libc::c_ulonglong = 1_000_000; -pub const NSEC_PER_SEC: ::libc::c_ulonglong = 1_000_000_000; -pub const NSEC_PER_MSEC: ::libc::c_ulonglong = 1_000_000; - -#[allow(non_snake_case)] -pub fn BAD_MACH_TIMESPEC(t: mach_timespec) -> bool { - t.tv_nsec < 0 || (t.tv_nsec as ::libc::c_ulonglong) >= NSEC_PER_SEC -} - -#[allow(non_snake_case)] -pub fn CMP_MACH_TIMESPEC(t1: &mach_timespec, t2: &mach_timespec) -> ::libc::c_ulonglong { - if t1.tv_sec > t2.tv_sec { - return NSEC_PER_SEC; - } - if t1.tv_sec < t2.tv_sec { - return !NSEC_PER_SEC; - } - (t1.tv_nsec as ::libc::c_ulonglong) - (t2.tv_nsec as ::libc::c_ulonglong) -} - -#[allow(non_snake_case)] -pub fn ADD_MACH_TIMESPEC(t1: &mut mach_timespec, t2: &mach_timespec) { - t1.tv_nsec += t2.tv_nsec; - if (t1.tv_nsec as ::libc::c_ulonglong) >= NSEC_PER_SEC { - t1.tv_nsec = (t1.tv_nsec as ::libc::c_ulonglong - NSEC_PER_SEC) as clock_res_t; - t1.tv_sec += 1; - } - t1.tv_sec += t2.tv_sec; -} - -#[allow(non_snake_case)] -pub fn SUB_MACH_TIMESPEC(t1: &mut mach_timespec, t2: &mach_timespec) { - t1.tv_nsec -= t2.tv_nsec; - if t1.tv_nsec < 0 { - t1.tv_nsec = (t1.tv_nsec as ::libc::c_ulonglong + NSEC_PER_SEC) as clock_res_t; - t1.tv_sec -= 1; - } - t1.tv_sec -= t2.tv_sec; -} - -pub const ALRMTYPE: ::libc::c_uint = 0xff; -pub const TIME_ABSOLUTE: ::libc::c_uint = 0x00; -pub const TIME_RELATIVE: ::libc::c_uint = 0x01; - -#[allow(non_snake_case)] -pub fn BAD_ALRMTYPE(t: ::libc::c_uint) -> bool { - t & (!TIME_RELATIVE) != 0 -} diff -Nru temporalio-1.3.0/vendor/mach/src/dyld_kernel.rs temporalio-1.3.0/vendor/mach/src/dyld_kernel.rs --- temporalio-1.3.0/vendor/mach/src/dyld_kernel.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/dyld_kernel.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -//! This module roughly corresponds to `mach/dyld_kernel.h`. - -use boolean::boolean_t; -use mach_types::{fsid_t, fsobj_id_t, uuid_t}; - -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct dyld_kernel_image_info { - pub uuid: uuid_t, - pub fsobjid: fsobj_id_t, - pub fsid: fsid_t, - pub load_addr: u64, -} - -#[allow(non_snake_case)] -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct dyld_kernel_process_info { - pub cache_image_info: dyld_kernel_image_info, - pub timestamp: u64, - pub imageCount: u32, - pub initialImageCount: u32, - pub dyldState: u8, - pub no_cache: boolean_t, - pub private_cache: boolean_t, -} - -pub type dyld_kernel_image_info_t = dyld_kernel_image_info; -pub type dyld_kernel_process_info_t = dyld_kernel_process_info; -pub type dyld_kernel_image_info_array_t = *mut dyld_kernel_image_info_t; diff -Nru temporalio-1.3.0/vendor/mach/src/exception_types.rs temporalio-1.3.0/vendor/mach/src/exception_types.rs --- temporalio-1.3.0/vendor/mach/src/exception_types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/exception_types.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ -//! This module roughly corresponds to `mach/exception_types.h`. - -use port::mach_port_t; -use thread_status::thread_state_flavor_t; -use vm_types::integer_t; - -pub const EXC_BAD_ACCESS: ::libc::c_uint = 1; -pub const EXC_BAD_INSTRUCTION: ::libc::c_uint = 2; -pub const EXC_ARITHMETIC: ::libc::c_uint = 3; -pub const EXC_EMULATION: ::libc::c_uint = 4; -pub const EXC_SOFTWARE: ::libc::c_uint = 5; -pub const EXC_BREAKPOINT: ::libc::c_uint = 6; -pub const EXC_SYSCALL: ::libc::c_uint = 7; -pub const EXC_MACH_SYSCALL: ::libc::c_uint = 8; -pub const EXC_RPC_ALERT: ::libc::c_uint = 9; -pub const EXC_CRASH: ::libc::c_uint = 10; -pub const EXC_RESOURCE: ::libc::c_uint = 11; -pub const EXC_GUARD: ::libc::c_uint = 12; -pub const EXC_CORPSE_NOTIFY: ::libc::c_uint = 13; -pub const EXC_CORPSE_VARIANT_BIT: ::libc::c_uint = 256; -pub const EXCEPTION_DEFAULT: ::libc::c_uint = 1; -pub const EXCEPTION_STATE: ::libc::c_uint = 2; -pub const EXCEPTION_STATE_IDENTITY: ::libc::c_uint = 3; -pub const MACH_EXCEPTION_CODES: ::libc::c_uint = 2_147_483_648; -pub const EXC_MASK_BAD_ACCESS: ::libc::c_uint = 2; -pub const EXC_MASK_BAD_INSTRUCTION: ::libc::c_uint = 4; -pub const EXC_MASK_ARITHMETIC: ::libc::c_uint = 8; -pub const EXC_MASK_EMULATION: ::libc::c_uint = 16; -pub const EXC_MASK_SOFTWARE: ::libc::c_uint = 32; -pub const EXC_MASK_BREAKPOINT: ::libc::c_uint = 64; -pub const EXC_MASK_SYSCALL: ::libc::c_uint = 128; -pub const EXC_MASK_MACH_SYSCALL: ::libc::c_uint = 256; -pub const EXC_MASK_RPC_ALERT: ::libc::c_uint = 512; -pub const EXC_MASK_CRASH: ::libc::c_uint = 1024; -pub const EXC_MASK_RESOURCE: ::libc::c_uint = 2048; -pub const EXC_MASK_GUARD: ::libc::c_uint = 4096; -pub const EXC_MASK_CORPSE_NOTIFY: ::libc::c_uint = 8192; -pub const EXC_MASK_ALL: ::libc::c_uint = 7166; -pub const FIRST_EXCEPTION: ::libc::c_uint = 1; -pub const EXC_SOFT_SIGNAL: ::libc::c_uint = 65_539; -pub const EXC_MACF_MIN: ::libc::c_uint = 131_072; -pub const EXC_MACF_MAX: ::libc::c_uint = 196_607; - -pub type exception_type_t = ::libc::c_int; -pub type exception_data_type_t = integer_t; -pub type mach_exception_data_type_t = i64; -pub type exception_behavior_t = ::libc::c_int; -pub type exception_data_t = *mut exception_data_type_t; -pub type mach_exception_data_t = *mut mach_exception_data_type_t; -pub type exception_mask_t = ::libc::c_uint; -pub type exception_mask_array_t = *mut exception_mask_t; -pub type exception_behavior_array_t = *mut exception_behavior_t; -pub type exception_flavor_array_t = *mut thread_state_flavor_t; -pub type exception_port_array_t = *mut mach_port_t; -pub type mach_exception_code_t = mach_exception_data_type_t; -pub type mach_exception_subcode_t = mach_exception_data_type_t; diff -Nru temporalio-1.3.0/vendor/mach/src/exc.rs temporalio-1.3.0/vendor/mach/src/exc.rs --- temporalio-1.3.0/vendor/mach/src/exc.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/exc.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ -//! This module roughly corresponds to `mach/exc.h`. - -use exception_types::{exception_data_t, exception_type_t}; -use kern_return::kern_return_t; -use message::mach_msg_type_number_t; -use port::mach_port_t; -use thread_status::thread_state_t; - -pub const exc_MSG_COUNT: ::libc::c_uint = 3; - -extern "C" { - pub fn exception_raise( - exception_port: mach_port_t, - thread: mach_port_t, - task: mach_port_t, - exception: exception_type_t, - code: exception_data_t, - codeCnt: mach_msg_type_number_t, - ) -> kern_return_t; - pub fn exception_raise_state( - exception_port: mach_port_t, - exception: exception_type_t, - code: exception_data_t, - codeCnt: mach_msg_type_number_t, - flavor: *mut ::libc::c_int, - old_state: thread_state_t, - old_stateCnt: mach_msg_type_number_t, - new_state: thread_state_t, - new_stateCnt: *mut mach_msg_type_number_t, - ) -> kern_return_t; - pub fn exception_raise_state_identity( - exception_port: mach_port_t, - thread: mach_port_t, - task: mach_port_t, - exception: exception_type_t, - code: exception_data_t, - codeCnt: mach_msg_type_number_t, - flavor: *mut ::libc::c_int, - old_state: thread_state_t, - old_stateCnt: mach_msg_type_number_t, - new_state: thread_state_t, - new_stateCnt: *mut mach_msg_type_number_t, - ) -> kern_return_t; -} diff -Nru temporalio-1.3.0/vendor/mach/src/kern_return.rs temporalio-1.3.0/vendor/mach/src/kern_return.rs --- temporalio-1.3.0/vendor/mach/src/kern_return.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/kern_return.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -//! This module corresponds to `mach/kern_return.h` and -//! `mach/i386/kern_return.h`. - -pub type kern_return_t = ::libc::c_int; - -pub const KERN_SUCCESS: kern_return_t = 0; -pub const KERN_INVALID_ADDRESS: kern_return_t = 1; -pub const KERN_PROTECTION_FAILURE: kern_return_t = 2; -pub const KERN_NO_SPACE: kern_return_t = 3; -pub const KERN_INVALID_ARGUMENT: kern_return_t = 4; -pub const KERN_FAILURE: kern_return_t = 5; -pub const KERN_RESOURCE_SHORTAGE: kern_return_t = 6; -pub const KERN_NOT_RECEIVER: kern_return_t = 7; -pub const KERN_NO_ACCESS: kern_return_t = 8; -pub const KERN_MEMORY_FAILURE: kern_return_t = 9; -pub const KERN_MEMORY_ERROR: kern_return_t = 10; -pub const KERN_ALREADY_IN_SET: kern_return_t = 11; -pub const KERN_NOT_IN_SET: kern_return_t = 12; -pub const KERN_NAME_EXISTS: kern_return_t = 13; -pub const KERN_ABORTED: kern_return_t = 14; -pub const KERN_INVALID_NAME: kern_return_t = 15; -pub const KERN_INVALID_TASK: kern_return_t = 16; -pub const KERN_INVALID_RIGHT: kern_return_t = 17; -pub const KERN_INVALID_VALUE: kern_return_t = 18; -pub const KERN_UREFS_OVERFLOW: kern_return_t = 19; -pub const KERN_INVALID_CAPABILITY: kern_return_t = 20; -pub const KERN_RIGHT_EXISTS: kern_return_t = 21; -pub const KERN_INVALID_HOST: kern_return_t = 22; -pub const KERN_MEMORY_PRESENT: kern_return_t = 23; -pub const KERN_MEMORY_DATA_MOVED: kern_return_t = 24; -pub const KERN_MEMORY_RESTART_COPY: kern_return_t = 25; -pub const KERN_INVALID_PROCESSOR_SET: kern_return_t = 26; -pub const KERN_POLICY_LIMIT: kern_return_t = 27; -pub const KERN_INVALID_POLICY: kern_return_t = 28; -pub const KERN_INVALID_OBJECT: kern_return_t = 29; -pub const KERN_ALREADY_WAITING: kern_return_t = 30; -pub const KERN_DEFAULT_SET: kern_return_t = 31; -pub const KERN_EXCEPTION_PROTECTED: kern_return_t = 32; -pub const KERN_INVALID_LEDGER: kern_return_t = 33; -pub const KERN_INVALID_MEMORY_CONTROL: kern_return_t = 34; -pub const KERN_INVALID_SECURITY: kern_return_t = 35; -pub const KERN_NOT_DEPRESSED: kern_return_t = 36; -pub const KERN_TERMINATED: kern_return_t = 37; -pub const KERN_LOCK_SET_DESTROYED: kern_return_t = 38; -pub const KERN_LOCK_UNSTABLE: kern_return_t = 39; -pub const KERN_LOCK_OWNED: kern_return_t = 40; -pub const KERN_LOCK_OWNED_SELF: kern_return_t = 41; -pub const KERN_SEMAPHORE_DESTROYED: kern_return_t = 42; -pub const KERN_RPC_SERVER_TERMINATED: kern_return_t = 43; -pub const KERN_RPC_TERMINATE_ORPHAN: kern_return_t = 44; -pub const KERN_RPC_CONTINUE_ORPHAN: kern_return_t = 45; -pub const KERN_NOT_SUPPORTED: kern_return_t = 46; -pub const KERN_NODE_DOWN: kern_return_t = 47; -pub const KERN_NOT_WAITING: kern_return_t = 48; -pub const KERN_OPERATION_TIMED_OUT: kern_return_t = 49; -pub const KERN_CODESIGN_ERROR: kern_return_t = 50; -pub const KERN_POLICY_STATIC: kern_return_t = 51; -pub const KERN_RETURN_MAX: kern_return_t = 0x100; diff -Nru temporalio-1.3.0/vendor/mach/src/lib.rs temporalio-1.3.0/vendor/mach/src/lib.rs --- temporalio-1.3.0/vendor/mach/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -#![allow(non_camel_case_types)] -#![allow(non_upper_case_globals)] -#![deny(missing_debug_implementations)] -#![deny(missing_copy_implementations)] -#![cfg_attr(feature = "rustc-dep-of-std", feature(no_core))] -#![cfg_attr(feature = "rustc-dep-of-std", no_core)] -#![cfg_attr(not(feature = "rustc-dep-of-std"), no_std)] -#![allow( - clippy::module_name_repetitions, - clippy::cast_sign_loss, - clippy::cast_possible_truncation, - clippy::trivially_copy_pass_by_ref -)] - -#[cfg(not(any(target_os = "macos", target_os = "ios")))] -compile_error!("mach requires MacOSX or iOS"); - -#[cfg(feature = "rustc-dep-of-std")] -extern crate rustc_std_workspace_core as core; - -extern crate libc; - -#[allow(unused_imports)] -use core::{clone, cmp, default, fmt, hash, marker, mem, option}; - -pub mod boolean; -pub mod bootstrap; -pub mod clock; -pub mod clock_priv; -pub mod clock_reply; -pub mod clock_types; // TODO: test -pub mod dyld_kernel; -// pub mod error; // TODO -pub mod exc; -pub mod exception_types; -pub mod kern_return; -pub mod mach_init; -pub mod mach_port; -pub mod mach_time; -pub mod mach_types; -pub mod memory_object_types; -pub mod message; -pub mod port; -pub mod structs; -pub mod task; -pub mod task_info; -pub mod thread_act; -pub mod thread_status; -pub mod traps; -pub mod vm; -pub mod vm_attributes; -pub mod vm_behavior; -pub mod vm_inherit; -pub mod vm_page_size; -pub mod vm_prot; -pub mod vm_purgable; -pub mod vm_region; -pub mod vm_statistics; -pub mod vm_sync; -pub mod vm_types; diff -Nru temporalio-1.3.0/vendor/mach/src/mach_init.rs temporalio-1.3.0/vendor/mach/src/mach_init.rs --- temporalio-1.3.0/vendor/mach/src/mach_init.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/mach_init.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -//! This module corresponds to `mach/mach_init.h`. - -use mach_types::thread_port_t; - -extern "C" { - pub fn mach_thread_self() -> thread_port_t; -} - -#[cfg(test)] -mod tests { - use mach_init::*; - use port::*; - - #[test] - fn mach_thread_self_test() { - unsafe { - let this_thread = mach_thread_self(); - assert!(this_thread != MACH_PORT_NULL); - assert!(this_thread != MACH_PORT_DEAD); - } - } -} diff -Nru temporalio-1.3.0/vendor/mach/src/mach_port.rs temporalio-1.3.0/vendor/mach/src/mach_port.rs --- temporalio-1.3.0/vendor/mach/src/mach_port.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/mach_port.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,29 +0,0 @@ -//! This module corresponds to `mach/mach_port.h` - -use kern_return::kern_return_t; -use mach_types::ipc_space_t; -use message::mach_msg_type_name_t; -use port::{mach_port_name_t, mach_port_right_t, mach_port_t}; - -extern "C" { - pub fn mach_port_allocate( - task: ipc_space_t, - right: mach_port_right_t, - name: *mut mach_port_name_t, - ) -> kern_return_t; - pub fn mach_port_destroy(task: ipc_space_t, name: mach_port_name_t) -> kern_return_t; - pub fn mach_port_deallocate(task: ipc_space_t, name: mach_port_name_t) -> kern_return_t; - pub fn mach_port_insert_right( - task: ipc_space_t, - name: mach_port_name_t, - poly: mach_port_t, - polyPoly: mach_msg_type_name_t, - ) -> kern_return_t; - pub fn mach_port_extract_right( - task: ipc_space_t, - name: mach_port_name_t, - msgt_name: mach_msg_type_name_t, - poly: *mut mach_port_t, - polyPoly: *mut mach_msg_type_name_t, - ) -> kern_return_t; -} diff -Nru temporalio-1.3.0/vendor/mach/src/mach_time.rs temporalio-1.3.0/vendor/mach/src/mach_time.rs --- temporalio-1.3.0/vendor/mach/src/mach_time.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/mach_time.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -//! This module corresponds to `mach/mach_time.h` -use kern_return::kern_return_t; -pub type mach_timebase_info_t = *mut mach_timebase_info; -pub type mach_timebase_info_data_t = mach_timebase_info; - -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct mach_timebase_info { - pub numer: u32, - pub denom: u32, -} - -extern "C" { - pub fn mach_timebase_info(info: mach_timebase_info_t) -> kern_return_t; - pub fn mach_wait_until(deadline: u64) -> kern_return_t; - pub fn mach_absolute_time() -> u64; - pub fn mach_approximate_time() -> u64; - pub fn mach_continuous_time() -> u64; - pub fn mach_continuous_approximate_time() -> u64; -} diff -Nru temporalio-1.3.0/vendor/mach/src/mach_types.rs temporalio-1.3.0/vendor/mach/src/mach_types.rs --- temporalio-1.3.0/vendor/mach/src/mach_types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/mach_types.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,106 +0,0 @@ -//! This module corresponds to `mach/mach_types.h` - -use port::mach_port_t; - -pub type task_t = mach_port_t; -pub type task_name_t = mach_port_t; -pub type task_suspension_token_t = mach_port_t; -pub type thread_t = mach_port_t; -pub type thread_act_t = mach_port_t; -pub type ipc_space_t = mach_port_t; -pub type coalition_t = mach_port_t; -pub type host_t = mach_port_t; -pub type host_priv_t = mach_port_t; -pub type host_security_t = mach_port_t; -pub type processor_t = mach_port_t; -pub type processor_set_t = mach_port_t; -pub type processor_set_control_t = mach_port_t; -pub type semaphore_t = mach_port_t; -pub type lock_set_t = mach_port_t; -pub type ledger_t = mach_port_t; -pub type alarm_t = mach_port_t; -pub type clock_serv_t = mach_port_t; -pub type clock_ctrl_t = mach_port_t; - -pub type processor_set_name_t = processor_set_t; - -pub type clock_reply_t = mach_port_t; -pub type bootstrap_t = mach_port_t; -pub type mem_entry_name_port_t = mach_port_t; -pub type exception_handler_t = mach_port_t; -pub type exception_handler_array_t = *mut exception_handler_t; -pub type vm_task_entry_t = mach_port_t; -pub type io_master_t = mach_port_t; -pub type UNDServerRef = mach_port_t; - -pub type task_array_t = *mut task_t; -pub type thread_array_t = *mut thread_t; -pub type processor_set_array_t = *mut processor_set_t; -pub type processor_set_name_array_t = *mut processor_set_t; -pub type processor_array_t = *mut processor_t; -pub type thread_act_array_t = *mut thread_act_t; -pub type ledger_array_t = *mut ledger_t; - -pub type task_port_t = task_t; -pub type task_port_array_t = task_array_t; -pub type thread_port_t = thread_t; -pub type thread_port_array_t = thread_array_t; -pub type ipc_space_port_t = ipc_space_t; -pub type host_name_t = host_t; -pub type host_name_port_t = host_t; -pub type processor_set_port_t = processor_set_t; -pub type processor_set_name_port_t = processor_set_t; -pub type processor_set_name_port_array_t = processor_set_array_t; -pub type processor_set_control_port_t = processor_set_t; -pub type processor_port_t = processor_t; -pub type processor_port_array_t = processor_array_t; -pub type thread_act_port_t = thread_act_t; -pub type thread_act_port_array_t = thread_act_array_t; -pub type semaphore_port_t = semaphore_t; -pub type lock_set_port_t = lock_set_t; -pub type ledger_port_t = ledger_t; -pub type ledger_port_array_t = ledger_array_t; -pub type alarm_port_t = alarm_t; -pub type clock_serv_port_t = clock_serv_t; -pub type clock_ctrl_port_t = clock_ctrl_t; -pub type exception_port_t = exception_handler_t; -pub type exception_port_arrary_t = exception_handler_array_t; - -pub const TASK_NULL: task_t = 0; -pub const TASK_NAME_NULL: task_name_t = 0; -pub const THREAD_NULL: thread_t = 0; -pub const TID_NULL: u64 = 0; -pub const THR_ACT_NULL: thread_act_t = 0; -pub const IPC_SPACE_NULL: ipc_space_t = 0; -pub const COALITION_NULL: coalition_t = 0; -pub const HOST_NULL: host_t = 0; -pub const HOST_PRIV_NULL: host_priv_t = 0; -pub const HOST_SECURITY_NULL: host_security_t = 0; -pub const PROCESSOR_SET_NULL: processor_set_t = 0; -pub const PROCESSOR_NULL: processor_t = 0; -pub const SEMAPHORE_NULL: semaphore_t = 0; -pub const LOCK_SET_NULL: lock_set_t = 0; -pub const LEDGER_NULL: ledger_t = 0; -pub const ALARM_NULL: alarm_t = 0; -pub const CLOCK_NULL: ::libc::clock_t = 0; -pub const UND_SERVER_NULL: UNDServerRef = 0; - -// : typedef unsigned char __darwin_uuid_t[16]; -pub type uuid_t = [::libc::c_uchar; 16]; - -// -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct fsid { - pub val: [i32; 2], -} -pub type fsid_t = fsid; - -// -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct fsobj_id { - pub fid_objno: u32, - pub fid_generation: u32, -} -pub type fsobj_id_t = fsobj_id; diff -Nru temporalio-1.3.0/vendor/mach/src/memory_object_types.rs temporalio-1.3.0/vendor/mach/src/memory_object_types.rs --- temporalio-1.3.0/vendor/mach/src/memory_object_types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/memory_object_types.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -//! This module roughly corresponds to `mach/memory_object_types.h`. - -use vm_types::natural_t; - -pub type memory_object_offset_t = ::libc::c_ulonglong; -pub type memory_object_size_t = ::libc::c_ulonglong; -pub type memory_object_cluster_size_t = natural_t; -pub type memory_object_fault_info_t = *mut natural_t; -pub type vm_object_id_t = ::libc::c_ulonglong; diff -Nru temporalio-1.3.0/vendor/mach/src/message.rs temporalio-1.3.0/vendor/mach/src/message.rs --- temporalio-1.3.0/vendor/mach/src/message.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/message.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,248 +0,0 @@ -//! This module corresponds to `mach/message.h`. - -use kern_return::kern_return_t; -use port::{mach_port_name_t, mach_port_t}; -use vm_types::{integer_t, natural_t}; - -pub type mach_msg_timeout_t = natural_t; - -pub type mach_msg_bits_t = ::libc::c_uint; -pub type mach_msg_id_t = integer_t; -pub type mach_msg_size_t = natural_t; - -pub type mach_msg_copy_options_t = ::libc::c_uint; -pub type mach_msg_descriptor_type_t = ::libc::c_uint; -pub type mach_msg_type_name_t = ::libc::c_uint; - -pub type mach_msg_trailer_type_t = ::libc::c_uint; -pub type mach_msg_trailer_size_t = ::libc::c_uint; - -pub type mach_msg_option_t = integer_t; - -pub type mach_msg_type_number_t = natural_t; -pub type mach_msg_type_size_t = natural_t; - -pub type mach_msg_return_t = kern_return_t; - -pub const MACH_MSG_TIMEOUT_NONE: mach_msg_timeout_t = 0; - -pub const MACH_MSGH_BITS_ZERO: mach_msg_bits_t = 0x0000_0000; - -pub const MACH_MSGH_BITS_REMOTE_MASK: mach_msg_bits_t = 0x0000_001f; -pub const MACH_MSGH_BITS_LOCAL_MASK: mach_msg_bits_t = 0x0000_1f00; -pub const MACH_MSGH_BITS_VOUCHER_MASK: mach_msg_bits_t = 0x001f_0000; - -pub const MACH_MSGH_BITS_PORTS_MASK: mach_msg_bits_t = - MACH_MSGH_BITS_REMOTE_MASK | MACH_MSGH_BITS_LOCAL_MASK | MACH_MSGH_BITS_VOUCHER_MASK; - -pub const MACH_MSGH_BITS_COMPLEX: mach_msg_bits_t = 0x8000_0000; - -pub const MACH_MSGH_BITS_USER: mach_msg_bits_t = 0x801f_1f1f; - -#[allow(non_snake_case)] -pub fn MACH_MSGH_BITS(remote: mach_msg_bits_t, local: mach_msg_bits_t) -> mach_msg_bits_t { - remote | (local << 8) -} - -pub const MACH_MSG_TYPE_MOVE_RECEIVE: mach_msg_type_name_t = 16; -pub const MACH_MSG_TYPE_MOVE_SEND: mach_msg_type_name_t = 17; -pub const MACH_MSG_TYPE_MOVE_SEND_ONCE: mach_msg_type_name_t = 18; -pub const MACH_MSG_TYPE_COPY_SEND: mach_msg_type_name_t = 19; -pub const MACH_MSG_TYPE_MAKE_SEND: mach_msg_type_name_t = 20; -pub const MACH_MSG_TYPE_MAKE_SEND_ONCE: mach_msg_type_name_t = 21; -pub const MACH_MSG_TYPE_COPY_RECEIVE: mach_msg_type_name_t = 22; -pub const MACH_MSG_TYPE_DISPOSE_RECEIVE: mach_msg_type_name_t = 24; -pub const MACH_MSG_TYPE_DISPOSE_SEND: mach_msg_type_name_t = 25; -pub const MACH_MSG_TYPE_DISPOSE_SEND_ONCE: mach_msg_type_name_t = 26; - -pub const MACH_MSG_PHYSICAL_COPY: mach_msg_copy_options_t = 0; -pub const MACH_MSG_VIRTUAL_COPY: mach_msg_copy_options_t = 1; -pub const MACH_MSG_ALLOCATE: mach_msg_copy_options_t = 2; - -pub const MACH_MSG_PORT_DESCRIPTOR: mach_msg_descriptor_type_t = 0; -pub const MACH_MSG_OOL_DESCRIPTOR: mach_msg_descriptor_type_t = 1; -pub const MACH_MSG_OOL_PORTS_DESCRIPTOR: mach_msg_descriptor_type_t = 2; -pub const MACH_MSG_OOL_VOLATILE_DESCRIPTOR: mach_msg_descriptor_type_t = 3; - -pub const MACH_MSG_OPTION_NONE: mach_msg_option_t = 0x0000_0000; - -pub const MACH_SEND_MSG: mach_msg_option_t = 0x0000_0001; -pub const MACH_RCV_MSG: mach_msg_option_t = 0x0000_0002; - -pub const MACH_RCV_LARGE: mach_msg_option_t = 0x0000_0004; -pub const MACH_RCV_LARGE_IDENTITY: mach_msg_option_t = 0x0000_0008; - -pub const MACH_SEND_TIMEOUT: mach_msg_option_t = 0x0000_0010; -pub const MACH_SEND_INTERRUPT: mach_msg_option_t = 0x0000_0040; -pub const MACH_SEND_NOTIFY: mach_msg_option_t = 0x0000_0080; -pub const MACH_SEND_ALWAYS: mach_msg_option_t = 0x0001_0000; -pub const MACH_SEND_TRAILER: mach_msg_option_t = 0x0002_0000; -pub const MACH_SEND_NOIMPORTANCE: mach_msg_option_t = 0x0004_0000; -pub const MACH_SEND_NODENAP: mach_msg_option_t = MACH_SEND_NOIMPORTANCE; -pub const MACH_SEND_IMPORTANCE: mach_msg_option_t = 0x0008_0000; - -pub const MACH_RCV_TIMEOUT: mach_msg_option_t = 0x0000_0100; -pub const MACH_RCV_NOTIFY: mach_msg_option_t = 0x0000_0200; -pub const MACH_RCV_INTERRUPT: mach_msg_option_t = 0x0000_0400; -pub const MACH_RCV_VOUCHER: mach_msg_option_t = 0x0000_0800; -pub const MACH_RCV_OVERWRITE: mach_msg_option_t = 0x0000_1000; - -pub const MACH_MSG_SUCCESS: mach_msg_return_t = 0x0000_0000; - -pub const MACH_MSG_MASK: mach_msg_return_t = 0x0000_3e00; -pub const MACH_MSG_IPC_SPACE: mach_msg_return_t = 0x0000_2000; -pub const MACH_MSG_VM_SPACE: mach_msg_return_t = 0x0000_1000; -pub const MACH_MSG_IPC_KERNEL: mach_msg_return_t = 0x0000_0800; -pub const MACH_MSG_VM_KERNEL: mach_msg_return_t = 0x0000_0400; - -pub const MACH_SEND_IN_PROGRESS: mach_msg_return_t = 0x1000_0001; -pub const MACH_SEND_INVALID_DATA: mach_msg_return_t = 0x1000_0002; -pub const MACH_SEND_INVALID_DEST: mach_msg_return_t = 0x1000_0003; -pub const MACH_SEND_TIMED_OUT: mach_msg_return_t = 0x1000_0004; -pub const MACH_SEND_INVALID_VOUCHER: mach_msg_return_t = 0x1000_0005; -pub const MACH_SEND_INTERRUPTED: mach_msg_return_t = 0x1000_0007; -pub const MACH_SEND_MSG_TOO_SMALL: mach_msg_return_t = 0x1000_0008; -pub const MACH_SEND_INVALID_REPLY: mach_msg_return_t = 0x1000_0009; -pub const MACH_SEND_INVALID_RIGHT: mach_msg_return_t = 0x1000_000a; -pub const MACH_SEND_INVALID_NOTIFY: mach_msg_return_t = 0x1000_000b; -pub const MACH_SEND_INVALID_MEMORY: mach_msg_return_t = 0x1000_000c; -pub const MACH_SEND_NO_BUFFER: mach_msg_return_t = 0x1000_000d; -pub const MACH_SEND_TOO_LARGE: mach_msg_return_t = 0x1000_000e; -pub const MACH_SEND_INVALID_TYPE: mach_msg_return_t = 0x1000_000f; -pub const MACH_SEND_INVALID_HEADER: mach_msg_return_t = 0x1000_0010; -pub const MACH_SEND_INVALID_TRAILER: mach_msg_return_t = 0x1000_0011; -pub const MACH_SEND_INVALID_RT_OOL_SIZE: mach_msg_return_t = 0x1000_0015; - -pub const MACH_RCV_IN_PROGRESS: mach_msg_return_t = 0x1000_4001; -pub const MACH_RCV_INVALID_NAME: mach_msg_return_t = 0x1000_4002; -pub const MACH_RCV_TIMED_OUT: mach_msg_return_t = 0x1000_4003; -pub const MACH_RCV_TOO_LARGE: mach_msg_return_t = 0x1000_4004; -pub const MACH_RCV_INTERRUPTED: mach_msg_return_t = 0x1000_4005; -pub const MACH_RCV_PORT_CHANGED: mach_msg_return_t = 0x1000_4006; -pub const MACH_RCV_INVALID_NOTIFY: mach_msg_return_t = 0x1000_4007; -pub const MACH_RCV_INVALID_DATA: mach_msg_return_t = 0x1000_4008; -pub const MACH_RCV_PORT_DIED: mach_msg_return_t = 0x1000_4009; -pub const MACH_RCV_IN_SET: mach_msg_return_t = 0x1000_400a; -pub const MACH_RCV_HEADER_ERROR: mach_msg_return_t = 0x1000_400b; -pub const MACH_RCV_BODY_ERROR: mach_msg_return_t = 0x1000_400c; -pub const MACH_RCV_INVALID_TYPE: mach_msg_return_t = 0x1000_400d; -pub const MACH_RCV_SCATTER_SMALL: mach_msg_return_t = 0x1000_400e; -pub const MACH_RCV_INVALID_TRAILER: mach_msg_return_t = 0x1000_400f; -pub const MACH_RCV_IN_PROGRESS_TIMED: mach_msg_return_t = 0x1000_4011; - -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct mach_msg_header_t { - pub msgh_bits: mach_msg_bits_t, - pub msgh_size: mach_msg_size_t, - pub msgh_remote_port: mach_port_t, - pub msgh_local_port: mach_port_t, - pub msgh_voucher_port: mach_port_name_t, - pub msgh_id: mach_msg_id_t, -} - -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct mach_msg_body_t { - pub msgh_descriptor_count: mach_msg_size_t, -} - -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct mach_msg_base_t { - pub header: mach_msg_header_t, - pub body: mach_msg_body_t, -} - -pub const MACH_MSG_TRAILER_FORMAT_0: mach_msg_trailer_type_t = 0; - -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct mach_msg_trailer_t { - pub msgh_trailer_type: mach_msg_trailer_type_t, - pub msgh_trailer_size: mach_msg_trailer_size_t, -} - -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct mach_msg_port_descriptor_t { - pub name: mach_port_t, - pub pad1: mach_msg_size_t, - pub pad2: u16, - pub disposition: u8, // mach_msg_type_name_t bitfield - pub type_: u8, // mach_msg_descriptor_type_t bitfield -} - -impl mach_msg_port_descriptor_t { - pub fn new(name: mach_port_t, disposition: mach_msg_type_name_t) -> Self { - Self { - name, - pad1: 0, - pad2: 0, - disposition: disposition as u8, - type_: MACH_MSG_PORT_DESCRIPTOR as u8, - } - } -} - -#[repr(C)] -#[derive(Copy, Clone, Debug, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct mach_msg_ool_descriptor_t { - pub address: *mut ::libc::c_void, - #[cfg(not(target_pointer_width = "64"))] - pub size: mach_msg_size_t, - pub deallocate: u8, // boolean_t bitfield - pub copy: u8, // mach_msg_copy_options_t bitfield - pub pad1: u8, - pub type_: u8, // mach_msg_descriptor_type_t bitfield - #[cfg(target_pointer_width = "64")] - pub size: mach_msg_size_t, -} - -impl mach_msg_ool_descriptor_t { - pub fn new( - address: *mut ::libc::c_void, - deallocate: bool, - copy: mach_msg_copy_options_t, - size: u32, - ) -> Self { - Self { - address, - deallocate: if deallocate { 1 } else { 0 }, - copy: copy as u8, - pad1: 0, - type_: MACH_MSG_OOL_DESCRIPTOR as u8, - size, - } - } -} - -#[repr(C)] -#[derive(Copy, Clone, Debug, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct mach_msg_ool_ports_descriptor_t { - pub address: *mut ::libc::c_void, - #[cfg(not(target_pointer_width = "64"))] - pub count: mach_msg_size_t, - pub deallocate: u8, // boolean_t bitfield - pub copy: u8, // mach_msg_copy_options_t bitfield - pub disposition: u8, // mach_msg_type_name_t bitfield - pub type_: u8, // mach_msg_descriptor_type_t bitfield - #[cfg(target_pointer_width = "64")] - pub count: mach_msg_size_t, -} - -extern "C" { - pub fn mach_msg( - msg: *mut mach_msg_header_t, - option: mach_msg_option_t, - send_size: mach_msg_size_t, - recv_size: mach_msg_size_t, - recv_name: mach_port_name_t, - timeout: mach_msg_timeout_t, - notify: mach_port_name_t, - ) -> mach_msg_return_t; - - // from mach/mach.h - pub fn mach_msg_send(msg: *mut mach_msg_header_t) -> mach_msg_return_t; - pub fn mach_msg_destroy(msg: *mut mach_msg_header_t); -} diff -Nru temporalio-1.3.0/vendor/mach/src/port.rs temporalio-1.3.0/vendor/mach/src/port.rs --- temporalio-1.3.0/vendor/mach/src/port.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/port.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -//! This module corresponds to `mach/port.h` - -use vm_types::natural_t; - -pub type mach_port_name_t = natural_t; - -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct ipc_port; - -pub type ipc_port_t = *mut ipc_port; - -pub type mach_port_t = ::libc::c_uint; - -pub const MACH_PORT_NULL: mach_port_t = 0; -pub const MACH_PORT_DEAD: mach_port_t = !0; - -pub type mach_port_right_t = natural_t; - -pub const MACH_PORT_RIGHT_SEND: mach_port_right_t = 0; -pub const MACH_PORT_RIGHT_RECEIVE: mach_port_right_t = 1; -pub const MACH_PORT_RIGHT_SEND_ONCE: mach_port_right_t = 2; -pub const MACH_PORT_RIGHT_PORT_SET: mach_port_right_t = 3; -pub const MACH_PORT_RIGHT_DEAD_NAME: mach_port_right_t = 4; -pub const MACH_PORT_RIGHT_LABELH: mach_port_right_t = 5; -pub const MACH_PORT_RIGHT_NUMBER: mach_port_right_t = 6; diff -Nru temporalio-1.3.0/vendor/mach/src/structs.rs temporalio-1.3.0/vendor/mach/src/structs.rs --- temporalio-1.3.0/vendor/mach/src/structs.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/structs.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -//! This module corresponds to `mach/_structs.h`. - -use mem; -use message::mach_msg_type_number_t; - -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct x86_thread_state64_t { - pub __rax: u64, - pub __rbx: u64, - pub __rcx: u64, - pub __rdx: u64, - pub __rdi: u64, - pub __rsi: u64, - pub __rbp: u64, - pub __rsp: u64, - pub __r8: u64, - pub __r9: u64, - pub __r10: u64, - pub __r11: u64, - pub __r12: u64, - pub __r13: u64, - pub __r14: u64, - pub __r15: u64, - pub __rip: u64, - pub __rflags: u64, - pub __cs: u64, - pub __fs: u64, - pub __gs: u64, -} - -impl x86_thread_state64_t { - pub fn new() -> Self { - Self { - __rax: 0, - __rbx: 0, - __rcx: 0, - __rdx: 0, - __rdi: 0, - __rsi: 0, - __rbp: 0, - __rsp: 0, - __r8: 0, - __r9: 0, - __r10: 0, - __r11: 0, - __r12: 0, - __r13: 0, - __r14: 0, - __r15: 0, - __rip: 0, - __rflags: 0, - __cs: 0, - __fs: 0, - __gs: 0, - } - } - - pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t - } -} diff -Nru temporalio-1.3.0/vendor/mach/src/task_info.rs temporalio-1.3.0/vendor/mach/src/task_info.rs --- temporalio-1.3.0/vendor/mach/src/task_info.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/task_info.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ -//! This module roughly corresponds to `mach/task_info.h`. - -use vm_types::{integer_t, mach_vm_address_t, mach_vm_size_t, natural_t}; - -pub const TASK_INFO_MAX: ::libc::c_uint = 1024; -pub const TASK_BASIC_INFO_32: ::libc::c_uint = 4; -pub const TASK_BASIC2_INFO_32: ::libc::c_uint = 6; -pub const TASK_BASIC_INFO_64: ::libc::c_uint = 5; -#[cfg(target_arch = "x86_64")] -pub const TASK_BASIC_INFO: ::libc::c_uint = 5; -#[cfg(target_arch = "x86")] -pub const TASK_BASIC_INFO: ::libc::c_uint = 4; -pub const TASK_EVENTS_INFO: ::libc::c_uint = 2; -pub const TASK_THREAD_TIMES_INFO: ::libc::c_uint = 3; -pub const TASK_ABSOLUTETIME_INFO: ::libc::c_uint = 1; -pub const TASK_KERNELMEMORY_INFO: ::libc::c_uint = 7; -pub const TASK_SECURITY_TOKEN: ::libc::c_uint = 13; -pub const TASK_AUDIT_TOKEN: ::libc::c_uint = 15; -pub const TASK_AFFINITY_TAG_INFO: ::libc::c_uint = 16; -pub const TASK_DYLD_INFO: ::libc::c_uint = 17; -pub const TASK_DYLD_ALL_IMAGE_INFO_32: ::libc::c_uint = 0; -pub const TASK_DYLD_ALL_IMAGE_INFO_64: ::libc::c_uint = 1; -pub const TASK_EXTMOD_INFO: ::libc::c_uint = 19; -pub const MACH_TASK_BASIC_INFO: ::libc::c_uint = 20; -pub const TASK_POWER_INFO: ::libc::c_uint = 21; -pub const TASK_VM_INFO: ::libc::c_uint = 22; -pub const TASK_VM_INFO_PURGEABLE: ::libc::c_uint = 23; -pub const TASK_TRACE_MEMORY_INFO: ::libc::c_uint = 24; -pub const TASK_WAIT_STATE_INFO: ::libc::c_uint = 25; -pub const TASK_POWER_INFO_V2: ::libc::c_uint = 26; -pub const TASK_VM_INFO_PURGEABLE_ACCOUNT: ::libc::c_uint = 27; -pub const TASK_FLAGS_INFO: ::libc::c_uint = 28; -pub const TASK_DEBUG_INFO_INTERNAL: ::libc::c_uint = 29; - -pub type task_flavor_t = natural_t; -pub type task_info_t = *mut integer_t; - -#[repr(C, packed(4))] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct task_dyld_info { - pub all_image_info_addr: mach_vm_address_t, - pub all_image_info_size: mach_vm_size_t, - pub all_image_info_format: integer_t, -} diff -Nru temporalio-1.3.0/vendor/mach/src/task.rs temporalio-1.3.0/vendor/mach/src/task.rs --- temporalio-1.3.0/vendor/mach/src/task.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/task.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ -//! This module corresponds to `mach/task.defs`. - -use kern_return::kern_return_t; -use mach_types::{task_name_t, task_t, thread_act_array_t}; -use message::mach_msg_type_number_t; -use port::mach_port_t; -use task_info::{task_flavor_t, task_info_t}; - -pub type task_special_port_t = ::libc::c_int; - -pub const TASK_KERNEL_PORT: task_special_port_t = 1; -pub const TASK_HOST_PORT: task_special_port_t = 2; -pub const TASK_NAME_PORT: task_special_port_t = 3; -pub const TASK_BOOTSTRAP_PORT: task_special_port_t = 4; - -extern "C" { - pub fn task_resume(target_task: task_t) -> kern_return_t; - pub fn task_suspend(target_task: task_t) -> kern_return_t; - pub fn task_get_special_port( - task: task_t, - which_port: task_special_port_t, - special_port: *mut mach_port_t, - ) -> kern_return_t; - pub fn task_threads( - target_task: task_t, - act_list: *mut thread_act_array_t, - act_list_cnt: *mut mach_msg_type_number_t, - ) -> kern_return_t; - pub fn task_info( - target_task: task_name_t, - flavor: task_flavor_t, - task_info_out: task_info_t, - task_info_outCnt: *mut mach_msg_type_number_t, - ) -> kern_return_t; - pub fn task_set_info( - target_task: task_t, - flavor: task_flavor_t, - task_info_in: task_info_t, - task_info_inCnt: mach_msg_type_number_t, - ) -> kern_return_t; -} diff -Nru temporalio-1.3.0/vendor/mach/src/thread_act.rs temporalio-1.3.0/vendor/mach/src/thread_act.rs --- temporalio-1.3.0/vendor/mach/src/thread_act.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/thread_act.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -//! This module corresponds to `mach/thread_act.defs`. - -use kern_return::kern_return_t; -use mach_types::thread_act_t; -use message::mach_msg_type_number_t; -use thread_status::{thread_state_flavor_t, thread_state_t}; - -extern "C" { - pub fn thread_get_state( - target_act: thread_act_t, - flavor: thread_state_flavor_t, - new_state: thread_state_t, - new_state_count: *mut mach_msg_type_number_t, - ) -> kern_return_t; -} - -extern "C" { - pub fn thread_suspend(target_act: thread_act_t) -> kern_return_t; -} - -extern "C" { - pub fn thread_resume(target_act: thread_act_t) -> kern_return_t; -} diff -Nru temporalio-1.3.0/vendor/mach/src/thread_status.rs temporalio-1.3.0/vendor/mach/src/thread_status.rs --- temporalio-1.3.0/vendor/mach/src/thread_status.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/thread_status.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -//! This module corresponds to `mach/thread_status.h`. - -use vm_types::natural_t; - -pub type thread_state_t = *mut natural_t; -pub type thread_state_flavor_t = ::libc::c_int; - -pub static x86_THREAD_STATE32: thread_state_flavor_t = 1; -pub static x86_FLOAT_STATE32: thread_state_flavor_t = 2; -pub static x86_EXCEPTION_STATE32: thread_state_flavor_t = 3; -pub static x86_THREAD_STATE64: thread_state_flavor_t = 4; -pub static x86_FLOAT_STATE64: thread_state_flavor_t = 5; -pub static x86_EXCEPTION_STATE64: thread_state_flavor_t = 6; -pub static x86_THREAD_STATE: thread_state_flavor_t = 7; -pub static x86_FLOAT_STATE: thread_state_flavor_t = 8; -pub static x86_EXCEPTION_STATE: thread_state_flavor_t = 9; -pub static x86_DEBUG_STATE32: thread_state_flavor_t = 10; -pub static x86_DEBUG_STATE64: thread_state_flavor_t = 11; -pub static x86_DEBUG_STATE: thread_state_flavor_t = 12; -pub static THREAD_STATE_NONE: thread_state_flavor_t = 13; -pub static x86_AVX_STATE32: thread_state_flavor_t = 16; -pub static x86_AVX_STATE64: thread_state_flavor_t = 17; -pub static x86_AVX_STATE: thread_state_flavor_t = 18; diff -Nru temporalio-1.3.0/vendor/mach/src/traps.rs temporalio-1.3.0/vendor/mach/src/traps.rs --- temporalio-1.3.0/vendor/mach/src/traps.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/traps.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -//! This module corresponds to `mach/mach_traps.h`. -use kern_return::kern_return_t; -use port::{mach_port_name_t, mach_port_t}; - -extern "C" { - static mach_task_self_: mach_port_t; - pub fn task_for_pid( - target_tport: mach_port_name_t, - pid: ::libc::c_int, - tn: *mut mach_port_name_t, - ) -> kern_return_t; -} - -pub unsafe fn mach_task_self() -> mach_port_t { - mach_task_self_ -} - -pub unsafe fn current_task() -> mach_port_t { - mach_task_self() -} - -#[cfg(test)] -mod tests { - use port::*; - use traps::*; - - #[test] - fn mach_task_self_sanity() { - unsafe { - let this_task = mach_task_self(); - assert!(this_task != MACH_PORT_NULL); - assert!(this_task != MACH_PORT_DEAD); - } - } -} diff -Nru temporalio-1.3.0/vendor/mach/src/vm_attributes.rs temporalio-1.3.0/vendor/mach/src/vm_attributes.rs --- temporalio-1.3.0/vendor/mach/src/vm_attributes.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/vm_attributes.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -//! This module corresponds to `mach/vm_attributes.h`. - -pub type vm_machine_attribute_t = ::libc::c_uint; - -pub const MATTR_CACHE: vm_machine_attribute_t = 1; -pub const MATTR_MIGRATE: vm_machine_attribute_t = (1 << 1); -pub const MATTR_REPLICATE: vm_machine_attribute_t = (1 << 2); - -pub type vm_machine_attribute_val_t = ::libc::c_int; - -pub const MATTR_VAL_OFF: vm_machine_attribute_val_t = 0; -pub const MATTR_VAL_ON: vm_machine_attribute_val_t = 1; -pub const MATTR_VAL_GET: vm_machine_attribute_val_t = 2; -pub const MATTR_VAL_CACHE_FLUSH: vm_machine_attribute_val_t = 6; -pub const MATTR_VAL_DCACHE_FLUSH: vm_machine_attribute_val_t = 7; -pub const MATTR_VAL_ICACHE_FLUSH: vm_machine_attribute_val_t = 8; -pub const MATTR_VAL_CACHE_SYNC: vm_machine_attribute_val_t = 9; -pub const MATTR_VAL_GET_INFO: vm_machine_attribute_val_t = 10; diff -Nru temporalio-1.3.0/vendor/mach/src/vm_behavior.rs temporalio-1.3.0/vendor/mach/src/vm_behavior.rs --- temporalio-1.3.0/vendor/mach/src/vm_behavior.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/vm_behavior.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -//! This module corresponds to `mach/vm_behavior.h`. - -pub type vm_behavior_t = ::libc::c_int; - -pub const VM_BEHAVIOR_DEFAULT: vm_behavior_t = 0; -pub const VM_BEHAVIOR_RANDOM: vm_behavior_t = 1; -pub const VM_BEHAVIOR_SEQUENTIAL: vm_behavior_t = 2; -pub const VM_BEHAVIOR_RSEQNTL: vm_behavior_t = 3; -pub const VM_BEHAVIOR_WILLNEED: vm_behavior_t = 4; -pub const VM_BEHAVIOR_DONTNEED: vm_behavior_t = 5; -pub const VM_BEHAVIOR_FREE: vm_behavior_t = 6; -pub const VM_BEHAVIOR_ZERO_WIRED_PAGES: vm_behavior_t = 7; -pub const VM_BEHAVIOR_REUSABLE: vm_behavior_t = 8; -pub const VM_BEHAVIOR_REUSE: vm_behavior_t = 9; -pub const VM_BEHAVIOR_CAN_REUSE: vm_behavior_t = 10; diff -Nru temporalio-1.3.0/vendor/mach/src/vm_inherit.rs temporalio-1.3.0/vendor/mach/src/vm_inherit.rs --- temporalio-1.3.0/vendor/mach/src/vm_inherit.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/vm_inherit.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -//! This module corresponds to `mach/vm_inherit.h`. - -pub type vm_inherit_t = ::libc::c_uint; - -pub const VM_INHERIT_SHARE: vm_inherit_t = 0; -pub const VM_INHERIT_COPY: vm_inherit_t = 1; -pub const VM_INHERIT_NONE: vm_inherit_t = 2; -pub const VM_INHERIT_DONATE_COPY: vm_inherit_t = 3; -pub const VM_INHERIT_DEFAULT: vm_inherit_t = VM_INHERIT_COPY; -pub const VM_INHERIT_LAST_VALID: vm_inherit_t = VM_INHERIT_NONE; diff -Nru temporalio-1.3.0/vendor/mach/src/vm_page_size.rs temporalio-1.3.0/vendor/mach/src/vm_page_size.rs --- temporalio-1.3.0/vendor/mach/src/vm_page_size.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/vm_page_size.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -//! This module roughly corresponds to `mach/vm_page_size.h` - -use vm_types::{mach_vm_offset_t, mach_vm_size_t, vm_size_t}; - -extern "C" { - pub static vm_page_size: vm_size_t; - pub static vm_page_mask: vm_size_t; - pub static vm_page_shift: ::libc::c_int; -} - -pub unsafe fn mach_vm_trunc_page(x: mach_vm_offset_t) -> mach_vm_offset_t { - (x & !(vm_page_mask as mach_vm_size_t)) -} - -pub unsafe fn mach_vm_round_page(x: mach_vm_offset_t) -> mach_vm_offset_t { - ((x + vm_page_mask as mach_vm_size_t) & !(vm_page_mask as mach_vm_size_t)) -} - -#[cfg(test)] -mod tests { - use vm_page_size::*; - use vm_types::mach_vm_size_t; - - #[test] - fn page_size() { - unsafe { - assert!(vm_page_size > 0); - assert!(vm_page_size % 2 == 0); - assert_eq!(mach_vm_round_page(1), vm_page_size as mach_vm_size_t); - assert_eq!(vm_page_size, 4096); - } - } -} diff -Nru temporalio-1.3.0/vendor/mach/src/vm_prot.rs temporalio-1.3.0/vendor/mach/src/vm_prot.rs --- temporalio-1.3.0/vendor/mach/src/vm_prot.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/vm_prot.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -//! This module corresponds to `mach/vm_prot.h`. - -pub type vm_prot_t = ::libc::c_int; - -pub const VM_PROT_NONE: vm_prot_t = 0; -pub const VM_PROT_READ: vm_prot_t = 1; -pub const VM_PROT_WRITE: vm_prot_t = (1 << 1); -pub const VM_PROT_EXECUTE: vm_prot_t = (1 << 2); -pub const VM_PROT_NO_CHANGE: vm_prot_t = (1 << 3); -pub const VM_PROT_COPY: vm_prot_t = (1 << 4); -pub const VM_PROT_WANTS_COPY: vm_prot_t = (1 << 4); -pub const VM_PROT_TRUSTED: vm_prot_t = (1 << 5); -pub const VM_PROT_DEFAULT: vm_prot_t = VM_PROT_READ | VM_PROT_WRITE; -pub const VM_PROT_ALL: vm_prot_t = VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE; diff -Nru temporalio-1.3.0/vendor/mach/src/vm_purgable.rs temporalio-1.3.0/vendor/mach/src/vm_purgable.rs --- temporalio-1.3.0/vendor/mach/src/vm_purgable.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/vm_purgable.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ -//! This module corresponds to `mach/vm_purgable.h`. - -pub type vm_purgable_t = ::libc::c_int; - -pub const VM_PURGABLE_SET_STATE: vm_purgable_t = 0; -pub const VM_PURGABLE_GET_STATE: vm_purgable_t = 1; - -pub const VM_VOLATILE_GROUP_SHIFT: ::libc::c_int = 8; -pub const VM_VOLATILE_GROUP_MASK: ::libc::c_int = (7 << VM_VOLATILE_GROUP_SHIFT); -pub const VM_VOLATILE_GROUP_DEFAULT: ::libc::c_int = VM_VOLATILE_GROUP_0; - -pub const VM_VOLATILE_GROUP_0: ::libc::c_int = (0 << VM_VOLATILE_GROUP_SHIFT); -pub const VM_VOLATILE_GROUP_1: ::libc::c_int = (1 << VM_VOLATILE_GROUP_SHIFT); -pub const VM_VOLATILE_GROUP_2: ::libc::c_int = (2 << VM_VOLATILE_GROUP_SHIFT); -pub const VM_VOLATILE_GROUP_3: ::libc::c_int = (3 << VM_VOLATILE_GROUP_SHIFT); -pub const VM_VOLATILE_GROUP_4: ::libc::c_int = (4 << VM_VOLATILE_GROUP_SHIFT); -pub const VM_VOLATILE_GROUP_5: ::libc::c_int = (5 << VM_VOLATILE_GROUP_SHIFT); -pub const VM_VOLATILE_GROUP_6: ::libc::c_int = (6 << VM_VOLATILE_GROUP_SHIFT); -pub const VM_VOLATILE_GROUP_7: ::libc::c_int = (7 << VM_VOLATILE_GROUP_SHIFT); - -pub const VM_PURGABLE_BEHAVIOR_SHIFT: ::libc::c_int = 6; -pub const VM_PURGABLE_BEHAVIOR_MASK: ::libc::c_int = (1 << VM_PURGABLE_BEHAVIOR_SHIFT); -pub const VM_PURGABLE_BEHAVIOR_FIFO: ::libc::c_int = (0 << VM_PURGABLE_BEHAVIOR_SHIFT); -pub const VM_PURGABLE_BEHAVIOR_LIFO: ::libc::c_int = (1 << VM_PURGABLE_BEHAVIOR_SHIFT); - -pub const VM_PURGABLE_ORDERING_SHIFT: ::libc::c_int = 5; -pub const VM_PURGABLE_ORDERING_MASK: ::libc::c_int = (1 << VM_PURGABLE_ORDERING_SHIFT); -pub const VM_PURGABLE_ORDERING_OBSOLETE: ::libc::c_int = (1 << VM_PURGABLE_ORDERING_SHIFT); -pub const VM_PURGABLE_ORDERING_NORMAL: ::libc::c_int = (0 << VM_PURGABLE_ORDERING_SHIFT); - -pub const VM_VOLATILE_ORDER_SHIFT: ::libc::c_int = 4; -pub const VM_VOLATILE_ORDER_MASK: ::libc::c_int = (1 << VM_VOLATILE_ORDER_SHIFT); -pub const VM_VOLATILE_MAKE_FIRST_IN_GROUP: ::libc::c_int = (1 << VM_VOLATILE_ORDER_SHIFT); -pub const VM_VOLATILE_MAKE_LAST_IN_GROUP: ::libc::c_int = (0 << VM_VOLATILE_ORDER_SHIFT); - -pub const VM_PURGABLE_STATE_MIN: ::libc::c_int = 0; -pub const VM_PURGABLE_STATE_MAX: ::libc::c_int = 3; -pub const VM_PURGABLE_STATE_MASK: ::libc::c_int = 3; -pub const VM_PURGABLE_NONVOLATILE: ::libc::c_int = 0; -pub const VM_PURGABLE_VOLATILE: ::libc::c_int = 1; -pub const VM_PURGABLE_EMPTY: ::libc::c_int = 2; -pub const VM_PURGABLE_DENY: ::libc::c_int = 3; diff -Nru temporalio-1.3.0/vendor/mach/src/vm_region.rs temporalio-1.3.0/vendor/mach/src/vm_region.rs --- temporalio-1.3.0/vendor/mach/src/vm_region.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/vm_region.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,238 +0,0 @@ -//! This module roughly corresponds to `mach/vm_region.h`. - -use boolean::boolean_t; -use mem; -use memory_object_types::{memory_object_offset_t, vm_object_id_t}; -use message::mach_msg_type_number_t; -use vm_behavior::vm_behavior_t; -use vm_inherit::vm_inherit_t; -use vm_prot::vm_prot_t; -use vm_types::{mach_vm_address_t, mach_vm_size_t}; - -pub type vm32_object_id_t = u32; - -pub type vm_region_info_t = *mut ::libc::c_int; -pub type vm_region_info_64_t = *mut ::libc::c_int; -pub type vm_region_recurse_info_t = *mut ::libc::c_int; -pub type vm_region_recurse_info_64_t = *mut ::libc::c_int; -pub type vm_region_flavor_t = ::libc::c_int; -pub type vm_region_info_data_t = [::libc::c_int; VM_REGION_INFO_MAX as usize]; - -pub type vm_region_basic_info_64_t = *mut vm_region_basic_info_64; -pub type vm_region_basic_info_data_64_t = vm_region_basic_info_64; -pub type vm_region_basic_info_t = *mut vm_region_basic_info; -pub type vm_region_basic_info_data_t = vm_region_basic_info; -pub type vm_region_extended_info_t = *mut vm_region_extended_info; -pub type vm_region_extended_info_data_t = vm_region_extended_info; -pub type vm_region_top_info_t = *mut vm_region_top_info; -pub type vm_region_top_info_data_t = vm_region_top_info; -pub type vm_region_submap_info_t = *mut vm_region_submap_info; -pub type vm_region_submap_info_data_t = vm_region_submap_info; -pub type vm_region_submap_info_64_t = *mut vm_region_submap_info_64; -pub type vm_region_submap_info_data_64_t = vm_region_submap_info_64; -pub type vm_region_submap_short_info_64_t = *mut vm_region_submap_short_info_64; -pub type vm_region_submap_short_info_data_64_t = vm_region_submap_short_info_64; -pub type vm_page_info_t = *mut ::libc::c_int; -pub type vm_page_info_flavor_t = ::libc::c_int; -pub type vm_page_info_basic_t = *mut vm_page_info_basic; -pub type vm_page_info_basic_data_t = vm_page_info_basic; -pub type mach_vm_read_entry_t = [mach_vm_read_entry; VM_MAP_ENTRY_MAX as usize]; - -pub const VM_REGION_INFO_MAX: ::libc::c_int = (1 << 10); -pub const VM_MAP_ENTRY_MAX: ::libc::c_int = (1 << 8); - -pub const VM_PAGE_INFO_BASIC: vm_page_info_flavor_t = 1; - -pub const VM_REGION_BASIC_INFO_64: vm_region_flavor_t = 9; -pub const VM_REGION_BASIC_INFO: vm_region_flavor_t = 10; -pub const VM_REGION_EXTENDED_INFO: vm_region_flavor_t = 13; -pub const VM_REGION_TOP_INFO: vm_region_flavor_t = 12; - -pub const SM_COW: ::libc::c_uchar = 1; -pub const SM_PRIVATE: ::libc::c_uchar = 2; -pub const SM_EMPTY: ::libc::c_uchar = 3; -pub const SM_SHARED: ::libc::c_uchar = 4; -pub const SM_TRUESHARED: ::libc::c_uchar = 5; -pub const SM_PRIVATE_ALIASED: ::libc::c_uchar = 6; -pub const SM_SHARED_ALIASED: ::libc::c_uchar = 7; - -#[repr(C, packed(4))] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct vm_region_basic_info_64 { - pub protection: vm_prot_t, - pub max_protection: vm_prot_t, - pub inheritance: vm_inherit_t, - pub shared: boolean_t, - pub reserved: boolean_t, - pub offset: memory_object_offset_t, - pub behavior: vm_behavior_t, - pub user_wired_count: ::libc::c_ushort, -} - -impl vm_region_basic_info_64 { - pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t - } -} - -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct vm_region_basic_info { - pub protection: vm_prot_t, - pub max_protection: vm_prot_t, - pub inheritance: vm_inherit_t, - pub shared: boolean_t, - pub reserved: boolean_t, - pub offset: u32, - pub behavior: vm_behavior_t, - pub user_wired_count: ::libc::c_ushort, -} - -impl vm_region_basic_info { - pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t - } -} - -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct vm_region_extended_info { - pub protection: vm_prot_t, - pub user_tag: ::libc::c_uint, - pub pages_resident: ::libc::c_uint, - pub pages_shared_now_private: ::libc::c_uint, - pub pages_swapped_out: ::libc::c_uint, - pub pages_dirtied: ::libc::c_uint, - pub ref_count: ::libc::c_uint, - pub shadow_depth: ::libc::c_ushort, - pub external_pager: ::libc::c_uchar, - pub share_mode: ::libc::c_uchar, - pub pages_reusable: ::libc::c_uint, -} - -impl vm_region_extended_info { - pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t - } -} - -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct vm_region_top_info { - pub obj_id: ::libc::c_uint, - pub ref_count: ::libc::c_uint, - pub private_pages_resident: ::libc::c_uint, - pub shared_pages_resident: ::libc::c_uint, - pub share_mode: ::libc::c_uchar, -} - -impl vm_region_top_info { - pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t - } -} - -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct vm_region_submap_info { - pub protection: vm_prot_t, - pub max_protection: vm_prot_t, - pub inheritance: vm_inherit_t, - pub offset: u32, - pub user_tag: ::libc::c_uint, - pub pages_resident: ::libc::c_uint, - pub pages_shared_now_private: ::libc::c_uint, - pub pages_swapped_out: ::libc::c_uint, - pub pages_dirtied: ::libc::c_uint, - pub ref_count: ::libc::c_uint, - pub shadow_depth: ::libc::c_ushort, - pub external_pager: ::libc::c_uchar, - pub share_mode: ::libc::c_uchar, - pub is_submap: boolean_t, - pub behavior: vm_behavior_t, - pub object_id: vm32_object_id_t, - pub user_wired_count: ::libc::c_ushort, -} - -impl vm_region_submap_info { - pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t - } -} - -#[repr(C, packed(4))] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct vm_region_submap_info_64 { - pub protection: vm_prot_t, - pub max_protection: vm_prot_t, - pub inheritance: vm_inherit_t, - pub offset: memory_object_offset_t, - pub user_tag: ::libc::c_uint, - pub pages_resident: ::libc::c_uint, - pub pages_shared_now_private: ::libc::c_uint, - pub pages_swapped_out: ::libc::c_uint, - pub pages_dirtied: ::libc::c_uint, - pub ref_count: ::libc::c_uint, - pub shadow_depth: ::libc::c_ushort, - pub external_pager: ::libc::c_uchar, - pub share_mode: ::libc::c_uchar, - pub is_submap: boolean_t, - pub behavior: vm_behavior_t, - pub object_id: vm32_object_id_t, - pub user_wired_count: ::libc::c_ushort, - pub pages_reusable: ::libc::c_uint, -} - -impl vm_region_submap_info_64 { - pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t - } -} - -#[repr(C, packed(4))] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct vm_region_submap_short_info_64 { - pub protection: vm_prot_t, - pub max_protection: vm_prot_t, - pub inheritance: vm_inherit_t, - pub offset: memory_object_offset_t, - pub user_tag: ::libc::c_uint, - pub ref_count: ::libc::c_uint, - pub shadow_depth: ::libc::c_ushort, - pub external_pager: ::libc::c_uchar, - pub share_mode: ::libc::c_uchar, - pub is_submap: boolean_t, - pub behavior: vm_behavior_t, - pub object_id: vm32_object_id_t, - pub user_wired_count: ::libc::c_ushort, -} - -impl vm_region_submap_short_info_64 { - pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t - } -} - -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct vm_page_info_basic { - pub disposition: ::libc::c_int, - pub ref_count: ::libc::c_int, - pub object_id: vm_object_id_t, - pub offset: memory_object_offset_t, - pub depth: ::libc::c_int, - pub __pad: ::libc::c_int, -} - -impl vm_page_info_basic { - pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t - } -} - -#[repr(C, packed(4))] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct mach_vm_read_entry { - pub address: mach_vm_address_t, - pub size: mach_vm_size_t, -} diff -Nru temporalio-1.3.0/vendor/mach/src/vm.rs temporalio-1.3.0/vendor/mach/src/vm.rs --- temporalio-1.3.0/vendor/mach/src/vm.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/vm.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,247 +0,0 @@ -//! This module roughly corresponds to `mach/mach_vm.defs`. - -use boolean::boolean_t; -use kern_return::kern_return_t; -use mach_types::{mem_entry_name_port_t, vm_task_entry_t}; -use memory_object_types::{memory_object_offset_t, memory_object_size_t}; -use message::mach_msg_type_number_t; -use port::mach_port_t; -use vm_attributes::{vm_machine_attribute_t, vm_machine_attribute_val_t}; -use vm_behavior::vm_behavior_t; -use vm_inherit::vm_inherit_t; -use vm_prot::vm_prot_t; -use vm_purgable::vm_purgable_t; -use vm_region::mach_vm_read_entry_t; -use vm_region::{ - vm_page_info_flavor_t, vm_page_info_t, vm_region_flavor_t, vm_region_info_t, - vm_region_recurse_info_t, -}; -use vm_sync::vm_sync_t; -use vm_types::{ - integer_t, mach_vm_address_t, mach_vm_offset_t, mach_vm_size_t, natural_t, vm_map_t, - vm_offset_t, vm_size_t, -}; - -extern "C" { - pub fn mach_vm_allocate( - target: vm_task_entry_t, - address: *mut mach_vm_address_t, - size: mach_vm_size_t, - flags: ::libc::c_int, - ) -> kern_return_t; - - pub fn mach_vm_deallocate( - target: vm_task_entry_t, - address: mach_vm_address_t, - size: mach_vm_size_t, - ) -> kern_return_t; - - pub fn mach_vm_protect( - target_task: vm_task_entry_t, - address: mach_vm_address_t, - size: mach_vm_size_t, - set_maximum: boolean_t, - new_protection: vm_prot_t, - ) -> kern_return_t; - - pub fn mach_vm_inherit( - target_task: vm_task_entry_t, - address: mach_vm_address_t, - size: mach_vm_size_t, - new_inheritance: vm_inherit_t, - ) -> kern_return_t; - - pub fn mach_vm_read( - target_task: vm_task_entry_t, - address: mach_vm_address_t, - size: mach_vm_size_t, - data: *mut vm_offset_t, - dataCnt: *mut mach_msg_type_number_t, - ) -> kern_return_t; - - pub fn mach_vm_read_list( - target_task: vm_task_entry_t, - data_list: mach_vm_read_entry_t, - count: natural_t, - ) -> kern_return_t; - - pub fn mach_vm_write( - target_task: vm_map_t, - address: mach_vm_address_t, - data: vm_offset_t, - dataCnt: mach_msg_type_number_t, - ) -> kern_return_t; - - pub fn mach_vm_copy( - target_task: vm_task_entry_t, - source_address: mach_vm_address_t, - size: mach_vm_size_t, - dest_address: mach_vm_address_t, - ) -> kern_return_t; - - pub fn mach_vm_read_overwrite( - target_task: vm_task_entry_t, - address: mach_vm_address_t, - size: mach_vm_size_t, - data: mach_vm_address_t, - outsize: *mut mach_vm_size_t, - ) -> kern_return_t; - - pub fn mach_vm_msync( - target_task: vm_task_entry_t, - address: mach_vm_address_t, - size: mach_vm_size_t, - sync_flags: vm_sync_t, - ) -> kern_return_t; - - pub fn mach_vm_behavior_set( - target_task: vm_task_entry_t, - address: mach_vm_address_t, - size: mach_vm_size_t, - new_behavior: vm_behavior_t, - ) -> kern_return_t; - - pub fn mach_vm_map( - target_task: vm_task_entry_t, - inout: *mut mach_vm_address_t, - size: mach_vm_size_t, - mask: mach_vm_offset_t, - flags: ::libc::c_int, - object: mem_entry_name_port_t, - offset: memory_object_offset_t, - copy: boolean_t, - cur_protection: vm_prot_t, - max_protection: vm_prot_t, - inheritance: vm_inherit_t, - ) -> kern_return_t; - - pub fn mach_vm_machine_attribute( - target_task: vm_task_entry_t, - address: mach_vm_address_t, - size: mach_vm_size_t, - attribute: vm_machine_attribute_t, - value: *mut vm_machine_attribute_val_t, - ) -> kern_return_t; - - pub fn mach_vm_remap( - target_task: vm_task_entry_t, - target_address: *mut mach_vm_address_t, - size: mach_vm_size_t, - mask: mach_vm_offset_t, - flags: ::libc::c_int, - src_task: vm_task_entry_t, - src_address: mach_vm_address_t, - copy: boolean_t, - cur_protection: *mut vm_prot_t, - out: *mut vm_prot_t, - inheritance: vm_inherit_t, - ) -> kern_return_t; - - pub fn mach_vm_page_query( - target_map: vm_map_t, - offset: mach_vm_offset_t, - disposition: *mut integer_t, - ref_count: *mut integer_t, - ) -> kern_return_t; - - pub fn mach_vm_region_recurse( - target_task: vm_task_entry_t, - address: *mut mach_vm_address_t, - size: *mut mach_vm_size_t, - nesting_depth: *mut natural_t, - info: vm_region_recurse_info_t, - infoCnt: *mut mach_msg_type_number_t, - ) -> kern_return_t; - - pub fn mach_vm_region( - target_task: vm_task_entry_t, - address: *mut mach_vm_address_t, - size: *mut mach_vm_size_t, - flavor: vm_region_flavor_t, - info: vm_region_info_t, - infoCnt: *mut mach_msg_type_number_t, - object_name: *mut mach_port_t, - ) -> kern_return_t; - - pub fn mach_make_memory_entry( - target_task: vm_map_t, - size: *mut vm_size_t, - offset: vm_offset_t, - permission: vm_prot_t, - object_handle: *mut mem_entry_name_port_t, - parent_handle: mem_entry_name_port_t, - ) -> kern_return_t; - - pub fn mach_make_memory_entry_64( - target_task: vm_map_t, - size: *mut memory_object_size_t, - offset: memory_object_offset_t, - permission: vm_prot_t, - object_handle: *mut mach_port_t, - parent_entry: mem_entry_name_port_t, - ) -> kern_return_t; - - pub fn mach_vm_purgable_control( - target_task: vm_task_entry_t, - address: mach_vm_address_t, - control: vm_purgable_t, - state: *mut ::libc::c_int, - ) -> kern_return_t; - - pub fn mach_vm_page_info( - target_task: vm_task_entry_t, - address: mach_vm_address_t, - flavor: vm_page_info_flavor_t, - info: vm_page_info_t, - infoCnt: *mut mach_msg_type_number_t, - ) -> kern_return_t; -} - -#[cfg(test)] -mod tests { - use super::*; - use kern_return::KERN_SUCCESS; - use traps::mach_task_self; - use vm_statistics::VM_FLAGS_ANYWHERE; - - #[test] - fn mach_vm_allocate_sanity() { - unsafe { - let size = 0x100; - let task = mach_task_self(); - - let mut address: mach_vm_address_t = 0; - assert_eq!( - mach_vm_allocate(task, &mut address, size, VM_FLAGS_ANYWHERE), - KERN_SUCCESS - ); - assert_eq!(mach_vm_deallocate(task, address, size), KERN_SUCCESS); - } - } - - #[test] - fn mach_vm_region_sanity() { - use mem; - use vm_prot::{VM_PROT_EXECUTE, VM_PROT_READ}; - use vm_region::{vm_region_basic_info_64, VM_REGION_BASIC_INFO_64}; - unsafe { - let mut size = 0x10; - let mut object_name = 0; - let mut address = mach_vm_region_sanity as mach_vm_address_t; - let mut info: vm_region_basic_info_64 = mem::zeroed(); - let mut info_size = vm_region_basic_info_64::count(); - - let result = mach_vm_region( - mach_task_self(), - &mut address, - &mut size, - VM_REGION_BASIC_INFO_64, - (&mut info as *mut _) as vm_region_info_t, - &mut info_size, - &mut object_name, - ); - assert_eq!(result, KERN_SUCCESS); - assert_eq!(info.protection, VM_PROT_READ | VM_PROT_EXECUTE); - } - } -} diff -Nru temporalio-1.3.0/vendor/mach/src/vm_statistics.rs temporalio-1.3.0/vendor/mach/src/vm_statistics.rs --- temporalio-1.3.0/vendor/mach/src/vm_statistics.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/vm_statistics.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,78 +0,0 @@ -//! This module roughly corresponds to `mach/vm_statistics.h` - -use vm_types::{integer_t, natural_t}; - -pub type vm_statistics_t = *mut vm_statistics; -pub type vm_statistics_data_t = vm_statistics; -#[cfg(feature = "deprecated")] -#[deprecated( - since = "0.2.3", - note = "`pmap_statistics_t` was removed after MacOSX 10.3.9" -)] -#[allow(deprecated)] -pub type pmap_statistics_t = *mut pmap_statistics; - -pub const VM_PAGE_QUERY_PAGE_PRESENT: integer_t = 1; -pub const VM_PAGE_QUERY_PAGE_FICTITIOUS: integer_t = (1 << 1); -pub const VM_PAGE_QUERY_PAGE_REF: integer_t = (1 << 2); -pub const VM_PAGE_QUERY_PAGE_DIRTY: integer_t = (1 << 3); - -pub const VM_MEMORY_MALLOC: ::libc::c_uint = 1; -pub const VM_MEMORY_MALLOC_SMALL: ::libc::c_uint = 2; -pub const VM_MEMORY_MALLOC_LARGE: ::libc::c_uint = 3; -pub const VM_MEMORY_MALLOC_HUGE: ::libc::c_uint = 4; -pub const VM_MEMORY_SBRK: ::libc::c_uint = 5; -pub const VM_MEMORY_ANALYSIS_TOOL: ::libc::c_uint = 10; -pub const VM_MEMORY_MACH_MSG: ::libc::c_uint = 20; -pub const VM_MEMORY_IOKIT: ::libc::c_uint = 21; -pub const VM_MEMORY_STACK: ::libc::c_uint = 30; -pub const VM_MEMORY_GUARD: ::libc::c_uint = 31; -pub const VM_MEMORY_SHARED_PMAP: ::libc::c_uint = 32; -pub const VM_MEMORY_DYLIB: ::libc::c_uint = 33; -pub const VM_MEMORY_APPKIT: ::libc::c_uint = 40; -pub const VM_MEMORY_FOUNDATION: ::libc::c_uint = 41; -pub const VM_MEMORY_COREGRAPHICS: ::libc::c_uint = 42; -pub const VM_MEMORY_CARBON: ::libc::c_uint = 43; -pub const VM_MEMORY_JAVA: ::libc::c_uint = 44; -pub const VM_MEMORY_ATS: ::libc::c_uint = 50; -pub const VM_MEMORY_DYLD: ::libc::c_uint = 60; -pub const VM_MEMORY_DYLD_MALLOC: ::libc::c_uint = 61; -pub const VM_MEMORY_APPLICATION_SPECIFIC_1: ::libc::c_uint = 240; -pub const VM_MEMORY_APPLICATION_SPECIFIC_16: ::libc::c_uint = 255; - -pub const VM_FLAGS_FIXED: ::libc::c_int = 0x0; -pub const VM_FLAGS_ANYWHERE: ::libc::c_int = 0x1; -pub const VM_FLAGS_OVERWRITE: ::libc::c_int = 0x4000; - -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct vm_statistics { - pub free_count: natural_t, - pub active_count: natural_t, - pub inactive_count: natural_t, - pub wire_count: natural_t, - pub zero_fill_count: natural_t, - pub reactivations: natural_t, - pub pageins: natural_t, - pub pageouts: natural_t, - pub faults: natural_t, - pub cow_faults: natural_t, - pub lookups: natural_t, - pub hits: natural_t, - pub purgeable_count: natural_t, - pub purges: natural_t, - pub speculative_count: natural_t, -} - -#[cfg(feature = "deprecated")] -#[deprecated( - since = "0.2.3", - note = "`pmap_statistics` was removed after MacOSX 10.3.9" -)] -#[cfg_attr(feature = "deprecated", allow(deprecated))] -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] -pub struct pmap_statistics { - pub resident_count: integer_t, - pub wired_count: integer_t, -} diff -Nru temporalio-1.3.0/vendor/mach/src/vm_sync.rs temporalio-1.3.0/vendor/mach/src/vm_sync.rs --- temporalio-1.3.0/vendor/mach/src/vm_sync.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/vm_sync.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -//! This module corresponds to `mach/vm_sync.h`. - -pub type vm_sync_t = ::libc::c_uint; - -pub const VM_SYNC_ASYNCHRONOUS: vm_sync_t = 1; -pub const VM_SYNC_SYNCHRONOUS: vm_sync_t = (1 << 1); -pub const VM_SYNC_INVALIDATE: vm_sync_t = (1 << 2); -pub const VM_SYNC_KILLPAGES: vm_sync_t = (1 << 3); -pub const VM_SYNC_DEACTIVATE: vm_sync_t = (1 << 4); -pub const VM_SYNC_CONTIGUOUS: vm_sync_t = (1 << 5); -pub const VM_SYNC_REUSABLEPAGES: vm_sync_t = (1 << 6); diff -Nru temporalio-1.3.0/vendor/mach/src/vm_types.rs temporalio-1.3.0/vendor/mach/src/vm_types.rs --- temporalio-1.3.0/vendor/mach/src/vm_types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/mach/src/vm_types.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -//! This module roughly corresponds to `mach/i386/vm_types.h`. - -pub type natural_t = ::libc::c_uint; -pub type integer_t = ::libc::c_int; - -pub type user_addr_t = u64; - -pub type mach_vm_address_t = u64; -pub type mach_vm_offset_t = u64; -pub type mach_vm_size_t = u64; -pub type vm_map_offset_t = u64; -pub type vm_map_address_t = u64; -pub type vm_map_size_t = u64; -pub type vm_map_t = ::port::mach_port_t; -pub type vm_offset_t = ::libc::uintptr_t; -pub type vm_size_t = ::libc::uintptr_t; -pub type vm_address_t = vm_offset_t; - -pub type mach_port_context_t = mach_vm_address_t; diff -Nru temporalio-1.3.0/vendor/mach2/.cargo-checksum.json temporalio-1.3.0/vendor/mach2/.cargo-checksum.json --- temporalio-1.3.0/vendor/mach2/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +{"files":{"Cargo.toml":"e6cb1c9aa2b65d61801e0f03de848525a9f7104234db25d0b1c9fa337b372626","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-BSD":"044983df14c97f2f9570766aaf977b3cdfc4a06cf1f36b776331c5ff89b4fb89","LICENSE-MIT":"3f9f0f7e5a5911a8042e32c83ff5d061ce1ffd02e8a207ec2135a44ad73b4191","README.md":"c2cb79f8e79e22b13e4c25e43829bf578ef25a3a338d5553081a1e5f39556fa8","src/boolean.rs":"1d24ea9872748881cd7269a383a7c344e3a650df23f0e44e3b6c266fb8205d9a","src/bootstrap.rs":"a5ab69d74ad8bfb8fad1cb45c8c571977c0bf907a70e767309a437580cee184c","src/clock.rs":"a33c1bfb2f174abb695d164c469ee744be52fec4bc345656e6027d063e150d71","src/clock_priv.rs":"a8e6a96896a94eda67c9fb6e45c564581a711cc9fdcf7674251bb6c0c28b47c2","src/clock_reply.rs":"bac04b6602dcdd4daac8e3a0a1e56fa4b6de20cf2c3fe7bb583358166aca8a3b","src/clock_types.rs":"d55d1d2a953e477f9dd064bd684b118235aa7bd79de85cdeaf75e21510aaaefa","src/dyld_kernel.rs":"566a17f597aa29619a1ce15f6b22577fc70ac5356f96e00fddbcb28560a5c83c","src/exc.rs":"2246493bef2c596b92f115ab673a10d50c6003d11abb8e73d7707ebc19e8ae5a","src/exception_types.rs":"c7894831d73145adb1a4b5d2a5d0b346f2b2dc05382b97f2f3f0275d337f6dfc","src/kern_return.rs":"153339995674136ef05d9595bdcf831595db0d0714a737ecd1ccd45391c56657","src/lib.rs":"4c8a9d906303a67246b32b6f96228bff6b045deb0a68073a7f8d1061c8d072bd","src/mach_init.rs":"df49bd287fd05fb74bc76254df7607fad0d6b90cb20da803e9f9a1dc2fcfe2fc","src/mach_port.rs":"d71ef4f4875824410d2d829474303926a56e3218a00fbe04024801a3245b67ad","src/mach_time.rs":"b9493e820acf21fee1f6e7e82a510d887925dc1117d6b71b681acc40cfa776af","src/mach_types.rs":"e2d17741ebcdcdff9686ec9ee5c90fb7a150ce990979507da01c351771fb3a19","src/memory_object_types.rs":"6fcb446c00ddd5ef4920efe618bd89df2e87f7ae3cf660a2bc1d25cf1f331dc2","src/message.rs":"126dfcdef0f690cd17f4403528403721b81f7e6a95821eff867d11dd6bfa9718","src/port.rs":"7ef8af905edd7d0de9c11813d6cf56ae82171e85efdde2c986622be0e7debf6f","src/structs.rs":"132e21e91313e6ec13e3ad5ed9c71852e8a55fbbaba449dbb1b3ca889bed4889","src/task.rs":"282ea602db2d08711785e0050a06b322a3fe4a4aac34b3c9116fe13e033898dd","src/task_info.rs":"cf87cffe567fee8871e0ce9762b7d8bbd5058dfbb309678d382149dedbe7f14a","src/thread_act.rs":"647198e0f9e3fe409a0610ee98560de3af4f152bcc4761f943e67723193b8a25","src/thread_policy.rs":"e8999b03a03d398a456056274ed8ebc4c38a1cbbbba2da931503885da0e9c2e3","src/thread_status.rs":"3fe98fadd61ce01b4f9dc3bc0ef8c9496798f0147822a4ddffe5d0eaf2f32c0a","src/traps.rs":"59a65e0cc3cf67d79180eabfe31248287afa7a2daa58ec367ebb6302ff39f4cb","src/vm.rs":"1e3fe55704dbbc0c287ad543f5642389a823539f72b337cbff726d6927566b23","src/vm_attributes.rs":"7f73f41572d1ca854b45199a17e9008197f3898cfe6a82dba6d14293d49269c6","src/vm_behavior.rs":"a5d195a52602f5ebe2991774c2390a6f20f1bfa82168dd62e88f2804134da1f3","src/vm_inherit.rs":"dbc7432350869733d6e7cf1da8617d97aafbeb1afcb1bdc60ed7ab53e37abf61","src/vm_page_size.rs":"1cd209f8f6fbc4d3b7a44b77f5a3c53c578f357199e3c616b2386a63e5bfe70a","src/vm_prot.rs":"65e5f7179e155c600cec1a1b3e030f2d0d6b446a6ec9ebad0d04f56ccd884a86","src/vm_purgable.rs":"e32963f20905c4edd1cfee364ad489ef646ad7d401967d0ed9e1e7ed6cd57e5d","src/vm_region.rs":"905daa12391c0c3bca9200ceaecbd02dd03550bbdc9c3342dceeeb6e4056184f","src/vm_statistics.rs":"abee2c810b13fa007a7e38dd2b3d6460005e9e78f5972e069d7fc3e0df80190e","src/vm_sync.rs":"e6006b66f0fa1a06c5e853d765a9366aab85009cc77a095b93f902330cf4ec81","src/vm_types.rs":"a47f71193172ce233018dfd40de2b9a56cdfcdfb18e04c1c0761cb6fc36f51b8"},"package":"6d0d1830bcd151a6fc4aea1369af235b36c1528fe976b8ff678683c9995eade8"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/mach2/Cargo.toml temporalio-1.3.0/vendor/mach2/Cargo.toml --- temporalio-1.3.0/vendor/mach2/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,49 @@ +# 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 = "2015" +name = "mach2" +version = "0.4.1" +include = [ + "src/**/*", + "LICENSE-*", + "README.md", +] +description = "A Rust interface to the user-space API of the Mach 3.0 kernel that underlies OSX." +readme = "README.md" +keywords = [ + "kernel", + "macos", + "darwin", +] +categories = [ + "api-bindings", + "external-ffi-bindings", + "no-std", + "os", +] +license = "BSD-2-Clause OR MIT OR Apache-2.0" +repository = "https://github.com/JohnTitor/mach2" + +[package.metadata.docs.rs] +default-target = "x86_64-apple-darwin" + +[features] +default = [] +unstable = [] + +[target."cfg(any(target_os = \"macos\", target_os = \"ios\"))".dependencies.libc] +version = "0.2" +default-features = false + +[badges.maintenance] +status = "passively-maintained" diff -Nru temporalio-1.3.0/vendor/mach2/LICENSE-APACHE temporalio-1.3.0/vendor/mach2/LICENSE-APACHE --- temporalio-1.3.0/vendor/mach2/LICENSE-APACHE 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/LICENSE-APACHE 2023-10-30 19:40:00.000000000 +0000 @@ -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 -Nru temporalio-1.3.0/vendor/mach2/LICENSE-BSD temporalio-1.3.0/vendor/mach2/LICENSE-BSD --- temporalio-1.3.0/vendor/mach2/LICENSE-BSD 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/LICENSE-BSD 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,23 @@ +Copyright (c) 2019 Nick Fitzgerald, 2021 Yuki Okushi +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff -Nru temporalio-1.3.0/vendor/mach2/LICENSE-MIT temporalio-1.3.0/vendor/mach2/LICENSE-MIT --- temporalio-1.3.0/vendor/mach2/LICENSE-MIT 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/LICENSE-MIT 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,25 @@ +Copyright (c) 2019 Nick Fitzgerald, 2021 Yuki Okushi + +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 -Nru temporalio-1.3.0/vendor/mach2/README.md temporalio-1.3.0/vendor/mach2/README.md --- temporalio-1.3.0/vendor/mach2/README.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,92 @@ +# mach2 + +[![Latest Version]][crates.io] [![docs]][docs.rs] + +A Rust interface to the **user-space** API of the Mach 3.0 kernel exposed in +`/usr/include/mach` that underlies macOS and is linked via `libSystem` (and +`libsystem_kernel`). + +This library does not expose the **kernel-space** API of the Mach 3.0 kernel +exposed in +`SDK/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/mach`. + +That is, if you are writing a kernel-resident device drivers or some other +kernel extensions you have to use something else. The user-space kernel API is +often API-incompatible with the kernel space one, and even in the cases where +they match, they are sometimes ABI incompatible such that using this library +would have **undefined behavior**. + +## Usage + +Add the following to your `Cargo.toml` to conditionally include mach on those +platforms that support it. + +```toml +[target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies.mach] +version = "0.4" +``` + +Available crate feature: + +* **unstable** (disabled by default): Exposes newly changed APIs. Enabling this may + bring breaking changes (see the breaking change policy). + + +### Breaking change policy + +We do the following steps when an item is changed/removed on latest toolchain: + +1. Deprecate an existing one +2. Declare a new one under the `unstable` feature +3. After a month or more since releasing a new version that contains that change, + remove/change an older one + +For instance, if const `FOO` value is changed from `3` to `4`, +we expose the newer one, i.e. `4`, under `unstable` first. +So the `unstable` users should notice the change on the first release since deprecating. +After a month or more, all the users should notice it. + +## Platform support + +The following table describes the current CI set-up: + +| Target | Min. Rust | XCode | build | ctest | run | +|-------------------------|-----------|-----------------|-------|-------|-----| +| `x86_64-apple-darwin` | 1.33.0 | 10.3.0 - 13.1.0 | ✓ | ✓ | ✓ | +| `aarch64-apple-darwin` | nightly | 13.1.0 | ✓ | - | - | +| `aarch64-apple-ios` | nightly | 13.1.0 | ✓ | - | - | +| `aarch64-apple-ios-sim` | nightly | 13.1.0 | ✓ | - | - | +| `x86_64-apple-ios` | nightly | 13.1.0 | ✓ | - | - | + +## License + +This project is licensed under either of + +* A 2-clause BSD License ([LICENSE-BSD](LICENSE-BSD)), or +* 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 `mach` by you, as defined in the Apache-2.0 license, shall be +triple licensed as above, without any additional terms or conditions. + +To locally test the library, run: + +``` +TARGET=x86_64-apple-darwin RUST_VERSION=nightly ./ci/run.sh +``` + +where you can replace the `TARGET` and `RUST_VERSION` with the target you +want to test (e.g. `aarch64-apple-darwin`) and the Rust version you want to use for +the tests (e.g. `stable`, `1.33.0`, etc.). + +[crates.io]: https://crates.io/crates/mach2 +[Latest Version]: https://img.shields.io/crates/v/mach2.svg +[docs]: https://docs.rs/mach2/badge.svg +[docs.rs]: https://docs.rs/mach2 diff -Nru temporalio-1.3.0/vendor/mach2/src/boolean.rs temporalio-1.3.0/vendor/mach2/src/boolean.rs --- temporalio-1.3.0/vendor/mach2/src/boolean.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/boolean.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,7 @@ +//! This module corresponds to `mach/i386/boolean.h`. + +#[cfg(target_arch = "x86_64")] +pub type boolean_t = ::libc::c_uint; + +#[cfg(not(target_arch = "x86_64"))] +pub type boolean_t = ::libc::c_int; diff -Nru temporalio-1.3.0/vendor/mach2/src/bootstrap.rs temporalio-1.3.0/vendor/mach2/src/bootstrap.rs --- temporalio-1.3.0/vendor/mach2/src/bootstrap.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/bootstrap.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,76 @@ +//! This module corresponds to `bootstrap.h` + +use boolean::boolean_t; +use kern_return::kern_return_t; +use port::mach_port_t; + +pub const BOOTSTRAP_MAX_NAME_LEN: ::libc::c_uint = 128; +pub const BOOTSTRAP_MAX_CMD_LEN: ::libc::c_uint = 512; + +pub const BOOTSTRAP_MAX_LOOKUP_COUNT: ::libc::c_uint = 20; + +pub const BOOTSTRAP_SUCCESS: ::libc::c_uint = 0; +pub const BOOTSTRAP_NOT_PRIVILEGED: ::libc::c_uint = 1100; +pub const BOOTSTRAP_NAME_IN_USE: ::libc::c_uint = 1101; +pub const BOOTSTRAP_UNKNOWN_SERVICE: ::libc::c_uint = 1102; +pub const BOOTSTRAP_SERVICE_ACTIVE: ::libc::c_uint = 1103; +pub const BOOTSTRAP_BAD_COUNT: ::libc::c_uint = 1104; +pub const BOOTSTRAP_NO_MEMORY: ::libc::c_uint = 1105; +pub const BOOTSTRAP_NO_CHILDREN: ::libc::c_uint = 1106; + +pub const BOOTSTRAP_STATUS_INACTIVE: ::libc::c_uint = 0; +pub const BOOTSTRAP_STATUS_ACTIVE: ::libc::c_uint = 1; +pub const BOOTSTRAP_STATUS_ON_DEMAND: ::libc::c_uint = 2; + +pub type name_t = [::libc::c_char; 128]; +pub type cmd_t = [::libc::c_char; 512]; +pub type name_array_t = *mut name_t; +pub type bootstrap_status_t = ::libc::c_int; +pub type bootstrap_status_array_t = *mut bootstrap_status_t; +pub type bootstrap_property_t = ::libc::c_uint; +pub type bootstrap_property_array_t = *mut bootstrap_property_t; +pub type bool_array_t = *mut boolean_t; + +extern "C" { + pub static bootstrap_port: mach_port_t; + pub fn bootstrap_create_server( + bp: mach_port_t, + server_cmd: *mut ::libc::c_char, + server_uid: ::libc::uid_t, + on_demand: boolean_t, + server_port: *mut mach_port_t, + ) -> kern_return_t; + pub fn bootstrap_subset( + bp: mach_port_t, + requestor_port: mach_port_t, + subset_port: *mut mach_port_t, + ) -> kern_return_t; + pub fn bootstrap_unprivileged(bp: mach_port_t, unpriv_port: *mut mach_port_t) -> kern_return_t; + pub fn bootstrap_parent(bp: mach_port_t, parent_port: *mut mach_port_t) -> kern_return_t; + pub fn bootstrap_register( + bp: mach_port_t, + service_name: *mut ::libc::c_char, + sp: mach_port_t, + ) -> kern_return_t; + pub fn bootstrap_create_service( + bp: mach_port_t, + service_name: *mut ::libc::c_char, + sp: *mut mach_port_t, + ) -> kern_return_t; + pub fn bootstrap_check_in( + bp: mach_port_t, + service_name: *const ::libc::c_char, + sp: *mut mach_port_t, + ) -> kern_return_t; + pub fn bootstrap_look_up( + bp: mach_port_t, + service_name: *const ::libc::c_char, + sp: *mut mach_port_t, + ) -> kern_return_t; + pub fn bootstrap_status( + bp: mach_port_t, + service_name: *mut ::libc::c_char, + service_active: *mut bootstrap_status_t, + ) -> kern_return_t; + pub fn bootstrap_strerror(r: kern_return_t) -> *const ::libc::c_char; +} diff -Nru temporalio-1.3.0/vendor/mach2/src/clock_priv.rs temporalio-1.3.0/vendor/mach2/src/clock_priv.rs --- temporalio-1.3.0/vendor/mach2/src/clock_priv.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/clock_priv.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,16 @@ +//! This module roughly corresponds to `mach/clock_priv.h`. + +use clock_types::{clock_attr_t, clock_flavor_t, mach_timespec_t}; +use kern_return::kern_return_t; +use mach_types::clock_ctrl_t; +use message::mach_msg_type_number_t; + +extern "C" { + pub fn clock_set_time(clock_ctrl: clock_ctrl_t, new_time: mach_timespec_t) -> kern_return_t; + pub fn clock_set_attributes( + clock_ctrl: clock_ctrl_t, + flavor: clock_flavor_t, + clock_attr: clock_attr_t, + clock_attrCnt: mach_msg_type_number_t, + ) -> kern_return_t; +} diff -Nru temporalio-1.3.0/vendor/mach2/src/clock_reply.rs temporalio-1.3.0/vendor/mach2/src/clock_reply.rs --- temporalio-1.3.0/vendor/mach2/src/clock_reply.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/clock_reply.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,16 @@ +//! This module roughly corresponds to `mach/clock_reply.h`. + +use clock_types::{alarm_type_t, mach_timespec_t}; +use kern_return::kern_return_t; +use mach_types::clock_reply_t; +use message::mach_msg_type_name_t; + +extern "C" { + pub fn clock_alarm_reply( + alarm_port: clock_reply_t, + alarm_portPoly: mach_msg_type_name_t, + alarm_code: kern_return_t, + alarm_type: alarm_type_t, + alarm_time: mach_timespec_t, + ) -> kern_return_t; +} diff -Nru temporalio-1.3.0/vendor/mach2/src/clock.rs temporalio-1.3.0/vendor/mach2/src/clock.rs --- temporalio-1.3.0/vendor/mach2/src/clock.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/clock.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,27 @@ +//! This module roughly corresponds to `mach/clock.h`. + +pub const clock_MSG_COUNT: ::libc::c_uint = 3; + +use clock_types::{alarm_type_t, clock_attr_t, clock_flavor_t, mach_timespec_t}; +use kern_return::kern_return_t; +use mach_types::{clock_reply_t, clock_serv_t}; +use message::mach_msg_type_number_t; + +extern "C" { + pub fn clock_get_time( + clock_serv: clock_serv_t, + cur_time: *mut mach_timespec_t, + ) -> kern_return_t; + pub fn clock_get_attributes( + clock_serv: clock_serv_t, + flavor: clock_flavor_t, + clock_attr: clock_attr_t, + clock_attrCnt: *mut mach_msg_type_number_t, + ) -> kern_return_t; + pub fn clock_alarm( + clock_serv: clock_serv_t, + alarm_type: alarm_type_t, + alarm_time: mach_timespec_t, + alarm_port: clock_reply_t, + ) -> kern_return_t; +} diff -Nru temporalio-1.3.0/vendor/mach2/src/clock_types.rs temporalio-1.3.0/vendor/mach2/src/clock_types.rs --- temporalio-1.3.0/vendor/mach2/src/clock_types.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/clock_types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,75 @@ +//! This module roughly corresponds to `mach/clock_types.h`. + +pub type alarm_type_t = ::libc::c_int; +pub type sleep_type_t = ::libc::c_int; +pub type clock_id_t = ::libc::c_int; +pub type clock_flavor_t = ::libc::c_int; +pub type clock_attr_t = *mut ::libc::c_int; +pub type clock_res_t = ::libc::c_int; + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct mach_timespec { + pub tv_sec: ::libc::c_uint, + pub tv_nsec: clock_res_t, +} +pub type mach_timespec_t = mach_timespec; + +pub const SYSTEM_CLOCK: ::libc::c_uint = 0; +pub const CALENDAR_CLOCK: ::libc::c_uint = 1; +pub const REALTIME_CLOCK: ::libc::c_uint = 0; + +pub const CLOCK_GET_TIME_RES: ::libc::c_uint = 1; +pub const CLOCK_ALARM_CURRES: ::libc::c_uint = 3; +pub const CLOCK_ALARM_MINRES: ::libc::c_uint = 4; +pub const CLOCK_ALARM_MAXRES: ::libc::c_uint = 5; + +pub const NSEC_PER_USEC: ::libc::c_ulonglong = 1000; +pub const USEC_PER_SEC: ::libc::c_ulonglong = 1_000_000; +pub const NSEC_PER_SEC: ::libc::c_ulonglong = 1_000_000_000; +pub const NSEC_PER_MSEC: ::libc::c_ulonglong = 1_000_000; + +#[allow(non_snake_case)] +pub fn BAD_MACH_TIMESPEC(t: mach_timespec) -> bool { + t.tv_nsec < 0 || (t.tv_nsec as ::libc::c_ulonglong) >= NSEC_PER_SEC +} + +#[allow(non_snake_case)] +pub fn CMP_MACH_TIMESPEC(t1: &mach_timespec, t2: &mach_timespec) -> ::libc::c_ulonglong { + if t1.tv_sec > t2.tv_sec { + return NSEC_PER_SEC; + } + if t1.tv_sec < t2.tv_sec { + return !NSEC_PER_SEC; + } + (t1.tv_nsec as ::libc::c_ulonglong) - (t2.tv_nsec as ::libc::c_ulonglong) +} + +#[allow(non_snake_case)] +pub fn ADD_MACH_TIMESPEC(t1: &mut mach_timespec, t2: &mach_timespec) { + t1.tv_nsec += t2.tv_nsec; + if (t1.tv_nsec as ::libc::c_ulonglong) >= NSEC_PER_SEC { + t1.tv_nsec = (t1.tv_nsec as ::libc::c_ulonglong - NSEC_PER_SEC) as clock_res_t; + t1.tv_sec += 1; + } + t1.tv_sec += t2.tv_sec; +} + +#[allow(non_snake_case)] +pub fn SUB_MACH_TIMESPEC(t1: &mut mach_timespec, t2: &mach_timespec) { + t1.tv_nsec -= t2.tv_nsec; + if t1.tv_nsec < 0 { + t1.tv_nsec = (t1.tv_nsec as ::libc::c_ulonglong + NSEC_PER_SEC) as clock_res_t; + t1.tv_sec -= 1; + } + t1.tv_sec -= t2.tv_sec; +} + +pub const ALRMTYPE: ::libc::c_uint = 0xff; +pub const TIME_ABSOLUTE: ::libc::c_uint = 0x00; +pub const TIME_RELATIVE: ::libc::c_uint = 0x01; + +#[allow(non_snake_case)] +pub fn BAD_ALRMTYPE(t: ::libc::c_uint) -> bool { + t & (!TIME_RELATIVE) != 0 +} diff -Nru temporalio-1.3.0/vendor/mach2/src/dyld_kernel.rs temporalio-1.3.0/vendor/mach2/src/dyld_kernel.rs --- temporalio-1.3.0/vendor/mach2/src/dyld_kernel.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/dyld_kernel.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,30 @@ +//! This module roughly corresponds to `mach/dyld_kernel.h`. + +use boolean::boolean_t; +use mach_types::{fsid_t, fsobj_id_t, uuid_t}; + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct dyld_kernel_image_info { + pub uuid: uuid_t, + pub fsobjid: fsobj_id_t, + pub fsid: fsid_t, + pub load_addr: u64, +} + +#[allow(non_snake_case)] +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct dyld_kernel_process_info { + pub cache_image_info: dyld_kernel_image_info, + pub timestamp: u64, + pub imageCount: u32, + pub initialImageCount: u32, + pub dyldState: u8, + pub no_cache: boolean_t, + pub private_cache: boolean_t, +} + +pub type dyld_kernel_image_info_t = dyld_kernel_image_info; +pub type dyld_kernel_process_info_t = dyld_kernel_process_info; +pub type dyld_kernel_image_info_array_t = *mut dyld_kernel_image_info_t; diff -Nru temporalio-1.3.0/vendor/mach2/src/exception_types.rs temporalio-1.3.0/vendor/mach2/src/exception_types.rs --- temporalio-1.3.0/vendor/mach2/src/exception_types.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/exception_types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,56 @@ +//! This module roughly corresponds to `mach/exception_types.h`. + +use port::mach_port_t; +use thread_status::thread_state_flavor_t; +use vm_types::integer_t; + +pub const EXC_BAD_ACCESS: ::libc::c_uint = 1; +pub const EXC_BAD_INSTRUCTION: ::libc::c_uint = 2; +pub const EXC_ARITHMETIC: ::libc::c_uint = 3; +pub const EXC_EMULATION: ::libc::c_uint = 4; +pub const EXC_SOFTWARE: ::libc::c_uint = 5; +pub const EXC_BREAKPOINT: ::libc::c_uint = 6; +pub const EXC_SYSCALL: ::libc::c_uint = 7; +pub const EXC_MACH_SYSCALL: ::libc::c_uint = 8; +pub const EXC_RPC_ALERT: ::libc::c_uint = 9; +pub const EXC_CRASH: ::libc::c_uint = 10; +pub const EXC_RESOURCE: ::libc::c_uint = 11; +pub const EXC_GUARD: ::libc::c_uint = 12; +pub const EXC_CORPSE_NOTIFY: ::libc::c_uint = 13; +pub const EXC_CORPSE_VARIANT_BIT: ::libc::c_uint = 256; +pub const EXCEPTION_DEFAULT: ::libc::c_uint = 1; +pub const EXCEPTION_STATE: ::libc::c_uint = 2; +pub const EXCEPTION_STATE_IDENTITY: ::libc::c_uint = 3; +pub const MACH_EXCEPTION_CODES: ::libc::c_uint = 2_147_483_648; +pub const EXC_MASK_BAD_ACCESS: ::libc::c_uint = 2; +pub const EXC_MASK_BAD_INSTRUCTION: ::libc::c_uint = 4; +pub const EXC_MASK_ARITHMETIC: ::libc::c_uint = 8; +pub const EXC_MASK_EMULATION: ::libc::c_uint = 16; +pub const EXC_MASK_SOFTWARE: ::libc::c_uint = 32; +pub const EXC_MASK_BREAKPOINT: ::libc::c_uint = 64; +pub const EXC_MASK_SYSCALL: ::libc::c_uint = 128; +pub const EXC_MASK_MACH_SYSCALL: ::libc::c_uint = 256; +pub const EXC_MASK_RPC_ALERT: ::libc::c_uint = 512; +pub const EXC_MASK_CRASH: ::libc::c_uint = 1024; +pub const EXC_MASK_RESOURCE: ::libc::c_uint = 2048; +pub const EXC_MASK_GUARD: ::libc::c_uint = 4096; +pub const EXC_MASK_CORPSE_NOTIFY: ::libc::c_uint = 8192; +pub const EXC_MASK_ALL: ::libc::c_uint = 7166; +pub const FIRST_EXCEPTION: ::libc::c_uint = 1; +pub const EXC_SOFT_SIGNAL: ::libc::c_uint = 65_539; +pub const EXC_MACF_MIN: ::libc::c_uint = 131_072; +pub const EXC_MACF_MAX: ::libc::c_uint = 196_607; + +pub type exception_type_t = ::libc::c_int; +pub type exception_data_type_t = integer_t; +pub type mach_exception_data_type_t = i64; +pub type exception_behavior_t = ::libc::c_int; +pub type exception_data_t = *mut exception_data_type_t; +pub type mach_exception_data_t = *mut mach_exception_data_type_t; +pub type exception_mask_t = ::libc::c_uint; +pub type exception_mask_array_t = *mut exception_mask_t; +pub type exception_behavior_array_t = *mut exception_behavior_t; +pub type exception_flavor_array_t = *mut thread_state_flavor_t; +pub type exception_port_array_t = *mut mach_port_t; +pub type mach_exception_code_t = mach_exception_data_type_t; +pub type mach_exception_subcode_t = mach_exception_data_type_t; diff -Nru temporalio-1.3.0/vendor/mach2/src/exc.rs temporalio-1.3.0/vendor/mach2/src/exc.rs --- temporalio-1.3.0/vendor/mach2/src/exc.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/exc.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,44 @@ +//! This module roughly corresponds to `mach/exc.h`. + +use exception_types::{exception_data_t, exception_type_t}; +use kern_return::kern_return_t; +use message::mach_msg_type_number_t; +use port::mach_port_t; +use thread_status::thread_state_t; + +pub const exc_MSG_COUNT: ::libc::c_uint = 3; + +extern "C" { + pub fn exception_raise( + exception_port: mach_port_t, + thread: mach_port_t, + task: mach_port_t, + exception: exception_type_t, + code: exception_data_t, + codeCnt: mach_msg_type_number_t, + ) -> kern_return_t; + pub fn exception_raise_state( + exception_port: mach_port_t, + exception: exception_type_t, + code: exception_data_t, + codeCnt: mach_msg_type_number_t, + flavor: *mut ::libc::c_int, + old_state: thread_state_t, + old_stateCnt: mach_msg_type_number_t, + new_state: thread_state_t, + new_stateCnt: *mut mach_msg_type_number_t, + ) -> kern_return_t; + pub fn exception_raise_state_identity( + exception_port: mach_port_t, + thread: mach_port_t, + task: mach_port_t, + exception: exception_type_t, + code: exception_data_t, + codeCnt: mach_msg_type_number_t, + flavor: *mut ::libc::c_int, + old_state: thread_state_t, + old_stateCnt: mach_msg_type_number_t, + new_state: thread_state_t, + new_stateCnt: *mut mach_msg_type_number_t, + ) -> kern_return_t; +} diff -Nru temporalio-1.3.0/vendor/mach2/src/kern_return.rs temporalio-1.3.0/vendor/mach2/src/kern_return.rs --- temporalio-1.3.0/vendor/mach2/src/kern_return.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/kern_return.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,58 @@ +//! This module corresponds to `mach/kern_return.h` and +//! `mach/i386/kern_return.h`. + +pub type kern_return_t = ::libc::c_int; + +pub const KERN_SUCCESS: kern_return_t = 0; +pub const KERN_INVALID_ADDRESS: kern_return_t = 1; +pub const KERN_PROTECTION_FAILURE: kern_return_t = 2; +pub const KERN_NO_SPACE: kern_return_t = 3; +pub const KERN_INVALID_ARGUMENT: kern_return_t = 4; +pub const KERN_FAILURE: kern_return_t = 5; +pub const KERN_RESOURCE_SHORTAGE: kern_return_t = 6; +pub const KERN_NOT_RECEIVER: kern_return_t = 7; +pub const KERN_NO_ACCESS: kern_return_t = 8; +pub const KERN_MEMORY_FAILURE: kern_return_t = 9; +pub const KERN_MEMORY_ERROR: kern_return_t = 10; +pub const KERN_ALREADY_IN_SET: kern_return_t = 11; +pub const KERN_NOT_IN_SET: kern_return_t = 12; +pub const KERN_NAME_EXISTS: kern_return_t = 13; +pub const KERN_ABORTED: kern_return_t = 14; +pub const KERN_INVALID_NAME: kern_return_t = 15; +pub const KERN_INVALID_TASK: kern_return_t = 16; +pub const KERN_INVALID_RIGHT: kern_return_t = 17; +pub const KERN_INVALID_VALUE: kern_return_t = 18; +pub const KERN_UREFS_OVERFLOW: kern_return_t = 19; +pub const KERN_INVALID_CAPABILITY: kern_return_t = 20; +pub const KERN_RIGHT_EXISTS: kern_return_t = 21; +pub const KERN_INVALID_HOST: kern_return_t = 22; +pub const KERN_MEMORY_PRESENT: kern_return_t = 23; +pub const KERN_MEMORY_DATA_MOVED: kern_return_t = 24; +pub const KERN_MEMORY_RESTART_COPY: kern_return_t = 25; +pub const KERN_INVALID_PROCESSOR_SET: kern_return_t = 26; +pub const KERN_POLICY_LIMIT: kern_return_t = 27; +pub const KERN_INVALID_POLICY: kern_return_t = 28; +pub const KERN_INVALID_OBJECT: kern_return_t = 29; +pub const KERN_ALREADY_WAITING: kern_return_t = 30; +pub const KERN_DEFAULT_SET: kern_return_t = 31; +pub const KERN_EXCEPTION_PROTECTED: kern_return_t = 32; +pub const KERN_INVALID_LEDGER: kern_return_t = 33; +pub const KERN_INVALID_MEMORY_CONTROL: kern_return_t = 34; +pub const KERN_INVALID_SECURITY: kern_return_t = 35; +pub const KERN_NOT_DEPRESSED: kern_return_t = 36; +pub const KERN_TERMINATED: kern_return_t = 37; +pub const KERN_LOCK_SET_DESTROYED: kern_return_t = 38; +pub const KERN_LOCK_UNSTABLE: kern_return_t = 39; +pub const KERN_LOCK_OWNED: kern_return_t = 40; +pub const KERN_LOCK_OWNED_SELF: kern_return_t = 41; +pub const KERN_SEMAPHORE_DESTROYED: kern_return_t = 42; +pub const KERN_RPC_SERVER_TERMINATED: kern_return_t = 43; +pub const KERN_RPC_TERMINATE_ORPHAN: kern_return_t = 44; +pub const KERN_RPC_CONTINUE_ORPHAN: kern_return_t = 45; +pub const KERN_NOT_SUPPORTED: kern_return_t = 46; +pub const KERN_NODE_DOWN: kern_return_t = 47; +pub const KERN_NOT_WAITING: kern_return_t = 48; +pub const KERN_OPERATION_TIMED_OUT: kern_return_t = 49; +pub const KERN_CODESIGN_ERROR: kern_return_t = 50; +pub const KERN_POLICY_STATIC: kern_return_t = 51; +pub const KERN_RETURN_MAX: kern_return_t = 0x100; diff -Nru temporalio-1.3.0/vendor/mach2/src/lib.rs temporalio-1.3.0/vendor/mach2/src/lib.rs --- temporalio-1.3.0/vendor/mach2/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,56 @@ +#![allow(non_camel_case_types)] +#![allow(non_upper_case_globals)] +#![deny(missing_debug_implementations)] +#![deny(missing_copy_implementations)] +#![allow( + clippy::module_name_repetitions, + clippy::cast_sign_loss, + clippy::cast_possible_truncation, + clippy::trivially_copy_pass_by_ref +)] +#![no_std] + +#[cfg(not(any(target_os = "macos", target_os = "ios")))] +compile_error!("mach requires macOS or iOS"); + +extern crate libc; + +#[allow(unused_imports)] +use core::{clone, cmp, default, fmt, hash, marker, mem, option}; + +pub mod boolean; +pub mod bootstrap; +pub mod clock; +pub mod clock_priv; +pub mod clock_reply; +pub mod clock_types; // TODO: test +pub mod dyld_kernel; +// pub mod error; // TODO +pub mod exc; +pub mod exception_types; +pub mod kern_return; +pub mod mach_init; +pub mod mach_port; +pub mod mach_time; +pub mod mach_types; +pub mod memory_object_types; +pub mod message; +pub mod port; +pub mod structs; +pub mod task; +pub mod task_info; +pub mod thread_act; +pub mod thread_policy; +pub mod thread_status; +pub mod traps; +pub mod vm; +pub mod vm_attributes; +pub mod vm_behavior; +pub mod vm_inherit; +pub mod vm_page_size; +pub mod vm_prot; +pub mod vm_purgable; +pub mod vm_region; +pub mod vm_statistics; +pub mod vm_sync; +pub mod vm_types; diff -Nru temporalio-1.3.0/vendor/mach2/src/mach_init.rs temporalio-1.3.0/vendor/mach2/src/mach_init.rs --- temporalio-1.3.0/vendor/mach2/src/mach_init.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/mach_init.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,22 @@ +//! This module corresponds to `mach/mach_init.h`. + +use mach_types::thread_port_t; + +extern "C" { + pub fn mach_thread_self() -> thread_port_t; +} + +#[cfg(test)] +mod tests { + use mach_init::*; + use port::*; + + #[test] + fn mach_thread_self_test() { + unsafe { + let this_thread = mach_thread_self(); + assert!(this_thread != MACH_PORT_NULL); + assert!(this_thread != MACH_PORT_DEAD); + } + } +} diff -Nru temporalio-1.3.0/vendor/mach2/src/mach_port.rs temporalio-1.3.0/vendor/mach2/src/mach_port.rs --- temporalio-1.3.0/vendor/mach2/src/mach_port.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/mach_port.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,35 @@ +//! This module corresponds to `mach/mach_port.h` + +use kern_return::kern_return_t; +use mach_types::ipc_space_t; +use message::mach_msg_type_name_t; +use port::{mach_port_delta_t, mach_port_name_t, mach_port_right_t, mach_port_t}; + +extern "C" { + pub fn mach_port_allocate( + task: ipc_space_t, + right: mach_port_right_t, + name: *mut mach_port_name_t, + ) -> kern_return_t; + pub fn mach_port_destroy(task: ipc_space_t, name: mach_port_name_t) -> kern_return_t; + pub fn mach_port_deallocate(task: ipc_space_t, name: mach_port_name_t) -> kern_return_t; + pub fn mach_port_insert_right( + task: ipc_space_t, + name: mach_port_name_t, + poly: mach_port_t, + polyPoly: mach_msg_type_name_t, + ) -> kern_return_t; + pub fn mach_port_extract_right( + task: ipc_space_t, + name: mach_port_name_t, + msgt_name: mach_msg_type_name_t, + poly: *mut mach_port_t, + polyPoly: *mut mach_msg_type_name_t, + ) -> kern_return_t; + pub fn mach_port_mod_refs( + task: ipc_space_t, + name: mach_port_name_t, + right: mach_port_right_t, + delta: mach_port_delta_t, + ) -> kern_return_t; +} diff -Nru temporalio-1.3.0/vendor/mach2/src/mach_time.rs temporalio-1.3.0/vendor/mach2/src/mach_time.rs --- temporalio-1.3.0/vendor/mach2/src/mach_time.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/mach_time.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,20 @@ +//! This module corresponds to `mach/mach_time.h` +use kern_return::kern_return_t; +pub type mach_timebase_info_t = *mut mach_timebase_info; +pub type mach_timebase_info_data_t = mach_timebase_info; + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct mach_timebase_info { + pub numer: u32, + pub denom: u32, +} + +extern "C" { + pub fn mach_timebase_info(info: mach_timebase_info_t) -> kern_return_t; + pub fn mach_wait_until(deadline: u64) -> kern_return_t; + pub fn mach_absolute_time() -> u64; + pub fn mach_approximate_time() -> u64; + pub fn mach_continuous_time() -> u64; + pub fn mach_continuous_approximate_time() -> u64; +} diff -Nru temporalio-1.3.0/vendor/mach2/src/mach_types.rs temporalio-1.3.0/vendor/mach2/src/mach_types.rs --- temporalio-1.3.0/vendor/mach2/src/mach_types.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/mach_types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,106 @@ +//! This module corresponds to `mach/mach_types.h` + +use port::mach_port_t; + +pub type task_t = mach_port_t; +pub type task_name_t = mach_port_t; +pub type task_suspension_token_t = mach_port_t; +pub type thread_t = mach_port_t; +pub type thread_act_t = mach_port_t; +pub type ipc_space_t = mach_port_t; +pub type coalition_t = mach_port_t; +pub type host_t = mach_port_t; +pub type host_priv_t = mach_port_t; +pub type host_security_t = mach_port_t; +pub type processor_t = mach_port_t; +pub type processor_set_t = mach_port_t; +pub type processor_set_control_t = mach_port_t; +pub type semaphore_t = mach_port_t; +pub type lock_set_t = mach_port_t; +pub type ledger_t = mach_port_t; +pub type alarm_t = mach_port_t; +pub type clock_serv_t = mach_port_t; +pub type clock_ctrl_t = mach_port_t; + +pub type processor_set_name_t = processor_set_t; + +pub type clock_reply_t = mach_port_t; +pub type bootstrap_t = mach_port_t; +pub type mem_entry_name_port_t = mach_port_t; +pub type exception_handler_t = mach_port_t; +pub type exception_handler_array_t = *mut exception_handler_t; +pub type vm_task_entry_t = mach_port_t; +pub type io_master_t = mach_port_t; +pub type UNDServerRef = mach_port_t; + +pub type task_array_t = *mut task_t; +pub type thread_array_t = *mut thread_t; +pub type processor_set_array_t = *mut processor_set_t; +pub type processor_set_name_array_t = *mut processor_set_t; +pub type processor_array_t = *mut processor_t; +pub type thread_act_array_t = *mut thread_act_t; +pub type ledger_array_t = *mut ledger_t; + +pub type task_port_t = task_t; +pub type task_port_array_t = task_array_t; +pub type thread_port_t = thread_t; +pub type thread_port_array_t = thread_array_t; +pub type ipc_space_port_t = ipc_space_t; +pub type host_name_t = host_t; +pub type host_name_port_t = host_t; +pub type processor_set_port_t = processor_set_t; +pub type processor_set_name_port_t = processor_set_t; +pub type processor_set_name_port_array_t = processor_set_array_t; +pub type processor_set_control_port_t = processor_set_t; +pub type processor_port_t = processor_t; +pub type processor_port_array_t = processor_array_t; +pub type thread_act_port_t = thread_act_t; +pub type thread_act_port_array_t = thread_act_array_t; +pub type semaphore_port_t = semaphore_t; +pub type lock_set_port_t = lock_set_t; +pub type ledger_port_t = ledger_t; +pub type ledger_port_array_t = ledger_array_t; +pub type alarm_port_t = alarm_t; +pub type clock_serv_port_t = clock_serv_t; +pub type clock_ctrl_port_t = clock_ctrl_t; +pub type exception_port_t = exception_handler_t; +pub type exception_port_arrary_t = exception_handler_array_t; + +pub const TASK_NULL: task_t = 0; +pub const TASK_NAME_NULL: task_name_t = 0; +pub const THREAD_NULL: thread_t = 0; +pub const TID_NULL: u64 = 0; +pub const THR_ACT_NULL: thread_act_t = 0; +pub const IPC_SPACE_NULL: ipc_space_t = 0; +pub const COALITION_NULL: coalition_t = 0; +pub const HOST_NULL: host_t = 0; +pub const HOST_PRIV_NULL: host_priv_t = 0; +pub const HOST_SECURITY_NULL: host_security_t = 0; +pub const PROCESSOR_SET_NULL: processor_set_t = 0; +pub const PROCESSOR_NULL: processor_t = 0; +pub const SEMAPHORE_NULL: semaphore_t = 0; +pub const LOCK_SET_NULL: lock_set_t = 0; +pub const LEDGER_NULL: ledger_t = 0; +pub const ALARM_NULL: alarm_t = 0; +pub const CLOCK_NULL: ::libc::clock_t = 0; +pub const UND_SERVER_NULL: UNDServerRef = 0; + +// : typedef unsigned char __darwin_uuid_t[16]; +pub type uuid_t = [::libc::c_uchar; 16]; + +// +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct fsid { + pub val: [i32; 2], +} +pub type fsid_t = fsid; + +// +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct fsobj_id { + pub fid_objno: u32, + pub fid_generation: u32, +} +pub type fsobj_id_t = fsobj_id; diff -Nru temporalio-1.3.0/vendor/mach2/src/memory_object_types.rs temporalio-1.3.0/vendor/mach2/src/memory_object_types.rs --- temporalio-1.3.0/vendor/mach2/src/memory_object_types.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/memory_object_types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,9 @@ +//! This module roughly corresponds to `mach/memory_object_types.h`. + +use vm_types::natural_t; + +pub type memory_object_offset_t = ::libc::c_ulonglong; +pub type memory_object_size_t = ::libc::c_ulonglong; +pub type memory_object_cluster_size_t = natural_t; +pub type memory_object_fault_info_t = *mut natural_t; +pub type vm_object_id_t = ::libc::c_ulonglong; diff -Nru temporalio-1.3.0/vendor/mach2/src/message.rs temporalio-1.3.0/vendor/mach2/src/message.rs --- temporalio-1.3.0/vendor/mach2/src/message.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/message.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,248 @@ +//! This module corresponds to `mach/message.h`. + +use kern_return::kern_return_t; +use port::{mach_port_name_t, mach_port_t}; +use vm_types::{integer_t, natural_t}; + +pub type mach_msg_timeout_t = natural_t; + +pub type mach_msg_bits_t = ::libc::c_uint; +pub type mach_msg_id_t = integer_t; +pub type mach_msg_size_t = natural_t; + +pub type mach_msg_copy_options_t = ::libc::c_uint; +pub type mach_msg_descriptor_type_t = ::libc::c_uint; +pub type mach_msg_type_name_t = ::libc::c_uint; + +pub type mach_msg_trailer_type_t = ::libc::c_uint; +pub type mach_msg_trailer_size_t = ::libc::c_uint; + +pub type mach_msg_option_t = integer_t; + +pub type mach_msg_type_number_t = natural_t; +pub type mach_msg_type_size_t = natural_t; + +pub type mach_msg_return_t = kern_return_t; + +pub const MACH_MSG_TIMEOUT_NONE: mach_msg_timeout_t = 0; + +pub const MACH_MSGH_BITS_ZERO: mach_msg_bits_t = 0x0000_0000; + +pub const MACH_MSGH_BITS_REMOTE_MASK: mach_msg_bits_t = 0x0000_001f; +pub const MACH_MSGH_BITS_LOCAL_MASK: mach_msg_bits_t = 0x0000_1f00; +pub const MACH_MSGH_BITS_VOUCHER_MASK: mach_msg_bits_t = 0x001f_0000; + +pub const MACH_MSGH_BITS_PORTS_MASK: mach_msg_bits_t = + MACH_MSGH_BITS_REMOTE_MASK | MACH_MSGH_BITS_LOCAL_MASK | MACH_MSGH_BITS_VOUCHER_MASK; + +pub const MACH_MSGH_BITS_COMPLEX: mach_msg_bits_t = 0x8000_0000; + +pub const MACH_MSGH_BITS_USER: mach_msg_bits_t = 0x801f_1f1f; + +#[allow(non_snake_case)] +pub fn MACH_MSGH_BITS(remote: mach_msg_bits_t, local: mach_msg_bits_t) -> mach_msg_bits_t { + remote | (local << 8) +} + +pub const MACH_MSG_TYPE_MOVE_RECEIVE: mach_msg_type_name_t = 16; +pub const MACH_MSG_TYPE_MOVE_SEND: mach_msg_type_name_t = 17; +pub const MACH_MSG_TYPE_MOVE_SEND_ONCE: mach_msg_type_name_t = 18; +pub const MACH_MSG_TYPE_COPY_SEND: mach_msg_type_name_t = 19; +pub const MACH_MSG_TYPE_MAKE_SEND: mach_msg_type_name_t = 20; +pub const MACH_MSG_TYPE_MAKE_SEND_ONCE: mach_msg_type_name_t = 21; +pub const MACH_MSG_TYPE_COPY_RECEIVE: mach_msg_type_name_t = 22; +pub const MACH_MSG_TYPE_DISPOSE_RECEIVE: mach_msg_type_name_t = 24; +pub const MACH_MSG_TYPE_DISPOSE_SEND: mach_msg_type_name_t = 25; +pub const MACH_MSG_TYPE_DISPOSE_SEND_ONCE: mach_msg_type_name_t = 26; + +pub const MACH_MSG_PHYSICAL_COPY: mach_msg_copy_options_t = 0; +pub const MACH_MSG_VIRTUAL_COPY: mach_msg_copy_options_t = 1; +pub const MACH_MSG_ALLOCATE: mach_msg_copy_options_t = 2; + +pub const MACH_MSG_PORT_DESCRIPTOR: mach_msg_descriptor_type_t = 0; +pub const MACH_MSG_OOL_DESCRIPTOR: mach_msg_descriptor_type_t = 1; +pub const MACH_MSG_OOL_PORTS_DESCRIPTOR: mach_msg_descriptor_type_t = 2; +pub const MACH_MSG_OOL_VOLATILE_DESCRIPTOR: mach_msg_descriptor_type_t = 3; + +pub const MACH_MSG_OPTION_NONE: mach_msg_option_t = 0x0000_0000; + +pub const MACH_SEND_MSG: mach_msg_option_t = 0x0000_0001; +pub const MACH_RCV_MSG: mach_msg_option_t = 0x0000_0002; + +pub const MACH_RCV_LARGE: mach_msg_option_t = 0x0000_0004; +pub const MACH_RCV_LARGE_IDENTITY: mach_msg_option_t = 0x0000_0008; + +pub const MACH_SEND_TIMEOUT: mach_msg_option_t = 0x0000_0010; +pub const MACH_SEND_INTERRUPT: mach_msg_option_t = 0x0000_0040; +pub const MACH_SEND_NOTIFY: mach_msg_option_t = 0x0000_0080; +pub const MACH_SEND_ALWAYS: mach_msg_option_t = 0x0001_0000; +pub const MACH_SEND_TRAILER: mach_msg_option_t = 0x0002_0000; +pub const MACH_SEND_NOIMPORTANCE: mach_msg_option_t = 0x0004_0000; +pub const MACH_SEND_NODENAP: mach_msg_option_t = MACH_SEND_NOIMPORTANCE; +pub const MACH_SEND_IMPORTANCE: mach_msg_option_t = 0x0008_0000; + +pub const MACH_RCV_TIMEOUT: mach_msg_option_t = 0x0000_0100; +pub const MACH_RCV_NOTIFY: mach_msg_option_t = 0x0000_0000; +pub const MACH_RCV_INTERRUPT: mach_msg_option_t = 0x0000_0400; +pub const MACH_RCV_VOUCHER: mach_msg_option_t = 0x0000_0800; +pub const MACH_RCV_OVERWRITE: mach_msg_option_t = 0x0000_0000; + +pub const MACH_MSG_SUCCESS: mach_msg_return_t = 0x0000_0000; + +pub const MACH_MSG_MASK: mach_msg_return_t = 0x0000_3e00; +pub const MACH_MSG_IPC_SPACE: mach_msg_return_t = 0x0000_2000; +pub const MACH_MSG_VM_SPACE: mach_msg_return_t = 0x0000_1000; +pub const MACH_MSG_IPC_KERNEL: mach_msg_return_t = 0x0000_0800; +pub const MACH_MSG_VM_KERNEL: mach_msg_return_t = 0x0000_0400; + +pub const MACH_SEND_IN_PROGRESS: mach_msg_return_t = 0x1000_0001; +pub const MACH_SEND_INVALID_DATA: mach_msg_return_t = 0x1000_0002; +pub const MACH_SEND_INVALID_DEST: mach_msg_return_t = 0x1000_0003; +pub const MACH_SEND_TIMED_OUT: mach_msg_return_t = 0x1000_0004; +pub const MACH_SEND_INVALID_VOUCHER: mach_msg_return_t = 0x1000_0005; +pub const MACH_SEND_INTERRUPTED: mach_msg_return_t = 0x1000_0007; +pub const MACH_SEND_MSG_TOO_SMALL: mach_msg_return_t = 0x1000_0008; +pub const MACH_SEND_INVALID_REPLY: mach_msg_return_t = 0x1000_0009; +pub const MACH_SEND_INVALID_RIGHT: mach_msg_return_t = 0x1000_000a; +pub const MACH_SEND_INVALID_NOTIFY: mach_msg_return_t = 0x1000_000b; +pub const MACH_SEND_INVALID_MEMORY: mach_msg_return_t = 0x1000_000c; +pub const MACH_SEND_NO_BUFFER: mach_msg_return_t = 0x1000_000d; +pub const MACH_SEND_TOO_LARGE: mach_msg_return_t = 0x1000_000e; +pub const MACH_SEND_INVALID_TYPE: mach_msg_return_t = 0x1000_000f; +pub const MACH_SEND_INVALID_HEADER: mach_msg_return_t = 0x1000_0010; +pub const MACH_SEND_INVALID_TRAILER: mach_msg_return_t = 0x1000_0011; +pub const MACH_SEND_INVALID_RT_OOL_SIZE: mach_msg_return_t = 0x1000_0015; + +pub const MACH_RCV_IN_PROGRESS: mach_msg_return_t = 0x1000_4001; +pub const MACH_RCV_INVALID_NAME: mach_msg_return_t = 0x1000_4002; +pub const MACH_RCV_TIMED_OUT: mach_msg_return_t = 0x1000_4003; +pub const MACH_RCV_TOO_LARGE: mach_msg_return_t = 0x1000_4004; +pub const MACH_RCV_INTERRUPTED: mach_msg_return_t = 0x1000_4005; +pub const MACH_RCV_PORT_CHANGED: mach_msg_return_t = 0x1000_4006; +pub const MACH_RCV_INVALID_NOTIFY: mach_msg_return_t = 0x1000_4007; +pub const MACH_RCV_INVALID_DATA: mach_msg_return_t = 0x1000_4008; +pub const MACH_RCV_PORT_DIED: mach_msg_return_t = 0x1000_4009; +pub const MACH_RCV_IN_SET: mach_msg_return_t = 0x1000_400a; +pub const MACH_RCV_HEADER_ERROR: mach_msg_return_t = 0x1000_400b; +pub const MACH_RCV_BODY_ERROR: mach_msg_return_t = 0x1000_400c; +pub const MACH_RCV_INVALID_TYPE: mach_msg_return_t = 0x1000_400d; +pub const MACH_RCV_SCATTER_SMALL: mach_msg_return_t = 0x1000_400e; +pub const MACH_RCV_INVALID_TRAILER: mach_msg_return_t = 0x1000_400f; +pub const MACH_RCV_IN_PROGRESS_TIMED: mach_msg_return_t = 0x1000_4011; + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct mach_msg_header_t { + pub msgh_bits: mach_msg_bits_t, + pub msgh_size: mach_msg_size_t, + pub msgh_remote_port: mach_port_t, + pub msgh_local_port: mach_port_t, + pub msgh_voucher_port: mach_port_name_t, + pub msgh_id: mach_msg_id_t, +} + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct mach_msg_body_t { + pub msgh_descriptor_count: mach_msg_size_t, +} + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct mach_msg_base_t { + pub header: mach_msg_header_t, + pub body: mach_msg_body_t, +} + +pub const MACH_MSG_TRAILER_FORMAT_0: mach_msg_trailer_type_t = 0; + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct mach_msg_trailer_t { + pub msgh_trailer_type: mach_msg_trailer_type_t, + pub msgh_trailer_size: mach_msg_trailer_size_t, +} + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct mach_msg_port_descriptor_t { + pub name: mach_port_t, + pub pad1: mach_msg_size_t, + pub pad2: u16, + pub disposition: u8, // mach_msg_type_name_t bitfield + pub type_: u8, // mach_msg_descriptor_type_t bitfield +} + +impl mach_msg_port_descriptor_t { + pub fn new(name: mach_port_t, disposition: mach_msg_type_name_t) -> Self { + Self { + name, + pad1: 0, + pad2: 0, + disposition: disposition as u8, + type_: MACH_MSG_PORT_DESCRIPTOR as u8, + } + } +} + +#[repr(C)] +#[derive(Copy, Clone, Debug, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct mach_msg_ool_descriptor_t { + pub address: *mut ::libc::c_void, + #[cfg(not(target_pointer_width = "64"))] + pub size: mach_msg_size_t, + pub deallocate: u8, // boolean_t bitfield + pub copy: u8, // mach_msg_copy_options_t bitfield + pub pad1: u8, + pub type_: u8, // mach_msg_descriptor_type_t bitfield + #[cfg(target_pointer_width = "64")] + pub size: mach_msg_size_t, +} + +impl mach_msg_ool_descriptor_t { + pub fn new( + address: *mut ::libc::c_void, + deallocate: bool, + copy: mach_msg_copy_options_t, + size: u32, + ) -> Self { + Self { + address, + deallocate: if deallocate { 1 } else { 0 }, + copy: copy as u8, + pad1: 0, + type_: MACH_MSG_OOL_DESCRIPTOR as u8, + size, + } + } +} + +#[repr(C)] +#[derive(Copy, Clone, Debug, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct mach_msg_ool_ports_descriptor_t { + pub address: *mut ::libc::c_void, + #[cfg(not(target_pointer_width = "64"))] + pub count: mach_msg_size_t, + pub deallocate: u8, // boolean_t bitfield + pub copy: u8, // mach_msg_copy_options_t bitfield + pub disposition: u8, // mach_msg_type_name_t bitfield + pub type_: u8, // mach_msg_descriptor_type_t bitfield + #[cfg(target_pointer_width = "64")] + pub count: mach_msg_size_t, +} + +extern "C" { + pub fn mach_msg( + msg: *mut mach_msg_header_t, + option: mach_msg_option_t, + send_size: mach_msg_size_t, + recv_size: mach_msg_size_t, + recv_name: mach_port_name_t, + timeout: mach_msg_timeout_t, + notify: mach_port_name_t, + ) -> mach_msg_return_t; + + // from mach/mach.h + pub fn mach_msg_send(msg: *mut mach_msg_header_t) -> mach_msg_return_t; + pub fn mach_msg_destroy(msg: *mut mach_msg_header_t); +} diff -Nru temporalio-1.3.0/vendor/mach2/src/port.rs temporalio-1.3.0/vendor/mach2/src/port.rs --- temporalio-1.3.0/vendor/mach2/src/port.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/port.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,28 @@ +//! This module corresponds to `mach/port.h` + +use vm_types::{integer_t, natural_t}; + +pub type mach_port_name_t = natural_t; + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct ipc_port; + +pub type ipc_port_t = *mut ipc_port; + +pub type mach_port_t = ::libc::c_uint; + +pub const MACH_PORT_NULL: mach_port_t = 0; +pub const MACH_PORT_DEAD: mach_port_t = !0; + +pub type mach_port_right_t = natural_t; + +pub const MACH_PORT_RIGHT_SEND: mach_port_right_t = 0; +pub const MACH_PORT_RIGHT_RECEIVE: mach_port_right_t = 1; +pub const MACH_PORT_RIGHT_SEND_ONCE: mach_port_right_t = 2; +pub const MACH_PORT_RIGHT_PORT_SET: mach_port_right_t = 3; +pub const MACH_PORT_RIGHT_DEAD_NAME: mach_port_right_t = 4; +pub const MACH_PORT_RIGHT_LABELH: mach_port_right_t = 5; +pub const MACH_PORT_RIGHT_NUMBER: mach_port_right_t = 6; + +pub type mach_port_delta_t = integer_t; diff -Nru temporalio-1.3.0/vendor/mach2/src/structs.rs temporalio-1.3.0/vendor/mach2/src/structs.rs --- temporalio-1.3.0/vendor/mach2/src/structs.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/structs.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,62 @@ +//! This module corresponds to `mach/_structs.h`. + +use mem; +use message::mach_msg_type_number_t; + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct x86_thread_state64_t { + pub __rax: u64, + pub __rbx: u64, + pub __rcx: u64, + pub __rdx: u64, + pub __rdi: u64, + pub __rsi: u64, + pub __rbp: u64, + pub __rsp: u64, + pub __r8: u64, + pub __r9: u64, + pub __r10: u64, + pub __r11: u64, + pub __r12: u64, + pub __r13: u64, + pub __r14: u64, + pub __r15: u64, + pub __rip: u64, + pub __rflags: u64, + pub __cs: u64, + pub __fs: u64, + pub __gs: u64, +} + +impl x86_thread_state64_t { + pub fn new() -> Self { + Self { + __rax: 0, + __rbx: 0, + __rcx: 0, + __rdx: 0, + __rdi: 0, + __rsi: 0, + __rbp: 0, + __rsp: 0, + __r8: 0, + __r9: 0, + __r10: 0, + __r11: 0, + __r12: 0, + __r13: 0, + __r14: 0, + __r15: 0, + __rip: 0, + __rflags: 0, + __cs: 0, + __fs: 0, + __gs: 0, + } + } + + pub fn count() -> mach_msg_type_number_t { + (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + } +} diff -Nru temporalio-1.3.0/vendor/mach2/src/task_info.rs temporalio-1.3.0/vendor/mach2/src/task_info.rs --- temporalio-1.3.0/vendor/mach2/src/task_info.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/task_info.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,44 @@ +//! This module roughly corresponds to `mach/task_info.h`. + +use vm_types::{integer_t, mach_vm_address_t, mach_vm_size_t, natural_t}; + +pub const TASK_INFO_MAX: ::libc::c_uint = 1024; +pub const TASK_BASIC_INFO_32: ::libc::c_uint = 4; +pub const TASK_BASIC2_INFO_32: ::libc::c_uint = 6; +pub const TASK_BASIC_INFO_64: ::libc::c_uint = 5; +#[cfg(target_arch = "x86_64")] +pub const TASK_BASIC_INFO: ::libc::c_uint = 5; +#[cfg(target_arch = "x86")] +pub const TASK_BASIC_INFO: ::libc::c_uint = 4; +pub const TASK_EVENTS_INFO: ::libc::c_uint = 2; +pub const TASK_THREAD_TIMES_INFO: ::libc::c_uint = 3; +pub const TASK_ABSOLUTETIME_INFO: ::libc::c_uint = 1; +pub const TASK_KERNELMEMORY_INFO: ::libc::c_uint = 7; +pub const TASK_SECURITY_TOKEN: ::libc::c_uint = 13; +pub const TASK_AUDIT_TOKEN: ::libc::c_uint = 15; +pub const TASK_AFFINITY_TAG_INFO: ::libc::c_uint = 16; +pub const TASK_DYLD_INFO: ::libc::c_uint = 17; +pub const TASK_DYLD_ALL_IMAGE_INFO_32: ::libc::c_uint = 0; +pub const TASK_DYLD_ALL_IMAGE_INFO_64: ::libc::c_uint = 1; +pub const TASK_EXTMOD_INFO: ::libc::c_uint = 19; +pub const MACH_TASK_BASIC_INFO: ::libc::c_uint = 20; +pub const TASK_POWER_INFO: ::libc::c_uint = 21; +pub const TASK_VM_INFO: ::libc::c_uint = 22; +pub const TASK_VM_INFO_PURGEABLE: ::libc::c_uint = 23; +pub const TASK_TRACE_MEMORY_INFO: ::libc::c_uint = 24; +pub const TASK_WAIT_STATE_INFO: ::libc::c_uint = 25; +pub const TASK_POWER_INFO_V2: ::libc::c_uint = 26; +pub const TASK_VM_INFO_PURGEABLE_ACCOUNT: ::libc::c_uint = 27; +pub const TASK_FLAGS_INFO: ::libc::c_uint = 28; +pub const TASK_DEBUG_INFO_INTERNAL: ::libc::c_uint = 29; + +pub type task_flavor_t = natural_t; +pub type task_info_t = *mut integer_t; + +#[repr(C, packed(4))] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct task_dyld_info { + pub all_image_info_addr: mach_vm_address_t, + pub all_image_info_size: mach_vm_size_t, + pub all_image_info_format: integer_t, +} diff -Nru temporalio-1.3.0/vendor/mach2/src/task.rs temporalio-1.3.0/vendor/mach2/src/task.rs --- temporalio-1.3.0/vendor/mach2/src/task.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/task.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,41 @@ +//! This module corresponds to `mach/task.defs`. + +use kern_return::kern_return_t; +use mach_types::{task_name_t, task_t, thread_act_array_t}; +use message::mach_msg_type_number_t; +use port::mach_port_t; +use task_info::{task_flavor_t, task_info_t}; + +pub type task_special_port_t = ::libc::c_int; + +pub const TASK_KERNEL_PORT: task_special_port_t = 1; +pub const TASK_HOST_PORT: task_special_port_t = 2; +pub const TASK_NAME_PORT: task_special_port_t = 3; +pub const TASK_BOOTSTRAP_PORT: task_special_port_t = 4; + +extern "C" { + pub fn task_resume(target_task: task_t) -> kern_return_t; + pub fn task_suspend(target_task: task_t) -> kern_return_t; + pub fn task_get_special_port( + task: task_t, + which_port: task_special_port_t, + special_port: *mut mach_port_t, + ) -> kern_return_t; + pub fn task_threads( + target_task: task_t, + act_list: *mut thread_act_array_t, + act_list_cnt: *mut mach_msg_type_number_t, + ) -> kern_return_t; + pub fn task_info( + target_task: task_name_t, + flavor: task_flavor_t, + task_info_out: task_info_t, + task_info_outCnt: *mut mach_msg_type_number_t, + ) -> kern_return_t; + pub fn task_set_info( + target_task: task_t, + flavor: task_flavor_t, + task_info_in: task_info_t, + task_info_inCnt: mach_msg_type_number_t, + ) -> kern_return_t; +} diff -Nru temporalio-1.3.0/vendor/mach2/src/thread_act.rs temporalio-1.3.0/vendor/mach2/src/thread_act.rs --- temporalio-1.3.0/vendor/mach2/src/thread_act.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/thread_act.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,23 @@ +//! This module corresponds to `mach/thread_act.defs`. + +use kern_return::kern_return_t; +use mach_types::thread_act_t; +use message::mach_msg_type_number_t; +use thread_status::{thread_state_flavor_t, thread_state_t}; + +extern "C" { + pub fn thread_get_state( + target_act: thread_act_t, + flavor: thread_state_flavor_t, + new_state: thread_state_t, + new_state_count: *mut mach_msg_type_number_t, + ) -> kern_return_t; +} + +extern "C" { + pub fn thread_suspend(target_act: thread_act_t) -> kern_return_t; +} + +extern "C" { + pub fn thread_resume(target_act: thread_act_t) -> kern_return_t; +} diff -Nru temporalio-1.3.0/vendor/mach2/src/thread_policy.rs temporalio-1.3.0/vendor/mach2/src/thread_policy.rs --- temporalio-1.3.0/vendor/mach2/src/thread_policy.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/thread_policy.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,121 @@ +//! This module corresponds to `mach/thread_policy.h`. + +use boolean::boolean_t; +use kern_return::kern_return_t; +use libc::thread_policy_t; +use mach_types::thread_t; +use message::mach_msg_type_number_t; +use vm_types::{integer_t, natural_t}; + +pub type thread_policy_flavor_t = natural_t; + +pub const THREAD_STANDARD_POLICY: thread_policy_flavor_t = 1; +pub const THREAD_EXTENDED_POLICY: thread_policy_flavor_t = 1; +pub const THREAD_TIME_CONSTRAINT_POLICY: thread_policy_flavor_t = 2; +pub const THREAD_PRECEDENCE_POLICY: thread_policy_flavor_t = 3; +pub const THREAD_AFFINITY_POLICY: thread_policy_flavor_t = 4; +pub const THREAD_BACKGROUND_POLICY: thread_policy_flavor_t = 5; +pub const THREAD_LATENCY_QOS_POLICY: thread_policy_flavor_t = 7; +pub const THREAD_THROUGHPUT_QOS_POLICY: thread_policy_flavor_t = 8; + +#[repr(C)] +#[derive(Clone, Copy, Debug)] +pub struct thread_standard_policy { + pub no_data: natural_t, +} + +#[repr(C)] +#[derive(Clone, Copy, Debug)] +pub struct thread_extended_policy { + pub timeshare: boolean_t, +} + +#[repr(C)] +#[derive(Clone, Copy, Debug)] +pub struct thread_time_constraint_policy { + pub period: u32, + pub computation: u32, + pub constraint: u32, + pub preemptible: boolean_t, +} + +#[repr(C)] +#[derive(Clone, Copy, Debug)] +pub struct thread_precedence_policy { + pub importance: integer_t, +} + +#[repr(C)] +#[derive(Clone, Copy, Debug)] +pub struct thread_affinity_policy { + pub affinity_tag: integer_t, +} + +pub const THREAD_AFFINITY_TAG_NULL: integer_t = 0; + +#[repr(C)] +#[derive(Clone, Copy, Debug)] +pub struct thread_background_policy { + pub priority: integer_t, +} + +pub type thread_latency_qos_t = integer_t; + +#[repr(C)] +#[derive(Clone, Copy, Debug)] +pub struct thread_latency_qos_policy { + thread_latency_qos_tier: thread_latency_qos_t, +} + +pub type thread_throughput_qos_t = integer_t; + +#[repr(C)] +#[derive(Clone, Copy, Debug)] +pub struct thread_throughput_qos_policy { + thread_throughput_qos_tier: thread_throughput_qos_t, +} + +pub type thread_standard_policy_data_t = thread_standard_policy; +pub type thread_extended_policy_data_t = thread_extended_policy; +pub type thread_time_constraint_policy_data_t = thread_time_constraint_policy; +pub type thread_precedence_policy_data_t = thread_precedence_policy; +pub type thread_affinity_policy_data_t = thread_affinity_policy; +pub type thread_background_policy_data_t = thread_background_policy; +pub type thread_latency_qos_policy_data_t = thread_latency_qos_policy; +pub type thread_throughput_qos_policy_data_t = thread_throughput_qos_policy; + +pub const THREAD_STANDARD_POLICY_COUNT: mach_msg_type_number_t = 0; +pub const THREAD_EXTENDED_POLICY_COUNT: mach_msg_type_number_t = + (core::mem::size_of::() / core::mem::size_of::()) as _; +pub const THREAD_TIME_CONSTRAINT_POLICY_COUNT: mach_msg_type_number_t = + (core::mem::size_of::() / core::mem::size_of::()) + as _; +pub const THREAD_PRECEDENCE_POLICY_COUNT: mach_msg_type_number_t = + (core::mem::size_of::() / core::mem::size_of::()) as _; +pub const THREAD_AFFINITY_POLICY_COUNT: mach_msg_type_number_t = + (core::mem::size_of::() / core::mem::size_of::()) as _; +pub const THREAD_BACKGROUND_POLICY_COUNT: mach_msg_type_number_t = + (core::mem::size_of::() / core::mem::size_of::()) as _; +pub const THREAD_LATENCY_QOS_POLICY_COUNT: mach_msg_type_number_t = + (core::mem::size_of::() / core::mem::size_of::()) as _; +pub const THREAD_THROUGHPUT_QOS_POLICY_COUNT: mach_msg_type_number_t = + (core::mem::size_of::() / core::mem::size_of::()) as _; + +extern "C" { + pub fn thread_policy_set( + thread: thread_t, + flavor: thread_policy_flavor_t, + policy_info: thread_policy_t, + count: mach_msg_type_number_t, + ) -> kern_return_t; +} + +extern "C" { + pub fn thread_policy_get( + thread: thread_t, + flavor: thread_policy_flavor_t, + policy_info: thread_policy_t, + count: *mut mach_msg_type_number_t, + get_default: *mut boolean_t, + ) -> kern_return_t; +} diff -Nru temporalio-1.3.0/vendor/mach2/src/thread_status.rs temporalio-1.3.0/vendor/mach2/src/thread_status.rs --- temporalio-1.3.0/vendor/mach2/src/thread_status.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/thread_status.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,23 @@ +//! This module corresponds to `mach/thread_status.h`. + +use vm_types::natural_t; + +pub type thread_state_t = *mut natural_t; +pub type thread_state_flavor_t = ::libc::c_int; + +pub static x86_THREAD_STATE32: thread_state_flavor_t = 1; +pub static x86_FLOAT_STATE32: thread_state_flavor_t = 2; +pub static x86_EXCEPTION_STATE32: thread_state_flavor_t = 3; +pub static x86_THREAD_STATE64: thread_state_flavor_t = 4; +pub static x86_FLOAT_STATE64: thread_state_flavor_t = 5; +pub static x86_EXCEPTION_STATE64: thread_state_flavor_t = 6; +pub static x86_THREAD_STATE: thread_state_flavor_t = 7; +pub static x86_FLOAT_STATE: thread_state_flavor_t = 8; +pub static x86_EXCEPTION_STATE: thread_state_flavor_t = 9; +pub static x86_DEBUG_STATE32: thread_state_flavor_t = 10; +pub static x86_DEBUG_STATE64: thread_state_flavor_t = 11; +pub static x86_DEBUG_STATE: thread_state_flavor_t = 12; +pub static THREAD_STATE_NONE: thread_state_flavor_t = 13; +pub static x86_AVX_STATE32: thread_state_flavor_t = 16; +pub static x86_AVX_STATE64: thread_state_flavor_t = 17; +pub static x86_AVX_STATE: thread_state_flavor_t = 18; diff -Nru temporalio-1.3.0/vendor/mach2/src/traps.rs temporalio-1.3.0/vendor/mach2/src/traps.rs --- temporalio-1.3.0/vendor/mach2/src/traps.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/traps.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,37 @@ +//! This module corresponds to `mach/mach_traps.h`. +use kern_return::kern_return_t; +use port::{mach_port_name_t, mach_port_t}; + +extern "C" { + static mach_task_self_: mach_port_t; + pub fn task_for_pid( + target_tport: mach_port_name_t, + pid: ::libc::c_int, + tn: *mut mach_port_name_t, + ) -> kern_return_t; +} + +#[allow(clippy::missing_safety_doc)] // FIXME +pub unsafe fn mach_task_self() -> mach_port_t { + mach_task_self_ +} + +#[allow(clippy::missing_safety_doc)] // FIXME +pub unsafe fn current_task() -> mach_port_t { + mach_task_self() +} + +#[cfg(test)] +mod tests { + use port::*; + use traps::*; + + #[test] + fn mach_task_self_sanity() { + unsafe { + let this_task = mach_task_self(); + assert!(this_task != MACH_PORT_NULL); + assert!(this_task != MACH_PORT_DEAD); + } + } +} diff -Nru temporalio-1.3.0/vendor/mach2/src/vm_attributes.rs temporalio-1.3.0/vendor/mach2/src/vm_attributes.rs --- temporalio-1.3.0/vendor/mach2/src/vm_attributes.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/vm_attributes.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,18 @@ +//! This module corresponds to `mach/vm_attributes.h`. + +pub type vm_machine_attribute_t = ::libc::c_uint; + +pub const MATTR_CACHE: vm_machine_attribute_t = 1; +pub const MATTR_MIGRATE: vm_machine_attribute_t = 1 << 1; +pub const MATTR_REPLICATE: vm_machine_attribute_t = 1 << 2; + +pub type vm_machine_attribute_val_t = ::libc::c_int; + +pub const MATTR_VAL_OFF: vm_machine_attribute_val_t = 0; +pub const MATTR_VAL_ON: vm_machine_attribute_val_t = 1; +pub const MATTR_VAL_GET: vm_machine_attribute_val_t = 2; +pub const MATTR_VAL_CACHE_FLUSH: vm_machine_attribute_val_t = 6; +pub const MATTR_VAL_DCACHE_FLUSH: vm_machine_attribute_val_t = 7; +pub const MATTR_VAL_ICACHE_FLUSH: vm_machine_attribute_val_t = 8; +pub const MATTR_VAL_CACHE_SYNC: vm_machine_attribute_val_t = 9; +pub const MATTR_VAL_GET_INFO: vm_machine_attribute_val_t = 10; diff -Nru temporalio-1.3.0/vendor/mach2/src/vm_behavior.rs temporalio-1.3.0/vendor/mach2/src/vm_behavior.rs --- temporalio-1.3.0/vendor/mach2/src/vm_behavior.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/vm_behavior.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,15 @@ +//! This module corresponds to `mach/vm_behavior.h`. + +pub type vm_behavior_t = ::libc::c_int; + +pub const VM_BEHAVIOR_DEFAULT: vm_behavior_t = 0; +pub const VM_BEHAVIOR_RANDOM: vm_behavior_t = 1; +pub const VM_BEHAVIOR_SEQUENTIAL: vm_behavior_t = 2; +pub const VM_BEHAVIOR_RSEQNTL: vm_behavior_t = 3; +pub const VM_BEHAVIOR_WILLNEED: vm_behavior_t = 4; +pub const VM_BEHAVIOR_DONTNEED: vm_behavior_t = 5; +pub const VM_BEHAVIOR_FREE: vm_behavior_t = 6; +pub const VM_BEHAVIOR_ZERO_WIRED_PAGES: vm_behavior_t = 7; +pub const VM_BEHAVIOR_REUSABLE: vm_behavior_t = 8; +pub const VM_BEHAVIOR_REUSE: vm_behavior_t = 9; +pub const VM_BEHAVIOR_CAN_REUSE: vm_behavior_t = 10; diff -Nru temporalio-1.3.0/vendor/mach2/src/vm_inherit.rs temporalio-1.3.0/vendor/mach2/src/vm_inherit.rs --- temporalio-1.3.0/vendor/mach2/src/vm_inherit.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/vm_inherit.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,10 @@ +//! This module corresponds to `mach/vm_inherit.h`. + +pub type vm_inherit_t = ::libc::c_uint; + +pub const VM_INHERIT_SHARE: vm_inherit_t = 0; +pub const VM_INHERIT_COPY: vm_inherit_t = 1; +pub const VM_INHERIT_NONE: vm_inherit_t = 2; +pub const VM_INHERIT_DONATE_COPY: vm_inherit_t = 3; +pub const VM_INHERIT_DEFAULT: vm_inherit_t = VM_INHERIT_COPY; +pub const VM_INHERIT_LAST_VALID: vm_inherit_t = VM_INHERIT_NONE; diff -Nru temporalio-1.3.0/vendor/mach2/src/vm_page_size.rs temporalio-1.3.0/vendor/mach2/src/vm_page_size.rs --- temporalio-1.3.0/vendor/mach2/src/vm_page_size.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/vm_page_size.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,40 @@ +//! This module roughly corresponds to `mach/vm_page_size.h` + +use vm_types::{mach_vm_offset_t, mach_vm_size_t, vm_size_t}; + +extern "C" { + pub static vm_page_size: vm_size_t; + pub static vm_page_mask: vm_size_t; + pub static vm_page_shift: ::libc::c_int; +} + +#[allow(clippy::missing_safety_doc)] // FIXME +pub unsafe fn mach_vm_trunc_page(x: mach_vm_offset_t) -> mach_vm_offset_t { + x & !(vm_page_mask as mach_vm_size_t) +} + +#[allow(clippy::missing_safety_doc)] // FIXME +pub unsafe fn mach_vm_round_page(x: mach_vm_offset_t) -> mach_vm_offset_t { + (x + vm_page_mask as mach_vm_size_t) & !(vm_page_mask as mach_vm_size_t) +} + +#[cfg(test)] +mod tests { + use vm_page_size::*; + use vm_types::mach_vm_size_t; + + #[test] + fn page_size() { + unsafe { + assert!(vm_page_size > 0); + assert!(vm_page_size % 2 == 0); + assert_eq!(mach_vm_round_page(1), vm_page_size as mach_vm_size_t); + + #[cfg(target_arch = "aarch64")] + assert_eq!(vm_page_size, 16384); + + #[cfg(not(target_arch = "aarch64"))] + assert_eq!(vm_page_size, 4096); + } + } +} diff -Nru temporalio-1.3.0/vendor/mach2/src/vm_prot.rs temporalio-1.3.0/vendor/mach2/src/vm_prot.rs --- temporalio-1.3.0/vendor/mach2/src/vm_prot.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/vm_prot.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,13 @@ +//! This module corresponds to `mach/vm_prot.h`. + +pub type vm_prot_t = ::libc::c_int; + +pub const VM_PROT_NONE: vm_prot_t = 0; +pub const VM_PROT_READ: vm_prot_t = 1; +pub const VM_PROT_WRITE: vm_prot_t = 1 << 1; +pub const VM_PROT_EXECUTE: vm_prot_t = 1 << 2; +pub const VM_PROT_NO_CHANGE: vm_prot_t = 1 << 3; +pub const VM_PROT_COPY: vm_prot_t = 1 << 4; +pub const VM_PROT_WANTS_COPY: vm_prot_t = 1 << 4; +pub const VM_PROT_DEFAULT: vm_prot_t = VM_PROT_READ | VM_PROT_WRITE; +pub const VM_PROT_ALL: vm_prot_t = VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE; diff -Nru temporalio-1.3.0/vendor/mach2/src/vm_purgable.rs temporalio-1.3.0/vendor/mach2/src/vm_purgable.rs --- temporalio-1.3.0/vendor/mach2/src/vm_purgable.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/vm_purgable.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,42 @@ +//! This module corresponds to `mach/vm_purgable.h`. + +pub type vm_purgable_t = ::libc::c_int; + +pub const VM_PURGABLE_SET_STATE: vm_purgable_t = 0; +pub const VM_PURGABLE_GET_STATE: vm_purgable_t = 1; + +pub const VM_VOLATILE_GROUP_SHIFT: ::libc::c_int = 8; +pub const VM_VOLATILE_GROUP_MASK: ::libc::c_int = 7 << VM_VOLATILE_GROUP_SHIFT; +pub const VM_VOLATILE_GROUP_DEFAULT: ::libc::c_int = VM_VOLATILE_GROUP_0; + +pub const VM_VOLATILE_GROUP_0: ::libc::c_int = 0 << VM_VOLATILE_GROUP_SHIFT; +pub const VM_VOLATILE_GROUP_1: ::libc::c_int = 1 << VM_VOLATILE_GROUP_SHIFT; +pub const VM_VOLATILE_GROUP_2: ::libc::c_int = 2 << VM_VOLATILE_GROUP_SHIFT; +pub const VM_VOLATILE_GROUP_3: ::libc::c_int = 3 << VM_VOLATILE_GROUP_SHIFT; +pub const VM_VOLATILE_GROUP_4: ::libc::c_int = 4 << VM_VOLATILE_GROUP_SHIFT; +pub const VM_VOLATILE_GROUP_5: ::libc::c_int = 5 << VM_VOLATILE_GROUP_SHIFT; +pub const VM_VOLATILE_GROUP_6: ::libc::c_int = 6 << VM_VOLATILE_GROUP_SHIFT; +pub const VM_VOLATILE_GROUP_7: ::libc::c_int = 7 << VM_VOLATILE_GROUP_SHIFT; + +pub const VM_PURGABLE_BEHAVIOR_SHIFT: ::libc::c_int = 6; +pub const VM_PURGABLE_BEHAVIOR_MASK: ::libc::c_int = 1 << VM_PURGABLE_BEHAVIOR_SHIFT; +pub const VM_PURGABLE_BEHAVIOR_FIFO: ::libc::c_int = 0 << VM_PURGABLE_BEHAVIOR_SHIFT; +pub const VM_PURGABLE_BEHAVIOR_LIFO: ::libc::c_int = 1 << VM_PURGABLE_BEHAVIOR_SHIFT; + +pub const VM_PURGABLE_ORDERING_SHIFT: ::libc::c_int = 5; +pub const VM_PURGABLE_ORDERING_MASK: ::libc::c_int = 1 << VM_PURGABLE_ORDERING_SHIFT; +pub const VM_PURGABLE_ORDERING_OBSOLETE: ::libc::c_int = 1 << VM_PURGABLE_ORDERING_SHIFT; +pub const VM_PURGABLE_ORDERING_NORMAL: ::libc::c_int = 0 << VM_PURGABLE_ORDERING_SHIFT; + +pub const VM_VOLATILE_ORDER_SHIFT: ::libc::c_int = 4; +pub const VM_VOLATILE_ORDER_MASK: ::libc::c_int = 1 << VM_VOLATILE_ORDER_SHIFT; +pub const VM_VOLATILE_MAKE_FIRST_IN_GROUP: ::libc::c_int = 1 << VM_VOLATILE_ORDER_SHIFT; +pub const VM_VOLATILE_MAKE_LAST_IN_GROUP: ::libc::c_int = 0 << VM_VOLATILE_ORDER_SHIFT; + +pub const VM_PURGABLE_STATE_MIN: ::libc::c_int = 0; +pub const VM_PURGABLE_STATE_MAX: ::libc::c_int = 3; +pub const VM_PURGABLE_STATE_MASK: ::libc::c_int = 3; +pub const VM_PURGABLE_NONVOLATILE: ::libc::c_int = 0; +pub const VM_PURGABLE_VOLATILE: ::libc::c_int = 1; +pub const VM_PURGABLE_EMPTY: ::libc::c_int = 2; +pub const VM_PURGABLE_DENY: ::libc::c_int = 3; diff -Nru temporalio-1.3.0/vendor/mach2/src/vm_region.rs temporalio-1.3.0/vendor/mach2/src/vm_region.rs --- temporalio-1.3.0/vendor/mach2/src/vm_region.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/vm_region.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,238 @@ +//! This module roughly corresponds to `mach/vm_region.h`. + +use boolean::boolean_t; +use mem; +use memory_object_types::{memory_object_offset_t, vm_object_id_t}; +use message::mach_msg_type_number_t; +use vm_behavior::vm_behavior_t; +use vm_inherit::vm_inherit_t; +use vm_prot::vm_prot_t; +use vm_types::{mach_vm_address_t, mach_vm_size_t}; + +pub type vm32_object_id_t = u32; + +pub type vm_region_info_t = *mut ::libc::c_int; +pub type vm_region_info_64_t = *mut ::libc::c_int; +pub type vm_region_recurse_info_t = *mut ::libc::c_int; +pub type vm_region_recurse_info_64_t = *mut ::libc::c_int; +pub type vm_region_flavor_t = ::libc::c_int; +pub type vm_region_info_data_t = [::libc::c_int; VM_REGION_INFO_MAX as usize]; + +pub type vm_region_basic_info_64_t = *mut vm_region_basic_info_64; +pub type vm_region_basic_info_data_64_t = vm_region_basic_info_64; +pub type vm_region_basic_info_t = *mut vm_region_basic_info; +pub type vm_region_basic_info_data_t = vm_region_basic_info; +pub type vm_region_extended_info_t = *mut vm_region_extended_info; +pub type vm_region_extended_info_data_t = vm_region_extended_info; +pub type vm_region_top_info_t = *mut vm_region_top_info; +pub type vm_region_top_info_data_t = vm_region_top_info; +pub type vm_region_submap_info_t = *mut vm_region_submap_info; +pub type vm_region_submap_info_data_t = vm_region_submap_info; +pub type vm_region_submap_info_64_t = *mut vm_region_submap_info_64; +pub type vm_region_submap_info_data_64_t = vm_region_submap_info_64; +pub type vm_region_submap_short_info_64_t = *mut vm_region_submap_short_info_64; +pub type vm_region_submap_short_info_data_64_t = vm_region_submap_short_info_64; +pub type vm_page_info_t = *mut ::libc::c_int; +pub type vm_page_info_flavor_t = ::libc::c_int; +pub type vm_page_info_basic_t = *mut vm_page_info_basic; +pub type vm_page_info_basic_data_t = vm_page_info_basic; +pub type mach_vm_read_entry_t = [mach_vm_read_entry; VM_MAP_ENTRY_MAX as usize]; + +pub const VM_REGION_INFO_MAX: ::libc::c_int = 1 << 10; +pub const VM_MAP_ENTRY_MAX: ::libc::c_int = 1 << 8; + +pub const VM_PAGE_INFO_BASIC: vm_page_info_flavor_t = 1; + +pub const VM_REGION_BASIC_INFO_64: vm_region_flavor_t = 9; +pub const VM_REGION_BASIC_INFO: vm_region_flavor_t = 10; +pub const VM_REGION_EXTENDED_INFO: vm_region_flavor_t = 13; +pub const VM_REGION_TOP_INFO: vm_region_flavor_t = 12; + +pub const SM_COW: ::libc::c_uchar = 1; +pub const SM_PRIVATE: ::libc::c_uchar = 2; +pub const SM_EMPTY: ::libc::c_uchar = 3; +pub const SM_SHARED: ::libc::c_uchar = 4; +pub const SM_TRUESHARED: ::libc::c_uchar = 5; +pub const SM_PRIVATE_ALIASED: ::libc::c_uchar = 6; +pub const SM_SHARED_ALIASED: ::libc::c_uchar = 7; + +#[repr(C, packed(4))] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct vm_region_basic_info_64 { + pub protection: vm_prot_t, + pub max_protection: vm_prot_t, + pub inheritance: vm_inherit_t, + pub shared: boolean_t, + pub reserved: boolean_t, + pub offset: memory_object_offset_t, + pub behavior: vm_behavior_t, + pub user_wired_count: ::libc::c_ushort, +} + +impl vm_region_basic_info_64 { + pub fn count() -> mach_msg_type_number_t { + (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + } +} + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct vm_region_basic_info { + pub protection: vm_prot_t, + pub max_protection: vm_prot_t, + pub inheritance: vm_inherit_t, + pub shared: boolean_t, + pub reserved: boolean_t, + pub offset: u32, + pub behavior: vm_behavior_t, + pub user_wired_count: ::libc::c_ushort, +} + +impl vm_region_basic_info { + pub fn count() -> mach_msg_type_number_t { + (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + } +} + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct vm_region_extended_info { + pub protection: vm_prot_t, + pub user_tag: ::libc::c_uint, + pub pages_resident: ::libc::c_uint, + pub pages_shared_now_private: ::libc::c_uint, + pub pages_swapped_out: ::libc::c_uint, + pub pages_dirtied: ::libc::c_uint, + pub ref_count: ::libc::c_uint, + pub shadow_depth: ::libc::c_ushort, + pub external_pager: ::libc::c_uchar, + pub share_mode: ::libc::c_uchar, + pub pages_reusable: ::libc::c_uint, +} + +impl vm_region_extended_info { + pub fn count() -> mach_msg_type_number_t { + (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + } +} + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct vm_region_top_info { + pub obj_id: ::libc::c_uint, + pub ref_count: ::libc::c_uint, + pub private_pages_resident: ::libc::c_uint, + pub shared_pages_resident: ::libc::c_uint, + pub share_mode: ::libc::c_uchar, +} + +impl vm_region_top_info { + pub fn count() -> mach_msg_type_number_t { + (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + } +} + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct vm_region_submap_info { + pub protection: vm_prot_t, + pub max_protection: vm_prot_t, + pub inheritance: vm_inherit_t, + pub offset: u32, + pub user_tag: ::libc::c_uint, + pub pages_resident: ::libc::c_uint, + pub pages_shared_now_private: ::libc::c_uint, + pub pages_swapped_out: ::libc::c_uint, + pub pages_dirtied: ::libc::c_uint, + pub ref_count: ::libc::c_uint, + pub shadow_depth: ::libc::c_ushort, + pub external_pager: ::libc::c_uchar, + pub share_mode: ::libc::c_uchar, + pub is_submap: boolean_t, + pub behavior: vm_behavior_t, + pub object_id: vm32_object_id_t, + pub user_wired_count: ::libc::c_ushort, +} + +impl vm_region_submap_info { + pub fn count() -> mach_msg_type_number_t { + (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + } +} + +#[repr(C, packed(4))] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct vm_region_submap_info_64 { + pub protection: vm_prot_t, + pub max_protection: vm_prot_t, + pub inheritance: vm_inherit_t, + pub offset: memory_object_offset_t, + pub user_tag: ::libc::c_uint, + pub pages_resident: ::libc::c_uint, + pub pages_shared_now_private: ::libc::c_uint, + pub pages_swapped_out: ::libc::c_uint, + pub pages_dirtied: ::libc::c_uint, + pub ref_count: ::libc::c_uint, + pub shadow_depth: ::libc::c_ushort, + pub external_pager: ::libc::c_uchar, + pub share_mode: ::libc::c_uchar, + pub is_submap: boolean_t, + pub behavior: vm_behavior_t, + pub object_id: vm32_object_id_t, + pub user_wired_count: ::libc::c_ushort, + pub pages_reusable: ::libc::c_uint, +} + +impl vm_region_submap_info_64 { + pub fn count() -> mach_msg_type_number_t { + (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + } +} + +#[repr(C, packed(4))] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct vm_region_submap_short_info_64 { + pub protection: vm_prot_t, + pub max_protection: vm_prot_t, + pub inheritance: vm_inherit_t, + pub offset: memory_object_offset_t, + pub user_tag: ::libc::c_uint, + pub ref_count: ::libc::c_uint, + pub shadow_depth: ::libc::c_ushort, + pub external_pager: ::libc::c_uchar, + pub share_mode: ::libc::c_uchar, + pub is_submap: boolean_t, + pub behavior: vm_behavior_t, + pub object_id: vm32_object_id_t, + pub user_wired_count: ::libc::c_ushort, +} + +impl vm_region_submap_short_info_64 { + pub fn count() -> mach_msg_type_number_t { + (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + } +} + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct vm_page_info_basic { + pub disposition: ::libc::c_int, + pub ref_count: ::libc::c_int, + pub object_id: vm_object_id_t, + pub offset: memory_object_offset_t, + pub depth: ::libc::c_int, + pub __pad: ::libc::c_int, +} + +impl vm_page_info_basic { + pub fn count() -> mach_msg_type_number_t { + (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + } +} + +#[repr(C, packed(4))] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct mach_vm_read_entry { + pub address: mach_vm_address_t, + pub size: mach_vm_size_t, +} diff -Nru temporalio-1.3.0/vendor/mach2/src/vm.rs temporalio-1.3.0/vendor/mach2/src/vm.rs --- temporalio-1.3.0/vendor/mach2/src/vm.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/vm.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,248 @@ +//! This module roughly corresponds to `mach/mach_vm.defs`. + +use boolean::boolean_t; +use kern_return::kern_return_t; +use mach_types::{mem_entry_name_port_t, vm_task_entry_t}; +use memory_object_types::{memory_object_offset_t, memory_object_size_t}; +use message::mach_msg_type_number_t; +use port::mach_port_t; +use vm_attributes::{vm_machine_attribute_t, vm_machine_attribute_val_t}; +use vm_behavior::vm_behavior_t; +use vm_inherit::vm_inherit_t; +use vm_prot::vm_prot_t; +use vm_purgable::vm_purgable_t; +use vm_region::mach_vm_read_entry_t; +use vm_region::{ + vm_page_info_flavor_t, vm_page_info_t, vm_region_flavor_t, vm_region_info_t, + vm_region_recurse_info_t, +}; +use vm_sync::vm_sync_t; +use vm_types::{ + integer_t, mach_vm_address_t, mach_vm_offset_t, mach_vm_size_t, natural_t, vm_map_t, + vm_offset_t, vm_size_t, +}; + +extern "C" { + pub fn mach_vm_allocate( + target: vm_task_entry_t, + address: *mut mach_vm_address_t, + size: mach_vm_size_t, + flags: ::libc::c_int, + ) -> kern_return_t; + + pub fn mach_vm_deallocate( + target: vm_task_entry_t, + address: mach_vm_address_t, + size: mach_vm_size_t, + ) -> kern_return_t; + + pub fn mach_vm_protect( + target_task: vm_task_entry_t, + address: mach_vm_address_t, + size: mach_vm_size_t, + set_maximum: boolean_t, + new_protection: vm_prot_t, + ) -> kern_return_t; + + pub fn mach_vm_inherit( + target_task: vm_task_entry_t, + address: mach_vm_address_t, + size: mach_vm_size_t, + new_inheritance: vm_inherit_t, + ) -> kern_return_t; + + pub fn mach_vm_read( + target_task: vm_task_entry_t, + address: mach_vm_address_t, + size: mach_vm_size_t, + data: *mut vm_offset_t, + dataCnt: *mut mach_msg_type_number_t, + ) -> kern_return_t; + + #[allow(improper_ctypes)] + pub fn mach_vm_read_list( + target_task: vm_task_entry_t, + data_list: mach_vm_read_entry_t, + count: natural_t, + ) -> kern_return_t; + + pub fn mach_vm_write( + target_task: vm_map_t, + address: mach_vm_address_t, + data: vm_offset_t, + dataCnt: mach_msg_type_number_t, + ) -> kern_return_t; + + pub fn mach_vm_copy( + target_task: vm_task_entry_t, + source_address: mach_vm_address_t, + size: mach_vm_size_t, + dest_address: mach_vm_address_t, + ) -> kern_return_t; + + pub fn mach_vm_read_overwrite( + target_task: vm_task_entry_t, + address: mach_vm_address_t, + size: mach_vm_size_t, + data: mach_vm_address_t, + outsize: *mut mach_vm_size_t, + ) -> kern_return_t; + + pub fn mach_vm_msync( + target_task: vm_task_entry_t, + address: mach_vm_address_t, + size: mach_vm_size_t, + sync_flags: vm_sync_t, + ) -> kern_return_t; + + pub fn mach_vm_behavior_set( + target_task: vm_task_entry_t, + address: mach_vm_address_t, + size: mach_vm_size_t, + new_behavior: vm_behavior_t, + ) -> kern_return_t; + + pub fn mach_vm_map( + target_task: vm_task_entry_t, + inout: *mut mach_vm_address_t, + size: mach_vm_size_t, + mask: mach_vm_offset_t, + flags: ::libc::c_int, + object: mem_entry_name_port_t, + offset: memory_object_offset_t, + copy: boolean_t, + cur_protection: vm_prot_t, + max_protection: vm_prot_t, + inheritance: vm_inherit_t, + ) -> kern_return_t; + + pub fn mach_vm_machine_attribute( + target_task: vm_task_entry_t, + address: mach_vm_address_t, + size: mach_vm_size_t, + attribute: vm_machine_attribute_t, + value: *mut vm_machine_attribute_val_t, + ) -> kern_return_t; + + pub fn mach_vm_remap( + target_task: vm_task_entry_t, + target_address: *mut mach_vm_address_t, + size: mach_vm_size_t, + mask: mach_vm_offset_t, + flags: ::libc::c_int, + src_task: vm_task_entry_t, + src_address: mach_vm_address_t, + copy: boolean_t, + cur_protection: *mut vm_prot_t, + out: *mut vm_prot_t, + inheritance: vm_inherit_t, + ) -> kern_return_t; + + pub fn mach_vm_page_query( + target_map: vm_map_t, + offset: mach_vm_offset_t, + disposition: *mut integer_t, + ref_count: *mut integer_t, + ) -> kern_return_t; + + pub fn mach_vm_region_recurse( + target_task: vm_task_entry_t, + address: *mut mach_vm_address_t, + size: *mut mach_vm_size_t, + nesting_depth: *mut natural_t, + info: vm_region_recurse_info_t, + infoCnt: *mut mach_msg_type_number_t, + ) -> kern_return_t; + + pub fn mach_vm_region( + target_task: vm_task_entry_t, + address: *mut mach_vm_address_t, + size: *mut mach_vm_size_t, + flavor: vm_region_flavor_t, + info: vm_region_info_t, + infoCnt: *mut mach_msg_type_number_t, + object_name: *mut mach_port_t, + ) -> kern_return_t; + + pub fn mach_make_memory_entry( + target_task: vm_map_t, + size: *mut vm_size_t, + offset: vm_offset_t, + permission: vm_prot_t, + object_handle: *mut mem_entry_name_port_t, + parent_handle: mem_entry_name_port_t, + ) -> kern_return_t; + + pub fn mach_make_memory_entry_64( + target_task: vm_map_t, + size: *mut memory_object_size_t, + offset: memory_object_offset_t, + permission: vm_prot_t, + object_handle: *mut mach_port_t, + parent_entry: mem_entry_name_port_t, + ) -> kern_return_t; + + pub fn mach_vm_purgable_control( + target_task: vm_task_entry_t, + address: mach_vm_address_t, + control: vm_purgable_t, + state: *mut ::libc::c_int, + ) -> kern_return_t; + + pub fn mach_vm_page_info( + target_task: vm_task_entry_t, + address: mach_vm_address_t, + flavor: vm_page_info_flavor_t, + info: vm_page_info_t, + infoCnt: *mut mach_msg_type_number_t, + ) -> kern_return_t; +} + +#[cfg(test)] +mod tests { + use super::*; + use kern_return::KERN_SUCCESS; + use traps::mach_task_self; + use vm_statistics::VM_FLAGS_ANYWHERE; + + #[test] + fn mach_vm_allocate_sanity() { + unsafe { + let size = 0x100; + let task = mach_task_self(); + + let mut address: mach_vm_address_t = 0; + assert_eq!( + mach_vm_allocate(task, &mut address, size, VM_FLAGS_ANYWHERE), + KERN_SUCCESS + ); + assert_eq!(mach_vm_deallocate(task, address, size), KERN_SUCCESS); + } + } + + #[test] + fn mach_vm_region_sanity() { + use mem; + use vm_prot::{VM_PROT_EXECUTE, VM_PROT_READ}; + use vm_region::{vm_region_basic_info_64, VM_REGION_BASIC_INFO_64}; + unsafe { + let mut size = 0x10; + let mut object_name = 0; + let mut address = mach_vm_region_sanity as mach_vm_address_t; + let mut info: vm_region_basic_info_64 = mem::zeroed(); + let mut info_size = vm_region_basic_info_64::count(); + + let result = mach_vm_region( + mach_task_self(), + &mut address, + &mut size, + VM_REGION_BASIC_INFO_64, + (&mut info as *mut _) as vm_region_info_t, + &mut info_size, + &mut object_name, + ); + assert_eq!(result, KERN_SUCCESS); + assert_eq!(info.protection, VM_PROT_READ | VM_PROT_EXECUTE); + } + } +} diff -Nru temporalio-1.3.0/vendor/mach2/src/vm_statistics.rs temporalio-1.3.0/vendor/mach2/src/vm_statistics.rs --- temporalio-1.3.0/vendor/mach2/src/vm_statistics.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/vm_statistics.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,58 @@ +//! This module roughly corresponds to `mach/vm_statistics.h` + +use vm_types::{integer_t, natural_t}; + +pub type vm_statistics_t = *mut vm_statistics; +pub type vm_statistics_data_t = vm_statistics; + +pub const VM_PAGE_QUERY_PAGE_PRESENT: integer_t = 1; +pub const VM_PAGE_QUERY_PAGE_FICTITIOUS: integer_t = 1 << 1; +pub const VM_PAGE_QUERY_PAGE_REF: integer_t = 1 << 2; +pub const VM_PAGE_QUERY_PAGE_DIRTY: integer_t = 1 << 3; + +pub const VM_MEMORY_MALLOC: ::libc::c_uint = 1; +pub const VM_MEMORY_MALLOC_SMALL: ::libc::c_uint = 2; +pub const VM_MEMORY_MALLOC_LARGE: ::libc::c_uint = 3; +pub const VM_MEMORY_MALLOC_HUGE: ::libc::c_uint = 4; +pub const VM_MEMORY_SBRK: ::libc::c_uint = 5; +pub const VM_MEMORY_ANALYSIS_TOOL: ::libc::c_uint = 10; +pub const VM_MEMORY_MACH_MSG: ::libc::c_uint = 20; +pub const VM_MEMORY_IOKIT: ::libc::c_uint = 21; +pub const VM_MEMORY_STACK: ::libc::c_uint = 30; +pub const VM_MEMORY_GUARD: ::libc::c_uint = 31; +pub const VM_MEMORY_SHARED_PMAP: ::libc::c_uint = 32; +pub const VM_MEMORY_DYLIB: ::libc::c_uint = 33; +pub const VM_MEMORY_APPKIT: ::libc::c_uint = 40; +pub const VM_MEMORY_FOUNDATION: ::libc::c_uint = 41; +pub const VM_MEMORY_COREGRAPHICS: ::libc::c_uint = 42; +pub const VM_MEMORY_CARBON: ::libc::c_uint = 43; +pub const VM_MEMORY_JAVA: ::libc::c_uint = 44; +pub const VM_MEMORY_ATS: ::libc::c_uint = 50; +pub const VM_MEMORY_DYLD: ::libc::c_uint = 60; +pub const VM_MEMORY_DYLD_MALLOC: ::libc::c_uint = 61; +pub const VM_MEMORY_APPLICATION_SPECIFIC_1: ::libc::c_uint = 240; +pub const VM_MEMORY_APPLICATION_SPECIFIC_16: ::libc::c_uint = 255; + +pub const VM_FLAGS_FIXED: ::libc::c_int = 0x0; +pub const VM_FLAGS_ANYWHERE: ::libc::c_int = 0x1; +pub const VM_FLAGS_OVERWRITE: ::libc::c_int = 0x4000; + +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] +pub struct vm_statistics { + pub free_count: natural_t, + pub active_count: natural_t, + pub inactive_count: natural_t, + pub wire_count: natural_t, + pub zero_fill_count: natural_t, + pub reactivations: natural_t, + pub pageins: natural_t, + pub pageouts: natural_t, + pub faults: natural_t, + pub cow_faults: natural_t, + pub lookups: natural_t, + pub hits: natural_t, + pub purgeable_count: natural_t, + pub purges: natural_t, + pub speculative_count: natural_t, +} diff -Nru temporalio-1.3.0/vendor/mach2/src/vm_sync.rs temporalio-1.3.0/vendor/mach2/src/vm_sync.rs --- temporalio-1.3.0/vendor/mach2/src/vm_sync.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/vm_sync.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,11 @@ +//! This module corresponds to `mach/vm_sync.h`. + +pub type vm_sync_t = ::libc::c_uint; + +pub const VM_SYNC_ASYNCHRONOUS: vm_sync_t = 1; +pub const VM_SYNC_SYNCHRONOUS: vm_sync_t = 1 << 1; +pub const VM_SYNC_INVALIDATE: vm_sync_t = 1 << 2; +pub const VM_SYNC_KILLPAGES: vm_sync_t = 1 << 3; +pub const VM_SYNC_DEACTIVATE: vm_sync_t = 1 << 4; +pub const VM_SYNC_CONTIGUOUS: vm_sync_t = 1 << 5; +pub const VM_SYNC_REUSABLEPAGES: vm_sync_t = 1 << 6; diff -Nru temporalio-1.3.0/vendor/mach2/src/vm_types.rs temporalio-1.3.0/vendor/mach2/src/vm_types.rs --- temporalio-1.3.0/vendor/mach2/src/vm_types.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/mach2/src/vm_types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,19 @@ +//! This module roughly corresponds to `mach/i386/vm_types.h`. + +pub type natural_t = ::libc::c_uint; +pub type integer_t = ::libc::c_int; + +pub type user_addr_t = u64; + +pub type mach_vm_address_t = u64; +pub type mach_vm_offset_t = u64; +pub type mach_vm_size_t = u64; +pub type vm_map_offset_t = u64; +pub type vm_map_address_t = u64; +pub type vm_map_size_t = u64; +pub type vm_map_t = ::port::mach_port_t; +pub type vm_offset_t = ::libc::uintptr_t; +pub type vm_size_t = ::libc::uintptr_t; +pub type vm_address_t = vm_offset_t; + +pub type mach_port_context_t = mach_vm_address_t; diff -Nru temporalio-1.3.0/vendor/matchit/.cargo-checksum.json temporalio-1.3.0/vendor/matchit/.cargo-checksum.json --- temporalio-1.3.0/vendor/matchit/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/matchit/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"1d6e945b17775c80fd10856a71e01f95a0431bcee3b16ad5c45f33087f22227f","LICENSE":"de701d0618d694feb1af90f02181a1763d9b0bdeb70a3a592781e529077dba65","LICENSE.httprouter":"162ce11ad71338d0a0c6ebaf5c48af72c6ae237b468859d3656fe2d9ed3f3a85","README.md":"d439e76c35a20065103a00e2a9c1291d9d6b13efe32a75787a20c52b5d51e562","benches/bench.rs":"28fc25075553d4fed5b9030f5d694d9aee1347801f4f45d0131dae8c3d1d9a06","src/error.rs":"5a58dbc08d5fe3a6af74260034ed11d16229c05397232f7bd64b293c6f6e55fd","src/lib.rs":"0383c1b20d80367351ba5f97c532a912f6e08e6c51d3ceabc2cad35a2e222de2","src/params.rs":"72795f04ac5804c0ab5786e714a2a92a1f053371f33e8be6dc8eaf9d3d0ef210","src/router.rs":"9e6ea584af6f1579e118de2c07992e490307722f67cd1efc665f66b2ee98c480","src/tree.rs":"ea14578a4e5adabcd5a7a0a53d3ff9da50507a6bb21ec7e0c052ff2cb0806a06","tests/tree.rs":"fe8550b1fe27977ae51dbca7bed914bb01084d4075fb8467c8da28c31513f7be"},"package":"b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40"} \ No newline at end of file +{"files":{"Cargo.lock":"aa7765c33f4415e2aa038b1f7cd1b3248177b0100a1a4e2f7f041af8ea39db5e","Cargo.toml":"56ed7c4d456e5db14108c6e5ccd6efa793669d6ce20c903490f1123bdc0cc689","LICENSE":"de701d0618d694feb1af90f02181a1763d9b0bdeb70a3a592781e529077dba65","LICENSE.httprouter":"162ce11ad71338d0a0c6ebaf5c48af72c6ae237b468859d3656fe2d9ed3f3a85","README.md":"e354f6278de17f32ae3a23f49c4a7aeb8c12e3568ad6518b4650ed0ebcc0190f","benches/bench.rs":"28fc25075553d4fed5b9030f5d694d9aee1347801f4f45d0131dae8c3d1d9a06","examples/hyper.rs":"bd51bb5a293a6fed5162d70f509061219c61c63b83da8248bde4d75a2f7ac025","src/error.rs":"5a58dbc08d5fe3a6af74260034ed11d16229c05397232f7bd64b293c6f6e55fd","src/lib.rs":"ae4606bce4ff5b71b7f439bc1bc3961de2b0512a03f039fa61feac011d058ae0","src/params.rs":"72795f04ac5804c0ab5786e714a2a92a1f053371f33e8be6dc8eaf9d3d0ef210","src/router.rs":"9e6ea584af6f1579e118de2c07992e490307722f67cd1efc665f66b2ee98c480","src/tree.rs":"a80cf12e14c3693f85c0128b7db2ce4e95a85617c1ea8fba244dd2fd31d63dc2","tests/tree.rs":"eefa9bb191783ed2d0cbac2dffb9366075ac2e721c859cf2c270e6cfe3c5c1c4"},"package":"ed1202b2a6f884ae56f04cff409ab315c5ce26b5e58d7412e484f01fd52f52ef"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/matchit/Cargo.lock temporalio-1.3.0/vendor/matchit/Cargo.lock --- temporalio-1.3.0/vendor/matchit/Cargo.lock 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/matchit/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1133 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "actix-router" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ad299af73649e1fc893e333ccf86f377751eb95ff875d095131574c6f43452c" +dependencies = [ + "bytestring", + "http", + "log", + "regex", + "serde", +] + +[[package]] +name = "aho-corasick" +version = "0.7.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" +dependencies = [ + "memchr", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bstr" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" +dependencies = [ + "lazy_static", + "memchr", + "regex-automata", + "serde", +] + +[[package]] +name = "bumpalo" +version = "3.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" + +[[package]] +name = "bytes" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" + +[[package]] +name = "bytestring" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7f83e57d9154148e355404702e2694463241880b939570d7c97c014da7a69a1" +dependencies = [ + "bytes", +] + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "bitflags", + "textwrap", + "unicode-width", +] + +[[package]] +name = "criterion" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f" +dependencies = [ + "atty", + "cast", + "clap", + "criterion-plot", + "csv", + "itertools", + "lazy_static", + "num-traits", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_cbor", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876" +dependencies = [ + "cast", + "itertools", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "csv" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" +dependencies = [ + "bstr", + "csv-core", + "itoa 0.4.8", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +dependencies = [ + "memchr", +] + +[[package]] +name = "either" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "futures-channel" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" + +[[package]] +name = "futures-sink" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" + +[[package]] +name = "futures-task" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" + +[[package]] +name = "futures-util" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "pin-utils", +] + +[[package]] +name = "gonzales" +version = "0.0.3-beta" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47a63ae0a0e43eefd14cdf85f9d98396115f4473239585f111e5626c79be8007" +dependencies = [ + "smallvec", +] + +[[package]] +name = "h2" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "half" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "http" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +dependencies = [ + "bytes", + "fnv", + "itoa 1.0.4", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "hyper" +version = "0.14.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa 1.0.4", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "indexmap" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" + +[[package]] +name = "js-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.137" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "matchit" +version = "0.7.2" +dependencies = [ + "actix-router", + "criterion", + "gonzales", + "hyper", + "path-tree", + "regex", + "route-recognizer", + "routefinder", + "tokio", + "tower", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mio" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "once_cell" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" + +[[package]] +name = "oorandom" +version = "11.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + +[[package]] +name = "path-tree" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d036097265640507a68750c543f2bd2f16565c5a9bb9675b1e213b9a422d3aa" + +[[package]] +name = "pin-project" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "plotters" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" + +[[package]] +name = "plotters-svg" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "proc-macro2" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rayon" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" +dependencies = [ + "autocfg", + "crossbeam-deque", + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" + +[[package]] +name = "regex-syntax" +version = "0.6.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" + +[[package]] +name = "route-recognizer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" + +[[package]] +name = "routefinder" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54e6ab7fb7d4627afa0d64a31cdf9545a23906a6f107bd7c9a6e4ec8fb952ea5" +dependencies = [ + "smartcow", + "smartstring", +] + +[[package]] +name = "ryu" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "serde" +version = "1.0.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" + +[[package]] +name = "serde_cbor" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" +dependencies = [ + "half", + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45" +dependencies = [ + "itoa 1.0.4", + "ryu", + "serde", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +dependencies = [ + "libc", +] + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "smartcow" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cd4be1039bf9f153b3a1a055043dc144360ec289854ece5dde68385f85d0faa" +dependencies = [ + "smartstring", +] + +[[package]] +name = "smartstring" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29" +dependencies = [ + "autocfg", + "static_assertions", + "version_check", +] + +[[package]] +name = "socket2" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "syn" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "tokio" +version = "1.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d9f76183f91ecfb55e1d7d5602bd1d979e38a3a522fe900241cf195624d67ae" +dependencies = [ + "autocfg", + "bytes", + "libc", + "memchr", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys", +] + +[[package]] +name = "tokio-macros" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-util" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "log", + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "unicode-ident" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" + +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "walkdir" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +dependencies = [ + "same-file", + "winapi", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" + +[[package]] +name = "web-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" diff -Nru temporalio-1.3.0/vendor/matchit/Cargo.toml temporalio-1.3.0/vendor/matchit/Cargo.toml --- temporalio-1.3.0/vendor/matchit/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/matchit/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2021" name = "matchit" -version = "0.7.0" +version = "0.7.2" authors = ["Ibraheem Ahmed "] description = "A blazing fast URL router." readme = "README.md" @@ -27,7 +27,7 @@ "network-programming", "algorithms", ] -license = "MIT" +license = "MIT AND BSD-3-Clause" repository = "https://github.com/ibraheemdev/matchit" [profile.release] @@ -50,6 +50,10 @@ [dev-dependencies.gonzales] version = "0.0.3-beta" +[dev-dependencies.hyper] +version = "0.14" +features = ["full"] + [dev-dependencies.path-tree] version = "0.2.2" @@ -62,6 +66,17 @@ [dev-dependencies.routefinder] version = "0.5.2" +[dev-dependencies.tokio] +version = "1" +features = ["full"] + +[dev-dependencies.tower] +version = "0.4" +features = [ + "make", + "util", +] + [features] __test_helpers = [] default = [] diff -Nru temporalio-1.3.0/vendor/matchit/examples/hyper.rs temporalio-1.3.0/vendor/matchit/examples/hyper.rs --- temporalio-1.3.0/vendor/matchit/examples/hyper.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/matchit/examples/hyper.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,87 @@ +use std::collections::HashMap; +use std::convert::Infallible; +use std::sync::{Arc, Mutex}; + +use hyper::server::Server; +use hyper::service::{make_service_fn, service_fn}; +use hyper::{Body, Method, Request, Response}; +use tower::util::BoxCloneService; +use tower::Service as _; + +// GET / +async fn index(_req: Request) -> hyper::Result> { + Ok(Response::new(Body::from("Hello, world!"))) +} + +// GET /blog +async fn blog(_req: Request) -> hyper::Result> { + Ok(Response::new(Body::from("..."))) +} + +// 404 handler +async fn not_found(_req: Request) -> hyper::Result> { + Ok(Response::builder().status(404).body(Body::empty()).unwrap()) +} + +// We can use `BoxCloneService` to erase the type of each handler service. +// +// We still need a `Mutex` around each service because `BoxCloneService` doesn't +// require the service to implement `Sync`. +type Service = Mutex, Response, hyper::Error>>; + +// We use a `HashMap` to hold a `Router` for each HTTP method. This allows us +// to register the same route for multiple methods. +type Router = HashMap>; + +async fn route(router: Arc, req: Request) -> hyper::Result> { + // find the subrouter for this request method + let router = match router.get(req.method()) { + Some(router) => router, + // if there are no routes for this method, respond with 405 Method Not Allowed + None => return Ok(Response::builder().status(405).body(Body::empty()).unwrap()), + }; + + // find the service for this request path + match router.at(req.uri().path()) { + Ok(found) => { + // lock the service for a very short time, just to clone the service + let mut service = found.value.lock().unwrap().clone(); + service.call(req).await + } + // if we there is no matching service, call the 404 handler + Err(_) => not_found(req).await, + } +} + +#[tokio::main] +async fn main() { + // Create a router and register our routes. + let mut router = Router::new(); + + // GET / => `index` + router + .entry(Method::GET) + .or_default() + .insert("/", BoxCloneService::new(service_fn(index)).into()) + .unwrap(); + + // GET /blog => `blog` + router + .entry(Method::GET) + .or_default() + .insert("/blog", BoxCloneService::new(service_fn(blog)).into()) + .unwrap(); + + // boilerplate for the hyper service + let router = Arc::new(router); + let make_service = make_service_fn(|_| { + let router = router.clone(); + async { Ok::<_, Infallible>(service_fn(move |request| route(router.clone(), request))) } + }); + + // run the server + Server::bind(&([127, 0, 0, 1], 3000).into()) + .serve(make_service) + .await + .unwrap() +} diff -Nru temporalio-1.3.0/vendor/matchit/README.md temporalio-1.3.0/vendor/matchit/README.md --- temporalio-1.3.0/vendor/matchit/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/matchit/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,11 +1,10 @@ # `matchit` -[![Documentation](https://img.shields.io/badge/docs-0.7.0-4d76ae?style=for-the-badge)](https://docs.rs/matchit) +[![Documentation](https://img.shields.io/badge/docs-0.7.2-4d76ae?style=for-the-badge)](https://docs.rs/matchit) [![Version](https://img.shields.io/crates/v/matchit?style=for-the-badge)](https://crates.io/crates/matchit) [![License](https://img.shields.io/crates/l/matchit?style=for-the-badge)](https://crates.io/crates/matchit) -[![Actions](https://img.shields.io/github/workflow/status/ibraheemdev/matchit/Rust/master?style=for-the-badge)](https://github.com/ibraheemdev/matchit/actions) -A blazing fast URL router. +A high performance, zero-copy URL router. ```rust use matchit::Router; @@ -48,9 +47,11 @@ let mut m = Router::new(); m.insert("/*p", true)?; -assert_eq!(m.at("/")?.params.get("p"), Some("")); assert_eq!(m.at("/foo.js")?.params.get("p"), Some("foo.js")); assert_eq!(m.at("/c/bar.css")?.params.get("p"), Some("c/bar.css")); + +// note that this would not match: +assert_eq!(m.at("/").is_err()); ``` ## Routing Priority diff -Nru temporalio-1.3.0/vendor/matchit/src/lib.rs temporalio-1.3.0/vendor/matchit/src/lib.rs --- temporalio-1.3.0/vendor/matchit/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/matchit/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,8 @@ //! # `matchit` //! -//! [![Documentation](https://img.shields.io/badge/docs-0.7.0-4d76ae?style=for-the-badge)](https://docs.rs/matchit) +//! [![Documentation](https://img.shields.io/badge/docs-0.7.2-4d76ae?style=for-the-badge)](https://docs.rs/matchit) //! [![Version](https://img.shields.io/crates/v/matchit?style=for-the-badge)](https://crates.io/crates/matchit) //! [![License](https://img.shields.io/crates/l/matchit?style=for-the-badge)](https://crates.io/crates/matchit) -//! [![Actions](https://img.shields.io/github/workflow/status/ibraheemdev/matchit/Rust/master?style=for-the-badge)](https://github.com/ibraheemdev/matchit/actions) //! //! A blazing fast URL router. //! @@ -57,6 +56,9 @@ //! assert_eq!(m.at("/foo.js")?.params.get("p"), Some("foo.js")); //! assert_eq!(m.at("/c/bar.css")?.params.get("p"), Some("c/bar.css")); //! +//! // note that this would not match +//! assert!(m.at("/").is_err()); +//! //! # Ok(()) //! # } //! ``` diff -Nru temporalio-1.3.0/vendor/matchit/src/tree.rs temporalio-1.3.0/vendor/matchit/src/tree.rs --- temporalio-1.3.0/vendor/matchit/src/tree.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/matchit/src/tree.rs 2023-10-30 19:40:00.000000000 +0000 @@ -42,7 +42,7 @@ self.priority += 1; - // empty tree + // the tree is empty if self.prefix.is_empty() && self.children.is_empty() { self.insert_child(prefix, &route, val)?; self.node_type = NodeType::Root; @@ -53,45 +53,39 @@ 'walk: loop { // find the longest common prefix - // - // this also implies that the common prefix contains - // no ':' or '*', since the existing key can't contain - // those chars - let mut i = 0; - let max = min(prefix.len(), current.prefix.len()); - - while i < max && prefix[i] == current.prefix[i] { - i += 1; - } - - // split edge - if i < current.prefix.len() { - let mut child = Self { - prefix: current.prefix[i..].to_owned(), + let len = min(prefix.len(), current.prefix.len()); + let common_prefix = (0..len) + .find(|&i| prefix[i] != current.prefix[i]) + .unwrap_or(len); + + // the common prefix is a substring of the current node's prefix, split the node + if common_prefix < current.prefix.len() { + let child = Node { + prefix: current.prefix[common_prefix..].to_owned(), + children: mem::take(&mut current.children), wild_child: current.wild_child, indices: current.indices.clone(), value: current.value.take(), priority: current.priority - 1, - ..Self::default() + ..Node::default() }; - mem::swap(&mut current.children, &mut child.children); - + // the current node now holds only the common prefix current.children = vec![child]; - current.indices = current.prefix[i..=i].to_owned(); - current.prefix = prefix[..i].to_owned(); + current.indices = vec![current.prefix[common_prefix]]; + current.prefix = prefix[..common_prefix].to_owned(); current.wild_child = false; } - // make new node a child of this node - if prefix.len() > i { - prefix = &prefix[i..]; + // the route has a common prefix, search deeper + if prefix.len() > common_prefix { + prefix = &prefix[common_prefix..]; - let first = prefix[0]; + let next = prefix[0]; // `/` after param if current.node_type == NodeType::Param - && first == b'/' + && next == b'/' && current.children.len() == 1 { current = &mut current.children[0]; @@ -100,48 +94,57 @@ continue 'walk; } - // check if a child with the next path byte exists + // find a child that matches the next path byte for mut i in 0..current.indices.len() { - if first == current.indices[i] { + // found a match + if next == current.indices[i] { i = current.update_child_priority(i); current = &mut current.children[i]; continue 'walk; } } - if first != b':' && first != b'*' && current.node_type != NodeType::CatchAll { - current.indices.push(first); - let mut child = current.add_child(Self::default()); + // not a wildcard and there is no matching child node, create a new one + if !matches!(next, b':' | b'*') && current.node_type != NodeType::CatchAll { + current.indices.push(next); + let mut child = current.add_child(Node::default()); child = current.update_child_priority(child); - current = &mut current.children[child]; - } else if current.wild_child { - // inserting a wildcard node, check if it conflicts with the existing wildcard + + // insert into the new node + return current.children[child].insert_child(prefix, &route, val); + } + + // inserting a wildcard, and this node already has a wildcard child + if current.wild_child { + // wildcards are always at the end current = current.children.last_mut().unwrap(); current.priority += 1; - // check if the wildcard matches - if prefix.len() >= current.prefix.len() - && current.prefix == prefix[..current.prefix.len()] - // adding a child to a catchall Node is not possible - && current.node_type != NodeType::CatchAll + // make sure the wildcard matches + if prefix.len() < current.prefix.len() + || current.prefix != prefix[..current.prefix.len()] + // catch-alls cannot have children + || current.node_type == NodeType::CatchAll // check for longer wildcard, e.g. :name and :names - && (current.prefix.len() >= prefix.len() - || prefix[current.prefix.len()] == b'/') + || (current.prefix.len() < prefix.len() + && prefix[current.prefix.len()] != b'/') { - continue 'walk; + return Err(InsertError::conflict(&route, prefix, current)); } - return Err(InsertError::conflict(&route, prefix, current)); + continue 'walk; } + // otherwise, create the wildcard node return current.insert_child(prefix, &route, val); } - // otherwise add value to current node + // exact match, this node should be empty if current.value.is_some() { return Err(InsertError::conflict(&route, prefix, current)); } + // add the value to current node current.value = Some(UnsafeCell::new(val)); return Ok(()); @@ -161,34 +164,36 @@ } } - // increments priority of the given child and reorders if necessary - // returns the new position (index) of the child - fn update_child_priority(&mut self, pos: usize) -> usize { - self.children[pos].priority += 1; - let priority = self.children[pos].priority; + // increments priority of the given child and reorders if necessary. + // + // returns the new index of the child + fn update_child_priority(&mut self, i: usize) -> usize { + self.children[i].priority += 1; + let priority = self.children[i].priority; // adjust position (move to front) - let mut new_pos = pos; - while new_pos > 0 && self.children[new_pos - 1].priority < priority { + let mut updated = i; + while updated > 0 && self.children[updated - 1].priority < priority { // swap node positions - self.children.swap(new_pos - 1, new_pos); - new_pos -= 1; + self.children.swap(updated - 1, updated); + updated -= 1; } // build new index list - if new_pos != pos { + if updated != i { self.indices = [ - &self.indices[..new_pos], // unchanged prefix, might be empty - &self.indices[pos..=pos], // the index char we move - &self.indices[new_pos..pos], // rest without char at 'pos' - &self.indices[pos + 1..], + &self.indices[..updated], // unchanged prefix, might be empty + &self.indices[i..=i], // the index char we move + &self.indices[updated..i], // rest without char at 'pos' + &self.indices[i + 1..], ] .concat(); } - new_pos + updated } + // insert a child node at this node fn insert_child(&mut self, mut prefix: &[u8], route: &[u8], val: T) -> Result<(), InsertError> { let mut current = self; @@ -206,12 +211,12 @@ } }; - // check if the wildcard has a name + // ensure the wildcard has a name if wildcard.len() < 2 { return Err(InsertError::UnnamedParam); } - // route parameter + // regular route parameter if wildcard[0] == b':' { // insert prefix before the current wildcard if wildcard_index > 0 { @@ -247,43 +252,43 @@ // otherwise we're done. Insert the value in the new leaf current.value = Some(UnsafeCell::new(val)); return Ok(()); - } - // catch all route - assert_eq!(wildcard[0], b'*'); + // catch-all route + } else if wildcard[0] == b'*' { + // "/foo/*x/bar" + if wildcard_index + wildcard.len() != prefix.len() { + return Err(InsertError::InvalidCatchAll); + } - // "/foo/*catchall/bar" - if wildcard_index + wildcard.len() != prefix.len() { - return Err(InsertError::InvalidCatchAll); - } + if let Some(i) = wildcard_index.checked_sub(1) { + // "/foo/bar*x" + if prefix[i] != b'/' { + return Err(InsertError::InvalidCatchAll); + } + } - if let Some(i) = wildcard_index.checked_sub(1) { - // "/foo/bar*catchall" - if prefix[i] != b'/' { + // "*x" without leading `/` + if prefix == route && route[0] != b'/' { return Err(InsertError::InvalidCatchAll); } - } - // "*catchall" - if prefix == route && route[0] != b'/' { - return Err(InsertError::InvalidCatchAll); - } - - if wildcard_index > 0 { - current.prefix = prefix[..wildcard_index].to_owned(); - prefix = &prefix[wildcard_index..]; - } + // insert prefix before the current wildcard + if wildcard_index > 0 { + current.prefix = prefix[..wildcard_index].to_owned(); + prefix = &prefix[wildcard_index..]; + } - let child = Self { - prefix: prefix.to_owned(), - node_type: NodeType::CatchAll, - value: Some(UnsafeCell::new(val)), - priority: 1, - ..Self::default() - }; + let child = Self { + prefix: prefix.to_owned(), + node_type: NodeType::CatchAll, + value: Some(UnsafeCell::new(val)), + priority: 1, + ..Self::default() + }; - current.add_child(child); - current.wild_child = true; + current.add_child(child); + current.wild_child = true; + } return Ok(()); } @@ -318,9 +323,9 @@ } impl Node { - // It's a bit sad that we have to introduce unsafe here but rust doesn't really have a way - // to abstract over mutability, so UnsafeCell lets us avoid having to duplicate logic between - // `at` and `at_mut`. + // it's a bit sad that we have to introduce unsafe here but rust doesn't really have a way + // to abstract over mutability, so `UnsafeCell` lets us avoid having to duplicate logic between + // `at` and `at_mut` pub fn at<'n, 'p>( &'n self, full_path: &'p [u8], @@ -334,11 +339,11 @@ 'walk: loop { backtracker!(skipped_nodes, path, current, params, backtracking, 'walk); - // the path is longer than this node's prefix - we are expecting a child node + // the path is longer than this node's prefix, we are expecting a child node if path.len() > current.prefix.len() { let (prefix, rest) = path.split_at(current.prefix.len()); - // prefix matches + // the prefix matches if prefix == current.prefix { let first = rest[0]; let consumed = path; @@ -372,8 +377,7 @@ } } - // we didn't find a match and there are no children with wildcards, - // there is no match + // we didn't find a match and there are no children with wildcards, there is no match if !current.wild_child { // extra trailing slash if path == b"/" && current.value.is_some() { @@ -424,6 +428,11 @@ return Err(MatchError::ExtraTrailingSlash); } + // try backtracking + if path != b"/" { + try_backtrack!(); + } + return Err(MatchError::NotFound); } // this is the last path segment @@ -485,7 +494,7 @@ try_backtrack!(); } - // TODO: does this always means there is an extra trailing slash? + // TODO: does this *always* means there is an extra trailing slash? if path == b"/" && current.wild_child && current.node_type != NodeType::Root { return Err(MatchError::unsure(full_path)); } @@ -543,7 +552,7 @@ // a wildcard starts with ':' (param) or '*' (catch-all) if c != b':' && c != b'*' { continue; - }; + } // find end and check for invalid characters let mut valid = true; @@ -552,8 +561,8 @@ match c { b'/' => return (Some((&path[start..start + 1 + end], start)), valid), b':' | b'*' => valid = false, - _ => (), - }; + _ => {} + } } return (Some((&path[start..], start)), valid); diff -Nru temporalio-1.3.0/vendor/matchit/tests/tree.rs temporalio-1.3.0/vendor/matchit/tests/tree.rs --- temporalio-1.3.0/vendor/matchit/tests/tree.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/matchit/tests/tree.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,18 @@ use matchit::{InsertError, MatchError, Router}; #[test] +fn issue_31() { + let mut router = Router::new(); + router.insert("/path/foo/:arg", "foo").unwrap(); + router.insert("/path/*rest", "wildcard").unwrap(); + + assert_eq!( + router.at("/path/foo/myarg/bar/baz").map(|m| *m.value), + Ok("wildcard") + ); +} + +#[test] fn issue_22() { let mut x = Router::new(); x.insert("/foo_bar", "Welcome!").unwrap(); @@ -27,6 +39,16 @@ "/doc/rust1.26.html", "/ʯ", "/β", + "/sd!here", + "/sd$here", + "/sd&here", + "/sd'here", + "/sd(here", + "/sd)here", + "/sd+here", + "/sd,here", + "/sd;here", + "/sd=here", ], "/a" :: "/a" => {}, "" :: "/" => None, @@ -38,7 +60,17 @@ "" :: "/no" => None, "/ab" :: "/ab" => {}, "/ʯ" :: "/ʯ" => {}, - "/β" :: "/β" => {} + "/β" :: "/β" => {}, + "/sd!here" :: "/sd!here" => {}, + "/sd$here" :: "/sd$here" => {}, + "/sd&here" :: "/sd&here" => {}, + "/sd'here" :: "/sd'here" => {}, + "/sd(here" :: "/sd(here" => {}, + "/sd)here" :: "/sd)here" => {}, + "/sd+here" :: "/sd+here" => {}, + "/sd,here" :: "/sd,here" => {}, + "/sd;here" :: "/sd;here" => {}, + "/sd=here" :: "/sd=here" => {}, }, wildcard { routes = [ diff -Nru temporalio-1.3.0/vendor/num-traits/build.rs temporalio-1.3.0/vendor/num-traits/build.rs --- temporalio-1.3.0/vendor/num-traits/build.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/build.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,16 +1,8 @@ -extern crate autocfg; - use std::env; fn main() { let ac = autocfg::new(); - // If the "i128" feature is explicity requested, don't bother probing for it. - // It will still cause a build error if that was set improperly. - if env::var_os("CARGO_FEATURE_I128").is_some() || ac.probe_type("i128") { - autocfg::emit("has_i128"); - } - ac.emit_expression_cfg( "unsafe { 1f64.to_int_unchecked::() }", "has_to_int_unchecked", @@ -18,12 +10,15 @@ ac.emit_expression_cfg("1u32.reverse_bits()", "has_reverse_bits"); ac.emit_expression_cfg("1u32.trailing_ones()", "has_leading_trailing_ones"); - ac.emit_expression_cfg("{ let mut x = 1; x += &2; }", "has_int_assignop_ref"); ac.emit_expression_cfg("1u32.div_euclid(1u32)", "has_div_euclid"); if env::var_os("CARGO_FEATURE_STD").is_some() { ac.emit_expression_cfg("1f64.copysign(-1f64)", "has_copysign"); } + ac.emit_expression_cfg("1f64.is_subnormal()", "has_is_subnormal"); + + ac.emit_expression_cfg("1u32.to_ne_bytes()", "has_int_to_from_bytes"); + ac.emit_expression_cfg("3.14f64.to_ne_bytes()", "has_float_to_from_bytes"); autocfg::rerun_path("build.rs"); } diff -Nru temporalio-1.3.0/vendor/num-traits/.cargo-checksum.json temporalio-1.3.0/vendor/num-traits/.cargo-checksum.json --- temporalio-1.3.0/vendor/num-traits/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"5b2749641deeabb2dfcc8e4d7e26ccfbc306800021e0d24e8367f313e57f9def","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"81e7df6fa6bea6f8c2809f9af68e3d32e7a4504b93394f775d37ed3d9f7f9166","RELEASES.md":"e1f774cba66e5e15e1086ab8afebece771140dd4168f59dca8dd4fd5e50b72dc","build.rs":"cf682b2322303196e241048cb56d873597b78a3b4e3f275f6f761dadb33a65f5","src/bounds.rs":"c90190de4dfba13c49119dbdf889726f8ece1cbd7dfd4bbfa364ea995f627e49","src/cast.rs":"8c8384dcdfaf926b9331399d528278fc73851f8b5e1105dee343f4f19557e932","src/float.rs":"6a84820f4828515639565848a63359b3e69329aa36b990178adbfc7d141ef0c5","src/identities.rs":"5b6238ebd52e1fadd5b405bc40ad81e45346bcb1c4b46cf1f0496a30be7c9bc4","src/int.rs":"bb4c0f4ce8d71e262bd9119ab820dd5a79e2bd476a8ad7e84b2167733b11d9d8","src/lib.rs":"cc0c8352b3f29a22b17f76e9cfe12acb279ec2aac5e22a9395569d58445c137c","src/macros.rs":"ee96613a2c73a3bef10ec7ae4d359dbf5f0b41f83e8a87c3d62ccc18dd27e498","src/ops/checked.rs":"b6dfae21fe1a5ce41e92074c57d204284975ec56d45e63cac5f0136b8c3643b4","src/ops/euclid.rs":"71e0e181bd365c196a7dea980c2ec8bd47fd1d1d9b47bd3f401edcadb861eb0b","src/ops/inv.rs":"dd80b9bd48d815f17855a25842287942317fa49d1fdcdd655b61bd20ef927cda","src/ops/mod.rs":"3bea8b98fa7537c0a5b4562d1b9d4d49481f1e2e88941cfd4cc8f0f3f0870fb3","src/ops/mul_add.rs":"368bdebb40b16f3b4b85cf50235954268ff601ec7a458a3a83fe433f47f86f6d","src/ops/overflowing.rs":"1b92882a5a738ea4cafdb0971101dc438be9043f540e1246f58f7c9ecf6348dc","src/ops/saturating.rs":"6fb4b2a2c78d9202152a84586d7b068444b78d3caed4b293980832672a234d4b","src/ops/wrapping.rs":"0acf88c0e5fc81a3c6790b31986ab9be5b16c720c9e27461fe5d69b710ffcaba","src/pow.rs":"9f78cb9c4d5987b59e16f4141723a33ff689781cc352f357b0cc0111d22cde3a","src/real.rs":"b5115bb2cfb752a59426bb3fcbabf9cff15521a00a3f8b5ef4dfc0b0b31bb1f4","src/sign.rs":"83562caa3501c6873558eb64c9e3bfe25b4b20d38562a7aa7cc9adafcb3ff037","tests/cast.rs":"0a41785611b3909ecb4a88d6d5264a85564f6de8fbfc761436d3c8baafc8e3d0"},"package":"578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"} \ No newline at end of file +{"files":{"Cargo.toml":"3897e5966a4ca16e590f2a08ab51ee93c4c29e09f3b396288b327fa50bf43af1","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"90b7360049619cd5581aa03a7c24f1ccf1373e419f35d0967170724b1ef3c1e1","RELEASES.md":"bcbc7292bb53e17061245300ef70f997be06f31ebe842013f91319c38be5dcfc","build.rs":"d1ad566e26756269ab06f8df62d4e11161efb7ebffb1b3b16c4e1e7bf4636856","src/bounds.rs":"a79325f6a92269ad7df3d11b9ff700d2d13fb1160e28f0c091a644efc4badc2b","src/cast.rs":"d652cce6e7ec4a5e5b6532df1cd65c56a63eb453bed33f5dff02b51c5abd3ca0","src/float.rs":"90b93cfd6dc9ca679b009c0d00fd0bddb03b9dbde164aaa5a4c136e091a39699","src/identities.rs":"ba2d68bd45331874fa7e9e408894b99d27a594ceb2f48041b651254c54a591cf","src/int.rs":"ada847767ef9808a2ab9703060d6001e427bc33b72c04dcd81a9776a407a5c16","src/lib.rs":"833828950fd58e567f0a4bd80264cb65e1b1594eb0ae5dc25e72af28a9f0e9e9","src/macros.rs":"ee96613a2c73a3bef10ec7ae4d359dbf5f0b41f83e8a87c3d62ccc18dd27e498","src/ops/bytes.rs":"303a648f2ebfa37e355a22495710ef1debf3715d422e2e00f52ae311255af1b7","src/ops/checked.rs":"01e6379bf1d8eeca9dcf8bb5397e419e898e4043b57b0e2470e225bc27e81e6a","src/ops/euclid.rs":"82734bc3bff9c1110aac9015129fba5bc9f24cc6bc3be9a946f71d8b0c19586f","src/ops/inv.rs":"dd80b9bd48d815f17855a25842287942317fa49d1fdcdd655b61bd20ef927cda","src/ops/mod.rs":"2b3c396af44cd240205ba8b560625fa00c07cf387139d2c49eeb7869545d976d","src/ops/mul_add.rs":"15bd64d9420c86300c5ea7f57aa736af2ef968e4e5eaaae03f62fd277f124569","src/ops/overflowing.rs":"01f4cd27f8b0e257687170cc537188029e08e5d13e0c552b01153be5d66d5716","src/ops/saturating.rs":"165993c829c10c4f60e32c8cf34434b669ef54284d7f73dc7ec58a22ba65e6fc","src/ops/wrapping.rs":"39d7bc7e074ba7590cd29b40206baed9cb30ae70dca2b7ceb460c6ca7eaad2a8","src/pow.rs":"92c12990d2396b2dabd4ba80e80ad706c0c8fd0f1b967ab3bdd9cb738b150702","src/real.rs":"d97dd6a73704828faf835c62f12ea02362997fa9de08a70cd9b7abdea7cb10ed","src/sign.rs":"7ca11eebee94b553a33a9e53b7663ba5173db297dee523d1a2600fbbc80ef850","tests/cast.rs":"6fcc0d6653253182e979e42542fe971829cd24ab2c3a21a668e935c23d39f7c0"},"package":"f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/num-traits/Cargo.toml temporalio-1.3.0/vendor/num-traits/Cargo.toml --- temporalio-1.3.0/vendor/num-traits/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,8 +10,10 @@ # See Cargo.toml.orig for the original contents. [package] +edition = "2018" +rust-version = "1.31" name = "num-traits" -version = "0.2.15" +version = "0.2.16" authors = ["The Rust Project Developers"] build = "build.rs" exclude = [ @@ -37,6 +39,7 @@ [package.metadata.docs.rs] features = ["std"] +rustdoc-args = ["--generate-link-to-definition"] [dependencies.libm] version = "0.2.0" diff -Nru temporalio-1.3.0/vendor/num-traits/README.md temporalio-1.3.0/vendor/num-traits/README.md --- temporalio-1.3.0/vendor/num-traits/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,7 @@ [![crate](https://img.shields.io/crates/v/num-traits.svg)](https://crates.io/crates/num-traits) [![documentation](https://docs.rs/num-traits/badge.svg)](https://docs.rs/num-traits) -[![minimum rustc 1.8](https://img.shields.io/badge/rustc-1.8+-red.svg)](https://rust-lang.github.io/rfcs/2495-min-rust-version.html) +[![minimum rustc 1.31](https://img.shields.io/badge/rustc-1.31+-red.svg)](https://rust-lang.github.io/rfcs/2495-min-rust-version.html) [![build status](https://github.com/rust-num/num-traits/workflows/master/badge.svg)](https://github.com/rust-num/num-traits/actions) Numeric traits for generic mathematics in Rust. @@ -29,23 +29,18 @@ ``` The `Float` and `Real` traits are only available when either `std` or `libm` is enabled. -The `libm` feature is only available with Rust 1.31 and later ([see PR #99](https://github.com/rust-num/num-traits/pull/99)). The `FloatCore` trait is always available. `MulAdd` and `MulAddAssign` for `f32` and `f64` also require `std` or `libm`, as do implementations of signed and floating- point exponents in `Pow`. -Implementations for `i128` and `u128` are only available with Rust 1.26 and -later. The build script automatically detects this, but you can make it -mandatory by enabling the `i128` crate feature. - ## Releases Release notes are available in [RELEASES.md](RELEASES.md). ## Compatibility -The `num-traits` crate is tested for rustc 1.8 and greater. +The `num-traits` crate is tested for rustc 1.31 and greater. ## License diff -Nru temporalio-1.3.0/vendor/num-traits/RELEASES.md temporalio-1.3.0/vendor/num-traits/RELEASES.md --- temporalio-1.3.0/vendor/num-traits/RELEASES.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/RELEASES.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,19 @@ +# Release 0.2.16 (2023-07-20) + +- [Upgrade to 2018 edition, **MSRV 1.31**][240] +- [The new `ToBytes` and `FromBytes` traits][224] convert to and from byte + representations of a value, with little, big, and native-endian options. +- [The new `Float::is_subnormal` method checks for subnormal values][279], with + a non-zero magnitude that is less than the normal minimum positive value. +- Several other improvements to documentation and testing. + +**Contributors**: @ctrlcctrlv, @cuviper, @flier, @GuillaumeGomez, @kaidokert, +@rs017991, @vicsn + +[224]: https://github.com/rust-num/num-traits/pull/224 +[240]: https://github.com/rust-num/num-traits/pull/240 +[279]: https://github.com/rust-num/num-traits/pull/279 + # Release 0.2.15 (2022-05-02) - [The new `Euclid` trait calculates Euclidean division][195], where the diff -Nru temporalio-1.3.0/vendor/num-traits/src/bounds.rs temporalio-1.3.0/vendor/num-traits/src/bounds.rs --- temporalio-1.3.0/vendor/num-traits/src/bounds.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/src/bounds.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,7 @@ use core::num::Wrapping; use core::{f32, f64}; -#[cfg(has_i128)] -use core::{i128, u128}; -use core::{i16, i32, i64, i8, isize}; -use core::{u16, u32, u64, u8, usize}; +use core::{i128, i16, i32, i64, i8, isize}; +use core::{u128, u16, u32, u64, u8, usize}; /// Numbers which have upper and lower bounds pub trait Bounded { @@ -61,7 +59,6 @@ bounded_impl!(u16, u16::MIN, u16::MAX); bounded_impl!(u32, u32::MIN, u32::MAX); bounded_impl!(u64, u64::MIN, u64::MAX); -#[cfg(has_i128)] bounded_impl!(u128, u128::MIN, u128::MAX); bounded_impl!(isize, isize::MIN, isize::MAX); @@ -69,7 +66,6 @@ bounded_impl!(i16, i16::MIN, i16::MAX); bounded_impl!(i32, i32::MIN, i32::MAX); bounded_impl!(i64, i64::MIN, i64::MAX); -#[cfg(has_i128)] bounded_impl!(i128, i128::MIN, i128::MAX); impl Bounded for Wrapping { @@ -130,7 +126,6 @@ test_wrapping_bounded!(usize u8 u16 u32 u64 isize i8 i16 i32 i64); } -#[cfg(has_i128)] #[test] fn wrapping_bounded_i128() { macro_rules! test_wrapping_bounded { diff -Nru temporalio-1.3.0/vendor/num-traits/src/cast.rs temporalio-1.3.0/vendor/num-traits/src/cast.rs --- temporalio-1.3.0/vendor/num-traits/src/cast.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/src/cast.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,8 @@ use core::mem::size_of; use core::num::Wrapping; use core::{f32, f64}; -#[cfg(has_i128)] -use core::{i128, u128}; -use core::{i16, i32, i64, i8, isize}; -use core::{u16, u32, u64, u8, usize}; +use core::{i128, i16, i32, i64, i8, isize}; +use core::{u128, u16, u32, u64, u8, usize}; /// A generic trait for converting a value to a number. /// @@ -53,12 +51,9 @@ /// represented by an `i128` (`i64` under the default implementation), then /// `None` is returned. /// - /// This method is only available with feature `i128` enabled on Rust >= 1.26. - /// /// The default implementation converts through `to_i64()`. Types implementing /// this trait should override this method if they can represent a greater range. #[inline] - #[cfg(has_i128)] fn to_i128(&self) -> Option { self.to_i64().map(From::from) } @@ -99,12 +94,9 @@ /// represented by a `u128` (`u64` under the default implementation), then /// `None` is returned. /// - /// This method is only available with feature `i128` enabled on Rust >= 1.26. - /// /// The default implementation converts through `to_u64()`. Types implementing /// this trait should override this method if they can represent a greater range. #[inline] - #[cfg(has_i128)] fn to_u128(&self) -> Option { self.to_u64().map(From::from) } @@ -173,7 +165,6 @@ fn to_i16 -> i16; fn to_i32 -> i32; fn to_i64 -> i64; - #[cfg(has_i128)] fn to_i128 -> i128; } @@ -183,7 +174,6 @@ fn to_u16 -> u16; fn to_u32 -> u32; fn to_u64 -> u64; - #[cfg(has_i128)] fn to_u128 -> u128; } @@ -204,7 +194,6 @@ impl_to_primitive_int!(i16); impl_to_primitive_int!(i32); impl_to_primitive_int!(i64); -#[cfg(has_i128)] impl_to_primitive_int!(i128); macro_rules! impl_to_primitive_uint_to_int { @@ -246,7 +235,6 @@ fn to_i16 -> i16; fn to_i32 -> i32; fn to_i64 -> i64; - #[cfg(has_i128)] fn to_i128 -> i128; } @@ -256,7 +244,6 @@ fn to_u16 -> u16; fn to_u32 -> u32; fn to_u64 -> u64; - #[cfg(has_i128)] fn to_u128 -> u128; } @@ -277,7 +264,6 @@ impl_to_primitive_uint!(u16); impl_to_primitive_uint!(u32); impl_to_primitive_uint!(u64); -#[cfg(has_i128)] impl_to_primitive_uint!(u128); macro_rules! impl_to_primitive_float_to_float { @@ -373,7 +359,6 @@ fn to_i16 -> i16; fn to_i32 -> i32; fn to_i64 -> i64; - #[cfg(has_i128)] fn to_i128 -> i128; } @@ -383,7 +368,6 @@ fn to_u16 -> u16; fn to_u32 -> u32; fn to_u64 -> u64; - #[cfg(has_i128)] fn to_u128 -> u128; } @@ -444,12 +428,9 @@ /// Converts an `i128` to return an optional value of this type. If the /// value cannot be represented by this type, then `None` is returned. /// - /// This method is only available with feature `i128` enabled on Rust >= 1.26. - /// /// The default implementation converts through `from_i64()`. Types implementing /// this trait should override this method if they can represent a greater range. #[inline] - #[cfg(has_i128)] fn from_i128(n: i128) -> Option { n.to_i64().and_then(FromPrimitive::from_i64) } @@ -489,12 +470,9 @@ /// Converts an `u128` to return an optional value of this type. If the /// value cannot be represented by this type, then `None` is returned. /// - /// This method is only available with feature `i128` enabled on Rust >= 1.26. - /// /// The default implementation converts through `from_u64()`. Types implementing /// this trait should override this method if they can represent a greater range. #[inline] - #[cfg(has_i128)] fn from_u128(n: u128) -> Option { n.to_u64().and_then(FromPrimitive::from_u64) } @@ -545,7 +523,6 @@ fn from_i64(n: i64) -> Option<$T> { n.$to_ty() } - #[cfg(has_i128)] #[inline] fn from_i128(n: i128) -> Option<$T> { n.$to_ty() @@ -571,7 +548,6 @@ fn from_u64(n: u64) -> Option<$T> { n.$to_ty() } - #[cfg(has_i128)] #[inline] fn from_u128(n: u128) -> Option<$T> { n.$to_ty() @@ -594,14 +570,12 @@ impl_from_primitive!(i16, to_i16); impl_from_primitive!(i32, to_i32); impl_from_primitive!(i64, to_i64); -#[cfg(has_i128)] impl_from_primitive!(i128, to_i128); impl_from_primitive!(usize, to_usize); impl_from_primitive!(u8, to_u8); impl_from_primitive!(u16, to_u16); impl_from_primitive!(u32, to_u32); impl_from_primitive!(u64, to_u64); -#[cfg(has_i128)] impl_from_primitive!(u128, to_u128); impl_from_primitive!(f32, to_f32); impl_from_primitive!(f64, to_f64); @@ -623,7 +597,6 @@ fn to_i16 -> i16; fn to_i32 -> i32; fn to_i64 -> i64; - #[cfg(has_i128)] fn to_i128 -> i128; fn to_usize -> usize; @@ -631,7 +604,6 @@ fn to_u16 -> u16; fn to_u32 -> u32; fn to_u64 -> u64; - #[cfg(has_i128)] fn to_u128 -> u128; fn to_f32 -> f32; @@ -656,7 +628,6 @@ fn from_i16(i16); fn from_i32(i32); fn from_i64(i64); - #[cfg(has_i128)] fn from_i128(i128); fn from_usize(usize); @@ -664,7 +635,6 @@ fn from_u16(u16); fn from_u32(u32); fn from_u64(u64); - #[cfg(has_i128)] fn from_u128(u128); fn from_f32(f32); @@ -722,14 +692,12 @@ impl_num_cast!(u16, to_u16); impl_num_cast!(u32, to_u32); impl_num_cast!(u64, to_u64); -#[cfg(has_i128)] impl_num_cast!(u128, to_u128); impl_num_cast!(usize, to_usize); impl_num_cast!(i8, to_i8); impl_num_cast!(i16, to_i16); impl_num_cast!(i32, to_i32); impl_num_cast!(i64, to_i64); -#[cfg(has_i128)] impl_num_cast!(i128, to_i128); impl_num_cast!(isize, to_isize); impl_num_cast!(f32, to_f32); @@ -787,10 +755,8 @@ )*}; ($T: ty => { $( $U: ty ),* } ) => { impl_as_primitive!(@ $T => { $( $U ),* }); - impl_as_primitive!(@ $T => { u8, u16, u32, u64, usize }); - impl_as_primitive!(@ $T => #[cfg(has_i128)] impl u128); - impl_as_primitive!(@ $T => { i8, i16, i32, i64, isize }); - impl_as_primitive!(@ $T => #[cfg(has_i128)] impl i128); + impl_as_primitive!(@ $T => { u8, u16, u32, u64, u128, usize }); + impl_as_primitive!(@ $T => { i8, i16, i32, i64, i128, isize }); }; } @@ -802,9 +768,7 @@ impl_as_primitive!(i32 => { f32, f64 }); impl_as_primitive!(u64 => { f32, f64 }); impl_as_primitive!(i64 => { f32, f64 }); -#[cfg(has_i128)] impl_as_primitive!(u128 => { f32, f64 }); -#[cfg(has_i128)] impl_as_primitive!(i128 => { f32, f64 }); impl_as_primitive!(usize => { f32, f64 }); impl_as_primitive!(isize => { f32, f64 }); diff -Nru temporalio-1.3.0/vendor/num-traits/src/float.rs temporalio-1.3.0/vendor/num-traits/src/float.rs --- temporalio-1.3.0/vendor/num-traits/src/float.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/src/float.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,14 +1,10 @@ -use core::mem; use core::num::FpCategory; use core::ops::{Add, Div, Neg}; use core::f32; use core::f64; -use {Num, NumCast, ToPrimitive}; - -#[cfg(all(not(feature = "std"), feature = "libm"))] -use libm; +use crate::{Num, NumCast, ToPrimitive}; /// Generic trait for floating point numbers that works with `no_std`. /// @@ -170,6 +166,7 @@ /// check(0.0f64, false); /// ``` #[inline] + #[allow(clippy::eq_op)] fn is_nan(self) -> bool { self != self } @@ -244,6 +241,32 @@ self.classify() == FpCategory::Normal } + /// Returns `true` if the number is [subnormal]. + /// + /// ``` + /// use num_traits::float::FloatCore; + /// use std::f64; + /// + /// let min = f64::MIN_POSITIVE; // 2.2250738585072014e-308_f64 + /// let max = f64::MAX; + /// let lower_than_min = 1.0e-308_f64; + /// let zero = 0.0_f64; + /// + /// assert!(!min.is_subnormal()); + /// assert!(!max.is_subnormal()); + /// + /// assert!(!zero.is_subnormal()); + /// assert!(!f64::NAN.is_subnormal()); + /// assert!(!f64::INFINITY.is_subnormal()); + /// // Values between `0` and `min` are Subnormal. + /// assert!(lower_than_min.is_subnormal()); + /// ``` + /// [subnormal]: https://en.wikipedia.org/wiki/Subnormal_number + #[inline] + fn is_subnormal(self) -> bool { + self.classify() == FpCategory::Subnormal + } + /// Returns the floating point category of the number. If only one property /// is going to be tested, it is generally faster to use the specific /// predicate instead. @@ -370,12 +393,10 @@ } else { self - f + one } + } else if -f < h { + self - f } else { - if -f < h { - self - f - } else { - self - f - one - } + self - f - one } } @@ -508,8 +529,7 @@ } /// Returns `true` if `self` is positive, including `+0.0` and - /// `FloatCore::infinity()`, and since Rust 1.20 also - /// `FloatCore::nan()`. + /// `FloatCore::infinity()`, and `FloatCore::nan()`. /// /// # Examples /// @@ -527,6 +547,7 @@ /// check(-0.0f64, false); /// check(f64::NEG_INFINITY, false); /// check(f64::MIN_POSITIVE, true); + /// check(f64::NAN, true); /// check(-f64::NAN, false); /// ``` #[inline] @@ -535,8 +556,7 @@ } /// Returns `true` if `self` is negative, including `-0.0` and - /// `FloatCore::neg_infinity()`, and since Rust 1.20 also - /// `-FloatCore::nan()`. + /// `FloatCore::neg_infinity()`, and `-FloatCore::nan()`. /// /// # Examples /// @@ -555,6 +575,7 @@ /// check(f64::NEG_INFINITY, true); /// check(f64::MIN_POSITIVE, false); /// check(f64::NAN, false); + /// check(-f64::NAN, true); /// ``` #[inline] fn is_sign_negative(self) -> bool { @@ -763,56 +784,28 @@ integer_decode_f32(self) } - #[inline] - #[cfg(not(feature = "std"))] - fn classify(self) -> FpCategory { - const EXP_MASK: u32 = 0x7f800000; - const MAN_MASK: u32 = 0x007fffff; - - // Safety: this identical to the implementation of f32::to_bits(), - // which is only available starting at Rust 1.20 - let bits: u32 = unsafe { mem::transmute(self) }; - match (bits & MAN_MASK, bits & EXP_MASK) { - (0, 0) => FpCategory::Zero, - (_, 0) => FpCategory::Subnormal, - (0, EXP_MASK) => FpCategory::Infinite, - (_, EXP_MASK) => FpCategory::Nan, - _ => FpCategory::Normal, - } - } - - #[inline] - #[cfg(not(feature = "std"))] - fn is_sign_negative(self) -> bool { - const SIGN_MASK: u32 = 0x80000000; - - // Safety: this identical to the implementation of f32::to_bits(), - // which is only available starting at Rust 1.20 - let bits: u32 = unsafe { mem::transmute(self) }; - bits & SIGN_MASK != 0 - } - - #[inline] - #[cfg(not(feature = "std"))] - fn to_degrees(self) -> Self { - // Use a constant for better precision. - const PIS_IN_180: f32 = 57.2957795130823208767981548141051703_f32; - self * PIS_IN_180 - } - - #[inline] - #[cfg(not(feature = "std"))] - fn to_radians(self) -> Self { - self * (f32::consts::PI / 180.0) - } - - #[cfg(feature = "std")] forward! { Self::is_nan(self) -> bool; Self::is_infinite(self) -> bool; Self::is_finite(self) -> bool; Self::is_normal(self) -> bool; Self::classify(self) -> FpCategory; + Self::is_sign_positive(self) -> bool; + Self::is_sign_negative(self) -> bool; + Self::min(self, other: Self) -> Self; + Self::max(self, other: Self) -> Self; + Self::recip(self) -> Self; + Self::to_degrees(self) -> Self; + Self::to_radians(self) -> Self; + } + + #[cfg(has_is_subnormal)] + forward! { + Self::is_subnormal(self) -> bool; + } + + #[cfg(feature = "std")] + forward! { Self::floor(self) -> Self; Self::ceil(self) -> Self; Self::round(self) -> Self; @@ -820,14 +813,7 @@ Self::fract(self) -> Self; Self::abs(self) -> Self; Self::signum(self) -> Self; - Self::is_sign_positive(self) -> bool; - Self::is_sign_negative(self) -> bool; - Self::min(self, other: Self) -> Self; - Self::max(self, other: Self) -> Self; - Self::recip(self) -> Self; Self::powi(self, n: i32) -> Self; - Self::to_degrees(self) -> Self; - Self::to_radians(self) -> Self; } #[cfg(all(not(feature = "std"), feature = "libm"))] @@ -837,8 +823,6 @@ libm::roundf as round(self) -> Self; libm::truncf as trunc(self) -> Self; libm::fabsf as abs(self) -> Self; - libm::fminf as min(self, other: Self) -> Self; - libm::fmaxf as max(self, other: Self) -> Self; } #[cfg(all(not(feature = "std"), feature = "libm"))] @@ -865,57 +849,28 @@ integer_decode_f64(self) } - #[inline] - #[cfg(not(feature = "std"))] - fn classify(self) -> FpCategory { - const EXP_MASK: u64 = 0x7ff0000000000000; - const MAN_MASK: u64 = 0x000fffffffffffff; - - // Safety: this identical to the implementation of f64::to_bits(), - // which is only available starting at Rust 1.20 - let bits: u64 = unsafe { mem::transmute(self) }; - match (bits & MAN_MASK, bits & EXP_MASK) { - (0, 0) => FpCategory::Zero, - (_, 0) => FpCategory::Subnormal, - (0, EXP_MASK) => FpCategory::Infinite, - (_, EXP_MASK) => FpCategory::Nan, - _ => FpCategory::Normal, - } - } - - #[inline] - #[cfg(not(feature = "std"))] - fn is_sign_negative(self) -> bool { - const SIGN_MASK: u64 = 0x8000000000000000; - - // Safety: this identical to the implementation of f64::to_bits(), - // which is only available starting at Rust 1.20 - let bits: u64 = unsafe { mem::transmute(self) }; - bits & SIGN_MASK != 0 - } - - #[inline] - #[cfg(not(feature = "std"))] - fn to_degrees(self) -> Self { - // The division here is correctly rounded with respect to the true - // value of 180/Ï€. (This differs from f32, where a constant must be - // used to ensure a correctly rounded result.) - self * (180.0 / f64::consts::PI) - } - - #[inline] - #[cfg(not(feature = "std"))] - fn to_radians(self) -> Self { - self * (f64::consts::PI / 180.0) - } - - #[cfg(feature = "std")] forward! { Self::is_nan(self) -> bool; Self::is_infinite(self) -> bool; Self::is_finite(self) -> bool; Self::is_normal(self) -> bool; Self::classify(self) -> FpCategory; + Self::is_sign_positive(self) -> bool; + Self::is_sign_negative(self) -> bool; + Self::min(self, other: Self) -> Self; + Self::max(self, other: Self) -> Self; + Self::recip(self) -> Self; + Self::to_degrees(self) -> Self; + Self::to_radians(self) -> Self; + } + + #[cfg(has_is_subnormal)] + forward! { + Self::is_subnormal(self) -> bool; + } + + #[cfg(feature = "std")] + forward! { Self::floor(self) -> Self; Self::ceil(self) -> Self; Self::round(self) -> Self; @@ -923,14 +878,7 @@ Self::fract(self) -> Self; Self::abs(self) -> Self; Self::signum(self) -> Self; - Self::is_sign_positive(self) -> bool; - Self::is_sign_negative(self) -> bool; - Self::min(self, other: Self) -> Self; - Self::max(self, other: Self) -> Self; - Self::recip(self) -> Self; Self::powi(self, n: i32) -> Self; - Self::to_degrees(self) -> Self; - Self::to_radians(self) -> Self; } #[cfg(all(not(feature = "std"), feature = "libm"))] @@ -940,8 +888,6 @@ libm::round as round(self) -> Self; libm::trunc as trunc(self) -> Self; libm::fabs as abs(self) -> Self; - libm::fmin as min(self, other: Self) -> Self; - libm::fmax as max(self, other: Self) -> Self; } #[cfg(all(not(feature = "std"), feature = "libm"))] @@ -1138,9 +1084,35 @@ /// // Values between `0` and `min` are Subnormal. /// assert!(!lower_than_min.is_normal()); /// ``` - /// [subnormal]: http://en.wikipedia.org/wiki/Denormal_number + /// [subnormal]: http://en.wikipedia.org/wiki/Subnormal_number fn is_normal(self) -> bool; + /// Returns `true` if the number is [subnormal]. + /// + /// ``` + /// use num_traits::Float; + /// use std::f64; + /// + /// let min = f64::MIN_POSITIVE; // 2.2250738585072014e-308_f64 + /// let max = f64::MAX; + /// let lower_than_min = 1.0e-308_f64; + /// let zero = 0.0_f64; + /// + /// assert!(!min.is_subnormal()); + /// assert!(!max.is_subnormal()); + /// + /// assert!(!zero.is_subnormal()); + /// assert!(!f64::NAN.is_subnormal()); + /// assert!(!f64::INFINITY.is_subnormal()); + /// // Values between `0` and `min` are Subnormal. + /// assert!(lower_than_min.is_subnormal()); + /// ``` + /// [subnormal]: https://en.wikipedia.org/wiki/Subnormal_number + #[inline] + fn is_subnormal(self) -> bool { + self.classify() == FpCategory::Subnormal + } + /// Returns the floating point category of the number. If only one property /// is going to be tested, it is generally faster to use the specific /// predicate instead. @@ -1266,12 +1238,13 @@ fn signum(self) -> Self; /// Returns `true` if `self` is positive, including `+0.0`, - /// `Float::infinity()`, and since Rust 1.20 also `Float::nan()`. + /// `Float::infinity()`, and `Float::nan()`. /// /// ``` /// use num_traits::Float; /// use std::f64; /// + /// let nan: f64 = f64::NAN; /// let neg_nan: f64 = -f64::NAN; /// /// let f = 7.0; @@ -1279,18 +1252,20 @@ /// /// assert!(f.is_sign_positive()); /// assert!(!g.is_sign_positive()); + /// assert!(nan.is_sign_positive()); /// assert!(!neg_nan.is_sign_positive()); /// ``` fn is_sign_positive(self) -> bool; /// Returns `true` if `self` is negative, including `-0.0`, - /// `Float::neg_infinity()`, and since Rust 1.20 also `-Float::nan()`. + /// `Float::neg_infinity()`, and `-Float::nan()`. /// /// ``` /// use num_traits::Float; /// use std::f64; /// /// let nan: f64 = f64::NAN; + /// let neg_nan: f64 = -f64::NAN; /// /// let f = 7.0; /// let g = -7.0; @@ -1298,6 +1273,7 @@ /// assert!(!f.is_sign_negative()); /// assert!(g.is_sign_negative()); /// assert!(!nan.is_sign_negative()); + /// assert!(neg_nan.is_sign_negative()); /// ``` fn is_sign_negative(self) -> bool; @@ -1970,9 +1946,13 @@ } #[cfg(has_copysign)] - #[inline] - fn copysign(self, sign: Self) -> Self { - Self::copysign(self, sign) + forward! { + Self::copysign(self, sign: Self) -> Self; + } + + #[cfg(has_is_subnormal)] + forward! { + Self::is_subnormal(self) -> bool; } } }; @@ -2008,26 +1988,34 @@ } forward! { - FloatCore::is_nan(self) -> bool; - FloatCore::is_infinite(self) -> bool; - FloatCore::is_finite(self) -> bool; - FloatCore::is_normal(self) -> bool; - FloatCore::classify(self) -> FpCategory; + Self::is_nan(self) -> bool; + Self::is_infinite(self) -> bool; + Self::is_finite(self) -> bool; + Self::is_normal(self) -> bool; + Self::classify(self) -> FpCategory; + Self::is_sign_positive(self) -> bool; + Self::is_sign_negative(self) -> bool; + Self::min(self, other: Self) -> Self; + Self::max(self, other: Self) -> Self; + Self::recip(self) -> Self; + Self::to_degrees(self) -> Self; + Self::to_radians(self) -> Self; + } + + #[cfg(has_is_subnormal)] + forward! { + Self::is_subnormal(self) -> bool; + } + + forward! { FloatCore::signum(self) -> Self; - FloatCore::is_sign_positive(self) -> bool; - FloatCore::is_sign_negative(self) -> bool; - FloatCore::recip(self) -> Self; FloatCore::powi(self, n: i32) -> Self; - FloatCore::to_degrees(self) -> Self; - FloatCore::to_radians(self) -> Self; } }; } fn integer_decode_f32(f: f32) -> (u64, i16, i8) { - // Safety: this identical to the implementation of f32::to_bits(), - // which is only available starting at Rust 1.20 - let bits: u32 = unsafe { mem::transmute(f) }; + let bits: u32 = f.to_bits(); let sign: i8 = if bits >> 31 == 0 { 1 } else { -1 }; let mut exponent: i16 = ((bits >> 23) & 0xff) as i16; let mantissa = if exponent == 0 { @@ -2041,9 +2029,7 @@ } fn integer_decode_f64(f: f64) -> (u64, i16, i8) { - // Safety: this identical to the implementation of f64::to_bits(), - // which is only available starting at Rust 1.20 - let bits: u64 = unsafe { mem::transmute(f) }; + let bits: u64 = f.to_bits(); let sign: i8 = if bits >> 63 == 0 { 1 } else { -1 }; let mut exponent: i16 = ((bits >> 52) & 0x7ff) as i16; let mantissa = if exponent == 0 { @@ -2103,8 +2089,6 @@ libm::asinhf as asinh(self) -> Self; libm::acoshf as acosh(self) -> Self; libm::atanhf as atanh(self) -> Self; - libm::fmaxf as max(self, other: Self) -> Self; - libm::fminf as min(self, other: Self) -> Self; libm::copysignf as copysign(self, other: Self) -> Self; } } @@ -2151,8 +2135,6 @@ libm::asinh as asinh(self) -> Self; libm::acosh as acosh(self) -> Self; libm::atanh as atanh(self) -> Self; - libm::fmax as max(self, other: Self) -> Self; - libm::fmin as min(self, other: Self) -> Self; libm::copysign as copysign(self, sign: Self) -> Self; } } @@ -2244,7 +2226,7 @@ #[test] fn convert_deg_rad() { - use float::FloatCore; + use crate::float::FloatCore; for &(deg, rad) in &DEG_RAD_PAIRS { assert!((FloatCore::to_degrees(rad) - deg).abs() < 1e-6); @@ -2260,7 +2242,7 @@ #[test] fn convert_deg_rad_std() { for &(deg, rad) in &DEG_RAD_PAIRS { - use Float; + use crate::Float; assert!((Float::to_degrees(rad) - deg).abs() < 1e-6); assert!((Float::to_radians(deg) - rad).abs() < 1e-6); @@ -2272,11 +2254,8 @@ } #[test] - // This fails with the forwarded `std` implementation in Rust 1.8. - // To avoid the failure, the test is limited to `no_std` builds. - #[cfg(not(feature = "std"))] fn to_degrees_rounding() { - use float::FloatCore; + use crate::float::FloatCore; assert_eq!( FloatCore::to_degrees(1_f32), @@ -2287,7 +2266,7 @@ #[test] #[cfg(any(feature = "std", feature = "libm"))] fn extra_logs() { - use float::{Float, FloatConst}; + use crate::float::{Float, FloatConst}; fn check(diff: F) { let _2 = F::from(2.0).unwrap(); @@ -2306,7 +2285,7 @@ #[test] #[cfg(any(feature = "std", feature = "libm"))] fn copysign() { - use float::Float; + use crate::float::Float; test_copysign_generic(2.0_f32, -2.0_f32, f32::nan()); test_copysign_generic(2.0_f64, -2.0_f64, f64::nan()); test_copysignf(2.0_f32, -2.0_f32, f32::nan()); @@ -2314,8 +2293,8 @@ #[cfg(any(feature = "std", feature = "libm"))] fn test_copysignf(p: f32, n: f32, nan: f32) { + use crate::float::Float; use core::ops::Neg; - use float::Float; assert!(p.is_sign_positive()); assert!(n.is_sign_negative()); @@ -2327,16 +2306,16 @@ assert_eq!(n, Float::copysign(n, n)); assert_eq!(n.neg(), Float::copysign(n, p)); - // FIXME: is_sign... only works on NaN starting in Rust 1.20 - // assert!(Float::copysign(nan, p).is_sign_positive()); - // assert!(Float::copysign(nan, n).is_sign_negative()); + assert!(Float::copysign(nan, p).is_sign_positive()); + assert!(Float::copysign(nan, n).is_sign_negative()); } #[cfg(any(feature = "std", feature = "libm"))] - fn test_copysign_generic(p: F, n: F, nan: F) { + fn test_copysign_generic(p: F, n: F, nan: F) { assert!(p.is_sign_positive()); assert!(n.is_sign_negative()); assert!(nan.is_nan()); + assert!(!nan.is_subnormal()); assert_eq!(p, p.copysign(p)); assert_eq!(p.neg(), p.copysign(n)); @@ -2344,8 +2323,22 @@ assert_eq!(n, n.copysign(n)); assert_eq!(n.neg(), n.copysign(p)); - // FIXME: is_sign... only works on NaN starting in Rust 1.20 - // assert!(nan.copysign(p).is_sign_positive()); - // assert!(nan.copysign(n).is_sign_negative()); + assert!(nan.copysign(p).is_sign_positive()); + assert!(nan.copysign(n).is_sign_negative()); + } + + #[cfg(any(feature = "std", feature = "libm"))] + fn test_subnormal() { + let min_positive = F::min_positive_value(); + let lower_than_min = min_positive / F::from(2.0f32).unwrap(); + assert!(!min_positive.is_subnormal()); + assert!(lower_than_min.is_subnormal()); + } + + #[test] + #[cfg(any(feature = "std", feature = "libm"))] + fn subnormal() { + test_subnormal::(); + test_subnormal::(); } } diff -Nru temporalio-1.3.0/vendor/num-traits/src/identities.rs temporalio-1.3.0/vendor/num-traits/src/identities.rs --- temporalio-1.3.0/vendor/num-traits/src/identities.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/src/identities.rs 2023-10-30 19:40:00.000000000 +0000 @@ -48,7 +48,6 @@ zero_impl!(u16, 0); zero_impl!(u32, 0); zero_impl!(u64, 0); -#[cfg(has_i128)] zero_impl!(u128, 0); zero_impl!(isize, 0); @@ -56,7 +55,6 @@ zero_impl!(i16, 0); zero_impl!(i32, 0); zero_impl!(i64, 0); -#[cfg(has_i128)] zero_impl!(i128, 0); zero_impl!(f32, 0.0); @@ -137,7 +135,6 @@ one_impl!(u16, 1); one_impl!(u32, 1); one_impl!(u64, 1); -#[cfg(has_i128)] one_impl!(u128, 1); one_impl!(isize, 1); @@ -145,7 +142,6 @@ one_impl!(i16, 1); one_impl!(i32, 1); one_impl!(i64, 1); -#[cfg(has_i128)] one_impl!(i128, 1); one_impl!(f32, 1.0); diff -Nru temporalio-1.3.0/vendor/num-traits/src/int.rs temporalio-1.3.0/vendor/num-traits/src/int.rs --- temporalio-1.3.0/vendor/num-traits/src/int.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/src/int.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,9 @@ use core::ops::{BitAnd, BitOr, BitXor, Not, Shl, Shr}; -use bounds::Bounded; -use ops::checked::*; -use ops::saturating::Saturating; -use {Num, NumCast}; +use crate::bounds::Bounded; +use crate::ops::checked::*; +use crate::ops::saturating::Saturating; +use crate::{Num, NumCast}; /// Generic trait for primitive integers. /// @@ -500,20 +500,18 @@ prim_int_impl!(u16, i16, u16); prim_int_impl!(u32, i32, u32); prim_int_impl!(u64, i64, u64); -#[cfg(has_i128)] prim_int_impl!(u128, i128, u128); prim_int_impl!(usize, isize, usize); prim_int_impl!(i8, i8, u8); prim_int_impl!(i16, i16, u16); prim_int_impl!(i32, i32, u32); prim_int_impl!(i64, i64, u64); -#[cfg(has_i128)] prim_int_impl!(i128, i128, u128); prim_int_impl!(isize, isize, usize); #[cfg(test)] mod tests { - use int::PrimInt; + use crate::int::PrimInt; #[test] pub fn reverse_bits() { @@ -554,7 +552,6 @@ } #[test] - #[cfg(has_i128)] pub fn reverse_bits_i128() { use core::i128; diff -Nru temporalio-1.3.0/vendor/num-traits/src/lib.rs temporalio-1.3.0/vendor/num-traits/src/lib.rs --- temporalio-1.3.0/vendor/num-traits/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,43 +12,42 @@ //! //! ## Compatibility //! -//! The `num-traits` crate is tested for rustc 1.8 and greater. +//! The `num-traits` crate is tested for rustc 1.31 and greater. #![doc(html_root_url = "https://docs.rs/num-traits/0.2")] #![deny(unconditional_recursion)] #![no_std] + +// Need to explicitly bring the crate in for inherent float methods #[cfg(feature = "std")] extern crate std; -// Only `no_std` builds actually use `libm`. -#[cfg(all(not(feature = "std"), feature = "libm"))] -extern crate libm; - use core::fmt; use core::num::Wrapping; use core::ops::{Add, Div, Mul, Rem, Sub}; use core::ops::{AddAssign, DivAssign, MulAssign, RemAssign, SubAssign}; -pub use bounds::Bounded; +pub use crate::bounds::Bounded; #[cfg(any(feature = "std", feature = "libm"))] -pub use float::Float; -pub use float::FloatConst; +pub use crate::float::Float; +pub use crate::float::FloatConst; // pub use real::{FloatCore, Real}; // NOTE: Don't do this, it breaks `use num_traits::*;`. -pub use cast::{cast, AsPrimitive, FromPrimitive, NumCast, ToPrimitive}; -pub use identities::{one, zero, One, Zero}; -pub use int::PrimInt; -pub use ops::checked::{ +pub use crate::cast::{cast, AsPrimitive, FromPrimitive, NumCast, ToPrimitive}; +pub use crate::identities::{one, zero, One, Zero}; +pub use crate::int::PrimInt; +pub use crate::ops::bytes::{FromBytes, ToBytes}; +pub use crate::ops::checked::{ CheckedAdd, CheckedDiv, CheckedMul, CheckedNeg, CheckedRem, CheckedShl, CheckedShr, CheckedSub, }; -pub use ops::euclid::{CheckedEuclid, Euclid}; -pub use ops::inv::Inv; -pub use ops::mul_add::{MulAdd, MulAddAssign}; -pub use ops::saturating::{Saturating, SaturatingAdd, SaturatingMul, SaturatingSub}; -pub use ops::wrapping::{ +pub use crate::ops::euclid::{CheckedEuclid, Euclid}; +pub use crate::ops::inv::Inv; +pub use crate::ops::mul_add::{MulAdd, MulAddAssign}; +pub use crate::ops::saturating::{Saturating, SaturatingAdd, SaturatingMul, SaturatingSub}; +pub use crate::ops::wrapping::{ WrappingAdd, WrappingMul, WrappingNeg, WrappingShl, WrappingShr, WrappingSub, }; -pub use pow::{checked_pow, pow, Pow}; -pub use sign::{abs, abs_sub, signum, Signed, Unsigned}; +pub use crate::pow::{checked_pow, pow, Pow}; +pub use crate::sign::{abs, abs_sub, signum, Signed, Unsigned}; #[macro_use] mod macros; @@ -172,9 +171,8 @@ } )*) } -int_trait_impl!(Num for usize u8 u16 u32 u64 isize i8 i16 i32 i64); -#[cfg(has_i128)] -int_trait_impl!(Num for u128 i128); +int_trait_impl!(Num for usize u8 u16 u32 u64 u128); +int_trait_impl!(Num for isize i8 i16 i32 i64 i128); impl Num for Wrapping where @@ -199,7 +197,7 @@ } impl fmt::Display for ParseFloatError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { let description = match self.kind { FloatErrorKind::Empty => "cannot parse float from empty string", FloatErrorKind::Invalid => "invalid float literal", @@ -255,11 +253,7 @@ fn slice_shift_char(src: &str) -> Option<(char, &str)> { let mut chars = src.chars(); - if let Some(ch) = chars.next() { - Some((ch, chars.as_str())) - } else { - None - } + Some((chars.next()?, chars.as_str())) } let (is_positive, src) = match slice_shift_char(src) { @@ -282,13 +276,13 @@ match c.to_digit(radix) { Some(digit) => { // shift significand one digit left - sig = sig * (radix as $t); + sig *= radix as $t; // add/subtract current digit depending on sign if is_positive { - sig = sig + ((digit as isize) as $t); + sig += (digit as isize) as $t; } else { - sig = sig - ((digit as isize) as $t); + sig -= (digit as isize) as $t; } // Detect overflow by comparing to last value, except @@ -330,7 +324,7 @@ match c.to_digit(radix) { Some(digit) => { // Decrease power one order of magnitude - power = power / (radix as $t); + power /= radix as $t; // add/subtract current digit depending on sign sig = if is_positive { sig + (digit as $t) * power @@ -424,6 +418,7 @@ /// /// **Panics** in debug mode if `!(min == min)`. (This occurs if `min` is `NAN`.) #[inline] +#[allow(clippy::eq_op)] pub fn clamp_min(input: T, min: T) -> T { debug_assert!(min == min, "min must not be NAN"); if input < min { @@ -441,6 +436,7 @@ /// /// **Panics** in debug mode if `!(max == max)`. (This occurs if `max` is `NAN`.) #[inline] +#[allow(clippy::eq_op)] pub fn clamp_max(input: T, max: T) -> T { debug_assert!(max == max, "max must not be NAN"); if input > max { @@ -625,7 +621,6 @@ assert_eq!(compute(1, 2), 1) } -#[cfg(has_int_assignop_ref)] #[test] fn check_numassignref_ops() { fn compute(mut x: T, y: &T) -> T { diff -Nru temporalio-1.3.0/vendor/num-traits/src/ops/bytes.rs temporalio-1.3.0/vendor/num-traits/src/ops/bytes.rs --- temporalio-1.3.0/vendor/num-traits/src/ops/bytes.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/src/ops/bytes.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,403 @@ +use core::borrow::{Borrow, BorrowMut}; +use core::cmp::{Eq, Ord, PartialEq, PartialOrd}; +use core::fmt::Debug; +use core::hash::Hash; +#[cfg(not(has_int_to_from_bytes))] +use core::mem::transmute; + +pub trait NumBytes: + Debug + + AsRef<[u8]> + + AsMut<[u8]> + + PartialEq + + Eq + + PartialOrd + + Ord + + Hash + + Borrow<[u8]> + + BorrowMut<[u8]> +{ +} + +impl NumBytes for T where + T: Debug + + AsRef<[u8]> + + AsMut<[u8]> + + PartialEq + + Eq + + PartialOrd + + Ord + + Hash + + Borrow<[u8]> + + BorrowMut<[u8]> + + ?Sized +{ +} + +pub trait ToBytes { + type Bytes: NumBytes; + + /// Return the memory representation of this number as a byte array in big-endian byte order. + /// + /// # Examples + /// + /// ``` + /// use num_traits::ToBytes; + /// + /// let bytes = ToBytes::to_be_bytes(&0x12345678u32); + /// assert_eq!(bytes, [0x12, 0x34, 0x56, 0x78]); + /// ``` + fn to_be_bytes(&self) -> Self::Bytes; + + /// Return the memory representation of this number as a byte array in little-endian byte order. + /// + /// # Examples + /// + /// ``` + /// use num_traits::ToBytes; + /// + /// let bytes = ToBytes::to_le_bytes(&0x12345678u32); + /// assert_eq!(bytes, [0x78, 0x56, 0x34, 0x12]); + /// ``` + fn to_le_bytes(&self) -> Self::Bytes; + + /// Return the memory representation of this number as a byte array in native byte order. + /// + /// As the target platform's native endianness is used, + /// portable code should use [`to_be_bytes`] or [`to_le_bytes`], as appropriate, instead. + /// + /// [`to_be_bytes`]: #method.to_be_bytes + /// [`to_le_bytes`]: #method.to_le_bytes + /// + /// # Examples + /// + /// ``` + /// use num_traits::ToBytes; + /// + /// #[cfg(target_endian = "big")] + /// let expected = [0x12, 0x34, 0x56, 0x78]; + /// + /// #[cfg(target_endian = "little")] + /// let expected = [0x78, 0x56, 0x34, 0x12]; + /// + /// let bytes = ToBytes::to_ne_bytes(&0x12345678u32); + /// assert_eq!(bytes, expected) + /// ``` + fn to_ne_bytes(&self) -> Self::Bytes { + #[cfg(target_endian = "big")] + let bytes = self.to_be_bytes(); + #[cfg(target_endian = "little")] + let bytes = self.to_le_bytes(); + bytes + } +} + +pub trait FromBytes: Sized { + type Bytes: NumBytes + ?Sized; + + /// Create a number from its representation as a byte array in big endian. + /// + /// # Examples + /// + /// ``` + /// use num_traits::FromBytes; + /// + /// let value: u32 = FromBytes::from_be_bytes(&[0x12, 0x34, 0x56, 0x78]); + /// assert_eq!(value, 0x12345678); + /// ``` + fn from_be_bytes(bytes: &Self::Bytes) -> Self; + + /// Create a number from its representation as a byte array in little endian. + /// + /// # Examples + /// + /// ``` + /// use num_traits::FromBytes; + /// + /// let value: u32 = FromBytes::from_le_bytes(&[0x78, 0x56, 0x34, 0x12]); + /// assert_eq!(value, 0x12345678); + /// ``` + fn from_le_bytes(bytes: &Self::Bytes) -> Self; + + /// Create a number from its memory representation as a byte array in native endianness. + /// + /// As the target platform's native endianness is used, + /// portable code likely wants to use [`from_be_bytes`] or [`from_le_bytes`], as appropriate instead. + /// + /// [`from_be_bytes`]: #method.from_be_bytes + /// [`from_le_bytes`]: #method.from_le_bytes + /// + /// # Examples + /// + /// ``` + /// use num_traits::FromBytes; + /// + /// #[cfg(target_endian = "big")] + /// let bytes = [0x12, 0x34, 0x56, 0x78]; + /// + /// #[cfg(target_endian = "little")] + /// let bytes = [0x78, 0x56, 0x34, 0x12]; + /// + /// let value: u32 = FromBytes::from_ne_bytes(&bytes); + /// assert_eq!(value, 0x12345678) + /// ``` + fn from_ne_bytes(bytes: &Self::Bytes) -> Self { + #[cfg(target_endian = "big")] + let this = Self::from_be_bytes(bytes); + #[cfg(target_endian = "little")] + let this = Self::from_le_bytes(bytes); + this + } +} + +macro_rules! float_to_from_bytes_impl { + ($T:ty, $L:expr) => { + #[cfg(has_float_to_from_bytes)] + impl ToBytes for $T { + type Bytes = [u8; $L]; + + #[inline] + fn to_be_bytes(&self) -> Self::Bytes { + <$T>::to_be_bytes(*self) + } + + #[inline] + fn to_le_bytes(&self) -> Self::Bytes { + <$T>::to_le_bytes(*self) + } + + #[inline] + fn to_ne_bytes(&self) -> Self::Bytes { + <$T>::to_ne_bytes(*self) + } + } + + #[cfg(has_float_to_from_bytes)] + impl FromBytes for $T { + type Bytes = [u8; $L]; + + #[inline] + fn from_be_bytes(bytes: &Self::Bytes) -> Self { + <$T>::from_be_bytes(*bytes) + } + + #[inline] + fn from_le_bytes(bytes: &Self::Bytes) -> Self { + <$T>::from_le_bytes(*bytes) + } + + #[inline] + fn from_ne_bytes(bytes: &Self::Bytes) -> Self { + <$T>::from_ne_bytes(*bytes) + } + } + + #[cfg(not(has_float_to_from_bytes))] + impl ToBytes for $T { + type Bytes = [u8; $L]; + + #[inline] + fn to_be_bytes(&self) -> Self::Bytes { + ToBytes::to_be_bytes(&self.to_bits()) + } + + #[inline] + fn to_le_bytes(&self) -> Self::Bytes { + ToBytes::to_le_bytes(&self.to_bits()) + } + + #[inline] + fn to_ne_bytes(&self) -> Self::Bytes { + ToBytes::to_ne_bytes(&self.to_bits()) + } + } + + #[cfg(not(has_float_to_from_bytes))] + impl FromBytes for $T { + type Bytes = [u8; $L]; + + #[inline] + fn from_be_bytes(bytes: &Self::Bytes) -> Self { + Self::from_bits(FromBytes::from_be_bytes(bytes)) + } + + #[inline] + fn from_le_bytes(bytes: &Self::Bytes) -> Self { + Self::from_bits(FromBytes::from_le_bytes(bytes)) + } + + #[inline] + fn from_ne_bytes(bytes: &Self::Bytes) -> Self { + Self::from_bits(FromBytes::from_ne_bytes(bytes)) + } + } + }; +} + +macro_rules! int_to_from_bytes_impl { + ($T:ty, $L:expr) => { + #[cfg(has_int_to_from_bytes)] + impl ToBytes for $T { + type Bytes = [u8; $L]; + + #[inline] + fn to_be_bytes(&self) -> Self::Bytes { + <$T>::to_be_bytes(*self) + } + + #[inline] + fn to_le_bytes(&self) -> Self::Bytes { + <$T>::to_le_bytes(*self) + } + + #[inline] + fn to_ne_bytes(&self) -> Self::Bytes { + <$T>::to_ne_bytes(*self) + } + } + + #[cfg(has_int_to_from_bytes)] + impl FromBytes for $T { + type Bytes = [u8; $L]; + + #[inline] + fn from_be_bytes(bytes: &Self::Bytes) -> Self { + <$T>::from_be_bytes(*bytes) + } + + #[inline] + fn from_le_bytes(bytes: &Self::Bytes) -> Self { + <$T>::from_le_bytes(*bytes) + } + + #[inline] + fn from_ne_bytes(bytes: &Self::Bytes) -> Self { + <$T>::from_ne_bytes(*bytes) + } + } + + #[cfg(not(has_int_to_from_bytes))] + impl ToBytes for $T { + type Bytes = [u8; $L]; + + #[inline] + fn to_be_bytes(&self) -> Self::Bytes { + <$T as ToBytes>::to_ne_bytes(&<$T>::to_be(*self)) + } + + #[inline] + fn to_le_bytes(&self) -> Self::Bytes { + <$T as ToBytes>::to_ne_bytes(&<$T>::to_le(*self)) + } + + #[inline] + fn to_ne_bytes(&self) -> Self::Bytes { + unsafe { transmute(*self) } + } + } + + #[cfg(not(has_int_to_from_bytes))] + impl FromBytes for $T { + type Bytes = [u8; $L]; + + #[inline] + fn from_be_bytes(bytes: &Self::Bytes) -> Self { + Self::from_be(::from_ne_bytes(bytes)) + } + + #[inline] + fn from_le_bytes(bytes: &Self::Bytes) -> Self { + Self::from_le(::from_ne_bytes(bytes)) + } + + #[inline] + fn from_ne_bytes(bytes: &Self::Bytes) -> Self { + unsafe { transmute(*bytes) } + } + } + }; +} + +int_to_from_bytes_impl!(u8, 1); +int_to_from_bytes_impl!(u16, 2); +int_to_from_bytes_impl!(u32, 4); +int_to_from_bytes_impl!(u64, 8); +int_to_from_bytes_impl!(u128, 16); +#[cfg(target_pointer_width = "64")] +int_to_from_bytes_impl!(usize, 8); +#[cfg(target_pointer_width = "32")] +int_to_from_bytes_impl!(usize, 4); + +int_to_from_bytes_impl!(i8, 1); +int_to_from_bytes_impl!(i16, 2); +int_to_from_bytes_impl!(i32, 4); +int_to_from_bytes_impl!(i64, 8); +int_to_from_bytes_impl!(i128, 16); +#[cfg(target_pointer_width = "64")] +int_to_from_bytes_impl!(isize, 8); +#[cfg(target_pointer_width = "32")] +int_to_from_bytes_impl!(isize, 4); + +float_to_from_bytes_impl!(f32, 4); +float_to_from_bytes_impl!(f64, 8); + +#[cfg(test)] +mod tests { + use super::*; + + macro_rules! check_to_from_bytes { + ($( $ty:ty )+) => {$({ + let n = 1; + let be = <$ty as ToBytes>::to_be_bytes(&n); + let le = <$ty as ToBytes>::to_le_bytes(&n); + let ne = <$ty as ToBytes>::to_ne_bytes(&n); + + assert_eq!(*be.last().unwrap(), 1); + assert_eq!(*le.first().unwrap(), 1); + if cfg!(target_endian = "big") { + assert_eq!(*ne.last().unwrap(), 1); + } else { + assert_eq!(*ne.first().unwrap(), 1); + } + + assert_eq!(<$ty as FromBytes>::from_be_bytes(&be), n); + assert_eq!(<$ty as FromBytes>::from_le_bytes(&le), n); + if cfg!(target_endian = "big") { + assert_eq!(<$ty as FromBytes>::from_ne_bytes(&be), n); + } else { + assert_eq!(<$ty as FromBytes>::from_ne_bytes(&le), n); + } + })+} + } + + #[test] + fn convert_between_int_and_bytes() { + check_to_from_bytes!(u8 u16 u32 u64 u128 usize); + check_to_from_bytes!(i8 i16 i32 i64 i128 isize); + } + + #[test] + fn convert_between_float_and_bytes() { + macro_rules! check_to_from_bytes { + ($( $ty:ty )+) => {$( + let n: $ty = 3.14; + + let be = <$ty as ToBytes>::to_be_bytes(&n); + let le = <$ty as ToBytes>::to_le_bytes(&n); + let ne = <$ty as ToBytes>::to_ne_bytes(&n); + + assert_eq!(<$ty as FromBytes>::from_be_bytes(&be), n); + assert_eq!(<$ty as FromBytes>::from_le_bytes(&le), n); + if cfg!(target_endian = "big") { + assert_eq!(ne, be); + assert_eq!(<$ty as FromBytes>::from_ne_bytes(&be), n); + } else { + assert_eq!(ne, le); + assert_eq!(<$ty as FromBytes>::from_ne_bytes(&le), n); + } + )+} + } + + check_to_from_bytes!(f32 f64); + } +} diff -Nru temporalio-1.3.0/vendor/num-traits/src/ops/checked.rs temporalio-1.3.0/vendor/num-traits/src/ops/checked.rs --- temporalio-1.3.0/vendor/num-traits/src/ops/checked.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/src/ops/checked.rs 2023-10-30 19:40:00.000000000 +0000 @@ -24,7 +24,6 @@ checked_impl!(CheckedAdd, checked_add, u32); checked_impl!(CheckedAdd, checked_add, u64); checked_impl!(CheckedAdd, checked_add, usize); -#[cfg(has_i128)] checked_impl!(CheckedAdd, checked_add, u128); checked_impl!(CheckedAdd, checked_add, i8); @@ -32,7 +31,6 @@ checked_impl!(CheckedAdd, checked_add, i32); checked_impl!(CheckedAdd, checked_add, i64); checked_impl!(CheckedAdd, checked_add, isize); -#[cfg(has_i128)] checked_impl!(CheckedAdd, checked_add, i128); /// Performs subtraction that returns `None` instead of wrapping around on underflow. @@ -47,7 +45,6 @@ checked_impl!(CheckedSub, checked_sub, u32); checked_impl!(CheckedSub, checked_sub, u64); checked_impl!(CheckedSub, checked_sub, usize); -#[cfg(has_i128)] checked_impl!(CheckedSub, checked_sub, u128); checked_impl!(CheckedSub, checked_sub, i8); @@ -55,7 +52,6 @@ checked_impl!(CheckedSub, checked_sub, i32); checked_impl!(CheckedSub, checked_sub, i64); checked_impl!(CheckedSub, checked_sub, isize); -#[cfg(has_i128)] checked_impl!(CheckedSub, checked_sub, i128); /// Performs multiplication that returns `None` instead of wrapping around on underflow or @@ -71,7 +67,6 @@ checked_impl!(CheckedMul, checked_mul, u32); checked_impl!(CheckedMul, checked_mul, u64); checked_impl!(CheckedMul, checked_mul, usize); -#[cfg(has_i128)] checked_impl!(CheckedMul, checked_mul, u128); checked_impl!(CheckedMul, checked_mul, i8); @@ -79,7 +74,6 @@ checked_impl!(CheckedMul, checked_mul, i32); checked_impl!(CheckedMul, checked_mul, i64); checked_impl!(CheckedMul, checked_mul, isize); -#[cfg(has_i128)] checked_impl!(CheckedMul, checked_mul, i128); /// Performs division that returns `None` instead of panicking on division by zero and instead of @@ -95,7 +89,6 @@ checked_impl!(CheckedDiv, checked_div, u32); checked_impl!(CheckedDiv, checked_div, u64); checked_impl!(CheckedDiv, checked_div, usize); -#[cfg(has_i128)] checked_impl!(CheckedDiv, checked_div, u128); checked_impl!(CheckedDiv, checked_div, i8); @@ -103,7 +96,6 @@ checked_impl!(CheckedDiv, checked_div, i32); checked_impl!(CheckedDiv, checked_div, i64); checked_impl!(CheckedDiv, checked_div, isize); -#[cfg(has_i128)] checked_impl!(CheckedDiv, checked_div, i128); /// Performs an integral remainder that returns `None` instead of panicking on division by zero and @@ -136,7 +128,6 @@ checked_impl!(CheckedRem, checked_rem, u32); checked_impl!(CheckedRem, checked_rem, u64); checked_impl!(CheckedRem, checked_rem, usize); -#[cfg(has_i128)] checked_impl!(CheckedRem, checked_rem, u128); checked_impl!(CheckedRem, checked_rem, i8); @@ -144,7 +135,6 @@ checked_impl!(CheckedRem, checked_rem, i32); checked_impl!(CheckedRem, checked_rem, i64); checked_impl!(CheckedRem, checked_rem, isize); -#[cfg(has_i128)] checked_impl!(CheckedRem, checked_rem, i128); macro_rules! checked_impl_unary { @@ -184,7 +174,6 @@ checked_impl_unary!(CheckedNeg, checked_neg, u32); checked_impl_unary!(CheckedNeg, checked_neg, u64); checked_impl_unary!(CheckedNeg, checked_neg, usize); -#[cfg(has_i128)] checked_impl_unary!(CheckedNeg, checked_neg, u128); checked_impl_unary!(CheckedNeg, checked_neg, i8); @@ -192,11 +181,10 @@ checked_impl_unary!(CheckedNeg, checked_neg, i32); checked_impl_unary!(CheckedNeg, checked_neg, i64); checked_impl_unary!(CheckedNeg, checked_neg, isize); -#[cfg(has_i128)] checked_impl_unary!(CheckedNeg, checked_neg, i128); /// Performs a left shift that returns `None` on shifts larger than -/// the type width. +/// or equal to the type width. pub trait CheckedShl: Sized + Shl { /// Checked shift left. Computes `self << rhs`, returning `None` /// if `rhs` is larger than or equal to the number of bits in `self`. @@ -230,7 +218,6 @@ checked_shift_impl!(CheckedShl, checked_shl, u32); checked_shift_impl!(CheckedShl, checked_shl, u64); checked_shift_impl!(CheckedShl, checked_shl, usize); -#[cfg(has_i128)] checked_shift_impl!(CheckedShl, checked_shl, u128); checked_shift_impl!(CheckedShl, checked_shl, i8); @@ -238,11 +225,10 @@ checked_shift_impl!(CheckedShl, checked_shl, i32); checked_shift_impl!(CheckedShl, checked_shl, i64); checked_shift_impl!(CheckedShl, checked_shl, isize); -#[cfg(has_i128)] checked_shift_impl!(CheckedShl, checked_shl, i128); /// Performs a right shift that returns `None` on shifts larger than -/// the type width. +/// or equal to the type width. pub trait CheckedShr: Sized + Shr { /// Checked shift right. Computes `self >> rhs`, returning `None` /// if `rhs` is larger than or equal to the number of bits in `self`. @@ -265,7 +251,6 @@ checked_shift_impl!(CheckedShr, checked_shr, u32); checked_shift_impl!(CheckedShr, checked_shr, u64); checked_shift_impl!(CheckedShr, checked_shr, usize); -#[cfg(has_i128)] checked_shift_impl!(CheckedShr, checked_shr, u128); checked_shift_impl!(CheckedShr, checked_shr, i8); @@ -273,5 +258,4 @@ checked_shift_impl!(CheckedShr, checked_shr, i32); checked_shift_impl!(CheckedShr, checked_shr, i64); checked_shift_impl!(CheckedShr, checked_shr, isize); -#[cfg(has_i128)] checked_shift_impl!(CheckedShr, checked_shr, i128); diff -Nru temporalio-1.3.0/vendor/num-traits/src/ops/euclid.rs temporalio-1.3.0/vendor/num-traits/src/ops/euclid.rs --- temporalio-1.3.0/vendor/num-traits/src/ops/euclid.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/src/ops/euclid.rs 2023-10-30 19:40:00.000000000 +0000 @@ -116,12 +116,8 @@ )*} } -euclid_int_impl!(isize i8 i16 i32 i64); -euclid_uint_impl!(usize u8 u16 u32 u64); -#[cfg(has_i128)] -euclid_int_impl!(i128); -#[cfg(has_i128)] -euclid_uint_impl!(u128); +euclid_int_impl!(isize i8 i16 i32 i64 i128); +euclid_uint_impl!(usize u8 u16 u32 u64 u128); #[cfg(all(has_div_euclid, feature = "std"))] euclid_forward_impl!(f32 f64); @@ -130,7 +126,7 @@ impl Euclid for f32 { #[inline] fn div_euclid(&self, v: &f32) -> f32 { - let q = ::trunc(self / v); + let q = ::trunc(self / v); if self % v < 0.0 { return if *v > 0.0 { q - 1.0 } else { q + 1.0 }; } @@ -141,7 +137,7 @@ fn rem_euclid(&self, v: &f32) -> f32 { let r = self % v; if r < 0.0 { - r + ::abs(*v) + r + ::abs(*v) } else { r } @@ -152,7 +148,7 @@ impl Euclid for f64 { #[inline] fn div_euclid(&self, v: &f64) -> f64 { - let q = ::trunc(self / v); + let q = ::trunc(self / v); if self % v < 0.0 { return if *v > 0.0 { q - 1.0 } else { q + 1.0 }; } @@ -163,7 +159,7 @@ fn rem_euclid(&self, v: &f64) -> f64 { let r = self % v; if r < 0.0 { - r + ::abs(*v) + r + ::abs(*v) } else { r } @@ -251,12 +247,8 @@ )*} } -checked_euclid_int_impl!(isize i8 i16 i32 i64); -checked_euclid_uint_impl!(usize u8 u16 u32 u64); -#[cfg(has_i128)] -checked_euclid_int_impl!(i128); -#[cfg(has_i128)] -checked_euclid_uint_impl!(u128); +checked_euclid_int_impl!(isize i8 i16 i32 i64 i128); +checked_euclid_uint_impl!(usize u8 u16 u32 u64 u128); #[cfg(test)] mod tests { @@ -300,7 +292,7 @@ }; } - test_euclid!(isize i8 i16 i32 i64); + test_euclid!(isize i8 i16 i32 i64 i128); } #[test] @@ -312,13 +304,13 @@ let x: $t = 12.1; let y: $t = 3.2; assert!(Euclid::div_euclid(&x, &y) * y + Euclid::rem_euclid(&x, &y) - x - <= 46.4 * <$t as ::float::FloatCore>::epsilon()); + <= 46.4 * <$t as crate::float::FloatCore>::epsilon()); assert!(Euclid::div_euclid(&x, &-y) * -y + Euclid::rem_euclid(&x, &-y) - x - <= 46.4 * <$t as ::float::FloatCore>::epsilon()); + <= 46.4 * <$t as crate::float::FloatCore>::epsilon()); assert!(Euclid::div_euclid(&-x, &y) * y + Euclid::rem_euclid(&-x, &y) + x - <= 46.4 * <$t as ::float::FloatCore>::epsilon()); + <= 46.4 * <$t as crate::float::FloatCore>::epsilon()); assert!(Euclid::div_euclid(&-x, &-y) * -y + Euclid::rem_euclid(&-x, &-y) + x - <= 46.4 * <$t as ::float::FloatCore>::epsilon()); + <= 46.4 * <$t as crate::float::FloatCore>::epsilon()); } )+ }; @@ -342,6 +334,6 @@ }; } - test_euclid_checked!(isize i8 i16 i32 i64); + test_euclid_checked!(isize i8 i16 i32 i64 i128); } } diff -Nru temporalio-1.3.0/vendor/num-traits/src/ops/mod.rs temporalio-1.3.0/vendor/num-traits/src/ops/mod.rs --- temporalio-1.3.0/vendor/num-traits/src/ops/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/src/ops/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,4 @@ +pub mod bytes; pub mod checked; pub mod euclid; pub mod inv; diff -Nru temporalio-1.3.0/vendor/num-traits/src/ops/mul_add.rs temporalio-1.3.0/vendor/num-traits/src/ops/mul_add.rs --- temporalio-1.3.0/vendor/num-traits/src/ops/mul_add.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/src/ops/mul_add.rs 2023-10-30 19:40:00.000000000 +0000 @@ -24,13 +24,13 @@ /// The resulting type after applying the fused multiply-add. type Output; - /// Performs the fused multiply-add operation. + /// Performs the fused multiply-add operation `(self * a) + b` fn mul_add(self, a: A, b: B) -> Self::Output; } -/// The fused multiply-add assignment operation. +/// The fused multiply-add assignment operation `*self = (*self * a) + b` pub trait MulAddAssign { - /// Performs the fused multiply-add operation. + /// Performs the fused multiply-add assignment operation `*self = (*self * a) + b` fn mul_add_assign(&mut self, a: A, b: B); } @@ -40,7 +40,7 @@ #[inline] fn mul_add(self, a: Self, b: Self) -> Self::Output { - ::mul_add(self, a, b) + ::mul_add(self, a, b) } } @@ -50,7 +50,7 @@ #[inline] fn mul_add(self, a: Self, b: Self) -> Self::Output { - ::mul_add(self, a, b) + ::mul_add(self, a, b) } } @@ -67,15 +67,14 @@ )*} } -mul_add_impl!(MulAdd for isize usize i8 u8 i16 u16 i32 u32 i64 u64); -#[cfg(has_i128)] -mul_add_impl!(MulAdd for i128 u128); +mul_add_impl!(MulAdd for isize i8 i16 i32 i64 i128); +mul_add_impl!(MulAdd for usize u8 u16 u32 u64 u128); #[cfg(any(feature = "std", feature = "libm"))] impl MulAddAssign for f32 { #[inline] fn mul_add_assign(&mut self, a: Self, b: Self) { - *self = ::mul_add(*self, a, b) + *self = ::mul_add(*self, a, b) } } @@ -83,7 +82,7 @@ impl MulAddAssign for f64 { #[inline] fn mul_add_assign(&mut self, a: Self, b: Self) { - *self = ::mul_add(*self, a, b) + *self = ::mul_add(*self, a, b) } } @@ -98,9 +97,8 @@ )*} } -mul_add_assign_impl!(MulAddAssign for isize usize i8 u8 i16 u16 i32 u32 i64 u64); -#[cfg(has_i128)] -mul_add_assign_impl!(MulAddAssign for i128 u128); +mul_add_assign_impl!(MulAddAssign for isize i8 i16 i32 i64 i128); +mul_add_assign_impl!(MulAddAssign for usize u8 u16 u32 u64 u128); #[cfg(test)] mod tests { diff -Nru temporalio-1.3.0/vendor/num-traits/src/ops/overflowing.rs temporalio-1.3.0/vendor/num-traits/src/ops/overflowing.rs --- temporalio-1.3.0/vendor/num-traits/src/ops/overflowing.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/src/ops/overflowing.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,6 @@ use core::ops::{Add, Mul, Sub}; -#[cfg(has_i128)] -use core::{i128, u128}; -use core::{i16, i32, i64, i8, isize}; -use core::{u16, u32, u64, u8, usize}; +use core::{i128, i16, i32, i64, i8, isize}; +use core::{u128, u16, u32, u64, u8, usize}; macro_rules! overflowing_impl { ($trait_name:ident, $method:ident, $t:ty) => { @@ -27,7 +25,6 @@ overflowing_impl!(OverflowingAdd, overflowing_add, u32); overflowing_impl!(OverflowingAdd, overflowing_add, u64); overflowing_impl!(OverflowingAdd, overflowing_add, usize); -#[cfg(has_i128)] overflowing_impl!(OverflowingAdd, overflowing_add, u128); overflowing_impl!(OverflowingAdd, overflowing_add, i8); @@ -35,7 +32,6 @@ overflowing_impl!(OverflowingAdd, overflowing_add, i32); overflowing_impl!(OverflowingAdd, overflowing_add, i64); overflowing_impl!(OverflowingAdd, overflowing_add, isize); -#[cfg(has_i128)] overflowing_impl!(OverflowingAdd, overflowing_add, i128); /// Performs substraction with a flag for overflow. @@ -50,7 +46,6 @@ overflowing_impl!(OverflowingSub, overflowing_sub, u32); overflowing_impl!(OverflowingSub, overflowing_sub, u64); overflowing_impl!(OverflowingSub, overflowing_sub, usize); -#[cfg(has_i128)] overflowing_impl!(OverflowingSub, overflowing_sub, u128); overflowing_impl!(OverflowingSub, overflowing_sub, i8); @@ -58,7 +53,6 @@ overflowing_impl!(OverflowingSub, overflowing_sub, i32); overflowing_impl!(OverflowingSub, overflowing_sub, i64); overflowing_impl!(OverflowingSub, overflowing_sub, isize); -#[cfg(has_i128)] overflowing_impl!(OverflowingSub, overflowing_sub, i128); /// Performs multiplication with a flag for overflow. @@ -73,7 +67,6 @@ overflowing_impl!(OverflowingMul, overflowing_mul, u32); overflowing_impl!(OverflowingMul, overflowing_mul, u64); overflowing_impl!(OverflowingMul, overflowing_mul, usize); -#[cfg(has_i128)] overflowing_impl!(OverflowingMul, overflowing_mul, u128); overflowing_impl!(OverflowingMul, overflowing_mul, i8); @@ -81,7 +74,6 @@ overflowing_impl!(OverflowingMul, overflowing_mul, i32); overflowing_impl!(OverflowingMul, overflowing_mul, i64); overflowing_impl!(OverflowingMul, overflowing_mul, isize); -#[cfg(has_i128)] overflowing_impl!(OverflowingMul, overflowing_mul, i128); #[test] diff -Nru temporalio-1.3.0/vendor/num-traits/src/ops/saturating.rs temporalio-1.3.0/vendor/num-traits/src/ops/saturating.rs --- temporalio-1.3.0/vendor/num-traits/src/ops/saturating.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/src/ops/saturating.rs 2023-10-30 19:40:00.000000000 +0000 @@ -28,9 +28,8 @@ )*} } -deprecated_saturating_impl!(Saturating for isize usize i8 u8 i16 u16 i32 u32 i64 u64); -#[cfg(has_i128)] -deprecated_saturating_impl!(Saturating for i128 u128); +deprecated_saturating_impl!(Saturating for isize i8 i16 i32 i64 i128); +deprecated_saturating_impl!(Saturating for usize u8 u16 u32 u64 u128); macro_rules! saturating_impl { ($trait_name:ident, $method:ident, $t:ty) => { @@ -55,7 +54,6 @@ saturating_impl!(SaturatingAdd, saturating_add, u32); saturating_impl!(SaturatingAdd, saturating_add, u64); saturating_impl!(SaturatingAdd, saturating_add, usize); -#[cfg(has_i128)] saturating_impl!(SaturatingAdd, saturating_add, u128); saturating_impl!(SaturatingAdd, saturating_add, i8); @@ -63,7 +61,6 @@ saturating_impl!(SaturatingAdd, saturating_add, i32); saturating_impl!(SaturatingAdd, saturating_add, i64); saturating_impl!(SaturatingAdd, saturating_add, isize); -#[cfg(has_i128)] saturating_impl!(SaturatingAdd, saturating_add, i128); /// Performs subtraction that saturates at the numeric bounds instead of overflowing. @@ -78,7 +75,6 @@ saturating_impl!(SaturatingSub, saturating_sub, u32); saturating_impl!(SaturatingSub, saturating_sub, u64); saturating_impl!(SaturatingSub, saturating_sub, usize); -#[cfg(has_i128)] saturating_impl!(SaturatingSub, saturating_sub, u128); saturating_impl!(SaturatingSub, saturating_sub, i8); @@ -86,7 +82,6 @@ saturating_impl!(SaturatingSub, saturating_sub, i32); saturating_impl!(SaturatingSub, saturating_sub, i64); saturating_impl!(SaturatingSub, saturating_sub, isize); -#[cfg(has_i128)] saturating_impl!(SaturatingSub, saturating_sub, i128); /// Performs multiplication that saturates at the numeric bounds instead of overflowing. @@ -101,7 +96,6 @@ saturating_impl!(SaturatingMul, saturating_mul, u32); saturating_impl!(SaturatingMul, saturating_mul, u64); saturating_impl!(SaturatingMul, saturating_mul, usize); -#[cfg(has_i128)] saturating_impl!(SaturatingMul, saturating_mul, u128); saturating_impl!(SaturatingMul, saturating_mul, i8); @@ -109,7 +103,6 @@ saturating_impl!(SaturatingMul, saturating_mul, i32); saturating_impl!(SaturatingMul, saturating_mul, i64); saturating_impl!(SaturatingMul, saturating_mul, isize); -#[cfg(has_i128)] saturating_impl!(SaturatingMul, saturating_mul, i128); // TODO: add SaturatingNeg for signed integer primitives once the saturating_neg() API is stable. diff -Nru temporalio-1.3.0/vendor/num-traits/src/ops/wrapping.rs temporalio-1.3.0/vendor/num-traits/src/ops/wrapping.rs --- temporalio-1.3.0/vendor/num-traits/src/ops/wrapping.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/src/ops/wrapping.rs 2023-10-30 19:40:00.000000000 +0000 @@ -32,7 +32,6 @@ wrapping_impl!(WrappingAdd, wrapping_add, u32); wrapping_impl!(WrappingAdd, wrapping_add, u64); wrapping_impl!(WrappingAdd, wrapping_add, usize); -#[cfg(has_i128)] wrapping_impl!(WrappingAdd, wrapping_add, u128); wrapping_impl!(WrappingAdd, wrapping_add, i8); @@ -40,7 +39,6 @@ wrapping_impl!(WrappingAdd, wrapping_add, i32); wrapping_impl!(WrappingAdd, wrapping_add, i64); wrapping_impl!(WrappingAdd, wrapping_add, isize); -#[cfg(has_i128)] wrapping_impl!(WrappingAdd, wrapping_add, i128); /// Performs subtraction that wraps around on overflow. @@ -55,7 +53,6 @@ wrapping_impl!(WrappingSub, wrapping_sub, u32); wrapping_impl!(WrappingSub, wrapping_sub, u64); wrapping_impl!(WrappingSub, wrapping_sub, usize); -#[cfg(has_i128)] wrapping_impl!(WrappingSub, wrapping_sub, u128); wrapping_impl!(WrappingSub, wrapping_sub, i8); @@ -63,7 +60,6 @@ wrapping_impl!(WrappingSub, wrapping_sub, i32); wrapping_impl!(WrappingSub, wrapping_sub, i64); wrapping_impl!(WrappingSub, wrapping_sub, isize); -#[cfg(has_i128)] wrapping_impl!(WrappingSub, wrapping_sub, i128); /// Performs multiplication that wraps around on overflow. @@ -78,7 +74,6 @@ wrapping_impl!(WrappingMul, wrapping_mul, u32); wrapping_impl!(WrappingMul, wrapping_mul, u64); wrapping_impl!(WrappingMul, wrapping_mul, usize); -#[cfg(has_i128)] wrapping_impl!(WrappingMul, wrapping_mul, u128); wrapping_impl!(WrappingMul, wrapping_mul, i8); @@ -86,7 +81,6 @@ wrapping_impl!(WrappingMul, wrapping_mul, i32); wrapping_impl!(WrappingMul, wrapping_mul, i64); wrapping_impl!(WrappingMul, wrapping_mul, isize); -#[cfg(has_i128)] wrapping_impl!(WrappingMul, wrapping_mul, i128); macro_rules! wrapping_unary_impl { @@ -127,14 +121,12 @@ wrapping_unary_impl!(WrappingNeg, wrapping_neg, u32); wrapping_unary_impl!(WrappingNeg, wrapping_neg, u64); wrapping_unary_impl!(WrappingNeg, wrapping_neg, usize); -#[cfg(has_i128)] wrapping_unary_impl!(WrappingNeg, wrapping_neg, u128); wrapping_unary_impl!(WrappingNeg, wrapping_neg, i8); wrapping_unary_impl!(WrappingNeg, wrapping_neg, i16); wrapping_unary_impl!(WrappingNeg, wrapping_neg, i32); wrapping_unary_impl!(WrappingNeg, wrapping_neg, i64); wrapping_unary_impl!(WrappingNeg, wrapping_neg, isize); -#[cfg(has_i128)] wrapping_unary_impl!(WrappingNeg, wrapping_neg, i128); macro_rules! wrapping_shift_impl { @@ -172,7 +164,6 @@ wrapping_shift_impl!(WrappingShl, wrapping_shl, u32); wrapping_shift_impl!(WrappingShl, wrapping_shl, u64); wrapping_shift_impl!(WrappingShl, wrapping_shl, usize); -#[cfg(has_i128)] wrapping_shift_impl!(WrappingShl, wrapping_shl, u128); wrapping_shift_impl!(WrappingShl, wrapping_shl, i8); @@ -180,7 +171,6 @@ wrapping_shift_impl!(WrappingShl, wrapping_shl, i32); wrapping_shift_impl!(WrappingShl, wrapping_shl, i64); wrapping_shift_impl!(WrappingShl, wrapping_shl, isize); -#[cfg(has_i128)] wrapping_shift_impl!(WrappingShl, wrapping_shl, i128); /// Performs a right shift that does not panic. @@ -207,7 +197,6 @@ wrapping_shift_impl!(WrappingShr, wrapping_shr, u32); wrapping_shift_impl!(WrappingShr, wrapping_shr, u64); wrapping_shift_impl!(WrappingShr, wrapping_shr, usize); -#[cfg(has_i128)] wrapping_shift_impl!(WrappingShr, wrapping_shr, u128); wrapping_shift_impl!(WrappingShr, wrapping_shr, i8); @@ -215,7 +204,6 @@ wrapping_shift_impl!(WrappingShr, wrapping_shr, i32); wrapping_shift_impl!(WrappingShr, wrapping_shr, i64); wrapping_shift_impl!(WrappingShr, wrapping_shr, isize); -#[cfg(has_i128)] wrapping_shift_impl!(WrappingShr, wrapping_shr, i128); // Well this is a bit funny, but all the more appropriate. @@ -297,8 +285,7 @@ assert_eq!(wrapping_add(255, 1), (Wrapping(255u8) + Wrapping(1u8)).0); assert_eq!(wrapping_sub(0, 1), (Wrapping(0u8) - Wrapping(1u8)).0); assert_eq!(wrapping_mul(255, 2), (Wrapping(255u8) * Wrapping(2u8)).0); - // TODO: Test for Wrapping::Neg. Not possible yet since core::ops::Neg was - // only added to core::num::Wrapping<_> in Rust 1.10. + assert_eq!(wrapping_neg(255), (-Wrapping(255u8)).0); assert_eq!(wrapping_shl(255, 8), (Wrapping(255u8) << 8).0); assert_eq!(wrapping_shr(255, 8), (Wrapping(255u8) >> 8).0); } @@ -321,8 +308,11 @@ require_wrappingmul(&Wrapping(42)); } -// TODO: Test for Wrapping::Neg. Not possible yet since core::ops::Neg was -// only added to core::num::Wrapping<_> in Rust 1.10. +#[test] +fn wrapping_is_wrappingneg() { + fn require_wrappingneg(_: &T) {} + require_wrappingneg(&Wrapping(42)); +} #[test] fn wrapping_is_wrappingshl() { diff -Nru temporalio-1.3.0/vendor/num-traits/src/pow.rs temporalio-1.3.0/vendor/num-traits/src/pow.rs --- temporalio-1.3.0/vendor/num-traits/src/pow.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/src/pow.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ +use crate::{CheckedMul, One}; use core::num::Wrapping; use core::ops::Mul; -use {CheckedMul, One}; /// Binary operator for raising a value to a power. pub trait Pow { @@ -99,22 +99,14 @@ pow_impl!(i64, u32, u32, i64::pow); pow_impl!(i64, usize); -#[cfg(has_i128)] pow_impl!(u128, u8, u32, u128::pow); -#[cfg(has_i128)] pow_impl!(u128, u16, u32, u128::pow); -#[cfg(has_i128)] pow_impl!(u128, u32, u32, u128::pow); -#[cfg(has_i128)] pow_impl!(u128, usize); -#[cfg(has_i128)] pow_impl!(i128, u8, u32, i128::pow); -#[cfg(has_i128)] pow_impl!(i128, u16, u32, i128::pow); -#[cfg(has_i128)] pow_impl!(i128, u32, u32, i128::pow); -#[cfg(has_i128)] pow_impl!(i128, usize); pow_impl!(usize, u8, u32, usize::pow); @@ -133,9 +125,7 @@ pow_impl!(Wrapping); pow_impl!(Wrapping); pow_impl!(Wrapping); -#[cfg(has_i128)] pow_impl!(Wrapping); -#[cfg(has_i128)] pow_impl!(Wrapping); pow_impl!(Wrapping); pow_impl!(Wrapping); @@ -155,7 +145,7 @@ #[cfg(any(feature = "std", feature = "libm"))] mod float_impls { use super::Pow; - use Float; + use crate::Float; pow_impl!(f32, i8, i32, ::powi); pow_impl!(f32, u8, i32, ::powi); @@ -232,18 +222,8 @@ return Some(T::one()); } - macro_rules! optry { - ($expr:expr) => { - if let Some(val) = $expr { - val - } else { - return None; - } - }; - } - while exp & 1 == 0 { - base = optry!(base.checked_mul(&base)); + base = base.checked_mul(&base)?; exp >>= 1; } if exp == 1 { @@ -253,9 +233,9 @@ let mut acc = base.clone(); while exp > 1 { exp >>= 1; - base = optry!(base.checked_mul(&base)); + base = base.checked_mul(&base)?; if exp & 1 == 1 { - acc = optry!(acc.checked_mul(&base)); + acc = acc.checked_mul(&base)?; } } Some(acc) diff -Nru temporalio-1.3.0/vendor/num-traits/src/real.rs temporalio-1.3.0/vendor/num-traits/src/real.rs --- temporalio-1.3.0/vendor/num-traits/src/real.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/src/real.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,7 @@ use core::ops::Neg; -use {Float, Num, NumCast}; +use crate::{Float, Num, NumCast}; // NOTE: These doctests have the same issue as those in src/float.rs. // They're testing the inherent methods directly, and not those of `Real`. diff -Nru temporalio-1.3.0/vendor/num-traits/src/sign.rs temporalio-1.3.0/vendor/num-traits/src/sign.rs --- temporalio-1.3.0/vendor/num-traits/src/sign.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/src/sign.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,8 @@ use core::num::Wrapping; use core::ops::Neg; -use float::FloatCore; -use Num; +use crate::float::FloatCore; +use crate::Num; /// Useful functions for signed numbers (i.e. numbers that can be negative). pub trait Signed: Sized + Num + Neg { @@ -72,10 +72,7 @@ )*) } -signed_impl!(isize i8 i16 i32 i64); - -#[cfg(has_i128)] -signed_impl!(i128); +signed_impl!(isize i8 i16 i32 i64 i128); impl Signed for Wrapping where @@ -202,9 +199,7 @@ )*) } -empty_trait_impl!(Unsigned for usize u8 u16 u32 u64); -#[cfg(has_i128)] -empty_trait_impl!(Unsigned for u128); +empty_trait_impl!(Unsigned for usize u8 u16 u32 u64 u128); impl Unsigned for Wrapping where Wrapping: Num {} @@ -214,11 +209,8 @@ require_unsigned(&Wrapping(42_u32)); } -// Commenting this out since it doesn't compile on Rust 1.8, -// because on this version Wrapping doesn't implement Neg and therefore can't -// implement Signed. -// #[test] -// fn signed_wrapping_is_signed() { -// fn require_signed(_: &T) {} -// require_signed(&Wrapping(-42)); -// } +#[test] +fn signed_wrapping_is_signed() { + fn require_signed(_: &T) {} + require_signed(&Wrapping(-42)); +} diff -Nru temporalio-1.3.0/vendor/num-traits/tests/cast.rs temporalio-1.3.0/vendor/num-traits/tests/cast.rs --- temporalio-1.3.0/vendor/num-traits/tests/cast.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/num-traits/tests/cast.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,21 +1,13 @@ //! Tests of `num_traits::cast`. -#![no_std] - -#[cfg(feature = "std")] -#[macro_use] -extern crate std; - -extern crate num_traits; +#![cfg_attr(not(feature = "std"), no_std)] use num_traits::cast::*; use num_traits::Bounded; use core::{f32, f64}; -#[cfg(has_i128)] -use core::{i128, u128}; -use core::{i16, i32, i64, i8, isize}; -use core::{u16, u32, u64, u8, usize}; +use core::{i128, i16, i32, i64, i8, isize}; +use core::{u128, u16, u32, u64, u8, usize}; use core::fmt::Debug; use core::mem; @@ -147,7 +139,6 @@ } #[test] -#[cfg(has_i128)] fn cast_to_i128_checks_overflow() { let big_f: f64 = 1.0e123; let normal_f: f64 = 1.0; @@ -163,7 +154,7 @@ } #[cfg(feature = "std")] -fn dbg(args: ::core::fmt::Arguments) { +fn dbg(args: ::core::fmt::Arguments<'_>) { println!("{}", args); } @@ -180,9 +171,9 @@ let small = if $t::MIN == 0 || mem::size_of::<$t>() < mem::size_of::<$f>() { $t::MIN as $f - 1.0 } else { - ($t::MIN as $f).raw_offset(1).floor() + ($t::MIN as $f).raw_inc().floor() }; - let fmin = small.raw_offset(-1); + let fmin = small.raw_dec(); dbg!(" testing min {}\n\tvs. {:.0}\n\tand {:.0}", $t::MIN, fmin, small); assert_eq!(Some($t::MIN), cast::<$f, $t>($t::MIN as $f)); assert_eq!(Some($t::MIN), cast::<$f, $t>(fmin)); @@ -192,11 +183,11 @@ ($t::MAX, $t::MAX as $f + 1.0) } else { let large = $t::MAX as $f; // rounds up! - let max = large.raw_offset(-1) as $t; // the next smallest possible + let max = large.raw_dec() as $t; // the next smallest possible assert_eq!(max.count_ones(), $f::MANTISSA_DIGITS); (max, large) }; - let fmax = large.raw_offset(-1); + let fmax = large.raw_dec(); dbg!(" testing max {}\n\tvs. {:.0}\n\tand {:.0}", max, fmax, large); assert_eq!(Some(max), cast::<$f, $t>(max as $f)); assert_eq!(Some(max), cast::<$f, $t>(fmax)); @@ -210,27 +201,27 @@ } trait RawOffset: Sized { - type Raw; - fn raw_offset(self, offset: Self::Raw) -> Self; + fn raw_inc(self) -> Self; + fn raw_dec(self) -> Self; } impl RawOffset for f32 { - type Raw = i32; - fn raw_offset(self, offset: Self::Raw) -> Self { - unsafe { - let raw: Self::Raw = mem::transmute(self); - mem::transmute(raw + offset) - } + fn raw_inc(self) -> Self { + Self::from_bits(self.to_bits() + 1) + } + + fn raw_dec(self) -> Self { + Self::from_bits(self.to_bits() - 1) } } impl RawOffset for f64 { - type Raw = i64; - fn raw_offset(self, offset: Self::Raw) -> Self { - unsafe { - let raw: Self::Raw = mem::transmute(self); - mem::transmute(raw + offset) - } + fn raw_inc(self) -> Self { + Self::from_bits(self.to_bits() + 1) + } + + fn raw_dec(self) -> Self { + Self::from_bits(self.to_bits() - 1) } } @@ -243,7 +234,6 @@ } #[test] -#[cfg(has_i128)] fn cast_float_to_i128_edge_cases() { float_test_edge!(f32 -> i128 u128); float_test_edge!(f64 -> i128 u128); @@ -251,6 +241,7 @@ macro_rules! int_test_edge { ($f:ident -> { $($t:ident)+ } with $BigS:ident $BigU:ident ) => { $({ + #[allow(arithmetic_overflow)] // https://github.com/rust-lang/rust/issues/109731 fn test_edge() { dbg!("testing cast edge cases for {} -> {}", stringify!($f), stringify!($t)); @@ -302,7 +293,6 @@ } #[test] -#[cfg(has_i128)] fn cast_int_to_128_edge_cases() { use core::cmp::Ordering::*; diff -Nru temporalio-1.3.0/vendor/object/.cargo-checksum.json temporalio-1.3.0/vendor/object/.cargo-checksum.json --- temporalio-1.3.0/vendor/object/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"a12476c54f1e333d5817e9e542c7279a6406f8e67ddfc9beaad43ef2f107fadb","Cargo.toml":"d94e2863d8916b8e9758813d0324ed3d7b4596b7d39b57341dddc0eca3267e7b","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0b74dfa0bcee5c420c6b7f67b4b2658f9ab8388c97b8e733975f2cecbdd668a6","README.md":"18a8fae32349bfc7f3099a4b74c1e3df5407d049283fa0ff0a095798dca7b419","clippy.toml":"372224591422419a0e397ee2f4b4b27443b3ad9c692be9c6c2f320696dc43a8a","src/archive.rs":"d6cead723242c26db2967b63385b79ed2008980a8c64b123a5eecffd7ed388fc","src/common.rs":"90d1d62405e5eabc09640387d5186ed7f386f910cd5ce38f30e33d695e54957a","src/elf.rs":"cb6ac69773eaef8881450b3cf39abc37511ef83ddcb1fa3042209d23dfa575ad","src/endian.rs":"b4f63a85ccd3d5c11615baf5ba946c82046c221a1b8c74ee8c6fa4360782980c","src/lib.rs":"7f1261ebed84cd10169c1846a70dcafa7c8b25c06f32981335a9a676f45856a4","src/macho.rs":"e62808b0c84494b68e7e69b2f7fd9c0620b2ef61b6a2af3403de30284cf6b898","src/pe.rs":"5fd77bc9728bce87f12b849081cd72a56f23ed59225bbebb0fee9725ae111494","src/pod.rs":"d2967732f0052e6cfa18a2dd62c57bc3b640a20eb9a6db9f39836000ceabb399","src/read/any.rs":"c8bf4d6f0617b9433ef294494d04c4b16d1dd9afd45cb1ab5a6798268d70bff8","src/read/archive.rs":"479574cff125a74fc5512d75c1531da3bb006005fe544ffd2531a7d4f35a9bb4","src/read/coff/comdat.rs":"5204e6e44a33d1fe04ae551892d9dae2bd8ca4a0d9f1b46dd06a9e512b8ec6cc","src/read/coff/file.rs":"007c52c0a2d6f763a3c74e13f5cc15cf870a0701b87f01346ad550e52c5e5146","src/read/coff/mod.rs":"5eed1c0ca7cf044b3173223b06afacc4961a0515ef2478fffa35641f4ee364ee","src/read/coff/relocation.rs":"57deb22ed0c9c31de0fe0bb483ded94459bcfd93b9f979191500d223a8517fe2","src/read/coff/section.rs":"de023dc46d4e1a37e77ab8e7080ff9fc9588633d790ae664e138d70e8fc8a39f","src/read/coff/symbol.rs":"e3b629112fe73e4627daa45093df1a1a2844ffe395d1c4de479f0f4c2bdac624","src/read/elf/attributes.rs":"1a5bc8dc081903d6b318761f50010ab08dee74b7f2d68ffbbd1aff7ed7b7c538","src/read/elf/comdat.rs":"253e00621d9a5249cfa20a2ebda76127113b42fc960235308333c9d35acdd628","src/read/elf/compression.rs":"097ff8bdc78d01a1532b11c1c0cae3b35905128c7d98b471de188d46da3ff970","src/read/elf/dynamic.rs":"8f59bd6d352f6810be6b6dc02c2f88229f15aa02a42f8fc09bcf3f284d4b1021","src/read/elf/file.rs":"48bbeeda6814b280485021009b3755ebca63f2a00c8bfdb0ac64276ed0157b12","src/read/elf/hash.rs":"b330af7e2356512cfdf162986437c81a3b149a91e26bf82455a6976e2571a618","src/read/elf/mod.rs":"fceb322ac4e2cb182e0abd93f794622e58ae7c64e83c8703c9c888af5d93889d","src/read/elf/note.rs":"f1aadb81268e28d5ad25033f58b7d96af6323e6d2e238489f13b5ce4409e7bae","src/read/elf/relocation.rs":"f710c7a6f8e743f8f4172141e03294399ea4d59f4726650168e3c66544fe2f5f","src/read/elf/section.rs":"c626a53afa196ba5b81a3d6278956f1d1ddf04ff2ac81f934425cfaef870aafd","src/read/elf/segment.rs":"ebcefba06c6f4a3e60403a1112c59f3390c39840aac011a8b040c77f8d29d655","src/read/elf/symbol.rs":"57735265876d1dc73a94a47356f65b998553dc91ea1a1dd3ad178d602cb1b616","src/read/elf/version.rs":"2c5f63e526cf26f83bdaaead4124949fc53b6198983e4681b6a3895794ad8754","src/read/macho/dyld_cache.rs":"c5247e9121a57fd411c86aea435b9c3d6d03d3cbb3fb7dfe6e75576013d71f14","src/read/macho/fat.rs":"d27a1052f2e47cd5b798a6359f33c3bfe7f7971b13259f6545118213ace7f5dd","src/read/macho/file.rs":"2531c245722202173ff762179af2c88af0108156457c848e7d756e348e72bc80","src/read/macho/load_command.rs":"d8c0ebc8f65dafa4fbb1f9a3c944fdeee96fddacfcc863650b94d9a62e8fe37a","src/read/macho/mod.rs":"23b353da3b7e076c68a067776e6a5b346a746116ac42c2c90bafd95ad54a90b3","src/read/macho/relocation.rs":"477d98b507550c29ceceba49308d14e1f086cb01a4ea9af691e995d1d29767a4","src/read/macho/section.rs":"9b21b3a02f509bb09983d116d7f0938cd61d5293e5e31907964611495b8a575e","src/read/macho/segment.rs":"0dee483eb9b6c731e69a9fe0bd9ef84b2a797a8203e5e870e15a6a2165326cc3","src/read/macho/symbol.rs":"3d3ad557c205d834ba305a9eaf3b97b2ed05f1906cd8430ad2fadabf81f14b9f","src/read/mod.rs":"7251d93159c3288c0fac791f2183ac94deae5e6faf693b393744f6952e33cffa","src/read/pe/data_directory.rs":"c08c095a4287c55bf7d7774bbade1d7610d8e82433b0de23af8c4c7ef23d75e3","src/read/pe/export.rs":"07ac5ec7b67d4a09037d8f11eb4426d96515687ee299df2a3d8cd4fd93eb2036","src/read/pe/file.rs":"507d800775adae687ca9ac7dca1a6f42463103af0731a5fe548d4745a9bee686","src/read/pe/import.rs":"ea20dfc0d462ba20e149bf9408f4ec1d0b202abf1f15536f6d091f0c0e756ac8","src/read/pe/mod.rs":"69832b7f4ccd93b59e08bafcbd0d3226c450d7801ad49ab554b38b660c8997fd","src/read/pe/relocation.rs":"0335c06b6d37df4939c8b88044313e88661ee45e5a57d2eec40143f2fe481838","src/read/pe/resource.rs":"0209eb96391bc367633b6d868505cb30947157702b0c85ef6677e5a1283d448f","src/read/pe/rich.rs":"ae9b2fc927bab2661e8d200a10128aebde37d26b50cb9069e9af9eb7bacee591","src/read/pe/section.rs":"bafde5a1584f6ce0456e32756e825c1b2b9dc0ec220ab29e668c2ff700600b87","src/read/read_cache.rs":"e9dbaa385435f5ef6ca5951c26ed1f6793ad3a8f3aee918257a5df6783d4b36d","src/read/read_ref.rs":"14966a1da9951633a7e73aedccfeadbbed4a977a8fb9d415d572250f6ebaf438","src/read/traits.rs":"8d094ba6ac06639bad448c70378d5154195d4ab36b13588b72105a869dfc053e","src/read/util.rs":"7ed8c5c88a52549734df67d2cbd3f0ea1a571728cae62152e57018f3140f9ebc","src/read/wasm.rs":"31c755ce17bba20ba287f53af7b7787bdbb5f8920333412fb11d81239102b423","src/read/xcoff/comdat.rs":"9a0a8a16682a28a54b51d28d382578e4b1e0212a34460eb93b50e8f97e4bf745","src/read/xcoff/file.rs":"17f751578d052cb8f74ee56a4e17b053b06e82e4efbe943907943bc561fb301e","src/read/xcoff/mod.rs":"d0179d3f95797464ca5919563454d1123ce8c35dfc5f40ecd6ca0d002a9824a8","src/read/xcoff/relocation.rs":"84993f477231cd1b8c79c385bc0e892640de89ddae268b845bc82c41999953b4","src/read/xcoff/section.rs":"c5ce72c214398125c7a4bc160fc5a7b27a6d92035dadcc84fd2852b73c75c123","src/read/xcoff/segment.rs":"627dabf3003aa1442bb4a2292cd68e1f572c3b95864a99e50a505b2894ffc804","src/read/xcoff/symbol.rs":"23be12b614937f8ea5de90d097fb8034f82bff798aa09636cd53a0670e39a984","src/write/coff.rs":"1dcb1c6c939af192591d44e135e6d139b82563d8bca07249e93fa3d434b1f6c7","src/write/elf/mod.rs":"1bb945edad539b4f19dda5d46c9b86fa4ea3721eedda77ca2595b5519c3e30f2","src/write/elf/object.rs":"68acaa137e32217b85d28ef4e6033c64b3ef4621289ae53bd012e1ba03316c2d","src/write/elf/writer.rs":"84336230a24413a41e342735c153c3421c70707ec92c2df02e7d3536e5d41b55","src/write/macho.rs":"4561d0b3257b2570a9952521a016586de9e873e4ce6c574ecf620ecfad9da703","src/write/mod.rs":"c6c9a54ef807a3bee0c3074be86b0aed90872e1e703f39f2fa5c06bc9ed89767","src/write/pe.rs":"6c72185705a3e067c481f2b9f81c64a84e062e67781928e58fd1150314dad8f9","src/write/string.rs":"0033a6f5137b42988ac41dbaa2efb94a4d74d8b043c9a34c40125e8ee6912420","src/write/util.rs":"7a1083d305e9446767ce2d5f69be2c4c155495cf97e595f8fa53c4e153ccf186","src/write/xcoff.rs":"f192dd34fb442cd53a004e50508f6a787c9e9cd9089a15f63fdf6054eb6bd63f","src/xcoff.rs":"fbd50fc4b61ccfdf218185ea4eafe8cf9793e8d034e7ce243fb54ecae12af5ce","tests/integration.rs":"0fa704827e4da1be38dac2e3820d92f6b20c4d415803b04f67c3516020b1de97","tests/parse_self.rs":"81b44b2dd1de9a5d8c18d9bd8926156e39fb83931837afa8ca344da0d309aeee","tests/read/coff.rs":"d3ec2079f00237640d01cb66eb24c55c85d7a775bb94f9f5c9f77e21cb7a785d","tests/read/mod.rs":"7833826f169ac3be2b4f274e5fc8cf4a51742bd0010803ff0dc20ea5643a7e61","tests/round_trip/bss.rs":"849d69b063fd757fed02219dd81e9d13b82068a2025d2cc5cfd40cf557e31bda","tests/round_trip/coff.rs":"8a25aab7164a5c8aa7a21279f8bae1f4d5f68a8d09c29a4ecd0d0c14564851cc","tests/round_trip/comdat.rs":"a8f729e218fee21e90b9f39b5cfcb4f80bc3ce26d3a297323667e6eb14f882cc","tests/round_trip/common.rs":"ced08ff559ca4d343ceef54bb4c581a3405cd96d6a1628ba43b7aab82070800b","tests/round_trip/elf.rs":"d7351d888ccad246a646ab3bea1afc3d445adeb28c5d3c8f157f7cde3717281c","tests/round_trip/macho.rs":"b23931f506345b26ce3b4908dc2ce02f704603c622d39f5e9e7c8529f2882818","tests/round_trip/mod.rs":"b0eaaf6a0a282839525150d043205ecc4467f8e2270c448ac03dbdccf4b764f6","tests/round_trip/section_flags.rs":"0e17639e5f86d576f039a294c274ce8db2e2a8add31a2fffc33a6e93a6d2791e","tests/round_trip/tls.rs":"23a49a1036b9173ece82a3080745930e5925e745280ab38866c9d3c29f463e63"},"package":"8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1"} \ No newline at end of file +{"files":{"CHANGELOG.md":"19f059b47fe070336813f4561b7da9be7f8dc1968daf3b1565b1a55900673469","Cargo.toml":"8075e73eb31b58aacb542434e0f21851895a335efc6cc23724411c478716c213","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0b74dfa0bcee5c420c6b7f67b4b2658f9ab8388c97b8e733975f2cecbdd668a6","README.md":"3772fdfd89e6321cc298413b8c0ba847bd125dfe64785e8faeaac05a87cbb2d3","clippy.toml":"e1e95839ba8e8bbf07f99ff49e2f151b9048c7981301a5480571842bbaf78ca2","src/archive.rs":"d6cead723242c26db2967b63385b79ed2008980a8c64b123a5eecffd7ed388fc","src/common.rs":"27a01eb0a1efcd10a988bc3922a2159e97fd133fbc07ff90faca4ff1722bd605","src/elf.rs":"ceb4f748b65ea092cf057db45193b0b2c7f9204a1e677848aaf0463f9dd3ac6a","src/endian.rs":"b4f63a85ccd3d5c11615baf5ba946c82046c221a1b8c74ee8c6fa4360782980c","src/lib.rs":"7f1261ebed84cd10169c1846a70dcafa7c8b25c06f32981335a9a676f45856a4","src/macho.rs":"e62808b0c84494b68e7e69b2f7fd9c0620b2ef61b6a2af3403de30284cf6b898","src/pe.rs":"8432e949a5bbf7ca28ba27f6a8ee926fe2e8632ffd88845714a6f64d6f7c0a40","src/pod.rs":"d2967732f0052e6cfa18a2dd62c57bc3b640a20eb9a6db9f39836000ceabb399","src/read/any.rs":"8ef08da67f083ee3f2758b5d64349d8032d5c63198d0c55815cd17054281a207","src/read/archive.rs":"479574cff125a74fc5512d75c1531da3bb006005fe544ffd2531a7d4f35a9bb4","src/read/coff/comdat.rs":"5204e6e44a33d1fe04ae551892d9dae2bd8ca4a0d9f1b46dd06a9e512b8ec6cc","src/read/coff/file.rs":"007c52c0a2d6f763a3c74e13f5cc15cf870a0701b87f01346ad550e52c5e5146","src/read/coff/import.rs":"1de0db515a0a6b1eee355d93a715f6d2ff152d1b815e1e859af0b0e5ded36efc","src/read/coff/mod.rs":"66bdcc772291cb53be378a66723e3c246e30df5aa4e4d4ce8e55bfeb156849a9","src/read/coff/relocation.rs":"57deb22ed0c9c31de0fe0bb483ded94459bcfd93b9f979191500d223a8517fe2","src/read/coff/section.rs":"de023dc46d4e1a37e77ab8e7080ff9fc9588633d790ae664e138d70e8fc8a39f","src/read/coff/symbol.rs":"e3b629112fe73e4627daa45093df1a1a2844ffe395d1c4de479f0f4c2bdac624","src/read/elf/attributes.rs":"1a5bc8dc081903d6b318761f50010ab08dee74b7f2d68ffbbd1aff7ed7b7c538","src/read/elf/comdat.rs":"253e00621d9a5249cfa20a2ebda76127113b42fc960235308333c9d35acdd628","src/read/elf/compression.rs":"097ff8bdc78d01a1532b11c1c0cae3b35905128c7d98b471de188d46da3ff970","src/read/elf/dynamic.rs":"8f59bd6d352f6810be6b6dc02c2f88229f15aa02a42f8fc09bcf3f284d4b1021","src/read/elf/file.rs":"860f6ed4e98e8672daef71065ea885f47d25593f6adeb7907545dadb9d398768","src/read/elf/hash.rs":"b330af7e2356512cfdf162986437c81a3b149a91e26bf82455a6976e2571a618","src/read/elf/mod.rs":"fceb322ac4e2cb182e0abd93f794622e58ae7c64e83c8703c9c888af5d93889d","src/read/elf/note.rs":"4b7e33582bff27918240d34d70f0099260dfd3122345c12ce10e6f7fcdf79e35","src/read/elf/relocation.rs":"7b95b7fbac280645f6d5900cc0158653bc8fb3adc9beeeae1b3f61eb77ada5d0","src/read/elf/section.rs":"c626a53afa196ba5b81a3d6278956f1d1ddf04ff2ac81f934425cfaef870aafd","src/read/elf/segment.rs":"ebcefba06c6f4a3e60403a1112c59f3390c39840aac011a8b040c77f8d29d655","src/read/elf/symbol.rs":"d50755b3acd34b9c77dd51f94d436265e79ed8f6f167b593e2a482543abde30b","src/read/elf/version.rs":"2c5f63e526cf26f83bdaaead4124949fc53b6198983e4681b6a3895794ad8754","src/read/macho/dyld_cache.rs":"c5247e9121a57fd411c86aea435b9c3d6d03d3cbb3fb7dfe6e75576013d71f14","src/read/macho/fat.rs":"d27a1052f2e47cd5b798a6359f33c3bfe7f7971b13259f6545118213ace7f5dd","src/read/macho/file.rs":"2531c245722202173ff762179af2c88af0108156457c848e7d756e348e72bc80","src/read/macho/load_command.rs":"d8c0ebc8f65dafa4fbb1f9a3c944fdeee96fddacfcc863650b94d9a62e8fe37a","src/read/macho/mod.rs":"23b353da3b7e076c68a067776e6a5b346a746116ac42c2c90bafd95ad54a90b3","src/read/macho/relocation.rs":"477d98b507550c29ceceba49308d14e1f086cb01a4ea9af691e995d1d29767a4","src/read/macho/section.rs":"9b21b3a02f509bb09983d116d7f0938cd61d5293e5e31907964611495b8a575e","src/read/macho/segment.rs":"0dee483eb9b6c731e69a9fe0bd9ef84b2a797a8203e5e870e15a6a2165326cc3","src/read/macho/symbol.rs":"3d3ad557c205d834ba305a9eaf3b97b2ed05f1906cd8430ad2fadabf81f14b9f","src/read/mod.rs":"b1224dc6654be52b8c2f6403503ffa662b576d05c0382146a386915d23c894dd","src/read/pe/data_directory.rs":"c08c095a4287c55bf7d7774bbade1d7610d8e82433b0de23af8c4c7ef23d75e3","src/read/pe/export.rs":"07ac5ec7b67d4a09037d8f11eb4426d96515687ee299df2a3d8cd4fd93eb2036","src/read/pe/file.rs":"507d800775adae687ca9ac7dca1a6f42463103af0731a5fe548d4745a9bee686","src/read/pe/import.rs":"ea20dfc0d462ba20e149bf9408f4ec1d0b202abf1f15536f6d091f0c0e756ac8","src/read/pe/mod.rs":"69832b7f4ccd93b59e08bafcbd0d3226c450d7801ad49ab554b38b660c8997fd","src/read/pe/relocation.rs":"0335c06b6d37df4939c8b88044313e88661ee45e5a57d2eec40143f2fe481838","src/read/pe/resource.rs":"0209eb96391bc367633b6d868505cb30947157702b0c85ef6677e5a1283d448f","src/read/pe/rich.rs":"ae9b2fc927bab2661e8d200a10128aebde37d26b50cb9069e9af9eb7bacee591","src/read/pe/section.rs":"bafde5a1584f6ce0456e32756e825c1b2b9dc0ec220ab29e668c2ff700600b87","src/read/read_cache.rs":"e9dbaa385435f5ef6ca5951c26ed1f6793ad3a8f3aee918257a5df6783d4b36d","src/read/read_ref.rs":"14966a1da9951633a7e73aedccfeadbbed4a977a8fb9d415d572250f6ebaf438","src/read/traits.rs":"8d094ba6ac06639bad448c70378d5154195d4ab36b13588b72105a869dfc053e","src/read/util.rs":"7ed8c5c88a52549734df67d2cbd3f0ea1a571728cae62152e57018f3140f9ebc","src/read/wasm.rs":"31c755ce17bba20ba287f53af7b7787bdbb5f8920333412fb11d81239102b423","src/read/xcoff/comdat.rs":"9a0a8a16682a28a54b51d28d382578e4b1e0212a34460eb93b50e8f97e4bf745","src/read/xcoff/file.rs":"17f751578d052cb8f74ee56a4e17b053b06e82e4efbe943907943bc561fb301e","src/read/xcoff/mod.rs":"d0179d3f95797464ca5919563454d1123ce8c35dfc5f40ecd6ca0d002a9824a8","src/read/xcoff/relocation.rs":"84993f477231cd1b8c79c385bc0e892640de89ddae268b845bc82c41999953b4","src/read/xcoff/section.rs":"c5ce72c214398125c7a4bc160fc5a7b27a6d92035dadcc84fd2852b73c75c123","src/read/xcoff/segment.rs":"627dabf3003aa1442bb4a2292cd68e1f572c3b95864a99e50a505b2894ffc804","src/read/xcoff/symbol.rs":"23be12b614937f8ea5de90d097fb8034f82bff798aa09636cd53a0670e39a984","src/write/coff.rs":"1dcb1c6c939af192591d44e135e6d139b82563d8bca07249e93fa3d434b1f6c7","src/write/elf/mod.rs":"1bb945edad539b4f19dda5d46c9b86fa4ea3721eedda77ca2595b5519c3e30f2","src/write/elf/object.rs":"2176f0f640eed5a05be77208301a10667533b495551662186e6c708bd02c9c18","src/write/elf/writer.rs":"84336230a24413a41e342735c153c3421c70707ec92c2df02e7d3536e5d41b55","src/write/macho.rs":"bd6afba576273a162f6d2e9658c8258a664c38d0169864310dffbf1fd7582a43","src/write/mod.rs":"c6c9a54ef807a3bee0c3074be86b0aed90872e1e703f39f2fa5c06bc9ed89767","src/write/pe.rs":"6c72185705a3e067c481f2b9f81c64a84e062e67781928e58fd1150314dad8f9","src/write/string.rs":"0033a6f5137b42988ac41dbaa2efb94a4d74d8b043c9a34c40125e8ee6912420","src/write/util.rs":"7a1083d305e9446767ce2d5f69be2c4c155495cf97e595f8fa53c4e153ccf186","src/write/xcoff.rs":"f192dd34fb442cd53a004e50508f6a787c9e9cd9089a15f63fdf6054eb6bd63f","src/xcoff.rs":"fbd50fc4b61ccfdf218185ea4eafe8cf9793e8d034e7ce243fb54ecae12af5ce","tests/integration.rs":"0fa704827e4da1be38dac2e3820d92f6b20c4d415803b04f67c3516020b1de97","tests/parse_self.rs":"81b44b2dd1de9a5d8c18d9bd8926156e39fb83931837afa8ca344da0d309aeee","tests/read/coff.rs":"d3ec2079f00237640d01cb66eb24c55c85d7a775bb94f9f5c9f77e21cb7a785d","tests/read/mod.rs":"7833826f169ac3be2b4f274e5fc8cf4a51742bd0010803ff0dc20ea5643a7e61","tests/round_trip/bss.rs":"849d69b063fd757fed02219dd81e9d13b82068a2025d2cc5cfd40cf557e31bda","tests/round_trip/coff.rs":"8a25aab7164a5c8aa7a21279f8bae1f4d5f68a8d09c29a4ecd0d0c14564851cc","tests/round_trip/comdat.rs":"a8f729e218fee21e90b9f39b5cfcb4f80bc3ce26d3a297323667e6eb14f882cc","tests/round_trip/common.rs":"ced08ff559ca4d343ceef54bb4c581a3405cd96d6a1628ba43b7aab82070800b","tests/round_trip/elf.rs":"d7351d888ccad246a646ab3bea1afc3d445adeb28c5d3c8f157f7cde3717281c","tests/round_trip/macho.rs":"8cf6297f1b9e31153b15f2e409e68b561f135a233d32b601a47f5fd4dfa014cc","tests/round_trip/mod.rs":"14db36fae698b75fedc4dc832465394350049f54b01b1215022a44ebe920f7e9","tests/round_trip/section_flags.rs":"0e17639e5f86d576f039a294c274ce8db2e2a8add31a2fffc33a6e93a6d2791e","tests/round_trip/tls.rs":"23a49a1036b9173ece82a3080745930e5925e745280ab38866c9d3c29f463e63"},"package":"77ac5bbd07aea88c60a577a1ce218075ffd59208b2d7ca97adf9bfc5aeb21ebe"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/object/Cargo.toml temporalio-1.3.0/vendor/object/Cargo.toml --- temporalio-1.3.0/vendor/object/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,8 +11,9 @@ [package] edition = "2018" +rust-version = "1.60" name = "object" -version = "0.31.1" +version = "0.32.0" exclude = [ "/.github", "/testfiles", @@ -57,25 +58,26 @@ optional = true [dependencies.hashbrown] -version = "0.13.1" +version = "0.14.0" features = ["ahash"] optional = true default-features = false [dependencies.indexmap] -version = "1.6" +version = "2.0" optional = true +default-features = false [dependencies.memchr] version = "2.4.1" default-features = false [dependencies.ruzstd] -version = "0.3.1" +version = "0.4.0" optional = true [dependencies.wasmparser] -version = "0.102.0" +version = "0.110.0" optional = true [features] @@ -90,8 +92,8 @@ cargo-all = [] coff = [] compression = [ - "flate2", - "ruzstd", + "dep:flate2", + "dep:ruzstd", "std", ] default = [ @@ -138,7 +140,7 @@ "all", "unstable", ] -wasm = ["wasmparser"] +wasm = ["dep:wasmparser"] write = [ "write_std", "coff", @@ -148,14 +150,14 @@ "xcoff", ] write_core = [ - "crc32fast", - "indexmap", - "hashbrown", + "dep:crc32fast", + "dep:indexmap", + "dep:hashbrown", ] write_std = [ "write_core", "std", - "indexmap/std", - "crc32fast/std", + "indexmap?/std", + "crc32fast?/std", ] xcoff = [] diff -Nru temporalio-1.3.0/vendor/object/CHANGELOG.md temporalio-1.3.0/vendor/object/CHANGELOG.md --- temporalio-1.3.0/vendor/object/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -2,6 +2,64 @@ -------------------------------------------------------------------------------- +## 0.32.0 + +Released 2023/08/12. + +### Breaking changes + +* Changed `read::elf::Note::name` to exclude all trailing null bytes. + [#549](https://github.com/gimli-rs/object/pull/549) + +* Updated dependencies, and changed some optional dependencies to use the `dep:` + feature syntax. + [#558](https://github.com/gimli-rs/object/pull/558) + [#569](https://github.com/gimli-rs/object/pull/569) + +### Changed + +* The minimum supported rust version for the `read` feature and its dependencies + has changed to 1.60.0. + +* The minimum supported rust version for other features has changed to 1.65.0. + +* Changed many definitions from `static` to `const`. + [#549](https://github.com/gimli-rs/object/pull/549) + +* Fixed Mach-O section alignment padding in `write::Object`. + [#553](https://github.com/gimli-rs/object/pull/553) + +* Changed `read::File` to an enum. + [#564](https://github.com/gimli-rs/object/pull/564) + +### Added + +* Added `elf::ELF_NOTE_GO`, `elf::NT_GO_BUILD_ID`, and `read::elf::Note::name_bytes`. + [#549](https://github.com/gimli-rs/object/pull/549) + +* Added `read::FileKind::CoffImport` and `read::coff::ImportFile`. + [#555](https://github.com/gimli-rs/object/pull/555) + [#556](https://github.com/gimli-rs/object/pull/556) + +* Added `Architecture::Csky` and basic ELF support for C-SKY. + [#561](https://github.com/gimli-rs/object/pull/561) + +* Added `read::elf::ElfSymbol::raw_symbol`. + [#562](https://github.com/gimli-rs/object/pull/562) + +-------------------------------------------------------------------------------- + +## 0.30.4 + +Released 2023/06/05. + +### Changed + +* Fixed Mach-O section alignment padding in `write::Object`. + [#553](https://github.com/gimli-rs/object/pull/553) + +-------------------------------------------------------------------------------- + ## 0.31.1 Released 2023/05/09. diff -Nru temporalio-1.3.0/vendor/object/clippy.toml temporalio-1.3.0/vendor/object/clippy.toml --- temporalio-1.3.0/vendor/object/clippy.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/clippy.toml 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -msrv = "1.52.0" +msrv = "1.60.0" diff -Nru temporalio-1.3.0/vendor/object/README.md temporalio-1.3.0/vendor/object/README.md --- temporalio-1.3.0/vendor/object/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -39,8 +39,8 @@ Changes to MSRV are considered breaking changes. We are conservative about changing the MSRV, but sometimes are required to due to dependencies. The MSRV is: - * 1.52.0 for the `read` feature and its dependencies. - * 1.61.0 for the `write` feature and its dependencies. + * 1.60.0 for the `read` feature and its dependencies. + * 1.65.0 for other features. ## License diff -Nru temporalio-1.3.0/vendor/object/src/common.rs temporalio-1.3.0/vendor/object/src/common.rs --- temporalio-1.3.0/vendor/object/src/common.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/src/common.rs 2023-10-30 19:40:00.000000000 +0000 @@ -10,6 +10,7 @@ Arm, Avr, Bpf, + Csky, I386, X86_64, #[allow(non_camel_case_types)] @@ -43,6 +44,7 @@ Architecture::Arm => Some(AddressSize::U32), Architecture::Avr => Some(AddressSize::U8), Architecture::Bpf => Some(AddressSize::U64), + Architecture::Csky => Some(AddressSize::U32), Architecture::I386 => Some(AddressSize::U32), Architecture::X86_64 => Some(AddressSize::U64), Architecture::X86_64_X32 => Some(AddressSize::U32), diff -Nru temporalio-1.3.0/vendor/object/src/elf.rs temporalio-1.3.0/vendor/object/src/elf.rs --- temporalio-1.3.0/vendor/object/src/elf.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/src/elf.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1308,11 +1308,11 @@ pub const PF_MASKPROC: u32 = 0xf000_0000; /// Note name for core files. -pub static ELF_NOTE_CORE: &[u8] = b"CORE"; +pub const ELF_NOTE_CORE: &[u8] = b"CORE"; /// Note name for linux core files. /// /// Notes in linux core files may also use `ELF_NOTE_CORE`. -pub static ELF_NOTE_LINUX: &[u8] = b"LINUX"; +pub const ELF_NOTE_LINUX: &[u8] = b"LINUX"; // Values for `NoteHeader*::n_type` in core files. // @@ -1826,14 +1826,18 @@ } /// Solaris entries in the note section have this name. -pub static ELF_NOTE_SOLARIS: &[u8] = b"SUNW Solaris"; +pub const ELF_NOTE_SOLARIS: &[u8] = b"SUNW Solaris"; // Values for `n_type` when the name is `ELF_NOTE_SOLARIS`. /// Desired pagesize for the binary. pub const NT_SOLARIS_PAGESIZE_HINT: u32 = 1; /// GNU entries in the note section have this name. -pub static ELF_NOTE_GNU: &[u8] = b"GNU"; +pub const ELF_NOTE_GNU: &[u8] = b"GNU"; + +/// Go entries in the note section have this name. +// See https://go-review.googlesource.com/9520 and https://go-review.googlesource.com/10704. +pub const ELF_NOTE_GO: &[u8] = b"Go"; // Note types for `ELF_NOTE_GNU`. @@ -1870,6 +1874,12 @@ /// The descriptor consists of any nonzero number of bytes. pub const NT_GNU_BUILD_ID: u32 = 3; +/// Build ID bits as generated by Go's gc compiler. +/// +/// The descriptor consists of any nonzero number of bytes. +// See https://go-review.googlesource.com/10707. +pub const NT_GO_BUILD_ID: u32 = 4; + /// Version note generated by GNU gold containing a version string. pub const NT_GNU_GOLD_VERSION: u32 = 4; diff -Nru temporalio-1.3.0/vendor/object/src/pe.rs temporalio-1.3.0/vendor/object/src/pe.rs --- temporalio-1.3.0/vendor/object/src/pe.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/src/pe.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2873,10 +2873,14 @@ pub name_type: U16, } +pub const IMPORT_OBJECT_TYPE_MASK: u16 = 0b11; +pub const IMPORT_OBJECT_TYPE_SHIFT: u16 = 0; pub const IMPORT_OBJECT_CODE: u16 = 0; pub const IMPORT_OBJECT_DATA: u16 = 1; pub const IMPORT_OBJECT_CONST: u16 = 2; +pub const IMPORT_OBJECT_NAME_MASK: u16 = 0b111; +pub const IMPORT_OBJECT_NAME_SHIFT: u16 = 2; /// Import by ordinal pub const IMPORT_OBJECT_ORDINAL: u16 = 0; /// Import name == public symbol name. diff -Nru temporalio-1.3.0/vendor/object/src/read/any.rs temporalio-1.3.0/vendor/object/src/read/any.rs --- temporalio-1.3.0/vendor/object/src/read/any.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/src/read/any.rs 2023-10-30 19:40:00.000000000 +0000 @@ -208,12 +208,9 @@ /// /// Most functionality is provided by the `Object` trait implementation. #[derive(Debug)] -pub struct File<'data, R: ReadRef<'data> = &'data [u8]> { - inner: FileInternal<'data, R>, -} - -#[derive(Debug)] -enum FileInternal<'data, R: ReadRef<'data>> { +#[non_exhaustive] +#[allow(missing_docs)] +pub enum File<'data, R: ReadRef<'data> = &'data [u8]> { #[cfg(feature = "coff")] Coff(coff::CoffFile<'data, R>), #[cfg(feature = "coff")] @@ -241,33 +238,32 @@ impl<'data, R: ReadRef<'data>> File<'data, R> { /// Parse the raw file data. pub fn parse(data: R) -> Result { - let inner = match FileKind::parse(data)? { + Ok(match FileKind::parse(data)? { #[cfg(feature = "elf")] - FileKind::Elf32 => FileInternal::Elf32(elf::ElfFile32::parse(data)?), + FileKind::Elf32 => File::Elf32(elf::ElfFile32::parse(data)?), #[cfg(feature = "elf")] - FileKind::Elf64 => FileInternal::Elf64(elf::ElfFile64::parse(data)?), + FileKind::Elf64 => File::Elf64(elf::ElfFile64::parse(data)?), #[cfg(feature = "macho")] - FileKind::MachO32 => FileInternal::MachO32(macho::MachOFile32::parse(data)?), + FileKind::MachO32 => File::MachO32(macho::MachOFile32::parse(data)?), #[cfg(feature = "macho")] - FileKind::MachO64 => FileInternal::MachO64(macho::MachOFile64::parse(data)?), + FileKind::MachO64 => File::MachO64(macho::MachOFile64::parse(data)?), #[cfg(feature = "wasm")] - FileKind::Wasm => FileInternal::Wasm(wasm::WasmFile::parse(data)?), + FileKind::Wasm => File::Wasm(wasm::WasmFile::parse(data)?), #[cfg(feature = "pe")] - FileKind::Pe32 => FileInternal::Pe32(pe::PeFile32::parse(data)?), + FileKind::Pe32 => File::Pe32(pe::PeFile32::parse(data)?), #[cfg(feature = "pe")] - FileKind::Pe64 => FileInternal::Pe64(pe::PeFile64::parse(data)?), + FileKind::Pe64 => File::Pe64(pe::PeFile64::parse(data)?), #[cfg(feature = "coff")] - FileKind::Coff => FileInternal::Coff(coff::CoffFile::parse(data)?), + FileKind::Coff => File::Coff(coff::CoffFile::parse(data)?), #[cfg(feature = "coff")] - FileKind::CoffBig => FileInternal::CoffBig(coff::CoffBigFile::parse(data)?), + FileKind::CoffBig => File::CoffBig(coff::CoffBigFile::parse(data)?), #[cfg(feature = "xcoff")] - FileKind::Xcoff32 => FileInternal::Xcoff32(xcoff::XcoffFile32::parse(data)?), + FileKind::Xcoff32 => File::Xcoff32(xcoff::XcoffFile32::parse(data)?), #[cfg(feature = "xcoff")] - FileKind::Xcoff64 => FileInternal::Xcoff64(xcoff::XcoffFile64::parse(data)?), + FileKind::Xcoff64 => File::Xcoff64(xcoff::XcoffFile64::parse(data)?), #[allow(unreachable_patterns)] _ => return Err(Error("Unsupported file format")), - }; - Ok(File { inner }) + }) } /// Parse a Mach-O image from the dyld shared cache. @@ -275,33 +271,32 @@ pub fn parse_dyld_cache_image<'cache, E: Endian>( image: &macho::DyldCacheImage<'data, 'cache, E, R>, ) -> Result { - let inner = match image.cache.architecture().address_size() { + Ok(match image.cache.architecture().address_size() { Some(AddressSize::U64) => { - FileInternal::MachO64(macho::MachOFile64::parse_dyld_cache_image(image)?) + File::MachO64(macho::MachOFile64::parse_dyld_cache_image(image)?) } Some(AddressSize::U32) => { - FileInternal::MachO32(macho::MachOFile32::parse_dyld_cache_image(image)?) + File::MachO32(macho::MachOFile32::parse_dyld_cache_image(image)?) } _ => return Err(Error("Unsupported file format")), - }; - Ok(File { inner }) + }) } /// Return the file format. pub fn format(&self) -> BinaryFormat { - match self.inner { + match self { #[cfg(feature = "coff")] - FileInternal::Coff(_) | FileInternal::CoffBig(_) => BinaryFormat::Coff, + File::Coff(_) | File::CoffBig(_) => BinaryFormat::Coff, #[cfg(feature = "elf")] - FileInternal::Elf32(_) | FileInternal::Elf64(_) => BinaryFormat::Elf, + File::Elf32(_) | File::Elf64(_) => BinaryFormat::Elf, #[cfg(feature = "macho")] - FileInternal::MachO32(_) | FileInternal::MachO64(_) => BinaryFormat::MachO, + File::MachO32(_) | File::MachO64(_) => BinaryFormat::MachO, #[cfg(feature = "pe")] - FileInternal::Pe32(_) | FileInternal::Pe64(_) => BinaryFormat::Pe, + File::Pe32(_) | File::Pe64(_) => BinaryFormat::Pe, #[cfg(feature = "wasm")] - FileInternal::Wasm(_) => BinaryFormat::Wasm, + File::Wasm(_) => BinaryFormat::Wasm, #[cfg(feature = "xcoff")] - FileInternal::Xcoff32(_) | FileInternal::Xcoff64(_) => BinaryFormat::Xcoff, + File::Xcoff32(_) | File::Xcoff64(_) => BinaryFormat::Xcoff, } } } @@ -325,56 +320,52 @@ type DynamicRelocationIterator = DynamicRelocationIterator<'data, 'file, R>; fn architecture(&self) -> Architecture { - with_inner!(self.inner, FileInternal, |x| x.architecture()) + with_inner!(self, File, |x| x.architecture()) } fn is_little_endian(&self) -> bool { - with_inner!(self.inner, FileInternal, |x| x.is_little_endian()) + with_inner!(self, File, |x| x.is_little_endian()) } fn is_64(&self) -> bool { - with_inner!(self.inner, FileInternal, |x| x.is_64()) + with_inner!(self, File, |x| x.is_64()) } fn kind(&self) -> ObjectKind { - with_inner!(self.inner, FileInternal, |x| x.kind()) + with_inner!(self, File, |x| x.kind()) } fn segments(&'file self) -> SegmentIterator<'data, 'file, R> { SegmentIterator { - inner: map_inner!(self.inner, FileInternal, SegmentIteratorInternal, |x| x - .segments()), + inner: map_inner!(self, File, SegmentIteratorInternal, |x| x.segments()), } } fn section_by_name_bytes(&'file self, section_name: &[u8]) -> Option> { - map_inner_option!(self.inner, FileInternal, SectionInternal, |x| x + map_inner_option!(self, File, SectionInternal, |x| x .section_by_name_bytes(section_name)) .map(|inner| Section { inner }) } fn section_by_index(&'file self, index: SectionIndex) -> Result> { - map_inner_option!(self.inner, FileInternal, SectionInternal, |x| x - .section_by_index(index)) - .map(|inner| Section { inner }) + map_inner_option!(self, File, SectionInternal, |x| x.section_by_index(index)) + .map(|inner| Section { inner }) } fn sections(&'file self) -> SectionIterator<'data, 'file, R> { SectionIterator { - inner: map_inner!(self.inner, FileInternal, SectionIteratorInternal, |x| x - .sections()), + inner: map_inner!(self, File, SectionIteratorInternal, |x| x.sections()), } } fn comdats(&'file self) -> ComdatIterator<'data, 'file, R> { ComdatIterator { - inner: map_inner!(self.inner, FileInternal, ComdatIteratorInternal, |x| x - .comdats()), + inner: map_inner!(self, File, ComdatIteratorInternal, |x| x.comdats()), } } fn symbol_by_index(&'file self, index: SymbolIndex) -> Result> { - map_inner_option!(self.inner, FileInternal, SymbolInternal, |x| x + map_inner_option!(self, File, SymbolInternal, |x| x .symbol_by_index(index) .map(|x| (x, PhantomData))) .map(|inner| Symbol { inner }) @@ -382,7 +373,7 @@ fn symbols(&'file self) -> SymbolIterator<'data, 'file, R> { SymbolIterator { - inner: map_inner!(self.inner, FileInternal, SymbolIteratorInternal, |x| ( + inner: map_inner!(self, File, SymbolIteratorInternal, |x| ( x.symbols(), PhantomData )), @@ -390,7 +381,7 @@ } fn symbol_table(&'file self) -> Option> { - map_inner_option!(self.inner, FileInternal, SymbolTableInternal, |x| x + map_inner_option!(self, File, SymbolTableInternal, |x| x .symbol_table() .map(|x| (x, PhantomData))) .map(|inner| SymbolTable { inner }) @@ -398,7 +389,7 @@ fn dynamic_symbols(&'file self) -> SymbolIterator<'data, 'file, R> { SymbolIterator { - inner: map_inner!(self.inner, FileInternal, SymbolIteratorInternal, |x| ( + inner: map_inner!(self, File, SymbolIteratorInternal, |x| ( x.dynamic_symbols(), PhantomData )), @@ -406,7 +397,7 @@ } fn dynamic_symbol_table(&'file self) -> Option> { - map_inner_option!(self.inner, FileInternal, SymbolTableInternal, |x| x + map_inner_option!(self, File, SymbolTableInternal, |x| x .dynamic_symbol_table() .map(|x| (x, PhantomData))) .map(|inner| SymbolTable { inner }) @@ -414,11 +405,11 @@ #[cfg(feature = "elf")] fn dynamic_relocations(&'file self) -> Option> { - let inner = match self.inner { - FileInternal::Elf32(ref elf) => { + let inner = match self { + File::Elf32(ref elf) => { DynamicRelocationIteratorInternal::Elf32(elf.dynamic_relocations()?) } - FileInternal::Elf64(ref elf) => { + File::Elf64(ref elf) => { DynamicRelocationIteratorInternal::Elf64(elf.dynamic_relocations()?) } #[allow(unreachable_patterns)] @@ -433,60 +424,60 @@ } fn symbol_map(&self) -> SymbolMap> { - with_inner!(self.inner, FileInternal, |x| x.symbol_map()) + with_inner!(self, File, |x| x.symbol_map()) } fn object_map(&self) -> ObjectMap<'data> { - with_inner!(self.inner, FileInternal, |x| x.object_map()) + with_inner!(self, File, |x| x.object_map()) } fn imports(&self) -> Result>> { - with_inner!(self.inner, FileInternal, |x| x.imports()) + with_inner!(self, File, |x| x.imports()) } fn exports(&self) -> Result>> { - with_inner!(self.inner, FileInternal, |x| x.exports()) + with_inner!(self, File, |x| x.exports()) } fn has_debug_symbols(&self) -> bool { - with_inner!(self.inner, FileInternal, |x| x.has_debug_symbols()) + with_inner!(self, File, |x| x.has_debug_symbols()) } #[inline] fn mach_uuid(&self) -> Result> { - with_inner!(self.inner, FileInternal, |x| x.mach_uuid()) + with_inner!(self, File, |x| x.mach_uuid()) } #[inline] fn build_id(&self) -> Result> { - with_inner!(self.inner, FileInternal, |x| x.build_id()) + with_inner!(self, File, |x| x.build_id()) } #[inline] fn gnu_debuglink(&self) -> Result> { - with_inner!(self.inner, FileInternal, |x| x.gnu_debuglink()) + with_inner!(self, File, |x| x.gnu_debuglink()) } #[inline] fn gnu_debugaltlink(&self) -> Result> { - with_inner!(self.inner, FileInternal, |x| x.gnu_debugaltlink()) + with_inner!(self, File, |x| x.gnu_debugaltlink()) } #[inline] fn pdb_info(&self) -> Result>> { - with_inner!(self.inner, FileInternal, |x| x.pdb_info()) + with_inner!(self, File, |x| x.pdb_info()) } fn relative_address_base(&self) -> u64 { - with_inner!(self.inner, FileInternal, |x| x.relative_address_base()) + with_inner!(self, File, |x| x.relative_address_base()) } fn entry(&self) -> u64 { - with_inner!(self.inner, FileInternal, |x| x.entry()) + with_inner!(self, File, |x| x.entry()) } fn flags(&self) -> FileFlags { - with_inner!(self.inner, FileInternal, |x| x.flags()) + with_inner!(self, File, |x| x.flags()) } } diff -Nru temporalio-1.3.0/vendor/object/src/read/coff/import.rs temporalio-1.3.0/vendor/object/src/read/coff/import.rs --- temporalio-1.3.0/vendor/object/src/read/coff/import.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/object/src/read/coff/import.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,209 @@ +//! Support for reading short import files. +//! +//! These are used by some Windows linkers as a more compact way to describe +//! dynamically imported symbols. + +use crate::read::{Architecture, Error, ReadError, ReadRef, Result}; +use crate::{pe, ByteString, Bytes, LittleEndian as LE}; + +/// A Windows short form description of a symbol to import. +/// +/// Used in Windows import libraries to provide a mapping from +/// a symbol name to a DLL export. This is not an object file. +#[derive(Debug, Clone)] +pub struct ImportFile<'data> { + header: &'data pe::ImportObjectHeader, + kind: ImportType, + dll: ByteString<'data>, + symbol: ByteString<'data>, + import: Option>, +} + +impl<'data> ImportFile<'data> { + /// Parse it. + pub fn parse>(data: R) -> Result { + let mut offset = 0; + let header = pe::ImportObjectHeader::parse(data, &mut offset)?; + let data = header.parse_data(data, &mut offset)?; + + // Unmangles a name by removing a `?`, `@` or `_` prefix. + fn strip_prefix(s: &[u8]) -> &[u8] { + match s.split_first() { + Some((b, rest)) if [b'?', b'@', b'_'].contains(b) => rest, + _ => s, + } + } + Ok(Self { + header, + dll: data.dll, + symbol: data.symbol, + kind: match header.import_type() { + pe::IMPORT_OBJECT_CODE => ImportType::Code, + pe::IMPORT_OBJECT_DATA => ImportType::Data, + pe::IMPORT_OBJECT_CONST => ImportType::Const, + _ => return Err(Error("Invalid COFF import library import type")), + }, + import: match header.name_type() { + pe::IMPORT_OBJECT_ORDINAL => None, + pe::IMPORT_OBJECT_NAME => Some(data.symbol()), + pe::IMPORT_OBJECT_NAME_NO_PREFIX => Some(strip_prefix(data.symbol())), + pe::IMPORT_OBJECT_NAME_UNDECORATE => Some( + strip_prefix(data.symbol()) + .split(|&b| b == b'@') + .next() + .unwrap(), + ), + pe::IMPORT_OBJECT_NAME_EXPORTAS => data.export(), + _ => return Err(Error("Unknown COFF import library name type")), + } + .map(ByteString), + }) + } + + /// Get the machine type. + pub fn architecture(&self) -> Architecture { + match self.header.machine.get(LE) { + pe::IMAGE_FILE_MACHINE_ARMNT => Architecture::Arm, + pe::IMAGE_FILE_MACHINE_ARM64 => Architecture::Aarch64, + pe::IMAGE_FILE_MACHINE_I386 => Architecture::I386, + pe::IMAGE_FILE_MACHINE_AMD64 => Architecture::X86_64, + _ => Architecture::Unknown, + } + } + + /// The public symbol name. + pub fn symbol(&self) -> &'data [u8] { + self.symbol.0 + } + + /// The name of the DLL to import the symbol from. + pub fn dll(&self) -> &'data [u8] { + self.dll.0 + } + + /// The name exported from the DLL. + pub fn import(&self) -> ImportName<'data> { + match self.import { + Some(name) => ImportName::Name(name.0), + None => ImportName::Ordinal(self.header.ordinal_or_hint.get(LE)), + } + } + + /// The type of import. Usually either a function or data. + pub fn import_type(&self) -> ImportType { + self.kind + } +} + +/// The name or ordinal to import from a DLL. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum ImportName<'data> { + /// Import by ordinal. Ordinarily this is a 1-based index. + Ordinal(u16), + /// Import by name. + Name(&'data [u8]), +} + +/// The kind of import symbol. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub enum ImportType { + /// An executable code symbol. + Code, + /// A data symbol. + Data, + /// A constant value. + Const, +} + +impl pe::ImportObjectHeader { + /// Read the short import header. + /// + /// Also checks that the signature and version are valid. + /// Directly following this header will be the string data. + pub fn parse<'data, R: ReadRef<'data>>(data: R, offset: &mut u64) -> Result<&'data Self> { + let header = data + .read::(offset) + .read_error("Invalid COFF import library header size")?; + if header.sig1.get(LE) != 0 || header.sig2.get(LE) != pe::IMPORT_OBJECT_HDR_SIG2 { + Err(Error("Invalid COFF import library header")) + } else if header.version.get(LE) != 0 { + Err(Error("Unknown COFF import library header version")) + } else { + Ok(header) + } + } + + /// Parse the data following the header. + pub fn parse_data<'data, R: ReadRef<'data>>( + &self, + data: R, + offset: &mut u64, + ) -> Result> { + let mut data = Bytes( + data.read_bytes(offset, u64::from(self.size_of_data.get(LE))) + .read_error("Invalid COFF import library data size")?, + ); + let symbol = data + .read_string() + .map(ByteString) + .read_error("Could not read COFF import library symbol name")?; + let dll = data + .read_string() + .map(ByteString) + .read_error("Could not read COFF import library DLL name")?; + let export = if self.name_type() == pe::IMPORT_OBJECT_NAME_EXPORTAS { + data.read_string() + .map(ByteString) + .map(Some) + .read_error("Could not read COFF import library export name")? + } else { + None + }; + Ok(ImportObjectData { + symbol, + dll, + export, + }) + } + + /// The type of import. + /// + /// This is one of the `IMPORT_OBJECT_*` constants. + pub fn import_type(&self) -> u16 { + self.name_type.get(LE) & pe::IMPORT_OBJECT_TYPE_MASK + } + + /// The type of import name. + /// + /// This is one of the `IMPORT_OBJECT_*` constants. + pub fn name_type(&self) -> u16 { + (self.name_type.get(LE) >> pe::IMPORT_OBJECT_NAME_SHIFT) & pe::IMPORT_OBJECT_NAME_MASK + } +} + +/// The data following `ImportObjectHeader`. +#[derive(Debug, Clone)] +pub struct ImportObjectData<'data> { + symbol: ByteString<'data>, + dll: ByteString<'data>, + export: Option>, +} + +impl<'data> ImportObjectData<'data> { + /// The public symbol name. + pub fn symbol(&self) -> &'data [u8] { + self.symbol.0 + } + + /// The name of the DLL to import the symbol from. + pub fn dll(&self) -> &'data [u8] { + self.dll.0 + } + + /// The name exported from the DLL. + /// + /// This is only set if the name is not derived from the symbol name. + pub fn export(&self) -> Option<&'data [u8]> { + self.export.map(|export| export.0) + } +} diff -Nru temporalio-1.3.0/vendor/object/src/read/coff/mod.rs temporalio-1.3.0/vendor/object/src/read/coff/mod.rs --- temporalio-1.3.0/vendor/object/src/read/coff/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/src/read/coff/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -16,3 +16,6 @@ mod comdat; pub use comdat::*; + +mod import; +pub use import::*; diff -Nru temporalio-1.3.0/vendor/object/src/read/elf/file.rs temporalio-1.3.0/vendor/object/src/read/elf/file.rs --- temporalio-1.3.0/vendor/object/src/read/elf/file.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/src/read/elf/file.rs 2023-10-30 19:40:00.000000000 +0000 @@ -161,6 +161,7 @@ (elf::EM_ARM, _) => Architecture::Arm, (elf::EM_AVR, _) => Architecture::Avr, (elf::EM_BPF, _) => Architecture::Bpf, + (elf::EM_CSKY, _) => Architecture::Csky, (elf::EM_386, _) => Architecture::I386, (elf::EM_X86_64, false) => Architecture::X86_64_X32, (elf::EM_X86_64, true) => Architecture::X86_64, diff -Nru temporalio-1.3.0/vendor/object/src/read/elf/note.rs temporalio-1.3.0/vendor/object/src/read/elf/note.rs --- temporalio-1.3.0/vendor/object/src/read/elf/note.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/src/read/elf/note.rs 2023-10-30 19:40:00.000000000 +0000 @@ -113,21 +113,24 @@ self.header.n_descsz(endian) } - /// Return the bytes for the name field following the `NoteHeader`, - /// excluding any null terminator. + /// Return the bytes for the name field following the `NoteHeader`. /// - /// This field is usually a string including a null terminator + /// This field is usually a string including one or more trailing null bytes /// (but it is not required to be). /// - /// The length of this field (including any null terminator) is given by - /// `n_namesz`. + /// The length of this field is given by `n_namesz`. + pub fn name_bytes(&self) -> &'data [u8] { + self.name + } + + /// Return the bytes for the name field following the `NoteHeader`, + /// excluding all trailing null bytes. pub fn name(&self) -> &'data [u8] { - if let Some((last, name)) = self.name.split_last() { - if *last == 0 { - return name; - } + let mut name = self.name; + while let [rest @ .., 0] = name { + name = rest; } - self.name + name } /// Return the bytes for the desc field following the `NoteHeader`. diff -Nru temporalio-1.3.0/vendor/object/src/read/elf/relocation.rs temporalio-1.3.0/vendor/object/src/read/elf/relocation.rs --- temporalio-1.3.0/vendor/object/src/read/elf/relocation.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/src/read/elf/relocation.rs 2023-10-30 19:40:00.000000000 +0000 @@ -276,6 +276,11 @@ elf::R_BPF_64_32 => (RelocationKind::Absolute, 32), r_type => (RelocationKind::Elf(r_type), 0), }, + elf::EM_CSKY => match reloc.r_type(endian, false) { + elf::R_CKCORE_ADDR32 => (RelocationKind::Absolute, 32), + elf::R_CKCORE_PCREL32 => (RelocationKind::Relative, 32), + r_type => (RelocationKind::Elf(r_type), 0), + }, elf::EM_386 => match reloc.r_type(endian, false) { elf::R_386_32 => (RelocationKind::Absolute, 32), elf::R_386_PC32 => (RelocationKind::Relative, 32), diff -Nru temporalio-1.3.0/vendor/object/src/read/elf/symbol.rs temporalio-1.3.0/vendor/object/src/read/elf/symbol.rs --- temporalio-1.3.0/vendor/object/src/read/elf/symbol.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/src/read/elf/symbol.rs 2023-10-30 19:40:00.000000000 +0000 @@ -309,6 +309,14 @@ pub(super) symbol: &'data Elf::Sym, } +impl<'data, 'file, Elf: FileHeader, R: ReadRef<'data>> ElfSymbol<'data, 'file, Elf, R> { + /// Return a reference to the raw symbol structure. + #[inline] + pub fn raw_symbol(&self) -> &'data Elf::Sym { + self.symbol + } +} + impl<'data, 'file, Elf: FileHeader, R: ReadRef<'data>> read::private::Sealed for ElfSymbol<'data, 'file, Elf, R> { diff -Nru temporalio-1.3.0/vendor/object/src/read/mod.rs temporalio-1.3.0/vendor/object/src/read/mod.rs --- temporalio-1.3.0/vendor/object/src/read/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/src/read/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -156,6 +156,9 @@ /// This supports a larger number of sections. #[cfg(feature = "coff")] CoffBig, + /// A Windows short import file. + #[cfg(feature = "coff")] + CoffImport, /// A dyld cache file containing Mach-O images. #[cfg(feature = "macho")] DyldCache, @@ -232,6 +235,7 @@ [0x00, b'a', b's', b'm', ..] => FileKind::Wasm, #[cfg(feature = "pe")] [b'M', b'Z', ..] if offset == 0 => { + // offset == 0 restriction is because optional_header_magic only looks at offset 0 match pe::optional_header_magic(data) { Ok(crate::pe::IMAGE_NT_OPTIONAL_HDR32_MAGIC) => { FileKind::Pe32 @@ -253,16 +257,19 @@ // COFF x86-64 | [0x64, 0x86, ..] => FileKind::Coff, #[cfg(feature = "coff")] + [0x00, 0x00, 0xff, 0xff, 0x00, 0x00, ..] => FileKind::CoffImport, + #[cfg(feature = "coff")] [0x00, 0x00, 0xff, 0xff, 0x02, 0x00, ..] if offset == 0 => { + // offset == 0 restriction is because anon_object_class_id only looks at offset 0 match coff::anon_object_class_id(data) { Ok(crate::pe::ANON_OBJECT_HEADER_BIGOBJ_CLASS_ID) => FileKind::CoffBig, _ => return Err(Error("Unknown anon object file")), } } #[cfg(feature = "xcoff")] - [0x01, 0xDF, ..] => FileKind::Xcoff32, + [0x01, 0xdf, ..] => FileKind::Xcoff32, #[cfg(feature = "xcoff")] - [0x01, 0xF7, ..] => FileKind::Xcoff64, + [0x01, 0xf7, ..] => FileKind::Xcoff64, _ => return Err(Error("Unknown file magic")), }; Ok(kind) diff -Nru temporalio-1.3.0/vendor/object/src/write/elf/object.rs temporalio-1.3.0/vendor/object/src/write/elf/object.rs --- temporalio-1.3.0/vendor/object/src/write/elf/object.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/src/write/elf/object.rs 2023-10-30 19:40:00.000000000 +0000 @@ -126,6 +126,7 @@ Architecture::Arm => false, Architecture::Avr => true, Architecture::Bpf => false, + Architecture::Csky => true, Architecture::I386 => false, Architecture::X86_64 => true, Architecture::X86_64_X32 => true, @@ -329,6 +330,7 @@ Architecture::Arm => elf::EM_ARM, Architecture::Avr => elf::EM_AVR, Architecture::Bpf => elf::EM_BPF, + Architecture::Csky => elf::EM_CSKY, Architecture::I386 => elf::EM_386, Architecture::X86_64 => elf::EM_X86_64, Architecture::X86_64_X32 => elf::EM_X86_64, @@ -546,6 +548,16 @@ (RelocationKind::Elf(x), _, _) => x, _ => { return Err(Error(format!("unimplemented relocation {:?}", reloc))); + } + }, + Architecture::Csky => match (reloc.kind, reloc.encoding, reloc.size) { + (RelocationKind::Absolute, _, 32) => elf::R_CKCORE_ADDR32, + (RelocationKind::Relative, RelocationEncoding::Generic, 32) => { + elf::R_CKCORE_PCREL32 + } + (RelocationKind::Elf(x), _, _) => x, + _ => { + return Err(Error(format!("unimplemented relocation {:?}", reloc))); } }, Architecture::I386 => match (reloc.kind, reloc.size) { diff -Nru temporalio-1.3.0/vendor/object/src/write/macho.rs temporalio-1.3.0/vendor/object/src/write/macho.rs --- temporalio-1.3.0/vendor/object/src/write/macho.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/src/write/macho.rs 2023-10-30 19:40:00.000000000 +0000 @@ -303,39 +303,29 @@ let sizeofcmds = offset - command_offset; // Calculate size of section data. - let mut segment_file_offset = None; + // Section data can immediately follow the load commands without any alignment padding. + let segment_file_offset = offset; let mut section_offsets = vec![SectionOffsets::default(); self.sections.len()]; let mut address = 0; for (index, section) in self.sections.iter().enumerate() { section_offsets[index].index = 1 + index; if !section.is_bss() { - let len = section.data.len(); - if len != 0 { - offset = align(offset, section.align as usize); - section_offsets[index].offset = offset; - if segment_file_offset.is_none() { - segment_file_offset = Some(offset); - } - offset += len; - } else { - section_offsets[index].offset = offset; - } address = align_u64(address, section.align); section_offsets[index].address = address; + section_offsets[index].offset = segment_file_offset + address as usize; address += section.size; } } + let segment_file_size = address as usize; + offset += address as usize; for (index, section) in self.sections.iter().enumerate() { - if section.kind.is_bss() { - assert!(section.data.is_empty()); + if section.is_bss() { + debug_assert!(section.data.is_empty()); address = align_u64(address, section.align); section_offsets[index].address = address; address += section.size; } } - let segment_file_offset = segment_file_offset.unwrap_or(offset); - let segment_file_size = offset - segment_file_offset; - debug_assert!(segment_file_size as u64 <= address); // Count symbols and add symbol strings to strtab. let mut strtab = StringTable::default(); @@ -537,10 +527,8 @@ // Write section data. for (index, section) in self.sections.iter().enumerate() { - let len = section.data.len(); - if len != 0 { - write_align(buffer, section.align as usize); - debug_assert_eq!(section_offsets[index].offset, buffer.len()); + if !section.is_bss() { + buffer.resize(section_offsets[index].offset); buffer.write_bytes(§ion.data); } } diff -Nru temporalio-1.3.0/vendor/object/tests/round_trip/macho.rs temporalio-1.3.0/vendor/object/tests/round_trip/macho.rs --- temporalio-1.3.0/vendor/object/tests/round_trip/macho.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/tests/round_trip/macho.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,9 @@ use object::read::macho::MachHeader; -use object::{macho, write, Architecture, BinaryFormat, Endianness}; +use object::read::{Object, ObjectSection}; +use object::{macho, read, write, Architecture, BinaryFormat, Endianness}; -#[test] // Test that segment size is valid when the first section needs alignment. +#[test] fn issue_286_segment_file_size() { let mut object = write::Object::new( BinaryFormat::MachO, @@ -22,3 +23,41 @@ assert_eq!(segment.vmsize.get(endian), 30); assert_eq!(segment.filesize.get(endian), 30); } + +// We were emitting section file alignment padding that didn't match the address alignment padding. +#[test] +fn issue_552_section_file_alignment() { + let mut object = write::Object::new( + BinaryFormat::MachO, + Architecture::X86_64, + Endianness::Little, + ); + + // Odd number of sections ensures that the starting file offset is not a multiple of 32. + // Length of 32 ensures that the file offset of the end of this section is still not a + // multiple of 32. + let section = object.add_section(vec![], vec![], object::SectionKind::ReadOnlyDataWithRel); + object.append_section_data(section, &vec![0u8; 32], 1); + + // Address is already aligned correctly, so there must not any padding, + // even though file offset is not aligned. + let section = object.add_section(vec![], vec![], object::SectionKind::ReadOnlyData); + object.append_section_data(section, &vec![0u8; 1], 32); + + let section = object.add_section(vec![], vec![], object::SectionKind::Text); + object.append_section_data(section, &vec![0u8; 1], 1); + + let bytes = &*object.write().unwrap(); + let object = read::File::parse(bytes).unwrap(); + let mut sections = object.sections(); + + let section = sections.next().unwrap(); + assert_eq!(section.file_range(), Some((368, 32))); + assert_eq!(section.address(), 0); + assert_eq!(section.size(), 32); + + let section = sections.next().unwrap(); + assert_eq!(section.file_range(), Some((400, 1))); + assert_eq!(section.address(), 32); + assert_eq!(section.size(), 1); +} diff -Nru temporalio-1.3.0/vendor/object/tests/round_trip/mod.rs temporalio-1.3.0/vendor/object/tests/round_trip/mod.rs --- temporalio-1.3.0/vendor/object/tests/round_trip/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/object/tests/round_trip/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -235,6 +235,7 @@ (Architecture::Arm, Endianness::Little), (Architecture::Avr, Endianness::Little), (Architecture::Bpf, Endianness::Little), + (Architecture::Csky, Endianness::Little), (Architecture::I386, Endianness::Little), (Architecture::X86_64, Endianness::Little), (Architecture::X86_64_X32, Endianness::Little), diff -Nru temporalio-1.3.0/vendor/opentelemetry/.cargo-checksum.json temporalio-1.3.0/vendor/opentelemetry/.cargo-checksum.json --- temporalio-1.3.0/vendor/opentelemetry/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"5c0db3e3f06bd27c8b3f7490a7947827abd66272929d177de8e04abd547df1a7","CODEOWNERS":"abc35dda6643aed84b16084b9dccfee77929c299d60d21b590bd5c8c3b54e508","Cargo.toml":"5b36042eb54b1e1d969fcd36c536d2c2f35da0c4058e60df8154601d6d950d2e","LICENSE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","README.md":"730f4a6048d182bd39df06e330424d58c5fc0c78d11963a57d68d1a4424efc6a","src/lib.rs":"8302b00dead26166c4e05c97dd5cddf907fbc072c594ec4d38e9606aa22f0277"},"package":"69d6c3d7288a106c0a363e4b0e8d308058d56902adefb16f4936f417ffef086e"} \ No newline at end of file +{"files":{"CHANGELOG.md":"758c9a1f9c4a16d929cd704cff982c02070c5eee66707367fc951a9c72e83d3a","CODEOWNERS":"abc35dda6643aed84b16084b9dccfee77929c299d60d21b590bd5c8c3b54e508","Cargo.toml":"905654a22ba13b1e98dd01c1c0e8eb6c7510f8ba3ca6aa5970ac7eb0bfc66258","LICENSE":"208a3f5bae3355bd4f3f45626d1ea4518b253d618ee2896983436075c4375098","README.md":"b695dd1ad761813cdef061c28683c739b7b7f0f813d967c2bc4048c4835139fa","src/lib.rs":"815dec295d1e1316b548800a12074532addb7cadfb32569eef2e2d52a3eefc94"},"package":"9591d937bc0e6d2feb6f71a559540ab300ea49955229c347a517a28d27784c54"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/opentelemetry/Cargo.toml temporalio-1.3.0/vendor/opentelemetry/Cargo.toml --- temporalio-1.3.0/vendor/opentelemetry/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,9 +11,9 @@ [package] edition = "2021" -rust-version = "1.56" +rust-version = "1.60" name = "opentelemetry" -version = "0.18.0" +version = "0.20.0" description = "A metrics collection and distributed tracing framework" homepage = "https://github.com/open-telemetry/opentelemetry-rust" readme = "README.md" @@ -32,6 +32,7 @@ ] license = "Apache-2.0" repository = "https://github.com/open-telemetry/opentelemetry-rust" +resolver = "1" [package.metadata.docs.rs] all-features = true @@ -41,13 +42,19 @@ ] [dependencies.opentelemetry_api] -version = "0.18.0" +version = "0.20" [dependencies.opentelemetry_sdk] -version = "0.18.0" +version = "0.20" + +[dev-dependencies.opentelemetry-stdout] +version = "0.1" +features = ["trace"] [features] default = ["trace"] +logs = ["opentelemetry_sdk/logs"] +logs_level_enabled = ["logs"] metrics = [ "opentelemetry_api/metrics", "opentelemetry_sdk/metrics", diff -Nru temporalio-1.3.0/vendor/opentelemetry/CHANGELOG.md temporalio-1.3.0/vendor/opentelemetry/CHANGELOG.md --- temporalio-1.3.0/vendor/opentelemetry/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,11 @@ # Changelog +## [v0.20.0](https://github.com/open-telemetry/opentelemetry-rust/compare/v0.19.0...v0.20.0) +This release should been seen as 1.0-rc3 following 1.0-rc2 in v0.19.0. Refer to CHANGELOG.md in individual creates for details on changes made in different creates. + +## [v0.19.0](https://github.com/open-telemetry/opentelemetry-rust/compare/v0.18.0...v0.19.0) +This release should been seen as 1.0-rc2 following 1.0-rc1 in v0.18.0. Refer to CHANGELOG.md in individual creates for details on changes made in different creates. + ## [v0.18.0](https://github.com/open-telemetry/opentelemetry-rust/compare/v0.17.0...v0.18.0) This release is the first beta release of the `trace` API and SDK. If no other @@ -58,7 +64,7 @@ - Allow `String` data in instrumentation library. #670 - Remove `std::fmt::Debug` and `'static` requirements from `TracerProvider`, `Tracer`, and `Span` #664 -- Remove unused `Tracer::invalid` method #683 +- Remove unused `Tracer::invalid` method #683 - Split `TracerProvider::tracer` and `TracerProvider::versioned_tracer` methods #682 - Reduce dependency on `futures` crate #684 - Switch to parent context references #687 diff -Nru temporalio-1.3.0/vendor/opentelemetry/LICENSE temporalio-1.3.0/vendor/opentelemetry/LICENSE --- temporalio-1.3.0/vendor/opentelemetry/LICENSE 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry/LICENSE 2023-10-30 19:40:00.000000000 +0000 @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2023 The OpenTelemetry Authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff -Nru temporalio-1.3.0/vendor/opentelemetry/README.md temporalio-1.3.0/vendor/opentelemetry/README.md --- temporalio-1.3.0/vendor/opentelemetry/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -11,11 +11,7 @@ [![LICENSE](https://img.shields.io/crates/l/opentelemetry)](./LICENSE) [![GitHub Actions CI](https://github.com/open-telemetry/opentelemetry-rust/workflows/CI/badge.svg)](https://github.com/open-telemetry/opentelemetry-rust/actions?query=workflow%3ACI+branch%3Amain) [![codecov](https://codecov.io/gh/open-telemetry/opentelemetry-rust/branch/main/graph/badge.svg)](https://codecov.io/gh/open-telemetry/opentelemetry-rust) -[![Gitter chat](https://img.shields.io/badge/gitter-join%20chat%20%E2%86%92-brightgreen.svg)](https://gitter.im/open-telemetry/opentelemetry-rust) - -[Website](https://opentelemetry.io/) | -[Chat](https://gitter.im/open-telemetry/opentelemetry-rust) | -[Documentation](https://docs.rs/opentelemetry) +[![Slack](https://img.shields.io/badge/slack-@cncf/otel/rust-brightgreen.svg?logo=slack)](https://cloud-native.slack.com/archives/C03GDP0H023) ## Overview @@ -25,7 +21,7 @@ can export and analyze them using [Prometheus], [Jaeger], and other observability tools. -*Compiler support: [requires `rustc` 1.56+][msrv]* +*Compiler support: [requires `rustc` 1.60+][msrv]* [Prometheus]: https://prometheus.io [Jaeger]: https://www.jaegertracing.io @@ -34,11 +30,18 @@ ## Getting Started ```rust -use opentelemetry::{global, sdk::export::trace::stdout, trace::Tracer}; +use opentelemetry::{ + global, + sdk::trace::TracerProvider, + trace::{Tracer, TracerProvider as _}, +}; fn main() { // Create a new trace pipeline that prints to stdout - let tracer = stdout::new_pipeline().install_simple(); + let provider = TracerProvider::builder() + .with_simple_exporter(opentelemetry_stdout::SpanExporter::default()) + .build(); + let tracer = provider.tracer("readme_example"); tracer.in_span("doing_work", |cx| { // Traced app logic here... @@ -130,7 +133,7 @@ ## Supported Rust Versions OpenTelemetry is built against the latest stable release. The minimum supported -version is 1.56. The current OpenTelemetry version is not guaranteed to build +version is 1.60. The current OpenTelemetry version is not guaranteed to build on Rust versions earlier than the minimum supported version. The current stable Rust compiler and the three most recent minor versions diff -Nru temporalio-1.3.0/vendor/opentelemetry/src/lib.rs temporalio-1.3.0/vendor/opentelemetry/src/lib.rs --- temporalio-1.3.0/vendor/opentelemetry/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,7 @@ //! services to capture distributed traces and metrics from your application. You //! can analyze them using [Prometheus], [Jaeger], and other observability tools. //! -//! *Compiler support: [requires `rustc` 1.56+][msrv]* +//! *Compiler support: [requires `rustc` 1.60+][msrv]* //! //! [Prometheus]: https://prometheus.io //! [Jaeger]: https://www.jaegertracing.io @@ -13,11 +13,18 @@ //! ```no_run //! # #[cfg(feature = "trace")] //! # { -//! use opentelemetry::{global, sdk::export::trace::stdout, trace::Tracer}; +//! use opentelemetry::{ +//! global, +//! sdk::trace::TracerProvider, +//! trace::{Tracer, TracerProvider as _}, +//! }; //! //! fn main() { //! // Create a new trace pipeline that prints to stdout -//! let tracer = stdout::new_pipeline().install_simple(); +//! let provider = TracerProvider::builder() +//! .with_simple_exporter(opentelemetry_stdout::SpanExporter::default()) +//! .build(); +//! let tracer = provider.tracer("readme_example"); //! //! tracer.in_span("doing_work", |cx| { //! // Traced app logic here... @@ -82,9 +89,7 @@ //! ``` //! # #[cfg(feature = "metrics")] //! # { -//! use opentelemetry::{global, Context, KeyValue}; -//! -//! let cx = Context::current(); +//! use opentelemetry::{global, KeyValue}; //! //! // get a meter from a provider //! let meter = global::meter("my_service"); @@ -93,7 +98,7 @@ //! let counter = meter.u64_counter("my_counter").init(); //! //! // record a measurement -//! counter.add(&cx, 1, &[KeyValue::new("http.client_ip", "83.164.160.102")]); +//! counter.add(1, &[KeyValue::new("http.client_ip", "83.164.160.102")]); //! # } //! ``` //! @@ -192,7 +197,7 @@ //! ## Supported Rust Versions //! //! OpenTelemetry is built against the latest stable release. The minimum -//! supported version is 1.56. The current OpenTelemetry version is not +//! supported version is 1.60. The current OpenTelemetry version is not //! guaranteed to build on Rust versions earlier than the minimum supported //! version. //! diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/.cargo-checksum.json temporalio-1.3.0/vendor/opentelemetry_api/.cargo-checksum.json --- temporalio-1.3.0/vendor/opentelemetry_api/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"ed13f0c0e18ada3ee7210e032243ab4fef8c3313d217e47fe175e37fa69e8dd6","CODEOWNERS":"abc35dda6643aed84b16084b9dccfee77929c299d60d21b590bd5c8c3b54e508","Cargo.toml":"b50889b677419a24681c8d2dbfa88e5c1435644abde140486ce3e62fff925cc0","LICENSE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","README.md":"e51ac03e63eca4b3a5e54521a81f5096973df6bb7e415007ee6d9727b116e986","src/attributes/encoder.rs":"70b1f5f2d647db08c0b70bdb9019ce731d75004e4ad942783d2b52ef0e23bb79","src/attributes/mod.rs":"86e0f28ea2a1e6a4d8799c5bfbae0f07cc3ba98e839e447389be63897551fac4","src/baggage.rs":"e7b00078adda0df356a3e7a23f5df080830dc3ac2256585561a3eaabbd260307","src/common.rs":"698084a597f6ee4eb706faebc555317a04c8b9616906ecf59b0dfad6579f3cf9","src/context.rs":"4834795c48a1ce015fad9c64371905f3f6e740e0dbed06608f559f060dd5b0ab","src/global/error_handler.rs":"09779d9f1b1bf9259451a05670d3057a8393963f93ce34c0145c2442f2fd28e0","src/global/metrics.rs":"3b9c4067cb72b877b26ed436049d150990bc4f877b5b0395394c836d178dda3f","src/global/mod.rs":"d347758453e1ad63aa62b43490469039058bc7d20e762bde6cd582efa29cfe8f","src/global/propagation.rs":"5e85e66143ea45752c2c03e5a113d2be88c19611118f9ddec543350d17cf492f","src/global/trace.rs":"b4a7f333d906f4f2c5bc18e25e58c88b3d8d6659d62dbb9aaf00c88ed9356c0c","src/lib.rs":"7d034250144bddb5896f3ed20d7678b3cd9bcd5440ae1584566a04f2c0ef8cbd","src/metrics/instruments/counter.rs":"691c0d3c5e5383ca4f16e7abcb2fbcd7ddb18a9fb60d72164b0cfb38c042402d","src/metrics/instruments/gauge.rs":"dc1307334523b8f35ee530194b761f07dab11158340e26128d04db911d9564d2","src/metrics/instruments/histogram.rs":"dab2782a30bfff189d8af227cebe101cdccf30a9d7d1aaf9730df66fc31aaad7","src/metrics/instruments/mod.rs":"b23e557acf69297f85badf90f271a57368248042b56d75ea755f175180d835fc","src/metrics/instruments/up_down_counter.rs":"739e6a829bce39ee94aa7b7f78ea5f2ab2047401d06ec99f3cc3f05632668f38","src/metrics/meter.rs":"bebae244c72f6bd6aa61e1cca2c9260d055370a2a696f80316d2df8b4a6b242f","src/metrics/mod.rs":"fdd9a9848136496380d7122bc1ea140da8d74595178a6311010308d6b6de172d","src/metrics/noop.rs":"bccc544eab0ce455107e8642c3dcd9465184dcf6abd1b28e717df9455c5b6431","src/propagation/mod.rs":"b09495984d31fec0dec4543f6e3f126d015e0bb36e6c606aab3ae769aab94650","src/propagation/text_map_propagator.rs":"a93dc92282eec8818ac5ecf7d83afe6ef52bb6d615c2e44188995df68be22ef4","src/testing/mod.rs":"db380e3251a04db72a486099e470df8a28ce5da531cabb634ed673860e8270a3","src/testing/trace.rs":"a82e97597db8d4a9cca5418eb0f0402c5e3f1bb4c87e662a7b9dc97dcc1dd20f","src/trace/context.rs":"7a131f56792ceba08468cc003b3a77415ec92c90ba94843ad94beb0e7a324edb","src/trace/mod.rs":"13f66bc9be52847852ecadc8f3333e7f17c341d7c3df6152df6b96a91b71a139","src/trace/noop.rs":"46c49f2d0941967c2e076f43d4618fb6643051fcba2c0740b2015f157e3d94d1","src/trace/order_map.rs":"f1333b5c8754d5385d874d6cd66b674a5745665aba3feff197d583bada66409c","src/trace/span.rs":"6950ef224d3bc80bdd8e004441b3a58a4f592cc80d345affd6b79717eb84cc40","src/trace/span_context.rs":"0925791b17806c55edf799e275d7727babaa8c93239bbcf0c47f956e44596c82","src/trace/tracer.rs":"92e431262c8b0504bcfdc56d0c82ea3a2b3719c85fe661151f21f7e95583a8ce","src/trace/tracer_provider.rs":"affa8dab4ed0351594a05eaf057f1ef341291bb8d44edd5f33129b829cc0f9b8"},"package":"c24f96e21e7acc813c7a8394ee94978929db2bcc46cf6b5014fc612bf7760c22"} \ No newline at end of file +{"files":{"CHANGELOG.md":"4fc0f9f2b8e9d5c0f7ee1b3ea26e805e95ccd429913402a06791fb950d042805","CODEOWNERS":"abc35dda6643aed84b16084b9dccfee77929c299d60d21b590bd5c8c3b54e508","Cargo.toml":"21dc7313446ad1eed395cc4a98659bfec0b2732f4677445247167c5f89ab63b9","LICENSE":"208a3f5bae3355bd4f3f45626d1ea4518b253d618ee2896983436075c4375098","README.md":"249b79dc7c95c2fabf01f8a66de4133a9cf0e6f53636de5c60f761885fe786c4","src/baggage.rs":"873a6ac642523455818e01eee33002aba86e2e96eb58d5d3db92e9c9a6be7860","src/common.rs":"0c257050087b656d73bbc1cac954a884f3a71d8dbbc1c2a60594eaa9c93b9527","src/context.rs":"94d62a0b57d7ac6dcac51a4b401cd2303fc42ac7f942208e4003fae094c87dce","src/global/error_handler.rs":"b832613e5f30359b194f85331373db4da57fb7a03ff7c29bc0b2f5fccda79de6","src/global/logs.rs":"279b388ba86cde0917750b79def3eedd5fd44d68eceffcb0d593f9d9f368001b","src/global/metrics.rs":"cd9de30ab581dcd69e05ed032846cde70d39886923fa9eaac92375e19b35ddab","src/global/mod.rs":"f3b860cc187cca9d1ed2f5ff2237e6010b1e5a2c51951e269967b5b40410e652","src/global/propagation.rs":"5e85e66143ea45752c2c03e5a113d2be88c19611118f9ddec543350d17cf492f","src/global/trace.rs":"03034785a2d69f9937ccd7ce38cb72fbb67aeddf4c63bd725e22297cfd336861","src/lib.rs":"bad30245ca5760095f7d96c2814f78d3f2f5f85727c2e36b1473c1612607a5f1","src/logs/logger.rs":"6d4a80ff5830bd8cd06c31066eac43a585801a4e052d875193b5a7f7e6196721","src/logs/mod.rs":"51cc837a7c90a5c6e7f2f5dfb5b6c03b5acb0f70718ad548691b0f0b3fb299d3","src/logs/noop.rs":"e262d9d7818ef3b65d0a8f44dbaaffab0e851577e964aac290e7d4454212c074","src/logs/record.rs":"68b94366ac32ea8e2c5c7e9fa4280c6f60a1b0fc972978767e55e187c2aed498","src/metrics/instruments/counter.rs":"0b94993f0c36a70cedd6df913aa88cde6096ac4f2f44dd84a2020a8c36b7025f","src/metrics/instruments/gauge.rs":"e7236048e26506c2b5ab9dc034f90451657c4cc43b551edf96489f3aabd97cfc","src/metrics/instruments/histogram.rs":"617694542a0ab316d8c0d6c31a743e7669155802653c2b5997552059eb8a2e91","src/metrics/instruments/mod.rs":"d4ca3901c08303dd542e07b5fac6bbabd19132b7336f2f9c5aa060f561dd0462","src/metrics/instruments/up_down_counter.rs":"de610e354a0da150cd1c3853b2d684f923153459f18ae517ab83413d5fb9de01","src/metrics/meter.rs":"9b2afe29811cb72ce97f49206c005aa564a820ff440ec16b372d40fd3d03aea2","src/metrics/mod.rs":"e33deae67c8ea75a2ba4d48b7e25710a81a1d77880417d3b4f9a58f5e9024973","src/metrics/noop.rs":"72eebd42c38979c3eb732fb96c80f6971f487f2a3c244a4fe9f0b2552d9ae923","src/order_map.rs":"f1333b5c8754d5385d874d6cd66b674a5745665aba3feff197d583bada66409c","src/propagation/mod.rs":"b09495984d31fec0dec4543f6e3f126d015e0bb36e6c606aab3ae769aab94650","src/propagation/text_map_propagator.rs":"4b6a90855fc17deacadcd13d223f59331f34aea13ac9c525ac3d99aaf526870f","src/testing/mod.rs":"db380e3251a04db72a486099e470df8a28ce5da531cabb634ed673860e8270a3","src/testing/trace.rs":"12abaac94692f1c1a9d71aadb41f718458960919c4e38e3e6613b3d01e8e830b","src/trace/context.rs":"1288bbad3d56e435c41d6a370ce03bae6d57fd8c5cea8778eb6a2b6b39d223f2","src/trace/mod.rs":"546b9fb4d1157532a1945c4c0cc3d860ff83c8bd2659d745809f7d031b5ab5d5","src/trace/noop.rs":"a8ad2f2d86c6caa8eacadc67a12b50b6b21e65da68302fdba91375cd5f4e1e57","src/trace/span.rs":"6950ef224d3bc80bdd8e004441b3a58a4f592cc80d345affd6b79717eb84cc40","src/trace/span_context.rs":"a14bdfda9f5a080fe765cb919bba38a19427e6cf37990a5e4e70cdf596f98ff2","src/trace/tracer.rs":"f80de2056215aecb4f53af3ef4d8563157ed5650132874ddcc0553e602db7ecf","src/trace/tracer_provider.rs":"143db10c85aaf905988c283f55281e509554294314961fc294516a5b8d266ab4"},"package":"8a81f725323db1b1206ca3da8bb19874bbd3f57c3bcd59471bfb04525b265b9b"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/Cargo.toml temporalio-1.3.0/vendor/opentelemetry_api/Cargo.toml --- temporalio-1.3.0/vendor/opentelemetry_api/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,14 +11,15 @@ [package] edition = "2021" -rust-version = "1.56" +rust-version = "1.60" name = "opentelemetry_api" -version = "0.18.0" +version = "0.20.0" description = "OpenTelemetry is a metrics collection and distributed tracing framework" homepage = "https://github.com/open-telemetry/opentelemetry-rust" readme = "README.md" license = "Apache-2.0" repository = "https://github.com/open-telemetry/opentelemetry-rust" +resolver = "1" [package.metadata.docs.rs] all-features = true @@ -27,10 +28,6 @@ "docsrs", ] -[dependencies.fnv] -version = "1.0" -optional = true - [dependencies.futures-channel] version = "0.3" @@ -55,15 +52,16 @@ [dependencies.thiserror] version = "1" -[dependencies.tokio-stream] -version = "0.1" -optional = true +[dependencies.urlencoding] +version = "2.1.2" [features] default = ["trace"] -metrics = ["fnv"] +logs = [] +logs_level_enabled = ["logs"] +metrics = [] testing = ["trace"] trace = ["pin-project-lite"] -[target."cfg(target_arch = \"wasm32\")".dependencies.js-sys] -version = "0.3" +[target."cfg(all(target_arch = \"wasm32\", not(target_os = \"wasi\")))".dependencies.js-sys] +version = "0.3.63" diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/CHANGELOG.md temporalio-1.3.0/vendor/opentelemetry_api/CHANGELOG.md --- temporalio-1.3.0/vendor/opentelemetry_api/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,40 @@ # Changelog +## v0.20.0 + +### Added + +- Add `new` method to `BoxedTracer` #1009 +- Add js-sys as dependency for api crate when building wasm targets #1078 +- Create tracer using a shared instrumentation library #1129 +- Add `Context::map_current` #1140 + +### Changed + +- `OtelString::Owned` carries `Box` instead of `String` #1096 + +### Removed + +- Drop include_trace_context parameter from Logs API/SDK. [#1133](https://github.com/open-telemetry/opentelemetry-rust/issues/1133) +- Synchronous instruments no longer accepts `Context` while reporting + measurements. [#1076](https://github.com/open-telemetry/opentelemetry-rust/pull/1076). + +### Fixed + +- Fix `SpanRef::set_attributes` mutability requirement. [#1038](https://github.com/open-telemetry/opentelemetry-rust/pull/1038) +- Move OrderMap module to root of otel-api crate. [#1061](https://github.com/open-telemetry/opentelemetry-rust/pull/1061) +- Use the browser-only js-sys workaround only when actually targeting a browser #1008 + +## v0.19.0 +### Added +- Add `WithContext` to public api [#893](https://github.com/open-telemetry/opentelemetry-rust/pull/893). +- Add support for instrumentation scope attributes [#1021](https://github.com/open-telemetry/opentelemetry-rust/pull/1021). + +### Changed +- Implement `Display` on `Baggage` [#921](https://github.com/open-telemetry/opentelemetry-rust/pull/921). +- Bump MSRV to 1.57 [#953](https://github.com/open-telemetry/opentelemetry-rust/pull/953). +- Update dependencies and bump MSRV to 1.60 [#969](https://github.com/open-telemetry/opentelemetry-rust/pull/969). + ## v0.18.0 - API split from `opentelemetry` crate diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/LICENSE temporalio-1.3.0/vendor/opentelemetry_api/LICENSE --- temporalio-1.3.0/vendor/opentelemetry_api/LICENSE 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/LICENSE 2023-10-30 19:40:00.000000000 +0000 @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2023 The OpenTelemetry Authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/README.md temporalio-1.3.0/vendor/opentelemetry_api/README.md --- temporalio-1.3.0/vendor/opentelemetry_api/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -11,11 +11,7 @@ [![LICENSE](https://img.shields.io/crates/l/opentelemetry_api)](./LICENSE) [![GitHub Actions CI](https://github.com/open-telemetry/opentelemetry-rust/workflows/CI/badge.svg)](https://github.com/open-telemetry/opentelemetry-rust/actions?query=workflow%3ACI+branch%3Amain) [![codecov](https://codecov.io/gh/open-telemetry/opentelemetry-rust/branch/main/graph/badge.svg)](https://codecov.io/gh/open-telemetry/opentelemetry-rust) -[![Gitter chat](https://img.shields.io/badge/gitter-join%20chat%20%E2%86%92-brightgreen.svg)](https://gitter.im/open-telemetry/opentelemetry-rust) - -[Website](https://opentelemetry.io/) | -[Chat](https://gitter.im/open-telemetry/opentelemetry-rust) | -[Documentation](https://docs.rs/opentelemetry) +[![Slack](https://img.shields.io/badge/slack-@cncf/otel/rust-brightgreen.svg?logo=slack)](https://cloud-native.slack.com/archives/C03GDP0H023) ## Overview @@ -25,7 +21,7 @@ can export and analyze them using [Prometheus], [Jaeger], and other observability tools. -*Compiler support: [requires `rustc` 1.56+][msrv]* +*Compiler support: [requires `rustc` 1.60+][msrv]* [Prometheus]: https://prometheus.io [Jaeger]: https://www.jaegertracing.io diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/attributes/encoder.rs temporalio-1.3.0/vendor/opentelemetry_api/src/attributes/encoder.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/attributes/encoder.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/attributes/encoder.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,76 +0,0 @@ -use crate::{Key, Value}; -use std::fmt::{self, Write}; -use std::sync::atomic::{AtomicUsize, Ordering}; - -static ENCODER_ID_COUNTER: AtomicUsize = AtomicUsize::new(0); - -/// Encoder is a mechanism for serializing an attribute set into a specific string -/// representation that supports caching, to avoid repeated serialization. An -/// example could be an exporter encoding the attribute set into a wire -/// representation. -pub trait Encoder: fmt::Debug { - /// Encode returns the serialized encoding of the attribute - /// set using its Iterator. This result may be cached. - fn encode(&self, attributes: &mut dyn Iterator) -> String; - - /// A value that is unique for each class of attribute encoder. Attribute encoders - /// allocate these using `new_encoder_id`. - fn id(&self) -> EncoderId; -} - -/// EncoderID is used to identify distinct Encoder -/// implementations, for caching encoded results. -#[derive(Debug)] -pub struct EncoderId(usize); - -impl EncoderId { - /// Check if the id is valid - pub fn is_valid(&self) -> bool { - self.0 != 0 - } -} - -/// Default attribute encoding strategy -#[derive(Debug)] -pub struct DefaultAttributeEncoder; - -impl Encoder for DefaultAttributeEncoder { - fn encode(&self, attributes: &mut dyn Iterator) -> String { - attributes - .enumerate() - .fold(String::new(), |mut acc, (idx, (key, value))| { - let offset = acc.len(); - if idx > 0 { - acc.push(',') - } - - if write!(acc, "{}", key).is_err() { - acc.truncate(offset); - return acc; - } - - acc.push('='); - if write!(acc, "{}", value).is_err() { - acc.truncate(offset); - return acc; - } - - acc - }) - } - - fn id(&self) -> EncoderId { - new_encoder_id() - } -} - -/// Build a new default encoder -pub fn default_encoder() -> Box { - Box::new(DefaultAttributeEncoder) -} - -/// Build a new encoder id -pub fn new_encoder_id() -> EncoderId { - let old_encoder_id = ENCODER_ID_COUNTER.fetch_add(1, Ordering::AcqRel); - EncoderId(old_encoder_id + 1) -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/attributes/mod.rs temporalio-1.3.0/vendor/opentelemetry_api/src/attributes/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/attributes/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/attributes/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,144 +0,0 @@ -//! OpenTelemetry Attributes -use crate::{Array, Key, KeyValue, Value}; -use std::cmp::Ordering; -use std::collections::{btree_map, BTreeMap}; -use std::hash::{Hash, Hasher}; -use std::iter::Peekable; - -mod encoder; -pub use encoder::{default_encoder, new_encoder_id, DefaultAttributeEncoder, Encoder, EncoderId}; - -/// An immutable set of distinct attributes. -#[derive(Clone, Debug, Default)] -pub struct AttributeSet { - attributes: BTreeMap, -} - -impl AttributeSet { - /// Construct a new attribute set form a distinct set of attributes - pub fn from_attributes>(attributes: T) -> Self { - AttributeSet { - attributes: attributes - .into_iter() - .map(|kv| (kv.key, kv.value)) - .collect(), - } - } - - /// The attribute set length. - pub fn len(&self) -> usize { - self.attributes.len() - } - - /// Check if the set of attributes are empty. - pub fn is_empty(&self) -> bool { - self.attributes.is_empty() - } - - /// Iterate over the attribute key value pairs. - pub fn iter(&self) -> Iter<'_> { - self.into_iter() - } - - /// Encode the attribute set with the given encoder and cache the result. - pub fn encoded(&self, encoder: Option<&dyn Encoder>) -> String { - encoder.map_or_else(String::new, |encoder| encoder.encode(&mut self.iter())) - } -} - -impl<'a> IntoIterator for &'a AttributeSet { - type Item = (&'a Key, &'a Value); - type IntoIter = Iter<'a>; - - fn into_iter(self) -> Self::IntoIter { - Iter(self.attributes.iter()) - } -} -/// An iterator over the entries of a `Set`. -#[derive(Debug)] -pub struct Iter<'a>(btree_map::Iter<'a, Key, Value>); -impl<'a> Iterator for Iter<'a> { - type Item = (&'a Key, &'a Value); - - fn next(&mut self) -> Option { - self.0.next() - } -} - -/// Impl of Hash for `KeyValue` -pub fn hash_attributes<'a, H: Hasher, I: IntoIterator>( - state: &mut H, - attributes: I, -) { - for (key, value) in attributes.into_iter() { - key.hash(state); - hash_value(state, value); - } -} - -fn hash_value(state: &mut H, value: &Value) { - match value { - Value::Bool(b) => b.hash(state), - Value::I64(i) => i.hash(state), - Value::F64(f) => { - // FIXME: f64 does not impl hash, this impl may have incorrect outcomes. - f.to_bits().hash(state) - } - Value::String(s) => s.hash(state), - Value::Array(arr) => match arr { - // recursively hash array values - Array::Bool(values) => values.iter().for_each(|v| v.hash(state)), - Array::I64(values) => values.iter().for_each(|v| v.hash(state)), - Array::F64(values) => values.iter().for_each(|v| v.to_bits().hash(state)), - Array::String(values) => values.iter().for_each(|v| v.hash(state)), - }, - } -} - -/// Merge two iterators, yielding sorted results -pub fn merge_iters< - 'a, - 'b, - A: Iterator, - B: Iterator, ->( - a: A, - b: B, -) -> MergeIter<'a, 'b, A, B> { - MergeIter { - a: a.peekable(), - b: b.peekable(), - } -} - -/// Merge two iterators, sorting by key -#[derive(Debug)] -pub struct MergeIter<'a, 'b, A, B> -where - A: Iterator, - B: Iterator, -{ - a: Peekable, - b: Peekable, -} - -impl<'a, A: Iterator, B: Iterator> - Iterator for MergeIter<'a, 'a, A, B> -{ - type Item = (&'a Key, &'a Value); - fn next(&mut self) -> Option { - let which = match (self.a.peek(), self.b.peek()) { - (Some(a), Some(b)) => Some(a.0.cmp(b.0)), - (Some(_), None) => Some(Ordering::Less), - (None, Some(_)) => Some(Ordering::Greater), - (None, None) => None, - }; - - match which { - Some(Ordering::Less) => self.a.next(), - Some(Ordering::Equal) => self.a.next(), - Some(Ordering::Greater) => self.b.next(), - None => None, - } - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/baggage.rs temporalio-1.3.0/vendor/opentelemetry_api/src/baggage.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/baggage.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/baggage.rs 2023-10-30 19:40:00.000000000 +0000 @@ -17,7 +17,9 @@ use crate::{Context, Key, KeyValue, Value}; use once_cell::sync::Lazy; use std::collections::{hash_map, HashMap}; +use std::fmt; use std::iter::FromIterator; +use urlencoding::encode; static DEFAULT_BAGGAGE: Lazy = Lazy::new(Baggage::default); @@ -280,6 +282,23 @@ } } +impl fmt::Display for Baggage { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + for (i, (k, v)) in self.into_iter().enumerate() { + write!(f, "{}={}", k, encode(&v.0.as_str()))?; + if !v.1.as_str().is_empty() { + write!(f, ";{}", v.1)?; + } + + if i < self.len() - 1 { + write!(f, ",")?; + } + } + + Ok(()) + } +} + /// Methods for sorting and retrieving baggage data in a context. pub trait BaggageExt { /// Returns a clone of the given context with the included name/value pairs. @@ -289,8 +308,9 @@ /// ``` /// use opentelemetry_api::{baggage::BaggageExt, Context, KeyValue, Value}; /// - /// let some_context = Context::current(); - /// let cx = some_context.with_baggage(vec![KeyValue::new("my-name", "my-value")]); + /// let cx = Context::map_current(|cx| { + /// cx.with_baggage(vec![KeyValue::new("my-name", "my-value")]) + /// }); /// /// assert_eq!( /// cx.baggage().get("my-name"), @@ -320,14 +340,14 @@ baggage: T, ) -> Self; - /// Returns a clone of the given context with the included name/value pairs. + /// Returns a clone of the given context with no baggage. /// /// # Examples /// /// ``` /// use opentelemetry_api::{baggage::BaggageExt, Context, KeyValue, Value}; /// - /// let cx = Context::current().with_cleared_baggage(); + /// let cx = Context::map_current(|cx| cx.with_cleared_baggage()); /// /// assert_eq!(cx.baggage().len(), 0); /// ``` @@ -358,7 +378,7 @@ } fn current_with_baggage, I: Into>(kvs: T) -> Self { - Context::current().with_baggage(kvs) + Context::map_current(|cx| cx.with_baggage(kvs)) } fn with_cleared_baggage(&self) -> Self { @@ -397,6 +417,12 @@ } } +impl fmt::Display for BaggageMetadata { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + Ok(write!(f, "{}", self.as_str())?) + } +} + /// [`Baggage`] name/value pairs with their associated metadata. #[derive(Clone, Debug, PartialEq)] pub struct KeyValueMetadata { @@ -436,6 +462,8 @@ #[cfg(test)] mod tests { + use crate::StringValue; + use super::*; #[test] @@ -451,7 +479,7 @@ let over_limit = MAX_KEY_VALUE_PAIRS + 1; let mut data = Vec::with_capacity(over_limit); for i in 0..over_limit { - data.push(KeyValue::new(format!("key{}", i), format!("key{}", i))) + data.push(KeyValue::new(format!("key{i}"), format!("key{i}"))) } let baggage = data.into_iter().collect::(); assert_eq!(baggage.len(), MAX_KEY_VALUE_PAIRS) @@ -494,4 +522,47 @@ let baggage = data.into_iter().collect::(); assert_eq!(baggage.len(), 3) } + + #[test] + fn serialize_baggage_as_string() { + // Empty baggage + let b = Baggage::default(); + assert_eq!("", b.to_string()); + + // "single member empty value no properties" + let mut b = Baggage::default(); + b.insert("foo", StringValue::from("")); + assert_eq!("foo=", b.to_string()); + + // "single member no properties" + let mut b = Baggage::default(); + b.insert("foo", StringValue::from("1")); + assert_eq!("foo=1", b.to_string()); + + // "URL encoded value" + let mut b = Baggage::default(); + b.insert("foo", StringValue::from("1=1")); + assert_eq!("foo=1%3D1", b.to_string()); + + // "single member empty value with properties" + let mut b = Baggage::default(); + b.insert_with_metadata( + "foo", + StringValue::from(""), + BaggageMetadata::from("red;state=on"), + ); + assert_eq!("foo=;red;state=on", b.to_string()); + + // "single member with properties" + let mut b = Baggage::default(); + b.insert_with_metadata("foo", StringValue::from("1"), "red;state=on;z=z=z"); + assert_eq!("foo=1;red;state=on;z=z=z", b.to_string()); + + // "two members with properties" + let mut b = Baggage::default(); + b.insert_with_metadata("foo", StringValue::from("1"), "red;state=on"); + b.insert_with_metadata("bar", StringValue::from("2"), "yellow"); + assert!(b.to_string().contains("bar=2;yellow")); + assert!(b.to_string().contains("foo=1;red;state=on")); + } } diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/common.rs temporalio-1.3.0/vendor/opentelemetry_api/src/common.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/common.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/common.rs 2023-10-30 19:40:00.000000000 +0000 @@ -88,7 +88,7 @@ impl From for Key { /// Convert a `String` to a `Key`. fn from(string: String) -> Self { - Key(OtelString::Owned(string)) + Key(OtelString::Owned(string.into_boxed_str())) } } @@ -99,6 +99,16 @@ } } +impl From> for Key { + /// Convert a `Cow<'static, str>` to a `Key` + fn from(string: Cow<'static, str>) -> Self { + match string { + Cow::Borrowed(s) => Key(OtelString::Static(s)), + Cow::Owned(s) => Key(OtelString::Owned(s.into_boxed_str())), + } + } +} + impl fmt::Debug for Key { fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { self.0.fmt(fmt) @@ -108,7 +118,7 @@ impl From for String { fn from(key: Key) -> Self { match key.0 { - OtelString::Owned(s) => s, + OtelString::Owned(s) => s.to_string(), OtelString::Static(s) => s.to_string(), OtelString::RefCounted(s) => s.to_string(), } @@ -127,8 +137,8 @@ #[derive(Clone, Debug, Eq)] enum OtelString { + Owned(Box), Static(&'static str), - Owned(String), RefCounted(Arc), } @@ -245,7 +255,7 @@ } /// Wrapper for string-like values -#[derive(Clone, PartialEq, Eq, Hash)] +#[derive(Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] pub struct StringValue(OtelString); impl fmt::Debug for StringValue { @@ -280,7 +290,7 @@ impl From for String { fn from(s: StringValue) -> Self { match s.0 { - OtelString::Owned(s) => s, + OtelString::Owned(s) => s.to_string(), OtelString::Static(s) => s.to_string(), OtelString::RefCounted(s) => s.to_string(), } @@ -295,7 +305,7 @@ impl From for StringValue { fn from(s: String) -> Self { - StringValue(OtelString::Owned(s)) + StringValue(OtelString::Owned(s.into_boxed_str())) } } @@ -308,7 +318,7 @@ impl From> for StringValue { fn from(s: Cow<'static, str>) -> Self { match s { - Cow::Owned(s) => StringValue(OtelString::Owned(s)), + Cow::Owned(s) => StringValue(OtelString::Owned(s.into_boxed_str())), Cow::Borrowed(s) => StringValue(OtelString::Static(s)), } } @@ -426,7 +436,7 @@ /// See the [instrumentation libraries] spec for more information. /// /// [instrumentation libraries]: https://github.com/open-telemetry/opentelemetry-specification/blob/v1.9.0/specification/overview.md#instrumentation-libraries -#[derive(Debug, Default, Hash, Clone, PartialEq, Eq)] +#[derive(Debug, Default, Clone)] #[non_exhaustive] pub struct InstrumentationLibrary { /// The library name. @@ -442,6 +452,7 @@ /// let library = opentelemetry_api::InstrumentationLibrary::new( /// "my-crate", /// Some(env!("CARGO_PKG_VERSION")), + /// Some("https://opentelemetry.io/schemas/1.17.0"), /// None, /// ); /// ``` @@ -451,18 +462,43 @@ /// /// [Schema url]: https://github.com/open-telemetry/opentelemetry-specification/blob/v1.9.0/specification/schemas/overview.md#schema-url pub schema_url: Option>, + + /// Specifies the instrumentation scope attributes to associate with emitted telemetry. + pub attributes: Vec, +} + +// Uniqueness for InstrumentationLibrary/InstrumentationScope does not depend on attributes +impl Eq for InstrumentationLibrary {} + +impl PartialEq for InstrumentationLibrary { + fn eq(&self, other: &Self) -> bool { + self.name == other.name + && self.version == other.version + && self.schema_url == other.schema_url + } +} + +impl hash::Hash for InstrumentationLibrary { + fn hash(&self, state: &mut H) { + self.name.hash(state); + self.version.hash(state); + self.schema_url.hash(state); + } } impl InstrumentationLibrary { /// Create an new instrumentation library. - pub fn new(name: T, version: Option, schema_url: Option) -> InstrumentationLibrary - where - T: Into>, - { + pub fn new( + name: impl Into>, + version: Option>>, + schema_url: Option>>, + attributes: Option>, + ) -> InstrumentationLibrary { InstrumentationLibrary { name: name.into(), version: version.map(Into::into), schema_url: schema_url.map(Into::into), + attributes: attributes.unwrap_or_default(), } } } diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/context.rs temporalio-1.3.0/vendor/opentelemetry_api/src/context.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/context.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/context.rs 2023-10-30 19:40:00.000000000 +0000 @@ -8,7 +8,6 @@ thread_local! { static CURRENT_CONTEXT: RefCell = RefCell::new(Context::default()); - static DEFAULT_CONTEXT: Context = Context::default(); } /// An execution-scoped collection of values. @@ -107,7 +106,19 @@ /// do_work() /// ``` pub fn current() -> Self { - get_current(|cx| cx.clone()) + Context::map_current(|cx| cx.clone()) + } + + /// Applys a function to the current context returning its value. + /// + /// This can be used to build higher performing algebraic expressions for + /// optionally creating a new context without the overhead of cloning the + /// current one and dropping it. + /// + /// Note: This function will panic if you attempt to attach another context + /// while the current one is still borrowed. + pub fn map_current(f: impl FnOnce(&Context) -> T) -> T { + CURRENT_CONTEXT.with(|cx| f(&cx.borrow())) } /// Returns a clone of the current thread's context with the given value. @@ -318,16 +329,6 @@ } } -/// Executes a closure with a reference to this thread's current context. -/// -/// Note: This function will panic if you attempt to attach another context -/// while the context is still borrowed. -fn get_current T, T>(mut f: F) -> T { - CURRENT_CONTEXT - .try_with(|cx| f(&cx.borrow())) - .unwrap_or_else(|_| DEFAULT_CONTEXT.with(|cx| f(cx))) -} - /// With TypeIds as keys, there's no need to hash them. They are already hashes /// themselves, coming from the compiler. The IdHasher holds the u64 of /// the TypeId, and then returns it, instead of doing any bit fiddling. @@ -373,11 +374,23 @@ let current = Context::current(); assert_eq!(current.get(), Some(&ValueA("a"))); assert_eq!(current.get(), Some(&ValueB(42))); + + assert!(Context::map_current(|cx| { + assert_eq!(cx.get(), Some(&ValueA("a"))); + assert_eq!(cx.get(), Some(&ValueB(42))); + true + })); } // Resets to only value `a` when inner guard is dropped let current = Context::current(); assert_eq!(current.get(), Some(&ValueA("a"))); assert_eq!(current.get::(), None); + + assert!(Context::map_current(|cx| { + assert_eq!(cx.get(), Some(&ValueA("a"))); + assert_eq!(cx.get::(), None); + true + })); } } diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/global/error_handler.rs temporalio-1.3.0/vendor/opentelemetry_api/src/global/error_handler.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/global/error_handler.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/global/error_handler.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,8 @@ use std::sync::PoisonError; use std::sync::RwLock; +#[cfg(feature = "logs")] +use crate::logs::LogError; #[cfg(feature = "metrics")] use crate::metrics::MetricsError; #[cfg(feature = "trace")] @@ -23,6 +25,13 @@ #[error(transparent)] /// An issue raised by the metrics module. Metric(#[from] MetricsError), + + #[cfg(feature = "logs")] + #[cfg_attr(docsrs, doc(cfg(feature = "logs")))] + #[error(transparent)] + /// Failed to export logs. + Log(#[from] LogError), + #[error("{0}")] /// Other types of failures not covered by the variants above. Other(String), @@ -49,6 +58,9 @@ #[cfg(feature = "trace")] #[cfg_attr(docsrs, doc(cfg(feature = "trace")))] Error::Trace(err) => eprintln!("OpenTelemetry trace error occurred. {}", err), + #[cfg(feature = "logs")] + #[cfg_attr(docsrs, doc(cfg(feature = "logs")))] + Error::Log(err) => eprintln!("OpenTelemetry log error occurred. {}", err), Error::Other(err_msg) => eprintln!("OpenTelemetry error occurred. {}", err_msg), }, } diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/global/logs.rs temporalio-1.3.0/vendor/opentelemetry_api/src/global/logs.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/global/logs.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/global/logs.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,136 @@ +use std::{ + borrow::Cow, + fmt, mem, + sync::{Arc, RwLock}, +}; + +use once_cell::sync::Lazy; + +use crate::{ + logs::{Logger, LoggerProvider, NoopLoggerProvider}, + InstrumentationLibrary, +}; + +/// Allows a specific [`LoggerProvider`] to be used generically, by mirroring +/// the interface, and boxing the returned types. +/// +/// [`LoggerProvider`]: crate::logs::LoggerProvider. +pub trait ObjectSafeLoggerProvider { + /// Creates a versioned named [`Logger`] instance that is a trait object + /// through the underlying [`LoggerProvider`]. + /// + /// [`Logger`]: crate::logs::Logger + /// [`LoggerProvider`]: crate::logs::LoggerProvider + fn boxed_logger( + &self, + library: Arc, + ) -> Box; +} + +impl ObjectSafeLoggerProvider for P +where + L: Logger + Send + Sync + 'static, + P: LoggerProvider, +{ + fn boxed_logger( + &self, + library: Arc, + ) -> Box { + Box::new(self.library_logger(library)) + } +} + +pub struct BoxedLogger(Box); + +impl fmt::Debug for BoxedLogger { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("BoxedLogger") + } +} + +impl Logger for BoxedLogger { + fn emit(&self, record: crate::logs::LogRecord) { + self.0.emit(record) + } + + #[cfg(feature = "logs_level_enabled")] + fn event_enabled(&self, level: crate::logs::Severity, target: &str) -> bool { + self.0.event_enabled(level, target) + } +} + +#[derive(Clone)] +/// Represents the globally configured [`LoggerProvider`] instance. +pub struct GlobalLoggerProvider { + provider: Arc, +} + +impl fmt::Debug for GlobalLoggerProvider { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("GlobalLoggerProvider") + } +} + +impl GlobalLoggerProvider { + fn new< + L: Logger + Send + Sync + 'static, + P: LoggerProvider + Send + Sync + 'static, + >( + provider: P, + ) -> Self { + GlobalLoggerProvider { + provider: Arc::new(provider), + } + } +} + +impl LoggerProvider for GlobalLoggerProvider { + type Logger = BoxedLogger; + + fn library_logger(&self, library: Arc) -> Self::Logger { + BoxedLogger(self.provider.boxed_logger(library)) + } +} + +static GLOBAL_LOGGER_PROVIDER: Lazy> = + Lazy::new(|| RwLock::new(GlobalLoggerProvider::new(NoopLoggerProvider::new()))); + +/// Returns an instance of the currently configured global [`LoggerProvider`] +/// through [`GlobalLoggerProvider`]. +/// +/// [`LoggerProvider`]: crate::logs::LoggerProvider +pub fn logger_provider() -> GlobalLoggerProvider { + GLOBAL_LOGGER_PROVIDER + .read() + .expect("GLOBAL_LOGGER_PROVIDER RwLock poisoned") + .clone() +} + +/// Creates a named instance of [`Logger`] via the configured +/// [`GlobalLoggerProvider`]. +/// +/// If `name` is an empty string, the provider will use a default name. +/// +/// [`Logger`]: crate::logs::Logger +pub fn logger(name: Cow<'static, str>) -> BoxedLogger { + logger_provider().logger(name) +} + +/// Sets the given [`LoggerProvider`] instance as the current global provider, +/// returning the [`LoggerProvider`] instance that was previously set as global +/// provider. +pub fn set_logger_provider(new_provider: P) -> GlobalLoggerProvider +where + L: Logger + Send + Sync + 'static, + P: LoggerProvider + Send + Sync + 'static, +{ + let mut provider = GLOBAL_LOGGER_PROVIDER + .write() + .expect("GLOBAL_LOGGER_PROVIDER RwLock poisoned"); + mem::replace(&mut *provider, GlobalLoggerProvider::new(new_provider)) +} + +/// Shut down the current global [`LoggerProvider`]. +pub fn shutdown_logger_provider() { + let _ = set_logger_provider(NoopLoggerProvider::new()); +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/global/metrics.rs temporalio-1.3.0/vendor/opentelemetry_api/src/global/metrics.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/global/metrics.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/global/metrics.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,11 @@ use crate::metrics::{self, Meter, MeterProvider}; +use crate::KeyValue; use core::fmt; use once_cell::sync::Lazy; -use std::sync::{Arc, RwLock}; +use std::{ + borrow::Cow, + sync::{Arc, RwLock}, +}; /// The global `Meter` provider singleton. static GLOBAL_METER_PROVIDER: Lazy> = Lazy::new(|| { @@ -10,11 +14,41 @@ )) }); +/// Allows a specific [MeterProvider] to be used generically by the +/// [GlobalMeterProvider] by mirroring the interface and boxing the return types. +pub trait ObjectSafeMeterProvider { + /// Creates a versioned named meter instance that is a trait object through the underlying + /// [MeterProvider]. + fn versioned_meter_cow( + &self, + name: Cow<'static, str>, + version: Option>, + schema_url: Option>, + attributes: Option>, + ) -> Meter; +} + +impl

ObjectSafeMeterProvider for P +where + P: MeterProvider, +{ + /// Return a versioned boxed tracer + fn versioned_meter_cow( + &self, + name: Cow<'static, str>, + version: Option>, + schema_url: Option>, + attributes: Option>, + ) -> Meter { + self.versioned_meter(name, version, schema_url, attributes) + } +} + /// Represents the globally configured [`MeterProvider`] instance for this /// application. #[derive(Clone)] pub struct GlobalMeterProvider { - provider: Arc, + provider: Arc, } impl fmt::Debug for GlobalMeterProvider { @@ -26,11 +60,17 @@ impl MeterProvider for GlobalMeterProvider { fn versioned_meter( &self, - name: &'static str, - version: Option<&'static str>, - schema_url: Option<&'static str>, + name: impl Into>, + version: Option>>, + schema_url: Option>>, + attributes: Option>, ) -> Meter { - self.provider.versioned_meter(name, version, schema_url) + self.provider.versioned_meter_cow( + name.into(), + version.map(Into::into), + schema_url.map(Into::into), + attributes, + ) } } @@ -71,9 +111,9 @@ /// /// If the name is an empty string, the provider will use a default name. /// -/// This is a more convenient way of expressing `global::meter_provider().meter(name, None, None)`. -pub fn meter(name: &'static str) -> Meter { - meter_provider().versioned_meter(name, None, None) +/// This is a more convenient way of expressing `global::meter_provider().versioned_meter(name, None, None, None)`. +pub fn meter(name: impl Into>) -> Meter { + meter_provider().meter(name.into()) } /// Creates a [`Meter`] with the name, version and schema url. @@ -82,17 +122,31 @@ /// - version specifies the version of the instrumentation scope if the scope has a version /// - schema url specifies the Schema URL that should be recorded in the emitted telemetry. /// -/// This is a convenient way of `global::meter_provider().meter(...)` +/// This is a convenient way of `global::meter_provider().versioned_meter(...)` +/// /// # Example -/// ```rust -/// use opentelemetry_api::global::meter_with_version; -/// let meter = meter_with_version("io.opentelemetry", Some("0.17"), Some("https://opentelemetry.io/schemas/1.2.0")); +/// /// ``` +/// use opentelemetry_api::global::meter_with_version; +/// use opentelemetry_api::KeyValue; /// +/// let meter = meter_with_version( +/// "io.opentelemetry", +/// Some("0.17"), +/// Some("https://opentelemetry.io/schemas/1.2.0"), +/// Some(vec![KeyValue::new("key", "value")]), +/// ); +/// ``` pub fn meter_with_version( - name: &'static str, - version: Option<&'static str>, - schema_url: Option<&'static str>, + name: impl Into>, + version: Option>>, + schema_url: Option>>, + attributes: Option>, ) -> Meter { - meter_provider().versioned_meter(name, version, schema_url) + meter_provider().versioned_meter( + name.into(), + version.map(Into::into), + schema_url.map(Into::into), + attributes, + ) } diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/global/mod.rs temporalio-1.3.0/vendor/opentelemetry_api/src/global/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/global/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/global/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -59,6 +59,7 @@ //! let tracer = global::tracer_provider().versioned_tracer( //! "my-library-name", //! Some(env!("CARGO_PKG_VERSION")), +//! Some("https://opentelemetry.io/schemas/1.17.0"), //! None, //! ); //! @@ -91,7 +92,7 @@ //! # #[cfg(feature="metrics")] //! # { //! use opentelemetry_api::metrics::{Meter, noop::NoopMeterProvider}; -//! use opentelemetry_api::{global, Context, KeyValue}; +//! use opentelemetry_api::{global, KeyValue}; //! //! fn init_meter() { //! let provider = NoopMeterProvider::new(); @@ -105,10 +106,9 @@ //! // Then you can get a named tracer instance anywhere in your codebase. //! let meter = global::meter("my-component"); //! let counter = meter.u64_counter("my_counter").init(); -//! let cx = Context::current(); //! //! // record metrics -//! counter.add(&cx, 1, &[KeyValue::new("mykey", "myvalue")]); +//! counter.add(1, &[KeyValue::new("mykey", "myvalue")]); //! } //! //! // in main or other app start @@ -122,17 +122,16 @@ //! ``` //! # #[cfg(feature="metrics")] //! # { -//! use opentelemetry_api::{global, Context, KeyValue}; +//! use opentelemetry_api::{global, KeyValue}; //! //! pub fn my_traced_library_function() { //! // End users of your library will configure their global meter provider //! // so you can use the global meter without any setup //! let tracer = global::meter("my-library-name"); //! let counter = tracer.u64_counter("my_counter").init(); -//! let cx = Context::current(); //! //! // record metrics -//! counter.add(&cx, 1, &[KeyValue::new("mykey", "myvalue")]); +//! counter.add(1, &[KeyValue::new("mykey", "myvalue")]); //! } //! # } //! ``` @@ -141,6 +140,8 @@ //! [`set_meter_provider`]: crate::global::set_meter_provider mod error_handler; +#[cfg(feature = "logs")] +mod logs; #[cfg(feature = "metrics")] mod metrics; #[cfg(feature = "trace")] @@ -149,17 +150,18 @@ mod trace; pub use error_handler::{handle_error, set_error_handler, Error}; +#[cfg(feature = "logs")] +#[cfg_attr(docsrs, doc(cfg(feature = "logs")))] +pub use logs::{ + logger, logger_provider, set_logger_provider, shutdown_logger_provider, GlobalLoggerProvider, + ObjectSafeLoggerProvider, +}; #[cfg(feature = "metrics")] #[cfg_attr(docsrs, doc(cfg(feature = "metrics")))] -pub use metrics::{ - meter, meter_provider, meter_with_version, set_meter_provider, GlobalMeterProvider, -}; +pub use metrics::*; #[cfg(feature = "trace")] #[cfg_attr(docsrs, doc(cfg(feature = "trace")))] -pub use propagation::{get_text_map_propagator, set_text_map_propagator}; +pub use propagation::*; #[cfg(feature = "trace")] #[cfg_attr(docsrs, doc(cfg(feature = "trace")))] -pub use trace::{ - set_tracer_provider, shutdown_tracer_provider, tracer, tracer_provider, BoxedSpan, BoxedTracer, - GlobalTracerProvider, ObjectSafeTracer, ObjectSafeTracerProvider, -}; +pub use trace::*; diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/global/trace.rs temporalio-1.3.0/vendor/opentelemetry_api/src/global/trace.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/global/trace.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/global/trace.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,5 @@ use crate::trace::{noop::NoopTracerProvider, SpanContext, Status}; +use crate::InstrumentationLibrary; use crate::{trace, trace::TracerProvider, Context, KeyValue}; use once_cell::sync::Lazy; use std::borrow::Cow; @@ -7,6 +8,8 @@ use std::sync::{Arc, RwLock}; use std::time::SystemTime; +/// Allows a specific [`crate::trace::Span`] to be used generically by [`BoxedSpan`] +/// instances by mirroring the interface and boxing the return types. pub trait ObjectSafeSpan { /// An API to record events at a specific time in the context of a given `Span`. /// @@ -101,7 +104,7 @@ /// /// For more details, refer to [`Span::end`] /// - /// [`Span::end`]: Span::end() + /// [`Span::end`]: trace::Span::end fn end_with_timestamp(&mut self, timestamp: SystemTime); } @@ -226,6 +229,13 @@ /// [`GlobalTracerProvider`]: crate::global::GlobalTracerProvider pub struct BoxedTracer(Box); +impl BoxedTracer { + /// Create a `BoxedTracer` from an object-safe tracer. + pub fn new(tracer: Box) -> Self { + BoxedTracer(tracer) + } +} + impl fmt::Debug for BoxedTracer { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.write_str("BoxedTracer") @@ -281,11 +291,9 @@ pub trait ObjectSafeTracerProvider { /// Creates a versioned named tracer instance that is a trait object through the underlying /// `TracerProvider`. - fn versioned_tracer_boxed( + fn boxed_tracer( &self, - name: Cow<'static, str>, - version: Option<&'static str>, - schema_url: Option<&'static str>, + library: Arc, ) -> Box; } @@ -296,13 +304,11 @@ P: trace::TracerProvider, { /// Return a versioned boxed tracer - fn versioned_tracer_boxed( + fn boxed_tracer( &self, - name: Cow<'static, str>, - version: Option<&'static str>, - schema_url: Option<&'static str>, + library: Arc, ) -> Box { - Box::new(self.versioned_tracer(name, version, schema_url)) + Box::new(self.library_tracer(library)) } } @@ -339,17 +345,9 @@ impl trace::TracerProvider for GlobalTracerProvider { type Tracer = BoxedTracer; - /// Create a versioned tracer using the global provider. - fn versioned_tracer( - &self, - name: impl Into>, - version: Option<&'static str>, - schema_url: Option<&'static str>, - ) -> Self::Tracer { - BoxedTracer( - self.provider - .versioned_tracer_boxed(name.into(), version, schema_url), - ) + /// Create a tracer using the global provider. + fn library_tracer(&self, library: Arc) -> Self::Tracer { + BoxedTracer(self.provider.boxed_tracer(library)) } } diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/lib.rs temporalio-1.3.0/vendor/opentelemetry_api/src/lib.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,7 @@ //! services to capture distributed traces and metrics from your application. You //! can analyze them using [Prometheus], [Jaeger], and other observability tools. //! -//! *Compiler support: [requires `rustc` 1.56+][msrv]* +//! *Compiler support: [requires `rustc` 1.60+][msrv]* //! //! [Prometheus]: https://prometheus.io //! [Jaeger]: https://www.jaegertracing.io @@ -11,7 +11,7 @@ //! ## Supported Rust Versions //! //! OpenTelemetry is built against the latest stable release. The minimum -//! supported version is 1.56. The current OpenTelemetry version is not +//! supported version is 1.60. The current OpenTelemetry version is not //! guaranteed to build on Rust versions earlier than the minimum supported //! version. //! @@ -51,6 +51,10 @@ mod common; +mod order_map; + +pub use order_map::OrderMap; + #[cfg(any(feature = "testing", test))] #[doc(hidden)] pub mod testing; @@ -59,10 +63,6 @@ #[cfg(feature = "metrics")] #[cfg_attr(docsrs, doc(cfg(feature = "metrics")))] -pub mod attributes; - -#[cfg(feature = "metrics")] -#[cfg_attr(docsrs, doc(cfg(feature = "metrics")))] pub mod metrics; pub mod propagation; @@ -71,19 +71,26 @@ #[cfg_attr(docsrs, doc(cfg(feature = "trace")))] pub mod trace; +#[cfg(feature = "logs")] +#[cfg_attr(docsrs, doc(cfg(feature = "logs")))] +pub mod logs; + #[doc(hidden)] #[cfg(any(feature = "metrics", feature = "trace"))] pub mod time { use std::time::SystemTime; #[doc(hidden)] - #[cfg(not(target_arch = "wasm32"))] + #[cfg(any( + not(target_arch = "wasm32"), + all(target_arch = "wasm32", target_os = "wasi") + ))] pub fn now() -> SystemTime { SystemTime::now() } #[doc(hidden)] - #[cfg(target_arch = "wasm32")] + #[cfg(all(target_arch = "wasm32", not(target_os = "wasi")))] pub fn now() -> SystemTime { SystemTime::UNIX_EPOCH + std::time::Duration::from_millis(js_sys::Date::now() as u64) } diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/logs/logger.rs temporalio-1.3.0/vendor/opentelemetry_api/src/logs/logger.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/logs/logger.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/logs/logger.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,75 @@ +use std::{borrow::Cow, sync::Arc}; + +use crate::{logs::LogRecord, InstrumentationLibrary, KeyValue}; + +#[cfg(feature = "logs_level_enabled")] +use super::Severity; + +/// The interface for emitting [`LogRecord`]s. + +pub trait Logger { + /// Emit a [`LogRecord`]. If there is active current thread's [`Context`], + /// the logger will set the record's [`TraceContext`] to the active trace context, + /// + /// [`Context`]: crate::Context + /// [`TraceContext`]: crate::logs::TraceContext + fn emit(&self, record: LogRecord); + + #[cfg(feature = "logs_level_enabled")] + /// Check if the given log level is enabled. + fn event_enabled(&self, level: Severity, target: &str) -> bool; +} + +/// Interfaces that can create [`Logger`] instances. +pub trait LoggerProvider { + /// The [`Logger`] type that this provider will return. + type Logger: Logger; + + /// Returns a new versioned logger with a given name. + /// + /// The `name` should be the application name or the name of the library + /// providing instrumentation. If the name is empty, then an + /// implementation-defined default name may be used instead. + fn versioned_logger( + &self, + name: impl Into>, + version: Option>, + schema_url: Option>, + attributes: Option>, + ) -> Self::Logger { + self.library_logger(Arc::new(InstrumentationLibrary::new( + name, version, schema_url, attributes, + ))) + } + + /// Returns a new versioned logger with the given instrumentation library. + /// + /// # Examples + /// + /// ``` + /// use opentelemetry_api::{global, InstrumentationLibrary, logs::LoggerProvider}; + /// + /// let provider = global::logger_provider(); + /// + /// // logger used in applications/binaries + /// let logger = provider.logger("my_app"); + /// // logger used in libraries/crates that optionally includes version and schema url + /// let library = std::sync::Arc::new(InstrumentationLibrary::new( + /// env!("CARGO_PKG_NAME"), + /// Some(env!("CARGO_PKG_VERSION")), + /// Some("https://opentelemetry.io/schema/1.0.0"), + /// None, + /// )); + /// let logger = provider.library_logger(library); + /// ``` + fn library_logger(&self, library: Arc) -> Self::Logger; + + /// Returns a new logger with the given name. + /// + /// The `name` should be the application name or the name of the library + /// providing instrumentation. If the name is empty, then an + /// implementation-defined default name may be used instead. + fn logger(&self, name: impl Into>) -> Self::Logger { + self.versioned_logger(name, None, None, None) + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/logs/mod.rs temporalio-1.3.0/vendor/opentelemetry_api/src/logs/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/logs/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/logs/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,72 @@ +//! # OpenTelemetry Logs API + +use crate::ExportError; +use futures_channel::{mpsc::TrySendError, oneshot::Canceled}; +use std::time::Duration; +use thiserror::Error; + +mod logger; +mod noop; +mod record; + +pub use logger::{Logger, LoggerProvider}; +pub use noop::NoopLoggerProvider; +pub use record::{AnyValue, LogRecord, LogRecordBuilder, Severity, TraceContext}; + +/// Describe the result of operations in log SDK. +pub type LogResult = Result; + +#[derive(Error, Debug)] +#[non_exhaustive] +/// Errors returned by the log SDK. +pub enum LogError { + /// Export failed with the error returned by the exporter. + #[error("Exporter {} encountered the following errors: {0}", .0.exporter_name())] + ExportFailed(Box), + + /// Export failed to finish after certain period and processor stopped the export. + #[error("Exporter timed out after {} seconds", .0.as_secs())] + ExportTimedOut(Duration), + + /// Other errors propagated from log SDK that weren't covered above. + #[error(transparent)] + Other(#[from] Box), +} + +impl From for LogError +where + T: ExportError, +{ + fn from(err: T) -> Self { + LogError::ExportFailed(Box::new(err)) + } +} + +impl From> for LogError { + fn from(err: TrySendError) -> Self { + LogError::Other(Box::new(err.into_send_error())) + } +} + +impl From for LogError { + fn from(err: Canceled) -> Self { + LogError::Other(Box::new(err)) + } +} + +impl From for LogError { + fn from(err_msg: String) -> Self { + LogError::Other(Box::new(Custom(err_msg))) + } +} + +impl From<&'static str> for LogError { + fn from(err_msg: &'static str) -> Self { + LogError::Other(Box::new(Custom(err_msg.into()))) + } +} + +/// Wrap type for string +#[derive(Error, Debug)] +#[error("{0}")] +struct Custom(String); diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/logs/noop.rs temporalio-1.3.0/vendor/opentelemetry_api/src/logs/noop.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/logs/noop.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/logs/noop.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,47 @@ +use std::{borrow::Cow, sync::Arc}; + +use crate::{ + logs::{LogRecord, Logger, LoggerProvider}, + InstrumentationLibrary, KeyValue, +}; + +/// A no-op implementation of a [`LoggerProvider`]. +#[derive(Clone, Debug, Default)] +pub struct NoopLoggerProvider(()); + +impl NoopLoggerProvider { + /// Create a new no-op logger provider. + pub fn new() -> Self { + NoopLoggerProvider(()) + } +} + +impl LoggerProvider for NoopLoggerProvider { + type Logger = NoopLogger; + + fn library_logger(&self, _library: Arc) -> Self::Logger { + NoopLogger(()) + } + + fn versioned_logger( + &self, + _name: impl Into>, + _version: Option>, + _schema_url: Option>, + _attributes: Option>, + ) -> Self::Logger { + NoopLogger(()) + } +} + +/// A no-op implementation of a [`Logger`] +#[derive(Clone, Debug)] +pub struct NoopLogger(()); + +impl Logger for NoopLogger { + fn emit(&self, _record: LogRecord) {} + #[cfg(feature = "logs_level_enabled")] + fn event_enabled(&self, _level: super::Severity, _target: &str) -> bool { + true + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/logs/record.rs temporalio-1.3.0/vendor/opentelemetry_api/src/logs/record.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/logs/record.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/logs/record.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,367 @@ +use crate::{ + trace::{SpanContext, SpanId, TraceContextExt, TraceFlags, TraceId}, + Array, Key, OrderMap, StringValue, Value, +}; +use std::{borrow::Cow, time::SystemTime}; + +#[derive(Debug, Clone, Default)] +#[non_exhaustive] +/// LogRecord represents all data carried by a log record, and +/// is provided to `LogExporter`s as input. +pub struct LogRecord { + /// Record timestamp + pub timestamp: Option, + + /// Timestamp for when the record was observed by OpenTelemetry + pub observed_timestamp: Option, + + /// Trace context for logs associated with spans + pub trace_context: Option, + + /// The original severity string from the source + pub severity_text: Option>, + /// The corresponding severity value, normalized + pub severity_number: Option, + + /// Record body + pub body: Option, + + /// Additional attributes associated with this record + pub attributes: Option>, +} + +impl LogRecord { + /// Create a [`LogRecordBuilder`] to create a new Log Record + pub fn builder() -> LogRecordBuilder { + LogRecordBuilder::new() + } +} + +/// TraceContext stores the trace data for logs that have an associated +/// span. +#[derive(Debug, Clone)] +#[non_exhaustive] +pub struct TraceContext { + /// Trace id + pub trace_id: TraceId, + /// Span Id + pub span_id: SpanId, + /// Trace flags + pub trace_flags: Option, +} + +impl From<&SpanContext> for TraceContext { + fn from(span_context: &SpanContext) -> Self { + TraceContext { + trace_id: span_context.trace_id(), + span_id: span_context.span_id(), + trace_flags: Some(span_context.trace_flags()), + } + } +} + +/// Value types for representing arbitrary values in a log record. +#[derive(Debug, Clone)] +pub enum AnyValue { + /// An integer value + Int(i64), + /// A double value + Double(f64), + /// A string value + String(StringValue), + /// A boolean value + Boolean(bool), + /// A byte array + Bytes(Vec), + /// An array of `Any` values + ListAny(Vec), + /// A map of string keys to `Any` values, arbitrarily nested. + Map(OrderMap), +} + +macro_rules! impl_trivial_from { + ($t:ty, $variant:path) => { + impl From<$t> for AnyValue { + fn from(val: $t) -> AnyValue { + $variant(val.into()) + } + } + }; +} + +impl_trivial_from!(i8, AnyValue::Int); +impl_trivial_from!(i16, AnyValue::Int); +impl_trivial_from!(i32, AnyValue::Int); +impl_trivial_from!(i64, AnyValue::Int); + +impl_trivial_from!(u8, AnyValue::Int); +impl_trivial_from!(u16, AnyValue::Int); +impl_trivial_from!(u32, AnyValue::Int); + +impl_trivial_from!(f64, AnyValue::Double); +impl_trivial_from!(f32, AnyValue::Double); + +impl_trivial_from!(String, AnyValue::String); +impl_trivial_from!(Cow<'static, str>, AnyValue::String); +impl_trivial_from!(&'static str, AnyValue::String); +impl_trivial_from!(StringValue, AnyValue::String); + +impl_trivial_from!(bool, AnyValue::Boolean); + +impl> FromIterator for AnyValue { + /// Creates an [`AnyValue::ListAny`] value from a sequence of `Into` values. + fn from_iter>(iter: I) -> Self { + AnyValue::ListAny(iter.into_iter().map(Into::into).collect()) + } +} + +impl, V: Into> FromIterator<(K, V)> for AnyValue { + /// Creates an [`AnyValue::Map`] value from a sequence of key-value pairs + /// that can be converted into a `Key` and `AnyValue` respectively. + fn from_iter>(iter: I) -> Self { + AnyValue::Map(OrderMap::from_iter( + iter.into_iter().map(|(k, v)| (k.into(), v.into())), + )) + } +} + +impl From for AnyValue { + fn from(value: Value) -> Self { + match value { + Value::Bool(b) => b.into(), + Value::I64(i) => i.into(), + Value::F64(f) => f.into(), + Value::String(s) => s.into(), + Value::Array(a) => match a { + Array::Bool(b) => AnyValue::from_iter(b), + Array::F64(f) => AnyValue::from_iter(f), + Array::I64(i) => AnyValue::from_iter(i), + Array::String(s) => AnyValue::from_iter(s), + }, + } + } +} + +/// A normalized severity value. +#[derive(Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd)] +pub enum Severity { + /// TRACE + Trace = 1, + /// TRACE2 + Trace2 = 2, + /// TRACE3 + Trace3 = 3, + /// TRACE4 + Trace4 = 4, + /// DEBUG + Debug = 5, + /// DEBUG2 + Debug2 = 6, + /// DEBUG3 + Debug3 = 7, + /// DEBUG4 + Debug4 = 8, + /// INFO + Info = 9, + /// INFO2 + Info2 = 10, + /// INFO3 + Info3 = 11, + /// INFO4 + Info4 = 12, + /// WARN + Warn = 13, + /// WARN2 + Warn2 = 14, + /// WARN3 + Warn3 = 15, + /// WARN4 + Warn4 = 16, + /// ERROR + Error = 17, + /// ERROR2 + Error2 = 18, + /// ERROR3 + Error3 = 19, + /// ERROR4 + Error4 = 20, + /// FATAL + Fatal = 21, + /// FATAL2 + Fatal2 = 22, + /// FATAL3 + Fatal3 = 23, + /// FATAL4 + Fatal4 = 24, +} + +impl Severity { + /// Return the string representing the short name for the `Severity` + /// value as specified by the OpenTelemetry logs data model. + pub const fn name(&self) -> &'static str { + match &self { + Severity::Trace => "TRACE", + Severity::Trace2 => "TRACE2", + Severity::Trace3 => "TRACE3", + Severity::Trace4 => "TRACE4", + + Severity::Debug => "DEBUG", + Severity::Debug2 => "DEBUG2", + Severity::Debug3 => "DEBUG3", + Severity::Debug4 => "DEBUG4", + + Severity::Info => "INFO", + Severity::Info2 => "INFO2", + Severity::Info3 => "INFO3", + Severity::Info4 => "INFO4", + + Severity::Warn => "WARN", + Severity::Warn2 => "WARN2", + Severity::Warn3 => "WARN3", + Severity::Warn4 => "WARN4", + + Severity::Error => "ERROR", + Severity::Error2 => "ERROR2", + Severity::Error3 => "ERROR3", + Severity::Error4 => "ERROR4", + + Severity::Fatal => "FATAL", + Severity::Fatal2 => "FATAL2", + Severity::Fatal3 => "FATAL3", + Severity::Fatal4 => "FATAL4", + } + } +} + +/// A builder for [`LogRecord`] values. +#[derive(Debug, Clone)] +pub struct LogRecordBuilder { + record: LogRecord, +} + +impl LogRecordBuilder { + /// Create a new LogRecordBuilder + pub fn new() -> Self { + Self { + record: Default::default(), + } + } + + /// Assign timestamp + pub fn with_timestamp(self, timestamp: SystemTime) -> Self { + Self { + record: LogRecord { + timestamp: Some(timestamp), + ..self.record + }, + } + } + + /// Assign observed timestamp + pub fn with_observed_timestamp(self, timestamp: SystemTime) -> Self { + Self { + record: LogRecord { + observed_timestamp: Some(timestamp), + ..self.record + }, + } + } + + /// Assign the record's [`TraceContext`] + pub fn with_span_context(self, span_context: &SpanContext) -> Self { + Self { + record: LogRecord { + trace_context: Some(TraceContext { + span_id: span_context.span_id(), + trace_id: span_context.trace_id(), + trace_flags: Some(span_context.trace_flags()), + }), + ..self.record + }, + } + } + + /// Assign the record's [`TraceContext`] from a `TraceContextExt` trait + pub fn with_context(self, context: &T) -> Self + where + T: TraceContextExt, + { + if context.has_active_span() { + self.with_span_context(context.span().span_context()) + } else { + self + } + } + + /// Assign severity text + pub fn with_severity_text(self, severity: T) -> Self + where + T: Into>, + { + Self { + record: LogRecord { + severity_text: Some(severity.into()), + ..self.record + }, + } + } + + /// Assign severity number + pub fn with_severity_number(self, severity: Severity) -> Self { + Self { + record: LogRecord { + severity_number: Some(severity), + ..self.record + }, + } + } + + /// Assign body + pub fn with_body(self, body: AnyValue) -> Self { + Self { + record: LogRecord { + body: Some(body), + ..self.record + }, + } + } + + /// Assign attributes. + /// The SDK doesn't carry on any deduplication on these attributes. + pub fn with_attributes(self, attributes: Vec<(Key, AnyValue)>) -> Self { + Self { + record: LogRecord { + attributes: Some(attributes), + ..self.record + }, + } + } + + /// Set a single attribute for this record. + /// The SDK doesn't carry on any deduplication on these attributes. + pub fn with_attribute(mut self, key: K, value: V) -> Self + where + K: Into, + V: Into, + { + if let Some(ref mut vec) = self.record.attributes { + vec.push((key.into(), value.into())); + } else { + let vec = vec![(key.into(), value.into())]; + self.record.attributes = Some(vec); + } + + self + } + + /// Build the record, consuming the Builder + pub fn build(self) -> LogRecord { + self.record + } +} + +impl Default for LogRecordBuilder { + fn default() -> Self { + Self::new() + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/counter.rs temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/counter.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/counter.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/counter.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,15 +1,15 @@ use crate::{ - metrics::{InstrumentBuilder, MetricsError}, - Context, KeyValue, + metrics::{AsyncInstrument, AsyncInstrumentBuilder, InstrumentBuilder, MetricsError}, + KeyValue, }; use core::fmt; -use std::convert::TryFrom; use std::sync::Arc; +use std::{any::Any, convert::TryFrom}; /// An SDK implemented instrument that records increasing values. pub trait SyncCounter { /// Records an increment to the counter. - fn add(&self, cx: &Context, value: T, attributes: &[KeyValue]); + fn add(&self, value: T, attributes: &[KeyValue]); } /// An instrument that records increasing values. @@ -32,8 +32,8 @@ } /// Records an increment to the counter. - pub fn add(&self, cx: &Context, value: T, attributes: &[KeyValue]) { - self.0.add(cx, value, attributes) + pub fn add(&self, value: T, attributes: &[KeyValue]) { + self.0.add(value, attributes) } } @@ -61,22 +61,13 @@ } } -/// An SDK implemented async instrument that records increasing values. -pub trait AsyncCounter { - /// Records an increment to the counter. - /// - /// It is only valid to call this within a callback. If called outside of the - /// registered callback it should have no effect on the instrument, and an - /// error will be reported via the error handler. - fn observe(&self, cx: &Context, value: T, attributes: &[KeyValue]); -} - /// An async instrument that records increasing values. -pub struct ObservableCounter(Arc + Send + Sync>); +#[derive(Clone)] +pub struct ObservableCounter(Arc>); impl ObservableCounter { /// Create a new observable counter. - pub fn new(inner: Arc + Send + Sync>) -> Self { + pub fn new(inner: Arc>) -> Self { ObservableCounter(inner) } } @@ -96,35 +87,52 @@ /// It is only valid to call this within a callback. If called outside of the /// registered callback it should have no effect on the instrument, and an /// error will be reported via the error handler. - pub fn observe(&self, cx: &Context, value: T, attributes: &[KeyValue]) { - self.0.observe(cx, value, attributes) + pub fn observe(&self, value: T, attributes: &[KeyValue]) { + self.0.observe(value, attributes) + } + + /// Used for SDKs to downcast instruments in callbacks. + pub fn as_any(&self) -> Arc { + self.0.as_any() + } +} + +impl AsyncInstrument for ObservableCounter { + fn observe(&self, measurement: T, attributes: &[KeyValue]) { + self.0.observe(measurement, attributes) + } + + fn as_any(&self) -> Arc { + self.0.as_any() } } -impl TryFrom>> for ObservableCounter { +impl TryFrom, u64>> for ObservableCounter { type Error = MetricsError; fn try_from( - builder: InstrumentBuilder<'_, ObservableCounter>, + builder: AsyncInstrumentBuilder<'_, ObservableCounter, u64>, ) -> Result { builder.meter.instrument_provider.u64_observable_counter( builder.name, builder.description, builder.unit, + builder.callbacks, ) } } -impl TryFrom>> for ObservableCounter { +impl TryFrom, f64>> for ObservableCounter { type Error = MetricsError; fn try_from( - builder: InstrumentBuilder<'_, ObservableCounter>, + builder: AsyncInstrumentBuilder<'_, ObservableCounter, f64>, ) -> Result { builder.meter.instrument_provider.f64_observable_counter( builder.name, builder.description, builder.unit, + builder.callbacks, ) } } diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/gauge.rs temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/gauge.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/gauge.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/gauge.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,24 +1,14 @@ use crate::{ - metrics::{InstrumentBuilder, MetricsError}, - Context, KeyValue, + metrics::{AsyncInstrument, AsyncInstrumentBuilder, MetricsError}, + KeyValue, }; use core::fmt; -use std::convert::TryFrom; use std::sync::Arc; - -/// An SDK implemented instrument that records independent readings. -pub trait AsyncGauge: Send + Sync { - /// Records the state of the instrument. - /// - /// It is only valid to call this within a callback. If called outside of the - /// registered callback it should have no effect on the instrument, and an - /// error will be reported via the error handler. - fn observe(&self, cx: &Context, value: T, attributes: &[KeyValue]); -} +use std::{any::Any, convert::TryFrom}; /// An instrument that records independent readings. #[derive(Clone)] -pub struct ObservableGauge(Arc>); +pub struct ObservableGauge(Arc>); impl fmt::Debug for ObservableGauge where @@ -38,50 +28,74 @@ /// It is only valid to call this within a callback. If called outside of the /// registered callback it should have no effect on the instrument, and an /// error will be reported via the error handler. - pub fn observe(&self, cx: &Context, value: T, attributes: &[KeyValue]) { - self.0.observe(cx, value, attributes) + pub fn observe(&self, measurement: T, attributes: &[KeyValue]) { + self.0.observe(measurement, attributes) + } + + /// Used by SDKs to downcast instruments in callbacks. + pub fn as_any(&self) -> Arc { + self.0.as_any() + } +} + +impl AsyncInstrument for ObservableGauge { + fn observe(&self, measurement: M, attributes: &[KeyValue]) { + self.observe(measurement, attributes) + } + + fn as_any(&self) -> Arc { + self.0.as_any() } } impl ObservableGauge { /// Create a new gauge - pub fn new(inner: Arc>) -> Self { + pub fn new(inner: Arc>) -> Self { ObservableGauge(inner) } } -impl TryFrom>> for ObservableGauge { +impl TryFrom, u64>> for ObservableGauge { type Error = MetricsError; - fn try_from(builder: InstrumentBuilder<'_, ObservableGauge>) -> Result { + fn try_from( + builder: AsyncInstrumentBuilder<'_, ObservableGauge, u64>, + ) -> Result { builder.meter.instrument_provider.u64_observable_gauge( builder.name, builder.description, builder.unit, + builder.callbacks, ) } } -impl TryFrom>> for ObservableGauge { +impl TryFrom, f64>> for ObservableGauge { type Error = MetricsError; - fn try_from(builder: InstrumentBuilder<'_, ObservableGauge>) -> Result { + fn try_from( + builder: AsyncInstrumentBuilder<'_, ObservableGauge, f64>, + ) -> Result { builder.meter.instrument_provider.f64_observable_gauge( builder.name, builder.description, builder.unit, + builder.callbacks, ) } } -impl TryFrom>> for ObservableGauge { +impl TryFrom, i64>> for ObservableGauge { type Error = MetricsError; - fn try_from(builder: InstrumentBuilder<'_, ObservableGauge>) -> Result { + fn try_from( + builder: AsyncInstrumentBuilder<'_, ObservableGauge, i64>, + ) -> Result { builder.meter.instrument_provider.i64_observable_gauge( builder.name, builder.description, builder.unit, + builder.callbacks, ) } } diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/histogram.rs temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/histogram.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/histogram.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/histogram.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ use crate::{ metrics::{InstrumentBuilder, MetricsError}, - Context, KeyValue, + KeyValue, }; use core::fmt; use std::convert::TryFrom; @@ -9,7 +9,7 @@ /// An SDK implemented instrument that records a distribution of values. pub trait SyncHistogram { /// Adds an additional value to the distribution. - fn record(&self, cx: &Context, value: T, attributes: &[KeyValue]); + fn record(&self, value: T, attributes: &[KeyValue]); } /// An instrument that records a distribution of values. @@ -32,8 +32,8 @@ } /// Adds an additional value to the distribution. - pub fn record(&self, cx: &Context, value: T, attributes: &[KeyValue]) { - self.0.record(cx, value, attributes) + pub fn record(&self, value: T, attributes: &[KeyValue]) { + self.0.record(value, attributes) } } diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/mod.rs temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,18 +1,43 @@ use crate::metrics::{Meter, MetricsError, Result, Unit}; +use crate::{global, KeyValue}; use core::fmt; +use std::any::Any; +use std::borrow::Cow; use std::convert::TryFrom; use std::marker; +use std::sync::Arc; pub(super) mod counter; pub(super) mod gauge; pub(super) mod histogram; pub(super) mod up_down_counter; -/// Configuration for building an instrument. +// instrument validation error strings +const INSTRUMENT_NAME_EMPTY: &str = "instrument name must be non-empty"; +const INSTRUMENT_NAME_LENGTH: &str = "instrument name must be less than 64 characters"; +const INSTRUMENT_NAME_INVALID_CHAR: &str = + "characters in instrument name must be ASCII and belong to the alphanumeric characters, '_', '.', and '-'"; +const INSTRUMENT_NAME_FIRST_ALPHABETIC: &str = + "instrument name must start with an alphabetic character"; +const INSTRUMENT_UNIT_LENGTH: &str = "instrument unit must be less than 64 characters"; +const INSTRUMENT_UNIT_INVALID_CHAR: &str = "characters in instrument unit must be ASCII"; + +/// An SDK implemented instrument that records measurements via callback. +pub trait AsyncInstrument: Send + Sync { + /// Observes the state of the instrument. + /// + /// It is only valid to call this within a callback. + fn observe(&self, measurement: T, attributes: &[KeyValue]); + + /// Used for SDKs to downcast instruments in callbacks. + fn as_any(&self) -> Arc; +} + +/// Configuration for building a sync instrument. pub struct InstrumentBuilder<'a, T> { meter: &'a Meter, - name: String, - description: Option, + name: Cow<'static, str>, + description: Option>, unit: Option, _marker: marker::PhantomData, } @@ -21,8 +46,8 @@ where T: TryFrom, { - /// Create a new counter builder - pub(crate) fn new(meter: &'a Meter, name: String) -> Self { + /// Create a new instrument builder + pub(crate) fn new(meter: &'a Meter, name: Cow<'static, str>) -> Self { InstrumentBuilder { meter, name, @@ -32,31 +57,75 @@ } } - /// Set the description for this counter - pub fn with_description>(mut self, description: S) -> Self { + /// Set the description for this instrument + pub fn with_description>>(mut self, description: S) -> Self { self.description = Some(description.into()); self } - /// Set the unit for this counter. + /// Set the unit for this instrument. + /// + /// Unit is case sensitive(`kb` is not the same as `kB`). + /// + /// Unit must be: + /// - ASCII string + /// - No longer than 63 characters pub fn with_unit(mut self, unit: Unit) -> Self { self.unit = Some(unit); self } - /// Creates a new counter instrument. + /// Validate the instrument configuration and creates a new instrument. pub fn try_init(self) -> Result { + self.validate_instrument_config() + .map_err(MetricsError::InvalidInstrumentConfiguration)?; T::try_from(self) } - /// Creates a new counter instrument. + /// Creates a new instrument. + /// + /// This method reports configuration errors but still returns the instrument. /// /// # Panics /// - /// This function panics if the instrument cannot be created. Use try_init if you want to - /// handle errors. + /// Panics if the instrument cannot be created. Use + /// [`try_init`](InstrumentBuilder::try_init) if you want to handle errors. pub fn init(self) -> T { - self.try_init().unwrap() + if let Err(err) = self.validate_instrument_config() { + global::handle_error(MetricsError::InvalidInstrumentConfiguration(err)); + } + + T::try_from(self).unwrap() + } + + fn validate_instrument_config(&self) -> std::result::Result<(), &'static str> { + // validate instrument name + if self.name.is_empty() { + return Err(INSTRUMENT_NAME_EMPTY); + } + if self.name.len() > 63 { + return Err(INSTRUMENT_NAME_LENGTH); + } + if self.name.starts_with(|c: char| !c.is_ascii_alphabetic()) { + return Err(INSTRUMENT_NAME_FIRST_ALPHABETIC); + } + if self + .name + .contains(|c: char| !c.is_ascii_alphanumeric() && c != '_' && c != '.' && c != '-') + { + return Err(INSTRUMENT_NAME_INVALID_CHAR); + } + + // validate instrument unit + if let Some(unit) = &self.unit { + if unit.as_str().len() > 63 { + return Err(INSTRUMENT_UNIT_LENGTH); + } + if unit.as_str().contains(|c: char| !c.is_ascii()) { + return Err(INSTRUMENT_UNIT_INVALID_CHAR); + } + } + Ok(()) } } @@ -70,3 +139,204 @@ .finish() } } + +/// A function registered with a [Meter] that makes observations for the +/// instruments it is registered with. +/// +/// The async instrument parameter is used to record measurement observations +/// for these instruments. +/// +/// The function needs to complete in a finite amount of time. +pub type Callback = Box) + Send + Sync>; + +/// Configuration for building an async instrument. +pub struct AsyncInstrumentBuilder<'a, I, M> +where + I: AsyncInstrument, +{ + meter: &'a Meter, + name: Cow<'static, str>, + description: Option>, + unit: Option, + _inst: marker::PhantomData, + callbacks: Vec>, +} + +impl<'a, I, M> AsyncInstrumentBuilder<'a, I, M> +where + I: TryFrom, + I: AsyncInstrument, +{ + /// Create a new instrument builder + pub(crate) fn new(meter: &'a Meter, name: Cow<'static, str>) -> Self { + AsyncInstrumentBuilder { + meter, + name, + description: None, + unit: None, + _inst: marker::PhantomData, + callbacks: Vec::new(), + } + } + + /// Set the description for this instrument + pub fn with_description>>(mut self, description: S) -> Self { + self.description = Some(description.into()); + self + } + + /// Set the unit for this instrument. + /// + /// Unit is case sensitive(`kb` is not the same as `kB`). + /// + /// Unit must be: + /// - ASCII string + /// - No longer than 63 characters + pub fn with_unit(mut self, unit: Unit) -> Self { + self.unit = Some(unit); + self + } + + /// Set the callback to be called for this instrument. + pub fn with_callback(mut self, callback: F) -> Self + where + F: Fn(&dyn AsyncInstrument) + Send + Sync + 'static, + { + self.callbacks.push(Box::new(callback)); + self + } + + /// Validate the instrument configuration and creates a new instrument. + pub fn try_init(self) -> Result { + self.validate_instrument_config() + .map_err(MetricsError::InvalidInstrumentConfiguration)?; + I::try_from(self) + } + + /// Creates a new instrument. + /// + /// This method reports configuration errors but still returns the instrument. + /// + /// # Panics + /// + /// Panics if the instrument cannot be created. Use + /// [`try_init`](InstrumentBuilder::try_init) if you want to handle errors. + pub fn init(self) -> I { + if let Err(err) = self.validate_instrument_config() { + global::handle_error(MetricsError::InvalidInstrumentConfiguration(err)); + } + + I::try_from(self).unwrap() + } + + fn validate_instrument_config(&self) -> std::result::Result<(), &'static str> { + // validate instrument name + if self.name.is_empty() { + return Err(INSTRUMENT_NAME_EMPTY); + } + if self.name.len() > 63 { + return Err(INSTRUMENT_NAME_LENGTH); + } + if self.name.starts_with(|c: char| !c.is_ascii_alphabetic()) { + return Err(INSTRUMENT_NAME_FIRST_ALPHABETIC); + } + if self + .name + .contains(|c: char| !c.is_ascii_alphanumeric() && c != '_' && c != '.' && c != '-') + { + return Err(INSTRUMENT_NAME_INVALID_CHAR); + } + + // validate instrument unit + if let Some(unit) = &self.unit { + if unit.as_str().len() > 63 { + return Err(INSTRUMENT_UNIT_LENGTH); + } + if unit.as_str().contains(|c: char| !c.is_ascii()) { + return Err(INSTRUMENT_UNIT_INVALID_CHAR); + } + } + Ok(()) + } +} + +impl fmt::Debug for AsyncInstrumentBuilder<'_, I, M> +where + I: AsyncInstrument, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("InstrumentBuilder") + .field("name", &self.name) + .field("description", &self.description) + .field("unit", &self.unit) + .field("kind", &std::any::type_name::()) + .field("callbacks_len", &self.callbacks.len()) + .finish() + } +} + +#[cfg(test)] +mod tests { + use crate::metrics::instruments::{ + INSTRUMENT_NAME_FIRST_ALPHABETIC, INSTRUMENT_NAME_INVALID_CHAR, INSTRUMENT_NAME_LENGTH, + INSTRUMENT_UNIT_INVALID_CHAR, INSTRUMENT_UNIT_LENGTH, + }; + use crate::metrics::noop::NoopMeterCore; + use crate::metrics::{Counter, InstrumentBuilder, Unit}; + use std::sync::Arc; + + #[test] + fn test_instrument_config_validation() { + let meter = crate::metrics::Meter::new(Arc::new(NoopMeterCore::new())); + // (name, expected error) + let instrument_name_test_cases = vec![ + ("validateName", ""), + ("_startWithNoneAlphabet", INSTRUMENT_NAME_FIRST_ALPHABETIC), + ("utf8char锈", INSTRUMENT_NAME_INVALID_CHAR), + ( + "a12345678901234567890123456789012345678901234567890123456789012", + "", + ), + ( + "a123456789012345678901234567890123456789012345678901234567890123", + INSTRUMENT_NAME_LENGTH, + ), + ("invalid name", INSTRUMENT_NAME_INVALID_CHAR), + ]; + for (name, expected_error) in instrument_name_test_cases { + let builder: InstrumentBuilder<'_, Counter> = + InstrumentBuilder::new(&meter, name.into()); + if expected_error.is_empty() { + assert!(builder.validate_instrument_config().is_ok()); + } else { + assert_eq!( + builder.validate_instrument_config().unwrap_err(), + expected_error + ); + } + } + + // (unit, expected error) + let instrument_unit_test_cases = vec![ + ( + "0123456789012345678901234567890123456789012345678901234567890123", + INSTRUMENT_UNIT_LENGTH, + ), + ("utf8char锈", INSTRUMENT_UNIT_INVALID_CHAR), + ("kb", ""), + ]; + + for (unit, expected_error) in instrument_unit_test_cases { + let builder: InstrumentBuilder<'_, Counter> = + InstrumentBuilder::new(&meter, "test".into()).with_unit(Unit::new(unit)); + if expected_error.is_empty() { + assert!(builder.validate_instrument_config().is_ok()); + } else { + assert_eq!( + builder.validate_instrument_config().unwrap_err(), + expected_error + ); + } + } + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/up_down_counter.rs temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/up_down_counter.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/up_down_counter.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/instruments/up_down_counter.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,15 +1,17 @@ use crate::{ metrics::{InstrumentBuilder, MetricsError}, - Context, KeyValue, + KeyValue, }; use core::fmt; -use std::convert::TryFrom; use std::sync::Arc; +use std::{any::Any, convert::TryFrom}; + +use super::{AsyncInstrument, AsyncInstrumentBuilder}; /// An SDK implemented instrument that records increasing or decreasing values. pub trait SyncUpDownCounter { /// Records an increment or decrement to the counter. - fn add(&self, cx: &Context, value: T, attributes: &[KeyValue]); + fn add(&self, value: T, attributes: &[KeyValue]); } /// An instrument that records increasing or decreasing values. @@ -35,8 +37,8 @@ } /// Records an increment or decrement to the counter. - pub fn add(&self, cx: &Context, value: T, attributes: &[KeyValue]) { - self.0.add(cx, value, attributes) + pub fn add(&self, value: T, attributes: &[KeyValue]) { + self.0.add(value, attributes) } } @@ -64,19 +66,9 @@ } } -/// An SDK implemented async instrument that records increasing or decreasing values. -pub trait AsyncUpDownCounter { - /// Records the increment or decrement to the counter. - /// - /// It is only valid to call this within a callback. If called outside of the - /// registered callback it should have no effect on the instrument, and an - /// error will be reported via the error handler. - fn observe(&self, cx: &Context, value: T, attributes: &[KeyValue]); -} - /// An async instrument that records increasing or decreasing values. #[derive(Clone)] -pub struct ObservableUpDownCounter(Arc + Send + Sync>); +pub struct ObservableUpDownCounter(Arc>); impl fmt::Debug for ObservableUpDownCounter where @@ -92,7 +84,7 @@ impl ObservableUpDownCounter { /// Create a new observable up down counter. - pub fn new(inner: Arc + Send + Sync>) -> Self { + pub fn new(inner: Arc>) -> Self { ObservableUpDownCounter(inner) } @@ -101,33 +93,62 @@ /// It is only valid to call this within a callback. If called outside of the /// registered callback it should have no effect on the instrument, and an /// error will be reported via the error handler. - pub fn observe(&self, cx: &Context, value: T, attributes: &[KeyValue]) { - self.0.observe(cx, value, attributes) + pub fn observe(&self, value: T, attributes: &[KeyValue]) { + self.0.observe(value, attributes) + } + + /// Used for SDKs to downcast instruments in callbacks. + pub fn as_any(&self) -> Arc { + self.0.as_any() + } +} + +impl AsyncInstrument for ObservableUpDownCounter { + fn observe(&self, measurement: T, attributes: &[KeyValue]) { + self.0.observe(measurement, attributes) + } + + fn as_any(&self) -> Arc { + self.0.as_any() } } -impl TryFrom>> for ObservableUpDownCounter { +impl TryFrom, i64>> + for ObservableUpDownCounter +{ type Error = MetricsError; fn try_from( - builder: InstrumentBuilder<'_, ObservableUpDownCounter>, + builder: AsyncInstrumentBuilder<'_, ObservableUpDownCounter, i64>, ) -> Result { builder .meter .instrument_provider - .i64_observable_up_down_counter(builder.name, builder.description, builder.unit) + .i64_observable_up_down_counter( + builder.name, + builder.description, + builder.unit, + builder.callbacks, + ) } } -impl TryFrom>> for ObservableUpDownCounter { +impl TryFrom, f64>> + for ObservableUpDownCounter +{ type Error = MetricsError; fn try_from( - builder: InstrumentBuilder<'_, ObservableUpDownCounter>, + builder: AsyncInstrumentBuilder<'_, ObservableUpDownCounter, f64>, ) -> Result { builder .meter .instrument_provider - .f64_observable_up_down_counter(builder.name, builder.description, builder.unit) + .f64_observable_up_down_counter( + builder.name, + builder.description, + builder.unit, + builder.callbacks, + ) } } diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/meter.rs temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/meter.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/meter.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/meter.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,17 +1,34 @@ use core::fmt; +use std::any::Any; +use std::borrow::Cow; use std::sync::Arc; use crate::metrics::{ - Counter, Histogram, InstrumentBuilder, InstrumentProvider, MetricsError, ObservableCounter, - ObservableGauge, ObservableUpDownCounter, UpDownCounter, + AsyncInstrumentBuilder, Counter, Histogram, InstrumentBuilder, InstrumentProvider, + ObservableCounter, ObservableGauge, ObservableUpDownCounter, Result, UpDownCounter, }; -use crate::{Context, InstrumentationLibrary}; +use crate::KeyValue; -/// Returns named meter instances +use super::AsyncInstrument; + +/// Provides access to named [Meter] instances, for instrumenting an application +/// or crate. pub trait MeterProvider { - /// Creates a named [`Meter`] instance. - fn meter(&self, name: &'static str) -> Meter { - self.versioned_meter(name, None, None) + /// Returns a new [Meter] with the provided name and default configuration. + /// + /// A [Meter] should be scoped at most to a single application or crate. The + /// name needs to be unique so it does not collide with other names used by + /// an application, nor other applications. + /// + /// If the name is empty, then an implementation defined default name will + /// be used instead. + fn meter(&self, name: impl Into>) -> Meter { + self.versioned_meter( + name, + None::>, + None::>, + None, + ) } /// Creates an implementation of the [`Meter`] interface. @@ -22,61 +39,64 @@ /// default name will be used instead. fn versioned_meter( &self, - name: &'static str, - version: Option<&'static str>, - schema_url: Option<&'static str>, + name: impl Into>, + version: Option>>, + schema_url: Option>>, + attributes: Option>, ) -> Meter; } /// Provides access to instrument instances for recording metrics. #[derive(Clone)] pub struct Meter { - pub(crate) instrumentation_library: InstrumentationLibrary, pub(crate) instrument_provider: Arc, } impl Meter { /// Create a new named meter from an instrumentation provider - pub fn new( - instrumentation_library: InstrumentationLibrary, - instrument_provider: Arc, - ) -> Self { + #[doc(hidden)] + pub fn new(instrument_provider: Arc) -> Self { Meter { - instrumentation_library, instrument_provider, } } /// creates an instrument builder for recording increasing values. - pub fn u64_counter(&self, name: impl Into) -> InstrumentBuilder<'_, Counter> { + pub fn u64_counter( + &self, + name: impl Into>, + ) -> InstrumentBuilder<'_, Counter> { InstrumentBuilder::new(self, name.into()) } /// creates an instrument builder for recording increasing values. - pub fn f64_counter(&self, name: impl Into) -> InstrumentBuilder<'_, Counter> { + pub fn f64_counter( + &self, + name: impl Into>, + ) -> InstrumentBuilder<'_, Counter> { InstrumentBuilder::new(self, name.into()) } /// creates an instrument builder for recording increasing values via callback. pub fn u64_observable_counter( &self, - name: impl Into, - ) -> InstrumentBuilder<'_, ObservableCounter> { - InstrumentBuilder::new(self, name.into()) + name: impl Into>, + ) -> AsyncInstrumentBuilder<'_, ObservableCounter, u64> { + AsyncInstrumentBuilder::new(self, name.into()) } /// creates an instrument builder for recording increasing values via callback. pub fn f64_observable_counter( &self, - name: impl Into, - ) -> InstrumentBuilder<'_, ObservableCounter> { - InstrumentBuilder::new(self, name.into()) + name: impl Into>, + ) -> AsyncInstrumentBuilder<'_, ObservableCounter, f64> { + AsyncInstrumentBuilder::new(self, name.into()) } /// creates an instrument builder for recording changes of a value. pub fn i64_up_down_counter( &self, - name: impl Into, + name: impl Into>, ) -> InstrumentBuilder<'_, UpDownCounter> { InstrumentBuilder::new(self, name.into()) } @@ -84,7 +104,7 @@ /// creates an instrument builder for recording changes of a value. pub fn f64_up_down_counter( &self, - name: impl Into, + name: impl Into>, ) -> InstrumentBuilder<'_, UpDownCounter> { InstrumentBuilder::new(self, name.into()) } @@ -92,74 +112,108 @@ /// creates an instrument builder for recording changes of a value via callback. pub fn i64_observable_up_down_counter( &self, - name: impl Into, - ) -> InstrumentBuilder<'_, ObservableUpDownCounter> { - InstrumentBuilder::new(self, name.into()) + name: impl Into>, + ) -> AsyncInstrumentBuilder<'_, ObservableUpDownCounter, i64> { + AsyncInstrumentBuilder::new(self, name.into()) } /// creates an instrument builder for recording changes of a value via callback. pub fn f64_observable_up_down_counter( &self, - name: impl Into, - ) -> InstrumentBuilder<'_, ObservableUpDownCounter> { - InstrumentBuilder::new(self, name.into()) + name: impl Into>, + ) -> AsyncInstrumentBuilder<'_, ObservableUpDownCounter, f64> { + AsyncInstrumentBuilder::new(self, name.into()) } /// creates an instrument builder for recording the current value via callback. pub fn u64_observable_gauge( &self, - name: impl Into, - ) -> InstrumentBuilder<'_, ObservableGauge> { - InstrumentBuilder::new(self, name.into()) + name: impl Into>, + ) -> AsyncInstrumentBuilder<'_, ObservableGauge, u64> { + AsyncInstrumentBuilder::new(self, name.into()) } /// creates an instrument builder for recording the current value via callback. pub fn i64_observable_gauge( &self, - name: impl Into, - ) -> InstrumentBuilder<'_, ObservableGauge> { - InstrumentBuilder::new(self, name.into()) + name: impl Into>, + ) -> AsyncInstrumentBuilder<'_, ObservableGauge, i64> { + AsyncInstrumentBuilder::new(self, name.into()) } /// creates an instrument builder for recording the current value via callback. pub fn f64_observable_gauge( &self, - name: impl Into, - ) -> InstrumentBuilder<'_, ObservableGauge> { - InstrumentBuilder::new(self, name.into()) + name: impl Into>, + ) -> AsyncInstrumentBuilder<'_, ObservableGauge, f64> { + AsyncInstrumentBuilder::new(self, name.into()) } /// creates an instrument builder for recording a distribution of values. - pub fn f64_histogram(&self, name: impl Into) -> InstrumentBuilder<'_, Histogram> { + pub fn f64_histogram( + &self, + name: impl Into>, + ) -> InstrumentBuilder<'_, Histogram> { InstrumentBuilder::new(self, name.into()) } /// creates an instrument builder for recording a distribution of values. - pub fn u64_histogram(&self, name: impl Into) -> InstrumentBuilder<'_, Histogram> { + pub fn u64_histogram( + &self, + name: impl Into>, + ) -> InstrumentBuilder<'_, Histogram> { InstrumentBuilder::new(self, name.into()) } /// creates an instrument builder for recording a distribution of values. - pub fn i64_histogram(&self, name: impl Into) -> InstrumentBuilder<'_, Histogram> { + pub fn i64_histogram( + &self, + name: impl Into>, + ) -> InstrumentBuilder<'_, Histogram> { InstrumentBuilder::new(self, name.into()) } - /// Captures the function that will be called during data collection. + /// Registers a callback to be called during the collection of a measurement + /// cycle. /// - /// It is only valid to call `observe` within the scope of the passed function. - pub fn register_callback(&self, callback: F) -> Result<(), MetricsError> + /// The instruments passed as arguments to be registered are the only + /// instruments that may observe values. + /// + /// If no instruments are passed, the callback will not be registered. + pub fn register_callback( + &self, + instruments: &[Arc], + callback: F, + ) -> Result> where - F: Fn(&Context) + Send + Sync + 'static, + F: Fn(&dyn Observer) + Send + Sync + 'static, { self.instrument_provider - .register_callback(Box::new(callback)) + .register_callback(instruments, Box::new(callback)) } } +/// A token representing the unique registration of a callback for a set of +/// instruments with a [Meter]. +pub trait CallbackRegistration: Send + Sync { + /// Removes the callback registration from its associated [Meter]. + fn unregister(&mut self) -> Result<()>; +} + +/// Records measurements for multiple instruments in a callback. +pub trait Observer { + /// Records the f64 value with attributes for the observable. + fn observe_f64(&self, inst: &dyn AsyncInstrument, measurement: f64, attrs: &[KeyValue]); + + /// Records the u64 value with attributes for the observable. + fn observe_u64(&self, inst: &dyn AsyncInstrument, measurement: u64, attrs: &[KeyValue]); + + /// Records the i64 value with attributes for the observable. + fn observe_i64(&self, inst: &dyn AsyncInstrument, measurement: i64, attrs: &[KeyValue]); +} + impl fmt::Debug for Meter { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("Meter") - .field("instrumentation_library", &self.instrumentation_library) - .finish() + f.write_str("Meter") } } diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/mod.rs temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,6 @@ //! # OpenTelemetry Metrics API +use std::any::Any; use std::result; use std::sync::PoisonError; use std::{borrow::Cow, sync::Arc}; @@ -9,17 +10,15 @@ mod meter; pub mod noop; -use crate::{Context, ExportError}; +use crate::ExportError; pub use instruments::{ - counter::{AsyncCounter, Counter, ObservableCounter, SyncCounter}, - gauge::{AsyncGauge, ObservableGauge}, + counter::{Counter, ObservableCounter, SyncCounter}, + gauge::ObservableGauge, histogram::{Histogram, SyncHistogram}, - up_down_counter::{ - AsyncUpDownCounter, ObservableUpDownCounter, SyncUpDownCounter, UpDownCounter, - }, - InstrumentBuilder, + up_down_counter::{ObservableUpDownCounter, SyncUpDownCounter, UpDownCounter}, + AsyncInstrument, AsyncInstrumentBuilder, Callback, InstrumentBuilder, }; -pub use meter::{Meter, MeterProvider}; +pub use meter::{CallbackRegistration, Meter, MeterProvider, Observer}; /// A specialized `Result` type for metric operations. pub type Result = result::Result; @@ -31,33 +30,17 @@ /// Other errors not covered by specific cases. #[error("Metrics error: {0}")] Other(String), - /// Errors when requesting quantiles out of the 0-1 range. - #[error("The requested quantile is out of range")] - InvalidQuantile, - /// Errors when recording nan values. - #[error("NaN value is an invalid input")] - NaNInput, - /// Errors when recording negative values in monotonic sums. - #[error("Negative value is out of range for this instrument")] - NegativeInput, - /// Errors when merging aggregators of incompatible types. - #[error("Inconsistent aggregator types: {0}")] - InconsistentAggregator(String), - /// Errors when requesting data when no data has been collected - #[error("No data collected by this aggregator")] - NoDataCollected, - /// Errors when registering to instruments with the same name and kind - #[error("A metric was already registered by this name with another kind or number type: {0}")] - MetricKindMismatch(String), - /// Errors when processor logic is incorrect - #[error("Inconsistent processor state")] - InconsistentState, - /// Errors when aggregator cannot subtract - #[error("Aggregator does not subtract")] - NoSubtraction, + /// Invalid configuration + #[error("Config error {0}")] + Config(String), /// Fail to export metrics #[error("Metrics exporter {} failed with {0}", .0.exporter_name())] ExportErr(Box), + /// Invalid instrument configuration such invalid instrument name, invalid instrument description, invalid instrument unit, etc. + /// See [spec](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/api.md#general-characteristics) + /// for full list of requirements. + #[error("Invalid instrument configuration: {0}")] + InvalidInstrumentConfiguration(&'static str), } impl From for MetricsError { @@ -103,8 +86,8 @@ /// creates an instrument for recording increasing values. fn u64_counter( &self, - _name: String, - _description: Option, + _name: Cow<'static, str>, + _description: Option>, _unit: Option, ) -> Result> { Ok(Counter::new(Arc::new(noop::NoopSyncInstrument::new()))) @@ -113,8 +96,8 @@ /// creates an instrument for recording increasing values. fn f64_counter( &self, - _name: String, - _description: Option, + _name: Cow<'static, str>, + _description: Option>, _unit: Option, ) -> Result> { Ok(Counter::new(Arc::new(noop::NoopSyncInstrument::new()))) @@ -123,9 +106,10 @@ /// creates an instrument for recording increasing values via callback. fn u64_observable_counter( &self, - _name: String, - _description: Option, + _name: Cow<'static, str>, + _description: Option>, _unit: Option, + _callback: Vec>, ) -> Result> { Ok(ObservableCounter::new(Arc::new( noop::NoopAsyncInstrument::new(), @@ -135,9 +119,10 @@ /// creates an instrument for recording increasing values via callback. fn f64_observable_counter( &self, - _name: String, - _description: Option, + _name: Cow<'static, str>, + _description: Option>, _unit: Option, + _callback: Vec>, ) -> Result> { Ok(ObservableCounter::new(Arc::new( noop::NoopAsyncInstrument::new(), @@ -147,8 +132,8 @@ /// creates an instrument for recording changes of a value. fn i64_up_down_counter( &self, - _name: String, - _description: Option, + _name: Cow<'static, str>, + _description: Option>, _unit: Option, ) -> Result> { Ok(UpDownCounter::new( @@ -159,8 +144,8 @@ /// creates an instrument for recording changes of a value. fn f64_up_down_counter( &self, - _name: String, - _description: Option, + _name: Cow<'static, str>, + _description: Option>, _unit: Option, ) -> Result> { Ok(UpDownCounter::new( @@ -171,9 +156,10 @@ /// creates an instrument for recording changes of a value. fn i64_observable_up_down_counter( &self, - _name: String, - _description: Option, + _name: Cow<'static, str>, + _description: Option>, _unit: Option, + _callback: Vec>, ) -> Result> { Ok(ObservableUpDownCounter::new(Arc::new( noop::NoopAsyncInstrument::new(), @@ -183,9 +169,10 @@ /// creates an instrument for recording changes of a value via callback. fn f64_observable_up_down_counter( &self, - _name: String, - _description: Option, + _name: Cow<'static, str>, + _description: Option>, _unit: Option, + _callback: Vec>, ) -> Result> { Ok(ObservableUpDownCounter::new(Arc::new( noop::NoopAsyncInstrument::new(), @@ -195,9 +182,10 @@ /// creates an instrument for recording the current value via callback. fn u64_observable_gauge( &self, - _name: String, - _description: Option, + _name: Cow<'static, str>, + _description: Option>, _unit: Option, + _callback: Vec>, ) -> Result> { Ok(ObservableGauge::new(Arc::new( noop::NoopAsyncInstrument::new(), @@ -207,9 +195,10 @@ /// creates an instrument for recording the current value via callback. fn i64_observable_gauge( &self, - _name: String, - _description: Option, + _name: Cow<'static, str>, + _description: Option>, _unit: Option, + _callback: Vec>, ) -> Result> { Ok(ObservableGauge::new(Arc::new( noop::NoopAsyncInstrument::new(), @@ -219,9 +208,10 @@ /// creates an instrument for recording the current value via callback. fn f64_observable_gauge( &self, - _name: String, - _description: Option, + _name: Cow<'static, str>, + _description: Option>, _unit: Option, + _callback: Vec>, ) -> Result> { Ok(ObservableGauge::new(Arc::new( noop::NoopAsyncInstrument::new(), @@ -231,8 +221,8 @@ /// creates an instrument for recording a distribution of values. fn f64_histogram( &self, - _name: String, - _description: Option, + _name: Cow<'static, str>, + _description: Option>, _unit: Option, ) -> Result> { Ok(Histogram::new(Arc::new(noop::NoopSyncInstrument::new()))) @@ -241,8 +231,8 @@ /// creates an instrument for recording a distribution of values. fn u64_histogram( &self, - _name: String, - _description: Option, + _name: Cow<'static, str>, + _description: Option>, _unit: Option, ) -> Result> { Ok(Histogram::new(Arc::new(noop::NoopSyncInstrument::new()))) @@ -251,8 +241,8 @@ /// creates an instrument for recording a distribution of values. fn i64_histogram( &self, - _name: String, - _description: Option, + _name: Cow<'static, str>, + _description: Option>, _unit: Option, ) -> Result> { Ok(Histogram::new(Arc::new(noop::NoopSyncInstrument::new()))) @@ -261,5 +251,11 @@ /// Captures the function that will be called during data collection. /// /// It is only valid to call `observe` within the scope of the passed function. - fn register_callback(&self, callback: Box) -> Result<()>; + fn register_callback( + &self, + instruments: &[Arc], + callbacks: Box, + ) -> Result>; } + +type MultiInstrumentCallback = dyn Fn(&dyn Observer) + Send + Sync; diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/noop.rs temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/noop.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/noop.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/metrics/noop.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,12 +5,13 @@ //! to have minimal resource utilization and runtime impact. use crate::{ metrics::{ - AsyncCounter, AsyncGauge, AsyncUpDownCounter, InstrumentProvider, Meter, MeterProvider, + AsyncInstrument, CallbackRegistration, InstrumentProvider, Meter, MeterProvider, Observer, Result, SyncCounter, SyncHistogram, SyncUpDownCounter, }, - Context, InstrumentationLibrary, KeyValue, + KeyValue, }; -use std::sync::Arc; +use std::{any::Any, borrow::Cow, sync::Arc}; + /// A no-op instance of a `MetricProvider` #[derive(Debug, Default)] pub struct NoopMeterProvider { @@ -27,12 +28,12 @@ impl MeterProvider for NoopMeterProvider { fn versioned_meter( &self, - name: &'static str, - version: Option<&'static str>, - schema_url: Option<&'static str>, + _name: impl Into>, + _version: Option>>, + _schema_url: Option>>, + _attributes: Option>, ) -> Meter { - let library = InstrumentationLibrary::new(name, version, schema_url); - Meter::new(library, Arc::new(NoopMeterCore::new())) + Meter::new(Arc::new(NoopMeterCore::new())) } } @@ -50,7 +51,30 @@ } impl InstrumentProvider for NoopMeterCore { - fn register_callback(&self, _callback: Box) -> Result<()> { + fn register_callback( + &self, + _instruments: &[Arc], + _callback: Box, + ) -> Result> { + Ok(Box::new(NoopRegistration::new())) + } +} + +/// A no-op instance of a callback [CallbackRegistration]. +#[derive(Debug, Default)] +pub struct NoopRegistration { + _private: (), +} + +impl NoopRegistration { + /// Create a new no-op registration. + pub fn new() -> Self { + NoopRegistration { _private: () } + } +} + +impl CallbackRegistration for NoopRegistration { + fn unregister(&mut self) -> Result<()> { Ok(()) } } @@ -69,19 +93,19 @@ } impl SyncCounter for NoopSyncInstrument { - fn add(&self, _cx: &Context, _value: T, _attributes: &[KeyValue]) { + fn add(&self, _value: T, _attributes: &[KeyValue]) { // Ignored } } impl SyncUpDownCounter for NoopSyncInstrument { - fn add(&self, _cx: &Context, _value: T, _attributes: &[KeyValue]) { + fn add(&self, _value: T, _attributes: &[KeyValue]) { // Ignored } } impl SyncHistogram for NoopSyncInstrument { - fn record(&self, _cx: &Context, _value: T, _attributes: &[KeyValue]) { + fn record(&self, _value: T, _attributes: &[KeyValue]) { // Ignored } } @@ -99,20 +123,12 @@ } } -impl AsyncGauge for NoopAsyncInstrument { - fn observe(&self, _cx: &Context, _value: T, _attributes: &[KeyValue]) { +impl AsyncInstrument for NoopAsyncInstrument { + fn observe(&self, _value: T, _attributes: &[KeyValue]) { // Ignored } -} -impl AsyncCounter for NoopAsyncInstrument { - fn observe(&self, _cx: &Context, _value: T, _attributes: &[KeyValue]) { - // Ignored - } -} - -impl AsyncUpDownCounter for NoopAsyncInstrument { - fn observe(&self, _cx: &Context, _value: T, _attributes: &[KeyValue]) { - // Ignored + fn as_any(&self) -> Arc { + Arc::new(()) } } diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/order_map.rs temporalio-1.3.0/vendor/opentelemetry_api/src/order_map.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/order_map.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/order_map.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,670 @@ +use crate::{Key, KeyValue, Value}; +use indexmap::map::{ + Drain, Entry, IntoIter, IntoKeys, IntoValues, Iter, IterMut, Keys, Values, ValuesMut, +}; +use indexmap::{Equivalent, IndexMap}; +use std::collections::hash_map::RandomState; +use std::hash::{BuildHasher, Hash}; +use std::iter::FromIterator; +use std::ops::{Index, IndexMut, RangeBounds}; + +/// A hash table implementation that preserves insertion order across all operations. +/// +/// Entries will be returned according to their insertion order when iterating over the collection. +#[derive(Clone, Debug)] +pub struct OrderMap(IndexMap); + +impl OrderMap { + /// Create a new map. (Does not allocate) + #[inline] + pub fn new() -> Self { + Self(IndexMap::new()) + } + + /// Create a new map with capacity for `n` key-value pairs. (Does not + /// allocate if `n` is zero.) + /// + /// Computes in **O(n)** time. + #[inline] + pub fn with_capacity(n: usize) -> Self { + Self(IndexMap::with_capacity(n)) + } +} + +impl OrderMap { + /// Create a new map with capacity for `n` key-value pairs. (Does not + /// allocate if `n` is zero.) + /// + /// Computes in **O(n)** time. + #[inline] + pub fn with_capacity_and_hasher(n: usize, hash_builder: S) -> Self { + Self(IndexMap::with_capacity_and_hasher(n, hash_builder)) + } + + /// Create a new map with `hash_builder`. + /// + /// This function is `const`, so it + /// can be called in `static` contexts. + pub const fn with_hasher(hash_builder: S) -> Self { + Self(IndexMap::with_hasher(hash_builder)) + } + + /// Computes in **O(1)** time. + pub fn capacity(&self) -> usize { + self.0.capacity() + } + + /// Return a reference to the map's `BuildHasher`. + pub fn hasher(&self) -> &S { + self.0.hasher() + } + + /// Return the number of key-value pairs in the map. + /// + /// Computes in **O(1)** time. + #[inline] + pub fn len(&self) -> usize { + self.0.len() + } + + /// Returns true if the map contains no elements. + /// + /// Computes in **O(1)** time. + #[inline] + pub fn is_empty(&self) -> bool { + self.0.is_empty() + } + + /// Return an iterator over the key-value pairs of the map, in their order + pub fn iter(&self) -> Iter<'_, K, V> { + self.0.iter() + } + + /// Return an iterator over the key-value pairs of the map, in their order + pub fn iter_mut(&mut self) -> IterMut<'_, K, V> { + self.0.iter_mut() + } + + /// Return an iterator over the keys of the map, in their order + pub fn keys(&self) -> Keys<'_, K, V> { + self.0.keys() + } + + /// Return an owning iterator over the keys of the map, in their order + pub fn into_keys(self) -> IntoKeys { + self.0.into_keys() + } + + /// Return an iterator over the values of the map, in their order + pub fn values(&self) -> Values<'_, K, V> { + self.0.values() + } + + /// Return an iterator over mutable references to the values of the map, + /// in their order + pub fn values_mut(&mut self) -> ValuesMut<'_, K, V> { + self.0.values_mut() + } + + /// Return an owning iterator over the values of the map, in their order + pub fn into_values(self) -> IntoValues { + self.0.into_values() + } + + /// Remove all key-value pairs in the map, while preserving its capacity. + /// + /// Computes in **O(n)** time. + pub fn clear(&mut self) { + self.0.clear(); + } + + /// Shortens the map, keeping the first `len` elements and dropping the rest. + /// + /// If `len` is greater than the map's current length, this has no effect. + pub fn truncate(&mut self, len: usize) { + self.0.truncate(len); + } + + /// Clears the `IndexMap` in the given index range, returning those + /// key-value pairs as a drain iterator. + /// + /// The range may be any type that implements `RangeBounds`, + /// including all of the `std::ops::Range*` types, or even a tuple pair of + /// `Bound` start and end values. To drain the map entirely, use `RangeFull` + /// like `map.drain(..)`. + /// + /// This shifts down all entries following the drained range to fill the + /// gap, and keeps the allocated memory for reuse. + /// + /// ***Panics*** if the starting point is greater than the end point or if + /// the end point is greater than the length of the map. + pub fn drain(&mut self, range: R) -> Drain<'_, K, V> + where + R: RangeBounds, + { + self.0.drain(range) + } + + /// Splits the collection into two at the given index. + /// + /// Returns a newly allocated map containing the elements in the range + /// `[at, len)`. After the call, the original map will be left containing + /// the elements `[0, at)` with its previous capacity unchanged. + /// + /// ***Panics*** if `at > len`. + pub fn split_off(&mut self, at: usize) -> Self + where + S: Clone, + { + Self(self.0.split_off(at)) + } +} + +impl OrderMap +where + K: Hash + Eq, + S: BuildHasher, +{ + /// Reserve capacity for `additional` more key-value pairs. + /// + /// Computes in **O(n)** time. + pub fn reserve(&mut self, additional: usize) { + self.0.reserve(additional) + } + + /// Shrink the capacity of the map as much as possible. + /// + /// Computes in **O(n)** time. + pub fn shrink_to_fit(&mut self) { + self.0.shrink_to_fit() + } + + /// Insert a key-value pair in the map. + /// + /// If an equivalent key already exists in the map: the key remains and + /// retains in its place in the order, its corresponding value is updated + /// with `value` and the older value is returned inside `Some(_)`. + /// + /// If no equivalent key existed in the map: the new key-value pair is + /// inserted, last in order, and `None` is returned. + /// + /// Computes in **O(1)** time (amortized average). + /// + /// See also [`entry`](#method.entry) if you you want to insert *or* modify + /// or if you need to get the index of the corresponding key-value pair. + pub fn insert(&mut self, key: K, value: V) -> Option { + self.0.insert(key, value) + } + + /// Insert a key-value pair in the map, and get their index. + /// + /// If an equivalent key already exists in the map: the key remains and + /// retains in its place in the order, its corresponding value is updated + /// with `value` and the older value is returned inside `(index, Some(_))`. + /// + /// If no equivalent key existed in the map: the new key-value pair is + /// inserted, last in order, and `(index, None)` is returned. + /// + /// Computes in **O(1)** time (amortized average). + /// + /// See also [`entry`](#method.entry) if you you want to insert *or* modify + /// or if you need to get the index of the corresponding key-value pair. + pub fn insert_full(&mut self, key: K, value: V) -> (usize, Option) { + self.0.insert_full(key, value) + } + + /// Get the given key’s corresponding entry in the map for insertion and/or + /// in-place manipulation. + /// + /// Computes in **O(1)** time (amortized average). + pub fn entry(&mut self, key: K) -> Entry<'_, K, V> { + self.0.entry(key) + } + + /// Return `true` if an equivalent to `key` exists in the map. + /// + /// Computes in **O(1)** time (average). + pub fn contains_key(&self, key: &Q) -> bool + where + Q: Hash + Equivalent, + { + self.0.contains_key(key) + } + + /// Return a reference to the value stored for `key`, if it is present, + /// else `None`. + /// + /// Computes in **O(1)** time (average). + pub fn get(&self, key: &Q) -> Option<&V> + where + Q: Hash + Equivalent, + { + self.0.get(key) + } + + /// Return references to the key-value pair stored for `key`, + /// if it is present, else `None`. + /// + /// Computes in **O(1)** time (average). + pub fn get_key_value(&self, key: &Q) -> Option<(&K, &V)> + where + Q: Hash + Equivalent, + { + self.0.get_key_value(key) + } + + /// Return item index, key and value + pub fn get_full(&self, key: &Q) -> Option<(usize, &K, &V)> + where + Q: Hash + Equivalent, + { + self.0.get_full(key) + } + + /// Return item index, if it exists in the map + /// + /// Computes in **O(1)** time (average). + pub fn get_index_of(&self, key: &Q) -> Option + where + Q: Hash + Equivalent, + { + self.0.get_index_of(key) + } + + /// Return a mutable reference to the element pointed at by `key`, if it exists. + pub fn get_mut(&mut self, key: &Q) -> Option<&mut V> + where + Q: Hash + Equivalent, + { + self.0.get_mut(key) + } + + /// Return a mutable reference to the element pointed at by `key`, if it exists. + /// It also returns the element's index and its key. + pub fn get_full_mut(&mut self, key: &Q) -> Option<(usize, &K, &mut V)> + where + Q: Hash + Equivalent, + { + self.0.get_full_mut(key) + } + + /// Remove the key-value pair equivalent to `key` and return + /// its value. + /// + /// Like `Vec::remove`, the pair is removed by shifting all of the + /// elements that follow it, preserving their relative order. + /// **This perturbs the index of all of those elements!** + /// + /// Return `None` if `key` is not in map. + /// + /// Computes in **O(n)** time (average). + pub fn shift_remove(&mut self, key: &Q) -> Option + where + Q: Hash + Equivalent, + { + self.0.shift_remove(key) + } + + /// Remove and return the key-value pair equivalent to `key`. + /// + /// Like `Vec::remove`, the pair is removed by shifting all of the + /// elements that follow it, preserving their relative order. + /// **This perturbs the index of all of those elements!** + /// + /// Return `None` if `key` is not in map. + /// + /// Computes in **O(n)** time (average). + pub fn shift_remove_entry(&mut self, key: &Q) -> Option<(K, V)> + where + Q: Hash + Equivalent, + { + self.0.shift_remove_entry(key) + } + + /// Remove the key-value pair equivalent to `key` and return it and + /// the index it had. + /// + /// Like `Vec::remove`, the pair is removed by shifting all of the + /// elements that follow it, preserving their relative order. + /// **This perturbs the index of all of those elements!** + /// + /// Return `None` if `key` is not in map. + /// + /// Computes in **O(n)** time (average). + pub fn shift_remove_full(&mut self, key: &Q) -> Option<(usize, K, V)> + where + Q: Hash + Equivalent, + { + self.0.shift_remove_full(key) + } + + /// Remove the last key-value pair + /// + /// This preserves the order of the remaining elements. + /// + /// Computes in **O(1)** time (average). + pub fn pop(&mut self) -> Option<(K, V)> { + self.0.pop() + } + + /// Scan through each key-value pair in the map and keep those where the + /// closure `keep` returns `true`. + /// + /// The elements are visited in order, and remaining elements keep their + /// order. + /// + /// Computes in **O(n)** time (average). + pub fn retain(&mut self, keep: F) + where + F: FnMut(&K, &mut V) -> bool, + { + self.0.retain(keep); + } +} + +impl OrderMap { + /// Get a key-value pair by index + /// + /// Valid indices are *0 <= index < self.len()* + /// + /// Computes in **O(1)** time. + pub fn get_index(&self, index: usize) -> Option<(&K, &V)> { + self.0.get_index(index) + } + + /// Get a key-value pair by index + /// + /// Valid indices are *0 <= index < self.len()* + /// + /// Computes in **O(1)** time. + pub fn get_index_mut(&mut self, index: usize) -> Option<(&mut K, &mut V)> { + self.0.get_index_mut(index) + } + + /// Get the first key-value pair + /// + /// Computes in **O(1)** time. + pub fn first(&self) -> Option<(&K, &V)> { + self.0.first() + } + + /// Get the first key-value pair, with mutable access to the value + /// + /// Computes in **O(1)** time. + pub fn first_mut(&mut self) -> Option<(&K, &mut V)> { + self.0.first_mut() + } + + /// Get the last key-value pair + /// + /// Computes in **O(1)** time. + pub fn last(&self) -> Option<(&K, &V)> { + self.0.last() + } + + /// Get the last key-value pair, with mutable access to the value + /// + /// Computes in **O(1)** time. + pub fn last_mut(&mut self) -> Option<(&K, &mut V)> { + self.0.last_mut() + } + + /// Remove the key-value pair by index + /// + /// Valid indices are *0 <= index < self.len()* + /// + /// Like `Vec::remove`, the pair is removed by shifting all of the + /// elements that follow it, preserving their relative order. + /// **This perturbs the index of all of those elements!** + /// + /// Computes in **O(n)** time (average). + pub fn shift_remove_index(&mut self, index: usize) -> Option<(K, V)> { + self.0.shift_remove_index(index) + } +} + +impl<'a, K, V, S> IntoIterator for &'a OrderMap { + type Item = (&'a K, &'a V); + type IntoIter = Iter<'a, K, V>; + fn into_iter(self) -> Self::IntoIter { + self.0.iter() + } +} + +impl<'a, K, V, S> IntoIterator for &'a mut OrderMap { + type Item = (&'a K, &'a mut V); + type IntoIter = IterMut<'a, K, V>; + fn into_iter(self) -> Self::IntoIter { + self.0.iter_mut() + } +} + +impl IntoIterator for OrderMap { + type Item = (K, V); + type IntoIter = IntoIter; + fn into_iter(self) -> Self::IntoIter { + self.0.into_iter() + } +} + +/// Access `OrderMap` values corresponding to a key. +/// +/// Panics if the value is missing. +impl Index<&Q> for OrderMap +where + Q: Hash + Equivalent, + K: Hash + Eq, + S: BuildHasher, +{ + type Output = V; + + /// Returns a reference to the value corresponding to the supplied `key`. + /// + /// ***Panics*** if `key` is not present in the map. + fn index(&self, key: &Q) -> &V { + self.0.index(key) + } +} + +/// Access `Ordermap` values corresponding to a key. +/// +/// Mutable indexing allows changing / updating values of key-value +/// pairs that are already present. +/// +/// You can **not** insert new pairs with index syntax, use `.insert()`. +impl IndexMut<&Q> for OrderMap +where + Q: Hash + Equivalent, + K: Hash + Eq, + S: BuildHasher, +{ + /// Returns a mutable reference to the value corresponding to the supplied `key`. + /// + /// ***Panics*** if `key` is not present in the map. + fn index_mut(&mut self, key: &Q) -> &mut V { + self.0.index_mut(key) + } +} + +/// Access `IndexMap` values at indexed positions. +/// +/// It panics if the index is out of bounds. +impl Index for OrderMap { + type Output = V; + + /// Returns a reference to the value at the supplied `index`. + /// + /// ***Panics*** if `index` is out of bounds. + fn index(&self, index: usize) -> &V { + self.0.index(index) + } +} + +/// Access `IndexMap` values at indexed positions. +/// +/// Mutable indexing allows changing / updating indexed values +/// that are already present. +/// +/// You can **not** insert new values with index syntax, use `.insert()`. +/// +/// # Examples +/// +/// ``` +/// use indexmap::IndexMap; +/// +/// let mut map = IndexMap::new(); +/// for word in "Lorem ipsum dolor sit amet".split_whitespace() { +/// map.insert(word.to_lowercase(), word.to_string()); +/// } +/// let lorem = &mut map[0]; +/// assert_eq!(lorem, "Lorem"); +/// lorem.retain(char::is_lowercase); +/// assert_eq!(map["lorem"], "orem"); +/// ``` +/// +/// ```should_panic +/// use indexmap::IndexMap; +/// +/// let mut map = IndexMap::new(); +/// map.insert("foo", 1); +/// map[10] = 1; // panics! +/// ``` +impl IndexMut for OrderMap { + /// Returns a mutable reference to the value at the supplied `index`. + /// + /// ***Panics*** if `index` is out of bounds. + fn index_mut(&mut self, index: usize) -> &mut V { + self.0.index_mut(index) + } +} + +impl FromIterator<(K, V)> for OrderMap +where + K: Hash + Eq, + S: BuildHasher + Default, +{ + /// Create an `OrderMap` from the sequence of key-value pairs in the + /// iterable. + /// + /// `from_iter` uses the same logic as `extend`. See + /// [`extend`](#method.extend) for more details. + fn from_iter>(iterable: I) -> Self { + Self(IndexMap::from_iter(iterable)) + } +} + +// todo: uncomment when the MSRV bumps +// impl From<[(K, V); N]> for OrderMap +// where +// K: Hash + Eq, +// { +// fn from(arr: [(K, V); N]) -> Self { +// Self(IndexMap::from(arr)) +// } +// } + +impl Extend<(K, V)> for OrderMap +where + K: Hash + Eq, + S: BuildHasher, +{ + /// Extend the map with all key-value pairs in the iterable. + /// + /// This is equivalent to calling [`insert`](#method.insert) for each of + /// them in order, which means that for keys that already existed + /// in the map, their value is updated but it keeps the existing order. + /// + /// New keys are inserted in the order they appear in the sequence. If + /// equivalents of a key occur more than once, the last corresponding value + /// prevails. + fn extend>(&mut self, iterable: I) { + self.0.extend(iterable) + } +} + +impl<'a, K, V, S> Extend<(&'a K, &'a V)> for OrderMap +where + K: 'a + Hash + Eq + Copy, + V: 'a + Copy, + S: BuildHasher, +{ + /// Extend the map with all key-value pairs in the iterable. + /// + /// See the first extend method for more details. + fn extend>(&mut self, iterable: I) { + self.0.extend(iterable) + } +} + +impl Default for OrderMap +where + S: Default, +{ + /// Return an empty `OrderMap` + fn default() -> Self { + Self(IndexMap::default()) + } +} + +impl PartialEq> for OrderMap +where + K: Hash + Eq, + V1: PartialEq, + S1: BuildHasher, + S2: BuildHasher, +{ + fn eq(&self, other: &OrderMap) -> bool { + self.0.eq(&other.0) + } +} + +impl Eq for OrderMap +where + K: Eq + Hash, + V: Eq, + S: BuildHasher, +{ +} + +impl FromIterator for OrderMap +where + S: BuildHasher + Default, +{ + /// Create an `OrderMap` from the sequence of key-value pairs in the + /// iterable. + /// + /// `from_iter` uses the same logic as `extend`. See + /// [`extend`](#method.extend) for more details. + fn from_iter>(iterable: I) -> Self { + Self(IndexMap::from_iter( + iterable.into_iter().map(|kv| (kv.key, kv.value)), + )) + } +} + +// todo: uncomment below when bumping MSRV +// impl From<[KeyValue; N]> for OrderMap { +// fn from(arr: [KeyValue; N]) -> Self { +// let arr = arr.map(|kv| (kv.key, kv.value)); +// Self(IndexMap::from(arr)) +// } +// } + +impl Extend for OrderMap +where + S: BuildHasher, +{ + /// Extend the map with all key-value pairs in the iterable. + /// + /// This is equivalent to calling [`insert`](#method.insert) for each of + /// them in order, which means that for keys that already existed + /// in the map, their value is updated but it keeps the existing order. + /// + /// New keys are inserted in the order they appear in the sequence. If + /// equivalents of a key occur more than once, the last corresponding value + /// prevails. + fn extend>(&mut self, iterable: I) { + self.0 + .extend(iterable.into_iter().map(|kv| (kv.key, kv.value))) + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/propagation/text_map_propagator.rs temporalio-1.3.0/vendor/opentelemetry_api/src/propagation/text_map_propagator.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/propagation/text_map_propagator.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/propagation/text_map_propagator.rs 2023-10-30 19:40:00.000000000 +0000 @@ -18,7 +18,7 @@ /// [`Context`]: crate::Context /// [`Injector`]: crate::propagation::Injector fn inject(&self, injector: &mut dyn Injector) { - self.inject_context(&Context::current(), injector) + Context::map_current(|cx| self.inject_context(cx, injector)) } /// Properly encodes the values of the [`Context`] and injects them into the @@ -35,7 +35,7 @@ /// [`Context`]: crate::Context /// [`Injector`]: crate::propagation::Extractor fn extract(&self, extractor: &dyn Extractor) -> Context { - self.extract_with_context(&Context::current(), extractor) + Context::map_current(|cx| self.extract_with_context(cx, extractor)) } /// Retrieves encoded data using the provided [`Extractor`]. If no data for this diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/testing/trace.rs temporalio-1.3.0/vendor/opentelemetry_api/src/testing/trace.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/testing/trace.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/testing/trace.rs 2023-10-30 19:40:00.000000000 +0000 @@ -36,13 +36,13 @@ /// Helper to create trace ids for testing impl TraceId { pub fn from_u128(num: u128) -> Self { - TraceId(num) + TraceId::from_bytes(num.to_be_bytes()) } } /// Helper to create span ids for testing impl SpanId { pub fn from_u64(num: u64) -> Self { - SpanId(num) + SpanId::from_bytes(num.to_be_bytes()) } } diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/trace/context.rs temporalio-1.3.0/vendor/opentelemetry_api/src/trace/context.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/trace/context.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/trace/context.rs 2023-10-30 19:40:00.000000000 +0000 @@ -139,7 +139,7 @@ /// /// [standard attributes]: https://github.com/open-telemetry/opentelemetry-specification/blob/v1.9.0/specification/trace/semantic_conventions/README.md /// [opentelemetry_semantic_conventions]: https://docs.rs/opentelemetry-semantic-conventions - pub fn set_attributes(&mut self, attributes: impl IntoIterator) { + pub fn set_attributes(&self, attributes: impl IntoIterator) { self.with_inner_mut(move |inner| inner.set_attributes(attributes)) } @@ -229,7 +229,7 @@ /// use opentelemetry_api::{trace::TraceContextExt, Context}; /// /// // Add an event to the currently active span - /// Context::current().span().add_event("An event!", vec![]); + /// Context::map_current(|cx| cx.span().add_event("An event!", vec![])); /// ``` fn span(&self) -> SpanRef<'_>; @@ -240,7 +240,7 @@ /// ``` /// use opentelemetry_api::{trace::TraceContextExt, Context}; /// - /// assert!(!Context::current().has_active_span()); + /// assert!(!Context::map_current(|cx| cx.has_active_span())); /// ``` fn has_active_span(&self) -> bool; @@ -348,7 +348,7 @@ where F: FnOnce(SpanRef<'_>) -> T, { - f(Context::current().span()) + Context::map_current(|cx| f(cx.span())) } pin_project! { diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/trace/mod.rs temporalio-1.3.0/vendor/opentelemetry_api/src/trace/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/trace/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/trace/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -54,6 +54,7 @@ //! let tracer = tracer_provider.versioned_tracer( //! "my_name", //! Some(env!("CARGO_PKG_VERSION")), +//! Some("https://opentelemetry.io/schemas/1.17.0"), //! None //! ); //! @@ -168,21 +169,25 @@ mod context; pub mod noop; -mod order_map; mod span; mod span_context; mod tracer; mod tracer_provider; pub use self::{ - context::{get_active_span, mark_span_as_active, FutureExt, SpanRef, TraceContextExt}, - order_map::OrderMap, + context::{ + get_active_span, mark_span_as_active, FutureExt, SpanRef, TraceContextExt, WithContext, + }, span::{Span, SpanKind, Status}, span_context::{SpanContext, SpanId, TraceFlags, TraceId, TraceState}, tracer::{SamplingDecision, SamplingResult, SpanBuilder, Tracer}, tracer_provider::TracerProvider, }; use crate::{ExportError, KeyValue}; +use std::collections::hash_map::RandomState; + +/// re-export OrderMap to mitigate breaking change +pub type OrderMap = crate::order_map::OrderMap; /// Describe the result of operations in tracing API. pub type TraceResult = Result; diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/trace/noop.rs temporalio-1.3.0/vendor/opentelemetry_api/src/trace/noop.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/trace/noop.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/trace/noop.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,12 +5,10 @@ //! to have minimal resource utilization and runtime impact. use crate::{ propagation::{text_map_propagator::FieldIter, Extractor, Injector, TextMapPropagator}, - trace, - trace::{TraceContextExt, TraceFlags, TraceState}, - Context, KeyValue, + trace::{self, TraceContextExt, TraceFlags, TraceState}, + Context, InstrumentationLibrary, KeyValue, }; -use std::borrow::Cow; -use std::time::SystemTime; +use std::{borrow::Cow, sync::Arc, time::SystemTime}; /// A no-op instance of a `TracerProvider`. #[derive(Clone, Debug, Default)] @@ -29,12 +27,7 @@ type Tracer = NoopTracer; /// Returns a new `NoopTracer` instance. - fn versioned_tracer( - &self, - _name: impl Into>, - _version: Option<&'static str>, - _schema_url: Option<&'static str>, - ) -> Self::Tracer { + fn library_tracer(&self, _library: Arc) -> Self::Tracer { NoopTracer::new() } } diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/trace/order_map.rs temporalio-1.3.0/vendor/opentelemetry_api/src/trace/order_map.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/trace/order_map.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/trace/order_map.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,670 +0,0 @@ -use crate::{Key, KeyValue, Value}; -use indexmap::map::{ - Drain, Entry, IntoIter, IntoKeys, IntoValues, Iter, IterMut, Keys, Values, ValuesMut, -}; -use indexmap::{Equivalent, IndexMap}; -use std::collections::hash_map::RandomState; -use std::hash::{BuildHasher, Hash}; -use std::iter::FromIterator; -use std::ops::{Index, IndexMut, RangeBounds}; - -/// A hash table implementation that preserves insertion order across all operations. -/// -/// Entries will be returned according to their insertion order when iterating over the collection. -#[derive(Clone, Debug)] -pub struct OrderMap(IndexMap); - -impl OrderMap { - /// Create a new map. (Does not allocate) - #[inline] - pub fn new() -> Self { - Self(IndexMap::new()) - } - - /// Create a new map with capacity for `n` key-value pairs. (Does not - /// allocate if `n` is zero.) - /// - /// Computes in **O(n)** time. - #[inline] - pub fn with_capacity(n: usize) -> Self { - Self(IndexMap::with_capacity(n)) - } -} - -impl OrderMap { - /// Create a new map with capacity for `n` key-value pairs. (Does not - /// allocate if `n` is zero.) - /// - /// Computes in **O(n)** time. - #[inline] - pub fn with_capacity_and_hasher(n: usize, hash_builder: S) -> Self { - Self(IndexMap::with_capacity_and_hasher(n, hash_builder)) - } - - /// Create a new map with `hash_builder`. - /// - /// This function is `const`, so it - /// can be called in `static` contexts. - pub const fn with_hasher(hash_builder: S) -> Self { - Self(IndexMap::with_hasher(hash_builder)) - } - - /// Computes in **O(1)** time. - pub fn capacity(&self) -> usize { - self.0.capacity() - } - - /// Return a reference to the map's `BuildHasher`. - pub fn hasher(&self) -> &S { - self.0.hasher() - } - - /// Return the number of key-value pairs in the map. - /// - /// Computes in **O(1)** time. - #[inline] - pub fn len(&self) -> usize { - self.0.len() - } - - /// Returns true if the map contains no elements. - /// - /// Computes in **O(1)** time. - #[inline] - pub fn is_empty(&self) -> bool { - self.0.is_empty() - } - - /// Return an iterator over the key-value pairs of the map, in their order - pub fn iter(&self) -> Iter<'_, K, V> { - self.0.iter() - } - - /// Return an iterator over the key-value pairs of the map, in their order - pub fn iter_mut(&mut self) -> IterMut<'_, K, V> { - self.0.iter_mut() - } - - /// Return an iterator over the keys of the map, in their order - pub fn keys(&self) -> Keys<'_, K, V> { - self.0.keys() - } - - /// Return an owning iterator over the keys of the map, in their order - pub fn into_keys(self) -> IntoKeys { - self.0.into_keys() - } - - /// Return an iterator over the values of the map, in their order - pub fn values(&self) -> Values<'_, K, V> { - self.0.values() - } - - /// Return an iterator over mutable references to the values of the map, - /// in their order - pub fn values_mut(&mut self) -> ValuesMut<'_, K, V> { - self.0.values_mut() - } - - /// Return an owning iterator over the values of the map, in their order - pub fn into_values(self) -> IntoValues { - self.0.into_values() - } - - /// Remove all key-value pairs in the map, while preserving its capacity. - /// - /// Computes in **O(n)** time. - pub fn clear(&mut self) { - self.0.clear(); - } - - /// Shortens the map, keeping the first `len` elements and dropping the rest. - /// - /// If `len` is greater than the map's current length, this has no effect. - pub fn truncate(&mut self, len: usize) { - self.0.truncate(len); - } - - /// Clears the `IndexMap` in the given index range, returning those - /// key-value pairs as a drain iterator. - /// - /// The range may be any type that implements `RangeBounds`, - /// including all of the `std::ops::Range*` types, or even a tuple pair of - /// `Bound` start and end values. To drain the map entirely, use `RangeFull` - /// like `map.drain(..)`. - /// - /// This shifts down all entries following the drained range to fill the - /// gap, and keeps the allocated memory for reuse. - /// - /// ***Panics*** if the starting point is greater than the end point or if - /// the end point is greater than the length of the map. - pub fn drain(&mut self, range: R) -> Drain<'_, K, V> - where - R: RangeBounds, - { - self.0.drain(range) - } - - /// Splits the collection into two at the given index. - /// - /// Returns a newly allocated map containing the elements in the range - /// `[at, len)`. After the call, the original map will be left containing - /// the elements `[0, at)` with its previous capacity unchanged. - /// - /// ***Panics*** if `at > len`. - pub fn split_off(&mut self, at: usize) -> Self - where - S: Clone, - { - Self(self.0.split_off(at)) - } -} - -impl OrderMap -where - K: Hash + Eq, - S: BuildHasher, -{ - /// Reserve capacity for `additional` more key-value pairs. - /// - /// Computes in **O(n)** time. - pub fn reserve(&mut self, additional: usize) { - self.0.reserve(additional) - } - - /// Shrink the capacity of the map as much as possible. - /// - /// Computes in **O(n)** time. - pub fn shrink_to_fit(&mut self) { - self.0.shrink_to_fit() - } - - /// Insert a key-value pair in the map. - /// - /// If an equivalent key already exists in the map: the key remains and - /// retains in its place in the order, its corresponding value is updated - /// with `value` and the older value is returned inside `Some(_)`. - /// - /// If no equivalent key existed in the map: the new key-value pair is - /// inserted, last in order, and `None` is returned. - /// - /// Computes in **O(1)** time (amortized average). - /// - /// See also [`entry`](#method.entry) if you you want to insert *or* modify - /// or if you need to get the index of the corresponding key-value pair. - pub fn insert(&mut self, key: K, value: V) -> Option { - self.0.insert(key, value) - } - - /// Insert a key-value pair in the map, and get their index. - /// - /// If an equivalent key already exists in the map: the key remains and - /// retains in its place in the order, its corresponding value is updated - /// with `value` and the older value is returned inside `(index, Some(_))`. - /// - /// If no equivalent key existed in the map: the new key-value pair is - /// inserted, last in order, and `(index, None)` is returned. - /// - /// Computes in **O(1)** time (amortized average). - /// - /// See also [`entry`](#method.entry) if you you want to insert *or* modify - /// or if you need to get the index of the corresponding key-value pair. - pub fn insert_full(&mut self, key: K, value: V) -> (usize, Option) { - self.0.insert_full(key, value) - } - - /// Get the given key’s corresponding entry in the map for insertion and/or - /// in-place manipulation. - /// - /// Computes in **O(1)** time (amortized average). - pub fn entry(&mut self, key: K) -> Entry<'_, K, V> { - self.0.entry(key) - } - - /// Return `true` if an equivalent to `key` exists in the map. - /// - /// Computes in **O(1)** time (average). - pub fn contains_key(&self, key: &Q) -> bool - where - Q: Hash + Equivalent, - { - self.0.contains_key(key) - } - - /// Return a reference to the value stored for `key`, if it is present, - /// else `None`. - /// - /// Computes in **O(1)** time (average). - pub fn get(&self, key: &Q) -> Option<&V> - where - Q: Hash + Equivalent, - { - self.0.get(key) - } - - /// Return references to the key-value pair stored for `key`, - /// if it is present, else `None`. - /// - /// Computes in **O(1)** time (average). - pub fn get_key_value(&self, key: &Q) -> Option<(&K, &V)> - where - Q: Hash + Equivalent, - { - self.0.get_key_value(key) - } - - /// Return item index, key and value - pub fn get_full(&self, key: &Q) -> Option<(usize, &K, &V)> - where - Q: Hash + Equivalent, - { - self.0.get_full(key) - } - - /// Return item index, if it exists in the map - /// - /// Computes in **O(1)** time (average). - pub fn get_index_of(&self, key: &Q) -> Option - where - Q: Hash + Equivalent, - { - self.0.get_index_of(key) - } - - /// Return a mutable reference to the element pointed at by `key`, if it exists. - pub fn get_mut(&mut self, key: &Q) -> Option<&mut V> - where - Q: Hash + Equivalent, - { - self.0.get_mut(key) - } - - /// Return a mutable reference to the element pointed at by `key`, if it exists. - /// It also returns the element's index and its key. - pub fn get_full_mut(&mut self, key: &Q) -> Option<(usize, &K, &mut V)> - where - Q: Hash + Equivalent, - { - self.0.get_full_mut(key) - } - - /// Remove the key-value pair equivalent to `key` and return - /// its value. - /// - /// Like `Vec::remove`, the pair is removed by shifting all of the - /// elements that follow it, preserving their relative order. - /// **This perturbs the index of all of those elements!** - /// - /// Return `None` if `key` is not in map. - /// - /// Computes in **O(n)** time (average). - pub fn shift_remove(&mut self, key: &Q) -> Option - where - Q: Hash + Equivalent, - { - self.0.shift_remove(key) - } - - /// Remove and return the key-value pair equivalent to `key`. - /// - /// Like `Vec::remove`, the pair is removed by shifting all of the - /// elements that follow it, preserving their relative order. - /// **This perturbs the index of all of those elements!** - /// - /// Return `None` if `key` is not in map. - /// - /// Computes in **O(n)** time (average). - pub fn shift_remove_entry(&mut self, key: &Q) -> Option<(K, V)> - where - Q: Hash + Equivalent, - { - self.0.shift_remove_entry(key) - } - - /// Remove the key-value pair equivalent to `key` and return it and - /// the index it had. - /// - /// Like `Vec::remove`, the pair is removed by shifting all of the - /// elements that follow it, preserving their relative order. - /// **This perturbs the index of all of those elements!** - /// - /// Return `None` if `key` is not in map. - /// - /// Computes in **O(n)** time (average). - pub fn shift_remove_full(&mut self, key: &Q) -> Option<(usize, K, V)> - where - Q: Hash + Equivalent, - { - self.0.shift_remove_full(key) - } - - /// Remove the last key-value pair - /// - /// This preserves the order of the remaining elements. - /// - /// Computes in **O(1)** time (average). - pub fn pop(&mut self) -> Option<(K, V)> { - self.0.pop() - } - - /// Scan through each key-value pair in the map and keep those where the - /// closure `keep` returns `true`. - /// - /// The elements are visited in order, and remaining elements keep their - /// order. - /// - /// Computes in **O(n)** time (average). - pub fn retain(&mut self, keep: F) - where - F: FnMut(&K, &mut V) -> bool, - { - self.0.retain(keep); - } -} - -impl OrderMap { - /// Get a key-value pair by index - /// - /// Valid indices are *0 <= index < self.len()* - /// - /// Computes in **O(1)** time. - pub fn get_index(&self, index: usize) -> Option<(&K, &V)> { - self.0.get_index(index) - } - - /// Get a key-value pair by index - /// - /// Valid indices are *0 <= index < self.len()* - /// - /// Computes in **O(1)** time. - pub fn get_index_mut(&mut self, index: usize) -> Option<(&mut K, &mut V)> { - self.0.get_index_mut(index) - } - - /// Get the first key-value pair - /// - /// Computes in **O(1)** time. - pub fn first(&self) -> Option<(&K, &V)> { - self.0.first() - } - - /// Get the first key-value pair, with mutable access to the value - /// - /// Computes in **O(1)** time. - pub fn first_mut(&mut self) -> Option<(&K, &mut V)> { - self.0.first_mut() - } - - /// Get the last key-value pair - /// - /// Computes in **O(1)** time. - pub fn last(&self) -> Option<(&K, &V)> { - self.0.last() - } - - /// Get the last key-value pair, with mutable access to the value - /// - /// Computes in **O(1)** time. - pub fn last_mut(&mut self) -> Option<(&K, &mut V)> { - self.0.last_mut() - } - - /// Remove the key-value pair by index - /// - /// Valid indices are *0 <= index < self.len()* - /// - /// Like `Vec::remove`, the pair is removed by shifting all of the - /// elements that follow it, preserving their relative order. - /// **This perturbs the index of all of those elements!** - /// - /// Computes in **O(n)** time (average). - pub fn shift_remove_index(&mut self, index: usize) -> Option<(K, V)> { - self.0.shift_remove_index(index) - } -} - -impl<'a, K, V, S> IntoIterator for &'a OrderMap { - type Item = (&'a K, &'a V); - type IntoIter = Iter<'a, K, V>; - fn into_iter(self) -> Self::IntoIter { - self.0.iter() - } -} - -impl<'a, K, V, S> IntoIterator for &'a mut OrderMap { - type Item = (&'a K, &'a mut V); - type IntoIter = IterMut<'a, K, V>; - fn into_iter(self) -> Self::IntoIter { - self.0.iter_mut() - } -} - -impl IntoIterator for OrderMap { - type Item = (K, V); - type IntoIter = IntoIter; - fn into_iter(self) -> Self::IntoIter { - self.0.into_iter() - } -} - -/// Access `OrderMap` values corresponding to a key. -/// -/// Panics if the value is missing. -impl Index<&Q> for OrderMap -where - Q: Hash + Equivalent, - K: Hash + Eq, - S: BuildHasher, -{ - type Output = V; - - /// Returns a reference to the value corresponding to the supplied `key`. - /// - /// ***Panics*** if `key` is not present in the map. - fn index(&self, key: &Q) -> &V { - self.0.index(key) - } -} - -/// Access `Ordermap` values corresponding to a key. -/// -/// Mutable indexing allows changing / updating values of key-value -/// pairs that are already present. -/// -/// You can **not** insert new pairs with index syntax, use `.insert()`. -impl IndexMut<&Q> for OrderMap -where - Q: Hash + Equivalent, - K: Hash + Eq, - S: BuildHasher, -{ - /// Returns a mutable reference to the value corresponding to the supplied `key`. - /// - /// ***Panics*** if `key` is not present in the map. - fn index_mut(&mut self, key: &Q) -> &mut V { - self.0.index_mut(key) - } -} - -/// Access `IndexMap` values at indexed positions. -/// -/// It panics if the index is out of bounds. -impl Index for OrderMap { - type Output = V; - - /// Returns a reference to the value at the supplied `index`. - /// - /// ***Panics*** if `index` is out of bounds. - fn index(&self, index: usize) -> &V { - self.0.index(index) - } -} - -/// Access `IndexMap` values at indexed positions. -/// -/// Mutable indexing allows changing / updating indexed values -/// that are already present. -/// -/// You can **not** insert new values with index syntax, use `.insert()`. -/// -/// # Examples -/// -/// ``` -/// use indexmap::IndexMap; -/// -/// let mut map = IndexMap::new(); -/// for word in "Lorem ipsum dolor sit amet".split_whitespace() { -/// map.insert(word.to_lowercase(), word.to_string()); -/// } -/// let lorem = &mut map[0]; -/// assert_eq!(lorem, "Lorem"); -/// lorem.retain(char::is_lowercase); -/// assert_eq!(map["lorem"], "orem"); -/// ``` -/// -/// ```should_panic -/// use indexmap::IndexMap; -/// -/// let mut map = IndexMap::new(); -/// map.insert("foo", 1); -/// map[10] = 1; // panics! -/// ``` -impl IndexMut for OrderMap { - /// Returns a mutable reference to the value at the supplied `index`. - /// - /// ***Panics*** if `index` is out of bounds. - fn index_mut(&mut self, index: usize) -> &mut V { - self.0.index_mut(index) - } -} - -impl FromIterator<(K, V)> for OrderMap -where - K: Hash + Eq, - S: BuildHasher + Default, -{ - /// Create an `OrderMap` from the sequence of key-value pairs in the - /// iterable. - /// - /// `from_iter` uses the same logic as `extend`. See - /// [`extend`](#method.extend) for more details. - fn from_iter>(iterable: I) -> Self { - Self(IndexMap::from_iter(iterable)) - } -} - -// todo: uncomment when the MSRV bumps -// impl From<[(K, V); N]> for OrderMap -// where -// K: Hash + Eq, -// { -// fn from(arr: [(K, V); N]) -> Self { -// Self(IndexMap::from(arr)) -// } -// } - -impl Extend<(K, V)> for OrderMap -where - K: Hash + Eq, - S: BuildHasher, -{ - /// Extend the map with all key-value pairs in the iterable. - /// - /// This is equivalent to calling [`insert`](#method.insert) for each of - /// them in order, which means that for keys that already existed - /// in the map, their value is updated but it keeps the existing order. - /// - /// New keys are inserted in the order they appear in the sequence. If - /// equivalents of a key occur more than once, the last corresponding value - /// prevails. - fn extend>(&mut self, iterable: I) { - self.0.extend(iterable) - } -} - -impl<'a, K, V, S> Extend<(&'a K, &'a V)> for OrderMap -where - K: 'a + Hash + Eq + Copy, - V: 'a + Copy, - S: BuildHasher, -{ - /// Extend the map with all key-value pairs in the iterable. - /// - /// See the first extend method for more details. - fn extend>(&mut self, iterable: I) { - self.0.extend(iterable) - } -} - -impl Default for OrderMap -where - S: Default, -{ - /// Return an empty `OrderMap` - fn default() -> Self { - Self(IndexMap::default()) - } -} - -impl PartialEq> for OrderMap -where - K: Hash + Eq, - V1: PartialEq, - S1: BuildHasher, - S2: BuildHasher, -{ - fn eq(&self, other: &OrderMap) -> bool { - self.0.eq(&other.0) - } -} - -impl Eq for OrderMap -where - K: Eq + Hash, - V: Eq, - S: BuildHasher, -{ -} - -impl FromIterator for OrderMap -where - S: BuildHasher + Default, -{ - /// Create an `OrderMap` from the sequence of key-value pairs in the - /// iterable. - /// - /// `from_iter` uses the same logic as `extend`. See - /// [`extend`](#method.extend) for more details. - fn from_iter>(iterable: I) -> Self { - Self(IndexMap::from_iter( - iterable.into_iter().map(|kv| (kv.key, kv.value)), - )) - } -} - -// todo: uncomment below when bumping MSRV -// impl From<[KeyValue; N]> for OrderMap { -// fn from(arr: [KeyValue; N]) -> Self { -// let arr = arr.map(|kv| (kv.key, kv.value)); -// Self(IndexMap::from(arr)) -// } -// } - -impl Extend for OrderMap -where - S: BuildHasher, -{ - /// Extend the map with all key-value pairs in the iterable. - /// - /// This is equivalent to calling [`insert`](#method.insert) for each of - /// them in order, which means that for keys that already existed - /// in the map, their value is updated but it keeps the existing order. - /// - /// New keys are inserted in the order they appear in the sequence. If - /// equivalents of a key occur more than once, the last corresponding value - /// prevails. - fn extend>(&mut self, iterable: I) { - self.0 - .extend(iterable.into_iter().map(|kv| (kv.key, kv.value))) - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/trace/span_context.rs temporalio-1.3.0/vendor/opentelemetry_api/src/trace/span_context.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/trace/span_context.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/trace/span_context.rs 2023-10-30 19:40:00.000000000 +0000 @@ -87,7 +87,7 @@ /// /// The id is valid if it contains at least one non-zero byte. #[derive(Clone, PartialEq, Eq, Copy, Hash)] -pub struct TraceId(pub(crate) u128); +pub struct TraceId(u128); impl TraceId { /// Invalid trace id @@ -120,9 +120,9 @@ } } -impl From<[u8; 16]> for TraceId { - fn from(bytes: [u8; 16]) -> Self { - TraceId::from_bytes(bytes) +impl From for TraceId { + fn from(value: u128) -> Self { + TraceId(value) } } @@ -148,7 +148,7 @@ /// /// The id is valid if it contains at least one non-zero byte. #[derive(Clone, PartialEq, Eq, Copy, Hash)] -pub struct SpanId(pub(crate) u64); +pub struct SpanId(u64); impl SpanId { /// Invalid span id @@ -181,9 +181,9 @@ } } -impl From<[u8; 8]> for SpanId { - fn from(bytes: [u8; 8]) -> Self { - SpanId::from_bytes(bytes) +impl From for SpanId { + fn from(value: u64) -> Self { + SpanId(value) } } diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/trace/tracer_provider.rs temporalio-1.3.0/vendor/opentelemetry_api/src/trace/tracer_provider.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/trace/tracer_provider.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/trace/tracer_provider.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ -use crate::trace::Tracer; -use std::borrow::Cow; +use crate::{trace::Tracer, InstrumentationLibrary, KeyValue}; +use std::{borrow::Cow, sync::Arc}; /// Types that can create instances of [`Tracer`]. /// @@ -21,6 +21,7 @@ /// /// ``` /// use opentelemetry_api::{global, trace::TracerProvider}; + /// use opentelemetry_api::KeyValue; /// /// let provider = global::tracer_provider(); /// @@ -31,11 +32,17 @@ /// let tracer = provider.versioned_tracer( /// "my_library", /// Some(env!("CARGO_PKG_VERSION")), - /// Some("https://opentelemetry.io/schema/1.0.0") + /// Some("https://opentelemetry.io/schema/1.0.0"), + /// Some(vec![KeyValue::new("key", "value")]), /// ); /// ``` fn tracer(&self, name: impl Into>) -> Self::Tracer { - self.versioned_tracer(name, None, None) + self.versioned_tracer( + name, + None::>, + None::>, + None, + ) } /// Returns a new versioned tracer with a given name. @@ -58,13 +65,42 @@ /// let tracer = provider.versioned_tracer( /// "my_library", /// Some(env!("CARGO_PKG_VERSION")), - /// Some("https://opentelemetry.io/schema/1.0.0") + /// Some("https://opentelemetry.io/schema/1.0.0"), + /// None, /// ); /// ``` fn versioned_tracer( &self, name: impl Into>, - version: Option<&'static str>, - schema_url: Option<&'static str>, - ) -> Self::Tracer; + version: Option>>, + schema_url: Option>>, + attributes: Option>, + ) -> Self::Tracer { + self.library_tracer(Arc::new(InstrumentationLibrary::new( + name, version, schema_url, attributes, + ))) + } + + /// Returns a new versioned tracer with the given instrumentation library. + /// + /// # Examples + /// + /// ``` + /// use opentelemetry_api::{global, InstrumentationLibrary, trace::TracerProvider}; + /// + /// let provider = global::tracer_provider(); + /// + /// // tracer used in applications/binaries + /// let tracer = provider.tracer("my_app"); + /// + /// // tracer used in libraries/crates that optionally includes version and schema url + /// let library = std::sync::Arc::new(InstrumentationLibrary::new( + /// env!("CARGO_PKG_NAME"), + /// Some(env!("CARGO_PKG_VERSION")), + /// Some("https://opentelemetry.io/schema/1.0.0"), + /// None, + /// )); + /// let tracer = provider.library_tracer(library); + /// ``` + fn library_tracer(&self, library: Arc) -> Self::Tracer; } diff -Nru temporalio-1.3.0/vendor/opentelemetry_api/src/trace/tracer.rs temporalio-1.3.0/vendor/opentelemetry_api/src/trace/tracer.rs --- temporalio-1.3.0/vendor/opentelemetry_api/src/trace/tracer.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_api/src/trace/tracer.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,6 @@ -use crate::trace::OrderMap; use crate::{ trace::{Event, Link, Span, SpanId, SpanKind, Status, TraceContextExt, TraceId, TraceState}, - Context, Key, KeyValue, Value, + Context, Key, KeyValue, OrderMap, Value, }; use std::borrow::Cow; use std::iter::FromIterator; @@ -137,7 +136,7 @@ where T: Into>, { - self.build_with_context(SpanBuilder::from_name(name), &Context::current()) + Context::map_current(|cx| self.start_with_context(name, cx)) } /// Starts a new [`Span`] with a given context. @@ -170,7 +169,7 @@ /// Start a [`Span`] from a [`SpanBuilder`]. fn build(&self, builder: SpanBuilder) -> Self::Span { - self.build_with_context(builder, &Context::current()) + Context::map_current(|cx| self.build_with_context(builder, cx)) } /// Start a span from a [`SpanBuilder`] with a parent context. @@ -383,7 +382,7 @@ /// Builds a span with the given tracer from this configuration. pub fn start(self, tracer: &T) -> T::Span { - tracer.build_with_context(self, &Context::current()) + Context::map_current(|cx| tracer.build_with_context(self, cx)) } /// Builds a span with the given tracer from this configuration and parent. diff -Nru temporalio-1.3.0/vendor/opentelemetry-otlp/.cargo-checksum.json temporalio-1.3.0/vendor/opentelemetry-otlp/.cargo-checksum.json --- temporalio-1.3.0/vendor/opentelemetry-otlp/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-otlp/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"e6202f2d554d9e88365779eaf37d678b682663bf47968b3a4b226bb052566acc","CODEOWNERS":"517b0ec97b47f714513c6a611f30830a9c5b95b530c2dda813870bf0100f6979","Cargo.toml":"0e903d1eecbe3aee55d22025c3af8a18ee073967c467d1ffc255e6c23430859b","LICENSE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","README.md":"676f90d8cf6f5bd6919b44ceb67c4775cceb9a78df684fb8603b4fb358ea1a25","src/exporter/grpcio.rs":"dbd407dcf1398cb44c533149b0a72acd0fa2e6da7b695244d379e987a9d279e5","src/exporter/http.rs":"75465446247e0c7ec5ef5f03f3eb32a215d7b2faf98774bf678cf116ba44727f","src/exporter/mod.rs":"02215923bc6c72ef2a958138f190fe2d3189700af921ed0e2e42440d9b3a58d8","src/exporter/tonic.rs":"00b4a7a9d75df2291b0ac10f7f69b8f2c75c62bfdf6d02db3bc46a684c4d65f2","src/lib.rs":"ac9de3a520a4f4c28ee3e29ffc8a83b711b779e633ff60a77fe4f28423d33969","src/metric.rs":"f9e6e55faffae1bf13ceac3723ad9ff93642722f92cb59d57d0ccc11ae597925","src/span.rs":"70b97126706ead59398936eea60d6179eccafc6439da541a469ad1ed40b2062b","src/transform/metrics.rs":"13ca0c07daf1f2c2b22614caf8bb986d8ec23e2d544976099a54b948601c4d03","src/transform/mod.rs":"5f6a244f821bc2a34011e614d7e0e3a54d560950dd1f66385efa9312f6f97afe","src/transform/resource.rs":"fb6721900f1f48e559f606fbbe1855cefbde235e411c25bec6060a4cd46ffd81","tests/smoke.rs":"dbcfd7daee082f3e1b54c1191a8d14d4e08e71060175e7d0b66d92a5ab6dfe1c"},"package":"d1c928609d087790fc936a1067bdc310ae702bdf3b090c3f281b713622c8bbde"} \ No newline at end of file +{"files":{"CHANGELOG.md":"a85eacec64c9af80d9bd37844b59c7f39f83a2feffab39e240737170bc1b5ad8","CODEOWNERS":"517b0ec97b47f714513c6a611f30830a9c5b95b530c2dda813870bf0100f6979","Cargo.toml":"27ff497a75a0843e697bedf6c0e3c502c76579565e5f8f8d21536dbcefeb8b77","LICENSE":"208a3f5bae3355bd4f3f45626d1ea4518b253d618ee2896983436075c4375098","README.md":"063107ef2901e5694f7ae840c38b8a985970d892818e4ff72a4797b7c68db061","src/exporter/grpcio.rs":"ae444030b3bb173026ae167461fe8deef12fa1f17e86c041f6495f24b5f1257c","src/exporter/http.rs":"f8bc14693b6a970665b1ead8c52a43860f974dbf3b74717a4e8a4931886524f8","src/exporter/mod.rs":"1fb443e0d5553ad693215e83d6687cce9bcbf58078f9d9fc4de3a6dba2b26b61","src/exporter/tonic.rs":"2df2fe6ddad67fd8394728ebcc8e80bc8954114ed18c046cf4fdd57dced4bc6b","src/lib.rs":"4ead8205c3df14cf8a935ad9019df521451c44525841236df977c6a91d78d4c7","src/logs.rs":"2e3330f2d2db55e94637b174626b4889383bd0f8f620aacc93e7228a9f344bbb","src/metric.rs":"8a5868d6a85ac75cb8e265b10f06b4f6abf5af975e05ab9d5a7e6c5a9e2fad91","src/span.rs":"aca6a8c8fca766d57a75f687f8ef59637ea93e09baf666247fb8889502068757","src/transform/metrics.rs":"4481524e74106dde06a8ef488db0500655966f3cb6f6c306a7df81b63eaeace1","src/transform/mod.rs":"1b7eacb75ba07e4a1f2139809a9087c74816153695dbb623fdba7005991f782f","src/transform/resource.rs":"6a19230fbda1575e31570b32e07508143d9d0f2c68a21cc9d2d190f373214c51","tests/smoke.rs":"eced4700f1d1c2a5e35ad8737ef07f7298bf4aa202dd0f064c5c1d87f49f7cf8"},"package":"7e5e5a5c4135864099f3faafbe939eb4d7f9b80ebf68a8448da961b32a7c1275"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/opentelemetry-otlp/Cargo.toml temporalio-1.3.0/vendor/opentelemetry-otlp/Cargo.toml --- temporalio-1.3.0/vendor/opentelemetry-otlp/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-otlp/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,9 +11,9 @@ [package] edition = "2021" -rust-version = "1.56" +rust-version = "1.60" name = "opentelemetry-otlp" -version = "0.11.0" +version = "0.13.0" autotests = false description = "Exporter for the OpenTelemetry Collector" homepage = "https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-otlp" @@ -32,6 +32,7 @@ ] license = "Apache-2.0" repository = "https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-otlp" +resolver = "1" [package.metadata.docs.rs] all-features = true @@ -51,35 +52,34 @@ [dependencies.async-trait] version = "0.1" -[dependencies.futures] +[dependencies.futures-core] version = "0.3" -features = ["std"] -default-features = false - -[dependencies.futures-util] -version = "0.3" -features = ["std"] -default-features = false [dependencies.grpcio] -version = "0.9" +version = "0.12" optional = true [dependencies.http] version = "0.2" optional = true -[dependencies.opentelemetry] -version = "0.18" -features = ["trace"] -default-features = false - [dependencies.opentelemetry-http] -version = "0.7" +version = "0.9" optional = true [dependencies.opentelemetry-proto] -version = "0.1" +version = "0.3" +default-features = false + +[dependencies.opentelemetry-semantic-conventions] +version = "0.12" + +[dependencies.opentelemetry_api] +version = "0.20" +default-features = false + +[dependencies.opentelemetry_sdk] +version = "0.20" default-features = false [dependencies.prost] @@ -117,9 +117,14 @@ optional = true [dependencies.tonic] -version = "0.8.0" +version = "0.9.0" optional = true +[dev-dependencies.futures] +version = "0.3" +features = ["std"] +default-features = false + [dev-dependencies.time] version = "0.3" features = ["macros"] @@ -151,24 +156,30 @@ "http", "tokio", "opentelemetry-proto/gen-tonic", - "opentelemetry-proto/build-client", ] +gzip-tonic = ["tonic/gzip"] http-proto = [ "prost", "opentelemetry-http", - "opentelemetry-proto/gen-tonic", + "opentelemetry-proto/gen-tonic-messages", "http", "trace", + "metrics", ] integration-testing = [ "tonic", "prost", "tokio/full", "trace", - "opentelemetry-proto/build-server", +] +logs = [ + "opentelemetry_api/logs", + "opentelemetry_sdk/logs", + "opentelemetry-proto/logs", ] metrics = [ - "opentelemetry/metrics", + "opentelemetry_api/metrics", + "opentelemetry_sdk/metrics", "opentelemetry-proto/metrics", "grpc-tonic", ] @@ -197,6 +208,7 @@ "tonic/tls-roots", ] trace = [ - "opentelemetry/trace", + "opentelemetry_api/trace", + "opentelemetry_sdk/trace", "opentelemetry-proto/traces", ] diff -Nru temporalio-1.3.0/vendor/opentelemetry-otlp/CHANGELOG.md temporalio-1.3.0/vendor/opentelemetry-otlp/CHANGELOG.md --- temporalio-1.3.0/vendor/opentelemetry-otlp/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-otlp/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,42 @@ # Changelog +## v0.13.0 + +### Added +- Add OTLP HTTP Metrics Exporter [#1020](https://github.com/open-telemetry/opentelemetry-rust/pull/1020). +- Add tonic compression support [#1165](https://github.com/open-telemetry/opentelemetry-rust/pull/1165). + +### Changed + +- make the tonic/transport feature optional #985 +- update to opentelemetry-api v0.20.0 + +### Fixed + +- Fix a missing import when http-proto is enabled without grpc-sys #1081 + +## v0.12.0 + +### Added +- Add batch config for otlp pipeline [#979](https://github.com/open-telemetry/opentelemetry-rust/pull/979). +- Add tonic interceptor [#901](https://github.com/open-telemetry/opentelemetry-rust/pull/901). + +### Changed + +- Update `opentelemetry` to 0.19. +- Update `opentelemetry-semantic-conventions` to 0.11. +- Update `opentelemetry-http` to 0.8. +- Bump MSRV to 1.57 [#953](https://github.com/open-telemetry/opentelemetry-rust/pull/953). +- Add `User-Agent` header on all exporters [#896](https://github.com/open-telemetry/opentelemetry-rust/pull/896). +- Improve OTLP exporter environment variable handling [#912](https://github.com/open-telemetry/opentelemetry-rust/pull/912). +- Fix the issue where tonic exporter builder ignored provided metadata [#937](https://github.com/open-telemetry/opentelemetry-rust/pull/937). +- Export `MetricsExporterBuilder` [#943](https://github.com/open-telemetry/opentelemetry-rust/pull/943). +- Report OTLP http export errors [#945](https://github.com/open-telemetry/opentelemetry-rust/pull/945). +- Bump MSRV to 1.57 [#953](https://github.com/open-telemetry/opentelemetry-rust/pull/953). +- Change to export using v0.19.0 protobuf definitions. [#989](https://github.com/open-telemetry/opentelemetry-rust/pull/989). +- Update dependencies and bump MSRV to 1.60 [#969](https://github.com/open-telemetry/opentelemetry-rust/pull/969). + + ## v0.11.0 ### Changed diff -Nru temporalio-1.3.0/vendor/opentelemetry-otlp/LICENSE temporalio-1.3.0/vendor/opentelemetry-otlp/LICENSE --- temporalio-1.3.0/vendor/opentelemetry-otlp/LICENSE 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-otlp/LICENSE 2023-10-30 19:40:00.000000000 +0000 @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2023 The OpenTelemetry Authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff -Nru temporalio-1.3.0/vendor/opentelemetry-otlp/README.md temporalio-1.3.0/vendor/opentelemetry-otlp/README.md --- temporalio-1.3.0/vendor/opentelemetry-otlp/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-otlp/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -10,10 +10,7 @@ [![Documentation](https://docs.rs/opentelemetry-otlp/badge.svg)](https://docs.rs/opentelemetry-otlp) [![LICENSE](https://img.shields.io/crates/l/opentelemetry-otlp)](./LICENSE) [![GitHub Actions CI](https://github.com/open-telemetry/opentelemetry-rust/workflows/CI/badge.svg)](https://github.com/open-telemetry/opentelemetry-rust/actions?query=workflow%3ACI+branch%3Amain) -[![Gitter chat](https://img.shields.io/badge/gitter-join%20chat%20%E2%86%92-brightgreen.svg)](https://gitter.im/open-telemetry/opentelemetry-rust) - -[Documentation](https://docs.rs/opentelemetry-otlp) | -[Chat](https://gitter.im/open-telemetry/opentelemetry-rust) +[![Slack](https://img.shields.io/badge/slack-@cncf/otel/rust-brightgreen.svg?logo=slack)](https://cloud-native.slack.com/archives/C03GDP0H023) ## Overview diff -Nru temporalio-1.3.0/vendor/opentelemetry-otlp/src/exporter/grpcio.rs temporalio-1.3.0/vendor/opentelemetry-otlp/src/exporter/grpcio.rs --- temporalio-1.3.0/vendor/opentelemetry-otlp/src/exporter/grpcio.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-otlp/src/exporter/grpcio.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,14 @@ +use crate::exporter::Compression; use crate::ExportConfig; #[cfg(feature = "serialize")] use serde::{Deserialize, Serialize}; use std::collections::HashMap; +use super::default_headers; + /// Configuration of grpcio #[derive(Debug)] +#[non_exhaustive] pub struct GrpcioConfig { /// The credentials to use when communicating with the collector. pub credentials: Option, @@ -26,7 +30,7 @@ fn default() -> Self { GrpcioConfig { credentials: None, - headers: None, + headers: Some(default_headers()), compression: None, use_tls: None, completion_queue_count: 2, @@ -44,14 +48,6 @@ pub key: String, } -/// The compression algorithm to use when sending data. -#[cfg_attr(feature = "serialize", derive(Deserialize, Serialize))] -#[derive(Clone, Copy, Debug)] -pub enum Compression { - /// Compresses data using gzip. - Gzip, -} - impl From for grpcio::CompressionAlgorithms { fn from(compression: Compression) -> Self { match compression { @@ -85,7 +81,9 @@ /// Set additional headers to send to the collector. pub fn with_headers(mut self, headers: HashMap) -> Self { - self.grpcio_config.headers = Some(headers); + let mut inst_headers = self.grpcio_config.headers.unwrap_or_default(); + inst_headers.extend(headers.into_iter()); + self.grpcio_config.headers = Some(inst_headers); self } @@ -107,3 +105,35 @@ self } } + +#[cfg(test)] +mod tests { + use crate::GrpcioExporterBuilder; + use std::collections::HashMap; + + #[test] + fn test_with_headers() { + // metadata should merge with the current one with priority instead of just replacing it + let mut headers = HashMap::new(); + headers.insert("key".to_string(), "value".to_string()); + let builder = GrpcioExporterBuilder::default().with_headers(headers); + let result = builder.grpcio_config.headers.unwrap(); + assert_eq!(result.get("key").unwrap(), "value"); + assert!(result.get("User-Agent").is_some()); + + // metadata should override entries with the same key in the default one + let mut headers = HashMap::new(); + headers.insert("User-Agent".to_string(), "baz".to_string()); + let builder = GrpcioExporterBuilder::default().with_headers(headers); + let result = builder.grpcio_config.headers.unwrap(); + assert_eq!(result.get("User-Agent").unwrap(), "baz"); + assert_eq!( + result.len(), + GrpcioExporterBuilder::default() + .grpcio_config + .headers + .unwrap() + .len() + ); + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-otlp/src/exporter/http.rs temporalio-1.3.0/vendor/opentelemetry-otlp/src/exporter/http.rs --- temporalio-1.3.0/vendor/opentelemetry-otlp/src/exporter/http.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-otlp/src/exporter/http.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,6 +3,8 @@ use std::collections::HashMap; use std::sync::Arc; +use super::default_headers; + /// Configuration of the http transport #[cfg(feature = "http-proto")] #[derive(Debug)] @@ -71,7 +73,10 @@ protocol: Protocol::HttpBinary, ..ExportConfig::default() }, - http_config: HttpConfig::default(), + http_config: HttpConfig { + headers: Some(default_headers()), + ..HttpConfig::default() + }, } } } @@ -85,7 +90,10 @@ /// Set additional headers to send to the collector. pub fn with_headers(mut self, headers: HashMap) -> Self { - self.http_config.headers = Some(headers); + // headers will be wrapped, so we must do some logic to unwrap first. + let mut inst_headers = self.http_config.headers.unwrap_or_default(); + inst_headers.extend(headers.into_iter()); + self.http_config.headers = Some(inst_headers); self } } diff -Nru temporalio-1.3.0/vendor/opentelemetry-otlp/src/exporter/mod.rs temporalio-1.3.0/vendor/opentelemetry-otlp/src/exporter/mod.rs --- temporalio-1.3.0/vendor/opentelemetry-otlp/src/exporter/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-otlp/src/exporter/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -8,7 +8,11 @@ use crate::exporter::http::HttpExporterBuilder; #[cfg(feature = "grpc-tonic")] use crate::exporter::tonic::TonicExporterBuilder; -use crate::Protocol; +use crate::{Error, Protocol}; +#[cfg(feature = "serialize")] +use serde::{Deserialize, Serialize}; +use std::collections::HashMap; +use std::fmt::{Display, Formatter}; use std::str::FromStr; use std::time::Duration; @@ -17,12 +21,37 @@ /// pub const OTEL_EXPORTER_OTLP_ENDPOINT: &str = "OTEL_EXPORTER_OTLP_ENDPOINT"; /// Default target to which the exporter is going to send signals. -pub const OTEL_EXPORTER_OTLP_ENDPOINT_DEFAULT: &str = "https://localhost:4317"; +pub const OTEL_EXPORTER_OTLP_ENDPOINT_DEFAULT: &str = OTEL_EXPORTER_OTLP_HTTP_ENDPOINT_DEFAULT; +/// Protocol the exporter will use. Either `http/protobuf` or `grpc`. +pub const OTEL_EXPORTER_OTLP_PROTOCOL: &str = "OTEL_EXPORTER_OTLP_PROTOCOL"; +/// Compression algorithm to use, defaults to none. +pub const OTEL_EXPORTER_OTLP_COMPRESSION: &str = "OTEL_EXPORTER_OTLP_COMPRESSION"; + +#[cfg(feature = "http-proto")] +/// Default protocol, using http-proto. +pub const OTEL_EXPORTER_OTLP_PROTOCOL_DEFAULT: &str = OTEL_EXPORTER_OTLP_PROTOCOL_HTTP_PROTOBUF; +#[cfg(all( + any(feature = "grpc-tonic", feature = "grpcio"), + not(feature = "http-proto") +))] +/// Default protocol, using grpc as http-proto feature is not enabled. +pub const OTEL_EXPORTER_OTLP_PROTOCOL_DEFAULT: &str = OTEL_EXPORTER_OTLP_PROTOCOL_GRPC; +#[cfg(not(any(any(feature = "grpc-tonic", feature = "grpcio", feature = "http-proto"))))] +/// Default protocol if no features are enabled. +pub const OTEL_EXPORTER_OTLP_PROTOCOL_DEFAULT: &str = ""; + +const OTEL_EXPORTER_OTLP_PROTOCOL_HTTP_PROTOBUF: &str = "http/protobuf"; +const OTEL_EXPORTER_OTLP_PROTOCOL_GRPC: &str = "grpc"; + /// Max waiting time for the backend to process each signal batch, defaults to 10 seconds. pub const OTEL_EXPORTER_OTLP_TIMEOUT: &str = "OTEL_EXPORTER_OTLP_TIMEOUT"; /// Default max waiting time for the backend to process each signal batch. pub const OTEL_EXPORTER_OTLP_TIMEOUT_DEFAULT: u64 = 10; +// Endpoints per protocol https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md +const OTEL_EXPORTER_OTLP_GRPC_ENDPOINT_DEFAULT: &str = "http://localhost:4317"; +const OTEL_EXPORTER_OTLP_HTTP_ENDPOINT_DEFAULT: &str = "http://localhost:4318"; + #[cfg(feature = "grpc-sys")] pub(crate) mod grpcio; #[cfg(feature = "http-proto")] @@ -45,14 +74,70 @@ impl Default for ExportConfig { fn default() -> Self { + let protocol = default_protocol(); + ExportConfig { - endpoint: OTEL_EXPORTER_OTLP_ENDPOINT_DEFAULT.to_string(), - protocol: Protocol::Grpc, + endpoint: default_endpoint(protocol), + protocol, timeout: Duration::from_secs(OTEL_EXPORTER_OTLP_TIMEOUT_DEFAULT), } } } +/// The compression algorithm to use when sending data. +#[cfg_attr(feature = "serialize", derive(Deserialize, Serialize))] +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub enum Compression { + /// Compresses data using gzip. + Gzip, +} + +impl Display for Compression { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + match self { + Compression::Gzip => write!(f, "gzip"), + } + } +} + +impl FromStr for Compression { + type Err = Error; + + fn from_str(s: &str) -> Result { + match s { + "gzip" => Ok(Compression::Gzip), + _ => Err(Error::UnsupportedCompressionAlgorithm(s.to_string())), + } + } +} + +/// default protocol based on enabled features +fn default_protocol() -> Protocol { + match OTEL_EXPORTER_OTLP_PROTOCOL_DEFAULT { + OTEL_EXPORTER_OTLP_PROTOCOL_HTTP_PROTOBUF => Protocol::HttpBinary, + OTEL_EXPORTER_OTLP_PROTOCOL_GRPC => Protocol::Grpc, + _ => Protocol::HttpBinary, + } +} + +/// default endpoint for protocol +fn default_endpoint(protocol: Protocol) -> String { + match protocol { + Protocol::Grpc => OTEL_EXPORTER_OTLP_GRPC_ENDPOINT_DEFAULT.to_string(), + Protocol::HttpBinary => OTEL_EXPORTER_OTLP_HTTP_ENDPOINT_DEFAULT.to_string(), + } +} + +/// default user-agent headers +fn default_headers() -> HashMap { + let mut headers = HashMap::new(); + headers.insert( + "User-Agent".to_string(), + format!("OTel OTLP Exporter Rust/{}", env!("CARGO_PKG_VERSION")), + ); + headers +} + /// Provide access to the export config field within the exporter builders. pub trait HasExportConfig { /// Return a mutable reference to the export config within the exporter builders. @@ -126,9 +211,20 @@ } fn with_env(mut self) -> Self { + let protocol = match std::env::var(OTEL_EXPORTER_OTLP_PROTOCOL) + .unwrap_or_else(|_| OTEL_EXPORTER_OTLP_PROTOCOL_DEFAULT.to_string()) + .as_str() + { + OTEL_EXPORTER_OTLP_PROTOCOL_HTTP_PROTOBUF => Protocol::HttpBinary, + OTEL_EXPORTER_OTLP_PROTOCOL_GRPC => Protocol::Grpc, + _ => default_protocol(), + }; + + self.export_config().protocol = protocol; + let endpoint = match std::env::var(OTEL_EXPORTER_OTLP_ENDPOINT) { Ok(val) => val, - Err(_) => OTEL_EXPORTER_OTLP_ENDPOINT_DEFAULT.to_string(), + Err(_) => default_endpoint(protocol), }; self.export_config().endpoint = endpoint; @@ -151,38 +247,147 @@ #[cfg(test)] #[cfg(feature = "grpc-tonic")] mod tests { + // If an env test fails then the mutex will be poisoned and the following error will be displayed. + const LOCK_POISONED_MESSAGE: &str = "one of the other pipeline builder from env tests failed"; + use crate::exporter::{ - WithExportConfig, OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_TIMEOUT, - OTEL_EXPORTER_OTLP_TIMEOUT_DEFAULT, + default_endpoint, default_protocol, WithExportConfig, OTEL_EXPORTER_OTLP_ENDPOINT, + OTEL_EXPORTER_OTLP_GRPC_ENDPOINT_DEFAULT, OTEL_EXPORTER_OTLP_HTTP_ENDPOINT_DEFAULT, + OTEL_EXPORTER_OTLP_PROTOCOL_GRPC, OTEL_EXPORTER_OTLP_PROTOCOL_HTTP_PROTOBUF, + OTEL_EXPORTER_OTLP_TIMEOUT, OTEL_EXPORTER_OTLP_TIMEOUT_DEFAULT, }; - use crate::new_exporter; + use crate::{new_exporter, Compression, Protocol, OTEL_EXPORTER_OTLP_PROTOCOL}; + use std::str::FromStr; + use std::sync::Mutex; + + // Make sure env tests are not running concurrently + static ENV_LOCK: Mutex = Mutex::new(0); #[test] fn test_pipeline_builder_from_env_default_vars() { - let expected_endpoint = "https://otlp_endpoint:4317"; - std::env::set_var(OTEL_EXPORTER_OTLP_ENDPOINT, expected_endpoint); - std::env::set_var(OTEL_EXPORTER_OTLP_TIMEOUT, "bad_timeout"); - - let mut exporter_builder = new_exporter().tonic().with_env(); - assert_eq!(exporter_builder.exporter_config.endpoint, expected_endpoint); - - exporter_builder = new_exporter().tonic().with_env(); + let _env_lock = ENV_LOCK.lock().expect(LOCK_POISONED_MESSAGE); + let exporter_builder = new_exporter().tonic().with_env(); + assert_eq!( + exporter_builder.exporter_config.protocol, + default_protocol() + ); + assert_eq!( + exporter_builder.exporter_config.endpoint, + default_endpoint(default_protocol()) + ); assert_eq!( exporter_builder.exporter_config.timeout, std::time::Duration::from_secs(OTEL_EXPORTER_OTLP_TIMEOUT_DEFAULT) ); + } - std::env::set_var(OTEL_EXPORTER_OTLP_TIMEOUT, "60"); + #[test] + fn test_pipeline_builder_from_env_endpoint() { + let _env_lock = ENV_LOCK.lock().expect(LOCK_POISONED_MESSAGE); + std::env::set_var(OTEL_EXPORTER_OTLP_ENDPOINT, "http://example.com"); + let exporter_builder = new_exporter().tonic().with_env(); + assert_eq!( + exporter_builder.exporter_config.endpoint, + "http://example.com" + ); + std::env::remove_var(OTEL_EXPORTER_OTLP_ENDPOINT); + assert!(std::env::var(OTEL_EXPORTER_OTLP_ENDPOINT).is_err()); + } - exporter_builder = new_exporter().tonic().with_env(); + #[test] + fn test_pipeline_builder_from_env_protocol_http_protobuf() { + let _env_lock = ENV_LOCK.lock().expect(LOCK_POISONED_MESSAGE); + std::env::set_var( + OTEL_EXPORTER_OTLP_PROTOCOL, + OTEL_EXPORTER_OTLP_PROTOCOL_HTTP_PROTOBUF, + ); + let exporter_builder = new_exporter().tonic().with_env(); + assert_eq!( + exporter_builder.exporter_config.protocol, + Protocol::HttpBinary + ); + assert_eq!( + exporter_builder.exporter_config.endpoint, + OTEL_EXPORTER_OTLP_HTTP_ENDPOINT_DEFAULT + ); + + std::env::remove_var(OTEL_EXPORTER_OTLP_PROTOCOL); + assert!(std::env::var(OTEL_EXPORTER_OTLP_PROTOCOL).is_err()); + } + + #[test] + fn test_pipeline_builder_from_env_protocol_grpc() { + let _env_lock = ENV_LOCK.lock().expect(LOCK_POISONED_MESSAGE); + std::env::set_var( + OTEL_EXPORTER_OTLP_PROTOCOL, + OTEL_EXPORTER_OTLP_PROTOCOL_GRPC, + ); + let exporter_builder = new_exporter().tonic().with_env(); + assert_eq!(exporter_builder.exporter_config.protocol, Protocol::Grpc); + assert_eq!( + exporter_builder.exporter_config.endpoint, + OTEL_EXPORTER_OTLP_GRPC_ENDPOINT_DEFAULT + ); + + std::env::remove_var(OTEL_EXPORTER_OTLP_PROTOCOL); + assert!(std::env::var(OTEL_EXPORTER_OTLP_PROTOCOL).is_err()); + } + + #[test] + fn test_pipeline_builder_from_env_bad_protocol() { + let _env_lock = ENV_LOCK.lock().expect(LOCK_POISONED_MESSAGE); + std::env::set_var(OTEL_EXPORTER_OTLP_PROTOCOL, "bad_protocol"); + let exporter_builder = new_exporter().tonic().with_env(); + assert_eq!( + exporter_builder.exporter_config.protocol, + default_protocol() + ); + assert_eq!( + exporter_builder.exporter_config.endpoint, + default_endpoint(default_protocol()) + ); + + std::env::remove_var(OTEL_EXPORTER_OTLP_PROTOCOL); + assert!(std::env::var(OTEL_EXPORTER_OTLP_PROTOCOL).is_err()); + } + + #[test] + fn test_pipeline_builder_from_env_timeout() { + let _env_lock = ENV_LOCK.lock().expect(LOCK_POISONED_MESSAGE); + std::env::set_var(OTEL_EXPORTER_OTLP_TIMEOUT, "60"); + let exporter_builder = new_exporter().tonic().with_env(); assert_eq!( exporter_builder.exporter_config.timeout, std::time::Duration::from_secs(60) ); - std::env::remove_var(OTEL_EXPORTER_OTLP_ENDPOINT); std::env::remove_var(OTEL_EXPORTER_OTLP_TIMEOUT); - assert!(std::env::var(OTEL_EXPORTER_OTLP_ENDPOINT).is_err()); assert!(std::env::var(OTEL_EXPORTER_OTLP_TIMEOUT).is_err()); } + + #[test] + fn test_pipeline_builder_from_env_bad_timeout() { + let _env_lock = ENV_LOCK.lock().expect(LOCK_POISONED_MESSAGE); + std::env::set_var(OTEL_EXPORTER_OTLP_TIMEOUT, "bad_timeout"); + + let exporter_builder = new_exporter().tonic().with_env(); + assert_eq!( + exporter_builder.exporter_config.timeout, + std::time::Duration::from_secs(OTEL_EXPORTER_OTLP_TIMEOUT_DEFAULT) + ); + + std::env::remove_var(OTEL_EXPORTER_OTLP_TIMEOUT); + assert!(std::env::var(OTEL_EXPORTER_OTLP_TIMEOUT).is_err()); + } + + #[test] + fn test_compression_parse() { + assert_eq!(Compression::from_str("gzip").unwrap(), Compression::Gzip); + Compression::from_str("bad_compression").expect_err("bad compression"); + } + + #[test] + fn test_compression_to_str() { + assert_eq!(Compression::Gzip.to_string(), "gzip"); + } } diff -Nru temporalio-1.3.0/vendor/opentelemetry-otlp/src/exporter/tonic.rs temporalio-1.3.0/vendor/opentelemetry-otlp/src/exporter/tonic.rs --- temporalio-1.3.0/vendor/opentelemetry-otlp/src/exporter/tonic.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-otlp/src/exporter/tonic.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,12 +1,18 @@ -use crate::ExportConfig; +use crate::exporter::Compression; +use crate::{ExportConfig, OTEL_EXPORTER_OTLP_COMPRESSION}; +use std::fmt::{Debug, Formatter}; +use tonic::codec::CompressionEncoding; use tonic::metadata::MetadataMap; #[cfg(feature = "tls")] use tonic::transport::ClientTlsConfig; +use super::default_headers; + /// Configuration for [tonic] /// /// [tonic]: https://github.com/hyperium/tonic #[derive(Debug, Default)] +#[non_exhaustive] pub struct TonicConfig { /// Custom metadata entries to send to the collector. pub metadata: Option, @@ -14,6 +20,39 @@ /// TLS settings for the collector endpoint. #[cfg(feature = "tls")] pub tls_config: Option, + + /// The compression algorithm to use when communicating with the collector. + pub compression: Option, +} + +impl TryFrom for tonic::codec::CompressionEncoding { + type Error = crate::Error; + + fn try_from(value: Compression) -> Result { + match value { + #[cfg(feature = "gzip-tonic")] + Compression::Gzip => Ok(tonic::codec::CompressionEncoding::Gzip), + #[cfg(not(feature = "gzip-tonic"))] + Compression::Gzip => Err(crate::Error::UnsupportedCompressionAlgorithm( + value.to_string(), + )), + } + } +} + +pub(crate) fn resolve_compression( + tonic_config: &TonicConfig, + env_override: &'static str, +) -> Result, crate::Error> { + if let Some(compression) = tonic_config.compression { + Ok(Some(compression.try_into()?)) + } else if let Ok(compression) = std::env::var(env_override) { + Ok(Some(compression.parse::()?.try_into()?)) + } else if let Ok(compression) = std::env::var(OTEL_EXPORTER_OTLP_COMPRESSION) { + Ok(Some(compression.parse::()?.try_into()?)) + } else { + Ok(None) + } } /// Build a trace exporter that uses [tonic] as grpc layer and opentelemetry protocol. @@ -25,11 +64,47 @@ /// /// [tonic]: /// [channel]: tonic::transport::Channel -#[derive(Default, Debug)] +#[derive(Debug)] pub struct TonicExporterBuilder { pub(crate) exporter_config: ExportConfig, pub(crate) tonic_config: TonicConfig, pub(crate) channel: Option, + pub(crate) interceptor: Option, +} + +pub(crate) struct BoxInterceptor(Box); +impl tonic::service::Interceptor for BoxInterceptor { + fn call(&mut self, request: tonic::Request<()>) -> Result, tonic::Status> { + self.0.call(request) + } +} + +impl Debug for BoxInterceptor { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + write!(f, "BoxInterceptor(..)") + } +} + +impl Default for TonicExporterBuilder { + fn default() -> Self { + let tonic_config = TonicConfig { + metadata: Some(MetadataMap::from_headers( + (&default_headers()) + .try_into() + .expect("Invalid tonic headers"), + )), + #[cfg(feature = "tls")] + tls_config: None, + compression: None, + }; + + TonicExporterBuilder { + exporter_config: ExportConfig::default(), + tonic_config, + channel: Option::default(), + interceptor: Option::default(), + } + } } impl TonicExporterBuilder { @@ -42,7 +117,22 @@ /// Set custom metadata entries to send to the collector. pub fn with_metadata(mut self, metadata: MetadataMap) -> Self { - self.tonic_config.metadata = Some(metadata); + // extending metadata maps is harder than just casting back/forth + let incoming_headers = metadata.into_headers(); + let mut existing_headers = self + .tonic_config + .metadata + .unwrap_or_default() + .into_headers(); + existing_headers.extend(incoming_headers.into_iter()); + + self.tonic_config.metadata = Some(MetadataMap::from_headers(existing_headers)); + self + } + + /// Set the compression algorithm to use when communicating with the collector. + pub fn with_compression(mut self, compression: Compression) -> Self { + self.tonic_config.compression = Some(compression); self } @@ -56,4 +146,63 @@ self.channel = Some(channel); self } + + /// Use a custom `interceptor` to modify each outbound request. + /// this can be used to modify the grpc metadata, for example + /// to inject auth tokens. + pub fn with_interceptor(mut self, interceptor: I) -> Self + where + I: tonic::service::Interceptor + Send + 'static, + { + self.interceptor = Some(BoxInterceptor(Box::new(interceptor))); + self + } +} + +#[cfg(test)] +mod tests { + #[cfg(feature = "gzip-tonic")] + use crate::exporter::Compression; + use crate::TonicExporterBuilder; + use tonic::metadata::{MetadataMap, MetadataValue}; + + #[test] + fn test_with_metadata() { + // metadata should merge with the current one with priority instead of just replacing it + let mut metadata = MetadataMap::new(); + metadata.insert("foo", "bar".parse().unwrap()); + let builder = TonicExporterBuilder::default().with_metadata(metadata); + let result = builder.tonic_config.metadata.unwrap(); + let foo = result.get("foo").unwrap(); + assert_eq!(foo, &MetadataValue::try_from("bar").unwrap()); + assert!(result.get("User-Agent").is_some()); + + // metadata should override entries with the same key in the default one + let mut metadata = MetadataMap::new(); + metadata.insert("user-agent", "baz".parse().unwrap()); + let builder = TonicExporterBuilder::default().with_metadata(metadata); + let result = builder.tonic_config.metadata.unwrap(); + assert_eq!( + result.get("User-Agent").unwrap(), + &MetadataValue::try_from("baz").unwrap() + ); + assert_eq!( + result.len(), + TonicExporterBuilder::default() + .tonic_config + .metadata + .unwrap() + .len() + ); + } + + #[test] + #[cfg(feature = "gzip-tonic")] + fn test_with_compression() { + // metadata should merge with the current one with priority instead of just replacing it + let mut metadata = MetadataMap::new(); + metadata.insert("foo", "bar".parse().unwrap()); + let builder = TonicExporterBuilder::default().with_compression(Compression::Gzip); + assert_eq!(builder.tonic_config.compression.unwrap(), Compression::Gzip); + } } diff -Nru temporalio-1.3.0/vendor/opentelemetry-otlp/src/lib.rs temporalio-1.3.0/vendor/opentelemetry-otlp/src/lib.rs --- temporalio-1.3.0/vendor/opentelemetry-otlp/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-otlp/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -85,10 +85,10 @@ //! on the choice of exporters. //! //! ```no_run -//! use opentelemetry::{KeyValue, trace::Tracer}; -//! use opentelemetry::sdk::{trace::{self, RandomIdGenerator, Sampler}, Resource}; -//! use opentelemetry::sdk::metrics::{selectors, PushController}; -//! use opentelemetry::sdk::util::tokio_interval_stream; +//! use opentelemetry_api::{KeyValue, trace::Tracer}; +//! use opentelemetry_sdk::{trace::{self, RandomIdGenerator, Sampler}, Resource}; +//! use opentelemetry_sdk::metrics::{selectors, PushController}; +//! use opentelemetry_sdk::util::tokio_interval_stream; //! use opentelemetry_otlp::{Protocol, WithExportConfig, ExportConfig}; //! use std::time::Duration; //! use tonic::metadata::*; @@ -181,41 +181,51 @@ #![cfg_attr(test, deny(warnings))] mod exporter; +#[cfg(feature = "logs")] +mod logs; #[cfg(feature = "metrics")] mod metric; #[cfg(feature = "trace")] mod span; mod transform; +pub use crate::exporter::Compression; pub use crate::exporter::ExportConfig; #[cfg(feature = "trace")] pub use crate::span::{ - OtlpTracePipeline, SpanExporter, SpanExporterBuilder, OTEL_EXPORTER_OTLP_TRACES_ENDPOINT, - OTEL_EXPORTER_OTLP_TRACES_TIMEOUT, + OtlpTracePipeline, SpanExporter, SpanExporterBuilder, OTEL_EXPORTER_OTLP_TRACES_COMPRESSION, + OTEL_EXPORTER_OTLP_TRACES_ENDPOINT, OTEL_EXPORTER_OTLP_TRACES_TIMEOUT, }; #[cfg(feature = "metrics")] pub use crate::metric::{ - MetricsExporter, OtlpMetricPipeline, OTEL_EXPORTER_OTLP_METRICS_ENDPOINT, + MetricsExporter, MetricsExporterBuilder, OtlpMetricPipeline, + OTEL_EXPORTER_OTLP_METRICS_COMPRESSION, OTEL_EXPORTER_OTLP_METRICS_ENDPOINT, OTEL_EXPORTER_OTLP_METRICS_TIMEOUT, }; +#[cfg(feature = "logs")] +pub use crate::logs::{ + LogExporter, LogExporterBuilder, OtlpLogPipeline, OTEL_EXPORTER_OTLP_LOGS_COMPRESSION, +}; + pub use crate::exporter::{ - HasExportConfig, WithExportConfig, OTEL_EXPORTER_OTLP_ENDPOINT, - OTEL_EXPORTER_OTLP_ENDPOINT_DEFAULT, OTEL_EXPORTER_OTLP_TIMEOUT, + HasExportConfig, WithExportConfig, OTEL_EXPORTER_OTLP_COMPRESSION, OTEL_EXPORTER_OTLP_ENDPOINT, + OTEL_EXPORTER_OTLP_ENDPOINT_DEFAULT, OTEL_EXPORTER_OTLP_PROTOCOL, + OTEL_EXPORTER_OTLP_PROTOCOL_DEFAULT, OTEL_EXPORTER_OTLP_TIMEOUT, OTEL_EXPORTER_OTLP_TIMEOUT_DEFAULT, }; -use opentelemetry::sdk::export::ExportError; +use opentelemetry_sdk::export::ExportError; #[cfg(feature = "metrics")] use std::time::{Duration, SystemTime, UNIX_EPOCH}; #[cfg(feature = "grpc-sys")] -pub use crate::exporter::grpcio::{Compression, Credentials, GrpcioExporterBuilder}; +pub use crate::exporter::grpcio::{Credentials, GrpcioConfig, GrpcioExporterBuilder}; #[cfg(feature = "http-proto")] pub use crate::exporter::http::HttpExporterBuilder; #[cfg(feature = "grpc-tonic")] -pub use crate::exporter::tonic::TonicExporterBuilder; +pub use crate::exporter::tonic::{TonicConfig, TonicExporterBuilder}; #[cfg(feature = "serialize")] use serde::{Deserialize, Serialize}; @@ -250,8 +260,7 @@ /// Use HTTP as transport layer, return a `HttpExporterBuilder` to config the http transport /// and build the exporter. /// - /// This exporter can only be used in `tracing` pipeline. Support for `metrics` pipeline will be - /// added in the future. + /// This exporter can be used in both `tracing` and `metrics` pipeline. #[cfg(feature = "http-proto")] pub fn http(self) -> HttpExporterBuilder { HttpExporterBuilder::default() @@ -342,6 +351,10 @@ /// The pipeline will need a exporter to complete setup. Throw this error if none is provided. #[error("no exporter builder is provided, please provide one using with_exporter() method")] NoExporterBuilder, + + /// Unsupported compression algorithm. + #[error("unsupported compression algorithm '{0}'")] + UnsupportedCompressionAlgorithm(String), } #[cfg(feature = "grpc-tonic")] @@ -368,7 +381,7 @@ /// The communication protocol to use when exporting data. #[cfg_attr(feature = "serialize", derive(Deserialize, Serialize))] -#[derive(Clone, Copy, Debug)] +#[derive(Clone, Copy, Debug, Eq, PartialEq)] pub enum Protocol { /// GRPC protocol Grpc, diff -Nru temporalio-1.3.0/vendor/opentelemetry-otlp/src/logs.rs temporalio-1.3.0/vendor/opentelemetry-otlp/src/logs.rs --- temporalio-1.3.0/vendor/opentelemetry-otlp/src/logs.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-otlp/src/logs.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,507 @@ +//! OTLP - Log Exporter +//! +//! Defines a [LogExporter] to send logs via the OpenTelemetry Protocol (OTLP) + +#[cfg(feature = "grpc-tonic")] +use { + crate::exporter::tonic::{resolve_compression, TonicConfig, TonicExporterBuilder}, + opentelemetry_proto::tonic::collector::logs::v1::{ + logs_service_client::LogsServiceClient as TonicLogsServiceClient, + ExportLogsServiceRequest as TonicRequest, + }, + tonic::{ + metadata::{KeyAndValueRef, MetadataMap}, + transport::Channel as TonicChannel, + Request, + }, +}; + +#[cfg(feature = "grpc-sys")] +use { + crate::exporter::grpcio::{GrpcioConfig, GrpcioExporterBuilder}, + grpcio::{ + CallOption, Channel as GrpcChannel, ChannelBuilder, ChannelCredentialsBuilder, Environment, + MetadataBuilder, + }, + opentelemetry_proto::grpcio::{ + logs_service::ExportLogsServiceRequest as GrpcRequest, + logs_service_grpc::LogsServiceClient as GrpcioLogServiceClient, + }, +}; + +#[cfg(feature = "http-proto")] +use { + crate::exporter::http::{HttpConfig, HttpExporterBuilder}, + http::{ + header::{HeaderName, HeaderValue, CONTENT_TYPE}, + Method, Uri, + }, + opentelemetry_http::HttpClient, + opentelemetry_proto::tonic::collector::logs::v1::ExportLogsServiceRequest as ProstRequest, + prost::Message, + std::convert::TryFrom, +}; + +#[cfg(any(feature = "grpc-sys", feature = "http-proto"))] +use std::{collections::HashMap, sync::Arc}; + +use crate::exporter::ExportConfig; +use crate::OtlpPipeline; +use async_trait::async_trait; +use std::{ + borrow::Cow, + fmt::{self, Debug}, + time::Duration, +}; + +use opentelemetry_api::{ + global, + logs::{LogError, LoggerProvider}, +}; +use opentelemetry_sdk::{self, export::logs::LogData, logs::BatchMessage, runtime::RuntimeChannel}; + +/// Compression algorithm to use, defaults to none. +pub const OTEL_EXPORTER_OTLP_LOGS_COMPRESSION: &str = "OTEL_EXPORTER_OTLP_LOGS_COMPRESSION"; + +impl OtlpPipeline { + /// Create a OTLP logging pipeline. + pub fn logging(self) -> OtlpLogPipeline { + OtlpLogPipeline::default() + } +} + +/// OTLP log exporter builder +#[derive(Debug)] +#[allow(clippy::large_enum_variant)] +#[non_exhaustive] +pub enum LogExporterBuilder { + /// Tonic log exporter builder + #[cfg(feature = "grpc-tonic")] + Tonic(TonicExporterBuilder), + /// Grpc log exporter builder + #[cfg(feature = "grpc-sys")] + Grpcio(GrpcioExporterBuilder), + /// Http log exporter builder + #[cfg(feature = "http-proto")] + Http(HttpExporterBuilder), +} + +impl LogExporterBuilder { + /// Build a OTLP log exporter using the given configuration. + pub fn build_log_exporter(self) -> Result { + match self { + #[cfg(feature = "grpc-tonic")] + LogExporterBuilder::Tonic(builder) => Ok(match builder.channel { + Some(channel) => LogExporter::from_tonic_channel( + builder.exporter_config, + builder.tonic_config, + channel, + ), + None => LogExporter::new_tonic(builder.exporter_config, builder.tonic_config), + }?), + #[cfg(feature = "grpc-sys")] + LogExporterBuilder::Grpcio(builder) => Ok(LogExporter::new_grpcio( + builder.exporter_config, + builder.grpcio_config, + )), + #[cfg(feature = "http-proto")] + LogExporterBuilder::Http(builder) => Ok(LogExporter::new_http( + builder.exporter_config, + builder.http_config, + )?), + } + } +} + +#[cfg(feature = "grpc-tonic")] +impl From for LogExporterBuilder { + fn from(exporter: TonicExporterBuilder) -> Self { + LogExporterBuilder::Tonic(exporter) + } +} + +#[cfg(feature = "grpc-sys")] +impl From for LogExporterBuilder { + fn from(exporter: GrpcioExporterBuilder) -> Self { + LogExporterBuilder::Grpcio(exporter) + } +} + +#[cfg(feature = "http-proto")] +impl From for LogExporterBuilder { + fn from(exporter: HttpExporterBuilder) -> Self { + LogExporterBuilder::Http(exporter) + } +} + +/// OTLP exporter that sends log data +pub enum LogExporter { + #[cfg(feature = "grpc-tonic")] + /// Log Exporter using tonic as grpc layer. + Tonic { + /// Duration of timeout when sending logs to backend. + timeout: Duration, + /// Additional headers of the outbound requests. + metadata: Option, + /// The Grpc log exporter + log_exporter: TonicLogsServiceClient, + }, + #[cfg(feature = "grpc-sys")] + /// Log Exporter using grpcio as grpc layer + Grpcio { + /// Duration of timeout when sending logs to backend. + timeout: Duration, + /// Additional headers of the outbound requests. + headers: Option>, + /// The Grpc log exporter + log_exporter: GrpcioLogServiceClient, + }, + #[cfg(feature = "http-proto")] + /// Log Exporter using HTTP transport + Http { + /// Duration of timeout when sending logs to backend. + timeout: Duration, + /// Additional headers of the outbound requests. + headers: Option>, + /// The Collector URL + collector_endpoint: Uri, + /// The HTTP log exporter + log_exporter: Option>, + }, +} + +impl Debug for LogExporter { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + #[cfg(feature = "grpc-tonic")] + LogExporter::Tonic { + metadata, timeout, .. + } => f + .debug_struct("Exporter") + .field("metadata", &metadata) + .field("timeout", &timeout) + .field("log_exporter", &"LogServiceClient") + .finish(), + #[cfg(feature = "grpc-sys")] + LogExporter::Grpcio { + headers, timeout, .. + } => f + .debug_struct("Exporter") + .field("headers", &headers) + .field("timeout", &timeout) + .field("log_exporter", &"LogServiceClient") + .finish(), + #[cfg(feature = "http-proto")] + LogExporter::Http { + headers, timeout, .. + } => f + .debug_struct("Exporter") + .field("headers", &headers) + .field("timeout", &timeout) + .field("log_exporter", &"LogServiceClient") + .finish(), + } + } +} + +impl LogExporter { + /// Builds a new log exporter with the given configuration. + #[cfg(feature = "grpc-tonic")] + pub fn new_tonic( + config: ExportConfig, + tonic_config: TonicConfig, + ) -> Result { + let endpoint = TonicChannel::from_shared(config.endpoint.clone())?; + + #[cfg(feature = "tls")] + let channel = match tonic_config.tls_config.as_ref() { + Some(tls_config) => endpoint.tls_config(tls_config.clone())?, + None => endpoint, + } + .timeout(config.timeout) + .connect_lazy(); + + #[cfg(not(feature = "tls"))] + let channel = endpoint.timeout(config.timeout).connect_lazy(); + + LogExporter::from_tonic_channel(config, tonic_config, channel) + } + + /// Builds a new log exporter with given tonic channel. + /// + /// This allows users to bring their own custom channel like UDS. + /// However, users MUST make sure the [`ExportConfig::timeout`] is + /// the same as the channel's timeout. + #[cfg(feature = "grpc-tonic")] + pub fn from_tonic_channel( + config: ExportConfig, + tonic_config: TonicConfig, + channel: tonic::transport::Channel, + ) -> Result { + let mut log_exporter = TonicLogsServiceClient::new(channel); + if let Some(compression) = + resolve_compression(&tonic_config, OTEL_EXPORTER_OTLP_LOGS_COMPRESSION)? + { + log_exporter = log_exporter.send_compressed(compression); + } + Ok(LogExporter::Tonic { + timeout: config.timeout, + metadata: tonic_config.metadata, + log_exporter, + }) + } + + /// Builds a new log exporter with the given configuration + #[cfg(feature = "grpc-sys")] + pub fn new_grpcio(config: ExportConfig, grpcio_config: GrpcioConfig) -> Self { + let mut builder: ChannelBuilder = ChannelBuilder::new(Arc::new(Environment::new( + grpcio_config.completion_queue_count, + ))); + + if let Some(compression) = grpcio_config.compression { + builder = builder.default_compression_algorithm(compression.into()); + } + + let channel: GrpcChannel = match (grpcio_config.credentials, grpcio_config.use_tls) { + (None, Some(true)) => builder + .set_credentials(ChannelCredentialsBuilder::new().build()) + .connect(config.endpoint.as_str()), + (None, _) => builder.connect(config.endpoint.as_str()), + (Some(credentials), _) => builder + .set_credentials( + ChannelCredentialsBuilder::new() + .cert(credentials.cert.into(), credentials.key.into()) + .build(), + ) + .connect(config.endpoint.as_str()), + }; + + LogExporter::Grpcio { + log_exporter: GrpcioLogServiceClient::new(channel), + timeout: config.timeout, + headers: grpcio_config.headers, + } + } + + /// Builds a new log exporter with the given configuration + #[cfg(feature = "http-proto")] + pub fn new_http(config: ExportConfig, http_config: HttpConfig) -> Result { + let url: Uri = config + .endpoint + .parse() + .map_err::(Into::into)?; + + Ok(LogExporter::Http { + log_exporter: http_config.client, + timeout: config.timeout, + collector_endpoint: url, + headers: http_config.headers, + }) + } +} + +#[async_trait] +impl opentelemetry_sdk::export::logs::LogExporter for LogExporter { + async fn export(&mut self, batch: Vec) -> opentelemetry_api::logs::LogResult<()> { + match self { + #[cfg(feature = "grpc-sys")] + LogExporter::Grpcio { + timeout, + headers, + log_exporter, + } => { + let request = GrpcRequest { + resource_logs: protobuf::RepeatedField::from_vec( + batch.into_iter().map(Into::into).collect(), + ), + unknown_fields: Default::default(), + cached_size: Default::default(), + }; + + let mut call_options = CallOption::default().timeout(*timeout); + + if let Some(headers) = headers.clone() { + let mut metadata_builder: MetadataBuilder = MetadataBuilder::new(); + + for (key, value) in headers { + let _ = metadata_builder.add_str(key.as_str(), value.as_str()); + } + + call_options = call_options.headers(metadata_builder.build()); + } + + let receiver = log_exporter + .export_async_opt(&request, call_options) + .map_err::(Into::into)?; + receiver.await.map_err::(Into::into)?; + Ok(()) + } + #[cfg(feature = "grpc-tonic")] + LogExporter::Tonic { + log_exporter, + metadata, + .. + } => { + let mut request = Request::new(TonicRequest { + resource_logs: batch.into_iter().map(Into::into).collect(), + }); + + if let Some(metadata) = metadata { + for key_and_value in metadata.iter() { + match key_and_value { + KeyAndValueRef::Ascii(key, value) => { + request.metadata_mut().append(key, value.to_owned()) + } + KeyAndValueRef::Binary(key, value) => { + request.metadata_mut().append_bin(key, value.to_owned()) + } + }; + } + } + + log_exporter + .to_owned() + .export(request) + .await + .map_err::(Into::into)?; + + Ok(()) + } + + #[cfg(feature = "http-proto")] + LogExporter::Http { + log_exporter, + collector_endpoint, + headers, + .. + } => { + let req = ProstRequest { + resource_logs: batch.into_iter().map(Into::into).collect(), + }; + + let mut buf = vec![]; + req.encode(&mut buf) + .map_err::(Into::into)?; + + let mut request = http::Request::builder() + .method(Method::POST) + .uri(collector_endpoint.clone()) + .header(CONTENT_TYPE, "application/x-protobuf") + .body(buf) + .map_err::(Into::into)?; + + if let Some(headers) = headers.clone() { + for (k, val) in headers { + let value = HeaderValue::from_str(val.as_ref()) + .map_err::(Into::into)?; + let key = + HeaderName::try_from(&k).map_err::(Into::into)?; + request.headers_mut().insert(key, value); + } + } + + if let Some(client) = log_exporter { + client.send(request).await?; + Ok(()) + } else { + Err(crate::Error::NoHttpClient.into()) + } + } + } + } +} + +/// Recommended configuration for an OTLP exporter pipeline. +#[derive(Default, Debug)] +pub struct OtlpLogPipeline { + exporter_builder: Option, + log_config: Option, +} + +impl OtlpLogPipeline { + /// Set the OTLP log exporter builder. + pub fn with_exporter>(mut self, pipeline: B) -> Self { + self.exporter_builder = Some(pipeline.into()); + self + } + + /// Set the log provider configuration. + pub fn with_log_config(mut self, log_config: opentelemetry_sdk::logs::Config) -> Self { + self.log_config = Some(log_config); + self + } + + /// Install the configured log exporter. + /// + /// Returns a [`Logger`] with the name `opentelemetry-otlp` and the current crate version. + /// + /// [`Logger`]: opentelemetry_sdk::logs::Logger + pub fn install_simple(self) -> Result { + Ok(build_simple_with_exporter( + self.exporter_builder + .ok_or(crate::Error::NoExporterBuilder)? + .build_log_exporter()?, + self.log_config, + )) + } + + /// Install the configured log exporter and a batch span processor using the + /// specified runtime. + /// + /// Returns a [`Logger`] with the name `opentelemetry-otlp` and the current crate version. + /// + /// [`Logger`]: opentelemetry_sdk::logs::Logger + pub fn install_batch>( + self, + runtime: R, + ) -> Result { + Ok(build_batch_with_exporter( + self.exporter_builder + .ok_or(crate::Error::NoExporterBuilder)? + .build_log_exporter()?, + self.log_config, + runtime, + )) + } +} + +fn build_simple_with_exporter( + exporter: LogExporter, + log_config: Option, +) -> opentelemetry_sdk::logs::Logger { + let mut provider_builder = + opentelemetry_sdk::logs::LoggerProvider::builder().with_simple_exporter(exporter); + if let Some(config) = log_config { + provider_builder = provider_builder.with_config(config); + } + let provider = provider_builder.build(); + let logger = provider.versioned_logger( + Cow::Borrowed("opentelemetry-otlp"), + Some(Cow::Borrowed(env!("CARGO_PKG_VERSION"))), + None, + None, + ); + let _ = global::set_logger_provider(provider); + logger +} + +fn build_batch_with_exporter>( + exporter: LogExporter, + log_config: Option, + runtime: R, +) -> opentelemetry_sdk::logs::Logger { + let mut provider_builder = + opentelemetry_sdk::logs::LoggerProvider::builder().with_batch_exporter(exporter, runtime); + if let Some(config) = log_config { + provider_builder = provider_builder.with_config(config); + } + let provider = provider_builder.build(); + let logger = provider.versioned_logger( + Cow::Borrowed("opentelemetry-otlp"), + Some(Cow::Borrowed("CARGO_PKG_VERSION")), + None, + None, + ); + let _ = global::set_logger_provider(provider); + logger +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-otlp/src/metric.rs temporalio-1.3.0/vendor/opentelemetry-otlp/src/metric.rs --- temporalio-1.3.0/vendor/opentelemetry-otlp/src/metric.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-otlp/src/metric.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,45 +4,59 @@ //! //! Currently, OTEL metrics exporter only support GRPC connection via tonic on tokio runtime. -use crate::exporter::{ - tonic::{TonicConfig, TonicExporterBuilder}, - ExportConfig, -}; -use crate::transform::{record_to_metric, sink, CheckpointedMetrics}; +use crate::transform::sink; use crate::{Error, OtlpPipeline}; +use async_trait::async_trait; use core::fmt; -use opentelemetry::{global, metrics::Result, runtime::Runtime}; -use opentelemetry::{ - sdk::{ - export::metrics::{ - self, - aggregation::{AggregationKind, Temporality, TemporalitySelector}, - AggregatorSelector, InstrumentationLibraryReader, - }, - metrics::{ - controllers::{self, BasicController}, - processors, - sdk_api::Descriptor, +use opentelemetry_api::{ + global, + metrics::{MetricsError, Result}, +}; + +use opentelemetry_sdk::{ + metrics::{ + data::{ResourceMetrics, Temporality}, + exporter::PushMetricsExporter, + reader::{ + AggregationSelector, DefaultAggregationSelector, DefaultTemporalitySelector, + TemporalitySelector, }, - Resource, + Aggregation, InstrumentKind, MeterProvider, PeriodicReader, }, - Context, -}; -#[cfg(feature = "grpc-tonic")] -use opentelemetry_proto::tonic::collector::metrics::v1::{ - metrics_service_client::MetricsServiceClient, ExportMetricsServiceRequest, + runtime::Runtime, + Resource, }; use std::fmt::{Debug, Formatter}; -#[cfg(feature = "grpc-tonic")] -use std::str::FromStr; use std::sync::Mutex; use std::time; use std::time::Duration; +use tonic::codegen::{Body, StdError}; use tonic::metadata::KeyAndValueRef; #[cfg(feature = "grpc-tonic")] -use tonic::transport::Channel; -#[cfg(feature = "grpc-tonic")] -use tonic::Request; +use { + crate::exporter::tonic::{resolve_compression, TonicExporterBuilder}, + opentelemetry_proto::tonic::collector::metrics::v1::{ + metrics_service_client::MetricsServiceClient, ExportMetricsServiceRequest, + }, + std::str::FromStr, + tonic::codegen::Bytes, + tonic::transport::Channel, + tonic::Request, +}; + +#[cfg(feature = "http-proto")] +use { + crate::exporter::http::HttpExporterBuilder, + http::{ + header::{HeaderName, HeaderValue, CONTENT_TYPE}, + Method, Uri, + }, + opentelemetry_http::HttpClient, + prost::Message, + std::collections::HashMap, + std::convert::TryFrom, + std::sync::Arc, +}; /// Target to which the exporter is going to send metrics, defaults to https://localhost:4317/v1/metrics. /// Learn about the relationship between this constant and default/spans/logs at @@ -50,24 +64,18 @@ pub const OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: &str = "OTEL_EXPORTER_OTLP_METRICS_ENDPOINT"; /// Max waiting time for the backend to process each metrics batch, defaults to 10s. pub const OTEL_EXPORTER_OTLP_METRICS_TIMEOUT: &str = "OTEL_EXPORTER_OTLP_METRICS_TIMEOUT"; - +/// Compression algorithm to use, defaults to none. +pub const OTEL_EXPORTER_OTLP_METRICS_COMPRESSION: &str = "OTEL_EXPORTER_OTLP_METRICS_COMPRESSION"; impl OtlpPipeline { /// Create a OTLP metrics pipeline. - pub fn metrics( - self, - aggregator_selector: AS, - temporality_selector: TS, - rt: RT, - ) -> OtlpMetricPipeline + pub fn metrics(self, rt: RT) -> OtlpMetricPipeline where - AS: AggregatorSelector, - TS: TemporalitySelector + Clone, RT: Runtime, { OtlpMetricPipeline { rt, - aggregator_selector, - temporality_selector, + aggregator_selector: None, + temporality_selector: None, exporter_pipeline: None, resource: None, period: None, @@ -76,54 +84,72 @@ } } +/// OTLP metrics exporter builder. #[derive(Debug)] #[non_exhaustive] pub enum MetricsExporterBuilder { + /// Tonic metrics exporter builder #[cfg(feature = "grpc-tonic")] Tonic(TonicExporterBuilder), + /// Http metrics exporter builder + #[cfg(feature = "http-proto")] + Http(HttpExporterBuilder), } impl MetricsExporterBuilder { /// Build a OTLP metrics exporter with given configuration. - fn build_metrics_exporter( + pub fn build_metrics_exporter( self, - temporality_selector: Box, + temporality_selector: Box, + aggregation_selector: Box, ) -> Result { match self { #[cfg(feature = "grpc-tonic")] MetricsExporterBuilder::Tonic(builder) => Ok(MetricsExporter::new( - builder.exporter_config, - builder.tonic_config, + builder, + temporality_selector, + aggregation_selector, + )?), + #[cfg(feature = "http-proto")] + MetricsExporterBuilder::Http(builder) => Ok(MetricsExporter::new_http( + builder, temporality_selector, + aggregation_selector, )?), } } } +#[cfg(feature = "grpc-tonic")] impl From for MetricsExporterBuilder { fn from(exporter: TonicExporterBuilder) -> Self { MetricsExporterBuilder::Tonic(exporter) } } +#[cfg(feature = "http-proto")] +impl From for MetricsExporterBuilder { + fn from(exporter: HttpExporterBuilder) -> Self { + MetricsExporterBuilder::Http(exporter) + } +} + /// Pipeline to build OTLP metrics exporter /// /// Note that currently the OTLP metrics exporter only supports tonic as it's grpc layer and tokio as /// runtime. -pub struct OtlpMetricPipeline { +pub struct OtlpMetricPipeline { rt: RT, - aggregator_selector: AS, - temporality_selector: TS, + aggregator_selector: Option>, + temporality_selector: Option>, exporter_pipeline: Option, resource: Option, period: Option, timeout: Option, } -impl OtlpMetricPipeline +impl OtlpMetricPipeline where - AS: AggregatorSelector + Send + Sync + 'static, - TS: TemporalitySelector + Clone + Send + Sync + 'static, RT: Runtime, { /// Build with resource key value pairs. @@ -158,38 +184,60 @@ } } - /// Build push controller. - pub fn build(self) -> Result { + /// Build with the given temporality selector + pub fn with_temporality_selector(self, selector: T) -> Self { + OtlpMetricPipeline { + temporality_selector: Some(Box::new(selector)), + ..self + } + } + + /// Build with the given aggregation selector + pub fn with_aggregation_selector(self, selector: T) -> Self { + OtlpMetricPipeline { + aggregator_selector: Some(Box::new(selector)), + ..self + } + } + + /// Build MeterProvider + pub fn build(self) -> Result { let exporter = self .exporter_pipeline .ok_or(Error::NoExporterBuilder)? - .build_metrics_exporter(Box::new(self.temporality_selector.clone()))?; + .build_metrics_exporter( + self.temporality_selector + .unwrap_or_else(|| Box::new(DefaultTemporalitySelector::new())), + self.aggregator_selector + .unwrap_or_else(|| Box::new(DefaultAggregationSelector::new())), + )?; + + let mut builder = PeriodicReader::builder(exporter, self.rt); - let mut builder = controllers::basic(processors::factory( - self.aggregator_selector, - self.temporality_selector, - )) - .with_exporter(exporter); if let Some(period) = self.period { - builder = builder.with_collect_period(period); + builder = builder.with_interval(period); } if let Some(timeout) = self.timeout { - builder = builder.with_collect_timeout(timeout) + builder = builder.with_timeout(timeout) } + + let reader = builder.build(); + + let mut provider = MeterProvider::builder().with_reader(reader); + if let Some(resource) = self.resource { - builder = builder.with_resource(resource); + provider = provider.with_resource(resource); } - let controller = builder.build(); - controller.start(&Context::current(), self.rt)?; + let provider = provider.build(); - global::set_meter_provider(controller.clone()); + global::set_meter_provider(provider.clone()); - Ok(controller) + Ok(provider) } } -impl fmt::Debug for OtlpMetricPipeline { +impl fmt::Debug for OtlpMetricPipeline { fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { f.debug_struct("OtlpMetricPipeline") .field("exporter_pipeline", &self.exporter_pipeline) @@ -200,18 +248,49 @@ } } -enum ExportMsg { - #[cfg(feature = "grpc-tonic")] +#[cfg(feature = "grpc-tonic")] +pub enum ExportMsg { Export(tonic::Request), Shutdown, } +#[cfg(feature = "grpc-tonic")] +impl fmt::Debug for ExportMsg { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + f.write_str("ExportMsg") + } +} + /// Export metrics in OTEL format. -pub struct MetricsExporter { - #[cfg(feature = "tokio")] - sender: Mutex>, - temporality_selector: Box, - metadata: Option, +pub enum MetricsExporter { + #[cfg(feature = "grpc-tonic")] + /// metrics exporter using using tonic as grpc layer. + Tonic { + /// tokio mpsc sender + sender: Mutex>, + /// Additional headers of the outbound requests. + metadata: Option, + /// temporality selector + temporality_selector: Box, + /// aggregation selector + aggregation_selector: Box, + }, + #[cfg(feature = "http-proto")] + /// metrics exporter using HTTP transport + Http { + /// Duration of timeout when sending spans to backend + timeout: Duration, + /// Additional headers of the outbound requests. + headers: Option>, + /// The Collector URL + collector_endpoint: Uri, + /// metrics exporter + metrics_exporter: Option>, + /// temporality selector + temporality_selector: Box, + /// aggregation selector + aggregation_selector: Box, + }, } impl Debug for MetricsExporter { @@ -224,19 +303,51 @@ } impl TemporalitySelector for MetricsExporter { - fn temporality_for(&self, descriptor: &Descriptor, kind: &AggregationKind) -> Temporality { - self.temporality_selector.temporality_for(descriptor, kind) + fn temporality(&self, kind: InstrumentKind) -> Temporality { + match self { + #[cfg(feature = "grpc-tonic")] + MetricsExporter::Tonic { + temporality_selector, + .. + } => temporality_selector.temporality(kind), + #[cfg(feature = "http-proto")] + MetricsExporter::Http { + temporality_selector, + .. + } => temporality_selector.temporality(kind), + } + } +} + +impl AggregationSelector for MetricsExporter { + fn aggregation(&self, kind: InstrumentKind) -> Aggregation { + match self { + #[cfg(feature = "grpc-tonic")] + MetricsExporter::Tonic { + aggregation_selector, + .. + } => aggregation_selector.aggregation(kind), + + #[cfg(feature = "http-proto")] + MetricsExporter::Http { + aggregation_selector, + .. + } => aggregation_selector.aggregation(kind), + } } } impl MetricsExporter { - /// Create a new OTLP metrics exporter. + /// Create a new OTLP gRPC metrics exporter. #[cfg(feature = "grpc-tonic")] pub fn new( - config: ExportConfig, - mut tonic_config: TonicConfig, - temporality_selector: Box, + export_builder: TonicExporterBuilder, + temporality_selector: Box, + aggregation_selector: Box, ) -> Result { + let config = export_builder.exporter_config; + let mut tonic_config = export_builder.tonic_config; + let endpoint = match std::env::var(OTEL_EXPORTER_OTLP_METRICS_ENDPOINT) { Ok(val) => val, Err(_) => format!("{}{}", config.endpoint, "/v1/metrics"), @@ -249,10 +360,12 @@ }, Err(_) => config.timeout, }; + let compression = + resolve_compression(&tonic_config, OTEL_EXPORTER_OTLP_METRICS_COMPRESSION)?; let endpoint = Channel::from_shared(endpoint).map_err::(Into::into)?; - #[cfg(all(feature = "tls"))] + #[cfg(feature = "tls")] let channel = match tonic_config.tls_config { Some(tls_config) => endpoint .tls_config(tls_config) @@ -265,73 +378,191 @@ #[cfg(not(feature = "tls"))] let channel = endpoint.timeout(config.timeout).connect_lazy(); - let client = MetricsServiceClient::new(channel); - - let (sender, mut receiver) = tokio::sync::mpsc::channel::(2); - tokio::spawn(Box::pin(async move { - while let Some(msg) = receiver.recv().await { - match msg { - ExportMsg::Shutdown => { - break; + let (sender, receiver) = tokio::sync::mpsc::channel::(2); + tokio::spawn(async move { + match export_builder.interceptor { + Some(interceptor) => { + let mut client = MetricsServiceClient::with_interceptor(channel, interceptor); + if let Some(compression) = compression { + client = client.send_compressed(compression); } - ExportMsg::Export(req) => { - let _ = client.to_owned().export(req).await; + + export_sink(client, receiver).await + } + None => { + let mut client = MetricsServiceClient::new(channel); + if let Some(compression) = compression { + client = client.send_compressed(compression) } + export_sink(client, receiver).await } } - })); + }); - Ok(MetricsExporter { + Ok(MetricsExporter::Tonic { sender: Mutex::new(sender), temporality_selector, + aggregation_selector, metadata: tonic_config.metadata.take(), }) } + + /// Create a new OTLP HTTP metrics exporter. + #[cfg(feature = "http-proto")] + pub fn new_http( + export_builder: HttpExporterBuilder, + temporality_selector: Box, + aggregation_selector: Box, + ) -> Result { + let config = export_builder.exporter_config; + let http_config = export_builder.http_config; + let _endpoint = match std::env::var(OTEL_EXPORTER_OTLP_METRICS_ENDPOINT) { + Ok(val) => val, + Err(_) => format!("{}{}", config.endpoint, "/v1/metrics"), + }; + + let url: Uri = config + .endpoint + .parse() + .map_err::(Into::into)?; + + let _timeout = match std::env::var(OTEL_EXPORTER_OTLP_METRICS_TIMEOUT) { + Ok(val) => match u64::from_str(&val) { + Ok(seconds) => Duration::from_secs(seconds), + Err(_) => config.timeout, + }, + Err(_) => config.timeout, + }; + + Ok(MetricsExporter::Http { + metrics_exporter: http_config.client, + timeout: config.timeout, + collector_endpoint: url, + headers: http_config.headers, + temporality_selector, + aggregation_selector, + }) + } } -impl metrics::MetricsExporter for MetricsExporter { - fn export( - &self, - _cx: &Context, - res: &Resource, - reader: &dyn InstrumentationLibraryReader, - ) -> Result<()> { - let mut resource_metrics: Vec = Vec::default(); - // transform the metrics into proto. Append the resource and instrumentation library information into it. - reader.try_for_each(&mut |library, record| { - record.try_for_each(self, &mut |record| { - let metrics = record_to_metric(record, self.temporality_selector.as_ref())?; - resource_metrics.push((res.clone().into(), library.clone(), metrics)); - Ok(()) - }) - })?; - let mut request = Request::new(sink(resource_metrics)); - if let Some(metadata) = &self.metadata { - for key_and_value in metadata.iter() { - match key_and_value { - KeyAndValueRef::Ascii(key, value) => { - request.metadata_mut().append(key, value.to_owned()) - } - KeyAndValueRef::Binary(key, value) => { - request.metadata_mut().append_bin(key, value.to_owned()) +#[cfg(feature = "http-proto")] +async fn http_send_request( + metrics: &ResourceMetrics, + client: std::sync::Arc, + headers: Option>, + collector_endpoint: Uri, +) -> Result<()> { + let req = sink(metrics); + let mut buf = vec![]; + req.encode(&mut buf) + .map_err::(Into::into)?; + let mut request = http::Request::builder() + .method(Method::POST) + .uri(collector_endpoint) + .header(CONTENT_TYPE, "application/x-protobuf") + .body(buf) + .map_err::(Into::into)?; + + if let Some(headers) = headers { + for (k, val) in headers { + let value = + HeaderValue::from_str(val.as_ref()).map_err::(Into::into)?; + let key = HeaderName::try_from(&k).map_err::(Into::into)?; + request.headers_mut().insert(key, value); + } + } + client + .send(request) + .await + .map_err(|_| Error::PoisonedLock("Error sending to collector"))?; + Ok(()) +} + +#[cfg(feature = "grpc-tonic")] +async fn export_sink( + mut client: MetricsServiceClient, + mut receiver: tokio::sync::mpsc::Receiver, +) where + T: tonic::client::GrpcService, + T::Error: Into, + T::ResponseBody: Body + Send + 'static, + ::Error: Into + Send, +{ + while let Some(msg) = receiver.recv().await { + match msg { + ExportMsg::Shutdown => { + break; + } + ExportMsg::Export(req) => { + let _r = client.export(req).await; + } + } + } +} + +#[async_trait] +impl PushMetricsExporter for MetricsExporter { + async fn export(&self, metrics: &mut ResourceMetrics) -> Result<()> { + match self { + #[cfg(feature = "grpc-tonic")] + MetricsExporter::Tonic { + sender, metadata, .. + } => { + let mut request = Request::new(sink(metrics)); + if let Some(metadata) = metadata { + for key_and_value in metadata.iter() { + match key_and_value { + KeyAndValueRef::Ascii(key, value) => { + request.metadata_mut().append(key, value.to_owned()) + } + KeyAndValueRef::Binary(key, value) => { + request.metadata_mut().append_bin(key, value.to_owned()) + } + }; } - }; + } + sender + .lock() + .map(|sender| { + let _ = sender.try_send(ExportMsg::Export(request)); + }) + .map_err(|_| Error::PoisonedLock("otlp metric exporter's tonic sender"))?; + Ok(()) + } + #[cfg(feature = "http-proto")] + MetricsExporter::Http { + headers, + collector_endpoint, + metrics_exporter, + .. + } => { + if let Some(ref client) = metrics_exporter { + let client = Arc::clone(client); + http_send_request(metrics, client, headers.clone(), collector_endpoint.clone()) + .await?; + } else { + } + Ok(()) } } - self.sender - .lock() - .map(|sender| { - let _ = sender.try_send(ExportMsg::Export(request)); - }) - .map_err(|_| Error::PoisonedLock("otlp metric exporter's tonic sender"))?; + } + + async fn force_flush(&self) -> Result<()> { + // this component is stateless Ok(()) } -} -impl Drop for MetricsExporter { - fn drop(&mut self) { - let _sender_lock_guard = self.sender.lock().map(|sender| { - let _ = sender.try_send(ExportMsg::Shutdown); - }); + fn shutdown(&self) -> Result<()> { + match self { + #[cfg(feature = "grpc-tonic")] + MetricsExporter::Tonic { sender, .. } => { + let sender_lk = sender.lock()?; + sender_lk + .try_send(ExportMsg::Shutdown) + .map_err(|e| MetricsError::Other(format!("error shutting down otlp {e}"))) + } + #[cfg(feature = "http-proto")] + MetricsExporter::Http { .. } => Ok(()), + } } } diff -Nru temporalio-1.3.0/vendor/opentelemetry-otlp/src/span.rs temporalio-1.3.0/vendor/opentelemetry-otlp/src/span.rs --- temporalio-1.3.0/vendor/opentelemetry-otlp/src/span.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-otlp/src/span.rs 2023-10-30 19:40:00.000000000 +0000 @@ -9,7 +9,7 @@ use std::str::FromStr; #[cfg(feature = "grpc-tonic")] use { - crate::exporter::tonic::{TonicConfig, TonicExporterBuilder}, + crate::exporter::tonic::{resolve_compression, TonicConfig, TonicExporterBuilder}, opentelemetry_proto::tonic::collector::trace::v1::{ trace_service_client::TraceServiceClient as TonicTraceServiceClient, ExportTraceServiceRequest as TonicRequest, @@ -53,17 +53,20 @@ use crate::exporter::ExportConfig; use crate::OtlpPipeline; -use opentelemetry::{ +use opentelemetry_api::{ global, - sdk::{ - self, - export::trace::{ExportResult, SpanData}, - trace::TraceRuntime, - }, trace::{TraceError, TracerProvider}, }; +use opentelemetry_sdk::{ + self as sdk, + export::trace::{ExportResult, SpanData}, + trace::BatchMessage, +}; +use opentelemetry_semantic_conventions::SCHEMA_URL; use async_trait::async_trait; +use futures_core::future::BoxFuture; +use sdk::runtime::RuntimeChannel; /// Target to which the exporter is going to send spans, defaults to https://localhost:4317/v1/traces. /// Learn about the relationship between this constant and default/metrics/logs at @@ -71,6 +74,8 @@ pub const OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: &str = "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT"; /// Max waiting time for the backend to process each spans batch, defaults to 10s. pub const OTEL_EXPORTER_OTLP_TRACES_TIMEOUT: &str = "OTEL_EXPORTER_OTLP_TRACES_TIMEOUT"; +/// Compression algorithm to use, defaults to none. +pub const OTEL_EXPORTER_OTLP_TRACES_COMPRESSION: &str = "OTEL_EXPORTER_OTLP_TRACES_COMPRESSION"; impl OtlpPipeline { /// Create a OTLP tracing pipeline. @@ -90,6 +95,7 @@ pub struct OtlpTracePipeline { exporter_builder: Option, trace_config: Option, + batch_config: Option, } impl OtlpTracePipeline { @@ -99,6 +105,12 @@ self } + /// Set the batch span processor configuration, and it will override the env vars. + pub fn with_batch_config(mut self, batch_config: sdk::trace::BatchConfig) -> Self { + self.batch_config = Some(batch_config); + self + } + /// Set the OTLP span exporter builder. /// /// Note that the pipeline will not build the exporter until [`install_batch`] or [`install_simple`] @@ -115,7 +127,7 @@ /// /// Returns a [`Tracer`] with the name `opentelemetry-otlp` and current crate version. /// - /// [`Tracer`]: opentelemetry::trace::Tracer + /// [`Tracer`]: opentelemetry_api::trace::Tracer pub fn install_simple(self) -> Result { Ok(build_simple_with_exporter( self.exporter_builder @@ -132,8 +144,8 @@ /// /// `install_batch` will panic if not called within a tokio runtime /// - /// [`Tracer`]: opentelemetry::trace::Tracer - pub fn install_batch( + /// [`Tracer`]: opentelemetry_api::trace::Tracer + pub fn install_batch>( self, runtime: R, ) -> Result { @@ -143,6 +155,7 @@ .build_span_exporter()?, self.trace_config, runtime, + self.batch_config, )) } } @@ -156,25 +169,38 @@ provider_builder = provider_builder.with_config(config); } let provider = provider_builder.build(); - let tracer = - provider.versioned_tracer("opentelemetry-otlp", Some(env!("CARGO_PKG_VERSION")), None); + let tracer = provider.versioned_tracer( + "opentelemetry-otlp", + Some(env!("CARGO_PKG_VERSION")), + Some(SCHEMA_URL), + None, + ); let _ = global::set_tracer_provider(provider); tracer } -fn build_batch_with_exporter( +fn build_batch_with_exporter>( exporter: SpanExporter, trace_config: Option, runtime: R, + batch_config: Option, ) -> sdk::trace::Tracer { - let mut provider_builder = - sdk::trace::TracerProvider::builder().with_batch_exporter(exporter, runtime); + let mut provider_builder = sdk::trace::TracerProvider::builder(); + let batch_processor = sdk::trace::BatchSpanProcessor::builder(exporter, runtime) + .with_batch_config(batch_config.unwrap_or_default()) + .build(); + provider_builder = provider_builder.with_span_processor(batch_processor); + if let Some(config) = trace_config { provider_builder = provider_builder.with_config(config); } let provider = provider_builder.build(); - let tracer = - provider.versioned_tracer("opentelemetry-otlp", Some(env!("CARGO_PKG_VERSION")), None); + let tracer = provider.versioned_tracer( + "opentelemetry-otlp", + Some(env!("CARGO_PKG_VERSION")), + Some(SCHEMA_URL), + None, + ); let _ = global::set_tracer_provider(provider); tracer } @@ -362,10 +388,17 @@ tonic_config: TonicConfig, channel: tonic::transport::Channel, ) -> Result { + let mut trace_exporter = TonicTraceServiceClient::new(channel); + if let Some(compression) = + resolve_compression(&tonic_config, OTEL_EXPORTER_OTLP_TRACES_COMPRESSION)? + { + trace_exporter = trace_exporter.send_compressed(compression) + } + Ok(SpanExporter::Tonic { timeout: config.timeout, metadata: tonic_config.metadata, - trace_exporter: TonicTraceServiceClient::new(channel), + trace_exporter, }) } @@ -381,17 +414,17 @@ } let channel: GrpcChannel = match (grpcio_config.credentials, grpcio_config.use_tls) { - (None, Some(true)) => builder.secure_connect( - config.endpoint.as_str(), - ChannelCredentialsBuilder::new().build(), - ), + (None, Some(true)) => builder + .set_credentials(ChannelCredentialsBuilder::new().build()) + .connect(config.endpoint.as_str()), (None, _) => builder.connect(config.endpoint.as_str()), - (Some(credentials), _) => builder.secure_connect( - config.endpoint.as_str(), - ChannelCredentialsBuilder::new() - .cert(credentials.cert.into(), credentials.key.into()) - .build(), - ), + (Some(credentials), _) => builder + .set_credentials( + ChannelCredentialsBuilder::new() + .cert(credentials.cert.into(), credentials.key.into()) + .build(), + ) + .connect(config.endpoint.as_str()), }; SpanExporter::Grpcio { @@ -452,6 +485,8 @@ headers: Option>, collector_endpoint: Uri, ) -> ExportResult { + use opentelemetry_http::ResponseExt; + let req = ProstRequest { resource_spans: batch.into_iter().map(Into::into).collect(), }; @@ -476,16 +511,13 @@ } } - client.send(request).await?; + client.send(request).await?.error_for_status()?; Ok(()) } #[async_trait] -impl opentelemetry::sdk::export::trace::SpanExporter for SpanExporter { - fn export( - &mut self, - batch: Vec, - ) -> futures::future::BoxFuture<'static, ExportResult> { +impl opentelemetry_sdk::export::trace::SpanExporter for SpanExporter { + fn export(&mut self, batch: Vec) -> BoxFuture<'static, ExportResult> { match self { #[cfg(feature = "grpc-sys")] SpanExporter::Grpcio { diff -Nru temporalio-1.3.0/vendor/opentelemetry-otlp/src/transform/metrics.rs temporalio-1.3.0/vendor/opentelemetry-otlp/src/transform/metrics.rs --- temporalio-1.3.0/vendor/opentelemetry-otlp/src/transform/metrics.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-otlp/src/transform/metrics.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,739 +1,211 @@ -#[cfg(feature = "grpc-tonic")] -// The prost currently will generate a non optional deprecated field for labels. -// We cannot assign value to it otherwise clippy will complain. -// We cannot ignore it as it's not an optional field. -// We can remove this after we removed the labels field from proto. -#[allow(deprecated)] +#[cfg(any(feature = "grpc-tonic", feature = "http-proto"))] pub(crate) mod tonic { - use opentelemetry::metrics::MetricsError; - use opentelemetry::sdk::export::metrics::{ - aggregation::{ - Count, Histogram as SdkHistogram, LastValue, Sum as SdkSum, TemporalitySelector, - }, - Record, - }; - use opentelemetry::sdk::metrics::aggregators::{ - HistogramAggregator, LastValueAggregator, SumAggregator, - }; - use opentelemetry::sdk::InstrumentationLibrary; - use opentelemetry_proto::tonic::metrics::v1::DataPointFlags; - use opentelemetry_proto::tonic::FromNumber; + use std::any::Any; + use std::fmt; + + use opentelemetry_api::{global, metrics::MetricsError}; + use opentelemetry_proto::tonic::common::v1::InstrumentationScope as TonicInstrumentationScope; + use opentelemetry_proto::tonic::resource::v1::Resource as TonicResource; use opentelemetry_proto::tonic::{ collector::metrics::v1::ExportMetricsServiceRequest, - common::v1::KeyValue, metrics::v1::{ - metric::Data, number_data_point, AggregationTemporality, Gauge, Histogram, - HistogramDataPoint, InstrumentationLibraryMetrics, Metric, NumberDataPoint, - ResourceMetrics, Sum, + exemplar::Value as TonicExemplarValue, metric::Data as TonicMetricData, + number_data_point::Value as TonicDataPointValue, + AggregationTemporality as TonicTemporality, DataPointFlags as TonicDataPointFlags, + Exemplar as TonicExemplar, Gauge as TonicGauge, Histogram as TonicHistogram, + HistogramDataPoint as TonicHistogramDataPoint, Metric as TonicMetric, + NumberDataPoint as TonicNumberDataPoint, ResourceMetrics as TonicResourceMetrics, + ScopeMetrics as TonicScopeMetrics, Sum as TonicSum, }, }; + use opentelemetry_sdk::metrics::data::{ + self, Exemplar as SdkExemplar, Gauge as SdkGauge, Histogram as SdkHistogram, + Metric as SdkMetric, ScopeMetrics as SdkScopeMetrics, Sum as SdkSum, + }; + use opentelemetry_sdk::Resource as SdkResource; use crate::to_nanos; - use crate::transform::{CheckpointedMetrics, ResourceWrapper}; - use std::collections::{BTreeMap, HashMap}; - pub(crate) fn record_to_metric( - record: &Record, - temporality_selector: &dyn TemporalitySelector, - ) -> Result { - let descriptor = record.descriptor(); - let aggregator = record.aggregator().ok_or(MetricsError::NoDataCollected)?; - let attributes = record - .attributes() - .iter() - .map(|kv| kv.into()) - .collect::>(); - let temporality: AggregationTemporality = temporality_selector - .temporality_for(descriptor, aggregator.aggregation().kind()) - .into(); - let kind = descriptor.number_kind(); - Ok(Metric { - name: descriptor.name().to_string(), - description: descriptor.description().cloned().unwrap_or_default(), - unit: descriptor.unit().unwrap_or("").to_string(), - data: { - if let Some(last_value) = aggregator.as_any().downcast_ref::() - { - Some({ - let (val, sample_time) = last_value.last_value()?; - Data::Gauge(Gauge { - data_points: vec![NumberDataPoint { - flags: DataPointFlags::FlagNone as u32, - attributes, - start_time_unix_nano: to_nanos(*record.start_time()), - time_unix_nano: to_nanos(sample_time), - value: Some(number_data_point::Value::from_number(val, kind)), - exemplars: Vec::default(), - }], - }) - }) - } else if let Some(sum) = aggregator.as_any().downcast_ref::() { - Some({ - let val = sum.sum()?; - Data::Sum(Sum { - data_points: vec![NumberDataPoint { - flags: DataPointFlags::FlagNone as u32, - attributes, - start_time_unix_nano: to_nanos(*record.start_time()), - time_unix_nano: to_nanos(*record.end_time()), - value: Some(number_data_point::Value::from_number(val, kind)), - exemplars: Vec::default(), - }], - aggregation_temporality: temporality as i32, - is_monotonic: descriptor.instrument_kind().monotonic(), - }) - }) - } else if let Some(histogram) = - aggregator.as_any().downcast_ref::() - { - Some({ - let (sum, count, buckets) = - (histogram.sum()?, histogram.count()?, histogram.histogram()?); - Data::Histogram(Histogram { - data_points: vec![HistogramDataPoint { - flags: DataPointFlags::FlagNone as u32, - attributes, - start_time_unix_nano: to_nanos(*record.start_time()), - time_unix_nano: to_nanos(*record.end_time()), - count, - sum: sum.to_f64(kind), - bucket_counts: buckets - .counts() - .iter() - .cloned() - .map(|c| c as u64) - .collect(), - explicit_bounds: buckets.boundaries().clone(), - exemplars: Vec::default(), - }], - aggregation_temporality: temporality as i32, - }) - }) - } else { - None - } - }, - }) + pub(crate) fn sink(metrics: &data::ResourceMetrics) -> ExportMetricsServiceRequest { + ExportMetricsServiceRequest { + resource_metrics: vec![TonicResourceMetrics { + resource: transform_resource(&metrics.resource), + scope_metrics: transform_scope_metrics(&metrics.scope_metrics), + schema_url: metrics + .resource + .schema_url() + .map(Into::into) + .unwrap_or_default(), + }], + } } - // Group metrics with resources and instrumentation libraries with resources first, - // then instrumentation libraries. - #[allow(clippy::map_entry)] // caused by https://github.com/rust-lang/rust-clippy/issues/4674 - pub(crate) fn sink(metrics: Vec) -> ExportMetricsServiceRequest { - let mut sink_map = BTreeMap::< - ResourceWrapper, - HashMap>, - >::new(); - for (resource, instrumentation_library, metric) in metrics { - if sink_map.contains_key(&resource) { - // found resource, see if we can find instrumentation library - sink_map.entry(resource).and_modify(|map| { - if map.contains_key(&instrumentation_library) { - map.entry(instrumentation_library).and_modify(|map| { - if map.contains_key(&metric.name) { - map.entry(metric.name.clone()) - .and_modify(|base| merge(base, metric)); - } else { - map.insert(metric.name.clone(), metric); - } - }); - } else { - map.insert(instrumentation_library, { - let mut map = HashMap::new(); - map.insert(metric.name.clone(), metric); - map - }); - } - }); - } else { - // insert resource -> instrumentation library -> metrics - sink_map.insert(resource, { - let mut map = HashMap::new(); - map.insert(instrumentation_library, { - let mut map = HashMap::new(); - map.insert(metric.name.clone(), metric); - map - }); - map - }); - } + fn transform_resource(r: &SdkResource) -> Option { + if r.is_empty() { + return None; } - // convert resource -> instrumentation library -> [metrics] into proto struct ResourceMetric - ExportMetricsServiceRequest { - resource_metrics: sink_map - .into_iter() - .map(|(resource, metric_map)| ResourceMetrics { - schema_url: resource - .schema_url() - .map(|s| s.to_string()) - .unwrap_or_default(), - resource: Some(resource.into()), - instrumentation_library_metrics: metric_map - .into_iter() - .map( - |(instrumentation_library, metrics)| InstrumentationLibraryMetrics { - schema_url: instrumentation_library - .schema_url - .clone() - .unwrap_or_default() - .to_string(), - instrumentation_library: Some(instrumentation_library.into()), - metrics: metrics - .into_iter() - .map(|(_k, v)| v) - .collect::>(), // collect values - }, - ) - .collect::>(), - }) - .collect::>(), - } + Some(TonicResource { + attributes: r.iter().map(Into::into).collect(), + dropped_attributes_count: 0, + }) } - // if the data points are the compatible, merge, otherwise do nothing - macro_rules! merge_compatible_type { - ($base: ident, $other: ident, - $ ( - $t:path => $($other_t: path),* - ) ; *) => { - match &mut $base.data { - $( - Some($t(base_data)) => { - match $other.data { - $( - Some($other_t(other_data)) => { - if other_data.data_points.len() > 0 { - base_data.data_points.extend(other_data.data_points); - } - }, - )* - _ => {} - } - }, - )* - _ => {} - } - }; - } - - // Merge `other` metric proto struct into base by append its data point. - // If two metric proto don't have the same type or name, do nothing - pub(crate) fn merge(base: &mut Metric, other: Metric) { - if base.name != other.name { - return; - } - merge_compatible_type!(base, other, - Data::Sum => Data::Sum; - Data::Gauge => Data::Sum, Data::Gauge; - Data::Histogram => Data::Histogram; - Data::Summary => Data::Summary - ); + fn transform_scope_metrics(sms: &[SdkScopeMetrics]) -> Vec { + sms.iter() + .map(|sm| TonicScopeMetrics { + scope: Some(TonicInstrumentationScope::from(&sm.scope)), + metrics: transform_metrics(&sm.metrics), + schema_url: sm + .scope + .schema_url + .as_ref() + .map(ToString::to_string) + .unwrap_or_default(), + }) + .collect() } -} -#[cfg(test)] -#[allow(deprecated)] -mod tests { - #[cfg(feature = "grpc-tonic")] - mod tonic { - use crate::transform::metrics::tonic::merge; - use crate::transform::{record_to_metric, sink, ResourceWrapper}; - use opentelemetry::attributes::AttributeSet; - use opentelemetry::metrics::MetricsError; - use opentelemetry::sdk::export::metrics::aggregation::cumulative_temporality_selector; - use opentelemetry::sdk::export::metrics::record; - use opentelemetry::sdk::metrics::aggregators::{ - histogram, last_value, Aggregator, SumAggregator, - }; - use opentelemetry::sdk::metrics::sdk_api::{ - Descriptor, InstrumentKind, Number, NumberKind, - }; - use opentelemetry::sdk::{InstrumentationLibrary, Resource}; - use opentelemetry::Context; - use opentelemetry_proto::tonic::metrics::v1::DataPointFlags; - use opentelemetry_proto::tonic::{ - common::v1::{any_value, AnyValue, KeyValue}, - metrics::v1::{ - metric::Data, number_data_point, Gauge, Histogram, HistogramDataPoint, - InstrumentationLibraryMetrics, Metric, NumberDataPoint, ResourceMetrics, Sum, - }, - Attributes, FromNumber, - }; - use std::cmp::Ordering; - use std::sync::Arc; - use time::macros::datetime; - - fn key_value(key: &str, value: &str) -> KeyValue { - KeyValue { - key: key.to_string(), - value: Some(AnyValue { - value: Some(any_value::Value::StringValue(value.to_string())), - }), - } - } + fn transform_metrics(metrics: &[SdkMetric]) -> Vec { + metrics + .iter() + .map(|metric| TonicMetric { + name: metric.name.to_string(), + description: metric.description.to_string(), + unit: metric.unit.as_str().to_string(), + data: transform_data(metric.data.as_any()), + }) + .collect() + } - fn i64_to_value(val: i64) -> number_data_point::Value { - number_data_point::Value::AsInt(val) + fn transform_data(data: &dyn Any) -> Option { + if let Some(hist) = data.downcast_ref::>() { + Some(TonicMetricData::Histogram(transform_histogram(hist))) + } else if let Some(hist) = data.downcast_ref::>() { + Some(TonicMetricData::Histogram(transform_histogram(hist))) + } else if let Some(hist) = data.downcast_ref::>() { + Some(TonicMetricData::Histogram(transform_histogram(hist))) + } else if let Some(sum) = data.downcast_ref::>() { + Some(TonicMetricData::Sum(transform_sum(sum))) + } else if let Some(sum) = data.downcast_ref::>() { + Some(TonicMetricData::Sum(transform_sum(sum))) + } else if let Some(sum) = data.downcast_ref::>() { + Some(TonicMetricData::Sum(transform_sum(sum))) + } else if let Some(gauge) = data.downcast_ref::>() { + Some(TonicMetricData::Gauge(transform_gauge(gauge))) + } else if let Some(gauge) = data.downcast_ref::>() { + Some(TonicMetricData::Gauge(transform_gauge(gauge))) + } else if let Some(gauge) = data.downcast_ref::>() { + Some(TonicMetricData::Gauge(transform_gauge(gauge))) + } else { + global::handle_error(MetricsError::Other("unknown aggregator".into())); + None } + } - #[allow(clippy::type_complexity)] - fn get_metric_with_name( - name: &'static str, - data_points: Vec<(Vec<(&'static str, &'static str)>, u64, u64, i64)>, - ) -> Metric { - Metric { - name: name.to_string(), - description: "".to_string(), - unit: "".to_string(), - data: Some(Data::Gauge(Gauge { - data_points: data_points - .into_iter() - .map(|(attributes, start_time, end_time, value)| { - get_int_data_point(attributes, start_time, end_time, value) - }) - .collect::>(), - })), - } - } + trait Numeric: Into + Into + Copy { + // lossy at large values for u64 and i64 but otlp histograms only handle float values + fn into_f64(self) -> f64; + } - fn get_int_data_point( - attributes: Vec<(&'static str, &'static str)>, - start_time: u64, - end_time: u64, - value: i64, - ) -> NumberDataPoint { - NumberDataPoint { - flags: DataPointFlags::FlagNone as u32, - attributes: attributes - .into_iter() - .map(|(key, value)| key_value(key, value)) - .collect::>(), - start_time_unix_nano: start_time, - time_unix_nano: end_time, - value: Some(number_data_point::Value::from_number( - value.into(), - &NumberKind::I64, - )), - exemplars: vec![], - } + impl Numeric for u64 { + fn into_f64(self) -> f64 { + self as f64 } + } - type InstrumentationLibraryKv = (&'static str, Option<&'static str>); - type ResourceKv = Vec<(&'static str, &'static str)>; - type MetricRaw = (&'static str, Vec); - type DataPointRaw = (Vec<(&'static str, &'static str)>, u64, u64, i64); - - fn convert_to_resource_metrics( - data: (ResourceKv, Vec<(InstrumentationLibraryKv, Vec)>), - ) -> opentelemetry_proto::tonic::metrics::v1::ResourceMetrics { - // convert to proto resource - let attributes: Attributes = data - .0 - .into_iter() - .map(|(k, v)| opentelemetry::KeyValue::new(k.to_string(), v.to_string())) - .collect::>() - .into(); - let resource = opentelemetry_proto::tonic::resource::v1::Resource { - attributes: attributes.0, - dropped_attributes_count: 0, - }; - let mut instrumentation_library_metrics = vec![]; - for ((instrumentation_name, instrumentation_version), metrics) in data.1 { - instrumentation_library_metrics.push(InstrumentationLibraryMetrics { - instrumentation_library: Some( - opentelemetry_proto::tonic::common::v1::InstrumentationLibrary { - name: instrumentation_name.to_string(), - version: instrumentation_version.unwrap_or("").to_string(), - }, - ), - schema_url: "".to_string(), - metrics: metrics - .into_iter() - .map(|(name, data_points)| get_metric_with_name(name, data_points)) - .collect::>(), - }); - } - ResourceMetrics { - resource: Some(resource), - schema_url: "".to_string(), - instrumentation_library_metrics, - } + impl Numeric for i64 { + fn into_f64(self) -> f64 { + self as f64 } + } - // Assert two ResourceMetrics are equal. The challenge here is vectors in ResourceMetrics should - // be compared as unordered list/set. The currently method sort the input stably, and compare the - // instance one by one. - // - // Based on current implementation of sink function. There are two parts where the order is unknown. - // The first one is instrumentation_library_metrics in ResourceMetrics. - // The other is metrics in InstrumentationLibraryMetrics. - // - // If we changed the sink function to process the input in parallel, we will have to sort other vectors - // like data points in Metrics. - fn assert_resource_metrics(mut expect: ResourceMetrics, mut actual: ResourceMetrics) { - assert_eq!( - expect - .resource - .as_mut() - .map(|r| r.attributes.sort_by_key(|kv| kv.key.to_string())), - actual - .resource - .as_mut() - .map(|r| r.attributes.sort_by_key(|kv| kv.key.to_string())) - ); - assert_eq!( - expect.instrumentation_library_metrics.len(), - actual.instrumentation_library_metrics.len() - ); - let sort_instrumentation_library = - |metric: &InstrumentationLibraryMetrics, - other_metric: &InstrumentationLibraryMetrics| { - match ( - metric.instrumentation_library.as_ref(), - other_metric.instrumentation_library.as_ref(), - ) { - (Some(library), Some(other_library)) => library - .name - .cmp(&other_library.name) - .then(library.version.cmp(&other_library.version)), - _ => Ordering::Equal, - } - }; - let sort_metrics = |metric: &Metric, other_metric: &Metric| { - metric.name.cmp(&other_metric.name).then( - metric - .description - .cmp(&other_metric.description) - .then(metric.unit.cmp(&other_metric.unit)), - ) - }; - expect - .instrumentation_library_metrics - .sort_by(sort_instrumentation_library); - actual - .instrumentation_library_metrics - .sort_by(sort_instrumentation_library); - - for (mut expect, mut actual) in expect - .instrumentation_library_metrics - .into_iter() - .zip(actual.instrumentation_library_metrics.into_iter()) - { - assert_eq!(expect.metrics.len(), actual.metrics.len()); - - expect.metrics.sort_by(sort_metrics); - actual.metrics.sort_by(sort_metrics); - - assert_eq!(expect.metrics, actual.metrics) - } + impl Numeric for f64 { + fn into_f64(self) -> f64 { + self } + } - #[test] - fn test_record_to_metric() -> Result<(), MetricsError> { - let cx = Context::new(); - let attributes = vec![("test1", "value1"), ("test2", "value2")]; - let str_kv_attributes = attributes + fn transform_histogram(hist: &SdkHistogram) -> TonicHistogram { + TonicHistogram { + data_points: hist + .data_points .iter() - .cloned() - .map(|(key, value)| key_value(key, value)) - .collect::>(); - let attribute_set = AttributeSet::from_attributes( - attributes - .iter() - .cloned() - .map(|(k, v)| opentelemetry::KeyValue::new(k, v)), - ); - let start_time = datetime!(2020-12-25 10:10:0 UTC); // unit nano 1608891000000000000 - let end_time = datetime!(2020-12-25 10:10:30 UTC); // unix nano 1608891030000000000 - - // Sum - { - let descriptor = Descriptor::new( - "test".to_string(), - InstrumentKind::Counter, - NumberKind::I64, - None, - None, - ); - let aggregator = SumAggregator::default(); - let val = Number::from(12_i64); - aggregator.update(&cx, &val, &descriptor)?; - let wrapped_aggregator: Arc = Arc::new(aggregator); - let record = record( - &descriptor, - &attribute_set, - Some(&wrapped_aggregator), - start_time.into(), - end_time.into(), - ); - let metric = record_to_metric(&record, &cumulative_temporality_selector())?; - - let expect = Metric { - name: "test".to_string(), - description: "".to_string(), - unit: "".to_string(), - data: Some(Data::Sum(Sum { - data_points: vec![NumberDataPoint { - flags: DataPointFlags::FlagNone as u32, - attributes: str_kv_attributes.clone(), - start_time_unix_nano: 1608891000000000000, - time_unix_nano: 1608891030000000000, - value: Some(i64_to_value(12i64)), - exemplars: vec![], - }], - aggregation_temporality: 2, - is_monotonic: true, - })), - }; - - assert_eq!(expect, metric); - } - - // Last Value - { - let descriptor = Descriptor::new( - "test".to_string(), - InstrumentKind::GaugeObserver, - NumberKind::I64, - None, - None, - ); - let aggregator = last_value(); - let val1 = Number::from(12_i64); - let val2 = Number::from(14_i64); - aggregator.update(&cx, &val1, &descriptor)?; - aggregator.update(&cx, &val2, &descriptor)?; - let wrapped_aggregator: Arc = Arc::new(aggregator); - let record = record( - &descriptor, - &attribute_set, - Some(&wrapped_aggregator), - start_time.into(), - end_time.into(), - ); - let metric = record_to_metric(&record, &cumulative_temporality_selector())?; - - let expect = Metric { - name: "test".to_string(), - description: "".to_string(), - unit: "".to_string(), - data: Some(Data::Gauge(Gauge { - data_points: vec![NumberDataPoint { - flags: DataPointFlags::FlagNone as u32, - attributes: str_kv_attributes.clone(), - start_time_unix_nano: 1608891000000000000, - time_unix_nano: if let Data::Gauge(gauge) = metric.data.clone().unwrap() - { - // ignore this field as it is the time the value updated. - // It changes every time the test runs - gauge.data_points[0].time_unix_nano - } else { - 0 - }, - value: Some(i64_to_value(14i64)), - exemplars: vec![], - }], - })), - }; - - assert_eq!(expect, metric); - } - - // Histogram - { - let descriptor = Descriptor::new( - "test".to_string(), - InstrumentKind::Histogram, - NumberKind::I64, - None, - None, - ); - let bound = [0.1, 0.2, 0.3]; - let aggregator = histogram(&bound); - let vals = vec![1i64.into(), 2i64.into(), 3i64.into()]; - for val in vals.iter() { - aggregator.update(&cx, val, &descriptor)?; - } - let wrapped_aggregator: Arc = Arc::new(aggregator); - let record = record( - &descriptor, - &attribute_set, - Some(&wrapped_aggregator), - start_time.into(), - end_time.into(), - ); - let metric = record_to_metric(&record, &cumulative_temporality_selector())?; - - let expect = Metric { - name: "test".to_string(), - description: "".to_string(), - unit: "".to_string(), - data: Some(Data::Histogram(Histogram { - data_points: vec![HistogramDataPoint { - flags: DataPointFlags::FlagNone as u32, - attributes: str_kv_attributes, - start_time_unix_nano: 1608891000000000000, - time_unix_nano: 1608891030000000000, - count: 3, - sum: 6f64, - bucket_counts: vec![0, 0, 0, 3], - explicit_bounds: vec![0.1, 0.2, 0.3], - exemplars: vec![], - }], - aggregation_temporality: 2, - })), - }; - - assert_eq!(expect, metric); - } - - Ok(()) + .map(|dp| TonicHistogramDataPoint { + attributes: dp.attributes.iter().map(Into::into).collect(), + start_time_unix_nano: to_nanos(dp.start_time), + time_unix_nano: to_nanos(dp.time), + count: dp.count, + sum: Some(dp.sum.into_f64()), + bucket_counts: dp.bucket_counts.clone(), + explicit_bounds: dp.bounds.clone(), + exemplars: dp.exemplars.iter().map(transform_exemplar).collect(), + flags: TonicDataPointFlags::default() as u32, + min: dp.min.map(Numeric::into_f64), + max: dp.max.map(Numeric::into_f64), + }) + .collect(), + aggregation_temporality: TonicTemporality::from(hist.temporality).into(), } + } - #[test] - fn test_sink() { - let test_data: Vec<(ResourceWrapper, InstrumentationLibrary, Metric)> = vec![ - ( - vec![("runtime", "tokio")], - ("otlp", Some("0.1.1")), - "test", - (vec![("attribute1", "attribute2")], 12, 23, 2), - ), - ( - vec![("runtime", "tokio")], - ("otlp", Some("0.1.1")), - "test", - (vec![("attribute2", "attribute2")], 16, 19, 20), - ), - ( - vec![("runtime", "tokio"), ("rustc", "v48.0")], - ("otlp", Some("0.1.1")), - "test", - (vec![("attribute2", "attribute2")], 16, 19, 20), - ), - ( - vec![("runtime", "tokio")], - ("otlp", None), - "test", - (vec![("attribute1", "attribute2")], 15, 16, 88), - ), - ( - vec![("runtime", "tokio")], - ("otlp", None), - "another_test", - (vec![("attribute1", "attribute2")], 15, 16, 99), - ), - ] - .into_iter() - .map( - |(kvs, (name, version), metric_name, (attributes, start_time, end_time, value))| { - ( - ResourceWrapper::from(Resource::new(kvs.into_iter().map(|(k, v)| { - opentelemetry::KeyValue::new(k.to_string(), v.to_string()) - }))), - InstrumentationLibrary::new(name, version, None), - get_metric_with_name( - metric_name, - vec![(attributes, start_time, end_time, value)], - ), - ) - }, - ) - .collect::>(); - - let request = sink(test_data); - let actual = request.resource_metrics; - - let expect = vec![ - ( - vec![("runtime", "tokio")], - vec![ - ( - ("otlp", Some("0.1.1")), - vec![( - "test", - vec![ - (vec![("attribute1", "attribute2")], 12, 23, 2), - (vec![("attribute2", "attribute2")], 16, 19, 20), - ], - )], - ), - ( - ("otlp", None), - vec![ - ( - "test", - vec![(vec![("attribute1", "attribute2")], 15, 16, 88)], - ), - ( - "another_test", - vec![(vec![("attribute1", "attribute2")], 15, 16, 99)], - ), - ], - ), - ], - ), - ( - vec![("runtime", "tokio"), ("rustc", "v48.0")], - vec![( - ("otlp", Some("0.1.1")), - vec![( - "test", - vec![(vec![("attribute2", "attribute2")], 16, 19, 20)], - )], - )], - ), - ] - .into_iter() - .map(convert_to_resource_metrics); - - for (expect, actual) in expect.into_iter().zip(actual.into_iter()) { - assert_resource_metrics(expect, actual); - } + fn transform_sum< + T: fmt::Debug + Into + Into + Copy, + >( + sum: &SdkSum, + ) -> TonicSum { + TonicSum { + data_points: sum + .data_points + .iter() + .map(|dp| TonicNumberDataPoint { + attributes: dp.attributes.iter().map(Into::into).collect(), + start_time_unix_nano: dp.start_time.map(to_nanos).unwrap_or_default(), + time_unix_nano: dp.time.map(to_nanos).unwrap_or_default(), + exemplars: dp.exemplars.iter().map(transform_exemplar).collect(), + flags: TonicDataPointFlags::default() as u32, + value: Some(dp.value.into()), + }) + .collect(), + aggregation_temporality: TonicTemporality::from(sum.temporality).into(), + is_monotonic: sum.is_monotonic, } + } - #[test] - fn test_merge() { - let data_point_base = get_int_data_point(vec![("method", "POST")], 12, 12, 3); - let data_point_addon = get_int_data_point(vec![("method", "PUT")], 12, 12, 3); - - let mut metric1 = Metric { - name: "test".to_string(), - description: "".to_string(), - unit: "".to_string(), - data: Some(Data::Sum(Sum { - data_points: vec![data_point_base.clone()], - aggregation_temporality: 2, - is_monotonic: true, - })), - }; - - let metric2 = Metric { - name: "test".to_string(), - description: "".to_string(), - unit: "".to_string(), - data: Some(Data::Sum(Sum { - data_points: vec![data_point_addon.clone()], - aggregation_temporality: 2, - is_monotonic: true, - })), - }; - - let expect = Metric { - name: "test".to_string(), - description: "".to_string(), - unit: "".to_string(), - data: Some(Data::Sum(Sum { - data_points: vec![data_point_base, data_point_addon], - aggregation_temporality: 2, - is_monotonic: true, - })), - }; - - merge(&mut metric1, metric2); + fn transform_gauge< + T: fmt::Debug + Into + Into + Copy, + >( + gauge: &SdkGauge, + ) -> TonicGauge { + TonicGauge { + data_points: gauge + .data_points + .iter() + .map(|dp| TonicNumberDataPoint { + attributes: dp.attributes.iter().map(Into::into).collect(), + start_time_unix_nano: dp.start_time.map(to_nanos).unwrap_or_default(), + time_unix_nano: dp.time.map(to_nanos).unwrap_or_default(), + exemplars: dp.exemplars.iter().map(transform_exemplar).collect(), + flags: TonicDataPointFlags::default() as u32, + value: Some(dp.value.into()), + }) + .collect(), + } + } - assert_eq!(metric1, expect); + fn transform_exemplar + Copy>( + ex: &SdkExemplar, + ) -> TonicExemplar { + TonicExemplar { + filtered_attributes: ex + .filtered_attributes + .iter() + .map(|kv| (&kv.key, &kv.value).into()) + .collect(), + time_unix_nano: to_nanos(ex.time), + span_id: ex.span_id.into(), + trace_id: ex.trace_id.into(), + value: Some(ex.value.into()), } } } diff -Nru temporalio-1.3.0/vendor/opentelemetry-otlp/src/transform/mod.rs temporalio-1.3.0/vendor/opentelemetry-otlp/src/transform/mod.rs --- temporalio-1.3.0/vendor/opentelemetry-otlp/src/transform/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-otlp/src/transform/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,22 +1,5 @@ #[cfg(feature = "metrics")] mod metrics; -mod resource; #[cfg(all(feature = "grpc-tonic", feature = "metrics"))] -pub(crate) use metrics::tonic::record_to_metric; -#[cfg(all(feature = "grpc-tonic", feature = "metrics"))] pub(crate) use metrics::tonic::sink; -#[cfg(all(feature = "grpc-tonic", feature = "metrics"))] -pub(crate) use resource::ResourceWrapper; - -#[cfg(all(feature = "grpc-tonic", feature = "metrics"))] -use opentelemetry::sdk::InstrumentationLibrary; - -// Metrics in OTEL proto format checked from checkpoint with information of resource and instrumentation -// library. -#[cfg(all(feature = "grpc-tonic", feature = "metrics"))] -pub(crate) type CheckpointedMetrics = ( - ResourceWrapper, - InstrumentationLibrary, - opentelemetry_proto::tonic::metrics::v1::Metric, -); diff -Nru temporalio-1.3.0/vendor/opentelemetry-otlp/src/transform/resource.rs temporalio-1.3.0/vendor/opentelemetry-otlp/src/transform/resource.rs --- temporalio-1.3.0/vendor/opentelemetry-otlp/src/transform/resource.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-otlp/src/transform/resource.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,10 +3,10 @@ use std::cmp::Ordering; #[derive(PartialEq)] -pub(crate) struct ResourceWrapper(opentelemetry::sdk::Resource); +pub(crate) struct ResourceWrapper(opentelemetry_sdk::Resource); -impl From for ResourceWrapper { - fn from(r: opentelemetry::sdk::Resource) -> Self { +impl From for ResourceWrapper { + fn from(r: opentelemetry_sdk::Resource) -> Self { ResourceWrapper(r) } } diff -Nru temporalio-1.3.0/vendor/opentelemetry-otlp/tests/smoke.rs temporalio-1.3.0/vendor/opentelemetry-otlp/tests/smoke.rs --- temporalio-1.3.0/vendor/opentelemetry-otlp/tests/smoke.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-otlp/tests/smoke.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ use futures::StreamExt; -use opentelemetry::global::shutdown_tracer_provider; -use opentelemetry::trace::{Span, SpanKind, Tracer}; +use opentelemetry_api::global::shutdown_tracer_provider; +use opentelemetry_api::trace::{Span, SpanKind, Tracer}; use opentelemetry_otlp::WithExportConfig; use opentelemetry_proto::tonic::collector::trace::v1::{ trace_service_server::{TraceService, TraceServiceServer}, @@ -9,6 +9,8 @@ use std::{net::SocketAddr, sync::Mutex}; use tokio::sync::mpsc; use tokio_stream::wrappers::TcpListenerStream; +#[cfg(feature = "gzip-tonic")] +use tonic::codec::CompressionEncoding; struct MockServer { tx: Mutex>, @@ -37,7 +39,9 @@ .unwrap() .try_send(request.into_inner()) .expect("Channel full"); - Ok(tonic::Response::new(ExportTraceServiceResponse {})) + Ok(tonic::Response::new(ExportTraceServiceResponse { + partial_success: None, + })) } } @@ -55,6 +59,10 @@ }); let (req_tx, req_rx) = mpsc::channel(10); + #[cfg(feature = "gzip-tonic")] + let service = TraceServiceServer::new(MockServer::new(req_tx)) + .accept_compressed(CompressionEncoding::Gzip); + #[cfg(not(feature = "gzip-tonic"))] let service = TraceServiceServer::new(MockServer::new(req_tx)); tokio::task::spawn(async move { tonic::transport::Server::builder() @@ -78,12 +86,19 @@ let tracer = opentelemetry_otlp::new_pipeline() .tracing() .with_exporter( + #[cfg(feature = "gzip-tonic")] + opentelemetry_otlp::new_exporter() + .tonic() + .with_compression(opentelemetry_otlp::Compression::Gzip) + .with_endpoint(format!("http://{}", addr)) + .with_metadata(metadata), + #[cfg(not(feature = "gzip-tonic"))] opentelemetry_otlp::new_exporter() .tonic() .with_endpoint(format!("http://{}", addr)) .with_metadata(metadata), ) - .install_batch(opentelemetry::runtime::Tokio) + .install_batch(opentelemetry_sdk::runtime::Tokio) .expect("failed to install"); println!("Sending span..."); @@ -103,7 +118,7 @@ .resource_spans .get(0) .unwrap() - .instrumentation_library_spans + .scope_spans .get(0) .unwrap() .spans diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/.cargo-checksum.json temporalio-1.3.0/vendor/opentelemetry-prometheus/.cargo-checksum.json --- temporalio-1.3.0/vendor/opentelemetry-prometheus/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"ba570de507d4e29fa4e82254d4c243ca1a57b367d975f19c26d3c215e3edb7d6","CODEOWNERS":"abc35dda6643aed84b16084b9dccfee77929c299d60d21b590bd5c8c3b54e508","Cargo.toml":"d87a6f3626ae7c6911eafea7e1a8af97926371bad3dedf5ff170d53f427a6112","LICENSE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","README.md":"e6b22837f60dd8c04184cad2bbbf05d5c454a021cf14ac08dc9e77e326af0e89","src/lib.rs":"d19278eedbfcc20ef215ada61054858df4e36c4a930b44594d11cb634f2ed4fc","src/sanitize.rs":"eccbb5a77e2c2891aa62286d02234e767b497ad9ba991025abc40693686c1273","tests/integration_test.rs":"2e9dd49133b91554ba243c304d5641ffdc74b3f9bf7c00a71fb2cfea121776f0"},"package":"06c3d833835a53cf91331d2cfb27e9121f5a95261f31f08a1f79ab31688b8da8"} \ No newline at end of file +{"files":{"CHANGELOG.md":"ad862ad8d617a0063bb0fb58140670f96341335d83cdba853a6ddc1ba368578d","CODEOWNERS":"abc35dda6643aed84b16084b9dccfee77929c299d60d21b590bd5c8c3b54e508","Cargo.lock":"8c2f9959f46f6fafef476c618ea1ce83bb5afc528b501ad73b26a3544f237499","Cargo.toml":"0b4437dc9e538e031eb7ba64f42be7612ceb8ee982518461777fda15107c3b08","LICENSE":"208a3f5bae3355bd4f3f45626d1ea4518b253d618ee2896983436075c4375098","README.md":"c461512a79999d19583757e2e039b929f7ad3de905841358dc92446281d4e4c6","examples/hyper.rs":"b573ddcddf7420de6c7da714eab5f269a6702fd9ff95d36d8053d4e4a7884fed","src/config.rs":"94ae1892ac8f957fefe49622156f77de314b7a2454196aace99a93e20b67c5a0","src/lib.rs":"336b31d6997b940a0c2ba3b74708c3b79feda39582603967f237aeba5dbd58e2","src/utils.rs":"4aff77ef059606100fa6c578dc0b8892ec6156bf2ee7f5e4aca438bcec7cced2","tests/data/conflict_help_two_counters_1.txt":"1b94da75b978f855759779ad327c26024bb2ba4d084807cabe2844e188423623","tests/data/conflict_help_two_counters_2.txt":"84a1e98eeb7f4d44391f998d3e1c120560b96f8762a80992e37b48deec62a978","tests/data/conflict_help_two_histograms_1.txt":"7ae913f0ef8d9e419ebe80f22bc7938eb2bd76eba8084b29373d194bee0620fd","tests/data/conflict_help_two_histograms_2.txt":"6d3a715afb7848cb5c675b1246bbe5aaccca77c217038eff9c7596e6ce0d39a7","tests/data/conflict_help_two_updowncounters_1.txt":"ae1c601dcfee6ef04fa8291c20661ed6103de0d9d7f020cdedb8990708284e87","tests/data/conflict_help_two_updowncounters_2.txt":"873703d1b97d00e72d1c800353df3f02e458549326da3430cdca1cf0523c8012","tests/data/conflict_type_counter_and_updowncounter_1.txt":"dadb42a71849b46c86d527a8f9f2674f181a25141132bbf0f5e36c50201fa9e7","tests/data/conflict_type_counter_and_updowncounter_2.txt":"0eabf10c4ab38fa5d76a0d4798cd1afd13860160731bfb8015e910e35fa21d64","tests/data/conflict_type_histogram_and_updowncounter_1.txt":"e1b45933e2228185f30525e342f23739ab132523a17fd16a172b6ea8532ebd54","tests/data/conflict_type_histogram_and_updowncounter_2.txt":"a291baa5094b70251fe2c027d76fc9ffbe19c35666a96073bc64dd96aeef1813","tests/data/conflict_unit_two_counters.txt":"3ce6cdd626c7eb31fd95ea6c53bc64bd513ad0f574eeef9bbc0d8daff1afe96c","tests/data/conflict_unit_two_histograms.txt":"d0afa7ca22571f9657e818f5bfda847b79de752f813c351a19c2628eb3c12f3a","tests/data/conflict_unit_two_updowncounters.txt":"0e26438e7babcb540a36f0af0c4064817e12307d0790e346630a0f23c2f8ed28","tests/data/counter.txt":"6549511bd32063f314d11f3d874efc0799f650dbe1359450c616b27a94a38052","tests/data/counter_disabled_suffix.txt":"d80d58fdf0309bae4d8b587f6718b81ecdba79d44e20e46ed8bd2f89f163d969","tests/data/custom_resource.txt":"0f3b44da7d8c5360bed85d9b3afb924236e8d87592636dc911c8cdae5a7573d0","tests/data/empty_resource.txt":"1dc6da0559aec0f2e700449e4ac129c5e2a678e1b4cfe348d6649c7a6802d213","tests/data/gauge.txt":"e4c212a159fde7039c6917bb881b43c98dd07b95c5a80b340698d7f265691b1d","tests/data/histogram.txt":"6b4a5e7e924b9f03886b902e9ba052f311703ebe708746ceb5d32d09d77e917d","tests/data/multi_scopes.txt":"082a5b3421737d4115c9c4d610c4ecaaca7c3b09a137678a4378fe4b834885fc","tests/data/no_conflict_two_counters.txt":"a7cc1a4b47bcc729730725efffb083bc59594f004586d87064566368f0ad2773","tests/data/no_conflict_two_histograms.txt":"b860c5dfd6b6571a14ae285f96038006ad3d6588035063ac2445ef4b3493db57","tests/data/no_conflict_two_updowncounters.txt":"3ce35003bd31ebc0f46e6bfc06f5918520d14d47ac548fc5cc517873d063f8bd","tests/data/sanitized_labels.txt":"cb310835c7acba42589843da5d09c022da8eb0b801185427cd96ce02b99f5620","tests/data/sanitized_names.txt":"5a68990da96d3e642bbb25592bb0e364ed191b51a2808209303b518215d263b3","tests/data/with_namespace.txt":"917dea093865d7ea544e8676dff5bcfbe88337f85d35615ec8a11fd02d11dd94","tests/data/without_scope_and_target_info.txt":"e1d437e2465fb816baa5242bc400fb23276e81d5be52d5fcae9ba9d46ab5b27b","tests/data/without_scope_info.txt":"5ffe003fa762163a177c135dd8c4955df2da8e3b75052bfe9d6faee8db93b96b","tests/data/without_target_info.txt":"69607f1cf1b7e351845cdd11a122207985ed25f5d2f5e6633f00f3dabee255fb","tests/integration_test.rs":"f13172e7cc2a458576db15449c754125f9d7225c9ee72fdfc7e335e2ded5e902"},"package":"c7d81bc254e2d572120363a2b16cdb0d715d301b5789be0cfc26ad87e4e10e53"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/Cargo.lock temporalio-1.3.0/vendor/opentelemetry-prometheus/Cargo.lock --- temporalio-1.3.0/vendor/opentelemetry-prometheus/Cargo.lock 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,930 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aho-corasick" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +dependencies = [ + "memchr", +] + +[[package]] +name = "async-trait" +version = "0.1.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.13", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bumpalo" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "futures-channel" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" + +[[package]] +name = "futures-executor" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-macro" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.13", +] + +[[package]] +name = "futures-sink" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" + +[[package]] +name = "futures-task" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" + +[[package]] +name = "futures-util" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +dependencies = [ + "futures-core", + "futures-macro", + "futures-sink", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gimli" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" + +[[package]] +name = "h2" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be7b54589b581f624f566bf5d8eb2bab1db736c51528720b6bd36b96b55924d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + +[[package]] +name = "http" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "hyper" +version = "0.14.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc5e554ff619822309ffd57d8734d77cd5ce6238bc956f037ea06c58238c9899" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "indexmap" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "itoa" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" + +[[package]] +name = "js-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "miniz_oxide" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.45.0", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.30.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" + +[[package]] +name = "opentelemetry-prometheus" +version = "0.13.0" +dependencies = [ + "hyper", + "once_cell", + "opentelemetry_api", + "opentelemetry_sdk", + "prometheus", + "protobuf", + "tokio", +] + +[[package]] +name = "opentelemetry_api" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a81f725323db1b1206ca3da8bb19874bbd3f57c3bcd59471bfb04525b265b9b" +dependencies = [ + "futures-channel", + "futures-util", + "indexmap", + "js-sys", + "once_cell", + "pin-project-lite", + "thiserror", + "urlencoding", +] + +[[package]] +name = "opentelemetry_sdk" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa8e705a0612d48139799fcbaba0d4a90f06277153e43dd2bdc16c6f0edd8026" +dependencies = [ + "async-trait", + "futures-channel", + "futures-executor", + "futures-util", + "once_cell", + "opentelemetry_api", + "ordered-float", + "regex", + "thiserror", +] + +[[package]] +name = "ordered-float" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d84eb1409416d254e4a9c8fa56cc24701755025b458f0fcd8e59e1f5f40c23bf" +dependencies = [ + "num-traits", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys 0.45.0", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "proc-macro2" +version = "1.0.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d0dd4be24fcdcfeaa12a432d588dc59bbad6cad3510c67e74a2b6b2fc950564" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prometheus" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" +dependencies = [ + "cfg-if", + "fnv", + "lazy_static", + "memchr", + "parking_lot", + "protobuf", + "thiserror", +] + +[[package]] +name = "protobuf" +version = "2.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" + +[[package]] +name = "quote" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "socket2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "syn" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c9da457c5285ac1f936ebd076af6dac17a61cfe7826f2076b4d015cf47bc8ec" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.107", +] + +[[package]] +name = "tokio" +version = "1.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" +dependencies = [ + "autocfg", + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.13", +] + +[[package]] +name = "tokio-util" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "unicode-ident" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" + +[[package]] +name = "urlencoding" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9" + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.13", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.13", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.1", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.0", +] + +[[package]] +name = "windows-targets" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" +dependencies = [ + "windows_aarch64_gnullvm 0.42.1", + "windows_aarch64_msvc 0.42.1", + "windows_i686_gnu 0.42.1", + "windows_i686_msvc 0.42.1", + "windows_x86_64_gnu 0.42.1", + "windows_x86_64_gnullvm 0.42.1", + "windows_x86_64_msvc 0.42.1", +] + +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/Cargo.toml temporalio-1.3.0/vendor/opentelemetry-prometheus/Cargo.toml --- temporalio-1.3.0/vendor/opentelemetry-prometheus/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,9 +11,9 @@ [package] edition = "2021" -rust-version = "1.56" +rust-version = "1.60" name = "opentelemetry-prometheus" -version = "0.11.0" +version = "0.13.0" description = "Prometheus exporter for OpenTelemetry" homepage = "https://github.com/open-telemetry/opentelemetry-rust" readme = "README.md" @@ -30,6 +30,7 @@ ] license = "Apache-2.0" repository = "https://github.com/open-telemetry/opentelemetry-rust" +resolver = "1" [package.metadata.docs.rs] all-features = true @@ -38,8 +39,16 @@ "docsrs", ] -[dependencies.opentelemetry] -version = "0.18" +[dependencies.once_cell] +version = "1.17" + +[dependencies.opentelemetry_api] +version = "0.20" +features = ["metrics"] +default-features = false + +[dependencies.opentelemetry_sdk] +version = "0.20" features = ["metrics"] default-features = false @@ -49,8 +58,13 @@ [dependencies.protobuf] version = "2.14" -[dev-dependencies.lazy_static] -version = "1.4" +[dev-dependencies.hyper] +version = "0.14" +features = ["full"] + +[dev-dependencies.tokio] +version = "1" +features = ["full"] [features] prometheus-encoding = [] diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/CHANGELOG.md temporalio-1.3.0/vendor/opentelemetry-prometheus/CHANGELOG.md --- temporalio-1.3.0/vendor/opentelemetry-prometheus/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,26 @@ # Changelog +## v0.13.0 + +### Added + +- Add `with_namespace` option to exporter config. +- Add more units conversions between OTEL metrics and prometheus metrics [#1157](https://github.com/open-telemetry/opentelemetry-rust/pull/1157). +- Add `without_counter_suffixes` option to exporter config. + +### Changed + +- Update to opentelemetry-api v0.20.0 + +## v0.12.0 + +### Changed +- [Breaking] Add `_total` suffix for all counters [#952](https://github.com/open-telemetry/opentelemetry-rust/pull/952). +- Update to `opentelemetry` v0.19. +- Bump MSRV to 1.57 [#953](https://github.com/open-telemetry/opentelemetry-rust/pull/953). +- Update dependencies and bump MSRV to 1.60 [#969](https://github.com/open-telemetry/opentelemetry-rust/pull/969). +- Add `otel_scope_info` and `scope` labels [#974](https://github.com/open-telemetry/opentelemetry-rust/pull/974). + ## v0.11.0 ### Changed diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/examples/hyper.rs temporalio-1.3.0/vendor/opentelemetry-prometheus/examples/hyper.rs --- temporalio-1.3.0/vendor/opentelemetry-prometheus/examples/hyper.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/examples/hyper.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,114 @@ +use hyper::{ + header::CONTENT_TYPE, + service::{make_service_fn, service_fn}, + Body, Method, Request, Response, Server, +}; +use once_cell::sync::Lazy; +use opentelemetry_api::{ + metrics::{Counter, Histogram, MeterProvider as _, Unit}, + KeyValue, +}; +use opentelemetry_sdk::metrics::MeterProvider; +use prometheus::{Encoder, Registry, TextEncoder}; +use std::convert::Infallible; +use std::sync::Arc; +use std::time::SystemTime; + +static HANDLER_ALL: Lazy<[KeyValue; 1]> = Lazy::new(|| [KeyValue::new("handler", "all")]); + +async fn serve_req( + req: Request, + state: Arc, +) -> Result, hyper::Error> { + println!("Receiving request at path {}", req.uri()); + let request_start = SystemTime::now(); + + state.http_counter.add(1, HANDLER_ALL.as_ref()); + + let response = match (req.method(), req.uri().path()) { + (&Method::GET, "/metrics") => { + let mut buffer = vec![]; + let encoder = TextEncoder::new(); + let metric_families = state.registry.gather(); + encoder.encode(&metric_families, &mut buffer).unwrap(); + state + .http_body_gauge + .record(buffer.len() as u64, HANDLER_ALL.as_ref()); + + Response::builder() + .status(200) + .header(CONTENT_TYPE, encoder.format_type()) + .body(Body::from(buffer)) + .unwrap() + } + (&Method::GET, "/") => Response::builder() + .status(200) + .body(Body::from("Hello World")) + .unwrap(), + _ => Response::builder() + .status(404) + .body(Body::from("Missing Page")) + .unwrap(), + }; + + state.http_req_histogram.record( + request_start.elapsed().map_or(0.0, |d| d.as_secs_f64()), + &[], + ); + Ok(response) +} + +struct AppState { + registry: Registry, + http_counter: Counter, + http_body_gauge: Histogram, + http_req_histogram: Histogram, +} + +#[tokio::main] +pub async fn main() -> Result<(), Box> { + let registry = Registry::new(); + let exporter = opentelemetry_prometheus::exporter() + .with_registry(registry.clone()) + .build()?; + let provider = MeterProvider::builder().with_reader(exporter).build(); + + let meter = provider.meter("hyper-example"); + let state = Arc::new(AppState { + registry, + http_counter: meter + .u64_counter("http_requests_total") + .with_description("Total number of HTTP requests made.") + .init(), + http_body_gauge: meter + .u64_histogram("example.http_response_size") + .with_unit(Unit::new("By")) + .with_description("The metrics HTTP response sizes in bytes.") + .init(), + http_req_histogram: meter + .f64_histogram("example.http_request_duration") + .with_unit(Unit::new("ms")) + .with_description("The HTTP request latencies in milliseconds.") + .init(), + }); + + // For every connection, we must make a `Service` to handle all + // incoming HTTP requests on said connection. + let make_svc = make_service_fn(move |_conn| { + let state = state.clone(); + // This is the `Service` that will handle the connection. + // `service_fn` is a helper to convert a function that + // returns a Response into a `Service`. + async move { Ok::<_, Infallible>(service_fn(move |req| serve_req(req, state.clone()))) } + }); + + let addr = ([127, 0, 0, 1], 3000).into(); + + let server = Server::bind(&addr).serve(make_svc); + + println!("Listening on http://{addr}"); + + server.await?; + + Ok(()) +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/LICENSE temporalio-1.3.0/vendor/opentelemetry-prometheus/LICENSE --- temporalio-1.3.0/vendor/opentelemetry-prometheus/LICENSE 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/LICENSE 2023-10-30 19:40:00.000000000 +0000 @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2023 The OpenTelemetry Authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/README.md temporalio-1.3.0/vendor/opentelemetry-prometheus/README.md --- temporalio-1.3.0/vendor/opentelemetry-prometheus/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -10,10 +10,7 @@ [![Documentation](https://docs.rs/opentelemetry-prometheus/badge.svg)](https://docs.rs/opentelemetry-prometheus) [![LICENSE](https://img.shields.io/crates/l/opentelemetry-prometheus)](./LICENSE) [![GitHub Actions CI](https://github.com/open-telemetry/opentelemetry-rust/workflows/CI/badge.svg)](https://github.com/open-telemetry/opentelemetry-rust/actions?query=workflow%3ACI+branch%3Amain) -[![Gitter chat](https://img.shields.io/badge/gitter-join%20chat%20%E2%86%92-brightgreen.svg)](https://gitter.im/open-telemetry/opentelemetry-rust) - -[Documentation](https://docs.rs/opentelemetry-prometheus) | -[Chat](https://gitter.im/open-telemetry/opentelemetry-rust) +[![Slack](https://img.shields.io/badge/slack-@cncf/otel/rust-brightgreen.svg?logo=slack)](https://cloud-native.slack.com/archives/C03GDP0H023) ## Overview diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/src/config.rs temporalio-1.3.0/vendor/opentelemetry-prometheus/src/config.rs --- temporalio-1.3.0/vendor/opentelemetry-prometheus/src/config.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/src/config.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,142 @@ +use core::fmt; +use std::sync::{Arc, Mutex}; + +use once_cell::sync::OnceCell; +use opentelemetry_api::metrics::{MetricsError, Result}; +use opentelemetry_sdk::metrics::{reader::AggregationSelector, ManualReaderBuilder}; + +use crate::{Collector, PrometheusExporter}; + +/// [PrometheusExporter] configuration options +#[derive(Default)] +pub struct ExporterBuilder { + registry: Option, + disable_target_info: bool, + without_units: bool, + without_counter_suffixes: bool, + namespace: Option, + aggregation: Option>, + disable_scope_info: bool, +} + +impl fmt::Debug for ExporterBuilder { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("ExporterBuilder") + .field("registry", &self.registry) + .field("disable_target_info", &self.disable_target_info) + .field("without_units", &self.without_units) + .field("without_counter_suffixes", &self.without_counter_suffixes) + .field("namespace", &self.namespace) + .field("aggregation", &self.aggregation.is_some()) + .field("disable_scope_info", &self.disable_scope_info) + .finish() + } +} + +impl ExporterBuilder { + /// Disables exporter's addition of unit suffixes to metric names. + /// + /// By default, metric names include a unit suffix to follow Prometheus naming + /// conventions. For example, the counter metric `request.duration`, with unit + /// `ms` would become `request_duration_milliseconds_total`. + /// + /// With this option set, the name would instead be `request_duration_total`. + pub fn without_units(mut self) -> Self { + self.without_units = true; + self + } + + /// Disables exporter's addition `_total` suffixes on counters. + /// + /// By default, metric names include a `_total` suffix to follow Prometheus + /// naming conventions. For example, the counter metric `happy.people` would + /// become `happy_people_total`. With this option set, the name would instead be + /// `happy_people`. + pub fn without_counter_suffixes(mut self) -> Self { + self.without_counter_suffixes = true; + self + } + + /// Configures the exporter to not export the resource `target_info` metric. + /// + /// If not specified, the exporter will create a `target_info` metric containing + /// the metrics' [Resource] attributes. + /// + /// [Resource]: opentelemetry_sdk::Resource + pub fn without_target_info(mut self) -> Self { + self.disable_target_info = true; + self + } + + /// Configures the exporter to not export the `otel_scope_info` metric. + /// + /// If not specified, the exporter will create a `otel_scope_info` metric + /// containing the metrics' Instrumentation Scope, and also add labels about + /// Instrumentation Scope to all metric points. + pub fn without_scope_info(mut self) -> Self { + self.disable_scope_info = true; + self + } + + /// Configures the exporter to prefix metrics with the given namespace. + /// + /// Metrics such as `target_info` and `otel_scope_info` are not prefixed since + /// these have special behavior based on their name. + pub fn with_namespace(mut self, namespace: impl Into) -> Self { + let mut namespace = namespace.into(); + + // namespace and metric names should be separated with an underscore, + // adds a trailing underscore if there is not one already. + if !namespace.ends_with('_') { + namespace.push('_') + } + + self.namespace = Some(namespace); + self + } + + /// Configures which [prometheus::Registry] the exporter will use. + /// + /// If no registry is specified, the prometheus default is used. + pub fn with_registry(mut self, registry: prometheus::Registry) -> Self { + self.registry = Some(registry); + self + } + + /// Configure the [AggregationSelector] the exporter will use. + /// + /// If no selector is provided, the [DefaultAggregationSelector] is used. + /// + /// [DefaultAggregationSelector]: opentelemetry_sdk::metrics::reader::DefaultAggregationSelector + pub fn with_aggregation_selector(mut self, agg: impl AggregationSelector + 'static) -> Self { + self.aggregation = Some(Box::new(agg)); + self + } + + /// Creates a new [PrometheusExporter] from this configuration. + pub fn build(self) -> Result { + let mut reader = ManualReaderBuilder::new(); + if let Some(selector) = self.aggregation { + reader = reader.with_aggregation_selector(selector) + } + let reader = Arc::new(reader.build()); + + let collector = Collector { + reader: Arc::clone(&reader), + disable_target_info: self.disable_target_info, + without_units: self.without_units, + without_counter_suffixes: self.without_counter_suffixes, + disable_scope_info: self.disable_scope_info, + create_target_info_once: OnceCell::new(), + namespace: self.namespace, + inner: Mutex::new(Default::default()), + }; + + let registry = self.registry.unwrap_or_else(prometheus::Registry::new); + registry + .register(Box::new(collector)) + .map_err(|e| MetricsError::Other(e.to_string()))?; + + Ok(PrometheusExporter { reader }) + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/src/lib.rs temporalio-1.3.0/vendor/opentelemetry-prometheus/src/lib.rs --- temporalio-1.3.0/vendor/opentelemetry-prometheus/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,63 +1,78 @@ -//! # OpenTelemetry Prometheus Exporter +//! An OpenTelemetry exporter for [Prometheus] metrics. //! -//! ### Prometheus Exporter Example +//! [Prometheus]: https://prometheus.io //! -//! ```rust -//! use opentelemetry::{global, Context, KeyValue, sdk::Resource}; -//! use opentelemetry::sdk::export::metrics::aggregation; -//! use opentelemetry::sdk::metrics::{controllers, processors, selectors}; -//! use opentelemetry_prometheus::PrometheusExporter; -//! use prometheus::{TextEncoder, Encoder}; +//! ``` +//! use opentelemetry_api::{metrics::MeterProvider as _, KeyValue}; +//! use opentelemetry_sdk::metrics::MeterProvider; +//! use prometheus::{Encoder, TextEncoder}; +//! +//! # fn main() -> Result<(), Box> { //! -//! fn init_meter() -> PrometheusExporter { -//! let controller = controllers::basic( -//! processors::factory( -//! selectors::simple::histogram([1.0, 2.0, 5.0, 10.0, 20.0, 50.0]), -//! aggregation::cumulative_temporality_selector(), -//! ) -//! .with_memory(true), -//! ) -//! .build(); +//! // create a new prometheus registry +//! let registry = prometheus::Registry::new(); //! -//! opentelemetry_prometheus::exporter(controller).init() -//! } +//! // configure OpenTelemetry to use this registry +//! let exporter = opentelemetry_prometheus::exporter() +//! .with_registry(registry.clone()) +//! .build()?; //! -//! let cx = Context::current(); -//! let exporter = init_meter(); -//! let meter = global::meter("my-app"); +//! // set up a meter meter to create instruments +//! let provider = MeterProvider::builder().with_reader(exporter).build(); +//! let meter = provider.meter("my-app"); //! //! // Use two instruments //! let counter = meter //! .u64_counter("a.counter") //! .with_description("Counts things") //! .init(); -//! let recorder = meter +//! let histogram = meter //! .i64_histogram("a.histogram") //! .with_description("Records values") //! .init(); //! -//! counter.add(&cx, 100, &[KeyValue::new("key", "value")]); -//! recorder.record(&cx, 100, &[KeyValue::new("key", "value")]); +//! counter.add(100, &[KeyValue::new("key", "value")]); +//! histogram.record(100, &[KeyValue::new("key", "value")]); //! //! // Encode data as text or protobuf //! let encoder = TextEncoder::new(); -//! let metric_families = exporter.registry().gather(); +//! let metric_families = registry.gather(); //! let mut result = Vec::new(); -//! encoder.encode(&metric_families, &mut result); +//! encoder.encode(&metric_families, &mut result)?; //! //! // result now contains encoded metrics: //! // -//! // # HELP a_counter Counts things -//! // # TYPE a_counter counter -//! // a_counter{R="V",key="value"} 100 +//! // # HELP a_counter_total Counts things +//! // # TYPE a_counter_total counter +//! // a_counter_total{key="value",otel_scope_name="my-app"} 100 //! // # HELP a_histogram Records values //! // # TYPE a_histogram histogram -//! // a_histogram_bucket{R="V",key="value",le="0.5"} 0 -//! // a_histogram_bucket{R="V",key="value",le="0.9"} 0 -//! // a_histogram_bucket{R="V",key="value",le="0.99"} 0 -//! // a_histogram_bucket{R="V",key="value",le="+Inf"} 1 -//! // a_histogram_sum{R="V",key="value"} 100 -//! // a_histogram_count{R="V",key="value"} 1 +//! // a_histogram_bucket{key="value",otel_scope_name="my-app",le="0"} 0 +//! // a_histogram_bucket{key="value",otel_scope_name="my-app",le="5"} 0 +//! // a_histogram_bucket{key="value",otel_scope_name="my-app",le="10"} 0 +//! // a_histogram_bucket{key="value",otel_scope_name="my-app",le="25"} 0 +//! // a_histogram_bucket{key="value",otel_scope_name="my-app",le="50"} 0 +//! // a_histogram_bucket{key="value",otel_scope_name="my-app",le="75"} 0 +//! // a_histogram_bucket{key="value",otel_scope_name="my-app",le="100"} 1 +//! // a_histogram_bucket{key="value",otel_scope_name="my-app",le="250"} 1 +//! // a_histogram_bucket{key="value",otel_scope_name="my-app",le="500"} 1 +//! // a_histogram_bucket{key="value",otel_scope_name="my-app",le="750"} 1 +//! // a_histogram_bucket{key="value",otel_scope_name="my-app",le="1000"} 1 +//! // a_histogram_bucket{key="value",otel_scope_name="my-app",le="2500"} 1 +//! // a_histogram_bucket{key="value",otel_scope_name="my-app",le="5000"} 1 +//! // a_histogram_bucket{key="value",otel_scope_name="my-app",le="7500"} 1 +//! // a_histogram_bucket{key="value",otel_scope_name="my-app",le="10000"} 1 +//! // a_histogram_bucket{key="value",otel_scope_name="my-app",le="+Inf"} 1 +//! // a_histogram_sum{key="value",otel_scope_name="my-app"} 100 +//! // a_histogram_count{key="value",otel_scope_name="my-app"} 1 +//! // # HELP otel_scope_info Instrumentation Scope metadata +//! // # TYPE otel_scope_info gauge +//! // otel_scope_info{otel_scope_name="my-app"} 1 +//! // # HELP target_info Target metadata +//! // # TYPE target_info gauge +//! // target_info{service_name="unknown_service"} 1 +//! # Ok(()) +//! # } //! ``` #![warn( future_incompatible, @@ -78,335 +93,522 @@ )] #![cfg_attr(test, deny(warnings))] -use opentelemetry::metrics::MeterProvider; -use opentelemetry::sdk::export::metrics::aggregation::{ - self, AggregationKind, Temporality, TemporalitySelector, +use once_cell::sync::{Lazy, OnceCell}; +use opentelemetry_api::{ + global, + metrics::{MetricsError, Result}, + Context, Key, Value, }; -use opentelemetry::sdk::export::metrics::InstrumentationLibraryReader; -use opentelemetry::sdk::metrics::sdk_api::Descriptor; -#[cfg(feature = "prometheus-encoding")] -pub use prometheus::{Encoder, TextEncoder}; - -use opentelemetry::global; -use opentelemetry::sdk::{ - export::metrics::{ - aggregation::{Histogram, LastValue, Sum}, - Record, - }, +use opentelemetry_sdk::{ metrics::{ - aggregators::{HistogramAggregator, LastValueAggregator, SumAggregator}, - controllers::BasicController, - sdk_api::NumberKind, + data::{self, ResourceMetrics, Temporality}, + reader::{AggregationSelector, MetricProducer, MetricReader, TemporalitySelector}, + Aggregation, InstrumentKind, ManualReader, Pipeline, }, - Resource, + Resource, Scope, +}; +use prometheus::{ + core::Desc, + proto::{LabelPair, MetricFamily, MetricType}, +}; +use std::{ + any::TypeId, + borrow::Cow, + collections::{BTreeMap, HashMap}, + sync::{Arc, Mutex}, }; -use opentelemetry::{attributes, metrics::MetricsError, Context, Key, Value}; -use std::sync::{Arc, Mutex}; +use std::{fmt, sync::Weak}; -mod sanitize; +const TARGET_INFO_NAME: &str = "target_info"; +const TARGET_INFO_DESCRIPTION: &str = "Target metadata"; -use sanitize::sanitize; +const SCOPE_INFO_METRIC_NAME: &str = "otel_scope_info"; +const SCOPE_INFO_DESCRIPTION: &str = "Instrumentation Scope metadata"; -/// Create a new prometheus exporter builder. -pub fn exporter(controller: BasicController) -> ExporterBuilder { - ExporterBuilder::new(controller) +const SCOPE_INFO_KEYS: [&str; 2] = ["otel_scope_name", "otel_scope_version"]; + +// prometheus counters MUST have a _total suffix by default: +// https://github.com/open-telemetry/opentelemetry-specification/blob/v1.20.0/specification/compatibility/prometheus_and_openmetrics.md +const COUNTER_SUFFIX: &str = "_total"; + +mod config; +mod utils; + +pub use config::ExporterBuilder; + +/// Creates a builder to configure a [PrometheusExporter] +pub fn exporter() -> ExporterBuilder { + ExporterBuilder::default() } -/// Configuration for the prometheus exporter. +/// Prometheus metrics exporter #[derive(Debug)] -pub struct ExporterBuilder { - /// The prometheus registry that will be used to register instruments. - /// - /// If not set a new empty `Registry` is created. - registry: Option, - - /// The metrics controller - controller: BasicController, -} - -impl ExporterBuilder { - /// Create a new exporter builder with a given controller - pub fn new(controller: BasicController) -> Self { - ExporterBuilder { - registry: None, - controller, - } +pub struct PrometheusExporter { + reader: Arc, +} + +impl TemporalitySelector for PrometheusExporter { + /// Note: Prometheus only supports cumulative temporality so this will always be + /// [Temporality::Cumulative]. + fn temporality(&self, kind: InstrumentKind) -> Temporality { + self.reader.temporality(kind) } +} - /// Set the prometheus registry to be used by this exporter - pub fn with_registry(self, registry: prometheus::Registry) -> Self { - ExporterBuilder { - registry: Some(registry), - ..self - } +impl AggregationSelector for PrometheusExporter { + fn aggregation(&self, kind: InstrumentKind) -> Aggregation { + self.reader.aggregation(kind) } +} - /// Sets up a complete export pipeline with the recommended setup, using the - /// recommended selector and standard processor. - pub fn try_init(self) -> Result { - let registry = self.registry.unwrap_or_else(prometheus::Registry::new); - - let controller = Arc::new(Mutex::new(self.controller)); - let collector = Collector::with_controller(controller.clone()); - registry - .register(Box::new(collector)) - .map_err(|e| MetricsError::Other(e.to_string()))?; - - let exporter = PrometheusExporter { - registry, - controller, - }; - global::set_meter_provider(exporter.meter_provider()?); +impl MetricReader for PrometheusExporter { + fn register_pipeline(&self, pipeline: Weak) { + self.reader.register_pipeline(pipeline) + } - Ok(exporter) + fn register_producer(&self, producer: Box) { + self.reader.register_producer(producer) } - /// Sets up a complete export pipeline with the recommended setup, using the - /// recommended selector and standard processor. - /// - /// # Panics - /// - /// This panics if the exporter cannot be registered in the prometheus registry. - pub fn init(self) -> PrometheusExporter { - self.try_init().unwrap() + fn collect(&self, rm: &mut ResourceMetrics) -> Result<()> { + self.reader.collect(rm) } -} -/// An implementation of `metrics::Exporter` that sends metrics to Prometheus. -/// -/// This exporter supports Prometheus pulls, as such it does not -/// implement the export.Exporter interface. -#[derive(Clone, Debug)] -pub struct PrometheusExporter { - registry: prometheus::Registry, - controller: Arc>, -} + fn force_flush(&self, cx: &Context) -> Result<()> { + self.reader.force_flush(cx) + } -impl PrometheusExporter { - /// Returns a reference to the current prometheus registry. - pub fn registry(&self) -> &prometheus::Registry { - &self.registry - } - - /// Get this exporter's provider. - pub fn meter_provider(&self) -> Result { - self.controller - .lock() - .map_err(Into::into) - .map(|locked| locked.clone()) + fn shutdown(&self) -> Result<()> { + self.reader.shutdown() } } -#[derive(Debug)] struct Collector { - controller: Arc>, -} + reader: Arc, + disable_target_info: bool, + without_units: bool, + without_counter_suffixes: bool, + disable_scope_info: bool, + create_target_info_once: OnceCell, + namespace: Option, + inner: Mutex, +} + +#[derive(Default)] +struct CollectorInner { + scope_infos: HashMap, + metric_families: HashMap, +} + +// TODO: Remove lazy and switch to pattern matching once `TypeId` is stable in +// const context: https://github.com/rust-lang/rust/issues/77125 +static HISTOGRAM_TYPES: Lazy<[TypeId; 3]> = Lazy::new(|| { + [ + TypeId::of::>(), + TypeId::of::>(), + TypeId::of::>(), + ] +}); +static SUM_TYPES: Lazy<[TypeId; 3]> = Lazy::new(|| { + [ + TypeId::of::>(), + TypeId::of::>(), + TypeId::of::>(), + ] +}); +static GAUGE_TYPES: Lazy<[TypeId; 3]> = Lazy::new(|| { + [ + TypeId::of::>(), + TypeId::of::>(), + TypeId::of::>(), + ] +}); -impl TemporalitySelector for Collector { - fn temporality_for(&self, descriptor: &Descriptor, kind: &AggregationKind) -> Temporality { - aggregation::cumulative_temporality_selector().temporality_for(descriptor, kind) +impl Collector { + fn metric_type_and_name(&self, m: &data::Metric) -> Option<(MetricType, Cow<'static, str>)> { + let mut name = self.get_name(m); + + let data = m.data.as_any(); + let type_id = data.type_id(); + + if HISTOGRAM_TYPES.contains(&type_id) { + Some((MetricType::HISTOGRAM, name)) + } else if GAUGE_TYPES.contains(&type_id) { + Some((MetricType::GAUGE, name)) + } else if SUM_TYPES.contains(&type_id) { + let is_monotonic = if let Some(v) = data.downcast_ref::>() { + v.is_monotonic + } else if let Some(v) = data.downcast_ref::>() { + v.is_monotonic + } else if let Some(v) = data.downcast_ref::>() { + v.is_monotonic + } else { + false + }; + + if is_monotonic { + if !self.without_counter_suffixes { + name = format!("{name}{COUNTER_SUFFIX}").into(); + } + Some((MetricType::COUNTER, name)) + } else { + Some((MetricType::GAUGE, name)) + } + } else { + None + } } -} -impl Collector { - fn with_controller(controller: Arc>) -> Self { - Collector { controller } + fn get_name(&self, m: &data::Metric) -> Cow<'static, str> { + let name = utils::sanitize_name(&m.name); + let unit_suffixes = if self.without_units { + None + } else { + utils::get_unit_suffixes(&m.unit) + }; + match (&self.namespace, unit_suffixes) { + (Some(namespace), Some(suffix)) => Cow::Owned(format!("{namespace}{name}_{suffix}")), + (Some(namespace), None) => Cow::Owned(format!("{namespace}{name}")), + (None, Some(suffix)) => Cow::Owned(format!("{name}_{suffix}")), + (None, None) => name, + } } } impl prometheus::core::Collector for Collector { - /// Unused as descriptors are dynamically registered. - fn desc(&self) -> Vec<&prometheus::core::Desc> { + fn desc(&self) -> Vec<&Desc> { Vec::new() } - /// Collect all otel metrics and convert to prometheus metrics. - fn collect(&self) -> Vec { - if let Ok(controller) = self.controller.lock() { - let mut metrics = Vec::new(); - - if let Err(err) = controller.collect(&Context::current()) { + fn collect(&self) -> Vec { + let mut inner = match self.inner.lock() { + Ok(guard) => guard, + Err(err) => { global::handle_error(err); - return metrics; + return Vec::new(); } + }; - if let Err(err) = controller.try_for_each(&mut |_library, reader| { - reader.try_for_each(self, &mut |record| { - let agg = record.aggregator().ok_or(MetricsError::NoDataCollected)?; - let number_kind = record.descriptor().number_kind(); - let instrument_kind = record.descriptor().instrument_kind(); - - let desc = get_metric_desc(record); - let labels = get_metric_labels(record, controller.resource()); - - if let Some(hist) = agg.as_any().downcast_ref::() { - metrics.push(build_histogram(hist, number_kind, desc, labels)?); - } else if let Some(sum) = agg.as_any().downcast_ref::() { - let counter = if instrument_kind.monotonic() { - build_monotonic_counter(sum, number_kind, desc, labels)? - } else { - build_non_monotonic_counter(sum, number_kind, desc, labels)? - }; - - metrics.push(counter); - } else if let Some(last) = agg.as_any().downcast_ref::() { - metrics.push(build_last_value(last, number_kind, desc, labels)?); - } - - Ok(()) - }) - }) { - global::handle_error(err); + let mut metrics = ResourceMetrics { + resource: Resource::empty(), + scope_metrics: vec![], + }; + if let Err(err) = self.reader.collect(&mut metrics) { + global::handle_error(err); + return vec![]; + } + let mut res = Vec::with_capacity(metrics.scope_metrics.len() + 1); + + let target_info = self.create_target_info_once.get_or_init(|| { + // Resource should be immutable, we don't need to compute again + create_info_metric(TARGET_INFO_NAME, TARGET_INFO_DESCRIPTION, &metrics.resource) + }); + if !self.disable_target_info { + res.push(target_info.clone()) + } + + for scope_metrics in metrics.scope_metrics { + let scope_labels = if !self.disable_scope_info { + let scope_info = inner + .scope_infos + .entry(scope_metrics.scope.clone()) + .or_insert_with_key(create_scope_info_metric); + res.push(scope_info.clone()); + + let mut labels = + Vec::with_capacity(1 + scope_metrics.scope.version.is_some() as usize); + let mut name = LabelPair::new(); + name.set_name(SCOPE_INFO_KEYS[0].into()); + name.set_value(scope_metrics.scope.name.to_string()); + labels.push(name); + if let Some(version) = &scope_metrics.scope.version { + let mut l_version = LabelPair::new(); + l_version.set_name(SCOPE_INFO_KEYS[1].into()); + l_version.set_value(version.to_string()); + labels.push(l_version); + } + + labels + } else { + Vec::new() + }; + + for metrics in scope_metrics.metrics { + let (metric_type, name) = match self.metric_type_and_name(&metrics) { + Some((metric_type, name)) => (metric_type, name), + _ => continue, + }; + + let mfs = &mut inner.metric_families; + let (drop, help) = validate_metrics(&name, &metrics.description, metric_type, mfs); + if drop { + continue; + } + + let description = help.unwrap_or_else(|| metrics.description.into()); + let data = metrics.data.as_any(); + + if let Some(hist) = data.downcast_ref::>() { + add_histogram_metric(&mut res, hist, description, &scope_labels, name); + } else if let Some(hist) = data.downcast_ref::>() { + add_histogram_metric(&mut res, hist, description, &scope_labels, name); + } else if let Some(hist) = data.downcast_ref::>() { + add_histogram_metric(&mut res, hist, description, &scope_labels, name); + } else if let Some(sum) = data.downcast_ref::>() { + add_sum_metric(&mut res, sum, description, &scope_labels, name); + } else if let Some(sum) = data.downcast_ref::>() { + add_sum_metric(&mut res, sum, description, &scope_labels, name); + } else if let Some(sum) = data.downcast_ref::>() { + add_sum_metric(&mut res, sum, description, &scope_labels, name); + } else if let Some(g) = data.downcast_ref::>() { + add_gauge_metric(&mut res, g, description, &scope_labels, name); + } else if let Some(g) = data.downcast_ref::>() { + add_gauge_metric(&mut res, g, description, &scope_labels, name); + } else if let Some(g) = data.downcast_ref::>() { + add_gauge_metric(&mut res, g, description, &scope_labels, name); + } } + } - metrics + res + } +} + +/// Maps attributes into Prometheus-style label pairs. +/// +/// It sanitizes invalid characters and handles duplicate keys (due to +/// sanitization) by sorting and concatenating the values following the spec. +fn get_attrs(kvs: &mut dyn Iterator, extra: &[LabelPair]) -> Vec { + let mut keys_map = BTreeMap::>::new(); + for (key, value) in kvs { + let key = utils::sanitize_prom_kv(key.as_str()); + keys_map + .entry(key) + .and_modify(|v| v.push(value.to_string())) + .or_insert_with(|| vec![value.to_string()]); + } + + let mut res = Vec::with_capacity(keys_map.len() + extra.len()); + + for (key, mut values) in keys_map.into_iter() { + values.sort_unstable(); + + let mut lp = LabelPair::new(); + lp.set_name(key); + lp.set_value(values.join(";")); + res.push(lp); + } + + if !extra.is_empty() { + res.extend(&mut extra.iter().cloned()); + } + + res +} + +fn validate_metrics( + name: &str, + description: &str, + metric_type: MetricType, + mfs: &mut HashMap, +) -> (bool, Option) { + if let Some(existing) = mfs.get(name) { + if existing.get_field_type() != metric_type { + global::handle_error(MetricsError::Other(format!("Instrument type conflict, using existing type definition. Instrument {name}, Existing: {:?}, dropped: {:?}", existing.get_field_type(), metric_type))); + return (true, None); + } + if existing.get_help() != description { + global::handle_error(MetricsError::Other(format!("Instrument description conflict, using existing. Instrument {name}, Existing: {:?}, dropped: {:?}", existing.get_help(), description))); + return (false, Some(existing.get_help().to_string())); + } + (false, None) + } else { + let mut mf = MetricFamily::default(); + mf.set_name(name.into()); + mf.set_help(description.to_string()); + mf.set_field_type(metric_type); + mfs.insert(name.to_string(), mf); + + (false, None) + } +} + +fn add_histogram_metric( + res: &mut Vec, + histogram: &data::Histogram, + description: String, + extra: &[LabelPair], + name: Cow<'static, str>, +) { + // Consider supporting exemplars when `prometheus` crate has the feature + // See: https://github.com/tikv/rust-prometheus/issues/393 + + for dp in &histogram.data_points { + let kvs = get_attrs(&mut dp.attributes.iter(), extra); + let bounds_len = dp.bounds.len(); + let (bucket, _) = dp.bounds.iter().enumerate().fold( + (Vec::with_capacity(bounds_len), 0), + |(mut acc, mut count), (i, bound)| { + count += dp.bucket_counts[i]; + + let mut b = prometheus::proto::Bucket::default(); + b.set_upper_bound(*bound); + b.set_cumulative_count(count); + acc.push(b); + (acc, count) + }, + ); + + let mut h = prometheus::proto::Histogram::default(); + h.set_sample_sum(dp.sum.as_f64()); + h.set_sample_count(dp.count); + h.set_bucket(protobuf::RepeatedField::from_vec(bucket)); + let mut pm = prometheus::proto::Metric::default(); + pm.set_label(protobuf::RepeatedField::from_vec(kvs)); + pm.set_histogram(h); + + let mut mf = prometheus::proto::MetricFamily::default(); + mf.set_name(name.to_string()); + mf.set_help(description.clone()); + mf.set_field_type(prometheus::proto::MetricType::HISTOGRAM); + mf.set_metric(protobuf::RepeatedField::from_vec(vec![pm])); + res.push(mf); + } +} + +fn add_sum_metric( + res: &mut Vec, + sum: &data::Sum, + description: String, + extra: &[LabelPair], + name: Cow<'static, str>, +) { + let metric_type = if sum.is_monotonic { + MetricType::COUNTER + } else { + MetricType::GAUGE + }; + + for dp in &sum.data_points { + let kvs = get_attrs(&mut dp.attributes.iter(), extra); + + let mut pm = prometheus::proto::Metric::default(); + pm.set_label(protobuf::RepeatedField::from_vec(kvs)); + + if sum.is_monotonic { + let mut c = prometheus::proto::Counter::default(); + c.set_value(dp.value.as_f64()); + pm.set_counter(c); } else { - Vec::new() + let mut g = prometheus::proto::Gauge::default(); + g.set_value(dp.value.as_f64()); + pm.set_gauge(g); } + + let mut mf = prometheus::proto::MetricFamily::default(); + mf.set_name(name.to_string()); + mf.set_help(description.clone()); + mf.set_field_type(metric_type); + mf.set_metric(protobuf::RepeatedField::from_vec(vec![pm])); + res.push(mf); } } -fn build_last_value( - lv: &LastValueAggregator, - kind: &NumberKind, - desc: PrometheusMetricDesc, - labels: Vec, -) -> Result { - let (last_value, _) = lv.last_value()?; +fn add_gauge_metric( + res: &mut Vec, + gauge: &data::Gauge, + description: String, + extra: &[LabelPair], + name: Cow<'static, str>, +) { + for dp in &gauge.data_points { + let kvs = get_attrs(&mut dp.attributes.iter(), extra); + + let mut g = prometheus::proto::Gauge::default(); + g.set_value(dp.value.as_f64()); + let mut pm = prometheus::proto::Metric::default(); + pm.set_label(protobuf::RepeatedField::from_vec(kvs)); + pm.set_gauge(g); + + let mut mf = prometheus::proto::MetricFamily::default(); + mf.set_name(name.to_string()); + mf.set_help(description.to_string()); + mf.set_field_type(MetricType::GAUGE); + mf.set_metric(protobuf::RepeatedField::from_vec(vec![pm])); + res.push(mf); + } +} +fn create_info_metric( + target_info_name: &str, + target_info_description: &str, + resource: &Resource, +) -> MetricFamily { let mut g = prometheus::proto::Gauge::default(); - g.set_value(last_value.to_f64(kind)); + g.set_value(1.0); let mut m = prometheus::proto::Metric::default(); - m.set_label(protobuf::RepeatedField::from_vec(labels)); + m.set_label(protobuf::RepeatedField::from_vec(get_attrs( + &mut resource.iter(), + &[], + ))); m.set_gauge(g); - let mut mf = prometheus::proto::MetricFamily::default(); - mf.set_name(desc.name); - mf.set_help(desc.help); - mf.set_field_type(prometheus::proto::MetricType::GAUGE); + let mut mf = MetricFamily::default(); + mf.set_name(target_info_name.into()); + mf.set_help(target_info_description.into()); + mf.set_field_type(MetricType::GAUGE); mf.set_metric(protobuf::RepeatedField::from_vec(vec![m])); - - Ok(mf) + mf } -fn build_non_monotonic_counter( - sum: &SumAggregator, - kind: &NumberKind, - desc: PrometheusMetricDesc, - labels: Vec, -) -> Result { - let sum = sum.sum()?; - +fn create_scope_info_metric(scope: &Scope) -> MetricFamily { let mut g = prometheus::proto::Gauge::default(); - g.set_value(sum.to_f64(kind)); + g.set_value(1.0); + + let mut labels = Vec::with_capacity(1 + scope.version.is_some() as usize); + let mut name = LabelPair::new(); + name.set_name(SCOPE_INFO_KEYS[0].into()); + name.set_value(scope.name.to_string()); + labels.push(name); + if let Some(version) = &scope.version { + let mut v_label = LabelPair::new(); + v_label.set_name(SCOPE_INFO_KEYS[1].into()); + v_label.set_value(version.to_string()); + labels.push(v_label); + } let mut m = prometheus::proto::Metric::default(); m.set_label(protobuf::RepeatedField::from_vec(labels)); m.set_gauge(g); - let mut mf = prometheus::proto::MetricFamily::default(); - mf.set_name(desc.name); - mf.set_help(desc.help); - mf.set_field_type(prometheus::proto::MetricType::GAUGE); + let mut mf = MetricFamily::default(); + mf.set_name(SCOPE_INFO_METRIC_NAME.into()); + mf.set_help(SCOPE_INFO_DESCRIPTION.into()); + mf.set_field_type(MetricType::GAUGE); mf.set_metric(protobuf::RepeatedField::from_vec(vec![m])); - - Ok(mf) + mf } -fn build_monotonic_counter( - sum: &SumAggregator, - kind: &NumberKind, - desc: PrometheusMetricDesc, - labels: Vec, -) -> Result { - let sum = sum.sum()?; - - let mut c = prometheus::proto::Counter::default(); - c.set_value(sum.to_f64(kind)); - - let mut m = prometheus::proto::Metric::default(); - m.set_label(protobuf::RepeatedField::from_vec(labels)); - m.set_counter(c); - - let mut mf = prometheus::proto::MetricFamily::default(); - mf.set_name(desc.name); - mf.set_help(desc.help); - mf.set_field_type(prometheus::proto::MetricType::COUNTER); - mf.set_metric(protobuf::RepeatedField::from_vec(vec![m])); - - Ok(mf) +trait Numeric: fmt::Debug { + // lossy at large values for u64 and i64 but prometheus only handles floats + fn as_f64(&self) -> f64; } -fn build_histogram( - hist: &HistogramAggregator, - kind: &NumberKind, - desc: PrometheusMetricDesc, - labels: Vec, -) -> Result { - let raw_buckets = hist.histogram()?; - let sum = hist.sum()?; - - let mut h = prometheus::proto::Histogram::default(); - h.set_sample_sum(sum.to_f64(kind)); - - let mut count = 0; - let mut buckets = Vec::with_capacity(raw_buckets.boundaries().len()); - for (i, upper_bound) in raw_buckets.boundaries().iter().enumerate() { - count += raw_buckets.counts()[i] as u64; - let mut b = prometheus::proto::Bucket::default(); - b.set_cumulative_count(count); - b.set_upper_bound(*upper_bound); - buckets.push(b); - } - // Include the +inf bucket in the total count. - count += raw_buckets.counts()[raw_buckets.counts().len() - 1] as u64; - h.set_bucket(protobuf::RepeatedField::from_vec(buckets)); - h.set_sample_count(count); - - let mut m = prometheus::proto::Metric::default(); - m.set_label(protobuf::RepeatedField::from_vec(labels)); - m.set_histogram(h); - - let mut mf = prometheus::proto::MetricFamily::default(); - mf.set_name(desc.name); - mf.set_help(desc.help); - mf.set_field_type(prometheus::proto::MetricType::HISTOGRAM); - mf.set_metric(protobuf::RepeatedField::from_vec(vec![m])); - - Ok(mf) +impl Numeric for u64 { + fn as_f64(&self) -> f64 { + *self as f64 + } } -fn build_label_pair(key: &Key, value: &Value) -> prometheus::proto::LabelPair { - let mut lp = prometheus::proto::LabelPair::new(); - lp.set_name(sanitize(key.as_str())); - lp.set_value(value.to_string()); - - lp +impl Numeric for i64 { + fn as_f64(&self) -> f64 { + *self as f64 + } } -fn get_metric_labels( - record: &Record<'_>, - resource: &Resource, -) -> Vec { - // Duplicate keys are resolved by taking the record label value over - // the resource value. - let iter = attributes::merge_iters(record.attributes().iter(), resource.iter()); - iter.map(|(key, value)| build_label_pair(key, value)) - .collect() -} - -struct PrometheusMetricDesc { - name: String, - help: String, -} - -fn get_metric_desc(record: &Record<'_>) -> PrometheusMetricDesc { - let desc = record.descriptor(); - let name = sanitize(desc.name()); - let help = desc - .description() - .cloned() - .unwrap_or_else(|| desc.name().to_string()); - PrometheusMetricDesc { name, help } +impl Numeric for f64 { + fn as_f64(&self) -> f64 { + *self + } } diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/src/sanitize.rs temporalio-1.3.0/vendor/opentelemetry-prometheus/src/sanitize.rs --- temporalio-1.3.0/vendor/opentelemetry-prometheus/src/sanitize.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/src/sanitize.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -/// sanitize returns a string that is truncated to 100 characters if it's too -/// long, and replaces non-alphanumeric characters to underscores. -pub(crate) fn sanitize>(raw: T) -> String { - let mut escaped = raw - .as_ref() - .chars() - .map(|c| if c.is_ascii_alphanumeric() { c } else { '_' }) - .peekable(); - - let prefix = if escaped.peek().map_or(false, |c| c.is_ascii_digit()) { - "key_" - } else if escaped.peek().map_or(false, |&c| c == '_') { - "key" - } else { - "" - }; - - prefix.chars().chain(escaped).take(100).collect() -} - -#[cfg(test)] -mod tests { - use super::*; - use std::borrow::Cow; - - fn key_data() -> Vec<(&'static str, Cow<'static, str>, Cow<'static, str>)> { - vec![ - ( - "replace character", - "test/key-1".into(), - "test_key_1".into(), - ), - ( - "add prefix if starting with digit", - "0123456789".into(), - "key_0123456789".into(), - ), - ( - "add prefix if starting with _", - "_0123456789".into(), - "key_0123456789".into(), - ), - ( - "starts with _ after sanitization", - "/0123456789".into(), - "key_0123456789".into(), - ), - ( - "limits to 100", - "a".repeat(101).into(), - "a".repeat(100).into(), - ), - ( - "valid input", - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789".into(), - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789".into(), - ), - ] - } - - #[test] - fn sanitize_key_names() { - for (name, raw, sanitized) in key_data() { - assert_eq!(sanitize(raw), sanitized, "{} doesn't match", name) - } - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/src/utils.rs temporalio-1.3.0/vendor/opentelemetry-prometheus/src/utils.rs --- temporalio-1.3.0/vendor/opentelemetry-prometheus/src/utils.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/src/utils.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,196 @@ +use opentelemetry_api::metrics::Unit; +use std::borrow::Cow; + +const NON_APPLICABLE_ON_PER_UNIT: [&str; 8] = ["1", "d", "h", "min", "s", "ms", "us", "ns"]; + +pub(crate) fn get_unit_suffixes(unit: &Unit) -> Option> { + // no unit return early + if unit.as_str().is_empty() { + return None; + } + + // direct match with known units + if let Some(matched) = get_prom_units(unit.as_str()) { + return Some(Cow::Borrowed(matched)); + } + + // converting foo/bar to foo_per_bar + // split the string by the first '/' + // if the first part is empty, we just return the second part if it's a match with known per unit + // e.g + // "test/y" => "per_year" + // "km/s" => "kilometers_per_second" + if let Some((first, second)) = unit.as_str().split_once('/') { + return match ( + NON_APPLICABLE_ON_PER_UNIT.contains(&first), + get_prom_units(first), + get_prom_per_unit(second), + ) { + (true, _, Some(second_part)) | (false, None, Some(second_part)) => { + Some(Cow::Owned(format!("per_{}", second_part))) + } + (false, Some(first_part), Some(second_part)) => { + Some(Cow::Owned(format!("{}_per_{}", first_part, second_part))) + } + _ => None, + }; + } + + None +} + +fn get_prom_units(unit: &str) -> Option<&'static str> { + match unit { + // Time + "d" => Some("days"), + "h" => Some("hours"), + "min" => Some("minutes"), + "s" => Some("seconds"), + "ms" => Some("milliseconds"), + "us" => Some("microseconds"), + "ns" => Some("nanoseconds"), + "By" => Some("bytes"), + + // Bytes + "KiBy" => Some("kibibytes"), + "MiBy" => Some("mebibytes"), + "GiBy" => Some("gibibytes"), + "TiBy" => Some("tibibytes"), + "KBy" => Some("kilobytes"), + "MBy" => Some("megabytes"), + "GBy" => Some("gigabytes"), + "TBy" => Some("terabytes"), + "B" => Some("bytes"), + "KB" => Some("kilobytes"), + "MB" => Some("megabytes"), + "GB" => Some("gigabytes"), + "TB" => Some("terabytes"), + + // SI + "m" => Some("meters"), + "V" => Some("volts"), + "A" => Some("amperes"), + "J" => Some("joules"), + "W" => Some("watts"), + "g" => Some("grams"), + + // Misc + "Cel" => Some("celsius"), + "Hz" => Some("hertz"), + "1" => Some("ratio"), + "%" => Some("percent"), + "$" => Some("dollars"), + _ => None, + } +} + +fn get_prom_per_unit(unit: &str) -> Option<&'static str> { + match unit { + "s" => Some("second"), + "m" => Some("minute"), + "h" => Some("hour"), + "d" => Some("day"), + "w" => Some("week"), + "mo" => Some("month"), + "y" => Some("year"), + _ => None, + } +} + +#[allow(clippy::ptr_arg)] +pub(crate) fn sanitize_name(s: &Cow<'static, str>) -> Cow<'static, str> { + // prefix chars to add in case name starts with number + let mut prefix = ""; + + // Find first invalid char + if let Some((replace_idx, _)) = s.char_indices().find(|(i, c)| { + if *i == 0 && c.is_ascii_digit() { + // first char is number, add prefix and replace reset of chars + prefix = "_"; + true + } else { + // keep checking + !c.is_alphanumeric() && *c != '_' && *c != ':' + } + }) { + // up to `replace_idx` have been validated, convert the rest + let (valid, rest) = s.split_at(replace_idx); + Cow::Owned( + prefix + .chars() + .chain(valid.chars()) + .chain(rest.chars().map(|c| { + if c.is_ascii_alphanumeric() || c == '_' || c == ':' { + c + } else { + '_' + } + })) + .collect(), + ) + } else { + s.clone() // no invalid chars found, return existing + } +} + +pub(crate) fn sanitize_prom_kv(s: &str) -> String { + s.chars() + .map(|c| { + if c.is_ascii_alphanumeric() || c == ':' { + c + } else { + '_' + } + }) + .collect() +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn name_sanitization() { + let tests = vec![ + ("nam€_with_3_width_rune", "nam__with_3_width_rune"), + ("`", "_"), + ( + r##"! "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWKYZ[]\^_abcdefghijklmnopqrstuvwkyz{|}~"##, + "________________0123456789:______ABCDEFGHIJKLMNOPQRSTUVWKYZ_____abcdefghijklmnopqrstuvwkyz____", + ), + + ("Avalid_23name", "Avalid_23name"), + ("_Avalid_23name", "_Avalid_23name"), + ("1valid_23name", "_1valid_23name"), + ("avalid_23name", "avalid_23name"), + ("Ava:lid_23name", "Ava:lid_23name"), + ("a lid_23name", "a_lid_23name"), + (":leading_colon", ":leading_colon"), + ("colon:in:the:middle", "colon:in:the:middle"), + ("", ""), + ]; + + for (input, want) in tests { + assert_eq!(want, sanitize_name(&input.into()), "input: {input}") + } + } + + #[test] + fn test_get_unit_suffixes() { + let test_cases = vec![ + // Direct match + ("g", Some(Cow::Borrowed("grams"))), + // Per unit + ("test/y", Some(Cow::Owned("per_year".to_owned()))), + ("1/y", Some(Cow::Owned("per_year".to_owned()))), + ("m/s", Some(Cow::Owned("meters_per_second".to_owned()))), + // No match + ("invalid", None), + ("", None), + ]; + for (unit_str, expected_suffix) in test_cases { + let unit = Unit::new(unit_str); + assert_eq!(get_unit_suffixes(&unit), expected_suffix); + } + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_counters_1.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_counters_1.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_counters_1.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_counters_1.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,11 @@ +# HELP bar_bytes_total meter a bar +# TYPE bar_bytes_total counter +bar_bytes_total{type="bar",otel_scope_name="ma",otel_scope_version="v0.1.0"} 100 +bar_bytes_total{type="bar",otel_scope_name="mb",otel_scope_version="v0.1.0"} 100 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +otel_scope_info{otel_scope_name="mb",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_counters_2.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_counters_2.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_counters_2.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_counters_2.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,11 @@ +# HELP bar_bytes_total meter b bar +# TYPE bar_bytes_total counter +bar_bytes_total{type="bar",otel_scope_name="ma",otel_scope_version="v0.1.0"} 100 +bar_bytes_total{type="bar",otel_scope_name="mb",otel_scope_version="v0.1.0"} 100 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +otel_scope_info{otel_scope_name="mb",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_histograms_1.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_histograms_1.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_histograms_1.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_histograms_1.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,45 @@ +# HELP bar_bytes meter a bar +# TYPE bar_bytes histogram +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="0"} 0 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="5"} 0 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="10"} 0 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="25"} 0 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="50"} 0 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="75"} 0 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="100"} 1 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="250"} 1 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="500"} 1 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="750"} 1 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="1000"} 1 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="2500"} 1 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="5000"} 1 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="7500"} 1 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="10000"} 1 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="+Inf"} 1 +bar_bytes_sum{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0"} 100 +bar_bytes_count{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="0"} 0 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="5"} 0 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="10"} 0 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="25"} 0 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="50"} 0 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="75"} 0 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="100"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="250"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="500"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="750"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="1000"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="2500"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="5000"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="7500"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="10000"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="+Inf"} 1 +bar_bytes_sum{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0"} 100 +bar_bytes_count{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0"} 1 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +otel_scope_info{otel_scope_name="mb",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_histograms_2.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_histograms_2.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_histograms_2.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_histograms_2.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,45 @@ +# HELP bar_bytes meter b bar +# TYPE bar_bytes histogram +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="0"} 0 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="5"} 0 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="10"} 0 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="25"} 0 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="50"} 0 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="75"} 0 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="100"} 1 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="250"} 1 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="500"} 1 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="750"} 1 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="1000"} 1 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="2500"} 1 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="5000"} 1 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="7500"} 1 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="10000"} 1 +bar_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="+Inf"} 1 +bar_bytes_sum{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0"} 100 +bar_bytes_count{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="0"} 0 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="5"} 0 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="10"} 0 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="25"} 0 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="50"} 0 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="75"} 0 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="100"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="250"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="500"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="750"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="1000"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="2500"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="5000"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="7500"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="10000"} 1 +bar_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="+Inf"} 1 +bar_bytes_sum{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0"} 100 +bar_bytes_count{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0"} 1 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +otel_scope_info{otel_scope_name="mb",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_updowncounters_1.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_updowncounters_1.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_updowncounters_1.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_updowncounters_1.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,11 @@ +# HELP bar_bytes meter a bar +# TYPE bar_bytes gauge +bar_bytes{type="bar",otel_scope_name="ma",otel_scope_version="v0.1.0"} 100 +bar_bytes{type="bar",otel_scope_name="mb",otel_scope_version="v0.1.0"} 100 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +otel_scope_info{otel_scope_name="mb",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_updowncounters_2.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_updowncounters_2.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_updowncounters_2.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_help_two_updowncounters_2.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,11 @@ +# HELP bar_bytes meter b bar +# TYPE bar_bytes gauge +bar_bytes{type="bar",otel_scope_name="ma",otel_scope_version="v0.1.0"} 100 +bar_bytes{type="bar",otel_scope_name="mb",otel_scope_version="v0.1.0"} 100 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +otel_scope_info{otel_scope_name="mb",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_type_counter_and_updowncounter_1.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_type_counter_and_updowncounter_1.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_type_counter_and_updowncounter_1.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_type_counter_and_updowncounter_1.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,9 @@ +# HELP foo_total meter foo +# TYPE foo_total counter +foo_total{type="foo",otel_scope_name="ma",otel_scope_version="v0.1.0"} 100 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_type_counter_and_updowncounter_2.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_type_counter_and_updowncounter_2.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_type_counter_and_updowncounter_2.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_type_counter_and_updowncounter_2.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,9 @@ +# HELP foo_total meter foo +# TYPE foo_total gauge +foo_total{type="foo",otel_scope_name="ma",otel_scope_version="v0.1.0"} 100 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_type_histogram_and_updowncounter_1.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_type_histogram_and_updowncounter_1.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_type_histogram_and_updowncounter_1.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_type_histogram_and_updowncounter_1.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,9 @@ +# HELP foo_bytes meter gauge foo +# TYPE foo_bytes gauge +foo_bytes{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0"} 100 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_type_histogram_and_updowncounter_2.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_type_histogram_and_updowncounter_2.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_type_histogram_and_updowncounter_2.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_type_histogram_and_updowncounter_2.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,26 @@ +# HELP foo_bytes meter histogram foo +# TYPE foo_bytes histogram +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="0"} 0 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="5"} 0 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="10"} 0 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="25"} 0 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="50"} 0 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="75"} 0 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="100"} 1 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="250"} 1 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="500"} 1 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="750"} 1 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="1000"} 1 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="2500"} 1 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="5000"} 1 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="7500"} 1 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="10000"} 1 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="+Inf"} 1 +foo_bytes_sum{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0"} 100 +foo_bytes_count{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_unit_two_counters.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_unit_two_counters.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_unit_two_counters.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_unit_two_counters.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,11 @@ +# HELP bar_total meter bar +# TYPE bar_total counter +bar_total{type="bar",otel_scope_name="ma",otel_scope_version="v0.1.0"} 100 +bar_total{type="bar",otel_scope_name="mb",otel_scope_version="v0.1.0"} 100 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +otel_scope_info{otel_scope_name="mb",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_unit_two_histograms.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_unit_two_histograms.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_unit_two_histograms.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_unit_two_histograms.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,45 @@ +# HELP bar meter histogram bar +# TYPE bar histogram +bar_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="0"} 0 +bar_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="5"} 0 +bar_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="10"} 0 +bar_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="25"} 0 +bar_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="50"} 0 +bar_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="75"} 0 +bar_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="100"} 1 +bar_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="250"} 1 +bar_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="500"} 1 +bar_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="750"} 1 +bar_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="1000"} 1 +bar_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="2500"} 1 +bar_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="5000"} 1 +bar_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="7500"} 1 +bar_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="10000"} 1 +bar_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="+Inf"} 1 +bar_sum{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0"} 100 +bar_count{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +bar_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="0"} 0 +bar_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="5"} 0 +bar_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="10"} 0 +bar_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="25"} 0 +bar_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="50"} 0 +bar_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="75"} 0 +bar_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="100"} 1 +bar_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="250"} 1 +bar_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="500"} 1 +bar_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="750"} 1 +bar_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="1000"} 1 +bar_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="2500"} 1 +bar_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="5000"} 1 +bar_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="7500"} 1 +bar_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="10000"} 1 +bar_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="+Inf"} 1 +bar_sum{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0"} 100 +bar_count{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0"} 1 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +otel_scope_info{otel_scope_name="mb",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_unit_two_updowncounters.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_unit_two_updowncounters.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_unit_two_updowncounters.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/conflict_unit_two_updowncounters.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,11 @@ +# HELP bar meter gauge bar +# TYPE bar gauge +bar{type="bar",otel_scope_name="ma",otel_scope_version="v0.1.0"} 100 +bar{type="bar",otel_scope_name="mb",otel_scope_version="v0.1.0"} 100 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +otel_scope_info{otel_scope_name="mb",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/counter_disabled_suffix.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/counter_disabled_suffix.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/counter_disabled_suffix.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/counter_disabled_suffix.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,10 @@ +# HELP foo_milliseconds a simple counter without a total suffix +# TYPE foo_milliseconds counter +foo_milliseconds{A="B",C="D",E="true",F="42",otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 24.3 +foo_milliseconds{A="D",C="B",E="true",F="42",otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 5 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/counter.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/counter.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/counter.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/counter.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,10 @@ +# HELP foo_milliseconds_total a simple counter +# TYPE foo_milliseconds_total counter +foo_milliseconds_total{A="B",C="D",E="true",F="42",otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 24.3 +foo_milliseconds_total{A="D",C="B",E="true",F="42",otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 5 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/custom_resource.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/custom_resource.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/custom_resource.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/custom_resource.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,9 @@ +# HELP foo_total a simple counter +# TYPE foo_total counter +foo_total{A="B",C="D",E="true",F="42",otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 24.3 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{A="B",C="D",service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/empty_resource.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/empty_resource.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/empty_resource.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/empty_resource.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,9 @@ +# HELP foo_total a simple counter +# TYPE foo_total counter +foo_total{A="B",C="D",E="true",F="42",otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 24.3 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/gauge.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/gauge.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/gauge.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/gauge.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,9 @@ +# HELP bar_ratio a fun little gauge +# TYPE bar_ratio gauge +bar_ratio{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 0.75 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/histogram.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/histogram.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/histogram.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/histogram.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,21 @@ +# HELP histogram_baz_bytes a very nice histogram +# TYPE histogram_baz_bytes histogram +histogram_baz_bytes_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="0"} 0 +histogram_baz_bytes_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="5"} 0 +histogram_baz_bytes_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="10"} 1 +histogram_baz_bytes_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="25"} 2 +histogram_baz_bytes_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="50"} 2 +histogram_baz_bytes_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="75"} 2 +histogram_baz_bytes_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="100"} 2 +histogram_baz_bytes_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="250"} 4 +histogram_baz_bytes_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="500"} 4 +histogram_baz_bytes_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="1000"} 4 +histogram_baz_bytes_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="+Inf"} 4 +histogram_baz_bytes_sum{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 236 +histogram_baz_bytes_count{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 4 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/multi_scopes.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/multi_scopes.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/multi_scopes.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/multi_scopes.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,13 @@ +# HELP bar_milliseconds_total meter bar counter +# TYPE bar_milliseconds_total counter +bar_milliseconds_total{type="bar",otel_scope_name="meterbar",otel_scope_version="v0.1.0"} 200 +# HELP foo_milliseconds_total meter foo counter +# TYPE foo_milliseconds_total counter +foo_milliseconds_total{type="foo",otel_scope_name="meterfoo",otel_scope_version="v0.1.0"} 100 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="meterbar",otel_scope_version="v0.1.0"} 1 +otel_scope_info{otel_scope_name="meterfoo",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/no_conflict_two_counters.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/no_conflict_two_counters.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/no_conflict_two_counters.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/no_conflict_two_counters.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,11 @@ +# HELP foo_bytes_total meter counter foo +# TYPE foo_bytes_total counter +foo_bytes_total{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0"} 100 +foo_bytes_total{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0"} 100 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +otel_scope_info{otel_scope_name="mb",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/no_conflict_two_histograms.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/no_conflict_two_histograms.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/no_conflict_two_histograms.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/no_conflict_two_histograms.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,45 @@ +# HELP foo_bytes meter histogram foo +# TYPE foo_bytes histogram +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="0"} 0 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="5"} 0 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="10"} 0 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="25"} 0 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="50"} 0 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="75"} 0 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="100"} 1 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="250"} 1 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="500"} 1 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="750"} 1 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="1000"} 1 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="2500"} 1 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="5000"} 1 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="7500"} 1 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="10000"} 1 +foo_bytes_bucket{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0",le="+Inf"} 1 +foo_bytes_sum{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0"} 100 +foo_bytes_count{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +foo_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="0"} 0 +foo_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="5"} 0 +foo_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="10"} 0 +foo_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="25"} 0 +foo_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="50"} 0 +foo_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="75"} 0 +foo_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="100"} 1 +foo_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="250"} 1 +foo_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="500"} 1 +foo_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="750"} 1 +foo_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="1000"} 1 +foo_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="2500"} 1 +foo_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="5000"} 1 +foo_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="7500"} 1 +foo_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="10000"} 1 +foo_bytes_bucket{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0",le="+Inf"} 1 +foo_bytes_sum{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0"} 100 +foo_bytes_count{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0"} 1 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +otel_scope_info{otel_scope_name="mb",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/no_conflict_two_updowncounters.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/no_conflict_two_updowncounters.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/no_conflict_two_updowncounters.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/no_conflict_two_updowncounters.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,11 @@ +# HELP foo_bytes meter gauge foo +# TYPE foo_bytes gauge +foo_bytes{A="B",otel_scope_name="ma",otel_scope_version="v0.1.0"} 100 +foo_bytes{A="B",otel_scope_name="mb",otel_scope_version="v0.1.0"} 100 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="ma",otel_scope_version="v0.1.0"} 1 +otel_scope_info{otel_scope_name="mb",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/sanitized_labels.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/sanitized_labels.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/sanitized_labels.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/sanitized_labels.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,9 @@ +# HELP foo_total a sanitary counter +# TYPE foo_total counter +foo_total{A_B="Q",C_D="Y;Z",otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 24.3 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/sanitized_names.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/sanitized_names.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/sanitized_names.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/sanitized_names.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,35 @@ +# HELP _0invalid_counter_name_total a counter with an invalid name +# TYPE _0invalid_counter_name_total counter +_0invalid_counter_name_total{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 100 +# HELP bar a fun little gauge +# TYPE bar gauge +bar{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 75 +# HELP invalid_gauge_name a gauge with an invalid name +# TYPE invalid_gauge_name gauge +invalid_gauge_name{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 100 +# HELP invalid_hist_name a histogram with an invalid name +# TYPE invalid_hist_name histogram +invalid_hist_name_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="0"} 0 +invalid_hist_name_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="5"} 0 +invalid_hist_name_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="10"} 0 +invalid_hist_name_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="25"} 1 +invalid_hist_name_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="50"} 1 +invalid_hist_name_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="75"} 1 +invalid_hist_name_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="100"} 1 +invalid_hist_name_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="250"} 1 +invalid_hist_name_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="500"} 1 +invalid_hist_name_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="750"} 1 +invalid_hist_name_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="1000"} 1 +invalid_hist_name_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="2500"} 1 +invalid_hist_name_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="5000"} 1 +invalid_hist_name_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="7500"} 1 +invalid_hist_name_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="10000"} 1 +invalid_hist_name_bucket{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0",le="+Inf"} 1 +invalid_hist_name_sum{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 23 +invalid_hist_name_count{A="B",C="D",otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 1 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/with_namespace.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/with_namespace.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/with_namespace.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/with_namespace.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,9 @@ +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 +# HELP test_foo_total a simple counter +# TYPE test_foo_total counter +test_foo_total{A="B",C="D",E="true",F="42",otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 24.3 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/without_scope_and_target_info.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/without_scope_and_target_info.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/without_scope_and_target_info.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/without_scope_and_target_info.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,3 @@ +# HELP bar_bytes_total a fun little counter +# TYPE bar_bytes_total counter +bar_bytes_total{A="B",C="D"} 3 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/without_scope_info.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/without_scope_info.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/without_scope_info.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/without_scope_info.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,6 @@ +# HELP bar_ratio a fun little gauge +# TYPE bar_ratio gauge +bar_ratio{A="B",C="D"} 1 +# HELP target_info Target metadata +# TYPE target_info gauge +target_info{service_name="prometheus_test",telemetry_sdk_language="rust",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="latest"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/without_target_info.txt temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/without_target_info.txt --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/without_target_info.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/data/without_target_info.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,6 @@ +# HELP foo_total a simple counter +# TYPE foo_total counter +foo_total{A="B",C="D",E="true",F="42",otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 24.3 +# HELP otel_scope_info Instrumentation Scope metadata +# TYPE otel_scope_info gauge +otel_scope_info{otel_scope_name="testmeter",otel_scope_version="v0.1.0"} 1 diff -Nru temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/integration_test.rs temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/integration_test.rs --- temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/integration_test.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-prometheus/tests/integration_test.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,162 +1,770 @@ -use opentelemetry::sdk::export::metrics::aggregation; -use opentelemetry::sdk::metrics::{controllers, processors, selectors}; -use opentelemetry::sdk::Resource; -use opentelemetry::Context; -use opentelemetry::{metrics::MeterProvider, KeyValue}; -use opentelemetry_prometheus::PrometheusExporter; +use std::fs; +use std::path::Path; +use std::time::Duration; + +use opentelemetry_api::metrics::{Meter, MeterProvider as _, Unit}; +use opentelemetry_api::Key; +use opentelemetry_api::KeyValue; +use opentelemetry_prometheus::ExporterBuilder; +use opentelemetry_sdk::metrics::{new_view, Aggregation, Instrument, MeterProvider, Stream}; +use opentelemetry_sdk::resource::{ + EnvResourceDetector, SdkProvidedResourceDetector, TelemetryResourceDetector, +}; +use opentelemetry_sdk::Resource; +use opentelemetry_semantic_conventions::resource::{SERVICE_NAME, TELEMETRY_SDK_VERSION}; use prometheus::{Encoder, TextEncoder}; #[test] -fn free_unused_instruments() { - let cx = Context::new(); - let controller = controllers::basic( - processors::factory( - selectors::simple::histogram(vec![-0.5, 1.0]), - aggregation::cumulative_temporality_selector(), - ) - .with_memory(true), - ) - .with_resource(Resource::new(vec![KeyValue::new("R", "V")])) - .build(); - let exporter = opentelemetry_prometheus::exporter(controller).init(); - let mut expected = Vec::new(); - - { - let meter = exporter - .meter_provider() - .unwrap() - .versioned_meter("test", None, None); - let counter = meter.f64_counter("counter").init(); - - let attributes = vec![KeyValue::new("A", "B"), KeyValue::new("C", "D")]; - - counter.add(&cx, 10.0, &attributes); - counter.add(&cx, 5.3, &attributes); - - expected.push(r#"counter{A="B",C="D",R="V"} 15.3"#); - } - // Standard export - compare_export(&exporter, expected.clone()); - // Final export before instrument dropped - compare_export(&exporter, expected.clone()); - // Instrument dropped, but last value kept by prom exporter - compare_export(&exporter, expected); -} - -#[test] -fn test_add() { - let cx = Context::new(); - let controller = controllers::basic( - processors::factory( - selectors::simple::histogram(vec![-0.5, 1.0]), - aggregation::cumulative_temporality_selector(), - ) - .with_memory(true), - ) - .with_resource(Resource::new(vec![KeyValue::new("R", "V")])) - .build(); - let exporter = opentelemetry_prometheus::exporter(controller).init(); - - let meter = exporter - .meter_provider() - .unwrap() - .versioned_meter("test", None, None); +fn prometheus_exporter_integration() { + struct TestCase { + name: &'static str, + empty_resource: bool, + custom_resource_attrs: Vec, + #[allow(clippy::type_complexity)] + record_metrics: Box, + builder: ExporterBuilder, + expected_file: &'static str, + } - let up_down_counter = meter.f64_up_down_counter("updowncounter").init(); - let counter = meter.f64_counter("counter").init(); - let histogram = meter.f64_histogram("my.histogram").init(); + impl Default for TestCase { + fn default() -> Self { + TestCase { + name: "", + empty_resource: false, + custom_resource_attrs: Vec::new(), + record_metrics: Box::new(|_| {}), + builder: ExporterBuilder::default(), + expected_file: "", + } + } + } - let attributes = vec![KeyValue::new("A", "B"), KeyValue::new("C", "D")]; + let test_cases = vec![ + TestCase { + name: "counter", + expected_file: "counter.txt", + record_metrics: Box::new(|meter| { + let attrs = vec![ + Key::new("A").string("B"), + Key::new("C").string("D"), + Key::new("E").bool(true), + Key::new("F").i64(42), + ]; + let counter = meter + .f64_counter("foo") + .with_description("a simple counter") + .with_unit(Unit::new("ms")) + .init(); + counter.add(5.0, &attrs); + counter.add(10.3, &attrs); + counter.add(9.0, &attrs); + let attrs2 = vec![ + Key::new("A").string("D"), + Key::new("C").string("B"), + Key::new("E").bool(true), + Key::new("F").i64(42), + ]; + counter.add(5.0, &attrs2); + }), + ..Default::default() + }, + TestCase { + name: "counter with suffixes disabled", + expected_file: "counter_disabled_suffix.txt", + builder: ExporterBuilder::default().without_counter_suffixes(), + record_metrics: Box::new(|meter| { + let attrs = vec![ + Key::new("A").string("B"), + Key::new("C").string("D"), + Key::new("E").bool(true), + Key::new("F").i64(42), + ]; + let counter = meter + .f64_counter("foo") + .with_description("a simple counter without a total suffix") + .with_unit(Unit::new("ms")) + .init(); + counter.add(5.0, &attrs); + counter.add(10.3, &attrs); + counter.add(9.0, &attrs); + let attrs2 = vec![ + Key::new("A").string("D"), + Key::new("C").string("B"), + Key::new("E").bool(true), + Key::new("F").i64(42), + ]; + counter.add(5.0, &attrs2); + }), + ..Default::default() + }, + TestCase { + name: "gauge", + expected_file: "gauge.txt", + record_metrics: Box::new(|meter| { + let attrs = vec![Key::new("A").string("B"), Key::new("C").string("D")]; + let gauge = meter + .f64_up_down_counter("bar") + .with_description("a fun little gauge") + .with_unit(Unit::new("1")) + .init(); + gauge.add(1.0, &attrs); + gauge.add(-0.25, &attrs); + }), + ..Default::default() + }, + TestCase { + name: "histogram", + expected_file: "histogram.txt", + record_metrics: Box::new(|meter| { + let attrs = vec![Key::new("A").string("B"), Key::new("C").string("D")]; + let histogram = meter + .f64_histogram("histogram_baz") + .with_description("a very nice histogram") + .with_unit(Unit::new("By")) + .init(); + histogram.record(23.0, &attrs); + histogram.record(7.0, &attrs); + histogram.record(101.0, &attrs); + histogram.record(105.0, &attrs); + }), + ..Default::default() + }, + TestCase { + name: "sanitized attributes to labels", + expected_file: "sanitized_labels.txt", + builder: ExporterBuilder::default().without_units(), + record_metrics: Box::new(|meter| { + let attrs = vec![ + // exact match, value should be overwritten + Key::new("A.B").string("X"), + Key::new("A.B").string("Q"), + // unintended match due to sanitization, values should be concatenated + Key::new("C.D").string("Y"), + Key::new("C/D").string("Z"), + ]; + let counter = meter + .f64_counter("foo") + .with_description("a sanitary counter") + // This unit is not added to + .with_unit(Unit::new("By")) + .init(); + counter.add(5.0, &attrs); + counter.add(10.3, &attrs); + counter.add(9.0, &attrs); + }), + ..Default::default() + }, + TestCase { + name: "invalid instruments are renamed", + expected_file: "sanitized_names.txt", + record_metrics: Box::new(|meter| { + let attrs = vec![Key::new("A").string("B"), Key::new("C").string("D")]; + // Valid. + let mut gauge = meter + .f64_up_down_counter("bar") + .with_description("a fun little gauge") + .init(); + gauge.add(100., &attrs); + gauge.add(-25.0, &attrs); + + // Invalid, will be renamed. + gauge = meter + .f64_up_down_counter("invalid.gauge.name") + .with_description("a gauge with an invalid name") + .init(); + gauge.add(100.0, &attrs); + + let counter = meter + .f64_counter("0invalid.counter.name") + .with_description("a counter with an invalid name") + .init(); + counter.add(100.0, &attrs); + + let histogram = meter + .f64_histogram("invalid.hist.name") + .with_description("a histogram with an invalid name") + .init(); + histogram.record(23.0, &attrs); + }), + ..Default::default() + }, + TestCase { + name: "empty resource", + empty_resource: true, + expected_file: "empty_resource.txt", + record_metrics: Box::new(|meter| { + let attrs = vec![ + Key::new("A").string("B"), + Key::new("C").string("D"), + Key::new("E").bool(true), + Key::new("F").i64(42), + ]; + let counter = meter + .f64_counter("foo") + .with_description("a simple counter") + .init(); + counter.add(5.0, &attrs); + counter.add(10.3, &attrs); + counter.add(9.0, &attrs); + }), + ..Default::default() + }, + TestCase { + name: "custom resource", + custom_resource_attrs: vec![Key::new("A").string("B"), Key::new("C").string("D")], + expected_file: "custom_resource.txt", + record_metrics: Box::new(|meter| { + let attrs = vec![ + Key::new("A").string("B"), + Key::new("C").string("D"), + Key::new("E").bool(true), + Key::new("F").i64(42), + ]; + let counter = meter + .f64_counter("foo") + .with_description("a simple counter") + .init(); + counter.add(5., &attrs); + counter.add(10.3, &attrs); + counter.add(9.0, &attrs); + }), + ..Default::default() + }, + TestCase { + name: "without target_info", + builder: ExporterBuilder::default().without_target_info(), + expected_file: "without_target_info.txt", + record_metrics: Box::new(|meter| { + let attrs = vec![ + Key::new("A").string("B"), + Key::new("C").string("D"), + Key::new("E").bool(true), + Key::new("F").i64(42), + ]; + let counter = meter + .f64_counter("foo") + .with_description("a simple counter") + .init(); + counter.add(5.0, &attrs); + counter.add(10.3, &attrs); + counter.add(9.0, &attrs); + }), + ..Default::default() + }, + TestCase { + name: "without scope_info", + builder: ExporterBuilder::default().without_scope_info(), + expected_file: "without_scope_info.txt", + record_metrics: Box::new(|meter| { + let attrs = vec![Key::new("A").string("B"), Key::new("C").string("D")]; + let gauge = meter + .i64_up_down_counter("bar") + .with_description("a fun little gauge") + .with_unit(Unit::new("1")) + .init(); + gauge.add(2, &attrs); + gauge.add(-1, &attrs); + }), + ..Default::default() + }, + TestCase { + name: "without scope_info and target_info", + builder: ExporterBuilder::default() + .without_scope_info() + .without_target_info(), + expected_file: "without_scope_and_target_info.txt", + record_metrics: Box::new(|meter| { + let attrs = vec![Key::new("A").string("B"), Key::new("C").string("D")]; + let counter = meter + .u64_counter("bar") + .with_description("a fun little counter") + .with_unit(Unit::new("By")) + .init(); + counter.add(2, &attrs); + counter.add(1, &attrs); + }), + ..Default::default() + }, + TestCase { + name: "with namespace", + builder: ExporterBuilder::default().with_namespace("test"), + expected_file: "with_namespace.txt", + record_metrics: Box::new(|meter| { + let attrs = vec![ + Key::new("A").string("B"), + Key::new("C").string("D"), + Key::new("E").bool(true), + Key::new("F").i64(42), + ]; + let counter = meter + .f64_counter("foo") + .with_description("a simple counter") + .init(); + + counter.add(5.0, &attrs); + counter.add(10.3, &attrs); + counter.add(9.0, &attrs); + }), + ..Default::default() + }, + ]; - let mut expected = Vec::new(); + for tc in test_cases { + let registry = prometheus::Registry::new(); + let exporter = tc.builder.with_registry(registry.clone()).build().unwrap(); + + let res = if tc.empty_resource { + Resource::empty() + } else { + Resource::from_detectors( + Duration::from_secs(0), + vec![ + Box::new(SdkProvidedResourceDetector), + Box::new(EnvResourceDetector::new()), + Box::new(TelemetryResourceDetector), + ], + ) + .merge(&mut Resource::new( + vec![ + // always specify service.name because the default depends on the running OS + SERVICE_NAME.string("prometheus_test"), + // Overwrite the semconv.TelemetrySDKVersionKey value so we don't need to update every version + TELEMETRY_SDK_VERSION.string("latest"), + ] + .into_iter() + .chain(tc.custom_resource_attrs.into_iter()), + )) + }; + + let provider = MeterProvider::builder() + .with_resource(res) + .with_reader(exporter) + .with_view( + new_view( + Instrument::new().name("histogram_*"), + Stream::new().aggregation(Aggregation::ExplicitBucketHistogram { + boundaries: vec![ + 0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 1000.0, + ], + record_min_max: true, + }), + ) + .unwrap(), + ) + .build(); + let meter = + provider.versioned_meter("testmeter", Some("v0.1.0"), None::<&'static str>, None); + (tc.record_metrics)(meter); + + let content = fs::read_to_string(Path::new("./tests/data").join(tc.expected_file)) + .expect(tc.expected_file); + gather_and_compare(registry, content, tc.name); + } +} - counter.add(&cx, 10.0, &attributes); - counter.add(&cx, 5.3, &attributes); +fn gather_and_compare(registry: prometheus::Registry, expected: String, name: &'static str) { + let mut output = Vec::new(); + let encoder = TextEncoder::new(); + let metric_families = registry.gather(); + encoder.encode(&metric_families, &mut output).unwrap(); + let output_string = String::from_utf8(output).unwrap(); - expected.push(r#"counter{A="B",C="D",R="V"} 15.3"#); + assert_eq!(output_string, expected, "{name}"); +} - let cb_attributes = attributes.clone(); - let gauge = meter.i64_observable_gauge("intgauge").init(); - meter - .register_callback(move |cx| gauge.observe(cx, 1, cb_attributes.as_ref())) +#[test] +fn multiple_scopes() { + let registry = prometheus::Registry::new(); + let exporter = ExporterBuilder::default() + .with_registry(registry.clone()) + .build() .unwrap(); - expected.push(r#"intgauge{A="B",C="D",R="V"} 1"#); - - histogram.record(&cx, -0.6, &attributes); - histogram.record(&cx, -0.4, &attributes); - histogram.record(&cx, 0.6, &attributes); - histogram.record(&cx, 20.0, &attributes); + let resource = Resource::from_detectors( + Duration::from_secs(0), + vec![ + Box::new(SdkProvidedResourceDetector), + Box::new(EnvResourceDetector::new()), + Box::new(TelemetryResourceDetector), + ], + ) + .merge(&mut Resource::new( + vec![ + // always specify service.name because the default depends on the running OS + SERVICE_NAME.string("prometheus_test"), + // Overwrite the semconv.TelemetrySDKVersionKey value so we don't need to update every version + TELEMETRY_SDK_VERSION.string("latest"), + ] + .into_iter(), + )); + + let provider = MeterProvider::builder() + .with_reader(exporter) + .with_resource(resource) + .build(); + + let foo_counter = provider + .versioned_meter("meterfoo", Some("v0.1.0"), None::<&'static str>, None) + .u64_counter("foo") + .with_unit(Unit::new("ms")) + .with_description("meter foo counter") + .init(); + foo_counter.add(100, &[KeyValue::new("type", "foo")]); + + let bar_counter = provider + .versioned_meter("meterbar", Some("v0.1.0"), None::<&'static str>, None) + .u64_counter("bar") + .with_unit(Unit::new("ms")) + .with_description("meter bar counter") + .init(); + bar_counter.add(200, &[KeyValue::new("type", "bar")]); - expected.push(r#"my_histogram_bucket{A="B",C="D",R="V",le="+Inf"} 4"#); - expected.push(r#"my_histogram_bucket{A="B",C="D",R="V",le="-0.5"} 1"#); - expected.push(r#"my_histogram_bucket{A="B",C="D",R="V",le="1"} 3"#); - expected.push(r#"my_histogram_count{A="B",C="D",R="V"} 4"#); - expected.push(r#"my_histogram_sum{A="B",C="D",R="V"} 19.6"#); + let content = fs::read_to_string("./tests/data/multi_scopes.txt").unwrap(); + gather_and_compare(registry, content, "multi_scope"); +} - up_down_counter.add(&cx, 10.0, &attributes); - up_down_counter.add(&cx, -3.2, &attributes); +#[test] +fn duplicate_metrics() { + struct TestCase { + name: &'static str, + custom_resource_attrs: Vec, + #[allow(clippy::type_complexity)] + record_metrics: Box, + builder: ExporterBuilder, + expected_files: Vec<&'static str>, + } - expected.push(r#"updowncounter{A="B",C="D",R="V"} 6.8"#); + impl Default for TestCase { + fn default() -> Self { + TestCase { + name: "", + custom_resource_attrs: Vec::new(), + record_metrics: Box::new(|_, _| {}), + builder: ExporterBuilder::default(), + expected_files: Vec::new(), + } + } + } - compare_export(&exporter, expected) -} + let test_cases = vec![ + TestCase { + name: "no_conflict_two_counters", + record_metrics: Box::new(|meter_a, meter_b| { + let foo_a = meter_a + .u64_counter("foo") + .with_unit(Unit::new("By")) + .with_description("meter counter foo") + .init(); + + foo_a.add(100, &[KeyValue::new("A", "B")]); + + let foo_b = meter_b + .u64_counter("foo") + .with_unit(Unit::new("By")) + .with_description("meter counter foo") + .init(); + + foo_b.add(100, &[KeyValue::new("A", "B")]); + }), + expected_files: vec!["no_conflict_two_counters.txt"], + ..Default::default() + }, + TestCase { + name: "no_conflict_two_updowncounters", + record_metrics: Box::new(|meter_a, meter_b| { + let foo_a = meter_a + .i64_up_down_counter("foo") + .with_unit(Unit::new("By")) + .with_description("meter gauge foo") + .init(); + + foo_a.add(100, &[KeyValue::new("A", "B")]); + + let foo_b = meter_b + .i64_up_down_counter("foo") + .with_unit(Unit::new("By")) + .with_description("meter gauge foo") + .init(); + + foo_b.add(100, &[KeyValue::new("A", "B")]); + }), + expected_files: vec!["no_conflict_two_updowncounters.txt"], + ..Default::default() + }, + TestCase { + name: "no_conflict_two_histograms", + record_metrics: Box::new(|meter_a, meter_b| { + let foo_a = meter_a + .i64_histogram("foo") + .with_unit(Unit::new("By")) + .with_description("meter histogram foo") + .init(); + + foo_a.record(100, &[KeyValue::new("A", "B")]); + + let foo_b = meter_b + .i64_histogram("foo") + .with_unit(Unit::new("By")) + .with_description("meter histogram foo") + .init(); + + foo_b.record(100, &[KeyValue::new("A", "B")]); + }), + expected_files: vec!["no_conflict_two_histograms.txt"], + ..Default::default() + }, + TestCase { + name: "conflict_help_two_counters", + record_metrics: Box::new(|meter_a, meter_b| { + let bar_a = meter_a + .u64_counter("bar") + .with_unit(Unit::new("By")) + .with_description("meter a bar") + .init(); + + bar_a.add(100, &[KeyValue::new("type", "bar")]); + + let bar_b = meter_b + .u64_counter("bar") + .with_unit(Unit::new("By")) + .with_description("meter b bar") + .init(); + + bar_b.add(100, &[KeyValue::new("type", "bar")]); + }), + expected_files: vec![ + "conflict_help_two_counters_1.txt", + "conflict_help_two_counters_2.txt", + ], + ..Default::default() + }, + TestCase { + name: "conflict_help_two_updowncounters", + record_metrics: Box::new(|meter_a, meter_b| { + let bar_a = meter_a + .i64_up_down_counter("bar") + .with_unit(Unit::new("By")) + .with_description("meter a bar") + .init(); + + bar_a.add(100, &[KeyValue::new("type", "bar")]); + + let bar_b = meter_b + .i64_up_down_counter("bar") + .with_unit(Unit::new("By")) + .with_description("meter b bar") + .init(); + + bar_b.add(100, &[KeyValue::new("type", "bar")]); + }), + expected_files: vec![ + "conflict_help_two_updowncounters_1.txt", + "conflict_help_two_updowncounters_2.txt", + ], + ..Default::default() + }, + TestCase { + name: "conflict_help_two_histograms", + record_metrics: Box::new(|meter_a, meter_b| { + let bar_a = meter_a + .i64_histogram("bar") + .with_unit(Unit::new("By")) + .with_description("meter a bar") + .init(); + + bar_a.record(100, &[KeyValue::new("A", "B")]); + + let bar_b = meter_b + .i64_histogram("bar") + .with_unit(Unit::new("By")) + .with_description("meter b bar") + .init(); + + bar_b.record(100, &[KeyValue::new("A", "B")]); + }), + expected_files: vec![ + "conflict_help_two_histograms_1.txt", + "conflict_help_two_histograms_2.txt", + ], + ..Default::default() + }, + TestCase { + name: "conflict_unit_two_counters", + record_metrics: Box::new(|meter_a, meter_b| { + let baz_a = meter_a + .u64_counter("bar") + .with_unit(Unit::new("By")) + .with_description("meter bar") + .init(); + + baz_a.add(100, &[KeyValue::new("type", "bar")]); + + let baz_b = meter_b + .u64_counter("bar") + .with_unit(Unit::new("ms")) + .with_description("meter bar") + .init(); + + baz_b.add(100, &[KeyValue::new("type", "bar")]); + }), + builder: ExporterBuilder::default().without_units(), + expected_files: vec!["conflict_unit_two_counters.txt"], + ..Default::default() + }, + TestCase { + name: "conflict_unit_two_updowncounters", + record_metrics: Box::new(|meter_a, meter_b| { + let bar_a = meter_a + .i64_up_down_counter("bar") + .with_unit(Unit::new("By")) + .with_description("meter gauge bar") + .init(); + + bar_a.add(100, &[KeyValue::new("type", "bar")]); + + let bar_b = meter_b + .i64_up_down_counter("bar") + .with_unit(Unit::new("ms")) + .with_description("meter gauge bar") + .init(); + + bar_b.add(100, &[KeyValue::new("type", "bar")]); + }), + builder: ExporterBuilder::default().without_units(), + expected_files: vec!["conflict_unit_two_updowncounters.txt"], + ..Default::default() + }, + TestCase { + name: "conflict_unit_two_histograms", + record_metrics: Box::new(|meter_a, meter_b| { + let bar_a = meter_a + .i64_histogram("bar") + .with_unit(Unit::new("By")) + .with_description("meter histogram bar") + .init(); + + bar_a.record(100, &[KeyValue::new("A", "B")]); + + let bar_b = meter_b + .i64_histogram("bar") + .with_unit(Unit::new("ms")) + .with_description("meter histogram bar") + .init(); + + bar_b.record(100, &[KeyValue::new("A", "B")]); + }), + builder: ExporterBuilder::default().without_units(), + expected_files: vec!["conflict_unit_two_histograms.txt"], + ..Default::default() + }, + TestCase { + name: "conflict_type_counter_and_updowncounter", + record_metrics: Box::new(|meter_a, _meter_b| { + let counter = meter_a + .u64_counter("foo") + .with_unit(Unit::new("By")) + .with_description("meter foo") + .init(); + + counter.add(100, &[KeyValue::new("type", "foo")]); + + let gauge = meter_a + .i64_up_down_counter("foo_total") + .with_unit(Unit::new("By")) + .with_description("meter foo") + .init(); + + gauge.add(200, &[KeyValue::new("type", "foo")]); + }), + builder: ExporterBuilder::default().without_units(), + expected_files: vec![ + "conflict_type_counter_and_updowncounter_1.txt", + "conflict_type_counter_and_updowncounter_2.txt", + ], + ..Default::default() + }, + TestCase { + name: "conflict_type_histogram_and_updowncounter", + record_metrics: Box::new(|meter_a, _meter_b| { + let foo_a = meter_a + .i64_up_down_counter("foo") + .with_unit(Unit::new("By")) + .with_description("meter gauge foo") + .init(); + + foo_a.add(100, &[KeyValue::new("A", "B")]); + + let foo_histogram_a = meter_a + .i64_histogram("foo") + .with_unit(Unit::new("By")) + .with_description("meter histogram foo") + .init(); + + foo_histogram_a.record(100, &[KeyValue::new("A", "B")]); + }), + expected_files: vec![ + "conflict_type_histogram_and_updowncounter_1.txt", + "conflict_type_histogram_and_updowncounter_2.txt", + ], + ..Default::default() + }, + ]; -#[test] -fn test_sanitization() { - let cx = Context::new(); - let controller = controllers::basic( - processors::factory( - selectors::simple::histogram(vec![-0.5, 1.0]), - aggregation::cumulative_temporality_selector(), + for tc in test_cases { + let registry = prometheus::Registry::new(); + let exporter = tc.builder.with_registry(registry.clone()).build().unwrap(); + + let resource = Resource::from_detectors( + Duration::from_secs(0), + vec![ + Box::new(SdkProvidedResourceDetector), + Box::new(EnvResourceDetector::new()), + Box::new(TelemetryResourceDetector), + ], ) - .with_memory(true), - ) - .with_resource(Resource::new(vec![KeyValue::new( - "service.name", - "Test Service", - )])) - .build(); - let exporter = opentelemetry_prometheus::exporter(controller).init(); - let meter = exporter - .meter_provider() - .unwrap() - .versioned_meter("test", None, None); - - let histogram = meter.f64_histogram("http.server.duration").init(); - let attributes = vec![ - KeyValue::new("http.method", "GET"), - KeyValue::new("http.host", "server"), - ]; - histogram.record(&cx, -0.6, &attributes); - histogram.record(&cx, -0.4, &attributes); - histogram.record(&cx, 0.6, &attributes); - histogram.record(&cx, 20.0, &attributes); - - let expected = vec![ - r#"http_server_duration_bucket{http_host="server",http_method="GET",service_name="Test Service",le="+Inf"} 4"#, - r#"http_server_duration_bucket{http_host="server",http_method="GET",service_name="Test Service",le="-0.5"} 1"#, - r#"http_server_duration_bucket{http_host="server",http_method="GET",service_name="Test Service",le="1"} 3"#, - r#"http_server_duration_count{http_host="server",http_method="GET",service_name="Test Service"} 4"#, - r#"http_server_duration_sum{http_host="server",http_method="GET",service_name="Test Service"} 19.6"#, - ]; - compare_export(&exporter, expected) + .merge(&mut Resource::new( + vec![ + // always specify service.name because the default depends on the running OS + SERVICE_NAME.string("prometheus_test"), + // Overwrite the semconv.TelemetrySDKVersionKey value so we don't need to update every version + TELEMETRY_SDK_VERSION.string("latest"), + ] + .into_iter() + .chain(tc.custom_resource_attrs.into_iter()), + )); + + let provider = MeterProvider::builder() + .with_resource(resource) + .with_reader(exporter) + .build(); + + let meter_a = provider.versioned_meter("ma", Some("v0.1.0"), None::<&'static str>, None); + let meter_b = provider.versioned_meter("mb", Some("v0.1.0"), None::<&'static str>, None); + + (tc.record_metrics)(meter_a, meter_b); + + let possible_matches = tc + .expected_files + .into_iter() + .map(|f| fs::read_to_string(Path::new("./tests/data").join(f)).expect(f)) + .collect(); + gather_and_compare_multi(registry, possible_matches, tc.name); + } } -fn compare_export(exporter: &PrometheusExporter, mut expected: Vec<&'static str>) { +fn gather_and_compare_multi( + registry: prometheus::Registry, + expected: Vec, + name: &'static str, +) { let mut output = Vec::new(); let encoder = TextEncoder::new(); - let metric_families = exporter.registry().gather(); + let metric_families = registry.gather(); encoder.encode(&metric_families, &mut output).unwrap(); let output_string = String::from_utf8(output).unwrap(); - let mut metrics_only = output_string - .split_terminator('\n') - .filter(|line| !line.starts_with('#') && !line.is_empty()) - .collect::>(); - - metrics_only.sort_unstable(); - expected.sort_unstable(); - - assert_eq!(expected.join("\n"), metrics_only.join("\n")) + assert!( + expected.contains(&output_string), + "mismatched output in {name}" + ) } diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/build.rs temporalio-1.3.0/vendor/opentelemetry-proto/build.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/build.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/build.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -use std::io::Error; - -// Grpc related files used by tonic are generated here. Those files re-generate for each build -// so it's up to date. -// -// Grpc related files used by grpcio are maintained at src/proto/grpcio. tests/grpc_build.rs makes -// sure they are up to date. - -fn main() -> Result<(), Error> { - #[cfg(feature = "gen-tonic")] - tonic_build::configure() - .build_server(cfg!(feature = "build-server")) - .build_client(cfg!(feature = "build-client")) - .compile( - &[ - "src/proto/opentelemetry-proto/opentelemetry/proto/common/v1/common.proto", - "src/proto/opentelemetry-proto/opentelemetry/proto/resource/v1/resource.proto", - "src/proto/opentelemetry-proto/opentelemetry/proto/trace/v1/trace.proto", - "src/proto/opentelemetry-proto/opentelemetry/proto/trace/v1/trace_config.proto", - "src/proto/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service.proto", - "src/proto/opentelemetry-proto/opentelemetry/proto/metrics/v1/metrics.proto", - "src/proto/opentelemetry-proto/opentelemetry/proto/collector/metrics/v1/metrics_service.proto", - "src/proto/opentelemetry-proto/opentelemetry/proto/logs/v1/logs.proto", - "src/proto/opentelemetry-proto/opentelemetry/proto/collector/logs/v1/logs_service.proto", - ], - &["src/proto/opentelemetry-proto"], - )?; - - Ok(()) -} diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/.cargo-checksum.json temporalio-1.3.0/vendor/opentelemetry-proto/.cargo-checksum.json --- temporalio-1.3.0/vendor/opentelemetry-proto/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"26251715d75d477dfb4caddaf1d23c3448757740c68f8fed03ba83c3cde16023","CODEOWNERS":"517b0ec97b47f714513c6a611f30830a9c5b95b530c2dda813870bf0100f6979","Cargo.toml":"2d5a0408c162878b5fdce439a094ec6dbb39a998b065823f6e5d48689628d63b","LICENSE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","README.md":"7b490a030f56e1e4d2881abec52f3f91814de7c2130f3c88261cff33e552d511","build.rs":"4d1ef3a598a2dc6d99a9e6f9e374be9fe7b200e967cf6d25d2498ca74f2994a9","src/lib.rs":"33fa1f0d00269b2ae4a25e8245419c3e46b3839563f6aca19d37927768bef0d2","src/proto.rs":"f8318d5f2e9b809670f28ee71babcac9f8c92659fb273ed4da737cf5f998c98d","src/proto/grpcio/common.rs":"12abd99d23c2d1c5f61b5efec54c30083885e4fb3dbd1755781f0152eb7e7e21","src/proto/grpcio/metrics.rs":"3b2debedd68373cb97a71d7e9d2f08f70e59ed63bc0026c0627d74823276f8c5","src/proto/grpcio/metrics_service.rs":"4f26a8bab61498e3556a38fd57e03a8a5facfd56fd2bfd9621c479e69266c163","src/proto/grpcio/metrics_service_grpc.rs":"016df13b9e9c1743b48fe06d6dbbc0bdc235e96ae563165d66951fd4358692ea","src/proto/grpcio/resource.rs":"532f8552b5f160e87c0e10833f7f665912eefbb50b4bf660ad9793b24585a946","src/proto/grpcio/trace.rs":"4766e11518712e98df582fc0be185f3b5f09df9667ffaf3fd911e317ab52250c","src/proto/grpcio/trace_config.rs":"28be3321e131c7793112150f70895c3d063287981d9dad06b4ba33ea4976bd23","src/proto/grpcio/trace_service.rs":"8ce05baa8c1143cb2e77c9e4a03ab40a58128af53a3957847397e4d8bb984284","src/proto/grpcio/trace_service_grpc.rs":"7cb2163af82fdcd3ea4beacf7d977bd0d328f2fdbe8c77f5c60893bf40b13bf5","src/proto/grpcio/tracez.rs":"0d2b7656c6b22aa4206894feac391c15aaa8c2d51620d4875ae3b7ff540ab5e4","src/proto/opentelemetry-proto/CHANGELOG.md":"545b6e2da3895625f5377bab9c85b2134ecd8f8da9ce91e4b7fefb164f9892ac","src/proto/opentelemetry-proto/CONTRIBUTING.md":"0d01d6c26fa80ca14fc00062ba427bab2924f6a54c52beb03dedf485a3b20116","src/proto/opentelemetry-proto/LICENSE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","src/proto/opentelemetry-proto/Makefile":"4abac1b91c66d65537e8c6060f7fb8652b05c3133d15dbd56800703a7f79de05","src/proto/opentelemetry-proto/README.md":"f37f6aca94c7064524f77a5e37078f9a89f891f45fc47354f7c1a2855ed38a9b","src/proto/opentelemetry-proto/RELEASING.md":"e9da09470d009634df19acf1b24b41cb76269e70b4ca6704b273ba103dd16b68","src/proto/opentelemetry-proto/opentelemetry/proto/collector/README.md":"5acdcbbf7c66ec155a42d554d92c1abb975e4a59c13c6915cca9f797741940e0","src/proto/opentelemetry-proto/opentelemetry/proto/collector/logs/v1/logs_service.proto":"01c04ca24f8e19a421b88fc1207f74b1d1ad62c8718da97a0d1756065bcaba76","src/proto/opentelemetry-proto/opentelemetry/proto/collector/logs/v1/logs_service_http.yaml":"3603a173aedcba8311b55fe59f12af6b66f0b50a443ee8987f2a10868565ded9","src/proto/opentelemetry-proto/opentelemetry/proto/collector/metrics/v1/metrics_service.proto":"8848d5099126a101e7fe08e664281ec3fff48ab1d677e1fa7f78659dbfef66ca","src/proto/opentelemetry-proto/opentelemetry/proto/collector/metrics/v1/metrics_service_http.yaml":"9cc04d90ee9f767559e68bf2d91b9c3d79d9d9a238f61ad43516c1d645f24fe6","src/proto/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service.proto":"93bf485272d0785e3c4f5de3fcea8c60898faac604497fa1dd062fadea14a448","src/proto/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service_http.yaml":"e5bc99d549ec807e9a4a57ec41ace041dccc4dcfc7a7fc2d8c0973692f547abf","src/proto/opentelemetry-proto/opentelemetry/proto/common/v1/common.proto":"8eac29b7b1c7823b2a02200aa17f0a984e5454898e14509c789d6ec0b4287e81","src/proto/opentelemetry-proto/opentelemetry/proto/logs/v1/logs.proto":"b09c729b7f5624a35814538dca904e78a37769824076a680c52bfdde912dd6ba","src/proto/opentelemetry-proto/opentelemetry/proto/metrics/v1/metrics.proto":"76a766a4f5bb743d9eb21d6d3369290da0db1c22f9980978f74d7f6c8beff728","src/proto/opentelemetry-proto/opentelemetry/proto/resource/v1/resource.proto":"b8ea46501d3d4ba7057a1257e363eb8a335d17d7595c157802ffb0bb26c85796","src/proto/opentelemetry-proto/opentelemetry/proto/trace/v1/trace.proto":"f5e3f930b0bb8d7c6ba6dd7ea5f7aa49221c8c31f17453bb33c69dbf018c1956","src/proto/opentelemetry-proto/opentelemetry/proto/trace/v1/trace_config.proto":"7d4328edad6914128acd69e1ec19e62e6d6bca1a31636cd89b494c75c9b6eef5","src/proto/tracez.proto":"e59c2d002f696fdbb4849c18eab21b187264aa3de1f3389f0d33f01d80ad8f24","src/transform/common.rs":"f33bb258e606bc55f0c290b158fee0b728ae906c6de61b4f6f001051326d77ab","src/transform/metrics.rs":"b824b5d276e2ed88c0008badf31f52e21e3c1918bba19a3b3bdb4f09d64b06bd","src/transform/mod.rs":"5654c04251142d03f87cdc656f51c2681020df696acdd0b6c6dc0d1fe60f7324","src/transform/traces.rs":"9c051e63aa5f388647d97b56176a4b040629b1d51c1ba6d81bafec161feb9788","src/transform/tracez.rs":"d439d4d02849d266d3586885d02d16273010f8d61b0f93a186926887c30d5947","tests/grpc_build.rs":"cac0d90234eb900162295dc7102c08e6780a7b4b4ead3f6ef1303ab99c74ff40"},"package":"d61a2f56df5574508dd86aaca016c917489e589ece4141df1b5e349af8d66c28"} \ No newline at end of file +{"files":{"CHANGELOG.md":"8288336d8f4c042cd6c982a34f07f1e97f17bd2c2637d8fa01aa0dc1f7fdf111","CODEOWNERS":"517b0ec97b47f714513c6a611f30830a9c5b95b530c2dda813870bf0100f6979","Cargo.toml":"b9164feea6198a39ce01270ec2efcf5699a054ae391dd4ea3fdcdaae7945eb57","LICENSE":"208a3f5bae3355bd4f3f45626d1ea4518b253d618ee2896983436075c4375098","README.md":"7b490a030f56e1e4d2881abec52f3f91814de7c2130f3c88261cff33e552d511","src/lib.rs":"c61165d34625fa4f3ad0e127f0b4f64887478353a738f2f55aa31b34a30a391c","src/proto.rs":"ba3c6b45d5fc81df1bba35ec20001512aeb3b2d6ec951dce77ea0a64b89629a6","src/proto/grpcio/common.rs":"7c716427187d838a26946b8b18af5c0d012d33fcb05e1fe69c55eb435647aa79","src/proto/grpcio/logs.rs":"56a24f25d927eb1ae3d0bb0ef5a3705ce666049ba35e03e3550c50fd3fcd1c1b","src/proto/grpcio/logs_service.rs":"ccabd35b19e8fe8ce0cbe72a81c71476c4a391f34470265fcb9f1f984df931a4","src/proto/grpcio/logs_service_grpc.rs":"ec400effab132df0a5d07ade79445af8daf6053514dc579e57c78272551d1b8d","src/proto/grpcio/metrics.rs":"986a948cf184fbde5528aa69cb3955e92228c1716095bd4097a48bb1f3f78ee5","src/proto/grpcio/metrics_service.rs":"ba1d588419d737a2db0fd673ddd845e30aa9abf9a028234646e256521d382945","src/proto/grpcio/metrics_service_grpc.rs":"016df13b9e9c1743b48fe06d6dbbc0bdc235e96ae563165d66951fd4358692ea","src/proto/grpcio/resource.rs":"cb6ccc38eb3eb3620839dea3c03f38a5ef82513f9ec70df7bb9cecadb8b57503","src/proto/grpcio/trace.rs":"4cdc8cc2b581f61d96dfcb10e07e288448fe09de7cf47107028dbf97394fa028","src/proto/grpcio/trace_service.rs":"a43bbd2dbf621dcd2d711ae78e9eae7cf3f1c8ca57cf54db5aecf16d6f7b00cf","src/proto/grpcio/trace_service_grpc.rs":"7cb2163af82fdcd3ea4beacf7d977bd0d328f2fdbe8c77f5c60893bf40b13bf5","src/proto/grpcio/tracez.rs":"b16487cd1c2d83ce95deb763d17632fd1472335404f9aaf14b7d50d2d90f03b0","src/proto/opentelemetry-proto/CHANGELOG.md":"0f17bae225996c485331ba23a871b0e53cb468ebb3f89fc53619cffe59456e05","src/proto/opentelemetry-proto/CONTRIBUTING.md":"0d01d6c26fa80ca14fc00062ba427bab2924f6a54c52beb03dedf485a3b20116","src/proto/opentelemetry-proto/LICENSE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","src/proto/opentelemetry-proto/Makefile":"0f219088f10eb24061af514fe2e9bc77a7aae01960a154c4a6cf46ab2dc29d75","src/proto/opentelemetry-proto/README.md":"0d4d390729be77418b14e12d61252a46a1bc401ebf5b3af4527f5d1741620a60","src/proto/opentelemetry-proto/RELEASING.md":"ce9fc333601db6a6e02aeac8e80a1920a8ffb93f378492a4b1c91219d734a1f6","src/proto/opentelemetry-proto/buf.yaml":"555076d9ca363c6fbe91cb64bc21da30aeea2f1e3b30baca304595b6e1654c8d","src/proto/opentelemetry-proto/docs/README.md":"fcc0b5ef8dcccc6bd25415b59ff26740376a8c41c54269ce512b708b8aa12494","src/proto/opentelemetry-proto/docs/design-goals.md":"5a0899d88ba0dec8ff9e004bacb704d9afe42516fb5740674d38caefcf984b37","src/proto/opentelemetry-proto/docs/img/otlp-client-server.png":"27b8e50b1e7098f91640f4459efe30cfa138fb30fbf0e887c3efab2dd7d13ca0","src/proto/opentelemetry-proto/docs/img/otlp-concurrent.png":"cfe11f5da2d687f03449d7d12dc09d869065b6f7983c73fa9f8a923b55de1638","src/proto/opentelemetry-proto/docs/img/otlp-multi-destination.png":"d8cd5940cc9dafcbe91eb3795f9ae3ec0351d4c1848e5be2ff0e715246ce144c","src/proto/opentelemetry-proto/docs/img/otlp-request-response.png":"c7904b271217572bc40526e3a70f574b77a3b76fe13a8883638386ae43893589","src/proto/opentelemetry-proto/docs/img/otlp-sequential.png":"e403da3aada80b3393c8eebb6cee6a0fb9b0bce97cd0c03916471b9180e577cc","src/proto/opentelemetry-proto/docs/requirements.md":"0b1f7219ecaf41b9e4f4899b418b11b46995fe232088f4a0431fae0ed8d24ea8","src/proto/opentelemetry-proto/docs/specification.md":"e641316634daef7c42303e0eab77f8134ac7ab65151a317406b07a55ff6147b5","src/proto/opentelemetry-proto/examples/README.md":"594fa1ed5d1bc78904549533f5c783ac4e0c5f0de87a77ce97e7fb5a90fb4a0c","src/proto/opentelemetry-proto/examples/logs.json":"d7b2e147177df9be563ee57ce0c686b5c3327c93976048cd9420837c8d4280f8","src/proto/opentelemetry-proto/examples/metrics.json":"9f3fc3d0b12e666c068633167c0b6519d965b4da38d8198f77b7d4e243606bef","src/proto/opentelemetry-proto/examples/trace.json":"a3e97a92221adec01cc954bf8f538ccc10e47612e8c287bcd1d4dca406b520ef","src/proto/opentelemetry-proto/opentelemetry/proto/collector/README.md":"8fd9bb7a611ae64420cb7a8074001f710afc90605f6ee49c1e1afa3533b02cc1","src/proto/opentelemetry-proto/opentelemetry/proto/collector/logs/v1/logs_service.proto":"9f562fbabf00e0460bfe2004be9f9fd3ed02119bb92b82b5ec835ff983f86898","src/proto/opentelemetry-proto/opentelemetry/proto/collector/logs/v1/logs_service_http.yaml":"3603a173aedcba8311b55fe59f12af6b66f0b50a443ee8987f2a10868565ded9","src/proto/opentelemetry-proto/opentelemetry/proto/collector/metrics/v1/metrics_service.proto":"df560ad452c3c48c62c67590c4a0d968d4fddd0f404c3d9c189bafd1fc6bb724","src/proto/opentelemetry-proto/opentelemetry/proto/collector/metrics/v1/metrics_service_http.yaml":"9cc04d90ee9f767559e68bf2d91b9c3d79d9d9a238f61ad43516c1d645f24fe6","src/proto/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service.proto":"8b76d311c75f6eaee985dac358dd50ea98f77ec06a8022e299dcdb5c8c517a7a","src/proto/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service_http.yaml":"a0580f68f90a7086f211033f6374d5ba91eca900bc237721d350301e5308f9dd","src/proto/opentelemetry-proto/opentelemetry/proto/common/v1/common.proto":"6a75b9ff79bb37e502a16fd739294a29a4a6608eb07416f2187d05d7f3745e8e","src/proto/opentelemetry-proto/opentelemetry/proto/logs/v1/logs.proto":"8679b83136235942888819f3c0db3f726fc5bebc7811d3e359f88d00edb22c54","src/proto/opentelemetry-proto/opentelemetry/proto/metrics/v1/metrics.proto":"ca093f0ae5ec85b54656ce0070e67d405c6df5cfcb885d1ad7868a4888feb003","src/proto/opentelemetry-proto/opentelemetry/proto/resource/v1/resource.proto":"eaaed42d4912ead1405d6bc16314e2b20f031f401e7fec70199c52f9311a3d86","src/proto/opentelemetry-proto/opentelemetry/proto/trace/v1/trace.proto":"5bce2191ac173e8d09342a95aa3013604710256b1588e2883575224865f3eac8","src/proto/opentelemetry-proto/package-lock.json":"8f0bc83df2234bb766822bfab404c8e39f3c70dedad18deef8e159dc04f0400c","src/proto/opentelemetry-proto/package.json":"9e6b0b02cd142bd20362d6c622c19bce77eff6daf80f5435bf60e30bca9d0aee","src/proto/tonic/opentelemetry.proto.collector.logs.v1.rs":"921da1348d9d01a24231b215f743f7aed3d39588f6cabe2aa355ee53ff4e65ec","src/proto/tonic/opentelemetry.proto.collector.metrics.v1.rs":"fce13dcec7261e7a4f47a4fe60a6fdd615c679b69b86eac6b4e7f277e640cb44","src/proto/tonic/opentelemetry.proto.collector.trace.v1.rs":"fd748da45c04e67cbc8815494264a852af53268bcc5aad46c553ee724295a8f2","src/proto/tonic/opentelemetry.proto.common.v1.rs":"29fc6101e9d8fda6c7d7d9e5de4851401c569a417050126f8de561c3ebaeb833","src/proto/tonic/opentelemetry.proto.logs.v1.rs":"3f7de7a362b0ec262d798d5ddf1a4d5c727ac61b4e80df5388010bbd2c0b4e56","src/proto/tonic/opentelemetry.proto.metrics.v1.rs":"42625d1fa6db58a47277c9039fcb92bc9e46bcc5fe5ff4f095021f68dee64813","src/proto/tonic/opentelemetry.proto.resource.v1.rs":"df4910ecd7c03ecd7c1e83e0b8826eab4c5a404edecd7b15e2e970fe0a319b48","src/proto/tonic/opentelemetry.proto.trace.v1.rs":"b2f69e706254b1766e8663c7e96c92dfe9a1347aa3a7af84a5d35dee1bbfc6b3","src/proto/tracez.proto":"e83d3770312697627203c53d95300d92d698b93e7a180aaf94d75921f21c47e8","src/transform/common.rs":"34423c517d420abe269a333815c49cb81df3b2b0d737c857b882cebc2c659e00","src/transform/logs.rs":"c2978d3e8ad4168a22b33f2b57dc8769bafb57f7afddb9ec3b0e32c5d1d37604","src/transform/metrics.rs":"91b492bc35c7accf5aa43eaafcf3698e2bd54cf5e9168f9848b47f0255f57aff","src/transform/mod.rs":"462a2483ad67c4403f546d7f6809e91cf668c51c4bac0dd9d68a69949cf9f619","src/transform/traces.rs":"711dadb418ddb1dc124625c93ef3bd183f79022b0abc1275303b0a671ed47086","src/transform/tracez.rs":"13ad3a350f2cacba351f13a43c60869e6f08bee2deb7101b216fdee242b3ee7f","tests/grpc_build.rs":"3e74ca2ec3011fea42ed799b21e57bb5be19771d3d1f42204f25e6a8606ceb16"},"package":"b1e3f814aa9f8c905d0ee4bde026afd3b2577a97c10e1699912e3e44f0c4cbeb"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/Cargo.toml temporalio-1.3.0/vendor/opentelemetry-proto/Cargo.toml --- temporalio-1.3.0/vendor/opentelemetry-proto/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,13 +11,11 @@ [package] edition = "2021" -rust-version = "1.56" +rust-version = "1.60" name = "opentelemetry-proto" -version = "0.1.0" -authors = ["OpenTelemetry Authors "] -build = "build.rs" +version = "0.3.0" autotests = false -description = "Protobuf generated files and transmationes" +description = "Protobuf generated files and transformations." homepage = "https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-proto" readme = "README.md" keywords = [ @@ -34,6 +32,7 @@ ] license = "Apache-2.0" repository = "https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-proto" +resolver = "1" [lib] doctest = false @@ -41,30 +40,32 @@ [[test]] name = "grpc_build" path = "tests/grpc_build.rs" -required-features = [ - "with-serde", - "gen-protoc", -] [dependencies.futures] version = "0.3" features = ["std"] -default-features = false - -[dependencies.futures-util] -version = "0.3" -features = ["std"] +optional = true default-features = false [dependencies.grpcio] -version = "0.9" +version = "0.12" optional = true -[dependencies.opentelemetry] -version = "0.18" +[dependencies.opentelemetry_api] +version = "0.20" features = [ "trace", "metrics", + "logs", +] +default-features = false + +[dependencies.opentelemetry_sdk] +version = "0.20" +features = [ + "trace", + "metrics", + "logs", ] default-features = false @@ -80,13 +81,17 @@ version = "1.0" optional = true -[dependencies.serde_json] -version = "1.0" -optional = true - [dependencies.tonic] -version = "0.8.0" +version = "0.9.0" +features = [ + "codegen", + "prost", +] optional = true +default-features = false + +[dev-dependencies.prost-build] +version = "0.11.1" [dev-dependencies.protobuf-codegen] version = "2.16" @@ -94,17 +99,13 @@ [dev-dependencies.protoc-grpcio] version = "3.0" -[build-dependencies.prost-build] -version = "0.11.1" -optional = true +[dev-dependencies.tempfile] +version = "3.3.0" -[build-dependencies.tonic-build] -version = "0.8.0" -optional = true +[dev-dependencies.tonic-build] +version = "0.9.0" [features] -build-client = [] -build-server = [] default = [] full = [ "gen-tonic", @@ -113,17 +114,19 @@ "logs", "metrics", "zpages", - "build-server", - "build-client", "with-serde", ] gen-protoc = [ "grpcio", "protobuf", + "futures", ] gen-tonic = [ + "gen-tonic-messages", + "tonic/transport", +] +gen-tonic-messages = [ "tonic", - "tonic-build", "prost", ] logs = [] @@ -132,6 +135,5 @@ with-serde = [ "protobuf/with-serde", "serde", - "serde_json", ] zpages = ["traces"] diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/CHANGELOG.md temporalio-1.3.0/vendor/opentelemetry-proto/CHANGELOG.md --- temporalio-1.3.0/vendor/opentelemetry-proto/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,20 @@ # Changelog +## v0.3.0 + +### Updated + +- Update protobuf definitions to v1.0.0 #1154 +- Update to opentelemetry-api v0.20.0 + +## v0.2.0 +### Changed +- Update to opentelemetry v0.19.0. +- Remove build script and generate files using unit tests [#881](https://github.com/open-telemetry/opentelemetry-rust/pull/881). +- Bump MSRV to 1.57 [#953](https://github.com/open-telemetry/opentelemetry-rust/pull/953). +- Update dependencies and bump MSRV to 1.60 [#969](https://github.com/open-telemetry/opentelemetry-rust/pull/969). +- Bump to use the v0.19.0 protobuf definitions. [#989](https://github.com/open-telemetry/opentelemetry-rust/pull/989). + ## v0.1.0 Initial crate release. diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/LICENSE temporalio-1.3.0/vendor/opentelemetry-proto/LICENSE --- temporalio-1.3.0/vendor/opentelemetry-proto/LICENSE 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/LICENSE 2023-10-30 19:40:00.000000000 +0000 @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2023 The OpenTelemetry Authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/lib.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/lib.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -#![cfg_attr(doc, feature(doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_auto_cfg))] //! This crate contains generated files from [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-proto) //! repository and transformation between types from generated files and types defined in [opentelemetry](https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry) //! @@ -21,8 +21,6 @@ //! - `gen-protoc`: generate rs files using [grpcio](https://github.com/tikv/grpc-rs). //! //! ## Additional configurations -//! - `build-server`: build grpc service servers if enabled. Only applicable to `gen-tonic`. -//! - `build-client`: build grpc service clients if enabled. Only applicable to `gen-tonic`. //! - `with-serde`: add serde annotations to generated types. Only applicable to `gen-protoc`. //! //! ## Misc @@ -40,7 +38,7 @@ #[cfg(feature = "gen-protoc")] pub use proto::grpcio; -#[cfg(feature = "gen-tonic")] +#[cfg(feature = "gen-tonic-messages")] pub use proto::tonic; mod transform; diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/common.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/common.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/common.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/common.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -// This file is generated by rust-protobuf 2.27.1. Do not edit +// This file is generated by rust-protobuf 2.28.0. Do not edit // @generated // https://github.com/rust-lang/rust-clippy/issues/702 @@ -21,7 +21,7 @@ /// Generated files are compatible only with the same version /// of protobuf runtime. -// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_27_1; +// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_28_0; #[derive(PartialEq,Clone,Default)] #[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] @@ -1136,10 +1136,12 @@ #[derive(PartialEq,Clone,Default)] #[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] -pub struct InstrumentationLibrary { +pub struct InstrumentationScope { // message fields pub name: ::std::string::String, pub version: ::std::string::String, + pub attributes: ::protobuf::RepeatedField, + pub dropped_attributes_count: u32, // special fields #[cfg_attr(feature = "with-serde", serde(skip))] pub unknown_fields: ::protobuf::UnknownFields, @@ -1147,14 +1149,14 @@ pub cached_size: ::protobuf::CachedSize, } -impl<'a> ::std::default::Default for &'a InstrumentationLibrary { - fn default() -> &'a InstrumentationLibrary { - ::default_instance() +impl<'a> ::std::default::Default for &'a InstrumentationScope { + fn default() -> &'a InstrumentationScope { + ::default_instance() } } -impl InstrumentationLibrary { - pub fn new() -> InstrumentationLibrary { +impl InstrumentationScope { + pub fn new() -> InstrumentationScope { ::std::default::Default::default() } @@ -1209,10 +1211,55 @@ pub fn take_version(&mut self) -> ::std::string::String { ::std::mem::replace(&mut self.version, ::std::string::String::new()) } + + // repeated .opentelemetry.proto.common.v1.KeyValue attributes = 3; + + + pub fn get_attributes(&self) -> &[KeyValue] { + &self.attributes + } + pub fn clear_attributes(&mut self) { + self.attributes.clear(); + } + + // Param is passed by value, moved + pub fn set_attributes(&mut self, v: ::protobuf::RepeatedField) { + self.attributes = v; + } + + // Mutable pointer to the field. + pub fn mut_attributes(&mut self) -> &mut ::protobuf::RepeatedField { + &mut self.attributes + } + + // Take field + pub fn take_attributes(&mut self) -> ::protobuf::RepeatedField { + ::std::mem::replace(&mut self.attributes, ::protobuf::RepeatedField::new()) + } + + // uint32 dropped_attributes_count = 4; + + + pub fn get_dropped_attributes_count(&self) -> u32 { + self.dropped_attributes_count + } + pub fn clear_dropped_attributes_count(&mut self) { + self.dropped_attributes_count = 0; + } + + // Param is passed by value, moved + pub fn set_dropped_attributes_count(&mut self, v: u32) { + self.dropped_attributes_count = v; + } } -impl ::protobuf::Message for InstrumentationLibrary { +impl ::protobuf::Message for InstrumentationScope { fn is_initialized(&self) -> bool { + for v in &self.attributes { + if !v.is_initialized() { + return false; + } + }; true } @@ -1226,6 +1273,16 @@ 2 => { ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.version)?; }, + 3 => { + ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.attributes)?; + }, + 4 => { + if wire_type != ::protobuf::wire_format::WireTypeVarint { + return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); + } + let tmp = is.read_uint32()?; + self.dropped_attributes_count = tmp; + }, _ => { ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; }, @@ -1244,6 +1301,13 @@ if !self.version.is_empty() { my_size += ::protobuf::rt::string_size(2, &self.version); } + for value in &self.attributes { + let len = value.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; + }; + if self.dropped_attributes_count != 0 { + my_size += ::protobuf::rt::value_size(4, self.dropped_attributes_count, ::protobuf::wire_format::WireTypeVarint); + } my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); self.cached_size.set(my_size); my_size @@ -1256,6 +1320,14 @@ if !self.version.is_empty() { os.write_string(2, &self.version)?; } + for v in &self.attributes { + os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?; + os.write_raw_varint32(v.get_cached_size())?; + v.write_to_with_cached_sizes(os)?; + }; + if self.dropped_attributes_count != 0 { + os.write_uint32(4, self.dropped_attributes_count)?; + } os.write_unknown_fields(self.get_unknown_fields())?; ::std::result::Result::Ok(()) } @@ -1286,8 +1358,8 @@ Self::descriptor_static() } - fn new() -> InstrumentationLibrary { - InstrumentationLibrary::new() + fn new() -> InstrumentationScope { + InstrumentationScope::new() } fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { @@ -1296,43 +1368,55 @@ let mut fields = ::std::vec::Vec::new(); fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( "name", - |m: &InstrumentationLibrary| { &m.name }, - |m: &mut InstrumentationLibrary| { &mut m.name }, + |m: &InstrumentationScope| { &m.name }, + |m: &mut InstrumentationScope| { &mut m.name }, )); fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( "version", - |m: &InstrumentationLibrary| { &m.version }, - |m: &mut InstrumentationLibrary| { &mut m.version }, + |m: &InstrumentationScope| { &m.version }, + |m: &mut InstrumentationScope| { &mut m.version }, + )); + fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( + "attributes", + |m: &InstrumentationScope| { &m.attributes }, + |m: &mut InstrumentationScope| { &mut m.attributes }, + )); + fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeUint32>( + "dropped_attributes_count", + |m: &InstrumentationScope| { &m.dropped_attributes_count }, + |m: &mut InstrumentationScope| { &mut m.dropped_attributes_count }, )); - ::protobuf::reflect::MessageDescriptor::new_pb_name::( - "InstrumentationLibrary", + ::protobuf::reflect::MessageDescriptor::new_pb_name::( + "InstrumentationScope", fields, file_descriptor_proto() ) }) } - fn default_instance() -> &'static InstrumentationLibrary { - static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; - instance.get(InstrumentationLibrary::new) + fn default_instance() -> &'static InstrumentationScope { + static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; + instance.get(InstrumentationScope::new) } } -impl ::protobuf::Clear for InstrumentationLibrary { +impl ::protobuf::Clear for InstrumentationScope { fn clear(&mut self) { self.name.clear(); self.version.clear(); + self.attributes.clear(); + self.dropped_attributes_count = 0; self.unknown_fields.clear(); } } -impl ::std::fmt::Debug for InstrumentationLibrary { +impl ::std::fmt::Debug for InstrumentationScope { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { ::protobuf::text_format::fmt(self, f) } } -impl ::protobuf::reflect::ProtobufValue for InstrumentationLibrary { +impl ::protobuf::reflect::ProtobufValue for InstrumentationScope { fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { ::protobuf::reflect::ReflectValueRef::Message(self) } @@ -1353,10 +1437,13 @@ \x20\x03(\x0b2'.opentelemetry.proto.common.v1.KeyValueR\x06values\"[\n\ \x08KeyValue\x12\x10\n\x03key\x18\x01\x20\x01(\tR\x03key\x12=\n\x05value\ \x18\x02\x20\x01(\x0b2'.opentelemetry.proto.common.v1.AnyValueR\x05value\ - \"F\n\x16InstrumentationLibrary\x12\x12\n\x04name\x18\x01\x20\x01(\tR\ - \x04name\x12\x18\n\x07version\x18\x02\x20\x01(\tR\x07versionB[\n\x20io.o\ - pentelemetry.proto.common.v1B\x0bCommonProtoP\x01Z(go.opentelemetry.io/p\ - roto/otlp/common/v1b\x06proto3\ + \"\xc7\x01\n\x14InstrumentationScope\x12\x12\n\x04name\x18\x01\x20\x01(\ + \tR\x04name\x12\x18\n\x07version\x18\x02\x20\x01(\tR\x07version\x12G\n\n\ + attributes\x18\x03\x20\x03(\x0b2'.opentelemetry.proto.common.v1.KeyValue\ + R\nattributes\x128\n\x18dropped_attributes_count\x18\x04\x20\x01(\rR\x16\ + droppedAttributesCountB{\n\x20io.opentelemetry.proto.common.v1B\x0bCommo\ + nProtoP\x01Z(go.opentelemetry.io/proto/otlp/common/v1\xaa\x02\x1dOpenTel\ + emetry.Proto.Common.V1b\x06proto3\ "; static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT; diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/logs.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/logs.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/logs.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/logs.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1481 @@ +// This file is generated by rust-protobuf 2.28.0. Do not edit +// @generated + +// https://github.com/rust-lang/rust-clippy/issues/702 +#![allow(unknown_lints)] +#![allow(clippy::all)] + +#![allow(unused_attributes)] +#![cfg_attr(rustfmt, rustfmt::skip)] + +#![allow(box_pointers)] +#![allow(dead_code)] +#![allow(missing_docs)] +#![allow(non_camel_case_types)] +#![allow(non_snake_case)] +#![allow(non_upper_case_globals)] +#![allow(trivial_casts)] +#![allow(unused_imports)] +#![allow(unused_results)] +//! Generated file from `opentelemetry/proto/logs/v1/logs.proto` + +/// Generated files are compatible only with the same version +/// of protobuf runtime. +// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_28_0; + +#[derive(PartialEq,Clone,Default)] +#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] +pub struct LogsData { + // message fields + pub resource_logs: ::protobuf::RepeatedField, + // special fields + #[cfg_attr(feature = "with-serde", serde(skip))] + pub unknown_fields: ::protobuf::UnknownFields, + #[cfg_attr(feature = "with-serde", serde(skip))] + pub cached_size: ::protobuf::CachedSize, +} + +impl<'a> ::std::default::Default for &'a LogsData { + fn default() -> &'a LogsData { + ::default_instance() + } +} + +impl LogsData { + pub fn new() -> LogsData { + ::std::default::Default::default() + } + + // repeated .opentelemetry.proto.logs.v1.ResourceLogs resource_logs = 1; + + + pub fn get_resource_logs(&self) -> &[ResourceLogs] { + &self.resource_logs + } + pub fn clear_resource_logs(&mut self) { + self.resource_logs.clear(); + } + + // Param is passed by value, moved + pub fn set_resource_logs(&mut self, v: ::protobuf::RepeatedField) { + self.resource_logs = v; + } + + // Mutable pointer to the field. + pub fn mut_resource_logs(&mut self) -> &mut ::protobuf::RepeatedField { + &mut self.resource_logs + } + + // Take field + pub fn take_resource_logs(&mut self) -> ::protobuf::RepeatedField { + ::std::mem::replace(&mut self.resource_logs, ::protobuf::RepeatedField::new()) + } +} + +impl ::protobuf::Message for LogsData { + fn is_initialized(&self) -> bool { + for v in &self.resource_logs { + if !v.is_initialized() { + return false; + } + }; + true + } + + fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> { + while !is.eof()? { + let (field_number, wire_type) = is.read_tag_unpack()?; + match field_number { + 1 => { + ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.resource_logs)?; + }, + _ => { + ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; + }, + }; + } + ::std::result::Result::Ok(()) + } + + // Compute sizes of nested messages + #[allow(unused_variables)] + fn compute_size(&self) -> u32 { + let mut my_size = 0; + for value in &self.resource_logs { + let len = value.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; + }; + my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); + self.cached_size.set(my_size); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> { + for v in &self.resource_logs { + os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?; + os.write_raw_varint32(v.get_cached_size())?; + v.write_to_with_cached_sizes(os)?; + }; + os.write_unknown_fields(self.get_unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn get_cached_size(&self) -> u32 { + self.cached_size.get() + } + + fn get_unknown_fields(&self) -> &::protobuf::UnknownFields { + &self.unknown_fields + } + + fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields { + &mut self.unknown_fields + } + + fn as_any(&self) -> &dyn (::std::any::Any) { + self as &dyn (::std::any::Any) + } + fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) { + self as &mut dyn (::std::any::Any) + } + fn into_any(self: ::std::boxed::Box) -> ::std::boxed::Box { + self + } + + fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor { + Self::descriptor_static() + } + + fn new() -> LogsData { + LogsData::new() + } + + fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT; + descriptor.get(|| { + let mut fields = ::std::vec::Vec::new(); + fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( + "resource_logs", + |m: &LogsData| { &m.resource_logs }, + |m: &mut LogsData| { &mut m.resource_logs }, + )); + ::protobuf::reflect::MessageDescriptor::new_pb_name::( + "LogsData", + fields, + file_descriptor_proto() + ) + }) + } + + fn default_instance() -> &'static LogsData { + static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; + instance.get(LogsData::new) + } +} + +impl ::protobuf::Clear for LogsData { + fn clear(&mut self) { + self.resource_logs.clear(); + self.unknown_fields.clear(); + } +} + +impl ::std::fmt::Debug for LogsData { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for LogsData { + fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { + ::protobuf::reflect::ReflectValueRef::Message(self) + } +} + +#[derive(PartialEq,Clone,Default)] +#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] +pub struct ResourceLogs { + // message fields + pub resource: ::protobuf::SingularPtrField, + pub scope_logs: ::protobuf::RepeatedField, + pub schema_url: ::std::string::String, + // special fields + #[cfg_attr(feature = "with-serde", serde(skip))] + pub unknown_fields: ::protobuf::UnknownFields, + #[cfg_attr(feature = "with-serde", serde(skip))] + pub cached_size: ::protobuf::CachedSize, +} + +impl<'a> ::std::default::Default for &'a ResourceLogs { + fn default() -> &'a ResourceLogs { + ::default_instance() + } +} + +impl ResourceLogs { + pub fn new() -> ResourceLogs { + ::std::default::Default::default() + } + + // .opentelemetry.proto.resource.v1.Resource resource = 1; + + + pub fn get_resource(&self) -> &super::resource::Resource { + self.resource.as_ref().unwrap_or_else(|| ::default_instance()) + } + pub fn clear_resource(&mut self) { + self.resource.clear(); + } + + pub fn has_resource(&self) -> bool { + self.resource.is_some() + } + + // Param is passed by value, moved + pub fn set_resource(&mut self, v: super::resource::Resource) { + self.resource = ::protobuf::SingularPtrField::some(v); + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_resource(&mut self) -> &mut super::resource::Resource { + if self.resource.is_none() { + self.resource.set_default(); + } + self.resource.as_mut().unwrap() + } + + // Take field + pub fn take_resource(&mut self) -> super::resource::Resource { + self.resource.take().unwrap_or_else(|| super::resource::Resource::new()) + } + + // repeated .opentelemetry.proto.logs.v1.ScopeLogs scope_logs = 2; + + + pub fn get_scope_logs(&self) -> &[ScopeLogs] { + &self.scope_logs + } + pub fn clear_scope_logs(&mut self) { + self.scope_logs.clear(); + } + + // Param is passed by value, moved + pub fn set_scope_logs(&mut self, v: ::protobuf::RepeatedField) { + self.scope_logs = v; + } + + // Mutable pointer to the field. + pub fn mut_scope_logs(&mut self) -> &mut ::protobuf::RepeatedField { + &mut self.scope_logs + } + + // Take field + pub fn take_scope_logs(&mut self) -> ::protobuf::RepeatedField { + ::std::mem::replace(&mut self.scope_logs, ::protobuf::RepeatedField::new()) + } + + // string schema_url = 3; + + + pub fn get_schema_url(&self) -> &str { + &self.schema_url + } + pub fn clear_schema_url(&mut self) { + self.schema_url.clear(); + } + + // Param is passed by value, moved + pub fn set_schema_url(&mut self, v: ::std::string::String) { + self.schema_url = v; + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_schema_url(&mut self) -> &mut ::std::string::String { + &mut self.schema_url + } + + // Take field + pub fn take_schema_url(&mut self) -> ::std::string::String { + ::std::mem::replace(&mut self.schema_url, ::std::string::String::new()) + } +} + +impl ::protobuf::Message for ResourceLogs { + fn is_initialized(&self) -> bool { + for v in &self.resource { + if !v.is_initialized() { + return false; + } + }; + for v in &self.scope_logs { + if !v.is_initialized() { + return false; + } + }; + true + } + + fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> { + while !is.eof()? { + let (field_number, wire_type) = is.read_tag_unpack()?; + match field_number { + 1 => { + ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.resource)?; + }, + 2 => { + ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.scope_logs)?; + }, + 3 => { + ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.schema_url)?; + }, + _ => { + ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; + }, + }; + } + ::std::result::Result::Ok(()) + } + + // Compute sizes of nested messages + #[allow(unused_variables)] + fn compute_size(&self) -> u32 { + let mut my_size = 0; + if let Some(ref v) = self.resource.as_ref() { + let len = v.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; + } + for value in &self.scope_logs { + let len = value.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; + }; + if !self.schema_url.is_empty() { + my_size += ::protobuf::rt::string_size(3, &self.schema_url); + } + my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); + self.cached_size.set(my_size); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> { + if let Some(ref v) = self.resource.as_ref() { + os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?; + os.write_raw_varint32(v.get_cached_size())?; + v.write_to_with_cached_sizes(os)?; + } + for v in &self.scope_logs { + os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?; + os.write_raw_varint32(v.get_cached_size())?; + v.write_to_with_cached_sizes(os)?; + }; + if !self.schema_url.is_empty() { + os.write_string(3, &self.schema_url)?; + } + os.write_unknown_fields(self.get_unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn get_cached_size(&self) -> u32 { + self.cached_size.get() + } + + fn get_unknown_fields(&self) -> &::protobuf::UnknownFields { + &self.unknown_fields + } + + fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields { + &mut self.unknown_fields + } + + fn as_any(&self) -> &dyn (::std::any::Any) { + self as &dyn (::std::any::Any) + } + fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) { + self as &mut dyn (::std::any::Any) + } + fn into_any(self: ::std::boxed::Box) -> ::std::boxed::Box { + self + } + + fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor { + Self::descriptor_static() + } + + fn new() -> ResourceLogs { + ResourceLogs::new() + } + + fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT; + descriptor.get(|| { + let mut fields = ::std::vec::Vec::new(); + fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( + "resource", + |m: &ResourceLogs| { &m.resource }, + |m: &mut ResourceLogs| { &mut m.resource }, + )); + fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( + "scope_logs", + |m: &ResourceLogs| { &m.scope_logs }, + |m: &mut ResourceLogs| { &mut m.scope_logs }, + )); + fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( + "schema_url", + |m: &ResourceLogs| { &m.schema_url }, + |m: &mut ResourceLogs| { &mut m.schema_url }, + )); + ::protobuf::reflect::MessageDescriptor::new_pb_name::( + "ResourceLogs", + fields, + file_descriptor_proto() + ) + }) + } + + fn default_instance() -> &'static ResourceLogs { + static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; + instance.get(ResourceLogs::new) + } +} + +impl ::protobuf::Clear for ResourceLogs { + fn clear(&mut self) { + self.resource.clear(); + self.scope_logs.clear(); + self.schema_url.clear(); + self.unknown_fields.clear(); + } +} + +impl ::std::fmt::Debug for ResourceLogs { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for ResourceLogs { + fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { + ::protobuf::reflect::ReflectValueRef::Message(self) + } +} + +#[derive(PartialEq,Clone,Default)] +#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] +pub struct ScopeLogs { + // message fields + pub scope: ::protobuf::SingularPtrField, + pub log_records: ::protobuf::RepeatedField, + pub schema_url: ::std::string::String, + // special fields + #[cfg_attr(feature = "with-serde", serde(skip))] + pub unknown_fields: ::protobuf::UnknownFields, + #[cfg_attr(feature = "with-serde", serde(skip))] + pub cached_size: ::protobuf::CachedSize, +} + +impl<'a> ::std::default::Default for &'a ScopeLogs { + fn default() -> &'a ScopeLogs { + ::default_instance() + } +} + +impl ScopeLogs { + pub fn new() -> ScopeLogs { + ::std::default::Default::default() + } + + // .opentelemetry.proto.common.v1.InstrumentationScope scope = 1; + + + pub fn get_scope(&self) -> &super::common::InstrumentationScope { + self.scope.as_ref().unwrap_or_else(|| ::default_instance()) + } + pub fn clear_scope(&mut self) { + self.scope.clear(); + } + + pub fn has_scope(&self) -> bool { + self.scope.is_some() + } + + // Param is passed by value, moved + pub fn set_scope(&mut self, v: super::common::InstrumentationScope) { + self.scope = ::protobuf::SingularPtrField::some(v); + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_scope(&mut self) -> &mut super::common::InstrumentationScope { + if self.scope.is_none() { + self.scope.set_default(); + } + self.scope.as_mut().unwrap() + } + + // Take field + pub fn take_scope(&mut self) -> super::common::InstrumentationScope { + self.scope.take().unwrap_or_else(|| super::common::InstrumentationScope::new()) + } + + // repeated .opentelemetry.proto.logs.v1.LogRecord log_records = 2; + + + pub fn get_log_records(&self) -> &[LogRecord] { + &self.log_records + } + pub fn clear_log_records(&mut self) { + self.log_records.clear(); + } + + // Param is passed by value, moved + pub fn set_log_records(&mut self, v: ::protobuf::RepeatedField) { + self.log_records = v; + } + + // Mutable pointer to the field. + pub fn mut_log_records(&mut self) -> &mut ::protobuf::RepeatedField { + &mut self.log_records + } + + // Take field + pub fn take_log_records(&mut self) -> ::protobuf::RepeatedField { + ::std::mem::replace(&mut self.log_records, ::protobuf::RepeatedField::new()) + } + + // string schema_url = 3; + + + pub fn get_schema_url(&self) -> &str { + &self.schema_url + } + pub fn clear_schema_url(&mut self) { + self.schema_url.clear(); + } + + // Param is passed by value, moved + pub fn set_schema_url(&mut self, v: ::std::string::String) { + self.schema_url = v; + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_schema_url(&mut self) -> &mut ::std::string::String { + &mut self.schema_url + } + + // Take field + pub fn take_schema_url(&mut self) -> ::std::string::String { + ::std::mem::replace(&mut self.schema_url, ::std::string::String::new()) + } +} + +impl ::protobuf::Message for ScopeLogs { + fn is_initialized(&self) -> bool { + for v in &self.scope { + if !v.is_initialized() { + return false; + } + }; + for v in &self.log_records { + if !v.is_initialized() { + return false; + } + }; + true + } + + fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> { + while !is.eof()? { + let (field_number, wire_type) = is.read_tag_unpack()?; + match field_number { + 1 => { + ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.scope)?; + }, + 2 => { + ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.log_records)?; + }, + 3 => { + ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.schema_url)?; + }, + _ => { + ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; + }, + }; + } + ::std::result::Result::Ok(()) + } + + // Compute sizes of nested messages + #[allow(unused_variables)] + fn compute_size(&self) -> u32 { + let mut my_size = 0; + if let Some(ref v) = self.scope.as_ref() { + let len = v.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; + } + for value in &self.log_records { + let len = value.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; + }; + if !self.schema_url.is_empty() { + my_size += ::protobuf::rt::string_size(3, &self.schema_url); + } + my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); + self.cached_size.set(my_size); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> { + if let Some(ref v) = self.scope.as_ref() { + os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?; + os.write_raw_varint32(v.get_cached_size())?; + v.write_to_with_cached_sizes(os)?; + } + for v in &self.log_records { + os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?; + os.write_raw_varint32(v.get_cached_size())?; + v.write_to_with_cached_sizes(os)?; + }; + if !self.schema_url.is_empty() { + os.write_string(3, &self.schema_url)?; + } + os.write_unknown_fields(self.get_unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn get_cached_size(&self) -> u32 { + self.cached_size.get() + } + + fn get_unknown_fields(&self) -> &::protobuf::UnknownFields { + &self.unknown_fields + } + + fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields { + &mut self.unknown_fields + } + + fn as_any(&self) -> &dyn (::std::any::Any) { + self as &dyn (::std::any::Any) + } + fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) { + self as &mut dyn (::std::any::Any) + } + fn into_any(self: ::std::boxed::Box) -> ::std::boxed::Box { + self + } + + fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor { + Self::descriptor_static() + } + + fn new() -> ScopeLogs { + ScopeLogs::new() + } + + fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT; + descriptor.get(|| { + let mut fields = ::std::vec::Vec::new(); + fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( + "scope", + |m: &ScopeLogs| { &m.scope }, + |m: &mut ScopeLogs| { &mut m.scope }, + )); + fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( + "log_records", + |m: &ScopeLogs| { &m.log_records }, + |m: &mut ScopeLogs| { &mut m.log_records }, + )); + fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( + "schema_url", + |m: &ScopeLogs| { &m.schema_url }, + |m: &mut ScopeLogs| { &mut m.schema_url }, + )); + ::protobuf::reflect::MessageDescriptor::new_pb_name::( + "ScopeLogs", + fields, + file_descriptor_proto() + ) + }) + } + + fn default_instance() -> &'static ScopeLogs { + static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; + instance.get(ScopeLogs::new) + } +} + +impl ::protobuf::Clear for ScopeLogs { + fn clear(&mut self) { + self.scope.clear(); + self.log_records.clear(); + self.schema_url.clear(); + self.unknown_fields.clear(); + } +} + +impl ::std::fmt::Debug for ScopeLogs { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for ScopeLogs { + fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { + ::protobuf::reflect::ReflectValueRef::Message(self) + } +} + +#[derive(PartialEq,Clone,Default)] +#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] +pub struct LogRecord { + // message fields + pub time_unix_nano: u64, + pub observed_time_unix_nano: u64, + pub severity_number: SeverityNumber, + pub severity_text: ::std::string::String, + pub body: ::protobuf::SingularPtrField, + pub attributes: ::protobuf::RepeatedField, + pub dropped_attributes_count: u32, + pub flags: u32, + pub trace_id: ::std::vec::Vec, + pub span_id: ::std::vec::Vec, + // special fields + #[cfg_attr(feature = "with-serde", serde(skip))] + pub unknown_fields: ::protobuf::UnknownFields, + #[cfg_attr(feature = "with-serde", serde(skip))] + pub cached_size: ::protobuf::CachedSize, +} + +impl<'a> ::std::default::Default for &'a LogRecord { + fn default() -> &'a LogRecord { + ::default_instance() + } +} + +impl LogRecord { + pub fn new() -> LogRecord { + ::std::default::Default::default() + } + + // fixed64 time_unix_nano = 1; + + + pub fn get_time_unix_nano(&self) -> u64 { + self.time_unix_nano + } + pub fn clear_time_unix_nano(&mut self) { + self.time_unix_nano = 0; + } + + // Param is passed by value, moved + pub fn set_time_unix_nano(&mut self, v: u64) { + self.time_unix_nano = v; + } + + // fixed64 observed_time_unix_nano = 11; + + + pub fn get_observed_time_unix_nano(&self) -> u64 { + self.observed_time_unix_nano + } + pub fn clear_observed_time_unix_nano(&mut self) { + self.observed_time_unix_nano = 0; + } + + // Param is passed by value, moved + pub fn set_observed_time_unix_nano(&mut self, v: u64) { + self.observed_time_unix_nano = v; + } + + // .opentelemetry.proto.logs.v1.SeverityNumber severity_number = 2; + + + pub fn get_severity_number(&self) -> SeverityNumber { + self.severity_number + } + pub fn clear_severity_number(&mut self) { + self.severity_number = SeverityNumber::SEVERITY_NUMBER_UNSPECIFIED; + } + + // Param is passed by value, moved + pub fn set_severity_number(&mut self, v: SeverityNumber) { + self.severity_number = v; + } + + // string severity_text = 3; + + + pub fn get_severity_text(&self) -> &str { + &self.severity_text + } + pub fn clear_severity_text(&mut self) { + self.severity_text.clear(); + } + + // Param is passed by value, moved + pub fn set_severity_text(&mut self, v: ::std::string::String) { + self.severity_text = v; + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_severity_text(&mut self) -> &mut ::std::string::String { + &mut self.severity_text + } + + // Take field + pub fn take_severity_text(&mut self) -> ::std::string::String { + ::std::mem::replace(&mut self.severity_text, ::std::string::String::new()) + } + + // .opentelemetry.proto.common.v1.AnyValue body = 5; + + + pub fn get_body(&self) -> &super::common::AnyValue { + self.body.as_ref().unwrap_or_else(|| ::default_instance()) + } + pub fn clear_body(&mut self) { + self.body.clear(); + } + + pub fn has_body(&self) -> bool { + self.body.is_some() + } + + // Param is passed by value, moved + pub fn set_body(&mut self, v: super::common::AnyValue) { + self.body = ::protobuf::SingularPtrField::some(v); + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_body(&mut self) -> &mut super::common::AnyValue { + if self.body.is_none() { + self.body.set_default(); + } + self.body.as_mut().unwrap() + } + + // Take field + pub fn take_body(&mut self) -> super::common::AnyValue { + self.body.take().unwrap_or_else(|| super::common::AnyValue::new()) + } + + // repeated .opentelemetry.proto.common.v1.KeyValue attributes = 6; + + + pub fn get_attributes(&self) -> &[super::common::KeyValue] { + &self.attributes + } + pub fn clear_attributes(&mut self) { + self.attributes.clear(); + } + + // Param is passed by value, moved + pub fn set_attributes(&mut self, v: ::protobuf::RepeatedField) { + self.attributes = v; + } + + // Mutable pointer to the field. + pub fn mut_attributes(&mut self) -> &mut ::protobuf::RepeatedField { + &mut self.attributes + } + + // Take field + pub fn take_attributes(&mut self) -> ::protobuf::RepeatedField { + ::std::mem::replace(&mut self.attributes, ::protobuf::RepeatedField::new()) + } + + // uint32 dropped_attributes_count = 7; + + + pub fn get_dropped_attributes_count(&self) -> u32 { + self.dropped_attributes_count + } + pub fn clear_dropped_attributes_count(&mut self) { + self.dropped_attributes_count = 0; + } + + // Param is passed by value, moved + pub fn set_dropped_attributes_count(&mut self, v: u32) { + self.dropped_attributes_count = v; + } + + // fixed32 flags = 8; + + + pub fn get_flags(&self) -> u32 { + self.flags + } + pub fn clear_flags(&mut self) { + self.flags = 0; + } + + // Param is passed by value, moved + pub fn set_flags(&mut self, v: u32) { + self.flags = v; + } + + // bytes trace_id = 9; + + + pub fn get_trace_id(&self) -> &[u8] { + &self.trace_id + } + pub fn clear_trace_id(&mut self) { + self.trace_id.clear(); + } + + // Param is passed by value, moved + pub fn set_trace_id(&mut self, v: ::std::vec::Vec) { + self.trace_id = v; + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_trace_id(&mut self) -> &mut ::std::vec::Vec { + &mut self.trace_id + } + + // Take field + pub fn take_trace_id(&mut self) -> ::std::vec::Vec { + ::std::mem::replace(&mut self.trace_id, ::std::vec::Vec::new()) + } + + // bytes span_id = 10; + + + pub fn get_span_id(&self) -> &[u8] { + &self.span_id + } + pub fn clear_span_id(&mut self) { + self.span_id.clear(); + } + + // Param is passed by value, moved + pub fn set_span_id(&mut self, v: ::std::vec::Vec) { + self.span_id = v; + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_span_id(&mut self) -> &mut ::std::vec::Vec { + &mut self.span_id + } + + // Take field + pub fn take_span_id(&mut self) -> ::std::vec::Vec { + ::std::mem::replace(&mut self.span_id, ::std::vec::Vec::new()) + } +} + +impl ::protobuf::Message for LogRecord { + fn is_initialized(&self) -> bool { + for v in &self.body { + if !v.is_initialized() { + return false; + } + }; + for v in &self.attributes { + if !v.is_initialized() { + return false; + } + }; + true + } + + fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> { + while !is.eof()? { + let (field_number, wire_type) = is.read_tag_unpack()?; + match field_number { + 1 => { + if wire_type != ::protobuf::wire_format::WireTypeFixed64 { + return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); + } + let tmp = is.read_fixed64()?; + self.time_unix_nano = tmp; + }, + 11 => { + if wire_type != ::protobuf::wire_format::WireTypeFixed64 { + return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); + } + let tmp = is.read_fixed64()?; + self.observed_time_unix_nano = tmp; + }, + 2 => { + ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.severity_number, 2, &mut self.unknown_fields)? + }, + 3 => { + ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.severity_text)?; + }, + 5 => { + ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.body)?; + }, + 6 => { + ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.attributes)?; + }, + 7 => { + if wire_type != ::protobuf::wire_format::WireTypeVarint { + return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); + } + let tmp = is.read_uint32()?; + self.dropped_attributes_count = tmp; + }, + 8 => { + if wire_type != ::protobuf::wire_format::WireTypeFixed32 { + return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); + } + let tmp = is.read_fixed32()?; + self.flags = tmp; + }, + 9 => { + ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.trace_id)?; + }, + 10 => { + ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.span_id)?; + }, + _ => { + ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; + }, + }; + } + ::std::result::Result::Ok(()) + } + + // Compute sizes of nested messages + #[allow(unused_variables)] + fn compute_size(&self) -> u32 { + let mut my_size = 0; + if self.time_unix_nano != 0 { + my_size += 9; + } + if self.observed_time_unix_nano != 0 { + my_size += 9; + } + if self.severity_number != SeverityNumber::SEVERITY_NUMBER_UNSPECIFIED { + my_size += ::protobuf::rt::enum_size(2, self.severity_number); + } + if !self.severity_text.is_empty() { + my_size += ::protobuf::rt::string_size(3, &self.severity_text); + } + if let Some(ref v) = self.body.as_ref() { + let len = v.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; + } + for value in &self.attributes { + let len = value.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; + }; + if self.dropped_attributes_count != 0 { + my_size += ::protobuf::rt::value_size(7, self.dropped_attributes_count, ::protobuf::wire_format::WireTypeVarint); + } + if self.flags != 0 { + my_size += 5; + } + if !self.trace_id.is_empty() { + my_size += ::protobuf::rt::bytes_size(9, &self.trace_id); + } + if !self.span_id.is_empty() { + my_size += ::protobuf::rt::bytes_size(10, &self.span_id); + } + my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); + self.cached_size.set(my_size); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> { + if self.time_unix_nano != 0 { + os.write_fixed64(1, self.time_unix_nano)?; + } + if self.observed_time_unix_nano != 0 { + os.write_fixed64(11, self.observed_time_unix_nano)?; + } + if self.severity_number != SeverityNumber::SEVERITY_NUMBER_UNSPECIFIED { + os.write_enum(2, ::protobuf::ProtobufEnum::value(&self.severity_number))?; + } + if !self.severity_text.is_empty() { + os.write_string(3, &self.severity_text)?; + } + if let Some(ref v) = self.body.as_ref() { + os.write_tag(5, ::protobuf::wire_format::WireTypeLengthDelimited)?; + os.write_raw_varint32(v.get_cached_size())?; + v.write_to_with_cached_sizes(os)?; + } + for v in &self.attributes { + os.write_tag(6, ::protobuf::wire_format::WireTypeLengthDelimited)?; + os.write_raw_varint32(v.get_cached_size())?; + v.write_to_with_cached_sizes(os)?; + }; + if self.dropped_attributes_count != 0 { + os.write_uint32(7, self.dropped_attributes_count)?; + } + if self.flags != 0 { + os.write_fixed32(8, self.flags)?; + } + if !self.trace_id.is_empty() { + os.write_bytes(9, &self.trace_id)?; + } + if !self.span_id.is_empty() { + os.write_bytes(10, &self.span_id)?; + } + os.write_unknown_fields(self.get_unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn get_cached_size(&self) -> u32 { + self.cached_size.get() + } + + fn get_unknown_fields(&self) -> &::protobuf::UnknownFields { + &self.unknown_fields + } + + fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields { + &mut self.unknown_fields + } + + fn as_any(&self) -> &dyn (::std::any::Any) { + self as &dyn (::std::any::Any) + } + fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) { + self as &mut dyn (::std::any::Any) + } + fn into_any(self: ::std::boxed::Box) -> ::std::boxed::Box { + self + } + + fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor { + Self::descriptor_static() + } + + fn new() -> LogRecord { + LogRecord::new() + } + + fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT; + descriptor.get(|| { + let mut fields = ::std::vec::Vec::new(); + fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeFixed64>( + "time_unix_nano", + |m: &LogRecord| { &m.time_unix_nano }, + |m: &mut LogRecord| { &mut m.time_unix_nano }, + )); + fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeFixed64>( + "observed_time_unix_nano", + |m: &LogRecord| { &m.observed_time_unix_nano }, + |m: &mut LogRecord| { &mut m.observed_time_unix_nano }, + )); + fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum>( + "severity_number", + |m: &LogRecord| { &m.severity_number }, + |m: &mut LogRecord| { &mut m.severity_number }, + )); + fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( + "severity_text", + |m: &LogRecord| { &m.severity_text }, + |m: &mut LogRecord| { &mut m.severity_text }, + )); + fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( + "body", + |m: &LogRecord| { &m.body }, + |m: &mut LogRecord| { &mut m.body }, + )); + fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( + "attributes", + |m: &LogRecord| { &m.attributes }, + |m: &mut LogRecord| { &mut m.attributes }, + )); + fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeUint32>( + "dropped_attributes_count", + |m: &LogRecord| { &m.dropped_attributes_count }, + |m: &mut LogRecord| { &mut m.dropped_attributes_count }, + )); + fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeFixed32>( + "flags", + |m: &LogRecord| { &m.flags }, + |m: &mut LogRecord| { &mut m.flags }, + )); + fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>( + "trace_id", + |m: &LogRecord| { &m.trace_id }, + |m: &mut LogRecord| { &mut m.trace_id }, + )); + fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>( + "span_id", + |m: &LogRecord| { &m.span_id }, + |m: &mut LogRecord| { &mut m.span_id }, + )); + ::protobuf::reflect::MessageDescriptor::new_pb_name::( + "LogRecord", + fields, + file_descriptor_proto() + ) + }) + } + + fn default_instance() -> &'static LogRecord { + static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; + instance.get(LogRecord::new) + } +} + +impl ::protobuf::Clear for LogRecord { + fn clear(&mut self) { + self.time_unix_nano = 0; + self.observed_time_unix_nano = 0; + self.severity_number = SeverityNumber::SEVERITY_NUMBER_UNSPECIFIED; + self.severity_text.clear(); + self.body.clear(); + self.attributes.clear(); + self.dropped_attributes_count = 0; + self.flags = 0; + self.trace_id.clear(); + self.span_id.clear(); + self.unknown_fields.clear(); + } +} + +impl ::std::fmt::Debug for LogRecord { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for LogRecord { + fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { + ::protobuf::reflect::ReflectValueRef::Message(self) + } +} + +#[derive(Clone,PartialEq,Eq,Debug,Hash)] +#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] +pub enum SeverityNumber { + SEVERITY_NUMBER_UNSPECIFIED = 0, + SEVERITY_NUMBER_TRACE = 1, + SEVERITY_NUMBER_TRACE2 = 2, + SEVERITY_NUMBER_TRACE3 = 3, + SEVERITY_NUMBER_TRACE4 = 4, + SEVERITY_NUMBER_DEBUG = 5, + SEVERITY_NUMBER_DEBUG2 = 6, + SEVERITY_NUMBER_DEBUG3 = 7, + SEVERITY_NUMBER_DEBUG4 = 8, + SEVERITY_NUMBER_INFO = 9, + SEVERITY_NUMBER_INFO2 = 10, + SEVERITY_NUMBER_INFO3 = 11, + SEVERITY_NUMBER_INFO4 = 12, + SEVERITY_NUMBER_WARN = 13, + SEVERITY_NUMBER_WARN2 = 14, + SEVERITY_NUMBER_WARN3 = 15, + SEVERITY_NUMBER_WARN4 = 16, + SEVERITY_NUMBER_ERROR = 17, + SEVERITY_NUMBER_ERROR2 = 18, + SEVERITY_NUMBER_ERROR3 = 19, + SEVERITY_NUMBER_ERROR4 = 20, + SEVERITY_NUMBER_FATAL = 21, + SEVERITY_NUMBER_FATAL2 = 22, + SEVERITY_NUMBER_FATAL3 = 23, + SEVERITY_NUMBER_FATAL4 = 24, +} + +impl ::protobuf::ProtobufEnum for SeverityNumber { + fn value(&self) -> i32 { + *self as i32 + } + + fn from_i32(value: i32) -> ::std::option::Option { + match value { + 0 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_UNSPECIFIED), + 1 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_TRACE), + 2 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_TRACE2), + 3 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_TRACE3), + 4 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_TRACE4), + 5 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_DEBUG), + 6 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_DEBUG2), + 7 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_DEBUG3), + 8 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_DEBUG4), + 9 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_INFO), + 10 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_INFO2), + 11 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_INFO3), + 12 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_INFO4), + 13 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_WARN), + 14 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_WARN2), + 15 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_WARN3), + 16 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_WARN4), + 17 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_ERROR), + 18 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_ERROR2), + 19 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_ERROR3), + 20 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_ERROR4), + 21 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_FATAL), + 22 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_FATAL2), + 23 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_FATAL3), + 24 => ::std::option::Option::Some(SeverityNumber::SEVERITY_NUMBER_FATAL4), + _ => ::std::option::Option::None + } + } + + fn values() -> &'static [Self] { + static values: &'static [SeverityNumber] = &[ + SeverityNumber::SEVERITY_NUMBER_UNSPECIFIED, + SeverityNumber::SEVERITY_NUMBER_TRACE, + SeverityNumber::SEVERITY_NUMBER_TRACE2, + SeverityNumber::SEVERITY_NUMBER_TRACE3, + SeverityNumber::SEVERITY_NUMBER_TRACE4, + SeverityNumber::SEVERITY_NUMBER_DEBUG, + SeverityNumber::SEVERITY_NUMBER_DEBUG2, + SeverityNumber::SEVERITY_NUMBER_DEBUG3, + SeverityNumber::SEVERITY_NUMBER_DEBUG4, + SeverityNumber::SEVERITY_NUMBER_INFO, + SeverityNumber::SEVERITY_NUMBER_INFO2, + SeverityNumber::SEVERITY_NUMBER_INFO3, + SeverityNumber::SEVERITY_NUMBER_INFO4, + SeverityNumber::SEVERITY_NUMBER_WARN, + SeverityNumber::SEVERITY_NUMBER_WARN2, + SeverityNumber::SEVERITY_NUMBER_WARN3, + SeverityNumber::SEVERITY_NUMBER_WARN4, + SeverityNumber::SEVERITY_NUMBER_ERROR, + SeverityNumber::SEVERITY_NUMBER_ERROR2, + SeverityNumber::SEVERITY_NUMBER_ERROR3, + SeverityNumber::SEVERITY_NUMBER_ERROR4, + SeverityNumber::SEVERITY_NUMBER_FATAL, + SeverityNumber::SEVERITY_NUMBER_FATAL2, + SeverityNumber::SEVERITY_NUMBER_FATAL3, + SeverityNumber::SEVERITY_NUMBER_FATAL4, + ]; + values + } + + fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor { + static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT; + descriptor.get(|| { + ::protobuf::reflect::EnumDescriptor::new_pb_name::("SeverityNumber", file_descriptor_proto()) + }) + } +} + +impl ::std::marker::Copy for SeverityNumber { +} + +impl ::std::default::Default for SeverityNumber { + fn default() -> Self { + SeverityNumber::SEVERITY_NUMBER_UNSPECIFIED + } +} + +impl ::protobuf::reflect::ProtobufValue for SeverityNumber { + fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { + ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self)) + } +} + +#[derive(Clone,PartialEq,Eq,Debug,Hash)] +#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] +pub enum LogRecordFlags { + LOG_RECORD_FLAGS_DO_NOT_USE = 0, + LOG_RECORD_FLAGS_TRACE_FLAGS_MASK = 255, +} + +impl ::protobuf::ProtobufEnum for LogRecordFlags { + fn value(&self) -> i32 { + *self as i32 + } + + fn from_i32(value: i32) -> ::std::option::Option { + match value { + 0 => ::std::option::Option::Some(LogRecordFlags::LOG_RECORD_FLAGS_DO_NOT_USE), + 255 => ::std::option::Option::Some(LogRecordFlags::LOG_RECORD_FLAGS_TRACE_FLAGS_MASK), + _ => ::std::option::Option::None + } + } + + fn values() -> &'static [Self] { + static values: &'static [LogRecordFlags] = &[ + LogRecordFlags::LOG_RECORD_FLAGS_DO_NOT_USE, + LogRecordFlags::LOG_RECORD_FLAGS_TRACE_FLAGS_MASK, + ]; + values + } + + fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor { + static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT; + descriptor.get(|| { + ::protobuf::reflect::EnumDescriptor::new_pb_name::("LogRecordFlags", file_descriptor_proto()) + }) + } +} + +impl ::std::marker::Copy for LogRecordFlags { +} + +impl ::std::default::Default for LogRecordFlags { + fn default() -> Self { + LogRecordFlags::LOG_RECORD_FLAGS_DO_NOT_USE + } +} + +impl ::protobuf::reflect::ProtobufValue for LogRecordFlags { + fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { + ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self)) + } +} + +static file_descriptor_proto_data: &'static [u8] = b"\ + \n&opentelemetry/proto/logs/v1/logs.proto\x12\x1bopentelemetry.proto.log\ + s.v1\x1a*opentelemetry/proto/common/v1/common.proto\x1a.opentelemetry/pr\ + oto/resource/v1/resource.proto\"Z\n\x08LogsData\x12N\n\rresource_logs\ + \x18\x01\x20\x03(\x0b2).opentelemetry.proto.logs.v1.ResourceLogsR\x0cres\ + ourceLogs\"\xc3\x01\n\x0cResourceLogs\x12E\n\x08resource\x18\x01\x20\x01\ + (\x0b2).opentelemetry.proto.resource.v1.ResourceR\x08resource\x12E\n\nsc\ + ope_logs\x18\x02\x20\x03(\x0b2&.opentelemetry.proto.logs.v1.ScopeLogsR\t\ + scopeLogs\x12\x1d\n\nschema_url\x18\x03\x20\x01(\tR\tschemaUrlJ\x06\x08\ + \xe8\x07\x10\xe9\x07\"\xbe\x01\n\tScopeLogs\x12I\n\x05scope\x18\x01\x20\ + \x01(\x0b23.opentelemetry.proto.common.v1.InstrumentationScopeR\x05scope\ + \x12G\n\x0blog_records\x18\x02\x20\x03(\x0b2&.opentelemetry.proto.logs.v\ + 1.LogRecordR\nlogRecords\x12\x1d\n\nschema_url\x18\x03\x20\x01(\tR\tsche\ + maUrl\"\xf3\x03\n\tLogRecord\x12$\n\x0etime_unix_nano\x18\x01\x20\x01(\ + \x06R\x0ctimeUnixNano\x125\n\x17observed_time_unix_nano\x18\x0b\x20\x01(\ + \x06R\x14observedTimeUnixNano\x12T\n\x0fseverity_number\x18\x02\x20\x01(\ + \x0e2+.opentelemetry.proto.logs.v1.SeverityNumberR\x0eseverityNumber\x12\ + #\n\rseverity_text\x18\x03\x20\x01(\tR\x0cseverityText\x12;\n\x04body\ + \x18\x05\x20\x01(\x0b2'.opentelemetry.proto.common.v1.AnyValueR\x04body\ + \x12G\n\nattributes\x18\x06\x20\x03(\x0b2'.opentelemetry.proto.common.v1\ + .KeyValueR\nattributes\x128\n\x18dropped_attributes_count\x18\x07\x20\ + \x01(\rR\x16droppedAttributesCount\x12\x14\n\x05flags\x18\x08\x20\x01(\ + \x07R\x05flags\x12\x19\n\x08trace_id\x18\t\x20\x01(\x0cR\x07traceId\x12\ + \x17\n\x07span_id\x18\n\x20\x01(\x0cR\x06spanIdJ\x04\x08\x04\x10\x05*\ + \xc3\x05\n\x0eSeverityNumber\x12\x1f\n\x1bSEVERITY_NUMBER_UNSPECIFIED\ + \x10\0\x12\x19\n\x15SEVERITY_NUMBER_TRACE\x10\x01\x12\x1a\n\x16SEVERITY_\ + NUMBER_TRACE2\x10\x02\x12\x1a\n\x16SEVERITY_NUMBER_TRACE3\x10\x03\x12\ + \x1a\n\x16SEVERITY_NUMBER_TRACE4\x10\x04\x12\x19\n\x15SEVERITY_NUMBER_DE\ + BUG\x10\x05\x12\x1a\n\x16SEVERITY_NUMBER_DEBUG2\x10\x06\x12\x1a\n\x16SEV\ + ERITY_NUMBER_DEBUG3\x10\x07\x12\x1a\n\x16SEVERITY_NUMBER_DEBUG4\x10\x08\ + \x12\x18\n\x14SEVERITY_NUMBER_INFO\x10\t\x12\x19\n\x15SEVERITY_NUMBER_IN\ + FO2\x10\n\x12\x19\n\x15SEVERITY_NUMBER_INFO3\x10\x0b\x12\x19\n\x15SEVERI\ + TY_NUMBER_INFO4\x10\x0c\x12\x18\n\x14SEVERITY_NUMBER_WARN\x10\r\x12\x19\ + \n\x15SEVERITY_NUMBER_WARN2\x10\x0e\x12\x19\n\x15SEVERITY_NUMBER_WARN3\ + \x10\x0f\x12\x19\n\x15SEVERITY_NUMBER_WARN4\x10\x10\x12\x19\n\x15SEVERIT\ + Y_NUMBER_ERROR\x10\x11\x12\x1a\n\x16SEVERITY_NUMBER_ERROR2\x10\x12\x12\ + \x1a\n\x16SEVERITY_NUMBER_ERROR3\x10\x13\x12\x1a\n\x16SEVERITY_NUMBER_ER\ + ROR4\x10\x14\x12\x19\n\x15SEVERITY_NUMBER_FATAL\x10\x15\x12\x1a\n\x16SEV\ + ERITY_NUMBER_FATAL2\x10\x16\x12\x1a\n\x16SEVERITY_NUMBER_FATAL3\x10\x17\ + \x12\x1a\n\x16SEVERITY_NUMBER_FATAL4\x10\x18*Y\n\x0eLogRecordFlags\x12\ + \x1f\n\x1bLOG_RECORD_FLAGS_DO_NOT_USE\x10\0\x12&\n!LOG_RECORD_FLAGS_TRAC\ + E_FLAGS_MASK\x10\xff\x01Bs\n\x1eio.opentelemetry.proto.logs.v1B\tLogsPro\ + toP\x01Z&go.opentelemetry.io/proto/otlp/logs/v1\xaa\x02\x1bOpenTelemetry\ + .Proto.Logs.V1b\x06proto3\ +"; + +static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT; + +fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto { + ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap() +} + +pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto { + file_descriptor_proto_lazy.get(|| { + parse_descriptor_proto() + }) +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/logs_service_grpc.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/logs_service_grpc.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/logs_service_grpc.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/logs_service_grpc.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,69 @@ +// This file is generated. Do not edit +// @generated + +// https://github.com/Manishearth/rust-clippy/issues/702 +#![allow(unknown_lints)] +#![allow(clippy::all)] + +#![allow(box_pointers)] +#![allow(dead_code)] +#![allow(missing_docs)] +#![allow(non_camel_case_types)] +#![allow(non_snake_case)] +#![allow(non_upper_case_globals)] +#![allow(trivial_casts)] +#![allow(unsafe_code)] +#![allow(unused_imports)] +#![allow(unused_results)] + +const METHOD_LOGS_SERVICE_EXPORT: ::grpcio::Method = ::grpcio::Method { + ty: ::grpcio::MethodType::Unary, + name: "/opentelemetry.proto.collector.logs.v1.LogsService/Export", + req_mar: ::grpcio::Marshaller { ser: ::grpcio::pb_ser, de: ::grpcio::pb_de }, + resp_mar: ::grpcio::Marshaller { ser: ::grpcio::pb_ser, de: ::grpcio::pb_de }, +}; + +#[derive(Clone)] +pub struct LogsServiceClient { + client: ::grpcio::Client, +} + +impl LogsServiceClient { + pub fn new(channel: ::grpcio::Channel) -> Self { + LogsServiceClient { + client: ::grpcio::Client::new(channel), + } + } + + pub fn export_opt(&self, req: &super::logs_service::ExportLogsServiceRequest, opt: ::grpcio::CallOption) -> ::grpcio::Result { + self.client.unary_call(&METHOD_LOGS_SERVICE_EXPORT, req, opt) + } + + pub fn export(&self, req: &super::logs_service::ExportLogsServiceRequest) -> ::grpcio::Result { + self.export_opt(req, ::grpcio::CallOption::default()) + } + + pub fn export_async_opt(&self, req: &super::logs_service::ExportLogsServiceRequest, opt: ::grpcio::CallOption) -> ::grpcio::Result<::grpcio::ClientUnaryReceiver> { + self.client.unary_call_async(&METHOD_LOGS_SERVICE_EXPORT, req, opt) + } + + pub fn export_async(&self, req: &super::logs_service::ExportLogsServiceRequest) -> ::grpcio::Result<::grpcio::ClientUnaryReceiver> { + self.export_async_opt(req, ::grpcio::CallOption::default()) + } + pub fn spawn(&self, f: F) where F: ::futures::Future + Send + 'static { + self.client.spawn(f) + } +} + +pub trait LogsService { + fn export(&mut self, ctx: ::grpcio::RpcContext, req: super::logs_service::ExportLogsServiceRequest, sink: ::grpcio::UnarySink); +} + +pub fn create_logs_service(s: S) -> ::grpcio::Service { + let mut builder = ::grpcio::ServiceBuilder::new(); + let mut instance = s; + builder = builder.add_unary_handler(&METHOD_LOGS_SERVICE_EXPORT, move |ctx, req, resp| { + instance.export(ctx, req, resp) + }); + builder.build() +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/logs_service.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/logs_service.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/logs_service.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/logs_service.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,596 @@ +// This file is generated by rust-protobuf 2.28.0. Do not edit +// @generated + +// https://github.com/rust-lang/rust-clippy/issues/702 +#![allow(unknown_lints)] +#![allow(clippy::all)] + +#![allow(unused_attributes)] +#![cfg_attr(rustfmt, rustfmt::skip)] + +#![allow(box_pointers)] +#![allow(dead_code)] +#![allow(missing_docs)] +#![allow(non_camel_case_types)] +#![allow(non_snake_case)] +#![allow(non_upper_case_globals)] +#![allow(trivial_casts)] +#![allow(unused_imports)] +#![allow(unused_results)] +//! Generated file from `opentelemetry/proto/collector/logs/v1/logs_service.proto` + +/// Generated files are compatible only with the same version +/// of protobuf runtime. +// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_28_0; + +#[derive(PartialEq,Clone,Default)] +#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] +pub struct ExportLogsServiceRequest { + // message fields + pub resource_logs: ::protobuf::RepeatedField, + // special fields + #[cfg_attr(feature = "with-serde", serde(skip))] + pub unknown_fields: ::protobuf::UnknownFields, + #[cfg_attr(feature = "with-serde", serde(skip))] + pub cached_size: ::protobuf::CachedSize, +} + +impl<'a> ::std::default::Default for &'a ExportLogsServiceRequest { + fn default() -> &'a ExportLogsServiceRequest { + ::default_instance() + } +} + +impl ExportLogsServiceRequest { + pub fn new() -> ExportLogsServiceRequest { + ::std::default::Default::default() + } + + // repeated .opentelemetry.proto.logs.v1.ResourceLogs resource_logs = 1; + + + pub fn get_resource_logs(&self) -> &[super::logs::ResourceLogs] { + &self.resource_logs + } + pub fn clear_resource_logs(&mut self) { + self.resource_logs.clear(); + } + + // Param is passed by value, moved + pub fn set_resource_logs(&mut self, v: ::protobuf::RepeatedField) { + self.resource_logs = v; + } + + // Mutable pointer to the field. + pub fn mut_resource_logs(&mut self) -> &mut ::protobuf::RepeatedField { + &mut self.resource_logs + } + + // Take field + pub fn take_resource_logs(&mut self) -> ::protobuf::RepeatedField { + ::std::mem::replace(&mut self.resource_logs, ::protobuf::RepeatedField::new()) + } +} + +impl ::protobuf::Message for ExportLogsServiceRequest { + fn is_initialized(&self) -> bool { + for v in &self.resource_logs { + if !v.is_initialized() { + return false; + } + }; + true + } + + fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> { + while !is.eof()? { + let (field_number, wire_type) = is.read_tag_unpack()?; + match field_number { + 1 => { + ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.resource_logs)?; + }, + _ => { + ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; + }, + }; + } + ::std::result::Result::Ok(()) + } + + // Compute sizes of nested messages + #[allow(unused_variables)] + fn compute_size(&self) -> u32 { + let mut my_size = 0; + for value in &self.resource_logs { + let len = value.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; + }; + my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); + self.cached_size.set(my_size); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> { + for v in &self.resource_logs { + os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?; + os.write_raw_varint32(v.get_cached_size())?; + v.write_to_with_cached_sizes(os)?; + }; + os.write_unknown_fields(self.get_unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn get_cached_size(&self) -> u32 { + self.cached_size.get() + } + + fn get_unknown_fields(&self) -> &::protobuf::UnknownFields { + &self.unknown_fields + } + + fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields { + &mut self.unknown_fields + } + + fn as_any(&self) -> &dyn (::std::any::Any) { + self as &dyn (::std::any::Any) + } + fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) { + self as &mut dyn (::std::any::Any) + } + fn into_any(self: ::std::boxed::Box) -> ::std::boxed::Box { + self + } + + fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor { + Self::descriptor_static() + } + + fn new() -> ExportLogsServiceRequest { + ExportLogsServiceRequest::new() + } + + fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT; + descriptor.get(|| { + let mut fields = ::std::vec::Vec::new(); + fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( + "resource_logs", + |m: &ExportLogsServiceRequest| { &m.resource_logs }, + |m: &mut ExportLogsServiceRequest| { &mut m.resource_logs }, + )); + ::protobuf::reflect::MessageDescriptor::new_pb_name::( + "ExportLogsServiceRequest", + fields, + file_descriptor_proto() + ) + }) + } + + fn default_instance() -> &'static ExportLogsServiceRequest { + static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; + instance.get(ExportLogsServiceRequest::new) + } +} + +impl ::protobuf::Clear for ExportLogsServiceRequest { + fn clear(&mut self) { + self.resource_logs.clear(); + self.unknown_fields.clear(); + } +} + +impl ::std::fmt::Debug for ExportLogsServiceRequest { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for ExportLogsServiceRequest { + fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { + ::protobuf::reflect::ReflectValueRef::Message(self) + } +} + +#[derive(PartialEq,Clone,Default)] +#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] +pub struct ExportLogsServiceResponse { + // message fields + pub partial_success: ::protobuf::SingularPtrField, + // special fields + #[cfg_attr(feature = "with-serde", serde(skip))] + pub unknown_fields: ::protobuf::UnknownFields, + #[cfg_attr(feature = "with-serde", serde(skip))] + pub cached_size: ::protobuf::CachedSize, +} + +impl<'a> ::std::default::Default for &'a ExportLogsServiceResponse { + fn default() -> &'a ExportLogsServiceResponse { + ::default_instance() + } +} + +impl ExportLogsServiceResponse { + pub fn new() -> ExportLogsServiceResponse { + ::std::default::Default::default() + } + + // .opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess partial_success = 1; + + + pub fn get_partial_success(&self) -> &ExportLogsPartialSuccess { + self.partial_success.as_ref().unwrap_or_else(|| ::default_instance()) + } + pub fn clear_partial_success(&mut self) { + self.partial_success.clear(); + } + + pub fn has_partial_success(&self) -> bool { + self.partial_success.is_some() + } + + // Param is passed by value, moved + pub fn set_partial_success(&mut self, v: ExportLogsPartialSuccess) { + self.partial_success = ::protobuf::SingularPtrField::some(v); + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_partial_success(&mut self) -> &mut ExportLogsPartialSuccess { + if self.partial_success.is_none() { + self.partial_success.set_default(); + } + self.partial_success.as_mut().unwrap() + } + + // Take field + pub fn take_partial_success(&mut self) -> ExportLogsPartialSuccess { + self.partial_success.take().unwrap_or_else(|| ExportLogsPartialSuccess::new()) + } +} + +impl ::protobuf::Message for ExportLogsServiceResponse { + fn is_initialized(&self) -> bool { + for v in &self.partial_success { + if !v.is_initialized() { + return false; + } + }; + true + } + + fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> { + while !is.eof()? { + let (field_number, wire_type) = is.read_tag_unpack()?; + match field_number { + 1 => { + ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.partial_success)?; + }, + _ => { + ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; + }, + }; + } + ::std::result::Result::Ok(()) + } + + // Compute sizes of nested messages + #[allow(unused_variables)] + fn compute_size(&self) -> u32 { + let mut my_size = 0; + if let Some(ref v) = self.partial_success.as_ref() { + let len = v.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; + } + my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); + self.cached_size.set(my_size); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> { + if let Some(ref v) = self.partial_success.as_ref() { + os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?; + os.write_raw_varint32(v.get_cached_size())?; + v.write_to_with_cached_sizes(os)?; + } + os.write_unknown_fields(self.get_unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn get_cached_size(&self) -> u32 { + self.cached_size.get() + } + + fn get_unknown_fields(&self) -> &::protobuf::UnknownFields { + &self.unknown_fields + } + + fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields { + &mut self.unknown_fields + } + + fn as_any(&self) -> &dyn (::std::any::Any) { + self as &dyn (::std::any::Any) + } + fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) { + self as &mut dyn (::std::any::Any) + } + fn into_any(self: ::std::boxed::Box) -> ::std::boxed::Box { + self + } + + fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor { + Self::descriptor_static() + } + + fn new() -> ExportLogsServiceResponse { + ExportLogsServiceResponse::new() + } + + fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT; + descriptor.get(|| { + let mut fields = ::std::vec::Vec::new(); + fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( + "partial_success", + |m: &ExportLogsServiceResponse| { &m.partial_success }, + |m: &mut ExportLogsServiceResponse| { &mut m.partial_success }, + )); + ::protobuf::reflect::MessageDescriptor::new_pb_name::( + "ExportLogsServiceResponse", + fields, + file_descriptor_proto() + ) + }) + } + + fn default_instance() -> &'static ExportLogsServiceResponse { + static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; + instance.get(ExportLogsServiceResponse::new) + } +} + +impl ::protobuf::Clear for ExportLogsServiceResponse { + fn clear(&mut self) { + self.partial_success.clear(); + self.unknown_fields.clear(); + } +} + +impl ::std::fmt::Debug for ExportLogsServiceResponse { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for ExportLogsServiceResponse { + fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { + ::protobuf::reflect::ReflectValueRef::Message(self) + } +} + +#[derive(PartialEq,Clone,Default)] +#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] +pub struct ExportLogsPartialSuccess { + // message fields + pub rejected_log_records: i64, + pub error_message: ::std::string::String, + // special fields + #[cfg_attr(feature = "with-serde", serde(skip))] + pub unknown_fields: ::protobuf::UnknownFields, + #[cfg_attr(feature = "with-serde", serde(skip))] + pub cached_size: ::protobuf::CachedSize, +} + +impl<'a> ::std::default::Default for &'a ExportLogsPartialSuccess { + fn default() -> &'a ExportLogsPartialSuccess { + ::default_instance() + } +} + +impl ExportLogsPartialSuccess { + pub fn new() -> ExportLogsPartialSuccess { + ::std::default::Default::default() + } + + // int64 rejected_log_records = 1; + + + pub fn get_rejected_log_records(&self) -> i64 { + self.rejected_log_records + } + pub fn clear_rejected_log_records(&mut self) { + self.rejected_log_records = 0; + } + + // Param is passed by value, moved + pub fn set_rejected_log_records(&mut self, v: i64) { + self.rejected_log_records = v; + } + + // string error_message = 2; + + + pub fn get_error_message(&self) -> &str { + &self.error_message + } + pub fn clear_error_message(&mut self) { + self.error_message.clear(); + } + + // Param is passed by value, moved + pub fn set_error_message(&mut self, v: ::std::string::String) { + self.error_message = v; + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_error_message(&mut self) -> &mut ::std::string::String { + &mut self.error_message + } + + // Take field + pub fn take_error_message(&mut self) -> ::std::string::String { + ::std::mem::replace(&mut self.error_message, ::std::string::String::new()) + } +} + +impl ::protobuf::Message for ExportLogsPartialSuccess { + fn is_initialized(&self) -> bool { + true + } + + fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> { + while !is.eof()? { + let (field_number, wire_type) = is.read_tag_unpack()?; + match field_number { + 1 => { + if wire_type != ::protobuf::wire_format::WireTypeVarint { + return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); + } + let tmp = is.read_int64()?; + self.rejected_log_records = tmp; + }, + 2 => { + ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.error_message)?; + }, + _ => { + ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; + }, + }; + } + ::std::result::Result::Ok(()) + } + + // Compute sizes of nested messages + #[allow(unused_variables)] + fn compute_size(&self) -> u32 { + let mut my_size = 0; + if self.rejected_log_records != 0 { + my_size += ::protobuf::rt::value_size(1, self.rejected_log_records, ::protobuf::wire_format::WireTypeVarint); + } + if !self.error_message.is_empty() { + my_size += ::protobuf::rt::string_size(2, &self.error_message); + } + my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); + self.cached_size.set(my_size); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> { + if self.rejected_log_records != 0 { + os.write_int64(1, self.rejected_log_records)?; + } + if !self.error_message.is_empty() { + os.write_string(2, &self.error_message)?; + } + os.write_unknown_fields(self.get_unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn get_cached_size(&self) -> u32 { + self.cached_size.get() + } + + fn get_unknown_fields(&self) -> &::protobuf::UnknownFields { + &self.unknown_fields + } + + fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields { + &mut self.unknown_fields + } + + fn as_any(&self) -> &dyn (::std::any::Any) { + self as &dyn (::std::any::Any) + } + fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) { + self as &mut dyn (::std::any::Any) + } + fn into_any(self: ::std::boxed::Box) -> ::std::boxed::Box { + self + } + + fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor { + Self::descriptor_static() + } + + fn new() -> ExportLogsPartialSuccess { + ExportLogsPartialSuccess::new() + } + + fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT; + descriptor.get(|| { + let mut fields = ::std::vec::Vec::new(); + fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>( + "rejected_log_records", + |m: &ExportLogsPartialSuccess| { &m.rejected_log_records }, + |m: &mut ExportLogsPartialSuccess| { &mut m.rejected_log_records }, + )); + fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( + "error_message", + |m: &ExportLogsPartialSuccess| { &m.error_message }, + |m: &mut ExportLogsPartialSuccess| { &mut m.error_message }, + )); + ::protobuf::reflect::MessageDescriptor::new_pb_name::( + "ExportLogsPartialSuccess", + fields, + file_descriptor_proto() + ) + }) + } + + fn default_instance() -> &'static ExportLogsPartialSuccess { + static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; + instance.get(ExportLogsPartialSuccess::new) + } +} + +impl ::protobuf::Clear for ExportLogsPartialSuccess { + fn clear(&mut self) { + self.rejected_log_records = 0; + self.error_message.clear(); + self.unknown_fields.clear(); + } +} + +impl ::std::fmt::Debug for ExportLogsPartialSuccess { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for ExportLogsPartialSuccess { + fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { + ::protobuf::reflect::ReflectValueRef::Message(self) + } +} + +static file_descriptor_proto_data: &'static [u8] = b"\ + \n8opentelemetry/proto/collector/logs/v1/logs_service.proto\x12%opentele\ + metry.proto.collector.logs.v1\x1a&opentelemetry/proto/logs/v1/logs.proto\ + \"j\n\x18ExportLogsServiceRequest\x12N\n\rresource_logs\x18\x01\x20\x03(\ + \x0b2).opentelemetry.proto.logs.v1.ResourceLogsR\x0cresourceLogs\"\x85\ + \x01\n\x19ExportLogsServiceResponse\x12h\n\x0fpartial_success\x18\x01\ + \x20\x01(\x0b2?.opentelemetry.proto.collector.logs.v1.ExportLogsPartialS\ + uccessR\x0epartialSuccess\"q\n\x18ExportLogsPartialSuccess\x120\n\x14rej\ + ected_log_records\x18\x01\x20\x01(\x03R\x12rejectedLogRecords\x12#\n\rer\ + ror_message\x18\x02\x20\x01(\tR\x0cerrorMessage2\x9d\x01\n\x0bLogsServic\ + e\x12\x8d\x01\n\x06Export\x12?.opentelemetry.proto.collector.logs.v1.Exp\ + ortLogsServiceRequest\x1a@.opentelemetry.proto.collector.logs.v1.ExportL\ + ogsServiceResponse\"\0B\x98\x01\n(io.opentelemetry.proto.collector.logs.\ + v1B\x10LogsServiceProtoP\x01Z0go.opentelemetry.io/proto/otlp/collector/l\ + ogs/v1\xaa\x02%OpenTelemetry.Proto.Collector.Logs.V1b\x06proto3\ +"; + +static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT; + +fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto { + ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap() +} + +pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto { + file_descriptor_proto_lazy.get(|| { + parse_descriptor_proto() + }) +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/metrics.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/metrics.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/metrics.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/metrics.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -// This file is generated by rust-protobuf 2.27.1. Do not edit +// This file is generated by rust-protobuf 2.28.0. Do not edit // @generated // https://github.com/rust-lang/rust-clippy/issues/702 @@ -21,7 +21,7 @@ /// Generated files are compatible only with the same version /// of protobuf runtime. -// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_27_1; +// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_28_0; #[derive(PartialEq,Clone,Default)] #[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] @@ -197,7 +197,7 @@ pub struct ResourceMetrics { // message fields pub resource: ::protobuf::SingularPtrField, - pub instrumentation_library_metrics: ::protobuf::RepeatedField, + pub scope_metrics: ::protobuf::RepeatedField, pub schema_url: ::std::string::String, // special fields #[cfg_attr(feature = "with-serde", serde(skip))] @@ -250,29 +250,29 @@ self.resource.take().unwrap_or_else(|| super::resource::Resource::new()) } - // repeated .opentelemetry.proto.metrics.v1.InstrumentationLibraryMetrics instrumentation_library_metrics = 2; + // repeated .opentelemetry.proto.metrics.v1.ScopeMetrics scope_metrics = 2; - pub fn get_instrumentation_library_metrics(&self) -> &[InstrumentationLibraryMetrics] { - &self.instrumentation_library_metrics + pub fn get_scope_metrics(&self) -> &[ScopeMetrics] { + &self.scope_metrics } - pub fn clear_instrumentation_library_metrics(&mut self) { - self.instrumentation_library_metrics.clear(); + pub fn clear_scope_metrics(&mut self) { + self.scope_metrics.clear(); } // Param is passed by value, moved - pub fn set_instrumentation_library_metrics(&mut self, v: ::protobuf::RepeatedField) { - self.instrumentation_library_metrics = v; + pub fn set_scope_metrics(&mut self, v: ::protobuf::RepeatedField) { + self.scope_metrics = v; } // Mutable pointer to the field. - pub fn mut_instrumentation_library_metrics(&mut self) -> &mut ::protobuf::RepeatedField { - &mut self.instrumentation_library_metrics + pub fn mut_scope_metrics(&mut self) -> &mut ::protobuf::RepeatedField { + &mut self.scope_metrics } // Take field - pub fn take_instrumentation_library_metrics(&mut self) -> ::protobuf::RepeatedField { - ::std::mem::replace(&mut self.instrumentation_library_metrics, ::protobuf::RepeatedField::new()) + pub fn take_scope_metrics(&mut self) -> ::protobuf::RepeatedField { + ::std::mem::replace(&mut self.scope_metrics, ::protobuf::RepeatedField::new()) } // string schema_url = 3; @@ -309,7 +309,7 @@ return false; } }; - for v in &self.instrumentation_library_metrics { + for v in &self.scope_metrics { if !v.is_initialized() { return false; } @@ -325,7 +325,7 @@ ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.resource)?; }, 2 => { - ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.instrumentation_library_metrics)?; + ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.scope_metrics)?; }, 3 => { ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.schema_url)?; @@ -346,7 +346,7 @@ let len = v.compute_size(); my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; } - for value in &self.instrumentation_library_metrics { + for value in &self.scope_metrics { let len = value.compute_size(); my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; }; @@ -364,7 +364,7 @@ os.write_raw_varint32(v.get_cached_size())?; v.write_to_with_cached_sizes(os)?; } - for v in &self.instrumentation_library_metrics { + for v in &self.scope_metrics { os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?; os.write_raw_varint32(v.get_cached_size())?; v.write_to_with_cached_sizes(os)?; @@ -415,10 +415,10 @@ |m: &ResourceMetrics| { &m.resource }, |m: &mut ResourceMetrics| { &mut m.resource }, )); - fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( - "instrumentation_library_metrics", - |m: &ResourceMetrics| { &m.instrumentation_library_metrics }, - |m: &mut ResourceMetrics| { &mut m.instrumentation_library_metrics }, + fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( + "scope_metrics", + |m: &ResourceMetrics| { &m.scope_metrics }, + |m: &mut ResourceMetrics| { &mut m.scope_metrics }, )); fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( "schema_url", @@ -442,7 +442,7 @@ impl ::protobuf::Clear for ResourceMetrics { fn clear(&mut self) { self.resource.clear(); - self.instrumentation_library_metrics.clear(); + self.scope_metrics.clear(); self.schema_url.clear(); self.unknown_fields.clear(); } @@ -462,9 +462,9 @@ #[derive(PartialEq,Clone,Default)] #[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] -pub struct InstrumentationLibraryMetrics { +pub struct ScopeMetrics { // message fields - pub instrumentation_library: ::protobuf::SingularPtrField, + pub scope: ::protobuf::SingularPtrField, pub metrics: ::protobuf::RepeatedField, pub schema_url: ::std::string::String, // special fields @@ -474,48 +474,48 @@ pub cached_size: ::protobuf::CachedSize, } -impl<'a> ::std::default::Default for &'a InstrumentationLibraryMetrics { - fn default() -> &'a InstrumentationLibraryMetrics { - ::default_instance() +impl<'a> ::std::default::Default for &'a ScopeMetrics { + fn default() -> &'a ScopeMetrics { + ::default_instance() } } -impl InstrumentationLibraryMetrics { - pub fn new() -> InstrumentationLibraryMetrics { +impl ScopeMetrics { + pub fn new() -> ScopeMetrics { ::std::default::Default::default() } - // .opentelemetry.proto.common.v1.InstrumentationLibrary instrumentation_library = 1; + // .opentelemetry.proto.common.v1.InstrumentationScope scope = 1; - pub fn get_instrumentation_library(&self) -> &super::common::InstrumentationLibrary { - self.instrumentation_library.as_ref().unwrap_or_else(|| ::default_instance()) + pub fn get_scope(&self) -> &super::common::InstrumentationScope { + self.scope.as_ref().unwrap_or_else(|| ::default_instance()) } - pub fn clear_instrumentation_library(&mut self) { - self.instrumentation_library.clear(); + pub fn clear_scope(&mut self) { + self.scope.clear(); } - pub fn has_instrumentation_library(&self) -> bool { - self.instrumentation_library.is_some() + pub fn has_scope(&self) -> bool { + self.scope.is_some() } // Param is passed by value, moved - pub fn set_instrumentation_library(&mut self, v: super::common::InstrumentationLibrary) { - self.instrumentation_library = ::protobuf::SingularPtrField::some(v); + pub fn set_scope(&mut self, v: super::common::InstrumentationScope) { + self.scope = ::protobuf::SingularPtrField::some(v); } // Mutable pointer to the field. // If field is not initialized, it is initialized with default value first. - pub fn mut_instrumentation_library(&mut self) -> &mut super::common::InstrumentationLibrary { - if self.instrumentation_library.is_none() { - self.instrumentation_library.set_default(); + pub fn mut_scope(&mut self) -> &mut super::common::InstrumentationScope { + if self.scope.is_none() { + self.scope.set_default(); } - self.instrumentation_library.as_mut().unwrap() + self.scope.as_mut().unwrap() } // Take field - pub fn take_instrumentation_library(&mut self) -> super::common::InstrumentationLibrary { - self.instrumentation_library.take().unwrap_or_else(|| super::common::InstrumentationLibrary::new()) + pub fn take_scope(&mut self) -> super::common::InstrumentationScope { + self.scope.take().unwrap_or_else(|| super::common::InstrumentationScope::new()) } // repeated .opentelemetry.proto.metrics.v1.Metric metrics = 2; @@ -570,9 +570,9 @@ } } -impl ::protobuf::Message for InstrumentationLibraryMetrics { +impl ::protobuf::Message for ScopeMetrics { fn is_initialized(&self) -> bool { - for v in &self.instrumentation_library { + for v in &self.scope { if !v.is_initialized() { return false; } @@ -590,7 +590,7 @@ let (field_number, wire_type) = is.read_tag_unpack()?; match field_number { 1 => { - ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.instrumentation_library)?; + ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.scope)?; }, 2 => { ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.metrics)?; @@ -610,7 +610,7 @@ #[allow(unused_variables)] fn compute_size(&self) -> u32 { let mut my_size = 0; - if let Some(ref v) = self.instrumentation_library.as_ref() { + if let Some(ref v) = self.scope.as_ref() { let len = v.compute_size(); my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; } @@ -627,7 +627,7 @@ } fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> { - if let Some(ref v) = self.instrumentation_library.as_ref() { + if let Some(ref v) = self.scope.as_ref() { os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?; os.write_raw_varint32(v.get_cached_size())?; v.write_to_with_cached_sizes(os)?; @@ -670,59 +670,59 @@ Self::descriptor_static() } - fn new() -> InstrumentationLibraryMetrics { - InstrumentationLibraryMetrics::new() + fn new() -> ScopeMetrics { + ScopeMetrics::new() } fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT; descriptor.get(|| { let mut fields = ::std::vec::Vec::new(); - fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( - "instrumentation_library", - |m: &InstrumentationLibraryMetrics| { &m.instrumentation_library }, - |m: &mut InstrumentationLibraryMetrics| { &mut m.instrumentation_library }, + fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( + "scope", + |m: &ScopeMetrics| { &m.scope }, + |m: &mut ScopeMetrics| { &mut m.scope }, )); fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( "metrics", - |m: &InstrumentationLibraryMetrics| { &m.metrics }, - |m: &mut InstrumentationLibraryMetrics| { &mut m.metrics }, + |m: &ScopeMetrics| { &m.metrics }, + |m: &mut ScopeMetrics| { &mut m.metrics }, )); fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( "schema_url", - |m: &InstrumentationLibraryMetrics| { &m.schema_url }, - |m: &mut InstrumentationLibraryMetrics| { &mut m.schema_url }, + |m: &ScopeMetrics| { &m.schema_url }, + |m: &mut ScopeMetrics| { &mut m.schema_url }, )); - ::protobuf::reflect::MessageDescriptor::new_pb_name::( - "InstrumentationLibraryMetrics", + ::protobuf::reflect::MessageDescriptor::new_pb_name::( + "ScopeMetrics", fields, file_descriptor_proto() ) }) } - fn default_instance() -> &'static InstrumentationLibraryMetrics { - static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; - instance.get(InstrumentationLibraryMetrics::new) + fn default_instance() -> &'static ScopeMetrics { + static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; + instance.get(ScopeMetrics::new) } } -impl ::protobuf::Clear for InstrumentationLibraryMetrics { +impl ::protobuf::Clear for ScopeMetrics { fn clear(&mut self) { - self.instrumentation_library.clear(); + self.scope.clear(); self.metrics.clear(); self.schema_url.clear(); self.unknown_fields.clear(); } } -impl ::std::fmt::Debug for InstrumentationLibraryMetrics { +impl ::std::fmt::Debug for ScopeMetrics { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { ::protobuf::text_format::fmt(self, f) } } -impl ::protobuf::reflect::ProtobufValue for InstrumentationLibraryMetrics { +impl ::protobuf::reflect::ProtobufValue for ScopeMetrics { fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { ::protobuf::reflect::ReflectValueRef::Message(self) } @@ -2776,11 +2776,14 @@ pub start_time_unix_nano: u64, pub time_unix_nano: u64, pub count: u64, - pub sum: f64, pub bucket_counts: ::std::vec::Vec, pub explicit_bounds: ::std::vec::Vec, pub exemplars: ::protobuf::RepeatedField, pub flags: u32, + // message oneof groups + pub _sum: ::std::option::Option, + pub _min: ::std::option::Option, + pub _max: ::std::option::Option, // special fields #[cfg_attr(feature = "with-serde", serde(skip))] pub unknown_fields: ::protobuf::UnknownFields, @@ -2794,6 +2797,24 @@ } } +#[derive(Clone,PartialEq,Debug)] +#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] +pub enum HistogramDataPoint_oneof__sum { + sum(f64), +} + +#[derive(Clone,PartialEq,Debug)] +#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] +pub enum HistogramDataPoint_oneof__min { + min(f64), +} + +#[derive(Clone,PartialEq,Debug)] +#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] +pub enum HistogramDataPoint_oneof__max { + max(f64), +} + impl HistogramDataPoint { pub fn new() -> HistogramDataPoint { ::std::default::Default::default() @@ -2873,15 +2894,25 @@ pub fn get_sum(&self) -> f64 { - self.sum + match self._sum { + ::std::option::Option::Some(HistogramDataPoint_oneof__sum::sum(v)) => v, + _ => 0., + } } pub fn clear_sum(&mut self) { - self.sum = 0.; + self._sum = ::std::option::Option::None; + } + + pub fn has_sum(&self) -> bool { + match self._sum { + ::std::option::Option::Some(HistogramDataPoint_oneof__sum::sum(..)) => true, + _ => false, + } } // Param is passed by value, moved pub fn set_sum(&mut self, v: f64) { - self.sum = v; + self._sum = ::std::option::Option::Some(HistogramDataPoint_oneof__sum::sum(v)) } // repeated fixed64 bucket_counts = 6; @@ -2973,6 +3004,56 @@ pub fn set_flags(&mut self, v: u32) { self.flags = v; } + + // double min = 11; + + + pub fn get_min(&self) -> f64 { + match self._min { + ::std::option::Option::Some(HistogramDataPoint_oneof__min::min(v)) => v, + _ => 0., + } + } + pub fn clear_min(&mut self) { + self._min = ::std::option::Option::None; + } + + pub fn has_min(&self) -> bool { + match self._min { + ::std::option::Option::Some(HistogramDataPoint_oneof__min::min(..)) => true, + _ => false, + } + } + + // Param is passed by value, moved + pub fn set_min(&mut self, v: f64) { + self._min = ::std::option::Option::Some(HistogramDataPoint_oneof__min::min(v)) + } + + // double max = 12; + + + pub fn get_max(&self) -> f64 { + match self._max { + ::std::option::Option::Some(HistogramDataPoint_oneof__max::max(v)) => v, + _ => 0., + } + } + pub fn clear_max(&mut self) { + self._max = ::std::option::Option::None; + } + + pub fn has_max(&self) -> bool { + match self._max { + ::std::option::Option::Some(HistogramDataPoint_oneof__max::max(..)) => true, + _ => false, + } + } + + // Param is passed by value, moved + pub fn set_max(&mut self, v: f64) { + self._max = ::std::option::Option::Some(HistogramDataPoint_oneof__max::max(v)) + } } impl ::protobuf::Message for HistogramDataPoint { @@ -3022,8 +3103,7 @@ if wire_type != ::protobuf::wire_format::WireTypeFixed64 { return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); } - let tmp = is.read_double()?; - self.sum = tmp; + self._sum = ::std::option::Option::Some(HistogramDataPoint_oneof__sum::sum(is.read_double()?)); }, 6 => { ::protobuf::rt::read_repeated_fixed64_into(wire_type, is, &mut self.bucket_counts)?; @@ -3041,6 +3121,18 @@ let tmp = is.read_uint32()?; self.flags = tmp; }, + 11 => { + if wire_type != ::protobuf::wire_format::WireTypeFixed64 { + return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); + } + self._min = ::std::option::Option::Some(HistogramDataPoint_oneof__min::min(is.read_double()?)); + }, + 12 => { + if wire_type != ::protobuf::wire_format::WireTypeFixed64 { + return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); + } + self._max = ::std::option::Option::Some(HistogramDataPoint_oneof__max::max(is.read_double()?)); + }, _ => { ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; }, @@ -3066,9 +3158,6 @@ if self.count != 0 { my_size += 9; } - if self.sum != 0. { - my_size += 9; - } my_size += 9 * self.bucket_counts.len() as u32; my_size += 9 * self.explicit_bounds.len() as u32; for value in &self.exemplars { @@ -3078,6 +3167,27 @@ if self.flags != 0 { my_size += ::protobuf::rt::value_size(10, self.flags, ::protobuf::wire_format::WireTypeVarint); } + if let ::std::option::Option::Some(ref v) = self._sum { + match v { + &HistogramDataPoint_oneof__sum::sum(v) => { + my_size += 9; + }, + }; + } + if let ::std::option::Option::Some(ref v) = self._min { + match v { + &HistogramDataPoint_oneof__min::min(v) => { + my_size += 9; + }, + }; + } + if let ::std::option::Option::Some(ref v) = self._max { + match v { + &HistogramDataPoint_oneof__max::max(v) => { + my_size += 9; + }, + }; + } my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); self.cached_size.set(my_size); my_size @@ -3098,9 +3208,6 @@ if self.count != 0 { os.write_fixed64(4, self.count)?; } - if self.sum != 0. { - os.write_double(5, self.sum)?; - } for v in &self.bucket_counts { os.write_fixed64(6, *v)?; }; @@ -3115,6 +3222,27 @@ if self.flags != 0 { os.write_uint32(10, self.flags)?; } + if let ::std::option::Option::Some(ref v) = self._sum { + match v { + &HistogramDataPoint_oneof__sum::sum(v) => { + os.write_double(5, v)?; + }, + }; + } + if let ::std::option::Option::Some(ref v) = self._min { + match v { + &HistogramDataPoint_oneof__min::min(v) => { + os.write_double(11, v)?; + }, + }; + } + if let ::std::option::Option::Some(ref v) = self._max { + match v { + &HistogramDataPoint_oneof__max::max(v) => { + os.write_double(12, v)?; + }, + }; + } os.write_unknown_fields(self.get_unknown_fields())?; ::std::result::Result::Ok(()) } @@ -3173,10 +3301,10 @@ |m: &HistogramDataPoint| { &m.count }, |m: &mut HistogramDataPoint| { &mut m.count }, )); - fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>( + fields.push(::protobuf::reflect::accessor::make_singular_f64_accessor::<_>( "sum", - |m: &HistogramDataPoint| { &m.sum }, - |m: &mut HistogramDataPoint| { &mut m.sum }, + HistogramDataPoint::has_sum, + HistogramDataPoint::get_sum, )); fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeFixed64>( "bucket_counts", @@ -3198,6 +3326,16 @@ |m: &HistogramDataPoint| { &m.flags }, |m: &mut HistogramDataPoint| { &mut m.flags }, )); + fields.push(::protobuf::reflect::accessor::make_singular_f64_accessor::<_>( + "min", + HistogramDataPoint::has_min, + HistogramDataPoint::get_min, + )); + fields.push(::protobuf::reflect::accessor::make_singular_f64_accessor::<_>( + "max", + HistogramDataPoint::has_max, + HistogramDataPoint::get_max, + )); ::protobuf::reflect::MessageDescriptor::new_pb_name::( "HistogramDataPoint", fields, @@ -3218,11 +3356,13 @@ self.start_time_unix_nano = 0; self.time_unix_nano = 0; self.count = 0; - self.sum = 0.; + self._sum = ::std::option::Option::None; self.bucket_counts.clear(); self.explicit_bounds.clear(); self.exemplars.clear(); self.flags = 0; + self._min = ::std::option::Option::None; + self._max = ::std::option::Option::None; self.unknown_fields.clear(); } } @@ -3247,13 +3387,17 @@ pub start_time_unix_nano: u64, pub time_unix_nano: u64, pub count: u64, - pub sum: f64, pub scale: i32, pub zero_count: u64, pub positive: ::protobuf::SingularPtrField, pub negative: ::protobuf::SingularPtrField, pub flags: u32, pub exemplars: ::protobuf::RepeatedField, + pub zero_threshold: f64, + // message oneof groups + pub _sum: ::std::option::Option, + pub _min: ::std::option::Option, + pub _max: ::std::option::Option, // special fields #[cfg_attr(feature = "with-serde", serde(skip))] pub unknown_fields: ::protobuf::UnknownFields, @@ -3267,6 +3411,24 @@ } } +#[derive(Clone,PartialEq,Debug)] +#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] +pub enum ExponentialHistogramDataPoint_oneof__sum { + sum(f64), +} + +#[derive(Clone,PartialEq,Debug)] +#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] +pub enum ExponentialHistogramDataPoint_oneof__min { + min(f64), +} + +#[derive(Clone,PartialEq,Debug)] +#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] +pub enum ExponentialHistogramDataPoint_oneof__max { + max(f64), +} + impl ExponentialHistogramDataPoint { pub fn new() -> ExponentialHistogramDataPoint { ::std::default::Default::default() @@ -3346,15 +3508,25 @@ pub fn get_sum(&self) -> f64 { - self.sum + match self._sum { + ::std::option::Option::Some(ExponentialHistogramDataPoint_oneof__sum::sum(v)) => v, + _ => 0., + } } pub fn clear_sum(&mut self) { - self.sum = 0.; + self._sum = ::std::option::Option::None; + } + + pub fn has_sum(&self) -> bool { + match self._sum { + ::std::option::Option::Some(ExponentialHistogramDataPoint_oneof__sum::sum(..)) => true, + _ => false, + } } // Param is passed by value, moved pub fn set_sum(&mut self, v: f64) { - self.sum = v; + self._sum = ::std::option::Option::Some(ExponentialHistogramDataPoint_oneof__sum::sum(v)) } // sint32 scale = 6; @@ -3492,6 +3664,71 @@ pub fn take_exemplars(&mut self) -> ::protobuf::RepeatedField { ::std::mem::replace(&mut self.exemplars, ::protobuf::RepeatedField::new()) } + + // double min = 12; + + + pub fn get_min(&self) -> f64 { + match self._min { + ::std::option::Option::Some(ExponentialHistogramDataPoint_oneof__min::min(v)) => v, + _ => 0., + } + } + pub fn clear_min(&mut self) { + self._min = ::std::option::Option::None; + } + + pub fn has_min(&self) -> bool { + match self._min { + ::std::option::Option::Some(ExponentialHistogramDataPoint_oneof__min::min(..)) => true, + _ => false, + } + } + + // Param is passed by value, moved + pub fn set_min(&mut self, v: f64) { + self._min = ::std::option::Option::Some(ExponentialHistogramDataPoint_oneof__min::min(v)) + } + + // double max = 13; + + + pub fn get_max(&self) -> f64 { + match self._max { + ::std::option::Option::Some(ExponentialHistogramDataPoint_oneof__max::max(v)) => v, + _ => 0., + } + } + pub fn clear_max(&mut self) { + self._max = ::std::option::Option::None; + } + + pub fn has_max(&self) -> bool { + match self._max { + ::std::option::Option::Some(ExponentialHistogramDataPoint_oneof__max::max(..)) => true, + _ => false, + } + } + + // Param is passed by value, moved + pub fn set_max(&mut self, v: f64) { + self._max = ::std::option::Option::Some(ExponentialHistogramDataPoint_oneof__max::max(v)) + } + + // double zero_threshold = 14; + + + pub fn get_zero_threshold(&self) -> f64 { + self.zero_threshold + } + pub fn clear_zero_threshold(&mut self) { + self.zero_threshold = 0.; + } + + // Param is passed by value, moved + pub fn set_zero_threshold(&mut self, v: f64) { + self.zero_threshold = v; + } } impl ::protobuf::Message for ExponentialHistogramDataPoint { @@ -3551,8 +3788,7 @@ if wire_type != ::protobuf::wire_format::WireTypeFixed64 { return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); } - let tmp = is.read_double()?; - self.sum = tmp; + self._sum = ::std::option::Option::Some(ExponentialHistogramDataPoint_oneof__sum::sum(is.read_double()?)); }, 6 => { if wire_type != ::protobuf::wire_format::WireTypeVarint { @@ -3584,6 +3820,25 @@ 11 => { ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.exemplars)?; }, + 12 => { + if wire_type != ::protobuf::wire_format::WireTypeFixed64 { + return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); + } + self._min = ::std::option::Option::Some(ExponentialHistogramDataPoint_oneof__min::min(is.read_double()?)); + }, + 13 => { + if wire_type != ::protobuf::wire_format::WireTypeFixed64 { + return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); + } + self._max = ::std::option::Option::Some(ExponentialHistogramDataPoint_oneof__max::max(is.read_double()?)); + }, + 14 => { + if wire_type != ::protobuf::wire_format::WireTypeFixed64 { + return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); + } + let tmp = is.read_double()?; + self.zero_threshold = tmp; + }, _ => { ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; }, @@ -3609,9 +3864,6 @@ if self.count != 0 { my_size += 9; } - if self.sum != 0. { - my_size += 9; - } if self.scale != 0 { my_size += ::protobuf::rt::value_varint_zigzag_size(6, self.scale); } @@ -3633,6 +3885,30 @@ let len = value.compute_size(); my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; }; + if self.zero_threshold != 0. { + my_size += 9; + } + if let ::std::option::Option::Some(ref v) = self._sum { + match v { + &ExponentialHistogramDataPoint_oneof__sum::sum(v) => { + my_size += 9; + }, + }; + } + if let ::std::option::Option::Some(ref v) = self._min { + match v { + &ExponentialHistogramDataPoint_oneof__min::min(v) => { + my_size += 9; + }, + }; + } + if let ::std::option::Option::Some(ref v) = self._max { + match v { + &ExponentialHistogramDataPoint_oneof__max::max(v) => { + my_size += 9; + }, + }; + } my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); self.cached_size.set(my_size); my_size @@ -3653,9 +3929,6 @@ if self.count != 0 { os.write_fixed64(4, self.count)?; } - if self.sum != 0. { - os.write_double(5, self.sum)?; - } if self.scale != 0 { os.write_sint32(6, self.scale)?; } @@ -3680,6 +3953,30 @@ os.write_raw_varint32(v.get_cached_size())?; v.write_to_with_cached_sizes(os)?; }; + if self.zero_threshold != 0. { + os.write_double(14, self.zero_threshold)?; + } + if let ::std::option::Option::Some(ref v) = self._sum { + match v { + &ExponentialHistogramDataPoint_oneof__sum::sum(v) => { + os.write_double(5, v)?; + }, + }; + } + if let ::std::option::Option::Some(ref v) = self._min { + match v { + &ExponentialHistogramDataPoint_oneof__min::min(v) => { + os.write_double(12, v)?; + }, + }; + } + if let ::std::option::Option::Some(ref v) = self._max { + match v { + &ExponentialHistogramDataPoint_oneof__max::max(v) => { + os.write_double(13, v)?; + }, + }; + } os.write_unknown_fields(self.get_unknown_fields())?; ::std::result::Result::Ok(()) } @@ -3738,10 +4035,10 @@ |m: &ExponentialHistogramDataPoint| { &m.count }, |m: &mut ExponentialHistogramDataPoint| { &mut m.count }, )); - fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>( + fields.push(::protobuf::reflect::accessor::make_singular_f64_accessor::<_>( "sum", - |m: &ExponentialHistogramDataPoint| { &m.sum }, - |m: &mut ExponentialHistogramDataPoint| { &mut m.sum }, + ExponentialHistogramDataPoint::has_sum, + ExponentialHistogramDataPoint::get_sum, )); fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeSint32>( "scale", @@ -3773,6 +4070,21 @@ |m: &ExponentialHistogramDataPoint| { &m.exemplars }, |m: &mut ExponentialHistogramDataPoint| { &mut m.exemplars }, )); + fields.push(::protobuf::reflect::accessor::make_singular_f64_accessor::<_>( + "min", + ExponentialHistogramDataPoint::has_min, + ExponentialHistogramDataPoint::get_min, + )); + fields.push(::protobuf::reflect::accessor::make_singular_f64_accessor::<_>( + "max", + ExponentialHistogramDataPoint::has_max, + ExponentialHistogramDataPoint::get_max, + )); + fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>( + "zero_threshold", + |m: &ExponentialHistogramDataPoint| { &m.zero_threshold }, + |m: &mut ExponentialHistogramDataPoint| { &mut m.zero_threshold }, + )); ::protobuf::reflect::MessageDescriptor::new_pb_name::( "ExponentialHistogramDataPoint", fields, @@ -3793,13 +4105,16 @@ self.start_time_unix_nano = 0; self.time_unix_nano = 0; self.count = 0; - self.sum = 0.; + self._sum = ::std::option::Option::None; self.scale = 0; self.zero_count = 0; self.positive.clear(); self.negative.clear(); self.flags = 0; self.exemplars.clear(); + self._min = ::std::option::Option::None; + self._max = ::std::option::Option::None; + self.zero_threshold = 0.; self.unknown_fields.clear(); } } @@ -5043,8 +5358,8 @@ #[derive(Clone,PartialEq,Eq,Debug,Hash)] #[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] pub enum DataPointFlags { - FLAG_NONE = 0, - FLAG_NO_RECORDED_VALUE = 1, + DATA_POINT_FLAGS_DO_NOT_USE = 0, + DATA_POINT_FLAGS_NO_RECORDED_VALUE_MASK = 1, } impl ::protobuf::ProtobufEnum for DataPointFlags { @@ -5054,16 +5369,16 @@ fn from_i32(value: i32) -> ::std::option::Option { match value { - 0 => ::std::option::Option::Some(DataPointFlags::FLAG_NONE), - 1 => ::std::option::Option::Some(DataPointFlags::FLAG_NO_RECORDED_VALUE), + 0 => ::std::option::Option::Some(DataPointFlags::DATA_POINT_FLAGS_DO_NOT_USE), + 1 => ::std::option::Option::Some(DataPointFlags::DATA_POINT_FLAGS_NO_RECORDED_VALUE_MASK), _ => ::std::option::Option::None } } fn values() -> &'static [Self] { static values: &'static [DataPointFlags] = &[ - DataPointFlags::FLAG_NONE, - DataPointFlags::FLAG_NO_RECORDED_VALUE, + DataPointFlags::DATA_POINT_FLAGS_DO_NOT_USE, + DataPointFlags::DATA_POINT_FLAGS_NO_RECORDED_VALUE_MASK, ]; values } @@ -5081,7 +5396,7 @@ impl ::std::default::Default for DataPointFlags { fn default() -> Self { - DataPointFlags::FLAG_NONE + DataPointFlags::DATA_POINT_FLAGS_DO_NOT_USE } } @@ -5096,77 +5411,82 @@ to.metrics.v1\x1a*opentelemetry/proto/common/v1/common.proto\x1a.opentel\ emetry/proto/resource/v1/resource.proto\"i\n\x0bMetricsData\x12Z\n\x10re\ source_metrics\x18\x01\x20\x03(\x0b2/.opentelemetry.proto.metrics.v1.Res\ - ourceMetricsR\x0fresourceMetrics\"\xff\x01\n\x0fResourceMetrics\x12E\n\ + ourceMetricsR\x0fresourceMetrics\"\xd2\x01\n\x0fResourceMetrics\x12E\n\ \x08resource\x18\x01\x20\x01(\x0b2).opentelemetry.proto.resource.v1.Reso\ - urceR\x08resource\x12\x85\x01\n\x1finstrumentation_library_metrics\x18\ - \x02\x20\x03(\x0b2=.opentelemetry.proto.metrics.v1.InstrumentationLibrar\ - yMetricsR\x1dinstrumentationLibraryMetrics\x12\x1d\n\nschema_url\x18\x03\ - \x20\x01(\tR\tschemaUrl\"\xf0\x01\n\x1dInstrumentationLibraryMetrics\x12\ - n\n\x17instrumentation_library\x18\x01\x20\x01(\x0b25.opentelemetry.prot\ - o.common.v1.InstrumentationLibraryR\x16instrumentationLibrary\x12@\n\x07\ - metrics\x18\x02\x20\x03(\x0b2&.opentelemetry.proto.metrics.v1.MetricR\ - \x07metrics\x12\x1d\n\nschema_url\x18\x03\x20\x01(\tR\tschemaUrl\"\xe1\ - \x03\n\x06Metric\x12\x12\n\x04name\x18\x01\x20\x01(\tR\x04name\x12\x20\n\ - \x0bdescription\x18\x02\x20\x01(\tR\x0bdescription\x12\x12\n\x04unit\x18\ - \x03\x20\x01(\tR\x04unit\x12=\n\x05gauge\x18\x05\x20\x01(\x0b2%.opentele\ - metry.proto.metrics.v1.GaugeH\0R\x05gauge\x127\n\x03sum\x18\x07\x20\x01(\ - \x0b2#.opentelemetry.proto.metrics.v1.SumH\0R\x03sum\x12I\n\thistogram\ - \x18\t\x20\x01(\x0b2).opentelemetry.proto.metrics.v1.HistogramH\0R\thist\ - ogram\x12k\n\x15exponential_histogram\x18\n\x20\x01(\x0b24.opentelemetry\ - .proto.metrics.v1.ExponentialHistogramH\0R\x14exponentialHistogram\x12C\ - \n\x07summary\x18\x0b\x20\x01(\x0b2'.opentelemetry.proto.metrics.v1.Summ\ - aryH\0R\x07summaryB\x06\n\x04dataJ\x04\x08\x04\x10\x05J\x04\x08\x06\x10\ - \x07J\x04\x08\x08\x10\t\"Y\n\x05Gauge\x12P\n\x0bdata_points\x18\x01\x20\ - \x03(\x0b2/.opentelemetry.proto.metrics.v1.NumberDataPointR\ndataPoints\ - \"\xeb\x01\n\x03Sum\x12P\n\x0bdata_points\x18\x01\x20\x03(\x0b2/.opentel\ - emetry.proto.metrics.v1.NumberDataPointR\ndataPoints\x12o\n\x17aggregati\ - on_temporality\x18\x02\x20\x01(\x0e26.opentelemetry.proto.metrics.v1.Agg\ - regationTemporalityR\x16aggregationTemporality\x12!\n\x0cis_monotonic\ - \x18\x03\x20\x01(\x08R\x0bisMonotonic\"\xd1\x01\n\tHistogram\x12S\n\x0bd\ - ata_points\x18\x01\x20\x03(\x0b22.opentelemetry.proto.metrics.v1.Histogr\ - amDataPointR\ndataPoints\x12o\n\x17aggregation_temporality\x18\x02\x20\ - \x01(\x0e26.opentelemetry.proto.metrics.v1.AggregationTemporalityR\x16ag\ - gregationTemporality\"\xe7\x01\n\x14ExponentialHistogram\x12^\n\x0bdata_\ - points\x18\x01\x20\x03(\x0b2=.opentelemetry.proto.metrics.v1.Exponential\ - HistogramDataPointR\ndataPoints\x12o\n\x17aggregation_temporality\x18\ - \x02\x20\x01(\x0e26.opentelemetry.proto.metrics.v1.AggregationTemporalit\ - yR\x16aggregationTemporality\"\\\n\x07Summary\x12Q\n\x0bdata_points\x18\ - \x01\x20\x03(\x0b20.opentelemetry.proto.metrics.v1.SummaryDataPointR\nda\ - taPoints\"\xd6\x02\n\x0fNumberDataPoint\x12G\n\nattributes\x18\x07\x20\ - \x03(\x0b2'.opentelemetry.proto.common.v1.KeyValueR\nattributes\x12/\n\ - \x14start_time_unix_nano\x18\x02\x20\x01(\x06R\x11startTimeUnixNano\x12$\ - \n\x0etime_unix_nano\x18\x03\x20\x01(\x06R\x0ctimeUnixNano\x12\x1d\n\tas\ - _double\x18\x04\x20\x01(\x01H\0R\x08asDouble\x12\x17\n\x06as_int\x18\x06\ - \x20\x01(\x10H\0R\x05asInt\x12F\n\texemplars\x18\x05\x20\x03(\x0b2(.open\ - telemetry.proto.metrics.v1.ExemplarR\texemplars\x12\x14\n\x05flags\x18\ - \x08\x20\x01(\rR\x05flagsB\x07\n\x05valueJ\x04\x08\x01\x10\x02\"\x8e\x03\ - \n\x12HistogramDataPoint\x12G\n\nattributes\x18\t\x20\x03(\x0b2'.opentel\ - emetry.proto.common.v1.KeyValueR\nattributes\x12/\n\x14start_time_unix_n\ - ano\x18\x02\x20\x01(\x06R\x11startTimeUnixNano\x12$\n\x0etime_unix_nano\ + urceR\x08resource\x12Q\n\rscope_metrics\x18\x02\x20\x03(\x0b2,.opentelem\ + etry.proto.metrics.v1.ScopeMetricsR\x0cscopeMetrics\x12\x1d\n\nschema_ur\ + l\x18\x03\x20\x01(\tR\tschemaUrlJ\x06\x08\xe8\x07\x10\xe9\x07\"\xba\x01\ + \n\x0cScopeMetrics\x12I\n\x05scope\x18\x01\x20\x01(\x0b23.opentelemetry.\ + proto.common.v1.InstrumentationScopeR\x05scope\x12@\n\x07metrics\x18\x02\ + \x20\x03(\x0b2&.opentelemetry.proto.metrics.v1.MetricR\x07metrics\x12\ + \x1d\n\nschema_url\x18\x03\x20\x01(\tR\tschemaUrl\"\xe1\x03\n\x06Metric\ + \x12\x12\n\x04name\x18\x01\x20\x01(\tR\x04name\x12\x20\n\x0bdescription\ + \x18\x02\x20\x01(\tR\x0bdescription\x12\x12\n\x04unit\x18\x03\x20\x01(\t\ + R\x04unit\x12=\n\x05gauge\x18\x05\x20\x01(\x0b2%.opentelemetry.proto.met\ + rics.v1.GaugeH\0R\x05gauge\x127\n\x03sum\x18\x07\x20\x01(\x0b2#.opentele\ + metry.proto.metrics.v1.SumH\0R\x03sum\x12I\n\thistogram\x18\t\x20\x01(\ + \x0b2).opentelemetry.proto.metrics.v1.HistogramH\0R\thistogram\x12k\n\ + \x15exponential_histogram\x18\n\x20\x01(\x0b24.opentelemetry.proto.metri\ + cs.v1.ExponentialHistogramH\0R\x14exponentialHistogram\x12C\n\x07summary\ + \x18\x0b\x20\x01(\x0b2'.opentelemetry.proto.metrics.v1.SummaryH\0R\x07su\ + mmaryB\x06\n\x04dataJ\x04\x08\x04\x10\x05J\x04\x08\x06\x10\x07J\x04\x08\ + \x08\x10\t\"Y\n\x05Gauge\x12P\n\x0bdata_points\x18\x01\x20\x03(\x0b2/.op\ + entelemetry.proto.metrics.v1.NumberDataPointR\ndataPoints\"\xeb\x01\n\ + \x03Sum\x12P\n\x0bdata_points\x18\x01\x20\x03(\x0b2/.opentelemetry.proto\ + .metrics.v1.NumberDataPointR\ndataPoints\x12o\n\x17aggregation_temporali\ + ty\x18\x02\x20\x01(\x0e26.opentelemetry.proto.metrics.v1.AggregationTemp\ + oralityR\x16aggregationTemporality\x12!\n\x0cis_monotonic\x18\x03\x20\ + \x01(\x08R\x0bisMonotonic\"\xd1\x01\n\tHistogram\x12S\n\x0bdata_points\ + \x18\x01\x20\x03(\x0b22.opentelemetry.proto.metrics.v1.HistogramDataPoin\ + tR\ndataPoints\x12o\n\x17aggregation_temporality\x18\x02\x20\x01(\x0e26.\ + opentelemetry.proto.metrics.v1.AggregationTemporalityR\x16aggregationTem\ + porality\"\xe7\x01\n\x14ExponentialHistogram\x12^\n\x0bdata_points\x18\ + \x01\x20\x03(\x0b2=.opentelemetry.proto.metrics.v1.ExponentialHistogramD\ + ataPointR\ndataPoints\x12o\n\x17aggregation_temporality\x18\x02\x20\x01(\ + \x0e26.opentelemetry.proto.metrics.v1.AggregationTemporalityR\x16aggrega\ + tionTemporality\"\\\n\x07Summary\x12Q\n\x0bdata_points\x18\x01\x20\x03(\ + \x0b20.opentelemetry.proto.metrics.v1.SummaryDataPointR\ndataPoints\"\ + \xd6\x02\n\x0fNumberDataPoint\x12G\n\nattributes\x18\x07\x20\x03(\x0b2'.\ + opentelemetry.proto.common.v1.KeyValueR\nattributes\x12/\n\x14start_time\ + _unix_nano\x18\x02\x20\x01(\x06R\x11startTimeUnixNano\x12$\n\x0etime_uni\ + x_nano\x18\x03\x20\x01(\x06R\x0ctimeUnixNano\x12\x1d\n\tas_double\x18\ + \x04\x20\x01(\x01H\0R\x08asDouble\x12\x17\n\x06as_int\x18\x06\x20\x01(\ + \x10H\0R\x05asInt\x12F\n\texemplars\x18\x05\x20\x03(\x0b2(.opentelemetry\ + .proto.metrics.v1.ExemplarR\texemplars\x12\x14\n\x05flags\x18\x08\x20\ + \x01(\rR\x05flagsB\x07\n\x05valueJ\x04\x08\x01\x10\x02\"\xd9\x03\n\x12Hi\ + stogramDataPoint\x12G\n\nattributes\x18\t\x20\x03(\x0b2'.opentelemetry.p\ + roto.common.v1.KeyValueR\nattributes\x12/\n\x14start_time_unix_nano\x18\ + \x02\x20\x01(\x06R\x11startTimeUnixNano\x12$\n\x0etime_unix_nano\x18\x03\ + \x20\x01(\x06R\x0ctimeUnixNano\x12\x14\n\x05count\x18\x04\x20\x01(\x06R\ + \x05count\x12\x15\n\x03sum\x18\x05\x20\x01(\x01H\0R\x03sum\x88\x01\x01\ + \x12#\n\rbucket_counts\x18\x06\x20\x03(\x06R\x0cbucketCounts\x12'\n\x0fe\ + xplicit_bounds\x18\x07\x20\x03(\x01R\x0eexplicitBounds\x12F\n\texemplars\ + \x18\x08\x20\x03(\x0b2(.opentelemetry.proto.metrics.v1.ExemplarR\texempl\ + ars\x12\x14\n\x05flags\x18\n\x20\x01(\rR\x05flags\x12\x15\n\x03min\x18\ + \x0b\x20\x01(\x01H\x01R\x03min\x88\x01\x01\x12\x15\n\x03max\x18\x0c\x20\ + \x01(\x01H\x02R\x03max\x88\x01\x01B\x06\n\x04_sumB\x06\n\x04_minB\x06\n\ + \x04_maxJ\x04\x08\x01\x10\x02\"\xfa\x05\n\x1dExponentialHistogramDataPoi\ + nt\x12G\n\nattributes\x18\x01\x20\x03(\x0b2'.opentelemetry.proto.common.\ + v1.KeyValueR\nattributes\x12/\n\x14start_time_unix_nano\x18\x02\x20\x01(\ + \x06R\x11startTimeUnixNano\x12$\n\x0etime_unix_nano\x18\x03\x20\x01(\x06\ + R\x0ctimeUnixNano\x12\x14\n\x05count\x18\x04\x20\x01(\x06R\x05count\x12\ + \x15\n\x03sum\x18\x05\x20\x01(\x01H\0R\x03sum\x88\x01\x01\x12\x14\n\x05s\ + cale\x18\x06\x20\x01(\x11R\x05scale\x12\x1d\n\nzero_count\x18\x07\x20\ + \x01(\x06R\tzeroCount\x12a\n\x08positive\x18\x08\x20\x01(\x0b2E.opentele\ + metry.proto.metrics.v1.ExponentialHistogramDataPoint.BucketsR\x08positiv\ + e\x12a\n\x08negative\x18\t\x20\x01(\x0b2E.opentelemetry.proto.metrics.v1\ + .ExponentialHistogramDataPoint.BucketsR\x08negative\x12\x14\n\x05flags\ + \x18\n\x20\x01(\rR\x05flags\x12F\n\texemplars\x18\x0b\x20\x03(\x0b2(.ope\ + ntelemetry.proto.metrics.v1.ExemplarR\texemplars\x12\x15\n\x03min\x18\ + \x0c\x20\x01(\x01H\x01R\x03min\x88\x01\x01\x12\x15\n\x03max\x18\r\x20\ + \x01(\x01H\x02R\x03max\x88\x01\x01\x12%\n\x0ezero_threshold\x18\x0e\x20\ + \x01(\x01R\rzeroThreshold\x1aF\n\x07Buckets\x12\x16\n\x06offset\x18\x01\ + \x20\x01(\x11R\x06offset\x12#\n\rbucket_counts\x18\x02\x20\x03(\x04R\x0c\ + bucketCountsB\x06\n\x04_sumB\x06\n\x04_minB\x06\n\x04_max\"\xa6\x03\n\ + \x10SummaryDataPoint\x12G\n\nattributes\x18\x07\x20\x03(\x0b2'.opentelem\ + etry.proto.common.v1.KeyValueR\nattributes\x12/\n\x14start_time_unix_nan\ + o\x18\x02\x20\x01(\x06R\x11startTimeUnixNano\x12$\n\x0etime_unix_nano\ \x18\x03\x20\x01(\x06R\x0ctimeUnixNano\x12\x14\n\x05count\x18\x04\x20\ - \x01(\x06R\x05count\x12\x10\n\x03sum\x18\x05\x20\x01(\x01R\x03sum\x12#\n\ - \rbucket_counts\x18\x06\x20\x03(\x06R\x0cbucketCounts\x12'\n\x0fexplicit\ - _bounds\x18\x07\x20\x03(\x01R\x0eexplicitBounds\x12F\n\texemplars\x18\ - \x08\x20\x03(\x0b2(.opentelemetry.proto.metrics.v1.ExemplarR\texemplars\ - \x12\x14\n\x05flags\x18\n\x20\x01(\rR\x05flagsJ\x04\x08\x01\x10\x02\"\ - \x88\x05\n\x1dExponentialHistogramDataPoint\x12G\n\nattributes\x18\x01\ - \x20\x03(\x0b2'.opentelemetry.proto.common.v1.KeyValueR\nattributes\x12/\ - \n\x14start_time_unix_nano\x18\x02\x20\x01(\x06R\x11startTimeUnixNano\ - \x12$\n\x0etime_unix_nano\x18\x03\x20\x01(\x06R\x0ctimeUnixNano\x12\x14\ - \n\x05count\x18\x04\x20\x01(\x06R\x05count\x12\x10\n\x03sum\x18\x05\x20\ - \x01(\x01R\x03sum\x12\x14\n\x05scale\x18\x06\x20\x01(\x11R\x05scale\x12\ - \x1d\n\nzero_count\x18\x07\x20\x01(\x06R\tzeroCount\x12a\n\x08positive\ - \x18\x08\x20\x01(\x0b2E.opentelemetry.proto.metrics.v1.ExponentialHistog\ - ramDataPoint.BucketsR\x08positive\x12a\n\x08negative\x18\t\x20\x01(\x0b2\ - E.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.BucketsR\ - \x08negative\x12\x14\n\x05flags\x18\n\x20\x01(\rR\x05flags\x12F\n\texemp\ - lars\x18\x0b\x20\x03(\x0b2(.opentelemetry.proto.metrics.v1.ExemplarR\tex\ - emplars\x1aF\n\x07Buckets\x12\x16\n\x06offset\x18\x01\x20\x01(\x11R\x06o\ - ffset\x12#\n\rbucket_counts\x18\x02\x20\x03(\x04R\x0cbucketCounts\"\xa6\ - \x03\n\x10SummaryDataPoint\x12G\n\nattributes\x18\x07\x20\x03(\x0b2'.ope\ - ntelemetry.proto.common.v1.KeyValueR\nattributes\x12/\n\x14start_time_un\ - ix_nano\x18\x02\x20\x01(\x06R\x11startTimeUnixNano\x12$\n\x0etime_unix_n\ - ano\x18\x03\x20\x01(\x06R\x0ctimeUnixNano\x12\x14\n\x05count\x18\x04\x20\ \x01(\x06R\x05count\x12\x10\n\x03sum\x18\x05\x20\x01(\x01R\x03sum\x12i\n\ \x0fquantile_values\x18\x06\x20\x03(\x0b2@.opentelemetry.proto.metrics.v\ 1.SummaryDataPoint.ValueAtQuantileR\x0equantileValues\x12\x14\n\x05flags\ @@ -5181,10 +5501,11 @@ _id\x18\x05\x20\x01(\x0cR\x07traceIdB\x07\n\x05valueJ\x04\x08\x01\x10\ \x02*\x8c\x01\n\x16AggregationTemporality\x12'\n#AGGREGATION_TEMPORALITY\ _UNSPECIFIED\x10\0\x12!\n\x1dAGGREGATION_TEMPORALITY_DELTA\x10\x01\x12&\ - \n\"AGGREGATION_TEMPORALITY_CUMULATIVE\x10\x02*;\n\x0eDataPointFlags\x12\ - \r\n\tFLAG_NONE\x10\0\x12\x1a\n\x16FLAG_NO_RECORDED_VALUE\x10\x01B^\n!io\ - .opentelemetry.proto.metrics.v1B\x0cMetricsProtoP\x01Z)go.opentelemetry.\ - io/proto/otlp/metrics/v1b\x06proto3\ + \n\"AGGREGATION_TEMPORALITY_CUMULATIVE\x10\x02*^\n\x0eDataPointFlags\x12\ + \x1f\n\x1bDATA_POINT_FLAGS_DO_NOT_USE\x10\0\x12+\n'DATA_POINT_FLAGS_NO_R\ + ECORDED_VALUE_MASK\x10\x01B\x7f\n!io.opentelemetry.proto.metrics.v1B\x0c\ + MetricsProtoP\x01Z)go.opentelemetry.io/proto/otlp/metrics/v1\xaa\x02\x1e\ + OpenTelemetry.Proto.Metrics.V1b\x06proto3\ "; static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT; diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/metrics_service.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/metrics_service.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/metrics_service.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/metrics_service.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -// This file is generated by rust-protobuf 2.27.1. Do not edit +// This file is generated by rust-protobuf 2.28.0. Do not edit // @generated // https://github.com/rust-lang/rust-clippy/issues/702 @@ -21,7 +21,7 @@ /// Generated files are compatible only with the same version /// of protobuf runtime. -// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_27_1; +// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_28_0; #[derive(PartialEq,Clone,Default)] #[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] @@ -195,6 +195,8 @@ #[derive(PartialEq,Clone,Default)] #[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] pub struct ExportMetricsServiceResponse { + // message fields + pub partial_success: ::protobuf::SingularPtrField, // special fields #[cfg_attr(feature = "with-serde", serde(skip))] pub unknown_fields: ::protobuf::UnknownFields, @@ -212,10 +214,48 @@ pub fn new() -> ExportMetricsServiceResponse { ::std::default::Default::default() } + + // .opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess partial_success = 1; + + + pub fn get_partial_success(&self) -> &ExportMetricsPartialSuccess { + self.partial_success.as_ref().unwrap_or_else(|| ::default_instance()) + } + pub fn clear_partial_success(&mut self) { + self.partial_success.clear(); + } + + pub fn has_partial_success(&self) -> bool { + self.partial_success.is_some() + } + + // Param is passed by value, moved + pub fn set_partial_success(&mut self, v: ExportMetricsPartialSuccess) { + self.partial_success = ::protobuf::SingularPtrField::some(v); + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_partial_success(&mut self) -> &mut ExportMetricsPartialSuccess { + if self.partial_success.is_none() { + self.partial_success.set_default(); + } + self.partial_success.as_mut().unwrap() + } + + // Take field + pub fn take_partial_success(&mut self) -> ExportMetricsPartialSuccess { + self.partial_success.take().unwrap_or_else(|| ExportMetricsPartialSuccess::new()) + } } impl ::protobuf::Message for ExportMetricsServiceResponse { fn is_initialized(&self) -> bool { + for v in &self.partial_success { + if !v.is_initialized() { + return false; + } + }; true } @@ -223,6 +263,9 @@ while !is.eof()? { let (field_number, wire_type) = is.read_tag_unpack()?; match field_number { + 1 => { + ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.partial_success)?; + }, _ => { ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; }, @@ -235,12 +278,21 @@ #[allow(unused_variables)] fn compute_size(&self) -> u32 { let mut my_size = 0; + if let Some(ref v) = self.partial_success.as_ref() { + let len = v.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; + } my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); self.cached_size.set(my_size); my_size } fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> { + if let Some(ref v) = self.partial_success.as_ref() { + os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?; + os.write_raw_varint32(v.get_cached_size())?; + v.write_to_with_cached_sizes(os)?; + } os.write_unknown_fields(self.get_unknown_fields())?; ::std::result::Result::Ok(()) } @@ -278,7 +330,12 @@ fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT; descriptor.get(|| { - let fields = ::std::vec::Vec::new(); + let mut fields = ::std::vec::Vec::new(); + fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( + "partial_success", + |m: &ExportMetricsServiceResponse| { &m.partial_success }, + |m: &mut ExportMetricsServiceResponse| { &mut m.partial_success }, + )); ::protobuf::reflect::MessageDescriptor::new_pb_name::( "ExportMetricsServiceResponse", fields, @@ -295,6 +352,7 @@ impl ::protobuf::Clear for ExportMetricsServiceResponse { fn clear(&mut self) { + self.partial_success.clear(); self.unknown_fields.clear(); } } @@ -311,17 +369,219 @@ } } +#[derive(PartialEq,Clone,Default)] +#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] +pub struct ExportMetricsPartialSuccess { + // message fields + pub rejected_data_points: i64, + pub error_message: ::std::string::String, + // special fields + #[cfg_attr(feature = "with-serde", serde(skip))] + pub unknown_fields: ::protobuf::UnknownFields, + #[cfg_attr(feature = "with-serde", serde(skip))] + pub cached_size: ::protobuf::CachedSize, +} + +impl<'a> ::std::default::Default for &'a ExportMetricsPartialSuccess { + fn default() -> &'a ExportMetricsPartialSuccess { + ::default_instance() + } +} + +impl ExportMetricsPartialSuccess { + pub fn new() -> ExportMetricsPartialSuccess { + ::std::default::Default::default() + } + + // int64 rejected_data_points = 1; + + + pub fn get_rejected_data_points(&self) -> i64 { + self.rejected_data_points + } + pub fn clear_rejected_data_points(&mut self) { + self.rejected_data_points = 0; + } + + // Param is passed by value, moved + pub fn set_rejected_data_points(&mut self, v: i64) { + self.rejected_data_points = v; + } + + // string error_message = 2; + + + pub fn get_error_message(&self) -> &str { + &self.error_message + } + pub fn clear_error_message(&mut self) { + self.error_message.clear(); + } + + // Param is passed by value, moved + pub fn set_error_message(&mut self, v: ::std::string::String) { + self.error_message = v; + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_error_message(&mut self) -> &mut ::std::string::String { + &mut self.error_message + } + + // Take field + pub fn take_error_message(&mut self) -> ::std::string::String { + ::std::mem::replace(&mut self.error_message, ::std::string::String::new()) + } +} + +impl ::protobuf::Message for ExportMetricsPartialSuccess { + fn is_initialized(&self) -> bool { + true + } + + fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> { + while !is.eof()? { + let (field_number, wire_type) = is.read_tag_unpack()?; + match field_number { + 1 => { + if wire_type != ::protobuf::wire_format::WireTypeVarint { + return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); + } + let tmp = is.read_int64()?; + self.rejected_data_points = tmp; + }, + 2 => { + ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.error_message)?; + }, + _ => { + ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; + }, + }; + } + ::std::result::Result::Ok(()) + } + + // Compute sizes of nested messages + #[allow(unused_variables)] + fn compute_size(&self) -> u32 { + let mut my_size = 0; + if self.rejected_data_points != 0 { + my_size += ::protobuf::rt::value_size(1, self.rejected_data_points, ::protobuf::wire_format::WireTypeVarint); + } + if !self.error_message.is_empty() { + my_size += ::protobuf::rt::string_size(2, &self.error_message); + } + my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); + self.cached_size.set(my_size); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> { + if self.rejected_data_points != 0 { + os.write_int64(1, self.rejected_data_points)?; + } + if !self.error_message.is_empty() { + os.write_string(2, &self.error_message)?; + } + os.write_unknown_fields(self.get_unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn get_cached_size(&self) -> u32 { + self.cached_size.get() + } + + fn get_unknown_fields(&self) -> &::protobuf::UnknownFields { + &self.unknown_fields + } + + fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields { + &mut self.unknown_fields + } + + fn as_any(&self) -> &dyn (::std::any::Any) { + self as &dyn (::std::any::Any) + } + fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) { + self as &mut dyn (::std::any::Any) + } + fn into_any(self: ::std::boxed::Box) -> ::std::boxed::Box { + self + } + + fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor { + Self::descriptor_static() + } + + fn new() -> ExportMetricsPartialSuccess { + ExportMetricsPartialSuccess::new() + } + + fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT; + descriptor.get(|| { + let mut fields = ::std::vec::Vec::new(); + fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>( + "rejected_data_points", + |m: &ExportMetricsPartialSuccess| { &m.rejected_data_points }, + |m: &mut ExportMetricsPartialSuccess| { &mut m.rejected_data_points }, + )); + fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( + "error_message", + |m: &ExportMetricsPartialSuccess| { &m.error_message }, + |m: &mut ExportMetricsPartialSuccess| { &mut m.error_message }, + )); + ::protobuf::reflect::MessageDescriptor::new_pb_name::( + "ExportMetricsPartialSuccess", + fields, + file_descriptor_proto() + ) + }) + } + + fn default_instance() -> &'static ExportMetricsPartialSuccess { + static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; + instance.get(ExportMetricsPartialSuccess::new) + } +} + +impl ::protobuf::Clear for ExportMetricsPartialSuccess { + fn clear(&mut self) { + self.rejected_data_points = 0; + self.error_message.clear(); + self.unknown_fields.clear(); + } +} + +impl ::std::fmt::Debug for ExportMetricsPartialSuccess { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for ExportMetricsPartialSuccess { + fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { + ::protobuf::reflect::ReflectValueRef::Message(self) + } +} + static file_descriptor_proto_data: &'static [u8] = b"\ \n>opentelemetry/proto/collector/metrics/v1/metrics_service.proto\x12(op\ entelemetry.proto.collector.metrics.v1\x1a,opentelemetry/proto/metrics/v\ 1/metrics.proto\"y\n\x1bExportMetricsServiceRequest\x12Z\n\x10resource_m\ etrics\x18\x01\x20\x03(\x0b2/.opentelemetry.proto.metrics.v1.ResourceMet\ - ricsR\x0fresourceMetrics\"\x1e\n\x1cExportMetricsServiceResponse2\xac\ - \x01\n\x0eMetricsService\x12\x99\x01\n\x06Export\x12E.opentelemetry.prot\ - o.collector.metrics.v1.ExportMetricsServiceRequest\x1aF.opentelemetry.pr\ - oto.collector.metrics.v1.ExportMetricsServiceResponse\"\0By\n+io.opentel\ - emetry.proto.collector.metrics.v1B\x13MetricsServiceProtoP\x01Z3go.opent\ - elemetry.io/proto/otlp/collector/metrics/v1b\x06proto3\ + ricsR\x0fresourceMetrics\"\x8e\x01\n\x1cExportMetricsServiceResponse\x12\ + n\n\x0fpartial_success\x18\x01\x20\x01(\x0b2E.opentelemetry.proto.collec\ + tor.metrics.v1.ExportMetricsPartialSuccessR\x0epartialSuccess\"t\n\x1bEx\ + portMetricsPartialSuccess\x120\n\x14rejected_data_points\x18\x01\x20\x01\ + (\x03R\x12rejectedDataPoints\x12#\n\rerror_message\x18\x02\x20\x01(\tR\ + \x0cerrorMessage2\xac\x01\n\x0eMetricsService\x12\x99\x01\n\x06Export\ + \x12E.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceReque\ + st\x1aF.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRes\ + ponse\"\0B\xa4\x01\n+io.opentelemetry.proto.collector.metrics.v1B\x13Met\ + ricsServiceProtoP\x01Z3go.opentelemetry.io/proto/otlp/collector/metrics/\ + v1\xaa\x02(OpenTelemetry.Proto.Collector.Metrics.V1b\x06proto3\ "; static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT; diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/resource.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/resource.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/resource.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/resource.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -// This file is generated by rust-protobuf 2.27.1. Do not edit +// This file is generated by rust-protobuf 2.28.0. Do not edit // @generated // https://github.com/rust-lang/rust-clippy/issues/702 @@ -21,7 +21,7 @@ /// Generated files are compatible only with the same version /// of protobuf runtime. -// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_27_1; +// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_28_0; #[derive(PartialEq,Clone,Default)] #[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] @@ -232,9 +232,9 @@ roto.resource.v1\x1a*opentelemetry/proto/common/v1/common.proto\"\x8d\ \x01\n\x08Resource\x12G\n\nattributes\x18\x01\x20\x03(\x0b2'.opentelemet\ ry.proto.common.v1.KeyValueR\nattributes\x128\n\x18dropped_attributes_co\ - unt\x18\x02\x20\x01(\rR\x16droppedAttributesCountBa\n\"io.opentelemetry.\ - proto.resource.v1B\rResourceProtoP\x01Z*go.opentelemetry.io/proto/otlp/r\ - esource/v1b\x06proto3\ + unt\x18\x02\x20\x01(\rR\x16droppedAttributesCountB\x83\x01\n\"io.opentel\ + emetry.proto.resource.v1B\rResourceProtoP\x01Z*go.opentelemetry.io/proto\ + /otlp/resource/v1\xaa\x02\x1fOpenTelemetry.Proto.Resource.V1b\x06proto3\ "; static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT; diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/trace_config.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/trace_config.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/trace_config.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/trace_config.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,1113 +0,0 @@ -// This file is generated by rust-protobuf 2.27.1. Do not edit -// @generated - -// https://github.com/rust-lang/rust-clippy/issues/702 -#![allow(unknown_lints)] -#![allow(clippy::all)] - -#![allow(unused_attributes)] -#![cfg_attr(rustfmt, rustfmt::skip)] - -#![allow(box_pointers)] -#![allow(dead_code)] -#![allow(missing_docs)] -#![allow(non_camel_case_types)] -#![allow(non_snake_case)] -#![allow(non_upper_case_globals)] -#![allow(trivial_casts)] -#![allow(unused_imports)] -#![allow(unused_results)] -//! Generated file from `opentelemetry/proto/trace/v1/trace_config.proto` - -/// Generated files are compatible only with the same version -/// of protobuf runtime. -// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_27_1; - -#[derive(PartialEq,Clone,Default)] -#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] -pub struct TraceConfig { - // message fields - pub max_number_of_attributes: i64, - pub max_number_of_timed_events: i64, - pub max_number_of_attributes_per_timed_event: i64, - pub max_number_of_links: i64, - pub max_number_of_attributes_per_link: i64, - // message oneof groups - pub sampler: ::std::option::Option, - // special fields - #[cfg_attr(feature = "with-serde", serde(skip))] - pub unknown_fields: ::protobuf::UnknownFields, - #[cfg_attr(feature = "with-serde", serde(skip))] - pub cached_size: ::protobuf::CachedSize, -} - -impl<'a> ::std::default::Default for &'a TraceConfig { - fn default() -> &'a TraceConfig { - ::default_instance() - } -} - -#[derive(Clone,PartialEq,Debug)] -#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] -pub enum TraceConfig_oneof_sampler { - constant_sampler(ConstantSampler), - trace_id_ratio_based(TraceIdRatioBased), - rate_limiting_sampler(RateLimitingSampler), -} - -impl TraceConfig { - pub fn new() -> TraceConfig { - ::std::default::Default::default() - } - - // .opentelemetry.proto.trace.v1.ConstantSampler constant_sampler = 1; - - - pub fn get_constant_sampler(&self) -> &ConstantSampler { - match self.sampler { - ::std::option::Option::Some(TraceConfig_oneof_sampler::constant_sampler(ref v)) => v, - _ => ::default_instance(), - } - } - pub fn clear_constant_sampler(&mut self) { - self.sampler = ::std::option::Option::None; - } - - pub fn has_constant_sampler(&self) -> bool { - match self.sampler { - ::std::option::Option::Some(TraceConfig_oneof_sampler::constant_sampler(..)) => true, - _ => false, - } - } - - // Param is passed by value, moved - pub fn set_constant_sampler(&mut self, v: ConstantSampler) { - self.sampler = ::std::option::Option::Some(TraceConfig_oneof_sampler::constant_sampler(v)) - } - - // Mutable pointer to the field. - pub fn mut_constant_sampler(&mut self) -> &mut ConstantSampler { - if let ::std::option::Option::Some(TraceConfig_oneof_sampler::constant_sampler(_)) = self.sampler { - } else { - self.sampler = ::std::option::Option::Some(TraceConfig_oneof_sampler::constant_sampler(ConstantSampler::new())); - } - match self.sampler { - ::std::option::Option::Some(TraceConfig_oneof_sampler::constant_sampler(ref mut v)) => v, - _ => panic!(), - } - } - - // Take field - pub fn take_constant_sampler(&mut self) -> ConstantSampler { - if self.has_constant_sampler() { - match self.sampler.take() { - ::std::option::Option::Some(TraceConfig_oneof_sampler::constant_sampler(v)) => v, - _ => panic!(), - } - } else { - ConstantSampler::new() - } - } - - // .opentelemetry.proto.trace.v1.TraceIdRatioBased trace_id_ratio_based = 2; - - - pub fn get_trace_id_ratio_based(&self) -> &TraceIdRatioBased { - match self.sampler { - ::std::option::Option::Some(TraceConfig_oneof_sampler::trace_id_ratio_based(ref v)) => v, - _ => ::default_instance(), - } - } - pub fn clear_trace_id_ratio_based(&mut self) { - self.sampler = ::std::option::Option::None; - } - - pub fn has_trace_id_ratio_based(&self) -> bool { - match self.sampler { - ::std::option::Option::Some(TraceConfig_oneof_sampler::trace_id_ratio_based(..)) => true, - _ => false, - } - } - - // Param is passed by value, moved - pub fn set_trace_id_ratio_based(&mut self, v: TraceIdRatioBased) { - self.sampler = ::std::option::Option::Some(TraceConfig_oneof_sampler::trace_id_ratio_based(v)) - } - - // Mutable pointer to the field. - pub fn mut_trace_id_ratio_based(&mut self) -> &mut TraceIdRatioBased { - if let ::std::option::Option::Some(TraceConfig_oneof_sampler::trace_id_ratio_based(_)) = self.sampler { - } else { - self.sampler = ::std::option::Option::Some(TraceConfig_oneof_sampler::trace_id_ratio_based(TraceIdRatioBased::new())); - } - match self.sampler { - ::std::option::Option::Some(TraceConfig_oneof_sampler::trace_id_ratio_based(ref mut v)) => v, - _ => panic!(), - } - } - - // Take field - pub fn take_trace_id_ratio_based(&mut self) -> TraceIdRatioBased { - if self.has_trace_id_ratio_based() { - match self.sampler.take() { - ::std::option::Option::Some(TraceConfig_oneof_sampler::trace_id_ratio_based(v)) => v, - _ => panic!(), - } - } else { - TraceIdRatioBased::new() - } - } - - // .opentelemetry.proto.trace.v1.RateLimitingSampler rate_limiting_sampler = 3; - - - pub fn get_rate_limiting_sampler(&self) -> &RateLimitingSampler { - match self.sampler { - ::std::option::Option::Some(TraceConfig_oneof_sampler::rate_limiting_sampler(ref v)) => v, - _ => ::default_instance(), - } - } - pub fn clear_rate_limiting_sampler(&mut self) { - self.sampler = ::std::option::Option::None; - } - - pub fn has_rate_limiting_sampler(&self) -> bool { - match self.sampler { - ::std::option::Option::Some(TraceConfig_oneof_sampler::rate_limiting_sampler(..)) => true, - _ => false, - } - } - - // Param is passed by value, moved - pub fn set_rate_limiting_sampler(&mut self, v: RateLimitingSampler) { - self.sampler = ::std::option::Option::Some(TraceConfig_oneof_sampler::rate_limiting_sampler(v)) - } - - // Mutable pointer to the field. - pub fn mut_rate_limiting_sampler(&mut self) -> &mut RateLimitingSampler { - if let ::std::option::Option::Some(TraceConfig_oneof_sampler::rate_limiting_sampler(_)) = self.sampler { - } else { - self.sampler = ::std::option::Option::Some(TraceConfig_oneof_sampler::rate_limiting_sampler(RateLimitingSampler::new())); - } - match self.sampler { - ::std::option::Option::Some(TraceConfig_oneof_sampler::rate_limiting_sampler(ref mut v)) => v, - _ => panic!(), - } - } - - // Take field - pub fn take_rate_limiting_sampler(&mut self) -> RateLimitingSampler { - if self.has_rate_limiting_sampler() { - match self.sampler.take() { - ::std::option::Option::Some(TraceConfig_oneof_sampler::rate_limiting_sampler(v)) => v, - _ => panic!(), - } - } else { - RateLimitingSampler::new() - } - } - - // int64 max_number_of_attributes = 4; - - - pub fn get_max_number_of_attributes(&self) -> i64 { - self.max_number_of_attributes - } - pub fn clear_max_number_of_attributes(&mut self) { - self.max_number_of_attributes = 0; - } - - // Param is passed by value, moved - pub fn set_max_number_of_attributes(&mut self, v: i64) { - self.max_number_of_attributes = v; - } - - // int64 max_number_of_timed_events = 5; - - - pub fn get_max_number_of_timed_events(&self) -> i64 { - self.max_number_of_timed_events - } - pub fn clear_max_number_of_timed_events(&mut self) { - self.max_number_of_timed_events = 0; - } - - // Param is passed by value, moved - pub fn set_max_number_of_timed_events(&mut self, v: i64) { - self.max_number_of_timed_events = v; - } - - // int64 max_number_of_attributes_per_timed_event = 6; - - - pub fn get_max_number_of_attributes_per_timed_event(&self) -> i64 { - self.max_number_of_attributes_per_timed_event - } - pub fn clear_max_number_of_attributes_per_timed_event(&mut self) { - self.max_number_of_attributes_per_timed_event = 0; - } - - // Param is passed by value, moved - pub fn set_max_number_of_attributes_per_timed_event(&mut self, v: i64) { - self.max_number_of_attributes_per_timed_event = v; - } - - // int64 max_number_of_links = 7; - - - pub fn get_max_number_of_links(&self) -> i64 { - self.max_number_of_links - } - pub fn clear_max_number_of_links(&mut self) { - self.max_number_of_links = 0; - } - - // Param is passed by value, moved - pub fn set_max_number_of_links(&mut self, v: i64) { - self.max_number_of_links = v; - } - - // int64 max_number_of_attributes_per_link = 8; - - - pub fn get_max_number_of_attributes_per_link(&self) -> i64 { - self.max_number_of_attributes_per_link - } - pub fn clear_max_number_of_attributes_per_link(&mut self) { - self.max_number_of_attributes_per_link = 0; - } - - // Param is passed by value, moved - pub fn set_max_number_of_attributes_per_link(&mut self, v: i64) { - self.max_number_of_attributes_per_link = v; - } -} - -impl ::protobuf::Message for TraceConfig { - fn is_initialized(&self) -> bool { - if let Some(TraceConfig_oneof_sampler::constant_sampler(ref v)) = self.sampler { - if !v.is_initialized() { - return false; - } - } - if let Some(TraceConfig_oneof_sampler::trace_id_ratio_based(ref v)) = self.sampler { - if !v.is_initialized() { - return false; - } - } - if let Some(TraceConfig_oneof_sampler::rate_limiting_sampler(ref v)) = self.sampler { - if !v.is_initialized() { - return false; - } - } - true - } - - fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> { - while !is.eof()? { - let (field_number, wire_type) = is.read_tag_unpack()?; - match field_number { - 1 => { - if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited { - return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); - } - self.sampler = ::std::option::Option::Some(TraceConfig_oneof_sampler::constant_sampler(is.read_message()?)); - }, - 2 => { - if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited { - return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); - } - self.sampler = ::std::option::Option::Some(TraceConfig_oneof_sampler::trace_id_ratio_based(is.read_message()?)); - }, - 3 => { - if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited { - return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); - } - self.sampler = ::std::option::Option::Some(TraceConfig_oneof_sampler::rate_limiting_sampler(is.read_message()?)); - }, - 4 => { - if wire_type != ::protobuf::wire_format::WireTypeVarint { - return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); - } - let tmp = is.read_int64()?; - self.max_number_of_attributes = tmp; - }, - 5 => { - if wire_type != ::protobuf::wire_format::WireTypeVarint { - return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); - } - let tmp = is.read_int64()?; - self.max_number_of_timed_events = tmp; - }, - 6 => { - if wire_type != ::protobuf::wire_format::WireTypeVarint { - return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); - } - let tmp = is.read_int64()?; - self.max_number_of_attributes_per_timed_event = tmp; - }, - 7 => { - if wire_type != ::protobuf::wire_format::WireTypeVarint { - return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); - } - let tmp = is.read_int64()?; - self.max_number_of_links = tmp; - }, - 8 => { - if wire_type != ::protobuf::wire_format::WireTypeVarint { - return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); - } - let tmp = is.read_int64()?; - self.max_number_of_attributes_per_link = tmp; - }, - _ => { - ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; - }, - }; - } - ::std::result::Result::Ok(()) - } - - // Compute sizes of nested messages - #[allow(unused_variables)] - fn compute_size(&self) -> u32 { - let mut my_size = 0; - if self.max_number_of_attributes != 0 { - my_size += ::protobuf::rt::value_size(4, self.max_number_of_attributes, ::protobuf::wire_format::WireTypeVarint); - } - if self.max_number_of_timed_events != 0 { - my_size += ::protobuf::rt::value_size(5, self.max_number_of_timed_events, ::protobuf::wire_format::WireTypeVarint); - } - if self.max_number_of_attributes_per_timed_event != 0 { - my_size += ::protobuf::rt::value_size(6, self.max_number_of_attributes_per_timed_event, ::protobuf::wire_format::WireTypeVarint); - } - if self.max_number_of_links != 0 { - my_size += ::protobuf::rt::value_size(7, self.max_number_of_links, ::protobuf::wire_format::WireTypeVarint); - } - if self.max_number_of_attributes_per_link != 0 { - my_size += ::protobuf::rt::value_size(8, self.max_number_of_attributes_per_link, ::protobuf::wire_format::WireTypeVarint); - } - if let ::std::option::Option::Some(ref v) = self.sampler { - match v { - &TraceConfig_oneof_sampler::constant_sampler(ref v) => { - let len = v.compute_size(); - my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; - }, - &TraceConfig_oneof_sampler::trace_id_ratio_based(ref v) => { - let len = v.compute_size(); - my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; - }, - &TraceConfig_oneof_sampler::rate_limiting_sampler(ref v) => { - let len = v.compute_size(); - my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; - }, - }; - } - my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); - self.cached_size.set(my_size); - my_size - } - - fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> { - if self.max_number_of_attributes != 0 { - os.write_int64(4, self.max_number_of_attributes)?; - } - if self.max_number_of_timed_events != 0 { - os.write_int64(5, self.max_number_of_timed_events)?; - } - if self.max_number_of_attributes_per_timed_event != 0 { - os.write_int64(6, self.max_number_of_attributes_per_timed_event)?; - } - if self.max_number_of_links != 0 { - os.write_int64(7, self.max_number_of_links)?; - } - if self.max_number_of_attributes_per_link != 0 { - os.write_int64(8, self.max_number_of_attributes_per_link)?; - } - if let ::std::option::Option::Some(ref v) = self.sampler { - match v { - &TraceConfig_oneof_sampler::constant_sampler(ref v) => { - os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?; - os.write_raw_varint32(v.get_cached_size())?; - v.write_to_with_cached_sizes(os)?; - }, - &TraceConfig_oneof_sampler::trace_id_ratio_based(ref v) => { - os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?; - os.write_raw_varint32(v.get_cached_size())?; - v.write_to_with_cached_sizes(os)?; - }, - &TraceConfig_oneof_sampler::rate_limiting_sampler(ref v) => { - os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?; - os.write_raw_varint32(v.get_cached_size())?; - v.write_to_with_cached_sizes(os)?; - }, - }; - } - os.write_unknown_fields(self.get_unknown_fields())?; - ::std::result::Result::Ok(()) - } - - fn get_cached_size(&self) -> u32 { - self.cached_size.get() - } - - fn get_unknown_fields(&self) -> &::protobuf::UnknownFields { - &self.unknown_fields - } - - fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields { - &mut self.unknown_fields - } - - fn as_any(&self) -> &dyn (::std::any::Any) { - self as &dyn (::std::any::Any) - } - fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) { - self as &mut dyn (::std::any::Any) - } - fn into_any(self: ::std::boxed::Box) -> ::std::boxed::Box { - self - } - - fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor { - Self::descriptor_static() - } - - fn new() -> TraceConfig { - TraceConfig::new() - } - - fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { - static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT; - descriptor.get(|| { - let mut fields = ::std::vec::Vec::new(); - fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, ConstantSampler>( - "constant_sampler", - TraceConfig::has_constant_sampler, - TraceConfig::get_constant_sampler, - )); - fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, TraceIdRatioBased>( - "trace_id_ratio_based", - TraceConfig::has_trace_id_ratio_based, - TraceConfig::get_trace_id_ratio_based, - )); - fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, RateLimitingSampler>( - "rate_limiting_sampler", - TraceConfig::has_rate_limiting_sampler, - TraceConfig::get_rate_limiting_sampler, - )); - fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>( - "max_number_of_attributes", - |m: &TraceConfig| { &m.max_number_of_attributes }, - |m: &mut TraceConfig| { &mut m.max_number_of_attributes }, - )); - fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>( - "max_number_of_timed_events", - |m: &TraceConfig| { &m.max_number_of_timed_events }, - |m: &mut TraceConfig| { &mut m.max_number_of_timed_events }, - )); - fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>( - "max_number_of_attributes_per_timed_event", - |m: &TraceConfig| { &m.max_number_of_attributes_per_timed_event }, - |m: &mut TraceConfig| { &mut m.max_number_of_attributes_per_timed_event }, - )); - fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>( - "max_number_of_links", - |m: &TraceConfig| { &m.max_number_of_links }, - |m: &mut TraceConfig| { &mut m.max_number_of_links }, - )); - fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>( - "max_number_of_attributes_per_link", - |m: &TraceConfig| { &m.max_number_of_attributes_per_link }, - |m: &mut TraceConfig| { &mut m.max_number_of_attributes_per_link }, - )); - ::protobuf::reflect::MessageDescriptor::new_pb_name::( - "TraceConfig", - fields, - file_descriptor_proto() - ) - }) - } - - fn default_instance() -> &'static TraceConfig { - static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; - instance.get(TraceConfig::new) - } -} - -impl ::protobuf::Clear for TraceConfig { - fn clear(&mut self) { - self.sampler = ::std::option::Option::None; - self.sampler = ::std::option::Option::None; - self.sampler = ::std::option::Option::None; - self.max_number_of_attributes = 0; - self.max_number_of_timed_events = 0; - self.max_number_of_attributes_per_timed_event = 0; - self.max_number_of_links = 0; - self.max_number_of_attributes_per_link = 0; - self.unknown_fields.clear(); - } -} - -impl ::std::fmt::Debug for TraceConfig { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - ::protobuf::text_format::fmt(self, f) - } -} - -impl ::protobuf::reflect::ProtobufValue for TraceConfig { - fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { - ::protobuf::reflect::ReflectValueRef::Message(self) - } -} - -#[derive(PartialEq,Clone,Default)] -#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] -pub struct ConstantSampler { - // message fields - pub decision: ConstantSampler_ConstantDecision, - // special fields - #[cfg_attr(feature = "with-serde", serde(skip))] - pub unknown_fields: ::protobuf::UnknownFields, - #[cfg_attr(feature = "with-serde", serde(skip))] - pub cached_size: ::protobuf::CachedSize, -} - -impl<'a> ::std::default::Default for &'a ConstantSampler { - fn default() -> &'a ConstantSampler { - ::default_instance() - } -} - -impl ConstantSampler { - pub fn new() -> ConstantSampler { - ::std::default::Default::default() - } - - // .opentelemetry.proto.trace.v1.ConstantSampler.ConstantDecision decision = 1; - - - pub fn get_decision(&self) -> ConstantSampler_ConstantDecision { - self.decision - } - pub fn clear_decision(&mut self) { - self.decision = ConstantSampler_ConstantDecision::ALWAYS_OFF; - } - - // Param is passed by value, moved - pub fn set_decision(&mut self, v: ConstantSampler_ConstantDecision) { - self.decision = v; - } -} - -impl ::protobuf::Message for ConstantSampler { - fn is_initialized(&self) -> bool { - true - } - - fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> { - while !is.eof()? { - let (field_number, wire_type) = is.read_tag_unpack()?; - match field_number { - 1 => { - ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.decision, 1, &mut self.unknown_fields)? - }, - _ => { - ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; - }, - }; - } - ::std::result::Result::Ok(()) - } - - // Compute sizes of nested messages - #[allow(unused_variables)] - fn compute_size(&self) -> u32 { - let mut my_size = 0; - if self.decision != ConstantSampler_ConstantDecision::ALWAYS_OFF { - my_size += ::protobuf::rt::enum_size(1, self.decision); - } - my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); - self.cached_size.set(my_size); - my_size - } - - fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> { - if self.decision != ConstantSampler_ConstantDecision::ALWAYS_OFF { - os.write_enum(1, ::protobuf::ProtobufEnum::value(&self.decision))?; - } - os.write_unknown_fields(self.get_unknown_fields())?; - ::std::result::Result::Ok(()) - } - - fn get_cached_size(&self) -> u32 { - self.cached_size.get() - } - - fn get_unknown_fields(&self) -> &::protobuf::UnknownFields { - &self.unknown_fields - } - - fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields { - &mut self.unknown_fields - } - - fn as_any(&self) -> &dyn (::std::any::Any) { - self as &dyn (::std::any::Any) - } - fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) { - self as &mut dyn (::std::any::Any) - } - fn into_any(self: ::std::boxed::Box) -> ::std::boxed::Box { - self - } - - fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor { - Self::descriptor_static() - } - - fn new() -> ConstantSampler { - ConstantSampler::new() - } - - fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { - static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT; - descriptor.get(|| { - let mut fields = ::std::vec::Vec::new(); - fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum>( - "decision", - |m: &ConstantSampler| { &m.decision }, - |m: &mut ConstantSampler| { &mut m.decision }, - )); - ::protobuf::reflect::MessageDescriptor::new_pb_name::( - "ConstantSampler", - fields, - file_descriptor_proto() - ) - }) - } - - fn default_instance() -> &'static ConstantSampler { - static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; - instance.get(ConstantSampler::new) - } -} - -impl ::protobuf::Clear for ConstantSampler { - fn clear(&mut self) { - self.decision = ConstantSampler_ConstantDecision::ALWAYS_OFF; - self.unknown_fields.clear(); - } -} - -impl ::std::fmt::Debug for ConstantSampler { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - ::protobuf::text_format::fmt(self, f) - } -} - -impl ::protobuf::reflect::ProtobufValue for ConstantSampler { - fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { - ::protobuf::reflect::ReflectValueRef::Message(self) - } -} - -#[derive(Clone,PartialEq,Eq,Debug,Hash)] -#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] -pub enum ConstantSampler_ConstantDecision { - ALWAYS_OFF = 0, - ALWAYS_ON = 1, - ALWAYS_PARENT = 2, -} - -impl ::protobuf::ProtobufEnum for ConstantSampler_ConstantDecision { - fn value(&self) -> i32 { - *self as i32 - } - - fn from_i32(value: i32) -> ::std::option::Option { - match value { - 0 => ::std::option::Option::Some(ConstantSampler_ConstantDecision::ALWAYS_OFF), - 1 => ::std::option::Option::Some(ConstantSampler_ConstantDecision::ALWAYS_ON), - 2 => ::std::option::Option::Some(ConstantSampler_ConstantDecision::ALWAYS_PARENT), - _ => ::std::option::Option::None - } - } - - fn values() -> &'static [Self] { - static values: &'static [ConstantSampler_ConstantDecision] = &[ - ConstantSampler_ConstantDecision::ALWAYS_OFF, - ConstantSampler_ConstantDecision::ALWAYS_ON, - ConstantSampler_ConstantDecision::ALWAYS_PARENT, - ]; - values - } - - fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor { - static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT; - descriptor.get(|| { - ::protobuf::reflect::EnumDescriptor::new_pb_name::("ConstantSampler.ConstantDecision", file_descriptor_proto()) - }) - } -} - -impl ::std::marker::Copy for ConstantSampler_ConstantDecision { -} - -impl ::std::default::Default for ConstantSampler_ConstantDecision { - fn default() -> Self { - ConstantSampler_ConstantDecision::ALWAYS_OFF - } -} - -impl ::protobuf::reflect::ProtobufValue for ConstantSampler_ConstantDecision { - fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { - ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self)) - } -} - -#[derive(PartialEq,Clone,Default)] -#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] -pub struct TraceIdRatioBased { - // message fields - pub samplingRatio: f64, - // special fields - #[cfg_attr(feature = "with-serde", serde(skip))] - pub unknown_fields: ::protobuf::UnknownFields, - #[cfg_attr(feature = "with-serde", serde(skip))] - pub cached_size: ::protobuf::CachedSize, -} - -impl<'a> ::std::default::Default for &'a TraceIdRatioBased { - fn default() -> &'a TraceIdRatioBased { - ::default_instance() - } -} - -impl TraceIdRatioBased { - pub fn new() -> TraceIdRatioBased { - ::std::default::Default::default() - } - - // double samplingRatio = 1; - - - pub fn get_samplingRatio(&self) -> f64 { - self.samplingRatio - } - pub fn clear_samplingRatio(&mut self) { - self.samplingRatio = 0.; - } - - // Param is passed by value, moved - pub fn set_samplingRatio(&mut self, v: f64) { - self.samplingRatio = v; - } -} - -impl ::protobuf::Message for TraceIdRatioBased { - fn is_initialized(&self) -> bool { - true - } - - fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> { - while !is.eof()? { - let (field_number, wire_type) = is.read_tag_unpack()?; - match field_number { - 1 => { - if wire_type != ::protobuf::wire_format::WireTypeFixed64 { - return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); - } - let tmp = is.read_double()?; - self.samplingRatio = tmp; - }, - _ => { - ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; - }, - }; - } - ::std::result::Result::Ok(()) - } - - // Compute sizes of nested messages - #[allow(unused_variables)] - fn compute_size(&self) -> u32 { - let mut my_size = 0; - if self.samplingRatio != 0. { - my_size += 9; - } - my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); - self.cached_size.set(my_size); - my_size - } - - fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> { - if self.samplingRatio != 0. { - os.write_double(1, self.samplingRatio)?; - } - os.write_unknown_fields(self.get_unknown_fields())?; - ::std::result::Result::Ok(()) - } - - fn get_cached_size(&self) -> u32 { - self.cached_size.get() - } - - fn get_unknown_fields(&self) -> &::protobuf::UnknownFields { - &self.unknown_fields - } - - fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields { - &mut self.unknown_fields - } - - fn as_any(&self) -> &dyn (::std::any::Any) { - self as &dyn (::std::any::Any) - } - fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) { - self as &mut dyn (::std::any::Any) - } - fn into_any(self: ::std::boxed::Box) -> ::std::boxed::Box { - self - } - - fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor { - Self::descriptor_static() - } - - fn new() -> TraceIdRatioBased { - TraceIdRatioBased::new() - } - - fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { - static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT; - descriptor.get(|| { - let mut fields = ::std::vec::Vec::new(); - fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>( - "samplingRatio", - |m: &TraceIdRatioBased| { &m.samplingRatio }, - |m: &mut TraceIdRatioBased| { &mut m.samplingRatio }, - )); - ::protobuf::reflect::MessageDescriptor::new_pb_name::( - "TraceIdRatioBased", - fields, - file_descriptor_proto() - ) - }) - } - - fn default_instance() -> &'static TraceIdRatioBased { - static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; - instance.get(TraceIdRatioBased::new) - } -} - -impl ::protobuf::Clear for TraceIdRatioBased { - fn clear(&mut self) { - self.samplingRatio = 0.; - self.unknown_fields.clear(); - } -} - -impl ::std::fmt::Debug for TraceIdRatioBased { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - ::protobuf::text_format::fmt(self, f) - } -} - -impl ::protobuf::reflect::ProtobufValue for TraceIdRatioBased { - fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { - ::protobuf::reflect::ReflectValueRef::Message(self) - } -} - -#[derive(PartialEq,Clone,Default)] -#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] -pub struct RateLimitingSampler { - // message fields - pub qps: i64, - // special fields - #[cfg_attr(feature = "with-serde", serde(skip))] - pub unknown_fields: ::protobuf::UnknownFields, - #[cfg_attr(feature = "with-serde", serde(skip))] - pub cached_size: ::protobuf::CachedSize, -} - -impl<'a> ::std::default::Default for &'a RateLimitingSampler { - fn default() -> &'a RateLimitingSampler { - ::default_instance() - } -} - -impl RateLimitingSampler { - pub fn new() -> RateLimitingSampler { - ::std::default::Default::default() - } - - // int64 qps = 1; - - - pub fn get_qps(&self) -> i64 { - self.qps - } - pub fn clear_qps(&mut self) { - self.qps = 0; - } - - // Param is passed by value, moved - pub fn set_qps(&mut self, v: i64) { - self.qps = v; - } -} - -impl ::protobuf::Message for RateLimitingSampler { - fn is_initialized(&self) -> bool { - true - } - - fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> { - while !is.eof()? { - let (field_number, wire_type) = is.read_tag_unpack()?; - match field_number { - 1 => { - if wire_type != ::protobuf::wire_format::WireTypeVarint { - return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); - } - let tmp = is.read_int64()?; - self.qps = tmp; - }, - _ => { - ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; - }, - }; - } - ::std::result::Result::Ok(()) - } - - // Compute sizes of nested messages - #[allow(unused_variables)] - fn compute_size(&self) -> u32 { - let mut my_size = 0; - if self.qps != 0 { - my_size += ::protobuf::rt::value_size(1, self.qps, ::protobuf::wire_format::WireTypeVarint); - } - my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); - self.cached_size.set(my_size); - my_size - } - - fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> { - if self.qps != 0 { - os.write_int64(1, self.qps)?; - } - os.write_unknown_fields(self.get_unknown_fields())?; - ::std::result::Result::Ok(()) - } - - fn get_cached_size(&self) -> u32 { - self.cached_size.get() - } - - fn get_unknown_fields(&self) -> &::protobuf::UnknownFields { - &self.unknown_fields - } - - fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields { - &mut self.unknown_fields - } - - fn as_any(&self) -> &dyn (::std::any::Any) { - self as &dyn (::std::any::Any) - } - fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) { - self as &mut dyn (::std::any::Any) - } - fn into_any(self: ::std::boxed::Box) -> ::std::boxed::Box { - self - } - - fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor { - Self::descriptor_static() - } - - fn new() -> RateLimitingSampler { - RateLimitingSampler::new() - } - - fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { - static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT; - descriptor.get(|| { - let mut fields = ::std::vec::Vec::new(); - fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>( - "qps", - |m: &RateLimitingSampler| { &m.qps }, - |m: &mut RateLimitingSampler| { &mut m.qps }, - )); - ::protobuf::reflect::MessageDescriptor::new_pb_name::( - "RateLimitingSampler", - fields, - file_descriptor_proto() - ) - }) - } - - fn default_instance() -> &'static RateLimitingSampler { - static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; - instance.get(RateLimitingSampler::new) - } -} - -impl ::protobuf::Clear for RateLimitingSampler { - fn clear(&mut self) { - self.qps = 0; - self.unknown_fields.clear(); - } -} - -impl ::std::fmt::Debug for RateLimitingSampler { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - ::protobuf::text_format::fmt(self, f) - } -} - -impl ::protobuf::reflect::ProtobufValue for RateLimitingSampler { - fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { - ::protobuf::reflect::ReflectValueRef::Message(self) - } -} - -static file_descriptor_proto_data: &'static [u8] = b"\ - \n/opentelemetry/proto/trace/v1/trace_config.proto\x12\x1copentelemetry.\ - proto.trace.v1\"\x84\x05\n\x0bTraceConfig\x12Z\n\x10constant_sampler\x18\ - \x01\x20\x01(\x0b2-.opentelemetry.proto.trace.v1.ConstantSamplerH\0R\x0f\ - constantSampler\x12b\n\x14trace_id_ratio_based\x18\x02\x20\x01(\x0b2/.op\ - entelemetry.proto.trace.v1.TraceIdRatioBasedH\0R\x11traceIdRatioBased\ - \x12g\n\x15rate_limiting_sampler\x18\x03\x20\x01(\x0b21.opentelemetry.pr\ - oto.trace.v1.RateLimitingSamplerH\0R\x13rateLimitingSampler\x127\n\x18ma\ - x_number_of_attributes\x18\x04\x20\x01(\x03R\x15maxNumberOfAttributes\ - \x12:\n\x1amax_number_of_timed_events\x18\x05\x20\x01(\x03R\x16maxNumber\ - OfTimedEvents\x12T\n(max_number_of_attributes_per_timed_event\x18\x06\ - \x20\x01(\x03R\"maxNumberOfAttributesPerTimedEvent\x12-\n\x13max_number_\ - of_links\x18\x07\x20\x01(\x03R\x10maxNumberOfLinks\x12G\n!max_number_of_\ - attributes_per_link\x18\x08\x20\x01(\x03R\x1cmaxNumberOfAttributesPerLin\ - kB\t\n\x07sampler\"\xb3\x01\n\x0fConstantSampler\x12Z\n\x08decision\x18\ - \x01\x20\x01(\x0e2>.opentelemetry.proto.trace.v1.ConstantSampler.Constan\ - tDecisionR\x08decision\"D\n\x10ConstantDecision\x12\x0e\n\nALWAYS_OFF\ - \x10\0\x12\r\n\tALWAYS_ON\x10\x01\x12\x11\n\rALWAYS_PARENT\x10\x02\"9\n\ - \x11TraceIdRatioBased\x12$\n\rsamplingRatio\x18\x01\x20\x01(\x01R\rsampl\ - ingRatio\"'\n\x13RateLimitingSampler\x12\x10\n\x03qps\x18\x01\x20\x01(\ - \x03R\x03qpsBh\n\x1fio.opentelemetry.proto.trace.v1B\x10TraceConfigProto\ - P\x01Z1go.opentelemetry.io/proto/otlp/collector/trace/v1b\x06proto3\ -"; - -static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT; - -fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto { - ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap() -} - -pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto { - file_descriptor_proto_lazy.get(|| { - parse_descriptor_proto() - }) -} diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/trace.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/trace.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/trace.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/trace.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -// This file is generated by rust-protobuf 2.27.1. Do not edit +// This file is generated by rust-protobuf 2.28.0. Do not edit // @generated // https://github.com/rust-lang/rust-clippy/issues/702 @@ -21,7 +21,7 @@ /// Generated files are compatible only with the same version /// of protobuf runtime. -// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_27_1; +// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_28_0; #[derive(PartialEq,Clone,Default)] #[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] @@ -197,7 +197,7 @@ pub struct ResourceSpans { // message fields pub resource: ::protobuf::SingularPtrField, - pub instrumentation_library_spans: ::protobuf::RepeatedField, + pub scope_spans: ::protobuf::RepeatedField, pub schema_url: ::std::string::String, // special fields #[cfg_attr(feature = "with-serde", serde(skip))] @@ -250,29 +250,29 @@ self.resource.take().unwrap_or_else(|| super::resource::Resource::new()) } - // repeated .opentelemetry.proto.trace.v1.InstrumentationLibrarySpans instrumentation_library_spans = 2; + // repeated .opentelemetry.proto.trace.v1.ScopeSpans scope_spans = 2; - pub fn get_instrumentation_library_spans(&self) -> &[InstrumentationLibrarySpans] { - &self.instrumentation_library_spans + pub fn get_scope_spans(&self) -> &[ScopeSpans] { + &self.scope_spans } - pub fn clear_instrumentation_library_spans(&mut self) { - self.instrumentation_library_spans.clear(); + pub fn clear_scope_spans(&mut self) { + self.scope_spans.clear(); } // Param is passed by value, moved - pub fn set_instrumentation_library_spans(&mut self, v: ::protobuf::RepeatedField) { - self.instrumentation_library_spans = v; + pub fn set_scope_spans(&mut self, v: ::protobuf::RepeatedField) { + self.scope_spans = v; } // Mutable pointer to the field. - pub fn mut_instrumentation_library_spans(&mut self) -> &mut ::protobuf::RepeatedField { - &mut self.instrumentation_library_spans + pub fn mut_scope_spans(&mut self) -> &mut ::protobuf::RepeatedField { + &mut self.scope_spans } // Take field - pub fn take_instrumentation_library_spans(&mut self) -> ::protobuf::RepeatedField { - ::std::mem::replace(&mut self.instrumentation_library_spans, ::protobuf::RepeatedField::new()) + pub fn take_scope_spans(&mut self) -> ::protobuf::RepeatedField { + ::std::mem::replace(&mut self.scope_spans, ::protobuf::RepeatedField::new()) } // string schema_url = 3; @@ -309,7 +309,7 @@ return false; } }; - for v in &self.instrumentation_library_spans { + for v in &self.scope_spans { if !v.is_initialized() { return false; } @@ -325,7 +325,7 @@ ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.resource)?; }, 2 => { - ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.instrumentation_library_spans)?; + ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.scope_spans)?; }, 3 => { ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.schema_url)?; @@ -346,7 +346,7 @@ let len = v.compute_size(); my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; } - for value in &self.instrumentation_library_spans { + for value in &self.scope_spans { let len = value.compute_size(); my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; }; @@ -364,7 +364,7 @@ os.write_raw_varint32(v.get_cached_size())?; v.write_to_with_cached_sizes(os)?; } - for v in &self.instrumentation_library_spans { + for v in &self.scope_spans { os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?; os.write_raw_varint32(v.get_cached_size())?; v.write_to_with_cached_sizes(os)?; @@ -415,10 +415,10 @@ |m: &ResourceSpans| { &m.resource }, |m: &mut ResourceSpans| { &mut m.resource }, )); - fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( - "instrumentation_library_spans", - |m: &ResourceSpans| { &m.instrumentation_library_spans }, - |m: &mut ResourceSpans| { &mut m.instrumentation_library_spans }, + fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( + "scope_spans", + |m: &ResourceSpans| { &m.scope_spans }, + |m: &mut ResourceSpans| { &mut m.scope_spans }, )); fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( "schema_url", @@ -442,7 +442,7 @@ impl ::protobuf::Clear for ResourceSpans { fn clear(&mut self) { self.resource.clear(); - self.instrumentation_library_spans.clear(); + self.scope_spans.clear(); self.schema_url.clear(); self.unknown_fields.clear(); } @@ -462,9 +462,9 @@ #[derive(PartialEq,Clone,Default)] #[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] -pub struct InstrumentationLibrarySpans { +pub struct ScopeSpans { // message fields - pub instrumentation_library: ::protobuf::SingularPtrField, + pub scope: ::protobuf::SingularPtrField, pub spans: ::protobuf::RepeatedField, pub schema_url: ::std::string::String, // special fields @@ -474,48 +474,48 @@ pub cached_size: ::protobuf::CachedSize, } -impl<'a> ::std::default::Default for &'a InstrumentationLibrarySpans { - fn default() -> &'a InstrumentationLibrarySpans { - ::default_instance() +impl<'a> ::std::default::Default for &'a ScopeSpans { + fn default() -> &'a ScopeSpans { + ::default_instance() } } -impl InstrumentationLibrarySpans { - pub fn new() -> InstrumentationLibrarySpans { +impl ScopeSpans { + pub fn new() -> ScopeSpans { ::std::default::Default::default() } - // .opentelemetry.proto.common.v1.InstrumentationLibrary instrumentation_library = 1; + // .opentelemetry.proto.common.v1.InstrumentationScope scope = 1; - pub fn get_instrumentation_library(&self) -> &super::common::InstrumentationLibrary { - self.instrumentation_library.as_ref().unwrap_or_else(|| ::default_instance()) + pub fn get_scope(&self) -> &super::common::InstrumentationScope { + self.scope.as_ref().unwrap_or_else(|| ::default_instance()) } - pub fn clear_instrumentation_library(&mut self) { - self.instrumentation_library.clear(); + pub fn clear_scope(&mut self) { + self.scope.clear(); } - pub fn has_instrumentation_library(&self) -> bool { - self.instrumentation_library.is_some() + pub fn has_scope(&self) -> bool { + self.scope.is_some() } // Param is passed by value, moved - pub fn set_instrumentation_library(&mut self, v: super::common::InstrumentationLibrary) { - self.instrumentation_library = ::protobuf::SingularPtrField::some(v); + pub fn set_scope(&mut self, v: super::common::InstrumentationScope) { + self.scope = ::protobuf::SingularPtrField::some(v); } // Mutable pointer to the field. // If field is not initialized, it is initialized with default value first. - pub fn mut_instrumentation_library(&mut self) -> &mut super::common::InstrumentationLibrary { - if self.instrumentation_library.is_none() { - self.instrumentation_library.set_default(); + pub fn mut_scope(&mut self) -> &mut super::common::InstrumentationScope { + if self.scope.is_none() { + self.scope.set_default(); } - self.instrumentation_library.as_mut().unwrap() + self.scope.as_mut().unwrap() } // Take field - pub fn take_instrumentation_library(&mut self) -> super::common::InstrumentationLibrary { - self.instrumentation_library.take().unwrap_or_else(|| super::common::InstrumentationLibrary::new()) + pub fn take_scope(&mut self) -> super::common::InstrumentationScope { + self.scope.take().unwrap_or_else(|| super::common::InstrumentationScope::new()) } // repeated .opentelemetry.proto.trace.v1.Span spans = 2; @@ -570,9 +570,9 @@ } } -impl ::protobuf::Message for InstrumentationLibrarySpans { +impl ::protobuf::Message for ScopeSpans { fn is_initialized(&self) -> bool { - for v in &self.instrumentation_library { + for v in &self.scope { if !v.is_initialized() { return false; } @@ -590,7 +590,7 @@ let (field_number, wire_type) = is.read_tag_unpack()?; match field_number { 1 => { - ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.instrumentation_library)?; + ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.scope)?; }, 2 => { ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.spans)?; @@ -610,7 +610,7 @@ #[allow(unused_variables)] fn compute_size(&self) -> u32 { let mut my_size = 0; - if let Some(ref v) = self.instrumentation_library.as_ref() { + if let Some(ref v) = self.scope.as_ref() { let len = v.compute_size(); my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; } @@ -627,7 +627,7 @@ } fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> { - if let Some(ref v) = self.instrumentation_library.as_ref() { + if let Some(ref v) = self.scope.as_ref() { os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?; os.write_raw_varint32(v.get_cached_size())?; v.write_to_with_cached_sizes(os)?; @@ -670,59 +670,59 @@ Self::descriptor_static() } - fn new() -> InstrumentationLibrarySpans { - InstrumentationLibrarySpans::new() + fn new() -> ScopeSpans { + ScopeSpans::new() } fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT; descriptor.get(|| { let mut fields = ::std::vec::Vec::new(); - fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( - "instrumentation_library", - |m: &InstrumentationLibrarySpans| { &m.instrumentation_library }, - |m: &mut InstrumentationLibrarySpans| { &mut m.instrumentation_library }, + fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( + "scope", + |m: &ScopeSpans| { &m.scope }, + |m: &mut ScopeSpans| { &mut m.scope }, )); fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( "spans", - |m: &InstrumentationLibrarySpans| { &m.spans }, - |m: &mut InstrumentationLibrarySpans| { &mut m.spans }, + |m: &ScopeSpans| { &m.spans }, + |m: &mut ScopeSpans| { &mut m.spans }, )); fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( "schema_url", - |m: &InstrumentationLibrarySpans| { &m.schema_url }, - |m: &mut InstrumentationLibrarySpans| { &mut m.schema_url }, + |m: &ScopeSpans| { &m.schema_url }, + |m: &mut ScopeSpans| { &mut m.schema_url }, )); - ::protobuf::reflect::MessageDescriptor::new_pb_name::( - "InstrumentationLibrarySpans", + ::protobuf::reflect::MessageDescriptor::new_pb_name::( + "ScopeSpans", fields, file_descriptor_proto() ) }) } - fn default_instance() -> &'static InstrumentationLibrarySpans { - static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; - instance.get(InstrumentationLibrarySpans::new) + fn default_instance() -> &'static ScopeSpans { + static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; + instance.get(ScopeSpans::new) } } -impl ::protobuf::Clear for InstrumentationLibrarySpans { +impl ::protobuf::Clear for ScopeSpans { fn clear(&mut self) { - self.instrumentation_library.clear(); + self.scope.clear(); self.spans.clear(); self.schema_url.clear(); self.unknown_fields.clear(); } } -impl ::std::fmt::Debug for InstrumentationLibrarySpans { +impl ::std::fmt::Debug for ScopeSpans { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { ::protobuf::text_format::fmt(self, f) } } -impl ::protobuf::reflect::ProtobufValue for InstrumentationLibrarySpans { +impl ::protobuf::reflect::ProtobufValue for ScopeSpans { fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { ::protobuf::reflect::ReflectValueRef::Message(self) } @@ -2394,50 +2394,50 @@ race.v1\x1a*opentelemetry/proto/common/v1/common.proto\x1a.opentelemetry\ /proto/resource/v1/resource.proto\"`\n\nTracesData\x12R\n\x0eresource_sp\ ans\x18\x01\x20\x03(\x0b2+.opentelemetry.proto.trace.v1.ResourceSpansR\r\ - resourceSpans\"\xf4\x01\n\rResourceSpans\x12E\n\x08resource\x18\x01\x20\ - \x01(\x0b2).opentelemetry.proto.resource.v1.ResourceR\x08resource\x12}\n\ - \x1dinstrumentation_library_spans\x18\x02\x20\x03(\x0b29.opentelemetry.p\ - roto.trace.v1.InstrumentationLibrarySpansR\x1binstrumentationLibrarySpan\ - s\x12\x1d\n\nschema_url\x18\x03\x20\x01(\tR\tschemaUrl\"\xe6\x01\n\x1bIn\ - strumentationLibrarySpans\x12n\n\x17instrumentation_library\x18\x01\x20\ - \x01(\x0b25.opentelemetry.proto.common.v1.InstrumentationLibraryR\x16ins\ - trumentationLibrary\x128\n\x05spans\x18\x02\x20\x03(\x0b2\".opentelemetr\ - y.proto.trace.v1.SpanR\x05spans\x12\x1d\n\nschema_url\x18\x03\x20\x01(\t\ - R\tschemaUrl\"\x9c\n\n\x04Span\x12\x19\n\x08trace_id\x18\x01\x20\x01(\ - \x0cR\x07traceId\x12\x17\n\x07span_id\x18\x02\x20\x01(\x0cR\x06spanId\ - \x12\x1f\n\x0btrace_state\x18\x03\x20\x01(\tR\ntraceState\x12$\n\x0epare\ - nt_span_id\x18\x04\x20\x01(\x0cR\x0cparentSpanId\x12\x12\n\x04name\x18\ - \x05\x20\x01(\tR\x04name\x12?\n\x04kind\x18\x06\x20\x01(\x0e2+.opentelem\ - etry.proto.trace.v1.Span.SpanKindR\x04kind\x12/\n\x14start_time_unix_nan\ - o\x18\x07\x20\x01(\x06R\x11startTimeUnixNano\x12+\n\x12end_time_unix_nan\ - o\x18\x08\x20\x01(\x06R\x0fendTimeUnixNano\x12G\n\nattributes\x18\t\x20\ + resourceSpans\"\xc8\x01\n\rResourceSpans\x12E\n\x08resource\x18\x01\x20\ + \x01(\x0b2).opentelemetry.proto.resource.v1.ResourceR\x08resource\x12I\n\ + \x0bscope_spans\x18\x02\x20\x03(\x0b2(.opentelemetry.proto.trace.v1.Scop\ + eSpansR\nscopeSpans\x12\x1d\n\nschema_url\x18\x03\x20\x01(\tR\tschemaUrl\ + J\x06\x08\xe8\x07\x10\xe9\x07\"\xb0\x01\n\nScopeSpans\x12I\n\x05scope\ + \x18\x01\x20\x01(\x0b23.opentelemetry.proto.common.v1.InstrumentationSco\ + peR\x05scope\x128\n\x05spans\x18\x02\x20\x03(\x0b2\".opentelemetry.proto\ + .trace.v1.SpanR\x05spans\x12\x1d\n\nschema_url\x18\x03\x20\x01(\tR\tsche\ + maUrl\"\x9c\n\n\x04Span\x12\x19\n\x08trace_id\x18\x01\x20\x01(\x0cR\x07t\ + raceId\x12\x17\n\x07span_id\x18\x02\x20\x01(\x0cR\x06spanId\x12\x1f\n\ + \x0btrace_state\x18\x03\x20\x01(\tR\ntraceState\x12$\n\x0eparent_span_id\ + \x18\x04\x20\x01(\x0cR\x0cparentSpanId\x12\x12\n\x04name\x18\x05\x20\x01\ + (\tR\x04name\x12?\n\x04kind\x18\x06\x20\x01(\x0e2+.opentelemetry.proto.t\ + race.v1.Span.SpanKindR\x04kind\x12/\n\x14start_time_unix_nano\x18\x07\ + \x20\x01(\x06R\x11startTimeUnixNano\x12+\n\x12end_time_unix_nano\x18\x08\ + \x20\x01(\x06R\x0fendTimeUnixNano\x12G\n\nattributes\x18\t\x20\x03(\x0b2\ + '.opentelemetry.proto.common.v1.KeyValueR\nattributes\x128\n\x18dropped_\ + attributes_count\x18\n\x20\x01(\rR\x16droppedAttributesCount\x12@\n\x06e\ + vents\x18\x0b\x20\x03(\x0b2(.opentelemetry.proto.trace.v1.Span.EventR\ + \x06events\x120\n\x14dropped_events_count\x18\x0c\x20\x01(\rR\x12dropped\ + EventsCount\x12=\n\x05links\x18\r\x20\x03(\x0b2'.opentelemetry.proto.tra\ + ce.v1.Span.LinkR\x05links\x12.\n\x13dropped_links_count\x18\x0e\x20\x01(\ + \rR\x11droppedLinksCount\x12<\n\x06status\x18\x0f\x20\x01(\x0b2$.opentel\ + emetry.proto.trace.v1.StatusR\x06status\x1a\xc4\x01\n\x05Event\x12$\n\ + \x0etime_unix_nano\x18\x01\x20\x01(\x06R\x0ctimeUnixNano\x12\x12\n\x04na\ + me\x18\x02\x20\x01(\tR\x04name\x12G\n\nattributes\x18\x03\x20\x03(\x0b2'\ + .opentelemetry.proto.common.v1.KeyValueR\nattributes\x128\n\x18dropped_a\ + ttributes_count\x18\x04\x20\x01(\rR\x16droppedAttributesCount\x1a\xde\ + \x01\n\x04Link\x12\x19\n\x08trace_id\x18\x01\x20\x01(\x0cR\x07traceId\ + \x12\x17\n\x07span_id\x18\x02\x20\x01(\x0cR\x06spanId\x12\x1f\n\x0btrace\ + _state\x18\x03\x20\x01(\tR\ntraceState\x12G\n\nattributes\x18\x04\x20\ \x03(\x0b2'.opentelemetry.proto.common.v1.KeyValueR\nattributes\x128\n\ - \x18dropped_attributes_count\x18\n\x20\x01(\rR\x16droppedAttributesCount\ - \x12@\n\x06events\x18\x0b\x20\x03(\x0b2(.opentelemetry.proto.trace.v1.Sp\ - an.EventR\x06events\x120\n\x14dropped_events_count\x18\x0c\x20\x01(\rR\ - \x12droppedEventsCount\x12=\n\x05links\x18\r\x20\x03(\x0b2'.opentelemetr\ - y.proto.trace.v1.Span.LinkR\x05links\x12.\n\x13dropped_links_count\x18\ - \x0e\x20\x01(\rR\x11droppedLinksCount\x12<\n\x06status\x18\x0f\x20\x01(\ - \x0b2$.opentelemetry.proto.trace.v1.StatusR\x06status\x1a\xc4\x01\n\x05E\ - vent\x12$\n\x0etime_unix_nano\x18\x01\x20\x01(\x06R\x0ctimeUnixNano\x12\ - \x12\n\x04name\x18\x02\x20\x01(\tR\x04name\x12G\n\nattributes\x18\x03\ - \x20\x03(\x0b2'.opentelemetry.proto.common.v1.KeyValueR\nattributes\x128\ - \n\x18dropped_attributes_count\x18\x04\x20\x01(\rR\x16droppedAttributesC\ - ount\x1a\xde\x01\n\x04Link\x12\x19\n\x08trace_id\x18\x01\x20\x01(\x0cR\ - \x07traceId\x12\x17\n\x07span_id\x18\x02\x20\x01(\x0cR\x06spanId\x12\x1f\ - \n\x0btrace_state\x18\x03\x20\x01(\tR\ntraceState\x12G\n\nattributes\x18\ - \x04\x20\x03(\x0b2'.opentelemetry.proto.common.v1.KeyValueR\nattributes\ - \x128\n\x18dropped_attributes_count\x18\x05\x20\x01(\rR\x16droppedAttrib\ - utesCount\"\x99\x01\n\x08SpanKind\x12\x19\n\x15SPAN_KIND_UNSPECIFIED\x10\ - \0\x12\x16\n\x12SPAN_KIND_INTERNAL\x10\x01\x12\x14\n\x10SPAN_KIND_SERVER\ - \x10\x02\x12\x14\n\x10SPAN_KIND_CLIENT\x10\x03\x12\x16\n\x12SPAN_KIND_PR\ - ODUCER\x10\x04\x12\x16\n\x12SPAN_KIND_CONSUMER\x10\x05\"\xbd\x01\n\x06St\ - atus\x12\x18\n\x07message\x18\x02\x20\x01(\tR\x07message\x12C\n\x04code\ - \x18\x03\x20\x01(\x0e2/.opentelemetry.proto.trace.v1.Status.StatusCodeR\ - \x04code\"N\n\nStatusCode\x12\x15\n\x11STATUS_CODE_UNSET\x10\0\x12\x12\n\ - \x0eSTATUS_CODE_OK\x10\x01\x12\x15\n\x11STATUS_CODE_ERROR\x10\x02J\x04\ - \x08\x01\x10\x02BX\n\x1fio.opentelemetry.proto.trace.v1B\nTraceProtoP\ - \x01Z'go.opentelemetry.io/proto/otlp/trace/v1b\x06proto3\ + \x18dropped_attributes_count\x18\x05\x20\x01(\rR\x16droppedAttributesCou\ + nt\"\x99\x01\n\x08SpanKind\x12\x19\n\x15SPAN_KIND_UNSPECIFIED\x10\0\x12\ + \x16\n\x12SPAN_KIND_INTERNAL\x10\x01\x12\x14\n\x10SPAN_KIND_SERVER\x10\ + \x02\x12\x14\n\x10SPAN_KIND_CLIENT\x10\x03\x12\x16\n\x12SPAN_KIND_PRODUC\ + ER\x10\x04\x12\x16\n\x12SPAN_KIND_CONSUMER\x10\x05\"\xbd\x01\n\x06Status\ + \x12\x18\n\x07message\x18\x02\x20\x01(\tR\x07message\x12C\n\x04code\x18\ + \x03\x20\x01(\x0e2/.opentelemetry.proto.trace.v1.Status.StatusCodeR\x04c\ + ode\"N\n\nStatusCode\x12\x15\n\x11STATUS_CODE_UNSET\x10\0\x12\x12\n\x0eS\ + TATUS_CODE_OK\x10\x01\x12\x15\n\x11STATUS_CODE_ERROR\x10\x02J\x04\x08\ + \x01\x10\x02Bw\n\x1fio.opentelemetry.proto.trace.v1B\nTraceProtoP\x01Z'g\ + o.opentelemetry.io/proto/otlp/trace/v1\xaa\x02\x1cOpenTelemetry.Proto.Tr\ + ace.V1b\x06proto3\ "; static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT; diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/trace_service.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/trace_service.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/trace_service.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/trace_service.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -// This file is generated by rust-protobuf 2.27.1. Do not edit +// This file is generated by rust-protobuf 2.28.0. Do not edit // @generated // https://github.com/rust-lang/rust-clippy/issues/702 @@ -21,7 +21,7 @@ /// Generated files are compatible only with the same version /// of protobuf runtime. -// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_27_1; +// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_28_0; #[derive(PartialEq,Clone,Default)] #[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] @@ -195,6 +195,8 @@ #[derive(PartialEq,Clone,Default)] #[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] pub struct ExportTraceServiceResponse { + // message fields + pub partial_success: ::protobuf::SingularPtrField, // special fields #[cfg_attr(feature = "with-serde", serde(skip))] pub unknown_fields: ::protobuf::UnknownFields, @@ -212,10 +214,48 @@ pub fn new() -> ExportTraceServiceResponse { ::std::default::Default::default() } + + // .opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess partial_success = 1; + + + pub fn get_partial_success(&self) -> &ExportTracePartialSuccess { + self.partial_success.as_ref().unwrap_or_else(|| ::default_instance()) + } + pub fn clear_partial_success(&mut self) { + self.partial_success.clear(); + } + + pub fn has_partial_success(&self) -> bool { + self.partial_success.is_some() + } + + // Param is passed by value, moved + pub fn set_partial_success(&mut self, v: ExportTracePartialSuccess) { + self.partial_success = ::protobuf::SingularPtrField::some(v); + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_partial_success(&mut self) -> &mut ExportTracePartialSuccess { + if self.partial_success.is_none() { + self.partial_success.set_default(); + } + self.partial_success.as_mut().unwrap() + } + + // Take field + pub fn take_partial_success(&mut self) -> ExportTracePartialSuccess { + self.partial_success.take().unwrap_or_else(|| ExportTracePartialSuccess::new()) + } } impl ::protobuf::Message for ExportTraceServiceResponse { fn is_initialized(&self) -> bool { + for v in &self.partial_success { + if !v.is_initialized() { + return false; + } + }; true } @@ -223,6 +263,9 @@ while !is.eof()? { let (field_number, wire_type) = is.read_tag_unpack()?; match field_number { + 1 => { + ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.partial_success)?; + }, _ => { ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; }, @@ -235,12 +278,21 @@ #[allow(unused_variables)] fn compute_size(&self) -> u32 { let mut my_size = 0; + if let Some(ref v) = self.partial_success.as_ref() { + let len = v.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; + } my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); self.cached_size.set(my_size); my_size } fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> { + if let Some(ref v) = self.partial_success.as_ref() { + os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?; + os.write_raw_varint32(v.get_cached_size())?; + v.write_to_with_cached_sizes(os)?; + } os.write_unknown_fields(self.get_unknown_fields())?; ::std::result::Result::Ok(()) } @@ -278,7 +330,12 @@ fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT; descriptor.get(|| { - let fields = ::std::vec::Vec::new(); + let mut fields = ::std::vec::Vec::new(); + fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( + "partial_success", + |m: &ExportTraceServiceResponse| { &m.partial_success }, + |m: &mut ExportTraceServiceResponse| { &mut m.partial_success }, + )); ::protobuf::reflect::MessageDescriptor::new_pb_name::( "ExportTraceServiceResponse", fields, @@ -295,6 +352,7 @@ impl ::protobuf::Clear for ExportTraceServiceResponse { fn clear(&mut self) { + self.partial_success.clear(); self.unknown_fields.clear(); } } @@ -311,17 +369,219 @@ } } +#[derive(PartialEq,Clone,Default)] +#[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] +pub struct ExportTracePartialSuccess { + // message fields + pub rejected_spans: i64, + pub error_message: ::std::string::String, + // special fields + #[cfg_attr(feature = "with-serde", serde(skip))] + pub unknown_fields: ::protobuf::UnknownFields, + #[cfg_attr(feature = "with-serde", serde(skip))] + pub cached_size: ::protobuf::CachedSize, +} + +impl<'a> ::std::default::Default for &'a ExportTracePartialSuccess { + fn default() -> &'a ExportTracePartialSuccess { + ::default_instance() + } +} + +impl ExportTracePartialSuccess { + pub fn new() -> ExportTracePartialSuccess { + ::std::default::Default::default() + } + + // int64 rejected_spans = 1; + + + pub fn get_rejected_spans(&self) -> i64 { + self.rejected_spans + } + pub fn clear_rejected_spans(&mut self) { + self.rejected_spans = 0; + } + + // Param is passed by value, moved + pub fn set_rejected_spans(&mut self, v: i64) { + self.rejected_spans = v; + } + + // string error_message = 2; + + + pub fn get_error_message(&self) -> &str { + &self.error_message + } + pub fn clear_error_message(&mut self) { + self.error_message.clear(); + } + + // Param is passed by value, moved + pub fn set_error_message(&mut self, v: ::std::string::String) { + self.error_message = v; + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_error_message(&mut self) -> &mut ::std::string::String { + &mut self.error_message + } + + // Take field + pub fn take_error_message(&mut self) -> ::std::string::String { + ::std::mem::replace(&mut self.error_message, ::std::string::String::new()) + } +} + +impl ::protobuf::Message for ExportTracePartialSuccess { + fn is_initialized(&self) -> bool { + true + } + + fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> { + while !is.eof()? { + let (field_number, wire_type) = is.read_tag_unpack()?; + match field_number { + 1 => { + if wire_type != ::protobuf::wire_format::WireTypeVarint { + return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type)); + } + let tmp = is.read_int64()?; + self.rejected_spans = tmp; + }, + 2 => { + ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.error_message)?; + }, + _ => { + ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; + }, + }; + } + ::std::result::Result::Ok(()) + } + + // Compute sizes of nested messages + #[allow(unused_variables)] + fn compute_size(&self) -> u32 { + let mut my_size = 0; + if self.rejected_spans != 0 { + my_size += ::protobuf::rt::value_size(1, self.rejected_spans, ::protobuf::wire_format::WireTypeVarint); + } + if !self.error_message.is_empty() { + my_size += ::protobuf::rt::string_size(2, &self.error_message); + } + my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); + self.cached_size.set(my_size); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> { + if self.rejected_spans != 0 { + os.write_int64(1, self.rejected_spans)?; + } + if !self.error_message.is_empty() { + os.write_string(2, &self.error_message)?; + } + os.write_unknown_fields(self.get_unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn get_cached_size(&self) -> u32 { + self.cached_size.get() + } + + fn get_unknown_fields(&self) -> &::protobuf::UnknownFields { + &self.unknown_fields + } + + fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields { + &mut self.unknown_fields + } + + fn as_any(&self) -> &dyn (::std::any::Any) { + self as &dyn (::std::any::Any) + } + fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) { + self as &mut dyn (::std::any::Any) + } + fn into_any(self: ::std::boxed::Box) -> ::std::boxed::Box { + self + } + + fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor { + Self::descriptor_static() + } + + fn new() -> ExportTracePartialSuccess { + ExportTracePartialSuccess::new() + } + + fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT; + descriptor.get(|| { + let mut fields = ::std::vec::Vec::new(); + fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>( + "rejected_spans", + |m: &ExportTracePartialSuccess| { &m.rejected_spans }, + |m: &mut ExportTracePartialSuccess| { &mut m.rejected_spans }, + )); + fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( + "error_message", + |m: &ExportTracePartialSuccess| { &m.error_message }, + |m: &mut ExportTracePartialSuccess| { &mut m.error_message }, + )); + ::protobuf::reflect::MessageDescriptor::new_pb_name::( + "ExportTracePartialSuccess", + fields, + file_descriptor_proto() + ) + }) + } + + fn default_instance() -> &'static ExportTracePartialSuccess { + static instance: ::protobuf::rt::LazyV2 = ::protobuf::rt::LazyV2::INIT; + instance.get(ExportTracePartialSuccess::new) + } +} + +impl ::protobuf::Clear for ExportTracePartialSuccess { + fn clear(&mut self) { + self.rejected_spans = 0; + self.error_message.clear(); + self.unknown_fields.clear(); + } +} + +impl ::std::fmt::Debug for ExportTracePartialSuccess { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for ExportTracePartialSuccess { + fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { + ::protobuf::reflect::ReflectValueRef::Message(self) + } +} + static file_descriptor_proto_data: &'static [u8] = b"\ \n:opentelemetry/proto/collector/trace/v1/trace_service.proto\x12&opente\ lemetry.proto.collector.trace.v1\x1a(opentelemetry/proto/trace/v1/trace.\ proto\"o\n\x19ExportTraceServiceRequest\x12R\n\x0eresource_spans\x18\x01\ \x20\x03(\x0b2+.opentelemetry.proto.trace.v1.ResourceSpansR\rresourceSpa\ - ns\"\x1c\n\x1aExportTraceServiceResponse2\xa2\x01\n\x0cTraceService\x12\ - \x91\x01\n\x06Export\x12A.opentelemetry.proto.collector.trace.v1.ExportT\ - raceServiceRequest\x1aB.opentelemetry.proto.collector.trace.v1.ExportTra\ - ceServiceResponse\"\0Bs\n)io.opentelemetry.proto.collector.trace.v1B\x11\ - TraceServiceProtoP\x01Z1go.opentelemetry.io/proto/otlp/collector/trace/v\ - 1b\x06proto3\ + ns\"\x88\x01\n\x1aExportTraceServiceResponse\x12j\n\x0fpartial_success\ + \x18\x01\x20\x01(\x0b2A.opentelemetry.proto.collector.trace.v1.ExportTra\ + cePartialSuccessR\x0epartialSuccess\"g\n\x19ExportTracePartialSuccess\ + \x12%\n\x0erejected_spans\x18\x01\x20\x01(\x03R\rrejectedSpans\x12#\n\re\ + rror_message\x18\x02\x20\x01(\tR\x0cerrorMessage2\xa2\x01\n\x0cTraceServ\ + ice\x12\x91\x01\n\x06Export\x12A.opentelemetry.proto.collector.trace.v1.\ + ExportTraceServiceRequest\x1aB.opentelemetry.proto.collector.trace.v1.Ex\ + portTraceServiceResponse\"\0B\x9c\x01\n)io.opentelemetry.proto.collector\ + .trace.v1B\x11TraceServiceProtoP\x01Z1go.opentelemetry.io/proto/otlp/col\ + lector/trace/v1\xaa\x02&OpenTelemetry.Proto.Collector.Trace.V1b\x06proto\ + 3\ "; static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT; diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/tracez.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/tracez.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/tracez.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/grpcio/tracez.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -// This file is generated by rust-protobuf 2.27.1. Do not edit +// This file is generated by rust-protobuf 2.28.0. Do not edit // @generated // https://github.com/rust-lang/rust-clippy/issues/702 @@ -21,7 +21,7 @@ /// Generated files are compatible only with the same version /// of protobuf runtime. -// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_27_1; +// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_28_0; #[derive(PartialEq,Clone,Default)] #[cfg_attr(feature = "with-serde", derive(::serde::Serialize, ::serde::Deserialize))] @@ -1673,36 +1673,35 @@ } static file_descriptor_proto_data: &'static [u8] = b"\ - \n\x0ctracez.proto\x1a*opentelemetry/proto/common/v1/common.proto\x1a.op\ - entelemetry/proto/resource/v1/resource.proto\x1a(opentelemetry/proto/tra\ - ce/v1/trace.proto\"t\n\x0cTracezCounts\x12\x1a\n\x08spanname\x18\x01\x20\ - \x01(\tR\x08spanname\x12\x18\n\x07latency\x18\x02\x20\x03(\rR\x07latency\ - \x12\x18\n\x07running\x18\x03\x20\x01(\rR\x07running\x12\x14\n\x05error\ - \x18\x04\x20\x01(\rR\x05error\"\xdd\x02\n\x0bLatencyData\x12\x18\n\x07tr\ - aceid\x18\x01\x20\x01(\x0cR\x07traceid\x12\x16\n\x06spanid\x18\x02\x20\ - \x01(\x0cR\x06spanid\x12\x1a\n\x08parentid\x18\x03\x20\x01(\x0cR\x08pare\ - ntid\x12\x1c\n\tstarttime\x18\x04\x20\x01(\x06R\tstarttime\x12\x18\n\x07\ - endtime\x18\x05\x20\x01(\x06R\x07endtime\x12G\n\nattributes\x18\x06\x20\ - \x03(\x0b2'.opentelemetry.proto.common.v1.KeyValueR\nattributes\x12@\n\ - \x06events\x18\x07\x20\x03(\x0b2(.opentelemetry.proto.trace.v1.Span.Even\ - tR\x06events\x12=\n\x05links\x18\x08\x20\x03(\x0b2'.opentelemetry.proto.\ - trace.v1.Span.LinkR\x05links\"\xc3\x02\n\x0bRunningData\x12\x18\n\x07tra\ - ceid\x18\x01\x20\x01(\x0cR\x07traceid\x12\x16\n\x06spanid\x18\x02\x20\ - \x01(\x0cR\x06spanid\x12\x1a\n\x08parentid\x18\x03\x20\x01(\x0cR\x08pare\ - ntid\x12\x1c\n\tstarttime\x18\x04\x20\x01(\x06R\tstarttime\x12G\n\nattri\ - butes\x18\x05\x20\x03(\x0b2'.opentelemetry.proto.common.v1.KeyValueR\nat\ - tributes\x12@\n\x06events\x18\x06\x20\x03(\x0b2(.opentelemetry.proto.tra\ - ce.v1.Span.EventR\x06events\x12=\n\x05links\x18\x07\x20\x03(\x0b2'.opent\ - elemetry.proto.trace.v1.Span.LinkR\x05links\"\xff\x02\n\tErrorData\x12\ - \x18\n\x07traceid\x18\x01\x20\x01(\x0cR\x07traceid\x12\x16\n\x06spanid\ - \x18\x02\x20\x01(\x0cR\x06spanid\x12\x1a\n\x08parentid\x18\x03\x20\x01(\ - \x0cR\x08parentid\x12\x1c\n\tstarttime\x18\x04\x20\x01(\x06R\tstarttime\ - \x12G\n\nattributes\x18\x05\x20\x03(\x0b2'.opentelemetry.proto.common.v1\ - .KeyValueR\nattributes\x12@\n\x06events\x18\x06\x20\x03(\x0b2(.opentelem\ - etry.proto.trace.v1.Span.EventR\x06events\x12=\n\x05links\x18\x07\x20\ - \x03(\x0b2'.opentelemetry.proto.trace.v1.Span.LinkR\x05links\x12<\n\x06s\ - tatus\x18\x08\x20\x01(\x0b2$.opentelemetry.proto.trace.v1.StatusR\x06sta\ - tusb\x06proto3\ + \n\x0ctracez.proto\x1a*opentelemetry/proto/common/v1/common.proto\x1a(op\ + entelemetry/proto/trace/v1/trace.proto\"t\n\x0cTracezCounts\x12\x1a\n\ + \x08spanname\x18\x01\x20\x01(\tR\x08spanname\x12\x18\n\x07latency\x18\ + \x02\x20\x03(\rR\x07latency\x12\x18\n\x07running\x18\x03\x20\x01(\rR\x07\ + running\x12\x14\n\x05error\x18\x04\x20\x01(\rR\x05error\"\xdd\x02\n\x0bL\ + atencyData\x12\x18\n\x07traceid\x18\x01\x20\x01(\x0cR\x07traceid\x12\x16\ + \n\x06spanid\x18\x02\x20\x01(\x0cR\x06spanid\x12\x1a\n\x08parentid\x18\ + \x03\x20\x01(\x0cR\x08parentid\x12\x1c\n\tstarttime\x18\x04\x20\x01(\x06\ + R\tstarttime\x12\x18\n\x07endtime\x18\x05\x20\x01(\x06R\x07endtime\x12G\ + \n\nattributes\x18\x06\x20\x03(\x0b2'.opentelemetry.proto.common.v1.KeyV\ + alueR\nattributes\x12@\n\x06events\x18\x07\x20\x03(\x0b2(.opentelemetry.\ + proto.trace.v1.Span.EventR\x06events\x12=\n\x05links\x18\x08\x20\x03(\ + \x0b2'.opentelemetry.proto.trace.v1.Span.LinkR\x05links\"\xc3\x02\n\x0bR\ + unningData\x12\x18\n\x07traceid\x18\x01\x20\x01(\x0cR\x07traceid\x12\x16\ + \n\x06spanid\x18\x02\x20\x01(\x0cR\x06spanid\x12\x1a\n\x08parentid\x18\ + \x03\x20\x01(\x0cR\x08parentid\x12\x1c\n\tstarttime\x18\x04\x20\x01(\x06\ + R\tstarttime\x12G\n\nattributes\x18\x05\x20\x03(\x0b2'.opentelemetry.pro\ + to.common.v1.KeyValueR\nattributes\x12@\n\x06events\x18\x06\x20\x03(\x0b\ + 2(.opentelemetry.proto.trace.v1.Span.EventR\x06events\x12=\n\x05links\ + \x18\x07\x20\x03(\x0b2'.opentelemetry.proto.trace.v1.Span.LinkR\x05links\ + \"\xff\x02\n\tErrorData\x12\x18\n\x07traceid\x18\x01\x20\x01(\x0cR\x07tr\ + aceid\x12\x16\n\x06spanid\x18\x02\x20\x01(\x0cR\x06spanid\x12\x1a\n\x08p\ + arentid\x18\x03\x20\x01(\x0cR\x08parentid\x12\x1c\n\tstarttime\x18\x04\ + \x20\x01(\x06R\tstarttime\x12G\n\nattributes\x18\x05\x20\x03(\x0b2'.open\ + telemetry.proto.common.v1.KeyValueR\nattributes\x12@\n\x06events\x18\x06\ + \x20\x03(\x0b2(.opentelemetry.proto.trace.v1.Span.EventR\x06events\x12=\ + \n\x05links\x18\x07\x20\x03(\x0b2'.opentelemetry.proto.trace.v1.Span.Lin\ + kR\x05links\x12<\n\x06status\x18\x08\x20\x01(\x0b2$.opentelemetry.proto.\ + trace.v1.StatusR\x06statusb\x06proto3\ "; static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT; diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/buf.yaml temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/buf.yaml --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/buf.yaml 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/buf.yaml 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,6 @@ +version: v1 + +# See https://docs.buf.build/breaking/configuration +breaking: + use: + - WIRE diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/CHANGELOG.md temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/CHANGELOG.md --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -2,27 +2,114 @@ ## Unreleased -Full list of differences found in [this compare](https://github.com/open-telemetry/opentelemetry-proto/compare/v0.13.0...main). +Full list of differences found in [this compare](https://github.com/open-telemetry/opentelemetry-proto/compare/v0.20.0...main). + +## 0.20.0 - 2023-06-06 + +Full list of differences found in [this compare](https://github.com/open-telemetry/opentelemetry-proto/compare/v0.19.0...v0.20.0). ### Maturity -* Remove if no changes for this section before release. +* Declare OTLP/JSON Stable. + [#436](https://github.com/open-telemetry/opentelemetry-proto/pull/436) + [#435](https://github.com/open-telemetry/opentelemetry-proto/pull/435) +* Provide stronger symbolic stability guarantees. + [#432](https://github.com/open-telemetry/opentelemetry-proto/pull/432) +* Clarify how additive changes are handled. + [#455](https://github.com/open-telemetry/opentelemetry-proto/pull/455) + +### Changed + +* Change the exponential histogram boundary condition. + [#409](https://github.com/open-telemetry/opentelemetry-proto/pull/409) +* Clarify behavior for empty/not present/invalid trace_id and span_id fields. + [#442](https://github.com/open-telemetry/opentelemetry-proto/pull/442) +* Change the collector trace endpoint to /v1/traces. + [#449](https://github.com/open-telemetry/opentelemetry-proto/pull/449) + +### Added + +* Introduce `zero_threshold` field to `ExponentialHistogramDataPoint`. + [#441](https://github.com/open-telemetry/opentelemetry-proto/pull/441) + [#453](https://github.com/open-telemetry/opentelemetry-proto/pull/453) + +### Removed + +* Delete requirement to generate new trace/span id if an invalid id is received. + [#444](https://github.com/open-telemetry/opentelemetry-proto/pull/444) + +## 0.19.0 - 2022-08-03 + +Full list of differences found in [this compare](https://github.com/open-telemetry/opentelemetry-proto/compare/v0.18.0...v0.19.0). + +### Changed + +* Add `csharp_namespace` option to protos. + ([#399](https://github.com/open-telemetry/opentelemetry-proto/pull/399)) +* Fix some out-of-date urls which link to [specification](https://github.com/open-telemetry/opentelemetry-specification). ([#402](https://github.com/open-telemetry/opentelemetry-proto/pull/402)) +* :stop_sign: [BREAKING] Delete deprecated InstrumentationLibrary, + InstrumentationLibraryLogs, InstrumentationLibrarySpans and + InstrumentationLibraryMetrics messages. Delete deprecated + instrumentation_library_logs, instrumentation_library_spans and + instrumentation_library_metrics fields. + +### Added + +* Introduce Scope Attributes. [#395](https://github.com/open-telemetry/opentelemetry-proto/pull/395) +* Introduce partial success fields in `ExportServiceResponse`. + [#414](https://github.com/open-telemetry/opentelemetry-proto/pull/414) + +## 0.18.0 - 2022-05-17 + +Full list of differences found in [this compare](https://github.com/open-telemetry/opentelemetry-proto/compare/v0.17.0...v0.18.0). + +### Changed + +* Declare logs Stable. + [(#376)](https://github.com/open-telemetry/opentelemetry-proto/pull/376) +* Metrics ExponentialHistogramDataPoint makes the `sum` optional + (follows the same change in HistogramDataPOint in 0.15). [#392](https://github.com/open-telemetry/opentelemetry-proto/pull/392) + +## 0.17.0 - 2022-05-06 + +Full list of differences found in [this compare](https://github.com/open-telemetry/opentelemetry-proto/compare/v0.16.0...v0.17.0). ### Changed -* Remove if no changes for this section before release. +* Introduce optional `min` and `max` fields to the Histogram and ExponentialHistogram data points. + [(#279)](https://github.com/open-telemetry/opentelemetry-proto/pull/279) + +## 0.16.0 - 2022-03-31 + +Full list of differences found in [this compare](https://github.com/open-telemetry/opentelemetry-proto/compare/v0.15.0...v0.16.0). + +### Removed + +* Remove deprecated LogRecord.Name field (#373). + +## 0.15.0 - 2022-03-19 + +Full list of differences found in [this compare](https://github.com/open-telemetry/opentelemetry-proto/compare/v0.14.0...v0.15.0). + +### Changed + +* Rename InstrumentationLibrary to InstrumentationScope (#362) ### Added -* Remove if no changes for this section before release. +* Use optional for `sum` field to mark presence (#366) + +## 0.14.0 - 2022-03-08 + +Full list of differences found in [this compare](https://github.com/open-telemetry/opentelemetry-proto/compare/v0.13.0...v0.14.0). ### Removed -* Deprecate LogRecord.Name field. (#357) +* Deprecate LogRecord.Name field (#357) ## 0.13.0 - 2022-02-10 -Full list of differences found in [this compare](https://github.com/open-telemetry/opentelemetry-proto/compare/v0.13.0...v0.12.0). +Full list of differences found in [this compare](https://github.com/open-telemetry/opentelemetry-proto/compare/v0.12.0...v0.13.0). ### Changed @@ -42,7 +129,7 @@ ## 0.12.0 - 2022-01-19 -Full list of differences found in [this compare](https://github.com/open-telemetry/opentelemetry-proto/compare/v0.12.0...v0.11.0). +Full list of differences found in [this compare](https://github.com/open-telemetry/opentelemetry-proto/compare/v0.11.0...v0.12.0). ### Changed diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/design-goals.md temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/design-goals.md --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/design-goals.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/design-goals.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,19 @@ +# Design Goals for OpenTelemetry Wire Protocol + +We want to design a telemetry data exchange protocol that has the following characteristics: + +- Be suitable for use between all of the following node types: instrumented applications, telemetry backends, local agents, stand-alone collectors/forwarders. + +- Have high reliability of data delivery and clear visibility when the data cannot be delivered. + +- Have low CPU usage for serialization and deserialization. + +- Impose minimal pressure on memory manager, including pass-through scenarios, where deserialized data is short-lived and must be serialized as-is shortly after and where such short-lived data is created and discarded at high frequency (think telemetry data forwarders). + +- Support ability to efficiently modify deserialized data and serialize again to pass further. This is related but slightly different from the previous requirement. + +- Ensure high throughput (within the available bandwidth) in high latency networks (e.g. scenarios where telemetry source and the backend are separated by high latency network). + +- Allow backpressure signalling. + +- Be load-balancer friendly (do not hinder re-balancing). Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/img/otlp-client-server.png and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/img/otlp-client-server.png differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/img/otlp-concurrent.png and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/img/otlp-concurrent.png differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/img/otlp-multi-destination.png and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/img/otlp-multi-destination.png differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/img/otlp-request-response.png and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/img/otlp-request-response.png differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/img/otlp-sequential.png and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/img/otlp-sequential.png differ diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/README.md temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/README.md --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/README.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,8 @@ +# OpenTelemetry Protocol (OTLP) + +This is the specification of the OpenTelemetry Protocol (OTLP). + +- [Design Goals](design-goals.md) +- [Requirements](requirements.md) +- [Specification](specification.md) +- [SDK Exporter](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md) diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/requirements.md temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/requirements.md --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/requirements.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/requirements.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,99 @@ +# OpenTelemetry Protocol Requirements + +This document will drive OpenTelemetry Protocol design and RFC. + +## Goals + +See the goals of OpenTelemetry Protocol design [here](design-goals.md). + +## Vocabulary + +There are 2 parties involved in telemetry data exchange. In this document the party that is the source of telemetry data is called the Client, the party that is the destination of telemetry data is called the Server. + +Examples of a Client are instrumented applications or sending side of telemetry collectors, examples of Servers are telemetry backends or receiving side of telemetry collectors (so a Collector is typically both a Client and a Server depending on which side you look from). + +## Known Issues with Existing Protocols + +Our experience with OpenCensus and other protocols has been that many of them have one or more of the following drawbacks: + +- High CPU consumption for serialization and especially deserialization of received telemetry data. +- High and frequent CPU consumption by Garbage Collector. +- Lack of delivery guarantees for certain protocols (e.g. stream-based gRPC OpenCensus protocol) which makes troubleshooting of telemetry pipelines difficult. +- Not aware / not cooperating with load balancers resulting in potentially large imbalances in horizontally scaled backends. +- Support either traces or metrics but not both. + +Our goal is to avoid or mitigate these known issues in the new protocol. + +## Requirements + +The following are OpenTelemetry protocol requirements. + +### Supported Node Types + +The protocol must be suitable for use between all of the following node types: instrumented applications, telemetry backends, telemetry agents running as local daemons, stand-alone collector/forwarder services. + +### Supported Data Types + +The protocol must support traces and metrics as data types. + +### Reliability of Delivery + +The protocol must ensure reliable data delivery and clear visibility when the data cannot be delivered. This should be achieved by sending data acknowledgements from the Server to the Client. + +Note that acknowledgements alone are not sufficient to guarantee that: a) no data will be lost and b) no data will be duplicated. Acknowledgements can help to guarantee a) but not b). Guaranteeing both at the same is difficult. Because it is usually preferable for telemetry data to be duplicated than to lose it, we choose to guarantee that there are no data losses while potentially allowing duplicate data. + +Duplicates can typically happen in edge cases (e.g. on reconnections, network interruptions, etc) when the client has no way of knowing if last sent data was delivered. In these cases the client will usually choose to re-send the data to guarantee the delivery which in turn may result in duplicate data on the server side. + +_To avoid having duplicates the client and the server could track sent and delivered items using uniquely identifying ids. The exact mechanism for tracking the ids and performing data de-duplication may be defined at the layer above the protocol layer and is outside the scope of this document._ + +For this reason we have slightly relaxed requirements and consider duplicate data acceptable in rare cases. + +Note: this protocol is concerned with reliability of delivery between one pair of client/server nodes and aims to ensure that no data is lost in-transit between the client and the server. Many telemetry collection systems have multiple nodes that the data must travel across until reaching the final destination (e.g. application -> agent -> collector -> backend). End-to-end delivery guarantees in such systems is outside of the scope for this document. The acknowledgements described in this protocol happen between a single client/server pair and do not span multiple nodes in multi-hop delivery paths. + +### Throughput + +The protocol must ensure high throughput in high latency networks when the client and the server are not in the same data center. + +This requirement may rule out half-duplex protocols. The throughput of half-duplex protocols is highly dependent on network roundtrip time and request size. To achieve good throughput request sizes may be too large to be practical. + +### Compression + +The protocol must achieve high compression ratios for telemetry data. The protocol design must consider batching of telemetry data and grouping of similar data (both can help to achieve better compression using common compression algorithms). + +### Encryption + +Industry standard encryption (e.g. TLS/HTTPS) must be supported. + +### Backpressure Signalling and Throttling + +The protocol must allow backpressure signalling. + +If the server is unable to keep up with the pace of data it receives from the client then it must be able to signal that fact to the client. The client may then throttle itself to avoid overwhelming the server. + +If the underlying transport is a stream that has its own flow control mechanism then the backpressure could be applied by delaying the reading of data from the server’s endpoint which could then be signalled to the client via underlying flow-control. However this approach makes it difficult for the client to distinguish server overloading from network delays (due to e.g. network losses). Such distinction is important for [observability reasons](https://github.com/open-telemetry/opentelemetry-service/pull/188). Because of this it is required for the protocol to allow to explicitly and clearly signal backpressure from the server to the client without relying on implicit signalling using underlying flow-control mechanisms. + +The backpressure signal should include a hint to the client about desirable reduced rate of data. + +### Serialization Performance + +The protocol must have fast data serialization and deserialization characteristics. + +Ideally it must also support very fast pass-through mode (when no modifications to the data are needed), fast “augmenting†or “tagging†of data and partial inspection of data (e.g. check for presence of specific tag). These requirements help to create fast Agents and Collectors. + +### Memory Usage Profile + +The protocol must impose minimal pressure on memory manager, including pass-through scenarios, when deserialized data is short-lived and must be serialized as-is shortly after and when such short-lived data is created and discarded at high frequency (think telemetry data forwarders). + +The implementation of telemetry protocol must aim to minimize the number of memory allocations and dealocations performed during serialization and deserialization and aim to minimize the pressure on Garbage Collection (for GC languages). + +### Level 7 Load Balancer Friendly + +The protocol must allow Level 7 load balancers such as Envoy to re-balance the traffic for each batch of telemetry data. The traffic should not get pinned by a load balancer to one server for the entire duration of telemetry data sending, thus potentially leading to imbalanced load of servers located behind the load balancer. + +### Backwards Compatibility + +The protocol should be possible to evolve over time. It should be possible for nodes that implement different versions of OpenTelemetry protocol to interoperate (while possibly regressing to the lowest common denominator from functional perspective). + +### General Requirements + +The protocol must use well-known, mature encoding and transport mechanisms with ubiquitous availability of implementations in wide selection of languages that are supported by OpenTelemetry. diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/specification.md temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/specification.md --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/specification.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/docs/specification.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,721 @@ + + +# OpenTelemetry Protocol Specification + +**Status**: [Stable](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/document-status.md) + +The OpenTelemetry Protocol (OTLP) specification describes the encoding, transport, +and delivery mechanism of telemetry data between telemetry sources, intermediate +nodes such as collectors and telemetry backends. + +

+Table of Contents + + + +- [Protocol Details](#protocol-details) + * [OTLP/gRPC](#otlpgrpc) + + [OTLP/gRPC Concurrent Requests](#otlpgrpc-concurrent-requests) + + [OTLP/gRPC Response](#otlpgrpc-response) + - [Full Success](#full-success) + - [Partial Success](#partial-success) + - [Failures](#failures) + + [OTLP/gRPC Throttling](#otlpgrpc-throttling) + + [OTLP/gRPC Service and Protobuf Definitions](#otlpgrpc-service-and-protobuf-definitions) + + [OTLP/gRPC Default Port](#otlpgrpc-default-port) + * [OTLP/HTTP](#otlphttp) + + [Binary Protobuf Encoding](#binary-protobuf-encoding) + + [JSON Protobuf Encoding](#json-protobuf-encoding) + + [OTLP/HTTP Request](#otlphttp-request) + + [OTLP/HTTP Response](#otlphttp-response) + - [Full Success](#full-success-1) + - [Partial Success](#partial-success-1) + - [Failures](#failures-1) + - [Bad Data](#bad-data) + - [OTLP/HTTP Throttling](#otlphttp-throttling) + - [All Other Responses](#all-other-responses) + + [OTLP/HTTP Connection](#otlphttp-connection) + + [OTLP/HTTP Concurrent Requests](#otlphttp-concurrent-requests) + + [OTLP/HTTP Default Port](#otlphttp-default-port) +- [Implementation Recommendations](#implementation-recommendations) + * [Multi-Destination Exporting](#multi-destination-exporting) +- [Known Limitations](#known-limitations) + * [Request Acknowledgements](#request-acknowledgements) + + [Duplicate Data](#duplicate-data) +- [Future Versions and Interoperability](#future-versions-and-interoperability) +- [Glossary](#glossary) +- [References](#references) + + + +
+ +OTLP is a general-purpose telemetry data delivery protocol designed in the scope +of the OpenTelemetry project. + +## Protocol Details + +OTLP defines the encoding of telemetry data and the protocol used to exchange +data between the client and the server. + +This specification defines how OTLP is implemented over +[gRPC](https://grpc.io/) and HTTP 1.1 transports and specifies +[Protocol Buffers schema](https://developers.google.com/protocol-buffers/docs/overview) +that is used for the payloads. + +OTLP is a request/response style protocol: the clients send requests, and the +server replies with corresponding responses. This document defines one request +and response type: `Export`. + +All server components MUST support the following transport compression options: + +* No compression, denoted by `none`. +* Gzip compression, denoted by `gzip`. + +### OTLP/gRPC + +After establishing the underlying gRPC transport, the client starts sending +telemetry data using unary requests using +[Export*ServiceRequest](https://github.com/open-telemetry/opentelemetry-proto) +messages ([ExportLogsServiceRequest](../opentelemetry/proto/collector/logs/v1/logs_service.proto) for logs, +[ExportMetricsServiceRequest](../opentelemetry/proto/collector/metrics/v1/metrics_service.proto) for metrics, +[ExportTraceServiceRequest](../opentelemetry/proto/collector/trace/v1/trace_service.proto) for traces). +The client continuously sends a sequence of requests to the server and expects +to receive a response to each request: + +![Request-Response](img/otlp-request-response.png) + +_Note: this protocol is concerned with the reliability of delivery between one +pair of client/server nodes and aims to ensure that no data is lost in transit +between the client and the server. Many telemetry collection systems have +intermediary nodes that the data must travel across until reaching the final +destination (e.g. application -> agent -> collector -> backend). End-to-end +delivery guarantees in such systems is outside of the scope of OTLP. The +acknowledgements described in this protocol happen between a single +client/server pair and do not span intermediary nodes in multi-hop delivery +paths._ + +#### OTLP/gRPC Concurrent Requests + +After sending the request the client MAY wait until the response is received +from the server. In that case there will be at most only one request in flight +that is not yet acknowledged by the server. + +![Unary](img/otlp-sequential.png) + +Sequential operation is recommended when simplicity of implementation is +desirable, and when the client and the server are connected via very low-latency +network, such as when the client is an instrumented application and +the server is an OpenTelemetry Collector running as a local daemon (agent). + +The implementations that need to achieve high throughput SHOULD support +concurrent Unary calls to achieve higher throughput. The client SHOULD send new +requests without waiting for the response to the earlier sent requests, +essentially creating a pipeline of requests that are currently in flight that +are not acknowledged. + +![Concurrent](img/otlp-concurrent.png) + +The number of concurrent requests SHOULD be configurable. + +The maximum achievable throughput is +`max_concurrent_requests * max_request_size / (network_latency + server_response_time)`. +For example, if the request can contain at most 100 spans, network roundtrip +latency is 200ms, and server response time is 300 ms, then the maximum achievable +throughput with one concurrent request is `100 spans / (200ms+300ms)` or 200 +spans per second. It is easy to see that in high latency networks or when the +server response time is high to achieve good throughput, the requests need to be +very big or a lot concurrent requests must be done. + +If the client is shutting down (e.g. when the containing process wants to exit) +the client will optionally wait until all pending acknowledgements are received +or until an implementation-specific timeout expires. This ensures the reliable +delivery of telemetry data. The client implementation SHOULD expose an option to +turn on and off the waiting during a shutdown. + +If the client is unable to deliver a certain request (e.g. a timer expired while +waiting for acknowledgements) the client SHOULD record the fact that the data +was not delivered. + +#### OTLP/gRPC Response + +The response MUST be the appropriate message (see below for +the specific message to use in the [Full Success](#full-success), +[Partial Success](#partial-success) and [Failure](#failures) cases). + +##### Full Success + +The success response indicates telemetry data is successfully accepted by the +server. + +If the server receives an empty request (a request that does not carry +any telemetry data) the server SHOULD respond with success. + +On success, the server response MUST be a +[Export\ServiceResponse](../opentelemetry/proto/collector) +message (`ExportTraceServiceResponse` for traces, +`ExportMetricsServiceResponse` for metrics and +`ExportLogsServiceResponse` for logs). + +The server MUST leave the `partial_success` field unset +in case of a successful response. + +##### Partial Success + +If the request is only partially accepted +(i.e. when the server accepts only parts of the data and rejects the rest), the +server response MUST be the same +[Export\ServiceResponse](../opentelemetry/proto/collector) +message as in the [Full Success](#full-success) case. + +Additionally, the server MUST initialize the `partial_success` field +(`ExportTracePartialSuccess` message for traces, +`ExportMetricsPartialSuccess` message for metrics and +`ExportLogsPartialSuccess` message for logs), and it MUST set the respective +`rejected_spans`, `rejected_data_points` or `rejected_log_records` field with +the number of spans/data points/log records it rejected. + +The server SHOULD populate the `error_message` field with a human-readable +error message in English. The message should explain why the +server rejected parts of the data and might offer guidance on how users +can address the issues. +The protocol does not attempt to define the structure of the error message. + +Servers MAY also use the `partial_success` field to convey +warnings/suggestions to clients even when the server fully accepts the request. +In such cases, the `rejected_` field MUST have a value of `0`, and +the `error_message` field MUST be non-empty. + +The client MUST NOT retry the request when it receives a partial success +response where the `partial_success` is populated. + +##### Failures + +When the server returns an error, it falls into 2 broad categories: +retryable and not-retryable: + +- Retryable errors indicate that telemetry data processing failed, and the + client SHOULD record the error and may retry exporting the same data. + For example, this can happen when the server is temporarily unable to + process the data. + +- Not-retryable errors indicate that telemetry data processing failed, and the + client MUST NOT retry sending the same telemetry data. The client MUST drop + the telemetry data. + For example, this can happen, when the request contains bad data + and cannot be deserialized or processed by the server. The client + SHOULD maintain a counter of such dropped data. + +The server MUST indicate retryable errors using code +[Unavailable](https://godoc.org/google.golang.org/grpc/codes) and MAY supply +additional +[details via status](https://godoc.org/google.golang.org/grpc/status#Status.WithDetails) +using +[RetryInfo](https://github.com/googleapis/googleapis/blob/6a8c7914d1b79bd832b5157a09a9332e8cbd16d4/google/rpc/error_details.proto#L40) +containing 0 value of RetryDelay. Here is a sample Go code to illustrate: + +```go + // Do this on server side. + st, err := status.New(codes.Unavailable, "Server is unavailable"). + WithDetails(&errdetails.RetryInfo{RetryDelay: &duration.Duration{Seconds: 0}}) + if err != nil { + log.Fatal(err) + } + + return st.Err() +``` + +To indicate not-retryable errors, the server is recommended to use code +[InvalidArgument](https://godoc.org/google.golang.org/grpc/codes) and MAY supply +additional +[details via status](https://godoc.org/google.golang.org/grpc/status#Status.WithDetails) +using +[BadRequest](https://github.com/googleapis/googleapis/blob/6a8c7914d1b79bd832b5157a09a9332e8cbd16d4/google/rpc/error_details.proto#L119). +If more appropriate, another gRPC status code may be used. Here is a +snippet of sample Go code to illustrate: + +```go + // Do this on the server side. + st, err := status.New(codes.InvalidArgument, "Invalid Argument"). + WithDetails(&errdetails.BadRequest{}) + if err != nil { + log.Fatal(err) + } + + return st.Err() +``` + +The server MAY use other gRPC codes to indicate retryable and not-retryable +errors if those other gRPC codes are more appropriate for a particular erroneous +situation. The client SHOULD interpret gRPC status codes as retryable or +not-retryable according to the following table: + +|gRPC Code|Retryable?| +|---------|----------| +|CANCELLED|Yes| +|UNKNOWN|No| +|INVALID_ARGUMENT|No| +|DEADLINE_EXCEEDED|Yes| +|NOT_FOUND|No| +|ALREADY_EXISTS|No| +|PERMISSION_DENIED|No| +|UNAUTHENTICATED|No| +|RESOURCE_EXHAUSTED|Only if the server can recover (see below)| +|FAILED_PRECONDITION|No| +|ABORTED|Yes| +|OUT_OF_RANGE|Yes| +|UNIMPLEMENTED|No| +|INTERNAL|No| +|UNAVAILABLE|Yes| +|DATA_LOSS|Yes| + +When retrying, the client SHOULD implement an exponential backoff strategy. An +exception to this is the Throttling case explained below, which provides +explicit instructions about retrying interval. + +The client SHOULD interpret `RESOURCE_EXHAUSTED` code as retryable only if the +server signals that the recovery from resource exhaustion is possible. +This is signaled by the server by returning +[a status](https://godoc.org/google.golang.org/grpc/status#Status.WithDetails) containing +[RetryInfo](https://github.com/googleapis/googleapis/blob/6a8c7914d1b79bd832b5157a09a9332e8cbd16d4/google/rpc/error_details.proto#L40). +In this case the behavior of the server and the client is exactly as described in +[OTLP/gRPC Throttling](#otlpgrpc-throttling) section. If no such status is returned, +then the `RESOURCE_EXHAUSTED` code SHOULD be treated as non-retryable. + +#### OTLP/gRPC Throttling + +OTLP allows backpressure signaling. + +If the server is unable to keep up with the pace of data it receives from the +client then it SHOULD signal that fact to the client. The client MUST then +throttle itself to avoid overwhelming the server. + +To signal backpressure when using gRPC transport, the server MUST return an +error with code [Unavailable](https://godoc.org/google.golang.org/grpc/codes) +and MAY supply additional +[details via status](https://godoc.org/google.golang.org/grpc/status#Status.WithDetails) +using +[RetryInfo](https://github.com/googleapis/googleapis/blob/6a8c7914d1b79bd832b5157a09a9332e8cbd16d4/google/rpc/error_details.proto#L40). +Here is a snippet of sample Go code to illustrate: + +```go + // Do this on the server side. + st, err := status.New(codes.Unavailable, "Server is unavailable"). + WithDetails(&errdetails.RetryInfo{RetryDelay: &duration.Duration{Seconds: 30}}) + if err != nil { + log.Fatal(err) + } + + return st.Err() + + ... + + // Do this on the client side. + st := status.Convert(err) + for _, detail := range st.Details() { + switch t := detail.(type) { + case *errdetails.RetryInfo: + if t.RetryDelay.Seconds > 0 || t.RetryDelay.Nanos > 0 { + // Wait before retrying. + } + } + } +``` + +When the client receives this signal, it SHOULD follow the recommendations +outlined in documentation for +[RetryInfo](https://github.com/googleapis/googleapis/blob/6a8c7914d1b79bd832b5157a09a9332e8cbd16d4/google/rpc/error_details.proto#L40): + +``` +// Describes when the clients can retry a failed request. Clients could ignore +// the recommendation here or retry when this information is missing from the error +// responses. +// +// It's always recommended that clients should use exponential backoff when +// retrying. +// +// Clients should wait until `retry_delay` amount of time has passed since +// receiving the error response before retrying. If retrying requests also +// fail, clients should use an exponential backoff scheme to increase gradually +// the delay between retries based on `retry_delay` until either a maximum +// number of retries has been reached, or a maximum retry delay cap has been +// reached. +``` + +The value of `retry_delay` is determined by the server and is implementation +dependant. The server SHOULD choose a `retry_delay` value that is big enough to +give the server time to recover yet is not too big to cause the client to drop +data while being throttled. + +#### OTLP/gRPC Service and Protobuf Definitions + +gRPC service definitions [are here](../opentelemetry/proto/collector). + +Protobuf definitions for requests and responses [are here](../opentelemetry/proto). + +Please make sure to check the proto version and [maturity level](../README.md#maturity-level). +Schemas for different signals may be at different maturity level - some stable, +some in beta. + +#### OTLP/gRPC Default Port + +The default network port for OTLP/gRPC is 4317. + +### OTLP/HTTP + +OTLP/HTTP uses Protobuf payloads encoded either in +[binary format](#binary-protobuf-encoding) or in [JSON format](#json-protobuf-encoding). +Regardless of the encoding the Protobuf schema of the messages is the same for +OTLP/HTTP and OTLP/gRPC as [defined here](../opentelemetry/proto). + +OTLP/HTTP uses HTTP POST requests to send telemetry data from clients to +servers. Implementations MAY use HTTP/1.1 or HTTP/2 transports. Implementations +that use HTTP/2 transport SHOULD fallback to HTTP/1.1 transport if HTTP/2 +connection cannot be established. + +#### Binary Protobuf Encoding + +Binary Protobuf encoded payloads use proto3 +[encoding standard](https://developers.google.com/protocol-buffers/docs/encoding). + +The client and the server MUST set "Content-Type: application/x-protobuf" +request and response headers when sending binary Protobuf encoded payload. + +#### JSON Protobuf Encoding + +JSON Protobuf encoded payloads use proto3 standard defined +[JSON Mapping](https://developers.google.com/protocol-buffers/docs/proto3#json) +for mapping between Protobuf and JSON, with the following deviations from that mapping: + +- The `traceId` and `spanId` byte arrays are represented as + [case-insensitive hex-encoded strings](https://tools.ietf.org/html/rfc4648#section-8); + they are not base64-encoded as is defined in the standard + [Protobuf JSON Mapping](https://developers.google.com/protocol-buffers/docs/proto3#json). + Hex encoding is used for `traceId` and `spanId` fields in all OTLP + Protobuf messages, e.g., the `Span`, `Link`, `LogRecord`, etc. messages. + For example, the `traceId` field in a Span can be represented like this: + { "traceId": "5B8EFFF798038103D269B633813FC60C", ... } + +- Values of enum fields MUST be encoded as integer values. Unlike the standard + [Protobuf JSON Mapping](https://developers.google.com/protocol-buffers/docs/proto3#json), + which allows values of enum fields to be encoded as either integer values or + as enum name strings, only integer enum values are allowed in OTLP JSON + Protobuf Encoding; the enum name strings MUST NOT be used. For example, the + `kind` field with a value of SPAN_KIND_SERVER in a Span can be represented + like this: { "kind": 2, ... } + +- OTLP/JSON receivers MUST ignore message fields with unknown names and MUST + unmarshal the message as if the unknown field was not present in the payload. + This aligns with the behavior of the Binary Protobuf unmarshaler and ensures + that adding new fields to OTLP messages does not break existing receivers. + +- The keys of JSON objects are field names converted to lowerCamelCase. Original + field names are not valid to use as keys for JSON objects. + For example, this is a valid JSON representation of a Resource: + `{ "attributes": {...}, "droppedAttributesCount": 123 }`, and this is NOT a valid + representation: + `{ "attributes": {...}, "dropped_attributes_count": 123 }`. + +Note that according to [Protobuf specs]( +https://developers.google.com/protocol-buffers/docs/proto3#json) 64-bit integer +numbers in JSON-encoded payloads are encoded as decimal strings, and either +numbers or strings are accepted when decoding. + +The client and the server MUST set "Content-Type: application/json" request and +response headers when sending JSON Protobuf encoded payload. + +For JSON payload examples see: [OTLP JSON request examples](../examples/README.md) + +#### OTLP/HTTP Request + +Telemetry data is sent via HTTP POST request. The body of the POST request is a +payload either in binary-encoded Protobuf format or in JSON-encoded Protobuf +format. + +The default URL path for requests that carry trace data is `/v1/traces` (for +example the full URL when connecting to "example.com" server will be +`https://example.com/v1/traces`). The request body is a Protobuf-encoded +`ExportTraceServiceRequest` message. + +The default URL path for requests that carry metric data is `/v1/metrics` and +the request body is a Protobuf-encoded `ExportMetricsServiceRequest` message. + +The default URL path for requests that carry log data is `/v1/logs` and the +request body is a Protobuf-encoded `ExportLogsServiceRequest` message. + +The client MAY gzip the content and in that case MUST include +"Content-Encoding: gzip" request header. The client MAY include +"Accept-Encoding: gzip" request header if it can receive gzip-encoded responses. + +Non-default URL paths for requests MAY be configured on the client and server +sides. + +#### OTLP/HTTP Response + +The response body MUST be the appropriate serialized Protobuf message (see +below for the specific message to use in the [Full Success](#full-success-1), +[Partial Success](#partial-success-1) and [Failure](#failures-1) cases). + +The server MUST set "Content-Type: application/x-protobuf" header if the +response body is binary-encoded Protobuf payload. The server MUST set +"Content-Type: application/json" if the response is JSON-encoded Protobuf +payload. The server MUST use the same "Content-Type" in the response as it +received in the request. + +If the request header "Accept-Encoding: gzip" is present in the request the +server MAY gzip-encode the response and set "Content-Encoding: gzip" response +header. + +##### Full Success + +The success response indicates telemetry data is successfully accepted by the +server. + +If the server receives an empty request (a request that does not carry +any telemetry data) the server SHOULD respond with success. + +On success, the server MUST respond with `HTTP 200 OK`. The response body MUST be +a Protobuf-encoded [Export\ServiceResponse](../opentelemetry/proto/collector) +message (`ExportTraceServiceResponse` for traces, +`ExportMetricsServiceResponse` for metrics and +`ExportLogsServiceResponse` for logs). + +The server MUST leave the `partial_success` field unset +in case of a successful response. + +##### Partial Success + +If the request is only partially accepted +(i.e. when the server accepts only parts of the data and rejects the rest), the +server MUST respond with `HTTP 200 OK`. The response body MUST be the same +[Export\ServiceResponse](../opentelemetry/proto/collector) +message as in the [Full Success](#full-success-1) case. + +Additionally, the server MUST initialize the `partial_success` field +(`ExportTracePartialSuccess` message for traces, +`ExportMetricsPartialSuccess` message for metrics and +`ExportLogsPartialSuccess` message for logs), and it MUST set the respective +`rejected_spans`, `rejected_data_points` or `rejected_log_records` field with +the number of spans/data points/log records it rejected. + +The server SHOULD populate the `error_message` field with a human-readable +error message in English. The message should explain why the +server rejected parts of the data and might offer guidance on how users +can address the issues. +The protocol does not attempt to define the structure of the error message. + +Servers MAY also use the `partial_success` field to convey +warnings/suggestions to clients even when it fully accepts the request. +In such cases, the `rejected_` field MUST have a value of `0`, and +the `error_message` field MUST be non-empty. + +The client MUST NOT retry the request when it receives a partial success +response where the `partial_success` is populated. + +##### Failures + +If the processing of the request fails, the server MUST respond with appropriate +`HTTP 4xx` or `HTTP 5xx` status code. See the sections below for more details about +specific failure cases and HTTP status codes that should be used. + +The response body for all `HTTP 4xx` and `HTTP 5xx` responses MUST be a +Protobuf-encoded +[Status](https://godoc.org/google.golang.org/genproto/googleapis/rpc/status#Status) +message that describes the problem. + +This specification does not use `Status.code` field and the server MAY omit +`Status.code` field. The clients are not expected to alter their behavior based +on `Status.code` field but MAY record it for troubleshooting purposes. + +The `Status.message` field SHOULD contain a developer-facing error message as +defined in `Status` message schema. + +The server MAY include `Status.details` field with additional details. Read +below about what this field can contain in each specific failure case. + +The server SHOULD use HTTP response status codes to indicate +retryable and not-retryable errors for a particular erroneous situation. The +client SHOULD honour HTTP response status codes as retryable or not-retryable. +The requests that receive a response status code listed in following table SHOULD +be retried. +All other `4xx` or `5xx` response status codes MUST NOT be retried. + +|HTTP response status code| +|---------| +|429 Too Many Requests| +|502 Bad Gateway| +|503 Service Unavailable| +|504 Gateway Timeout| + +##### Bad Data + +If the processing of the request fails because the request contains data that +cannot be decoded or is otherwise invalid and such failure is permanent, then the +server MUST respond with `HTTP 400 Bad Request`. The `Status.details` field in +the response SHOULD contain a +[BadRequest](https://github.com/googleapis/googleapis/blob/d14bf59a446c14ef16e9931ebfc8e63ab549bf07/google/rpc/error_details.proto#L166) +that describes the bad data. + +The client MUST NOT retry the request when it receives `HTTP 400 Bad Request` +response. + +##### OTLP/HTTP Throttling + +If the server receives more requests than the client is allowed or the server is +overloaded, the server SHOULD respond with `HTTP 429 Too Many Requests` or +`HTTP 503 Service Unavailable` and MAY include +["Retry-After"](https://tools.ietf.org/html/rfc7231#section-7.1.3) header with a +recommended time interval in seconds to wait before retrying. + +The client SHOULD honour the waiting interval specified in the "Retry-After" +header if it is present. If the client receives an `HTTP 429` or an `HTTP 503` +response and the "Retry-After" header is not present in the response, then the +client SHOULD implement an exponential backoff strategy between retries. + +##### All Other Responses + +All other HTTP responses that are not explicitly listed in this document should +be treated according to HTTP specifications. + +If the server disconnects without returning a response, the client SHOULD retry +and send the same request. The client SHOULD implement an exponential backoff +strategy between retries to avoid overwhelming the server. + +#### OTLP/HTTP Connection + +If the client cannot connect to the server, the client SHOULD retry the +connection using an exponential backoff strategy between retries. The interval +between retries must have a random jitter. + +The client SHOULD keep the connection alive between requests. + +Server implementations SHOULD accept OTLP/HTTP with binary-encoded Protobuf +payload and OTLP/HTTP with JSON-encoded Protobuf payload requests on the same +port and multiplex the requests to the corresponding payload decoder based on +the "Content-Type" request header. + +Server implementations MAY accept OTLP/gRPC and OTLP/HTTP requests on the same +port and multiplex the connections to the corresponding transport handler based +on the "Content-Type" request header. + +#### OTLP/HTTP Concurrent Requests + +To achieve higher total throughput, the client MAY send requests using several +parallel HTTP connections. In that case, the maximum number of parallel +connections SHOULD be configurable. + +#### OTLP/HTTP Default Port + +The default network port for OTLP/HTTP is 4318. + +## Implementation Recommendations + +### Multi-Destination Exporting + +An additional complication must be accounted for when one client must send +telemetry data to more than one destination server. When one of the servers +acknowledges the data and the other server does not (yet), the client needs +to decide how to move forward. + +In such a situation, the client SHOULD implement queuing, acknowledgment +handling, and retrying logic per destination. This ensures that servers do not +block each other. The queues SHOULD reference shared, immutable data to be sent, +thus minimizing the memory overhead caused by having multiple queues. + +![Multi-Destination Exporting](img/otlp-multi-destination.png) + +This ensures that all destination servers receive the data regardless of their +speed of reception (within the available limits imposed by the size of the +client-side queue). + +## Known Limitations + +### Request Acknowledgements + +#### Duplicate Data + +In edge cases (e.g. on reconnections, network interruptions, etc) the client has +no way of knowing if recently sent data was delivered if no acknowledgement was +received yet. The client will typically choose to re-send such data to guarantee +delivery, which may result in duplicate data on the server side. This is a +deliberate choice and is considered to be the right tradeoff for telemetry data. + +## Future Versions and Interoperability + +OTLP will evolve and change over time. Future versions of OTLP must be designed +and implemented in a way that ensures that clients and servers that implement +different versions of OTLP can interoperate and exchange telemetry data. Old +clients must be able to talk to new servers and vice versa. Suppose new versions +of OTLP introduce new functionality that cannot be understood and supported by +nodes implementing the old versions of OTLP. In that case, the protocol must +regress to the lowest common denominator from a functional perspective. + +When possible, the interoperability MUST be ensured between all versions of +OTLP that are not declared obsolete. + +OTLP does not use explicit protocol version numbering. OTLP's interoperability +of clients and servers of different versions is based on the following concepts: + +1. OTLP (current and future versions) defines a set of capabilities, some of + which are mandatory, while others are optional. Clients and servers must implement + mandatory capabilities and can choose to implement only a subset of optional + capabilities. + +2. For minor changes to the protocol, future versions and extensions of OTLP are + encouraged to use the Protobuf's ability to evolve the message schema in + a backward-compatible manner. Newer versions of OTLP may add new fields to + messages that will be ignored by clients and servers that do not understand + these fields. In many cases, careful design of such schema changes and correct + choice of default values for new fields is enough to ensure interoperability + of different versions without nodes explicitly detecting that their peer node + has different capabilities. + +3. More significant changes must be explicitly defined as new optional + capabilities in future OTEPs. Such capabilities SHOULD be discovered by + client and server implementations after establishing the underlying + transport. The exact discovery mechanism SHOULD be described in future OTEPs, + which define the new capabilities and typically can be implemented by making + a discovery request/response message exchange from the client to server. The + mandatory capabilities defined by this specification are implied and do not + require discovery. The implementation which supports a new, optional + capability MUST adjust its behavior to match the expectation of a peer that + does not support a particular capability. + +## Glossary + +There are 2 parties involved in telemetry data exchange. In this document the +party that is the source of telemetry data is called the `Client`, the party +that is the destination of telemetry data is called the `Server`. + +![Client-Server](img/otlp-client-server.png) + +Examples of a Client are instrumented applications or sending side of telemetry +collectors, examples of Servers are telemetry backends or receiving side of +telemetry collectors (so a Collector is typically both a Client and a Server +depending on which side you look from). + +Both the Client and the Server are also a `Node`. This term is used in the +document when referring to either one. + +## References + +- [OTEP 0035](https://github.com/open-telemetry/oteps/blob/main/text/0035-opentelemetry-protocol.md) OpenTelemetry Protocol Specification +- [OTEP 0099](https://github.com/open-telemetry/oteps/blob/main/text/0099-otlp-http.md) OTLP/HTTP: HTTP Transport Extension for OTLP +- [OTEP 0122](https://github.com/open-telemetry/oteps/blob/main/text/0122-otlp-http-json.md) OTLP: JSON Encoding for OTLP/HTTP diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/examples/logs.json temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/examples/logs.json --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/examples/logs.json 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/examples/logs.json 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,100 @@ +{ + "resourceLogs": [ + { + "resource": { + "attributes": [ + { + "key": "service.name", + "value": { + "stringValue": "my.service" + } + } + ] + }, + "scopeLogs": [ + { + "scope": { + "name": "my.library", + "version": "1.0.0", + "attributes": [ + { + "key": "my.scope.attribute", + "value": { + "stringValue": "some scope attribute" + } + } + ] + }, + "logRecords": [ + { + "timeUnixNano": 1544712660300000000, + "observedTimeUnixNano": 1544712660300000000, + "severityText": "Information", + "traceId": "5B8EFFF798038103D269B633813FC60C", + "spanId": "EEE19B7EC3C1B174", + "body": { + "stringValue": "Example log record" + }, + "attributes": [ + { + "key": "string.attribute", + "value": { + "stringValue": "some string" + } + }, + { + "key": "boolean.attribute", + "value": { + "boolValue": true + } + }, + { + "key": "int.attribute", + "value": { + "intValue": 10 + } + }, + { + "key": "double.attribute", + "value": { + "doubleValue": 637.704 + } + }, + { + "key": "array.attribute", + "value": { + "arrayValue": { + "values": [ + { + "stringValue": "many" + }, + { + "stringValue": "values" + } + ] + } + } + }, + { + "key": "map.attribute", + "value": { + "kvlistValue": { + "values": [ + { + "key": "some.map.key", + "value": { + "stringValue": "some value" + } + } + ] + } + } + } + ] + } + ] + } + ] + } + ] +} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/examples/metrics.json temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/examples/metrics.json --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/examples/metrics.json 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/examples/metrics.json 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,107 @@ +{ + "resourceMetrics": [ + { + "resource": { + "attributes": [ + { + "key": "service.name", + "value": { + "stringValue": "my.service" + } + } + ] + }, + "scopeMetrics": [ + { + "scope": { + "name": "my.library", + "version": "1.0.0", + "attributes": [ + { + "key": "my.scope.attribute", + "value": { + "stringValue": "some scope attribute" + } + } + ] + }, + "metrics": [ + { + "name": "my.counter", + "unit": "1", + "description": "I'm a Counter", + "sum": { + "aggregationTemporality": 1, + "isMonotonic": true, + "dataPoints": [ + { + "asDouble": 5, + "startTimeUnixNano": 1544712660300000000, + "timeUnixNano": 1544712660300000000, + "attributes": [ + { + "key": "my.counter.attr", + "value": { + "stringValue": "some value" + } + } + ] + } + ] + } + }, + { + "name": "my.gauge", + "unit": "1", + "description": "I'm a Gauge", + "gauge": { + "dataPoints": [ + { + "asDouble": 10, + "timeUnixNano": 1544712660300000000, + "attributes": [ + { + "key": "my.gauge.attr", + "value": { + "stringValue": "some value" + } + } + ] + } + ] + } + }, + { + "name": "my.histogram", + "unit": "1", + "description": "I'm a Histogram", + "histogram": { + "aggregationTemporality": 1, + "dataPoints": [ + { + "startTimeUnixNano": 1544712660300000000, + "timeUnixNano": 1544712660300000000, + "count": 3, + "sum": 3, + "bucketCounts": [1,1,1], + "explicitBounds": [1], + "min": 1, + "max": 1, + "attributes": [ + { + "key": "my.histogram.attr", + "value": { + "stringValue": "some value" + } + } + ] + } + ] + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/examples/README.md temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/examples/README.md --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/examples/README.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/examples/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,43 @@ +# OTLP JSON request examples + +This folder contains a collection of example OTLP JSON files for all signals +that can be used as request payloads. + +- Trace [trace.json](trace.json) +- Metrics [metrics.json](metrics.json) +- Logs [logs.json](logs.json) + +## Trying it out + +First run a OpenTelemetry collector with the following configuration: + +```yaml +receivers: + otlp: + protocols: + http: + +exporters: + logging: + verbosity: detailed + +service: + pipelines: + traces: + receivers: [otlp] + exporters: [logging] + metrics: + receivers: [otlp] + exporters: [logging] + logs: + receivers: [otlp] + exporters: [logging] +``` + +Then send a curl request to the collector (e.g. for Logs): + +```shell +curl -X POST -H "Content-Type: application/json" -d @logs.json -i localhost:4318/v1/logs +``` + +> Remember to change the URL path when sending other signals (traces/metrics). diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/examples/trace.json temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/examples/trace.json --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/examples/trace.json 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/examples/trace.json 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,51 @@ +{ + "resourceSpans": [ + { + "resource": { + "attributes": [ + { + "key": "service.name", + "value": { + "stringValue": "my.service" + } + } + ] + }, + "scopeSpans": [ + { + "scope": { + "name": "my.library", + "version": "1.0.0", + "attributes": [ + { + "key": "my.scope.attribute", + "value": { + "stringValue": "some scope attribute" + } + } + ] + }, + "spans": [ + { + "traceId": "5B8EFFF798038103D269B633813FC60C", + "spanId": "EEE19B7EC3C1B174", + "parentSpanId": "EEE19B7EC3C1B173", + "name": "I'm a server span", + "startTimeUnixNano": 1544712660000000000, + "endTimeUnixNano": 1544712661000000000, + "kind": 2, + "attributes": [ + { + "key": "my.span.attr", + "value": { + "stringValue": "some value" + } + } + ] + } + ] + } + ] + } + ] +} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/Makefile temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/Makefile --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/Makefile 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/Makefile 2023-10-30 19:40:00.000000000 +0000 @@ -13,13 +13,22 @@ endef +.PHONY: all +all: gen-all markdown-link-check + # Generate all implementations .PHONY: gen-all gen-all: gen-cpp gen-csharp gen-go gen-java gen-kotlin gen-objc gen-openapi gen-php gen-python gen-ruby OTEL_DOCKER_PROTOBUF ?= otel/build-protobuf:0.9.0 +BUF_DOCKER ?= bufbuild/buf:1.7.0 + PROTOC := docker run --rm -u ${shell id -u} -v${PWD}:${PWD} -w${PWD} ${OTEL_DOCKER_PROTOBUF} --proto_path=${PWD} -PROTO_INCLUDES := -I/usr/include/github.com/gogo/protobuf +BUF := docker run --rm -v "${PWD}:/workspace" -w /workspace ${BUF_DOCKER} +# When checking for protobuf breaking changes, check against the latest release tag +LAST_RELEASE_TAG := $(shell git tag --sort=committerdate | tail -1) +# Options are described in https://docs.buf.build/breaking/usage#git +BUF_AGAINST ?= "https://github.com/open-telemetry/opentelemetry-proto.git\#tag=$(LAST_RELEASE_TAG)" PROTO_GEN_CPP_DIR ?= $(GENDIR)/cpp PROTO_GEN_CSHARP_DIR ?= $(GENDIR)/csharp @@ -37,6 +46,7 @@ .PHONY: docker-pull docker-pull: docker pull $(OTEL_DOCKER_PROTOBUF) + docker pull $(BUF_DOCKER) # Generate gRPC/Protobuf implementation for C++. .PHONY: gen-cpp @@ -63,7 +73,7 @@ gen-go: rm -rf ./$(PROTO_GEN_GO_DIR) mkdir -p ./$(PROTO_GEN_GO_DIR) - $(foreach file,$(PROTO_FILES),$(call exec-command,$(PROTOC) $(PROTO_INCLUDES) --gogo_out=plugins=grpc:./$(PROTO_GEN_GO_DIR) $(file))) + $(foreach file,$(PROTO_FILES),$(call exec-command,$(PROTOC) --go_out=plugins=grpc:./$(PROTO_GEN_GO_DIR) $(file))) $(PROTOC) --grpc-gateway_out=logtostderr=true,grpc_api_configuration=opentelemetry/proto/collector/trace/v1/trace_service_http.yaml:./$(PROTO_GEN_GO_DIR) opentelemetry/proto/collector/trace/v1/trace_service.proto $(PROTOC) --grpc-gateway_out=logtostderr=true,grpc_api_configuration=opentelemetry/proto/collector/metrics/v1/metrics_service_http.yaml:./$(PROTO_GEN_GO_DIR) opentelemetry/proto/collector/metrics/v1/metrics_service.proto $(PROTOC) --grpc-gateway_out=logtostderr=true,grpc_api_configuration=opentelemetry/proto/collector/logs/v1/logs_service_http.yaml:./$(PROTO_GEN_GO_DIR) opentelemetry/proto/collector/logs/v1/logs_service.proto @@ -140,3 +150,18 @@ $(PROTOC) --ruby_out=./$(PROTO_GEN_RUBY_DIR) --grpc-ruby_out=./$(PROTO_GEN_RUBY_DIR) opentelemetry/proto/collector/trace/v1/trace_service.proto $(PROTOC) --ruby_out=./$(PROTO_GEN_RUBY_DIR) --grpc-ruby_out=./$(PROTO_GEN_RUBY_DIR) opentelemetry/proto/collector/metrics/v1/metrics_service.proto $(PROTOC) --ruby_out=./$(PROTO_GEN_RUBY_DIR) --grpc-ruby_out=./$(PROTO_GEN_RUBY_DIR) opentelemetry/proto/collector/logs/v1/logs_service.proto + +.PHONY: breaking-change +breaking-change: + $(BUF) breaking --against $(BUF_AGAINST) $(BUF_FLAGS) + + +ALL_DOCS := $(shell find . -type f -name '*.md' -not -path './.github/*' -not -path './node_modules/*' | sort) + +.PHONY: markdown-link-check +markdown-link-check: + @if ! npm ls markdown-link-check; then npm install; fi + @for f in $(ALL_DOCS); do \ + npx --no -- markdown-link-check --quiet --config .markdown_link_check_config.json $$f \ + || exit 1; \ + done diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/logs/v1/logs_service.proto temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/logs/v1/logs_service.proto --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/logs/v1/logs_service.proto 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/logs/v1/logs_service.proto 2023-10-30 19:40:00.000000000 +0000 @@ -14,13 +14,11 @@ syntax = "proto3"; -// NOTE: This proto is experimental and is subject to change at this point. -// Please do not use it at the moment. - package opentelemetry.proto.collector.logs.v1; import "opentelemetry/proto/logs/v1/logs.proto"; +option csharp_namespace = "OpenTelemetry.Proto.Collector.Logs.V1"; option java_multiple_files = true; option java_package = "io.opentelemetry.proto.collector.logs.v1"; option java_outer_classname = "LogsServiceProto"; @@ -45,4 +43,37 @@ } message ExportLogsServiceResponse { + // The details of a partially successful export request. + // + // If the request is only partially accepted + // (i.e. when the server accepts only parts of the data and rejects the rest) + // the server MUST initialize the `partial_success` field and MUST + // set the `rejected_` with the number of items it rejected. + // + // Servers MAY also make use of the `partial_success` field to convey + // warnings/suggestions to senders even when the request was fully accepted. + // In such cases, the `rejected_` MUST have a value of `0` and + // the `error_message` MUST be non-empty. + // + // A `partial_success` message with an empty value (rejected_ = 0 and + // `error_message` = "") is equivalent to it not being set/present. Senders + // SHOULD interpret it the same way as in the full success case. + ExportLogsPartialSuccess partial_success = 1; +} + +message ExportLogsPartialSuccess { + // The number of rejected log records. + // + // A `rejected_` field holding a `0` value indicates that the + // request was fully accepted. + int64 rejected_log_records = 1; + + // A developer-facing human-readable message in English. It should be used + // either to explain why the server rejected parts of the data during a partial + // success or to convey warnings/suggestions during a full success. The message + // should offer guidance on how users can address such issues. + // + // error_message is an optional field. An error_message with an empty value + // is equivalent to it not being set. + string error_message = 2; } diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/metrics/v1/metrics_service.proto temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/metrics/v1/metrics_service.proto --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/metrics/v1/metrics_service.proto 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/metrics/v1/metrics_service.proto 2023-10-30 19:40:00.000000000 +0000 @@ -18,6 +18,7 @@ import "opentelemetry/proto/metrics/v1/metrics.proto"; +option csharp_namespace = "OpenTelemetry.Proto.Collector.Metrics.V1"; option java_multiple_files = true; option java_package = "io.opentelemetry.proto.collector.metrics.v1"; option java_outer_classname = "MetricsServiceProto"; @@ -42,4 +43,37 @@ } message ExportMetricsServiceResponse { + // The details of a partially successful export request. + // + // If the request is only partially accepted + // (i.e. when the server accepts only parts of the data and rejects the rest) + // the server MUST initialize the `partial_success` field and MUST + // set the `rejected_` with the number of items it rejected. + // + // Servers MAY also make use of the `partial_success` field to convey + // warnings/suggestions to senders even when the request was fully accepted. + // In such cases, the `rejected_` MUST have a value of `0` and + // the `error_message` MUST be non-empty. + // + // A `partial_success` message with an empty value (rejected_ = 0 and + // `error_message` = "") is equivalent to it not being set/present. Senders + // SHOULD interpret it the same way as in the full success case. + ExportMetricsPartialSuccess partial_success = 1; +} + +message ExportMetricsPartialSuccess { + // The number of rejected data points. + // + // A `rejected_` field holding a `0` value indicates that the + // request was fully accepted. + int64 rejected_data_points = 1; + + // A developer-facing human-readable message in English. It should be used + // either to explain why the server rejected parts of the data during a partial + // success or to convey warnings/suggestions during a full success. The message + // should offer guidance on how users can address such issues. + // + // error_message is an optional field. An error_message with an empty value + // is equivalent to it not being set. + string error_message = 2; } diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/README.md temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/README.md --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -7,3 +7,4 @@ 1. `common` package contains the common messages shared between different services. 2. `trace` package contains the Trace Service protos. 3. `metrics` package contains the Metrics Service protos. +4. `logs` package contains the Logs Service protos. diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service_http.yaml temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service_http.yaml --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service_http.yaml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service_http.yaml 2023-10-30 19:40:00.000000000 +0000 @@ -5,5 +5,5 @@ http: rules: - selector: opentelemetry.proto.collector.trace.v1.TraceService.Export - post: /v1/trace - body: "*" \ No newline at end of file + post: /v1/traces + body: "*" diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service.proto temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service.proto --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service.proto 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service.proto 2023-10-30 19:40:00.000000000 +0000 @@ -18,6 +18,7 @@ import "opentelemetry/proto/trace/v1/trace.proto"; +option csharp_namespace = "OpenTelemetry.Proto.Collector.Trace.V1"; option java_multiple_files = true; option java_package = "io.opentelemetry.proto.collector.trace.v1"; option java_outer_classname = "TraceServiceProto"; @@ -42,4 +43,37 @@ } message ExportTraceServiceResponse { + // The details of a partially successful export request. + // + // If the request is only partially accepted + // (i.e. when the server accepts only parts of the data and rejects the rest) + // the server MUST initialize the `partial_success` field and MUST + // set the `rejected_` with the number of items it rejected. + // + // Servers MAY also make use of the `partial_success` field to convey + // warnings/suggestions to senders even when the request was fully accepted. + // In such cases, the `rejected_` MUST have a value of `0` and + // the `error_message` MUST be non-empty. + // + // A `partial_success` message with an empty value (rejected_ = 0 and + // `error_message` = "") is equivalent to it not being set/present. Senders + // SHOULD interpret it the same way as in the full success case. + ExportTracePartialSuccess partial_success = 1; +} + +message ExportTracePartialSuccess { + // The number of rejected spans. + // + // A `rejected_` field holding a `0` value indicates that the + // request was fully accepted. + int64 rejected_spans = 1; + + // A developer-facing human-readable message in English. It should be used + // either to explain why the server rejected parts of the data during a partial + // success or to convey warnings/suggestions during a full success. The message + // should offer guidance on how users can address such issues. + // + // error_message is an optional field. An error_message with an empty value + // is equivalent to it not being set. + string error_message = 2; } diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/common/v1/common.proto temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/common/v1/common.proto --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/common/v1/common.proto 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/common/v1/common.proto 2023-10-30 19:40:00.000000000 +0000 @@ -16,6 +16,7 @@ package opentelemetry.proto.common.v1; +option csharp_namespace = "OpenTelemetry.Proto.Common.V1"; option java_multiple_files = true; option java_package = "io.opentelemetry.proto.common.v1"; option java_outer_classname = "CommonProto"; @@ -65,10 +66,16 @@ AnyValue value = 2; } -// InstrumentationLibrary is a message representing the instrumentation library information +// InstrumentationScope is a message representing the instrumentation scope information // such as the fully qualified name and version. -message InstrumentationLibrary { - // An empty instrumentation library name means the name is unknown. +message InstrumentationScope { + // An empty instrumentation scope name means the name is unknown. string name = 1; string version = 2; + + // Additional attributes that describe the scope. [Optional]. + // Attribute keys MUST be unique (it is not allowed to have more than one + // attribute with the same key). + repeated KeyValue attributes = 3; + uint32 dropped_attributes_count = 4; } diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/logs/v1/logs.proto temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/logs/v1/logs.proto --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/logs/v1/logs.proto 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/logs/v1/logs.proto 2023-10-30 19:40:00.000000000 +0000 @@ -19,6 +19,7 @@ import "opentelemetry/proto/common/v1/common.proto"; import "opentelemetry/proto/resource/v1/resource.proto"; +option csharp_namespace = "OpenTelemetry.Proto.Logs.V1"; option java_multiple_files = true; option java_package = "io.opentelemetry.proto.logs.v1"; option java_outer_classname = "LogsProto"; @@ -43,27 +44,28 @@ repeated ResourceLogs resource_logs = 1; } -// A collection of InstrumentationLibraryLogs from a Resource. +// A collection of ScopeLogs from a Resource. message ResourceLogs { + reserved 1000; + // The resource for the logs in this message. // If this field is not set then resource info is unknown. opentelemetry.proto.resource.v1.Resource resource = 1; - // A list of InstrumentationLibraryLogs that originate from a resource. - repeated InstrumentationLibraryLogs instrumentation_library_logs = 2; + // A list of ScopeLogs that originate from a resource. + repeated ScopeLogs scope_logs = 2; // This schema_url applies to the data in the "resource" field. It does not apply - // to the data in the "instrumentation_library_logs" field which have their own - // schema_url field. + // to the data in the "scope_logs" field which have their own schema_url field. string schema_url = 3; } -// A collection of Logs produced by an InstrumentationLibrary. -message InstrumentationLibraryLogs { - // The instrumentation library information for the logs in this message. - // Semantically when InstrumentationLibrary isn't set, it is equivalent with - // an empty instrumentation library name (unknown). - opentelemetry.proto.common.v1.InstrumentationLibrary instrumentation_library = 1; +// A collection of Logs produced by a Scope. +message ScopeLogs { + // The instrumentation scope information for the logs in this message. + // Semantically when InstrumentationScope isn't set, it is equivalent with + // an empty instrumentation scope name (unknown). + opentelemetry.proto.common.v1.InstrumentationScope scope = 1; // A list of log records. repeated LogRecord log_records = 2; @@ -102,15 +104,28 @@ SEVERITY_NUMBER_FATAL4 = 24; } -// Masks for LogRecord.flags field. +// LogRecordFlags is defined as a protobuf 'uint32' type and is to be used as +// bit-fields. Each non-zero value defined in this enum is a bit-mask. +// To extract the bit-field, for example, use an expression like: +// +// (logRecord.flags & LOG_RECORD_FLAGS_TRACE_FLAGS_MASK) +// enum LogRecordFlags { - LOG_RECORD_FLAG_UNSPECIFIED = 0; - LOG_RECORD_FLAG_TRACE_FLAGS_MASK = 0x000000FF; + // The zero value for the enum. Should not be used for comparisons. + // Instead use bitwise "and" with the appropriate mask as shown above. + LOG_RECORD_FLAGS_DO_NOT_USE = 0; + + // Bits 0-7 are used for trace flags. + LOG_RECORD_FLAGS_TRACE_FLAGS_MASK = 0x000000FF; + + // Bits 8-31 are reserved for future use. } // A log record according to OpenTelemetry Log Data Model: // https://github.com/open-telemetry/oteps/blob/main/text/logs/0097-log-data-model.md message LogRecord { + reserved 4; + // time_unix_nano is the time when the event occurred. // Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970. // Value of 0 indicates unknown or missing timestamp. @@ -141,13 +156,6 @@ // it is known at the source. [Optional]. string severity_text = 3; - // Short event identifier that does not contain varying parts. Name describes - // what happened (e.g. "ProcessStarted"). Recommended to be no longer than 50 - // characters. Not guaranteed to be unique in any way. [Optional]. - // This deprecated field is planned to be removed March 15, 2022. Receivers can - // ignore this field. - string name = 4 [deprecated = true]; - // A value containing the body of the log record. Can be for example a human-readable // string message (including multi-line) describing the event in a free form or it can // be a structured data composed of arrays and maps of other values. [Optional]. @@ -163,18 +171,33 @@ // defined in W3C Trace Context specification. 24 most significant bits are reserved // and must be set to 0. Readers must not assume that 24 most significant bits // will be zero and must correctly mask the bits when reading 8-bit trace flag (use - // flags & TRACE_FLAGS_MASK). [Optional]. + // flags & LOG_RECORD_FLAGS_TRACE_FLAGS_MASK). [Optional]. fixed32 flags = 8; // A unique identifier for a trace. All logs from the same trace share - // the same `trace_id`. The ID is a 16-byte array. An ID with all zeroes - // is considered invalid. Can be set for logs that are part of request processing - // and have an assigned trace id. [Optional]. + // the same `trace_id`. The ID is a 16-byte array. An ID with all zeroes OR + // of length other than 16 bytes is considered invalid (empty string in OTLP/JSON + // is zero-length and thus is also invalid). + // + // This field is optional. + // + // The receivers SHOULD assume that the log record is not associated with a + // trace if any of the following is true: + // - the field is not present, + // - the field contains an invalid value. bytes trace_id = 9; // A unique identifier for a span within a trace, assigned when the span - // is created. The ID is an 8-byte array. An ID with all zeroes is considered - // invalid. Can be set for logs that are part of a particular processing span. - // If span_id is present trace_id SHOULD be also present. [Optional]. + // is created. The ID is an 8-byte array. An ID with all zeroes OR of length + // other than 8 bytes is considered invalid (empty string in OTLP/JSON + // is zero-length and thus is also invalid). + // + // This field is optional. If the sender specifies a valid span_id then it SHOULD also + // specify a valid trace_id. + // + // The receivers SHOULD assume that the log record is not associated with a + // span if any of the following is true: + // - the field is not present, + // - the field contains an invalid value. bytes span_id = 10; } diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/metrics/v1/metrics.proto temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/metrics/v1/metrics.proto --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/metrics/v1/metrics.proto 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/metrics/v1/metrics.proto 2023-10-30 19:40:00.000000000 +0000 @@ -19,6 +19,7 @@ import "opentelemetry/proto/common/v1/common.proto"; import "opentelemetry/proto/resource/v1/resource.proto"; +option csharp_namespace = "OpenTelemetry.Proto.Metrics.V1"; option java_multiple_files = true; option java_package = "io.opentelemetry.proto.metrics.v1"; option java_outer_classname = "MetricsProto"; @@ -43,27 +44,28 @@ repeated ResourceMetrics resource_metrics = 1; } -// A collection of InstrumentationLibraryMetrics from a Resource. +// A collection of ScopeMetrics from a Resource. message ResourceMetrics { + reserved 1000; + // The resource for the metrics in this message. // If this field is not set then no resource info is known. opentelemetry.proto.resource.v1.Resource resource = 1; // A list of metrics that originate from a resource. - repeated InstrumentationLibraryMetrics instrumentation_library_metrics = 2; + repeated ScopeMetrics scope_metrics = 2; // This schema_url applies to the data in the "resource" field. It does not apply - // to the data in the "instrumentation_library_metrics" field which have their own - // schema_url field. + // to the data in the "scope_metrics" field which have their own schema_url field. string schema_url = 3; } -// A collection of Metrics produced by an InstrumentationLibrary. -message InstrumentationLibraryMetrics { - // The instrumentation library information for the metrics in this message. - // Semantically when InstrumentationLibrary isn't set, it is equivalent with - // an empty instrumentation library name (unknown). - opentelemetry.proto.common.v1.InstrumentationLibrary instrumentation_library = 1; +// A collection of Metrics produced by an Scope. +message ScopeMetrics { + // The instrumentation scope information for the metrics in this message. + // Semantically when InstrumentationScope isn't set, it is equivalent with + // an empty instrumentation scope name (unknown). + opentelemetry.proto.common.v1.InstrumentationScope scope = 1; // A list of metrics that originate from an instrumentation library. repeated Metric metrics = 2; @@ -75,7 +77,7 @@ // Defines a Metric which has one or more timeseries. The following is a // brief summary of the Metric data model. For more details, see: // -// https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/datamodel.md +// https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/data-model.md // // // The data model and relation between entities is shown in the @@ -314,15 +316,17 @@ // enum is a bit-mask. To test the presence of a single flag in the flags of // a data point, for example, use an expression like: // -// (point.flags & FLAG_NO_RECORDED_VALUE) == FLAG_NO_RECORDED_VALUE +// (point.flags & DATA_POINT_FLAGS_NO_RECORDED_VALUE_MASK) == DATA_POINT_FLAGS_NO_RECORDED_VALUE_MASK // enum DataPointFlags { - FLAG_NONE = 0; + // The zero value for the enum. Should not be used for comparisons. + // Instead use bitwise "and" with the appropriate mask as shown above. + DATA_POINT_FLAGS_DO_NOT_USE = 0; // This DataPoint is valid but has no recorded value. This value // SHOULD be used to reflect explicitly missing data in a series, as // for an equivalent to the Prometheus "staleness marker". - FLAG_NO_RECORDED_VALUE = 1; + DATA_POINT_FLAGS_NO_RECORDED_VALUE_MASK = 1; // Bits 2-31 are reserved for future use. } @@ -412,7 +416,7 @@ // Negative events *can* be recorded, but sum should not be filled out when // doing so. This is specifically to enforce compatibility w/ OpenMetrics, // see: https://github.com/OpenObservability/OpenMetrics/blob/main/specification/OpenMetrics.md#histogram - double sum = 5; + optional double sum = 5; // bucket_counts is an optional field contains the count values of histogram // for each bucket. @@ -445,6 +449,12 @@ // Flags that apply to this specific data point. See DataPointFlags // for the available flags and their meaning. uint32 flags = 10; + + // min is the minimum value over (start_time, end_time]. + optional double min = 11; + + // max is the maximum value over (start_time, end_time]. + optional double max = 12; } // ExponentialHistogramDataPoint is a single data point in a timeseries that describes the @@ -485,7 +495,7 @@ // Negative events *can* be recorded, but sum should not be filled out when // doing so. This is specifically to enforce compatibility w/ OpenMetrics, // see: https://github.com/OpenObservability/OpenMetrics/blob/main/specification/OpenMetrics.md#histogram - double sum = 5; + optional double sum = 5; // scale describes the resolution of the histogram. Boundaries are // located at powers of the base, where: @@ -493,8 +503,8 @@ // base = (2^(2^-scale)) // // The histogram bucket identified by `index`, a signed integer, - // contains values that are greater than or equal to (base^index) and - // less than (base^(index+1)). + // contains values that are greater than (base^index) and + // less than or equal to (base^(index+1)). // // The positive and negative ranges of the histogram are expressed // separately. Negative values are mapped by their absolute value @@ -528,9 +538,9 @@ // Note: This uses a varint encoding as a simple form of compression. sint32 offset = 1; - // Count is an array of counts, where count[i] carries the count - // of the bucket at index (offset+i). count[i] is the count of - // values greater than or equal to base^(offset+i) and less than + // bucket_counts is an array of count values, where bucket_counts[i] carries + // the count of the bucket at index (offset+i). bucket_counts[i] is the count + // of values greater than base^(offset+i) and less than or equal to // base^(offset+i+1). // // Note: By contrast, the explicit HistogramDataPoint uses @@ -547,6 +557,20 @@ // (Optional) List of exemplars collected from // measurements that were used to form the data point repeated Exemplar exemplars = 11; + + // min is the minimum value over (start_time, end_time]. + optional double min = 12; + + // max is the maximum value over (start_time, end_time]. + optional double max = 13; + + // ZeroThreshold may be optionally set to convey the width of the zero + // region. Where the zero region is defined as the closed interval + // [-ZeroThreshold, ZeroThreshold]. + // When ZeroThreshold is 0, zero count bucket stores values that cannot be + // expressed using the standard exponential formula as well as values that + // have been rounded to zero. + double zero_threshold = 14; } // SummaryDataPoint is a single data point in a timeseries that describes the diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/resource/v1/resource.proto temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/resource/v1/resource.proto --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/resource/v1/resource.proto 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/resource/v1/resource.proto 2023-10-30 19:40:00.000000000 +0000 @@ -18,6 +18,7 @@ import "opentelemetry/proto/common/v1/common.proto"; +option csharp_namespace = "OpenTelemetry.Proto.Resource.V1"; option java_multiple_files = true; option java_package = "io.opentelemetry.proto.resource.v1"; option java_outer_classname = "ResourceProto"; diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/trace/v1/trace_config.proto temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/trace/v1/trace_config.proto --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/trace/v1/trace_config.proto 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/trace/v1/trace_config.proto 1970-01-01 00:00:00.000000000 +0000 @@ -1,78 +0,0 @@ -// Copyright 2019, OpenTelemetry 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. - -syntax = "proto3"; - -package opentelemetry.proto.trace.v1; - -option java_multiple_files = true; -option java_package = "io.opentelemetry.proto.trace.v1"; -option java_outer_classname = "TraceConfigProto"; -option go_package = "go.opentelemetry.io/proto/otlp/collector/trace/v1"; - -// Global configuration of the trace service. All fields must be specified, or -// the default (zero) values will be used for each type. -message TraceConfig { - - // The global default sampler used to make decisions on span sampling. - oneof sampler { - ConstantSampler constant_sampler = 1; - - TraceIdRatioBased trace_id_ratio_based = 2; - - RateLimitingSampler rate_limiting_sampler = 3; - } - - // The global default max number of attributes per span. - int64 max_number_of_attributes = 4; - - // The global default max number of annotation events per span. - int64 max_number_of_timed_events= 5; - - // The global default max number of attributes per timed event. - int64 max_number_of_attributes_per_timed_event = 6; - - // The global default max number of link entries per span. - int64 max_number_of_links = 7; - - // The global default max number of attributes per span. - int64 max_number_of_attributes_per_link = 8; -} - -// Sampler that always makes a constant decision on span sampling. -message ConstantSampler { - // How spans should be sampled: - // - Always off - // - Always on - // - Always follow the parent Span's decision (off if no parent). - enum ConstantDecision { - ALWAYS_OFF = 0; - ALWAYS_ON = 1; - ALWAYS_PARENT = 2; - } - ConstantDecision decision = 1; -} - -// Sampler that tries to uniformly sample traces with a given ratio. -// The ratio of sampling a trace is equal to that of the specified ratio. -message TraceIdRatioBased { - // The desired ratio of sampling. Must be within [0.0, 1.0]. - double samplingRatio = 1; -} - -// Sampler that tries to sample with a rate per time window. -message RateLimitingSampler { - // Rate per second. - int64 qps = 1; -} diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/trace/v1/trace.proto temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/trace/v1/trace.proto --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/trace/v1/trace.proto 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/opentelemetry/proto/trace/v1/trace.proto 2023-10-30 19:40:00.000000000 +0000 @@ -19,6 +19,7 @@ import "opentelemetry/proto/common/v1/common.proto"; import "opentelemetry/proto/resource/v1/resource.proto"; +option csharp_namespace = "OpenTelemetry.Proto.Trace.V1"; option java_multiple_files = true; option java_package = "io.opentelemetry.proto.trace.v1"; option java_outer_classname = "TraceProto"; @@ -43,61 +44,52 @@ repeated ResourceSpans resource_spans = 1; } -// A collection of InstrumentationLibrarySpans from a Resource. +// A collection of ScopeSpans from a Resource. message ResourceSpans { + reserved 1000; + // The resource for the spans in this message. // If this field is not set then no resource info is known. opentelemetry.proto.resource.v1.Resource resource = 1; - // A list of InstrumentationLibrarySpans that originate from a resource. - repeated InstrumentationLibrarySpans instrumentation_library_spans = 2; + // A list of ScopeSpans that originate from a resource. + repeated ScopeSpans scope_spans = 2; // This schema_url applies to the data in the "resource" field. It does not apply - // to the data in the "instrumentation_library_spans" field which have their own - // schema_url field. + // to the data in the "scope_spans" field which have their own schema_url field. string schema_url = 3; } -// A collection of Spans produced by an InstrumentationLibrary. -message InstrumentationLibrarySpans { - // The instrumentation library information for the spans in this message. - // Semantically when InstrumentationLibrary isn't set, it is equivalent with - // an empty instrumentation library name (unknown). - opentelemetry.proto.common.v1.InstrumentationLibrary instrumentation_library = 1; +// A collection of Spans produced by an InstrumentationScope. +message ScopeSpans { + // The instrumentation scope information for the spans in this message. + // Semantically when InstrumentationScope isn't set, it is equivalent with + // an empty instrumentation scope name (unknown). + opentelemetry.proto.common.v1.InstrumentationScope scope = 1; - // A list of Spans that originate from an instrumentation library. + // A list of Spans that originate from an instrumentation scope. repeated Span spans = 2; // This schema_url applies to all spans and span events in the "spans" field. string schema_url = 3; } -// Span represents a single operation within a trace. Spans can be -// nested to form a trace tree. Spans may also be linked to other spans -// from the same or different trace and form graphs. Often, a trace -// contains a root span that describes the end-to-end latency, and one -// or more subspans for its sub-operations. A trace can also contain -// multiple root spans, or none at all. Spans do not need to be -// contiguous - there may be gaps or overlaps between spans in a trace. +// A Span represents a single operation performed by a single component of the system. // // The next available field id is 17. message Span { // A unique identifier for a trace. All spans from the same trace share - // the same `trace_id`. The ID is a 16-byte array. An ID with all zeroes - // is considered invalid. - // - // This field is semantically required. Receiver should generate new - // random trace_id if empty or invalid trace_id was received. + // the same `trace_id`. The ID is a 16-byte array. An ID with all zeroes OR + // of length other than 16 bytes is considered invalid (empty string in OTLP/JSON + // is zero-length and thus is also invalid). // // This field is required. bytes trace_id = 1; // A unique identifier for a span within a trace, assigned when the span - // is created. The ID is an 8-byte array. An ID with all zeroes is considered - // invalid. - // - // This field is semantically required. Receiver should generate new - // random span_id if empty or invalid span_id was received. + // is created. The ID is an 8-byte array. An ID with all zeroes OR of length + // other than 8 bytes is considered invalid (empty string in OTLP/JSON + // is zero-length and thus is also invalid). // // This field is required. bytes span_id = 2; @@ -180,11 +172,11 @@ // // "/http/user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" // "/http/server_latency": 300 - // "abc.com/myattribute": true - // "abc.com/score": 10.239 + // "example.com/myattribute": true + // "example.com/score": 10.239 // // The OpenTelemetry API specification further restricts the allowed value types: - // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/common/common.md#attributes + // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/common/README.md#attribute // Attribute keys MUST be unique (it is not allowed to have more than one // attribute with the same key). repeated opentelemetry.proto.common.v1.KeyValue attributes = 9; @@ -272,8 +264,8 @@ enum StatusCode { // The default status. STATUS_CODE_UNSET = 0; - // The Span has been validated by an Application developers or Operator to have - // completed successfully. + // The Span has been validated by an Application developer or Operator to + // have completed successfully. STATUS_CODE_OK = 1; // The Span contains an error. STATUS_CODE_ERROR = 2; diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/package.json temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/package.json --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/package.json 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/package.json 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "markdown-link-check": "3.10.3" + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/package-lock.json temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/package-lock.json --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/package-lock.json 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/package-lock.json 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,815 @@ +{ + "name": "otlp", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "devDependencies": { + "markdown-link-check": "3.10.3" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dev": true, + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/html-link-extractor": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/html-link-extractor/-/html-link-extractor-1.0.5.tgz", + "integrity": "sha512-ADd49pudM157uWHwHQPUSX4ssMsvR/yHIswOR5CUfBdK9g9ZYGMhVSE6KZVHJ6kCkR0gH4htsfzU6zECDNVwyw==", + "dev": true, + "dependencies": { + "cheerio": "^1.0.0-rc.10" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-absolute-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz", + "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-relative-url": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-relative-url/-/is-relative-url-4.0.0.tgz", + "integrity": "sha512-PkzoL1qKAYXNFct5IKdKRH/iBQou/oCC85QhXj6WKtUQBliZ4Yfd3Zk27RHu9KQG8r6zgvAA2AQKC9p+rqTszg==", + "dev": true, + "dependencies": { + "is-absolute-url": "^4.0.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isemail": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", + "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", + "dev": true, + "dependencies": { + "punycode": "2.x.x" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/link-check": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/link-check/-/link-check-5.2.0.tgz", + "integrity": "sha512-xRbhYLaGDw7eRDTibTAcl6fXtmUQ13vkezQiTqshHHdGueQeumgxxmQMIOmJYsh2p8BF08t8thhDQ++EAOOq3w==", + "dev": true, + "dependencies": { + "is-relative-url": "^4.0.0", + "isemail": "^3.2.0", + "ms": "^2.1.3", + "needle": "^3.1.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/markdown-link-check": { + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/markdown-link-check/-/markdown-link-check-3.10.3.tgz", + "integrity": "sha512-uGdJiZOy1CVWlRe7CyBSJ0Gz80Xm4vt++xjX9sNFjB7qcAxLinaMmzFQ5xOwERaXC9mK770BhnqnsyJT1gTr9w==", + "dev": true, + "dependencies": { + "async": "^3.2.4", + "chalk": "^4.1.2", + "commander": "^6.2.0", + "link-check": "^5.2.0", + "lodash": "^4.17.21", + "markdown-link-extractor": "^3.1.0", + "needle": "^3.1.0", + "progress": "^2.0.3" + }, + "bin": { + "markdown-link-check": "markdown-link-check" + } + }, + "node_modules/markdown-link-extractor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/markdown-link-extractor/-/markdown-link-extractor-3.1.0.tgz", + "integrity": "sha512-r0NEbP1dsM+IqB62Ru9TXLP/HDaTdBNIeylYXumuBi6Xv4ufjE1/g3TnslYL8VNqNcGAGbMptQFHrrdfoZ/Sug==", + "dev": true, + "dependencies": { + "html-link-extractor": "^1.0.5", + "marked": "^4.1.0" + } + }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/needle": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", + "dev": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dev": true, + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + } + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dev": true, + "requires": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + } + }, + "cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + }, + "css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0" + } + }, + "domutils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "dev": true, + "requires": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" + } + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "html-link-extractor": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/html-link-extractor/-/html-link-extractor-1.0.5.tgz", + "integrity": "sha512-ADd49pudM157uWHwHQPUSX4ssMsvR/yHIswOR5CUfBdK9g9ZYGMhVSE6KZVHJ6kCkR0gH4htsfzU6zECDNVwyw==", + "dev": true, + "requires": { + "cheerio": "^1.0.0-rc.10" + } + }, + "htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "is-absolute-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz", + "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==", + "dev": true + }, + "is-relative-url": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-relative-url/-/is-relative-url-4.0.0.tgz", + "integrity": "sha512-PkzoL1qKAYXNFct5IKdKRH/iBQou/oCC85QhXj6WKtUQBliZ4Yfd3Zk27RHu9KQG8r6zgvAA2AQKC9p+rqTszg==", + "dev": true, + "requires": { + "is-absolute-url": "^4.0.1" + } + }, + "isemail": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", + "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", + "dev": true, + "requires": { + "punycode": "2.x.x" + } + }, + "link-check": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/link-check/-/link-check-5.2.0.tgz", + "integrity": "sha512-xRbhYLaGDw7eRDTibTAcl6fXtmUQ13vkezQiTqshHHdGueQeumgxxmQMIOmJYsh2p8BF08t8thhDQ++EAOOq3w==", + "dev": true, + "requires": { + "is-relative-url": "^4.0.0", + "isemail": "^3.2.0", + "ms": "^2.1.3", + "needle": "^3.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "markdown-link-check": { + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/markdown-link-check/-/markdown-link-check-3.10.3.tgz", + "integrity": "sha512-uGdJiZOy1CVWlRe7CyBSJ0Gz80Xm4vt++xjX9sNFjB7qcAxLinaMmzFQ5xOwERaXC9mK770BhnqnsyJT1gTr9w==", + "dev": true, + "requires": { + "async": "^3.2.4", + "chalk": "^4.1.2", + "commander": "^6.2.0", + "link-check": "^5.2.0", + "lodash": "^4.17.21", + "markdown-link-extractor": "^3.1.0", + "needle": "^3.1.0", + "progress": "^2.0.3" + } + }, + "markdown-link-extractor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/markdown-link-extractor/-/markdown-link-extractor-3.1.0.tgz", + "integrity": "sha512-r0NEbP1dsM+IqB62Ru9TXLP/HDaTdBNIeylYXumuBi6Xv4ufjE1/g3TnslYL8VNqNcGAGbMptQFHrrdfoZ/Sug==", + "dev": true, + "requires": { + "html-link-extractor": "^1.0.5", + "marked": "^4.1.0" + } + }, + "marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "needle": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", + "dev": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "requires": { + "entities": "^4.4.0" + } + }, + "parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dev": true, + "requires": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/README.md temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/README.md --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,13 +1,22 @@ -# Language Independent Interface Types For OpenTelemetry +# OpenTelemetry Protocol (OTLP) Specification [![Build Check](https://github.com/open-telemetry/opentelemetry-proto/workflows/Build%20Check/badge.svg?branch=main)](https://github.com/open-telemetry/opentelemetry-proto/actions?query=workflow%3A%22Build+Check%22+branch%3Amain) +This repository contains the [OTLP protocol specification](docs/specification.md) +and the corresponding Language Independent Interface Types ([.proto files](opentelemetry/proto)). + +## Language Independent Interface Types + The proto files can be consumed as GIT submodules or copied and built directly in the consumer project. -The compiled files are published to central repositories (Maven, NPM...) from OpenTelemetry client libraries. +The compiled files are published to central repositories (Maven, ...) from OpenTelemetry client libraries. See [contribution guidelines](CONTRIBUTING.md) if you would like to make any changes. +## OTLP/JSON + +See additional requirements for [OTLP/JSON wire representation here](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/otlp.md#json-protobuf-encoding). + ## Generate gRPC Client Libraries To generate the raw gRPC client libraries, use `make gen-${LANGUAGE}`. Currently supported languages are: @@ -24,28 +33,57 @@ ## Maturity Level -Component | Maturity | --------------------------------------|----------| -**Binary Protobuf Encoding** | | -common/* | Stable | -metrics/\*
collector/metrics/* | Stable | -resource/* | Stable | -trace/trace.proto
collector/trace/* | Stable | -trace/trace_config.proto | Alpha | -logs/\*
collector/logs/* | Beta | -**JSON encoding** | | -All messages | Alpha | +1.0.0 and newer releases from this repository may contain unstable (alpha or beta) +components as indicated by the Maturity table below. + +| Component | Binary Protobuf Maturity | JSON Maturity | +| --------- |--------------- | ------------- | +| common/* | Stable | [Stable](docs/specification.md#json-protobuf-encoding) | +| resource/* | Stable | [Stable](docs/specification.md#json-protobuf-encoding) | +| metrics/\*
collector/metrics/* | Stable | [Stable](docs/specification.md#json-protobuf-encoding) | +| trace/\*
collector/trace/* | Stable | [Stable](docs/specification.md#json-protobuf-encoding) | +| logs/\*
collector/logs/* | Stable | [Stable](docs/specification.md#json-protobuf-encoding) | (See [maturity-matrix.yaml](https://github.com/open-telemetry/community/blob/47813530864b9fe5a5146f466a58bd2bb94edc72/maturity-matrix.yaml#L57) for definition of maturity levels). -Note that maturity guarantees apply only to wire-level compatibility for the binary -Protobuf serialization. Neither message, field, nor enum names of Protobuf messages -are visible on the wire and are not considered part of the guarantees. We are free -to make a change to the names. +## Stability Definition + +Components marked `Stable` provide the following guarantees: + +- Field types, numbers and names will not change. +- Service names and service package names will not change. +- Service method names will not change. [from 1.0.0] +- Service method parameter names will not change. [from 1.0.0] +- Service method parameter types and return types will not change. [from 1.0.0] +- Service method kind (unary vs streaming) will not change. +- Names of messages and enums will not change. [from 1.0.0] +- Numbers assigned to enum choices will not change. +- Names of enum choices will not change. [from 1.0.0] +- The location of messages and enums, i.e. whether they are declared at the top lexical + scope or nested inside another message will not change. [from 1.0.0] +- Package names and directory structure will not change. [from 1.0.0] +- `optional` and `repeated` declarators of existing fields will not change. [from 1.0.0] +- No existing symbol will be deleted. [from 1.0.0] + +Note: guarantees marked [from 1.0.0] will go into effect when this repository is tagged +with version number 1.0.0. + +The following additive changes are allowed: + +- Adding new fields to existing messages. +- Adding new messages or enums. +- Adding new choices to existing enums. +- Adding new choices to existing oneof fields. +- Adding new services. +- Adding new methods to existing services. + +All the additive changes above must be accompanied by an explanation about how +new and old senders and receivers that implement the version of the protocol +before and after the change interoperate. -In the future when OTLP/JSON is declared stable, field names will also become part of -the maturity guarantees, since field names are visible on the wire for JSON encoding. +No guarantees are provided whatsoever about the stability of the code that +is generated from the .proto files by any particular code generator. ## Experiments diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/RELEASING.md temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/RELEASING.md --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/RELEASING.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/opentelemetry-proto/RELEASING.md 2023-10-30 19:40:00.000000000 +0000 @@ -79,16 +79,11 @@ or the Github [compare tool](https://github.com/open-telemetry/opentelemetry-proto/compare/) to view a summary of all commits since last release as a reference. -In addition, you can refer to -[CHANGELOG.md](https://github.com/open-telemetry/opentelemetry-proto/blob/main/CHANGELOG.md) +In addition, you can refer to [CHANGELOG.md](CHANGELOG.md) for a list of major changes since last release. ## Update release versions in documentations and CHANGELOG files -After releasing is done, you need to update -[README.md](https://github.com/open-telemetry/opentelemetry-proto/blob/main/README.md) and -[CHANGELOG.md](https://github.com/open-telemetry/opentelemetry-proto/blob/main/CHANGELOG.md). +After releasing is done, you need to update [README.md](README.md) and [CHANGELOG.md](CHANGELOG.md). -Create a PR to mark the new release in -[CHANGELOG.md](https://github.com/open-telemetry/opentelemetry-proto/blob/main/CHANGELOG.md) -on main branch. +Create a PR to mark the new release in [CHANGELOG.md](CHANGELOG.md) on main branch. diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.collector.logs.v1.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.collector.logs.v1.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.collector.logs.v1.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.collector.logs.v1.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,361 @@ +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExportLogsServiceRequest { + /// An array of ResourceLogs. + /// For data coming from a single resource this array will typically contain one + /// element. Intermediary nodes (such as OpenTelemetry Collector) that receive + /// data from multiple origins typically batch the data before forwarding further and + /// in that case this array will contain multiple elements. + #[prost(message, repeated, tag = "1")] + pub resource_logs: ::prost::alloc::vec::Vec< + super::super::super::logs::v1::ResourceLogs, + >, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExportLogsServiceResponse { + /// The details of a partially successful export request. + /// + /// If the request is only partially accepted + /// (i.e. when the server accepts only parts of the data and rejects the rest) + /// the server MUST initialize the `partial_success` field and MUST + /// set the `rejected_` with the number of items it rejected. + /// + /// Servers MAY also make use of the `partial_success` field to convey + /// warnings/suggestions to senders even when the request was fully accepted. + /// In such cases, the `rejected_` MUST have a value of `0` and + /// the `error_message` MUST be non-empty. + /// + /// A `partial_success` message with an empty value (rejected_ = 0 and + /// `error_message` = "") is equivalent to it not being set/present. Senders + /// SHOULD interpret it the same way as in the full success case. + #[prost(message, optional, tag = "1")] + pub partial_success: ::core::option::Option, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExportLogsPartialSuccess { + /// The number of rejected log records. + /// + /// A `rejected_` field holding a `0` value indicates that the + /// request was fully accepted. + #[prost(int64, tag = "1")] + pub rejected_log_records: i64, + /// A developer-facing human-readable message in English. It should be used + /// either to explain why the server rejected parts of the data during a partial + /// success or to convey warnings/suggestions during a full success. The message + /// should offer guidance on how users can address such issues. + /// + /// error_message is an optional field. An error_message with an empty value + /// is equivalent to it not being set. + #[prost(string, tag = "2")] + pub error_message: ::prost::alloc::string::String, +} +/// Generated client implementations. +#[cfg(feature = "gen-tonic")] +pub mod logs_service_client { + #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] + use tonic::codegen::*; + use tonic::codegen::http::Uri; + /// Service that can be used to push logs between one Application instrumented with + /// OpenTelemetry and an collector, or between an collector and a central collector (in this + /// case logs are sent/received to/from multiple Applications). + #[derive(Debug, Clone)] + pub struct LogsServiceClient { + inner: tonic::client::Grpc, + } + impl LogsServiceClient { + /// Attempt to create a new client by connecting to a given endpoint. + pub async fn connect(dst: D) -> Result + where + D: TryInto, + D::Error: Into, + { + let conn = tonic::transport::Endpoint::new(dst)?.connect().await?; + Ok(Self::new(conn)) + } + } + impl LogsServiceClient + where + T: tonic::client::GrpcService, + T::Error: Into, + T::ResponseBody: Body + Send + 'static, + ::Error: Into + Send, + { + pub fn new(inner: T) -> Self { + let inner = tonic::client::Grpc::new(inner); + Self { inner } + } + pub fn with_origin(inner: T, origin: Uri) -> Self { + let inner = tonic::client::Grpc::with_origin(inner, origin); + Self { inner } + } + pub fn with_interceptor( + inner: T, + interceptor: F, + ) -> LogsServiceClient> + where + F: tonic::service::Interceptor, + T::ResponseBody: Default, + T: tonic::codegen::Service< + http::Request, + Response = http::Response< + >::ResponseBody, + >, + >, + , + >>::Error: Into + Send + Sync, + { + LogsServiceClient::new(InterceptedService::new(inner, interceptor)) + } + /// Compress requests with the given encoding. + /// + /// This requires the server to support it otherwise it might respond with an + /// error. + #[must_use] + pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self { + self.inner = self.inner.send_compressed(encoding); + self + } + /// Enable decompressing responses. + #[must_use] + pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self { + self.inner = self.inner.accept_compressed(encoding); + self + } + /// Limits the maximum size of a decoded message. + /// + /// Default: `4MB` + #[must_use] + pub fn max_decoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_decoding_message_size(limit); + self + } + /// Limits the maximum size of an encoded message. + /// + /// Default: `usize::MAX` + #[must_use] + pub fn max_encoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_encoding_message_size(limit); + self + } + /// For performance reasons, it is recommended to keep this RPC + /// alive for the entire life of the application. + pub async fn export( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { + self.inner + .ready() + .await + .map_err(|e| { + tonic::Status::new( + tonic::Code::Unknown, + format!("Service was not ready: {}", e.into()), + ) + })?; + let codec = tonic::codec::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/opentelemetry.proto.collector.logs.v1.LogsService/Export", + ); + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new( + "opentelemetry.proto.collector.logs.v1.LogsService", + "Export", + ), + ); + self.inner.unary(req, path, codec).await + } + } +} +/// Generated server implementations. +#[cfg(feature = "gen-tonic")] +pub mod logs_service_server { + #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] + use tonic::codegen::*; + /// Generated trait containing gRPC methods that should be implemented for use with LogsServiceServer. + #[async_trait] + pub trait LogsService: Send + Sync + 'static { + /// For performance reasons, it is recommended to keep this RPC + /// alive for the entire life of the application. + async fn export( + &self, + request: tonic::Request, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + >; + } + /// Service that can be used to push logs between one Application instrumented with + /// OpenTelemetry and an collector, or between an collector and a central collector (in this + /// case logs are sent/received to/from multiple Applications). + #[derive(Debug)] + pub struct LogsServiceServer { + inner: _Inner, + accept_compression_encodings: EnabledCompressionEncodings, + send_compression_encodings: EnabledCompressionEncodings, + max_decoding_message_size: Option, + max_encoding_message_size: Option, + } + struct _Inner(Arc); + impl LogsServiceServer { + pub fn new(inner: T) -> Self { + Self::from_arc(Arc::new(inner)) + } + pub fn from_arc(inner: Arc) -> Self { + let inner = _Inner(inner); + Self { + inner, + accept_compression_encodings: Default::default(), + send_compression_encodings: Default::default(), + max_decoding_message_size: None, + max_encoding_message_size: None, + } + } + pub fn with_interceptor( + inner: T, + interceptor: F, + ) -> InterceptedService + where + F: tonic::service::Interceptor, + { + InterceptedService::new(Self::new(inner), interceptor) + } + /// Enable decompressing requests with the given encoding. + #[must_use] + pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self { + self.accept_compression_encodings.enable(encoding); + self + } + /// Compress responses with the given encoding, if the client supports it. + #[must_use] + pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self { + self.send_compression_encodings.enable(encoding); + self + } + /// Limits the maximum size of a decoded message. + /// + /// Default: `4MB` + #[must_use] + pub fn max_decoding_message_size(mut self, limit: usize) -> Self { + self.max_decoding_message_size = Some(limit); + self + } + /// Limits the maximum size of an encoded message. + /// + /// Default: `usize::MAX` + #[must_use] + pub fn max_encoding_message_size(mut self, limit: usize) -> Self { + self.max_encoding_message_size = Some(limit); + self + } + } + impl tonic::codegen::Service> for LogsServiceServer + where + T: LogsService, + B: Body + Send + 'static, + B::Error: Into + Send + 'static, + { + type Response = http::Response; + type Error = std::convert::Infallible; + type Future = BoxFuture; + fn poll_ready( + &mut self, + _cx: &mut Context<'_>, + ) -> Poll> { + Poll::Ready(Ok(())) + } + fn call(&mut self, req: http::Request) -> Self::Future { + let inner = self.inner.clone(); + match req.uri().path() { + "/opentelemetry.proto.collector.logs.v1.LogsService/Export" => { + #[allow(non_camel_case_types)] + struct ExportSvc(pub Arc); + impl< + T: LogsService, + > tonic::server::UnaryService + for ExportSvc { + type Response = super::ExportLogsServiceResponse; + type Future = BoxFuture< + tonic::Response, + tonic::Status, + >; + fn call( + &mut self, + request: tonic::Request, + ) -> Self::Future { + let inner = Arc::clone(&self.0); + let fut = async move { (*inner).export(request).await }; + Box::pin(fut) + } + } + let accept_compression_encodings = self.accept_compression_encodings; + let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; + let inner = self.inner.clone(); + let fut = async move { + let inner = inner.0; + let method = ExportSvc(inner); + let codec = tonic::codec::ProstCodec::default(); + let mut grpc = tonic::server::Grpc::new(codec) + .apply_compression_config( + accept_compression_encodings, + send_compression_encodings, + ) + .apply_max_message_size_config( + max_decoding_message_size, + max_encoding_message_size, + ); + let res = grpc.unary(method, req).await; + Ok(res) + }; + Box::pin(fut) + } + _ => { + Box::pin(async move { + Ok( + http::Response::builder() + .status(200) + .header("grpc-status", "12") + .header("content-type", "application/grpc") + .body(empty_body()) + .unwrap(), + ) + }) + } + } + } + } + impl Clone for LogsServiceServer { + fn clone(&self) -> Self { + let inner = self.inner.clone(); + Self { + inner, + accept_compression_encodings: self.accept_compression_encodings, + send_compression_encodings: self.send_compression_encodings, + max_decoding_message_size: self.max_decoding_message_size, + max_encoding_message_size: self.max_encoding_message_size, + } + } + } + impl Clone for _Inner { + fn clone(&self) -> Self { + Self(Arc::clone(&self.0)) + } + } + impl std::fmt::Debug for _Inner { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{:?}", self.0) + } + } + impl tonic::server::NamedService for LogsServiceServer { + const NAME: &'static str = "opentelemetry.proto.collector.logs.v1.LogsService"; + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.collector.metrics.v1.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.collector.metrics.v1.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.collector.metrics.v1.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.collector.metrics.v1.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,361 @@ +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExportMetricsServiceRequest { + /// An array of ResourceMetrics. + /// For data coming from a single resource this array will typically contain one + /// element. Intermediary nodes (such as OpenTelemetry Collector) that receive + /// data from multiple origins typically batch the data before forwarding further and + /// in that case this array will contain multiple elements. + #[prost(message, repeated, tag = "1")] + pub resource_metrics: ::prost::alloc::vec::Vec< + super::super::super::metrics::v1::ResourceMetrics, + >, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExportMetricsServiceResponse { + /// The details of a partially successful export request. + /// + /// If the request is only partially accepted + /// (i.e. when the server accepts only parts of the data and rejects the rest) + /// the server MUST initialize the `partial_success` field and MUST + /// set the `rejected_` with the number of items it rejected. + /// + /// Servers MAY also make use of the `partial_success` field to convey + /// warnings/suggestions to senders even when the request was fully accepted. + /// In such cases, the `rejected_` MUST have a value of `0` and + /// the `error_message` MUST be non-empty. + /// + /// A `partial_success` message with an empty value (rejected_ = 0 and + /// `error_message` = "") is equivalent to it not being set/present. Senders + /// SHOULD interpret it the same way as in the full success case. + #[prost(message, optional, tag = "1")] + pub partial_success: ::core::option::Option, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExportMetricsPartialSuccess { + /// The number of rejected data points. + /// + /// A `rejected_` field holding a `0` value indicates that the + /// request was fully accepted. + #[prost(int64, tag = "1")] + pub rejected_data_points: i64, + /// A developer-facing human-readable message in English. It should be used + /// either to explain why the server rejected parts of the data during a partial + /// success or to convey warnings/suggestions during a full success. The message + /// should offer guidance on how users can address such issues. + /// + /// error_message is an optional field. An error_message with an empty value + /// is equivalent to it not being set. + #[prost(string, tag = "2")] + pub error_message: ::prost::alloc::string::String, +} +/// Generated client implementations. +#[cfg(feature = "gen-tonic")] +pub mod metrics_service_client { + #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] + use tonic::codegen::*; + use tonic::codegen::http::Uri; + /// Service that can be used to push metrics between one Application + /// instrumented with OpenTelemetry and a collector, or between a collector and a + /// central collector. + #[derive(Debug, Clone)] + pub struct MetricsServiceClient { + inner: tonic::client::Grpc, + } + impl MetricsServiceClient { + /// Attempt to create a new client by connecting to a given endpoint. + pub async fn connect(dst: D) -> Result + where + D: TryInto, + D::Error: Into, + { + let conn = tonic::transport::Endpoint::new(dst)?.connect().await?; + Ok(Self::new(conn)) + } + } + impl MetricsServiceClient + where + T: tonic::client::GrpcService, + T::Error: Into, + T::ResponseBody: Body + Send + 'static, + ::Error: Into + Send, + { + pub fn new(inner: T) -> Self { + let inner = tonic::client::Grpc::new(inner); + Self { inner } + } + pub fn with_origin(inner: T, origin: Uri) -> Self { + let inner = tonic::client::Grpc::with_origin(inner, origin); + Self { inner } + } + pub fn with_interceptor( + inner: T, + interceptor: F, + ) -> MetricsServiceClient> + where + F: tonic::service::Interceptor, + T::ResponseBody: Default, + T: tonic::codegen::Service< + http::Request, + Response = http::Response< + >::ResponseBody, + >, + >, + , + >>::Error: Into + Send + Sync, + { + MetricsServiceClient::new(InterceptedService::new(inner, interceptor)) + } + /// Compress requests with the given encoding. + /// + /// This requires the server to support it otherwise it might respond with an + /// error. + #[must_use] + pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self { + self.inner = self.inner.send_compressed(encoding); + self + } + /// Enable decompressing responses. + #[must_use] + pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self { + self.inner = self.inner.accept_compressed(encoding); + self + } + /// Limits the maximum size of a decoded message. + /// + /// Default: `4MB` + #[must_use] + pub fn max_decoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_decoding_message_size(limit); + self + } + /// Limits the maximum size of an encoded message. + /// + /// Default: `usize::MAX` + #[must_use] + pub fn max_encoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_encoding_message_size(limit); + self + } + /// For performance reasons, it is recommended to keep this RPC + /// alive for the entire life of the application. + pub async fn export( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { + self.inner + .ready() + .await + .map_err(|e| { + tonic::Status::new( + tonic::Code::Unknown, + format!("Service was not ready: {}", e.into()), + ) + })?; + let codec = tonic::codec::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/opentelemetry.proto.collector.metrics.v1.MetricsService/Export", + ); + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new( + "opentelemetry.proto.collector.metrics.v1.MetricsService", + "Export", + ), + ); + self.inner.unary(req, path, codec).await + } + } +} +/// Generated server implementations. +#[cfg(feature = "gen-tonic")] +pub mod metrics_service_server { + #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] + use tonic::codegen::*; + /// Generated trait containing gRPC methods that should be implemented for use with MetricsServiceServer. + #[async_trait] + pub trait MetricsService: Send + Sync + 'static { + /// For performance reasons, it is recommended to keep this RPC + /// alive for the entire life of the application. + async fn export( + &self, + request: tonic::Request, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + >; + } + /// Service that can be used to push metrics between one Application + /// instrumented with OpenTelemetry and a collector, or between a collector and a + /// central collector. + #[derive(Debug)] + pub struct MetricsServiceServer { + inner: _Inner, + accept_compression_encodings: EnabledCompressionEncodings, + send_compression_encodings: EnabledCompressionEncodings, + max_decoding_message_size: Option, + max_encoding_message_size: Option, + } + struct _Inner(Arc); + impl MetricsServiceServer { + pub fn new(inner: T) -> Self { + Self::from_arc(Arc::new(inner)) + } + pub fn from_arc(inner: Arc) -> Self { + let inner = _Inner(inner); + Self { + inner, + accept_compression_encodings: Default::default(), + send_compression_encodings: Default::default(), + max_decoding_message_size: None, + max_encoding_message_size: None, + } + } + pub fn with_interceptor( + inner: T, + interceptor: F, + ) -> InterceptedService + where + F: tonic::service::Interceptor, + { + InterceptedService::new(Self::new(inner), interceptor) + } + /// Enable decompressing requests with the given encoding. + #[must_use] + pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self { + self.accept_compression_encodings.enable(encoding); + self + } + /// Compress responses with the given encoding, if the client supports it. + #[must_use] + pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self { + self.send_compression_encodings.enable(encoding); + self + } + /// Limits the maximum size of a decoded message. + /// + /// Default: `4MB` + #[must_use] + pub fn max_decoding_message_size(mut self, limit: usize) -> Self { + self.max_decoding_message_size = Some(limit); + self + } + /// Limits the maximum size of an encoded message. + /// + /// Default: `usize::MAX` + #[must_use] + pub fn max_encoding_message_size(mut self, limit: usize) -> Self { + self.max_encoding_message_size = Some(limit); + self + } + } + impl tonic::codegen::Service> for MetricsServiceServer + where + T: MetricsService, + B: Body + Send + 'static, + B::Error: Into + Send + 'static, + { + type Response = http::Response; + type Error = std::convert::Infallible; + type Future = BoxFuture; + fn poll_ready( + &mut self, + _cx: &mut Context<'_>, + ) -> Poll> { + Poll::Ready(Ok(())) + } + fn call(&mut self, req: http::Request) -> Self::Future { + let inner = self.inner.clone(); + match req.uri().path() { + "/opentelemetry.proto.collector.metrics.v1.MetricsService/Export" => { + #[allow(non_camel_case_types)] + struct ExportSvc(pub Arc); + impl< + T: MetricsService, + > tonic::server::UnaryService + for ExportSvc { + type Response = super::ExportMetricsServiceResponse; + type Future = BoxFuture< + tonic::Response, + tonic::Status, + >; + fn call( + &mut self, + request: tonic::Request, + ) -> Self::Future { + let inner = Arc::clone(&self.0); + let fut = async move { (*inner).export(request).await }; + Box::pin(fut) + } + } + let accept_compression_encodings = self.accept_compression_encodings; + let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; + let inner = self.inner.clone(); + let fut = async move { + let inner = inner.0; + let method = ExportSvc(inner); + let codec = tonic::codec::ProstCodec::default(); + let mut grpc = tonic::server::Grpc::new(codec) + .apply_compression_config( + accept_compression_encodings, + send_compression_encodings, + ) + .apply_max_message_size_config( + max_decoding_message_size, + max_encoding_message_size, + ); + let res = grpc.unary(method, req).await; + Ok(res) + }; + Box::pin(fut) + } + _ => { + Box::pin(async move { + Ok( + http::Response::builder() + .status(200) + .header("grpc-status", "12") + .header("content-type", "application/grpc") + .body(empty_body()) + .unwrap(), + ) + }) + } + } + } + } + impl Clone for MetricsServiceServer { + fn clone(&self) -> Self { + let inner = self.inner.clone(); + Self { + inner, + accept_compression_encodings: self.accept_compression_encodings, + send_compression_encodings: self.send_compression_encodings, + max_decoding_message_size: self.max_decoding_message_size, + max_encoding_message_size: self.max_encoding_message_size, + } + } + } + impl Clone for _Inner { + fn clone(&self) -> Self { + Self(Arc::clone(&self.0)) + } + } + impl std::fmt::Debug for _Inner { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{:?}", self.0) + } + } + impl tonic::server::NamedService for MetricsServiceServer { + const NAME: &'static str = "opentelemetry.proto.collector.metrics.v1.MetricsService"; + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.collector.trace.v1.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.collector.trace.v1.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.collector.trace.v1.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.collector.trace.v1.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,361 @@ +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExportTraceServiceRequest { + /// An array of ResourceSpans. + /// For data coming from a single resource this array will typically contain one + /// element. Intermediary nodes (such as OpenTelemetry Collector) that receive + /// data from multiple origins typically batch the data before forwarding further and + /// in that case this array will contain multiple elements. + #[prost(message, repeated, tag = "1")] + pub resource_spans: ::prost::alloc::vec::Vec< + super::super::super::trace::v1::ResourceSpans, + >, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExportTraceServiceResponse { + /// The details of a partially successful export request. + /// + /// If the request is only partially accepted + /// (i.e. when the server accepts only parts of the data and rejects the rest) + /// the server MUST initialize the `partial_success` field and MUST + /// set the `rejected_` with the number of items it rejected. + /// + /// Servers MAY also make use of the `partial_success` field to convey + /// warnings/suggestions to senders even when the request was fully accepted. + /// In such cases, the `rejected_` MUST have a value of `0` and + /// the `error_message` MUST be non-empty. + /// + /// A `partial_success` message with an empty value (rejected_ = 0 and + /// `error_message` = "") is equivalent to it not being set/present. Senders + /// SHOULD interpret it the same way as in the full success case. + #[prost(message, optional, tag = "1")] + pub partial_success: ::core::option::Option, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExportTracePartialSuccess { + /// The number of rejected spans. + /// + /// A `rejected_` field holding a `0` value indicates that the + /// request was fully accepted. + #[prost(int64, tag = "1")] + pub rejected_spans: i64, + /// A developer-facing human-readable message in English. It should be used + /// either to explain why the server rejected parts of the data during a partial + /// success or to convey warnings/suggestions during a full success. The message + /// should offer guidance on how users can address such issues. + /// + /// error_message is an optional field. An error_message with an empty value + /// is equivalent to it not being set. + #[prost(string, tag = "2")] + pub error_message: ::prost::alloc::string::String, +} +/// Generated client implementations. +#[cfg(feature = "gen-tonic")] +pub mod trace_service_client { + #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] + use tonic::codegen::*; + use tonic::codegen::http::Uri; + /// Service that can be used to push spans between one Application instrumented with + /// OpenTelemetry and a collector, or between a collector and a central collector (in this + /// case spans are sent/received to/from multiple Applications). + #[derive(Debug, Clone)] + pub struct TraceServiceClient { + inner: tonic::client::Grpc, + } + impl TraceServiceClient { + /// Attempt to create a new client by connecting to a given endpoint. + pub async fn connect(dst: D) -> Result + where + D: TryInto, + D::Error: Into, + { + let conn = tonic::transport::Endpoint::new(dst)?.connect().await?; + Ok(Self::new(conn)) + } + } + impl TraceServiceClient + where + T: tonic::client::GrpcService, + T::Error: Into, + T::ResponseBody: Body + Send + 'static, + ::Error: Into + Send, + { + pub fn new(inner: T) -> Self { + let inner = tonic::client::Grpc::new(inner); + Self { inner } + } + pub fn with_origin(inner: T, origin: Uri) -> Self { + let inner = tonic::client::Grpc::with_origin(inner, origin); + Self { inner } + } + pub fn with_interceptor( + inner: T, + interceptor: F, + ) -> TraceServiceClient> + where + F: tonic::service::Interceptor, + T::ResponseBody: Default, + T: tonic::codegen::Service< + http::Request, + Response = http::Response< + >::ResponseBody, + >, + >, + , + >>::Error: Into + Send + Sync, + { + TraceServiceClient::new(InterceptedService::new(inner, interceptor)) + } + /// Compress requests with the given encoding. + /// + /// This requires the server to support it otherwise it might respond with an + /// error. + #[must_use] + pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self { + self.inner = self.inner.send_compressed(encoding); + self + } + /// Enable decompressing responses. + #[must_use] + pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self { + self.inner = self.inner.accept_compressed(encoding); + self + } + /// Limits the maximum size of a decoded message. + /// + /// Default: `4MB` + #[must_use] + pub fn max_decoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_decoding_message_size(limit); + self + } + /// Limits the maximum size of an encoded message. + /// + /// Default: `usize::MAX` + #[must_use] + pub fn max_encoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_encoding_message_size(limit); + self + } + /// For performance reasons, it is recommended to keep this RPC + /// alive for the entire life of the application. + pub async fn export( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { + self.inner + .ready() + .await + .map_err(|e| { + tonic::Status::new( + tonic::Code::Unknown, + format!("Service was not ready: {}", e.into()), + ) + })?; + let codec = tonic::codec::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/opentelemetry.proto.collector.trace.v1.TraceService/Export", + ); + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new( + "opentelemetry.proto.collector.trace.v1.TraceService", + "Export", + ), + ); + self.inner.unary(req, path, codec).await + } + } +} +/// Generated server implementations. +#[cfg(feature = "gen-tonic")] +pub mod trace_service_server { + #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] + use tonic::codegen::*; + /// Generated trait containing gRPC methods that should be implemented for use with TraceServiceServer. + #[async_trait] + pub trait TraceService: Send + Sync + 'static { + /// For performance reasons, it is recommended to keep this RPC + /// alive for the entire life of the application. + async fn export( + &self, + request: tonic::Request, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + >; + } + /// Service that can be used to push spans between one Application instrumented with + /// OpenTelemetry and a collector, or between a collector and a central collector (in this + /// case spans are sent/received to/from multiple Applications). + #[derive(Debug)] + pub struct TraceServiceServer { + inner: _Inner, + accept_compression_encodings: EnabledCompressionEncodings, + send_compression_encodings: EnabledCompressionEncodings, + max_decoding_message_size: Option, + max_encoding_message_size: Option, + } + struct _Inner(Arc); + impl TraceServiceServer { + pub fn new(inner: T) -> Self { + Self::from_arc(Arc::new(inner)) + } + pub fn from_arc(inner: Arc) -> Self { + let inner = _Inner(inner); + Self { + inner, + accept_compression_encodings: Default::default(), + send_compression_encodings: Default::default(), + max_decoding_message_size: None, + max_encoding_message_size: None, + } + } + pub fn with_interceptor( + inner: T, + interceptor: F, + ) -> InterceptedService + where + F: tonic::service::Interceptor, + { + InterceptedService::new(Self::new(inner), interceptor) + } + /// Enable decompressing requests with the given encoding. + #[must_use] + pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self { + self.accept_compression_encodings.enable(encoding); + self + } + /// Compress responses with the given encoding, if the client supports it. + #[must_use] + pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self { + self.send_compression_encodings.enable(encoding); + self + } + /// Limits the maximum size of a decoded message. + /// + /// Default: `4MB` + #[must_use] + pub fn max_decoding_message_size(mut self, limit: usize) -> Self { + self.max_decoding_message_size = Some(limit); + self + } + /// Limits the maximum size of an encoded message. + /// + /// Default: `usize::MAX` + #[must_use] + pub fn max_encoding_message_size(mut self, limit: usize) -> Self { + self.max_encoding_message_size = Some(limit); + self + } + } + impl tonic::codegen::Service> for TraceServiceServer + where + T: TraceService, + B: Body + Send + 'static, + B::Error: Into + Send + 'static, + { + type Response = http::Response; + type Error = std::convert::Infallible; + type Future = BoxFuture; + fn poll_ready( + &mut self, + _cx: &mut Context<'_>, + ) -> Poll> { + Poll::Ready(Ok(())) + } + fn call(&mut self, req: http::Request) -> Self::Future { + let inner = self.inner.clone(); + match req.uri().path() { + "/opentelemetry.proto.collector.trace.v1.TraceService/Export" => { + #[allow(non_camel_case_types)] + struct ExportSvc(pub Arc); + impl< + T: TraceService, + > tonic::server::UnaryService + for ExportSvc { + type Response = super::ExportTraceServiceResponse; + type Future = BoxFuture< + tonic::Response, + tonic::Status, + >; + fn call( + &mut self, + request: tonic::Request, + ) -> Self::Future { + let inner = Arc::clone(&self.0); + let fut = async move { (*inner).export(request).await }; + Box::pin(fut) + } + } + let accept_compression_encodings = self.accept_compression_encodings; + let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; + let inner = self.inner.clone(); + let fut = async move { + let inner = inner.0; + let method = ExportSvc(inner); + let codec = tonic::codec::ProstCodec::default(); + let mut grpc = tonic::server::Grpc::new(codec) + .apply_compression_config( + accept_compression_encodings, + send_compression_encodings, + ) + .apply_max_message_size_config( + max_decoding_message_size, + max_encoding_message_size, + ); + let res = grpc.unary(method, req).await; + Ok(res) + }; + Box::pin(fut) + } + _ => { + Box::pin(async move { + Ok( + http::Response::builder() + .status(200) + .header("grpc-status", "12") + .header("content-type", "application/grpc") + .body(empty_body()) + .unwrap(), + ) + }) + } + } + } + } + impl Clone for TraceServiceServer { + fn clone(&self) -> Self { + let inner = self.inner.clone(); + Self { + inner, + accept_compression_encodings: self.accept_compression_encodings, + send_compression_encodings: self.send_compression_encodings, + max_decoding_message_size: self.max_decoding_message_size, + max_encoding_message_size: self.max_encoding_message_size, + } + } + } + impl Clone for _Inner { + fn clone(&self) -> Self { + Self(Arc::clone(&self.0)) + } + } + impl std::fmt::Debug for _Inner { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{:?}", self.0) + } + } + impl tonic::server::NamedService for TraceServiceServer { + const NAME: &'static str = "opentelemetry.proto.collector.trace.v1.TraceService"; + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.common.v1.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.common.v1.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.common.v1.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.common.v1.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,86 @@ +/// AnyValue is used to represent any type of attribute value. AnyValue may contain a +/// primitive value such as a string or integer or it may contain an arbitrary nested +/// object containing arrays, key-value lists and primitives. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AnyValue { + /// The value is one of the listed fields. It is valid for all values to be unspecified + /// in which case this AnyValue is considered to be "empty". + #[prost(oneof = "any_value::Value", tags = "1, 2, 3, 4, 5, 6, 7")] + pub value: ::core::option::Option, +} +/// Nested message and enum types in `AnyValue`. +pub mod any_value { + /// The value is one of the listed fields. It is valid for all values to be unspecified + /// in which case this AnyValue is considered to be "empty". + #[allow(clippy::derive_partial_eq_without_eq)] + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Value { + #[prost(string, tag = "1")] + StringValue(::prost::alloc::string::String), + #[prost(bool, tag = "2")] + BoolValue(bool), + #[prost(int64, tag = "3")] + IntValue(i64), + #[prost(double, tag = "4")] + DoubleValue(f64), + #[prost(message, tag = "5")] + ArrayValue(super::ArrayValue), + #[prost(message, tag = "6")] + KvlistValue(super::KeyValueList), + #[prost(bytes, tag = "7")] + BytesValue(::prost::alloc::vec::Vec), + } +} +/// ArrayValue is a list of AnyValue messages. We need ArrayValue as a message +/// since oneof in AnyValue does not allow repeated fields. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ArrayValue { + /// Array of values. The array may be empty (contain 0 elements). + #[prost(message, repeated, tag = "1")] + pub values: ::prost::alloc::vec::Vec, +} +/// KeyValueList is a list of KeyValue messages. We need KeyValueList as a message +/// since `oneof` in AnyValue does not allow repeated fields. Everywhere else where we need +/// a list of KeyValue messages (e.g. in Span) we use `repeated KeyValue` directly to +/// avoid unnecessary extra wrapping (which slows down the protocol). The 2 approaches +/// are semantically equivalent. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct KeyValueList { + /// A collection of key/value pairs of key-value pairs. The list may be empty (may + /// contain 0 elements). + /// The keys MUST be unique (it is not allowed to have more than one + /// value with the same key). + #[prost(message, repeated, tag = "1")] + pub values: ::prost::alloc::vec::Vec, +} +/// KeyValue is a key-value pair that is used to store Span attributes, Link +/// attributes, etc. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct KeyValue { + #[prost(string, tag = "1")] + pub key: ::prost::alloc::string::String, + #[prost(message, optional, tag = "2")] + pub value: ::core::option::Option, +} +/// InstrumentationScope is a message representing the instrumentation scope information +/// such as the fully qualified name and version. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct InstrumentationScope { + /// An empty instrumentation scope name means the name is unknown. + #[prost(string, tag = "1")] + pub name: ::prost::alloc::string::String, + #[prost(string, tag = "2")] + pub version: ::prost::alloc::string::String, + /// Additional attributes that describe the scope. \[Optional\]. + /// Attribute keys MUST be unique (it is not allowed to have more than one + /// attribute with the same key). + #[prost(message, repeated, tag = "3")] + pub attributes: ::prost::alloc::vec::Vec, + #[prost(uint32, tag = "4")] + pub dropped_attributes_count: u32, +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.logs.v1.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.logs.v1.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.logs.v1.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.logs.v1.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,267 @@ +/// LogsData represents the logs data that can be stored in a persistent storage, +/// OR can be embedded by other protocols that transfer OTLP logs data but do not +/// implement the OTLP protocol. +/// +/// The main difference between this message and collector protocol is that +/// in this message there will not be any "control" or "metadata" specific to +/// OTLP protocol. +/// +/// When new fields are added into this message, the OTLP request MUST be updated +/// as well. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct LogsData { + /// An array of ResourceLogs. + /// For data coming from a single resource this array will typically contain + /// one element. Intermediary nodes that receive data from multiple origins + /// typically batch the data before forwarding further and in that case this + /// array will contain multiple elements. + #[prost(message, repeated, tag = "1")] + pub resource_logs: ::prost::alloc::vec::Vec, +} +/// A collection of ScopeLogs from a Resource. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ResourceLogs { + /// The resource for the logs in this message. + /// If this field is not set then resource info is unknown. + #[prost(message, optional, tag = "1")] + pub resource: ::core::option::Option, + /// A list of ScopeLogs that originate from a resource. + #[prost(message, repeated, tag = "2")] + pub scope_logs: ::prost::alloc::vec::Vec, + /// This schema_url applies to the data in the "resource" field. It does not apply + /// to the data in the "scope_logs" field which have their own schema_url field. + #[prost(string, tag = "3")] + pub schema_url: ::prost::alloc::string::String, +} +/// A collection of Logs produced by a Scope. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ScopeLogs { + /// The instrumentation scope information for the logs in this message. + /// Semantically when InstrumentationScope isn't set, it is equivalent with + /// an empty instrumentation scope name (unknown). + #[prost(message, optional, tag = "1")] + pub scope: ::core::option::Option, + /// A list of log records. + #[prost(message, repeated, tag = "2")] + pub log_records: ::prost::alloc::vec::Vec, + /// This schema_url applies to all logs in the "logs" field. + #[prost(string, tag = "3")] + pub schema_url: ::prost::alloc::string::String, +} +/// A log record according to OpenTelemetry Log Data Model: +/// +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct LogRecord { + /// time_unix_nano is the time when the event occurred. + /// Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970. + /// Value of 0 indicates unknown or missing timestamp. + #[prost(fixed64, tag = "1")] + pub time_unix_nano: u64, + /// Time when the event was observed by the collection system. + /// For events that originate in OpenTelemetry (e.g. using OpenTelemetry Logging SDK) + /// this timestamp is typically set at the generation time and is equal to Timestamp. + /// For events originating externally and collected by OpenTelemetry (e.g. using + /// Collector) this is the time when OpenTelemetry's code observed the event measured + /// by the clock of the OpenTelemetry code. This field MUST be set once the event is + /// observed by OpenTelemetry. + /// + /// For converting OpenTelemetry log data to formats that support only one timestamp or + /// when receiving OpenTelemetry log data by recipients that support only one timestamp + /// internally the following logic is recommended: + /// - Use time_unix_nano if it is present, otherwise use observed_time_unix_nano. + /// + /// Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970. + /// Value of 0 indicates unknown or missing timestamp. + #[prost(fixed64, tag = "11")] + pub observed_time_unix_nano: u64, + /// Numerical value of the severity, normalized to values described in Log Data Model. + /// \[Optional\]. + #[prost(enumeration = "SeverityNumber", tag = "2")] + pub severity_number: i32, + /// The severity text (also known as log level). The original string representation as + /// it is known at the source. \[Optional\]. + #[prost(string, tag = "3")] + pub severity_text: ::prost::alloc::string::String, + /// A value containing the body of the log record. Can be for example a human-readable + /// string message (including multi-line) describing the event in a free form or it can + /// be a structured data composed of arrays and maps of other values. \[Optional\]. + #[prost(message, optional, tag = "5")] + pub body: ::core::option::Option, + /// Additional attributes that describe the specific event occurrence. \[Optional\]. + /// Attribute keys MUST be unique (it is not allowed to have more than one + /// attribute with the same key). + #[prost(message, repeated, tag = "6")] + pub attributes: ::prost::alloc::vec::Vec, + #[prost(uint32, tag = "7")] + pub dropped_attributes_count: u32, + /// Flags, a bit field. 8 least significant bits are the trace flags as + /// defined in W3C Trace Context specification. 24 most significant bits are reserved + /// and must be set to 0. Readers must not assume that 24 most significant bits + /// will be zero and must correctly mask the bits when reading 8-bit trace flag (use + /// flags & LOG_RECORD_FLAGS_TRACE_FLAGS_MASK). \[Optional\]. + #[prost(fixed32, tag = "8")] + pub flags: u32, + /// A unique identifier for a trace. All logs from the same trace share + /// the same `trace_id`. The ID is a 16-byte array. An ID with all zeroes OR + /// of length other than 16 bytes is considered invalid (empty string in OTLP/JSON + /// is zero-length and thus is also invalid). + /// + /// This field is optional. + /// + /// The receivers SHOULD assume that the log record is not associated with a + /// trace if any of the following is true: + /// - the field is not present, + /// - the field contains an invalid value. + #[prost(bytes = "vec", tag = "9")] + pub trace_id: ::prost::alloc::vec::Vec, + /// A unique identifier for a span within a trace, assigned when the span + /// is created. The ID is an 8-byte array. An ID with all zeroes OR of length + /// other than 8 bytes is considered invalid (empty string in OTLP/JSON + /// is zero-length and thus is also invalid). + /// + /// This field is optional. If the sender specifies a valid span_id then it SHOULD also + /// specify a valid trace_id. + /// + /// The receivers SHOULD assume that the log record is not associated with a + /// span if any of the following is true: + /// - the field is not present, + /// - the field contains an invalid value. + #[prost(bytes = "vec", tag = "10")] + pub span_id: ::prost::alloc::vec::Vec, +} +/// Possible values for LogRecord.SeverityNumber. +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum SeverityNumber { + /// UNSPECIFIED is the default SeverityNumber, it MUST NOT be used. + Unspecified = 0, + Trace = 1, + Trace2 = 2, + Trace3 = 3, + Trace4 = 4, + Debug = 5, + Debug2 = 6, + Debug3 = 7, + Debug4 = 8, + Info = 9, + Info2 = 10, + Info3 = 11, + Info4 = 12, + Warn = 13, + Warn2 = 14, + Warn3 = 15, + Warn4 = 16, + Error = 17, + Error2 = 18, + Error3 = 19, + Error4 = 20, + Fatal = 21, + Fatal2 = 22, + Fatal3 = 23, + Fatal4 = 24, +} +impl SeverityNumber { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + SeverityNumber::Unspecified => "SEVERITY_NUMBER_UNSPECIFIED", + SeverityNumber::Trace => "SEVERITY_NUMBER_TRACE", + SeverityNumber::Trace2 => "SEVERITY_NUMBER_TRACE2", + SeverityNumber::Trace3 => "SEVERITY_NUMBER_TRACE3", + SeverityNumber::Trace4 => "SEVERITY_NUMBER_TRACE4", + SeverityNumber::Debug => "SEVERITY_NUMBER_DEBUG", + SeverityNumber::Debug2 => "SEVERITY_NUMBER_DEBUG2", + SeverityNumber::Debug3 => "SEVERITY_NUMBER_DEBUG3", + SeverityNumber::Debug4 => "SEVERITY_NUMBER_DEBUG4", + SeverityNumber::Info => "SEVERITY_NUMBER_INFO", + SeverityNumber::Info2 => "SEVERITY_NUMBER_INFO2", + SeverityNumber::Info3 => "SEVERITY_NUMBER_INFO3", + SeverityNumber::Info4 => "SEVERITY_NUMBER_INFO4", + SeverityNumber::Warn => "SEVERITY_NUMBER_WARN", + SeverityNumber::Warn2 => "SEVERITY_NUMBER_WARN2", + SeverityNumber::Warn3 => "SEVERITY_NUMBER_WARN3", + SeverityNumber::Warn4 => "SEVERITY_NUMBER_WARN4", + SeverityNumber::Error => "SEVERITY_NUMBER_ERROR", + SeverityNumber::Error2 => "SEVERITY_NUMBER_ERROR2", + SeverityNumber::Error3 => "SEVERITY_NUMBER_ERROR3", + SeverityNumber::Error4 => "SEVERITY_NUMBER_ERROR4", + SeverityNumber::Fatal => "SEVERITY_NUMBER_FATAL", + SeverityNumber::Fatal2 => "SEVERITY_NUMBER_FATAL2", + SeverityNumber::Fatal3 => "SEVERITY_NUMBER_FATAL3", + SeverityNumber::Fatal4 => "SEVERITY_NUMBER_FATAL4", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "SEVERITY_NUMBER_UNSPECIFIED" => Some(Self::Unspecified), + "SEVERITY_NUMBER_TRACE" => Some(Self::Trace), + "SEVERITY_NUMBER_TRACE2" => Some(Self::Trace2), + "SEVERITY_NUMBER_TRACE3" => Some(Self::Trace3), + "SEVERITY_NUMBER_TRACE4" => Some(Self::Trace4), + "SEVERITY_NUMBER_DEBUG" => Some(Self::Debug), + "SEVERITY_NUMBER_DEBUG2" => Some(Self::Debug2), + "SEVERITY_NUMBER_DEBUG3" => Some(Self::Debug3), + "SEVERITY_NUMBER_DEBUG4" => Some(Self::Debug4), + "SEVERITY_NUMBER_INFO" => Some(Self::Info), + "SEVERITY_NUMBER_INFO2" => Some(Self::Info2), + "SEVERITY_NUMBER_INFO3" => Some(Self::Info3), + "SEVERITY_NUMBER_INFO4" => Some(Self::Info4), + "SEVERITY_NUMBER_WARN" => Some(Self::Warn), + "SEVERITY_NUMBER_WARN2" => Some(Self::Warn2), + "SEVERITY_NUMBER_WARN3" => Some(Self::Warn3), + "SEVERITY_NUMBER_WARN4" => Some(Self::Warn4), + "SEVERITY_NUMBER_ERROR" => Some(Self::Error), + "SEVERITY_NUMBER_ERROR2" => Some(Self::Error2), + "SEVERITY_NUMBER_ERROR3" => Some(Self::Error3), + "SEVERITY_NUMBER_ERROR4" => Some(Self::Error4), + "SEVERITY_NUMBER_FATAL" => Some(Self::Fatal), + "SEVERITY_NUMBER_FATAL2" => Some(Self::Fatal2), + "SEVERITY_NUMBER_FATAL3" => Some(Self::Fatal3), + "SEVERITY_NUMBER_FATAL4" => Some(Self::Fatal4), + _ => None, + } + } +} +/// LogRecordFlags is defined as a protobuf 'uint32' type and is to be used as +/// bit-fields. Each non-zero value defined in this enum is a bit-mask. +/// To extract the bit-field, for example, use an expression like: +/// +/// (logRecord.flags & LOG_RECORD_FLAGS_TRACE_FLAGS_MASK) +/// +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum LogRecordFlags { + /// The zero value for the enum. Should not be used for comparisons. + /// Instead use bitwise "and" with the appropriate mask as shown above. + DoNotUse = 0, + /// Bits 0-7 are used for trace flags. + TraceFlagsMask = 255, +} +impl LogRecordFlags { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + LogRecordFlags::DoNotUse => "LOG_RECORD_FLAGS_DO_NOT_USE", + LogRecordFlags::TraceFlagsMask => "LOG_RECORD_FLAGS_TRACE_FLAGS_MASK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LOG_RECORD_FLAGS_DO_NOT_USE" => Some(Self::DoNotUse), + "LOG_RECORD_FLAGS_TRACE_FLAGS_MASK" => Some(Self::TraceFlagsMask), + _ => None, + } + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.metrics.v1.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.metrics.v1.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.metrics.v1.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.metrics.v1.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,754 @@ +/// MetricsData represents the metrics data that can be stored in a persistent +/// storage, OR can be embedded by other protocols that transfer OTLP metrics +/// data but do not implement the OTLP protocol. +/// +/// The main difference between this message and collector protocol is that +/// in this message there will not be any "control" or "metadata" specific to +/// OTLP protocol. +/// +/// When new fields are added into this message, the OTLP request MUST be updated +/// as well. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct MetricsData { + /// An array of ResourceMetrics. + /// For data coming from a single resource this array will typically contain + /// one element. Intermediary nodes that receive data from multiple origins + /// typically batch the data before forwarding further and in that case this + /// array will contain multiple elements. + #[prost(message, repeated, tag = "1")] + pub resource_metrics: ::prost::alloc::vec::Vec, +} +/// A collection of ScopeMetrics from a Resource. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ResourceMetrics { + /// The resource for the metrics in this message. + /// If this field is not set then no resource info is known. + #[prost(message, optional, tag = "1")] + pub resource: ::core::option::Option, + /// A list of metrics that originate from a resource. + #[prost(message, repeated, tag = "2")] + pub scope_metrics: ::prost::alloc::vec::Vec, + /// This schema_url applies to the data in the "resource" field. It does not apply + /// to the data in the "scope_metrics" field which have their own schema_url field. + #[prost(string, tag = "3")] + pub schema_url: ::prost::alloc::string::String, +} +/// A collection of Metrics produced by an Scope. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ScopeMetrics { + /// The instrumentation scope information for the metrics in this message. + /// Semantically when InstrumentationScope isn't set, it is equivalent with + /// an empty instrumentation scope name (unknown). + #[prost(message, optional, tag = "1")] + pub scope: ::core::option::Option, + /// A list of metrics that originate from an instrumentation library. + #[prost(message, repeated, tag = "2")] + pub metrics: ::prost::alloc::vec::Vec, + /// This schema_url applies to all metrics in the "metrics" field. + #[prost(string, tag = "3")] + pub schema_url: ::prost::alloc::string::String, +} +/// Defines a Metric which has one or more timeseries. The following is a +/// brief summary of the Metric data model. For more details, see: +/// +/// +/// +/// +/// The data model and relation between entities is shown in the +/// diagram below. Here, "DataPoint" is the term used to refer to any +/// one of the specific data point value types, and "points" is the term used +/// to refer to any one of the lists of points contained in the Metric. +/// +/// - Metric is composed of a metadata and data. +/// - Metadata part contains a name, description, unit. +/// - Data is one of the possible types (Sum, Gauge, Histogram, Summary). +/// - DataPoint contains timestamps, attributes, and one of the possible value type +/// fields. +/// +/// Metric +/// +------------+ +/// |name | +/// |description | +/// |unit | +------------------------------------+ +/// |data |---> |Gauge, Sum, Histogram, Summary, ... | +/// +------------+ +------------------------------------+ +/// +/// Data [One of Gauge, Sum, Histogram, Summary, ...] +/// +-----------+ +/// |... | // Metadata about the Data. +/// |points |--+ +/// +-----------+ | +/// | +---------------------------+ +/// | |DataPoint 1 | +/// v |+------+------+ +------+ | +/// +-----+ ||label |label |...|label | | +/// | 1 |-->||value1|value2|...|valueN| | +/// +-----+ |+------+------+ +------+ | +/// | . | |+-----+ | +/// | . | ||value| | +/// | . | |+-----+ | +/// | . | +---------------------------+ +/// | . | . +/// | . | . +/// | . | . +/// | . | +---------------------------+ +/// | . | |DataPoint M | +/// +-----+ |+------+------+ +------+ | +/// | M |-->||label |label |...|label | | +/// +-----+ ||value1|value2|...|valueN| | +/// |+------+------+ +------+ | +/// |+-----+ | +/// ||value| | +/// |+-----+ | +/// +---------------------------+ +/// +/// Each distinct type of DataPoint represents the output of a specific +/// aggregation function, the result of applying the DataPoint's +/// associated function of to one or more measurements. +/// +/// All DataPoint types have three common fields: +/// - Attributes includes key-value pairs associated with the data point +/// - TimeUnixNano is required, set to the end time of the aggregation +/// - StartTimeUnixNano is optional, but strongly encouraged for DataPoints +/// having an AggregationTemporality field, as discussed below. +/// +/// Both TimeUnixNano and StartTimeUnixNano values are expressed as +/// UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970. +/// +/// # TimeUnixNano +/// +/// This field is required, having consistent interpretation across +/// DataPoint types. TimeUnixNano is the moment corresponding to when +/// the data point's aggregate value was captured. +/// +/// Data points with the 0 value for TimeUnixNano SHOULD be rejected +/// by consumers. +/// +/// # StartTimeUnixNano +/// +/// StartTimeUnixNano in general allows detecting when a sequence of +/// observations is unbroken. This field indicates to consumers the +/// start time for points with cumulative and delta +/// AggregationTemporality, and it should be included whenever possible +/// to support correct rate calculation. Although it may be omitted +/// when the start time is truly unknown, setting StartTimeUnixNano is +/// strongly encouraged. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Metric { + /// name of the metric, including its DNS name prefix. It must be unique. + #[prost(string, tag = "1")] + pub name: ::prost::alloc::string::String, + /// description of the metric, which can be used in documentation. + #[prost(string, tag = "2")] + pub description: ::prost::alloc::string::String, + /// unit in which the metric value is reported. Follows the format + /// described by + #[prost(string, tag = "3")] + pub unit: ::prost::alloc::string::String, + /// Data determines the aggregation type (if any) of the metric, what is the + /// reported value type for the data points, as well as the relatationship to + /// the time interval over which they are reported. + #[prost(oneof = "metric::Data", tags = "5, 7, 9, 10, 11")] + pub data: ::core::option::Option, +} +/// Nested message and enum types in `Metric`. +pub mod metric { + /// Data determines the aggregation type (if any) of the metric, what is the + /// reported value type for the data points, as well as the relatationship to + /// the time interval over which they are reported. + #[allow(clippy::derive_partial_eq_without_eq)] + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Data { + #[prost(message, tag = "5")] + Gauge(super::Gauge), + #[prost(message, tag = "7")] + Sum(super::Sum), + #[prost(message, tag = "9")] + Histogram(super::Histogram), + #[prost(message, tag = "10")] + ExponentialHistogram(super::ExponentialHistogram), + #[prost(message, tag = "11")] + Summary(super::Summary), + } +} +/// Gauge represents the type of a scalar metric that always exports the +/// "current value" for every data point. It should be used for an "unknown" +/// aggregation. +/// +/// A Gauge does not support different aggregation temporalities. Given the +/// aggregation is unknown, points cannot be combined using the same +/// aggregation, regardless of aggregation temporalities. Therefore, +/// AggregationTemporality is not included. Consequently, this also means +/// "StartTimeUnixNano" is ignored for all data points. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Gauge { + #[prost(message, repeated, tag = "1")] + pub data_points: ::prost::alloc::vec::Vec, +} +/// Sum represents the type of a scalar metric that is calculated as a sum of all +/// reported measurements over a time interval. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Sum { + #[prost(message, repeated, tag = "1")] + pub data_points: ::prost::alloc::vec::Vec, + /// aggregation_temporality describes if the aggregator reports delta changes + /// since last report time, or cumulative changes since a fixed start time. + #[prost(enumeration = "AggregationTemporality", tag = "2")] + pub aggregation_temporality: i32, + /// If "true" means that the sum is monotonic. + #[prost(bool, tag = "3")] + pub is_monotonic: bool, +} +/// Histogram represents the type of a metric that is calculated by aggregating +/// as a Histogram of all reported measurements over a time interval. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Histogram { + #[prost(message, repeated, tag = "1")] + pub data_points: ::prost::alloc::vec::Vec, + /// aggregation_temporality describes if the aggregator reports delta changes + /// since last report time, or cumulative changes since a fixed start time. + #[prost(enumeration = "AggregationTemporality", tag = "2")] + pub aggregation_temporality: i32, +} +/// ExponentialHistogram represents the type of a metric that is calculated by aggregating +/// as a ExponentialHistogram of all reported double measurements over a time interval. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExponentialHistogram { + #[prost(message, repeated, tag = "1")] + pub data_points: ::prost::alloc::vec::Vec, + /// aggregation_temporality describes if the aggregator reports delta changes + /// since last report time, or cumulative changes since a fixed start time. + #[prost(enumeration = "AggregationTemporality", tag = "2")] + pub aggregation_temporality: i32, +} +/// Summary metric data are used to convey quantile summaries, +/// a Prometheus (see: ) +/// and OpenMetrics (see: ) +/// data type. These data points cannot always be merged in a meaningful way. +/// While they can be useful in some applications, histogram data points are +/// recommended for new applications. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Summary { + #[prost(message, repeated, tag = "1")] + pub data_points: ::prost::alloc::vec::Vec, +} +/// NumberDataPoint is a single data point in a timeseries that describes the +/// time-varying scalar value of a metric. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NumberDataPoint { + /// The set of key/value pairs that uniquely identify the timeseries from + /// where this point belongs. The list may be empty (may contain 0 elements). + /// Attribute keys MUST be unique (it is not allowed to have more than one + /// attribute with the same key). + #[prost(message, repeated, tag = "7")] + pub attributes: ::prost::alloc::vec::Vec, + /// StartTimeUnixNano is optional but strongly encouraged, see the + /// the detailed comments above Metric. + /// + /// Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January + /// 1970. + #[prost(fixed64, tag = "2")] + pub start_time_unix_nano: u64, + /// TimeUnixNano is required, see the detailed comments above Metric. + /// + /// Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January + /// 1970. + #[prost(fixed64, tag = "3")] + pub time_unix_nano: u64, + /// (Optional) List of exemplars collected from + /// measurements that were used to form the data point + #[prost(message, repeated, tag = "5")] + pub exemplars: ::prost::alloc::vec::Vec, + /// Flags that apply to this specific data point. See DataPointFlags + /// for the available flags and their meaning. + #[prost(uint32, tag = "8")] + pub flags: u32, + /// The value itself. A point is considered invalid when one of the recognized + /// value fields is not present inside this oneof. + #[prost(oneof = "number_data_point::Value", tags = "4, 6")] + pub value: ::core::option::Option, +} +/// Nested message and enum types in `NumberDataPoint`. +pub mod number_data_point { + /// The value itself. A point is considered invalid when one of the recognized + /// value fields is not present inside this oneof. + #[allow(clippy::derive_partial_eq_without_eq)] + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Value { + #[prost(double, tag = "4")] + AsDouble(f64), + #[prost(sfixed64, tag = "6")] + AsInt(i64), + } +} +/// HistogramDataPoint is a single data point in a timeseries that describes the +/// time-varying values of a Histogram. A Histogram contains summary statistics +/// for a population of values, it may optionally contain the distribution of +/// those values across a set of buckets. +/// +/// If the histogram contains the distribution of values, then both +/// "explicit_bounds" and "bucket counts" fields must be defined. +/// If the histogram does not contain the distribution of values, then both +/// "explicit_bounds" and "bucket_counts" must be omitted and only "count" and +/// "sum" are known. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct HistogramDataPoint { + /// The set of key/value pairs that uniquely identify the timeseries from + /// where this point belongs. The list may be empty (may contain 0 elements). + /// Attribute keys MUST be unique (it is not allowed to have more than one + /// attribute with the same key). + #[prost(message, repeated, tag = "9")] + pub attributes: ::prost::alloc::vec::Vec, + /// StartTimeUnixNano is optional but strongly encouraged, see the + /// the detailed comments above Metric. + /// + /// Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January + /// 1970. + #[prost(fixed64, tag = "2")] + pub start_time_unix_nano: u64, + /// TimeUnixNano is required, see the detailed comments above Metric. + /// + /// Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January + /// 1970. + #[prost(fixed64, tag = "3")] + pub time_unix_nano: u64, + /// count is the number of values in the population. Must be non-negative. This + /// value must be equal to the sum of the "count" fields in buckets if a + /// histogram is provided. + #[prost(fixed64, tag = "4")] + pub count: u64, + /// sum of the values in the population. If count is zero then this field + /// must be zero. + /// + /// Note: Sum should only be filled out when measuring non-negative discrete + /// events, and is assumed to be monotonic over the values of these events. + /// Negative events *can* be recorded, but sum should not be filled out when + /// doing so. This is specifically to enforce compatibility w/ OpenMetrics, + /// see: + #[prost(double, optional, tag = "5")] + pub sum: ::core::option::Option, + /// bucket_counts is an optional field contains the count values of histogram + /// for each bucket. + /// + /// The sum of the bucket_counts must equal the value in the count field. + /// + /// The number of elements in bucket_counts array must be by one greater than + /// the number of elements in explicit_bounds array. + #[prost(fixed64, repeated, tag = "6")] + pub bucket_counts: ::prost::alloc::vec::Vec, + /// explicit_bounds specifies buckets with explicitly defined bounds for values. + /// + /// The boundaries for bucket at index i are: + /// + /// (-infinity, explicit_bounds\[i]\] for i == 0 + /// (explicit_bounds\[i-1\], explicit_bounds\[i]\] for 0 < i < size(explicit_bounds) + /// (explicit_bounds\[i-1\], +infinity) for i == size(explicit_bounds) + /// + /// The values in the explicit_bounds array must be strictly increasing. + /// + /// Histogram buckets are inclusive of their upper boundary, except the last + /// bucket where the boundary is at infinity. This format is intentionally + /// compatible with the OpenMetrics histogram definition. + #[prost(double, repeated, tag = "7")] + pub explicit_bounds: ::prost::alloc::vec::Vec, + /// (Optional) List of exemplars collected from + /// measurements that were used to form the data point + #[prost(message, repeated, tag = "8")] + pub exemplars: ::prost::alloc::vec::Vec, + /// Flags that apply to this specific data point. See DataPointFlags + /// for the available flags and their meaning. + #[prost(uint32, tag = "10")] + pub flags: u32, + /// min is the minimum value over (start_time, end_time]. + #[prost(double, optional, tag = "11")] + pub min: ::core::option::Option, + /// max is the maximum value over (start_time, end_time]. + #[prost(double, optional, tag = "12")] + pub max: ::core::option::Option, +} +/// ExponentialHistogramDataPoint is a single data point in a timeseries that describes the +/// time-varying values of a ExponentialHistogram of double values. A ExponentialHistogram contains +/// summary statistics for a population of values, it may optionally contain the +/// distribution of those values across a set of buckets. +/// +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExponentialHistogramDataPoint { + /// The set of key/value pairs that uniquely identify the timeseries from + /// where this point belongs. The list may be empty (may contain 0 elements). + /// Attribute keys MUST be unique (it is not allowed to have more than one + /// attribute with the same key). + #[prost(message, repeated, tag = "1")] + pub attributes: ::prost::alloc::vec::Vec, + /// StartTimeUnixNano is optional but strongly encouraged, see the + /// the detailed comments above Metric. + /// + /// Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January + /// 1970. + #[prost(fixed64, tag = "2")] + pub start_time_unix_nano: u64, + /// TimeUnixNano is required, see the detailed comments above Metric. + /// + /// Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January + /// 1970. + #[prost(fixed64, tag = "3")] + pub time_unix_nano: u64, + /// count is the number of values in the population. Must be + /// non-negative. This value must be equal to the sum of the "bucket_counts" + /// values in the positive and negative Buckets plus the "zero_count" field. + #[prost(fixed64, tag = "4")] + pub count: u64, + /// sum of the values in the population. If count is zero then this field + /// must be zero. + /// + /// Note: Sum should only be filled out when measuring non-negative discrete + /// events, and is assumed to be monotonic over the values of these events. + /// Negative events *can* be recorded, but sum should not be filled out when + /// doing so. This is specifically to enforce compatibility w/ OpenMetrics, + /// see: + #[prost(double, optional, tag = "5")] + pub sum: ::core::option::Option, + /// scale describes the resolution of the histogram. Boundaries are + /// located at powers of the base, where: + /// + /// base = (2^(2^-scale)) + /// + /// The histogram bucket identified by `index`, a signed integer, + /// contains values that are greater than (base^index) and + /// less than or equal to (base^(index+1)). + /// + /// The positive and negative ranges of the histogram are expressed + /// separately. Negative values are mapped by their absolute value + /// into the negative range using the same scale as the positive range. + /// + /// scale is not restricted by the protocol, as the permissible + /// values depend on the range of the data. + #[prost(sint32, tag = "6")] + pub scale: i32, + /// zero_count is the count of values that are either exactly zero or + /// within the region considered zero by the instrumentation at the + /// tolerated degree of precision. This bucket stores values that + /// cannot be expressed using the standard exponential formula as + /// well as values that have been rounded to zero. + /// + /// Implementations MAY consider the zero bucket to have probability + /// mass equal to (zero_count / count). + #[prost(fixed64, tag = "7")] + pub zero_count: u64, + /// positive carries the positive range of exponential bucket counts. + #[prost(message, optional, tag = "8")] + pub positive: ::core::option::Option, + /// negative carries the negative range of exponential bucket counts. + #[prost(message, optional, tag = "9")] + pub negative: ::core::option::Option, + /// Flags that apply to this specific data point. See DataPointFlags + /// for the available flags and their meaning. + #[prost(uint32, tag = "10")] + pub flags: u32, + /// (Optional) List of exemplars collected from + /// measurements that were used to form the data point + #[prost(message, repeated, tag = "11")] + pub exemplars: ::prost::alloc::vec::Vec, + /// min is the minimum value over (start_time, end_time]. + #[prost(double, optional, tag = "12")] + pub min: ::core::option::Option, + /// max is the maximum value over (start_time, end_time]. + #[prost(double, optional, tag = "13")] + pub max: ::core::option::Option, + /// ZeroThreshold may be optionally set to convey the width of the zero + /// region. Where the zero region is defined as the closed interval + /// [-ZeroThreshold, ZeroThreshold]. + /// When ZeroThreshold is 0, zero count bucket stores values that cannot be + /// expressed using the standard exponential formula as well as values that + /// have been rounded to zero. + #[prost(double, tag = "14")] + pub zero_threshold: f64, +} +/// Nested message and enum types in `ExponentialHistogramDataPoint`. +pub mod exponential_histogram_data_point { + /// Buckets are a set of bucket counts, encoded in a contiguous array + /// of counts. + #[allow(clippy::derive_partial_eq_without_eq)] + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct Buckets { + /// Offset is the bucket index of the first entry in the bucket_counts array. + /// + /// Note: This uses a varint encoding as a simple form of compression. + #[prost(sint32, tag = "1")] + pub offset: i32, + /// bucket_counts is an array of count values, where bucket_counts\[i\] carries + /// the count of the bucket at index (offset+i). bucket_counts\[i\] is the count + /// of values greater than base^(offset+i) and less than or equal to + /// base^(offset+i+1). + /// + /// Note: By contrast, the explicit HistogramDataPoint uses + /// fixed64. This field is expected to have many buckets, + /// especially zeros, so uint64 has been selected to ensure + /// varint encoding. + #[prost(uint64, repeated, tag = "2")] + pub bucket_counts: ::prost::alloc::vec::Vec, + } +} +/// SummaryDataPoint is a single data point in a timeseries that describes the +/// time-varying values of a Summary metric. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct SummaryDataPoint { + /// The set of key/value pairs that uniquely identify the timeseries from + /// where this point belongs. The list may be empty (may contain 0 elements). + /// Attribute keys MUST be unique (it is not allowed to have more than one + /// attribute with the same key). + #[prost(message, repeated, tag = "7")] + pub attributes: ::prost::alloc::vec::Vec, + /// StartTimeUnixNano is optional but strongly encouraged, see the + /// the detailed comments above Metric. + /// + /// Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January + /// 1970. + #[prost(fixed64, tag = "2")] + pub start_time_unix_nano: u64, + /// TimeUnixNano is required, see the detailed comments above Metric. + /// + /// Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January + /// 1970. + #[prost(fixed64, tag = "3")] + pub time_unix_nano: u64, + /// count is the number of values in the population. Must be non-negative. + #[prost(fixed64, tag = "4")] + pub count: u64, + /// sum of the values in the population. If count is zero then this field + /// must be zero. + /// + /// Note: Sum should only be filled out when measuring non-negative discrete + /// events, and is assumed to be monotonic over the values of these events. + /// Negative events *can* be recorded, but sum should not be filled out when + /// doing so. This is specifically to enforce compatibility w/ OpenMetrics, + /// see: + #[prost(double, tag = "5")] + pub sum: f64, + /// (Optional) list of values at different quantiles of the distribution calculated + /// from the current snapshot. The quantiles must be strictly increasing. + #[prost(message, repeated, tag = "6")] + pub quantile_values: ::prost::alloc::vec::Vec, + /// Flags that apply to this specific data point. See DataPointFlags + /// for the available flags and their meaning. + #[prost(uint32, tag = "8")] + pub flags: u32, +} +/// Nested message and enum types in `SummaryDataPoint`. +pub mod summary_data_point { + /// Represents the value at a given quantile of a distribution. + /// + /// To record Min and Max values following conventions are used: + /// - The 1.0 quantile is equivalent to the maximum value observed. + /// - The 0.0 quantile is equivalent to the minimum value observed. + /// + /// See the following issue for more context: + /// + #[allow(clippy::derive_partial_eq_without_eq)] + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct ValueAtQuantile { + /// The quantile of a distribution. Must be in the interval + /// [0.0, 1.0]. + #[prost(double, tag = "1")] + pub quantile: f64, + /// The value at the given quantile of a distribution. + /// + /// Quantile values must NOT be negative. + #[prost(double, tag = "2")] + pub value: f64, + } +} +/// A representation of an exemplar, which is a sample input measurement. +/// Exemplars also hold information about the environment when the measurement +/// was recorded, for example the span and trace ID of the active span when the +/// exemplar was recorded. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Exemplar { + /// The set of key/value pairs that were filtered out by the aggregator, but + /// recorded alongside the original measurement. Only key/value pairs that were + /// filtered out by the aggregator should be included + #[prost(message, repeated, tag = "7")] + pub filtered_attributes: ::prost::alloc::vec::Vec< + super::super::common::v1::KeyValue, + >, + /// time_unix_nano is the exact time when this exemplar was recorded + /// + /// Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January + /// 1970. + #[prost(fixed64, tag = "2")] + pub time_unix_nano: u64, + /// (Optional) Span ID of the exemplar trace. + /// span_id may be missing if the measurement is not recorded inside a trace + /// or if the trace is not sampled. + #[prost(bytes = "vec", tag = "4")] + pub span_id: ::prost::alloc::vec::Vec, + /// (Optional) Trace ID of the exemplar trace. + /// trace_id may be missing if the measurement is not recorded inside a trace + /// or if the trace is not sampled. + #[prost(bytes = "vec", tag = "5")] + pub trace_id: ::prost::alloc::vec::Vec, + /// The value of the measurement that was recorded. An exemplar is + /// considered invalid when one of the recognized value fields is not present + /// inside this oneof. + #[prost(oneof = "exemplar::Value", tags = "3, 6")] + pub value: ::core::option::Option, +} +/// Nested message and enum types in `Exemplar`. +pub mod exemplar { + /// The value of the measurement that was recorded. An exemplar is + /// considered invalid when one of the recognized value fields is not present + /// inside this oneof. + #[allow(clippy::derive_partial_eq_without_eq)] + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Value { + #[prost(double, tag = "3")] + AsDouble(f64), + #[prost(sfixed64, tag = "6")] + AsInt(i64), + } +} +/// AggregationTemporality defines how a metric aggregator reports aggregated +/// values. It describes how those values relate to the time interval over +/// which they are aggregated. +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum AggregationTemporality { + /// UNSPECIFIED is the default AggregationTemporality, it MUST not be used. + Unspecified = 0, + /// DELTA is an AggregationTemporality for a metric aggregator which reports + /// changes since last report time. Successive metrics contain aggregation of + /// values from continuous and non-overlapping intervals. + /// + /// The values for a DELTA metric are based only on the time interval + /// associated with one measurement cycle. There is no dependency on + /// previous measurements like is the case for CUMULATIVE metrics. + /// + /// For example, consider a system measuring the number of requests that + /// it receives and reports the sum of these requests every second as a + /// DELTA metric: + /// + /// 1. The system starts receiving at time=t_0. + /// 2. A request is received, the system measures 1 request. + /// 3. A request is received, the system measures 1 request. + /// 4. A request is received, the system measures 1 request. + /// 5. The 1 second collection cycle ends. A metric is exported for the + /// number of requests received over the interval of time t_0 to + /// t_0+1 with a value of 3. + /// 6. A request is received, the system measures 1 request. + /// 7. A request is received, the system measures 1 request. + /// 8. The 1 second collection cycle ends. A metric is exported for the + /// number of requests received over the interval of time t_0+1 to + /// t_0+2 with a value of 2. + Delta = 1, + /// CUMULATIVE is an AggregationTemporality for a metric aggregator which + /// reports changes since a fixed start time. This means that current values + /// of a CUMULATIVE metric depend on all previous measurements since the + /// start time. Because of this, the sender is required to retain this state + /// in some form. If this state is lost or invalidated, the CUMULATIVE metric + /// values MUST be reset and a new fixed start time following the last + /// reported measurement time sent MUST be used. + /// + /// For example, consider a system measuring the number of requests that + /// it receives and reports the sum of these requests every second as a + /// CUMULATIVE metric: + /// + /// 1. The system starts receiving at time=t_0. + /// 2. A request is received, the system measures 1 request. + /// 3. A request is received, the system measures 1 request. + /// 4. A request is received, the system measures 1 request. + /// 5. The 1 second collection cycle ends. A metric is exported for the + /// number of requests received over the interval of time t_0 to + /// t_0+1 with a value of 3. + /// 6. A request is received, the system measures 1 request. + /// 7. A request is received, the system measures 1 request. + /// 8. The 1 second collection cycle ends. A metric is exported for the + /// number of requests received over the interval of time t_0 to + /// t_0+2 with a value of 5. + /// 9. The system experiences a fault and loses state. + /// 10. The system recovers and resumes receiving at time=t_1. + /// 11. A request is received, the system measures 1 request. + /// 12. The 1 second collection cycle ends. A metric is exported for the + /// number of requests received over the interval of time t_1 to + /// t_0+1 with a value of 1. + /// + /// Note: Even though, when reporting changes since last report time, using + /// CUMULATIVE is valid, it is not recommended. This may cause problems for + /// systems that do not use start_time to determine when the aggregation + /// value was reset (e.g. Prometheus). + Cumulative = 2, +} +impl AggregationTemporality { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + AggregationTemporality::Unspecified => "AGGREGATION_TEMPORALITY_UNSPECIFIED", + AggregationTemporality::Delta => "AGGREGATION_TEMPORALITY_DELTA", + AggregationTemporality::Cumulative => "AGGREGATION_TEMPORALITY_CUMULATIVE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AGGREGATION_TEMPORALITY_UNSPECIFIED" => Some(Self::Unspecified), + "AGGREGATION_TEMPORALITY_DELTA" => Some(Self::Delta), + "AGGREGATION_TEMPORALITY_CUMULATIVE" => Some(Self::Cumulative), + _ => None, + } + } +} +/// DataPointFlags is defined as a protobuf 'uint32' type and is to be used as a +/// bit-field representing 32 distinct boolean flags. Each flag defined in this +/// enum is a bit-mask. To test the presence of a single flag in the flags of +/// a data point, for example, use an expression like: +/// +/// (point.flags & DATA_POINT_FLAGS_NO_RECORDED_VALUE_MASK) == DATA_POINT_FLAGS_NO_RECORDED_VALUE_MASK +/// +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum DataPointFlags { + /// The zero value for the enum. Should not be used for comparisons. + /// Instead use bitwise "and" with the appropriate mask as shown above. + DoNotUse = 0, + /// This DataPoint is valid but has no recorded value. This value + /// SHOULD be used to reflect explicitly missing data in a series, as + /// for an equivalent to the Prometheus "staleness marker". + NoRecordedValueMask = 1, +} +impl DataPointFlags { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + DataPointFlags::DoNotUse => "DATA_POINT_FLAGS_DO_NOT_USE", + DataPointFlags::NoRecordedValueMask => { + "DATA_POINT_FLAGS_NO_RECORDED_VALUE_MASK" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DATA_POINT_FLAGS_DO_NOT_USE" => Some(Self::DoNotUse), + "DATA_POINT_FLAGS_NO_RECORDED_VALUE_MASK" => Some(Self::NoRecordedValueMask), + _ => None, + } + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.resource.v1.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.resource.v1.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.resource.v1.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.resource.v1.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,14 @@ +/// Resource information. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Resource { + /// Set of attributes that describe the resource. + /// Attribute keys MUST be unique (it is not allowed to have more than one + /// attribute with the same key). + #[prost(message, repeated, tag = "1")] + pub attributes: ::prost::alloc::vec::Vec, + /// dropped_attributes_count is the number of dropped attributes. If the value is 0, then + /// no attributes were dropped. + #[prost(uint32, tag = "2")] + pub dropped_attributes_count: u32, +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.trace.v1.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.trace.v1.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.trace.v1.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.trace.v1.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,337 @@ +/// TracesData represents the traces data that can be stored in a persistent storage, +/// OR can be embedded by other protocols that transfer OTLP traces data but do +/// not implement the OTLP protocol. +/// +/// The main difference between this message and collector protocol is that +/// in this message there will not be any "control" or "metadata" specific to +/// OTLP protocol. +/// +/// When new fields are added into this message, the OTLP request MUST be updated +/// as well. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TracesData { + /// An array of ResourceSpans. + /// For data coming from a single resource this array will typically contain + /// one element. Intermediary nodes that receive data from multiple origins + /// typically batch the data before forwarding further and in that case this + /// array will contain multiple elements. + #[prost(message, repeated, tag = "1")] + pub resource_spans: ::prost::alloc::vec::Vec, +} +/// A collection of ScopeSpans from a Resource. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ResourceSpans { + /// The resource for the spans in this message. + /// If this field is not set then no resource info is known. + #[prost(message, optional, tag = "1")] + pub resource: ::core::option::Option, + /// A list of ScopeSpans that originate from a resource. + #[prost(message, repeated, tag = "2")] + pub scope_spans: ::prost::alloc::vec::Vec, + /// This schema_url applies to the data in the "resource" field. It does not apply + /// to the data in the "scope_spans" field which have their own schema_url field. + #[prost(string, tag = "3")] + pub schema_url: ::prost::alloc::string::String, +} +/// A collection of Spans produced by an InstrumentationScope. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ScopeSpans { + /// The instrumentation scope information for the spans in this message. + /// Semantically when InstrumentationScope isn't set, it is equivalent with + /// an empty instrumentation scope name (unknown). + #[prost(message, optional, tag = "1")] + pub scope: ::core::option::Option, + /// A list of Spans that originate from an instrumentation scope. + #[prost(message, repeated, tag = "2")] + pub spans: ::prost::alloc::vec::Vec, + /// This schema_url applies to all spans and span events in the "spans" field. + #[prost(string, tag = "3")] + pub schema_url: ::prost::alloc::string::String, +} +/// A Span represents a single operation performed by a single component of the system. +/// +/// The next available field id is 17. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Span { + /// A unique identifier for a trace. All spans from the same trace share + /// the same `trace_id`. The ID is a 16-byte array. An ID with all zeroes OR + /// of length other than 16 bytes is considered invalid (empty string in OTLP/JSON + /// is zero-length and thus is also invalid). + /// + /// This field is required. + #[prost(bytes = "vec", tag = "1")] + pub trace_id: ::prost::alloc::vec::Vec, + /// A unique identifier for a span within a trace, assigned when the span + /// is created. The ID is an 8-byte array. An ID with all zeroes OR of length + /// other than 8 bytes is considered invalid (empty string in OTLP/JSON + /// is zero-length and thus is also invalid). + /// + /// This field is required. + #[prost(bytes = "vec", tag = "2")] + pub span_id: ::prost::alloc::vec::Vec, + /// trace_state conveys information about request position in multiple distributed tracing graphs. + /// It is a trace_state in w3c-trace-context format: + /// See also for more details about this field. + #[prost(string, tag = "3")] + pub trace_state: ::prost::alloc::string::String, + /// The `span_id` of this span's parent span. If this is a root span, then this + /// field must be empty. The ID is an 8-byte array. + #[prost(bytes = "vec", tag = "4")] + pub parent_span_id: ::prost::alloc::vec::Vec, + /// A description of the span's operation. + /// + /// For example, the name can be a qualified method name or a file name + /// and a line number where the operation is called. A best practice is to use + /// the same display name at the same call point in an application. + /// This makes it easier to correlate spans in different traces. + /// + /// This field is semantically required to be set to non-empty string. + /// Empty value is equivalent to an unknown span name. + /// + /// This field is required. + #[prost(string, tag = "5")] + pub name: ::prost::alloc::string::String, + /// Distinguishes between spans generated in a particular context. For example, + /// two spans with the same name may be distinguished using `CLIENT` (caller) + /// and `SERVER` (callee) to identify queueing latency associated with the span. + #[prost(enumeration = "span::SpanKind", tag = "6")] + pub kind: i32, + /// start_time_unix_nano is the start time of the span. On the client side, this is the time + /// kept by the local machine where the span execution starts. On the server side, this + /// is the time when the server's application handler starts running. + /// Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970. + /// + /// This field is semantically required and it is expected that end_time >= start_time. + #[prost(fixed64, tag = "7")] + pub start_time_unix_nano: u64, + /// end_time_unix_nano is the end time of the span. On the client side, this is the time + /// kept by the local machine where the span execution ends. On the server side, this + /// is the time when the server application handler stops running. + /// Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970. + /// + /// This field is semantically required and it is expected that end_time >= start_time. + #[prost(fixed64, tag = "8")] + pub end_time_unix_nano: u64, + /// attributes is a collection of key/value pairs. Note, global attributes + /// like server name can be set using the resource API. Examples of attributes: + /// + /// "/http/user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" + /// "/http/server_latency": 300 + /// "example.com/myattribute": true + /// "example.com/score": 10.239 + /// + /// The OpenTelemetry API specification further restricts the allowed value types: + /// + /// Attribute keys MUST be unique (it is not allowed to have more than one + /// attribute with the same key). + #[prost(message, repeated, tag = "9")] + pub attributes: ::prost::alloc::vec::Vec, + /// dropped_attributes_count is the number of attributes that were discarded. Attributes + /// can be discarded because their keys are too long or because there are too many + /// attributes. If this value is 0, then no attributes were dropped. + #[prost(uint32, tag = "10")] + pub dropped_attributes_count: u32, + /// events is a collection of Event items. + #[prost(message, repeated, tag = "11")] + pub events: ::prost::alloc::vec::Vec, + /// dropped_events_count is the number of dropped events. If the value is 0, then no + /// events were dropped. + #[prost(uint32, tag = "12")] + pub dropped_events_count: u32, + /// links is a collection of Links, which are references from this span to a span + /// in the same or different trace. + #[prost(message, repeated, tag = "13")] + pub links: ::prost::alloc::vec::Vec, + /// dropped_links_count is the number of dropped links after the maximum size was + /// enforced. If this value is 0, then no links were dropped. + #[prost(uint32, tag = "14")] + pub dropped_links_count: u32, + /// An optional final status for this span. Semantically when Status isn't set, it means + /// span's status code is unset, i.e. assume STATUS_CODE_UNSET (code = 0). + #[prost(message, optional, tag = "15")] + pub status: ::core::option::Option, +} +/// Nested message and enum types in `Span`. +pub mod span { + /// Event is a time-stamped annotation of the span, consisting of user-supplied + /// text description and key-value pairs. + #[allow(clippy::derive_partial_eq_without_eq)] + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct Event { + /// time_unix_nano is the time the event occurred. + #[prost(fixed64, tag = "1")] + pub time_unix_nano: u64, + /// name of the event. + /// This field is semantically required to be set to non-empty string. + #[prost(string, tag = "2")] + pub name: ::prost::alloc::string::String, + /// attributes is a collection of attribute key/value pairs on the event. + /// Attribute keys MUST be unique (it is not allowed to have more than one + /// attribute with the same key). + #[prost(message, repeated, tag = "3")] + pub attributes: ::prost::alloc::vec::Vec< + super::super::super::common::v1::KeyValue, + >, + /// dropped_attributes_count is the number of dropped attributes. If the value is 0, + /// then no attributes were dropped. + #[prost(uint32, tag = "4")] + pub dropped_attributes_count: u32, + } + /// A pointer from the current span to another span in the same trace or in a + /// different trace. For example, this can be used in batching operations, + /// where a single batch handler processes multiple requests from different + /// traces or when the handler receives a request from a different project. + #[allow(clippy::derive_partial_eq_without_eq)] + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct Link { + /// A unique identifier of a trace that this linked span is part of. The ID is a + /// 16-byte array. + #[prost(bytes = "vec", tag = "1")] + pub trace_id: ::prost::alloc::vec::Vec, + /// A unique identifier for the linked span. The ID is an 8-byte array. + #[prost(bytes = "vec", tag = "2")] + pub span_id: ::prost::alloc::vec::Vec, + /// The trace_state associated with the link. + #[prost(string, tag = "3")] + pub trace_state: ::prost::alloc::string::String, + /// attributes is a collection of attribute key/value pairs on the link. + /// Attribute keys MUST be unique (it is not allowed to have more than one + /// attribute with the same key). + #[prost(message, repeated, tag = "4")] + pub attributes: ::prost::alloc::vec::Vec< + super::super::super::common::v1::KeyValue, + >, + /// dropped_attributes_count is the number of dropped attributes. If the value is 0, + /// then no attributes were dropped. + #[prost(uint32, tag = "5")] + pub dropped_attributes_count: u32, + } + /// SpanKind is the type of span. Can be used to specify additional relationships between spans + /// in addition to a parent/child relationship. + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + ::prost::Enumeration + )] + #[repr(i32)] + pub enum SpanKind { + /// Unspecified. Do NOT use as default. + /// Implementations MAY assume SpanKind to be INTERNAL when receiving UNSPECIFIED. + Unspecified = 0, + /// Indicates that the span represents an internal operation within an application, + /// as opposed to an operation happening at the boundaries. Default value. + Internal = 1, + /// Indicates that the span covers server-side handling of an RPC or other + /// remote network request. + Server = 2, + /// Indicates that the span describes a request to some remote service. + Client = 3, + /// Indicates that the span describes a producer sending a message to a broker. + /// Unlike CLIENT and SERVER, there is often no direct critical path latency relationship + /// between producer and consumer spans. A PRODUCER span ends when the message was accepted + /// by the broker while the logical processing of the message might span a much longer time. + Producer = 4, + /// Indicates that the span describes consumer receiving a message from a broker. + /// Like the PRODUCER kind, there is often no direct critical path latency relationship + /// between producer and consumer spans. + Consumer = 5, + } + impl SpanKind { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + SpanKind::Unspecified => "SPAN_KIND_UNSPECIFIED", + SpanKind::Internal => "SPAN_KIND_INTERNAL", + SpanKind::Server => "SPAN_KIND_SERVER", + SpanKind::Client => "SPAN_KIND_CLIENT", + SpanKind::Producer => "SPAN_KIND_PRODUCER", + SpanKind::Consumer => "SPAN_KIND_CONSUMER", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "SPAN_KIND_UNSPECIFIED" => Some(Self::Unspecified), + "SPAN_KIND_INTERNAL" => Some(Self::Internal), + "SPAN_KIND_SERVER" => Some(Self::Server), + "SPAN_KIND_CLIENT" => Some(Self::Client), + "SPAN_KIND_PRODUCER" => Some(Self::Producer), + "SPAN_KIND_CONSUMER" => Some(Self::Consumer), + _ => None, + } + } + } +} +/// The Status type defines a logical error model that is suitable for different +/// programming environments, including REST APIs and RPC APIs. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Status { + /// A developer-facing human readable error message. + #[prost(string, tag = "2")] + pub message: ::prost::alloc::string::String, + /// The status code. + #[prost(enumeration = "status::StatusCode", tag = "3")] + pub code: i32, +} +/// Nested message and enum types in `Status`. +pub mod status { + /// For the semantics of status codes see + /// + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + ::prost::Enumeration + )] + #[repr(i32)] + pub enum StatusCode { + /// The default status. + Unset = 0, + /// The Span has been validated by an Application developer or Operator to + /// have completed successfully. + Ok = 1, + /// The Span contains an error. + Error = 2, + } + impl StatusCode { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + StatusCode::Unset => "STATUS_CODE_UNSET", + StatusCode::Ok => "STATUS_CODE_OK", + StatusCode::Error => "STATUS_CODE_ERROR", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "STATUS_CODE_UNSET" => Some(Self::Unset), + "STATUS_CODE_OK" => Some(Self::Ok), + "STATUS_CODE_ERROR" => Some(Self::Error), + _ => None, + } + } + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tracez.proto temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tracez.proto --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tracez.proto 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto/tracez.proto 2023-10-30 19:40:00.000000000 +0000 @@ -14,7 +14,6 @@ syntax = "proto3"; import "opentelemetry/proto/common/v1/common.proto"; -import "opentelemetry/proto/resource/v1/resource.proto"; import "opentelemetry/proto/trace/v1/trace.proto"; message TracezCounts { diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/proto.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/proto.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/proto.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/proto.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,78 +1,83 @@ -#[cfg(feature = "gen-tonic")] -/// Generated files using [`tonic`](https://docs.rs/crate/grpcio) and [`prost`](https://docs.rs/crate/protobuf/latest) +#[cfg(feature = "gen-tonic-messages")] +#[path = "proto/tonic"] +/// Generated files using [`tonic`](https://docs.rs/crate/tonic) and [`prost`](https://docs.rs/crate/prost) pub mod tonic { /// Service stub and clients + #[path = ""] pub mod collector { #[cfg(feature = "logs")] + #[path = ""] pub mod logs { - pub mod v1 { - tonic::include_proto!("opentelemetry.proto.collector.logs.v1"); - } + #[path = "opentelemetry.proto.collector.logs.v1.rs"] + pub mod v1; } #[cfg(feature = "metrics")] + #[path = ""] pub mod metrics { - pub mod v1 { - tonic::include_proto!("opentelemetry.proto.collector.metrics.v1"); - } + #[path = "opentelemetry.proto.collector.metrics.v1.rs"] + pub mod v1; } #[cfg(feature = "traces")] + #[path = ""] pub mod trace { - pub mod v1 { - tonic::include_proto!("opentelemetry.proto.collector.trace.v1"); - } + #[path = "opentelemetry.proto.collector.trace.v1.rs"] + pub mod v1; } } /// Common types used across all signals + #[path = ""] pub mod common { - pub mod v1 { - tonic::include_proto!("opentelemetry.proto.common.v1"); - } + #[path = "opentelemetry.proto.common.v1.rs"] + pub mod v1; } - #[cfg(feature = "logs")] /// Generated types used in logging. + #[cfg(feature = "logs")] + #[path = ""] pub mod logs { - pub mod v1 { - tonic::include_proto!("opentelemetry.proto.logs.v1"); - } + #[path = "opentelemetry.proto.logs.v1.rs"] + pub mod v1; } - #[cfg(feature = "metrics")] /// Generated types used in metrics. + #[cfg(feature = "metrics")] + #[path = ""] pub mod metrics { - pub mod v1 { - tonic::include_proto!("opentelemetry.proto.metrics.v1"); - } + #[path = "opentelemetry.proto.metrics.v1.rs"] + pub mod v1; } /// Generated types used in resources. + #[path = ""] pub mod resource { - pub mod v1 { - tonic::include_proto!("opentelemetry.proto.resource.v1"); - } + #[path = "opentelemetry.proto.resource.v1.rs"] + pub mod v1; } - #[cfg(feature = "traces")] /// Generated types used in traces. + #[cfg(feature = "traces")] + #[path = ""] pub mod trace { - pub mod v1 { - tonic::include_proto!("opentelemetry.proto.trace.v1"); - } + #[path = "opentelemetry.proto.trace.v1.rs"] + pub mod v1; } pub use crate::transform::common::tonic::Attributes; - - #[cfg(feature = "metrics")] - pub use crate::transform::metrics::tonic::FromNumber; } #[cfg(feature = "gen-protoc")] /// Generated files using [`grpcio`](https://docs.rs/crate/grpcio) and [`protobuf`](https://docs.rs/crate/protobuf/latest) pub mod grpcio { pub mod common; + #[cfg(feature = "logs")] + pub mod logs; + #[cfg(feature = "logs")] + pub mod logs_service; + #[cfg(feature = "logs")] + pub mod logs_service_grpc; #[cfg(feature = "metrics")] pub mod metrics; #[cfg(feature = "metrics")] @@ -83,8 +88,6 @@ #[cfg(feature = "traces")] pub mod trace; #[cfg(feature = "traces")] - pub mod trace_config; - #[cfg(feature = "traces")] pub mod trace_service; #[cfg(feature = "traces")] pub mod trace_service_grpc; diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/common.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/common.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/common.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/common.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,31 +1,53 @@ -#[cfg(feature = "traces")] +#[cfg(any(feature = "traces", feature = "logs"))] use std::time::{Duration, SystemTime, UNIX_EPOCH}; -#[cfg(feature = "traces")] +#[cfg(any(feature = "traces", feature = "logs"))] pub(crate) fn to_nanos(time: SystemTime) -> u64 { time.duration_since(UNIX_EPOCH) .unwrap_or_else(|_| Duration::from_secs(0)) .as_nanos() as u64 } -#[cfg(feature = "gen-tonic")] +#[cfg(feature = "gen-tonic-messages")] pub mod tonic { use crate::proto::tonic::common::v1::{ - any_value, AnyValue, ArrayValue, InstrumentationLibrary, KeyValue, + any_value, AnyValue, ArrayValue, InstrumentationScope, KeyValue, }; - use opentelemetry::{sdk::trace::EvictedHashMap, Array, Value}; + use opentelemetry_api::{Array, Value}; + use opentelemetry_sdk::trace::EvictedHashMap; use std::borrow::Cow; - impl From for InstrumentationLibrary { - fn from(library: opentelemetry::sdk::InstrumentationLibrary) -> Self { - InstrumentationLibrary { - name: library.name.to_string(), + #[cfg(any(feature = "traces", feature = "logs"))] + use opentelemetry_sdk::Resource; + + impl From for InstrumentationScope { + fn from(library: opentelemetry_sdk::InstrumentationLibrary) -> Self { + InstrumentationScope { + name: library.name.into_owned(), + attributes: Vec::new(), version: library.version.unwrap_or(Cow::Borrowed("")).to_string(), + dropped_attributes_count: 0, + } + } + } + + impl From<&opentelemetry_sdk::InstrumentationLibrary> for InstrumentationScope { + fn from(library: &opentelemetry_sdk::InstrumentationLibrary) -> Self { + InstrumentationScope { + name: library.name.to_string(), + attributes: Vec::new(), + version: library + .version + .as_ref() + .map(ToString::to_string) + .unwrap_or_default(), + dropped_attributes_count: 0, } } } /// Wrapper type for Vec<[`KeyValue`](crate::proto::tonic::common::v1::KeyValue)> + #[derive(Default)] pub struct Attributes(pub ::std::vec::Vec); impl From for Attributes { @@ -42,8 +64,8 @@ } } - impl From> for Attributes { - fn from(kvs: Vec) -> Self { + impl From> for Attributes { + fn from(kvs: Vec) -> Self { Attributes( kvs.into_iter() .map(|api_kv| KeyValue { @@ -55,6 +77,20 @@ } } + #[cfg(feature = "logs")] + impl, V: Into> FromIterator<(K, V)> for Attributes { + fn from_iter>(iter: T) -> Self { + Attributes( + iter.into_iter() + .map(|(k, v)| KeyValue { + key: k.into(), + value: Some(v.into()), + }) + .collect(), + ) + } + } + impl From for AnyValue { fn from(value: Value) -> Self { AnyValue { @@ -85,18 +121,30 @@ ArrayValue { values } } + + #[cfg(any(feature = "traces", feature = "logs"))] + pub(crate) fn resource_attributes(resource: &Resource) -> Attributes { + resource + .iter() + .map(|(k, v)| opentelemetry_api::KeyValue::new(k.clone(), v.clone())) + .collect::>() + .into() + } } #[cfg(feature = "gen-protoc")] pub mod grpcio { - use crate::proto::grpcio::common::{AnyValue, ArrayValue, InstrumentationLibrary, KeyValue}; - use opentelemetry::{sdk::trace::EvictedHashMap, Array, Value}; + use crate::proto::grpcio::common::{AnyValue, ArrayValue, InstrumentationScope, KeyValue}; + use opentelemetry_api::{Array, Value}; + use opentelemetry_sdk::{trace::EvictedHashMap, Resource}; use protobuf::RepeatedField; + #[cfg(feature = "logs")] + use protobuf::SingularPtrField; use std::borrow::Cow; - impl From for InstrumentationLibrary { - fn from(library: opentelemetry::sdk::InstrumentationLibrary) -> Self { - InstrumentationLibrary { + impl From for InstrumentationScope { + fn from(library: opentelemetry_sdk::InstrumentationLibrary) -> Self { + InstrumentationScope { name: library.name.to_string(), version: library.version.unwrap_or(Cow::Borrowed("")).to_string(), ..Default::default() @@ -104,6 +152,7 @@ } } + #[derive(Default)] pub struct Attributes(pub ::protobuf::RepeatedField); impl From for Attributes { @@ -122,8 +171,8 @@ } } - impl From> for Attributes { - fn from(kvs: Vec) -> Self { + impl From> for Attributes { + fn from(kvs: Vec) -> Self { Attributes(RepeatedField::from_vec( kvs.into_iter() .map(|api_kv| { @@ -137,6 +186,21 @@ } } + #[cfg(feature = "logs")] + impl, V: Into> FromIterator<(K, V)> for Attributes { + fn from_iter>(iter: T) -> Self { + Attributes(RepeatedField::from_vec( + iter.into_iter() + .map(|(k, v)| KeyValue { + key: k.into(), + value: SingularPtrField::some(v.into()), + ..Default::default() + }) + .collect(), + )) + } + } + impl From for AnyValue { fn from(value: Value) -> Self { let mut any_value = AnyValue::new(); @@ -171,4 +235,13 @@ array_value.set_values(values); array_value } + + #[cfg(any(feature = "traces", feature = "logs"))] + pub(crate) fn resource_attributes(resource: &Resource) -> Attributes { + resource + .iter() + .map(|(k, v)| opentelemetry_api::KeyValue::new(k.clone(), v.clone())) + .collect::>() + .into() + } } diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/logs.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/logs.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/logs.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/logs.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,290 @@ +use crate::transform::common::to_nanos; + +#[cfg(feature = "gen-tonic")] +pub mod tonic { + use crate::{ + tonic::{ + common::v1::{any_value::Value, AnyValue, ArrayValue, KeyValue, KeyValueList}, + logs::v1::{LogRecord, ResourceLogs, ScopeLogs, SeverityNumber}, + resource::v1::Resource, + Attributes, + }, + transform::common::tonic::resource_attributes, + }; + use opentelemetry_api::logs::{AnyValue as LogsAnyValue, Severity}; + + use super::*; + + impl From for AnyValue { + fn from(value: LogsAnyValue) -> Self { + AnyValue { + value: Some(value.into()), + } + } + } + + impl From for Value { + fn from(value: LogsAnyValue) -> Self { + match value { + LogsAnyValue::Double(f) => Value::DoubleValue(f), + LogsAnyValue::Int(i) => Value::IntValue(i), + LogsAnyValue::String(s) => Value::StringValue(s.into()), + LogsAnyValue::Boolean(b) => Value::BoolValue(b), + LogsAnyValue::ListAny(v) => Value::ArrayValue(ArrayValue { + values: v + .into_iter() + .map(|v| AnyValue { + value: Some(v.into()), + }) + .collect(), + }), + LogsAnyValue::Map(m) => Value::KvlistValue(KeyValueList { + values: m + .into_iter() + .map(|(key, value)| KeyValue { + key: key.into(), + value: Some(AnyValue { + value: Some(value.into()), + }), + }) + .collect(), + }), + LogsAnyValue::Bytes(v) => Value::BytesValue(v), + } + } + } + + impl From for LogRecord { + fn from(log_record: opentelemetry_api::logs::LogRecord) -> Self { + let trace_context = log_record.trace_context.as_ref(); + let severity_number = match log_record.severity_number { + Some(Severity::Trace) => SeverityNumber::Trace, + Some(Severity::Trace2) => SeverityNumber::Trace2, + Some(Severity::Trace3) => SeverityNumber::Trace3, + Some(Severity::Trace4) => SeverityNumber::Trace4, + Some(Severity::Debug) => SeverityNumber::Debug, + Some(Severity::Debug2) => SeverityNumber::Debug2, + Some(Severity::Debug3) => SeverityNumber::Debug3, + Some(Severity::Debug4) => SeverityNumber::Debug4, + Some(Severity::Info) => SeverityNumber::Info, + Some(Severity::Info2) => SeverityNumber::Info2, + Some(Severity::Info3) => SeverityNumber::Info3, + Some(Severity::Info4) => SeverityNumber::Info4, + Some(Severity::Warn) => SeverityNumber::Warn, + Some(Severity::Warn2) => SeverityNumber::Warn2, + Some(Severity::Warn3) => SeverityNumber::Warn3, + Some(Severity::Warn4) => SeverityNumber::Warn4, + Some(Severity::Error) => SeverityNumber::Error, + Some(Severity::Error2) => SeverityNumber::Error2, + Some(Severity::Error3) => SeverityNumber::Error3, + Some(Severity::Error4) => SeverityNumber::Error4, + Some(Severity::Fatal) => SeverityNumber::Fatal, + Some(Severity::Fatal2) => SeverityNumber::Fatal2, + Some(Severity::Fatal3) => SeverityNumber::Fatal3, + Some(Severity::Fatal4) => SeverityNumber::Fatal4, + None => SeverityNumber::Unspecified, + }; + + LogRecord { + time_unix_nano: log_record.timestamp.map(to_nanos).unwrap_or_default(), + observed_time_unix_nano: log_record + .observed_timestamp + .map(to_nanos) + .unwrap_or_default(), + severity_number: severity_number.into(), + severity_text: log_record.severity_text.map(Into::into).unwrap_or_default(), + body: log_record.body.map(Into::into), + attributes: log_record + .attributes + .map(|attrs| Attributes::from_iter(attrs.into_iter())) + .unwrap_or_default() + .0, + dropped_attributes_count: 0, + flags: trace_context + .map(|ctx| { + ctx.trace_flags + .map(|flags| flags.to_u8() as u32) + .unwrap_or_default() + }) + .unwrap_or_default(), + span_id: trace_context + .map(|ctx| ctx.span_id.to_bytes().to_vec()) + .unwrap_or_default(), + trace_id: trace_context + .map(|ctx| ctx.trace_id.to_bytes().to_vec()) + .unwrap_or_default(), + } + } + } + + impl From for ResourceLogs { + fn from(log_data: opentelemetry_sdk::export::logs::LogData) -> Self { + ResourceLogs { + resource: Some(Resource { + attributes: resource_attributes(&log_data.resource).0, + dropped_attributes_count: 0, + }), + schema_url: "".to_string(), + scope_logs: vec![ScopeLogs { + schema_url: log_data + .instrumentation + .schema_url + .clone() + .map(Into::into) + .unwrap_or_default(), + scope: Some(log_data.instrumentation.into()), + log_records: vec![log_data.record.into()], + }], + } + } + } +} + +#[cfg(feature = "gen-protoc")] +pub mod grpcio { + use crate::{ + grpcio::Attributes, + proto::grpcio::{ + common::{AnyValue, AnyValue_oneof_value, ArrayValue, KeyValue, KeyValueList}, + logs::{LogRecord, ResourceLogs, ScopeLogs, SeverityNumber}, + resource::Resource, + }, + transform::common::grpcio::resource_attributes, + }; + use opentelemetry_api::logs::{AnyValue as LogsAnyValue, Severity}; + use protobuf::{RepeatedField, SingularPtrField}; + + use super::*; + + impl From for AnyValue { + fn from(value: LogsAnyValue) -> Self { + AnyValue { + value: Some(value.into()), + ..Default::default() + } + } + } + + impl From for AnyValue_oneof_value { + fn from(value: LogsAnyValue) -> Self { + match value { + LogsAnyValue::Double(f) => AnyValue_oneof_value::double_value(f), + LogsAnyValue::Int(i) => AnyValue_oneof_value::int_value(i), + LogsAnyValue::String(s) => AnyValue_oneof_value::string_value(s.into()), + LogsAnyValue::Boolean(b) => AnyValue_oneof_value::bool_value(b), + LogsAnyValue::ListAny(v) => AnyValue_oneof_value::array_value(ArrayValue { + values: RepeatedField::from_vec( + v.into_iter() + .map(|v| AnyValue { + value: Some(v.into()), + ..Default::default() + }) + .collect(), + ), + ..Default::default() + }), + LogsAnyValue::Map(m) => AnyValue_oneof_value::kvlist_value(KeyValueList { + values: RepeatedField::from_vec( + m.into_iter() + .map(|(key, value)| KeyValue { + key: key.into(), + value: SingularPtrField::some(AnyValue { + value: Some(value.into()), + ..Default::default() + }), + ..Default::default() + }) + .collect(), + ), + ..Default::default() + }), + LogsAnyValue::Bytes(v) => AnyValue_oneof_value::bytes_value(v), + } + } + } + + impl From for LogRecord { + fn from(log_record: opentelemetry_api::logs::LogRecord) -> Self { + let trace_context = log_record.trace_context.as_ref(); + let severity_number = match log_record.severity_number { + Some(Severity::Trace) => SeverityNumber::SEVERITY_NUMBER_TRACE, + Some(Severity::Trace2) => SeverityNumber::SEVERITY_NUMBER_TRACE2, + Some(Severity::Trace3) => SeverityNumber::SEVERITY_NUMBER_TRACE3, + Some(Severity::Trace4) => SeverityNumber::SEVERITY_NUMBER_TRACE4, + Some(Severity::Debug) => SeverityNumber::SEVERITY_NUMBER_DEBUG, + Some(Severity::Debug2) => SeverityNumber::SEVERITY_NUMBER_DEBUG2, + Some(Severity::Debug3) => SeverityNumber::SEVERITY_NUMBER_DEBUG3, + Some(Severity::Debug4) => SeverityNumber::SEVERITY_NUMBER_DEBUG4, + Some(Severity::Info) => SeverityNumber::SEVERITY_NUMBER_INFO, + Some(Severity::Info2) => SeverityNumber::SEVERITY_NUMBER_INFO2, + Some(Severity::Info3) => SeverityNumber::SEVERITY_NUMBER_INFO3, + Some(Severity::Info4) => SeverityNumber::SEVERITY_NUMBER_INFO4, + Some(Severity::Warn) => SeverityNumber::SEVERITY_NUMBER_WARN, + Some(Severity::Warn2) => SeverityNumber::SEVERITY_NUMBER_WARN2, + Some(Severity::Warn3) => SeverityNumber::SEVERITY_NUMBER_WARN3, + Some(Severity::Warn4) => SeverityNumber::SEVERITY_NUMBER_WARN4, + Some(Severity::Error) => SeverityNumber::SEVERITY_NUMBER_ERROR, + Some(Severity::Error2) => SeverityNumber::SEVERITY_NUMBER_ERROR2, + Some(Severity::Error3) => SeverityNumber::SEVERITY_NUMBER_ERROR3, + Some(Severity::Error4) => SeverityNumber::SEVERITY_NUMBER_ERROR4, + Some(Severity::Fatal) => SeverityNumber::SEVERITY_NUMBER_FATAL, + Some(Severity::Fatal2) => SeverityNumber::SEVERITY_NUMBER_FATAL2, + Some(Severity::Fatal3) => SeverityNumber::SEVERITY_NUMBER_FATAL3, + Some(Severity::Fatal4) => SeverityNumber::SEVERITY_NUMBER_FATAL4, + None => SeverityNumber::SEVERITY_NUMBER_UNSPECIFIED, + }; + + LogRecord { + time_unix_nano: log_record.timestamp.map(to_nanos).unwrap_or(0), + severity_number, + severity_text: log_record.severity_text.map(Into::into).unwrap_or_default(), + body: log_record.body.map(Into::into).into(), + attributes: log_record + .attributes + .map(|attrs| Attributes::from_iter(attrs.into_iter())) + .unwrap_or_default() + .0, + dropped_attributes_count: 0, + flags: trace_context + .map(|ctx| { + ctx.trace_flags + .map(|flags| flags.to_u8() as u32) + .unwrap_or_default() + }) + .unwrap_or_default(), + span_id: trace_context + .map(|ctx| ctx.span_id.to_bytes().to_vec()) + .unwrap_or_default(), + trace_id: trace_context + .map(|ctx| ctx.trace_id.to_bytes().to_vec()) + .unwrap_or_default(), + ..Default::default() + } + } + } + + impl From for ResourceLogs { + fn from(log_data: opentelemetry_sdk::export::logs::LogData) -> Self { + ResourceLogs { + resource: SingularPtrField::some(Resource { + attributes: resource_attributes(&log_data.resource).0, + dropped_attributes_count: 0, + ..Default::default() + }), + schema_url: "".to_string(), + scope_logs: RepeatedField::from_vec(vec![ScopeLogs { + schema_url: log_data + .instrumentation + .schema_url + .clone() + .map(Into::into) + .unwrap_or_default(), + scope: SingularPtrField::some(log_data.instrumentation.into()), + log_records: RepeatedField::from_vec(vec![log_data.record.into()]), + ..Default::default() + }]), + ..Default::default() + } + } + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/metrics.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/metrics.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/metrics.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/metrics.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,55 +3,75 @@ // We cannot ignore it as it's not an optional field. // We can remove this after we removed the labels field from proto. #[allow(deprecated)] -#[cfg(feature = "gen-tonic")] +#[cfg(feature = "gen-tonic-messages")] pub mod tonic { - use crate::proto::tonic::{ - common::v1::KeyValue, - metrics::v1::{number_data_point, AggregationTemporality}, - }; - use opentelemetry::{ - metrics::MetricsError, - sdk::{ - export::metrics::aggregation::Temporality, - metrics::sdk_api::{Number, NumberKind}, - }, - }; - - use opentelemetry::{Key, Value}; - - /// Convert [`Number`](opentelemetry::sdk::metrics::sdk_api::Number) to target type based - /// on it's [`NumberKind`](opentelemetry::sdk::metrics::sdk_api::NumberKind). - pub trait FromNumber { - fn from_number(number: Number, number_kind: &NumberKind) -> Self; - } - - impl FromNumber for number_data_point::Value { - fn from_number(number: Number, number_kind: &NumberKind) -> Self { - match &number_kind { - NumberKind::I64 | NumberKind::U64 => { - number_data_point::Value::AsInt(number.to_i64(number_kind)) - } - NumberKind::F64 => number_data_point::Value::AsDouble(number.to_f64(number_kind)), - } + use crate::proto::tonic::{common::v1::KeyValue, metrics::v1::AggregationTemporality}; + use crate::tonic::metrics::v1::{exemplar, number_data_point}; + use opentelemetry_api::metrics::MetricsError; + use opentelemetry_api::{Key, Value}; + use opentelemetry_sdk::metrics::data::Temporality; + + impl From for exemplar::Value { + fn from(value: u64) -> Self { + exemplar::Value::AsInt(i64::try_from(value).unwrap_or_default()) + } + } + + impl From for exemplar::Value { + fn from(value: i64) -> Self { + exemplar::Value::AsInt(value) + } + } + + impl From for exemplar::Value { + fn from(value: f64) -> Self { + exemplar::Value::AsDouble(value) + } + } + + impl From for number_data_point::Value { + fn from(value: u64) -> Self { + number_data_point::Value::AsInt(i64::try_from(value).unwrap_or_default()) + } + } + + impl From for number_data_point::Value { + fn from(value: i64) -> Self { + number_data_point::Value::AsInt(value) + } + } + + impl From for number_data_point::Value { + fn from(value: f64) -> Self { + number_data_point::Value::AsDouble(value) } } impl From<(&Key, &Value)> for KeyValue { fn from(kv: (&Key, &Value)) -> Self { KeyValue { - key: kv.0.clone().into(), + key: kv.0.to_string(), value: Some(kv.1.clone().into()), } } } + impl From<&opentelemetry_api::KeyValue> for KeyValue { + fn from(kv: &opentelemetry_api::KeyValue) -> Self { + KeyValue { + key: kv.key.to_string(), + value: Some(kv.value.clone().into()), + } + } + } + impl From for AggregationTemporality { fn from(temporality: Temporality) -> Self { match temporality { Temporality::Cumulative => AggregationTemporality::Cumulative, Temporality::Delta => AggregationTemporality::Delta, other => { - opentelemetry::global::handle_error(MetricsError::Other(format!( + opentelemetry_api::global::handle_error(MetricsError::Other(format!( "Unknown temporality {:?}, using default instead.", other ))); diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/mod.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/mod.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,5 +6,8 @@ #[cfg(feature = "traces")] pub mod traces; +#[cfg(feature = "logs")] +pub mod logs; + #[cfg(feature = "zpages")] pub mod tracez; diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/traces.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/traces.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/traces.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/traces.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,16 +1,14 @@ use crate::transform::common::to_nanos; -use opentelemetry::sdk::{self, export::trace::SpanData}; -use opentelemetry::trace::{Link, SpanId, SpanKind}; +use opentelemetry_api::trace::{Link, SpanId, SpanKind}; +use opentelemetry_sdk::export::trace::SpanData; -#[cfg(feature = "gen-tonic")] +#[cfg(feature = "gen-tonic-messages")] pub mod tonic { use super::*; use crate::proto::tonic::resource::v1::Resource; - use crate::proto::tonic::trace::v1::{ - span, status, InstrumentationLibrarySpans, ResourceSpans, Span, Status, - }; - use crate::transform::common::tonic::Attributes; - use opentelemetry::trace; + use crate::proto::tonic::trace::v1::{span, status, ResourceSpans, ScopeSpans, Span, Status}; + use crate::transform::common::tonic::{resource_attributes, Attributes}; + use opentelemetry_api::trace; impl From for span::SpanKind { fn from(span_kind: SpanKind) -> Self { @@ -59,14 +57,14 @@ .schema_url() .map(|url| url.to_string()) .unwrap_or_default(), - instrumentation_library_spans: vec![InstrumentationLibrarySpans { + scope_spans: vec![ScopeSpans { schema_url: source_span .instrumentation_lib .schema_url .as_ref() .map(ToString::to_string) .unwrap_or_default(), - instrumentation_library: Some(source_span.instrumentation_lib.into()), + scope: Some(source_span.instrumentation_lib.into()), spans: vec![Span { trace_id: source_span.span_context.trace_id().to_bytes().to_vec(), span_id: source_span.span_context.span_id().to_bytes().to_vec(), @@ -109,14 +107,6 @@ } } } - - fn resource_attributes(resource: &sdk::Resource) -> Attributes { - resource - .iter() - .map(|(k, v)| opentelemetry::KeyValue::new(k.clone(), v.clone())) - .collect::>() - .into() - } } #[cfg(feature = "gen-protoc")] @@ -124,11 +114,11 @@ use super::*; use crate::proto::grpcio::resource::Resource; use crate::proto::grpcio::trace::{ - InstrumentationLibrarySpans, ResourceSpans, Span, Span_Event, Span_Link, Span_SpanKind, - Status, Status_StatusCode, + ResourceSpans, ScopeSpans, Span, Span_Event, Span_Link, Span_SpanKind, Status, + Status_StatusCode, }; - use crate::transform::common::grpcio::Attributes; - use opentelemetry::trace; + use crate::transform::common::grpcio::{resource_attributes, Attributes}; + use opentelemetry_api::trace; use protobuf::{RepeatedField, SingularPtrField}; impl From for Span_SpanKind { @@ -174,75 +164,63 @@ dropped_attributes_count: 0, ..Default::default() })), - instrumentation_library_spans: RepeatedField::from_vec(vec![ - InstrumentationLibrarySpans { - schema_url: source_span - .instrumentation_lib - .schema_url - .as_ref() - .map(ToString::to_string) - .unwrap_or_default(), - instrumentation_library: protobuf::SingularPtrField::some( - source_span.instrumentation_lib.into(), + scope_spans: RepeatedField::from_vec(vec![ScopeSpans { + schema_url: source_span + .instrumentation_lib + .schema_url + .as_ref() + .map(ToString::to_string) + .unwrap_or_default(), + scope: protobuf::SingularPtrField::some(source_span.instrumentation_lib.into()), + spans: RepeatedField::from_vec(vec![Span { + trace_id: source_span.span_context.trace_id().to_bytes().to_vec(), + span_id: source_span.span_context.span_id().to_bytes().to_vec(), + trace_state: source_span.span_context.trace_state().header(), + parent_span_id: { + if source_span.parent_span_id != SpanId::INVALID { + source_span.parent_span_id.to_bytes().to_vec() + } else { + vec![] + } + }, + name: source_span.name.into_owned(), + kind: source_span.span_kind.into(), + start_time_unix_nano: to_nanos(source_span.start_time), + end_time_unix_nano: to_nanos(source_span.end_time), + dropped_attributes_count: source_span.attributes.dropped_count(), + attributes: Attributes::from(source_span.attributes).0, + dropped_events_count: source_span.events.dropped_count(), + events: RepeatedField::from_vec( + source_span + .events + .into_iter() + .map(|event| Span_Event { + time_unix_nano: to_nanos(event.timestamp), + name: event.name.into(), + attributes: Attributes::from(event.attributes).0, + dropped_attributes_count: event.dropped_attributes_count, + ..Default::default() + }) + .collect(), ), - spans: RepeatedField::from_vec(vec![Span { - trace_id: source_span.span_context.trace_id().to_bytes().to_vec(), - span_id: source_span.span_context.span_id().to_bytes().to_vec(), - trace_state: source_span.span_context.trace_state().header(), - parent_span_id: { - if source_span.parent_span_id != SpanId::INVALID { - source_span.parent_span_id.to_bytes().to_vec() - } else { - vec![] - } + dropped_links_count: source_span.links.dropped_count(), + links: RepeatedField::from_vec( + source_span.links.into_iter().map(Into::into).collect(), + ), + status: SingularPtrField::some(Status { + code: Status_StatusCode::from(&source_span.status), + message: match source_span.status { + trace::Status::Error { description } => description.to_string(), + _ => Default::default(), }, - name: source_span.name.into_owned(), - kind: source_span.span_kind.into(), - start_time_unix_nano: to_nanos(source_span.start_time), - end_time_unix_nano: to_nanos(source_span.end_time), - dropped_attributes_count: source_span.attributes.dropped_count(), - attributes: Attributes::from(source_span.attributes).0, - dropped_events_count: source_span.events.dropped_count(), - events: RepeatedField::from_vec( - source_span - .events - .into_iter() - .map(|event| Span_Event { - time_unix_nano: to_nanos(event.timestamp), - name: event.name.into(), - attributes: Attributes::from(event.attributes).0, - dropped_attributes_count: event.dropped_attributes_count, - ..Default::default() - }) - .collect(), - ), - dropped_links_count: source_span.links.dropped_count(), - links: RepeatedField::from_vec( - source_span.links.into_iter().map(Into::into).collect(), - ), - status: SingularPtrField::some(Status { - code: Status_StatusCode::from(&source_span.status), - message: match source_span.status { - trace::Status::Error { description } => description.to_string(), - _ => Default::default(), - }, - ..Default::default() - }), ..Default::default() - }]), + }), ..Default::default() - }, - ]), + }]), + ..Default::default() + }]), ..Default::default() } } } - - fn resource_attributes(resource: &sdk::Resource) -> Attributes { - resource - .iter() - .map(|(k, v)| opentelemetry::KeyValue::new(k.clone(), v.clone())) - .collect::>() - .into() - } } diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/tracez.rs temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/tracez.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/tracez.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/src/transform/tracez.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,7 @@ #[cfg(feature = "gen-protoc")] mod grpcio { - use opentelemetry::{ - sdk::export::trace::SpanData, - trace::{self, Event}, - }; + use opentelemetry_api::trace::{self, Event}; + use opentelemetry_sdk::export::trace::SpanData; use crate::transform::common::{grpcio::Attributes, to_nanos}; use crate::{ diff -Nru temporalio-1.3.0/vendor/opentelemetry-proto/tests/grpc_build.rs temporalio-1.3.0/vendor/opentelemetry-proto/tests/grpc_build.rs --- temporalio-1.3.0/vendor/opentelemetry-proto/tests/grpc_build.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-proto/tests/grpc_build.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,58 +1,115 @@ use protobuf_codegen::Customize; use protoc_grpcio::compile_grpc_protos; use std::collections::HashMap; -use std::path::PathBuf; +use std::path::Path; +use tempfile::TempDir; + +const GRPCIO_OUT_DIR: &str = "src/proto/grpcio"; +const GRPCIO_PROTO_FILES: &[&str] = &[ + "src/proto/opentelemetry-proto/opentelemetry/proto/common/v1/common.proto", + "src/proto/opentelemetry-proto/opentelemetry/proto/resource/v1/resource.proto", + "src/proto/opentelemetry-proto/opentelemetry/proto/trace/v1/trace.proto", + "src/proto/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service.proto", + "src/proto/opentelemetry-proto/opentelemetry/proto/metrics/v1/metrics.proto", + "src/proto/opentelemetry-proto/opentelemetry/proto/collector/metrics/v1/metrics_service.proto", + "src/proto/opentelemetry-proto/opentelemetry/proto/logs/v1/logs.proto", + "src/proto/opentelemetry-proto/opentelemetry/proto/collector/logs/v1/logs_service.proto", + "src/proto/tracez.proto", +]; +const GRPCIO_INCLUDES: &[&str] = &["src/proto/opentelemetry-proto/", "src/proto"]; + +const TONIC_OUT_DIR: &str = "src/proto/tonic"; +const TONIC_PROTO_FILES: &[&str] = &[ + "src/proto/opentelemetry-proto/opentelemetry/proto/common/v1/common.proto", + "src/proto/opentelemetry-proto/opentelemetry/proto/resource/v1/resource.proto", + "src/proto/opentelemetry-proto/opentelemetry/proto/trace/v1/trace.proto", + "src/proto/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service.proto", + "src/proto/opentelemetry-proto/opentelemetry/proto/metrics/v1/metrics.proto", + "src/proto/opentelemetry-proto/opentelemetry/proto/collector/metrics/v1/metrics_service.proto", + "src/proto/opentelemetry-proto/opentelemetry/proto/logs/v1/logs.proto", + "src/proto/opentelemetry-proto/opentelemetry/proto/collector/logs/v1/logs_service.proto", +]; +const TONIC_INCLUDES: &[&str] = &["src/proto/opentelemetry-proto"]; // This test helps to keep files generated and used by grpcio update to date. // If the test fails, it means the generated files has been changed. Please commit the change // and rerun test. It should pass at the second time. #[test] fn build_grpc() { - let before_build = build_content_map(); + let before_build = build_content_map(GRPCIO_OUT_DIR); + + let out_dir = TempDir::new().expect("failed to create temp dir to store the generated files"); + compile_grpc_protos( - &[ - "src/proto/opentelemetry-proto/opentelemetry/proto/common/v1/common.proto", - "src/proto/opentelemetry-proto/opentelemetry/proto/resource/v1/resource.proto", - "src/proto/opentelemetry-proto/opentelemetry/proto/trace/v1/trace.proto", - "src/proto/opentelemetry-proto/opentelemetry/proto/trace/v1/trace_config.proto", - "src/proto/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service.proto", - "src/proto/opentelemetry-proto/opentelemetry/proto/metrics/v1/metrics.proto", - "src/proto/opentelemetry-proto/opentelemetry/proto/collector/metrics/v1/metrics_service.proto", - "src/proto/tracez.proto" - ], - &["src/proto/opentelemetry-proto/", "src/proto"], - "src/proto/grpcio", + GRPCIO_PROTO_FILES, + GRPCIO_INCLUDES, + out_dir.path(), Some(Customize { expose_fields: Some(true), serde_derive: Some(true), ..Default::default() }), ) - .expect("Error generating protobuf"); - let after_build = build_content_map(); - // we cannot use assert_eq! here because it will print both maps when they don't match, which - // makes the error message unreadable. - // If you find the test passed locally but not in CI pipeline. Try update the dependency. It may - // be a new version of protobuf or other dependencies - // DO NOT use assert_eq! here as it will print all generated file when proto changes. - assert!( - before_build == after_build, - "generated file has changed, please commit the change file and rerun the test" - ); + .expect("error generating protobuf"); + let after_build = build_content_map(out_dir.path()); + ensure_files_are_same(before_build, after_build, GRPCIO_OUT_DIR); } -fn build_content_map() -> HashMap { - std::fs::read_dir("src/proto/grpcio") - .expect("cannot open dict of generated grpc files") - .into_iter() +#[test] +fn build_tonic() { + let before_build = build_content_map(TONIC_OUT_DIR); + + let out_dir = TempDir::new().expect("failed to create temp dir to store the generated files"); + + // build the generated files into OUT_DIR for now so we don't have to touch the src unless we have to + tonic_build::configure() + .build_server(true) + .build_client(true) + .server_mod_attribute(".", "#[cfg(feature = \"gen-tonic\")]") + .client_mod_attribute(".", "#[cfg(feature = \"gen-tonic\")]") + .out_dir(out_dir.path()) + .compile(TONIC_PROTO_FILES, TONIC_INCLUDES) + .expect("cannot compile protobuf using tonic"); + + let after_build = build_content_map(out_dir.path()); + ensure_files_are_same(before_build, after_build, TONIC_OUT_DIR); +} + +fn build_content_map(path: impl AsRef) -> HashMap { + std::fs::read_dir(path) + .expect("cannot open dictionary of generated files") .flatten() .map(|entry| { + let path = entry.path(); + let file_name = path + .file_name() + .expect("file name should always exist for generated files"); ( - entry.path(), - std::fs::read_to_string(entry.path()).unwrap_or_else(|_| { - panic!("cannot read from file {}", entry.path().to_string_lossy()) - }), + file_name.to_string_lossy().to_string(), + std::fs::read_to_string(path).expect("cannot read from existing generated file"), ) }) .collect() } + +fn ensure_files_are_same( + before_build: HashMap, + after_build: HashMap, + target_dir: &'static str, +) { + if after_build == before_build { + return; + } + + if std::env::var("CI").is_ok() { + panic!("generated file has changed but it's a CI environment, please rerun this test locally and commit the changes"); + } + + // if there is at least one changes we will just copy the whole directory over + for (file_name, content) in after_build { + std::fs::write(Path::new(target_dir).join(file_name), content) + .expect("cannot write to the proto generate file. If it's happening in CI env, please return the test locally and commit the change"); + } + + panic!("generated file has changed, please commit the change file and rerun the test"); +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/benches/batch_span_processor.rs temporalio-1.3.0/vendor/opentelemetry_sdk/benches/batch_span_processor.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/benches/batch_span_processor.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/benches/batch_span_processor.rs 2023-10-30 19:40:00.000000000 +0000 @@ -14,7 +14,6 @@ fn get_span_data() -> Vec { (0..200) - .into_iter() .map(|_| SpanData { span_context: SpanContext::new( TraceId::from_u128(12), diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/benches/context.rs temporalio-1.3.0/vendor/opentelemetry_sdk/benches/context.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/benches/context.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/benches/context.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,94 @@ +use std::fmt::Display; + +use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion}; +use futures_util::future::BoxFuture; +use opentelemetry_api::{ + trace::{TraceContextExt, Tracer, TracerProvider}, + Context, +}; +use opentelemetry_sdk::{ + export::trace::{ExportResult, SpanData, SpanExporter}, + trace as sdktrace, +}; +use pprof::criterion::{Output, PProfProfiler}; + +fn criterion_benchmark(c: &mut Criterion) { + benchmark_group(c, BenchmarkParameter::NoActiveSpan); + benchmark_group(c, BenchmarkParameter::WithActiveSpan); +} + +fn benchmark_group(c: &mut Criterion, p: BenchmarkParameter) { + let _guard = match p { + BenchmarkParameter::NoActiveSpan => None, + BenchmarkParameter::WithActiveSpan => { + let (provider, tracer) = tracer(); + let guard = Context::current_with_span(tracer.start("span")).attach(); + Some((guard, provider)) + } + }; + + let mut group = c.benchmark_group("context"); + + group.bench_function(BenchmarkId::new("baseline current()", p), |b| { + b.iter(|| { + black_box(Context::current()); + }) + }); + + group.bench_function(BenchmarkId::new("current().has_active_span()", p), |b| { + b.iter(|| { + black_box(Context::current().has_active_span()); + }) + }); + + group.bench_function( + BenchmarkId::new("map_current(|cx| cx.has_active_span())", p), + |b| { + b.iter(|| { + black_box(Context::map_current(|cx| cx.has_active_span())); + }) + }, + ); + + group.finish(); +} + +#[derive(Copy, Clone)] +enum BenchmarkParameter { + NoActiveSpan, + WithActiveSpan, +} + +impl Display for BenchmarkParameter { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match *self { + BenchmarkParameter::NoActiveSpan => write!(f, "no-active-span"), + BenchmarkParameter::WithActiveSpan => write!(f, "with-active-span"), + } + } +} + +fn tracer() -> (sdktrace::TracerProvider, sdktrace::Tracer) { + let provider = sdktrace::TracerProvider::builder() + .with_config(sdktrace::config().with_sampler(sdktrace::Sampler::AlwaysOn)) + .with_simple_exporter(NoopExporter) + .build(); + let tracer = provider.tracer(module_path!()); + (provider, tracer) +} + +#[derive(Debug)] +struct NoopExporter; + +impl SpanExporter for NoopExporter { + fn export(&mut self, _spans: Vec) -> BoxFuture<'static, ExportResult> { + Box::pin(futures_util::future::ready(Ok(()))) + } +} + +criterion_group! { + name = benches; + config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None))); + targets = criterion_benchmark +} +criterion_main!(benches); diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/benches/key_value_map.rs temporalio-1.3.0/vendor/opentelemetry_sdk/benches/key_value_map.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/benches/key_value_map.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/benches/key_value_map.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,208 @@ +use criterion::{ + black_box, criterion_group, criterion_main, BatchSize::SmallInput, BenchmarkId, Criterion, +}; +use indexmap::IndexMap; +use opentelemetry_api::{Key, KeyValue, Value}; +use opentelemetry_sdk::trace::EvictedHashMap; +use pprof::criterion::{Output, PProfProfiler}; +use std::iter::Iterator; + +fn criterion_benchmark(c: &mut Criterion) { + let cap = 32; + let input = [(2, 32, cap), (8, 32, cap), (32, 32, cap)]; + populate_benchmark(c, &input); + lookup_benchmark(c, &input); + populate_and_lookup_benchmark(c, &input); +} + +fn populate_benchmark(c: &mut Criterion, input: &[(usize, u32, usize)]) { + let mut group = c.benchmark_group("populate"); + for &(n, max, capacity) in input { + let parameter_string = format!("{n:02}/{max:02}/{capacity:02}"); + + group.bench_function( + BenchmarkId::new("EvictedHashMap", parameter_string.clone()), + |b| { + b.iter(|| populate_evicted_hashmap(n, max, capacity)); + }, + ); + group.bench_function( + BenchmarkId::new("IndexMap", parameter_string.clone()), + |b| { + b.iter(|| populate_indexmap(n, max, capacity)); + }, + ); + group.bench_function(BenchmarkId::new("TwoVecs", parameter_string.clone()), |b| { + b.iter(|| populate_twovecs(n, max, capacity)); + }); + group.bench_function(BenchmarkId::new("OneVec", parameter_string.clone()), |b| { + b.iter(|| populate_onevec(n, max, capacity)); + }); + } + group.finish(); +} + +fn lookup_benchmark(c: &mut Criterion, input: &[(usize, u32, usize)]) { + let mut group = c.benchmark_group("lookup"); + for &(n, max, capacity) in input { + let lookup_keys = &MAP_KEYS[n - 2..n]; + let parameter_string = format!("{n:02}/{max:02}/{capacity:02}"); + group.bench_function( + BenchmarkId::new("EvictedHashMap", parameter_string.clone()), + |b| { + b.iter_batched( + || populate_evicted_hashmap(n, max, capacity), + |map| lookup_evicted_hashmap(&map, lookup_keys), + SmallInput, + ); + }, + ); + group.bench_function( + BenchmarkId::new("IndexMap", parameter_string.clone()), + |b| { + b.iter_batched( + || populate_indexmap(n, max, capacity), + |map| lookup_indexmap(&map, lookup_keys), + SmallInput, + ); + }, + ); + group.bench_function(BenchmarkId::new("OneVec", parameter_string.clone()), |b| { + b.iter_batched( + || populate_onevec(n, max, capacity), + |vec| lookup_onevec(&vec, lookup_keys), + SmallInput, + ); + }); + group.bench_function(BenchmarkId::new("TwoVecs", parameter_string.clone()), |b| { + b.iter_batched( + || populate_twovecs(n, max, capacity), + |(keys, vals)| lookup_twovec(&keys, &vals, lookup_keys), + SmallInput, + ); + }); + } + group.finish(); +} + +fn populate_and_lookup_benchmark(c: &mut Criterion, input: &[(usize, u32, usize)]) { + let mut group = c.benchmark_group("populate_and_lookup"); + for &(n, max, capacity) in input { + let lookup_keys = &MAP_KEYS[n - 2..n]; + let parameter_string = format!("{n:02}/{max:02}/{capacity:02}"); + group.bench_function( + BenchmarkId::new("EvictedHashMap", parameter_string.clone()), + |b| { + b.iter(|| { + let map = populate_evicted_hashmap(n, max, capacity); + lookup_evicted_hashmap(&map, lookup_keys); + }); + }, + ); + group.bench_function( + BenchmarkId::new("IndexMap", parameter_string.clone()), + |b| { + b.iter(|| { + let map = populate_indexmap(n, max, capacity); + lookup_indexmap(&map, lookup_keys); + }); + }, + ); + group.bench_function(BenchmarkId::new("OneVec", parameter_string.clone()), |b| { + b.iter(|| { + let vec = populate_onevec(n, max, capacity); + lookup_onevec(&vec, lookup_keys); + }); + }); + group.bench_function(BenchmarkId::new("TwoVecs", parameter_string.clone()), |b| { + b.iter(|| { + let (keys, vals) = populate_twovecs(n, max, capacity); + lookup_twovec(&keys, &vals, lookup_keys); + }); + }); + } + group.finish(); +} + +fn populate_evicted_hashmap(n: usize, max: u32, capacity: usize) -> EvictedHashMap { + let mut map = EvictedHashMap::new(max, capacity); + for (idx, key) in MAP_KEYS.iter().enumerate().take(n) { + map.insert(KeyValue::new(*key, idx as i64)); + } + map +} + +fn lookup_evicted_hashmap(map: &EvictedHashMap, keys: &[&'static str]) { + for key in keys { + black_box(map.get(&Key::new(*key))); + } +} + +fn populate_indexmap(n: usize, max: u32, _capacity: usize) -> IndexMap { + let mut map = IndexMap::with_capacity(max as usize); + for (idx, key) in MAP_KEYS.iter().enumerate().take(n) { + map.insert(Key::new(*key), Value::I64(idx as i64)); + } + map +} + +fn lookup_indexmap(map: &IndexMap, keys: &[&'static str]) { + for key in keys { + black_box(map.get(&Key::new(*key))); + } +} + +fn populate_onevec(n: usize, max: u32, _capacity: usize) -> Vec<(Key, Value)> { + let mut tuples = Vec::with_capacity(max as usize); + for (idx, key) in MAP_KEYS.iter().enumerate().take(n) { + tuples.push((Key::new(*key), Value::I64(idx as i64))); + } + tuples +} + +fn lookup_onevec(vec: &[(Key, Value)], keys: &[&'static str]) { + for key in keys { + black_box( + vec.iter() + .position(|(k, _v)| *k == Key::new(*key)) + .map(|idx| vec.get(idx)), + ); + } +} + +fn populate_twovecs(n: usize, max: u32, _capacity: usize) -> (Vec, Vec) { + let mut keys = Vec::with_capacity(max as usize); + let mut vals = Vec::with_capacity(max as usize); + for (idx, key) in MAP_KEYS.iter().enumerate().take(n) { + keys.push(Key::new(*key)); + vals.push(Value::I64(idx as i64)); + } + (keys, vals) +} + +fn lookup_twovec(keys: &[Key], vals: &[Value], lookup_keys: &[&'static str]) { + for key in lookup_keys { + black_box( + keys.iter() + .position(|k| *k == Key::new(*key)) + .map(|idx| vals.get(idx)), + ); + } +} + +const MAP_KEYS: [&str; 64] = [ + "key.1", "key.2", "key.3", "key.4", "key.5", "key.6", "key.7", "key.8", "key.9", "key.10", + "key.11", "key.12", "key.13", "key.14", "key.15", "key.16", "key.17", "key.18", "key.19", + "key.20", "key.21", "key.22", "key.23", "key.24", "key.25", "key.26", "key.27", "key.28", + "key.29", "key.30", "key.31", "key.32", "key.33", "key.34", "key.35", "key.36", "key.37", + "key.38", "key.39", "key.40", "key.41", "key.42", "key.43", "key.44", "key.45", "key.46", + "key.47", "key.48", "key.49", "key.50", "key.51", "key.52", "key.53", "key.54", "key.55", + "key.56", "key.57", "key.58", "key.59", "key.60", "key.61", "key.62", "key.63", "key.64", +]; + +criterion_group! { + name = benches; + config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None))); + targets = criterion_benchmark +} +criterion_main!(benches); diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/benches/metric.rs temporalio-1.3.0/vendor/opentelemetry_sdk/benches/metric.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/benches/metric.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/benches/metric.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,109 +1,437 @@ -use criterion::{ - criterion_group, criterion_main, measurement::Measurement, BenchmarkGroup, BenchmarkId, - Criterion, +use rand::Rng; +use std::sync::{Arc, Weak}; + +use criterion::{criterion_group, criterion_main, Bencher, Criterion}; +use opentelemetry_api::{ + metrics::{Counter, Histogram, MeterProvider as _, Result}, + Context, Key, KeyValue, }; -use opentelemetry_api::{metrics::Meter, Context, InstrumentationLibrary, Key, KeyValue}; use opentelemetry_sdk::{ - export::metrics::{AggregatorSelector, Processor}, metrics::{ - accumulator, - aggregators::{self, Aggregator}, - sdk_api::{wrap_meter_core, Descriptor}, + data::{ResourceMetrics, Temporality}, + new_view, + reader::{AggregationSelector, MetricProducer, MetricReader, TemporalitySelector}, + Aggregation, Instrument, InstrumentKind, ManualReader, MeterProvider, Pipeline, Stream, + View, }, + Resource, }; -use rand::{rngs, Rng}; -use std::cell::RefCell; -use std::sync::Arc; - -pub fn counters(c: &mut Criterion) { - let meter = build_meter(); - - let mut g = c.benchmark_group("Counter"); - let cx = Context::new(); - - // unbound u64 - let counter = meter.u64_counter("u64.sum").init(); - benchmark_unbound_metric("u64", &mut g, |attributes| counter.add(&cx, 1, attributes)); - - // unbound f64 - let counter = meter.f64_counter("f64.sum").init(); - benchmark_unbound_metric("f64", &mut g, |attributes| { - counter.add(&cx, 1.0, attributes) - }); - - g.finish(); -} - -fn benchmark_unbound_metric( - name: &str, - g: &mut BenchmarkGroup, - f: F, -) { - for (num, kvs) in [ - ("1", build_kv(1)), - ("2", build_kv(2)), - ("4", build_kv(4)), - ("8", build_kv(8)), - ("16", build_kv(16)), - ] - .iter() - { - g.bench_with_input(BenchmarkId::new(name, num), kvs, |b, kvs| b.iter(|| f(kvs))); + +#[derive(Clone, Debug)] +struct SharedReader(Arc); + +impl TemporalitySelector for SharedReader { + fn temporality(&self, kind: InstrumentKind) -> Temporality { + self.0.temporality(kind) } } -fn build_kv(n: u8) -> Vec { - let mut res = Vec::new(); - - CURRENT_RNG.with(|rng| { - let mut rng = rng.borrow_mut(); - for _ in 0..n { - let k = Key::new(format!("k_{}", rng.gen::() * 1_000_000_000.0)); - res.push(k.string(format!("v_{}", rng.gen::() * 1_000_000_000.0))); - } - }); +impl AggregationSelector for SharedReader { + fn aggregation(&self, kind: InstrumentKind) -> Aggregation { + self.0.aggregation(kind) + } +} + +impl MetricReader for SharedReader { + fn register_pipeline(&self, pipeline: Weak) { + self.0.register_pipeline(pipeline) + } + + fn register_producer(&self, producer: Box) { + self.0.register_producer(producer) + } + + fn collect(&self, rm: &mut ResourceMetrics) -> Result<()> { + self.0.collect(rm) + } + + fn force_flush(&self, cx: &Context) -> Result<()> { + self.0.force_flush(cx) + } - res + fn shutdown(&self) -> Result<()> { + self.0.shutdown() + } } -thread_local! { - static CURRENT_RNG: RefCell = RefCell::new(rngs::ThreadRng::default()); + +/// Configure delta temporality for all [InstrumentKind] +/// +/// [Temporality::Delta] will be used for all instrument kinds if this +/// [TemporalitySelector] is used. +#[derive(Clone, Default, Debug)] +pub struct DeltaTemporalitySelector { + pub(crate) _private: (), } -#[derive(Debug, Default)] -struct BenchAggregatorSelector; +impl DeltaTemporalitySelector { + /// Create a new default temporality selector. + pub fn new() -> Self { + Self::default() + } +} -impl AggregatorSelector for BenchAggregatorSelector { - fn aggregator_for(&self, descriptor: &Descriptor) -> Option> { - match descriptor.name() { - name if name.ends_with(".disabled") => None, - name if name.ends_with(".sum") => Some(Arc::new(aggregators::sum())), - name if name.ends_with(".lastvalue") => Some(Arc::new(aggregators::last_value())), - name if name.ends_with(".histogram") => Some(Arc::new(aggregators::histogram(&[]))), - _ => panic!( - "Invalid instrument name for test AggregatorSelector: {}", - descriptor.name() - ), - } +impl TemporalitySelector for DeltaTemporalitySelector { + fn temporality(&self, _kind: InstrumentKind) -> Temporality { + Temporality::Delta } } -#[derive(Debug, Default)] -struct BenchProcessor { - aggregation_selector: BenchAggregatorSelector, +// * Summary * + +// rustc 1.68.0 (2c8cc3432 2023-03-06) +// cargo 1.68.0 (115f34552 2023-02-26), OS=Windows 11 Enterprise +// Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz 2.59 GHz +// 12 logical and 6 physical cores + +// Counter/AddNoAttrs time: [65.406 ns 65.535 ns 65.675 ns] +// Counter/AddNoAttrsDelta time: [65.553 ns 65.761 ns 65.981 ns] +// Counter/AddOneAttr time: [341.55 ns 344.40 ns 347.58 ns] +// Counter/AddOneAttrDelta time: [340.11 ns 342.42 ns 344.89 ns] +// Counter/AddThreeAttr time: [619.01 ns 624.16 ns 630.16 ns] +// Counter/AddThreeAttrDelta +// time: [606.71 ns 611.45 ns 616.66 ns] +// Counter/AddFiveAttr time: [3.7551 µs 3.7813 µs 3.8094 µs] +// Counter/AddFiveAttrDelta +// time: [3.7550 µs 3.7870 µs 3.8266 µs] +// Counter/AddTenAttr time: [4.7684 µs 4.7909 µs 4.8146 µs] +// Counter/AddTenAttrDelta time: [4.7682 µs 4.8152 µs 4.8722 µs] +// Counter/AddInvalidAttr time: [469.31 ns 472.97 ns 476.92 ns] +// Counter/AddSingleUseAttrs +// time: [749.15 ns 805.09 ns 868.03 ns] +// Counter/AddSingleUseInvalid +// time: [693.75 ns 702.65 ns 713.20 ns] +// Counter/AddSingleUseFiltered +// time: [677.00 ns 681.63 ns 686.88 ns] +// Counter/CollectOneAttr time: [659.29 ns 681.20 ns 708.04 ns] +// Counter/CollectTenAttrs time: [3.5048 µs 3.5384 µs 3.5777 µs] +// Histogram/Record0Attrs10bounds +// time: [75.790 ns 77.235 ns 78.825 ns] +// Histogram/Record3Attrs10bounds +// time: [580.88 ns 603.84 ns 628.71 ns] +// Histogram/Record5Attrs10bounds +// time: [3.8539 µs 3.8988 µs 3.9519 µs] +// Histogram/Record7Attrs10bounds +// time: [699.46 ns 720.17 ns 742.24 ns] +// Histogram/Record10Attrs10bounds +// time: [844.95 ns 861.92 ns 880.23 ns] +// Histogram/Record0Attrs49bounds +// time: [75.198 ns 77.081 ns 79.449 ns] +// Histogram/Record3Attrs49bounds +// time: [533.82 ns 540.44 ns 547.30 ns] +// Histogram/Record5Attrs49bounds +// time: [583.01 ns 588.27 ns 593.98 ns] +// Histogram/Record7Attrs49bounds +// time: [645.67 ns 652.03 ns 658.35 ns] +// Histogram/Record10Attrs49bounds +// time: [747.24 ns 755.42 ns 764.37 ns] +// Histogram/Record0Attrs50bounds +// time: [72.023 ns 72.218 ns 72.426 ns] +// Histogram/Record3Attrs50bounds +// time: [530.21 ns 534.23 ns 538.63 ns] +// Histogram/Record5Attrs50bounds +// time: [3.2934 µs 3.3069 µs 3.3228 µs] +// Histogram/Record7Attrs50bounds +// time: [633.88 ns 638.87 ns 644.52 ns] +// Histogram/Record10Attrs50bounds +// time: [759.69 ns 768.42 ns 778.12 ns] +// Histogram/Record0Attrs1000bounds +// time: [75.495 ns 75.942 ns 76.529 ns] +// Histogram/Record3Attrs1000bounds +// time: [542.06 ns 548.37 ns 555.31 ns] +// Histogram/Record5Attrs1000bounds +// time: [3.2935 µs 3.3058 µs 3.3215 µs] +// Histogram/Record7Attrs1000bounds +// time: [643.75 ns 649.05 ns 655.14 ns] +// Histogram/Record10Attrs1000bounds +// time: [726.87 ns 736.52 ns 747.09 ns] +fn bench_counter(view: Option>, temporality: &str) -> (SharedReader, Counter) { + let rdr = if temporality == "cumulative" { + SharedReader(Arc::new(ManualReader::builder().build())) + } else { + SharedReader(Arc::new( + ManualReader::builder() + .with_temporality_selector(DeltaTemporalitySelector::new()) + .build(), + )) + }; + let mut builder = MeterProvider::builder().with_reader(rdr.clone()); + if let Some(view) = view { + builder = builder.with_view(view); + } + let provider = builder.build(); + let cntr = provider.meter("test").u64_counter("hello").init(); + + (rdr, cntr) } -impl Processor for BenchProcessor { - fn aggregator_selector(&self) -> &dyn AggregatorSelector { - &self.aggregation_selector +fn counters(c: &mut Criterion) { + let (_, cntr) = bench_counter(None, "cumulative"); + let (_, cntr2) = bench_counter(None, "delta"); + let (_, cntr3) = bench_counter(None, "cumulative"); + + let mut group = c.benchmark_group("Counter"); + group.bench_function("AddNoAttrs", |b| b.iter(|| cntr.add(1, &[]))); + group.bench_function("AddNoAttrsDelta", |b| b.iter(|| cntr2.add(1, &[]))); + + group.bench_function("AddOneAttr", |b| { + b.iter(|| cntr.add(1, &[KeyValue::new("K", "V")])) + }); + group.bench_function("AddOneAttrDelta", |b| { + b.iter(|| cntr2.add(1, &[KeyValue::new("K1", "V1")])) + }); + group.bench_function("AddThreeAttr", |b| { + b.iter(|| { + cntr.add( + 1, + &[ + KeyValue::new("K2", "V2"), + KeyValue::new("K3", "V3"), + KeyValue::new("K4", "V4"), + ], + ) + }) + }); + group.bench_function("AddThreeAttrDelta", |b| { + b.iter(|| { + cntr2.add( + 1, + &[ + KeyValue::new("K2", "V2"), + KeyValue::new("K3", "V3"), + KeyValue::new("K4", "V4"), + ], + ) + }) + }); + group.bench_function("AddFiveAttr", |b| { + b.iter(|| { + cntr.add( + 1, + &[ + KeyValue::new("K5", "V5"), + KeyValue::new("K6", "V6"), + KeyValue::new("K7", "V7"), + KeyValue::new("K8", "V8"), + KeyValue::new("K9", "V9"), + ], + ) + }) + }); + group.bench_function("AddFiveAttrDelta", |b| { + b.iter(|| { + cntr2.add( + 1, + &[ + KeyValue::new("K5", "V5"), + KeyValue::new("K6", "V6"), + KeyValue::new("K7", "V7"), + KeyValue::new("K8", "V8"), + KeyValue::new("K9", "V9"), + ], + ) + }) + }); + group.bench_function("AddTenAttr", |b| { + b.iter(|| { + cntr.add( + 1, + &[ + KeyValue::new("K10", "V10"), + KeyValue::new("K11", "V11"), + KeyValue::new("K12", "V12"), + KeyValue::new("K13", "V13"), + KeyValue::new("K14", "V14"), + KeyValue::new("K15", "V15"), + KeyValue::new("K16", "V16"), + KeyValue::new("K17", "V17"), + KeyValue::new("K18", "V18"), + KeyValue::new("K19", "V19"), + ], + ) + }) + }); + group.bench_function("AddTenAttrDelta", |b| { + b.iter(|| { + cntr2.add( + 1, + &[ + KeyValue::new("K10", "V10"), + KeyValue::new("K11", "V11"), + KeyValue::new("K12", "V12"), + KeyValue::new("K13", "V13"), + KeyValue::new("K14", "V14"), + KeyValue::new("K15", "V15"), + KeyValue::new("K16", "V16"), + KeyValue::new("K17", "V17"), + KeyValue::new("K18", "V18"), + KeyValue::new("K19", "V19"), + ], + ) + }) + }); + + const MAX_DATA_POINTS: i64 = 2000; + let mut max_attributes: Vec = Vec::new(); + + for i in 0..MAX_DATA_POINTS - 2 { + max_attributes.push(KeyValue::new(i.to_string(), i)) + } + + group.bench_function("AddOneTillMaxAttr", |b| { + b.iter(|| cntr3.add(1, &max_attributes)) + }); + + for i in MAX_DATA_POINTS..MAX_DATA_POINTS * 2 { + max_attributes.push(KeyValue::new(i.to_string(), i)) + } + + group.bench_function("AddMaxAttr", |b| b.iter(|| cntr3.add(1, &max_attributes))); + + group.bench_function("AddInvalidAttr", |b| { + b.iter(|| cntr.add(1, &[KeyValue::new("", "V"), KeyValue::new("K", "V")])) + }); + group.bench_function("AddSingleUseAttrs", |b| { + let mut v = 0; + b.iter(|| { + cntr.add(1, &[KeyValue::new("K", v)]); + v += 1; + }) + }); + group.bench_function("AddSingleUseInvalid", |b| { + let mut v = 0; + b.iter(|| { + cntr.add(1, &[KeyValue::new("", v), KeyValue::new("K", v)]); + v += 1; + }) + }); + + let (_, cntr) = bench_counter( + Some( + new_view( + Instrument::new().name("*"), + Stream::new().allowed_attribute_keys([Key::new("K")]), + ) + .unwrap(), + ), + "cumulative", + ); + + group.bench_function("AddSingleUseFiltered", |b| { + let mut v = 0; + b.iter(|| { + cntr.add(1, &[KeyValue::new("L", v), KeyValue::new("K", v)]); + v += 1; + }) + }); + + let (rdr, cntr) = bench_counter(None, "cumulative"); + let mut rm = ResourceMetrics { + resource: Resource::empty(), + scope_metrics: Vec::new(), + }; + + group.bench_function("CollectOneAttr", |b| { + let mut v = 0; + b.iter(|| { + cntr.add(1, &[KeyValue::new("K", v)]); + let _ = rdr.collect(&mut rm); + v += 1; + }) + }); + + group.bench_function("CollectTenAttrs", |b| { + let mut v = 0; + b.iter(|| { + for i in 0..10 { + cntr.add(1, &[KeyValue::new("K", i)]); + } + let _ = rdr.collect(&mut rm); + v += 1; + }) + }); +} + +const MAX_BOUND: usize = 100000; + +fn bench_histogram(bound_count: usize) -> (SharedReader, Histogram) { + let mut bounds = vec![0; bound_count]; + #[allow(clippy::needless_range_loop)] + for i in 0..bounds.len() { + bounds[i] = i * MAX_BOUND / bound_count + } + let view = Some( + new_view( + Instrument::new().name("histogram_*"), + Stream::new().aggregation(Aggregation::ExplicitBucketHistogram { + boundaries: bounds.iter().map(|&x| x as f64).collect(), + record_min_max: true, + }), + ) + .unwrap(), + ); + + let r = SharedReader(Arc::new(ManualReader::default())); + let mut builder = MeterProvider::builder().with_reader(r.clone()); + if let Some(view) = view { + builder = builder.with_view(view); } + let mtr = builder.build().meter("test_meter"); + let hist = mtr + .i64_histogram(format!("histogram_{}", bound_count)) + .init(); + + (r, hist) } -fn build_meter() -> Meter { - let processor = Arc::new(BenchProcessor::default()); - let core = accumulator(processor); - let library = InstrumentationLibrary::new("benches", None, None); - wrap_meter_core(Arc::new(core), library) +fn histograms(c: &mut Criterion) { + let mut group = c.benchmark_group("Histogram"); + let mut rng = rand::thread_rng(); + + for bound_size in [10, 49, 50, 1000].iter() { + let (_, hist) = bench_histogram(*bound_size); + for attr_size in [0, 3, 5, 7, 10].iter() { + let mut attributes: Vec = Vec::new(); + for i in 0..*attr_size { + attributes.push(KeyValue::new( + format!("K,{},{}", bound_size, attr_size), + format!("V,{},{},{}", bound_size, attr_size, i), + )) + } + let value: i64 = rng.gen_range(0..MAX_BOUND).try_into().unwrap(); + group.bench_function( + format!("Record{}Attrs{}bounds", attr_size, bound_size), + |b| b.iter(|| hist.record(value, &attributes)), + ); + } + } + group.bench_function("CollectOne", |b| benchmark_collect_histogram(b, 1)); + group.bench_function("CollectFive", |b| benchmark_collect_histogram(b, 5)); + group.bench_function("CollectTen", |b| benchmark_collect_histogram(b, 10)); + group.bench_function("CollectTwentyFive", |b| benchmark_collect_histogram(b, 25)); +} + +fn benchmark_collect_histogram(b: &mut Bencher, n: usize) { + let r = SharedReader(Arc::new(ManualReader::default())); + let mtr = MeterProvider::builder() + .with_reader(r.clone()) + .build() + .meter("sdk/metric/bench/histogram"); + + for i in 0..n { + let h = mtr.i64_histogram(format!("fake_data_{i}")).init(); + h.record(1, &[]); + } + + let mut rm = ResourceMetrics { + resource: Resource::empty(), + scope_metrics: Vec::new(), + }; + + b.iter(|| { + let _ = r.collect(&mut rm); + assert_eq!(rm.scope_metrics[0].metrics.len(), n); + }) } -criterion_group!(benches, counters); +criterion_group!(benches, counters, histograms); criterion_main!(benches); diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/benches/span_builder.rs temporalio-1.3.0/vendor/opentelemetry_sdk/benches/span_builder.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/benches/span_builder.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/benches/span_builder.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,107 @@ +use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion}; +use futures_util::future::BoxFuture; +use opentelemetry_api::{ + trace::{OrderMap, Span, Tracer, TracerProvider}, + KeyValue, +}; +use opentelemetry_sdk::{ + export::trace::{ExportResult, SpanData, SpanExporter}, + trace as sdktrace, +}; +use pprof::criterion::{Output, PProfProfiler}; + +fn criterion_benchmark(c: &mut Criterion) { + span_builder_benchmark_group(c) +} + +fn span_builder_benchmark_group(c: &mut Criterion) { + let mut group = c.benchmark_group("span_builder"); + group.bench_function("simplest", |b| { + let (_provider, tracer) = not_sampled_provider(); + b.iter(|| { + let mut span = tracer.span_builder("span").start(&tracer); + span.end(); + }) + }); + group.bench_function(BenchmarkId::new("with_attributes", "1"), |b| { + let (_provider, tracer) = not_sampled_provider(); + b.iter(|| { + let mut span = tracer + .span_builder("span") + .with_attributes([KeyValue::new(MAP_KEYS[0], "value")]) + .start(&tracer); + span.end(); + }) + }); + group.bench_function(BenchmarkId::new("with_attributes", "4"), |b| { + let (_provider, tracer) = not_sampled_provider(); + b.iter(|| { + let mut span = tracer + .span_builder("span") + .with_attributes([ + KeyValue::new(MAP_KEYS[0], "value"), + KeyValue::new(MAP_KEYS[1], "value"), + KeyValue::new(MAP_KEYS[2], "value"), + KeyValue::new(MAP_KEYS[3], "value"), + ]) + .start(&tracer); + span.end(); + }) + }); + group.bench_function(BenchmarkId::new("with_attributes_map", "1"), |b| { + let (_provider, tracer) = not_sampled_provider(); + b.iter(|| { + let mut span = tracer + .span_builder("span") + .with_attributes_map(OrderMap::from_iter([KeyValue::new(MAP_KEYS[0], "value")])) + .start(&tracer); + span.end(); + }) + }); + group.bench_function(BenchmarkId::new("with_attributes_map", "4"), |b| { + let (_provider, tracer) = not_sampled_provider(); + b.iter(|| { + let mut span = tracer + .span_builder("span") + .with_attributes_map(OrderMap::from_iter([KeyValue::new(MAP_KEYS[0], "value")])) + .start(&tracer); + span.end(); + }) + }); + group.finish(); +} + +fn not_sampled_provider() -> (sdktrace::TracerProvider, sdktrace::Tracer) { + let provider = sdktrace::TracerProvider::builder() + .with_config(sdktrace::config().with_sampler(sdktrace::Sampler::AlwaysOff)) + .with_simple_exporter(NoopExporter) + .build(); + let tracer = provider.tracer("not-sampled"); + (provider, tracer) +} + +#[derive(Debug)] +struct NoopExporter; + +impl SpanExporter for NoopExporter { + fn export(&mut self, _spans: Vec) -> BoxFuture<'static, ExportResult> { + Box::pin(futures_util::future::ready(Ok(()))) + } +} + +const MAP_KEYS: [&str; 64] = [ + "key.1", "key.2", "key.3", "key.4", "key.5", "key.6", "key.7", "key.8", "key.9", "key.10", + "key.11", "key.12", "key.13", "key.14", "key.15", "key.16", "key.17", "key.18", "key.19", + "key.20", "key.21", "key.22", "key.23", "key.24", "key.25", "key.26", "key.27", "key.28", + "key.29", "key.30", "key.31", "key.32", "key.33", "key.34", "key.35", "key.36", "key.37", + "key.38", "key.39", "key.40", "key.41", "key.42", "key.43", "key.44", "key.45", "key.46", + "key.47", "key.48", "key.49", "key.50", "key.51", "key.52", "key.53", "key.54", "key.55", + "key.56", "key.57", "key.58", "key.59", "key.60", "key.61", "key.62", "key.63", "key.64", +]; + +criterion_group! { + name = benches; + config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None))); + targets = criterion_benchmark +} +criterion_main!(benches); diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/benches/trace.rs temporalio-1.3.0/vendor/opentelemetry_sdk/benches/trace.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/benches/trace.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/benches/trace.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,29 +2,15 @@ use futures_util::future::BoxFuture; use opentelemetry_api::{ trace::{Span, Tracer, TracerProvider}, - Key, KeyValue, + Key, }; use opentelemetry_sdk::{ export::trace::{ExportResult, SpanData, SpanExporter}, trace as sdktrace, }; +use pprof::criterion::{Output, PProfProfiler}; fn criterion_benchmark(c: &mut Criterion) { - let mut group = c.benchmark_group("EvictedHashMap"); - group.bench_function("insert 1", |b| { - b.iter(|| insert_keys(sdktrace::EvictedHashMap::new(32, 1), 1)) - }); - group.bench_function("insert 5", |b| { - b.iter(|| insert_keys(sdktrace::EvictedHashMap::new(32, 5), 5)) - }); - group.bench_function("insert 10", |b| { - b.iter(|| insert_keys(sdktrace::EvictedHashMap::new(32, 10), 10)) - }); - group.bench_function("insert 20", |b| { - b.iter(|| insert_keys(sdktrace::EvictedHashMap::new(32, 20), 20)) - }); - group.finish(); - trace_benchmark_group(c, "start-end-span", |tracer| tracer.start("foo").end()); trace_benchmark_group(c, "start-end-span-4-attrs", |tracer| { @@ -69,35 +55,6 @@ }); } -const MAP_KEYS: [Key; 20] = [ - Key::from_static_str("key1"), - Key::from_static_str("key2"), - Key::from_static_str("key3"), - Key::from_static_str("key4"), - Key::from_static_str("key5"), - Key::from_static_str("key6"), - Key::from_static_str("key7"), - Key::from_static_str("key8"), - Key::from_static_str("key9"), - Key::from_static_str("key10"), - Key::from_static_str("key11"), - Key::from_static_str("key12"), - Key::from_static_str("key13"), - Key::from_static_str("key14"), - Key::from_static_str("key15"), - Key::from_static_str("key16"), - Key::from_static_str("key17"), - Key::from_static_str("key18"), - Key::from_static_str("key19"), - Key::from_static_str("key20"), -]; - -fn insert_keys(mut map: sdktrace::EvictedHashMap, n: usize) { - for (idx, key) in MAP_KEYS.iter().enumerate().take(n) { - map.insert(KeyValue::new(key.clone(), idx as i64)); - } -} - #[derive(Debug)] struct VoidExporter; @@ -132,5 +89,9 @@ group.finish(); } -criterion_group!(benches, criterion_benchmark); +criterion_group! { + name = benches; + config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None))); + targets = criterion_benchmark +} criterion_main!(benches); diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/.cargo-checksum.json temporalio-1.3.0/vendor/opentelemetry_sdk/.cargo-checksum.json --- temporalio-1.3.0/vendor/opentelemetry_sdk/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"ae427b95b54f7f5c6a6fd4aae16baf8f035cf9a2ce336836d9bada7d52d7e220","CODEOWNERS":"abc35dda6643aed84b16084b9dccfee77929c299d60d21b590bd5c8c3b54e508","Cargo.toml":"7f9fa5eaa3ea534ac3e3117f68fc2a7267749cca7fa11b4abb2df00ee0a5dcd4","LICENSE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","README.md":"2e2a29bc5f884f3823f4dba035577d254634298ab95a2802c602d6986f1d9fd8","benches/batch_span_processor.rs":"f763cf674347956627a4152b93d599dd71f0f8ad97824a3fbf9bc0e830f9d5d6","benches/metric.rs":"feb303fff36d9700fc931daa6b4357d8ecc917126a9165ac123e56cba5226abd","benches/trace.rs":"8411e1b16a51280f1584e16169047434433212db5f13f84423708224fa4f62ba","src/export/metrics/aggregation/mod.rs":"66ad4757d2f241e9db952b718d97650ec3989ffcee676de3c23b3200788c9069","src/export/metrics/aggregation/temporality.rs":"575af63683848aa985eaa94f754ff8b5b9065f5595baacaf289af4ab3879cbf8","src/export/metrics/mod.rs":"871445dc65446542f089d1ec6485c078c4e75ac4af16391d8d391d9dbca597b1","src/export/metrics/stdout.rs":"b59021b3965dce393fe33cd49e8219e70c50b0f1cfb4d9e1e7c7458676806bf2","src/export/mod.rs":"4445c51c4890cbd35fe9e940767b0ad4e5062a044793c71b8783d4696371ba6c","src/export/trace/mod.rs":"46318f4adab300fef121e940aa77461acfde24f9ddbec0aabacb02f982df31ea","src/export/trace/stdout.rs":"092ba4fcff0828d814a8252ceb2e668ff0769fff2b5c385c8ae99aecae2c574f","src/instrumentation.rs":"2d2e1f299f847e654e56900a8b162a476f453b88636b222d79c9730ca1a4ea81","src/lib.rs":"bff59e0fb32772b72dcfb66c90912f3d68c71cb4395a2fde1dc3cf8acfd77253","src/metrics/aggregators/ddsketch.rs":"f67ac1ca40cec2ae05482a6069d061aea6077c277b6d876e71db09ff223d4975","src/metrics/aggregators/histogram.rs":"f61ea030d5c4c0fb971729d076c008c8300e37bd7930870c4a0039868c5eb92a","src/metrics/aggregators/last_value.rs":"7e89765a23c90f23ad060fac01b110fc878dc32220833f0ddc1629c3bb2acae1","src/metrics/aggregators/mod.rs":"97f0eac577e8768db5405493c5f8e34db5efab125c97a003d95f0c2021cec90a","src/metrics/aggregators/sum.rs":"b4a473545b801fc3034d165dc7fc078d745884ab839319a9e76fd9f5c1d64e3e","src/metrics/controllers/basic.rs":"581b9729df6b9d78c176560712263d1c9752925f5d3a3565f7db2ed14d59af4c","src/metrics/controllers/mod.rs":"52437be41bf39220354328becc2d2d97e36ec7b01125813af14b861b89166d09","src/metrics/controllers/push.rs":"7fafe8d18e2254ec6277de70c4518ade1cbb93662ae84ef0ffae865f8cc3dd2a","src/metrics/mod.rs":"26fccc7f21079d177dfe8075ef3d269b510627069cd18a7b00963a9c05db2fad","src/metrics/processors/basic.rs":"ea4ac4fbc53e7da1ce0aba9e2719e81adb2e144ec28a4f72098dd2a81f80fc23","src/metrics/processors/mod.rs":"0bc0b468dd3b9c45983d2dff872a3e68c8b927bc9f0a8810ab56e8c3470515a1","src/metrics/registry.rs":"6581e6efb2e228883583c0e302f2688a48b9280978431d9d97ea880cbeddd1fc","src/metrics/sdk_api/async_instrument.rs":"fa6dbcee3bc0d3372fbdfb0005696534074b2c20982d18a00a8f5c117f3ffcf8","src/metrics/sdk_api/descriptor.rs":"2aed27c38cd844b1c6dafed413c28a16808d65242a40a7c60e72d29dc9fe9f92","src/metrics/sdk_api/instrument_kind.rs":"2832b4d92e27d3384ebec215af9161491e914462219cae29a4aa4e8cab43dd51","src/metrics/sdk_api/mod.rs":"01070720a64cc5fec3041e11ddad9924510d4332e4b900a7ea96a0ecbb386961","src/metrics/sdk_api/number.rs":"e52a9748a159feee3aca965ae9639425b487e111070fb4436d1eb43578c9af38","src/metrics/sdk_api/sync_instrument.rs":"552af47a8c0f0533b4e843c19929c0cec34aae60bbe966dd0c94a07c27779ef0","src/metrics/sdk_api/wrap.rs":"a713ef5f893af6e921ee67980d67ee0e811118f983393eecef9559970cdb43f3","src/metrics/selectors/mod.rs":"7ba22659cd0a4cc8a64f277a7611b6db4c238cbd67e27b220f18605250dcb811","src/metrics/selectors/simple.rs":"b6213ab79dce2461634d6bc81a897a9b960fc9bfdc488f25d497fbff63032218","src/propagation/baggage.rs":"b4c70e70dfdb2f167c3d516a412fb4ff5535d1c7b22cfb749d8edfd8b4c9cdb8","src/propagation/composite.rs":"2a490160c1805ffb2a40005ca91129e8b1233aa800e94893a9141c117bc84604","src/propagation/mod.rs":"2b7ae5c0545d53216352d6ab27af47deae633608374d15ee7fc9fbededca7688","src/propagation/trace_context.rs":"5d03f8ddb8d824e448fcf39c1e8100bd6c9bfdbda8f7f4531f7110800b00e1d4","src/resource/env.rs":"5e6b9acb2f74f88e718a8bc896a8a6ec0b25f298bcec679024f1684f9b8999ba","src/resource/mod.rs":"67c88d4ce34c6c341fdd919c964134930ce415c353b16428646f8d9fb336f39f","src/resource/os.rs":"1feafedf205d0414f99433fda5e735ec6c40d98bef4bdfe2e7b9154818474255","src/resource/process.rs":"0c961699c8c2ea8e1f704fba1b7addf4e59e3113d4f3e464d48c88e26898858e","src/runtime.rs":"349d3c6afc35d802644f94738ba869fb8812c6a7df177aa3537c5e2d649823f4","src/testing/metric.rs":"840f60ba4c31bdc83b4764d1033eb41c23b134377a490025e254fb0f10f7d408","src/testing/mod.rs":"32a0ae5096880522e5802ae30cc18cd354a9f111ddab9aecfbaff175a55058d6","src/testing/trace.rs":"43c4f80e9ff0634e02829fdd093fafcb44ce3cdc2693a6c2311bc31856bb87b2","src/trace/config.rs":"156700ef70775132d23c3d7fde4fb98ac98545238b83d8d0355ba53b0d18890b","src/trace/evicted_hash_map.rs":"ad922b228135af375436c70f69c806eefc1917a9a7658479d73c9b5a803ef3d7","src/trace/evicted_queue.rs":"b5b887c46431bbe41eb35df2af32c8033ab51c2ebe86100be93622a82172933c","src/trace/id_generator/aws.rs":"483fb5a6987994ef80a6ffce697b912eeba791825872ef78597fbb56db666cce","src/trace/id_generator/mod.rs":"a894c93c5fdd1dd9e7ce4909889ed4e979cc5b64ee671ce5007cf74d35851aed","src/trace/mod.rs":"0149f7cd3391601c0f664fbb344cba87e5d0687acc4a83b17d51519ba603dbb7","src/trace/provider.rs":"3526bae5d868050c04958cb9f014627344d222f474936606ec265c35d9d6f0f3","src/trace/runtime.rs":"e9b9c0d38fa52be84e7f87236e96918f16855e6d0a1fc68bb459cd2325c0c707","src/trace/sampler.rs":"cd3674f1f603679cb1316696475b31ea77b3959c810714621f0004733120466c","src/trace/sampler/jaeger_remote/mod.rs":"1ce10ff2dc94b5f77b957e10d5cd236a9a2aca7cb9eae43357b1e7f6a939d087","src/trace/sampler/jaeger_remote/rate_limit.rs":"2d3f194212b59247d9e850d72ef77dcd93f3a868b48c4690e14f13a96da8fc77","src/trace/sampler/jaeger_remote/remote.rs":"48bffe52893439647d82689cab21a4e19244639ae63e7b958dafd22d348916f4","src/trace/sampler/jaeger_remote/sampler.rs":"448efea6a2d2c246af63a25415a6dab6b4b6fdd17f7c00adc9a1864d04b68414","src/trace/sampler/jaeger_remote/sampling_strategy.rs":"22b8ffd478d1ef3d5590802a30b0bcc8428d9d91d4e5f56d7c8e7bfdb6a351d1","src/trace/span.rs":"6ceb1247d46b31b05a6eeb3725886ac7f83960ab92db2a573862e079eb42fdd4","src/trace/span_limit.rs":"c02211f141f2518f223e4648695a31a6896d4ddaf408955de344ca7572ccadef","src/trace/span_processor.rs":"30f2510b406588bbf46e6b1d3f4c756c67871795bf2ad294df264dfb1ff6e9dd","src/trace/tracer.rs":"b87e6688aed18a0f5478c359790afcd49bf6b0906e4e46b28b20774e3f1cb991","src/util.rs":"63c41e142a24fb7c04b8a7a1ebc546a331ce3f7515e9dd78932c7c7edc8f00c7"},"package":"1ca41c4933371b61c2a2f214bf16931499af4ec90543604ec828f7a625c09113"} \ No newline at end of file +{"files":{"CHANGELOG.md":"15f07d42929dfcadce7f00931a3e93b7e13ec7ae4693c8c4aea48a15b5fe5f1f","CODEOWNERS":"abc35dda6643aed84b16084b9dccfee77929c299d60d21b590bd5c8c3b54e508","Cargo.toml":"b5b06633216fa087a0493d9b2bb456d7e73f63e789a9778b227cb504016cd714","LICENSE":"208a3f5bae3355bd4f3f45626d1ea4518b253d618ee2896983436075c4375098","README.md":"7e1b8a84968874d31c471b02724284aaf004e82ce57e50fd2e36d0279337b4a3","benches/batch_span_processor.rs":"4da537267d8412c4e6e72e0f8b5706b79aedabdcf174beeefeb5aa751043a2f5","benches/context.rs":"4c8fdd38939c020e14007dac5ab9fe720d9646a33ad311ee2984c50650c6a5f8","benches/key_value_map.rs":"8d8b17b37ec86de39950c1a915b3aa4a307deeceaccd7aa6f7399ac7f4c67c0f","benches/metric.rs":"dbe58bd0d54cca4f099d15a3f0293507607e75d50c30c6df57a1b4b8f327394e","benches/span_builder.rs":"96f6fa7d5e6ba2203b8ac6f9e5edb71254e52e0846b8117c9065ecdce753f91a","benches/trace.rs":"6748b13da2b78949d40fd89980180e8d95690be82e2ef72b649e6ca59b44cf53","src/attributes/mod.rs":"018cb10cbd2b9df0d3f03ac3397415bf76458e71c36b803788909835442ab3b7","src/attributes/set.rs":"70f6d1c4ccc5b2e496427ee1bcdb11af98a59a6fae8ee27b22e5ca7190e9523a","src/export/logs/mod.rs":"1f670484da3f0c16e9ba4bdb61b0b4c98937891a63e0948ef713ef9023bb8324","src/export/mod.rs":"585e009baa56c36517fb6b466d4faef2948e5554144c999ab522ce8554475831","src/export/trace.rs":"5d0ea31a3f3b670d6cbc8068c3d7823ea19b72b8e830520915bb69e2e8b4106d","src/instrumentation.rs":"e516d89347c0224834527490be0c159b5d6e8ed715dbd133ed21661f9c88d36a","src/lib.rs":"89de961209daf98c5d9fd382bde1291831b980ee23999f7e1b2e0a2328d83ef1","src/logs/config.rs":"09578dce9525187b45d02fbe1ed202c04417d93058ad66985de85b3fb6f7ee48","src/logs/log_emitter.rs":"357e5047cda30a20de9f37a6b685336132fe6ff41e3bb7c3dfd8d627a2e991f6","src/logs/log_processor.rs":"b6522b1a09cdfaf0a26958e210b0f12c8e9e4516c60956a72ae0a33ebf965e97","src/logs/mod.rs":"6ea0532942b91ad5de38ce2139e7e1ebd50ba8f3e7a4050159a93cd0ab9a0742","src/metrics/aggregation.rs":"1628ebffdd067c84e1f8812845421e2eb072ecdb4a2e2191cfa98f16172bce99","src/metrics/data/mod.rs":"badd3162c507accc322af3ddbd3ec5de4158b2a814ead0a93bde01f3fa3f4051","src/metrics/data/temporality.rs":"51f62b4df37f0b03c1e19130a649d6e5147decaa7123e8c282d53e67babdab45","src/metrics/exporter.rs":"895bf6d96e68de89f62174036baf1fec8949568a5268c12739def25c01b643e2","src/metrics/instrument.rs":"562a257b8d09ab86c51cda2f9307c285bb9c2a01cd805e66f0b65bbe0e2f660f","src/metrics/internal/aggregator.rs":"a05e94b799f4823b2a199c994e32c99b1183946beea6f8fd0585d71ba8255aad","src/metrics/internal/filter.rs":"b6c40a11f4198aef72d46d6697f10a6bc02c9fbbabe25dd227d20ce8e1d5cdcc","src/metrics/internal/histogram.rs":"c16726d0218a027ef9e5b66329e7866cec42a271e73c513726faaace6194a188","src/metrics/internal/last_value.rs":"c9571b502d3ca92b74f33421d556c32cfdbb665369e297fddce13a1f80d062be","src/metrics/internal/mod.rs":"c16e1511caa2b88c0f7198217bb28c12f2ae88773d4cdad1fd8000ca0d716414","src/metrics/internal/sum.rs":"5c9fb584b0ce50d259882244e53fa017603b24965f02058186f8f141a1d59996","src/metrics/manual_reader.rs":"c63b6d29639f0f3c3238eff1b92ce377b8ca9e1ec0a2f715275b88112fed9756","src/metrics/meter.rs":"dd2afe86e4d6264b1cfbb41f2dcad94700b5e108671d7803766d744b605556f1","src/metrics/meter_provider.rs":"e7dc69a7b6a40c3a3e27c7589ef992168df70e83823c2b18c24ae49ac3217149","src/metrics/mod.rs":"165dced90f18100587547b5878f8eb46db9d9d9072f82efe27bf2fc296fc901c","src/metrics/periodic_reader.rs":"1ed94a73c21ae82f80cb88beed5bd0e9c2fe39df4875c299fefa48bea8ccaedb","src/metrics/pipeline.rs":"41d6717b187fd2a5ffcc53c312dc6b313d2b59975395c51fb19e844299e24cd5","src/metrics/reader.rs":"6c4e867353451fc6f66878cc6dc9c47a05e6f98c7e2ed1412e7af96f4279b761","src/metrics/view.rs":"50bca5775b4a9a16048dc95d73f0db43e1675c9d9b371b2313b57945e1b5a442","src/propagation/baggage.rs":"b4c70e70dfdb2f167c3d516a412fb4ff5535d1c7b22cfb749d8edfd8b4c9cdb8","src/propagation/composite.rs":"2a490160c1805ffb2a40005ca91129e8b1233aa800e94893a9141c117bc84604","src/propagation/mod.rs":"2b7ae5c0545d53216352d6ab27af47deae633608374d15ee7fc9fbededca7688","src/propagation/trace_context.rs":"9ce35c38e8f3e86c9eb00423e99ef58ceaebb5a1d762dc052e092935dc181a60","src/resource/env.rs":"891bc07798eeefee9bccb9f25862b59445b1648a6780218edbc1969e86925777","src/resource/mod.rs":"0490e9a4e3783e04ce35e41809bc258bee3ab10f1cb25b3a1b9afc78dc2746ff","src/resource/os.rs":"1feafedf205d0414f99433fda5e735ec6c40d98bef4bdfe2e7b9154818474255","src/resource/process.rs":"0c961699c8c2ea8e1f704fba1b7addf4e59e3113d4f3e464d48c88e26898858e","src/resource/telemetry.rs":"35c74794be3f16877668f2048e40d6334baf6bbc416a4a045cef17c747442605","src/runtime.rs":"5d91457bcdbd37fb4bf501aa648bf660ede9c6a1ef23237f25b232f756dc3027","src/testing/metrics/in_memory_exporter.rs":"ffb5e7653b49391f67d74d4eb6b15199e8d5705c3c6425bbfc82d2f0bf4fcb9a","src/testing/metrics/mod.rs":"f48100ed5b70a8fc1ff5595be7f3d9c142d74fe2787861387628879cb74485e3","src/testing/mod.rs":"d7ae6baf1d266e1f74b7442839614828a73c8b060440978857b5d41ffc5b5e3f","src/testing/trace.rs":"df151c29ce4f5497971dc200d4a747724b879cfb5184456396959b6f671272d7","src/trace/config.rs":"d40d1d555ca3c592a4f5fa7fe3fb5b0d40155e8c2df119906b5b9aee0de57518","src/trace/evicted_hash_map.rs":"ad922b228135af375436c70f69c806eefc1917a9a7658479d73c9b5a803ef3d7","src/trace/evicted_queue.rs":"84041c667af2744ce51a2e6d500af2e394e558923cb1ac0d9e0b775af90535f6","src/trace/id_generator/aws.rs":"483fb5a6987994ef80a6ffce697b912eeba791825872ef78597fbb56db666cce","src/trace/id_generator/mod.rs":"0a51641eaee62a7cb1a46e508f28dd6c1b819072507df609f9128926f483bd6f","src/trace/mod.rs":"42d76e9638f65fc2d31b587d33cb653ec240193420982cdd01a6008f15dc5d2e","src/trace/provider.rs":"de0350d8ccffe8645c4e2b361444f55a2483aa04169a9aa6becc914758b9f48b","src/trace/runtime_tests.rs":"311a86d380ca402301179f203e41b314233cc0d8dca288d0a4289d80d0d6d98a","src/trace/sampler.rs":"c5eb0c7c35da401f61b15390a9857d42a5efde31005a14dbbd77d8bce2eb6d57","src/trace/sampler/jaeger_remote/mod.rs":"c02cb5a9f39b8d49643f6344f413d19e2feeba347675c5f02b659196466a144b","src/trace/sampler/jaeger_remote/rate_limit.rs":"2d3f194212b59247d9e850d72ef77dcd93f3a868b48c4690e14f13a96da8fc77","src/trace/sampler/jaeger_remote/remote.rs":"48bffe52893439647d82689cab21a4e19244639ae63e7b958dafd22d348916f4","src/trace/sampler/jaeger_remote/sampler.rs":"169c541fe51b0fc59a0b051ff1561280ca4517231f309346cde6d0ae291b2496","src/trace/sampler/jaeger_remote/sampling_strategy.rs":"7ca3c7d0296bdcc64ad277f5a00cb8abb77ae1141d96a7624f9863448d8975e2","src/trace/span.rs":"6ceb1247d46b31b05a6eeb3725886ac7f83960ab92db2a573862e079eb42fdd4","src/trace/span_limit.rs":"c02211f141f2518f223e4648695a31a6896d4ddaf408955de344ca7572ccadef","src/trace/span_processor.rs":"6838cdaeb65d5d3c6f1ed3c9fe54802ab892a015e4f12a1ec8b400530bc76c29","src/trace/tracer.rs":"7fc474ba18be162ba6a9ca43e5bd9280411a123689ed870017689d293a8ee3dd","src/util.rs":"63c41e142a24fb7c04b8a7a1ebc546a331ce3f7515e9dd78932c7c7edc8f00c7"},"package":"fa8e705a0612d48139799fcbaba0d4a90f06277153e43dd2bdc16c6f0edd8026"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/Cargo.toml temporalio-1.3.0/vendor/opentelemetry_sdk/Cargo.toml --- temporalio-1.3.0/vendor/opentelemetry_sdk/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,14 +11,15 @@ [package] edition = "2021" -rust-version = "1.56" +rust-version = "1.60" name = "opentelemetry_sdk" -version = "0.18.0" +version = "0.20.0" description = "The SDK for the OpenTelemetry metrics collection and distributed tracing framework" homepage = "https://github.com/open-telemetry/opentelemetry-rust" readme = "README.md" license = "Apache-2.0" repository = "https://github.com/open-telemetry/opentelemetry-rust" +resolver = "1" [package.metadata.docs.rs] all-features = true @@ -28,6 +29,18 @@ ] [[bench]] +name = "context" +harness = false + +[[bench]] +name = "key_value_map" +harness = false + +[[bench]] +name = "span_builder" +harness = false + +[[bench]] name = "trace" harness = false @@ -57,14 +70,6 @@ version = "0.5" optional = true -[dependencies.dashmap] -version = "5.1.0" -optional = true - -[dependencies.fnv] -version = "1.0" -optional = true - [dependencies.futures-channel] version = "0.3" @@ -88,11 +93,14 @@ version = "1.10" [dependencies.opentelemetry-http] -version = "0.7.0" +version = "0.9" optional = true [dependencies.opentelemetry_api] -version = "0.18" +version = "0.20" + +[dependencies.ordered-float] +version = "3.4.0" [dependencies.percent-encoding] version = "2.0" @@ -107,6 +115,10 @@ optional = true default-features = false +[dependencies.regex] +version = "1.0" +optional = true + [dependencies.serde] version = "1.0" features = [ @@ -139,14 +151,19 @@ version = "2.2" optional = true -[dev-dependencies.bincode] -version = "1.2" - [dev-dependencies.criterion] -version = "0.3.1" +version = "0.5" +features = ["html_reports"] -[dev-dependencies.rand_distr] -version = "0.4.0" +[dev-dependencies.indexmap] +version = "1.8" + +[dev-dependencies.pprof] +version = "0.12" +features = [ + "flamegraph", + "criterion", +] [features] default = ["trace"] @@ -158,10 +175,20 @@ "serde_json", "url", ] +logs = [ + "opentelemetry_api/logs", + "crossbeam-channel", + "async-trait", + "serde_json", +] +logs_level_enabled = [ + "logs", + "opentelemetry_api/logs_level_enabled", +] metrics = [ "opentelemetry_api/metrics", - "dashmap", - "fnv", + "regex", + "async-trait", ] rt-async-std = ["async-std"] rt-tokio = [ @@ -176,6 +203,7 @@ "opentelemetry_api/testing", "trace", "metrics", + "logs", "rt-async-std", "rt-tokio", "rt-tokio-current-thread", diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/CHANGELOG.md temporalio-1.3.0/vendor/opentelemetry_sdk/CHANGELOG.md --- temporalio-1.3.0/vendor/opentelemetry_sdk/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,65 @@ # Changelog +## v0.20.0 + +### Added + +- Implement cardinality limits for metric streams + [#1066](https://github.com/open-telemetry/opentelemetry-rust/pull/1066). +- Propagate shutdown calls from `PeriodicReader` to metrics exporter + [#1138](https://github.com/open-telemetry/opentelemetry-rust/pull/1138). +- Add in memory metrics exporter #1017 + +### Changed + +- New metrics SDK #1000 +- Use `Cow<'static, str>` instead of `&'static str` #1018 +- Unify trace and logs runtime extensions traits. #1067 + +### Changed + +- Fix EvictedQueue bug when capacity is set to 0 + [#1151](https://github.com/open-telemetry/opentelemetry-rust/pull/1151). + +### Removed + +- Samplers no longer has access to `InstrumentationLibrary` as one of parameters + to `should_sample`. + [#1041](https://github.com/open-telemetry/opentelemetry-rust/pull/1041). +- Synchronous instruments no longer accepts `Context` while reporting + measurements. [#1076](https://github.com/open-telemetry/opentelemetry-rust/pull/1076). +- Don't use CARGO_BIN_NAME for service name #1150 + +### Fixed + +- Wait for exports on the simple span processor's ForceFlush #1030 + +## v0.19.0 + +### Added +- Add instrument validation to `InstrumentBuilder` [#884](https://github.com/open-telemetry/opentelemetry-rust/pull/884). +- Add `TelemetryResourceDetector` [#899](https://github.com/open-telemetry/opentelemetry-rust/pull/899). +- Add support for instrumentation scope attributes [#1021](https://github.com/open-telemetry/opentelemetry-rust/pull/1021). + +### Changed +- Update to `opentelemetry_api` v0.19. +- Update to `opentelemetry_http` v0.8. +- Bump MSRV to 1.57 [#953](https://github.com/open-telemetry/opentelemetry-rust/pull/953). +- Fix doc in `ShouldSample` trait [#951](https://github.com/open-telemetry/opentelemetry-rust/pull/951) +- Only run `ParentBased` delegate sampler when there is no parent [#948](https://github.com/open-telemetry/opentelemetry-rust/pull/948). +- Improve `SdkProvidedResourceDetector`'s doc [#964](https://github.com/open-telemetry/opentelemetry-rust/pull/964). +- Update dependencies and bump MSRV to 1.60 [#969](https://github.com/open-telemetry/opentelemetry-rust/pull/969). +- Use CARGO_BIN_NAME as default service name [#991](https://github.com/open-telemetry/opentelemetry-rust/pull/991). + +### Removed +- Remove `in_memory` settings [#946](https://github.com/open-telemetry/opentelemetry-rust/pull/946). + +## main + +### Changed + +- Update the Number in the SDK API to support min and max. #989 + ## v0.18.0 ### Changed diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/LICENSE temporalio-1.3.0/vendor/opentelemetry_sdk/LICENSE --- temporalio-1.3.0/vendor/opentelemetry_sdk/LICENSE 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/LICENSE 2023-10-30 19:40:00.000000000 +0000 @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2023 The OpenTelemetry Authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/README.md temporalio-1.3.0/vendor/opentelemetry_sdk/README.md --- temporalio-1.3.0/vendor/opentelemetry_sdk/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -11,11 +11,7 @@ [![LICENSE](https://img.shields.io/crates/l/opentelemetry_sdk)](./LICENSE) [![GitHub Actions CI](https://github.com/open-telemetry/opentelemetry-rust/workflows/CI/badge.svg)](https://github.com/open-telemetry/opentelemetry-rust/actions?query=workflow%3ACI+branch%3Amain) [![codecov](https://codecov.io/gh/open-telemetry/opentelemetry-rust/branch/main/graph/badge.svg)](https://codecov.io/gh/open-telemetry/opentelemetry-rust) -[![Gitter chat](https://img.shields.io/badge/gitter-join%20chat%20%E2%86%92-brightgreen.svg)](https://gitter.im/open-telemetry/opentelemetry-rust) - -[Website](https://opentelemetry.io/) | -[Chat](https://gitter.im/open-telemetry/opentelemetry-rust) | -[Documentation](https://docs.rs/opentelemetry-rust) +[![Slack](https://img.shields.io/badge/slack-@cncf/otel/rust-brightgreen.svg?logo=slack)](https://cloud-native.slack.com/archives/C03GDP0H023) ## Overview @@ -25,8 +21,16 @@ can export and analyze them using [Prometheus], [Jaeger], and other observability tools. -*Compiler support: [requires `rustc` 1.56+][msrv]* +*Compiler support: [requires `rustc` 1.60+][msrv]* [Prometheus]: https://prometheus.io [Jaeger]: https://www.jaegertracing.io [msrv]: #supported-rust-versions + +## OpenTelemetry Benchmarks + +From the root folder, run the following command: + +```sh +cargo bench +``` diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/attributes/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/attributes/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/attributes/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/attributes/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,3 @@ +mod set; + +pub use set::AttributeSet; diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/attributes/set.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/attributes/set.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/attributes/set.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/attributes/set.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,164 @@ +use std::{ + cmp::Ordering, + collections::{BTreeSet, HashSet}, + hash::{Hash, Hasher}, +}; + +use opentelemetry_api::{Array, Key, KeyValue, Value}; +use ordered_float::OrderedFloat; + +use crate::Resource; + +#[derive(Clone, Debug)] +struct HashKeyValue(KeyValue); + +impl Hash for HashKeyValue { + fn hash(&self, state: &mut H) { + self.0.key.hash(state); + match &self.0.value { + Value::F64(f) => OrderedFloat(*f).hash(state), + Value::Array(a) => match a { + Array::Bool(b) => b.hash(state), + Array::I64(i) => i.hash(state), + Array::F64(f) => f.iter().for_each(|f| OrderedFloat(*f).hash(state)), + Array::String(s) => s.hash(state), + }, + Value::Bool(b) => b.hash(state), + Value::I64(i) => i.hash(state), + Value::String(s) => s.hash(state), + }; + } +} + +impl PartialOrd for HashKeyValue { + fn partial_cmp(&self, other: &Self) -> Option { + Some(self.cmp(other)) + } +} + +impl Ord for HashKeyValue { + fn cmp(&self, other: &Self) -> Ordering { + match self.0.key.cmp(&other.0.key) { + Ordering::Equal => match type_order(&self.0.value).cmp(&type_order(&other.0.value)) { + Ordering::Equal => match (&self.0.value, &other.0.value) { + (Value::F64(f), Value::F64(of)) => OrderedFloat(*f).cmp(&OrderedFloat(*of)), + (Value::Array(Array::Bool(b)), Value::Array(Array::Bool(ob))) => b.cmp(ob), + (Value::Array(Array::I64(i)), Value::Array(Array::I64(oi))) => i.cmp(oi), + (Value::Array(Array::String(s)), Value::Array(Array::String(os))) => s.cmp(os), + (Value::Array(Array::F64(f)), Value::Array(Array::F64(of))) => { + match f.len().cmp(&of.len()) { + Ordering::Equal => f + .iter() + .map(|x| OrderedFloat(*x)) + .collect::>() + .cmp(&of.iter().map(|x| OrderedFloat(*x)).collect()), + other => other, + } + } + (Value::Bool(b), Value::Bool(ob)) => b.cmp(ob), + (Value::I64(i), Value::I64(oi)) => i.cmp(oi), + (Value::String(s), Value::String(os)) => s.cmp(os), + _ => Ordering::Equal, + }, + other => other, // 2nd order by value types + }, + other => other, // 1st order by key + } + } +} + +fn type_order(v: &Value) -> u8 { + match v { + Value::Bool(_) => 1, + Value::I64(_) => 2, + Value::F64(_) => 3, + Value::String(_) => 4, + Value::Array(a) => match a { + Array::Bool(_) => 5, + Array::I64(_) => 6, + Array::F64(_) => 7, + Array::String(_) => 8, + }, + } +} + +impl PartialEq for HashKeyValue { + fn eq(&self, other: &Self) -> bool { + self.0.key == other.0.key + && match (&self.0.value, &other.0.value) { + (Value::F64(f), Value::F64(of)) => OrderedFloat(*f).eq(&OrderedFloat(*of)), + (Value::Array(Array::F64(f)), Value::Array(Array::F64(of))) => { + f.len() == of.len() + && f.iter() + .zip(of.iter()) + .all(|(f, of)| OrderedFloat(*f).eq(&OrderedFloat(*of))) + } + (non_float, other_non_float) => non_float.eq(other_non_float), + } + } +} + +impl Eq for HashKeyValue {} + +/// A unique set of attributes that can be used as instrument identifiers. +/// +/// This must implement [Hash], [PartialEq], and [Eq] so it may be used as +/// HashMap keys and other de-duplication methods. +#[derive(Clone, Debug, Hash, PartialEq, Eq)] +pub struct AttributeSet(BTreeSet); + +impl From<&[KeyValue]> for AttributeSet { + fn from(values: &[KeyValue]) -> Self { + let mut seen = HashSet::with_capacity(values.len()); + AttributeSet( + values + .iter() + .rev() + .filter_map(|kv| { + if seen.contains(&&kv.key) { + None + } else { + seen.insert(&kv.key); + Some(HashKeyValue(kv.clone())) + } + }) + .collect(), + ) + } +} + +impl From<&Resource> for AttributeSet { + fn from(values: &Resource) -> Self { + AttributeSet( + values + .iter() + .map(|(key, value)| HashKeyValue(KeyValue::new(key.clone(), value.clone()))) + .collect(), + ) + } +} + +impl AttributeSet { + /// Returns the number of elements in the set. + pub fn len(&self) -> usize { + self.0.len() + } + + /// Returns `true` if the set contains no elements. + pub fn is_empty(&self) -> bool { + self.0.is_empty() + } + + /// Retains only the attributes specified by the predicate. + pub fn retain(&mut self, f: F) + where + F: Fn(&KeyValue) -> bool, + { + self.0.retain(|kv| f(&kv.0)) + } + + /// Iterate over key value pairs in the set + pub fn iter(&self) -> impl Iterator { + self.0.iter().map(|kv| (&kv.0.key, &kv.0.value)) + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/logs/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/logs/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/logs/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/logs/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,40 @@ +//! Log exporters +use crate::Resource; +use async_trait::async_trait; +#[cfg(feature = "logs_level_enabled")] +use opentelemetry_api::logs::Severity; +use opentelemetry_api::{ + logs::{LogError, LogRecord, LogResult}, + InstrumentationLibrary, +}; +use std::{borrow::Cow, fmt::Debug}; + +/// `LogExporter` defines the interface that log exporters should implement. +#[async_trait] +pub trait LogExporter: Send + Debug { + /// Exports a batch of `ResourceLogs`. + async fn export(&mut self, batch: Vec) -> LogResult<()>; + /// Shuts down the expoter. + fn shutdown(&mut self) {} + #[cfg(feature = "logs_level_enabled")] + /// Chek if logs are enabled. + fn event_enabled(&self, _level: Severity, _target: &str, _name: &str) -> bool { + true + } +} + +/// `LogData` associates a [`LogRecord`] with a [`Resource`] and +/// [`InstrumentationLibrary`]. +#[derive(Debug)] +#[non_exhaustive] +pub struct LogData { + /// Log record + pub record: LogRecord, + /// Resource for the emitter who produced this `LogData`. + pub resource: Cow<'static, Resource>, + /// Instrumentation details for the emitter who produced this `LogData`. + pub instrumentation: InstrumentationLibrary, +} + +/// Describes the result of an export. +pub type ExportResult = Result<(), LogError>; diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/metrics/aggregation/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/metrics/aggregation/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/metrics/aggregation/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/metrics/aggregation/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,110 +0,0 @@ -//! Metrics aggregation -use std::time::SystemTime; - -use crate::metrics::sdk_api::Number; -use opentelemetry_api::metrics::Result; - -mod temporality; - -pub use temporality::*; - -/// An interface returned by an [`Aggregator`] containing an interval of metric -/// data. -/// -/// [`Aggregator`]: crate::metrics::aggregators::Aggregator -pub trait Aggregation { - /// A short identifying string to identify the [`Aggregator`] that was used to - /// produce the aggregation (e.g., [`AggregationKind::SUM`]). - /// - /// [`Aggregator`]: crate::metrics::aggregators::Aggregator - /// [`AggregationKind`]: crate::export::metrics::aggregation::AggregationKind - fn kind(&self) -> &AggregationKind; -} - -/// Sum returns an aggregated sum. -pub trait Sum: Aggregation { - /// The sum of the currently aggregated metrics - fn sum(&self) -> Result; -} - -/// Count returns the number of values that were aggregated. -pub trait Count: Aggregation { - /// The count of the currently aggregated metrics - fn count(&self) -> Result; -} - -/// LastValue returns the latest value that was aggregated. -pub trait LastValue: Aggregation { - /// The last value of the currently aggregated metrics - fn last_value(&self) -> Result<(Number, SystemTime)>; -} - -/// Buckets represent histogram buckets boundaries and counts. -/// -/// For a Histogram with N defined boundaries, e.g, [x, y, z]. There are N+1 -/// counts: [-inf, x), [x, y), [y, z), [z, +inf] -#[derive(Debug)] -pub struct Buckets { - /// Boundaries are floating point numbers, even when - /// aggregating integers. - boundaries: Vec, - - /// Counts are floating point numbers to account for - /// the possibility of sampling which allows for - /// non-integer count values. - counts: Vec, -} - -impl Buckets { - /// Create new buckets - pub fn new(boundaries: Vec, counts: Vec) -> Self { - Buckets { boundaries, counts } - } - - /// Boundaries of the histogram buckets - pub fn boundaries(&self) -> &Vec { - &self.boundaries - } - - /// Counts of the histogram buckets - pub fn counts(&self) -> &Vec { - &self.counts - } -} - -/// Histogram returns the count of events in pre-determined buckets. -pub trait Histogram: Sum + Count + Aggregation { - /// Buckets for this histogram. - fn histogram(&self) -> Result; -} - -/// A short name for the [`Aggregator`] that produces an [`Aggregation`]. -/// -/// Kind is a string to allow user-defined Aggregators. -/// -/// When deciding how to handle an Aggregation, Exporters are encouraged to -/// decide based on conversion to the above interfaces based on strength, not on -/// Kind value, when deciding how to expose metric data. This enables -/// user-supplied Aggregators to replace builtin Aggregators. -/// -/// For example, test for a Histogram before testing for a Sum, and so on. -/// -/// [`Aggregator`]: crate::metrics::aggregators::Aggregator -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct AggregationKind(&'static str); - -impl AggregationKind { - /// Aggregations that return an aggregated sum. - pub const SUM: Self = AggregationKind("SUM"); - - /// Aggregations that return a distribution - pub const HISTOGRAM: Self = AggregationKind("HISTOGRAM"); - - /// Aggregations that return only the latest value. - pub const LAST_VALUE: AggregationKind = AggregationKind("LAST_VALUE"); - - /// Create a new custom aggregation kind - pub const fn new(name: &'static str) -> Self { - AggregationKind(name) - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/metrics/aggregation/temporality.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/metrics/aggregation/temporality.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/metrics/aggregation/temporality.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/metrics/aggregation/temporality.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,92 +0,0 @@ -use crate::export::metrics::aggregation::AggregationKind; -use crate::metrics::sdk_api::{Descriptor, InstrumentKind}; - -#[derive(Clone)] -struct ConstantTemporalitySelector(Temporality); - -impl TemporalitySelector for ConstantTemporalitySelector { - fn temporality_for(&self, _descriptor: &Descriptor, _kind: &AggregationKind) -> Temporality { - self.0 - } -} - -/// Returns an [`TemporalitySelector`] that returns a constant [`Temporality`]. -pub fn constant_temporality_selector(temporality: Temporality) -> impl TemporalitySelector + Clone { - ConstantTemporalitySelector(temporality) -} - -/// Returns an [`TemporalitySelector`] that always returns [`Temporality::Cumulative`]. -pub fn cumulative_temporality_selector() -> impl TemporalitySelector + Clone { - constant_temporality_selector(Temporality::Cumulative) -} - -/// Returns an [`TemporalitySelector`] that always returns [`Temporality::Delta`]. -pub fn delta_temporality_selector() -> impl TemporalitySelector + Clone { - constant_temporality_selector(Temporality::Delta) -} - -/// Returns a [`TemporalitySelector`] that always returns the cumulative [`Temporality`] to avoid -/// long-term memory requirements. -pub fn stateless_temporality_selector() -> impl TemporalitySelector + Clone { - constant_temporality_selector(Temporality::Cumulative) -} - -#[derive(Clone)] -struct StatelessTemporalitySelector; - -impl TemporalitySelector for StatelessTemporalitySelector { - fn temporality_for(&self, descriptor: &Descriptor, kind: &AggregationKind) -> Temporality { - if kind == &AggregationKind::SUM && descriptor.instrument_kind().precomputed_sum() { - Temporality::Cumulative - } else { - Temporality::Delta - } - } -} - -/// Temporality indicates the temporal aggregation exported by an exporter. -/// These bits may be OR-d together when multiple exporters are in use. -#[derive(Copy, Clone, Debug, PartialEq, Eq)] -#[non_exhaustive] -pub enum Temporality { - /// Indicates that an Exporter expects a Cumulative Aggregation. - Cumulative = 1, - - /// Indicates that an Exporter expects a Delta Aggregation. - Delta = 2, -} - -impl Temporality { - /// Tests whether `kind` includes a specific kind of exporter. - pub fn includes(&self, other: &Self) -> bool { - (*self as u32) & (*other as u32) != 0 - } - - /// Returns whether a temporality of this kind requires memory to export correctly. - pub fn memory_required(&self, kind: &InstrumentKind) -> bool { - match kind { - InstrumentKind::Histogram - | InstrumentKind::GaugeObserver - | InstrumentKind::Counter - | InstrumentKind::UpDownCounter => { - // Cumulative-oriented instruments: - self.includes(&Temporality::Cumulative) - } - - InstrumentKind::CounterObserver | InstrumentKind::UpDownCounterObserver => { - // Delta-oriented instruments: - self.includes(&Temporality::Delta) - } - } - } -} - -/// TemporalitySelector is a sub-interface of Exporter used to indicate -/// whether the Processor should compute Delta or Cumulative -/// Aggregations. -pub trait TemporalitySelector { - /// TemporalityFor should return the correct Temporality that - /// should be used when exporting data for the given metric - /// instrument and Aggregator kind. - fn temporality_for(&self, descriptor: &Descriptor, kind: &AggregationKind) -> Temporality; -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/metrics/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/metrics/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/metrics/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/metrics/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,355 +0,0 @@ -//! Metrics Export - -use core::fmt; -use std::{sync::Arc, time::SystemTime}; - -use opentelemetry_api::{attributes, metrics::Result, Context, InstrumentationLibrary}; - -use crate::{ - metrics::{aggregators::Aggregator, sdk_api::Descriptor}, - Resource, -}; - -use self::aggregation::TemporalitySelector; - -pub mod aggregation; -mod stdout; - -pub use stdout::{stdout, ExportLine, ExportNumeric, StdoutExporter, StdoutExporterBuilder}; - -/// AggregatorSelector supports selecting the kind of `Aggregator` to use at -/// runtime for a specific metric instrument. -pub trait AggregatorSelector { - /// This allocates a variable number of aggregators of a kind suitable for - /// the requested export. - /// - /// When the call returns `None`, the metric instrument is explicitly disabled. - /// - /// This must return a consistent type to avoid confusion in later stages of - /// the metrics export process, e.g., when merging or checkpointing - /// aggregators for a specific instrument. - /// - /// This call should not block. - fn aggregator_for(&self, descriptor: &Descriptor) -> Option>; -} - -/// A container for the common elements for exported metric data that are shared -/// by the `Accumulator`->`Processor` and `Processor`->`Exporter` steps. -#[derive(Debug)] -pub struct Metadata<'a> { - descriptor: &'a Descriptor, - attributes: &'a attributes::AttributeSet, -} - -impl<'a> Metadata<'a> { - /// Create a new `Metadata` instance. - pub fn new(descriptor: &'a Descriptor, attributes: &'a attributes::AttributeSet) -> Self { - { - Metadata { - descriptor, - attributes, - } - } - } - - /// A description of the metric instrument being exported. - pub fn descriptor(&self) -> &Descriptor { - self.descriptor - } - - /// The attributes associated with the instrument and the aggregated data. - pub fn attributes(&self) -> &attributes::AttributeSet { - self.attributes - } -} - -/// Allows `Accumulator` implementations to construct new `Accumulation`s to -/// send to `Processor`s. The `Descriptor`, `Attributes`, `Resource`, and -/// `Aggregator` represent aggregate metric events received over a single -/// collection period. -pub fn accumulation<'a>( - descriptor: &'a Descriptor, - attributes: &'a attributes::AttributeSet, - aggregator: &'a Arc, -) -> Accumulation<'a> { - Accumulation::new(descriptor, attributes, aggregator) -} - -/// A container for the exported data for a single metric instrument and attribute -/// set, as prepared by an `Accumulator` for the `Processor`. -pub struct Accumulation<'a> { - metadata: Metadata<'a>, - aggregator: &'a Arc, -} - -impl<'a> Accumulation<'a> { - /// Create a new `Record` instance. - pub fn new( - descriptor: &'a Descriptor, - attributes: &'a attributes::AttributeSet, - aggregator: &'a Arc, - ) -> Self { - Accumulation { - metadata: Metadata::new(descriptor, attributes), - aggregator, - } - } - - /// A description of the metric instrument being exported. - pub fn descriptor(&self) -> &Descriptor { - self.metadata.descriptor - } - - /// The attributes associated with the instrument and the aggregated data. - pub fn attributes(&self) -> &attributes::AttributeSet { - self.metadata.attributes - } - - /// The checkpointed aggregator for this metric. - pub fn aggregator(&self) -> &Arc { - self.aggregator - } -} - -impl<'a> fmt::Debug for Accumulation<'a> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("Accumulation") - .field("metadata", &self.metadata) - .finish() - } -} - -/// Metric data processor. -/// -/// Locked processors are responsible gathering exported results from the SDK during -/// collection, and deciding over which dimensions to group the exported data. -/// -/// The `process` method is called during collection in a single-threaded -/// context from the SDK, after the aggregator is checkpointed, allowing the -/// processor to build the set of metrics currently being exported. -pub trait LockedProcessor { - /// Process is called by the SDK once per internal record, passing the export - /// [`Accumulation`] (a Descriptor, the corresponding attributes, and the - /// checkpointed aggregator). - /// - /// This call has no [`Context`] argument because it is expected to perform only - /// computation. An SDK is not expected to call exporters from with Process, use - /// a controller for that. - fn process(&mut self, accumulation: Accumulation<'_>) -> Result<()>; -} - -/// A container for the exported data for a single metric instrument and attribute -/// set, as prepared by the `Processor` for the `Exporter`. This includes the -/// effective start and end time for the aggregation. -pub struct Record<'a> { - metadata: Metadata<'a>, - aggregator: Option<&'a Arc>, - start: SystemTime, - end: SystemTime, -} - -impl Record<'_> { - /// A description of the metric instrument being exported. - pub fn descriptor(&self) -> &Descriptor { - self.metadata.descriptor - } - - /// The attributes associated with the instrument and the aggregated data. - pub fn attributes(&self) -> &attributes::AttributeSet { - self.metadata.attributes - } - - /// The aggregator for this metric - pub fn aggregator(&self) -> Option<&Arc> { - self.aggregator - } - - /// The start time of the interval covered by this aggregation. - pub fn start_time(&self) -> &SystemTime { - &self.start - } - - /// The end time of the interval covered by this aggregation. - pub fn end_time(&self) -> &SystemTime { - &self.end - } -} - -/// Exporter handles presentation of the checkpoint of aggregate -/// metrics. This is the final stage of a metrics export pipeline, -/// where metric data are formatted for a specific system. -pub trait MetricsExporter: TemporalitySelector { - /// Export is called immediately after completing a collection - /// pass in the SDK. - /// - /// The Context comes from the controller that initiated - /// collection. - /// - /// The InstrumentationLibraryReader interface refers to the - /// Processor that just completed collection. - fn export( - &self, - cx: &Context, - res: &Resource, - reader: &dyn InstrumentationLibraryReader, - ) -> Result<()>; -} - -/// InstrumentationLibraryReader is an interface for exporters to iterate -/// over one instrumentation library of metric data at a time. -pub trait InstrumentationLibraryReader { - /// ForEach calls the passed function once per instrumentation library, - /// allowing the caller to emit metrics grouped by the library that - /// produced them. - fn try_for_each( - &self, - f: &mut dyn FnMut(&InstrumentationLibrary, &mut dyn Reader) -> Result<()>, - ) -> Result<()>; -} - -/// Reader allows a controller to access a complete checkpoint of -/// aggregated metrics from the Processor for a single library of -/// metric data. This is passed to the Exporter which may then use -/// ForEach to iterate over the collection of aggregated metrics. -pub trait Reader { - /// ForEach iterates over aggregated checkpoints for all - /// metrics that were updated during the last collection - /// period. Each aggregated checkpoint returned by the - /// function parameter may return an error. - /// - /// The TemporalitySelector argument is used to determine - /// whether the Record is computed using Delta or Cumulative - /// aggregation. - /// - /// ForEach tolerates ErrNoData silently, as this is - /// expected from the Meter implementation. Any other kind - /// of error will immediately halt ForEach and return - /// the error to the caller. - fn try_for_each( - &mut self, - temp_selector: &dyn TemporalitySelector, - f: &mut dyn FnMut(&Record<'_>) -> Result<()>, - ) -> Result<()>; -} - -impl fmt::Debug for Record<'_> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("Record") - .field("metadata", &self.metadata) - .field("start", &self.start) - .field("end", &self.end) - .finish() - } -} - -/// The interface used to create checkpoints. -pub trait Checkpointer: Processor { - /// Synchronizes the checkpoint process and allows a single locked - /// checkpoint to be accessed at a time. - fn checkpoint( - &self, - f: &mut dyn FnMut(&mut dyn LockedCheckpointer) -> Result<()>, - ) -> Result<()>; -} - -/// The interface used by a controller to coordinate the processor with -/// accumulator(s) and exporter(s). -/// -/// The StartCollection() and FinishCollection() methods start and finish a -/// collection interval. Controllers call the Accumulator(s) during collection -/// to process Accumulations. -pub trait LockedCheckpointer { - /// Processes metric data for export. - /// - /// The `process` method is bracketed by `start_collection` and - /// `finish_collection` calls. - fn processor(&mut self) -> &mut dyn LockedProcessor; - - /// Reader returns the current data set. - /// - /// This may be called before and after collection. The implementation is - /// required to return the same value throughout its lifetime. - fn reader(&mut self) -> &mut dyn Reader; - - /// begins a collection interval. - fn start_collection(&mut self); - - /// ends a collection interval. - fn finish_collection(&mut self) -> Result<()>; -} - -/// An interface for producing configured [`Checkpointer`] instances. -pub trait CheckpointerFactory { - /// Creates a new configured checkpointer. - fn checkpointer(&self) -> Arc; -} - -/// Allows `Processor` implementations to construct export records. The -/// `Descriptor`, `Attributes`, and `Aggregator` represent aggregate metric events -/// received over a single collection period. -pub fn record<'a>( - descriptor: &'a Descriptor, - attributes: &'a attributes::AttributeSet, - aggregator: Option<&'a Arc>, - start: SystemTime, - end: SystemTime, -) -> Record<'a> { - Record { - metadata: Metadata::new(descriptor, attributes), - aggregator, - start, - end, - } -} - -/// A utility extension to allow upcasting. -/// -/// Can be removed once [trait_upcasting] is stablized. -/// -/// [trait_upcasting]: https://doc.rust-lang.org/unstable-book/language-features/trait-upcasting.html -pub trait AsDynProcessor { - /// Create an `Arc` from an impl of [`Processor`]. - fn as_dyn_processor<'a>(self: Arc) -> Arc - where - Self: 'a; -} - -impl AsDynProcessor for T { - fn as_dyn_processor<'a>(self: Arc) -> Arc - where - Self: 'a, - { - self - } -} - -/// Processor is responsible for deciding which kind of aggregation to use (via -/// `aggregation_selector`), gathering exported results from the SDK during -/// collection, and deciding over which dimensions to group the exported data. -/// -/// The SDK supports binding only one of these interfaces, as it has the sole -/// responsibility of determining which Aggregator to use for each record. -/// -/// The embedded AggregatorSelector interface is called (concurrently) in -/// instrumentation context to select the appropriate Aggregator for an -/// instrument. -pub trait Processor: AsDynProcessor { - /// AggregatorSelector is responsible for selecting the - /// concrete type of Aggregator used for a metric in the SDK. - /// - /// This may be a static decision based on fields of the - /// Descriptor, or it could use an external configuration - /// source to customize the treatment of each metric - /// instrument. - /// - /// The result from AggregatorSelector.AggregatorFor should be - /// the same type for a given Descriptor or else nil. The same - /// type should be returned for a given descriptor, because - /// Aggregators only know how to Merge with their own type. If - /// the result is nil, the metric instrument will be disabled. - /// - /// Note that the SDK only calls AggregatorFor when new records - /// require an Aggregator. This does not provide a way to - /// disable metrics with active records. - fn aggregator_selector(&self) -> &dyn AggregatorSelector; -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/metrics/stdout.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/metrics/stdout.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/metrics/stdout.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/metrics/stdout.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,259 +0,0 @@ -//! Stdout Metrics Exporter -use crate::{ - export::metrics::{ - aggregation::{stateless_temporality_selector, LastValue, Sum, TemporalitySelector}, - InstrumentationLibraryReader, MetricsExporter, - }, - metrics::aggregators::{LastValueAggregator, SumAggregator}, - Resource, -}; -use opentelemetry_api::{ - attributes::{default_encoder, AttributeSet, Encoder}, - metrics::{MetricsError, Result}, - Context, KeyValue, -}; -use std::fmt; -use std::io; -use std::sync::Mutex; -use std::time::SystemTime; - -/// Create a new stdout exporter builder with the configuration for a stdout exporter. -pub fn stdout() -> StdoutExporterBuilder { - StdoutExporterBuilder::::builder() -} - -/// An OpenTelemetry metric exporter that transmits telemetry to -/// the local STDOUT or via the registered implementation of `Write`. -#[derive(Debug)] -pub struct StdoutExporter { - /// Writer is the destination. If not set, `Stdout` is used. - writer: Mutex, - - /// Specifies if timestamps should be printed - timestamps: bool, - - /// Encodes the attributes. - attribute_encoder: Box, - - /// An optional user-defined function to format a given export batch. - formatter: Option, -} - -/// Individually exported metric -/// -/// Can be formatted using [`StdoutExporterBuilder::with_formatter`]. -#[derive(Default, Debug)] -pub struct ExportLine { - /// metric name - pub name: String, - - /// populated if using sum aggregator - pub sum: Option, - - /// populated if using last value aggregator - pub last_value: Option, - - /// metric timestamp - pub timestamp: Option, -} - -/// A number exported as debug for serialization -pub struct ExportNumeric(Box); - -impl fmt::Debug for ExportNumeric { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - self.0.fmt(f) - } -} - -impl StdoutExporter { - /// The temporality selector for this exporter - pub fn temporality_selector(&self) -> impl TemporalitySelector { - stateless_temporality_selector() - } -} - -impl TemporalitySelector for StdoutExporter { - fn temporality_for( - &self, - descriptor: &crate::metrics::sdk_api::Descriptor, - kind: &super::aggregation::AggregationKind, - ) -> super::aggregation::Temporality { - stateless_temporality_selector().temporality_for(descriptor, kind) - } -} - -impl MetricsExporter for StdoutExporter -where - W: fmt::Debug + io::Write, -{ - fn export( - &self, - _cx: &Context, - res: &Resource, - reader: &dyn InstrumentationLibraryReader, - ) -> Result<()> { - let mut batch = Vec::new(); - reader.try_for_each(&mut |library, reader| { - let mut attributes = Vec::new(); - if !library.name.is_empty() { - attributes.push(KeyValue::new("instrumentation.name", library.name.clone())); - } - if let Some(version) = &library.version { - attributes.push(KeyValue::new("instrumentation.version", version.clone())); - } - if let Some(schema) = &library.schema_url { - attributes.push(KeyValue::new("instrumentation.schema_url", schema.clone())); - } - let inst_attributes = AttributeSet::from_attributes(attributes.into_iter()); - let encoded_inst_attributes = - inst_attributes.encoded(Some(self.attribute_encoder.as_ref())); - - reader.try_for_each(self, &mut |record| { - let desc = record.descriptor(); - let agg = record.aggregator().ok_or(MetricsError::NoDataCollected)?; - let kind = desc.number_kind(); - - let encoded_resource = res.encoded(self.attribute_encoder.as_ref()); - - let mut expose = ExportLine::default(); - if let Some(sum) = agg.as_any().downcast_ref::() { - expose.sum = Some(ExportNumeric(sum.sum()?.to_debug(kind))); - } else if let Some(last_value) = agg.as_any().downcast_ref::() - { - let (value, timestamp) = last_value.last_value()?; - expose.last_value = Some(ExportNumeric(value.to_debug(kind))); - - if self.timestamps { - expose.timestamp = Some(timestamp); - } - } - - let mut encoded_attributes = String::new(); - let iter = record.attributes().iter(); - if let (0, _) = iter.size_hint() { - encoded_attributes = record - .attributes() - .encoded(Some(self.attribute_encoder.as_ref())); - } - - let mut sb = String::new(); - - sb.push_str(desc.name()); - - if !encoded_attributes.is_empty() - || !encoded_resource.is_empty() - || !encoded_inst_attributes.is_empty() - { - sb.push('{'); - sb.push_str(&encoded_resource); - if !encoded_inst_attributes.is_empty() && !encoded_resource.is_empty() { - sb.push(','); - } - sb.push_str(&encoded_inst_attributes); - if !encoded_attributes.is_empty() - && (!encoded_inst_attributes.is_empty() || !encoded_resource.is_empty()) - { - sb.push(','); - } - sb.push_str(&encoded_attributes); - sb.push('}'); - } - - expose.name = sb; - - batch.push(expose); - Ok(()) - }) - })?; - - self.writer.lock().map_err(From::from).and_then(|mut w| { - let formatted = match &self.formatter { - Some(formatter) => formatter.0(batch)?, - None => format!("{:?}\n", batch), - }; - w.write_all(formatted.as_bytes()) - .map_err(|e| MetricsError::Other(e.to_string())) - }) - } -} - -/// A formatter for user-defined batch serialization. -struct Formatter(Box) -> Result + Send + Sync>); -impl fmt::Debug for Formatter { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "Formatter(closure)") - } -} - -/// Configuration for a given stdout exporter. -#[derive(Debug)] -pub struct StdoutExporterBuilder { - writer: Mutex, - timestamps: bool, - attribute_encoder: Option>, - formatter: Option, -} - -impl StdoutExporterBuilder -where - W: io::Write + fmt::Debug + Send + Sync + 'static, -{ - fn builder() -> StdoutExporterBuilder { - StdoutExporterBuilder { - writer: Mutex::new(io::stdout()), - timestamps: true, - attribute_encoder: None, - formatter: None, - } - } - /// Set the writer that this exporter will use. - pub fn with_writer(self, writer: W2) -> StdoutExporterBuilder { - StdoutExporterBuilder { - writer: Mutex::new(writer), - timestamps: self.timestamps, - attribute_encoder: self.attribute_encoder, - formatter: self.formatter, - } - } - - /// Hide the timestamps from exported results - pub fn with_do_not_print_time(self, do_not_print_time: bool) -> Self { - StdoutExporterBuilder { - timestamps: do_not_print_time, - ..self - } - } - - /// Set the attribute encoder that this exporter will use. - pub fn with_attribute_encoder(self, attribute_encoder: E) -> Self - where - E: Encoder + Send + Sync + 'static, - { - StdoutExporterBuilder { - attribute_encoder: Some(Box::new(attribute_encoder)), - ..self - } - } - - /// Set a formatter for serializing export batch data - pub fn with_formatter(self, formatter: T) -> Self - where - T: Fn(Vec) -> Result + Send + Sync + 'static, - { - StdoutExporterBuilder { - formatter: Some(Formatter(Box::new(formatter))), - ..self - } - } - - /// Build a new push controller, returning errors if they arise. - pub fn build(self) -> Result> { - Ok(StdoutExporter { - writer: self.writer, - timestamps: self.timestamps, - attribute_encoder: self.attribute_encoder.unwrap_or_else(default_encoder), - formatter: self.formatter, - }) - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,9 @@ -//! Metrics Export +//! Telemetry Export + +#[cfg(feature = "logs")] +#[cfg_attr(docsrs, doc(cfg(feature = "logs")))] +pub mod logs; -#[cfg(feature = "metrics")] -#[cfg_attr(docsrs, doc(cfg(feature = "metrics")))] -pub mod metrics; #[cfg(feature = "trace")] #[cfg_attr(docsrs, doc(cfg(feature = "trace")))] pub mod trace; diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/trace/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/trace/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/trace/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/trace/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ -//! Trace exporters -use crate::Resource; -use futures_util::future::BoxFuture; -use opentelemetry_api::trace::{Event, Link, SpanContext, SpanId, SpanKind, Status, TraceError}; -use std::borrow::Cow; -use std::fmt::Debug; -use std::time::SystemTime; - -pub mod stdout; - -/// Describes the result of an export. -pub type ExportResult = Result<(), TraceError>; - -/// `SpanExporter` defines the interface that protocol-specific exporters must -/// implement so that they can be plugged into OpenTelemetry SDK and support -/// sending of telemetry data. -/// -/// The goal of the interface is to minimize burden of implementation for -/// protocol-dependent telemetry exporters. The protocol exporter is expected to -/// be primarily a simple telemetry data encoder and transmitter. -pub trait SpanExporter: Send + Debug { - /// Exports a batch of readable spans. Protocol exporters that will - /// implement this function are typically expected to serialize and transmit - /// the data to the destination. - /// - /// This function will never be called concurrently for the same exporter - /// instance. It can be called again only after the current call returns. - /// - /// This function must not block indefinitely, there must be a reasonable - /// upper limit after which the call must time out with an error result. - /// - /// Any retry logic that is required by the exporter is the responsibility - /// of the exporter. - fn export(&mut self, batch: Vec) -> BoxFuture<'static, ExportResult>; - - /// Shuts down the exporter. Called when SDK is shut down. This is an - /// opportunity for exporter to do any cleanup required. - /// - /// This function should be called only once for each `SpanExporter` - /// instance. After the call to `shutdown`, subsequent calls to `export` are - /// not allowed and should return an error. - /// - /// This function should not block indefinitely (e.g. if it attempts to - /// flush the data and the destination is unavailable). SDK authors - /// can decide if they want to make the shutdown timeout - /// configurable. - fn shutdown(&mut self) {} - - /// This is a hint to ensure that the export of any Spans the exporter - /// has received prior to the call to this function SHOULD be completed - /// as soon as possible, preferably before returning from this method. - /// - /// This function SHOULD provide a way to let the caller know - /// whether it succeeded, failed or timed out. - /// - /// This function SHOULD only be called in cases where it is absolutely necessary, - /// such as when using some FaaS providers that may suspend the process after - /// an invocation, but before the exporter exports the completed spans. - /// - /// This function SHOULD complete or abort within some timeout. This function can be - /// implemented as a blocking API or an asynchronous API which notifies the caller via - /// a callback or an event. OpenTelemetry client authors can decide if they want to - /// make the flush timeout configurable. - fn force_flush(&mut self) -> BoxFuture<'static, ExportResult> { - Box::pin(async { Ok(()) }) - } -} - -/// `SpanData` contains all the information collected by a `Span` and can be used -/// by exporters as a standard input. -#[derive(Clone, Debug, PartialEq)] -pub struct SpanData { - /// Exportable `SpanContext` - pub span_context: SpanContext, - /// Span parent id - pub parent_span_id: SpanId, - /// Span kind - pub span_kind: SpanKind, - /// Span name - pub name: Cow<'static, str>, - /// Span start time - pub start_time: SystemTime, - /// Span end time - pub end_time: SystemTime, - /// Span attributes - pub attributes: crate::trace::EvictedHashMap, - /// Span events - pub events: crate::trace::EvictedQueue, - /// Span Links - pub links: crate::trace::EvictedQueue, - /// Span status - pub status: Status, - /// Resource contains attributes representing an entity that produced this span. - pub resource: Cow<'static, Resource>, - /// Instrumentation library that produced this span - pub instrumentation_lib: crate::InstrumentationLibrary, -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/trace/stdout.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/trace/stdout.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/trace/stdout.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/trace/stdout.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,169 +0,0 @@ -//! # Stdout Span Exporter -//! -//! The stdout [`SpanExporter`] writes debug printed [`Span`]s to its configured -//! [`Write`] instance. By default it will write to [`Stdout`]. -//! -//! [`SpanExporter`]: super::SpanExporter -//! [`Span`]: crate::trace::Span -//! [`Write`]: std::io::Write -//! [`Stdout`]: std::io::Stdout -//! -//! # Examples -//! -//! ```no_run -//! use opentelemetry_api::global::shutdown_tracer_provider; -//! use opentelemetry_api::trace::Tracer; -//! use opentelemetry_sdk::export::trace::stdout; -//! -//! fn main() { -//! let tracer = stdout::new_pipeline() -//! .with_pretty_print(true) -//! .install_simple(); -//! -//! tracer.in_span("doing_work", |cx| { -//! // Traced app logic here... -//! }); -//! -//! shutdown_tracer_provider(); // sending remaining spans -//! } -//! ``` -use crate::export::{ - trace::{ExportResult, SpanData, SpanExporter, TraceError}, - ExportError, -}; -use async_trait::async_trait; -use futures_util::future::BoxFuture; -use opentelemetry_api::{global, trace::TracerProvider}; -use std::fmt::Debug; -use std::io::{stdout, Stdout, Write}; - -/// Pipeline builder -#[derive(Debug)] -pub struct PipelineBuilder { - pretty_print: bool, - trace_config: Option, - writer: W, -} - -/// Create a new stdout exporter pipeline builder. -pub fn new_pipeline() -> PipelineBuilder { - PipelineBuilder::default() -} - -impl Default for PipelineBuilder { - /// Return the default pipeline builder. - fn default() -> Self { - Self { - pretty_print: false, - trace_config: None, - writer: stdout(), - } - } -} - -impl PipelineBuilder { - /// Specify the pretty print setting. - pub fn with_pretty_print(mut self, pretty_print: bool) -> Self { - self.pretty_print = pretty_print; - self - } - - /// Assign the SDK trace configuration. - pub fn with_trace_config(mut self, config: crate::trace::Config) -> Self { - self.trace_config = Some(config); - self - } - - /// Specify the writer to use. - pub fn with_writer(self, writer: T) -> PipelineBuilder { - PipelineBuilder { - pretty_print: self.pretty_print, - trace_config: self.trace_config, - writer, - } - } -} - -impl PipelineBuilder -where - W: Write + Debug + Send + 'static, -{ - /// Install the stdout exporter pipeline with the recommended defaults. - pub fn install_simple(mut self) -> crate::trace::Tracer { - let exporter = Exporter::new(self.writer, self.pretty_print); - - let mut provider_builder = - crate::trace::TracerProvider::builder().with_simple_exporter(exporter); - if let Some(config) = self.trace_config.take() { - provider_builder = provider_builder.with_config(config); - } - let provider = provider_builder.build(); - - let tracer = - provider.versioned_tracer("opentelemetry", Some(env!("CARGO_PKG_VERSION")), None); - let _ = global::set_tracer_provider(provider); - - tracer - } -} - -/// A [`SpanExporter`] that writes to [`Stdout`] or other configured [`Write`]. -/// -/// [`SpanExporter`]: super::SpanExporter -/// [`Write`]: std::io::Write -/// [`Stdout`]: std::io::Stdout -#[derive(Debug)] -pub struct Exporter { - writer: W, - pretty_print: bool, -} - -impl Exporter { - /// Create a new stdout `Exporter`. - pub fn new(writer: W, pretty_print: bool) -> Self { - Self { - writer, - pretty_print, - } - } -} - -#[async_trait] -impl SpanExporter for Exporter -where - W: Write + Debug + Send + 'static, -{ - /// Export spans to stdout - fn export(&mut self, batch: Vec) -> BoxFuture<'static, ExportResult> { - for span in batch { - if self.pretty_print { - if let Err(err) = self - .writer - .write_all(format!("{:#?}\n", span).as_bytes()) - .map_err(|err| TraceError::ExportFailed(Box::new(Error::from(err)))) - { - return Box::pin(std::future::ready(Err(Into::into(err)))); - } - } else if let Err(err) = self - .writer - .write_all(format!("{:?}\n", span).as_bytes()) - .map_err(|err| TraceError::ExportFailed(Box::new(Error::from(err)))) - { - return Box::pin(std::future::ready(Err(Into::into(err)))); - } - } - - Box::pin(std::future::ready(Ok(()))) - } -} - -/// Stdout exporter's error -#[derive(thiserror::Error, Debug)] -#[error(transparent)] -struct Error(#[from] std::io::Error); - -impl ExportError for Error { - fn exporter_name(&self) -> &'static str { - "stdout" - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/trace.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/trace.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/trace.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/export/trace.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,95 @@ +//! Trace exporters +use crate::Resource; +use futures_util::future::BoxFuture; +use opentelemetry_api::trace::{Event, Link, SpanContext, SpanId, SpanKind, Status, TraceError}; +use std::borrow::Cow; +use std::fmt::Debug; +use std::time::SystemTime; + +/// Describes the result of an export. +pub type ExportResult = Result<(), TraceError>; + +/// `SpanExporter` defines the interface that protocol-specific exporters must +/// implement so that they can be plugged into OpenTelemetry SDK and support +/// sending of telemetry data. +/// +/// The goal of the interface is to minimize burden of implementation for +/// protocol-dependent telemetry exporters. The protocol exporter is expected to +/// be primarily a simple telemetry data encoder and transmitter. +pub trait SpanExporter: Send + Debug { + /// Exports a batch of readable spans. Protocol exporters that will + /// implement this function are typically expected to serialize and transmit + /// the data to the destination. + /// + /// This function will never be called concurrently for the same exporter + /// instance. It can be called again only after the current call returns. + /// + /// This function must not block indefinitely, there must be a reasonable + /// upper limit after which the call must time out with an error result. + /// + /// Any retry logic that is required by the exporter is the responsibility + /// of the exporter. + fn export(&mut self, batch: Vec) -> BoxFuture<'static, ExportResult>; + + /// Shuts down the exporter. Called when SDK is shut down. This is an + /// opportunity for exporter to do any cleanup required. + /// + /// This function should be called only once for each `SpanExporter` + /// instance. After the call to `shutdown`, subsequent calls to `export` are + /// not allowed and should return an error. + /// + /// This function should not block indefinitely (e.g. if it attempts to + /// flush the data and the destination is unavailable). SDK authors + /// can decide if they want to make the shutdown timeout + /// configurable. + fn shutdown(&mut self) {} + + /// This is a hint to ensure that the export of any Spans the exporter + /// has received prior to the call to this function SHOULD be completed + /// as soon as possible, preferably before returning from this method. + /// + /// This function SHOULD provide a way to let the caller know + /// whether it succeeded, failed or timed out. + /// + /// This function SHOULD only be called in cases where it is absolutely necessary, + /// such as when using some FaaS providers that may suspend the process after + /// an invocation, but before the exporter exports the completed spans. + /// + /// This function SHOULD complete or abort within some timeout. This function can be + /// implemented as a blocking API or an asynchronous API which notifies the caller via + /// a callback or an event. OpenTelemetry client authors can decide if they want to + /// make the flush timeout configurable. + fn force_flush(&mut self) -> BoxFuture<'static, ExportResult> { + Box::pin(async { Ok(()) }) + } +} + +/// `SpanData` contains all the information collected by a `Span` and can be used +/// by exporters as a standard input. +#[derive(Clone, Debug, PartialEq)] +pub struct SpanData { + /// Exportable `SpanContext` + pub span_context: SpanContext, + /// Span parent id + pub parent_span_id: SpanId, + /// Span kind + pub span_kind: SpanKind, + /// Span name + pub name: Cow<'static, str>, + /// Span start time + pub start_time: SystemTime, + /// Span end time + pub end_time: SystemTime, + /// Span attributes + pub attributes: crate::trace::EvictedHashMap, + /// Span events + pub events: crate::trace::EvictedQueue, + /// Span Links + pub links: crate::trace::EvictedQueue, + /// Span status + pub status: Status, + /// Resource contains attributes representing an entity that produced this span. + pub resource: Cow<'static, Resource>, + /// Instrumentation library that produced this span + pub instrumentation_lib: crate::InstrumentationLibrary, +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/instrumentation.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/instrumentation.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/instrumentation.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/instrumentation.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,5 @@ -//! Provides instrumentation information for both tracing and metric. -//! See `OTEPS-0083` for details. -//! -//! [OTEPS-0083](https://github.com/open-telemetry/oteps/blob/master/text/0083-component.md) - pub use opentelemetry_api::InstrumentationLibrary; + +/// A logical unit of the application code with which the emitted telemetry can +/// be associated. +pub type Scope = InstrumentationLibrary; diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/lib.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/lib.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,11 +1,92 @@ -//! # OpenTelemetry SDK +//! OpenTelemetry is a collection of tools, APIs, and SDKs. Use it to +//! instrument, generate, collect, and export telemetry data (metrics, logs, and +//! traces) to help you analyze your software's performance and behavior. //! -//! This SDK provides an opinionated reference implementation of -//! the OpenTelemetry API. The SDK implements the specifics of -//! deciding which data to collect through `Sampler`s, and -//! facilitates the delivery of telemetry data to storage systems -//! through `Exporter`s. These can be configured on `Tracer` and -//! `Meter` creation. +//! # Getting Started +//! +//! ```no_run +//! # #[cfg(feature = "trace")] +//! # { +//! use opentelemetry_api::{global, trace::{Tracer, TracerProvider as _}}; +//! use opentelemetry_sdk::trace::TracerProvider; +//! +//! fn main() { +//! // Choose an exporter like `opentelemetry_stdout::SpanExporter` +//! # fn example(new_exporter: impl Fn() -> T) { +//! let exporter = new_exporter(); +//! +//! // Create a new trace pipeline that prints to stdout +//! let provider = TracerProvider::builder() +//! .with_simple_exporter(exporter) +//! .build(); +//! let tracer = provider.tracer("readme_example"); +//! +//! tracer.in_span("doing_work", |cx| { +//! // Traced app logic here... +//! }); +//! +//! // Shutdown trace pipeline +//! global::shutdown_tracer_provider(); +//! # } +//! } +//! # } +//! ``` +//! +//! See the [examples] directory for different integration patterns. +//! +//! See the API [`trace`] module docs for more information on creating and managing +//! spans. +//! +//! [examples]: https://github.com/open-telemetry/opentelemetry-rust/tree/main/examples +//! [`trace`]: https://docs.rs/opentelemetry_api/latest/opentelemetry_api/trace/index.html +//! +//! # Metrics (Beta) +//! +//! Note: the metrics implementation is **still in progress** and **subject to major +//! changes**. +//! +//! ### Creating instruments and recording measurements +//! +//! ``` +//! # #[cfg(feature = "metrics")] +//! # { +//! use opentelemetry_api::{global, KeyValue}; +//! +//! // get a meter from a provider +//! let meter = global::meter("my_service"); +//! +//! // create an instrument +//! let counter = meter.u64_counter("my_counter").init(); +//! +//! // record a measurement +//! counter.add(1, &[KeyValue::new("http.client_ip", "83.164.160.102")]); +//! # } +//! ``` +//! +//! See the [examples] directory for different integration patterns. +//! +//! See the API [`metrics`] module docs for more information on creating and +//! managing instruments. +//! +//! [examples]: https://github.com/open-telemetry/opentelemetry-rust/tree/main/examples +//! [`metrics`]: https://docs.rs/opentelemetry_api/latest/opentelemetry_api/metrics/index.html +//! +//! ## Crate Feature Flags +//! +//! The following core crate feature flags are available: +//! +//! * `trace`: Includes the trace SDK (enabled by default). +//! * `metrics`: Includes the unstable metrics SDK. +//! +//! Support for recording and exporting telemetry asynchronously can be added +//! via the following flags: +//! +//! * `rt-tokio`: Spawn telemetry tasks using [tokio]'s multi-thread runtime. +//! * `rt-tokio-current-thread`: Spawn telemetry tasks on a separate runtime so that the main runtime won't be blocked. +//! * `rt-async-std`: Spawn telemetry tasks using [async-std]'s runtime. +//! +//! [tokio]: https://crates.io/crates/tokio +//! [async-std]: https://crates.io/crates/async-std #![warn( future_incompatible, missing_debug_implementations, @@ -26,8 +107,12 @@ )] #![cfg_attr(test, deny(warnings))] +pub(crate) mod attributes; pub mod export; mod instrumentation; +#[cfg(feature = "logs")] +#[cfg_attr(docsrs, doc(cfg(feature = "logs")))] +pub mod logs; #[cfg(feature = "metrics")] #[cfg_attr(docsrs, doc(cfg(feature = "metrics")))] pub mod metrics; @@ -42,9 +127,11 @@ #[cfg(feature = "trace")] #[cfg_attr(docsrs, doc(cfg(feature = "trace")))] pub mod trace; + #[doc(hidden)] pub mod util; -pub use instrumentation::InstrumentationLibrary; +pub use attributes::*; +pub use instrumentation::{InstrumentationLibrary, Scope}; #[doc(inline)] pub use resource::Resource; diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/logs/config.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/logs/config.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/logs/config.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/logs/config.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,18 @@ +use std::borrow::Cow; + +use crate::Resource; + +/// Log emitter configuration. +#[derive(Debug, Default)] +pub struct Config { + /// Contains attributes representing an entity that produces telemetry. + pub resource: Cow<'static, crate::Resource>, +} + +impl Config { + /// Specify the attributes representing the entity that produces telemetry + pub fn with_resource(mut self, resource: Resource) -> Self { + self.resource = Cow::Owned(resource); + self + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/logs/log_emitter.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/logs/log_emitter.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/logs/log_emitter.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/logs/log_emitter.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,251 @@ +use super::{BatchLogProcessor, BatchMessage, Config, LogProcessor, SimpleLogProcessor}; +use crate::{ + export::logs::{LogData, LogExporter}, + runtime::RuntimeChannel, +}; +use opentelemetry_api::{ + global::{self}, + logs::{LogRecord, LogResult, TraceContext}, + trace::TraceContextExt, + Context, InstrumentationLibrary, +}; + +#[cfg(feature = "logs_level_enabled")] +use opentelemetry_api::logs::Severity; + +use std::{ + borrow::Cow, + sync::{Arc, Weak}, +}; + +#[derive(Debug, Clone)] +/// Creator for `Logger` instances. +pub struct LoggerProvider { + inner: Arc, +} + +/// Default logger name if empty string is provided. +const DEFAULT_COMPONENT_NAME: &str = "rust.opentelemetry.io/sdk/logger"; + +impl opentelemetry_api::logs::LoggerProvider for LoggerProvider { + type Logger = Logger; + + /// Create a new versioned `Logger` instance. + fn versioned_logger( + &self, + name: impl Into>, + version: Option>, + schema_url: Option>, + attributes: Option>, + ) -> Logger { + let name = name.into(); + + let component_name = if name.is_empty() { + Cow::Borrowed(DEFAULT_COMPONENT_NAME) + } else { + name + }; + + self.library_logger(Arc::new(InstrumentationLibrary::new( + component_name, + version, + schema_url, + attributes, + ))) + } + + fn library_logger(&self, library: Arc) -> Self::Logger { + Logger::new(library, Arc::downgrade(&self.inner)) + } +} + +impl LoggerProvider { + /// Build a new logger provider. + pub(crate) fn new(inner: Arc) -> Self { + LoggerProvider { inner } + } + + /// Create a new `LoggerProvider` builder. + pub fn builder() -> Builder { + Builder::default() + } + + /// Config associated with this provider. + pub fn config(&self) -> &Config { + &self.inner.config + } + + /// Log processors associated with this provider. + pub fn log_processors(&self) -> &Vec> { + &self.inner.processors + } + + /// Force flush all remaining logs in log processors and return results. + pub fn force_flush(&self) -> Vec> { + self.log_processors() + .iter() + .map(|processor| processor.force_flush()) + .collect() + } + + /// Shuts down this `LoggerProvider`, panicking on failure. + pub fn shutdown(&mut self) -> Vec> { + self.try_shutdown() + .expect("canont shutdown LoggerProvider when child Loggers are still active") + } + + /// Attempts to shutdown this `LoggerProvider`, succeeding only when + /// all cloned `LoggerProvider` values have been dropped. + pub fn try_shutdown(&mut self) -> Option>> { + Arc::get_mut(&mut self.inner).map(|inner| { + inner + .processors + .iter_mut() + .map(|processor| processor.shutdown()) + .collect() + }) + } +} + +#[derive(Debug)] +pub(crate) struct LoggerProviderInner { + processors: Vec>, + config: Config, +} + +impl Drop for LoggerProviderInner { + fn drop(&mut self) { + for processor in &mut self.processors { + if let Err(err) = processor.shutdown() { + global::handle_error(err); + } + } + } +} + +#[derive(Debug, Default)] +/// Builder for provider attributes. +pub struct Builder { + processors: Vec>, + config: Config, +} + +impl Builder { + /// The `LogExporter` that this provider should use. + pub fn with_simple_exporter(self, exporter: T) -> Self { + let mut processors = self.processors; + processors.push(Box::new(SimpleLogProcessor::new(Box::new(exporter)))); + + Builder { processors, ..self } + } + + /// The `LogExporter` setup using a default `BatchLogProcessor` that this provider should use. + pub fn with_batch_exporter>( + self, + exporter: T, + runtime: R, + ) -> Self { + let batch = BatchLogProcessor::builder(exporter, runtime).build(); + self.with_log_processor(batch) + } + + /// The `LogProcessor` that this provider should use. + pub fn with_log_processor(self, processor: T) -> Self { + let mut processors = self.processors; + processors.push(Box::new(processor)); + + Builder { processors, ..self } + } + + /// The `Config` that this provider should use. + pub fn with_config(self, config: Config) -> Self { + Builder { config, ..self } + } + + /// Create a new provider from this configuration. + pub fn build(self) -> LoggerProvider { + LoggerProvider { + inner: Arc::new(LoggerProviderInner { + processors: self.processors, + config: self.config, + }), + } + } +} + +#[derive(Debug)] +/// The object for emitting [`LogRecord`]s. +/// +/// [`LogRecord`]: opentelemetry_api::logs::LogRecord +pub struct Logger { + instrumentation_lib: Arc, + provider: Weak, +} + +impl Logger { + pub(crate) fn new( + instrumentation_lib: Arc, + provider: Weak, + ) -> Self { + Logger { + instrumentation_lib, + provider, + } + } + + /// LoggerProvider associated with this logger. + pub fn provider(&self) -> Option { + self.provider.upgrade().map(LoggerProvider::new) + } + + /// Instrumentation library information of this logger. + pub fn instrumentation_library(&self) -> &InstrumentationLibrary { + &self.instrumentation_lib + } +} + +impl opentelemetry_api::logs::Logger for Logger { + /// Emit a `LogRecord`. + fn emit(&self, record: LogRecord) { + let provider = match self.provider() { + Some(provider) => provider, + None => return, + }; + let trace_context = Context::map_current(|cx| { + cx.has_active_span() + .then(|| TraceContext::from(cx.span().span_context())) + }); + let config = provider.config(); + for processor in provider.log_processors() { + let mut record = record.clone(); + if let Some(ref trace_context) = trace_context { + record.trace_context = Some(trace_context.clone()) + } + let data = LogData { + record, + resource: config.resource.clone(), + instrumentation: self.instrumentation_library().clone(), + }; + processor.emit(data); + } + } + + #[cfg(feature = "logs_level_enabled")] + fn event_enabled(&self, level: Severity, target: &str) -> bool { + let provider = match self.provider() { + Some(provider) => provider, + None => return false, + }; + + let mut enabled = false; + for processor in provider.log_processors() { + enabled = enabled + || processor.event_enabled( + level, + target, + self.instrumentation_library().name.as_ref(), + ); + } + enabled + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/logs/log_processor.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/logs/log_processor.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/logs/log_processor.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/logs/log_processor.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,383 @@ +use crate::{ + export::logs::{ExportResult, LogData, LogExporter}, + runtime::{RuntimeChannel, TrySend}, +}; +use futures_channel::oneshot; +use futures_util::{ + future::{self, Either}, + {pin_mut, stream, StreamExt as _}, +}; +#[cfg(feature = "logs_level_enabled")] +use opentelemetry_api::logs::Severity; +use opentelemetry_api::{ + global, + logs::{LogError, LogResult}, +}; +use std::thread; +use std::{ + fmt::{self, Debug, Formatter}, + time::Duration, +}; + +/// The interface for plugging into a [`Logger`]. +/// +/// [`Logger`]: crate::logs::Logger +pub trait LogProcessor: Send + Sync + Debug { + /// Called when a log record is ready to processed and exported. + fn emit(&self, data: LogData); + /// Force the logs lying in the cache to be exported. + fn force_flush(&self) -> LogResult<()>; + /// Shuts down the processor. + fn shutdown(&mut self) -> LogResult<()>; + #[cfg(feature = "logs_level_enabled")] + /// Check if logging is enabled + fn event_enabled(&self, level: Severity, target: &str, name: &str) -> bool; +} + +/// A [`LogProcessor`] that exports synchronously when logs are emitted. +/// +/// # Examples +/// +/// Note that the simple processor exports synchronously every time a log is +/// emitted. If you find this limiting, consider the batch processor instead. +#[derive(Debug)] +pub struct SimpleLogProcessor { + sender: crossbeam_channel::Sender>, + shutdown: crossbeam_channel::Receiver<()>, +} + +impl SimpleLogProcessor { + pub(crate) fn new(mut exporter: Box) -> Self { + let (log_tx, log_rx) = crossbeam_channel::unbounded(); + let (shutdown_tx, shutdown_rx) = crossbeam_channel::bounded(0); + + let _ = thread::Builder::new() + .name("opentelemetry-log-exporter".to_string()) + .spawn(move || { + while let Ok(Some(log)) = log_rx.recv() { + if let Err(err) = futures_executor::block_on(exporter.export(vec![log])) { + global::handle_error(err); + } + } + + exporter.shutdown(); + + if let Err(err) = shutdown_tx.send(()) { + global::handle_error(LogError::from(format!( + "could not send shutdown: {:?}", + err + ))); + } + }); + + SimpleLogProcessor { + sender: log_tx, + shutdown: shutdown_rx, + } + } +} + +impl LogProcessor for SimpleLogProcessor { + fn emit(&self, data: LogData) { + if let Err(err) = self.sender.send(Some(data)) { + global::handle_error(LogError::from(format!("error processing log {:?}", err))); + } + } + + fn force_flush(&self) -> LogResult<()> { + // Ignored since all logs in Simple Processor will be exported as they ended. + Ok(()) + } + + fn shutdown(&mut self) -> LogResult<()> { + if self.sender.send(None).is_ok() { + if let Err(err) = self.shutdown.recv() { + global::handle_error(LogError::from(format!( + "error shutting down log processor: {:?}", + err + ))) + } + } + Ok(()) + } + + #[cfg(feature = "logs_level_enabled")] + fn event_enabled(&self, _level: Severity, _target: &str, _name: &str) -> bool { + true + } +} + +/// A [`LogProcessor`] that asynchronously buffers log records and reports +/// them at a preconfigured interval. +pub struct BatchLogProcessor> { + message_sender: R::Sender, +} + +impl> Debug for BatchLogProcessor { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.debug_struct("BatchLogProcessor") + .field("message_sender", &self.message_sender) + .finish() + } +} + +impl> LogProcessor for BatchLogProcessor { + fn emit(&self, data: LogData) { + let result = self.message_sender.try_send(BatchMessage::ExportLog(data)); + + if let Err(err) = result { + global::handle_error(LogError::Other(err.into())); + } + } + + #[cfg(feature = "logs_level_enabled")] + fn event_enabled(&self, _level: Severity, _target: &str, _name: &str) -> bool { + true + } + + fn force_flush(&self) -> LogResult<()> { + let (res_sender, res_receiver) = oneshot::channel(); + self.message_sender + .try_send(BatchMessage::Flush(Some(res_sender))) + .map_err(|err| LogError::Other(err.into()))?; + + futures_executor::block_on(res_receiver) + .map_err(|err| LogError::Other(err.into())) + .and_then(std::convert::identity) + } + + fn shutdown(&mut self) -> LogResult<()> { + let (res_sender, res_receiver) = oneshot::channel(); + self.message_sender + .try_send(BatchMessage::Shutdown(res_sender)) + .map_err(|err| LogError::Other(err.into()))?; + + futures_executor::block_on(res_receiver) + .map_err(|err| LogError::Other(err.into())) + .and_then(std::convert::identity) + } +} + +impl> BatchLogProcessor { + pub(crate) fn new(mut exporter: Box, config: BatchConfig, runtime: R) -> Self { + let (message_sender, message_receiver) = + runtime.batch_message_channel(config.max_queue_size); + let ticker = runtime + .interval(config.scheduled_delay) + .map(|_| BatchMessage::Flush(None)); + let timeout_runtime = runtime.clone(); + + // Spawn worker process via user-defined spawn function. + runtime.spawn(Box::pin(async move { + let mut logs = Vec::new(); + let mut messages = Box::pin(stream::select(message_receiver, ticker)); + + while let Some(message) = messages.next().await { + match message { + // Log has finished, add to buffer of pending logs. + BatchMessage::ExportLog(log) => { + logs.push(log); + + if logs.len() == config.max_export_batch_size { + let result = export_with_timeout( + config.max_export_timeout, + exporter.as_mut(), + &timeout_runtime, + logs.split_off(0), + ) + .await; + + if let Err(err) = result { + global::handle_error(err); + } + } + } + // Log batch interval time reached or a force flush has been invoked, export current spans. + BatchMessage::Flush(res_channel) => { + let result = export_with_timeout( + config.max_export_timeout, + exporter.as_mut(), + &timeout_runtime, + logs.split_off(0), + ) + .await; + + if let Some(channel) = res_channel { + if let Err(result) = channel.send(result) { + global::handle_error(LogError::from(format!( + "failed to send flush result: {:?}", + result + ))); + } + } else if let Err(err) = result { + global::handle_error(err); + } + } + // Stream has terminated or processor is shutdown, return to finish execution. + BatchMessage::Shutdown(ch) => { + let result = export_with_timeout( + config.max_export_timeout, + exporter.as_mut(), + &timeout_runtime, + logs.split_off(0), + ) + .await; + + exporter.shutdown(); + + if let Err(result) = ch.send(result) { + global::handle_error(LogError::from(format!( + "failed to send batch processor shutdown result: {:?}", + result + ))); + } + + break; + } + } + } + })); + + // Return batch processor with link to worker + BatchLogProcessor { message_sender } + } + + /// Create a new batch processor builder + pub fn builder(exporter: E, runtime: R) -> BatchLogProcessorBuilder + where + E: LogExporter, + { + BatchLogProcessorBuilder { + exporter, + config: BatchConfig::default(), + runtime, + } + } +} + +async fn export_with_timeout( + time_out: Duration, + exporter: &mut E, + runtime: &R, + batch: Vec, +) -> ExportResult +where + R: RuntimeChannel, + E: LogExporter + ?Sized, +{ + if batch.is_empty() { + return Ok(()); + } + + let export = exporter.export(batch); + let timeout = runtime.delay(time_out); + pin_mut!(export); + pin_mut!(timeout); + match future::select(export, timeout).await { + Either::Left((export_res, _)) => export_res, + Either::Right((_, _)) => ExportResult::Err(LogError::ExportTimedOut(time_out)), + } +} + +/// Batch log processor configuration +#[derive(Debug)] +pub struct BatchConfig { + /// The maximum queue size to buffer logs for delayed processing. If the + /// queue gets full it drops the logs. The default value of is 2048. + max_queue_size: usize, + + /// The delay interval in milliseconds between two consecutive processing + /// of batches. The default value is 1 second. + scheduled_delay: Duration, + + /// The maximum number of logs to process in a single batch. If there are + /// more than one batch worth of logs then it processes multiple batches + /// of logs one batch after the other without any delay. The default value + /// is 512. + max_export_batch_size: usize, + + /// The maximum duration to export a batch of data. + max_export_timeout: Duration, +} + +impl Default for BatchConfig { + fn default() -> Self { + BatchConfig { + max_queue_size: 2_048, + scheduled_delay: Duration::from_millis(1_000), + max_export_batch_size: 512, + max_export_timeout: Duration::from_millis(30_000), + } + } +} + +/// A builder for creating [`BatchLogProcessor`] instances. +/// +#[derive(Debug)] +pub struct BatchLogProcessorBuilder { + exporter: E, + config: BatchConfig, + runtime: R, +} + +impl BatchLogProcessorBuilder +where + E: LogExporter + 'static, + R: RuntimeChannel, +{ + /// Set max queue size for batches + pub fn with_max_queue_size(self, size: usize) -> Self { + let mut config = self.config; + config.max_queue_size = size; + + BatchLogProcessorBuilder { config, ..self } + } + + /// Set scheduled delay for batches + pub fn with_scheduled_delay(self, delay: Duration) -> Self { + let mut config = self.config; + config.scheduled_delay = delay; + + BatchLogProcessorBuilder { config, ..self } + } + + /// Set max timeout for exporting. + pub fn with_max_timeout(self, timeout: Duration) -> Self { + let mut config = self.config; + config.max_export_timeout = timeout; + + BatchLogProcessorBuilder { config, ..self } + } + + /// Set max export size for batches, should always less than or equals to max queue size. + /// + /// If input is larger than max queue size, will lower it to be equal to max queue size + pub fn with_max_export_batch_size(self, size: usize) -> Self { + let mut config = self.config; + if size > config.max_queue_size { + config.max_export_batch_size = config.max_queue_size; + } else { + config.max_export_batch_size = size; + } + + BatchLogProcessorBuilder { config, ..self } + } + + /// Build a batch processor + pub fn build(self) -> BatchLogProcessor { + BatchLogProcessor::new(Box::new(self.exporter), self.config, self.runtime) + } +} + +/// Messages sent between application thread and batch log processor's work thread. +#[allow(clippy::large_enum_variant)] +#[derive(Debug)] +pub enum BatchMessage { + /// Export logs, usually called when the log is emitted. + ExportLog(LogData), + /// Flush the current buffer to the backend, it can be triggered by + /// pre configured interval or a call to `force_push` function. + Flush(Option>), + /// Shut down the worker thread, push all logs in buffer to the backend. + Shutdown(oneshot::Sender), +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/logs/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/logs/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/logs/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/logs/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,12 @@ +//! # OpenTelemetry Log SDK + +mod config; +mod log_emitter; +mod log_processor; + +pub use config::Config; +pub use log_emitter::{Builder, Logger, LoggerProvider}; +pub use log_processor::{ + BatchConfig, BatchLogProcessor, BatchLogProcessorBuilder, BatchMessage, LogProcessor, + SimpleLogProcessor, +}; diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregation.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregation.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregation.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregation.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,101 @@ +use std::fmt; + +use opentelemetry_api::metrics::{MetricsError, Result}; + +/// The way recorded measurements are summarized. +#[derive(Clone, Debug, PartialEq)] +#[non_exhaustive] +pub enum Aggregation { + /// An aggregation that drops all recorded data. + Drop, + + /// An aggregation that uses the default instrument kind selection mapping to + /// select another aggregation. + /// + /// A metric reader can be configured to make an aggregation selection based on + /// instrument kind that differs from the default. This aggregation ensures the + /// default is used. + /// + /// See the [DefaultAggregationSelector] for information about the default + /// instrument kind selection mapping. + /// + /// [DefaultAggregationSelector]: crate::metrics::reader::DefaultAggregationSelector + Default, + + /// An aggregation that summarizes a set of measurements as their arithmetic + /// sum. + Sum, + + /// An aggregation that summarizes a set of measurements as the last one made. + LastValue, + + /// An aggregation that summarizes a set of measurements as an histogram with + /// explicitly defined buckets. + ExplicitBucketHistogram { + /// The increasing bucket boundary values. + /// + /// Boundary values define bucket upper bounds. Buckets are exclusive of their + /// lower boundary and inclusive of their upper bound (except at positive + /// infinity). A measurement is defined to fall into the greatest-numbered + /// bucket with a boundary that is greater than or equal to the measurement. As + /// an example, boundaries defined as: + /// + /// vec![0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 1000.0]; + /// + /// Will define these buckets: + /// + /// (-∞, 0], (0, 5.0], (5.0, 10.0], (10.0, 25.0], (25.0, 50.0], (50.0, 75.0], + /// (75.0, 100.0], (100.0, 250.0], (250.0, 500.0], (500.0, 1000.0], (1000.0, +∞) + boundaries: Vec, + + /// Indicates whether to not record the min and max of the distribution. + /// + /// By default, these values are recorded. + /// + /// Recording these values for cumulative data is expected to have little + /// value, they will represent the entire life of the instrument instead of + /// just the current collection cycle. It is recommended to set this to + /// `false` for that type of data to avoid computing the low-value + /// instances. + record_min_max: bool, + }, +} + +impl fmt::Display for Aggregation { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + // used for stream id comparisons + let name = match self { + Aggregation::Drop => "Drop", + Aggregation::Default => "Default", + Aggregation::Sum => "Sum", + Aggregation::LastValue => "LastValue", + Aggregation::ExplicitBucketHistogram { .. } => "ExplicitBucketHistogram", + }; + + f.write_str(name) + } +} + +impl Aggregation { + /// Validate that this aggregation has correct configuration + pub fn validate(&self) -> Result<()> { + match self { + Aggregation::Drop => Ok(()), + Aggregation::Default => Ok(()), + Aggregation::Sum => Ok(()), + Aggregation::LastValue => Ok(()), + Aggregation::ExplicitBucketHistogram { boundaries, .. } => { + for x in boundaries.windows(2) { + if x[0] >= x[1] { + return Err(MetricsError::Config(format!( + "aggregation: explicit bucket histogram: non-monotonic boundaries: {:?}", + boundaries, + ))); + } + } + + Ok(()) + } + } + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/ddsketch.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/ddsketch.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/ddsketch.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/ddsketch.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,877 +0,0 @@ -//! DDSketch quantile sketch with relative-error guarantees. -//! DDSketch is a fast and fully-mergeable quantile sketch with relative-error guarantees. -//! -//! The main difference between this approach and previous art is DDSKetch employ a new method to -//! compute the error. Traditionally, the error rate of one sketch is evaluated by rank accuracy, -//! which can still generate a relative large variance if the dataset has long tail. -//! -//! DDSKetch, on the contrary, employs relative error rate that could work well on long tail dataset. -//! -//! The detail of this algorithm can be found in - -use std::{ - any::Any, - cmp::Ordering, - mem, - ops::AddAssign, - sync::{Arc, RwLock}, -}; - -use crate::export::metrics::{Aggregator, Count, Max, Min, MinMaxSumCount, Sum}; -use opentelemetry_api::metrics::{Descriptor, MetricsError, Number, NumberKind, Result}; - -const INITIAL_NUM_BINS: usize = 128; -const GROW_LEFT_BY: i64 = 128; - -const DEFAULT_MAX_NUM_BINS: i64 = 2048; -const DEFAULT_ALPHA: f64 = 0.01; -const DEFAULT_MIN_BOUNDARY: f64 = 1.0e-9; - -/// An aggregator to calculate quantile -pub fn ddsketch(config: &DdSketchConfig, kind: NumberKind) -> DdSketchAggregator { - DdSketchAggregator::new(config, kind) -} - -/// DDSKetch quantile sketch algorithm -/// -/// It can give q-quantiles with α-accurate for any 0<=q<=1. -/// -/// Here the accurate is calculated based on relative-error rate. Thus, the error guarantee adapts the scale of the output data. With relative error guarantee, the histogram can be more accurate in the area of low data density. For example, the long tail of response time data. -/// -/// For example, if the actual percentile is 1 second, and relative-error guarantee -/// is 2%, then the value should within the range of 0.98 to 1.02 -/// second. But if the actual percentile is 1 millisecond, with the same relative-error -/// guarantee, the value returned should within the range of 0.98 to 1.02 millisecond. -/// -/// In order to support both negative and positive inputs, DDSketchAggregator has two DDSketch store within itself to store the negative and positive inputs. -#[derive(Debug)] -pub struct DdSketchAggregator { - inner: RwLock, -} - -impl DdSketchAggregator { - /// Create a new DDSKetchAggregator that would yield a quantile with relative error rate less - /// than `alpha` - /// - /// The input should have a granularity larger than `key_epsilon` - pub fn new(config: &DdSketchConfig, kind: NumberKind) -> DdSketchAggregator { - DdSketchAggregator { - inner: RwLock::new(Inner::new(config, kind)), - } - } -} - -impl Default for DdSketchAggregator { - fn default() -> Self { - DdSketchAggregator::new( - &DdSketchConfig::new(DEFAULT_ALPHA, DEFAULT_MAX_NUM_BINS, DEFAULT_MIN_BOUNDARY), - NumberKind::F64, - ) - } -} - -impl Sum for DdSketchAggregator { - fn sum(&self) -> Result { - self.inner - .read() - .map_err(From::from) - .map(|inner| inner.sum.clone()) - } -} - -impl Min for DdSketchAggregator { - fn min(&self) -> Result { - self.inner - .read() - .map_err(From::from) - .map(|inner| inner.min_value.clone()) - } -} - -impl Max for DdSketchAggregator { - fn max(&self) -> Result { - self.inner - .read() - .map_err(From::from) - .map(|inner| inner.max_value.clone()) - } -} - -impl Count for DdSketchAggregator { - fn count(&self) -> Result { - self.inner - .read() - .map_err(From::from) - .map(|inner| inner.count()) - } -} - -impl MinMaxSumCount for DdSketchAggregator {} - -impl Aggregator for DdSketchAggregator { - fn update(&self, number: &Number, descriptor: &Descriptor) -> Result<()> { - self.inner - .write() - .map_err(From::from) - .map(|mut inner| inner.add(number, descriptor.number_kind())) - } - - fn synchronized_move( - &self, - destination: &Arc<(dyn Aggregator + Send + Sync)>, - descriptor: &Descriptor, - ) -> Result<()> { - if let Some(other) = destination.as_any().downcast_ref::() { - other - .inner - .write() - .map_err(From::from) - .and_then(|mut other| { - self.inner.write().map_err(From::from).map(|mut inner| { - let kind = descriptor.number_kind(); - other.max_value = mem::replace(&mut inner.max_value, kind.zero()); - other.min_value = mem::replace(&mut inner.min_value, kind.zero()); - other.key_epsilon = mem::take(&mut inner.key_epsilon); - other.offset = mem::take(&mut inner.offset); - other.gamma = mem::take(&mut inner.gamma); - other.gamma_ln = mem::take(&mut inner.gamma_ln); - other.positive_store = mem::take(&mut inner.positive_store); - other.negative_store = mem::take(&mut inner.negative_store); - other.sum = mem::replace(&mut inner.sum, kind.zero()); - }) - }) - } else { - Err(MetricsError::InconsistentAggregator(format!( - "Expected {:?}, got: {:?}", - self, destination - ))) - } - } - - fn merge( - &self, - other: &(dyn Aggregator + Send + Sync), - _descriptor: &Descriptor, - ) -> Result<()> { - if let Some(other) = other.as_any().downcast_ref::() { - self.inner.write() - .map_err(From::from) - .and_then(|mut inner| { - other.inner.read() - .map_err(From::from) - .and_then(|other| { - // assert that it can merge - if inner.positive_store.max_num_bins != other.positive_store.max_num_bins { - return Err(MetricsError::InconsistentAggregator(format!( - "When merging two DDSKetchAggregators, their max number of bins must be the same. Expect max number of bins to be {:?}, but get {:?}", inner.positive_store.max_num_bins, other.positive_store.max_num_bins - ))); - } - if inner.negative_store.max_num_bins != other.negative_store.max_num_bins { - return Err(MetricsError::InconsistentAggregator(format!( - "When merging two DDSKetchAggregators, their max number of bins must be the same. Expect max number of bins to be {:?}, but get {:?}", inner.negative_store.max_num_bins, other.negative_store.max_num_bins - ))); - } - - - if (inner.gamma - other.gamma).abs() > std::f64::EPSILON { - return Err(MetricsError::InconsistentAggregator(format!( - "When merging two DDSKetchAggregators, their gamma must be the same. Expect max number of bins to be {:?}, but get {:?}", inner.gamma, other.gamma - ))); - } - - if other.count() == 0 { - return Ok(()); - } - - if inner.count() == 0 { - inner.positive_store.merge(&other.positive_store); - inner.negative_store.merge(&other.negative_store); - inner.sum = other.sum.clone(); - inner.min_value = other.min_value.clone(); - inner.max_value = other.max_value.clone(); - return Ok(()); - } - - inner.positive_store.merge(&other.positive_store); - inner.negative_store.merge(&other.negative_store); - - inner.sum = match inner.kind { - NumberKind::F64 => - Number::from(inner.sum.to_f64(&inner.kind) + other.sum.to_f64(&other.kind)), - NumberKind::U64 => Number::from(inner.sum.to_u64(&inner.kind) + other.sum.to_u64(&other.kind)), - NumberKind::I64 => Number::from(inner.sum.to_i64(&inner.kind) + other.sum.to_i64(&other.kind)) - }; - - if inner.min_value.partial_cmp(&inner.kind, &other.min_value) == Some(Ordering::Greater) { - inner.min_value = other.min_value.clone(); - }; - - if inner.max_value.partial_cmp(&inner.kind, &other.max_value) == Some(Ordering::Less) { - inner.max_value = other.max_value.clone(); - } - - Ok(()) - }) - }) - } else { - Err(MetricsError::InconsistentAggregator(format!( - "Expected {:?}, got: {:?}", - self, other - ))) - } - } - - fn as_any(&self) -> &dyn Any { - self - } -} - -/// DDSKetch Configuration. -#[derive(Debug)] -pub struct DdSketchConfig { - alpha: f64, - max_num_bins: i64, - key_epsilon: f64, -} - -impl DdSketchConfig { - /// Create a new DDSKetch config - pub fn new(alpha: f64, max_num_bins: i64, key_epsilon: f64) -> Self { - DdSketchConfig { - alpha, - max_num_bins, - key_epsilon, - } - } -} - -/// DDSKetch implementation. -/// -/// Note that Inner is not thread-safe. All operation should be protected by a lock or other -/// synchronization. -/// -/// Inner will also convert all Number into actual primitive type and back. -/// -/// According to the paper, the DDSKetch only support positive number. Inner support -/// either positive or negative number. But cannot yield actual result when input has -/// both positive and negative number. -#[derive(Debug)] -struct Inner { - positive_store: Store, - negative_store: Store, - kind: NumberKind, - // sum of all value within store - sum: Number, - // γ = (1 + α)/(1 - α) - gamma: f64, - // ln(γ) - gamma_ln: f64, - // The epsilon when map value to bin key. Any value between [-key_epsilon, key_epsilon] will - // be mapped to bin key 0. Must be a positive number. - key_epsilon: f64, - // offset is here to ensure that keys for positive numbers that are larger than min_value are - // greater than or equal to 1 while the keys for negative numbers are less than or equal to -1. - offset: i64, - - // minimum number that in store. - min_value: Number, - // maximum number that in store. - max_value: Number, -} - -impl Inner { - fn new(config: &DdSketchConfig, kind: NumberKind) -> Inner { - let gamma: f64 = 1.0 + 2.0 * config.alpha / (1.0 - config.alpha); - let mut inner = Inner { - positive_store: Store::new(config.max_num_bins / 2), - negative_store: Store::new(config.max_num_bins / 2), - min_value: kind.max(), - max_value: kind.min(), - sum: kind.zero(), - gamma, - gamma_ln: gamma.ln(), - key_epsilon: config.key_epsilon, - offset: 0, - kind, - }; - // reset offset based on key_epsilon - inner.offset = -(inner.log_gamma(inner.key_epsilon)).ceil() as i64 + 1i64; - inner - } - - fn add(&mut self, v: &Number, kind: &NumberKind) { - let key = self.key(v, kind); - match v.partial_cmp(kind, &Number::from(0.0)) { - Some(Ordering::Greater) | Some(Ordering::Equal) => { - self.positive_store.add(key); - } - Some(Ordering::Less) => { - self.negative_store.add(key); - } - _ => { - // if return none. Do nothing and return - return; - } - } - - // update min and max - if self.min_value.partial_cmp(&self.kind, v) == Some(Ordering::Greater) { - self.min_value = v.clone(); - } - - if self.max_value.partial_cmp(&self.kind, v) == Some(Ordering::Less) { - self.max_value = v.clone(); - } - - match &self.kind { - NumberKind::I64 => { - self.sum = Number::from(self.sum.to_i64(&self.kind) + v.to_i64(kind)); - } - NumberKind::U64 => { - self.sum = Number::from(self.sum.to_u64(&self.kind) + v.to_u64(kind)); - } - NumberKind::F64 => { - self.sum = Number::from(self.sum.to_f64(&self.kind) + v.to_f64(kind)); - } - } - } - - fn key(&self, num: &Number, kind: &NumberKind) -> i64 { - if num.to_f64(kind) < -self.key_epsilon { - let positive_num = match kind { - NumberKind::F64 => Number::from(-num.to_f64(kind)), - NumberKind::U64 => Number::from(num.to_u64(kind)), - NumberKind::I64 => Number::from(-num.to_i64(kind)), - }; - (-self.log_gamma(positive_num.to_f64(kind)).ceil()) as i64 - self.offset - } else if num.to_f64(kind) > self.key_epsilon { - self.log_gamma(num.to_f64(kind)).ceil() as i64 + self.offset - } else { - 0i64 - } - } - - /// get the index of the bucket based on num - fn log_gamma(&self, num: f64) -> f64 { - num.ln() / self.gamma_ln - } - - fn count(&self) -> u64 { - self.negative_store.count + self.positive_store.count - } -} - -#[derive(Debug)] -struct Store { - bins: Vec, - count: u64, - min_key: i64, - max_key: i64, - // maximum number of bins Store can have. - // In the worst case, the bucket can grow as large as the number of the elements inserted into. - // max_num_bins helps control the number of bins. - max_num_bins: i64, -} - -impl Default for Store { - fn default() -> Self { - Store { - bins: vec![0; INITIAL_NUM_BINS], - count: 0, - min_key: 0, - max_key: 0, - max_num_bins: DEFAULT_MAX_NUM_BINS, - } - } -} - -/// DDSKetchInner stores the data -impl Store { - fn new(max_num_bins: i64) -> Store { - Store { - bins: vec![ - 0; - if max_num_bins as usize > INITIAL_NUM_BINS { - INITIAL_NUM_BINS - } else { - max_num_bins as usize - } - ], - count: 0u64, - min_key: 0i64, - max_key: 0i64, - max_num_bins, - } - } - - /// Add count based on key. - /// - /// If key is not in [min_key, max_key], we will expand to left or right - /// - /// - /// The bins are essentially working in a round-robin fashion where we can use all space in bins - /// to represent any continuous space within length. That's why we need to offset the key - /// with `min_key` so that we get the actual bin index. - fn add(&mut self, key: i64) { - if self.count == 0 { - self.max_key = key; - self.min_key = key - self.bins.len() as i64 + 1 - } - - if key < self.min_key { - self.grow_left(key) - } else if key > self.max_key { - self.grow_right(key) - } - let idx = if key - self.min_key < 0 { - 0 - } else { - key - self.min_key - }; - // we unwrap here because grow_left or grow_right will make sure the idx is less than vector size - let bin_count = self.bins.get_mut(idx as usize).unwrap(); - *bin_count += 1; - self.count += 1; - } - - fn grow_left(&mut self, key: i64) { - if self.min_key < key || self.bins.len() >= self.max_num_bins as usize { - return; - } - - let min_key = if self.max_key - key >= self.max_num_bins { - self.max_key - self.max_num_bins + 1 - } else { - let mut min_key = self.min_key; - while min_key > key { - min_key -= GROW_LEFT_BY; - } - min_key - }; - - // The new vector will contain three parts. - // First part is all 0, which is the part expended - // Second part is from existing bins. - // Third part is what's left. - let expected_len = (self.max_key - min_key + 1) as usize; - let mut new_bins = vec![0u64; expected_len]; - let old_bin_slice = &mut new_bins[(self.min_key - min_key) as usize..]; - old_bin_slice.copy_from_slice(&self.bins); - - self.bins = new_bins; - self.min_key = min_key; - } - - fn grow_right(&mut self, key: i64) { - if self.max_key > key { - return; - } - - if key - self.max_key >= self.max_num_bins { - // if currently key minus currently max key is larger than maximum number of bins. - // Move all elements in current bins into the first bin - self.bins = vec![0; self.max_num_bins as usize]; - self.max_key = key; - self.min_key = key - self.max_num_bins + 1; - self.bins.get_mut(0).unwrap().add_assign(self.count); - } else if key - self.min_key >= self.max_num_bins { - let min_key = key - self.max_num_bins + 1; - let upper_bound = if min_key < self.max_key + 1 { - min_key - } else { - self.max_key + 1 - } - self.min_key; - let n = self.bins.iter().take(upper_bound as usize).sum::(); - - if self.bins.len() < self.max_num_bins as usize { - let mut new_bins = vec![0; self.max_num_bins as usize]; - new_bins[0..self.bins.len() - (min_key - self.min_key) as usize] - .as_mut() - .copy_from_slice(&self.bins[(min_key - self.min_key) as usize..]); - self.bins = new_bins; - } else { - // bins length is equal to max number of bins - self.bins.drain(0..(min_key - self.min_key) as usize); - if self.max_num_bins > self.max_key - min_key + 1 { - self.bins.resize( - self.bins.len() - + (self.max_num_bins - (self.max_key - min_key + 1)) as usize, - 0, - ) - } - } - self.max_key = key; - self.min_key = min_key; - self.bins.get_mut(0).unwrap().add_assign(n); - } else { - let mut new_bin = vec![0; (key - self.min_key + 1) as usize]; - new_bin[0..self.bins.len()] - .as_mut() - .copy_from_slice(&self.bins); - self.bins = new_bin; - self.max_key = key; - } - } - - /// Merge two stores - fn merge(&mut self, other: &Store) { - if self.count == 0 { - return; - } - if other.count == 0 { - self.bins = other.bins.clone(); - self.min_key = other.min_key; - self.max_key = other.max_key; - self.count = other.count; - } - - if self.max_key > other.max_key { - if other.min_key < self.min_key { - self.grow_left(other.min_key); - } - let start = if other.min_key > self.min_key { - other.min_key - } else { - self.min_key - } as usize; - for i in start..other.max_key as usize { - self.bins[i - self.min_key as usize] = other.bins[i - other.min_key as usize]; - } - let mut n = 0; - for i in other.min_key as usize..self.min_key as usize { - n += other.bins[i - other.min_key as usize] - } - self.bins[0] += n; - } else if other.min_key < self.min_key { - let mut tmp_bins = vec![0u64; other.bins.len()]; - tmp_bins.as_mut_slice().copy_from_slice(&other.bins); - - for i in self.min_key as usize..self.max_key as usize { - tmp_bins[i - other.min_key as usize] += self.bins[i - self.min_key as usize]; - } - - self.bins = tmp_bins; - self.max_key = other.max_key; - self.min_key = other.min_key; - } else { - self.grow_right(other.max_key); - for i in other.min_key as usize..(other.max_key + 1) as usize { - self.bins[i - self.min_key as usize] += other.bins[i - other.min_key as usize]; - } - } - - self.count += other.count; - } -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::export::metrics::{Aggregator, Count, Max, Min, Sum}; - use opentelemetry_api::metrics::{Descriptor, InstrumentKind, Number, NumberKind}; - use rand_distr::{Distribution, Exp, LogNormal, Normal}; - use std::cmp::Ordering; - use std::sync::Arc; - - const TEST_MAX_BINS: i64 = 1024; - const TEST_ALPHA: f64 = 0.01; - const TEST_KEY_EPSILON: f64 = 1.0e-9; - - // Test utils - - struct Dataset { - data: Vec, - kind: NumberKind, - } - - impl Dataset { - fn from_f64_vec(data: Vec) -> Dataset { - Dataset { - data: data.into_iter().map(Number::from).collect::>(), - kind: NumberKind::F64, - } - } - - fn from_u64_vec(data: Vec) -> Dataset { - Dataset { - data: data.into_iter().map(Number::from).collect::>(), - kind: NumberKind::U64, - } - } - - fn from_i64_vec(data: Vec) -> Dataset { - Dataset { - data: data.into_iter().map(Number::from).collect::>(), - kind: NumberKind::I64, - } - } - - fn sum(&self) -> Number { - match self.kind { - NumberKind::F64 => { - Number::from(self.data.iter().map(|e| e.to_f64(&self.kind)).sum::()) - } - NumberKind::U64 => { - Number::from(self.data.iter().map(|e| e.to_u64(&self.kind)).sum::()) - } - NumberKind::I64 => { - Number::from(self.data.iter().map(|e| e.to_i64(&self.kind)).sum::()) - } - } - } - } - - fn generate_linear_dataset_f64(start: f64, step: f64, num: usize) -> Vec { - let mut vec = Vec::with_capacity(num); - for i in 0..num { - vec.push((start + i as f64 * step) as f64); - } - vec - } - - fn generate_linear_dataset_u64(start: u64, step: u64, num: usize) -> Vec { - let mut vec = Vec::with_capacity(num); - for i in 0..num { - vec.push(start + i as u64 * step); - } - vec - } - - fn generate_linear_dataset_i64(start: i64, step: i64, num: usize) -> Vec { - let mut vec = Vec::with_capacity(num); - for i in 0..num { - vec.push(start + i as i64 * step); - } - vec - } - - /// generate a dataset with normal distribution. Return sorted dataset. - fn generate_normal_dataset(mean: f64, stddev: f64, num: usize) -> Vec { - let normal = Normal::new(mean, stddev).unwrap(); - let mut data = Vec::with_capacity(num); - for _ in 0..num { - data.push(normal.sample(&mut rand::thread_rng())); - } - data.as_mut_slice() - .sort_by(|a, b| a.partial_cmp(b).unwrap()); - data - } - - /// generate a dataset with log normal distribution. Return sorted dataset. - fn generate_log_normal_dataset(mean: f64, stddev: f64, num: usize) -> Vec { - let normal = LogNormal::new(mean, stddev).unwrap(); - let mut data = Vec::with_capacity(num); - for _ in 0..num { - data.push(normal.sample(&mut rand::thread_rng())); - } - data.as_mut_slice() - .sort_by(|a, b| a.partial_cmp(b).unwrap()); - data - } - - fn generate_exponential_dataset(rate: f64, num: usize) -> Vec { - let exponential = Exp::new(rate).unwrap(); - let mut data = Vec::with_capacity(num); - for _ in 0..num { - data.push(exponential.sample(&mut rand::thread_rng())); - } - data.as_mut_slice() - .sort_by(|a, b| a.partial_cmp(b).unwrap()); - data - } - - /// Insert all element of data into ddsketch and assert the quantile result is within the error range. - /// Note that data must be sorted. - fn evaluate_sketch(dataset: Dataset) { - let kind = &dataset.kind; - let ddsketch = DdSketchAggregator::new( - &DdSketchConfig::new(TEST_ALPHA, TEST_MAX_BINS, TEST_KEY_EPSILON), - kind.clone(), - ); - let descriptor = Descriptor::new( - "test".to_string(), - "test", - None, - None, - InstrumentKind::Histogram, - kind.clone(), - ); - - for i in &dataset.data { - let _ = ddsketch.update(i, &descriptor); - } - - assert_eq!( - ddsketch - .min() - .unwrap() - .partial_cmp(kind, dataset.data.get(0).unwrap()), - Some(Ordering::Equal) - ); - assert_eq!( - ddsketch - .max() - .unwrap() - .partial_cmp(kind, dataset.data.last().unwrap()), - Some(Ordering::Equal) - ); - assert_eq!( - ddsketch.sum().unwrap().partial_cmp(kind, &dataset.sum()), - Some(Ordering::Equal) - ); - assert_eq!(ddsketch.count().unwrap(), dataset.data.len() as u64); - } - - // Test basic operation of Store - - /// First set max_num_bins < number of keys, test to see if the store will collapse to left - /// most bin instead of expending beyond the max_num_bins - #[test] - fn test_insert_into_store() { - let mut store = Store::new(200); - for i in -100..1300 { - store.add(i) - } - assert_eq!(store.count, 1400); - assert_eq!(store.bins.len(), 200); - } - - /// Test to see if copy_from_slice will panic because the range size is different in left and right - #[test] - fn test_grow_right() { - let mut store = Store::new(150); - for i in &[-100, -50, 150, -20, 10] { - store.add(*i) - } - assert_eq!(store.count, 5); - } - - /// Test to see if copy_from_slice will panic because the range size is different in left and right - #[test] - fn test_grow_left() { - let mut store = Store::new(150); - for i in &[500, 150, 10] { - store.add(*i) - } - assert_eq!(store.count, 3); - } - - /// Before merge, store1 should hold 300 bins that looks like [201,1,1,1,...], - /// store 2 should hold 200 bins looks like [301,1,1,...] - /// After merge, store 1 should still hold 300 bins with following distribution - /// - /// index [0,0] -> 201 - /// - /// index [1,99] -> 1 - /// - /// index [100, 100] -> 302 - /// - /// index [101, 299] -> 2 - #[test] - fn test_merge_stores() { - let mut store1 = Store::new(300); - let mut store2 = Store::new(200); - for i in 500..1000 { - store1.add(i); - store2.add(i); - } - store1.merge(&store2); - assert_eq!(store1.bins.get(0), Some(&201)); - assert_eq!(&store1.bins[1..100], vec![1u64; 99].as_slice()); - assert_eq!(store1.bins[100], 302); - assert_eq!(&store1.bins[101..], vec![2u64; 199].as_slice()); - assert_eq!(store1.count, 1000); - } - - // Test ddsketch with different distribution - - #[test] - fn test_linear_distribution() { - // test u64 - let mut dataset = Dataset::from_u64_vec(generate_linear_dataset_u64(12, 3, 5000)); - evaluate_sketch(dataset); - - // test i64 - dataset = Dataset::from_i64_vec(generate_linear_dataset_i64(-12, 3, 5000)); - evaluate_sketch(dataset); - - // test f64 - dataset = Dataset::from_f64_vec(generate_linear_dataset_f64(-12.0, 3.0, 5000)); - evaluate_sketch(dataset); - } - - #[test] - fn test_normal_distribution() { - let mut dataset = Dataset::from_f64_vec(generate_normal_dataset(150.0, 1.2, 100)); - evaluate_sketch(dataset); - - dataset = Dataset::from_f64_vec(generate_normal_dataset(-30.0, 4.4, 100)); - evaluate_sketch(dataset); - } - - #[test] - fn test_log_normal_distribution() { - let dataset = Dataset::from_f64_vec(generate_log_normal_dataset(120.0, 0.5, 100)); - evaluate_sketch(dataset); - } - - #[test] - fn test_exponential_distribution() { - let dataset = Dataset::from_f64_vec(generate_exponential_dataset(2.0, 500)); - evaluate_sketch(dataset); - } - - // Test Aggregator operation of DDSketch - #[test] - fn test_synchronized_move() { - let dataset = Dataset::from_f64_vec(generate_normal_dataset(1.0, 3.5, 100)); - let kind = &dataset.kind; - let ddsketch = DdSketchAggregator::new( - &DdSketchConfig::new(TEST_ALPHA, TEST_MAX_BINS, TEST_KEY_EPSILON), - kind.clone(), - ); - let descriptor = Descriptor::new( - "test".to_string(), - "test", - None, - None, - InstrumentKind::Histogram, - kind.clone(), - ); - for i in &dataset.data { - let _ = ddsketch.update(i, &descriptor); - } - let expected_sum = ddsketch.sum().unwrap().to_f64(&NumberKind::F64); - let expected_count = ddsketch.count().unwrap(); - let expected_min = ddsketch.min().unwrap().to_f64(&NumberKind::F64); - let expected_max = ddsketch.max().unwrap().to_f64(&NumberKind::F64); - - let moved_ddsketch: Arc<(dyn Aggregator + Send + Sync)> = - Arc::new(DdSketchAggregator::new( - &DdSketchConfig::new(TEST_ALPHA, TEST_MAX_BINS, TEST_KEY_EPSILON), - NumberKind::F64, - )); - ddsketch - .synchronized_move(&moved_ddsketch, &descriptor) - .expect("Fail to sync move"); - let moved_ddsketch = moved_ddsketch - .as_any() - .downcast_ref::() - .expect("Fail to cast dyn Aggregator down to DDSketchAggregator"); - - // assert sum, max, min and count - assert!( - (moved_ddsketch.max().unwrap().to_f64(&NumberKind::F64) - expected_max).abs() - < std::f64::EPSILON - ); - assert!( - (moved_ddsketch.min().unwrap().to_f64(&NumberKind::F64) - expected_min).abs() - < std::f64::EPSILON - ); - assert!( - (moved_ddsketch.sum().unwrap().to_f64(&NumberKind::F64) - expected_sum).abs() - < std::f64::EPSILON - ); - assert_eq!(moved_ddsketch.count().unwrap(), expected_count); - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/histogram.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/histogram.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/histogram.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/histogram.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,168 +0,0 @@ -use crate::export::metrics::aggregation::{ - Aggregation, AggregationKind, Buckets, Count, Histogram, Sum, -}; -use crate::metrics::{ - aggregators::Aggregator, - sdk_api::{AtomicNumber, Descriptor, Number, NumberKind}, -}; -use opentelemetry_api::metrics::{MetricsError, Result}; -use opentelemetry_api::Context; -use std::mem; -use std::sync::{Arc, RwLock}; - -/// Create a new histogram for the given descriptor with the given boundaries -pub fn histogram(boundaries: &[f64]) -> HistogramAggregator { - let mut sorted_boundaries = boundaries.to_owned(); - sorted_boundaries.sort_by(|a, b| a.partial_cmp(b).unwrap()); - let state = State::empty(&sorted_boundaries); - - HistogramAggregator { - inner: RwLock::new(Inner { - boundaries: sorted_boundaries, - state, - }), - } -} - -/// This aggregator observes events and counts them in pre-determined buckets. It -/// also calculates the sum and count of all events. -#[derive(Debug)] -pub struct HistogramAggregator { - inner: RwLock, -} - -#[derive(Debug)] -struct Inner { - boundaries: Vec, - state: State, -} - -#[derive(Debug)] -struct State { - bucket_counts: Vec, - count: AtomicNumber, - sum: AtomicNumber, -} - -impl State { - fn empty(boundaries: &[f64]) -> Self { - State { - bucket_counts: vec![0.0; boundaries.len() + 1], - count: NumberKind::U64.zero().to_atomic(), - sum: NumberKind::U64.zero().to_atomic(), - } - } -} - -impl Sum for HistogramAggregator { - fn sum(&self) -> Result { - self.inner - .read() - .map_err(From::from) - .map(|inner| inner.state.sum.load()) - } -} - -impl Count for HistogramAggregator { - fn count(&self) -> Result { - self.inner - .read() - .map_err(From::from) - .map(|inner| inner.state.count.load().to_u64(&NumberKind::U64)) - } -} - -impl Histogram for HistogramAggregator { - fn histogram(&self) -> Result { - self.inner - .read() - .map_err(From::from) - .map(|inner| Buckets::new(inner.boundaries.clone(), inner.state.bucket_counts.clone())) - } -} - -impl Aggregation for HistogramAggregator { - fn kind(&self) -> &AggregationKind { - &AggregationKind::HISTOGRAM - } -} - -impl Aggregator for HistogramAggregator { - fn aggregation(&self) -> &dyn Aggregation { - self - } - fn update(&self, _cx: &Context, number: &Number, descriptor: &Descriptor) -> Result<()> { - self.inner.write().map_err(From::from).map(|mut inner| { - let kind = descriptor.number_kind(); - let as_float = number.to_f64(kind); - - let mut bucket_id = inner.boundaries.len(); - for (idx, boundary) in inner.boundaries.iter().enumerate() { - if as_float < *boundary { - bucket_id = idx; - break; - } - } - - inner.state.count.fetch_add(&NumberKind::U64, &1u64.into()); - inner.state.sum.fetch_add(kind, number); - inner.state.bucket_counts[bucket_id] += 1.0; - }) - } - - fn synchronized_move( - &self, - other: &Arc, - _descriptor: &Descriptor, - ) -> Result<()> { - if let Some(other) = other.as_any().downcast_ref::() { - self.inner - .write() - .map_err(From::from) - .and_then(|mut inner| { - other.inner.write().map_err(From::from).map(|mut other| { - let empty = State::empty(&inner.boundaries); - other.state = mem::replace(&mut inner.state, empty) - }) - }) - } else { - Err(MetricsError::InconsistentAggregator(format!( - "Expected {:?}, got: {:?}", - self, other - ))) - } - } - - fn merge(&self, other: &(dyn Aggregator + Send + Sync), desc: &Descriptor) -> Result<()> { - if let Some(other) = other.as_any().downcast_ref::() { - self.inner - .write() - .map_err(From::from) - .and_then(|mut inner| { - other.inner.read().map_err(From::from).map(|other| { - inner - .state - .sum - .fetch_add(desc.number_kind(), &other.state.sum.load()); - inner - .state - .count - .fetch_add(&NumberKind::U64, &other.state.count.load()); - - for idx in 0..inner.state.bucket_counts.len() { - inner.state.bucket_counts[idx] += other.state.bucket_counts[idx]; - } - }) - }) - } else { - Err(MetricsError::InconsistentAggregator(format!( - "Expected {:?}, got: {:?}", - self, other - ))) - } - } - - fn as_any(&self) -> &dyn std::any::Any { - self - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/last_value.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/last_value.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/last_value.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/last_value.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,118 +0,0 @@ -use crate::export::metrics::aggregation::{Aggregation, AggregationKind, LastValue}; -use crate::metrics::{ - aggregators::Aggregator, - sdk_api::{Descriptor, Number}, -}; -use opentelemetry_api::metrics::{MetricsError, Result}; -use opentelemetry_api::Context; -use std::any::Any; -use std::sync::{Arc, Mutex}; -use std::time::SystemTime; - -/// Create a new `LastValueAggregator` -pub fn last_value() -> LastValueAggregator { - LastValueAggregator { - inner: Mutex::new(Inner::default()), - } -} - -/// Aggregates last value events. -#[derive(Debug)] -pub struct LastValueAggregator { - inner: Mutex, -} - -impl Aggregation for LastValueAggregator { - fn kind(&self) -> &AggregationKind { - &AggregationKind::LAST_VALUE - } -} - -impl Aggregator for LastValueAggregator { - fn aggregation(&self) -> &dyn Aggregation { - self - } - - fn update(&self, _cx: &Context, number: &Number, _descriptor: &Descriptor) -> Result<()> { - self.inner.lock().map_err(Into::into).map(|mut inner| { - inner.state = Some(LastValueData { - value: number.clone(), - timestamp: opentelemetry_api::time::now(), - }); - }) - } - - fn synchronized_move( - &self, - other: &Arc, - _descriptor: &Descriptor, - ) -> Result<()> { - if let Some(other) = other.as_any().downcast_ref::() { - self.inner.lock().map_err(From::from).and_then(|mut inner| { - other.inner.lock().map_err(From::from).map(|mut other| { - other.state = inner.state.take(); - }) - }) - } else { - Err(MetricsError::InconsistentAggregator(format!( - "Expected {:?}, got: {:?}", - self, other - ))) - } - } - fn merge( - &self, - other: &(dyn Aggregator + Send + Sync), - _descriptor: &Descriptor, - ) -> Result<()> { - if let Some(other) = other.as_any().downcast_ref::() { - self.inner.lock().map_err(From::from).and_then(|mut inner| { - other.inner.lock().map_err(From::from).map(|mut other| { - match (&inner.state, &other.state) { - // Take if other timestamp is greater - (Some(checkpoint), Some(other_checkpoint)) - if other_checkpoint.timestamp > checkpoint.timestamp => - { - inner.state = other.state.take() - } - // Take if no value exists currently - (None, Some(_)) => inner.state = other.state.take(), - // Otherwise done - _ => (), - } - }) - }) - } else { - Err(MetricsError::InconsistentAggregator(format!( - "Expected {:?}, got: {:?}", - self, other - ))) - } - } - fn as_any(&self) -> &dyn Any { - self - } -} - -impl LastValue for LastValueAggregator { - fn last_value(&self) -> Result<(Number, SystemTime)> { - self.inner.lock().map_err(Into::into).and_then(|inner| { - if let Some(checkpoint) = &inner.state { - Ok((checkpoint.value.clone(), checkpoint.timestamp)) - } else { - Err(MetricsError::NoDataCollected) - } - }) - } -} - -#[derive(Debug, Default)] -struct Inner { - state: Option, -} - -#[derive(Debug)] -struct LastValueData { - value: Number, - timestamp: SystemTime, -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ -//! Metric Aggregators -use core::fmt; -use std::{any::Any, sync::Arc}; - -use crate::{ - export::metrics::aggregation::Aggregation, - metrics::sdk_api::{Descriptor, InstrumentKind, Number, NumberKind}, -}; -use opentelemetry_api::{ - metrics::{MetricsError, Result}, - Context, -}; - -mod histogram; -mod last_value; -mod sum; - -pub use histogram::{histogram, HistogramAggregator}; -pub use last_value::{last_value, LastValueAggregator}; -pub use sum::{sum, SumAggregator}; - -/// RangeTest is a common routine for testing for valid input values. This -/// rejects NaN values. This rejects negative values when the metric instrument -/// does not support negative values, including monotonic counter metrics and -/// absolute Histogram metrics. -pub fn range_test(number: &Number, descriptor: &Descriptor) -> Result<()> { - if descriptor.number_kind() == &NumberKind::F64 && number.is_nan() { - return Err(MetricsError::NaNInput); - } - - match descriptor.instrument_kind() { - InstrumentKind::Counter | InstrumentKind::CounterObserver - if descriptor.number_kind() == &NumberKind::F64 => - { - if number.is_negative(descriptor.number_kind()) { - return Err(MetricsError::NegativeInput); - } - } - _ => (), - }; - Ok(()) -} - -/// Aggregator implements a specific aggregation behavior, i.e., a behavior to -/// track a sequence of updates to an instrument. Sum-only instruments commonly -/// use a simple Sum aggregator, but for the distribution instruments -/// (Histogram, ValueObserver) there are a number of possible aggregators -/// with different cost and accuracy tradeoffs. -/// -/// Note that any Aggregator may be attached to any instrument--this is the -/// result of the OpenTelemetry API/SDK separation. It is possible to attach a -/// Sum aggregator to a Histogram instrument or a MinMaxSumCount aggregator -/// to a Counter instrument. -pub trait Aggregator: fmt::Debug { - /// The interface to access the current state of this Aggregator. - fn aggregation(&self) -> &dyn Aggregation; - - /// Update receives a new measured value and incorporates it into the - /// aggregation. Update calls may be called concurrently. - /// - /// `Descriptor::number_kind` should be consulted to determine whether the - /// provided number is an `i64`, `u64` or `f64`. - /// - /// The current Context could be inspected for a `Baggage` or - /// `SpanContext`. - fn update(&self, context: &Context, number: &Number, descriptor: &Descriptor) -> Result<()>; - - /// This method is called during collection to finish one period of aggregation - /// by atomically saving the currently-updating state into the argument - /// Aggregator. - /// - /// `synchronized_move` is called concurrently with `update`. These two methods - /// must be synchronized with respect to each other, for correctness. - /// - /// This method will return an `InconsistentAggregator` error if this - /// `Aggregator` cannot be copied into the destination due to an incompatible - /// type. - /// - /// This call has no `Context` argument because it is expected to perform only - /// computation. - fn synchronized_move( - &self, - destination: &Arc, - descriptor: &Descriptor, - ) -> Result<()>; - - /// This combines the checkpointed state from the argument `Aggregator` into this - /// `Aggregator`. `merge` is not synchronized with respect to `update` or - /// `synchronized_move`. - /// - /// The owner of an `Aggregator` being merged is responsible for synchronization - /// of both `Aggregator` states. - fn merge(&self, other: &(dyn Aggregator + Send + Sync), descriptor: &Descriptor) -> Result<()>; - - /// Returns the implementing aggregator as `Any` for downcasting. - fn as_any(&self) -> &dyn Any; -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/sum.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/sum.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/sum.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/aggregators/sum.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ -use crate::export::metrics::aggregation::{Aggregation, AggregationKind, Sum}; -use crate::metrics::{ - aggregators::Aggregator, - sdk_api::{AtomicNumber, Descriptor, Number}, -}; -use opentelemetry_api::metrics::{MetricsError, Result}; -use opentelemetry_api::Context; -use std::any::Any; -use std::sync::Arc; - -/// Create a new sum aggregator. -pub fn sum() -> impl Aggregator { - SumAggregator::default() -} - -/// An aggregator for counter events. -#[derive(Debug, Default)] -pub struct SumAggregator { - value: AtomicNumber, -} - -impl Sum for SumAggregator { - fn sum(&self) -> Result { - Ok(self.value.load()) - } -} - -impl Aggregation for SumAggregator { - fn kind(&self) -> &AggregationKind { - &AggregationKind::SUM - } -} - -impl Aggregator for SumAggregator { - fn aggregation(&self) -> &dyn Aggregation { - self - } - - fn update(&self, _cx: &Context, number: &Number, descriptor: &Descriptor) -> Result<()> { - self.value.fetch_add(descriptor.number_kind(), number); - Ok(()) - } - - fn synchronized_move( - &self, - other: &Arc, - descriptor: &Descriptor, - ) -> Result<()> { - if let Some(other) = other.as_any().downcast_ref::() { - let kind = descriptor.number_kind(); - other.value.store(&self.value.load()); - self.value.store(&kind.zero()); - Ok(()) - } else { - Err(MetricsError::InconsistentAggregator(format!( - "Expected {:?}, got: {:?}", - self, other - ))) - } - } - - fn merge(&self, other: &(dyn Aggregator + Send + Sync), descriptor: &Descriptor) -> Result<()> { - if let Some(other_sum) = other.as_any().downcast_ref::() { - self.value - .fetch_add(descriptor.number_kind(), &other_sum.value.load()) - } - - Ok(()) - } - - fn as_any(&self) -> &dyn Any { - self - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/controllers/basic.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/controllers/basic.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/controllers/basic.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/controllers/basic.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,470 +0,0 @@ -use std::{ - collections::HashMap, - fmt, - sync::{Arc, Mutex}, - time::{Duration, SystemTime}, -}; - -use futures_channel::{mpsc, oneshot}; -use futures_util::{stream, StreamExt}; -use opentelemetry_api::{ - global, - metrics::{noop, Meter, MeterProvider, MetricsError, Result}, - Context, InstrumentationLibrary, -}; - -use crate::{ - export::metrics::{ - Checkpointer, CheckpointerFactory, InstrumentationLibraryReader, LockedCheckpointer, - MetricsExporter, Reader, - }, - metrics::{ - accumulator, - registry::{self, UniqueInstrumentMeterCore}, - sdk_api::{ - wrap_meter_core, AsyncInstrumentCore, Descriptor, MeterCore, SyncInstrumentCore, - }, - Accumulator, - }, - runtime::Runtime, - Resource, -}; - -/// DefaultPeriod is used for: -/// -/// - the minimum time between calls to `collect`. -/// - the timeout for `export`. -/// - the timeout for `collect`. -const DEFAULT_PERIOD: Duration = Duration::from_secs(10); - -/// Returns a new builder using the provided checkpointer factory. -/// -/// Use builder options (including optional exporter) to configure a metric -/// export pipeline. -pub fn basic(factory: T) -> BasicControllerBuilder -where - T: CheckpointerFactory + Send + Sync + 'static, -{ - BasicControllerBuilder { - checkpointer_factory: Box::new(factory), - resource: None, - exporter: None, - collect_period: None, - collect_timeout: None, - push_timeout: None, - } -} - -/// Organizes and synchronizes collection of metric data in both "pull" and -/// "push" configurations. -/// -/// This supports two distinct modes: -/// -/// - Push and Pull: `start` must be called to begin calling the exporter; -/// `collect` is called periodically after starting the controller. -/// - Pull-Only: `start` is optional in this case, to call `collect` -/// periodically. If `start` is not called, `collect` can be called manually to -/// initiate collection. -/// -/// The controller supports mixing push and pull access to metric data using the -/// `InstrumentationLibraryReader` interface. -#[derive(Clone)] -pub struct BasicController(Arc); - -struct ControllerInner { - meters: Mutex>>, - checkpointer_factory: Box, - resource: Resource, - exporter: Mutex>>, - worker_channel: Mutex>>, - collect_period: Duration, - collect_timeout: Duration, - push_timeout: Duration, - collected_time: Mutex>, -} - -enum WorkerMessage { - Tick, - Shutdown((Context, oneshot::Sender<()>)), -} - -impl BasicController { - /// This begins a ticker that periodically collects and exports metrics with the - /// configured interval. - /// - /// This is required for calling a configured [`MetricsExporter`] (see - /// [`BasicControllerBuilder::with_exporter`]) and is otherwise optional when - /// only pulling metric data. - /// - /// The passed in context is passed to `collect` and subsequently to - /// asynchronous instrument callbacks. Returns an error when the controller was - /// already started. - /// - /// Note that it is not necessary to start a controller when only pulling data; - /// use the `collect` and `try_for_each` methods directly in this case. - pub fn start(&self, cx: &Context, rt: T) -> Result<()> { - let (message_sender, message_receiver) = mpsc::channel(8); - let ticker = rt - .interval(self.0.collect_period) - .map(|_| WorkerMessage::Tick); - - let exporter = self - .0 - .exporter - .lock() - .map(|mut ex| ex.take()) - .unwrap_or_default(); - let resource = self.resource().clone(); - let reader = self.clone(); - let cx = cx.clone(); - // Spawn worker process via user-defined spawn function. - rt.spawn(Box::pin(async move { - let mut messages = Box::pin(stream::select(message_receiver, ticker)); - while let Some(message) = messages.next().await { - match message { - WorkerMessage::Tick => { - match reader.checkpoint(&cx) { - Ok(_) => { - if let Some(exporter) = &exporter { - // TODO timeout - if let Err(err) = exporter.export(&cx, &resource, &reader) { - global::handle_error(err); - } - } - } - Err(err) => global::handle_error(err), - }; - } - WorkerMessage::Shutdown((cx, channel)) => { - let _ = reader.checkpoint(&cx); - if let Some(exporter) = &exporter { - let _ = exporter.export(&cx, &resource, &reader); - } - let _ = channel.send(()); - break; - } - } - } - })); - - *self.0.worker_channel.lock()? = Some(message_sender); - - Ok(()) - } - - /// This waits for the background worker to return and then collects - /// and exports metrics one last time before returning. - /// - /// The passed context is passed to the final `collect` and subsequently to the - /// final asynchronous instruments. - /// - /// Note that `stop` will not cancel an ongoing collection or export. - pub fn stop(&self, cx: &Context) -> Result<()> { - self.0 - .worker_channel - .lock() - .map_err(Into::into) - .and_then(|mut worker| { - if let Some(mut worker) = worker.take() { - let (res_sender, res_receiver) = oneshot::channel(); - if worker - .try_send(WorkerMessage::Shutdown((cx.clone(), res_sender))) - .is_ok() - { - futures_executor::block_on(res_receiver) - .map_err(|err| MetricsError::Other(err.to_string())) - } else { - Ok(()) - } - } else { - Ok(()) - } - }) - } - - /// true if the controller was started via `start`, indicating that the - /// current `Reader` is being kept up-to-date. - pub fn is_running(&self) -> bool { - self.0 - .worker_channel - .lock() - .map(|wc| wc.is_some()) - .unwrap_or(false) - } - - /// `true` if the collector should collect now, based on the current time, the - /// last collection time, and the configured period. - fn should_collect(&self) -> bool { - self.0 - .collected_time - .lock() - .map(|mut collected_time| { - if self.0.collect_period.as_secs() == 0 && self.0.collect_period.as_nanos() == 0 { - return true; - } - let now = SystemTime::now(); - if let Some(collected_time) = *collected_time { - if now.duration_since(collected_time).unwrap_or_default() - < self.0.collect_period - { - return false; - } - } - - *collected_time = Some(now); - true - }) - .unwrap_or(false) - } - - /// Requests a collection. - /// - /// The collection will be skipped if the last collection is aged less than the - /// configured collection period. - pub fn collect(&self, cx: &Context) -> Result<()> { - if self.is_running() { - // When the ticker is `Some`, there's a component - // computing checkpoints with the collection period. - return Err(MetricsError::Other("controller already started".into())); - } - - if !self.should_collect() { - return Ok(()); - } - - self.checkpoint(cx) - } - - /// Get a reference to the current resource. - pub fn resource(&self) -> &Resource { - &self.0.resource - } - - /// Returns a snapshot of current accumulators registered to this controller. - /// - /// This briefly locks the controller. - fn with_accumulator_list(&self, mut f: F) -> Result - where - F: FnMut(&[&AccumulatorCheckpointer]) -> Result, - { - self.0.meters.lock().map_err(Into::into).and_then(|meters| { - let accs = meters - .values() - .filter_map(|unique| { - unique - .meter_core() - .downcast_ref::() - }) - .collect::>(); - f(&accs) - }) - } - - /// Calls the accumulator and checkpointer interfaces to - /// compute the reader. - fn checkpoint(&self, cx: &Context) -> Result<()> { - self.with_accumulator_list(|accs| { - for acc in accs { - self.checkpoint_single_accumulator(cx, acc)?; - } - - Ok(()) - }) - } - - fn checkpoint_single_accumulator( - &self, - cx: &Context, - ac: &AccumulatorCheckpointer, - ) -> Result<()> { - ac.checkpointer - .checkpoint(&mut |ckpt: &mut dyn LockedCheckpointer| { - ckpt.start_collection(); - - if self.0.collect_timeout.as_secs() != 0 && !self.0.collect_timeout.as_nanos() == 0 - { - // TODO timeouts - } - - ac.accumulator.collect(cx, ckpt.processor()); - - ckpt.finish_collection() - }) - } -} - -impl MeterProvider for BasicController { - fn versioned_meter( - &self, - name: &'static str, - version: Option<&'static str>, - schema_url: Option<&'static str>, - ) -> Meter { - self.0 - .meters - .lock() - .map(|mut meters| { - let library = InstrumentationLibrary::new(name, version, schema_url); - let meter_core = meters.entry(library.clone()).or_insert_with(|| { - let checkpointer = self.0.checkpointer_factory.checkpointer(); - Arc::new(registry::unique_instrument_meter_core( - AccumulatorCheckpointer { - accumulator: accumulator(checkpointer.clone().as_dyn_processor()), - checkpointer, - library: library.clone(), - }, - )) - }); - wrap_meter_core(meter_core.clone(), library) - }) - .unwrap_or_else(|_| { - noop::NoopMeterProvider::new().versioned_meter(name, version, schema_url) - }) - } -} - -struct AccumulatorCheckpointer { - accumulator: Accumulator, - checkpointer: Arc, - library: InstrumentationLibrary, -} - -impl MeterCore for AccumulatorCheckpointer { - fn new_sync_instrument( - &self, - descriptor: Descriptor, - ) -> Result> { - self.accumulator.new_sync_instrument(descriptor) - } - - fn new_async_instrument( - &self, - descriptor: Descriptor, - ) -> Result> { - self.accumulator.new_async_instrument(descriptor) - } - - fn register_callback(&self, f: Box) -> Result<()> { - self.accumulator.register_callback(f) - } -} - -impl InstrumentationLibraryReader for BasicController { - fn try_for_each( - &self, - f: &mut dyn FnMut(&InstrumentationLibrary, &mut dyn Reader) -> Result<()>, - ) -> Result<()> { - let mut res = Ok(()); - self.with_accumulator_list(|acs| { - for ac_pair in acs { - if res.is_err() { - continue; - } - - res = ac_pair - .checkpointer - .checkpoint(&mut |locked| f(&ac_pair.library, locked.reader())) - } - - Ok(()) - })?; - - res - } -} - -impl fmt::Debug for BasicController { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("BasicController") - .field("resource", &self.0.resource) - .field("collect_period", &self.0.collect_period) - .field("collect_timeout", &self.0.collect_timeout) - .field("push_timeout", &self.0.push_timeout) - .field("collected_time", &self.0.collect_timeout) - .finish() - } -} - -/// Options for configuring a [`BasicController`] -pub struct BasicControllerBuilder { - checkpointer_factory: Box, - resource: Option, - exporter: Option>, - collect_period: Option, - collect_timeout: Option, - push_timeout: Option, -} - -impl BasicControllerBuilder { - /// Sets the [`Resource`] used for this controller. - pub fn with_resource(mut self, resource: Resource) -> Self { - self.resource = Some(resource); - self - } - - /// Sets the exporter used for exporting metric data. - /// - /// Note: Exporters such as Prometheus that pull data do not implement - /// [`MetricsExporter`]. They will directly call `collect` and `try_for_each`. - pub fn with_exporter(mut self, exporter: impl MetricsExporter + Send + Sync + 'static) -> Self { - self.exporter = Some(Box::new(exporter)); - self - } - - /// Sets the interval between calls to `collect` a checkpoint. - /// - /// When pulling metrics and not exporting, this is the minimum time between - /// calls to `collect.In a pull-only configuration, collection is performed on - /// demand; set this to `0` to always recompute the export record set. - /// - /// When exporting metrics, this must be > 0. - /// - /// Default value is 10s. - pub fn with_collect_period(mut self, collect_period: Duration) -> Self { - self.collect_period = Some(collect_period); - self - } - - /// Sets the timeout of the `collect` and subsequent observer instrument - /// callbacks. - /// - /// Default value is 10s. If zero or none, no collect timeout is applied. - pub fn with_collect_timeout(mut self, collect_timeout: Duration) -> Self { - self.collect_timeout = Some(collect_timeout); - self - } - - /// Sets push controller timeout when a exporter is configured. - /// - /// Default value is 10s. If zero, no export timeout is applied. - pub fn with_push_timeout(mut self, push_timeout: Duration) -> Self { - self.push_timeout = Some(push_timeout); - self - } - - /// Creates a new basic controller. - pub fn build(self) -> BasicController { - BasicController(Arc::new(ControllerInner { - meters: Default::default(), - checkpointer_factory: self.checkpointer_factory, - resource: self.resource.unwrap_or_default(), - exporter: Mutex::new(self.exporter), - worker_channel: Mutex::new(None), - collect_period: self.collect_period.unwrap_or(DEFAULT_PERIOD), - collect_timeout: self.collect_timeout.unwrap_or(DEFAULT_PERIOD), - push_timeout: self.push_timeout.unwrap_or(DEFAULT_PERIOD), - collected_time: Default::default(), - })) - } -} - -impl fmt::Debug for BasicControllerBuilder { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("BasicControllerBuilder") - .field("resource", &self.resource) - .field("collect_period", &self.collect_period) - .field("collect_timeout", &self.collect_timeout) - .field("push_timeout", &self.push_timeout) - .finish() - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/controllers/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/controllers/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/controllers/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/controllers/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -//! SDK Metrics Controllers -mod basic; - -pub use basic::{basic, BasicController, BasicControllerBuilder}; diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/controllers/push.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/controllers/push.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/controllers/push.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/controllers/push.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,199 +0,0 @@ -use crate::{ - export::metrics::{AggregatorSelector, Checkpointer, ExportKindFor, Exporter}, - metrics::{ - self, - processors::{self, BasicProcessor}, - Accumulator, - }, - Resource, -}; -use futures_channel::mpsc; -use futures_util::{ - future::Future, - stream::{select, Stream, StreamExt as _}, - task, -}; -use opentelemetry_api::global; -use opentelemetry_api::metrics::registry; -use std::pin::Pin; -use std::sync::{Arc, Mutex}; -use std::time; - -const DEFAULT_PUSH_PERIOD: time::Duration = time::Duration::from_secs(10); - -/// Create a new `PushControllerBuilder`. -pub fn push( - aggregator_selector: AS, - export_selector: ES, - exporter: E, - spawn: SP, - interval: I, -) -> PushControllerBuilder -where - AS: AggregatorSelector + Send + Sync + 'static, - ES: ExportKindFor + Send + Sync + 'static, - E: Exporter + Send + Sync + 'static, - SP: Fn(PushControllerWorker) -> SO, - I: Fn(time::Duration) -> IO, -{ - PushControllerBuilder { - aggregator_selector: Box::new(aggregator_selector), - export_selector: Box::new(export_selector), - exporter: Box::new(exporter), - spawn, - interval, - resource: None, - period: None, - timeout: None, - } -} - -/// Organizes a periodic push of metric data. -#[derive(Debug)] -pub struct PushController { - message_sender: Mutex>, - provider: registry::RegistryMeterProvider, -} - -#[derive(Debug)] -enum PushMessage { - Tick, - Shutdown, -} - -/// The future which executes push controller work periodically. Can be run on a -/// passed in executor. -#[allow(missing_debug_implementations)] -pub struct PushControllerWorker { - messages: Pin + Send>>, - accumulator: Accumulator, - processor: Arc, - exporter: Box, - _timeout: time::Duration, -} - -impl PushControllerWorker { - fn on_tick(&mut self) { - // TODO handle timeout - if let Err(err) = self.processor.lock().and_then(|mut checkpointer| { - checkpointer.start_collection(); - self.accumulator.0.collect(&mut checkpointer); - checkpointer.finish_collection()?; - self.exporter.export(checkpointer.checkpoint_set()) - }) { - global::handle_error(err) - } - } -} - -impl Future for PushControllerWorker { - type Output = (); - fn poll(mut self: Pin<&mut Self>, cx: &mut task::Context<'_>) -> task::Poll { - loop { - match futures_util::ready!(self.messages.poll_next_unpin(cx)) { - // Span batch interval time reached, export current spans. - Some(PushMessage::Tick) => self.on_tick(), - // Stream has terminated or processor is shutdown, return to finish execution. - None | Some(PushMessage::Shutdown) => { - return task::Poll::Ready(()); - } - } - } - } -} - -impl Drop for PushControllerWorker { - fn drop(&mut self) { - // Try to push data one last time - self.on_tick() - } -} - -impl PushController { - /// The controller's meter provider. - pub fn provider(&self) -> registry::RegistryMeterProvider { - self.provider.clone() - } -} - -impl Drop for PushController { - fn drop(&mut self) { - if let Ok(mut sender) = self.message_sender.lock() { - let _ = sender.try_send(PushMessage::Shutdown); - } - } -} - -/// Configuration for building a new `PushController`. -#[derive(Debug)] -pub struct PushControllerBuilder { - aggregator_selector: Box, - export_selector: Box, - exporter: Box, - spawn: S, - interval: I, - resource: Option, - period: Option, - timeout: Option, -} - -impl PushControllerBuilder -where - S: Fn(PushControllerWorker) -> SO, - I: Fn(time::Duration) -> IS, - IS: Stream + Send + 'static, -{ - /// Configure the period of this controller - pub fn with_period(self, period: time::Duration) -> Self { - PushControllerBuilder { - period: Some(period), - ..self - } - } - - /// Configure the resource used by this controller - pub fn with_resource(self, resource: Resource) -> Self { - PushControllerBuilder { - resource: Some(resource), - ..self - } - } - - /// Config the timeout of one request. - pub fn with_timeout(self, duration: time::Duration) -> Self { - PushControllerBuilder { - timeout: Some(duration), - ..self - } - } - - /// Build a new `PushController` with this configuration. - pub fn build(self) -> PushController { - let processor = processors::basic(self.aggregator_selector, self.export_selector, false); - let processor = Arc::new(processor); - let mut accumulator = metrics::accumulator(processor.clone()); - - if let Some(resource) = self.resource { - accumulator = accumulator.with_resource(resource); - } - let accumulator = accumulator.build(); - let provider = registry::meter_provider(Arc::new(accumulator.clone())); - - let (message_sender, message_receiver) = mpsc::channel(256); - let ticker = - (self.interval)(self.period.unwrap_or(DEFAULT_PUSH_PERIOD)).map(|_| PushMessage::Tick); - - (self.spawn)(PushControllerWorker { - messages: Box::pin(select(message_receiver, ticker)), - accumulator, - processor, - exporter: self.exporter, - _timeout: self.timeout.unwrap_or(DEFAULT_PUSH_PERIOD), - }); - - PushController { - message_sender: Mutex::new(message_sender), - provider, - } - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/data/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/data/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/data/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/data/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,208 @@ +//! Types for delivery of pre-aggregated metric time series data. + +use std::{any, borrow::Cow, fmt, time::SystemTime}; + +use opentelemetry_api::{metrics::Unit, KeyValue}; + +use crate::{attributes::AttributeSet, instrumentation::Scope, Resource}; + +pub use self::temporality::Temporality; + +mod temporality; + +/// A collection of [ScopeMetrics] and the associated [Resource] that created them. +#[derive(Debug)] +pub struct ResourceMetrics { + /// The entity that collected the metrics. + pub resource: Resource, + /// The collection of metrics with unique [Scope]s. + pub scope_metrics: Vec, +} + +/// A collection of metrics produced by a meter. +#[derive(Default, Debug)] +pub struct ScopeMetrics { + /// The [Scope] that the meter was created with. + pub scope: Scope, + /// The list of aggregations created by the meter. + pub metrics: Vec, +} + +/// A collection of one or more aggregated time series from an [Instrument]. +/// +/// [Instrument]: crate::metrics::Instrument +#[derive(Debug)] +pub struct Metric { + /// The name of the instrument that created this data. + pub name: Cow<'static, str>, + /// The description of the instrument, which can be used in documentation. + pub description: Cow<'static, str>, + /// The unit in which the instrument reports. + pub unit: Unit, + /// The aggregated data from an instrument. + pub data: Box, +} + +/// The store of data reported by an [Instrument]. +/// +/// It will be one of: [Gauge], [Sum], or [Histogram]. +/// +/// [Instrument]: crate::metrics::Instrument +pub trait Aggregation: fmt::Debug + any::Any + Send + Sync { + /// Support downcasting + fn as_any(&self) -> &dyn any::Any; +} + +/// A measurement of the current value of an instrument. +#[derive(Debug)] +pub struct Gauge { + /// Represents individual aggregated measurements with unique attributes. + pub data_points: Vec>, +} + +impl Aggregation for Gauge { + fn as_any(&self) -> &dyn any::Any { + self + } +} + +/// Represents the sum of all measurements of values from an instrument. +#[derive(Debug)] +pub struct Sum { + /// Represents individual aggregated measurements with unique attributes. + pub data_points: Vec>, + /// Describes if the aggregation is reported as the change from the last report + /// time, or the cumulative changes since a fixed start time. + pub temporality: Temporality, + /// Whether this aggregation only increases or decreases. + pub is_monotonic: bool, +} + +impl Aggregation for Sum { + fn as_any(&self) -> &dyn any::Any { + self + } +} + +/// DataPoint is a single data point in a time series. +#[derive(Debug)] +pub struct DataPoint { + /// Attributes is the set of key value pairs that uniquely identify the + /// time series. + pub attributes: AttributeSet, + /// The time when the time series was started. + pub start_time: Option, + /// The time when the time series was recorded. + pub time: Option, + /// The value of this data point. + pub value: T, + /// The sampled [Exemplar]s collected during the time series. + pub exemplars: Vec>, +} + +impl Clone for DataPoint { + fn clone(&self) -> Self { + Self { + attributes: self.attributes.clone(), + start_time: self.start_time, + time: self.time, + value: self.value, + exemplars: self.exemplars.clone(), + } + } +} + +/// Represents the histogram of all measurements of values from an instrument. +#[derive(Debug)] +pub struct Histogram { + /// Individual aggregated measurements with unique attributes. + pub data_points: Vec>, + /// Describes if the aggregation is reported as the change from the last report + /// time, or the cumulative changes since a fixed start time. + pub temporality: Temporality, +} + +impl Aggregation for Histogram { + fn as_any(&self) -> &dyn any::Any { + self + } +} + +/// A single histogram data point in a time series. +#[derive(Debug)] +pub struct HistogramDataPoint { + /// The set of key value pairs that uniquely identify the time series. + pub attributes: AttributeSet, + /// The time when the time series was started. + pub start_time: SystemTime, + /// The time when the time series was recorded. + pub time: SystemTime, + + /// The number of updates this histogram has been calculated with. + pub count: u64, + /// The upper bounds of the buckets of the histogram. + /// + /// Because the last boundary is +infinity this one is implied. + pub bounds: Vec, + /// The count of each of the buckets. + pub bucket_counts: Vec, + + /// The minimum value recorded. + pub min: Option, + /// The maximum value recorded. + pub max: Option, + /// The sum of the values recorded. + pub sum: T, + + /// The sampled [Exemplar]s collected during the time series. + pub exemplars: Vec>, +} + +impl Clone for HistogramDataPoint { + fn clone(&self) -> Self { + Self { + attributes: self.attributes.clone(), + start_time: self.start_time, + time: self.time, + count: self.count, + bounds: self.bounds.clone(), + bucket_counts: self.bucket_counts.clone(), + min: self.min, + max: self.max, + sum: self.sum, + exemplars: self.exemplars.clone(), + } + } +} + +/// A measurement sampled from a time series providing a typical example. +#[derive(Debug)] +pub struct Exemplar { + /// The attributes recorded with the measurement but filtered out of the + /// time series' aggregated data. + pub filtered_attributes: Vec, + /// The time when the measurement was recorded. + pub time: SystemTime, + /// The measured value. + pub value: T, + /// The ID of the span that was active during the measurement. + /// + /// If no span was active or the span was not sampled this will be empty. + pub span_id: [u8; 8], + /// The ID of the trace the active span belonged to during the measurement. + /// + /// If no span was active or the span was not sampled this will be empty. + pub trace_id: [u8; 16], +} + +impl Clone for Exemplar { + fn clone(&self) -> Self { + Self { + filtered_attributes: self.filtered_attributes.clone(), + time: self.time, + value: self.value, + span_id: self.span_id, + trace_id: self.trace_id, + } + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/data/temporality.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/data/temporality.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/data/temporality.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/data/temporality.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,16 @@ +/// Defines the window that an aggregation was calculated over. +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] +#[non_exhaustive] +pub enum Temporality { + /// A measurement interval that continues to expand forward in time from a + /// starting point. + /// + /// New measurements are added to all previous measurements since a start time. + Cumulative, + + /// A measurement interval that resets each cycle. + /// + /// Measurements from one cycle are recorded independently, measurements from + /// other cycles do not affect them. + Delta, +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/exporter.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/exporter.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/exporter.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/exporter.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,34 @@ +//! Interfaces for exporting metrics +use async_trait::async_trait; + +use opentelemetry_api::metrics::Result; + +use crate::metrics::{ + data::ResourceMetrics, + reader::{AggregationSelector, TemporalitySelector}, +}; + +/// Exporter handles the delivery of metric data to external receivers. +/// +/// This is the final component in the metric push pipeline. +#[async_trait] +pub trait PushMetricsExporter: + AggregationSelector + TemporalitySelector + Send + Sync + 'static +{ + /// Export serializes and transmits metric data to a receiver. + /// + /// All retry logic must be contained in this function. The SDK does not + /// implement any retry logic. All errors returned by this function are + /// considered unrecoverable and will be reported to a configured error + /// Handler. + async fn export(&self, metrics: &mut ResourceMetrics) -> Result<()>; + + /// Flushes any metric data held by an exporter. + async fn force_flush(&self) -> Result<()>; + + /// Releases any held computational resources. + /// + /// After Shutdown is called, calls to Export will perform no operation and + /// instead will return an error indicating the shutdown state. + fn shutdown(&self) -> Result<()>; +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/instrument.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/instrument.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/instrument.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/instrument.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,367 @@ +use std::{any::Any, borrow::Cow, collections::HashSet, hash::Hash, marker, sync::Arc}; + +use opentelemetry_api::{ + metrics::{ + AsyncInstrument, MetricsError, Result, SyncCounter, SyncHistogram, SyncUpDownCounter, Unit, + }, + Key, KeyValue, +}; + +use crate::{ + attributes::AttributeSet, + instrumentation::Scope, + metrics::data::Temporality, + metrics::{aggregation::Aggregation, internal::Aggregator}, +}; + +pub(crate) const EMPTY_AGG_MSG: &str = "no aggregators for observable instrument"; + +/// The identifier of a group of instruments that all perform the same function. +#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq)] +pub enum InstrumentKind { + /// Identifies a group of instruments that record increasing values synchronously + /// with the code path they are measuring. + Counter, + /// A group of instruments that record increasing and decreasing values + /// synchronously with the code path they are measuring. + UpDownCounter, + /// A group of instruments that record a distribution of values synchronously with + /// the code path they are measuring. + Histogram, + /// A group of instruments that record increasing values in an asynchronous + /// callback. + ObservableCounter, + /// A group of instruments that record increasing and decreasing values in an + /// asynchronous callback. + ObservableUpDownCounter, + /// a group of instruments that record current values in an asynchronous callback. + ObservableGauge, +} + +/// Describes properties an instrument is created with, also used for filtering +/// in [View](crate::metrics::View)s. +/// +/// # Example +/// +/// Instruments can be used as criteria for views. +/// +/// ``` +/// use opentelemetry_sdk::metrics::{new_view, Aggregation, Instrument, Stream}; +/// +/// let criteria = Instrument::new().name("counter_*"); +/// let mask = Stream::new().aggregation(Aggregation::Sum); +/// +/// let view = new_view(criteria, mask); +/// # drop(view); +/// ``` +#[derive(Clone, Default, Debug, PartialEq)] +#[non_exhaustive] +pub struct Instrument { + /// The human-readable identifier of the instrument. + pub name: Cow<'static, str>, + /// describes the purpose of the instrument. + pub description: Cow<'static, str>, + /// The functional group of the instrument. + pub kind: Option, + /// Unit is the unit of measurement recorded by the instrument. + pub unit: Unit, + /// The instrumentation that created the instrument. + pub scope: Scope, +} + +impl Instrument { + /// Create a new instrument with default values + pub fn new() -> Self { + Instrument::default() + } + + /// Set the instrument name. + pub fn name(mut self, name: impl Into>) -> Self { + self.name = name.into(); + self + } + + /// Set the instrument description. + pub fn description(mut self, description: impl Into>) -> Self { + self.description = description.into(); + self + } + + /// Set the instrument unit. + pub fn unit(mut self, unit: Unit) -> Self { + self.unit = unit; + self + } + + /// Set the instrument scope. + pub fn scope(mut self, scope: Scope) -> Self { + self.scope = scope; + self + } + + /// empty returns if all fields of i are their default-value. + pub(crate) fn is_empty(&self) -> bool { + self.name == "" + && self.description == "" + && self.kind.is_none() + && self.unit.as_str() == "" + && self.scope == Scope::default() + } + + pub(crate) fn matches(&self, other: &Instrument) -> bool { + self.matches_name(other) + && self.matches_description(other) + && self.matches_kind(other) + && self.matches_unit(other) + && self.matches_scope(other) + } + + pub(crate) fn matches_name(&self, other: &Instrument) -> bool { + self.name.is_empty() || self.name.as_ref() == other.name.as_ref() + } + + pub(crate) fn matches_description(&self, other: &Instrument) -> bool { + self.description.is_empty() || self.description.as_ref() == other.description.as_ref() + } + + pub(crate) fn matches_kind(&self, other: &Instrument) -> bool { + self.kind.is_none() || self.kind == other.kind + } + + pub(crate) fn matches_unit(&self, other: &Instrument) -> bool { + self.unit.as_str() == "" || self.unit == other.unit + } + + pub(crate) fn matches_scope(&self, other: &Instrument) -> bool { + (self.scope.name.is_empty() || self.scope.name.as_ref() == other.scope.name.as_ref()) + && (self.scope.version.is_none() + || self.scope.version.as_ref().map(AsRef::as_ref) + == other.scope.version.as_ref().map(AsRef::as_ref)) + && (self.scope.schema_url.is_none() + || self.scope.schema_url.as_ref().map(AsRef::as_ref) + == other.scope.schema_url.as_ref().map(AsRef::as_ref)) + } +} + +/// Describes the stream of data an instrument produces. +/// +/// # Example +/// +/// Streams can be used as masks in views. +/// +/// ``` +/// use opentelemetry_sdk::metrics::{new_view, Aggregation, Instrument, Stream}; +/// +/// let criteria = Instrument::new().name("counter_*"); +/// let mask = Stream::new().aggregation(Aggregation::Sum); +/// +/// let view = new_view(criteria, mask); +/// # drop(view); +/// ``` +#[derive(Default, Debug)] +#[non_exhaustive] +pub struct Stream { + /// The human-readable identifier of the stream. + pub name: Cow<'static, str>, + /// Describes the purpose of the data. + pub description: Cow<'static, str>, + /// the unit of measurement recorded. + pub unit: Unit, + /// Aggregation the stream uses for an instrument. + pub aggregation: Option, + /// An allow-list of attribute keys that will be preserved for the stream. + /// + /// Any attribute recorded for the stream with a key not in this set will be + /// dropped. If the set is empty, all attributes will be dropped, if `None` all + /// attributes will be kept. + pub allowed_attribute_keys: Option>>, +} + +impl Stream { + /// Create a new stream with empty values. + pub fn new() -> Self { + Stream::default() + } + + /// Set the stream name. + pub fn name(mut self, name: impl Into>) -> Self { + self.name = name.into(); + self + } + + /// Set the stream description. + pub fn description(mut self, description: impl Into>) -> Self { + self.description = description.into(); + self + } + + /// Set the stream unit. + pub fn unit(mut self, unit: Unit) -> Self { + self.unit = unit; + self + } + + /// Set the stream aggregation. + pub fn aggregation(mut self, aggregation: Aggregation) -> Self { + self.aggregation = Some(aggregation); + self + } + + /// Set the stream allowed attribute keys. + /// + /// Any attribute recorded for the stream with a key not in this set will be + /// dropped. If this set is empty all attributes will be dropped. + pub fn allowed_attribute_keys(mut self, attribute_keys: impl IntoIterator) -> Self { + self.allowed_attribute_keys = Some(Arc::new(attribute_keys.into_iter().collect())); + + self + } +} + +/// the identifying properties of a stream. +#[derive(Debug, PartialEq, Eq, Hash)] +pub(crate) struct StreamId { + /// The human-readable identifier of the stream. + pub(crate) name: Cow<'static, str>, + /// Describes the purpose of the data. + pub(crate) description: Cow<'static, str>, + /// the unit of measurement recorded. + pub(crate) unit: Unit, + /// The stream uses for an instrument. + pub(crate) aggregation: String, + /// Monotonic is the monotonicity of an instruments data type. This field is + /// not used for all data types, so a zero value needs to be understood in the + /// context of Aggregation. + pub(crate) monotonic: bool, + /// Temporality is the temporality of a stream's data type. This field is + /// not used by some data types. + pub(crate) temporality: Option, + /// Number is the number type of the stream. + pub(crate) number: Cow<'static, str>, +} + +pub(crate) struct InstrumentImpl { + pub(crate) aggregators: Vec>>, +} + +impl SyncCounter for InstrumentImpl { + fn add(&self, val: T, attrs: &[KeyValue]) { + for agg in &self.aggregators { + agg.aggregate(val, AttributeSet::from(attrs)) + } + } +} + +impl SyncUpDownCounter for InstrumentImpl { + fn add(&self, val: T, attrs: &[KeyValue]) { + for agg in &self.aggregators { + agg.aggregate(val, AttributeSet::from(attrs)) + } + } +} + +impl SyncHistogram for InstrumentImpl { + fn record(&self, val: T, attrs: &[KeyValue]) { + for agg in &self.aggregators { + agg.aggregate(val, AttributeSet::from(attrs)) + } + } +} + +/// A comparable unique identifier of an observable. +#[derive(Clone, Debug)] +pub(crate) struct ObservableId { + pub(crate) inner: IdInner, + _marker: marker::PhantomData, +} + +#[derive(Clone, Debug, Hash, PartialEq, Eq)] +pub(crate) struct IdInner { + /// The human-readable identifier of the instrument. + pub(crate) name: Cow<'static, str>, + /// describes the purpose of the instrument. + pub(crate) description: Cow<'static, str>, + /// The functional group of the instrument. + kind: InstrumentKind, + /// The unit of measurement recorded by the instrument. + pub(crate) unit: Unit, + /// The instrumentation that created the instrument. + scope: Scope, +} + +impl Hash for ObservableId { + fn hash(&self, state: &mut H) { + self.inner.hash(state) + } +} + +impl PartialEq for ObservableId { + fn eq(&self, other: &Self) -> bool { + self.inner == other.inner + } +} + +impl Eq for ObservableId {} + +#[derive(Clone)] +pub(crate) struct Observable { + pub(crate) id: ObservableId, + aggregators: Vec>>, +} + +impl Observable { + pub(crate) fn new( + scope: Scope, + kind: InstrumentKind, + name: Cow<'static, str>, + description: Cow<'static, str>, + unit: Unit, + aggregators: Vec>>, + ) -> Self { + Self { + id: ObservableId { + inner: IdInner { + name, + description, + kind, + unit, + scope, + }, + _marker: marker::PhantomData, + }, + aggregators, + } + } + + /// Returns `Err` if the observable should not be registered, and `Ok` if it + /// should. + /// + /// An error is returned if this observable is effectively a no-op because it does not have + /// any aggregators. Also, an error is returned if scope defines a Meter other + /// than the observable it was created by. + pub(crate) fn registerable(&self, scope: &Scope) -> Result<()> { + if self.aggregators.is_empty() { + return Err(MetricsError::Other(EMPTY_AGG_MSG.into())); + } + if &self.id.inner.scope != scope { + return Err(MetricsError::Other(format!( + "invalid registration: observable {} from Meter {:?}, registered with Meter {}", + self.id.inner.name, self.id.inner.scope, scope.name, + ))); + } + + Ok(()) + } +} + +impl AsyncInstrument for Observable { + fn observe(&self, measurement: T, attrs: &[KeyValue]) { + for agg in &self.aggregators { + agg.aggregate(measurement, AttributeSet::from(attrs)) + } + } + + fn as_any(&self) -> Arc { + Arc::new(self.clone()) + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/aggregator.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/aggregator.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/aggregator.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/aggregator.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,42 @@ +use crate::{attributes::AttributeSet, metrics::data::Aggregation}; +use once_cell::sync::Lazy; +use opentelemetry_api::KeyValue; +use std::sync::Arc; + +const STREAM_CARDINALITY_LIMIT: u32 = 2000; +pub(crate) static STREAM_OVERFLOW_ATTRIBUTE_SET: Lazy = Lazy::new(|| { + let key_values: [KeyValue; 1] = [KeyValue::new("otel.metric.overflow", "true")]; + AttributeSet::from(&key_values[..]) +}); + +/// Forms an aggregation from a collection of recorded measurements. +pub(crate) trait Aggregator: Send + Sync { + /// Records the measurement, scoped by attr, and aggregates it into an aggregation. + fn aggregate(&self, measurement: T, attrs: AttributeSet); + + /// Returns an Aggregation, for all the aggregated measurements made and ends an aggregation + /// cycle. + fn aggregation(&self) -> Option>; + + /// Used when filtering aggregators + fn as_precompute_aggregator(&self) -> Option>> { + None + } + + /// Checks whether aggregator has hit cardinality limit for metric streams + fn is_under_cardinality_limit(&self, size: usize) -> bool { + size < STREAM_CARDINALITY_LIMIT as usize - 1 + } +} + +/// An `Aggregator` that receives values to aggregate that have been pre-computed by the caller. +pub(crate) trait PrecomputeAggregator: Aggregator { + /// Records measurements scoped by attributes that have been filtered by an + /// attribute filter. + /// + /// Pre-computed measurements of filtered attributes need to be recorded separate + /// from those that haven't been filtered so they can be added to the non-filtered + /// pre-computed measurements in a collection cycle and then resets after the + /// cycle (the non-filtered pre-computed measurements are not reset). + fn aggregate_filtered(&self, measurement: T, attrs: AttributeSet); +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/filter.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/filter.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/filter.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/filter.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,74 @@ +use std::sync::Arc; + +use opentelemetry_api::KeyValue; + +use crate::{attributes::AttributeSet, metrics::data::Aggregation}; + +use super::{aggregator::PrecomputeAggregator, Aggregator, Number}; + +/// Returns an [Aggregator] that wraps the passed in aggregator with an +/// attribute filtering function. +/// +/// Both pre-computed non-pre-computed [Aggregator]s can be passed in. An +/// appropriate [Aggregator] will be returned for the detected type. +pub(crate) fn new_filter>( + agg: Arc>, + filter: Arc bool + Send + Sync>, +) -> Arc> { + if let Some(agg) = agg.as_precompute_aggregator() { + Arc::new(PrecomputeFilter { agg, filter }) + } else { + Arc::new(Filter { agg, filter }) + } +} + +/// Wraps an aggregator with an attribute filter. +/// +/// All recorded measurements will have their attributes filtered before they +/// are passed to the underlying aggregator's aggregate method. +/// +/// This should not be used to wrap a pre-computed aggregator. Use a +/// [PrecomputedFilter] instead. +struct Filter { + filter: Arc bool + Send + Sync>, + agg: Arc>, +} + +impl> Aggregator for Filter { + fn aggregate(&self, measurement: T, mut attrs: AttributeSet) { + attrs.retain(self.filter.as_ref()); + self.agg.aggregate(measurement, attrs) + } + + fn aggregation(&self) -> Option> { + self.agg.aggregation() + } +} + +/// An aggregator that applies attribute filter when aggregating for +/// pre-computed aggregations. +/// +/// The pre-computed aggregations need to operate normally when no attribute +/// filtering is done (for sums this means setting the value), but when +/// attribute filtering is done it needs to be added to any set value. +struct PrecomputeFilter> { + filter: Arc bool + Send + Sync>, + agg: Arc>, +} + +impl> Aggregator for PrecomputeFilter { + fn aggregate(&self, measurement: T, mut attrs: AttributeSet) { + let pre_len = attrs.len(); + attrs.retain(self.filter.as_ref()); + if pre_len == attrs.len() { + // No filtering done. + self.agg.aggregate(measurement, attrs) + } else { + self.agg.aggregate_filtered(measurement, attrs) + } + } + + fn aggregation(&self) -> Option> { + self.agg.aggregation() + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/histogram.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/histogram.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/histogram.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/histogram.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,296 @@ +use std::{ + collections::{hash_map::Entry, HashMap}, + sync::{Arc, Mutex}, + time::SystemTime, +}; + +use crate::attributes::AttributeSet; +use crate::metrics::{ + aggregation, + data::{self, Aggregation}, +}; +use opentelemetry_api::{global, metrics::MetricsError}; + +use super::{aggregator::STREAM_OVERFLOW_ATTRIBUTE_SET, Aggregator, Number}; + +#[derive(Default)] +struct Buckets { + counts: Vec, + count: u64, + sum: T, + min: T, + max: T, +} + +impl> Buckets { + /// returns buckets with `n` bins. + fn new(n: usize) -> Buckets { + Buckets { + counts: vec![0; n], + ..Default::default() + } + } + + fn bin(&mut self, idx: usize, value: T) { + self.counts[idx] += 1; + self.count += 1; + self.sum += value; + if value < self.min { + self.min = value; + } else if value > self.max { + self.max = value + } + } +} + +/// Summarizes a set of measurements as an histValues with explicitly defined buckets. +struct HistValues { + bounds: Vec, + values: Mutex>>, +} + +impl> HistValues { + fn new(mut bounds: Vec) -> Self { + bounds.retain(|v| !v.is_nan()); + bounds.sort_by(|a, b| a.partial_cmp(b).expect("NaNs filtered out")); + + HistValues { + bounds, + values: Mutex::new(Default::default()), + } + } +} + +impl Aggregator for HistValues +where + T: Number, +{ + fn aggregate(&self, measurement: T, attrs: AttributeSet) { + let f = measurement.into_float(); + + // This search will return an index in the range `[0, bounds.len()]`, where + // it will return `bounds.len()` if value is greater than the last element + // of `bounds`. This aligns with the buckets in that the length of buckets + // is `bounds.len()+1`, with the last bucket representing: + // `(bounds[bounds.len()-1], +∞)`. + let idx = self.bounds.partition_point(|&x| x < f); + + let mut values = match self.values.lock() { + Ok(guard) => guard, + Err(_) => return, + }; + let size = values.len(); + + match values.entry(attrs) { + Entry::Occupied(mut occupied_entry) => occupied_entry.get_mut().bin(idx, measurement), + Entry::Vacant(vacant_entry) => { + if self.is_under_cardinality_limit(size) { + // N+1 buckets. For example: + // + // bounds = [0, 5, 10] + // + // Then, + // + // buckets = (-∞, 0], (0, 5.0], (5.0, 10.0], (10.0, +∞) + let mut b = Buckets::new(self.bounds.len() + 1); + // Ensure min and max are recorded values (not zero), for new buckets. + (b.min, b.max) = (measurement, measurement); + b.bin(idx, measurement); + vacant_entry.insert(b); + } else { + values + .entry(STREAM_OVERFLOW_ATTRIBUTE_SET.clone()) + .and_modify(|val| val.bin(idx, measurement)) + .or_insert_with(|| { + let mut b = Buckets::new(self.bounds.len() + 1); + (b.min, b.max) = (measurement, measurement); + b.bin(idx, measurement); + b + }); + global::handle_error(MetricsError::Other("Warning: Maximum data points for metric stream exceeded. Entry added to overflow.".into())); + } + } + } + } + + fn aggregation(&self) -> Option> { + None // Never used + } +} + +/// Returns an Aggregator that summarizes a set of +/// measurements as an histogram. Each histogram is scoped by attributes and +/// the aggregation cycle the measurements were made in. +/// +/// Each aggregation cycle is treated independently. When the returned +/// Aggregator's Aggregations method is called it will reset all histogram +/// counts to zero. +pub(crate) fn new_delta_histogram(cfg: &aggregation::Aggregation) -> Arc> +where + T: Number, +{ + let (boundaries, record_min_max) = match cfg { + aggregation::Aggregation::ExplicitBucketHistogram { + boundaries, + record_min_max, + } => (boundaries.clone(), *record_min_max), + _ => (Vec::new(), true), + }; + + Arc::new(DeltaHistogram { + hist_values: HistValues::new(boundaries), + record_min_max, + start: Mutex::new(SystemTime::now()), + }) +} + +/// Summarizes a set of measurements made in a single aggregation cycle as an +/// histogram with explicitly defined buckets. +struct DeltaHistogram { + hist_values: HistValues, + record_min_max: bool, + start: Mutex, +} + +impl> Aggregator for DeltaHistogram { + fn aggregate(&self, measurement: T, attrs: AttributeSet) { + self.hist_values.aggregate(measurement, attrs) + } + + fn aggregation(&self) -> Option> { + let mut values = match self.hist_values.values.lock() { + Ok(guard) if !guard.is_empty() => guard, + _ => return None, + }; + let mut start = match self.start.lock() { + Ok(guard) => guard, + Err(_) => return None, + }; + + let t = SystemTime::now(); + + let data_points = values + .drain() + .map(|(a, b)| { + let mut hdp = data::HistogramDataPoint { + attributes: a, + start_time: *start, + time: t, + count: b.count, + bounds: self.hist_values.bounds.clone(), + bucket_counts: b.counts, + sum: b.sum, + min: None, + max: None, + exemplars: vec![], + }; + + if self.record_min_max { + hdp.min = Some(b.min); + hdp.max = Some(b.max); + } + + hdp + }) + .collect::>>(); + + // The delta collection cycle resets. + *start = t; + drop(start); + + Some(Box::new(data::Histogram { + temporality: data::Temporality::Delta, + data_points, + })) + } +} + +/// An [Aggregator] that summarizes a set of measurements as an histogram. +/// +/// Each histogram is scoped by attributes. +/// +/// Each aggregation cycle builds from the previous, the histogram counts are +/// the bucketed counts of all values aggregated since the returned Aggregator +/// was created. +pub(crate) fn new_cumulative_histogram(cfg: &aggregation::Aggregation) -> Arc> +where + T: Number, +{ + let (boundaries, record_min_max) = match cfg { + aggregation::Aggregation::ExplicitBucketHistogram { + boundaries, + record_min_max, + } => (boundaries.clone(), *record_min_max), + _ => (Vec::new(), true), + }; + + Arc::new(CumulativeHistogram { + hist_values: HistValues::new(boundaries), + record_min_max, + start: Mutex::new(SystemTime::now()), + }) +} + +/// Summarizes a set of measurements made over all aggregation cycles as an +/// histogram with explicitly defined buckets. +struct CumulativeHistogram { + hist_values: HistValues, + + record_min_max: bool, + start: Mutex, +} + +impl Aggregator for CumulativeHistogram +where + T: Number, +{ + fn aggregate(&self, measurement: T, attrs: AttributeSet) { + self.hist_values.aggregate(measurement, attrs) + } + + fn aggregation(&self) -> Option> { + let mut values = match self.hist_values.values.lock() { + Ok(guard) if !guard.is_empty() => guard, + _ => return None, + }; + let t = SystemTime::now(); + let start = self + .start + .lock() + .map(|s| *s) + .unwrap_or_else(|_| SystemTime::now()); + + // TODO: This will use an unbounded amount of memory if there are unbounded + // number of attribute sets being aggregated. Attribute sets that become + // "stale" need to be forgotten so this will not overload the system. + let data_points = values + .iter_mut() + .map(|(a, b)| { + let mut hdp = data::HistogramDataPoint { + attributes: a.clone(), + start_time: start, + time: t, + count: b.count, + bounds: self.hist_values.bounds.clone(), + bucket_counts: b.counts.clone(), + sum: b.sum, + min: None, + max: None, + exemplars: vec![], + }; + + if self.record_min_max { + hdp.min = Some(b.min); + hdp.max = Some(b.max); + } + + hdp + }) + .collect::>>(); + + Some(Box::new(data::Histogram { + temporality: data::Temporality::Cumulative, + data_points, + })) + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/last_value.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/last_value.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/last_value.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/last_value.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,73 @@ +use std::{ + collections::{hash_map::Entry, HashMap}, + sync::{Arc, Mutex}, + time::SystemTime, +}; + +use crate::attributes::AttributeSet; +use crate::metrics::data::{self, Gauge}; +use opentelemetry_api::{global, metrics::MetricsError}; + +use super::{aggregator::STREAM_OVERFLOW_ATTRIBUTE_SET, Aggregator, Number}; + +/// Timestamped measurement data. +struct DataPointValue { + timestamp: SystemTime, + value: T, +} + +/// An Aggregator that summarizes a set of measurements as the last one made. +pub(crate) fn new_last_value>() -> Arc> { + Arc::new(LastValue::default()) +} + +/// Summarizes a set of measurements as the last one made. +#[derive(Default)] +struct LastValue { + values: Mutex>>, +} + +impl> Aggregator for LastValue { + fn aggregate(&self, measurement: T, attrs: AttributeSet) { + let d: DataPointValue = DataPointValue { + timestamp: SystemTime::now(), + value: measurement, + }; + if let Ok(mut values) = self.values.lock() { + let size = values.len(); + match values.entry(attrs) { + Entry::Occupied(mut occupied_entry) => { + occupied_entry.insert(d); + } + Entry::Vacant(vacant_entry) => { + if self.is_under_cardinality_limit(size) { + vacant_entry.insert(d); + } else { + values.insert(STREAM_OVERFLOW_ATTRIBUTE_SET.clone(), d); + global::handle_error(MetricsError::Other("Warning: Maximum data points for metric stream exceeded. Entry added to overflow.".into())); + } + } + } + } + } + + fn aggregation(&self) -> Option> { + let mut values = match self.values.lock() { + Ok(guard) if !guard.is_empty() => guard, + _ => return None, + }; + + let data_points = values + .drain() + .map(|(attrs, value)| data::DataPoint { + attributes: attrs, + time: Some(value.timestamp), + value: value.value, + start_time: None, + exemplars: vec![], + }) + .collect(); + + Some(Box::new(Gauge { data_points })) + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,51 @@ +mod aggregator; +mod filter; +mod histogram; +mod last_value; +mod sum; + +use core::fmt; +use std::ops::{Add, AddAssign, Sub}; + +pub(crate) use aggregator::Aggregator; +pub(crate) use filter::new_filter; +pub(crate) use histogram::{new_cumulative_histogram, new_delta_histogram}; +pub(crate) use last_value::new_last_value; +pub(crate) use sum::{ + new_cumulative_sum, new_delta_sum, new_precomputed_cumulative_sum, new_precomputed_delta_sum, +}; + +pub(crate) trait Number: + Add + + AddAssign + + Sub + + PartialOrd + + fmt::Debug + + Clone + + Copy + + PartialEq + + Default + + Send + + Sync + + 'static +{ + fn into_float(self) -> f64; +} + +impl Number for i64 { + fn into_float(self) -> f64 { + // May have precision loss at high values + self as f64 + } +} +impl Number for u64 { + fn into_float(self) -> f64 { + // May have precision loss at high values + self as f64 + } +} +impl Number for f64 { + fn into_float(self) -> f64 { + self + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/sum.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/sum.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/sum.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/internal/sum.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,473 @@ +use std::{ + collections::{hash_map::Entry, HashMap}, + sync::{Arc, Mutex}, + time::SystemTime, +}; + +use crate::attributes::AttributeSet; +use crate::metrics::data::{self, Aggregation, DataPoint, Temporality}; +use opentelemetry_api::{global, metrics::MetricsError}; + +use super::{ + aggregator::{PrecomputeAggregator, STREAM_OVERFLOW_ATTRIBUTE_SET}, + Aggregator, Number, +}; + +/// The storage for sums. +#[derive(Default)] +struct ValueMap> { + values: Mutex>, +} + +impl> ValueMap { + pub(crate) fn new() -> Self { + ValueMap { + values: Mutex::new(HashMap::new()), + } + } +} + +impl> Aggregator for ValueMap { + fn aggregate(&self, measurement: T, attrs: AttributeSet) { + if let Ok(mut values) = self.values.lock() { + let size = values.len(); + match values.entry(attrs) { + Entry::Occupied(mut occupied_entry) => { + let sum = occupied_entry.get_mut(); + *sum += measurement; + } + Entry::Vacant(vacant_entry) => { + if self.is_under_cardinality_limit(size) { + vacant_entry.insert(measurement); + } else { + values + .entry(STREAM_OVERFLOW_ATTRIBUTE_SET.clone()) + .and_modify(|val| *val += measurement) + .or_insert(measurement); + global::handle_error(MetricsError::Other("Warning: Maximum data points for metric stream exceeded. Entry added to overflow.".into())); + } + } + } + } + } + + fn aggregation(&self) -> Option> { + None // Never called directly + } +} + +/// Returns an [Aggregator] that summarizes a set of measurements as their +/// arithmetic sum. +/// +/// Each sum is scoped by attributes and the aggregation cycle the measurements +/// were made in. +/// +/// The `monotonic` value is used to specify if the produced [Aggregation] is +/// monotonic or not. The returned [Aggregator] does not make any guarantees this +/// value is accurate. It is up to the caller to ensure it. +/// +/// Each aggregation cycle is treated independently. When the returned +/// [Aggregator::aggregation] method is called it will reset all sums to zero. +pub(crate) fn new_delta_sum(monotonic: bool) -> Arc> +where + T: Number, +{ + Arc::new(DeltaSum { + value_map: ValueMap::new(), + monotonic, + start: Mutex::new(SystemTime::now()), + }) +} + +/// Summarizes a set of measurements made in a single aggregation cycle as their +/// arithmetic sum. +struct DeltaSum> { + value_map: ValueMap, + monotonic: bool, + start: Mutex, +} + +impl Aggregator for DeltaSum +where + T: Number, +{ + fn aggregate(&self, measurement: T, attrs: AttributeSet) { + self.value_map.aggregate(measurement, attrs) + } + + fn aggregation(&self) -> Option> { + let mut values = match self.value_map.values.lock() { + Ok(guard) => guard, + Err(_) => return None, + }; + + if values.is_empty() { + return None; + } + + let t = SystemTime::now(); + let prev_start = self.start.lock().map(|start| *start).unwrap_or(t); + let data_points = values + .drain() + .map(|(attrs, value)| DataPoint { + attributes: attrs, + start_time: Some(prev_start), + time: Some(t), + value, + exemplars: vec![], + }) + .collect(); + let out = data::Sum { + temporality: Temporality::Delta, + is_monotonic: self.monotonic, + data_points, + }; + + // The delta collection cycle resets. + if let Ok(mut start) = self.start.lock() { + *start = t; + } + + Some(Box::new(out)) + } +} + +/// Returns an [Aggregator] that summarizes a set of measurements as their +/// arithmetic sum. +/// +/// Each sum is scoped by attributes and the aggregation cycle the measurements +/// were made in. +/// +/// The monotonic value is used to communicate the produced [Aggregation] is +/// monotonic or not. The returned [Aggregator] does not make any guarantees this +/// value is accurate. It is up to the caller to ensure it. +/// +/// Each aggregation cycle is treated independently. When the returned +/// Aggregator's Aggregation method is called it will reset all sums to zero. +pub(crate) fn new_cumulative_sum>(monotonic: bool) -> Arc> { + Arc::new(CumulativeSum { + value_map: ValueMap::new(), + monotonic, + start: Mutex::new(SystemTime::now()), + }) +} + +/// Summarizes a set of measurements made over all aggregation cycles as their +/// arithmetic sum. +struct CumulativeSum> { + value_map: ValueMap, + monotonic: bool, + start: Mutex, +} + +impl> Aggregator for CumulativeSum { + fn aggregate(&self, measurement: T, attrs: AttributeSet) { + self.value_map.aggregate(measurement, attrs) + } + + fn aggregation(&self) -> Option> { + let values = match self.value_map.values.lock() { + Ok(guard) => guard, + Err(_) => return None, + }; + + if values.is_empty() { + return None; + } + + let t = SystemTime::now(); + let prev_start = self.start.lock().map(|start| *start).unwrap_or(t); + // TODO: This will use an unbounded amount of memory if there + // are unbounded number of attribute sets being aggregated. Attribute + // sets that become "stale" need to be forgotten so this will not + // overload the system. + let data_points = values + .iter() + .map(|(attrs, value)| DataPoint { + attributes: attrs.clone(), + start_time: Some(prev_start), + time: Some(t), + value: *value, + exemplars: vec![], + }) + .collect(); + + let out: data::Sum = data::Sum { + temporality: Temporality::Cumulative, + is_monotonic: self.monotonic, + data_points, + }; + + Some(Box::new(out)) + } +} + +/// The recorded measurement value for a set of attributes. +#[derive(Default)] +struct PrecomputedValue> { + /// The last value measured for a set of attributes that were not filtered. + measured: T, + /// The sum of values from measurements that had their attributes filtered. + filtered: T, +} + +/// The storage for precomputed sums. +#[derive(Default)] +struct PrecomputedMap> { + values: Mutex>>, +} + +impl> PrecomputedMap { + pub(crate) fn new() -> Self { + Default::default() + } +} + +impl> Aggregator for PrecomputedMap { + fn aggregate(&self, measurement: T, attrs: AttributeSet) { + let mut values = match self.values.lock() { + Ok(guard) => guard, + Err(_) => return, + }; + let size = values.len(); + match values.entry(attrs) { + Entry::Occupied(mut occupied_entry) => { + let v = occupied_entry.get_mut(); + v.measured = measurement; + } + Entry::Vacant(vacant_entry) => { + if self.is_under_cardinality_limit(size) { + vacant_entry.insert(PrecomputedValue { + measured: measurement, + ..Default::default() + }); + } else { + values.insert( + STREAM_OVERFLOW_ATTRIBUTE_SET.clone(), + PrecomputedValue { + measured: measurement, + ..Default::default() + }, + ); + global::handle_error(MetricsError::Other("Warning: Maximum data points for metric stream exceeded. Entry added to overflow.".into())); + } + } + } + } + + fn aggregation(&self) -> Option> { + None // Never called + } +} + +impl> PrecomputeAggregator for PrecomputedMap { + fn aggregate_filtered(&self, measurement: T, attrs: AttributeSet) { + let mut values = match self.values.lock() { + Ok(guard) => guard, + Err(_) => return, + }; + + values + .entry(attrs) + .and_modify(|v| v.filtered = measurement) + .or_insert(PrecomputedValue { + filtered: measurement, + ..Default::default() + }); + } +} + +/// An [Aggregator] that summarizes a set of pre-computed sums. +/// +/// Each sum is scoped by attributes and the aggregation cycle the measurements +/// were made in. +/// +/// The `monotonic` value is used to specify if the produced [Aggregation] is +/// monotonic or not. The returned [Aggregator] does not make any guarantees this +/// value is accurate. It is up to the caller to ensure it. +/// +/// The output [Aggregation] will report recorded values as delta temporality. +pub(crate) fn new_precomputed_delta_sum(monotonic: bool) -> Arc> +where + T: Number, +{ + Arc::new(PrecomputedDeltaSum { + precomputed_map: PrecomputedMap::new(), + reported: Default::default(), + monotonic, + start: Mutex::new(SystemTime::now()), + }) +} + +/// Summarizes a set of pre-computed sums recorded over all aggregation cycles +/// as the delta of these sums. +pub(crate) struct PrecomputedDeltaSum> { + precomputed_map: PrecomputedMap, + reported: Mutex>, + monotonic: bool, + start: Mutex, +} + +impl Aggregator for PrecomputedDeltaSum +where + T: Number, +{ + fn aggregate(&self, measurement: T, attrs: AttributeSet) { + self.precomputed_map.aggregate(measurement, attrs) + } + + /// Returns the recorded pre-computed sums as an [Aggregation]. + /// + /// The sum values are expressed as the delta between what was measured this + /// collection cycle and the previous. + /// + /// All pre-computed sums that were recorded for attributes sets reduced by an + /// attribute filter (filtered-sums) are summed together and added to any + /// pre-computed sum value recorded directly for the resulting attribute set + /// (unfiltered-sum). The filtered-sums are reset to zero for the next + /// collection cycle, and the unfiltered-sum is kept for the next collection + /// cycle. + fn aggregation(&self) -> Option> { + let mut values = match self.precomputed_map.values.lock() { + Ok(guard) => guard, + Err(_) => return None, + }; + let mut reported = match self.reported.lock() { + Ok(guard) => guard, + Err(_) => return None, + }; + + if values.is_empty() { + return None; + } + + let t = SystemTime::now(); + let prev_start = self.start.lock().map(|start| *start).unwrap_or(t); + // TODO: This will use an unbounded amount of memory if there + // are unbounded number of attribute sets being aggregated. Attribute + // sets that become "stale" need to be forgotten so this will not + // overload the system. + let data_points = values + .iter_mut() + .map(|(attrs, value)| { + let v: T = value.measured.sub(value.filtered); + let default = T::default(); + let delta = v - *reported.get(attrs).unwrap_or(&default); + if delta != default { + reported.insert(attrs.clone(), v); + } + value.filtered = T::default(); + DataPoint { + attributes: attrs.clone(), + start_time: Some(prev_start), + time: Some(t), + value: delta, + exemplars: vec![], + } + }) + .collect(); + let out = data::Sum { + temporality: Temporality::Delta, + is_monotonic: self.monotonic, + data_points, + }; + + // The delta collection cycle resets. + let _ = self.start.lock().map(|mut start| *start = t); + + drop(reported); // drop before values guard is dropped + + Some(Box::new(out)) + } +} + +/// An [Aggregator] that summarizes a set of pre-computed sums. +/// +/// Each sum is scoped by attributes and the aggregation cycle the measurements +/// were made in. +/// +/// The `monotonic` value is used to specify if the produced [Aggregation] is +/// monotonic or not. The returned [Aggregator] does not make any guarantees this +/// value is accurate. It is up to the caller to ensure it. +/// +/// The output [Aggregation] will report recorded values as cumulative +/// temporality. +pub(crate) fn new_precomputed_cumulative_sum(monotonic: bool) -> Arc> +where + T: Number, +{ + Arc::new(PrecomputedCumulativeSum { + precomputed_map: PrecomputedMap::default(), + monotonic, + start: Mutex::new(SystemTime::now()), + }) +} + +/// Directly records and reports a set of pre-computed sums. +pub(crate) struct PrecomputedCumulativeSum> { + precomputed_map: PrecomputedMap, + monotonic: bool, + start: Mutex, +} + +impl Aggregator for PrecomputedCumulativeSum +where + T: Number, +{ + fn aggregate(&self, measurement: T, attrs: AttributeSet) { + self.precomputed_map.aggregate(measurement, attrs) + } + + /// Returns the recorded pre-computed sums as an [Aggregation]. + /// + /// The sum values are expressed directly as they are assumed to be recorded as + /// the cumulative sum of a some measured phenomena. + /// + /// All pre-computed sums that were recorded for attributes sets reduced by an + /// attribute filter (filtered-sums) are summed together and added to any + /// pre-computed sum value recorded directly for the resulting attribute set + /// (unfiltered-sum). The filtered-sums are reset to zero for the next + /// collection cycle, and the unfiltered-sum is kept for the next collection + /// cycle. + fn aggregation(&self) -> Option> { + let mut values = match self.precomputed_map.values.lock() { + Ok(guard) => guard, + Err(_) => return None, + }; + + if values.is_empty() { + return None; + } + + let t = SystemTime::now(); + let prev_start = self.start.lock().map(|start| *start).unwrap_or(t); + // TODO: This will use an unbounded amount of memory if there + // are unbounded number of attribute sets being aggregated. Attribute + // sets that become "stale" need to be forgotten so this will not + // overload the system. + let data_points = values + .iter_mut() + .map(|(attrs, value)| { + let v = value.measured + value.filtered; + value.filtered = T::default(); + DataPoint { + attributes: attrs.clone(), + start_time: Some(prev_start), + time: Some(t), + value: v, + exemplars: vec![], + } + }) + .collect(); + let out = data::Sum { + temporality: Temporality::Cumulative, + is_monotonic: self.monotonic, + data_points, + }; + + // The delta collection cycle resets. + let _ = self.start.lock().map(|mut start| *start = t); + + Some(Box::new(out)) + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/manual_reader.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/manual_reader.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/manual_reader.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/manual_reader.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,221 @@ +use std::{ + fmt, + sync::{Mutex, Weak}, +}; + +use opentelemetry_api::{ + global, + metrics::{MetricsError, Result}, + Context, +}; + +use super::{ + data::{ResourceMetrics, Temporality}, + instrument::InstrumentKind, + pipeline::Pipeline, + reader::{ + AggregationSelector, DefaultAggregationSelector, DefaultTemporalitySelector, + MetricProducer, MetricReader, SdkProducer, TemporalitySelector, + }, +}; + +/// A simple [MetricReader] that allows an application to read metrics on demand. +/// +/// See [ManualReaderBuilder] for configuration options. +/// +/// # Example +/// +/// ``` +/// use opentelemetry_sdk::metrics::ManualReader; +/// +/// // can specify additional reader configuration +/// let reader = ManualReader::builder().build(); +/// # drop(reader) +/// ``` +pub struct ManualReader { + inner: Box>, + temporality_selector: Box, + aggregation_selector: Box, +} + +impl Default for ManualReader { + fn default() -> Self { + ManualReader::builder().build() + } +} + +impl fmt::Debug for ManualReader { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("ManualReader") + } +} + +#[derive(Debug, Default)] +struct ManualReaderInner { + sdk_producer: Option>, + is_shutdown: bool, + external_producers: Vec>, +} + +impl ManualReader { + /// Configuration for this reader + pub fn builder() -> ManualReaderBuilder { + ManualReaderBuilder::default() + } + + /// A [MetricReader] which is directly called to collect metrics. + pub(crate) fn new( + temporality_selector: Box, + aggregation_selector: Box, + ) -> Self { + ManualReader { + inner: Box::new(Mutex::new(ManualReaderInner::default())), + temporality_selector, + aggregation_selector, + } + } +} + +impl TemporalitySelector for ManualReader { + fn temporality(&self, kind: InstrumentKind) -> Temporality { + self.temporality_selector.temporality(kind) + } +} + +impl AggregationSelector for ManualReader { + fn aggregation(&self, kind: InstrumentKind) -> super::aggregation::Aggregation { + self.aggregation_selector.aggregation(kind) + } +} + +impl MetricReader for ManualReader { + /// Register a pipeline which enables the caller to read metrics from the SDK + /// on demand. + fn register_pipeline(&self, pipeline: Weak) { + let _ = self.inner.lock().map(|mut inner| { + // Only register once. If producer is already set, do nothing. + if inner.sdk_producer.is_none() { + inner.sdk_producer = Some(pipeline); + } else { + global::handle_error(MetricsError::Config( + "duplicate reader registration, did not register manual reader".into(), + )) + } + }); + } + + /// Stores the external [MetricProducer] which enables the caller to read + /// metrics on demand. + fn register_producer(&self, producer: Box) { + let _ = self.inner.lock().map(|mut inner| { + if !inner.is_shutdown { + inner.external_producers.push(producer); + } + }); + } + + /// Gathers all metrics from the SDK and other [MetricProducer]s, calling any + /// callbacks necessary and returning the results. + /// + /// Returns an error if called after shutdown. + fn collect(&self, rm: &mut ResourceMetrics) -> Result<()> { + let inner = self.inner.lock()?; + match &inner.sdk_producer.as_ref().and_then(|w| w.upgrade()) { + Some(producer) => producer.produce(rm)?, + None => { + return Err(MetricsError::Other( + "reader is shut down or not registered".into(), + )) + } + }; + + let mut errs = vec![]; + for producer in &inner.external_producers { + match producer.produce() { + Ok(metrics) => rm.scope_metrics.push(metrics), + Err(err) => errs.push(err), + } + } + + if errs.is_empty() { + Ok(()) + } else { + Err(MetricsError::Other(format!("{:?}", errs))) + } + } + + /// ForceFlush is a no-op, it always returns nil. + fn force_flush(&self, _cx: &Context) -> Result<()> { + Ok(()) + } + + /// Closes any connections and frees any resources used by the reader. + fn shutdown(&self) -> Result<()> { + let mut inner = self.inner.lock()?; + + // Any future call to collect will now return an error. + inner.sdk_producer = None; + inner.is_shutdown = true; + inner.external_producers = Vec::new(); + + Ok(()) + } +} + +/// Configuration for a [ManualReader] +pub struct ManualReaderBuilder { + temporality_selector: Box, + aggregation_selector: Box, +} + +impl fmt::Debug for ManualReaderBuilder { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("ManualReaderBuilder") + } +} + +impl Default for ManualReaderBuilder { + fn default() -> Self { + ManualReaderBuilder { + temporality_selector: Box::new(DefaultTemporalitySelector { _private: () }), + aggregation_selector: Box::new(DefaultAggregationSelector { _private: () }), + } + } +} + +impl ManualReaderBuilder { + /// New manual builder configuration + pub fn new() -> Self { + Default::default() + } + + /// Sets the [TemporalitySelector] a reader will use to determine the [Temporality] of + /// an instrument based on its kind. If this option is not used, the reader will use + /// the default temporality selector. + pub fn with_temporality_selector( + mut self, + temporality_selector: impl TemporalitySelector + 'static, + ) -> Self { + self.temporality_selector = Box::new(temporality_selector); + self + } + + /// Sets the [AggregationSelector] a reader will use to determine the + /// aggregation to use for an instrument based on its kind. + /// + /// If this option is not used, the reader will use the default aggregation + /// selector or the aggregation explicitly passed for a view matching an + /// instrument. + pub fn with_aggregation_selector( + mut self, + aggregation_selector: Box, + ) -> Self { + self.aggregation_selector = aggregation_selector; + self + } + + /// Create a new [ManualReader] from this configuration. + pub fn build(self) -> ManualReader { + ManualReader::new(self.temporality_selector, self.aggregation_selector) + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/meter_provider.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/meter_provider.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/meter_provider.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/meter_provider.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,160 @@ +use core::fmt; +use std::{ + borrow::Cow, + sync::{ + atomic::{AtomicBool, Ordering}, + Arc, + }, +}; + +use opentelemetry_api::{ + metrics::{noop::NoopMeterCore, InstrumentProvider, Meter as ApiMeter, MetricsError, Result}, + Context, KeyValue, +}; + +use crate::{instrumentation::Scope, Resource}; + +use super::{meter::Meter as SdkMeter, pipeline::Pipelines, reader::MetricReader, view::View}; + +/// Handles the creation and coordination of [Meter]s. +/// +/// All `Meter`s created by a `MeterProvider` will be associated with the same +/// [Resource], have the same [View]s applied to them, and have their produced +/// metric telemetry passed to the configured [MetricReader]s. +/// +/// [Meter]: crate::metrics::Meter +#[derive(Clone, Debug)] +pub struct MeterProvider { + pipes: Arc, + is_shutdown: Arc, +} + +impl MeterProvider { + /// Flushes all pending telemetry. + /// + /// There is no guaranteed that all telemetry be flushed or all resources have + /// been released on error. + pub fn builder() -> MeterProviderBuilder { + MeterProviderBuilder::default() + } + + /// Flushes all pending telemetry. + /// + /// There is no guaranteed that all telemetry be flushed or all resources have + /// been released on error. + pub fn force_flush(&self, cx: &Context) -> Result<()> { + self.pipes.force_flush(cx) + } + + /// Shuts down the meter provider flushing all pending telemetry and releasing + /// any held computational resources. + /// + /// This call is idempotent. The first call will perform all flush and releasing + /// operations. Subsequent calls will perform no action and will return an error + /// stating this. + /// + /// Measurements made by instruments from meters this MeterProvider created will + /// not be exported after Shutdown is called. + /// + /// There is no guaranteed that all telemetry be flushed or all resources have + /// been released on error. + pub fn shutdown(&self) -> Result<()> { + if self + .is_shutdown + .compare_exchange(false, true, Ordering::SeqCst, Ordering::SeqCst) + .is_ok() + { + self.pipes.shutdown() + } else { + Err(MetricsError::Other( + "metrics provider already shut down".into(), + )) + } + } +} + +impl opentelemetry_api::metrics::MeterProvider for MeterProvider { + fn versioned_meter( + &self, + name: impl Into>, + version: Option>>, + schema_url: Option>>, + attributes: Option>, + ) -> ApiMeter { + let inst_provider: Arc = + if !self.is_shutdown.load(Ordering::Relaxed) { + let scope = Scope::new(name, version, schema_url, attributes); + Arc::new(SdkMeter::new(scope, self.pipes.clone())) + } else { + Arc::new(NoopMeterCore::new()) + }; + + ApiMeter::new(inst_provider) + } +} + +/// Configuration options for a [MeterProvider]. +#[derive(Default)] +pub struct MeterProviderBuilder { + resource: Option, + readers: Vec>, + views: Vec>, +} + +impl MeterProviderBuilder { + /// Associates a [Resource] with a [MeterProvider]. + /// + /// This [Resource] represents the entity producing telemetry and is associated + /// with all [Meter]s the [MeterProvider] will create. + /// + /// By default, if this option is not used, the default [Resource] will be used. + /// + /// [Meter]: crate::metrics::Meter + pub fn with_resource(mut self, resource: Resource) -> Self { + self.resource = Some(resource); + self + } + + /// Associates a [MetricReader] with a [MeterProvider]. + /// + /// By default, if this option is not used, the [MeterProvider] will perform no + /// operations; no data will be exported without a [MetricReader]. + pub fn with_reader(mut self, reader: T) -> Self { + self.readers.push(Box::new(reader)); + self + } + + /// Associates a [View] with a [MeterProvider]. + /// + /// [View]s are appended to existing ones in a [MeterProvider] if this option is + /// used multiple times. + /// + /// By default, if this option is not used, the [MeterProvider] will use the + /// default view. + pub fn with_view(mut self, view: T) -> Self { + self.views.push(Arc::new(view)); + self + } + + /// Construct a new [MeterProvider] with this configuration. + pub fn build(self) -> MeterProvider { + MeterProvider { + pipes: Arc::new(Pipelines::new( + self.resource.unwrap_or_default(), + self.readers, + self.views, + )), + is_shutdown: Arc::new(AtomicBool::new(false)), + } + } +} + +impl fmt::Debug for MeterProviderBuilder { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("MeterProviderBuilder") + .field("resource", &self.resource) + .field("readers", &self.readers) + .field("views", &self.views.len()) + .finish() + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/meter.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/meter.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/meter.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/meter.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,628 @@ +use core::fmt; +use std::{ + any::Any, + borrow::Cow, + collections::{HashMap, HashSet}, + sync::{Arc, Mutex}, +}; + +use opentelemetry_api::{ + global, + metrics::{ + noop::{NoopAsyncInstrument, NoopRegistration}, + AsyncInstrument, Callback, CallbackRegistration, Counter, Histogram, InstrumentProvider, + MetricsError, ObservableCounter, ObservableGauge, ObservableUpDownCounter, + Observer as ApiObserver, Result, Unit, UpDownCounter, + }, + KeyValue, +}; + +use crate::instrumentation::Scope; +use crate::metrics::{ + instrument::{ + Instrument, InstrumentImpl, InstrumentKind, Observable, ObservableId, StreamId, + EMPTY_AGG_MSG, + }, + internal::{self, Number}, + pipeline::{Pipelines, Resolver}, +}; + +/// Handles the creation and coordination of all metric instruments. +/// +/// A meter represents a single instrumentation scope; all metric telemetry +/// produced by an instrumentation scope will use metric instruments from a +/// single meter. +/// +/// See the [Meter API] docs for usage. +/// +/// [Meter API]: opentelemetry_api::metrics::Meter +pub struct Meter { + scope: Scope, + pipes: Arc, + u64_inst_provider: InstProvider, + i64_inst_provider: InstProvider, + f64_inst_provider: InstProvider, +} + +impl Meter { + pub(crate) fn new(scope: Scope, pipes: Arc) -> Self { + let view_cache = Default::default(); + + Meter { + scope: scope.clone(), + pipes: Arc::clone(&pipes), + u64_inst_provider: InstProvider::new( + scope.clone(), + Arc::clone(&pipes), + Arc::clone(&view_cache), + ), + i64_inst_provider: InstProvider::new( + scope.clone(), + Arc::clone(&pipes), + Arc::clone(&view_cache), + ), + f64_inst_provider: InstProvider::new(scope, pipes, view_cache), + } + } +} + +#[doc(hidden)] +impl InstrumentProvider for Meter { + fn u64_counter( + &self, + name: Cow<'static, str>, + description: Option>, + unit: Option, + ) -> Result> { + self.u64_inst_provider + .lookup( + InstrumentKind::Counter, + name, + description, + unit.unwrap_or_default(), + ) + .map(|i| Counter::new(Arc::new(i))) + } + + fn f64_counter( + &self, + name: Cow<'static, str>, + description: Option>, + unit: Option, + ) -> Result> { + self.f64_inst_provider + .lookup( + InstrumentKind::Counter, + name, + description, + unit.unwrap_or_default(), + ) + .map(|i| Counter::new(Arc::new(i))) + } + + fn u64_observable_counter( + &self, + name: Cow<'static, str>, + description: Option>, + unit: Option, + callbacks: Vec>, + ) -> Result> { + let aggs = self.u64_inst_provider.aggregators( + InstrumentKind::ObservableCounter, + name.clone(), + description.clone(), + unit.clone().unwrap_or_default(), + )?; + if aggs.is_empty() { + return Ok(ObservableCounter::new(Arc::new(NoopAsyncInstrument::new()))); + } + + let observable = Arc::new(Observable::new( + self.scope.clone(), + InstrumentKind::ObservableCounter, + name, + description.unwrap_or_default(), + unit.unwrap_or_default(), + aggs, + )); + + for callback in callbacks { + let cb_inst = Arc::clone(&observable); + self.pipes + .register_callback(move || callback(cb_inst.as_ref())); + } + + Ok(ObservableCounter::new(observable)) + } + + fn f64_observable_counter( + &self, + name: Cow<'static, str>, + description: Option>, + unit: Option, + callbacks: Vec>, + ) -> Result> { + let aggs = self.f64_inst_provider.aggregators( + InstrumentKind::ObservableCounter, + name.clone(), + description.clone(), + unit.clone().unwrap_or_default(), + )?; + if aggs.is_empty() { + return Ok(ObservableCounter::new(Arc::new(NoopAsyncInstrument::new()))); + } + let observable = Arc::new(Observable::new( + self.scope.clone(), + InstrumentKind::ObservableCounter, + name, + description.unwrap_or_default(), + unit.unwrap_or_default(), + aggs, + )); + + for callback in callbacks { + let cb_inst = Arc::clone(&observable); + self.pipes + .register_callback(move || callback(cb_inst.as_ref())); + } + + Ok(ObservableCounter::new(observable)) + } + + fn i64_up_down_counter( + &self, + name: Cow<'static, str>, + description: Option>, + unit: Option, + ) -> Result> { + self.i64_inst_provider + .lookup( + InstrumentKind::UpDownCounter, + name, + description, + unit.unwrap_or_default(), + ) + .map(|i| UpDownCounter::new(Arc::new(i))) + } + + fn f64_up_down_counter( + &self, + name: Cow<'static, str>, + description: Option>, + unit: Option, + ) -> Result> { + self.f64_inst_provider + .lookup( + InstrumentKind::UpDownCounter, + name, + description, + unit.unwrap_or_default(), + ) + .map(|i| UpDownCounter::new(Arc::new(i))) + } + + fn i64_observable_up_down_counter( + &self, + name: Cow<'static, str>, + description: Option>, + unit: Option, + callbacks: Vec>, + ) -> Result> { + let aggs = self.i64_inst_provider.aggregators( + InstrumentKind::ObservableUpDownCounter, + name.clone(), + description.clone(), + unit.clone().unwrap_or_default(), + )?; + if aggs.is_empty() { + return Ok(ObservableUpDownCounter::new(Arc::new( + NoopAsyncInstrument::new(), + ))); + } + + let observable = Arc::new(Observable::new( + self.scope.clone(), + InstrumentKind::ObservableUpDownCounter, + name, + description.unwrap_or_default(), + unit.unwrap_or_default(), + aggs, + )); + + for callback in callbacks { + let cb_inst = Arc::clone(&observable); + self.pipes + .register_callback(move || callback(cb_inst.as_ref())); + } + + Ok(ObservableUpDownCounter::new(observable)) + } + + fn f64_observable_up_down_counter( + &self, + name: Cow<'static, str>, + description: Option>, + unit: Option, + callbacks: Vec>, + ) -> Result> { + let aggs = self.f64_inst_provider.aggregators( + InstrumentKind::ObservableUpDownCounter, + name.clone(), + description.clone(), + unit.clone().unwrap_or_default(), + )?; + if aggs.is_empty() { + return Ok(ObservableUpDownCounter::new(Arc::new( + NoopAsyncInstrument::new(), + ))); + } + + let observable = Arc::new(Observable::new( + self.scope.clone(), + InstrumentKind::ObservableUpDownCounter, + name, + description.unwrap_or_default(), + unit.unwrap_or_default(), + aggs, + )); + + for callback in callbacks { + let cb_inst = Arc::clone(&observable); + self.pipes + .register_callback(move || callback(cb_inst.as_ref())); + } + + Ok(ObservableUpDownCounter::new(observable)) + } + + fn u64_observable_gauge( + &self, + name: Cow<'static, str>, + description: Option>, + unit: Option, + callbacks: Vec>, + ) -> Result> { + let aggs = self.u64_inst_provider.aggregators( + InstrumentKind::ObservableGauge, + name.clone(), + description.clone(), + unit.clone().unwrap_or_default(), + )?; + if aggs.is_empty() { + return Ok(ObservableGauge::new(Arc::new(NoopAsyncInstrument::new()))); + } + + let observable = Arc::new(Observable::new( + self.scope.clone(), + InstrumentKind::ObservableGauge, + name, + description.unwrap_or_default(), + unit.unwrap_or_default(), + aggs, + )); + + for callback in callbacks { + let cb_inst = Arc::clone(&observable); + self.pipes + .register_callback(move || callback(cb_inst.as_ref())); + } + + Ok(ObservableGauge::new(observable)) + } + + fn i64_observable_gauge( + &self, + name: Cow<'static, str>, + description: Option>, + unit: Option, + callbacks: Vec>, + ) -> Result> { + let aggs = self.i64_inst_provider.aggregators( + InstrumentKind::ObservableGauge, + name.clone(), + description.clone(), + unit.clone().unwrap_or_default(), + )?; + if aggs.is_empty() { + return Ok(ObservableGauge::new(Arc::new(NoopAsyncInstrument::new()))); + } + + let observable = Arc::new(Observable::new( + self.scope.clone(), + InstrumentKind::ObservableGauge, + name, + description.unwrap_or_default(), + unit.unwrap_or_default(), + aggs, + )); + + for callback in callbacks { + let cb_inst = Arc::clone(&observable); + self.pipes + .register_callback(move || callback(cb_inst.as_ref())); + } + + Ok(ObservableGauge::new(observable)) + } + + fn f64_observable_gauge( + &self, + name: Cow<'static, str>, + description: Option>, + unit: Option, + callbacks: Vec>, + ) -> Result> { + let aggs = self.f64_inst_provider.aggregators( + InstrumentKind::ObservableGauge, + name.clone(), + description.clone(), + unit.clone().unwrap_or_default(), + )?; + if aggs.is_empty() { + return Ok(ObservableGauge::new(Arc::new(NoopAsyncInstrument::new()))); + } + + let observable = Arc::new(Observable::new( + self.scope.clone(), + InstrumentKind::ObservableGauge, + name, + description.unwrap_or_default(), + unit.unwrap_or_default(), + aggs, + )); + + for callback in callbacks { + let cb_inst = Arc::clone(&observable); + self.pipes + .register_callback(move || callback(cb_inst.as_ref())); + } + + Ok(ObservableGauge::new(observable)) + } + + fn f64_histogram( + &self, + name: Cow<'static, str>, + description: Option>, + unit: Option, + ) -> Result> { + self.f64_inst_provider + .lookup( + InstrumentKind::Histogram, + name, + description, + unit.unwrap_or_default(), + ) + .map(|i| Histogram::new(Arc::new(i))) + } + + fn u64_histogram( + &self, + name: Cow<'static, str>, + description: Option>, + unit: Option, + ) -> Result> { + self.u64_inst_provider + .lookup( + InstrumentKind::Histogram, + name, + description, + unit.unwrap_or_default(), + ) + .map(|i| Histogram::new(Arc::new(i))) + } + + fn i64_histogram( + &self, + name: Cow<'static, str>, + description: Option>, + unit: Option, + ) -> Result> { + self.i64_inst_provider + .lookup( + InstrumentKind::Histogram, + name, + description, + unit.unwrap_or_default(), + ) + .map(|i| Histogram::new(Arc::new(i))) + } + + fn register_callback( + &self, + insts: &[Arc], + callback: Box, + ) -> Result> { + if insts.is_empty() { + return Ok(Box::new(NoopRegistration::new())); + } + + let mut reg = Observer::default(); + let mut errs = vec![]; + for inst in insts { + if let Some(i64_obs) = inst.downcast_ref::>() { + if let Err(err) = i64_obs.registerable(&self.scope) { + if !err.to_string().contains(EMPTY_AGG_MSG) { + errs.push(err); + } + continue; + } + reg.register_i64(i64_obs.id.clone()); + } else if let Some(u64_obs) = inst.downcast_ref::>() { + if let Err(err) = u64_obs.registerable(&self.scope) { + if !err.to_string().contains(EMPTY_AGG_MSG) { + errs.push(err); + } + continue; + } + reg.register_u64(u64_obs.id.clone()); + } else if let Some(f64_obs) = inst.downcast_ref::>() { + if let Err(err) = f64_obs.registerable(&self.scope) { + if !err.to_string().contains(EMPTY_AGG_MSG) { + errs.push(err); + } + continue; + } + reg.register_f64(f64_obs.id.clone()); + } else { + // Instrument external to the SDK. + return Err(MetricsError::Other( + "invalid observable: from different implementation".into(), + )); + } + } + + if !errs.is_empty() { + return Err(MetricsError::Other(format!("{errs:?}"))); + } + + if reg.is_empty() { + // All instruments use drop aggregation. + return Ok(Box::new(NoopRegistration::new())); + } + + self.pipes.register_multi_callback(move || callback(®)) + } +} + +#[derive(Default)] +struct Observer { + f64s: HashSet>, + i64s: HashSet>, + u64s: HashSet>, +} + +impl Observer { + fn is_empty(&self) -> bool { + self.f64s.is_empty() && self.i64s.is_empty() && self.u64s.is_empty() + } + + pub(crate) fn register_i64(&mut self, id: ObservableId) { + self.i64s.insert(id); + } + + pub(crate) fn register_f64(&mut self, id: ObservableId) { + self.f64s.insert(id); + } + + pub(crate) fn register_u64(&mut self, id: ObservableId) { + self.u64s.insert(id); + } +} + +impl ApiObserver for Observer { + fn observe_f64(&self, inst: &dyn AsyncInstrument, measurement: f64, attrs: &[KeyValue]) { + if let Some(f64_obs) = inst.as_any().downcast_ref::>() { + if self.f64s.contains(&f64_obs.id) { + f64_obs.observe(measurement, attrs) + } else { + global::handle_error( + MetricsError::Other(format!("observable instrument not registered for callback, failed to record. name: {}, description: {}, unit: {:?}, number: f64", + f64_obs.id.inner.name, + f64_obs.id.inner.description, + f64_obs.id.inner.unit, + ))) + } + } else { + global::handle_error(MetricsError::Other( + "unknown observable instrument, failed to record.".into(), + )) + } + } + + fn observe_u64(&self, inst: &dyn AsyncInstrument, measurement: u64, attrs: &[KeyValue]) { + if let Some(u64_obs) = inst.as_any().downcast_ref::>() { + if self.u64s.contains(&u64_obs.id) { + u64_obs.observe(measurement, attrs) + } else { + global::handle_error( + MetricsError::Other(format!("observable instrument not registered for callback, failed to record. name: {}, description: {}, unit: {:?}, number: f64", + u64_obs.id.inner.name, + u64_obs.id.inner.description, + u64_obs.id.inner.unit, + ))) + } + } else { + global::handle_error(MetricsError::Other( + "unknown observable instrument, failed to record.".into(), + )) + } + } + + fn observe_i64(&self, inst: &dyn AsyncInstrument, measurement: i64, attrs: &[KeyValue]) { + if let Some(i64_obs) = inst.as_any().downcast_ref::>() { + if self.i64s.contains(&i64_obs.id) { + i64_obs.observe(measurement, attrs) + } else { + global::handle_error( + MetricsError::Other(format!("observable instrument not registered for callback, failed to record. name: {}, description: {}, unit: {:?}, number: f64", + i64_obs.id.inner.name, + i64_obs.id.inner.description, + i64_obs.id.inner.unit, + ))) + } + } else { + global::handle_error(MetricsError::Other( + "unknown observable instrument, failed to record.".into(), + )) + } + } +} + +impl fmt::Debug for Meter { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("Meter").field("scope", &self.scope).finish() + } +} + +/// Provides all OpenTelemetry instruments. +struct InstProvider { + scope: Scope, + resolve: Resolver, +} + +impl InstProvider +where + T: Number, +{ + fn new( + scope: Scope, + pipes: Arc, + cache: Arc, StreamId>>>, + ) -> Self { + InstProvider { + scope, + resolve: Resolver::new(pipes, cache), + } + } + + /// lookup returns the resolved InstrumentImpl. + fn lookup( + &self, + kind: InstrumentKind, + name: Cow<'static, str>, + description: Option>, + unit: Unit, + ) -> Result> { + let aggregators = self.aggregators(kind, name, description, unit)?; + Ok(InstrumentImpl { aggregators }) + } + + fn aggregators( + &self, + kind: InstrumentKind, + name: Cow<'static, str>, + description: Option>, + unit: Unit, + ) -> Result>>> { + let inst = Instrument { + name, + description: description.unwrap_or_default(), + unit, + kind: Some(kind), + scope: self.scope.clone(), + }; + + self.resolve.aggregators(inst) + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,403 +1,59 @@ -//! # OpenTelemetry Metrics SDK -use crate::export; -use crate::export::metrics::{LockedProcessor, Processor}; -use crate::metrics::{ - aggregators::Aggregator, - sdk_api::{ - AsyncInstrumentCore, AtomicNumber, Descriptor, InstrumentCore, MeterCore, Number, - NumberKind, SyncInstrumentCore, - }, -}; -use fnv::FnvHasher; -use opentelemetry_api::{ - attributes::{hash_attributes, AttributeSet}, - global, - metrics::Result, - Context, KeyValue, -}; -use std::{ - any::Any, - cmp::Ordering, - fmt, - hash::{Hash, Hasher}, - sync::{Arc, Mutex}, -}; -pub mod aggregators; -pub mod controllers; -pub mod processors; -pub mod registry; -pub mod sdk_api; -pub mod selectors; - -/// Creates a new accumulator builder -pub fn accumulator(processor: Arc) -> Accumulator { - Accumulator(Arc::new(AccumulatorCore::new(processor))) -} - -/// Accumulator implements the OpenTelemetry Meter API. The Accumulator is bound -/// to a single `Processor`. -/// -/// The Accumulator supports a collect API to gather and export current data. -/// `Collect` should be arranged according to the processor model. Push-based -/// processors will setup a timer to call `collect` periodically. Pull-based -/// processors will call `collect` when a pull request arrives. -#[derive(Debug, Clone)] -pub struct Accumulator(Arc); - -impl Accumulator { - /// Traverses the list of active records and observers and - /// exports data for each active instrument. - /// - /// During the collection pass, the [`LockedProcessor`] will receive - /// one `export` call per current aggregation. - /// - /// Returns the number of records that were checkpointed. - pub fn collect(&self, cx: &Context, locked_processor: &mut dyn LockedProcessor) -> usize { - self.0.collect(cx, locked_processor) - } -} - -impl MeterCore for Accumulator { - fn new_sync_instrument( - &self, - descriptor: Descriptor, - ) -> Result> { - Ok(Arc::new(SyncInstrument { - instrument: Arc::new(BaseInstrument { - meter: self.clone(), - descriptor, - }), - })) - } - - fn new_async_instrument( - &self, - descriptor: Descriptor, - ) -> Result> { - Ok(Arc::new(AsyncInstrument { - instrument: Arc::new(BaseInstrument { - meter: self.clone(), - descriptor, - }), - })) - } - - fn register_callback(&self, f: Box) -> Result<()> { - self.0 - .callbacks - .lock() - .map_err(Into::into) - .map(|mut callbacks| callbacks.push(f)) - } -} - -#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)] -struct MapKey { - instrument_hash: u64, -} - -#[derive(Debug)] -struct AsyncContextKey; - -type Callback = Box; - -struct AccumulatorCore { - /// A concurrent map of current sync instrument state. - current: dashmap::DashMap>, - - /// Async instrument callbacks - callbacks: Mutex>, - - /// The current epoch number. It is incremented in `collect`. - current_epoch: AtomicNumber, - - /// The configured processor. - processor: Arc, -} - -impl AccumulatorCore { - fn new(processor: Arc) -> Self { - AccumulatorCore { - current: dashmap::DashMap::new(), - current_epoch: NumberKind::U64.zero().to_atomic(), - processor, - callbacks: Default::default(), - } - } - - fn collect(&self, cx: &Context, locked_processor: &mut dyn LockedProcessor) -> usize { - self.run_async_callbacks(cx); - let checkpointed = self.collect_instruments(locked_processor); - self.current_epoch.fetch_add(&NumberKind::U64, &1u64.into()); - - checkpointed - } - - fn run_async_callbacks(&self, cx: &Context) { - match self.callbacks.lock() { - Ok(callbacks) => { - let cx = cx.with_value(AsyncContextKey); - for f in callbacks.iter() { - f(&cx) - } - } - Err(err) => global::handle_error(err), - } - } - - fn collect_instruments(&self, locked_processor: &mut dyn LockedProcessor) -> usize { - let mut checkpointed = 0; - - self.current.retain(|_key, value| { - let mods = &value.update_count.load(); - let coll = &value.collected_count.load(); - - if mods.partial_cmp(&NumberKind::U64, coll) != Some(Ordering::Equal) { - // Updates happened in this interval, - // checkpoint and continue. - checkpointed += self.checkpoint_record(value, locked_processor); - value.collected_count.store(mods); - } else { - // Having no updates since last collection, try to remove if - // there are no bound handles - if Arc::strong_count(value) == 1 { - // There's a potential race between loading collected count and - // loading the strong count in this function. Since this is the - // last we'll see of this record, checkpoint. - if mods.partial_cmp(&NumberKind::U64, coll) != Some(Ordering::Equal) { - checkpointed += self.checkpoint_record(value, locked_processor); - } - return false; - } - }; - true - }); - - checkpointed - } - - fn checkpoint_record( - &self, - record: &Record, - locked_processor: &mut dyn LockedProcessor, - ) -> usize { - if let (Some(current), Some(checkpoint)) = (&record.current, &record.checkpoint) { - if let Err(err) = current.synchronized_move(checkpoint, record.instrument.descriptor()) - { - global::handle_error(err); - - return 0; - } - - let accumulation = export::metrics::accumulation( - record.instrument.descriptor(), - &record.attributes, - checkpoint, - ); - if let Err(err) = locked_processor.process(accumulation) { - global::handle_error(err); - } - - 1 - } else { - 0 - } - } - - // fn checkpoint_async( - // &self, - // instrument: &AsyncInstrument, - // locked_processor: &mut dyn LockedProcessor, - // ) -> usize { - // instrument.recorders.lock().map_or(0, |mut recorders| { - // let mut checkpointed = 0; - // match recorders.as_mut() { - // None => return checkpointed, - // Some(recorders) => { - // recorders.retain(|_key, attribute_recorder| { - // let epoch_diff = self.current_epoch.load().partial_cmp( - // &NumberKind::U64, - // &attribute_recorder.observed_epoch.into(), - // ); - // if epoch_diff == Some(Ordering::Equal) { - // if let Some(observed) = &attribute_recorder.observed { - // let accumulation = export::metrics::accumulation( - // instrument.descriptor(), - // &attribute_recorder.attributes, - // &self.resource, - // observed, - // ); - // - // if let Err(err) = locked_processor.process(accumulation) { - // global::handle_error(err); - // } - // checkpointed += 1; - // } - // } - // - // // Retain if this is not second collection cycle with no - // // observations for this AttributeSet. - // epoch_diff == Some(Ordering::Greater) - // }); - // } - // } - // if recorders.as_ref().map_or(false, |map| map.is_empty()) { - // *recorders = None; - // } - // - // checkpointed - // }) - // } -} - -impl fmt::Debug for AccumulatorCore { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("AccumulatorCore").finish() - } -} - -#[derive(Debug, Clone)] -struct SyncInstrument { - instrument: Arc, -} - -impl SyncInstrumentCore for SyncInstrument { - fn record_one(&self, cx: &Context, number: sdk_api::Number, kvs: &'_ [KeyValue]) { - self.instrument.acquire_handle(kvs).capture_one(cx, number) - } -} - -impl sdk_api::InstrumentCore for SyncInstrument { - fn descriptor(&self) -> &Descriptor { - self.instrument.descriptor() - } - - fn as_any(&self) -> &dyn Any { - self - } -} - -#[derive(Debug, Clone)] -struct AsyncInstrument { - instrument: Arc, -} - -impl AsyncInstrumentCore for AsyncInstrument { - fn observe_one(&self, cx: &Context, number: Number, kvs: &'_ [KeyValue]) { - self.instrument.acquire_handle(kvs).capture_one(cx, number) - } -} - -impl sdk_api::InstrumentCore for AsyncInstrument { - fn descriptor(&self) -> &Descriptor { - self.instrument.descriptor() - } - - fn as_any(&self) -> &dyn Any { - self - } -} - -#[derive(Debug, Clone)] -struct BaseInstrument { - meter: Accumulator, - descriptor: Descriptor, -} - -impl BaseInstrument { - // acquireHandle gets or creates a `*record` corresponding to `kvs`, - // the input attributes. - fn acquire_handle(&self, kvs: &[KeyValue]) -> Arc { - let mut hasher = FnvHasher::default(); - self.descriptor.attribute_hash().hash(&mut hasher); - - hash_attributes(&mut hasher, kvs.iter().map(|kv| (&kv.key, &kv.value))); - - let map_key = MapKey { - instrument_hash: hasher.finish(), - }; - let current = &self.meter.0.current; - if let Some(existing_record) = current.get(&map_key) { - return existing_record.value().clone(); - } - - let record = Arc::new(Record { - update_count: NumberKind::U64.zero().to_atomic(), - collected_count: NumberKind::U64.zero().to_atomic(), - attributes: AttributeSet::from_attributes(kvs.iter().cloned()), - instrument: self.clone(), - current: self - .meter - .0 - .processor - .aggregator_selector() - .aggregator_for(&self.descriptor), - checkpoint: self - .meter - .0 - .processor - .aggregator_selector() - .aggregator_for(&self.descriptor), - }); - current.insert(map_key, record.clone()); - - record - } -} - -impl InstrumentCore for BaseInstrument { - fn descriptor(&self) -> &Descriptor { - &self.descriptor - } - - fn as_any(&self) -> &dyn Any { - self - } -} - -/// record maintains the state of one metric instrument. Due -/// the use of lock-free algorithms, there may be more than one -/// `record` in existence at a time, although at most one can -/// be referenced from the `Accumulator.current` map. -#[derive(Debug)] -struct Record { - /// Incremented on every call to `update`. - update_count: AtomicNumber, - - /// Set to `update_count` on collection, supports checking for no updates during - /// a round. - collected_count: AtomicNumber, - - /// The processed attribute set for this record. - /// - /// TODO: look at perf here. - attributes: AttributeSet, - - /// The corresponding instrument. - instrument: BaseInstrument, - - /// current implements the actual `record_one` API, depending on the type of - /// aggregation. If `None`, the metric was disabled by the exporter. - current: Option>, - checkpoint: Option>, -} - -impl Record { - fn capture_one(&self, cx: &Context, number: Number) { - let current = match &self.current { - Some(current) => current, - // The instrument is disabled according to the AggregatorSelector. - None => return, - }; - if let Err(err) = aggregators::range_test(&number, &self.instrument.descriptor) - .and_then(|_| current.update(cx, &number, &self.instrument.descriptor)) - { - global::handle_error(err); - return; - } - - // Record was modified, inform the collect() that things need - // to be collected while the record is still mapped. - self.update_count.fetch_add(&NumberKind::U64, &1u64.into()); - } -} +//! The rust of the OpenTelemetry metrics SDK. +//! +//! ## Configuration +//! +//! The metrics SDK configuration is stored with each [MeterProvider]. +//! Configuration for [Resource]s, [View]s, and [ManualReader] or +//! [PeriodicReader] instances can be specified. +//! +//! ### Example +//! +//! ``` +//! use opentelemetry_api::{ +//! metrics::{MeterProvider as _, Unit}, +//! KeyValue, +//! }; +//! use opentelemetry_sdk::{metrics::MeterProvider, Resource}; +//! +//! // Generate SDK configuration, resource, views, etc +//! let resource = Resource::default(); // default attributes about the current process +//! +//! // Create a meter provider with the desired config +//! let provider = MeterProvider::builder().with_resource(resource).build(); +//! +//! // Use the meter provider to create meter instances +//! let meter = provider.meter("my_app"); +//! +//! // Create instruments scoped to the meter +//! let counter = meter +//! .u64_counter("power_consumption") +//! .with_unit(Unit::new("kWh")) +//! .init(); +//! +//! // use instruments to record measurements +//! counter.add(10, &[KeyValue::new("rate", "standard")]); +//! ``` +//! +//! [Resource]: crate::Resource + +pub(crate) mod aggregation; +pub mod data; +pub mod exporter; +pub(crate) mod instrument; +pub(crate) mod internal; +pub(crate) mod manual_reader; +pub(crate) mod meter; +mod meter_provider; +pub(crate) mod periodic_reader; +pub(crate) mod pipeline; +pub mod reader; +pub(crate) mod view; + +pub use aggregation::*; +pub use instrument::*; +pub use manual_reader::*; +pub use meter::*; +pub use meter_provider::*; +pub use periodic_reader::*; +pub use pipeline::Pipeline; +pub use view::*; diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/periodic_reader.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/periodic_reader.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/periodic_reader.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/periodic_reader.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,377 @@ +use std::{ + env, fmt, + sync::{Arc, Mutex, Weak}, + time::Duration, +}; + +use futures_channel::{mpsc, oneshot}; +use futures_util::{ + future::{self, Either}, + pin_mut, + stream::{self, FusedStream}, + Stream, StreamExt, +}; +use opentelemetry_api::{ + global, + metrics::{MetricsError, Result}, + Context, +}; + +use crate::runtime::Runtime; +use crate::{ + metrics::{ + exporter::PushMetricsExporter, + reader::{MetricProducer, SdkProducer}, + }, + Resource, +}; + +use super::{ + aggregation::Aggregation, + data::{ResourceMetrics, Temporality}, + instrument::InstrumentKind, + reader::{AggregationSelector, MetricReader, TemporalitySelector}, + Pipeline, +}; + +const DEFAULT_TIMEOUT: Duration = Duration::from_secs(30); +const DEFAULT_INTERVAL: Duration = Duration::from_secs(60); + +const METRIC_EXPORT_INTERVAL_NAME: &str = "OTEL_METRIC_EXPORT_INTERVAL"; +const METRIC_EXPORT_TIMEOUT_NAME: &str = "OTEL_METRIC_EXPORT_TIMEOUT"; + +/// Configuration options for [PeriodicReader]. +/// +/// A periodic reader is a [MetricReader] that collects and exports metric data +/// to the exporter at a defined interval. +/// +/// By default, the returned [MetricReader] will collect and export data every +/// 60 seconds, and will cancel export attempts that exceed 30 seconds. The +/// export time is not counted towards the interval between attempts. +/// +/// The [collect] method of the returned [MetricReader] continues to gather and +/// return metric data to the user. It will not automatically send that data to +/// the exporter outside of the predefined interval. +/// +/// [collect]: MetricReader::collect +#[derive(Debug)] +pub struct PeriodicReaderBuilder { + interval: Duration, + timeout: Duration, + exporter: E, + runtime: RT, +} + +impl PeriodicReaderBuilder +where + E: PushMetricsExporter, + RT: Runtime, +{ + fn new(exporter: E, runtime: RT) -> Self { + let interval = env::var(METRIC_EXPORT_INTERVAL_NAME) + .ok() + .and_then(|v| v.parse().map(Duration::from_millis).ok()) + .unwrap_or(DEFAULT_INTERVAL); + let timeout = env::var(METRIC_EXPORT_TIMEOUT_NAME) + .ok() + .and_then(|v| v.parse().map(Duration::from_millis).ok()) + .unwrap_or(DEFAULT_TIMEOUT); + + PeriodicReaderBuilder { + interval, + timeout, + exporter, + runtime, + } + } + + /// Configures the intervening time between exports for a [PeriodicReader]. + /// + /// This option overrides any value set for the `OTEL_METRIC_EXPORT_INTERVAL` + /// environment variable. + /// + /// If this option is not used or `interval` is equal to zero, 60 seconds is + /// used as the default. + pub fn with_interval(mut self, interval: Duration) -> Self { + if !interval.is_zero() { + self.interval = interval; + } + self + } + + /// Configures the time a [PeriodicReader] waits for an export to complete + /// before canceling it. + /// + /// This option overrides any value set for the `OTEL_METRIC_EXPORT_TIMEOUT` + /// environment variable. + /// + /// If this option is not used or `timeout` is equal to zero, 30 seconds is used + /// as the default. + pub fn with_timeout(mut self, timeout: Duration) -> Self { + if !timeout.is_zero() { + self.timeout = timeout; + } + self + } + + /// Create a [PeriodicReader] with the given config. + pub fn build(self) -> PeriodicReader { + let (message_sender, message_receiver) = mpsc::channel(256); + let ticker = self + .runtime + .interval(self.interval) + .map(|_| Message::Export); + + let messages = Box::pin(stream::select(message_receiver, ticker)); + let reader = PeriodicReader { + exporter: Arc::new(self.exporter), + inner: Arc::new(Mutex::new(PeriodicReaderInner { + message_sender, + sdk_producer: None, + is_shutdown: false, + external_producers: vec![], + })), + }; + + let runtime = self.runtime.clone(); + self.runtime.spawn(Box::pin( + PeriodicReaderWorker { + reader: reader.clone(), + timeout: self.timeout, + runtime, + rm: ResourceMetrics { + resource: Resource::empty(), + scope_metrics: Vec::new(), + }, + } + .run(messages), + )); + + reader + } +} + +/// A [MetricReader] that continuously collects and exports metric data at a set +/// interval. +/// +/// By default it will collect and export data every 60 seconds, and will cancel +/// export attempts that exceed 30 seconds. The export time is not counted +/// towards the interval between attempts. +/// +/// The [collect] method of the returned continues to gather and +/// return metric data to the user. It will not automatically send that data to +/// the exporter outside of the predefined interval. +/// +/// The [runtime] can be selected based on feature flags set for this crate. +/// +/// The exporter can be any exporter that implements [PushMetricsExporter] such +/// as [opentelemetry-otlp]. +/// +/// [collect]: MetricReader::collect +/// [runtime]: crate::runtime +/// [opentelemetry-otlp]: https://docs.rs/opentelemetry-otlp/latest/opentelemetry_otlp/ +/// +/// # Example +/// +/// ```no_run +/// use opentelemetry_sdk::metrics::PeriodicReader; +/// # fn example(get_exporter: impl Fn() -> E, get_runtime: impl Fn() -> R) +/// # where +/// # E: opentelemetry_sdk::metrics::exporter::PushMetricsExporter, +/// # R: opentelemetry_sdk::runtime::Runtime, +/// # { +/// +/// let exporter = get_exporter(); // set up a push exporter like OTLP +/// let runtime = get_runtime(); // select runtime: e.g. opentelemetry_sdk:runtime::Tokio +/// +/// let reader = PeriodicReader::builder(exporter, runtime).build(); +/// # drop(reader); +/// # } +/// ``` +#[derive(Clone)] +pub struct PeriodicReader { + exporter: Arc, + inner: Arc>, +} + +impl PeriodicReader { + /// Configuration options for a periodic reader + pub fn builder(exporter: E, runtime: RT) -> PeriodicReaderBuilder + where + E: PushMetricsExporter, + RT: Runtime, + { + PeriodicReaderBuilder::new(exporter, runtime) + } +} + +impl fmt::Debug for PeriodicReader { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("PeriodicReader").finish() + } +} + +struct PeriodicReaderInner { + message_sender: mpsc::Sender, + sdk_producer: Option>, + is_shutdown: bool, + external_producers: Vec>, +} + +#[derive(Debug)] +enum Message { + Export, + Flush(oneshot::Sender>), + Shutdown(oneshot::Sender>), +} + +struct PeriodicReaderWorker { + reader: PeriodicReader, + timeout: Duration, + runtime: RT, + rm: ResourceMetrics, +} + +impl PeriodicReaderWorker { + async fn collect_and_export(&mut self) -> Result<()> { + self.reader.collect(&mut self.rm)?; + + let export = self.reader.exporter.export(&mut self.rm); + let timeout = self.runtime.delay(self.timeout); + pin_mut!(export); + pin_mut!(timeout); + + match future::select(export, timeout).await { + Either::Left(_) => Ok(()), + Either::Right(_) => Err(MetricsError::Other("export timed out".into())), + } + } + + async fn process_message(&mut self, message: Message) -> bool { + match message { + Message::Export => { + if let Err(err) = self.collect_and_export().await { + global::handle_error(err) + } + } + Message::Flush(ch) => { + let res = self.collect_and_export().await; + if ch.send(res).is_err() { + global::handle_error(MetricsError::Other("flush channel closed".into())) + } + } + Message::Shutdown(ch) => { + let res = self.collect_and_export().await; + let _ = self.reader.exporter.shutdown(); + if ch.send(res).is_err() { + global::handle_error(MetricsError::Other("shutdown channel closed".into())) + } + return false; + } + } + + true + } + + async fn run(mut self, mut messages: impl Stream + Unpin + FusedStream) { + while let Some(message) = messages.next().await { + if !self.process_message(message).await { + break; + } + } + } +} + +impl AggregationSelector for PeriodicReader { + fn aggregation(&self, kind: InstrumentKind) -> Aggregation { + self.exporter.aggregation(kind) + } +} + +impl TemporalitySelector for PeriodicReader { + fn temporality(&self, kind: InstrumentKind) -> Temporality { + self.exporter.temporality(kind) + } +} + +impl MetricReader for PeriodicReader { + fn register_pipeline(&self, pipeline: Weak) { + let mut inner = match self.inner.lock() { + Ok(guard) => guard, + Err(_) => return, + }; + + // Only register once. If producer is already set, do nothing. + if inner.sdk_producer.is_none() { + inner.sdk_producer = Some(pipeline); + } else { + global::handle_error(MetricsError::Other( + "duplicate meter registration, did not register manual reader".into(), + )) + } + } + + fn register_producer(&self, producer: Box) { + let _ = self.inner.lock().map(|mut inner| { + if !inner.is_shutdown { + inner.external_producers.push(producer); + } + }); + } + + fn collect(&self, rm: &mut ResourceMetrics) -> Result<()> { + let inner = self.inner.lock()?; + match &inner.sdk_producer.as_ref().and_then(|w| w.upgrade()) { + Some(producer) => producer.produce(rm)?, + None => { + return Err(MetricsError::Other( + "reader is shut down or not registered".into(), + )) + } + }; + + let mut errs = vec![]; + for producer in &inner.external_producers { + match producer.produce() { + Ok(metrics) => rm.scope_metrics.push(metrics), + Err(err) => errs.push(err), + } + } + + if errs.is_empty() { + Ok(()) + } else { + Err(MetricsError::Other(format!("{:?}", errs))) + } + } + + fn force_flush(&self, _cx: &Context) -> Result<()> { + let mut inner = self.inner.lock()?; + let (sender, receiver) = oneshot::channel(); + inner + .message_sender + .try_send(Message::Flush(sender)) + .map_err(|e| MetricsError::Other(e.to_string()))?; + + drop(inner); // don't hold lock when blocking on future + + futures_executor::block_on(receiver) + .map_err(|err| MetricsError::Other(err.to_string())) + .and_then(|res| res) + } + + fn shutdown(&self) -> Result<()> { + let mut inner = self.inner.lock()?; + let (sender, receiver) = oneshot::channel(); + inner + .message_sender + .try_send(Message::Shutdown(sender)) + .map_err(|e| MetricsError::Other(e.to_string()))?; + + drop(inner); // don't hold lock when blocking on future + + futures_executor::block_on(receiver) + .map_err(|err| MetricsError::Other(err.to_string())) + .and_then(|res| res) + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/pipeline.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/pipeline.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/pipeline.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/pipeline.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,711 @@ +use core::fmt; +use std::{ + borrow::Cow, + collections::{HashMap, HashSet}, + sync::{Arc, Mutex}, +}; + +use opentelemetry_api::{ + global, + metrics::{CallbackRegistration, MetricsError, Result, Unit}, + Context, +}; + +use crate::{ + instrumentation::Scope, + metrics::{aggregation, data, internal, view::View}, + Resource, +}; + +use super::{ + data::{Metric, ResourceMetrics, ScopeMetrics, Temporality}, + instrument::{Instrument, InstrumentKind, Stream, StreamId}, + internal::Number, + reader::{MetricReader, SdkProducer}, +}; + +/// Connects all of the instruments created by a meter provider to a [MetricReader]. +/// +/// This is the object that will be registered when a meter provider is +/// created. +/// +/// As instruments are created the instrument should be checked if it exists in +/// the views of a the Reader, and if so each aggregator should be added to the +/// pipeline. +#[doc(hidden)] +pub struct Pipeline { + resource: Resource, + reader: Box, + views: Vec>, + inner: Box>, +} + +impl fmt::Debug for Pipeline { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("Pipeline") + } +} + +/// Single or multi-instrument callbacks +type GenericCallback = Arc; + +#[derive(Default)] +struct PipelineInner { + aggregations: HashMap>, + callbacks: Vec, + multi_callbacks: Vec>, +} + +impl fmt::Debug for PipelineInner { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("PipelineInner") + .field("aggregations", &self.aggregations) + .field("callbacks", &self.callbacks.len()) + .finish() + } +} + +impl Pipeline { + /// Adds the [InstrumentSync] to pipeline with scope. + /// + /// This method is not idempotent. Duplicate calls will result in duplicate + /// additions, it is the callers responsibility to ensure this is called with + /// unique values. + fn add_sync(&self, scope: Scope, i_sync: InstrumentSync) { + let _ = self.inner.lock().map(|mut inner| { + inner.aggregations.entry(scope).or_default().push(i_sync); + }); + } + + /// Registers a single instrument callback to be run when `produce` is called. + fn add_callback(&self, callback: GenericCallback) { + let _ = self + .inner + .lock() + .map(|mut inner| inner.callbacks.push(callback)); + } + + /// Registers a multi-instrument callback to be run when `produce` is called. + fn add_multi_callback( + &self, + callback: GenericCallback, + ) -> Result Result<()>> { + let mut inner = self.inner.lock()?; + inner.multi_callbacks.push(Some(callback)); + let idx = inner.multi_callbacks.len() - 1; + + Ok(move |this: &Pipeline| { + let mut inner = this.inner.lock()?; + // can't compare trait objects so use index + toumbstones to drop + inner.multi_callbacks[idx] = None; + Ok(()) + }) + } + + /// Send accumulated telemetry + fn force_flush(&self, cx: &Context) -> Result<()> { + self.reader.force_flush(cx) + } + + /// Shut down pipeline + fn shutdown(&self) -> Result<()> { + self.reader.shutdown() + } +} + +impl SdkProducer for Pipeline { + /// Returns aggregated metrics from a single collection. + fn produce(&self, rm: &mut ResourceMetrics) -> Result<()> { + let inner = self.inner.lock()?; + for cb in &inner.callbacks { + // TODO consider parallel callbacks. + cb(); + } + + for mcb in inner.multi_callbacks.iter().flatten() { + // TODO consider parallel multi callbacks. + mcb(); + } + + rm.resource = self.resource.clone(); + rm.scope_metrics.reserve(inner.aggregations.len()); + + let mut i = 0; + for (scope, instruments) in inner.aggregations.iter() { + let sm = match rm.scope_metrics.get_mut(i) { + Some(sm) => sm, + None => { + rm.scope_metrics.push(ScopeMetrics::default()); + rm.scope_metrics.last_mut().unwrap() + } + }; + sm.metrics.reserve(instruments.len()); + + let mut j = 0; + for inst in instruments { + if let Some(data) = inst.aggregator.aggregation() { + let m = Metric { + name: inst.name.clone(), + description: inst.description.clone(), + unit: inst.unit.clone(), + data, + }; + match sm.metrics.get_mut(j) { + Some(old) => *old = m, + None => sm.metrics.push(m), + }; + j += 1; + } + } + + sm.metrics.truncate(j); + if !sm.metrics.is_empty() { + sm.scope = scope.clone(); + i += 1; + } + } + + rm.scope_metrics.truncate(i); + + Ok(()) + } +} + +trait Aggregator: Send + Sync { + fn aggregation(&self) -> Option>; +} + +impl Aggregator for Arc> { + fn aggregation(&self) -> Option> { + self.as_ref().aggregation() + } +} + +/// A synchronization point between a [Pipeline] and an instrument's aggregators. +struct InstrumentSync { + name: Cow<'static, str>, + description: Cow<'static, str>, + unit: Unit, + aggregator: Box, +} + +impl fmt::Debug for InstrumentSync { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("InstrumentSync") + .field("name", &self.name) + .field("description", &self.description) + .field("unit", &self.unit) + .finish() + } +} + +type Cache = Mutex>>>>>; + +/// Facilitates inserting of new instruments from a single scope into a pipeline. +struct Inserter { + /// A cache that holds [Aggregator]s inserted into the underlying reader pipeline. + /// + /// This cache ensures no duplicate `Aggregator`s are inserted into the reader + /// pipeline and if a new request during an instrument creation asks for the same + /// `Aggregator` the same instance is returned. + aggregators: Cache, + + /// A cache that holds instrument identifiers for all the instruments a [Meter] has + /// created. + /// + /// It is provided from the `Meter` that owns this inserter. This cache ensures + /// that during the creation of instruments with the same name but different + /// options (e.g. description, unit) a warning message is logged. + views: Arc, StreamId>>>, + + pipeline: Arc, +} + +impl Inserter +where + T: Number, +{ + fn new(p: Arc, vc: Arc, StreamId>>>) -> Self { + Inserter { + aggregators: Default::default(), + views: vc, + pipeline: Arc::clone(&p), + } + } + + /// Inserts the provided instrument into a pipeline. + /// + /// All views the pipeline contains are matched against, and any matching view + /// that creates a unique [Aggregator] will be inserted into the pipeline and + /// included in the returned list. + /// + /// The returned `Aggregator`s are ensured to be deduplicated and unique. If + /// another view in another pipeline that is cached by this inserter's cache has + /// already inserted the same `Aggregator` for the same instrument, that + /// `Aggregator` instance is returned. + /// + /// If another instrument has already been inserted by this inserter, or any + /// other using the same cache, and it conflicts with the instrument being + /// inserted in this call, an `Aggregator` matching the arguments will still be + /// returned but a log message will also be logged to the OTel global logger. + /// + /// If the passed instrument would result in an incompatible `Aggregator`, an + /// error is returned and that `Aggregator` is not inserted or returned. + /// + /// If an instrument is determined to use a [aggregation::Aggregation::Drop], that instrument is + /// not inserted nor returned. + fn instrument(&self, inst: Instrument) -> Result>>> { + let mut matched = false; + let mut aggs = vec![]; + let mut errs = vec![]; + let kind = match inst.kind { + Some(kind) => kind, + None => return Err(MetricsError::Other("instrument must have a kind".into())), + }; + + // The cache will return the same Aggregator instance. Use stream ids to de duplicate. + let mut seen = HashSet::new(); + for v in &self.pipeline.views { + let stream = match v.match_inst(&inst) { + Some(stream) => stream, + None => continue, + }; + matched = true; + + let id = self.stream_id(kind, &stream); + if seen.contains(&id) { + continue; // This aggregator has already been added + } + + let agg = match self.cached_aggregator(&inst.scope, kind, stream) { + Ok(Some(agg)) => agg, + Ok(None) => continue, // Drop aggregator. + Err(err) => { + errs.push(err); + continue; + } + }; + seen.insert(id); + aggs.push(agg); + } + + if matched { + if errs.is_empty() { + return Ok(aggs); + } else { + return Err(MetricsError::Other(format!("{errs:?}"))); + } + } + + // Apply implicit default view if no explicit matched. + let stream = Stream { + name: inst.name, + description: inst.description, + unit: inst.unit, + aggregation: None, + allowed_attribute_keys: None, + }; + + match self.cached_aggregator(&inst.scope, kind, stream) { + Ok(agg) => { + if errs.is_empty() { + if let Some(agg) = agg { + aggs.push(agg); + } + Ok(aggs) + } else { + Err(MetricsError::Other(format!("{errs:?}"))) + } + } + Err(err) => { + errs.push(err); + Err(MetricsError::Other(format!("{errs:?}"))) + } + } + } + + /// Returns the appropriate Aggregator for an instrument + /// configuration. If the exact instrument has been created within the + /// inst.Scope, that Aggregator instance will be returned. Otherwise, a new + /// computed Aggregator will be cached and returned. + /// + /// If the instrument configuration conflicts with an instrument that has + /// already been created (e.g. description, unit, data type) a warning will be + /// logged at the "Info" level with the global OTel logger. A valid new + /// Aggregator for the instrument configuration will still be returned without + /// an error. + /// + /// If the instrument defines an unknown or incompatible aggregation, an error + /// is returned. + fn cached_aggregator( + &self, + scope: &Scope, + kind: InstrumentKind, + mut stream: Stream, + ) -> Result>>> { + let agg = if let Some(agg) = stream.aggregation.as_ref() { + agg + } else { + stream.aggregation = Some(self.pipeline.reader.aggregation(kind)); + stream.aggregation.as_ref().unwrap() + }; + + if let Err(err) = is_aggregator_compatible(&kind, agg) { + return Err(MetricsError::Other(format!( + "creating aggregator with instrumentKind: {:?}, aggregation {:?}: {:?}", + kind, stream.aggregation, err, + ))); + } + + let id = self.stream_id(kind, &stream); + // If there is a conflict, the specification says the view should + // still be applied and a warning should be logged. + self.log_conflict(&id); + let (id_temporality, id_monotonic) = (id.temporality, id.monotonic); + let mut cache = self.aggregators.lock()?; + let cached = cache.entry(id).or_insert_with(|| { + let mut agg = match self.aggregator(agg, kind, id_temporality, id_monotonic) { + Ok(Some(agg)) => agg, + other => return other, // Drop aggregator or error + }; + + if let Some(allowed) = stream.allowed_attribute_keys.as_ref().map(Arc::clone) { + agg = internal::new_filter(agg, Arc::new(move |kv| allowed.contains(&kv.key))); + } + + self.pipeline.add_sync( + scope.clone(), + InstrumentSync { + name: stream.name, + description: stream.description, + unit: stream.unit, + aggregator: Box::new(Arc::clone(&agg)), + }, + ); + + Ok(Some(agg)) + }); + + cached + .as_ref() + .map(|o| o.as_ref().map(Arc::clone)) + .map_err(|e| MetricsError::Other(e.to_string())) + } + + /// Validates if an instrument with the same name as id has already been created. + /// + /// If that instrument conflicts with id, a warning is logged. + fn log_conflict(&self, id: &StreamId) { + let _ = self.views.lock().map(|views| { + if let Some(existing) = views.get(&id.name) { + if existing == id { return; } + global::handle_error(MetricsError::Other(format!( + "duplicate metric stream definitions, names: ({} and {}), descriptions: ({} and {}), units: ({:?} and {:?}), numbers: ({} and {}), aggregations: ({:?} and {:?}), monotonics: ({} and {}), temporalities: ({:?} and {:?})", + existing.name, id.name, + existing.description, id.description, + existing.unit, id.unit, + existing.number, id.number, + existing.aggregation, id.aggregation, + existing.monotonic, id.monotonic, + existing.temporality, id.temporality))) + } + }); + } + + fn stream_id(&self, kind: InstrumentKind, stream: &Stream) -> StreamId { + let aggregation = stream + .aggregation + .as_ref() + .map(ToString::to_string) + .unwrap_or_default(); + + StreamId { + name: stream.name.clone(), + description: stream.description.clone(), + unit: stream.unit.clone(), + aggregation, + temporality: Some(self.pipeline.reader.temporality(kind)), + number: Cow::Borrowed(std::any::type_name::()), + monotonic: matches!( + kind, + InstrumentKind::ObservableCounter + | InstrumentKind::Counter + | InstrumentKind::Histogram + ), + } + } + + /// Returns a new [Aggregator] for the given params. + /// + /// If the aggregation is unknown or temporality is invalid, an error is returned. + fn aggregator( + &self, + agg: &aggregation::Aggregation, + kind: InstrumentKind, + temporality: Option, + monotonic: bool, + ) -> Result>>> { + use aggregation::Aggregation; + match agg { + Aggregation::Drop => Ok(None), + Aggregation::LastValue => Ok(Some(internal::new_last_value())), + Aggregation::Sum => { + match kind { + InstrumentKind::ObservableCounter | InstrumentKind::ObservableUpDownCounter => { + // Asynchronous counters and up-down-counters are defined to record + // the absolute value of the count: + // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/api.md#asynchronous-counter-creation + match temporality { + Some(Temporality::Cumulative) => { + return Ok(Some(internal::new_precomputed_cumulative_sum( + monotonic, + ))) + } + Some(Temporality::Delta) => { + return Ok(Some(internal::new_precomputed_delta_sum(monotonic))) + } + _ => { + return Err(MetricsError::Other(format!( + "unrecognized temporality: {:?}", + temporality + ))) + } + } + } + _ => {} + }; + + match temporality { + Some(Temporality::Cumulative) => { + Ok(Some(internal::new_cumulative_sum(monotonic))) + } + Some(Temporality::Delta) => Ok(Some(internal::new_delta_sum(monotonic))), + _ => Err(MetricsError::Other(format!( + "unrecognized temporality: {:?}", + temporality + ))), + } + } + a @ Aggregation::ExplicitBucketHistogram { .. } => match temporality { + Some(Temporality::Cumulative) => Ok(Some(internal::new_cumulative_histogram(a))), + Some(Temporality::Delta) => Ok(Some(internal::new_delta_histogram(a))), + _ => Err(MetricsError::Other(format!( + "unrecognized temporality: {:?}", + temporality + ))), + }, + _ => Err(MetricsError::Other("unknown aggregation".into())), + } + } +} + +/// Checks if the aggregation can be used by the instrument. +/// +/// Current compatibility: +/// +/// | Instrument Kind | Drop | LastValue | Sum | Histogram | Exponential Histogram | +/// |--------------------------|------|-----------|-----|-----------|-----------------------| +/// | Counter | X | | X | X | X | +/// | UpDownCounter | X | | X | | | +/// | Histogram | X | | X | X | X | +/// | Observable Counter | X | | X | | | +/// | Observable UpDownCounter | X | | X | | | +/// | Observable Gauge | X | X | | | |. +fn is_aggregator_compatible(kind: &InstrumentKind, agg: &aggregation::Aggregation) -> Result<()> { + use aggregation::Aggregation; + match agg { + Aggregation::ExplicitBucketHistogram { .. } => { + if kind == &InstrumentKind::Counter || kind == &InstrumentKind::Histogram { + return Ok(()); + } + // TODO: review need for aggregation check after + // https://github.com/open-telemetry/opentelemetry-specification/issues/2710 + Err(MetricsError::Other("incompatible aggregation".into())) + } + Aggregation::Sum => { + match kind { + InstrumentKind::ObservableCounter + | InstrumentKind::ObservableUpDownCounter + | InstrumentKind::Counter + | InstrumentKind::Histogram + | InstrumentKind::UpDownCounter => Ok(()), + _ => { + // TODO: review need for aggregation check after + // https://github.com/open-telemetry/opentelemetry-specification/issues/2710 + Err(MetricsError::Other("incompatible aggregation".into())) + } + } + } + Aggregation::LastValue => { + if kind == &InstrumentKind::ObservableGauge { + return Ok(()); + } + // TODO: review need for aggregation check after + // https://github.com/open-telemetry/opentelemetry-specification/issues/2710 + Err(MetricsError::Other("incompatible aggregation".into())) + } + Aggregation::Drop => Ok(()), + _ => { + // This is used passed checking for default, it should be an error at this point. + Err(MetricsError::Other(format!( + "unknown aggregation {:?}", + agg + ))) + } + } +} + +/// The group of pipelines connecting Readers with instrument measurement. +#[derive(Clone, Debug)] +pub(crate) struct Pipelines(Vec>); + +impl Pipelines { + pub(crate) fn new( + res: Resource, + readers: Vec>, + views: Vec>, + ) -> Self { + let mut pipes = Vec::with_capacity(readers.len()); + for r in readers { + let p = Arc::new(Pipeline { + resource: res.clone(), + reader: r, + views: views.clone(), + inner: Default::default(), + }); + p.reader.register_pipeline(Arc::downgrade(&p)); + pipes.push(p); + } + + Pipelines(pipes) + } + + pub(crate) fn register_callback(&self, callback: F) + where + F: Fn() + Send + Sync + 'static, + { + let cb = Arc::new(callback); + for pipe in &self.0 { + pipe.add_callback(cb.clone()) + } + } + + /// Registers a multi-instrument callback to be run when `produce` is called. + pub(crate) fn register_multi_callback(&self, f: F) -> Result> + where + F: Fn() + Send + Sync + 'static, + { + let cb = Arc::new(f); + + let fns = self + .0 + .iter() + .map(|pipe| { + let pipe = Arc::clone(pipe); + let unreg = pipe.add_multi_callback(cb.clone())?; + Ok(Box::new(move || unreg(pipe.as_ref())) as _) + }) + .collect::>()?; + + Ok(Box::new(Unregister(fns))) + } + + /// Force flush all pipelines + pub(crate) fn force_flush(&self, cx: &Context) -> Result<()> { + let mut errs = vec![]; + for pipeline in &self.0 { + if let Err(err) = pipeline.force_flush(cx) { + errs.push(err); + } + } + + if errs.is_empty() { + Ok(()) + } else { + Err(MetricsError::Other(format!("{errs:?}"))) + } + } + + /// Shut down all pipelines + pub(crate) fn shutdown(&self) -> Result<()> { + let mut errs = vec![]; + for pipeline in &self.0 { + if let Err(err) = pipeline.shutdown() { + errs.push(err); + } + } + + if errs.is_empty() { + Ok(()) + } else { + Err(MetricsError::Other(format!("{errs:?}"))) + } + } +} + +struct Unregister(Vec Result<()> + Send + Sync>>); + +impl CallbackRegistration for Unregister { + fn unregister(&mut self) -> Result<()> { + let mut errs = vec![]; + while let Some(unreg) = self.0.pop() { + if let Err(err) = unreg() { + errs.push(err); + } + } + + if errs.is_empty() { + Ok(()) + } else { + Err(MetricsError::Other(format!("{errs:?}"))) + } + } +} + +/// resolver facilitates resolving Aggregators an instrument needs to aggregate +/// measurements with while updating all pipelines that need to pull from those +/// aggregations. +pub(crate) struct Resolver { + inserters: Vec>, +} + +impl Resolver +where + T: Number, +{ + pub(crate) fn new( + pipelines: Arc, + view_cache: Arc, StreamId>>>, + ) -> Self { + let inserters = pipelines.0.iter().fold(Vec::new(), |mut acc, pipe| { + acc.push(Inserter::new(Arc::clone(pipe), Arc::clone(&view_cache))); + acc + }); + + Resolver { inserters } + } + + /// Aggregators returns the Aggregators that must be updated by the instrument + /// defined by key. + pub(crate) fn aggregators( + &self, + id: Instrument, + ) -> Result>>> { + let (aggs, errs) = + self.inserters + .iter() + .fold((vec![], vec![]), |(mut aggs, mut errs), inserter| { + match inserter.instrument(id.clone()) { + Ok(agg) => aggs.extend(agg), + Err(err) => errs.push(err), + }; + (aggs, errs) + }); + + if errs.is_empty() { + Ok(aggs) + } else { + Err(MetricsError::Other(format!("{errs:?}"))) + } + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/processors/basic.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/processors/basic.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/processors/basic.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/processors/basic.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,432 +0,0 @@ -use crate::{ - export::metrics::{ - self, - aggregation::{Temporality, TemporalitySelector}, - Accumulation, AggregatorSelector, Checkpointer, CheckpointerFactory, LockedCheckpointer, - LockedProcessor, Processor, Reader, Record, - }, - metrics::{aggregators::Aggregator, sdk_api::Descriptor}, -}; -use core::fmt; -use fnv::FnvHasher; -use opentelemetry_api::{ - attributes::{hash_attributes, AttributeSet}, - metrics::{MetricsError, Result}, -}; -use std::collections::HashMap; -use std::hash::{Hash, Hasher}; -use std::sync::{Arc, Mutex, MutexGuard}; -use std::time::SystemTime; - -/// Create a new basic processor -pub fn factory(aggregator_selector: A, temporality_selector: T) -> BasicProcessorBuilder -where - A: AggregatorSelector + Send + Sync + 'static, - T: TemporalitySelector + Send + Sync + 'static, -{ - BasicProcessorBuilder { - aggregator_selector: Arc::new(aggregator_selector), - temporality_selector: Arc::new(temporality_selector), - memory: false, - } -} - -pub struct BasicProcessorBuilder { - aggregator_selector: Arc, - temporality_selector: Arc, - memory: bool, -} - -impl BasicProcessorBuilder { - /// Memory controls whether the processor remembers metric instruments and - /// attribute sets that were previously reported. - /// - /// When Memory is `true`, [`Reader::try_for_each`] will visit metrics that were - /// not updated in the most recent interval. - pub fn with_memory(mut self, memory: bool) -> Self { - self.memory = memory; - self - } -} - -impl fmt::Debug for BasicProcessorBuilder { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("BasicProcessorBuilder") - .field("memory", &self.memory) - .finish() - } -} - -impl CheckpointerFactory for BasicProcessorBuilder { - fn checkpointer(&self) -> Arc { - Arc::new(BasicProcessor { - aggregator_selector: Arc::clone(&self.aggregator_selector), - temporality_selector: Arc::clone(&self.temporality_selector), - state: Mutex::new(BasicProcessorState::with_memory(self.memory)), - }) - } -} - -/// Basic metric integration strategy -pub struct BasicProcessor { - aggregator_selector: Arc, - temporality_selector: Arc, - state: Mutex, -} - -impl Processor for BasicProcessor { - fn aggregator_selector(&self) -> &dyn AggregatorSelector { - self.aggregator_selector.as_ref() - } -} - -impl Checkpointer for BasicProcessor { - fn checkpoint( - &self, - f: &mut dyn FnMut(&mut dyn LockedCheckpointer) -> Result<()>, - ) -> Result<()> { - self.state.lock().map_err(From::from).and_then(|locked| { - f(&mut BasicLockedProcessor { - parent: self, - state: locked, - }) - }) - } -} - -impl fmt::Debug for BasicProcessor { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("BasicProcessor") - .field("state", &self.state) - .finish() - } -} - -/// A locked representation of the processor used where mutable references are necessary. -#[derive(Debug)] -struct BasicLockedProcessor<'a> { - parent: &'a BasicProcessor, - state: MutexGuard<'a, BasicProcessorState>, -} - -impl<'a> LockedProcessor for BasicLockedProcessor<'a> { - fn process(&mut self, accumulation: Accumulation<'_>) -> Result<()> { - if self.state.started_collection != self.state.finished_collection.wrapping_add(1) { - return Err(MetricsError::InconsistentState); - } - - let desc = accumulation.descriptor(); - let mut hasher = FnvHasher::default(); - desc.attribute_hash().hash(&mut hasher); - hash_attributes(&mut hasher, accumulation.attributes().into_iter()); - let key = StateKey(hasher.finish()); - let agg = accumulation.aggregator(); - let finished_collection = self.state.finished_collection; - if let Some(value) = self.state.values.get_mut(&key) { - // Advance the update sequence number. - let same_collection = finished_collection == value.updated; - value.updated = finished_collection; - - // At this point in the code, we have located an existing - // value for some stateKey. This can be because: - // - // (a) stateful aggregation is being used, the entry was - // entered during a prior collection, and this is the first - // time processing an accumulation for this stateKey in the - // current collection. Since this is the first time - // processing an accumulation for this stateKey during this - // collection, we don't know yet whether there are multiple - // accumulators at work. If there are multiple accumulators, - // they'll hit case (b) the second time through. - // - // (b) multiple accumulators are being used, whether stateful - // or not. - // - // Case (a) occurs when the instrument and the exporter - // require memory to work correctly, either because the - // instrument reports a PrecomputedSum to a DeltaExporter or - // the reverse, a non-PrecomputedSum instrument with a - // CumulativeExporter. This logic is encapsulated in - // ExportKind.MemoryRequired(MetricKind). - // - // Case (b) occurs when the variable `sameCollection` is true, - // indicating that the stateKey for Accumulation has already - // been seen in the same collection. When this happens, it - // implies that multiple Accumulators are being used, or that - // a single Accumulator has been configured with an attribute key - // filter. - - if !same_collection { - if !value.current_owned { - // This is the first Accumulation we've seen for this - // stateKey during this collection. Just keep a - // reference to the Accumulator's Aggregator. All the other cases - // copy Aggregator state. - value.current = agg.clone(); - return Ok(()); - } - return agg.synchronized_move(&value.current, desc); - } - - // If the current is not owned, take ownership of a copy - // before merging below. - if !value.current_owned { - let tmp = value.current.clone(); - if let Some(current) = self.parent.aggregator_selector.aggregator_for(desc) { - value.current = current; - value.current_owned = true; - tmp.synchronized_move(&value.current, desc)?; - } - } - - // Combine this `Accumulation` with the prior `Accumulation`. - return value.current.merge(agg.as_ref(), desc); - } - - let stateful = self - .parent - .temporality_selector - .temporality_for(desc, agg.aggregation().kind()) - .memory_required(desc.instrument_kind()); - - let cumulative = if stateful { - if desc.instrument_kind().precomputed_sum() { - // If we know we need to compute deltas, allocate one. - return Err(MetricsError::Other("No cumulative to sum support".into())); - } - // Always allocate a cumulative aggregator if stateful - self.parent.aggregator_selector.aggregator_for(desc) - } else { - None - }; - - self.state.values.insert( - key, - StateValue { - descriptor: desc.clone(), - attributes: accumulation.attributes().clone(), - current_owned: false, - current: agg.clone(), - cumulative, - stateful, - updated: finished_collection, - }, - ); - - Ok(()) - } -} - -impl LockedCheckpointer for BasicLockedProcessor<'_> { - fn processor(&mut self) -> &mut dyn LockedProcessor { - self - } - - fn reader(&mut self) -> &mut dyn Reader { - &mut *self.state - } - - fn start_collection(&mut self) { - if self.state.started_collection != 0 { - self.state.interval_start = self.state.interval_end; - } - self.state.started_collection = self.state.started_collection.wrapping_add(1); - } - - fn finish_collection(&mut self) -> Result<()> { - self.state.interval_end = opentelemetry_api::time::now(); - if self.state.started_collection != self.state.finished_collection.wrapping_add(1) { - return Err(MetricsError::InconsistentState); - } - let finished_collection = self.state.finished_collection; - self.state.finished_collection = self.state.finished_collection.wrapping_add(1); - let has_memory = self.state.config.memory; - - let mut result = Ok(()); - - self.state.values.retain(|_key, value| { - // Return early if previous error - if result.is_err() { - return true; - } - - let mkind = value.descriptor.instrument_kind(); - - let stale = value.updated != finished_collection; - let stateless = !value.stateful; - - // The following branch updates stateful aggregators. Skip these updates - // if the aggregator is not stateful or if the aggregator is stale. - if stale || stateless { - // If this processor does not require memory, stale, stateless - // entries can be removed. This implies that they were not updated - // over the previous full collection interval. - if stale && stateless && !has_memory { - return false; - } - return true; - } - - // The only kind of aggregators that are not stateless - // are the ones needing delta to cumulative - // conversion. Merge aggregator state in this case. - if !mkind.precomputed_sum() { - // This line is equivalent to: - // value.cumulative = value.cumulative + value.delta - if let Some(cumulative) = value.cumulative.as_ref() { - result = cumulative.merge(value.current.as_ref(), &value.descriptor) - } - } - - true - }); - - result - } -} - -#[derive(Debug, Default)] -struct BasicProcessorConfig { - /// Memory controls whether the processor remembers metric instruments and attribute - /// sets that were previously reported. When Memory is true, - /// `CheckpointSet::try_for_each` will visit metrics that were not updated in - /// the most recent interval. - memory: bool, -} - -#[derive(Debug)] -struct BasicProcessorState { - config: BasicProcessorConfig, - values: HashMap, - // Note: the timestamp logic currently assumes all exports are deltas. - process_start: SystemTime, - interval_start: SystemTime, - interval_end: SystemTime, - started_collection: u64, - finished_collection: u64, -} - -impl BasicProcessorState { - fn with_memory(memory: bool) -> Self { - let mut state = BasicProcessorState::default(); - state.config.memory = memory; - state - } -} - -impl Default for BasicProcessorState { - fn default() -> Self { - BasicProcessorState { - config: BasicProcessorConfig::default(), - values: HashMap::default(), - process_start: opentelemetry_api::time::now(), - interval_start: opentelemetry_api::time::now(), - interval_end: opentelemetry_api::time::now(), - started_collection: 0, - finished_collection: 0, - } - } -} - -impl Reader for BasicProcessorState { - fn try_for_each( - &mut self, - temporality_selector: &dyn TemporalitySelector, - f: &mut dyn FnMut(&Record<'_>) -> Result<()>, - ) -> Result<()> { - if self.started_collection != self.finished_collection { - return Err(MetricsError::InconsistentState); - } - - self.values.iter().try_for_each(|(_key, value)| { - let instrument_kind = value.descriptor.instrument_kind(); - - let agg; - let start; - - // If the processor does not have memory and it was not updated in the - // prior round, do not visit this value. - if !self.config.memory && value.updated != self.finished_collection.wrapping_sub(1) { - return Ok(()); - } - - match temporality_selector - .temporality_for(&value.descriptor, value.current.aggregation().kind()) - { - Temporality::Cumulative => { - // If stateful, the sum has been computed. If stateless, the - // input was already cumulative. Either way, use the - // checkpointed value: - if value.stateful { - agg = value.cumulative.as_ref(); - } else { - agg = Some(&value.current); - } - - start = self.process_start; - } - Temporality::Delta => { - // Precomputed sums are a special case. - if instrument_kind.precomputed_sum() { - return Err(MetricsError::Other("No cumulative to delta".into())); - } - - agg = Some(&value.current); - start = self.interval_start; - } - } - - let res = f(&metrics::record( - &value.descriptor, - &value.attributes, - agg, - start, - self.interval_end, - )); - - if let Err(MetricsError::NoDataCollected) = res { - Ok(()) - } else { - res - } - }) - } -} - -#[derive(Debug, PartialEq, Eq, Hash)] -struct StateKey(u64); - -#[derive(Debug)] -struct StateValue { - /// Instrument descriptor - descriptor: Descriptor, - - /// Instrument attributes - attributes: AttributeSet, - - /// Indicates the last sequence number when this value had process called by an - /// accumulator. - updated: u64, - - /// Indicates that a cumulative aggregation is being maintained, taken from the - /// process start time. - stateful: bool, - - /// Indicates that "current" was allocated - /// by the processor in order to merge results from - /// multiple `Accumulator`s during a single collection - /// round, which may happen either because: - /// - /// (1) multiple `Accumulator`s output the same `Accumulation. - /// (2) one `Accumulator` is configured with dimensionality reduction. - current_owned: bool, - - /// The output from a single `Accumulator` (if !current_owned) or an - /// `Aggregator` owned by the processor used to accumulate multiple values in a - /// single collection round. - current: Arc, - - /// If `Some`, refers to an `Aggregator` owned by the processor used to store - /// the last cumulative value. - cumulative: Option>, -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/processors/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/processors/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/processors/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/processors/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -//! Metric Processors -mod basic; - -pub use basic::{factory, BasicProcessor}; diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/reader.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/reader.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/reader.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/reader.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,163 @@ +//! Interfaces for reading and producing metrics +use std::{fmt, sync::Weak}; + +use opentelemetry_api::{metrics::Result, Context}; + +use super::{ + aggregation::Aggregation, + data::{ResourceMetrics, ScopeMetrics, Temporality}, + instrument::InstrumentKind, + pipeline::Pipeline, +}; + +/// The interface used between the SDK and an exporter. +/// +/// Control flow is bi-directional through the `MetricReader`, since the SDK +/// initiates `force_flush` and `shutdown` while the reader initiates +/// collection. The `register_pipeline` method here informs the metric reader +/// that it can begin reading, signaling the start of bi-directional control +/// flow. +/// +/// Typically, push-based exporters that are periodic will implement +/// `MetricExporter` themselves and construct a `PeriodicReader` to satisfy this +/// interface. +/// +/// Pull-based exporters will typically implement `MetricReader` themselves, +/// since they read on demand. +pub trait MetricReader: + AggregationSelector + TemporalitySelector + fmt::Debug + Send + Sync + 'static +{ + /// Registers a [MetricReader] with a [Pipeline]. + /// + /// The pipeline argument allows the `MetricReader` to signal the sdk to collect + /// and send aggregated metric measurements. + fn register_pipeline(&self, pipeline: Weak); + + /// Registers a an external Producer with this [MetricReader]. + /// + /// The [MetricProducer] is used as a source of aggregated metric data which is + /// incorporated into metrics collected from the SDK. + fn register_producer(&self, producer: Box); + + /// Gathers and returns all metric data related to the [MetricReader] from the + /// SDK and stores it in the provided [ResourceMetrics] reference. + /// + /// An error is returned if this is called after shutdown. + fn collect(&self, rm: &mut ResourceMetrics) -> Result<()>; + + /// Flushes all metric measurements held in an export pipeline. + /// + /// There is no guaranteed that all telemetry be flushed or all resources have + /// been released on error. + fn force_flush(&self, cx: &Context) -> Result<()>; + + /// Flushes all metric measurements held in an export pipeline and releases any + /// held computational resources. + /// + /// There is no guaranteed that all telemetry be flushed or all resources have + /// been released on error. + /// + /// After `shutdown` is called, calls to `collect` will perform no operation and + /// instead will return an error indicating the shutdown state. + fn shutdown(&self) -> Result<()>; +} + +/// Produces metrics for a [MetricReader]. +pub(crate) trait SdkProducer: fmt::Debug + Send + Sync { + /// Returns aggregated metrics from a single collection. + fn produce(&self, rm: &mut ResourceMetrics) -> Result<()>; +} + +/// Produces metrics for a [MetricReader] from an external source. +pub trait MetricProducer: fmt::Debug + Send + Sync { + /// Returns aggregated metrics from an external source. + fn produce(&self) -> Result; +} + +/// An interface for selecting the temporality for an [InstrumentKind]. +pub trait TemporalitySelector: Send + Sync { + /// Selects the temporality to use based on the [InstrumentKind]. + fn temporality(&self, kind: InstrumentKind) -> Temporality; +} + +/// The default temporality used if not specified for a given [InstrumentKind]. +/// +/// [Temporality::Cumulative] will be used for all instrument kinds if this +/// [TemporalitySelector] is used. +#[derive(Clone, Default, Debug)] +pub struct DefaultTemporalitySelector { + pub(crate) _private: (), +} + +impl DefaultTemporalitySelector { + /// Create a new default temporality selector. + pub fn new() -> Self { + Self::default() + } +} + +impl TemporalitySelector for DefaultTemporalitySelector { + fn temporality(&self, _kind: InstrumentKind) -> Temporality { + Temporality::Cumulative + } +} + +/// An interface for selecting the aggregation and the parameters for an +/// [InstrumentKind]. +pub trait AggregationSelector: Send + Sync { + /// Selects the aggregation and the parameters to use for that aggregation based on + /// the [InstrumentKind]. + fn aggregation(&self, kind: InstrumentKind) -> Aggregation; +} + +impl AggregationSelector for T +where + T: Fn(InstrumentKind) -> Aggregation + Send + Sync, +{ + fn aggregation(&self, kind: InstrumentKind) -> Aggregation { + self(kind) + } +} + +/// The default aggregation and parameters for an instrument of [InstrumentKind]. +/// +/// This [AggregationSelector] uses the following selection mapping per [the spec]: +/// +/// * Counter ⇨ Sum +/// * Observable Counter ⇨ Sum +/// * UpDownCounter ⇨ Sum +/// * Observable UpDownCounter ⇨ Sum +/// * Observable Gauge ⇨ LastValue +/// * Histogram ⇨ ExplicitBucketHistogram +/// +/// [the spec]: https://github.com/open-telemetry/opentelemetry-specification/blob/v1.19.0/specification/metrics/sdk.md#default-aggregation +#[derive(Clone, Default, Debug)] +pub struct DefaultAggregationSelector { + pub(crate) _private: (), +} + +impl DefaultAggregationSelector { + /// Create a new default aggregation selector. + pub fn new() -> Self { + Self::default() + } +} + +impl AggregationSelector for DefaultAggregationSelector { + fn aggregation(&self, kind: InstrumentKind) -> Aggregation { + match kind { + InstrumentKind::Counter + | InstrumentKind::UpDownCounter + | InstrumentKind::ObservableCounter + | InstrumentKind::ObservableUpDownCounter => Aggregation::Sum, + InstrumentKind::ObservableGauge => Aggregation::LastValue, + InstrumentKind::Histogram => Aggregation::ExplicitBucketHistogram { + boundaries: vec![ + 0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, + 5000.0, 7500.0, 10000.0, + ], + record_min_max: true, + }, + } + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/registry.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/registry.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/registry.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/registry.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,129 +0,0 @@ -//! Metrics Registry API -use crate::metrics::sdk_api::{Descriptor, SyncInstrumentCore}; -use core::fmt; -use opentelemetry_api::{ - metrics::{MetricsError, Result}, - Context, -}; -use std::sync::{Arc, Mutex}; -use std::{any::Any, collections::HashMap}; - -use super::sdk_api::{AsyncInstrumentCore, InstrumentCore, MeterCore}; - -/// Create a new `UniqueInstrumentMeterCore` from a `InstrumentProvider`. -pub fn unique_instrument_meter_core(core: T) -> UniqueInstrumentMeterCore -where - T: AnyMeterCore + Send + Sync + 'static, -{ - UniqueInstrumentMeterCore::wrap(core) -} - -/// An extension trait that allows meters to be downcast -pub trait AnyMeterCore: MeterCore { - /// Returns the current type as [`Any`] - fn as_any(&self) -> &dyn Any; -} - -impl AnyMeterCore for T { - fn as_any(&self) -> &dyn Any { - self - } -} - -/// Implements the [`MeterCore`] interface, adding uniqueness checking for -/// instrument descriptors. -pub struct UniqueInstrumentMeterCore { - inner: Box, - state: Mutex>>, -} - -impl fmt::Debug for UniqueInstrumentMeterCore { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str("UniqueInstrumentMeterCore") - } -} - -impl UniqueInstrumentMeterCore { - fn wrap(inner: T) -> Self - where - T: AnyMeterCore + Send + Sync + 'static, - { - UniqueInstrumentMeterCore { - inner: Box::new(inner), - state: Mutex::new(HashMap::default()), - } - } - - pub(crate) fn meter_core(&self) -> &dyn Any { - self.inner.as_any() - } -} - -impl MeterCore for UniqueInstrumentMeterCore { - fn new_sync_instrument( - &self, - descriptor: Descriptor, - ) -> Result> { - self.state.lock().map_err(Into::into).and_then(|mut state| { - let instrument = check_uniqueness(&state, &descriptor)?; - match instrument { - Some(instrument) => Ok(instrument), - None => { - let instrument = self.inner.new_sync_instrument(descriptor.clone())?; - state.insert(descriptor.name().into(), instrument.clone().as_dyn_core()); - - Ok(instrument) - } - } - }) - } - - fn new_async_instrument( - &self, - descriptor: Descriptor, - ) -> Result> { - self.state.lock().map_err(Into::into).and_then(|mut state| { - let instrument = check_uniqueness(&state, &descriptor)?; - match instrument { - Some(instrument) => Ok(instrument), - None => { - let instrument = self.inner.new_async_instrument(descriptor)?; - state.insert( - instrument.descriptor().name().into(), - instrument.clone().as_dyn_core(), - ); - - Ok(instrument) - } - } - }) - } - - fn register_callback(&self, f: Box) -> Result<()> { - self.inner.register_callback(f) - } -} - -fn check_uniqueness( - instruments: &HashMap>, - descriptor: &Descriptor, -) -> Result> { - if let Some(instrument) = instruments.get(descriptor.name()) { - if is_equal(instrument.descriptor(), descriptor) { - Ok(instrument.as_any().downcast_ref::().cloned()) - } else { - Err(MetricsError::MetricKindMismatch(format!( - "metric {} registered as a {:?} {:?}", - descriptor.name(), - descriptor.number_kind(), - descriptor.instrument_kind() - ))) - } - } else { - Ok(None) - } -} - -fn is_equal(a: &Descriptor, b: &Descriptor) -> bool { - a.instrument_kind() == b.instrument_kind() && a.number_kind() == b.number_kind() -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/async_instrument.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/async_instrument.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/async_instrument.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/async_instrument.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,122 +0,0 @@ -//! Async metrics -use crate::{ - global, - metrics::{sdk_api, MetricsError, Number}, - KeyValue, -}; -use std::fmt; -use std::marker; -use std::sync::Arc; - -/// Observation is used for reporting an asynchronous batch of metric values. -/// Instances of this type should be created by asynchronous instruments (e.g., -/// [ValueObserver::observation]). -/// -/// [ValueObserver::observation]: crate::metrics::ValueObserver::observation() -#[derive(Debug)] -pub struct Observation { - number: Number, - instrument: Arc, -} - -impl Observation { - /// Create a new observation for an instrument - pub(crate) fn new(number: Number, instrument: Arc) -> Self { - Observation { number, instrument } - } - - /// The value of this observation - pub fn number(&self) -> &Number { - &self.number - } - /// The instrument used to record this observation - pub fn instrument(&self) -> &Arc { - &self.instrument - } -} - -/// A type of callback that `f64` observers run. -type F64ObserverCallback = Box) + Send + Sync>; - -/// A type of callback that `u64` observers run. -type U64ObserverCallback = Box) + Send + Sync>; - -/// A type of callback that `u64` observers run. -type I64ObserverCallback = Box) + Send + Sync>; - -/// A callback argument for use with any Observer instrument that will be -/// reported as a batch of observations. -type BatchObserverCallback = Box; - -/// Data passed to an observer callback to capture observations for one -/// asynchronous metric instrument. -pub struct ObserverResult { - instrument: Arc, - f: fn(&[KeyValue], &[Observation]), - _marker: marker::PhantomData, -} - -impl ObserverResult -where - T: Into, -{ - /// New observer result for a given metric instrument - fn new( - instrument: Arc, - f: fn(&[KeyValue], &[Observation]), - ) -> Self { - ObserverResult { - instrument, - f, - _marker: marker::PhantomData, - } - } - - /// Observe captures a single value from the associated instrument callback, - /// with the given attributes. - pub fn observe(&self, value: T, attributes: &[KeyValue]) { - (self.f)( - attributes, - &[Observation { - number: value.into(), - instrument: self.instrument.clone(), - }], - ) - } -} - -impl fmt::Debug for ObserverResult { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("ObserverResult") - .field("instrument", &self.instrument) - .field("f", &"fn(&[KeyValue], &[Observation])") - .finish() - } -} - -/// Passed to a batch observer callback to capture observations for multiple -/// asynchronous instruments. -pub struct BatchObserverResult { - f: fn(&[KeyValue], &[Observation]), -} - -impl fmt::Debug for BatchObserverResult { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("BatchObserverResult") - .field("f", &"fn(&[KeyValue], &[Observation])") - .finish() - } -} - -impl BatchObserverResult { - /// New observer result for a given metric instrument - fn new(f: fn(&[KeyValue], &[Observation])) -> Self { - BatchObserverResult { f } - } - - /// Captures multiple observations from the associated batch instrument - /// callback, with the given attributes. - pub fn observe(&self, attributes: &[KeyValue], observations: &[Observation]) { - (self.f)(attributes, observations) - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/descriptor.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/descriptor.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/descriptor.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/descriptor.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,83 +0,0 @@ -use crate::metrics::sdk_api::{InstrumentKind, NumberKind}; -use fnv::FnvHasher; -use opentelemetry_api::metrics::Unit; -use std::hash::{Hash, Hasher}; - -/// Descriptor contains all the settings that describe an instrument, including -/// its name, metric kind, number kind, and the configurable options. -#[derive(Clone, Debug, PartialEq, Eq)] -pub struct Descriptor { - name: String, - instrument_kind: InstrumentKind, - number_kind: NumberKind, - description: Option, - unit: Option, - attribute_hash: u64, -} - -impl Descriptor { - /// Create a new descriptor - pub fn new( - name: String, - instrument_kind: InstrumentKind, - number_kind: NumberKind, - description: Option, - unit: Option, - ) -> Self { - let mut hasher = FnvHasher::default(); - name.hash(&mut hasher); - instrument_kind.hash(&mut hasher); - number_kind.hash(&mut hasher); - if let Some(description) = &description { - description.hash(&mut hasher); - } - if let Some(unit) = &unit { - unit.hash(&mut hasher); - } - - Descriptor { - name, - instrument_kind, - number_kind, - description, - unit, - attribute_hash: hasher.finish(), - } - } - - /// The metric instrument's name. - pub fn name(&self) -> &str { - self.name.as_str() - } - - /// The specific kind of instrument. - pub fn instrument_kind(&self) -> &InstrumentKind { - &self.instrument_kind - } - - /// NumberKind returns whether this instrument is declared over int64, float64, or uint64 - /// values. - pub fn number_kind(&self) -> &NumberKind { - &self.number_kind - } - - /// A human-readable description of the metric instrument. - pub fn description(&self) -> Option<&String> { - self.description.as_ref() - } - - /// Assign a new description - pub fn set_description(&mut self, description: String) { - self.description = Some(description); - } - - /// Unit describes the units of the metric instrument. - pub fn unit(&self) -> Option<&str> { - self.unit.as_ref().map(|unit| unit.as_ref()) - } - - /// The pre-computed hash of the descriptor data - pub fn attribute_hash(&self) -> u64 { - self.attribute_hash - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/instrument_kind.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/instrument_kind.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/instrument_kind.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/instrument_kind.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -/// Kinds of OpenTelemetry metric instruments -#[derive(Clone, Debug, PartialEq, Eq, Hash)] -pub enum InstrumentKind { - /// A histogram instrument - Histogram, - /// A gauge observer instrument - GaugeObserver, - /// A synchronous per-request part of a monotonic sum. - Counter, - /// A synchronous per-request part of a non-monotonic sum. - UpDownCounter, - /// An asynchronous per-interval recorder of a monotonic sum. - CounterObserver, - /// An asynchronous per-interval recorder of a non-monotonic sum. - UpDownCounterObserver, -} - -impl InstrumentKind { - /// Whether this is a synchronous kind of instrument. - pub fn synchronous(&self) -> bool { - matches!( - self, - InstrumentKind::Counter | InstrumentKind::UpDownCounter | InstrumentKind::Histogram - ) - } - - /// Whether this is a synchronous kind of instrument. - pub fn asynchronous(&self) -> bool { - !self.synchronous() - } - - /// Whether this kind of instrument adds its inputs (as opposed to grouping). - pub fn adding(&self) -> bool { - matches!( - self, - InstrumentKind::Counter - | InstrumentKind::UpDownCounter - | InstrumentKind::CounterObserver - | InstrumentKind::UpDownCounterObserver - ) - } - - /// Whether this kind of instrument groups its inputs (as opposed to adding). - pub fn grouping(&self) -> bool { - !self.adding() - } - - /// Whether this kind of instrument exposes a non-decreasing sum. - pub fn monotonic(&self) -> bool { - matches!( - self, - InstrumentKind::Counter | InstrumentKind::CounterObserver - ) - } - - /// Whether this kind of instrument receives precomputed sums. - pub fn precomputed_sum(&self) -> bool { - self.adding() && self.asynchronous() - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -//! SDK API - -// mod async_instrument; -mod descriptor; -mod instrument_kind; -mod number; -mod wrap; -// mod sync_instrument; - -use std::any::Any; -use std::sync::Arc; - -pub use descriptor::*; -pub use instrument_kind::*; -pub use number::*; -use opentelemetry_api::{metrics::Result, Context, KeyValue}; -pub use wrap::wrap_meter_core; - -/// The interface an SDK must implement to supply a Meter implementation. -pub trait MeterCore { - /// Create a new synchronous instrument implementation. - fn new_sync_instrument( - &self, - descriptor: Descriptor, - ) -> Result>; - - /// Create a new asynchronous instrument implementation. - /// - /// Runner is `None` if used in batch as the batch runner is registered separately. - fn new_async_instrument( - &self, - descriptor: Descriptor, - ) -> Result>; - - /// Register a batch observer - fn register_callback(&self, f: Box) -> Result<()>; -} - -/// A utility extension to allow upcasting. -/// -/// Can be removed once [trait_upcasting] is stablized. -/// -/// [trait_upcasting]: https://doc.rust-lang.org/unstable-book/language-features/trait-upcasting.html -pub trait AsDynInstrumentCore { - /// Create an `Arc` from an impl of `InstrumentCore`. - fn as_dyn_core<'a>(self: Arc) -> Arc - where - Self: 'a; -} - -impl AsDynInstrumentCore for T { - fn as_dyn_core<'a>(self: Arc) -> Arc - where - Self: 'a, - { - self - } -} - -/// A common interface for synchronous and asynchronous instruments. -pub trait InstrumentCore: AsDynInstrumentCore { - /// Description of the instrument's descriptor - fn descriptor(&self) -> &Descriptor; - - /// Returns self as any - fn as_any(&self) -> &dyn Any; -} - -/// The implementation-level interface to a generic synchronous instrument -/// (e.g., Histogram and Counter instruments). -pub trait SyncInstrumentCore: InstrumentCore { - /// Capture a single synchronous metric event. - fn record_one(&self, cx: &Context, number: Number, attributes: &'_ [KeyValue]); -} - -/// An implementation-level interface to an asynchronous instrument (e.g., -/// Observable instruments). -pub trait AsyncInstrumentCore: InstrumentCore { - /// Captures a single asynchronous metric event. - fn observe_one(&self, cx: &Context, number: Number, attributes: &'_ [KeyValue]); -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/number.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/number.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/number.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/number.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,251 +0,0 @@ -use std::cmp; -use std::fmt; -use std::sync::atomic::{AtomicU64, Ordering}; - -/// Number represents either an integral or a floating point value. It -/// needs to be accompanied with a source of NumberKind that describes -/// the actual type of the value stored within Number. -#[derive(Clone, Debug, Default)] -pub struct Number(u64); - -impl Number { - /// Create an atomic version of the current number - pub fn to_atomic(&self) -> AtomicNumber { - AtomicNumber(AtomicU64::new(self.0)) - } - - /// Compares this number to the given other number. Both should be of the same kind. - pub fn partial_cmp(&self, number_kind: &NumberKind, other: &Number) -> Option { - match number_kind { - NumberKind::I64 => (self.0 as i64).partial_cmp(&(other.0 as i64)), - NumberKind::F64 => { - let current = u64_to_f64(self.0); - let other = u64_to_f64(other.0); - current.partial_cmp(&other) - } - NumberKind::U64 => self.0.partial_cmp(&other.0), - } - } - - /// Casts the number to `i64`. May result in data/precision loss. - pub fn to_i64(&self, number_kind: &NumberKind) -> i64 { - match number_kind { - NumberKind::F64 => u64_to_f64(self.0) as i64, - NumberKind::U64 | NumberKind::I64 => self.0 as i64, - } - } - - /// Casts the number to `f64`. May result in data/precision loss. - pub fn to_f64(&self, number_kind: &NumberKind) -> f64 { - match number_kind { - NumberKind::I64 => (self.0 as i64) as f64, - NumberKind::F64 => u64_to_f64(self.0), - NumberKind::U64 => self.0 as f64, - } - } - - /// Casts the number to `u64`. May result in data/precision loss. - pub fn to_u64(&self, number_kind: &NumberKind) -> u64 { - match number_kind { - NumberKind::F64 => u64_to_f64(self.0) as u64, - NumberKind::U64 | NumberKind::I64 => self.0, - } - } - - /// Checks if this value ia an f64 nan value. Do not use on non-f64 values. - pub fn is_nan(&self) -> bool { - u64_to_f64(self.0).is_nan() - } - - /// `true` if the actual value is less than zero. - pub fn is_negative(&self, number_kind: &NumberKind) -> bool { - match number_kind { - NumberKind::I64 => (self.0 as i64).is_negative(), - NumberKind::F64 => u64_to_f64(self.0).is_sign_negative(), - NumberKind::U64 => false, - } - } - - /// Return loaded data for debugging purposes - pub fn to_debug(&self, kind: &NumberKind) -> Box { - match kind { - NumberKind::I64 => Box::new(self.0 as i64), - NumberKind::F64 => Box::new(u64_to_f64(self.0)), - NumberKind::U64 => Box::new(self.0), - } - } -} - -/// An atomic version of `Number` -#[derive(Debug, Default)] -pub struct AtomicNumber(AtomicU64); - -impl AtomicNumber { - /// Stores a `Number` into the atomic number. - pub fn store(&self, val: &Number) { - self.0.store(val.0, Ordering::Relaxed) - } - - /// Adds to the current number. Both numbers must be of the same kind. - /// - /// This operation wraps around on overflow for `u64` and `i64` types and is - /// `inf` for `f64`. - pub fn fetch_add(&self, number_kind: &NumberKind, val: &Number) { - match number_kind { - NumberKind::I64 => { - let mut old = self.0.load(Ordering::Acquire); - loop { - let new = (old as i64).wrapping_add(val.0 as i64) as u64; - match self.0.compare_exchange_weak( - old, - new, - Ordering::AcqRel, - Ordering::Acquire, - ) { - Ok(_) => break, - Err(x) => old = x, - }; - } - } - NumberKind::F64 => { - let mut old = self.0.load(Ordering::Acquire); - loop { - let new = u64_to_f64(old) + u64_to_f64(val.0); - match self.0.compare_exchange_weak( - old, - f64_to_u64(new), - Ordering::AcqRel, - Ordering::Acquire, - ) { - Ok(_) => break, - Err(x) => old = x, - }; - } - } - NumberKind::U64 => { - self.0.fetch_add(val.0, Ordering::AcqRel); - } - } - } - - /// Subtracts from the current number. Both numbers must be of the same kind. - /// - /// This operation wraps around on overflow for `u64` and `i64` types and is - /// `-inf` for `f64`. - pub fn fetch_sub(&self, number_kind: &NumberKind, val: &Number) { - match number_kind { - NumberKind::I64 => { - let mut old = self.0.load(Ordering::Acquire); - loop { - let new = (old as i64).wrapping_sub(val.0 as i64) as u64; - match self.0.compare_exchange_weak( - old, - new, - Ordering::AcqRel, - Ordering::Relaxed, - ) { - Ok(_) => break, - Err(x) => old = x, - }; - } - } - NumberKind::F64 => { - let mut old = self.0.load(Ordering::Acquire); - loop { - let new = u64_to_f64(old) - u64_to_f64(val.0); - match self.0.compare_exchange_weak( - old, - f64_to_u64(new), - Ordering::AcqRel, - Ordering::Acquire, - ) { - Ok(_) => break, - Err(x) => old = x, - }; - } - } - NumberKind::U64 => { - self.0.fetch_sub(val.0, Ordering::AcqRel); - } - } - } - - /// Loads the current `Number`. - pub fn load(&self) -> Number { - Number(self.0.load(Ordering::Relaxed)) - } -} - -impl Clone for AtomicNumber { - fn clone(&self) -> Self { - AtomicNumber(AtomicU64::new(self.0.load(Ordering::Relaxed))) - } -} - -impl From for Number { - fn from(f: f64) -> Self { - Number(f64_to_u64(f)) - } -} - -impl From for Number { - fn from(i: i64) -> Self { - Number(i as u64) - } -} - -impl From for Number { - fn from(u: u64) -> Self { - Number(u) - } -} - -/// A descriptor for the encoded data type of a `Number` -#[derive(Clone, Debug, PartialEq, Eq, Hash)] -pub enum NumberKind { - /// A Number that stores `i64` values. - I64, - /// A Number that stores `f64` values. - F64, - /// A Number that stores `u64` values. - U64, -} - -impl NumberKind { - /// Returns the zero value for each kind - pub fn zero(&self) -> Number { - match self { - NumberKind::I64 => 0i64.into(), - NumberKind::F64 => 0f64.into(), - NumberKind::U64 => 0u64.into(), - } - } - - /// Returns the max value for each kind - pub fn max(&self) -> Number { - match self { - NumberKind::I64 => std::i64::MAX.into(), - NumberKind::F64 => std::f64::MAX.into(), - NumberKind::U64 => std::u64::MAX.into(), - } - } - - /// Returns the min value for each kind - pub fn min(&self) -> Number { - match self { - NumberKind::I64 => std::i64::MIN.into(), - NumberKind::F64 => std::f64::MIN.into(), - NumberKind::U64 => std::u64::MIN.into(), - } - } -} - -#[inline] -fn u64_to_f64(val: u64) -> f64 { - f64::from_bits(val) -} - -#[inline] -fn f64_to_u64(val: f64) -> u64 { - f64::to_bits(val) -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/sync_instrument.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/sync_instrument.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/sync_instrument.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/sync_instrument.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,87 +0,0 @@ -use crate::{ - metrics::{sdk_api, Number}, - KeyValue, -}; -use std::marker; -use std::sync::Arc; - -/// Measurement is used for reporting a synchronous batch of metric values. -/// Instances of this type should be created by synchronous instruments (e.g., -/// `Counter::measurement`). -#[derive(Debug)] -pub struct Measurement { - number: Number, - instrument: Arc, -} - -impl Measurement { - /// Create a new measurement for an instrument - pub(crate) fn new(number: Number, instrument: Arc) -> Self { - Measurement { number, instrument } - } - - /// The number recorded by this measurement - pub fn number(&self) -> &Number { - &self.number - } - - /// Convert this measurement into the underlying number - pub fn into_number(self) -> Number { - self.number - } - - /// The instrument that recorded this measurement - pub fn instrument(&self) -> &Arc { - &self.instrument - } -} - -/// Wrapper around a sdk-implemented sync instrument for a given type -#[derive(Clone, Debug)] -pub(crate) struct SyncInstrument { - instrument: Arc, - _marker: marker::PhantomData, -} - -impl SyncInstrument { - /// Create a new sync instrument from an sdk-implemented sync instrument - pub(crate) fn new(instrument: Arc) -> Self { - SyncInstrument { - instrument, - _marker: marker::PhantomData, - } - } - - /// Create a new bound sync instrument - pub(crate) fn bind(&self, attributes: &[KeyValue]) -> SyncBoundInstrument { - let bound_instrument = self.instrument.bind(attributes); - SyncBoundInstrument { - bound_instrument, - _marker: marker::PhantomData, - } - } - - /// Record a value directly to the underlying instrument - pub(crate) fn direct_record(&self, number: Number, attributes: &[KeyValue]) { - self.instrument.record_one(number, attributes) - } - - /// Reference to the underlying sdk-implemented instrument - pub(crate) fn instrument(&self) -> &Arc { - &self.instrument - } -} - -/// Wrapper around a sdk-implemented sync bound instrument -#[derive(Clone, Debug)] -pub(crate) struct SyncBoundInstrument { - bound_instrument: Arc, - _marker: marker::PhantomData, -} - -impl SyncBoundInstrument { - /// Record a value directly to the underlying instrument - pub(crate) fn direct_record(&self, number: Number) { - self.bound_instrument.record_one(number) - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/wrap.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/wrap.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/wrap.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/sdk_api/wrap.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,319 +0,0 @@ -use crate::metrics::sdk_api::MeterCore; -use crate::metrics::sdk_api::{ - AsyncInstrumentCore, Descriptor, InstrumentKind, Number, NumberKind, SyncInstrumentCore, -}; -use opentelemetry_api::metrics::{ - AsyncCounter, AsyncUpDownCounter, ObservableUpDownCounter, SyncCounter, SyncHistogram, - SyncUpDownCounter, UpDownCounter, -}; -use opentelemetry_api::KeyValue; -use opentelemetry_api::{ - metrics::{ - AsyncGauge, Counter, Histogram, InstrumentProvider, Meter, ObservableCounter, - ObservableGauge, Result, Unit, - }, - Context, InstrumentationLibrary, -}; -use std::sync::Arc; - -/// wraps impl to be a full implementation of a Meter. -pub fn wrap_meter_core( - core: Arc, - library: InstrumentationLibrary, -) -> Meter { - Meter::new(library, Arc::new(MeterImpl(core))) -} - -struct MeterImpl(Arc); - -struct SyncInstrument(Arc); - -impl> SyncCounter for SyncInstrument { - fn add(&self, cx: &Context, value: T, attributes: &[KeyValue]) { - self.0.record_one(cx, value.into(), attributes) - } -} - -impl> SyncUpDownCounter for SyncInstrument { - fn add(&self, cx: &Context, value: T, attributes: &[KeyValue]) { - self.0.record_one(cx, value.into(), attributes) - } -} - -impl> SyncHistogram for SyncInstrument { - fn record(&self, cx: &Context, value: T, attributes: &[KeyValue]) { - self.0.record_one(cx, value.into(), attributes) - } -} - -struct AsyncInstrument(Arc); - -impl> AsyncCounter for AsyncInstrument { - fn observe(&self, cx: &Context, value: T, attributes: &[KeyValue]) { - self.0.observe_one(cx, value.into(), attributes) - } -} - -impl> AsyncUpDownCounter for AsyncInstrument { - fn observe(&self, cx: &Context, value: T, attributes: &[KeyValue]) { - self.0.observe_one(cx, value.into(), attributes) - } -} - -impl> AsyncGauge for AsyncInstrument { - fn observe(&self, cx: &Context, value: T, attributes: &[KeyValue]) { - self.0.observe_one(cx, value.into(), attributes) - } -} - -impl InstrumentProvider for MeterImpl { - fn u64_counter( - &self, - name: String, - description: Option, - unit: Option, - ) -> Result> { - let instrument = self.0.new_sync_instrument(Descriptor::new( - name, - InstrumentKind::Counter, - NumberKind::U64, - description, - unit, - ))?; - - Ok(Counter::new(Arc::new(SyncInstrument(instrument)))) - } - - fn f64_counter( - &self, - name: String, - description: Option, - unit: Option, - ) -> Result> { - let instrument = self.0.new_sync_instrument(Descriptor::new( - name, - InstrumentKind::Counter, - NumberKind::F64, - description, - unit, - ))?; - - Ok(Counter::new(Arc::new(SyncInstrument(instrument)))) - } - - fn u64_observable_counter( - &self, - name: String, - description: Option, - unit: Option, - ) -> Result> { - let instrument = self.0.new_async_instrument(Descriptor::new( - name, - InstrumentKind::Counter, - NumberKind::U64, - description, - unit, - ))?; - - Ok(ObservableCounter::new(Arc::new(AsyncInstrument( - instrument, - )))) - } - - fn f64_observable_counter( - &self, - name: String, - description: Option, - unit: Option, - ) -> Result> { - let instrument = self.0.new_async_instrument(Descriptor::new( - name, - InstrumentKind::Counter, - NumberKind::F64, - description, - unit, - ))?; - - Ok(ObservableCounter::new(Arc::new(AsyncInstrument( - instrument, - )))) - } - - fn i64_up_down_counter( - &self, - name: String, - description: Option, - unit: Option, - ) -> Result> { - let instrument = self.0.new_sync_instrument(Descriptor::new( - name, - InstrumentKind::UpDownCounter, - NumberKind::I64, - description, - unit, - ))?; - - Ok(UpDownCounter::new(Arc::new(SyncInstrument(instrument)))) - } - - fn f64_up_down_counter( - &self, - name: String, - description: Option, - unit: Option, - ) -> Result> { - let instrument = self.0.new_sync_instrument(Descriptor::new( - name, - InstrumentKind::UpDownCounter, - NumberKind::F64, - description, - unit, - ))?; - - Ok(UpDownCounter::new(Arc::new(SyncInstrument(instrument)))) - } - - fn i64_observable_up_down_counter( - &self, - name: String, - description: Option, - unit: Option, - ) -> Result> { - let instrument = self.0.new_async_instrument(Descriptor::new( - name, - InstrumentKind::UpDownCounterObserver, - NumberKind::I64, - description, - unit, - ))?; - - Ok(ObservableUpDownCounter::new(Arc::new(AsyncInstrument( - instrument, - )))) - } - - fn f64_observable_up_down_counter( - &self, - name: String, - description: Option, - unit: Option, - ) -> Result> { - let instrument = self.0.new_async_instrument(Descriptor::new( - name, - InstrumentKind::UpDownCounterObserver, - NumberKind::F64, - description, - unit, - ))?; - - Ok(ObservableUpDownCounter::new(Arc::new(AsyncInstrument( - instrument, - )))) - } - - fn u64_observable_gauge( - &self, - name: String, - description: Option, - unit: Option, - ) -> Result> { - let instrument = self.0.new_async_instrument(Descriptor::new( - name, - InstrumentKind::GaugeObserver, - NumberKind::U64, - description, - unit, - ))?; - - Ok(ObservableGauge::new(Arc::new(AsyncInstrument(instrument)))) - } - - fn i64_observable_gauge( - &self, - name: String, - description: Option, - unit: Option, - ) -> Result> { - let instrument = self.0.new_async_instrument(Descriptor::new( - name, - InstrumentKind::GaugeObserver, - NumberKind::I64, - description, - unit, - ))?; - - Ok(ObservableGauge::new(Arc::new(AsyncInstrument(instrument)))) - } - - fn f64_observable_gauge( - &self, - name: String, - description: Option, - unit: Option, - ) -> Result> { - let instrument = self.0.new_async_instrument(Descriptor::new( - name, - InstrumentKind::GaugeObserver, - NumberKind::F64, - description, - unit, - ))?; - - Ok(ObservableGauge::new(Arc::new(AsyncInstrument(instrument)))) - } - - fn f64_histogram( - &self, - name: String, - description: Option, - unit: Option, - ) -> Result> { - let instrument = self.0.new_sync_instrument(Descriptor::new( - name, - InstrumentKind::Histogram, - NumberKind::F64, - description, - unit, - ))?; - - Ok(Histogram::new(Arc::new(SyncInstrument(instrument)))) - } - - fn u64_histogram( - &self, - name: String, - description: Option, - unit: Option, - ) -> Result> { - let instrument = self.0.new_sync_instrument(Descriptor::new( - name, - InstrumentKind::Histogram, - NumberKind::U64, - description, - unit, - ))?; - - Ok(Histogram::new(Arc::new(SyncInstrument(instrument)))) - } - - fn i64_histogram( - &self, - name: String, - description: Option, - unit: Option, - ) -> Result> { - let instrument = self.0.new_sync_instrument(Descriptor::new( - name, - InstrumentKind::Histogram, - NumberKind::I64, - description, - unit, - ))?; - - Ok(Histogram::new(Arc::new(SyncInstrument(instrument)))) - } - - fn register_callback(&self, callback: Box) -> Result<()> { - self.0.register_callback(callback) - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/selectors/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/selectors/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/selectors/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/selectors/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -//! Aggregator Selectors -pub mod simple; diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/selectors/simple.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/selectors/simple.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/selectors/simple.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/selectors/simple.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -//! Simple Metric Selectors -use crate::export::metrics::AggregatorSelector; -use crate::metrics::aggregators::{self, Aggregator}; -use crate::metrics::sdk_api::{Descriptor, InstrumentKind}; -use std::sync::Arc; - -/// This selector is faster and uses less memory than the others in this package. -pub fn inexpensive() -> impl AggregatorSelector { - InexpensiveSelector -} - -#[derive(Debug, Clone)] -struct InexpensiveSelector; - -impl AggregatorSelector for InexpensiveSelector { - fn aggregator_for(&self, descriptor: &Descriptor) -> Option> { - match descriptor.instrument_kind() { - InstrumentKind::GaugeObserver => Some(Arc::new(aggregators::last_value())), - _ => Some(Arc::new(aggregators::sum())), - } - } -} - -/// A simple aggregator selector that uses histogram aggregators for `Histogram` -/// instruments. -/// -/// This selector is a good default choice for most metric exporters. -pub fn histogram(boundaries: impl Into>) -> impl AggregatorSelector { - HistogramSelector(boundaries.into()) -} - -#[derive(Debug, Clone)] -struct HistogramSelector(Vec); - -impl AggregatorSelector for HistogramSelector { - fn aggregator_for(&self, descriptor: &Descriptor) -> Option> { - match descriptor.instrument_kind() { - InstrumentKind::GaugeObserver => Some(Arc::new(aggregators::last_value())), - InstrumentKind::Histogram => Some(Arc::new(aggregators::histogram(&self.0))), - _ => Some(Arc::new(aggregators::sum())), - } - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/view.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/view.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/view.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/metrics/view.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,176 @@ +use opentelemetry_api::{ + global, + metrics::{MetricsError, Result}, +}; +use regex::Regex; + +use super::instrument::{Instrument, Stream}; + +fn empty_view(_inst: &Instrument) -> Option { + None +} + +/// Used to customize the metrics that are output by the SDK. +/// +/// Here are some examples when a [View] might be needed: +/// +/// * Customize which Instruments are to be processed/ignored. For example, an +/// instrumented library can provide both temperature and humidity, but the +/// application developer might only want temperature. +/// * Customize the aggregation - if the default aggregation associated with the +/// [Instrument] does not meet the needs of the user. For example, an HTTP client +/// library might expose HTTP client request duration as Histogram by default, +/// but the application developer might only want the total count of outgoing +/// requests. +/// * Customize which attribute(s) are to be reported on metrics. For example, +/// an HTTP server library might expose HTTP verb (e.g. GET, POST) and HTTP +/// status code (e.g. 200, 301, 404). The application developer might only care +/// about HTTP status code (e.g. reporting the total count of HTTP requests for +/// each HTTP status code). There could also be extreme scenarios in which the +/// application developer does not need any attributes (e.g. just get the total +/// count of all incoming requests). +/// +/// # Example Custom View +/// +/// View is implemented for all `Fn(&Instrument) -> Option`. +/// +/// ``` +/// use opentelemetry_sdk::metrics::{Instrument, MeterProvider, Stream}; +/// +/// // return streams for the given instrument +/// let my_view = |i: &Instrument| { +/// // return Some(Stream) or +/// None +/// }; +/// +/// let provider = MeterProvider::builder().with_view(my_view).build(); +/// # drop(provider) +/// ``` +pub trait View: Send + Sync + 'static { + /// Defines how data should be collected for certain instruments. + /// + /// Return [Stream] to use for matching [Instrument]s, + /// otherwise if there is no match, return `None`. + fn match_inst(&self, inst: &Instrument) -> Option; +} + +impl View for T +where + T: Fn(&Instrument) -> Option + Send + Sync + 'static, +{ + fn match_inst(&self, inst: &Instrument) -> Option { + self(inst) + } +} + +impl View for Box { + fn match_inst(&self, inst: &Instrument) -> Option { + (**self).match_inst(inst) + } +} + +/// Creates a [View] that applies the [Stream] mask for all instruments that +/// match criteria. +/// +/// The returned [View] will only apply the mask if all non-empty fields of +/// criteria match the corresponding [Instrument] passed to the view. If all +/// fields of the criteria are their default values, a view that matches no +/// instruments is returned. If you need to match an empty-value field, create a +/// [View] directly. +/// +/// The [Instrument::name] field of criteria supports wildcard pattern matching. +/// The wildcard `*` is recognized as matching zero or more characters, and `?` +/// is recognized as matching exactly one character. For example, a pattern of +/// `*` will match all instrument names. +/// +/// The [Stream] mask only applies updates for non-empty fields. By default, the +/// [Instrument] the [View] matches against will be use for the name, +/// description, and unit of the returned [Stream] and no `aggregation` or +/// `allowed_attribute_keys` are set. All non-empty fields of mask are used +/// instead of the default. If you need to set a an empty value in the returned +/// stream, create a custom [View] directly. +/// +/// # Example +/// +/// ``` +/// use opentelemetry_sdk::metrics::{new_view, Aggregation, Instrument, Stream}; +/// +/// let criteria = Instrument::new().name("counter_*"); +/// let mask = Stream::new().aggregation(Aggregation::Sum); +/// +/// let view = new_view(criteria, mask); +/// # drop(view); +/// ``` +pub fn new_view(criteria: Instrument, mask: Stream) -> Result> { + if criteria.is_empty() { + return Ok(Box::new(empty_view)); + } + let contains_wildcard = criteria.name.contains(|c| c == '*' || c == '?'); + let err_msg_criteria = criteria.clone(); + + let match_fn: Box bool + Send + Sync> = if contains_wildcard { + if mask.name != "" { + global::handle_error(MetricsError::Config(format!( + "name replacement for multiple instruments, dropping view, criteria: {criteria:?}, mask: {mask:?}" + ))); + return Ok(Box::new(empty_view)); + } + + let pattern = criteria + .name + .trim_start_matches('^') + .trim_end_matches('$') + .replace('?', ".") + .replace('*', ".*"); + let re = + Regex::new(&format!("^{pattern}$")).map_err(|e| MetricsError::Config(e.to_string()))?; + Box::new(move |i| { + re.is_match(&i.name) + && criteria.matches_description(i) + && criteria.matches_kind(i) + && criteria.matches_unit(i) + && criteria.matches_scope(i) + }) + } else { + Box::new(move |i| criteria.matches(i)) + }; + + let mut agg = None; + if let Some(ma) = &mask.aggregation { + match ma.validate() { + Ok(_) => agg = Some(ma.clone()), + Err(err) => { + global::handle_error(MetricsError::Other(format!( + "{}, not using aggregation with view. criteria: {:?}, mask: {:?}", + err, err_msg_criteria, mask + ))); + } + } + } + + Ok(Box::new(move |i: &Instrument| -> Option { + if match_fn(i) { + Some(Stream { + name: if !mask.name.is_empty() { + mask.name.clone() + } else { + i.name.clone() + }, + description: if !mask.description.is_empty() { + mask.description.clone() + } else { + i.description.clone() + }, + unit: if !mask.unit.as_str().is_empty() { + mask.unit.clone() + } else { + i.unit.clone() + }, + aggregation: agg.clone(), + allowed_attribute_keys: mask.allowed_attribute_keys.clone(), + }) + } else { + None + } + })) +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/propagation/trace_context.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/propagation/trace_context.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/propagation/trace_context.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/propagation/trace_context.rs 2023-10-30 19:40:00.000000000 +0000 @@ -282,7 +282,7 @@ let mut injector: HashMap = HashMap::new(); injector.set(TRACESTATE_HEADER, state.to_string()); - propagator.inject_context(&Context::current(), &mut injector); + Context::map_current(|cx| propagator.inject_context(cx, &mut injector)); assert_eq!(Extractor::get(&injector, TRACESTATE_HEADER), Some(state)) } diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/resource/env.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/resource/env.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/resource/env.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/resource/env.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,7 +3,7 @@ //! Implementation of `ResourceDetector` to extract a `Resource` from environment //! variables. use crate::resource::{Resource, ResourceDetector}; -use opentelemetry_api::{Key, KeyValue}; +use opentelemetry_api::{Key, KeyValue, Value}; use std::env; use std::time::Duration; @@ -58,17 +58,15 @@ })) } -/// There are the attributes which MUST be provided by the SDK as specified in -/// [the Resource SDK specification]. This detector detect those attributes and -/// if the attribute cannot be detected, use the default value. +/// There are attributes which MUST be provided by the SDK as specified in +/// [the Resource SDK specification]. This detector detects those attributes and +/// if the attribute cannot be detected, it uses the default value. /// -/// This detector will first try `OTEL_SERVICE_NAME` env. If it's not available. -/// Then it will check the `OTEL_RESOURCE_ATTRIBUTES` env and see if it contains -/// `service.name` resource. If it's also not available. Then it will use -/// `unknown_service`. +/// This detector will first try `OTEL_SERVICE_NAME` env. If it's not available, +/// then it will check the `OTEL_RESOURCE_ATTRIBUTES` env and see if it contains +/// `service.name` resource. If it's also not available, it will use `unknown_service`. /// -/// Note that if `service.name` is empty. It will be ignore and the service name will -/// be `unknown_service`. If users want to set an empty service name. They can provide +/// If users want to set an empty service name, they can provide /// a resource with empty value and `service.name` key. /// /// [the Resource SDK specification]:https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/sdk.md#sdk-provided-resource-attributes @@ -82,14 +80,13 @@ env::var(OTEL_SERVICE_NAME) .ok() .filter(|s| !s.is_empty()) - .unwrap_or_else(|| { + .map(Value::from) + .or_else(|| { EnvResourceDetector::new() .detect(Duration::from_secs(0)) .get(Key::new("service.name")) - .map(|v| v.to_string()) - .filter(|s| !s.is_empty()) - .unwrap_or_else(|| "unknown_service".to_string()) - }), + }) + .unwrap_or_else(|| "unknown_service".into()), )]) } } diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/resource/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/resource/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/resource/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/resource/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -18,17 +18,18 @@ //! - [`EnvResourceDetector`] - detect resource from environmental variables. //! - [`OsResourceDetector`] - detect OS from runtime. //! - [`ProcessResourceDetector`] - detect process information. +//! - [`TelemetryResourceDetector`] - detect telemetry SDK's information. mod env; mod os; mod process; +mod telemetry; pub use env::EnvResourceDetector; pub use env::SdkProvidedResourceDetector; pub use os::OsResourceDetector; pub use process::ProcessResourceDetector; +pub use telemetry::TelemetryResourceDetector; -#[cfg(feature = "metrics")] -use opentelemetry_api::attributes; use opentelemetry_api::{Key, KeyValue, Value}; use std::borrow::Cow; use std::collections::{hash_map, HashMap}; @@ -188,13 +189,6 @@ pub fn get(&self, key: Key) -> Option { self.attrs.get(&key).cloned() } - - /// Encoded attributes - #[cfg(feature = "metrics")] - #[cfg_attr(docsrs, doc(cfg(feature = "metrics")))] - pub fn encoded(&self, encoder: &dyn attributes::Encoder) -> String { - encoder.encode(&mut self.into_iter()) - } } /// An owned iterator over the entries of a `Resource`. @@ -242,7 +236,7 @@ /// ResourceDetector detects OpenTelemetry resource information /// /// Implementations of this trait can be passed to -/// the `Resource::from_detectors` function to generate a Resource from the merged information. +/// the [`Resource::from_detectors`] function to generate a Resource from the merged information. pub trait ResourceDetector { /// detect returns an initialized Resource based on gathered information. /// diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/resource/telemetry.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/resource/telemetry.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/resource/telemetry.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/resource/telemetry.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,27 @@ +use crate::resource::ResourceDetector; +use crate::Resource; +use opentelemetry_api::KeyValue; +use std::time::Duration; + +/// Detect the telemetry SDK information used to capture data recorded by the instrumentation libraries. +/// +/// It provides: +/// - The name of the telemetry SDK(`telemetry.sdk.name`). It will be `opentelemetry` for SDK provided by opentelemetry project. +/// - The language of the telemetry SDK(`telemetry.sdk.language`). It will be `rust` for this SDK. +/// - The version of the telemetry SDK(`telemetry.sdk.version`). It will be current `opentelemetry_sdk` crate version. +/// +/// Note that the `telemetry.auto.version` is not provided as of now. +/// +/// See [semantic conventions](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#telemetry-sdk) for details. +#[derive(Debug)] +pub struct TelemetryResourceDetector; + +impl ResourceDetector for TelemetryResourceDetector { + fn detect(&self, _timeout: Duration) -> Resource { + Resource::new(vec![ + KeyValue::new("telemetry.sdk.name", "opentelemetry"), + KeyValue::new("telemetry.sdk.language", "rust"), + KeyValue::new("telemetry.sdk.version", env!("CARGO_PKG_VERSION")), + ]) + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/runtime.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/runtime.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/runtime.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/runtime.rs 2023-10-30 19:40:00.000000000 +0000 @@ -7,7 +7,8 @@ //! [async-std]: https://crates.io/crates/async-std use futures_util::{future::BoxFuture, stream::Stream}; -use std::{future::Future, time::Duration}; +use std::{fmt::Debug, future::Future, time::Duration}; +use thiserror::Error; /// A runtime is an abstraction of an async runtime like [Tokio] or [async-std]. It allows /// OpenTelemetry to work with any current and hopefully future runtime implementation. @@ -59,6 +60,8 @@ } fn spawn(&self, future: BoxFuture<'static, ()>) { + #[allow(clippy::let_underscore_future)] + // we don't have to await on the returned future to execute let _ = tokio::spawn(future); } @@ -121,6 +124,7 @@ } fn spawn(&self, future: BoxFuture<'static, ()>) { + #[allow(clippy::let_underscore_future)] let _ = async_std::task::spawn(future); } @@ -128,3 +132,108 @@ Box::pin(async_std::task::sleep(duration)) } } + +/// `MessageRuntime` is an extension to [`Runtime`]. Currently, it provides a +/// channel that is used by the [log] and [span] batch processors. +/// +/// [log]: crate::logs::BatchLogProcessor +/// [span]: crate::trace::BatchSpanProcessor +pub trait RuntimeChannel: Runtime { + /// A future stream to receive batch messages from channels. + type Receiver: Stream + Send; + /// A batch messages sender that can be sent across threads safely. + type Sender: TrySend + Debug; + + /// Return the sender and receiver used to send batch messages. + fn batch_message_channel(&self, capacity: usize) -> (Self::Sender, Self::Receiver); +} + +/// Error returned by a [`TrySend`] implementation. +#[derive(Debug, Error)] +pub enum TrySendError { + /// Send failed due to the channel being full. + #[error("cannot send message to batch processor as the channel is full")] + ChannelFull, + /// Send failed due to the channel being closed. + #[error("cannot send message to batch processor as the channel is closed")] + ChannelClosed, + /// Any other send error that isnt covered above. + #[error(transparent)] + Other(#[from] Box), +} + +/// TrySend is an abstraction of `Sender` that is capable of sending messages through a reference. +pub trait TrySend: Sync + Send { + /// The message that will be sent. + type Message; + + /// Try to send a message batch to a worker thread. + /// + /// A failure can be due to either a closed receiver, or a depleted buffer. + fn try_send(&self, item: Self::Message) -> Result<(), TrySendError>; +} + +#[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] +impl TrySend for tokio::sync::mpsc::Sender { + type Message = T; + + fn try_send(&self, item: Self::Message) -> Result<(), TrySendError> { + self.try_send(item).map_err(|err| match err { + tokio::sync::mpsc::error::TrySendError::Full(_) => TrySendError::ChannelFull, + tokio::sync::mpsc::error::TrySendError::Closed(_) => TrySendError::ChannelClosed, + }) + } +} + +#[cfg(feature = "rt-tokio")] +#[cfg_attr(docsrs, doc(cfg(feature = "rt-tokio")))] +impl RuntimeChannel for Tokio { + type Receiver = tokio_stream::wrappers::ReceiverStream; + type Sender = tokio::sync::mpsc::Sender; + + fn batch_message_channel(&self, capacity: usize) -> (Self::Sender, Self::Receiver) { + let (sender, receiver) = tokio::sync::mpsc::channel(capacity); + ( + sender, + tokio_stream::wrappers::ReceiverStream::new(receiver), + ) + } +} + +#[cfg(feature = "rt-tokio-current-thread")] +#[cfg_attr(docsrs, doc(cfg(feature = "rt-tokio-current-thread")))] +impl RuntimeChannel for TokioCurrentThread { + type Receiver = tokio_stream::wrappers::ReceiverStream; + type Sender = tokio::sync::mpsc::Sender; + + fn batch_message_channel(&self, capacity: usize) -> (Self::Sender, Self::Receiver) { + let (sender, receiver) = tokio::sync::mpsc::channel(capacity); + ( + sender, + tokio_stream::wrappers::ReceiverStream::new(receiver), + ) + } +} + +#[cfg(feature = "rt-async-std")] +impl TrySend for async_std::channel::Sender { + type Message = T; + + fn try_send(&self, item: Self::Message) -> Result<(), TrySendError> { + self.try_send(item).map_err(|err| match err { + async_std::channel::TrySendError::Full(_) => TrySendError::ChannelFull, + async_std::channel::TrySendError::Closed(_) => TrySendError::ChannelClosed, + }) + } +} + +#[cfg(feature = "rt-async-std")] +#[cfg_attr(docsrs, doc(cfg(feature = "rt-async-std")))] +impl RuntimeChannel for AsyncStd { + type Receiver = async_std::channel::Receiver; + type Sender = async_std::channel::Sender; + + fn batch_message_channel(&self, capacity: usize) -> (Self::Sender, Self::Receiver) { + async_std::channel::bounded(capacity) + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/metric.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/metric.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/metric.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/metric.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,38 +0,0 @@ -use std::sync::Arc; - -use opentelemetry_api::metrics::Result; - -use crate::{ - export::metrics::{AggregatorSelector, Checkpointer, LockedCheckpointer, Processor}, - metrics::{aggregators::Aggregator, sdk_api::Descriptor}, -}; - -#[derive(Debug)] -struct NoopAggregatorSelector; - -impl AggregatorSelector for NoopAggregatorSelector { - fn aggregator_for( - &self, - _descriptor: &Descriptor, - ) -> Option> { - None - } -} - -#[derive(Debug)] -pub struct NoopCheckpointer; - -impl Processor for NoopCheckpointer { - fn aggregator_selector(&self) -> &dyn AggregatorSelector { - &NoopAggregatorSelector - } -} - -impl Checkpointer for NoopCheckpointer { - fn checkpoint( - &self, - _f: &mut dyn FnMut(&mut dyn LockedCheckpointer) -> Result<()>, - ) -> Result<()> { - Ok(()) - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/metrics/in_memory_exporter.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/metrics/in_memory_exporter.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/metrics/in_memory_exporter.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/metrics/in_memory_exporter.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,309 @@ +use crate::metrics::data::{Histogram, Metric, ResourceMetrics, ScopeMetrics, Temporality}; +use crate::metrics::exporter::PushMetricsExporter; +use crate::metrics::reader::{ + AggregationSelector, DefaultAggregationSelector, DefaultTemporalitySelector, + TemporalitySelector, +}; +use crate::metrics::{data, Aggregation, InstrumentKind}; +use async_trait::async_trait; +use opentelemetry_api::metrics::MetricsError; +use opentelemetry_api::metrics::Result; +use std::collections::VecDeque; +use std::fmt; +use std::sync::{Arc, Mutex}; + +/// An in-memory metrics exporter that stores metrics data in memory. +/// +/// This exporter is useful for testing and debugging purposes. It stores +/// metric data in a `VecDeque`. Metrics can be retrieved +/// using the `get_finished_metrics` method. +/// +/// # Panics +/// +/// This exporter may panic +/// - if there's an issue with locking the `metrics` Mutex, such as if the Mutex is poisoned. +/// - the data point recorded is not one of [i64, u64, f64]. This shouldn't happen if used with OpenTelemetry API. +/// +/// # Example +/// +/// ``` +///# use opentelemetry_sdk::{metrics, runtime}; +///# use opentelemetry_api::{Context, KeyValue}; +///# use opentelemetry_api::metrics::MeterProvider; +///# use opentelemetry_sdk::testing::metrics::InMemoryMetricsExporter; +///# use opentelemetry_sdk::metrics::PeriodicReader; +/// +///# #[tokio::main] +///# async fn main() { +/// // Create an InMemoryMetricsExporter +/// let exporter = InMemoryMetricsExporter::default(); +/// +/// // Create a MeterProvider and register the exporter +/// let meter_provider = metrics::MeterProvider::builder() +/// .with_reader(PeriodicReader::builder(exporter.clone(), runtime::Tokio).build()) +/// .build(); +/// +/// // Create and record metrics using the MeterProvider +/// let meter = meter_provider.meter(std::borrow::Cow::Borrowed("example")); +/// let cx = Context::new(); +/// let counter = meter.u64_counter("my_counter").init(); +/// counter.add(1, &[KeyValue::new("key", "value")]); +/// +/// meter_provider.force_flush(&cx).unwrap(); +/// +/// // Retrieve the finished metrics from the exporter +/// let finished_metrics = exporter.get_finished_metrics().unwrap(); +/// +/// // Print the finished metrics +/// for resource_metrics in finished_metrics { +/// println!("{:?}", resource_metrics); +/// } +///# } +/// ``` +pub struct InMemoryMetricsExporter { + metrics: Arc>>, + aggregation_selector: Arc, + temporality_selector: Arc, +} + +impl Clone for InMemoryMetricsExporter { + fn clone(&self) -> Self { + InMemoryMetricsExporter { + metrics: self.metrics.clone(), + aggregation_selector: self.aggregation_selector.clone(), + temporality_selector: self.temporality_selector.clone(), + } + } +} + +impl fmt::Debug for InMemoryMetricsExporter { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("InMemoryMetricsExporter").finish() + } +} + +impl Default for InMemoryMetricsExporter { + fn default() -> Self { + InMemoryMetricsExporterBuilder::new().build() + } +} + +/// Builder for [`InMemoryMetricsExporter`]. +/// # Example +/// +/// ``` +/// # use opentelemetry_sdk::testing::metrics::{InMemoryMetricsExporter, InMemoryMetricsExporterBuilder}; +/// +/// let exporter = InMemoryMetricsExporterBuilder::new().build(); +/// ``` +pub struct InMemoryMetricsExporterBuilder { + aggregation_selector: Option>, + temporality_selector: Option>, +} + +impl fmt::Debug for InMemoryMetricsExporterBuilder { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("InMemoryMetricsExporterBuilder").finish() + } +} + +impl Default for InMemoryMetricsExporterBuilder { + fn default() -> Self { + Self::new() + } +} + +impl InMemoryMetricsExporterBuilder { + /// Creates a new instance of the `InMemoryMetricsExporterBuilder`. + pub fn new() -> Self { + Self { + aggregation_selector: None, + temporality_selector: None, + } + } + + /// Sets the aggregation selector for the exporter. + pub fn with_aggregation_selector(mut self, aggregation_selector: T) -> Self + where + T: AggregationSelector + Send + Sync + 'static, + { + self.aggregation_selector = Some(Arc::new(aggregation_selector)); + self + } + + /// Sets the temporality selector for the exporter. + pub fn with_temporality_selector(mut self, temporality_selector: T) -> Self + where + T: TemporalitySelector + Send + Sync + 'static, + { + self.temporality_selector = Some(Arc::new(temporality_selector)); + self + } + + /// Creates a new instance of the `InMemoryMetricsExporter`. + /// + pub fn build(self) -> InMemoryMetricsExporter { + InMemoryMetricsExporter { + metrics: Arc::new(Mutex::new(VecDeque::new())), + aggregation_selector: self + .aggregation_selector + .unwrap_or_else(|| Arc::new(DefaultAggregationSelector::default())), + temporality_selector: self + .temporality_selector + .unwrap_or_else(|| Arc::new(DefaultTemporalitySelector::default())), + } + } +} + +impl InMemoryMetricsExporter { + /// Returns the finished metrics as a vector of `ResourceMetrics`. + /// + /// # Errors + /// + /// Returns a `MetricsError` if the internal lock cannot be acquired. + /// + /// # Example + /// + /// ``` + /// # use opentelemetry_sdk::testing::metrics::InMemoryMetricsExporter; + /// + /// let exporter = InMemoryMetricsExporter::default(); + /// let finished_metrics = exporter.get_finished_metrics().unwrap(); + /// ``` + pub fn get_finished_metrics(&self) -> Result> { + self.metrics + .lock() + .map(|metrics_guard| metrics_guard.iter().map(Self::clone_metrics).collect()) + .map_err(MetricsError::from) + } + + /// Clears the internal storage of finished metrics. + /// + /// # Example + /// + /// ``` + /// # use opentelemetry_sdk::testing::metrics::InMemoryMetricsExporter; + /// + /// let exporter = InMemoryMetricsExporter::default(); + /// exporter.reset(); + /// ``` + pub fn reset(&self) { + let _ = self + .metrics + .lock() + .map(|mut metrics_guard| metrics_guard.clear()); + } + + fn clone_metrics(metric: &ResourceMetrics) -> ResourceMetrics { + ResourceMetrics { + resource: metric.resource.clone(), + scope_metrics: metric + .scope_metrics + .iter() + .map(|scope_metric| ScopeMetrics { + scope: scope_metric.scope.clone(), + metrics: scope_metric + .metrics + .iter() + .map(|metric| Metric { + name: metric.name.clone(), + description: metric.description.clone(), + unit: metric.unit.clone(), + // we don't expect any unknown data type here + data: Self::clone_data(metric.data.as_ref()).unwrap(), + }) + .collect(), + }) + .collect(), + } + } + + fn clone_data(data: &dyn data::Aggregation) -> Option> { + if let Some(hist) = data.as_any().downcast_ref::>() { + Some(Box::new(Histogram { + data_points: hist.data_points.clone(), + temporality: hist.temporality, + })) + } else if let Some(hist) = data.as_any().downcast_ref::>() { + Some(Box::new(Histogram { + data_points: hist.data_points.clone(), + temporality: hist.temporality, + })) + } else if let Some(hist) = data.as_any().downcast_ref::>() { + Some(Box::new(Histogram { + data_points: hist.data_points.clone(), + temporality: hist.temporality, + })) + } else if let Some(sum) = data.as_any().downcast_ref::>() { + Some(Box::new(data::Sum { + data_points: sum.data_points.clone(), + temporality: sum.temporality, + is_monotonic: sum.is_monotonic, + })) + } else if let Some(sum) = data.as_any().downcast_ref::>() { + Some(Box::new(data::Sum { + data_points: sum.data_points.clone(), + temporality: sum.temporality, + is_monotonic: sum.is_monotonic, + })) + } else if let Some(sum) = data.as_any().downcast_ref::>() { + Some(Box::new(data::Sum { + data_points: sum.data_points.clone(), + temporality: sum.temporality, + is_monotonic: sum.is_monotonic, + })) + } else if let Some(gauge) = data.as_any().downcast_ref::>() { + Some(Box::new(data::Gauge { + data_points: gauge.data_points.clone(), + })) + } else if let Some(gauge) = data.as_any().downcast_ref::>() { + Some(Box::new(data::Gauge { + data_points: gauge.data_points.clone(), + })) + } else if let Some(gauge) = data.as_any().downcast_ref::>() { + Some(Box::new(data::Gauge { + data_points: gauge.data_points.clone(), + })) + } else { + // unknown data type + None + } + } +} + +impl AggregationSelector for InMemoryMetricsExporter { + fn aggregation(&self, kind: InstrumentKind) -> Aggregation { + self.aggregation_selector.aggregation(kind) + } +} + +impl TemporalitySelector for InMemoryMetricsExporter { + fn temporality(&self, kind: InstrumentKind) -> Temporality { + self.temporality_selector.temporality(kind) + } +} + +#[async_trait] +impl PushMetricsExporter for InMemoryMetricsExporter { + async fn export(&self, metrics: &mut ResourceMetrics) -> Result<()> { + self.metrics + .lock() + .map(|mut metrics_guard| { + metrics_guard.push_back(InMemoryMetricsExporter::clone_metrics(metrics)) + }) + .map_err(MetricsError::from) + } + + async fn force_flush(&self) -> Result<()> { + Ok(()) // In this implementation, flush does nothing + } + + fn shutdown(&self) -> Result<()> { + self.metrics + .lock() + .map(|mut metrics_guard| metrics_guard.clear()) + .map_err(MetricsError::from)?; + + Ok(()) + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/metrics/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/metrics/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/metrics/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/metrics/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,3 @@ +pub use in_memory_exporter::{InMemoryMetricsExporter, InMemoryMetricsExporterBuilder}; + +mod in_memory_exporter; diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,2 +1,5 @@ -pub mod metric; +#[cfg(all(feature = "testing", feature = "trace"))] pub mod trace; + +#[cfg(all(feature = "testing", feature = "metrics"))] +pub mod metrics; diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/trace.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/trace.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/trace.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/testing/trace.rs 2023-10-30 19:40:00.000000000 +0000 @@ -61,7 +61,7 @@ } fn shutdown(&mut self) { - self.tx_shutdown.send(()).unwrap(); + let _ = self.tx_shutdown.send(()); // ignore error } } @@ -131,6 +131,7 @@ } } +#[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] impl From> for TestExportError { fn from(err: tokio::sync::mpsc::error::SendError) -> Self { TestExportError(err.to_string()) diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/config.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/config.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/config.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/config.rs 2023-10-30 19:40:00.000000000 +0000 @@ -91,7 +91,7 @@ fn default() -> Self { let mut config = Config { sampler: Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))), - id_generator: Box::new(RandomIdGenerator::default()), + id_generator: Box::::default(), span_limits: SpanLimits::default(), resource: Cow::Owned(Resource::default()), }; diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/evicted_queue.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/evicted_queue.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/evicted_queue.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/evicted_queue.rs 2023-10-30 19:40:00.000000000 +0000 @@ -26,11 +26,12 @@ /// recording dropped count if over capacity. pub(crate) fn push_back(&mut self, value: T) { let queue = self.queue.get_or_insert_with(Default::default); - if queue.len() as u32 == self.max_len { + queue.push_back(value); + + if queue.len() as u32 > self.max_len { queue.pop_front(); self.dropped_count += 1; } - queue.push_back(value); } /// Moves all the elements of other into self, leaving other empty. @@ -114,6 +115,21 @@ assert_eq!(queue.dropped_count, 1); assert_eq!(queue.len(), capacity as usize); + assert_eq!( + queue.queue.unwrap(), + (1..=capacity).collect::>() + ); + } + + #[test] + fn zero_capacity_test() { + let capacity = 0; + let mut queue = EvictedQueue::new(capacity); + + queue.push_back(1); + + assert_eq!(queue.dropped_count, 1); + assert_eq!(queue.len(), capacity as usize); assert_eq!( queue.queue.unwrap(), (1..=capacity).collect::>() diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/id_generator/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/id_generator/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/id_generator/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/id_generator/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -25,11 +25,11 @@ impl IdGenerator for RandomIdGenerator { fn new_trace_id(&self) -> TraceId { - CURRENT_RNG.with(|rng| TraceId::from(rng.borrow_mut().gen::<[u8; 16]>())) + CURRENT_RNG.with(|rng| TraceId::from(rng.borrow_mut().gen::())) } fn new_span_id(&self) -> SpanId { - CURRENT_RNG.with(|rng| SpanId::from(rng.borrow_mut().gen::<[u8; 8]>())) + CURRENT_RNG.with(|rng| SpanId::from(rng.borrow_mut().gen::())) } } diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -11,7 +11,6 @@ mod evicted_queue; mod id_generator; mod provider; -mod runtime; mod sampler; mod span; mod span_limit; @@ -23,7 +22,6 @@ pub use evicted_queue::EvictedQueue; pub use id_generator::{aws::XrayIdGenerator, IdGenerator, RandomIdGenerator}; pub use provider::{Builder, TracerProvider}; -pub use runtime::{TraceRuntime, TrySend}; pub use sampler::{Sampler, ShouldSample}; pub use span::Span; pub use span_limit::SpanLimits; @@ -34,4 +32,7 @@ pub use tracer::Tracer; #[cfg(feature = "jaeger_remote_sampler")] -pub use sampler::JaegerRemoteSamplerBuilder; +pub use sampler::{JaegerRemoteSampler, JaegerRemoteSamplerBuilder}; + +#[cfg(test)] +mod runtime_tests; diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/provider.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/provider.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/provider.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/provider.rs 2023-10-30 19:40:00.000000000 +0000 @@ -8,7 +8,8 @@ //! propagators) are provided by the [`TracerProvider`]. [`Tracer`] instances do //! not duplicate this data to avoid that different [`Tracer`] instances //! of the [`TracerProvider`] have different versions of these data. -use crate::trace::{runtime::TraceRuntime, BatchSpanProcessor, SimpleSpanProcessor, Tracer}; +use crate::runtime::RuntimeChannel; +use crate::trace::{BatchMessage, BatchSpanProcessor, SimpleSpanProcessor, Tracer}; use crate::{export::trace::SpanExporter, trace::SpanProcessor}; use crate::{InstrumentationLibrary, Resource}; use once_cell::sync::OnceCell; @@ -123,23 +124,28 @@ fn versioned_tracer( &self, name: impl Into>, - version: Option<&'static str>, - schema_url: Option<&'static str>, + version: Option>>, + schema_url: Option>>, + attributes: Option>, ) -> Self::Tracer { - let name = name.into(); // Use default value if name is invalid empty string + let name = name.into(); let component_name = if name.is_empty() { Cow::Borrowed(DEFAULT_COMPONENT_NAME) } else { name }; - let instrumentation_lib = InstrumentationLibrary::new( + + self.library_tracer(Arc::new(InstrumentationLibrary::new( component_name, - version.map(Into::into), - schema_url.map(Into::into), - ); + version, + schema_url, + attributes, + ))) + } - Tracer::new(instrumentation_lib, Arc::downgrade(&self.inner)) + fn library_tracer(&self, library: Arc) -> Self::Tracer { + Tracer::new(library, Arc::downgrade(&self.inner)) } } @@ -160,7 +166,7 @@ } /// The [`SpanExporter`] setup using a default [`BatchSpanProcessor`] that this provider should use. - pub fn with_batch_exporter( + pub fn with_batch_exporter>( self, exporter: T, runtime: R, diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/runtime.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/runtime.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/runtime.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/runtime.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,285 +0,0 @@ -//! # Trace Runtime -//! Trace runtime is an extension to [`Runtime`]. Currently it provides a channel that used -//! by [`BatchSpanProcessor`]. -//! -//! [`BatchSpanProcessor`]: crate::trace::BatchSpanProcessor -//! [`Runtime`]: crate::runtime::Runtime -#[cfg(feature = "rt-async-std")] -use crate::runtime::AsyncStd; -use crate::runtime::Runtime; -#[cfg(feature = "rt-tokio")] -use crate::runtime::Tokio; -#[cfg(feature = "rt-tokio-current-thread")] -use crate::runtime::TokioCurrentThread; -use crate::trace::BatchMessage; -use futures_util::stream::Stream; -use opentelemetry_api::trace::TraceError; -use std::fmt::Debug; - -#[cfg(any( - feature = "rt-tokio", - feature = "rt-tokio-current-thread", - feature = "rt-async-std" -))] -const CHANNEL_FULL_ERROR: &str = - "cannot send span to the batch span processor because the channel is full"; -#[cfg(any( - feature = "rt-tokio", - feature = "rt-tokio-current-thread", - feature = "rt-async-std" -))] -const CHANNEL_CLOSED_ERROR: &str = - "cannot send span to the batch span processor because the channel is closed"; - -/// Trace runtime is an extension to [`Runtime`]. Currently it provides a channel that used -/// by [`BatchSpanProcessor`]. -/// -/// [`BatchSpanProcessor`]: crate::trace::BatchSpanProcessor -/// [`Runtime`]: crate::runtime::Runtime -pub trait TraceRuntime: Runtime { - /// A future stream to receive the batch messages from channels. - type Receiver: Stream + Send; - - /// A batch messages sender that could be sent across thread safely. - type Sender: TrySend + Debug; - - /// Return the sender and receiver used to send batch message between tasks. - fn batch_message_channel(&self, capacity: usize) -> (Self::Sender, Self::Receiver); -} - -/// TrySend is an abstraction of sender that is capable to send BatchMessage with reference. -pub trait TrySend: Sync + Send { - /// Try to send one batch message to worker thread. - /// - /// It can fail because either the receiver has closed or the buffer is full. - fn try_send(&self, item: BatchMessage) -> Result<(), TraceError>; -} - -#[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] -impl TrySend for tokio::sync::mpsc::Sender { - fn try_send(&self, item: BatchMessage) -> Result<(), TraceError> { - self.try_send(item).map_err(|err| match err { - tokio::sync::mpsc::error::TrySendError::Full(_) => TraceError::from(CHANNEL_FULL_ERROR), - tokio::sync::mpsc::error::TrySendError::Closed(_) => { - TraceError::from(CHANNEL_CLOSED_ERROR) - } - }) - } -} - -#[cfg(feature = "rt-tokio")] -#[cfg_attr(docsrs, doc(cfg(feature = "rt-tokio")))] -impl TraceRuntime for Tokio { - type Receiver = tokio_stream::wrappers::ReceiverStream; - type Sender = tokio::sync::mpsc::Sender; - - fn batch_message_channel(&self, capacity: usize) -> (Self::Sender, Self::Receiver) { - let (sender, receiver) = tokio::sync::mpsc::channel(capacity); - ( - sender, - tokio_stream::wrappers::ReceiverStream::new(receiver), - ) - } -} - -#[cfg(feature = "rt-tokio-current-thread")] -#[cfg_attr(docsrs, doc(cfg(feature = "rt-tokio-current-thread")))] -impl TraceRuntime for TokioCurrentThread { - type Receiver = tokio_stream::wrappers::ReceiverStream; - type Sender = tokio::sync::mpsc::Sender; - - fn batch_message_channel(&self, capacity: usize) -> (Self::Sender, Self::Receiver) { - let (sender, receiver) = tokio::sync::mpsc::channel(capacity); - ( - sender, - tokio_stream::wrappers::ReceiverStream::new(receiver), - ) - } -} - -#[cfg(feature = "rt-async-std")] -impl TrySend for async_std::channel::Sender { - fn try_send(&self, item: BatchMessage) -> Result<(), TraceError> { - self.try_send(item).map_err(|err| match err { - async_std::channel::TrySendError::Full(_) => TraceError::from(CHANNEL_FULL_ERROR), - async_std::channel::TrySendError::Closed(_) => TraceError::from(CHANNEL_CLOSED_ERROR), - }) - } -} - -#[cfg(feature = "rt-async-std")] -#[cfg_attr(docsrs, doc(cfg(feature = "rt-async-std")))] -impl TraceRuntime for AsyncStd { - type Receiver = async_std::channel::Receiver; - type Sender = async_std::channel::Sender; - - fn batch_message_channel(&self, capacity: usize) -> (Self::Sender, Self::Receiver) { - async_std::channel::bounded(capacity) - } -} - -#[cfg(test)] -// Note that all tests here should be marked as ignore so that it won't be picked up by default We -// need to run those tests one by one as the GlobalTracerProvider is a shared object between -// threads Use cargo test -- --ignored --test-threads=1 to run those tests. -mod tests { - #[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] - use crate::runtime; - #[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] - use crate::trace::TraceRuntime; - #[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] - use opentelemetry_api::global::*; - #[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] - use opentelemetry_api::trace::Tracer; - use std::sync::Arc; - use std::{fmt::Debug, io::Write, sync::Mutex}; - - #[derive(Debug)] - struct AssertWriter { - buf: Arc>>, - } - - #[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] - impl AssertWriter { - fn new() -> AssertWriter { - AssertWriter { - buf: Arc::new(Mutex::new(Vec::new())), - } - } - - fn len(&self) -> usize { - self.buf - .lock() - .expect("cannot acquire the lock of assert writer") - .len() - } - } - - impl Write for AssertWriter { - fn write(&mut self, buf: &[u8]) -> std::io::Result { - let mut buffer = self - .buf - .lock() - .expect("cannot acquire the lock of assert writer"); - buffer.write(buf) - } - - fn flush(&mut self) -> std::io::Result<()> { - let mut buffer = self - .buf - .lock() - .expect("cannot acquire the lock of assert writer"); - buffer.flush() - } - } - - impl Clone for AssertWriter { - fn clone(&self) -> Self { - AssertWriter { - buf: self.buf.clone(), - } - } - } - - #[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] - fn build_batch_tracer_provider( - assert_writer: AssertWriter, - runtime: R, - ) -> crate::trace::TracerProvider { - use crate::trace::TracerProvider; - let exporter = crate::export::trace::stdout::Exporter::new(assert_writer, true); - TracerProvider::builder() - .with_batch_exporter(exporter, runtime) - .build() - } - - #[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] - fn build_simple_tracer_provider(assert_writer: AssertWriter) -> crate::trace::TracerProvider { - use crate::trace::TracerProvider; - let exporter = crate::export::trace::stdout::Exporter::new(assert_writer, true); - TracerProvider::builder() - .with_simple_exporter(exporter) - .build() - } - - #[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] - async fn test_set_provider_in_tokio(runtime: R) -> AssertWriter { - let buffer = AssertWriter::new(); - let _ = set_tracer_provider(build_batch_tracer_provider(buffer.clone(), runtime)); - let tracer = tracer("opentelemetery"); - - tracer.in_span("test", |_cx| {}); - - buffer - } - - // When using `tokio::spawn` to spawn the worker task in batch processor - // - // multiple -> no shut down -> not export - // multiple -> shut down -> export - // single -> no shutdown -> not export - // single -> shutdown -> hang forever - - // When using |fut| tokio::task::spawn_blocking(|| futures::executor::block_on(fut)) - // to spawn the worker task in batch processor - // - // multiple -> no shutdown -> hang forever - // multiple -> shut down -> export - // single -> shut down -> export - // single -> no shutdown -> hang forever - - // Test if the multiple thread tokio runtime could exit successfully when not force flushing spans - #[tokio::test(flavor = "multi_thread", worker_threads = 2)] - #[ignore = "requires --test-threads=1"] - #[cfg(feature = "rt-tokio")] - async fn test_set_provider_multiple_thread_tokio() { - let assert_writer = test_set_provider_in_tokio(runtime::Tokio).await; - assert_eq!(assert_writer.len(), 0); - } - - // Test if the multiple thread tokio runtime could exit successfully when force flushing spans - #[tokio::test(flavor = "multi_thread", worker_threads = 2)] - #[ignore = "requires --test-threads=1"] - #[cfg(feature = "rt-tokio")] - async fn test_set_provider_multiple_thread_tokio_shutdown() { - let assert_writer = test_set_provider_in_tokio(runtime::Tokio).await; - shutdown_tracer_provider(); - assert!(assert_writer.len() > 0); - } - - // Test use simple processor in single thread tokio runtime. - // Expected to see the spans being exported to buffer - #[tokio::test] - #[ignore = "requires --test-threads=1"] - #[cfg(feature = "rt-tokio")] - async fn test_set_provider_single_thread_tokio_with_simple_processor() { - let assert_writer = AssertWriter::new(); - let _ = set_tracer_provider(build_simple_tracer_provider(assert_writer.clone())); - let tracer = tracer("opentelemetry"); - - tracer.in_span("test", |_cx| {}); - - shutdown_tracer_provider(); - - assert!(assert_writer.len() > 0); - } - - // Test if the single thread tokio runtime could exit successfully when not force flushing spans - #[tokio::test] - #[ignore = "requires --test-threads=1"] - #[cfg(feature = "rt-tokio-current-thread")] - async fn test_set_provider_single_thread_tokio() { - let assert_writer = test_set_provider_in_tokio(runtime::TokioCurrentThread).await; - assert_eq!(assert_writer.len(), 0) - } - - // Test if the single thread tokio runtime could exit successfully when force flushing spans. - #[tokio::test] - #[ignore = "requires --test-threads=1"] - #[cfg(feature = "rt-tokio-current-thread")] - async fn test_set_provider_single_thread_tokio_shutdown() { - let assert_writer = test_set_provider_in_tokio(runtime::TokioCurrentThread).await; - shutdown_tracer_provider(); - assert!(assert_writer.len() > 0); - } -} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/runtime_tests.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/runtime_tests.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/runtime_tests.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/runtime_tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,146 @@ +// Note that all tests here should be marked as ignore so that it won't be picked up by default We +// need to run those tests one by one as the GlobalTracerProvider is a shared object between +// threads Use cargo test -- --ignored --test-threads=1 to run those tests. +use crate::export::trace::{ExportResult, SpanExporter}; +#[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] +use crate::runtime; +#[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] +use crate::runtime::RuntimeChannel; +#[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] +use crate::trace::BatchMessage; +use futures_util::future::BoxFuture; +#[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] +use opentelemetry_api::global::*; +#[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] +use opentelemetry_api::trace::Tracer; +use std::fmt::Debug; +use std::sync::atomic::{AtomicUsize, Ordering}; +use std::sync::Arc; + +#[derive(Debug)] +struct SpanCountExporter { + span_count: Arc, +} + +impl SpanExporter for SpanCountExporter { + fn export( + &mut self, + batch: Vec, + ) -> BoxFuture<'static, ExportResult> { + self.span_count.fetch_add(batch.len(), Ordering::SeqCst); + Box::pin(async { Ok(()) }) + } +} + +#[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] +impl SpanCountExporter { + fn new() -> SpanCountExporter { + SpanCountExporter { + span_count: Arc::new(AtomicUsize::new(0)), + } + } +} + +#[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] +fn build_batch_tracer_provider>( + exporter: SpanCountExporter, + runtime: R, +) -> crate::trace::TracerProvider { + use crate::trace::TracerProvider; + TracerProvider::builder() + .with_batch_exporter(exporter, runtime) + .build() +} + +#[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] +fn build_simple_tracer_provider(exporter: SpanCountExporter) -> crate::trace::TracerProvider { + use crate::trace::TracerProvider; + TracerProvider::builder() + .with_simple_exporter(exporter) + .build() +} + +#[cfg(any(feature = "rt-tokio", feature = "rt-tokio-current-thread"))] +async fn test_set_provider_in_tokio>( + runtime: R, +) -> Arc { + let exporter = SpanCountExporter::new(); + let span_count = exporter.span_count.clone(); + let _ = set_tracer_provider(build_batch_tracer_provider(exporter, runtime)); + let tracer = tracer("opentelemetery"); + + tracer.in_span("test", |_cx| {}); + + span_count +} + +// When using `tokio::spawn` to spawn the worker task in batch processor +// +// multiple -> no shut down -> not export +// multiple -> shut down -> export +// single -> no shutdown -> not export +// single -> shutdown -> hang forever + +// When using |fut| tokio::task::spawn_blocking(|| futures::executor::block_on(fut)) +// to spawn the worker task in batch processor +// +// multiple -> no shutdown -> hang forever +// multiple -> shut down -> export +// single -> shut down -> export +// single -> no shutdown -> hang forever + +// Test if the multiple thread tokio runtime could exit successfully when not force flushing spans +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +#[ignore = "requires --test-threads=1"] +#[cfg(feature = "rt-tokio")] +async fn test_set_provider_multiple_thread_tokio() { + let span_count = test_set_provider_in_tokio(runtime::Tokio).await; + assert_eq!(span_count.load(Ordering::SeqCst), 0); +} + +// Test if the multiple thread tokio runtime could exit successfully when force flushing spans +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +#[ignore = "requires --test-threads=1"] +#[cfg(feature = "rt-tokio")] +async fn test_set_provider_multiple_thread_tokio_shutdown() { + let span_count = test_set_provider_in_tokio(runtime::Tokio).await; + shutdown_tracer_provider(); + assert!(span_count.load(Ordering::SeqCst) > 0); +} + +// Test use simple processor in single thread tokio runtime. +// Expected to see the spans being exported to buffer +#[tokio::test] +#[ignore = "requires --test-threads=1"] +#[cfg(feature = "rt-tokio")] +async fn test_set_provider_single_thread_tokio_with_simple_processor() { + let exporter = SpanCountExporter::new(); + let span_count = exporter.span_count.clone(); + let _ = set_tracer_provider(build_simple_tracer_provider(exporter)); + let tracer = tracer("opentelemetry"); + + tracer.in_span("test", |_cx| {}); + + shutdown_tracer_provider(); + + assert!(span_count.load(Ordering::SeqCst) > 0); +} + +// Test if the single thread tokio runtime could exit successfully when not force flushing spans +#[tokio::test] +#[ignore = "requires --test-threads=1"] +#[cfg(feature = "rt-tokio-current-thread")] +async fn test_set_provider_single_thread_tokio() { + let span_count = test_set_provider_in_tokio(runtime::TokioCurrentThread).await; + assert_eq!(span_count.load(Ordering::SeqCst), 0) +} + +// Test if the single thread tokio runtime could exit successfully when force flushing spans. +#[tokio::test] +#[ignore = "requires --test-threads=1"] +#[cfg(feature = "rt-tokio-current-thread")] +async fn test_set_provider_single_thread_tokio_shutdown() { + let span_count = test_set_provider_in_tokio(runtime::TokioCurrentThread).await; + shutdown_tracer_provider(); + assert!(span_count.load(Ordering::SeqCst) > 0) +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/sampler/jaeger_remote/mod.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/sampler/jaeger_remote/mod.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/sampler/jaeger_remote/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/sampler/jaeger_remote/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,8 +3,7 @@ mod sampler; mod sampling_strategy; -pub(crate) use sampler::JaegerRemoteSampler; -pub use sampler::JaegerRemoteSamplerBuilder; +pub use sampler::{JaegerRemoteSampler, JaegerRemoteSamplerBuilder}; #[cfg(test)] mod tests {} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/sampler/jaeger_remote/sampler.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/sampler/jaeger_remote/sampler.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/sampler/jaeger_remote/sampler.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/sampler/jaeger_remote/sampler.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,11 @@ +use crate::runtime::RuntimeChannel; use crate::trace::sampler::jaeger_remote::remote::SamplingStrategyResponse; use crate::trace::sampler::jaeger_remote::sampling_strategy::Inner; -use crate::trace::{Sampler, ShouldSample, TraceRuntime}; +use crate::trace::{BatchMessage, Sampler, ShouldSample}; use futures_util::{stream, StreamExt as _}; use http::Uri; -use opentelemetry_api::trace::{Link, OrderMap, SamplingResult, SpanKind, TraceError, TraceId}; -use opentelemetry_api::{global, Context, InstrumentationLibrary, Key, Value}; +use opentelemetry_api::trace::{Link, SamplingResult, SpanKind, TraceError, TraceId}; +use opentelemetry_api::{global, Context, Key, OrderMap, Value}; use opentelemetry_http::HttpClient; use std::str::FromStr; use std::sync::Arc; @@ -12,12 +13,12 @@ const DEFAULT_REMOTE_SAMPLER_ENDPOINT: &str = "http://localhost:5778/sampling"; -/// builder of JaegerRemoteSampler. +/// Builder for [`JaegerRemoteSampler`]. /// See [Sampler::jaeger_remote] for details. #[derive(Debug)] pub struct JaegerRemoteSamplerBuilder where - R: TraceRuntime, + R: RuntimeChannel, C: HttpClient + 'static, S: ShouldSample + 'static, { @@ -34,7 +35,7 @@ where C: HttpClient + 'static, S: ShouldSample + 'static, - R: TraceRuntime, + R: RuntimeChannel, { pub(crate) fn new( runtime: R, @@ -72,7 +73,7 @@ /// /// By default it's `http://localhost:5778/sampling`. /// - /// If the service name is provided as part of the + /// If service name is provided as part of the endpoint, it will be ignored. pub fn with_endpoint>(self, endpoint: Str) -> Self { Self { endpoint: endpoint.into(), @@ -82,6 +83,8 @@ /// The size of the leaky bucket. /// + /// By default the size is 100. + /// /// It's used when sampling strategy is rate limiting. pub fn with_leaky_bucket_size(self, size: f64) -> Self { Self { @@ -90,9 +93,12 @@ } } - /// Build a jaeger remote sampler. + /// Build a [JaegerRemoteSampler] using provided configuration. + /// + /// Return errors if: /// - /// Return errors when the endpoint provided is invalid(e.g, service name is empty) + /// - the endpoint provided is empty. + /// - the service name provided is empty. pub fn build(self) -> Result { let endpoint = Self::get_endpoint(&self.endpoint, &self.service_name) .map_err(|err_str| TraceError::Other(err_str.into()))?; @@ -113,6 +119,7 @@ } let mut endpoint = url::Url::parse(endpoint) .unwrap_or_else(|_| url::Url::parse(DEFAULT_REMOTE_SAMPLER_ENDPOINT).unwrap()); + endpoint .query_pairs_mut() .append_pair("service", service_name); @@ -123,6 +130,13 @@ /// Sampler that fetches the sampling configuration from remotes. /// +/// It offers the following sampling strategies: +/// - **Probabilistic**, fetch a probability between [0.0, 1.0] from remotes and use it to sample traces. If the probability is 0.0, it will never sample traces. If the probability is 1.0, it will always sample traces. +/// - **Rate limiting**, ses a leaky bucket rate limiter to ensure that traces are sampled with a certain constant rate. +/// - **Per Operations**, instead of sampling all traces, it samples traces based on the span name. Only probabilistic sampling is supported at the moment. +/// +/// User can build a [`JaegerRemoteSampler`] by getting a [`JaegerRemoteSamplerBuilder`] from [`Sampler::jaeger_remote`]. +/// /// Note that the backend doesn't need to be Jaeger so long as it supports jaeger remote sampling /// protocol. #[derive(Clone, Debug)] @@ -141,7 +155,7 @@ leaky_bucket_size: f64, ) -> Self where - R: TraceRuntime, + R: RuntimeChannel, C: HttpClient + 'static, S: ShouldSample + 'static, { @@ -171,7 +185,7 @@ shutdown: futures_channel::mpsc::Receiver<()>, endpoint: Uri, ) where - R: TraceRuntime, + R: RuntimeChannel, C: HttpClient + 'static, { // todo: review if we need 'static here @@ -239,7 +253,6 @@ span_kind: &SpanKind, attributes: &OrderMap, links: &[Link], - instrumentation_library: &InstrumentationLibrary, ) -> SamplingResult { self.inner .should_sample(parent_context, trace_id, name) @@ -251,8 +264,35 @@ span_kind, attributes, links, - instrumentation_library, ) }) } } + +#[cfg(test)] +mod tests { + use crate::trace::sampler::jaeger_remote::remote::SamplingStrategyType; + use std::fmt::{Debug, Formatter}; + + impl Debug for SamplingStrategyType { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + match &self { + SamplingStrategyType::Probabilistic => f.write_str("Probabilistic"), + SamplingStrategyType::RateLimiting => f.write_str("RateLimiting"), + } + } + } + + #[test] + fn deserialize_sampling_strategy_response() { + let json = r#"{ + "strategyType": "PROBABILISTIC", + "probabilisticSampling": { + "samplingRate": 0.5 + } + }"#; + let resp: super::SamplingStrategyResponse = serde_json::from_str(json).unwrap(); + assert_eq!(resp.strategy_type, SamplingStrategyType::Probabilistic); + assert_eq!(resp.probabilistic_sampling.unwrap().sampling_rate, 0.5); + } +} diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/sampler/jaeger_remote/sampling_strategy.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/sampler/jaeger_remote/sampling_strategy.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/sampler/jaeger_remote/sampling_strategy.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/sampler/jaeger_remote/sampling_strategy.rs 2023-10-30 19:40:00.000000000 +0000 @@ -196,11 +196,11 @@ impl PerOperationStrategies { pub(crate) fn update(&mut self, remote_strategies: PerOperationSamplingStrategies) { - self.default_prob = remote_strategies.default_sampling_probability as f64; + self.default_prob = remote_strategies.default_sampling_probability; self.default_lower_bound_traces_per_second = - remote_strategies.default_lower_bound_traces_per_second as f64; + remote_strategies.default_lower_bound_traces_per_second; self.default_upper_bound_traces_per_second = - remote_strategies.default_upper_bound_traces_per_second as f64; + remote_strategies.default_upper_bound_traces_per_second; self.operation_prob = remote_strategies .per_operation_strategies diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/sampler.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/sampler.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/sampler.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/sampler.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,8 @@ -use crate::InstrumentationLibrary; -use opentelemetry_api::trace::OrderMap; use opentelemetry_api::{ trace::{ Link, SamplingDecision, SamplingResult, SpanKind, TraceContextExt, TraceId, TraceState, }, - Context, Key, Value, + Context, Key, OrderMap, Value, }; use std::convert::TryInto; @@ -12,9 +10,7 @@ mod jaeger_remote; #[cfg(feature = "jaeger_remote_sampler")] -use jaeger_remote::JaegerRemoteSampler; -#[cfg(feature = "jaeger_remote_sampler")] -pub use jaeger_remote::JaegerRemoteSamplerBuilder; +pub use jaeger_remote::{JaegerRemoteSampler, JaegerRemoteSamplerBuilder}; #[cfg(feature = "jaeger_remote_sampler")] use opentelemetry_http::HttpClient; @@ -51,7 +47,7 @@ /// and [`SpanExporter`]s will receive spans with the `Sampled` flag set for /// processing. /// -/// The flag combination `Sampled == false` and `is_recording` == true` means +/// The flag combination `Sampled == false` and `is_recording == true` means /// that the current `Span` does record information, but most likely the child /// `Span` will not. /// @@ -84,7 +80,6 @@ span_kind: &SpanKind, attributes: &OrderMap, links: &[Link], - instrumentation_library: &InstrumentationLibrary, ) -> SamplingResult; } @@ -142,13 +137,13 @@ } impl Sampler { - /// Create a jaeger remote sampler. + /// Create a jaeger remote sampler builder. /// - /// user needs to provide - /// - a `runtime` to run the http client - /// - a http client to query the sampling endpoint - /// - a default sampler to make sampling decision when the remote is unavailable or before the SDK receive the first response, - /// - the service name. This is a required parameter to query the sampling endpoint. + /// ### Arguments + /// * `runtime` - A runtime to run the HTTP client. + /// * `http_client` - An HTTP client to query the sampling endpoint. + /// * `default_sampler` - A default sampler to make a sampling decision when the remote is unavailable or before the SDK receives the first response from remote. + /// * `service_name` - The name of the service. This is a required parameter to query the sampling endpoint. /// /// See [here](https://github.com/open-telemetry/opentelemetry-rust/blob/main/examples/jaeger-remote-sampler/src/main.rs) for an example. #[cfg(feature = "jaeger_remote_sampler")] @@ -161,7 +156,7 @@ where C: HttpClient + 'static, Sampler: ShouldSample, - R: crate::trace::TraceRuntime, + R: crate::runtime::RuntimeChannel, Svc: Into, { JaegerRemoteSamplerBuilder::new(runtime, http_client, default_sampler, service_name) @@ -177,7 +172,6 @@ span_kind: &SpanKind, attributes: &OrderMap, links: &[Link], - instrumentation_library: &InstrumentationLibrary, ) -> SamplingResult { let decision = match self { // Always sample the trace @@ -185,19 +179,21 @@ // Never sample the trace Sampler::AlwaysOff => SamplingDecision::Drop, // The parent decision if sampled; otherwise the decision of delegate_sampler - Sampler::ParentBased(delegate_sampler) => { - parent_context.filter(|cx| cx.has_active_span()).map_or( - delegate_sampler - .should_sample( - parent_context, - trace_id, - name, - span_kind, - attributes, - links, - instrumentation_library, - ) - .decision, + Sampler::ParentBased(delegate_sampler) => parent_context + .filter(|cx| cx.has_active_span()) + .map_or_else( + || { + delegate_sampler + .should_sample( + parent_context, + trace_id, + name, + span_kind, + attributes, + links, + ) + .decision + }, |ctx| { let span = ctx.span(); let parent_span_context = span.span_context(); @@ -207,22 +203,13 @@ SamplingDecision::Drop } }, - ) - } + ), // Probabilistically sample the trace. Sampler::TraceIdRatioBased(prob) => sample_based_on_probability(prob, trace_id), #[cfg(feature = "jaeger_remote_sampler")] Sampler::JaegerRemote(remote_sampler) => { remote_sampler - .should_sample( - parent_context, - trace_id, - name, - span_kind, - attributes, - links, - instrumentation_library, - ) + .should_sample(parent_context, trace_id, name, span_kind, attributes, links) .decision } }; @@ -339,7 +326,7 @@ None }; - let trace_id = TraceId::from(rng.gen::<[u8; 16]>()); + let trace_id = TraceId::from(rng.gen::()); if sampler .should_sample( parent_context.as_ref(), @@ -348,7 +335,6 @@ &SpanKind::Internal, &Default::default(), &[], - &InstrumentationLibrary::default(), ) .decision == SamplingDecision::RecordAndSample @@ -381,10 +367,10 @@ #[test] fn clone_a_parent_sampler() { let sampler = Sampler::ParentBased(Box::new(Sampler::AlwaysOn)); + #[allow(clippy::redundant_clone)] let cloned_sampler = sampler.clone(); let cx = Context::current_with_value("some_value"); - let instrumentation_library = InstrumentationLibrary::default(); let result = sampler.should_sample( Some(&cx), @@ -393,7 +379,6 @@ &SpanKind::Internal, &Default::default(), &[], - &instrumentation_library, ); let cloned_result = cloned_sampler.should_sample( @@ -403,27 +388,59 @@ &SpanKind::Internal, &Default::default(), &[], - &instrumentation_library, ); assert_eq!(result, cloned_result); } #[test] - fn filter_parent_sampler_for_active_spans() { - let sampler = Sampler::ParentBased(Box::new(Sampler::AlwaysOn)); - let cx = Context::current_with_value("some_value"); - let instrumentation_library = InstrumentationLibrary::default(); - let result = sampler.should_sample( - Some(&cx), - TraceId::from_u128(1), - "should sample", - &SpanKind::Internal, - &Default::default(), - &[], - &instrumentation_library, - ); + fn parent_sampler() { + // name, delegate, context(with or without parent), expected decision + let test_cases = vec![ + ( + "should using delegate sampler", + Sampler::AlwaysOn, + Context::new(), + SamplingDecision::RecordAndSample, + ), + ( + "should use parent result, always off", + Sampler::AlwaysOn, + Context::current_with_span(TestSpan(SpanContext::new( + TraceId::from_u128(1), + SpanId::from_u64(1), + TraceFlags::default(), // not sampling + false, + TraceState::default(), + ))), + SamplingDecision::Drop, + ), + ( + "should use parent result, always on", + Sampler::AlwaysOff, + Context::current_with_span(TestSpan(SpanContext::new( + TraceId::from_u128(1), + SpanId::from_u64(1), + TraceFlags::SAMPLED, // not sampling + false, + TraceState::default(), + ))), + SamplingDecision::RecordAndSample, + ), + ]; + + for (name, delegate, parent_cx, expected) in test_cases { + let sampler = Sampler::ParentBased(Box::new(delegate)); + let result = sampler.should_sample( + Some(&parent_cx), + TraceId::from_u128(1), + name, + &SpanKind::Internal, + &Default::default(), + &[], + ); - assert_eq!(result.decision, SamplingDecision::RecordAndSample); + assert_eq!(result.decision, expected); + } } } diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/span_processor.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/span_processor.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/span_processor.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/span_processor.rs 2023-10-30 19:40:00.000000000 +0000 @@ -35,7 +35,7 @@ //! [`TracerProvider`]: opentelemetry_api::trace::TracerProvider use crate::export::trace::{ExportResult, SpanData, SpanExporter}; -use crate::trace::runtime::{TraceRuntime, TrySend}; +use crate::runtime::{RuntimeChannel, TrySend}; use crate::trace::Span; use futures_channel::oneshot; use futures_util::{ @@ -92,45 +92,65 @@ fn shutdown(&mut self) -> TraceResult<()>; } -/// A [`SpanProcessor`] that exports synchronously when spans are finished. -/// -/// # Examples -/// -/// Note that the simple processor exports synchronously every time a span is -/// ended. If you find this limiting, consider the batch processor instead. +/// A [SpanProcessor] that passes finished spans to the configured `SpanExporter`, as +/// soon as they are finished, without any batching. #[derive(Debug)] pub struct SimpleSpanProcessor { - sender: crossbeam_channel::Sender>, - shutdown: crossbeam_channel::Receiver<()>, + message_sender: crossbeam_channel::Sender, } impl SimpleSpanProcessor { pub(crate) fn new(mut exporter: Box) -> Self { - let (span_tx, span_rx) = crossbeam_channel::unbounded(); - let (shutdown_tx, shutdown_rx) = crossbeam_channel::bounded(0); + let (message_sender, rx) = crossbeam_channel::unbounded(); let _ = thread::Builder::new() .name("opentelemetry-exporter".to_string()) .spawn(move || { - while let Ok(Some(span)) = span_rx.recv() { - if let Err(err) = futures_executor::block_on(exporter.export(vec![span])) { - global::handle_error(err); + while let Ok(msg) = rx.recv() { + match msg { + Message::ExportSpan(span) => { + if let Err(err) = + futures_executor::block_on(exporter.export(vec![span])) + { + global::handle_error(err); + } + } + Message::Flush(sender) => { + Self::respond(&sender, "sync"); + } + Message::Shutdown(sender) => { + exporter.shutdown(); + + Self::respond(&sender, "shutdown"); + + return; + } } } exporter.shutdown(); - - if let Err(err) = shutdown_tx.send(()) { - global::handle_error(TraceError::from(format!( - "could not send shutdown: {:?}", - err - ))); - } }); - SimpleSpanProcessor { - sender: span_tx, - shutdown: shutdown_rx, + Self { message_sender } + } + + fn signal(&self, msg: fn(crossbeam_channel::Sender<()>) -> Message, description: &str) { + let (tx, rx) = crossbeam_channel::bounded(0); + + if self.message_sender.send(msg(tx)).is_ok() { + if let Err(err) = rx.recv() { + global::handle_error(TraceError::from(format!( + "error {description} span processor: {err:?}" + ))); + } + } + } + + fn respond(sender: &crossbeam_channel::Sender<()>, description: &str) { + if let Err(err) = sender.send(()) { + global::handle_error(TraceError::from(format!( + "could not send {description}: {err:?}" + ))); } } } @@ -145,30 +165,31 @@ return; } - if let Err(err) = self.sender.send(Some(span)) { + if let Err(err) = self.message_sender.send(Message::ExportSpan(span)) { global::handle_error(TraceError::from(format!("error processing span {:?}", err))); } } fn force_flush(&self) -> TraceResult<()> { - // Ignored since all spans in Simple Processor will be exported as they ended. + self.signal(Message::Flush, "flushing"); + Ok(()) } fn shutdown(&mut self) -> TraceResult<()> { - if self.sender.send(None).is_ok() { - if let Err(err) = self.shutdown.recv() { - global::handle_error(TraceError::from(format!( - "error shutting down span processor: {:?}", - err - ))) - } - } + self.signal(Message::Shutdown, "shutting down"); Ok(()) } } +#[derive(Debug)] +enum Message { + ExportSpan(SpanData), + Flush(crossbeam_channel::Sender<()>), + Shutdown(crossbeam_channel::Sender<()>), +} + /// A [`SpanProcessor`] that asynchronously buffers finished spans and reports /// them at a preconfigured interval. /// @@ -228,11 +249,11 @@ /// [`executor`]: https://docs.rs/futures/0.3/futures/executor/index.html /// [`tokio`]: https://tokio.rs /// [`async-std`]: https://async.rs -pub struct BatchSpanProcessor { +pub struct BatchSpanProcessor> { message_sender: R::Sender, } -impl fmt::Debug for BatchSpanProcessor { +impl> fmt::Debug for BatchSpanProcessor { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_struct("BatchSpanProcessor") .field("message_sender", &self.message_sender) @@ -240,7 +261,7 @@ } } -impl SpanProcessor for BatchSpanProcessor { +impl> SpanProcessor for BatchSpanProcessor { fn on_start(&self, _span: &mut Span, _cx: &Context) { // Ignored } @@ -253,14 +274,15 @@ let result = self.message_sender.try_send(BatchMessage::ExportSpan(span)); if let Err(err) = result { - global::handle_error(err); + global::handle_error(TraceError::Other(err.into())); } } fn force_flush(&self) -> TraceResult<()> { let (res_sender, res_receiver) = oneshot::channel(); self.message_sender - .try_send(BatchMessage::Flush(Some(res_sender)))?; + .try_send(BatchMessage::Flush(Some(res_sender))) + .map_err(|err| TraceError::Other(err.into()))?; futures_executor::block_on(res_receiver) .map_err(|err| TraceError::Other(err.into())) @@ -270,7 +292,8 @@ fn shutdown(&mut self) -> TraceResult<()> { let (res_sender, res_receiver) = oneshot::channel(); self.message_sender - .try_send(BatchMessage::Shutdown(res_sender))?; + .try_send(BatchMessage::Shutdown(res_sender)) + .map_err(|err| TraceError::Other(err.into()))?; futures_executor::block_on(res_receiver) .map_err(|err| TraceError::Other(err.into())) @@ -302,7 +325,7 @@ config: BatchConfig, } -impl BatchSpanProcessorInternal { +impl> BatchSpanProcessorInternal { async fn flush(&mut self, res_channel: Option>) { let export_task = self.export(); let task = Box::pin(async move { @@ -439,7 +462,7 @@ } } -impl BatchSpanProcessor { +impl> BatchSpanProcessor { pub(crate) fn new(exporter: Box, config: BatchConfig, runtime: R) -> Self { let (message_sender, message_receiver) = runtime.batch_message_channel(config.max_queue_size); @@ -622,7 +645,7 @@ impl BatchSpanProcessorBuilder where E: SpanExporter + 'static, - R: TraceRuntime, + R: RuntimeChannel, { /// Set max queue size for batches pub fn with_max_queue_size(self, size: usize) -> Self { @@ -690,7 +713,7 @@ OTEL_BSP_MAX_EXPORT_BATCH_SIZE, OTEL_BSP_MAX_QUEUE_SIZE, OTEL_BSP_MAX_QUEUE_SIZE_DEFAULT, OTEL_BSP_SCHEDULE_DELAY, OTEL_BSP_SCHEDULE_DELAY_DEFAULT, }; - use crate::export::trace::{stdout, ExportResult, SpanData, SpanExporter}; + use crate::export::trace::{ExportResult, SpanData, SpanExporter}; use crate::runtime; use crate::testing::trace::{ new_test_export_span_data, new_test_exporter, new_tokio_test_exporter, @@ -762,10 +785,7 @@ std::env::set_var(OTEL_BSP_EXPORT_TIMEOUT, "2046"); std::env::set_var(OTEL_BSP_SCHEDULE_DELAY, "I am not number"); - let mut builder = BatchSpanProcessor::builder( - stdout::Exporter::new(std::io::stdout(), true), - runtime::Tokio, - ); + let mut builder = BatchSpanProcessor::builder(new_test_exporter().0, runtime::Tokio); // export batch size cannot exceed max queue size assert_eq!(builder.config.max_export_batch_size, 500); assert_eq!( @@ -782,10 +802,7 @@ ); std::env::set_var(OTEL_BSP_MAX_QUEUE_SIZE, "120"); - builder = BatchSpanProcessor::builder( - stdout::Exporter::new(std::io::stdout(), true), - runtime::Tokio, - ); + builder = BatchSpanProcessor::builder(new_test_exporter().0, runtime::Tokio); assert_eq!(builder.config.max_export_batch_size, 120); assert_eq!(builder.config.max_queue_size, 120); diff -Nru temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/tracer.rs temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/tracer.rs --- temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/tracer.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry_sdk/src/trace/tracer.rs 2023-10-30 19:40:00.000000000 +0000 @@ -7,27 +7,29 @@ //! and exposes methods for creating and activating new `Spans`. //! //! Docs: -use crate::trace::SpanLimits; use crate::{ trace::{ provider::{TracerProvider, TracerProviderInner}, span::{Span, SpanData}, - Config, EvictedHashMap, EvictedQueue, + Config, EvictedHashMap, EvictedQueue, SpanLimits, }, InstrumentationLibrary, }; -use opentelemetry_api::trace::{ - Link, OrderMap, SamplingDecision, SamplingResult, SpanBuilder, SpanContext, SpanId, SpanKind, - TraceContextExt, TraceFlags, TraceId, TraceState, +use once_cell::sync::Lazy; +use opentelemetry_api::{ + trace::{ + Link, SamplingDecision, SamplingResult, SpanBuilder, SpanContext, SpanId, SpanKind, + TraceContextExt, TraceFlags, TraceId, TraceState, + }, + Context, Key, KeyValue, OrderMap, Value, }; -use opentelemetry_api::{Context, Key, KeyValue, Value}; use std::fmt; -use std::sync::Weak; +use std::sync::{Arc, Weak}; /// `Tracer` implementation to create and manage spans #[derive(Clone)] pub struct Tracer { - instrumentation_lib: InstrumentationLibrary, + instrumentation_lib: Arc, provider: Weak, } @@ -45,7 +47,7 @@ impl Tracer { /// Create a new tracer (used internally by `TracerProvider`s). pub(crate) fn new( - instrumentation_lib: InstrumentationLibrary, + instrumentation_lib: Arc, provider: Weak, ) -> Self { Tracer { @@ -75,7 +77,6 @@ attributes: &OrderMap, links: &[Link], config: &Config, - instrumentation_library: &InstrumentationLibrary, ) -> Option<(TraceFlags, Vec, TraceState)> { let sampling_result = config.sampler.should_sample( Some(parent_cx), @@ -84,7 +85,6 @@ span_kind, attributes, links, - instrumentation_library, ); self.process_sampling_result(sampling_result, parent_cx) @@ -120,6 +120,8 @@ } } +static EMPTY_ATTRIBUTES: Lazy> = Lazy::new(Default::default); + impl opentelemetry_api::trace::Tracer for Tracer { /// This implementation of `Tracer` produces `sdk::Span` instances. type Span = Span; @@ -150,8 +152,6 @@ .take() .unwrap_or_else(|| config.id_generator.new_span_id()); let span_kind = builder.span_kind.take().unwrap_or(SpanKind::Internal); - let mut attribute_options = builder.attributes.take().unwrap_or_default(); - let mut link_options = builder.links.take(); let mut parent_span_id = SpanId::INVALID; let trace_id; @@ -181,10 +181,9 @@ trace_id, &builder.name, &span_kind, - &attribute_options, - link_options.as_deref().unwrap_or(&[]), + builder.attributes.as_ref().unwrap_or(&EMPTY_ATTRIBUTES), + builder.links.as_deref().unwrap_or(&[]), provider.config(), - &self.instrumentation_lib, ) }; @@ -199,6 +198,7 @@ // Build optional inner context, `None` if not recording. let mut span = if let Some((flags, extra_attrs, trace_state)) = sampling_decision { + let mut attribute_options = builder.attributes.take().unwrap_or_default(); for extra_attr in extra_attrs { attribute_options.insert(extra_attr.key, extra_attr.value); } @@ -207,6 +207,8 @@ for (key, value) in attribute_options { attributes.insert(KeyValue::new(key, value)); } + + let mut link_options = builder.links.take(); let mut links = EvictedQueue::new(span_limits.max_links_per_span); if let Some(link_options) = &mut link_options { let link_attributes_limit = span_limits.max_attributes_per_link as usize; @@ -276,14 +278,13 @@ use crate::{ testing::trace::TestSpan, trace::{Config, Sampler, ShouldSample}, - InstrumentationLibrary, }; use opentelemetry_api::{ trace::{ - Link, OrderMap, SamplingDecision, SamplingResult, Span, SpanContext, SpanId, SpanKind, + Link, SamplingDecision, SamplingResult, Span, SpanContext, SpanId, SpanKind, TraceContextExt, TraceFlags, TraceId, TraceState, Tracer, TracerProvider, }, - Context, Key, Value, + Context, Key, OrderMap, Value, }; #[derive(Clone, Debug)] @@ -298,7 +299,6 @@ _span_kind: &SpanKind, _attributes: &OrderMap, _links: &[Link], - _instrumentation_library: &InstrumentationLibrary, ) -> SamplingResult { let trace_state = parent_context .unwrap() @@ -368,15 +368,16 @@ let span = tracer.span_builder("must_not_be_sampled").start(&tracer); assert!(!span.span_context().is_sampled()); - let _attached = Context::current() - .with_remote_span_context(SpanContext::new( + let context = Context::map_current(|cx| { + cx.with_remote_span_context(SpanContext::new( TraceId::from_u128(1), SpanId::from_u64(1), TraceFlags::default(), true, Default::default(), )) - .attach(); + }); + let _attached = context.attach(); let span = tracer.span_builder("must_not_be_sampled").start(&tracer); assert!(!span.span_context().is_sampled()); diff -Nru temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/.cargo-checksum.json temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/.cargo-checksum.json --- temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +{"files":{"CHANGELOG.md":"f0d261ab34aedbb0d82e9a257a2830b1687159555f92ecb0d29dc128a10084d5","CODEOWNERS":"abc35dda6643aed84b16084b9dccfee77929c299d60d21b590bd5c8c3b54e508","Cargo.toml":"41df5859e3dff2af86236b7b790efb44b4a26e10ac7faa7e98b5ef18b0ead361","LICENSE":"208a3f5bae3355bd4f3f45626d1ea4518b253d618ee2896983436075c4375098","README.md":"d6943e0b98c86e33639b795a30db877305935c927fb22d9e7afde3ee2b46571a","scripts/generate-consts-from-spec.sh":"18b66b5841430129df9bda93430617f0220320e1d2805ea7be2f678ab0958855","scripts/templates/header_resource.rs":"15551d379218ab5b615d1b3a5a3eccca10f7cd199486f3d4a737fbdfc750c4b6","scripts/templates/header_trace.rs":"e32fff42976b80e4a2c14489f87a223432bbf265165e7ec20aa2551d1f51ec16","scripts/templates/semantic_attributes.rs.j2":"dfec365069e510a4124d61b0f9232fdef2d92626071d44e75cd5e1ace88c7627","src/lib.rs":"80de22474a2712bbe00dba954918c1730fea4fe7d44bb0e12f9dd579b882fcc5","src/resource.rs":"71df8338d57d9aa7701f7165c65891105074b48568859c6997be4656dc2e076c","src/trace.rs":"8b0b1405987bc2b0950c0f979a3661600262459df49ca8dd70688b28df6bd4c3"},"package":"73c9f9340ad135068800e7f1b24e9e09ed9e7143f5bf8518ded3d3ec69789269"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/Cargo.toml temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/Cargo.toml --- temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,45 @@ +# 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.60" +name = "opentelemetry-semantic-conventions" +version = "0.12.0" +description = "Semantic conventions for OpenTelemetry" +homepage = "https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-semantic-conventions" +readme = "README.md" +keywords = [ + "opentelemetry", + "tracing", + "async", +] +categories = [ + "development-tools::debugging", + "development-tools::profiling", + "asynchronous", +] +license = "Apache-2.0" +repository = "https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-semantic-conventions" +resolver = "1" + +[package.metadata.docs.rs] +all-features = true +rustdoc-args = [ + "--cfg", + "docsrs", +] + +[dependencies.opentelemetry] +version = "0.20" +default-features = false + +[dev-dependencies] diff -Nru temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/CHANGELOG.md temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/CHANGELOG.md --- temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/CHANGELOG.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,80 @@ +# Changelog + +## v0.12.0 + +### Changed + +- Update to v1.21.0 spec +- Update to opentelemetry-api v0.20.0 + +## v0.11.0 +### Changed +- Update to `opentelemetry` v0.19. +- Update to `opentelemetry_http` v0.8. +- Bump MSRV to 1.57 [#953](https://github.com/open-telemetry/opentelemetry-rust/pull/953). +- Update to v1.17.0 spec [#960](https://github.com/open-telemetry/opentelemetry-rust/pull/960). +- Update dependencies and bump MSRV to 1.60 [#969](https://github.com/open-telemetry/opentelemetry-rust/pull/969). + +## v0.10.0 + +### Changed + +- update to v1.9 spec #754 +- Update to opentelemetry v0.18.0 + +## v0.9.0 + +### Changed + +- Update to opentelemetry v0.17.0 + +## v0.8.0 + +### Changed + +- Update to opentelemetry v0.16.0 + +## v0.7.0 + +### Changed + +- Update to spec version 1.4.0 #570 +- Update to opentelemetry v0.15.0 + +## v0.6.0 + +### Changed + +- Update to spec version 1.3.0 #547 +- Update to opentelemetry v0.14.0 + +## v0.5.0 + +### Changed +- Update to opentelemetry v0.13.0 + +### Removed +- Removed `from_env` and use environment variables to initialize the configurations by default #459 + +## v0.4.0 + +### Changed +- Update to opentelemetry v0.12.0 + +## v0.3.0 + +### Changed + +- Update to opentelemetry v0.11.0 + +## v0.2.0 + +### Changed + +- Update to opentelemetry v0.10.0 + +## v0.1.0 + +### Added + +- Semantic conventions for [trace](https://github.com/open-telemetry/opentelemetry-specification/tree/master/specification/trace/semantic_conventions) and [resource](https://github.com/open-telemetry/opentelemetry-specification/tree/master/specification/resource/semantic_conventions). diff -Nru temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/CODEOWNERS temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/CODEOWNERS --- temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/CODEOWNERS 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/CODEOWNERS 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,5 @@ +# Code owners file. +# This file controls who is tagged for review for any given pull request. + +# For anything not explicitly taken by someone else: +* @open-telemetry/rust-approvers diff -Nru temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/LICENSE temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/LICENSE --- temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/LICENSE 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/LICENSE 2023-10-30 19:40:00.000000000 +0000 @@ -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 2023 The OpenTelemetry 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 -Nru temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/README.md temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/README.md --- temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/README.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,24 @@ +![OpenTelemetry — An observability framework for cloud-native software.][splash] + +[splash]: https://raw.githubusercontent.com/open-telemetry/opentelemetry-rust/main/assets/logo-text.png + +# OpenTelemetry Semantic Conventions + +Semantic conventions for applications instrumented with [`OpenTelemetry`]. + +[![Crates.io: opentelemetry-semantic-conventions](https://img.shields.io/crates/v/opentelemetry-semantic-conventions.svg)](https://crates.io/crates/opentelemetry-semantic-conventions) +[![Documentation](https://docs.rs/opentelemetry-semantic-conventions/badge.svg)](https://docs.rs/opentelemetry-semantic-conventions) +[![LICENSE](https://img.shields.io/crates/l/opentelemetry-semantic-conventions)](./LICENSE) +[![GitHub Actions CI](https://github.com/open-telemetry/opentelemetry-rust/workflows/CI/badge.svg)](https://github.com/open-telemetry/opentelemetry-rust/actions?query=workflow%3ACI+branch%3Amain) +[![Slack](https://img.shields.io/badge/slack-@cncf/otel/rust-brightgreen.svg?logo=slack)](https://cloud-native.slack.com/archives/C03GDP0H023) + +## Overview + +[`OpenTelemetry`] is a collection of tools, APIs, and SDKs used to instrument, +generate, collect, and export telemetry data (metrics, logs, and traces) for +analysis in order to understand your software's performance and behavior. This +crate provides standardized naming patterns for attributes, and +resources to help facilitate interoperability and compatibility with processing +and visualization tools. + +[`opentelemetry`]: https://crates.io/crates/opentelemetry diff -Nru temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/scripts/generate-consts-from-spec.sh temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/scripts/generate-consts-from-spec.sh --- temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/scripts/generate-consts-from-spec.sh 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/scripts/generate-consts-from-spec.sh 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,48 @@ +#!/bin/bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +CRATE_DIR="${SCRIPT_DIR}/../" + +# freeze the spec version and generator version to make generation reproducible +SPEC_VERSION=1.21.0 +SEMCOVGEN_VERSION=0.19.0 + +cd "$CRATE_DIR" + +rm -rf semantic-conventions || true +mkdir semantic-conventions +cd semantic-conventions + +git init +git remote add origin https://github.com/open-telemetry/semantic-conventions.git +git fetch origin "v$SPEC_VERSION" +git reset --hard FETCH_HEAD +cd "$CRATE_DIR" + +docker run --rm \ + -v "${CRATE_DIR}/semantic-conventions/model:/source" \ + -v "${CRATE_DIR}/scripts/templates:/templates" \ + -v "${CRATE_DIR}/src:/output" \ + otel/semconvgen:$SEMCOVGEN_VERSION \ + --only span,event,attribute_group,scope \ + -f /source code \ + --template /templates/semantic_attributes.rs.j2 \ + --output /output/trace.rs \ + --parameters conventions=trace + +docker run --rm \ + -v "${CRATE_DIR}/semantic-conventions/model:/source" \ + -v "${CRATE_DIR}/scripts/templates:/templates" \ + -v "${CRATE_DIR}/src:/output" \ + otel/semconvgen:$SEMCOVGEN_VERSION \ + --only resource \ + -f /source code \ + --template /templates/semantic_attributes.rs.j2 \ + --output /output/resource.rs \ + --parameters conventions=resource + +# Keep `SCHEMA_URL` key in sync with spec version +sed -i '' "s/\(opentelemetry.io\/schemas\/\)[^\"]*\"/\1$SPEC_VERSION\"/" src/lib.rs + +cargo fmt diff -Nru temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/scripts/templates/header_resource.rs temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/scripts/templates/header_resource.rs --- temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/scripts/templates/header_resource.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/scripts/templates/header_resource.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,20 @@ +//! # Resource Semantic Conventions +//! +//! The [resource semantic conventions] define a set of standardized attributes +//! to be used in `Resource`s. +//! +//! [resource semantic conventions]: https://github.com/open-telemetry/opentelemetry-specification/tree/master/specification/resource/semantic_conventions +//! +//! ## Usage +//! +//! ``` +//! use opentelemetry::sdk; +//! use opentelemetry_semantic_conventions as semconv; +//! +//! let _tracer = sdk::trace::TracerProvider::builder() +//! .with_config(sdk::trace::config().with_resource(sdk::Resource::new(vec![ +//! semconv::resource::SERVICE_NAME.string("my-service"), +//! semconv::resource::SERVICE_NAMESPACE.string("my-namespace"), +//! ]))) +//! .build(); +//! ``` diff -Nru temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/scripts/templates/header_trace.rs temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/scripts/templates/header_trace.rs --- temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/scripts/templates/header_trace.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/scripts/templates/header_trace.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,22 @@ +//! # Trace Semantic Conventions +//! +//! The [trace semantic conventions] define a set of standardized attributes to +//! be used in `Span`s. +//! +//! [trace semantic conventions]: https://github.com/open-telemetry/opentelemetry-specification/tree/master/specification/trace/semantic_conventions +//! +//! ## Usage +//! +//! ``` +//! use opentelemetry::{global, trace::Tracer as _}; +//! use opentelemetry_semantic_conventions as semcov; +//! +//! let tracer = global::tracer("my-component"); +//! let _span = tracer +//! .span_builder("span-name") +//! .with_attributes(vec![ +//! semcov::trace::NET_PEER_NAME.string("example.org"), +//! semcov::trace::NET_PEER_PORT.i64(80), +//! ]) +//! .start(&tracer); +//! ``` diff -Nru temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/scripts/templates/semantic_attributes.rs.j2 temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/scripts/templates/semantic_attributes.rs.j2 --- temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/scripts/templates/semantic_attributes.rs.j2 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/scripts/templates/semantic_attributes.rs.j2 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,32 @@ +// DO NOT EDIT, this is an auto-generated file +// +// If you want to update the file: +// - Edit the template at scripts{{template}} +// - Run the script at scripts/generate-consts-from-spec.sh + +{% include 'header_' + conventions + '.rs' %} + +use opentelemetry::Key; + +{%- for attribute in attributes if attribute.is_local and not attribute.ref %} + +/// {% filter escape %}{{attribute.brief | to_doc_brief}}.{% endfilter %} +{%- if attribute.note %} +/// +{%- for line in attribute.note.split('\n') %} +/// {% filter escape %}{{line}}{% endfilter %} +{%- endfor %} +{%- endif %} +{%- if attribute.examples %} +/// +/// # Examples +/// +{%- for example in attribute.examples %} +/// - `{{example}}` +{%- endfor %} +{%- endif %} +{%- if (attribute.stability | string()) == "StabilityLevel.DEPRECATED" %} +#[deprecated] +{%- endif %} +pub const {{attribute.fqn | to_const_name}}: Key = Key::from_static_str("{{attribute.fqn}}"); +{%- endfor %} diff -Nru temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/src/lib.rs temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/src/lib.rs --- temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,23 @@ +//! OpenTelemetry semantic conventions are agreed standardized naming patterns +//! for OpenTelemetry things. This crate aims to be the centralized place to +//! interact with these conventions. +#![warn( + future_incompatible, + missing_debug_implementations, + missing_docs, + nonstandard_style, + rust_2018_idioms, + unreachable_pub, + unused +)] +#![cfg_attr(test, deny(warnings))] +#![doc( + html_logo_url = "https://raw.githubusercontent.com/open-telemetry/opentelemetry-rust/main/assets/logo.svg" +)] + +pub mod resource; +pub mod trace; + +/// The schema URL that matches the version of the semantic conventions that +/// this crate defines. +pub const SCHEMA_URL: &str = "https://opentelemetry.io/schemas/1.21.0"; diff -Nru temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/src/resource.rs temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/src/resource.rs --- temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/src/resource.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/src/resource.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,885 @@ +// DO NOT EDIT, this is an auto-generated file +// +// If you want to update the file: +// - Edit the template at scripts/templates/semantic_attributes.rs.j2 +// - Run the script at scripts/generate-consts-from-spec.sh + +//! # Resource Semantic Conventions +//! +//! The [resource semantic conventions] define a set of standardized attributes +//! to be used in `Resource`s. +//! +//! [resource semantic conventions]: https://github.com/open-telemetry/opentelemetry-specification/tree/master/specification/resource/semantic_conventions +//! +//! ## Usage +//! +//! ``` +//! use opentelemetry::sdk; +//! use opentelemetry_semantic_conventions as semconv; +//! +//! let _tracer = sdk::trace::TracerProvider::builder() +//! .with_config(sdk::trace::config().with_resource(sdk::Resource::new(vec![ +//! semconv::resource::SERVICE_NAME.string("my-service"), +//! semconv::resource::SERVICE_NAMESPACE.string("my-namespace"), +//! ]))) +//! .build(); +//! ``` + +use opentelemetry::Key; + +/// Array of brand name and version separated by a space. +/// +/// This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.brands`). +/// +/// # Examples +/// +/// - ` Not A;Brand 99` +/// - `Chromium 99` +/// - `Chrome 99` +pub const BROWSER_BRANDS: Key = Key::from_static_str("browser.brands"); + +/// The platform on which the browser is running. +/// +/// This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.platform`). If unavailable, the legacy `navigator.platform` API SHOULD NOT be used instead and this attribute SHOULD be left unset in order for the values to be consistent. +/// The list of possible values is defined in the [W3C User-Agent Client Hints specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). Note that some (but not all) of these values can overlap with values in the [`os.type` and `os.name` attributes](./os.md). However, for consistency, the values in the `browser.platform` attribute should capture the exact value that the user agent provides. +/// +/// # Examples +/// +/// - `Windows` +/// - `macOS` +/// - `Android` +pub const BROWSER_PLATFORM: Key = Key::from_static_str("browser.platform"); + +/// A boolean that is true if the browser is running on a mobile device. +/// +/// This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.mobile`). If unavailable, this attribute SHOULD be left unset. +pub const BROWSER_MOBILE: Key = Key::from_static_str("browser.mobile"); + +/// Preferred language of the user using the browser. +/// +/// This value is intended to be taken from the Navigator API `navigator.language`. +/// +/// # Examples +/// +/// - `en` +/// - `en-US` +/// - `fr` +/// - `fr-FR` +pub const BROWSER_LANGUAGE: Key = Key::from_static_str("browser.language"); + +/// Name of the cloud provider. +pub const CLOUD_PROVIDER: Key = Key::from_static_str("cloud.provider"); + +/// The cloud account ID the resource is assigned to. +/// +/// # Examples +/// +/// - `111111111111` +/// - `opentelemetry` +pub const CLOUD_ACCOUNT_ID: Key = Key::from_static_str("cloud.account.id"); + +/// The geographical region the resource is running. +/// +/// Refer to your provider's docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/en-us/global-infrastructure/geographies/), [Google Cloud regions](https://cloud.google.com/about/locations), or [Tencent Cloud regions](https://www.tencentcloud.com/document/product/213/6091). +/// +/// # Examples +/// +/// - `us-central1` +/// - `us-east-1` +pub const CLOUD_REGION: Key = Key::from_static_str("cloud.region"); + +/// Cloud provider-specific native identifier of the monitored cloud resource (e.g. an [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) on AWS, a [fully qualified resource ID](https://learn.microsoft.com/en-us/rest/api/resources/resources/get-by-id) on Azure, a [full resource name](https://cloud.google.com/apis/design/resource_names#full_resource_name) on GCP). +/// +/// On some cloud providers, it may not be possible to determine the full ID at startup, +/// so it may be necessary to set `cloud.resource_id` as a span attribute instead. +/// +/// The exact value to use for `cloud.resource_id` depends on the cloud provider. +/// The following well-known definitions MUST be used if you set this attribute and they apply: +/// +/// * **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). +/// Take care not to use the "invoked ARN" directly but replace any +/// [alias suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) +/// with the resolved function version, as the same runtime instance may be invokable with +/// multiple different aliases. +/// * **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names) +/// * **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id) of the invoked function, +/// *not* the function app, having the form +/// `/subscriptions/<SUBSCIPTION_GUID>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<FUNCAPP>/functions/<FUNC>`. +/// This means that a span attribute MUST be used, as an Azure function app can host multiple functions that would usually share +/// a TracerProvider. +/// +/// # Examples +/// +/// - `arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function` +/// - `//run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID` +/// - `/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/` +pub const CLOUD_RESOURCE_ID: Key = Key::from_static_str("cloud.resource_id"); + +/// Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running. +/// +/// Availability zones are called "zones" on Alibaba Cloud and Google Cloud. +/// +/// # Examples +/// +/// - `us-east-1c` +pub const CLOUD_AVAILABILITY_ZONE: Key = Key::from_static_str("cloud.availability_zone"); + +/// The cloud platform in use. +/// +/// The prefix of the service SHOULD match the one specified in `cloud.provider`. +pub const CLOUD_PLATFORM: Key = Key::from_static_str("cloud.platform"); + +/// The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). +/// +/// # Examples +/// +/// - `arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9` +pub const AWS_ECS_CONTAINER_ARN: Key = Key::from_static_str("aws.ecs.container.arn"); + +/// The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). +/// +/// # Examples +/// +/// - `arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster` +pub const AWS_ECS_CLUSTER_ARN: Key = Key::from_static_str("aws.ecs.cluster.arn"); + +/// The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. +pub const AWS_ECS_LAUNCHTYPE: Key = Key::from_static_str("aws.ecs.launchtype"); + +/// The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html). +/// +/// # Examples +/// +/// - `arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b` +pub const AWS_ECS_TASK_ARN: Key = Key::from_static_str("aws.ecs.task.arn"); + +/// The task definition family this task definition is a member of. +/// +/// # Examples +/// +/// - `opentelemetry-family` +pub const AWS_ECS_TASK_FAMILY: Key = Key::from_static_str("aws.ecs.task.family"); + +/// The revision for this task definition. +/// +/// # Examples +/// +/// - `8` +/// - `26` +pub const AWS_ECS_TASK_REVISION: Key = Key::from_static_str("aws.ecs.task.revision"); + +/// The ARN of an EKS cluster. +/// +/// # Examples +/// +/// - `arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster` +pub const AWS_EKS_CLUSTER_ARN: Key = Key::from_static_str("aws.eks.cluster.arn"); + +/// The name(s) of the AWS log group(s) an application is writing to. +/// +/// Multiple log groups must be supported for cases like multi-container applications, where a single application has sidecar containers, and each write to their own log group. +/// +/// # Examples +/// +/// - `/aws/lambda/my-function` +/// - `opentelemetry-service` +pub const AWS_LOG_GROUP_NAMES: Key = Key::from_static_str("aws.log.group.names"); + +/// The Amazon Resource Name(s) (ARN) of the AWS log group(s). +/// +/// See the [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). +/// +/// # Examples +/// +/// - `arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*` +pub const AWS_LOG_GROUP_ARNS: Key = Key::from_static_str("aws.log.group.arns"); + +/// The name(s) of the AWS log stream(s) an application is writing to. +/// +/// # Examples +/// +/// - `logs/main/10838bed-421f-43ef-870a-f43feacbbb5b` +pub const AWS_LOG_STREAM_NAMES: Key = Key::from_static_str("aws.log.stream.names"); + +/// The ARN(s) of the AWS log stream(s). +/// +/// See the [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). One log group can contain several log streams, so these ARNs necessarily identify both a log group and a log stream. +/// +/// # Examples +/// +/// - `arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b` +pub const AWS_LOG_STREAM_ARNS: Key = Key::from_static_str("aws.log.stream.arns"); + +/// The name of the Cloud Run [execution](https://cloud.google.com/run/docs/managing/job-executions) being run for the Job, as set by the [`CLOUD_RUN_EXECUTION`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable. +/// +/// # Examples +/// +/// - `job-name-xxxx` +/// - `sample-job-mdw84` +pub const GCP_CLOUD_RUN_JOB_EXECUTION: Key = Key::from_static_str("gcp.cloud_run.job.execution"); + +/// The index for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable. +/// +/// # Examples +/// +/// - `0` +/// - `1` +pub const GCP_CLOUD_RUN_JOB_TASK_INDEX: Key = Key::from_static_str("gcp.cloud_run.job.task_index"); + +/// The instance name of a GCE instance. This is the value provided by `host.name`, the visible name of the instance in the Cloud Console UI, and the prefix for the default hostname of the instance as defined by the [default internal DNS name](https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names). +/// +/// # Examples +/// +/// - `instance-1` +/// - `my-vm-name` +pub const GCP_GCE_INSTANCE_NAME: Key = Key::from_static_str("gcp.gce.instance.name"); + +/// The hostname of a GCE instance. This is the full value of the default or [custom hostname](https://cloud.google.com/compute/docs/instances/custom-hostname-vm). +/// +/// # Examples +/// +/// - `my-host1234.example.com` +/// - `sample-vm.us-west1-b.c.my-project.internal` +pub const GCP_GCE_INSTANCE_HOSTNAME: Key = Key::from_static_str("gcp.gce.instance.hostname"); + +/// Time and date the release was created. +/// +/// # Examples +/// +/// - `2022-10-23T18:00:42Z` +pub const HEROKU_RELEASE_CREATION_TIMESTAMP: Key = + Key::from_static_str("heroku.release.creation_timestamp"); + +/// Commit hash for the current release. +/// +/// # Examples +/// +/// - `e6134959463efd8966b20e75b913cafe3f5ec` +pub const HEROKU_RELEASE_COMMIT: Key = Key::from_static_str("heroku.release.commit"); + +/// Unique identifier for the application. +/// +/// # Examples +/// +/// - `2daa2797-e42b-4624-9322-ec3f968df4da` +pub const HEROKU_APP_ID: Key = Key::from_static_str("heroku.app.id"); + +/// Container name used by container runtime. +/// +/// # Examples +/// +/// - `opentelemetry-autoconf` +pub const CONTAINER_NAME: Key = Key::from_static_str("container.name"); + +/// Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/reference/run/#container-identification). The UUID might be abbreviated. +/// +/// # Examples +/// +/// - `a3bf90e006b2` +pub const CONTAINER_ID: Key = Key::from_static_str("container.id"); + +/// The container runtime managing this container. +/// +/// # Examples +/// +/// - `docker` +/// - `containerd` +/// - `rkt` +pub const CONTAINER_RUNTIME: Key = Key::from_static_str("container.runtime"); + +/// Name of the image the container was built on. +/// +/// # Examples +/// +/// - `gcr.io/opentelemetry/operator` +pub const CONTAINER_IMAGE_NAME: Key = Key::from_static_str("container.image.name"); + +/// Container image tag. +/// +/// # Examples +/// +/// - `0.1` +pub const CONTAINER_IMAGE_TAG: Key = Key::from_static_str("container.image.tag"); + +/// Runtime specific image identifier. Usually a hash algorithm followed by a UUID. +/// +/// Docker defines a sha256 of the image id; `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect) endpoint. +/// K8s defines a link to the container registry repository with digest `"imageID": "registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"`. +/// OCI defines a digest of manifest. +/// +/// # Examples +/// +/// - `sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f` +pub const CONTAINER_IMAGE_ID: Key = Key::from_static_str("container.image.id"); + +/// The command used to run the container (i.e. the command name). +/// +/// If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage. +/// +/// # Examples +/// +/// - `otelcontribcol` +pub const CONTAINER_COMMAND: Key = Key::from_static_str("container.command"); + +/// The full command run by the container as a single string representing the full command. +/// +/// # Examples +/// +/// - `otelcontribcol --config config.yaml` +pub const CONTAINER_COMMAND_LINE: Key = Key::from_static_str("container.command_line"); + +/// All the command arguments (including the command/executable itself) run by the container. +/// +/// # Examples +/// +/// - `otelcontribcol, --config, config.yaml` +pub const CONTAINER_COMMAND_ARGS: Key = Key::from_static_str("container.command_args"); + +/// Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier). +/// +/// # Examples +/// +/// - `staging` +/// - `production` +pub const DEPLOYMENT_ENVIRONMENT: Key = Key::from_static_str("deployment.environment"); + +/// A unique identifier representing the device. +/// +/// The device identifier MUST only be defined using the values outlined below. This value is not an advertising identifier and MUST NOT be used as such. On iOS (Swift or Objective-C), this value MUST be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android (Java or Kotlin), this value MUST be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. More information can be found [here](https://developer.android.com/training/articles/user-data-ids) on best practices and exact implementation details. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply, ensure you do your own due diligence. +/// +/// # Examples +/// +/// - `2ab2916d-a51f-4ac8-80ee-45ac31a28092` +pub const DEVICE_ID: Key = Key::from_static_str("device.id"); + +/// The model identifier for the device. +/// +/// It's recommended this value represents a machine readable version of the model identifier rather than the market or consumer-friendly name of the device. +/// +/// # Examples +/// +/// - `iPhone3,4` +/// - `SM-G920F` +pub const DEVICE_MODEL_IDENTIFIER: Key = Key::from_static_str("device.model.identifier"); + +/// The marketing name for the device model. +/// +/// It's recommended this value represents a human readable version of the device model rather than a machine readable alternative. +/// +/// # Examples +/// +/// - `iPhone 6s Plus` +/// - `Samsung Galaxy S6` +pub const DEVICE_MODEL_NAME: Key = Key::from_static_str("device.model.name"); + +/// The name of the device manufacturer. +/// +/// The Android OS provides this field via [Build](https://developer.android.com/reference/android/os/Build#MANUFACTURER). iOS apps SHOULD hardcode the value `Apple`. +/// +/// # Examples +/// +/// - `Apple` +/// - `Samsung` +pub const DEVICE_MANUFACTURER: Key = Key::from_static_str("device.manufacturer"); + +/// The name of the single function that this runtime instance executes. +/// +/// This is the name of the function as configured/deployed on the FaaS +/// platform and is usually different from the name of the callback +/// function (which may be stored in the +/// [`code.namespace`/`code.function`](/docs/general/general-attributes.md#source-code-attributes) +/// span attributes). +/// +/// For some cloud providers, the above definition is ambiguous. The following +/// definition of function name MUST be used for this attribute +/// (and consequently the span name) for the listed cloud providers/products: +/// +/// * **Azure:** The full name `<FUNCAPP>/<FUNC>`, i.e., function app name +/// followed by a forward slash followed by the function name (this form +/// can also be seen in the resource JSON for the function). +/// This means that a span attribute MUST be used, as an Azure function +/// app can host multiple functions that would usually share +/// a TracerProvider (see also the `cloud.resource_id` attribute). +/// +/// # Examples +/// +/// - `my-function` +/// - `myazurefunctionapp/some-function-name` +pub const FAAS_NAME: Key = Key::from_static_str("faas.name"); + +/// The immutable version of the function being executed. +/// +/// Depending on the cloud provider and platform, use: +/// +/// * **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) +/// (an integer represented as a decimal string). +/// * **Google Cloud Run (Services):** The [revision](https://cloud.google.com/run/docs/managing/revisions) +/// (i.e., the function name plus the revision suffix). +/// * **Google Cloud Functions:** The value of the +/// [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically). +/// * **Azure Functions:** Not applicable. Do not set this attribute. +/// +/// # Examples +/// +/// - `26` +/// - `pinkfroid-00002` +pub const FAAS_VERSION: Key = Key::from_static_str("faas.version"); + +/// The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version. +/// +/// * **AWS Lambda:** Use the (full) log stream name. +/// +/// # Examples +/// +/// - `2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de` +pub const FAAS_INSTANCE: Key = Key::from_static_str("faas.instance"); + +/// The amount of memory available to the serverless function converted to Bytes. +/// +/// It's recommended to set this attribute since e.g. too little memory can easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information (which must be multiplied by 1,048,576). +/// +/// # Examples +/// +/// - `134217728` +pub const FAAS_MAX_MEMORY: Key = Key::from_static_str("faas.max_memory"); + +/// Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. For non-containerized systems, this should be the `machine-id`. See the table below for the sources to use to determine the `machine-id` based on operating system. +/// +/// # Examples +/// +/// - `fdbf79e8af94cb7f9e8df36789187052` +pub const HOST_ID: Key = Key::from_static_str("host.id"); + +/// Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user. +/// +/// # Examples +/// +/// - `opentelemetry-test` +pub const HOST_NAME: Key = Key::from_static_str("host.name"); + +/// Type of host. For Cloud, this must be the machine type. +/// +/// # Examples +/// +/// - `n1-standard-1` +pub const HOST_TYPE: Key = Key::from_static_str("host.type"); + +/// The CPU architecture the host system is running on. +pub const HOST_ARCH: Key = Key::from_static_str("host.arch"); + +/// Name of the VM image or OS install the host was instantiated from. +/// +/// # Examples +/// +/// - `infra-ami-eks-worker-node-7d4ec78312` +/// - `CentOS-8-x86_64-1905` +pub const HOST_IMAGE_NAME: Key = Key::from_static_str("host.image.name"); + +/// VM image ID or host OS image ID. For Cloud, this value is from the provider. +/// +/// # Examples +/// +/// - `ami-07b06b442921831e5` +pub const HOST_IMAGE_ID: Key = Key::from_static_str("host.image.id"); + +/// The version string of the VM image or host OS as defined in [Version Attributes](README.md#version-attributes). +/// +/// # Examples +/// +/// - `0.1` +pub const HOST_IMAGE_VERSION: Key = Key::from_static_str("host.image.version"); + +/// The name of the cluster. +/// +/// # Examples +/// +/// - `opentelemetry-cluster` +pub const K8S_CLUSTER_NAME: Key = Key::from_static_str("k8s.cluster.name"); + +/// A pseudo-ID for the cluster, set to the UID of the `kube-system` namespace. +/// +/// K8s does not have support for obtaining a cluster ID. If this is ever +/// added, we will recommend collecting the `k8s.cluster.uid` through the +/// official APIs. In the meantime, we are able to use the `uid` of the +/// `kube-system` namespace as a proxy for cluster ID. Read on for the +/// rationale. +/// +/// Every object created in a K8s cluster is assigned a distinct UID. The +/// `kube-system` namespace is used by Kubernetes itself and will exist +/// for the lifetime of the cluster. Using the `uid` of the `kube-system` +/// namespace is a reasonable proxy for the K8s ClusterID as it will only +/// change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are +/// UUIDs as standardized by +/// [ISO/IEC 9834-8 and ITU-T X.667](https://www.itu.int/ITU-T/studygroups/com17/oid.html). +/// Which states: +/// +/// > If generated according to one of the mechanisms defined in Rec. +/// ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be +/// different from all other UUIDs generated before 3603 A.D., or is +/// extremely likely to be different (depending on the mechanism chosen). +/// +/// Therefore, UIDs between clusters should be extremely unlikely to +/// conflict. +/// +/// # Examples +/// +/// - `218fc5a9-a5f1-4b54-aa05-46717d0ab26d` +pub const K8S_CLUSTER_UID: Key = Key::from_static_str("k8s.cluster.uid"); + +/// The name of the Node. +/// +/// # Examples +/// +/// - `node-1` +pub const K8S_NODE_NAME: Key = Key::from_static_str("k8s.node.name"); + +/// The UID of the Node. +/// +/// # Examples +/// +/// - `1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2` +pub const K8S_NODE_UID: Key = Key::from_static_str("k8s.node.uid"); + +/// The name of the namespace that the pod is running in. +/// +/// # Examples +/// +/// - `default` +pub const K8S_NAMESPACE_NAME: Key = Key::from_static_str("k8s.namespace.name"); + +/// The UID of the Pod. +/// +/// # Examples +/// +/// - `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` +pub const K8S_POD_UID: Key = Key::from_static_str("k8s.pod.uid"); + +/// The name of the Pod. +/// +/// # Examples +/// +/// - `opentelemetry-pod-autoconf` +pub const K8S_POD_NAME: Key = Key::from_static_str("k8s.pod.name"); + +/// The name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (`container.name`). +/// +/// # Examples +/// +/// - `redis` +pub const K8S_CONTAINER_NAME: Key = Key::from_static_str("k8s.container.name"); + +/// Number of times the container was restarted. This attribute can be used to identify a particular container (running or stopped) within a container spec. +/// +/// # Examples +/// +/// - `0` +/// - `2` +pub const K8S_CONTAINER_RESTART_COUNT: Key = Key::from_static_str("k8s.container.restart_count"); + +/// The UID of the ReplicaSet. +/// +/// # Examples +/// +/// - `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` +pub const K8S_REPLICASET_UID: Key = Key::from_static_str("k8s.replicaset.uid"); + +/// The name of the ReplicaSet. +/// +/// # Examples +/// +/// - `opentelemetry` +pub const K8S_REPLICASET_NAME: Key = Key::from_static_str("k8s.replicaset.name"); + +/// The UID of the Deployment. +/// +/// # Examples +/// +/// - `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` +pub const K8S_DEPLOYMENT_UID: Key = Key::from_static_str("k8s.deployment.uid"); + +/// The name of the Deployment. +/// +/// # Examples +/// +/// - `opentelemetry` +pub const K8S_DEPLOYMENT_NAME: Key = Key::from_static_str("k8s.deployment.name"); + +/// The UID of the StatefulSet. +/// +/// # Examples +/// +/// - `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` +pub const K8S_STATEFULSET_UID: Key = Key::from_static_str("k8s.statefulset.uid"); + +/// The name of the StatefulSet. +/// +/// # Examples +/// +/// - `opentelemetry` +pub const K8S_STATEFULSET_NAME: Key = Key::from_static_str("k8s.statefulset.name"); + +/// The UID of the DaemonSet. +/// +/// # Examples +/// +/// - `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` +pub const K8S_DAEMONSET_UID: Key = Key::from_static_str("k8s.daemonset.uid"); + +/// The name of the DaemonSet. +/// +/// # Examples +/// +/// - `opentelemetry` +pub const K8S_DAEMONSET_NAME: Key = Key::from_static_str("k8s.daemonset.name"); + +/// The UID of the Job. +/// +/// # Examples +/// +/// - `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` +pub const K8S_JOB_UID: Key = Key::from_static_str("k8s.job.uid"); + +/// The name of the Job. +/// +/// # Examples +/// +/// - `opentelemetry` +pub const K8S_JOB_NAME: Key = Key::from_static_str("k8s.job.name"); + +/// The UID of the CronJob. +/// +/// # Examples +/// +/// - `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` +pub const K8S_CRONJOB_UID: Key = Key::from_static_str("k8s.cronjob.uid"); + +/// The name of the CronJob. +/// +/// # Examples +/// +/// - `opentelemetry` +pub const K8S_CRONJOB_NAME: Key = Key::from_static_str("k8s.cronjob.name"); + +/// The operating system type. +pub const OS_TYPE: Key = Key::from_static_str("os.type"); + +/// Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. +/// +/// # Examples +/// +/// - `Microsoft Windows [Version 10.0.18363.778]` +/// - `Ubuntu 18.04.1 LTS` +pub const OS_DESCRIPTION: Key = Key::from_static_str("os.description"); + +/// Human readable operating system name. +/// +/// # Examples +/// +/// - `iOS` +/// - `Android` +/// - `Ubuntu` +pub const OS_NAME: Key = Key::from_static_str("os.name"); + +/// The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). +/// +/// # Examples +/// +/// - `14.2.1` +/// - `18.04.1` +pub const OS_VERSION: Key = Key::from_static_str("os.version"); + +/// Process identifier (PID). +/// +/// # Examples +/// +/// - `1234` +pub const PROCESS_PID: Key = Key::from_static_str("process.pid"); + +/// Parent Process identifier (PID). +/// +/// # Examples +/// +/// - `111` +pub const PROCESS_PARENT_PID: Key = Key::from_static_str("process.parent_pid"); + +/// The name of the process executable. On Linux based systems, can be set to the `Name` in `proc/[pid]/status`. On Windows, can be set to the base name of `GetProcessImageFileNameW`. +/// +/// # Examples +/// +/// - `otelcol` +pub const PROCESS_EXECUTABLE_NAME: Key = Key::from_static_str("process.executable.name"); + +/// The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`. +/// +/// # Examples +/// +/// - `/usr/bin/cmd/otelcol` +pub const PROCESS_EXECUTABLE_PATH: Key = Key::from_static_str("process.executable.path"); + +/// The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`. +/// +/// # Examples +/// +/// - `cmd/otelcol` +pub const PROCESS_COMMAND: Key = Key::from_static_str("process.command"); + +/// The full command used to launch the process as a single string representing the full command. On Windows, can be set to the result of `GetCommandLineW`. Do not set this if you have to assemble it just for monitoring; use `process.command_args` instead. +/// +/// # Examples +/// +/// - `C:\cmd\otecol --config="my directory\config.yaml"` +pub const PROCESS_COMMAND_LINE: Key = Key::from_static_str("process.command_line"); + +/// All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`. +/// +/// # Examples +/// +/// - `cmd/otecol` +/// - `--config=config.yaml` +pub const PROCESS_COMMAND_ARGS: Key = Key::from_static_str("process.command_args"); + +/// The username of the user that owns the process. +/// +/// # Examples +/// +/// - `root` +pub const PROCESS_OWNER: Key = Key::from_static_str("process.owner"); + +/// The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler. +/// +/// # Examples +/// +/// - `OpenJDK Runtime Environment` +pub const PROCESS_RUNTIME_NAME: Key = Key::from_static_str("process.runtime.name"); + +/// The version of the runtime of this process, as returned by the runtime without modification. +/// +/// # Examples +/// +/// - `14.0.2` +pub const PROCESS_RUNTIME_VERSION: Key = Key::from_static_str("process.runtime.version"); + +/// An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. +/// +/// # Examples +/// +/// - `Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0` +pub const PROCESS_RUNTIME_DESCRIPTION: Key = Key::from_static_str("process.runtime.description"); + +/// Logical name of the service. +/// +/// MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md#process), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value MUST be set to `unknown_service`. +/// +/// # Examples +/// +/// - `shoppingcart` +pub const SERVICE_NAME: Key = Key::from_static_str("service.name"); + +/// The version string of the service API or implementation. The format is not defined by these conventions. +/// +/// # Examples +/// +/// - `2.0.0` +/// - `a01dbef8a` +pub const SERVICE_VERSION: Key = Key::from_static_str("service.version"); + +/// A namespace for `service.name`. +/// +/// A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace. +/// +/// # Examples +/// +/// - `Shop` +pub const SERVICE_NAMESPACE: Key = Key::from_static_str("service.namespace"); + +/// The string ID of the service instance. +/// +/// MUST be unique for each instance of the same `service.namespace,service.name` pair (in other words `service.namespace,service.name,service.instance.id` triplet MUST be globally unique). The ID helps to distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled service). It is preferable for the ID to be persistent and stay the same for the lifetime of the service instance, however it is acceptable that the ID is ephemeral and changes during important lifetime events for the service (e.g. service restarts). If the service has no inherent unique ID that can be used as the value of this attribute it is recommended to generate a random Version 1 or Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use Version 5, see RFC 4122 for more recommendations). +/// +/// # Examples +/// +/// - `my-k8s-pod-deployment-1` +/// - `627cc493-f310-47de-96bd-71410b7dec09` +pub const SERVICE_INSTANCE_ID: Key = Key::from_static_str("service.instance.id"); + +/// The name of the telemetry SDK as defined above. +/// +/// The OpenTelemetry SDK MUST set the `telemetry.sdk.name` attribute to `opentelemetry`. +/// If another SDK, like a fork or a vendor-provided implementation, is used, this SDK MUST set the +/// `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point +/// or another suitable identifier depending on the language. +/// The identifier `opentelemetry` is reserved and MUST NOT be used in this case. +/// All custom identifiers SHOULD be stable across different versions of an implementation. +/// +/// # Examples +/// +/// - `opentelemetry` +pub const TELEMETRY_SDK_NAME: Key = Key::from_static_str("telemetry.sdk.name"); + +/// The language of the telemetry SDK. +pub const TELEMETRY_SDK_LANGUAGE: Key = Key::from_static_str("telemetry.sdk.language"); + +/// The version string of the telemetry SDK. +/// +/// # Examples +/// +/// - `1.2.3` +pub const TELEMETRY_SDK_VERSION: Key = Key::from_static_str("telemetry.sdk.version"); + +/// The version string of the auto instrumentation agent, if used. +/// +/// # Examples +/// +/// - `1.2.3` +pub const TELEMETRY_AUTO_VERSION: Key = Key::from_static_str("telemetry.auto.version"); + +/// The name of the web engine. +/// +/// # Examples +/// +/// - `WildFly` +pub const WEBENGINE_NAME: Key = Key::from_static_str("webengine.name"); + +/// The version of the web engine. +/// +/// # Examples +/// +/// - `21.0.0` +pub const WEBENGINE_VERSION: Key = Key::from_static_str("webengine.version"); + +/// Additional description of the web engine (e.g. detailed version and edition information). +/// +/// # Examples +/// +/// - `WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final` +pub const WEBENGINE_DESCRIPTION: Key = Key::from_static_str("webengine.description"); + +/// The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP). +/// +/// # Examples +/// +/// - `io.opentelemetry.contrib.mongodb` +pub const OTEL_SCOPE_NAME: Key = Key::from_static_str("otel.scope.name"); + +/// The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP). +/// +/// # Examples +/// +/// - `1.0.0` +pub const OTEL_SCOPE_VERSION: Key = Key::from_static_str("otel.scope.version"); + +/// Deprecated, use the `otel.scope.name` attribute. +/// +/// # Examples +/// +/// - `io.opentelemetry.contrib.mongodb` +#[deprecated] +pub const OTEL_LIBRARY_NAME: Key = Key::from_static_str("otel.library.name"); + +/// Deprecated, use the `otel.scope.version` attribute. +/// +/// # Examples +/// +/// - `1.0.0` +#[deprecated] +pub const OTEL_LIBRARY_VERSION: Key = Key::from_static_str("otel.library.version"); diff -Nru temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/src/trace.rs temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/src/trace.rs --- temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/src/trace.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/opentelemetry-semantic-conventions/src/trace.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1637 @@ +// DO NOT EDIT, this is an auto-generated file +// +// If you want to update the file: +// - Edit the template at scripts/templates/semantic_attributes.rs.j2 +// - Run the script at scripts/generate-consts-from-spec.sh + +//! # Trace Semantic Conventions +//! +//! The [trace semantic conventions] define a set of standardized attributes to +//! be used in `Span`s. +//! +//! [trace semantic conventions]: https://github.com/open-telemetry/opentelemetry-specification/tree/master/specification/trace/semantic_conventions +//! +//! ## Usage +//! +//! ``` +//! use opentelemetry::{global, trace::Tracer as _}; +//! use opentelemetry_semantic_conventions as semcov; +//! +//! let tracer = global::tracer("my-component"); +//! let _span = tracer +//! .span_builder("span-name") +//! .with_attributes(vec![ +//! semcov::trace::NET_PEER_NAME.string("example.org"), +//! semcov::trace::NET_PEER_PORT.i64(80), +//! ]) +//! .start(&tracer); +//! ``` + +use opentelemetry::Key; + +/// Client address - unix domain socket name, IPv4 or IPv6 address. +/// +/// When observed from the server side, and when communicating through an intermediary, `client.address` SHOULD represent client address behind any intermediaries (e.g. proxies) if it's available. +/// +/// # Examples +/// +/// - `/tmp/my.sock` +/// - `10.1.2.80` +pub const CLIENT_ADDRESS: Key = Key::from_static_str("client.address"); + +/// Client port number. +/// +/// When observed from the server side, and when communicating through an intermediary, `client.port` SHOULD represent client port behind any intermediaries (e.g. proxies) if it's available. +/// +/// # Examples +/// +/// - `65123` +pub const CLIENT_PORT: Key = Key::from_static_str("client.port"); + +/// Immediate client peer address - unix domain socket name, IPv4 or IPv6 address. +/// +/// # Examples +/// +/// - `/tmp/my.sock` +/// - `127.0.0.1` +pub const CLIENT_SOCKET_ADDRESS: Key = Key::from_static_str("client.socket.address"); + +/// Immediate client peer port number. +/// +/// # Examples +/// +/// - `35555` +pub const CLIENT_SOCKET_PORT: Key = Key::from_static_str("client.socket.port"); + +/// Deprecated, use `http.request.method` instead. +/// +/// # Examples +/// +/// - `GET` +/// - `POST` +/// - `HEAD` +#[deprecated] +pub const HTTP_METHOD: Key = Key::from_static_str("http.method"); + +/// Deprecated, use `http.response.status_code` instead. +/// +/// # Examples +/// +/// - `200` +#[deprecated] +pub const HTTP_STATUS_CODE: Key = Key::from_static_str("http.status_code"); + +/// Deprecated, use `url.scheme` instead. +/// +/// # Examples +/// +/// - `http` +/// - `https` +#[deprecated] +pub const HTTP_SCHEME: Key = Key::from_static_str("http.scheme"); + +/// Deprecated, use `url.full` instead. +/// +/// # Examples +/// +/// - `https://www.foo.bar/search?q=OpenTelemetry#SemConv` +#[deprecated] +pub const HTTP_URL: Key = Key::from_static_str("http.url"); + +/// Deprecated, use `url.path` and `url.query` instead. +/// +/// # Examples +/// +/// - `/search?q=OpenTelemetry#SemConv` +#[deprecated] +pub const HTTP_TARGET: Key = Key::from_static_str("http.target"); + +/// Deprecated, use `http.request.body.size` instead. +/// +/// # Examples +/// +/// - `3495` +#[deprecated] +pub const HTTP_REQUEST_CONTENT_LENGTH: Key = Key::from_static_str("http.request_content_length"); + +/// Deprecated, use `http.response.body.size` instead. +/// +/// # Examples +/// +/// - `3495` +#[deprecated] +pub const HTTP_RESPONSE_CONTENT_LENGTH: Key = Key::from_static_str("http.response_content_length"); + +/// Deprecated, use `server.socket.domain` on client spans. +/// +/// # Examples +/// +/// - `/var/my.sock` +#[deprecated] +pub const NET_SOCK_PEER_NAME: Key = Key::from_static_str("net.sock.peer.name"); + +/// Deprecated, use `server.socket.address` on client spans and `client.socket.address` on server spans. +/// +/// # Examples +/// +/// - `192.168.0.1` +#[deprecated] +pub const NET_SOCK_PEER_ADDR: Key = Key::from_static_str("net.sock.peer.addr"); + +/// Deprecated, use `server.socket.port` on client spans and `client.socket.port` on server spans. +/// +/// # Examples +/// +/// - `65531` +#[deprecated] +pub const NET_SOCK_PEER_PORT: Key = Key::from_static_str("net.sock.peer.port"); + +/// Deprecated, use `server.address` on client spans and `client.address` on server spans. +/// +/// # Examples +/// +/// - `example.com` +#[deprecated] +pub const NET_PEER_NAME: Key = Key::from_static_str("net.peer.name"); + +/// Deprecated, use `server.port` on client spans and `client.port` on server spans. +/// +/// # Examples +/// +/// - `8080` +#[deprecated] +pub const NET_PEER_PORT: Key = Key::from_static_str("net.peer.port"); + +/// Deprecated, use `server.address`. +/// +/// # Examples +/// +/// - `example.com` +#[deprecated] +pub const NET_HOST_NAME: Key = Key::from_static_str("net.host.name"); + +/// Deprecated, use `server.port`. +/// +/// # Examples +/// +/// - `8080` +#[deprecated] +pub const NET_HOST_PORT: Key = Key::from_static_str("net.host.port"); + +/// Deprecated, use `server.socket.address`. +/// +/// # Examples +/// +/// - `/var/my.sock` +#[deprecated] +pub const NET_SOCK_HOST_ADDR: Key = Key::from_static_str("net.sock.host.addr"); + +/// Deprecated, use `server.socket.port`. +/// +/// # Examples +/// +/// - `8080` +#[deprecated] +pub const NET_SOCK_HOST_PORT: Key = Key::from_static_str("net.sock.host.port"); + +/// Deprecated, use `network.transport`. +#[deprecated] +pub const NET_TRANSPORT: Key = Key::from_static_str("net.transport"); + +/// Deprecated, use `network.protocol.name`. +/// +/// # Examples +/// +/// - `amqp` +/// - `http` +/// - `mqtt` +#[deprecated] +pub const NET_PROTOCOL_NAME: Key = Key::from_static_str("net.protocol.name"); + +/// Deprecated, use `network.protocol.version`. +/// +/// # Examples +/// +/// - `3.1.1` +#[deprecated] +pub const NET_PROTOCOL_VERSION: Key = Key::from_static_str("net.protocol.version"); + +/// Deprecated, use `network.transport` and `network.type`. +#[deprecated] +pub const NET_SOCK_FAMILY: Key = Key::from_static_str("net.sock.family"); + +/// The domain name of the destination system. +/// +/// This value may be a host name, a fully qualified domain name, or another host naming format. +/// +/// # Examples +/// +/// - `foo.example.com` +pub const DESTINATION_DOMAIN: Key = Key::from_static_str("destination.domain"); + +/// Peer address, for example IP address or UNIX socket name. +/// +/// # Examples +/// +/// - `10.5.3.2` +pub const DESTINATION_ADDRESS: Key = Key::from_static_str("destination.address"); + +/// Peer port number. +/// +/// # Examples +/// +/// - `3389` +/// - `2888` +pub const DESTINATION_PORT: Key = Key::from_static_str("destination.port"); + +/// The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it. +/// +/// # Examples +/// +/// - `java.net.ConnectException` +/// - `OSError` +pub const EXCEPTION_TYPE: Key = Key::from_static_str("exception.type"); + +/// The exception message. +/// +/// # Examples +/// +/// - `Division by zero` +/// - `Can't convert 'int' object to str implicitly` +pub const EXCEPTION_MESSAGE: Key = Key::from_static_str("exception.message"); + +/// A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG. +/// +/// # Examples +/// +/// - `Exception in thread "main" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)` +pub const EXCEPTION_STACKTRACE: Key = Key::from_static_str("exception.stacktrace"); + +/// HTTP request method. +/// +/// HTTP request method value SHOULD be "known" to the instrumentation. +/// By default, this convention defines "known" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods) +/// and the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html). +/// +/// If the HTTP request method is not known to instrumentation, it MUST set the `http.request.method` attribute to `_OTHER` and, except if reporting a metric, MUST +/// set the exact method received in the request line as value of the `http.request.method_original` attribute. +/// +/// If the HTTP instrumentation could end up converting valid HTTP request methods to `_OTHER`, then it MUST provide a way to override +/// the list of known HTTP methods. If this override is done via environment variable, then the environment variable MUST be named +/// OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods +/// (this list MUST be a full override of the default known method, it is not a list of known methods in addition to the defaults). +/// +/// HTTP method names are case-sensitive and `http.request.method` attribute value MUST match a known HTTP method name exactly. +/// Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, SHOULD populate a canonical equivalent. +/// Tracing instrumentations that do so, MUST also set `http.request.method_original` to the original value. +/// +/// # Examples +/// +/// - `GET` +/// - `POST` +/// - `HEAD` +pub const HTTP_REQUEST_METHOD: Key = Key::from_static_str("http.request.method"); + +/// [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). +/// +/// # Examples +/// +/// - `200` +pub const HTTP_RESPONSE_STATUS_CODE: Key = Key::from_static_str("http.response.status_code"); + +/// The matched route (path template in the format used by the respective server framework). See note below. +/// +/// MUST NOT be populated when this is not supported by the HTTP server framework as the route attribute should have low-cardinality and the URI path can NOT substitute it. +/// SHOULD include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one. +/// +/// # Examples +/// +/// - `/users/:userID?` +/// - `{controller}/{action}/{id?}` +pub const HTTP_ROUTE: Key = Key::from_static_str("http.route"); + +/// The name identifies the event. +/// +/// # Examples +/// +/// - `click` +/// - `exception` +pub const EVENT_NAME: Key = Key::from_static_str("event.name"); + +/// The domain identifies the business context for the events. +/// +/// Events across different domains may have same `event.name`, yet be +/// unrelated events. +pub const EVENT_DOMAIN: Key = Key::from_static_str("event.domain"); + +/// A unique identifier for the Log Record. +/// +/// If an id is provided, other log records with the same id will be considered duplicates and can be removed safely. This means, that two distinguishable log records MUST have different values. +/// The id MAY be an [Universally Unique Lexicographically Sortable Identifier (ULID)](https://github.com/ulid/spec), but other identifiers (e.g. UUID) may be used as needed. +/// +/// # Examples +/// +/// - `01ARZ3NDEKTSV4RRFFQ69G5FAV` +pub const LOG_RECORD_UID: Key = Key::from_static_str("log.record.uid"); + +/// The stream associated with the log. See below for a list of well-known values. +pub const LOG_IOSTREAM: Key = Key::from_static_str("log.iostream"); + +/// The basename of the file. +/// +/// # Examples +/// +/// - `audit.log` +pub const LOG_FILE_NAME: Key = Key::from_static_str("log.file.name"); + +/// The full path to the file. +/// +/// # Examples +/// +/// - `/var/log/mysql/audit.log` +pub const LOG_FILE_PATH: Key = Key::from_static_str("log.file.path"); + +/// The basename of the file, with symlinks resolved. +/// +/// # Examples +/// +/// - `uuid.log` +pub const LOG_FILE_NAME_RESOLVED: Key = Key::from_static_str("log.file.name_resolved"); + +/// The full path to the file, with symlinks resolved. +/// +/// # Examples +/// +/// - `/var/lib/docker/uuid.log` +pub const LOG_FILE_PATH_RESOLVED: Key = Key::from_static_str("log.file.path_resolved"); + +/// The type of memory. +/// +/// # Examples +/// +/// - `heap` +/// - `non_heap` +pub const TYPE: Key = Key::from_static_str("type"); + +/// Name of the memory pool. +/// +/// Pool names are generally obtained via [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()). +/// +/// # Examples +/// +/// - `G1 Old Gen` +/// - `G1 Eden space` +/// - `G1 Survivor Space` +pub const POOL: Key = Key::from_static_str("pool"); + +/// Logical server hostname, matches server FQDN if available, and IP or socket address if FQDN is not known. +/// +/// # Examples +/// +/// - `example.com` +pub const SERVER_ADDRESS: Key = Key::from_static_str("server.address"); + +/// Logical server port number. +/// +/// # Examples +/// +/// - `80` +/// - `8080` +/// - `443` +pub const SERVER_PORT: Key = Key::from_static_str("server.port"); + +/// The domain name of an immediate peer. +/// +/// Typically observed from the client side, and represents a proxy or other intermediary domain name. +/// +/// # Examples +/// +/// - `proxy.example.com` +pub const SERVER_SOCKET_DOMAIN: Key = Key::from_static_str("server.socket.domain"); + +/// Physical server IP address or Unix socket address. If set from the client, should simply use the socket's peer address, and not attempt to find any actual server IP (i.e., if set from client, this may represent some proxy server instead of the logical server). +/// +/// # Examples +/// +/// - `10.5.3.2` +pub const SERVER_SOCKET_ADDRESS: Key = Key::from_static_str("server.socket.address"); + +/// Physical server port. +/// +/// # Examples +/// +/// - `16456` +pub const SERVER_SOCKET_PORT: Key = Key::from_static_str("server.socket.port"); + +/// The domain name of the source system. +/// +/// This value may be a host name, a fully qualified domain name, or another host naming format. +/// +/// # Examples +/// +/// - `foo.example.com` +pub const SOURCE_DOMAIN: Key = Key::from_static_str("source.domain"); + +/// Source address, for example IP address or Unix socket name. +/// +/// # Examples +/// +/// - `10.5.3.2` +pub const SOURCE_ADDRESS: Key = Key::from_static_str("source.address"); + +/// Source port number. +/// +/// # Examples +/// +/// - `3389` +/// - `2888` +pub const SOURCE_PORT: Key = Key::from_static_str("source.port"); + +/// The full invoked ARN as provided on the `Context` passed to the function (`Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` applicable). +/// +/// This may be different from `cloud.resource_id` if an alias is involved. +/// +/// # Examples +/// +/// - `arn:aws:lambda:us-east-1:123456:function:myfunction:myalias` +pub const AWS_LAMBDA_INVOKED_ARN: Key = Key::from_static_str("aws.lambda.invoked_arn"); + +/// The [event_id](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id) uniquely identifies the event. +/// +/// # Examples +/// +/// - `123e4567-e89b-12d3-a456-426614174000` +/// - `0001` +pub const CLOUDEVENTS_EVENT_ID: Key = Key::from_static_str("cloudevents.event_id"); + +/// The [source](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1) identifies the context in which an event happened. +/// +/// # Examples +/// +/// - `https://github.com/cloudevents` +/// - `/cloudevents/spec/pull/123` +/// - `my-service` +pub const CLOUDEVENTS_EVENT_SOURCE: Key = Key::from_static_str("cloudevents.event_source"); + +/// The [version of the CloudEvents specification](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion) which the event uses. +/// +/// # Examples +/// +/// - `1.0` +pub const CLOUDEVENTS_EVENT_SPEC_VERSION: Key = + Key::from_static_str("cloudevents.event_spec_version"); + +/// The [event_type](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type) contains a value describing the type of event related to the originating occurrence. +/// +/// # Examples +/// +/// - `com.github.pull_request.opened` +/// - `com.example.object.deleted.v2` +pub const CLOUDEVENTS_EVENT_TYPE: Key = Key::from_static_str("cloudevents.event_type"); + +/// The [subject](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject) of the event in the context of the event producer (identified by source). +/// +/// # Examples +/// +/// - `mynewfile.jpg` +pub const CLOUDEVENTS_EVENT_SUBJECT: Key = Key::from_static_str("cloudevents.event_subject"); + +/// Parent-child Reference type. +/// +/// The causal relationship between a child Span and a parent Span. +pub const OPENTRACING_REF_TYPE: Key = Key::from_static_str("opentracing.ref_type"); + +/// An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. +pub const DB_SYSTEM: Key = Key::from_static_str("db.system"); + +/// The connection string used to connect to the database. It is recommended to remove embedded credentials. +/// +/// # Examples +/// +/// - `Server=(localdb)\v11.0;Integrated Security=true;` +pub const DB_CONNECTION_STRING: Key = Key::from_static_str("db.connection_string"); + +/// Username for accessing the database. +/// +/// # Examples +/// +/// - `readonly_user` +/// - `reporting_user` +pub const DB_USER: Key = Key::from_static_str("db.user"); + +/// The fully-qualified class name of the [Java Database Connectivity (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) driver used to connect. +/// +/// # Examples +/// +/// - `org.postgresql.Driver` +/// - `com.microsoft.sqlserver.jdbc.SQLServerDriver` +pub const DB_JDBC_DRIVER_CLASSNAME: Key = Key::from_static_str("db.jdbc.driver_classname"); + +/// This attribute is used to report the name of the database being accessed. For commands that switch the database, this should be set to the target database (even if the command fails). +/// +/// In some SQL databases, the database name to be used is called "schema name". In case there are multiple layers that could be considered for database name (e.g. Oracle instance name and schema name), the database name to be used is the more specific layer (e.g. Oracle schema name). +/// +/// # Examples +/// +/// - `customers` +/// - `main` +pub const DB_NAME: Key = Key::from_static_str("db.name"); + +/// The database statement being executed. +/// +/// # Examples +/// +/// - `SELECT * FROM wuser_table` +/// - `SET mykey "WuValue"` +pub const DB_STATEMENT: Key = Key::from_static_str("db.statement"); + +/// The name of the operation being executed, e.g. the [MongoDB command name](https://docs.mongodb.com/manual/reference/command/#database-operations) such as `findAndModify`, or the SQL keyword. +/// +/// When setting this to an SQL keyword, it is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if the operation name is provided by the library being instrumented. If the SQL statement has an ambiguous operation, or performs more than one operation, this value may be omitted. +/// +/// # Examples +/// +/// - `findAndModify` +/// - `HMSET` +/// - `SELECT` +pub const DB_OPERATION: Key = Key::from_static_str("db.operation"); + +/// The Microsoft SQL Server [instance name](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15) connecting to. This name is used to determine the port of a named instance. +/// +/// If setting a `db.mssql.instance_name`, `server.port` is no longer required (but still recommended if non-standard). +/// +/// # Examples +/// +/// - `MSSQLSERVER` +pub const DB_MSSQL_INSTANCE_NAME: Key = Key::from_static_str("db.mssql.instance_name"); + +/// The fetch size used for paging, i.e. how many rows will be returned at once. +/// +/// # Examples +/// +/// - `5000` +pub const DB_CASSANDRA_PAGE_SIZE: Key = Key::from_static_str("db.cassandra.page_size"); + +/// The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html). +pub const DB_CASSANDRA_CONSISTENCY_LEVEL: Key = + Key::from_static_str("db.cassandra.consistency_level"); + +/// The name of the primary table that the operation is acting upon, including the keyspace name (if applicable). +/// +/// This mirrors the db.sql.table attribute but references cassandra rather than sql. It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set. +/// +/// # Examples +/// +/// - `mytable` +pub const DB_CASSANDRA_TABLE: Key = Key::from_static_str("db.cassandra.table"); + +/// Whether or not the query is idempotent. +pub const DB_CASSANDRA_IDEMPOTENCE: Key = Key::from_static_str("db.cassandra.idempotence"); + +/// The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. +/// +/// # Examples +/// +/// - `0` +/// - `2` +pub const DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT: Key = + Key::from_static_str("db.cassandra.speculative_execution_count"); + +/// The ID of the coordinating node for a query. +/// +/// # Examples +/// +/// - `be13faa2-8574-4d71-926d-27f16cf8a7af` +pub const DB_CASSANDRA_COORDINATOR_ID: Key = Key::from_static_str("db.cassandra.coordinator.id"); + +/// The data center of the coordinating node for a query. +/// +/// # Examples +/// +/// - `us-west-2` +pub const DB_CASSANDRA_COORDINATOR_DC: Key = Key::from_static_str("db.cassandra.coordinator.dc"); + +/// The index of the database being accessed as used in the [`SELECT` command](https://redis.io/commands/select), provided as an integer. To be used instead of the generic `db.name` attribute. +/// +/// # Examples +/// +/// - `0` +/// - `1` +/// - `15` +pub const DB_REDIS_DATABASE_INDEX: Key = Key::from_static_str("db.redis.database_index"); + +/// The collection being accessed within the database stated in `db.name`. +/// +/// # Examples +/// +/// - `customers` +/// - `products` +pub const DB_MONGODB_COLLECTION: Key = Key::from_static_str("db.mongodb.collection"); + +/// The name of the primary table that the operation is acting upon, including the database name (if applicable). +/// +/// It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set. +/// +/// # Examples +/// +/// - `public.users` +/// - `customers` +pub const DB_SQL_TABLE: Key = Key::from_static_str("db.sql.table"); + +/// Unique Cosmos client instance id. +/// +/// # Examples +/// +/// - `3ba4827d-4422-483f-b59f-85b74211c11d` +pub const DB_COSMOSDB_CLIENT_ID: Key = Key::from_static_str("db.cosmosdb.client_id"); + +/// CosmosDB Operation Type. +pub const DB_COSMOSDB_OPERATION_TYPE: Key = Key::from_static_str("db.cosmosdb.operation_type"); + +/// Cosmos client connection mode. +pub const DB_COSMOSDB_CONNECTION_MODE: Key = Key::from_static_str("db.cosmosdb.connection_mode"); + +/// Cosmos DB container name. +/// +/// # Examples +/// +/// - `anystring` +pub const DB_COSMOSDB_CONTAINER: Key = Key::from_static_str("db.cosmosdb.container"); + +/// Request payload size in bytes. +pub const DB_COSMOSDB_REQUEST_CONTENT_LENGTH: Key = + Key::from_static_str("db.cosmosdb.request_content_length"); + +/// Cosmos DB status code. +/// +/// # Examples +/// +/// - `200` +/// - `201` +pub const DB_COSMOSDB_STATUS_CODE: Key = Key::from_static_str("db.cosmosdb.status_code"); + +/// Cosmos DB sub status code. +/// +/// # Examples +/// +/// - `1000` +/// - `1002` +pub const DB_COSMOSDB_SUB_STATUS_CODE: Key = Key::from_static_str("db.cosmosdb.sub_status_code"); + +/// RU consumed for that operation. +/// +/// # Examples +/// +/// - `46.18` +/// - `1.0` +pub const DB_COSMOSDB_REQUEST_CHARGE: Key = Key::from_static_str("db.cosmosdb.request_charge"); + +/// Name of the code, either "OK" or "ERROR". MUST NOT be set if the status code is UNSET. +pub const OTEL_STATUS_CODE: Key = Key::from_static_str("otel.status_code"); + +/// Description of the Status if it has a value, otherwise not set. +/// +/// # Examples +/// +/// - `resource not found` +pub const OTEL_STATUS_DESCRIPTION: Key = Key::from_static_str("otel.status_description"); + +/// Type of the trigger which caused this function invocation. +/// +/// For the server/consumer span on the incoming side, +/// `faas.trigger` MUST be set. +/// +/// Clients invoking FaaS instances usually cannot set `faas.trigger`, +/// since they would typically need to look in the payload to determine +/// the event type. If clients set it, it should be the same as the +/// trigger that corresponding incoming would have (i.e., this has +/// nothing to do with the underlying transport used to make the API +/// call to invoke the lambda, which is often HTTP). +pub const FAAS_TRIGGER: Key = Key::from_static_str("faas.trigger"); + +/// The invocation ID of the current function invocation. +/// +/// # Examples +/// +/// - `af9d5aa4-a685-4c5f-a22b-444f80b3cc28` +pub const FAAS_INVOCATION_ID: Key = Key::from_static_str("faas.invocation_id"); + +/// The name of the source on which the triggering operation was performed. For example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name. +/// +/// # Examples +/// +/// - `myBucketName` +/// - `myDbName` +pub const FAAS_DOCUMENT_COLLECTION: Key = Key::from_static_str("faas.document.collection"); + +/// Describes the type of the operation that was performed on the data. +pub const FAAS_DOCUMENT_OPERATION: Key = Key::from_static_str("faas.document.operation"); + +/// A string containing the time when the data was accessed in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime). +/// +/// # Examples +/// +/// - `2020-01-23T13:47:06Z` +pub const FAAS_DOCUMENT_TIME: Key = Key::from_static_str("faas.document.time"); + +/// The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the name of the file, and in Cosmos DB the table name. +/// +/// # Examples +/// +/// - `myFile.txt` +/// - `myTableName` +pub const FAAS_DOCUMENT_NAME: Key = Key::from_static_str("faas.document.name"); + +/// A string containing the function invocation time in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime). +/// +/// # Examples +/// +/// - `2020-01-23T13:47:06Z` +pub const FAAS_TIME: Key = Key::from_static_str("faas.time"); + +/// A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). +/// +/// # Examples +/// +/// - `0/5 * * * ? *` +pub const FAAS_CRON: Key = Key::from_static_str("faas.cron"); + +/// A boolean that is true if the serverless function is executed for the first time (aka cold-start). +pub const FAAS_COLDSTART: Key = Key::from_static_str("faas.coldstart"); + +/// The name of the invoked function. +/// +/// SHOULD be equal to the `faas.name` resource attribute of the invoked function. +/// +/// # Examples +/// +/// - `my-function` +pub const FAAS_INVOKED_NAME: Key = Key::from_static_str("faas.invoked_name"); + +/// The cloud provider of the invoked function. +/// +/// SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. +pub const FAAS_INVOKED_PROVIDER: Key = Key::from_static_str("faas.invoked_provider"); + +/// The cloud region of the invoked function. +/// +/// SHOULD be equal to the `cloud.region` resource attribute of the invoked function. +/// +/// # Examples +/// +/// - `eu-central-1` +pub const FAAS_INVOKED_REGION: Key = Key::from_static_str("faas.invoked_region"); + +/// The unique identifier of the feature flag. +/// +/// # Examples +/// +/// - `logo-color` +pub const FEATURE_FLAG_KEY: Key = Key::from_static_str("feature_flag.key"); + +/// The name of the service provider that performs the flag evaluation. +/// +/// # Examples +/// +/// - `Flag Manager` +pub const FEATURE_FLAG_PROVIDER_NAME: Key = Key::from_static_str("feature_flag.provider_name"); + +/// SHOULD be a semantic identifier for a value. If one is unavailable, a stringified version of the value can be used. +/// +/// A semantic identifier, commonly referred to as a variant, provides a means +/// for referring to a value without including the value itself. This can +/// provide additional context for understanding the meaning behind a value. +/// For example, the variant `red` maybe be used for the value `#c05543`. +/// +/// A stringified version of the value can be used in situations where a +/// semantic identifier is unavailable. String representation of the value +/// should be determined by the implementer. +/// +/// # Examples +/// +/// - `red` +/// - `true` +/// - `on` +pub const FEATURE_FLAG_VARIANT: Key = Key::from_static_str("feature_flag.variant"); + +/// [OSI Transport Layer](https://osi-model.com/transport-layer/) or [Inter-process Communication method](https://en.wikipedia.org/wiki/Inter-process_communication). The value SHOULD be normalized to lowercase. +/// +/// # Examples +/// +/// - `tcp` +/// - `udp` +pub const NETWORK_TRANSPORT: Key = Key::from_static_str("network.transport"); + +/// [OSI Network Layer](https://osi-model.com/network-layer/) or non-OSI equivalent. The value SHOULD be normalized to lowercase. +/// +/// # Examples +/// +/// - `ipv4` +/// - `ipv6` +pub const NETWORK_TYPE: Key = Key::from_static_str("network.type"); + +/// [OSI Application Layer](https://osi-model.com/application-layer/) or non-OSI equivalent. The value SHOULD be normalized to lowercase. +/// +/// # Examples +/// +/// - `amqp` +/// - `http` +/// - `mqtt` +pub const NETWORK_PROTOCOL_NAME: Key = Key::from_static_str("network.protocol.name"); + +/// Version of the application layer protocol used. See note below. +/// +/// `network.protocol.version` refers to the version of the protocol used and might be different from the protocol client's version. If the HTTP client used has a version of `0.27.2`, but sends HTTP version `1.1`, this attribute should be set to `1.1`. +/// +/// # Examples +/// +/// - `3.1.1` +pub const NETWORK_PROTOCOL_VERSION: Key = Key::from_static_str("network.protocol.version"); + +/// The internet connection type. +/// +/// # Examples +/// +/// - `wifi` +pub const NETWORK_CONNECTION_TYPE: Key = Key::from_static_str("network.connection.type"); + +/// This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection. +/// +/// # Examples +/// +/// - `LTE` +pub const NETWORK_CONNECTION_SUBTYPE: Key = Key::from_static_str("network.connection.subtype"); + +/// The name of the mobile carrier. +/// +/// # Examples +/// +/// - `sprint` +pub const NETWORK_CARRIER_NAME: Key = Key::from_static_str("network.carrier.name"); + +/// The mobile carrier country code. +/// +/// # Examples +/// +/// - `310` +pub const NETWORK_CARRIER_MCC: Key = Key::from_static_str("network.carrier.mcc"); + +/// The mobile carrier network code. +/// +/// # Examples +/// +/// - `001` +pub const NETWORK_CARRIER_MNC: Key = Key::from_static_str("network.carrier.mnc"); + +/// The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. +/// +/// # Examples +/// +/// - `DE` +pub const NETWORK_CARRIER_ICC: Key = Key::from_static_str("network.carrier.icc"); + +/// The [`service.name`](/docs/resource/README.md#service) of the remote service. SHOULD be equal to the actual `service.name` resource attribute of the remote service if any. +/// +/// # Examples +/// +/// - `AuthTokenCache` +pub const PEER_SERVICE: Key = Key::from_static_str("peer.service"); + +/// Username or client_id extracted from the access token or [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in the inbound request from outside the system. +/// +/// # Examples +/// +/// - `username` +pub const ENDUSER_ID: Key = Key::from_static_str("enduser.id"); + +/// Actual/assumed role the client is making the request under extracted from token or application security context. +/// +/// # Examples +/// +/// - `admin` +pub const ENDUSER_ROLE: Key = Key::from_static_str("enduser.role"); + +/// Scopes or granted authorities the client currently possesses extracted from token or application security context. The value would come from the scope associated with an [OAuth 2.0 Access Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute value in a [SAML 2.0 Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html). +/// +/// # Examples +/// +/// - `read:message, write:files` +pub const ENDUSER_SCOPE: Key = Key::from_static_str("enduser.scope"); + +/// Current "managed" thread ID (as opposed to OS thread ID). +/// +/// # Examples +/// +/// - `42` +pub const THREAD_ID: Key = Key::from_static_str("thread.id"); + +/// Current thread name. +/// +/// # Examples +/// +/// - `main` +pub const THREAD_NAME: Key = Key::from_static_str("thread.name"); + +/// The method or function name, or equivalent (usually rightmost part of the code unit's name). +/// +/// # Examples +/// +/// - `serveRequest` +pub const CODE_FUNCTION: Key = Key::from_static_str("code.function"); + +/// The "namespace" within which `code.function` is defined. Usually the qualified class or module name, such that `code.namespace` + some separator + `code.function` form a unique identifier for the code unit. +/// +/// # Examples +/// +/// - `com.example.MyHttpService` +pub const CODE_NAMESPACE: Key = Key::from_static_str("code.namespace"); + +/// The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). +/// +/// # Examples +/// +/// - `/usr/local/MyApplication/content_root/app/index.php` +pub const CODE_FILEPATH: Key = Key::from_static_str("code.filepath"); + +/// The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`. +/// +/// # Examples +/// +/// - `42` +pub const CODE_LINENO: Key = Key::from_static_str("code.lineno"); + +/// The column number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`. +/// +/// # Examples +/// +/// - `16` +pub const CODE_COLUMN: Key = Key::from_static_str("code.column"); + +/// Original HTTP method sent by the client in the request line. +/// +/// # Examples +/// +/// - `GeT` +/// - `ACL` +/// - `foo` +pub const HTTP_REQUEST_METHOD_ORIGINAL: Key = Key::from_static_str("http.request.method_original"); + +/// The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. +/// +/// # Examples +/// +/// - `3495` +pub const HTTP_REQUEST_BODY_SIZE: Key = Key::from_static_str("http.request.body.size"); + +/// The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. +/// +/// # Examples +/// +/// - `3495` +pub const HTTP_RESPONSE_BODY_SIZE: Key = Key::from_static_str("http.response.body.size"); + +/// The ordinal number of request resending attempt (for any reason, including redirects). +/// +/// The resend count SHOULD be updated each time an HTTP request gets resent by the client, regardless of what was the cause of the resending (e.g. redirection, authorization failure, 503 Server Unavailable, network issues, or any other). +/// +/// # Examples +/// +/// - `3` +pub const HTTP_RESEND_COUNT: Key = Key::from_static_str("http.resend_count"); + +/// The AWS request ID as returned in the response headers `x-amz-request-id` or `x-amz-requestid`. +/// +/// # Examples +/// +/// - `79b9da39-b7ae-508a-a6bc-864b2829c622` +/// - `C9ER4AJX75574TDJ` +pub const AWS_REQUEST_ID: Key = Key::from_static_str("aws.request_id"); + +/// The keys in the `RequestItems` object field. +/// +/// # Examples +/// +/// - `Users` +/// - `Cats` +pub const AWS_DYNAMODB_TABLE_NAMES: Key = Key::from_static_str("aws.dynamodb.table_names"); + +/// The JSON-serialized value of each item in the `ConsumedCapacity` response field. +/// +/// # Examples +/// +/// - `{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": "string", "WriteCapacityUnits": number }` +pub const AWS_DYNAMODB_CONSUMED_CAPACITY: Key = + Key::from_static_str("aws.dynamodb.consumed_capacity"); + +/// The JSON-serialized value of the `ItemCollectionMetrics` response field. +/// +/// # Examples +/// +/// - `{ "string" : [ { "ItemCollectionKey": { "string" : { "B": blob, "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { "string" : "AttributeValue" }, "N": "string", "NS": [ "string" ], "NULL": boolean, "S": "string", "SS": [ "string" ] } }, "SizeEstimateRangeGB": [ number ] } ] }` +pub const AWS_DYNAMODB_ITEM_COLLECTION_METRICS: Key = + Key::from_static_str("aws.dynamodb.item_collection_metrics"); + +/// The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. +/// +/// # Examples +/// +/// - `1.0` +/// - `2.0` +pub const AWS_DYNAMODB_PROVISIONED_READ_CAPACITY: Key = + Key::from_static_str("aws.dynamodb.provisioned_read_capacity"); + +/// The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. +/// +/// # Examples +/// +/// - `1.0` +/// - `2.0` +pub const AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY: Key = + Key::from_static_str("aws.dynamodb.provisioned_write_capacity"); + +/// The value of the `ConsistentRead` request parameter. +pub const AWS_DYNAMODB_CONSISTENT_READ: Key = Key::from_static_str("aws.dynamodb.consistent_read"); + +/// The value of the `ProjectionExpression` request parameter. +/// +/// # Examples +/// +/// - `Title` +/// - `Title, Price, Color` +/// - `Title, Description, RelatedItems, ProductReviews` +pub const AWS_DYNAMODB_PROJECTION: Key = Key::from_static_str("aws.dynamodb.projection"); + +/// The value of the `Limit` request parameter. +/// +/// # Examples +/// +/// - `10` +pub const AWS_DYNAMODB_LIMIT: Key = Key::from_static_str("aws.dynamodb.limit"); + +/// The value of the `AttributesToGet` request parameter. +/// +/// # Examples +/// +/// - `lives` +/// - `id` +pub const AWS_DYNAMODB_ATTRIBUTES_TO_GET: Key = + Key::from_static_str("aws.dynamodb.attributes_to_get"); + +/// The value of the `IndexName` request parameter. +/// +/// # Examples +/// +/// - `name_to_group` +pub const AWS_DYNAMODB_INDEX_NAME: Key = Key::from_static_str("aws.dynamodb.index_name"); + +/// The value of the `Select` request parameter. +/// +/// # Examples +/// +/// - `ALL_ATTRIBUTES` +/// - `COUNT` +pub const AWS_DYNAMODB_SELECT: Key = Key::from_static_str("aws.dynamodb.select"); + +/// The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field. +/// +/// # Examples +/// +/// - `{ "IndexName": "string", "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits": number } }` +pub const AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES: Key = + Key::from_static_str("aws.dynamodb.global_secondary_indexes"); + +/// The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. +/// +/// # Examples +/// +/// - `{ "IndexArn": "string", "IndexName": "string", "IndexSizeBytes": number, "ItemCount": number, "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" } }` +pub const AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES: Key = + Key::from_static_str("aws.dynamodb.local_secondary_indexes"); + +/// The value of the `ExclusiveStartTableName` request parameter. +/// +/// # Examples +/// +/// - `Users` +/// - `CatsTable` +pub const AWS_DYNAMODB_EXCLUSIVE_START_TABLE: Key = + Key::from_static_str("aws.dynamodb.exclusive_start_table"); + +/// The the number of items in the `TableNames` response parameter. +/// +/// # Examples +/// +/// - `20` +pub const AWS_DYNAMODB_TABLE_COUNT: Key = Key::from_static_str("aws.dynamodb.table_count"); + +/// The value of the `ScanIndexForward` request parameter. +pub const AWS_DYNAMODB_SCAN_FORWARD: Key = Key::from_static_str("aws.dynamodb.scan_forward"); + +/// The value of the `Segment` request parameter. +/// +/// # Examples +/// +/// - `10` +pub const AWS_DYNAMODB_SEGMENT: Key = Key::from_static_str("aws.dynamodb.segment"); + +/// The value of the `TotalSegments` request parameter. +/// +/// # Examples +/// +/// - `100` +pub const AWS_DYNAMODB_TOTAL_SEGMENTS: Key = Key::from_static_str("aws.dynamodb.total_segments"); + +/// The value of the `Count` response parameter. +/// +/// # Examples +/// +/// - `10` +pub const AWS_DYNAMODB_COUNT: Key = Key::from_static_str("aws.dynamodb.count"); + +/// The value of the `ScannedCount` response parameter. +/// +/// # Examples +/// +/// - `50` +pub const AWS_DYNAMODB_SCANNED_COUNT: Key = Key::from_static_str("aws.dynamodb.scanned_count"); + +/// The JSON-serialized value of each item in the `AttributeDefinitions` request field. +/// +/// # Examples +/// +/// - `{ "AttributeName": "string", "AttributeType": "string" }` +pub const AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS: Key = + Key::from_static_str("aws.dynamodb.attribute_definitions"); + +/// The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field. +/// +/// # Examples +/// +/// - `{ "Create": { "IndexName": "string", "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits": number } }` +pub const AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES: Key = + Key::from_static_str("aws.dynamodb.global_secondary_index_updates"); + +/// The S3 bucket name the request refers to. Corresponds to the `--bucket` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations. +/// +/// The `bucket` attribute is applicable to all S3 operations that reference a bucket, i.e. that require the bucket name as a mandatory parameter. +/// This applies to almost all S3 operations except `list-buckets`. +/// +/// # Examples +/// +/// - `some-bucket-name` +pub const AWS_S3_BUCKET: Key = Key::from_static_str("aws.s3.bucket"); + +/// The S3 object key the request refers to. Corresponds to the `--key` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations. +/// +/// The `key` attribute is applicable to all object-related S3 operations, i.e. that require the object key as a mandatory parameter. +/// This applies in particular to the following operations: +/// +/// - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html) +/// - [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) +/// - [get-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html) +/// - [head-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html) +/// - [put-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html) +/// - [restore-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/restore-object.html) +/// - [select-object-content](https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html) +/// - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) +/// - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html) +/// - [create-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html) +/// - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html) +/// - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) +/// - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) +/// +/// # Examples +/// +/// - `someFile.yml` +pub const AWS_S3_KEY: Key = Key::from_static_str("aws.s3.key"); + +/// The source object (in the form `bucket`/`key`) for the copy operation. +/// +/// The `copy_source` attribute applies to S3 copy operations and corresponds to the `--copy-source` parameter +/// of the [copy-object operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html). +/// This applies in particular to the following operations: +/// +/// - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html) +/// - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) +/// +/// # Examples +/// +/// - `someFile.yml` +pub const AWS_S3_COPY_SOURCE: Key = Key::from_static_str("aws.s3.copy_source"); + +/// Upload ID that identifies the multipart upload. +/// +/// The `upload_id` attribute applies to S3 multipart-upload operations and corresponds to the `--upload-id` parameter +/// of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) multipart operations. +/// This applies in particular to the following operations: +/// +/// - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) +/// - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html) +/// - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html) +/// - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) +/// - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) +/// +/// # Examples +/// +/// - `dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ` +pub const AWS_S3_UPLOAD_ID: Key = Key::from_static_str("aws.s3.upload_id"); + +/// The delete request container that specifies the objects to be deleted. +/// +/// The `delete` attribute is only applicable to the [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) operation. +/// The `delete` attribute corresponds to the `--delete` parameter of the +/// [delete-objects operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-objects.html). +/// +/// # Examples +/// +/// - `Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean` +pub const AWS_S3_DELETE: Key = Key::from_static_str("aws.s3.delete"); + +/// The part number of the part being uploaded in a multipart-upload operation. This is a positive integer between 1 and 10,000. +/// +/// The `part_number` attribute is only applicable to the [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) +/// and [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) operations. +/// The `part_number` attribute corresponds to the `--part-number` parameter of the +/// [upload-part operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html). +/// +/// # Examples +/// +/// - `3456` +pub const AWS_S3_PART_NUMBER: Key = Key::from_static_str("aws.s3.part_number"); + +/// The name of the operation being executed. +/// +/// # Examples +/// +/// - `findBookById` +pub const GRAPHQL_OPERATION_NAME: Key = Key::from_static_str("graphql.operation.name"); + +/// The type of the operation being executed. +/// +/// # Examples +/// +/// - `query` +/// - `mutation` +/// - `subscription` +pub const GRAPHQL_OPERATION_TYPE: Key = Key::from_static_str("graphql.operation.type"); + +/// The GraphQL document being executed. +/// +/// The value may be sanitized to exclude sensitive information. +/// +/// # Examples +/// +/// - `query findBookById { bookById(id: ?) { name } }` +pub const GRAPHQL_DOCUMENT: Key = Key::from_static_str("graphql.document"); + +/// A value used by the messaging system as an identifier for the message, represented as a string. +/// +/// # Examples +/// +/// - `452a7c7c7c7048c2f887f61572b18fc2` +pub const MESSAGING_MESSAGE_ID: Key = Key::from_static_str("messaging.message.id"); + +/// The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". +/// +/// # Examples +/// +/// - `MyConversationId` +pub const MESSAGING_MESSAGE_CONVERSATION_ID: Key = + Key::from_static_str("messaging.message.conversation_id"); + +/// The (uncompressed) size of the message payload in bytes. Also use this attribute if it is unknown whether the compressed or uncompressed payload size is reported. +/// +/// # Examples +/// +/// - `2738` +pub const MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES: Key = + Key::from_static_str("messaging.message.payload_size_bytes"); + +/// The compressed size of the message payload in bytes. +/// +/// # Examples +/// +/// - `2048` +pub const MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES: Key = + Key::from_static_str("messaging.message.payload_compressed_size_bytes"); + +/// The message destination name. +/// +/// Destination name SHOULD uniquely identify a specific queue, topic or other entity within the broker. If +/// the broker does not have such notion, the destination name SHOULD uniquely identify the broker. +/// +/// # Examples +/// +/// - `MyQueue` +/// - `MyTopic` +pub const MESSAGING_DESTINATION_NAME: Key = Key::from_static_str("messaging.destination.name"); + +/// Low cardinality representation of the messaging destination name. +/// +/// Destination names could be constructed from templates. An example would be a destination name involving a user name or product id. Although the destination name in this case is of high cardinality, the underlying template is of low cardinality and can be effectively used for grouping and aggregation. +/// +/// # Examples +/// +/// - `/customers/{customerId}` +pub const MESSAGING_DESTINATION_TEMPLATE: Key = + Key::from_static_str("messaging.destination.template"); + +/// A boolean that is true if the message destination is temporary and might not exist anymore after messages are processed. +pub const MESSAGING_DESTINATION_TEMPORARY: Key = + Key::from_static_str("messaging.destination.temporary"); + +/// A boolean that is true if the message destination is anonymous (could be unnamed or have auto-generated name). +pub const MESSAGING_DESTINATION_ANONYMOUS: Key = + Key::from_static_str("messaging.destination.anonymous"); + +/// A string identifying the messaging system. +/// +/// # Examples +/// +/// - `kafka` +/// - `rabbitmq` +/// - `rocketmq` +/// - `activemq` +/// - `AmazonSQS` +pub const MESSAGING_SYSTEM: Key = Key::from_static_str("messaging.system"); + +/// A string identifying the kind of messaging operation as defined in the [Operation names](#operation-names) section above. +/// +/// If a custom value is used, it MUST be of low cardinality. +pub const MESSAGING_OPERATION: Key = Key::from_static_str("messaging.operation"); + +/// The number of messages sent, received, or processed in the scope of the batching operation. +/// +/// Instrumentations SHOULD NOT set `messaging.batch.message_count` on spans that operate with a single message. When a messaging client library supports both batch and single-message API for the same operation, instrumentations SHOULD use `messaging.batch.message_count` for batching APIs and SHOULD NOT use it for single-message APIs. +/// +/// # Examples +/// +/// - `0` +/// - `1` +/// - `2` +pub const MESSAGING_BATCH_MESSAGE_COUNT: Key = + Key::from_static_str("messaging.batch.message_count"); + +/// A unique identifier for the client that consumes or produces a message. +/// +/// # Examples +/// +/// - `client-5` +/// - `myhost@8742@s8083jm` +pub const MESSAGING_CLIENT_ID: Key = Key::from_static_str("messaging.client_id"); + +/// RabbitMQ message routing key. +/// +/// # Examples +/// +/// - `myKey` +pub const MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY: Key = + Key::from_static_str("messaging.rabbitmq.destination.routing_key"); + +/// Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from `messaging.message.id` in that they're not unique. If the key is `null`, the attribute MUST NOT be set. +/// +/// If the key type is not string, it's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value. +/// +/// # Examples +/// +/// - `myKey` +pub const MESSAGING_KAFKA_MESSAGE_KEY: Key = Key::from_static_str("messaging.kafka.message.key"); + +/// Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers. +/// +/// # Examples +/// +/// - `my-group` +pub const MESSAGING_KAFKA_CONSUMER_GROUP: Key = + Key::from_static_str("messaging.kafka.consumer.group"); + +/// Partition the message is sent to. +/// +/// # Examples +/// +/// - `2` +pub const MESSAGING_KAFKA_DESTINATION_PARTITION: Key = + Key::from_static_str("messaging.kafka.destination.partition"); + +/// The offset of a record in the corresponding Kafka partition. +/// +/// # Examples +/// +/// - `42` +pub const MESSAGING_KAFKA_MESSAGE_OFFSET: Key = + Key::from_static_str("messaging.kafka.message.offset"); + +/// A boolean that is true if the message is a tombstone. +pub const MESSAGING_KAFKA_MESSAGE_TOMBSTONE: Key = + Key::from_static_str("messaging.kafka.message.tombstone"); + +/// Namespace of RocketMQ resources, resources in different namespaces are individual. +/// +/// # Examples +/// +/// - `myNamespace` +pub const MESSAGING_ROCKETMQ_NAMESPACE: Key = Key::from_static_str("messaging.rocketmq.namespace"); + +/// Name of the RocketMQ producer/consumer group that is handling the message. The client type is identified by the SpanKind. +/// +/// # Examples +/// +/// - `myConsumerGroup` +pub const MESSAGING_ROCKETMQ_CLIENT_GROUP: Key = + Key::from_static_str("messaging.rocketmq.client_group"); + +/// The timestamp in milliseconds that the delay message is expected to be delivered to consumer. +/// +/// # Examples +/// +/// - `1665987217045` +pub const MESSAGING_ROCKETMQ_MESSAGE_DELIVERY_TIMESTAMP: Key = + Key::from_static_str("messaging.rocketmq.message.delivery_timestamp"); + +/// The delay time level for delay message, which determines the message delay time. +/// +/// # Examples +/// +/// - `3` +pub const MESSAGING_ROCKETMQ_MESSAGE_DELAY_TIME_LEVEL: Key = + Key::from_static_str("messaging.rocketmq.message.delay_time_level"); + +/// It is essential for FIFO message. Messages that belong to the same message group are always processed one by one within the same consumer group. +/// +/// # Examples +/// +/// - `myMessageGroup` +pub const MESSAGING_ROCKETMQ_MESSAGE_GROUP: Key = + Key::from_static_str("messaging.rocketmq.message.group"); + +/// Type of message. +pub const MESSAGING_ROCKETMQ_MESSAGE_TYPE: Key = + Key::from_static_str("messaging.rocketmq.message.type"); + +/// The secondary classifier of message besides topic. +/// +/// # Examples +/// +/// - `tagA` +pub const MESSAGING_ROCKETMQ_MESSAGE_TAG: Key = + Key::from_static_str("messaging.rocketmq.message.tag"); + +/// Key(s) of message, another way to mark message besides message id. +/// +/// # Examples +/// +/// - `keyA` +/// - `keyB` +pub const MESSAGING_ROCKETMQ_MESSAGE_KEYS: Key = + Key::from_static_str("messaging.rocketmq.message.keys"); + +/// Model of message consumption. This only applies to consumer spans. +pub const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL: Key = + Key::from_static_str("messaging.rocketmq.consumption_model"); + +/// A string identifying the remoting system. See below for a list of well-known identifiers. +pub const RPC_SYSTEM: Key = Key::from_static_str("rpc.system"); + +/// The full (logical) name of the service being called, including its package name, if applicable. +/// +/// This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side). +/// +/// # Examples +/// +/// - `myservice.EchoService` +pub const RPC_SERVICE: Key = Key::from_static_str("rpc.service"); + +/// The name of the (logical) method being called, must be equal to the $method part in the span name. +/// +/// This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side). +/// +/// # Examples +/// +/// - `exampleMethod` +pub const RPC_METHOD: Key = Key::from_static_str("rpc.method"); + +/// The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. +pub const RPC_GRPC_STATUS_CODE: Key = Key::from_static_str("rpc.grpc.status_code"); + +/// Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted. +/// +/// # Examples +/// +/// - `2.0` +/// - `1.0` +pub const RPC_JSONRPC_VERSION: Key = Key::from_static_str("rpc.jsonrpc.version"); + +/// `id` property of request or response. Since protocol allows id to be int, string, `null` or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of `null` value. Omit entirely if this is a notification. +/// +/// # Examples +/// +/// - `10` +/// - `request-7` +/// - `` +pub const RPC_JSONRPC_REQUEST_ID: Key = Key::from_static_str("rpc.jsonrpc.request_id"); + +/// `error.code` property of response if it is an error response. +/// +/// # Examples +/// +/// - `-32700` +/// - `100` +pub const RPC_JSONRPC_ERROR_CODE: Key = Key::from_static_str("rpc.jsonrpc.error_code"); + +/// `error.message` property of response if it is an error response. +/// +/// # Examples +/// +/// - `Parse error` +/// - `User already exists` +pub const RPC_JSONRPC_ERROR_MESSAGE: Key = Key::from_static_str("rpc.jsonrpc.error_message"); + +/// Whether this is a received or sent message. +pub const MESSAGE_TYPE: Key = Key::from_static_str("message.type"); + +/// MUST be calculated as two different counters starting from `1` one for sent messages and one for received message. +/// +/// This way we guarantee that the values will be consistent between different implementations. +pub const MESSAGE_ID: Key = Key::from_static_str("message.id"); + +/// Compressed size of the message in bytes. +pub const MESSAGE_COMPRESSED_SIZE: Key = Key::from_static_str("message.compressed_size"); + +/// Uncompressed size of the message in bytes. +pub const MESSAGE_UNCOMPRESSED_SIZE: Key = Key::from_static_str("message.uncompressed_size"); + +/// The [error codes](https://connect.build/docs/protocol/#error-codes) of the Connect request. Error codes are always string values. +pub const RPC_CONNECT_RPC_ERROR_CODE: Key = Key::from_static_str("rpc.connect_rpc.error_code"); + +/// SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span. +/// +/// An exception is considered to have escaped (or left) the scope of a span, +/// if that span is ended while the exception is still logically "in flight". +/// This may be actually "in flight" in some languages (e.g. if the exception +/// is passed to a Context manager's `__exit__` method in Python) but will +/// usually be caught at the point of recording the exception in most languages. +/// +/// It is usually not possible to determine at the point where an exception is thrown +/// whether it will escape the scope of a span. +/// However, it is trivial to know that an exception +/// will escape, if one checks for an active exception just before ending the span, +/// as done in the [example above](#recording-an-exception). +/// +/// It follows that an exception may still escape the scope of the span +/// even if the `exception.escaped` attribute was not set or set to false, +/// since the event might have been recorded at a time where it was not +/// clear whether the exception will escape. +pub const EXCEPTION_ESCAPED: Key = Key::from_static_str("exception.escaped"); + +/// The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol. +/// +/// # Examples +/// +/// - `https` +/// - `ftp` +/// - `telnet` +pub const URL_SCHEME: Key = Key::from_static_str("url.scheme"); + +/// Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986). +/// +/// For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless. +/// `url.full` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case username and password should be redacted and attribute's value should be `https://REDACTED:REDACTED@www.example.com/`. +/// `url.full` SHOULD capture the absolute URL when it is available (or can be reconstructed) and SHOULD NOT be validated or modified except for sanitizing purposes. +/// +/// # Examples +/// +/// - `https://www.foo.bar/search?q=OpenTelemetry#SemConv` +/// - `//localhost` +pub const URL_FULL: Key = Key::from_static_str("url.full"); + +/// The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component. +/// +/// When missing, the value is assumed to be `/` +/// +/// # Examples +/// +/// - `/search` +pub const URL_PATH: Key = Key::from_static_str("url.path"); + +/// The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component. +/// +/// Sensitive content provided in query string SHOULD be scrubbed when instrumentations can identify it. +/// +/// # Examples +/// +/// - `q=OpenTelemetry` +pub const URL_QUERY: Key = Key::from_static_str("url.query"); + +/// The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component. +/// +/// # Examples +/// +/// - `SemConv` +pub const URL_FRAGMENT: Key = Key::from_static_str("url.fragment"); + +/// Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client. +/// +/// # Examples +/// +/// - `CERN-LineMode/2.15 libwww/2.17b3` +pub const USER_AGENT_ORIGINAL: Key = Key::from_static_str("user_agent.original"); diff -Nru temporalio-1.3.0/vendor/ordered-float/.cargo-checksum.json temporalio-1.3.0/vendor/ordered-float/.cargo-checksum.json --- temporalio-1.3.0/vendor/ordered-float/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ordered-float/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +{"files":{"Cargo.toml":"c90c1eb36ad3b24d3437275a2cfbbb10e20b2d38555f9f6791c580311eefe3c1","LICENSE-MIT":"f7715d38a3fa1b4ac97c5729740752505a39cb92ee83ab5b102aeb5eaa7cdea4","README.md":"ded338028d49080cc1a036a5e62974425c78cdcb904289777a6a71e8430e69a8","rustfmt.toml":"d72fafaea8c9695f74c40bc666ada205b935bec3f02488bb33e5994e2831bffb","src/lib.rs":"9b4c4f83bc154e83856604e91c36bc03e1b3473df4cb4a6a1519e72df224a3c4","tests/test.rs":"95919c716b1956d77b0068fa859ffd857e69c292c60e758f2b2ead95b7abfe97"},"package":"2a54938017eacd63036332b4ae5c8a49fc8c0c1d6d629893057e4f13609edd06"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/ordered-float/Cargo.toml temporalio-1.3.0/vendor/ordered-float/Cargo.toml --- temporalio-1.3.0/vendor/ordered-float/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ordered-float/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,106 @@ +# 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 = "ordered-float" +version = "3.9.1" +authors = [ + "Jonathan Reem ", + "Matt Brubeck ", +] +description = "Wrappers for total ordering on floats" +readme = "README.md" +keywords = [ + "no_std", + "ord", + "f64", + "f32", + "sort", +] +categories = [ + "science", + "rust-patterns", + "no-std", +] +license = "MIT" +repository = "https://github.com/reem/rust-ordered-float" + +[dependencies.arbitrary] +version = "1.0.0" +optional = true + +[dependencies.bytemuck] +version = "1.12.2" +optional = true +default-features = false + +[dependencies.num-traits] +version = "0.2.1" +default-features = false + +[dependencies.proptest] +version = "1.0.0" +optional = true + +[dependencies.rand] +version = "0.8.3" +optional = true +default-features = false + +[dependencies.rkyv] +version = "0.7.41" +features = ["rend"] +optional = true +default-features = false + +[dependencies.schemars] +version = "0.8.8" +optional = true + +[dependencies.serde] +version = "1.0" +optional = true +default-features = false + +[dependencies.speedy] +version = "0.8.3" +optional = true +default-features = false + +[dev-dependencies.serde_test] +version = "1.0" + +[features] +default = ["std"] +randtest = [ + "rand/std", + "rand/std_rng", +] +rkyv = ["rkyv_32"] +rkyv_16 = [ + "dep:rkyv", + "rkyv?/size_16", +] +rkyv_32 = [ + "dep:rkyv", + "rkyv?/size_32", +] +rkyv_64 = [ + "dep:rkyv", + "rkyv?/size_64", +] +rkyv_ck = ["rkyv?/validation"] +serde = [ + "dep:serde", + "rand?/serde1", +] +std = ["num-traits/std"] diff -Nru temporalio-1.3.0/vendor/ordered-float/LICENSE-MIT temporalio-1.3.0/vendor/ordered-float/LICENSE-MIT --- temporalio-1.3.0/vendor/ordered-float/LICENSE-MIT 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ordered-float/LICENSE-MIT 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,25 @@ +Copyright (c) 2015 Jonathan Reem + +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 -Nru temporalio-1.3.0/vendor/ordered-float/README.md temporalio-1.3.0/vendor/ordered-float/README.md --- temporalio-1.3.0/vendor/ordered-float/README.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ordered-float/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,34 @@ +# Ordered Floats + +Provides several wrapper types for Ord and Eq implementations on f64 and friends. + +See the [API documentation](https://docs.rs/ordered-float) for further details. + +## no_std + +To use `ordered_float` without requiring the Rust standard library, disable +the default `std` feature: + +```toml +[dependencies] +ordered-float = { version = "3.0", default-features = false } +``` + +## Optional features + +The following optional features can be enabled in `Cargo.toml`: + +* `bytemuck`: Adds implementations for traits provided by the `bytemuck` crate. +* `rand`: Adds implementations for various distribution types provided by the `rand` crate. +* `serde`: Implements the `serde::Serialize` and `serde::Deserialize` traits. +* `schemars`: Implements the `schemars::JsonSchema` trait. +* `proptest`: Implements the `proptest::Arbitrary` trait. +* `rkyv_16`: Implements `rkyv`'s `Archive`, `Serialize` and `Deserialize` traits with `size_16`. +* `rkyv_32`: Implements `rkyv`'s `Archive`, `Serialize` and `Deserialize` traits with `size_32`. +* `rkyv_64`: Implements `rkyv`'s `Archive`, `Serialize` and `Deserialize` traits with `size_64`. +* `rkyv_ck`: Implements the `bytecheck::CheckBytes` trait. +* `speedy`: Implements `speedy`'s `Readable` and `Writable` traits. + +## License + +MIT diff -Nru temporalio-1.3.0/vendor/ordered-float/rustfmt.toml temporalio-1.3.0/vendor/ordered-float/rustfmt.toml --- temporalio-1.3.0/vendor/ordered-float/rustfmt.toml 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ordered-float/rustfmt.toml 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,3 @@ +# These two unstable options might improve the layout of the code: +#fn_single_line = true +#where_single_line = true diff -Nru temporalio-1.3.0/vendor/ordered-float/src/lib.rs temporalio-1.3.0/vendor/ordered-float/src/lib.rs --- temporalio-1.3.0/vendor/ordered-float/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ordered-float/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,2593 @@ +#![no_std] +#![cfg_attr(test, deny(warnings))] +#![deny(missing_docs)] +#![allow(clippy::derive_partial_eq_without_eq)] + +//! Wrappers for total order on Floats. See the [`OrderedFloat`] and [`NotNan`] docs for details. + +#[cfg(feature = "std")] +extern crate std; +#[cfg(feature = "std")] +use std::error::Error; + +use core::borrow::Borrow; +use core::cmp::Ordering; +use core::convert::TryFrom; +use core::fmt; +use core::hash::{Hash, Hasher}; +use core::hint::unreachable_unchecked; +use core::iter::{Product, Sum}; +use core::num::FpCategory; +use core::ops::{ + Add, AddAssign, Deref, DerefMut, Div, DivAssign, Mul, MulAssign, Neg, Rem, RemAssign, Sub, + SubAssign, +}; +use core::str::FromStr; + +#[cfg(not(feature = "std"))] +use num_traits::float::FloatCore as Float; +use num_traits::{ + AsPrimitive, Bounded, FloatConst, FromPrimitive, Num, NumCast, One, Signed, ToPrimitive, Zero, +}; +#[cfg(feature = "std")] +pub use num_traits::{Float, Pow}; + +#[cfg(feature = "rand")] +pub use impl_rand::{UniformNotNan, UniformOrdered}; + +// masks for the parts of the IEEE 754 float +const SIGN_MASK: u64 = 0x8000000000000000u64; +const EXP_MASK: u64 = 0x7ff0000000000000u64; +const MAN_MASK: u64 = 0x000fffffffffffffu64; + +// canonical raw bit patterns (for hashing) +const CANONICAL_NAN_BITS: u64 = 0x7ff8000000000000u64; +const CANONICAL_ZERO_BITS: u64 = 0x0u64; + +/// A wrapper around floats providing implementations of `Eq`, `Ord`, and `Hash`. +/// +/// NaN is sorted as *greater* than all other values and *equal* +/// to itself, in contradiction with the IEEE standard. +/// +/// ``` +/// use ordered_float::OrderedFloat; +/// use std::f32::NAN; +/// +/// let mut v = [OrderedFloat(NAN), OrderedFloat(2.0), OrderedFloat(1.0)]; +/// v.sort(); +/// assert_eq!(v, [OrderedFloat(1.0), OrderedFloat(2.0), OrderedFloat(NAN)]); +/// ``` +/// +/// Because `OrderedFloat` implements `Ord` and `Eq`, it can be used as a key in a `HashSet`, +/// `HashMap`, `BTreeMap`, or `BTreeSet` (unlike the primitive `f32` or `f64` types): +/// +/// ``` +/// # use ordered_float::OrderedFloat; +/// # use std::collections::HashSet; +/// # use std::f32::NAN; +/// +/// let mut s: HashSet> = HashSet::new(); +/// s.insert(OrderedFloat(NAN)); +/// assert!(s.contains(&OrderedFloat(NAN))); +/// ``` +#[derive(Debug, Default, Clone, Copy)] +#[repr(transparent)] +pub struct OrderedFloat(pub T); + +impl OrderedFloat { + /// Get the value out. + #[inline] + pub fn into_inner(self) -> T { + self.0 + } +} + +impl AsRef for OrderedFloat { + #[inline] + fn as_ref(&self) -> &T { + &self.0 + } +} + +impl AsMut for OrderedFloat { + #[inline] + fn as_mut(&mut self) -> &mut T { + &mut self.0 + } +} + +impl<'a, T: Float> From<&'a T> for &'a OrderedFloat { + #[inline] + fn from(t: &'a T) -> &'a OrderedFloat { + // Safety: OrderedFloat is #[repr(transparent)] and has no invalid values. + unsafe { &*(t as *const T as *const OrderedFloat) } + } +} + +impl<'a, T: Float> From<&'a mut T> for &'a mut OrderedFloat { + #[inline] + fn from(t: &'a mut T) -> &'a mut OrderedFloat { + // Safety: OrderedFloat is #[repr(transparent)] and has no invalid values. + unsafe { &mut *(t as *mut T as *mut OrderedFloat) } + } +} + +impl PartialOrd for OrderedFloat { + #[inline] + fn partial_cmp(&self, other: &Self) -> Option { + Some(self.cmp(other)) + } +} + +impl Ord for OrderedFloat { + fn cmp(&self, other: &Self) -> Ordering { + let lhs = &self.0; + let rhs = &other.0; + match lhs.partial_cmp(rhs) { + Some(ordering) => ordering, + None => { + if lhs.is_nan() { + if rhs.is_nan() { + Ordering::Equal + } else { + Ordering::Greater + } + } else { + Ordering::Less + } + } + } + } +} + +impl PartialEq for OrderedFloat { + #[inline] + fn eq(&self, other: &OrderedFloat) -> bool { + if self.0.is_nan() { + other.0.is_nan() + } else { + self.0 == other.0 + } + } +} + +impl PartialEq for OrderedFloat { + #[inline] + fn eq(&self, other: &T) -> bool { + self.0 == *other + } +} + +impl Hash for OrderedFloat { + fn hash(&self, state: &mut H) { + let bits = if self.is_nan() { + CANONICAL_NAN_BITS + } else if self.is_zero() { + CANONICAL_ZERO_BITS + } else { + raw_double_bits(&self.0) + }; + + bits.hash(state) + } +} + +impl fmt::Display for OrderedFloat { + #[inline] + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + self.0.fmt(f) + } +} + +impl fmt::LowerExp for OrderedFloat { + #[inline] + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + self.0.fmt(f) + } +} + +impl fmt::UpperExp for OrderedFloat { + #[inline] + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + self.0.fmt(f) + } +} + +impl From> for f32 { + #[inline] + fn from(f: OrderedFloat) -> f32 { + f.0 + } +} + +impl From> for f64 { + #[inline] + fn from(f: OrderedFloat) -> f64 { + f.0 + } +} + +impl From for OrderedFloat { + #[inline] + fn from(val: T) -> Self { + OrderedFloat(val) + } +} + +impl From for OrderedFloat { + fn from(val: bool) -> Self { + OrderedFloat(val as u8 as f32) + } +} + +impl From for OrderedFloat { + fn from(val: bool) -> Self { + OrderedFloat(val as u8 as f64) + } +} + +macro_rules! impl_ordered_float_from { + ($dst:ty, $src:ty) => { + impl From<$src> for OrderedFloat<$dst> { + fn from(val: $src) -> Self { + OrderedFloat(val.into()) + } + } + }; +} +impl_ordered_float_from! {f64, i8} +impl_ordered_float_from! {f64, i16} +impl_ordered_float_from! {f64, i32} +impl_ordered_float_from! {f64, u8} +impl_ordered_float_from! {f64, u16} +impl_ordered_float_from! {f64, u32} +impl_ordered_float_from! {f32, i8} +impl_ordered_float_from! {f32, i16} +impl_ordered_float_from! {f32, u8} +impl_ordered_float_from! {f32, u16} + +impl Deref for OrderedFloat { + type Target = T; + + #[inline] + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl DerefMut for OrderedFloat { + #[inline] + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } +} + +impl Eq for OrderedFloat {} + +macro_rules! impl_ordered_float_binop { + ($imp:ident, $method:ident, $assign_imp:ident, $assign_method:ident) => { + impl $imp for OrderedFloat { + type Output = OrderedFloat; + + #[inline] + fn $method(self, other: Self) -> Self::Output { + OrderedFloat((self.0).$method(other.0)) + } + } + + impl $imp for OrderedFloat { + type Output = OrderedFloat; + + #[inline] + fn $method(self, other: T) -> Self::Output { + OrderedFloat((self.0).$method(other)) + } + } + + impl<'a, T> $imp<&'a T> for OrderedFloat + where + T: $imp<&'a T>, + { + type Output = OrderedFloat<>::Output>; + + #[inline] + fn $method(self, other: &'a T) -> Self::Output { + OrderedFloat((self.0).$method(other)) + } + } + + impl<'a, T> $imp<&'a Self> for OrderedFloat + where + T: $imp<&'a T>, + { + type Output = OrderedFloat<>::Output>; + + #[inline] + fn $method(self, other: &'a Self) -> Self::Output { + OrderedFloat((self.0).$method(&other.0)) + } + } + + impl<'a, T> $imp> for &'a OrderedFloat + where + &'a T: $imp, + { + type Output = OrderedFloat<<&'a T as $imp>::Output>; + + #[inline] + fn $method(self, other: OrderedFloat) -> Self::Output { + OrderedFloat((self.0).$method(other.0)) + } + } + + impl<'a, T> $imp for &'a OrderedFloat + where + &'a T: $imp, + { + type Output = OrderedFloat<<&'a T as $imp>::Output>; + + #[inline] + fn $method(self, other: T) -> Self::Output { + OrderedFloat((self.0).$method(other)) + } + } + + impl<'a, T> $imp<&'a T> for &'a OrderedFloat + where + &'a T: $imp, + { + type Output = OrderedFloat<<&'a T as $imp>::Output>; + + #[inline] + fn $method(self, other: &'a T) -> Self::Output { + OrderedFloat((self.0).$method(other)) + } + } + + impl $assign_imp for OrderedFloat { + #[inline] + fn $assign_method(&mut self, other: T) { + (self.0).$assign_method(other); + } + } + + impl<'a, T: $assign_imp<&'a T>> $assign_imp<&'a T> for OrderedFloat { + #[inline] + fn $assign_method(&mut self, other: &'a T) { + (self.0).$assign_method(other); + } + } + + impl $assign_imp for OrderedFloat { + #[inline] + fn $assign_method(&mut self, other: Self) { + (self.0).$assign_method(other.0); + } + } + + impl<'a, T: $assign_imp<&'a T>> $assign_imp<&'a Self> for OrderedFloat { + #[inline] + fn $assign_method(&mut self, other: &'a Self) { + (self.0).$assign_method(&other.0); + } + } + }; +} + +impl_ordered_float_binop! {Add, add, AddAssign, add_assign} +impl_ordered_float_binop! {Sub, sub, SubAssign, sub_assign} +impl_ordered_float_binop! {Mul, mul, MulAssign, mul_assign} +impl_ordered_float_binop! {Div, div, DivAssign, div_assign} +impl_ordered_float_binop! {Rem, rem, RemAssign, rem_assign} + +macro_rules! impl_ordered_float_pow { + ($inner:ty, $rhs:ty) => { + #[cfg(feature = "std")] + impl Pow<$rhs> for OrderedFloat<$inner> { + type Output = OrderedFloat<$inner>; + #[inline] + fn pow(self, rhs: $rhs) -> OrderedFloat<$inner> { + OrderedFloat(<$inner>::pow(self.0, rhs)) + } + } + + #[cfg(feature = "std")] + impl<'a> Pow<&'a $rhs> for OrderedFloat<$inner> { + type Output = OrderedFloat<$inner>; + #[inline] + fn pow(self, rhs: &'a $rhs) -> OrderedFloat<$inner> { + OrderedFloat(<$inner>::pow(self.0, *rhs)) + } + } + + #[cfg(feature = "std")] + impl<'a> Pow<$rhs> for &'a OrderedFloat<$inner> { + type Output = OrderedFloat<$inner>; + #[inline] + fn pow(self, rhs: $rhs) -> OrderedFloat<$inner> { + OrderedFloat(<$inner>::pow(self.0, rhs)) + } + } + + #[cfg(feature = "std")] + impl<'a, 'b> Pow<&'a $rhs> for &'b OrderedFloat<$inner> { + type Output = OrderedFloat<$inner>; + #[inline] + fn pow(self, rhs: &'a $rhs) -> OrderedFloat<$inner> { + OrderedFloat(<$inner>::pow(self.0, *rhs)) + } + } + }; +} + +impl_ordered_float_pow! {f32, i8} +impl_ordered_float_pow! {f32, i16} +impl_ordered_float_pow! {f32, u8} +impl_ordered_float_pow! {f32, u16} +impl_ordered_float_pow! {f32, i32} +impl_ordered_float_pow! {f64, i8} +impl_ordered_float_pow! {f64, i16} +impl_ordered_float_pow! {f64, u8} +impl_ordered_float_pow! {f64, u16} +impl_ordered_float_pow! {f64, i32} +impl_ordered_float_pow! {f32, f32} +impl_ordered_float_pow! {f64, f32} +impl_ordered_float_pow! {f64, f64} + +macro_rules! impl_ordered_float_self_pow { + ($base:ty, $exp:ty) => { + #[cfg(feature = "std")] + impl Pow> for OrderedFloat<$base> { + type Output = OrderedFloat<$base>; + #[inline] + fn pow(self, rhs: OrderedFloat<$exp>) -> OrderedFloat<$base> { + OrderedFloat(<$base>::pow(self.0, rhs.0)) + } + } + + #[cfg(feature = "std")] + impl<'a> Pow<&'a OrderedFloat<$exp>> for OrderedFloat<$base> { + type Output = OrderedFloat<$base>; + #[inline] + fn pow(self, rhs: &'a OrderedFloat<$exp>) -> OrderedFloat<$base> { + OrderedFloat(<$base>::pow(self.0, rhs.0)) + } + } + + #[cfg(feature = "std")] + impl<'a> Pow> for &'a OrderedFloat<$base> { + type Output = OrderedFloat<$base>; + #[inline] + fn pow(self, rhs: OrderedFloat<$exp>) -> OrderedFloat<$base> { + OrderedFloat(<$base>::pow(self.0, rhs.0)) + } + } + + #[cfg(feature = "std")] + impl<'a, 'b> Pow<&'a OrderedFloat<$exp>> for &'b OrderedFloat<$base> { + type Output = OrderedFloat<$base>; + #[inline] + fn pow(self, rhs: &'a OrderedFloat<$exp>) -> OrderedFloat<$base> { + OrderedFloat(<$base>::pow(self.0, rhs.0)) + } + } + }; +} + +impl_ordered_float_self_pow! {f32, f32} +impl_ordered_float_self_pow! {f64, f32} +impl_ordered_float_self_pow! {f64, f64} + +/// Adds a float directly. +impl Sum for OrderedFloat { + fn sum>>(iter: I) -> Self { + OrderedFloat(iter.map(|v| v.0).sum()) + } +} + +impl<'a, T: Float + Sum + 'a> Sum<&'a OrderedFloat> for OrderedFloat { + #[inline] + fn sum>>(iter: I) -> Self { + iter.cloned().sum() + } +} + +impl Product for OrderedFloat { + fn product>>(iter: I) -> Self { + OrderedFloat(iter.map(|v| v.0).product()) + } +} + +impl<'a, T: Float + Product + 'a> Product<&'a OrderedFloat> for OrderedFloat { + #[inline] + fn product>>(iter: I) -> Self { + iter.cloned().product() + } +} + +impl Signed for OrderedFloat { + #[inline] + fn abs(&self) -> Self { + OrderedFloat(self.0.abs()) + } + + fn abs_sub(&self, other: &Self) -> Self { + OrderedFloat(Signed::abs_sub(&self.0, &other.0)) + } + + #[inline] + fn signum(&self) -> Self { + OrderedFloat(self.0.signum()) + } + #[inline] + fn is_positive(&self) -> bool { + self.0.is_positive() + } + #[inline] + fn is_negative(&self) -> bool { + self.0.is_negative() + } +} + +impl Bounded for OrderedFloat { + #[inline] + fn min_value() -> Self { + OrderedFloat(T::min_value()) + } + + #[inline] + fn max_value() -> Self { + OrderedFloat(T::max_value()) + } +} + +impl FromStr for OrderedFloat { + type Err = T::Err; + + /// Convert a &str to `OrderedFloat`. Returns an error if the string fails to parse. + /// + /// ``` + /// use ordered_float::OrderedFloat; + /// + /// assert!("-10".parse::>().is_ok()); + /// assert!("abc".parse::>().is_err()); + /// assert!("NaN".parse::>().is_ok()); + /// ``` + fn from_str(s: &str) -> Result { + T::from_str(s).map(OrderedFloat) + } +} + +impl Neg for OrderedFloat { + type Output = OrderedFloat; + + #[inline] + fn neg(self) -> Self::Output { + OrderedFloat(-self.0) + } +} + +impl<'a, T> Neg for &'a OrderedFloat +where + &'a T: Neg, +{ + type Output = OrderedFloat<<&'a T as Neg>::Output>; + + #[inline] + fn neg(self) -> Self::Output { + OrderedFloat(-(&self.0)) + } +} + +impl Zero for OrderedFloat { + #[inline] + fn zero() -> Self { + OrderedFloat(T::zero()) + } + + #[inline] + fn is_zero(&self) -> bool { + self.0.is_zero() + } +} + +impl One for OrderedFloat { + #[inline] + fn one() -> Self { + OrderedFloat(T::one()) + } +} + +impl NumCast for OrderedFloat { + #[inline] + fn from(n: F) -> Option { + T::from(n).map(OrderedFloat) + } +} + +macro_rules! impl_as_primitive { + (@ (NotNan<$T: ty>) => $(#[$cfg:meta])* impl (NotNan<$U: ty>) ) => { + $(#[$cfg])* + impl AsPrimitive> for NotNan<$T> { + #[inline] fn as_(self) -> NotNan<$U> { + // Safety: `NotNan` guarantees that the value is not NaN. + unsafe {NotNan::new_unchecked(self.0 as $U) } + } + } + }; + (@ ($T: ty) => $(#[$cfg:meta])* impl (NotNan<$U: ty>) ) => { + $(#[$cfg])* + impl AsPrimitive> for $T { + #[inline] fn as_(self) -> NotNan<$U> { NotNan(self as $U) } + } + }; + (@ (NotNan<$T: ty>) => $(#[$cfg:meta])* impl ($U: ty) ) => { + $(#[$cfg])* + impl AsPrimitive<$U> for NotNan<$T> { + #[inline] fn as_(self) -> $U { self.0 as $U } + } + }; + (@ (OrderedFloat<$T: ty>) => $(#[$cfg:meta])* impl (OrderedFloat<$U: ty>) ) => { + $(#[$cfg])* + impl AsPrimitive> for OrderedFloat<$T> { + #[inline] fn as_(self) -> OrderedFloat<$U> { OrderedFloat(self.0 as $U) } + } + }; + (@ ($T: ty) => $(#[$cfg:meta])* impl (OrderedFloat<$U: ty>) ) => { + $(#[$cfg])* + impl AsPrimitive> for $T { + #[inline] fn as_(self) -> OrderedFloat<$U> { OrderedFloat(self as $U) } + } + }; + (@ (OrderedFloat<$T: ty>) => $(#[$cfg:meta])* impl ($U: ty) ) => { + $(#[$cfg])* + impl AsPrimitive<$U> for OrderedFloat<$T> { + #[inline] fn as_(self) -> $U { self.0 as $U } + } + }; + ($T: tt => { $( $U: tt ),* } ) => {$( + impl_as_primitive!(@ $T => impl $U); + )*}; +} + +impl_as_primitive!((OrderedFloat) => { (OrderedFloat), (OrderedFloat) }); +impl_as_primitive!((OrderedFloat) => { (OrderedFloat), (OrderedFloat) }); + +impl_as_primitive!((NotNan) => { (NotNan), (NotNan) }); +impl_as_primitive!((NotNan) => { (NotNan), (NotNan) }); + +impl_as_primitive!((u8) => { (OrderedFloat), (OrderedFloat) }); +impl_as_primitive!((i8) => { (OrderedFloat), (OrderedFloat) }); +impl_as_primitive!((u16) => { (OrderedFloat), (OrderedFloat) }); +impl_as_primitive!((i16) => { (OrderedFloat), (OrderedFloat) }); +impl_as_primitive!((u32) => { (OrderedFloat), (OrderedFloat) }); +impl_as_primitive!((i32) => { (OrderedFloat), (OrderedFloat) }); +impl_as_primitive!((u64) => { (OrderedFloat), (OrderedFloat) }); +impl_as_primitive!((i64) => { (OrderedFloat), (OrderedFloat) }); +impl_as_primitive!((usize) => { (OrderedFloat), (OrderedFloat) }); +impl_as_primitive!((isize) => { (OrderedFloat), (OrderedFloat) }); +impl_as_primitive!((f32) => { (OrderedFloat), (OrderedFloat) }); +impl_as_primitive!((f64) => { (OrderedFloat), (OrderedFloat) }); + +impl_as_primitive!((u8) => { (NotNan), (NotNan) }); +impl_as_primitive!((i8) => { (NotNan), (NotNan) }); +impl_as_primitive!((u16) => { (NotNan), (NotNan) }); +impl_as_primitive!((i16) => { (NotNan), (NotNan) }); +impl_as_primitive!((u32) => { (NotNan), (NotNan) }); +impl_as_primitive!((i32) => { (NotNan), (NotNan) }); +impl_as_primitive!((u64) => { (NotNan), (NotNan) }); +impl_as_primitive!((i64) => { (NotNan), (NotNan) }); +impl_as_primitive!((usize) => { (NotNan), (NotNan) }); +impl_as_primitive!((isize) => { (NotNan), (NotNan) }); + +impl_as_primitive!((OrderedFloat) => { (u8), (u16), (u32), (u64), (usize), (i8), (i16), (i32), (i64), (isize), (f32), (f64) }); +impl_as_primitive!((OrderedFloat) => { (u8), (u16), (u32), (u64), (usize), (i8), (i16), (i32), (i64), (isize), (f32), (f64) }); + +impl_as_primitive!((NotNan) => { (u8), (u16), (u32), (u64), (usize), (i8), (i16), (i32), (i64), (isize), (f32), (f64) }); +impl_as_primitive!((NotNan) => { (u8), (u16), (u32), (u64), (usize), (i8), (i16), (i32), (i64), (isize), (f32), (f64) }); + +impl FromPrimitive for OrderedFloat { + fn from_i64(n: i64) -> Option { + T::from_i64(n).map(OrderedFloat) + } + fn from_u64(n: u64) -> Option { + T::from_u64(n).map(OrderedFloat) + } + fn from_isize(n: isize) -> Option { + T::from_isize(n).map(OrderedFloat) + } + fn from_i8(n: i8) -> Option { + T::from_i8(n).map(OrderedFloat) + } + fn from_i16(n: i16) -> Option { + T::from_i16(n).map(OrderedFloat) + } + fn from_i32(n: i32) -> Option { + T::from_i32(n).map(OrderedFloat) + } + fn from_usize(n: usize) -> Option { + T::from_usize(n).map(OrderedFloat) + } + fn from_u8(n: u8) -> Option { + T::from_u8(n).map(OrderedFloat) + } + fn from_u16(n: u16) -> Option { + T::from_u16(n).map(OrderedFloat) + } + fn from_u32(n: u32) -> Option { + T::from_u32(n).map(OrderedFloat) + } + fn from_f32(n: f32) -> Option { + T::from_f32(n).map(OrderedFloat) + } + fn from_f64(n: f64) -> Option { + T::from_f64(n).map(OrderedFloat) + } +} + +impl ToPrimitive for OrderedFloat { + fn to_i64(&self) -> Option { + self.0.to_i64() + } + fn to_u64(&self) -> Option { + self.0.to_u64() + } + fn to_isize(&self) -> Option { + self.0.to_isize() + } + fn to_i8(&self) -> Option { + self.0.to_i8() + } + fn to_i16(&self) -> Option { + self.0.to_i16() + } + fn to_i32(&self) -> Option { + self.0.to_i32() + } + fn to_usize(&self) -> Option { + self.0.to_usize() + } + fn to_u8(&self) -> Option { + self.0.to_u8() + } + fn to_u16(&self) -> Option { + self.0.to_u16() + } + fn to_u32(&self) -> Option { + self.0.to_u32() + } + fn to_f32(&self) -> Option { + self.0.to_f32() + } + fn to_f64(&self) -> Option { + self.0.to_f64() + } +} + +impl num_traits::float::FloatCore for OrderedFloat { + fn nan() -> Self { + OrderedFloat(T::nan()) + } + fn infinity() -> Self { + OrderedFloat(T::infinity()) + } + fn neg_infinity() -> Self { + OrderedFloat(T::neg_infinity()) + } + fn neg_zero() -> Self { + OrderedFloat(T::neg_zero()) + } + fn min_value() -> Self { + OrderedFloat(T::min_value()) + } + fn min_positive_value() -> Self { + OrderedFloat(T::min_positive_value()) + } + fn max_value() -> Self { + OrderedFloat(T::max_value()) + } + fn is_nan(self) -> bool { + self.0.is_nan() + } + fn is_infinite(self) -> bool { + self.0.is_infinite() + } + fn is_finite(self) -> bool { + self.0.is_finite() + } + fn is_normal(self) -> bool { + self.0.is_normal() + } + fn classify(self) -> FpCategory { + self.0.classify() + } + fn floor(self) -> Self { + OrderedFloat(self.0.floor()) + } + fn ceil(self) -> Self { + OrderedFloat(self.0.ceil()) + } + fn round(self) -> Self { + OrderedFloat(self.0.round()) + } + fn trunc(self) -> Self { + OrderedFloat(self.0.trunc()) + } + fn fract(self) -> Self { + OrderedFloat(self.0.fract()) + } + fn abs(self) -> Self { + OrderedFloat(self.0.abs()) + } + fn signum(self) -> Self { + OrderedFloat(self.0.signum()) + } + fn is_sign_positive(self) -> bool { + self.0.is_sign_positive() + } + fn is_sign_negative(self) -> bool { + self.0.is_sign_negative() + } + fn recip(self) -> Self { + OrderedFloat(self.0.recip()) + } + fn powi(self, n: i32) -> Self { + OrderedFloat(self.0.powi(n)) + } + fn integer_decode(self) -> (u64, i16, i8) { + self.0.integer_decode() + } + fn epsilon() -> Self { + OrderedFloat(T::epsilon()) + } + fn to_degrees(self) -> Self { + OrderedFloat(self.0.to_degrees()) + } + fn to_radians(self) -> Self { + OrderedFloat(self.0.to_radians()) + } +} + +#[cfg(feature = "std")] +impl Float for OrderedFloat { + fn nan() -> Self { + OrderedFloat(T::nan()) + } + fn infinity() -> Self { + OrderedFloat(T::infinity()) + } + fn neg_infinity() -> Self { + OrderedFloat(T::neg_infinity()) + } + fn neg_zero() -> Self { + OrderedFloat(T::neg_zero()) + } + fn min_value() -> Self { + OrderedFloat(T::min_value()) + } + fn min_positive_value() -> Self { + OrderedFloat(T::min_positive_value()) + } + fn max_value() -> Self { + OrderedFloat(T::max_value()) + } + fn is_nan(self) -> bool { + self.0.is_nan() + } + fn is_infinite(self) -> bool { + self.0.is_infinite() + } + fn is_finite(self) -> bool { + self.0.is_finite() + } + fn is_normal(self) -> bool { + self.0.is_normal() + } + fn classify(self) -> FpCategory { + self.0.classify() + } + fn floor(self) -> Self { + OrderedFloat(self.0.floor()) + } + fn ceil(self) -> Self { + OrderedFloat(self.0.ceil()) + } + fn round(self) -> Self { + OrderedFloat(self.0.round()) + } + fn trunc(self) -> Self { + OrderedFloat(self.0.trunc()) + } + fn fract(self) -> Self { + OrderedFloat(self.0.fract()) + } + fn abs(self) -> Self { + OrderedFloat(self.0.abs()) + } + fn signum(self) -> Self { + OrderedFloat(self.0.signum()) + } + fn is_sign_positive(self) -> bool { + self.0.is_sign_positive() + } + fn is_sign_negative(self) -> bool { + self.0.is_sign_negative() + } + fn mul_add(self, a: Self, b: Self) -> Self { + OrderedFloat(self.0.mul_add(a.0, b.0)) + } + fn recip(self) -> Self { + OrderedFloat(self.0.recip()) + } + fn powi(self, n: i32) -> Self { + OrderedFloat(self.0.powi(n)) + } + fn powf(self, n: Self) -> Self { + OrderedFloat(self.0.powf(n.0)) + } + fn sqrt(self) -> Self { + OrderedFloat(self.0.sqrt()) + } + fn exp(self) -> Self { + OrderedFloat(self.0.exp()) + } + fn exp2(self) -> Self { + OrderedFloat(self.0.exp2()) + } + fn ln(self) -> Self { + OrderedFloat(self.0.ln()) + } + fn log(self, base: Self) -> Self { + OrderedFloat(self.0.log(base.0)) + } + fn log2(self) -> Self { + OrderedFloat(self.0.log2()) + } + fn log10(self) -> Self { + OrderedFloat(self.0.log10()) + } + fn max(self, other: Self) -> Self { + OrderedFloat(self.0.max(other.0)) + } + fn min(self, other: Self) -> Self { + OrderedFloat(self.0.min(other.0)) + } + fn abs_sub(self, other: Self) -> Self { + OrderedFloat(self.0.abs_sub(other.0)) + } + fn cbrt(self) -> Self { + OrderedFloat(self.0.cbrt()) + } + fn hypot(self, other: Self) -> Self { + OrderedFloat(self.0.hypot(other.0)) + } + fn sin(self) -> Self { + OrderedFloat(self.0.sin()) + } + fn cos(self) -> Self { + OrderedFloat(self.0.cos()) + } + fn tan(self) -> Self { + OrderedFloat(self.0.tan()) + } + fn asin(self) -> Self { + OrderedFloat(self.0.asin()) + } + fn acos(self) -> Self { + OrderedFloat(self.0.acos()) + } + fn atan(self) -> Self { + OrderedFloat(self.0.atan()) + } + fn atan2(self, other: Self) -> Self { + OrderedFloat(self.0.atan2(other.0)) + } + fn sin_cos(self) -> (Self, Self) { + let (a, b) = self.0.sin_cos(); + (OrderedFloat(a), OrderedFloat(b)) + } + fn exp_m1(self) -> Self { + OrderedFloat(self.0.exp_m1()) + } + fn ln_1p(self) -> Self { + OrderedFloat(self.0.ln_1p()) + } + fn sinh(self) -> Self { + OrderedFloat(self.0.sinh()) + } + fn cosh(self) -> Self { + OrderedFloat(self.0.cosh()) + } + fn tanh(self) -> Self { + OrderedFloat(self.0.tanh()) + } + fn asinh(self) -> Self { + OrderedFloat(self.0.asinh()) + } + fn acosh(self) -> Self { + OrderedFloat(self.0.acosh()) + } + fn atanh(self) -> Self { + OrderedFloat(self.0.atanh()) + } + fn integer_decode(self) -> (u64, i16, i8) { + self.0.integer_decode() + } + fn epsilon() -> Self { + OrderedFloat(T::epsilon()) + } + fn to_degrees(self) -> Self { + OrderedFloat(self.0.to_degrees()) + } + fn to_radians(self) -> Self { + OrderedFloat(self.0.to_radians()) + } +} + +impl Num for OrderedFloat { + type FromStrRadixErr = T::FromStrRadixErr; + fn from_str_radix(str: &str, radix: u32) -> Result { + T::from_str_radix(str, radix).map(OrderedFloat) + } +} + +/// A wrapper around floats providing an implementation of `Eq`, `Ord` and `Hash`. +/// +/// A NaN value cannot be stored in this type. +/// +/// ``` +/// use ordered_float::NotNan; +/// +/// let mut v = [ +/// NotNan::new(2.0).unwrap(), +/// NotNan::new(1.0).unwrap(), +/// ]; +/// v.sort(); +/// assert_eq!(v, [1.0, 2.0]); +/// ``` +/// +/// Because `NotNan` implements `Ord` and `Eq`, it can be used as a key in a `HashSet`, +/// `HashMap`, `BTreeMap`, or `BTreeSet` (unlike the primitive `f32` or `f64` types): +/// +/// ``` +/// # use ordered_float::NotNan; +/// # use std::collections::HashSet; +/// +/// let mut s: HashSet> = HashSet::new(); +/// let key = NotNan::new(1.0).unwrap(); +/// s.insert(key); +/// assert!(s.contains(&key)); +/// ``` +/// +/// Arithmetic on NotNan values will panic if it produces a NaN value: +/// +/// ```should_panic +/// # use ordered_float::NotNan; +/// let a = NotNan::new(std::f32::INFINITY).unwrap(); +/// let b = NotNan::new(std::f32::NEG_INFINITY).unwrap(); +/// +/// // This will panic: +/// let c = a + b; +/// ``` +#[derive(PartialOrd, PartialEq, Debug, Default, Clone, Copy)] +#[repr(transparent)] +pub struct NotNan(T); + +impl NotNan { + /// Create a `NotNan` value. + /// + /// Returns `Err` if `val` is NaN + pub fn new(val: T) -> Result { + match val { + ref val if val.is_nan() => Err(FloatIsNan), + val => Ok(NotNan(val)), + } + } +} + +impl NotNan { + /// Get the value out. + #[inline] + pub fn into_inner(self) -> T { + self.0 + } + + /// Create a `NotNan` value from a value that is guaranteed to not be NaN + /// + /// # Safety + /// + /// Behaviour is undefined if `val` is NaN + #[inline] + pub const unsafe fn new_unchecked(val: T) -> Self { + NotNan(val) + } + + /// Create a `NotNan` value from a value that is guaranteed to not be NaN + /// + /// # Safety + /// + /// Behaviour is undefined if `val` is NaN + #[deprecated( + since = "2.5.0", + note = "Please use the new_unchecked function instead." + )] + #[inline] + pub const unsafe fn unchecked_new(val: T) -> Self { + Self::new_unchecked(val) + } +} + +impl AsRef for NotNan { + #[inline] + fn as_ref(&self) -> &T { + &self.0 + } +} + +impl Borrow for NotNan { + #[inline] + fn borrow(&self) -> &f32 { + &self.0 + } +} + +impl Borrow for NotNan { + #[inline] + fn borrow(&self) -> &f64 { + &self.0 + } +} + +#[allow(clippy::derive_ord_xor_partial_ord)] +impl Ord for NotNan { + fn cmp(&self, other: &NotNan) -> Ordering { + match self.partial_cmp(other) { + Some(ord) => ord, + None => unsafe { unreachable_unchecked() }, + } + } +} + +impl Hash for NotNan { + #[inline] + fn hash(&self, state: &mut H) { + let bits = if self.is_zero() { + CANONICAL_ZERO_BITS + } else { + raw_double_bits(&self.0) + }; + + bits.hash(state) + } +} + +impl fmt::Display for NotNan { + #[inline] + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + self.0.fmt(f) + } +} + +impl NotNan { + /// Converts this [`NotNan`]`<`[`f64`]`>` to a [`NotNan`]`<`[`f32`]`>` while giving up on + /// precision, [using `roundTiesToEven` as rounding mode, yielding `Infinity` on + /// overflow](https://doc.rust-lang.org/reference/expressions/operator-expr.html#semantics). + pub fn as_f32(self) -> NotNan { + // This is not destroying invariants, as it is a pure rounding operation. The only two special + // cases are where f32 would be overflowing, then the operation yields Infinity, or where + // the input is already NaN, in which case the invariant is already broken elsewhere. + NotNan(self.0 as f32) + } +} + +impl From> for f32 { + #[inline] + fn from(value: NotNan) -> Self { + value.0 + } +} + +impl From> for f64 { + #[inline] + fn from(value: NotNan) -> Self { + value.0 + } +} + +impl TryFrom for NotNan { + type Error = FloatIsNan; + #[inline] + fn try_from(v: f32) -> Result { + NotNan::new(v) + } +} + +impl TryFrom for NotNan { + type Error = FloatIsNan; + #[inline] + fn try_from(v: f64) -> Result { + NotNan::new(v) + } +} + +macro_rules! impl_from_int_primitive { + ($primitive:ty, $inner:ty) => { + impl From<$primitive> for NotNan<$inner> { + fn from(source: $primitive) -> Self { + // the primitives with which this macro will be called cannot hold a value that + // f64::from would convert to NaN, so this does not hurt invariants + NotNan(<$inner as From<$primitive>>::from(source)) + } + } + }; +} + +impl_from_int_primitive!(i8, f64); +impl_from_int_primitive!(i16, f64); +impl_from_int_primitive!(i32, f64); +impl_from_int_primitive!(u8, f64); +impl_from_int_primitive!(u16, f64); +impl_from_int_primitive!(u32, f64); + +impl_from_int_primitive!(i8, f32); +impl_from_int_primitive!(i16, f32); +impl_from_int_primitive!(u8, f32); +impl_from_int_primitive!(u16, f32); + +impl From> for NotNan { + #[inline] + fn from(v: NotNan) -> NotNan { + unsafe { NotNan::new_unchecked(v.0 as f64) } + } +} + +impl Deref for NotNan { + type Target = T; + + #[inline] + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl Eq for NotNan {} + +impl PartialEq for NotNan { + #[inline] + fn eq(&self, other: &T) -> bool { + self.0 == *other + } +} + +/// Adds a float directly. +/// +/// Panics if the provided value is NaN or the computation results in NaN +impl Add for NotNan { + type Output = Self; + + #[inline] + fn add(self, other: T) -> Self { + NotNan::new(self.0 + other).expect("Addition resulted in NaN") + } +} + +/// Adds a float directly. +/// +/// Panics if the provided value is NaN. +impl Sum for NotNan { + fn sum>>(iter: I) -> Self { + NotNan::new(iter.map(|v| v.0).sum()).expect("Sum resulted in NaN") + } +} + +impl<'a, T: Float + Sum + 'a> Sum<&'a NotNan> for NotNan { + #[inline] + fn sum>>(iter: I) -> Self { + iter.cloned().sum() + } +} + +/// Subtracts a float directly. +/// +/// Panics if the provided value is NaN or the computation results in NaN +impl Sub for NotNan { + type Output = Self; + + #[inline] + fn sub(self, other: T) -> Self { + NotNan::new(self.0 - other).expect("Subtraction resulted in NaN") + } +} + +/// Multiplies a float directly. +/// +/// Panics if the provided value is NaN or the computation results in NaN +impl Mul for NotNan { + type Output = Self; + + #[inline] + fn mul(self, other: T) -> Self { + NotNan::new(self.0 * other).expect("Multiplication resulted in NaN") + } +} + +impl Product for NotNan { + fn product>>(iter: I) -> Self { + NotNan::new(iter.map(|v| v.0).product()).expect("Product resulted in NaN") + } +} + +impl<'a, T: Float + Product + 'a> Product<&'a NotNan> for NotNan { + #[inline] + fn product>>(iter: I) -> Self { + iter.cloned().product() + } +} + +/// Divides a float directly. +/// +/// Panics if the provided value is NaN or the computation results in NaN +impl Div for NotNan { + type Output = Self; + + #[inline] + fn div(self, other: T) -> Self { + NotNan::new(self.0 / other).expect("Division resulted in NaN") + } +} + +/// Calculates `%` with a float directly. +/// +/// Panics if the provided value is NaN or the computation results in NaN +impl Rem for NotNan { + type Output = Self; + + #[inline] + fn rem(self, other: T) -> Self { + NotNan::new(self.0 % other).expect("Rem resulted in NaN") + } +} + +macro_rules! impl_not_nan_binop { + ($imp:ident, $method:ident, $assign_imp:ident, $assign_method:ident) => { + impl $imp for NotNan { + type Output = Self; + + #[inline] + fn $method(self, other: Self) -> Self { + self.$method(other.0) + } + } + + impl $imp<&T> for NotNan { + type Output = NotNan; + + #[inline] + fn $method(self, other: &T) -> Self::Output { + self.$method(*other) + } + } + + impl $imp<&Self> for NotNan { + type Output = NotNan; + + #[inline] + fn $method(self, other: &Self) -> Self::Output { + self.$method(other.0) + } + } + + impl $imp for &NotNan { + type Output = NotNan; + + #[inline] + fn $method(self, other: Self) -> Self::Output { + (*self).$method(other.0) + } + } + + impl $imp> for &NotNan { + type Output = NotNan; + + #[inline] + fn $method(self, other: NotNan) -> Self::Output { + (*self).$method(other.0) + } + } + + impl $imp for &NotNan { + type Output = NotNan; + + #[inline] + fn $method(self, other: T) -> Self::Output { + (*self).$method(other) + } + } + + impl $imp<&T> for &NotNan { + type Output = NotNan; + + #[inline] + fn $method(self, other: &T) -> Self::Output { + (*self).$method(*other) + } + } + + impl $assign_imp for NotNan { + #[inline] + fn $assign_method(&mut self, other: T) { + *self = (*self).$method(other); + } + } + + impl $assign_imp<&T> for NotNan { + #[inline] + fn $assign_method(&mut self, other: &T) { + *self = (*self).$method(*other); + } + } + + impl $assign_imp for NotNan { + #[inline] + fn $assign_method(&mut self, other: Self) { + (*self).$assign_method(other.0); + } + } + + impl $assign_imp<&Self> for NotNan { + #[inline] + fn $assign_method(&mut self, other: &Self) { + (*self).$assign_method(other.0); + } + } + }; +} + +impl_not_nan_binop! {Add, add, AddAssign, add_assign} +impl_not_nan_binop! {Sub, sub, SubAssign, sub_assign} +impl_not_nan_binop! {Mul, mul, MulAssign, mul_assign} +impl_not_nan_binop! {Div, div, DivAssign, div_assign} +impl_not_nan_binop! {Rem, rem, RemAssign, rem_assign} + +// Will panic if NaN value is return from the operation +macro_rules! impl_not_nan_pow { + ($inner:ty, $rhs:ty) => { + #[cfg(feature = "std")] + impl Pow<$rhs> for NotNan<$inner> { + type Output = NotNan<$inner>; + #[inline] + fn pow(self, rhs: $rhs) -> NotNan<$inner> { + NotNan::new(<$inner>::pow(self.0, rhs)).expect("Pow resulted in NaN") + } + } + + #[cfg(feature = "std")] + impl<'a> Pow<&'a $rhs> for NotNan<$inner> { + type Output = NotNan<$inner>; + #[inline] + fn pow(self, rhs: &'a $rhs) -> NotNan<$inner> { + NotNan::new(<$inner>::pow(self.0, *rhs)).expect("Pow resulted in NaN") + } + } + + #[cfg(feature = "std")] + impl<'a> Pow<$rhs> for &'a NotNan<$inner> { + type Output = NotNan<$inner>; + #[inline] + fn pow(self, rhs: $rhs) -> NotNan<$inner> { + NotNan::new(<$inner>::pow(self.0, rhs)).expect("Pow resulted in NaN") + } + } + + #[cfg(feature = "std")] + impl<'a, 'b> Pow<&'a $rhs> for &'b NotNan<$inner> { + type Output = NotNan<$inner>; + #[inline] + fn pow(self, rhs: &'a $rhs) -> NotNan<$inner> { + NotNan::new(<$inner>::pow(self.0, *rhs)).expect("Pow resulted in NaN") + } + } + }; +} + +impl_not_nan_pow! {f32, i8} +impl_not_nan_pow! {f32, i16} +impl_not_nan_pow! {f32, u8} +impl_not_nan_pow! {f32, u16} +impl_not_nan_pow! {f32, i32} +impl_not_nan_pow! {f64, i8} +impl_not_nan_pow! {f64, i16} +impl_not_nan_pow! {f64, u8} +impl_not_nan_pow! {f64, u16} +impl_not_nan_pow! {f64, i32} +impl_not_nan_pow! {f32, f32} +impl_not_nan_pow! {f64, f32} +impl_not_nan_pow! {f64, f64} + +// This also should panic on NaN +macro_rules! impl_not_nan_self_pow { + ($base:ty, $exp:ty) => { + #[cfg(feature = "std")] + impl Pow> for NotNan<$base> { + type Output = NotNan<$base>; + #[inline] + fn pow(self, rhs: NotNan<$exp>) -> NotNan<$base> { + NotNan::new(self.0.pow(rhs.0)).expect("Pow resulted in NaN") + } + } + + #[cfg(feature = "std")] + impl<'a> Pow<&'a NotNan<$exp>> for NotNan<$base> { + type Output = NotNan<$base>; + #[inline] + fn pow(self, rhs: &'a NotNan<$exp>) -> NotNan<$base> { + NotNan::new(self.0.pow(rhs.0)).expect("Pow resulted in NaN") + } + } + + #[cfg(feature = "std")] + impl<'a> Pow> for &'a NotNan<$base> { + type Output = NotNan<$base>; + #[inline] + fn pow(self, rhs: NotNan<$exp>) -> NotNan<$base> { + NotNan::new(self.0.pow(rhs.0)).expect("Pow resulted in NaN") + } + } + + #[cfg(feature = "std")] + impl<'a, 'b> Pow<&'a NotNan<$exp>> for &'b NotNan<$base> { + type Output = NotNan<$base>; + #[inline] + fn pow(self, rhs: &'a NotNan<$exp>) -> NotNan<$base> { + NotNan::new(self.0.pow(rhs.0)).expect("Pow resulted in NaN") + } + } + }; +} + +impl_not_nan_self_pow! {f32, f32} +impl_not_nan_self_pow! {f64, f32} +impl_not_nan_self_pow! {f64, f64} + +impl Neg for NotNan { + type Output = Self; + + #[inline] + fn neg(self) -> Self { + NotNan(-self.0) + } +} + +impl Neg for &NotNan { + type Output = NotNan; + + #[inline] + fn neg(self) -> Self::Output { + NotNan(-self.0) + } +} + +/// An error indicating an attempt to construct NotNan from a NaN +#[derive(Copy, Clone, PartialEq, Eq, Debug)] +pub struct FloatIsNan; + +#[cfg(feature = "std")] +impl Error for FloatIsNan { + fn description(&self) -> &str { + "NotNan constructed with NaN" + } +} + +impl fmt::Display for FloatIsNan { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "NotNan constructed with NaN") + } +} + +#[cfg(feature = "std")] +impl From for std::io::Error { + #[inline] + fn from(e: FloatIsNan) -> std::io::Error { + std::io::Error::new(std::io::ErrorKind::InvalidInput, e) + } +} + +#[inline] +/// Used for hashing. Input must not be zero or NaN. +fn raw_double_bits(f: &F) -> u64 { + let (man, exp, sign) = f.integer_decode(); + let exp_u64 = exp as u16 as u64; + let sign_u64 = (sign > 0) as u64; + (man & MAN_MASK) | ((exp_u64 << 52) & EXP_MASK) | ((sign_u64 << 63) & SIGN_MASK) +} + +impl Zero for NotNan { + #[inline] + fn zero() -> Self { + NotNan(T::zero()) + } + + #[inline] + fn is_zero(&self) -> bool { + self.0.is_zero() + } +} + +impl One for NotNan { + #[inline] + fn one() -> Self { + NotNan(T::one()) + } +} + +impl Bounded for NotNan { + #[inline] + fn min_value() -> Self { + NotNan(T::min_value()) + } + + #[inline] + fn max_value() -> Self { + NotNan(T::max_value()) + } +} + +impl FromStr for NotNan { + type Err = ParseNotNanError; + + /// Convert a &str to `NotNan`. Returns an error if the string fails to parse, + /// or if the resulting value is NaN + /// + /// ``` + /// use ordered_float::NotNan; + /// + /// assert!("-10".parse::>().is_ok()); + /// assert!("abc".parse::>().is_err()); + /// assert!("NaN".parse::>().is_err()); + /// ``` + fn from_str(src: &str) -> Result { + src.parse() + .map_err(ParseNotNanError::ParseFloatError) + .and_then(|f| NotNan::new(f).map_err(|_| ParseNotNanError::IsNaN)) + } +} + +impl FromPrimitive for NotNan { + fn from_i64(n: i64) -> Option { + T::from_i64(n).and_then(|n| NotNan::new(n).ok()) + } + fn from_u64(n: u64) -> Option { + T::from_u64(n).and_then(|n| NotNan::new(n).ok()) + } + + fn from_isize(n: isize) -> Option { + T::from_isize(n).and_then(|n| NotNan::new(n).ok()) + } + fn from_i8(n: i8) -> Option { + T::from_i8(n).and_then(|n| NotNan::new(n).ok()) + } + fn from_i16(n: i16) -> Option { + T::from_i16(n).and_then(|n| NotNan::new(n).ok()) + } + fn from_i32(n: i32) -> Option { + T::from_i32(n).and_then(|n| NotNan::new(n).ok()) + } + fn from_usize(n: usize) -> Option { + T::from_usize(n).and_then(|n| NotNan::new(n).ok()) + } + fn from_u8(n: u8) -> Option { + T::from_u8(n).and_then(|n| NotNan::new(n).ok()) + } + fn from_u16(n: u16) -> Option { + T::from_u16(n).and_then(|n| NotNan::new(n).ok()) + } + fn from_u32(n: u32) -> Option { + T::from_u32(n).and_then(|n| NotNan::new(n).ok()) + } + fn from_f32(n: f32) -> Option { + T::from_f32(n).and_then(|n| NotNan::new(n).ok()) + } + fn from_f64(n: f64) -> Option { + T::from_f64(n).and_then(|n| NotNan::new(n).ok()) + } +} + +impl ToPrimitive for NotNan { + fn to_i64(&self) -> Option { + self.0.to_i64() + } + fn to_u64(&self) -> Option { + self.0.to_u64() + } + + fn to_isize(&self) -> Option { + self.0.to_isize() + } + fn to_i8(&self) -> Option { + self.0.to_i8() + } + fn to_i16(&self) -> Option { + self.0.to_i16() + } + fn to_i32(&self) -> Option { + self.0.to_i32() + } + fn to_usize(&self) -> Option { + self.0.to_usize() + } + fn to_u8(&self) -> Option { + self.0.to_u8() + } + fn to_u16(&self) -> Option { + self.0.to_u16() + } + fn to_u32(&self) -> Option { + self.0.to_u32() + } + fn to_f32(&self) -> Option { + self.0.to_f32() + } + fn to_f64(&self) -> Option { + self.0.to_f64() + } +} + +/// An error indicating a parse error from a string for `NotNan`. +#[derive(Copy, Clone, PartialEq, Eq, Debug)] +pub enum ParseNotNanError { + /// A plain parse error from the underlying float type. + ParseFloatError(E), + /// The parsed float value resulted in a NaN. + IsNaN, +} + +#[cfg(feature = "std")] +impl Error for ParseNotNanError { + fn description(&self) -> &str { + "Error parsing a not-NaN floating point value" + } + + fn source(&self) -> Option<&(dyn Error + 'static)> { + match self { + ParseNotNanError::ParseFloatError(e) => Some(e), + ParseNotNanError::IsNaN => None, + } + } +} + +impl fmt::Display for ParseNotNanError { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self { + ParseNotNanError::ParseFloatError(e) => write!(f, "Parse error: {}", e), + ParseNotNanError::IsNaN => write!(f, "NotNan parser encounter a NaN"), + } + } +} + +impl Num for NotNan { + type FromStrRadixErr = ParseNotNanError; + + fn from_str_radix(src: &str, radix: u32) -> Result { + T::from_str_radix(src, radix) + .map_err(ParseNotNanError::ParseFloatError) + .and_then(|n| NotNan::new(n).map_err(|_| ParseNotNanError::IsNaN)) + } +} + +impl Signed for NotNan { + #[inline] + fn abs(&self) -> Self { + NotNan(self.0.abs()) + } + + fn abs_sub(&self, other: &Self) -> Self { + NotNan::new(Signed::abs_sub(&self.0, &other.0)).expect("Subtraction resulted in NaN") + } + + #[inline] + fn signum(&self) -> Self { + NotNan(self.0.signum()) + } + #[inline] + fn is_positive(&self) -> bool { + self.0.is_positive() + } + #[inline] + fn is_negative(&self) -> bool { + self.0.is_negative() + } +} + +impl NumCast for NotNan { + fn from(n: F) -> Option { + T::from(n).and_then(|n| NotNan::new(n).ok()) + } +} + +macro_rules! impl_float_const_method { + ($wrapper:expr, $method:ident) => { + #[allow(non_snake_case)] + fn $method() -> Self { + $wrapper(T::$method()) + } + }; +} + +macro_rules! impl_float_const { + ($type:ident, $wrapper:expr) => { + impl FloatConst for $type { + impl_float_const_method!($wrapper, E); + impl_float_const_method!($wrapper, FRAC_1_PI); + impl_float_const_method!($wrapper, FRAC_1_SQRT_2); + impl_float_const_method!($wrapper, FRAC_2_PI); + impl_float_const_method!($wrapper, FRAC_2_SQRT_PI); + impl_float_const_method!($wrapper, FRAC_PI_2); + impl_float_const_method!($wrapper, FRAC_PI_3); + impl_float_const_method!($wrapper, FRAC_PI_4); + impl_float_const_method!($wrapper, FRAC_PI_6); + impl_float_const_method!($wrapper, FRAC_PI_8); + impl_float_const_method!($wrapper, LN_10); + impl_float_const_method!($wrapper, LN_2); + impl_float_const_method!($wrapper, LOG10_E); + impl_float_const_method!($wrapper, LOG2_E); + impl_float_const_method!($wrapper, PI); + impl_float_const_method!($wrapper, SQRT_2); + } + }; +} + +impl_float_const!(OrderedFloat, OrderedFloat); +// Float constants are not NaN. +impl_float_const!(NotNan, |x| unsafe { NotNan::new_unchecked(x) }); + +#[cfg(feature = "serde")] +mod impl_serde { + extern crate serde; + use self::serde::de::{Error, Unexpected}; + use self::serde::{Deserialize, Deserializer, Serialize, Serializer}; + use super::{NotNan, OrderedFloat}; + use core::f64; + #[cfg(not(feature = "std"))] + use num_traits::float::FloatCore as Float; + #[cfg(feature = "std")] + use num_traits::Float; + + #[cfg(test)] + extern crate serde_test; + #[cfg(test)] + use self::serde_test::{assert_de_tokens_error, assert_tokens, Token}; + + impl Serialize for OrderedFloat { + #[inline] + fn serialize(&self, s: S) -> Result { + self.0.serialize(s) + } + } + + impl<'de, T: Float + Deserialize<'de>> Deserialize<'de> for OrderedFloat { + #[inline] + fn deserialize>(d: D) -> Result { + T::deserialize(d).map(OrderedFloat) + } + } + + impl Serialize for NotNan { + #[inline] + fn serialize(&self, s: S) -> Result { + self.0.serialize(s) + } + } + + impl<'de, T: Float + Deserialize<'de>> Deserialize<'de> for NotNan { + fn deserialize>(d: D) -> Result { + let float = T::deserialize(d)?; + NotNan::new(float).map_err(|_| { + Error::invalid_value(Unexpected::Float(f64::NAN), &"float (but not NaN)") + }) + } + } + + #[test] + fn test_ordered_float() { + let float = OrderedFloat(1.0f64); + assert_tokens(&float, &[Token::F64(1.0)]); + } + + #[test] + fn test_not_nan() { + let float = NotNan(1.0f64); + assert_tokens(&float, &[Token::F64(1.0)]); + } + + #[test] + fn test_fail_on_nan() { + assert_de_tokens_error::>( + &[Token::F64(f64::NAN)], + "invalid value: floating point `NaN`, expected float (but not NaN)", + ); + } +} + +#[cfg(any(feature = "rkyv_16", feature = "rkyv_32", feature = "rkyv_64"))] +mod impl_rkyv { + use super::{NotNan, OrderedFloat}; + #[cfg(not(feature = "std"))] + use num_traits::float::FloatCore as Float; + #[cfg(feature = "std")] + use num_traits::Float; + #[cfg(test)] + use rkyv::{archived_root, ser::Serializer}; + use rkyv::{Archive, Deserialize, Fallible, Serialize}; + + #[cfg(test)] + type DefaultSerializer = rkyv::ser::serializers::CoreSerializer<16, 16>; + #[cfg(test)] + type DefaultDeserializer = rkyv::Infallible; + + impl Archive for OrderedFloat { + type Archived = OrderedFloat; + + type Resolver = T::Resolver; + + unsafe fn resolve(&self, pos: usize, resolver: Self::Resolver, out: *mut Self::Archived) { + self.0.resolve(pos, resolver, out.cast()) + } + } + + impl, S: Fallible + ?Sized> Serialize for OrderedFloat { + fn serialize(&self, s: &mut S) -> Result { + self.0.serialize(s) + } + } + + impl, D: Fallible + ?Sized> Deserialize, D> + for OrderedFloat + { + fn deserialize(&self, d: &mut D) -> Result, D::Error> { + self.0.deserialize(d).map(OrderedFloat) + } + } + + impl Archive for NotNan { + type Archived = NotNan; + + type Resolver = T::Resolver; + + unsafe fn resolve(&self, pos: usize, resolver: Self::Resolver, out: *mut Self::Archived) { + self.0.resolve(pos, resolver, out.cast()) + } + } + + impl, S: Fallible + ?Sized> Serialize for NotNan { + fn serialize(&self, s: &mut S) -> Result { + self.0.serialize(s) + } + } + + impl, D: Fallible + ?Sized> Deserialize, D> + for NotNan + { + fn deserialize(&self, d: &mut D) -> Result, D::Error> { + self.0.deserialize(d).map(NotNan) + } + } + + macro_rules! rkyv_eq_ord { + ($main:ident, $float:ty, $rend:ty) => { + impl PartialEq<$main<$float>> for $main<$rend> { + fn eq(&self, other: &$main<$float>) -> bool { + other.eq(&self.0.value()) + } + } + impl PartialEq<$main<$rend>> for $main<$float> { + fn eq(&self, other: &$main<$rend>) -> bool { + self.eq(&other.0.value()) + } + } + + impl PartialOrd<$main<$float>> for $main<$rend> { + fn partial_cmp(&self, other: &$main<$float>) -> Option { + self.0.value().partial_cmp(other) + } + } + + impl PartialOrd<$main<$rend>> for $main<$float> { + fn partial_cmp(&self, other: &$main<$rend>) -> Option { + other + .0 + .value() + .partial_cmp(self) + .map(core::cmp::Ordering::reverse) + } + } + }; + } + + rkyv_eq_ord! { OrderedFloat, f32, rkyv::rend::f32_le } + rkyv_eq_ord! { OrderedFloat, f32, rkyv::rend::f32_be } + rkyv_eq_ord! { OrderedFloat, f64, rkyv::rend::f64_le } + rkyv_eq_ord! { OrderedFloat, f64, rkyv::rend::f64_be } + rkyv_eq_ord! { NotNan, f32, rkyv::rend::f32_le } + rkyv_eq_ord! { NotNan, f32, rkyv::rend::f32_be } + rkyv_eq_ord! { NotNan, f64, rkyv::rend::f64_le } + rkyv_eq_ord! { NotNan, f64, rkyv::rend::f64_be } + + #[cfg(feature = "rkyv_ck")] + use super::FloatIsNan; + #[cfg(feature = "rkyv_ck")] + use core::convert::Infallible; + #[cfg(feature = "rkyv_ck")] + use rkyv::bytecheck::CheckBytes; + + #[cfg(feature = "rkyv_ck")] + impl> CheckBytes for OrderedFloat { + type Error = Infallible; + + #[inline] + unsafe fn check_bytes<'a>(value: *const Self, _: &mut C) -> Result<&'a Self, Self::Error> { + Ok(&*value) + } + } + + #[cfg(feature = "rkyv_ck")] + impl> CheckBytes for NotNan { + type Error = FloatIsNan; + + #[inline] + unsafe fn check_bytes<'a>(value: *const Self, _: &mut C) -> Result<&'a Self, Self::Error> { + Self::new(*(value as *const T)).map(|_| &*value) + } + } + + #[test] + fn test_ordered_float() { + let float = OrderedFloat(1.0f64); + let mut serializer = DefaultSerializer::default(); + serializer + .serialize_value(&float) + .expect("failed to archive value"); + let len = serializer.pos(); + let buffer = serializer.into_serializer().into_inner(); + + let archived_value = unsafe { archived_root::>(&buffer[0..len]) }; + assert_eq!(archived_value, &float); + let mut deserializer = DefaultDeserializer::default(); + let deser_float: OrderedFloat = archived_value.deserialize(&mut deserializer).unwrap(); + assert_eq!(deser_float, float); + } + + #[test] + fn test_not_nan() { + let float = NotNan(1.0f64); + let mut serializer = DefaultSerializer::default(); + serializer + .serialize_value(&float) + .expect("failed to archive value"); + let len = serializer.pos(); + let buffer = serializer.into_serializer().into_inner(); + + let archived_value = unsafe { archived_root::>(&buffer[0..len]) }; + assert_eq!(archived_value, &float); + let mut deserializer = DefaultDeserializer::default(); + let deser_float: NotNan = archived_value.deserialize(&mut deserializer).unwrap(); + assert_eq!(deser_float, float); + } +} + +#[cfg(feature = "speedy")] +mod impl_speedy { + use super::{NotNan, OrderedFloat}; + use num_traits::Float; + use speedy::{Context, Readable, Reader, Writable, Writer}; + + impl Writable for OrderedFloat + where + C: Context, + T: Writable, + { + fn write_to>(&self, writer: &mut W) -> Result<(), C::Error> { + self.0.write_to(writer) + } + + fn bytes_needed(&self) -> Result { + self.0.bytes_needed() + } + } + + impl Writable for NotNan + where + C: Context, + T: Writable, + { + fn write_to>(&self, writer: &mut W) -> Result<(), C::Error> { + self.0.write_to(writer) + } + + fn bytes_needed(&self) -> Result { + self.0.bytes_needed() + } + } + + impl<'a, T, C: Context> Readable<'a, C> for OrderedFloat + where + T: Readable<'a, C>, + { + fn read_from>(reader: &mut R) -> Result { + T::read_from(reader).map(OrderedFloat) + } + + fn minimum_bytes_needed() -> usize { + T::minimum_bytes_needed() + } + } + + impl<'a, T: Float, C: Context> Readable<'a, C> for NotNan + where + T: Readable<'a, C>, + { + fn read_from>(reader: &mut R) -> Result { + let value: T = reader.read_value()?; + Self::new(value).map_err(|error| { + speedy::Error::custom(std::format!("failed to read NotNan: {}", error)).into() + }) + } + + fn minimum_bytes_needed() -> usize { + T::minimum_bytes_needed() + } + } + + #[test] + fn test_ordered_float() { + let float = OrderedFloat(1.0f64); + let buffer = float.write_to_vec().unwrap(); + let deser_float: OrderedFloat = OrderedFloat::read_from_buffer(&buffer).unwrap(); + assert_eq!(deser_float, float); + } + + #[test] + fn test_not_nan() { + let float = NotNan(1.0f64); + let buffer = float.write_to_vec().unwrap(); + let deser_float: NotNan = NotNan::read_from_buffer(&buffer).unwrap(); + assert_eq!(deser_float, float); + } + + #[test] + fn test_not_nan_with_nan() { + let nan_buf = f64::nan().write_to_vec().unwrap(); + let nan_err: Result, _> = NotNan::read_from_buffer(&nan_buf); + assert!(nan_err.is_err()); + } +} + +#[cfg(all(feature = "std", feature = "schemars"))] +mod impl_schemars { + extern crate schemars; + use self::schemars::gen::SchemaGenerator; + use self::schemars::schema::{InstanceType, Schema, SchemaObject}; + use super::{NotNan, OrderedFloat}; + + macro_rules! primitive_float_impl { + ($type:ty, $schema_name:literal) => { + impl schemars::JsonSchema for $type { + fn is_referenceable() -> bool { + false + } + + fn schema_name() -> std::string::String { + std::string::String::from($schema_name) + } + + fn json_schema(_: &mut SchemaGenerator) -> Schema { + SchemaObject { + instance_type: Some(InstanceType::Number.into()), + format: Some(std::string::String::from($schema_name)), + ..Default::default() + } + .into() + } + } + }; + } + + primitive_float_impl!(OrderedFloat, "float"); + primitive_float_impl!(OrderedFloat, "double"); + primitive_float_impl!(NotNan, "float"); + primitive_float_impl!(NotNan, "double"); + + #[test] + fn schema_generation_does_not_panic_for_common_floats() { + { + let schema = schemars::gen::SchemaGenerator::default() + .into_root_schema_for::>(); + assert_eq!( + schema.schema.instance_type, + Some(schemars::schema::SingleOrVec::Single(std::boxed::Box::new( + schemars::schema::InstanceType::Number + ))) + ); + assert_eq!( + schema.schema.metadata.unwrap().title.unwrap(), + std::string::String::from("float") + ); + } + { + let schema = schemars::gen::SchemaGenerator::default() + .into_root_schema_for::>(); + assert_eq!( + schema.schema.instance_type, + Some(schemars::schema::SingleOrVec::Single(std::boxed::Box::new( + schemars::schema::InstanceType::Number + ))) + ); + assert_eq!( + schema.schema.metadata.unwrap().title.unwrap(), + std::string::String::from("double") + ); + } + { + let schema = + schemars::gen::SchemaGenerator::default().into_root_schema_for::>(); + assert_eq!( + schema.schema.instance_type, + Some(schemars::schema::SingleOrVec::Single(std::boxed::Box::new( + schemars::schema::InstanceType::Number + ))) + ); + assert_eq!( + schema.schema.metadata.unwrap().title.unwrap(), + std::string::String::from("float") + ); + } + { + let schema = + schemars::gen::SchemaGenerator::default().into_root_schema_for::>(); + assert_eq!( + schema.schema.instance_type, + Some(schemars::schema::SingleOrVec::Single(std::boxed::Box::new( + schemars::schema::InstanceType::Number + ))) + ); + assert_eq!( + schema.schema.metadata.unwrap().title.unwrap(), + std::string::String::from("double") + ); + } + } + #[test] + fn ordered_float_schema_match_primitive_schema() { + { + let of_schema = schemars::gen::SchemaGenerator::default() + .into_root_schema_for::>(); + let prim_schema = + schemars::gen::SchemaGenerator::default().into_root_schema_for::(); + assert_eq!(of_schema, prim_schema); + } + { + let of_schema = schemars::gen::SchemaGenerator::default() + .into_root_schema_for::>(); + let prim_schema = + schemars::gen::SchemaGenerator::default().into_root_schema_for::(); + assert_eq!(of_schema, prim_schema); + } + { + let of_schema = + schemars::gen::SchemaGenerator::default().into_root_schema_for::>(); + let prim_schema = + schemars::gen::SchemaGenerator::default().into_root_schema_for::(); + assert_eq!(of_schema, prim_schema); + } + { + let of_schema = + schemars::gen::SchemaGenerator::default().into_root_schema_for::>(); + let prim_schema = + schemars::gen::SchemaGenerator::default().into_root_schema_for::(); + assert_eq!(of_schema, prim_schema); + } + } +} + +#[cfg(feature = "rand")] +mod impl_rand { + use super::{NotNan, OrderedFloat}; + use rand::distributions::uniform::*; + use rand::distributions::{Distribution, Open01, OpenClosed01, Standard}; + use rand::Rng; + + macro_rules! impl_distribution { + ($dist:ident, $($f:ty),+) => { + $( + impl Distribution> for $dist { + fn sample(&self, rng: &mut R) -> NotNan<$f> { + // 'rand' never generates NaN values in the Standard, Open01, or + // OpenClosed01 distributions. Using 'new_unchecked' is therefore + // safe. + unsafe { NotNan::new_unchecked(self.sample(rng)) } + } + } + + impl Distribution> for $dist { + fn sample(&self, rng: &mut R) -> OrderedFloat<$f> { + OrderedFloat(self.sample(rng)) + } + } + )* + } + } + + impl_distribution! { Standard, f32, f64 } + impl_distribution! { Open01, f32, f64 } + impl_distribution! { OpenClosed01, f32, f64 } + + /// A sampler for a uniform distribution + #[derive(Clone, Copy, Debug, PartialEq)] + #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] + pub struct UniformNotNan(UniformFloat); + impl SampleUniform for NotNan { + type Sampler = UniformNotNan; + } + impl SampleUniform for NotNan { + type Sampler = UniformNotNan; + } + + /// A sampler for a uniform distribution + #[derive(Clone, Copy, Debug, PartialEq)] + #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] + pub struct UniformOrdered(UniformFloat); + impl SampleUniform for OrderedFloat { + type Sampler = UniformOrdered; + } + impl SampleUniform for OrderedFloat { + type Sampler = UniformOrdered; + } + + macro_rules! impl_uniform_sampler { + ($f:ty) => { + impl UniformSampler for UniformNotNan<$f> { + type X = NotNan<$f>; + fn new(low: B1, high: B2) -> Self + where + B1: SampleBorrow + Sized, + B2: SampleBorrow + Sized, + { + UniformNotNan(UniformFloat::<$f>::new(low.borrow().0, high.borrow().0)) + } + fn new_inclusive(low: B1, high: B2) -> Self + where + B1: SampleBorrow + Sized, + B2: SampleBorrow + Sized, + { + UniformSampler::new(low, high) + } + fn sample(&self, rng: &mut R) -> Self::X { + // UniformFloat.sample() will never return NaN. + unsafe { NotNan::new_unchecked(self.0.sample(rng)) } + } + } + + impl UniformSampler for UniformOrdered<$f> { + type X = OrderedFloat<$f>; + fn new(low: B1, high: B2) -> Self + where + B1: SampleBorrow + Sized, + B2: SampleBorrow + Sized, + { + UniformOrdered(UniformFloat::<$f>::new(low.borrow().0, high.borrow().0)) + } + fn new_inclusive(low: B1, high: B2) -> Self + where + B1: SampleBorrow + Sized, + B2: SampleBorrow + Sized, + { + UniformSampler::new(low, high) + } + fn sample(&self, rng: &mut R) -> Self::X { + OrderedFloat(self.0.sample(rng)) + } + } + }; + } + + impl_uniform_sampler! { f32 } + impl_uniform_sampler! { f64 } + + #[cfg(all(test, feature = "randtest"))] + mod tests { + use super::*; + + fn sample_fuzz() + where + Standard: Distribution>, + Open01: Distribution>, + OpenClosed01: Distribution>, + Standard: Distribution>, + Open01: Distribution>, + OpenClosed01: Distribution>, + T: crate::Float, + { + let mut rng = rand::thread_rng(); + let f1: NotNan = rng.sample(Standard); + let f2: NotNan = rng.sample(Open01); + let f3: NotNan = rng.sample(OpenClosed01); + let _: OrderedFloat = rng.sample(Standard); + let _: OrderedFloat = rng.sample(Open01); + let _: OrderedFloat = rng.sample(OpenClosed01); + assert!(!f1.into_inner().is_nan()); + assert!(!f2.into_inner().is_nan()); + assert!(!f3.into_inner().is_nan()); + } + + #[test] + fn sampling_f32_does_not_panic() { + sample_fuzz::(); + } + + #[test] + fn sampling_f64_does_not_panic() { + sample_fuzz::(); + } + + #[test] + #[should_panic] + fn uniform_sampling_panic_on_infinity_notnan() { + let (low, high) = ( + NotNan::new(0f64).unwrap(), + NotNan::new(core::f64::INFINITY).unwrap(), + ); + let uniform = Uniform::new(low, high); + let _ = uniform.sample(&mut rand::thread_rng()); + } + + #[test] + #[should_panic] + fn uniform_sampling_panic_on_infinity_ordered() { + let (low, high) = (OrderedFloat(0f64), OrderedFloat(core::f64::INFINITY)); + let uniform = Uniform::new(low, high); + let _ = uniform.sample(&mut rand::thread_rng()); + } + + #[test] + #[should_panic] + fn uniform_sampling_panic_on_nan_ordered() { + let (low, high) = (OrderedFloat(0f64), OrderedFloat(core::f64::NAN)); + let uniform = Uniform::new(low, high); + let _ = uniform.sample(&mut rand::thread_rng()); + } + } +} + +#[cfg(feature = "proptest")] +mod impl_proptest { + use super::{NotNan, OrderedFloat}; + use proptest::arbitrary::{Arbitrary, StrategyFor}; + use proptest::num::{f32, f64}; + use proptest::strategy::{FilterMap, Map, Strategy}; + use std::convert::TryFrom; + + macro_rules! impl_arbitrary { + ($($f:ident),+) => { + $( + impl Arbitrary for NotNan<$f> { + type Strategy = FilterMap, fn(_: $f) -> Option>>; + type Parameters = <$f as Arbitrary>::Parameters; + fn arbitrary_with(params: Self::Parameters) -> Self::Strategy { + <$f>::arbitrary_with(params) + .prop_filter_map("filter nan values", |f| NotNan::try_from(f).ok()) + } + } + + impl Arbitrary for OrderedFloat<$f> { + type Strategy = Map, fn(_: $f) -> OrderedFloat<$f>>; + type Parameters = <$f as Arbitrary>::Parameters; + fn arbitrary_with(params: Self::Parameters) -> Self::Strategy { + <$f>::arbitrary_with(params).prop_map(|f| OrderedFloat::from(f)) + } + } + )* + } + } + impl_arbitrary! { f32, f64 } +} + +#[cfg(feature = "arbitrary")] +mod impl_arbitrary { + use super::{FloatIsNan, NotNan, OrderedFloat}; + use arbitrary::{Arbitrary, Unstructured}; + use num_traits::FromPrimitive; + + macro_rules! impl_arbitrary { + ($($f:ident),+) => { + $( + impl<'a> Arbitrary<'a> for NotNan<$f> { + fn arbitrary(u: &mut Unstructured<'a>) -> arbitrary::Result { + let float: $f = u.arbitrary()?; + match NotNan::new(float) { + Ok(notnan_value) => Ok(notnan_value), + Err(FloatIsNan) => { + // If our arbitrary float input was a NaN (encoded by exponent = max + // value), then replace it with a finite float, reusing the mantissa + // bits. + // + // This means the output is not uniformly distributed among all + // possible float values, but Arbitrary makes no promise that that + // is true. + // + // An alternative implementation would be to return an + // `arbitrary::Error`, but that is not as useful since it forces the + // caller to retry with new random/fuzzed data; and the precendent of + // `arbitrary`'s built-in implementations is to prefer the approach of + // mangling the input bits to fit. + + let (mantissa, _exponent, sign) = + num_traits::Float::integer_decode(float); + let revised_float = <$f>::from_i64( + i64::from(sign) * mantissa as i64 + ).unwrap(); + + // If this unwrap() fails, then there is a bug in the above code. + Ok(NotNan::new(revised_float).unwrap()) + } + } + } + + fn size_hint(depth: usize) -> (usize, Option) { + <$f as Arbitrary>::size_hint(depth) + } + } + + impl<'a> Arbitrary<'a> for OrderedFloat<$f> { + fn arbitrary(u: &mut Unstructured<'a>) -> arbitrary::Result { + let float: $f = u.arbitrary()?; + Ok(OrderedFloat::from(float)) + } + + fn size_hint(depth: usize) -> (usize, Option) { + <$f as Arbitrary>::size_hint(depth) + } + } + )* + } + } + impl_arbitrary! { f32, f64 } +} + +#[cfg(feature = "bytemuck")] +mod impl_bytemuck { + use super::{Float, NotNan, OrderedFloat}; + use bytemuck::{AnyBitPattern, CheckedBitPattern, NoUninit, Pod, Zeroable}; + + unsafe impl Zeroable for OrderedFloat {} + + // The zero bit pattern is indeed not a NaN bit pattern. + unsafe impl Zeroable for NotNan {} + + unsafe impl Pod for OrderedFloat {} + + // `NotNan` can only implement `NoUninit` and not `Pod`, since not every bit pattern is + // valid (NaN bit patterns are invalid). `NoUninit` guarantees that we can read any bit pattern + // from the value, which is fine in this case. + unsafe impl NoUninit for NotNan {} + + unsafe impl CheckedBitPattern for NotNan { + type Bits = T; + + fn is_valid_bit_pattern(bits: &Self::Bits) -> bool { + !bits.is_nan() + } + } + + #[test] + fn test_not_nan_bit_pattern() { + use bytemuck::checked::{try_cast, CheckedCastError}; + + let nan = f64::NAN; + assert_eq!( + try_cast::>(nan), + Err(CheckedCastError::InvalidBitPattern), + ); + + let pi = core::f64::consts::PI; + assert!(try_cast::>(pi).is_ok()); + } +} diff -Nru temporalio-1.3.0/vendor/ordered-float/tests/test.rs temporalio-1.3.0/vendor/ordered-float/tests/test.rs --- temporalio-1.3.0/vendor/ordered-float/tests/test.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ordered-float/tests/test.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,862 @@ +#![allow(clippy::float_cmp, clippy::eq_op, clippy::op_ref)] + +extern crate num_traits; +extern crate ordered_float; + +#[cfg(not(feature = "std"))] +pub use num_traits::float::FloatCore as Float; +pub use num_traits::{Bounded, FloatConst, FromPrimitive, Num, One, Signed, ToPrimitive, Zero}; +#[cfg(feature = "std")] +pub use num_traits::{Float, Pow}; +pub use ordered_float::*; + +pub use std::cmp::Ordering::*; +pub use std::convert::TryFrom; +pub use std::{f32, f64, panic}; + +pub use std::collections::hash_map::RandomState; +pub use std::collections::HashSet; +pub use std::hash::*; + +fn not_nan(x: T) -> NotNan { + NotNan::new(x).unwrap() +} + +#[test] +fn ordered_f32_compare_regular_floats() { + assert_eq!(OrderedFloat(7.0f32).cmp(&OrderedFloat(7.0)), Equal); + assert_eq!(OrderedFloat(8.0f32).cmp(&OrderedFloat(7.0)), Greater); + assert_eq!(OrderedFloat(4.0f32).cmp(&OrderedFloat(7.0)), Less); +} + +#[test] +fn ordered_f32_compare_regular_floats_op() { + assert!(OrderedFloat(7.0f32) == OrderedFloat(7.0)); + assert!(OrderedFloat(7.0f32) <= OrderedFloat(7.0)); + assert!(OrderedFloat(7.0f32) >= OrderedFloat(7.0)); + assert!(OrderedFloat(8.0f32) > OrderedFloat(7.0)); + assert!(OrderedFloat(8.0f32) >= OrderedFloat(7.0)); + assert!(OrderedFloat(4.0f32) < OrderedFloat(7.0)); + assert!(OrderedFloat(4.0f32) <= OrderedFloat(7.0)); +} + +#[test] +fn ordered_f32_compare_nan() { + let f32_nan: f32 = Float::nan(); + assert_eq!( + OrderedFloat(f32_nan).cmp(&OrderedFloat(Float::nan())), + Equal + ); + assert_eq!( + OrderedFloat(f32_nan).cmp(&OrderedFloat(-100000.0f32)), + Greater + ); + assert_eq!( + OrderedFloat(-100.0f32).cmp(&OrderedFloat(Float::nan())), + Less + ); +} + +#[test] +fn ordered_f32_compare_nan_op() { + let f32_nan: OrderedFloat = OrderedFloat(Float::nan()); + assert!(f32_nan == f32_nan); + assert!(f32_nan <= f32_nan); + assert!(f32_nan >= f32_nan); + assert!(f32_nan > OrderedFloat(-100000.0f32)); + assert!(f32_nan >= OrderedFloat(-100000.0f32)); + assert!(OrderedFloat(-100.0f32) < f32_nan); + assert!(OrderedFloat(-100.0f32) <= f32_nan); + assert!(f32_nan > OrderedFloat(f32::infinity())); + assert!(f32_nan >= OrderedFloat(f32::infinity())); + assert!(f32_nan > OrderedFloat(f32::neg_infinity())); + assert!(f32_nan >= OrderedFloat(f32::neg_infinity())); +} + +#[test] +fn ordered_f64_compare_regular_floats() { + assert_eq!(OrderedFloat(7.0f64).cmp(&OrderedFloat(7.0)), Equal); + assert_eq!(OrderedFloat(8.0f64).cmp(&OrderedFloat(7.0)), Greater); + assert_eq!(OrderedFloat(4.0f64).cmp(&OrderedFloat(7.0)), Less); +} + +#[test] +fn not_nan32_zero() { + assert_eq!(NotNan::::zero(), 0.0f32); + assert!(NotNan::::zero().is_zero()); +} + +#[test] +fn not_nan32_one() { + assert_eq!(NotNan::::one(), 1.0f32) +} + +#[test] +fn not_nan32_bounded() { + assert_eq!(NotNan::::min_value(), ::min_value()); + assert_eq!(NotNan::::max_value(), ::max_value()); +} + +#[test] +fn not_nan32_from_primitive() { + assert_eq!(NotNan::::from_i8(42i8), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_u8(42u8), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_i16(42i16), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_u16(42u16), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_i32(42i32), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_u32(42u32), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_i64(42i64), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_u64(42u64), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_isize(42isize), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_usize(42usize), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_f32(42f32), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_f32(42f32), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_f64(42f64), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_f64(42f64), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_f32(Float::nan()), None); + assert_eq!(NotNan::::from_f64(Float::nan()), None); +} + +#[test] +fn not_nan32_to_primitive() { + let x = not_nan(42.0f32); + assert_eq!(x.to_u8(), Some(42u8)); + assert_eq!(x.to_i8(), Some(42i8)); + assert_eq!(x.to_u16(), Some(42u16)); + assert_eq!(x.to_i16(), Some(42i16)); + assert_eq!(x.to_u32(), Some(42u32)); + assert_eq!(x.to_i32(), Some(42i32)); + assert_eq!(x.to_u64(), Some(42u64)); + assert_eq!(x.to_i64(), Some(42i64)); + assert_eq!(x.to_usize(), Some(42usize)); + assert_eq!(x.to_isize(), Some(42isize)); + assert_eq!(x.to_f32(), Some(42f32)); + assert_eq!(x.to_f32(), Some(42f32)); + assert_eq!(x.to_f64(), Some(42f64)); + assert_eq!(x.to_f64(), Some(42f64)); +} + +#[test] +fn not_nan32_num() { + assert_eq!(NotNan::::from_str_radix("42.0", 10).unwrap(), 42.0f32); + assert!(NotNan::::from_str_radix("NaN", 10).is_err()); +} + +#[test] +fn not_nan32_signed() { + assert_eq!(not_nan(42f32).abs(), 42f32); + assert_eq!(not_nan(-42f32).abs(), 42f32); + + assert_eq!(not_nan(50f32).abs_sub(¬_nan(8f32)), 42f32); + assert_eq!(not_nan(8f32).abs_sub(¬_nan(50f32)), 0f32); +} + +#[test] +fn not_nan32_num_cast() { + assert_eq!( + as num_traits::NumCast>::from(42).unwrap(), + 42f32 + ); + assert_eq!( as num_traits::NumCast>::from(f32::nan()), None); +} + +#[test] +fn ordered_f64_compare_nan() { + let f64_nan: f64 = Float::nan(); + assert_eq!( + OrderedFloat(f64_nan).cmp(&OrderedFloat(Float::nan())), + Equal + ); + assert_eq!( + OrderedFloat(f64_nan).cmp(&OrderedFloat(-100000.0f64)), + Greater + ); + assert_eq!( + OrderedFloat(-100.0f64).cmp(&OrderedFloat(Float::nan())), + Less + ); +} + +#[test] +fn ordered_f64_compare_regular_floats_op() { + assert!(OrderedFloat(7.0) == OrderedFloat(7.0)); + assert!(OrderedFloat(7.0) <= OrderedFloat(7.0)); + assert!(OrderedFloat(7.0) >= OrderedFloat(7.0)); + assert!(OrderedFloat(8.0) > OrderedFloat(7.0)); + assert!(OrderedFloat(8.0) >= OrderedFloat(7.0)); + assert!(OrderedFloat(4.0) < OrderedFloat(7.0)); + assert!(OrderedFloat(4.0) <= OrderedFloat(7.0)); +} + +#[test] +fn ordered_f64_compare_nan_op() { + let f64_nan: OrderedFloat = OrderedFloat(Float::nan()); + assert!(f64_nan == f64_nan); + assert!(f64_nan <= f64_nan); + assert!(f64_nan >= f64_nan); + assert!(f64_nan > OrderedFloat(-100000.0)); + assert!(f64_nan >= OrderedFloat(-100000.0)); + assert!(OrderedFloat(-100.0) < f64_nan); + assert!(OrderedFloat(-100.0) <= f64_nan); + assert!(f64_nan > OrderedFloat(f64::infinity())); + assert!(f64_nan >= OrderedFloat(f64::infinity())); + assert!(f64_nan > OrderedFloat(f64::neg_infinity())); + assert!(f64_nan >= OrderedFloat(f64::neg_infinity())); +} + +#[test] +fn not_nan32_compare_regular_floats() { + assert_eq!(not_nan(7.0f32).cmp(¬_nan(7.0)), Equal); + assert_eq!(not_nan(8.0f32).cmp(¬_nan(7.0)), Greater); + assert_eq!(not_nan(4.0f32).cmp(¬_nan(7.0)), Less); +} + +#[test] +fn not_nan32_fail_when_constructing_with_nan() { + let f32_nan: f32 = Float::nan(); + assert!(NotNan::new(f32_nan).is_err()); +} + +#[test] +fn not_nan32_calculate_correctly() { + assert_eq!(*(not_nan(5.0f32) + not_nan(4.0f32)), 5.0f32 + 4.0f32); + assert_eq!(*(not_nan(5.0f32) + 4.0f32), 5.0f32 + 4.0f32); + assert_eq!(*(not_nan(5.0f32) - not_nan(4.0f32)), 5.0f32 - 4.0f32); + assert_eq!(*(not_nan(5.0f32) - 4.0f32), 5.0f32 - 4.0f32); + assert_eq!(*(not_nan(5.0f32) * not_nan(4.0f32)), 5.0f32 * 4.0f32); + assert_eq!(*(not_nan(5.0f32) * 4.0f32), 5.0f32 * 4.0f32); + assert_eq!(*(not_nan(8.0f32) / not_nan(4.0f32)), 8.0f32 / 4.0f32); + assert_eq!(*(not_nan(8.0f32) / 4.0f32), 8.0f32 / 4.0f32); + assert_eq!(*(not_nan(8.0f32) % not_nan(4.0f32)), 8.0f32 % 4.0f32); + assert_eq!(*(not_nan(8.0f32) % 4.0f32), 8.0f32 % 4.0f32); + assert_eq!(*(-not_nan(1.0f32)), -1.0f32); + + assert!(panic::catch_unwind(|| not_nan(0.0f32) + f32::NAN).is_err()); + assert!(panic::catch_unwind(|| not_nan(0.0f32) - f32::NAN).is_err()); + assert!(panic::catch_unwind(|| not_nan(0.0f32) * f32::NAN).is_err()); + assert!(panic::catch_unwind(|| not_nan(0.0f32) / f32::NAN).is_err()); + assert!(panic::catch_unwind(|| not_nan(0.0f32) % f32::NAN).is_err()); + + let mut number = not_nan(5.0f32); + number += not_nan(4.0f32); + assert_eq!(*number, 9.0f32); + number -= not_nan(4.0f32); + assert_eq!(*number, 5.0f32); + number *= not_nan(4.0f32); + assert_eq!(*number, 20.0f32); + number /= not_nan(4.0f32); + assert_eq!(*number, 5.0f32); + number %= not_nan(4.0f32); + assert_eq!(*number, 1.0f32); + + number = not_nan(5.0f32); + number += 4.0f32; + assert_eq!(*number, 9.0f32); + number -= 4.0f32; + assert_eq!(*number, 5.0f32); + number *= 4.0f32; + assert_eq!(*number, 20.0f32); + number /= 4.0f32; + assert_eq!(*number, 5.0f32); + number %= 4.0f32; + assert_eq!(*number, 1.0f32); + + assert!(panic::catch_unwind(|| { + let mut tmp = not_nan(0.0f32); + tmp += f32::NAN; + }) + .is_err()); + assert!(panic::catch_unwind(|| { + let mut tmp = not_nan(0.0f32); + tmp -= f32::NAN; + }) + .is_err()); + assert!(panic::catch_unwind(|| { + let mut tmp = not_nan(0.0f32); + tmp *= f32::NAN; + }) + .is_err()); + assert!(panic::catch_unwind(|| { + let mut tmp = not_nan(0.0f32); + tmp /= f32::NAN; + }) + .is_err()); + assert!(panic::catch_unwind(|| { + let mut tmp = not_nan(0.0f32); + tmp %= f32::NAN; + }) + .is_err()); +} + +#[test] +fn not_nan64_compare_regular_floats() { + assert_eq!(not_nan(7.0f64).cmp(¬_nan(7.0)), Equal); + assert_eq!(not_nan(8.0f64).cmp(¬_nan(7.0)), Greater); + assert_eq!(not_nan(4.0f64).cmp(¬_nan(7.0)), Less); +} + +#[test] +fn not_nan64_fail_when_constructing_with_nan() { + let f64_nan: f64 = Float::nan(); + assert!(NotNan::new(f64_nan).is_err()); +} + +#[test] +fn not_nan64_calculate_correctly() { + assert_eq!(*(not_nan(5.0f64) + not_nan(4.0f64)), 5.0f64 + 4.0f64); + assert_eq!(*(not_nan(5.0f64) + 4.0f64), 5.0f64 + 4.0f64); + assert_eq!(*(not_nan(5.0f64) - not_nan(4.0f64)), 5.0f64 - 4.0f64); + assert_eq!(*(not_nan(5.0f64) - 4.0f64), 5.0f64 - 4.0f64); + assert_eq!(*(not_nan(5.0f64) * not_nan(4.0f64)), 5.0f64 * 4.0f64); + assert_eq!(*(not_nan(5.0f64) * 4.0f64), 5.0f64 * 4.0f64); + assert_eq!(*(not_nan(8.0f64) / not_nan(4.0f64)), 8.0f64 / 4.0f64); + assert_eq!(*(not_nan(8.0f64) / 4.0f64), 8.0f64 / 4.0f64); + assert_eq!(*(not_nan(8.0f64) % not_nan(4.0f64)), 8.0f64 % 4.0f64); + assert_eq!(*(not_nan(8.0f64) % 4.0f64), 8.0f64 % 4.0f64); + assert_eq!(*(-not_nan(1.0f64)), -1.0f64); + + assert!(panic::catch_unwind(|| not_nan(0.0f64) + f64::NAN).is_err()); + assert!(panic::catch_unwind(|| not_nan(0.0f64) - f64::NAN).is_err()); + assert!(panic::catch_unwind(|| not_nan(0.0f64) * f64::NAN).is_err()); + assert!(panic::catch_unwind(|| not_nan(0.0f64) / f64::NAN).is_err()); + assert!(panic::catch_unwind(|| not_nan(0.0f64) % f64::NAN).is_err()); + + let mut number = not_nan(5.0f64); + number += not_nan(4.0f64); + assert_eq!(*number, 9.0f64); + number -= not_nan(4.0f64); + assert_eq!(*number, 5.0f64); + number *= not_nan(4.0f64); + assert_eq!(*number, 20.0f64); + number /= not_nan(4.0f64); + assert_eq!(*number, 5.0f64); + number %= not_nan(4.0f64); + assert_eq!(*number, 1.0f64); + + number = not_nan(5.0f64); + number += 4.0f64; + assert_eq!(*number, 9.0f64); + number -= 4.0f64; + assert_eq!(*number, 5.0f64); + number *= 4.0f64; + assert_eq!(*number, 20.0f64); + number /= 4.0f64; + assert_eq!(*number, 5.0f64); + number %= 4.0f64; + assert_eq!(*number, 1.0f64); + + assert!(panic::catch_unwind(|| { + let mut tmp = not_nan(0.0f64); + tmp += f64::NAN; + }) + .is_err()); + assert!(panic::catch_unwind(|| { + let mut tmp = not_nan(0.0f64); + tmp -= f64::NAN; + }) + .is_err()); + assert!(panic::catch_unwind(|| { + let mut tmp = not_nan(0.0f64); + tmp *= f64::NAN; + }) + .is_err()); + assert!(panic::catch_unwind(|| { + let mut tmp = not_nan(0.0f64); + tmp /= f64::NAN; + }) + .is_err()); + assert!(panic::catch_unwind(|| { + let mut tmp = not_nan(0.0f64); + tmp %= f64::NAN; + }) + .is_err()); +} + +#[test] +fn not_nan64_zero() { + assert_eq!(NotNan::::zero(), not_nan(0.0f64)); + assert!(NotNan::::zero().is_zero()); +} + +#[test] +fn not_nan64_one() { + assert_eq!(NotNan::::one(), not_nan(1.0f64)) +} + +#[test] +fn not_nan64_bounded() { + assert_eq!(NotNan::::min_value(), ::min_value()); + assert_eq!(NotNan::::max_value(), ::max_value()); +} + +#[test] +fn not_nan64_from_primitive() { + assert_eq!(NotNan::::from_i8(42i8), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_u8(42u8), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_i16(42i16), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_u16(42u16), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_i32(42i32), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_u32(42u32), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_i64(42i64), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_u64(42u64), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_isize(42isize), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_usize(42usize), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_f64(42f64), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_f64(42f64), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_f64(42f64), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_f64(42f64), Some(not_nan(42.0))); + assert_eq!(NotNan::::from_f64(Float::nan()), None); + assert_eq!(NotNan::::from_f64(Float::nan()), None); +} + +#[test] +fn not_nan64_to_primitive() { + let x = not_nan(42.0f64); + assert_eq!(x.to_u8(), Some(42u8)); + assert_eq!(x.to_i8(), Some(42i8)); + assert_eq!(x.to_u16(), Some(42u16)); + assert_eq!(x.to_i16(), Some(42i16)); + assert_eq!(x.to_u32(), Some(42u32)); + assert_eq!(x.to_i32(), Some(42i32)); + assert_eq!(x.to_u64(), Some(42u64)); + assert_eq!(x.to_i64(), Some(42i64)); + assert_eq!(x.to_usize(), Some(42usize)); + assert_eq!(x.to_isize(), Some(42isize)); + assert_eq!(x.to_f64(), Some(42f64)); + assert_eq!(x.to_f64(), Some(42f64)); + assert_eq!(x.to_f64(), Some(42f64)); + assert_eq!(x.to_f64(), Some(42f64)); +} + +#[test] +fn not_nan64_num() { + assert_eq!( + NotNan::::from_str_radix("42.0", 10).unwrap(), + not_nan(42.0f64) + ); + assert!(NotNan::::from_str_radix("NaN", 10).is_err()); +} + +#[test] +fn not_nan64_signed() { + assert_eq!(not_nan(42f64).abs(), not_nan(42f64)); + assert_eq!(not_nan(-42f64).abs(), not_nan(42f64)); + + assert_eq!(not_nan(50f64).abs_sub(¬_nan(8f64)), not_nan(42f64)); + assert_eq!(not_nan(8f64).abs_sub(¬_nan(50f64)), not_nan(0f64)); +} + +#[test] +fn not_nan64_num_cast() { + assert_eq!( + as num_traits::NumCast>::from(42), + Some(not_nan(42f64)) + ); + assert_eq!( as num_traits::NumCast>::from(f64::nan()), None); +} + +#[test] +fn hash_zero_and_neg_zero_to_the_same_hc_ordered_float64() { + let state = RandomState::new(); + let mut h1 = state.build_hasher(); + let mut h2 = state.build_hasher(); + OrderedFloat::from(0f64).hash(&mut h1); + OrderedFloat::from(-0f64).hash(&mut h2); + assert_eq!(h1.finish(), h2.finish()); +} + +#[test] +fn hash_zero_and_neg_zero_to_the_same_hc_not_nan32() { + let state = RandomState::new(); + let mut h1 = state.build_hasher(); + let mut h2 = state.build_hasher(); + NotNan::try_from(0f32).unwrap().hash(&mut h1); + NotNan::try_from(-0f32).unwrap().hash(&mut h2); + assert_eq!(h1.finish(), h2.finish()); +} + +#[test] +fn hash_different_nans_to_the_same_hc() { + let state = RandomState::new(); + let mut h1 = state.build_hasher(); + let mut h2 = state.build_hasher(); + OrderedFloat::from(f64::nan()).hash(&mut h1); + OrderedFloat::from(-f64::nan()).hash(&mut h2); + assert_eq!(h1.finish(), h2.finish()); +} + +#[test] +fn hash_inf_and_neg_inf_to_different_hcs() { + let state = RandomState::new(); + let mut h1 = state.build_hasher(); + let mut h2 = state.build_hasher(); + OrderedFloat::from(f64::INFINITY).hash(&mut h1); + OrderedFloat::from(f64::NEG_INFINITY).hash(&mut h2); + assert!(h1.finish() != h2.finish()); +} + +#[test] +fn hash_is_good_for_whole_numbers() { + let state = RandomState::new(); + let limit = 10000; + + let mut set = ::std::collections::HashSet::with_capacity(limit); + for i in 0..limit { + let mut h = state.build_hasher(); + OrderedFloat::from(i as f64).hash(&mut h); + set.insert(h.finish()); + } + + // This allows 100 collisions, which is far too + // many, but should guard against transient issues + // that will result from using RandomState + let pct_unique = set.len() as f64 / limit as f64; + assert!(0.99f64 < pct_unique, "percent-unique={}", pct_unique); +} + +#[test] +fn hash_is_good_for_fractional_numbers() { + let state = RandomState::new(); + let limit = 10000; + + let mut set = ::std::collections::HashSet::with_capacity(limit); + for i in 0..limit { + let mut h = state.build_hasher(); + OrderedFloat::from(i as f64 * (1f64 / limit as f64)).hash(&mut h); + set.insert(h.finish()); + } + + // This allows 100 collisions, which is far too + // many, but should guard against transient issues + // that will result from using RandomState + let pct_unique = set.len() as f64 / limit as f64; + assert!(0.99f64 < pct_unique, "percent-unique={}", pct_unique); +} + +#[test] +#[should_panic] +fn test_add_fails_on_nan() { + let a = not_nan(std::f32::INFINITY); + let b = not_nan(std::f32::NEG_INFINITY); + let _c = a + b; +} + +#[test] +#[should_panic] +fn test_add_fails_on_nan_ref() { + let a = not_nan(std::f32::INFINITY); + let b = not_nan(std::f32::NEG_INFINITY); + let _c = a + &b; +} + +#[test] +#[should_panic] +fn test_add_fails_on_nan_ref_ref() { + let a = not_nan(std::f32::INFINITY); + let b = not_nan(std::f32::NEG_INFINITY); + let _c = &a + &b; +} + +#[test] +#[should_panic] +fn test_add_fails_on_nan_t_ref() { + let a = not_nan(std::f32::INFINITY); + let b = std::f32::NEG_INFINITY; + let _c = a + &b; +} + +#[test] +#[should_panic] +fn test_add_fails_on_nan_ref_t_ref() { + let a = not_nan(std::f32::INFINITY); + let b = std::f32::NEG_INFINITY; + let _c = &a + &b; +} + +#[test] +#[should_panic] +fn test_add_fails_on_nan_ref_t() { + let a = not_nan(std::f32::INFINITY); + let b = std::f32::NEG_INFINITY; + let _c = &a + b; +} + +#[test] +#[should_panic] +fn test_add_assign_fails_on_nan_ref() { + let mut a = not_nan(std::f32::INFINITY); + let b = not_nan(std::f32::NEG_INFINITY); + a += &b; +} + +#[test] +#[should_panic] +fn test_add_assign_fails_on_nan_t_ref() { + let mut a = not_nan(std::f32::INFINITY); + let b = std::f32::NEG_INFINITY; + a += &b; +} + +#[test] +#[should_panic] +fn test_add_assign_fails_on_nan_t() { + let mut a = not_nan(std::f32::INFINITY); + let b = std::f32::NEG_INFINITY; + a += b; +} + +#[test] +fn add() { + assert_eq!(not_nan(0.0) + not_nan(0.0), 0.0); + assert_eq!(not_nan(0.0) + ¬_nan(0.0), 0.0); + assert_eq!(¬_nan(0.0) + not_nan(0.0), 0.0); + assert_eq!(¬_nan(0.0) + ¬_nan(0.0), 0.0); + assert_eq!(not_nan(0.0) + 0.0, 0.0); + assert_eq!(not_nan(0.0) + &0.0, 0.0); + assert_eq!(¬_nan(0.0) + 0.0, 0.0); + assert_eq!(¬_nan(0.0) + &0.0, 0.0); + + assert_eq!(OrderedFloat(0.0) + OrderedFloat(0.0), 0.0); + assert_eq!(OrderedFloat(0.0) + &OrderedFloat(0.0), 0.0); + assert_eq!(&OrderedFloat(0.0) + OrderedFloat(0.0), 0.0); + assert_eq!(OrderedFloat(0.0) + 0.0, 0.0); + assert_eq!(OrderedFloat(0.0) + &0.0, 0.0); + assert_eq!(&OrderedFloat(0.0) + 0.0, 0.0); + assert_eq!(&OrderedFloat(0.0) + &0.0, 0.0); +} + +#[test] +fn ordered_f32_neg() { + assert_eq!(OrderedFloat(-7.0f32), -OrderedFloat(7.0f32)); +} + +#[test] +fn ordered_f64_neg() { + assert_eq!(OrderedFloat(-7.0f64), -OrderedFloat(7.0f64)); +} + +#[test] +#[should_panic] +fn test_sum_fails_on_nan() { + let a = not_nan(std::f32::INFINITY); + let b = not_nan(std::f32::NEG_INFINITY); + let _c: NotNan<_> = [a, b].iter().sum(); +} + +#[test] +#[should_panic] +fn test_product_fails_on_nan() { + let a = not_nan(std::f32::INFINITY); + let b = not_nan(0f32); + let _c: NotNan<_> = [a, b].iter().product(); +} + +#[test] +fn not_nan64_sum_product() { + let a = not_nan(2138.1237); + let b = not_nan(132f64); + let c = not_nan(5.1); + + assert_eq!( + std::iter::empty::>().sum::>(), + NotNan::new(0f64).unwrap() + ); + assert_eq!([a].iter().sum::>(), a); + assert_eq!([a, b].iter().sum::>(), a + b); + assert_eq!([a, b, c].iter().sum::>(), a + b + c); + + assert_eq!( + std::iter::empty::>().product::>(), + NotNan::new(1f64).unwrap() + ); + assert_eq!([a].iter().product::>(), a); + assert_eq!([a, b].iter().product::>(), a * b); + assert_eq!([a, b, c].iter().product::>(), a * b * c); +} + +#[test] +fn not_nan_usage_in_const_context() { + const A: NotNan = unsafe { NotNan::new_unchecked(111f32) }; + assert_eq!(A, NotNan::new(111f32).unwrap()); +} + +#[test] +fn not_nan_panic_safety() { + let catch_op = |mut num, op: fn(&mut NotNan<_>)| { + let mut num_ref = panic::AssertUnwindSafe(&mut num); + let _ = panic::catch_unwind(move || op(&mut num_ref)); + num + }; + + assert!(!catch_op(not_nan(f32::INFINITY), |a| *a += f32::NEG_INFINITY).is_nan()); + assert!(!catch_op(not_nan(f32::INFINITY), |a| *a -= f32::INFINITY).is_nan()); + assert!(!catch_op(not_nan(0.0), |a| *a *= f32::INFINITY).is_nan()); + assert!(!catch_op(not_nan(0.0), |a| *a /= 0.0).is_nan()); + assert!(!catch_op(not_nan(0.0), |a| *a %= 0.0).is_nan()); +} + +#[test] +fn from_ref() { + let f = 1.0f32; + let o: &OrderedFloat = (&f).into(); + assert_eq!(*o, 1.0f32); + + let mut f = 1.0f64; + let o: &OrderedFloat = (&f).into(); + assert_eq!(*o, 1.0f64); + + let o: &mut OrderedFloat = (&mut f).into(); + assert_eq!(*o, 1.0f64); + *o = OrderedFloat(2.0); + assert_eq!(*o, 2.0f64); + assert_eq!(f, 2.0f64); +} + +macro_rules! test_float_const_method { + ($type:ident < $inner:ident >, $method:ident) => { + assert_eq!($type::<$inner>::$method().into_inner(), $inner::$method()) + }; +} + +macro_rules! test_float_const_methods { + ($type:ident < $inner:ident >) => { + test_float_const_method!($type<$inner>, E); + test_float_const_method!($type<$inner>, FRAC_1_PI); + test_float_const_method!($type<$inner>, FRAC_1_SQRT_2); + test_float_const_method!($type<$inner>, FRAC_2_PI); + test_float_const_method!($type<$inner>, FRAC_2_SQRT_PI); + test_float_const_method!($type<$inner>, FRAC_PI_2); + test_float_const_method!($type<$inner>, FRAC_PI_3); + test_float_const_method!($type<$inner>, FRAC_PI_4); + test_float_const_method!($type<$inner>, FRAC_PI_6); + test_float_const_method!($type<$inner>, FRAC_PI_8); + test_float_const_method!($type<$inner>, LN_10); + test_float_const_method!($type<$inner>, LN_2); + test_float_const_method!($type<$inner>, LOG10_E); + test_float_const_method!($type<$inner>, LOG2_E); + test_float_const_method!($type<$inner>, PI); + test_float_const_method!($type<$inner>, SQRT_2); + }; +} + +#[test] +fn float_consts_equal_inner() { + test_float_const_methods!(OrderedFloat); + test_float_const_methods!(OrderedFloat); + test_float_const_methods!(NotNan); + test_float_const_methods!(NotNan); +} + +#[cfg(feature = "std")] +macro_rules! test_pow_ord { + ($type:ident < $inner:ident >) => { + assert_eq!($type::<$inner>::from(3.0).pow(2i8), OrderedFloat(9.0)); + assert_eq!($type::<$inner>::from(3.0).pow(2i16), OrderedFloat(9.0)); + assert_eq!($type::<$inner>::from(3.0).pow(2i32), OrderedFloat(9.0)); + assert_eq!($type::<$inner>::from(3.0).pow(2u8), OrderedFloat(9.0)); + assert_eq!($type::<$inner>::from(3.0).pow(2u16), OrderedFloat(9.0)); + assert_eq!($type::<$inner>::from(3.0).pow(2f32), OrderedFloat(9.0)); + }; +} + +#[cfg(feature = "std")] +macro_rules! test_pow_nn { + ($type:ident < $inner:ident >) => { + assert_eq!( + $type::<$inner>::new(3.0).unwrap().pow(2i8), + NotNan::new(9.0).unwrap() + ); + assert_eq!( + $type::<$inner>::new(3.0).unwrap().pow(2u8), + NotNan::new(9.0).unwrap() + ); + assert_eq!( + $type::<$inner>::new(3.0).unwrap().pow(2i16), + NotNan::new(9.0).unwrap() + ); + assert_eq!( + $type::<$inner>::new(3.0).unwrap().pow(2u16), + NotNan::new(9.0).unwrap() + ); + assert_eq!( + $type::<$inner>::new(3.0).unwrap().pow(2i32), + NotNan::new(9.0).unwrap() + ); + assert_eq!( + $type::<$inner>::new(3.0).unwrap().pow(2f32), + NotNan::new(9.0).unwrap() + ); + }; +} + +#[cfg(feature = "std")] +#[test] +fn test_pow_works() { + assert_eq!(OrderedFloat(3.0).pow(OrderedFloat(2.0)), OrderedFloat(9.0)); + test_pow_ord!(OrderedFloat); + test_pow_ord!(OrderedFloat); + assert_eq!( + NotNan::new(3.0).unwrap().pow(NotNan::new(2.0).unwrap()), + NotNan::new(9.0).unwrap() + ); + test_pow_nn!(NotNan); + test_pow_nn!(NotNan); + // Only f64 have Pow impl by default, so checking those seperate from macro + assert_eq!(OrderedFloat::::from(3.0).pow(2f64), OrderedFloat(9.0)); + assert_eq!( + NotNan::::new(3.0).unwrap().pow(2f64), + NotNan::new(9.0).unwrap() + ); +} + +#[cfg(feature = "std")] +#[test] +#[should_panic] +fn test_pow_fails_on_nan() { + let a = not_nan(-1.0); + let b = f32::NAN; + a.pow(b); +} + +#[cfg(feature = "arbitrary")] +mod arbitrary_test { + use super::{NotNan, OrderedFloat}; + use arbitrary::{Arbitrary, Unstructured}; + + #[test] + fn exhaustive() { + // Exhaustively search all patterns of sign and exponent bits plus a few mantissa bits. + for high_bytes in 0..=u16::MAX { + let [h1, h2] = high_bytes.to_be_bytes(); + + // Each of these should not + // * panic, + // * return an error, or + // * need more bytes than given. + let n32: NotNan = Unstructured::new(&[h1, h2, h1, h2]) + .arbitrary() + .expect("NotNan failure"); + let n64: NotNan = Unstructured::new(&[h1, h2, h1, h2, h1, h2, h1, h2]) + .arbitrary() + .expect("NotNan failure"); + let _: OrderedFloat = Unstructured::new(&[h1, h2, h1, h2]) + .arbitrary() + .expect("OrderedFloat failure"); + let _: OrderedFloat = Unstructured::new(&[h1, h2, h1, h2, h1, h2, h1, h2]) + .arbitrary() + .expect("OrderedFloat failure"); + + // Check for violation of NotNan's property of never containing a NaN. + assert!(!n32.into_inner().is_nan()); + assert!(!n64.into_inner().is_nan()); + } + } + + #[test] + fn size_hints() { + assert_eq!(NotNan::::size_hint(0), (4, Some(4))); + assert_eq!(NotNan::::size_hint(0), (8, Some(8))); + assert_eq!(OrderedFloat::::size_hint(0), (4, Some(4))); + assert_eq!(OrderedFloat::::size_hint(0), (8, Some(8))); + } +} diff -Nru temporalio-1.3.0/vendor/petgraph/.cargo-checksum.json temporalio-1.3.0/vendor/petgraph/.cargo-checksum.json --- temporalio-1.3.0/vendor/petgraph/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/petgraph/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CONTRIBUTING.rst":"0414e4bc899b4fda02b0b05124ded49e394a887617469ab99930cd64c65ea3c4","Cargo.toml":"8dfe4816d9fe230b8870f1f82165f52458b7df2012c5a22c4f713d3fa7bdf32e","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7576269ea71f767b99297934c0b2367532690f8c4badc695edf8e04ab6a1e545","Makefile":"00085165f17f84dca52e95d3ef0890ce91004225938c39c5b20c237ba0265828","README.md":"cfa4d631064fc1cd130d14e5db8d95b7510b6e05d1ac974db8ed902a9df59116","RELEASES.rst":"dcd56be5984850586f12554ff92fc226d24ec405e6f50210026456f111f76ae4","benches/bellman_ford.rs":"b096646a95fc6a9a8066295222ef75391339dc53a3713083dd68363ed7b94866","benches/common/factories.rs":"e8a4168e5064f1aff5aa9f6346a0c4f0560535ab24f5d3fb35f18c3d670d03e5","benches/common/mod.rs":"bd4ffa898825ac7952cb2e4911c0342f0f33ba1bcce0ba85cc626332fe324068","benches/dijkstra.rs":"d002897638528467828e4c53c539b4825c27158d88887fb4e63efbcf68088536","benches/feedback_arc_set.rs":"b60bffc086f6144683d1e02795638481b6ff86b4ac2bf905b8500396ed212e1e","benches/floyd_warshall.rs":"e26ed033f77c9dc1706455fc1288f7df1d562966901ca6083e67da17c48e4307","benches/iso.rs":"628ff8ce2a5226011b77f78e3a416a90a6850ae1cf06e5a0713c13302c8573b4","benches/k_shortest_path.rs":"6a1e01941b44b47d522bbc0203c1cb906a7e3518efe146921dbb60599d228b90","benches/matching.rs":"97f79f2f836ecb3843becb219f5d02fe70b1ecb68313610e91d532d2491b0503","benches/matrix_graph.rs":"667809ed03a4b526269c3a82479d1e53c4d5c50e42a4be972704088fe3b771d1","benches/ograph.rs":"cf3db011897e7ea44e069ee0e6a4cabb64bcbaf233077d6e61d07f05bc9d2acd","benches/serialize.rs":"29dab1869d58658938cc4914ffeb493d67327dd0720ed3fb90e66cf2fdfd4b0f","benches/stable_graph.rs":"930198169e9798ce4936fa7cff2ec47accde86a0160514aea028468af85fd6cf","benches/unionfind.rs":"d7303971cd6994b61e0b13ceba3cd92adbe0ed66f69459aef651e97e39acf1e6","clippy.toml":"7e7b691a2a93748ad167b7bc582153141ffc1d274046f2374395ab4d6ad9bf2a","custom.css":"e6f2cd299392337b4e2959c52f422e5b7be11920ea98d10db44d10ddef5ed47c","graph-example.dot":"9db00c096f61632bfba85a5a46b125cc5151583b6dbed89b75fa711ed4f649f2","src/adj.rs":"15a74eeb00d8779d8bcc426e8a8eb6cf00323242aaa792c0bd810dabf367a499","src/algo/astar.rs":"e32551fa3a1dd5f7d7d612dd3d5b5de404e2b989c189b847acc144d7a88a32c1","src/algo/bellman_ford.rs":"dc4f8caf88278401cd372f6774034cf16542d648a3aa0e9a2d2a4bcb2bad2554","src/algo/dijkstra.rs":"c98e4bed915e2b4eb5da56b6d1add7653ee7039b6e040a53bf82c4796835eabd","src/algo/dominators.rs":"2a4e058ffd5e3d482875f5068de98500297453f458f83675998ef0d3e750fa18","src/algo/feedback_arc_set.rs":"e58b0025627c5614311bb84eeabbefd1d4d6d7b1d9bc2d4b81f1b4e2e4fc7b89","src/algo/floyd_warshall.rs":"d61aba4652786110a5df567a349c0992669798db0dab5f82e41057f23e973749","src/algo/isomorphism.rs":"f410cd6a52a1643ccf4f721ca7b18f571e077233bdfa1c803f2bcd2eef4aad43","src/algo/k_shortest_path.rs":"cfb2d7a28337abbf89efff901498650bdbba2730062ca925185e8c6c26ddd763","src/algo/matching.rs":"da2d65e97a3d442f78829696debfa9b3b4f14d28c77dee757547229a15f5b634","src/algo/mod.rs":"18a2439141793e3113a0c128bd2ba8fa0a5b791347835b6e37feee496ed1ff49","src/algo/simple_paths.rs":"1c01228b04aaef5c2c21b21e310db208b4bb317103db456fb9d51f4094e1dc39","src/algo/tred.rs":"ba6d6ff07026ca4c0dc7e78dd25ba1f98d7b3997e4c331806f31ac86e015e24f","src/csr.rs":"94e451e33791e0e0b535ad4310b7d36dd773b5af9bfe9284522b0a4692e33904","src/data.rs":"e931c74130aa427af9290a061c510b0f8a7387fc33068f80ee8699817576f27d","src/dot.rs":"e94814f24bb788590fe0c52f647901eadcd3b13a7f580017f66eca3e137986d8","src/generate.rs":"4d99ffbf45b221168fc9dc5d06abc0f7da9a2f36cdb5e23549b25886b1b0e30d","src/graph_impl/frozen.rs":"6ef5d945e6b2417fdc598106c35080fe275bdb3c38a944281315907048e64952","src/graph_impl/mod.rs":"e6ee29d421fe8515270b02e339d27a99424cac2ec1c99b78f335d86349f4e964","src/graph_impl/serialization.rs":"38e448e227dbbe97be5046189d6b851fec0c18b0f67ed68304e0719686d0ee74","src/graph_impl/stable_graph/mod.rs":"104114c8f2bd62e9d2467d39282071ed7fbd0a30ca554b13d10a6953e449392c","src/graph_impl/stable_graph/serialization.rs":"71c607c3d3a1407d7e6538b90926cdece6853230996f6618d55b3a1c6b0b8228","src/graphmap.rs":"a8318e4b3bb900195a19ea266d2b5822b35de7af5ccdb8c07fde6c7b39233136","src/iter_format.rs":"5ee257febf7b314f8874f17e1c58a879adf40b2fe42eaffc032ec0b316d18fe9","src/iter_utils.rs":"19d16b593edb876d90b5ae3f39ed407f84302b2f102dbd7b2cdc0d3dae9dcf11","src/lib.rs":"bb2680c87b4d71bb69fa0bc90c6950854f7e04847ac95b0f9d4f982b1ccc98a1","src/macros.rs":"b5dc5330c91e0f438a1f1d43124d9baee5b256e4a62cf91cb8420676a5142969","src/matrix_graph.rs":"92111ba55626f4a2eca14b969aa8fe1f3834791abb026e3c6e24f9e4bf795cec","src/operator.rs":"33f3e8c63365c9cf94385950e9afb43de2b82ebab58b2a34c107a6f63ad572ca","src/prelude.rs":"d8505973651f90414a4232996f4a3a20f7101b2edf5d2f96e9f2c85a7f5ca206","src/quickcheck.rs":"e055789281dab53e88228323079749100b97eee2f24090f3ae8205ae89531ed5","src/scored.rs":"0eba0c9696bb6ac17c50f7f20fa1139bd4d48e49fd6120d1f5a0fd3dfd203c13","src/serde_utils.rs":"3a6aaecf4ba021de8c65b9ba1baf7fdf4ae9a9281c10d2b8932fa6270de0371a","src/traits_graph.rs":"7792dba31df40adc50691b09d36198d1baa6105630d792cad65f6273cb5a0323","src/unionfind.rs":"2c250d5a572ec2f124f8ae2e611993b87639e45fa4d915579ba9c3272ac0baf2","src/util.rs":"3c83de3b1f58ea5a7306083765a767e7b5470ce6dcbbe6d8412284f9845cb7e4","src/visit/dfsvisit.rs":"efcd64f33d607a7096d0d8ad1c48509644e2cb2dd6ec1d5992736d6bbb6631e2","src/visit/filter.rs":"49deebba9b05c95f03e18beb04bb89213cb16359e7077b3c90c5daa075ed20f4","src/visit/macros.rs":"e335f9e05d03ad1d2b4c94044355922022769b5cd98b423af8702e57c031303a","src/visit/mod.rs":"1a3c4b13e1d0bc2f853f05a1b9ced40125e5b3d099a05d68aa525d9120910c63","src/visit/reversed.rs":"394243aa1da062101993a0837cd3c052b806850f5792aa0d13b2a8c5d9ad8473","src/visit/traversal.rs":"f8ea61c02ff8864897c8190a923e86a99c94bb4991b578c291a26d225919ce4d","tests/floyd_warshall.rs":"2e06436a7593e1001b81f2e7a899294ea9b5d4b2c8fd5874179f52cd1b3dd229","tests/graph.rs":"464b0179bddafe1616b2069955763ba6ae414b1956a98b50b1f5affa9b20c392","tests/graphmap.rs":"caf76312877a9638234dc58f68ef23889d1446f43a5757d73736d5753b348dff","tests/iso.rs":"a7e3894002b6a99866b4812c3d73859ebbea8a3a9669e449075386262c048538","tests/k_shortest_path.rs":"1d1bc05f80e285dfdbb6993e04c366b07cfb54b2cb989e24d2cfe20daf962365","tests/list.rs":"57f1dc232fa83645a72724c282e1e98c7f98d5a25a4cf419c08d4b1c3352e870","tests/matching.rs":"87de0a0151cfd3a4a0aa6a6d6947d4a756dd3f44a86a3d387afcb92948bed322","tests/operator.rs":"03db54dfabc9c6bff6f65be34779c919c82a78caa147cfa169bc3b1219481e84","tests/quickcheck.rs":"c15a529ee1bb3cae0430861ce2150358d1b005b9baac166cb78b3faa4622b7fb","tests/res/graph_1000n_1000e.txt":"71113574d773c3d1aa7c89266fab162eab91fb7e2afbcc2434623714532b76b7","tests/res/graph_1000n_1000e_iso.txt":"c299f722a6ba5c43164b32248c4f6a59f96173f8b49564399a919d0941f935e5","tests/res/graph_100n_100e.txt":"7d57ed5092a116fef60328b88f7be9a6d926d6dabfb089a092e6e58cd131551e","tests/res/graph_100n_100e_iso.txt":"ee75214d6f8b6a42a84a5bb2a9715cf14e719f5507b88ba14e9a168f43baee92","tests/stable_graph.rs":"158d07dd8ef3304da4253e2a239fce6a67ae4658dd94379aa55e29dfe433f699","tests/unionfind.rs":"4ae684b2b703d263e140126212e20b3b6f9f0d6c89ecde47588be139bd60a8a3","tests/utils/mod.rs":"524309487ecb9332695be89b5bf2f0d32ae6bf4c39207c7d058f8fc7a848d751","tests/utils/qc.rs":"72d078b1a224a6da97491b5ec045dd840f94d02a13a2d998fdf3bf6ef0386f99"},"package":"4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4"} \ No newline at end of file +{"files":{"CONTRIBUTING.rst":"0414e4bc899b4fda02b0b05124ded49e394a887617469ab99930cd64c65ea3c4","Cargo.toml":"38479d510ce11b13566e77db8ef7b0d167bdee09729036f8fddb1c3853e94ac8","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7576269ea71f767b99297934c0b2367532690f8c4badc695edf8e04ab6a1e545","Makefile":"00085165f17f84dca52e95d3ef0890ce91004225938c39c5b20c237ba0265828","README.md":"8de89ab75243e040c74465cb13357ee9dfd21ddd3fe9976e849d6ed169864438","RELEASES.rst":"bad985654c824183fa8c281d72f06d1fba63e4675544176b6f1b79a04600e6c1","benches/bellman_ford.rs":"b096646a95fc6a9a8066295222ef75391339dc53a3713083dd68363ed7b94866","benches/common/factories.rs":"e8a4168e5064f1aff5aa9f6346a0c4f0560535ab24f5d3fb35f18c3d670d03e5","benches/common/mod.rs":"bd4ffa898825ac7952cb2e4911c0342f0f33ba1bcce0ba85cc626332fe324068","benches/dijkstra.rs":"d002897638528467828e4c53c539b4825c27158d88887fb4e63efbcf68088536","benches/feedback_arc_set.rs":"b60bffc086f6144683d1e02795638481b6ff86b4ac2bf905b8500396ed212e1e","benches/floyd_warshall.rs":"e26ed033f77c9dc1706455fc1288f7df1d562966901ca6083e67da17c48e4307","benches/iso.rs":"628ff8ce2a5226011b77f78e3a416a90a6850ae1cf06e5a0713c13302c8573b4","benches/k_shortest_path.rs":"6a1e01941b44b47d522bbc0203c1cb906a7e3518efe146921dbb60599d228b90","benches/matching.rs":"97f79f2f836ecb3843becb219f5d02fe70b1ecb68313610e91d532d2491b0503","benches/matrix_graph.rs":"667809ed03a4b526269c3a82479d1e53c4d5c50e42a4be972704088fe3b771d1","benches/ograph.rs":"cf3db011897e7ea44e069ee0e6a4cabb64bcbaf233077d6e61d07f05bc9d2acd","benches/serialize.rs":"29dab1869d58658938cc4914ffeb493d67327dd0720ed3fb90e66cf2fdfd4b0f","benches/stable_graph.rs":"930198169e9798ce4936fa7cff2ec47accde86a0160514aea028468af85fd6cf","benches/unionfind.rs":"d7303971cd6994b61e0b13ceba3cd92adbe0ed66f69459aef651e97e39acf1e6","clippy.toml":"7e7b691a2a93748ad167b7bc582153141ffc1d274046f2374395ab4d6ad9bf2a","custom.css":"e6f2cd299392337b4e2959c52f422e5b7be11920ea98d10db44d10ddef5ed47c","graph-example.dot":"9db00c096f61632bfba85a5a46b125cc5151583b6dbed89b75fa711ed4f649f2","src/adj.rs":"15a74eeb00d8779d8bcc426e8a8eb6cf00323242aaa792c0bd810dabf367a499","src/algo/astar.rs":"e32551fa3a1dd5f7d7d612dd3d5b5de404e2b989c189b847acc144d7a88a32c1","src/algo/bellman_ford.rs":"dc4f8caf88278401cd372f6774034cf16542d648a3aa0e9a2d2a4bcb2bad2554","src/algo/dijkstra.rs":"c98e4bed915e2b4eb5da56b6d1add7653ee7039b6e040a53bf82c4796835eabd","src/algo/dominators.rs":"2a4e058ffd5e3d482875f5068de98500297453f458f83675998ef0d3e750fa18","src/algo/feedback_arc_set.rs":"e58b0025627c5614311bb84eeabbefd1d4d6d7b1d9bc2d4b81f1b4e2e4fc7b89","src/algo/floyd_warshall.rs":"d61aba4652786110a5df567a349c0992669798db0dab5f82e41057f23e973749","src/algo/isomorphism.rs":"1cb2f7f02534044923f9ced10fa2d07ca596ab049c2a06681b3c608dba663da9","src/algo/k_shortest_path.rs":"cfb2d7a28337abbf89efff901498650bdbba2730062ca925185e8c6c26ddd763","src/algo/matching.rs":"da2d65e97a3d442f78829696debfa9b3b4f14d28c77dee757547229a15f5b634","src/algo/mod.rs":"18a2439141793e3113a0c128bd2ba8fa0a5b791347835b6e37feee496ed1ff49","src/algo/simple_paths.rs":"1c01228b04aaef5c2c21b21e310db208b4bb317103db456fb9d51f4094e1dc39","src/algo/tred.rs":"ba6d6ff07026ca4c0dc7e78dd25ba1f98d7b3997e4c331806f31ac86e015e24f","src/csr.rs":"94e451e33791e0e0b535ad4310b7d36dd773b5af9bfe9284522b0a4692e33904","src/data.rs":"e931c74130aa427af9290a061c510b0f8a7387fc33068f80ee8699817576f27d","src/dot.rs":"e94814f24bb788590fe0c52f647901eadcd3b13a7f580017f66eca3e137986d8","src/generate.rs":"4d99ffbf45b221168fc9dc5d06abc0f7da9a2f36cdb5e23549b25886b1b0e30d","src/graph_impl/frozen.rs":"6ef5d945e6b2417fdc598106c35080fe275bdb3c38a944281315907048e64952","src/graph_impl/mod.rs":"e6ee29d421fe8515270b02e339d27a99424cac2ec1c99b78f335d86349f4e964","src/graph_impl/serialization.rs":"38e448e227dbbe97be5046189d6b851fec0c18b0f67ed68304e0719686d0ee74","src/graph_impl/stable_graph/mod.rs":"104114c8f2bd62e9d2467d39282071ed7fbd0a30ca554b13d10a6953e449392c","src/graph_impl/stable_graph/serialization.rs":"71c607c3d3a1407d7e6538b90926cdece6853230996f6618d55b3a1c6b0b8228","src/graphmap.rs":"a8318e4b3bb900195a19ea266d2b5822b35de7af5ccdb8c07fde6c7b39233136","src/iter_format.rs":"5ee257febf7b314f8874f17e1c58a879adf40b2fe42eaffc032ec0b316d18fe9","src/iter_utils.rs":"19d16b593edb876d90b5ae3f39ed407f84302b2f102dbd7b2cdc0d3dae9dcf11","src/lib.rs":"bb2680c87b4d71bb69fa0bc90c6950854f7e04847ac95b0f9d4f982b1ccc98a1","src/macros.rs":"b5dc5330c91e0f438a1f1d43124d9baee5b256e4a62cf91cb8420676a5142969","src/matrix_graph.rs":"61efbf8d94691c8fd6a5a62ed2fd4c9143d654d8f84a9680fecf1632791a60c3","src/operator.rs":"fa2114fb3950ccef6ae07ec6917e72340c937eba196b1b8b4a4233d238616096","src/prelude.rs":"d8505973651f90414a4232996f4a3a20f7101b2edf5d2f96e9f2c85a7f5ca206","src/quickcheck.rs":"e055789281dab53e88228323079749100b97eee2f24090f3ae8205ae89531ed5","src/scored.rs":"0eba0c9696bb6ac17c50f7f20fa1139bd4d48e49fd6120d1f5a0fd3dfd203c13","src/serde_utils.rs":"3a6aaecf4ba021de8c65b9ba1baf7fdf4ae9a9281c10d2b8932fa6270de0371a","src/traits_graph.rs":"7792dba31df40adc50691b09d36198d1baa6105630d792cad65f6273cb5a0323","src/unionfind.rs":"2c250d5a572ec2f124f8ae2e611993b87639e45fa4d915579ba9c3272ac0baf2","src/util.rs":"3c83de3b1f58ea5a7306083765a767e7b5470ce6dcbbe6d8412284f9845cb7e4","src/visit/dfsvisit.rs":"efcd64f33d607a7096d0d8ad1c48509644e2cb2dd6ec1d5992736d6bbb6631e2","src/visit/filter.rs":"49deebba9b05c95f03e18beb04bb89213cb16359e7077b3c90c5daa075ed20f4","src/visit/macros.rs":"e335f9e05d03ad1d2b4c94044355922022769b5cd98b423af8702e57c031303a","src/visit/mod.rs":"4f9c1d75aa724030699c19d1772eae1a95e404dbcbbb740248c1a1c9af0e6773","src/visit/reversed.rs":"394243aa1da062101993a0837cd3c052b806850f5792aa0d13b2a8c5d9ad8473","src/visit/traversal.rs":"f8ea61c02ff8864897c8190a923e86a99c94bb4991b578c291a26d225919ce4d","tests/floyd_warshall.rs":"2e06436a7593e1001b81f2e7a899294ea9b5d4b2c8fd5874179f52cd1b3dd229","tests/graph.rs":"464b0179bddafe1616b2069955763ba6ae414b1956a98b50b1f5affa9b20c392","tests/graphmap.rs":"caf76312877a9638234dc58f68ef23889d1446f43a5757d73736d5753b348dff","tests/iso.rs":"63b115409bd36947712248fed458ac60a75c13e222799d5030daf980a82152e8","tests/k_shortest_path.rs":"1d1bc05f80e285dfdbb6993e04c366b07cfb54b2cb989e24d2cfe20daf962365","tests/list.rs":"57f1dc232fa83645a72724c282e1e98c7f98d5a25a4cf419c08d4b1c3352e870","tests/matching.rs":"87de0a0151cfd3a4a0aa6a6d6947d4a756dd3f44a86a3d387afcb92948bed322","tests/operator.rs":"03db54dfabc9c6bff6f65be34779c919c82a78caa147cfa169bc3b1219481e84","tests/quickcheck.rs":"c15a529ee1bb3cae0430861ce2150358d1b005b9baac166cb78b3faa4622b7fb","tests/res/graph_1000n_1000e.txt":"71113574d773c3d1aa7c89266fab162eab91fb7e2afbcc2434623714532b76b7","tests/res/graph_1000n_1000e_iso.txt":"c299f722a6ba5c43164b32248c4f6a59f96173f8b49564399a919d0941f935e5","tests/res/graph_100n_100e.txt":"7d57ed5092a116fef60328b88f7be9a6d926d6dabfb089a092e6e58cd131551e","tests/res/graph_100n_100e_iso.txt":"ee75214d6f8b6a42a84a5bb2a9715cf14e719f5507b88ba14e9a168f43baee92","tests/stable_graph.rs":"158d07dd8ef3304da4253e2a239fce6a67ae4658dd94379aa55e29dfe433f699","tests/unionfind.rs":"4ae684b2b703d263e140126212e20b3b6f9f0d6c89ecde47588be139bd60a8a3","tests/utils/mod.rs":"524309487ecb9332695be89b5bf2f0d32ae6bf4c39207c7d058f8fc7a848d751","tests/utils/qc.rs":"72d078b1a224a6da97491b5ec045dd840f94d02a13a2d998fdf3bf6ef0386f99"},"package":"e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/petgraph/Cargo.toml temporalio-1.3.0/vendor/petgraph/Cargo.toml --- temporalio-1.3.0/vendor/petgraph/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/petgraph/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,8 +11,9 @@ [package] edition = "2018" +rust-version = "1.64" name = "petgraph" -version = "0.6.3" +version = "0.6.4" authors = [ "bluss", "mitchmindtree", @@ -40,7 +41,7 @@ no-dev-version = true [profile.bench] -debug = true +debug = 2 [profile.release] @@ -53,8 +54,7 @@ default-features = false [dependencies.indexmap] -version = "1.7" -features = ["std"] +version = "2.0" [dependencies.quickcheck] version = "0.8" @@ -76,7 +76,7 @@ version = "0.2.1" [dev-dependencies.itertools] -version = "0.10.1" +version = "0.11.0" default-features = false [dev-dependencies.odds] diff -Nru temporalio-1.3.0/vendor/petgraph/README.md temporalio-1.3.0/vendor/petgraph/README.md --- temporalio-1.3.0/vendor/petgraph/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/petgraph/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,7 @@ Graph data structure library. Please read the [API documentation here][]. -Supports Rust 1.41 and later (some older versions may require picking the dependency versions [by hand][dependency_hack]). +Supports Rust 1.64 and later. [![build_status][]](https://github.com/petgraph/petgraph/actions) [![crates][]](https://crates.io/crates/petgraph) [![gitter][]](https://gitter.im/petgraph-rs/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) @@ -33,4 +33,3 @@ [crates]: https://img.shields.io/crates/v/petgraph [gitter]: https://badges.gitter.im/petgraph-rs/community.svg [RELEASES]: RELEASES.rst - [dependency_hack]: https://github.com/petgraph/petgraph/pull/493#issuecomment-1134970689 diff -Nru temporalio-1.3.0/vendor/petgraph/RELEASES.rst temporalio-1.3.0/vendor/petgraph/RELEASES.rst --- temporalio-1.3.0/vendor/petgraph/RELEASES.rst 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/petgraph/RELEASES.rst 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,12 @@ +Version 0.6.4 (2023-08-21) +========================== + +- Update ``indexmap`` to 2.0.0 (`#568`_) +- Fix typos (`#544`_) + +.. _`#544`: https://github.com/petgraph/petgraph/pull/544 +.. _`#568`: https://github.com/petgraph/petgraph/pull/568 + Version 0.6.3 (2023-02-07) ========================== @@ -530,7 +539,7 @@ Version 0.1.10 (2015-06-22) =========================== - + - Fix bug in WalkEdges::next_neighbor() Version 0.1.9 (2015-06-17) diff -Nru temporalio-1.3.0/vendor/petgraph/src/algo/isomorphism.rs temporalio-1.3.0/vendor/petgraph/src/algo/isomorphism.rs --- temporalio-1.3.0/vendor/petgraph/src/algo/isomorphism.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/petgraph/src/algo/isomorphism.rs 2023-10-30 19:40:00.000000000 +0000 @@ -506,26 +506,26 @@ fn next_from_ix( st: &mut (Vf2State<'_, G0>, Vf2State<'_, G1>), - nx: G0::NodeId, + nx: G1::NodeId, open_list: OpenList, - ) -> Option + ) -> Option where G0: GetAdjacencyMatrix + GraphProp + NodeCompactIndexable + IntoNeighborsDirected, G1: GetAdjacencyMatrix + GraphProp + NodeCompactIndexable + IntoNeighborsDirected, { - // Find the next node index to try on the `from` side of the mapping - let start = st.0.graph.to_index(nx) + 1; - let cand0 = match open_list { - OpenList::Out => st.0.next_out_index(start), - OpenList::In => st.0.next_in_index(start), - OpenList::Other => st.0.next_rest_index(start), + // Find the next node index to try on the `to` side of the mapping + let start = st.1.graph.to_index(nx) + 1; + let cand1 = match open_list { + OpenList::Out => st.1.next_out_index(start), + OpenList::In => st.1.next_in_index(start), + OpenList::Other => st.1.next_rest_index(start), } .map(|c| c + start); // compensate for start offset. - match cand0 { + match cand1 { None => None, // no more candidates Some(ix) => { debug_assert!(ix >= start); - Some(st.0.graph.from_index(ix)) + Some(st.1.graph.from_index(ix)) } } } @@ -615,11 +615,11 @@ Frame::Unwind { nodes, open_list } => { pop_state(st, nodes); - match next_from_ix(st, nodes.0, open_list) { + match next_from_ix(st, nodes.1, open_list) { None => continue, Some(nx) => { let f = Frame::Inner { - nodes: (nx, nodes.1), + nodes: (nodes.0, nx), open_list, }; stack.push(f); @@ -657,11 +657,11 @@ } pop_state(st, nodes); } - match next_from_ix(st, nodes.0, open_list) { + match next_from_ix(st, nodes.1, open_list) { None => continue, Some(nx) => { let f = Frame::Inner { - nodes: (nx, nodes.1), + nodes: (nodes.0, nx), open_list, }; stack.push(f); diff -Nru temporalio-1.3.0/vendor/petgraph/src/matrix_graph.rs temporalio-1.3.0/vendor/petgraph/src/matrix_graph.rs --- temporalio-1.3.0/vendor/petgraph/src/matrix_graph.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/petgraph/src/matrix_graph.rs 2023-10-30 19:40:00.000000000 +0000 @@ -464,7 +464,7 @@ /// - `Undirected`: All edges connected to `a`. /// /// Produces an empty iterator if the node doesn't exist.
- /// Iterator element type is (NodeIndex, NodeIndex, &E). + /// Iterator element type is `(NodeIndex, NodeIndex, &E)`. pub fn edges(&self, a: NodeIndex) -> Edges { Edges::on_columns(a.index(), &self.node_adjacencies, self.node_capacity) } @@ -556,7 +556,7 @@ /// - `Incoming`: All edges to `a`. /// /// Produces an empty iterator if the node `a` doesn't exist.
- /// Iterator element type is (NodeIndex, NodeIndex, &E). + /// Iterator element type is `(NodeIndex, NodeIndex, &E)`. pub fn edges_directed(&self, a: NodeIndex, d: Direction) -> Edges { if d == Outgoing { self.edges(a) @@ -897,12 +897,7 @@ /// Grow a Vec by appending the type's default value until the `size` is reached. fn ensure_len(v: &mut Vec, size: usize) { - if let Some(n) = size.checked_sub(v.len()) { - v.reserve(n); - for _ in 0..n { - v.push(T::default()); - } - } + v.resize_with(size, T::default); } #[derive(Debug, Clone)] @@ -1133,12 +1128,12 @@ type Map = FixedBitSet; fn visit_map(&self) -> FixedBitSet { - FixedBitSet::with_capacity(self.node_count()) + FixedBitSet::with_capacity(self.node_bound()) } fn reset_map(&self, map: &mut Self::Map) { map.clear(); - map.grow(self.node_count()); + map.grow(self.node_bound()); } } @@ -1235,7 +1230,7 @@ for MatrixGraph { fn node_bound(&self) -> usize { - self.node_count() + self.nodes.upper_bound } fn to_index(&self, ix: NodeIndex) -> usize { @@ -1783,4 +1778,37 @@ assert!(!g.has_edge(a, b)); assert_eq!(g.edge_count(), 0); } + #[test] + // From https://github.com/petgraph/petgraph/issues/523 + fn test_tarjan_scc_with_removed_node() { + let mut g: MatrixGraph<(), ()> = MatrixGraph::new(); + + g.add_node(()); + let b = g.add_node(()); + g.add_node(()); + + g.remove_node(b); + + assert_eq!( + crate::algo::tarjan_scc(&g), + [[node_index(0)], [node_index(2)]] + ); + } + + #[test] + // From https://github.com/petgraph/petgraph/issues/523 + fn test_kosaraju_scc_with_removed_node() { + let mut g: MatrixGraph<(), ()> = MatrixGraph::new(); + + g.add_node(()); + let b = g.add_node(()); + g.add_node(()); + + g.remove_node(b); + + assert_eq!( + crate::algo::kosaraju_scc(&g), + [[node_index(2)], [node_index(0)]] + ); + } } diff -Nru temporalio-1.3.0/vendor/petgraph/src/operator.rs temporalio-1.3.0/vendor/petgraph/src/operator.rs --- temporalio-1.3.0/vendor/petgraph/src/operator.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/petgraph/src/operator.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,11 @@ +//! Operators for creating new graphs from existings ones. use super::graph::{Graph, IndexType}; use super::EdgeType; use crate::visit::IntoNodeReferences; /// \[Generic\] complement of the graph /// -/// Computes the graph complement of the input Graphand stores it +/// Computes the graph complement of the input Graph and stores it /// in the provided empty output Graph. /// /// The function does not create self-loops. @@ -32,7 +33,6 @@ /// ]); /// // a ----> b ----> c ----> d /// -/// graph.extend_with_edges(&[(a, b), (b, c), (c, d)]); /// let mut output: Graph<(), (), Directed> = Graph::new(); /// /// complement(&graph, &mut output, ()); diff -Nru temporalio-1.3.0/vendor/petgraph/src/visit/mod.rs temporalio-1.3.0/vendor/petgraph/src/visit/mod.rs --- temporalio-1.3.0/vendor/petgraph/src/visit/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/petgraph/src/visit/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -322,7 +322,7 @@ /// Edge kind property (directed or undirected edges) pub trait GraphProp : GraphBase { @section type - /// The kind edges in the graph. + /// The kind of edges in the graph. type EdgeType: EdgeType; @section nodelegate diff -Nru temporalio-1.3.0/vendor/petgraph/tests/iso.rs temporalio-1.3.0/vendor/petgraph/tests/iso.rs --- temporalio-1.3.0/vendor/petgraph/tests/iso.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/petgraph/tests/iso.rs 2023-10-30 19:40:00.000000000 +0000 @@ -544,6 +544,30 @@ .next() .is_none() ); + + // https://github.com/petgraph/petgraph/issues/534 + let mut g = Graph::::new(); + let e1 = g.add_node("l1".to_string()); + let e2 = g.add_node("l2".to_string()); + g.add_edge(e1, e2, ()); + let e3 = g.add_node("l3".to_string()); + g.add_edge(e2, e3, ()); + let e4 = g.add_node("l4".to_string()); + g.add_edge(e3, e4, ()); + + let mut sub = Graph::::new(); + let e3 = sub.add_node("l3".to_string()); + let e4 = sub.add_node("l4".to_string()); + sub.add_edge(e3, e4, ()); + + let mut node_match = { |x: &String, y: &String| x == y }; + let mut edge_match = { |x: &(), y: &()| x == y }; + assert_eq!( + subgraph_isomorphisms_iter(&&sub, &&g, &mut node_match, &mut edge_match) + .unwrap() + .collect::>(), + vec![vec![2, 3]] + ); } /// Isomorphic pair diff -Nru temporalio-1.3.0/vendor/pin-project/.cargo-checksum.json temporalio-1.3.0/vendor/pin-project/.cargo-checksum.json --- temporalio-1.3.0/vendor/pin-project/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"92a2755dc55d0af4a9b1465effcc83fe75824e68300059a1ca568cd7a6011140","Cargo.lock":"a7be1e1369fde2247a43e95faacaac30b3ca5b9a2921db8c4ad4e1f93dae55c7","Cargo.toml":"46d98c43d45cc0c5d4a53bf6d56114e87152462d1a4bdadfea16622672fc2abf","LICENSE-APACHE":"0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"881afdc0098d23c7f4959d31a1f48177bb81d74625a03e8decfa57451629d54c","examples/README.md":"e04e4ad8c5518aaa839b1255f9aee47877ae223053f32d83db797f607b9422b6","examples/enum-default-expanded.rs":"92414c9b48f3e280ba10994a426629da799d125d764d1b3857676b21cb42dbbd","examples/enum-default.rs":"01e1d285ffbb87aa70950c0ec184b395f7faf0667a1fc874b4de509e3e3c8d5c","examples/not_unpin-expanded.rs":"19e944c6159b6a57a19a653adb7a30d27ddc098351bd311a91ada586eb8e6ee7","examples/not_unpin.rs":"3e43439c521089f7f58a411fb823827433c7476a0b41aecd26a6ce5f0c99e405","examples/pinned_drop-expanded.rs":"6b2bb25bcb3404d1b03276be4ae3f6c768a98b5e6675a33b24bf57bff9a9cfaa","examples/pinned_drop.rs":"8913e9b0b7851d470c3f15e40930af16c79f5ee8b4a947cac8235361b427db30","examples/project_replace-expanded.rs":"0b5adc4f83b3b56febc1a721f334b5bea26ec4aea407f35f4cce5cdde76ddd30","examples/project_replace.rs":"352d10d7a2db3de0101faedd04d69c24b9bb5021c768199a379c233886a3881c","examples/struct-default-expanded.rs":"2e290064aa48e001625f3badce5fda7e2fa7a8ce613cbe1788892b1230885895","examples/struct-default.rs":"eb60ea5412e83ac9eba96794b31772afe0798bef304b26bff65b6845638bb729","examples/unsafe_unpin-expanded.rs":"71d13e6bb284642d81520fce7adf5c1e9510451295c1806a3703dae481e64ee3","examples/unsafe_unpin.rs":"7da585f423999dcbe03289a72b14a29fed41a45a774de1af2fe93cb20aa8d426","src/lib.rs":"72c7bba16532193142134e4307bf63bfbb3b9e76c76c26424cbe2b58605257c3","tests/auxiliary/mod.rs":"7e263e987e09b77e384f734384a00a71c5b70230bb1b5376446ef003a8da9372","tests/cfg.rs":"de3ad3baf0715163d7b941bc988d67219e9c4dfb4c9068f1c60f5214649fa6ee","tests/compiletest.rs":"cd3977f3adc05369f825306218d8511289ef1398351c89f0f6aef96b3c128203","tests/drop_order.rs":"c099c11d236851eb4f27d4c14c1c19d61b32a236e5b2ce032a65265fccc25ba1","tests/expand/default/enum.expanded.rs":"e1ed1186d973286860ebc6898e46a2cd97166a13ad17c68a8a50ddfd4702f3ae","tests/expand/default/enum.rs":"e23fac8939fd21c96afaf4b10613a1b8fbfff655f76128902c2cbe8577c13d08","tests/expand/default/struct.expanded.rs":"a3577d962a10325dcaaf2eccb5e589013266553260cd8bd923264c022ddcfe41","tests/expand/default/struct.rs":"a0c95b1441b93b3ef346a47dc1e3d8113a6e1df90e577464d3f12a4e50654c4f","tests/expand/default/tuple_struct.expanded.rs":"c7f915c09ba8d268745618e68097a2040d46228f2b05c1740354805a9f6b455d","tests/expand/default/tuple_struct.rs":"1132f9700ef58079666f25173076a009c23c4f5e0ad80af80687a2e5958db6e9","tests/expand/multifields/enum.expanded.rs":"76ffa1ca4213228c43a2625e080d07aa04a992f6789052b646c7b9c639879f50","tests/expand/multifields/enum.rs":"a909ee4c44aef0d6959d46343a2927033acb665f6051f37e088367778af90c78","tests/expand/multifields/struct.expanded.rs":"3a57d0b3573841e914fbfe8ffedc600c57dccc8bc8f1d42daa8e341313adbe06","tests/expand/multifields/struct.rs":"9f99e89352d212e3d4ed9cd6be2741ea13658267de6b557bdc8302c4902c72a9","tests/expand/multifields/tuple_struct.expanded.rs":"7a65d27d0083168a7aa392463d2ea472fbc933a764ef93368edb304c5dbd486d","tests/expand/multifields/tuple_struct.rs":"9ec0b313d829717bf7d3484428136a3012a996dbd97d3ecc8a7b0ba682e5db0b","tests/expand/naming/enum-all.expanded.rs":"84932097a0c023a65337f57dbd18e5fda50a01cf213ed2f7dd2336e65e9c22d0","tests/expand/naming/enum-all.rs":"c46d8ff27879a26afb31d71df8ab69a871b2fd509ba90668cffaadafb7a54940","tests/expand/naming/enum-mut.expanded.rs":"5ff87796fbe96d12ddd13667796dc40f720147a27af0995c337810d25dcc0da7","tests/expand/naming/enum-mut.rs":"9df4e0e1fd8bec8ab471ef419be312c8e15158c7017e964a8337c3108f6c601b","tests/expand/naming/enum-none.expanded.rs":"28c0667e91a8c65fdc4fe1d80fb67398f95f47af19066e7a34ea8eb799497200","tests/expand/naming/enum-none.rs":"487f9469127b9375f53d6242062455eac38ccdaa30c168ed2ea755ad7287f02f","tests/expand/naming/enum-own.expanded.rs":"11668391ec68656d1c3a3316a0ad93853a0e8ea64d5ce0f2de205c66d51c14c4","tests/expand/naming/enum-own.rs":"5bb51375842f2956cceb685511cc34a099665439310f01a5cc02a1d4264897a6","tests/expand/naming/enum-ref.expanded.rs":"fc9527bcbb7707cf699d1721306bfd92a0c8c4f158b1ec5f5ef1618c6f5e0fc8","tests/expand/naming/enum-ref.rs":"3764e8471702f968e79f633a1a471974b7a726bcc09ce4443e0bce65194f8930","tests/expand/naming/struct-all.expanded.rs":"7f65e644aaf801570c8fac54595275d102391f4007eccb4c248721970b2b8d5a","tests/expand/naming/struct-all.rs":"a8d70a576ff5325b848d14dc8083d0967e1b3b4486fd061281484b95adade136","tests/expand/naming/struct-mut.expanded.rs":"1bd55f7e1b0218b4094db6ecbed0abfff7937281cebc0f2cad620abaa291b7a1","tests/expand/naming/struct-mut.rs":"e793dc13594ba2836881ab2580a73d73c40299af94e24a442f704e76552ce7fb","tests/expand/naming/struct-none.expanded.rs":"a3577d962a10325dcaaf2eccb5e589013266553260cd8bd923264c022ddcfe41","tests/expand/naming/struct-none.rs":"a0c95b1441b93b3ef346a47dc1e3d8113a6e1df90e577464d3f12a4e50654c4f","tests/expand/naming/struct-own.expanded.rs":"6e4c8a222fcc9d3dc10991c8033158c8a7f2a399146b9e6a1e0de7f15106b965","tests/expand/naming/struct-own.rs":"caa714f00757980ef60640a90cba289886293320524395a753b876e3050018e1","tests/expand/naming/struct-ref.expanded.rs":"96f39a4cfdedc85c8d43c9700bdc1ff6880024754215b513741071edd30ef0a0","tests/expand/naming/struct-ref.rs":"f0ce9bb2ebb0c501cce8eaa24c2657a87e58109d5bde8319e7b5d3c0bae4ad86","tests/expand/naming/tuple_struct-all.expanded.rs":"6bb2d8e8239d849836031bc7d8c6005e4f9c5deccadabb9bf872f7bdd9d814ae","tests/expand/naming/tuple_struct-all.rs":"a77e3d5d2409f9016bb8df7ca0387fa512d3383833c9591e64435b689d3710c7","tests/expand/naming/tuple_struct-mut.expanded.rs":"088257a925b4318237680f3fe4b5f1e259cbe29e8080aa856b3ba6de204eca2b","tests/expand/naming/tuple_struct-mut.rs":"06b87b86b6bed07ddfb96067772e9aaf9c1db2d3f871e248658593bd22c4a17c","tests/expand/naming/tuple_struct-none.expanded.rs":"c7f915c09ba8d268745618e68097a2040d46228f2b05c1740354805a9f6b455d","tests/expand/naming/tuple_struct-none.rs":"1132f9700ef58079666f25173076a009c23c4f5e0ad80af80687a2e5958db6e9","tests/expand/naming/tuple_struct-own.expanded.rs":"855271137c5a3d218eb466b3619a2216b4e54eacf2fba46dd530fbd3c07a462c","tests/expand/naming/tuple_struct-own.rs":"89ccd509482a95e74733c767b34f5d6bc8d4128cedc911834aa28aef08e7dc8e","tests/expand/naming/tuple_struct-ref.expanded.rs":"da280916ff79c15ab8173f723f89f494fad161f06e1ef0cede45bdecc1279385","tests/expand/naming/tuple_struct-ref.rs":"2718b96b3e2e6cdef7f8293719d8914e3fd81e92d272b90f019863fa19584a29","tests/expand/not_unpin/enum.expanded.rs":"3f5bcada8828b614dd40eee63f2833bb3230a3026cfcbaeade9e08c684b8a50f","tests/expand/not_unpin/enum.rs":"60134857b6c3c2aca42e9eb2b4c6dbb9149701f115d0de30a2477395ce54fdfa","tests/expand/not_unpin/struct.expanded.rs":"577b763eb0a8bbfcaa7a4fa843431d1f3c808820b2367d238b8d77dee467ded9","tests/expand/not_unpin/struct.rs":"bf7468f2b42284897648e2545cf0da92a576a748cd5b75893b85f03eb2a52ba4","tests/expand/not_unpin/tuple_struct.expanded.rs":"861955348840bf10c49f86bfc773de4d0d1415ba033af7dc326ee2fd34f07cb2","tests/expand/not_unpin/tuple_struct.rs":"a3e2c2c484699087a570b1b247ce21bc40203fad889e7c0e9737d03c7ca4bd4e","tests/expand/pinned_drop/enum.expanded.rs":"ad060ff23ddff563859664e7b6b5073fc641b2925c7af1ccd5fdd4a4cc873c83","tests/expand/pinned_drop/enum.rs":"66f98ea8a567dcdeb58838df68fcba3594aea8a959826ff54fb4493fe06c4086","tests/expand/pinned_drop/struct.expanded.rs":"cacdc72e8905e29d8e75ac83771fa3834e0db4b075103f9675849bdc5a9f093e","tests/expand/pinned_drop/struct.rs":"44321ea6b494149e416d413185c2d23ed9d96982d1c4f378381b18e969abc16b","tests/expand/pinned_drop/tuple_struct.expanded.rs":"57d4e23e39c844501ceb77c66ac900f0aeb93b9002a8db565a95060152aceae8","tests/expand/pinned_drop/tuple_struct.rs":"e0532400f0bf77be198928c120e9efd9fd1b5d34f5fc9c902eb3b778c412a83d","tests/expand/project_replace/enum.expanded.rs":"1101df9623f1e39ee18c5680b1984782cbece4057b22a04240913a3a188a34b5","tests/expand/project_replace/enum.rs":"ce2f5ddff8efd37b1b0028172fde7ee7fba4eff7622c8747cd61591d81c0f503","tests/expand/project_replace/struct.expanded.rs":"553434b0f98d837d2eda601cb4dd625a8542051e9dd315ffa326daf668d2c01b","tests/expand/project_replace/struct.rs":"f8c2915e03b557b9f11a6ea63c971cfb19b09e3a9916ab304f0ce62626e35895","tests/expand/project_replace/tuple_struct.expanded.rs":"926022463a98ab6b15d6db0cf700944b91b18334c893257a4e8a8b3f4bc7ea71","tests/expand/project_replace/tuple_struct.rs":"8ca1cd1d5feadb23999d8f4e7307f91d1932fff7e8d38889d3889d6ba4d43430","tests/expand/pub/enum.expanded.rs":"3e806cc3d1425838145cddd2ea1eaca5bf9c681a48927fa05cf78775e866a94a","tests/expand/pub/enum.rs":"64ca05d529227157ba4cdce1c526d67d15f06108fd71f5955749d236c002471f","tests/expand/pub/struct.expanded.rs":"d3bf3689402229b59e4a68f87b2264773a5b2c2b13acddfe4d000781d571a052","tests/expand/pub/struct.rs":"379b8c4c01a3fc2aa3f020578a6dd836d455f4c48604e1dad91f631146b9e6ec","tests/expand/pub/tuple_struct.expanded.rs":"89f22d0407f72c0c80984c89b6fae023db6725dac7a733342246c899fb923877","tests/expand/pub/tuple_struct.rs":"77cc812220e956a2255ef129dec3b16d6973b7e8b1bc02a6f65bd9fa56040564","tests/expand/unsafe_unpin/enum.expanded.rs":"501c6b1ce279f90e305bffbca262c2912f6b112326e0a913df2c31530340310f","tests/expand/unsafe_unpin/enum.rs":"00fad3fed0f7d2d0eae56020726818ab91895d6eaed7c4c7cc5d497b5efa7cfd","tests/expand/unsafe_unpin/struct.expanded.rs":"9f1b3757695b80cda7a8c812dc546ebfa60a253251b474f7c209d034e248fcc4","tests/expand/unsafe_unpin/struct.rs":"a41bed68966abb874f31ad02a860e15a2714e2e459ef73475a908e71141e96f0","tests/expand/unsafe_unpin/tuple_struct.expanded.rs":"734051c9dbaec8e4ccdc37dd8922eb3223dc30d04c58fb4f6ae4514a8a26081d","tests/expand/unsafe_unpin/tuple_struct.rs":"bddd36be1795be2f445d7baec269ad8a5a2647b95af7f0b130331ab7a3c64baf","tests/expandtest.rs":"66bd80992a1696994ec2d14c3edc36350a0cb896d8081f1c0f8893ebeed72d03","tests/include/basic-safe-part.rs":"6fb5accb7476f85233ef919eedaff83c30015e186414589db6e44d614016ad3e","tests/include/basic.rs":"e030edc2573d8b365e9542e431f0c0af6d5ecf6fe9d84f13c7a8401f4c922895","tests/lint.rs":"ecf23c215a0cf6ef668ca83e30aed0c030b4def844b151baa596242a75fe1999","tests/pin_project.rs":"b795fef5a8f997505979a5c13be8b0be4b934a821c282d344b589efe55ab10d9","tests/pinned_drop.rs":"4061cb2ead2191ec6cf8acde51c4e6758762170bc59e58afa7731c721bf910f8","tests/proper_unpin.rs":"435b9c7243ab896c2546c1e402276e93ef38cd93de50cc7369f486fe22698a02","tests/repr_packed.rs":"f54a553a579dbce7f80f666f0228ec2dd2a80282ac5da5f715bb122e7e17712e","tests/ui/cfg/cfg_attr-resolve.rs":"bb924ea9ceb6579e80774ef7fee1bb99ae08efc7d909e8d1edff40c3c1adaa7f","tests/ui/cfg/cfg_attr-resolve.stderr":"720f806ac06d598753a6a90c95b942410413d8860f60a7251fbde3e1fa575934","tests/ui/cfg/cfg_attr-type-mismatch.rs":"25e8337f9fd5533799dd990df6e016d18e2a00468de3386aa7d45aa98e39a0f9","tests/ui/cfg/cfg_attr-type-mismatch.stderr":"5cde5c01d5c602c4200a1add15642d72946c5dcc0046535c207bc7a475e74913","tests/ui/cfg/packed_sneaky-span-issue-1.rs":"768762cf1831b9b09868404d9d7fd394ed30fb4495bd8388034ee9bf3823d11b","tests/ui/cfg/packed_sneaky-span-issue-1.stderr":"235ad4c1c784e9116c480502e813a0f0254f3b0e624c89712bafa56d43eaa2c4","tests/ui/cfg/packed_sneaky-span-issue-2.rs":"229d91b2531ace7c1d644125b77ee044fc639e9b981aaede5fda6f5e38154a4d","tests/ui/cfg/packed_sneaky-span-issue-2.stderr":"dae8adcb5b6ac12be55da9f4d6d04c1a790907dc5ee23a16d86a2a370daf596a","tests/ui/cfg/packed_sneaky.rs":"785e77f597bfc0cdb7bebc040cf11b17b1e2aa727b0fc369b7fe073f8441cad0","tests/ui/cfg/packed_sneaky.stderr":"1674d0f108f91cc21f9009338bde1b343b65a68d81d6bb3b6aecd919846cc6e0","tests/ui/cfg/unsupported.rs":"45d6eddef59e67dfca3733450249632dd8135283cedafa663e7bfa2b232ca13e","tests/ui/cfg/unsupported.stderr":"72421d6c14eb7d4f7af7eea1e0701343df691985d1d58325e91412e749705d3f","tests/ui/not_unpin/conflict-unpin.rs":"5709b68bbf26c0b2b87ee7a0bbf83ae9e4f1bacd2266114114b4dcb8706d0080","tests/ui/not_unpin/conflict-unpin.stderr":"b2357ec463ea18ae82474218b2281e539890a74ed1e4263a2f1fa98098e217fc","tests/ui/not_unpin/impl-unsafe-unpin.rs":"088374540354c4052a2daf2e97cdf49fc54287e0d943bf34bbb70298d62e8c9b","tests/ui/not_unpin/impl-unsafe-unpin.stderr":"3bb3f4b6b1ff747309f5ea494a18f1b9eb7610b89b051750282e1fba1633310c","tests/ui/pin_project/add-attr-to-struct.rs":"640b49214c7f3f2eae027165bad32c12cb63b00735b6ca3eb2037a4b69a8ad19","tests/ui/pin_project/add-attr-to-struct.stderr":"4f5eba0ddf8f6c20e76a0624095233ced75b9a713c6451fba0c7a37e80028dee","tests/ui/pin_project/add-pinned-field.rs":"791df5b427ba412fb25836569963e6a03ccacea9fcefa4bf3f789ee4de90762d","tests/ui/pin_project/add-pinned-field.stderr":"6af54b6a15b5d6c7cfd23d93cd514477d33f7775cb7dffadb45d249d343025ad","tests/ui/pin_project/conflict-drop.rs":"c97bedbed751436994fec33003dca06761cc2cbf9fcc832c120321aa8fc0be7b","tests/ui/pin_project/conflict-drop.stderr":"965dc2be7b88493b3df0fb61f9d9e65d0480ded5ab76dffe30dc517877547095","tests/ui/pin_project/conflict-unpin.rs":"9e3b06ce53d97ebd79620d729b525fac1c87c67ed44b91d05dd4c3d48be455e3","tests/ui/pin_project/conflict-unpin.stderr":"77ae4396ceb42548f52a84fb0e08f4d66eff81a2e9bbcfe11d59aa4ffff73c04","tests/ui/pin_project/impl-unsafe-unpin.rs":"d24d630abd82e08aea529d358bf998011ead0e939c82dca410160764fc24e06b","tests/ui/pin_project/impl-unsafe-unpin.stderr":"d96230802cc11ec32b6c31c86023972fa7038390da1e93e81bae4770dfd1cfd2","tests/ui/pin_project/import_unnamed.rs":"09fb23d22c044321f9bf3a526d16d694916adb7b5defeb6a353cdaff46df7efb","tests/ui/pin_project/import_unnamed.stderr":"2358b70ea4b4c797816cf3b47920f72e0eb7ad0ff11d9d7e8f9f0faed27cbd93","tests/ui/pin_project/invalid.rs":"ac237cc99cff8a273d84e87d26e4640a53afdfb7a7961b6dc8bfa53dd5d88aa5","tests/ui/pin_project/invalid.stderr":"46a9c8a8469c0be53b09d24062f06aff4d21c23541be2d8055a0c76f2180b277","tests/ui/pin_project/overlapping_unpin_struct.rs":"3f459dda0c01e36f989a1413b2a43f4d95f9ae2524653b61f0561acff28ad9a6","tests/ui/pin_project/overlapping_unpin_struct.stderr":"e89b9cfcdb9a8cf0e1042bf8d3d4a98d2cdecfe2a966f14ef62c61b0c82a5403","tests/ui/pin_project/override-priv-mod.rs":"b9f163f5ab76735bbd8406b46f7407929845a34a23e2892a935a178612ec5875","tests/ui/pin_project/override-priv-mod.stderr":"effec97131efb6628e8bbaf74c37fe5d7f9a735b4468e1d6e585bdd693ae98ed","tests/ui/pin_project/packed-enum.rs":"7784ff49119daa5ae562f0fa84fdf4e65fe8abaf62ecff7d2ead184748e16b9b","tests/ui/pin_project/packed-enum.stderr":"3c710e899c68e5db4707405546c9c81b819ba6d3bdb83d3578e34c1254fbf1e3","tests/ui/pin_project/packed-name-value.rs":"64cbf4ef3c01709d302f91d98e92c980f2858b14ddaf047646c4de57707541b1","tests/ui/pin_project/packed-name-value.stderr":"f8beabf2de5cdd913903eed642d886841ad14a719f562769f525c79a5df2fc76","tests/ui/pin_project/packed.rs":"7a66b7c2ca8253cfd6774a339d74400966e85c73ef59f54ad66d9f1b02ea5db7","tests/ui/pin_project/packed.stderr":"2b9e7a0818e21f958536738035452d760b9fbd3784d2034b1732d2c8d4b85812","tests/ui/pin_project/packed_sneaky-1.rs":"390dd0ad59668f80a6e86baed1015c02a429cecc92388f18c8deffb500508415","tests/ui/pin_project/packed_sneaky-1.stderr":"f01979f02e3a0956fc191550cfe364ea11a14afb15cc252e63127ab72f99f640","tests/ui/pin_project/packed_sneaky-2.rs":"f1601aa4f642ed4aaaab2dd2e0328b7af145be9a3a7460ad36339b47b4d7ce14","tests/ui/pin_project/packed_sneaky-2.stderr":"5df9f0c90032016856c4797f07c8e8c172ed0ded2c7078c404f80b5be675d33a","tests/ui/pin_project/packed_sneaky-3.rs":"d9ee3366b5e3849f3ec0d0bd62d365cff0c6e8f0eb3434d70fb84e62a1976eb2","tests/ui/pin_project/packed_sneaky-3.stderr":"596b17b96189fd8f38bf5c7f5ef5e01e54c1d4cc459a15a519687e61e4edca34","tests/ui/pin_project/packed_sneaky-4.rs":"5636ae9a7fc54ea6981897adc1e31afb5eaa1c1db6244f8357e79cf922e6f7a8","tests/ui/pin_project/packed_sneaky-4.stderr":"3aee1184b5fa175a6b5cdb1084bf170c27d0bfc8c564ae2847c3f23b9de09a6f","tests/ui/pin_project/private_in_public-enum.rs":"bb79b1bf0328bf652e561b4006c31f6a2d0cbe598912f264c4024a1b381d5400","tests/ui/pin_project/private_in_public-enum.stderr":"d951fb2b9b80ff07848723439da190cb91f776fbef0e27db025dcd24186f80aa","tests/ui/pin_project/project_replace_unsized.rs":"7c35e6c8ebf8337b6abf6a7fa7106bd519cebbe32d3f33b8865fa251820e0e5a","tests/ui/pin_project/project_replace_unsized.stderr":"7d3be0208cbec2d86833192579b8d51d876cd9461dc5e20e988767e9696d4e28","tests/ui/pin_project/project_replace_unsized_fn_params.rs":"db7c72e96119f245535627b887c1289b064dd657fbb524c0f6635287033b85e2","tests/ui/pin_project/project_replace_unsized_fn_params.stderr":"17095141eb2647a8484c429a5d3348ed7a42b35ff965e6dd73eb662ae8e6d868","tests/ui/pin_project/remove-attr-from-field.rs":"9faac7ca8220c7069b1a7b2f43420efd3d73377f0ac0558ef67cd5664a9c54c1","tests/ui/pin_project/remove-attr-from-field.stderr":"424cd345a7b4a0ec328c58f36eb3b31a88e6c1789a0226bd8d6c4c50fecc39a2","tests/ui/pin_project/remove-attr-from-struct.rs":"f47a6cfbb5a4fa5bb233c0427be255110749621bed7cfa7a8f45e80451aa8615","tests/ui/pin_project/remove-attr-from-struct.stderr":"2c1d7d214096afe2140921f56cb16e54110bec7ae77ee81726de94ec1bdf50a0","tests/ui/pin_project/safe_packed_borrows.rs":"2f398fe1f16a3fe5a5123f49705f7eb6157d47b8adabb8b80fad88bd61efc37c","tests/ui/pin_project/safe_packed_borrows.stderr":"c508f901bb9f1cc4055edb9aa6bbd5f333297f611d9df18acbc22076cd2f8abf","tests/ui/pin_project/unaligned_references.rs":"a01c34657405c717b0e2999460bd3332e39e6f8f715465f5fb9d517c0900f172","tests/ui/pin_project/unaligned_references.stderr":"cfa0f3500b7edb75eff2c6a87164c61531ed117aca61912bdecc45ba0eeff23c","tests/ui/pin_project/unpin_sneaky.rs":"8d49b2dcb1695b4ae26669de58dd6dc73bd836f3cd836078d6be2a0ac2cc56f3","tests/ui/pin_project/unpin_sneaky.stderr":"b31b54cb2be5a9cecd50c4489847ec83bb401daa63c2f5b6ebd4080efc95bd67","tests/ui/pin_project/visibility.rs":"4345aa1fd270a99e631510097ab7fea51aa7cbe15e155cf19f406c63735e3daa","tests/ui/pin_project/visibility.stderr":"9d56584accaad71c65e38823b0200b8ee229c027558f4461168c869ac53655b2","tests/ui/pinned_drop/call-drop-inner.rs":"a155a5b4cf7434ad6c2c4f217beb37b57edae74c5ae809627a50ea8d6ab5da50","tests/ui/pinned_drop/call-drop-inner.stderr":"ab9eb3a1924782a2e4c37e379fc5075aae1262ddd3fab7ebff18ac8d267be645","tests/ui/pinned_drop/conditional-drop-impl.rs":"5d4c147d48d87a306fa875e033c4962ecd9d7666e6859da5b22a34fd552f0fc6","tests/ui/pinned_drop/conditional-drop-impl.stderr":"f0d05bf22ae2016a186c6d5fa0ae940e0e2b8fce822f06344b73a7390cd047bd","tests/ui/pinned_drop/forget-pinned-drop-impl.rs":"9a6d08c98f1214d11aac8bbf67586130ad62d07d03f4ba6aae474fe30695b536","tests/ui/pinned_drop/forget-pinned-drop-impl.stderr":"d45a218e8107ad11a59a75f30bbb2a018e153ecdead28880b09cf63f3d64f98f","tests/ui/pinned_drop/invalid-self.rs":"9c7e431b0808204d6a3bf3541668655cb72c76e8ebe8f4a04518d0c6dcdd1bd5","tests/ui/pinned_drop/invalid-self.stderr":"a2004c3f04e13bbc17446e751acb1b3985f5a6bfeb846e1b8a661951e40adb12","tests/ui/pinned_drop/invalid.rs":"1c0a596320d62adf3c138e67efa3236f2cfd598d5f249ed7b1d51d5b40d31587","tests/ui/pinned_drop/invalid.stderr":"a91c479bbc41a708f1ac19eb2b788dac8e204db4fe92f9c1e4be898d8a69bdcc","tests/ui/pinned_drop/pinned-drop-no-attr-arg.rs":"cc406f6ffa1998896931d33cfdab79466a1494750b55519f5a8ad7fe13e08657","tests/ui/pinned_drop/pinned-drop-no-attr-arg.stderr":"0766091c9b7e88aa5b6b22a6a0ea04c3521681408dd7241aba762234f57021cd","tests/ui/pinned_drop/self.rs":"db7da7c136a16c34b0492dbaeed680cdf0a1bdeb186b2d4a1324dd11b43bbe2b","tests/ui/pinned_drop/self.stderr":"e0c56bcdcc4009311ef8a8fc0e214a56770c544b0dbd9867a578013ccc0c6873","tests/ui/pinned_drop/unsafe-call.rs":"2ecdfd7b658c0aeb85ff0feed8d6c1776a06166c287d3b8925f7fc4c699ee74a","tests/ui/pinned_drop/unsafe-call.stderr":"f7c304194f2517651571a9d1c94fc19b8e917bc772295f7b3c1758e1fe7386db","tests/ui/unsafe_unpin/conflict-unpin.rs":"a22831379eb1f2d597d5f8088130f7c91add5ec69bade962d555d1b49145f56a","tests/ui/unsafe_unpin/conflict-unpin.stderr":"069830217d50c954b6b0af8891386d2069ffbe7b0b72069cc1b92ee0c5bf9a54","tests/ui/unstable-features/README.md":"f9dcf95e9c68fe15345f493a3fb4f54726d36c76d1a5a1e2c9dfa25540d4b642","tests/ui/unstable-features/marker_trait_attr-feature-gate.rs":"35596063ddbc8a289182c3a18d98d595583e6a0b2b3324d3eec4f416de06ea4b","tests/ui/unstable-features/marker_trait_attr-feature-gate.stderr":"cb4afbee9d7a3f4598a926efd2d30b26146e9766cba145d31e4ef6223539ece7","tests/ui/unstable-features/marker_trait_attr.rs":"f2a5275a5b80249d2a0e7a4e9e7d3f573ffd5f2a183dfced314e91a7d7945007","tests/ui/unstable-features/marker_trait_attr.stderr":"0b4b5faa7405a58a2ebc6faaa4cd697f913b99882c45d4d7d729bb0cb4f7d0be","tests/ui/unstable-features/negative_impls.rs":"b913f3d818cc4d91efe4b82dd08b72acff89b97d7e56a33d8106c93f1de6a81d","tests/ui/unstable-features/negative_impls.stderr":"aacad57752e05b1e5a8b09c9486bc9fb6f1875d1f061931197dd4352f1ff2898","tests/ui/unstable-features/overlapping_marker_traits-feature-gate.rs":"dc6b854cc60ea03344f8ca3fa518a2bdc0b9aa69f2368162f4b6ad24d31bc4f0","tests/ui/unstable-features/overlapping_marker_traits-feature-gate.stderr":"14d39aeb6acbe06173240a7252adf97fefff519b0e65179bdfcd3c8b6f5e58a0","tests/ui/unstable-features/overlapping_marker_traits.rs":"8af0d8a5afe9dcaa02fa67b394d376f9933cc99361d68f64185769326700bf7c","tests/ui/unstable-features/overlapping_marker_traits.stderr":"a271b507c86b733430c2fe5973029d99128c908422b6161a9b7c7c2fccae3236","tests/ui/unstable-features/trivial_bounds-feature-gate.rs":"658aab9de2e52a54b9e4731faae6a87172b1b4b78f3853c9fd4b565066b74e64","tests/ui/unstable-features/trivial_bounds-feature-gate.stderr":"2c31748846c992c8a68f586ec24fc89b1c630728d0f263ad4b200018ce3cd871","tests/ui/unstable-features/trivial_bounds.rs":"2bc3e4e17645c42b70c023caa3c5bb428addd2a8664465131e32864d31d3691d","tests/ui/unstable-features/trivial_bounds.stderr":"85ed625ee167cc7d7faffbfb006da5591f3d81a9df763d2cbc68523ea602f2fd","tests/unsafe_unpin.rs":"0367781e5109fa9a27347aebe45e633461e396bf883a06c5f809416030c79514"},"package":"030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842"} \ No newline at end of file +{"files":{"CHANGELOG.md":"01d47269fdc1c641ff4311ed92d7358741dadf80bb39f2ba89db27f5d641d2f9","Cargo.lock":"e49130f610bf3de0c8498a2e6aef6fc40cb4b8b914d618d9fe27e3368fd20514","Cargo.toml":"37234c90c423f08c93dcfdf1df92461a0158655e8e3a022664e4668396465df3","LICENSE-APACHE":"0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"881afdc0098d23c7f4959d31a1f48177bb81d74625a03e8decfa57451629d54c","examples/README.md":"e04e4ad8c5518aaa839b1255f9aee47877ae223053f32d83db797f607b9422b6","examples/enum-default-expanded.rs":"92414c9b48f3e280ba10994a426629da799d125d764d1b3857676b21cb42dbbd","examples/enum-default.rs":"01e1d285ffbb87aa70950c0ec184b395f7faf0667a1fc874b4de509e3e3c8d5c","examples/not_unpin-expanded.rs":"19e944c6159b6a57a19a653adb7a30d27ddc098351bd311a91ada586eb8e6ee7","examples/not_unpin.rs":"3e43439c521089f7f58a411fb823827433c7476a0b41aecd26a6ce5f0c99e405","examples/pinned_drop-expanded.rs":"6b2bb25bcb3404d1b03276be4ae3f6c768a98b5e6675a33b24bf57bff9a9cfaa","examples/pinned_drop.rs":"8913e9b0b7851d470c3f15e40930af16c79f5ee8b4a947cac8235361b427db30","examples/project_replace-expanded.rs":"0b5adc4f83b3b56febc1a721f334b5bea26ec4aea407f35f4cce5cdde76ddd30","examples/project_replace.rs":"352d10d7a2db3de0101faedd04d69c24b9bb5021c768199a379c233886a3881c","examples/struct-default-expanded.rs":"2e290064aa48e001625f3badce5fda7e2fa7a8ce613cbe1788892b1230885895","examples/struct-default.rs":"eb60ea5412e83ac9eba96794b31772afe0798bef304b26bff65b6845638bb729","examples/unsafe_unpin-expanded.rs":"71d13e6bb284642d81520fce7adf5c1e9510451295c1806a3703dae481e64ee3","examples/unsafe_unpin.rs":"7da585f423999dcbe03289a72b14a29fed41a45a774de1af2fe93cb20aa8d426","src/lib.rs":"72c7bba16532193142134e4307bf63bfbb3b9e76c76c26424cbe2b58605257c3","tests/auxiliary/mod.rs":"7e263e987e09b77e384f734384a00a71c5b70230bb1b5376446ef003a8da9372","tests/cfg.rs":"de3ad3baf0715163d7b941bc988d67219e9c4dfb4c9068f1c60f5214649fa6ee","tests/compiletest.rs":"cd3977f3adc05369f825306218d8511289ef1398351c89f0f6aef96b3c128203","tests/drop_order.rs":"c099c11d236851eb4f27d4c14c1c19d61b32a236e5b2ce032a65265fccc25ba1","tests/expand/default/enum.expanded.rs":"e1ed1186d973286860ebc6898e46a2cd97166a13ad17c68a8a50ddfd4702f3ae","tests/expand/default/enum.rs":"e23fac8939fd21c96afaf4b10613a1b8fbfff655f76128902c2cbe8577c13d08","tests/expand/default/struct.expanded.rs":"a3577d962a10325dcaaf2eccb5e589013266553260cd8bd923264c022ddcfe41","tests/expand/default/struct.rs":"a0c95b1441b93b3ef346a47dc1e3d8113a6e1df90e577464d3f12a4e50654c4f","tests/expand/default/tuple_struct.expanded.rs":"c7f915c09ba8d268745618e68097a2040d46228f2b05c1740354805a9f6b455d","tests/expand/default/tuple_struct.rs":"1132f9700ef58079666f25173076a009c23c4f5e0ad80af80687a2e5958db6e9","tests/expand/multifields/enum.expanded.rs":"76ffa1ca4213228c43a2625e080d07aa04a992f6789052b646c7b9c639879f50","tests/expand/multifields/enum.rs":"a909ee4c44aef0d6959d46343a2927033acb665f6051f37e088367778af90c78","tests/expand/multifields/struct.expanded.rs":"3a57d0b3573841e914fbfe8ffedc600c57dccc8bc8f1d42daa8e341313adbe06","tests/expand/multifields/struct.rs":"9f99e89352d212e3d4ed9cd6be2741ea13658267de6b557bdc8302c4902c72a9","tests/expand/multifields/tuple_struct.expanded.rs":"7a65d27d0083168a7aa392463d2ea472fbc933a764ef93368edb304c5dbd486d","tests/expand/multifields/tuple_struct.rs":"9ec0b313d829717bf7d3484428136a3012a996dbd97d3ecc8a7b0ba682e5db0b","tests/expand/naming/enum-all.expanded.rs":"84932097a0c023a65337f57dbd18e5fda50a01cf213ed2f7dd2336e65e9c22d0","tests/expand/naming/enum-all.rs":"c46d8ff27879a26afb31d71df8ab69a871b2fd509ba90668cffaadafb7a54940","tests/expand/naming/enum-mut.expanded.rs":"5ff87796fbe96d12ddd13667796dc40f720147a27af0995c337810d25dcc0da7","tests/expand/naming/enum-mut.rs":"9df4e0e1fd8bec8ab471ef419be312c8e15158c7017e964a8337c3108f6c601b","tests/expand/naming/enum-none.expanded.rs":"28c0667e91a8c65fdc4fe1d80fb67398f95f47af19066e7a34ea8eb799497200","tests/expand/naming/enum-none.rs":"487f9469127b9375f53d6242062455eac38ccdaa30c168ed2ea755ad7287f02f","tests/expand/naming/enum-own.expanded.rs":"11668391ec68656d1c3a3316a0ad93853a0e8ea64d5ce0f2de205c66d51c14c4","tests/expand/naming/enum-own.rs":"5bb51375842f2956cceb685511cc34a099665439310f01a5cc02a1d4264897a6","tests/expand/naming/enum-ref.expanded.rs":"fc9527bcbb7707cf699d1721306bfd92a0c8c4f158b1ec5f5ef1618c6f5e0fc8","tests/expand/naming/enum-ref.rs":"3764e8471702f968e79f633a1a471974b7a726bcc09ce4443e0bce65194f8930","tests/expand/naming/struct-all.expanded.rs":"7f65e644aaf801570c8fac54595275d102391f4007eccb4c248721970b2b8d5a","tests/expand/naming/struct-all.rs":"a8d70a576ff5325b848d14dc8083d0967e1b3b4486fd061281484b95adade136","tests/expand/naming/struct-mut.expanded.rs":"1bd55f7e1b0218b4094db6ecbed0abfff7937281cebc0f2cad620abaa291b7a1","tests/expand/naming/struct-mut.rs":"e793dc13594ba2836881ab2580a73d73c40299af94e24a442f704e76552ce7fb","tests/expand/naming/struct-none.expanded.rs":"a3577d962a10325dcaaf2eccb5e589013266553260cd8bd923264c022ddcfe41","tests/expand/naming/struct-none.rs":"a0c95b1441b93b3ef346a47dc1e3d8113a6e1df90e577464d3f12a4e50654c4f","tests/expand/naming/struct-own.expanded.rs":"6e4c8a222fcc9d3dc10991c8033158c8a7f2a399146b9e6a1e0de7f15106b965","tests/expand/naming/struct-own.rs":"caa714f00757980ef60640a90cba289886293320524395a753b876e3050018e1","tests/expand/naming/struct-ref.expanded.rs":"96f39a4cfdedc85c8d43c9700bdc1ff6880024754215b513741071edd30ef0a0","tests/expand/naming/struct-ref.rs":"f0ce9bb2ebb0c501cce8eaa24c2657a87e58109d5bde8319e7b5d3c0bae4ad86","tests/expand/naming/tuple_struct-all.expanded.rs":"6bb2d8e8239d849836031bc7d8c6005e4f9c5deccadabb9bf872f7bdd9d814ae","tests/expand/naming/tuple_struct-all.rs":"a77e3d5d2409f9016bb8df7ca0387fa512d3383833c9591e64435b689d3710c7","tests/expand/naming/tuple_struct-mut.expanded.rs":"088257a925b4318237680f3fe4b5f1e259cbe29e8080aa856b3ba6de204eca2b","tests/expand/naming/tuple_struct-mut.rs":"06b87b86b6bed07ddfb96067772e9aaf9c1db2d3f871e248658593bd22c4a17c","tests/expand/naming/tuple_struct-none.expanded.rs":"c7f915c09ba8d268745618e68097a2040d46228f2b05c1740354805a9f6b455d","tests/expand/naming/tuple_struct-none.rs":"1132f9700ef58079666f25173076a009c23c4f5e0ad80af80687a2e5958db6e9","tests/expand/naming/tuple_struct-own.expanded.rs":"855271137c5a3d218eb466b3619a2216b4e54eacf2fba46dd530fbd3c07a462c","tests/expand/naming/tuple_struct-own.rs":"89ccd509482a95e74733c767b34f5d6bc8d4128cedc911834aa28aef08e7dc8e","tests/expand/naming/tuple_struct-ref.expanded.rs":"da280916ff79c15ab8173f723f89f494fad161f06e1ef0cede45bdecc1279385","tests/expand/naming/tuple_struct-ref.rs":"2718b96b3e2e6cdef7f8293719d8914e3fd81e92d272b90f019863fa19584a29","tests/expand/not_unpin/enum.expanded.rs":"4145ee18ebbd535d0e4d2b39d8b2f2a3ffcf9d45505aba6ff8d5819f61fca6ac","tests/expand/not_unpin/enum.rs":"60134857b6c3c2aca42e9eb2b4c6dbb9149701f115d0de30a2477395ce54fdfa","tests/expand/not_unpin/struct.expanded.rs":"ccd00941a0b0c83e39a3ea762f99d6471a06625ceecff0d3c3b5b44719a1a312","tests/expand/not_unpin/struct.rs":"bf7468f2b42284897648e2545cf0da92a576a748cd5b75893b85f03eb2a52ba4","tests/expand/not_unpin/tuple_struct.expanded.rs":"7c02f6e799f50fe63911c90302d2e4158c6e24f8f6a2fa113f467fac272bf727","tests/expand/not_unpin/tuple_struct.rs":"a3e2c2c484699087a570b1b247ce21bc40203fad889e7c0e9737d03c7ca4bd4e","tests/expand/pinned_drop/enum.expanded.rs":"ad060ff23ddff563859664e7b6b5073fc641b2925c7af1ccd5fdd4a4cc873c83","tests/expand/pinned_drop/enum.rs":"66f98ea8a567dcdeb58838df68fcba3594aea8a959826ff54fb4493fe06c4086","tests/expand/pinned_drop/struct.expanded.rs":"cacdc72e8905e29d8e75ac83771fa3834e0db4b075103f9675849bdc5a9f093e","tests/expand/pinned_drop/struct.rs":"44321ea6b494149e416d413185c2d23ed9d96982d1c4f378381b18e969abc16b","tests/expand/pinned_drop/tuple_struct.expanded.rs":"57d4e23e39c844501ceb77c66ac900f0aeb93b9002a8db565a95060152aceae8","tests/expand/pinned_drop/tuple_struct.rs":"e0532400f0bf77be198928c120e9efd9fd1b5d34f5fc9c902eb3b778c412a83d","tests/expand/project_replace/enum.expanded.rs":"1101df9623f1e39ee18c5680b1984782cbece4057b22a04240913a3a188a34b5","tests/expand/project_replace/enum.rs":"ce2f5ddff8efd37b1b0028172fde7ee7fba4eff7622c8747cd61591d81c0f503","tests/expand/project_replace/struct.expanded.rs":"553434b0f98d837d2eda601cb4dd625a8542051e9dd315ffa326daf668d2c01b","tests/expand/project_replace/struct.rs":"f8c2915e03b557b9f11a6ea63c971cfb19b09e3a9916ab304f0ce62626e35895","tests/expand/project_replace/tuple_struct.expanded.rs":"926022463a98ab6b15d6db0cf700944b91b18334c893257a4e8a8b3f4bc7ea71","tests/expand/project_replace/tuple_struct.rs":"8ca1cd1d5feadb23999d8f4e7307f91d1932fff7e8d38889d3889d6ba4d43430","tests/expand/pub/enum.expanded.rs":"3e806cc3d1425838145cddd2ea1eaca5bf9c681a48927fa05cf78775e866a94a","tests/expand/pub/enum.rs":"64ca05d529227157ba4cdce1c526d67d15f06108fd71f5955749d236c002471f","tests/expand/pub/struct.expanded.rs":"d3bf3689402229b59e4a68f87b2264773a5b2c2b13acddfe4d000781d571a052","tests/expand/pub/struct.rs":"379b8c4c01a3fc2aa3f020578a6dd836d455f4c48604e1dad91f631146b9e6ec","tests/expand/pub/tuple_struct.expanded.rs":"89f22d0407f72c0c80984c89b6fae023db6725dac7a733342246c899fb923877","tests/expand/pub/tuple_struct.rs":"77cc812220e956a2255ef129dec3b16d6973b7e8b1bc02a6f65bd9fa56040564","tests/expand/unsafe_unpin/enum.expanded.rs":"501c6b1ce279f90e305bffbca262c2912f6b112326e0a913df2c31530340310f","tests/expand/unsafe_unpin/enum.rs":"00fad3fed0f7d2d0eae56020726818ab91895d6eaed7c4c7cc5d497b5efa7cfd","tests/expand/unsafe_unpin/struct.expanded.rs":"9f1b3757695b80cda7a8c812dc546ebfa60a253251b474f7c209d034e248fcc4","tests/expand/unsafe_unpin/struct.rs":"a41bed68966abb874f31ad02a860e15a2714e2e459ef73475a908e71141e96f0","tests/expand/unsafe_unpin/tuple_struct.expanded.rs":"734051c9dbaec8e4ccdc37dd8922eb3223dc30d04c58fb4f6ae4514a8a26081d","tests/expand/unsafe_unpin/tuple_struct.rs":"bddd36be1795be2f445d7baec269ad8a5a2647b95af7f0b130331ab7a3c64baf","tests/expandtest.rs":"66bd80992a1696994ec2d14c3edc36350a0cb896d8081f1c0f8893ebeed72d03","tests/include/basic-safe-part.rs":"6fb5accb7476f85233ef919eedaff83c30015e186414589db6e44d614016ad3e","tests/include/basic.rs":"e030edc2573d8b365e9542e431f0c0af6d5ecf6fe9d84f13c7a8401f4c922895","tests/lint.rs":"ce200abc2b1dff5d72eacdabacd49b6ffe8ddfa8796eec82e69b464b1e449484","tests/pin_project.rs":"b795fef5a8f997505979a5c13be8b0be4b934a821c282d344b589efe55ab10d9","tests/pinned_drop.rs":"4061cb2ead2191ec6cf8acde51c4e6758762170bc59e58afa7731c721bf910f8","tests/proper_unpin.rs":"435b9c7243ab896c2546c1e402276e93ef38cd93de50cc7369f486fe22698a02","tests/repr_packed.rs":"f54a553a579dbce7f80f666f0228ec2dd2a80282ac5da5f715bb122e7e17712e","tests/ui/cfg/cfg_attr-resolve.rs":"bb924ea9ceb6579e80774ef7fee1bb99ae08efc7d909e8d1edff40c3c1adaa7f","tests/ui/cfg/cfg_attr-resolve.stderr":"720f806ac06d598753a6a90c95b942410413d8860f60a7251fbde3e1fa575934","tests/ui/cfg/cfg_attr-type-mismatch.rs":"25e8337f9fd5533799dd990df6e016d18e2a00468de3386aa7d45aa98e39a0f9","tests/ui/cfg/cfg_attr-type-mismatch.stderr":"5cde5c01d5c602c4200a1add15642d72946c5dcc0046535c207bc7a475e74913","tests/ui/cfg/packed_sneaky-span-issue-1.rs":"768762cf1831b9b09868404d9d7fd394ed30fb4495bd8388034ee9bf3823d11b","tests/ui/cfg/packed_sneaky-span-issue-1.stderr":"235ad4c1c784e9116c480502e813a0f0254f3b0e624c89712bafa56d43eaa2c4","tests/ui/cfg/packed_sneaky-span-issue-2.rs":"229d91b2531ace7c1d644125b77ee044fc639e9b981aaede5fda6f5e38154a4d","tests/ui/cfg/packed_sneaky-span-issue-2.stderr":"dae8adcb5b6ac12be55da9f4d6d04c1a790907dc5ee23a16d86a2a370daf596a","tests/ui/cfg/packed_sneaky.rs":"785e77f597bfc0cdb7bebc040cf11b17b1e2aa727b0fc369b7fe073f8441cad0","tests/ui/cfg/packed_sneaky.stderr":"1674d0f108f91cc21f9009338bde1b343b65a68d81d6bb3b6aecd919846cc6e0","tests/ui/cfg/unsupported.rs":"45d6eddef59e67dfca3733450249632dd8135283cedafa663e7bfa2b232ca13e","tests/ui/cfg/unsupported.stderr":"72421d6c14eb7d4f7af7eea1e0701343df691985d1d58325e91412e749705d3f","tests/ui/not_unpin/conflict-unpin.rs":"5709b68bbf26c0b2b87ee7a0bbf83ae9e4f1bacd2266114114b4dcb8706d0080","tests/ui/not_unpin/conflict-unpin.stderr":"b2357ec463ea18ae82474218b2281e539890a74ed1e4263a2f1fa98098e217fc","tests/ui/not_unpin/impl-unsafe-unpin.rs":"088374540354c4052a2daf2e97cdf49fc54287e0d943bf34bbb70298d62e8c9b","tests/ui/not_unpin/impl-unsafe-unpin.stderr":"3bb3f4b6b1ff747309f5ea494a18f1b9eb7610b89b051750282e1fba1633310c","tests/ui/pin_project/add-attr-to-struct.rs":"640b49214c7f3f2eae027165bad32c12cb63b00735b6ca3eb2037a4b69a8ad19","tests/ui/pin_project/add-attr-to-struct.stderr":"4f5eba0ddf8f6c20e76a0624095233ced75b9a713c6451fba0c7a37e80028dee","tests/ui/pin_project/add-pinned-field.rs":"791df5b427ba412fb25836569963e6a03ccacea9fcefa4bf3f789ee4de90762d","tests/ui/pin_project/add-pinned-field.stderr":"6af54b6a15b5d6c7cfd23d93cd514477d33f7775cb7dffadb45d249d343025ad","tests/ui/pin_project/conflict-drop.rs":"c97bedbed751436994fec33003dca06761cc2cbf9fcc832c120321aa8fc0be7b","tests/ui/pin_project/conflict-drop.stderr":"965dc2be7b88493b3df0fb61f9d9e65d0480ded5ab76dffe30dc517877547095","tests/ui/pin_project/conflict-unpin.rs":"9e3b06ce53d97ebd79620d729b525fac1c87c67ed44b91d05dd4c3d48be455e3","tests/ui/pin_project/conflict-unpin.stderr":"77ae4396ceb42548f52a84fb0e08f4d66eff81a2e9bbcfe11d59aa4ffff73c04","tests/ui/pin_project/impl-unsafe-unpin.rs":"d24d630abd82e08aea529d358bf998011ead0e939c82dca410160764fc24e06b","tests/ui/pin_project/impl-unsafe-unpin.stderr":"d96230802cc11ec32b6c31c86023972fa7038390da1e93e81bae4770dfd1cfd2","tests/ui/pin_project/import_unnamed.rs":"09fb23d22c044321f9bf3a526d16d694916adb7b5defeb6a353cdaff46df7efb","tests/ui/pin_project/import_unnamed.stderr":"2358b70ea4b4c797816cf3b47920f72e0eb7ad0ff11d9d7e8f9f0faed27cbd93","tests/ui/pin_project/invalid.rs":"ac237cc99cff8a273d84e87d26e4640a53afdfb7a7961b6dc8bfa53dd5d88aa5","tests/ui/pin_project/invalid.stderr":"46a9c8a8469c0be53b09d24062f06aff4d21c23541be2d8055a0c76f2180b277","tests/ui/pin_project/overlapping_unpin_struct.rs":"3f459dda0c01e36f989a1413b2a43f4d95f9ae2524653b61f0561acff28ad9a6","tests/ui/pin_project/overlapping_unpin_struct.stderr":"e89b9cfcdb9a8cf0e1042bf8d3d4a98d2cdecfe2a966f14ef62c61b0c82a5403","tests/ui/pin_project/override-priv-mod.rs":"b9f163f5ab76735bbd8406b46f7407929845a34a23e2892a935a178612ec5875","tests/ui/pin_project/override-priv-mod.stderr":"effec97131efb6628e8bbaf74c37fe5d7f9a735b4468e1d6e585bdd693ae98ed","tests/ui/pin_project/packed-enum.rs":"7784ff49119daa5ae562f0fa84fdf4e65fe8abaf62ecff7d2ead184748e16b9b","tests/ui/pin_project/packed-enum.stderr":"3c710e899c68e5db4707405546c9c81b819ba6d3bdb83d3578e34c1254fbf1e3","tests/ui/pin_project/packed-name-value.rs":"64cbf4ef3c01709d302f91d98e92c980f2858b14ddaf047646c4de57707541b1","tests/ui/pin_project/packed-name-value.stderr":"f8beabf2de5cdd913903eed642d886841ad14a719f562769f525c79a5df2fc76","tests/ui/pin_project/packed.rs":"7a66b7c2ca8253cfd6774a339d74400966e85c73ef59f54ad66d9f1b02ea5db7","tests/ui/pin_project/packed.stderr":"2b9e7a0818e21f958536738035452d760b9fbd3784d2034b1732d2c8d4b85812","tests/ui/pin_project/packed_sneaky-1.rs":"390dd0ad59668f80a6e86baed1015c02a429cecc92388f18c8deffb500508415","tests/ui/pin_project/packed_sneaky-1.stderr":"f01979f02e3a0956fc191550cfe364ea11a14afb15cc252e63127ab72f99f640","tests/ui/pin_project/packed_sneaky-2.rs":"f1601aa4f642ed4aaaab2dd2e0328b7af145be9a3a7460ad36339b47b4d7ce14","tests/ui/pin_project/packed_sneaky-2.stderr":"5df9f0c90032016856c4797f07c8e8c172ed0ded2c7078c404f80b5be675d33a","tests/ui/pin_project/packed_sneaky-3.rs":"d9ee3366b5e3849f3ec0d0bd62d365cff0c6e8f0eb3434d70fb84e62a1976eb2","tests/ui/pin_project/packed_sneaky-3.stderr":"596b17b96189fd8f38bf5c7f5ef5e01e54c1d4cc459a15a519687e61e4edca34","tests/ui/pin_project/packed_sneaky-4.rs":"5636ae9a7fc54ea6981897adc1e31afb5eaa1c1db6244f8357e79cf922e6f7a8","tests/ui/pin_project/packed_sneaky-4.stderr":"3aee1184b5fa175a6b5cdb1084bf170c27d0bfc8c564ae2847c3f23b9de09a6f","tests/ui/pin_project/private_in_public-enum.rs":"bb79b1bf0328bf652e561b4006c31f6a2d0cbe598912f264c4024a1b381d5400","tests/ui/pin_project/private_in_public-enum.stderr":"d951fb2b9b80ff07848723439da190cb91f776fbef0e27db025dcd24186f80aa","tests/ui/pin_project/project_replace_unsized.rs":"7c35e6c8ebf8337b6abf6a7fa7106bd519cebbe32d3f33b8865fa251820e0e5a","tests/ui/pin_project/project_replace_unsized.stderr":"7d3be0208cbec2d86833192579b8d51d876cd9461dc5e20e988767e9696d4e28","tests/ui/pin_project/project_replace_unsized_fn_params.rs":"db7c72e96119f245535627b887c1289b064dd657fbb524c0f6635287033b85e2","tests/ui/pin_project/project_replace_unsized_fn_params.stderr":"17095141eb2647a8484c429a5d3348ed7a42b35ff965e6dd73eb662ae8e6d868","tests/ui/pin_project/remove-attr-from-field.rs":"9faac7ca8220c7069b1a7b2f43420efd3d73377f0ac0558ef67cd5664a9c54c1","tests/ui/pin_project/remove-attr-from-field.stderr":"424cd345a7b4a0ec328c58f36eb3b31a88e6c1789a0226bd8d6c4c50fecc39a2","tests/ui/pin_project/remove-attr-from-struct.rs":"f47a6cfbb5a4fa5bb233c0427be255110749621bed7cfa7a8f45e80451aa8615","tests/ui/pin_project/remove-attr-from-struct.stderr":"2c1d7d214096afe2140921f56cb16e54110bec7ae77ee81726de94ec1bdf50a0","tests/ui/pin_project/safe_packed_borrows.rs":"2f398fe1f16a3fe5a5123f49705f7eb6157d47b8adabb8b80fad88bd61efc37c","tests/ui/pin_project/safe_packed_borrows.stderr":"c508f901bb9f1cc4055edb9aa6bbd5f333297f611d9df18acbc22076cd2f8abf","tests/ui/pin_project/unaligned_references.rs":"a01c34657405c717b0e2999460bd3332e39e6f8f715465f5fb9d517c0900f172","tests/ui/pin_project/unaligned_references.stderr":"cfa0f3500b7edb75eff2c6a87164c61531ed117aca61912bdecc45ba0eeff23c","tests/ui/pin_project/unpin_sneaky.rs":"8d49b2dcb1695b4ae26669de58dd6dc73bd836f3cd836078d6be2a0ac2cc56f3","tests/ui/pin_project/unpin_sneaky.stderr":"b31b54cb2be5a9cecd50c4489847ec83bb401daa63c2f5b6ebd4080efc95bd67","tests/ui/pin_project/visibility.rs":"4345aa1fd270a99e631510097ab7fea51aa7cbe15e155cf19f406c63735e3daa","tests/ui/pin_project/visibility.stderr":"9d56584accaad71c65e38823b0200b8ee229c027558f4461168c869ac53655b2","tests/ui/pinned_drop/call-drop-inner.rs":"a155a5b4cf7434ad6c2c4f217beb37b57edae74c5ae809627a50ea8d6ab5da50","tests/ui/pinned_drop/call-drop-inner.stderr":"ab9eb3a1924782a2e4c37e379fc5075aae1262ddd3fab7ebff18ac8d267be645","tests/ui/pinned_drop/conditional-drop-impl.rs":"5d4c147d48d87a306fa875e033c4962ecd9d7666e6859da5b22a34fd552f0fc6","tests/ui/pinned_drop/conditional-drop-impl.stderr":"f0d05bf22ae2016a186c6d5fa0ae940e0e2b8fce822f06344b73a7390cd047bd","tests/ui/pinned_drop/forget-pinned-drop-impl.rs":"9a6d08c98f1214d11aac8bbf67586130ad62d07d03f4ba6aae474fe30695b536","tests/ui/pinned_drop/forget-pinned-drop-impl.stderr":"d45a218e8107ad11a59a75f30bbb2a018e153ecdead28880b09cf63f3d64f98f","tests/ui/pinned_drop/invalid-self.rs":"9c7e431b0808204d6a3bf3541668655cb72c76e8ebe8f4a04518d0c6dcdd1bd5","tests/ui/pinned_drop/invalid-self.stderr":"a2004c3f04e13bbc17446e751acb1b3985f5a6bfeb846e1b8a661951e40adb12","tests/ui/pinned_drop/invalid.rs":"1c0a596320d62adf3c138e67efa3236f2cfd598d5f249ed7b1d51d5b40d31587","tests/ui/pinned_drop/invalid.stderr":"a91c479bbc41a708f1ac19eb2b788dac8e204db4fe92f9c1e4be898d8a69bdcc","tests/ui/pinned_drop/pinned-drop-no-attr-arg.rs":"cc406f6ffa1998896931d33cfdab79466a1494750b55519f5a8ad7fe13e08657","tests/ui/pinned_drop/pinned-drop-no-attr-arg.stderr":"0766091c9b7e88aa5b6b22a6a0ea04c3521681408dd7241aba762234f57021cd","tests/ui/pinned_drop/self.rs":"db7da7c136a16c34b0492dbaeed680cdf0a1bdeb186b2d4a1324dd11b43bbe2b","tests/ui/pinned_drop/self.stderr":"e0c56bcdcc4009311ef8a8fc0e214a56770c544b0dbd9867a578013ccc0c6873","tests/ui/pinned_drop/unsafe-call.rs":"2ecdfd7b658c0aeb85ff0feed8d6c1776a06166c287d3b8925f7fc4c699ee74a","tests/ui/pinned_drop/unsafe-call.stderr":"f7c304194f2517651571a9d1c94fc19b8e917bc772295f7b3c1758e1fe7386db","tests/ui/unsafe_unpin/conflict-unpin.rs":"a22831379eb1f2d597d5f8088130f7c91add5ec69bade962d555d1b49145f56a","tests/ui/unsafe_unpin/conflict-unpin.stderr":"069830217d50c954b6b0af8891386d2069ffbe7b0b72069cc1b92ee0c5bf9a54","tests/ui/unstable-features/README.md":"f9dcf95e9c68fe15345f493a3fb4f54726d36c76d1a5a1e2c9dfa25540d4b642","tests/ui/unstable-features/marker_trait_attr-feature-gate.rs":"35596063ddbc8a289182c3a18d98d595583e6a0b2b3324d3eec4f416de06ea4b","tests/ui/unstable-features/marker_trait_attr-feature-gate.stderr":"cb4afbee9d7a3f4598a926efd2d30b26146e9766cba145d31e4ef6223539ece7","tests/ui/unstable-features/marker_trait_attr.rs":"f2a5275a5b80249d2a0e7a4e9e7d3f573ffd5f2a183dfced314e91a7d7945007","tests/ui/unstable-features/marker_trait_attr.stderr":"0b4b5faa7405a58a2ebc6faaa4cd697f913b99882c45d4d7d729bb0cb4f7d0be","tests/ui/unstable-features/negative_impls.rs":"b913f3d818cc4d91efe4b82dd08b72acff89b97d7e56a33d8106c93f1de6a81d","tests/ui/unstable-features/negative_impls.stderr":"aacad57752e05b1e5a8b09c9486bc9fb6f1875d1f061931197dd4352f1ff2898","tests/ui/unstable-features/overlapping_marker_traits-feature-gate.rs":"dc6b854cc60ea03344f8ca3fa518a2bdc0b9aa69f2368162f4b6ad24d31bc4f0","tests/ui/unstable-features/overlapping_marker_traits-feature-gate.stderr":"14d39aeb6acbe06173240a7252adf97fefff519b0e65179bdfcd3c8b6f5e58a0","tests/ui/unstable-features/overlapping_marker_traits.rs":"8af0d8a5afe9dcaa02fa67b394d376f9933cc99361d68f64185769326700bf7c","tests/ui/unstable-features/overlapping_marker_traits.stderr":"a271b507c86b733430c2fe5973029d99128c908422b6161a9b7c7c2fccae3236","tests/ui/unstable-features/trivial_bounds-feature-gate.rs":"658aab9de2e52a54b9e4731faae6a87172b1b4b78f3853c9fd4b565066b74e64","tests/ui/unstable-features/trivial_bounds-feature-gate.stderr":"2c31748846c992c8a68f586ec24fc89b1c630728d0f263ad4b200018ce3cd871","tests/ui/unstable-features/trivial_bounds.rs":"2bc3e4e17645c42b70c023caa3c5bb428addd2a8664465131e32864d31d3691d","tests/ui/unstable-features/trivial_bounds.stderr":"85ed625ee167cc7d7faffbfb006da5591f3d81a9df763d2cbc68523ea602f2fd","tests/unsafe_unpin.rs":"0367781e5109fa9a27347aebe45e633461e396bf883a06c5f809416030c79514"},"package":"fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/pin-project/Cargo.lock temporalio-1.3.0/vendor/pin-project/Cargo.lock --- temporalio-1.3.0/vendor/pin-project/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -4,9 +4,9 @@ [[package]] name = "basic-toml" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c0de75129aa8d0cceaf750b89013f0e08804d6ec61416da787b35ad0d7cddf1" +checksum = "7bfc506e7a2370ec239e1d072507b2a80c833083699d3c6fa176fbb4de8448c6" dependencies = [ "serde", ] @@ -25,9 +25,9 @@ [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "macrotest" @@ -52,7 +52,7 @@ [[package]] name = "pin-project" -version = "1.1.2" +version = "1.1.3" dependencies = [ "macrotest", "pin-project-internal", @@ -63,13 +63,13 @@ [[package]] name = "pin-project-internal" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.28", ] [[package]] @@ -84,59 +84,59 @@ [[package]] name = "proc-macro2" -version = "1.0.63" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.29" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" +checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" dependencies = [ "proc-macro2", ] [[package]] name = "rustversion" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.181" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "6d3e73c93c3240c0bda063c239298e633114c69a888c3e37ca8bb33f343e9890" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.181" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "be02f6cb0cd3a5ec20bbcfbcbd749f57daddb1a0882dc2e46a6c236c90b977ed" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.28", ] [[package]] name = "serde_json" -version = "1.0.99" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3" +checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" dependencies = [ "itoa", "ryu", @@ -162,9 +162,9 @@ [[package]] name = "syn" -version = "2.0.22" +version = "2.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efbeae7acf4eabd6bcdcbd11c92f45231ddda7539edc7806bd1a04a03b24616" +checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" dependencies = [ "proc-macro2", "quote", @@ -191,9 +191,9 @@ [[package]] name = "trybuild" -version = "1.0.80" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501dbdbb99861e4ab6b60eb6a7493956a9defb644fd034bc4a5ef27c693c8a3a" +checksum = "a84e0202ea606ba5ebee8507ab2bfbe89b98551ed9b8f0be198109275cff284b" dependencies = [ "basic-toml", "glob", @@ -206,9 +206,9 @@ [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "winapi" diff -Nru temporalio-1.3.0/vendor/pin-project/Cargo.toml temporalio-1.3.0/vendor/pin-project/Cargo.toml --- temporalio-1.3.0/vendor/pin-project/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,13 +10,12 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" +edition = "2021" rust-version = "1.56" name = "pin-project" -version = "1.1.2" +version = "1.1.3" exclude = [ "/.*", - "/ci", "/tools", "/DEVELOPMENT.md", ] @@ -31,6 +30,7 @@ ] categories = [ "no-std", + "no-std::no-alloc", "rust-patterns", ] license = "Apache-2.0 OR MIT" @@ -43,7 +43,7 @@ doc-scrape-examples = false [dependencies.pin-project-internal] -version = "=1.1.2" +version = "=1.1.3" [dev-dependencies.macrotest] version = "1.0.9" diff -Nru temporalio-1.3.0/vendor/pin-project/CHANGELOG.md temporalio-1.3.0/vendor/pin-project/CHANGELOG.md --- temporalio-1.3.0/vendor/pin-project/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -10,6 +10,10 @@ ## [Unreleased] +## [1.1.3] - 2023-08-06 + +- Hide documentation of the `Unpin` implementation for `!Unpin` option to work around [rustdoc issue](https://github.com/rust-lang/rust/issues/80481). ([#355](https://github.com/taiki-e/pin-project/pull/355), thanks @matheus-consoli) + ## [1.1.2] - 2023-07-02 - Inline project methods. @@ -692,7 +696,8 @@ Initial release -[Unreleased]: https://github.com/taiki-e/pin-project/compare/v1.1.2...HEAD +[Unreleased]: https://github.com/taiki-e/pin-project/compare/v1.1.3...HEAD +[1.1.3]: https://github.com/taiki-e/pin-project/compare/v1.1.2...v1.1.3 [1.1.2]: https://github.com/taiki-e/pin-project/compare/v1.1.1...v1.1.2 [1.1.1]: https://github.com/taiki-e/pin-project/compare/v1.1.0...v1.1.1 [1.1.0]: https://github.com/taiki-e/pin-project/compare/v1.0.12...v1.1.0 diff -Nru temporalio-1.3.0/vendor/pin-project/tests/expand/not_unpin/enum.expanded.rs temporalio-1.3.0/vendor/pin-project/tests/expand/not_unpin/enum.expanded.rs --- temporalio-1.3.0/vendor/pin-project/tests/expand/not_unpin/enum.expanded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project/tests/expand/not_unpin/enum.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -114,6 +114,7 @@ } } } + #[doc(hidden)] impl<'pin, T, U> _pin_project::__private::Unpin for Enum where _pin_project::__private::Wrapper< diff -Nru temporalio-1.3.0/vendor/pin-project/tests/expand/not_unpin/struct.expanded.rs temporalio-1.3.0/vendor/pin-project/tests/expand/not_unpin/struct.expanded.rs --- temporalio-1.3.0/vendor/pin-project/tests/expand/not_unpin/struct.expanded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project/tests/expand/not_unpin/struct.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -74,6 +74,7 @@ let _ = &this.pinned; let _ = &this.unpinned; } + #[doc(hidden)] impl<'pin, T, U> _pin_project::__private::Unpin for Struct where _pin_project::__private::Wrapper< diff -Nru temporalio-1.3.0/vendor/pin-project/tests/expand/not_unpin/tuple_struct.expanded.rs temporalio-1.3.0/vendor/pin-project/tests/expand/not_unpin/tuple_struct.expanded.rs --- temporalio-1.3.0/vendor/pin-project/tests/expand/not_unpin/tuple_struct.expanded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project/tests/expand/not_unpin/tuple_struct.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -68,6 +68,7 @@ let _ = &this.0; let _ = &this.1; } + #[doc(hidden)] impl<'pin, T, U> _pin_project::__private::Unpin for TupleStruct where _pin_project::__private::Wrapper< diff -Nru temporalio-1.3.0/vendor/pin-project/tests/lint.rs temporalio-1.3.0/vendor/pin-project/tests/lint.rs --- temporalio-1.3.0/vendor/pin-project/tests/lint.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project/tests/lint.rs 2023-10-30 19:40:00.000000000 +0000 @@ -9,7 +9,7 @@ // lints forbidden as a part of future_incompatible, rust_2018_compatibility, and rust_2021_compatibility are not included in the list below. // elided_lifetimes_in_paths, explicit_outlives_requirements, unused_extern_crates: as a part of rust_2018_idioms // unsafe_op_in_unsafe_fn: requires Rust 1.52. and, we don't generate unsafe fn. -// non_exhaustive_omitted_patterns: unstable +// non_exhaustive_omitted_patterns, multiple_supertrait_upcastable: unstable // unstable_features: no way to generate #![feature(..)] by macros, expect for unstable inner attribute. and this lint is deprecated: https://doc.rust-lang.org/rustc/lints/listing/allowed-by-default.html#unstable-features // unused_crate_dependencies, must_not_suspend: unrelated // unsafe_code: checked in forbid_unsafe module @@ -17,6 +17,7 @@ box_pointers, deprecated_in_future, fuzzy_provenance_casts, + invalid_reference_casting, let_underscore_drop, lossy_provenance_casts, macro_use_extern_crate, @@ -43,7 +44,15 @@ )] #![warn(clippy::all, clippy::pedantic, clippy::nursery, clippy::restriction)] #![allow(clippy::blanket_clippy_restriction_lints)] // this is a test, so enable all restriction lints intentionally. -#![allow(clippy::exhaustive_structs, clippy::exhaustive_enums, clippy::single_char_lifetime_names)] // TODO +#![allow( + clippy::absolute_paths, + clippy::exhaustive_enums, + clippy::exhaustive_structs, + clippy::min_ident_chars, + clippy::pub_with_shorthand, + clippy::single_call_fn, + clippy::single_char_lifetime_names +)] // TODO pub mod basic { include!("include/basic.rs"); diff -Nru temporalio-1.3.0/vendor/pin-project-internal/.cargo-checksum.json temporalio-1.3.0/vendor/pin-project-internal/.cargo-checksum.json --- temporalio-1.3.0/vendor/pin-project-internal/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-internal/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"3ebb49e9b77f354fe56a48378c62a4bb1f074cb560ce3738274caaf33ac43624","LICENSE-APACHE":"0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","src/lib.rs":"19e5ab2e30ce5ca53e877826e4eadf7cb7311e72b568573be38ecc8c39556896","src/pin_project/args.rs":"68ded73aff6f7fa66b77581940b5e7ce4eaa71411c796668f165da863795cdf5","src/pin_project/attribute.rs":"0c18445c98a056e7cbf2b43b6442f3702ecece25686c4f4cecb96c76c3f9e22e","src/pin_project/derive.rs":"2af8da895e79e63e0f51f9b242e787d8798ef7c3199c4e1dc4ecd9787b66a875","src/pin_project/mod.rs":"83e6fc982a8c136811332512abc7d368e5d09b94f245de5d19490f835e85943a","src/pinned_drop.rs":"1d4cffdd4176a16c440a2a3a5039dfcf14ff42ef9e2aa7069134dfac8ba69658","src/utils.rs":"6dc65cccfbd9c8f706dbc7003458c583d57db026d2860a965c4f12222ebb3720"},"package":"ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c"} \ No newline at end of file +{"files":{"Cargo.toml":"5e768e7665606e603a7a85f9cc100a5898c94d3a12cd8e540d939e403c6c56eb","LICENSE-APACHE":"0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","src/lib.rs":"19e5ab2e30ce5ca53e877826e4eadf7cb7311e72b568573be38ecc8c39556896","src/pin_project/args.rs":"68ded73aff6f7fa66b77581940b5e7ce4eaa71411c796668f165da863795cdf5","src/pin_project/attribute.rs":"0c18445c98a056e7cbf2b43b6442f3702ecece25686c4f4cecb96c76c3f9e22e","src/pin_project/derive.rs":"985efa8d4b87084ebe76fc4f0876ccf1a5c43c365bafee0992436f00a02e9109","src/pin_project/mod.rs":"83e6fc982a8c136811332512abc7d368e5d09b94f245de5d19490f835e85943a","src/pinned_drop.rs":"1d4cffdd4176a16c440a2a3a5039dfcf14ff42ef9e2aa7069134dfac8ba69658","src/utils.rs":"063cd0422c69afbbd0a0b532a46d463ead82c85637af55c6e2a72706a8f01eee"},"package":"4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/pin-project-internal/Cargo.toml temporalio-1.3.0/vendor/pin-project-internal/Cargo.toml --- temporalio-1.3.0/vendor/pin-project-internal/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-internal/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,10 +10,10 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" +edition = "2021" rust-version = "1.56" name = "pin-project-internal" -version = "1.1.2" +version = "1.1.3" description = """ Implementation detail of the `pin-project` crate. """ @@ -24,6 +24,7 @@ ] categories = [ "no-std", + "no-std::no-alloc", "rust-patterns", ] license = "Apache-2.0 OR MIT" diff -Nru temporalio-1.3.0/vendor/pin-project-internal/src/pin_project/derive.rs temporalio-1.3.0/vendor/pin-project-internal/src/pin_project/derive.rs --- temporalio-1.3.0/vendor/pin-project-internal/src/pin_project/derive.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-internal/src/pin_project/derive.rs 2023-10-30 19:40:00.000000000 +0000 @@ -718,6 +718,7 @@ // call-site span. let unsafety = ::default(); quote_spanned! { span => + #[doc(hidden)] impl #proj_impl_generics _pin_project::__private::Unpin for #orig_ident #ty_generics #proj_where_clause diff -Nru temporalio-1.3.0/vendor/pin-project-internal/src/utils.rs temporalio-1.3.0/vendor/pin-project-internal/src/utils.rs --- temporalio-1.3.0/vendor/pin-project-internal/src/utils.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-internal/src/utils.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -use std::{iter::FromIterator, mem}; +use std::mem; use proc_macro2::{Group, Spacing, Span, TokenStream, TokenTree}; use quote::{quote, quote_spanned, ToTokens}; diff -Nru temporalio-1.3.0/vendor/pin-project-lite/.cargo-checksum.json temporalio-1.3.0/vendor/pin-project-lite/.cargo-checksum.json --- temporalio-1.3.0/vendor/pin-project-lite/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"9feab433fe1ceacdedffbf59f05a19a4621410fef3c870de4196b8d061d6e4ea","Cargo.toml":"6fe5296933e22760d7d88e2ae99f754bb02ff992fc2eabb659ba51e50fee96cb","LICENSE-APACHE":"0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"a931ad557a7a4998afeb8900941011d4fa9176d058efe4cdd5ba9333b6adfa9f","src/lib.rs":"6f3908de14278d2627825f1e47b400ebf03baec439efba1d55ca11d12c5b1bfb","tests/auxiliary/mod.rs":"7e263e987e09b77e384f734384a00a71c5b70230bb1b5376446ef003a8da9372","tests/compiletest.rs":"af34ced23541134e26259a52cae588520c7111e98bff59e0c2e2d73faf43ca3f","tests/drop_order.rs":"2cb31a8cd5cf4d9a4ba9faf25f99f0e85f9bd7b4778649f843d9c617c6af43fc","tests/expand/default/enum.expanded.rs":"73741db49b8fe466122cc2e09b97c0a32c2a2322d1b78f8dd4b0fd4ea66f55ca","tests/expand/default/enum.rs":"493d5752c4baa87ed4c48bd41b8e5e263fd5e3f43c4f9195818ef6d26951f63e","tests/expand/default/struct.expanded.rs":"d74deb9989f1f0ef11cac09790875e0c174bff6de342b762905918335e5f133b","tests/expand/default/struct.rs":"5a6e57d9b6d00cfd4e1e69f37ce0c9d5165a21230d0363f0791665b1015870ce","tests/expand/multifields/enum.expanded.rs":"8ef9f7c04d3b2cc90840c6582982c865f692af6ce395039ea90fdce181503f66","tests/expand/multifields/enum.rs":"9c79270a7d6d1d42cf8194b579d79e7d44a3fd003243742f0a568ecf0a4f3be3","tests/expand/multifields/struct.expanded.rs":"3df76fe8fbb86a3c40ff706630ff3ff4cb50f363078b5cd10810fef1e9485021","tests/expand/multifields/struct.rs":"17f0447d522d48f14d516808bd66baacebdf3ac38188df72f649702a893cda68","tests/expand/naming/enum-all.expanded.rs":"73741db49b8fe466122cc2e09b97c0a32c2a2322d1b78f8dd4b0fd4ea66f55ca","tests/expand/naming/enum-all.rs":"493d5752c4baa87ed4c48bd41b8e5e263fd5e3f43c4f9195818ef6d26951f63e","tests/expand/naming/enum-mut.expanded.rs":"3f513570045a28b864138dd51b0216f8f3cc4543a0394b895a76dc8b4144a352","tests/expand/naming/enum-mut.rs":"c1ff4ade049ebbceb2acb99dbc1af5db14de3ba9710ea1ff1b64348766a9e080","tests/expand/naming/enum-none.expanded.rs":"dbac25a5370153bad9165346c49f831d051b22f0c40bc4d81aa1dd44346d04cc","tests/expand/naming/enum-none.rs":"ff22be4ecf4168e2bc68ab249a0ed809a37e3b8e840ef8977d24209ef28ac839","tests/expand/naming/enum-ref.expanded.rs":"cf9e3d5ce323561f20f739d28a6c71b3d18db300229ebd178fb8d169003f1f7d","tests/expand/naming/enum-ref.rs":"394cbd5d872449e9226cd0834ce7117c395a582567584218dabbef4eb2c1fbac","tests/expand/naming/struct-all.expanded.rs":"b5368da93cfcf1c04b985e10e89fd27e26f38202fe0a1627aade8dd16e14a836","tests/expand/naming/struct-all.rs":"c13c0aacee85b8fca58f85d2d75d2e3907b3e7642f8710ed8c8e54d6015881cc","tests/expand/naming/struct-mut.expanded.rs":"94a6a1fc3c3e4eabe596c53ccbece7bb142fedbaeb7cfaacd88be1f819afe0f2","tests/expand/naming/struct-mut.rs":"9a7752a6d30e0b7033f3577a72676676900a642cdaf59f942179d1f2a8ba2bb0","tests/expand/naming/struct-none.expanded.rs":"d74deb9989f1f0ef11cac09790875e0c174bff6de342b762905918335e5f133b","tests/expand/naming/struct-none.rs":"5a6e57d9b6d00cfd4e1e69f37ce0c9d5165a21230d0363f0791665b1015870ce","tests/expand/naming/struct-ref.expanded.rs":"abf295423ada7d68d0763af4e9aee7bdd65b0bb432afb2f65a282323dcf0c6b9","tests/expand/naming/struct-ref.rs":"33c4fd344b65650dee44087ada31d4b5acd9d122123360fb7d41718c46699574","tests/expand/pinned_drop/enum.expanded.rs":"591562f90a8f6574415d9cbbd4bd0d11b2a5c507a9a9e7cf1d801d788e5ac5a8","tests/expand/pinned_drop/enum.rs":"3178d479b9b42dc74c5a2207f70c9959070672c03009021e335c34290ef620ba","tests/expand/pinned_drop/struct.expanded.rs":"17f5ffe1c78dd7ebbfcd331103a7a00ef4c3240629db6f5cbe0778798954f036","tests/expand/pinned_drop/struct.rs":"cf6a7b04451c59ce697c3ef15855c7740b0e72a6005b1f47db326bd93b1849c3","tests/expand/pub/enum.expanded.rs":"c9293953156f2da3310f76889926c61c507599075a2510b57d05461fec566575","tests/expand/pub/enum.rs":"5b60dd354a489b0326f5c4f1026b89d1471ddbb45906bc3046a65425c4e5e160","tests/expand/pub/struct.expanded.rs":"fdde95e4efe85708fb187fddb2eddc83bac99aa0bada1352f8a94c77de61748f","tests/expand/pub/struct.rs":"15b7940ce0ad1d5d133dde1870319f2f96a000bfcf29508b8cce1a62876cbd80","tests/expandtest.rs":"66bd80992a1696994ec2d14c3edc36350a0cb896d8081f1c0f8893ebeed72d03","tests/include/basic.rs":"9e399b682bc74c899d26924c2cab52a911f7392e29300defb6521e561fafafe4","tests/lint.rs":"581621ee56cb3cef0199b2502047208ff436ed1b62a6ff9e60935b172d871b79","tests/proper_unpin.rs":"57a9e8c9029ba7920ec23670b66758916e067c9cecf4d3f8b0035bec25cdb570","tests/test.rs":"8d0ee300af17535dc7fd488433630911ddc3147a3e3ccf0b9dce9f0ccdb10dc3","tests/ui/pin_project/conflict-drop.rs":"55e6809b5f59dd81e32c2c89b742c0c76db6b099a1d2621e5b882c0d20f92837","tests/ui/pin_project/conflict-drop.stderr":"7cadbfe2b8e9659c69e8d61d45128d3589444f563e1f179d6d4c9bd1d98e96e1","tests/ui/pin_project/conflict-unpin.rs":"51b3b6720fa581b63167d6ac941a1ea1bf739b09954931b2bc2f7abe2d934f26","tests/ui/pin_project/conflict-unpin.stderr":"234eadbabb506a64899d79ef436def3e7b422a7e8688212433be34afa983a7b4","tests/ui/pin_project/invalid-bounds.rs":"f86f23d377df015182f2f5dae6464a4f98c37f2198e0646f721fedc4017cb82c","tests/ui/pin_project/invalid-bounds.stderr":"200e6fab99f8ebd75116294ba9c43ae9487563239f2d57462157f5cc47c37cc3","tests/ui/pin_project/invalid.rs":"7304bd4a5bac1419382742432cfa8af83535d7be8cfad52c661410e0e9e8207a","tests/ui/pin_project/invalid.stderr":"6e8693c3341972e329e7c7a1836f308c433e0ba677fc99808d75a53e695654b1","tests/ui/pin_project/overlapping_lifetime_names.rs":"36c849a4570c8c0c32ca6c01aa75afbe1136ef73d45f17eb66175e1936678722","tests/ui/pin_project/overlapping_lifetime_names.stderr":"6958a5c0c983f3ed782203d8f221e80e154b71cb4fe2a9fb633058ec636c4cbc","tests/ui/pin_project/overlapping_unpin_struct.rs":"9a126182d1fe15a30ac60bb223b376aad747d11293d3cf512ad2dce546e3725c","tests/ui/pin_project/overlapping_unpin_struct.stderr":"406feb5169cd79293853b76a5cc599e692d2af3b5169fca32cb5cf1cb2ad0fc0","tests/ui/pin_project/packed.rs":"1f1a34aafbff9a59b94cdf3a53df03e9fc661d9e27e0f9962bad7f9bdad03b14","tests/ui/pin_project/packed.stderr":"5c5f08d339d4e5e2596f1f8a64158d8c2df2ea7116c04a578004f30f48ca7b0a","tests/ui/pin_project/unpin_sneaky.rs":"12e97a387ce1af6ee6a567687674aab70e96962a48f2433c39976d0b3e2c3341","tests/ui/pin_project/unpin_sneaky.stderr":"7a540e26a0e9c66794bcc10cbc337b3459a9208d32b0012f0b55fb84cfc15cf1","tests/ui/pin_project/unsupported.rs":"14defa90e736f314bbbc219973929b77bdd22e5f7e4c4c88403db764f4d167d6","tests/ui/pin_project/unsupported.stderr":"7b161bda371caeb26df426fde4dadcff61a807ffd476b2344c6b77072d6c0cc0","tests/ui/pinned_drop/call-drop-inner.rs":"032260da1fc0e649d97167a8a4ac47eea915000efebdfdc490f050b6f9351027","tests/ui/pinned_drop/call-drop-inner.stderr":"abec9d82aeb49c860e313db0a3ad0d2024d7500750d4f9a0f8b0ce00478dbcbf","tests/ui/pinned_drop/conditional-drop-impl.rs":"0b28c74213cee83e7b27223d7d37f903f79abd3dddcc0f969e14047674908085","tests/ui/pinned_drop/conditional-drop-impl.stderr":"a845afaa89054f7c516029090a201f3beecf59d6e9e4fca18ca3678d27666a92"},"package":"4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57"} \ No newline at end of file +{"files":{"CHANGELOG.md":"66c1dfe95542a7229aac93f4ff2b0d45d7becfd2152d366b1b381905246a4cdb","Cargo.toml":"8e1f0452f2ac0fc8376595bdf02439253b79316c21c9be37820b10764a94df76","LICENSE-APACHE":"0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"84c64307110253c7348fb56e22ff36460b4b0c797fc931dbb748bef6921a8009","src/lib.rs":"6feb92297ed551465be24274651c06744fbdae194c0bd69eb0a4bc9c746d6dda","tests/auxiliary/mod.rs":"7e263e987e09b77e384f734384a00a71c5b70230bb1b5376446ef003a8da9372","tests/compiletest.rs":"af34ced23541134e26259a52cae588520c7111e98bff59e0c2e2d73faf43ca3f","tests/drop_order.rs":"2cb31a8cd5cf4d9a4ba9faf25f99f0e85f9bd7b4778649f843d9c617c6af43fc","tests/expand/default/enum.expanded.rs":"7944e0ff3a49ef1bccff5681a32a0b306c5eaa7a5f4838132eca8e9a62d40722","tests/expand/default/enum.rs":"493d5752c4baa87ed4c48bd41b8e5e263fd5e3f43c4f9195818ef6d26951f63e","tests/expand/default/struct.expanded.rs":"c0a2a411462f2570340e095963c277da229f7b7dcbe661512ac5f051478d5905","tests/expand/default/struct.rs":"5a6e57d9b6d00cfd4e1e69f37ce0c9d5165a21230d0363f0791665b1015870ce","tests/expand/multifields/enum.expanded.rs":"fc3a86d536060cbd1aa58a2e565d00033f677c0e02f1dd1ee6e30e8379b152fe","tests/expand/multifields/enum.rs":"9c79270a7d6d1d42cf8194b579d79e7d44a3fd003243742f0a568ecf0a4f3be3","tests/expand/multifields/struct.expanded.rs":"cf2dd15e6a0a66afcb8c5d7fef235964a4326c91732de65597f880285fdffe2a","tests/expand/multifields/struct.rs":"17f0447d522d48f14d516808bd66baacebdf3ac38188df72f649702a893cda68","tests/expand/naming/enum-all.expanded.rs":"7944e0ff3a49ef1bccff5681a32a0b306c5eaa7a5f4838132eca8e9a62d40722","tests/expand/naming/enum-all.rs":"493d5752c4baa87ed4c48bd41b8e5e263fd5e3f43c4f9195818ef6d26951f63e","tests/expand/naming/enum-mut.expanded.rs":"49bd8b7e0a469823e1e7d4dbfcb7108ef5db16844ef7d4686cb6600768123877","tests/expand/naming/enum-mut.rs":"c1ff4ade049ebbceb2acb99dbc1af5db14de3ba9710ea1ff1b64348766a9e080","tests/expand/naming/enum-none.expanded.rs":"dbac25a5370153bad9165346c49f831d051b22f0c40bc4d81aa1dd44346d04cc","tests/expand/naming/enum-none.rs":"ff22be4ecf4168e2bc68ab249a0ed809a37e3b8e840ef8977d24209ef28ac839","tests/expand/naming/enum-ref.expanded.rs":"ec4dedf4618e6b9dc4e98a2846b769dc5c9ad9eb51cb645ebfcca09c9ec9458f","tests/expand/naming/enum-ref.rs":"394cbd5d872449e9226cd0834ce7117c395a582567584218dabbef4eb2c1fbac","tests/expand/naming/struct-all.expanded.rs":"1573eb22f4f68b2d2621a5b3d4bda0edfd38ef16efc7f29d9697fc5564a9f615","tests/expand/naming/struct-all.rs":"c13c0aacee85b8fca58f85d2d75d2e3907b3e7642f8710ed8c8e54d6015881cc","tests/expand/naming/struct-mut.expanded.rs":"6e52a2d4c9fe105307d2cf07882897027713ebcac94249aab7ba0a1ffc2f2f77","tests/expand/naming/struct-mut.rs":"9a7752a6d30e0b7033f3577a72676676900a642cdaf59f942179d1f2a8ba2bb0","tests/expand/naming/struct-none.expanded.rs":"c0a2a411462f2570340e095963c277da229f7b7dcbe661512ac5f051478d5905","tests/expand/naming/struct-none.rs":"5a6e57d9b6d00cfd4e1e69f37ce0c9d5165a21230d0363f0791665b1015870ce","tests/expand/naming/struct-ref.expanded.rs":"b8744cb83e6764c4c9718c4ad6898ce2c80420730456579ce250e1839bad6027","tests/expand/naming/struct-ref.rs":"33c4fd344b65650dee44087ada31d4b5acd9d122123360fb7d41718c46699574","tests/expand/not_unpin/enum.expanded.rs":"c71d04b6c6ed0c334724b395e44679111703adaf19f3d697f5bfce58f8313cfc","tests/expand/not_unpin/enum.rs":"b626f3390a6afa36ec3505bdb61457e8eb2a6eee58dc8ab5a85c9e1a10699b20","tests/expand/not_unpin/struct.expanded.rs":"e3bb42319076fa8ecfec3e47356bb5afc95da5454467a2b0b471f76ced0f284f","tests/expand/not_unpin/struct.rs":"84af744f600ef0c0276a64a07d427b28e0b649fb634fa9880a9fd8cd475517c9","tests/expand/pinned_drop/enum.expanded.rs":"9b7d9d0c16045400c93de9a47f39aae3859d922f81432f76f96e7dd81f27cdb8","tests/expand/pinned_drop/enum.rs":"3178d479b9b42dc74c5a2207f70c9959070672c03009021e335c34290ef620ba","tests/expand/pinned_drop/struct.expanded.rs":"e802ab01b59f09d6397f9235eab51e07859b2582465a39f5621fa4d33e270fd3","tests/expand/pinned_drop/struct.rs":"cf6a7b04451c59ce697c3ef15855c7740b0e72a6005b1f47db326bd93b1849c3","tests/expand/pub/enum.expanded.rs":"ddc80984cc8cfd30a27c385c3e53ae7c178d774a717040d0e791e81adc7004fe","tests/expand/pub/enum.rs":"5b60dd354a489b0326f5c4f1026b89d1471ddbb45906bc3046a65425c4e5e160","tests/expand/pub/struct.expanded.rs":"435a2322ab580327bfecd40b309b3f2079667ed627bc25bdb41ee03dae0596bb","tests/expand/pub/struct.rs":"15b7940ce0ad1d5d133dde1870319f2f96a000bfcf29508b8cce1a62876cbd80","tests/expandtest.rs":"66bd80992a1696994ec2d14c3edc36350a0cb896d8081f1c0f8893ebeed72d03","tests/include/basic.rs":"9e399b682bc74c899d26924c2cab52a911f7392e29300defb6521e561fafafe4","tests/lint.rs":"36005c64524a2ed4f738d22d5310539e063e75833e8ab1b81afa6c9d1ba14bf6","tests/proper_unpin.rs":"35894ab482a5409aa32b261ff729c0ce23230232ecf43b3227a401fd218828e1","tests/test.rs":"c80bf3277f6e478fed3e7e72e478775ae9213733fd232a2e8d36fa916448d581","tests/ui/pin_project/conflict-drop.rs":"55e6809b5f59dd81e32c2c89b742c0c76db6b099a1d2621e5b882c0d20f92837","tests/ui/pin_project/conflict-drop.stderr":"7cadbfe2b8e9659c69e8d61d45128d3589444f563e1f179d6d4c9bd1d98e96e1","tests/ui/pin_project/conflict-unpin.rs":"eae4f6b2084e32001a5a965b4a9ebf76a3a628830ca5f93bf4799eea96accbf9","tests/ui/pin_project/conflict-unpin.stderr":"c5bc8f97a5917548eb66e6099adf9371416a02ffc4feb2e20432c60782cd6ba2","tests/ui/pin_project/invalid-bounds.rs":"f86f23d377df015182f2f5dae6464a4f98c37f2198e0646f721fedc4017cb82c","tests/ui/pin_project/invalid-bounds.stderr":"200e6fab99f8ebd75116294ba9c43ae9487563239f2d57462157f5cc47c37cc3","tests/ui/pin_project/invalid.rs":"7304bd4a5bac1419382742432cfa8af83535d7be8cfad52c661410e0e9e8207a","tests/ui/pin_project/invalid.stderr":"6e8693c3341972e329e7c7a1836f308c433e0ba677fc99808d75a53e695654b1","tests/ui/pin_project/overlapping_lifetime_names.rs":"36c849a4570c8c0c32ca6c01aa75afbe1136ef73d45f17eb66175e1936678722","tests/ui/pin_project/overlapping_lifetime_names.stderr":"6958a5c0c983f3ed782203d8f221e80e154b71cb4fe2a9fb633058ec636c4cbc","tests/ui/pin_project/overlapping_unpin_struct.rs":"9a126182d1fe15a30ac60bb223b376aad747d11293d3cf512ad2dce546e3725c","tests/ui/pin_project/overlapping_unpin_struct.stderr":"406feb5169cd79293853b76a5cc599e692d2af3b5169fca32cb5cf1cb2ad0fc0","tests/ui/pin_project/packed.rs":"1f1a34aafbff9a59b94cdf3a53df03e9fc661d9e27e0f9962bad7f9bdad03b14","tests/ui/pin_project/packed.stderr":"5c5f08d339d4e5e2596f1f8a64158d8c2df2ea7116c04a578004f30f48ca7b0a","tests/ui/pin_project/unpin_sneaky.rs":"12e97a387ce1af6ee6a567687674aab70e96962a48f2433c39976d0b3e2c3341","tests/ui/pin_project/unpin_sneaky.stderr":"7a540e26a0e9c66794bcc10cbc337b3459a9208d32b0012f0b55fb84cfc15cf1","tests/ui/pin_project/unsupported.rs":"14defa90e736f314bbbc219973929b77bdd22e5f7e4c4c88403db764f4d167d6","tests/ui/pin_project/unsupported.stderr":"7b161bda371caeb26df426fde4dadcff61a807ffd476b2344c6b77072d6c0cc0","tests/ui/pinned_drop/call-drop-inner.rs":"032260da1fc0e649d97167a8a4ac47eea915000efebdfdc490f050b6f9351027","tests/ui/pinned_drop/call-drop-inner.stderr":"abec9d82aeb49c860e313db0a3ad0d2024d7500750d4f9a0f8b0ce00478dbcbf","tests/ui/pinned_drop/conditional-drop-impl.rs":"0b28c74213cee83e7b27223d7d37f903f79abd3dddcc0f969e14047674908085","tests/ui/pinned_drop/conditional-drop-impl.stderr":"a845afaa89054f7c516029090a201f3beecf59d6e9e4fca18ca3678d27666a92"},"package":"12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/pin-project-lite/Cargo.toml temporalio-1.3.0/vendor/pin-project-lite/Cargo.toml --- temporalio-1.3.0/vendor/pin-project-lite/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ edition = "2018" rust-version = "1.37" name = "pin-project-lite" -version = "0.2.10" +version = "0.2.12" exclude = [ "/.*", "/tools", @@ -29,6 +29,7 @@ ] categories = [ "no-std", + "no-std::no-alloc", "rust-patterns", ] license = "Apache-2.0 OR MIT" @@ -46,6 +47,12 @@ [dev-dependencies.once_cell] version = "=1.14" +[dev-dependencies.proc-macro2] +version = "=1.0.65" + +[dev-dependencies.quote] +version = "=1.0.30" + [dev-dependencies.rustversion] version = "1" diff -Nru temporalio-1.3.0/vendor/pin-project-lite/CHANGELOG.md temporalio-1.3.0/vendor/pin-project-lite/CHANGELOG.md --- temporalio-1.3.0/vendor/pin-project-lite/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -10,6 +10,14 @@ ## [Unreleased] +## [0.2.12] - 2023-08-09 + +- Work around an issue where the projected types/methods appear in the documentation as if they were part of the public API if the visibility is not correctly parsed due to the rustc bug. See [#77](https://github.com/taiki-e/pin-project-lite/issues/77#issuecomment-1671540180) for details. + +## [0.2.11] - 2023-08-06 + +- Add support for `#[project(!Unpin)]`. This is equivalent to pin-project's [!Unpin](https://docs.rs/pin-project/latest/pin_project/attr.pin_project.html#unpin) option. ([#76](https://github.com/taiki-e/pin-project-lite/pull/76), thanks @matheus-consoli) + ## [0.2.10] - 2023-07-02 - Inline project methods. ([#74](https://github.com/taiki-e/pin-project-lite/pull/74), thanks @EFanZh) @@ -200,7 +208,9 @@ Initial release -[Unreleased]: https://github.com/taiki-e/pin-project-lite/compare/v0.2.10...HEAD +[Unreleased]: https://github.com/taiki-e/pin-project-lite/compare/v0.2.12...HEAD +[0.2.12]: https://github.com/taiki-e/pin-project-lite/compare/v0.2.11...v0.2.12 +[0.2.11]: https://github.com/taiki-e/pin-project-lite/compare/v0.2.10...v0.2.11 [0.2.10]: https://github.com/taiki-e/pin-project-lite/compare/v0.2.9...v0.2.10 [0.2.9]: https://github.com/taiki-e/pin-project-lite/compare/v0.2.8...v0.2.9 [0.2.8]: https://github.com/taiki-e/pin-project-lite/compare/v0.2.7...v0.2.8 diff -Nru temporalio-1.3.0/vendor/pin-project-lite/README.md temporalio-1.3.0/vendor/pin-project-lite/README.md --- temporalio-1.3.0/vendor/pin-project-lite/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -105,13 +105,14 @@ ### Different: No support for custom Unpin implementation -pin-project supports this by [`UnsafeUnpin`][unsafe-unpin] and [`!Unpin`][not-unpin]. +pin-project supports this by [`UnsafeUnpin`][unsafe-unpin]. (`!Unpin` is supported by both [pin-project][not-unpin] and [pin-project-lite][not-unpin-lite].) ### Different: No support for tuple structs and tuple variants pin-project supports this. [not-unpin]: https://docs.rs/pin-project/1/pin_project/attr.pin_project.html#unpin +[not-unpin-lite]: https://docs.rs/pin-project-lite/0.2/pin_project_lite/macro.pin_project.html#unpin [pin-project]: https://github.com/taiki-e/pin-project [unsafe-unpin]: https://docs.rs/pin-project/1/pin_project/attr.pin_project.html#unsafeunpin diff -Nru temporalio-1.3.0/vendor/pin-project-lite/src/lib.rs temporalio-1.3.0/vendor/pin-project-lite/src/lib.rs --- temporalio-1.3.0/vendor/pin-project-lite/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -98,13 +98,14 @@ ### Different: No support for custom Unpin implementation -pin-project supports this by [`UnsafeUnpin`][unsafe-unpin] and [`!Unpin`][not-unpin]. +pin-project supports this by [`UnsafeUnpin`][unsafe-unpin]. (`!Unpin` is supported by both [pin-project][not-unpin] and [pin-project-lite][not-unpin-lite].) ### Different: No support for tuple structs and tuple variants pin-project supports this. [not-unpin]: https://docs.rs/pin-project/1/pin_project/attr.pin_project.html#unpin +[not-unpin-lite]: https://docs.rs/pin-project-lite/0.2/pin_project_lite/macro.pin_project.html#unpin [pin-project]: https://github.com/taiki-e/pin-project [unsafe-unpin]: https://docs.rs/pin-project/1/pin_project/attr.pin_project.html#unsafeunpin @@ -295,8 +296,22 @@ /// /// # `!Unpin` /// -/// If you want to ensure that [`Unpin`] is not implemented, use `#[pin]` -/// attribute for a [`PhantomPinned`] field. +/// If you want to make sure `Unpin` is not implemented, use the `#[project(!Unpin)]` +/// attribute. +/// +/// ``` +/// use pin_project_lite::pin_project; +/// +/// pin_project! { +/// #[project(!Unpin)] +/// struct Struct { +/// #[pin] +/// field: T, +/// } +/// } +/// ``` +/// +/// This is equivalent to using `#[pin]` attribute for a [`PhantomPinned`] field. /// /// ```rust /// use std::marker::PhantomPinned; @@ -306,13 +321,14 @@ /// pin_project! { /// struct Struct { /// field: T, -/// #[pin] // <------ This `#[pin]` is required to make `Struct` to `!Unpin`. +/// #[pin] /// _pin: PhantomPinned, /// } /// } /// ``` /// -/// Note that using [`PhantomPinned`] without `#[pin]` attribute has no effect. +/// Note that using [`PhantomPinned`] without `#[pin]` or `#[project(!Unpin)]` +/// attribute has no effect. /// /// [`PhantomPinned`]: core::marker::PhantomPinned /// [`Pin::as_mut`]: core::pin::Pin::as_mut @@ -322,7 +338,7 @@ macro_rules! pin_project { ($($tt:tt)*) => { $crate::__pin_project_internal! { - [][][][] + [][][][][] $($tt)* } }; @@ -344,6 +360,7 @@ [$($proj_mut_ident:ident)?] [$($proj_ref_ident:ident)?] [$($proj_replace_ident:ident)?] + [$($proj_not_unpin_mark:ident)?] [$proj_vis:vis] [$(#[$attrs:meta])* $vis:vis $struct_ty_ident:ident $ident:ident] [$($def_generics:tt)*] @@ -393,6 +410,7 @@ $crate::__pin_project_constant! { [$(#[$attrs])* $vis $struct_ty_ident $ident] [$($proj_mut_ident)?] [$($proj_ref_ident)?] [$($proj_replace_ident)?] + [$($proj_not_unpin_mark)?] [$proj_vis] [$($def_generics)*] [$($impl_generics)*] [$($ty_generics)*] [$(where $($where_clause)*)?] @@ -410,6 +428,7 @@ ( [$(#[$attrs:meta])* $vis:vis struct $ident:ident] [$($proj_mut_ident:ident)?] [$($proj_ref_ident:ident)?] [$($proj_replace_ident:ident)?] + [$($proj_not_unpin_mark:ident)?] [$proj_vis:vis] [$($def_generics:tt)*] [$($impl_generics:tt)*] [$($ty_generics:tt)*] [$(where $($where_clause:tt)*)?] @@ -497,6 +516,7 @@ } $crate::__pin_project_make_unpin_impl! { + [$($proj_not_unpin_mark)?] [$vis $ident] [$($impl_generics)*] [$($ty_generics)*] [$(where $($where_clause)*)?] $( @@ -546,6 +566,7 @@ ( [$(#[$attrs:meta])* $vis:vis enum $ident:ident] [$($proj_mut_ident:ident)?] [$($proj_ref_ident:ident)?] [$($proj_replace_ident:ident)?] + [$($proj_not_unpin_mark:ident)?] [$proj_vis:vis] [$($def_generics:tt)*] [$($impl_generics:tt)*] [$($ty_generics:tt)*] [$(where $($where_clause:tt)*)?] @@ -622,6 +643,7 @@ } $crate::__pin_project_make_unpin_impl! { + [$($proj_not_unpin_mark)?] [$vis $ident] [$($impl_generics)*] [$($ty_generics)*] [$(where $($where_clause)*)?] $( @@ -783,6 +805,7 @@ [$($impl_generics:tt)*] [$($ty_generics:tt)*] [$(where $($where_clause:tt)*)?] [$($body_data:tt)+] ) => { + #[doc(hidden)] // Workaround for rustc bug: see https://github.com/taiki-e/pin-project-lite/issues/77#issuecomment-1671540180 for more. #[allow(dead_code)] // This lint warns unused fields/variants. #[allow(single_use_lifetimes)] // https://github.com/rust-lang/rust/issues/55058 // This lint warns of `clippy::*` generated by external macros. @@ -876,6 +899,7 @@ [$($impl_generics:tt)*] [$($ty_generics:tt)*] [$(where $($where_clause:tt)*)?] [$($body_data:tt)+] ) => { + #[doc(hidden)] // Workaround for rustc bug: see https://github.com/taiki-e/pin-project-lite/issues/77#issuecomment-1671540180 for more. #[allow(dead_code)] // This lint warns unused fields/variants. #[allow(single_use_lifetimes)] // https://github.com/rust-lang/rust/issues/55058 #[allow(clippy::mut_mut)] // This lint warns `&mut &mut `. (only needed for project) @@ -954,6 +978,7 @@ ),+ } ) => { + #[doc(hidden)] // Workaround for rustc bug: see https://github.com/taiki-e/pin-project-lite/issues/77#issuecomment-1671540180 for more. #[inline] $proj_vis fn $method_ident<'__pin>( self: $crate::__private::Pin<&'__pin $($mut)? Self>, @@ -988,6 +1013,7 @@ ),+ } ) => { + #[doc(hidden)] // Workaround for rustc bug: see https://github.com/taiki-e/pin-project-lite/issues/77#issuecomment-1671540180 for more. #[inline] $proj_vis fn project_replace( self: $crate::__private::Pin<&mut Self>, @@ -1036,6 +1062,7 @@ ),+ } ) => { + #[doc(hidden)] // Workaround for rustc bug: see https://github.com/taiki-e/pin-project-lite/issues/77#issuecomment-1671540180 for more. #[inline] $proj_vis fn $method_ident<'__pin>( self: $crate::__private::Pin<&'__pin $($mut)? Self>, @@ -1080,6 +1107,7 @@ ),+ } ) => { + #[doc(hidden)] // Workaround for rustc bug: see https://github.com/taiki-e/pin-project-lite/issues/77#issuecomment-1671540180 for more. #[inline] $proj_vis fn project_replace( self: $crate::__private::Pin<&mut Self>, @@ -1118,6 +1146,7 @@ #[macro_export] macro_rules! __pin_project_make_unpin_impl { ( + [] [$vis:vis $ident:ident] [$($impl_generics:tt)*] [$($ty_generics:tt)*] [$(where $($where_clause:tt)*)?] $($field:tt)* @@ -1162,6 +1191,23 @@ { } }; + ( + [$proj_not_unpin_mark:ident] + [$vis:vis $ident:ident] + [$($impl_generics:tt)*] [$($ty_generics:tt)*] [$(where $($where_clause:tt)*)?] + $($field:tt)* + ) => { + #[doc(hidden)] + impl <'__pin, $($impl_generics)*> $crate::__private::Unpin for $ident <$($ty_generics)*> + where + ( + ::core::marker::PhantomData<&'__pin ()>, + ::core::marker::PhantomPinned, + ): $crate::__private::Unpin + $(, $($where_clause)*)? + { + } + } } #[doc(hidden)] @@ -1360,6 +1406,7 @@ [] [$($proj_ref_ident:ident)?] [$($proj_replace_ident:ident)?] + [$( ! $proj_not_unpin_mark:ident)?] [$($attrs:tt)*] #[project = $proj_mut_ident:ident] @@ -1369,6 +1416,7 @@ [$proj_mut_ident] [$($proj_ref_ident)?] [$($proj_replace_ident)?] + [$( ! $proj_not_unpin_mark)?] [$($attrs)*] $($tt)* } @@ -1378,6 +1426,7 @@ [$($proj_mut_ident:ident)?] [] [$($proj_replace_ident:ident)?] + [$( ! $proj_not_unpin_mark:ident)?] [$($attrs:tt)*] #[project_ref = $proj_ref_ident:ident] @@ -1387,6 +1436,7 @@ [$($proj_mut_ident)?] [$proj_ref_ident] [$($proj_replace_ident)?] + [$( ! $proj_not_unpin_mark)?] [$($attrs)*] $($tt)* } @@ -1396,6 +1446,7 @@ [$($proj_mut_ident:ident)?] [$($proj_ref_ident:ident)?] [] + [$( ! $proj_not_unpin_mark:ident)?] [$($attrs:tt)*] #[project_replace = $proj_replace_ident:ident] @@ -1405,6 +1456,27 @@ [$($proj_mut_ident)?] [$($proj_ref_ident)?] [$proj_replace_ident] + [$( ! $proj_not_unpin_mark)?] + [$($attrs)*] + $($tt)* + } + }; + // parsing !Unpin + ( + [$($proj_mut_ident:ident)?] + [$($proj_ref_ident:ident)?] + [$($proj_replace_ident:ident)?] + [] + [$($attrs:tt)*] + + #[project( ! $proj_not_unpin_mark:ident)] + $($tt:tt)* + ) => { + $crate::__pin_project_internal! { + [$($proj_mut_ident)?] + [$($proj_ref_ident)?] + [$($proj_replace_ident)?] + [ ! $proj_not_unpin_mark] [$($attrs)*] $($tt)* } @@ -1415,6 +1487,7 @@ [$($proj_mut_ident:ident)?] [$($proj_ref_ident:ident)?] [$($proj_replace_ident:ident)?] + [$( ! $proj_not_unpin_mark:ident)?] [$($attrs:tt)*] #[$($attr:tt)*] @@ -1424,6 +1497,7 @@ [$($proj_mut_ident)?] [$($proj_ref_ident)?] [$($proj_replace_ident)?] + [$( ! $proj_not_unpin_mark)?] [$($attrs)* #[$($attr)*]] $($tt)* } @@ -1434,6 +1508,7 @@ [$($proj_mut_ident:ident)?] [$($proj_ref_ident:ident)?] [$($proj_replace_ident:ident)?] + [$( ! $proj_not_unpin_mark:ident)?] [$($attrs:tt)*] pub $struct_ty_ident:ident $ident:ident $($tt:tt)* @@ -1442,6 +1517,7 @@ [$($proj_mut_ident)?] [$($proj_ref_ident)?] [$($proj_replace_ident)?] + [$($proj_not_unpin_mark)?] [$($attrs)*] [pub $struct_ty_ident $ident pub(crate)] $($tt)* @@ -1451,6 +1527,7 @@ [$($proj_mut_ident:ident)?] [$($proj_ref_ident:ident)?] [$($proj_replace_ident:ident)?] + [$( ! $proj_not_unpin_mark:ident)?] [$($attrs:tt)*] $vis:vis $struct_ty_ident:ident $ident:ident $($tt:tt)* @@ -1459,6 +1536,7 @@ [$($proj_mut_ident)?] [$($proj_ref_ident)?] [$($proj_replace_ident)?] + [$($proj_not_unpin_mark)?] [$($attrs)*] [$vis $struct_ty_ident $ident $vis] $($tt)* @@ -1473,8 +1551,9 @@ [$($proj_mut_ident:ident)?] [$($proj_ref_ident:ident)?] [$($proj_replace_ident:ident)?] + [$($proj_not_unpin_mark:ident)?] [$($attrs:tt)*] - [$vis:vis $struct_ty_ident:ident $ident:ident $proj_ty_vis:vis] + [$vis:vis $struct_ty_ident:ident $ident:ident $proj_vis:vis] $(< $( $lifetime:lifetime $(: $lifetime_bound:lifetime)? ),* $(,)? $( $generics:ident @@ -1500,7 +1579,8 @@ [$($proj_mut_ident)?] [$($proj_ref_ident)?] [$($proj_replace_ident)?] - [$proj_ty_vis] + [$($proj_not_unpin_mark)?] + [$proj_vis] [$($attrs)* $vis $struct_ty_ident $ident] [$(< $( $lifetime $(: $lifetime_bound)? ,)* diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/default/enum.expanded.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/default/enum.expanded.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/default/enum.expanded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/default/enum.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,6 +3,7 @@ Struct { pinned: T, unpinned: U }, Unit, } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -20,6 +21,7 @@ }, Unit, } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -37,6 +39,7 @@ }, Unit, } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::mut_mut)] @@ -51,6 +54,7 @@ #[allow(clippy::used_underscore_binding)] const _: () = { impl Enum { + #[doc(hidden)] #[inline] fn project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, @@ -69,6 +73,7 @@ } } } + #[doc(hidden)] #[inline] fn project_ref<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin Self>, @@ -87,6 +92,7 @@ } } } + #[doc(hidden)] #[inline] fn project_replace( self: ::pin_project_lite::__private::Pin<&mut Self>, diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/default/struct.expanded.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/default/struct.expanded.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/default/struct.expanded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/default/struct.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -9,6 +9,7 @@ #[allow(clippy::redundant_pub_crate)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -23,6 +24,7 @@ pinned: ::pin_project_lite::__private::Pin<&'__pin mut (T)>, unpinned: &'__pin mut (U), } + #[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -38,6 +40,7 @@ unpinned: &'__pin (U), } impl Struct { + #[doc(hidden)] #[inline] fn project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, @@ -50,6 +53,7 @@ } } } + #[doc(hidden)] #[inline] fn project_ref<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin Self>, diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,6 +3,7 @@ Struct { pinned1: T, pinned2: T, unpinned1: U, unpinned2: U }, Unit, } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::mut_mut)] @@ -22,6 +23,7 @@ #[allow(clippy::used_underscore_binding)] const _: () = { impl Enum { + #[doc(hidden)] #[inline] fn project_replace( self: ::pin_project_lite::__private::Pin<&mut Self>, diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,6 +5,7 @@ unpinned1: U, unpinned2: U, } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::mut_mut)] @@ -22,6 +23,7 @@ #[allow(clippy::redundant_pub_crate)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -38,6 +40,7 @@ unpinned1: &'__pin mut (U), unpinned2: &'__pin mut (U), } + #[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -55,6 +58,7 @@ unpinned2: &'__pin (U), } impl Struct { + #[doc(hidden)] #[inline] fn project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, @@ -70,6 +74,7 @@ } } } + #[doc(hidden)] #[inline] fn project_ref<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin Self>, @@ -84,6 +89,7 @@ } } } + #[doc(hidden)] #[inline] fn project_replace( self: ::pin_project_lite::__private::Pin<&mut Self>, diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,6 +3,7 @@ Struct { pinned: T, unpinned: U }, Unit, } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -20,6 +21,7 @@ }, Unit, } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -37,6 +39,7 @@ }, Unit, } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::mut_mut)] @@ -51,6 +54,7 @@ #[allow(clippy::used_underscore_binding)] const _: () = { impl Enum { + #[doc(hidden)] #[inline] fn project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, @@ -69,6 +73,7 @@ } } } + #[doc(hidden)] #[inline] fn project_ref<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin Self>, @@ -87,6 +92,7 @@ } } } + #[doc(hidden)] #[inline] fn project_replace( self: ::pin_project_lite::__private::Pin<&mut Self>, diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,6 +3,7 @@ Struct { pinned: T, unpinned: U }, Unit, } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -25,6 +26,7 @@ #[allow(clippy::used_underscore_binding)] const _: () = { impl Enum { + #[doc(hidden)] #[inline] fn project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,6 +3,7 @@ Struct { pinned: T, unpinned: U }, Unit, } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -25,6 +26,7 @@ #[allow(clippy::used_underscore_binding)] const _: () = { impl Enum { + #[doc(hidden)] #[inline] fn project_ref<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin Self>, diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,6 +3,7 @@ pinned: T, unpinned: U, } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -17,6 +18,7 @@ pinned: ::pin_project_lite::__private::Pin<&'__pin mut (T)>, unpinned: &'__pin mut (U), } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -31,6 +33,7 @@ pinned: ::pin_project_lite::__private::Pin<&'__pin (T)>, unpinned: &'__pin (U), } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::mut_mut)] @@ -47,6 +50,7 @@ #[allow(clippy::used_underscore_binding)] const _: () = { impl Struct { + #[doc(hidden)] #[inline] fn project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, @@ -59,6 +63,7 @@ } } } + #[doc(hidden)] #[inline] fn project_ref<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin Self>, @@ -71,6 +76,7 @@ } } } + #[doc(hidden)] #[inline] fn project_replace( self: ::pin_project_lite::__private::Pin<&mut Self>, diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,6 +3,7 @@ pinned: T, unpinned: U, } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -23,6 +24,7 @@ #[allow(clippy::redundant_pub_crate)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -38,6 +40,7 @@ unpinned: &'__pin (U), } impl Struct { + #[doc(hidden)] #[inline] fn project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, @@ -50,6 +53,7 @@ } } } + #[doc(hidden)] #[inline] fn project_ref<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin Self>, diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -9,6 +9,7 @@ #[allow(clippy::redundant_pub_crate)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -23,6 +24,7 @@ pinned: ::pin_project_lite::__private::Pin<&'__pin mut (T)>, unpinned: &'__pin mut (U), } + #[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -38,6 +40,7 @@ unpinned: &'__pin (U), } impl Struct { + #[doc(hidden)] #[inline] fn project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, @@ -50,6 +53,7 @@ } } } + #[doc(hidden)] #[inline] fn project_ref<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin Self>, diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,6 +3,7 @@ pinned: T, unpinned: U, } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -23,6 +24,7 @@ #[allow(clippy::redundant_pub_crate)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -38,6 +40,7 @@ unpinned: &'__pin mut (U), } impl Struct { + #[doc(hidden)] #[inline] fn project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, @@ -50,6 +53,7 @@ } } } + #[doc(hidden)] #[inline] fn project_ref<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin Self>, diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/not_unpin/enum.expanded.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/not_unpin/enum.expanded.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/not_unpin/enum.expanded.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/not_unpin/enum.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,99 @@ +use pin_project_lite::pin_project; +enum Enum { + Struct { pinned: T, unpinned: U }, + Unit, +} +#[doc(hidden)] +#[allow(dead_code)] +#[allow(single_use_lifetimes)] +#[allow(clippy::unknown_clippy_lints)] +#[allow(clippy::mut_mut)] +#[allow(clippy::redundant_pub_crate)] +#[allow(clippy::ref_option_ref)] +#[allow(clippy::type_repetition_in_bounds)] +enum EnumProj<'__pin, T, U> +where + Enum: '__pin, +{ + Struct { + pinned: ::pin_project_lite::__private::Pin<&'__pin mut (T)>, + unpinned: &'__pin mut (U), + }, + Unit, +} +#[doc(hidden)] +#[allow(dead_code)] +#[allow(single_use_lifetimes)] +#[allow(clippy::unknown_clippy_lints)] +#[allow(clippy::mut_mut)] +#[allow(clippy::redundant_pub_crate)] +#[allow(clippy::ref_option_ref)] +#[allow(clippy::type_repetition_in_bounds)] +enum EnumProjRef<'__pin, T, U> +where + Enum: '__pin, +{ + Struct { + pinned: ::pin_project_lite::__private::Pin<&'__pin (T)>, + unpinned: &'__pin (U), + }, + Unit, +} +#[allow(single_use_lifetimes)] +#[allow(clippy::unknown_clippy_lints)] +#[allow(clippy::used_underscore_binding)] +const _: () = { + impl Enum { + #[doc(hidden)] + #[inline] + fn project<'__pin>( + self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, + ) -> EnumProj<'__pin, T, U> { + unsafe { + match self.get_unchecked_mut() { + Self::Struct { pinned, unpinned } => { + EnumProj::Struct { + pinned: ::pin_project_lite::__private::Pin::new_unchecked( + pinned, + ), + unpinned: unpinned, + } + } + Self::Unit => EnumProj::Unit, + } + } + } + #[doc(hidden)] + #[inline] + fn project_ref<'__pin>( + self: ::pin_project_lite::__private::Pin<&'__pin Self>, + ) -> EnumProjRef<'__pin, T, U> { + unsafe { + match self.get_ref() { + Self::Struct { pinned, unpinned } => { + EnumProjRef::Struct { + pinned: ::pin_project_lite::__private::Pin::new_unchecked( + pinned, + ), + unpinned: unpinned, + } + } + Self::Unit => EnumProjRef::Unit, + } + } + } + } + #[doc(hidden)] + impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Enum + where + ( + ::core::marker::PhantomData<&'__pin ()>, + ::core::marker::PhantomPinned, + ): ::pin_project_lite::__private::Unpin, + {} + trait MustNotImplDrop {} + #[allow(clippy::drop_bounds, drop_bounds)] + impl MustNotImplDrop for T {} + impl MustNotImplDrop for Enum {} +}; +fn main() {} diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/not_unpin/enum.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/not_unpin/enum.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/not_unpin/enum.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/not_unpin/enum.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,17 @@ +use pin_project_lite::pin_project; + +pin_project! { + #[project(!Unpin)] + #[project = EnumProj] + #[project_ref = EnumProjRef] + enum Enum { + Struct { + #[pin] + pinned: T, + unpinned: U, + }, + Unit, + } +} + +fn main() {} diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/not_unpin/struct.expanded.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/not_unpin/struct.expanded.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/not_unpin/struct.expanded.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/not_unpin/struct.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,88 @@ +use pin_project_lite::pin_project; +struct Struct { + pinned: T, + unpinned: U, +} +#[doc(hidden)] +#[allow(dead_code)] +#[allow(single_use_lifetimes)] +#[allow(clippy::unknown_clippy_lints)] +#[allow(clippy::mut_mut)] +#[allow(clippy::redundant_pub_crate)] +#[allow(clippy::ref_option_ref)] +#[allow(clippy::type_repetition_in_bounds)] +struct StructProj<'__pin, T, U> +where + Struct: '__pin, +{ + pinned: ::pin_project_lite::__private::Pin<&'__pin mut (T)>, + unpinned: &'__pin mut (U), +} +#[doc(hidden)] +#[allow(dead_code)] +#[allow(single_use_lifetimes)] +#[allow(clippy::unknown_clippy_lints)] +#[allow(clippy::mut_mut)] +#[allow(clippy::redundant_pub_crate)] +#[allow(clippy::ref_option_ref)] +#[allow(clippy::type_repetition_in_bounds)] +struct StructProjRef<'__pin, T, U> +where + Struct: '__pin, +{ + pinned: ::pin_project_lite::__private::Pin<&'__pin (T)>, + unpinned: &'__pin (U), +} +#[allow(explicit_outlives_requirements)] +#[allow(single_use_lifetimes)] +#[allow(clippy::unknown_clippy_lints)] +#[allow(clippy::redundant_pub_crate)] +#[allow(clippy::used_underscore_binding)] +const _: () = { + impl Struct { + #[doc(hidden)] + #[inline] + fn project<'__pin>( + self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, + ) -> StructProj<'__pin, T, U> { + unsafe { + let Self { pinned, unpinned } = self.get_unchecked_mut(); + StructProj { + pinned: ::pin_project_lite::__private::Pin::new_unchecked(pinned), + unpinned: unpinned, + } + } + } + #[doc(hidden)] + #[inline] + fn project_ref<'__pin>( + self: ::pin_project_lite::__private::Pin<&'__pin Self>, + ) -> StructProjRef<'__pin, T, U> { + unsafe { + let Self { pinned, unpinned } = self.get_ref(); + StructProjRef { + pinned: ::pin_project_lite::__private::Pin::new_unchecked(pinned), + unpinned: unpinned, + } + } + } + } + #[doc(hidden)] + impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Struct + where + ( + ::core::marker::PhantomData<&'__pin ()>, + ::core::marker::PhantomPinned, + ): ::pin_project_lite::__private::Unpin, + {} + trait MustNotImplDrop {} + #[allow(clippy::drop_bounds, drop_bounds)] + impl MustNotImplDrop for T {} + impl MustNotImplDrop for Struct {} + #[forbid(unaligned_references, safe_packed_borrows)] + fn __assert_not_repr_packed(this: &Struct) { + let _ = &this.pinned; + let _ = &this.unpinned; + } +}; +fn main() {} diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/not_unpin/struct.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/not_unpin/struct.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/not_unpin/struct.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/not_unpin/struct.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,14 @@ +use pin_project_lite::pin_project; + +pin_project! { + #[project = StructProj] + #[project(!Unpin)] + #[project_ref = StructProjRef] + struct Struct { + #[pin] + pinned: T, + unpinned: U, + } +} + +fn main() {} diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,6 +4,7 @@ Struct { pinned: T, unpinned: U }, Unit, } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -21,6 +22,7 @@ }, Unit, } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -43,6 +45,7 @@ #[allow(clippy::used_underscore_binding)] const _: () = { impl Enum { + #[doc(hidden)] #[inline] fn project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, @@ -61,6 +64,7 @@ } } } + #[doc(hidden)] #[inline] fn project_ref<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin Self>, diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -10,6 +10,7 @@ #[allow(clippy::redundant_pub_crate)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -24,6 +25,7 @@ pinned: ::pin_project_lite::__private::Pin<&'__pin mut (T)>, unpinned: &'__pin mut (U), } + #[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -39,6 +41,7 @@ unpinned: &'__pin (U), } impl Struct { + #[doc(hidden)] #[inline] fn project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, @@ -51,6 +54,7 @@ } } } + #[doc(hidden)] #[inline] fn project_ref<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin Self>, diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,6 +3,7 @@ Struct { pinned: T, unpinned: U }, Unit, } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -20,6 +21,7 @@ }, Unit, } +#[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -42,6 +44,7 @@ #[allow(clippy::used_underscore_binding)] const _: () = { impl Enum { + #[doc(hidden)] #[inline] pub(crate) fn project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, @@ -60,6 +63,7 @@ } } } + #[doc(hidden)] #[inline] pub(crate) fn project_ref<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin Self>, diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs temporalio-1.3.0/vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -9,6 +9,7 @@ #[allow(clippy::redundant_pub_crate)] #[allow(clippy::used_underscore_binding)] const _: () = { + #[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -23,6 +24,7 @@ pub pinned: ::pin_project_lite::__private::Pin<&'__pin mut (T)>, pub unpinned: &'__pin mut (U), } + #[doc(hidden)] #[allow(dead_code)] #[allow(single_use_lifetimes)] #[allow(clippy::unknown_clippy_lints)] @@ -38,6 +40,7 @@ pub unpinned: &'__pin (U), } impl Struct { + #[doc(hidden)] #[inline] pub(crate) fn project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, @@ -50,6 +53,7 @@ } } } + #[doc(hidden)] #[inline] pub(crate) fn project_ref<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin Self>, diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/lint.rs temporalio-1.3.0/vendor/pin-project-lite/tests/lint.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/lint.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/lint.rs 2023-10-30 19:40:00.000000000 +0000 @@ -10,7 +10,7 @@ // lints forbidden as a part of future_incompatible, rust_2018_compatibility, and rust_2021_compatibility are not included in the list below. // elided_lifetimes_in_paths, explicit_outlives_requirements, unused_extern_crates: as a part of rust_2018_idioms // unsafe_op_in_unsafe_fn: requires Rust 1.52. and, we don't generate unsafe fn. -// non_exhaustive_omitted_patterns: unstable +// non_exhaustive_omitted_patterns, multiple_supertrait_upcastable: unstable // unstable_features: no way to generate #![feature(..)] by macros, expect for unstable inner attribute. and this lint is deprecated: https://doc.rust-lang.org/rustc/lints/listing/allowed-by-default.html#unstable-features // unused_crate_dependencies, must_not_suspend: unrelated // unsafe_code: checked in forbid_unsafe module @@ -18,6 +18,7 @@ box_pointers, deprecated_in_future, fuzzy_provenance_casts, + invalid_reference_casting, let_underscore_drop, lossy_provenance_casts, macro_use_extern_crate, @@ -44,7 +45,12 @@ )] #![warn(clippy::all, clippy::pedantic, clippy::nursery, clippy::restriction)] #![allow(clippy::blanket_clippy_restriction_lints)] // this is a test, so enable all restriction lints intentionally. -#![allow(clippy::exhaustive_structs, clippy::exhaustive_enums, clippy::single_char_lifetime_names)] // TODO +#![allow( + clippy::exhaustive_enums, + clippy::exhaustive_structs, + clippy::min_ident_chars, + clippy::single_char_lifetime_names +)] // TODO pub mod basic { include!("include/basic.rs"); @@ -65,6 +71,7 @@ pin_project! { #[project = EnumProj] #[project_ref = EnumProjRef] + #[project(!Unpin)] #[derive(Debug)] pub enum Enum { Struct { @@ -96,6 +103,7 @@ pin_project! { #[project = EnumProj] #[project_ref = EnumProjRef] + #[project(!Unpin)] #[derive(Debug)] pub enum Enum<'a, T, U> where @@ -118,6 +126,7 @@ pin_project! { #[project = EnumProj] #[project_ref = EnumProjRef] + #[project(!Unpin)] #[allow(missing_debug_implementations, missing_copy_implementations)] // https://github.com/rust-lang/rust/pull/74060 #[allow(variant_size_differences)] // for the type itself #[allow(clippy::large_enum_variant)] // for the type itself @@ -143,6 +152,7 @@ pin_project! { #[project = EnumProj] #[project_ref = EnumProjRef] + #[project(!Unpin)] #[derive(Debug)] pub enum Enum<'a, T, U> { Struct { @@ -171,6 +181,7 @@ pin_project! { #[project = EnumProj] #[project_ref = EnumProjRef] + #[project(!Unpin)] #[derive(Debug)] pub enum Enum { Struct { @@ -202,6 +213,7 @@ pin_project! { #[project = EnumProj] #[project_ref = EnumProjRef] + #[project(!Unpin)] #[derive(Debug)] pub enum Enum where @@ -232,6 +244,7 @@ pin_project! { #[project = EnumProj] #[project_ref = EnumProjRef] + #[project(!Unpin)] pub enum Enum { Struct { #[pin] @@ -256,6 +269,7 @@ pin_project! { #[project = EnumProj] #[project_ref = EnumProjRef] + #[project(!Unpin)] pub enum Enum<'a> { Struct { #[pin] diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/proper_unpin.rs temporalio-1.3.0/vendor/pin-project-lite/tests/proper_unpin.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/proper_unpin.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/proper_unpin.rs 2023-10-30 19:40:00.000000000 +0000 @@ -47,6 +47,18 @@ assert_not_unpin!(Enum); pin_project! { + #[project(!Unpin)] + enum NotUnpinEnum { + V1 { + #[pin] f1: Inner, + f2: U, + } + } + } + + assert_not_unpin!(NotUnpinEnum<(), ()>); + + pin_project! { struct TrivialBounds { #[pin] f: PhantomPinned, @@ -64,4 +76,25 @@ } assert_unpin!(PinRef<'_, PhantomPinned, PhantomPinned>); + + pin_project! { + #[project(!Unpin)] + struct NotUnpin { + #[pin] + u: U + } + } + + assert_not_unpin!(NotUnpin<()>); + + pin_project! { + #[project(!Unpin)] + struct NotUnpinRef<'a, T, U> { + #[pin] + f1: &'a mut Inner, + f2: U + } + } + + assert_not_unpin!(NotUnpinRef<'_, (), ()>); } diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/test.rs temporalio-1.3.0/vendor/pin-project-lite/tests/test.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/test.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/test.rs 2023-10-30 19:40:00.000000000 +0000 @@ -616,6 +616,7 @@ pin_project! { /// dox1 #[derive(Clone)] + #[project(!Unpin)] #[project = Enum2Proj] #[project_ref = Enum2ProjRef] /// dox2 diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/ui/pin_project/conflict-unpin.rs temporalio-1.3.0/vendor/pin-project-lite/tests/ui/pin_project/conflict-unpin.rs --- temporalio-1.3.0/vendor/pin-project-lite/tests/ui/pin_project/conflict-unpin.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/ui/pin_project/conflict-unpin.rs 2023-10-30 19:40:00.000000000 +0000 @@ -37,4 +37,28 @@ // conflicting implementations impl Unpin for Baz {} // Conditional Unpin impl +pin_project! { //~ ERROR E0119 + #[project(!Unpin)] + struct Qux { + #[pin] + future: T, + field: U, + } +} + +// conflicting implementations +impl Unpin for Qux {} // Non-conditional Unpin impl + +pin_project! { //~ ERROR E0119 + #[project(!Unpin)] + struct Fred { + #[pin] + future: T, + field: U, + } +} + +// conflicting implementations +impl Unpin for Fred {} // Conditional Unpin impl + fn main() {} diff -Nru temporalio-1.3.0/vendor/pin-project-lite/tests/ui/pin_project/conflict-unpin.stderr temporalio-1.3.0/vendor/pin-project-lite/tests/ui/pin_project/conflict-unpin.stderr --- temporalio-1.3.0/vendor/pin-project-lite/tests/ui/pin_project/conflict-unpin.stderr 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/pin-project-lite/tests/ui/pin_project/conflict-unpin.stderr 2023-10-30 19:40:00.000000000 +0000 @@ -48,3 +48,37 @@ | -------------------------------------------- first implementation here | = note: this error originates in the macro `$crate::__pin_project_make_unpin_impl` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info) + +error[E0119]: conflicting implementations of trait `Unpin` for type `Qux<_, _>` + --> tests/ui/pin_project/conflict-unpin.rs:40:1 + | +40 | / pin_project! { //~ ERROR E0119 +41 | | #[project(!Unpin)] +42 | | struct Qux { +43 | | #[pin] +... | +46 | | } +47 | | } + | |_^ conflicting implementation for `Qux<_, _>` +... +50 | impl Unpin for Qux {} // Non-conditional Unpin impl + | ------------------------------ first implementation here + | + = note: this error originates in the macro `$crate::__pin_project_make_unpin_impl` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info) + +error[E0119]: conflicting implementations of trait `Unpin` for type `Fred<_, _>` + --> tests/ui/pin_project/conflict-unpin.rs:52:1 + | +52 | / pin_project! { //~ ERROR E0119 +53 | | #[project(!Unpin)] +54 | | struct Fred { +55 | | #[pin] +... | +58 | | } +59 | | } + | |_^ conflicting implementation for `Fred<_, _>` +... +62 | impl Unpin for Fred {} // Conditional Unpin impl + | --------------------------------------------- first implementation here + | + = note: this error originates in the macro `$crate::__pin_project_make_unpin_impl` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info) diff -Nru temporalio-1.3.0/vendor/proc-macro2/build.rs temporalio-1.3.0/vendor/proc-macro2/build.rs --- temporalio-1.3.0/vendor/proc-macro2/build.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/proc-macro2/build.rs 2023-10-30 19:40:00.000000000 +0000 @@ -35,7 +35,7 @@ // 1.57+. use std::env; -use std::process::{self, Command}; +use std::process::Command; use std::str; use std::u32; @@ -47,11 +47,6 @@ nightly: false, }); - if version.minor < 31 { - eprintln!("Minimum supported rustc version is 1.31"); - process::exit(1); - } - let docs_rs = env::var_os("DOCS_RS").is_some(); let semver_exempt = cfg!(procmacro2_semver_exempt) || docs_rs; if semver_exempt { @@ -63,38 +58,6 @@ println!("cargo:rustc-cfg=span_locations"); } - if version.minor < 32 { - println!("cargo:rustc-cfg=no_libprocmacro_unwind_safe"); - } - - if version.minor < 34 { - println!("cargo:rustc-cfg=no_try_from"); - } - - if version.minor < 39 { - println!("cargo:rustc-cfg=no_bind_by_move_pattern_guard"); - } - - if version.minor < 44 { - println!("cargo:rustc-cfg=no_lexerror_display"); - } - - if version.minor < 45 { - println!("cargo:rustc-cfg=no_hygiene"); - } - - if version.minor < 47 { - println!("cargo:rustc-cfg=no_ident_new_raw"); - } - - if version.minor < 54 { - println!("cargo:rustc-cfg=no_literal_from_str"); - } - - if version.minor < 55 { - println!("cargo:rustc-cfg=no_group_open_close"); - } - if version.minor < 57 { println!("cargo:rustc-cfg=no_is_available"); } diff -Nru temporalio-1.3.0/vendor/proc-macro2/.cargo-checksum.json temporalio-1.3.0/vendor/proc-macro2/.cargo-checksum.json --- temporalio-1.3.0/vendor/proc-macro2/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/proc-macro2/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"f9031be6be9faf64d9e661368dc9f077cab2153f6e21018012137cba916f36fa","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"32cbd395594db59ecc43d7866cfa2663f3687bb7df631781d60ae83200dae8a8","build.rs":"460c398e94aa491fa8c9242da0c6956fd7565f646a7b5fc6c971adbd79a206aa","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/convert.rs":"0f8e0f472e49e0be79e65654065a752df1ac9ad55da43952ee7c86cb56940171","src/detection.rs":"ed9a5f9a979ab01247d7a68eeb1afa3c13209334c5bfff0f9289cb07e5bb4e8b","src/extra.rs":"3447c89e4d83a94ebdf3599adb64050b92502da2a1f99a5cf36706e52d2c56dc","src/fallback.rs":"a39b97b39fd3b9b1734767a948b7d2b5e3cf272cebae8c951d25f9124705fbfa","src/lib.rs":"18b3f2ab75ab0f37cb1f6256db8196d8aaf08b1030869daacfc970594e7d6430","src/location.rs":"f55d2e61f1bb1af65e14ed04c9e91eb1ddbf8430e8c05f2048d1cd538d27368e","src/marker.rs":"344a8394f06a1d43355b514920e7e3c0c6dce507be767e3a590bbe3552edd110","src/parse.rs":"6aebef1d7aeebb570ac5ffea5e2e9078e74be84c28d847f43d6e3000694c26ee","src/rcvec.rs":"6233164ae0afc5c74ddc9e27c7869ec523385a3e5bdb83c3662841e78af14982","src/wrapper.rs":"5b98af7cf798641d13fc2c5ff87cbcf3e5628710dbd90db6986fbfb649c7a429","tests/comments.rs":"31115b3a56c83d93eef2fb4c9566bf4543e302560732986161b98aef504785ed","tests/features.rs":"a86deb8644992a4eb64d9fd493eff16f9cf9c5cb6ade3a634ce0c990cf87d559","tests/marker.rs":"bc86b7260e29dfc8cd3e01b0d3fb9e88f17442dc83235f264e8cacc5ab4fe23d","tests/test.rs":"428e46ff58fd87395b4b11be662e9e7ebd46c2ebdaeaf9087d20c42bba3754f0","tests/test_fmt.rs":"9357769945784354909259084ec8b34d2aa52081dd3967cac6dae3a5e3df3bc0","tests/test_size.rs":"acf05963c1e62052d769d237b50844a2c59b4182b491231b099a4f74e5456ab0"},"package":"7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb"} \ No newline at end of file +{"files":{"Cargo.toml":"a60eadb453036fc5f0313f0a7bf0c973609209b3c9de07a166581cd3615302fe","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"690809ae2c2aa28e479bc38a7c296924b9a4c8b6a689c7b62a4f33ae834ffca9","build.rs":"6b0b19a3af5248513b186b9c28c133f5af34a1d11122c0268c68e89724aa40fa","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/detection.rs":"ed9a5f9a979ab01247d7a68eeb1afa3c13209334c5bfff0f9289cb07e5bb4e8b","src/extra.rs":"d378a9e799e5c49933b067cd38f5364d16a152ef337eef86ce42fdc86005ddf3","src/fallback.rs":"2d3be80c4df730c2400f9b4fa953640c78b7701ac09823c0a007bfe0343dbc1e","src/lib.rs":"fb19025556ba827c8cc5dc4fe4840137e1ffe51476ead385e2b99d7939a1d733","src/location.rs":"f55d2e61f1bb1af65e14ed04c9e91eb1ddbf8430e8c05f2048d1cd538d27368e","src/marker.rs":"43f5a18f5059f1a16507c047b3b7387afee7f25ac45ba4eb1621ca7fa733eb01","src/parse.rs":"08af3478a0d9e5252c2e7a4968cb2837d3b8d23606cf67c662eb9e008c9e1cee","src/rcvec.rs":"1c3c48c4f819927cc445ae15ca3bb06775feff2fd1cb21901ae4c40c7e6b4e82","src/wrapper.rs":"06624150b94f4fd9ada30b2c9ad6936ea695d05c2138ceb14f2304e757133d52","tests/comments.rs":"31115b3a56c83d93eef2fb4c9566bf4543e302560732986161b98aef504785ed","tests/features.rs":"a86deb8644992a4eb64d9fd493eff16f9cf9c5cb6ade3a634ce0c990cf87d559","tests/marker.rs":"3190ee07dae510251f360db701ce257030f94a479b6689c3a9ef804bd5d8d099","tests/test.rs":"b6190b112f4fc15916d6ee6c9b51bbeff825e5fc807b37fd21cc1b119dd76a24","tests/test_fmt.rs":"b7743b612af65f2c88cbe109d50a093db7aa7e87f9e37bf45b7bbaeb240aa020","tests/test_size.rs":"acf05963c1e62052d769d237b50844a2c59b4182b491231b099a4f74e5456ab0"},"package":"18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/proc-macro2/Cargo.toml temporalio-1.3.0/vendor/proc-macro2/Cargo.toml --- temporalio-1.3.0/vendor/proc-macro2/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/proc-macro2/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,10 +10,10 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" -rust-version = "1.31" +edition = "2021" +rust-version = "1.56" name = "proc-macro2" -version = "1.0.63" +version = "1.0.66" authors = [ "David Tolnay ", "Alex Crichton ", @@ -40,6 +40,7 @@ "procmacro2_semver_exempt", "--cfg", "doc_cfg", + "--generate-link-to-definition", ] targets = ["x86_64-unknown-linux-gnu"] diff -Nru temporalio-1.3.0/vendor/proc-macro2/README.md temporalio-1.3.0/vendor/proc-macro2/README.md --- temporalio-1.3.0/vendor/proc-macro2/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/proc-macro2/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -62,7 +62,7 @@ To opt into the additional APIs available in the most recent nightly compiler, the `procmacro2_semver_exempt` config flag must be passed to rustc. We will -polyfill those nightly-only APIs back to Rust 1.31.0. As these are unstable APIs +polyfill those nightly-only APIs back to Rust 1.56.0. As these are unstable APIs that track the nightly compiler, minor versions of proc-macro2 may make breaking changes to them at any time. diff -Nru temporalio-1.3.0/vendor/proc-macro2/src/convert.rs temporalio-1.3.0/vendor/proc-macro2/src/convert.rs --- temporalio-1.3.0/vendor/proc-macro2/src/convert.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/proc-macro2/src/convert.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -pub(crate) fn usize_to_u32(u: usize) -> Option { - #[cfg(not(no_try_from))] - { - use core::convert::TryFrom; - - u32::try_from(u).ok() - } - - #[cfg(no_try_from)] - { - use core::mem; - - if mem::size_of::() <= mem::size_of::() || u <= u32::max_value() as usize { - Some(u as u32) - } else { - None - } - } -} diff -Nru temporalio-1.3.0/vendor/proc-macro2/src/extra.rs temporalio-1.3.0/vendor/proc-macro2/src/extra.rs --- temporalio-1.3.0/vendor/proc-macro2/src/extra.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/proc-macro2/src/extra.rs 2023-10-30 19:40:00.000000000 +0000 @@ -22,9 +22,7 @@ #[cfg(wrap_proc_macro)] Compiler { join: proc_macro::Span, - #[cfg(not(no_group_open_close))] open: proc_macro::Span, - #[cfg(not(no_group_open_close))] close: proc_macro::Span, }, Fallback(fallback::Span), @@ -36,9 +34,7 @@ let inner = match group { imp::Group::Compiler(group) => DelimSpanEnum::Compiler { join: group.span(), - #[cfg(not(no_group_open_close))] open: group.span_open(), - #[cfg(not(no_group_open_close))] close: group.span_close(), }, imp::Group::Fallback(group) => DelimSpanEnum::Fallback(group.span()), @@ -66,13 +62,7 @@ pub fn open(&self) -> Span { match &self.inner { #[cfg(wrap_proc_macro)] - DelimSpanEnum::Compiler { - #[cfg(not(no_group_open_close))] - open, - #[cfg(no_group_open_close)] - join: open, - .. - } => Span::_new(imp::Span::Compiler(*open)), + DelimSpanEnum::Compiler { open, .. } => Span::_new(imp::Span::Compiler(*open)), DelimSpanEnum::Fallback(span) => Span::_new_fallback(span.first_byte()), } } @@ -81,13 +71,7 @@ pub fn close(&self) -> Span { match &self.inner { #[cfg(wrap_proc_macro)] - DelimSpanEnum::Compiler { - #[cfg(not(no_group_open_close))] - close, - #[cfg(no_group_open_close)] - join: close, - .. - } => Span::_new(imp::Span::Compiler(*close)), + DelimSpanEnum::Compiler { close, .. } => Span::_new(imp::Span::Compiler(*close)), DelimSpanEnum::Fallback(span) => Span::_new_fallback(span.last_byte()), } } diff -Nru temporalio-1.3.0/vendor/proc-macro2/src/fallback.rs temporalio-1.3.0/vendor/proc-macro2/src/fallback.rs --- temporalio-1.3.0/vendor/proc-macro2/src/fallback.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/proc-macro2/src/fallback.rs 2023-10-30 19:40:00.000000000 +0000 @@ -8,7 +8,6 @@ #[cfg(span_locations)] use core::cmp; use core::fmt::{self, Debug, Display, Write}; -use core::iter::FromIterator; use core::mem::ManuallyDrop; use core::ops::RangeBounds; use core::ptr; @@ -71,7 +70,6 @@ fn push_token_from_proc_macro(mut vec: RcVecMut, token: TokenTree) { // https://github.com/dtolnay/proc-macro2/issues/235 match token { - #[cfg(not(no_bind_by_move_pattern_guard))] TokenTree::Literal(crate::Literal { #[cfg(wrap_proc_macro)] inner: crate::imp::Literal::Fallback(literal), @@ -81,20 +79,6 @@ }) if literal.repr.starts_with('-') => { push_negative_literal(vec, literal); } - #[cfg(no_bind_by_move_pattern_guard)] - TokenTree::Literal(crate::Literal { - #[cfg(wrap_proc_macro)] - inner: crate::imp::Literal::Fallback(literal), - #[cfg(not(wrap_proc_macro))] - inner: literal, - .. - }) => { - if literal.repr.starts_with('-') { - push_negative_literal(vec, literal); - } else { - vec.push(TokenTree::Literal(crate::Literal::_new_fallback(literal))); - } - } _ => vec.push(token), } @@ -479,7 +463,6 @@ Span { lo: 0, hi: 0 } } - #[cfg(not(no_hygiene))] pub fn mixed_site() -> Self { Span::call_site() } @@ -769,7 +752,7 @@ panic!("Ident is not allowed to be empty; use Option"); } - if string.bytes().all(|digit| digit >= b'0' && digit <= b'9') { + if string.bytes().all(|digit| b'0' <= digit && digit <= b'9') { panic!("Ident cannot be a number; use Literal instead"); } @@ -1020,27 +1003,26 @@ #[cfg(span_locations)] { - use crate::convert::usize_to_u32; use core::ops::Bound; let lo = match range.start_bound() { Bound::Included(start) => { - let start = usize_to_u32(*start)?; + let start = u32::try_from(*start).ok()?; self.span.lo.checked_add(start)? } Bound::Excluded(start) => { - let start = usize_to_u32(*start)?; + let start = u32::try_from(*start).ok()?; self.span.lo.checked_add(start)?.checked_add(1)? } Bound::Unbounded => self.span.lo, }; let hi = match range.end_bound() { Bound::Included(end) => { - let end = usize_to_u32(*end)?; + let end = u32::try_from(*end).ok()?; self.span.lo.checked_add(end)?.checked_add(1)? } Bound::Excluded(end) => { - let end = usize_to_u32(*end)?; + let end = u32::try_from(*end).ok()?; self.span.lo.checked_add(end)? } Bound::Unbounded => self.span.hi, diff -Nru temporalio-1.3.0/vendor/proc-macro2/src/lib.rs temporalio-1.3.0/vendor/proc-macro2/src/lib.rs --- temporalio-1.3.0/vendor/proc-macro2/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/proc-macro2/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -65,7 +65,7 @@ //! //! To opt into the additional APIs available in the most recent nightly //! compiler, the `procmacro2_semver_exempt` config flag must be passed to -//! rustc. We will polyfill those nightly-only APIs back to Rust 1.31.0. As +//! rustc. We will polyfill those nightly-only APIs back to Rust 1.56.0. As //! these are unstable APIs that track the nightly compiler, minor versions of //! proc-macro2 may make breaking changes to them at any time. //! @@ -86,7 +86,7 @@ //! a different thread. // Proc-macro2 types in rustdoc of other crates get linked to here. -#![doc(html_root_url = "https://docs.rs/proc-macro2/1.0.63")] +#![doc(html_root_url = "https://docs.rs/proc-macro2/1.0.66")] #![cfg_attr(any(proc_macro_span, super_unstable), feature(proc_macro_span))] #![cfg_attr(super_unstable, feature(proc_macro_def_site))] #![cfg_attr(doc_cfg, feature(doc_cfg))] @@ -97,6 +97,7 @@ clippy::items_after_statements, clippy::let_underscore_untyped, clippy::manual_assert, + clippy::manual_range_contains, clippy::must_use_candidate, clippy::needless_doctest_main, clippy::new_without_default, @@ -117,6 +118,8 @@ build script as well. "} +extern crate alloc; + #[cfg(feature = "proc-macro")] extern crate proc_macro; @@ -141,8 +144,6 @@ mod imp; #[cfg(span_locations)] -mod convert; -#[cfg(span_locations)] mod location; use crate::extra::DelimSpan; @@ -150,7 +151,6 @@ use core::cmp::Ordering; use core::fmt::{self, Debug, Display}; use core::hash::{Hash, Hasher}; -use core::iter::FromIterator; use core::ops::RangeBounds; use core::str::FromStr; use std::error::Error; @@ -402,9 +402,6 @@ /// The span located at the invocation of the procedural macro, but with /// local variables, labels, and `$crate` resolved at the definition site /// of the macro. This is the same hygiene behavior as `macro_rules`. - /// - /// This function requires Rust 1.45 or later. - #[cfg(not(no_hygiene))] pub fn mixed_site() -> Self { Span::_new(imp::Span::mixed_site()) } diff -Nru temporalio-1.3.0/vendor/proc-macro2/src/marker.rs temporalio-1.3.0/vendor/proc-macro2/src/marker.rs --- temporalio-1.3.0/vendor/proc-macro2/src/marker.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/proc-macro2/src/marker.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ +use alloc::rc::Rc; use core::marker::PhantomData; -use std::panic::{RefUnwindSafe, UnwindSafe}; -use std::rc::Rc; +use core::panic::{RefUnwindSafe, UnwindSafe}; // Zero sized marker with the correct set of autotrait impls we want all proc // macro types to have. diff -Nru temporalio-1.3.0/vendor/proc-macro2/src/parse.rs temporalio-1.3.0/vendor/proc-macro2/src/parse.rs --- temporalio-1.3.0/vendor/proc-macro2/src/parse.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/proc-macro2/src/parse.rs 2023-10-30 19:40:00.000000000 +0000 @@ -104,15 +104,11 @@ } } match byte { - b' ' | 0x09..=0x0c => { + b' ' | 0x09..=0x0d => { s = s.advance(1); continue; } - b'\r' if s.as_bytes().get(1) == Some(&b'\n') => { - s = s.advance(2); - continue; - } - b if b <= 0x7f => {} + b if b.is_ascii() => {} _ => { let ch = s.chars().next().unwrap(); if is_whitespace(ch) { @@ -388,12 +384,11 @@ Some((_, 'x')) => { backslash_x_char(&mut chars)?; } - Some((_, 'n')) | Some((_, 'r')) | Some((_, 't')) | Some((_, '\\')) - | Some((_, '\'')) | Some((_, '"')) | Some((_, '0')) => {} + Some((_, 'n' | 'r' | 't' | '\\' | '\'' | '"' | '0')) => {} Some((_, 'u')) => { backslash_u(&mut chars)?; } - Some((newline, ch @ '\n')) | Some((newline, ch @ '\r')) => { + Some((newline, ch @ ('\n' | '\r'))) => { input = input.advance(newline + 1); trailing_backslash(&mut input, ch as u8)?; chars = input.char_indices(); @@ -451,16 +446,15 @@ Some((_, b'x')) => { backslash_x_byte(&mut bytes)?; } - Some((_, b'n')) | Some((_, b'r')) | Some((_, b't')) | Some((_, b'\\')) - | Some((_, b'0')) | Some((_, b'\'')) | Some((_, b'"')) => {} - Some((newline, b @ b'\n')) | Some((newline, b @ b'\r')) => { + Some((_, b'n' | b'r' | b't' | b'\\' | b'0' | b'\'' | b'"')) => {} + Some((newline, b @ (b'\n' | b'\r'))) => { input = input.advance(newline + 1); trailing_backslash(&mut input, b)?; bytes = input.bytes().enumerate(); } _ => break, }, - b if b < 0x80 => {} + b if b.is_ascii() => {} _ => break, } } @@ -554,14 +548,13 @@ Some((_, 'x')) => { backslash_x_nonzero(&mut chars)?; } - Some((_, 'n')) | Some((_, 'r')) | Some((_, 't')) | Some((_, '\\')) - | Some((_, '\'')) | Some((_, '"')) => {} + Some((_, 'n' | 'r' | 't' | '\\' | '\'' | '"')) => {} Some((_, 'u')) => { if backslash_u(&mut chars)? == '\0' { break; } } - Some((newline, ch @ '\n')) | Some((newline, ch @ '\r')) => { + Some((newline, ch @ ('\n' | '\r'))) => { input = input.advance(newline + 1); trailing_backslash(&mut input, ch as u8)?; chars = input.char_indices(); @@ -581,8 +574,7 @@ let ok = match bytes.next().map(|(_, b)| b) { Some(b'\\') => match bytes.next().map(|(_, b)| b) { Some(b'x') => backslash_x_byte(&mut bytes).is_ok(), - Some(b'n') | Some(b'r') | Some(b't') | Some(b'\\') | Some(b'0') | Some(b'\'') - | Some(b'"') => true, + Some(b'n' | b'r' | b't' | b'\\' | b'0' | b'\'' | b'"') => true, _ => false, }, b => b.is_some(), @@ -605,9 +597,7 @@ Some('\\') => match chars.next().map(|(_, ch)| ch) { Some('x') => backslash_x_char(&mut chars).is_ok(), Some('u') => backslash_u(&mut chars).is_ok(), - Some('n') | Some('r') | Some('t') | Some('\\') | Some('0') | Some('\'') | Some('"') => { - true - } + Some('n' | 'r' | 't' | '\\' | '0' | '\'' | '"') => true, _ => false, }, ch => ch.is_some(), @@ -621,10 +611,10 @@ } macro_rules! next_ch { - ($chars:ident @ $pat:pat $(| $rest:pat)*) => { + ($chars:ident @ $pat:pat) => { match $chars.next() { Some((_, ch)) => match ch { - $pat $(| $rest)* => ch, + $pat => ch, _ => return Err(Reject), }, None => return Err(Reject), @@ -696,8 +686,7 @@ return Err(Reject); } match whitespace.next() { - Some((_, b @ b' ')) | Some((_, b @ b'\t')) | Some((_, b @ b'\n')) - | Some((_, b @ b'\r')) => { + Some((_, b @ (b' ' | b'\t' | b'\n' | b'\r'))) => { last = b; } Some((offset, _)) => { @@ -722,7 +711,7 @@ fn float_digits(input: Cursor) -> Result { let mut chars = input.chars().peekable(); match chars.next() { - Some(ch) if ch >= '0' && ch <= '9' => {} + Some(ch) if '0' <= ch && ch <= '9' => {} _ => return Err(Reject), } diff -Nru temporalio-1.3.0/vendor/proc-macro2/src/rcvec.rs temporalio-1.3.0/vendor/proc-macro2/src/rcvec.rs --- temporalio-1.3.0/vendor/proc-macro2/src/rcvec.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/proc-macro2/src/rcvec.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,8 @@ +use alloc::rc::Rc; +use alloc::vec; use core::mem; +use core::panic::RefUnwindSafe; use core::slice; -use std::panic::RefUnwindSafe; -use std::rc::Rc; -use std::vec; pub(crate) struct RcVec { inner: Rc>, @@ -53,7 +53,7 @@ T: Clone, { let vec = if let Some(owned) = Rc::get_mut(&mut self.inner) { - mem::replace(owned, Vec::new()) + mem::take(owned) } else { Vec::clone(&self.inner) }; diff -Nru temporalio-1.3.0/vendor/proc-macro2/src/wrapper.rs temporalio-1.3.0/vendor/proc-macro2/src/wrapper.rs --- temporalio-1.3.0/vendor/proc-macro2/src/wrapper.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/proc-macro2/src/wrapper.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,7 +3,6 @@ use crate::location::LineColumn; use crate::{fallback, Delimiter, Punct, Spacing, TokenTree}; use core::fmt::{self, Debug, Display}; -use core::iter::FromIterator; use core::ops::RangeBounds; use core::str::FromStr; use std::panic; @@ -286,15 +285,7 @@ impl Display for LexError { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match self { - #[cfg(not(no_lexerror_display))] LexError::Compiler(e) => Display::fmt(e, f), - #[cfg(no_lexerror_display)] - LexError::Compiler(_e) => Display::fmt( - &fallback::LexError { - span: fallback::Span::call_site(), - }, - f, - ), LexError::Fallback(e) => Display::fmt(e, f), } } @@ -406,7 +397,6 @@ } } - #[cfg(not(no_hygiene))] pub fn mixed_site() -> Self { if inside_proc_macro() { Span::Compiler(proc_macro::Span::mixed_site()) @@ -426,13 +416,7 @@ pub fn resolved_at(&self, other: Span) -> Span { match (self, other) { - #[cfg(not(no_hygiene))] (Span::Compiler(a), Span::Compiler(b)) => Span::Compiler(a.resolved_at(b)), - - // Name resolution affects semantics, but location is only cosmetic - #[cfg(no_hygiene)] - (Span::Compiler(_), Span::Compiler(_)) => other, - (Span::Fallback(a), Span::Fallback(b)) => Span::Fallback(a.resolved_at(b)), _ => mismatch(), } @@ -440,13 +424,7 @@ pub fn located_at(&self, other: Span) -> Span { match (self, other) { - #[cfg(not(no_hygiene))] (Span::Compiler(a), Span::Compiler(b)) => Span::Compiler(a.located_at(b)), - - // Name resolution affects semantics, but location is only cosmetic - #[cfg(no_hygiene)] - (Span::Compiler(_), Span::Compiler(_)) => *self, - (Span::Fallback(a), Span::Fallback(b)) => Span::Fallback(a.located_at(b)), _ => mismatch(), } @@ -602,20 +580,14 @@ pub fn span_open(&self) -> Span { match self { - #[cfg(not(no_group_open_close))] Group::Compiler(g) => Span::Compiler(g.span_open()), - #[cfg(no_group_open_close)] - Group::Compiler(g) => Span::Compiler(g.span()), Group::Fallback(g) => Span::Fallback(g.span_open()), } } pub fn span_close(&self) -> Span { match self { - #[cfg(not(no_group_open_close))] Group::Compiler(g) => Span::Compiler(g.span_close()), - #[cfg(no_group_open_close)] - Group::Compiler(g) => Span::Compiler(g.span()), Group::Fallback(g) => Span::Fallback(g.span_close()), } } @@ -676,27 +648,7 @@ pub fn new_raw(string: &str, span: Span) -> Self { match span { - #[cfg(not(no_ident_new_raw))] Span::Compiler(s) => Ident::Compiler(proc_macro::Ident::new_raw(string, s)), - #[cfg(no_ident_new_raw)] - Span::Compiler(s) => { - let _ = proc_macro::Ident::new(string, s); - // At this point the un-r#-prefixed string is known to be a - // valid identifier. Try to produce a valid raw identifier by - // running the `TokenStream` parser, and unwrapping the first - // token as an `Ident`. - let raw_prefixed = format!("r#{}", string); - if let Ok(ts) = raw_prefixed.parse::() { - let mut iter = ts.into_iter(); - if let (Some(proc_macro::TokenTree::Ident(mut id)), None) = - (iter.next(), iter.next()) - { - id.set_span(s); - return Ident::Compiler(id); - } - } - panic!("not allowed as a raw identifier: `{}`", raw_prefixed) - } Span::Fallback(s) => Ident::Fallback(fallback::Ident::new_raw(string, s)), } } @@ -798,7 +750,7 @@ impl Literal { pub unsafe fn from_str_unchecked(repr: &str) -> Self { if inside_proc_macro() { - Literal::Compiler(compiler_literal_from_str(repr).expect("invalid literal")) + Literal::Compiler(proc_macro::Literal::from_str(repr).expect("invalid literal")) } else { Literal::Fallback(fallback::Literal::from_str_unchecked(repr)) } @@ -921,7 +873,8 @@ fn from_str(repr: &str) -> Result { if inside_proc_macro() { - compiler_literal_from_str(repr).map(Literal::Compiler) + let literal = proc_macro::Literal::from_str(repr)?; + Ok(Literal::Compiler(literal)) } else { let literal = fallback::Literal::from_str(repr)?; Ok(Literal::Fallback(literal)) @@ -929,24 +882,6 @@ } } -fn compiler_literal_from_str(repr: &str) -> Result { - #[cfg(not(no_literal_from_str))] - { - proc_macro::Literal::from_str(repr).map_err(LexError::Compiler) - } - #[cfg(no_literal_from_str)] - { - let tokens = proc_macro_parse(repr)?; - let mut iter = tokens.into_iter(); - if let (Some(proc_macro::TokenTree::Literal(literal)), None) = (iter.next(), iter.next()) { - if literal.to_string().len() == repr.len() { - return Ok(literal); - } - } - Err(LexError::call_site()) - } -} - impl Display for Literal { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match self { diff -Nru temporalio-1.3.0/vendor/proc-macro2/tests/marker.rs temporalio-1.3.0/vendor/proc-macro2/tests/marker.rs --- temporalio-1.3.0/vendor/proc-macro2/tests/marker.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/proc-macro2/tests/marker.rs 2023-10-30 19:40:00.000000000 +0000 @@ -62,7 +62,6 @@ assert_impl!(SourceFile is not Send or Sync); } -#[cfg(not(no_libprocmacro_unwind_safe))] mod unwind_safe { use proc_macro2::{ Delimiter, Group, Ident, LexError, Literal, Punct, Spacing, Span, TokenStream, TokenTree, diff -Nru temporalio-1.3.0/vendor/proc-macro2/tests/test_fmt.rs temporalio-1.3.0/vendor/proc-macro2/tests/test_fmt.rs --- temporalio-1.3.0/vendor/proc-macro2/tests/test_fmt.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/proc-macro2/tests/test_fmt.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,7 @@ #![allow(clippy::from_iter_instead_of_collect)] use proc_macro2::{Delimiter, Group, Ident, Span, TokenStream, TokenTree}; -use std::iter::{self, FromIterator}; +use std::iter; #[test] fn test_fmt_group() { diff -Nru temporalio-1.3.0/vendor/proc-macro2/tests/test.rs temporalio-1.3.0/vendor/proc-macro2/tests/test.rs --- temporalio-1.3.0/vendor/proc-macro2/tests/test.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/proc-macro2/tests/test.rs 2023-10-30 19:40:00.000000000 +0000 @@ -7,7 +7,6 @@ use proc_macro2::{Ident, Literal, Punct, Spacing, Span, TokenStream, TokenTree}; use std::iter; -use std::panic; use std::str::{self, FromStr}; #[test] @@ -90,24 +89,9 @@ } #[test] +#[should_panic(expected = r#""'a#" is not a valid Ident"#)] fn lifetime_invalid() { - let result = panic::catch_unwind(|| Ident::new("'a#", Span::call_site())); - match result { - Err(box_any) => { - let message = box_any.downcast_ref::().unwrap(); - let expected1 = r#""\'a#" is not a valid Ident"#; // 1.31.0 .. 1.53.0 - let expected2 = r#""'a#" is not a valid Ident"#; // 1.53.0 .. - assert!( - message == expected1 || message == expected2, - "panic message does not match expected string\n\ - \x20 panic message: `{:?}`\n\ - \x20expected message: `{:?}`", - message, - expected2, - ); - } - Ok(_) => panic!("test did not panic as expected"), - } + Ident::new("'a#", Span::call_site()); } #[test] @@ -680,8 +664,8 @@ check_spans("/*** ábc */ x", &[(1, 12, 1, 13)]); check_spans(r#""abc""#, &[(1, 0, 1, 5)]); check_spans(r#""ábc""#, &[(1, 0, 1, 5)]); - check_spans(r###"r#"abc"#"###, &[(1, 0, 1, 8)]); - check_spans(r###"r#"ábc"#"###, &[(1, 0, 1, 8)]); + check_spans(r##"r#"abc"#"##, &[(1, 0, 1, 8)]); + check_spans(r##"r#"ábc"#"##, &[(1, 0, 1, 8)]); check_spans("r#\"a\nc\"#", &[(1, 0, 2, 3)]); check_spans("r#\"á\nc\"#", &[(1, 0, 2, 3)]); check_spans("'a'", &[(1, 0, 1, 3)]); @@ -739,8 +723,8 @@ let tokens = various_spaces.parse::().unwrap(); assert_eq!(tokens.into_iter().count(), 0); - let lone_carriage_return = " \r "; - lone_carriage_return.parse::().unwrap_err(); + let lone_carriage_returns = " \r \r\r\n "; + lone_carriage_returns.parse::().unwrap(); } #[test] diff -Nru temporalio-1.3.0/vendor/quanta/benches/contention.rs temporalio-1.3.0/vendor/quanta/benches/contention.rs --- temporalio-1.3.0/vendor/quanta/benches/contention.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/benches/contention.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,61 @@ +use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion}; +use quanta::Instant as QuantaInstant; +use std::{ + sync::Mutex, + thread, + time::{Duration, Instant as StdInstant}, +}; + +const MAX_THREAD_COUNT: u32 = 12; + +fn run(thread_count: u32, iter_count: u64, now: impl Fn() -> I + Sync) -> Duration { + let max_duration = Mutex::new(Duration::new(0, 0)); + + thread::scope(|s| { + for _ in 0..thread_count { + s.spawn(|| { + let start = StdInstant::now(); + + for _ in 0..iter_count { + black_box(now()); + } + + let duration = start.elapsed(); + let mut max_duration = max_duration.lock().unwrap(); + *max_duration = max_duration.max(duration); + }); + } + }); + + let max = *max_duration.lock().unwrap(); + max +} + +fn benchmark(c: &mut Criterion) { + let mut std_group = c.benchmark_group("stdlib"); + for thread_count in 1..=MAX_THREAD_COUNT { + std_group.bench_with_input( + BenchmarkId::new("now", thread_count), + &thread_count, + |b, &thread_count| { + b.iter_custom(|iter_count| run(thread_count, iter_count, StdInstant::now)); + }, + ); + } + std_group.finish(); + + let mut q_group = c.benchmark_group("quanta"); + for thread_count in 1..=MAX_THREAD_COUNT { + q_group.bench_with_input( + BenchmarkId::new("now", thread_count), + &thread_count, + |b, &thread_count| { + b.iter_custom(|iter_count| run(thread_count, iter_count, QuantaInstant::now)); + }, + ); + } + q_group.finish(); +} + +criterion_group!(benches, benchmark); +criterion_main!(benches); diff -Nru temporalio-1.3.0/vendor/quanta/benches/README.md temporalio-1.3.0/vendor/quanta/benches/README.md --- temporalio-1.3.0/vendor/quanta/benches/README.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/benches/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,50 @@ +# Benchmarks + +Benchmarks were performed on an [AMD Ryzen 7 4800HS CPU](https://en.wikichip.org/wiki/amd/ryzen_9/3900). + +```sh +$ cargo bench --bench +$ critcmp new | tail +3 | sort | sed 's# ? ?/sec##' +``` + +## timing +``` +quanta/quanta_instant_now 1.00 9.7±0.01ns +quanta/quanta_instant_recent 1.00 1.5±0.10ns +quanta/quanta_now 1.00 9.1±0.65ns +quanta/quanta_now_delta 1.00 18.4±0.04ns +quanta/quanta_raw 1.00 8.9±0.00ns +quanta/quanta_raw_delta 1.00 18.2±0.03ns +quanta/quanta_raw_scaled 1.00 9.0±0.07ns +quanta/quanta_recent 1.00 1.7±0.00ns +stdlib/instant_delta 1.00 2.2±0.09µs +stdlib/instant_now 1.00 1110.8±48.42ns +``` + +## contention +``` +quanta/now/10 1.00 25.4±9.78ns +quanta/now/1 1.00 10.6±3.50ns +quanta/now/11 1.00 25.5±9.57ns +quanta/now/12 1.00 22.7±4.48ns +quanta/now/2 1.00 16.0±6.11ns +quanta/now/3 1.00 17.4±6.34ns +quanta/now/4 1.00 17.6±5.65ns +quanta/now/5 1.00 16.2±4.96ns +quanta/now/6 1.00 17.9±7.19ns +quanta/now/7 1.00 16.5±5.65ns +quanta/now/8 1.00 17.7±6.06ns +quanta/now/9 1.00 24.4±9.00ns +stdlib/now/10 1.00 1399.3±84.62ns +stdlib/now/1 1.00 1187.1±138.65ns +stdlib/now/11 1.00 1388.3±64.43ns +stdlib/now/12 1.00 1395.2±60.53ns +stdlib/now/2 1.00 1433.9±158.59ns +stdlib/now/3 1.00 1384.1±71.93ns +stdlib/now/4 1.00 1407.1±159.88ns +stdlib/now/5 1.00 1367.0±62.41ns +stdlib/now/6 1.00 1411.6±167.61ns +stdlib/now/7 1.00 1396.0±83.37ns +stdlib/now/8 1.00 1390.6±81.05ns +stdlib/now/9 1.00 1436.7±113.11ns +``` diff -Nru temporalio-1.3.0/vendor/quanta/benches/timing.rs temporalio-1.3.0/vendor/quanta/benches/timing.rs --- temporalio-1.3.0/vendor/quanta/benches/timing.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/benches/timing.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,7 +3,7 @@ use std::time::Instant as StdInstant; fn time_instant_now(b: &mut Bencher) { - b.iter(|| StdInstant::now()) + b.iter(StdInstant::now) } fn time_quanta_now(b: &mut Bencher) { @@ -13,7 +13,7 @@ fn time_quanta_instant_now(b: &mut Bencher) { let _ = QuantaInstant::now(); - b.iter(|| QuantaInstant::now()); + b.iter(QuantaInstant::now); } fn time_quanta_raw(b: &mut Bencher) { @@ -26,26 +26,6 @@ b.iter(|| clock.scaled(clock.raw())) } -fn time_quanta_start(b: &mut Bencher) { - let clock = Clock::new(); - b.iter(|| clock.start()) -} - -fn time_quanta_start_scaled(b: &mut Bencher) { - let clock = Clock::new(); - b.iter(|| clock.scaled(clock.start())) -} - -fn time_quanta_end(b: &mut Bencher) { - let clock = Clock::new(); - b.iter(|| clock.end()) -} - -fn time_quanta_end_scaled(b: &mut Bencher) { - let clock = Clock::new(); - b.iter(|| clock.scaled(clock.end())) -} - fn time_instant_delta(b: &mut Bencher) { b.iter(|| { let start = StdInstant::now(); @@ -63,21 +43,21 @@ }) } -fn time_quanta_now_delta(b: &mut Bencher) { +fn time_quanta_raw_delta_as_nanos(b: &mut Bencher) { let clock = Clock::new(); b.iter(|| { - let start = clock.now(); - let end = clock.now(); - end - start + let start = clock.raw(); + let end = clock.raw(); + clock.delta_as_nanos(start, end) }) } -fn time_quanta_start_end_delta(b: &mut Bencher) { +fn time_quanta_now_delta(b: &mut Bencher) { let clock = Clock::new(); b.iter(|| { - let start = clock.start(); - let end = clock.end(); - clock.delta(start, end) + let start = clock.now(); + let end = clock.now(); + end - start }) } @@ -104,11 +84,7 @@ q_group.bench_function("quanta_raw", time_quanta_raw); q_group.bench_function("quanta_raw_scaled", time_quanta_raw_scaled); q_group.bench_function("quanta_raw_delta", time_quanta_raw_delta); - q_group.bench_function("quanta_start", time_quanta_start); - q_group.bench_function("quanta_start_scaled", time_quanta_start_scaled); - q_group.bench_function("quanta_end", time_quanta_end); - q_group.bench_function("quanta_end_scaled", time_quanta_end_scaled); - q_group.bench_function("quanta_start/end_delta", time_quanta_start_end_delta); + q_group.bench_function("quanta_raw_delta_as_nanos", time_quanta_raw_delta_as_nanos); q_group.bench_function("quanta_recent", time_quanta_recent); q_group.bench_function("quanta_instant_recent", time_quanta_instant_recent); q_group.finish(); diff -Nru temporalio-1.3.0/vendor/quanta/.cargo-checksum.json temporalio-1.3.0/vendor/quanta/.cargo-checksum.json --- temporalio-1.3.0/vendor/quanta/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"b8fdb52d947292fcef0de22f33922e4f6262f6551c4517c727a66f6cbb2129c3","CODE_OF_CONDUCT.md":"55a5389e814d4a899404c00f4e77bd734d7c41af6b85bf5e76b3288c56b2ebe5","Cargo.toml":"137e2257fa2aab5c4be4c2a57a2c43d37d8e9eb218ef4c010d7cd68e0c124f8c","LICENSE":"7bdd587c9ff64c56323455bad7ec590698fbf56c02291c8e515b2afc85306282","README.md":"0e73248245e0afb4f18d37ca7d6b8f0c5a81ce37caf1c7cb431d3658e5970409","benches/timing.rs":"af5711bc560cb0bf0a85e928959e01e4a1e856d16dadcc8fd8b525248521b027","release.toml":"081445c2ff4fe8e3ba2c040290eedd29fe88baff4ef8b563353262b39a2421d3","src/counter.rs":"e614ad08cf92c73e122022b3bbf5de031480bc1c41fe72474a3b5ae5c054b22d","src/instant.rs":"1ab876a69b3b156099575745252be161515de76f4ceb678ac16153eb36c76e86","src/lib.rs":"8ba73501a03b4bc32241d0fcb431d63ffeffd22638d90e497ea6c30b3a641071","src/mock.rs":"a4053eecfc57bb3a63d5e470590ea730c2aeda90bcc8c4685925be6f7b4e6ab9","src/monotonic.rs":"f4190eb6adc2494288b0a3d3f60777d60ef630b05cbfd1a73813f314e7ea735b","src/stats.rs":"dddfad72a9eef1385e89db2e55d88c3657b06d671bf8aa9a09859d506aa61d86","src/upkeep.rs":"3fc35743a68435256e6b3c96fecf35fbda702a727795b8c8a83cf57c1df36221"},"package":"20afe714292d5e879d8b12740aa223c6a88f118af41870e8b6196e39a02238a8"} \ No newline at end of file +{"files":{"CHANGELOG.md":"1767e5478469dc4d4ae36364237666397cf875de69c4bffe7d37170e8a1c27db","CODE_OF_CONDUCT.md":"55a5389e814d4a899404c00f4e77bd734d7c41af6b85bf5e76b3288c56b2ebe5","Cargo.toml":"9828b82200a1d5502eaf04be0a0c46e56eeb6d45d5f8b76953ce4f129c450492","LICENSE":"7bdd587c9ff64c56323455bad7ec590698fbf56c02291c8e515b2afc85306282","README.md":"0e73248245e0afb4f18d37ca7d6b8f0c5a81ce37caf1c7cb431d3658e5970409","benches/README.md":"8a90b51749047ad2a87801e5151149cf2b6318536037c66ee990cf54d1161b00","benches/contention.rs":"8c0ecfb1a7b37b7c0c2f0c31513d54a11d0607f787be7d1b1ad2ccb3f04671a1","benches/timing.rs":"7939b6565b7aaf5bda9e6877971055001e376d5dd5a3e6156491799a638b15d1","release.toml":"27e1704eb66df4c4dc0ac14a3d732ad06b8c87b1aca8747443dba573ad5eb639","rust-toolchain.toml":"e5cc0545f232bde807bd9394c2433322d1cd2cf42b060ceab2ac7329bc9cdaa2","src/clocks/counter.rs":"81920c98d85fd7ee57caa5038905c5177960830d4afebe7589be85a2f7c9156e","src/clocks/mod.rs":"6da94f7b5187caca77dfc0c1e11636a1ec80729be36bd9f0be399a2ba0b07d81","src/clocks/monotonic/macos.rs":"827e112b5c1e796a1755ca8db587763b137ba6da8caf93b06ca9a4a5ed78b6ba","src/clocks/monotonic/mod.rs":"4d261187b5fde9cf08dd6a597f0647729dcad3efc02bc189c8525927c2c36341","src/clocks/monotonic/unix.rs":"ab854fd3093ef4b4c0ba82cfcbdd6cafa8f325e68976b32d0bf49bcaf780a177","src/clocks/monotonic/wasm.rs":"3798e3fe972ce768fd523988f91df2959ecd6d7d993ad8df6cc2db872a2d352a","src/clocks/monotonic/windows.rs":"af6a3bd91d699250cb86391853266d67278c48eb53c6ae2372f14876d5e41a8d","src/instant.rs":"7dafb373287160f8f4cb2c0bffc831b481f7b5010194d18ae4ad8999fba31a50","src/lib.rs":"594df9a8477333d62d2f62defd42f1481b2e9db2a5bbfc5fb2ff7e9501772554","src/mock.rs":"7223ce27a1de5fbaae7dc4e900485eb9bc306dd80faf3bef03a5eac2165a6924","src/stats.rs":"591971ca567e3192049e028a45460c77a4b34a0bc1d0cec7ac6730bf6811e7db","src/upkeep.rs":"765269925343f646b17292f388d63f113f516f647bde8e4585d1d86f5d5e58a8"},"package":"a17e662a7a8291a865152364c20c7abc5e60486ab2001e8ec10b24862de0b9ab"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/quanta/Cargo.toml temporalio-1.3.0/vendor/quanta/Cargo.toml --- temporalio-1.3.0/vendor/quanta/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,17 +10,23 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" +edition = "2021" +rust-version = "1.60" name = "quanta" -version = "0.9.3" +version = "0.11.1" authors = ["Toby Lawrence "] description = "high-speed timing library" homepage = "https://github.com/metrics-rs/quanta" documentation = "https://docs.rs/quanta" readme = "README.md" -keywords = ["rdtsc", "timing", "nanosecond"] +keywords = [ + "rdtsc", + "timing", + "nanosecond", +] license = "MIT" repository = "https://github.com/metrics-rs/quanta" + [package.metadata.docs.rs] all-features = true @@ -30,6 +36,11 @@ [[bench]] name = "timing" harness = false + +[[bench]] +name = "contention" +harness = false + [dependencies.crossbeam-utils] version = "0.8.5" @@ -37,35 +48,49 @@ version = "1.4" [dependencies.prost-types] -version = "0.8" +version = "0.11" optional = true +default-features = false + [dev-dependencies.average] version = "0.13" [dev-dependencies.criterion] -version = "0.3" +version = "=0.3.3" [features] default = ["flaky_tests"] flaky_tests = [] prost = ["prost-types"] -[target."cfg(all(not(target_os = \"macos\"), not(target_os = \"ios\"), not(target_os = \"windows\"), not(target_arch = \"wasm32\")))".dependencies.libc] -version = "0.2" + [target."cfg(all(target_arch = \"wasm32\", target_os = \"unknown\"))".dependencies.web-sys] version = "0.3" -features = ["Window", "Performance"] +features = [ + "Window", + "Performance", +] + [target."cfg(all(target_arch = \"wasm32\", target_os = \"unknown\"))".dev-dependencies.wasm-bindgen-test] version = "0.3" + [target."cfg(all(target_arch = \"wasm32\", target_os = \"wasi\"))".dependencies.wasi] -version = "0.10" +version = "0.11" + +[target."cfg(not(any(target_os = \"macos\", target_os = \"ios\", target_os = \"windows\", target_arch = \"wasm32\")))".dependencies.libc] +version = "0.2" + [target."cfg(target_arch = \"x86\")".dependencies.raw-cpuid] version = "10.2" + [target."cfg(target_arch = \"x86_64\")".dependencies.raw-cpuid] version = "10.2" -[target."cfg(target_os = \"ios\")".dependencies.mach] -version = "0.3" -[target."cfg(target_os = \"macos\")".dependencies.mach] -version = "0.3" + +[target."cfg(target_os = \"ios\")".dependencies.mach2] +version = "0.4" + +[target."cfg(target_os = \"macos\")".dependencies.mach2] +version = "0.4" + [target."cfg(target_os = \"windows\")".dependencies.winapi] version = "0.3" features = ["profileapi"] diff -Nru temporalio-1.3.0/vendor/quanta/CHANGELOG.md temporalio-1.3.0/vendor/quanta/CHANGELOG.md --- temporalio-1.3.0/vendor/quanta/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -8,57 +8,123 @@ ## [Unreleased] - ReleaseDate -## [0.9.3] - 2021-09-16 +## [0.11.1] - 2023-05-28 ### Added + +- Added a new method, `Clock::delta_as_nanos`, for getting the delta between two raw measurements as + the whole number of nanoseconds instead of the initial conversion to `Duration`. ([#86]) + +[#86]: https://github.com/metrics-rs/quanta/pull/86 + +## [0.11.0] - 2023-03-24 + +### Added + +- `Instant::elapsed()` has been added. ([#82]) + +### Changed + +- `Instant::duration_since` and `Instant::sub` now saturates to zero. ([#82]) +- Performance of `Instant::now` under high contention has been improved. ([#82]) + +[#82]: https://github.com/metrics-rs/quanta/pull/82 + +## [0.10.1] - 2022-07-20 + +### Added + +- Implement `std::error::Error` for `quanta::Error`. ([#68]) + +### Changed + +- Fixed build issue on x86/x86_64 platforms that did not have SSE. +- Fix scaling factor for `window.performance.now()` in WASM. ([#72]) + +[#72]: https://github.com/metrics-rs/quanta/pull/72 +[#68]: https://github.com/metrics-rs/quanta/pull/68 + +## [0.10.0] - 2022-05-18 + +### Changed + +- Documentation has been updated to reflect that `quanta` does not track time across system + suspends. +- Fixed a panic in the calibration loop if a certain edge case with TSC measurements is encountered. +- Updated a unit test that was frequently flaky to be more precise. + +### Removed + +- `Instant::as_u64` has been removed. As it provided direct access to an value that could + fundamentally change from version-to-version, it felt like time to remove that footgun and push + users more towards the API that mimics `std::time`. +- `Clock::upkeep` has been removed. It doesn't need to exist on `Clock` directly, as we have had + the `quanta::set_recent` free function for a while now, and was just duplicating that. +- `Clock::start` and `Clock::end` have been removed. They saw limited usage and overall just added somewhat needless API + clutter given that users who are looking to do ultra-precise timing will either want more control or use another + technique such as instruction counting. + +## 0.9.3 - 2021-09-16 + +### Added + - CI tests for MIPS/ARM. ([#55](https://github.com/metrics-rs/quanta/pull/55)) ### Changed + - Fixed compilation issue with `Mock` on MIPS/ARM. ([#55](https://github.com/metrics-rs/quanta/pull/55)) - Simplified how TSC/RDTSC suppoort is detected, which should avoid some situations where it was assumed to be present, but actually was not. ([#57](https://github.com/metrics-rs/quanta/pull/57)) -## [0.9.2] - 2021-08-25 +## 0.9.2 - 2021-08-25 ### Changed + - Pinned `crossbeam-utils` to `v0.8.5` where `AtomicCell::fetch_update` was introduced to fix, which fixes broken builds where Cargo chooses a version between `0.8.0` and `0.8.5`. - Update `raw-cpuid` to `10.2` and `average` to `0.13`. -## [0.9.1] - 2021-08-12 +## 0.9.1 - 2021-08-12 ### Changed + - Switched from `atomic-shim` to `crossbeam-utils` for better cross-platform atomic support. ([#52](https://github.com/metrics-rs/quanta/pull/52)) -## [0.9.0] - 2021-06-17 +## 0.9.0 - 2021-06-17 ### Added + - Support for WASM/WASI targets. ([#45](https://github.com/metrics-rs/quanta/pull/45)) -## [0.8.0] - 2021-06-07 +## 0.8.0 - 2021-06-07 ### Removed + - `Instant::as_unix_duration` as it was added in error. - `metrics` feature flag as `metrics-core` is no longer a relevant crate. -## [0.7.2] - 2021-01-25 +## 0.7.2 - 2021-01-25 ### Changed + - Bumped dependency on `raw-cpuid` to `9.0` in order to deal with a [RustSec advisory](https://rustsec.org/advisories/RUSTSEC-2021-0013). -## [0.7.1] - 2021-01-24 +## 0.7.1 - 2021-01-24 ### Fixed + - Incorrect method visibility for non-SSE2 implementation of `Counter`. ([#38](https://github.com/metrics-rs/quanta/issues/38)) -## [0.7.0] - 2021-01-03 +## 0.7.0 - 2021-01-03 ### Changed + - MSRV bumped to 1.45.0. - `Clock::now` takes `&self` instead of `&mut self`. - Fixed a bug where a failure to spawn the upkeep thread would not allow subsequent attempts to spawn the upkeep thread to proceed. ### Added + - New methods --`Instant::now` and `Instant::recent` for getting the current and recent time, respectively. - New free function `quanta::with_clock` for setting an override on the current thread that affects @@ -66,38 +132,45 @@ - New free function `quanta::set_recent` to allow customization of how global recent time is updated. -## [0.6.5] - 2020-09-16 +## 0.6.5 - 2020-09-16 ### Changed + - Fixed a bug with not being able to start the upkeep thread at all. ([#29](https://github.com/metrics-rs/quanta/issues/29)) -## [0.6.4] - 2020-08-27 +## 0.6.4 - 2020-08-27 ### Added + - Add `Instant::as_unix_duration` to get the duration of time since the Unix epoch from an `Instant`. ### Changed - Remove `clocksource` from dependencies and tests as it no longer compiles on stable or nightly. -## [0.6.3] - 2020-08-03 +## 0.6.3 - 2020-08-03 ### Changed + - Publicly expose `Clock::upkeep` for advanced use cases. - Relax constraints around checking for multiple sockets. ([#25](https://github.com/metrics-rs/quanta/issues/25)) -## [0.6.2] - 2020-07-20 +## 0.6.2 - 2020-07-20 ### Added + - Add support for MIPS/PowerPC. ([#23](https://github.com/metrics-rs/quanta/pull/23)) -## [0.6.1] - 2020-07-13 +## 0.6.1 - 2020-07-13 ### Added + - Publicly expose the `Error` type returned by `Upkeep::start`. -## [0.6.0] - 2020-07-06 +## 0.6.0 - 2020-07-06 + This version of `quanta` was a massive overhaul of man areas of the API and internals, which was done in a single PR: ([#19](https://github.com/metrics-rs/quanta/pull/19)). You can read the PR description for the finer details. All changes below are part of the aforementioned PR. ### Changed + - `Clock::now` now returns a monotonic value in all cases. - No longer possible to get a negative value from `Clock::delta`. - Calibration is no longer a fixed one second loop, and will complete when it detects it has a @@ -106,34 +179,47 @@ - Calibration is now shared amongst all `Clock` instances, running only once when the first `Clock` is created. -## [0.5.2] - 2020-05-01 +## 0.5.2 - 2020-05-01 ### Changed + - Fix the logic to figure out when calibration is required. ([#14](https://github.com/metrics-rs/quanta/pull/14)) -## [0.5.1] - 2020-04-11 +## 0.5.1 - 2020-04-11 ### Changed + - Small tweak to the docs. -## [0.5.0] - 2020-04-11 +## 0.5.0 - 2020-04-11 ### Changed + - Switch to `mach` for macOS/iOS as it was deprecated in `libc`. ([#12](https://github.com/metrics-rs/quanta/pull/12)) - Switch to `core::arch` for instrinics, and drop the feature flagged configuration to use it. ([#12](https://github.com/metrics-rs/quanta/pull/12)) - Switch to `criterion` for benchmarking. ([#12](https://github.com/metrics-rs/quanta/pull/12)) -## [0.4.0] - 2020-02-20 +## 0.4.0 - 2020-02-20 ### Changed + - Differentiate between raw and scaled time by adding a new `Instant` type. ([#10](https://github.com/metrics-rs/quanta/pull/10)) -## [0.2.0] - 2019-03-10 +## 0.2.0 - 2019-03-10 ### Changed + - Fixed support for Windows. It was in a bad way, but actually works correctly now! - Switched to Azure Pipelines CI + Cirrus CI, including formatting, tests, and benchmarks, for Linux, macOS, Windows, and FreeBSD. -## [0.1.0] - 2019-01-14 +## 0.1.0 - 2019-01-14 ### Added + - Initial commit. + + +[Unreleased]: https://github.com/metrics-rs/quanta/compare/v0.11.1...HEAD +[0.11.1]: https://github.com/metrics-rs/quanta/compare/v0.11.0...v0.11.1 +[0.11.0]: https://github.com/metrics-rs/quanta/compare/v0.10.1...v0.11.0 +[0.10.1]: https://github.com/metrics-rs/quanta/compare/v0.10.0...v0.10.1 +[0.10.0]: https://github.com/metrics-rs/quanta/releases/tag/v0.10.0 diff -Nru temporalio-1.3.0/vendor/quanta/release.toml temporalio-1.3.0/vendor/quanta/release.toml --- temporalio-1.3.0/vendor/quanta/release.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/release.toml 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,9 @@ sign-commit = true sign-tag = true pre-release-replacements = [ - {file="CHANGELOG.md", search="Unreleased", replace="{{version}}"}, - {file="CHANGELOG.md", search="ReleaseDate", replace="{{date}}"}, - {file="CHANGELOG.md", search="", replace="\n\n## [Unreleased] - ReleaseDate"}, -] \ No newline at end of file + {file="CHANGELOG.md", search="Unreleased", replace="{{version}}"}, + {file="CHANGELOG.md", search="\\.\\.\\.HEAD", replace="...{{tag_name}}", exactly=1}, + {file="CHANGELOG.md", search="ReleaseDate", replace="{{date}}"}, + {file="CHANGELOG.md", search="", replace="\n\n## [Unreleased] - ReleaseDate", exactly=1}, + {file="CHANGELOG.md", search="", replace="\n[Unreleased]: https://github.com/metrics-rs/quanta/compare/{{tag_name}}...HEAD", exactly=1}, +] diff -Nru temporalio-1.3.0/vendor/quanta/rust-toolchain.toml temporalio-1.3.0/vendor/quanta/rust-toolchain.toml --- temporalio-1.3.0/vendor/quanta/rust-toolchain.toml 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/rust-toolchain.toml 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,2 @@ +[toolchain] +channel = "stable" diff -Nru temporalio-1.3.0/vendor/quanta/src/clocks/counter.rs temporalio-1.3.0/vendor/quanta/src/clocks/counter.rs --- temporalio-1.3.0/vendor/quanta/src/clocks/counter.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/src/clocks/counter.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,19 @@ +#[cfg(all(target_arch = "x86_64", target_feature = "sse2"))] +use core::arch::x86_64::_rdtsc; + +#[derive(Clone, Debug, Default)] +pub struct Counter; + +#[cfg(all(target_arch = "x86_64", target_feature = "sse2"))] +impl Counter { + pub fn now(&self) -> u64 { + unsafe { _rdtsc() } + } +} + +#[cfg(not(all(target_arch = "x86_64", target_feature = "sse2")))] +impl Counter { + pub fn now(&self) -> u64 { + panic!("can't use counter without TSC support"); + } +} diff -Nru temporalio-1.3.0/vendor/quanta/src/clocks/mod.rs temporalio-1.3.0/vendor/quanta/src/clocks/mod.rs --- temporalio-1.3.0/vendor/quanta/src/clocks/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/src/clocks/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,5 @@ +mod counter; +pub use self::counter::Counter; + +mod monotonic; +pub use self::monotonic::Monotonic; diff -Nru temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/macos.rs temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/macos.rs --- temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/macos.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/macos.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,24 @@ +use mach2::mach_time::{mach_absolute_time, mach_timebase_info}; + +#[derive(Clone, Copy, Debug)] +pub struct Monotonic { + factor: u64, +} +impl Monotonic { + pub fn now(&self) -> u64 { + let raw = unsafe { mach_absolute_time() }; + raw * self.factor + } +} + +impl Default for Monotonic { + fn default() -> Self { + let mut info = mach_timebase_info { numer: 0, denom: 0 }; + unsafe { + mach_timebase_info(&mut info); + } + + let factor = u64::from(info.numer) / u64::from(info.denom); + Self { factor } + } +} diff -Nru temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/mod.rs temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/mod.rs --- temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,29 @@ +#[cfg(any(target_os = "macos", target_os = "ios"))] +mod macos; +#[cfg(any(target_os = "macos", target_os = "ios"))] +pub use self::macos::Monotonic; + +#[cfg(target_os = "windows")] +mod windows; +#[cfg(target_os = "windows")] +pub use self::windows::Monotonic; + +#[cfg(target_arch = "wasm32")] +mod wasm; +#[cfg(target_arch = "wasm32")] +pub use self::wasm::Monotonic; + +#[cfg(not(any( + target_os = "macos", + target_os = "ios", + target_os = "windows", + target_arch = "wasm32" +)))] +mod unix; +#[cfg(not(any( + target_os = "macos", + target_os = "ios", + target_os = "windows", + target_arch = "wasm32" +)))] +pub use self::unix::Monotonic; diff -Nru temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/unix.rs temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/unix.rs --- temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/unix.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/unix.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,36 @@ +#[derive(Clone, Copy, Debug, Default)] +pub struct Monotonic; + +impl Monotonic { + #[allow(clippy::cast_sign_loss)] + pub fn now(self) -> u64 { + let mut ts = libc::timespec { + tv_sec: 0, + tv_nsec: 0, + }; + unsafe { + libc::clock_gettime(libc::CLOCK_MONOTONIC, &mut ts); + } + + // LINT JUSTIFICATION: + // + // We really don't ever expect to actually _get_ negative values from `clock_gettime`, but + // given the types, it's technically possible. This is due to the fact that `tv_sec` is + // supposed to be `time_t`, which Unix/POSIX-compliant systems implement as a signed number. + // Accordingly, `tv_nsec` follows suit using a signed number. + // + // Given the adjustments made by NTP to clocks like CLOCK_MONOTONIC, and that + // CLOCK_MONOTONIC can be anchored to an arbitrary point, and a whole skew of other + // scenarios where it could be modified... it's technicaly possible to get back valid + // negative values. If we did math between `timespec` objects, the delta should be valid, + // even with negative numbers. + // + // We're returning a u64 here, though, so it is what it is. In practice, I've _never_ seen + // negative values under normal operation. If someone discovers a valid scenario where this + // is violated and that we need to account for, I'll be colored impressed, but also, file an + // issue and we'll do what we have to do to rework the code to try and support it better. + // + // Until then, though, we're just gonna ignore the lint. + ts.tv_sec as u64 * 1_000_000_000 + ts.tv_nsec as u64 + } +} diff -Nru temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/wasm.rs temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/wasm.rs --- temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/wasm.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/wasm.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,25 @@ +const WASM_WRONG_ENV: &str = "failed to find the global `window` object: the `wasm32-unknown-unknown` implementation only supports running in web browsers; wse `wasm32-wasi` to run elsewhere"; +const WASM_MISSING_WINDOW_PERF: &str = "failed to find `window.performance`"; + +#[derive(Clone, Copy, Debug, Default)] +pub struct Monotonic; + +#[cfg(all(target_arch = "wasm32", target_os = "unknown"))] +impl Monotonic { + pub fn now(&self) -> u64 { + let now = web_sys::window() + .expect(WASM_WRONG_ENV) + .performance() + .expect(WASM_MISSING_WINDOW_PERF) + .now(); + // `window.performance.now()` returns the time in milliseconds. + return f64::trunc(now * 1_000_000.0) as u64; + } +} + +#[cfg(all(target_arch = "wasm32", target_os = "wasi"))] +impl Monotonic { + pub fn now(&self) -> u64 { + unsafe { wasi::clock_time_get(wasi::CLOCKID_MONOTONIC, 1).expect("failed to get time") } + } +} diff -Nru temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/windows.rs temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/windows.rs --- temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/windows.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/src/clocks/monotonic/windows.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,42 @@ +use std::mem; +use winapi::um::profileapi; + +#[derive(Clone, Copy, Debug)] +pub struct Monotonic { + factor: u64, +} + +impl Monotonic { + pub fn now(&self) -> u64 { + let raw = unsafe { + // TODO: Can we do any better than the `mem::zeroed` call here? + let mut count = mem::zeroed(); + if profileapi::QueryPerformanceCounter(&mut count) == 0 { + unreachable!( + "QueryPerformanceCounter on Windows XP or later should never return zero!" + ); + } + *count.QuadPart() as u64 + }; + raw * self.factor + } +} + +impl Default for Monotonic { + fn default() -> Self { + let denom = unsafe { + // TODO: Can we do any better than the `mem::zeroed` call here? + let mut freq = mem::zeroed(); + if profileapi::QueryPerformanceFrequency(&mut freq) == 0 { + unreachable!( + "QueryPerformanceFrequency on Windows XP or later should never return zero!" + ); + } + *freq.QuadPart() as u64 + }; + + Self { + factor: 1_000_000_000 / denom, + } + } +} diff -Nru temporalio-1.3.0/vendor/quanta/src/counter.rs temporalio-1.3.0/vendor/quanta/src/counter.rs --- temporalio-1.3.0/vendor/quanta/src/counter.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/src/counter.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -#[cfg(all(target_arch = "x86_64", target_feature = "sse2"))] -use core::arch::x86_64::{__rdtscp, _mm_lfence, _rdtsc}; - -#[derive(Debug, Clone, Default)] -pub struct Counter; - -impl Counter { - #[allow(dead_code)] - pub fn new() -> Self { - Counter {} - } -} - -#[cfg(all(target_arch = "x86_64", target_feature = "sse2"))] -impl Counter { - pub fn now(&self) -> u64 { - unsafe { - _mm_lfence(); - _rdtsc() - } - } - - pub fn start(&self) -> u64 { - unsafe { - _mm_lfence(); - let result = _rdtsc(); - _mm_lfence(); - result - } - } - - pub fn end(&self) -> u64 { - let mut _aux: u32 = 0; - unsafe { - let result = __rdtscp(&mut _aux as *mut _); - _mm_lfence(); - result - } - } -} - -#[cfg(not(all(target_arch = "x86_64", target_feature = "sse2")))] -impl Counter { - pub fn now(&self) -> u64 { - panic!("can't use counter without TSC support"); - } - - pub fn start(&self) -> u64 { - panic!("can't use counter without TSC support"); - } - - pub fn end(&self) -> u64 { - panic!("can't use counter without TSC support"); - } -} diff -Nru temporalio-1.3.0/vendor/quanta/src/instant.rs temporalio-1.3.0/vendor/quanta/src/instant.rs --- temporalio-1.3.0/vendor/quanta/src/instant.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/src/instant.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,11 +5,26 @@ /// A point-in-time wall-clock measurement. /// -/// Unlike the stdlib `Instant`, this type has a meaningful difference: it is intended to be opaque, -/// but the internal value _can_ be accessed. There are no guarantees here and depending on this -/// value directly is proceeding at your own risk. âš ï¸ +/// Mimics most of the functionality of [`std::time::Instant`] but provides an additional method for +/// using the "recent time" feature of `quanta`. /// -/// An `Instant` is 8 bytes. +/// ## Monotonicity +/// +/// On all platforms, `Instant` will try to use an OS API that guarantees monotonic behavior if +/// available, which is the case for all supported platforms. In practice such guarantees are – +/// under rare circumstances – broken by hardware, virtualization or operating system bugs. To work +/// around these bugs and platforms not offering monotonic clocks [`duration_since`], [`elapsed`] +/// and [`sub`] saturate to zero. In older `quanta` versions this lead to a panic instead. +/// [`checked_duration_since`] can be used to detect and handle situations where monotonicity is +/// violated, or `Instant`s are subtracted in the wrong order. +/// +/// This workaround obscures programming errors where earlier and later instants are accidentally +/// swapped. For this reason future `quanta` versions may reintroduce panics. +/// +/// [`duration_since`]: Instant::duration_since +/// [`elapsed`]: Instant::elapsed +/// [`sub`]: Instant::sub +/// [`checked_duration_since`]: Instant::checked_duration_since #[derive(Clone, Copy, PartialEq, Eq)] pub struct Instant(pub(crate) u64); @@ -19,8 +34,10 @@ /// This method depends on a lazily initialized global clock, which can take up to 200ms to /// initialize and calibrate itself. /// - /// This method is the spiritual equivalent of [`std::time::Instant::now`]. It is guaranteed to + /// This method is the spiritual equivalent of [`Instant::now`][instant_now]. It is guaranteed to /// return a monotonically increasing value. + /// + /// [instant_now]: std::time::Instant::now pub fn now() -> Instant { crate::get_now() } @@ -31,12 +48,15 @@ /// time. Instead of querying the underlying source clock directly, a shared, global value is /// read directly without the need to scale to reference time. /// - /// The value is updated by running an "upkeep" thread or by calling [`quanta::set_recent`]. An - /// upkeep thread can be configured and spawned via [`Builder`]. + /// The value is updated by running an "upkeep" thread or by calling [`set_recent`][set_recent]. An + /// upkeep thread can be configured and spawned via [`Upkeep`][upkeep]. /// /// If the upkeep thread has not been started, or no value has been set manually, a lazily /// initialized global clock will be used to get the current time. This clock can take up to /// 200ms to initialize and calibrate itself. + /// + /// [set_recent]: crate::set_recent + /// [upkeep]: crate::Upkeep pub fn recent() -> Instant { crate::get_recent() } @@ -45,7 +65,11 @@ /// /// # Panics /// - /// This function will panic if `earlier` is later than `self`. + /// Previous versions of this method panicked when earlier was later than `self`. Currently, + /// this method saturates to zero. Future versions may reintroduce the panic in some + /// circumstances. See [Monotonicity]. + /// + /// [Monotonicity]: Instant#monotonicity /// /// # Examples /// @@ -61,15 +85,17 @@ /// println!("{:?}", new_now.duration_since(now)); /// ``` pub fn duration_since(&self, earlier: Instant) -> Duration { - self.0 - .checked_sub(earlier.0) - .map(Duration::from_nanos) - .expect("supplied instant is later than self") + self.checked_duration_since(earlier).unwrap_or_default() } /// Returns the amount of time elapsed from another instant to this one, or `None` if that /// instant is earlier than this one. /// + /// Due to [monotonicity bugs], even under correct logical ordering of the passed `Instant`s, + /// this method can return `None`. + /// + /// [monotonicity bugs]: Instant#monotonicity + /// /// # Examples /// /// ```no_run @@ -91,6 +117,11 @@ /// Returns the amount of time elapsed from another instant to this one, or zero duration if /// that instant is earlier than this one. /// + /// Due to [monotonicity bugs], even under correct logical ordering of the passed `Instant`s, + /// this method can return `None`. + /// + /// [monotonicity bugs]: Instant#monotonicity + /// /// # Examples /// /// ```no_run @@ -106,8 +137,34 @@ /// println!("{:?}", now.saturating_duration_since(new_now)); // 0ns /// ``` pub fn saturating_duration_since(&self, earlier: Instant) -> Duration { - self.checked_duration_since(earlier) - .unwrap_or_else(|| Duration::new(0, 0)) + self.checked_duration_since(earlier).unwrap_or_default() + } + + /// Returns the amount of time elapsed since this instant was created. + /// + /// # Panics + /// + /// Previous `quanta` versions panicked when the current time was earlier than self. Currently + /// this method returns a Duration of zero in that case. Future versions may reintroduce the + /// panic. See [Monotonicity]. + /// + /// [Monotonicity]: Instant#monotonicity + /// + /// # Examples + /// + /// ```no_run + /// use quanta::Clock; + /// use std::time::Duration; + /// use std::thread::sleep; + /// + /// let mut clock = Clock::new(); + /// let now = clock.now(); + /// sleep(Duration::new(1, 0)); + /// let elapsed = now.elapsed(); + /// println!("{:?}", elapsed); // ≥ 1s + /// ``` + pub fn elapsed(&self) -> Duration { + Instant::now() - *self } /// Returns `Some(t)` where `t` is the time `self + duration` if `t` can be represented as @@ -123,11 +180,6 @@ pub fn checked_sub(&self, duration: Duration) -> Option { self.0.checked_sub(duration.as_nanos() as u64).map(Instant) } - - /// Gets the inner value of this `Instant`. - pub fn as_u64(&self) -> u64 { - self.0 - } } impl Add for Instant { @@ -169,6 +221,16 @@ impl Sub for Instant { type Output = Duration; + /// Returns the amount of time elapsed from another instant to this one, + /// or zero duration if that instant is later than this one. + /// + /// # Panics + /// + /// Previous `quanta` versions panicked when `other` was later than `self`. Currently this + /// method saturates. Future versions may reintroduce the panic in some circumstances. + /// See [Monotonicity]. + /// + /// [Monotonicity]: Instant#monotonicity fn sub(self, other: Instant) -> Duration { self.duration_since(other) } @@ -215,10 +277,14 @@ #[cfg(test)] mod tests { + use once_cell::sync::Lazy; + use super::Instant; use crate::{with_clock, Clock}; - use std::thread; use std::time::Duration; + use std::{sync::Mutex, thread}; + + static RECENT_LOCK: Lazy> = Lazy::new(|| Mutex::new(())); #[test] #[cfg_attr( @@ -226,12 +292,14 @@ ignore = "WASM thread cannot sleep" )] fn test_now() { + let _guard = RECENT_LOCK.lock().unwrap(); + let t0 = Instant::now(); thread::sleep(Duration::from_millis(15)); let t1 = Instant::now(); - assert!(t0.as_u64() > 0); - assert!(t1.as_u64() > 0); + assert!(t0.0 > 0); + assert!(t1.0 > 0); let result = t1 - t0; let threshold = Duration::from_millis(14); @@ -244,6 +312,8 @@ ignore = "WASM thread cannot sleep" )] fn test_recent() { + let _guard = RECENT_LOCK.lock().unwrap(); + // Ensures that the recent global value is zero so that the fallback logic can kick in. crate::set_recent(Instant(0)); @@ -251,12 +321,18 @@ thread::sleep(Duration::from_millis(15)); let t1 = Instant::recent(); - assert!(t0.as_u64() > 0); - assert!(t1.as_u64() > 0); + assert!(t0.0 > 0); + assert!(t1.0 > 0); let result = t1 - t0; let threshold = Duration::from_millis(14); - assert!(result > threshold); + assert!( + result > threshold, + "t1 should be greater than t0 by at least 14ms, was only {}ms (t0: {}, t1: {})", + result.as_millis(), + t0.0, + t1.0 + ); crate::set_recent(Instant(1)); let t2 = Instant::recent(); @@ -271,25 +347,30 @@ wasm_bindgen_test::wasm_bindgen_test )] fn test_mocking() { + let _guard = RECENT_LOCK.lock().unwrap(); + + // Ensures that the recent global value is zero so that the fallback logic can kick in. + crate::set_recent(Instant(0)); + let (clock, mock) = Clock::mock(); with_clock(&clock, move || { let t0 = Instant::now(); mock.increment(42); let t1 = Instant::now(); - assert_eq!(t0.as_u64(), 0); - assert_eq!(t1.as_u64(), 42); + assert_eq!(t0.0, 0); + assert_eq!(t1.0, 42); let t2 = Instant::recent(); mock.increment(420); let t3 = Instant::recent(); - assert_eq!(t2.as_u64(), 42); - assert_eq!(t3.as_u64(), 462); + assert_eq!(t2.0, 42); + assert_eq!(t3.0, 462); crate::set_recent(Instant(1440)); let t4 = Instant::recent(); - assert_eq!(t4.as_u64(), 1440); + assert_eq!(t4.0, 1440); }) } } diff -Nru temporalio-1.3.0/vendor/quanta/src/lib.rs temporalio-1.3.0/vendor/quanta/src/lib.rs --- temporalio-1.3.0/vendor/quanta/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,17 +5,18 @@ //! available, using the Time Stamp Counter feature found on modern CPUs. //! //! # Design +//! //! Internally, `quanta` maintains the concept of two potential clock sources: a reference clock and //! a source clock. //! //! The reference clock is provided by the OS, and always available. It is equivalent to what is -//! provided by the standard library in terms of the underlying system calls being made. As it -//! uses the native timing facilities provided by the operating system, we ultimately depend on the -//! OS itself to give us a stable and correct value. -//! -//! The source clock is a potential clock source based on the Time Stamp Counter feature found on -//! modern CPUs. If the TSC feature is not present or is not reliable enough, `quanta` will -//! transparently utilize the reference clock instead. +//! provided by the standard library in terms of the underlying system calls being made. As it uses +//! the native timing facilities provided by the operating system, we ultimately depend on the OS +//! itself to give us a stable and correct value. +//! +//! The source clock is a potential clock source based on the [Time Stamp Counter][tsc] feature +//! found on modern CPUs. If the TSC feature is not present or is not reliable enough, `quanta` +//! will transparently utilize the reference clock instead. //! //! Depending on the underlying processor(s) in the system, `quanta` will figure out the most //! accurate/efficient way to calibrate the source clock to the reference clock in order to provide @@ -24,45 +25,62 @@ //! Details on TSC support, and calibration, are detailed below. //! //! # Features -//! Beyond simply taking measurements of the current time, `quanta` provides features for more easily -//! working with clocks, as well as being able to enhance performance further: +//! +//! Beyond simply taking measurements of the current time, `quanta` provides features for more +//! easily working with clocks, as well as being able to enhance performance further: //! - `Clock` can be mocked for testing //! - globally accessible "recent" time with amortized overhead //! +//! ## Mocked time +//! //! For any code that uses a `Clock`, a mocked version can be substituted. This allows for //! application authors to control the time in tests, which allows simulating not only the normal //! passage of time but provides the ability to warp time forwards and backwards in order to test //! corner cases in logic, etc. Creating a mocked clock can be acheived with [`Clock::mock`], and //! [`Mock`] contains more details on mock usage. //! +//! ## Coarsely-updated, or recent, time +//! //! `quanta` also provides a "recent" time feature, which allows a slightly-delayed version of time //! to be provided to callers, trading accuracy for speed of access. An upkeep thread is spawned, //! which is responsible for taking measurements and updating the global recent time. Callers then -//! can access the cached value by calling `Clock::recent`. This interface can be 4-10x faster -//! than directly calling `Clock::now`, even when TSC support is available. As the upkeep thread -//! is the only code updating the recent time, the accuracy of the value given to callers is -//! limited by how often the upkeep thread updates the time, thus the trade off between accuracy -//! and speed of access. +//! can access the cached value by calling `Clock::recent`. This interface can be 4-10x faster than +//! directly calling `Clock::now`, even when TSC support is available. As the upkeep thread is the +//! only code updating the recent time, the accuracy of the value given to callers is limited by how +//! often the upkeep thread updates the time, thus the trade off between accuracy and speed of +//! access. //! //! # Feature Flags -//! `quanta` comes with feature flags that enable convenient conversions to time types in -//! other popular crates, such as: +//! +//! `quanta` comes with feature flags that enable convenient conversions to time types in other +//! popular crates, such as: //! - `prost` - provides an implementation into [`Timestamp`][prost_types_timestamp] from -//! `prost_types` +//! `prost_types` //! //! # Platform Support +//! //! At a high level, `quanta` carries support for most major operating systems out of the box: -//! - Windows ([QueryPerformanceCounter]) -//! - macOS/OS X/iOS ([mach_continuous_time]) -//! - Linux/*BSD/Solaris ([clock_gettime]) +//! - Windows ([`QueryPerformanceCounter`][QueryPerformanceCounter]) +//! - macOS/OS X/iOS ([`mach_absolute_time`][mach_absolute_time]) +//! - Linux/*BSD/Solaris ([`clock_gettime`][clock_gettime]) //! //! These platforms are supported in the "reference" clock sense, and support for using the Time //! Stamp Counter as a clocksource is more subtle, and explained below. //! -//! # Time Stamp Counter support -//! Accessing the TSC requires being on the x86_64 architecture, with access to SSE2. Additionally, -//! the processor must support either constant or nonstop/invariant TSC. This ensures that the TSC -//! ticks at a constant rate which can be easily scaled. +//! ## WASM support +//! +//! This library can be built for WASM targets, but in this case the resolution and accuracy of +//! measurements can be limited by the WASM environment. In particular, when running on the +//! `wasm32-unknown-unknown` target in browsers, `quanta` will use [windows.performance.now] as a +//! clock. This mean the accuracy is limited to milliseconds instead of the usual nanoseconds on +//! other targets. When running within a WASI environment (target `wasm32-wasi`), the accuracy of +//! the clock depends on the VM implementation. +//! +//! # TSC Support +//! +//! Accessing the TSC requires being on the `x86_64` architecture, with access to SSE2. +//! Additionally, the processor must support either constant or nonstop/invariant TSC. This ensures +//! that the TSC ticks at a constant rate which can be easily scaled. //! //! A caveat is that "constant" TSC doesn't account for all possible power states (levels of power //! down or sleep that a CPU can enter to save power under light load, etc) and so a constant TSC @@ -73,68 +91,63 @@ //! recalibration. Nonstop/invariant TSC does not have this limitation and is stable over long //! periods of time. //! -//! Roughly speaking, the following list contains the beginning model/generation of processors -//! where you should be able to expect having invariant TSC support: +//! Roughly speaking, the following list contains the beginning model/generation of processors where +//! you should be able to expect having invariant TSC support: //! - Intel Nehalem and newer for server-grade //! - Intel Skylake and newer for desktop-grade //! - VIA Centaur Nano and newer (circumstantial evidence here) //! - AMD Phenom and newer //! -//! Ultimately, `quanta` will query CPUID information to determine if the processor has the -//! required features to use the TSC. +//! Ultimately, `quanta` will query CPUID information to determine if the processor has the required +//! features to use the TSC. //! //! # Calibration +//! //! As the TSC doesn't necessarily tick at reference scale -- i.e. one tick isn't always one //! nanosecond -- we have to apply a scaling factor when converting from source to reference time -//! scale. We acquire this scaling factor by querying the processor or calibrating our source -//! clock to the reference clock. -//! -//! In some cases, on newer processors, the frequency of the TSC can be queried directly, providing -//! a fixed scaling factor with no further calibration necessary. In other cases, `quanta` will -//! have to run its own calibration before the clock is ready to be used: repeatedly taking -//! measurements from both the reference and source clocks until a stable scaling factor has been -//! established. +//! scale to provide this. We acquire this scaling factor by repeatedly taking measurements from +//! both the reference and source clocks, until we have a statistically-relevant measure of the +//! average scaling factor. We do some additional work to convert this scaling factor into a +//! power-of-two number that allows us to optimize the code, and thus reduce the generated +//! instructions required to scale a TSC value. //! //! This calibration is stored globally and reused. However, the first `Clock` that is created in -//! an application will block for a small period of time as it runs this calibration loop. The -//! time spent in the calibration loop is limited to 200ms overall. In practice, `quanta` will -//! reach a stable calibration quickly (usually 10-20ms, if not less) and so this deadline is -//! unlikely to be reached. +//! an application will block for a small period of time as it runs this calibration loop. The time +//! spent in the calibration loop is limited to 200ms overall. In practice, `quanta` will reach a +//! stable calibration quickly (usually 10-20ms, if not less) and so this deadline is unlikely to be +//! reached. //! //! # Caveats +//! //! Utilizing the TSC can be a tricky affair, and so here is a list of caveats that may or may not //! apply, and is in no way exhaustive: //! - CPU hotplug behavior is undefined //! - raw values may time warp //! - measurements from the TSC may drift past or behind the comparable reference clock //! -//! # WASM support -//! -//! This library can be built for WASM targets, but in this case the resolution -//! and accuracy of measurements can be limited by the WASM environment. In -//! particular, when running on the `wasm32-unknown-unknown` target in browsers, -//! `quanta` will use [windows.performance.now] as a clock. This mean the -//! accuracy is limited to milliseconds instead of the usual nanoseconds on -//! other targets. When running within a WASI environment (target -//! `wasm32-wasi`), the accuracy of the clock depends on the VM implementation. +//! Another important caveat is that `quanta` does not track time across system suspends. Simply +//! put, if a time measurement (such as using [`Instant::now`][crate::Instant::now]) is taken, and +//! then the system is suspended, and then another measurement is taken, the difference between +//! those the two would not include the time the system was in suspend. //! +//! [tsc]: https://en.wikipedia.org/wiki/Time_Stamp_Counter //! [QueryPerformanceCounter]: https://msdn.microsoft.com/en-us/library/ms644904(v=VS.85).aspx -//! [mach_continuous_time]: https://developer.apple.com/documentation/kernel/1646199-mach_continuous_time +//! [mach_absolute_time]: https://developer.apple.com/documentation/kernel/1462446-mach_absolute_time //! [clock_gettime]: https://linux.die.net/man/3/clock_gettime //! [prost_types_timestamp]: https://docs.rs/prost-types/0.7.0/prost_types/struct.Timestamp.html //! [windows.performance.now]: https://developer.mozilla.org/en-US/docs/Web/API/Performance/now +#![deny(missing_docs)] +#![deny(clippy::all)] +#![allow(clippy::must_use_candidate)] + use crossbeam_utils::atomic::AtomicCell; use std::time::Duration; use std::{cell::RefCell, sync::Arc}; use once_cell::sync::OnceCell; -#[cfg(any(target_arch = "x86", target_arch = "x86_64"))] -use raw_cpuid::CpuId; -mod monotonic; -use self::monotonic::Monotonic; -mod counter; -use self::counter::Counter; +mod clocks; +use self::clocks::{Counter, Monotonic}; mod mock; pub use self::mock::{IntoNanoseconds, Mock}; mod instant; @@ -144,12 +157,16 @@ mod stats; use self::stats::Variance; +// Global clock, used by `Instant::now`. static GLOBAL_CLOCK: OnceCell = OnceCell::new(); +// Global recent measurement, used by `Clock::recent` and `Instant::recent`. static GLOBAL_RECENT: AtomicCell = AtomicCell::new(0); +// Global calibration, shared by all clocks. static GLOBAL_CALIBRATION: OnceCell = OnceCell::new(); +// Per-thread clock override, used by `quanta::with_clock`, `Instant::now`, and sometimes `Instant::recent`. thread_local! { static CLOCK_OVERRIDE: RefCell> = RefCell::new(None); } @@ -161,13 +178,12 @@ const MAXIMUM_CAL_ERROR_NS: u64 = 10; // Don't run the calibration loop for longer than 200ms of wall time. -const MAXIMUM_CAL_TIME: Duration = Duration::from_millis(200); +const MAXIMUM_CAL_TIME_NS: u64 = 200 * 1000 * 1000; -#[allow(dead_code)] #[derive(Debug)] enum ClockType { Monotonic(Monotonic), - Counter(AtomicCell, Monotonic, Counter, Calibration), + Counter(Monotonic, Counter, Calibration), Mock(Arc), } @@ -180,7 +196,7 @@ } impl Calibration { - pub fn new() -> Calibration { + fn new() -> Calibration { Calibration { ref_time: 0, src_time: 0, @@ -189,22 +205,24 @@ } } + fn reset_timebases(&mut self, reference: Monotonic, source: &Counter) { + self.ref_time = reference.now(); + self.src_time = source.now(); + } + fn scale_src_to_ref(&self, src_raw: u64) -> u64 { let delta = src_raw.saturating_sub(self.src_time); let scaled = mul_div_po2_u64(delta, self.scale_factor, self.scale_shift); scaled + self.ref_time } - fn calibrate(&mut self, reference: &Monotonic, source: &Counter) { - // future improvement: read the TSC frequency directly with something like the - // code in this PR: https://github.com/hermitcore/uhyve/pull/24 - + fn calibrate(&mut self, reference: Monotonic, source: &Counter) { let mut variance = Variance::default(); - let deadline = reference.now() + MAXIMUM_CAL_TIME.as_nanos() as u64; + let deadline = reference.now() + MAXIMUM_CAL_TIME_NS; - self.ref_time = reference.now(); - self.src_time = source.now(); + self.reset_timebases(reference, source); + // Each busy loop should spin for 1 microsecond. (1000 nanoseconds) let loop_delta = 1000; loop { // Busy loop to burn some time. @@ -239,7 +257,7 @@ let samples = variance.samples(); if samples > MINIMUM_CAL_ROUNDS - && mwe < MAXIMUM_CAL_ERROR_NS + && mwe < MAXIMUM_CAL_ERROR_NS as f64 && mean_error / mean <= 1.0 { break; @@ -248,7 +266,7 @@ } } - fn adjust_cal_ratio(&mut self, reference: &Monotonic, source: &Counter) { + fn adjust_cal_ratio(&mut self, reference: Monotonic, source: &Counter) { // Overall algorithm: measure the delta between our ref/src_time values and "now" versions // of them, calculate the ratio between the deltas, and then find a numerator and // denominator to express that ratio such that the denominator is always a power of two. @@ -261,18 +279,14 @@ // Then, conversion from a raw value simply becomes a multiply and a bit shift instead of a // multiply and full-blown divide. let ref_end = reference.now(); - let src_end = source.end(); + let src_end = source.now(); let ref_d = ref_end.wrapping_sub(self.ref_time); let src_d = src_end.wrapping_sub(self.src_time); - // TODO: we should almost never get a zero here because that would mean denom was greater - // than 2^63 which is already a red flag.. but i'm not 100% sure if we can prove it well - // enough to simply keep the panic around? gotta think on this - let src_d_po2 = src_d.next_power_of_two(); - if src_d_po2 == 0 { - panic!("po2_denom was zero!"); - } + let src_d_po2 = src_d + .checked_next_power_of_two() + .unwrap_or_else(|| 2_u64.pow(63)); // TODO: lossy conversion back and forth just to get an approximate value, can we do better // with integer math? not sure @@ -299,15 +313,15 @@ /// /// Support for TSC, etc, are checked at the time of creation, not compile-time. pub fn new() -> Clock { - let reference = Monotonic::new(); + let reference = Monotonic::default(); let inner = if has_tsc_support() { - let source = Counter::new(); + let source = Counter::default(); let calibration = GLOBAL_CALIBRATION.get_or_init(|| { let mut calibration = Calibration::new(); - calibration.calibrate(&reference, &source); + calibration.calibrate(reference, &source); calibration }); - ClockType::Counter(AtomicCell::new(0), reference, source, *calibration) + ClockType::Counter(reference, source, *calibration) } else { ClockType::Monotonic(reference) }; @@ -337,17 +351,7 @@ pub fn now(&self) -> Instant { match &self.inner { ClockType::Monotonic(monotonic) => Instant(monotonic.now()), - ClockType::Counter(last, _, counter, _) => { - let now = counter.now(); - // Update the last timestamp with `now`, if `now` is greater - // than the current value. - // TODO: replace with `AtomicCell::fetch_max` once `crossbeam-utils` implements it. - let last = last.fetch_update(|current| Some(current.max(now))).unwrap(); - // `fetch_max` always returns the previous value, so we need to - // see which is *actually* the max. - let actual = std::cmp::max(now, last); - self.scaled(actual) - } + ClockType::Counter(_, counter, _) => self.scaled(counter.now()), ClockType::Mock(mock) => Instant(mock.value()), } } @@ -358,54 +362,12 @@ /// or to be monotonic. Value can be scaled to reference time by calling either [`scaled`] /// or [`delta`]. /// - /// If you need maximum accuracy in your measurements, consider using [`start`] and [`end`]. - /// /// [`scaled`]: Clock::scaled /// [`delta`]: Clock::delta - /// [`start`]: Clock::start - /// [`end`]: Clock::end pub fn raw(&self) -> u64 { match &self.inner { ClockType::Monotonic(monotonic) => monotonic.now(), - ClockType::Counter(_, _, counter, _) => counter.now(), - ClockType::Mock(mock) => mock.value(), - } - } - - /// Gets the underlying time from the source clock, specific to starting an operation. - /// - /// Value is not guaranteed to be in nanoseconds. - /// - /// Provides the same functionality as [`raw`], but tries to ensure that no extra CPU - /// instructions end up executing after the measurement is taken. Since normal processors are - /// typically out-of-order, other operations that logically come before a call to this method - /// could be reordered to come after the measurement, thereby skewing the overall time - /// measured. - /// - /// [`raw`]: Clock::raw - pub fn start(&self) -> u64 { - match &self.inner { - ClockType::Monotonic(monotonic) => monotonic.now(), - ClockType::Counter(_, _, counter, _) => counter.start(), - ClockType::Mock(mock) => mock.value(), - } - } - - /// Gets the underlying time from the source clock, specific to ending an operation. - /// - /// Value is not guaranteed to be in nanoseconds. - /// - /// Provides the same functionality as [`raw`], but tries to ensure that no extra CPU - /// instructions end up executing before the measurement is taken. Since normal processors are - /// typically out-of-order, other operations that logically come after a call to this method - /// could be reordered to come before the measurement, thereby skewing the overall time - /// measured. - /// - /// [`raw`]: Clock::raw - pub fn end(&self) -> u64 { - match &self.inner { - ClockType::Monotonic(monotonic) => monotonic.now(), - ClockType::Counter(_, _, counter, _) => counter.end(), + ClockType::Counter(_, counter, _) => counter.now(), ClockType::Mock(mock) => mock.value(), } } @@ -419,36 +381,53 @@ /// Returns an [`Instant`]. pub fn scaled(&self, value: u64) -> Instant { let scaled = match &self.inner { - ClockType::Counter(_, _, _, calibration) => scale_src_to_ref(value, calibration), + ClockType::Counter(_, _, calibration) => calibration.scale_src_to_ref(value), _ => value, }; Instant(scaled) } - /// Calculates the delta between two measurements, and scales to reference time. + /// Calculates the delta, in nanoseconds, between two raw measurements. /// - /// This method is slightly faster when you know you need the delta between two raw - /// measurements, or a start/end measurement, than using [`scaled`] for both conversions. + /// This method is very similar to [`delta`] but reduces overhead + /// for high-frequency measurements that work with nanosecond + /// counts internally, as it avoids the conversion of the delta + /// into [`Duration`]. /// - /// [`scaled`]: Clock::scaled - pub fn delta(&self, start: u64, end: u64) -> Duration { + /// [`delta`]: Clock::delta + pub fn delta_as_nanos(&self, start: u64, end: u64) -> u64 { // Safety: we want wrapping_sub on the end/start delta calculation so that two measurements // split across a rollover boundary still return the right result. However, we also know // the TSC could potentially give us different values between cores/sockets, so we're just // doing our due diligence here to make sure we're not about to create some wacky duration. if end <= start { - return Duration::new(0, 0); + return 0; } let delta = end.wrapping_sub(start); - let scaled = match &self.inner { - ClockType::Counter(_, _, _, calibration) => { + match &self.inner { + ClockType::Counter(_, _, calibration) => { mul_div_po2_u64(delta, calibration.scale_factor, calibration.scale_shift) } _ => delta, - }; - Duration::from_nanos(scaled) + } + } + + /// Calculates the delta between two raw measurements. + /// + /// This method is slightly faster when you know you need the delta between two raw + /// measurements, or a start/end measurement, than using [`scaled`] for both conversions. + /// + /// In code that simply needs access to the whole number of nanoseconds + /// between the two measurements, consider [`Clock::delta_as_nanos`] + /// instead, which is slightly faster than having to call both this method + /// and [`Duration::as_nanos`]. + /// + /// [`scaled`]: Clock::scaled + /// [`delta_as_nanos`]: Clock::delta_as_nanos + pub fn delta(&self, start: u64, end: u64) -> Duration { + Duration::from_nanos(self.delta_as_nanos(start, end)) } /// Gets the most recent current time, scaled to reference time. @@ -458,12 +437,14 @@ /// read directly without the need to scale to reference time. /// /// The upkeep thread must be started in order to update the time. You can read the - /// documentation for [`Builder`] for more information on starting the upkeep thread, as well - /// as the details of the "current time" mechanism. + /// documentation for [`Upkeep`][upkeep] for more information on starting the upkeep thread, as + /// well as the details of the "current time" mechanism. /// /// If the upkeep thread has not been started, the return value will be `0`. /// /// Returns an [`Instant`]. + /// + /// [upkeep]: crate::Upkeep pub fn recent(&self) -> Instant { match &self.inner { ClockType::Mock(mock) => Instant(mock.value()), @@ -471,12 +452,15 @@ } } - /// Updates the recent current time. - /// - /// Most callers should use the existing [`Builder`] machinery for spawning a background thread - /// to handle upkeep, rather than calling [`upkeep`] directly. - pub fn upkeep(value: Instant) { - GLOBAL_RECENT.store(value.0); + #[cfg(test)] + fn reset_timebase(&mut self) -> bool { + match &mut self.inner { + ClockType::Counter(reference, source, calibration) => { + calibration.reset_timebases(*reference, source); + true + } + _ => false, + } } } @@ -491,13 +475,10 @@ fn clone(&self) -> Self { match self { ClockType::Mock(mock) => ClockType::Mock(mock.clone()), - ClockType::Monotonic(monotonic) => ClockType::Monotonic(monotonic.clone()), - ClockType::Counter(last, monotonic, counter, calibration) => ClockType::Counter( - AtomicCell::new(last.load()), - monotonic.clone(), - counter.clone(), - *calibration, - ), + ClockType::Monotonic(monotonic) => ClockType::Monotonic(*monotonic), + ClockType::Counter(monotonic, counter, calibration) => { + ClockType::Counter(*monotonic, counter.clone(), *calibration) + } } } } @@ -509,7 +490,7 @@ CLOCK_OVERRIDE.with(|current| { let old = current.replace(Some(clock.clone())); let result = f(); - let _ = current.replace(old); + current.replace(old); result }) } @@ -521,12 +502,12 @@ /// recent time is updated. For example, programs using an asynchronous runtime may prefer to /// schedule a task that does the updating, avoiding an extra thread. pub fn set_recent(instant: Instant) { - GLOBAL_RECENT.store(instant.as_u64()); + GLOBAL_RECENT.store(instant.0); } #[inline] pub(crate) fn get_now() -> Instant { - if let Some(instant) = CLOCK_OVERRIDE.with(|clock| clock.borrow().as_ref().map(|c| c.now())) { + if let Some(instant) = CLOCK_OVERRIDE.with(|clock| clock.borrow().as_ref().map(Clock::now)) { instant } else { GLOBAL_CLOCK.get_or_init(Clock::new).now() @@ -542,26 +523,19 @@ // Given that global recent time shouldn't ever be getting _actually_ updated in tests, this // should be a reasonable trade-off. let recent = GLOBAL_RECENT.load(); - if recent != 0 { - Instant(recent) - } else { + if recent == 0 { get_now() + } else { + Instant(recent) } } #[inline] -fn scale_src_to_ref(src_raw: u64, cal: &Calibration) -> u64 { - let delta = src_raw.saturating_sub(cal.src_time); - let scaled = mul_div_po2_u64(delta, cal.scale_factor, cal.scale_shift); - scaled + cal.ref_time -} - -#[inline] fn mul_div_po2_u64(value: u64, numer: u64, denom: u32) -> u64 { // Modified muldiv routine where the denominator has to be a power of two. `denom` is expected // to be the number of bits to shift, not the actual decimal value. - let mut v: u128 = value as u128; - v *= numer as u128; + let mut v = u128::from(value); + v *= u128::from(numer); v >>= denom; v as u64 } @@ -569,7 +543,15 @@ #[allow(dead_code)] #[cfg(all(target_arch = "x86_64", target_feature = "sse2"))] fn has_tsc_support() -> bool { - read_cpuid_nonstop_tsc() && read_cpuid_rdtscp_support() + let cpuid = raw_cpuid::CpuId::new(); + let has_invariant_tsc = cpuid + .get_advanced_power_mgmt_info() + .map_or(false, |apm| apm.has_invariant_tsc()); + let has_rdtscp = cpuid + .get_extended_processor_and_feature_identifiers() + .map_or(false, |epf| epf.has_rdtscp()); + + has_invariant_tsc && has_rdtscp } #[allow(dead_code)] @@ -578,31 +560,15 @@ false } -#[cfg(any(target_arch = "x86", target_arch = "x86_64"))] -fn read_cpuid_nonstop_tsc() -> bool { - let cpuid = CpuId::new(); - cpuid - .get_advanced_power_mgmt_info() - .map_or(false, |efi| efi.has_invariant_tsc()) -} - -#[cfg(any(target_arch = "x86", target_arch = "x86_64"))] -fn read_cpuid_rdtscp_support() -> bool { - let cpuid = CpuId::new(); - cpuid - .get_extended_processor_and_feature_identifiers() - .map_or(false, |efi| efi.has_rdtscp()) -} - #[cfg(test)] pub mod tests { - use super::{Clock, Monotonic}; + use super::{Clock, Counter, Monotonic}; use average::{Merge, Variance}; + use std::time::{Duration, Instant}; #[cfg(all(target_arch = "wasm32", target_os = "unknown"))] mod configure_wasm_tests { - // until https://github.com/rustwasm/wasm-bindgen/issues/2571 is resolved - // these tests will only run in browsers + // Until https://github.com/rustwasm/wasm-bindgen/issues/2571 is resolved, these tests will only run in browsers. wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser); } @@ -613,9 +579,9 @@ )] fn test_mock() { let (clock, mock) = Clock::mock(); - assert_eq!(clock.now().as_u64(), 0); + assert_eq!(clock.now().0, 0); mock.increment(42); - assert_eq!(clock.now().as_u64(), 42); + assert_eq!(clock.now().0, 42); } #[test] @@ -625,7 +591,7 @@ )] fn test_now() { let clock = Clock::new(); - assert!(clock.now().as_u64() > 0); + assert!(clock.now().0 > 0); } #[test] @@ -643,31 +609,11 @@ all(target_arch = "wasm32", target_os = "unknown"), wasm_bindgen_test::wasm_bindgen_test )] - fn test_start() { - let clock = Clock::new(); - assert!(clock.start() > 0); - } - - #[test] - #[cfg_attr( - all(target_arch = "wasm32", target_os = "unknown"), - wasm_bindgen_test::wasm_bindgen_test - )] - fn test_end() { - let clock = Clock::new(); - assert!(clock.end() > 0); - } - - #[test] - #[cfg_attr( - all(target_arch = "wasm32", target_os = "unknown"), - wasm_bindgen_test::wasm_bindgen_test - )] fn test_scaled() { let clock = Clock::new(); let raw = clock.raw(); let scaled = clock.scaled(raw); - assert!(scaled.as_u64() > 0); + assert!(scaled.0 > 0); } #[test] @@ -676,9 +622,10 @@ all(target_arch = "wasm32", target_os = "unknown"), wasm_bindgen_test::wasm_bindgen_test )] + fn test_reference_source_calibration() { - let clock = Clock::new(); - let reference = Monotonic::new(); + let mut clock = Clock::new(); + let reference = Monotonic::default(); let loops = 10000; @@ -687,50 +634,58 @@ let mut ref_samples = [0u64; 1024]; for _ in 0..loops { + // We have to reset the "timebase" of the clock/calibration when testing in this way. + // + // Since `quanta` is designed around mimicing `Instant`, we care about measuring the _passage_ of time, but + // not matching our calculation of wall-clock time to the system's calculation of wall-clock time, in terms + // of their absolute values. + // + // As the system adjusts its clocks over time, whether due to NTP skew, or delays in updating the derived monotonic + // time, and so on, our original measurement base from the reference source -- which we use to anchor how we + // convert our scaled source measurement into the same reference timebase -- can skew further away from the + // current reference time in terms of the rate at which it ticks forward. + // + // Essentially, what we're saying here is that we want to test the scaling ratio that we generated in + // calibration, but not necessarily that the resulting value -- which is meant to be in the same timebase as + // the reference -- is locked to the reference itself. For example, if the reference is in nanoseconds, we + // want our source to be scaled to nanoseconds, too. We don't care if the system shoves the reference back + // and forth via NTP skew, etc... we just need to do enough source-to-reference calibration loops to figure + // out what the right amount is to scale the TSC -- since we require an invariant/nonstop TSC -- to get it + // to nanoseconds. + // + // At the risk of saying _too much_, while the delta between `Clock::now` and `Monotonic::now` may grow over + // time if the timebases are not reset, we can readily observe in this test that the delta between the + // first/last measurement loop for both source/reference are independently close i.e. the ratio by which we + // scale the source measurements gets it close, and stays close, to the reference measurements in terms of + // the _passage_ of time. + clock.reset_timebase(); + for i in 0..1024 { - src_samples[i] = clock.now().as_u64(); + src_samples[i] = clock.now().0; ref_samples[i] = reference.now(); } - let mut last = None; - let is_src_monotonic = src_samples.iter().all(|n| match last { - None => { - last = Some(n); - true - } - Some(on) => { - if n >= on { - last = Some(n); - true - } else { - false - } - } - }); - assert!(is_src_monotonic); + let is_src_monotonic = src_samples + .iter() + .map(Some) + .reduce(|last, current| last.and_then(|lv| current.filter(|cv| *cv >= lv))) + .flatten() + .copied(); + assert_eq!(is_src_monotonic, Some(src_samples[1023])); - let mut last = None; - let is_ref_monotonic = ref_samples.iter().all(|n| match last { - None => { - last = Some(n); - true - } - Some(on) => { - if n >= on { - last = Some(n); - true - } else { - false - } - } - }); - assert!(is_ref_monotonic); + let is_ref_monotonic = ref_samples + .iter() + .map(Some) + .reduce(|last, current| last.and_then(|lv| current.filter(|cv| *cv >= lv))) + .flatten() + .copied(); + assert_eq!(is_ref_monotonic, Some(ref_samples[1023])); let local = src_samples .iter() .zip(ref_samples.iter()) - .map(|(s, r)| (*s as f64, *r as f64)) - .map(|(s, r)| (r - s).abs()) + .map(|(s, r)| *s as f64 - *r as f64) + .map(|f| f.abs()) .collect::(); overall.merge(&local); @@ -754,38 +709,45 @@ all(target_arch = "wasm32", target_os = "unknown"), wasm_bindgen_test::wasm_bindgen_test )] - fn test_reference_self_calibration() { - let reference = Monotonic::new(); + fn measure_source_reference_self_timing() { + let source = Counter::default(); + let reference = Monotonic::default(); let loops = 10000; - let samples = 1024; - let mut overall = Variance::new(); - let mut deltas = Vec::with_capacity(samples); - deltas.reserve(samples); + let mut src_deltas = Vec::new(); + let mut src_samples = [0u64; 100]; for _ in 0..loops { - deltas.clear(); - for _ in 0..samples { - let rstart = reference.now(); - let rend = reference.now(); + let start = Instant::now(); + for i in 0..100 { + src_samples[i] = source.now(); + } - deltas.push(rend - rstart); + src_deltas.push(start.elapsed().as_secs_f64()); + } + + let mut ref_deltas = Vec::new(); + let mut ref_samples = [0u64; 100]; + + for _ in 0..loops { + let start = Instant::now(); + for i in 0..100 { + ref_samples[i] = reference.now(); } - let local = deltas.iter().map(|i| *i as f64).collect::(); - overall.merge(&local); + ref_deltas.push(start.elapsed().as_secs_f64()); } + let src_variance = src_deltas.into_iter().collect::(); + let ref_variance = ref_deltas.into_iter().collect::(); + + let src_variance_ns = Duration::from_secs_f64(src_variance.mean() / 100.0); + let ref_variance_ns = Duration::from_secs_f64(ref_variance.mean() / 100.0); + println!( - "reference/reference inter-call delta: mean={} error={} mean-var={}", - overall.mean(), - overall.error(), - overall.variance_of_mean() + "source call average: {:?}, reference call average: {:?}", + src_variance_ns, ref_variance_ns ); - - // We should be able to call the reference clock, back-to-back, within 2000 nanoseconds. If - // it's slower than that, something is probably amiss on the system the test is running under. - assert!(overall.mean() < 2000.0); } } diff -Nru temporalio-1.3.0/vendor/quanta/src/mock.rs temporalio-1.3.0/vendor/quanta/src/mock.rs --- temporalio-1.3.0/vendor/quanta/src/mock.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/src/mock.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,3 @@ -#![allow(dead_code)] use crossbeam_utils::atomic::AtomicCell; use std::{sync::Arc, time::Duration}; @@ -7,6 +6,7 @@ /// This allows users of [`Mock`] to increment/decrement the time both with raw /// integer values and the more convenient [`Duration`] type. pub trait IntoNanoseconds { + /// Consumes this value, converting it to a nanosecond representation. fn into_nanos(self) -> u64; } @@ -48,7 +48,7 @@ let amount = amount.into_nanos(); self.offset .fetch_update(|current| Some(current + amount)) - .unwrap(); + .expect("should never return an error"); } /// Decrements the time by the given amount. @@ -56,7 +56,7 @@ let amount = amount.into_nanos(); self.offset .fetch_update(|current| Some(current - amount)) - .unwrap(); + .expect("should never return an error"); } /// Gets the current value of this `Mock`. diff -Nru temporalio-1.3.0/vendor/quanta/src/monotonic.rs temporalio-1.3.0/vendor/quanta/src/monotonic.rs --- temporalio-1.3.0/vendor/quanta/src/monotonic.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/src/monotonic.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,130 +0,0 @@ -#[cfg(any(target_os = "macos", target_os = "ios"))] -use mach::mach_time::{mach_continuous_time, mach_timebase_info}; - -#[derive(Debug, Clone)] -pub struct Monotonic { - factor: u64, -} - -#[cfg(all( - not(target_os = "macos"), - not(target_os = "ios"), - not(target_os = "windows") -))] -impl Monotonic { - pub fn new() -> Monotonic { - Monotonic { factor: 0 } - } -} - -#[cfg(all( - not(target_os = "macos"), - not(target_os = "ios"), - not(target_os = "windows"), - not(target_arch = "wasm32") -))] -impl Monotonic { - pub fn now(&self) -> u64 { - let mut ts = libc::timespec { - tv_sec: 0, - tv_nsec: 0, - }; - unsafe { - libc::clock_gettime(libc::CLOCK_MONOTONIC, &mut ts); - } - (ts.tv_sec as u64) * 1_000_000_000 + (ts.tv_nsec as u64) - } -} - -#[cfg(target_os = "windows")] -impl Monotonic { - pub fn new() -> Monotonic { - use std::mem; - use winapi::um::profileapi; - - let denom = unsafe { - let mut freq = mem::zeroed(); - if profileapi::QueryPerformanceFrequency(&mut freq) == 0 { - unreachable!( - "QueryPerformanceFrequency on Windows XP or later should never return zero!" - ); - } - *freq.QuadPart() as u64 - }; - - Monotonic { - factor: 1_000_000_000 / denom, - } - } -} - -#[cfg(target_os = "windows")] -impl Monotonic { - pub fn now(&self) -> u64 { - use std::mem; - use winapi::um::profileapi; - - let raw = unsafe { - let mut count = mem::zeroed(); - if profileapi::QueryPerformanceCounter(&mut count) == 0 { - unreachable!( - "QueryPerformanceCounter on Windows XP or later should never return zero!" - ); - } - *count.QuadPart() as u64 - }; - raw * self.factor - } -} - -#[cfg(all(target_arch = "wasm32", target_os = "unknown"))] -impl Monotonic { - pub fn now(&self) -> u64 { - let now = web_sys::window() - .expect( - "failed to find the global Window object, the \ - wasm32-unknown-unknown implementation only support \ - running in web browsers. Use wasm32-wasi to run \ - elsewhere", - ) - .performance() - .expect("window.performance is not available") - .now(); - // window.performance.now returns the time in milliseconds - return f64::trunc(now * 1000.0) as u64; - } -} - -#[cfg(all(target_arch = "wasm32", target_os = "wasi"))] -impl Monotonic { - pub fn now(&self) -> u64 { - unsafe { wasi::clock_time_get(wasi::CLOCKID_MONOTONIC, 1).expect("failed to get time") } - } -} - -#[cfg(any(target_os = "macos", target_os = "ios"))] -impl Monotonic { - pub fn new() -> Monotonic { - let mut info = mach_timebase_info { numer: 0, denom: 0 }; - unsafe { - mach_timebase_info(&mut info); - } - - let factor = u64::from(info.numer) / u64::from(info.denom); - Monotonic { factor } - } -} - -#[cfg(any(target_os = "macos", target_os = "ios"))] -impl Monotonic { - pub fn now(&self) -> u64 { - let raw = unsafe { mach_continuous_time() }; - raw * self.factor - } -} - -impl Default for Monotonic { - fn default() -> Self { - Self::new() - } -} diff -Nru temporalio-1.3.0/vendor/quanta/src/stats.rs temporalio-1.3.0/vendor/quanta/src/stats.rs --- temporalio-1.3.0/vendor/quanta/src/stats.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/src/stats.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,18 +1,18 @@ /// Estimates the arithmetic mean (and the error) for a set of samples. /// -/// This type is written and maintained internally as it is trivial to implement and doesn't -/// warrant a separate dependency. As well, we add some features like exposing the sample count, +/// This type is written and maintained internally as it is trivial to implement and doesn't warrant +/// a separate dependency. As well, we add some features like exposing the sample count, /// calculating the mean + error value, etc, that existing crates don't do. /// -/// Based on Welford's algorithm: computes the mean incrementally, with constant time and -/// space complexity. +/// Based on [Welford's algorithm][welfords] which computes the mean incrementally, with constant +/// time and space complexity. /// -/// https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Welford's_online_algorithm +/// [welfords]: https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Welford%27s_online_algorithm #[derive(Default)] pub(crate) struct Variance { mean: f64, + mean2: f64, n: u64, - sum_sq: f64, } impl Variance { @@ -20,9 +20,9 @@ pub fn add(&mut self, sample: f64) { self.n += 1; let n_f = self.n as f64; - let delta = (sample - self.mean) / self.n as f64; - self.mean += delta; - self.sum_sq += delta * delta * n_f * (n_f - 1.0); + let delta_sq = (sample - self.mean).powi(2); + self.mean2 += ((n_f - 1.0) * delta_sq) / n_f; + self.mean += (sample - self.mean) / n_f; } #[inline] @@ -37,14 +37,14 @@ } let n_f = self.n as f64; - ((self.sum_sq / (n_f - 1.0)) / n_f).sqrt() + let sd = (self.mean2 / (n_f - 1.0)).sqrt(); + sd / n_f.sqrt() } #[inline] - pub fn mean_with_error(&self) -> u64 { + pub fn mean_with_error(&self) -> f64 { let mean = self.mean.abs(); - let total = mean + self.mean_error().abs(); - total as u64 + mean + self.mean_error().abs() } #[inline] @@ -57,3 +57,22 @@ self.n } } + +#[cfg(test)] +mod tests { + use super::Variance; + + #[test] + fn basic() { + let inputs = &[5.0, 10.0, 12.0, 15.0, 20.0]; + let mut variance = Variance::default(); + for input in inputs { + variance.add(*input); + } + + assert_eq!(variance.mean(), 12.4); + + let expected_mean_error = 2.5019; + assert!((variance.mean_error() - expected_mean_error).abs() < 0.001); + } +} diff -Nru temporalio-1.3.0/vendor/quanta/src/upkeep.rs temporalio-1.3.0/vendor/quanta/src/upkeep.rs --- temporalio-1.3.0/vendor/quanta/src/upkeep.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quanta/src/upkeep.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -use crate::Clock; +use crate::{set_recent, Clock}; use std::{ fmt, io, sync::{ @@ -77,6 +77,15 @@ } } +impl std::error::Error for Error { + fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { + match self { + Self::UpkeepRunning => None, + Self::FailedToSpawnUpkeepThread(e) => Some(e), + } + } +} + impl Upkeep { /// Creates a new [`Upkeep`]. /// @@ -94,9 +103,14 @@ /// Start the upkeep thread, periodically updating the global coarse time. /// - /// If the return value is [`Ok(handle)`], then the thread was spawned successfully and can be - /// stopped by dropping the returned handle. Otherwise, [`Err`] contains the error that was - /// returned when trying to spawn the thread. + /// [`Handle`] represents a drop guard for the upkeep thread if it is successfully spawned. + /// Dropping the handle will also instruct the upkeep thread to stop and exist, so the handle + /// must be held while the upkeep thread should continue to run. + /// + /// # Errors + /// + /// If either an existing upkeep thread is running, or there was an issue when attempting to + /// spawn the upkeep thread, an error variant will be returned describing the error. pub fn start(self) -> Result { // If another upkeep thread is running, inform the caller. let _ = GLOBAL_UPKEEP_RUNNING @@ -113,8 +127,7 @@ .name("quanta-upkeep".to_string()) .spawn(move || { while !their_done.load(Ordering::Acquire) { - let now = clock.now(); - Clock::upkeep(now); + set_recent(clock.now()); thread::sleep(interval); } @@ -142,7 +155,7 @@ self.done.store(true, Ordering::Release); if let Some(handle) = self.handle.take() { - let _ = handle + let _result = handle .join() .map_err(|_| io::Error::new(io::ErrorKind::Other, "failed to stop upkeep thread")); } diff -Nru temporalio-1.3.0/vendor/quote/build.rs temporalio-1.3.0/vendor/quote/build.rs --- temporalio-1.3.0/vendor/quote/build.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quote/build.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,38 +0,0 @@ -use std::env; -use std::process::{self, Command}; -use std::str; - -fn main() { - println!("cargo:rerun-if-changed=build.rs"); - - let version = match rustc_version() { - Some(version) => version, - None => return, - }; - - if version.minor < 31 { - eprintln!("Minimum supported rustc version is 1.31"); - process::exit(1); - } - - if version.minor < 53 { - // https://github.com/rust-lang/rust/issues/43081 - println!("cargo:rustc-cfg=needs_invalid_span_workaround"); - } -} - -struct RustcVersion { - minor: u32, -} - -fn rustc_version() -> Option { - let rustc = env::var_os("RUSTC")?; - let output = Command::new(rustc).arg("--version").output().ok()?; - let version = str::from_utf8(&output.stdout).ok()?; - let mut pieces = version.split('.'); - if pieces.next() != Some("rustc 1") { - return None; - } - let minor = pieces.next()?.parse().ok()?; - Some(RustcVersion { minor }) -} diff -Nru temporalio-1.3.0/vendor/quote/.cargo-checksum.json temporalio-1.3.0/vendor/quote/.cargo-checksum.json --- temporalio-1.3.0/vendor/quote/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quote/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"59a2c8d6c9bbf664015750f61f7f1e6a1397f1e5e3b679e941d920ebe23ada56","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"15d3ee300a69f4eec5f81b74fce4652fa22ce84d44413379bc756e4aaca23300","build.rs":"3733c86ae2733629f873f93c2f45da30164beee8de9ee0833099fac6a05a3e6b","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/ext.rs":"9881576cac3e476a4bf04f9b601cf9a53b79399fb0ca9634e8b861ac91709843","src/format.rs":"c595015418f35e6992e710441b9999f09b2afe4678b138039d670d100c0bdd86","src/ident_fragment.rs":"6b3b6621cd20bae776d2455f2b05f04433d8ce617c113e83a3683edef0667d1f","src/lib.rs":"1cb40e47755849e7ada55cbe7b29cef8d9d0d66f948d0cd5acac3aa4481d5a60","src/runtime.rs":"31b2159986c68dc1c78801a92f795435dbc0bcea859ca342df280889e82c6c4d","src/spanned.rs":"0ccaae1137af5f3e54eae75c3bdc637be74cfa56a857f2c0f85a041c9ba26838","src/to_tokens.rs":"99bb6f467289c32af6c1f7af0d45cc6ac7b31e2436774e616770152a49e6ac0f","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/test.rs":"3be80741f84a707376c230d9cf70ce9537caa359691d8d4c34968e28175e4ad7","tests/ui/does-not-have-iter-interpolated-dup.rs":"ad13eea21d4cdd2ab6c082f633392e1ff20fb0d1af5f2177041e0bf7f30da695","tests/ui/does-not-have-iter-interpolated-dup.stderr":"90a4bdb9267535f5d2785940148338d6b7d905548051d2c9c5dcbd58f2c11d8e","tests/ui/does-not-have-iter-interpolated.rs":"83a5b3f240651adcbe4b6e51076d76d653ad439b37442cf4054f1fd3c073f3b7","tests/ui/does-not-have-iter-interpolated.stderr":"ae7c2739554c862b331705e82781aa4687a4375210cef6ae899a4be4a4ec2d97","tests/ui/does-not-have-iter-separated.rs":"fe413c48331d5e3a7ae5fef6a5892a90c72f610d54595879eb49d0a94154ba3f","tests/ui/does-not-have-iter-separated.stderr":"03fd560979ebcd5aa6f83858bc2c3c01ba6546c16335101275505304895c1ae9","tests/ui/does-not-have-iter.rs":"09dc9499d861b63cebb0848b855b78e2dc9497bfde37ba6339f3625ae009a62f","tests/ui/does-not-have-iter.stderr":"d6da483c29e232ced72059bbdf05d31afb1df9e02954edaa9cfaea1ec6df72dc","tests/ui/not-quotable.rs":"5759d0884943417609f28faadc70254a3e2fd3d9bd6ff7297a3fb70a77fafd8a","tests/ui/not-quotable.stderr":"efcace9419fdf64d6beca7e135c3b7daff74038d4449475896cbe8cbf2566ade","tests/ui/not-repeatable.rs":"a4b115c04e4e41049a05f5b69450503fbffeba031218b4189cb931839f7f9a9c","tests/ui/not-repeatable.stderr":"594249d59d16f039c16816f1aaf9933176994e296fcf81d1b8b24d5b66ae0d0a","tests/ui/wrong-type-span.rs":"6195e35ea844c0c52ba1cff5d790c3a371af6915d137d377834ad984229ef9ea","tests/ui/wrong-type-span.stderr":"cad072e40e0ecc04f375122ae41aede2f0da2a9244492b3fcf70249e59d1b128"},"package":"573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105"} \ No newline at end of file +{"files":{"Cargo.toml":"1eab00879906063b283945ad8ffd68f41fb2d99b54773fadd9154c86b98b827f","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"626e7079eab0baacf0fcaf3e244f407b2014ebaeca45905d72e8fb8bed18aaea","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/ext.rs":"9881576cac3e476a4bf04f9b601cf9a53b79399fb0ca9634e8b861ac91709843","src/format.rs":"c595015418f35e6992e710441b9999f09b2afe4678b138039d670d100c0bdd86","src/ident_fragment.rs":"0b3e6c2129e55910fd2d240e1e7efba6f1796801d24352d1c0bfbceb0e8b678f","src/lib.rs":"2a4bafc9784df4bac935139d72795e0eeb25e05bbf2bc98c134aedbd3f3a2377","src/runtime.rs":"7f37326edaeac2c42ed806b447eeba12e36dd4b1bc25fbf52f8eb23140f3be7a","src/spanned.rs":"3ccf5120593f35787442c0a37d243e802c5262e7f8b35aed503873008ec035c5","src/to_tokens.rs":"1c76311fcc82098e630056d71fd6f3929194ee31b0840e2aa643ed7e78026e3e","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/test.rs":"3be80741f84a707376c230d9cf70ce9537caa359691d8d4c34968e28175e4ad7","tests/ui/does-not-have-iter-interpolated-dup.rs":"ad13eea21d4cdd2ab6c082f633392e1ff20fb0d1af5f2177041e0bf7f30da695","tests/ui/does-not-have-iter-interpolated-dup.stderr":"90a4bdb9267535f5d2785940148338d6b7d905548051d2c9c5dcbd58f2c11d8e","tests/ui/does-not-have-iter-interpolated.rs":"83a5b3f240651adcbe4b6e51076d76d653ad439b37442cf4054f1fd3c073f3b7","tests/ui/does-not-have-iter-interpolated.stderr":"ae7c2739554c862b331705e82781aa4687a4375210cef6ae899a4be4a4ec2d97","tests/ui/does-not-have-iter-separated.rs":"fe413c48331d5e3a7ae5fef6a5892a90c72f610d54595879eb49d0a94154ba3f","tests/ui/does-not-have-iter-separated.stderr":"03fd560979ebcd5aa6f83858bc2c3c01ba6546c16335101275505304895c1ae9","tests/ui/does-not-have-iter.rs":"09dc9499d861b63cebb0848b855b78e2dc9497bfde37ba6339f3625ae009a62f","tests/ui/does-not-have-iter.stderr":"d6da483c29e232ced72059bbdf05d31afb1df9e02954edaa9cfaea1ec6df72dc","tests/ui/not-quotable.rs":"5759d0884943417609f28faadc70254a3e2fd3d9bd6ff7297a3fb70a77fafd8a","tests/ui/not-quotable.stderr":"459bdadbf1e73b9401cf7d5d578dc053774bb4e5aa25ad2abf25d6b0f61aa306","tests/ui/not-repeatable.rs":"a4b115c04e4e41049a05f5b69450503fbffeba031218b4189cb931839f7f9a9c","tests/ui/not-repeatable.stderr":"594249d59d16f039c16816f1aaf9933176994e296fcf81d1b8b24d5b66ae0d0a","tests/ui/wrong-type-span.rs":"6195e35ea844c0c52ba1cff5d790c3a371af6915d137d377834ad984229ef9ea","tests/ui/wrong-type-span.stderr":"cad072e40e0ecc04f375122ae41aede2f0da2a9244492b3fcf70249e59d1b128"},"package":"5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/quote/Cargo.toml temporalio-1.3.0/vendor/quote/Cargo.toml --- temporalio-1.3.0/vendor/quote/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quote/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,9 +11,9 @@ [package] edition = "2018" -rust-version = "1.31" +rust-version = "1.56" name = "quote" -version = "1.0.29" +version = "1.0.33" authors = ["David Tolnay "] autobenches = false description = "Quasi-quoting macro quote!(...)" @@ -28,13 +28,14 @@ repository = "https://github.com/dtolnay/quote" [package.metadata.docs.rs] +rustdoc-args = ["--generate-link-to-definition"] targets = ["x86_64-unknown-linux-gnu"] [lib] doc-scrape-examples = false [dependencies.proc-macro2] -version = "1.0.63" +version = "1.0.66" default-features = false [dev-dependencies.rustversion] diff -Nru temporalio-1.3.0/vendor/quote/README.md temporalio-1.3.0/vendor/quote/README.md --- temporalio-1.3.0/vendor/quote/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quote/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -34,7 +34,7 @@ quote = "1.0" ``` -*Version requirement: Quote supports rustc 1.31 and up.*
+*Version requirement: Quote supports rustc 1.56 and up.*
[*Release notes*](https://github.com/dtolnay/quote/releases)
@@ -240,6 +240,18 @@ Be aware that no kind of hygiene or span information is retained when tokens are written to a file; the conversion from tokens to source code is lossy. +Example usage in build.rs: + +```rust +let output = quote! { ... }; +let syntax_tree = syn::parse2(output).unwrap(); +let formatted = prettyplease::unparse(&syntax_tree); + +let out_dir = env::var_os("OUT_DIR").unwrap(); +let dest_path = Path::new(&out_dir).join("out.rs"); +fs::write(dest_path, formatted).unwrap(); +``` + [prettyplease]: https://github.com/dtolnay/prettyplease
diff -Nru temporalio-1.3.0/vendor/quote/src/ident_fragment.rs temporalio-1.3.0/vendor/quote/src/ident_fragment.rs --- temporalio-1.3.0/vendor/quote/src/ident_fragment.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quote/src/ident_fragment.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ +use alloc::borrow::Cow; use core::fmt; use proc_macro2::{Ident, Span}; -use std::borrow::Cow; /// Specialized formatting trait used by `format_ident!`. /// @@ -49,8 +49,8 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let id = self.to_string(); - if id.starts_with("r#") { - fmt::Display::fmt(&id[2..], f) + if let Some(id) = id.strip_prefix("r#") { + fmt::Display::fmt(id, f) } else { fmt::Display::fmt(&id[..], f) } diff -Nru temporalio-1.3.0/vendor/quote/src/lib.rs temporalio-1.3.0/vendor/quote/src/lib.rs --- temporalio-1.3.0/vendor/quote/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quote/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -92,7 +92,7 @@ //! [prettyplease]: https://github.com/dtolnay/prettyplease // Quote types in rustdoc of other crates get linked to here. -#![doc(html_root_url = "https://docs.rs/quote/1.0.29")] +#![doc(html_root_url = "https://docs.rs/quote/1.0.33")] #![allow( clippy::doc_markdown, clippy::missing_errors_doc, @@ -102,6 +102,8 @@ clippy::wrong_self_convention, )] +extern crate alloc; + #[cfg(feature = "proc-macro")] extern crate proc_macro; diff -Nru temporalio-1.3.0/vendor/quote/src/runtime.rs temporalio-1.3.0/vendor/quote/src/runtime.rs --- temporalio-1.3.0/vendor/quote/src/runtime.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quote/src/runtime.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,11 +5,21 @@ use core::ops::BitOr; use proc_macro2::{Group, Ident, Punct, Spacing, TokenTree}; +#[doc(hidden)] +pub use alloc::format; +#[doc(hidden)] pub use core::option::Option; -pub use proc_macro2::{Delimiter, Span, TokenStream}; -pub use std::format; +#[doc(hidden)] +pub type Delimiter = proc_macro2::Delimiter; +#[doc(hidden)] +pub type Span = proc_macro2::Span; +#[doc(hidden)] +pub type TokenStream = proc_macro2::TokenStream; + +#[doc(hidden)] pub struct HasIterator; // True +#[doc(hidden)] pub struct ThereIsNoIteratorInRepetition; // False impl BitOr for ThereIsNoIteratorInRepetition { @@ -46,14 +56,16 @@ /// These traits expose a `quote_into_iter` method which should allow calling /// whichever impl happens to be applicable. Calling that method repeatedly on /// the returned value should be idempotent. +#[doc(hidden)] pub mod ext { use super::RepInterp; use super::{HasIterator as HasIter, ThereIsNoIteratorInRepetition as DoesNotHaveIter}; use crate::ToTokens; + use alloc::collections::btree_set::{self, BTreeSet}; use core::slice; - use std::collections::btree_set::{self, BTreeSet}; /// Extension trait providing the `quote_into_iter` method on iterators. + #[doc(hidden)] pub trait RepIteratorExt: Iterator + Sized { fn quote_into_iter(self) -> (Self, HasIter) { (self, HasIter) @@ -65,6 +77,7 @@ /// Extension trait providing the `quote_into_iter` method for /// non-iterable types. These types interpolate the same value in each /// iteration of the repetition. + #[doc(hidden)] pub trait RepToTokensExt { /// Pretend to be an iterator for the purposes of `quote_into_iter`. /// This allows repeated calls to `quote_into_iter` to continue @@ -82,6 +95,7 @@ /// Extension trait providing the `quote_into_iter` method for types that /// can be referenced as an iterator. + #[doc(hidden)] pub trait RepAsIteratorExt<'q> { type Iter: Iterator; @@ -140,6 +154,7 @@ // Helper type used within interpolations to allow for repeated binding names. // Implements the relevant traits, and exports a dummy `next()` method. #[derive(Copy, Clone)] +#[doc(hidden)] pub struct RepInterp(pub T); impl RepInterp { @@ -166,6 +181,7 @@ } } +#[doc(hidden)] #[inline] pub fn get_span(span: T) -> GetSpan { GetSpan(GetSpanInner(GetSpanBase(span))) @@ -222,10 +238,12 @@ } } +#[doc(hidden)] pub fn push_group(tokens: &mut TokenStream, delimiter: Delimiter, inner: TokenStream) { tokens.append(Group::new(delimiter, inner)); } +#[doc(hidden)] pub fn push_group_spanned( tokens: &mut TokenStream, span: Span, @@ -237,11 +255,13 @@ tokens.append(g); } +#[doc(hidden)] pub fn parse(tokens: &mut TokenStream, s: &str) { let s: TokenStream = s.parse().expect("invalid token stream"); tokens.extend(iter::once(s)); } +#[doc(hidden)] pub fn parse_spanned(tokens: &mut TokenStream, span: Span, s: &str) { let s: TokenStream = s.parse().expect("invalid token stream"); tokens.extend(s.into_iter().map(|t| respan_token_tree(t, span))); @@ -264,15 +284,18 @@ token } +#[doc(hidden)] pub fn push_ident(tokens: &mut TokenStream, s: &str) { let span = Span::call_site(); push_ident_spanned(tokens, span, s); } +#[doc(hidden)] pub fn push_ident_spanned(tokens: &mut TokenStream, span: Span, s: &str) { tokens.append(ident_maybe_raw(s, span)); } +#[doc(hidden)] pub fn push_lifetime(tokens: &mut TokenStream, lifetime: &str) { struct Lifetime<'a> { name: &'a str, @@ -303,6 +326,7 @@ }); } +#[doc(hidden)] pub fn push_lifetime_spanned(tokens: &mut TokenStream, span: Span, lifetime: &str) { struct Lifetime<'a> { name: &'a str, @@ -339,9 +363,11 @@ macro_rules! push_punct { ($name:ident $spanned:ident $char1:tt) => { + #[doc(hidden)] pub fn $name(tokens: &mut TokenStream) { tokens.append(Punct::new($char1, Spacing::Alone)); } + #[doc(hidden)] pub fn $spanned(tokens: &mut TokenStream, span: Span) { let mut punct = Punct::new($char1, Spacing::Alone); punct.set_span(span); @@ -349,10 +375,12 @@ } }; ($name:ident $spanned:ident $char1:tt $char2:tt) => { + #[doc(hidden)] pub fn $name(tokens: &mut TokenStream) { tokens.append(Punct::new($char1, Spacing::Joint)); tokens.append(Punct::new($char2, Spacing::Alone)); } + #[doc(hidden)] pub fn $spanned(tokens: &mut TokenStream, span: Span) { let mut punct = Punct::new($char1, Spacing::Joint); punct.set_span(span); @@ -363,11 +391,13 @@ } }; ($name:ident $spanned:ident $char1:tt $char2:tt $char3:tt) => { + #[doc(hidden)] pub fn $name(tokens: &mut TokenStream) { tokens.append(Punct::new($char1, Spacing::Joint)); tokens.append(Punct::new($char2, Spacing::Joint)); tokens.append(Punct::new($char3, Spacing::Alone)); } + #[doc(hidden)] pub fn $spanned(tokens: &mut TokenStream, span: Span) { let mut punct = Punct::new($char1, Spacing::Joint); punct.set_span(span); @@ -427,24 +457,27 @@ push_punct!(push_sub push_sub_spanned '-'); push_punct!(push_sub_eq push_sub_eq_spanned '-' '='); +#[doc(hidden)] pub fn push_underscore(tokens: &mut TokenStream) { push_underscore_spanned(tokens, Span::call_site()); } +#[doc(hidden)] pub fn push_underscore_spanned(tokens: &mut TokenStream, span: Span) { tokens.append(Ident::new("_", span)); } // Helper method for constructing identifiers from the `format_ident!` macro, // handling `r#` prefixes. +#[doc(hidden)] pub fn mk_ident(id: &str, span: Option) -> Ident { let span = span.unwrap_or_else(Span::call_site); ident_maybe_raw(id, span) } fn ident_maybe_raw(id: &str, span: Span) -> Ident { - if id.starts_with("r#") { - Ident::new_raw(&id[2..], span) + if let Some(id) = id.strip_prefix("r#") { + Ident::new_raw(id, span) } else { Ident::new(id, span) } @@ -457,6 +490,7 @@ // `Octal`, `LowerHex`, `UpperHex`, and `Binary` to allow for their use within // `format_ident!`. #[derive(Copy, Clone)] +#[doc(hidden)] pub struct IdentFragmentAdapter(pub T); impl IdentFragmentAdapter { diff -Nru temporalio-1.3.0/vendor/quote/src/spanned.rs temporalio-1.3.0/vendor/quote/src/spanned.rs --- temporalio-1.3.0/vendor/quote/src/spanned.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quote/src/spanned.rs 2023-10-30 19:40:00.000000000 +0000 @@ -26,20 +26,8 @@ } fn join_spans(tokens: TokenStream) -> Span { - #[cfg(not(needs_invalid_span_workaround))] let mut iter = tokens.into_iter().map(|tt| tt.span()); - #[cfg(needs_invalid_span_workaround)] - let mut iter = tokens.into_iter().filter_map(|tt| { - let span = tt.span(); - let debug = format!("{:?}", span); - if debug.ends_with("bytes(0..0)") { - None - } else { - Some(span) - } - }); - let first = match iter.next() { Some(span) => span, None => return Span::call_site(), diff -Nru temporalio-1.3.0/vendor/quote/src/to_tokens.rs temporalio-1.3.0/vendor/quote/src/to_tokens.rs --- temporalio-1.3.0/vendor/quote/src/to_tokens.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quote/src/to_tokens.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,8 @@ use super::TokenStreamExt; +use alloc::borrow::Cow; +use alloc::rc::Rc; use core::iter; use proc_macro2::{Group, Ident, Literal, Punct, Span, TokenStream, TokenTree}; -use std::borrow::Cow; -use std::rc::Rc; /// Types that can be interpolated inside a `quote!` invocation. /// diff -Nru temporalio-1.3.0/vendor/quote/tests/ui/not-quotable.stderr temporalio-1.3.0/vendor/quote/tests/ui/not-quotable.stderr --- temporalio-1.3.0/vendor/quote/tests/ui/not-quotable.stderr 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/quote/tests/ui/not-quotable.stderr 2023-10-30 19:40:00.000000000 +0000 @@ -8,13 +8,13 @@ | required by a bound introduced by this call | = help: the following other types implement trait `ToTokens`: - &'a T - &'a mut T - Box - Cow<'a, T> - Option - Rc - RepInterp - String - and 23 others + bool + char + isize + i8 + i16 + i32 + i64 + i128 + and $N others = note: this error originates in the macro `quote` (in Nightly builds, run with -Z macro-backtrace for more info) diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/.cargo-checksum.json temporalio-1.3.0/vendor/redox_syscall-0.2.16/.cargo-checksum.json --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -{"files":{"Cargo.toml":"0e92420005ca47c7854d02e9b637262cc13f800d48614aeef69be2f1119fc19b","LICENSE":"efcfee7981ff72431fffb06925cad00a23dce079ed4354f61030ad5abdb78829","README.md":"9161f18ba7f69b4ca51e844aee8ffb8237513a468c5c3b1f3a5f989044f895ac","src/arch/aarch64.rs":"61b5811b47a29257c3b5e15e7d9d15e7143bad99fbe29f0cb17ead9cbc17186f","src/arch/nonredox.rs":"9eac0fa2cf9eae07f0cafa2dd63c4a820791897a3de9ad1a933ab4f53458dbd8","src/arch/riscv64.rs":"20bf9a8db779059773b113643d0cb3737fbb5d57f45ee39b8ae9d3396b6ef636","src/arch/x86.rs":"7802186155c06638235e49e11f4c046b68f1d8145b2c849adec84497eb3cb70f","src/arch/x86_64.rs":"f40bad2680fd5e7f100ee1afaa805f33dd0e12ec8786b956d47204f66771801d","src/call.rs":"0d3e32e33ecdf75963e5d244f9e86e94047d155c5de5fa3c0085faf18ed97b33","src/daemon.rs":"11cd633298fe2eb89906a4d8c12ab34e4ee355f759e1216cee536f24c7c679b2","src/data.rs":"bd4545d4c2fcc59ff26ae52ad7f773a697d5ccf639a2ffc253cece6b31e94d51","src/error.rs":"ef20f3817f997a1aeb7114628407f19cb8bc13c555d4e093918f38a5d098f798","src/flag.rs":"f07d6a7aa6766d30d0a303c7b3bda5bb4c473dd9dd51687cf8e0631b1bf3ec9d","src/io/dma.rs":"fbc46e924d5913f5a3fb723751d7a9dd1b079ccf058500fde4957aaf9fa7dd1c","src/io/io.rs":"e1d454ff47efac70fdaa709251a5a9c1c5637f931994ba3bf6a38c6db9145822","src/io/mmio.rs":"12d0fb4d4f45097bf2c14f73cb1ce21325eae193b537e9f18af73ed5281b5e63","src/io/mod.rs":"79c2fce4fd6d75f3b9169df64b7a605feff31fab2e5ed81984ae085a1d07c0c4","src/io/pio.rs":"9ee6f2229b700d1c45b4c8c6242bd99fe69634e16dcd5843d9e8d1c958047406","src/lib.rs":"0bc9c8ca513dc6f0d9ef587bc53587114c31c1217d6b620399fc0fcbc54bf658","src/number.rs":"fe7b47b06566aa1f8a75f50b685801259df03a1a5c85b91817b4552583cd7862","src/scheme/generate.sh":"dde4e30f4e0223fb1a24ed486a6c36e624c854dbf890862cb6866f4fa3c7a6eb","src/scheme/mod.rs":"cb622405deb0aef4ab04499ea1adfd338c9c5dd9c31a1fe9989786dbf69b49d8","src/scheme/scheme.rs":"30263996f0b4930edd76dace5f5750e48229066bc888bc13365846688d0a870b","src/scheme/scheme_block.rs":"b7a761e4349eb87d106c8af14894e8c4272769b9eb235cd500b075ac1f823683","src/scheme/scheme_block_mut.rs":"4a4fc03bce14757b64006b9bc3fa2779e95382b2d99579870146ee0c3be3f46c","src/scheme/scheme_mut.rs":"e6f0671b77f1bf5263e497c69dec553352249b75d52af62ac19477ba5127f803","src/scheme/seek.rs":"94e044de47b0f00eb0c2aea3fb21001ac2b9aa1e4b20d73fd54163fe92fa63f7","src/tests.rs":"416a428ba6a9c5f0d8f4c3dbe91d9aa940a04472ec9a2d17bc5a66c455b4416f"},"package":"fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/Cargo.toml temporalio-1.3.0/vendor/redox_syscall-0.2.16/Cargo.toml --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -# 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 = "redox_syscall" -version = "0.2.16" -authors = ["Jeremy Soller "] -description = "A Rust library to access raw Redox system calls" -documentation = "https://docs.rs/redox_syscall" -license = "MIT" -repository = "https://gitlab.redox-os.org/redox-os/syscall" - -[lib] -name = "syscall" - -[dependencies.bitflags] -version = "1.1.0" diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/LICENSE temporalio-1.3.0/vendor/redox_syscall-0.2.16/LICENSE --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/LICENSE 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/LICENSE 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -Copyright (c) 2017 Redox OS Developers - -MIT License - -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 -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/README.md temporalio-1.3.0/vendor/redox_syscall-0.2.16/README.md --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/README.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -# syscall -[Redox OS](https://gitlab.redox-os.org/redox-os/redox)'s syscall API - -[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) -[![crates.io](http://meritbadge.herokuapp.com/redox_syscall)](https://crates.io/crates/redox_syscall) -[![docs.rs](https://docs.rs/redox_syscall/badge.svg)](https://docs.rs/redox_syscall) diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/aarch64.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/aarch64.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/aarch64.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/aarch64.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,132 +0,0 @@ -use core::{mem, slice}; -use core::ops::{Deref, DerefMut}; - -use super::error::{Error, Result}; - -macro_rules! syscall { - ($($name:ident($a:ident, $($b:ident, $($c:ident, $($d:ident, $($e:ident, $($f:ident, )?)?)?)?)?);)+) => { - $( - pub unsafe fn $name($a: usize, $($b: usize, $($c: usize, $($d: usize, $($e: usize, $($f: usize)?)?)?)?)?) -> Result { - let ret: usize; - - core::arch::asm!( - "svc 0", - in("x8") $a, - $( - in("x0") $b, - $( - in("x1") $c, - $( - in("x2") $d, - $( - in("x3") $e, - $( - in("x4") $f, - )? - )? - )? - )? - )? - lateout("x0") ret, - options(nostack), - ); - - Error::demux(ret) - } - )+ - }; -} - -syscall! { - syscall0(a,); - syscall1(a, b,); - syscall2(a, b, c,); - syscall3(a, b, c, d,); - syscall4(a, b, c, d, e,); - syscall5(a, b, c, d, e, f,); -} - -#[derive(Copy, Clone, Debug, Default)] -#[repr(C)] -pub struct IntRegisters { - pub elr_el1: usize, - pub tpidr_el0: usize, - pub tpidrro_el0: usize, - pub spsr_el1: usize, - pub esr_el1: usize, - pub sp_el0: usize, // Shouldn't be used if interrupt occurred at EL1 - pub padding: usize, // To keep the struct even number aligned - pub x30: usize, - pub x29: usize, - pub x28: usize, - pub x27: usize, - pub x26: usize, - pub x25: usize, - pub x24: usize, - pub x23: usize, - pub x22: usize, - pub x21: usize, - pub x20: usize, - pub x19: usize, - pub x18: usize, - pub x17: usize, - pub x16: usize, - pub x15: usize, - pub x14: usize, - pub x13: usize, - pub x12: usize, - pub x11: usize, - pub x10: usize, - pub x9: usize, - pub x8: usize, - pub x7: usize, - pub x6: usize, - pub x5: usize, - pub x4: usize, - pub x3: usize, - pub x2: usize, - pub x1: usize, - pub x0: usize -} - -impl Deref for IntRegisters { - type Target = [u8]; - fn deref(&self) -> &[u8] { - unsafe { - slice::from_raw_parts(self as *const IntRegisters as *const u8, mem::size_of::()) - } - } -} - -impl DerefMut for IntRegisters { - fn deref_mut(&mut self) -> &mut [u8] { - unsafe { - slice::from_raw_parts_mut(self as *mut IntRegisters as *mut u8, mem::size_of::()) - } - } -} - -#[derive(Clone, Copy, Debug, Default)] -#[repr(packed)] -pub struct FloatRegisters { - pub fp_simd_regs: [u128; 32], - pub fpsr: u32, - pub fpcr: u32 -} - -impl Deref for FloatRegisters { - type Target = [u8]; - fn deref(&self) -> &[u8] { - unsafe { - slice::from_raw_parts(self as *const FloatRegisters as *const u8, mem::size_of::()) - } - } -} - -impl DerefMut for FloatRegisters { - fn deref_mut(&mut self) -> &mut [u8] { - unsafe { - slice::from_raw_parts_mut(self as *mut FloatRegisters as *mut u8, mem::size_of::()) - } - } -} diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/nonredox.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/nonredox.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/nonredox.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/nonredox.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -use super::error::{Error, Result, ENOSYS}; - -pub unsafe fn syscall0(_a: usize) -> Result { - Err(Error::new(ENOSYS)) -} - -pub unsafe fn syscall1(_a: usize, _b: usize) -> Result { - Err(Error::new(ENOSYS)) -} - -pub unsafe fn syscall2(_a: usize, _b: usize, _c: usize) -> Result { - Err(Error::new(ENOSYS)) -} - -pub unsafe fn syscall3(_a: usize, _b: usize, _c: usize, _d: usize) -> Result { - Err(Error::new(ENOSYS)) -} - -pub unsafe fn syscall4(_a: usize, _b: usize, _c: usize, _d: usize, _e: usize) -> Result { - Err(Error::new(ENOSYS)) -} - -pub unsafe fn syscall5(_a: usize, _b: usize, _c: usize, _d: usize, _e: usize, _f: usize) - -> Result { - Err(Error::new(ENOSYS)) -} diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/riscv64.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/riscv64.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/riscv64.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/riscv64.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ -use core::{mem, slice}; -use core::ops::{Deref, DerefMut}; - -use super::error::{Error, Result}; - -macro_rules! syscall { - ($($name:ident($a:ident, $($b:ident, $($c:ident, $($d:ident, $($e:ident, $($f:ident, )?)?)?)?)?);)+) => { - $( - pub unsafe fn $name($a: usize, $($b: usize, $($c: usize, $($d: usize, $($e: usize, $($f: usize)?)?)?)?)?) -> Result { - let ret: usize; - - asm!( - "ecall", - in("a7") $a, - $( - in("a0") $b, - $( - in("a1") $c, - $( - in("a2") $d, - $( - in("a3") $e, - $( - in("a4") $f, - )? - )? - )? - )? - )? - lateout("a0") ret, - options(nostack), - ); - - Error::demux(ret) - } - )+ - }; -} - -syscall! { - syscall0(a,); - syscall1(a, b,); - syscall2(a, b, c,); - syscall3(a, b, c, d,); - syscall4(a, b, c, d, e,); - syscall5(a, b, c, d, e, f,); -} - -#[derive(Copy, Clone, Debug, Default)] -#[repr(C)] -pub struct IntRegisters { - //TODO -} - -impl Deref for IntRegisters { - type Target = [u8]; - fn deref(&self) -> &[u8] { - unsafe { - slice::from_raw_parts(self as *const IntRegisters as *const u8, mem::size_of::()) - } - } -} - -impl DerefMut for IntRegisters { - fn deref_mut(&mut self) -> &mut [u8] { - unsafe { - slice::from_raw_parts_mut(self as *mut IntRegisters as *mut u8, mem::size_of::()) - } - } -} - -#[derive(Clone, Copy, Debug, Default)] -#[repr(packed)] -pub struct FloatRegisters { - //TODO -} - -impl Deref for FloatRegisters { - type Target = [u8]; - fn deref(&self) -> &[u8] { - unsafe { - slice::from_raw_parts(self as *const FloatRegisters as *const u8, mem::size_of::()) - } - } -} - -impl DerefMut for FloatRegisters { - fn deref_mut(&mut self) -> &mut [u8] { - unsafe { - slice::from_raw_parts_mut(self as *mut FloatRegisters as *mut u8, mem::size_of::()) - } - } -} diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/x86_64.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/x86_64.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/x86_64.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/x86_64.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,155 +0,0 @@ -use core::{mem, slice}; -use core::arch::asm; -use core::ops::{Deref, DerefMut}; - -use super::error::{Error, Result}; - -macro_rules! syscall { - ($($name:ident($a:ident, $($b:ident, $($c:ident, $($d:ident, $($e:ident, $($f:ident, )?)?)?)?)?);)+) => { - $( - pub unsafe fn $name(mut $a: usize, $($b: usize, $($c: usize, $($d: usize, $($e: usize, $($f: usize)?)?)?)?)?) -> Result { - asm!( - "syscall", - inout("rax") $a, - $( - in("rdi") $b, - $( - in("rsi") $c, - $( - in("rdx") $d, - $( - in("r10") $e, - $( - in("r8") $f, - )? - )? - )? - )? - )? - out("rcx") _, - out("r11") _, - options(nostack), - ); - - Error::demux($a) - } - )+ - }; -} - -syscall! { - syscall0(a,); - syscall1(a, b,); - syscall2(a, b, c,); - syscall3(a, b, c, d,); - syscall4(a, b, c, d, e,); - syscall5(a, b, c, d, e, f,); -} - -#[derive(Copy, Clone, Debug, Default)] -#[repr(C)] -pub struct IntRegisters { - // TODO: Some of these don't get set by Redox yet. Should they? - - pub r15: usize, - pub r14: usize, - pub r13: usize, - pub r12: usize, - pub rbp: usize, - pub rbx: usize, - pub r11: usize, - pub r10: usize, - pub r9: usize, - pub r8: usize, - pub rax: usize, - pub rcx: usize, - pub rdx: usize, - pub rsi: usize, - pub rdi: usize, - // pub orig_rax: usize, - pub rip: usize, - pub cs: usize, - pub rflags: usize, - pub rsp: usize, - pub ss: usize, - // pub fs_base: usize, - // pub gs_base: usize, - // pub ds: usize, - // pub es: usize, - pub fs: usize, - // pub gs: usize -} - -impl Deref for IntRegisters { - type Target = [u8]; - fn deref(&self) -> &[u8] { - unsafe { - slice::from_raw_parts(self as *const IntRegisters as *const u8, mem::size_of::()) - } - } -} - -impl DerefMut for IntRegisters { - fn deref_mut(&mut self) -> &mut [u8] { - unsafe { - slice::from_raw_parts_mut(self as *mut IntRegisters as *mut u8, mem::size_of::()) - } - } -} - -#[derive(Clone, Copy, Debug, Default)] -#[repr(packed)] -pub struct FloatRegisters { - pub fcw: u16, - pub fsw: u16, - pub ftw: u8, - pub _reserved: u8, - pub fop: u16, - pub fip: u64, - pub fdp: u64, - pub mxcsr: u32, - pub mxcsr_mask: u32, - pub st_space: [u128; 8], - pub xmm_space: [u128; 16], - // TODO: YMM/ZMM -} - -impl Deref for FloatRegisters { - type Target = [u8]; - fn deref(&self) -> &[u8] { - unsafe { - slice::from_raw_parts(self as *const FloatRegisters as *const u8, mem::size_of::()) - } - } -} - -impl DerefMut for FloatRegisters { - fn deref_mut(&mut self) -> &mut [u8] { - unsafe { - slice::from_raw_parts_mut(self as *mut FloatRegisters as *mut u8, mem::size_of::()) - } - } -} -#[derive(Clone, Copy, Debug, Default)] -#[repr(packed)] -pub struct EnvRegisters { - pub fsbase: u64, - pub gsbase: u64, - // TODO: PKRU? -} -impl Deref for EnvRegisters { - type Target = [u8]; - fn deref(&self) -> &[u8] { - unsafe { - slice::from_raw_parts(self as *const EnvRegisters as *const u8, mem::size_of::()) - } - } -} - -impl DerefMut for EnvRegisters { - fn deref_mut(&mut self) -> &mut [u8] { - unsafe { - slice::from_raw_parts_mut(self as *mut EnvRegisters as *mut u8, mem::size_of::()) - } - } -} diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/x86.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/x86.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/x86.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/arch/x86.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,105 +0,0 @@ -use core::{mem, slice}; -use core::arch::asm; -use core::ops::{Deref, DerefMut}; - -use super::error::{Error, Result}; - -macro_rules! syscall { - ($($name:ident($a:ident, $($b:ident, $($c:ident, $($d:ident, $($e:ident, $($f:ident, )?)?)?)?)?);)+) => { - $( - pub unsafe fn $name(mut $a: usize, $($b: usize, $($c: usize, $($d: usize, $($e: usize, $($f: usize)?)?)?)?)?) -> Result { - asm!( - "int 0x80", - inout("eax") $a, - $( - in("ebx") $b, - $( - in("ecx") $c, - $( - in("edx") $d, - $( - in("esi") $e, - $( - in("edi") $f, - )? - )? - )? - )? - )? - options(nostack), - ); - - Error::demux($a) - } - )+ - }; -} - -syscall! { - syscall0(a,); - syscall1(a, b,); - syscall2(a, b, c,); - syscall3(a, b, c, d,); - // Must be done custom because LLVM reserves ESI - //syscall4(a, b, c, d, e,); - //syscall5(a, b, c, d, e, f,); -} - -pub unsafe fn syscall4(mut a: usize, b: usize, c: usize, d: usize, e: usize) - -> Result { - asm!( - "xchg esi, {e} - int 0x80 - xchg esi, {e}", - e = in(reg) e, - inout("eax") a, - in("ebx") b, - in("ecx") c, - in("edx") d, - options(nostack), - ); - - Error::demux(a) -} - -pub unsafe fn syscall5(mut a: usize, b: usize, c: usize, d: usize, e: usize, f: usize) - -> Result { - asm!( - "xchg esi, {e} - int 0x80 - xchg esi, {e}", - e = in(reg) e, - inout("eax") a, - in("ebx") b, - in("ecx") c, - in("edx") d, - in("edi") f, - options(nostack), - ); - - Error::demux(a) -} - -#[derive(Clone, Copy, Debug, Default)] -#[repr(packed)] -pub struct EnvRegisters { - pub fsbase: u32, - pub gsbase: u32, -} - -impl Deref for EnvRegisters { - type Target = [u8]; - fn deref(&self) -> &[u8] { - unsafe { - slice::from_raw_parts(self as *const EnvRegisters as *const u8, mem::size_of::()) - } - } -} - -impl DerefMut for EnvRegisters { - fn deref_mut(&mut self) -> &mut [u8] { - unsafe { - slice::from_raw_parts_mut(self as *mut EnvRegisters as *mut u8, mem::size_of::()) - } - } -} diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/call.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/call.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/call.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/call.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,420 +0,0 @@ -use super::arch::*; -use super::data::{Map, SigAction, Stat, StatVfs, TimeSpec}; -use super::error::Result; -use super::flag::*; -use super::number::*; - -use core::{mem, ptr}; - -// Signal restorer -extern "C" fn restorer() -> ! { - sigreturn().unwrap(); - unreachable!(); -} - -/// Change the process's working directory -/// -/// This function will attempt to set the process's working directory to `path`, which can be -/// either a relative, scheme relative, or absolute path. -/// -/// On success, `Ok(0)` will be returned. On error, one of the following errors will be returned. -/// -/// # Errors -/// -/// * `EACCES` - permission is denied for one of the components of `path`, or `path` -/// * `EFAULT` - `path` does not point to the process's addressible memory -/// * `EIO` - an I/O error occurred -/// * `ENOENT` - `path` does not exit -/// * `ENOTDIR` - `path` is not a directory -pub fn chdir>(path: T) -> Result { - unsafe { syscall2(SYS_CHDIR, path.as_ref().as_ptr() as usize, path.as_ref().len()) } -} - -#[deprecated( - since = "0.1.55", - note = "use fchmod instead" -)] -pub fn chmod>(path: T, mode: usize) -> Result { - unsafe { syscall3(SYS_CHMOD, path.as_ref().as_ptr() as usize, path.as_ref().len(), mode) } -} - -/// Produce a fork of the current process, or a new process thread -pub unsafe fn clone(flags: CloneFlags) -> Result { - syscall1(SYS_CLONE, flags.bits()) -} - -/// Close a file -pub fn close(fd: usize) -> Result { - unsafe { syscall1(SYS_CLOSE, fd) } -} - -/// Get the current system time -pub fn clock_gettime(clock: usize, tp: &mut TimeSpec) -> Result { - unsafe { syscall2(SYS_CLOCK_GETTIME, clock, tp as *mut TimeSpec as usize) } -} - -/// Copy and transform a file descriptor -pub fn dup(fd: usize, buf: &[u8]) -> Result { - unsafe { syscall3(SYS_DUP, fd, buf.as_ptr() as usize, buf.len()) } -} - -/// Copy and transform a file descriptor -pub fn dup2(fd: usize, newfd: usize, buf: &[u8]) -> Result { - unsafe { syscall4(SYS_DUP2, fd, newfd, buf.as_ptr() as usize, buf.len()) } -} - -/// Exit the current process -pub fn exit(status: usize) -> Result { - unsafe { syscall1(SYS_EXIT, status) } -} - -/// Change file permissions -pub fn fchmod(fd: usize, mode: u16) -> Result { - unsafe { syscall2(SYS_FCHMOD, fd, mode as usize) } - -} - -/// Change file ownership -pub fn fchown(fd: usize, uid: u32, gid: u32) -> Result { - unsafe { syscall3(SYS_FCHOWN, fd, uid as usize, gid as usize) } - -} - -/// Change file descriptor flags -pub fn fcntl(fd: usize, cmd: usize, arg: usize) -> Result { - unsafe { syscall3(SYS_FCNTL, fd, cmd, arg) } -} - -/// Replace the current process with a new executable -pub fn fexec(fd: usize, args: &[[usize; 2]], vars: &[[usize; 2]]) -> Result { - unsafe { syscall5(SYS_FEXEC, fd, args.as_ptr() as usize, args.len(), vars.as_ptr() as usize, vars.len()) } -} - -/// Map a file into memory, but with the ability to set the address to map into, either as a hint -/// or as a requirement of the map. -/// -/// # Errors -/// `EACCES` - the file descriptor was not open for reading -/// `EBADF` - if the file descriptor was invalid -/// `ENODEV` - mmapping was not supported -/// `EINVAL` - invalid combination of flags -/// `EEXIST` - if [`MapFlags::MAP_FIXED`] was set, and the address specified was already in use. -/// -pub unsafe fn fmap(fd: usize, map: &Map) -> Result { - syscall3(SYS_FMAP, fd, map as *const Map as usize, mem::size_of::()) -} - -/// Unmap whole (or partial) continous memory-mapped files -pub unsafe fn funmap(addr: usize, len: usize) -> Result { - syscall2(SYS_FUNMAP, addr, len) -} - -/// Retrieve the canonical path of a file -pub fn fpath(fd: usize, buf: &mut [u8]) -> Result { - unsafe { syscall3(SYS_FPATH, fd, buf.as_mut_ptr() as usize, buf.len()) } -} - -/// Rename a file -pub fn frename>(fd: usize, path: T) -> Result { - unsafe { syscall3(SYS_FRENAME, fd, path.as_ref().as_ptr() as usize, path.as_ref().len()) } -} - -/// Get metadata about a file -pub fn fstat(fd: usize, stat: &mut Stat) -> Result { - unsafe { syscall3(SYS_FSTAT, fd, stat as *mut Stat as usize, mem::size_of::()) } -} - -/// Get metadata about a filesystem -pub fn fstatvfs(fd: usize, stat: &mut StatVfs) -> Result { - unsafe { syscall3(SYS_FSTATVFS, fd, stat as *mut StatVfs as usize, mem::size_of::()) } -} - -/// Sync a file descriptor to its underlying medium -pub fn fsync(fd: usize) -> Result { - unsafe { syscall1(SYS_FSYNC, fd) } -} - -/// Truncate or extend a file to a specified length -pub fn ftruncate(fd: usize, len: usize) -> Result { - unsafe { syscall2(SYS_FTRUNCATE, fd, len) } -} - -// Change modify and/or access times -pub fn futimens(fd: usize, times: &[TimeSpec]) -> Result { - unsafe { syscall3(SYS_FUTIMENS, fd, times.as_ptr() as usize, times.len() * mem::size_of::()) } -} - -/// Fast userspace mutex -pub unsafe fn futex(addr: *mut i32, op: usize, val: i32, val2: usize, addr2: *mut i32) - -> Result { - syscall5(SYS_FUTEX, addr as usize, op, (val as isize) as usize, val2, addr2 as usize) -} - -/// Get the current working directory -pub fn getcwd(buf: &mut [u8]) -> Result { - unsafe { syscall2(SYS_GETCWD, buf.as_mut_ptr() as usize, buf.len()) } -} - -/// Get the effective group ID -pub fn getegid() -> Result { - unsafe { syscall0(SYS_GETEGID) } -} - -/// Get the effective namespace -pub fn getens() -> Result { - unsafe { syscall0(SYS_GETENS) } -} - -/// Get the effective user ID -pub fn geteuid() -> Result { - unsafe { syscall0(SYS_GETEUID) } -} - -/// Get the current group ID -pub fn getgid() -> Result { - unsafe { syscall0(SYS_GETGID) } -} - -/// Get the current namespace -pub fn getns() -> Result { - unsafe { syscall0(SYS_GETNS) } -} - -/// Get the current process ID -pub fn getpid() -> Result { - unsafe { syscall0(SYS_GETPID) } -} - -/// Get the process group ID -pub fn getpgid(pid: usize) -> Result { - unsafe { syscall1(SYS_GETPGID, pid) } -} - -/// Get the parent process ID -pub fn getppid() -> Result { - unsafe { syscall0(SYS_GETPPID) } -} - -/// Get the current user ID -pub fn getuid() -> Result { - unsafe { syscall0(SYS_GETUID) } -} - -/// Set the I/O privilege level -/// -/// # Errors -/// -/// * `EPERM` - `uid != 0` -/// * `EINVAL` - `level > 3` -pub unsafe fn iopl(level: usize) -> Result { - syscall1(SYS_IOPL, level) -} - -/// Send a signal `sig` to the process identified by `pid` -pub fn kill(pid: usize, sig: usize) -> Result { - unsafe { syscall2(SYS_KILL, pid, sig) } -} - -/// Create a link to a file -pub unsafe fn link(old: *const u8, new: *const u8) -> Result { - syscall2(SYS_LINK, old as usize, new as usize) -} - -/// Seek to `offset` bytes in a file descriptor -pub fn lseek(fd: usize, offset: isize, whence: usize) -> Result { - unsafe { syscall3(SYS_LSEEK, fd, offset as usize, whence) } -} - -/// Make a new scheme namespace -pub fn mkns(schemes: &[[usize; 2]]) -> Result { - unsafe { syscall2(SYS_MKNS, schemes.as_ptr() as usize, schemes.len()) } -} - -/// Change mapping flags -pub unsafe fn mprotect(addr: usize, size: usize, flags: MapFlags) -> Result { - syscall3(SYS_MPROTECT, addr, size, flags.bits()) -} - -/// Sleep for the time specified in `req` -pub fn nanosleep(req: &TimeSpec, rem: &mut TimeSpec) -> Result { - unsafe { syscall2(SYS_NANOSLEEP, req as *const TimeSpec as usize, - rem as *mut TimeSpec as usize) } -} - -/// Open a file -pub fn open>(path: T, flags: usize) -> Result { - unsafe { syscall3(SYS_OPEN, path.as_ref().as_ptr() as usize, path.as_ref().len(), flags) } -} - -/// Allocate frames, linearly in physical memory. -/// -/// # Errors -/// -/// * `EPERM` - `uid != 0` -/// * `ENOMEM` - the system has run out of available memory -pub unsafe fn physalloc(size: usize) -> Result { - syscall1(SYS_PHYSALLOC, size) -} - -/// Allocate frames, linearly in physical memory, with an extra set of flags. If the flags contain -/// [`PARTIAL_ALLOC`], this will result in `physalloc3` with `min = 1`. -/// -/// Refer to the simpler [`physalloc`] and the more complex [`physalloc3`], that this convenience -/// function is based on. -/// -/// # Errors -/// -/// * `EPERM` - `uid != 0` -/// * `ENOMEM` - the system has run out of available memory -pub unsafe fn physalloc2(size: usize, flags: usize) -> Result { - let mut ret = 1usize; - physalloc3(size, flags, &mut ret) -} - -/// Allocate frames, linearly in physical memory, with an extra set of flags. If the flags contain -/// [`PARTIAL_ALLOC`], the `min` parameter specifies the number of frames that have to be allocated -/// for this operation to succeed. The return value is the offset of the first frame, and `min` is -/// overwritten with the number of frames actually allocated. -/// -/// Refer to the simpler [`physalloc`] and the simpler library function [`physalloc2`]. -/// -/// # Errors -/// -/// * `EPERM` - `uid != 0` -/// * `ENOMEM` - the system has run out of available memory -/// * `EINVAL` - `min = 0` -pub unsafe fn physalloc3(size: usize, flags: usize, min: &mut usize) -> Result { - syscall3(SYS_PHYSALLOC3, size, flags, min as *mut usize as usize) -} - -/// Free physically allocated pages -/// -/// # Errors -/// -/// * `EPERM` - `uid != 0` -pub unsafe fn physfree(physical_address: usize, size: usize) -> Result { - syscall2(SYS_PHYSFREE, physical_address, size) -} - -/// Map physical memory to virtual memory -/// -/// # Errors -/// -/// * `EPERM` - `uid != 0` -pub unsafe fn physmap(physical_address: usize, size: usize, flags: PhysmapFlags) -> Result { - syscall3(SYS_PHYSMAP, physical_address, size, flags.bits()) -} - -/// Unmap previously mapped physical memory -/// -/// # Errors -/// -/// * `EPERM` - `uid != 0` -/// * `EFAULT` - `virtual_address` has not been mapped -pub unsafe fn physunmap(virtual_address: usize) -> Result { - syscall1(SYS_PHYSUNMAP, virtual_address) -} - -/// Create a pair of file descriptors referencing the read and write ends of a pipe -pub fn pipe2(fds: &mut [usize; 2], flags: usize) -> Result { - unsafe { syscall2(SYS_PIPE2, fds.as_ptr() as usize, flags) } -} - -/// Read from a file descriptor into a buffer -pub fn read(fd: usize, buf: &mut [u8]) -> Result { - unsafe { syscall3(SYS_READ, fd, buf.as_mut_ptr() as usize, buf.len()) } -} - -/// Remove a directory -pub fn rmdir>(path: T) -> Result { - unsafe { syscall2(SYS_RMDIR, path.as_ref().as_ptr() as usize, path.as_ref().len()) } -} - -/// Set the process group ID -pub fn setpgid(pid: usize, pgid: usize) -> Result { - unsafe { syscall2(SYS_SETPGID, pid, pgid) } -} - -/// Set the current process group IDs -pub fn setregid(rgid: usize, egid: usize) -> Result { - unsafe { syscall2(SYS_SETREGID, rgid, egid) } -} - -/// Make a new scheme namespace -pub fn setrens(rns: usize, ens: usize) -> Result { - unsafe { syscall2(SYS_SETRENS, rns, ens) } -} - -/// Set the current process user IDs -pub fn setreuid(ruid: usize, euid: usize) -> Result { - unsafe { syscall2(SYS_SETREUID, ruid, euid) } -} - -/// Set up a signal handler -pub fn sigaction(sig: usize, act: Option<&SigAction>, oldact: Option<&mut SigAction>) -> Result { - unsafe { syscall4(SYS_SIGACTION, sig, - act.map(|x| x as *const _).unwrap_or_else(ptr::null) as usize, - oldact.map(|x| x as *mut _).unwrap_or_else(ptr::null_mut) as usize, - restorer as usize) } -} - -/// Get and/or set signal masks -pub fn sigprocmask(how: usize, set: Option<&[u64; 2]>, oldset: Option<&mut [u64; 2]>) -> Result { - unsafe { syscall3(SYS_SIGPROCMASK, how, - set.map(|x| x as *const _).unwrap_or_else(ptr::null) as usize, - oldset.map(|x| x as *mut _).unwrap_or_else(ptr::null_mut) as usize) } -} - -// Return from signal handler -pub fn sigreturn() -> Result { - unsafe { syscall0(SYS_SIGRETURN) } -} - -/// Set the file mode creation mask -pub fn umask(mask: usize) -> Result { - unsafe { syscall1(SYS_UMASK, mask) } -} - -/// Remove a file -pub fn unlink>(path: T) -> Result { - unsafe { syscall2(SYS_UNLINK, path.as_ref().as_ptr() as usize, path.as_ref().len()) } -} - -/// Convert a virtual address to a physical one -/// -/// # Errors -/// -/// * `EPERM` - `uid != 0` -pub unsafe fn virttophys(virtual_address: usize) -> Result { - syscall1(SYS_VIRTTOPHYS, virtual_address) -} - -/// Check if a child process has exited or received a signal -pub fn waitpid(pid: usize, status: &mut usize, options: WaitFlags) -> Result { - unsafe { syscall3(SYS_WAITPID, pid, status as *mut usize as usize, options.bits()) } -} - -/// Write a buffer to a file descriptor -/// -/// The kernel will attempt to write the bytes in `buf` to the file descriptor `fd`, returning -/// either an `Err`, explained below, or `Ok(count)` where `count` is the number of bytes which -/// were written. -/// -/// # Errors -/// -/// * `EAGAIN` - the file descriptor was opened with `O_NONBLOCK` and writing would block -/// * `EBADF` - the file descriptor is not valid or is not open for writing -/// * `EFAULT` - `buf` does not point to the process's addressible memory -/// * `EIO` - an I/O error occurred -/// * `ENOSPC` - the device containing the file descriptor has no room for data -/// * `EPIPE` - the file descriptor refers to a pipe or socket whose reading end is closed -pub fn write(fd: usize, buf: &[u8]) -> Result { - unsafe { syscall3(SYS_WRITE, fd, buf.as_ptr() as usize, buf.len()) } -} - -/// Yield the process's time slice to the kernel -/// -/// This function will return Ok(0) on success -pub fn sched_yield() -> Result { - unsafe { syscall0(SYS_YIELD) } -} diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/daemon.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/daemon.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/daemon.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/daemon.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -use core::convert::Infallible; - -use super::{ - clone, - CloneFlags, - close, - EIO, - Error, - exit, - pipe2, - read, - Result, - write, -}; - -#[must_use = "Daemon::ready must be called"] -pub struct Daemon { - write_pipe: usize, -} - -impl Daemon { - pub fn new Infallible>(f: F) -> Result { - let mut pipes = [0; 2]; - pipe2(&mut pipes, 0)?; - - let [read_pipe, write_pipe] = pipes; - - if unsafe { clone(CloneFlags::empty())? } == 0 { - let _ = close(read_pipe); - - f(Daemon { - write_pipe, - }); - // TODO: Replace Infallible with the never type once it is stabilized. - unreachable!(); - } else { - let _ = close(write_pipe); - - let mut data = [0]; - let res = read(read_pipe, &mut data); - let _ = close(read_pipe); - - if res? == 1 { - exit(data[0] as usize)?; - unreachable!(); - } else { - Err(Error::new(EIO)) - } - } - } - - pub fn ready(self) -> Result<()> { - let res = write(self.write_pipe, &[0]); - let _ = close(self.write_pipe); - - if res? == 1 { - Ok(()) - } else { - Err(Error::new(EIO)) - } - } -} diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/data.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/data.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/data.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/data.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,297 +0,0 @@ -use core::ops::{Deref, DerefMut}; -use core::{mem, slice}; -use crate::flag::{EventFlags, MapFlags, PtraceFlags, SigActionFlags}; - -#[derive(Copy, Clone, Debug, Default)] -#[repr(C)] -pub struct Event { - pub id: usize, - pub flags: EventFlags, - pub data: usize -} - -impl Deref for Event { - type Target = [u8]; - fn deref(&self) -> &[u8] { - unsafe { - slice::from_raw_parts(self as *const Event as *const u8, mem::size_of::()) - } - } -} - -impl DerefMut for Event { - fn deref_mut(&mut self) -> &mut [u8] { - unsafe { - slice::from_raw_parts_mut(self as *mut Event as *mut u8, mem::size_of::()) - } - } -} - -#[derive(Copy, Clone, Debug, Default)] -#[repr(C)] -pub struct ITimerSpec { - pub it_interval: TimeSpec, - pub it_value: TimeSpec, -} - -impl Deref for ITimerSpec { - type Target = [u8]; - fn deref(&self) -> &[u8] { - unsafe { - slice::from_raw_parts(self as *const ITimerSpec as *const u8, - mem::size_of::()) - } - } -} - -impl DerefMut for ITimerSpec { - fn deref_mut(&mut self) -> &mut [u8] { - unsafe { - slice::from_raw_parts_mut(self as *mut ITimerSpec as *mut u8, - mem::size_of::()) - } - } -} - -#[derive(Copy, Clone, Debug, Default)] -#[repr(C)] -pub struct OldMap { - pub offset: usize, - pub size: usize, - pub flags: MapFlags, -} - -impl Deref for OldMap { - type Target = [u8]; - fn deref(&self) -> &[u8] { - unsafe { - slice::from_raw_parts(self as *const OldMap as *const u8, mem::size_of::()) - } - } -} - -impl DerefMut for OldMap { - fn deref_mut(&mut self) -> &mut [u8] { - unsafe { - slice::from_raw_parts_mut(self as *mut OldMap as *mut u8, mem::size_of::()) - } - } -} -#[derive(Copy, Clone, Debug, Default)] -#[repr(C)] -pub struct Map { - /// The offset inside the file that is being mapped. - pub offset: usize, - - /// The size of the memory map. - pub size: usize, - - /// Contains both prot and map flags. - pub flags: MapFlags, - - /// Functions as a hint to where in the virtual address space of the running process, to place - /// the memory map. If [`MapFlags::MAP_FIXED`] is set, then this address must be the address to - /// map to. - pub address: usize, -} - -impl Deref for Map { - type Target = [u8]; - fn deref(&self) -> &[u8] { - unsafe { - slice::from_raw_parts(self as *const Map as *const u8, mem::size_of::()) - } - } -} - -impl DerefMut for Map { - fn deref_mut(&mut self) -> &mut [u8] { - unsafe { - slice::from_raw_parts_mut(self as *mut Map as *mut u8, mem::size_of::()) - } - } -} - -#[derive(Copy, Clone, Debug, Default)] -#[repr(C)] -pub struct Packet { - pub id: u64, - pub pid: usize, - pub uid: u32, - pub gid: u32, - pub a: usize, - pub b: usize, - pub c: usize, - pub d: usize -} - -impl Deref for Packet { - type Target = [u8]; - fn deref(&self) -> &[u8] { - unsafe { - slice::from_raw_parts(self as *const Packet as *const u8, mem::size_of::()) - } - } -} - -impl DerefMut for Packet { - fn deref_mut(&mut self) -> &mut [u8] { - unsafe { - slice::from_raw_parts_mut(self as *mut Packet as *mut u8, mem::size_of::()) - } - } -} - -#[derive(Copy, Clone, Debug, Default, PartialEq)] -#[repr(C)] -pub struct SigAction { - pub sa_handler: Option, - pub sa_mask: [u64; 2], - pub sa_flags: SigActionFlags, -} - -#[allow(dead_code)] -unsafe fn _assert_size_of_function_is_sane() { - // Transmuting will complain *at compile time* if sizes differ. - // Rust forbids a fn-pointer from being 0 so to allow SIG_DFL to - // exist, we use Option which will mean 0 - // becomes None - let _ = mem::transmute::, usize>(None); -} - -#[derive(Copy, Clone, Debug, Default, PartialEq)] -#[repr(C)] -pub struct Stat { - pub st_dev: u64, - pub st_ino: u64, - pub st_mode: u16, - pub st_nlink: u32, - pub st_uid: u32, - pub st_gid: u32, - pub st_size: u64, - pub st_blksize: u32, - pub st_blocks: u64, - pub st_mtime: u64, - pub st_mtime_nsec: u32, - pub st_atime: u64, - pub st_atime_nsec: u32, - pub st_ctime: u64, - pub st_ctime_nsec: u32, -} - -impl Deref for Stat { - type Target = [u8]; - fn deref(&self) -> &[u8] { - unsafe { - slice::from_raw_parts(self as *const Stat as *const u8, - mem::size_of::()) - } - } -} - -impl DerefMut for Stat { - fn deref_mut(&mut self) -> &mut [u8] { - unsafe { - slice::from_raw_parts_mut(self as *mut Stat as *mut u8, - mem::size_of::()) - } - } -} - -#[derive(Copy, Clone, Debug, Default, PartialEq)] -#[repr(C)] -pub struct StatVfs { - pub f_bsize: u32, - pub f_blocks: u64, - pub f_bfree: u64, - pub f_bavail: u64, -} - -impl Deref for StatVfs { - type Target = [u8]; - fn deref(&self) -> &[u8] { - unsafe { - slice::from_raw_parts(self as *const StatVfs as *const u8, - mem::size_of::()) - } - } -} - -impl DerefMut for StatVfs { - fn deref_mut(&mut self) -> &mut [u8] { - unsafe { - slice::from_raw_parts_mut(self as *mut StatVfs as *mut u8, - mem::size_of::()) - } - } -} - -#[derive(Copy, Clone, Debug, Default, PartialEq)] -#[repr(C)] -pub struct TimeSpec { - pub tv_sec: i64, - pub tv_nsec: i32, -} - -impl Deref for TimeSpec { - type Target = [u8]; - fn deref(&self) -> &[u8] { - unsafe { - slice::from_raw_parts(self as *const TimeSpec as *const u8, - mem::size_of::()) - } - } -} - -impl DerefMut for TimeSpec { - fn deref_mut(&mut self) -> &mut [u8] { - unsafe { - slice::from_raw_parts_mut(self as *mut TimeSpec as *mut u8, - mem::size_of::()) - } - } -} - -#[derive(Clone, Copy, Debug, Default)] -#[repr(C)] -pub struct PtraceEvent { - pub cause: PtraceFlags, - pub a: usize, - pub b: usize, - pub c: usize, - pub d: usize, - pub e: usize, - pub f: usize -} - -impl Deref for PtraceEvent { - type Target = [u8]; - fn deref(&self) -> &[u8] { - unsafe { - slice::from_raw_parts(self as *const PtraceEvent as *const u8, mem::size_of::()) - } - } -} - -impl DerefMut for PtraceEvent { - fn deref_mut(&mut self) -> &mut [u8] { - unsafe { - slice::from_raw_parts_mut(self as *mut PtraceEvent as *mut u8, mem::size_of::()) - } - } -} - -#[macro_export] -macro_rules! ptrace_event { - ($cause:expr $(, $a:expr $(, $b:expr $(, $c:expr)?)?)?) => { - $crate::data::PtraceEvent { - cause: $cause, - $(a: $a, - $(b: $b, - $(c: $c,)? - )? - )? - ..Default::default() - } - } -} diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/error.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/error.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/error.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/error.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,311 +0,0 @@ -use core::{fmt, result}; - -#[derive(Eq, PartialEq)] -pub struct Error { - pub errno: i32, -} - -pub type Result = result::Result; - -impl Error { - pub fn new(errno: i32) -> Error { - Error { errno: errno } - } - - pub fn mux(result: Result) -> usize { - match result { - Ok(value) => value, - Err(error) => -error.errno as usize, - } - } - - pub fn demux(value: usize) -> Result { - let errno = -(value as i32); - if errno >= 1 && errno < STR_ERROR.len() as i32 { - Err(Error::new(errno)) - } else { - Ok(value) - } - } - - pub fn text(&self) -> &'static str { - STR_ERROR.get(self.errno as usize).map(|&x| x).unwrap_or("Unknown Error") - } -} - -impl fmt::Debug for Error { - fn fmt(&self, f: &mut fmt::Formatter) -> result::Result<(), fmt::Error> { - f.write_str(self.text()) - } -} - -impl fmt::Display for Error { - fn fmt(&self, f: &mut fmt::Formatter) -> result::Result<(), fmt::Error> { - f.write_str(self.text()) - } -} - -pub const EPERM: i32 = 1; /* Operation not permitted */ -pub const ENOENT: i32 = 2; /* No such file or directory */ -pub const ESRCH: i32 = 3; /* No such process */ -pub const EINTR: i32 = 4; /* Interrupted system call */ -pub const EIO: i32 = 5; /* I/O error */ -pub const ENXIO: i32 = 6; /* No such device or address */ -pub const E2BIG: i32 = 7; /* Argument list too long */ -pub const ENOEXEC: i32 = 8; /* Exec format error */ -pub const EBADF: i32 = 9; /* Bad file number */ -pub const ECHILD: i32 = 10; /* No child processes */ -pub const EAGAIN: i32 = 11; /* Try again */ -pub const ENOMEM: i32 = 12; /* Out of memory */ -pub const EACCES: i32 = 13; /* Permission denied */ -pub const EFAULT: i32 = 14; /* Bad address */ -pub const ENOTBLK: i32 = 15; /* Block device required */ -pub const EBUSY: i32 = 16; /* Device or resource busy */ -pub const EEXIST: i32 = 17; /* File exists */ -pub const EXDEV: i32 = 18; /* Cross-device link */ -pub const ENODEV: i32 = 19; /* No such device */ -pub const ENOTDIR: i32 = 20; /* Not a directory */ -pub const EISDIR: i32 = 21; /* Is a directory */ -pub const EINVAL: i32 = 22; /* Invalid argument */ -pub const ENFILE: i32 = 23; /* File table overflow */ -pub const EMFILE: i32 = 24; /* Too many open files */ -pub const ENOTTY: i32 = 25; /* Not a typewriter */ -pub const ETXTBSY: i32 = 26; /* Text file busy */ -pub const EFBIG: i32 = 27; /* File too large */ -pub const ENOSPC: i32 = 28; /* No space left on device */ -pub const ESPIPE: i32 = 29; /* Illegal seek */ -pub const EROFS: i32 = 30; /* Read-only file system */ -pub const EMLINK: i32 = 31; /* Too many links */ -pub const EPIPE: i32 = 32; /* Broken pipe */ -pub const EDOM: i32 = 33; /* Math argument out of domain of func */ -pub const ERANGE: i32 = 34; /* Math result not representable */ -pub const EDEADLK: i32 = 35; /* Resource deadlock would occur */ -pub const ENAMETOOLONG: i32 = 36; /* File name too long */ -pub const ENOLCK: i32 = 37; /* No record locks available */ -pub const ENOSYS: i32 = 38; /* Function not implemented */ -pub const ENOTEMPTY: i32 = 39; /* Directory not empty */ -pub const ELOOP: i32 = 40; /* Too many symbolic links encountered */ -pub const EWOULDBLOCK: i32 = 41; /* Operation would block */ -pub const ENOMSG: i32 = 42; /* No message of desired type */ -pub const EIDRM: i32 = 43; /* Identifier removed */ -pub const ECHRNG: i32 = 44; /* Channel number out of range */ -pub const EL2NSYNC: i32 = 45; /* Level 2 not synchronized */ -pub const EL3HLT: i32 = 46; /* Level 3 halted */ -pub const EL3RST: i32 = 47; /* Level 3 reset */ -pub const ELNRNG: i32 = 48; /* Link number out of range */ -pub const EUNATCH: i32 = 49; /* Protocol driver not attached */ -pub const ENOCSI: i32 = 50; /* No CSI structure available */ -pub const EL2HLT: i32 = 51; /* Level 2 halted */ -pub const EBADE: i32 = 52; /* Invalid exchange */ -pub const EBADR: i32 = 53; /* Invalid request descriptor */ -pub const EXFULL: i32 = 54; /* Exchange full */ -pub const ENOANO: i32 = 55; /* No anode */ -pub const EBADRQC: i32 = 56; /* Invalid request code */ -pub const EBADSLT: i32 = 57; /* Invalid slot */ -pub const EDEADLOCK: i32 = 58; /* Resource deadlock would occur */ -pub const EBFONT: i32 = 59; /* Bad font file format */ -pub const ENOSTR: i32 = 60; /* Device not a stream */ -pub const ENODATA: i32 = 61; /* No data available */ -pub const ETIME: i32 = 62; /* Timer expired */ -pub const ENOSR: i32 = 63; /* Out of streams resources */ -pub const ENONET: i32 = 64; /* Machine is not on the network */ -pub const ENOPKG: i32 = 65; /* Package not installed */ -pub const EREMOTE: i32 = 66; /* Object is remote */ -pub const ENOLINK: i32 = 67; /* Link has been severed */ -pub const EADV: i32 = 68; /* Advertise error */ -pub const ESRMNT: i32 = 69; /* Srmount error */ -pub const ECOMM: i32 = 70; /* Communication error on send */ -pub const EPROTO: i32 = 71; /* Protocol error */ -pub const EMULTIHOP: i32 = 72; /* Multihop attempted */ -pub const EDOTDOT: i32 = 73; /* RFS specific error */ -pub const EBADMSG: i32 = 74; /* Not a data message */ -pub const EOVERFLOW: i32 = 75; /* Value too large for defined data type */ -pub const ENOTUNIQ: i32 = 76; /* Name not unique on network */ -pub const EBADFD: i32 = 77; /* File descriptor in bad state */ -pub const EREMCHG: i32 = 78; /* Remote address changed */ -pub const ELIBACC: i32 = 79; /* Can not access a needed shared library */ -pub const ELIBBAD: i32 = 80; /* Accessing a corrupted shared library */ -pub const ELIBSCN: i32 = 81; /* .lib section in a.out corrupted */ -pub const ELIBMAX: i32 = 82; /* Attempting to link in too many shared libraries */ -pub const ELIBEXEC: i32 = 83; /* Cannot exec a shared library directly */ -pub const EILSEQ: i32 = 84; /* Illegal byte sequence */ -pub const ERESTART: i32 = 85; /* Interrupted system call should be restarted */ -pub const ESTRPIPE: i32 = 86; /* Streams pipe error */ -pub const EUSERS: i32 = 87; /* Too many users */ -pub const ENOTSOCK: i32 = 88; /* Socket operation on non-socket */ -pub const EDESTADDRREQ: i32 = 89; /* Destination address required */ -pub const EMSGSIZE: i32 = 90; /* Message too long */ -pub const EPROTOTYPE: i32 = 91; /* Protocol wrong type for socket */ -pub const ENOPROTOOPT: i32 = 92; /* Protocol not available */ -pub const EPROTONOSUPPORT: i32 = 93; /* Protocol not supported */ -pub const ESOCKTNOSUPPORT: i32 = 94; /* Socket type not supported */ -pub const EOPNOTSUPP: i32 = 95; /* Operation not supported on transport endpoint */ -pub const EPFNOSUPPORT: i32 = 96; /* Protocol family not supported */ -pub const EAFNOSUPPORT: i32 = 97; /* Address family not supported by protocol */ -pub const EADDRINUSE: i32 = 98; /* Address already in use */ -pub const EADDRNOTAVAIL: i32 = 99; /* Cannot assign requested address */ -pub const ENETDOWN: i32 = 100; /* Network is down */ -pub const ENETUNREACH: i32 = 101; /* Network is unreachable */ -pub const ENETRESET: i32 = 102; /* Network dropped connection because of reset */ -pub const ECONNABORTED: i32 = 103; /* Software caused connection abort */ -pub const ECONNRESET: i32 = 104; /* Connection reset by peer */ -pub const ENOBUFS: i32 = 105; /* No buffer space available */ -pub const EISCONN: i32 = 106; /* Transport endpoint is already connected */ -pub const ENOTCONN: i32 = 107; /* Transport endpoint is not connected */ -pub const ESHUTDOWN: i32 = 108; /* Cannot send after transport endpoint shutdown */ -pub const ETOOMANYREFS: i32 = 109; /* Too many references: cannot splice */ -pub const ETIMEDOUT: i32 = 110; /* Connection timed out */ -pub const ECONNREFUSED: i32 = 111; /* Connection refused */ -pub const EHOSTDOWN: i32 = 112; /* Host is down */ -pub const EHOSTUNREACH: i32 = 113; /* No route to host */ -pub const EALREADY: i32 = 114; /* Operation already in progress */ -pub const EINPROGRESS: i32 = 115; /* Operation now in progress */ -pub const ESTALE: i32 = 116; /* Stale NFS file handle */ -pub const EUCLEAN: i32 = 117; /* Structure needs cleaning */ -pub const ENOTNAM: i32 = 118; /* Not a XENIX named type file */ -pub const ENAVAIL: i32 = 119; /* No XENIX semaphores available */ -pub const EISNAM: i32 = 120; /* Is a named type file */ -pub const EREMOTEIO: i32 = 121; /* Remote I/O error */ -pub const EDQUOT: i32 = 122; /* Quota exceeded */ -pub const ENOMEDIUM: i32 = 123; /* No medium found */ -pub const EMEDIUMTYPE: i32 = 124; /* Wrong medium type */ -pub const ECANCELED: i32 = 125; /* Operation Canceled */ -pub const ENOKEY: i32 = 126; /* Required key not available */ -pub const EKEYEXPIRED: i32 = 127; /* Key has expired */ -pub const EKEYREVOKED: i32 = 128; /* Key has been revoked */ -pub const EKEYREJECTED: i32 = 129; /* Key was rejected by service */ -pub const EOWNERDEAD: i32 = 130; /* Owner died */ -pub const ENOTRECOVERABLE: i32 = 131; /* State not recoverable */ - -pub static STR_ERROR: [&'static str; 132] = ["Success", - "Operation not permitted", - "No such file or directory", - "No such process", - "Interrupted system call", - "I/O error", - "No such device or address", - "Argument list too long", - "Exec format error", - "Bad file number", - "No child processes", - "Try again", - "Out of memory", - "Permission denied", - "Bad address", - "Block device required", - "Device or resource busy", - "File exists", - "Cross-device link", - "No such device", - "Not a directory", - "Is a directory", - "Invalid argument", - "File table overflow", - "Too many open files", - "Not a typewriter", - "Text file busy", - "File too large", - "No space left on device", - "Illegal seek", - "Read-only file system", - "Too many links", - "Broken pipe", - "Math argument out of domain of func", - "Math result not representable", - "Resource deadlock would occur", - "File name too long", - "No record locks available", - "Function not implemented", - "Directory not empty", - "Too many symbolic links encountered", - "Operation would block", - "No message of desired type", - "Identifier removed", - "Channel number out of range", - "Level 2 not synchronized", - "Level 3 halted", - "Level 3 reset", - "Link number out of range", - "Protocol driver not attached", - "No CSI structure available", - "Level 2 halted", - "Invalid exchange", - "Invalid request descriptor", - "Exchange full", - "No anode", - "Invalid request code", - "Invalid slot", - "Resource deadlock would occur", - "Bad font file format", - "Device not a stream", - "No data available", - "Timer expired", - "Out of streams resources", - "Machine is not on the network", - "Package not installed", - "Object is remote", - "Link has been severed", - "Advertise error", - "Srmount error", - "Communication error on send", - "Protocol error", - "Multihop attempted", - "RFS specific error", - "Not a data message", - "Value too large for defined data type", - "Name not unique on network", - "File descriptor in bad state", - "Remote address changed", - "Can not access a needed shared library", - "Accessing a corrupted shared library", - ".lib section in a.out corrupted", - "Attempting to link in too many shared libraries", - "Cannot exec a shared library directly", - "Illegal byte sequence", - "Interrupted system call should be restarted", - "Streams pipe error", - "Too many users", - "Socket operation on non-socket", - "Destination address required", - "Message too long", - "Protocol wrong type for socket", - "Protocol not available", - "Protocol not supported", - "Socket type not supported", - "Operation not supported on transport endpoint", - "Protocol family not supported", - "Address family not supported by protocol", - "Address already in use", - "Cannot assign requested address", - "Network is down", - "Network is unreachable", - "Network dropped connection because of reset", - "Software caused connection abort", - "Connection reset by peer", - "No buffer space available", - "Transport endpoint is already connected", - "Transport endpoint is not connected", - "Cannot send after transport endpoint shutdown", - "Too many references: cannot splice", - "Connection timed out", - "Connection refused", - "Host is down", - "No route to host", - "Operation already in progress", - "Operation now in progress", - "Stale NFS file handle", - "Structure needs cleaning", - "Not a XENIX named type file", - "No XENIX semaphores available", - "Is a named type file", - "Remote I/O error", - "Quota exceeded", - "No medium found", - "Wrong medium type", - "Operation Canceled", - "Required key not available", - "Key has expired", - "Key has been revoked", - "Key was rejected by service", - "Owner died", - "State not recoverable"]; diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/flag.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/flag.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/flag.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/flag.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,348 +0,0 @@ -use bitflags::bitflags as inner_bitflags; -use core::{mem, ops::Deref, slice}; - -macro_rules! bitflags { - ( - $(#[$outer:meta])* - pub struct $BitFlags:ident: $T:ty { - $( - $(#[$inner:ident $($args:tt)*])* - const $Flag:ident = $value:expr; - )+ - } - ) => { - // First, use the inner bitflags - inner_bitflags! { - #[derive(Default)] - $(#[$outer])* - pub struct $BitFlags: $T { - $( - $(#[$inner $($args)*])* - const $Flag = $value; - )+ - } - } - - // Secondly, re-export all inner constants - // (`pub use self::Struct::*` doesn't work) - $( - $(#[$inner $($args)*])* - pub const $Flag: $BitFlags = $BitFlags::$Flag; - )+ - } -} - -bitflags! { - pub struct CloneFlags: usize { - const CLONE_VM = 0x100; - const CLONE_FS = 0x200; - const CLONE_FILES = 0x400; - const CLONE_SIGHAND = 0x800; - const CLONE_VFORK = 0x4000; - const CLONE_THREAD = 0x10000; - const CLONE_STACK = 0x1000_0000; - } -} - -pub const CLOCK_REALTIME: usize = 1; -pub const CLOCK_MONOTONIC: usize = 4; - -bitflags! { - pub struct EventFlags: usize { - const EVENT_NONE = 0; - const EVENT_READ = 1; - const EVENT_WRITE = 2; - } -} - -pub const F_DUPFD: usize = 0; -pub const F_GETFD: usize = 1; -pub const F_SETFD: usize = 2; -pub const F_GETFL: usize = 3; -pub const F_SETFL: usize = 4; - -pub const FUTEX_WAIT: usize = 0; -pub const FUTEX_WAKE: usize = 1; -pub const FUTEX_REQUEUE: usize = 2; -pub const FUTEX_WAIT64: usize = 3; - -bitflags! { - pub struct MapFlags: usize { - const PROT_NONE = 0x0000_0000; - const PROT_EXEC = 0x0001_0000; - const PROT_WRITE = 0x0002_0000; - const PROT_READ = 0x0004_0000; - - const MAP_SHARED = 0x0001; - const MAP_PRIVATE = 0x0002; - - /// Only accepted for mmap2(2). - const MAP_FIXED = 0x0004; - const MAP_FIXED_NOREPLACE = 0x000C; - } -} - -pub const MODE_TYPE: u16 = 0xF000; -pub const MODE_DIR: u16 = 0x4000; -pub const MODE_FILE: u16 = 0x8000; -pub const MODE_SYMLINK: u16 = 0xA000; -pub const MODE_FIFO: u16 = 0x1000; -pub const MODE_CHR: u16 = 0x2000; - -pub const MODE_PERM: u16 = 0x0FFF; -pub const MODE_SETUID: u16 = 0o4000; -pub const MODE_SETGID: u16 = 0o2000; - -pub const O_RDONLY: usize = 0x0001_0000; -pub const O_WRONLY: usize = 0x0002_0000; -pub const O_RDWR: usize = 0x0003_0000; -pub const O_NONBLOCK: usize = 0x0004_0000; -pub const O_APPEND: usize = 0x0008_0000; -pub const O_SHLOCK: usize = 0x0010_0000; -pub const O_EXLOCK: usize = 0x0020_0000; -pub const O_ASYNC: usize = 0x0040_0000; -pub const O_FSYNC: usize = 0x0080_0000; -pub const O_CLOEXEC: usize = 0x0100_0000; -pub const O_CREAT: usize = 0x0200_0000; -pub const O_TRUNC: usize = 0x0400_0000; -pub const O_EXCL: usize = 0x0800_0000; -pub const O_DIRECTORY: usize = 0x1000_0000; -pub const O_STAT: usize = 0x2000_0000; -pub const O_SYMLINK: usize = 0x4000_0000; -pub const O_NOFOLLOW: usize = 0x8000_0000; -pub const O_ACCMODE: usize = O_RDONLY | O_WRONLY | O_RDWR; - -bitflags! { - pub struct PhysmapFlags: usize { - const PHYSMAP_WRITE = 0x0000_0001; - const PHYSMAP_WRITE_COMBINE = 0x0000_0002; - const PHYSMAP_NO_CACHE = 0x0000_0004; - } -} -bitflags! { - /// Extra flags for [`physalloc2`] or [`physalloc3`]. - /// - /// [`physalloc2`]: ../call/fn.physalloc2.html - /// [`physalloc3`]: ../call/fn.physalloc3.html - pub struct PhysallocFlags: usize { - /// Only allocate memory within the 32-bit physical memory space. This is necessary for - /// some devices may not support 64-bit memory. - const SPACE_32 = 0x0000_0001; - - /// The frame that will be allocated, is going to reside anywhere in 64-bit space. This - /// flag is redundant for the most part, except when overriding some other default. - const SPACE_64 = 0x0000_0002; - - /// Do a "partial allocation", which means that not all of the frames specified in the - /// frame count `size` actually have to be allocated. This means that if the allocator was - /// unable to find a physical memory range large enough, it can instead return whatever - /// range it decides is optimal. Thus, instead of letting one driver get an expensive - /// 128MiB physical memory range when the physical memory has become fragmented, and - /// failing, it can instead be given a more optimal range. If the device supports - /// scatter-gather lists, then the driver only has to allocate more ranges, and the device - /// will do vectored I/O. - /// - /// PARTIAL_ALLOC supports different allocation strategies, refer to - /// [`Optimal`], [`GreatestRange`]. - /// - /// [`Optimal`]: ./enum.PartialAllocStrategy.html - /// [`GreatestRange`]: ./enum.PartialAllocStrategy.html - const PARTIAL_ALLOC = 0x0000_0004; - } -} - -/// The bitmask of the partial allocation strategy. Currently four different strategies are -/// supported. If [`PARTIAL_ALLOC`] is not set, this bitmask is no longer reserved. -pub const PARTIAL_ALLOC_STRATEGY_MASK: usize = 0x0003_0000; - -#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] -#[repr(usize)] -pub enum PartialAllocStrategy { - /// The allocator decides itself the size of the memory range, based on e.g. free memory ranges - /// and other processes which require large physical memory chunks. - Optimal = 0x0001_0000, - - /// The allocator returns the absolute greatest range it can find. - GreatestRange = 0x0002_0000, - - /// The allocator returns the first range that fits the minimum count, without searching extra. - Greedy = 0x0003_0000, -} -impl Default for PartialAllocStrategy { - fn default() -> Self { - Self::Optimal - } -} - -impl PartialAllocStrategy { - pub fn from_raw(raw: usize) -> Option { - match raw { - 0x0001_0000 => Some(Self::Optimal), - 0x0002_0000 => Some(Self::GreatestRange), - 0x0003_0000 => Some(Self::Greedy), - _ => None, - } - } -} - -// The top 48 bits of PTRACE_* are reserved, for now - -bitflags! { - pub struct PtraceFlags: u64 { - /// Stop before a syscall is handled. Send PTRACE_FLAG_IGNORE to not - /// handle the syscall. - const PTRACE_STOP_PRE_SYSCALL = 0x0000_0000_0000_0001; - /// Stop after a syscall is handled. - const PTRACE_STOP_POST_SYSCALL = 0x0000_0000_0000_0002; - /// Stop after exactly one instruction. TODO: This may not handle - /// fexec/signal boundaries. Should it? - const PTRACE_STOP_SINGLESTEP = 0x0000_0000_0000_0004; - /// Stop before a signal is handled. Send PTRACE_FLAG_IGNORE to not - /// handle signal. - const PTRACE_STOP_SIGNAL = 0x0000_0000_0000_0008; - /// Stop on a software breakpoint, such as the int3 instruction for - /// x86_64. - const PTRACE_STOP_BREAKPOINT = 0x0000_0000_0000_0010; - /// Stop just before exiting for good. - const PTRACE_STOP_EXIT = 0x0000_0000_0000_0020; - - const PTRACE_STOP_MASK = 0x0000_0000_0000_00FF; - - - /// Sent when a child is cloned, giving you the opportunity to trace it. - /// If you don't catch this, the child is started as normal. - const PTRACE_EVENT_CLONE = 0x0000_0000_0000_0100; - - const PTRACE_EVENT_MASK = 0x0000_0000_0000_0F00; - - - /// Special meaning, depending on the event. Usually, when fired before - /// an action, it will skip performing that action. - const PTRACE_FLAG_IGNORE = 0x0000_0000_0000_1000; - - const PTRACE_FLAG_MASK = 0x0000_0000_0000_F000; - } -} -impl Deref for PtraceFlags { - type Target = [u8]; - fn deref(&self) -> &Self::Target { - // Same as to_ne_bytes but in-place - unsafe { - slice::from_raw_parts( - &self.bits as *const _ as *const u8, - mem::size_of::() - ) - } - } -} - -pub const SEEK_SET: usize = 0; -pub const SEEK_CUR: usize = 1; -pub const SEEK_END: usize = 2; - -pub const SIGHUP: usize = 1; -pub const SIGINT: usize = 2; -pub const SIGQUIT: usize = 3; -pub const SIGILL: usize = 4; -pub const SIGTRAP: usize = 5; -pub const SIGABRT: usize = 6; -pub const SIGBUS: usize = 7; -pub const SIGFPE: usize = 8; -pub const SIGKILL: usize = 9; -pub const SIGUSR1: usize = 10; -pub const SIGSEGV: usize = 11; -pub const SIGUSR2: usize = 12; -pub const SIGPIPE: usize = 13; -pub const SIGALRM: usize = 14; -pub const SIGTERM: usize = 15; -pub const SIGSTKFLT: usize= 16; -pub const SIGCHLD: usize = 17; -pub const SIGCONT: usize = 18; -pub const SIGSTOP: usize = 19; -pub const SIGTSTP: usize = 20; -pub const SIGTTIN: usize = 21; -pub const SIGTTOU: usize = 22; -pub const SIGURG: usize = 23; -pub const SIGXCPU: usize = 24; -pub const SIGXFSZ: usize = 25; -pub const SIGVTALRM: usize= 26; -pub const SIGPROF: usize = 27; -pub const SIGWINCH: usize = 28; -pub const SIGIO: usize = 29; -pub const SIGPWR: usize = 30; -pub const SIGSYS: usize = 31; - -pub const SIG_DFL: usize = 0; -pub const SIG_IGN: usize = 1; - -pub const SIG_BLOCK: usize = 0; -pub const SIG_UNBLOCK: usize = 1; -pub const SIG_SETMASK: usize = 2; - -bitflags! { - pub struct SigActionFlags: usize { - const SA_NOCLDSTOP = 0x00000001; - const SA_NOCLDWAIT = 0x00000002; - const SA_SIGINFO = 0x00000004; - const SA_RESTORER = 0x04000000; - const SA_ONSTACK = 0x08000000; - const SA_RESTART = 0x10000000; - const SA_NODEFER = 0x40000000; - const SA_RESETHAND = 0x80000000; - } -} - -// Auxiliery vector types -pub const AT_NULL: usize = 0; -pub const AT_PHDR: usize = 3; -pub const AT_PHENT: usize = 4; -pub const AT_PHNUM: usize = 5; -pub const AT_ENTRY: usize = 9; - -bitflags! { - pub struct WaitFlags: usize { - const WNOHANG = 0x01; - const WUNTRACED = 0x02; - const WCONTINUED = 0x08; - } -} - -/// True if status indicates the child is stopped. -pub fn wifstopped(status: usize) -> bool { - (status & 0xff) == 0x7f -} - -/// If wifstopped(status), the signal that stopped the child. -pub fn wstopsig(status: usize) -> usize { - (status >> 8) & 0xff -} - -/// True if status indicates the child continued after a stop. -pub fn wifcontinued(status: usize) -> bool { - status == 0xffff -} - -/// True if STATUS indicates termination by a signal. -pub fn wifsignaled(status: usize) -> bool { - ((status & 0x7f) + 1) as i8 >= 2 -} - -/// If wifsignaled(status), the terminating signal. -pub fn wtermsig(status: usize) -> usize { - status & 0x7f -} - -/// True if status indicates normal termination. -pub fn wifexited(status: usize) -> bool { - wtermsig(status) == 0 -} - -/// If wifexited(status), the exit status. -pub fn wexitstatus(status: usize) -> usize { - (status >> 8) & 0xff -} - -/// True if status indicates a core dump was created. -pub fn wcoredump(status: usize) -> bool { - (status & 0x80) != 0 -} diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/dma.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/dma.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/dma.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/dma.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,200 +0,0 @@ -use core::mem::{self, MaybeUninit}; -use core::ops::{Deref, DerefMut}; -use core::{ptr, slice}; - -use crate::Result; -use crate::{PartialAllocStrategy, PhysallocFlags}; - -/// An RAII guard of a physical memory allocation. Currently all physically allocated memory are -/// page-aligned and take up at least 4k of space (on x86_64). -#[derive(Debug)] -pub struct PhysBox { - address: usize, - size: usize -} - -impl PhysBox { - /// Construct a PhysBox from an address and a size. - /// - /// # Safety - /// This function is unsafe because when dropping, Self has to a valid allocation. - pub unsafe fn from_raw_parts(address: usize, size: usize) -> Self { - Self { - address, - size, - } - } - - /// Retrieve the byte address in physical memory, of this allocation. - pub fn address(&self) -> usize { - self.address - } - - /// Retrieve the size in bytes of the alloc. - pub fn size(&self) -> usize { - self.size - } - - /// Allocate physical memory that must reside in 32-bit space. - pub fn new_in_32bit_space(size: usize) -> Result { - Self::new_with_flags(size, PhysallocFlags::SPACE_32) - } - - pub fn new_with_flags(size: usize, flags: PhysallocFlags) -> Result { - assert!(!flags.contains(PhysallocFlags::PARTIAL_ALLOC)); - - let address = unsafe { crate::physalloc2(size, flags.bits())? }; - Ok(Self { - address, - size, - }) - } - - /// "Partially" allocate physical memory, in the sense that the allocation may be smaller than - /// expected, but still with a minimum limit. This is particularly useful when the physical - /// memory space is fragmented, and a device supports scatter-gather I/O. In that case, the - /// driver can optimistically request e.g. 1 alloc of 1 MiB, with the minimum of 512 KiB. If - /// that first allocation only returns half the size, the driver can do another allocation - /// and then let the device use both buffers. - pub fn new_partial_allocation(size: usize, flags: PhysallocFlags, strategy: Option, mut min: usize) -> Result { - debug_assert!(!(flags.contains(PhysallocFlags::PARTIAL_ALLOC) && strategy.is_none())); - - let address = unsafe { crate::physalloc3(size, flags.bits() | strategy.map(|s| s as usize).unwrap_or(0), &mut min)? }; - Ok(Self { - address, - size: min, - }) - } - - pub fn new(size: usize) -> Result { - let address = unsafe { crate::physalloc(size)? }; - Ok(Self { - address, - size, - }) - } -} - -impl Drop for PhysBox { - fn drop(&mut self) { - let _ = unsafe { crate::physfree(self.address, self.size) }; - } -} - -pub struct Dma { - phys: PhysBox, - virt: *mut T, -} - -impl Dma { - pub fn from_physbox_uninit(phys: PhysBox) -> Result>> { - let virt = unsafe { crate::physmap(phys.address, phys.size, crate::PHYSMAP_WRITE)? } as *mut MaybeUninit; - - Ok(Dma { - phys, - virt, - }) - } - pub fn from_physbox_zeroed(phys: PhysBox) -> Result>> { - let this = Self::from_physbox_uninit(phys)?; - unsafe { ptr::write_bytes(this.virt as *mut MaybeUninit, 0, this.phys.size) } - Ok(this) - } - - pub fn from_physbox(phys: PhysBox, value: T) -> Result { - let this = Self::from_physbox_uninit(phys)?; - - Ok(unsafe { - ptr::write(this.virt, MaybeUninit::new(value)); - this.assume_init() - }) - } - - pub fn new(value: T) -> Result { - let phys = PhysBox::new(mem::size_of::())?; - Self::from_physbox(phys, value) - } - pub fn zeroed() -> Result>> { - let phys = PhysBox::new(mem::size_of::())?; - Self::from_physbox_zeroed(phys) - } -} - -impl Dma> { - pub unsafe fn assume_init(self) -> Dma { - let &Dma { phys: PhysBox { address, size }, virt } = &self; - mem::forget(self); - - Dma { - phys: PhysBox { address, size }, - virt: virt as *mut T, - } - } -} -impl Dma { - pub fn physical(&self) -> usize { - self.phys.address() - } - pub fn size(&self) -> usize { - self.phys.size() - } - pub fn phys(&self) -> &PhysBox { - &self.phys - } -} - -impl Dma<[T]> { - pub fn from_physbox_uninit_unsized(phys: PhysBox, len: usize) -> Result]>> { - let max_len = phys.size() / mem::size_of::(); - assert!(len <= max_len); - - Ok(Dma { - virt: unsafe { slice::from_raw_parts_mut(crate::physmap(phys.address, phys.size, crate::PHYSMAP_WRITE)? as *mut MaybeUninit, len) } as *mut [MaybeUninit], - phys, - }) - } - pub fn from_physbox_zeroed_unsized(phys: PhysBox, len: usize) -> Result]>> { - let this = Self::from_physbox_uninit_unsized(phys, len)?; - unsafe { ptr::write_bytes(this.virt as *mut MaybeUninit, 0, this.phys.size()) } - Ok(this) - } - /// Creates a new DMA buffer with a size only known at runtime. - /// ## Safety - /// * `T` must be properly aligned. - /// * `T` must be valid as zeroed (i.e. no NonNull pointers). - pub unsafe fn zeroed_unsized(count: usize) -> Result { - let phys = PhysBox::new(mem::size_of::() * count)?; - Ok(Self::from_physbox_zeroed_unsized(phys, count)?.assume_init()) - } -} -impl Dma<[MaybeUninit]> { - pub unsafe fn assume_init(self) -> Dma<[T]> { - let &Dma { phys: PhysBox { address, size }, virt } = &self; - mem::forget(self); - - Dma { - phys: PhysBox { address, size }, - virt: virt as *mut [T], - } - } -} - -impl Deref for Dma { - type Target = T; - fn deref(&self) -> &T { - unsafe { &*self.virt } - } -} - -impl DerefMut for Dma { - fn deref_mut(&mut self) -> &mut T { - unsafe { &mut *self.virt } - } -} - -impl Drop for Dma { - fn drop(&mut self) { - unsafe { ptr::drop_in_place(self.virt) } - let _ = unsafe { crate::physunmap(self.virt as *mut u8 as usize) }; - } -} diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/io.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/io.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/io.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/io.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,71 +0,0 @@ -use core::cmp::PartialEq; -use core::ops::{BitAnd, BitOr, Not}; - -pub trait Io { - type Value: Copy + PartialEq + BitAnd + BitOr + Not; - - fn read(&self) -> Self::Value; - fn write(&mut self, value: Self::Value); - - #[inline(always)] - fn readf(&self, flags: Self::Value) -> bool { - (self.read() & flags) as Self::Value == flags - } - - #[inline(always)] - fn writef(&mut self, flags: Self::Value, value: bool) { - let tmp: Self::Value = match value { - true => self.read() | flags, - false => self.read() & !flags, - }; - self.write(tmp); - } -} - -pub struct ReadOnly { - inner: I -} - -impl ReadOnly { - pub const fn new(inner: I) -> ReadOnly { - ReadOnly { - inner: inner - } - } -} - -impl ReadOnly { - #[inline(always)] - pub fn read(&self) -> I::Value { - self.inner.read() - } - - #[inline(always)] - pub fn readf(&self, flags: I::Value) -> bool { - self.inner.readf(flags) - } -} - -pub struct WriteOnly { - inner: I -} - -impl WriteOnly { - pub const fn new(inner: I) -> WriteOnly { - WriteOnly { - inner: inner - } - } -} - -impl WriteOnly { - #[inline(always)] - pub fn write(&mut self, value: I::Value) { - self.inner.write(value) - } - - #[inline(always)] - pub fn writef(&mut self, flags: I::Value, value: bool) { - self.inner.writef(flags, value) - } -} diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/mmio.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/mmio.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/mmio.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/mmio.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -use core::ptr::{read_volatile, write_volatile, addr_of, addr_of_mut}; -use core::mem::MaybeUninit; -use core::ops::{BitAnd, BitOr, Not}; - -use super::io::Io; - -#[repr(packed)] -pub struct Mmio { - value: MaybeUninit, -} - -impl Mmio { - /// Create a new Mmio without initializing - #[deprecated = "unsound because it's possible to read even though it's uninitialized"] - pub fn new() -> Self { - unsafe { Self::uninit() } - } - pub unsafe fn zeroed() -> Self { - Self { - value: MaybeUninit::zeroed(), - } - } - pub unsafe fn uninit() -> Self { - Self { - value: MaybeUninit::uninit(), - } - } - pub const fn from(value: T) -> Self { - Self { - value: MaybeUninit::new(value), - } - } -} - -impl Io for Mmio where T: Copy + PartialEq + BitAnd + BitOr + Not { - type Value = T; - - fn read(&self) -> T { - unsafe { read_volatile(addr_of!(self.value).cast::()) } - } - - fn write(&mut self, value: T) { - unsafe { write_volatile(addr_of_mut!(self.value).cast::(), value) }; - } -} diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/mod.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/mod.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -//! I/O functions - -pub use self::dma::*; -pub use self::io::*; -pub use self::mmio::*; - -#[cfg(any(target_arch = "x86", target_arch = "x86_64"))] -pub use self::pio::*; - -mod dma; -mod io; -mod mmio; - -#[cfg(any(target_arch = "x86", target_arch = "x86_64"))] -mod pio; diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/pio.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/pio.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/pio.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/io/pio.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,90 +0,0 @@ -use core::arch::asm; -use core::marker::PhantomData; - -use super::io::Io; - -/// Generic PIO -#[derive(Copy, Clone)] -pub struct Pio { - port: u16, - value: PhantomData, -} - -impl Pio { - /// Create a PIO from a given port - pub const fn new(port: u16) -> Self { - Pio:: { - port, - value: PhantomData, - } - } -} - -/// Read/Write for byte PIO -impl Io for Pio { - type Value = u8; - - /// Read - #[inline(always)] - fn read(&self) -> u8 { - let value: u8; - unsafe { - asm!("in al, dx", in("dx") self.port, out("al") value, options(nostack, nomem, preserves_flags)); - } - value - } - - /// Write - #[inline(always)] - fn write(&mut self, value: u8) { - unsafe { - asm!("out dx, al", in("dx") self.port, in("al") value, options(nostack, nomem, preserves_flags)); - } - } -} - -/// Read/Write for word PIO -impl Io for Pio { - type Value = u16; - - /// Read - #[inline(always)] - fn read(&self) -> u16 { - let value: u16; - unsafe { - asm!("in ax, dx", in("dx") self.port, out("ax") value, options(nostack, nomem, preserves_flags)); - } - value - } - - /// Write - #[inline(always)] - fn write(&mut self, value: u16) { - unsafe { - asm!("out dx, ax", in("dx") self.port, in("ax") value, options(nostack, nomem, preserves_flags)); - } - } -} - -/// Read/Write for doubleword PIO -impl Io for Pio { - type Value = u32; - - /// Read - #[inline(always)] - fn read(&self) -> u32 { - let value: u32; - unsafe { - asm!("in eax, dx", in("dx") self.port, out("eax") value, options(nostack, nomem, preserves_flags)); - } - value - } - - /// Write - #[inline(always)] - fn write(&mut self, value: u32) { - unsafe { - asm!("out dx, eax", in("dx") self.port, in("eax") value, options(nostack, nomem, preserves_flags)); - } - } -} diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/lib.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/lib.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,65 +0,0 @@ -#![cfg_attr(not(test), no_std)] - -#[cfg(test)] -extern crate core; - -pub use self::arch::*; -pub use self::call::*; -pub use self::daemon::*; -pub use self::data::*; -pub use self::error::*; -pub use self::flag::*; -pub use self::io::*; -pub use self::number::*; -pub use self::scheme::*; - -#[cfg(all(any(target_os = "none", target_os = "redox"), target_arch = "arm"))] -#[path="arch/nonredox.rs"] -mod arch; - -#[cfg(all(any(target_os = "none", target_os = "redox"), target_arch = "aarch64"))] -#[path="arch/aarch64.rs"] -mod arch; - -#[cfg(all(any(target_os = "none", target_os = "redox"), target_arch = "riscv64"))] -#[path="arch/riscv64.rs"] -mod arch; - -#[cfg(all(any(target_os = "none", target_os = "redox"), target_arch = "x86"))] -#[path="arch/x86.rs"] -mod arch; - -#[cfg(all(any(target_os = "none", target_os = "redox"), target_arch = "x86_64"))] -#[path="arch/x86_64.rs"] -mod arch; - -#[cfg(not(any(target_os = "none", target_os = "redox")))] -#[path="arch/nonredox.rs"] -mod arch; - -/// Function definitions -pub mod call; - -/// Complex structures that are used for some system calls -pub mod data; - -/// Wrapper to make daemons easier to write -pub mod daemon; - -/// All errors that can be generated by a system call -pub mod error; - -/// Flags used as an argument to many system calls -pub mod flag; - -/// Functions for low level hardware control -pub mod io; - -/// Call numbers used by each system call -pub mod number; - -/// A trait useful for scheme handlers -pub mod scheme; - -#[cfg(test)] -mod tests; diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/number.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/number.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/number.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/number.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,78 +0,0 @@ -pub const SYS_CLASS: usize = 0xF000_0000; -pub const SYS_CLASS_PATH: usize=0x1000_0000; -pub const SYS_CLASS_FILE: usize=0x2000_0000; - -pub const SYS_ARG: usize = 0x0F00_0000; -pub const SYS_ARG_SLICE: usize =0x0100_0000; -pub const SYS_ARG_MSLICE: usize=0x0200_0000; -pub const SYS_ARG_PATH: usize = 0x0300_0000; - -pub const SYS_RET: usize = 0x00F0_0000; -pub const SYS_RET_FILE: usize = 0x0010_0000; - -pub const SYS_LINK: usize = SYS_CLASS_PATH | SYS_ARG_PATH | 9; -pub const SYS_OPEN: usize = SYS_CLASS_PATH | SYS_RET_FILE | 5; -pub const SYS_CHMOD: usize = SYS_CLASS_PATH | 15; -pub const SYS_RMDIR: usize = SYS_CLASS_PATH | 84; -pub const SYS_UNLINK: usize = SYS_CLASS_PATH | 10; - -pub const SYS_CLOSE: usize = SYS_CLASS_FILE | 6; -pub const SYS_DUP: usize = SYS_CLASS_FILE | SYS_RET_FILE | 41; -pub const SYS_DUP2: usize = SYS_CLASS_FILE | SYS_RET_FILE | 63; -pub const SYS_READ: usize = SYS_CLASS_FILE | SYS_ARG_MSLICE | 3; -pub const SYS_WRITE: usize = SYS_CLASS_FILE | SYS_ARG_SLICE | 4; -pub const SYS_LSEEK: usize = SYS_CLASS_FILE | 19; -pub const SYS_FCHMOD: usize = SYS_CLASS_FILE | 94; -pub const SYS_FCHOWN: usize = SYS_CLASS_FILE | 207; -pub const SYS_FCNTL: usize = SYS_CLASS_FILE | 55; -pub const SYS_FEVENT: usize = SYS_CLASS_FILE | 927; -pub const SYS_FEXEC: usize = SYS_CLASS_FILE | 11; -pub const SYS_FMAP_OLD: usize = SYS_CLASS_FILE | SYS_ARG_SLICE | 90; -pub const SYS_FMAP: usize = SYS_CLASS_FILE | SYS_ARG_SLICE | 900; -pub const SYS_FUNMAP_OLD: usize = SYS_CLASS_FILE | 91; -pub const SYS_FUNMAP: usize = SYS_CLASS_FILE | 92; -pub const SYS_FPATH: usize = SYS_CLASS_FILE | SYS_ARG_MSLICE | 928; -pub const SYS_FRENAME: usize = SYS_CLASS_FILE | SYS_ARG_PATH | 38; -pub const SYS_FSTAT: usize = SYS_CLASS_FILE | SYS_ARG_MSLICE | 28; -pub const SYS_FSTATVFS: usize = SYS_CLASS_FILE | SYS_ARG_MSLICE | 100; -pub const SYS_FSYNC: usize = SYS_CLASS_FILE | 118; -pub const SYS_FTRUNCATE: usize = SYS_CLASS_FILE | 93; -pub const SYS_FUTIMENS: usize = SYS_CLASS_FILE | SYS_ARG_SLICE | 320; - -pub const SYS_CHDIR: usize = 12; -pub const SYS_CLOCK_GETTIME: usize = 265; -pub const SYS_CLONE: usize = 120; -pub const SYS_EXIT: usize = 1; -pub const SYS_FUTEX: usize = 240; -pub const SYS_GETCWD: usize = 183; -pub const SYS_GETEGID: usize = 202; -pub const SYS_GETENS: usize = 951; -pub const SYS_GETEUID: usize = 201; -pub const SYS_GETGID: usize = 200; -pub const SYS_GETNS: usize = 950; -pub const SYS_GETPID: usize = 20; -pub const SYS_GETPGID: usize = 132; -pub const SYS_GETPPID: usize = 64; -pub const SYS_GETUID: usize = 199; -pub const SYS_IOPL: usize = 110; -pub const SYS_KILL: usize = 37; -pub const SYS_MPROTECT: usize = 125; -pub const SYS_MKNS: usize = 984; -pub const SYS_NANOSLEEP: usize =162; -pub const SYS_PHYSALLOC: usize =945; -pub const SYS_PHYSALLOC3: usize=9453; -pub const SYS_PHYSFREE: usize = 946; -pub const SYS_PHYSMAP: usize = 947; -pub const SYS_PHYSUNMAP: usize =948; -pub const SYS_VIRTTOPHYS: usize=949; -pub const SYS_PIPE2: usize = 331; -pub const SYS_SETPGID: usize = 57; -pub const SYS_SETREGID: usize = 204; -pub const SYS_SETRENS: usize = 952; -pub const SYS_SETREUID: usize = 203; -pub const SYS_SIGACTION: usize =67; -pub const SYS_SIGPROCMASK:usize=126; -pub const SYS_SIGRETURN: usize =119; -pub const SYS_UMASK: usize = 60; -pub const SYS_WAITPID: usize = 7; -pub const SYS_YIELD: usize = 158; diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/generate.sh temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/generate.sh --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/generate.sh 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/generate.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -#!/usr/bin/env bash - -set -e - -echo "Generating SchemeMut from Scheme" -sed 's/trait Scheme/trait SchemeMut/' scheme.rs \ -| sed 's/\&self/\&mut self/g' \ -> scheme_mut.rs - -echo "Generating SchemeBlock from Scheme" -sed 's/trait Scheme/trait SchemeBlock/' scheme.rs \ -| sed 's/fn handle(\&self, packet: \&mut Packet)/fn handle(\&self, packet: \&Packet) -> Option/' \ -| sed 's/packet.a = Error::mux(res);/res.transpose().map(Error::mux)/' \ -| sed 's/\.map(|f| f\.bits())/\.map(|f| f.map(|f| f.bits()))/' \ -| sed 's/\.map(|o| o as usize)/.map(|o| o.map(|o| o as usize))/' \ -| sed 's/Ok(0)/Ok(Some(0))/g' \ -| sed 's/Result<\([^>]\+\)>/Result>/g' \ -> scheme_block.rs - -echo "Generating SchemeBlockMut from SchemeBlock" -sed 's/trait SchemeBlock/trait SchemeBlockMut/' scheme_block.rs \ -| sed 's/\&self/\&mut self/g' \ -> scheme_block_mut.rs diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/mod.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/mod.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -use core::{slice, str}; - -pub use self::scheme::Scheme; -pub use self::scheme_mut::SchemeMut; -pub use self::scheme_block::SchemeBlock; -pub use self::scheme_block_mut::SchemeBlockMut; -pub use self::seek::*; - -unsafe fn str_from_raw_parts(ptr: *const u8, len: usize) -> Option<&'static str> { - let slice = slice::from_raw_parts(ptr, len); - str::from_utf8(slice).ok() -} - -mod scheme; -mod scheme_mut; -mod scheme_block; -mod scheme_block_mut; -mod seek; diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/scheme_block_mut.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/scheme_block_mut.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/scheme_block_mut.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/scheme_block_mut.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,211 +0,0 @@ -use core::{mem, slice}; - -use crate::data::*; -use crate::error::*; -use crate::flag::*; -use crate::number::*; -use crate::scheme::str_from_raw_parts; - -pub trait SchemeBlockMut { - fn handle(&mut self, packet: &Packet) -> Option { - let res = match packet.a { - SYS_OPEN => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } { - self.open(path, packet.d, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - SYS_CHMOD => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } { - self.chmod(path, packet.d as u16, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - SYS_RMDIR => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } { - self.rmdir(path, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - SYS_UNLINK => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } { - self.unlink(path, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - - SYS_DUP => self.dup(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }), - SYS_READ => self.read(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }), - SYS_WRITE => self.write(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }), - SYS_LSEEK => self.seek(packet.b, packet.c as isize, packet.d).map(|o| o.map(|o| o as usize)), - SYS_FCHMOD => self.fchmod(packet.b, packet.c as u16), - SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32), - SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d), - SYS_FEVENT => self.fevent(packet.b, EventFlags::from_bits_truncate(packet.c)).map(|f| f.map(|f| f.bits())), - SYS_FMAP_OLD => if packet.d >= mem::size_of::() { - self.fmap_old(packet.b, unsafe { &*(packet.c as *const OldMap) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_FMAP => if packet.d >= mem::size_of::() { - self.fmap(packet.b, unsafe { &*(packet.c as *const Map) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_FUNMAP_OLD => self.funmap_old(packet.b), - SYS_FUNMAP => self.funmap(packet.b, packet.c), - SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }), - SYS_FRENAME => if let Some(path) = unsafe { str_from_raw_parts(packet.c as *const u8, packet.d) } { - self.frename(packet.b, path, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - SYS_FSTAT => if packet.d >= mem::size_of::() { - self.fstat(packet.b, unsafe { &mut *(packet.c as *mut Stat) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_FSTATVFS => if packet.d >= mem::size_of::() { - self.fstatvfs(packet.b, unsafe { &mut *(packet.c as *mut StatVfs) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_FSYNC => self.fsync(packet.b), - SYS_FTRUNCATE => self.ftruncate(packet.b, packet.c), - SYS_FUTIMENS => if packet.d >= mem::size_of::() { - self.futimens(packet.b, unsafe { slice::from_raw_parts(packet.c as *const TimeSpec, packet.d / mem::size_of::()) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_CLOSE => self.close(packet.b), - _ => Err(Error::new(ENOSYS)) - }; - - res.transpose().map(Error::mux) - } - - /* Scheme operations */ - - #[allow(unused_variables)] - fn open(&mut self, path: &str, flags: usize, uid: u32, gid: u32) -> Result> { - Err(Error::new(ENOENT)) - } - - #[allow(unused_variables)] - fn chmod(&mut self, path: &str, mode: u16, uid: u32, gid: u32) -> Result> { - Err(Error::new(ENOENT)) - } - - #[allow(unused_variables)] - fn rmdir(&mut self, path: &str, uid: u32, gid: u32) -> Result> { - Err(Error::new(ENOENT)) - } - - #[allow(unused_variables)] - fn unlink(&mut self, path: &str, uid: u32, gid: u32) -> Result> { - Err(Error::new(ENOENT)) - } - - /* Resource operations */ - #[allow(unused_variables)] - fn dup(&mut self, old_id: usize, buf: &[u8]) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn read(&mut self, id: usize, buf: &mut [u8]) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn write(&mut self, id: usize, buf: &[u8]) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn seek(&mut self, id: usize, pos: isize, whence: usize) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fchmod(&mut self, id: usize, mode: u16) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fchown(&mut self, id: usize, uid: u32, gid: u32) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fcntl(&mut self, id: usize, cmd: usize, arg: usize) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fevent(&mut self, id: usize, flags: EventFlags) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fmap_old(&mut self, id: usize, map: &OldMap) -> Result> { - Err(Error::new(EBADF)) - } - #[allow(unused_variables)] - fn fmap(&mut self, id: usize, map: &Map) -> Result> { - if map.flags.contains(MapFlags::MAP_FIXED) { - return Err(Error::new(EINVAL)); - } - self.fmap_old(id, &OldMap { - offset: map.offset, - size: map.size, - flags: map.flags, - }) - } - - #[allow(unused_variables)] - fn funmap_old(&mut self, address: usize) -> Result> { - Ok(Some(0)) - } - - #[allow(unused_variables)] - fn funmap(&mut self, address: usize, length: usize) -> Result> { - Ok(Some(0)) - } - - #[allow(unused_variables)] - fn fpath(&mut self, id: usize, buf: &mut [u8]) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn frename(&mut self, id: usize, path: &str, uid: u32, gid: u32) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fstat(&mut self, id: usize, stat: &mut Stat) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fstatvfs(&mut self, id: usize, stat: &mut StatVfs) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fsync(&mut self, id: usize) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn ftruncate(&mut self, id: usize, len: usize) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn futimens(&mut self, id: usize, times: &[TimeSpec]) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn close(&mut self, id: usize) -> Result> { - Err(Error::new(EBADF)) - } -} diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/scheme_block.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/scheme_block.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/scheme_block.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/scheme_block.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,211 +0,0 @@ -use core::{mem, slice}; - -use crate::data::*; -use crate::error::*; -use crate::flag::*; -use crate::number::*; -use crate::scheme::str_from_raw_parts; - -pub trait SchemeBlock { - fn handle(&self, packet: &Packet) -> Option { - let res = match packet.a { - SYS_OPEN => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } { - self.open(path, packet.d, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - SYS_CHMOD => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } { - self.chmod(path, packet.d as u16, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - SYS_RMDIR => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } { - self.rmdir(path, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - SYS_UNLINK => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } { - self.unlink(path, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - - SYS_DUP => self.dup(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }), - SYS_READ => self.read(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }), - SYS_WRITE => self.write(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }), - SYS_LSEEK => self.seek(packet.b, packet.c as isize, packet.d).map(|o| o.map(|o| o as usize)), - SYS_FCHMOD => self.fchmod(packet.b, packet.c as u16), - SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32), - SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d), - SYS_FEVENT => self.fevent(packet.b, EventFlags::from_bits_truncate(packet.c)).map(|f| f.map(|f| f.bits())), - SYS_FMAP_OLD => if packet.d >= mem::size_of::() { - self.fmap_old(packet.b, unsafe { &*(packet.c as *const OldMap) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_FMAP => if packet.d >= mem::size_of::() { - self.fmap(packet.b, unsafe { &*(packet.c as *const Map) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_FUNMAP_OLD => self.funmap_old(packet.b), - SYS_FUNMAP => self.funmap(packet.b, packet.c), - SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }), - SYS_FRENAME => if let Some(path) = unsafe { str_from_raw_parts(packet.c as *const u8, packet.d) } { - self.frename(packet.b, path, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - SYS_FSTAT => if packet.d >= mem::size_of::() { - self.fstat(packet.b, unsafe { &mut *(packet.c as *mut Stat) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_FSTATVFS => if packet.d >= mem::size_of::() { - self.fstatvfs(packet.b, unsafe { &mut *(packet.c as *mut StatVfs) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_FSYNC => self.fsync(packet.b), - SYS_FTRUNCATE => self.ftruncate(packet.b, packet.c), - SYS_FUTIMENS => if packet.d >= mem::size_of::() { - self.futimens(packet.b, unsafe { slice::from_raw_parts(packet.c as *const TimeSpec, packet.d / mem::size_of::()) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_CLOSE => self.close(packet.b), - _ => Err(Error::new(ENOSYS)) - }; - - res.transpose().map(Error::mux) - } - - /* Scheme operations */ - - #[allow(unused_variables)] - fn open(&self, path: &str, flags: usize, uid: u32, gid: u32) -> Result> { - Err(Error::new(ENOENT)) - } - - #[allow(unused_variables)] - fn chmod(&self, path: &str, mode: u16, uid: u32, gid: u32) -> Result> { - Err(Error::new(ENOENT)) - } - - #[allow(unused_variables)] - fn rmdir(&self, path: &str, uid: u32, gid: u32) -> Result> { - Err(Error::new(ENOENT)) - } - - #[allow(unused_variables)] - fn unlink(&self, path: &str, uid: u32, gid: u32) -> Result> { - Err(Error::new(ENOENT)) - } - - /* Resource operations */ - #[allow(unused_variables)] - fn dup(&self, old_id: usize, buf: &[u8]) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn read(&self, id: usize, buf: &mut [u8]) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn write(&self, id: usize, buf: &[u8]) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn seek(&self, id: usize, pos: isize, whence: usize) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fchmod(&self, id: usize, mode: u16) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fchown(&self, id: usize, uid: u32, gid: u32) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fcntl(&self, id: usize, cmd: usize, arg: usize) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fevent(&self, id: usize, flags: EventFlags) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fmap_old(&self, id: usize, map: &OldMap) -> Result> { - Err(Error::new(EBADF)) - } - #[allow(unused_variables)] - fn fmap(&self, id: usize, map: &Map) -> Result> { - if map.flags.contains(MapFlags::MAP_FIXED) { - return Err(Error::new(EINVAL)); - } - self.fmap_old(id, &OldMap { - offset: map.offset, - size: map.size, - flags: map.flags, - }) - } - - #[allow(unused_variables)] - fn funmap_old(&self, address: usize) -> Result> { - Ok(Some(0)) - } - - #[allow(unused_variables)] - fn funmap(&self, address: usize, length: usize) -> Result> { - Ok(Some(0)) - } - - #[allow(unused_variables)] - fn fpath(&self, id: usize, buf: &mut [u8]) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn frename(&self, id: usize, path: &str, uid: u32, gid: u32) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fstat(&self, id: usize, stat: &mut Stat) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fstatvfs(&self, id: usize, stat: &mut StatVfs) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fsync(&self, id: usize) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn ftruncate(&self, id: usize, len: usize) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn futimens(&self, id: usize, times: &[TimeSpec]) -> Result> { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn close(&self, id: usize) -> Result> { - Err(Error::new(EBADF)) - } -} diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/scheme_mut.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/scheme_mut.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/scheme_mut.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/scheme_mut.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,211 +0,0 @@ -use core::{mem, slice}; - -use crate::data::*; -use crate::error::*; -use crate::flag::*; -use crate::number::*; -use crate::scheme::str_from_raw_parts; - -pub trait SchemeMut { - fn handle(&mut self, packet: &mut Packet) { - let res = match packet.a { - SYS_OPEN => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } { - self.open(path, packet.d, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - SYS_CHMOD => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } { - self.chmod(path, packet.d as u16, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - SYS_RMDIR => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } { - self.rmdir(path, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - SYS_UNLINK => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } { - self.unlink(path, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - - SYS_DUP => self.dup(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }), - SYS_READ => self.read(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }), - SYS_WRITE => self.write(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }), - SYS_LSEEK => self.seek(packet.b, packet.c as isize, packet.d).map(|o| o as usize), - SYS_FCHMOD => self.fchmod(packet.b, packet.c as u16), - SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32), - SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d), - SYS_FEVENT => self.fevent(packet.b, EventFlags::from_bits_truncate(packet.c)).map(|f| f.bits()), - SYS_FMAP_OLD => if packet.d >= mem::size_of::() { - self.fmap_old(packet.b, unsafe { &*(packet.c as *const OldMap) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_FMAP => if packet.d >= mem::size_of::() { - self.fmap(packet.b, unsafe { &*(packet.c as *const Map) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_FUNMAP_OLD => self.funmap_old(packet.b), - SYS_FUNMAP => self.funmap(packet.b, packet.c), - SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }), - SYS_FRENAME => if let Some(path) = unsafe { str_from_raw_parts(packet.c as *const u8, packet.d) } { - self.frename(packet.b, path, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - SYS_FSTAT => if packet.d >= mem::size_of::() { - self.fstat(packet.b, unsafe { &mut *(packet.c as *mut Stat) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_FSTATVFS => if packet.d >= mem::size_of::() { - self.fstatvfs(packet.b, unsafe { &mut *(packet.c as *mut StatVfs) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_FSYNC => self.fsync(packet.b), - SYS_FTRUNCATE => self.ftruncate(packet.b, packet.c), - SYS_FUTIMENS => if packet.d >= mem::size_of::() { - self.futimens(packet.b, unsafe { slice::from_raw_parts(packet.c as *const TimeSpec, packet.d / mem::size_of::()) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_CLOSE => self.close(packet.b), - _ => Err(Error::new(ENOSYS)) - }; - - packet.a = Error::mux(res); - } - - /* Scheme operations */ - - #[allow(unused_variables)] - fn open(&mut self, path: &str, flags: usize, uid: u32, gid: u32) -> Result { - Err(Error::new(ENOENT)) - } - - #[allow(unused_variables)] - fn chmod(&mut self, path: &str, mode: u16, uid: u32, gid: u32) -> Result { - Err(Error::new(ENOENT)) - } - - #[allow(unused_variables)] - fn rmdir(&mut self, path: &str, uid: u32, gid: u32) -> Result { - Err(Error::new(ENOENT)) - } - - #[allow(unused_variables)] - fn unlink(&mut self, path: &str, uid: u32, gid: u32) -> Result { - Err(Error::new(ENOENT)) - } - - /* Resource operations */ - #[allow(unused_variables)] - fn dup(&mut self, old_id: usize, buf: &[u8]) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn read(&mut self, id: usize, buf: &mut [u8]) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn write(&mut self, id: usize, buf: &[u8]) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn seek(&mut self, id: usize, pos: isize, whence: usize) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fchmod(&mut self, id: usize, mode: u16) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fchown(&mut self, id: usize, uid: u32, gid: u32) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fcntl(&mut self, id: usize, cmd: usize, arg: usize) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fevent(&mut self, id: usize, flags: EventFlags) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fmap_old(&mut self, id: usize, map: &OldMap) -> Result { - Err(Error::new(EBADF)) - } - #[allow(unused_variables)] - fn fmap(&mut self, id: usize, map: &Map) -> Result { - if map.flags.contains(MapFlags::MAP_FIXED) { - return Err(Error::new(EINVAL)); - } - self.fmap_old(id, &OldMap { - offset: map.offset, - size: map.size, - flags: map.flags, - }) - } - - #[allow(unused_variables)] - fn funmap_old(&mut self, address: usize) -> Result { - Ok(0) - } - - #[allow(unused_variables)] - fn funmap(&mut self, address: usize, length: usize) -> Result { - Ok(0) - } - - #[allow(unused_variables)] - fn fpath(&mut self, id: usize, buf: &mut [u8]) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn frename(&mut self, id: usize, path: &str, uid: u32, gid: u32) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fstat(&mut self, id: usize, stat: &mut Stat) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fstatvfs(&mut self, id: usize, stat: &mut StatVfs) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fsync(&mut self, id: usize) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn ftruncate(&mut self, id: usize, len: usize) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn futimens(&mut self, id: usize, times: &[TimeSpec]) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn close(&mut self, id: usize) -> Result { - Err(Error::new(EBADF)) - } -} diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/scheme.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/scheme.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/scheme.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/scheme.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,211 +0,0 @@ -use core::{mem, slice}; - -use crate::data::*; -use crate::error::*; -use crate::flag::*; -use crate::number::*; -use crate::scheme::str_from_raw_parts; - -pub trait Scheme { - fn handle(&self, packet: &mut Packet) { - let res = match packet.a { - SYS_OPEN => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } { - self.open(path, packet.d, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - SYS_CHMOD => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } { - self.chmod(path, packet.d as u16, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - SYS_RMDIR => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } { - self.rmdir(path, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - SYS_UNLINK => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } { - self.unlink(path, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - - SYS_DUP => self.dup(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }), - SYS_READ => self.read(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }), - SYS_WRITE => self.write(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }), - SYS_LSEEK => self.seek(packet.b, packet.c as isize, packet.d).map(|o| o as usize), - SYS_FCHMOD => self.fchmod(packet.b, packet.c as u16), - SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32), - SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d), - SYS_FEVENT => self.fevent(packet.b, EventFlags::from_bits_truncate(packet.c)).map(|f| f.bits()), - SYS_FMAP_OLD => if packet.d >= mem::size_of::() { - self.fmap_old(packet.b, unsafe { &*(packet.c as *const OldMap) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_FMAP => if packet.d >= mem::size_of::() { - self.fmap(packet.b, unsafe { &*(packet.c as *const Map) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_FUNMAP_OLD => self.funmap_old(packet.b), - SYS_FUNMAP => self.funmap(packet.b, packet.c), - SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }), - SYS_FRENAME => if let Some(path) = unsafe { str_from_raw_parts(packet.c as *const u8, packet.d) } { - self.frename(packet.b, path, packet.uid, packet.gid) - } else { - Err(Error::new(EINVAL)) - }, - SYS_FSTAT => if packet.d >= mem::size_of::() { - self.fstat(packet.b, unsafe { &mut *(packet.c as *mut Stat) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_FSTATVFS => if packet.d >= mem::size_of::() { - self.fstatvfs(packet.b, unsafe { &mut *(packet.c as *mut StatVfs) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_FSYNC => self.fsync(packet.b), - SYS_FTRUNCATE => self.ftruncate(packet.b, packet.c), - SYS_FUTIMENS => if packet.d >= mem::size_of::() { - self.futimens(packet.b, unsafe { slice::from_raw_parts(packet.c as *const TimeSpec, packet.d / mem::size_of::()) }) - } else { - Err(Error::new(EFAULT)) - }, - SYS_CLOSE => self.close(packet.b), - _ => Err(Error::new(ENOSYS)) - }; - - packet.a = Error::mux(res); - } - - /* Scheme operations */ - - #[allow(unused_variables)] - fn open(&self, path: &str, flags: usize, uid: u32, gid: u32) -> Result { - Err(Error::new(ENOENT)) - } - - #[allow(unused_variables)] - fn chmod(&self, path: &str, mode: u16, uid: u32, gid: u32) -> Result { - Err(Error::new(ENOENT)) - } - - #[allow(unused_variables)] - fn rmdir(&self, path: &str, uid: u32, gid: u32) -> Result { - Err(Error::new(ENOENT)) - } - - #[allow(unused_variables)] - fn unlink(&self, path: &str, uid: u32, gid: u32) -> Result { - Err(Error::new(ENOENT)) - } - - /* Resource operations */ - #[allow(unused_variables)] - fn dup(&self, old_id: usize, buf: &[u8]) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn read(&self, id: usize, buf: &mut [u8]) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn write(&self, id: usize, buf: &[u8]) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn seek(&self, id: usize, pos: isize, whence: usize) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fchmod(&self, id: usize, mode: u16) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fchown(&self, id: usize, uid: u32, gid: u32) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fcntl(&self, id: usize, cmd: usize, arg: usize) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fevent(&self, id: usize, flags: EventFlags) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fmap_old(&self, id: usize, map: &OldMap) -> Result { - Err(Error::new(EBADF)) - } - #[allow(unused_variables)] - fn fmap(&self, id: usize, map: &Map) -> Result { - if map.flags.contains(MapFlags::MAP_FIXED) { - return Err(Error::new(EINVAL)); - } - self.fmap_old(id, &OldMap { - offset: map.offset, - size: map.size, - flags: map.flags, - }) - } - - #[allow(unused_variables)] - fn funmap_old(&self, address: usize) -> Result { - Ok(0) - } - - #[allow(unused_variables)] - fn funmap(&self, address: usize, length: usize) -> Result { - Ok(0) - } - - #[allow(unused_variables)] - fn fpath(&self, id: usize, buf: &mut [u8]) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn frename(&self, id: usize, path: &str, uid: u32, gid: u32) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fstat(&self, id: usize, stat: &mut Stat) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fstatvfs(&self, id: usize, stat: &mut StatVfs) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn fsync(&self, id: usize) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn ftruncate(&self, id: usize, len: usize) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn futimens(&self, id: usize, times: &[TimeSpec]) -> Result { - Err(Error::new(EBADF)) - } - - #[allow(unused_variables)] - fn close(&self, id: usize) -> Result { - Err(Error::new(EBADF)) - } -} diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/seek.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/seek.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/seek.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/scheme/seek.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -use core::cmp; -use core::convert::TryFrom; -use crate::error::*; -use crate::flag::*; - -/// Helper for seek calls -/// In most cases it's easier to use a usize to track the offset and buffer size internally, -/// but the seek interface uses isize. This wrapper ensures EOVERFLOW errors are returned -/// as appropriate if the value in the usize can't fit in the isize. -pub fn calc_seek_offset_usize(cur_offset: usize, pos: isize, whence: usize, buf_len: usize) -> Result { - let cur_offset = isize::try_from(cur_offset).or_else(|_| Err(Error::new(EOVERFLOW)))?; - let buf_len = isize::try_from(buf_len).or_else(|_| Err(Error::new(EOVERFLOW)))?; - calc_seek_offset_isize(cur_offset, pos, whence, buf_len) -} - -/// Helper for seek calls -/// Result is guaranteed to be positive. -/// EOVERFLOW returned if the arguments would cause an overflow. -/// EINVAL returned if the new offset is out of bounds. -pub fn calc_seek_offset_isize(cur_offset: isize, pos: isize, whence: usize, buf_len: isize) -> Result { - let new_offset = match whence { - SEEK_CUR => pos.checked_add(cur_offset), - SEEK_END => pos.checked_add(buf_len), - SEEK_SET => Some(pos), - _ => None, - }; - - match new_offset { - Some(new_offset) if new_offset < 0 => Err(Error::new(EINVAL)), - Some(new_offset) => Ok(cmp::min(new_offset, buf_len)), - None => Err(Error::new(EOVERFLOW)) - } -} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/tests.rs temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/tests.rs --- temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/redox_syscall-0.2.16/src/tests.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,470 +0,0 @@ -#[test] -fn chdir() { - use std::str; - - let mut current_buf = [0; 4096]; - let current_count = dbg!(crate::getcwd(&mut current_buf)).unwrap(); - let current = dbg!(str::from_utf8(¤t_buf[..current_count])).unwrap(); - - let new = "file:"; - assert_eq!(dbg!(crate::chdir(dbg!(new))), Ok(0)); - { - let mut buf = [0; 4096]; - let count = dbg!(crate::getcwd(&mut buf)).unwrap(); - assert_eq!(dbg!(str::from_utf8(&buf[..count])), Ok(new)); - } - - assert_eq!(dbg!(crate::chdir(current)), Ok(0)); - { - let mut buf = [0; 4096]; - let count = dbg!(crate::getcwd(&mut buf)).unwrap(); - assert_eq!(dbg!(str::from_utf8(&buf[..count])), Ok(current)); - } -} - -//TODO: chmod - -#[test] -fn clone() { - let expected_status = 42; - let pid_res = unsafe { crate::clone(crate::CloneFlags::empty()) }; - if pid_res == Ok(0) { - crate::exit(expected_status).unwrap(); - panic!("failed to exit"); - } else { - let pid = dbg!(pid_res).unwrap(); - let mut status = 0; - assert_eq!(dbg!(crate::waitpid(pid, &mut status, crate::WaitFlags::empty())), Ok(pid)); - assert_eq!(dbg!(crate::wifexited(status)), true); - assert_eq!(dbg!(crate::wexitstatus(status)), expected_status); - } -} - -//TODO: close - -#[test] -fn clock_gettime() { - let mut tp = crate::TimeSpec::default(); - assert_eq!(dbg!( - crate::clock_gettime(crate::CLOCK_MONOTONIC, &mut tp) - ), Ok(0)); - assert_ne!(dbg!(tp), crate::TimeSpec::default()); - - tp = crate::TimeSpec::default(); - assert_eq!(dbg!( - crate::clock_gettime(crate::CLOCK_REALTIME, &mut tp) - ), Ok(0)); - assert_ne!(dbg!(tp), crate::TimeSpec::default()); -} - -//TODO: dup - -//TODO: dup2 - -//TODO: exit (handled by clone?) - -//TODO: fchmod - -//TODO: fcntl - -#[test] -fn fexec() { - let name = "file:/bin/ls"; - - let fd = dbg!( - crate::open(name, crate::O_RDONLY | crate::O_CLOEXEC) - ).unwrap(); - - let args = &[ - [name.as_ptr() as usize, name.len()] - ]; - - let vars = &[]; - - let pid_res = unsafe { crate::clone(crate::CloneFlags::empty()) }; - if pid_res == Ok(0) { - crate::fexec(fd, args, vars).unwrap(); - panic!("failed to fexec"); - } else { - assert_eq!(dbg!(crate::close(fd)), Ok(0)); - - let pid = dbg!(pid_res).unwrap(); - let mut status = 0; - assert_eq!(dbg!(crate::waitpid(pid, &mut status, crate::WaitFlags::empty())), Ok(pid)); - assert_eq!(dbg!(crate::wifexited(status)), true); - assert_eq!(dbg!(crate::wexitstatus(status)), 0); - } -} - -#[test] -fn fmap() { - use std::slice; - - let fd = dbg!( - crate::open( - "file:/tmp/syscall-tests-fmap", - crate::O_CREAT | crate::O_RDWR | crate::O_CLOEXEC - ) - ).unwrap(); - - let size = 128; - - let map = unsafe { - slice::from_raw_parts_mut( - dbg!( - crate::fmap(fd, &crate::Map { - address: 0, - offset: 0, - size, - flags: crate::PROT_READ | crate::PROT_WRITE - }) - ).unwrap() as *mut u8, - 128 - ) - }; - - // Maps should be available after closing - assert_eq!(dbg!(crate::close(fd)), Ok(0)); - - for i in 0..128 { - map[i as usize] = i; - assert_eq!(map[i as usize], i); - } - - //TODO: add msync - unsafe { - assert_eq!(dbg!( - crate::funmap(map.as_mut_ptr() as usize, size) - ), Ok(0)); - } -} - -// funmap tested by fmap - -#[test] -fn fpath() { - use std::str; - - let path = "file:/tmp/syscall-tests-fpath"; - let fd = dbg!( - crate::open( - dbg!(path), - crate::O_CREAT | crate::O_RDWR | crate::O_CLOEXEC - ) - ).unwrap(); - - let mut buf = [0; 4096]; - let count = dbg!( - crate::fpath(fd, &mut buf) - ).unwrap(); - - assert_eq!(dbg!(str::from_utf8(&buf[..count])), Ok(path)); - - assert_eq!(dbg!(crate::close(fd)), Ok(0)); -} - -//TODO: frename - -#[test] -fn fstat() { - let path = "file:/tmp/syscall-tests-fstat"; - let fd = dbg!( - crate::open( - dbg!(path), - crate::O_CREAT | crate::O_RDWR | crate::O_CLOEXEC - ) - ).unwrap(); - - let mut stat = crate::Stat::default(); - assert_eq!(dbg!(crate::fstat(fd, &mut stat)), Ok(0)); - assert_ne!(dbg!(stat), crate::Stat::default()); - - assert_eq!(dbg!(crate::close(fd)), Ok(0)); -} - -#[test] -fn fstatvfs() { - let path = "file:/tmp/syscall-tests-fstatvfs"; - let fd = dbg!( - crate::open( - dbg!(path), - crate::O_CREAT | crate::O_RDWR | crate::O_CLOEXEC - ) - ).unwrap(); - - let mut statvfs = crate::StatVfs::default(); - assert_eq!(dbg!(crate::fstatvfs(fd, &mut statvfs)), Ok(0)); - assert_ne!(dbg!(statvfs), crate::StatVfs::default()); - - assert_eq!(dbg!(crate::close(fd)), Ok(0)); -} - -//TODO: fsync - -//TODO: ftruncate - -//TODO: futimens - -//TODO: futex - -// getcwd tested by chdir - -#[test] -fn getegid() { - assert_eq!(crate::getegid(), Ok(0)); -} - -#[test] -fn getens() { - assert_eq!(crate::getens(), Ok(1)); -} - -#[test] -fn geteuid() { - assert_eq!(crate::geteuid(), Ok(0)); -} - -#[test] -fn getgid() { - assert_eq!(crate::getgid(), Ok(0)); -} - -#[test] -fn getns() { - assert_eq!(crate::getns(), Ok(1)); -} - -//TODO: getpid - -//TODO: getpgid - -//TODO: getppid - -#[test] -fn getuid() { - assert_eq!(crate::getuid(), Ok(0)); -} - -//TODO: iopl - -//TODO: kill - -//TODO: link (probably will not work) - -#[test] -fn lseek() { - let path = "file:/tmp/syscall-tests-lseek"; - let fd = dbg!( - crate::open( - dbg!(path), - crate::O_CREAT | crate::O_RDWR | crate::O_CLOEXEC - ) - ).unwrap(); - - { - let mut buf = [0; 256]; - for i in 0..buf.len() { - buf[i] = i as u8; - } - assert_eq!(dbg!(crate::write(fd, &buf)), Ok(buf.len())); - - assert_eq!(dbg!(crate::lseek(fd, 0, crate::SEEK_CUR)), Ok(buf.len())); - assert_eq!(dbg!(crate::lseek(fd, 0, crate::SEEK_SET)), Ok(0)); - assert_eq!(dbg!(crate::lseek(fd, 0, crate::SEEK_END)), Ok(buf.len())); - assert_eq!(dbg!(crate::lseek(fd, 0, crate::SEEK_SET)), Ok(0)); - } - - { - let mut buf = [0; 256]; - assert_eq!(dbg!(crate::read(fd, &mut buf)), Ok(buf.len())); - for i in 0..buf.len() { - assert_eq!(buf[i], i as u8); - } - - assert_eq!(dbg!(crate::lseek(fd, 0, crate::SEEK_CUR)), Ok(buf.len())); - assert_eq!(dbg!(crate::lseek(fd, 0, crate::SEEK_SET)), Ok(0)); - assert_eq!(dbg!(crate::lseek(fd, 0, crate::SEEK_END)), Ok(buf.len())); - assert_eq!(dbg!(crate::lseek(fd, 0, crate::SEEK_SET)), Ok(0)); - } - - assert_eq!(dbg!(crate::close(fd)), Ok(0)); -} - -//TODO: mkns - -//TODO: mprotect - -#[test] -fn nanosleep() { - let req = crate::TimeSpec { - tv_sec: 0, - tv_nsec: 0, - }; - let mut rem = crate::TimeSpec::default(); - assert_eq!(crate::nanosleep(&req, &mut rem), Ok(0)); - assert_eq!(rem, crate::TimeSpec::default()); -} - -//TODO: open - -//TODO: physalloc - -//TODO: physfree - -//TODO: physmap - -//TODO: physunmap - -#[test] -fn pipe2() { - let mut fds = [0, 0]; - assert_eq!(dbg!(crate::pipe2(&mut fds, crate::O_CLOEXEC)), Ok(0)); - assert_ne!(dbg!(fds), [0, 0]); - - { - let mut buf = [0; 256]; - for i in 0..buf.len() { - buf[i] = i as u8; - } - assert_eq!(dbg!(crate::write(fds[1], &buf)), Ok(buf.len())); - } - - { - let mut buf = [0; 256]; - assert_eq!(dbg!(crate::read(fds[0], &mut buf)), Ok(buf.len())); - for i in 0..buf.len() { - assert_eq!(buf[i], i as u8); - } - } - - assert_eq!(dbg!(crate::close(fds[0])), Ok(0)); - assert_eq!(dbg!(crate::close(fds[1])), Ok(0)); -} - -//TODO: read - -#[test] -fn rmdir() { - let path = "file:/tmp/syscall-tests-rmdir"; - let fd = dbg!( - crate::open( - dbg!(path), - crate::O_CREAT | crate::O_DIRECTORY | crate::O_CLOEXEC - ) - ).unwrap(); - - assert_eq!(dbg!(crate::close(fd)), Ok(0)); - - assert_eq!(dbg!(crate::rmdir(path)), Ok(0)); -} - -//TODO: setpgid - -//TODO: setregid - -//TODO: setrens - -//TODO: setreuid - -//TODO: sigaction - -//TODO: sigprocmask - -//TODO: sigreturn - -#[test] -fn umask() { - let old = dbg!(crate::umask(0o244)).unwrap(); - assert_eq!(dbg!(crate::umask(old)), Ok(0o244)); -} - -#[test] -fn unlink() { - let path = "file:/tmp/syscall-tests-unlink"; - let fd = dbg!( - crate::open( - dbg!(path), - crate::O_CREAT | crate::O_RDWR | crate::O_CLOEXEC - ) - ).unwrap(); - - assert_eq!(dbg!(crate::close(fd)), Ok(0)); - - assert_eq!(dbg!(crate::unlink(path)), Ok(0)); -} - -//TODO: virttophys - -// waitpid tested by clone - -//TODO: write - -#[test] -fn sched_yield() { - assert_eq!(dbg!(crate::sched_yield()), Ok(0)); -} - -#[test] -fn sigaction() { - use std::{ - mem, - sync::atomic::{AtomicBool, Ordering} - }; - - static SA_HANDLER_WAS_RAN: AtomicBool = AtomicBool::new(false); - static SA_HANDLER_2_WAS_IGNORED: AtomicBool = AtomicBool::new(false); - - let child = unsafe { crate::clone(crate::CLONE_VM).unwrap() }; - - if child == 0 { - let pid = crate::getpid().unwrap(); - - extern "C" fn hello_im_a_signal_handler(signal: usize) { - assert_eq!(signal, crate::SIGUSR1); - SA_HANDLER_WAS_RAN.store(true, Ordering::SeqCst); - } - - let my_signal_handler = crate::SigAction { - sa_handler: Some(hello_im_a_signal_handler), - ..Default::default() - }; - crate::sigaction(crate::SIGUSR1, Some(&my_signal_handler), None).unwrap(); - - crate::kill(pid, crate::SIGUSR1).unwrap(); // calls handler - - let mut old_signal_handler = crate::SigAction::default(); - crate::sigaction( - crate::SIGUSR1, - Some(&crate::SigAction { - sa_handler: unsafe { mem::transmute::>(crate::SIG_IGN) }, - ..Default::default() - }), - Some(&mut old_signal_handler) - ).unwrap(); - assert_eq!(my_signal_handler, old_signal_handler); - - crate::kill(pid, crate::SIGUSR1).unwrap(); // does nothing - - SA_HANDLER_2_WAS_IGNORED.store(true, Ordering::SeqCst); - - crate::sigaction( - crate::SIGUSR1, - Some(&crate::SigAction { - sa_handler: unsafe { mem::transmute::>(crate::SIG_DFL) }, - ..Default::default() - }), - Some(&mut old_signal_handler) - ).unwrap(); - - crate::kill(pid, crate::SIGUSR1).unwrap(); // actually exits - } else { - let mut status = 0; - dbg!(crate::waitpid(child, &mut status, crate::WaitFlags::empty())).unwrap(); - - assert!(crate::wifsignaled(status)); - assert_eq!(crate::wtermsig(status), crate::SIGUSR1); - - assert!(SA_HANDLER_WAS_RAN.load(Ordering::SeqCst)); - assert!(SA_HANDLER_2_WAS_IGNORED.load(Ordering::SeqCst)); - } -} diff -Nru temporalio-1.3.0/vendor/regex/.cargo-checksum.json temporalio-1.3.0/vendor/regex/.cargo-checksum.json --- temporalio-1.3.0/vendor/regex/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"68eb27ff7b8e42efcb6e47bbcf998c7343c54f97c5a129a1ee83cace199e3765","Cargo.toml":"de4b558af6deb2b6626c8d8287be458eb6d4c8aa42068b484ddf36133de4f295","Cross.toml":"4a11d6c63ecc919016b59fa0fe23674eb05682fb91ffbe677a4a7077e9e684ff","HACKING.md":"17818f7a17723608f6bdbe6388ad0a913d4f96f76a16649aaf4e274b1fa0ea97","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"932f36c0fc3ac869fcca51018e6c87c75278665d42e51d22834fa52ceec2c95c","UNICODE.md":"845fca1982e82e190109a784952579fce54faea120b702b7efd61164a12f601f","record/README.md":"02e6f85f8a43f18540e4a52a75d1001494df7aceac3873e9a13e3ceba190206d","record/compile-test/2023-04-19_1.7.3.csv":"460059ba2f10456175ff92bd75d4a365b14a1843e2b46e7b285d58da59e6d3ca","record/compile-test/2023-04-20_master.csv":"6b94df278e4ed82a3fd0d4bfe92a4614714e00435e983c7649ee9f54925f906e","record/compile-test/README.md":"ba2b606993edd8d705ad1677ec954862614e52b028407e1908bb5dfb07767f2d","record/old-bench-log/01-lazy-dfa/dynamic":"dec9f74b8835403c71edc0c2d93bbdde0f5a0e37d46585e416c80496d5b14497","record/old-bench-log/01-lazy-dfa/dynamic-no-lazy-dfa":"c0ce02bef9ada8cd55672f0a9c3c5fc64f71e08bfb2b45978082a140b4fc111f","record/old-bench-log/01-lazy-dfa/native":"9de61ff787e36f5c6f1eaec68b8bb0583e57b0aad23712afe8c0048988c761b8","record/old-bench-log/01-lazy-dfa/nfa":"38c0be44a00b2caef17101bc425410fec2958e4df6da25d2ba5b6664f8bccad9","record/old-bench-log/01-lazy-dfa/pcre":"3b38026c24e4ca487ff62de83cc093ccb46b918f4875663249ff84ce27636942","record/old-bench-log/02-set/dynamic":"8ef5c00f0ac42e5f008e4b6337669527b48fba38df94c50d3e683c6aac66a48c","record/old-bench-log/03-bytes/onig":"f32347a6e0f25f46ad1b0aa736c29eca47c25f90d32c8823ea0d14204859a35b","record/old-bench-log/03-bytes/pcre":"b90982575c0ad55617b2ce50c2e9853d090502bf07e1eb19edf9009d3c9f2987","record/old-bench-log/03-bytes/rust":"b1e70e5ae48a9c726d8cd8a98019c0efe5a1095563c61cf0ac75e24de32461b4","record/old-bench-log/03-bytes/rust-bytes":"fbf0e6cb8102c7ca8e59bd459bb0ae7f1feaf8103def70b8d4793c59e68e8736","record/old-bench-log/04/onig":"4e34e2ede0a806b8ee540e63e4babee38049e5a8ab3be99c4f5d8b02bbc653fd","record/old-bench-log/04/pcre1-jit":"736c4941e991ef94f76379cf2187d0ea2a41b052cf80c94d0dd0c9ea758a6491","record/old-bench-log/04/pcre2-jit":"00e7bbf7749904fca8dff9b441d15bbe670f37b427e385ddf740f7a49de3b1fb","record/old-bench-log/04/re2":"b8b8595f6b68da127b56dc7c61a9fd15548251fda1be9d2c50c2d48382e887b6","record/old-bench-log/04/rust":"c5a6b918e815294f0c4e3d37267c444d49692ff131c5a08f7462c24d0721fcec","record/old-bench-log/04/tcl":"c4d8d12b8cf48ff2017549e95e49dc95a90ea15483834cd70d2d7d7c237bbd32","record/old-bench-log/05/onig":"70a4da9aafaefa6493cd09d3a529dd5d2d9eacf390bb093681bc7be28a1f926c","record/old-bench-log/05/onig-vs-rust":"b942a79735b7330241437776c15b18f4db3eff01d3e6c35494f4a8732e74a23a","record/old-bench-log/05/pcre1":"b29b7efbe79b55ce0aaf24bbbecc376a865fa219a68d96124e3d95951cdb47f4","record/old-bench-log/05/pcre1-vs-rust":"a458e5c62f0500898e08757753c10981551649656432ec096f0c82b414ef8d82","record/old-bench-log/05/pcre2":"faa93937c3490cfdff88c32dc04e57f2ae881923b87781e5fe876535fd690770","record/old-bench-log/05/pcre2-vs-rust":"bf9faa6a679dd98e9452e52c0941d2eb84dcf0b6632c15507f8334ed7bc309da","record/old-bench-log/05/re2":"692866b28e1bc368c7a59f519b8dfe1da50a135946ce153298a0ab228a5ee59d","record/old-bench-log/05/re2-vs-rust":"55e4cb14c397574751aebe38068c429a4580a5e309857b2715047944903dca58","record/old-bench-log/05/rust":"aac6acda9f63e51613712d0a33bb7fb46dfc7adc425f76b9b71195be8c8a42e7","record/old-bench-log/05/tcl":"f03e39eccd3252162cc6099bb0426014df669d299ba0ef79e89b8401886a5172","record/old-bench-log/05/tcl-vs-rust":"ae6ac4668573bf5488cc235c5da16ad9358d07b7644207d9bcea88ba6f5514a6","record/old-bench-log/06/dphobos-dmd":"473328306be335a0320c690d9c2dbefdf7f2f5a80e4ca69443c7ed2e81bb093f","record/old-bench-log/06/dphobos-dmd-ct":"60341c736382a6db21d9889369ea4617c521acbf30d4b3bf38bcd17f4f85b9b1","record/old-bench-log/06/dphobos-ldc":"ae60c2bed84afb89ae43615f26de4cc5d0042e179089b639507378518eed3252","record/old-bench-log/06/dphobos-ldc-ct":"a157ef450793b73de3a816fab1d93a6d11e90a817082bae5e3da02a66fcc833f","record/old-bench-log/06/pcre1":"ad10fd7db732e8670dd3d4eedb05f48f547b4782495aaadff8ec25a6ea1992a0","record/old-bench-log/06/pcre2":"f789a73bd41a0bc401bdebe7f10a03a8aa587de48643d88507d16181a8fa39d3","record/old-bench-log/06/re2":"203c273a110d71f5edf722630202a6142c39d6b7a9951686adf8b9c20c5db278","record/old-bench-log/06/rust":"6a642a16cd279c99ef5a580a25fb3a63ac6239cd73df9261c02912fa08145753","record/old-bench-log/07/boost":"255bc652c4d9e9d20aa9b22d8d86e952e7ec6c8b9fcde0c3d6e38c967e04d40e","record/old-bench-log/07/dphobos-dmd":"fb3ac60037050858611145ca3e71412164688dcdec52c022787d33304e022260","record/old-bench-log/07/dphobos-dmd-ct":"40a5088441f8ffe3dae0abaf31c105cedfbe3b56c06772f075947d504976d2ed","record/old-bench-log/07/oniguruma":"ae0cd60adb15845eb9ef706111d4ee0e6ad5a58f0276b787d68bd7d637f8f7c6","record/old-bench-log/07/pcre1":"a812d065ec248249f9bb3d6d970f15c18d342f6b443265ad4b07fa91b73575cc","record/old-bench-log/07/pcre2":"88230663eccd0b382cf5be81ce1ae6cfa3fa835a65a31c1eba4369d2e8de5d27","record/old-bench-log/07/re2":"e330ef21ce44351afc3c43821d862e9c625877606569f3af0ddbadcd7b21c602","record/old-bench-log/07/rust":"d8c6bd5c46f5df9d0ac222f7be7793527a8137d273c8826b3715c67e16209aac","record/old-bench-log/07/rust-bytes":"e21d02fa2ef1e5ed7204920b33ed24c9fb620e068ed47ed6879b72e76369a27e","record/old-bench-log/07/stdcpp":"9df02d89dc8232c700b8cf8bc6f1ece3ca7af84ab52e67a660039d6c9168aed4","record/old-bench-log/07/stdcpp-libcxx":"f90849a0b5dc11dc0280ad97886e92e1d91c080403ad7a4ecd638a26fe5e8c5e","record/old-bench-log/07/tcl":"7f6e347bb507f9c00ff664d3e627c0a9cf842b416eeb2af9f3b6cccd041c58e4","record/old-bench-log/08-new-memmem/rust-after-01":"646c7d50aea9c560a35eb60116f301f4fb8d4b03fd5814d8b24adffd070332e3","record/old-bench-log/08-new-memmem/rust-after-02":"14e7fb6c6faa85a8f90617528cef79ae382aeba07c2e5c253c68445902b060ba","record/old-bench-log/08-new-memmem/rust-before-01":"7e3b58de0f502c1a1bf6d27e0e85c654b1189716f7374cec4ed4dd365b13101f","record/old-bench-log/08-new-memmem/rust-before-02":"ab6d09529eeeca7ff0da945d59701dbbcfdec5e05581bb9bf154779d12a35e53","record/old-bench-log/09-new-baseline/pcre2":"28df8e2762f267d1ea628906a6e4bbc21f99e6a445bd322c86d0ca483b21b5b3","record/old-bench-log/09-new-baseline/re2":"421437193cc3f159c178479f98bde8dbe27883ec7757b1ddd8d745862f5899ff","record/old-bench-log/09-new-baseline/rust":"6f932a769171b6cdb717c9d01e44a70762ef660c4045b9d2bb3797a9bdf65405","record/old-bench-log/09-new-baseline/rust-bytes":"9c5acd5c1eeac9acfe76d03588041f9b6d65b4351085c3510888ceeb83e8a7b5","record/old-bench-log/10-last-frontier/rust-after-literal.log":"02baef9b3b49acbbff43e81f48ea5a9287e30ff4fc298a3f3b48991d8374aabf","record/old-bench-log/10-last-frontier/rust-before-literal.log":"e5a3bcc2b9e93cf3cb27bc9e6305b3bc03215751bbeef2a70fb25577d6b42874","record/old-bench-log/10-last-frontier/rust-bytes-after-literal.log":"29834c7a5396ac61acedd07c0b7ca60716865ec3e70f35fbaa7826a2309a79d9","record/old-bench-log/10-last-frontier/rust-bytes-before-literal.log":"4e7468a3e8629814bd4af91e2a8eb42d0899d352b5dff3058b801aa637046be2","record/old-bench-log/11-regex-1.7.3/rust":"d7cc18a62070ea7a999e1ba2458f26cf94595f1af276c2b3e96cee638eccf3f0","record/old-bench-log/11-regex-1.7.3/rust-bytes":"64c7458020139bd7a03d1cb0927b741e6972377b686626563acb86fbc66414ca","record/old-bench-log/12-regex-1.8.1/rust":"a538c42e77e20956e81fb5a4e2e1e7d3fdf60da019d7e3df52d93f57367a3fbd","record/old-bench-log/12-regex-1.8.1/rust-bytes":"fbb00fdf8f039ce312f5346a67dddaa5e129280a93a90d7aaf6b5a9a71d2f212","record/old-bench-log/13-regex-1.9.0/rust":"0ef62700ba3fc24887af74b7942490c90b4cd2814b8fda200f7376e43391bfce","record/old-bench-log/13-regex-1.9.0/rust-bytes":"676d501d4667f0a945c88ebb56839176dd3a5a6b45af7708b1e870bf26d12603","record/old-bench-log/README.md":"d359f536fb4b8c1af9af3465a027c3522f62c3871aad44645a955b650d7deec0","record/old-bench-log/old/01-before":"c2ea2750fca8ac1742003fe2106e9422d49e92967d3fe0267f24b7ec830b07e3","record/old-bench-log/old/02-new-syntax-crate":"27fd8b3d35cf08d434035ff7d9f2e9e3c94a167e45ba655567c73ae96830f1d8","record/old-bench-log/old/03-new-syntax-crate":"d942a2b95c3a2d8f85f3f17934f258bdc84baa33e91986e8a6810ca8d6e9cc50","record/old-bench-log/old/04-fixed-benchmark":"0da29ef39ac07ece411c151ab479a76944946aba992547b15d90ec2d5484e85c","record/old-bench-log/old/05-thread-caching":"e364d87131e43187d6757426839789d1b6b47b3f3af21280daa9193d5ab19f64","record/old-bench-log/old/06-major-dynamic":"3bc2b8fd2714ae9f19b2e4f4219654982522daf01b5d3055b4aec0458afeaf13","record/old-bench-log/old/06-major-macro":"d5617ed23e71d5298ed4d629eee257e401c352fd1c91a2048dfeb1677527d4e7","record/old-bench-log/old/07-prefix-improvements":"9277d1392c85a38db215a9b69e3b0cd4a9901f8f1c72c706ca262e5f099b8819","record/old-bench-log/old/08-case-fixes":"f97cd3675cf5c967e4ca8841f2368e9eadf538b542bfe3035d31492afc5934bf","record/old-bench-log/old/09-before-compiler-rewrite":"b928686819dbd9aeaa6639b01b63a48428653f2f676a4e15d61cddec421e0389","record/old-bench-log/old/10-compiler-rewrite":"697b295ee377a5cb287d403593bfb8c078270b4e19e8d61d0b95b06ee7c903ab","record/old-bench-log/old/11-compiler-rewrite":"3f0ba494a0d82e7419285a9686474dc7763d4da0dd3faaa3bec3f624bbede481","record/old-bench-log/old/12-executor":"962e182f9a1cfddb8c0cd2d8c4681febef1430082c9a38e5373c9117b853e65e","record/old-bench-log/old/12-executor-bytes":"e01a1e878b44c80724e9bf09bb11210eeb8f01518ac7f0e3e7f2ee241281e500","record/old-bench-log/old/13-cache-byte-range-suffixes":"1d67d58a39f9177a79c26f3c6c2a1caaf51f085ce137711ab9ba74071c14680c","rustfmt.toml":"1ca600239a27401c4a43f363cf3f38183a212affc1f31bff3ae93234bbaec228","src/builders.rs":"a228db169105fa988119033a34f0b64f1385f1a7da20ef38cdbab7718af8c665","src/bytes.rs":"cd5f874bdce6885ae721b98452cd1c58bc1e3f5932e5e18784f4383167beec46","src/error.rs":"4ac8361e900627a87a2ac78e5d475be17c455fe6850d1515bf5b874837c4ae25","src/find_byte.rs":"e17cd3b765467685946707840b92ea4e37d3c11081fbf316174a15858cd4bd99","src/lib.rs":"c183c8abd1942440aeb900c516e3e7c84913a5da8bea750d3f58c7792358d30b","src/pattern.rs":"5f37755a7c16902d861377645f57a20314961f86298d4b35ae6e1058ca4e9801","src/regex/bytes.rs":"d4ce7ff1d62c8247b8aab14a5ae22f5dfd352857e00345b85ef4f5081e950941","src/regex/mod.rs":"c220b6dd7a5e1945f8e743d1dcd796c5f782c91b0c34eb9915c588174a517fe8","src/regex/string.rs":"649eb49c1ea26318ab452da54169a4f226431640f29273b11f60550dfa49acc6","src/regexset/bytes.rs":"6290dd81f47fb6cdbaa358be2340398a2a640320373d334e4c977bf30b5a9220","src/regexset/mod.rs":"c220b6dd7a5e1945f8e743d1dcd796c5f782c91b0c34eb9915c588174a517fe8","src/regexset/string.rs":"977bc167c48c7c99187599c5071ca197e61a56359d32a26b9dbc1b58a5ef1c4d","test":"c0122c20a2c9b7ba6e9a8aaeb2b7d9910315ef31063539949f28d9501ef3193c","testdata/README.md":"c0514501526560d7f6171eb6d982ad61b4527760cb38a4bfbe8e28036ff37b95","testdata/anchored.toml":"96e0ae69c0814c135c57442251585a378bc5fcb889f06aa25c9b01cb8b8b5138","testdata/bytes.toml":"1d84179165fd25f3b94bd2bfbeb43fc8a162041f7bf98b717e0f85cef7fb652b","testdata/crazy.toml":"a146e2d2e23f1a57168979d9b1fc193c2ba38dca66294b61140d6d2a2958ec86","testdata/crlf.toml":"d19cf22756434d145dd20946c00af01c102a556a252070405c3c8294129d9ece","testdata/earliest.toml":"d561e643623ee1889b5b049fdcf3c7cb71b0c746d7eb822ddbd09d0acda2620b","testdata/empty.toml":"738dbe92fbd8971385a1cf3affb0e956e5b692c858b9b48439d718f10801c08e","testdata/expensive.toml":"5ce2f60209c99cdd2cdcb9d3069d1d5ca13d5e08a85e913efe57267b2f5f0e9d","testdata/flags.toml":"9a7e001808195c84f2a7d3e18bc0a82c7386e60f03a616e99af00c3f7f2c3fd4","testdata/fowler/basic.toml":"a82c7e233451cd7cfe0c3d817f3a1ab44478bb81ae62432efdd515fa8370275e","testdata/fowler/dat/README":"e53d6c37b5931cb26dc9ae4c40358eea63f7a469c4db6ca816c072a8ced6a61a","testdata/fowler/dat/basic.dat":"b1126dda59075c08f574987090273c9977790115f1e1941d0708c0b82b256905","testdata/fowler/dat/nullsubexpr.dat":"e5cd4145dffa8bc66f2d39079950b2bb7bae21a521514b83b557b92f4a871a9e","testdata/fowler/dat/repetition.dat":"2b8b2b191229a804fba49e6b888d8194bf488f7744057b550da9d95a2aa6617a","testdata/fowler/nullsubexpr.toml":"cd812e7e8fa0469253b34f0db93b5883c9d8b9740fc4f7825a38e7df880a4eed","testdata/fowler/repetition.toml":"8c09164f064b3db81309c53483863bdcec493781644de162416e9f485e772615","testdata/iter.toml":"6875460302974a5b3073a7304a865c45aba9653c54afea2c4d26e1ea248a81f7","testdata/leftmost-all.toml":"903bfbeff888b7664296f4d5aa367ce53d1dafe249ab0a3359223ae94d596396","testdata/line-terminator.toml":"3255c305687eaa8b39939855ce8e0379bdc0e70d7b0cd818856f65fb44a48c0f","testdata/misc.toml":"32c9591655c6fb118dfefcb4de49a04820a63cb960533dfc2538cdaabf4f4047","testdata/multiline.toml":"eb07cf5427e6ddbcf61f4cc64c2d74ff41b5ef75ef857959651b20196f3cd157","testdata/no-unicode.toml":"d209da04506900fd5f69e48170cddaad0702355ac6176c3a75ab3ff96974457c","testdata/overlapping.toml":"5d96497a7233566d40b05ba22047e483fa8662e45515a9be86da45cf6c28703a","testdata/regex-lite.toml":"fecca7cc8c9cea2e1f84f846a89fd9b3ca7011c83698211a2eeda8924deb900c","testdata/regression.toml":"54f576732aed3d15993a22056ddadc3c492fa21b01f21496ad4f8bbbef128f8c","testdata/set.toml":"dfd265dc1aee80026e881616840df0236ae9abf12467d7ec0e141a52c236128c","testdata/substring.toml":"48122d9f3477ed81f95e3ad42c06e9bb25f849b66994601a75ceae0693b81866","testdata/unicode.toml":"7e4b013039b0cdd85fa73f32d15d096182fe901643d4e40c0910087a736cd46d","testdata/utf8.toml":"2eabce0582bcacb2073e08bbe7ca413f096d14d06e917b107949691e24f84b20","testdata/word-boundary.toml":"51bc1c498ab825420340a2dd3e6623de4054937ba6d5020ff8cd14b1c1e45271","tests/fuzz/mod.rs":"7b01a803e1c0b5a45c062d493723553f263c57e269eade1475eb789694635d5c","tests/fuzz/testdata/crash-7eb3351f0965e5d6c1cb98aa8585949ef96531ff":"be4f42497ac9358eb020bf17cd8fdb9743691824e01d744504613ea2bfb2f663","tests/fuzz/testdata/crash-8760b19b25d74e3603d4c643e9c7404fdd3631f9":"19df9a1e1b5a3c0f31cc038b9f2991b161d8577b4a0c8b2fc391cdfecdb6dd85","tests/fuzz/testdata/crash-cd33b13df59ea9d74503986f9d32a270dd43cc04":"2fde1668e9e3e60943c28d97c01c90dd3d3882f48475f060ccaf961c228069e8","tests/fuzz/testdata/minimized-from-8760b19b25d74e3603d4c643e9c7404fdd3631f9":"c9e00f7a31453708560900aa51e358dd5551df494439860594be97bb1fb933ba","tests/fuzz/testdata/slow-unit-3ab758ea520027fefd3f00e1384d9aeef155739e":"4433011f7af46e855e843635cf24a49713bd5705f67176ed928f04d24eda1857","tests/fuzz/testdata/slow-unit-5345fccadf3812c53c3ccc7af5aa2741b7b2106c":"95782a847fc64e9cccdf76e9540b0d16ce80db5d05157a88b958b763f9b8479b","tests/fuzz/testdata/slow-unit-6bd643eec330166e4ada91da2d3f284268481085":"8ddff12288f6f20cc9d65db76bd8187834f64f844aad48a340d082555ad5cb56","tests/fuzz/testdata/slow-unit-93c73a43581f205f9aaffd9c17e52b34b17becd0":"eea6919a75fde163634b890e2253a0918cf0ba092357fa617f368bbfa131ba30","tests/fuzz/testdata/slow-unit-9ca9cc9929fee1fcbb847a78384effb8b98ea18a":"a806f73b900046977267acceb83b105bac7ee21ede2edc2927afe1e1f0149f00","tests/fuzz/testdata/slow-unit-b8a052f4254802edbe5f569b6ce6e9b6c927e9d6":"9540cf58241cde3bc0db8364e0ccff67ff1ff9721c85b0d2ca27354c0cbf2650","tests/lib.rs":"33a37711d8677994f87b19be40b24a323d41de18fb161c850b4ccea9fe4c4156","tests/misc.rs":"5ac5858325451e1d70f308ca0bcead5a354d095a7473800c11065231c319c456","tests/regression.rs":"3490aac99fdbf3f0949ba1f338d5184a84b505ebd96d0b6d6145c610587aa60b","tests/regression_fuzz.rs":"57e0bcba0fdfa7797865e35ae547cd7fe1c6132b80a7bfdfb06eb053a568b00d","tests/replace.rs":"26e1ea8533474f947a8440feb0fb671036f1673594544269151ce2f57f2eed6a","tests/searcher.rs":"04152e5c86431deec0c196d2564a11bc4ec36f14c77e8c16a2f9d1cbc9fc574e","tests/suite_bytes.rs":"7697b04e5b181aa78b3654bd2dbe1c792d9626197573ed8c649f1da8b481817d","tests/suite_bytes_set.rs":"d970168fab57a9edc60ff26a2bb7d0cc714d4298e4ee9eadba9da44a6569f2bb","tests/suite_string.rs":"1be0cf8922171f8323f99e8ecedbbf1846d339620d0dc2fd490901cbbbd2622e","tests/suite_string_set.rs":"22743107206d913521f9adb728482aed3a9625ff7b15a83df057bbf1f7050e03"},"package":"89089e897c013b3deb627116ae56a6955a72b8bed395c9526af31c9fe528b484"} \ No newline at end of file +{"files":{"CHANGELOG.md":"d5b7c269894164ecff4920d7c48eb8d1ce84ffd6e7f804caa4043d66e206a86a","Cargo.toml":"7aad5ec2fbf88d35f58a39dc5dc566e6351b96cddaad8ac1c7c627abd0b0d320","Cross.toml":"4a11d6c63ecc919016b59fa0fe23674eb05682fb91ffbe677a4a7077e9e684ff","HACKING.md":"17818f7a17723608f6bdbe6388ad0a913d4f96f76a16649aaf4e274b1fa0ea97","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"932f36c0fc3ac869fcca51018e6c87c75278665d42e51d22834fa52ceec2c95c","UNICODE.md":"845fca1982e82e190109a784952579fce54faea120b702b7efd61164a12f601f","record/README.md":"02e6f85f8a43f18540e4a52a75d1001494df7aceac3873e9a13e3ceba190206d","record/compile-test/2023-04-19_1.7.3.csv":"460059ba2f10456175ff92bd75d4a365b14a1843e2b46e7b285d58da59e6d3ca","record/compile-test/2023-04-20_master.csv":"6b94df278e4ed82a3fd0d4bfe92a4614714e00435e983c7649ee9f54925f906e","record/compile-test/2023-07-05.csv":"cf00b4981b8c12980113810dba40e2063a8400354ad4dab16f7c212ff0b5db74","record/compile-test/README.md":"ba2b606993edd8d705ad1677ec954862614e52b028407e1908bb5dfb07767f2d","record/old-bench-log/01-lazy-dfa/dynamic":"dec9f74b8835403c71edc0c2d93bbdde0f5a0e37d46585e416c80496d5b14497","record/old-bench-log/01-lazy-dfa/dynamic-no-lazy-dfa":"c0ce02bef9ada8cd55672f0a9c3c5fc64f71e08bfb2b45978082a140b4fc111f","record/old-bench-log/01-lazy-dfa/native":"9de61ff787e36f5c6f1eaec68b8bb0583e57b0aad23712afe8c0048988c761b8","record/old-bench-log/01-lazy-dfa/nfa":"38c0be44a00b2caef17101bc425410fec2958e4df6da25d2ba5b6664f8bccad9","record/old-bench-log/01-lazy-dfa/pcre":"3b38026c24e4ca487ff62de83cc093ccb46b918f4875663249ff84ce27636942","record/old-bench-log/02-set/dynamic":"8ef5c00f0ac42e5f008e4b6337669527b48fba38df94c50d3e683c6aac66a48c","record/old-bench-log/03-bytes/onig":"f32347a6e0f25f46ad1b0aa736c29eca47c25f90d32c8823ea0d14204859a35b","record/old-bench-log/03-bytes/pcre":"b90982575c0ad55617b2ce50c2e9853d090502bf07e1eb19edf9009d3c9f2987","record/old-bench-log/03-bytes/rust":"b1e70e5ae48a9c726d8cd8a98019c0efe5a1095563c61cf0ac75e24de32461b4","record/old-bench-log/03-bytes/rust-bytes":"fbf0e6cb8102c7ca8e59bd459bb0ae7f1feaf8103def70b8d4793c59e68e8736","record/old-bench-log/04/onig":"4e34e2ede0a806b8ee540e63e4babee38049e5a8ab3be99c4f5d8b02bbc653fd","record/old-bench-log/04/pcre1-jit":"736c4941e991ef94f76379cf2187d0ea2a41b052cf80c94d0dd0c9ea758a6491","record/old-bench-log/04/pcre2-jit":"00e7bbf7749904fca8dff9b441d15bbe670f37b427e385ddf740f7a49de3b1fb","record/old-bench-log/04/re2":"b8b8595f6b68da127b56dc7c61a9fd15548251fda1be9d2c50c2d48382e887b6","record/old-bench-log/04/rust":"c5a6b918e815294f0c4e3d37267c444d49692ff131c5a08f7462c24d0721fcec","record/old-bench-log/04/tcl":"c4d8d12b8cf48ff2017549e95e49dc95a90ea15483834cd70d2d7d7c237bbd32","record/old-bench-log/05/onig":"70a4da9aafaefa6493cd09d3a529dd5d2d9eacf390bb093681bc7be28a1f926c","record/old-bench-log/05/onig-vs-rust":"b942a79735b7330241437776c15b18f4db3eff01d3e6c35494f4a8732e74a23a","record/old-bench-log/05/pcre1":"b29b7efbe79b55ce0aaf24bbbecc376a865fa219a68d96124e3d95951cdb47f4","record/old-bench-log/05/pcre1-vs-rust":"a458e5c62f0500898e08757753c10981551649656432ec096f0c82b414ef8d82","record/old-bench-log/05/pcre2":"faa93937c3490cfdff88c32dc04e57f2ae881923b87781e5fe876535fd690770","record/old-bench-log/05/pcre2-vs-rust":"bf9faa6a679dd98e9452e52c0941d2eb84dcf0b6632c15507f8334ed7bc309da","record/old-bench-log/05/re2":"692866b28e1bc368c7a59f519b8dfe1da50a135946ce153298a0ab228a5ee59d","record/old-bench-log/05/re2-vs-rust":"55e4cb14c397574751aebe38068c429a4580a5e309857b2715047944903dca58","record/old-bench-log/05/rust":"aac6acda9f63e51613712d0a33bb7fb46dfc7adc425f76b9b71195be8c8a42e7","record/old-bench-log/05/tcl":"f03e39eccd3252162cc6099bb0426014df669d299ba0ef79e89b8401886a5172","record/old-bench-log/05/tcl-vs-rust":"ae6ac4668573bf5488cc235c5da16ad9358d07b7644207d9bcea88ba6f5514a6","record/old-bench-log/06/dphobos-dmd":"473328306be335a0320c690d9c2dbefdf7f2f5a80e4ca69443c7ed2e81bb093f","record/old-bench-log/06/dphobos-dmd-ct":"60341c736382a6db21d9889369ea4617c521acbf30d4b3bf38bcd17f4f85b9b1","record/old-bench-log/06/dphobos-ldc":"ae60c2bed84afb89ae43615f26de4cc5d0042e179089b639507378518eed3252","record/old-bench-log/06/dphobos-ldc-ct":"a157ef450793b73de3a816fab1d93a6d11e90a817082bae5e3da02a66fcc833f","record/old-bench-log/06/pcre1":"ad10fd7db732e8670dd3d4eedb05f48f547b4782495aaadff8ec25a6ea1992a0","record/old-bench-log/06/pcre2":"f789a73bd41a0bc401bdebe7f10a03a8aa587de48643d88507d16181a8fa39d3","record/old-bench-log/06/re2":"203c273a110d71f5edf722630202a6142c39d6b7a9951686adf8b9c20c5db278","record/old-bench-log/06/rust":"6a642a16cd279c99ef5a580a25fb3a63ac6239cd73df9261c02912fa08145753","record/old-bench-log/07/boost":"255bc652c4d9e9d20aa9b22d8d86e952e7ec6c8b9fcde0c3d6e38c967e04d40e","record/old-bench-log/07/dphobos-dmd":"fb3ac60037050858611145ca3e71412164688dcdec52c022787d33304e022260","record/old-bench-log/07/dphobos-dmd-ct":"40a5088441f8ffe3dae0abaf31c105cedfbe3b56c06772f075947d504976d2ed","record/old-bench-log/07/oniguruma":"ae0cd60adb15845eb9ef706111d4ee0e6ad5a58f0276b787d68bd7d637f8f7c6","record/old-bench-log/07/pcre1":"a812d065ec248249f9bb3d6d970f15c18d342f6b443265ad4b07fa91b73575cc","record/old-bench-log/07/pcre2":"88230663eccd0b382cf5be81ce1ae6cfa3fa835a65a31c1eba4369d2e8de5d27","record/old-bench-log/07/re2":"e330ef21ce44351afc3c43821d862e9c625877606569f3af0ddbadcd7b21c602","record/old-bench-log/07/rust":"d8c6bd5c46f5df9d0ac222f7be7793527a8137d273c8826b3715c67e16209aac","record/old-bench-log/07/rust-bytes":"e21d02fa2ef1e5ed7204920b33ed24c9fb620e068ed47ed6879b72e76369a27e","record/old-bench-log/07/stdcpp":"9df02d89dc8232c700b8cf8bc6f1ece3ca7af84ab52e67a660039d6c9168aed4","record/old-bench-log/07/stdcpp-libcxx":"f90849a0b5dc11dc0280ad97886e92e1d91c080403ad7a4ecd638a26fe5e8c5e","record/old-bench-log/07/tcl":"7f6e347bb507f9c00ff664d3e627c0a9cf842b416eeb2af9f3b6cccd041c58e4","record/old-bench-log/08-new-memmem/rust-after-01":"646c7d50aea9c560a35eb60116f301f4fb8d4b03fd5814d8b24adffd070332e3","record/old-bench-log/08-new-memmem/rust-after-02":"14e7fb6c6faa85a8f90617528cef79ae382aeba07c2e5c253c68445902b060ba","record/old-bench-log/08-new-memmem/rust-before-01":"7e3b58de0f502c1a1bf6d27e0e85c654b1189716f7374cec4ed4dd365b13101f","record/old-bench-log/08-new-memmem/rust-before-02":"ab6d09529eeeca7ff0da945d59701dbbcfdec5e05581bb9bf154779d12a35e53","record/old-bench-log/09-new-baseline/pcre2":"28df8e2762f267d1ea628906a6e4bbc21f99e6a445bd322c86d0ca483b21b5b3","record/old-bench-log/09-new-baseline/re2":"421437193cc3f159c178479f98bde8dbe27883ec7757b1ddd8d745862f5899ff","record/old-bench-log/09-new-baseline/rust":"6f932a769171b6cdb717c9d01e44a70762ef660c4045b9d2bb3797a9bdf65405","record/old-bench-log/09-new-baseline/rust-bytes":"9c5acd5c1eeac9acfe76d03588041f9b6d65b4351085c3510888ceeb83e8a7b5","record/old-bench-log/10-last-frontier/rust-after-literal.log":"02baef9b3b49acbbff43e81f48ea5a9287e30ff4fc298a3f3b48991d8374aabf","record/old-bench-log/10-last-frontier/rust-before-literal.log":"e5a3bcc2b9e93cf3cb27bc9e6305b3bc03215751bbeef2a70fb25577d6b42874","record/old-bench-log/10-last-frontier/rust-bytes-after-literal.log":"29834c7a5396ac61acedd07c0b7ca60716865ec3e70f35fbaa7826a2309a79d9","record/old-bench-log/10-last-frontier/rust-bytes-before-literal.log":"4e7468a3e8629814bd4af91e2a8eb42d0899d352b5dff3058b801aa637046be2","record/old-bench-log/11-regex-1.7.3/rust":"d7cc18a62070ea7a999e1ba2458f26cf94595f1af276c2b3e96cee638eccf3f0","record/old-bench-log/11-regex-1.7.3/rust-bytes":"64c7458020139bd7a03d1cb0927b741e6972377b686626563acb86fbc66414ca","record/old-bench-log/12-regex-1.8.1/rust":"a538c42e77e20956e81fb5a4e2e1e7d3fdf60da019d7e3df52d93f57367a3fbd","record/old-bench-log/12-regex-1.8.1/rust-bytes":"fbb00fdf8f039ce312f5346a67dddaa5e129280a93a90d7aaf6b5a9a71d2f212","record/old-bench-log/13-regex-1.9.0/rust":"0ef62700ba3fc24887af74b7942490c90b4cd2814b8fda200f7376e43391bfce","record/old-bench-log/13-regex-1.9.0/rust-bytes":"676d501d4667f0a945c88ebb56839176dd3a5a6b45af7708b1e870bf26d12603","record/old-bench-log/README.md":"d359f536fb4b8c1af9af3465a027c3522f62c3871aad44645a955b650d7deec0","record/old-bench-log/old/01-before":"c2ea2750fca8ac1742003fe2106e9422d49e92967d3fe0267f24b7ec830b07e3","record/old-bench-log/old/02-new-syntax-crate":"27fd8b3d35cf08d434035ff7d9f2e9e3c94a167e45ba655567c73ae96830f1d8","record/old-bench-log/old/03-new-syntax-crate":"d942a2b95c3a2d8f85f3f17934f258bdc84baa33e91986e8a6810ca8d6e9cc50","record/old-bench-log/old/04-fixed-benchmark":"0da29ef39ac07ece411c151ab479a76944946aba992547b15d90ec2d5484e85c","record/old-bench-log/old/05-thread-caching":"e364d87131e43187d6757426839789d1b6b47b3f3af21280daa9193d5ab19f64","record/old-bench-log/old/06-major-dynamic":"3bc2b8fd2714ae9f19b2e4f4219654982522daf01b5d3055b4aec0458afeaf13","record/old-bench-log/old/06-major-macro":"d5617ed23e71d5298ed4d629eee257e401c352fd1c91a2048dfeb1677527d4e7","record/old-bench-log/old/07-prefix-improvements":"9277d1392c85a38db215a9b69e3b0cd4a9901f8f1c72c706ca262e5f099b8819","record/old-bench-log/old/08-case-fixes":"f97cd3675cf5c967e4ca8841f2368e9eadf538b542bfe3035d31492afc5934bf","record/old-bench-log/old/09-before-compiler-rewrite":"b928686819dbd9aeaa6639b01b63a48428653f2f676a4e15d61cddec421e0389","record/old-bench-log/old/10-compiler-rewrite":"697b295ee377a5cb287d403593bfb8c078270b4e19e8d61d0b95b06ee7c903ab","record/old-bench-log/old/11-compiler-rewrite":"3f0ba494a0d82e7419285a9686474dc7763d4da0dd3faaa3bec3f624bbede481","record/old-bench-log/old/12-executor":"962e182f9a1cfddb8c0cd2d8c4681febef1430082c9a38e5373c9117b853e65e","record/old-bench-log/old/12-executor-bytes":"e01a1e878b44c80724e9bf09bb11210eeb8f01518ac7f0e3e7f2ee241281e500","record/old-bench-log/old/13-cache-byte-range-suffixes":"1d67d58a39f9177a79c26f3c6c2a1caaf51f085ce137711ab9ba74071c14680c","rustfmt.toml":"1ca600239a27401c4a43f363cf3f38183a212affc1f31bff3ae93234bbaec228","src/builders.rs":"67b4f07ba91794c1e076d092a55f9377301ef5fa8f0dcef13699842583c14865","src/bytes.rs":"6a576b7cec3bc120b9a444f9d12378ac3f4c4f6443e44e4befce6c9c356d8d78","src/error.rs":"4ac8361e900627a87a2ac78e5d475be17c455fe6850d1515bf5b874837c4ae25","src/find_byte.rs":"e17cd3b765467685946707840b92ea4e37d3c11081fbf316174a15858cd4bd99","src/lib.rs":"63e4c129402482c7d10d3c01f1ae0ea7267c479318ac97385d8d1c89429febb4","src/pattern.rs":"5f37755a7c16902d861377645f57a20314961f86298d4b35ae6e1058ca4e9801","src/regex/bytes.rs":"a950e32314214ba2256b854cbfa042c7c9cf7329479b10570c4201ab244d63c6","src/regex/mod.rs":"c220b6dd7a5e1945f8e743d1dcd796c5f782c91b0c34eb9915c588174a517fe8","src/regex/string.rs":"354712245a12bb3cbfbb89d3908a47824780beb4c4f2e6b0e7f52ea1be35b7fe","src/regexset/bytes.rs":"6290dd81f47fb6cdbaa358be2340398a2a640320373d334e4c977bf30b5a9220","src/regexset/mod.rs":"c220b6dd7a5e1945f8e743d1dcd796c5f782c91b0c34eb9915c588174a517fe8","src/regexset/string.rs":"977bc167c48c7c99187599c5071ca197e61a56359d32a26b9dbc1b58a5ef1c4d","test":"c0122c20a2c9b7ba6e9a8aaeb2b7d9910315ef31063539949f28d9501ef3193c","testdata/README.md":"c0514501526560d7f6171eb6d982ad61b4527760cb38a4bfbe8e28036ff37b95","testdata/anchored.toml":"7a1b5cd81deed2099796a451bf764a3f9bd21f0d60c0fa46accd3a35666866f2","testdata/bytes.toml":"1d84179165fd25f3b94bd2bfbeb43fc8a162041f7bf98b717e0f85cef7fb652b","testdata/crazy.toml":"a146e2d2e23f1a57168979d9b1fc193c2ba38dca66294b61140d6d2a2958ec86","testdata/crlf.toml":"d19cf22756434d145dd20946c00af01c102a556a252070405c3c8294129d9ece","testdata/earliest.toml":"d561e643623ee1889b5b049fdcf3c7cb71b0c746d7eb822ddbd09d0acda2620b","testdata/empty.toml":"738dbe92fbd8971385a1cf3affb0e956e5b692c858b9b48439d718f10801c08e","testdata/expensive.toml":"5ce2f60209c99cdd2cdcb9d3069d1d5ca13d5e08a85e913efe57267b2f5f0e9d","testdata/flags.toml":"9a7e001808195c84f2a7d3e18bc0a82c7386e60f03a616e99af00c3f7f2c3fd4","testdata/fowler/basic.toml":"a82c7e233451cd7cfe0c3d817f3a1ab44478bb81ae62432efdd515fa8370275e","testdata/fowler/dat/README":"e53d6c37b5931cb26dc9ae4c40358eea63f7a469c4db6ca816c072a8ced6a61a","testdata/fowler/dat/basic.dat":"b1126dda59075c08f574987090273c9977790115f1e1941d0708c0b82b256905","testdata/fowler/dat/nullsubexpr.dat":"e5cd4145dffa8bc66f2d39079950b2bb7bae21a521514b83b557b92f4a871a9e","testdata/fowler/dat/repetition.dat":"2b8b2b191229a804fba49e6b888d8194bf488f7744057b550da9d95a2aa6617a","testdata/fowler/nullsubexpr.toml":"cd812e7e8fa0469253b34f0db93b5883c9d8b9740fc4f7825a38e7df880a4eed","testdata/fowler/repetition.toml":"8c09164f064b3db81309c53483863bdcec493781644de162416e9f485e772615","testdata/iter.toml":"6875460302974a5b3073a7304a865c45aba9653c54afea2c4d26e1ea248a81f7","testdata/leftmost-all.toml":"903bfbeff888b7664296f4d5aa367ce53d1dafe249ab0a3359223ae94d596396","testdata/line-terminator.toml":"3255c305687eaa8b39939855ce8e0379bdc0e70d7b0cd818856f65fb44a48c0f","testdata/misc.toml":"32c9591655c6fb118dfefcb4de49a04820a63cb960533dfc2538cdaabf4f4047","testdata/multiline.toml":"eb07cf5427e6ddbcf61f4cc64c2d74ff41b5ef75ef857959651b20196f3cd157","testdata/no-unicode.toml":"d209da04506900fd5f69e48170cddaad0702355ac6176c3a75ab3ff96974457c","testdata/overlapping.toml":"5d96497a7233566d40b05ba22047e483fa8662e45515a9be86da45cf6c28703a","testdata/regex-lite.toml":"fecca7cc8c9cea2e1f84f846a89fd9b3ca7011c83698211a2eeda8924deb900c","testdata/regression.toml":"2979101e9c0ea707ed4071cbd38628791dadaafad1c1b0d90cf61193755be6be","testdata/set.toml":"dfd265dc1aee80026e881616840df0236ae9abf12467d7ec0e141a52c236128c","testdata/substring.toml":"48122d9f3477ed81f95e3ad42c06e9bb25f849b66994601a75ceae0693b81866","testdata/unicode.toml":"7e4b013039b0cdd85fa73f32d15d096182fe901643d4e40c0910087a736cd46d","testdata/utf8.toml":"2eabce0582bcacb2073e08bbe7ca413f096d14d06e917b107949691e24f84b20","testdata/word-boundary.toml":"51bc1c498ab825420340a2dd3e6623de4054937ba6d5020ff8cd14b1c1e45271","tests/fuzz/mod.rs":"7b01a803e1c0b5a45c062d493723553f263c57e269eade1475eb789694635d5c","tests/fuzz/testdata/crash-7eb3351f0965e5d6c1cb98aa8585949ef96531ff":"be4f42497ac9358eb020bf17cd8fdb9743691824e01d744504613ea2bfb2f663","tests/fuzz/testdata/crash-8760b19b25d74e3603d4c643e9c7404fdd3631f9":"19df9a1e1b5a3c0f31cc038b9f2991b161d8577b4a0c8b2fc391cdfecdb6dd85","tests/fuzz/testdata/crash-cd33b13df59ea9d74503986f9d32a270dd43cc04":"2fde1668e9e3e60943c28d97c01c90dd3d3882f48475f060ccaf961c228069e8","tests/fuzz/testdata/minimized-from-8760b19b25d74e3603d4c643e9c7404fdd3631f9":"c9e00f7a31453708560900aa51e358dd5551df494439860594be97bb1fb933ba","tests/fuzz/testdata/slow-unit-3ab758ea520027fefd3f00e1384d9aeef155739e":"4433011f7af46e855e843635cf24a49713bd5705f67176ed928f04d24eda1857","tests/fuzz/testdata/slow-unit-5345fccadf3812c53c3ccc7af5aa2741b7b2106c":"95782a847fc64e9cccdf76e9540b0d16ce80db5d05157a88b958b763f9b8479b","tests/fuzz/testdata/slow-unit-6bd643eec330166e4ada91da2d3f284268481085":"8ddff12288f6f20cc9d65db76bd8187834f64f844aad48a340d082555ad5cb56","tests/fuzz/testdata/slow-unit-93c73a43581f205f9aaffd9c17e52b34b17becd0":"eea6919a75fde163634b890e2253a0918cf0ba092357fa617f368bbfa131ba30","tests/fuzz/testdata/slow-unit-9ca9cc9929fee1fcbb847a78384effb8b98ea18a":"a806f73b900046977267acceb83b105bac7ee21ede2edc2927afe1e1f0149f00","tests/fuzz/testdata/slow-unit-b8a052f4254802edbe5f569b6ce6e9b6c927e9d6":"9540cf58241cde3bc0db8364e0ccff67ff1ff9721c85b0d2ca27354c0cbf2650","tests/lib.rs":"33a37711d8677994f87b19be40b24a323d41de18fb161c850b4ccea9fe4c4156","tests/misc.rs":"5ac5858325451e1d70f308ca0bcead5a354d095a7473800c11065231c319c456","tests/regression.rs":"3490aac99fdbf3f0949ba1f338d5184a84b505ebd96d0b6d6145c610587aa60b","tests/regression_fuzz.rs":"57e0bcba0fdfa7797865e35ae547cd7fe1c6132b80a7bfdfb06eb053a568b00d","tests/replace.rs":"78ff9bf7f78783ad83a78041bb7ee0705c7efc85b4d12301581d0ce5b2a59325","tests/searcher.rs":"04152e5c86431deec0c196d2564a11bc4ec36f14c77e8c16a2f9d1cbc9fc574e","tests/suite_bytes.rs":"7697b04e5b181aa78b3654bd2dbe1c792d9626197573ed8c649f1da8b481817d","tests/suite_bytes_set.rs":"d970168fab57a9edc60ff26a2bb7d0cc714d4298e4ee9eadba9da44a6569f2bb","tests/suite_string.rs":"1be0cf8922171f8323f99e8ecedbbf1846d339620d0dc2fd490901cbbbd2622e","tests/suite_string_set.rs":"22743107206d913521f9adb728482aed3a9625ff7b15a83df057bbf1f7050e03"},"package":"81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/regex/Cargo.toml temporalio-1.3.0/vendor/regex/Cargo.toml --- temporalio-1.3.0/vendor/regex/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ edition = "2021" rust-version = "1.60.0" name = "regex" -version = "1.9.0" +version = "1.9.3" authors = [ "The Rust Project Developers", "Andrew Gallant ", @@ -68,7 +68,7 @@ optional = true [dependencies.regex-automata] -version = "0.3.0" +version = "0.3.6" features = [ "alloc", "syntax", diff -Nru temporalio-1.3.0/vendor/regex/CHANGELOG.md temporalio-1.3.0/vendor/regex/CHANGELOG.md --- temporalio-1.3.0/vendor/regex/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,44 @@ +1.9.3 (2023-08-05) +================== +This is a patch release that fixes a bug where some searches could result in +incorrect match offsets being reported. It is difficult to characterize the +types of regexes susceptible to this bug. They generally involve patterns +that contain no prefix or suffix literals, but have an inner literal along with +a regex prefix that can conditionally match. + +Bug fixes: + +* [BUG #1060](https://github.com/rust-lang/regex/issues/1060): +Fix a bug with the reverse inner literal optimization reporting incorrect match +offsets. + + +1.9.2 (2023-08-05) +================== +This is a patch release that fixes another memory usage regression. This +particular regression occurred only when using a `RegexSet`. In some cases, +much more heap memory (by one or two orders of magnitude) was allocated than in +versions prior to 1.9.0. + +Bug fixes: + +* [BUG #1059](https://github.com/rust-lang/regex/issues/1059): +Fix a memory usage regression when using a `RegexSet`. + + +1.9.1 (2023-07-07) +================== +This is a patch release which fixes a memory usage regression. In the regex +1.9 release, one of the internal engines used a more aggressive allocation +strategy than what was done previously. This patch release reverts to the +prior on-demand strategy. + +Bug fixes: + +* [BUG #1027](https://github.com/rust-lang/regex/issues/1027): +Change the allocation strategy for the backtracker to be less aggressive. + + 1.9.0 (2023-07-05) ================== This release marks the end of a [years long rewrite of the regex crate @@ -187,7 +228,7 @@ escaped. Also, a new routine, `is_escapeable_character`, has been added to `regex-syntax` to query whether a character is escapeable or not. * [FEATURE #547](https://github.com/rust-lang/regex/issues/547): -Add `Regex::captures_at`. This filles a hole in the API, but doesn't otherwise +Add `Regex::captures_at`. This fills a hole in the API, but doesn't otherwise introduce any new expressive power. * [FEATURE #595](https://github.com/rust-lang/regex/issues/595): Capture group names are now Unicode-aware. They can now begin with either a `_` diff -Nru temporalio-1.3.0/vendor/regex/record/compile-test/2023-07-05.csv temporalio-1.3.0/vendor/regex/record/compile-test/2023-07-05.csv --- temporalio-1.3.0/vendor/regex/record/compile-test/2023-07-05.csv 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/regex/record/compile-test/2023-07-05.csv 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,37 @@ +name,crate,revision,profile,duration,size,relative-size +regex__dev__std_perf_unicode,regex,53786ce797,dev,2.414172223s,4143600,3764328 +regex__dev__std_perf_unicode_perf-dfa-full,regex,53786ce797,dev,2.900927164s,4815368,4436096 +regex__dev__std,regex,53786ce797,dev,1.662626059s,2062808,1683536 +regex__dev__std_perf,regex,53786ce797,dev,2.136755026s,3574256,3194984 +regex__dev__std_unicode,regex,53786ce797,dev,1.943953132s,2623960,2244688 +regex__dev__std_unicode-case_unicode-perl,regex,53786ce797,dev,1.753222606s,2374104,1994832 +regex-lite__dev__std_string,regex,53786ce797,dev,498.158769ms,727504,348232 +regex-automata__dev__std_syntax_perf_unicode_meta_nfa_dfa_hybrid,regex-automata,53786ce797,dev,2.900832296s,4872712,4493440 +regex-automata__dev__std_syntax_nfa-pikevm,regex-automata,53786ce797,dev,1.413429089s,1501648,1122376 +regex-automata__dev__std_syntax_nfa-backtrack,regex-automata,53786ce797,dev,1.412429191s,1505744,1126472 +regex-automata__dev__std_syntax_hybrid,regex-automata,53786ce797,dev,1.678331978s,1632720,1253448 +regex-automata__dev__std_syntax_dfa-onepass,regex-automata,53786ce797,dev,1.594526299s,1526224,1146952 +regex-automata__dev__std_syntax_unicode_meta_nfa_dfa_hybrid,regex-automata,53786ce797,dev,2.992024402s,3500504,3121232 +regex-automata__dev__std_syntax_perf_unicode_meta_nfa_hybrid_dfa-onepass,regex-automata,53786ce797,dev,2.378489598s,4119024,3739752 +regex-automata__dev__std_syntax_perf_meta_nfa_dfa_hybrid,regex-automata,53786ce797,dev,2.695475914s,4299272,3920000 +regex-automata__dev__std_syntax_perf_meta_nfa_hybrid_dfa-onepass,regex-automata,53786ce797,dev,2.120929251s,3549680,3170408 +regex-automata__dev__std_unicode_meta,regex-automata,53786ce797,dev,1.89728585s,2492888,2113616 +regex-automata__dev__std_meta,regex-automata,53786ce797,dev,1.604628942s,1927640,1548368 +regex__release__std_perf_unicode,regex,53786ce797,release,3.333636908s,2025816,1650720 +regex__release__std_perf_unicode_perf-dfa-full,regex,53786ce797,release,3.805434309s,2210160,1835064 +regex__release__std,regex,53786ce797,release,1.789749444s,932160,557064 +regex__release__std_perf,regex,53786ce797,release,2.734249431s,1505624,1130528 +regex__release__std_unicode,regex,53786ce797,release,2.04945845s,1431872,1056776 +regex__release__std_unicode-case_unicode-perl,regex,53786ce797,release,1.893829903s,1173824,798728 +regex-lite__release__std_string,regex,53786ce797,release,648.517079ms,473400,98304 +regex-automata__release__std_syntax_perf_unicode_meta_nfa_dfa_hybrid,regex-automata,53786ce797,release,3.893237683s,2242928,1867832 +regex-automata__release__std_syntax_nfa-pikevm,regex-automata,53786ce797,release,1.556952008s,780600,405504 +regex-automata__release__std_syntax_nfa-backtrack,regex-automata,53786ce797,release,1.576471926s,768312,393216 +regex-automata__release__std_syntax_hybrid,regex-automata,53786ce797,release,1.819539266s,813368,438272 +regex-automata__release__std_syntax_dfa-onepass,regex-automata,53786ce797,release,1.672511482s,776504,401408 +regex-automata__release__std_syntax_unicode_meta_nfa_dfa_hybrid,regex-automata,53786ce797,release,3.227157436s,1767744,1392648 +regex-automata__release__std_syntax_perf_unicode_meta_nfa_hybrid_dfa-onepass,regex-automata,53786ce797,release,3.340235296s,2005336,1630240 +regex-automata__release__std_syntax_perf_meta_nfa_dfa_hybrid,regex-automata,53786ce797,release,3.640335773s,1718640,1343544 +regex-automata__release__std_syntax_perf_meta_nfa_hybrid_dfa-onepass,regex-automata,53786ce797,release,2.876306297s,1489240,1114144 +regex-automata__release__std_unicode_meta,regex-automata,53786ce797,release,1.945654415s,1362240,987144 +regex-automata__release__std_meta,regex-automata,53786ce797,release,1.740500411s,862528,487432 diff -Nru temporalio-1.3.0/vendor/regex/src/builders.rs temporalio-1.3.0/vendor/regex/src/builders.rs --- temporalio-1.3.0/vendor/regex/src/builders.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex/src/builders.rs 2023-10-30 19:40:00.000000000 +0000 @@ -28,7 +28,9 @@ vec::Vec, }; -use regex_automata::{meta, util::syntax, MatchKind}; +use regex_automata::{ + meta, nfa::thompson::WhichCaptures, util::syntax, MatchKind, +}; use crate::error::Error; @@ -100,8 +102,12 @@ } fn build_many_string(&self) -> Result { - let metac = - self.metac.clone().match_kind(MatchKind::All).utf8_empty(true); + let metac = self + .metac + .clone() + .match_kind(MatchKind::All) + .utf8_empty(true) + .which_captures(WhichCaptures::None); let syntaxc = self.syntaxc.clone().utf8(true); let patterns = Arc::from(self.pats.as_slice()); meta::Builder::new() @@ -113,8 +119,12 @@ } fn build_many_bytes(&self) -> Result { - let metac = - self.metac.clone().match_kind(MatchKind::All).utf8_empty(false); + let metac = self + .metac + .clone() + .match_kind(MatchKind::All) + .utf8_empty(false) + .which_captures(WhichCaptures::None); let syntaxc = self.syntaxc.clone().utf8(false); let patterns = Arc::from(self.pats.as_slice()); meta::Builder::new() @@ -395,7 +405,7 @@ /// /// * Unless dot-matches-new-line mode is enabled, `.` will now match /// any character except for `\n` and `\r`. - /// * When multi-line mode is enabled, `^` will match immediatelly + /// * When multi-line mode is enabled, `^` will match immediately /// following a `\n` or a `\r`. Similarly, `$` will match immediately /// preceding a `\n` or a `\r`. Neither `^` nor `$` will ever match /// between `\r` and `\n`. @@ -973,7 +983,7 @@ /// /// * Unless dot-matches-new-line mode is enabled, `.` will now match /// any character except for `\n` and `\r`. - /// * When multi-line mode is enabled, `^` will match immediatelly + /// * When multi-line mode is enabled, `^` will match immediately /// following a `\n` or a `\r`. Similarly, `$` will match immediately /// preceding a `\n` or a `\r`. Neither `^` nor `$` will ever match /// between `\r` and `\n`. @@ -1563,7 +1573,7 @@ /// /// * Unless dot-matches-new-line mode is enabled, `.` will now match /// any character except for `\n` and `\r`. - /// * When multi-line mode is enabled, `^` will match immediatelly + /// * When multi-line mode is enabled, `^` will match immediately /// following a `\n` or a `\r`. Similarly, `$` will match immediately /// preceding a `\n` or a `\r`. Neither `^` nor `$` will ever match /// between `\r` and `\n`. @@ -2162,7 +2172,7 @@ /// /// * Unless dot-matches-new-line mode is enabled, `.` will now match /// any character except for `\n` and `\r`. - /// * When multi-line mode is enabled, `^` will match immediatelly + /// * When multi-line mode is enabled, `^` will match immediately /// following a `\n` or a `\r`. Similarly, `$` will match immediately /// preceding a `\n` or a `\r`. Neither `^` nor `$` will ever match /// between `\r` and `\n`. diff -Nru temporalio-1.3.0/vendor/regex/src/bytes.rs temporalio-1.3.0/vendor/regex/src/bytes.rs --- temporalio-1.3.0/vendor/regex/src/bytes.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex/src/bytes.rs 2023-10-30 19:40:00.000000000 +0000 @@ -44,7 +44,7 @@ // Notice that despite the `.*` at the end, it will only match valid UTF-8 // because Unicode mode was enabled with the `u` flag. Without the `u` flag, -// the `.*` would match the rest of the bytes regardless of whehter they were +// the `.*` would match the rest of the bytes regardless of whether they were // valid UTF-8. let (_, [title]) = re.captures(hay).unwrap().extract(); assert_eq!(title, b"\xE2\x98\x83"); diff -Nru temporalio-1.3.0/vendor/regex/src/lib.rs temporalio-1.3.0/vendor/regex/src/lib.rs --- temporalio-1.3.0/vendor/regex/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -665,8 +665,8 @@ Any named character class may appear inside a bracketed `[...]` character -class. For example, `[\p{Greek}[:digit:]]` matches any Greek or ASCII -digit. `[\p{Greek}&&\pL]` matches Greek letters. +class. For example, `[\p{Greek}[:digit:]]` matches any ASCII digit or any +codepoint in the `Greek` script. `[\p{Greek}&&\pL]` matches Greek letters. Precedence in character classes, from most binding to least: diff -Nru temporalio-1.3.0/vendor/regex/src/regex/bytes.rs temporalio-1.3.0/vendor/regex/src/regex/bytes.rs --- temporalio-1.3.0/vendor/regex/src/regex/bytes.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex/src/regex/bytes.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1316,7 +1316,7 @@ /// unnamed group that is always present and corresponds to the entire /// match. /// - /// Since the implict unnamed group is always included in this length, the + /// Since the implicit unnamed group is always included in this length, the /// length returned is guaranteed to be greater than zero. /// /// # Example diff -Nru temporalio-1.3.0/vendor/regex/src/regex/string.rs temporalio-1.3.0/vendor/regex/src/regex/string.rs --- temporalio-1.3.0/vendor/regex/src/regex/string.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex/src/regex/string.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1315,7 +1315,7 @@ /// unnamed group that is always present and corresponds to the entire /// match. /// - /// Since the implict unnamed group is always included in this length, the + /// Since the implicit unnamed group is always included in this length, the /// length returned is guaranteed to be greater than zero. /// /// # Example diff -Nru temporalio-1.3.0/vendor/regex/testdata/anchored.toml temporalio-1.3.0/vendor/regex/testdata/anchored.toml --- temporalio-1.3.0/vendor/regex/testdata/anchored.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex/testdata/anchored.toml 2023-10-30 19:40:00.000000000 +0000 @@ -69,3 +69,59 @@ matches = [[0, 3]] anchored = true unicode = false + +# Tests that '.c' doesn't match 'abc' when performing an anchored search from +# the beginning of the haystack. This test found two different bugs in the +# PikeVM and the meta engine. +[[test]] +name = "no-match-at-start" +regex = '.c' +haystack = 'abc' +matches = [] +anchored = true + +# Like above, but at a non-zero start offset. +[[test]] +name = "no-match-at-start-bounds" +regex = '.c' +haystack = 'aabc' +bounds = [1, 4] +matches = [] +anchored = true + +# This is like no-match-at-start, but hits the "reverse inner" optimization +# inside the meta engine. (no-match-at-start hits the "reverse suffix" +# optimization.) +[[test]] +name = "no-match-at-start-reverse-inner" +regex = '.c[a-z]' +haystack = 'abcz' +matches = [] +anchored = true + +# Like above, but at a non-zero start offset. +[[test]] +name = "no-match-at-start-reverse-inner-bounds" +regex = '.c[a-z]' +haystack = 'aabcz' +bounds = [1, 5] +matches = [] +anchored = true + +# Same as no-match-at-start, but applies to the meta engine's "reverse +# anchored" optimization. +[[test]] +name = "no-match-at-start-reverse-anchored" +regex = '.c[a-z]$' +haystack = 'abcz' +matches = [] +anchored = true + +# Like above, but at a non-zero start offset. +[[test]] +name = "no-match-at-start-reverse-anchored-bounds" +regex = '.c[a-z]$' +haystack = 'aabcz' +bounds = [1, 5] +matches = [] +anchored = true diff -Nru temporalio-1.3.0/vendor/regex/testdata/regression.toml temporalio-1.3.0/vendor/regex/testdata/regression.toml --- temporalio-1.3.0/vendor/regex/testdata/regression.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex/testdata/regression.toml 2023-10-30 19:40:00.000000000 +0000 @@ -739,3 +739,20 @@ utf8 = false match-kind = "all" search-kind = "overlapping" + +# See: https://github.com/rust-lang/regex/issues/1060 +[[test]] +name = "reverse-inner-plus-shorter-than-expected" +regex = '(?:(\d+)[:.])?(\d{1,2})[:.](\d{2})' +haystack = '102:12:39' +matches = [[[0, 9], [0, 3], [4, 6], [7, 9]]] + +# Like reverse-inner-plus-shorter-than-expected, but using a far simpler regex +# to demonstrate the extent of the rot. Sigh. +# +# See: https://github.com/rust-lang/regex/issues/1060 +[[test]] +name = "reverse-inner-short" +regex = '(?:([0-9][0-9][0-9]):)?([0-9][0-9]):([0-9][0-9])' +haystack = '102:12:39' +matches = [[[0, 9], [0, 3], [4, 6], [7, 9]]] diff -Nru temporalio-1.3.0/vendor/regex/tests/replace.rs temporalio-1.3.0/vendor/regex/tests/replace.rs --- temporalio-1.3.0/vendor/regex/tests/replace.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex/tests/replace.rs 2023-10-30 19:40:00.000000000 +0000 @@ -39,7 +39,7 @@ "", "trim me" ); -replace!(number_hypen, replace, r"(.)(.)", "ab", "$1-$2", "a-b"); +replace!(number_hyphen, replace, r"(.)(.)", "ab", "$1-$2", "a-b"); // replace!(number_underscore, replace, r"(.)(.)", "ab", "$1_$2", "a_b"); replace!( simple_expand, diff -Nru temporalio-1.3.0/vendor/regex-automata/.cargo-checksum.json temporalio-1.3.0/vendor/regex-automata/.cargo-checksum.json --- temporalio-1.3.0/vendor/regex-automata/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"c8a990bda8cbc76d80175ed50c9b77c472a6acc4cae5f93c0cb6fdaac7f60bd7","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"61db25dbf26092fc80e8db89165692e55f9fb86b14e8451ebb28303f45932254","src/dfa/accel.rs":"800dada38f7a1d0fa443821dc04a8611c6cf06ef431e517f16867a27cbb4f27d","src/dfa/automaton.rs":"35948398a40b74c8dbcdb4a3ea8765a23f3bcea948bb1a888dfec4c368fbd8ac","src/dfa/dense.rs":"62dbda33438dda3605c2cf813d56406b22cceafa7e57a566df8f07548795c528","src/dfa/determinize.rs":"f8338d2a8027187a86448fb4e1b24898aff24bab3f25648e39fce5b5c8af5227","src/dfa/minimize.rs":"92b992e5c581778b7120a652f2edd1e1d23df508a88bc0622360404454cb843b","src/dfa/mod.rs":"bc5ea92fe561765b271b8489e6e407382c6b98d234e5c7c77789afc05eade0ce","src/dfa/onepass.rs":"d1b29d531545ce30167d58eb24ac15ba10bce158e73483c09f219d5971c8e83c","src/dfa/regex.rs":"74decf587efbfae8cda3061e797c9bb1db046eb9e068fbe04e5bb8d83cc24a86","src/dfa/remapper.rs":"ca096abc0f8e45c43a2adf3a7743b8857714ae7411a623edea41cc3ce906a169","src/dfa/search.rs":"237cdb8c6239ece5fe8279c4b6209c8094502cdecc9a4e3f977e469e60fd32ec","src/dfa/sparse.rs":"c3a05451a0019850b538dfd640fb12c92ac127b8a69c55f23489bd42c1c1f289","src/dfa/special.rs":"c2e60de5b98e68c9c45aaffbc67a08f049831a764a1ed29d1d1db0fb68efdce5","src/dfa/start.rs":"d136327339d151c5089de0d6c5003e97b337c83f92f20b8e4dd0b33cb28f26c7","src/hybrid/dfa.rs":"8fdf5f2bd55442ec5532af1828e9b7fac91b979dc3f7325b3b2ee0d24e8ae6f5","src/hybrid/error.rs":"ffc6e65fd9e4694a67902f3516970e3e6cd6e33a7f59a5ab2ac16f740a049d9c","src/hybrid/id.rs":"6168aad5c81c627494ba0575a24d61fd0ae7efabaaceeadb8ff28472275e2813","src/hybrid/mod.rs":"1cbc944aa866ee7a219ef14743db35ed65c625437a168ed6d3ee8af72baba9b2","src/hybrid/regex.rs":"9f40aa2cfa89d7a97f9c9e32cb2ae591f4b6f3d51ddec41308d99ce924e130cf","src/hybrid/search.rs":"e599e3a4ddd187982c038b85c30e96d24257eefa32754c38690bb5dbfc59418f","src/lib.rs":"b40a01727fe0adaf59a8fb38cfe3b9dadb55082dc21122ae5db02755fba22161","src/macros.rs":"3e4b39252bfa471fad384160a43f113ebfec7bec46a85d16f006622881dd2081","src/meta/error.rs":"e44728e42a98e52a2ab74faf1d2f0d30a5e20c111ad999919ab910a50fba151f","src/meta/limited.rs":"970e440ab38aee2d6e783b090f36284391ff23dcf1202482635cc32b4abc61d6","src/meta/literal.rs":"52da98bb30995dedd22786e4728cb84e84c6093a284168bd91196b999dd0f6ec","src/meta/mod.rs":"f3b10b96fa08efaba3e4c9b81883cf40aac6e4c1f6ae55a497a534cf5805b46d","src/meta/regex.rs":"b982d75093de4336cdce23a837b4359a9134d480286202b4c545b3a2e2df65dc","src/meta/reverse_inner.rs":"945d6c2d4c7538e1609dbd430a096784d22abd33db58b1ba65c9c9af45a7d3c0","src/meta/stopat.rs":"b786cd0bd21f66c6f63df2d4bc2e544cd041d548d8001b4a818be1e0f84b6747","src/meta/strategy.rs":"e6bc367f11f756cfe83bad2b8cefa8881c2506969a4a9596614d6ee3587764e0","src/meta/wrappers.rs":"017216b501784b2b2f8013db8cf30f1ab5e23c1678c8f0c98b61a071cd1c075e","src/nfa/mod.rs":"1a731e217ed4053714500e84e58cc127f402e4e075f7d0e5b9aea715cd52405a","src/nfa/thompson/backtrack.rs":"dddbb8ecb34495f58e506f4e2d9c5f58b65cf5f8d304f71928a886cc1dd0d110","src/nfa/thompson/builder.rs":"77bdd42a7fbdedb8d6756f0161d278e677ab1fbe622ca77115c8b506a2a6db21","src/nfa/thompson/compiler.rs":"bd6946c09a4b105ecd2c24a59f0f05b13899ae9221a7a6e90ee327f661c369f1","src/nfa/thompson/error.rs":"609df1743285fa6d9d6c70889b1b0cb3eeb3cdee517cf32535c119b7ce6093d9","src/nfa/thompson/literal_trie.rs":"c2d1d09b44da4648db797386c2410cbf63337afef8cb62e6e78cf34786892a11","src/nfa/thompson/map.rs":"96cdf3195f7efb374bcb1791ef5cc12a1cde189ab90402bf01d9b46fb7796b60","src/nfa/thompson/mod.rs":"7159953213c1c600e88470e31e01b51e48ef2849f6e947ceec07836f1a92a341","src/nfa/thompson/nfa.rs":"0dd5a7aa996a2283468a8df17d60a0a49a77a2d1af10520a3bdb31dbcfab6a24","src/nfa/thompson/pikevm.rs":"81897e6f63b5c78b98b27c2690a54c2d76b12ae8124cf5bcc13f4c1c6707505a","src/nfa/thompson/range_trie.rs":"8eca65054c80343f4dace17e16a749af7b74c135e0eecc97400736474d46dd88","src/util/alphabet.rs":"951a973521b9488353c25978107ebc93c514317675dc421e0f7c0e6a134b74af","src/util/captures.rs":"9521740c57b540c67fd3cecd748accbc7d19177098afdb4113552481435416ee","src/util/determinize/mod.rs":"dba03b990dcca33beaeda3aa178ea1a7272ed3273b04ba20b5c9a30cc54df717","src/util/determinize/state.rs":"3de33a7fb59a67ce7c78f5211693cb1b489dafd250059fc0ede44c9d51ab1520","src/util/empty.rs":"13ec7d6cbd1520db5b4c1dae294f4419fa88d39d2bfc16f4ef258473d609f91c","src/util/escape.rs":"5b2731b41a55cb50ab688132bb5640dbd51f14f141adaa864b9db7f0aa092c74","src/util/int.rs":"b7eec0a6cab0798ba66707988fce3ecfc841b93418028a7b1408c5d0f6271351","src/util/interpolate.rs":"5e4e6b6fb6e5a7603e393bf05c609735d86a7d1f54c2436e42111b4e1409b6dd","src/util/iter.rs":"cb36434ede8ac19f09e3af2fc37633e6a34477cff261cdd3b9ab523bbe5165f5","src/util/lazy.rs":"c8228161fbd2c432ac616596bafc952b7126e5e1ced90dd097a8ec5a5ea8c00b","src/util/look.rs":"d0fd38ef5636983641d904d9827a0106966b7b739052fe4cb41d458ff247dd1d","src/util/memchr.rs":"573109ce4983907083ae0b29a084a324b9b53da369b4d96f7f3a21fd5c8eb5c9","src/util/mod.rs":"16c5fd72263d3a4df994111b81aca36da17f591f4853f21a6a906ac725843f97","src/util/pool.rs":"5e231307962d0918888f98fd1a2bf51c2fc08bf910fa472762136f24cd040cf2","src/util/prefilter/aho_corasick.rs":"7960075f547ee4145420cdc4a8043dc988136e1dd4c34618baae2d641e7f655a","src/util/prefilter/byteset.rs":"1c80fa432acc23223a75a5181e37c40034764dffe42410e4b77af6f24f48bd5c","src/util/prefilter/memchr.rs":"36c6fe6354b2e729db6830166dd4862e439bc48c9e59258d88e4b6c5654e20ef","src/util/prefilter/memmem.rs":"6f6ed9450b14abf3e4a33d395337e51fbaa9743a0a16aac0009f7680aa60c500","src/util/prefilter/mod.rs":"68def6a1f5bd60814904f9f5ab46df9bccfa5da11c1ed60daa826ca7679c33cc","src/util/prefilter/teddy.rs":"a433e88f7348bb4fa4a6aba7a8ccbbb3a0c5b12c63beb7bb57927bed4e47d037","src/util/primitives.rs":"8a9cc19ef2e1ab183943cdc2d2f095b02252476e32b7e9fff4a06a251749b068","src/util/search.rs":"f4466231bc1e4f932c7423306c220ef17865f5252c47abd60fe21a77921e6c95","src/util/sparse_set.rs":"3d4aa30b6aa9fc875d36506487a5095dbe8ed528b89e4146a65c7e7497520a4d","src/util/start.rs":"89c26f547818400cccc8ba34b22b97dde7a2c8f4ca84975564f1f7595b85bbe7","src/util/syntax.rs":"53a33067c44d1e28cc9b7544b9c2ed62a835d52600297424681885d1ffcb008e","src/util/unicode_data/mod.rs":"54c3e10bbc393e9881bfac3295815b160f59e69e2056bc29ee7cf0addd8e3cf7","src/util/unicode_data/perl_word.rs":"2e1a5d889598bd4e73af17d3a9f7d6b4cf2f6ab24920a5336e496bb255281e56","src/util/utf8.rs":"7a068009fdf07e693e521b1f0264725c0e6118dbe1eab55da9d0eab21785fcc1","src/util/wire.rs":"baa15b0e5e33918666bc800e03a1eaf0109f5073dcd8baa52d5d12c83dc129d5","test":"39d79ce3532c31a51c0be89a2939816fad0e4868d2b03992c202cbe64dce9f6c","tests/dfa/api.rs":"cc28e366b6bcbfcf379265acd492a92c62743c3f20e7a2b273019679aa9e1291","tests/dfa/mod.rs":"924d8fff500b9b7b140082623023e78007058a87323151cd8e361462945e4f16","tests/dfa/onepass/mod.rs":"d08f4ecb8ec243be584944c9602af1ed3a48a8732dd11cd573b0d1d182171303","tests/dfa/onepass/suite.rs":"6d63ec5469e6876656ae607cdbe07e6a4e17ace7836b67435763c9b1d233438a","tests/dfa/regression.rs":"ebcf2645290286aa7531eb2b7951385e5ed8167532437aeca2ad2049768fd796","tests/dfa/suite.rs":"cf08499bc8838d2ff16ea9b20b07ad03c9b89d6efe093f081e2982a21ea6d666","tests/fuzz/dense.rs":"3e1099a0cce61e85abc0ad81bc592e85f497f159ef0e5d1d32bac1936aa6f20c","tests/fuzz/mod.rs":"043773510e02f51def43ee0c2b8b867c53ecc8638c8a9233b2ac098de9c3ac1e","tests/fuzz/sparse.rs":"ba61db4927ab28953037a4b20317399c86d01b4d774e46c020ade19029215e25","tests/fuzz/testdata/deserialize_dense_crash-9486fb7c8a93b12c12a62166b43d31640c0208a9":"8961279a8237c3e318452024dd971b1d5a26b058260c297382a74daca1b7f0d1","tests/fuzz/testdata/deserialize_dense_minimized-from-9486fb7c8a93b12c12a62166b43d31640c0208a9":"c2d52e3dea78d3f159b5b521d433358a7fee45ce20ed1545067d461f45ef66b8","tests/fuzz/testdata/deserialize_sparse_crash-0da59c0434eaf35e5a6b470fa9244bb79c72b000":"5b2d273023de3fb04037eaf2e6b4f51cced4c5a08d2e6b44e4be540774f939b9","tests/fuzz/testdata/deserialize_sparse_crash-18cfc246f2ddfc3dfc92b0c7893178c7cf65efa9":"e2e22e2f46a9a75b5c876476442276cf675fe244c5cf918789e4f6b14078fbd9","tests/fuzz/testdata/deserialize_sparse_crash-61fd8e3003bf9d99f6c1e5a8488727eefd234b98":"24a12712e1f2ba0a40b5782707908a74dd19941dc372ef525d65a7134f91988c","tests/fuzz/testdata/deserialize_sparse_crash-a1b839d899ced76d5d7d0f78f9edb7a421505838":"a97f39b2febf9c73535681f7a86201e4b06d5a1ffcf135299c96c1cabfa9f6c4","tests/fuzz/testdata/deserialize_sparse_crash-c383ae07ec5e191422eadc492117439011816570":"44fe3ef878d35e2d51c2c17ff89bbbe3a4650e09d0cbbd48625c0f5e4dd0848b","tests/fuzz/testdata/deserialize_sparse_crash-d07703ceb94b10dcd9e4acb809f2051420449e2b":"d5534be36653b4af6cb94a7c63be58869bb8c204c5c63d67a4d6c986b44bb2e1","tests/fuzz/testdata/deserialize_sparse_crash-dbb8172d3984e7e7d03f4b5f8bb86ecd1460eff9":"77b844898610560afa09f2b8de73a85a0ba9a3b8cee4ff1bbf26b8c97ad4e8a2","tests/gen/README.md":"c3bfdf2f9ced501dd5bd75d01509a34e503efb2dff2f5f7b260580dde5519ed4","tests/gen/dense/mod.rs":"5ae1cfb46212a674118ada2f66f37b25188e84643d406b95eb4665d722344262","tests/gen/dense/multi_pattern_v2.rs":"29b1e9a799adecbdbe7cd05e9748f664c2b915b10b1d2f5d36cfb6453826d1d2","tests/gen/dense/multi_pattern_v2_fwd.bigendian.dfa":"8421d5a1bfc0b6c3bdc8fc90dff591a046b0aaf8e06ef7de7cc293004a35d061","tests/gen/dense/multi_pattern_v2_fwd.littleendian.dfa":"dcf2fd5fd49f5f53cf1ec66f61623402f39401cb3aea30d6677b98bb1e9541bf","tests/gen/dense/multi_pattern_v2_rev.bigendian.dfa":"73c4f20d984e544dfa4cf05f3009d0a9b52fa84bc97b501ea0ccd179e2def4bc","tests/gen/dense/multi_pattern_v2_rev.littleendian.dfa":"74471209f05754e8e20c8a0222a5877b1b15b8b8f33cd8cac89ea65f708b4aff","tests/gen/mod.rs":"043773510e02f51def43ee0c2b8b867c53ecc8638c8a9233b2ac098de9c3ac1e","tests/gen/sparse/mod.rs":"5ae1cfb46212a674118ada2f66f37b25188e84643d406b95eb4665d722344262","tests/gen/sparse/multi_pattern_v2.rs":"e00fb2a510a215460aab84573196b1f51bb65884ff494c2382534c04f6fdbfe9","tests/gen/sparse/multi_pattern_v2_fwd.bigendian.dfa":"3287956bd2003cd69653b125f82aade95d99adbb20229bfdbb4958b8877c0a0b","tests/gen/sparse/multi_pattern_v2_fwd.littleendian.dfa":"bdf285901eaaac4596380115c5bbb20ab2f42f593d8d9e9238a00ed69863f9c9","tests/gen/sparse/multi_pattern_v2_rev.bigendian.dfa":"e466dc085dd68b2d2220932a0e4d28759edd161c1fdad652240aa3825fd85268","tests/gen/sparse/multi_pattern_v2_rev.littleendian.dfa":"80358d0c26c1cc7284065b0075f5b8804d83e673a8a8c8327f93a1c1ff455399","tests/hybrid/api.rs":"4b8592c412e6ad0ce4a27ed1c1496acc92366ccb1c7ec23c6fd0596fc6ebbdfb","tests/hybrid/mod.rs":"4856a49a4d9b5e9e079c2719a5e75c32408b37e9b76cbdea057b388a3537af6d","tests/hybrid/suite.rs":"688972275c5ef38cdc5112a1e6e54ccd2bf8290008ae2b17344c6c81e17e3a5a","tests/lib.rs":"5e8a014d53097dba1f865e5e35c35a69cd12f54fad74b5c49a387f8768c30847","tests/meta/mod.rs":"d08f4ecb8ec243be584944c9602af1ed3a48a8732dd11cd573b0d1d182171303","tests/meta/suite.rs":"4c441f9df82508a5e60dd08f266183f772fc9b2b236fbf69cab87650ecf3b424","tests/nfa/mod.rs":"49055c358e38d97e42acb1602c671f97dddf24cafe089490f0e79ed208d74d9b","tests/nfa/thompson/backtrack/mod.rs":"d08f4ecb8ec243be584944c9602af1ed3a48a8732dd11cd573b0d1d182171303","tests/nfa/thompson/backtrack/suite.rs":"4e7baff70fc98b98b8297c6fd6d5818beb20343379e16cdb95bee46207ac4bd6","tests/nfa/thompson/mod.rs":"de9f5bcea1a8d1f03c85c55ad8c0747877d69e344fcd6c6886b0a402f0661291","tests/nfa/thompson/pikevm/mod.rs":"d08f4ecb8ec243be584944c9602af1ed3a48a8732dd11cd573b0d1d182171303","tests/nfa/thompson/pikevm/suite.rs":"263837ebf5b2e1906a06237982ea875386d83567e399b4ec1f669f10b1422599"},"package":"fa250384981ea14565685dea16a9ccc4d1c541a13f82b9c168572264d1df8c56"} \ No newline at end of file +{"files":{"Cargo.toml":"809aed6770b32e5a1d0b363409293750a28e1f34731f70d94181e865e1868f9c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"61db25dbf26092fc80e8db89165692e55f9fb86b14e8451ebb28303f45932254","src/dfa/accel.rs":"800dada38f7a1d0fa443821dc04a8611c6cf06ef431e517f16867a27cbb4f27d","src/dfa/automaton.rs":"565ebf211769b4710091c4a15b5733296e9fbbc2a137d6eeb1c521b7b69463a0","src/dfa/dense.rs":"73c9c7662c0b4b7901eb17632187aac10bb24e16a89a4dfe78a7bf17bc98f9f1","src/dfa/determinize.rs":"91b9f69d28bdd064aa86716fe0772e4145050fd458bb7869a28660b4f7b64872","src/dfa/minimize.rs":"b5cadb462b9f24cd4aa7a665e75fb813cd06858a92b8986c9c5ae7fd9a60dfab","src/dfa/mod.rs":"e7210af01805f2f390374cd5b40ee502f9dc7633d6a57d988dcb17dfd93864cb","src/dfa/onepass.rs":"d1b29d531545ce30167d58eb24ac15ba10bce158e73483c09f219d5971c8e83c","src/dfa/regex.rs":"f970028c874e2a156db1591bbdc3915027ffa7f47d66d5bd6e97dace5a6a3d5b","src/dfa/remapper.rs":"ca096abc0f8e45c43a2adf3a7743b8857714ae7411a623edea41cc3ce906a169","src/dfa/search.rs":"237cdb8c6239ece5fe8279c4b6209c8094502cdecc9a4e3f977e469e60fd32ec","src/dfa/sparse.rs":"c3a05451a0019850b538dfd640fb12c92ac127b8a69c55f23489bd42c1c1f289","src/dfa/special.rs":"c2e60de5b98e68c9c45aaffbc67a08f049831a764a1ed29d1d1db0fb68efdce5","src/dfa/start.rs":"46b1dbaf8e4518ddddda6bbe596621aae36f8ba694390483a22355d9d799be8e","src/hybrid/dfa.rs":"861b3602bb9ac8b10abe0eae18a2641b2145fcfc7fb22b250ed2e3a345762f4c","src/hybrid/error.rs":"ffc6e65fd9e4694a67902f3516970e3e6cd6e33a7f59a5ab2ac16f740a049d9c","src/hybrid/id.rs":"6168aad5c81c627494ba0575a24d61fd0ae7efabaaceeadb8ff28472275e2813","src/hybrid/mod.rs":"49abcf332f19d2fe87c0a729b1b7715a87794e64f411f4d2bab9d8a4331d6ace","src/hybrid/regex.rs":"9f40aa2cfa89d7a97f9c9e32cb2ae591f4b6f3d51ddec41308d99ce924e130cf","src/hybrid/search.rs":"2aae7ab24c7e6b8d1a1aa81a2f6081f949e9fa42e960fd3fea29f57db8db9f68","src/lib.rs":"4e831d41057760c5f2f1274a206fa5a42f59dbca8f98ad3e782fe0fba0d6c37f","src/macros.rs":"3e4b39252bfa471fad384160a43f113ebfec7bec46a85d16f006622881dd2081","src/meta/error.rs":"710a6813314b1b11ace1b016a827067fff8b2624d47e15c7f52043bff5ab57da","src/meta/limited.rs":"cf629b08d64cb2e1c17d196a1ad6084f733a41e1c947715d9c0ea99ba7f7657d","src/meta/literal.rs":"52da98bb30995dedd22786e4728cb84e84c6093a284168bd91196b999dd0f6ec","src/meta/mod.rs":"f3b10b96fa08efaba3e4c9b81883cf40aac6e4c1f6ae55a497a534cf5805b46d","src/meta/regex.rs":"12ec35a66b889172439c4abebde5f9fb41e85765d6613f4bf622429e83d47b3c","src/meta/reverse_inner.rs":"945d6c2d4c7538e1609dbd430a096784d22abd33db58b1ba65c9c9af45a7d3c0","src/meta/stopat.rs":"b786cd0bd21f66c6f63df2d4bc2e544cd041d548d8001b4a818be1e0f84b6747","src/meta/strategy.rs":"4ee8d21def7323105e5b1101bdb1e152c5befa870a11f2bf0fa85ffbac5a6609","src/meta/wrappers.rs":"6998ff14226905eded36697f885a8ca7508b50ffb05c4b78348ff0e9463857d5","src/nfa/mod.rs":"1a731e217ed4053714500e84e58cc127f402e4e075f7d0e5b9aea715cd52405a","src/nfa/thompson/backtrack.rs":"e9a986d71aa9b0145d9f871c92f466e1b992592d8ac87f7fde36ede2e8016324","src/nfa/thompson/builder.rs":"77bdd42a7fbdedb8d6756f0161d278e677ab1fbe622ca77115c8b506a2a6db21","src/nfa/thompson/compiler.rs":"9cc351398c2d9ce10ac11a1c285f675bc351ecb816d3f33321513dd6bfcdc335","src/nfa/thompson/error.rs":"78488c2fdb85f819f53cc30bb11c7f96169112da5dd14c351e5cc3bcccf0e10e","src/nfa/thompson/literal_trie.rs":"c2d1d09b44da4648db797386c2410cbf63337afef8cb62e6e78cf34786892a11","src/nfa/thompson/map.rs":"96cdf3195f7efb374bcb1791ef5cc12a1cde189ab90402bf01d9b46fb7796b60","src/nfa/thompson/mod.rs":"0651520debd6f023ae1a2c422806aab37f8491e5bb092e20dfdc4fe4179d695c","src/nfa/thompson/nfa.rs":"9782d44b05986370b7f948067977fb20120562e2eca0e4366e35d7d18e81a679","src/nfa/thompson/pikevm.rs":"aaf792832d1bf15fad8a8f0b2e6597170361eb3cbcb9343eb5bd242ff346d750","src/nfa/thompson/range_trie.rs":"c9614074628bb56c9d0a137c1db7e13259a6500e4a46cdc7ddc84bee8f7e928f","src/util/alphabet.rs":"94cd73ce2f4e34e0ae0a146d3efdc85478263afdfefd6dc105e0abf0ec79d82b","src/util/captures.rs":"7aee3aae2836a397c1ad6e4535e0e0d177faf2d99e61476e8fb2710f69763668","src/util/determinize/mod.rs":"32fea73cf4a7a04238c3d3b09ea7afc7fd7c85e87dc115c6152f464ab88bddb2","src/util/determinize/state.rs":"2a0082d5cd2bd47ab75c3f04488655a3c47f1f75075b5d6f9b6e4eeb8980823e","src/util/empty.rs":"13ec7d6cbd1520db5b4c1dae294f4419fa88d39d2bfc16f4ef258473d609f91c","src/util/escape.rs":"5b2731b41a55cb50ab688132bb5640dbd51f14f141adaa864b9db7f0aa092c74","src/util/int.rs":"b7eec0a6cab0798ba66707988fce3ecfc841b93418028a7b1408c5d0f6271351","src/util/interpolate.rs":"5e4e6b6fb6e5a7603e393bf05c609735d86a7d1f54c2436e42111b4e1409b6dd","src/util/iter.rs":"58ae97b4156d7160a46b909f4635d88d10354d9d892d2fcb4c5e18e24cf38f14","src/util/lazy.rs":"e489a96fce952e9d196fd3f5564cf8ea3374eb4aef630ff8f12d82f194ed4336","src/util/look.rs":"e7a5a51f8ed70c2f97edaf3dfbe8859de37b570341447634c6028cb89ff412d7","src/util/memchr.rs":"573109ce4983907083ae0b29a084a324b9b53da369b4d96f7f3a21fd5c8eb5c9","src/util/mod.rs":"16c5fd72263d3a4df994111b81aca36da17f591f4853f21a6a906ac725843f97","src/util/pool.rs":"5e231307962d0918888f98fd1a2bf51c2fc08bf910fa472762136f24cd040cf2","src/util/prefilter/aho_corasick.rs":"7960075f547ee4145420cdc4a8043dc988136e1dd4c34618baae2d641e7f655a","src/util/prefilter/byteset.rs":"1c80fa432acc23223a75a5181e37c40034764dffe42410e4b77af6f24f48bd5c","src/util/prefilter/memchr.rs":"36c6fe6354b2e729db6830166dd4862e439bc48c9e59258d88e4b6c5654e20ef","src/util/prefilter/memmem.rs":"6f6ed9450b14abf3e4a33d395337e51fbaa9743a0a16aac0009f7680aa60c500","src/util/prefilter/mod.rs":"68def6a1f5bd60814904f9f5ab46df9bccfa5da11c1ed60daa826ca7679c33cc","src/util/prefilter/teddy.rs":"6b3ea55b3bf1ed9b07020d635e67f9c7ff34f7859ce1e5ef5922d56fe1e921e3","src/util/primitives.rs":"8a9cc19ef2e1ab183943cdc2d2f095b02252476e32b7e9fff4a06a251749b068","src/util/search.rs":"66bf320ebbe403c119a966f3dfbd53178de0ceebd2ca1922f1ddbb79aed36837","src/util/sparse_set.rs":"3d4aa30b6aa9fc875d36506487a5095dbe8ed528b89e4146a65c7e7497520a4d","src/util/start.rs":"8d2fe005698c0bd3680a0dbfc4a34eebfe2f51081ec1584968383ac4c86fd5fe","src/util/syntax.rs":"720ac0d6600fad33f5967b5afe4e3de2096b857e4cda6fa16ba93b10a8230cab","src/util/unicode_data/mod.rs":"54c3e10bbc393e9881bfac3295815b160f59e69e2056bc29ee7cf0addd8e3cf7","src/util/unicode_data/perl_word.rs":"2e1a5d889598bd4e73af17d3a9f7d6b4cf2f6ab24920a5336e496bb255281e56","src/util/utf8.rs":"7a068009fdf07e693e521b1f0264725c0e6118dbe1eab55da9d0eab21785fcc1","src/util/wire.rs":"bfdf52615c516b6c07db3ce9c333ea61fdc535bd0b79560bbd7f6864ab83946e","test":"39d79ce3532c31a51c0be89a2939816fad0e4868d2b03992c202cbe64dce9f6c","tests/dfa/api.rs":"cc28e366b6bcbfcf379265acd492a92c62743c3f20e7a2b273019679aa9e1291","tests/dfa/mod.rs":"924d8fff500b9b7b140082623023e78007058a87323151cd8e361462945e4f16","tests/dfa/onepass/mod.rs":"d08f4ecb8ec243be584944c9602af1ed3a48a8732dd11cd573b0d1d182171303","tests/dfa/onepass/suite.rs":"6d63ec5469e6876656ae607cdbe07e6a4e17ace7836b67435763c9b1d233438a","tests/dfa/regression.rs":"ebcf2645290286aa7531eb2b7951385e5ed8167532437aeca2ad2049768fd796","tests/dfa/suite.rs":"cf08499bc8838d2ff16ea9b20b07ad03c9b89d6efe093f081e2982a21ea6d666","tests/fuzz/dense.rs":"3e1099a0cce61e85abc0ad81bc592e85f497f159ef0e5d1d32bac1936aa6f20c","tests/fuzz/mod.rs":"043773510e02f51def43ee0c2b8b867c53ecc8638c8a9233b2ac098de9c3ac1e","tests/fuzz/sparse.rs":"ba61db4927ab28953037a4b20317399c86d01b4d774e46c020ade19029215e25","tests/fuzz/testdata/deserialize_dense_crash-9486fb7c8a93b12c12a62166b43d31640c0208a9":"8961279a8237c3e318452024dd971b1d5a26b058260c297382a74daca1b7f0d1","tests/fuzz/testdata/deserialize_dense_minimized-from-9486fb7c8a93b12c12a62166b43d31640c0208a9":"c2d52e3dea78d3f159b5b521d433358a7fee45ce20ed1545067d461f45ef66b8","tests/fuzz/testdata/deserialize_sparse_crash-0da59c0434eaf35e5a6b470fa9244bb79c72b000":"5b2d273023de3fb04037eaf2e6b4f51cced4c5a08d2e6b44e4be540774f939b9","tests/fuzz/testdata/deserialize_sparse_crash-18cfc246f2ddfc3dfc92b0c7893178c7cf65efa9":"e2e22e2f46a9a75b5c876476442276cf675fe244c5cf918789e4f6b14078fbd9","tests/fuzz/testdata/deserialize_sparse_crash-61fd8e3003bf9d99f6c1e5a8488727eefd234b98":"24a12712e1f2ba0a40b5782707908a74dd19941dc372ef525d65a7134f91988c","tests/fuzz/testdata/deserialize_sparse_crash-a1b839d899ced76d5d7d0f78f9edb7a421505838":"a97f39b2febf9c73535681f7a86201e4b06d5a1ffcf135299c96c1cabfa9f6c4","tests/fuzz/testdata/deserialize_sparse_crash-c383ae07ec5e191422eadc492117439011816570":"44fe3ef878d35e2d51c2c17ff89bbbe3a4650e09d0cbbd48625c0f5e4dd0848b","tests/fuzz/testdata/deserialize_sparse_crash-d07703ceb94b10dcd9e4acb809f2051420449e2b":"d5534be36653b4af6cb94a7c63be58869bb8c204c5c63d67a4d6c986b44bb2e1","tests/fuzz/testdata/deserialize_sparse_crash-dbb8172d3984e7e7d03f4b5f8bb86ecd1460eff9":"77b844898610560afa09f2b8de73a85a0ba9a3b8cee4ff1bbf26b8c97ad4e8a2","tests/gen/README.md":"c3bfdf2f9ced501dd5bd75d01509a34e503efb2dff2f5f7b260580dde5519ed4","tests/gen/dense/mod.rs":"5ae1cfb46212a674118ada2f66f37b25188e84643d406b95eb4665d722344262","tests/gen/dense/multi_pattern_v2.rs":"29b1e9a799adecbdbe7cd05e9748f664c2b915b10b1d2f5d36cfb6453826d1d2","tests/gen/dense/multi_pattern_v2_fwd.bigendian.dfa":"8421d5a1bfc0b6c3bdc8fc90dff591a046b0aaf8e06ef7de7cc293004a35d061","tests/gen/dense/multi_pattern_v2_fwd.littleendian.dfa":"dcf2fd5fd49f5f53cf1ec66f61623402f39401cb3aea30d6677b98bb1e9541bf","tests/gen/dense/multi_pattern_v2_rev.bigendian.dfa":"73c4f20d984e544dfa4cf05f3009d0a9b52fa84bc97b501ea0ccd179e2def4bc","tests/gen/dense/multi_pattern_v2_rev.littleendian.dfa":"74471209f05754e8e20c8a0222a5877b1b15b8b8f33cd8cac89ea65f708b4aff","tests/gen/mod.rs":"043773510e02f51def43ee0c2b8b867c53ecc8638c8a9233b2ac098de9c3ac1e","tests/gen/sparse/mod.rs":"5ae1cfb46212a674118ada2f66f37b25188e84643d406b95eb4665d722344262","tests/gen/sparse/multi_pattern_v2.rs":"e00fb2a510a215460aab84573196b1f51bb65884ff494c2382534c04f6fdbfe9","tests/gen/sparse/multi_pattern_v2_fwd.bigendian.dfa":"3287956bd2003cd69653b125f82aade95d99adbb20229bfdbb4958b8877c0a0b","tests/gen/sparse/multi_pattern_v2_fwd.littleendian.dfa":"bdf285901eaaac4596380115c5bbb20ab2f42f593d8d9e9238a00ed69863f9c9","tests/gen/sparse/multi_pattern_v2_rev.bigendian.dfa":"e466dc085dd68b2d2220932a0e4d28759edd161c1fdad652240aa3825fd85268","tests/gen/sparse/multi_pattern_v2_rev.littleendian.dfa":"80358d0c26c1cc7284065b0075f5b8804d83e673a8a8c8327f93a1c1ff455399","tests/hybrid/api.rs":"4b8592c412e6ad0ce4a27ed1c1496acc92366ccb1c7ec23c6fd0596fc6ebbdfb","tests/hybrid/mod.rs":"4856a49a4d9b5e9e079c2719a5e75c32408b37e9b76cbdea057b388a3537af6d","tests/hybrid/suite.rs":"688972275c5ef38cdc5112a1e6e54ccd2bf8290008ae2b17344c6c81e17e3a5a","tests/lib.rs":"5e8a014d53097dba1f865e5e35c35a69cd12f54fad74b5c49a387f8768c30847","tests/meta/mod.rs":"d08f4ecb8ec243be584944c9602af1ed3a48a8732dd11cd573b0d1d182171303","tests/meta/suite.rs":"4c441f9df82508a5e60dd08f266183f772fc9b2b236fbf69cab87650ecf3b424","tests/nfa/mod.rs":"49055c358e38d97e42acb1602c671f97dddf24cafe089490f0e79ed208d74d9b","tests/nfa/thompson/backtrack/mod.rs":"d08f4ecb8ec243be584944c9602af1ed3a48a8732dd11cd573b0d1d182171303","tests/nfa/thompson/backtrack/suite.rs":"4e7baff70fc98b98b8297c6fd6d5818beb20343379e16cdb95bee46207ac4bd6","tests/nfa/thompson/mod.rs":"de9f5bcea1a8d1f03c85c55ad8c0747877d69e344fcd6c6886b0a402f0661291","tests/nfa/thompson/pikevm/mod.rs":"d08f4ecb8ec243be584944c9602af1ed3a48a8732dd11cd573b0d1d182171303","tests/nfa/thompson/pikevm/suite.rs":"263837ebf5b2e1906a06237982ea875386d83567e399b4ec1f669f10b1422599"},"package":"fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/regex-automata/Cargo.toml temporalio-1.3.0/vendor/regex-automata/Cargo.toml --- temporalio-1.3.0/vendor/regex-automata/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2021" name = "regex-automata" -version = "0.3.0" +version = "0.3.6" authors = [ "The Rust Project Developers", "Andrew Gallant ", @@ -54,7 +54,7 @@ default-features = false [dependencies.regex-syntax] -version = "0.7.0" +version = "0.7.4" optional = true default-features = false diff -Nru temporalio-1.3.0/vendor/regex-automata/src/dfa/automaton.rs temporalio-1.3.0/vendor/regex-automata/src/dfa/automaton.rs --- temporalio-1.3.0/vendor/regex-automata/src/dfa/automaton.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/dfa/automaton.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1074,7 +1074,7 @@ /// // encoding of any Unicode scalar value except for 'a', 'b' or 'c'. /// // That translates to a much more complicated DFA, and also /// // inhibits the 'accelerator' optimization that we are trying to - /// // demostrate in this example. + /// // demonstrate in this example. /// .syntax(syntax::Config::new().unicode(false).utf8(false)) /// .build("[^abc]+a")?; /// diff -Nru temporalio-1.3.0/vendor/regex-automata/src/dfa/dense.rs temporalio-1.3.0/vendor/regex-automata/src/dfa/dense.rs --- temporalio-1.3.0/vendor/regex-automata/src/dfa/dense.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/dfa/dense.rs 2023-10-30 19:40:00.000000000 +0000 @@ -879,6 +879,7 @@ /// /// ``` /// # if cfg!(miri) { return Ok(()); } // miri takes too long + /// # if !cfg!(target_pointer_width = "64") { return Ok(()); } // see #1039 /// use regex_automata::{dfa::{dense, Automaton}, Input}; /// /// // 600KB isn't enough! @@ -912,6 +913,7 @@ /// /// ``` /// # if cfg!(miri) { return Ok(()); } // miri takes too long + /// # if !cfg!(target_pointer_width = "64") { return Ok(()); } // see #1039 /// use regex_automata::{ /// dfa::{dense, Automaton, StartKind}, /// Anchored, Input, @@ -1168,7 +1170,10 @@ .clone() // We can always forcefully disable captures because DFAs do not // support them. - .configure(thompson::Config::new().captures(false)) + .configure( + thompson::Config::new() + .which_captures(thompson::WhichCaptures::None), + ) .build_many(patterns) .map_err(BuildError::nfa)?; self.build_from_nfa(&nfa) @@ -2109,7 +2114,7 @@ /// let mut buf = vec![0; original_dfa.write_to_len()]; /// // This is guaranteed to succeed, because the only serialization error /// // that can occur is when the provided buffer is too small. But - /// // write_to_len guarantees a correct sie. + /// // write_to_len guarantees a correct size. /// let written = original_dfa.write_to_native_endian(&mut buf).unwrap(); /// // But this is not guaranteed to succeed! In particular, /// // deserialization requires proper alignment for &[u32], but our buffer @@ -3012,6 +3017,7 @@ /// Returns the index of the match state for the given ID. If the /// given ID does not correspond to a match state, then this may /// panic or produce an incorrect result. + #[cfg_attr(feature = "perf-inline", inline(always))] fn match_state_index(&self, id: StateID) -> usize { debug_assert!(self.is_match_state(id)); // This is one of the places where we rely on the fact that match @@ -3336,7 +3342,7 @@ /// /// # Safety /// - /// This routine is not safe because it does not check the valdity of the + /// This routine is not safe because it does not check the validity of the /// transition table itself. In particular, the transition table can be /// quite large, so checking its validity can be somewhat expensive. An /// invalid transition table is not safe because other code may rely on the @@ -3929,7 +3935,7 @@ /// /// # Safety /// - /// This routine is not safe because it does not check the valdity of the + /// This routine is not safe because it does not check the validity of the /// starting state IDs themselves. In particular, the number of starting /// IDs can be of variable length, so it's possible that checking their /// validity cannot be done in constant time. An invalid starting state @@ -4599,6 +4605,7 @@ /// /// The match index is the index of the pattern ID for the given state. /// The index must be less than `self.pattern_len(state_index)`. + #[cfg_attr(feature = "perf-inline", inline(always))] fn pattern_id(&self, state_index: usize, match_index: usize) -> PatternID { self.pattern_id_slice(state_index)[match_index] } @@ -4607,6 +4614,7 @@ /// /// The match state index is the state index minus the state index of the /// first match state in the DFA. + #[cfg_attr(feature = "perf-inline", inline(always))] fn pattern_len(&self, state_index: usize) -> usize { self.slices()[state_index * 2 + 1].as_usize() } @@ -4615,6 +4623,7 @@ /// /// The match state index is the state index minus the state index of the /// first match state in the DFA. + #[cfg_attr(feature = "perf-inline", inline(always))] fn pattern_id_slice(&self, state_index: usize) -> &[PatternID] { let start = self.slices()[state_index * 2].as_usize(); let len = self.pattern_len(state_index); @@ -4622,17 +4631,20 @@ } /// Returns the pattern ID offset slice of u32 as a slice of PatternID. + #[cfg_attr(feature = "perf-inline", inline(always))] fn slices(&self) -> &[PatternID] { wire::u32s_to_pattern_ids(self.slices.as_ref()) } /// Returns the total number of match states. + #[cfg_attr(feature = "perf-inline", inline(always))] fn len(&self) -> usize { assert_eq!(0, self.slices().len() % 2); self.slices().len() / 2 } /// Returns the pattern ID slice of u32 as a slice of PatternID. + #[cfg_attr(feature = "perf-inline", inline(always))] fn pattern_ids(&self) -> &[PatternID] { wire::u32s_to_pattern_ids(self.pattern_ids.as_ref()) } diff -Nru temporalio-1.3.0/vendor/regex-automata/src/dfa/determinize.rs temporalio-1.3.0/vendor/regex-automata/src/dfa/determinize.rs --- temporalio-1.3.0/vendor/regex-automata/src/dfa/determinize.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/dfa/determinize.rs 2023-10-30 19:40:00.000000000 +0000 @@ -539,7 +539,7 @@ } let state = builder.to_state(); // States use reference counting internally, so we only need to count - // their memroy usage once. + // their memory usage once. self.memory_usage_state += state.memory_usage(); self.builder_states.push(state.clone()); self.cache.insert(state, id); diff -Nru temporalio-1.3.0/vendor/regex-automata/src/dfa/minimize.rs temporalio-1.3.0/vendor/regex-automata/src/dfa/minimize.rs --- temporalio-1.3.0/vendor/regex-automata/src/dfa/minimize.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/dfa/minimize.rs 2023-10-30 19:40:00.000000000 +0000 @@ -152,7 +152,7 @@ // At this point, we now have a minimal partitioning of states, where // each partition is an equivalence class of DFA states. Now we need to - // use this partioning to update the DFA to only contain one state for + // use this partitioning to update the DFA to only contain one state for // each partition. // Create a map from DFA state ID to the representative ID of the diff -Nru temporalio-1.3.0/vendor/regex-automata/src/dfa/mod.rs temporalio-1.3.0/vendor/regex-automata/src/dfa/mod.rs --- temporalio-1.3.0/vendor/regex-automata/src/dfa/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/dfa/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ /*! -A module for building and searching with determinstic finite automata (DFAs). +A module for building and searching with deterministic finite automata (DFAs). Like other modules in this crate, DFAs support a rich regex syntax with Unicode features. DFAs also have extensive options for configuring the best space vs @@ -267,7 +267,7 @@ when they contain large Unicode character classes. For example, on my system, compiling `\w{50}` takes about 1 second and almost 15MB of memory! (Compiling a sparse regex takes about the same time but only uses about 1.2MB of -memory.) Conversly, compiling the same regex without Unicode support, e.g., +memory.) Conversely, compiling the same regex without Unicode support, e.g., `(?-u)\w{50}`, takes under 1 millisecond and about 15KB of memory. For this reason, you should only use Unicode character classes if you absolutely need them! (They are enabled by default though.) diff -Nru temporalio-1.3.0/vendor/regex-automata/src/dfa/regex.rs temporalio-1.3.0/vendor/regex-automata/src/dfa/regex.rs --- temporalio-1.3.0/vendor/regex-automata/src/dfa/regex.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/dfa/regex.rs 2023-10-30 19:40:00.000000000 +0000 @@ -590,7 +590,7 @@ /// /// The type parameters are as follows: /// -/// * `A` represents the type of the underyling DFA that implements the +/// * `A` represents the type of the underlying DFA that implements the /// [`Automaton`] trait. /// /// The lifetime parameters are as follows: diff -Nru temporalio-1.3.0/vendor/regex-automata/src/dfa/start.rs temporalio-1.3.0/vendor/regex-automata/src/dfa/start.rs --- temporalio-1.3.0/vendor/regex-automata/src/dfa/start.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/dfa/start.rs 2023-10-30 19:40:00.000000000 +0000 @@ -62,10 +62,12 @@ size_of::() } + #[cfg_attr(feature = "perf-inline", inline(always))] pub(crate) fn has_unanchored(&self) -> bool { matches!(*self, StartKind::Both | StartKind::Unanchored) } + #[cfg_attr(feature = "perf-inline", inline(always))] pub(crate) fn has_anchored(&self) -> bool { matches!(*self, StartKind::Both | StartKind::Anchored) } diff -Nru temporalio-1.3.0/vendor/regex-automata/src/hybrid/dfa.rs temporalio-1.3.0/vendor/regex-automata/src/hybrid/dfa.rs --- temporalio-1.3.0/vendor/regex-automata/src/hybrid/dfa.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/hybrid/dfa.rs 2023-10-30 19:40:00.000000000 +0000 @@ -32,7 +32,7 @@ }, }; -/// The mininum number of states that a lazy DFA's cache size must support. +/// The minimum number of states that a lazy DFA's cache size must support. /// /// This is checked at time of construction to ensure that at least some small /// number of states can fit in the given capacity allotment. If we can't fit @@ -2332,7 +2332,7 @@ "lazy DFA cache has been cleared {} times, \ which exceeds the limit of {}, \ AND its bytes searched per state is less \ - than the configured mininum of {}, \ + than the configured minimum of {}, \ therefore lazy DFA is giving up \ (bytes searched since cache clear = {}, \ number of states = {})", @@ -2348,7 +2348,7 @@ "lazy DFA cache has been cleared {} times, \ which exceeds the limit of {}, \ AND its bytes searched per state is greater \ - than the configured mininum of {}, \ + than the configured minimum of {}, \ therefore lazy DFA is continuing! \ (bytes searched since cache clear = {}, \ number of states = {})", @@ -2771,7 +2771,7 @@ /// is stored in 'Saved' since it may have changed. ToSave { id: LazyStateID, state: State }, /// An ID that of a state that has been persisted through a lazy DFA - /// cache clearing. The ID recorded here corresonds to an ID that was + /// cache clearing. The ID recorded here corresponds to an ID that was /// once marked as ToSave. The IDs are likely not equivalent even though /// the states they point to are. Saved(LazyStateID), @@ -3973,7 +3973,10 @@ .clone() // We can always forcefully disable captures because DFAs do not // support them. - .configure(thompson::Config::new().captures(false)) + .configure( + thompson::Config::new() + .which_captures(thompson::WhichCaptures::None), + ) .build_many(patterns) .map_err(BuildError::nfa)?; self.build_from_nfa(nfa) diff -Nru temporalio-1.3.0/vendor/regex-automata/src/hybrid/mod.rs temporalio-1.3.0/vendor/regex-automata/src/hybrid/mod.rs --- temporalio-1.3.0/vendor/regex-automata/src/hybrid/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/hybrid/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ /*! -A module for building and searching with lazy determinstic finite automata +A module for building and searching with lazy deterministic finite automata (DFAs). Like other modules in this crate, lazy DFAs support a rich regex syntax with diff -Nru temporalio-1.3.0/vendor/regex-automata/src/hybrid/search.rs temporalio-1.3.0/vendor/regex-automata/src/hybrid/search.rs --- temporalio-1.3.0/vendor/regex-automata/src/hybrid/search.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/hybrid/search.rs 2023-10-30 19:40:00.000000000 +0000 @@ -188,7 +188,7 @@ // mentioned above was a pretty big pessimization in some other // cases. Namely, it resulted in too much ping-ponging into and out // of the loop, which resulted in nearly ~2x regressions in search - // time when compared to the originaly lazy DFA in the regex crate. + // time when compared to the originally lazy DFA in the regex crate. // So I've removed the second loop unrolling that targets the // self-transition case. let mut prev_sid = sid; diff -Nru temporalio-1.3.0/vendor/regex-automata/src/lib.rs temporalio-1.3.0/vendor/regex-automata/src/lib.rs --- temporalio-1.3.0/vendor/regex-automata/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -330,7 +330,7 @@ There are other ways for regex engines to fail in this crate, but the above two should represent the general theme of failures one can find. Dealing -with these failures is, in part, one the reaponsibilities of the [meta regex +with these failures is, in part, one the responsibilities of the [meta regex engine](meta). Notice, for example, that the meta regex engine exposes an API that never returns an error nor panics. It carefully manages all of the ways in which the regex engines can fail and either avoids the predictable ones diff -Nru temporalio-1.3.0/vendor/regex-automata/src/meta/error.rs temporalio-1.3.0/vendor/regex-automata/src/meta/error.rs --- temporalio-1.3.0/vendor/regex-automata/src/meta/error.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/meta/error.rs 2023-10-30 19:40:00.000000000 +0000 @@ -120,7 +120,7 @@ /// /// The first is one where potential quadratic behavior has been detected. /// In this case, whatever optimization that led to this behavior should be -/// stopped, and the next best strategy shouldbe used. +/// stopped, and the next best strategy should be used. /// /// The second indicates that the underlying regex engine has failed for some /// reason. This usually occurs because either a lazy DFA's cache has become @@ -194,7 +194,7 @@ /// Note that this has convenient `From` impls that will automatically /// convert a `MatchError` into this error. This works because the meta /// regex engine internals guarantee that errors like `HaystackTooLong` and -/// `UnsupportAnchored` will never occur. The only errors left are `Quit` and +/// `UnsupportedAnchored` will never occur. The only errors left are `Quit` and /// `GaveUp`, which both correspond to this "failure" error. #[derive(Debug)] pub(crate) struct RetryFailError { diff -Nru temporalio-1.3.0/vendor/regex-automata/src/meta/limited.rs temporalio-1.3.0/vendor/regex-automata/src/meta/limited.rs --- temporalio-1.3.0/vendor/regex-automata/src/meta/limited.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/meta/limited.rs 2023-10-30 19:40:00.000000000 +0000 @@ -88,7 +88,41 @@ return Err(RetryError::Quadratic(RetryQuadraticError::new())); } } + let was_dead = dfa.is_dead_state(sid); dfa_eoi_rev(dfa, input, &mut sid, &mut mat)?; + // If we reach the beginning of the search and we could otherwise still + // potentially keep matching if there was more to match, then we actually + // return an error to indicate giving up on this optimization. Why? Because + // we can't prove that the real match begins at where we would report it. + // + // This only happens when all of the following are true: + // + // 1) We reach the starting point of our search span. + // 2) The match we found is before the starting point. + // 3) The FSM reports we could possibly find a longer match. + // + // We need (1) because otherwise the search stopped before the starting + // point and there is no possible way to find a more leftmost position. + // + // We need (2) because if the match found has an offset equal to the minimum + // possible offset, then there is no possible more leftmost match. + // + // We need (3) because if the FSM couldn't continue anyway (i.e., it's in + // a dead state), then we know we couldn't find anything more leftmost + // than what we have. (We have to check the state we were in prior to the + // EOI transition since the EOI transition will usually bring us to a dead + // state by virtue of it represents the end-of-input.) + if at == input.start() + && mat.map_or(false, |m| m.offset() > input.start()) + && !was_dead + { + trace!( + "reached beginning of search at offset {} without hitting \ + a dead state, quitting to avoid potential false positive match", + at, + ); + return Err(RetryError::Quadratic(RetryQuadraticError::new())); + } Ok(mat) } @@ -140,7 +174,20 @@ return Err(RetryError::Quadratic(RetryQuadraticError::new())); } } + let was_dead = sid.is_dead(); hybrid_eoi_rev(dfa, cache, input, &mut sid, &mut mat)?; + // See the comments in the full DFA routine above for why we need this. + if at == input.start() + && mat.map_or(false, |m| m.offset() > input.start()) + && !was_dead + { + trace!( + "reached beginning of search at offset {} without hitting \ + a dead state, quitting to avoid potential false positive match", + at, + ); + return Err(RetryError::Quadratic(RetryQuadraticError::new())); + } Ok(mat) } diff -Nru temporalio-1.3.0/vendor/regex-automata/src/meta/regex.rs temporalio-1.3.0/vendor/regex-automata/src/meta/regex.rs --- temporalio-1.3.0/vendor/regex-automata/src/meta/regex.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/meta/regex.rs 2023-10-30 19:40:00.000000000 +0000 @@ -16,6 +16,7 @@ strategy::{self, Strategy}, wrappers, }, + nfa::thompson::WhichCaptures, util::{ captures::{Captures, GroupInfo}, iter, @@ -528,7 +529,14 @@ #[inline] pub fn is_match<'h, I: Into>>(&self, input: I) -> bool { let input = input.into().earliest(true); - self.search_half(&input).is_some() + if self.imp.info.is_impossible(&input) { + return false; + } + let mut guard = self.pool.get(); + let result = self.imp.strat.is_match(&mut guard, &input); + // See 'Regex::search' for why we put the guard back explicitly. + PoolGuard::put(guard); + result } /// Executes a leftmost search and returns the first match that is found, @@ -2277,7 +2285,7 @@ /// explicitly separated from the the core regex object (such as a /// [`thompson::NFA`](crate::nfa::thompson::NFA)) so that the read-only regex /// object can be shared across multiple threads simultaneously without any -/// synchronization. Conversly, a `Cache` must either be duplicated if using +/// synchronization. Conversely, a `Cache` must either be duplicated if using /// the same `Regex` from multiple threads, or else there must be some kind of /// synchronization that guarantees exclusive access while it's in use by one /// thread. @@ -2429,6 +2437,7 @@ utf8_empty: Option, autopre: Option, pre: Option>, + which_captures: Option, nfa_size_limit: Option>, onepass_size_limit: Option>, hybrid_cache_capacity: Option, @@ -2619,6 +2628,77 @@ Config { pre: Some(pre), ..self } } + /// Configures what kinds of groups are compiled as "capturing" in the + /// underlying regex engine. + /// + /// This is set to [`WhichCaptures::All`] by default. Callers may wish to + /// use [`WhichCaptures::Implicit`] in cases where one wants avoid the + /// overhead of capture states for explicit groups. + /// + /// Note that another approach to avoiding the overhead of capture groups + /// is by using non-capturing groups in the regex pattern. That is, + /// `(?:a)` instead of `(a)`. This option is useful when you can't control + /// the concrete syntax but know that you don't need the underlying capture + /// states. For example, using `WhichCaptures::Implicit` will behave as if + /// all explicit capturing groups in the pattern were non-capturing. + /// + /// Setting this to `WhichCaptures::None` is usually not the right thing to + /// do. When no capture states are compiled, some regex engines (such as + /// the `PikeVM`) won't be able to report match offsets. This will manifest + /// as no match being found. + /// + /// # Example + /// + /// This example demonstrates how the results of capture groups can change + /// based on this option. First we show the default (all capture groups in + /// the pattern are capturing): + /// + /// ``` + /// use regex_automata::{meta::Regex, Match, Span}; + /// + /// let re = Regex::new(r"foo([0-9]+)bar")?; + /// let hay = "foo123bar"; + /// + /// let mut caps = re.create_captures(); + /// re.captures(hay, &mut caps); + /// assert_eq!(Some(Span::from(0..9)), caps.get_group(0)); + /// assert_eq!(Some(Span::from(3..6)), caps.get_group(1)); + /// + /// Ok::<(), Box>(()) + /// ``` + /// + /// And now we show the behavior when we only include implicit capture + /// groups. In this case, we can only find the overall match span, but the + /// spans of any other explicit group don't exist because they are treated + /// as non-capturing. (In effect, when `WhichCaptures::Implicit` is used, + /// there is no real point in using [`Regex::captures`] since it will never + /// be able to report more information than [`Regex::find`].) + /// + /// ``` + /// use regex_automata::{ + /// meta::Regex, + /// nfa::thompson::WhichCaptures, + /// Match, + /// Span, + /// }; + /// + /// let re = Regex::builder() + /// .configure(Regex::config().which_captures(WhichCaptures::Implicit)) + /// .build(r"foo([0-9]+)bar")?; + /// let hay = "foo123bar"; + /// + /// let mut caps = re.create_captures(); + /// re.captures(hay, &mut caps); + /// assert_eq!(Some(Span::from(0..9)), caps.get_group(0)); + /// assert_eq!(None, caps.get_group(1)); + /// + /// Ok::<(), Box>(()) + /// ``` + pub fn which_captures(mut self, which_captures: WhichCaptures) -> Config { + self.which_captures = Some(which_captures); + self + } + /// Sets the size limit, in bytes, to enforce on the construction of every /// NFA build by the meta regex engine. /// @@ -2983,6 +3063,14 @@ self.pre.as_ref().unwrap_or(&None).as_ref() } + /// Returns the capture configuration, as set by + /// [`Config::which_captures`]. + /// + /// If it was not explicitly set, then a default value is returned. + pub fn get_which_captures(&self) -> WhichCaptures { + self.which_captures.unwrap_or(WhichCaptures::All) + } + /// Returns NFA size limit, as set by [`Config::nfa_size_limit`]. /// /// If it was not explicitly set, then a default value is returned. @@ -3126,6 +3214,7 @@ utf8_empty: o.utf8_empty.or(self.utf8_empty), autopre: o.autopre.or(self.autopre), pre: o.pre.or_else(|| self.pre.clone()), + which_captures: o.which_captures.or(self.which_captures), nfa_size_limit: o.nfa_size_limit.or(self.nfa_size_limit), onepass_size_limit: o .onepass_size_limit diff -Nru temporalio-1.3.0/vendor/regex-automata/src/meta/strategy.rs temporalio-1.3.0/vendor/regex-automata/src/meta/strategy.rs --- temporalio-1.3.0/vendor/regex-automata/src/meta/strategy.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/meta/strategy.rs 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ regex::{Cache, RegexInfo}, reverse_inner, wrappers, }, - nfa::thompson::{self, NFA}, + nfa::thompson::{self, WhichCaptures, NFA}, util::{ captures::{Captures, GroupInfo}, look::LookMatcher, @@ -58,6 +58,8 @@ input: &Input<'_>, ) -> Option; + fn is_match(&self, cache: &mut Cache, input: &Input<'_>) -> bool; + fn search_slots( &self, cache: &mut Cache, @@ -399,6 +401,10 @@ self.search(cache, input).map(|m| HalfMatch::new(m.pattern(), m.end())) } + fn is_match(&self, cache: &mut Cache, input: &Input<'_>) -> bool { + self.search(cache, input).is_some() + } + fn search_slots( &self, cache: &mut Cache, @@ -452,7 +458,7 @@ .utf8(info.config().get_utf8_empty()) .nfa_size_limit(info.config().get_nfa_size_limit()) .shrink(false) - .captures(true) + .which_captures(info.config().get_which_captures()) .look_matcher(lookm); let nfa = thompson::Compiler::new() .configure(thompson_config.clone()) @@ -499,7 +505,10 @@ // useful with capturing groups in reverse. And of course, // the lazy DFA ignores capturing groups in all cases. .configure( - thompson_config.clone().captures(false).reverse(true), + thompson_config + .clone() + .which_captures(WhichCaptures::None) + .reverse(true), ) .build_many_from_hir(hirs) .map_err(BuildError::nfa)?; @@ -620,6 +629,29 @@ } } + fn is_match_nofail(&self, cache: &mut Cache, input: &Input<'_>) -> bool { + if let Some(ref e) = self.onepass.get(input) { + trace!( + "using OnePass for is-match search at {:?}", + input.get_span() + ); + e.search_slots(&mut cache.onepass, input, &mut []).is_some() + } else if let Some(ref e) = self.backtrack.get(input) { + trace!( + "using BoundedBacktracker for is-match search at {:?}", + input.get_span() + ); + e.is_match(&mut cache.backtrack, input) + } else { + trace!( + "using PikeVM for is-match search at {:?}", + input.get_span() + ); + let e = self.pikevm.get(); + e.is_match(&mut cache.pikevm, input) + } + } + fn is_capture_search_needed(&self, slots_len: usize) -> bool { slots_len > self.nfa.group_info().implicit_slot_len() } @@ -700,7 +732,7 @@ // The main difference with 'search' is that if we're using a DFA, we // can use a single forward scan without needing to run the reverse // DFA. - return if let Some(e) = self.dfa.get(input) { + if let Some(e) = self.dfa.get(input) { trace!("using full DFA for half search at {:?}", input.get_span()); match e.try_search_half_fwd(input) { Ok(x) => x, @@ -720,7 +752,38 @@ } } else { self.search_half_nofail(cache, input) - }; + } + } + + #[cfg_attr(feature = "perf-inline", inline(always))] + fn is_match(&self, cache: &mut Cache, input: &Input<'_>) -> bool { + if let Some(e) = self.dfa.get(input) { + trace!( + "using full DFA for is-match search at {:?}", + input.get_span() + ); + match e.try_search_half_fwd(input) { + Ok(x) => x.is_some(), + Err(_err) => { + trace!("full DFA half search failed: {}", _err); + self.is_match_nofail(cache, input) + } + } + } else if let Some(e) = self.hybrid.get(input) { + trace!( + "using lazy DFA for is-match search at {:?}", + input.get_span() + ); + match e.try_search_half_fwd(&mut cache.hybrid, input) { + Ok(x) => x.is_some(), + Err(_err) => { + trace!("lazy DFA half search failed: {}", _err); + self.is_match_nofail(cache, input) + } + } + } else { + self.is_match_nofail(cache, input) + } } #[cfg_attr(feature = "perf-inline", inline(always))] @@ -845,6 +908,14 @@ ); return Err(core); } + // Note that the caller can still request an anchored search even when + // the regex isn't anchored at the start. We detect that case in the + // search routines below and just fallback to the core engine. This + // is fine because both searches are anchored. It's just a matter of + // picking one. Falling back to the core engine is a little simpler, + // since if we used the reverse anchored approach, we'd have to add an + // extra check to ensure the match reported starts at the place where + // the caller requested the search to start. if core.info.is_always_anchored_start() { debug!( "skipping reverse anchored optimization because \ @@ -930,6 +1001,9 @@ #[cfg_attr(feature = "perf-inline", inline(always))] fn search(&self, cache: &mut Cache, input: &Input<'_>) -> Option { + if input.get_anchored().is_anchored() { + return self.core.search(cache, input); + } match self.try_search_half_anchored_rev(cache, input) { Err(_err) => { trace!("fast reverse anchored search failed: {}", _err); @@ -948,6 +1022,9 @@ cache: &mut Cache, input: &Input<'_>, ) -> Option { + if input.get_anchored().is_anchored() { + return self.core.search_half(cache, input); + } match self.try_search_half_anchored_rev(cache, input) { Err(_err) => { trace!("fast reverse anchored search failed: {}", _err); @@ -967,12 +1044,30 @@ } #[cfg_attr(feature = "perf-inline", inline(always))] + fn is_match(&self, cache: &mut Cache, input: &Input<'_>) -> bool { + if input.get_anchored().is_anchored() { + return self.core.is_match(cache, input); + } + match self.try_search_half_anchored_rev(cache, input) { + Err(_err) => { + trace!("fast reverse anchored search failed: {}", _err); + self.core.is_match_nofail(cache, input) + } + Ok(None) => false, + Ok(Some(_)) => true, + } + } + + #[cfg_attr(feature = "perf-inline", inline(always))] fn search_slots( &self, cache: &mut Cache, input: &Input<'_>, slots: &mut [Option], ) -> Option { + if input.get_anchored().is_anchored() { + return self.core.search_slots(cache, input, slots); + } match self.try_search_half_anchored_rev(cache, input) { Err(_err) => { trace!("fast reverse anchored search failed: {}", _err); @@ -1034,6 +1129,13 @@ // requires a reverse scan after a literal match to confirm or reject // the match. (Although, in the case of confirmation, it then needs to // do another forward scan to find the end position.) + // + // Note that the caller can still request an anchored search even + // when the regex isn't anchored. We detect that case in the search + // routines below and just fallback to the core engine. Currently this + // optimization assumes all searches are unanchored, so if we do want + // to enable this optimization for anchored searches, it will need a + // little work to support it. if core.info.is_always_anchored_start() { debug!( "skipping reverse suffix optimization because \ @@ -1211,6 +1313,9 @@ #[cfg_attr(feature = "perf-inline", inline(always))] fn search(&self, cache: &mut Cache, input: &Input<'_>) -> Option { + if input.get_anchored().is_anchored() { + return self.core.search(cache, input); + } match self.try_search_half_start(cache, input) { Err(RetryError::Quadratic(_err)) => { trace!("reverse suffix optimization failed: {}", _err); @@ -1255,6 +1360,9 @@ cache: &mut Cache, input: &Input<'_>, ) -> Option { + if input.get_anchored().is_anchored() { + return self.core.search_half(cache, input); + } match self.try_search_half_start(cache, input) { Err(RetryError::Quadratic(_err)) => { trace!("reverse suffix half optimization failed: {}", _err); @@ -1303,12 +1411,37 @@ } #[cfg_attr(feature = "perf-inline", inline(always))] + fn is_match(&self, cache: &mut Cache, input: &Input<'_>) -> bool { + if input.get_anchored().is_anchored() { + return self.core.is_match(cache, input); + } + match self.try_search_half_start(cache, input) { + Err(RetryError::Quadratic(_err)) => { + trace!("reverse suffix half optimization failed: {}", _err); + self.core.is_match_nofail(cache, input) + } + Err(RetryError::Fail(_err)) => { + trace!( + "reverse suffix reverse fast half search failed: {}", + _err + ); + self.core.is_match_nofail(cache, input) + } + Ok(None) => false, + Ok(Some(_)) => true, + } + } + + #[cfg_attr(feature = "perf-inline", inline(always))] fn search_slots( &self, cache: &mut Cache, input: &Input<'_>, slots: &mut [Option], ) -> Option { + if input.get_anchored().is_anchored() { + return self.core.search_slots(cache, input, slots); + } if !self.core.is_capture_search_needed(slots.len()) { trace!("asked for slots unnecessarily, trying fast path"); let m = self.search(cache, input)?; @@ -1396,6 +1529,13 @@ // or when the literal scan matches. If it matches, then confirming the // match requires a reverse scan followed by a forward scan to confirm // or reject, which is a fair bit of work. + // + // Note that the caller can still request an anchored search even + // when the regex isn't anchored. We detect that case in the search + // routines below and just fallback to the core engine. Currently this + // optimization assumes all searches are unanchored, so if we do want + // to enable this optimization for anchored searches, it will need a + // little work to support it. if core.info.is_always_anchored_start() { debug!( "skipping reverse inner optimization because \ @@ -1440,7 +1580,7 @@ .utf8(core.info.config().get_utf8_empty()) .nfa_size_limit(core.info.config().get_nfa_size_limit()) .shrink(false) - .captures(false) + .which_captures(WhichCaptures::None) .look_matcher(lookm); let result = thompson::Compiler::new() .configure(thompson_config) @@ -1635,6 +1775,9 @@ #[cfg_attr(feature = "perf-inline", inline(always))] fn search(&self, cache: &mut Cache, input: &Input<'_>) -> Option { + if input.get_anchored().is_anchored() { + return self.core.search(cache, input); + } match self.try_search_full(cache, input) { Err(RetryError::Quadratic(_err)) => { trace!("reverse inner optimization failed: {}", _err); @@ -1654,6 +1797,9 @@ cache: &mut Cache, input: &Input<'_>, ) -> Option { + if input.get_anchored().is_anchored() { + return self.core.search_half(cache, input); + } match self.try_search_full(cache, input) { Err(RetryError::Quadratic(_err)) => { trace!("reverse inner half optimization failed: {}", _err); @@ -1669,12 +1815,34 @@ } #[cfg_attr(feature = "perf-inline", inline(always))] + fn is_match(&self, cache: &mut Cache, input: &Input<'_>) -> bool { + if input.get_anchored().is_anchored() { + return self.core.is_match(cache, input); + } + match self.try_search_full(cache, input) { + Err(RetryError::Quadratic(_err)) => { + trace!("reverse inner half optimization failed: {}", _err); + self.core.is_match_nofail(cache, input) + } + Err(RetryError::Fail(_err)) => { + trace!("reverse inner fast half search failed: {}", _err); + self.core.is_match_nofail(cache, input) + } + Ok(None) => false, + Ok(Some(_)) => true, + } + } + + #[cfg_attr(feature = "perf-inline", inline(always))] fn search_slots( &self, cache: &mut Cache, input: &Input<'_>, slots: &mut [Option], ) -> Option { + if input.get_anchored().is_anchored() { + return self.core.search_slots(cache, input, slots); + } if !self.core.is_capture_search_needed(slots.len()) { trace!("asked for slots unnecessarily, trying fast path"); let m = self.search(cache, input)?; diff -Nru temporalio-1.3.0/vendor/regex-automata/src/meta/wrappers.rs temporalio-1.3.0/vendor/regex-automata/src/meta/wrappers.rs --- temporalio-1.3.0/vendor/regex-automata/src/meta/wrappers.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/meta/wrappers.rs 2023-10-30 19:40:00.000000000 +0000 @@ -88,6 +88,15 @@ } #[cfg_attr(feature = "perf-inline", inline(always))] + pub(crate) fn is_match( + &self, + cache: &mut PikeVMCache, + input: &Input<'_>, + ) -> bool { + self.0.is_match(cache.0.as_mut().unwrap(), input.clone()) + } + + #[cfg_attr(feature = "perf-inline", inline(always))] pub(crate) fn search_slots( &self, cache: &mut PikeVMCache, @@ -212,6 +221,29 @@ } } + #[cfg_attr(feature = "perf-inline", inline(always))] + pub(crate) fn is_match( + &self, + cache: &mut BoundedBacktrackerCache, + input: &Input<'_>, + ) -> bool { + #[cfg(feature = "nfa-backtrack")] + { + // OK because we only permit access to this engine when we know + // the haystack is short enough for the backtracker to run without + // reporting an error. + self.0 + .try_is_match(cache.0.as_mut().unwrap(), input.clone()) + .unwrap() + } + #[cfg(not(feature = "nfa-backtrack"))] + { + // Impossible to reach because this engine is never constructed + // if the requisite features aren't enabled. + unreachable!() + } + } + #[cfg_attr(feature = "perf-inline", inline(always))] pub(crate) fn search_slots( &self, diff -Nru temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/backtrack.rs temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/backtrack.rs --- temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/backtrack.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/backtrack.rs 2023-10-30 19:40:00.000000000 +0000 @@ -19,7 +19,7 @@ empty, iter, prefilter::Prefilter, primitives::{NonMaxUsize, PatternID, SmallIndex, StateID}, - search::{Anchored, Input, Match, MatchError, Span}, + search::{Anchored, HalfMatch, Input, Match, MatchError, Span}, }, }; @@ -300,15 +300,6 @@ &self, nfa: NFA, ) -> Result { - // If the NFA has no captures, then the backtracker doesn't work since - // it relies on them in order to report match locations. However, in - // the special case of an NFA with no patterns, it is allowed, since - // no matches can ever be produced. And importantly, an NFA with no - // patterns has no capturing groups anyway, so this is necessary to - // permit the backtracker to work with regexes with zero patterns. - if !nfa.has_capture() && nfa.pattern_len() > 0 { - return Err(BuildError::missing_captures()); - } nfa.look_set_any().available().map_err(BuildError::word)?; Ok(BoundedBacktracker { config: self.config.clone(), nfa }) } @@ -825,7 +816,7 @@ #[inline] pub fn max_haystack_len(&self) -> usize { // The capacity given in the config is "bytes of heap memory," but the - // capacity we use here is "number of bits." So conver the capacity in + // capacity we use here is "number of bits." So convert the capacity in // bytes to the capacity in bits. let capacity = 8 * self.get_config().get_visited_capacity(); let blocks = div_ceil(capacity, Visited::BLOCK_SIZE); @@ -954,8 +945,14 @@ None => return Ok(None), Some(pid) => pid, }; - let start = slots[0].unwrap().get(); - let end = slots[1].unwrap().get(); + let start = match slots[0] { + None => return Ok(None), + Some(s) => s.get(), + }; + let end = match slots[1] { + None => return Ok(None), + Some(s) => s.get(), + }; return Ok(Some(Match::new(pid, Span { start, end }))); } let ginfo = self.get_nfa().group_info(); @@ -965,8 +962,14 @@ None => return Ok(None), Some(pid) => pid, }; - let start = slots[pid.as_usize() * 2].unwrap().get(); - let end = slots[pid.as_usize() * 2 + 1].unwrap().get(); + let start = match slots[pid.as_usize() * 2] { + None => return Ok(None), + Some(s) => s.get(), + }; + let end = match slots[pid.as_usize() * 2 + 1] { + None => return Ok(None), + Some(s) => s.get(), + }; Ok(Some(Match::new(pid, Span { start, end }))) } @@ -1292,12 +1295,14 @@ ) -> Result, MatchError> { let utf8empty = self.get_nfa().has_empty() && self.get_nfa().is_utf8(); if !utf8empty { - return self.try_search_slots_imp(cache, input, slots); + let maybe_hm = self.try_search_slots_imp(cache, input, slots)?; + return Ok(maybe_hm.map(|hm| hm.pattern())); } // See PikeVM::try_search_slots for why we do this. let min = self.get_nfa().group_info().implicit_slot_len(); if slots.len() >= min { - return self.try_search_slots_imp(cache, input, slots); + let maybe_hm = self.try_search_slots_imp(cache, input, slots)?; + return Ok(maybe_hm.map(|hm| hm.pattern())); } if self.get_nfa().pattern_len() == 1 { let mut enough = [None, None]; @@ -1305,14 +1310,14 @@ // This is OK because we know `enough_slots` is strictly bigger // than `slots`, otherwise this special case isn't reached. slots.copy_from_slice(&enough[..slots.len()]); - return Ok(got); + return Ok(got.map(|hm| hm.pattern())); } let mut enough = vec![None; min]; let got = self.try_search_slots_imp(cache, input, &mut enough)?; // This is OK because we know `enough_slots` is strictly bigger than // `slots`, otherwise this special case isn't reached. slots.copy_from_slice(&enough[..slots.len()]); - Ok(got) + Ok(got.map(|hm| hm.pattern())) } /// This is the actual implementation of `try_search_slots_imp` that @@ -1325,30 +1330,17 @@ cache: &mut Cache, input: &Input<'_>, slots: &mut [Option], - ) -> Result, MatchError> { + ) -> Result, MatchError> { let utf8empty = self.get_nfa().has_empty() && self.get_nfa().is_utf8(); - let (pid, end) = match self.search_imp(cache, input, slots)? { + let hm = match self.search_imp(cache, input, slots)? { None => return Ok(None), - Some(pid) if !utf8empty => return Ok(Some(pid)), - Some(pid) => { - let slot_start = pid.as_usize() * 2; - let slot_end = slot_start + 1; - // OK because we know we have a match and we know our caller - // provided slots are big enough (which we make true above if - // the caller didn't). Namely, we're only here when 'utf8empty' - // is true, and when that's true, we require slots for every - // pattern. - (pid, slots[slot_end].unwrap().get()) - } + Some(hm) if !utf8empty => return Ok(Some(hm)), + Some(hm) => hm, }; - empty::skip_splits_fwd(input, pid, end, |input| { - let pid = match self.search_imp(cache, input, slots)? { - None => return Ok(None), - Some(pid) => pid, - }; - let slot_start = pid.as_usize() * 2; - let slot_end = slot_start + 1; - Ok(Some((pid, slots[slot_end].unwrap().get()))) + empty::skip_splits_fwd(input, hm, hm.offset(), |input| { + Ok(self + .search_imp(cache, input, slots)? + .map(|hm| (hm, hm.offset()))) }) } @@ -1364,7 +1356,7 @@ cache: &mut Cache, input: &Input<'_>, slots: &mut [Option], - ) -> Result, MatchError> { + ) -> Result, MatchError> { // Unlike in the PikeVM, we write our capturing group spans directly // into the caller's captures groups. So we have to make sure we're // starting with a blank slate first. In the PikeVM, we avoid this @@ -1376,7 +1368,7 @@ for slot in slots.iter_mut() { *slot = None; } - cache.setup_search(&self.nfa, input)?; + cache.setup_search(&self, input)?; if input.is_done() { return Ok(None); } @@ -1411,10 +1403,9 @@ Some(ref span) => at = span.start, } } - if let Some(pid) = - self.backtrack(cache, input, at, start_id, slots) + if let Some(hm) = self.backtrack(cache, input, at, start_id, slots) { - return Ok(Some(pid)); + return Ok(Some(hm)); } at += 1; } @@ -1435,14 +1426,13 @@ at: usize, start_id: StateID, slots: &mut [Option], - ) -> Option { + ) -> Option { cache.stack.push(Frame::Step { sid: start_id, at }); while let Some(frame) = cache.stack.pop() { match frame { Frame::Step { sid, at } => { - if let Some(pid) = self.step(cache, input, sid, at, slots) - { - return Some(pid); + if let Some(hm) = self.step(cache, input, sid, at, slots) { + return Some(hm); } } Frame::RestoreCapture { slot, offset } => { @@ -1472,7 +1462,7 @@ mut sid: StateID, mut at: usize, slots: &mut [Option], - ) -> Option { + ) -> Option { loop { if !cache.visited.insert(sid, at - input.start()) { return None; @@ -1555,7 +1545,7 @@ } State::Fail => return None, State::Match { pattern_id } => { - return Some(pattern_id); + return Some(HalfMatch::new(pattern_id, at)); } } } @@ -1750,11 +1740,11 @@ /// in the BoundedBacktracker. fn setup_search( &mut self, - nfa: &NFA, + re: &BoundedBacktracker, input: &Input<'_>, ) -> Result<(), MatchError> { self.stack.clear(); - self.visited.setup_search(nfa, input)?; + self.visited.setup_search(re, input)?; Ok(()) } } @@ -1836,23 +1826,9 @@ true } - /// Returns the capacity of this visited set in terms of the number of bits - /// it has to track (StateID, offset) pairs. - fn capacity(&self) -> usize { - self.bitset.len() * Visited::BLOCK_SIZE - } - /// Reset this visited set to work with the given bounded backtracker. - fn reset(&mut self, re: &BoundedBacktracker) { - // The capacity given in the config is "bytes of heap memory," but the - // capacity we use here is "number of bits." So conver the capacity in - // bytes to the capacity in bits. - let capacity = 8 * re.get_config().get_visited_capacity(); - let blocks = div_ceil(capacity, Visited::BLOCK_SIZE); - self.bitset.resize(blocks, 0); - // N.B. 'stride' is set in 'setup_search', since it isn't known until - // we know the length of the haystack. (That is also when we return an - // error if the haystack is too big.) + fn reset(&mut self, _: &BoundedBacktracker) { + self.bitset.truncate(0); } /// Setup this visited set to work for a search using the given NFA @@ -1861,7 +1837,7 @@ /// result in panics or silently incorrect search behavior. fn setup_search( &mut self, - nfa: &NFA, + re: &BoundedBacktracker, input: &Input<'_>, ) -> Result<(), MatchError> { // Our haystack length is only the length of the span of the entire @@ -1872,19 +1848,23 @@ // search loop includes the position at input.end(). (And it does this // because matches are delayed by one byte to account for look-around.) self.stride = haylen + 1; - let capacity = match nfa.states().len().checked_mul(self.stride) { - None => return Err(err()), - Some(capacity) => capacity, - }; - if capacity > self.capacity() { + let needed_capacity = + match re.get_nfa().states().len().checked_mul(self.stride) { + None => return Err(err()), + Some(capacity) => capacity, + }; + let max_capacity = 8 * re.get_config().get_visited_capacity(); + if needed_capacity > max_capacity { return Err(err()); } - // We only need to zero out our desired capacity, not our total - // capacity in this set. - let blocks = div_ceil(capacity, Visited::BLOCK_SIZE); - for block in self.bitset.iter_mut().take(blocks) { + let needed_blocks = div_ceil(needed_capacity, Visited::BLOCK_SIZE); + self.bitset.truncate(needed_blocks); + for block in self.bitset.iter_mut() { *block = 0; } + if needed_blocks > self.bitset.len() { + self.bitset.resize(needed_blocks, 0); + } Ok(()) } diff -Nru temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/compiler.rs temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/compiler.rs --- temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/compiler.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/compiler.rs 2023-10-30 19:40:00.000000000 +0000 @@ -30,7 +30,7 @@ reverse: Option, nfa_size_limit: Option>, shrink: Option, - captures: Option, + which_captures: Option, look_matcher: Option, #[cfg(test)] unanchored_prefix: Option, @@ -178,12 +178,15 @@ /// ``` /// use regex_automata::{ /// dfa::{self, Automaton}, - /// nfa::thompson::NFA, + /// nfa::thompson::{NFA, WhichCaptures}, /// HalfMatch, Input, /// }; /// /// let dfa = dfa::dense::Builder::new() - /// .thompson(NFA::config().captures(false).reverse(true)) + /// .thompson(NFA::config() + /// .which_captures(WhichCaptures::None) + /// .reverse(true) + /// ) /// .build("baz[0-9]+")?; /// let expected = Some(HalfMatch::must(0, 3)); /// assert_eq!( @@ -277,10 +280,12 @@ /// /// ``` /// # if cfg!(miri) { return Ok(()); } // miri takes too long - /// use regex_automata::nfa::thompson::NFA; + /// use regex_automata::nfa::thompson::{NFA, WhichCaptures}; /// /// // Currently we have to disable captures when enabling reverse NFA. - /// let config = NFA::config().captures(false).reverse(true); + /// let config = NFA::config() + /// .which_captures(WhichCaptures::None) + /// .reverse(true); /// let not_shrunk = NFA::compiler() /// .configure(config.clone().shrink(false)) /// .build(r"\w")?; @@ -311,21 +316,99 @@ /// # Example /// /// This example demonstrates that some regex engines, like the Pike VM, - /// require capturing groups to be present in the NFA. Building a Pike VM - /// with an NFA without capturing groups will result in an error. + /// require capturing states to be present in the NFA to report match + /// offsets. + /// + /// (Note that since this method is deprecated, the example below uses + /// [`Config::which_captures`] to disable capture states.) /// /// ``` - /// use regex_automata::nfa::thompson::{pikevm::PikeVM, NFA}; + /// use regex_automata::nfa::thompson::{ + /// pikevm::PikeVM, + /// NFA, + /// WhichCaptures, + /// }; /// - /// let nfa = NFA::compiler() - /// .configure(NFA::config().captures(false)) + /// let re = PikeVM::builder() + /// .thompson(NFA::config().which_captures(WhichCaptures::None)) + /// .build(r"[a-z]+")?; + /// let mut cache = re.create_cache(); + /// + /// assert!(re.is_match(&mut cache, "abc")); + /// assert_eq!(None, re.find(&mut cache, "abc")); + /// + /// # Ok::<(), Box>(()) + /// ``` + #[deprecated(since = "0.3.5", note = "use which_captures instead")] + pub fn captures(self, yes: bool) -> Config { + self.which_captures(if yes { + WhichCaptures::All + } else { + WhichCaptures::None + }) + } + + /// Configures what kinds of capture groups are compiled into + /// [`State::Capture`](crate::nfa::thompson::State::Capture) states in a + /// Thompson NFA. + /// + /// Currently, using any option except for [`WhichCaptures::None`] requires + /// disabling the [`reverse`](Config::reverse) setting. If both are + /// enabled, then the compiler will return an error. It is expected that + /// this limitation will be lifted in the future. + /// + /// This is set to [`WhichCaptures::All`] by default. Callers may wish to + /// use [`WhichCaptures::Implicit`] in cases where one wants avoid the + /// overhead of capture states for explicit groups. Usually this occurs + /// when one wants to use the `PikeVM` only for determining the overall + /// match. Otherwise, the `PikeVM` could use much more memory than is + /// necessary. + /// + /// # Example + /// + /// This example demonstrates that some regex engines, like the Pike VM, + /// require capturing states to be present in the NFA to report match + /// offsets. + /// + /// ``` + /// use regex_automata::nfa::thompson::{ + /// pikevm::PikeVM, + /// NFA, + /// WhichCaptures, + /// }; + /// + /// let re = PikeVM::builder() + /// .thompson(NFA::config().which_captures(WhichCaptures::None)) /// .build(r"[a-z]+")?; - /// assert!(PikeVM::new_from_nfa(nfa).is_err()); + /// let mut cache = re.create_cache(); + /// + /// assert!(re.is_match(&mut cache, "abc")); + /// assert_eq!(None, re.find(&mut cache, "abc")); /// /// # Ok::<(), Box>(()) /// ``` - pub fn captures(mut self, yes: bool) -> Config { - self.captures = Some(yes); + /// + /// The same applies to the bounded backtracker: + /// + /// ``` + /// use regex_automata::nfa::thompson::{ + /// backtrack::BoundedBacktracker, + /// NFA, + /// WhichCaptures, + /// }; + /// + /// let re = BoundedBacktracker::builder() + /// .thompson(NFA::config().which_captures(WhichCaptures::None)) + /// .build(r"[a-z]+")?; + /// let mut cache = re.create_cache(); + /// + /// assert!(re.try_is_match(&mut cache, "abc")?); + /// assert_eq!(None, re.try_find(&mut cache, "abc")?); + /// + /// # Ok::<(), Box>(()) + /// ``` + pub fn which_captures(mut self, which_captures: WhichCaptures) -> Config { + self.which_captures = Some(which_captures); self } @@ -405,8 +488,14 @@ } /// Return whether NFA compilation is configured to produce capture states. + #[deprecated(since = "0.3.5", note = "use get_which_captures instead")] pub fn get_captures(&self) -> bool { - self.captures.unwrap_or(true) + self.get_which_captures().is_any() + } + + /// Return what kinds of capture states will be compiled into an NFA. + pub fn get_which_captures(&self) -> WhichCaptures { + self.which_captures.unwrap_or(WhichCaptures::All) } /// Return the look-around matcher for this NFA. @@ -439,7 +528,7 @@ reverse: o.reverse.or(self.reverse), nfa_size_limit: o.nfa_size_limit.or(self.nfa_size_limit), shrink: o.shrink.or(self.shrink), - captures: o.captures.or(self.captures), + which_captures: o.which_captures.or(self.which_captures), look_matcher: o.look_matcher.or_else(|| self.look_matcher.clone()), #[cfg(test)] unanchored_prefix: o.unanchored_prefix.or(self.unanchored_prefix), @@ -447,6 +536,57 @@ } } +/// A configuration indicating which kinds of +/// [`State::Capture`](crate::nfa::thompson::State::Capture) states to include. +/// +/// This configuration can be used with [`Config::which_captures`] to control +/// which capture states are compiled into a Thompson NFA. +/// +/// The default configuration is [`WhichCaptures::All`]. +#[derive(Clone, Copy, Debug)] +pub enum WhichCaptures { + /// All capture states, including those corresponding to both implicit and + /// explicit capture groups, are included in the Thompson NFA. + All, + /// Only capture states corresponding to implicit capture groups are + /// included. Implicit capture groups appear in every pattern implicitly + /// and correspond to the overall match of a pattern. + /// + /// This is useful when one only cares about the overall match of a + /// pattern. By excluding capture states from explicit capture groups, + /// one might be able to reduce the memory usage of a multi-pattern regex + /// substantially if it was otherwise written to have many explicit capture + /// groups. + Implicit, + /// No capture states are compiled into the Thompson NFA. + /// + /// This is useful when capture states are either not needed (for example, + /// if one is only trying to build a DFA) or if they aren't supported (for + /// example, a reverse NFA). + None, +} + +impl Default for WhichCaptures { + fn default() -> WhichCaptures { + WhichCaptures::All + } +} + +impl WhichCaptures { + /// Returns true if this configuration indicates that no capture states + /// should be produced in an NFA. + pub fn is_none(&self) -> bool { + matches!(*self, WhichCaptures::None) + } + + /// Returns true if this configuration indicates that some capture states + /// should be added to an NFA. Note that this might only include capture + /// states for implicit capture groups. + pub fn is_any(&self) -> bool { + !self.is_none() + } +} + /* This compiler below uses Thompson's construction algorithm. The compiler takes a regex-syntax::Hir as input and emits an NFA graph as output. The NFA graph @@ -800,7 +940,9 @@ if exprs.len() > PatternID::LIMIT { return Err(BuildError::too_many_patterns(exprs.len())); } - if self.config.get_reverse() && self.config.get_captures() { + if self.config.get_reverse() + && self.config.get_which_captures().is_any() + { return Err(BuildError::unsupported_captures()); } @@ -978,8 +1120,13 @@ name: Option<&str>, expr: &Hir, ) -> Result { - if !self.config.get_captures() { - return self.c(expr); + match self.config.get_which_captures() { + // No capture states means we always skip them. + WhichCaptures::None => return self.c(expr), + // Implicit captures states means we only add when index==0 since + // index==0 implies the group is implicit. + WhichCaptures::Implicit if index > 0 => return self.c(expr), + _ => {} } let start = self.add_capture_start(index, name)?; @@ -1008,7 +1155,7 @@ /// but no more than `max` times. /// /// When `greedy` is true, then the preference is for the expression to - /// match as much as possible. Otheriwse, it will match as little as + /// match as much as possible. Otherwise, it will match as little as /// possible. fn c_bounded( &self, @@ -1074,7 +1221,7 @@ /// integer is likely to run afoul of any configured size limits.) /// /// When `greedy` is true, then the preference is for the expression to - /// match as much as possible. Otheriwse, it will match as little as + /// match as much as possible. Otherwise, it will match as little as /// possible. fn c_at_least( &self, @@ -1155,7 +1302,7 @@ /// times. /// /// When `greedy` is true, then the preference is for the expression to - /// match as much as possible. Otheriwse, it will match as little as + /// match as much as possible. Otherwise, it will match as little as /// possible. fn c_zero_or_one( &self, @@ -1319,7 +1466,7 @@ // compare and contrast performance of the Pike VM when the code below // is active vs the code above. Here's an example to try: // - // regex-cli find nfa thompson pikevm -b @$smallishru '(?m)^\w{20}' + // regex-cli find match pikevm -b -p '(?m)^\w{20}' -y '@$smallishru' // // With Unicode classes generated below, this search takes about 45s on // my machine. But with the compressed version above, the search takes @@ -1338,7 +1485,7 @@ .map(|rng| self.c_range(rng.start, rng.end)); self.c_concat(it) }); - self.c_alt(it) + self.c_alt_iter(it) */ } @@ -1725,12 +1872,18 @@ use crate::{ nfa::thompson::{SparseTransitions, State, Transition, NFA}, - util::primitives::{PatternID, StateID}, + util::primitives::{PatternID, SmallIndex, StateID}, }; + use super::*; + fn build(pattern: &str) -> NFA { NFA::compiler() - .configure(NFA::config().captures(false).unanchored_prefix(false)) + .configure( + NFA::config() + .which_captures(WhichCaptures::None) + .unanchored_prefix(false), + ) .build(pattern) .unwrap() } @@ -1781,6 +1934,15 @@ } } + fn s_cap(next: usize, pattern: usize, index: usize, slot: usize) -> State { + State::Capture { + next: sid(next), + pattern_id: pid(pattern), + group_index: SmallIndex::new(index).unwrap(), + slot: SmallIndex::new(slot).unwrap(), + } + } + fn s_fail() -> State { State::Fail } @@ -1794,7 +1956,7 @@ #[test] fn compile_unanchored_prefix() { let nfa = NFA::compiler() - .configure(NFA::config().captures(false)) + .configure(NFA::config().which_captures(WhichCaptures::None)) .build(r"a") .unwrap(); assert_eq!( @@ -1827,7 +1989,11 @@ // Check that non-UTF-8 literals work. let nfa = NFA::compiler() - .configure(NFA::config().captures(false).unanchored_prefix(false)) + .configure( + NFA::config() + .which_captures(WhichCaptures::None) + .unanchored_prefix(false), + ) .syntax(crate::util::syntax::Config::new().utf8(false)) .build(r"(?-u)\xFF") .unwrap(); @@ -1937,7 +2103,7 @@ let nfa = NFA::compiler() .configure( NFA::config() - .captures(false) + .which_captures(WhichCaptures::None) .reverse(true) .shrink(false) .unanchored_prefix(false), @@ -1965,7 +2131,11 @@ #[test] fn compile_many_start_pattern() { let nfa = NFA::compiler() - .configure(NFA::config().captures(false).unanchored_prefix(false)) + .configure( + NFA::config() + .which_captures(WhichCaptures::None) + .unanchored_prefix(false), + ) .build_many(&["a", "b"]) .unwrap(); assert_eq!( @@ -1993,7 +2163,9 @@ use regex_syntax::hir::{Class, ClassBytes, Hir}; let hir = Hir::class(Class::Bytes(ClassBytes::new(vec![]))); - let config = NFA::config().captures(false).unanchored_prefix(false); + let config = NFA::config() + .which_captures(WhichCaptures::None) + .unanchored_prefix(false); let nfa = NFA::compiler().configure(config).build_from_hir(&hir).unwrap(); assert_eq!(nfa.states(), &[s_fail(), s_match(0)]); @@ -2005,9 +2177,81 @@ use regex_syntax::hir::{Class, ClassUnicode, Hir}; let hir = Hir::class(Class::Unicode(ClassUnicode::new(vec![]))); - let config = NFA::config().captures(false).unanchored_prefix(false); + let config = NFA::config() + .which_captures(WhichCaptures::None) + .unanchored_prefix(false); let nfa = NFA::compiler().configure(config).build_from_hir(&hir).unwrap(); assert_eq!(nfa.states(), &[s_fail(), s_match(0)]); } + + #[test] + fn compile_captures_all() { + let nfa = NFA::compiler() + .configure( + NFA::config() + .unanchored_prefix(false) + .which_captures(WhichCaptures::All), + ) + .build("a(b)c") + .unwrap(); + assert_eq!( + nfa.states(), + &[ + s_cap(1, 0, 0, 0), + s_byte(b'a', 2), + s_cap(3, 0, 1, 2), + s_byte(b'b', 4), + s_cap(5, 0, 1, 3), + s_byte(b'c', 6), + s_cap(7, 0, 0, 1), + s_match(0) + ] + ); + let ginfo = nfa.group_info(); + assert_eq!(2, ginfo.all_group_len()); + } + + #[test] + fn compile_captures_implicit() { + let nfa = NFA::compiler() + .configure( + NFA::config() + .unanchored_prefix(false) + .which_captures(WhichCaptures::Implicit), + ) + .build("a(b)c") + .unwrap(); + assert_eq!( + nfa.states(), + &[ + s_cap(1, 0, 0, 0), + s_byte(b'a', 2), + s_byte(b'b', 3), + s_byte(b'c', 4), + s_cap(5, 0, 0, 1), + s_match(0) + ] + ); + let ginfo = nfa.group_info(); + assert_eq!(1, ginfo.all_group_len()); + } + + #[test] + fn compile_captures_none() { + let nfa = NFA::compiler() + .configure( + NFA::config() + .unanchored_prefix(false) + .which_captures(WhichCaptures::None), + ) + .build("a(b)c") + .unwrap(); + assert_eq!( + nfa.states(), + &[s_byte(b'a', 1), s_byte(b'b', 2), s_byte(b'c', 3), s_match(0)] + ); + let ginfo = nfa.group_info(); + assert_eq!(0, ginfo.all_group_len()); + } } diff -Nru temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/error.rs temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/error.rs --- temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/error.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/error.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,7 +3,7 @@ primitives::{PatternID, StateID}, }; -/// An error that can occured during the construction of a thompson NFA. +/// An error that can occurred during the construction of a thompson NFA. /// /// This error does not provide many introspection capabilities. There are /// generally only two things you can do with it: @@ -68,9 +68,6 @@ /// The invalid index that was given. index: u32, }, - /// An error that occurs when one tries to build an NFA simulation (such as - /// the PikeVM) without any capturing groups. - MissingCaptures, /// An error that occurs when one tries to build a reverse NFA with /// captures enabled. Currently, this isn't supported, but we probably /// should support it at some point. @@ -126,10 +123,6 @@ BuildError { kind: BuildErrorKind::InvalidCaptureIndex { index } } } - pub(crate) fn missing_captures() -> BuildError { - BuildError { kind: BuildErrorKind::MissingCaptures } - } - #[cfg(feature = "syntax")] pub(crate) fn unsupported_captures() -> BuildError { BuildError { kind: BuildErrorKind::UnsupportedCaptures } @@ -161,13 +154,13 @@ } BuildErrorKind::TooManyPatterns { given, limit } => write!( f, - "attemped to compile {} patterns, \ + "attempted to compile {} patterns, \ which exceeds the limit of {}", given, limit, ), BuildErrorKind::TooManyStates { given, limit } => write!( f, - "attemped to compile {} NFA states, \ + "attempted to compile {} NFA states, \ which exceeds the limit of {}", given, limit, ), @@ -181,11 +174,6 @@ "capture group index {} is invalid (too big or discontinuous)", index, ), - BuildErrorKind::MissingCaptures => write!( - f, - "operation requires the NFA to have capturing groups, \ - but the NFA given contains none", - ), #[cfg(feature = "syntax")] BuildErrorKind::UnsupportedCaptures => write!( f, diff -Nru temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/mod.rs temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/mod.rs --- temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -78,4 +78,4 @@ }, }; #[cfg(feature = "syntax")] -pub use compiler::{Compiler, Config}; +pub use compiler::{Compiler, Config, WhichCaptures}; diff -Nru temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/nfa.rs temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/nfa.rs --- temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/nfa.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/nfa.rs 2023-10-30 19:40:00.000000000 +0000 @@ -453,10 +453,10 @@ /// predict the anchored starting state. /// /// ``` - /// use regex_automata::nfa::thompson::{NFA, State}; + /// use regex_automata::nfa::thompson::{NFA, State, WhichCaptures}; /// /// let nfa = NFA::compiler() - /// .configure(NFA::config().captures(false)) + /// .configure(NFA::config().which_captures(WhichCaptures::None)) /// .build("a")?; /// let state = nfa.state(nfa.start_anchored()); /// match *state { @@ -711,7 +711,7 @@ /// or not. /// /// ``` - /// use regex_automata::nfa::thompson::NFA; + /// use regex_automata::nfa::thompson::{NFA, WhichCaptures}; /// /// // Obviously has capture states. /// let nfa = NFA::new("(a)")?; @@ -733,7 +733,7 @@ /// // Notice that 'has_capture' is false here even when we have an /// // explicit capture group in the pattern. /// let nfa = NFA::compiler() - /// .configure(NFA::config().captures(false)) + /// .configure(NFA::config().which_captures(WhichCaptures::None)) /// .build("(a)")?; /// assert!(!nfa.has_capture()); /// @@ -1587,7 +1587,7 @@ /// in case they are useful. But mostly, all you'll need is `next` and /// `slot`. Capture { - /// The state to transtition to, unconditionally. + /// The state to transition to, unconditionally. next: StateID, /// The pattern ID that this capture belongs to. pattern_id: PatternID, diff -Nru temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/pikevm.rs temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/pikevm.rs --- temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/pikevm.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/pikevm.rs 2023-10-30 19:40:00.000000000 +0000 @@ -17,7 +17,9 @@ empty, iter, prefilter::Prefilter, primitives::{NonMaxUsize, PatternID, SmallIndex, StateID}, - search::{Anchored, Input, Match, MatchKind, PatternSet, Span}, + search::{ + Anchored, HalfMatch, Input, Match, MatchKind, PatternSet, Span, + }, sparse_set::SparseSet, }, }; @@ -275,15 +277,6 @@ /// construction of the NFA itself will of course be ignored, since the NFA /// given here is already built. pub fn build_from_nfa(&self, nfa: NFA) -> Result { - // If the NFA has no captures, then the PikeVM doesn't work since it - // relies on them in order to report match locations. However, in - // the special case of an NFA with no patterns, it is allowed, since - // no matches can ever be produced. And importantly, an NFA with no - // patterns has no capturing groups anyway, so this is necessary to - // permit the PikeVM to work with regexes with zero patterns. - if !nfa.has_capture() && nfa.pattern_len() > 0 { - return Err(BuildError::missing_captures()); - } nfa.look_set_any().available().map_err(BuildError::word)?; Ok(PikeVM { config: self.config.clone(), nfa }) } @@ -828,16 +821,16 @@ if self.get_nfa().pattern_len() == 1 { let mut slots = [None, None]; let pid = self.search_slots(cache, &input, &mut slots)?; - let start = slots[0].unwrap().get(); - let end = slots[1].unwrap().get(); + let start = slots[0]?.get(); + let end = slots[1]?.get(); return Some(Match::new(pid, Span { start, end })); } let ginfo = self.get_nfa().group_info(); let slots_len = ginfo.implicit_slot_len(); let mut slots = vec![None; slots_len]; let pid = self.search_slots(cache, &input, &mut slots)?; - let start = slots[pid.as_usize() * 2].unwrap().get(); - let end = slots[pid.as_usize() * 2 + 1].unwrap().get(); + let start = slots[pid.as_usize() * 2]?.get(); + let end = slots[pid.as_usize() * 2 + 1]?.get(); Some(Match::new(pid, Span { start, end })) } @@ -1103,7 +1096,8 @@ ) -> Option { let utf8empty = self.get_nfa().has_empty() && self.get_nfa().is_utf8(); if !utf8empty { - return self.search_slots_imp(cache, input, slots); + let hm = self.search_slots_imp(cache, input, slots)?; + return Some(hm.pattern()); } // There is an unfortunate special case where if the regex can // match the empty string and UTF-8 mode is enabled, the search @@ -1118,22 +1112,23 @@ // this case. let min = self.get_nfa().group_info().implicit_slot_len(); if slots.len() >= min { - return self.search_slots_imp(cache, input, slots); + let hm = self.search_slots_imp(cache, input, slots)?; + return Some(hm.pattern()); } if self.get_nfa().pattern_len() == 1 { let mut enough = [None, None]; let got = self.search_slots_imp(cache, input, &mut enough); - // This is OK because we know `enough_slots` is strictly bigger - // than `slots`, otherwise this special case isn't reached. + // This is OK because we know `enough` is strictly bigger than + // `slots`, otherwise this special case isn't reached. slots.copy_from_slice(&enough[..slots.len()]); - return got; + return got.map(|hm| hm.pattern()); } let mut enough = vec![None; min]; let got = self.search_slots_imp(cache, input, &mut enough); - // This is OK because we know `enough_slots` is strictly bigger than - // `slots`, otherwise this special case isn't reached. + // This is OK because we know `enough` is strictly bigger than `slots`, + // otherwise this special case isn't reached. slots.copy_from_slice(&enough[..slots.len()]); - got + got.map(|hm| hm.pattern()) } /// This is the actual implementation of `search_slots_imp` that @@ -1146,30 +1141,17 @@ cache: &mut Cache, input: &Input<'_>, slots: &mut [Option], - ) -> Option { + ) -> Option { let utf8empty = self.get_nfa().has_empty() && self.get_nfa().is_utf8(); - let (pid, end) = match self.search_imp(cache, input, slots) { + let hm = match self.search_imp(cache, input, slots) { None => return None, - Some(pid) if !utf8empty => return Some(pid), - Some(pid) => { - let slot_start = pid.as_usize() * 2; - let slot_end = slot_start + 1; - // OK because we know we have a match and we know our caller - // provided slots are big enough (which we make true above if - // the caller didn't). Namely, we're only here when 'utf8empty' - // is true, and when that's true, we require slots for every - // pattern. - (pid, slots[slot_end].unwrap().get()) - } + Some(hm) if !utf8empty => return Some(hm), + Some(hm) => hm, }; - empty::skip_splits_fwd(input, pid, end, |input| { - let pid = match self.search_imp(cache, input, slots) { - None => return Ok(None), - Some(pid) => pid, - }; - let slot_start = pid.as_usize() * 2; - let slot_end = slot_start + 1; - Ok(Some((pid, slots[slot_end].unwrap().get()))) + empty::skip_splits_fwd(input, hm, hm.offset(), |input| { + Ok(self + .search_imp(cache, input, slots) + .map(|hm| (hm, hm.offset()))) }) // OK because the PikeVM never errors. .unwrap() @@ -1244,7 +1226,7 @@ cache: &mut Cache, input: &Input<'_>, slots: &mut [Option], - ) -> Option { + ) -> Option { cache.setup_search(slots.len()); if input.is_done() { return None; @@ -1273,7 +1255,7 @@ let pre = if anchored { None } else { self.get_config().get_prefilter() }; let Cache { ref mut stack, ref mut curr, ref mut next } = cache; - let mut pid = None; + let mut hm = None; // Yes, our search doesn't end at input.end(), but includes it. This // is necessary because matches are delayed by one byte, just like // how the DFA engines work. The delay is used to handle look-behind @@ -1292,7 +1274,7 @@ if curr.set.is_empty() { // We have a match and we haven't been instructed to continue // on even after finding a match, so we can quit. - if pid.is_some() && !allmatches { + if hm.is_some() && !allmatches { break; } // If we're running an anchored search and we've advanced @@ -1356,7 +1338,15 @@ // matches their behavior. (Generally, 'allmatches' is useful for // overlapping searches or leftmost anchored searches to find the // longest possible match by ignoring match priority.) - if !pid.is_some() || allmatches { + // + // Additionally, when we're running an anchored search, this + // epsilon closure should only be computed at the beginning of the + // search. If we re-computed it at every position, we would be + // simulating an unanchored search when we were tasked to perform + // an anchored search. + if (!hm.is_some() || allmatches) + && (!anchored || at == input.start()) + { // Since we are adding to the 'curr' active states and since // this is for the start ID, we use a slots slice that is // guaranteed to have the right length but where every element @@ -1373,14 +1363,15 @@ let slots = next.slot_table.all_absent(); self.epsilon_closure(stack, slots, curr, input, at, start_id); } - if let Some(x) = self.nexts(stack, curr, next, input, at, slots) { - pid = Some(x); + if let Some(pid) = self.nexts(stack, curr, next, input, at, slots) + { + hm = Some(HalfMatch::new(pid, at)); } // Unless the caller asked us to return early, we need to mush on // to see if we can extend our match. (But note that 'nexts' will // quit right after seeing a match when match_kind==LeftmostFirst, // as is consistent with leftmost-first match priority.) - if input.get_earliest() && pid.is_some() { + if input.get_earliest() && hm.is_some() { break; } core::mem::swap(curr, next); @@ -1388,7 +1379,7 @@ at += 1; } instrument!(|c| c.eprint(&self.nfa)); - pid + hm } /// The implementation for the 'which_overlapping_matches' API. Basically, @@ -2100,15 +2091,16 @@ // if a 'Captures' has fewer slots, e.g., none at all or only slots // for tracking the overall match instead of all slots for every // group. - self.slots_for_captures = nfa.group_info().slot_len(); + self.slots_for_captures = core::cmp::max( + self.slots_per_state, + nfa.pattern_len().checked_mul(2).unwrap(), + ); let len = nfa .states() .len() - // We add 1 so that our last row is always empty. We use it as - // "scratch" space for computing the epsilon closure off of the - // starting state. - .checked_add(1) - .and_then(|x| x.checked_mul(self.slots_per_state)) + .checked_mul(self.slots_per_state) + // Add space to account for scratch space used during a search. + .and_then(|x| x.checked_add(self.slots_for_captures)) // It seems like this could actually panic on legitimate inputs on // 32-bit targets, and very likely to panic on 16-bit. Should we // somehow convert this to an error? What about something similar @@ -2162,7 +2154,7 @@ /// compute an epsilon closure outside of the user supplied regex, and thus /// never want it to have any capturing slots set. fn all_absent(&mut self) -> &mut [Option] { - let i = self.table.len() - self.slots_per_state; + let i = self.table.len() - self.slots_for_captures; &mut self.table[i..i + self.slots_for_captures] } } @@ -2297,7 +2289,7 @@ trace!("===== START PikeVM Instrumentation Output ====="); // We take the top-K most occurring state sets. Otherwise the output // is likely to be overwhelming. And we probably only care about the - // most frequently occuring ones anyway. + // most frequently occurring ones anyway. const LIMIT: usize = 20; let mut set_counts = self.state_sets.iter().collect::, &u64)>>(); diff -Nru temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/range_trie.rs temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/range_trie.rs --- temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/range_trie.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/nfa/thompson/range_trie.rs 2023-10-30 19:40:00.000000000 +0000 @@ -131,7 +131,7 @@ exactly equivalent or non-overlapping. In effect, a range trie is building a DFA from a sequence of arbitrary byte -ranges. But it uses an algoritm custom tailored to its input, so it is not as +ranges. But it uses an algorithm custom tailored to its input, so it is not as costly as traditional DFA construction. While it is still quite a bit more costly than the forward case (which only needs Daciuk's algorithm), it winds up saving a substantial amount of time if one is doing a full DFA powerset @@ -188,7 +188,7 @@ /// A stack for traversing this trie to yield sequences of byte ranges in /// lexicographic order. iter_stack: RefCell>, - /// A bufer that stores the current sequence during iteration. + /// A buffer that stores the current sequence during iteration. iter_ranges: RefCell>, /// A stack used for traversing the trie in order to (deeply) duplicate /// a state. States are recursively duplicated when ranges are split. @@ -622,7 +622,7 @@ } /// The next state to process during insertion and any remaining ranges that we -/// want to add for a partcular sequence of ranges. The first such instance +/// want to add for a particular sequence of ranges. The first such instance /// is always the root state along with all ranges given. #[derive(Clone, Debug)] struct NextInsert { diff -Nru temporalio-1.3.0/vendor/regex-automata/src/util/alphabet.rs temporalio-1.3.0/vendor/regex-automata/src/util/alphabet.rs --- temporalio-1.3.0/vendor/regex-automata/src/util/alphabet.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/util/alphabet.rs 2023-10-30 19:40:00.000000000 +0000 @@ -132,7 +132,7 @@ } } - /// If this unit is an "end of input" sentinel, then return the underyling + /// If this unit is an "end of input" sentinel, then return the underlying /// sentinel value that was given to [`Unit::eoi`]. Otherwise return /// `None`. pub fn as_eoi(self) -> Option { @@ -796,6 +796,7 @@ } /// Return true if and only if this set is empty. + #[cfg_attr(feature = "perf-inline", inline(always))] pub(crate) fn is_empty(&self) -> bool { self.bits.0 == [0, 0] } diff -Nru temporalio-1.3.0/vendor/regex-automata/src/util/captures.rs temporalio-1.3.0/vendor/regex-automata/src/util/captures.rs --- temporalio-1.3.0/vendor/regex-automata/src/util/captures.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/util/captures.rs 2023-10-30 19:40:00.000000000 +0000 @@ -433,6 +433,7 @@ /// /// ``` /// # if cfg!(miri) { return Ok(()); } // miri takes too long + /// # if !cfg!(target_pointer_width = "64") { return Ok(()); } // see #1039 /// use regex_automata::{nfa::thompson::pikevm::PikeVM, Span, Match}; /// /// let re = PikeVM::new(r"^(?P\pL+)\s+(?P\pL+)$")?; @@ -1453,7 +1454,7 @@ /// sequence of patterns yields a sequence of possible group names. The /// index of each pattern in the sequence corresponds to its `PatternID`, /// and the index of each group in each pattern's sequence corresponds to - /// its coresponding group index. + /// its corresponding group index. /// /// While this constructor is very generic and therefore perhaps hard to /// chew on, an example of a valid concrete type that can be passed to @@ -1809,10 +1810,10 @@ /// panic even if captures aren't enabled on this NFA: /// /// ``` - /// use regex_automata::nfa::thompson::NFA; + /// use regex_automata::nfa::thompson::{NFA, WhichCaptures}; /// /// let nfa = NFA::compiler() - /// .configure(NFA::config().captures(false)) + /// .configure(NFA::config().which_captures(WhichCaptures::None)) /// .build_many(&[ /// r"(?Pa)", /// r"a", @@ -1957,7 +1958,7 @@ /// for different patterns and NFA configurations. /// /// ``` - /// use regex_automata::{nfa::thompson::NFA, PatternID}; + /// use regex_automata::{nfa::thompson::{NFA, WhichCaptures}, PatternID}; /// /// let nfa = NFA::new(r"(a)(b)(c)")?; /// // There are 3 explicit groups in the pattern's concrete syntax and @@ -1969,13 +1970,13 @@ /// assert_eq!(1, nfa.group_info().group_len(PatternID::ZERO)); /// /// let nfa = NFA::compiler() - /// .configure(NFA::config().captures(false)) + /// .configure(NFA::config().which_captures(WhichCaptures::None)) /// .build(r"abc")?; /// // We disabled capturing groups, so there are none. /// assert_eq!(0, nfa.group_info().group_len(PatternID::ZERO)); /// /// let nfa = NFA::compiler() - /// .configure(NFA::config().captures(false)) + /// .configure(NFA::config().which_captures(WhichCaptures::None)) /// .build(r"(a)(b)(c)")?; /// // We disabled capturing groups, so there are none, even if there are /// // explicit groups in the concrete syntax. @@ -1999,7 +2000,7 @@ /// for different patterns and NFA configurations. /// /// ``` - /// use regex_automata::{nfa::thompson::NFA, PatternID}; + /// use regex_automata::{nfa::thompson::{NFA, WhichCaptures}, PatternID}; /// /// let nfa = NFA::new(r"(a)(b)(c)")?; /// // There are 3 explicit groups in the pattern's concrete syntax and @@ -2016,13 +2017,13 @@ /// assert_eq!(5, nfa.group_info().all_group_len()); /// /// let nfa = NFA::compiler() - /// .configure(NFA::config().captures(false)) + /// .configure(NFA::config().which_captures(WhichCaptures::None)) /// .build(r"abc")?; /// // We disabled capturing groups, so there are none. /// assert_eq!(0, nfa.group_info().all_group_len()); /// /// let nfa = NFA::compiler() - /// .configure(NFA::config().captures(false)) + /// .configure(NFA::config().which_captures(WhichCaptures::None)) /// .build(r"(a)(b)(c)")?; /// // We disabled capturing groups, so there are none, even if there are /// // explicit groups in the concrete syntax. diff -Nru temporalio-1.3.0/vendor/regex-automata/src/util/determinize/mod.rs temporalio-1.3.0/vendor/regex-automata/src/util/determinize/mod.rs --- temporalio-1.3.0/vendor/regex-automata/src/util/determinize/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/util/determinize/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -205,7 +205,7 @@ && unit.is_byte(lookm.get_line_terminator()) { // Why only handle StartLF here and not Start? That's because Start - // can only impact the starting state, which is speical cased in + // can only impact the starting state, which is special cased in // start state handling. builder.set_look_have(|have| have.insert(Look::StartLF)); } @@ -412,7 +412,7 @@ /// and whether this state is being generated for a transition over a word byte /// when applicable) that are true immediately prior to transitioning into this /// state (via `builder.look_have()`). The match pattern IDs should correspond -/// to matches that occured on the previous transition, since all matches are +/// to matches that occurred on the previous transition, since all matches are /// delayed by one byte. The things that should _not_ be set are look-ahead /// assertions (EndLF, End and whether the next byte is a word byte or not). /// The builder state should also not have anything in `look_need` set, as this diff -Nru temporalio-1.3.0/vendor/regex-automata/src/util/determinize/state.rs temporalio-1.3.0/vendor/regex-automata/src/util/determinize/state.rs --- temporalio-1.3.0/vendor/regex-automata/src/util/determinize/state.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/util/determinize/state.rs 2023-10-30 19:40:00.000000000 +0000 @@ -60,7 +60,7 @@ freeze it into a `State`. It it doesn't exist, then `StateBuilderNFA::to_state` can be called to freeze the builder into an immutable `State`. In either case, `clear` should be called on the builder to turn it back into a -`StateBuilderEmpty` that reuses the underyling memory. +`StateBuilderEmpty` that reuses the underlying memory. The main purpose for splitting the builder into these distinct types is to make it impossible to do things like adding a pattern ID after adding an NFA @@ -103,7 +103,7 @@ /// This type is intended to be used only in NFA-to-DFA conversion via powerset /// construction. /// -/// It may be cheaply cloned and accessed safely from mulitple threads +/// It may be cheaply cloned and accessed safely from multiple threads /// simultaneously. #[derive(Clone, Eq, Hash, PartialEq, PartialOrd, Ord)] pub(crate) struct State(Arc<[u8]>); diff -Nru temporalio-1.3.0/vendor/regex-automata/src/util/iter.rs temporalio-1.3.0/vendor/regex-automata/src/util/iter.rs --- temporalio-1.3.0/vendor/regex-automata/src/util/iter.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/util/iter.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,7 @@ Generic helpers for iteration of matches from a regex engine in a haystack. The principle type in this module is a [`Searcher`]. A `Searcher` provides -its own lower level iterater-like API in addition to methods for constructing +its own lower level iterator-like API in addition to methods for constructing types that implement `Iterator`. The documentation for `Searcher` explains a bit more about why these different APIs exist. diff -Nru temporalio-1.3.0/vendor/regex-automata/src/util/lazy.rs temporalio-1.3.0/vendor/regex-automata/src/util/lazy.rs --- temporalio-1.3.0/vendor/regex-automata/src/util/lazy.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/util/lazy.rs 2023-10-30 19:40:00.000000000 +0000 @@ -159,7 +159,7 @@ impl T> Lazy { /// Get the underlying lazy value. If it hasn't been initialized /// yet, then always attempt to initialize it (even if some other - /// thread is initializing it) and atomicly attach it to this lazy + /// thread is initializing it) and atomically attach it to this lazy /// value before returning it. pub(super) fn get(&self) -> &T { if let Some(data) = self.poll() { diff -Nru temporalio-1.3.0/vendor/regex-automata/src/util/look.rs temporalio-1.3.0/vendor/regex-automata/src/util/look.rs --- temporalio-1.3.0/vendor/regex-automata/src/util/look.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/util/look.rs 2023-10-30 19:40:00.000000000 +0000 @@ -972,8 +972,8 @@ fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { write!( f, - "Unicode-aware \\b and \\B are unavailabe because the \ - requiste data tables are missing, please enable the \ + "Unicode-aware \\b and \\B are unavailable because the \ + requisite data tables are missing, please enable the \ unicode-word-boundary feature" ) } diff -Nru temporalio-1.3.0/vendor/regex-automata/src/util/prefilter/teddy.rs temporalio-1.3.0/vendor/regex-automata/src/util/prefilter/teddy.rs --- temporalio-1.3.0/vendor/regex-automata/src/util/prefilter/teddy.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/util/prefilter/teddy.rs 2023-10-30 19:40:00.000000000 +0000 @@ -28,7 +28,7 @@ anchored_ac: aho_corasick::dfa::DFA, /// The length of the smallest literal we look for. /// - /// We use this as a hueristic to figure out whether this will be "fast" or + /// We use this as a heuristic to figure out whether this will be "fast" or /// not. Generally, the longer the better, because longer needles are more /// discriminating and thus reduce false positive rate. #[cfg(feature = "perf-literal-multisubstring")] diff -Nru temporalio-1.3.0/vendor/regex-automata/src/util/search.rs temporalio-1.3.0/vendor/regex-automata/src/util/search.rs --- temporalio-1.3.0/vendor/regex-automata/src/util/search.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/util/search.rs 2023-10-30 19:40:00.000000000 +0000 @@ -246,7 +246,7 @@ /// When a search is anchored (so that's [`Anchored::Yes`] or /// [`Anchored::Pattern`]), a match must begin at the start of a search. /// When a search is not anchored (that's [`Anchored::No`]), regex engines - /// will behave as if the pattern started with a `(?:s-u.)*?`. This prefix + /// will behave as if the pattern started with a `(?s-u:.)*?`. This prefix /// permits a match to appear anywhere. /// /// By default, the anchored mode is [`Anchored::No`]. @@ -274,7 +274,7 @@ /// requires that it only report a match that begins at the same offset /// as the beginning of the search. /// 4. The regex `a` is compiled with `Anchored::No` and searches `aba` - /// startting at position `1`. Since the search is not anchored and + /// starting at position `1`. Since the search is not anchored and /// the regex does not start with `^`, the search executes as if there /// is a `(?s:.)*?` prefix that permits it to match anywhere. Thus, it /// reports a match at `[2, 3]`. @@ -745,7 +745,7 @@ /// /// # Example /// - /// This shows where codepoint bounardies do and don't exist in valid + /// This shows where codepoint boundaries do and don't exist in valid /// UTF-8. /// /// ``` @@ -1179,7 +1179,7 @@ /// impossible if you use the `pattern_len()` method as defined on any of /// the regex engines in this crate. Namely, a regex will fail to build by /// returning an error if the number of patterns given to it exceeds the - /// limit. Therefore, the number of patterns in a valid regex is alwasys + /// limit. Therefore, the number of patterns in a valid regex is always /// a correct capacity to provide here. pub fn new(capacity: usize) -> PatternSet { assert!( @@ -1526,6 +1526,7 @@ /// assert!(Anchored::Yes.is_anchored()); /// assert!(Anchored::Pattern(PatternID::ZERO).is_anchored()); /// ``` + #[inline] pub fn is_anchored(&self) -> bool { matches!(*self, Anchored::Yes | Anchored::Pattern(_)) } @@ -1544,6 +1545,7 @@ /// let pid = PatternID::must(5); /// assert_eq!(Some(pid), Anchored::Pattern(pid).pattern()); /// ``` + #[inline] pub fn pattern(&self) -> Option { match *self { Anchored::Pattern(pid) => Some(pid), diff -Nru temporalio-1.3.0/vendor/regex-automata/src/util/start.rs temporalio-1.3.0/vendor/regex-automata/src/util/start.rs --- temporalio-1.3.0/vendor/regex-automata/src/util/start.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/util/start.rs 2023-10-30 19:40:00.000000000 +0000 @@ -72,6 +72,7 @@ } /// Return the forward starting configuration for the given `input`. + #[cfg_attr(feature = "perf-inline", inline(always))] pub(crate) fn fwd(&self, input: &Input) -> Start { match input .start() @@ -84,6 +85,7 @@ } /// Return the reverse starting configuration for the given `input`. + #[cfg_attr(feature = "perf-inline", inline(always))] pub(crate) fn rev(&self, input: &Input) -> Start { match input.haystack().get(input.end()) { None => Start::Text, @@ -91,6 +93,7 @@ } } + #[cfg_attr(feature = "perf-inline", inline(always))] fn get(&self, byte: u8) -> Start { self.map[usize::from(byte)] } diff -Nru temporalio-1.3.0/vendor/regex-automata/src/util/syntax.rs temporalio-1.3.0/vendor/regex-automata/src/util/syntax.rs --- temporalio-1.3.0/vendor/regex-automata/src/util/syntax.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/util/syntax.rs 2023-10-30 19:40:00.000000000 +0000 @@ -209,7 +209,7 @@ /// then `.` will match any character except for a new line character. /// /// Note that `.` is impacted by whether the "unicode" setting is enabled - /// or not. When Unicode is enabled (the defualt), `.` will match any UTF-8 + /// or not. When Unicode is enabled (the default), `.` will match any UTF-8 /// encoding of any Unicode scalar value (sans a new line, depending on /// whether this "dot matches new line" option is enabled). When Unicode /// mode is disabled, `.` will match any byte instead. Because of this, @@ -345,7 +345,7 @@ /// if callers want to put a limit on the amount of heap space used, then /// they should impose a limit on the length, in bytes, of the concrete /// pattern string. In particular, this is viable since the parser will - /// limit itself to heap space proportional to the lenth of the pattern + /// limit itself to heap space proportional to the length of the pattern /// string. /// /// Note that a nest limit of `0` will return a nest limit error for most diff -Nru temporalio-1.3.0/vendor/regex-automata/src/util/wire.rs temporalio-1.3.0/vendor/regex-automata/src/util/wire.rs --- temporalio-1.3.0/vendor/regex-automata/src/util/wire.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-automata/src/util/wire.rs 2023-10-30 19:40:00.000000000 +0000 @@ -270,6 +270,7 @@ } /// Safely converts a `&[u32]` to `&[StateID]` with zero cost. +#[cfg_attr(feature = "perf-inline", inline(always))] pub(crate) fn u32s_to_state_ids(slice: &[u32]) -> &[StateID] { // SAFETY: This is safe because StateID is defined to have the same memory // representation as a u32 (it is repr(transparent)). While not every u32 @@ -300,6 +301,7 @@ } /// Safely converts a `&[u32]` to `&[PatternID]` with zero cost. +#[cfg_attr(feature = "perf-inline", inline(always))] pub(crate) fn u32s_to_pattern_ids(slice: &[u32]) -> &[PatternID] { // SAFETY: This is safe because PatternID is defined to have the same // memory representation as a u32 (it is repr(transparent)). While not @@ -415,7 +417,7 @@ /// Reads a NUL terminated label starting at the beginning of the given slice. /// /// If a NUL terminated label could not be found, then an error is returned. -/// Similary, if a label is found but doesn't match the expected label, then +/// Similarly, if a label is found but doesn't match the expected label, then /// an error is returned. /// /// Upon success, the total number of bytes read (including padding bytes) is diff -Nru temporalio-1.3.0/vendor/regex-syntax/.cargo-checksum.json temporalio-1.3.0/vendor/regex-syntax/.cargo-checksum.json --- temporalio-1.3.0/vendor/regex-syntax/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-syntax/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"c64be4d8a9c31ec4b6fd5b21dd9ec4e050b1b843c443883bd09b6918269d97ce","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"b2484aa7e66fb92d1378e9a7ce7605af18f77cb12c179866eaf92ba28cfec1d9","benches/bench.rs":"d2b6ae5b939abd6093064f144b981b7739d7f474ec0698a1268052fc92406635","src/ast/mod.rs":"f3412bf62ca9976079fffbb42784491dd69215e6fa0e14340e8ad2c7bef18184","src/ast/parse.rs":"49478a4ae5b557dc46aa7071c91c7a6905a0ce62910f8c8fefce464e5779e934","src/ast/print.rs":"62d319cd0b7e6f437dc8dcaf798046a44afa03e9aeb6a384d5cffa448383af53","src/ast/visitor.rs":"e97ca0a38aaa145dd928261e8e13d1ec7a6ae37534e92a24c93ea007b0c16a7d","src/debug.rs":"7a16cca02be9715fdc8c26a32279465774623cd12fab1ec59ac25a6e3047817f","src/either.rs":"1758e3edd056884eccadd995708d1e374ba9aa65846bd0e13b1aae852607c560","src/error.rs":"01a67e3407b0d0d869119363e47a94d92158834bfe5936366c2e3f6f4ed13f36","src/hir/interval.rs":"2358e74b4d4aabfa62f79df855fd5d183779b86c4e14aae4ee42d8695bb3d010","src/hir/literal.rs":"4f5d0bafb9508ffbacce53b3c5aadbd8b62341e6ea0c7ccecb38ca30290ee52f","src/hir/mod.rs":"a12ba30abf7d41db21f5b107bae9a14254042e1a598ecc0988f9aea6dba2989e","src/hir/print.rs":"c24eab0e29db7547d3d7f86b8bf19239265d6b114244f5e71a9904e7ae9e9c67","src/hir/translate.rs":"c84d930e156883c5dbad3a0c4500e6659c1f3c55dd6e4caa28b157da681ddb7c","src/hir/visitor.rs":"71ca9c93aa48a5ed445399659fa6455093a1bbd9ef44b66bc7095c1b08b2ec1f","src/lib.rs":"d2891213d00edb99b26ab93bd53749a85f0a6b2a71a1addbed9d2c4969a7515f","src/parser.rs":"6b2f4f27e3331a01a25b87c89368dd2e54396bd425dac57941f9c1ebfd238ac8","src/rank.rs":"ff3d58b0cc5ffa69e2e8c56fc7d9ef41dd399d59a639a253a51551b858cb5bbd","src/unicode.rs":"9829458ef321b3bc22c21eae4b22805b33f8b5e67022928ffd9a9e0287bc7c31","src/unicode_tables/LICENSE-UNICODE":"74db5baf44a41b1000312c673544b3374e4198af5605c7f9080a402cec42cfa3","src/unicode_tables/age.rs":"2a2599a4e406fbbd0efd16aa6ce385c3f97b87c34820d6686a9f9113a5231c67","src/unicode_tables/case_folding_simple.rs":"9583803d4a10486da372b76979dbd26349b40766229467238eff972c1d78e47b","src/unicode_tables/general_category.rs":"36a93ba1cdeed96a00ff29a5ab5afd2c578a89541bf4dd8b18478146cebda0aa","src/unicode_tables/grapheme_cluster_break.rs":"39c388e9805a8391d3d3e69d74d831ce4fb99aa7e13e52c64dd2bd16d4765301","src/unicode_tables/mod.rs":"26c837099cd934c8062e24bc9a0aaecf15fe1de03f9c6da3f3e1e5ac3ca24bee","src/unicode_tables/perl_decimal.rs":"a98ea4afe71c2947023ae12bd25c46bf4c7de48eeb40979eca5c96ba62cee02e","src/unicode_tables/perl_space.rs":"ea2b3b84b4a48334082dadc6c37d9fcc9c9ded84b40e8f5c9c9314898638967e","src/unicode_tables/perl_word.rs":"6f1156bd6af32151ecffea4abe07a38fa04b1fc1b227ec1a8dac5d5f08d9d74b","src/unicode_tables/property_bool.rs":"0bd64f6e3228eaecf47824e238bdf1f8a9eef113ace6e790a57f045a8106701c","src/unicode_tables/property_names.rs":"5ca25437927eb70c62adf7d038e99a601cfb8a718677fd6de832589664d3c481","src/unicode_tables/property_values.rs":"5b4cc02392d382cf7af60455fc87b9980e97409b62a4b8d6c5843190d2e2d21d","src/unicode_tables/script.rs":"ea1d771b6d0a4b12d143f9bad2ea9342a0887878cbbe3c11262b6eabedaf2dd4","src/unicode_tables/script_extension.rs":"beeb8349703d903ff861beb8401bfd2599e457dc25df872e69d6ad1615f8b5e9","src/unicode_tables/sentence_break.rs":"2befe2a27cc4e8aecb624e310ef9f371462470dd3b2f572cec1f5873a5e30aa9","src/unicode_tables/word_break.rs":"94679177731b515f0c360eff394286a1f99b59527bdbc826cbf51d32f9666187","src/utf8.rs":"e9a13623a94295b81969c5483de17219ff74bb20768be13c527010351245acbd","test":"c7de5fbc0010d9b5b758cd49956375a64b88601c068167fd366808950257f108"},"package":"2ab07dc67230e4a4718e70fd5c20055a4334b121f1f9db8fe63ef39ce9b8c846"} \ No newline at end of file +{"files":{"Cargo.toml":"8b97ad7949a5191aa3dcd215c59e25602a417ba7296f8a722a738390775ff208","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"b2484aa7e66fb92d1378e9a7ce7605af18f77cb12c179866eaf92ba28cfec1d9","benches/bench.rs":"d2b6ae5b939abd6093064f144b981b7739d7f474ec0698a1268052fc92406635","src/ast/mod.rs":"f3412bf62ca9976079fffbb42784491dd69215e6fa0e14340e8ad2c7bef18184","src/ast/parse.rs":"49478a4ae5b557dc46aa7071c91c7a6905a0ce62910f8c8fefce464e5779e934","src/ast/print.rs":"62d319cd0b7e6f437dc8dcaf798046a44afa03e9aeb6a384d5cffa448383af53","src/ast/visitor.rs":"e97ca0a38aaa145dd928261e8e13d1ec7a6ae37534e92a24c93ea007b0c16a7d","src/debug.rs":"7a16cca02be9715fdc8c26a32279465774623cd12fab1ec59ac25a6e3047817f","src/either.rs":"1758e3edd056884eccadd995708d1e374ba9aa65846bd0e13b1aae852607c560","src/error.rs":"01a67e3407b0d0d869119363e47a94d92158834bfe5936366c2e3f6f4ed13f36","src/hir/interval.rs":"2358e74b4d4aabfa62f79df855fd5d183779b86c4e14aae4ee42d8695bb3d010","src/hir/literal.rs":"2c8066c18ee1783343bb06ced01ca32f6b8a581ac020378965a57375c4832e88","src/hir/mod.rs":"bf2bd12c4ab6d5420e131aee193c5885d465a15f1d91d67fcf773e6c9c2a23d8","src/hir/print.rs":"c24eab0e29db7547d3d7f86b8bf19239265d6b114244f5e71a9904e7ae9e9c67","src/hir/translate.rs":"c84d930e156883c5dbad3a0c4500e6659c1f3c55dd6e4caa28b157da681ddb7c","src/hir/visitor.rs":"71ca9c93aa48a5ed445399659fa6455093a1bbd9ef44b66bc7095c1b08b2ec1f","src/lib.rs":"d2891213d00edb99b26ab93bd53749a85f0a6b2a71a1addbed9d2c4969a7515f","src/parser.rs":"6b2f4f27e3331a01a25b87c89368dd2e54396bd425dac57941f9c1ebfd238ac8","src/rank.rs":"ff3d58b0cc5ffa69e2e8c56fc7d9ef41dd399d59a639a253a51551b858cb5bbd","src/unicode.rs":"9829458ef321b3bc22c21eae4b22805b33f8b5e67022928ffd9a9e0287bc7c31","src/unicode_tables/LICENSE-UNICODE":"74db5baf44a41b1000312c673544b3374e4198af5605c7f9080a402cec42cfa3","src/unicode_tables/age.rs":"2a2599a4e406fbbd0efd16aa6ce385c3f97b87c34820d6686a9f9113a5231c67","src/unicode_tables/case_folding_simple.rs":"9583803d4a10486da372b76979dbd26349b40766229467238eff972c1d78e47b","src/unicode_tables/general_category.rs":"36a93ba1cdeed96a00ff29a5ab5afd2c578a89541bf4dd8b18478146cebda0aa","src/unicode_tables/grapheme_cluster_break.rs":"39c388e9805a8391d3d3e69d74d831ce4fb99aa7e13e52c64dd2bd16d4765301","src/unicode_tables/mod.rs":"26c837099cd934c8062e24bc9a0aaecf15fe1de03f9c6da3f3e1e5ac3ca24bee","src/unicode_tables/perl_decimal.rs":"a98ea4afe71c2947023ae12bd25c46bf4c7de48eeb40979eca5c96ba62cee02e","src/unicode_tables/perl_space.rs":"ea2b3b84b4a48334082dadc6c37d9fcc9c9ded84b40e8f5c9c9314898638967e","src/unicode_tables/perl_word.rs":"6f1156bd6af32151ecffea4abe07a38fa04b1fc1b227ec1a8dac5d5f08d9d74b","src/unicode_tables/property_bool.rs":"0bd64f6e3228eaecf47824e238bdf1f8a9eef113ace6e790a57f045a8106701c","src/unicode_tables/property_names.rs":"5ca25437927eb70c62adf7d038e99a601cfb8a718677fd6de832589664d3c481","src/unicode_tables/property_values.rs":"5b4cc02392d382cf7af60455fc87b9980e97409b62a4b8d6c5843190d2e2d21d","src/unicode_tables/script.rs":"ea1d771b6d0a4b12d143f9bad2ea9342a0887878cbbe3c11262b6eabedaf2dd4","src/unicode_tables/script_extension.rs":"beeb8349703d903ff861beb8401bfd2599e457dc25df872e69d6ad1615f8b5e9","src/unicode_tables/sentence_break.rs":"2befe2a27cc4e8aecb624e310ef9f371462470dd3b2f572cec1f5873a5e30aa9","src/unicode_tables/word_break.rs":"94679177731b515f0c360eff394286a1f99b59527bdbc826cbf51d32f9666187","src/utf8.rs":"e9a13623a94295b81969c5483de17219ff74bb20768be13c527010351245acbd","test":"c7de5fbc0010d9b5b758cd49956375a64b88601c068167fd366808950257f108"},"package":"e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/regex-syntax/Cargo.toml temporalio-1.3.0/vendor/regex-syntax/Cargo.toml --- temporalio-1.3.0/vendor/regex-syntax/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-syntax/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ edition = "2021" rust-version = "1.60.0" name = "regex-syntax" -version = "0.7.3" +version = "0.7.4" authors = [ "The Rust Project Developers", "Andrew Gallant ", diff -Nru temporalio-1.3.0/vendor/regex-syntax/src/hir/literal.rs temporalio-1.3.0/vendor/regex-syntax/src/hir/literal.rs --- temporalio-1.3.0/vendor/regex-syntax/src/hir/literal.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-syntax/src/hir/literal.rs 2023-10-30 19:40:00.000000000 +0000 @@ -23,7 +23,7 @@ to lead to substring search that is only a little faster than a regex search, and thus the overhead of using literal optimizations in the first place might make things slower overall. -* The literals in your [`Seq`] shoudn't be too short. In general, longer is +* The literals in your [`Seq`] shouldn't be too short. In general, longer is better. A sequence corresponding to single bytes that occur frequently in the haystack, for example, is probably a bad literal optimization because it's likely to produce many false positive candidates. Longer literals are less @@ -477,7 +477,7 @@ } seq } - hir::Repetition { min, max: Some(max), .. } if min < max => { + hir::Repetition { min, .. } => { assert!(min > 0); // handled above let limit = u32::try_from(self.limit_repeat).unwrap_or(u32::MAX); @@ -491,10 +491,6 @@ seq.make_inexact(); seq } - hir::Repetition { .. } => { - subseq.make_inexact(); - subseq - } } } @@ -692,7 +688,7 @@ /// from making assumptions about what literals are required in order to match /// a particular [`Hir`] expression. Generally speaking, when a set is in this /// state, literal optimizations are inhibited. A good example of a regex that -/// will cause this sort of set to apppear is `[A-Za-z]`. The character class +/// will cause this sort of set to appear is `[A-Za-z]`. The character class /// is just too big (and also too narrow) to be usefully expanded into 52 /// different literals. (Note that the decision for when a seq should become /// infinite is determined by the caller. A seq itself has no hard-coded @@ -2655,6 +2651,12 @@ ]), e(r"(ab|cd)(ef|gh)(ij|kl)") ); + + assert_eq!(inexact([E("abab")], [E("abab")]), e(r"(ab){2}")); + + assert_eq!(inexact([I("abab")], [I("abab")]), e(r"(ab){2,3}")); + + assert_eq!(inexact([I("abab")], [I("abab")]), e(r"(ab){2,}")); } #[test] diff -Nru temporalio-1.3.0/vendor/regex-syntax/src/hir/mod.rs temporalio-1.3.0/vendor/regex-syntax/src/hir/mod.rs --- temporalio-1.3.0/vendor/regex-syntax/src/hir/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/regex-syntax/src/hir/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -184,7 +184,7 @@ /// matches. /// /// For empty matches, those can occur at any position. It is the -/// repsonsibility of the regex engine to determine whether empty matches are +/// responsibility of the regex engine to determine whether empty matches are /// permitted between the code units of a single codepoint. /// /// # Stack space diff -Nru temporalio-1.3.0/vendor/reqwest/.cargo-checksum.json temporalio-1.3.0/vendor/reqwest/.cargo-checksum.json --- temporalio-1.3.0/vendor/reqwest/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"758a30bacb4abfe6837b3ac5beaf0ad92d1cc997bfcba0447f72e6eb7405a854","Cargo.lock":"98401c769a1b183266426e4616e3c567df609083dd13aae68d6fc4912de04c74","Cargo.toml":"31665f28f1bf63c6f8f962b782d9d7668ec9b2f124a8e0187af7086869e61692","LICENSE-APACHE":"751963a8b88c0e3a9f27e98933079fbcf09b9998b2c13ac49c2e4d58444520d6","LICENSE-MIT":"37ef4a3ef1391064b2f44aa9cb0c401faad37c8b240a7386ce5e77dea9526f3e","README.md":"0aea0c4746d110da906a6fc0bdb8e02e12a0bad6997eb47c3f2ea41c5bc3df02","examples/blocking.rs":"7bbaa12b8736e28107aa1ba3a8ac575f16fff108c4ac1daf552f4ee9ae597c57","examples/form.rs":"6aa421acc636d2d8a39205549349fbcbee0ce288f151fe5b2582b21a11528466","examples/h3_simple.rs":"25238faf3afb4bf520701abfa5ac3866ae2b90559278cc8e46c6ac17fbc572bf","examples/json_dynamic.rs":"50f863c34530bfaa2ee5eca79cd4e402f872e7bc20b43f3b2b237c67ce9bcce6","examples/json_typed.rs":"ec678ffca5197212f9f343f7bd18335d3ff765506ecc59f03dec93f351da0ce0","examples/simple.rs":"4c9c44052c6b7d17dae4f822b967d450c6c8c8976319f7498859fc7461226c16","examples/tor_socks.rs":"bda2391518d7fe32e32dd4acf03e65046afcf09010e6730dd055dc7b77da7e52","src/async_impl/body.rs":"219f5c3ef79f4b74936409f54ec01a88b735f2f53eff2dea9ed353299fde7921","src/async_impl/client.rs":"2d10032d48be137e4cc26103f174d48f57b6d397338abf10e6a29b1c539e235a","src/async_impl/decoder.rs":"ad099a5397f54f09dd4caede5c12859e8525acdecde6cab800c0157579e9c60f","src/async_impl/h3_client/connect.rs":"d77debf51801ea7340523e156c0d32bf839246de04115f4f4517b7bffe05471b","src/async_impl/h3_client/dns.rs":"3133fa4174eeb1e56ed16a4151d6204815c73879e73b7c39fbde35ea71e0c6d9","src/async_impl/h3_client/mod.rs":"46d6d198cd4c47b9830eb62ad89f0b3321f617d5863c656f71e5764c0c39468f","src/async_impl/h3_client/pool.rs":"597ad187d8478915bd11872c7fd93f1ef9a464c0e9e3ce3e532e473af57eea96","src/async_impl/mod.rs":"bb4f69f0f8376c5d0e77e5a2f2eccd25fe943f3e4a6376e9a005822582721a25","src/async_impl/multipart.rs":"57a4f43e6e20f08a9e4e3824eeccdc6d88acf7484d1c79a009c4c2fe1624cd52","src/async_impl/request.rs":"39263517ee90b6a0fcb682b136045ed06dc448cf742ea1c77ab7eeda9435dcee","src/async_impl/response.rs":"a20955c21c8e089a0f964db61d379d8fb82d53575bcf63b11f00c784a01a0812","src/async_impl/upgrade.rs":"16aa4ebcca6029176a62bb65c29d00ccf94c9c9b288164c0645373d7003e5ef7","src/blocking/body.rs":"d6b1011cb1c63e44b944c60e45feee5501cd70a4249ae73c8b476112d30db28f","src/blocking/client.rs":"98d0a317e7c4f12bfb864583b0a676b210c0e0d6d839196a9821c05cfb48a9e2","src/blocking/mod.rs":"ddcfe859e45871fb819c940868085c26526c8f0831ea175cd4aafd4ba8939992","src/blocking/multipart.rs":"7da92473fedc61091192f4136b4a81672629aa1368500d8ec530bf0d790a3e69","src/blocking/request.rs":"34e125881cbd9a9922ebf88f4aee19d369fcffd88d8fff531b3307105606407f","src/blocking/response.rs":"ea7d4b3990cfd8a30f7da41f185b909158e036b27655385666171e1006f69cbc","src/blocking/wait.rs":"095f3396efc5b6471c6337de850d1e570bcf8a214a892fd0aba87e5b2e2f72e7","src/connect.rs":"edfa6baf580ae0f2acbbead3d0cd68b2fdbcf53d5626a2882834dcebd2fef295","src/cookie.rs":"61bf5b0fee73879f02e081b6ddf43b08646cef25b49cf5f2188f2ea1deecd844","src/dns/gai.rs":"f097505c616b179d9f210d6ab79a79aafd7ee110385b92d7d77e12083ae6acef","src/dns/mod.rs":"a7262254f16ba429119b03039d073f57c552075c1d822d2a67d21ca9b874397a","src/dns/resolve.rs":"bbb1f2d0bdea15caba7737a4fbc3de7b11f86dc1124f6fef290f9d3b31f89383","src/dns/trust_dns.rs":"2223b6989b6a0236e3404b05050fafe708fa02759f8d9447b5012f9d6fc52a27","src/error.rs":"52dece4f0360829577e4a523c766f4b4a827985494865a7e0386a5ce92a4dae2","src/into_url.rs":"cb94de5c0a3ab216ab668e47cecb72b94a25c1e4d3c4c1c1e576ce8306cd77cb","src/lib.rs":"8dd85fba456d80f26ec210f2e7420cbc5c735f2156d5d309749d4400c4d00b48","src/proxy.rs":"92e021525517151fb9deac220c5d1c096820899530c24f54f59c7af0507b4c92","src/redirect.rs":"00e9732c96696e6a2fdd4e9df97efa8b92730073d857ab7fec7a0178f9faf6e6","src/response.rs":"12cf82de2499a426686ed4f3719cce73e269b7b9ddc9c88458e7378beb2c58a8","src/tls.rs":"90f5572484f5ad54b8f782b2e31d6cfeb00bd64f5269d0a8d8873365bbb6c46e","src/util.rs":"8a957635c5bec50b71f5bd5254794afe0bfb71f5d8dc0523fc1700063ab9234f","src/wasm/body.rs":"45309584d278eef32ac592e225ededdfaeba3e09fe295820a8c3babfe4fa79e9","src/wasm/client.rs":"8481c8d2550faf64a3e98f3934b34477639a1bcc00625c292a7796f5acf460d0","src/wasm/mod.rs":"2ba7da28d66b5b25312bf0c4387d1d5ffe4429dfd20c2db78713329298dd7690","src/wasm/multipart.rs":"7c5fae9d5ba166a812c61fb50dd2abf0d499d1e2c4a03097f378fc3c420372fa","src/wasm/request.rs":"7dd268bfb909fbf2720e02dcb9f396008364c4d9c12b47ec7132883d63617aad","src/wasm/response.rs":"3a2b446a73f563c80f7a4a4e9c5f6ac78e535ad08d6711874578d097ace53091","tests/badssl.rs":"32af96c2423a0d958577f0ac93af2c11fec724a129a46de3aa907d831cba263e","tests/blocking.rs":"df5a6cf867121ca517af066dfcfc072443e007db37fbd8ff02279b651aaa23de","tests/brotli.rs":"3eab53772278133cfbc2d1d79f92bdbd07e88717d39d9be81d593ba6b888cfb7","tests/client.rs":"f62612dfa72823a28baa7328cd0e95bd74924f8d01fc31b260f6b131e3cce3e0","tests/cookie.rs":"0b0dd242dbc7fbd28726b61db8ad47172d5407bb7ef993677da94e45e8764786","tests/deflate.rs":"827bd28d305f859d1c1919cb773982ad3da52cb808207a3ebbe9c48bc7885807","tests/gzip.rs":"f32cae0dd9e5ed3f73c12c8df7ebedd4d39e6df2fae08125ff9422abcee86791","tests/multipart.rs":"57b7a0255cce10f99e26eb3f5e24e3850fd8f76240c755f7fec43da81b395ede","tests/proxy.rs":"52fd0a655a471cc6e7da8b915dcf7db3c6b45c687f0bc4f28c821c76c75f422e","tests/redirect.rs":"d0a130d084aaf882efe89a71b77adf3e223a8147fa439151d72a04aac504e045","tests/support/mod.rs":"52cb3c53251f4336fc3964dd4bf2df53e5a8fd846e66802f8d18089daea80e18","tests/support/server.rs":"50cc68350577a056dba0627a29118b0e4d5857969bde35ce966da4996ebe55bd","tests/timeouts.rs":"60f07e165f55e39b7ee1ea5672a2a6b2b1f25b2a2e284896a28963299a6714e7","tests/upgrade.rs":"b7da76f11a06ebe2154f3b52f018896277f43e5820d51096357bc3d16a003b38","tests/wasm_simple.rs":"b24a55ac8f3bc3a4fe2a4a3454fdc289855dee072fde002f7d3f9624dbaabc50"},"package":"cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55"} \ No newline at end of file +{"files":{"CHANGELOG.md":"e90e208ae46c5ef9564a022914dafd5f76a4935d7294e76d4d6010f9e3f04562","Cargo.lock":"cfb84dd1ca6a99b1f605703077bb6f641061d18fc56b1ea2b6efbdc9669198ba","Cargo.toml":"bd07953d3c3ba70633ba8c5f7fa6174fc42a98f43f2ef7caf268848e48bf6df3","LICENSE-APACHE":"751963a8b88c0e3a9f27e98933079fbcf09b9998b2c13ac49c2e4d58444520d6","LICENSE-MIT":"37ef4a3ef1391064b2f44aa9cb0c401faad37c8b240a7386ce5e77dea9526f3e","README.md":"0aea0c4746d110da906a6fc0bdb8e02e12a0bad6997eb47c3f2ea41c5bc3df02","examples/blocking.rs":"7bbaa12b8736e28107aa1ba3a8ac575f16fff108c4ac1daf552f4ee9ae597c57","examples/form.rs":"6aa421acc636d2d8a39205549349fbcbee0ce288f151fe5b2582b21a11528466","examples/h3_simple.rs":"25238faf3afb4bf520701abfa5ac3866ae2b90559278cc8e46c6ac17fbc572bf","examples/json_dynamic.rs":"50f863c34530bfaa2ee5eca79cd4e402f872e7bc20b43f3b2b237c67ce9bcce6","examples/json_typed.rs":"ec678ffca5197212f9f343f7bd18335d3ff765506ecc59f03dec93f351da0ce0","examples/simple.rs":"425c0f82c93042f6881d41f26ccc145ce1b757cf278dbac65ed6d5e1aed27fb5","examples/tor_socks.rs":"bda2391518d7fe32e32dd4acf03e65046afcf09010e6730dd055dc7b77da7e52","src/async_impl/body.rs":"219f5c3ef79f4b74936409f54ec01a88b735f2f53eff2dea9ed353299fde7921","src/async_impl/client.rs":"6ec9d8cb767da74dda2d30ac3b47a00e7ab6917f3a1612229511407db646a310","src/async_impl/decoder.rs":"ad099a5397f54f09dd4caede5c12859e8525acdecde6cab800c0157579e9c60f","src/async_impl/h3_client/connect.rs":"c7f710e3a0a1c34248fb7703c4f8578c3af7fc46bf7eefdd6bc8ea1b21b0b3a1","src/async_impl/h3_client/dns.rs":"3133fa4174eeb1e56ed16a4151d6204815c73879e73b7c39fbde35ea71e0c6d9","src/async_impl/h3_client/mod.rs":"46d6d198cd4c47b9830eb62ad89f0b3321f617d5863c656f71e5764c0c39468f","src/async_impl/h3_client/pool.rs":"597ad187d8478915bd11872c7fd93f1ef9a464c0e9e3ce3e532e473af57eea96","src/async_impl/mod.rs":"bb4f69f0f8376c5d0e77e5a2f2eccd25fe943f3e4a6376e9a005822582721a25","src/async_impl/multipart.rs":"57a4f43e6e20f08a9e4e3824eeccdc6d88acf7484d1c79a009c4c2fe1624cd52","src/async_impl/request.rs":"110059605a8f86df2dcefd2f97053d8f349a33c8882377f7b8ab5965bf9d7f1b","src/async_impl/response.rs":"c2fe780b529bfc5aded2b73c5d2ba486e7e8629c9a3a0e20503a6470db01068b","src/async_impl/upgrade.rs":"16aa4ebcca6029176a62bb65c29d00ccf94c9c9b288164c0645373d7003e5ef7","src/blocking/body.rs":"d6b1011cb1c63e44b944c60e45feee5501cd70a4249ae73c8b476112d30db28f","src/blocking/client.rs":"8e9507c62258cb8cc277031aa42f40c6b41f2944a4833a49e11e56715c679a58","src/blocking/mod.rs":"ddcfe859e45871fb819c940868085c26526c8f0831ea175cd4aafd4ba8939992","src/blocking/multipart.rs":"7da92473fedc61091192f4136b4a81672629aa1368500d8ec530bf0d790a3e69","src/blocking/request.rs":"34e125881cbd9a9922ebf88f4aee19d369fcffd88d8fff531b3307105606407f","src/blocking/response.rs":"ea7d4b3990cfd8a30f7da41f185b909158e036b27655385666171e1006f69cbc","src/blocking/wait.rs":"095f3396efc5b6471c6337de850d1e570bcf8a214a892fd0aba87e5b2e2f72e7","src/connect.rs":"edfa6baf580ae0f2acbbead3d0cd68b2fdbcf53d5626a2882834dcebd2fef295","src/cookie.rs":"61bf5b0fee73879f02e081b6ddf43b08646cef25b49cf5f2188f2ea1deecd844","src/dns/gai.rs":"f097505c616b179d9f210d6ab79a79aafd7ee110385b92d7d77e12083ae6acef","src/dns/mod.rs":"a7262254f16ba429119b03039d073f57c552075c1d822d2a67d21ca9b874397a","src/dns/resolve.rs":"bbb1f2d0bdea15caba7737a4fbc3de7b11f86dc1124f6fef290f9d3b31f89383","src/dns/trust_dns.rs":"2223b6989b6a0236e3404b05050fafe708fa02759f8d9447b5012f9d6fc52a27","src/error.rs":"52dece4f0360829577e4a523c766f4b4a827985494865a7e0386a5ce92a4dae2","src/into_url.rs":"cb94de5c0a3ab216ab668e47cecb72b94a25c1e4d3c4c1c1e576ce8306cd77cb","src/lib.rs":"0f1ad75da69123f118a7a9ba101f62645dbf2d48e7650b5683c8a24f04939bcd","src/proxy.rs":"3cb46ac97b0cd112dda3a0b0da86da6e43d1ea39a8c45f4308feeff51c8d9500","src/redirect.rs":"00e9732c96696e6a2fdd4e9df97efa8b92730073d857ab7fec7a0178f9faf6e6","src/response.rs":"12cf82de2499a426686ed4f3719cce73e269b7b9ddc9c88458e7378beb2c58a8","src/tls.rs":"04c24a03556823f287e7a7bcd73c89d2f205b3b8dfe3e602b70d1cfc5b118f8d","src/util.rs":"8a957635c5bec50b71f5bd5254794afe0bfb71f5d8dc0523fc1700063ab9234f","src/wasm/body.rs":"45309584d278eef32ac592e225ededdfaeba3e09fe295820a8c3babfe4fa79e9","src/wasm/client.rs":"8481c8d2550faf64a3e98f3934b34477639a1bcc00625c292a7796f5acf460d0","src/wasm/mod.rs":"2ba7da28d66b5b25312bf0c4387d1d5ffe4429dfd20c2db78713329298dd7690","src/wasm/multipart.rs":"7c5fae9d5ba166a812c61fb50dd2abf0d499d1e2c4a03097f378fc3c420372fa","src/wasm/request.rs":"7dd268bfb909fbf2720e02dcb9f396008364c4d9c12b47ec7132883d63617aad","src/wasm/response.rs":"3a2b446a73f563c80f7a4a4e9c5f6ac78e535ad08d6711874578d097ace53091","tests/badssl.rs":"32af96c2423a0d958577f0ac93af2c11fec724a129a46de3aa907d831cba263e","tests/blocking.rs":"53680debb01b2d0c8f0a0d95b355c6625a50a2773e74f0be6920f5cce6f1a144","tests/brotli.rs":"9dcada695d377de0aa727741bc4fa8d87b04d80c3abe5af6912cc3e85e455f9b","tests/client.rs":"51e27c6f02161e2fc029f9505b749866c9dbffda29e2b904c1b4d8eb73f2ff74","tests/cookie.rs":"fadf20a8b4f850a84916090f31006a56f7193398b50cf930f217009a0a3d0df4","tests/deflate.rs":"12bfccbd8c48d2075151ff2f0743d5eefa9b4d5ccc022b289dfecf1df18dfc4d","tests/gzip.rs":"fea12ccf89e67e7f61348838d0688e33778d022d0ff164739e1dc0d409675a6c","tests/multipart.rs":"2403d5f57c7409d553fb609885abdd147d1b05cdb3d079e7c6fa70df3c882de9","tests/proxy.rs":"bb09e85249e2c6b9a8b9521c28b90f021bad68cd32abbe4ff59f82c7c0d6afd2","tests/redirect.rs":"df4a208d2ac1c4d15c3d2aa632ca617ffcf83c7045fdf4432bad07364e1fc355","tests/support/mod.rs":"52cb3c53251f4336fc3964dd4bf2df53e5a8fd846e66802f8d18089daea80e18","tests/support/server.rs":"50cc68350577a056dba0627a29118b0e4d5857969bde35ce966da4996ebe55bd","tests/timeouts.rs":"30dfb00c26d13b014243fd7b040b86b6fdf0b96b57831bed952ff931f4c9c0e8","tests/upgrade.rs":"43797b650ce4885b3db2366ae6fdb2d50e1fbe5ee8dfad036459c2e1ea121c72","tests/wasm_simple.rs":"b24a55ac8f3bc3a4fe2a4a3454fdc289855dee072fde002f7d3f9624dbaabc50"},"package":"3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/reqwest/Cargo.lock temporalio-1.3.0/vendor/reqwest/Cargo.lock --- temporalio-1.3.0/vendor/reqwest/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -3,6 +3,15 @@ version = 3 [[package]] +name = "addr2line" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +dependencies = [ + "gimli", +] + +[[package]] name = "adler" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -16,33 +25,33 @@ [[package]] name = "aho-corasick" -version = "0.7.18" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +checksum = "6748e8def348ed4d14996fa801f4122cd763fff530258cdc03f64b25f89d3a5a" dependencies = [ "memchr", ] [[package]] name = "alloc-no-stdlib" -version = "2.0.3" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ef4730490ad1c4eae5c4325b2a95f521d023e5c885853ff7aca0a6a1631db3" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" [[package]] name = "alloc-stdlib" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "697ed7edc0f1711de49ce108c541623a0af97c6c60b2f6e2b65229847ac843c2" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" dependencies = [ "alloc-no-stdlib", ] [[package]] name = "async-compression" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0122885821398cc923ece939e24d1056a2384ee719432397fa9db87230ff11" +checksum = "62b74f44609f0f91493e3082d3734d98497e094777144380ea4db9f9905dd5b6" dependencies = [ "brotli", "flate2", @@ -54,13 +63,13 @@ [[package]] name = "async-trait" -version = "0.1.52" +version = "0.1.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" +checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ "proc-macro2", "quote", - "syn 1.0.95", + "syn 2.0.29", ] [[package]] @@ -69,7 +78,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", "winapi", ] @@ -81,16 +90,25 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] -name = "base64" -version = "0.13.0" +name = "backtrace" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] [[package]] name = "base64" -version = "0.21.0" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" +checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" [[package]] name = "bitflags" @@ -99,10 +117,16 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] +name = "bitflags" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" + +[[package]] name = "brotli" -version = "3.3.2" +version = "3.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71cb90ade945043d3d53597b2fc359bb063db8ade2bcffe7997351d0756e9d50" +checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -111,9 +135,9 @@ [[package]] name = "brotli-decompressor" -version = "2.3.2" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80" +checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -121,27 +145,24 @@ [[package]] name = "bumpalo" -version = "3.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6c" - -[[package]] -name = "byteorder" -version = "1.4.3" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" [[package]] name = "bytes" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" [[package]] name = "cc" -version = "1.0.72" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] [[package]] name = "cfg-if" @@ -161,9 +182,9 @@ [[package]] name = "cookie" -version = "0.16.0" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94d4706de1b0fa5b132270cddffa8585166037822e260a944fe161acd137ca05" +checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" dependencies = [ "percent-encoding", "time", @@ -172,15 +193,16 @@ [[package]] name = "cookie_store" -version = "0.16.1" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e4b6aa369f41f5faa04bb80c9b1f4216ea81646ed6124d76ba5c49a7aafd9cd" +checksum = "d606d0fba62e13cf04db20536c05cb7f13673c161cb47a47a82b9b9e7d3f1daa" dependencies = [ "cookie", - "idna", + "idna 0.2.3", "log", "publicsuffix", "serde", + "serde_derive", "serde_json", "time", "url", @@ -188,9 +210,9 @@ [[package]] name = "core-foundation" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6888e10551bb93e424d8df1d07f1a8b4fceb0001a3a4b048bfc47554946f47b3" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" dependencies = [ "core-foundation-sys", "libc", @@ -198,24 +220,30 @@ [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "crc32fast" -version = "1.3.0" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "738c290dfaea84fc1ca15ad9c168d083b05a714e1efddd8edaab678dc28d2836" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ "cfg-if", ] [[package]] name = "data-encoding" -version = "2.3.2" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" + +[[package]] +name = "deranged" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" +checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" [[package]] name = "doc-comment" @@ -225,15 +253,15 @@ [[package]] name = "either" -version = "1.6.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "encoding_rs" -version = "0.8.30" +version = "0.8.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dc8abb250ffdda33912550faa54c88ec8b998dec0b2c55ab224921ce11df" +checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" dependencies = [ "cfg-if", ] @@ -247,7 +275,7 @@ "heck", "proc-macro2", "quote", - "syn 1.0.95", + "syn 1.0.109", ] [[package]] @@ -264,6 +292,27 @@ ] [[package]] +name = "errno" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] name = "fastrand" version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -273,14 +322,18 @@ ] [[package]] +name = "fastrand" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" + +[[package]] name = "flate2" -version = "1.0.22" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" +checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" dependencies = [ - "cfg-if", "crc32fast", - "libc", "miniz_oxide", ] @@ -307,11 +360,10 @@ [[package]] name = "form_urlencoded" -version = "1.0.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ - "matches", "percent-encoding", ] @@ -371,7 +423,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.29", ] [[package]] @@ -406,20 +458,26 @@ [[package]] name = "getrandom" -version = "0.2.3" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "libc", - "wasi 0.10.2+wasi-snapshot-preview1", + "wasi", ] [[package]] +name = "gimli" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" + +[[package]] name = "h2" -version = "0.3.10" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c9de88456263e249e241fcd211d3954e2c9b0ef7ccfc235a444eb367cae3689" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ "bytes", "fnv", @@ -430,7 +488,7 @@ "indexmap", "slab", "tokio", - "tokio-util 0.6.9", + "tokio-util", "tracing", ] @@ -441,7 +499,7 @@ checksum = "6de6ca43eed186fd055214af06967b0a7a68336cefec7e8a4004e96efeaccb9e" dependencies = [ "bytes", - "fastrand", + "fastrand 1.9.0", "futures-util", "http", "tokio", @@ -459,20 +517,20 @@ "h3", "quinn", "quinn-proto", - "tokio-util 0.7.8", + "tokio-util", ] [[package]] name = "hashbrown" -version = "0.11.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "heck" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" @@ -484,6 +542,12 @@ ] [[package]] +name = "hermit-abi" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" + +[[package]] name = "hostname" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -507,9 +571,9 @@ [[package]] name = "http-body" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ "bytes", "http", @@ -518,15 +582,15 @@ [[package]] name = "httparse" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" @@ -536,9 +600,9 @@ [[package]] name = "hyper" -version = "0.14.19" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42dc3c131584288d375f2d07f822b0cb012d8c6fb899a5b9fdb3cb7eb9b6004f" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ "bytes", "futures-channel", @@ -560,10 +624,11 @@ [[package]] name = "hyper-rustls" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0646026eb1b3eea4cd9ba47912ea5ce9cc07713d105b1a14698f4e6433d348b7" +checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" dependencies = [ + "futures-util", "http", "hyper", "rustls", @@ -596,10 +661,30 @@ ] [[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] name = "indexmap" -version = "1.7.0" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown", @@ -616,33 +701,33 @@ [[package]] name = "ipconfig" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "723519edce41262b05d4143ceb95050e4c614f483e78e9fd9e39a8275a84ad98" +checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.4.9", + "socket2 0.5.3", "widestring", - "winapi", - "winreg 0.7.0", + "windows-sys", + "winreg", ] [[package]] name = "ipnet" -version = "2.3.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] name = "itoa" -version = "1.0.1" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "js-sys" -version = "0.3.55" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] @@ -655,15 +740,15 @@ [[package]] name = "libc" -version = "0.2.142" +version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "libflate" -version = "1.1.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16364af76ebb39b5869bb32c81fa93573267cd8c62bb3474e28d78fac3fb141e" +checksum = "5ff4ae71b685bbad2f2f391fe74f6b7659a34871c08b210fdc039e43bee07d18" dependencies = [ "adler32", "crc32fast", @@ -672,24 +757,30 @@ [[package]] name = "libflate_lz77" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39a734c0493409afcd49deee13c006a04e3586b9761a03543c6272c9c51f2f5a" +checksum = "a52d3a8bfc85f250440e4424db7d857e241a3aebbbe301f3eb606ab15c39acbf" dependencies = [ "rle-decode-fast", ] [[package]] name = "linked-hash-map" -version = "0.5.4" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linux-raw-sys" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" [[package]] name = "lock_api" -version = "0.4.7" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", @@ -697,12 +788,9 @@ [[package]] name = "log" -version = "0.4.14" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" -dependencies = [ - "cfg-if", -] +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "lru-cache" @@ -721,27 +809,27 @@ [[package]] name = "matches" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "memchr" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "mime" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" -version = "2.0.3" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" dependencies = [ "mime", "unicase", @@ -749,24 +837,22 @@ [[package]] name = "miniz_oxide" -version = "0.4.4" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ "adler", - "autocfg", ] [[package]] name = "mio" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", - "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.45.0", + "wasi", + "windows-sys", ] [[package]] @@ -789,65 +875,76 @@ [[package]] name = "num_cpus" -version = "1.13.1" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.2", "libc", ] [[package]] -name = "num_threads" -version = "0.1.6" +name = "object" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" dependencies = [ - "libc", + "memchr", ] [[package]] name = "once_cell" -version = "1.17.1" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "openssl" -version = "0.10.38" +version = "0.10.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95" +checksum = "729b745ad4a5575dd06a3e1af1414bd330ee561c01b3899eb584baeaa8def17e" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cfg-if", "foreign-types", "libc", "once_cell", + "openssl-macros", "openssl-sys", ] [[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] name = "openssl-probe" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "111.17.0+1.1.1m" +version = "111.27.0+1.1.1v" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d6a336abd10814198f66e2a91ccd7336611f30334119ca8ce300536666fcf4" +checksum = "06e8f197c82d7511c5b014030c9b1efeda40d7d5f99d23b4ceed3524a5e63f02" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.72" +version = "0.9.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb" +checksum = "866b5f16f90776b9bb8dc1e1802ac6f0513de3a7a7465867bfbc563dc737faac" dependencies = [ - "autocfg", "cc", "libc", "openssl-src", @@ -867,28 +964,28 @@ [[package]] name = "parking_lot_core" -version = "0.9.3" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-sys 0.36.1", + "windows-targets", ] [[package]] name = "percent-encoding" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" [[package]] name = "pin-utils" @@ -898,40 +995,38 @@ [[package]] name = "pkg-config" -version = "0.3.24" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "ppv-lite86" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.56" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" dependencies = [ "unicode-ident", ] [[package]] name = "psl-types" -version = "2.0.10" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8eda7c62d9ecaafdf8b62374c006de0adf61666ae96a96ba74a37134aa4e470" +checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" [[package]] name = "publicsuffix" -version = "2.1.1" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "292972edad6bbecc137ab84c5e36421a4a6c979ea31d3cc73540dd04315b33e1" +checksum = "96a8c1bda5ae1af7f99a2962e49df150414a43d62404644d98dd5c3a93d07457" dependencies = [ - "byteorder", - "hashbrown", - "idna", + "idna 0.3.0", "psl-types", ] @@ -943,9 +1038,9 @@ [[package]] name = "quinn" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21252f1c0fc131f1b69182db8f34837e8a69737b8251dff75636a9be0518c324" +checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75" dependencies = [ "bytes", "pin-project-lite", @@ -960,9 +1055,9 @@ [[package]] name = "quinn-proto" -version = "0.10.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85af4ed6ee5a89f26a26086e9089a6643650544c025158449a3626ebf72884b3" +checksum = "b83c2a964b8b68e6c9c616f09b735b436a78843704fa6979a076073e622f69dc" dependencies = [ "bytes", "rand", @@ -977,36 +1072,35 @@ [[package]] name = "quinn-udp" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6df19e284d93757a9fb91d63672f7741b129246a669db09d1c0063071debc0c0" +checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" dependencies = [ "bytes", "libc", "socket2 0.5.3", "tracing", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] name = "quote" -version = "1.0.26" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha", "rand_core", - "rand_hc", ] [[package]] @@ -1021,36 +1115,39 @@ [[package]] name = "rand_core" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom", ] [[package]] -name = "rand_hc" -version = "0.3.1" +name = "redox_syscall" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ - "rand_core", + "bitflags 1.3.2", ] [[package]] -name = "redox_syscall" -version = "0.2.10" +name = "regex" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" +checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" dependencies = [ - "bitflags", + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", ] [[package]] -name = "regex" -version = "1.5.4" +name = "regex-automata" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" +checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" dependencies = [ "aho-corasick", "memchr", @@ -1059,25 +1156,16 @@ [[package]] name = "regex-syntax" -version = "0.6.25" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" - -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi", -] +checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" [[package]] name = "reqwest" -version = "0.11.18" +version = "0.11.20" dependencies = [ "async-compression", - "base64 0.21.0", + "base64", "brotli", "bytes", "cookie", @@ -1109,7 +1197,7 @@ "quinn", "rustls", "rustls-native-certs", - "rustls-pemfile 1.0.0", + "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", @@ -1117,7 +1205,7 @@ "tokio-native-tls", "tokio-rustls", "tokio-socks", - "tokio-util 0.7.8", + "tokio-util", "tower-service", "trust-dns-resolver", "url", @@ -1127,7 +1215,7 @@ "wasm-streams", "web-sys", "webpki-roots", - "winreg 0.10.1", + "winreg", ] [[package]] @@ -1157,9 +1245,15 @@ [[package]] name = "rle-decode-fast" -version = "1.0.1" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" + +[[package]] +name = "rustc-demangle" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cabe4fa914dec5870285fa7f71f602645da47c486e68486d2b4ceb4a343e90ac" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustc-hash" @@ -1168,10 +1262,23 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] +name = "rustix" +version = "0.38.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" +dependencies = [ + "bitflags 2.4.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + +[[package]] name = "rustls" -version = "0.21.1" +version = "0.21.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c911ba11bc8433e811ce56fde130ccf32f5127cab0e0194e9c68c5a5b671791e" +checksum = "1d1feddffcfcc0b33f5c6ce9a29e341e4cd59c3f78e7ee45f4a40c038b1d6cbb" dependencies = [ "log", "ring", @@ -1181,39 +1288,30 @@ [[package]] name = "rustls-native-certs" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca9ebdfa27d3fc180e42879037b5338ab1c040c06affd00d8338598e7800943" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ "openssl-probe", - "rustls-pemfile 0.2.1", + "rustls-pemfile", "schannel", "security-framework", ] [[package]] name = "rustls-pemfile" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9" -dependencies = [ - "base64 0.13.0", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7522c9de787ff061458fe9a829dc790a3f5b22dc571694fc5883f448b94d9a9" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" dependencies = [ - "base64 0.13.0", + "base64", ] [[package]] name = "rustls-webpki" -version = "0.100.1" +version = "0.101.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6207cd5ed3d8dca7816f8f3725513a34609c0c765bf652b8c3cb4cfd87db46b" +checksum = "261e9e0888cba427c3316e6322805653c9425240b6fd96cee7cb671ab70ab8d0" dependencies = [ "ring", "untrusted", @@ -1221,31 +1319,30 @@ [[package]] name = "ryu" -version = "1.0.9" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "schannel" -version = "0.1.19" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "lazy_static", - "winapi", + "windows-sys", ] [[package]] name = "scoped-tls" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sct" @@ -1259,11 +1356,11 @@ [[package]] name = "security-framework" -version = "2.4.2" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525bc1abfda2e1998d152c45cf13e696f76d0a4972310b22fac1658b05df7c87" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" dependencies = [ - "bitflags", + "bitflags 1.3.2", "core-foundation", "core-foundation-sys", "libc", @@ -1272,9 +1369,9 @@ [[package]] name = "security-framework-sys" -version = "2.4.2" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9dd14d83160b528b7bfd66439110573efcfbe281b17fc2ca9f39f550d619c7e" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" dependencies = [ "core-foundation-sys", "libc", @@ -1282,29 +1379,29 @@ [[package]] name = "serde" -version = "1.0.137" +version = "1.0.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" +checksum = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.137" +version = "1.0.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be" +checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682" dependencies = [ "proc-macro2", "quote", - "syn 1.0.95", + "syn 2.0.29", ] [[package]] name = "serde_json" -version = "1.0.81" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" +checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" dependencies = [ "itoa", "ryu", @@ -1325,15 +1422,18 @@ [[package]] name = "slab" -version = "0.4.5" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +dependencies = [ + "autocfg", +] [[package]] name = "smallvec" -version = "1.7.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" [[package]] name = "socket2" @@ -1352,7 +1452,7 @@ checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -1363,9 +1463,9 @@ [[package]] name = "syn" -version = "1.0.95" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbaf6116ab8924f39d52792136fb74fd60a80194cf1b1c6ffa6453eef1c3f942" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", @@ -1374,9 +1474,9 @@ [[package]] name = "syn" -version = "2.0.15" +version = "2.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" +checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" dependencies = [ "proc-macro2", "quote", @@ -1385,95 +1485,104 @@ [[package]] name = "tempfile" -version = "3.2.0" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ "cfg-if", - "libc", - "rand", + "fastrand 2.0.0", "redox_syscall", - "remove_dir_all", - "winapi", + "rustix", + "windows-sys", ] [[package]] name = "termcolor" -version = "1.1.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" dependencies = [ "winapi-util", ] [[package]] name = "thiserror" -version = "1.0.30" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" +checksum = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.30" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" +checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b" dependencies = [ "proc-macro2", "quote", - "syn 1.0.95", + "syn 2.0.29", ] [[package]] name = "time" -version = "0.3.9" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd" +checksum = "a79d09ac6b08c1ab3906a2f7cc2e81a0e27c7ae89c63812df75e52bef0751e07" dependencies = [ + "deranged", "itoa", - "libc", - "num_threads", + "serde", + "time-core", "time-macros", ] [[package]] +name = "time-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" + +[[package]] name = "time-macros" -version = "0.2.4" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" +checksum = "75c65469ed6b3a4809d987a41eb1dc918e9bc1d92211cbad7ae82931846f7451" +dependencies = [ + "time-core", +] [[package]] name = "tinyvec" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.28.1" +version = "1.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aa32867d44e6f2ce3385e89dceb990188b8bb0fb25b0cf576647a6f98ac5105" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" dependencies = [ - "autocfg", + "backtrace", "bytes", "libc", "mio", "num_cpus", "pin-project-lite", - "socket2 0.4.9", + "socket2 0.5.3", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -1484,14 +1593,14 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.29", ] [[package]] name = "tokio-native-tls" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" dependencies = [ "native-tls", "tokio", @@ -1499,9 +1608,9 @@ [[package]] name = "tokio-rustls" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0d409377ff5b1e3ca6437aa86c1eb7d40c134bfec254e44c830defa92669db5" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ "rustls", "tokio", @@ -1521,20 +1630,6 @@ [[package]] name = "tokio-util" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-util" version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" @@ -1549,16 +1644,17 @@ [[package]] name = "tower-service" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.38" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9cf6a813d3f40c88b0b6b6f29a5c95c6cdbf97c1f9cc53fb820200f5ad814d" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ + "cfg-if", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -1566,20 +1662,20 @@ [[package]] name = "tracing-attributes" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.29", ] [[package]] name = "tracing-core" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" dependencies = [ "once_cell", ] @@ -1597,7 +1693,7 @@ "futures-channel", "futures-io", "futures-util", - "idna", + "idna 0.2.3", "ipnet", "lazy_static", "rand", @@ -1631,9 +1727,9 @@ [[package]] name = "try-lock" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "unicase" @@ -1646,21 +1742,21 @@ [[package]] name = "unicode-bidi" -version = "0.3.7" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.0" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unicode-normalization" -version = "0.1.19" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] @@ -1673,13 +1769,12 @@ [[package]] name = "url" -version = "2.2.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" dependencies = [ "form_urlencoded", - "idna", - "matches", + "idna 0.4.0", "percent-encoding", ] @@ -1697,31 +1792,24 @@ [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] [[package]] name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" - -[[package]] -name = "wasi" version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.78" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "serde", @@ -1731,24 +1819,24 @@ [[package]] name = "wasm-bindgen-backend" -version = "0.2.78" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837b" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", - "lazy_static", "log", + "once_cell", "proc-macro2", "quote", - "syn 1.0.95", + "syn 2.0.29", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.28" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e8d7523cb1f2a4c96c1317ca690031b714a51cc14e05f712446691f413f5d39" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ "cfg-if", "js-sys", @@ -1758,9 +1846,9 @@ [[package]] name = "wasm-bindgen-macro" -version = "0.2.78" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1768,28 +1856,28 @@ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.78" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 1.0.95", + "syn 2.0.29", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.78" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "wasm-bindgen-test" -version = "0.3.28" +version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96f1aa7971fdf61ef0f353602102dbea75a56e225ed036c1e3740564b91e6b7e" +checksum = "6e6e302a7ea94f83a6d09e78e7dc7d9ca7b186bc2829c24a22d0753efd680671" dependencies = [ "console_error_panic_hook", "js-sys", @@ -1801,9 +1889,9 @@ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.28" +version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6006f79628dfeb96a86d4db51fbf1344cd7fd8408f06fc9aa3c84913a4789688" +checksum = "ecb993dd8c836930ed130e020e77d9b2e65dd0fbab1b67c790b0f5d80b11a575" dependencies = [ "proc-macro2", "quote", @@ -1811,9 +1899,9 @@ [[package]] name = "wasm-streams" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bbae3363c08332cadccd13b67db371814cd214c2524020932f0804b8cf7c078" +checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7" dependencies = [ "futures-util", "js-sys", @@ -1824,38 +1912,25 @@ [[package]] name = "web-sys" -version = "0.3.55" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", ] [[package]] -name = "webpki" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] name = "webpki-roots" -version = "0.22.2" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "552ceb903e957524388c4d3475725ff2c8b7960922063af6ce53c9a43da07449" -dependencies = [ - "webpki", -] +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" [[package]] name = "widestring" -version = "0.5.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" +checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" [[package]] name = "winapi" @@ -1890,193 +1965,76 @@ [[package]] name = "windows-sys" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" -dependencies = [ - "windows_aarch64_msvc 0.36.1", - "windows_i686_gnu 0.36.1", - "windows_i686_msvc 0.36.1", - "windows_x86_64_gnu 0.36.1", - "windows_x86_64_msvc 0.36.1", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.0", + "windows-targets", ] [[package]] name = "windows-targets" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" -dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" -version = "0.36.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" - -[[package]] -name = "windows_i686_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" -version = "0.36.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.36.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winreg" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" -dependencies = [ - "winapi", -] - -[[package]] -name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if", + "windows-sys", ] diff -Nru temporalio-1.3.0/vendor/reqwest/Cargo.toml temporalio-1.3.0/vendor/reqwest/Cargo.toml --- temporalio-1.3.0/vendor/reqwest/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,9 +11,9 @@ [package] edition = "2018" -rust-version = "1.57.0" +rust-version = "1.63.0" name = "reqwest" -version = "0.11.18" +version = "0.11.20" authors = ["Sean McArthur "] autotests = true description = "higher level HTTP client library" @@ -190,7 +190,7 @@ "tokio-util", ] http3 = [ - "rustls-tls", + "rustls-tls-manual-roots", "h3", "h3-quinn", "quinn", @@ -262,7 +262,7 @@ version = "0.4.0" [target."cfg(not(target_arch = \"wasm32\"))".dependencies.hyper] -version = "0.14.18" +version = "0.14.21" features = [ "tcp", "http1", @@ -309,12 +309,13 @@ features = [ "tls-rustls", "ring", + "runtime-tokio", ] optional = true default-features = false [target."cfg(not(target_arch = \"wasm32\"))".dependencies.rustls] -version = "0.21.0" +version = "0.21.6" features = ["dangerous_configuration"] optional = true @@ -360,7 +361,7 @@ optional = true [target."cfg(not(target_arch = \"wasm32\"))".dependencies.webpki-roots] -version = "0.22" +version = "0.25" optional = true [target."cfg(not(target_arch = \"wasm32\"))".dev-dependencies.brotli_crate] @@ -414,7 +415,7 @@ version = "0.4.18" [target."cfg(target_arch = \"wasm32\")".dependencies.wasm-streams] -version = "0.2" +version = "0.3" optional = true [target."cfg(target_arch = \"wasm32\")".dependencies.web-sys] @@ -445,4 +446,4 @@ version = "0.3" [target."cfg(windows)".dependencies.winreg] -version = "0.10" +version = "0.50.0" diff -Nru temporalio-1.3.0/vendor/reqwest/CHANGELOG.md temporalio-1.3.0/vendor/reqwest/CHANGELOG.md --- temporalio-1.3.0/vendor/reqwest/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,19 @@ +## v0.11.20 + +- Fix `deflate` decompression back to using zlib, as outlined in the spec. + +## v0.11.19 + +- Add `ClientBuilder::http1_ignore_invalid_headers_in_responses()` option. +- Add `ClientBuilder::http1_allow_spaces_after_header_name_in_responses()` option. +- Add support for `ALL_PROXY` environment variable. +- Add support for `use_preconfigured_tls` when combined with HTTP/3. +- Fix `deflate` decompression from using the zlib decoder. +- Fix `Response::{text, text_with_charset}()` to strip BOM characters. +- Fix a panic when HTTP/3 is used if UDP isn't able to connect. +- Fix some dependencies for HTTP/3. +- Increase MSRV to 1.63. + ## v0.11.18 - Fix `RequestBuilder::json()` method from overriding a previously set `content-type` header. An existing value will be left in place. diff -Nru temporalio-1.3.0/vendor/reqwest/examples/simple.rs temporalio-1.3.0/vendor/reqwest/examples/simple.rs --- temporalio-1.3.0/vendor/reqwest/examples/simple.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/examples/simple.rs 2023-10-30 19:40:00.000000000 +0000 @@ -7,12 +7,11 @@ #[tokio::main] async fn main() -> Result<(), reqwest::Error> { // Some simple CLI args requirements... - let url = match std::env::args().nth(1) { - Some(url) => url, - None => { - println!("No CLI URL provided, using default."); - "https://hyper.rs".into() - } + let url = if let Some(url) = std::env::args().nth(1) { + url + } else { + println!("No CLI URL provided, using default."); + "https://hyper.rs".into() }; eprintln!("Fetching {:?}...", url); diff -Nru temporalio-1.3.0/vendor/reqwest/src/async_impl/client.rs temporalio-1.3.0/vendor/reqwest/src/async_impl/client.rs --- temporalio-1.3.0/vendor/reqwest/src/async_impl/client.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/src/async_impl/client.rs 2023-10-30 19:40:00.000000000 +0000 @@ -120,6 +120,8 @@ http09_responses: bool, http1_title_case_headers: bool, http1_allow_obsolete_multiline_headers_in_responses: bool, + http1_ignore_invalid_headers_in_responses: bool, + http1_allow_spaces_after_header_name_in_responses: bool, http2_initial_stream_window_size: Option, http2_initial_connection_window_size: Option, http2_adaptive_window: bool, @@ -201,6 +203,8 @@ http09_responses: false, http1_title_case_headers: false, http1_allow_obsolete_multiline_headers_in_responses: false, + http1_ignore_invalid_headers_in_responses: false, + http1_allow_spaces_after_header_name_in_responses: false, http2_initial_stream_window_size: None, http2_initial_connection_window_size: None, http2_adaptive_window: false, @@ -277,6 +281,55 @@ } let http = HttpConnector::new_with_resolver(DynResolver::new(resolver.clone())); + #[cfg(all(feature = "http3", feature = "__rustls"))] + let build_h3_connector = + |resolver, + tls, + quic_max_idle_timeout: Option, + quic_stream_receive_window, + quic_receive_window, + quic_send_window, + local_address, + http_version_pref: &HttpVersionPref| { + let mut transport_config = TransportConfig::default(); + + if let Some(max_idle_timeout) = quic_max_idle_timeout { + transport_config.max_idle_timeout(Some( + max_idle_timeout.try_into().map_err(error::builder)?, + )); + } + + if let Some(stream_receive_window) = quic_stream_receive_window { + transport_config.stream_receive_window(stream_receive_window); + } + + if let Some(receive_window) = quic_receive_window { + transport_config.receive_window(receive_window); + } + + if let Some(send_window) = quic_send_window { + transport_config.send_window(send_window); + } + + let res = H3Connector::new( + DynResolver::new(resolver), + tls, + local_address, + transport_config, + ); + + match res { + Ok(connector) => Ok(Some(connector)), + Err(err) => { + if let HttpVersionPref::Http3 = http_version_pref { + Err(error::builder(err)) + } else { + Ok(None) + } + } + } + }; + #[cfg(feature = "__tls")] match config.tls { #[cfg(feature = "default-tls")] @@ -319,6 +372,13 @@ id.add_to_native_tls(&mut tls)?; } } + #[cfg(all(feature = "__rustls", not(feature = "native-tls")))] + { + // Default backend + rustls Identity doesn't work. + if let Some(_id) = config.identity { + return Err(crate::error::builder("incompatible TLS identity type")); + } + } if let Some(min_tls_version) = config.min_tls_version { let protocol = min_tls_version.to_native_tls().ok_or_else(|| { @@ -360,14 +420,30 @@ config.nodelay, ), #[cfg(feature = "__rustls")] - TlsBackend::BuiltRustls(conn) => Connector::new_rustls_tls( - http, - conn, - proxies.clone(), - user_agent(&config.headers), - config.local_address, - config.nodelay, - ), + TlsBackend::BuiltRustls(conn) => { + #[cfg(feature = "http3")] + { + h3_connector = build_h3_connector( + resolver, + conn.clone(), + config.quic_max_idle_timeout, + config.quic_stream_receive_window, + config.quic_receive_window, + config.quic_send_window, + config.local_address, + &config.http_version_pref, + )?; + } + + Connector::new_rustls_tls( + http, + conn, + proxies.clone(), + user_agent(&config.headers), + config.local_address, + config.nodelay, + ) + } #[cfg(feature = "__rustls")] TlsBackend::Rustls => { use crate::tls::NoVerifier; @@ -383,7 +459,7 @@ use rustls::OwnedTrustAnchor; let trust_anchors = - webpki_roots::TLS_SERVER_ROOTS.0.iter().map(|trust_anchor| { + webpki_roots::TLS_SERVER_ROOTS.iter().map(|trust_anchor| { OwnedTrustAnchor::from_subject_spki_name_constraints( trust_anchor.subject, trust_anchor.spki, @@ -391,7 +467,7 @@ ) }); - root_cert_store.add_server_trust_anchors(trust_anchors); + root_cert_store.add_trust_anchors(trust_anchors); } #[cfg(feature = "rustls-tls-native-roots")] @@ -491,32 +567,16 @@ { tls.enable_early_data = config.tls_enable_early_data; - let mut transport_config = TransportConfig::default(); - - if let Some(max_idle_timeout) = config.quic_max_idle_timeout { - transport_config.max_idle_timeout(Some( - max_idle_timeout.try_into().map_err(error::builder)?, - )); - } - - if let Some(stream_receive_window) = config.quic_stream_receive_window { - transport_config.stream_receive_window(stream_receive_window); - } - - if let Some(receive_window) = config.quic_receive_window { - transport_config.receive_window(receive_window); - } - - if let Some(send_window) = config.quic_send_window { - transport_config.send_window(send_window); - } - - h3_connector = Some(H3Connector::new( - DynResolver::new(resolver), + h3_connector = build_h3_connector( + resolver, tls.clone(), + config.quic_max_idle_timeout, + config.quic_stream_receive_window, + config.quic_receive_window, + config.quic_send_window, config.local_address, - transport_config, - )); + &config.http_version_pref, + )?; } Connector::new_rustls_tls( @@ -588,6 +648,14 @@ builder.http1_allow_obsolete_multiline_headers_in_responses(true); } + if config.http1_ignore_invalid_headers_in_responses { + builder.http1_ignore_invalid_headers_in_responses(true); + } + + if config.http1_allow_spaces_after_header_name_in_responses { + builder.http1_allow_spaces_after_header_name_in_responses(true); + } + let proxies_maybe_http_auth = proxies.iter().any(|p| p.maybe_has_http_auth()); Ok(Client { @@ -595,11 +663,15 @@ accepts: config.accepts, #[cfg(feature = "cookies")] cookie_store: config.cookie_store, + // Use match instead of map since config is partially moved + // and it cannot be used in closure #[cfg(feature = "http3")] - h3_client: H3Client::new( - h3_connector.expect("missing HTTP/3 connector"), - config.pool_idle_timeout, - ), + h3_client: match h3_connector { + Some(h3_connector) => { + Some(H3Client::new(h3_connector, config.pool_idle_timeout)) + } + None => None, + }, hyper: builder.build(connector), headers: config.headers, redirect_policy: config.redirect_policy, @@ -983,6 +1055,26 @@ self } + /// Sets whether invalid header lines should be silently ignored in HTTP/1 responses. + pub fn http1_ignore_invalid_headers_in_responses(mut self, value: bool) -> ClientBuilder { + self.config.http1_ignore_invalid_headers_in_responses = value; + self + } + + /// Set whether HTTP/1 connections will accept spaces between header + /// names and the colon that follow them in responses. + /// + /// Newline codepoints (`\r` and `\n`) will be transformed to spaces when + /// parsing. + pub fn http1_allow_spaces_after_header_name_in_responses( + mut self, + value: bool, + ) -> ClientBuilder { + self.config + .http1_allow_spaces_after_header_name_in_responses = value; + self + } + /// Only use HTTP/1. pub fn http1_only(mut self) -> ClientBuilder { self.config.http_version_pref = HttpVersionPref::Http1; @@ -1695,10 +1787,10 @@ let in_flight = match version { #[cfg(feature = "http3")] - http::Version::HTTP_3 => { + http::Version::HTTP_3 if self.inner.h3_client.is_some() => { let mut req = builder.body(body).expect("valid request parts"); *req.headers_mut() = headers.clone(); - ResponseFuture::H3(self.inner.h3_client.request(req)) + ResponseFuture::H3(self.inner.h3_client.as_ref().unwrap().request(req)) } _ => { let mut req = builder @@ -1841,6 +1933,14 @@ f.field("http1_allow_obsolete_multiline_headers_in_responses", &true); } + if self.http1_ignore_invalid_headers_in_responses { + f.field("http1_ignore_invalid_headers_in_responses", &true); + } + + if self.http1_allow_spaces_after_header_name_in_responses { + f.field("http1_allow_spaces_after_header_name_in_responses", &true); + } + if matches!(self.http_version_pref, HttpVersionPref::Http1) { f.field("http1_only", &true); } @@ -1914,7 +2014,7 @@ headers: HeaderMap, hyper: HyperClient, #[cfg(feature = "http3")] - h3_client: H3Client, + h3_client: Option, redirect_policy: redirect::Policy, referer: bool, request_timeout: Option, @@ -2045,7 +2145,13 @@ .body(body) .expect("valid request parts"); *req.headers_mut() = self.headers.clone(); - ResponseFuture::H3(self.client.h3_client.request(req)) + ResponseFuture::H3( + self.client + .h3_client + .as_ref() + .expect("H3 client must exists, otherwise we can't have a h3 request here") + .request(req), + ) } _ => { let mut req = hyper::Request::builder() @@ -2267,7 +2373,10 @@ .expect("valid request parts"); *req.headers_mut() = headers.clone(); std::mem::swap(self.as_mut().headers(), &mut headers); - ResponseFuture::H3(self.client.h3_client.request(req)) + ResponseFuture::H3(self.client.h3_client + .as_ref() + .expect("H3 client must exists, otherwise we can't have a h3 request here") + .request(req)) } _ => { let mut req = hyper::Request::builder() diff -Nru temporalio-1.3.0/vendor/reqwest/src/async_impl/h3_client/connect.rs temporalio-1.3.0/vendor/reqwest/src/async_impl/h3_client/connect.rs --- temporalio-1.3.0/vendor/reqwest/src/async_impl/h3_client/connect.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/src/async_impl/h3_client/connect.rs 2023-10-30 19:40:00.000000000 +0000 @@ -28,7 +28,7 @@ tls: rustls::ClientConfig, local_addr: Option, transport_config: TransportConfig, - ) -> H3Connector { + ) -> Result { let mut config = ClientConfig::new(Arc::new(tls)); // FIXME: Replace this when there is a setter. config.transport_config(Arc::new(transport_config)); @@ -38,10 +38,10 @@ None => "[::]:0".parse::().unwrap(), }; - let mut endpoint = Endpoint::client(socket_addr).expect("unable to create QUIC endpoint"); + let mut endpoint = Endpoint::client(socket_addr)?; endpoint.set_default_client_config(config); - Self { resolver, endpoint } + Ok(Self { resolver, endpoint }) } pub async fn connect(&mut self, dest: Uri) -> Result { diff -Nru temporalio-1.3.0/vendor/reqwest/src/async_impl/request.rs temporalio-1.3.0/vendor/reqwest/src/async_impl/request.rs --- temporalio-1.3.0/vendor/reqwest/src/async_impl/request.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/src/async_impl/request.rs 2023-10-30 19:40:00.000000000 +0000 @@ -132,7 +132,7 @@ None => None, }; let mut req = Request::new(self.method().clone(), self.url().clone()); - *req.timeout_mut() = self.timeout().cloned(); + *req.timeout_mut() = self.timeout().copied(); *req.headers_mut() = self.headers().clone(); *req.version_mut() = self.version(); req.body = body; @@ -196,7 +196,7 @@ self.header_sensitive(key, value, false) } - /// Add a `Header` to this Request with ability to define if header_value is sensitive. + /// Add a `Header` to this Request with ability to define if `header_value` is sensitive. fn header_sensitive(mut self, key: K, value: V, sensitive: bool) -> RequestBuilder where HeaderName: TryFrom, diff -Nru temporalio-1.3.0/vendor/reqwest/src/async_impl/response.rs temporalio-1.3.0/vendor/reqwest/src/async_impl/response.rs --- temporalio-1.3.0/vendor/reqwest/src/async_impl/response.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/src/async_impl/response.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,3 @@ -use std::borrow::Cow; use std::fmt; use std::net::SocketAddr; use std::pin::Pin; @@ -130,6 +129,8 @@ /// Encoding is determined from the `charset` parameter of `Content-Type` header, /// and defaults to `utf-8` if not presented. /// + /// Note that the BOM is stripped from the returned String. + /// /// # Example /// /// ``` @@ -155,6 +156,8 @@ /// `charset` parameter of `Content-Type` header is still prioritized. For more information /// about the possible encoding name, please go to [`encoding_rs`] docs. /// + /// Note that the BOM is stripped from the returned String. + /// /// [`encoding_rs`]: https://docs.rs/encoding_rs/0.8/encoding_rs/#relationship-with-windows-code-pages /// /// # Example @@ -185,14 +188,7 @@ let full = self.bytes().await?; let (text, _, _) = encoding.decode(&full); - if let Cow::Owned(s) = text { - return Ok(s); - } - unsafe { - // decoding returned Cow::Borrowed, meaning these bytes - // are already valid utf8 - Ok(String::from_utf8_unchecked(full.to_vec())) - } + Ok(text.into_owned()) } /// Try to deserialize the response body as JSON. diff -Nru temporalio-1.3.0/vendor/reqwest/src/blocking/client.rs temporalio-1.3.0/vendor/reqwest/src/blocking/client.rs --- temporalio-1.3.0/vendor/reqwest/src/blocking/client.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/src/blocking/client.rs 2023-10-30 19:40:00.000000000 +0000 @@ -420,6 +420,20 @@ self.with_inner(|inner| inner.http1_allow_obsolete_multiline_headers_in_responses(value)) } + /// Sets whether invalid header lines should be silently ignored in HTTP/1 responses. + pub fn http1_ignore_invalid_headers_in_responses(self, value: bool) -> ClientBuilder { + self.with_inner(|inner| inner.http1_ignore_invalid_headers_in_responses(value)) + } + + /// Set whether HTTP/1 connections will accept spaces between header + /// names and the colon that follow them in responses. + /// + /// Newline codepoints (\r and \n) will be transformed to spaces when + /// parsing. + pub fn http1_allow_spaces_after_header_name_in_responses(self, value: bool) -> ClientBuilder { + self.with_inner(|inner| inner.http1_allow_spaces_after_header_name_in_responses(value)) + } + /// Only use HTTP/1. pub fn http1_only(self) -> ClientBuilder { self.with_inner(|inner| inner.http1_only()) diff -Nru temporalio-1.3.0/vendor/reqwest/src/lib.rs temporalio-1.3.0/vendor/reqwest/src/lib.rs --- temporalio-1.3.0/vendor/reqwest/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,7 @@ #![deny(missing_debug_implementations)] #![cfg_attr(docsrs, feature(doc_cfg))] #![cfg_attr(test, deny(warnings))] -#![doc(html_root_url = "https://docs.rs/reqwest/0.11.18")] +#![doc(html_root_url = "https://docs.rs/reqwest/0.11.20")] //! # reqwest //! diff -Nru temporalio-1.3.0/vendor/reqwest/src/proxy.rs temporalio-1.3.0/vendor/reqwest/src/proxy.rs --- temporalio-1.3.0/vendor/reqwest/src/proxy.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/src/proxy.rs 2023-10-30 19:40:00.000000000 +0000 @@ -141,16 +141,15 @@ } source = err.source(); } - if !presumed_to_have_scheme { - // the issue could have been caused by a missing scheme, so we try adding http:// - let try_this = format!("http://{}", self.as_str()); - try_this.into_url().map_err(|_| { - // return the original error - crate::error::builder(e) - })? - } else { + if presumed_to_have_scheme { return Err(crate::error::builder(e)); } + // the issue could have been caused by a missing scheme, so we try adding http:// + let try_this = format!("http://{}", self.as_str()); + try_this.into_url().map_err(|_| { + // return the original error + crate::error::builder(e) + })? } }; ProxyScheme::parse(url) @@ -330,7 +329,7 @@ .get("http") .and_then(|s| s.maybe_http_auth()) .is_some(), - _ => false, + Intercept::Https(_) => false, } } @@ -343,7 +342,7 @@ Intercept::Custom(custom) => { custom.call(uri).and_then(|s| s.maybe_http_auth().cloned()) } - _ => None, + Intercept::Https(_) => None, } } @@ -422,7 +421,7 @@ Self::from_string(&raw) } - /// Returns a new no-proxy configuration based on a no_proxy string (or `None` if no variables + /// Returns a new no-proxy configuration based on a `no_proxy` string (or `None` if no variables /// are set) /// The rules are as follows: /// * The environment variable `NO_PROXY` is checked, if it is not set, `no_proxy` is checked @@ -483,7 +482,7 @@ impl IpMatcher { fn contains(&self, addr: IpAddr) -> bool { - for ip in self.0.iter() { + for ip in &self.0 { match ip { Ip::Address(address) => { if &addr == address { @@ -507,7 +506,7 @@ // * https://github.com/curl/curl/issues/1208 fn contains(&self, domain: &str) -> bool { let domain_len = domain.len(); - for d in self.0.iter() { + for d in &self.0 { if d == domain || d.strip_prefix('.') == Some(domain) { return true; } else if domain.ends_with(d) { @@ -743,8 +742,8 @@ "{}://{}{}{}", uri.scheme(), uri.host(), - uri.port().map(|_| ":").unwrap_or(""), - uri.port().map(|p| p.to_string()).unwrap_or_default() + uri.port().map_or("", |_| ":"), + uri.port().map_or(String::new(), |p| p.to_string()) ) .parse() .expect("should be valid Url"); @@ -847,6 +846,13 @@ insert_from_env(&mut proxies, "https", "https_proxy"); } + if !(insert_from_env(&mut proxies, "http", "ALL_PROXY") + && insert_from_env(&mut proxies, "https", "ALL_PROXY")) + { + insert_from_env(&mut proxies, "http", "all_proxy"); + insert_from_env(&mut proxies, "https", "all_proxy"); + } + proxies } @@ -1135,6 +1141,7 @@ // save system setting first. let _g1 = env_guard("HTTP_PROXY"); let _g2 = env_guard("http_proxy"); + let _g3 = env_guard("ALL_PROXY"); // Mock ENV, get the results, before doing assertions // to avoid assert! -> panic! -> Mutex Poisoned. @@ -1145,6 +1152,9 @@ // set valid proxy env::set_var("http_proxy", "127.0.0.1/"); let valid_proxies = get_sys_proxies(None); + // set valid ALL_PROXY + env::set_var("ALL_PROXY", "127.0.0.2/"); + let all_proxies = get_sys_proxies(None); // reset user setting when guards drop drop(_g1); @@ -1158,6 +1168,9 @@ let p = &valid_proxies["http"]; assert_eq!(p.scheme(), "http"); assert_eq!(p.host(), "127.0.0.1"); + + assert_eq!(all_proxies.len(), 2); + assert!(all_proxies.values().all(|p| p.host() == "127.0.0.2")); } #[cfg(target_os = "windows")] diff -Nru temporalio-1.3.0/vendor/reqwest/src/tls.rs temporalio-1.3.0/vendor/reqwest/src/tls.rs --- temporalio-1.3.0/vendor/reqwest/src/tls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/src/tls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -307,7 +307,7 @@ ) -> crate::Result { match self.inner { ClientCert::Pem { key, certs } => config_builder - .with_single_cert(certs, key) + .with_client_auth_cert(certs, key) .map_err(crate::error::builder), #[cfg(feature = "native-tls")] ClientCert::Pkcs12(..) | ClientCert::Pkcs8(..) => { diff -Nru temporalio-1.3.0/vendor/reqwest/tests/blocking.rs temporalio-1.3.0/vendor/reqwest/tests/blocking.rs --- temporalio-1.3.0/vendor/reqwest/tests/blocking.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/tests/blocking.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,7 +3,7 @@ use http::header::CONTENT_TYPE; use http::HeaderValue; use std::collections::HashMap; -use support::*; +use support::server; #[test] fn test_response_text() { diff -Nru temporalio-1.3.0/vendor/reqwest/tests/brotli.rs temporalio-1.3.0/vendor/reqwest/tests/brotli.rs --- temporalio-1.3.0/vendor/reqwest/tests/brotli.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/tests/brotli.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ mod support; use std::io::Read; -use support::*; +use support::server; #[tokio::test] async fn brotli_response() { diff -Nru temporalio-1.3.0/vendor/reqwest/tests/client.rs temporalio-1.3.0/vendor/reqwest/tests/client.rs --- temporalio-1.3.0/vendor/reqwest/tests/client.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/tests/client.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,10 +2,12 @@ mod support; use futures_util::stream::StreamExt; +use support::server; + +#[cfg(feature = "json")] use http::header::CONTENT_TYPE; -use http::HeaderValue; +#[cfg(feature = "json")] use std::collections::HashMap; -use support::*; use reqwest::Client; @@ -382,7 +384,7 @@ fn add_json_default_content_type_if_not_set_manually() { let mut map = HashMap::new(); map.insert("body", "json"); - let content_type = HeaderValue::from_static("application/vnd.api+json"); + let content_type = http::HeaderValue::from_static("application/vnd.api+json"); let req = Client::new() .post("https://google.com/") .header(CONTENT_TYPE, &content_type) diff -Nru temporalio-1.3.0/vendor/reqwest/tests/cookie.rs temporalio-1.3.0/vendor/reqwest/tests/cookie.rs --- temporalio-1.3.0/vendor/reqwest/tests/cookie.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/tests/cookie.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ mod support; -use support::*; +use support::server; #[tokio::test] async fn cookie_response_accessor() { @@ -36,7 +36,7 @@ assert_eq!(cookies[1].name(), "expires"); assert_eq!( cookies[1].expires().unwrap(), - std::time::SystemTime::UNIX_EPOCH + std::time::Duration::from_secs(1445412480) + std::time::SystemTime::UNIX_EPOCH + std::time::Duration::from_secs(1_445_412_480) ); // path diff -Nru temporalio-1.3.0/vendor/reqwest/tests/deflate.rs temporalio-1.3.0/vendor/reqwest/tests/deflate.rs --- temporalio-1.3.0/vendor/reqwest/tests/deflate.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/tests/deflate.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ mod support; use std::io::Write; -use support::*; +use support::server; #[tokio::test] async fn deflate_response() { diff -Nru temporalio-1.3.0/vendor/reqwest/tests/gzip.rs temporalio-1.3.0/vendor/reqwest/tests/gzip.rs --- temporalio-1.3.0/vendor/reqwest/tests/gzip.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/tests/gzip.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ mod support; -use support::*; +use support::server; use std::io::Write; diff -Nru temporalio-1.3.0/vendor/reqwest/tests/multipart.rs temporalio-1.3.0/vendor/reqwest/tests/multipart.rs --- temporalio-1.3.0/vendor/reqwest/tests/multipart.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/tests/multipart.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,7 @@ #![cfg(not(target_arch = "wasm32"))] mod support; use futures_util::stream::StreamExt; -use support::*; +use support::server; #[tokio::test] async fn text_part() { diff -Nru temporalio-1.3.0/vendor/reqwest/tests/proxy.rs temporalio-1.3.0/vendor/reqwest/tests/proxy.rs --- temporalio-1.3.0/vendor/reqwest/tests/proxy.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/tests/proxy.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ #![cfg(not(target_arch = "wasm32"))] mod support; -use support::*; +use support::server; use std::env; diff -Nru temporalio-1.3.0/vendor/reqwest/tests/redirect.rs temporalio-1.3.0/vendor/reqwest/tests/redirect.rs --- temporalio-1.3.0/vendor/reqwest/tests/redirect.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/tests/redirect.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,14 +1,15 @@ #![cfg(not(target_arch = "wasm32"))] mod support; use futures_util::stream::StreamExt; -use support::*; +use hyper::Body; +use support::server; #[tokio::test] async fn test_redirect_301_and_302_and_303_changes_post_to_get() { let client = reqwest::Client::new(); let codes = [301u16, 302, 303]; - for &code in codes.iter() { + for &code in &codes { let redirect = server::http(move |req| async move { if req.method() == "POST" { assert_eq!(req.uri(), &*format!("/{}", code)); @@ -16,14 +17,14 @@ .status(code) .header("location", "/dst") .header("server", "test-redirect") - .body(Default::default()) + .body(Body::default()) .unwrap() } else { assert_eq!(req.method(), "GET"); http::Response::builder() .header("server", "test-dst") - .body(Default::default()) + .body(Body::default()) .unwrap() } }); @@ -44,7 +45,7 @@ async fn test_redirect_307_and_308_tries_to_get_again() { let client = reqwest::Client::new(); let codes = [307u16, 308]; - for &code in codes.iter() { + for &code in &codes { let redirect = server::http(move |req| async move { assert_eq!(req.method(), "GET"); if req.uri() == &*format!("/{}", code) { @@ -52,14 +53,14 @@ .status(code) .header("location", "/dst") .header("server", "test-redirect") - .body(Default::default()) + .body(Body::default()) .unwrap() } else { assert_eq!(req.uri(), "/dst"); http::Response::builder() .header("server", "test-dst") - .body(Default::default()) + .body(Body::default()) .unwrap() } }); @@ -81,7 +82,7 @@ let _ = env_logger::try_init(); let client = reqwest::Client::new(); let codes = [307u16, 308]; - for &code in codes.iter() { + for &code in &codes { let redirect = server::http(move |mut req| async move { assert_eq!(req.method(), "POST"); assert_eq!(req.headers()["content-length"], "5"); @@ -94,14 +95,14 @@ .status(code) .header("location", "/dst") .header("server", "test-redirect") - .body(Default::default()) + .body(Body::default()) .unwrap() } else { assert_eq!(req.uri(), "/dst"); http::Response::builder() .header("server", "test-dst") - .body(Default::default()) + .body(Body::default()) .unwrap() } }); @@ -123,7 +124,7 @@ fn test_redirect_307_does_not_try_if_reader_cannot_reset() { let client = reqwest::blocking::Client::new(); let codes = [307u16, 308]; - for &code in codes.iter() { + for &code in &codes { let redirect = server::http(move |mut req| async move { assert_eq!(req.method(), "POST"); assert_eq!(req.uri(), &*format!("/{}", code)); @@ -136,7 +137,7 @@ .status(code) .header("location", "/dst") .header("server", "test-redirect") - .body(Default::default()) + .body(Body::default()) .unwrap() }); @@ -179,7 +180,7 @@ http::Response::builder() .status(302) .header("location", format!("http://{}/end", end_addr)) - .body(Default::default()) + .body(Body::default()) .unwrap() }); @@ -205,7 +206,7 @@ http::Response::builder() .status(302) .header("location", "/loop") - .body(Default::default()) + .body(Body::default()) .unwrap() }); @@ -221,7 +222,7 @@ http::Response::builder() .status(302) .header("location", "/dont") - .body(Default::default()) + .body(Body::default()) .unwrap() }); @@ -247,7 +248,7 @@ http::Response::builder() .status(302) .header("location", "/dst") - .body(Default::default()) + .body(Body::default()) .unwrap() } else { assert_eq!(req.uri(), "/dst"); @@ -273,7 +274,7 @@ http::Response::builder() .status(302) .header("location", "http://www.yikes{KABOOM}") - .body(Default::default()) + .body(Body::default()) .unwrap() }); @@ -295,7 +296,7 @@ .status(302) .header("location", "/dst") .header("set-cookie", "key=value") - .body(Default::default()) + .body(Body::default()) .unwrap() } else { assert_eq!(req.uri(), "/dst"); @@ -325,7 +326,7 @@ http::Response::builder() .status(302) .header("location", "http://insecure") - .body(Default::default()) + .body(Body::default()) .unwrap() }); diff -Nru temporalio-1.3.0/vendor/reqwest/tests/timeouts.rs temporalio-1.3.0/vendor/reqwest/tests/timeouts.rs --- temporalio-1.3.0/vendor/reqwest/tests/timeouts.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/tests/timeouts.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ #![cfg(not(target_arch = "wasm32"))] mod support; -use support::*; +use support::server; use std::time::Duration; diff -Nru temporalio-1.3.0/vendor/reqwest/tests/upgrade.rs temporalio-1.3.0/vendor/reqwest/tests/upgrade.rs --- temporalio-1.3.0/vendor/reqwest/tests/upgrade.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/reqwest/tests/upgrade.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ #![cfg(not(target_arch = "wasm32"))] mod support; -use support::*; +use support::server; use tokio::io::{AsyncReadExt, AsyncWriteExt}; #[tokio::test] diff -Nru temporalio-1.3.0/vendor/ring/build.rs temporalio-1.3.0/vendor/ring/build.rs --- temporalio-1.3.0/vendor/ring/build.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/build.rs 2023-10-30 19:40:00.000000000 +0000 @@ -19,14 +19,12 @@ // another for the concrete logging implementation). Instead we use `eprintln!` // to log everything to stderr. -// In the `pregenerate_asm_main()` case we don't want to access (Cargo) -// environment variables at all, so avoid `use std::env` here. - use std::{ + ffi::{OsStr, OsString}, fs::{self, DirEntry}, + io::Write, path::{Path, PathBuf}, process::Command, - time::SystemTime, }; const X86: &str = "x86"; @@ -36,40 +34,44 @@ #[rustfmt::skip] const RING_SRCS: &[(&[&str], &str)] = &[ + (&[], "crypto/curve25519/curve25519.c"), (&[], "crypto/fipsmodule/aes/aes_nohw.c"), (&[], "crypto/fipsmodule/bn/montgomery.c"), (&[], "crypto/fipsmodule/bn/montgomery_inv.c"), + (&[], "crypto/fipsmodule/ec/ecp_nistz.c"), + (&[], "crypto/fipsmodule/ec/gfp_p256.c"), + (&[], "crypto/fipsmodule/ec/gfp_p384.c"), + (&[], "crypto/fipsmodule/ec/p256.c"), (&[], "crypto/limbs/limbs.c"), (&[], "crypto/mem.c"), (&[], "crypto/poly1305/poly1305.c"), (&[AARCH64, ARM, X86_64, X86], "crypto/crypto.c"), - (&[AARCH64, ARM, X86_64, X86], "crypto/curve25519/curve25519.c"), - (&[AARCH64, ARM, X86_64, X86], "crypto/fipsmodule/ec/ecp_nistz.c"), - (&[AARCH64, ARM, X86_64, X86], "crypto/fipsmodule/ec/ecp_nistz256.c"), - (&[AARCH64, ARM, X86_64, X86], "crypto/fipsmodule/ec/gfp_p256.c"), - (&[AARCH64, ARM, X86_64, X86], "crypto/fipsmodule/ec/gfp_p384.c"), - (&[X86_64, X86], "crypto/cpu-intel.c"), + (&[X86_64, X86], "crypto/cpu_intel.c"), (&[X86], "crypto/fipsmodule/aes/asm/aesni-x86.pl"), (&[X86], "crypto/fipsmodule/aes/asm/vpaes-x86.pl"), (&[X86], "crypto/fipsmodule/bn/asm/x86-mont.pl"), (&[X86], "crypto/chacha/asm/chacha-x86.pl"), - (&[X86], "crypto/fipsmodule/ec/asm/ecp_nistz256-x86.pl"), (&[X86], "crypto/fipsmodule/modes/asm/ghash-x86.pl"), + (&[X86_64], "crypto/chacha/asm/chacha-x86_64.pl"), + (&[X86_64], "crypto/curve25519/curve25519_64_adx.c"), (&[X86_64], "crypto/fipsmodule/aes/asm/aesni-x86_64.pl"), (&[X86_64], "crypto/fipsmodule/aes/asm/vpaes-x86_64.pl"), (&[X86_64], "crypto/fipsmodule/bn/asm/x86_64-mont.pl"), (&[X86_64], "crypto/fipsmodule/bn/asm/x86_64-mont5.pl"), - (&[X86_64], "crypto/chacha/asm/chacha-x86_64.pl"), (&[X86_64], "crypto/fipsmodule/ec/asm/p256-x86_64-asm.pl"), (&[X86_64], "crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl"), (&[X86_64], "crypto/fipsmodule/modes/asm/ghash-x86_64.pl"), (&[X86_64], "crypto/poly1305/poly1305_vec.c"), (&[X86_64], SHA512_X86_64), (&[X86_64], "crypto/cipher_extra/asm/chacha20_poly1305_x86_64.pl"), + (&[X86_64], "third_party/fiat/asm/fiat_curve25519_adx_mul.S"), + (&[X86_64], "third_party/fiat/asm/fiat_curve25519_adx_square.S"), + + (&[AARCH64, X86_64], "crypto/fipsmodule/ec/p256-nistz.c"), (&[AARCH64, ARM], "crypto/fipsmodule/aes/asm/aesv8-armx.pl"), (&[AARCH64, ARM], "crypto/fipsmodule/modes/asm/ghashv8-armx.pl"), @@ -79,17 +81,17 @@ (&[ARM], "crypto/fipsmodule/bn/asm/armv4-mont.pl"), (&[ARM], "crypto/chacha/asm/chacha-armv4.pl"), (&[ARM], "crypto/curve25519/asm/x25519-asm-arm.S"), - (&[ARM], "crypto/fipsmodule/ec/asm/ecp_nistz256-armv4.pl"), (&[ARM], "crypto/fipsmodule/modes/asm/ghash-armv4.pl"), (&[ARM], "crypto/poly1305/poly1305_arm.c"), (&[ARM], "crypto/poly1305/poly1305_arm_asm.S"), (&[ARM], "crypto/fipsmodule/sha/asm/sha256-armv4.pl"), (&[ARM], "crypto/fipsmodule/sha/asm/sha512-armv4.pl"), + (&[AARCH64], "crypto/chacha/asm/chacha-armv8.pl"), + (&[AARCH64], "crypto/cipher_extra/asm/chacha20_poly1305_armv8.pl"), (&[AARCH64], "crypto/fipsmodule/aes/asm/vpaes-armv8.pl"), (&[AARCH64], "crypto/fipsmodule/bn/asm/armv8-mont.pl"), - (&[AARCH64], "crypto/chacha/asm/chacha-armv8.pl"), - (&[AARCH64], "crypto/fipsmodule/ec/asm/ecp_nistz256-armv8.pl"), + (&[AARCH64], "crypto/fipsmodule/ec/asm/p256-armv8-asm.pl"), (&[AARCH64], "crypto/fipsmodule/modes/asm/ghash-neon-armv8.pl"), (&[AARCH64], SHA512_ARMV8), ]; @@ -102,66 +104,16 @@ const RING_TEST_SRCS: &[&str] = &[("crypto/constant_time_test.c")]; -#[rustfmt::skip] -const RING_INCLUDES: &[&str] = - &[ - "crypto/curve25519/curve25519_tables.h", - "crypto/curve25519/internal.h", - "crypto/fipsmodule/bn/internal.h", - "crypto/fipsmodule/ec/ecp_nistz256_table.inl", - "crypto/fipsmodule/ec/ecp_nistz384.inl", - "crypto/fipsmodule/ec/ecp_nistz.h", - "crypto/fipsmodule/ec/ecp_nistz384.h", - "crypto/fipsmodule/ec/ecp_nistz256.h", - "crypto/internal.h", - "crypto/limbs/limbs.h", - "crypto/limbs/limbs.inl", - "crypto/poly1305/internal.h", - "include/GFp/aes.h", - "include/GFp/arm_arch.h", - "include/GFp/base.h", - "include/GFp/check.h", - "include/GFp/cpu.h", - "include/GFp/mem.h", - "include/GFp/poly1305.h", - "include/GFp/type_check.h", - "third_party/fiat/curve25519_32.h", - "third_party/fiat/curve25519_64.h", - ]; - -#[rustfmt::skip] -const RING_PERL_INCLUDES: &[&str] = - &["crypto/perlasm/arm-xlate.pl", - "crypto/perlasm/x86gas.pl", - "crypto/perlasm/x86nasm.pl", - "crypto/perlasm/x86asm.pl", - "crypto/perlasm/x86_64-xlate.pl"]; - -const RING_BUILD_FILE: &[&str] = &["build.rs"]; - const PREGENERATED: &str = "pregenerated"; -fn c_flags(target: &Target) -> &'static [&'static str] { - if target.env != MSVC { +fn cpp_flags(compiler: &cc::Tool) -> &'static [&'static str] { + if !compiler.is_like_msvc() { static NON_MSVC_FLAGS: &[&str] = &[ "-std=c1x", // GCC 4.6 requires "c1x" instead of "c11" - "-Wbad-function-cast", - "-Wnested-externs", - "-Wstrict-prototypes", - ]; - NON_MSVC_FLAGS - } else { - &[] - } -} - -fn cpp_flags(target: &Target) -> &'static [&'static str] { - if target.env != MSVC { - static NON_MSVC_FLAGS: &[&str] = &[ "-pedantic", - "-pedantic-errors", "-Wall", "-Wextra", + "-Wbad-function-cast", "-Wcast-align", "-Wcast-qual", "-Wconversion", @@ -172,14 +124,15 @@ "-Winvalid-pch", "-Wmissing-field-initializers", "-Wmissing-include-dirs", + "-Wnested-externs", "-Wredundant-decls", "-Wshadow", "-Wsign-compare", "-Wsign-conversion", + "-Wstrict-prototypes", "-Wundef", "-Wuninitialized", "-Wwrite-strings", - "-fno-strict-aliasing", "-fvisibility=hidden", ]; NON_MSVC_FLAGS @@ -209,104 +162,236 @@ } } -const LD_FLAGS: &[&str] = &[]; - // None means "any OS" or "any target". The first match in sequence order is // taken. -const ASM_TARGETS: &[(&str, Option<&str>, Option<&str>)] = &[ - ("x86_64", Some("ios"), Some("macosx")), - ("x86_64", Some("macos"), Some("macosx")), - ("x86_64", Some(WINDOWS), Some("nasm")), - ("x86_64", None, Some("elf")), - ("aarch64", Some("ios"), Some("ios64")), - ("aarch64", Some("macos"), Some("ios64")), - ("aarch64", None, Some("linux64")), - ("x86", Some(WINDOWS), Some("win32n")), - ("x86", Some("ios"), Some("macosx")), - ("x86", None, Some("elf")), - ("arm", Some("ios"), Some("ios32")), - ("arm", None, Some("linux32")), - ("wasm32", None, None), +const ASM_TARGETS: &[AsmTarget] = &[ + AsmTarget { + oss: LINUX_ABI, + arch: "aarch64", + perlasm_format: "linux64", + asm_extension: "S", + preassemble: false, + }, + AsmTarget { + oss: LINUX_ABI, + arch: "arm", + perlasm_format: "linux32", + asm_extension: "S", + preassemble: false, + }, + AsmTarget { + oss: LINUX_ABI, + arch: "x86", + perlasm_format: "elf", + asm_extension: "S", + preassemble: false, + }, + AsmTarget { + oss: LINUX_ABI, + arch: "x86_64", + perlasm_format: "elf", + asm_extension: "S", + preassemble: false, + }, + AsmTarget { + oss: MACOS_ABI, + arch: "aarch64", + perlasm_format: "ios64", + asm_extension: "S", + preassemble: false, + }, + AsmTarget { + oss: MACOS_ABI, + arch: "x86_64", + perlasm_format: "macosx", + asm_extension: "S", + preassemble: false, + }, + AsmTarget { + oss: &[WINDOWS], + arch: "x86", + perlasm_format: "win32n", + asm_extension: "asm", + preassemble: true, + }, + AsmTarget { + oss: &[WINDOWS], + arch: "x86_64", + perlasm_format: "nasm", + asm_extension: "asm", + preassemble: true, + }, + AsmTarget { + oss: &[WINDOWS], + arch: "aarch64", + perlasm_format: "win64", + asm_extension: "S", + preassemble: false, + }, ]; +struct AsmTarget { + /// Operating systems. + oss: &'static [&'static str], + + /// Architectures. + arch: &'static str, + + /// The PerlAsm format name. + perlasm_format: &'static str, + + /// The filename extension for assembly files. + asm_extension: &'static str, + + /// Whether pre-assembled object files should be included in the Cargo + /// package instead of the asm sources. This way, the user doesn't need + /// to install an assembler for the target. This is particularly important + /// for x86/x86_64 Windows since an assembler doesn't come with the C + /// compiler. + preassemble: bool, +} + +/// Operating systems that have the same ABI as Linux on every architecture +/// mentioned in `ASM_TARGETS`. +const LINUX_ABI: &[&str] = &[ + "android", + "dragonfly", + "freebsd", + "fuchsia", + "haiku", + "illumos", + "netbsd", + "openbsd", + "linux", + "redox", + "solaris", +]; + +/// Operating systems that have the same ABI as macOS on every architecture +/// mentioned in `ASM_TARGETS`. +const MACOS_ABI: &[&str] = &["ios", "macos", "tvos"]; + const WINDOWS: &str = "windows"; -const MSVC: &str = "msvc"; -const MSVC_OBJ_OPT: &str = "/Fo"; -const MSVC_OBJ_EXT: &str = "obj"; + +/// Read an environment variable and tell Cargo that we depend on it. +/// +/// This needs to be used for any environment variable that isn't a standard +/// Cargo-supplied variable. +/// +/// The name is static since we intend to only read a static set of environment +/// variables. +fn read_env_var(name: &'static str) -> Option { + println!("cargo:rerun-if-env-changed={}", name); + std::env::var_os(name) +} fn main() { - if let Ok(package_name) = std::env::var("CARGO_PKG_NAME") { - if package_name == "ring" { - ring_build_rs_main(); - return; + const RING_PREGENERATE_ASM: &str = "RING_PREGENERATE_ASM"; + match read_env_var(RING_PREGENERATE_ASM).as_deref() { + Some(s) if s == "1" => { + pregenerate_asm_main(); + } + None => ring_build_rs_main(), + _ => { + panic!("${} has an invalid value", RING_PREGENERATE_ASM); } } - - pregenerate_asm_main(); } fn ring_build_rs_main() { use std::env; - let out_dir = env::var("OUT_DIR").unwrap(); + let out_dir = env::var_os("OUT_DIR").unwrap(); let out_dir = PathBuf::from(out_dir); let arch = env::var("CARGO_CFG_TARGET_ARCH").unwrap(); let os = env::var("CARGO_CFG_TARGET_OS").unwrap(); - let env = env::var("CARGO_CFG_TARGET_ENV").unwrap(); - let (obj_ext, obj_opt) = if env == MSVC { - (MSVC_OBJ_EXT, MSVC_OBJ_OPT) - } else { - ("o", "-o") + let is_musl = { + let env = env::var("CARGO_CFG_TARGET_ENV").unwrap(); + env.starts_with("musl") }; let is_git = std::fs::metadata(".git").is_ok(); - // Published builds are always release builds. + // Published builds are always built in release mode. let is_debug = is_git && env::var("DEBUG").unwrap() != "false"; + // If `.git` exists then assume this is the "local hacking" case where + // we want to make it easy to build *ring* using `cargo build`/`cargo test` + // without a prerequisite `package` step, at the cost of needing additional + // tools like `Perl` and/or `nasm`. + // + // If `.git` doesn't exist then assume that this is a packaged build where + // we want to optimize for minimizing the build tools required: No Perl, + // no nasm, etc. + let use_pregenerated = !is_git; + + // During local development, force warnings in non-Rust code to be treated + // as errors. Since warnings are highly compiler-dependent and compilers + // don't maintain backward compatibility w.r.t. which warnings they issue, + // don't do this for packaged builds. + let force_warnings_into_errors = is_git; + let target = Target { arch, os, - env, - obj_ext, - obj_opt, - is_git, + is_musl, is_debug, + force_warnings_into_errors, }; - let pregenerated = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()).join(PREGENERATED); + let pregenerated = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap()).join(PREGENERATED); - build_c_code(&target, pregenerated, &out_dir); - check_all_files_tracked() + build_c_code( + &target, + pregenerated, + &out_dir, + &ring_core_prefix(), + use_pregenerated, + ); + emit_rerun_if_changed() } fn pregenerate_asm_main() { + println!("cargo:rustc-cfg=pregenerate_asm_only"); + let pregenerated = PathBuf::from(PREGENERATED); std::fs::create_dir(&pregenerated).unwrap(); let pregenerated_tmp = pregenerated.join("tmp"); std::fs::create_dir(&pregenerated_tmp).unwrap(); - for &(target_arch, target_os, perlasm_format) in ASM_TARGETS { + generate_prefix_symbols_asm_headers(&pregenerated_tmp, &ring_core_prefix()).unwrap(); + + for asm_target in ASM_TARGETS { // For Windows, package pregenerated object files instead of // pregenerated assembly language source files, so that the user // doesn't need to install the assembler. - let asm_dir = if target_os == Some(WINDOWS) { + let asm_dir = if asm_target.preassemble { &pregenerated_tmp } else { &pregenerated }; - if let Some(perlasm_format) = perlasm_format { - let perlasm_src_dsts = - perlasm_src_dsts(&asm_dir, target_arch, target_os, perlasm_format); - perlasm(&perlasm_src_dsts, target_arch, perlasm_format, None); - - if target_os == Some(WINDOWS) { - let srcs = asm_srcs(perlasm_src_dsts); - for src in srcs { - let obj_path = obj_path(&pregenerated, &src, MSVC_OBJ_EXT); - run_command(nasm(&src, target_arch, &obj_path)); - } + let perlasm_src_dsts = perlasm_src_dsts(asm_dir, asm_target); + perlasm(&perlasm_src_dsts, asm_target); + + if asm_target.preassemble { + // Preassembly is currently only done for Windows targets. + assert_eq!(&asm_target.oss, &[WINDOWS]); + let os = WINDOWS; + + let srcs = asm_srcs(perlasm_src_dsts); + + let target = Target { + arch: asm_target.arch.to_owned(), + os: os.to_owned(), + is_musl: false, + is_debug: false, + force_warnings_into_errors: true, + }; + + let b = new_build(&target, &pregenerated_tmp); + for src in srcs { + win_asm(&b, &src, &target, &pregenerated_tmp, &pregenerated); } } } @@ -315,50 +400,31 @@ struct Target { arch: String, os: String, - env: String, - obj_ext: &'static str, - obj_opt: &'static str, - is_git: bool, - is_debug: bool, -} -fn build_c_code(target: &Target, pregenerated: PathBuf, out_dir: &Path) { - #[cfg(not(feature = "wasm32_c"))] - { - if &target.arch == "wasm32" { - return; - } - } + /// Is the target one that uses the musl C standard library instead of the default? + is_musl: bool, - let includes_modified = RING_INCLUDES - .iter() - .chain(RING_BUILD_FILE.iter()) - .chain(RING_PERL_INCLUDES.iter()) - .map(|f| file_modified(Path::new(*f))) - .max() - .unwrap(); + /// Is this a debug build? This affects whether assertions might be enabled + /// in the C code. For packaged builds, this should always be `false`. + is_debug: bool, - fn is_none_or_equals(opt: Option, other: T) -> bool - where - T: PartialEq, - { - if let Some(value) = opt { - value == other - } else { - true - } - } + /// true: Force warnings to be treated as errors. + /// false: Use the default behavior (perhaps determined by `$CFLAGS`, etc.) + force_warnings_into_errors: bool, +} - let (_, _, perlasm_format) = ASM_TARGETS - .iter() - .find(|entry| { - let &(entry_arch, entry_os, _) = *entry; - entry_arch == target.arch && is_none_or_equals(entry_os, &target.os) - }) - .unwrap(); +fn build_c_code( + target: &Target, + pregenerated: PathBuf, + out_dir: &Path, + ring_core_prefix: &str, + use_pregenerated: bool, +) { + println!("cargo:rustc-env=RING_CORE_PREFIX={}", ring_core_prefix); - let use_pregenerated = !target.is_git; - let warnings_are_errors = target.is_git; + let asm_target = ASM_TARGETS.iter().find(|asm_target| { + asm_target.arch == target.arch && asm_target.oss.contains(&target.os.as_ref()) + }); let asm_dir = if use_pregenerated { &pregenerated @@ -366,63 +432,68 @@ out_dir }; - let asm_srcs = if let Some(perlasm_format) = perlasm_format { - let perlasm_src_dsts = - perlasm_src_dsts(asm_dir, &target.arch, Some(&target.os), perlasm_format); + generate_prefix_symbols_header(out_dir, "prefix_symbols.h", '#', None, ring_core_prefix) + .unwrap(); + + generate_prefix_symbols_asm_headers(out_dir, ring_core_prefix).unwrap(); + + let (asm_srcs, obj_srcs) = if let Some(asm_target) = asm_target { + let perlasm_src_dsts = perlasm_src_dsts(asm_dir, asm_target); if !use_pregenerated { - perlasm( - &perlasm_src_dsts[..], - &target.arch, - perlasm_format, - Some(includes_modified), - ); + perlasm(&perlasm_src_dsts[..], asm_target); } - let mut asm_srcs = asm_srcs(perlasm_src_dsts); + let asm_srcs = asm_srcs(perlasm_src_dsts); // For Windows we also pregenerate the object files for non-Git builds so - // the user doesn't need to install the assembler. On other platforms we - // assume the C compiler also assembles. - if use_pregenerated && target.os == WINDOWS { - // The pregenerated object files always use ".obj" as the extension, - // even when the C/C++ compiler outputs files with the ".o" extension. - asm_srcs = asm_srcs + // the user doesn't need to install the assembler. + if use_pregenerated && target.os == WINDOWS && asm_target.preassemble { + let obj_srcs = asm_srcs .iter() - .map(|src| obj_path(&pregenerated, src.as_path(), "obj")) + .map(|src| obj_path(&pregenerated, src.as_path())) .collect::>(); + (vec![], obj_srcs) + } else { + (asm_srcs, vec![]) } - - asm_srcs } else { - Vec::new() + (vec![], vec![]) }; let core_srcs = sources_for_arch(&target.arch) .into_iter() - .filter(|p| !is_perlasm(&p)) + .filter(|p| !is_perlasm(p)) + .filter(|p| { + if let Some(extension) = p.extension() { + // We don't (and can't) use any .S on Windows since MSVC and NASM can't assemble + // them. + if extension == "S" + && (target.arch == X86_64 || target.arch == X86) + && target.os == WINDOWS + { + return false; + } + } + true + }) .collect::>(); let test_srcs = RING_TEST_SRCS.iter().map(PathBuf::from).collect::>(); let libs = [ - ("ring-core", &core_srcs[..], &asm_srcs[..]), - ("ring-test", &test_srcs[..], &[]), + ("", &core_srcs[..], &asm_srcs[..], &obj_srcs[..]), + ("test", &test_srcs[..], &[], &[]), ]; // XXX: Ideally, ring-test would only be built for `cargo test`, but Cargo // can't do that yet. - libs.iter().for_each(|&(lib_name, srcs, additional_srcs)| { - build_library( - &target, - &out_dir, - lib_name, - srcs, - additional_srcs, - warnings_are_errors, - includes_modified, - ) - }); + libs.iter() + .for_each(|&(lib_name_suffix, srcs, asm_srcs, obj_srcs)| { + let lib_name = String::from(ring_core_prefix) + lib_name_suffix; + let srcs = srcs.iter().chain(asm_srcs); + build_library(target, out_dir, &lib_name, srcs, obj_srcs) + }); println!( "cargo:rustc-link-search=native={}", @@ -430,119 +501,96 @@ ); } -fn build_library( +fn new_build(target: &Target, include_dir: &Path) -> cc::Build { + let mut b = cc::Build::new(); + configure_cc(&mut b, target, include_dir); + b +} + +fn build_library<'a>( target: &Target, out_dir: &Path, lib_name: &str, - srcs: &[PathBuf], - additional_srcs: &[PathBuf], - warnings_are_errors: bool, - includes_modified: SystemTime, + srcs: impl Iterator, + preassembled_objs: &[PathBuf], ) { + let mut c = new_build(target, out_dir); + // Compile all the (dirty) source files into object files. - let objs = additional_srcs - .iter() - .chain(srcs.iter()) - .filter(|f| &target.env != "msvc" || f.extension().unwrap().to_str().unwrap() != "S") - .map(|f| compile(f, target, warnings_are_errors, out_dir, includes_modified)) - .collect::>(); + srcs.for_each(|src| { + // XXX: `b.file(p)` isn't enough to assemble an '.S' with clang on aarch64-pc-windows-msvc + // presumably due to a bug in cc-rs; it doesn't pass clang `-c` like it does for other + // targets. + if target.os != WINDOWS || !matches!(src.extension(), Some(e) if e == "S" || e == "asm") { + c.file(src); + } else { + let obj = win_asm(&c, src, target, out_dir, out_dir); + c.object(obj); + } + }); + + preassembled_objs.iter().for_each(|obj| { + c.object(obj); + }); // Rebuild the library if necessary. let lib_path = PathBuf::from(out_dir).join(format!("lib{}.a", lib_name)); - if objs - .iter() - .map(Path::new) - .any(|p| need_run(&p, &lib_path, includes_modified)) - { - let mut c = cc::Build::new(); + // Handled below. + let _ = c.cargo_metadata(false); - for f in LD_FLAGS { - let _ = c.flag(&f); - } - match target.os.as_str() { - "macos" => { - let _ = c.flag("-fPIC"); - let _ = c.flag("-Wl,-dead_strip"); - } - _ => { - let _ = c.flag("-Wl,--gc-sections"); - } - } - for o in objs { - let _ = c.object(o); - } - - // Handled below. - let _ = c.cargo_metadata(false); - - c.compile( - lib_path - .file_name() - .and_then(|f| f.to_str()) - .expect("No filename"), - ); - } + c.compile( + lib_path + .file_name() + .and_then(|f| f.to_str()) + .expect("No filename"), + ); // Link the library. This works even when the library doesn't need to be // rebuilt. println!("cargo:rustc-link-lib=static={}", lib_name); } -fn compile( +fn win_asm( + b: &cc::Build, p: &Path, target: &Target, - warnings_are_errors: bool, + include_dir: &Path, out_dir: &Path, - includes_modified: SystemTime, -) -> String { +) -> PathBuf { let ext = p.extension().unwrap().to_str().unwrap(); - if ext == "obj" { - p.to_str().expect("Invalid path").into() + let out_file = obj_path(out_dir, p); + let cmd = if target.os != WINDOWS || ext != "asm" { + cc_asm(b, p, &out_file) } else { - let mut out_path = out_dir.join(p.file_name().unwrap()); - assert!(out_path.set_extension(target.obj_ext)); - if need_run(&p, &out_path, includes_modified) { - let cmd = if target.os != WINDOWS || ext != "asm" { - cc(p, ext, target, warnings_are_errors, &out_path) - } else { - nasm(p, &target.arch, &out_path) - }; + nasm(p, &target.arch, include_dir, &out_file) + }; - run_command(cmd); - } - out_path.to_str().expect("Invalid path").into() - } + run_command(cmd); + out_file } -fn obj_path(out_dir: &Path, src: &Path, obj_ext: &str) -> PathBuf { +fn obj_path(out_dir: &Path, src: &Path) -> PathBuf { let mut out_path = out_dir.join(src.file_name().unwrap()); - assert!(out_path.set_extension(obj_ext)); + // To eliminate unnecessary conditional logic, use ".o" as the extension, + // even when the compiler (e.g. MSVC) would normally use something else + // (e.g. ".obj"). cc-rs seems to do the same. + assert!(out_path.set_extension("o")); out_path } -fn cc( - file: &Path, - ext: &str, - target: &Target, - warnings_are_errors: bool, - out_dir: &Path, -) -> Command { - let is_musl = target.env.starts_with("musl"); +fn configure_cc(c: &mut cc::Build, target: &Target, include_dir: &Path) { + // FIXME: On Windows AArch64 we currently must use Clang to compile C code + if target.os == WINDOWS && target.arch == AARCH64 && !c.get_compiler().is_like_clang() { + let _ = c.compiler("clang"); + } + + let compiler = c.get_compiler(); - let mut c = cc::Build::new(); let _ = c.include("include"); - match ext { - "c" => { - for f in c_flags(target) { - let _ = c.flag(f); - } - } - "S" => (), - e => panic!("Unsupported file extension: {:?}", e), - }; - for f in cpp_flags(target) { - let _ = c.flag(&f); + let _ = c.include(include_dir); + for f in cpp_flags(&compiler) { + let _ = c.flag(f); } if target.os != "none" && target.os != "redox" @@ -552,21 +600,18 @@ let _ = c.flag("-fstack-protector"); } - match (target.os.as_str(), target.env.as_str()) { + if target.os.as_str() == "macos" { // ``-gfull`` is required for Darwin's |-dead_strip|. - ("macos", _) => { - let _ = c.flag("-gfull"); - } - (_, "msvc") => (), - _ => { - let _ = c.flag("-g3"); - } + let _ = c.flag("-gfull"); + } else if !compiler.is_like_msvc() { + let _ = c.flag("-g3"); }; + if !target.is_debug { let _ = c.define("NDEBUG", None); } - if &target.env == "msvc" { + if compiler.is_like_msvc() { if std::env::var("OPT_LEVEL").unwrap() == "0" { let _ = c.flag("/Od"); // Disable optimization for debug builds. // run-time checking: (s)tack frame, (u)ninitialized variables @@ -580,26 +625,21 @@ // // poly1305_vec.c requires which requires . if (target.arch == "wasm32" && target.os == "unknown") - || (target.os == "linux" && is_musl && target.arch != "x86_64") + || (target.os == "linux" && target.is_musl && target.arch != "x86_64") { if let Ok(compiler) = c.try_get_compiler() { // TODO: Expand this to non-clang compilers in 0.17.0 if practical. if compiler.is_like_clang() { let _ = c.flag("-nostdlibinc"); - let _ = c.define("GFp_NOSTDLIBINC", "1"); + let _ = c.define("RING_CORE_NOSTDLIBINC", "1"); } } } - if warnings_are_errors { - let flag = if &target.env != "msvc" { - "-Werror" - } else { - "/WX" - }; - let _ = c.flag(flag); + if target.force_warnings_into_errors { + c.warnings_into_errors(true); } - if is_musl { + if target.is_musl { // Some platforms enable _FORTIFY_SOURCE by default, but musl // libc doesn't support it yet. See // http://wiki.musl-libc.org/wiki/Future_Ideas#Fortify @@ -607,41 +647,51 @@ // http://www.openwall.com/lists/musl/2015/06/17/1 let _ = c.flag("-U_FORTIFY_SOURCE"); } +} - let mut c = c.get_compiler().to_command(); - let _ = c - .arg("-c") - .arg(format!( - "{}{}", - target.obj_opt, - out_dir.to_str().expect("Invalid path") - )) - .arg(file); +/// Assembles the assemply language source `file` into the object file +/// `out_file`. +fn cc_asm(b: &cc::Build, file: &Path, out_file: &Path) -> Command { + let cc = b.get_compiler(); + let obj_opt = if cc.is_like_msvc() { "/Fo" } else { "-o" }; + let mut arg = OsString::from(obj_opt); + arg.push(out_file); + + let mut c = cc.to_command(); + let _ = c.arg("-c").arg(arg).arg(file); c } -fn nasm(file: &Path, arch: &str, out_file: &Path) -> Command { +fn nasm(file: &Path, arch: &str, include_dir: &Path, out_file: &Path) -> Command { let oformat = match arch { - "x86_64" => ("win64"), - "x86" => ("win32"), + "x86_64" => "win64", + "x86" => "win32", _ => panic!("unsupported arch: {}", arch), }; - let mut c = Command::new("./target/tools/nasm"); + + // Nasm requires that the path end in a path separator. + let mut include_dir = include_dir.as_os_str().to_os_string(); + include_dir.push(std::ffi::OsString::from(String::from( + std::path::MAIN_SEPARATOR, + ))); + + let mut c = Command::new("./target/tools/windows/nasm/nasm"); let _ = c .arg("-o") .arg(out_file.to_str().expect("Invalid path")) .arg("-f") .arg(oformat) + .arg("-i") + .arg("include/") + .arg("-i") + .arg(include_dir) .arg("-Xgnu") .arg("-gcv8") .arg(file); c } -fn run_command_with_args(command_name: S, args: &[String]) -where - S: AsRef + Copy, -{ +fn run_command_with_args(command_name: &OsStr, args: &[String]) { let mut cmd = Command::new(command_name); let _ = cmd.args(args); run_command(cmd) @@ -665,17 +715,12 @@ .collect::>() } -fn perlasm_src_dsts( - out_dir: &Path, - arch: &str, - os: Option<&str>, - perlasm_format: &str, -) -> Vec<(PathBuf, PathBuf)> { - let srcs = sources_for_arch(arch); +fn perlasm_src_dsts(out_dir: &Path, asm_target: &AsmTarget) -> Vec<(PathBuf, PathBuf)> { + let srcs = sources_for_arch(asm_target.arch); let mut src_dsts = srcs .iter() .filter(|p| is_perlasm(p)) - .map(|src| (src.clone(), asm_path(out_dir, src, os, perlasm_format))) + .map(|src| (src.clone(), asm_path(out_dir, src, asm_target))) .collect::>(); // Some PerlAsm source files need to be run multiple times with different @@ -688,7 +733,7 @@ let synthesized_path = PathBuf::from(synthesized); src_dsts.push(( concrete_path, - asm_path(out_dir, &synthesized_path, os, perlasm_format), + asm_path(out_dir, &synthesized_path, asm_target), )) } }; @@ -710,32 +755,24 @@ path.extension().unwrap().to_str().unwrap() == "pl" } -fn asm_path(out_dir: &Path, src: &Path, os: Option<&str>, perlasm_format: &str) -> PathBuf { +fn asm_path(out_dir: &Path, src: &Path, asm_target: &AsmTarget) -> PathBuf { let src_stem = src.file_stem().expect("source file without basename"); let dst_stem = src_stem.to_str().unwrap(); - let dst_extension = if os == Some("windows") { "asm" } else { "S" }; - let dst_filename = format!("{}-{}.{}", dst_stem, perlasm_format, dst_extension); + let dst_filename = format!( + "{}-{}.{}", + dst_stem, asm_target.perlasm_format, asm_target.asm_extension + ); out_dir.join(dst_filename) } -fn perlasm( - src_dst: &[(PathBuf, PathBuf)], - arch: &str, - perlasm_format: &str, - includes_modified: Option, -) { +fn perlasm(src_dst: &[(PathBuf, PathBuf)], asm_target: &AsmTarget) { for (src, dst) in src_dst { - if let Some(includes_modified) = includes_modified { - if !need_run(src, dst, includes_modified) { - continue; - } - } - - let mut args = Vec::::new(); - args.push(src.to_string_lossy().into_owned()); - args.push(perlasm_format.to_owned()); - if arch == "x86" { + let mut args = vec![ + src.to_string_lossy().into_owned(), + asm_target.perlasm_format.to_owned(), + ]; + if asm_target.arch == "x86" { args.push("-fPIC".into()); args.push("-DOPENSSL_IA32_SSE2".into()); } @@ -744,63 +781,35 @@ let dst = dst .to_str() .expect("Could not convert path") - .replace("\\", "/"); + .replace('\\', "/"); args.push(dst); run_command_with_args(&get_command("PERL_EXECUTABLE", "perl"), &args); } } -fn need_run(source: &Path, target: &Path, includes_modified: SystemTime) -> bool { - let s_modified = file_modified(source); - if let Ok(target_metadata) = std::fs::metadata(target) { - let target_modified = target_metadata.modified().unwrap(); - s_modified >= target_modified || includes_modified >= target_modified - } else { - // On error fetching metadata for the target file, assume the target - // doesn't exist. - true - } -} - -fn file_modified(path: &Path) -> SystemTime { - let path = Path::new(path); - let path_as_str = format!("{:?}", path); - std::fs::metadata(path) - .expect(&path_as_str) - .modified() - .expect("nah") +fn get_command(var: &'static str, default: &str) -> OsString { + read_env_var(var).unwrap_or_else(|| default.into()) } -fn get_command(var: &str, default: &str) -> String { - std::env::var(var).unwrap_or_else(|_| default.into()) -} - -fn check_all_files_tracked() { +// TODO: We should emit `cargo:rerun-if-changed-env` for the various +// environment variables that affect the build. +fn emit_rerun_if_changed() { for path in &["crypto", "include", "third_party/fiat"] { - walk_dir(&PathBuf::from(path), &is_tracked); - } -} - -fn is_tracked(file: &DirEntry) { - let p = file.path(); - let cmp = |f| p == PathBuf::from(f); - let tracked = match p.extension().and_then(|p| p.to_str()) { - Some("h") | Some("inl") => RING_INCLUDES.iter().any(cmp), - Some("c") | Some("S") | Some("asm") => { - RING_SRCS.iter().any(|(_, f)| cmp(f)) || RING_TEST_SRCS.iter().any(cmp) - } - Some("pl") => RING_SRCS.iter().any(|(_, f)| cmp(f)) || RING_PERL_INCLUDES.iter().any(cmp), - _ => true, - }; - if !tracked { - panic!("{:?} is not tracked in build.rs", p); + walk_dir(&PathBuf::from(path), &|entry| { + let path = entry.path(); + match path.extension().and_then(|ext| ext.to_str()) { + Some("c") | Some("S") | Some("h") | Some("inl") | Some("pl") | None => { + println!("cargo:rerun-if-changed={}", path.to_str().unwrap()); + } + _ => { + // Ignore other types of files. + } + } + }) } } -fn walk_dir(dir: &Path, cb: &F) -where - F: Fn(&DirEntry), -{ +fn walk_dir(dir: &Path, cb: &impl Fn(&DirEntry)) { if dir.is_dir() { for entry in fs::read_dir(dir).unwrap() { let entry = entry.unwrap(); @@ -813,3 +822,229 @@ } } } + +fn ring_core_prefix() -> String { + let links = std::env::var("CARGO_MANIFEST_LINKS").unwrap(); + + let computed = { + let name = std::env::var("CARGO_PKG_NAME").unwrap(); + let version = std::env::var("CARGO_PKG_VERSION").unwrap(); + name + "_core_" + &version.replace(&['-', '.'][..], "_") + }; + + assert_eq!(links, computed); + + links + "_" +} + +/// Creates the necessary header files for symbol renaming that are included by +/// assembly code. +/// +/// For simplicity, both non-Nasm- and Nasm- style headers are always +/// generated, even though local non-packaged builds need only one of them. +fn generate_prefix_symbols_asm_headers(out_dir: &Path, prefix: &str) -> Result<(), std::io::Error> { + generate_prefix_symbols_header( + out_dir, + "prefix_symbols_asm.h", + '#', + Some("#if defined(__APPLE__)"), + prefix, + )?; + + generate_prefix_symbols_header( + out_dir, + "prefix_symbols_nasm.inc", + '%', + Some("%ifidn __OUTPUT_FORMAT__,win32"), + prefix, + )?; + + Ok(()) +} + +fn generate_prefix_symbols_header( + out_dir: &Path, + filename: &str, + pp: char, + prefix_condition: Option<&str>, + prefix: &str, +) -> Result<(), std::io::Error> { + let dir = out_dir.join("ring_core_generated"); + std::fs::create_dir_all(&dir)?; + + let path = dir.join(filename); + let mut file = std::fs::File::create(path)?; + + let filename_ident = filename.replace('.', "_").to_uppercase(); + writeln!( + file, + r#" +{pp}ifndef ring_core_generated_{filename_ident} +{pp}define ring_core_generated_{filename_ident} +"#, + pp = pp, + filename_ident = filename_ident + )?; + + if let Some(prefix_condition) = prefix_condition { + writeln!(file, "{}", prefix_condition)?; + writeln!(file, "{}", prefix_all_symbols(pp, "_", prefix))?; + writeln!(file, "{pp}else", pp = pp)?; + }; + writeln!(file, "{}", prefix_all_symbols(pp, "", prefix))?; + if prefix_condition.is_some() { + writeln!(file, "{pp}endif", pp = pp)? + } + + writeln!(file, "{pp}endif", pp = pp)?; + + Ok(()) +} + +fn prefix_all_symbols(pp: char, prefix_prefix: &str, prefix: &str) -> String { + // Rename some nistz256 assembly functions to match the names of their + // polyfills. + static SYMBOLS_TO_RENAME: &[(&str, &str)] = &[ + ("ecp_nistz256_point_double", "p256_point_double"), + ("ecp_nistz256_point_add", "p256_point_add"), + ("ecp_nistz256_point_add_affine", "p256_point_add_affine"), + ("ecp_nistz256_ord_mul_mont", "p256_scalar_mul_mont"), + ("ecp_nistz256_ord_sqr_mont", "p256_scalar_sqr_rep_mont"), + ("ecp_nistz256_mul_mont", "p256_mul_mont"), + ("ecp_nistz256_sqr_mont", "p256_sqr_mont"), + ]; + + static SYMBOLS_TO_PREFIX: &[&str] = &[ + "CRYPTO_memcmp", + "CRYPTO_poly1305_finish", + "CRYPTO_poly1305_finish_neon", + "CRYPTO_poly1305_init", + "CRYPTO_poly1305_init_neon", + "CRYPTO_poly1305_update", + "CRYPTO_poly1305_update_neon", + "ChaCha20_ctr32", + "LIMBS_add_mod", + "LIMBS_are_even", + "LIMBS_are_zero", + "LIMBS_equal", + "LIMBS_equal_limb", + "LIMBS_less_than", + "LIMBS_less_than_limb", + "LIMBS_reduce_once", + "LIMBS_select_512_32", + "LIMBS_shl_mod", + "LIMBS_sub_mod", + "LIMBS_window5_split_window", + "LIMBS_window5_unsplit_window", + "LIMB_shr", + "OPENSSL_armcap_P", + "OPENSSL_cpuid_setup", + "OPENSSL_ia32cap_P", + "aes_hw_ctr32_encrypt_blocks", + "aes_hw_encrypt", + "aes_hw_set_encrypt_key", + "aes_nohw_ctr32_encrypt_blocks", + "aes_nohw_encrypt", + "aes_nohw_set_encrypt_key", + "aesni_gcm_decrypt", + "aesni_gcm_encrypt", + "bn_from_montgomery_in_place", + "bn_gather5", + "bn_mul_mont", + "bn_mul_mont_gather5", + "bn_neg_inv_mod_r_u64", + "bn_power5", + "bn_scatter5", + "bn_sqr8x_internal", + "bn_sqrx8x_internal", + "bsaes_ctr32_encrypt_blocks", + "bssl_constant_time_test_conditional_memcpy", + "bssl_constant_time_test_conditional_memxor", + "bssl_constant_time_test_main", + "chacha20_poly1305_open", + "chacha20_poly1305_seal", + "fiat_curve25519_adx_mul", + "fiat_curve25519_adx_square", + "gcm_ghash_avx", + "gcm_ghash_clmul", + "gcm_ghash_neon", + "gcm_gmult_clmul", + "gcm_gmult_neon", + "gcm_init_avx", + "gcm_init_clmul", + "gcm_init_neon", + "k25519Precomp", + "limbs_mul_add_limb", + "little_endian_bytes_from_scalar", + "ecp_nistz256_neg", + "ecp_nistz256_select_w5", + "ecp_nistz256_select_w7", + "nistz384_point_add", + "nistz384_point_double", + "nistz384_point_mul", + "p256_mul_mont", + "p256_point_add", + "p256_point_add_affine", + "p256_point_double", + "p256_point_mul", + "p256_point_mul_base", + "p256_scalar_mul_mont", + "p256_scalar_sqr_rep_mont", + "p256_sqr_mont", + "p384_elem_div_by_2", + "p384_elem_mul_mont", + "p384_elem_neg", + "p384_elem_sub", + "p384_scalar_mul_mont", + "openssl_poly1305_neon2_addmulmod", + "openssl_poly1305_neon2_blocks", + "sha256_block_data_order", + "sha512_block_data_order", + "vpaes_ctr32_encrypt_blocks", + "vpaes_encrypt", + "vpaes_encrypt_key_to_bsaes", + "vpaes_set_encrypt_key", + "x25519_NEON", + "x25519_fe_invert", + "x25519_fe_isnegative", + "x25519_fe_mul_ttt", + "x25519_fe_neg", + "x25519_fe_tobytes", + "x25519_ge_double_scalarmult_vartime", + "x25519_ge_frombytes_vartime", + "x25519_ge_scalarmult_base", + "x25519_ge_scalarmult_base_adx", + "x25519_public_from_private_generic_masked", + "x25519_sc_mask", + "x25519_sc_muladd", + "x25519_sc_reduce", + "x25519_scalar_mult_adx", + "x25519_scalar_mult_generic_masked", + ]; + + let mut out = String::new(); + + for (old, new) in SYMBOLS_TO_RENAME { + let line = format!( + "{pp}define {prefix_prefix}{old} {prefix_prefix}{new}\n", + pp = pp, + prefix_prefix = prefix_prefix, + old = old, + new = new + ); + out += &line; + } + + for symbol in SYMBOLS_TO_PREFIX { + let line = format!( + "{pp}define {prefix_prefix}{symbol} {prefix_prefix}{prefix}{symbol}\n", + pp = pp, + prefix_prefix = prefix_prefix, + prefix = prefix, + symbol = symbol + ); + out += &line; + } + + out +} diff -Nru temporalio-1.3.0/vendor/ring/.cargo-checksum.json temporalio-1.3.0/vendor/ring/.cargo-checksum.json --- temporalio-1.3.0/vendor/ring/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1,322 @@ -{"files":{"Cargo.toml":"9ea7674888129f591cd4eb5dc5f594bcbf09796e3b4ff8a3a9e1b27f7fe344d4","LICENSE":"76b39f9b371688eac9d8323f96ee80b3aef5ecbc2217f25377bd4e4a615296a9","build.rs":"1a850d791184374f614d01c86c8d6c9ba0500e64cb746edc9720ceaaa1cd8eaf","crypto/chacha/asm/chacha-armv4.pl":"776e12b3bd3894583a82bec19b1cbcdf03e3834902c5f54f7319c8e8cfa2cebd","crypto/chacha/asm/chacha-armv8.pl":"0d5e1d236c7fdea5bcba73c4d594672ff8b8d7ef2c35fd494939b6bd0b6f0b33","crypto/chacha/asm/chacha-x86.pl":"f92f3a0e6d11aee4a355e973fcaad7cbde2bda916f42b15e54fcd970914758d8","crypto/chacha/asm/chacha-x86_64.pl":"14c685c8e090b70f371506597645863a86ff58f0e894e0b453301b6c15ed4f94","crypto/cipher_extra/asm/chacha20_poly1305_x86_64.pl":"d996a994c0401d90838693423c517a76987a8921fb66047345eab201addcc12c","crypto/constant_time_test.c":"e0a214714cf547b5767980f408fc4108c7ad696547f5cab4b1eb26010af0c576","crypto/cpu-intel.c":"978e626c5232f355a006582e24eb82eba809de871d48d82c0c1d5ea60e99965e","crypto/crypto.c":"08fc0099b3be08a3762f57e5fb4dc8df323a14996ecba024193d308d75fcd0f8","crypto/curve25519/asm/x25519-asm-arm.S":"2871b4e3ee564fe44580a468920c2b47efe54a93157d6f166f91bd4689900390","crypto/curve25519/curve25519.c":"21a36b21532fef5f9c3a05e2998b1f9cc3cf213dfe9aece75c31eb18f3cfa57a","crypto/curve25519/curve25519_tables.h":"aabc1281eb622d433ef1869a2550d6f35a2b2347c5fb67ba1512b0c17bcc93b1","crypto/curve25519/internal.h":"90c1fc2fdc98e88d5505be2004b4b8f8830e8774576b210092be95622491ecc2","crypto/fipsmodule/aes/aes_nohw.c":"db8dda69362c7075e71cde44687231729006edd7fdfaa0bd7614be6c982ec6cd","crypto/fipsmodule/aes/asm/aesni-x86.pl":"7f901a13e28787a0c54716dd53fa06fbb19a16e0c99b85e1a53c2fac22b40b15","crypto/fipsmodule/aes/asm/aesni-x86_64.pl":"5da2ca798ef7a4bd70c38515c6f8d5ede5c66cc5400f092a7e5b3553755d1d22","crypto/fipsmodule/aes/asm/aesv8-armx.pl":"b848ebe14f72b33a0d67665e3fe800a1e7d8f4c4ff26e168f2baa4660439a329","crypto/fipsmodule/aes/asm/bsaes-armv7.pl":"7b926cdb2a7249a06b3d072c296dca2c5ca454de0504a3a0d882e88aafdf8cfe","crypto/fipsmodule/aes/asm/vpaes-x86.pl":"6024058bdc1ac8bf3dd6dcfec69bb3185964c67310a64b3cea31dbbaed413114","crypto/fipsmodule/aes/asm/vpaes-x86_64.pl":"a5e6039f9af10f6f246794189643c46bd753b573c01d7076bacf5c5aace5f7c8","crypto/fipsmodule/bn/asm/armv4-mont.pl":"8608cd13cd8a6ae5f607b4c86dda2c9c5434c596bb24b9a71e34f5944945b250","crypto/fipsmodule/bn/asm/armv8-mont.pl":"85ae9aecc0de393406d01623c121f2f4fedaab381f3213897f228a201cc2272a","crypto/fipsmodule/bn/asm/x86-mont.pl":"beec8c6b561c0bb36da7fa273884adb47345a4e1a5c4a987d40b4f32ee75058c","crypto/fipsmodule/bn/asm/x86_64-mont.pl":"d006778aa240c3c4173e00166ffd5e7475a75a1f8957a2e1e8bb19ab4fddfbe9","crypto/fipsmodule/bn/asm/x86_64-mont5.pl":"02c2f13e1afc1819ff9ad47f1774b7b6c3b055ddc360919a84c860413239fc2a","crypto/fipsmodule/bn/internal.h":"09193ba3c20593b78c560c95541d11fd3a4f695d6f619c4fa6ecdc521b0b5a92","crypto/fipsmodule/bn/montgomery.c":"864c83a6d2e8b7b2dddd92ef01a3df30339ef5447c4974e8ab4a8028a098609d","crypto/fipsmodule/bn/montgomery_inv.c":"c894c171a817feca2487561657ed746ab6adc23b6844d5155dfe58852a0f9974","crypto/fipsmodule/ec/asm/ecp_nistz256-armv4.pl":"92306d57efaa4ee29537af036c9442f5baad7060009a2cedad3258b462c619cd","crypto/fipsmodule/ec/asm/ecp_nistz256-armv8.pl":"107cbb066e158bdbf7e711870e7f4407d83191a7fdbb60bf027e187ca43d3a77","crypto/fipsmodule/ec/asm/ecp_nistz256-x86.pl":"b9457d8d77eb17cc545d28e04eced96a95371e12927a56f68e4e3c38205cf4e8","crypto/fipsmodule/ec/asm/p256-x86_64-asm.pl":"80ac45f0afc4569ea654dedab46f125acf7646a9b2c6a9ad98bfdacacfe8e6d7","crypto/fipsmodule/ec/ecp_nistz.c":"d5818610ec87e3194bfe54b0a89ff5c75ad8d4d637bd24c575d87d5efd341f79","crypto/fipsmodule/ec/ecp_nistz.h":"6eaa9ba8127bbcc97f3b260467470302ab65478b3bb9766e36c0eb29e83a6c4e","crypto/fipsmodule/ec/ecp_nistz256.c":"59a47768fb433f5c8c6bc1882385a3db64f4db25cc0b4dadbe13f6084d44abaf","crypto/fipsmodule/ec/ecp_nistz256.h":"b7de7f8edc225c90feda8f8822f7fc177f21c9019d342c8d9004187c6582deb0","crypto/fipsmodule/ec/ecp_nistz256_table.inl":"f897a158bbac30b08b41585fde64023d3288846ef90a23e0f3790fad8e3d8961","crypto/fipsmodule/ec/ecp_nistz384.h":"7aeb84e1d64b1018d8e0c89b97ae1e603f31f9cd4786104ce5932f4d425bb1d7","crypto/fipsmodule/ec/ecp_nistz384.inl":"afaef5c14e12a6b846d96435d77a277fa58af46161a125e10a9decf80849a8ca","crypto/fipsmodule/ec/gfp_p256.c":"ebe36852365a8fd98defb1ee144dd5fe240411a8d3955d4a14ddbf47cccb8fa7","crypto/fipsmodule/ec/gfp_p384.c":"00caa7965eb9638f054c37409ec86047b72e4ad7196b8fa0ccdcd7e1b525d56f","crypto/fipsmodule/ecdsa/ecdsa_verify_tests.txt":"a607b74542c3833ab907e74e341c988ed16ee1e4b02c4323887e82c881a6b990","crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl":"fb5840d6034ccb88ea0e8bbb87022edc34199a40305acfa598596fe691be87c2","crypto/fipsmodule/modes/asm/ghash-armv4.pl":"59c4d85d9f69acf6a9117c346401e783fc8e189b62b725d78fb8f13d8ed6aafd","crypto/fipsmodule/modes/asm/ghash-x86.pl":"60e670449f62cea9858a1a967743479d3f27e5e6e60c2f273a2fa554a6ca5b22","crypto/fipsmodule/modes/asm/ghash-x86_64.pl":"ffc134f81a2e0e168a92dbca6496b1b39594f3c41128b5c83c1fc3c9da436e0c","crypto/fipsmodule/modes/asm/ghashv8-armx.pl":"10ee68ce6f01833067aa7edffa06817fb032ec345d79518c8cadece7c3869008","crypto/fipsmodule/sha/asm/sha256-armv4.pl":"ddd3e3434f45f0d69318200a8aa372771bdfd4507f7109775b731fc171430ea9","crypto/fipsmodule/sha/asm/sha512-armv4.pl":"f935b851a593811b96cbbd18d06e50c38691407dbd6533e0e54eb272d5e6c7cf","crypto/fipsmodule/sha/asm/sha512-armv8.pl":"d53dbbb842ab1c0b9415f62b3e117be9a384f628140142fcaf193b843679676f","crypto/fipsmodule/sha/asm/sha512-x86_64.pl":"a9543814ec3e45642efbabacf3fc8fdb9e5ee1176c0540a81b4c4ec4255c3cf8","crypto/internal.h":"d8db57b0bc7dd309c6e3b8505597b2a6e52b122d9e9a749be9954c91d8ae4b29","crypto/limbs/limbs.c":"4aa7640aff6b2e0463040c08f652253db8b8d581b67439e5222846a978f4acce","crypto/limbs/limbs.h":"61a8b3e2f9f3c342e7642823e1185114b59f02a1a31d824a87e369927690e298","crypto/limbs/limbs.inl":"dbd7a3c2f4a4b57bef69be99746dde06128a8df8db2376fb445cd63acd6c0fae","crypto/mem.c":"18e2844c6205fab613031e671dac3b65ceeb18bb5125f2a11e4df7ec0c09ec0f","crypto/perlasm/arm-xlate.pl":"bb388297c8a58b81104514fa316da23b5dc1737ae7b3807686701f49c7b3afc5","crypto/perlasm/x86_64-xlate.pl":"0eb214c1d09a35bafe5a0a47b1252806034a2941746a4dfedcbe408608f86ac0","crypto/perlasm/x86asm.pl":"060eb03f8a2ce12b36164affd4501190498e9906c8b072822b63a0a0e3a315cc","crypto/perlasm/x86gas.pl":"183d2642ab2e4c76b46bcb97a92fd16c539d9c07331c7204b0564d78c9413817","crypto/perlasm/x86nasm.pl":"351b5f1df553b07f21696bff10a8d598bdfba165dbb1f636a032b021f4632316","crypto/poly1305/internal.h":"52eb2f8b4ae3336626e12951440d664a03b4022d0d84e754f9e47cdc1d375895","crypto/poly1305/poly1305.c":"7b9613bf27046c8c1e817ebe1f8368664157d6df9214904d43f34144bf5153ad","crypto/poly1305/poly1305_arm.c":"f2abd93575ca9e5a40685c770b0c3585371fc55483229f9fda29b6ffbffa1205","crypto/poly1305/poly1305_arm_asm.S":"76090c8e5588cfead864e3a134915c80e29bb05da30e3df10aa90eadc3ff2e4f","crypto/poly1305/poly1305_vec.c":"3ebf98e531493f3fd069da543a416565aca88d7703f70a996280393ec56c5b23","doc/link-to-readme.md":"84cff31ddc513710f4004b974b84301fc3fc0ebb7f070e33ae1814275206a58a","include/GFp/aes.h":"fe399abed5f51e4f87efb740db962bfbba8ee3da0895ff87a0adac01b84cec98","include/GFp/arm_arch.h":"eecf5feb17c99da6238a8795b1431b8e8ce00e0f308540e0873d454c729efaba","include/GFp/base.h":"b84ad976b2e971b4a83f9a6dabd83df52b5b098b711f4f201566e7e3d059c936","include/GFp/check.h":"76f0b1bbab92909fd18ae1f7715f4c925058aae998fa0d534e76de109ce34d05","include/GFp/cpu.h":"ee8f3861e73b89b3249763d2b030fdc9f23c79dea95977746df7a95c32ebfacf","include/GFp/mem.h":"a6c2172ca0be27017a6860773d61e2d2832dbce5298841176fbbf96fc243964f","include/GFp/poly1305.h":"ddfd01593b1db976475b6e0752e04abfc7a9aac3d5a226fedd98170078c7f9d8","include/GFp/type_check.h":"6311bbc55de60641683e0380014588dfc5fe8545d62a430f73289f6194bc9f81","pregenerated/aesni-gcm-x86_64-elf.S":"839f774f6e16f59a09a1314e8776cf1323272f9ab36f3874e7a2c678f127bb0a","pregenerated/aesni-gcm-x86_64-macosx.S":"416356efcc64fa2d8562e4cdfd5450d24dc7fc7b0b75a34c477aa1d6c72797b4","pregenerated/aesni-gcm-x86_64-nasm.obj":"f468394e9dc996237799360d0829a1ef2fcd033806f64c4ce774fd9d517fa7ed","pregenerated/aesni-x86-elf.S":"97b76bcfcef2157ce71d9d6bc91106e8ead6d2c64ff07e7217ff3b000114c89b","pregenerated/aesni-x86-macosx.S":"daec8c6e24442e087c0f9d966de30c5e65ce54965d5e4d3807b32b86b831ea32","pregenerated/aesni-x86-win32n.obj":"8fe90b258d7d1f29b5ffd8f775a3a08a81582aa0878cbbfb43842dcfa1ac1656","pregenerated/aesni-x86_64-elf.S":"c3db64af73503a62ac6150173e0595f3c306152d106fe5d6f709b28cb5377865","pregenerated/aesni-x86_64-macosx.S":"c259f14d6c4ffaca8228b9b2adb72500ab8cc1e72fb00679222fa3cf023fcf5c","pregenerated/aesni-x86_64-nasm.obj":"5d368e8177abaa248670265aaa42cb3aa7c13474d4217ae8e10fdba5ebbbf2a3","pregenerated/aesv8-armx-ios32.S":"eb2a1d9065e2404b1ea44ebd59f3a413e0dc3e8fe0c21b5c37d1e720b0ae2f7e","pregenerated/aesv8-armx-ios64.S":"90f21051f66327c638a43cabe6bd69609c8a1e66540214bc956e53fdd8bc5bbf","pregenerated/aesv8-armx-linux32.S":"5355690bdb5516e8e75343766c9c861f3efec34be8b791042aa3131771968266","pregenerated/aesv8-armx-linux64.S":"4e210b6ae0aaac9a7d241166fe8024acbaae471df6c281b4e35ee518fd12d6ec","pregenerated/armv4-mont-ios32.S":"d4557d82508e4490d84de0aa2df9c1b7c638d609dd2b5dfeb0763d5181b711c6","pregenerated/armv4-mont-linux32.S":"baab9d2a8e5f10e7da4b31319d2dd60471c3b54e5d04174fb173032d3ccbd8ae","pregenerated/armv8-mont-ios64.S":"9d9134a72ec9845c4071049d466e2e546108e7890f30ad95016f80f71c4e8840","pregenerated/armv8-mont-linux64.S":"0fbadcdb812550c4df7f4dc7c74d2784cb4f330c22ee57c5190de86802d5bead","pregenerated/bsaes-armv7-ios32.S":"05c8c6232272ab728b7dd3046cf3c53e3628ccf0fe32ce69d65822f11c439cb0","pregenerated/bsaes-armv7-linux32.S":"18ba628ad2da5a89c83a67b3323b3ac0da39827ed2f43cb32a6b3c939a7b3db5","pregenerated/chacha-armv4-ios32.S":"4c3533dd7d3b2ae91bc6f005c38c9fab5f2c86a5deb191964f5b667d8b7e0e79","pregenerated/chacha-armv4-linux32.S":"d69afc323632c366aed2b973453ecb627a046560a9387a6f53f28343c6d87007","pregenerated/chacha-armv8-ios64.S":"910597f9f54fea74f991039d4f13fc67cca72d4f5d437e61f44bafa3b348edc4","pregenerated/chacha-armv8-linux64.S":"25b6a39eda3aa1136fb604f4f45fa494bddc1cbce8b60f5408106b61bb458547","pregenerated/chacha-x86-elf.S":"006bd68948565d8cf52796677b7c92e54414aa9001d5e411298460c197a701df","pregenerated/chacha-x86-macosx.S":"5e2f5071e7dcc62ab2e1ef3ccc4b2bf3d5c3645a08a31045007a0c52bc45a11a","pregenerated/chacha-x86-win32n.obj":"1d5dc4d533575c6d1e751c347f5fc29a43eb069d6e9c66dc4a4cd4da20ac098c","pregenerated/chacha-x86_64-elf.S":"8198bb9aecee6b633f93a864823a5031c4ef8d86c44417f683279865201a27fe","pregenerated/chacha-x86_64-macosx.S":"115e186a1141f24ea2ec95d56ddb329e90ddb5494b2af084d532fb135c25e6e1","pregenerated/chacha-x86_64-nasm.obj":"f7fded0b06e96b492df13a68507e60b305d7fa5037864aa5ceb47444ad806d8f","pregenerated/chacha20_poly1305_x86_64-elf.S":"9b089ebe5e3164bef6129cd87b37ed1466ea290b0b01a39f760c8917a81df302","pregenerated/chacha20_poly1305_x86_64-macosx.S":"3cfa0b9e62dee437ee3a55a64b33681cf063b23a0f649235c0500bc4537a7e87","pregenerated/chacha20_poly1305_x86_64-nasm.obj":"f5161b858d55d2698331b78f837ccd510b9bc475fce41c0fd448fb123c4a3cb1","pregenerated/ecp_nistz256-armv4-ios32.S":"67b29460d061e31a01c29e4d7d01dfb9d1565df008715219b0e801f3267222af","pregenerated/ecp_nistz256-armv4-linux32.S":"8fcfcdc38968c0b5d4d1d5b0b02eb0c81017c47c0d92be438b0c7b2bced2b315","pregenerated/ecp_nistz256-armv8-ios64.S":"3303ffa99060aaa77a8e2ae80ecbc0ca4d01e1d0fa8984d140ba9d8d3a5dfe6b","pregenerated/ecp_nistz256-armv8-linux64.S":"f6b087a341257b34d3b0d44c2cdcd4d45730ff7be43ae61d22ec31a82776ef1d","pregenerated/ecp_nistz256-x86-elf.S":"2abef2ebc797857a33287ded29ea3f19d3cc16828edec44037298e7213fd11b5","pregenerated/ecp_nistz256-x86-macosx.S":"7486e70d91b2c5db5422b53e51c58882a23b1e5661c0120c8d2c5fc5bb070b07","pregenerated/ecp_nistz256-x86-win32n.obj":"f160c9c70ce8147c58fa2f98a9cdd1a3942f1defbc68c293e55be0b5aa36a064","pregenerated/ghash-armv4-ios32.S":"92df1bc8ab2eac0fc487052c42fafb75b345e58d7a77cd8e30defe2a158841e4","pregenerated/ghash-armv4-linux32.S":"90c8a658915ef630ee767cea1297bec12f99bbc34f4639ee743d9c6ac5442132","pregenerated/ghash-neon-armv8-ios64.S":"3a98b439c6e5241e07f2abfa25cb2a5da9733d4c1a14254c477d62de0e02df70","pregenerated/ghash-neon-armv8-linux64.S":"5a14cc2182a707852cc3873a3f43910f67ba8e28a9c171e055709fd5576a65a0","pregenerated/ghash-x86-elf.S":"e90f3d5f2da844d78ed8f9a42e8076cc8d6e4d9d9b9f0622dcc231fd9dd89a8d","pregenerated/ghash-x86-macosx.S":"77acdfa80ba0e1f4352950cf4226d401120e59c59fb2eebf10c8b5dcb0dc1d88","pregenerated/ghash-x86-win32n.obj":"2faa80c7a5650ff5bf57fd04e72578b73d1f6713890a5d96edaa5be7ff676ecf","pregenerated/ghash-x86_64-elf.S":"38e7418fb6a11cfa4966aeef2038bb05f7e28ddf1a5a7ef0bd4ee20adafcec20","pregenerated/ghash-x86_64-macosx.S":"f42f5c764c1196d6ebfe00d8208ca297ffb35b1fd64a1055f6350dd87a811df8","pregenerated/ghash-x86_64-nasm.obj":"9b1350599400246b5d98f0b31fd9602764f22f268909ce14d7088cd735d4ec00","pregenerated/ghashv8-armx-ios32.S":"d37794ca858e9b49781158c144af55f09258d243f6722ca331bd80a36a6a2bb1","pregenerated/ghashv8-armx-ios64.S":"1b16110bc44614d9601e9af754abe51d58e763cf52ba3b7befb246f519e6ef1a","pregenerated/ghashv8-armx-linux32.S":"70dde07679a4ba8d38ad689164e74d89fe2cb55344357d03f9a613849b693d12","pregenerated/ghashv8-armx-linux64.S":"49643df44cf790360242427602343ee15ab2875cd26cbc30239ad10f424760dd","pregenerated/p256-x86_64-asm-elf.S":"f4d1ad978ef311cf56a703d36d96aeff7dd72a45dcea8eb91ee4a7245c870f52","pregenerated/p256-x86_64-asm-macosx.S":"56a06191e2885742ad31a2d3ba9e2704e2edef3b34148f9bf6e5df9c09821802","pregenerated/p256-x86_64-asm-nasm.obj":"f974ce322dadb7759a9f044d59856f53a1d5a9487462df1db0d041e1283c4c8a","pregenerated/sha256-armv4-ios32.S":"1f2d3b83692b175cb0419db4a771f89287fc759d95bc3abc7a46d4c3ff3e7171","pregenerated/sha256-armv4-linux32.S":"d9dc1a92218071562057124741db8fc9d397e482178210a5c38e7fbce20c1f0a","pregenerated/sha256-armv8-ios64.S":"3af6bd68116d286fa646edf3a0455b0641f8c679174e9bfad15a3cfbb478d7c8","pregenerated/sha256-armv8-linux64.S":"4444d51783cb738d109ee308e429cf031f09d2db6bd9083e972863f041f5345e","pregenerated/sha256-x86_64-elf.S":"4ba15c1fb22d29844a828fe3b307395747981489ae97284e68a195c3890c9eb5","pregenerated/sha256-x86_64-macosx.S":"f08bc11e30b778ed0ef065b60b8d0e2871fcf08fabfec375eecaf653f9e4d03a","pregenerated/sha256-x86_64-nasm.obj":"93c8850e7a3a922ef7627c01039427a2af987b61f15dea163a58855a5396a4e9","pregenerated/sha512-armv4-ios32.S":"234cd599e80ead2618df4d3984f3a872104d8cdd9fa76c8235bcd3fe4c54e724","pregenerated/sha512-armv4-linux32.S":"37468f12529bbeda3c7b90f7f6c15ef8a4549441c1de3e0d1a9d5a1d56a6023e","pregenerated/sha512-armv8-ios64.S":"190dc1d4247375437e29a20d467abb8188ee7ff2acb61e34e1188c6b54cf7732","pregenerated/sha512-armv8-linux64.S":"e75f108040f77bc7b1619f9ee61d5ea9c3ac14f139eb371c0e33df2bf41137b1","pregenerated/sha512-x86_64-elf.S":"78d445f4f2526e28f544f735e8af0abcb9128feee78fd10dd5ccbb57418f0533","pregenerated/sha512-x86_64-macosx.S":"26694e275333099f32d854488473ca91d4eae0d7a4abb6fbe34579b4a3a8d1f8","pregenerated/sha512-x86_64-nasm.obj":"775141ee3bd95c4783de374a92e603c429129ce0f84e9b4beedee37091ec16fa","pregenerated/tmp/aesni-gcm-x86_64-nasm.asm":"cbb0552dc5c461b55e188554bbfc65cc617352e412437f1b82a2cfb272ee64c9","pregenerated/tmp/aesni-x86-win32n.asm":"17ec3f0ed9e4ddfaa0836bc94a1c494b44a2df034bf19f1a56f4f4bd95642871","pregenerated/tmp/aesni-x86_64-nasm.asm":"15fa829c04c05678793703a661dd5df3e18c0307f6ce7937e5c1b070842f8ff4","pregenerated/tmp/chacha-x86-win32n.asm":"9aa5b99b65a28d1592882bda201913c1202924327cc013ffbe774cd224d337f0","pregenerated/tmp/chacha-x86_64-nasm.asm":"2e786ccfa5933e1dc676310bf02485437549794a1efc5e605ae9b70d0bd45387","pregenerated/tmp/chacha20_poly1305_x86_64-nasm.asm":"ae9f1aa6b2b1fd203c4e347c8f88e8d282618cae620b54d2fe23342658a693e4","pregenerated/tmp/ecp_nistz256-x86-win32n.asm":"e924606f35d37cca56f819fff7cb9b0dba6011c022acc052a61d0b399c204d14","pregenerated/tmp/ghash-x86-win32n.asm":"be68d36eea9e93265b1ff9f3fadd3611b96dd0563d2f17ddd30230a8764ab000","pregenerated/tmp/ghash-x86_64-nasm.asm":"4573faf1e83b3dfa6e98d3c2a720b2d6a967d0863c79f1e06b2701ab4550b28e","pregenerated/tmp/p256-x86_64-asm-nasm.asm":"4009302d68a06f430efe075d3026733dc894269b1b497b7fa64659e2e8055aec","pregenerated/tmp/sha256-x86_64-nasm.asm":"593fb0095950fcd900c81506c75007f215ce7a6f42ecc6c0c406f0ca72567130","pregenerated/tmp/sha512-x86_64-nasm.asm":"2c1193ead520148b2b3daccdcf8f2eed5fca2c61f3d0816c8b3255960b065739","pregenerated/tmp/vpaes-x86-win32n.asm":"13d8dc4590139fb38aa069beeb9cd4c21ff06afcdb9d570646183a8802876831","pregenerated/tmp/vpaes-x86_64-nasm.asm":"e1606d75935bacf00248a4c706866cdb47f66ec7e31b31ac376a5fc633d426fd","pregenerated/tmp/x86-mont-win32n.asm":"945f149bf139d9bb618e89945f5d5766904e911702401e8b2e6059fb076f69ee","pregenerated/tmp/x86_64-mont-nasm.asm":"a1d5a0548380eee1f618a7175821d409901862da7a8ab3adca0291285cede53a","pregenerated/tmp/x86_64-mont5-nasm.asm":"e5146b01b4b658b54c4b4999248622562e0280877ead55aa34db0bcd6c93ddee","pregenerated/vpaes-armv7-ios32.S":"97e3f3d8192f5af14624e5a8d774c91d67f7b167e268c7c29692c5b6ea95e952","pregenerated/vpaes-armv7-linux32.S":"f338c746b42539eb833fd23d37c7594b0d52f49793ea91cbcad3b159818231ac","pregenerated/vpaes-armv8-ios64.S":"2966a55ccd6239e075f6cf5849bc20235b3251258dc045f0574ed3ac68311519","pregenerated/vpaes-armv8-linux64.S":"a36c08179f1b264f379c686800da857baff299a11932073c7758e8c688e9e1c8","pregenerated/vpaes-x86-elf.S":"6ea5189ae3b0e59dd2ada396d912ff3cc96ea8690a1c0b21c6ff8d3c81d3989b","pregenerated/vpaes-x86-macosx.S":"d3d44014c63249fcf020a88a7463060d033ddb3e1b1c2d08945c45bfbbe05a36","pregenerated/vpaes-x86-win32n.obj":"d71da62ee1ba86b4601efd8620a3ef37b3c5e02427795b6f64b6fce278e44e03","pregenerated/vpaes-x86_64-elf.S":"f16784c955f761587d235f6b747e6c6aa0a99c522947842f68bc6ad842bdd87c","pregenerated/vpaes-x86_64-macosx.S":"76ef4527ae6a3daccaf47de2e8f97ffcd064e045f11e7474357cbb82cfd4c79d","pregenerated/vpaes-x86_64-nasm.obj":"6c8c834652ae8721cb79117042e25151656aea9510bf545085f471e28d506d62","pregenerated/x86-mont-elf.S":"c410ae3e4ae6a3b5d083c5637dfc1e56726bc0a48a7e5a0f8f0d64839ae31001","pregenerated/x86-mont-macosx.S":"7d85116fc8a29c64215166fb2c44566dc7c1b31048a635605f4fd8fcbaea3459","pregenerated/x86-mont-win32n.obj":"dedb267ca7c096002cbaa0b8a7c50c4bdbad49075fc5eda05a36bc7317ce6d0a","pregenerated/x86_64-mont-elf.S":"a80d374dfc65de88a57244457db872c49280303de86be22965641211cde27592","pregenerated/x86_64-mont-macosx.S":"191c8e8dc9e8dfd07f3cf9e52e8bd18a8209cf25f648ba0e1c7f724307830377","pregenerated/x86_64-mont-nasm.obj":"19f0bdeca2fab921036334106bc5045446c24bc2c2420e2899e4f25a8c572383","pregenerated/x86_64-mont5-elf.S":"2c9e98a0d6a06f8e60b1c558f0a1392072b4f8d3f3782b9a058d01c60b083ee6","pregenerated/x86_64-mont5-macosx.S":"cfcd23902e6ed06dfb1bbb736c13f286de756e37a9dc8e70eb0414d382f27386","pregenerated/x86_64-mont5-nasm.obj":"9683a81571b9729c0d2c7c85d3a2d97818b468c0de0dc5f785683a5cc90d3c4e","src/aead.rs":"003f872da7427c2f67a6e11961ccb24ab4d2421bdfc40ff6cdbe8c99904cd5f4","src/aead/aes.rs":"6e728e446d322d6d8adf81143c4d02547ae462375819ddb436ee4d8dbd4527dc","src/aead/aes_gcm.rs":"6cbd8613ce92e68d9959cd3b9d0c683238c015d6278f1129c1b374ac6dbabd85","src/aead/aes_tests.txt":"4ae334ed8c34c0cef24c22b73568faec906a39e26a428e4cd6fe4f810cc51fb0","src/aead/block.rs":"813e46cff3bf4293ad3d4ef241f4539dd44d857d8bf4e364c1d5a82136e209d4","src/aead/chacha.rs":"f91bbfada73940849555c4fb484900f721b372ff3fe7e92ef4defe796b2f7c58","src/aead/chacha20_poly1305.rs":"7edc8ec1d2924d135f7fe7a4e747cd9df271ff56551c0fca1f6a8a51e4a2c869","src/aead/chacha20_poly1305_openssh.rs":"3bcce02de1a133d770158751f5d0f15fd6ff456fca801c942397664c3645b7a8","src/aead/chacha_tests.txt":"6ed1303cef7a0ffa30cc76f9933509a2d952a334b80c731d52d32c6ef3b37042","src/aead/counter.rs":"164bbe9701f15453a05656f35c27958e0dfb52a747770a6def9011966c092c04","src/aead/gcm.rs":"db2aa2c959aeeb63533747aaa04ade292368f8d6af35884db2fd1e9b205391c9","src/aead/gcm/gcm_nohw.rs":"a63e73d88c95be1f1aed2df212f7d6fda397fc6b026ad29781b1fa114724ae76","src/aead/iv.rs":"2d14af136fca616d0f801891452e15e82d84967d10646436d81be38326b8ee23","src/aead/nonce.rs":"6f2650e0b41dbed50faf9323eef82c2fb469696c45a30a86e136e3ed72fdfc84","src/aead/poly1305.rs":"5820ca403cdee995866953c1151b1a9b36befe93a663d0e5ddc1ca8ad361159a","src/aead/poly1305_test.txt":"89be1be8e403e5a17845f0603e19337604f1f278c7b283de2c7227ef6041491f","src/aead/quic.rs":"bad997157e38925bd972b028ab8224cf729e6603bb4c3bcc5e712f950dc74bcf","src/aead/shift.rs":"0a39a662e5d2571f9a69857d9e006491ac3f4580f954e8581d81574deb6cb3e9","src/agreement.rs":"3cd5a496eae019b263e59e921ebd4ecd3c1f65344fc2f1feae0dcf723016fbe3","src/arithmetic.rs":"af3619f2da6c0475d961d40fd6fe256035ee8523802a759814c65b7b5d38686f","src/arithmetic/bigint.rs":"3f5085b77a057d0fa327cd063d0a8cbb6d22a48b0cb56dda2f27d97b993e0828","src/arithmetic/bigint_elem_exp_consttime_tests.txt":"5f84de732433df1e0db3b3eb690bdb0cc1a735bdc7e60a8218d5910e9d9ac436","src/arithmetic/bigint_elem_exp_vartime_tests.txt":"6501c58fa66083ceb7dffe14a0191cd6a2d74a96aafeb72d828841844a37f409","src/arithmetic/bigint_elem_mul_tests.txt":"0de8d667f4bae0648607cff2c53df81a6b2ccddb8ee620593350255b36de0e91","src/arithmetic/bigint_elem_reduced_once_tests.txt":"7b4aea41259ffa329d669843d6dbf29a5ba56d845210bbf4b0a2ccafbe8d8c01","src/arithmetic/bigint_elem_reduced_tests.txt":"7c5dd25b495b89bab09e8f09cbbecf34aa28ee7eb2ed592bad50ab63e5b17ebe","src/arithmetic/bigint_elem_squared_tests.txt":"0517a5446667fd49d198a89fd93f19d9870fd3fddad3371ad9aa8075b6020e22","src/arithmetic/constant.rs":"a5c0448ff100ba4c137dc320b2b30f997cfc2e973847da7301f097265c338ed9","src/arithmetic/montgomery.rs":"adb7d8e3bb058fcbab6911967d62cf2e2b2ffc9fa165cc8da0de984fe6eab5d2","src/bits.rs":"b2d30f13b13a73d02ffccc9d116554eb03889a42d893a73cf5793d361365190b","src/bssl.rs":"e9d0413f24aed47def667f65098e3d138532fd4624d563230009be34ea5bed0d","src/c.rs":"d96cdd683f4ffc4d3a287d1adb7e07006b2a18e47513aafedceb385c979b669c","src/constant_time.rs":"214de9c0fe5b22f3db4b84a323754cdc9eb9d3d1030e37b7275e566912287e07","src/cpu.rs":"862202907b124cc43026428585ac789b7e8fdbef1093437169ca3a30110570fd","src/data/alg-rsa-encryption.der":"7bc023427767a2f2e156f8ae030d06d19f862e326b952116649b423c3ff7110e","src/debug.rs":"6781fc1d6a02c7e70f1e2c0ca0f0a51695e7ec540b2a17a2ced85cce12ee1b34","src/digest.rs":"36ef202b9eac667929f2e2d5a1abef550fd7e776c758f956a063e665d59a5273","src/digest/sha1.rs":"1b2246fa4f399b663a85e75e227c0709623acff18c5851913522acf213236cbe","src/digest/sha2.rs":"506005139eccea01710ff06567c1cef53dc4a48f42ccfe310f9edb87e51385ad","src/ec.rs":"9b59ba0e616fa6cda295cf5df7d69deea560546ce4749977861bfb5c99c1e696","src/ec/curve25519.rs":"06dc74549ba985176a2e48474d8621bc08588d8d28816b92ebfcbe8e8f2c9f30","src/ec/curve25519/ed25519.rs":"d025eac2dfce52442a9d1aa0c159509bee7c8b6fd48506b90aa5bb4e4f09dc5f","src/ec/curve25519/ed25519/ed25519_pkcs8_v2_template.der":"1bd2db034b5160de343688ff570db3da6a5bbfc66f9f2dd015f0902e2d2b7e34","src/ec/curve25519/ed25519/signing.rs":"2f76fa5149d902f05009cc33bf100006b6933de8b4b9fbbfb0cb3137f0dfef76","src/ec/curve25519/ed25519/verification.rs":"ceca0fd74d34ed656434998ee83391e13b2c6f00261cdf838179b4771329ff89","src/ec/curve25519/ops.rs":"0537473d8827e018071a958163cd61211a8a99a4c10420c566d93a6479bb82bc","src/ec/curve25519/scalar.rs":"f3167f9f9099ca46f5a3cfc31da7421967f8f7a4077bbe6f855e9ce33fcc33e4","src/ec/curve25519/x25519.rs":"90a6de55acf56c00a5ce35efc4c7c4223e355053b57aaf4bb88e054bebbb05ed","src/ec/keys.rs":"31b41f125107b489c5ca8fd35897c7bf68ae61bd013181cda096b150a45eaa82","src/ec/suite_b.rs":"ea7a3e143791d9c2bc8c753617ade5f8d8777024a8a0e9c4e9582933a828c68c","src/ec/suite_b/curve.rs":"64926ae050efe82a04880d24d3abb26f3e4765773d457627e5e39bcc3d008482","src/ec/suite_b/ecdh.rs":"0cc05ceceacb362489ea4f4a6a006e0aad8488d70996fdb80c1884a56ed576e0","src/ec/suite_b/ecdsa.rs":"013e0d2d2a21eb437253b03a1f6a1a4ba8c45eb1c2ea1396696bdd04a8ed2932","src/ec/suite_b/ecdsa/digest_scalar.rs":"e9036c7cad58a3333611c24c3483481c5856225fc7e479c02c8e652b692786f1","src/ec/suite_b/ecdsa/ecPublicKey_p256_pkcs8_v1_template.der":"5a2207da0199ebe3e2a80e15e7692b21f215f855ed3bd2c51f466c7969e11990","src/ec/suite_b/ecdsa/ecPublicKey_p384_pkcs8_v1_template.der":"5ec14cd6aac17cec849382ee5e2077497f98ce435d7aee2116cd092bf84f5556","src/ec/suite_b/ecdsa/ecdsa_digest_scalar_tests.txt":"7f38872c3acbd5d156783de92f3671062101af3cc496c1b261165971b3eea2ee","src/ec/suite_b/ecdsa/ecdsa_sign_asn1_tests.txt":"ab92cd110846b42d7738374d25734cff6459467f40121c4e7fda5b31bee651e2","src/ec/suite_b/ecdsa/ecdsa_sign_fixed_tests.txt":"c471d314f18270c79141062d5964d84fbe38c1bb9559ca217f3511d34fc4af25","src/ec/suite_b/ecdsa/signing.rs":"5d6f26173d4d12fad3df5d7771de7d2412bad746b11a1673a42b05b095f3f56b","src/ec/suite_b/ecdsa/verification.rs":"e5e027197b73382b73b69d14e450ed75d7fba0934bcf683589ed482df3161480","src/ec/suite_b/ops.rs":"f526e5aceb3344b22e97d3e615cde8b9f40804dfada3e93152e23eb37e3f8f60","src/ec/suite_b/ops/elem.rs":"365792ad051514a3354a63b84b16c9d3189e25ce9363092838835df246409a4f","src/ec/suite_b/ops/p256.rs":"b3952d225bf0edb5a6b9f7d0d427c5960ccd4a85d3c97c4f6e13e2e7dba18c8e","src/ec/suite_b/ops/p256_elem_mul_tests.txt":"02e7a991d6643a81229f462d21ea72f0503c038d783583c83ad7f118952ecf0b","src/ec/suite_b/ops/p256_elem_neg_tests.txt":"b61eb959dd473bd8edbc4566f18be0ac9f483be9e7d0900f48eb764454475807","src/ec/suite_b/ops/p256_elem_sum_tests.txt":"2fbbc13100065539bce71e83d642878a90103b5ca3d9b8d3c321db15a0c05c9e","src/ec/suite_b/ops/p256_point_double_tests.txt":"34a5968bb40320c6cc0f7d248951376823d46c0aab1fc7ba59311bc1cfd34417","src/ec/suite_b/ops/p256_point_mul_base_tests.txt":"f207084da07de3f63b7563b07994915dc770e2b7d5dfe41881b2ffe875ad69d7","src/ec/suite_b/ops/p256_point_mul_serialized_tests.txt":"f3c8061e0f891441de35e80869c253c65fea2ed1dd4f9be7a444c956211d32ae","src/ec/suite_b/ops/p256_point_mul_tests.txt":"894e02359b562f3d74757f4d8fdd20c5fc5528634f5922ce01d9546910e0b0b9","src/ec/suite_b/ops/p256_point_sum_mixed_tests.txt":"c2a178ad0371ff7dcf15364edbbb5cd0e82478d7e1037a6d3b2243204465f918","src/ec/suite_b/ops/p256_point_sum_tests.txt":"1ede1f508c673890e2f48ba53309397a17a02f13370aac114f34ea0c3c4f4617","src/ec/suite_b/ops/p256_scalar_mul_tests.txt":"6fa09fc69c9962c31f090ffc747d4cafe184429b8e0acad3adda7b14ac26a4ef","src/ec/suite_b/ops/p256_scalar_square_tests.txt":"19633fcefdf8af6685fa9750a96c17478e282972ee7ffbf4c4303229f7938db3","src/ec/suite_b/ops/p384.rs":"1881e96ce311f1a1c4532c87feb9bbab3dc32177d01afd4a4375ab5ab67a5bda","src/ec/suite_b/ops/p384_elem_div_by_2_tests.txt":"8c4d02994577c8b6ec3a83158fe20ce92366052ddff349b02bad4595847be8cc","src/ec/suite_b/ops/p384_elem_mul_tests.txt":"acf37680470a3574acfe64cb3629186d1f29bc8e905c5d9c1e40a2c2bde2701d","src/ec/suite_b/ops/p384_elem_neg_tests.txt":"08986c5fb0b8adfd3be6ba217ee68308c5e452dba086d92793e0ce3383c1acaa","src/ec/suite_b/ops/p384_elem_sum_tests.txt":"48850b24fca0487a875379b6de77879f97578f50111c11a12e8d789f6c8f0ab4","src/ec/suite_b/ops/p384_point_double_tests.txt":"6d25547058f40d98ef3c2a1957fb72a57f4fb19623c28dda92b42b7adc93bc9a","src/ec/suite_b/ops/p384_point_mul_base_tests.txt":"4995baf7080a6a4d72de1d262300c4ee49d0449034e1250f87bb15fadb78408f","src/ec/suite_b/ops/p384_point_mul_tests.txt":"2fa85969ab080e6f977ed92abbe29f6f5f0658e5ee126834769673ff557efbd0","src/ec/suite_b/ops/p384_point_sum_tests.txt":"5cbdf15ce4a56a952b85046e49cd0fc4ee22d516d914ab48c19b7801864bd352","src/ec/suite_b/ops/p384_scalar_mul_tests.txt":"f88e82363d7a1eb4fd687bd54dec6cb05e2796e751f39b5c774c11af0569bea5","src/ec/suite_b/private_key.rs":"6d2926d33fb5a0468f57a7de94f5321b054e851ddc1cba6fe0c1eeadc200db51","src/ec/suite_b/public_key.rs":"f254259ce6dcad4f2ec981b0d3140952473cbe98d9c7c97ff96c1d9da369df0f","src/ec/suite_b/suite_b_public_key_tests.txt":"392bcb543cf69cbab5252792a8dfe09ffa3421cb27d65cdafe9771bd68d49a5d","src/endian.rs":"cd2369b4b61d2c51d03eab1e5cbc4c738e4c24376699bea6707b26a110115aa0","src/error.rs":"baecffe0297dbfa9ae277bdfc5b2338dc34a856fcf6d8848bc5922298c9b1a3c","src/hkdf.rs":"c1928b1bdaebd74e2a21064cbab3ea2477dbce59bfe717c04d557362979daa54","src/hmac.rs":"04beeb74fac2f12ddb112b7272430333014bf1b4e028ccdff6755d40697fc0d7","src/hmac_generate_serializable_tests.txt":"d9fad4aa957496eb05dd67d97699631bd428de8a5be6e29aeb82b732eae97a59","src/io.rs":"83ead14e2d50b5e80a1fc813781a097825f06743924bb6eaa85eef7a7c6198f3","src/io/der.rs":"550b7e8561207a8f4af2b63fbef9b8573f6de843ee4e1630a7450171529496c9","src/io/der_writer.rs":"ba6f9c5452b0b67db75765f1eb686078896aca591e76d27673097d6b32057954","src/io/positive.rs":"3cba48798f15870075eb5177b1d430fad7857e574bfbb1ddd4a6cc2bdc2efcf6","src/io/writer.rs":"9012a7b89d1597797d613ffc754765a43d2185e95cf98872c62f60ee5538b0f7","src/lib.rs":"7b6094dbb914f97c6e68d994c78910303fad259dcd83a31d16fbca04852014c8","src/limb.rs":"ff626c337d8b559b6c83f5d9b93a569bee078807fbe58fb5e6506c06c3227fc0","src/pbkdf2.rs":"5a6a58b9f45f579d831c49afeb373400cb6d7a8fc32da37f44f9a2871a4d0e33","src/pkcs8.rs":"554b10b05ebb5a7474ed41d22dbda33ceee237b737cabd0ca7b73d3b56a5248e","src/polyfill.rs":"39c7deed8c1b34dc0d62aeb7a8989a61651a97f95ced62d7187ae6bb566cb39d","src/rand.rs":"32fd0bfbf0d934b49571ebfa6fc1a45bbfd8410e185f26a8c6d76442429fa0c0","src/rsa.rs":"19879586b7a132d21f9b994cd96a937933c2bd5d8030e8e9397c08c14c4a3f17","src/rsa/convert_nist_rsa_test_vectors.py":"9480f86d8c9a8ca77a6606036e8c2de02c444265deb3c98bb7fc1e4117b4462d","src/rsa/padding.rs":"53dc68748c5a1c1334a1be5643d8e9654c7c844fd1b372c3dad848f7871f638c","src/rsa/rsa_pss_padding_tests.txt":"1b68a294521e983a4a35fd7ad4e5823d6173641ad63d736b3b8e6e867f748ea8","src/rsa/signature_rsa_example_private_key.der":"5344d57f719a98c4464aed1d1c2fa569f0a9de8621c6fdec7d28923a0e1c662c","src/rsa/signature_rsa_example_public_key.der":"28b0a357936485bd2a7776321cccfe17c2347f2bb75751ddf9dfc6429cacb6f1","src/rsa/signing.rs":"c9bf4381dc3b4a35c6513ebeb9b3a0870fd217fbf3b1277d155bf10fec531e8c","src/rsa/verification.rs":"2ed4dd2f6fc1d24f4fe6a8deb60f3af1bd397c3aca748de1fe330c78c50f36a8","src/signature.rs":"9cefccc5cf8369d4185242c680c085ca5e5d125d6017d9e387271f3989de887b","src/test.rs":"7ff06984616c12163a1427b3eb93da5ad9cd050d8ca09fa65069e1a00208b1ae","src/test_1_syntax_error_tests.txt":"c6e72aaee3817e145fea114020193c5b3acbbd2f3a97614f1c2670822f1ac6f1","src/test_1_tests.txt":"1014aec056f9a06eb23983e61eb6dae8384ee982f4eb0c5be002fb5d6ce10f99","src/test_3_tests.txt":"e489a2da5f486e75cd6e2cf7089f09d6ddf61a8765fd58c47bc79ad32be77e13","tests/aead_aes_128_gcm_tests.txt":"2e88612cf3d767626f62d59d81652fef5611f4418bf56016c12ac0bc26a12a20","tests/aead_aes_256_gcm_tests.txt":"c21fab30c0098cddef658908ca2820d656c4717d24d79ef3dd68251695972040","tests/aead_chacha20_poly1305_openssh_tests.txt":"85a012f4b6bc9b7ca5af861179ce832ea93e4a175b604be781bd1fdd9accc24e","tests/aead_chacha20_poly1305_tests.txt":"3688abbd7b1d87c9200b627c289a2bebf763f512baadf536cd72cc8f3ce80fe5","tests/aead_tests.rs":"34ba985fa0137232af48c3854a88b2f964f1c9cd5c0ac9fd4e6fb02282c30ed2","tests/agreement_tests.rs":"46367d118bd47eb0fbfb848a0ffb54b127e55f54a081893099f0bae9bdbaf052","tests/agreement_tests.txt":"4b784d203e87f9de0678df00ac1b2a28db169f680a3333e9d773656fcebceea9","tests/constant_time_tests.rs":"89a777d20a5066b8c961ee7204ddd8c4b6731857e20576d7345069e929b5ff1d","tests/digest_tests.rs":"9d416a88e306ddb0225b83ae26133d86510847fd0ec71cdbb2e73eb183f6bc23","tests/digest_tests.txt":"dd817794e2ba72ed637805e225240a295ae7b4cbea956dcd23c4752da67a394c","tests/ecdsa_from_pkcs8_tests.txt":"8880710ed78fea954b23f7adda6189b599307f22ba5c24b44f8ca9f00e9bbb6c","tests/ecdsa_test_private_key_p256.p8":"d56f99994233d749d03315f5cb9797fad81d3e25f962d2cd543d4dfe7cdd1389","tests/ecdsa_test_public_key_p256.der":"93c930878dc29d802b151bf492a2f00672b2240b740002a650ccb706664d10c9","tests/ecdsa_test_public_key_p256_debug.txt":"ccce94ab37a5e5286f0e5f1934bdeb39539e8f72bc7ccd0a1f666c9a1abc0bdb","tests/ecdsa_tests.rs":"a7aa7c7ba2ad2457a530fb0cc3d6230ea5333716c4342f89abed4aa593cb9fa8","tests/ecdsa_verify_asn1_tests.txt":"4ae6325e0a1fdf4cd6fd2f299a7fb7a60927d0775b63aa9b027676fa76f3ee6d","tests/ecdsa_verify_fixed_tests.txt":"837f116fca066cb181677e389cf92b684d15ed883189b4544538cb5387e6b742","tests/ed25519_from_pkcs8_tests.txt":"4312701b6fbc57992598a4db50b0bf9bcc1df91004901f43e30982ba85d9d466","tests/ed25519_from_pkcs8_unchecked_tests.txt":"e2a7a54c8ea31b87bb5357a002f6f4c11b50ad5050681aaed91a375ef58c239b","tests/ed25519_test_private_key.bin":"644d50ab64864c20a12b3c4656d46b4a48f69ef7c47ecdc8415cd28316b22ef5","tests/ed25519_test_private_key.p8":"13e11da834fecc6aed04d8ff36a0301a5fb8187c86f5ab0f9cde434eda6762fe","tests/ed25519_test_public_key.bin":"21fe31dfa154a261626bf854046fd2271b7bed4b6abe45aa58877ef47f9721b9","tests/ed25519_test_public_key.der":"119e5ed7b8533bdf24897f07fe4dd57671a64f8d10534ba128c9bb016af86484","tests/ed25519_tests.rs":"e25677a3b5d9562d779f96b5ab0c87e8c660c37b0d168a4d4914e86b8ac4570a","tests/ed25519_tests.txt":"f99c7e7bf7cbbd7df936ca883ca0cb293c31ad37c03597890fdb07dc1c923d36","tests/hkdf_tests.rs":"fa08f594d00fba48b1add8f5c9784ed119ebea7ab829c831df1c688357899abf","tests/hkdf_tests.txt":"558f087d6b6b06cd542487017e4ef2e2926052f3cdbbe9fe50a2085f4d83aad0","tests/hmac_tests.rs":"59168ccc15d1cf627153f00fc4451cdb210731da6035299a9b05d48ba8a218a7","tests/hmac_tests.txt":"272c143921789a66d39396843c2fa0aadbdfe26d061bd2b7836ec40dfc76e09e","tests/pbkdf2_tests.rs":"ffe1be0230f1c156006d0891e33ff813f8a24ff75c5fc0fa5452f06914c69ee5","tests/pbkdf2_tests.txt":"db65f42fb72cec9ca89c8c071d11c341f67c4df5e0c66a70735da5d1d370cee3","tests/quic_aes_128_tests.txt":"786f989f301ca97b17e3a62e1dd5d9562baf0f3081f59de5e34fcc4d9e8d9580","tests/quic_aes_256_tests.txt":"63540293d9b95e67aa9cdb7effdb5d40f977ec6a527490ce7b32592debac0428","tests/quic_chacha20_tests.txt":"b0c2abc90ecbb0146fa812c33641ad643380189429bb9e7c7db1b32d3363c67a","tests/quic_tests.rs":"6b5285ba4bd0347b74ee74a77324ec019cc3c0d5d7ea118be0933b5719d0ccf8","tests/rand_tests.rs":"43676fdfc9c759b5960656137bde936da07186617155482e94e1f452bbe47110","tests/rsa_from_pkcs8_tests.txt":"2ccd777cc8014904bb98de0462ee220c0a641f88d67aac489cff0742c9a1bc9f","tests/rsa_pkcs1_sign_tests.txt":"4dc33c2a47412849c1c860a1b0b3f59293fabd438611d65d3d9f70722a272967","tests/rsa_pkcs1_verify_tests.txt":"9f091f8ceb39f6542f90271756d9da65b1791bac53a0f5daf9f2e30b2f3c7949","tests/rsa_primitive_verify_tests.txt":"68c90857490543bcfb836f3b8644445acfe90a2e4c5189310914ce5484927418","tests/rsa_pss_sign_tests.txt":"aca70cfc877b055c0a29da2a457563cd1b5afe6e932b011e8b9a15d57dbe10d0","tests/rsa_pss_verify_tests.txt":"afcde20cea975ea235d9828bbb9b083f77584a7cb8c5c955e40c4bd305573f4a","tests/rsa_test_private_key_2048.p8":"a0d95a0b133b4c217bc11322b67d62eb13537b8a9f66e20b5c9b5ac31af21859","tests/rsa_test_public_key_2048.der":"7180acb59312d3544c3b36975ae6c4c55f59035ce4de487852cf6c99b33868cd","tests/rsa_test_public_key_2048_debug.txt":"04bd9f0854fd9c1bd4cc91cf9b0e0a1b4aba790e67f1cf5b3f80c85b81349321","tests/rsa_tests.rs":"15b20531171daff6a0de36dfa1b52be646062f1de24b39873ec97e491ec1e165","tests/signature_tests.rs":"7219ced0ce0dd552726a0fc3c98f05bff5ec1f645981862672967b50d6159491","third_party/NIST/SHAVS/SHA1LongMsg.rsp":"c765dbc1609e9046b12f60a5285a88128dab4315080c94ce9f2a57a7b0b980be","third_party/NIST/SHAVS/SHA1Monte.rsp":"d458fa7e39095b4e292a75b0cd224f90b72dc801a63ad2c0d75b8f10d745ab6d","third_party/NIST/SHAVS/SHA1ShortMsg.rsp":"be0991ddc5372932d55804b11713c9140d10435ef4b316a0773e3506eec79cda","third_party/NIST/SHAVS/SHA224LongMsg.rsp":"d37115e5d2286dde969c5e1b2275cd83ecb066366d7a38bb6b2b3adb4a88de89","third_party/NIST/SHAVS/SHA224Monte.rsp":"7854d388666ea3eb01bdaca37dc8ae0bc39d30f8731d9a5487cbd61de47d1d59","third_party/NIST/SHAVS/SHA224ShortMsg.rsp":"0dad6656c08f77252f6ccb789e42284fd61fc53bba30e83162800aa3d2aa939f","third_party/NIST/SHAVS/SHA256LongMsg.rsp":"6fac36f37360bcf74ffcf4465c18e30d6d5a04cc90885b901fc3130c16060974","third_party/NIST/SHAVS/SHA256Monte.rsp":"29ea30c6bb4b84e425fb8c1d731c6bb852dac935825f2bd1143e5d3c4f10bfb9","third_party/NIST/SHAVS/SHA256ShortMsg.rsp":"75e1cb83994638481808e225b9eb0c1ebd0c232d952ac42b61abce6363be283c","third_party/NIST/SHAVS/SHA384LongMsg.rsp":"536171765a4278c000ac3c9913edb2eed0ca7ccd5a10b72ed79fdfe7901a6d6a","third_party/NIST/SHAVS/SHA384Monte.rsp":"4270099431ff52ee1686dc472351e681c26c507433df8f107c7de203b771424e","third_party/NIST/SHAVS/SHA384ShortMsg.rsp":"7ea7bcf00fadc20949fae63703e40681ddf288fea808471cb3cbc95f3ec16811","third_party/NIST/SHAVS/SHA512LongMsg.rsp":"b1f3f05d5c209777954d49521d7ea1349447c36a0c52849e044bc397a27dd410","third_party/NIST/SHAVS/SHA512Monte.rsp":"8ca78659286c2f01667a98fc7accd32fc171ae7b24ac00f1a8ce6b77770247fa","third_party/NIST/SHAVS/SHA512ShortMsg.rsp":"e53a36c03609e5a3e3cc4b6e117a499db7864c23ec825c6cec99503a45f40764","third_party/fiat/LICENSE":"0c125a4dab5ab869473e6491db22f6c0a7f8a4de58588d03bb2b16c0c8ebd7de","third_party/fiat/curve25519_32.h":"7bcd226c85bdb0fe8fd4d80c006cc3fab4352df94aa8fedd826b6b1f60beaecf","third_party/fiat/curve25519_64.h":"b57420753499030621a681cbfac90df82f641147e6b8c55ee644c8fe9178e291"},"package":"3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc"} \ No newline at end of file +{ + "files": { + "Cargo.toml": "bd1b334671e4998311984f6b0e2875f46b8ceee138ae929831df805be627ae61", + "LICENSE": "76b39f9b371688eac9d8323f96ee80b3aef5ecbc2217f25377bd4e4a615296a9", + "build.rs": "6104125db1bf9c9107bb863f8af3e865bb61800c3a9b00abebf098d5db693d89", + "crypto/chacha/asm/chacha-armv4.pl": "2ea5f9dd73c9748d6adab2455ef85d9eda17f576e0900ea93703ebbd915d4558", + "crypto/chacha/asm/chacha-armv8.pl": "9b0f5dd7650abe2b9d5f5039732a1798646ef43b243d69f69422cc8b77d0500a", + "crypto/chacha/asm/chacha-x86.pl": "c6a1c1ab3200bb75269275b5c56ef3fa0402ff72d82bc36d1c16b1089b41db9c", + "crypto/chacha/asm/chacha-x86_64.pl": "814d82d3bbe7b8a57d14385278a05523a26214c25d08d961b17aab6561278543", + "crypto/cipher_extra/asm/chacha20_poly1305_armv8.pl": "3a813c77ac894bcf7fbb4e73f10f7a32ef81b2ffc090ca48d24aac6276806a06", + "crypto/cipher_extra/asm/chacha20_poly1305_x86_64.pl": "374e759e8c4a216ee34ef8793934a39096c32419bfa71e0d1596c66aa85d24ef", + "crypto/constant_time_test.c": "74c3ac1362e1a82efc79fe964ac89614ed79740c5d0a55ca1a6436be1e846e2d", + "crypto/cpu_intel.c": "5274bbb2b934f8d26585fbb7fba7b8329ecdfac8af626c0a38b1341b86a14590", + "crypto/crypto.c": "8f22734bcc80c10f6ff7bd4e49e5a537f685983f517da3cd66a3588205570a77", + "crypto/curve25519/asm/x25519-asm-arm.S": "584f4500b2cf55f2e7b18df831ac19f8e9cc8ec9c399c66452cf731d28d45715", + "crypto/curve25519/curve25519.c": "461316a73b6d0a79e25443cab6bc09ef1ff4b783df026c06d67039ae1883a1d3", + "crypto/curve25519/curve25519_64_adx.c": "4aff2f9615c7b300fe59dc74f98bdaa9c21eb43b54b0f94b018a8c573ea0a4f9", + "crypto/curve25519/curve25519_tables.h": "5e594f0a2e08afbc94d6327a7604afbc409f209138b0efbdb95115ba5315faed", + "crypto/curve25519/internal.h": "8f0e88a8f10e77cad0eb768a53953eaaea898e42eb9e5be9fe510dbba77ed51a", + "crypto/fipsmodule/aes/aes_nohw.c": "5a72da8314bfd17b4d165fbce885737e1fae844ac1781a4f3cec91fe49c28985", + "crypto/fipsmodule/aes/asm/aesni-x86.pl": "a089646a7ebfa636682790feda9620da6472fd98d0ef84038b21d2e79d140943", + "crypto/fipsmodule/aes/asm/aesni-x86_64.pl": "b72b8ba46b981e94033ae2379436dd747560fe0cabe68c19efd54f9fc6572456", + "crypto/fipsmodule/aes/asm/aesv8-armx.pl": "e257fc438b279c9da6a2f9332657113f3f97eb9a1a2d2c6c2dec63c79d7e7c9e", + "crypto/fipsmodule/aes/asm/bsaes-armv7.pl": "cf3ac24e44263c7e122d56fae415a2b0b6832387de43d7778598dbf7cb72e831", + "crypto/fipsmodule/aes/asm/vpaes-x86.pl": "156679cd35241bf4f98bf24d833cc1d578a68975064fbf93b0c7a5a7575e8ed7", + "crypto/fipsmodule/aes/asm/vpaes-x86_64.pl": "cbd3985bb3fdaefe48eb181cfa9ab1acb16716ee8d16a8aa68ab75cf3f37f528", + "crypto/fipsmodule/bn/asm/armv4-mont.pl": "702b4e9d0acf2ca516cc20e5ef61e439d4d6114aff80ee2c281a9fb28ad95bd8", + "crypto/fipsmodule/bn/asm/armv8-mont.pl": "2ace9e853a96a0a222e1b580dbc00193a814d6e5be94ce7ef7af7612f580e8be", + "crypto/fipsmodule/bn/asm/x86-mont.pl": "3d4f3a8574de58df56b8e1e3dbb7ab2ba960d74ea69dc495d4a44f637ff99d40", + "crypto/fipsmodule/bn/asm/x86_64-mont.pl": "fe763a88123a41b815500a8c0dc1c5231cd473c4afb9fbce85cbca90e0f1f386", + "crypto/fipsmodule/bn/asm/x86_64-mont5.pl": "d75b2410512a3a3e6536d24def2247d84ceff0f96501a56359efb0d89924257f", + "crypto/fipsmodule/bn/internal.h": "4b0e039d89485afe5990e57a966a447c931a2e93086357aa390b84a88fccda3d", + "crypto/fipsmodule/bn/montgomery.c": "110fe19ce51024409b75895e3b646a37127cf42c5a38a49bcb1c59eda1fb6509", + "crypto/fipsmodule/bn/montgomery_inv.c": "a1d1a7c1d0f9923d51986c3cbea7f07a36dcdf32367af120a6d614d9a462757f", + "crypto/fipsmodule/ec/asm/p256-armv8-asm.pl": "d095aae6fa8b0fa5bc45964ceef4a43fa35c4b3d9dd054f0d8a8c64806e7c9a2", + "crypto/fipsmodule/ec/asm/p256-x86_64-asm.pl": "f8d1d331159c444048ba0ad98726d8698cc2b2332e0da542fdbee61498379f49", + "crypto/fipsmodule/ec/ecp_nistz.c": "d5d2359807cea970cdbd059935322890a5535c39b8abf633d4324656392d527d", + "crypto/fipsmodule/ec/ecp_nistz.h": "ba6982c928bbbc3c71e9ef2a7bd0e1f4ca3436bf3d178e0c5727fbcd49dfea61", + "crypto/fipsmodule/ec/ecp_nistz384.h": "7aeb84e1d64b1018d8e0c89b97ae1e603f31f9cd4786104ce5932f4d425bb1d7", + "crypto/fipsmodule/ec/ecp_nistz384.inl": "d5b342dd19e7afed0c914d9115a017263532a26b267cf906203f606cde09e9ec", + "crypto/fipsmodule/ec/gfp_p256.c": "ff6754545e9420e0b660e7bca32082d2025a3ca7a568404df71915f53f9cb2fd", + "crypto/fipsmodule/ec/gfp_p384.c": "5960def96ada5859d551817b962414063a1900248d164f241a87be3d4990efe9", + "crypto/fipsmodule/ec/p256-nistz-table.h": "04de70aacb1b079abe368125fbd683e4dae32c3c877f33187742ad4068810a52", + "crypto/fipsmodule/ec/p256-nistz.c": "a65c169d62799bec734355c126bf2151bc89a7bbf758d58357e7b7938fe35d83", + "crypto/fipsmodule/ec/p256-nistz.h": "9df1f95ae7d1e9bc6a03c5caf5f3d04c6e83b46ac3c0b01354919c91b46cecb5", + "crypto/fipsmodule/ec/p256.c": "25e651379609730d9a03e405edbea759b889d2c64ee5620216c0093ce7560fd0", + "crypto/fipsmodule/ec/p256_shared.h": "ab61cdd9bd80b5b208ba96b04daa335afe55353e527f033009eeb9d986e3c594", + "crypto/fipsmodule/ec/p256_table.h": "e51b222d99a6ea4bbbb6c43c0b34a57f3687f1a826931f2401e4ffa03b4de0d5", + "crypto/fipsmodule/ec/util.h": "db277b9751c8b34117792eaa5be4bb0c528c341071e4e7665b6350bd54846b58", + "crypto/fipsmodule/ecdsa/ecdsa_verify_tests.txt": "a607b74542c3833ab907e74e341c988ed16ee1e4b02c4323887e82c881a6b990", + "crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl": "457a053a9fc0833aed7522537d3aea55be312ed6e557b1d5e267a21a17765bb4", + "crypto/fipsmodule/modes/asm/ghash-armv4.pl": "8418502762978b3d05c7131389a8141417f75e5993d42f9a22974f7fefd7187d", + "crypto/fipsmodule/modes/asm/ghash-x86.pl": "35f0f10a6afc1e599f0f51f989ad2e49ad82e0279b7f26f5a692849d83932df0", + "crypto/fipsmodule/modes/asm/ghash-x86_64.pl": "151d7c8f06a754592fd84c24239819d8a022a55661d5eda25425b72c18d027cb", + "crypto/fipsmodule/modes/asm/ghashv8-armx.pl": "d05f19bc7fcf40d919c793ec6a1f317971b375270594be40e5741d44d05e1e7b", + "crypto/fipsmodule/sha/asm/sha256-armv4.pl": "aa1df98b7db6346f7a148ee5d5a785b3beb59100a0a1e243e0b7727961ef0c4d", + "crypto/fipsmodule/sha/asm/sha512-armv4.pl": "eec3eaf228645146665020617409f49d3e381a2bc12cff7953bde14e0ed21c76", + "crypto/fipsmodule/sha/asm/sha512-armv8.pl": "1f232de0c2b785e7483244c12ae6279b2465fe4ef3407c04f1e13705610b9fdf", + "crypto/fipsmodule/sha/asm/sha512-x86_64.pl": "9a61f951ec610e52671a7bb58463dc6d1804c3c3400570cf579e898979e2c7ba", + "crypto/internal.h": "e99f28efb0c8c6c50b72d4ee3d3da4c0550f4ed25c88866ea6c341f53623c1a0", + "crypto/limbs/limbs.c": "425939129c814ead79b0929199963e62eebeddfe39f1a09761c03cd603d4c294", + "crypto/limbs/limbs.h": "3e66639bde34e9ccfb90d5cbdfb641b920c392304dc0bc2c84048a54eaa34540", + "crypto/limbs/limbs.inl": "43be1d354b9bd45850d8b5a3518cb3bffb2625207799b28dfd8ab23f85ecc18c", + "crypto/mem.c": "ba60622ddd41f48eb0beef7d17d5e2e008e51283b0e98040ede6c66c1d772f4a", + "crypto/perlasm/arm-xlate.pl": "dc0a8e6dc7a74c376e5cc997d8db019ec2400933f07d7520705f676afde2c1e9", + "crypto/perlasm/x86_64-xlate.pl": "e503a2827b1f5589ff59abd8b5022f9c038e990761a5909a578cb786e24fd931", + "crypto/perlasm/x86asm.pl": "99b20aec085f1119827a383c444af073e8a27ed03619f180bec2f4c0abce1d84", + "crypto/perlasm/x86gas.pl": "68fb789eb9bb8126499b7126ece1533907e43181e99c2f18595d89ed4f46997a", + "crypto/perlasm/x86nasm.pl": "a0d47c2a1995b38e4055abefcadaf7e44a01ca7c6b5d68c5608c20cfa0ad92d9", + "crypto/poly1305/internal.h": "f3e580494231d8576e26fbc90d58cc6c36ad9ab2e7553491249a20d04d4be669", + "crypto/poly1305/poly1305.c": "82f60879a47bae684d8641b65dd44021511b30912ae29f5851c55ae3608ffe10", + "crypto/poly1305/poly1305_arm.c": "27b5d5c83818c3f7843fdcad26e3c0831aee7ee591177d3c35e91a58aa82abf2", + "crypto/poly1305/poly1305_arm_asm.S": "87ad5d9ab8d23054d132d6881c878f2042fd8376a4af386d44ffc641ffd19010", + "crypto/poly1305/poly1305_vec.c": "e6bca802fb7accd09c1ede9ff3680d298bc585005a13d41ffd1131068b3ed54b", + "include/ring-core/aes.h": "15f7e4a823a17ca52d73df9e3293c240895c515d9ce699e3ad6b165332e4d6c0", + "include/ring-core/arm_arch.h": "d3d3f0a55407920e72176534fa498004a92fd9f5704f77055a4893781b16c110", + "include/ring-core/asm_base.h": "91e66679344177ed8c6512c6dfeea88402d2fef2b01d94ed91c7a445baa94c8a", + "include/ring-core/base.h": "2a7ef71cdb1a3713f338548383ebae3794d51d8f6f0577738fe73b56fd7a0136", + "include/ring-core/check.h": "11026e3101e263f98fea8ae879e5de1acb678f26d9d4536cad792b08fdd5eb57", + "include/ring-core/mem.h": "99056f78311ebb0e17d4a5e8d64d649329da676b7915a9733016b4bf836bfb9c", + "include/ring-core/poly1305.h": "4e975208caaf1031642ee2ae7f145a2728b36734e1db4e1c230a159cf29e0e72", + "include/ring-core/target.h": "d3d4c738988ea92daa0281bb7a6f58856c40fea6709f04184916a1356828cf85", + "include/ring-core/type_check.h": "c1e3b240de5cb7c1264cfd198f3cfa067f47fb00370e56d86d333f7c9b3cd3ee", + "pregenerated/aesni-gcm-x86_64-elf.S": "65d6fe52c6b4e33b8d1143b23618c416a311aa484088a46c2d3974e005c8a09f", + "pregenerated/aesni-gcm-x86_64-macosx.S": "c5ec0ccb1e60d2dcd34ba494980c2619e4ca3fff137883b0dd5853b2c1ac2c9f", + "pregenerated/aesni-x86-elf.S": "be21d08af6ba59a23c50d67b78bf19449e7c2afd3e10cfffc405f97d4e9a29fd", + "pregenerated/aesni-x86_64-elf.S": "bacdd1302300e37323890312127a62dbba8538fb59c486e33b008f9ff5fdd54b", + "pregenerated/aesni-x86_64-macosx.S": "7ca79f5d82f96ab5f4b73fac1310dd615709d0f28812244042285480e469e1f2", + "pregenerated/aesv8-armx-ios64.S": "0d255b5e7ccb33aae27469a51904764e03599fbd21dc1dd9b20932f2d1d4801b", + "pregenerated/aesv8-armx-linux32.S": "36612070cdbe74602d21b77e7ed99042076fd8bea1240a4ea7bc0359c5e2558f", + "pregenerated/aesv8-armx-linux64.S": "8166681462192cc6dbf475b9d0914d15f8be8a674ee109520529e16c9c01a5ed", + "pregenerated/aesv8-armx-win64.S": "53671c049f27e4d2eb93cdce4d7f7bd4fba2534d18327072ecddffbbcf9d90b6", + "pregenerated/armv4-mont-linux32.S": "04adf5373243648dd38e2d024d3834a8f5c19972148017b1fe27b827c08a5bbb", + "pregenerated/armv8-mont-ios64.S": "54f4915386cec0c7152226f6542e1d73ccf2fef118752d4846b4ff819ebc6cdc", + "pregenerated/armv8-mont-linux64.S": "cadb892f0d76ed0dbddc8c89ed1759765c4cfc75365c5807c8736990b2eaf6dc", + "pregenerated/armv8-mont-win64.S": "4982b624a25c0f0071494639f11f61126f4b64fb2626676bd057bd0ce3aeff13", + "pregenerated/bsaes-armv7-linux32.S": "7ea005089310c978e7d658aa69a0cb8cc91401f0de8d292e73f7d6f48985df34", + "pregenerated/chacha-armv4-linux32.S": "a9dcc6bf0673ba4e8a5c96140f538e9c11e2bb0e677d89f4abd17acc7b5d6d20", + "pregenerated/chacha-armv8-ios64.S": "297768d473845784c7e36bd167cf0e33064a6bcb81d485fd616e956f35f371da", + "pregenerated/chacha-armv8-linux64.S": "6245061b9e68cac2f513928eb0e4c0d6fbee22f8e2b91dc596bc2107e3e20d76", + "pregenerated/chacha-armv8-win64.S": "1ee72764b7669e24826b3e22d61895cd57e3caa85d9f40e1c5cc02c4f2cce00b", + "pregenerated/chacha-x86-elf.S": "5872ab0dee4ac3669fffae73b2d202dd62603a79cb76aa6798ee46402fce4f81", + "pregenerated/chacha-x86_64-elf.S": "cb8bfe6aebf1ebe839be853aa28952f59963d2e8e53a1f6de9cea2287083ed56", + "pregenerated/chacha-x86_64-macosx.S": "0be4045b305e39f77b2d0ae7e495a73751582d8572006206ca710ded217113a1", + "pregenerated/chacha20_poly1305_armv8-ios64.S": "7c7f4ff28ccd588a488b57177088717fb529e1949aad4d9ac74623216c7eac70", + "pregenerated/chacha20_poly1305_armv8-linux64.S": "3e9c1ecc248558799b7df2e819b270e32659bad8e0914039ea9d1e4f8957b34d", + "pregenerated/chacha20_poly1305_armv8-win64.S": "941fb3a8ffc1670b08bf08886356d0e48d7a7ced07761a1497963b8dc3bd0505", + "pregenerated/chacha20_poly1305_x86_64-elf.S": "e3633494f33915dab00e5a1204b46ee485d276c27e365892145adaafc5ca15d0", + "pregenerated/chacha20_poly1305_x86_64-macosx.S": "29c40db2f7f3961606b952cbd5b929a244272b84d081a329dd361d4aa4cbb5b8", + "pregenerated/ghash-armv4-linux32.S": "991cc15dac58107520f9b8ac7f3e5295c6ab802444d03ee47016f3b1bc524b1f", + "pregenerated/ghash-neon-armv8-ios64.S": "6d497f76704ebe4216912d2665f614bd6b3e199a351492a51952315c546136cb", + "pregenerated/ghash-neon-armv8-linux64.S": "be3cf527334da9952facbca3ffe3a9906ce2a9086f34749caca0b3989a1f8749", + "pregenerated/ghash-neon-armv8-win64.S": "5567ff49ae773fb9bdcb0d0d6fa93709ee29c24d839a7ad014834decf3ed83d3", + "pregenerated/ghash-x86-elf.S": "12a3d1df4479ef2a3826343ad607b2ed3307f28e841f878e5c169061e4a7ef69", + "pregenerated/ghash-x86_64-elf.S": "86f1d46b7538cdb380b90faaa5036bb5ba9d41c40e4e9e4111ecf6e9a53bbeb2", + "pregenerated/ghash-x86_64-macosx.S": "f6be786e74a929dbf4c5fc63b6b83917c57800bd1190dc44297634110e973a31", + "pregenerated/ghashv8-armx-ios64.S": "e94e04b8c7cac0273b2915835b2f650536e6714fa1addbc563a15c4c37aac7bd", + "pregenerated/ghashv8-armx-linux32.S": "56087395672fdd3e44df9472b0902ee0b2b68e837cd67de12ab4a575e13fe200", + "pregenerated/ghashv8-armx-linux64.S": "1552d8d563e18cc43e1890b451abc462e23dd6fd174e3c9ec6f1b647ece04fcc", + "pregenerated/ghashv8-armx-win64.S": "f28ef38e21c6da0ba16fbf5199962af3f135ee260e5076feee969fc37ea7ca67", + "pregenerated/p256-armv8-asm-ios64.S": "5fc1ecc4b91a60c6102e7189ae02abd4eca7a7765da5432dc07e9cb9ff264332", + "pregenerated/p256-armv8-asm-linux64.S": "666ee27d60f0c9bf81e3b8d7bcb135c8b56e92cf9b08993a9e512a3584813ab7", + "pregenerated/p256-armv8-asm-win64.S": "93b0c4491cd2ede92bffe69af37e2738ddc12dd69214b087d99ede6f0b883ff4", + "pregenerated/p256-x86_64-asm-elf.S": "2b61a3d27cad4980eecbc3136bd4c9cbc3e548cb6d664090fdf7098da56c0748", + "pregenerated/p256-x86_64-asm-macosx.S": "83ee4be01af4e3c23eb85fb3e24535ced8f017cba2272aeaa9ff3f93f10d420d", + "pregenerated/sha256-armv4-linux32.S": "0e23d67992a9aa0efe7b689e93ca75c369b4af0217fd29b3f4fb3b352bfa0d94", + "pregenerated/sha256-armv8-ios64.S": "98b1bb8b66ae6e04a9da91b271eb2bc1fcea4d51106d7d2a8e4af9f12f8b61ba", + "pregenerated/sha256-armv8-linux64.S": "f404e2b8966ee552f48aff2bdf22a554095d64d45751f2fc42c83b4fabc4fd94", + "pregenerated/sha256-armv8-win64.S": "326d03ef958909d1225b3f779746aaf2f6c9e69650d1cbbddca7247f010e542e", + "pregenerated/sha256-x86_64-elf.S": "a688acbb1142e791416995251de474ed5399f9bb8b36e4fde21f9b683efed6c6", + "pregenerated/sha256-x86_64-macosx.S": "6ed7c9d9c52e0a5e23bf388a149e594e2768689700e57c5f7786ddb0d8fd179b", + "pregenerated/sha512-armv4-linux32.S": "7f9ee465f5d69c2425107842cb6008b3c1786a62e8fd518b2fa620613b847175", + "pregenerated/sha512-armv8-ios64.S": "595371003c20ec2fee0b651b733e29361afa072a7354c2f9da2c4ad7126d436e", + "pregenerated/sha512-armv8-linux64.S": "10cb62631501756c6b4dcf10ec2e276c25a8e711d612fda642d654cf3f9ef405", + "pregenerated/sha512-armv8-win64.S": "21a67f0c41fe7cd3a7b562a9ad7e9806188f21b8bc49e9918bfcb6656d673b30", + "pregenerated/sha512-x86_64-elf.S": "58a9c9dd66ab6ec6fe68b993d9c09ae5ed6c7ece97cd2cf7a0f5c0a12c2e6722", + "pregenerated/sha512-x86_64-macosx.S": "ab5b1fdf8a9d55e557a52ec604830150a7902448fbba2b733b75091a19564ea9", + "pregenerated/tmp/aesni-gcm-x86_64-nasm.asm": "1733aa9632a382d8999c8d525771943c185aadbdd418276a5990e9049c79519c", + "pregenerated/tmp/aesni-x86-win32n.asm": "904a5f38e9664086a2adab32ec6dd5343700e2503729d70e250443ee722f3511", + "pregenerated/tmp/aesni-x86_64-nasm.asm": "f78c41c7295f6f03c66d06a15d590e57ed92a303d4da35181841017a61b7c8f1", + "pregenerated/tmp/chacha-x86-win32n.asm": "2a45dd24aae1f7ebf1f32a2bead56bdf2f1af2974c8145239fa419c84f825db7", + "pregenerated/tmp/chacha-x86_64-nasm.asm": "1908522a6417db4c18d6cf092d892ef58994ae044d73f48254d582bf64751102", + "pregenerated/tmp/chacha20_poly1305_x86_64-nasm.asm": "cbf995166184d04bde5c21edd2e8dcacee60ec388eaf149366c414df750d10bd", + "pregenerated/tmp/ghash-x86-win32n.asm": "6611dea69a50b26258bee4b564ce34f81b785f396e6f235eb318e6fbddbcf646", + "pregenerated/tmp/ghash-x86_64-nasm.asm": "47996d41da7c92d40775e64fae8c86ad6bfecd7d0897c953b66a751fe74c1685", + "pregenerated/tmp/p256-x86_64-asm-nasm.asm": "cac941b9ffa66be49181d0ca64e5ff1ed3e8ebaa279e84237d146d8e58605bfa", + "pregenerated/tmp/ring_core_generated/prefix_symbols_asm.h": "2d5bd63400a601824931630e01490f511de68dd60a778f3fc375de1e5cda113b", + "pregenerated/tmp/ring_core_generated/prefix_symbols_nasm.inc": "7606320a738d9d42222bd13d6d0b8ccf5aac39f4035e4cef1511e3fa9e482a7d", + "pregenerated/tmp/sha256-x86_64-nasm.asm": "d38a93efb29822bd19a181805c05fb9d73729f6b16c8fdeadef9c2b17bf6026d", + "pregenerated/tmp/sha512-x86_64-nasm.asm": "8e83653efaf37d20ef4dbb16419c78c35aad70a23407012bd6bdfec3cfdd40c5", + "pregenerated/tmp/vpaes-x86-win32n.asm": "bc1874555a2a872c65bbd2260163ab2b153e3cff8d14fd79cd0b4345532f2de3", + "pregenerated/tmp/vpaes-x86_64-nasm.asm": "2811d7ca8356b2c96e939059a506c2c9390257a27ecb1d3f60d5e1578cadb964", + "pregenerated/tmp/x86-mont-win32n.asm": "1860aad86a322c7c455eeaaa305ae1cfe4adf95f667a3876772356f384c58e77", + "pregenerated/tmp/x86_64-mont-nasm.asm": "531d9b026f0e7af8681a1e1e5b57714ff1e490a4a8101cefea34be1d0d4d4876", + "pregenerated/tmp/x86_64-mont5-nasm.asm": "4f8da48c6d382b25725dbc29090ad6f81fc5820817fcc285442d6e969c2568a6", + "pregenerated/vpaes-armv7-linux32.S": "40f211d8c79b11b7f8daff8fdbe98c46259ee854fc31185c52737d94208c5b64", + "pregenerated/vpaes-armv8-ios64.S": "23dfb4aca22b89ba3d5cc5ecaafa3935405e1ac906e4fc1616f2656ce56aa7b1", + "pregenerated/vpaes-armv8-linux64.S": "1e1cdc05924a667f7d5f465bec324fb6112b74191438e42ea2bc707bdff5f970", + "pregenerated/vpaes-armv8-win64.S": "46158b4c37db9020d610286b9d6431aedb2039b757b0727af321e26805d0fb38", + "pregenerated/vpaes-x86-elf.S": "d91a7e857c1611982de39119707f9617fe985f8b6a12d0d57aeb2db268fe6274", + "pregenerated/vpaes-x86_64-elf.S": "982e6ab11ffe6a3ca6568dfa33d97c85f0527bc72c62974393df68fd855c0589", + "pregenerated/vpaes-x86_64-macosx.S": "432ca3e7e95d0a787aa8668441008373588a1c543e9e4dfc81d6ddba6aa9c8e9", + "pregenerated/x86-mont-elf.S": "a83f311077c3386441634607ae16f0c43228ecb107df72de17af3cb67b9f1a23", + "pregenerated/x86_64-mont-elf.S": "46b37e381c04eae509007312362da90995cfa51ff57198a13cf8aa753ad5c94e", + "pregenerated/x86_64-mont-macosx.S": "3d3b8194942db496e418258b86b13f6348bf058c2771c105fab4f81c60fe6223", + "pregenerated/x86_64-mont5-elf.S": "25a6dd78531d68b7d840b7f701e77545588c3ca667d56496f1d63bc9343afc98", + "pregenerated/x86_64-mont5-macosx.S": "e5352368831385b8e19c8af017f1369008ee8262d518401bb9b07d93b08083ac", + "src/aead.rs": "ca4d30d604b7213675df939ddf028e1b081f3973dd69a961fdeb86e8859cf594", + "src/aead/aes.rs": "d03ba546088473721928d4103da819e026bb488f6964bf9407f2283c16fa278d", + "src/aead/aes_gcm.rs": "2fe30e8bc4a464eaa65c67f8907ada1ae6445b6bae5092c9e7b178cdaec3cf6c", + "src/aead/block.rs": "f3d70afffede7f09f71b57a15c8302f8dc2947d0f3106ec49736de341db42f76", + "src/aead/chacha.rs": "5ec18e03f7415fc278df84e0954ebfbe7c0fe621af235517422c332125186def", + "src/aead/chacha/fallback.rs": "7e17d1245ceed6e0a8a7f12d167aa71baf59f7d9a6ac37446dd0459422d4fe7d", + "src/aead/chacha20_poly1305.rs": "eaaca9d3e977109a7f08e09a69fa5c0cbea7e3a1e879ed17ce20692c5d77b3f9", + "src/aead/chacha20_poly1305_openssh.rs": "7784986656ba13942566c29a0e643ab323549d607ffe2c2d1f81de598cadca03", + "src/aead/gcm.rs": "be2ab80c151be1bb4ab3034f2fb260730ded9ea7488b788b93a82c6e02f8ed66", + "src/aead/gcm/gcm_nohw.rs": "0f2fc045a978e9322f89a710e0cdc5a95db04984432984996b4732c3df11192c", + "src/aead/less_safe_key.rs": "9ae1073adf1f3b69bdca1e4c1ee73f17e80551ebf2f628c6d8bbd189b6f1d718", + "src/aead/nonce.rs": "91bbf1018e2a6c151ea501627f10fe61910739a35ea3cab929395bf59d208db7", + "src/aead/opening_key.rs": "adc7f77883a916d10b2347bbec9b14a0325f8ebd87592993138d239526e35512", + "src/aead/poly1305.rs": "2c9da217cc36846e89df5dcc481232678748229d4aa2771233eef13b7a810f0a", + "src/aead/poly1305_test.txt": "3ce56f041cf95692d817dfaeee443dccd5df8ace7607e7a331b3fa102c9a8163", + "src/aead/quic.rs": "659744052559758b6596c4772ca9bd66883046f76c1f15a4857d5d0634145a48", + "src/aead/sealing_key.rs": "9f9e09f9730ee450b163c963ab553da762900d4c2fe32784de445da64d7a176e", + "src/aead/shift.rs": "cbc7f10ca8971debb02a5b1e0c99fe7e502f510ade87ba76a51cea1854de3e47", + "src/aead/unbound_key.rs": "557e328c040a74724f6d81370e67e45dccd3eb63dd14222d79c01c23ec6c3ee4", + "src/agreement.rs": "fe9d369bee3e18eada0ba32fe2f9c5fbdb9fc2fcf243ed36500ff3b029c09a10", + "src/arithmetic.rs": "a87e711708fb568dbf62009e151be7bd5b3b8a69cc9d3559508bd042aaf82787", + "src/arithmetic/bigint.rs": "4ec17e02eda55067f8736e8acb2ddcf09632277006648b2bd8e05613a0471cf9", + "src/arithmetic/bigint/boxed_limbs.rs": "ba087490545e1808c8c35d003b77d5e549c27a8546c4fb3b8f12930d11a849ce", + "src/arithmetic/bigint/modulus.rs": "60a41d0052bdd362857027c62f95c61f85ea169c2c7e0842b47740e127de1101", + "src/arithmetic/bigint/private_exponent.rs": "ca4afa9f731f017395515188998f3ea4fdf8db561807b3da4fd8faca517b2055", + "src/arithmetic/constant.rs": "a5c0448ff100ba4c137dc320b2b30f997cfc2e973847da7301f097265c338ed9", + "src/arithmetic/montgomery.rs": "24b103f0d07ccc5ffcd90a96e9fd8731179cd0240ece19349983742eb0fa0436", + "src/arithmetic/n0.rs": "2d27721c954869a0afbf53345f13d485b86e66cd8c655fb607ad5666d0151367", + "src/arithmetic/nonnegative.rs": "2c6d55dc185e4de4d1d74f687e93799cdcd414b24fec6327838e2d33c1a30a14", + "src/bits.rs": "61128643e3bf0d601fc6cef7dcc393eab99ec67ffbdc5d08c3cf3f1613dab523", + "src/bssl.rs": "e9d0413f24aed47def667f65098e3d138532fd4624d563230009be34ea5bed0d", + "src/c.rs": "45265b4cce8f309726627a059cf71b9669274d9ec591a633c9bc2fd7f9e6bbbe", + "src/constant_time.rs": "844774862d8ffbbaaa4281f4c0429f51cdb0c7815143ae31c04d4388e7d2b198", + "src/cpu.rs": "f721b517f006da28defb7a212edce22da10477f91b277e52ec31d2be660371db", + "src/cpu/arm.rs": "6fd60789e7e3bdb56d06eeedccd1d33006efe88bc31ba3863ac2e702acce200a", + "src/cpu/intel.rs": "b1a165b5760378e7cbbeebcf3c60e208389b8c878f532cd0660479de02ceeb1c", + "src/data/alg-rsa-encryption.der": "7bc023427767a2f2e156f8ae030d06d19f862e326b952116649b423c3ff7110e", + "src/debug.rs": "6781fc1d6a02c7e70f1e2c0ca0f0a51695e7ec540b2a17a2ced85cce12ee1b34", + "src/digest.rs": "58b416157e148e504152098d4bf96b2eb9ea48199b355ea51b6f78df1a9cc129", + "src/digest/sha1.rs": "542b3a20ffb5800fab3215df1b931b640753cdb04742d0a63afde46ea20feba0", + "src/digest/sha2.rs": "1ce42bdd98bed119053eb2c36c161154dfbdd0014092219e8583ab3ea75c238e", + "src/ec.rs": "1b2067f41217f83b4921b593e4e8c4746ed8bc1febb79cc6ed2db716809cee60", + "src/ec/curve25519.rs": "9af5358f331756535b5acea2aa9e1cf58f32b0433719d7df64b5cafe407650b9", + "src/ec/curve25519/ed25519.rs": "d025eac2dfce52442a9d1aa0c159509bee7c8b6fd48506b90aa5bb4e4f09dc5f", + "src/ec/curve25519/ed25519/ed25519_pkcs8_v2_template.der": "b209940853a4d88930cf2a12d18dd6823de256cd30303676ba1be07475cc83b8", + "src/ec/curve25519/ed25519/signing.rs": "82d98b6143efd0803267f9b0a6527c8397266a89941ef162b6cf562c472ab2b6", + "src/ec/curve25519/ed25519/verification.rs": "a51979d7540e43d4295289416d8fe41d85e2368b741725f69e38ef83edf1f491", + "src/ec/curve25519/ops.rs": "8b50e26f211ba4cfcf0227b51ceb3882a4c35052c2e2e326ec93afccb67b716c", + "src/ec/curve25519/scalar.rs": "5d499eae1d5129250d1e13482be7712a68d68592fdcd18c8992daf7b43a6cd26", + "src/ec/curve25519/x25519.rs": "9fe38223707ef411303e3c1295867a2b6ed58231006194f92257cf4318e3bec8", + "src/ec/keys.rs": "f6d22f9fa6e43df19fe4e6d50e0d0641132b935c5accc4cacda254770b43948c", + "src/ec/suite_b.rs": "265d6f89847312e9c6451dee4ca7afc09f0664bee1d5e9ac1794f2e2f7b2cb5e", + "src/ec/suite_b/curve.rs": "64926ae050efe82a04880d24d3abb26f3e4765773d457627e5e39bcc3d008482", + "src/ec/suite_b/ecdh.rs": "2284fade50e5bde08831a23bf4a29dae57add560e40528050efa2b977dc28ce9", + "src/ec/suite_b/ecdsa.rs": "013e0d2d2a21eb437253b03a1f6a1a4ba8c45eb1c2ea1396696bdd04a8ed2932", + "src/ec/suite_b/ecdsa/digest_scalar.rs": "68a9113de7cffc1ff0f0de91d817e67699f268b7d18650bfbfe02584d8559196", + "src/ec/suite_b/ecdsa/ecPublicKey_p256_pkcs8_v1_template.der": "5a2207da0199ebe3e2a80e15e7692b21f215f855ed3bd2c51f466c7969e11990", + "src/ec/suite_b/ecdsa/ecPublicKey_p384_pkcs8_v1_template.der": "5ec14cd6aac17cec849382ee5e2077497f98ce435d7aee2116cd092bf84f5556", + "src/ec/suite_b/ecdsa/signing.rs": "f9a34b59b767aea363c6875cad32101ecd32bacfb3943ee2c9331f1defe5a3b5", + "src/ec/suite_b/ecdsa/verification.rs": "95bfc1002d5e757ca7ef1835deebb645abbfab7e25a0899f57acb9a4fb09fd84", + "src/ec/suite_b/ops.rs": "5470117286fb3e3802b5db75492987c4032367b7885ddd007a87361e3262045b", + "src/ec/suite_b/ops/elem.rs": "365792ad051514a3354a63b84b16c9d3189e25ce9363092838835df246409a4f", + "src/ec/suite_b/ops/p256.rs": "421c61c08850d594a8eab68f394e6c18d235fc80f0c324dadb9795cbab084b0a", + "src/ec/suite_b/ops/p384.rs": "fd3238e9f5398550eeedb08999007c19656f13a9fee6e68462008b033019c305", + "src/ec/suite_b/private_key.rs": "cbce4db4600d5fe989d8f792c5decc8451acb1319f2c2d0dced5ba60236055cf", + "src/ec/suite_b/public_key.rs": "f254259ce6dcad4f2ec981b0d3140952473cbe98d9c7c97ff96c1d9da369df0f", + "src/endian.rs": "0699a14ca33454473bf6cbbb6df22d0f882b2a63d011fada7329027cabf2d425", + "src/error.rs": "4bc1c33840a199c5b8b7e4f6bbd65ad89f2ffe71723ec502dadea902d9b38098", + "src/hkdf.rs": "31a9fd689c1f46d1dcc26dc9e3f83f3c520f21f6eb15a07eb380d7d752f1f924", + "src/hmac.rs": "9846b73578852c25c510d4d2ce94a1e2efeef425d42fd0f2234199975f5d2094", + "src/io.rs": "83ead14e2d50b5e80a1fc813781a097825f06743924bb6eaa85eef7a7c6198f3", + "src/io/der.rs": "e89e1ac448ebef58ad187d22d85b627805da4d9d235ca0c03bf54062515735d1", + "src/io/der_writer.rs": "ba6f9c5452b0b67db75765f1eb686078896aca591e76d27673097d6b32057954", + "src/io/positive.rs": "f09a01bcdd7a8f8c30170a5f854e4b3a041c7cfe2c5b9f34b709ec15eda4321d", + "src/io/writer.rs": "72d4cda37949b80823f6c2e6a6bb4b7dde5bfdc47c1143226b06ca4720d2cfbe", + "src/lib.rs": "58b258122de61c7c5f706f7db18b46167f7f99dff12ffe39227e5643e4e28fbe", + "src/limb.rs": "d1571846ab3e89a58193bb3f8f745cba97f925681dde3297333c04c75de79a25", + "src/pbkdf2.rs": "0bdb545fe876592da86108f95f89244e8a91f5d2397ee9b31d123a5426518722", + "src/pkcs8.rs": "85ecbb686808892712cfbb204c5230d55773ab1200f1da968f330e7c44986dc2", + "src/polyfill.rs": "10fe2667ff903c485260a6ebc59fa44bfd211efaaf5b080e74cc7316b70700e1", + "src/polyfill/array_flat_map.rs": "0027962af7fa4e1830b4f67b4da400d3a13bb5dad7f96188ece1ffec412eb2b4", + "src/polyfill/chunks_fixed.rs": "d786034d51b47441d2d2a4ae6d4a09b9acff97f6c4916be2429fb80541eddb48", + "src/polyfill/leading_zeros_skipped.rs": "4a505dc28cad0b5718fe0f2a74b8f79de1bc78cc49c2bf1f65b8e7e3eaad7489", + "src/polyfill/test.rs": "38312699139268c9fc35f7d5ead73b118a79a471f6575da4b8a59efbf84eead7", + "src/polyfill/unwrap_const.rs": "6d7a6c2c425aa801198daa6af33ecf70f769e32372b5d50c68b1ec49386e92a4", + "src/prefixed.rs": "b20a1ccd54544a592910ae73dd34f4684cfad32b409da346c155b18c139eeee0", + "src/rand.rs": "e98f11874ca8598bb17b48083ce90c02593932251da1eda42ce127ecb253436c", + "src/rsa.rs": "b2c7ac54940d2fc799f653e5f54786eb0180ed6be02b7fd1221d57161e469a97", + "src/rsa/keypair.rs": "63ebc13b7ad72bccbd818d32652f62233dbd7458be4d639a270487f7618221a6", + "src/rsa/keypair_components.rs": "b3ce592439de54153b89c80e86165e8405f86c710e283d456b8cd5da5ad6ac65", + "src/rsa/padding.rs": "acfa094a1027d35e9c9b1ed1df1a603cf306947ec78b0a12a424502ba95755b9", + "src/rsa/padding/pkcs1.rs": "07f08720eb2fbfff10f901596a7c4ecd12a23c37496fd73030e5279a770c6706", + "src/rsa/padding/pss.rs": "b5d7d9032221eb1510467e5a5aa89c282c516ab2840e83e8f091056cc9ba0db8", + "src/rsa/public_exponent.rs": "e49a90b89b806322329a6fff85fee5c81c4ff7ee3b1e896ece0db0be9a35a2f8", + "src/rsa/public_key.rs": "2c54854ab0f2399edcf45261590b2e5f9eb462c91a8b37020687b18963e61976", + "src/rsa/public_key_components.rs": "7cd2a5d1339cfc65eaf826f133db78f6184c0ca060c029c8eb3c1c22e7452967", + "src/rsa/public_modulus.rs": "ef1b1322e30c6a66e8b0cd6b0f329a48c79ec26f9d56fd738ff15c1e60cafa50", + "src/rsa/signature_rsa_example_private_key.der": "5344d57f719a98c4464aed1d1c2fa569f0a9de8621c6fdec7d28923a0e1c662c", + "src/rsa/signature_rsa_example_public_key.der": "28b0a357936485bd2a7776321cccfe17c2347f2bb75751ddf9dfc6429cacb6f1", + "src/rsa/verification.rs": "ad350bb826451f23f1113ae62dd0a7627e085b5e74944470bab43a0fddc99858", + "src/signature.rs": "3c60ed963c9e607a030bf8d391c8d81cc97e6a9f1ea4f5bb150d73ad508c04cc", + "src/test.rs": "f388c047d915e13f90f413c4054eeb19e2e131c02ddabf487fd506641b289f90", + "tests/aead_tests.rs": "17d75e8cb2570795f18cf8db0dad394790d78b0292bfeeda055dce107d125e04", + "tests/agreement_tests.rs": "e89561ac54e0aee01a9168cf9cef2e5a0ad9165daabb29c3c686be57ac6d55fd", + "tests/constant_time_tests.rs": "38715ef4e19fb9e4c36f47c18828ba6d3686ea977bcc34bbd9bafed22d6a4515", + "tests/digest_tests.rs": "bb25cfb99247a166bc7d6ed700608b7a86fa1dbc562b655e01809ad0759dfcdc", + "tests/ecdsa_test_private_key_p256.p8": "d56f99994233d749d03315f5cb9797fad81d3e25f962d2cd543d4dfe7cdd1389", + "tests/ecdsa_test_public_key_p256.der": "93c930878dc29d802b151bf492a2f00672b2240b740002a650ccb706664d10c9", + "tests/ecdsa_test_public_key_p256_debug.txt": "ccce94ab37a5e5286f0e5f1934bdeb39539e8f72bc7ccd0a1f666c9a1abc0bdb", + "tests/ecdsa_tests.rs": "d00069ffc493c2af9731c1e80ba4ffcd67f1cc1edf65abfc656513b3cf1feba6", + "tests/ed25519_test_private_key.bin": "644d50ab64864c20a12b3c4656d46b4a48f69ef7c47ecdc8415cd28316b22ef5", + "tests/ed25519_test_private_key.p8": "8a5217b181c3096224275c3fedcfc938e54aee073114314cbc1a9cedfacce3b8", + "tests/ed25519_test_public_key.bin": "21fe31dfa154a261626bf854046fd2271b7bed4b6abe45aa58877ef47f9721b9", + "tests/ed25519_test_public_key.der": "119e5ed7b8533bdf24897f07fe4dd57671a64f8d10534ba128c9bb016af86484", + "tests/ed25519_tests.rs": "1ee03d4a0dc27ab3094abc2754287f774efadd04a1275603e252fe731fe3d362", + "tests/error_tests.rs": "059683579f639039d9d386839b48afa0d547ce000c324b1acb3cc88116f5275e", + "tests/hkdf_tests.rs": "d0853ba06a0e4f07355444e15556ed5815ddd5d8cecc6185dc50794be6724ac8", + "tests/hmac_tests.rs": "ae1da517934b5165244bfc1647e0c9e4b57741da057e372f3466f91a7185156d", + "tests/pbkdf2_tests.rs": "9a8780ecf3bd973d7ab06a9176be7bbbd397bc6e2eea283bcc31aa6061566d57", + "tests/quic_tests.rs": "6b5285ba4bd0347b74ee74a77324ec019cc3c0d5d7ea118be0933b5719d0ccf8", + "tests/rand_tests.rs": "82599b5bf1c3d532e678de571f5fad9daf4d22ce19517d95dc26d298bb0acc8f", + "tests/rsa_test_private_key_2048.p8": "a0d95a0b133b4c217bc11322b67d62eb13537b8a9f66e20b5c9b5ac31af21859", + "tests/rsa_test_public_key_2048.der": "7180acb59312d3544c3b36975ae6c4c55f59035ce4de487852cf6c99b33868cd", + "tests/rsa_test_public_key_2048_debug.txt": "dc471e4ca8c1ef4b57d2ce79c9b9ba25ab9e262ed63a24d2b65cb2d2f3797ffd", + "tests/rsa_test_public_modulus.bin": "a564c096055103ddd882641e3cb22c849b202a8a1bd646001451bb52b9ec7fd3", + "tests/rsa_tests.rs": "9b650e58490c9d4930d34d763c826ea67c9b8e26ec6ae76fdb464be8a1d105f6", + "tests/signature_tests.rs": "abaedc4cbba1b08b5d093037d43d069bebf10df02c6905104f9686f86de84c9f", + "third_party/NIST/SHAVS/SHA1LongMsg.rsp": "c765dbc1609e9046b12f60a5285a88128dab4315080c94ce9f2a57a7b0b980be", + "third_party/NIST/SHAVS/SHA1Monte.rsp": "d458fa7e39095b4e292a75b0cd224f90b72dc801a63ad2c0d75b8f10d745ab6d", + "third_party/NIST/SHAVS/SHA1ShortMsg.rsp": "be0991ddc5372932d55804b11713c9140d10435ef4b316a0773e3506eec79cda", + "third_party/NIST/SHAVS/SHA224LongMsg.rsp": "d37115e5d2286dde969c5e1b2275cd83ecb066366d7a38bb6b2b3adb4a88de89", + "third_party/NIST/SHAVS/SHA224Monte.rsp": "7854d388666ea3eb01bdaca37dc8ae0bc39d30f8731d9a5487cbd61de47d1d59", + "third_party/NIST/SHAVS/SHA224ShortMsg.rsp": "0dad6656c08f77252f6ccb789e42284fd61fc53bba30e83162800aa3d2aa939f", + "third_party/NIST/SHAVS/SHA256LongMsg.rsp": "6fac36f37360bcf74ffcf4465c18e30d6d5a04cc90885b901fc3130c16060974", + "third_party/NIST/SHAVS/SHA256Monte.rsp": "29ea30c6bb4b84e425fb8c1d731c6bb852dac935825f2bd1143e5d3c4f10bfb9", + "third_party/NIST/SHAVS/SHA256ShortMsg.rsp": "75e1cb83994638481808e225b9eb0c1ebd0c232d952ac42b61abce6363be283c", + "third_party/NIST/SHAVS/SHA384LongMsg.rsp": "536171765a4278c000ac3c9913edb2eed0ca7ccd5a10b72ed79fdfe7901a6d6a", + "third_party/NIST/SHAVS/SHA384Monte.rsp": "4270099431ff52ee1686dc472351e681c26c507433df8f107c7de203b771424e", + "third_party/NIST/SHAVS/SHA384ShortMsg.rsp": "7ea7bcf00fadc20949fae63703e40681ddf288fea808471cb3cbc95f3ec16811", + "third_party/NIST/SHAVS/SHA512LongMsg.rsp": "b1f3f05d5c209777954d49521d7ea1349447c36a0c52849e044bc397a27dd410", + "third_party/NIST/SHAVS/SHA512Monte.rsp": "8ca78659286c2f01667a98fc7accd32fc171ae7b24ac00f1a8ce6b77770247fa", + "third_party/NIST/SHAVS/SHA512ShortMsg.rsp": "e53a36c03609e5a3e3cc4b6e117a499db7864c23ec825c6cec99503a45f40764", + "third_party/fiat/LICENSE": "43e358d7b6eb109d0f51f7b3a090fd82607965767c25fadee39e922475de2061", + "third_party/fiat/asm/fiat_curve25519_adx_mul.S": "98dc96d4d48c8c8c533cb81456e5e543e1f54cc3523de8dda991da599a9fc6ec", + "third_party/fiat/asm/fiat_curve25519_adx_square.S": "1303960a7bc3af812f039a708a852daf36d5b5f1c1d177f4ddff5d7da22323d1", + "third_party/fiat/curve25519_32.h": "b5260ae29ecd25969588fa157b02173d98e21b63739bea24392acc92c890dafc", + "third_party/fiat/curve25519_64.h": "00a716fc5ceda9d90b9019481a8fd81ca3daef641ec1ec6d6b9fffb603c4e71c", + "third_party/fiat/curve25519_64_adx.h": "b6ba98a882e0a77c743af43394b584ab9e44c860492e513f4d4c90bb2b761b23", + "third_party/fiat/curve25519_64_msvc.h": "7ab5e0d33c04e4b371c17842697419422954d967eb5e2b0128fb11faed17c531", + "third_party/fiat/p256_32.h": "0078a1d7723f9707a35488e14fad497514b482df3af368ef908bd79dbbf5dd83", + "third_party/fiat/p256_64.h": "c5f54bc513da6de13cfec3334ed095786a46ca25352a5e038437095157c4aa03", + "third_party/fiat/p256_64_msvc.h": "5a36a2b959c2b68ac7f197f472bee55d58f7ec58dda6c226f565d6bd721dbeda" + }, + "package": "9babe80d5c16becf6594aa32ad2be8fe08498e7ae60b77de8df700e67f191d7e" +} diff -Nru temporalio-1.3.0/vendor/ring/Cargo.toml temporalio-1.3.0/vendor/ring/Cargo.toml --- temporalio-1.3.0/vendor/ring/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -3,35 +3,179 @@ # 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 +# to registry (e.g., crates.io) dependencies. # -# If you believe there's an error in this file please file an -# issue against the rust-lang/cargo repository. If you're -# editing this file be aware that the upstream Cargo.toml -# will likely look very different (and much more reasonable) +# 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" +edition = "2021" +rust-version = "1.61.0" name = "ring" -version = "0.16.20" +version = "0.17.3" authors = ["Brian Smith "] build = "build.rs" -links = "ring-asm" -include = ["LICENSE", "Cargo.toml", "pregenerated/*", "build.rs", "crypto/chacha/asm/chacha-armv4.pl", "crypto/chacha/asm/chacha-armv8.pl", "crypto/chacha/asm/chacha-x86.pl", "crypto/chacha/asm/chacha-x86_64.pl", "crypto/cipher_extra/test/aes_128_gcm_siv_tests.txt", "crypto/cipher_extra/test/aes_256_gcm_siv_tests.txt", "crypto/constant_time_test.c", "crypto/cpu-intel.c", "crypto/crypto.c", "crypto/curve25519/asm/x25519-asm-arm.S", "crypto/curve25519/curve25519.c", "crypto/curve25519/curve25519_tables.h", "crypto/curve25519/internal.h", "crypto/fipsmodule/aes/aes_nohw.c", "crypto/fipsmodule/aes/asm/aesni-x86.pl", "crypto/fipsmodule/aes/asm/aesni-x86_64.pl", "crypto/fipsmodule/aes/asm/aesv8-armx.pl", "crypto/fipsmodule/aes/asm/bsaes-armv7.pl", "crypto/fipsmodule/aes/asm/bsaes-x86_64.pl", "crypto/fipsmodule/aes/asm/vsaes-armv7.pl", "crypto/fipsmodule/aes/asm/vpaes-x86.pl", "crypto/fipsmodule/aes/asm/vpaes-x86_64.pl", "crypto/fipsmodule/bn/asm/armv4-mont.pl", "crypto/fipsmodule/bn/asm/armv8-mont.pl", "crypto/fipsmodule/bn/asm/x86-mont.pl", "crypto/fipsmodule/bn/asm/x86_64-mont.pl", "crypto/fipsmodule/bn/asm/x86_64-mont5.pl", "crypto/fipsmodule/bn/internal.h", "crypto/fipsmodule/bn/montgomery.c", "crypto/fipsmodule/bn/montgomery_inv.c", "crypto/fipsmodule/ec/asm/ecp_nistz256-armv4.pl", "crypto/fipsmodule/ec/asm/ecp_nistz256-armv8.pl", "crypto/fipsmodule/ec/asm/ecp_nistz256-x86.pl", "crypto/fipsmodule/ec/asm/p256-x86_64-asm.pl", "crypto/fipsmodule/ec/ecp_nistz.c", "crypto/fipsmodule/ec/ecp_nistz.h", "crypto/fipsmodule/ec/ecp_nistz256.c", "crypto/fipsmodule/ec/ecp_nistz256.h", "crypto/fipsmodule/ec/ecp_nistz256_table.inl", "crypto/fipsmodule/ec/ecp_nistz384.h", "crypto/fipsmodule/ec/ecp_nistz384.inl", "crypto/fipsmodule/ec/gfp_p256.c", "crypto/fipsmodule/ec/gfp_p384.c", "crypto/fipsmodule/ecdsa/ecdsa_verify_tests.txt", "crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl", "crypto/fipsmodule/modes/asm/ghash-armv4.pl", "crypto/fipsmodule/modes/asm/ghash-x86.pl", "crypto/fipsmodule/modes/asm/ghash-x86_64.pl", "crypto/fipsmodule/modes/asm/ghashv8-armx.pl", "crypto/fipsmodule/sha/asm/sha256-armv4.pl", "crypto/fipsmodule/sha/asm/sha512-armv4.pl", "crypto/fipsmodule/sha/asm/sha512-armv8.pl", "crypto/fipsmodule/sha/asm/sha512-x86_64.pl", "crypto/internal.h", "crypto/limbs/limbs.c", "crypto/limbs/limbs.h", "crypto/limbs/limbs.inl", "crypto/mem.c", "crypto/perlasm/arm-xlate.pl", "crypto/perlasm/x86asm.pl", "crypto/perlasm/x86gas.pl", "crypto/perlasm/x86nasm.pl", "crypto/perlasm/x86_64-xlate.pl", "crypto/poly1305/internal.h", "crypto/poly1305/poly1305.c", "crypto/poly1305/poly1305_arm.c", "crypto/poly1305/poly1305_arm_asm.S", "crypto/poly1305/poly1305_vec.c", "crypto/cipher_extra/asm/chacha20_poly1305_x86_64.pl", "doc/link-to-readme.md", "examples/checkdigest.rs", "include/GFp/aes.h", "include/GFp/arm_arch.h", "include/GFp/base.h", "include/GFp/check.h", "include/GFp/cpu.h", "include/GFp/mem.h", "include/GFp/poly1305.h", "include/GFp/type_check.h", "src/aead.rs", "src/aead/aes.rs", "src/aead/aes_gcm.rs", "src/aead/aes_tests.txt", "src/aead/block.rs", "src/aead/chacha.rs", "src/aead/chacha_tests.txt", "src/aead/chacha20_poly1305.rs", "src/aead/chacha20_poly1305_openssh.rs", "src/aead/counter.rs", "src/aead/gcm.rs", "src/aead/gcm/gcm_nohw.rs", "src/aead/iv.rs", "src/aead/nonce.rs", "src/aead/poly1305.rs", "src/aead/poly1305_test.txt", "src/aead/quic.rs", "src/aead/shift.rs", "src/agreement.rs", "src/arithmetic.rs", "src/arithmetic/bigint.rs", "src/arithmetic/bigint_elem_exp_consttime_tests.txt", "src/arithmetic/bigint_elem_exp_vartime_tests.txt", "src/arithmetic/bigint_elem_mul_tests.txt", "src/arithmetic/bigint_elem_reduced_once_tests.txt", "src/arithmetic/bigint_elem_reduced_tests.txt", "src/arithmetic/bigint_elem_squared_tests.txt", "src/arithmetic/constant.rs", "src/arithmetic/montgomery.rs", "src/array.rs", "src/bits.rs", "src/bssl.rs", "src/c.rs", "src/constant_time.rs", "src/cpu.rs", "src/data/alg-rsa-encryption.der", "src/debug.rs", "src/digest.rs", "src/digest/sha1.rs", "src/digest/sha2.rs", "src/ec/curve25519/ed25519/digest.rs", "src/ec/curve25519/ed25519.rs", "src/ec/curve25519/ed25519/signing.rs", "src/ec/curve25519/ed25519/verification.rs", "src/ec/curve25519/ed25519/ed25519_pkcs8_v2_template.der", "src/ec/curve25519.rs", "src/ec/curve25519/ops.rs", "src/ec/curve25519/scalar.rs", "src/ec/curve25519/x25519.rs", "src/ec.rs", "src/ec/keys.rs", "src/ec/suite_b/curve.rs", "src/ec/suite_b/ecdh.rs", "src/ec/suite_b/ecdsa/digest_scalar.rs", "src/ec/suite_b/ecdsa.rs", "src/ec/suite_b/ecdsa/signing.rs", "src/ec/suite_b/ecdsa/verification.rs", "src/ec/suite_b/ecdsa/ecdsa_digest_scalar_tests.txt", "src/ec/suite_b/ecdsa/ecPublicKey_p256_pkcs8_v1_template.der", "src/ec/suite_b/ecdsa/ecPublicKey_p384_pkcs8_v1_template.der", "src/ec/suite_b/ecdsa/ecdsa_sign_asn1_tests.txt", "src/ec/suite_b/ecdsa/ecdsa_sign_fixed_tests.txt", "src/ec/suite_b.rs", "src/ec/suite_b/ops/elem.rs", "src/ec/suite_b/ops.rs", "src/ec/suite_b/ops/p256.rs", "src/ec/suite_b/ops/p256_elem_mul_tests.txt", "src/ec/suite_b/ops/p256_elem_neg_tests.txt", "src/ec/suite_b/ops/p256_elem_sum_tests.txt", "src/ec/suite_b/ops/p256_point_double_tests.txt", "src/ec/suite_b/ops/p256_point_mul_base_tests.txt", "src/ec/suite_b/ops/p256_point_mul_serialized_tests.txt", "src/ec/suite_b/ops/p256_point_mul_tests.txt", "src/ec/suite_b/ops/p256_point_sum_mixed_tests.txt", "src/ec/suite_b/ops/p256_point_sum_tests.txt", "src/ec/suite_b/ops/p256_scalar_mul_tests.txt", "src/ec/suite_b/ops/p256_scalar_square_tests.txt", "src/ec/suite_b/ops/p384.rs", "src/ec/suite_b/ops/p384_elem_div_by_2_tests.txt", "src/ec/suite_b/ops/p384_elem_mul_tests.txt", "src/ec/suite_b/ops/p384_elem_neg_tests.txt", "src/ec/suite_b/ops/p384_elem_sum_tests.txt", "src/ec/suite_b/ops/p384_point_double_tests.txt", "src/ec/suite_b/ops/p384_point_mul_base_tests.txt", "src/ec/suite_b/ops/p384_point_mul_tests.txt", "src/ec/suite_b/ops/p384_point_sum_tests.txt", "src/ec/suite_b/ops/p384_scalar_mul_tests.txt", "src/ec/suite_b/private_key.rs", "src/ec/suite_b/public_key.rs", "src/ec/suite_b/suite_b_public_key_tests.txt", "src/endian.rs", "src/error.rs", "src/hkdf.rs", "src/hmac.rs", "src/hmac_generate_serializable_tests.txt", "src/io.rs", "src/io/der.rs", "src/io/der_writer.rs", "src/io/positive.rs", "src/io/writer.rs", "src/lib.rs", "src/limb.rs", "src/endian.rs", "src/pbkdf2.rs", "src/pkcs8.rs", "src/polyfill.rs", "src/polyfill/convert.rs", "src/rand.rs", "src/rsa/convert_nist_rsa_test_vectors.py", "src/rsa.rs", "src/rsa/padding.rs", "src/rsa/random.rs", "src/rsa/rsa_pss_padding_tests.txt", "src/rsa/signature_rsa_example_private_key.der", "src/rsa/signature_rsa_example_public_key.der", "src/rsa/signing.rs", "src/rsa/verification.rs", "src/signature.rs", "src/test.rs", "src/test_1_syntax_error_tests.txt", "src/test_1_tests.txt", "src/test_3_tests.txt", "tests/aead_aes_128_gcm_tests.txt", "tests/aead_aes_256_gcm_tests.txt", "tests/aead_chacha20_poly1305_tests.txt", "tests/aead_chacha20_poly1305_openssh_tests.txt", "tests/aead_tests.rs", "tests/agreement_tests.rs", "tests/agreement_tests.txt", "tests/constant_time_tests.rs", "tests/digest_tests.rs", "tests/digest_tests.txt", "tests/ecdsa_from_pkcs8_tests.txt", "tests/ecdsa_tests.rs", "tests/ecdsa_test_private_key_p256.p8", "tests/ecdsa_test_public_key_p256.der", "tests/ecdsa_test_public_key_p256_debug.txt", "tests/ecdsa_sign_asn1_tests.txt", "tests/ecdsa_sign_fixed_tests.txt", "tests/ecdsa_verify_asn1_tests.txt", "tests/ecdsa_verify_fixed_tests.txt", "tests/ed25519_from_pkcs8_tests.txt", "tests/ed25519_from_pkcs8_unchecked_tests.txt", "tests/ed25519_tests.rs", "tests/ed25519_tests.txt", "tests/ed25519_test_private_key.bin", "tests/ed25519_test_private_key.p8", "tests/ed25519_test_public_key.bin", "tests/ed25519_test_public_key.der", "tests/hkdf_tests.rs", "tests/hkdf_tests.txt", "tests/hmac_tests.rs", "tests/hmac_tests.txt", "tests/pbkdf2_tests.rs", "tests/pbkdf2_tests.txt", "tests/quic_aes_128_tests.txt", "tests/quic_aes_256_tests.txt", "tests/quic_chacha20_tests.txt", "tests/quic_tests.rs", "tests/rand_tests.rs", "tests/rsa_from_pkcs8_tests.txt", "tests/rsa_pkcs1_sign_tests.txt", "tests/rsa_pkcs1_verify_tests.txt", "tests/rsa_primitive_verify_tests.txt", "tests/rsa_pss_sign_tests.txt", "tests/rsa_pss_verify_tests.txt", "tests/rsa_tests.rs", "tests/rsa_test_private_key_2048.p8", "tests/rsa_test_public_key_2048.der", "tests/rsa_test_public_key_2048_debug.txt", "tests/signature_tests.rs", "third_party/fiat/curve25519_32.h", "third_party/fiat/curve25519_64.h", "third_party/fiat/LICENSE", "third_party/fiat/make_curve25519_tables.py", "third_party/NIST/SHAVS/SHA1LongMsg.rsp", "third_party/NIST/SHAVS/SHA1Monte.rsp", "third_party/NIST/SHAVS/SHA1ShortMsg.rsp", "third_party/NIST/SHAVS/SHA224LongMsg.rsp", "third_party/NIST/SHAVS/SHA224Monte.rsp", "third_party/NIST/SHAVS/SHA224ShortMsg.rsp", "third_party/NIST/SHAVS/SHA256LongMsg.rsp", "third_party/NIST/SHAVS/SHA256Monte.rsp", "third_party/NIST/SHAVS/SHA256ShortMsg.rsp", "third_party/NIST/SHAVS/SHA384LongMsg.rsp", "third_party/NIST/SHAVS/SHA384Monte.rsp", "third_party/NIST/SHAVS/SHA384ShortMsg.rsp", "third_party/NIST/SHAVS/SHA512LongMsg.rsp", "third_party/NIST/SHAVS/SHA512Monte.rsp", "third_party/NIST/SHAVS/SHA512ShortMsg.rsp"] +links = "ring_core_0_17_3" +include = [ + "LICENSE", + "Cargo.toml", + "pregenerated/*", + "benches/*.rs", + "build.rs", + "crypto/chacha/asm/chacha-armv4.pl", + "crypto/chacha/asm/chacha-armv8.pl", + "crypto/chacha/asm/chacha-x86.pl", + "crypto/chacha/asm/chacha-x86_64.pl", + "crypto/cipher_extra/test/aes_128_gcm_siv_tests.txt", + "crypto/cipher_extra/test/aes_256_gcm_siv_tests.txt", + "crypto/constant_time_test.c", + "crypto/cpu_intel.c", + "crypto/crypto.c", + "crypto/curve25519/asm/x25519-asm-arm.S", + "crypto/curve25519/curve25519.c", + "crypto/curve25519/curve25519_64_adx.c", + "crypto/curve25519/curve25519_tables.h", + "crypto/curve25519/internal.h", + "crypto/fipsmodule/aes/aes_nohw.c", + "crypto/fipsmodule/aes/asm/aesni-x86.pl", + "crypto/fipsmodule/aes/asm/aesni-x86_64.pl", + "crypto/fipsmodule/aes/asm/aesv8-armx.pl", + "crypto/fipsmodule/aes/asm/bsaes-armv7.pl", + "crypto/fipsmodule/aes/asm/bsaes-x86_64.pl", + "crypto/fipsmodule/aes/asm/vsaes-armv7.pl", + "crypto/fipsmodule/aes/asm/vpaes-x86.pl", + "crypto/fipsmodule/aes/asm/vpaes-x86_64.pl", + "crypto/fipsmodule/bn/asm/armv4-mont.pl", + "crypto/fipsmodule/bn/asm/armv8-mont.pl", + "crypto/fipsmodule/bn/asm/x86-mont.pl", + "crypto/fipsmodule/bn/asm/x86_64-mont.pl", + "crypto/fipsmodule/bn/asm/x86_64-mont5.pl", + "crypto/fipsmodule/bn/internal.h", + "crypto/fipsmodule/bn/montgomery.c", + "crypto/fipsmodule/bn/montgomery_inv.c", + "crypto/fipsmodule/ec/asm/p256-armv8-asm.pl", + "crypto/fipsmodule/ec/asm/p256-x86_64-asm.pl", + "crypto/fipsmodule/ec/ecp_nistz.c", + "crypto/fipsmodule/ec/ecp_nistz.h", + "crypto/fipsmodule/ec/ecp_nistz384.h", + "crypto/fipsmodule/ec/ecp_nistz384.inl", + "crypto/fipsmodule/ec/gfp_p256.c", + "crypto/fipsmodule/ec/gfp_p384.c", + "crypto/fipsmodule/ec/p256.c", + "crypto/fipsmodule/ec/p256-nistz-table.h", + "crypto/fipsmodule/ec/p256-nistz.c", + "crypto/fipsmodule/ec/p256-nistz.h", + "crypto/fipsmodule/ec/p256_shared.h", + "crypto/fipsmodule/ec/p256_table.h", + "crypto/fipsmodule/ec/util.h", + "crypto/fipsmodule/ecdsa/ecdsa_verify_tests.txt", + "crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl", + "crypto/fipsmodule/modes/asm/ghash-armv4.pl", + "crypto/fipsmodule/modes/asm/ghash-x86.pl", + "crypto/fipsmodule/modes/asm/ghash-x86_64.pl", + "crypto/fipsmodule/modes/asm/ghashv8-armx.pl", + "crypto/fipsmodule/sha/asm/sha256-armv4.pl", + "crypto/fipsmodule/sha/asm/sha512-armv4.pl", + "crypto/fipsmodule/sha/asm/sha512-armv8.pl", + "crypto/fipsmodule/sha/asm/sha512-x86_64.pl", + "crypto/internal.h", + "crypto/limbs/limbs.c", + "crypto/limbs/limbs.h", + "crypto/limbs/limbs.inl", + "crypto/mem.c", + "crypto/perlasm/arm-xlate.pl", + "crypto/perlasm/x86asm.pl", + "crypto/perlasm/x86gas.pl", + "crypto/perlasm/x86nasm.pl", + "crypto/perlasm/x86_64-xlate.pl", + "crypto/poly1305/internal.h", + "crypto/poly1305/poly1305.c", + "crypto/poly1305/poly1305_arm.c", + "crypto/poly1305/poly1305_arm_asm.S", + "crypto/poly1305/poly1305_vec.c", + "crypto/cipher_extra/asm/chacha20_poly1305_armv8.pl", + "crypto/cipher_extra/asm/chacha20_poly1305_x86_64.pl", + "examples/**/*.rs", + "include/ring-core/aes.h", + "include/ring-core/arm_arch.h", + "include/ring-core/asm_base.h", + "include/ring-core/base.h", + "include/ring-core/check.h", + "include/ring-core/mem.h", + "include/ring-core/poly1305.h", + "include/ring-core/target.h", + "include/ring-core/type_check.h", + "src/**/*.rs", + "src/aead/poly1305_test.txt", + "src/data/alg-rsa-encryption.der", + "src/ec/curve25519/ed25519/ed25519_pkcs8_v2_template.der", + "src/ec/suite_b/ecdsa/ecPublicKey_p256_pkcs8_v1_template.der", + "src/ec/suite_b/ecdsa/ecPublicKey_p384_pkcs8_v1_template.der", + "src/rsa/signature_rsa_example_private_key.der", + "src/rsa/signature_rsa_example_public_key.der", + "tests/**/*.rs", + "tests/ecdsa_test_private_key_p256.p8", + "tests/ecdsa_test_public_key_p256.der", + "tests/ecdsa_test_public_key_p256_debug.txt", + "tests/ed25519_test_private_key.bin", + "tests/ed25519_test_private_key.p8", + "tests/ed25519_test_public_key.bin", + "tests/ed25519_test_public_key.der", + "tests/rsa_test_private_key_2048.p8", + "tests/rsa_test_public_key_2048.der", + "tests/rsa_test_public_key_2048_debug.txt", + "tests/rsa_test_public_modulus.bin", + "third_party/fiat/asm/fiat_curve25519_adx_mul.S", + "third_party/fiat/asm/fiat_curve25519_adx_square.S", + "third_party/fiat/curve25519_32.h", + "third_party/fiat/curve25519_64.h", + "third_party/fiat/curve25519_64_adx.h", + "third_party/fiat/curve25519_64_msvc.h", + "third_party/fiat/p256_32.h", + "third_party/fiat/p256_64.h", + "third_party/fiat/p256_64_msvc.h", + "third_party/fiat/LICENSE", + "third_party/NIST/SHAVS/SHA1LongMsg.rsp", + "third_party/NIST/SHAVS/SHA1Monte.rsp", + "third_party/NIST/SHAVS/SHA1ShortMsg.rsp", + "third_party/NIST/SHAVS/SHA224LongMsg.rsp", + "third_party/NIST/SHAVS/SHA224Monte.rsp", + "third_party/NIST/SHAVS/SHA224ShortMsg.rsp", + "third_party/NIST/SHAVS/SHA256LongMsg.rsp", + "third_party/NIST/SHAVS/SHA256Monte.rsp", + "third_party/NIST/SHAVS/SHA256ShortMsg.rsp", + "third_party/NIST/SHAVS/SHA384LongMsg.rsp", + "third_party/NIST/SHAVS/SHA384Monte.rsp", + "third_party/NIST/SHAVS/SHA384ShortMsg.rsp", + "third_party/NIST/SHAVS/SHA512LongMsg.rsp", + "third_party/NIST/SHAVS/SHA512Monte.rsp", + "third_party/NIST/SHAVS/SHA512ShortMsg.rsp", +] description = "Safe, fast, small crypto using Rust." -documentation = "https://briansmith.org/rustdoc/ring/" -readme = "doc/link-to-readme.md" -keywords = ["crypto", "cryptography", "rand", "ECC", "RSA"] -categories = ["cryptography", "no-std"] +readme = "README.md" +keywords = [ + "crypto", + "cryptography", + "rand", + "ECC", + "RSA", +] +categories = [ + "cryptography", + "no-std", +] license-file = "LICENSE" repository = "https://github.com/briansmith/ring" + [package.metadata.docs.rs] all-features = true + [profile.bench] opt-level = 3 lto = true codegen-units = 1 -debug = false +debug = 0 debug-assertions = false rpath = false @@ -39,54 +183,57 @@ opt-level = 3 lto = true codegen-units = 1 -debug = false +debug = 0 debug-assertions = false rpath = false [lib] name = "ring" + +[dependencies.getrandom] +version = "0.2.8" + [dependencies.untrusted] -version = "0.7.1" +version = "0.9" + [build-dependencies.cc] -version = "1.0.62" +version = "1.0.69" default-features = false [features] alloc = [] -default = ["alloc", "dev_urandom_fallback"] -dev_urandom_fallback = ["once_cell"] -internal_benches = [] +default = [ + "alloc", + "dev_urandom_fallback", +] +dev_urandom_fallback = [] slow_tests = [] std = ["alloc"] test_logging = [] -wasm32_c = [] -[target."cfg(all(target_arch = \"wasm32\", target_vendor = \"unknown\", target_os = \"unknown\", target_env = \"\"))".dependencies.web-sys] -version = "0.3.37" -features = ["Crypto", "Window"] -default-features = false -[target."cfg(any(target_arch = \"x86\",target_arch = \"x86_64\", all(any(target_arch = \"aarch64\", target_arch = \"arm\"), any(target_os = \"android\", target_os = \"fuchsia\", target_os = \"linux\"))))".dependencies.spin] -version = "0.5.2" +unstable-testing-arm-no-hw = [] +unstable-testing-arm-no-neon = [] +wasm32_unknown_unknown_js = ["getrandom/js"] + +[target."cfg(all(target_arch = \"aarch64\", target_os = \"windows\"))".dependencies.windows-sys] +version = "0.48" +features = [ + "Win32_Foundation", + "Win32_System_Threading", +] + +[target."cfg(any(target_arch = \"x86\",target_arch = \"x86_64\", all(any(target_arch = \"aarch64\", target_arch = \"arm\"), any(target_os = \"android\", target_os = \"fuchsia\", target_os = \"linux\", target_os = \"windows\"))))".dependencies.spin] +version = "0.9.2" +features = ["once"] default-features = false + [target."cfg(any(target_os = \"android\", target_os = \"linux\"))".dependencies.libc] -version = "0.2.69" +version = "0.2.100" default-features = false -[target."cfg(any(target_os = \"android\", target_os = \"linux\"))".dependencies.once_cell] -version = "1.5.2" -features = ["std"] -optional = true -default-features = false -[target."cfg(any(target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"illumos\", target_os = \"netbsd\", target_os = \"openbsd\", target_os = \"solaris\"))".dependencies.once_cell] -version = "1.5.2" -features = ["std"] -default-features = false [target."cfg(any(unix, windows))".dev-dependencies.libc] -version = "0.2.80" +version = "0.2.100" default-features = false + [target."cfg(target_arch = \"wasm32\")".dev-dependencies.wasm-bindgen-test] -version = "0.3.18" -default-features = false -[target."cfg(target_os = \"windows\")".dependencies.winapi] -version = "0.3.8" -features = ["ntsecapi", "wtypesbase"] +version = "0.3.26" default-features = false diff -Nru temporalio-1.3.0/vendor/ring/crypto/chacha/asm/chacha-armv4.pl temporalio-1.3.0/vendor/ring/crypto/chacha/asm/chacha-armv4.pl --- temporalio-1.3.0/vendor/ring/crypto/chacha/asm/chacha-armv4.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/chacha/asm/chacha-armv4.pl 2023-10-30 19:40:00.000000000 +0000 @@ -44,7 +44,7 @@ ( $xlate="${dir}../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; - open OUT,"| \"$^X\" $xlate $flavour $output"; + open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""; *STDOUT=*OUT; } else { open OUT,">$output"; @@ -171,7 +171,7 @@ } $code.=<<___; -#include +#include @ Silence ARMv8 deprecated IT instruction warnings. This file is used by both @ ARMv7 and ARMv8 processors and does not use ARMv8 instructions. @@ -197,18 +197,18 @@ .Lone: .long 1,0,0,0 #if __ARM_MAX_ARCH__>=7 -.extern GFp_armcap_P -.hidden GFp_armcap_P +.extern OPENSSL_armcap_P +.hidden OPENSSL_armcap_P .LOPENSSL_armcap: -.word GFp_armcap_P-.LChaCha20_ctr32 +.word OPENSSL_armcap_P-.LChaCha20_ctr32 #else .word -1 #endif -.globl GFp_ChaCha20_ctr32 -.type GFp_ChaCha20_ctr32,%function +.globl ChaCha20_ctr32 +.type ChaCha20_ctr32,%function .align 5 -GFp_ChaCha20_ctr32: +ChaCha20_ctr32: .LChaCha20_ctr32: ldr r12,[sp,#0] @ pull pointer to counter and nonce stmdb sp!,{r0-r2,r4-r11,lr} @@ -630,7 +630,7 @@ add sp,sp,#4*(32+3) .Lno_data: ldmia sp!,{r4-r11,pc} -.size GFp_ChaCha20_ctr32,.-GFp_ChaCha20_ctr32 +.size ChaCha20_ctr32,.-ChaCha20_ctr32 ___ {{{ @@ -1164,4 +1164,4 @@ print $_,"\n"; } -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/chacha/asm/chacha-armv8.pl temporalio-1.3.0/vendor/ring/crypto/chacha/asm/chacha-armv8.pl --- temporalio-1.3.0/vendor/ring/crypto/chacha/asm/chacha-armv8.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/chacha/asm/chacha-armv8.pl 2023-10-30 19:40:00.000000000 +0000 @@ -43,7 +43,7 @@ ( $xlate="${dir}../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; -open OUT,"| \"$^X\" $xlate $flavour $output"; +open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""; *STDOUT=*OUT; sub AUTOLOAD() # thunk [simplified] x86-style perlasm @@ -120,10 +120,10 @@ } $code.=<<___; -#include +#include -.extern GFp_armcap_P -.hidden GFp_armcap_P +.extern OPENSSL_armcap_P +.hidden OPENSSL_armcap_P .section .rodata @@ -136,20 +136,20 @@ .text -.globl GFp_ChaCha20_ctr32 -.type GFp_ChaCha20_ctr32,%function +.globl ChaCha20_ctr32 +.type ChaCha20_ctr32,%function .align 5 -GFp_ChaCha20_ctr32: +ChaCha20_ctr32: AARCH64_VALID_CALL_TARGET cbz $len,.Labort -#if __has_feature(hwaddress_sanitizer) && __clang_major__ >= 10 - adrp @x[0],:pg_hi21_nc:GFp_armcap_P +#if defined(OPENSSL_HWASAN) && __clang_major__ >= 10 + adrp @x[0],:pg_hi21_nc:OPENSSL_armcap_P #else - adrp @x[0],:pg_hi21:GFp_armcap_P + adrp @x[0],:pg_hi21:OPENSSL_armcap_P #endif cmp $len,#192 b.lo .Lshort - ldr w17,[@x[0],:lo12:GFp_armcap_P] + ldr w17,[@x[0],:lo12:OPENSSL_armcap_P] tst w17,#ARMV7_NEON b.ne ChaCha20_neon @@ -171,7 +171,7 @@ ldp @d[2],@d[3],[$key] // load key ldp @d[4],@d[5],[$key,#16] ldp @d[6],@d[7],[$ctr] // load counter -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ ror @d[2],@d[2],#32 ror @d[3],@d[3],#32 ror @d[4],@d[4],#32 @@ -240,7 +240,7 @@ add @x[14],@x[14],@x[15],lsl#32 ldp @x[13],@x[15],[$inp,#48] add $inp,$inp,#64 -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev @x[0],@x[0] rev @x[2],@x[2] rev @x[4],@x[4] @@ -297,7 +297,7 @@ add @x[10],@x[10],@x[11],lsl#32 add @x[12],@x[12],@x[13],lsl#32 add @x[14],@x[14],@x[15],lsl#32 -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev @x[0],@x[0] rev @x[2],@x[2] rev @x[4],@x[4] @@ -334,7 +334,7 @@ ldp x29,x30,[sp],#96 AARCH64_VALIDATE_LINK_REGISTER ret -.size GFp_ChaCha20_ctr32,.-GFp_ChaCha20_ctr32 +.size ChaCha20_ctr32,.-ChaCha20_ctr32 ___ {{{ @@ -402,7 +402,7 @@ ldp @d[6],@d[7],[$ctr] // load counter ld1 {@K[3]},[$ctr] ld1 {$ONE},[@x[0]] -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev64 @K[0],@K[0] ror @d[2],@d[2],#32 ror @d[3],@d[3],#32 @@ -519,7 +519,7 @@ add @x[14],@x[14],@x[15],lsl#32 ldp @x[13],@x[15],[$inp,#48] add $inp,$inp,#64 -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev @x[0],@x[0] rev @x[2],@x[2] rev @x[4],@x[4] @@ -599,7 +599,7 @@ add @x[14],@x[14],@x[15],lsl#32 ldp @x[13],@x[15],[$inp,#48] add $inp,$inp,#64 -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev @x[0],@x[0] rev @x[2],@x[2] rev @x[4],@x[4] @@ -724,7 +724,7 @@ ldp @d[6],@d[7],[$ctr] // load counter ld1 {@K[3]},[$ctr] ld1 {$ONE},[@x[0]] -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev64 @K[0],@K[0] ror @d[2],@d[2],#32 ror @d[3],@d[3],#32 @@ -866,7 +866,7 @@ add @x[14],@x[14],@x[15],lsl#32 ldp @x[13],@x[15],[$inp,#48] add $inp,$inp,#64 -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev @x[0],@x[0] rev @x[2],@x[2] rev @x[4],@x[4] @@ -1007,7 +1007,7 @@ add $inp,$inp,#64 add $B5,$B5,@K[1] -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev @x[0],@x[0] rev @x[2],@x[2] rev @x[4],@x[4] @@ -1141,4 +1141,4 @@ print $_,"\n"; } -close STDOUT or die "error closing STDOUT"; # flush +close STDOUT or die "error closing STDOUT: $!"; # flush diff -Nru temporalio-1.3.0/vendor/ring/crypto/chacha/asm/chacha-x86_64.pl temporalio-1.3.0/vendor/ring/crypto/chacha/asm/chacha-x86_64.pl --- temporalio-1.3.0/vendor/ring/crypto/chacha/asm/chacha-x86_64.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/chacha/asm/chacha-x86_64.pl 2023-10-30 19:40:00.000000000 +0000 @@ -67,7 +67,7 @@ $avx = 2; -open OUT,"| \"$^X\" $xlate $flavour $output"; +open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""; *STDOUT=*OUT; # input parameter block @@ -76,8 +76,9 @@ $code.=<<___; .text -.extern GFp_ia32cap_P +.extern OPENSSL_ia32cap_P +.section .rodata .align 64 .Lzero: .long 0,0,0,0 @@ -107,6 +108,7 @@ .Lsixteen: .long 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16 .asciz "ChaCha20 for x86_64, CRYPTOGAMS by " +.text ___ sub AUTOLOAD() # thunk [simplified] 32-bit style perlasm @@ -224,14 +226,15 @@ ######################################################################## # Generic code path that handles all lengths on pre-SSSE3 processors. $code.=<<___; -.globl GFp_ChaCha20_ctr32 -.type GFp_ChaCha20_ctr32,\@function,5 +.globl ChaCha20_ctr32 +.type ChaCha20_ctr32,\@function,5 .align 64 -GFp_ChaCha20_ctr32: +ChaCha20_ctr32: .cfi_startproc + _CET_ENDBR cmp \$0,$len je .Lno_data - mov GFp_ia32cap_P+4(%rip),%r10 + mov OPENSSL_ia32cap_P+4(%rip),%r10 ___ $code.=<<___; test \$`1<<(41-32)`,%r10d @@ -408,7 +411,7 @@ .Lno_data: ret .cfi_endproc -.size GFp_ChaCha20_ctr32,.-GFp_ChaCha20_ctr32 +.size ChaCha20_ctr32,.-ChaCha20_ctr32 ___ ######################################################################## @@ -713,7 +716,7 @@ mov %r10,%r11 ___ $code.=<<___ if ($avx>1); - shr \$32,%r10 # GFp_ia32cap_P+8 + shr \$32,%r10 # OPENSSL_ia32cap_P+8 test \$`1<<5`,%r10 # test AVX2 jnz .LChaCha20_8x ___ @@ -1982,9 +1985,9 @@ .section .pdata .align 4 - .rva .LSEH_begin_GFp_ChaCha20_ctr32 - .rva .LSEH_end_GFp_ChaCha20_ctr32 - .rva .LSEH_info_GFp_ChaCha20_ctr32 + .rva .LSEH_begin_ChaCha20_ctr32 + .rva .LSEH_end_ChaCha20_ctr32 + .rva .LSEH_info_ChaCha20_ctr32 .rva .LSEH_begin_ChaCha20_ssse3 .rva .LSEH_end_ChaCha20_ssse3 @@ -2002,7 +2005,7 @@ $code.=<<___; .section .xdata .align 8 -.LSEH_info_GFp_ChaCha20_ctr32: +.LSEH_info_ChaCha20_ctr32: .byte 9,0,0,0 .rva se_handler @@ -2032,4 +2035,4 @@ print $_,"\n"; } -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/chacha/asm/chacha-x86.pl temporalio-1.3.0/vendor/ring/crypto/chacha/asm/chacha-x86.pl --- temporalio-1.3.0/vendor/ring/crypto/chacha/asm/chacha-x86.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/chacha/asm/chacha-x86.pl 2023-10-30 19:40:00.000000000 +0000 @@ -118,7 +118,7 @@ &static_label("ssse3_data"); &static_label("pic_point"); -&function_begin("GFp_ChaCha20_ctr32"); +&function_begin("ChaCha20_ctr32"); &xor ("eax","eax"); &cmp ("eax",&wparam(2)); # len==0? &je (&label("no_data")); @@ -126,7 +126,7 @@ &call (&label("pic_point")); &set_label("pic_point"); &blindpop("eax"); - &picmeup("ebp","GFp_ia32cap_P","eax",&label("pic_point")); + &picmeup("ebp","OPENSSL_ia32cap_P","eax",&label("pic_point")); &test (&DWP(0,"ebp"),1<<24); # test FXSR bit &jz (&label("x86")); &test (&DWP(4,"ebp"),1<<9); # test SSSE3 bit @@ -356,7 +356,7 @@ &set_label("done"); &stack_pop(33); &set_label("no_data"); -&function_end("GFp_ChaCha20_ctr32"); +&function_end("ChaCha20_ctr32"); if ($xmm) { my ($xa,$xa_,$xb,$xb_,$xc,$xc_,$xd,$xd_)=map("xmm$_",(0..7)); @@ -769,4 +769,4 @@ &asm_finish(); -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/cipher_extra/asm/chacha20_poly1305_armv8.pl temporalio-1.3.0/vendor/ring/crypto/cipher_extra/asm/chacha20_poly1305_armv8.pl --- temporalio-1.3.0/vendor/ring/crypto/cipher_extra/asm/chacha20_poly1305_armv8.pl 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/cipher_extra/asm/chacha20_poly1305_armv8.pl 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1644 @@ +#!/usr/bin/env perl + +# Copyright (c) 2020, CloudFlare Ltd. +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ + +############################################################################## +# # +# Author: Vlad Krasnov # +# # +############################################################################## + +$flavour = shift; +while (($output=shift) && ($output!~/\w[\w\-]*\.\w+$/)) {} + +$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; +( $xlate="${dir}arm-xlate.pl" and -f $xlate ) or +( $xlate="${dir}../../perlasm/arm-xlate.pl" and -f $xlate) or +die "can't locate arm-xlate.pl"; + +open OUT,"| \"$^X\" $xlate $flavour $output"; +*STDOUT=*OUT; + +my ($oup,$inp,$inl,$adp,$adl,$keyp,$itr1,$itr2) = ("x0","x1","x2","x3","x4","x5","x6","x7"); +my ($acc0,$acc1,$acc2) = map("x$_",(8..10)); +my ($t0,$t1,$t2,$t3) = map("x$_",(11..14)); +my ($one, $r0, $r1) = ("x15","x16","x17"); +my ($t0w) = $t0 =~ s/x/w/r; + +my ($A0,$A1,$A2,$A3,$A4,$B0,$B1,$B2,$B3,$B4,$C0,$C1,$C2,$C3,$C4,$D0,$D1,$D2,$D3,$D4) = map("v$_",(0..19)); +my ($T0,$T1,$T2,$T3) = map("v$_",(20..23)); + +my $CONSTS = "v24"; +my $INC = "v25"; +my $ROL8 = "v26"; +my $CLAMP = "v27"; + +my ($B_STORE, $C_STORE, $D_STORE) = map("v$_",(28..30)); + +my $S_STORE = $CLAMP; +my $LEN_STORE = "v31"; + +sub chacha_qr { +my ($a,$b,$c,$d,$t,$dir)=@_; +my ($shift_b,$shift_d) = $dir =~ /left/ ? ("#4","#12") : ("#12","#4"); +$code.=<<___; + add $a.4s, $a.4s, $b.4s + eor $d.16b, $d.16b, $a.16b + rev32 $d.8h, $d.8h + + add $c.4s, $c.4s, $d.4s + eor $b.16b, $b.16b, $c.16b + ushr $t.4s, $b.4s, #20 + sli $t.4s, $b.4s, #12 +___ + ($t,$b) = ($b,$t); +$code.=<<___; + add $a.4s, $a.4s, $b.4s + eor $d.16b, $d.16b, $a.16b + tbl $d.16b, {$d.16b}, $ROL8.16b + + add $c.4s, $c.4s, $d.4s + eor $b.16b, $b.16b, $c.16b + ushr $t.4s, $b.4s, #25 + sli $t.4s, $b.4s, #7 +___ + ($t,$b) = ($b,$t); +$code.=<<___; + ext $b.16b, $b.16b, $b.16b, $shift_b + ext $c.16b, $c.16b, $c.16b, #8 + ext $d.16b, $d.16b, $d.16b, $shift_d +___ +} + +sub poly_add { +my ($src)=@_; +$code.="ldp $t0, $t1, [$src], 16 + adds $acc0, $acc0, $t0 + adcs $acc1, $acc1, $t1 + adc $acc2, $acc2, $one\n"; +} + +sub poly_add_vec { +my ($src)=@_; +$code.="mov $t0, $src.d[0] + mov $t1, $src.d[1] + adds $acc0, $acc0, $t0 + adcs $acc1, $acc1, $t1 + adc $acc2, $acc2, $one\n"; +} + +sub poly_stage1 { +$code.="mul $t0, $acc0, $r0 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh $t1, $acc0, $r0 + mul $t2, $acc1, $r0 + umulh $t3, $acc1, $r0 + adds $t1, $t1, $t2 + mul $t2, $acc2, $r0 + adc $t2, $t2, $t3\n"; +} + +sub poly_stage2 { +$code.="mul $t3, $acc0, $r1 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh $acc0, $acc0, $r1 + adds $t1, $t1, $t3 + mul $t3, $acc1, $r1 + umulh $acc1, $acc1, $r1 + adcs $t3, $t3, $acc0 + mul $acc2, $acc2, $r1 + adc $acc2, $acc2, $acc1 + adds $t2, $t2, $t3 + adc $t3, $acc2, xzr\n"; +} + +# At the beginning of the reduce stage t = [t3:t2:t1:t0] is a product of +# r = [r1:r0] and acc = [acc2:acc1:acc0] +# r is 124 bits at most (due to clamping) and acc is 131 bits at most +# (acc2 is at most 4 before the addition and can be at most 6 when we add in +# the next block) therefore t is at most 255 bits big, and t3 is 63 bits. +sub poly_reduce_stage { +$code.="and $acc2, $t2, #3 // At this point acc2 is 2 bits at most (value of 3) + and $acc0, $t2, #-4 + extr $t2, $t3, $t2, #2 + adds $acc0, $acc0, $t0 + lsr $t0, $t3, #2 + adc $acc1, $t3, $t0 // No carry out since t0 is 61 bits and t3 is 63 bits + adds $acc0, $acc0, $t2 + adcs $acc1, $acc1, $t1 + adc $acc2, $acc2, xzr // At this point acc2 has the value of 4 at most \n"; +} + +sub poly_mul { + &poly_stage1(); + &poly_stage2(); + &poly_reduce_stage(); +} + +sub chacha_qr_x3 { +my ($dir)=@_; +my ($shift_b,$shift_d) = $dir =~ /left/ ? ("#4","#12") : ("#12","#4"); +$code.=<<___; + add $A0.4s, $A0.4s, $B0.4s + add $A1.4s, $A1.4s, $B1.4s + add $A2.4s, $A2.4s, $B2.4s + eor $D0.16b, $D0.16b, $A0.16b + eor $D1.16b, $D1.16b, $A1.16b + eor $D2.16b, $D2.16b, $A2.16b + rev32 $D0.8h, $D0.8h + rev32 $D1.8h, $D1.8h + rev32 $D2.8h, $D2.8h + + add $C0.4s, $C0.4s, $D0.4s + add $C1.4s, $C1.4s, $D1.4s + add $C2.4s, $C2.4s, $D2.4s + eor $B0.16b, $B0.16b, $C0.16b + eor $B1.16b, $B1.16b, $C1.16b + eor $B2.16b, $B2.16b, $C2.16b + ushr $T0.4s, $B0.4s, #20 + sli $T0.4s, $B0.4s, #12 + ushr $B0.4s, $B1.4s, #20 + sli $B0.4s, $B1.4s, #12 + ushr $B1.4s, $B2.4s, #20 + sli $B1.4s, $B2.4s, #12 + + add $A0.4s, $A0.4s, $T0.4s + add $A1.4s, $A1.4s, $B0.4s + add $A2.4s, $A2.4s, $B1.4s + eor $D0.16b, $D0.16b, $A0.16b + eor $D1.16b, $D1.16b, $A1.16b + eor $D2.16b, $D2.16b, $A2.16b + tbl $D0.16b, {$D0.16b}, $ROL8.16b + tbl $D1.16b, {$D1.16b}, $ROL8.16b + tbl $D2.16b, {$D2.16b}, $ROL8.16b + + add $C0.4s, $C0.4s, $D0.4s + add $C1.4s, $C1.4s, $D1.4s + add $C2.4s, $C2.4s, $D2.4s + eor $T0.16b, $T0.16b, $C0.16b + eor $B0.16b, $B0.16b, $C1.16b + eor $B1.16b, $B1.16b, $C2.16b + ushr $B2.4s, $B1.4s, #25 + sli $B2.4s, $B1.4s, #7 + ushr $B1.4s, $B0.4s, #25 + sli $B1.4s, $B0.4s, #7 + ushr $B0.4s, $T0.4s, #25 + sli $B0.4s, $T0.4s, #7 + + ext $B0.16b, $B0.16b, $B0.16b, $shift_b + ext $B1.16b, $B1.16b, $B1.16b, $shift_b + ext $B2.16b, $B2.16b, $B2.16b, $shift_b + + ext $C0.16b, $C0.16b, $C0.16b, #8 + ext $C1.16b, $C1.16b, $C1.16b, #8 + ext $C2.16b, $C2.16b, $C2.16b, #8 + + ext $D0.16b, $D0.16b, $D0.16b, $shift_d + ext $D1.16b, $D1.16b, $D1.16b, $shift_d + ext $D2.16b, $D2.16b, $D2.16b, $shift_d +___ +} + +# When preparing 5 ChaCha20 blocks in parallel, we operate on 4 blocks vertically as introduced by Andrew Moon +# the fifth block is done horizontally +sub chacha_qr_x5 { +my ($dir)=@_; +my ($a0,$a1,$a2,$a3) = $dir =~ /left/ ? ($A0,$A1,$A2,$A3) : ($A0,$A1,$A2,$A3); +my ($b0,$b1,$b2,$b3) = $dir =~ /left/ ? ($B0,$B1,$B2,$B3) : ($B1,$B2,$B3,$B0); +my ($c0,$c1,$c2,$c3) = $dir =~ /left/ ? ($C0,$C1,$C2,$C3) : ($C2,$C3,$C0,$C1); +my ($d0,$d1,$d2,$d3) = $dir =~ /left/ ? ($D0,$D1,$D2,$D3) : ($D3,$D0,$D1,$D2); +my ($shift_b,$shift_d) = $dir =~ /left/ ? ("#4","#12") : ("#12","#4"); +$code.=<<___; + add $a0.4s, $a0.4s, $b0.4s + add $a1.4s, $a1.4s, $b1.4s + add $a2.4s, $a2.4s, $b2.4s + add $a3.4s, $a3.4s, $b3.4s + add $A4.4s, $A4.4s, $B4.4s + + eor $d0.16b, $d0.16b, $a0.16b + eor $d1.16b, $d1.16b, $a1.16b + eor $d2.16b, $d2.16b, $a2.16b + eor $d3.16b, $d3.16b, $a3.16b + eor $D4.16b, $D4.16b, $A4.16b + + rev32 $d0.8h, $d0.8h + rev32 $d1.8h, $d1.8h + rev32 $d2.8h, $d2.8h + rev32 $d3.8h, $d3.8h + rev32 $D4.8h, $D4.8h + + add $c0.4s, $c0.4s, $d0.4s + add $c1.4s, $c1.4s, $d1.4s + add $c2.4s, $c2.4s, $d2.4s + add $c3.4s, $c3.4s, $d3.4s + add $C4.4s, $C4.4s, $D4.4s + + eor $b0.16b, $b0.16b, $c0.16b + eor $b1.16b, $b1.16b, $c1.16b + eor $b2.16b, $b2.16b, $c2.16b + eor $b3.16b, $b3.16b, $c3.16b + eor $B4.16b, $B4.16b, $C4.16b + + ushr $T0.4s, $b0.4s, #20 + sli $T0.4s, $b0.4s, #12 + ushr $b0.4s, $b1.4s, #20 + sli $b0.4s, $b1.4s, #12 + ushr $b1.4s, $b2.4s, #20 + sli $b1.4s, $b2.4s, #12 + ushr $b2.4s, $b3.4s, #20 + sli $b2.4s, $b3.4s, #12 + ushr $b3.4s, $B4.4s, #20 + sli $b3.4s, $B4.4s, #12 + + add $a0.4s, $a0.4s, $T0.4s + add $a1.4s, $a1.4s, $b0.4s + add $a2.4s, $a2.4s, $b1.4s + add $a3.4s, $a3.4s, $b2.4s + add $A4.4s, $A4.4s, $b3.4s + + eor $d0.16b, $d0.16b, $a0.16b + eor $d1.16b, $d1.16b, $a1.16b + eor $d2.16b, $d2.16b, $a2.16b + eor $d3.16b, $d3.16b, $a3.16b + eor $D4.16b, $D4.16b, $A4.16b + + tbl $d0.16b, {$d0.16b}, $ROL8.16b + tbl $d1.16b, {$d1.16b}, $ROL8.16b + tbl $d2.16b, {$d2.16b}, $ROL8.16b + tbl $d3.16b, {$d3.16b}, $ROL8.16b + tbl $D4.16b, {$D4.16b}, $ROL8.16b + + add $c0.4s, $c0.4s, $d0.4s + add $c1.4s, $c1.4s, $d1.4s + add $c2.4s, $c2.4s, $d2.4s + add $c3.4s, $c3.4s, $d3.4s + add $C4.4s, $C4.4s, $D4.4s + + eor $T0.16b, $T0.16b, $c0.16b + eor $b0.16b, $b0.16b, $c1.16b + eor $b1.16b, $b1.16b, $c2.16b + eor $b2.16b, $b2.16b, $c3.16b + eor $b3.16b, $b3.16b, $C4.16b + + ushr $B4.4s, $b3.4s, #25 + sli $B4.4s, $b3.4s, #7 + ushr $b3.4s, $b2.4s, #25 + sli $b3.4s, $b2.4s, #7 + ushr $b2.4s, $b1.4s, #25 + sli $b2.4s, $b1.4s, #7 + ushr $b1.4s, $b0.4s, #25 + sli $b1.4s, $b0.4s, #7 + ushr $b0.4s, $T0.4s, #25 + sli $b0.4s, $T0.4s, #7 + + ext $B4.16b, $B4.16b, $B4.16b, $shift_b + ext $C4.16b, $C4.16b, $C4.16b, #8 + ext $D4.16b, $D4.16b, $D4.16b, $shift_d +___ +} + +{ +$code.=<<___; +#include +.section .rodata + +.align 7 +.Lchacha20_consts: +.byte 'e','x','p','a','n','d',' ','3','2','-','b','y','t','e',' ','k' +.Linc: +.long 1,2,3,4 +.Lrol8: +.byte 3,0,1,2, 7,4,5,6, 11,8,9,10, 15,12,13,14 +.Lclamp: +.quad 0x0FFFFFFC0FFFFFFF, 0x0FFFFFFC0FFFFFFC + +.text + +.type .Lpoly_hash_ad_internal,%function +.align 6 +.Lpoly_hash_ad_internal: + .cfi_startproc + cbnz $adl, .Lpoly_hash_intro + ret + +.Lpoly_hash_intro: + cmp $adl, #16 + b.lt .Lpoly_hash_ad_tail +___ + &poly_add($adp); + &poly_mul(); +$code.=<<___; + sub $adl, $adl, #16 + b .Lpoly_hash_ad_internal + +.Lpoly_hash_ad_tail: + cbz $adl, .Lpoly_hash_ad_ret + + eor $T0.16b, $T0.16b, $T0.16b // Use T0 to load the AAD + sub $adl, $adl, #1 + +.Lpoly_hash_tail_16_compose: + ext $T0.16b, $T0.16b, $T0.16b, #15 + ldrb $t0w, [$adp, $adl] + mov $T0.b[0], $t0w + subs $adl, $adl, #1 + b.ge .Lpoly_hash_tail_16_compose +___ + &poly_add_vec($T0); + &poly_mul(); +$code.=<<___; + +.Lpoly_hash_ad_ret: + ret + .cfi_endproc +.size .Lpoly_hash_ad_internal, .-.Lpoly_hash_ad_internal + +///////////////////////////////// +// +// void chacha20_poly1305_seal(uint8_t *pt, uint8_t *ct, size_t len_in, uint8_t *ad, size_t len_ad, union open_data *seal_data); +// +.globl chacha20_poly1305_seal +.type chacha20_poly1305_seal,%function +.align 6 +chacha20_poly1305_seal: + AARCH64_SIGN_LINK_REGISTER +.cfi_startproc + stp x29, x30, [sp, #-80]! +.cfi_def_cfa_offset 80 +.cfi_offset w30, -72 +.cfi_offset w29, -80 + mov x29, sp + // We probably could do .cfi_def_cfa w29, 80 at this point, but since + // we don't actually use the frame pointer like that, it's probably not + // worth bothering. + stp d8, d9, [sp, #16] + stp d10, d11, [sp, #32] + stp d12, d13, [sp, #48] + stp d14, d15, [sp, #64] +.cfi_offset b15, -8 +.cfi_offset b14, -16 +.cfi_offset b13, -24 +.cfi_offset b12, -32 +.cfi_offset b11, -40 +.cfi_offset b10, -48 +.cfi_offset b9, -56 +.cfi_offset b8, -64 + + adrp $t0, :pg_hi21:.Lchacha20_consts + add $t0, $t0, :lo12:.Lchacha20_consts + + ld1 {$CONSTS.16b - $CLAMP.16b}, [$t0] // Load the CONSTS, INC, ROL8 and CLAMP values + ld1 {$B_STORE.16b - $D_STORE.16b}, [$keyp] + + mov $one, #1 // Prepare the Poly1305 state + mov $acc0, #0 + mov $acc1, #0 + mov $acc2, #0 + + ldr $t1, [$keyp, #56] // The total cipher text length includes extra_in_len + add $t1, $t1, $inl + mov $LEN_STORE.d[0], $adl // Store the input and aad lengths + mov $LEN_STORE.d[1], $t1 + + cmp $inl, #128 + b.le .Lseal_128 // Optimization for smaller buffers + + // Initially we prepare 5 ChaCha20 blocks. Four to encrypt up to 4 blocks (256 bytes) of plaintext, + // and one for the Poly1305 R and S keys. The first four blocks (A0-A3..D0-D3) are computed vertically, + // the fifth block (A4-D4) horizontally. + ld4r {$A0.4s-$A3.4s}, [$t0] + mov $A4.16b, $CONSTS.16b + + ld4r {$B0.4s-$B3.4s}, [$keyp], #16 + mov $B4.16b, $B_STORE.16b + + ld4r {$C0.4s-$C3.4s}, [$keyp], #16 + mov $C4.16b, $C_STORE.16b + + ld4r {$D0.4s-$D3.4s}, [$keyp] + add $D0.4s, $D0.4s, $INC.4s + mov $D4.16b, $D_STORE.16b + + sub $keyp, $keyp, #32 + + mov $itr1, #10 + +.align 5 +.Lseal_init_rounds: +___ + &chacha_qr_x5("left"); + &chacha_qr_x5("right"); +$code.=<<___; + subs $itr1, $itr1, #1 + b.hi .Lseal_init_rounds + + add $D0.4s, $D0.4s, $INC.4s + mov $t0, #4 + dup $T0.4s, $t0w + add $INC.4s, $INC.4s, $T0.4s + + zip1 $T0.4s, $A0.4s, $A1.4s + zip2 $T1.4s, $A0.4s, $A1.4s + zip1 $T2.4s, $A2.4s, $A3.4s + zip2 $T3.4s, $A2.4s, $A3.4s + + zip1 $A0.2d, $T0.2d, $T2.2d + zip2 $A1.2d, $T0.2d, $T2.2d + zip1 $A2.2d, $T1.2d, $T3.2d + zip2 $A3.2d, $T1.2d, $T3.2d + + zip1 $T0.4s, $B0.4s, $B1.4s + zip2 $T1.4s, $B0.4s, $B1.4s + zip1 $T2.4s, $B2.4s, $B3.4s + zip2 $T3.4s, $B2.4s, $B3.4s + + zip1 $B0.2d, $T0.2d, $T2.2d + zip2 $B1.2d, $T0.2d, $T2.2d + zip1 $B2.2d, $T1.2d, $T3.2d + zip2 $B3.2d, $T1.2d, $T3.2d + + zip1 $T0.4s, $C0.4s, $C1.4s + zip2 $T1.4s, $C0.4s, $C1.4s + zip1 $T2.4s, $C2.4s, $C3.4s + zip2 $T3.4s, $C2.4s, $C3.4s + + zip1 $C0.2d, $T0.2d, $T2.2d + zip2 $C1.2d, $T0.2d, $T2.2d + zip1 $C2.2d, $T1.2d, $T3.2d + zip2 $C3.2d, $T1.2d, $T3.2d + + zip1 $T0.4s, $D0.4s, $D1.4s + zip2 $T1.4s, $D0.4s, $D1.4s + zip1 $T2.4s, $D2.4s, $D3.4s + zip2 $T3.4s, $D2.4s, $D3.4s + + zip1 $D0.2d, $T0.2d, $T2.2d + zip2 $D1.2d, $T0.2d, $T2.2d + zip1 $D2.2d, $T1.2d, $T3.2d + zip2 $D3.2d, $T1.2d, $T3.2d + + add $A4.4s, $A4.4s, $CONSTS.4s + add $B4.4s, $B4.4s, $B_STORE.4s + and $A4.16b, $A4.16b, $CLAMP.16b + + add $A0.4s, $A0.4s, $CONSTS.4s + add $B0.4s, $B0.4s, $B_STORE.4s + add $C0.4s, $C0.4s, $C_STORE.4s + add $D0.4s, $D0.4s, $D_STORE.4s + + add $A1.4s, $A1.4s, $CONSTS.4s + add $B1.4s, $B1.4s, $B_STORE.4s + add $C1.4s, $C1.4s, $C_STORE.4s + add $D1.4s, $D1.4s, $D_STORE.4s + + add $A2.4s, $A2.4s, $CONSTS.4s + add $B2.4s, $B2.4s, $B_STORE.4s + add $C2.4s, $C2.4s, $C_STORE.4s + add $D2.4s, $D2.4s, $D_STORE.4s + + add $A3.4s, $A3.4s, $CONSTS.4s + add $B3.4s, $B3.4s, $B_STORE.4s + add $C3.4s, $C3.4s, $C_STORE.4s + add $D3.4s, $D3.4s, $D_STORE.4s + + mov $r0, $A4.d[0] // Move the R key to GPRs + mov $r1, $A4.d[1] + mov $S_STORE.16b, $B4.16b // Store the S key + + bl .Lpoly_hash_ad_internal + + mov $adp, $oup + cmp $inl, #256 + b.le .Lseal_tail + + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + eor $T0.16b, $T0.16b, $A0.16b + eor $T1.16b, $T1.16b, $B0.16b + eor $T2.16b, $T2.16b, $C0.16b + eor $T3.16b, $T3.16b, $D0.16b + st1 {$T0.16b - $T3.16b}, [$oup], #64 + + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + eor $T0.16b, $T0.16b, $A1.16b + eor $T1.16b, $T1.16b, $B1.16b + eor $T2.16b, $T2.16b, $C1.16b + eor $T3.16b, $T3.16b, $D1.16b + st1 {$T0.16b - $T3.16b}, [$oup], #64 + + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + eor $T0.16b, $T0.16b, $A2.16b + eor $T1.16b, $T1.16b, $B2.16b + eor $T2.16b, $T2.16b, $C2.16b + eor $T3.16b, $T3.16b, $D2.16b + st1 {$T0.16b - $T3.16b}, [$oup], #64 + + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + eor $T0.16b, $T0.16b, $A3.16b + eor $T1.16b, $T1.16b, $B3.16b + eor $T2.16b, $T2.16b, $C3.16b + eor $T3.16b, $T3.16b, $D3.16b + st1 {$T0.16b - $T3.16b}, [$oup], #64 + + sub $inl, $inl, #256 + + mov $itr1, #4 // In the first run of the loop we need to hash 256 bytes, therefore we hash one block for the first 4 rounds + mov $itr2, #6 // and two blocks for the remaining 6, for a total of (1 * 4 + 2 * 6) * 16 = 256 + +.Lseal_main_loop: + adrp $t0, :pg_hi21:.Lchacha20_consts + add $t0, $t0, :lo12:.Lchacha20_consts + + ld4r {$A0.4s-$A3.4s}, [$t0] + mov $A4.16b, $CONSTS.16b + + ld4r {$B0.4s-$B3.4s}, [$keyp], #16 + mov $B4.16b, $B_STORE.16b + + ld4r {$C0.4s-$C3.4s}, [$keyp], #16 + mov $C4.16b, $C_STORE.16b + + ld4r {$D0.4s-$D3.4s}, [$keyp] + add $D0.4s, $D0.4s, $INC.4s + mov $D4.16b, $D_STORE.16b + + eor $T0.16b, $T0.16b, $T0.16b //zero + not $T1.16b, $T0.16b // -1 + sub $T1.4s, $INC.4s, $T1.4s // Add +1 + ext $T0.16b, $T1.16b, $T0.16b, #12 // Get the last element (counter) + add $D4.4s, $D4.4s, $T0.4s + + sub $keyp, $keyp, #32 +.align 5 +.Lseal_main_loop_rounds: +___ + &chacha_qr_x5("left"); + &poly_add($adp); + &poly_mul(); + &chacha_qr_x5("right"); +$code.=<<___; + subs $itr1, $itr1, #1 + b.ge .Lseal_main_loop_rounds +___ + &poly_add($adp); + &poly_mul(); +$code.=<<___; + subs $itr2, $itr2, #1 + b.gt .Lseal_main_loop_rounds + + eor $T0.16b, $T0.16b, $T0.16b //zero + not $T1.16b, $T0.16b // -1 + sub $T1.4s, $INC.4s, $T1.4s // Add +1 + ext $T0.16b, $T1.16b, $T0.16b, #12 // Get the last element (counter) + add $D4.4s, $D4.4s, $T0.4s + + add $D0.4s, $D0.4s, $INC.4s + mov $t0, #5 + dup $T0.4s, $t0w + add $INC.4s, $INC.4s, $T0.4s + + zip1 $T0.4s, $A0.4s, $A1.4s + zip2 $T1.4s, $A0.4s, $A1.4s + zip1 $T2.4s, $A2.4s, $A3.4s + zip2 $T3.4s, $A2.4s, $A3.4s + + zip1 $A0.2d, $T0.2d, $T2.2d + zip2 $A1.2d, $T0.2d, $T2.2d + zip1 $A2.2d, $T1.2d, $T3.2d + zip2 $A3.2d, $T1.2d, $T3.2d + + zip1 $T0.4s, $B0.4s, $B1.4s + zip2 $T1.4s, $B0.4s, $B1.4s + zip1 $T2.4s, $B2.4s, $B3.4s + zip2 $T3.4s, $B2.4s, $B3.4s + + zip1 $B0.2d, $T0.2d, $T2.2d + zip2 $B1.2d, $T0.2d, $T2.2d + zip1 $B2.2d, $T1.2d, $T3.2d + zip2 $B3.2d, $T1.2d, $T3.2d + + zip1 $T0.4s, $C0.4s, $C1.4s + zip2 $T1.4s, $C0.4s, $C1.4s + zip1 $T2.4s, $C2.4s, $C3.4s + zip2 $T3.4s, $C2.4s, $C3.4s + + zip1 $C0.2d, $T0.2d, $T2.2d + zip2 $C1.2d, $T0.2d, $T2.2d + zip1 $C2.2d, $T1.2d, $T3.2d + zip2 $C3.2d, $T1.2d, $T3.2d + + zip1 $T0.4s, $D0.4s, $D1.4s + zip2 $T1.4s, $D0.4s, $D1.4s + zip1 $T2.4s, $D2.4s, $D3.4s + zip2 $T3.4s, $D2.4s, $D3.4s + + zip1 $D0.2d, $T0.2d, $T2.2d + zip2 $D1.2d, $T0.2d, $T2.2d + zip1 $D2.2d, $T1.2d, $T3.2d + zip2 $D3.2d, $T1.2d, $T3.2d + + add $A0.4s, $A0.4s, $CONSTS.4s + add $B0.4s, $B0.4s, $B_STORE.4s + add $C0.4s, $C0.4s, $C_STORE.4s + add $D0.4s, $D0.4s, $D_STORE.4s + + add $A1.4s, $A1.4s, $CONSTS.4s + add $B1.4s, $B1.4s, $B_STORE.4s + add $C1.4s, $C1.4s, $C_STORE.4s + add $D1.4s, $D1.4s, $D_STORE.4s + + add $A2.4s, $A2.4s, $CONSTS.4s + add $B2.4s, $B2.4s, $B_STORE.4s + add $C2.4s, $C2.4s, $C_STORE.4s + add $D2.4s, $D2.4s, $D_STORE.4s + + add $A3.4s, $A3.4s, $CONSTS.4s + add $B3.4s, $B3.4s, $B_STORE.4s + add $C3.4s, $C3.4s, $C_STORE.4s + add $D3.4s, $D3.4s, $D_STORE.4s + + add $A4.4s, $A4.4s, $CONSTS.4s + add $B4.4s, $B4.4s, $B_STORE.4s + add $C4.4s, $C4.4s, $C_STORE.4s + add $D4.4s, $D4.4s, $D_STORE.4s + + cmp $inl, #320 + b.le .Lseal_tail + + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + eor $T0.16b, $T0.16b, $A0.16b + eor $T1.16b, $T1.16b, $B0.16b + eor $T2.16b, $T2.16b, $C0.16b + eor $T3.16b, $T3.16b, $D0.16b + st1 {$T0.16b - $T3.16b}, [$oup], #64 + + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + eor $T0.16b, $T0.16b, $A1.16b + eor $T1.16b, $T1.16b, $B1.16b + eor $T2.16b, $T2.16b, $C1.16b + eor $T3.16b, $T3.16b, $D1.16b + st1 {$T0.16b - $T3.16b}, [$oup], #64 + + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + eor $T0.16b, $T0.16b, $A2.16b + eor $T1.16b, $T1.16b, $B2.16b + eor $T2.16b, $T2.16b, $C2.16b + eor $T3.16b, $T3.16b, $D2.16b + st1 {$T0.16b - $T3.16b}, [$oup], #64 + + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + eor $T0.16b, $T0.16b, $A3.16b + eor $T1.16b, $T1.16b, $B3.16b + eor $T2.16b, $T2.16b, $C3.16b + eor $T3.16b, $T3.16b, $D3.16b + st1 {$T0.16b - $T3.16b}, [$oup], #64 + + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + eor $T0.16b, $T0.16b, $A4.16b + eor $T1.16b, $T1.16b, $B4.16b + eor $T2.16b, $T2.16b, $C4.16b + eor $T3.16b, $T3.16b, $D4.16b + st1 {$T0.16b - $T3.16b}, [$oup], #64 + + sub $inl, $inl, #320 + + mov $itr1, #0 + mov $itr2, #10 // For the remainder of the loop we always hash and encrypt 320 bytes per iteration + + b .Lseal_main_loop + +.Lseal_tail: + // This part of the function handles the storage and authentication of the last [0,320) bytes + // We assume A0-A4 ... D0-D4 hold at least inl (320 max) bytes of the stream data. + cmp $inl, #64 + b.lt .Lseal_tail_64 + + // Store and authenticate 64B blocks per iteration + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + + eor $T0.16b, $T0.16b, $A0.16b + eor $T1.16b, $T1.16b, $B0.16b + eor $T2.16b, $T2.16b, $C0.16b + eor $T3.16b, $T3.16b, $D0.16b +___ + &poly_add_vec($T0); + &poly_mul(); + &poly_add_vec($T1); + &poly_mul(); + &poly_add_vec($T2); + &poly_mul(); + &poly_add_vec($T3); + &poly_mul(); +$code.=<<___; + st1 {$T0.16b - $T3.16b}, [$oup], #64 + sub $inl, $inl, #64 + + // Shift the state left by 64 bytes for the next iteration of the loop + mov $A0.16b, $A1.16b + mov $B0.16b, $B1.16b + mov $C0.16b, $C1.16b + mov $D0.16b, $D1.16b + + mov $A1.16b, $A2.16b + mov $B1.16b, $B2.16b + mov $C1.16b, $C2.16b + mov $D1.16b, $D2.16b + + mov $A2.16b, $A3.16b + mov $B2.16b, $B3.16b + mov $C2.16b, $C3.16b + mov $D2.16b, $D3.16b + + mov $A3.16b, $A4.16b + mov $B3.16b, $B4.16b + mov $C3.16b, $C4.16b + mov $D3.16b, $D4.16b + + b .Lseal_tail + +.Lseal_tail_64: + ldp $adp, $adl, [$keyp, #48] // extra_in_len and extra_in_ptr + + // Here we handle the last [0,64) bytes of plaintext + cmp $inl, #16 + b.lt .Lseal_tail_16 + // Each iteration encrypt and authenticate a 16B block + ld1 {$T0.16b}, [$inp], #16 + eor $T0.16b, $T0.16b, $A0.16b +___ + &poly_add_vec($T0); + &poly_mul(); +$code.=<<___; + st1 {$T0.16b}, [$oup], #16 + + sub $inl, $inl, #16 + + // Shift the state left by 16 bytes for the next iteration of the loop + mov $A0.16b, $B0.16b + mov $B0.16b, $C0.16b + mov $C0.16b, $D0.16b + + b .Lseal_tail_64 + +.Lseal_tail_16: + // Here we handle the last [0,16) bytes of ciphertext that require a padded block + cbz $inl, .Lseal_hash_extra + + eor $T0.16b, $T0.16b, $T0.16b // Use T0 to load the plaintext/extra in + eor $T1.16b, $T1.16b, $T1.16b // Use T1 to generate an AND mask that will only mask the ciphertext bytes + not $T2.16b, $T0.16b + + mov $itr1, $inl + add $inp, $inp, $inl + + cbz $adl, .Lseal_tail_16_compose // No extra data to pad with, zero padding + + mov $itr2, #16 // We need to load some extra_in first for padding + sub $itr2, $itr2, $inl + cmp $adl, $itr2 + csel $itr2, $adl, $itr2, lt // Load the minimum of extra_in_len and the amount needed to fill the register + mov $t1, $itr2 + add $adp, $adp, $itr2 + sub $adl, $adl, $itr2 + +.Lseal_tail16_compose_extra_in: + ext $T0.16b, $T0.16b, $T0.16b, #15 + ldrb $t0w, [$adp, #-1]! + mov $T0.b[0], $t0w + subs $itr2, $itr2, #1 + b.gt .Lseal_tail16_compose_extra_in + + add $adp, $adp, $t1 + +.Lseal_tail_16_compose: + ext $T0.16b, $T0.16b, $T0.16b, #15 + ldrb $t0w, [$inp, #-1]! + mov $T0.b[0], $t0w + ext $T1.16b, $T2.16b, $T1.16b, #15 + subs $inl, $inl, #1 + b.gt .Lseal_tail_16_compose + + and $A0.16b, $A0.16b, $T1.16b + eor $T0.16b, $T0.16b, $A0.16b + mov $T1.16b, $T0.16b + +.Lseal_tail_16_store: + umov $t0w, $T0.b[0] + strb $t0w, [$oup], #1 + ext $T0.16b, $T0.16b, $T0.16b, #1 + subs $itr1, $itr1, #1 + b.gt .Lseal_tail_16_store + + // Hash in the final ct block concatenated with extra_in +___ + &poly_add_vec($T1); + &poly_mul(); +$code.=<<___; + +.Lseal_hash_extra: + cbz $adl, .Lseal_finalize + +.Lseal_hash_extra_loop: + cmp $adl, #16 + b.lt .Lseal_hash_extra_tail + ld1 {$T0.16b}, [$adp], #16 +___ + &poly_add_vec($T0); + &poly_mul(); +$code.=<<___; + sub $adl, $adl, #16 + b .Lseal_hash_extra_loop + +.Lseal_hash_extra_tail: + cbz $adl, .Lseal_finalize + eor $T0.16b, $T0.16b, $T0.16b // Use T0 to load the remaining extra ciphertext + add $adp, $adp, $adl + +.Lseal_hash_extra_load: + ext $T0.16b, $T0.16b, $T0.16b, #15 + ldrb $t0w, [$adp, #-1]! + mov $T0.b[0], $t0w + subs $adl, $adl, #1 + b.gt .Lseal_hash_extra_load + + // Hash in the final padded extra_in blcok +___ + &poly_add_vec($T0); + &poly_mul(); +$code.=<<___; + +.Lseal_finalize: +___ + &poly_add_vec($LEN_STORE); + &poly_mul(); +$code.=<<___; + // Final reduction step + sub $t1, xzr, $one + orr $t2, xzr, #3 + subs $t0, $acc0, #-5 + sbcs $t1, $acc1, $t1 + sbcs $t2, $acc2, $t2 + csel $acc0, $t0, $acc0, cs + csel $acc1, $t1, $acc1, cs + csel $acc2, $t2, $acc2, cs +___ + &poly_add_vec($S_STORE); +$code.=<<___; + + stp $acc0, $acc1, [$keyp] + + ldp d8, d9, [sp, #16] + ldp d10, d11, [sp, #32] + ldp d12, d13, [sp, #48] + ldp d14, d15, [sp, #64] +.cfi_restore b15 +.cfi_restore b14 +.cfi_restore b13 +.cfi_restore b12 +.cfi_restore b11 +.cfi_restore b10 +.cfi_restore b9 +.cfi_restore b8 + ldp x29, x30, [sp], 80 +.cfi_restore w29 +.cfi_restore w30 +.cfi_def_cfa_offset 0 + AARCH64_VALIDATE_LINK_REGISTER + ret + +.Lseal_128: + // On some architectures preparing 5 blocks for small buffers is wasteful + eor $INC.16b, $INC.16b, $INC.16b + mov $t0, #1 + mov $INC.s[0], $t0w + mov $A0.16b, $CONSTS.16b + mov $A1.16b, $CONSTS.16b + mov $A2.16b, $CONSTS.16b + mov $B0.16b, $B_STORE.16b + mov $B1.16b, $B_STORE.16b + mov $B2.16b, $B_STORE.16b + mov $C0.16b, $C_STORE.16b + mov $C1.16b, $C_STORE.16b + mov $C2.16b, $C_STORE.16b + mov $D2.16b, $D_STORE.16b + add $D0.4s, $D2.4s, $INC.4s + add $D1.4s, $D0.4s, $INC.4s + + mov $itr1, #10 + +.Lseal_128_rounds: +___ + &chacha_qr_x3("left"); + &chacha_qr_x3("right"); +$code.=<<___; + subs $itr1, $itr1, #1 + b.hi .Lseal_128_rounds + + add $A0.4s, $A0.4s, $CONSTS.4s + add $A1.4s, $A1.4s, $CONSTS.4s + add $A2.4s, $A2.4s, $CONSTS.4s + + add $B0.4s, $B0.4s, $B_STORE.4s + add $B1.4s, $B1.4s, $B_STORE.4s + add $B2.4s, $B2.4s, $B_STORE.4s + + // Only the first 32 bytes of the third block (counter = 0) are needed, + // so skip updating $C2 and $D2. + add $C0.4s, $C0.4s, $C_STORE.4s + add $C1.4s, $C1.4s, $C_STORE.4s + + add $D_STORE.4s, $D_STORE.4s, $INC.4s + add $D0.4s, $D0.4s, $D_STORE.4s + add $D_STORE.4s, $D_STORE.4s, $INC.4s + add $D1.4s, $D1.4s, $D_STORE.4s + + and $A2.16b, $A2.16b, $CLAMP.16b + mov $r0, $A2.d[0] // Move the R key to GPRs + mov $r1, $A2.d[1] + mov $S_STORE.16b, $B2.16b // Store the S key + + bl .Lpoly_hash_ad_internal + b .Lseal_tail +.cfi_endproc +.size chacha20_poly1305_seal,.-chacha20_poly1305_seal + +///////////////////////////////// +// +// void chacha20_poly1305_open(uint8_t *pt, uint8_t *ct, size_t len_in, uint8_t *ad, size_t len_ad, union open_data *aead_data); +// +.globl chacha20_poly1305_open +.type chacha20_poly1305_open,%function +.align 6 +chacha20_poly1305_open: + AARCH64_SIGN_LINK_REGISTER +.cfi_startproc + stp x29, x30, [sp, #-80]! +.cfi_def_cfa_offset 80 +.cfi_offset w30, -72 +.cfi_offset w29, -80 + mov x29, sp + // We probably could do .cfi_def_cfa w29, 80 at this point, but since + // we don't actually use the frame pointer like that, it's probably not + // worth bothering. + stp d8, d9, [sp, #16] + stp d10, d11, [sp, #32] + stp d12, d13, [sp, #48] + stp d14, d15, [sp, #64] +.cfi_offset b15, -8 +.cfi_offset b14, -16 +.cfi_offset b13, -24 +.cfi_offset b12, -32 +.cfi_offset b11, -40 +.cfi_offset b10, -48 +.cfi_offset b9, -56 +.cfi_offset b8, -64 + + adrp $t0, :pg_hi21:.Lchacha20_consts + add $t0, $t0, :lo12:.Lchacha20_consts + + ld1 {$CONSTS.16b - $CLAMP.16b}, [$t0] // Load the CONSTS, INC, ROL8 and CLAMP values + ld1 {$B_STORE.16b - $D_STORE.16b}, [$keyp] + + mov $one, #1 // Prepare the Poly1305 state + mov $acc0, #0 + mov $acc1, #0 + mov $acc2, #0 + + mov $LEN_STORE.d[0], $adl // Store the input and aad lengths + mov $LEN_STORE.d[1], $inl + + cmp $inl, #128 + b.le .Lopen_128 // Optimization for smaller buffers + + // Initially we prepare a single ChaCha20 block for the Poly1305 R and S keys + mov $A0.16b, $CONSTS.16b + mov $B0.16b, $B_STORE.16b + mov $C0.16b, $C_STORE.16b + mov $D0.16b, $D_STORE.16b + + mov $itr1, #10 + +.align 5 +.Lopen_init_rounds: +___ + &chacha_qr($A0, $B0, $C0, $D0, $T0, "left"); + &chacha_qr($A0, $B0, $C0, $D0, $T0, "right"); +$code.=<<___; + subs $itr1, $itr1, #1 + b.hi .Lopen_init_rounds + + add $A0.4s, $A0.4s, $CONSTS.4s + add $B0.4s, $B0.4s, $B_STORE.4s + + and $A0.16b, $A0.16b, $CLAMP.16b + mov $r0, $A0.d[0] // Move the R key to GPRs + mov $r1, $A0.d[1] + mov $S_STORE.16b, $B0.16b // Store the S key + + bl .Lpoly_hash_ad_internal + +.Lopen_ad_done: + mov $adp, $inp + +// Each iteration of the loop hash 320 bytes, and prepare stream for 320 bytes +.Lopen_main_loop: + + cmp $inl, #192 + b.lt .Lopen_tail + + adrp $t0, :pg_hi21:.Lchacha20_consts + add $t0, $t0, :lo12:.Lchacha20_consts + + ld4r {$A0.4s-$A3.4s}, [$t0] + mov $A4.16b, $CONSTS.16b + + ld4r {$B0.4s-$B3.4s}, [$keyp], #16 + mov $B4.16b, $B_STORE.16b + + ld4r {$C0.4s-$C3.4s}, [$keyp], #16 + mov $C4.16b, $C_STORE.16b + + ld4r {$D0.4s-$D3.4s}, [$keyp] + sub $keyp, $keyp, #32 + add $D0.4s, $D0.4s, $INC.4s + mov $D4.16b, $D_STORE.16b + + eor $T0.16b, $T0.16b, $T0.16b //zero + not $T1.16b, $T0.16b // -1 + sub $T1.4s, $INC.4s, $T1.4s // Add +1 + ext $T0.16b, $T1.16b, $T0.16b, #12 // Get the last element (counter) + add $D4.4s, $D4.4s, $T0.4s + + lsr $adl, $inl, #4 // How many whole blocks we have to hash, will always be at least 12 + sub $adl, $adl, #10 + + mov $itr2, #10 + subs $itr1, $itr2, $adl + subs $itr1, $itr2, $adl // itr1 can be negative if we have more than 320 bytes to hash + csel $itr2, $itr2, $adl, le // if itr1 is zero or less, itr2 should be 10 to indicate all 10 rounds are full + + cbz $itr2, .Lopen_main_loop_rounds_short + +.align 5 +.Lopen_main_loop_rounds: +___ + &poly_add($adp); + &poly_mul(); +$code.=<<___; +.Lopen_main_loop_rounds_short: +___ + &chacha_qr_x5("left"); + &poly_add($adp); + &poly_mul(); + &chacha_qr_x5("right"); +$code.=<<___; + subs $itr2, $itr2, #1 + b.gt .Lopen_main_loop_rounds + subs $itr1, $itr1, #1 + b.ge .Lopen_main_loop_rounds_short +___ +$code.=<<___; + + eor $T0.16b, $T0.16b, $T0.16b //zero + not $T1.16b, $T0.16b // -1 + sub $T1.4s, $INC.4s, $T1.4s // Add +1 + ext $T0.16b, $T1.16b, $T0.16b, #12 // Get the last element (counter) + add $D4.4s, $D4.4s, $T0.4s + + add $D0.4s, $D0.4s, $INC.4s + mov $t0, #5 + dup $T0.4s, $t0w + add $INC.4s, $INC.4s, $T0.4s + + zip1 $T0.4s, $A0.4s, $A1.4s + zip2 $T1.4s, $A0.4s, $A1.4s + zip1 $T2.4s, $A2.4s, $A3.4s + zip2 $T3.4s, $A2.4s, $A3.4s + + zip1 $A0.2d, $T0.2d, $T2.2d + zip2 $A1.2d, $T0.2d, $T2.2d + zip1 $A2.2d, $T1.2d, $T3.2d + zip2 $A3.2d, $T1.2d, $T3.2d + + zip1 $T0.4s, $B0.4s, $B1.4s + zip2 $T1.4s, $B0.4s, $B1.4s + zip1 $T2.4s, $B2.4s, $B3.4s + zip2 $T3.4s, $B2.4s, $B3.4s + + zip1 $B0.2d, $T0.2d, $T2.2d + zip2 $B1.2d, $T0.2d, $T2.2d + zip1 $B2.2d, $T1.2d, $T3.2d + zip2 $B3.2d, $T1.2d, $T3.2d + + zip1 $T0.4s, $C0.4s, $C1.4s + zip2 $T1.4s, $C0.4s, $C1.4s + zip1 $T2.4s, $C2.4s, $C3.4s + zip2 $T3.4s, $C2.4s, $C3.4s + + zip1 $C0.2d, $T0.2d, $T2.2d + zip2 $C1.2d, $T0.2d, $T2.2d + zip1 $C2.2d, $T1.2d, $T3.2d + zip2 $C3.2d, $T1.2d, $T3.2d + + zip1 $T0.4s, $D0.4s, $D1.4s + zip2 $T1.4s, $D0.4s, $D1.4s + zip1 $T2.4s, $D2.4s, $D3.4s + zip2 $T3.4s, $D2.4s, $D3.4s + + zip1 $D0.2d, $T0.2d, $T2.2d + zip2 $D1.2d, $T0.2d, $T2.2d + zip1 $D2.2d, $T1.2d, $T3.2d + zip2 $D3.2d, $T1.2d, $T3.2d + + add $A0.4s, $A0.4s, $CONSTS.4s + add $B0.4s, $B0.4s, $B_STORE.4s + add $C0.4s, $C0.4s, $C_STORE.4s + add $D0.4s, $D0.4s, $D_STORE.4s + + add $A1.4s, $A1.4s, $CONSTS.4s + add $B1.4s, $B1.4s, $B_STORE.4s + add $C1.4s, $C1.4s, $C_STORE.4s + add $D1.4s, $D1.4s, $D_STORE.4s + + add $A2.4s, $A2.4s, $CONSTS.4s + add $B2.4s, $B2.4s, $B_STORE.4s + add $C2.4s, $C2.4s, $C_STORE.4s + add $D2.4s, $D2.4s, $D_STORE.4s + + add $A3.4s, $A3.4s, $CONSTS.4s + add $B3.4s, $B3.4s, $B_STORE.4s + add $C3.4s, $C3.4s, $C_STORE.4s + add $D3.4s, $D3.4s, $D_STORE.4s + + add $A4.4s, $A4.4s, $CONSTS.4s + add $B4.4s, $B4.4s, $B_STORE.4s + add $C4.4s, $C4.4s, $C_STORE.4s + add $D4.4s, $D4.4s, $D_STORE.4s + + // We can always safely store 192 bytes + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + eor $T0.16b, $T0.16b, $A0.16b + eor $T1.16b, $T1.16b, $B0.16b + eor $T2.16b, $T2.16b, $C0.16b + eor $T3.16b, $T3.16b, $D0.16b + st1 {$T0.16b - $T3.16b}, [$oup], #64 + + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + eor $T0.16b, $T0.16b, $A1.16b + eor $T1.16b, $T1.16b, $B1.16b + eor $T2.16b, $T2.16b, $C1.16b + eor $T3.16b, $T3.16b, $D1.16b + st1 {$T0.16b - $T3.16b}, [$oup], #64 + + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + eor $T0.16b, $T0.16b, $A2.16b + eor $T1.16b, $T1.16b, $B2.16b + eor $T2.16b, $T2.16b, $C2.16b + eor $T3.16b, $T3.16b, $D2.16b + st1 {$T0.16b - $T3.16b}, [$oup], #64 + + sub $inl, $inl, #192 + + mov $A0.16b, $A3.16b + mov $B0.16b, $B3.16b + mov $C0.16b, $C3.16b + mov $D0.16b, $D3.16b + + cmp $inl, #64 + b.lt .Lopen_tail_64_store + + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + eor $T0.16b, $T0.16b, $A3.16b + eor $T1.16b, $T1.16b, $B3.16b + eor $T2.16b, $T2.16b, $C3.16b + eor $T3.16b, $T3.16b, $D3.16b + st1 {$T0.16b - $T3.16b}, [$oup], #64 + + sub $inl, $inl, #64 + + mov $A0.16b, $A4.16b + mov $B0.16b, $B4.16b + mov $C0.16b, $C4.16b + mov $D0.16b, $D4.16b + + cmp $inl, #64 + b.lt .Lopen_tail_64_store + + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + eor $T0.16b, $T0.16b, $A4.16b + eor $T1.16b, $T1.16b, $B4.16b + eor $T2.16b, $T2.16b, $C4.16b + eor $T3.16b, $T3.16b, $D4.16b + st1 {$T0.16b - $T3.16b}, [$oup], #64 + + sub $inl, $inl, #64 + b .Lopen_main_loop + +.Lopen_tail: + + cbz $inl, .Lopen_finalize + + lsr $adl, $inl, #4 // How many whole blocks we have to hash + + cmp $inl, #64 + b.le .Lopen_tail_64 + cmp $inl, #128 + b.le .Lopen_tail_128 + +.Lopen_tail_192: + // We need three more blocks + mov $A0.16b, $CONSTS.16b + mov $A1.16b, $CONSTS.16b + mov $A2.16b, $CONSTS.16b + mov $B0.16b, $B_STORE.16b + mov $B1.16b, $B_STORE.16b + mov $B2.16b, $B_STORE.16b + mov $C0.16b, $C_STORE.16b + mov $C1.16b, $C_STORE.16b + mov $C2.16b, $C_STORE.16b + mov $D0.16b, $D_STORE.16b + mov $D1.16b, $D_STORE.16b + mov $D2.16b, $D_STORE.16b + eor $T3.16b, $T3.16b, $T3.16b + eor $T1.16b, $T1.16b, $T1.16b + ins $T3.s[0], $INC.s[0] + ins $T1.d[0], $one + + add $T2.4s, $T3.4s, $T1.4s + add $T1.4s, $T2.4s, $T1.4s + + add $D0.4s, $D0.4s, $T1.4s + add $D1.4s, $D1.4s, $T3.4s + add $D2.4s, $D2.4s, $T2.4s + + mov $itr2, #10 + subs $itr1, $itr2, $adl // itr1 can be negative if we have more than 160 bytes to hash + csel $itr2, $itr2, $adl, le // if itr1 is zero or less, itr2 should be 10 to indicate all 10 rounds are hashing + sub $adl, $adl, $itr2 + + cbz $itr2, .Lopen_tail_192_rounds_no_hash + +.Lopen_tail_192_rounds: +___ + &poly_add($adp); + &poly_mul(); +$code.=<<___; +.Lopen_tail_192_rounds_no_hash: +___ + &chacha_qr_x3("left"); + &chacha_qr_x3("right"); +$code.=<<___; + subs $itr2, $itr2, #1 + b.gt .Lopen_tail_192_rounds + subs $itr1, $itr1, #1 + b.ge .Lopen_tail_192_rounds_no_hash + + // We hashed 160 bytes at most, may still have 32 bytes left +.Lopen_tail_192_hash: + cbz $adl, .Lopen_tail_192_hash_done +___ + &poly_add($adp); + &poly_mul(); +$code.=<<___; + sub $adl, $adl, #1 + b .Lopen_tail_192_hash + +.Lopen_tail_192_hash_done: + + add $A0.4s, $A0.4s, $CONSTS.4s + add $A1.4s, $A1.4s, $CONSTS.4s + add $A2.4s, $A2.4s, $CONSTS.4s + add $B0.4s, $B0.4s, $B_STORE.4s + add $B1.4s, $B1.4s, $B_STORE.4s + add $B2.4s, $B2.4s, $B_STORE.4s + add $C0.4s, $C0.4s, $C_STORE.4s + add $C1.4s, $C1.4s, $C_STORE.4s + add $C2.4s, $C2.4s, $C_STORE.4s + add $D0.4s, $D0.4s, $D_STORE.4s + add $D1.4s, $D1.4s, $D_STORE.4s + add $D2.4s, $D2.4s, $D_STORE.4s + + add $D0.4s, $D0.4s, $T1.4s + add $D1.4s, $D1.4s, $T3.4s + add $D2.4s, $D2.4s, $T2.4s + + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + + eor $T0.16b, $T0.16b, $A1.16b + eor $T1.16b, $T1.16b, $B1.16b + eor $T2.16b, $T2.16b, $C1.16b + eor $T3.16b, $T3.16b, $D1.16b + + st1 {$T0.16b - $T3.16b}, [$oup], #64 + + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + + eor $T0.16b, $T0.16b, $A2.16b + eor $T1.16b, $T1.16b, $B2.16b + eor $T2.16b, $T2.16b, $C2.16b + eor $T3.16b, $T3.16b, $D2.16b + + st1 {$T0.16b - $T3.16b}, [$oup], #64 + + sub $inl, $inl, #128 + b .Lopen_tail_64_store + +.Lopen_tail_128: + // We need two more blocks + mov $A0.16b, $CONSTS.16b + mov $A1.16b, $CONSTS.16b + mov $B0.16b, $B_STORE.16b + mov $B1.16b, $B_STORE.16b + mov $C0.16b, $C_STORE.16b + mov $C1.16b, $C_STORE.16b + mov $D0.16b, $D_STORE.16b + mov $D1.16b, $D_STORE.16b + eor $T3.16b, $T3.16b, $T3.16b + eor $T2.16b, $T2.16b, $T2.16b + ins $T3.s[0], $INC.s[0] + ins $T2.d[0], $one + add $T2.4s, $T2.4s, $T3.4s + + add $D0.4s, $D0.4s, $T2.4s + add $D1.4s, $D1.4s, $T3.4s + + mov $itr1, #10 + sub $itr1, $itr1, $adl + +.Lopen_tail_128_rounds: +___ + &chacha_qr($A0, $B0, $C0, $D0, $T0, "left"); + &chacha_qr($A1, $B1, $C1, $D1, $T0, "left"); + &chacha_qr($A0, $B0, $C0, $D0, $T0, "right"); + &chacha_qr($A1, $B1, $C1, $D1, $T0, "right"); +$code.=<<___; + subs $itr1, $itr1, #1 + b.gt .Lopen_tail_128_rounds + cbz $adl, .Lopen_tail_128_rounds_done + subs $adl, $adl, #1 +___ + &poly_add($adp); + &poly_mul(); +$code.=<<___; + b .Lopen_tail_128_rounds + +.Lopen_tail_128_rounds_done: + add $A0.4s, $A0.4s, $CONSTS.4s + add $A1.4s, $A1.4s, $CONSTS.4s + add $B0.4s, $B0.4s, $B_STORE.4s + add $B1.4s, $B1.4s, $B_STORE.4s + add $C0.4s, $C0.4s, $C_STORE.4s + add $C1.4s, $C1.4s, $C_STORE.4s + add $D0.4s, $D0.4s, $D_STORE.4s + add $D1.4s, $D1.4s, $D_STORE.4s + add $D0.4s, $D0.4s, $T2.4s + add $D1.4s, $D1.4s, $T3.4s + + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + + eor $T0.16b, $T0.16b, $A1.16b + eor $T1.16b, $T1.16b, $B1.16b + eor $T2.16b, $T2.16b, $C1.16b + eor $T3.16b, $T3.16b, $D1.16b + + st1 {$T0.16b - $T3.16b}, [$oup], #64 + sub $inl, $inl, #64 + + b .Lopen_tail_64_store + +.Lopen_tail_64: + // We just need a single block + mov $A0.16b, $CONSTS.16b + mov $B0.16b, $B_STORE.16b + mov $C0.16b, $C_STORE.16b + mov $D0.16b, $D_STORE.16b + eor $T3.16b, $T3.16b, $T3.16b + ins $T3.s[0], $INC.s[0] + add $D0.4s, $D0.4s, $T3.4s + + mov $itr1, #10 + sub $itr1, $itr1, $adl + +.Lopen_tail_64_rounds: +___ + &chacha_qr($A0, $B0, $C0, $D0, $T0, "left"); + &chacha_qr($A0, $B0, $C0, $D0, $T0, "right"); +$code.=<<___; + subs $itr1, $itr1, #1 + b.gt .Lopen_tail_64_rounds + cbz $adl, .Lopen_tail_64_rounds_done + subs $adl, $adl, #1 +___ + &poly_add($adp); + &poly_mul(); +$code.=<<___; + b .Lopen_tail_64_rounds + +.Lopen_tail_64_rounds_done: + add $A0.4s, $A0.4s, $CONSTS.4s + add $B0.4s, $B0.4s, $B_STORE.4s + add $C0.4s, $C0.4s, $C_STORE.4s + add $D0.4s, $D0.4s, $D_STORE.4s + add $D0.4s, $D0.4s, $T3.4s + +.Lopen_tail_64_store: + cmp $inl, #16 + b.lt .Lopen_tail_16 + + ld1 {$T0.16b}, [$inp], #16 + eor $T0.16b, $T0.16b, $A0.16b + st1 {$T0.16b}, [$oup], #16 + mov $A0.16b, $B0.16b + mov $B0.16b, $C0.16b + mov $C0.16b, $D0.16b + sub $inl, $inl, #16 + b .Lopen_tail_64_store + +.Lopen_tail_16: + // Here we handle the last [0,16) bytes that require a padded block + cbz $inl, .Lopen_finalize + + eor $T0.16b, $T0.16b, $T0.16b // Use T0 to load the ciphertext + eor $T1.16b, $T1.16b, $T1.16b // Use T1 to generate an AND mask + not $T2.16b, $T0.16b + + add $itr2, $inp, $inl + mov $itr1, $inl + +.Lopen_tail_16_compose: + ext $T0.16b, $T0.16b, $T0.16b, #15 + ldrb $t0w, [$itr2, #-1]! + mov $T0.b[0], $t0w + ext $T1.16b, $T2.16b, $T1.16b, #15 + subs $inl, $inl, #1 + b.gt .Lopen_tail_16_compose + + and $T0.16b, $T0.16b, $T1.16b + // Hash in the final padded block +___ + &poly_add_vec($T0); + &poly_mul(); +$code.=<<___; + eor $T0.16b, $T0.16b, $A0.16b + +.Lopen_tail_16_store: + umov $t0w, $T0.b[0] + strb $t0w, [$oup], #1 + ext $T0.16b, $T0.16b, $T0.16b, #1 + subs $itr1, $itr1, #1 + b.gt .Lopen_tail_16_store + +.Lopen_finalize: +___ + &poly_add_vec($LEN_STORE); + &poly_mul(); +$code.=<<___; + // Final reduction step + sub $t1, xzr, $one + orr $t2, xzr, #3 + subs $t0, $acc0, #-5 + sbcs $t1, $acc1, $t1 + sbcs $t2, $acc2, $t2 + csel $acc0, $t0, $acc0, cs + csel $acc1, $t1, $acc1, cs + csel $acc2, $t2, $acc2, cs +___ + &poly_add_vec($S_STORE); +$code.=<<___; + + stp $acc0, $acc1, [$keyp] + + ldp d8, d9, [sp, #16] + ldp d10, d11, [sp, #32] + ldp d12, d13, [sp, #48] + ldp d14, d15, [sp, #64] +.cfi_restore b15 +.cfi_restore b14 +.cfi_restore b13 +.cfi_restore b12 +.cfi_restore b11 +.cfi_restore b10 +.cfi_restore b9 +.cfi_restore b8 + ldp x29, x30, [sp], 80 +.cfi_restore w29 +.cfi_restore w30 +.cfi_def_cfa_offset 0 + AARCH64_VALIDATE_LINK_REGISTER + ret + +.Lopen_128: + // On some architectures preparing 5 blocks for small buffers is wasteful + eor $INC.16b, $INC.16b, $INC.16b + mov $t0, #1 + mov $INC.s[0], $t0w + mov $A0.16b, $CONSTS.16b + mov $A1.16b, $CONSTS.16b + mov $A2.16b, $CONSTS.16b + mov $B0.16b, $B_STORE.16b + mov $B1.16b, $B_STORE.16b + mov $B2.16b, $B_STORE.16b + mov $C0.16b, $C_STORE.16b + mov $C1.16b, $C_STORE.16b + mov $C2.16b, $C_STORE.16b + mov $D2.16b, $D_STORE.16b + add $D0.4s, $D2.4s, $INC.4s + add $D1.4s, $D0.4s, $INC.4s + + mov $itr1, #10 + +.Lopen_128_rounds: +___ + &chacha_qr_x3("left"); + &chacha_qr_x3("right"); +$code.=<<___; + subs $itr1, $itr1, #1 + b.hi .Lopen_128_rounds + + add $A0.4s, $A0.4s, $CONSTS.4s + add $A1.4s, $A1.4s, $CONSTS.4s + add $A2.4s, $A2.4s, $CONSTS.4s + + add $B0.4s, $B0.4s, $B_STORE.4s + add $B1.4s, $B1.4s, $B_STORE.4s + add $B2.4s, $B2.4s, $B_STORE.4s + + add $C0.4s, $C0.4s, $C_STORE.4s + add $C1.4s, $C1.4s, $C_STORE.4s + + add $D_STORE.4s, $D_STORE.4s, $INC.4s + add $D0.4s, $D0.4s, $D_STORE.4s + add $D_STORE.4s, $D_STORE.4s, $INC.4s + add $D1.4s, $D1.4s, $D_STORE.4s + + and $A2.16b, $A2.16b, $CLAMP.16b + mov $r0, $A2.d[0] // Move the R key to GPRs + mov $r1, $A2.d[1] + mov $S_STORE.16b, $B2.16b // Store the S key + + bl .Lpoly_hash_ad_internal + +.Lopen_128_store: + cmp $inl, #64 + b.lt .Lopen_128_store_64 + + ld1 {$T0.16b - $T3.16b}, [$inp], #64 + +___ + &poly_add_vec($T0); + &poly_mul(); + &poly_add_vec($T1); + &poly_mul(); + &poly_add_vec($T2); + &poly_mul(); + &poly_add_vec($T3); + &poly_mul(); +$code.=<<___; + + eor $T0.16b, $T0.16b, $A0.16b + eor $T1.16b, $T1.16b, $B0.16b + eor $T2.16b, $T2.16b, $C0.16b + eor $T3.16b, $T3.16b, $D0.16b + + st1 {$T0.16b - $T3.16b}, [$oup], #64 + + sub $inl, $inl, #64 + + mov $A0.16b, $A1.16b + mov $B0.16b, $B1.16b + mov $C0.16b, $C1.16b + mov $D0.16b, $D1.16b + +.Lopen_128_store_64: + + lsr $adl, $inl, #4 + mov $adp, $inp + +.Lopen_128_hash_64: + cbz $adl, .Lopen_tail_64_store +___ + &poly_add($adp); + &poly_mul(); +$code.=<<___; + sub $adl, $adl, #1 + b .Lopen_128_hash_64 +.cfi_endproc +.size chacha20_poly1305_open,.-chacha20_poly1305_open +___ +} + +foreach (split("\n",$code)) { + s/\`([^\`]*)\`/eval $1/ge; + + print $_,"\n"; +} +close STDOUT or die "error closing STDOUT"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/cipher_extra/asm/chacha20_poly1305_x86_64.pl temporalio-1.3.0/vendor/ring/crypto/cipher_extra/asm/chacha20_poly1305_x86_64.pl --- temporalio-1.3.0/vendor/ring/crypto/cipher_extra/asm/chacha20_poly1305_x86_64.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/cipher_extra/asm/chacha20_poly1305_x86_64.pl 2023-10-30 19:40:00.000000000 +0000 @@ -38,10 +38,11 @@ $code.=<<___; .text -.extern GFp_ia32cap_P +.extern OPENSSL_ia32cap_P chacha20_poly1305_constants: +.section .rodata .align 64 .Lchacha20_consts: .byte 'e','x','p','a','n','d',' ','3','2','-','b','y','t','e',' ','k' @@ -79,6 +80,7 @@ .byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00 .byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00 .byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff +.text ___ my ($oup,$inp,$inl,$adp,$keyp,$itr1,$itr2,$adl)=("%rdi","%rsi","%rbx","%rcx","%r9","%rcx","%r8","%r8"); @@ -436,17 +438,18 @@ { ################################################################################ -# void GFp_chacha20_poly1305_open(uint8_t *out_plaintext, const uint8_t *ciphertext, -# size_t plaintext_len, const uint8_t *ad, -# size_t ad_len, -# union chacha20_poly1305_open_data *aead_data) +# void chacha20_poly1305_open(uint8_t *out_plaintext, const uint8_t *ciphertext, +# size_t plaintext_len, const uint8_t *ad, +# size_t ad_len, +# union chacha20_poly1305_open_data *aead_data) # $code.=" -.globl GFp_chacha20_poly1305_open -.type GFp_chacha20_poly1305_open,\@function,6 +.globl chacha20_poly1305_open +.type chacha20_poly1305_open,\@function,6 .align 64 -GFp_chacha20_poly1305_open: +chacha20_poly1305_open: .cfi_startproc + _CET_ENDBR push %rbp .cfi_push %rbp push %rbx @@ -484,7 +487,7 @@ mov $adl, 0+$len_store mov $inl, 8+$len_store\n"; $code.=" - mov GFp_ia32cap_P+8(%rip), %eax + mov OPENSSL_ia32cap_P+8(%rip), %eax and \$`(1<<5) + (1<<8)`, %eax # Check both BMI2 and AVX2 are present xor \$`(1<<5) + (1<<8)`, %eax jz chacha20_poly1305_open_avx2\n" if ($avx>1); @@ -855,19 +858,21 @@ movdqa $C2, $B2 movdqa $D2, $C2 jmp .Lopen_sse_128_xor_hash -.size GFp_chacha20_poly1305_open, .-GFp_chacha20_poly1305_open +.size chacha20_poly1305_open, .-chacha20_poly1305_open .cfi_endproc ################################################################################ -# void GFp_chacha20_poly1305_seal(uint8_t *out_ciphertext, const uint8_t *plaintext, -# size_t plaintext_len, const uint8_t *ad, -# size_t ad_len, -# union chacha20_poly1305_seal_data *data); -.globl GFp_chacha20_poly1305_seal -.type GFp_chacha20_poly1305_seal,\@function,6 +################################################################################ +# void chacha20_poly1305_seal(uint8_t *out_ciphertext, const uint8_t *plaintext, +# size_t plaintext_len, const uint8_t *ad, +# size_t ad_len, +# union chacha20_poly1305_seal_data *data); +.globl chacha20_poly1305_seal +.type chacha20_poly1305_seal,\@function,6 .align 64 -GFp_chacha20_poly1305_seal: +chacha20_poly1305_seal: .cfi_startproc + _CET_ENDBR push %rbp .cfi_push %rbp push %rbx @@ -879,7 +884,7 @@ push %r14 .cfi_push %r14 push %r15 -.cfi_push %r15 +.cfi_push %r15 # We write the calculated authenticator back to keyp at the end, so save # the pointer on the stack too. push $keyp @@ -906,7 +911,7 @@ mov $inl, 8+$len_store mov %rdx, $inl\n"; $code.=" - mov GFp_ia32cap_P+8(%rip), %eax + mov OPENSSL_ia32cap_P+8(%rip), %eax and \$`(1<<5) + (1<<8)`, %eax # Check both BMI2 and AVX2 are present xor \$`(1<<5) + (1<<8)`, %eax jz chacha20_poly1305_seal_avx2\n" if ($avx>1); @@ -1366,7 +1371,7 @@ mov %r8, $itr2 call poly_hash_ad_internal jmp .Lseal_sse_128_tail_xor -.size GFp_chacha20_poly1305_seal, .-GFp_chacha20_poly1305_seal +.size chacha20_poly1305_seal, .-chacha20_poly1305_seal .cfi_endproc\n"; } @@ -1709,7 +1714,7 @@ # Hash and decrypt 512 bytes each iteration cmp \$16*32, $inl jb .Lopen_avx2_main_loop_done\n"; - &prep_state_avx2(4); $code.=" + &prep_state_avx2(4); $code.=" xor $itr1, $itr1 .Lopen_avx2_main_loop_rounds: \n"; &poly_add("0*8($inp,$itr1)"); @@ -2558,4 +2563,4 @@ print $code; -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/constant_time_test.c temporalio-1.3.0/vendor/ring/crypto/constant_time_test.c --- temporalio-1.3.0/vendor/ring/crypto/constant_time_test.c 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/constant_time_test.c 2023-10-30 19:40:00.000000000 +0000 @@ -47,9 +47,9 @@ int bssl_constant_time_test_main(void); -static int test_binary_op_w(crypto_word (*op)(crypto_word a, crypto_word b), - crypto_word a, crypto_word b, int is_true) { - crypto_word c = op(a, b); +static int test_binary_op_w(crypto_word_t (*op)(crypto_word_t a, crypto_word_t b), + crypto_word_t a, crypto_word_t b, int is_true) { + crypto_word_t c = op(a, b); if (is_true && c != CONSTTIME_TRUE_W) { return 1; } else if (!is_true && c != CONSTTIME_FALSE_W) { @@ -58,8 +58,8 @@ return 0; } -static int test_is_zero_w(crypto_word a) { - crypto_word c = constant_time_is_zero_w(a); +static int test_is_zero_w(crypto_word_t a) { + crypto_word_t c = constant_time_is_zero_w(a); if (a == 0 && c != CONSTTIME_TRUE_W) { return 1; } else if (a != 0 && c != CONSTTIME_FALSE_W) { @@ -76,8 +76,8 @@ return 0; } -static int test_select_w(crypto_word a, crypto_word b) { - crypto_word selected = constant_time_select_w(CONSTTIME_TRUE_W, a, b); +static int test_select_w(crypto_word_t a, crypto_word_t b) { + crypto_word_t selected = constant_time_select_w(CONSTTIME_TRUE_W, a, b); if (selected != a) { return 1; } @@ -88,36 +88,36 @@ return 0; } -static crypto_word test_values_s[] = { - 0, - 1, - 1024, - 12345, - 32000, +static crypto_word_t test_values_w[] = { + 0, + 1, + 1024, + 12345, + 32000, #if defined(OPENSSL_64_BIT) - 0xffffffff / 2 - 1, - 0xffffffff / 2, - 0xffffffff / 2 + 1, - 0xffffffff - 1, - 0xffffffff, + 0xffffffff / 2 - 1, + 0xffffffff / 2, + 0xffffffff / 2 + 1, + 0xffffffff - 1, + 0xffffffff, #endif - SIZE_MAX / 2 - 1, - SIZE_MAX / 2, - SIZE_MAX / 2 + 1, - SIZE_MAX - 1, - SIZE_MAX + SIZE_MAX / 2 - 1, + SIZE_MAX / 2, + SIZE_MAX / 2 + 1, + SIZE_MAX - 1, + SIZE_MAX }; int bssl_constant_time_test_main(void) { int num_failed = 0; for (size_t i = 0; - i < sizeof(test_values_s) / sizeof(test_values_s[0]); ++i) { - crypto_word a = test_values_s[i]; + i < sizeof(test_values_w) / sizeof(test_values_w[0]); ++i) { + crypto_word_t a = test_values_w[i]; num_failed += test_is_zero_w(a); for (size_t j = 0; - j < sizeof(test_values_s) / sizeof(test_values_s[0]); ++j) { - crypto_word b = test_values_s[j]; + j < sizeof(test_values_w) / sizeof(test_values_w[0]); ++j) { + crypto_word_t b = test_values_w[j]; num_failed += test_binary_op_w(&constant_time_eq_w, a, b, a == b); num_failed += test_binary_op_w(&constant_time_eq_w, b, a, b == a); num_failed += test_select_w(a, b); @@ -126,3 +126,16 @@ return num_failed == 0; } + +// Exposes `constant_time_conditional_memcpy` to Rust for tests only. +void bssl_constant_time_test_conditional_memcpy(uint8_t dst[256], const uint8_t src[256], + crypto_word_t b) { + constant_time_conditional_memcpy(dst, src, 256, b); + } + +// Exposes `constant_time_conditional_memxor` to Rust for tests only. +void bssl_constant_time_test_conditional_memxor(uint8_t dst[256], + const uint8_t src[256], + crypto_word_t b) { + constant_time_conditional_memxor(dst, src, 256, b); +} diff -Nru temporalio-1.3.0/vendor/ring/crypto/cpu_intel.c temporalio-1.3.0/vendor/ring/crypto/cpu_intel.c --- temporalio-1.3.0/vendor/ring/crypto/cpu_intel.c 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/cpu_intel.c 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,203 @@ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] */ + +#include + + +#if !defined(OPENSSL_NO_ASM) && (defined(OPENSSL_X86) || defined(OPENSSL_X86_64)) + +#if defined(_MSC_VER) && !defined(__clang__) +#pragma warning(push, 3) +#include +#include +#pragma warning(pop) +#endif + +#include "internal.h" + + +// OPENSSL_cpuid runs the cpuid instruction. |leaf| is passed in as EAX and ECX +// is set to zero. It writes EAX, EBX, ECX, and EDX to |*out_eax| through +// |*out_edx|. +static void OPENSSL_cpuid(uint32_t *out_eax, uint32_t *out_ebx, + uint32_t *out_ecx, uint32_t *out_edx, uint32_t leaf) { +#if defined(_MSC_VER) && !defined(__clang__) + int tmp[4]; + __cpuid(tmp, (int)leaf); + *out_eax = (uint32_t)tmp[0]; + *out_ebx = (uint32_t)tmp[1]; + *out_ecx = (uint32_t)tmp[2]; + *out_edx = (uint32_t)tmp[3]; +#elif defined(__pic__) && defined(OPENSSL_32_BIT) + // Inline assembly may not clobber the PIC register. For 32-bit, this is EBX. + // See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47602. + __asm__ volatile ( + "xor %%ecx, %%ecx\n" + "mov %%ebx, %%edi\n" + "cpuid\n" + "xchg %%edi, %%ebx\n" + : "=a"(*out_eax), "=D"(*out_ebx), "=c"(*out_ecx), "=d"(*out_edx) + : "a"(leaf) + ); +#else + __asm__ volatile ( + "xor %%ecx, %%ecx\n" + "cpuid\n" + : "=a"(*out_eax), "=b"(*out_ebx), "=c"(*out_ecx), "=d"(*out_edx) + : "a"(leaf) + ); +#endif +} + +// OPENSSL_xgetbv returns the value of an Intel Extended Control Register (XCR). +// Currently only XCR0 is defined by Intel so |xcr| should always be zero. +// +// See https://software.intel.com/en-us/articles/how-to-detect-new-instruction-support-in-the-4th-generation-intel-core-processor-family +static uint64_t OPENSSL_xgetbv(uint32_t xcr) { +#if defined(_MSC_VER) && !defined(__clang__) + return (uint64_t)_xgetbv(xcr); +#else + uint32_t eax, edx; + __asm__ volatile ("xgetbv" : "=a"(eax), "=d"(edx) : "c"(xcr)); + return (((uint64_t)edx) << 32) | eax; +#endif +} + +void OPENSSL_cpuid_setup(void) { + // Determine the vendor and maximum input value. + uint32_t eax, ebx, ecx, edx; + OPENSSL_cpuid(&eax, &ebx, &ecx, &edx, 0); + + uint32_t num_ids = eax; + + int is_intel = ebx == 0x756e6547 /* Genu */ && + edx == 0x49656e69 /* ineI */ && + ecx == 0x6c65746e /* ntel */; + + uint32_t extended_features[2] = {0}; + if (num_ids >= 7) { + OPENSSL_cpuid(&eax, &ebx, &ecx, &edx, 7); + extended_features[0] = ebx; + extended_features[1] = ecx; + } + + OPENSSL_cpuid(&eax, &ebx, &ecx, &edx, 1); + + // Force the hyper-threading bit so that the more conservative path is always + // chosen. + edx |= 1u << 28; + + // Reserved bit #20 was historically repurposed to control the in-memory + // representation of RC4 state. Always set it to zero. + edx &= ~(1u << 20); + + // Reserved bit #30 is repurposed to signal an Intel CPU. + if (is_intel) { + edx |= (1u << 30); + + // Clear the XSAVE bit on Knights Landing to mimic Silvermont. This enables + // some Silvermont-specific codepaths which perform better. See OpenSSL + // commit 64d92d74985ebb3d0be58a9718f9e080a14a8e7f. + if ((eax & 0x0fff0ff0) == 0x00050670 /* Knights Landing */ || + (eax & 0x0fff0ff0) == 0x00080650 /* Knights Mill (per SDE) */) { + ecx &= ~(1u << 26); + } + } else { + edx &= ~(1u << 30); + } + + // The SDBG bit is repurposed to denote AMD XOP support. Don't ever use AMD + // XOP code paths. + ecx &= ~(1u << 11); + + uint64_t xcr0 = 0; + if (ecx & (1u << 27)) { + // XCR0 may only be queried if the OSXSAVE bit is set. + xcr0 = OPENSSL_xgetbv(0); + } + // See Intel manual, volume 1, section 14.3. + if ((xcr0 & 6) != 6) { + // YMM registers cannot be used. + ecx &= ~(1u << 28); // AVX + ecx &= ~(1u << 12); // FMA + ecx &= ~(1u << 11); // AMD XOP + // Clear AVX2 and AVX512* bits. + // + // TODO(davidben): Should bits 17 and 26-28 also be cleared? Upstream + // doesn't clear those. + extended_features[0] &= + ~((1u << 5) | (1u << 16) | (1u << 21) | (1u << 30) | (1u << 31)); + } + // See Intel manual, volume 1, section 15.2. + if ((xcr0 & 0xe6) != 0xe6) { + // Clear AVX512F. Note we don't touch other AVX512 extensions because they + // can be used with YMM. + extended_features[0] &= ~(1u << 16); + } + + // Disable ADX instructions on Knights Landing. See OpenSSL commit + // 64d92d74985ebb3d0be58a9718f9e080a14a8e7f. + if ((ecx & (1u << 26)) == 0) { + extended_features[0] &= ~(1u << 19); + } + + OPENSSL_ia32cap_P[0] = edx; + OPENSSL_ia32cap_P[1] = ecx; + OPENSSL_ia32cap_P[2] = extended_features[0]; + OPENSSL_ia32cap_P[3] = extended_features[1]; +} + +#endif // !OPENSSL_NO_ASM && (OPENSSL_X86 || OPENSSL_X86_64) diff -Nru temporalio-1.3.0/vendor/ring/crypto/cpu-intel.c temporalio-1.3.0/vendor/ring/crypto/cpu-intel.c --- temporalio-1.3.0/vendor/ring/crypto/cpu-intel.c 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/cpu-intel.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,203 +0,0 @@ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] */ - -#include - - -#if !defined(OPENSSL_NO_ASM) && (defined(OPENSSL_X86) || defined(OPENSSL_X86_64)) - -#if defined(_MSC_VER) && !defined(__clang__) -#pragma warning(push, 3) -#include -#include -#pragma warning(pop) -#endif - -#include "internal.h" - - -// OPENSSL_cpuid runs the cpuid instruction. |leaf| is passed in as EAX and ECX -// is set to zero. It writes EAX, EBX, ECX, and EDX to |*out_eax| through -// |*out_edx|. -static void OPENSSL_cpuid(uint32_t *out_eax, uint32_t *out_ebx, - uint32_t *out_ecx, uint32_t *out_edx, uint32_t leaf) { -#if defined(_MSC_VER) && !defined(__clang__) - int tmp[4]; - __cpuid(tmp, (int)leaf); - *out_eax = (uint32_t)tmp[0]; - *out_ebx = (uint32_t)tmp[1]; - *out_ecx = (uint32_t)tmp[2]; - *out_edx = (uint32_t)tmp[3]; -#elif defined(__pic__) && defined(OPENSSL_32_BIT) - // Inline assembly may not clobber the PIC register. For 32-bit, this is EBX. - // See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47602. - __asm__ volatile ( - "xor %%ecx, %%ecx\n" - "mov %%ebx, %%edi\n" - "cpuid\n" - "xchg %%edi, %%ebx\n" - : "=a"(*out_eax), "=D"(*out_ebx), "=c"(*out_ecx), "=d"(*out_edx) - : "a"(leaf) - ); -#else - __asm__ volatile ( - "xor %%ecx, %%ecx\n" - "cpuid\n" - : "=a"(*out_eax), "=b"(*out_ebx), "=c"(*out_ecx), "=d"(*out_edx) - : "a"(leaf) - ); -#endif -} - -// OPENSSL_xgetbv returns the value of an Intel Extended Control Register (XCR). -// Currently only XCR0 is defined by Intel so |xcr| should always be zero. -// -// See https://software.intel.com/en-us/articles/how-to-detect-new-instruction-support-in-the-4th-generation-intel-core-processor-family -static uint64_t OPENSSL_xgetbv(uint32_t xcr) { -#if defined(_MSC_VER) && !defined(__clang__) - return (uint64_t)_xgetbv(xcr); -#else - uint32_t eax, edx; - __asm__ volatile ("xgetbv" : "=a"(eax), "=d"(edx) : "c"(xcr)); - return (((uint64_t)edx) << 32) | eax; -#endif -} - -void GFp_cpuid_setup(void) { - // Determine the vendor and maximum input value. - uint32_t eax, ebx, ecx, edx; - OPENSSL_cpuid(&eax, &ebx, &ecx, &edx, 0); - - uint32_t num_ids = eax; - - int is_intel = ebx == 0x756e6547 /* Genu */ && - edx == 0x49656e69 /* ineI */ && - ecx == 0x6c65746e /* ntel */; - - uint32_t extended_features[2] = {0}; - if (num_ids >= 7) { - OPENSSL_cpuid(&eax, &ebx, &ecx, &edx, 7); - extended_features[0] = ebx; - extended_features[1] = ecx; - } - - OPENSSL_cpuid(&eax, &ebx, &ecx, &edx, 1); - - // Force the hyper-threading bit so that the more conservative path is always - // chosen. - edx |= 1u << 28; - - // Reserved bit #20 was historically repurposed to control the in-memory - // representation of RC4 state. Always set it to zero. - edx &= ~(1u << 20); - - // Reserved bit #30 is repurposed to signal an Intel CPU. - if (is_intel) { - edx |= (1u << 30); - - // Clear the XSAVE bit on Knights Landing to mimic Silvermont. This enables - // some Silvermont-specific codepaths which perform better. See OpenSSL - // commit 64d92d74985ebb3d0be58a9718f9e080a14a8e7f. - if ((eax & 0x0fff0ff0) == 0x00050670 /* Knights Landing */ || - (eax & 0x0fff0ff0) == 0x00080650 /* Knights Mill (per SDE) */) { - ecx &= ~(1u << 26); - } - } else { - edx &= ~(1u << 30); - } - - // The SDBG bit is repurposed to denote AMD XOP support. Don't ever use AMD - // XOP code paths. - ecx &= ~(1u << 11); - - uint64_t xcr0 = 0; - if (ecx & (1u << 27)) { - // XCR0 may only be queried if the OSXSAVE bit is set. - xcr0 = OPENSSL_xgetbv(0); - } - // See Intel manual, volume 1, section 14.3. - if ((xcr0 & 6) != 6) { - // YMM registers cannot be used. - ecx &= ~(1u << 28); // AVX - ecx &= ~(1u << 12); // FMA - ecx &= ~(1u << 11); // AMD XOP - // Clear AVX2 and AVX512* bits. - // - // TODO(davidben): Should bits 17 and 26-28 also be cleared? Upstream - // doesn't clear those. - extended_features[0] &= - ~((1u << 5) | (1u << 16) | (1u << 21) | (1u << 30) | (1u << 31)); - } - // See Intel manual, volume 1, section 15.2. - if ((xcr0 & 0xe6) != 0xe6) { - // Clear AVX512F. Note we don't touch other AVX512 extensions because they - // can be used with YMM. - extended_features[0] &= ~(1u << 16); - } - - // Disable ADX instructions on Knights Landing. See OpenSSL commit - // 64d92d74985ebb3d0be58a9718f9e080a14a8e7f. - if ((ecx & (1u << 26)) == 0) { - extended_features[0] &= ~(1u << 19); - } - - GFp_ia32cap_P[0] = edx; - GFp_ia32cap_P[1] = ecx; - GFp_ia32cap_P[2] = extended_features[0]; - GFp_ia32cap_P[3] = extended_features[1]; -} - -#endif // !OPENSSL_NO_ASM && (OPENSSL_X86 || OPENSSL_X86_64) diff -Nru temporalio-1.3.0/vendor/ring/crypto/crypto.c temporalio-1.3.0/vendor/ring/crypto/crypto.c --- temporalio-1.3.0/vendor/ring/crypto/crypto.c 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/crypto.c 2023-10-30 19:40:00.000000000 +0000 @@ -12,9 +12,9 @@ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#include -#include "internal.h" +#include +#if defined(OPENSSL_X86) || defined(OPENSSL_X86_64) // Our assembly does not use the GOT to reference symbols, which means // references to visible symbols will often require a TEXTREL. This is // undesirable, so all assembly-referenced symbols should be hidden. CPU @@ -26,7 +26,6 @@ #define HIDDEN __attribute__((visibility("hidden"))) #endif -#if defined(OPENSSL_X86) || defined(OPENSSL_X86_64) // This value must be explicitly initialised to zero in order to work around a // bug in libtool or the linker on OS X. // @@ -34,5 +33,5 @@ // archive, linking on OS X will fail to resolve common symbols. By // initialising it to zero, it becomes a "data symbol", which isn't so // affected. -HIDDEN uint32_t GFp_ia32cap_P[4] = {0}; +HIDDEN uint32_t OPENSSL_ia32cap_P[4] = {0}; #endif diff -Nru temporalio-1.3.0/vendor/ring/crypto/curve25519/asm/x25519-asm-arm.S temporalio-1.3.0/vendor/ring/crypto/curve25519/asm/x25519-asm-arm.S --- temporalio-1.3.0/vendor/ring/crypto/curve25519/asm/x25519-asm-arm.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/curve25519/asm/x25519-asm-arm.S 2023-10-30 19:40:00.000000000 +0000 @@ -17,28 +17,18 @@ * domain licensed but the standard ISC license is included above to keep * licensing simple. */ -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if !defined(OPENSSL_NO_ASM) && defined(__arm__) && !defined(__APPLE__) - -#if defined(BORINGSSL_PREFIX) -#include -#endif +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_ARM) && defined(__ELF__) .fpu neon .text .align 4 -.global GFp_x25519_NEON - -.hidden GFp_x25519_NEON -.type GFp_x25519_NEON, %function -GFp_x25519_NEON: - +.global x25519_NEON +.hidden x25519_NEON +.type x25519_NEON, %function +x25519_NEON: vpush {q4,q5,q6,q7} mov r12,sp sub sp,sp,#736 @@ -2131,8 +2121,4 @@ vpop {q4,q5,q6,q7} bx lr -#endif /* !OPENSSL_NO_ASM && __arm__ && !__APPLE__ */ - -#if defined(__ELF__) -.section .note.GNU-stack,"",%progbits -#endif +#endif /* !OPENSSL_NO_ASM && OPENSSL_ARM && __ELF__ */ diff -Nru temporalio-1.3.0/vendor/ring/crypto/curve25519/curve25519_64_adx.c temporalio-1.3.0/vendor/ring/crypto/curve25519/curve25519_64_adx.c --- temporalio-1.3.0/vendor/ring/crypto/curve25519/curve25519_64_adx.c 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/curve25519/curve25519_64_adx.c 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,23 @@ +/* Copyright (c) 2023, Google Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ + +#include "internal.h" +#if defined(BORINGSSL_FE25519_ADX) + +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wpedantic" +#pragma GCC diagnostic ignored "-Wsign-conversion" + +#include "../../third_party/fiat/curve25519_64_adx.h" +#endif diff -Nru temporalio-1.3.0/vendor/ring/crypto/curve25519/curve25519.c temporalio-1.3.0/vendor/ring/crypto/curve25519/curve25519.c --- temporalio-1.3.0/vendor/ring/crypto/curve25519/curve25519.c 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/curve25519/curve25519.c 2023-10-30 19:40:00.000000000 +0000 @@ -19,7 +19,7 @@ // // The field functions are shared by Ed25519 and X25519 where possible. -#include +#include #include "internal.h" #include "../internal.h" @@ -31,22 +31,28 @@ #pragma warning(disable: 4244) #endif -#if defined(__GNUC__) +#if defined(__GNUC__) || defined(__clang__) #pragma GCC diagnostic ignored "-Wconversion" #pragma GCC diagnostic ignored "-Wsign-conversion" #endif +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic ignored "-Winline" +#endif + // Various pre-computed constants. #include "./curve25519_tables.h" -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(BORINGSSL_HAS_UINT128) #if defined(__GNUC__) #pragma GCC diagnostic ignored "-Wpedantic" #endif #include "../../third_party/fiat/curve25519_64.h" +#elif defined(OPENSSL_64_BIT) +#include "../../third_party/fiat/curve25519_64_msvc.h" #else #include "../../third_party/fiat/curve25519_32.h" -#endif // BORINGSSL_CURVE25519_64BIT +#endif // Low-level intrinsic operations @@ -71,7 +77,7 @@ // Field operations. -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) // assert_fe asserts that |f| satisfies bounds: // @@ -145,7 +151,7 @@ } \ } while (0) -#endif // BORINGSSL_CURVE25519_64BIT +#endif // OPENSSL_64_BIT OPENSSL_STATIC_ASSERT(sizeof(fe) == sizeof(fe_limb_t) * FE_NUM_LIMBS, "fe_limb_t[FE_NUM_LIMBS] is inconsistent with fe"); @@ -159,7 +165,7 @@ static void fe_frombytes(fe *h, const uint8_t s[32]) { uint8_t s_copy[32]; - GFp_memcpy(s_copy, s, 32); + OPENSSL_memcpy(s_copy, s, 32); s_copy[31] &= 0x7f; fe_frombytes_strict(h, s_copy); } @@ -171,24 +177,32 @@ // h = 0 static void fe_0(fe *h) { - GFp_memset(h, 0, sizeof(fe)); + OPENSSL_memset(h, 0, sizeof(fe)); } +#if defined(OPENSSL_SMALL) + static void fe_loose_0(fe_loose *h) { - GFp_memset(h, 0, sizeof(fe_loose)); + OPENSSL_memset(h, 0, sizeof(fe_loose)); } +#endif + // h = 1 static void fe_1(fe *h) { - GFp_memset(h, 0, sizeof(fe)); + OPENSSL_memset(h, 0, sizeof(fe)); h->v[0] = 1; } +#if defined(OPENSSL_SMALL) + static void fe_loose_1(fe_loose *h) { - GFp_memset(h, 0, sizeof(fe_loose)); + OPENSSL_memset(h, 0, sizeof(fe_loose)); h->v[0] = 1; } +#endif + // h = f + g // Can overlap h with f or g. static void fe_add(fe_loose *h, const fe *f, const fe *g) { @@ -313,11 +327,6 @@ static void fe_copy_lt(fe_loose *h, const fe *f) { fe_limbs_copy(h->v, f->v); } -#if !defined(OPENSSL_SMALL) -static void fe_copy_ll(fe_loose *h, const fe_loose *f) { - fe_limbs_copy(h->v, f->v); -} -#endif // !defined(OPENSSL_SMALL) static void fe_loose_invert(fe *out, const fe_loose *z) { fe t0; @@ -392,7 +401,7 @@ fe_tobytes(s, &tight); static const uint8_t zero[32] = {0}; - return GFp_memcmp(s, zero, sizeof(zero)) != 0; + return CRYPTO_memcmp(s, zero, sizeof(zero)) != 0; } // return 1 if f is in {1,3,5,...,q-2} @@ -473,30 +482,24 @@ // Group operations. -int GFp_x25519_ge_frombytes_vartime(ge_p3 *h, const uint8_t s[32]) { +int x25519_ge_frombytes_vartime(ge_p3 *h, const uint8_t s[32]) { fe u; fe_loose v; - fe v3; + fe w; fe vxx; fe_loose check; fe_frombytes(&h->Y, s); fe_1(&h->Z); - fe_sq_tt(&v3, &h->Y); - fe_mul_ttt(&vxx, &v3, &d); - fe_sub(&v, &v3, &h->Z); // u = y^2-1 + fe_sq_tt(&w, &h->Y); + fe_mul_ttt(&vxx, &w, &d); + fe_sub(&v, &w, &h->Z); // u = y^2-1 fe_carry(&u, &v); fe_add(&v, &vxx, &h->Z); // v = dy^2+1 - fe_sq_tl(&v3, &v); - fe_mul_ttl(&v3, &v3, &v); // v3 = v^3 - fe_sq_tt(&h->X, &v3); - fe_mul_ttl(&h->X, &h->X, &v); - fe_mul_ttt(&h->X, &h->X, &u); // x = uv^7 - - fe_pow22523(&h->X, &h->X); // x = (uv^7)^((q-5)/8) - fe_mul_ttt(&h->X, &h->X, &v3); - fe_mul_ttt(&h->X, &h->X, &u); // x = uv^3(uv^7)^((q-5)/8) + fe_mul_ttl(&w, &u, &v); // w = u*v + fe_pow22523(&h->X, &w); // x = w^((q-5)/8) + fe_mul_ttt(&h->X, &h->X, &u); // x = u*w^((q-5)/8) fe_sq_tt(&vxx, &h->X); fe_mul_ttl(&vxx, &vxx, &v); @@ -532,12 +535,16 @@ fe_0(&h->T); } +#if defined(OPENSSL_SMALL) + static void ge_precomp_0(ge_precomp *h) { fe_loose_1(&h->yplusx); fe_loose_1(&h->yminusx); fe_loose_0(&h->xy2d); } +#endif + // r = p static void ge_p3_to_p2(ge_p2 *r, const ge_p3 *p) { fe_copy(&r->X, &p->X); @@ -664,16 +671,6 @@ fe_add(&r->T, &trZ, &trT); } -static uint8_t equal(signed char b, signed char c) { - uint8_t ub = b; - uint8_t uc = c; - uint8_t x = ub ^ uc; // 0: yes; 1..255: no - uint32_t y = x; // 0: yes; 1..255: no - y -= 1; // 4294967295: yes; 0..254: no - y >>= 31; // 1: yes; 0: no - return y; -} - static void cmov(ge_precomp *t, const ge_precomp *u, uint8_t b) { fe_cmov(&t->yplusx, &u->yplusx, b); fe_cmov(&t->yminusx, &u->yminusx, b); @@ -722,7 +719,7 @@ ge_precomp_0(&e); for (j = 1; j < 16; j++) { - cmov(&e, &multiples[j-1], equal(index, j)); + cmov(&e, &multiples[j-1], 1&constant_time_eq_w(index, j)); } ge_cached cached; @@ -736,41 +733,43 @@ } } -void x25519_ge_scalarmult_base(ge_p3 *h, const uint8_t a[32]) { +void x25519_ge_scalarmult_base(ge_p3 *h, const uint8_t a[32], int use_adx) { + (void)use_adx; x25519_ge_scalarmult_small_precomp(h, a, k25519SmallPrecomp); } #else -static uint8_t negative(signed char b) { - uint32_t x = b; - x >>= 31; // 1: yes; 0: no - return x; -} - -static void table_select(ge_precomp *t, int pos, signed char b) { - ge_precomp minust; - uint8_t bnegative = negative(b); - uint8_t babs = b - ((uint8_t)((-bnegative) & b) << 1); +static void table_select(ge_precomp *t, const int pos, const signed char b) { + uint8_t bnegative = constant_time_msb_w(b); + uint8_t babs = b - ((bnegative & b) << 1); + + uint8_t t_bytes[3][32] = { + {constant_time_is_zero_w(b) & 1}, {constant_time_is_zero_w(b) & 1}, {0}}; +#if defined(__clang__) // materialize for vectorization, 6% speedup + __asm__("" : "+m" (t_bytes) : /*no inputs*/); +#endif + OPENSSL_STATIC_ASSERT(sizeof(t_bytes) == sizeof(k25519Precomp[pos][0]), ""); + for (int i = 0; i < 8; i++) { + constant_time_conditional_memxor(t_bytes, k25519Precomp[pos][i], + sizeof(t_bytes), + constant_time_eq_w(babs, 1 + i)); + } - ge_precomp_0(t); - cmov(t, &k25519Precomp[pos][0], equal(babs, 1)); - cmov(t, &k25519Precomp[pos][1], equal(babs, 2)); - cmov(t, &k25519Precomp[pos][2], equal(babs, 3)); - cmov(t, &k25519Precomp[pos][3], equal(babs, 4)); - cmov(t, &k25519Precomp[pos][4], equal(babs, 5)); - cmov(t, &k25519Precomp[pos][5], equal(babs, 6)); - cmov(t, &k25519Precomp[pos][6], equal(babs, 7)); - cmov(t, &k25519Precomp[pos][7], equal(babs, 8)); - fe_copy_ll(&minust.yplusx, &t->yminusx); - fe_copy_ll(&minust.yminusx, &t->yplusx); - - // NOTE: the input table is canonical, but types don't encode it - fe tmp; - fe_carry(&tmp, &t->xy2d); - fe_neg(&minust.xy2d, &tmp); + fe yplusx, yminusx, xy2d; + fe_frombytes_strict(&yplusx, t_bytes[0]); + fe_frombytes_strict(&yminusx, t_bytes[1]); + fe_frombytes_strict(&xy2d, t_bytes[2]); + + fe_copy_lt(&t->yplusx, &yplusx); + fe_copy_lt(&t->yminusx, &yminusx); + fe_copy_lt(&t->xy2d, &xy2d); - cmov(t, &minust, bnegative); + ge_precomp minust; + fe_copy_lt(&minust.yplusx, &yminusx); + fe_copy_lt(&minust.yminusx, &yplusx); + fe_neg(&minust.xy2d, &xy2d); + cmov(t, &minust, bnegative>>7); } // h = a * B @@ -779,7 +778,20 @@ // // Preconditions: // a[31] <= 127 -void GFp_x25519_ge_scalarmult_base(ge_p3 *h, const uint8_t *a) { +void x25519_ge_scalarmult_base(ge_p3 *h, const uint8_t a[32], int use_adx) { +#if defined(BORINGSSL_FE25519_ADX) + if (use_adx) { + uint8_t t[4][32]; + x25519_ge_scalarmult_base_adx(t, a); + fiat_25519_from_bytes(h->X.v, t[0]); + fiat_25519_from_bytes(h->Y.v, t[1]); + fiat_25519_from_bytes(h->Z.v, t[2]); + fiat_25519_from_bytes(h->T.v, t[3]); + return; + } +#else + (void)use_adx; +#endif signed char e[64]; signed char carry; ge_p1p1 r; @@ -952,7 +964,7 @@ // s[0]+256*s[1]+...+256^31*s[31] = s mod l // where l = 2^252 + 27742317777372353535851937790883648493. // Overwrites s in place. -void GFp_x25519_sc_reduce(uint8_t s[64]) { +void x25519_sc_reduce(uint8_t s[64]) { int64_t s0 = 2097151 & load_3(s); int64_t s1 = 2097151 & (load_4(s + 2) >> 5); int64_t s2 = 2097151 & (load_3(s + 5) >> 2); @@ -1775,14 +1787,14 @@ } -void GFp_x25519_scalar_mult_generic_masked(uint8_t out[32], +void x25519_scalar_mult_generic_masked(uint8_t out[32], const uint8_t scalar_masked[32], const uint8_t point[32]) { fe x1, x2, z2, x3, z3, tmp0, tmp1; fe_loose x2l, z2l, x3l, tmp0l, tmp1l; uint8_t e[32]; - GFp_memcpy(e, scalar_masked, 32); + OPENSSL_memcpy(e, scalar_masked, 32); // The following implementation was transcribed to Coq and proven to // correspond to unary scalar multiplication in affine coordinates given that // x1 != 0 is the x coordinate of some point on the curve. It was also checked @@ -1853,13 +1865,14 @@ fe_tobytes(out, &x2); } -void GFp_x25519_public_from_private_generic_masked(uint8_t out_public_value[32], - const uint8_t private_key_masked[32]) { +void x25519_public_from_private_generic_masked(uint8_t out_public_value[32], + const uint8_t private_key_masked[32], + int use_adx) { uint8_t e[32]; - GFp_memcpy(e, private_key_masked, 32); + OPENSSL_memcpy(e, private_key_masked, 32); ge_p3 A; - GFp_x25519_ge_scalarmult_base(&A, e); + x25519_ge_scalarmult_base(&A, e, use_adx); // We only need the u-coordinate of the curve25519 point. The map is // u=(y+1)/(1-y). Since y=Y/Z, this gives u=(Z+Y)/(Z-Y). @@ -1870,42 +1883,43 @@ fe_loose_invert(&zminusy_inv, &zminusy); fe_mul_tlt(&zminusy_inv, &zplusy, &zminusy_inv); fe_tobytes(out_public_value, &zminusy_inv); + CONSTTIME_DECLASSIFY(out_public_value, 32); } -void GFp_x25519_fe_invert(fe *out, const fe *z) { +void x25519_fe_invert(fe *out, const fe *z) { fe_invert(out, z); } -uint8_t GFp_x25519_fe_isnegative(const fe *f) { +uint8_t x25519_fe_isnegative(const fe *f) { return (uint8_t)fe_isnegative(f); } -void GFp_x25519_fe_mul_ttt(fe *h, const fe *f, const fe *g) { +void x25519_fe_mul_ttt(fe *h, const fe *f, const fe *g) { fe_mul_ttt(h, f, g); } -void GFp_x25519_fe_neg(fe *f) { +void x25519_fe_neg(fe *f) { fe_loose t; fe_neg(&t, f); fe_carry(f, &t); } -void GFp_x25519_fe_tobytes(uint8_t s[32], const fe *h) { +void x25519_fe_tobytes(uint8_t s[32], const fe *h) { fe_tobytes(s, h); } -void GFp_x25519_ge_double_scalarmult_vartime(ge_p2 *r, const uint8_t *a, +void x25519_ge_double_scalarmult_vartime(ge_p2 *r, const uint8_t *a, const ge_p3 *A, const uint8_t *b) { ge_double_scalarmult_vartime(r, a, A, b); } -void GFp_x25519_sc_mask(uint8_t a[32]) { +void x25519_sc_mask(uint8_t a[32]) { a[0] &= 248; a[31] &= 127; a[31] |= 64; } -void GFp_x25519_sc_muladd(uint8_t *s, const uint8_t *a, const uint8_t *b, +void x25519_sc_muladd(uint8_t *s, const uint8_t *a, const uint8_t *b, const uint8_t *c) { sc_muladd(s, a, b, c); } diff -Nru temporalio-1.3.0/vendor/ring/crypto/curve25519/curve25519_tables.h temporalio-1.3.0/vendor/ring/crypto/curve25519/curve25519_tables.h --- temporalio-1.3.0/vendor/ring/crypto/curve25519/curve25519_tables.h 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/curve25519/curve25519_tables.h 2023-10-30 19:40:00.000000000 +0000 @@ -17,7 +17,7 @@ static const fe d = {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 929955233495203, 466365720129213, 1662059464998953, 2033849074728123, 1442794654840575 #else @@ -27,7 +27,7 @@ }}; static const fe sqrtm1 = {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 1718705420411056, 234908883556509, 2233514472574048, 2117202627021982, 765476049583133 #else @@ -37,7 +37,7 @@ }}; static const fe d2 = {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 1859910466990425, 932731440258426, 1072319116312658, 1815898335770999, 633789495995903 #else @@ -142,7493 +142,2885 @@ #else // k25519Precomp[i][j] = (j+1)*256^i*B -static const ge_precomp k25519Precomp[32][8] = { +const uint8_t k25519Precomp[32][8][3][32] = { { { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1288382639258501, 245678601348599, 269427782077623, - 1462984067271730, 137412439391563 -#else - 25967493, 19198397, 29566455, 3660896, 54414519, 4014786, - 27544626, 21800161, 61029707, 2047604 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 62697248952638, 204681361388450, 631292143396476, - 338455783676468, 1213667448819585 -#else - 54563134, 934261, 64385954, 3049989, 66381436, 9406985, - 12720692, 5043384, 19500929, 18085054 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 301289933810280, 1259582250014073, 1422107436869536, - 796239922652654, 1953934009299142 -#else - 58370664, 4489569, 9688441, 18769238, 10184608, 21191052, - 29287918, 11864899, 42594502, 29115885 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1380971894829527, 790832306631236, 2067202295274102, - 1995808275510000, 1566530869037010 -#else - 54292951, 20578084, 45527620, 11784319, 41753206, 30803714, - 55390960, 29739860, 66750418, 23343128 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 463307831301544, 432984605774163, 1610641361907204, - 750899048855000, 1894842303421586 -#else - 45405608, 6903824, 27185491, 6451973, 37531140, 24000426, - 51492312, 11189267, 40279186, 28235350 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 748439484463711, 1033211726465151, 1396005112841647, - 1611506220286469, 1972177495910992 -#else - 26966623, 11152617, 32442495, 15396054, 14353839, 20802097, - 63980037, 24013313, 51636816, 29387734 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1601611775252272, 1720807796594148, 1132070835939856, - 1260455018889551, 2147779492816911 -#else - 15636272, 23865875, 24204772, 25642034, 616976, 16869170, - 27787599, 18782243, 28944399, 32004408 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 316559037616741, 2177824224946892, 1459442586438991, - 1461528397712656, 751590696113597 -#else - 16568933, 4717097, 55552716, 32452109, 15682895, 21747389, - 16354576, 21778470, 7689661, 11199574 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1850748884277385, 1200145853858453, 1068094770532492, - 672251375690438, 1586055907191707 -#else - 30464137, 27578307, 55329429, 17883566, 23220364, 15915852, - 7512774, 10017326, 49359771, 23634074 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 934282339813791, 1846903124198670, 1172395437954843, - 1007037127761661, 1830588347719256 -#else - 50071967, 13921891, 10945806, 27521001, 27105051, 17470053, - 38182653, 15006022, 3284568, 27277892 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1694390458783935, 1735906047636159, 705069562067493, - 648033061693059, 696214010414170 -#else - 23599295, 25248385, 55915199, 25867015, 13236773, 10506355, - 7464579, 9656445, 13059162, 10374397 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1121406372216585, 192876649532226, 190294192191717, - 1994165897297032, 2245000007398739 -#else - 7798537, 16710257, 3033922, 2874086, 28997861, 2835604, - 32406664, 29715387, 66467155, 33453106 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 769950342298419, 132954430919746, 844085933195555, - 974092374476333, 726076285546016 -#else - 10861363, 11473154, 27284546, 1981175, 37044515, 12577860, - 32867885, 14515107, 51670560, 10819379 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 425251763115706, 608463272472562, 442562545713235, - 837766094556764, 374555092627893 -#else - 4708026, 6336745, 20377586, 9066809, 55836755, 6594695, - 41455196, 12483687, 54440373, 5581305 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1086255230780037, 274979815921559, 1960002765731872, - 929474102396301, 1190409889297339 -#else - 19563141, 16186464, 37722007, 4097518, 10237984, 29206317, - 28542349, 13850243, 43430843, 17738489 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1388594989461809, 316767091099457, 394298842192982, - 1230079486801005, 1440737038838979 -#else - 51736881, 20691677, 32573249, 4720197, 40672342, 5875510, - 47920237, 18329612, 57289923, 21468654 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 7380825640100, 146210432690483, 304903576448906, - 1198869323871120, 997689833219095 -#else - 58559652, 109982, 15149363, 2178705, 22900618, 4543417, 3044240, - 17864545, 1762327, 14866737 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1181317918772081, 114573476638901, 262805072233344, - 265712217171332, 294181933805782 -#else - 48909169, 17603008, 56635573, 1707277, 49922944, 3916100, - 38872452, 3959420, 27914454, 4383652 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 665000864555967, 2065379846933859, 370231110385876, - 350988370788628, 1233371373142985 -#else - 5153727, 9909285, 1723747, 30776558, 30523604, 5516873, - 19480852, 5230134, 43156425, 18378665 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2019367628972465, 676711900706637, 110710997811333, - 1108646842542025, 517791959672113 -#else - 36839857, 30090922, 7665485, 10083793, 28475525, 1649722, - 20654025, 16520125, 30598449, 7715701 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 965130719900578, 247011430587952, 526356006571389, - 91986625355052, 2157223321444601 -#else - 28881826, 14381568, 9657904, 3680757, 46927229, 7843315, - 35708204, 1370707, 29794553, 32145132 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2068619540119183, 1966274918058806, 957728544705549, - 729906502578991, 159834893065166 -#else - 14499471, 30824833, 33917750, 29299779, 28494861, 14271267, - 30290735, 10876454, 33954766, 2381725 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2073601412052185, 31021124762708, 264500969797082, - 248034690651703, 1030252227928288 -#else - 59913433, 30899068, 52378708, 462250, 39384538, 3941371, - 60872247, 3696004, 34808032, 15351954 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 551790716293402, 1989538725166328, 801169423371717, - 2052451893578887, 678432056995012 -#else - 27431194, 8222322, 16448760, 29646437, 48401861, 11938354, - 34147463, 30583916, 29551812, 10109425 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1368953770187805, 790347636712921, 437508475667162, - 2142576377050580, 1932081720066286 -#else - 53451805, 20399000, 35825113, 11777097, 21447386, 6519384, - 64730580, 31926875, 10092782, 28790261 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 953638594433374, 1092333936795051, 1419774766716690, - 805677984380077, 859228993502513 -#else - 27939166, 14210322, 4677035, 16277044, 44144402, 21156292, - 34600109, 12005537, 49298737, 12803509 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1200766035879111, 20142053207432, 1465634435977050, - 1645256912097844, 295121984874596 -#else - 17228999, 17892808, 65875336, 300139, 65883994, 21839654, - 30364212, 24516238, 18016356, 4397660 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1735718747031557, 1248237894295956, 1204753118328107, - 976066523550493, 65943769534592 -#else - 56150021, 25864224, 4776340, 18600194, 27850027, 17952220, - 40489757, 14544524, 49631360, 982638 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1060098822528990, 1586825862073490, 212301317240126, - 1975302711403555, 666724059764335 -#else - 29253598, 15796703, 64244882, 23645547, 10057022, 3163536, - 7332899, 29434304, 46061167, 9934962 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1091990273418756, 1572899409348578, 80968014455247, - 306009358661350, 1520450739132526 -#else - 5793284, 16271923, 42977250, 23438027, 29188559, 1206517, - 52360934, 4559894, 36984942, 22656481 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1480517209436112, 1511153322193952, 1244343858991172, - 304788150493241, 369136856496443 -#else - 39464912, 22061425, 16282656, 22517939, 28414020, 18542168, - 24191033, 4541697, 53770555, 5500567 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2151330273626164, 762045184746182, 1688074332551515, - 823046109005759, 907602769079491 -#else - 12650548, 32057319, 9052870, 11355358, 49428827, 25154267, - 49678271, 12264342, 10874051, 13524335 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2047386910586836, 168470092900250, 1552838872594810, - 340951180073789, 360819374702533 -#else - 25556948, 30508442, 714650, 2510400, 23394682, 23139102, - 33119037, 5080568, 44580805, 5376627 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1982622644432056, 2014393600336956, 128909208804214, - 1617792623929191, 105294281913815 -#else - 41020600, 29543379, 50095164, 30016803, 60382070, 1920896, - 44787559, 24106988, 4535767, 1569007 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 980234343912898, 1712256739246056, 588935272190264, - 204298813091998, 841798321043288 -#else - 64853442, 14606629, 45416424, 25514613, 28430648, 8775819, - 36614302, 3044289, 31848280, 12543772 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 197561292938973, 454817274782871, 1963754960082318, - 2113372252160468, 971377527342673 -#else - 45080285, 2943892, 35251351, 6777305, 13784462, 29262229, - 39731668, 31491700, 7718481, 14474653 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 164699448829328, 3127451757672, 1199504971548753, - 1766155447043652, 1899238924683527 -#else - 2385296, 2454213, 44477544, 46602, 62670929, 17874016, 656964, - 26317767, 24316167, 28300865 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 732262946680281, 1674412764227063, 2182456405662809, - 1350894754474250, 558458873295247 -#else - 13741529, 10911568, 33875447, 24950694, 46931033, 32521134, - 33040650, 20129900, 46379407, 8321685 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2103305098582922, 1960809151316468, 715134605001343, - 1454892949167181, 40827143824949 -#else - 21060490, 31341688, 15712756, 29218333, 1639039, 10656336, - 23845965, 21679594, 57124405, 608371 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1239289043050212, 1744654158124578, 758702410031698, - 1796762995074688, 1603056663766 -#else - 53436132, 18466845, 56219170, 25997372, 61071954, 11305546, - 1123968, 26773855, 27229398, 23887 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2232056027107988, 987343914584615, 2115594492994461, - 1819598072792159, 1119305654014850 -#else - 43864724, 33260226, 55364135, 14712570, 37643165, 31524814, - 12797023, 27114124, 65475458, 16678953 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 320153677847348, 939613871605645, 641883205761567, - 1930009789398224, 329165806634126 -#else - 37608244, 4770661, 51054477, 14001337, 7830047, 9564805, - 65600720, 28759386, 49939598, 4904952 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 980930490474130, 1242488692177893, 1251446316964684, - 1086618677993530, 1961430968465772 -#else - 24059538, 14617003, 19037157, 18514524, 19766092, 18648003, - 5169210, 16191880, 2128236, 29227599 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 276821765317453, 1536835591188030, 1305212741412361, - 61473904210175, 2051377036983058 -#else - 50127693, 4124965, 58568254, 22900634, 30336521, 19449185, - 37302527, 916032, 60226322, 30567899 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 833449923882501, 1750270368490475, 1123347002068295, - 185477424765687, 278090826653186 -#else - 44477957, 12419371, 59974635, 26081060, 50629959, 16739174, - 285431, 2763829, 15736322, 4143876 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 794524995833413, 1849907304548286, 53348672473145, - 1272368559505217, 1147304168324779 -#else - 2379333, 11839345, 62998462, 27565766, 11274297, 794957, 212801, - 18959769, 23527083, 17096164 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1504846112759364, 1203096289004681, 562139421471418, - 274333017451844, 1284344053775441 -#else - 33431108, 22423954, 49269897, 17927531, 8909498, 8376530, - 34483524, 4087880, 51919953, 19138217 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 483048732424432, 2116063063343382, 30120189902313, - 292451576741007, 1156379271702225 -#else - 1767664, 7197987, 53903638, 31531796, 54017513, 448825, 5799055, - 4357868, 62334673, 17231393 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 928372153029038, 2147692869914564, 1455665844462196, - 1986737809425946, 185207050258089 -#else - 6721966, 13833823, 43585476, 32003117, 26354292, 21691111, - 23365146, 29604700, 7390889, 2759800 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 137732961814206, 706670923917341, 1387038086865771, - 1965643813686352, 1384777115696347 -#else - 4409022, 2052381, 23373853, 10530217, 7676779, 20668478, - 21302352, 29290375, 1244379, 20634787 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 481144981981577, 2053319313589856, 2065402289827512, - 617954271490316, 1106602634668125 -#else - 62687625, 7169618, 4982368, 30596842, 30256824, 30776892, - 14086412, 9208236, 15886429, 16489664 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 696298019648792, 893299659040895, 1148636718636009, - 26734077349617, 2203955659340681 -#else - 1996056, 10375649, 14346367, 13311202, 60234729, 17116020, - 53415665, 398368, 36502409, 32841498 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 657390353372855, 998499966885562, 991893336905797, - 810470207106761, 343139804608786 -#else - 41801399, 9795879, 64331450, 14878808, 33577029, 14780362, - 13348553, 12076947, 36272402, 5113181 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 791736669492960, 934767652997115, 824656780392914, - 1759463253018643, 361530362383518 -#else - 49338080, 11797795, 31950843, 13929123, 41220562, 12288343, - 36767763, 26218045, 13847710, 5387222 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2022541353055597, 2094700262587466, 1551008075025686, - 242785517418164, 695985404963562 -#else - 48526701, 30138214, 17824842, 31213466, 22744342, 23111821, - 8763060, 3617786, 47508202, 10370990 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1287487199965223, 2215311941380308, 1552928390931986, - 1664859529680196, 1125004975265243 -#else - 20246567, 19185054, 22358228, 33010720, 18507282, 23140436, - 14554436, 24808340, 32232923, 16763880 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 677434665154918, 989582503122485, 1817429540898386, - 1052904935475344, 1143826298169798 -#else - 9648486, 10094563, 26416693, 14745928, 36734546, 27081810, - 11094160, 15689506, 3140038, 17044340 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 367266328308408, 318431188922404, 695629353755355, - 634085657580832, 24581612564426 -#else - 50948792, 5472694, 31895588, 4744994, 8823515, 10365685, - 39884064, 9448612, 38334410, 366294 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 773360688841258, 1815381330538070, 363773437667376, - 539629987070205, 783280434248437 -#else - 19153450, 11523972, 56012374, 27051289, 42461232, 5420646, - 28344573, 8041113, 719605, 11671788 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 180820816194166, 168937968377394, 748416242794470, - 1227281252254508, 1567587861004268 -#else - 8678006, 2694440, 60300850, 2517371, 4964326, 11152271, - 51675948, 18287915, 27000812, 23358879 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 478775558583645, 2062896624554807, 699391259285399, - 358099408427873, 1277310261461761 -#else - 51950941, 7134311, 8639287, 30739555, 59873175, 10421741, - 564065, 5336097, 6750977, 19033406 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1984740906540026, 1079164179400229, 1056021349262661, - 1659958556483663, 1088529069025527 -#else - 11836410, 29574944, 26297893, 16080799, 23455045, 15735944, - 1695823, 24735310, 8169719, 16220347 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 580736401511151, 1842931091388998, 1177201471228238, - 2075460256527244, 1301133425678027 -#else - 48993007, 8653646, 17578566, 27461813, 59083086, 17541668, - 55964556, 30926767, 61118155, 19388398 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1515728832059182, 1575261009617579, 1510246567196186, - 191078022609704, 116661716289141 -#else - 43800366, 22586119, 15213227, 23473218, 36255258, 22504427, - 27884328, 2847284, 2655861, 1738395 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1295295738269652, 1714742313707026, 545583042462581, - 2034411676262552, 1513248090013606 -#else - 39571412, 19301410, 41772562, 25551651, 57738101, 8129820, - 21651608, 30315096, 48021414, 22549153 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 230710545179830, 30821514358353, 760704303452229, - 390668103790604, 573437871383156 -#else - 1533110, 3437855, 23735889, 459276, 29970501, 11335377, - 26030092, 5821408, 10478196, 8544890 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1169380107545646, 263167233745614, 2022901299054448, - 819900753251120, 2023898464874585 -#else - 32173102, 17425121, 24896206, 3921497, 22579056, 30143578, - 19270448, 12217473, 17789017, 30158437 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2102254323485823, 1570832666216754, 34696906544624, - 1993213739807337, 70638552271463 -#else - 36555903, 31326030, 51530034, 23407230, 13243888, 517024, - 15479401, 29701199, 30460519, 1052596 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 894132856735058, 548675863558441, 845349339503395, - 1942269668326667, 1615682209874691 -#else - 55493970, 13323617, 32618793, 8175907, 51878691, 12596686, - 27491595, 28942073, 3179267, 24075541 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1287670217537834, 1222355136884920, 1846481788678694, - 1150426571265110, 1613523400722047 -#else - 31947050, 19187781, 62468280, 18214510, 51982886, 27514722, - 52352086, 17142691, 19072639, 24043372 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 793388516527298, 1315457083650035, 1972286999342417, - 1901825953052455, 338269477222410 -#else - 11685058, 11822410, 3158003, 19601838, 33402193, 29389366, - 5977895, 28339415, 473098, 5040608 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 550201530671806, 778605267108140, 2063911101902983, - 115500557286349, 2041641272971022 -#else - 46817982, 8198641, 39698732, 11602122, 1290375, 30754672, - 28326861, 1721092, 47550222, 30422825 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 717255318455100, 519313764361315, 2080406977303708, - 541981206705521, 774328150311600 -#else - 7881532, 10687937, 7578723, 7738378, 48157852, 31000479, - 21820785, 8076149, 39240368, 11538388 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 261715221532238, 1795354330069993, 1496878026850283, - 499739720521052, 389031152673770 -#else - 47173198, 3899860, 18283497, 26752864, 51380203, 22305220, - 8754524, 7446702, 61432810, 5797015 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1997217696294013, 1717306351628065, 1684313917746180, - 1644426076011410, 1857378133465451 -#else - 55813245, 29760862, 51326753, 25589858, 12708868, 25098233, - 2014098, 24503858, 64739691, 27677090 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1475434724792648, 76931896285979, 1116729029771667, - 2002544139318042, 725547833803938 -#else - 44636488, 21985690, 39426843, 1146374, 18956691, 16640559, - 1192730, 29840233, 15123618, 10811505 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2022306639183567, 726296063571875, 315345054448644, - 1058733329149221, 1448201136060677 -#else - 14352079, 30134717, 48166819, 10822654, 32750596, 4699007, - 67038501, 15776355, 38222085, 21579878 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1710065158525665, 1895094923036397, 123988286168546, - 1145519900776355, 1607510767693874 -#else - 38867681, 25481956, 62129901, 28239114, 29416930, 1847569, - 46454691, 17069576, 4714546, 23953777 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 561605375422540, 1071733543815037, 131496498800990, - 1946868434569999, 828138133964203 -#else - 15200332, 8368572, 19679101, 15970074, 35236190, 1959450, - 24611599, 29010600, 55362987, 12340219 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1548495173745801, 442310529226540, 998072547000384, - 553054358385281, 644824326376171 -#else - 12876937, 23074376, 33134380, 6590940, 60801088, 14872439, - 9613953, 8241152, 15370987, 9608631 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1445526537029440, 2225519789662536, 914628859347385, - 1064754194555068, 1660295614401091 -#else - 62965568, 21540023, 8446280, 33162829, 4407737, 13629032, - 59383996, 15866073, 38898243, 24740332 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1199690223111956, 24028135822341, 66638289244341, - 57626156285975, 565093967979607 -#else - 26660628, 17876777, 8393733, 358047, 59707573, 992987, 43204631, - 858696, 20571223, 8420556 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 876926774220824, 554618976488214, 1012056309841565, - 839961821554611, 1414499340307677 -#else - 14620696, 13067227, 51661590, 8264466, 14106269, 15080814, - 33531827, 12516406, 45534429, 21077682 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 703047626104145, 1266841406201770, 165556500219173, - 486991595001879, 1011325891650656 -#else - 236881, 10476226, 57258, 18877408, 6472997, 2466984, 17258519, - 7256740, 8791136, 15069930 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1622861044480487, 1156394801573634, 1869132565415504, - 327103985777730, 2095342781472284 -#else - 1276391, 24182514, 22949634, 17231625, 43615824, 27852245, - 14711874, 4874229, 36445724, 31223040 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 334886927423922, 489511099221528, 129160865966726, - 1720809113143481, 619700195649254 -#else - 5855666, 4990204, 53397016, 7294283, 59304582, 1924646, - 65685689, 25642053, 34039526, 9234252 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1646545795166119, 1758370782583567, 714746174550637, - 1472693650165135, 898994790308209 -#else - 20590503, 24535444, 31529743, 26201766, 64402029, 10650547, - 31559055, 21944845, 18979185, 13396066 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 333403773039279, 295772542452938, 1693106465353610, - 912330357530760, 471235657950362 -#else - 24474287, 4968103, 22267082, 4407354, 24063882, 25229252, - 48291976, 13594781, 33514650, 7021958 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1811196219982022, 1068969825533602, 289602974833439, - 1988956043611592, 863562343398367 -#else - 55541958, 26988926, 45743778, 15928891, 40950559, 4315420, - 41160136, 29637754, 45628383, 12868081 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 906282429780072, 2108672665779781, 432396390473936, - 150625823801893, 1708930497638539 -#else - 38473832, 13504660, 19988037, 31421671, 21078224, 6443208, - 45662757, 2244499, 54653067, 25465048 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 925664675702328, 21416848568684, 1831436641861340, - 601157008940113, 371818055044496 -#else - 36513336, 13793478, 61256044, 319135, 41385692, 27290532, - 33086545, 8957937, 51875216, 5540520 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1479786007267725, 1738881859066675, 68646196476567, - 2146507056100328, 1247662817535471 -#else - 55478669, 22050529, 58989363, 25911358, 2620055, 1022908, - 43398120, 31985447, 50980335, 18591624 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 52035296774456, 939969390708103, 312023458773250, - 59873523517659, 1231345905848899 -#else - 23152952, 775386, 27395463, 14006635, 57407746, 4649511, - 1689819, 892185, 55595587, 18348483 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 643355106415761, 290186807495774, 2013561737429023, - 319648069511546, 393736678496162 -#else - 9770129, 9586738, 26496094, 4324120, 1556511, 30004408, - 27453818, 4763127, 47929250, 5867133 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 129358342392716, 1932811617704777, 1176749390799681, - 398040349861790, 1170779668090425 -#else - 34343820, 1927589, 31726409, 28801137, 23962433, 17534932, - 27846558, 5931263, 37359161, 17445976 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2051980782668029, 121859921510665, 2048329875753063, - 1235229850149665, 519062146124755 -#else - 27461885, 30576896, 22380809, 1815854, 44075111, 30522493, - 7283489, 18406359, 47582163, 7734628 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1608170971973096, 415809060360428, 1350468408164766, - 2038620059057678, 1026904485989112 -#else - 59098600, 23963614, 55988460, 6196037, 29344158, 20123547, - 7585294, 30377806, 18549496, 15302069 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1837656083115103, 1510134048812070, 906263674192061, - 1821064197805734, 565375124676301 -#else - 34450527, 27383209, 59436070, 22502750, 6258877, 13504381, - 10458790, 27135971, 58236621, 8424745 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 578027192365650, 2034800251375322, 2128954087207123, - 478816193810521, 2196171989962750 -#else - 24687186, 8613276, 36441818, 30320886, 1863891, 31723888, - 19206233, 7134917, 55824382, 32725512 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1633188840273139, 852787172373708, 1548762607215796, - 1266275218902681, 1107218203325133 -#else - 11334899, 24336410, 8025292, 12707519, 17523892, 23078361, - 10243737, 18868971, 62042829, 16498836 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 462189358480054, 1784816734159228, 1611334301651368, - 1303938263943540, 707589560319424 -#else - 8911542, 6887158, 57524604, 26595841, 11145640, 24010752, - 17303924, 19430194, 6536640, 10543906 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1038829280972848, 38176604650029, 753193246598573, - 1136076426528122, 595709990562434 -#else - 38162480, 15479762, 49642029, 568875, 65611181, 11223453, - 64439674, 16928857, 39873154, 8876770 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1408451820859834, 2194984964010833, 2198361797561729, - 1061962440055713, 1645147963442934 -#else - 41365946, 20987567, 51458897, 32707824, 34082177, 32758143, - 33627041, 15824473, 66504438, 24514614 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 4701053362120, 1647641066302348, 1047553002242085, - 1923635013395977, 206970314902065 -#else - 10330056, 70051, 7957388, 24551765, 9764901, 15609756, 27698697, - 28664395, 1657393, 3084098 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1750479161778571, 1362553355169293, 1891721260220598, - 966109370862782, 1024913988299801 -#else - 10477963, 26084172, 12119565, 20303627, 29016246, 28188843, - 31280318, 14396151, 36875289, 15272408 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 212699049131723, 1117950018299775, 1873945661751056, - 1403802921984058, 130896082652698 -#else - 54820555, 3169462, 28813183, 16658753, 25116432, 27923966, - 41934906, 20918293, 42094106, 1950503 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 636808533673210, 1262201711667560, 390951380330599, - 1663420692697294, 561951321757406 -#else - 40928506, 9489186, 11053416, 18808271, 36055143, 5825629, - 58724558, 24786899, 15341278, 8373727 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 520731594438141, 1446301499955692, 273753264629267, - 1565101517999256, 1019411827004672 -#else - 28685821, 7759505, 52730348, 21551571, 35137043, 4079241, - 298136, 23321830, 64230656, 15190419 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 926527492029409, 1191853477411379, 734233225181171, - 184038887541270, 1790426146325343 -#else - 34175969, 13806335, 52771379, 17760000, 43104243, 10940927, - 8669718, 2742393, 41075551, 26679428 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1464651961852572, 1483737295721717, 1519450561335517, - 1161429831763785, 405914998179977 -#else - 65528476, 21825014, 41129205, 22109408, 49696989, 22641577, - 9291593, 17306653, 54954121, 6048604 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 996126634382301, 796204125879525, 127517800546509, - 344155944689303, 615279846169038 -#else - 36803549, 14843443, 1539301, 11864366, 20201677, 1900163, - 13934231, 5128323, 11213262, 9168384 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 738724080975276, 2188666632415296, 1961313708559162, - 1506545807547587, 1151301638969740 -#else - 40828332, 11007846, 19408960, 32613674, 48515898, 29225851, - 62020803, 22449281, 20470156, 17155731 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 622917337413835, 1218989177089035, 1284857712846592, - 970502061709359, 351025208117090 -#else - 43972811, 9282191, 14855179, 18164354, 59746048, 19145871, - 44324911, 14461607, 14042978, 5230683 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2067814584765580, 1677855129927492, 2086109782475197, - 235286517313238, 1416314046739645 -#else - 29969548, 30812838, 50396996, 25001989, 9175485, 31085458, - 21556950, 3506042, 61174973, 21104723 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 586844262630358, 307444381952195, 458399356043426, - 602068024507062, 1028548203415243 -#else - 63964118, 8744660, 19704003, 4581278, 46678178, 6830682, - 45824694, 8971512, 38569675, 15326562 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 678489922928203, 2016657584724032, 90977383049628, - 1026831907234582, 615271492942522 -#else - 47644235, 10110287, 49846336, 30050539, 43608476, 1355668, - 51585814, 15300987, 46594746, 9168259 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 301225714012278, 1094837270268560, 1202288391010439, - 644352775178361, 1647055902137983 -#else - 61755510, 4488612, 43305616, 16314346, 7780487, 17915493, - 38160505, 9601604, 33087103, 24543045 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1210746697896478, 1416608304244708, 686487477217856, - 1245131191434135, 1051238336855737 -#else - 47665694, 18041531, 46311396, 21109108, 37284416, 10229460, - 39664535, 18553900, 61111993, 15664671 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1135604073198207, 1683322080485474, 769147804376683, - 2086688130589414, 900445683120379 -#else - 23294591, 16921819, 44458082, 25083453, 27844203, 11461195, - 13099750, 31094076, 18151675, 13417686 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1971518477615628, 401909519527336, 448627091057375, - 1409486868273821, 1214789035034363 -#else - 42385932, 29377914, 35958184, 5988918, 40250079, 6685064, - 1661597, 21002991, 15271675, 18101767 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1364039144731711, 1897497433586190, 2203097701135459, - 145461396811251, 1349844460790699 -#else - 11433023, 20325767, 8239630, 28274915, 65123427, 32828713, - 48410099, 2167543, 60187563, 20114249 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1045230323257973, 818206601145807, 630513189076103, - 1672046528998132, 807204017562437 -#else - 35672693, 15575145, 30436815, 12192228, 44645511, 9395378, - 57191156, 24915434, 12215109, 12028277 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 439961968385997, 386362664488986, 1382706320807688, - 309894000125359, 2207801346498567 -#else - 14098381, 6555944, 23007258, 5757252, 51681032, 20603929, - 30123439, 4617780, 50208775, 32898803 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1229004686397588, 920643968530863, 123975893911178, - 681423993215777, 1400559197080973 -#else - 63082644, 18313596, 11893167, 13718664, 52299402, 1847384, - 51288865, 10154008, 23973261, 20869958 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2003766096898049, 170074059235165, 1141124258967971, - 1485419893480973, 1573762821028725 -#else - 40577025, 29858441, 65199965, 2534300, 35238307, 17004076, - 18341389, 22134481, 32013173, 23450893 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 729905708611432, 1270323270673202, 123353058984288, - 426460209632942, 2195574535456672 -#else - 41629544, 10876442, 55337778, 18929291, 54739296, 1838103, - 21911214, 6354752, 4425632, 32716610 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1271140255321235, 2044363183174497, 52125387634689, - 1445120246694705, 942541986339084 -#else - 56675475, 18941465, 22229857, 30463385, 53917697, 776728, - 49693489, 21533969, 4725004, 14044970 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1761608437466135, 583360847526804, 1586706389685493, - 2157056599579261, 1170692369685772 -#else - 19268631, 26250011, 1555348, 8692754, 45634805, 23643767, - 6347389, 32142648, 47586572, 17444675 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 871476219910823, 1878769545097794, 2241832391238412, - 548957640601001, 690047440233174 -#else - 42244775, 12986007, 56209986, 27995847, 55796492, 33405905, - 19541417, 8180106, 9282262, 10282508 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 297194732135507, 1366347803776820, 1301185512245601, - 561849853336294, 1533554921345731 -#else - 40903763, 4428546, 58447668, 20360168, 4098401, 19389175, - 15522534, 8372215, 5542595, 22851749 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 999628998628371, 1132836708493400, 2084741674517453, - 469343353015612, 678782988708035 -#else - 56546323, 14895632, 26814552, 16880582, 49628109, 31065071, - 64326972, 6993760, 49014979, 10114654 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2189427607417022, 699801937082607, 412764402319267, - 1478091893643349, 2244675696854460 -#else - 47001790, 32625013, 31422703, 10427861, 59998115, 6150668, - 38017109, 22025285, 25953724, 33448274 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1712292055966563, 204413590624874, 1405738637332841, - 408981300829763, 861082219276721 -#else - 62874467, 25515139, 57989738, 3045999, 2101609, 20947138, - 19390019, 6094296, 63793585, 12831124 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 508561155940631, 966928475686665, 2236717801150132, - 424543858577297, 2089272956986143 -#else - 51110167, 7578151, 5310217, 14408357, 33560244, 33329692, - 31575953, 6326196, 7381791, 31132593 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 221245220129925, 1156020201681217, 491145634799213, - 542422431960839, 828100817819207 -#else - 46206085, 3296810, 24736065, 17226043, 18374253, 7318640, - 6295303, 8082724, 51746375, 12339663 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 153756971240384, 1299874139923977, 393099165260502, - 1058234455773022, 996989038681183 -#else - 27724736, 2291157, 6088201, 19369634, 1792726, 5857634, - 13848414, 15768922, 25091167, 14856294 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 559086812798481, 573177704212711, 1629737083816402, - 1399819713462595, 1646954378266038 -#else - 48242193, 8331042, 24373479, 8541013, 66406866, 24284974, - 12927299, 20858939, 44926390, 24541532 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1887963056288059, 228507035730124, 1468368348640282, - 930557653420194, 613513962454686 -#else - 55685435, 28132841, 11632844, 3405020, 30536730, 21880393, - 39848098, 13866389, 30146206, 9142070 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1224529808187553, 1577022856702685, 2206946542980843, - 625883007765001, 279930793512158 -#else - 3924129, 18246916, 53291741, 23499471, 12291819, 32886066, - 39406089, 9326383, 58871006, 4171293 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1076287717051609, 1114455570543035, 187297059715481, - 250446884292121, 1885187512550540 -#else - 51186905, 16037936, 6713787, 16606682, 45496729, 2790943, - 26396185, 3731949, 345228, 28091483 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 902497362940219, 76749815795675, 1657927525633846, - 1420238379745202, 1340321636548352 -#else - 45781307, 13448258, 25284571, 1143661, 20614966, 24705045, - 2031538, 21163201, 50855680, 19972348 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1129576631190784, 1281994010027327, 996844254743018, - 257876363489249, 1150850742055018 -#else - 31016192, 16832003, 26371391, 19103199, 62081514, 14854136, - 17477601, 3842657, 28012650, 17149012 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 628740660038789, 1943038498527841, 467786347793886, - 1093341428303375, 235413859513003 -#else - 62033029, 9368965, 58546785, 28953529, 51858910, 6970559, - 57918991, 16292056, 58241707, 3507939 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 237425418909360, 469614029179605, 1512389769174935, - 1241726368345357, 441602891065214 -#else - 29439664, 3537914, 23333589, 6997794, 49553303, 22536363, - 51899661, 18503164, 57943934, 6580395 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1736417953058555, 726531315520508, 1833335034432527, - 1629442561574747, 624418919286085 -#else - 54923003, 25874643, 16438268, 10826160, 58412047, 27318820, - 17860443, 24280586, 65013061, 9304566 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1960754663920689, 497040957888962, 1909832851283095, - 1271432136996826, 2219780368020940 -#else - 20714545, 29217521, 29088194, 7406487, 11426967, 28458727, - 14792666, 18945815, 5289420, 33077305 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1537037379417136, 1358865369268262, 2130838645654099, - 828733687040705, 1999987652890901 -#else - 50443312, 22903641, 60948518, 20248671, 9192019, 31751970, - 17271489, 12349094, 26939669, 29802138 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 629042105241814, 1098854999137608, 887281544569320, - 1423102019874777, 7911258951561 -#else - 54218966, 9373457, 31595848, 16374215, 21471720, 13221525, - 39825369, 21205872, 63410057, 117886 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1811562332665373, 1501882019007673, 2213763501088999, - 359573079719636, 36370565049116 -#else - 22263325, 26994382, 3984569, 22379786, 51994855, 32987646, - 28311252, 5358056, 43789084, 541963 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 218907117361280, 1209298913016966, 1944312619096112, - 1130690631451061, 1342327389191701 -#else - 16259200, 3261970, 2309254, 18019958, 50223152, 28972515, - 24134069, 16848603, 53771797, 20002236 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1369976867854704, 1396479602419169, 1765656654398856, - 2203659200586299, 998327836117241 -#else - 9378160, 20414246, 44262881, 20809167, 28198280, 26310334, - 64709179, 32837080, 690425, 14876244 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2230701885562825, 1348173180338974, 2172856128624598, - 1426538746123771, 444193481326151 -#else - 24977353, 33240048, 58884894, 20089345, 28432342, 32378079, - 54040059, 21257083, 44727879, 6618998 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 784210426627951, 918204562375674, 1284546780452985, - 1324534636134684, 1872449409642708 -#else - 65570671, 11685645, 12944378, 13682314, 42719353, 19141238, - 8044828, 19737104, 32239828, 27901670 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 319638829540294, 596282656808406, 2037902696412608, - 1557219121643918, 341938082688094 -#else - 48505798, 4762989, 66182614, 8885303, 38696384, 30367116, - 9781646, 23204373, 32779358, 5095274 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1901860206695915, 2004489122065736, 1625847061568236, - 973529743399879, 2075287685312905 -#else - 34100715, 28339925, 34843976, 29869215, 9460460, 24227009, - 42507207, 14506723, 21639561, 30924196 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1371853944110545, 1042332820512553, 1949855697918254, - 1791195775521505, 37487364849293 -#else - 50707921, 20442216, 25239337, 15531969, 3987758, 29055114, - 65819361, 26690896, 17874573, 558605 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 687200189577855, 1082536651125675, 644224940871546, - 340923196057951, 343581346747396 -#else - 53508735, 10240080, 9171883, 16131053, 46239610, 9599699, - 33499487, 5080151, 2085892, 5119761 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2082717129583892, 27829425539422, 145655066671970, - 1690527209845512, 1865260509673478 -#else - 44903700, 31034903, 50727262, 414690, 42089314, 2170429, - 30634760, 25190818, 35108870, 27794547 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1059729620568824, 2163709103470266, 1440302280256872, - 1769143160546397, 869830310425069 -#else - 60263160, 15791201, 8550074, 32241778, 29928808, 21462176, - 27534429, 26362287, 44757485, 12961481 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1609516219779025, 777277757338817, 2101121130363987, - 550762194946473, 1905542338659364 -#else - 42616785, 23983660, 10368193, 11582341, 43711571, 31309144, - 16533929, 8206996, 36914212, 28394793 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2024821921041576, 426948675450149, 595133284085473, - 471860860885970, 600321679413000 -#else - 55987368, 30172197, 2307365, 6362031, 66973409, 8868176, - 50273234, 7031274, 7589640, 8945490 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 598474602406721, 1468128276358244, 1191923149557635, - 1501376424093216, 1281662691293476 -#else - 34956097, 8917966, 6661220, 21876816, 65916803, 17761038, - 7251488, 22372252, 24099108, 19098262 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1721138489890707, 1264336102277790, 433064545421287, - 1359988423149466, 1561871293409447 -#else - 5019539, 25646962, 4244126, 18840076, 40175591, 6453164, - 47990682, 20265406, 60876967, 23273695 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 719520245587143, 393380711632345, 132350400863381, - 1543271270810729, 1819543295798660 -#else - 10853575, 10721687, 26480089, 5861829, 44113045, 1972174, - 65242217, 22996533, 63745412, 27113307 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 396397949784152, 1811354474471839, 1362679985304303, - 2117033964846756, 498041172552279 -#else - 50106456, 5906789, 221599, 26991285, 7828207, 20305514, - 24362660, 31546264, 53242455, 7421391 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1812471844975748, 1856491995543149, 126579494584102, - 1036244859282620, 1975108050082550 -#else - 8139908, 27007935, 32257645, 27663886, 30375718, 1886181, - 45933756, 15441251, 28826358, 29431403 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 650623932407995, 1137551288410575, 2125223403615539, - 1725658013221271, 2134892965117796 -#else - 6267067, 9695052, 7709135, 16950835, 34239795, 31668296, - 14795159, 25714308, 13746020, 31812384 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 522584000310195, 1241762481390450, 1743702789495384, - 2227404127826575, 1686746002148897 -#else - 28584883, 7787108, 60375922, 18503702, 22846040, 25983196, - 63926927, 33190907, 4771361, 25134474 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 427904865186312, 1703211129693455, 1585368107547509, - 1436984488744336, 761188534613978 -#else - 24949256, 6376279, 39642383, 25379823, 48462709, 23623825, - 33543568, 21412737, 3569626, 11342593 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 318101947455002, 248138407995851, 1481904195303927, - 309278454311197, 1258516760217879 -#else - 26514970, 4740088, 27912651, 3697550, 19331575, 22082093, - 6809885, 4608608, 7325975, 18753361 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1275068538599310, 513726919533379, 349926553492294, - 688428871968420, 1702400196000666 -#else - 55490446, 19000001, 42787651, 7655127, 65739590, 5214311, - 39708324, 10258389, 49462170, 25367739 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1061864036265233, 961611260325381, 321859632700838, - 1045600629959517, 1985130202504038 -#else - 11431185, 15823007, 26570245, 14329124, 18029990, 4796082, - 35662685, 15580663, 9280358, 29580745 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1558816436882417, 1962896332636523, 1337709822062152, - 1501413830776938, 294436165831932 -#else - 66948081, 23228174, 44253547, 29249434, 46247496, 19933429, - 34297962, 22372809, 51563772, 4387440 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 818359826554971, 1862173000996177, 626821592884859, - 573655738872376, 1749691246745455 -#else - 46309467, 12194511, 3937617, 27748540, 39954043, 9340369, - 42594872, 8548136, 20617071, 26072431 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1988022651432119, 1082111498586040, 1834020786104821, - 1454826876423687, 692929915223122 -#else - 66170039, 29623845, 58394552, 16124717, 24603125, 27329039, - 53333511, 21678609, 24345682, 10325460 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2146513703733331, 584788900394667, 464965657279958, - 2183973639356127, 238371159456790 -#else - 47253587, 31985546, 44906155, 8714033, 14007766, 6928528, - 16318175, 32543743, 4766742, 3552007 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1129007025494441, 2197883144413266, 265142755578169, - 971864464758890, 1983715884903702 -#else - 45357481, 16823515, 1351762, 32751011, 63099193, 3950934, - 3217514, 14481909, 10988822, 29559670 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1291366624493075, 381456718189114, 1711482489312444, - 1815233647702022, 892279782992467 -#else - 15564307, 19242862, 3101242, 5684148, 30446780, 25503076, - 12677126, 27049089, 58813011, 13296004 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 444548969917454, 1452286453853356, 2113731441506810, - 645188273895859, 810317625309512 -#else - 57666574, 6624295, 36809900, 21640754, 62437882, 31497052, - 31521203, 9614054, 37108040, 12074673 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2242724082797924, 1373354730327868, 1006520110883049, - 2147330369940688, 1151816104883620 -#else - 4771172, 33419193, 14290748, 20464580, 27992297, 14998318, - 65694928, 31997715, 29832612, 17163397 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1745720200383796, 1911723143175317, 2056329390702074, - 355227174309849, 879232794371100 -#else - 7064884, 26013258, 47946901, 28486894, 48217594, 30641695, - 25825241, 5293297, 39986204, 13101589 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 163723479936298, 115424889803150, 1156016391581227, - 1894942220753364, 1970549419986329 -#else - 64810282, 2439669, 59642254, 1719964, 39841323, 17225986, - 32512468, 28236839, 36752793, 29363474 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 681981452362484, 267208874112496, 1374683991933094, - 638600984916117, 646178654558546 -#else - 37102324, 10162315, 33928688, 3981722, 50626726, 20484387, - 14413973, 9515896, 19568978, 9628812 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 13378654854251, 106237307029567, 1944412051589651, - 1841976767925457, 230702819835573 -#else - 33053803, 199357, 15894591, 1583059, 27380243, 28973997, - 49269969, 27447592, 60817077, 3437739 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 260683893467075, 854060306077237, 913639551980112, - 4704576840123, 280254810808712 -#else - 48129987, 3884492, 19469877, 12726490, 15913552, 13614290, - 44147131, 70103, 7463304, 4176122 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 715374893080287, 1173334812210491, 1806524662079626, - 1894596008000979, 398905715033393 -#else - 39984863, 10659916, 11482427, 17484051, 12771466, 26919315, - 34389459, 28231680, 24216881, 5944158 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 500026409727661, 1596431288195371, 1420380351989370, - 985211561521489, 392444930785633 -#else - 8894125, 7450974, 64444715, 23788679, 39028346, 21165316, - 19345745, 14680796, 11632993, 5847885 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2096421546958141, 1922523000950363, 789831022876840, - 427295144688779, 320923973161730 -#else - 26942781, 31239115, 9129563, 28647825, 26024104, 11769399, - 55590027, 6367193, 57381634, 4782139 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1927770723575450, 1485792977512719, 1850996108474547, - 551696031508956, 2126047405475647 -#else - 19916442, 28726022, 44198159, 22140040, 25606323, 27581991, - 33253852, 8220911, 6358847, 31680575 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2112099158080148, 742570803909715, 6484558077432, - 1951119898618916, 93090382703416 -#else - 801428, 31472730, 16569427, 11065167, 29875704, 96627, 7908388, - 29073952, 53570360, 1387154 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 383905201636970, 859946997631870, 855623867637644, - 1017125780577795, 794250831877809 -#else - 19646058, 5720633, 55692158, 12814208, 11607948, 12749789, - 14147075, 15156355, 45242033, 11835259 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 77571826285752, 999304298101753, 487841111777762, - 1038031143212339, 339066367948762 -#else - 19299512, 1155910, 28703737, 14890794, 2925026, 7269399, - 26121523, 15467869, 40548314, 5052482 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 674994775520533, 266035846330789, 826951213393478, - 1405007746162285, 1781791018620876 -#else - 64091413, 10058205, 1980837, 3964243, 22160966, 12322533, - 60677741, 20936246, 12228556, 26550755 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1001412661522686, 348196197067298, 1666614366723946, - 888424995032760, 580747687801357 -#else - 32944382, 14922211, 44263970, 5188527, 21913450, 24834489, - 4001464, 13238564, 60994061, 8653814 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1939560076207777, 1409892634407635, 552574736069277, - 383854338280405, 190706709864139 -#else - 22865569, 28901697, 27603667, 21009037, 14348957, 8234005, - 24808405, 5719875, 28483275, 2841751 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2177087163428741, 1439255351721944, 1208070840382793, - 2230616362004769, 1396886392021913 -#else - 50687877, 32441126, 66781144, 21446575, 21886281, 18001658, - 65220897, 33238773, 19932057, 20815229 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 676962063230039, 1880275537148808, 2046721011602706, - 888463247083003, 1318301552024067 -#else - 55452759, 10087520, 58243976, 28018288, 47830290, 30498519, - 3999227, 13239134, 62331395, 19644223 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1466980508178206, 617045217998949, 652303580573628, - 757303753529064, 207583137376902 -#else - 1382174, 21859713, 17266789, 9194690, 53784508, 9720080, - 20403944, 11284705, 53095046, 3093229 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1511056752906902, 105403126891277, 493434892772846, - 1091943425335976, 1802717338077427 -#else - 16650902, 22516500, 66044685, 1570628, 58779118, 7352752, - 66806440, 16271224, 43059443, 26862581 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1853982405405128, 1878664056251147, 1528011020803992, - 1019626468153565, 1128438412189035 -#else - 45197768, 27626490, 62497547, 27994275, 35364760, 22769138, - 24123613, 15193618, 45456747, 16815042 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1963939888391106, 293456433791664, 697897559513649, - 985882796904380, 796244541237972 -#else - 57172930, 29264984, 41829040, 4372841, 2087473, 10399484, - 31870908, 14690798, 17361620, 11864968 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 416770998629779, 389655552427054, 1314476859406756, - 1749382513022778, 1161905598739491 -#else - 55801235, 6210371, 13206574, 5806320, 38091172, 19587231, - 54777658, 26067830, 41530403, 17313742 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1428358296490651, 1027115282420478, 304840698058337, - 441410174026628, 1819358356278573 -#else - 14668443, 21284197, 26039038, 15305210, 25515617, 4542480, - 10453892, 6577524, 9145645, 27110552 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 204943430200135, 1554861433819175, 216426658514651, - 264149070665950, 2047097371738319 -#else - 5974855, 3053895, 57675815, 23169240, 35243739, 3225008, - 59136222, 3936127, 61456591, 30504127 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1934415182909034, 1393285083565062, 516409331772960, - 1157690734993892, 121039666594268 -#else - 30625386, 28825032, 41552902, 20761565, 46624288, 7695098, - 17097188, 17250936, 39109084, 1803631 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 662035583584445, 286736105093098, 1131773000510616, - 818494214211439, 472943792054479 -#else - 63555773, 9865098, 61880298, 4272700, 61435032, 16864731, - 14911343, 12196514, 45703375, 7047411 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 665784778135882, 1893179629898606, 808313193813106, - 276797254706413, 1563426179676396 -#else - 20093258, 9920966, 55970670, 28210574, 13161586, 12044805, - 34252013, 4124600, 34765036, 23296865 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 945205108984232, 526277562959295, 1324180513733566, - 1666970227868664, 153547609289173 -#else - 46320040, 14084653, 53577151, 7842146, 19119038, 19731827, - 4752376, 24839792, 45429205, 2288037 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2031433403516252, 203996615228162, 170487168837083, - 981513604791390, 843573964916831 -#else - 40289628, 30270716, 29965058, 3039786, 52635099, 2540456, - 29457502, 14625692, 42289247, 12570231 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1476570093962618, 838514669399805, 1857930577281364, - 2017007352225784, 317085545220047 -#else - 66045306, 22002608, 16920317, 12494842, 1278292, 27685323, - 45948920, 30055751, 55134159, 4724942 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1461557121912842, 1600674043318359, 2157134900399597, - 1670641601940616, 127765583803283 -#else - 17960970, 21778898, 62967895, 23851901, 58232301, 32143814, - 54201480, 24894499, 37532563, 1903855 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1293543509393474, 2143624609202546, 1058361566797508, - 214097127393994, 946888515472729 -#else - 23134274, 19275300, 56426866, 31942495, 20684484, 15770816, - 54119114, 3190295, 26955097, 14109738 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 357067959932916, 1290876214345711, 521245575443703, - 1494975468601005, 800942377643885 -#else - 15308788, 5320727, 36995055, 19235554, 22902007, 7767164, - 29425325, 22276870, 31960941, 11934971 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 566116659100033, 820247422481740, 994464017954148, - 327157611686365, 92591318111744 -#else - 39713153, 8435795, 4109644, 12222639, 42480996, 14818668, - 20638173, 4875028, 10491392, 1379718 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 617256647603209, 1652107761099439, 1857213046645471, - 1085597175214970, 817432759830522 -#else - 53949449, 9197840, 3875503, 24618324, 65725151, 27674630, - 33518458, 16176658, 21432314, 12180697 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 771808161440705, 1323510426395069, 680497615846440, - 851580615547985, 1320806384849017 -#else - 55321537, 11500837, 13787581, 19721842, 44678184, 10140204, - 1465425, 12689540, 56807545, 19681548 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1219260086131915, 647169006596815, 79601124759706, - 2161724213426748, 404861897060198 -#else - 5414091, 18168391, 46101199, 9643569, 12834970, 1186149, - 64485948, 32212200, 26128230, 6032912 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1327968293887866, 1335500852943256, 1401587164534264, - 558137311952440, 1551360549268902 -#else - 40771450, 19788269, 32496024, 19900513, 17847800, 20885276, - 3604024, 8316894, 41233830, 23117073 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 417621685193956, 1429953819744454, 396157358457099, - 1940470778873255, 214000046234152 -#else - 3296484, 6223048, 24680646, 21307972, 44056843, 5903204, - 58246567, 28915267, 12376616, 3188849 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1268047918491973, 2172375426948536, 1533916099229249, - 1761293575457130, 1590622667026765 -#else - 29190469, 18895386, 27549112, 32370916, 3520065, 22857131, - 32049514, 26245319, 50999629, 23702124 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1627072914981959, 2211603081280073, 1912369601616504, - 1191770436221309, 2187309757525860 -#else - 52364359, 24245275, 735817, 32955454, 46701176, 28496527, - 25246077, 17758763, 18640740, 32593455 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1149147819689533, 378692712667677, 828475842424202, - 2218619146419342, 70688125792186 -#else - 60180029, 17123636, 10361373, 5642961, 4910474, 12345252, - 35470478, 33060001, 10530746, 1053335 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1299739417079761, 1438616663452759, 1536729078504412, - 2053896748919838, 1008421032591246 -#else - 37842897, 19367626, 53570647, 21437058, 47651804, 22899047, - 35646494, 30605446, 24018830, 15026644 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2040723824657366, 399555637875075, 632543375452995, - 872649937008051, 1235394727030233 -#else - 44516310, 30409154, 64819587, 5953842, 53668675, 9425630, - 25310643, 13003497, 64794073, 18408815 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2211311599327900, 2139787259888175, 938706616835350, - 12609661139114, 2081897930719789 -#else - 39688860, 32951110, 59064879, 31885314, 41016598, 13987818, - 39811242, 187898, 43942445, 31022696 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1324994503390450, 336982330582631, 1183998925654177, - 1091654665913274, 48727673971319 -#else - 45364466, 19743956, 1844839, 5021428, 56674465, 17642958, - 9716666, 16266922, 62038647, 726098 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1845522914617879, 1222198248335542, 150841072760134, - 1927029069940982, 1189913404498011 -#else - 29370903, 27500434, 7334070, 18212173, 9385286, 2247707, - 53446902, 28714970, 30007387, 17731091 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1079559557592645, 2215338383666441, 1903569501302605, - 49033973033940, 305703433934152 -#else - 66172485, 16086690, 23751945, 33011114, 65941325, 28365395, - 9137108, 730663, 9835848, 4555336 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 94653405416909, 1386121349852999, 1062130477891762, - 36553947479274, 833669648948846 -#else - 43732429, 1410445, 44855111, 20654817, 30867634, 15826977, - 17693930, 544696, 55123566, 12422645 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1432015813136298, 440364795295369, 1395647062821501, - 1976874522764578, 934452372723352 -#else - 31117226, 21338698, 53606025, 6561946, 57231997, 20796761, - 61990178, 29457725, 29120152, 13924425 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1296625309219774, 2068273464883862, 1858621048097805, - 1492281814208508, 2235868981918946 -#else - 49707966, 19321222, 19675798, 30819676, 56101901, 27695611, - 57724924, 22236731, 7240930, 33317044 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1490330266465570, 1858795661361448, 1436241134969763, - 294573218899647, 1208140011028933 -#else - 35747106, 22207651, 52101416, 27698213, 44655523, 21401660, - 1222335, 4389483, 3293637, 18002689 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1282462923712748, 741885683986255, 2027754642827561, - 518989529541027, 1826610009555945 -#else - 50424044, 19110186, 11038543, 11054958, 53307689, 30215898, - 42789283, 7733546, 12796905, 27218610 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1525827120027511, 723686461809551, 1597702369236987, - 244802101764964, 1502833890372311 -#else - 58349431, 22736595, 41689999, 10783768, 36493307, 23807620, - 38855524, 3647835, 3222231, 22393970 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 113622036244513, 1233740067745854, 674109952278496, - 2114345180342965, 166764512856263 -#else - 18606113, 1693100, 41660478, 18384159, 4112352, 10045021, - 23603893, 31506198, 59558087, 2484984 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2041668749310338, 2184405322203901, 1633400637611036, - 2110682505536899, 2048144390084644 -#else - 9255298, 30423235, 54952701, 32550175, 13098012, 24339566, - 16377219, 31451620, 47306788, 30519729 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 503058759232932, 760293024620937, 2027152777219493, - 666858468148475, 1539184379870952 -#else - 44379556, 7496159, 61366665, 11329248, 19991973, 30206930, - 35390715, 9936965, 37011176, 22935634 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1916168475367211, 915626432541343, 883217071712575, - 363427871374304, 1976029821251593 -#else - 21878571, 28553135, 4338335, 13643897, 64071999, 13160959, - 19708896, 5415497, 59748361, 29445138 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 678039535434506, 570587290189340, 1605302676614120, - 2147762562875701, 1706063797091704 -#else - 27736842, 10103576, 12500508, 8502413, 63695848, 23920873, - 10436917, 32004156, 43449720, 25422331 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1439489648586438, 2194580753290951, 832380563557396, - 561521973970522, 584497280718389 -#else - 19492550, 21450067, 37426887, 32701801, 63900692, 12403436, - 30066266, 8367329, 13243957, 8709688 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 187989455492609, 681223515948275, 1933493571072456, - 1872921007304880, 488162364135671 -#else - 12015105, 2801261, 28198131, 10151021, 24818120, 28811299, - 55914672, 27908697, 5150967, 7274186 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1413466089534451, 410844090765630, 1397263346404072, - 408227143123410, 1594561803147811 -#else - 2831347, 21062286, 1478974, 6122054, 23825128, 20820846, - 31097298, 6083058, 31021603, 23760822 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2102170800973153, 719462588665004, 1479649438510153, - 1097529543970028, 1302363283777685 -#else - 64578913, 31324785, 445612, 10720828, 53259337, 22048494, - 43601132, 16354464, 15067285, 19406725 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 942065717847195, 1069313679352961, 2007341951411051, - 70973416446291, 1419433790163706 -#else - 7840923, 14037873, 33744001, 15934015, 66380651, 29911725, - 21403987, 1057586, 47729402, 21151211 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1146565545556377, 1661971299445212, 406681704748893, - 564452436406089, 1109109865829139 -#else - 915865, 17085158, 15608284, 24765302, 42751837, 6060029, - 49737545, 8410996, 59888403, 16527024 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2214421081775077, 1165671861210569, 1890453018796184, - 3556249878661, 442116172656317 -#else - 32922597, 32997445, 20336073, 17369864, 10903704, 28169945, - 16957573, 52992, 23834301, 6588044 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 753830546620811, 1666955059895019, 1530775289309243, - 1119987029104146, 2164156153857580 -#else - 32752011, 11232950, 3381995, 24839566, 22652987, 22810329, - 17159698, 16689107, 46794284, 32248439 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 615171919212796, 1523849404854568, 854560460547503, - 2067097370290715, 1765325848586042 -#else - 62419196, 9166775, 41398568, 22707125, 11576751, 12733943, - 7924251, 30802151, 1976122, 26305405 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1094538949313667, 1796592198908825, 870221004284388, - 2025558921863561, 1699010892802384 -#else - 21251203, 16309901, 64125849, 26771309, 30810596, 12967303, - 156041, 30183180, 12331344, 25317235 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1951351290725195, 1916457206844795, 198025184438026, - 1909076887557595, 1938542290318919 -#else - 8651595, 29077400, 51023227, 28557437, 13002506, 2950805, - 29054427, 28447462, 10008135, 28886531 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1014323197538413, 869150639940606, 1756009942696599, - 1334952557375672, 1544945379082874 -#else - 31486061, 15114593, 52847614, 12951353, 14369431, 26166587, - 16347320, 19892343, 8684154, 23021480 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 764055910920305, 1603590757375439, 146805246592357, - 1843313433854297, 954279890114939 -#else - 19443825, 11385320, 24468943, 23895364, 43189605, 2187568, - 40845657, 27467510, 31316347, 14219878 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 80113526615750, 764536758732259, 1055139345100233, - 469252651759390, 617897512431515 -#else - 38514374, 1193784, 32245219, 11392485, 31092169, 15722801, - 27146014, 6992409, 29126555, 9207390 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 74497112547268, 740094153192149, 1745254631717581, - 727713886503130, 1283034364416928 -#else - 32382916, 1110093, 18477781, 11028262, 39697101, 26006320, - 62128346, 10843781, 59151264, 19118701 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 525892105991110, 1723776830270342, 1476444848991936, - 573789489857760, 133864092632978 -#else - 2814918, 7836403, 27519878, 25686276, 46214848, 22000742, - 45614304, 8550129, 28346258, 1994730 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 542611720192581, 1986812262899321, 1162535242465837, - 481498966143464, 544600533583622 -#else - 47530565, 8085544, 53108345, 29605809, 2785837, 17323125, - 47591912, 7174893, 22628102, 8115180 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 64123227344372, 1239927720647794, 1360722983445904, - 222610813654661, 62429487187991 -#else - 36703732, 955510, 55975026, 18476362, 34661776, 20276352, - 41457285, 3317159, 57165847, 930271 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1793193323953132, 91096687857833, 70945970938921, - 2158587638946380, 1537042406482111 -#else - 51805164, 26720662, 28856489, 1357446, 23421993, 1057177, - 24091212, 32165462, 44343487, 22903716 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1895854577604609, 1394895708949416, 1728548428495944, - 1140864900240149, 563645333603061 -#else - 44357633, 28250434, 54201256, 20785565, 51297352, 25757378, - 52269845, 17000211, 65241845, 8398969 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 141358280486863, 91435889572504, 1087208572552643, - 1829599652522921, 1193307020643647 -#else - 35139535, 2106402, 62372504, 1362500, 12813763, 16200670, - 22981545, 27263159, 18009407, 17781660 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1611230858525381, 950720175540785, 499589887488610, - 2001656988495019, 88977313255908 -#else - 49887941, 24009210, 39324209, 14166834, 29815394, 7444469, - 29551787, 29827013, 19288548, 1325865 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1189080501479658, 2184348804772597, 1040818725742319, - 2018318290311834, 1712060030915354 -#else - 15100138, 17718680, 43184885, 32549333, 40658671, 15509407, - 12376730, 30075286, 33166106, 25511682 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 873966876953756, 1090638350350440, 1708559325189137, - 672344594801910, 1320437969700239 -#else - 20909212, 13023121, 57899112, 16251777, 61330449, 25459517, - 12412150, 10018715, 2213263, 19676059 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1508590048271766, 1131769479776094, 101550868699323, - 428297785557897, 561791648661744 -#else - 32529814, 22479743, 30361438, 16864679, 57972923, 1513225, - 22922121, 6382134, 61341936, 8371347 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 756417570499462, 237882279232602, 2136263418594016, - 1701968045454886, 703713185137472 -#else - 9923462, 11271500, 12616794, 3544722, 37110496, 31832805, - 12891686, 25361300, 40665920, 10486143 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1781187809325462, 1697624151492346, 1381393690939988, - 175194132284669, 1483054666415238 -#else - 44511638, 26541766, 8587002, 25296571, 4084308, 20584370, - 361725, 2610596, 43187334, 22099236 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2175517777364616, 708781536456029, 955668231122942, - 1967557500069555, 2021208005604118 -#else - 5408392, 32417741, 62139741, 10561667, 24145918, 14240566, - 31319731, 29318891, 19985174, 30118346 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1115135966606887, 224217372950782, 915967306279222, - 593866251291540, 561747094208006 -#else - 53114407, 16616820, 14549246, 3341099, 32155958, 13648976, - 49531796, 8849296, 65030, 8370684 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1443163092879439, 391875531646162, 2180847134654632, - 464538543018753, 1594098196837178 -#else - 58787919, 21504805, 31204562, 5839400, 46481576, 32497154, - 47665921, 6922163, 12743482, 23753914 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 850858855888869, 319436476624586, 327807784938441, - 740785849558761, 17128415486016 -#else - 64747493, 12678784, 28815050, 4759974, 43215817, 4884716, - 23783145, 11038569, 18800704, 255233 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2132756334090067, 536247820155645, 48907151276867, - 608473197600695, 1261689545022784 -#else - 61839187, 31780545, 13957885, 7990715, 23132995, 728773, - 13393847, 9066957, 19258688, 18800639 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1525176236978354, 974205476721062, 293436255662638, - 148269621098039, 137961998433963 -#else - 64172210, 22726896, 56676774, 14516792, 63468078, 4372540, - 35173943, 2209389, 65584811, 2055793 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1121075518299410, 2071745529082111, 1265567917414828, - 1648196578317805, 496232102750820 -#else - 580882, 16705327, 5468415, 30871414, 36182444, 18858431, - 59905517, 24560042, 37087844, 7394434 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 122321229299801, 1022922077493685, 2001275453369484, - 2017441881607947, 993205880778002 -#else - 23838809, 1822728, 51370421, 15242726, 8318092, 29821328, - 45436683, 30062226, 62287122, 14799920 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 654925550560074, 1168810995576858, 575655959430926, - 905758704861388, 496774564663534 -#else - 13345610, 9759151, 3371034, 17416641, 16353038, 8577942, - 31129804, 13496856, 58052846, 7402517 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1954109525779738, 2117022646152485, 338102630417180, - 1194140505732026, 107881734943492 -#else - 2286874, 29118501, 47066405, 31546095, 53412636, 5038121, - 11006906, 17794080, 8205060, 1607563 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1714785840001267, 2036500018681589, 1876380234251966, - 2056717182974196, 1645855254384642 -#else - 14414067, 25552300, 3331829, 30346215, 22249150, 27960244, - 18364660, 30647474, 30019586, 24525154 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 106431476499341, 62482972120563, 1513446655109411, - 807258751769522, 538491469114 -#else - 39420813, 1585952, 56333811, 931068, 37988643, 22552112, - 52698034, 12029092, 9944378, 8024 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2002850762893643, 1243624520538135, 1486040410574605, - 2184752338181213, 378495998083531 -#else - 4368715, 29844802, 29874199, 18531449, 46878477, 22143727, - 50994269, 32555346, 58966475, 5640029 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 922510868424903, 1089502620807680, 402544072617374, - 1131446598479839, 1290278588136533 -#else - 10299591, 13746483, 11661824, 16234854, 7630238, 5998374, - 9809887, 16859868, 15219797, 19226649 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1867998812076769, 715425053580701, 39968586461416, - 2173068014586163, 653822651801304 -#else - 27425505, 27835351, 3055005, 10660664, 23458024, 595578, - 51710259, 32381236, 48766680, 9742716 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 162892278589453, 182585796682149, 75093073137630, - 497037941226502, 133871727117371 -#else - 6744077, 2427284, 26042789, 2720740, 66260958, 1118973, - 32324614, 7406442, 12420155, 1994844 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1914596576579670, 1608999621851578, 1987629837704609, - 1519655314857977, 1819193753409464 -#else - 14012502, 28529712, 48724410, 23975962, 40623521, 29617992, - 54075385, 22644628, 24319928, 27108099 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1949315551096831, 1069003344994464, 1939165033499916, - 1548227205730856, 1933767655861407 -#else - 16412671, 29047065, 10772640, 15929391, 50040076, 28895810, - 10555944, 23070383, 37006495, 28815383 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1730519386931635, 1393284965610134, 1597143735726030, - 416032382447158, 1429665248828629 -#else - 22397363, 25786748, 57815702, 20761563, 17166286, 23799296, - 39775798, 6199365, 21880021, 21303672 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 360275475604565, 547835731063078, 215360904187529, - 596646739879007, 332709650425085 -#else - 62825557, 5368522, 35991846, 8163388, 36785801, 3209127, - 16557151, 8890729, 8840445, 4957760 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 47602113726801, 1522314509708010, 437706261372925, - 814035330438027, 335930650933545 -#else - 51661137, 709326, 60189418, 22684253, 37330941, 6522331, - 45388683, 12130071, 52312361, 5005756 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1291597595523886, 1058020588994081, 402837842324045, - 1363323695882781, 2105763393033193 -#else - 64994094, 19246303, 23019041, 15765735, 41839181, 6002751, - 10183197, 20315106, 50713577, 31378319 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 109521982566564, 1715257748585139, 1112231216891516, - 2046641005101484, 134249157157013 -#else - 48083108, 1632004, 13466291, 25559332, 43468412, 16573536, - 35094956, 30497327, 22208661, 2000468 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2156991030936798, 2227544497153325, 1869050094431622, - 754875860479115, 1754242344267058 -#else - 3065054, 32141671, 41510189, 33192999, 49425798, 27851016, - 58944651, 11248526, 63417650, 26140247 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1846089562873800, 98894784984326, 1412430299204844, - 171351226625762, 1100604760929008 -#else - 10379208, 27508878, 8877318, 1473647, 37817580, 21046851, - 16690914, 2553332, 63976176, 16400288 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 84172382130492, 499710970700046, 425749630620778, - 1762872794206857, 612842602127960 -#else - 15716668, 1254266, 48636174, 7446273, 58659946, 6344163, - 45011593, 26268851, 26894936, 9132066 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 868309334532756, 1703010512741873, 1952690008738057, - 4325269926064, 2071083554962116 -#else - 24158868, 12938817, 11085297, 25376834, 39045385, 29097348, - 36532400, 64451, 60291780, 30861549 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 523094549451158, 401938899487815, 1407690589076010, - 2022387426254453, 158660516411257 -#else - 13488534, 7794716, 22236231, 5989356, 25426474, 20976224, - 2350709, 30135921, 62420857, 2364225 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 612867287630009, 448212612103814, 571629077419196, - 1466796750919376, 1728478129663858 -#else - 16335033, 9132434, 25640582, 6678888, 1725628, 8517937, - 55301840, 21856974, 15445874, 25756331 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1723848973783452, 2208822520534681, 1718748322776940, - 1974268454121942, 1194212502258141 -#else - 29004188, 25687351, 28661401, 32914020, 54314860, 25611345, - 31863254, 29418892, 66830813, 17795152 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1254114807944608, 977770684047110, 2010756238954993, - 1783628927194099, 1525962994408256 -#else - 60986784, 18687766, 38493958, 14569918, 56250865, 29962602, - 10343411, 26578142, 37280576, 22738620 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 232464058235826, 1948628555342434, 1835348780427694, - 1031609499437291, 64472106918373 -#else - 27081650, 3463984, 14099042, 29036828, 1616302, 27348828, - 29542635, 15372179, 17293797, 960709 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 767338676040683, 754089548318405, 1523192045639075, - 435746025122062, 512692508440385 -#else - 20263915, 11434237, 61343429, 11236809, 13505955, 22697330, - 50997518, 6493121, 47724353, 7639713 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1255955808701983, 1700487367990941, 1166401238800299, - 1175121994891534, 1190934801395380 -#else - 64278047, 18715199, 25403037, 25339236, 58791851, 17380732, - 18006286, 17510682, 29994676, 17746311 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 349144008168292, 1337012557669162, 1475912332999108, - 1321618454900458, 47611291904320 -#else - 9769828, 5202651, 42951466, 19923039, 39057860, 21992807, - 42495722, 19693649, 35924288, 709463 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 877519947135419, 2172838026132651, 272304391224129, - 1655143327559984, 886229406429814 -#else - 12286395, 13076066, 45333675, 32377809, 42105665, 4057651, - 35090736, 24663557, 16102006, 13205847 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 375806028254706, 214463229793940, 572906353144089, - 572168269875638, 697556386112979 -#else - 13733362, 5599946, 10557076, 3195751, 61550873, 8536969, - 41568694, 8525971, 10151379, 10394400 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1168827102357844, 823864273033637, 2071538752104697, - 788062026895924, 599578340743362 -#else - 4024660, 17416881, 22436261, 12276534, 58009849, 30868332, - 19698228, 11743039, 33806530, 8934413 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1948116082078088, 2054898304487796, 2204939184983900, - 210526805152138, 786593586607626 -#else - 51229064, 29029191, 58528116, 30620370, 14634844, 32856154, - 57659786, 3137093, 55571978, 11721157 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1915320147894736, 156481169009469, 655050471180417, - 592917090415421, 2165897438660879 -#else - 17555920, 28540494, 8268605, 2331751, 44370049, 9761012, - 9319229, 8835153, 57903375, 32274386 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1726336468579724, 1119932070398949, 1929199510967666, - 33918788322959, 1836837863503150 -#else - 66647436, 25724417, 20614117, 16688288, 59594098, 28747312, - 22300303, 505429, 6108462, 27371017 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 829996854845988, 217061778005138, 1686565909803640, - 1346948817219846, 1723823550730181 -#else - 62038564, 12367916, 36445330, 3234472, 32617080, 25131790, - 29880582, 20071101, 40210373, 25686972 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 384301494966394, 687038900403062, 2211195391021739, - 254684538421383, 1245698430589680 -#else - 35133562, 5726538, 26934134, 10237677, 63935147, 32949378, - 24199303, 3795095, 7592688, 18562353 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1247567493562688, 1978182094455847, 183871474792955, - 806570235643435, 288461518067916 -#else - 21594432, 18590204, 17466407, 29477210, 32537083, 2739898, - 6407723, 12018833, 38852812, 4298411 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1449077384734201, 38285445457996, 2136537659177832, - 2146493000841573, 725161151123125 -#else - 46458361, 21592935, 39872588, 570497, 3767144, 31836892, - 13891941, 31985238, 13717173, 10805743 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1201928866368855, 800415690605445, 1703146756828343, - 997278587541744, 1858284414104014 -#else - 52432215, 17910135, 15287173, 11927123, 24177847, 25378864, - 66312432, 14860608, 40169934, 27690595 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 356468809648877, 782373916933152, 1718002439402870, - 1392222252219254, 663171266061951 -#else - 12962541, 5311799, 57048096, 11658279, 18855286, 25600231, - 13286262, 20745728, 62727807, 9882021 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 759628738230460, 1012693474275852, 353780233086498, - 246080061387552, 2030378857679162 -#else - 18512060, 11319350, 46985740, 15090308, 18818594, 5271736, - 44380960, 3666878, 43141434, 30255002 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2040672435071076, 888593182036908, 1298443657189359, - 1804780278521327, 354070726137060 -#else - 60319844, 30408388, 16192428, 13241070, 15898607, 19348318, - 57023983, 26893321, 64705764, 5276064 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1894938527423184, 1463213041477277, 474410505497651, - 247294963033299, 877975941029128 -#else - 30169808, 28236784, 26306205, 21803573, 27814963, 7069267, - 7152851, 3684982, 1449224, 13082861 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 207937160991127, 12966911039119, 820997788283092, - 1010440472205286, 1701372890140810 -#else - 10342807, 3098505, 2119311, 193222, 25702612, 12233820, - 23697382, 15056736, 46092426, 25352431 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 218882774543183, 533427444716285, 1233243976733245, - 435054256891319, 1509568989549904 -#else - 33958735, 3261607, 22745853, 7948688, 19370557, 18376767, - 40936887, 6482813, 56808784, 22494330 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1888838535711826, 1052177758340622, 1213553803324135, - 169182009127332, 463374268115872 -#else - 32869458, 28145887, 25609742, 15678670, 56421095, 18083360, - 26112420, 2521008, 44444576, 6904814 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 299137589460312, 1594371588983567, 868058494039073, - 257771590636681, 1805012993142921 -#else - 29506904, 4457497, 3377935, 23757988, 36598817, 12935079, - 1561737, 3841096, 38105225, 26896789 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1806842755664364, 2098896946025095, 1356630998422878, - 1458279806348064, 347755825962072 -#else - 10340844, 26924055, 48452231, 31276001, 12621150, 20215377, - 30878496, 21730062, 41524312, 5181965 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1402334161391744, 1560083671046299, 1008585416617747, - 1147797150908892, 1420416683642459 -#else - 25940096, 20896407, 17324187, 23247058, 58437395, 15029093, - 24396252, 17103510, 64786011, 21165857 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 665506704253369, 273770475169863, 799236974202630, - 848328990077558, 1811448782807931 -#else - 45343161, 9916822, 65808455, 4079497, 66080518, 11909558, - 1782390, 12641087, 20603771, 26992690 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1468412523962641, 771866649897997, 1931766110147832, - 799561180078482, 524837559150077 -#else - 48226577, 21881051, 24849421, 11501709, 13161720, 28785558, - 1925522, 11914390, 4662781, 7820689 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2223212657821850, 630416247363666, 2144451165500328, - 816911130947791, 1024351058410032 -#else - 12241050, 33128450, 8132690, 9393934, 32846760, 31954812, - 29749455, 12172924, 16136752, 15264020 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1266603897524861, 156378408858100, 1275649024228779, - 447738405888420, 253186462063095 -#else - 56758909, 18873868, 58896884, 2330219, 49446315, 19008651, - 10658212, 6671822, 19012087, 3772772 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2022215964509735, 136144366993649, 1800716593296582, - 1193970603800203, 871675847064218 -#else - 3753511, 30133366, 10617073, 2028709, 14841030, 26832768, - 28718731, 17791548, 20527770, 12988982 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1862751661970328, 851596246739884, 1519315554814041, - 1542798466547449, 1417975335901520 -#else - 52286360, 27757162, 63400876, 12689772, 66209881, 22639565, - 42925817, 22989488, 3299664, 21129479 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1228168094547481, 334133883362894, 587567568420081, - 433612590281181, 603390400373205 -#else - 50331161, 18301130, 57466446, 4978982, 3308785, 8755439, - 6943197, 6461331, 41525717, 8991217 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 121893973206505, 1843345804916664, 1703118377384911, - 497810164760654, 101150811654673 -#else - 49882601, 1816361, 65435576, 27467992, 31783887, 25378441, - 34160718, 7417949, 36866577, 1507264 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 458346255946468, 290909935619344, 1452768413850679, - 550922875254215, 1537286854336538 -#else - 29692644, 6829891, 56610064, 4334895, 20945975, 21647936, - 38221255, 8209390, 14606362, 22907359 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 584322311184395, 380661238802118, 114839394528060, - 655082270500073, 2111856026034852 -#else - 63627275, 8707080, 32188102, 5672294, 22096700, 1711240, - 34088169, 9761486, 4170404, 31469107 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 996965581008991, 2148998626477022, 1012273164934654, - 1073876063914522, 1688031788934939 -#else - 55521375, 14855944, 62981086, 32022574, 40459774, 15084045, - 22186522, 16002000, 52832027, 25153633 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 923487018849600, 2085106799623355, 528082801620136, - 1606206360876188, 735907091712524 -#else - 62297408, 13761028, 35404987, 31070512, 63796392, 7869046, - 59995292, 23934339, 13240844, 10965870 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1697697887804317, 1335343703828273, 831288615207040, - 949416685250051, 288760277392022 -#else - 59366301, 25297669, 52340529, 19898171, 43876480, 12387165, - 4498947, 14147411, 29514390, 4302863 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1419122478109648, 1325574567803701, 602393874111094, - 2107893372601700, 1314159682671307 -#else - 53695440, 21146572, 20757301, 19752600, 14785142, 8976368, - 62047588, 31410058, 17846987, 19582505 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2201150872731804, 2180241023425241, 97663456423163, - 1633405770247824, 848945042443986 -#else - 64864412, 32799703, 62511833, 32488122, 60861691, 1455298, - 45461136, 24339642, 61886162, 12650266 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1173339555550611, 818605084277583, 47521504364289, - 924108720564965, 735423405754506 -#else - 57202067, 17484121, 21134159, 12198166, 40044289, 708125, - 387813, 13770293, 47974538, 10958662 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 830104860549448, 1886653193241086, 1600929509383773, - 1475051275443631, 286679780900937 -#else - 22470984, 12369526, 23446014, 28113323, 45588061, 23855708, - 55336367, 21979976, 42025033, 4271861 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1577111294832995, 1030899169768747, 144900916293530, - 1964672592979567, 568390100955250 -#else - 41939299, 23500789, 47199531, 15361594, 61124506, 2159191, - 75375, 29275903, 34582642, 8469672 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 278388655910247, 487143369099838, 927762205508727, - 181017540174210, 1616886700741287 -#else - 15854951, 4148314, 58214974, 7259001, 11666551, 13824734, - 36577666, 2697371, 24154791, 24093489 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1191033906638969, 940823957346562, 1606870843663445, - 861684761499847, 658674867251089 -#else - 15446137, 17747788, 29759746, 14019369, 30811221, 23944241, - 35526855, 12840103, 24913809, 9815020 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1875032594195546, 1427106132796197, 724736390962158, - 901860512044740, 635268497268760 -#else - 62399578, 27940162, 35267365, 21265538, 52665326, 10799413, - 58005188, 13438768, 18735128, 9466238 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 622869792298357, 1903919278950367, 1922588621661629, - 1520574711600434, 1087100760174640 -#else - 11933045, 9281483, 5081055, 28370608, 64480701, 28648802, - 59381042, 22658328, 44380208, 16199063 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 25465949416618, 1693639527318811, 1526153382657203, - 125943137857169, 145276964043999 -#else - 14576810, 379472, 40322331, 25237195, 37682355, 22741457, - 67006097, 1876698, 30801119, 2164795 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 214739857969358, 920212862967915, 1939901550972269, - 1211862791775221, 85097515720120 -#else - 15995086, 3199873, 13672555, 13712240, 47730029, 28906785, - 54027253, 18058162, 53616056, 1268051 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2006245852772938, 734762734836159, 254642929763427, - 1406213292755966, 239303749517686 -#else - 56818250, 29895392, 63822271, 10948817, 23037027, 3794475, - 63638526, 20954210, 50053494, 3565903 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1619678837192149, 1919424032779215, 1357391272956794, - 1525634040073113, 1310226789796241 -#else - 29210069, 24135095, 61189071, 28601646, 10834810, 20226706, - 50596761, 22733718, 39946641, 19523900 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1040763709762123, 1704449869235352, 605263070456329, - 1998838089036355, 1312142911487502 -#else - 53946955, 15508587, 16663704, 25398282, 38758921, 9019122, - 37925443, 29785008, 2244110, 19552453 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1996723311435669, 1844342766567060, 985455700466044, - 1165924681400960, 311508689870129 -#else - 61955989, 29753495, 57802388, 27482848, 16243068, 14684434, - 41435776, 17373631, 13491505, 4641841 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 43173156290518, 2202883069785309, 1137787467085917, - 1733636061944606, 1394992037553852 -#else - 10813398, 643330, 47920349, 32825515, 30292061, 16954354, - 27548446, 25833190, 14476988, 20787001 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 670078326344559, 555655025059356, 471959386282438, - 2141455487356409, 849015953823125 -#else - 10292079, 9984945, 6481436, 8279905, 59857350, 7032742, - 27282937, 31910173, 39196053, 12651323 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2197214573372804, 794254097241315, 1030190060513737, - 267632515541902, 2040478049202624 -#else - 35923332, 32741048, 22271203, 11835308, 10201545, 15351028, - 17099662, 3988035, 21721536, 30405492 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1812516004670529, 1609256702920783, 1706897079364493, - 258549904773295, 996051247540686 -#else - 10202177, 27008593, 35735631, 23979793, 34958221, 25434748, - 54202543, 3852693, 13216206, 14842320 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1540374301420584, 1764656898914615, 1810104162020396, - 923808779163088, 664390074196579 -#else - 51293224, 22953365, 60569911, 26295436, 60124204, 26972653, - 35608016, 13765823, 39674467, 9900183 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1323460699404750, 1262690757880991, 871777133477900, - 1060078894988977, 1712236889662886 -#else - 14465486, 19721101, 34974879, 18815558, 39665676, 12990491, - 33046193, 15796406, 60056998, 25514317 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1696163952057966, 1391710137550823, 608793846867416, - 1034391509472039, 1780770894075012 -#else - 30924398, 25274812, 6359015, 20738097, 16508376, 9071735, - 41620263, 15413634, 9524356, 26535554 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1367603834210841, 2131988646583224, 890353773628144, - 1908908219165595, 270836895252891 -#else - 12274201, 20378885, 32627640, 31769106, 6736624, 13267305, - 5237659, 28444949, 15663515, 4035784 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 597536315471731, 40375058742586, 1942256403956049, - 1185484645495932, 312666282024145 -#else - 64157555, 8903984, 17349946, 601635, 50676049, 28941875, - 53376124, 17665097, 44850385, 4659090 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1919411405316294, 1234508526402192, 1066863051997083, - 1008444703737597, 1348810787701552 -#else - 50192582, 28601458, 36715152, 18395610, 20774811, 15897498, - 5736189, 15026997, 64930608, 20098846 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2102881477513865, 1570274565945361, 1573617900503708, - 18662635732583, 2232324307922098 -#else - 58249865, 31335375, 28571665, 23398914, 66634396, 23448733, - 63307367, 278094, 23440562, 33264224 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1853931367696942, 8107973870707, 350214504129299, - 775206934582587, 1752317649166792 -#else - 10226222, 27625730, 15139955, 120818, 52241171, 5218602, - 32937275, 11551483, 50536904, 26111567 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1417148368003523, 721357181628282, 505725498207811, - 373232277872983, 261634707184480 -#else - 17932739, 21117156, 43069306, 10749059, 11316803, 7535897, - 22503767, 5561594, 63462240, 3898660 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2186733281493267, 2250694917008620, 1014829812957440, - 479998161452389, 83566193876474 -#else - 7749907, 32584865, 50769132, 33537967, 42090752, 15122142, - 65535333, 7152529, 21831162, 1245233 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1268116367301224, 560157088142809, 802626839600444, - 2210189936605713, 1129993785579988 -#else - 26958440, 18896406, 4314585, 8346991, 61431100, 11960071, - 34519569, 32934396, 36706772, 16838219 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 615183387352312, 917611676109240, 878893615973325, - 978940963313282, 938686890583575 -#else - 54942968, 9166946, 33491384, 13673479, 29787085, 13096535, - 6280834, 14587357, 44770839, 13987524 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 522024729211672, 1045059315315808, 1892245413707790, - 1907891107684253, 2059998109500714 -#else - 42758936, 7778774, 21116000, 15572597, 62275598, 28196653, - 62807965, 28429792, 59639082, 30696363 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1799679152208884, 912132775900387, 25967768040979, - 432130448590461, 274568990261996 -#else - 9681908, 26817309, 35157219, 13591837, 60225043, 386949, - 31622781, 6439245, 52527852, 4091396 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 98698809797682, 2144627600856209, 1907959298569602, - 811491302610148, 1262481774981493 -#else - 58682418, 1470726, 38999185, 31957441, 3978626, 28430809, - 47486180, 12092162, 29077877, 18812444 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1791451399743152, 1713538728337276, 118349997257490, - 1882306388849954, 158235232210248 -#else - 5269168, 26694706, 53878652, 25533716, 25932562, 1763552, - 61502754, 28048550, 47091016, 2357888 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1217809823321928, 2173947284933160, 1986927836272325, - 1388114931125539, 12686131160169 -#else - 32264008, 18146780, 61721128, 32394338, 65017541, 29607531, - 23104803, 20684524, 5727337, 189038 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1650875518872272, 1136263858253897, 1732115601395988, - 734312880662190, 1252904681142109 -#else - 14609104, 24599962, 61108297, 16931650, 52531476, 25810533, - 40363694, 10942114, 41219933, 18669734 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 372986456113865, 525430915458171, 2116279931702135, - 501422713587815, 1907002872974925 -#else - 20513481, 5557931, 51504251, 7829530, 26413943, 31535028, - 45729895, 7471780, 13913677, 28416557 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 803147181835288, 868941437997146, 316299302989663, - 943495589630550, 571224287904572 -#else - 41534488, 11967825, 29233242, 12948236, 60354399, 4713226, - 58167894, 14059179, 12878652, 8511905 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 227742695588364, 1776969298667369, 628602552821802, - 457210915378118, 2041906378111140 -#else - 41452044, 3393630, 64153449, 26478905, 64858154, 9366907, - 36885446, 6812973, 5568676, 30426776 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 815000523470260, 913085688728307, 1052060118271173, - 1345536665214223, 541623413135555 -#else - 11630004, 12144454, 2116339, 13606037, 27378885, 15676917, - 49700111, 20050058, 52713667, 8070817 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1580216071604333, 1877997504342444, 857147161260913, - 703522726778478, 2182763974211603 -#else - 27117677, 23547054, 35826092, 27984343, 1127281, 12772488, - 37262958, 10483305, 55556115, 32525717 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1870080310923419, 71988220958492, 1783225432016732, - 615915287105016, 1035570475990230 -#else - 10637467, 27866368, 5674780, 1072708, 40765276, 26572129, - 65424888, 9177852, 39615702, 15431202 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 730987750830150, 857613889540280, 1083813157271766, - 1002817255970169, 1719228484436074 -#else - 20525126, 10892566, 54366392, 12779442, 37615830, 16150074, - 38868345, 14943141, 52052074, 25618500 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 377616581647602, 1581980403078513, 804044118130621, - 2034382823044191, 643844048472185 -#else - 37084402, 5626925, 66557297, 23573344, 753597, 11981191, - 25244767, 30314666, 63752313, 9594023 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 176957326463017, 1573744060478586, 528642225008045, - 1816109618372371, 1515140189765006 -#else - 43356201, 2636869, 61944954, 23450613, 585133, 7877383, - 11345683, 27062142, 13352334, 22577348 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1888911448245718, 1387110895611080, 1924503794066429, - 1731539523700949, 2230378382645454 -#else - 65177046, 28146973, 3304648, 20669563, 17015805, 28677341, - 37325013, 25801949, 53893326, 33235227 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 443392177002051, 233793396845137, 2199506622312416, - 1011858706515937, 974676837063129 -#else - 20239939, 6607058, 6203985, 3483793, 48721888, 32775202, - 46385121, 15077869, 44358105, 14523816 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1846351103143623, 1949984838808427, 671247021915253, - 1946756846184401, 1929296930380217 -#else - 27406023, 27512775, 27423595, 29057038, 4996213, 10002360, - 38266833, 29008937, 36936121, 28748764 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 849646212452002, 1410198775302919, 73767886183695, - 1641663456615812, 762256272452411 -#else - 11374242, 12660715, 17861383, 21013599, 10935567, 1099227, - 53222788, 24462691, 39381819, 11358503 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 692017667358279, 723305578826727, 1638042139863265, - 748219305990306, 334589200523901 -#else - 54378055, 10311866, 1510375, 10778093, 64989409, 24408729, - 32676002, 11149336, 40985213, 4985767 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 22893968530686, 2235758574399251, 1661465835630252, - 925707319443452, 1203475116966621 -#else - 48012542, 341146, 60911379, 33315398, 15756972, 24757770, - 66125820, 13794113, 47694557, 17933176 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 801299035785166, 1733292596726131, 1664508947088596, - 467749120991922, 1647498584535623 -#else - 6490062, 11940286, 25495923, 25828072, 8668372, 24803116, - 3367602, 6970005, 65417799, 24549641 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 903105258014366, 427141894933047, 561187017169777, - 1884330244401954, 1914145708422219 -#else - 1656478, 13457317, 15370807, 6364910, 13605745, 8362338, - 47934242, 28078708, 50312267, 28522993 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1344191060517578, 1960935031767890, 1518838929955259, - 1781502350597190, 1564784025565682 -#else - 44835530, 20030007, 67044178, 29220208, 48503227, 22632463, - 46537798, 26546453, 67009010, 23317098 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 673723351748086, 1979969272514923, 1175287312495508, - 1187589090978666, 1881897672213940 -#else - 17747446, 10039260, 19368299, 29503841, 46478228, 17513145, - 31992682, 17696456, 37848500, 28042460 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1917185587363432, 1098342571752737, 5935801044414, - 2000527662351839, 1538640296181569 -#else - 31932008, 28568291, 47496481, 16366579, 22023614, 88450, - 11371999, 29810185, 4882241, 22927527 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2495540013192, 678856913479236, 224998292422872, - 219635787698590, 1972465269000940 -#else - 29796488, 37186, 19818052, 10115756, 55279832, 3352735, - 18551198, 3272828, 61917932, 29392022 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 271413961212179, 1353052061471651, 344711291283483, - 2014925838520662, 2006221033113941 -#else - 12501267, 4044383, 58495907, 20162046, 34678811, 5136598, - 47878486, 30024734, 330069, 29895023 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 194583029968109, 514316781467765, 829677956235672, - 1676415686873082, 810104584395840 -#else - 6384877, 2899513, 17807477, 7663917, 64749976, 12363164, - 25366522, 24980540, 66837568, 12071498 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1980510813313589, 1948645276483975, 152063780665900, - 129968026417582, 256984195613935 -#else - 58743349, 29511910, 25133447, 29037077, 60897836, 2265926, - 34339246, 1936674, 61949167, 3829362 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1860190562533102, 1936576191345085, 461100292705964, - 1811043097042830, 957486749306835 -#else - 28425966, 27718999, 66531773, 28857233, 52891308, 6870929, - 7921550, 26986645, 26333139, 14267664 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 796664815624365, 1543160838872951, 1500897791837765, - 1667315977988401, 599303877030711 -#else - 56041645, 11871230, 27385719, 22994888, 62522949, 22365119, - 10004785, 24844944, 45347639, 8930323 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1151480509533204, 2136010406720455, 738796060240027, - 319298003765044, 1150614464349587 -#else - 45911060, 17158396, 25654215, 31829035, 12282011, 11008919, - 1541940, 4757911, 40617363, 17145491 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1731069268103150, 735642447616087, 1364750481334268, - 417232839982871, 927108269127661 -#else - 13537262, 25794942, 46504023, 10961926, 61186044, 20336366, - 53952279, 6217253, 51165165, 13814989 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1017222050227968, 1987716148359, 2234319589635701, - 621282683093392, 2132553131763026 -#else - 49686272, 15157789, 18705543, 29619, 24409717, 33293956, - 27361680, 9257833, 65152338, 31777517 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1567828528453324, 1017807205202360, 565295260895298, - 829541698429100, 307243822276582 -#else - 42063564, 23362465, 15366584, 15166509, 54003778, 8423555, - 37937324, 12361134, 48422886, 4578289 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 249079270936248, 1501514259790706, 947909724204848, - 944551802437487, 552658763982480 -#else - 24579768, 3711570, 1342322, 22374306, 40103728, 14124955, - 44564335, 14074918, 21964432, 8235257 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2089966982947227, 1854140343916181, 2151980759220007, - 2139781292261749, 158070445864917 -#else - 60580251, 31142934, 9442965, 27628844, 12025639, 32067012, - 64127349, 31885225, 13006805, 2355433 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1338766321464554, 1906702607371284, 1519569445519894, - 115384726262267, 1393058953390992 -#else - 50803946, 19949172, 60476436, 28412082, 16974358, 22643349, - 27202043, 1719366, 1141648, 20758196 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1364621558265400, 1512388234908357, 1926731583198686, - 2041482526432505, 920401122333774 -#else - 54244920, 20334445, 58790597, 22536340, 60298718, 28710537, - 13475065, 30420460, 32674894, 13715045 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1884844597333588, 601480070269079, 620203503079537, - 1079527400117915, 1202076693132015 -#else - 11423316, 28086373, 32344215, 8962751, 24989809, 9241752, - 53843611, 16086211, 38367983, 17912338 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 840922919763324, 727955812569642, 1303406629750194, - 522898432152867, 294161410441865 -#else - 65699196, 12530727, 60740138, 10847386, 19531186, 19422272, - 55399715, 7791793, 39862921, 4383346 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 353760790835310, 1598361541848743, 1122905698202299, - 1922533590158905, 419107700666580 -#else - 38137966, 5271446, 65842855, 23817442, 54653627, 16732598, - 62246457, 28647982, 27193556, 6245191 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 359856369838236, 180914355488683, 861726472646627, - 218807937262986, 575626773232501 -#else - 51914908, 5362277, 65324971, 2695833, 4960227, 12840725, - 23061898, 3260492, 22510453, 8577507 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 755467689082474, 909202735047934, 730078068932500, - 936309075711518, 2007798262842972 -#else - 54476394, 11257345, 34415870, 13548176, 66387860, 10879010, - 31168030, 13952092, 37537372, 29918525 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1609384177904073, 362745185608627, 1335318541768201, - 800965770436248, 547877979267412 -#else - 3877321, 23981693, 32416691, 5405324, 56104457, 19897796, - 3759768, 11935320, 5611860, 8164018 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 984339177776787, 815727786505884, 1645154585713747, - 1659074964378553, 1686601651984156 -#else - 50833043, 14667796, 15906460, 12155291, 44997715, 24514713, - 32003001, 24722143, 5773084, 25132323 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1697863093781930, 599794399429786, 1104556219769607, - 830560774794755, 12812858601017 -#else - 43320746, 25300131, 1950874, 8937633, 18686727, 16459170, - 66203139, 12376319, 31632953, 190926 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1168737550514982, 897832437380552, 463140296333799, - 302564600022547, 2008360505135501 -#else - 42515238, 17415546, 58684872, 13378745, 14162407, 6901328, - 58820115, 4508563, 41767309, 29926903 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1856930662813910, 678090852002597, 1920179140755167, - 1259527833759868, 55540971895511 -#else - 8884438, 27670423, 6023973, 10104341, 60227295, 28612898, - 18722940, 18768427, 65436375, 827624 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1158643631044921, 476554103621892, 178447851439725, - 1305025542653569, 103433927680625 -#else - 34388281, 17265135, 34605316, 7101209, 13354605, 2659080, - 65308289, 19446395, 42230385, 1541285 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2176793111709008, 1576725716350391, 2009350167273523, - 2012390194631546, 2125297410909580 -#else - 2901328, 32436745, 3880375, 23495044, 49487923, 29941650, - 45306746, 29986950, 20456844, 31669399 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 825403285195098, 2144208587560784, 1925552004644643, - 1915177840006985, 1015952128947864 -#else - 27019610, 12299467, 53450576, 31951197, 54247203, 28692960, - 47568713, 28538373, 29439640, 15138866 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1807108316634472, 1534392066433717, 347342975407218, - 1153820745616376, 7375003497471 -#else - 21536104, 26928012, 34661045, 22864223, 44700786, 5175813, - 61688824, 17193268, 7779327, 109896 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 983061001799725, 431211889901241, 2201903782961093, - 817393911064341, 2214616493042167 -#else - 30279725, 14648750, 59063993, 6425557, 13639621, 32810923, - 28698389, 12180118, 23177719, 33000357 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 228567918409756, 865093958780220, 358083886450556, - 159617889659320, 1360637926292598 -#else - 26572828, 3405927, 35407164, 12890904, 47843196, 5335865, - 60615096, 2378491, 4439158, 20275085 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 234147501399755, 2229469128637390, 2175289352258889, - 1397401514549353, 1885288963089922 -#else - 44392139, 3489069, 57883598, 33221678, 18875721, 32414337, - 14819433, 20822905, 49391106, 28092994 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1111762412951562, 252849572507389, 1048714233823341, - 146111095601446, 1237505378776770 -#else - 62052362, 16566550, 15953661, 3767752, 56672365, 15627059, - 66287910, 2177224, 8550082, 18440267 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1113790697840279, 1051167139966244, 1045930658550944, - 2011366241542643, 1686166824620755 -#else - 48635543, 16596774, 66727204, 15663610, 22860960, 15585581, - 39264755, 29971692, 43848403, 25125843 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1054097349305049, 1872495070333352, 182121071220717, - 1064378906787311, 100273572924182 -#else - 34628313, 15707274, 58902952, 27902350, 29464557, 2713815, - 44383727, 15860481, 45206294, 1494192 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1306410853171605, 1627717417672447, 50983221088417, - 1109249951172250, 870201789081392 -#else - 47546773, 19467038, 41524991, 24254879, 13127841, 759709, - 21923482, 16529112, 8742704, 12967017 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 104233794644221, 1548919791188248, 2224541913267306, - 2054909377116478, 1043803389015153 -#else - 38643965, 1553204, 32536856, 23080703, 42417258, 33148257, - 58194238, 30620535, 37205105, 15553882 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 216762189468802, 707284285441622, 190678557969733, - 973969342604308, 1403009538434867 -#else - 21877890, 3230008, 9881174, 10539357, 62311749, 2841331, - 11543572, 14513274, 19375923, 20906471 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1279024291038477, 344776835218310, 273722096017199, - 1834200436811442, 634517197663804 -#else - 8832269, 19058947, 13253510, 5137575, 5037871, 4078777, - 24880818, 27331716, 2862652, 9455043 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 343805853118335, 1302216857414201, 566872543223541, - 2051138939539004, 321428858384280 -#else - 29306751, 5123106, 20245049, 19404543, 9592565, 8447059, - 65031740, 30564351, 15511448, 4789663 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 470067171324852, 1618629234173951, 2000092177515639, - 7307679772789, 1117521120249968 -#else - 46429108, 7004546, 8824831, 24119455, 63063159, 29803695, - 61354101, 108892, 23513200, 16652362 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 278151578291475, 1810282338562947, 1771599529530998, - 1383659409671631, 685373414471841 -#else - 33852691, 4144781, 62632835, 26975308, 10770038, 26398890, - 60458447, 20618131, 48789665, 10212859 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 577009397403102, 1791440261786291, 2177643735971638, - 174546149911960, 1412505077782326 -#else - 2756062, 8598110, 7383731, 26694540, 22312758, 32449420, - 21179800, 2600940, 57120566, 21047965 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 893719721537457, 1201282458018197, 1522349501711173, - 58011597740583, 1130406465887139 -#else - 42463153, 13317461, 36659605, 17900503, 21365573, 22684775, - 11344423, 864440, 64609187, 16844368 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 412607348255453, 1280455764199780, 2233277987330768, - 14180080401665, 331584698417165 -#else - 40676061, 6148328, 49924452, 19080277, 18782928, 33278435, - 44547329, 211299, 2719757, 4940997 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 262483770854550, 990511055108216, 526885552771698, - 571664396646158, 354086190278723 -#else - 65784982, 3911312, 60160120, 14759764, 37081714, 7851206, - 21690126, 8518463, 26699843, 5276295 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1820352417585487, 24495617171480, 1547899057533253, - 10041836186225, 480457105094042 -#else - 53958991, 27125364, 9396248, 365013, 24703301, 23065493, - 1321585, 149635, 51656090, 7159368 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2023310314989233, 637905337525881, 2106474638900687, - 557820711084072, 1687858215057826 -#else - 9987761, 30149673, 17507961, 9505530, 9731535, 31388918, - 22356008, 8312176, 22477218, 25151047 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1144168702609745, 604444390410187, 1544541121756138, - 1925315550126027, 626401428894002 -#else - 18155857, 17049442, 19744715, 9006923, 15154154, 23015456, - 24256459, 28689437, 44560690, 9334108 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1922168257351784, 2018674099908659, 1776454117494445, - 956539191509034, 36031129147635 -#else - 2986088, 28642539, 10776627, 30080588, 10620589, 26471229, - 45695018, 14253544, 44521715, 536905 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 544644538748041, 1039872944430374, 876750409130610, - 710657711326551, 1216952687484972 -#else - 4377737, 8115836, 24567078, 15495314, 11625074, 13064599, - 7390551, 10589625, 10838060, 18134008 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 58242421545916, 2035812695641843, 2118491866122923, - 1191684463816273, 46921517454099 -#else - 47766460, 867879, 9277171, 30335973, 52677291, 31567988, - 19295825, 17757482, 6378259, 699185 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 272268252444639, 1374166457774292, 2230115177009552, - 1053149803909880, 1354288411641016 -#else - 7895007, 4057113, 60027092, 20476675, 49222032, 33231305, - 66392824, 15693154, 62063800, 20180469 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1857910905368338, 1754729879288912, 885945464109877, - 1516096106802166, 1602902393369811 -#else - 59371282, 27685029, 52542544, 26147512, 11385653, 13201616, - 31730678, 22591592, 63190227, 23885106 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1193437069800958, 901107149704790, 999672920611411, - 477584824802207, 364239578697845 -#else - 10188286, 17783598, 59772502, 13427542, 22223443, 14896287, - 30743455, 7116568, 45322357, 5427592 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 886299989548838, 1538292895758047, 1590564179491896, - 1944527126709657, 837344427345298 -#else - 696102, 13206899, 27047647, 22922350, 15285304, 23701253, - 10798489, 28975712, 19236242, 12477404 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 754558365378305, 1712186480903618, 1703656826337531, - 750310918489786, 518996040250900 -#else - 55879425, 11243795, 50054594, 25513566, 66320635, 25386464, - 63211194, 11180503, 43939348, 7733643 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1309847803895382, 1462151862813074, 211370866671570, - 1544595152703681, 1027691798954090 -#else - 17800790, 19518253, 40108434, 21787760, 23887826, 3149671, - 23466177, 23016261, 10322026, 15313801 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 803217563745370, 1884799722343599, 1357706345069218, - 2244955901722095, 730869460037413 -#else - 26246234, 11968874, 32263343, 28085704, 6830754, 20231401, - 51314159, 33452449, 42659621, 10890803 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 689299471295966, 1831210565161071, 1375187341585438, - 1106284977546171, 1893781834054269 -#else - 35743198, 10271362, 54448239, 27287163, 16690206, 20491888, - 52126651, 16484930, 25180797, 28219548 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 696351368613042, 1494385251239250, 738037133616932, - 636385507851544, 927483222611406 -#else - 66522290, 10376443, 34522450, 22268075, 19801892, 10997610, - 2276632, 9482883, 316878, 13820577 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1949114198209333, 1104419699537997, 783495707664463, - 1747473107602770, 2002634765788641 -#else - 57226037, 29044064, 64993357, 16457135, 56008783, 11674995, - 30756178, 26039378, 30696929, 29841583 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1607325776830197, 530883941415333, 1451089452727895, - 1581691157083423, 496100432831154 -#else - 32988917, 23951020, 12499365, 7910787, 56491607, 21622917, - 59766047, 23569034, 34759346, 7392472 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1068900648804224, 2006891997072550, 1134049269345549, - 1638760646180091, 2055396084625778 -#else - 58253184, 15927860, 9866406, 29905021, 64711949, 16898650, - 36699387, 24419436, 25112946, 30627788 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2222475519314561, 1870703901472013, 1884051508440561, - 1344072275216753, 1318025677799069 -#else - 64604801, 33117465, 25621773, 27875660, 15085041, 28074555, - 42223985, 20028237, 5537437, 19640113 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 155711679280656, 681100400509288, 389811735211209, - 2135723811340709, 408733211204125 -#else - 55883280, 2320284, 57524584, 10149186, 33664201, 5808647, - 52232613, 31824764, 31234589, 6090599 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 7813206966729, 194444201427550, 2071405409526507, - 1065605076176312, 1645486789731291 -#else - 57475529, 116425, 26083934, 2897444, 60744427, 30866345, 609720, - 15878753, 60138459, 24519663 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 16625790644959, 1647648827778410, 1579910185572704, - 436452271048548, 121070048451050 -#else - 39351007, 247743, 51914090, 24551880, 23288160, 23542496, - 43239268, 6503645, 20650474, 1804084 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1037263028552531, 568385780377829, 297953104144430, - 1558584511931211, 2238221839292471 -#else - 39519059, 15456423, 8972517, 8469608, 15640622, 4439847, - 3121995, 23224719, 27842615, 33352104 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 190565267697443, 672855706028058, 338796554369226, - 337687268493904, 853246848691734 -#else - 51801891, 2839643, 22530074, 10026331, 4602058, 5048462, - 28248656, 5031932, 55733782, 12714368 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1763863028400139, 766498079432444, 1321118624818005, - 69494294452268, 858786744165651 -#else - 20807691, 26283607, 29286140, 11421711, 39232341, 19686201, - 45881388, 1035545, 47375635, 12796919 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1292056768563024, 1456632109855638, 1100631247050184, - 1386133165675321, 1232898350193752 -#else - 12076880, 19253146, 58323862, 21705509, 42096072, 16400683, - 49517369, 20654993, 3480664, 18371617 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 366253102478259, 525676242508811, 1449610995265438, - 1183300845322183, 185960306491545 -#else - 34747315, 5457596, 28548107, 7833186, 7303070, 21600887, - 42745799, 17632556, 33734809, 2771024 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 28315355815982, 460422265558930, 1799675876678724, - 1969256312504498, 1051823843138725 -#else - 45719598, 421931, 26597266, 6860826, 22486084, 26817260, - 49971378, 29344205, 42556581, 15673396 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 156914999361983, 1606148405719949, 1665208410108430, - 317643278692271, 1383783705665320 -#else - 46924223, 2338215, 19788685, 23933476, 63107598, 24813538, - 46837679, 4733253, 3727144, 20619984 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 54684536365732, 2210010038536222, 1194984798155308, - 535239027773705, 1516355079301361 -#else - 6120100, 814863, 55314462, 32931715, 6812204, 17806661, 2019593, - 7975683, 31123697, 22595451 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1484387703771650, 198537510937949, 2186282186359116, - 617687444857508, 647477376402122 -#else - 30069250, 22119100, 30434653, 2958439, 18399564, 32578143, - 12296868, 9204260, 50676426, 9648164 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2147715541830533, 500032538445817, 646380016884826, - 352227855331122, 1488268620408052 -#else - 32705413, 32003455, 30705657, 7451065, 55303258, 9631812, - 3305266, 5248604, 41100532, 22176930 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 159386186465542, 1877626593362941, 618737197060512, - 1026674284330807, 1158121760792685 -#else - 17219846, 2375039, 35537917, 27978816, 47649184, 9219902, - 294711, 15298639, 2662509, 17257359 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1744544377739822, 1964054180355661, 1685781755873170, - 2169740670377448, 1286112621104591 -#else - 65935918, 25995736, 62742093, 29266687, 45762450, 25120105, - 32087528, 32331655, 32247247, 19164571 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 81977249784993, 1667943117713086, 1668983819634866, - 1605016835177615, 1353960708075544 -#else - 14312609, 1221556, 17395390, 24854289, 62163122, 24869796, - 38911119, 23916614, 51081240, 20175586 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1602253788689063, 439542044889886, 2220348297664483, - 657877410752869, 157451572512238 -#else - 65680039, 23875441, 57873182, 6549686, 59725795, 33085767, - 23046501, 9803137, 17597934, 2346211 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1029287186166717, 65860128430192, 525298368814832, - 1491902500801986, 1461064796385400 -#else - 18510781, 15337574, 26171504, 981392, 44867312, 7827555, - 43617730, 22231079, 3059832, 21771562 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 408216988729246, 2121095722306989, 913562102267595, - 1879708920318308, 241061448436731 -#else - 10141598, 6082907, 17829293, 31606789, 9830091, 13613136, - 41552228, 28009845, 33606651, 3592095 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1185483484383269, 1356339572588553, 584932367316448, - 102132779946470, 1792922621116791 -#else - 33114149, 17665080, 40583177, 20211034, 33076704, 8716171, - 1151462, 1521897, 66126199, 26716628 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1966196870701923, 2230044620318636, 1425982460745905, - 261167817826569, 46517743394330 -#else - 34169699, 29298616, 23947180, 33230254, 34035889, 21248794, - 50471177, 3891703, 26353178, 693168 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 107077591595359, 884959942172345, 27306869797400, - 2224911448949390, 964352058245223 -#else - 30374239, 1595580, 50224825, 13186930, 4600344, 406904, 9585294, - 33153764, 31375463, 14369965 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1730194207717538, 431790042319772, 1831515233279467, - 1372080552768581, 1074513929381760 -#else - 52738210, 25781902, 1510300, 6434173, 48324075, 27291703, - 32732229, 20445593, 17901440, 16011505 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1450880638731607, 1019861580989005, 1229729455116861, - 1174945729836143, 826083146840706 -#else - 18171223, 21619806, 54608461, 15197121, 56070717, 18324396, - 47936623, 17508055, 8764034, 12309598 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1899935429242705, 1602068751520477, 940583196550370, - 82431069053859, 1540863155745696 -#else - 5975889, 28311244, 47649501, 23872684, 55567586, 14015781, - 43443107, 1228318, 17544096, 22960650 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2136688454840028, 2099509000964294, 1690800495246475, - 1217643678575476, 828720645084218 -#else - 5811932, 31839139, 3442886, 31285122, 48741515, 25194890, - 49064820, 18144304, 61543482, 12348899 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 765548025667841, 462473984016099, 998061409979798, - 546353034089527, 2212508972466858 -#else - 35709185, 11407554, 25755363, 6891399, 63851926, 14872273, - 42259511, 8141294, 56476330, 32968952 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 46575283771160, 892570971573071, 1281983193144090, - 1491520128287375, 75847005908304 -#else - 54433560, 694025, 62032719, 13300343, 14015258, 19103038, - 57410191, 22225381, 30944592, 1130208 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1801436127943107, 1734436817907890, 1268728090345068, - 167003097070711, 2233597765834956 -#else - 8247747, 26843490, 40546482, 25845122, 52706924, 18905521, - 4652151, 2488540, 23550156, 33283200 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1997562060465113, 1048700225534011, 7615603985628, - 1855310849546841, 2242557647635213 -#else - 17294297, 29765994, 7026747, 15626851, 22990044, 113481, - 2267737, 27646286, 66700045, 33416712 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1161017320376250, 492624580169043, 2169815802355237, - 976496781732542, 1770879511019629 -#else - 16091066, 17300506, 18599251, 7340678, 2137637, 32332775, - 63744702, 14550935, 3260525, 26388161 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1357044908364776, 729130645262438, 1762469072918979, - 1365633616878458, 181282906404941 -#else - 62198760, 20221544, 18550886, 10864893, 50649539, 26262835, - 44079994, 20349526, 54360141, 2701325 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1080413443139865, 1155205815510486, 1848782073549786, - 622566975152580, 124965574467971 -#else - 58534169, 16099414, 4629974, 17213908, 46322650, 27548999, - 57090500, 9276970, 11329923, 1862132 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1184526762066993, 247622751762817, 692129017206356, - 820018689412496, 2188697339828085 -#else - 14763057, 17650824, 36190593, 3689866, 3511892, 10313526, - 45157776, 12219230, 58070901, 32614131 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2020536369003019, 202261491735136, 1053169669150884, - 2056531979272544, 778165514694311 -#else - 8894987, 30108338, 6150752, 3013931, 301220, 15693451, 35127648, - 30644714, 51670695, 11595569 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 237404399610207, 1308324858405118, 1229680749538400, - 720131409105291, 1958958863624906 -#else - 15214943, 3537601, 40870142, 19495559, 4418656, 18323671, - 13947275, 10730794, 53619402, 29190761 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 515583508038846, 17656978857189, 1717918437373989, - 1568052070792483, 46975803123923 -#else - 64570558, 7682792, 32759013, 263109, 37124133, 25598979, - 44776739, 23365796, 977107, 699994 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 281527309158085, 36970532401524, 866906920877543, - 2222282602952734, 1289598729589882 -#else - 54642373, 4195083, 57897332, 550903, 51543527, 12917919, - 19118110, 33114591, 36574330, 19216518 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1278207464902042, 494742455008756, 1262082121427081, - 1577236621659884, 1888786707293291 -#else - 31788442, 19046775, 4799988, 7372237, 8808585, 18806489, - 9408236, 23502657, 12493931, 28145115 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 353042527954210, 1830056151907359, 1111731275799225, - 174960955838824, 404312815582675 -#else - 41428258, 5260743, 47873055, 27269961, 63412921, 16566086, - 27218280, 2607121, 29375955, 6024730 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2064251142068628, 1666421603389706, 1419271365315441, - 468767774902855, 191535130366583 -#else - 842132, 30759739, 62345482, 24831616, 26332017, 21148791, - 11831879, 6985184, 57168503, 2854095 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1716987058588002, 1859366439773457, 1767194234188234, - 64476199777924, 1117233614485261 -#else - 62261602, 25585100, 2516241, 27706719, 9695690, 26333246, - 16512644, 960770, 12121869, 16648078 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 984292135520292, 135138246951259, 2220652137473167, - 1722843421165029, 190482558012909 -#else - 51890212, 14667095, 53772635, 2013716, 30598287, 33090295, - 35603941, 25672367, 20237805, 2838411 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 298845952651262, 1166086588952562, 1179896526238434, - 1347812759398693, 1412945390096208 -#else - 47820798, 4453151, 15298546, 17376044, 22115042, 17581828, - 12544293, 20083975, 1068880, 21054527 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1143239552672925, 906436640714209, 2177000572812152, - 2075299936108548, 325186347798433 -#else - 57549981, 17035596, 33238497, 13506958, 30505848, 32439836, - 58621956, 30924378, 12521377, 4845654 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 721024854374772, 684487861263316, 1373438744094159, - 2193186935276995, 1387043709851261 -#else - 38910324, 10744107, 64150484, 10199663, 7759311, 20465832, - 3409347, 32681032, 60626557, 20668561 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 418098668140962, 715065997721283, 1471916138376055, - 2168570337288357, 937812682637044 -#else - 43547042, 6230155, 46726851, 10655313, 43068279, 21933259, - 10477733, 32314216, 63995636, 13974497 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1043584187226485, 2143395746619356, 2209558562919611, - 482427979307092, 847556718384018 -#else - 12966261, 15550616, 35069916, 31939085, 21025979, 32924988, - 5642324, 7188737, 18895762, 12629579 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1248731221520759, 1465200936117687, 540803492710140, - 52978634680892, 261434490176109 -#else - 14741879, 18607545, 22177207, 21833195, 1279740, 8058600, - 11758140, 789443, 32195181, 3895677 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1057329623869501, 620334067429122, 461700859268034, - 2012481616501857, 297268569108938 -#else - 10758205, 15755439, 62598914, 9243697, 62229442, 6879878, - 64904289, 29988312, 58126794, 4429646 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1055352180870759, 1553151421852298, 1510903185371259, - 1470458349428097, 1226259419062731 -#else - 64654951, 15725972, 46672522, 23143759, 61304955, 22514211, - 59972993, 21911536, 18047435, 18272689 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1492988790301668, 790326625573331, 1190107028409745, - 1389394752159193, 1620408196604194 -#else - 41935844, 22247266, 29759955, 11776784, 44846481, 17733976, - 10993113, 20703595, 49488162, 24145963 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 47000654413729, 1004754424173864, 1868044813557703, - 173236934059409, 588771199737015 -#else - 21987233, 700364, 42603816, 14972007, 59334599, 27836036, - 32155025, 2581431, 37149879, 8773374 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 30498470091663, 1082245510489825, 576771653181956, - 806509986132686, 1317634017056939 -#else - 41540495, 454462, 53896929, 16126714, 25240068, 8594567, - 20656846, 12017935, 59234475, 19634276 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 420308055751555, 1493354863316002, 165206721528088, - 1884845694919786, 2065456951573059 -#else - 6028163, 6263078, 36097058, 22252721, 66289944, 2461771, - 35267690, 28086389, 65387075, 30777706 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1115636332012334, 1854340990964155, 83792697369514, - 1972177451994021, 457455116057587 -#else - 54829870, 16624276, 987579, 27631834, 32908202, 1248608, - 7719845, 29387734, 28408819, 6816612 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1698968457310898, 1435137169051090, 1083661677032510, - 938363267483709, 340103887207182 -#else - 56750770, 25316602, 19549650, 21385210, 22082622, 16147817, - 20613181, 13982702, 56769294, 5067942 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1995325341336574, 911500251774648, 164010755403692, - 855378419194762, 1573601397528842 -#else - 36602878, 29732664, 12074680, 13582412, 47230892, 2443950, - 47389578, 12746131, 5331210, 23448488 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 241719380661528, 310028521317150, 1215881323380194, - 1408214976493624, 2141142156467363 -#else - 30528792, 3601899, 65151774, 4619784, 39747042, 18118043, - 24180792, 20984038, 27679907, 31905504 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1315157046163473, 727368447885818, 1363466668108618, - 1668921439990361, 1398483384337907 -#else - 9402385, 19597367, 32834042, 10838634, 40528714, 20317236, - 26653273, 24868867, 22611443, 20839026 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 75029678299646, 1015388206460473, 1849729037055212, - 1939814616452984, 444404230394954 -#else - 22190590, 1118029, 22736441, 15130463, 36648172, 27563110, - 19189624, 28905490, 4854858, 6622139 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2053597130993710, 2024431685856332, 2233550957004860, - 2012407275509545, 872546993104440 -#else - 58798126, 30600981, 58846284, 30166382, 56707132, 33282502, - 13424425, 29987205, 26404408, 13001963 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1217269667678610, 599909351968693, 1390077048548598, - 1471879360694802, 739586172317596 -#else - 35867026, 18138731, 64114613, 8939345, 11562230, 20713762, - 41044498, 21932711, 51703708, 11020692 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1718318639380794, 1560510726633958, 904462881159922, - 1418028351780052, 94404349451937 -#else - 1866042, 25604943, 59210214, 23253421, 12483314, 13477547, - 3175636, 21130269, 28761761, 1406734 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2132502667405250, 214379346175414, 1502748313768060, - 1960071701057800, 1353971822643138 -#else - 66660290, 31776765, 13018550, 3194501, 57528444, 22392694, - 24760584, 29207344, 25577410, 20175752 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 319394212043702, 2127459436033571, 717646691535162, - 663366796076914, 318459064945314 -#else - 42818486, 4759344, 66418211, 31701615, 2066746, 10693769, - 37513074, 9884935, 57739938, 4745409 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 405989424923593, 1960452633787083, 667349034401665, - 1492674260767112, 1451061489880787 -#else - 57967561, 6049713, 47577803, 29213020, 35848065, 9944275, - 51646856, 22242579, 10931923, 21622501 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 947085906234007, 323284730494107, 1485778563977200, - 728576821512394, 901584347702286 -#else - 50547351, 14112679, 59096219, 4817317, 59068400, 22139825, - 44255434, 10856640, 46638094, 13434653 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1575783124125742, 2126210792434375, 1569430791264065, - 1402582372904727, 1891780248341114 -#else - 22759470, 23480998, 50342599, 31683009, 13637441, 23386341, - 1765143, 20900106, 28445306, 28189722 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 838432205560695, 1997703511451664, 1018791879907867, - 1662001808174331, 78328132957753 -#else - 29875063, 12493613, 2795536, 29768102, 1710619, 15181182, - 56913147, 24765756, 9074233, 1167180 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 739152638255629, 2074935399403557, 505483666745895, - 1611883356514088, 628654635394878 -#else - 40903181, 11014232, 57266213, 30918946, 40200743, 7532293, - 48391976, 24018933, 3843902, 9367684 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1822054032121349, 643057948186973, 7306757352712, - 577249257962099, 284735863382083 -#else - 56139269, 27150720, 9591133, 9582310, 11349256, 108879, - 16235123, 8601684, 66969667, 4242894 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1366558556363930, 1448606567552086, 1478881020944768, - 165803179355898, 1115718458123498 -#else - 22092954, 20363309, 65066070, 21585919, 32186752, 22037044, - 60534522, 2470659, 39691498, 16625500 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 204146226972102, 1630511199034723, 2215235214174763, - 174665910283542, 956127674017216 -#else - 56051142, 3042015, 13770083, 24296510, 584235, 33009577, - 59338006, 2602724, 39757248, 14247412 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1562934578796716, 1070893489712745, 11324610642270, - 958989751581897, 2172552325473805 -#else - 6314156, 23289540, 34336361, 15957556, 56951134, 168749, - 58490057, 14290060, 27108877, 32373552 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1770564423056027, 735523631664565, 1326060113795289, - 1509650369341127, 65892421582684 -#else - 58522267, 26383465, 13241781, 10960156, 34117849, 19759835, - 33547975, 22495543, 39960412, 981873 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 623682558650637, 1337866509471512, 990313350206649, - 1314236615762469, 1164772974270275 -#else - 22833421, 9293594, 34459416, 19935764, 57971897, 14756818, - 44180005, 19583651, 56629059, 17356469 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 223256821462517, 723690150104139, 1000261663630601, - 933280913953265, 254872671543046 -#else - 59340277, 3326785, 38997067, 10783823, 19178761, 14905060, - 22680049, 13906969, 51175174, 3797898 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1969087237026041, 624795725447124, 1335555107635969, - 2069986355593023, 1712100149341902 -#else - 21721337, 29341686, 54902740, 9310181, 63226625, 19901321, - 23740223, 30845200, 20491982, 25512280 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1236103475266979, 1837885883267218, 1026072585230455, - 1025865513954973, 1801964901432134 -#else - 9209251, 18419377, 53852306, 27386633, 66377847, 15289672, - 25947805, 15286587, 30997318, 26851369 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1115241013365517, 1712251818829143, 2148864332502771, - 2096001471438138, 2235017246626125 -#else - 7392013, 16618386, 23946583, 25514540, 53843699, 32020573, - 52911418, 31232855, 17649997, 33304352 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1299268198601632, 2047148477845621, 2165648650132450, - 1612539282026145, 514197911628890 -#else - 57807776, 19360604, 30609525, 30504889, 41933794, 32270679, - 51867297, 24028707, 64875610, 7662145 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 118352772338543, 1067608711804704, 1434796676193498, - 1683240170548391, 230866769907437 -#else - 49550191, 1763593, 33994528, 15908609, 37067994, 21380136, - 7335079, 25082233, 63934189, 3440182 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1850689576796636, 1601590730430274, 1139674615958142, - 1954384401440257, 76039205311 -#else - 47219164, 27577423, 42997570, 23865561, 10799742, 16982475, - 40449, 29122597, 4862399, 1133 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1723387471374172, 997301467038410, 533927635123657, - 20928644693965, 1756575222802513 -#else - 34252636, 25680474, 61686474, 14860949, 50789833, 7956141, - 7258061, 311861, 36513873, 26175010 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2146711623855116, 503278928021499, 625853062251406, - 1109121378393107, 1033853809911861 -#else - 63335436, 31988495, 28985339, 7499440, 24445838, 9325937, - 29727763, 16527196, 18278453, 15405622 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 571005965509422, 2005213373292546, 1016697270349626, - 56607856974274, 914438579435146 -#else - 62726958, 8508651, 47210498, 29880007, 61124410, 15149969, - 53795266, 843522, 45233802, 13626196 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1346698876211176, 2076651707527589, 1084761571110205, - 265334478828406, 1068954492309671 -#else - 2281448, 20067377, 56193445, 30944521, 1879357, 16164207, - 56324982, 3953791, 13340839, 15928663 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1769967932677654, 1695893319756416, 1151863389675920, - 1781042784397689, 400287774418285 -#else - 31727126, 26374577, 48671360, 25270779, 2875792, 17164102, - 41838969, 26539605, 43656557, 5964752 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1851867764003121, 403841933237558, 820549523771987, - 761292590207581, 1743735048551143 -#else - 4100401, 27594980, 49929526, 6017713, 48403027, 12227140, - 40424029, 11344143, 2538215, 25983677 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 410915148140008, 2107072311871739, 1004367461876503, - 99684895396761, 1180818713503224 -#else - 57675240, 6123112, 11159803, 31397824, 30016279, 14966241, - 46633881, 1485420, 66479608, 17595569 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 285945406881439, 648174397347453, 1098403762631981, - 1366547441102991, 1505876883139217 -#else - 40304287, 4260918, 11851389, 9658551, 35091757, 16367491, - 46903439, 20363143, 11659921, 22439314 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 672095903120153, 1675918957959872, 636236529315028, - 1569297300327696, 2164144194785875 -#else - 26180377, 10015009, 36264640, 24973138, 5418196, 9480663, - 2231568, 23384352, 33100371, 32248261 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1902708175321798, 1035343530915438, 1178560808893263, - 301095684058146, 1280977479761118 -#else - 15121094, 28352561, 56718958, 15427820, 39598927, 17561924, - 21670946, 4486675, 61177054, 19088051 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1615357281742403, 404257611616381, 2160201349780978, - 1160947379188955, 1578038619549541 -#else - 16166467, 24070699, 56004733, 6023907, 35182066, 32189508, - 2340059, 17299464, 56373093, 23514607 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2013087639791217, 822734930507457, 1785668418619014, - 1668650702946164, 389450875221715 -#else - 28042865, 29997343, 54982337, 12259705, 63391366, 26608532, - 6766452, 24864833, 18036435, 5803270 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 453918449698368, 106406819929001, 2072540975937135, - 308588860670238, 1304394580755385 -#else - 66291264, 6763911, 11803561, 1585585, 10958447, 30883267, - 23855390, 4598332, 60949433, 19436993 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1295082798350326, 2091844511495996, 1851348972587817, - 3375039684596, 789440738712837 -#else - 36077558, 19298237, 17332028, 31170912, 31312681, 27587249, - 696308, 50292, 47013125, 11763583 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2083069137186154, 848523102004566, 993982213589257, - 1405313299916317, 1532824818698468 -#else - 66514282, 31040148, 34874710, 12643979, 12650761, 14811489, - 665117, 20940800, 47335652, 22840869 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1495961298852430, 1397203457344779, 1774950217066942, - 139302743555696, 66603584342787 -#else - 30464590, 22291560, 62981387, 20819953, 19835326, 26448819, - 42712688, 2075772, 50088707, 992470 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1782411379088302, 1096724939964781, 27593390721418, - 542241850291353, 1540337798439873 -#else - 18357166, 26559999, 7766381, 16342475, 37783946, 411173, - 14578841, 8080033, 55534529, 22952821 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 693543956581437, 171507720360750, 1557908942697227, - 1074697073443438, 1104093109037196 -#else - 19598397, 10334610, 12555054, 2555664, 18821899, 23214652, - 21873262, 16014234, 26224780, 16452269 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 345288228393419, 1099643569747172, 134881908403743, - 1740551994106740, 248212179299770 -#else - 36884939, 5145195, 5944548, 16385966, 3976735, 2009897, - 55731060, 25936245, 46575034, 3698649 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 231429562203065, 1526290236421172, 2021375064026423, - 1520954495658041, 806337791525116 -#else - 14187449, 3448569, 56472628, 22743496, 44444983, 30120835, - 7268409, 22663988, 27394300, 12015369 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1079623667189886, 872403650198613, 766894200588288, - 2163700860774109, 2023464507911816 -#else - 19695742, 16087646, 28032085, 12999827, 6817792, 11427614, - 20244189, 32241655, 53849736, 30151970 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 854645372543796, 1936406001954827, 151460662541253, - 825325739271555, 1554306377287556 -#else - 30860084, 12735208, 65220619, 28854697, 50133957, 2256939, - 58942851, 12298311, 58558340, 23160969 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1497138821904622, 1044820250515590, 1742593886423484, - 1237204112746837, 849047450816987 -#else - 61389038, 22309106, 65198214, 15569034, 26642876, 25966672, - 61319509, 18435777, 62132699, 12651792 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 667962773375330, 1897271816877105, 1399712621683474, - 1143302161683099, 2081798441209593 -#else - 64260450, 9953420, 11531313, 28271553, 26895122, 20857343, - 53990043, 17036529, 9768697, 31021214 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 127147851567005, 1936114012888110, 1704424366552046, - 856674880716312, 716603621335359 -#else - 42389405, 1894650, 66821166, 28850346, 15348718, 25397902, - 32767512, 12765450, 4940095, 10678226 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1072409664800960, 2146937497077528, 1508780108920651, - 935767602384853, 1112800433544068 -#else - 18860224, 15980149, 48121624, 31991861, 40875851, 22482575, - 59264981, 13944023, 42736516, 16582018 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 333549023751292, 280219272863308, 2104176666454852, - 1036466864875785, 536135186520207 -#else - 51604604, 4970267, 37215820, 4175592, 46115652, 31354675, - 55404809, 15444559, 56105103, 7989036 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 373666279883137, 146457241530109, 304116267127857, - 416088749147715, 1258577131183391 -#else - 31490433, 5568061, 64696061, 2182382, 34772017, 4531685, - 35030595, 6200205, 47422751, 18754260 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1186115062588401, 2251609796968486, 1098944457878953, - 1153112761201374, 1791625503417267 -#else - 49800177, 17674491, 35586086, 33551600, 34221481, 16375548, - 8680158, 17182719, 28550067, 26697300 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1870078460219737, 2129630962183380, 852283639691142, - 292865602592851, 401904317342226 -#else - 38981977, 27866340, 16837844, 31733974, 60258182, 12700015, - 37068883, 4364037, 1155602, 5988841 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1361070124828035, 815664541425524, 1026798897364671, - 1951790935390647, 555874891834790 -#else - 21890435, 20281525, 54484852, 12154348, 59276991, 15300495, - 23148983, 29083951, 24618406, 8283181 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1546301003424277, 459094500062839, 1097668518375311, - 1780297770129643, 720763293687608 -#else - 33972757, 23041680, 9975415, 6841041, 35549071, 16356535, - 3070187, 26528504, 1466168, 10740210 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1212405311403990, 1536693382542438, 61028431067459, - 1863929423417129, 1223219538638038 -#else - 65599446, 18066246, 53605478, 22898515, 32799043, 909394, - 53169961, 27774712, 34944214, 18227391 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1294303766540260, 1183557465955093, 882271357233093, - 63854569425375, 2213283684565087 -#else - 3960804, 19286629, 39082773, 17636380, 47704005, 13146867, - 15567327, 951507, 63848543, 32980496 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 339050984211414, 601386726509773, 413735232134068, - 966191255137228, 1839475899458159 -#else - 24740822, 5052253, 37014733, 8961360, 25877428, 6165135, - 42740684, 14397371, 59728495, 27410326 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 235605972169408, 2174055643032978, 1538335001838863, - 1281866796917192, 1815940222628465 -#else - 38220480, 3510802, 39005586, 32395953, 55870735, 22922977, - 51667400, 19101303, 65483377, 27059617 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1632352921721536, 1833328609514701, 2092779091951987, - 1923956201873226, 2210068022482919 -#else - 793280, 24323954, 8836301, 27318725, 39747955, 31184838, - 33152842, 28669181, 57202663, 32932579 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 35271216625062, 1712350667021807, 983664255668860, - 98571260373038, 1232645608559836 -#else - 5666214, 525582, 20782575, 25516013, 42570364, 14657739, - 16099374, 1468826, 60937436, 18367850 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1998172393429622, 1798947921427073, 784387737563581, - 1589352214827263, 1589861734168180 -#else - 62249590, 29775088, 64191105, 26806412, 7778749, 11688288, - 36704511, 23683193, 65549940, 23690785 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1733739258725305, 31715717059538, 201969945218860, - 992093044556990, 1194308773174556 -#else - 10896313, 25834728, 824274, 472601, 47648556, 3009586, 25248958, - 14783338, 36527388, 17796587 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 846415389605137, 746163495539180, 829658752826080, - 592067705956946, 957242537821393 -#else - 10566929, 12612572, 35164652, 11118702, 54475488, 12362878, - 21752402, 8822496, 24003793, 14264025 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1758148849754419, 619249044817679, 168089007997045, - 1371497636330523, 1867101418880350 -#else - 27713843, 26198459, 56100623, 9227529, 27050101, 2504721, - 23886875, 20436907, 13958494, 27821979 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 326633984209635, 261759506071016, 1700682323676193, - 1577907266349064, 1217647663383016 -#else - 43627235, 4867225, 39861736, 3900520, 29838369, 25342141, - 35219464, 23512650, 7340520, 18144364 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1714182387328607, 1477856482074168, 574895689942184, - 2159118410227270, 1555532449716575 -#else - 4646495, 25543308, 44342840, 22021777, 23184552, 8566613, - 31366726, 32173371, 52042079, 23179239 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 853828206885131, 998498946036955, 1835887550391235, - 207627336608048, 258363815956050 -#else - 49838347, 12723031, 50115803, 14878793, 21619651, 27356856, - 27584816, 3093888, 58265170, 3849920 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 141141474651677, 1236728744905256, 643101419899887, - 1646615130509173, 1208239602291765 -#else - 58043933, 2103171, 25561640, 18428694, 61869039, 9582957, - 32477045, 24536477, 5002293, 18004173 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1501663228068911, 1354879465566912, 1444432675498247, - 897812463852601, 855062598754348 -#else - 55051311, 22376525, 21115584, 20189277, 8808711, 21523724, - 16489529, 13378448, 41263148, 12741425 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 714380763546606, 1032824444965790, 1774073483745338, - 1063840874947367, 1738680636537158 -#else - 61162478, 10645102, 36197278, 15390283, 63821882, 26435754, - 24306471, 15852464, 28834118, 25908360 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1640635546696252, 633168953192112, 2212651044092396, - 30590958583852, 368515260889378 -#else - 49773116, 24447374, 42577584, 9434952, 58636780, 32971069, - 54018092, 455840, 20461858, 5491305 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1171650314802029, 1567085444565577, 1453660792008405, - 757914533009261, 1619511342778196 -#else - 13669229, 17458950, 54626889, 23351392, 52539093, 21661233, - 42112877, 11293806, 38520660, 24132599 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 420958967093237, 971103481109486, 2169549185607107, - 1301191633558497, 1661514101014240 -#else - 28497909, 6272777, 34085870, 14470569, 8906179, 32328802, - 18504673, 19389266, 29867744, 24758489 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 907123651818302, 1332556122804146, 1824055253424487, - 1367614217442959, 1982558335973172 -#else - 50901822, 13517195, 39309234, 19856633, 24009063, 27180541, - 60741263, 20379039, 22853428, 29542421 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1121533090144639, 1021251337022187, 110469995947421, - 1511059774758394, 2110035908131662 -#else - 24191359, 16712145, 53177067, 15217830, 14542237, 1646131, - 18603514, 22516545, 12876622, 31441985 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 303213233384524, 2061932261128138, 352862124777736, - 40828818670255, 249879468482660 -#else - 17902668, 4518229, 66697162, 30725184, 26878216, 5258055, - 54248111, 608396, 16031844, 3723494 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 856559257852200, 508517664949010, 1378193767894916, - 1723459126947129, 1962275756614521 -#else - 38476072, 12763727, 46662418, 7577503, 33001348, 20536687, - 17558841, 25681542, 23896953, 29240187 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1445691340537320, 40614383122127, 402104303144865, - 485134269878232, 1659439323587426 -#else - 47103464, 21542479, 31520463, 605201, 2543521, 5991821, - 64163800, 7229063, 57189218, 24727572 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 20057458979482, 1183363722525800, 2140003847237215, - 2053873950687614, 2112017736174909 -#else - 28816026, 298879, 38943848, 17633493, 19000927, 31888542, - 54428030, 30605106, 49057085, 31471516 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2228654250927986, 1483591363415267, 1368661293910956, - 1076511285177291, 526650682059608 -#else - 16000882, 33209536, 3493091, 22107234, 37604268, 20394642, - 12577739, 16041268, 47393624, 7847706 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 709481497028540, 531682216165724, 316963769431931, - 1814315888453765, 258560242424104 -#else - 10151868, 10572098, 27312476, 7922682, 14825339, 4723128, - 34252933, 27035413, 57088296, 3852847 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1053447823660455, 1955135194248683, 1010900954918985, - 1182614026976701, 1240051576966610 -#else - 55678375, 15697595, 45987307, 29133784, 5386313, 15063598, - 16514493, 17622322, 29330898, 18478208 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1957943897155497, 1788667368028035, 137692910029106, - 1039519607062, 826404763313028 -#else - 41609129, 29175637, 51885955, 26653220, 16615730, 2051784, - 3303702, 15490, 39560068, 12314390 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1848942433095597, 1582009882530495, 1849292741020143, - 1068498323302788, 2001402229799484 -#else - 15683501, 27551389, 18109119, 23573784, 15337967, 27556609, - 50391428, 15921865, 16103996, 29823217 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1528282417624269, 2142492439828191, 2179662545816034, - 362568973150328, 1591374675250271 -#else - 43939021, 22773182, 13588191, 31925625, 63310306, 32479502, - 47835256, 5402698, 37293151, 23713330 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 160026679434388, 232341189218716, 2149181472355545, - 598041771119831, 183859001910173 -#else - 23190676, 2384583, 34394524, 3462153, 37205209, 32025299, - 55842007, 8911516, 41903005, 2739712 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2013278155187349, 662660471354454, 793981225706267, - 411706605985744, 804490933124791 -#else - 21374101, 30000182, 33584214, 9874410, 15377179, 11831242, - 33578960, 6134906, 4931255, 11987849 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2051892037280204, 488391251096321, 2230187337030708, - 930221970662692, 679002758255210 -#else - 67101132, 30575573, 50885377, 7277596, 105524, 33232381, - 35628324, 13861387, 37032554, 10117929 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1530723630438670, 875873929577927, 341560134269988, - 449903119530753, 1055551308214179 -#else - 37607694, 22809559, 40945095, 13051538, 41483300, 5089642, - 60783361, 6704078, 12890019, 15728940 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1461835919309432, 1955256480136428, 180866187813063, - 1551979252664528, 557743861963950 -#else - 45136504, 21783052, 66157804, 29135591, 14704839, 2695116, - 903376, 23126293, 12885166, 8311031 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 359179641731115, 1324915145732949, 902828372691474, - 294254275669987, 1887036027752957 -#else - 49592363, 5352193, 10384213, 19742774, 7506450, 13453191, - 26423267, 4384730, 1888765, 28119028 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2043271609454323, 2038225437857464, 1317528426475850, - 1398989128982787, 2027639881006861 -#else - 41291507, 30447119, 53614264, 30371925, 30896458, 19632703, - 34857219, 20846562, 47644429, 30214188 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2072902725256516, 312132452743412, 309930885642209, - 996244312618453, 1590501300352303 -#else - 43500868, 30888657, 66582772, 4651135, 5765089, 4618330, - 6092245, 14845197, 17151279, 23700316 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1397254305160710, 695734355138021, 2233992044438756, - 1776180593969996, 1085588199351115 -#else - 42278406, 20820711, 51942885, 10367249, 37577956, 33289075, - 22825804, 26467153, 50242379, 16176524 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 440567051331029, 254894786356681, 493869224930222, - 1556322069683366, 1567456540319218 -#else - 43525589, 6564960, 20063689, 3798228, 62368686, 7359224, - 2006182, 23191006, 38362610, 23356922 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1950722461391320, 1907845598854797, 1822757481635527, - 2121567704750244, 73811931471221 -#else - 56482264, 29068029, 53788301, 28429114, 3432135, 27161203, - 23632036, 31613822, 32808309, 1099883 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 387139307395758, 2058036430315676, 1220915649965325, - 1794832055328951, 1230009312169328 -#else - 15030958, 5768825, 39657628, 30667132, 60681485, 18193060, - 51830967, 26745081, 2051440, 18328567 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1765973779329517, 659344059446977, 19821901606666, - 1301928341311214, 1116266004075885 -#else - 63746541, 26315059, 7517889, 9824992, 23555850, 295369, 5148398, - 19400244, 44422509, 16633659 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1127572801181483, 1224743760571696, 1276219889847274, - 1529738721702581, 1589819666871853 -#else - 4577067, 16802144, 13249840, 18250104, 19958762, 19017158, - 18559669, 22794883, 8402477, 23690159 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2181229378964934, 2190885205260020, 1511536077659137, - 1246504208580490, 668883326494241 -#else - 38702534, 32502850, 40318708, 32646733, 49896449, 22523642, - 9453450, 18574360, 17983009, 9967138 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 437866655573314, 669026411194768, 81896997980338, - 523874406393178, 245052060935236 -#else - 41346370, 6524721, 26585488, 9969270, 24709298, 1220360, - 65430874, 7806336, 17507396, 3651560 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1975438052228868, 1071801519999806, 594652299224319, - 1877697652668809, 1489635366987285 -#else - 56688388, 29436320, 14584638, 15971087, 51340543, 8861009, - 26556809, 27979875, 48555541, 22197296 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 958592545673770, 233048016518599, 851568750216589, - 567703851596087, 1740300006094761 -#else - 2839082, 14284142, 4029895, 3472686, 14402957, 12689363, - 40466743, 8459446, 61503401, 25932490 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2014540178270324, 192672779514432, 213877182641530, - 2194819933853411, 1716422829364835 -#else - 62269556, 30018987, 9744960, 2871048, 25113978, 3187018, - 41998051, 32705365, 17258083, 25576693 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1540769606609725, 2148289943846077, 1597804156127445, - 1230603716683868, 815423458809453 -#else - 18164541, 22959256, 49953981, 32012014, 19237077, 23809137, - 23357532, 18337424, 26908269, 12150756 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1738560251245018, 1779576754536888, 1783765347671392, - 1880170990446751, 1088225159617541 -#else - 36843994, 25906566, 5112248, 26517760, 65609056, 26580174, - 43167, 28016731, 34806789, 16215818 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 659303913929492, 1956447718227573, 1830568515922666, - 841069049744408, 1669607124206368 -#else - 60209940, 9824393, 54804085, 29153342, 35711722, 27277596, - 32574488, 12532905, 59605792, 24879084 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1143465490433355, 1532194726196059, 1093276745494697, - 481041706116088, 2121405433561163 -#else - 39765323, 17038963, 39957339, 22831480, 946345, 16291093, - 254968, 7168080, 21676107, 31611404 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1686424298744462, 1451806974487153, 266296068846582, - 1834686947542675, 1720762336132256 -#else - 21260942, 25129680, 50276977, 21633609, 43430902, 3968120, - 63456915, 27338965, 63552672, 25641356 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 889217026388959, 1043290623284660, 856125087551909, - 1669272323124636, 1603340330827879 -#else - 16544735, 13250366, 50304436, 15546241, 62525861, 12757257, - 64646556, 24874095, 48201831, 23891632 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1206396181488998, 333158148435054, 1402633492821422, - 1120091191722026, 1945474114550509 -#else - 64693606, 17976703, 18312302, 4964443, 51836334, 20900867, - 26820650, 16690659, 25459437, 28989823 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 766720088232571, 1512222781191002, 1189719893490790, - 2091302129467914, 2141418006894941 -#else - 41964155, 11425019, 28423002, 22533875, 60963942, 17728207, - 9142794, 31162830, 60676445, 31909614 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 419663647306612, 1998875112167987, 1426599870253707, - 1154928355379510, 486538532138187 -#else - 44004212, 6253475, 16964147, 29785560, 41994891, 21257994, - 39651638, 17209773, 6335691, 7249989 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 938160078005954, 1421776319053174, 1941643234741774, - 180002183320818, 1414380336750546 -#else - 36775618, 13979674, 7503222, 21186118, 55152142, 28932738, - 36836594, 2682241, 25993170, 21075909 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 398001940109652, 1577721237663248, 1012748649830402, - 1540516006905144, 1011684812884559 -#else - 4364628, 5930691, 32304656, 23509878, 59054082, 15091130, - 22857016, 22955477, 31820367, 15075278 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1653276489969630, 6081825167624, 1921777941170836, - 1604139841794531, 861211053640641 -#else - 31879134, 24635739, 17258760, 90626, 59067028, 28636722, - 24162787, 23903546, 49138625, 12833044 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 996661541407379, 1455877387952927, 744312806857277, - 139213896196746, 1000282908547789 -#else - 19073683, 14851414, 42705695, 21694263, 7625277, 11091125, - 47489674, 2074448, 57694925, 14905376 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1450817495603008, 1476865707053229, 1030490562252053, - 620966950353376, 1744760161539058 -#else - 24483648, 21618865, 64589997, 22007013, 65555733, 15355505, - 41826784, 9253128, 27628530, 25998952 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 559728410002599, 37056661641185, 2038622963352006, - 1637244893271723, 1026565352238948 -#else - 17597607, 8340603, 19355617, 552187, 26198470, 30377849, - 4593323, 24396850, 52997988, 15297015 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 962165956135846, 1116599660248791, 182090178006815, - 1455605467021751, 196053588803284 -#else - 510886, 14337390, 35323607, 16638631, 6328095, 2713355, - 46891447, 21690211, 8683220, 2921426 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 796863823080135, 1897365583584155, 420466939481601, - 2165972651724672, 932177357788289 -#else - 18606791, 11874196, 27155355, 28272950, 43077121, 6265445, - 41930624, 32275507, 4674689, 13890525 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 877047233620632, 1375632631944375, 643773611882121, - 660022738847877, 19353932331831 -#else - 13609624, 13069022, 39736503, 20498523, 24360585, 9592974, - 14977157, 9835105, 4389687, 288396 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2216943882299338, 394841323190322, 2222656898319671, - 558186553950529, 1077236877025190 -#else - 9922506, 33035038, 13613106, 5883594, 48350519, 33120168, - 54804801, 8317627, 23388070, 16052080 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 801118384953213, 1914330175515892, 574541023311511, - 1471123787903705, 1526158900256288 -#else - 12719997, 11937594, 35138804, 28525742, 26900119, 8561328, - 46953177, 21921452, 52354592, 22741539 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 949617889087234, 2207116611267331, 912920039141287, - 501158539198789, 62362560771472 -#else - 15961858, 14150409, 26716931, 32888600, 44314535, 13603568, - 11829573, 7467844, 38286736, 929274 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1474518386765335, 1760793622169197, 1157399790472736, - 1622864308058898, 165428294422792 -#else - 11038231, 21972036, 39798381, 26237869, 56610336, 17246600, - 43629330, 24182562, 45715720, 2465073 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1961673048027128, 102619413083113, 1051982726768458, - 1603657989805485, 1941613251499678 -#else - 20017144, 29231206, 27915241, 1529148, 12396362, 15675764, - 13817261, 23896366, 2463390, 28932292 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1401939116319266, 335306339903072, 72046196085786, - 862423201496006, 850518754531384 -#else - 50749986, 20890520, 55043680, 4996453, 65852442, 1073571, - 9583558, 12851107, 4003896, 12673717 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1234706593321979, 1083343891215917, 898273974314935, - 1640859118399498, 157578398571149 -#else - 65377275, 18398561, 63845933, 16143081, 19294135, 13385325, - 14741514, 24450706, 7903885, 2348101 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1143483057726416, 1992614991758919, 674268662140796, - 1773370048077526, 674318359920189 -#else - 24536016, 17039225, 12715591, 29692277, 1511292, 10047386, - 63266518, 26425272, 38731325, 10048126 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1835401379538542, 173900035308392, 818247630716732, - 1762100412152786, 1021506399448291 -#else - 54486638, 27349611, 30718824, 2591312, 56491836, 12192839, - 18873298, 26257342, 34811107, 15221631 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1506632088156630, 2127481795522179, 513812919490255, - 140643715928370, 442476620300318 -#else - 40630742, 22450567, 11546243, 31701949, 9180879, 7656409, - 45764914, 2095754, 29769758, 6593415 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2056683376856736, 219094741662735, 2193541883188309, - 1841182310235800, 556477468664293 -#else - 35114656, 30646970, 4176911, 3264766, 12538965, 32686321, - 26312344, 27435754, 30958053, 8292160 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1315019427910827, 1049075855992603, 2066573052986543, - 266904467185534, 2040482348591520 -#else - 31429803, 19595316, 29173531, 15632448, 12174511, 30794338, - 32808830, 3977186, 26143136, 30405556 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 94096246544434, 922482381166992, 24517828745563, - 2139430508542503, 2097139044231004 -#else - 22648882, 1402143, 44308880, 13746058, 7936347, 365344, - 58440231, 31879998, 63350620, 31249806 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 537697207950515, 1399352016347350, 1563663552106345, - 2148749520888918, 549922092988516 -#else - 51616947, 8012312, 64594134, 20851969, 43143017, 23300402, - 65496150, 32018862, 50444388, 8194477 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1747985413252434, 680511052635695, 1809559829982725, - 594274250930054, 201673170745982 -#else - 27338066, 26047012, 59694639, 10140404, 48082437, 26964542, - 27277190, 8855376, 28572286, 3005164 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 323583936109569, 1973572998577657, 1192219029966558, - 79354804385273, 1374043025560347 -#else - 26287105, 4821776, 25476601, 29408529, 63344350, 17765447, - 49100281, 1182478, 41014043, 20474836 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 213277331329947, 416202017849623, 1950535221091783, - 1313441578103244, 2171386783823658 -#else - 59937691, 3178079, 23970071, 6201893, 49913287, 29065239, - 45232588, 19571804, 32208682, 32356184 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 189088804229831, 993969372859110, 895870121536987, - 1547301535298256, 1477373024911350 -#else - 50451143, 2817642, 56822502, 14811297, 6024667, 13349505, - 39793360, 23056589, 39436278, 22014573 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1620578418245010, 541035331188469, 2235785724453865, - 2154865809088198, 1974627268751826 -#else - 15941010, 24148500, 45741813, 8062054, 31876073, 33315803, - 51830470, 32110002, 15397330, 29424239 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1346805451740245, 1350981335690626, 942744349501813, - 2155094562545502, 1012483751693409 -#else - 8934485, 20068965, 43822466, 20131190, 34662773, 14047985, - 31170398, 32113411, 39603297, 15087183 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2107080134091762, 1132567062788208, 1824935377687210, - 769194804343737, 1857941799971888 -#else - 48751602, 31397940, 24524912, 16876564, 15520426, 27193656, - 51606457, 11461895, 16788528, 27685490 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1074666112436467, 249279386739593, 1174337926625354, - 1559013532006480, 1472287775519121 -#else - 65161459, 16013772, 21750665, 3714552, 49707082, 17498998, - 63338576, 23231111, 31322513, 21938797 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1872620123779532, 1892932666768992, 1921559078394978, - 1270573311796160, 1438913646755037 -#else - 21426636, 27904214, 53460576, 28206894, 38296674, 28633461, - 48833472, 18933017, 13040861, 21441484 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 837390187648199, 1012253300223599, 989780015893987, - 1351393287739814, 328627746545550 -#else - 11293895, 12478086, 39972463, 15083749, 37801443, 14748871, - 14555558, 20137329, 1613710, 4896935 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1028328827183114, 1711043289969857, 1350832470374933, - 1923164689604327, 1495656368846911 -#else - 41213962, 15323293, 58619073, 25496531, 25967125, 20128972, - 2825959, 28657387, 43137087, 22287016 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1900828492104143, 430212361082163, 687437570852799, - 832514536673512, 1685641495940794 -#else - 51184079, 28324551, 49665331, 6410663, 3622847, 10243618, - 20615400, 12405433, 43355834, 25118015 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 842632847936398, 605670026766216, 290836444839585, - 163210774892356, 2213815011799645 -#else - 60017550, 12556207, 46917512, 9025186, 50036385, 4333800, - 4378436, 2432030, 23097949, 32988414 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1176336383453996, 1725477294339771, 12700622672454, - 678015708818208, 162724078519879 -#else - 4565804, 17528778, 20084411, 25711615, 1724998, 189254, - 24767264, 10103221, 48596551, 2424777 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1448049969043497, 1789411762943521, 385587766217753, - 90201620913498, 832999441066823 -#else - 366633, 21577626, 8173089, 26664313, 30788633, 5745705, - 59940186, 1344108, 63466311, 12412658 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 516086333293313, 2240508292484616, 1351669528166508, - 1223255565316488, 750235824427138 -#else - 43107073, 7690285, 14929416, 33386175, 34898028, 20141445, - 24162696, 18227928, 63967362, 11179384 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1263624896582495, 1102602401673328, 526302183714372, - 2152015839128799, 1483839308490010 -#else - 18289503, 18829478, 8056944, 16430056, 45379140, 7842513, - 61107423, 32067534, 48424218, 22110928 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 442991718646863, 1599275157036458, 1925389027579192, - 899514691371390, 350263251085160 -#else - 476239, 6601091, 60956074, 23831056, 17503544, 28690532, - 27672958, 13403813, 11052904, 5219329 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1689713572022143, 593854559254373, 978095044791970, - 1985127338729499, 1676069120347625 -#else - 20678527, 25178694, 34436965, 8849122, 62099106, 14574751, - 31186971, 29580702, 9014761, 24975376 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1557207018622683, 340631692799603, 1477725909476187, - 614735951619419, 2033237123746766 -#else - 53464795, 23204192, 51146355, 5075807, 65594203, 22019831, - 34006363, 9160279, 8473550, 30297594 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 968764929340557, 1225534776710944, 662967304013036, - 1155521416178595, 791142883466590 -#else - 24900749, 14435722, 17209120, 18261891, 44516588, 9878982, - 59419555, 17218610, 42540382, 11788947 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1487081286167458, 993039441814934, 1792378982844640, - 698652444999874, 2153908693179754 -#else - 63990690, 22159237, 53306774, 14797440, 9652448, 26708528, - 47071426, 10410732, 42540394, 32095740 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1123181311102823, 685575944875442, 507605465509927, - 1412590462117473, 568017325228626 -#else - 51449703, 16736705, 44641714, 10215877, 58011687, 7563910, - 11871841, 21049238, 48595538, 8464117 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 560258797465417, 2193971151466401, 1824086900849026, - 579056363542056, 1690063960036441 -#else - 43708233, 8348506, 52522913, 32692717, 63158658, 27181012, - 14325288, 8628612, 33313881, 25183915 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1918407319222416, 353767553059963, 1930426334528099, - 1564816146005724, 1861342381708096 -#else - 46921872, 28586496, 22367355, 5271547, 66011747, 28765593, - 42303196, 23317577, 58168128, 27736162 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2131325168777276, 1176636658428908, 1756922641512981, - 1390243617176012, 1966325177038383 -#else - 60160060, 31759219, 34483180, 17533252, 32635413, 26180187, - 15989196, 20716244, 28358191, 29300528 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2063958120364491, 2140267332393533, 699896251574968, - 273268351312140, 375580724713232 -#else - 43547083, 30755372, 34757181, 31892468, 57961144, 10429266, - 50471180, 4072015, 61757200, 5596588 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2024297515263178, 416959329722687, 1079014235017302, - 171612225573183, 1031677520051053 -#else - 38872266, 30164383, 12312895, 6213178, 3117142, 16078565, - 29266239, 2557221, 1768301, 15373193 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2033900009388450, 1744902869870788, 2190580087917640, - 1949474984254121, 231049754293748 -#else - 59865506, 30307471, 62515396, 26001078, 66980936, 32642186, - 66017961, 29049440, 42448372, 3442909 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 343868674606581, 550155864008088, 1450580864229630, - 481603765195050, 896972360018042 -#else - 36898293, 5124042, 14181784, 8197961, 18964734, 21615339, - 22597930, 7176455, 48523386, 13365929 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2151139328380127, 314745882084928, 59756825775204, - 1676664391494651, 2048348075599360 -#else - 59231455, 32054473, 8324672, 4690079, 6261860, 890446, 24538107, - 24984246, 57419264, 30522764 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1528930066340597, 1605003907059576, 1055061081337675, - 1458319101947665, 1234195845213142 -#else - 25008885, 22782833, 62803832, 23916421, 16265035, 15721635, - 683793, 21730648, 15723478, 18390951 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 830430507734812, 1780282976102377, 1425386760709037, - 362399353095425, 2168861579799910 -#else - 57448220, 12374378, 40101865, 26528283, 59384749, 21239917, - 11879681, 5400171, 519526, 32318556 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1155762232730333, 980662895504006, 2053766700883521, - 490966214077606, 510405877041357 -#else - 22258397, 17222199, 59239046, 14613015, 44588609, 30603508, - 46754982, 7315966, 16648397, 7605640 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1683750316716132, 652278688286128, 1221798761193539, - 1897360681476669, 319658166027343 -#else - 59027556, 25089834, 58885552, 9719709, 19259459, 18206220, - 23994941, 28272877, 57640015, 4763277 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 618808732869972, 72755186759744, 2060379135624181, - 1730731526741822, 48862757828238 -#else - 45409620, 9220968, 51378240, 1084136, 41632757, 30702041, - 31088446, 25789909, 55752334, 728111 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1463171970593505, 1143040711767452, 614590986558883, - 1409210575145591, 1882816996436803 -#else - 26047201, 21802961, 60208540, 17032633, 24092067, 9158119, - 62835319, 20998873, 37743427, 28056159 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2230133264691131, 563950955091024, 2042915975426398, - 827314356293472, 672028980152815 -#else - 17510331, 33231575, 5854288, 8403524, 17133918, 30441820, - 38997856, 12327944, 10750447, 10014012 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 264204366029760, 1654686424479449, 2185050199932931, - 2207056159091748, 506015669043634 -#else - 56796096, 3936951, 9156313, 24656749, 16498691, 32559785, - 39627812, 32887699, 3424690, 7540221 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1784446333136569, 1973746527984364, 334856327359575, - 1156769775884610, 1023950124675478 -#else - 30322361, 26590322, 11361004, 29411115, 7433303, 4989748, - 60037442, 17237212, 57864598, 15258045 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2065270940578383, 31477096270353, 306421879113491, - 181958643936686, 1907105536686083 -#else - 13054543, 30774935, 19155473, 469045, 54626067, 4566041, - 5631406, 2711395, 1062915, 28418087 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1496516440779464, 1748485652986458, 872778352227340, - 818358834654919, 97932669284220 -#else - 47868616, 22299832, 37599834, 26054466, 61273100, 13005410, - 61042375, 12194496, 32960380, 1459310 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 471636015770351, 672455402793577, 1804995246884103, - 1842309243470804, 1501862504981682 -#else - 19852015, 7027924, 23669353, 10020366, 8586503, 26896525, - 394196, 27452547, 18638002, 22379495 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1013216974933691, 538921919682598, 1915776722521558, - 1742822441583877, 1886550687916656 -#else - 31395515, 15098109, 26581030, 8030562, 50580950, 28547297, - 9012485, 25970078, 60465776, 28111795 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2094270000643336, 303971879192276, 40801275554748, - 649448917027930, 1818544418535447 -#else - 57916680, 31207054, 65111764, 4529533, 25766844, 607986, - 67095642, 9677542, 34813975, 27098423 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2241737709499165, 549397817447461, 838180519319392, - 1725686958520781, 1705639080897747 -#else - 64664349, 33404494, 29348901, 8186665, 1873760, 12489863, - 36174285, 25714739, 59256019, 25416002 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1216074541925116, 50120933933509, 1565829004133810, - 721728156134580, 349206064666188 -#else - 51872508, 18120922, 7766469, 746860, 26346930, 23332670, - 39775412, 10754587, 57677388, 5203575 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 948617110470858, 346222547451945, 1126511960599975, - 1759386906004538, 493053284802266 -#else - 31834314, 14135496, 66338857, 5159117, 20917671, 16786336, - 59640890, 26216907, 31809242, 7347066 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1454933046815146, 874696014266362, 1467170975468588, - 1432316382418897, 2111710746366763 -#else - 57502122, 21680191, 20414458, 13033986, 13716524, 21862551, - 19797969, 21343177, 15192875, 31466942 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2105387117364450, 1996463405126433, 1303008614294500, - 851908115948209, 1353742049788635 -#else - 54445282, 31372712, 1168161, 29749623, 26747876, 19416341, - 10609329, 12694420, 33473243, 20172328 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 750300956351719, 1487736556065813, 15158817002104, - 1511998221598392, 971739901354129 -#else - 33184999, 11180355, 15832085, 22169002, 65475192, 225883, - 15089336, 22530529, 60973201, 14480052 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1874648163531693, 2124487685930551, 1810030029384882, - 918400043048335, 586348627300650 -#else - 31308717, 27934434, 31030839, 31657333, 15674546, 26971549, - 5496207, 13685227, 27595050, 8737275 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1235084464747900, 1166111146432082, 1745394857881591, - 1405516473883040, 4463504151617 -#else - 46790012, 18404192, 10933842, 17376410, 8335351, 26008410, - 36100512, 20943827, 26498113, 66511 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1663810156463827, 327797390285791, 1341846161759410, - 1964121122800605, 1747470312055380 -#else - 22644435, 24792703, 50437087, 4884561, 64003250, 19995065, - 30540765, 29267685, 53781076, 26039336 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 660005247548233, 2071860029952887, 1358748199950107, - 911703252219107, 1014379923023831 -#else - 39091017, 9834844, 18617207, 30873120, 63706907, 20246925, - 8205539, 13585437, 49981399, 15115438 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2206641276178231, 1690587809721504, 1600173622825126, - 2156096097634421, 1106822408548216 -#else - 23711543, 32881517, 31206560, 25191721, 6164646, 23844445, - 33572981, 32128335, 8236920, 16492939 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1344788193552206, 1949552134239140, 1735915881729557, - 675891104100469, 1834220014427292 -#else - 43198286, 20038905, 40809380, 29050590, 25005589, 25867162, - 19574901, 10071562, 6708380, 27332008 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1920949492387964, 158885288387530, 70308263664033, - 626038464897817, 1468081726101009 -#else - 2101372, 28624378, 19702730, 2367575, 51681697, 1047674, - 5301017, 9328700, 29955601, 21876122 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 622221042073383, 1210146474039168, 1742246422343683, - 1403839361379025, 417189490895736 -#else - 3096359, 9271816, 45488000, 18032587, 52260867, 25961494, - 41216721, 20918836, 57191288, 6216607 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 22727256592983, 168471543384997, 1324340989803650, - 1839310709638189, 504999476432775 -#else - 34493015, 338662, 41913253, 2510421, 37895298, 19734218, - 24822829, 27407865, 40341383, 7525078 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1313240518756327, 1721896294296942, 52263574587266, - 2065069734239232, 804910473424630 -#else - 44042215, 19568808, 16133486, 25658254, 63719298, 778787, - 66198528, 30771936, 47722230, 11994100 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1337466662091884, 1287645354669772, 2018019646776184, - 652181229374245, 898011753211715 -#else - 21691500, 19929806, 66467532, 19187410, 3285880, 30070836, - 42044197, 9718257, 59631427, 13381417 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1969792547910734, 779969968247557, 2011350094423418, - 1823964252907487, 1058949448296945 -#else - 18445390, 29352196, 14979845, 11622458, 65381754, 29971451, - 23111647, 27179185, 28535281, 15779576 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 207343737062002, 1118176942430253, 758894594548164, - 806764629546266, 1157700123092949 -#else - 30098034, 3089662, 57874477, 16662134, 45801924, 11308410, - 53040410, 12021729, 9955285, 17251076 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1273565321399022, 1638509681964574, 759235866488935, - 666015124346707, 897983460943405 -#else - 9734894, 18977602, 59635230, 24415696, 2060391, 11313496, - 48682835, 9924398, 20194861, 13380996 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1717263794012298, 1059601762860786, 1837819172257618, - 1054130665797229, 680893204263559 -#else - 40730762, 25589224, 44941042, 15789296, 49053522, 27385639, - 65123949, 15707770, 26342023, 10146099 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2237039662793603, 2249022333361206, 2058613546633703, - 149454094845279, 2215176649164582 -#else - 41091971, 33334488, 21339190, 33513044, 19745255, 30675732, - 37471583, 2227039, 21612326, 33008704 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 79472182719605, 1851130257050174, 1825744808933107, - 821667333481068, 781795293511946 -#else - 54031477, 1184227, 23562814, 27583990, 46757619, 27205717, - 25764460, 12243797, 46252298, 11649657 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 755822026485370, 152464789723500, 1178207602290608, - 410307889503239, 156581253571278 -#else - 57077370, 11262625, 27384172, 2271902, 26947504, 17556661, - 39943, 6114064, 33514190, 2333242 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1418185496130297, 484520167728613, 1646737281442950, - 1401487684670265, 1349185550126961 -#else - 45675257, 21132610, 8119781, 7219913, 45278342, 24538297, - 60429113, 20883793, 24350577, 20104431 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1495380034400429, 325049476417173, 46346894893933, - 1553408840354856, 828980101835683 -#else - 62992557, 22282898, 43222677, 4843614, 37020525, 690622, - 35572776, 23147595, 8317859, 12352766 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1280337889310282, 2070832742866672, 1640940617225222, - 2098284908289951, 450929509534434 -#else - 18200138, 19078521, 34021104, 30857812, 43406342, 24451920, - 43556767, 31266881, 20712162, 6719373 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 407703353998781, 126572141483652, 286039827513621, - 1999255076709338, 2030511179441770 -#else - 26656189, 6075253, 59250308, 1886071, 38764821, 4262325, - 11117530, 29791222, 26224234, 30256974 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1254958221100483, 1153235960999843, 942907704968834, - 637105404087392, 1149293270147267 -#else - 49939907, 18700334, 63713187, 17184554, 47154818, 14050419, - 21728352, 9493610, 18620611, 17125804 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 894249020470196, 400291701616810, 406878712230981, - 1599128793487393, 1145868722604026 -#else - 53785524, 13325348, 11432106, 5964811, 18609221, 6062965, - 61839393, 23828875, 36407290, 17074774 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1497955250203334, 110116344653260, 1128535642171976, - 1900106496009660, 129792717460909 -#else - 43248326, 22321272, 26961356, 1640861, 34695752, 16816491, - 12248508, 28313793, 13735341, 1934062 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 452487513298665, 1352120549024569, 1173495883910956, - 1999111705922009, 367328130454226 -#else - 25089769, 6742589, 17081145, 20148166, 21909292, 17486451, - 51972569, 29789085, 45830866, 5473615 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1717539401269642, 1475188995688487, 891921989653942, - 836824441505699, 1885988485608364 -#else - 31883658, 25593331, 1083431, 21982029, 22828470, 13290673, - 59983779, 12469655, 29111212, 28103418 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1241784121422547, 187337051947583, 1118481812236193, - 428747751936362, 30358898927325 -#else - 24244947, 18504025, 40845887, 2791539, 52111265, 16666677, - 24367466, 6388839, 56813277, 452382 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2022432361201842, 1088816090685051, 1977843398539868, - 1854834215890724, 564238862029357 -#else - 41468082, 30136590, 5217915, 16224624, 19987036, 29472163, - 42872612, 27639183, 15766061, 8407814 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 938868489100585, 1100285072929025, 1017806255688848, - 1957262154788833, 152787950560442 -#else - 46701865, 13990230, 15495425, 16395525, 5377168, 15166495, - 58191841, 29165478, 59040954, 2276717 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 867319417678923, 620471962942542, 226032203305716, - 342001443957629, 1761675818237336 -#else - 30157899, 12924066, 49396814, 9245752, 19895028, 3368142, - 43281277, 5096218, 22740376, 26251015 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1295072362439987, 931227904689414, 1355731432641687, - 922235735834035, 892227229410209 -#else - 2041139, 19298082, 7783686, 13876377, 41161879, 20201972, - 24051123, 13742383, 51471265, 13295221 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1680989767906154, 535362787031440, 2136691276706570, - 1942228485381244, 1267350086882274 -#else - 33338218, 25048699, 12532112, 7977527, 9106186, 31839181, - 49388668, 28941459, 62657506, 18884987 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 366018233770527, 432660629755596, 126409707644535, - 1973842949591662, 645627343442376 -#else - 47063583, 5454096, 52762316, 6447145, 28862071, 1883651, - 64639598, 29412551, 7770568, 9620597 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 535509430575217, 546885533737322, 1524675609547799, - 2138095752851703, 1260738089896827 -#else - 23208049, 7979712, 33071466, 8149229, 1758231, 22719437, - 30945527, 31860109, 33606523, 18786461 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1159906385590467, 2198530004321610, 714559485023225, - 81880727882151, 1484020820037082 -#else - 1439939, 17283952, 66028874, 32760649, 4625401, 10647766, - 62065063, 1220117, 30494170, 22113633 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1377485731340769, 2046328105512000, 1802058637158797, - 62146136768173, 1356993908853901 -#else - 62071265, 20526136, 64138304, 30492664, 15640973, 26852766, - 40369837, 926049, 65424525, 20220784 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2013612215646735, 1830770575920375, 536135310219832, - 609272325580394, 270684344495013 -#else - 13908495, 30005160, 30919927, 27280607, 45587000, 7989038, - 9021034, 9078865, 3353509, 4033511 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1237542585982777, 2228682050256790, 1385281931622824, - 593183794882890, 493654978552689 -#else - 37445433, 18440821, 32259990, 33209950, 24295848, 20642309, - 23161162, 8839127, 27485041, 7356032 -#endif - }}, - }, - }, - { - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 47341488007760, 1891414891220257, 983894663308928, - 176161768286818, 1126261115179708 -#else - 9661008, 705443, 11980065, 28184278, 65480320, 14661172, - 60762722, 2625014, 28431036, 16782598 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1694030170963455, 502038567066200, 1691160065225467, - 949628319562187, 275110186693066 -#else - 43269631, 25243016, 41163352, 7480957, 49427195, 25200248, - 44562891, 14150564, 15970762, 4099461 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1124515748676336, 1661673816593408, 1499640319059718, - 1584929449166988, 558148594103306 -#else - 29262576, 16756590, 26350592, 24760869, 8529670, 22346382, - 13617292, 23617289, 11465738, 8317062 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1784525599998356, 1619698033617383, 2097300287550715, - 258265458103756, 1905684794832758 -#else - 41615764, 26591503, 32500199, 24135381, 44070139, 31252209, - 14898636, 3848455, 20969334, 28396916 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1288941072872766, 931787902039402, 190731008859042, - 2006859954667190, 1005931482221702 -#else - 46724414, 19206718, 48772458, 13884721, 34069410, 2842113, - 45498038, 29904543, 11177094, 14989547 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1465551264822703, 152905080555927, 680334307368453, - 173227184634745, 666407097159852 -#else - 42612143, 21838415, 16959895, 2278463, 12066309, 10137771, - 13515641, 2581286, 38621356, 9930239 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2111017076203943, 1378760485794347, 1248583954016456, - 1352289194864422, 1895180776543896 -#else - 49357223, 31456605, 16544299, 20545132, 51194056, 18605350, - 18345766, 20150679, 16291480, 28240394 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 171348223915638, 662766099800389, 462338943760497, - 466917763340314, 656911292869115 -#else - 33879670, 2553287, 32678213, 9875984, 8534129, 6889387, - 57432090, 6957616, 4368891, 9788741 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 488623681976577, 866497561541722, 1708105560937768, - 1673781214218839, 1506146329818807 -#else - 16660737, 7281060, 56278106, 12911819, 20108584, 25452756, - 45386327, 24941283, 16250551, 22443329 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 160425464456957, 950394373239689, 430497123340934, - 711676555398832, 320964687779005 -#else - 47343357, 2390525, 50557833, 14161979, 1905286, 6414907, - 4689584, 10604807, 36918461, 4782746 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 988979367990485, 1359729327576302, 1301834257246029, - 294141160829308, 29348272277475 -#else - 65754325, 14736940, 59741422, 20261545, 7710541, 19398842, - 57127292, 4383044, 22546403, 437323 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1434382743317910, 100082049942065, 221102347892623, - 186982837860588, 1305765053501834 -#else - 31665558, 21373968, 50922033, 1491338, 48740239, 3294681, - 27343084, 2786261, 36475274, 19457415 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 2205916462268190, 499863829790820, 961960554686616, - 158062762756985, 1841471168298305 -#else - 52641566, 32870716, 33734756, 7448551, 19294360, 14334329, - 47418233, 2355318, 47824193, 27440058 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1191737341426592, 1847042034978363, 1382213545049056, - 1039952395710448, 788812858896859 -#else - 15121312, 17758270, 6377019, 27523071, 56310752, 20596586, - 18952176, 15496498, 37728731, 11754227 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1346965964571152, 1291881610839830, 2142916164336056, - 786821641205979, 1571709146321039 -#else - 64471568, 20071356, 8488726, 19250536, 12728760, 31931939, - 7141595, 11724556, 22761615, 23420291 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 787164375951248, 202869205373189, 1356590421032140, - 1431233331032510, 786341368775957 -#else - 16918416, 11729663, 49025285, 3022986, 36093132, 20214772, - 38367678, 21327038, 32851221, 11717399 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 492448143532951, 304105152670757, 1761767168301056, - 233782684697790, 1981295323106089 -#else - 11166615, 7338049, 60386341, 4531519, 37640192, 26252376, - 31474878, 3483633, 65915689, 29523600 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 665807507761866, 1343384868355425, 895831046139653, - 439338948736892, 1986828765695105 -#else - 66923210, 9921304, 31456609, 20017994, 55095045, 13348922, - 33142652, 6546660, 47123585, 29606055 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 756096210874553, 1721699973539149, 258765301727885, - 1390588532210645, 1212530909934781 -#else - 34648249, 11266711, 55911757, 25655328, 31703693, 3855903, - 58571733, 20721383, 36336829, 18068118 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 852891097972275, 1816988871354562, 1543772755726524, - 1174710635522444, 202129090724628 -#else - 49102387, 12709067, 3991746, 27075244, 45617340, 23004006, - 35973516, 17504552, 10928916, 3011958 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1205281565824323, 22430498399418, 992947814485516, - 1392458699738672, 688441466734558 -#else - 60151107, 17960094, 31696058, 334240, 29576716, 14796075, - 36277808, 20749251, 18008030, 10258577 -#endif - }}, - }, - { - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1050627428414972, 1955849529137135, 2171162376368357, - 91745868298214, 447733118757826 -#else - 44660220, 15655568, 7018479, 29144429, 36794597, 32352840, - 65255398, 1367119, 25127874, 6671743 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1287181461435438, 622722465530711, 880952150571872, - 741035693459198, 311565274989772 -#else - 29701166, 19180498, 56230743, 9279287, 67091296, 13127209, - 21382910, 11042292, 25838796, 4642684 -#endif - }}, - {{ -#if defined(BORINGSSL_CURVE25519_64BIT) - 1003649078149734, 545233927396469, 1849786171789880, - 1318943684880434, 280345687170552 -#else - 46678630, 14955536, 42982517, 8124618, 61739576, 27563961, - 30468146, 19653792, 18423288, 4177476 -#endif - }}, + {0x85, 0x3b, 0x8c, 0xf5, 0xc6, 0x93, 0xbc, 0x2f, 0x19, 0xe, 0x8c, + 0xfb, 0xc6, 0x2d, 0x93, 0xcf, 0xc2, 0x42, 0x3d, 0x64, 0x98, 0x48, + 0xb, 0x27, 0x65, 0xba, 0xd4, 0x33, 0x3a, 0x9d, 0xcf, 0x7}, + {0x3e, 0x91, 0x40, 0xd7, 0x5, 0x39, 0x10, 0x9d, 0xb3, 0xbe, 0x40, + 0xd1, 0x5, 0x9f, 0x39, 0xfd, 0x9, 0x8a, 0x8f, 0x68, 0x34, 0x84, + 0xc1, 0xa5, 0x67, 0x12, 0xf8, 0x98, 0x92, 0x2f, 0xfd, 0x44}, + {0x68, 0xaa, 0x7a, 0x87, 0x5, 0x12, 0xc9, 0xab, 0x9e, 0xc4, 0xaa, + 0xcc, 0x23, 0xe8, 0xd9, 0x26, 0x8c, 0x59, 0x43, 0xdd, 0xcb, 0x7d, + 0x1b, 0x5a, 0xa8, 0x65, 0xc, 0x9f, 0x68, 0x7b, 0x11, 0x6f}, + }, + { + {0xd7, 0x71, 0x3c, 0x93, 0xfc, 0xe7, 0x24, 0x92, 0xb5, 0xf5, 0xf, + 0x7a, 0x96, 0x9d, 0x46, 0x9f, 0x2, 0x7, 0xd6, 0xe1, 0x65, 0x9a, + 0xa6, 0x5a, 0x2e, 0x2e, 0x7d, 0xa8, 0x3f, 0x6, 0xc, 0x59}, + {0xa8, 0xd5, 0xb4, 0x42, 0x60, 0xa5, 0x99, 0x8a, 0xf6, 0xac, 0x60, + 0x4e, 0xc, 0x81, 0x2b, 0x8f, 0xaa, 0x37, 0x6e, 0xb1, 0x6b, 0x23, + 0x9e, 0xe0, 0x55, 0x25, 0xc9, 0x69, 0xa6, 0x95, 0xb5, 0x6b}, + {0x5f, 0x7a, 0x9b, 0xa5, 0xb3, 0xa8, 0xfa, 0x43, 0x78, 0xcf, 0x9a, + 0x5d, 0xdd, 0x6b, 0xc1, 0x36, 0x31, 0x6a, 0x3d, 0xb, 0x84, 0xa0, + 0xf, 0x50, 0x73, 0xb, 0xa5, 0x3e, 0xb1, 0xf5, 0x1a, 0x70}, + }, + { + {0x30, 0x97, 0xee, 0x4c, 0xa8, 0xb0, 0x25, 0xaf, 0x8a, 0x4b, 0x86, + 0xe8, 0x30, 0x84, 0x5a, 0x2, 0x32, 0x67, 0x1, 0x9f, 0x2, 0x50, + 0x1b, 0xc1, 0xf4, 0xf8, 0x80, 0x9a, 0x1b, 0x4e, 0x16, 0x7a}, + {0x65, 0xd2, 0xfc, 0xa4, 0xe8, 0x1f, 0x61, 0x56, 0x7d, 0xba, 0xc1, + 0xe5, 0xfd, 0x53, 0xd3, 0x3b, 0xbd, 0xd6, 0x4b, 0x21, 0x1a, 0xf3, + 0x31, 0x81, 0x62, 0xda, 0x5b, 0x55, 0x87, 0x15, 0xb9, 0x2a}, + {0x89, 0xd8, 0xd0, 0xd, 0x3f, 0x93, 0xae, 0x14, 0x62, 0xda, 0x35, + 0x1c, 0x22, 0x23, 0x94, 0x58, 0x4c, 0xdb, 0xf2, 0x8c, 0x45, 0xe5, + 0x70, 0xd1, 0xc6, 0xb4, 0xb9, 0x12, 0xaf, 0x26, 0x28, 0x5a}, + }, + { + {0x9f, 0x9, 0xfc, 0x8e, 0xb9, 0x51, 0x73, 0x28, 0x38, 0x25, 0xfd, + 0x7d, 0xf4, 0xc6, 0x65, 0x67, 0x65, 0x92, 0xa, 0xfb, 0x3d, 0x8d, + 0x34, 0xca, 0x27, 0x87, 0xe5, 0x21, 0x3, 0x91, 0xe, 0x68}, + {0xbf, 0x18, 0x68, 0x5, 0xa, 0x5, 0xfe, 0x95, 0xa9, 0xfa, 0x60, + 0x56, 0x71, 0x89, 0x7e, 0x32, 0x73, 0x50, 0xa0, 0x6, 0xcd, 0xe3, + 0xe8, 0xc3, 0x9a, 0xa4, 0x45, 0x74, 0x4c, 0x3f, 0x93, 0x27}, + {0x9, 0xff, 0x76, 0xc4, 0xe9, 0xfb, 0x13, 0x5a, 0x72, 0xc1, 0x5c, + 0x7b, 0x45, 0x39, 0x9e, 0x6e, 0x94, 0x44, 0x2b, 0x10, 0xf9, 0xdc, + 0xdb, 0x5d, 0x2b, 0x3e, 0x55, 0x63, 0xbf, 0xc, 0x9d, 0x7f}, + }, + { + {0x33, 0xbb, 0xa5, 0x8, 0x44, 0xbc, 0x12, 0xa2, 0x2, 0xed, 0x5e, + 0xc7, 0xc3, 0x48, 0x50, 0x8d, 0x44, 0xec, 0xbf, 0x5a, 0xc, 0xeb, + 0x1b, 0xdd, 0xeb, 0x6, 0xe2, 0x46, 0xf1, 0xcc, 0x45, 0x29}, + {0xba, 0xd6, 0x47, 0xa4, 0xc3, 0x82, 0x91, 0x7f, 0xb7, 0x29, 0x27, + 0x4b, 0xd1, 0x14, 0x0, 0xd5, 0x87, 0xa0, 0x64, 0xb8, 0x1c, 0xf1, + 0x3c, 0xe3, 0xf3, 0x55, 0x1b, 0xeb, 0x73, 0x7e, 0x4a, 0x15}, + {0x85, 0x82, 0x2a, 0x81, 0xf1, 0xdb, 0xbb, 0xbc, 0xfc, 0xd1, 0xbd, + 0xd0, 0x7, 0x8, 0xe, 0x27, 0x2d, 0xa7, 0xbd, 0x1b, 0xb, 0x67, + 0x1b, 0xb4, 0x9a, 0xb6, 0x3b, 0x6b, 0x69, 0xbe, 0xaa, 0x43}, + }, + { + {0x31, 0x71, 0x15, 0x77, 0xeb, 0xee, 0xc, 0x3a, 0x88, 0xaf, 0xc8, + 0x0, 0x89, 0x15, 0x27, 0x9b, 0x36, 0xa7, 0x59, 0xda, 0x68, 0xb6, + 0x65, 0x80, 0xbd, 0x38, 0xcc, 0xa2, 0xb6, 0x7b, 0xe5, 0x51}, + {0xa4, 0x8c, 0x7d, 0x7b, 0xb6, 0x6, 0x98, 0x49, 0x39, 0x27, 0xd2, + 0x27, 0x84, 0xe2, 0x5b, 0x57, 0xb9, 0x53, 0x45, 0x20, 0xe7, 0x5c, + 0x8, 0xbb, 0x84, 0x78, 0x41, 0xae, 0x41, 0x4c, 0xb6, 0x38}, + {0x71, 0x4b, 0xea, 0x2, 0x67, 0x32, 0xac, 0x85, 0x1, 0xbb, 0xa1, + 0x41, 0x3, 0xe0, 0x70, 0xbe, 0x44, 0xc1, 0x3b, 0x8, 0x4b, 0xa2, + 0xe4, 0x53, 0xe3, 0x61, 0xd, 0x9f, 0x1a, 0xe9, 0xb8, 0x10}, + }, + { + {0xbf, 0xa3, 0x4e, 0x94, 0xd0, 0x5c, 0x1a, 0x6b, 0xd2, 0xc0, 0x9d, + 0xb3, 0x3a, 0x35, 0x70, 0x74, 0x49, 0x2e, 0x54, 0x28, 0x82, 0x52, + 0xb2, 0x71, 0x7e, 0x92, 0x3c, 0x28, 0x69, 0xea, 0x1b, 0x46}, + {0xb1, 0x21, 0x32, 0xaa, 0x9a, 0x2c, 0x6f, 0xba, 0xa7, 0x23, 0xba, + 0x3b, 0x53, 0x21, 0xa0, 0x6c, 0x3a, 0x2c, 0x19, 0x92, 0x4f, 0x76, + 0xea, 0x9d, 0xe0, 0x17, 0x53, 0x2e, 0x5d, 0xdd, 0x6e, 0x1d}, + {0xa2, 0xb3, 0xb8, 0x1, 0xc8, 0x6d, 0x83, 0xf1, 0x9a, 0xa4, 0x3e, + 0x5, 0x47, 0x5f, 0x3, 0xb3, 0xf3, 0xad, 0x77, 0x58, 0xba, 0x41, + 0x9c, 0x52, 0xa7, 0x90, 0xf, 0x6a, 0x1c, 0xbb, 0x9f, 0x7a}, + }, + { + {0x8f, 0x3e, 0xdd, 0x4, 0x66, 0x59, 0xb7, 0x59, 0x2c, 0x70, 0x88, + 0xe2, 0x77, 0x3, 0xb3, 0x6c, 0x23, 0xc3, 0xd9, 0x5e, 0x66, 0x9c, + 0x33, 0xb1, 0x2f, 0xe5, 0xbc, 0x61, 0x60, 0xe7, 0x15, 0x9}, + {0xd9, 0x34, 0x92, 0xf3, 0xed, 0x5d, 0xa7, 0xe2, 0xf9, 0x58, 0xb5, + 0xe1, 0x80, 0x76, 0x3d, 0x96, 0xfb, 0x23, 0x3c, 0x6e, 0xac, 0x41, + 0x27, 0x2c, 0xc3, 0x1, 0xe, 0x32, 0xa1, 0x24, 0x90, 0x3a}, + {0x1a, 0x91, 0xa2, 0xc9, 0xd9, 0xf5, 0xc1, 0xe7, 0xd7, 0xa7, 0xcc, + 0x8b, 0x78, 0x71, 0xa3, 0xb8, 0x32, 0x2a, 0xb6, 0xe, 0x19, 0x12, + 0x64, 0x63, 0x95, 0x4e, 0xcc, 0x2e, 0x5c, 0x7c, 0x90, 0x26}, + }, + }, + { + { + {0x1d, 0x9c, 0x2f, 0x63, 0xe, 0xdd, 0xcc, 0x2e, 0x15, 0x31, 0x89, + 0x76, 0x96, 0xb6, 0xd0, 0x51, 0x58, 0x7a, 0x63, 0xa8, 0x6b, 0xb7, + 0xdf, 0x52, 0x39, 0xef, 0xe, 0xa0, 0x49, 0x7d, 0xd3, 0x6d}, + {0x5e, 0x51, 0xaa, 0x49, 0x54, 0x63, 0x5b, 0xed, 0x3a, 0x82, 0xc6, + 0xb, 0x9f, 0xc4, 0x65, 0xa8, 0xc4, 0xd1, 0x42, 0x5b, 0xe9, 0x1f, + 0xc, 0x85, 0xb9, 0x15, 0xd3, 0x3, 0x6f, 0x6d, 0xd7, 0x30}, + {0xc7, 0xe4, 0x6, 0x21, 0x17, 0x44, 0x44, 0x6c, 0x69, 0x7f, 0x8d, + 0x92, 0x80, 0xd6, 0x53, 0xfb, 0x26, 0x3f, 0x4d, 0x69, 0xa4, 0x9e, + 0x73, 0xb4, 0xb0, 0x4b, 0x86, 0x2e, 0x11, 0x97, 0xc6, 0x10}, + }, + { + {0x5, 0xc8, 0x58, 0x83, 0xa0, 0x2a, 0xa6, 0xc, 0x47, 0x42, 0x20, + 0x7a, 0xe3, 0x4a, 0x3d, 0x6a, 0xdc, 0xed, 0x11, 0x3b, 0xa6, 0xd3, + 0x64, 0x74, 0xef, 0x6, 0x8, 0x55, 0xaf, 0x9b, 0xbf, 0x3}, + {0xde, 0x5f, 0xbe, 0x7d, 0x27, 0xc4, 0x93, 0x64, 0xa2, 0x7e, 0xad, + 0x19, 0xad, 0x4f, 0x5d, 0x26, 0x90, 0x45, 0x30, 0x46, 0xc8, 0xdf, + 0x0, 0xe, 0x9, 0xfe, 0x66, 0xed, 0xab, 0x1c, 0xe6, 0x25}, + {0x4, 0x66, 0x58, 0xcc, 0x28, 0xe1, 0x13, 0x3f, 0x7e, 0x74, 0x59, + 0xb4, 0xec, 0x73, 0x58, 0x6f, 0xf5, 0x68, 0x12, 0xcc, 0xed, 0x3d, + 0xb6, 0xa0, 0x2c, 0xe2, 0x86, 0x45, 0x63, 0x78, 0x6d, 0x56}, + }, + { + {0xd0, 0x2f, 0x5a, 0xc6, 0x85, 0x42, 0x5, 0xa1, 0xc3, 0x67, 0x16, + 0xf3, 0x2a, 0x11, 0x64, 0x6c, 0x58, 0xee, 0x1a, 0x73, 0x40, 0xe2, + 0xa, 0x68, 0x2a, 0xb2, 0x93, 0x47, 0xf3, 0xa5, 0xfb, 0x14}, + {0x34, 0x8, 0xc1, 0x9c, 0x9f, 0xa4, 0x37, 0x16, 0x51, 0xc4, 0x9b, + 0xa8, 0xd5, 0x56, 0x8e, 0xbc, 0xdb, 0xd2, 0x7f, 0x7f, 0xf, 0xec, + 0xb5, 0x1c, 0xd9, 0x35, 0xcc, 0x5e, 0xca, 0x5b, 0x97, 0x33}, + {0xd4, 0xf7, 0x85, 0x69, 0x16, 0x46, 0xd7, 0x3c, 0x57, 0x0, 0xc8, + 0xc9, 0x84, 0x5e, 0x3e, 0x59, 0x1e, 0x13, 0x61, 0x7b, 0xb6, 0xf2, + 0xc3, 0x2f, 0x6c, 0x52, 0xfc, 0x83, 0xea, 0x9c, 0x82, 0x14}, + }, + { + {0xb8, 0xec, 0x71, 0x4e, 0x2f, 0xb, 0xe7, 0x21, 0xe3, 0x77, 0xa4, + 0x40, 0xb9, 0xdd, 0x56, 0xe6, 0x80, 0x4f, 0x1d, 0xce, 0xce, 0x56, + 0x65, 0xbf, 0x7e, 0x7b, 0x5d, 0x53, 0xc4, 0x3b, 0xfc, 0x5}, + {0xc2, 0x95, 0xdd, 0x97, 0x84, 0x7b, 0x43, 0xff, 0xa7, 0xb5, 0x4e, + 0xaa, 0x30, 0x4e, 0x74, 0x6c, 0x8b, 0xe8, 0x85, 0x3c, 0x61, 0x5d, + 0xc, 0x9e, 0x73, 0x81, 0x75, 0x5f, 0x1e, 0xc7, 0xd9, 0x2f}, + {0xdd, 0xde, 0xaf, 0x52, 0xae, 0xb3, 0xb8, 0x24, 0xcf, 0x30, 0x3b, + 0xed, 0x8c, 0x63, 0x95, 0x34, 0x95, 0x81, 0xbe, 0xa9, 0x83, 0xbc, + 0xa4, 0x33, 0x4, 0x1f, 0x65, 0x5c, 0x47, 0x67, 0x37, 0x37}, + }, + { + {0x90, 0x65, 0x24, 0x14, 0xcb, 0x95, 0x40, 0x63, 0x35, 0x55, 0xc1, + 0x16, 0x40, 0x14, 0x12, 0xef, 0x60, 0xbc, 0x10, 0x89, 0xc, 0x14, + 0x38, 0x9e, 0x8c, 0x7c, 0x90, 0x30, 0x57, 0x90, 0xf5, 0x6b}, + {0xd9, 0xad, 0xd1, 0x40, 0xfd, 0x99, 0xba, 0x2f, 0x27, 0xd0, 0xf4, + 0x96, 0x6f, 0x16, 0x7, 0xb3, 0xae, 0x3b, 0xf0, 0x15, 0x52, 0xf0, + 0x63, 0x43, 0x99, 0xf9, 0x18, 0x3b, 0x6c, 0xa5, 0xbe, 0x1f}, + {0x8a, 0x5b, 0x41, 0xe1, 0xf1, 0x78, 0xa7, 0xf, 0x7e, 0xa7, 0xc3, + 0xba, 0xf7, 0x9f, 0x40, 0x6, 0x50, 0x9a, 0xa2, 0x9a, 0xb8, 0xd7, + 0x52, 0x6f, 0x56, 0x5a, 0x63, 0x7a, 0xf6, 0x1c, 0x52, 0x2}, + }, + { + {0xe4, 0x5e, 0x2f, 0x77, 0x20, 0x67, 0x14, 0xb1, 0xce, 0x9a, 0x7, + 0x96, 0xb1, 0x94, 0xf8, 0xe8, 0x4a, 0x82, 0xac, 0x0, 0x4d, 0x22, + 0xf8, 0x4a, 0xc4, 0x6c, 0xcd, 0xf7, 0xd9, 0x53, 0x17, 0x0}, + {0x94, 0x52, 0x9d, 0xa, 0xb, 0xee, 0x3f, 0x51, 0x66, 0x5a, 0xdf, + 0xf, 0x5c, 0xe7, 0x98, 0x8f, 0xce, 0x7, 0xe1, 0xbf, 0x88, 0x86, + 0x61, 0xd4, 0xed, 0x2c, 0x38, 0x71, 0x7e, 0xa, 0xa0, 0x3f}, + {0x34, 0xdb, 0x3d, 0x96, 0x2d, 0x23, 0x69, 0x3c, 0x58, 0x38, 0x97, + 0xb4, 0xda, 0x87, 0xde, 0x1d, 0x85, 0xf2, 0x91, 0xa0, 0xf9, 0xd1, + 0xd7, 0xaa, 0xb6, 0xed, 0x48, 0xa0, 0x2f, 0xfe, 0xb5, 0x12}, + }, + { + {0x92, 0x1e, 0x6f, 0xad, 0x26, 0x7c, 0x2b, 0xdf, 0x13, 0x89, 0x4b, + 0x50, 0x23, 0xd3, 0x66, 0x4b, 0xc3, 0x8b, 0x1c, 0x75, 0xc0, 0x9d, + 0x40, 0x8c, 0xb8, 0xc7, 0x96, 0x7, 0xc2, 0x93, 0x7e, 0x6f}, + {0x4d, 0xe3, 0xfc, 0x96, 0xc4, 0xfb, 0xf0, 0x71, 0xed, 0x5b, 0xf3, + 0xad, 0x6b, 0x82, 0xb9, 0x73, 0x61, 0xc5, 0x28, 0xff, 0x61, 0x72, + 0x4, 0xd2, 0x6f, 0x20, 0xb1, 0x6f, 0xf9, 0x76, 0x9b, 0x74}, + {0x5, 0xae, 0xa6, 0xae, 0x4, 0xf6, 0x5a, 0x1f, 0x99, 0x9c, 0xe4, + 0xbe, 0xf1, 0x51, 0x23, 0xc1, 0x66, 0x6b, 0xff, 0xee, 0xb5, 0x8, + 0xa8, 0x61, 0x51, 0x21, 0xe0, 0x1, 0xf, 0xc1, 0xce, 0xf}, + }, + { + {0x45, 0x4e, 0x24, 0xc4, 0x9d, 0xd2, 0xf2, 0x3d, 0xa, 0xde, 0xd8, + 0x93, 0x74, 0xe, 0x2, 0x2b, 0x4d, 0x21, 0xc, 0x82, 0x7e, 0x6, + 0xc8, 0x6c, 0xa, 0xb9, 0xea, 0x6f, 0x16, 0x79, 0x37, 0x41}, + {0x44, 0x1e, 0xfe, 0x49, 0xa6, 0x58, 0x4d, 0x64, 0x7e, 0x77, 0xad, + 0x31, 0xa2, 0xae, 0xfc, 0x21, 0xd2, 0xd0, 0x7f, 0x88, 0x5a, 0x1c, + 0x44, 0x2, 0xf3, 0x11, 0xc5, 0x83, 0x71, 0xaa, 0x1, 0x49}, + {0xf0, 0xf8, 0x1a, 0x8c, 0x54, 0xb7, 0xb1, 0x8, 0xb4, 0x99, 0x62, + 0x24, 0x7c, 0x7a, 0xf, 0xce, 0x39, 0xd9, 0x6, 0x1e, 0xf9, 0xb0, + 0x60, 0xf7, 0x13, 0x12, 0x6d, 0x72, 0x7b, 0x88, 0xbb, 0x41}, + }, + }, + { + { + {0xae, 0x91, 0x66, 0x7c, 0x59, 0x4c, 0x23, 0x7e, 0xc8, 0xb4, 0x85, + 0xa, 0x3d, 0x9d, 0x88, 0x64, 0xe7, 0xfa, 0x4a, 0x35, 0xc, 0xc9, + 0xe2, 0xda, 0x1d, 0x9e, 0x6a, 0xc, 0x7, 0x1e, 0x87, 0xa}, + {0xbe, 0x46, 0x43, 0x74, 0x44, 0x7d, 0xe8, 0x40, 0x25, 0x2b, 0xb5, + 0x15, 0xd4, 0xda, 0x48, 0x1d, 0x3e, 0x60, 0x3b, 0xa1, 0x18, 0x8a, + 0x3a, 0x7c, 0xf7, 0xbd, 0xcd, 0x2f, 0xc1, 0x28, 0xb7, 0x4e}, + {0x89, 0x89, 0xbc, 0x4b, 0x99, 0xb5, 0x1, 0x33, 0x60, 0x42, 0xdd, + 0x5b, 0x3a, 0xae, 0x6b, 0x73, 0x3c, 0x9e, 0xd5, 0x19, 0xe2, 0xad, + 0x61, 0xd, 0x64, 0xd4, 0x85, 0x26, 0xf, 0x30, 0xe7, 0x3e}, + }, + { + {0x18, 0x75, 0x1e, 0x84, 0x47, 0x79, 0xfa, 0x43, 0xd7, 0x46, 0x9c, + 0x63, 0x59, 0xfa, 0xc6, 0xe5, 0x74, 0x2b, 0x5, 0xe3, 0x1d, 0x5e, + 0x6, 0xa1, 0x30, 0x90, 0xb8, 0xcf, 0xa2, 0xc6, 0x47, 0x7d}, + {0xb7, 0xd6, 0x7d, 0x9e, 0xe4, 0x55, 0xd2, 0xf5, 0xac, 0x1e, 0xb, + 0x61, 0x5c, 0x11, 0x16, 0x80, 0xca, 0x87, 0xe1, 0x92, 0x5d, 0x97, + 0x99, 0x3c, 0xc2, 0x25, 0x91, 0x97, 0x62, 0x57, 0x81, 0x13}, + {0xe0, 0xd6, 0xf0, 0x8e, 0x14, 0xd0, 0xda, 0x3f, 0x3c, 0x6f, 0x54, + 0x91, 0x9a, 0x74, 0x3e, 0x9d, 0x57, 0x81, 0xbb, 0x26, 0x10, 0x62, + 0xec, 0x71, 0x80, 0xec, 0xc9, 0x34, 0x8d, 0xf5, 0x8c, 0x14}, + }, + { + {0x6d, 0x75, 0xe4, 0x9a, 0x7d, 0x2f, 0x57, 0xe2, 0x7f, 0x48, 0xf3, + 0x88, 0xbb, 0x45, 0xc3, 0x56, 0x8d, 0xa8, 0x60, 0x69, 0x6d, 0xb, + 0xd1, 0x9f, 0xb9, 0xa1, 0xae, 0x4e, 0xad, 0xeb, 0x8f, 0x27}, + {0x27, 0xf0, 0x34, 0x79, 0xf6, 0x92, 0xa4, 0x46, 0xa9, 0xa, 0x84, + 0xf6, 0xbe, 0x84, 0x99, 0x46, 0x54, 0x18, 0x61, 0x89, 0x2a, 0xbc, + 0xa1, 0x5c, 0xd4, 0xbb, 0x5d, 0xbd, 0x1e, 0xfa, 0xf2, 0x3f}, + {0x66, 0x39, 0x93, 0x8c, 0x1f, 0x68, 0xaa, 0xb1, 0x98, 0xc, 0x29, + 0x20, 0x9c, 0x94, 0x21, 0x8c, 0x52, 0x3c, 0x9d, 0x21, 0x91, 0x52, + 0x11, 0x39, 0x7b, 0x67, 0x9c, 0xfe, 0x2, 0xdd, 0x4, 0x41}, + }, + { + {0xb8, 0x6a, 0x9, 0xdb, 0x6, 0x4e, 0x21, 0x81, 0x35, 0x4f, 0xe4, + 0xc, 0xc9, 0xb6, 0xa8, 0x21, 0xf5, 0x2a, 0x9e, 0x40, 0x2a, 0xc1, + 0x24, 0x65, 0x81, 0xa4, 0xfc, 0x8e, 0xa4, 0xb5, 0x65, 0x1}, + {0x2a, 0x42, 0x24, 0x11, 0x5e, 0xbf, 0xb2, 0x72, 0xb5, 0x3a, 0xa3, + 0x98, 0x33, 0xc, 0xfa, 0xa1, 0x66, 0xb6, 0x52, 0xfa, 0x1, 0x61, + 0xcb, 0x94, 0xd5, 0x53, 0xaf, 0xaf, 0x0, 0x3b, 0x86, 0x2c}, + {0x76, 0x6a, 0x84, 0xa0, 0x74, 0xa4, 0x90, 0xf1, 0xc0, 0x7c, 0x2f, + 0xcd, 0x84, 0xf9, 0xef, 0x12, 0x8f, 0x2b, 0xaa, 0x58, 0x6, 0x29, + 0x5e, 0x69, 0xb8, 0xc8, 0xfe, 0xbf, 0xd9, 0x67, 0x1b, 0x59}, + }, + { + {0x5d, 0xb5, 0x18, 0x9f, 0x71, 0xb3, 0xb9, 0x99, 0x1e, 0x64, 0x8c, + 0xa1, 0xfa, 0xe5, 0x65, 0xe4, 0xed, 0x5, 0x9f, 0xc2, 0x36, 0x11, + 0x8, 0x61, 0x8b, 0x12, 0x30, 0x70, 0x86, 0x4f, 0x9b, 0x48}, + {0xfa, 0x9b, 0xb4, 0x80, 0x1c, 0xd, 0x2f, 0x31, 0x8a, 0xec, 0xf3, + 0xab, 0x5e, 0x51, 0x79, 0x59, 0x88, 0x1c, 0xf0, 0x9e, 0xc0, 0x33, + 0x70, 0x72, 0xcb, 0x7b, 0x8f, 0xca, 0xc7, 0x2e, 0xe0, 0x3d}, + {0xef, 0x92, 0xeb, 0x3a, 0x2d, 0x10, 0x32, 0xd2, 0x61, 0xa8, 0x16, + 0x61, 0xb4, 0x53, 0x62, 0xe1, 0x24, 0xaa, 0xb, 0x19, 0xe7, 0xab, + 0x7e, 0x3d, 0xbf, 0xbe, 0x6c, 0x49, 0xba, 0xfb, 0xf5, 0x49}, + }, + { + {0x2e, 0x57, 0x9c, 0x1e, 0x8c, 0x62, 0x5d, 0x15, 0x41, 0x47, 0x88, + 0xc5, 0xac, 0x86, 0x4d, 0x8a, 0xeb, 0x63, 0x57, 0x51, 0xf6, 0x52, + 0xa3, 0x91, 0x5b, 0x51, 0x67, 0x88, 0xc2, 0xa6, 0xa1, 0x6}, + {0xd4, 0xcf, 0x5b, 0x8a, 0x10, 0x9a, 0x94, 0x30, 0xeb, 0x73, 0x64, + 0xbc, 0x70, 0xdd, 0x40, 0xdc, 0x1c, 0xd, 0x7c, 0x30, 0xc1, 0x94, + 0xc2, 0x92, 0x74, 0x6e, 0xfa, 0xcb, 0x6d, 0xa8, 0x4, 0x56}, + {0xb6, 0x64, 0x17, 0x7c, 0xd4, 0xd1, 0x88, 0x72, 0x51, 0x8b, 0x41, + 0xe0, 0x40, 0x11, 0x54, 0x72, 0xd1, 0xf6, 0xac, 0x18, 0x60, 0x1a, + 0x3, 0x9f, 0xc6, 0x42, 0x27, 0xfe, 0x89, 0x9e, 0x98, 0x20}, + }, + { + {0x2e, 0xec, 0xea, 0x85, 0x8b, 0x27, 0x74, 0x16, 0xdf, 0x2b, 0xcb, + 0x7a, 0x7, 0xdc, 0x21, 0x56, 0x5a, 0xf4, 0xcb, 0x61, 0x16, 0x4c, + 0xa, 0x64, 0xd3, 0x95, 0x5, 0xf7, 0x50, 0x99, 0xb, 0x73}, + {0x7f, 0xcc, 0x2d, 0x3a, 0xfd, 0x77, 0x97, 0x49, 0x92, 0xd8, 0x4f, + 0xa5, 0x2c, 0x7c, 0x85, 0x32, 0xa0, 0xe3, 0x7, 0xd2, 0x64, 0xd8, + 0x79, 0xa2, 0x29, 0x7e, 0xa6, 0xc, 0x1d, 0xed, 0x3, 0x4}, + {0x52, 0xc5, 0x4e, 0x87, 0x35, 0x2d, 0x4b, 0xc9, 0x8d, 0x6f, 0x24, + 0x98, 0xcf, 0xc8, 0xe6, 0xc5, 0xce, 0x35, 0xc0, 0x16, 0xfa, 0x46, + 0xcb, 0xf7, 0xcc, 0x3d, 0x30, 0x8, 0x43, 0x45, 0xd7, 0x5b}, + }, + { + {0x2a, 0x79, 0xe7, 0x15, 0x21, 0x93, 0xc4, 0x85, 0xc9, 0xdd, 0xcd, + 0xbd, 0xa2, 0x89, 0x4c, 0xc6, 0x62, 0xd7, 0xa3, 0xad, 0xa8, 0x3d, + 0x1e, 0x9d, 0x2c, 0xf8, 0x67, 0x30, 0x12, 0xdb, 0xb7, 0x5b}, + {0xc2, 0x4c, 0xb2, 0x28, 0x95, 0xd1, 0x9a, 0x7f, 0x81, 0xc1, 0x35, + 0x63, 0x65, 0x54, 0x6b, 0x7f, 0x36, 0x72, 0xc0, 0x4f, 0x6e, 0xb6, + 0xb8, 0x66, 0x83, 0xad, 0x80, 0x73, 0x0, 0x78, 0x3a, 0x13}, + {0xbe, 0x62, 0xca, 0xc6, 0x67, 0xf4, 0x61, 0x9, 0xee, 0x52, 0x19, + 0x21, 0xd6, 0x21, 0xec, 0x4, 0x70, 0x47, 0xd5, 0x9b, 0x77, 0x60, + 0x23, 0x18, 0xd2, 0xe0, 0xf0, 0x58, 0x6d, 0xca, 0xd, 0x74}, + }, + }, + { + { + {0x3c, 0x43, 0x78, 0x4, 0x57, 0x8c, 0x1a, 0x23, 0x9d, 0x43, 0x81, + 0xc2, 0xe, 0x27, 0xb5, 0xb7, 0x9f, 0x7, 0xd9, 0xe3, 0xea, 0x99, + 0xaa, 0xdb, 0xd9, 0x3, 0x2b, 0x6c, 0x25, 0xf5, 0x3, 0x2c}, + {0x4e, 0xce, 0xcf, 0x52, 0x7, 0xee, 0x48, 0xdf, 0xb7, 0x8, 0xec, + 0x6, 0xf3, 0xfa, 0xff, 0xc3, 0xc4, 0x59, 0x54, 0xb9, 0x2a, 0xb, + 0x71, 0x5, 0x8d, 0xa3, 0x3e, 0x96, 0xfa, 0x25, 0x1d, 0x16}, + {0x7d, 0xa4, 0x53, 0x7b, 0x75, 0x18, 0xf, 0x79, 0x79, 0x58, 0xc, + 0xcf, 0x30, 0x1, 0x7b, 0x30, 0xf9, 0xf7, 0x7e, 0x25, 0x77, 0x3d, + 0x90, 0x31, 0xaf, 0xbb, 0x96, 0xbd, 0xbd, 0x68, 0x94, 0x69}, + }, + { + {0x48, 0x19, 0xa9, 0x6a, 0xe6, 0x3d, 0xdd, 0xd8, 0xcc, 0xd2, 0xc0, + 0x2f, 0xc2, 0x64, 0x50, 0x48, 0x2f, 0xea, 0xfd, 0x34, 0x66, 0x24, + 0x48, 0x9b, 0x3a, 0x2e, 0x4a, 0x6c, 0x4e, 0x1c, 0x3e, 0x29}, + {0xcf, 0xfe, 0xda, 0xf4, 0x46, 0x2f, 0x1f, 0xbd, 0xf7, 0xd6, 0x7f, + 0xa4, 0x14, 0x1, 0xef, 0x7c, 0x7f, 0xb3, 0x47, 0x4a, 0xda, 0xfd, + 0x1f, 0xd3, 0x85, 0x57, 0x90, 0x73, 0xa4, 0x19, 0x52, 0x52}, + {0xe1, 0x12, 0x51, 0x92, 0x4b, 0x13, 0x6e, 0x37, 0xa0, 0x5d, 0xa1, + 0xdc, 0xb5, 0x78, 0x37, 0x70, 0x11, 0x31, 0x1c, 0x46, 0xaf, 0x89, + 0x45, 0xb0, 0x23, 0x28, 0x3, 0x7f, 0x44, 0x5c, 0x60, 0x5b}, + }, + { + {0x4c, 0xf0, 0xe7, 0xf0, 0xc6, 0xfe, 0xe9, 0x3b, 0x62, 0x49, 0xe3, + 0x75, 0x9e, 0x57, 0x6a, 0x86, 0x1a, 0xe6, 0x1d, 0x1e, 0x16, 0xef, + 0x42, 0x55, 0xd5, 0xbd, 0x5a, 0xcc, 0xf4, 0xfe, 0x12, 0x2f}, + {0x89, 0x7c, 0xc4, 0x20, 0x59, 0x80, 0x65, 0xb9, 0xcc, 0x8f, 0x3b, + 0x92, 0xc, 0x10, 0xf0, 0xe7, 0x77, 0xef, 0xe2, 0x2, 0x65, 0x25, + 0x1, 0x0, 0xee, 0xb3, 0xae, 0xa8, 0xce, 0x6d, 0xa7, 0x24}, + {0x40, 0xc7, 0xc0, 0xdf, 0xb2, 0x22, 0x45, 0xa, 0x7, 0xa4, 0xc9, + 0x40, 0x7f, 0x6e, 0xd0, 0x10, 0x68, 0xf6, 0xcf, 0x78, 0x41, 0x14, + 0xcf, 0xc6, 0x90, 0x37, 0xa4, 0x18, 0x25, 0x7b, 0x60, 0x5e}, + }, + { + {0x14, 0xcf, 0x96, 0xa5, 0x1c, 0x43, 0x2c, 0xa0, 0x0, 0xe4, 0xd3, + 0xae, 0x40, 0x2d, 0xc4, 0xe3, 0xdb, 0x26, 0xf, 0x2e, 0x80, 0x26, + 0x45, 0xd2, 0x68, 0x70, 0x45, 0x9e, 0x13, 0x33, 0x1f, 0x20}, + {0x18, 0x18, 0xdf, 0x6c, 0x8f, 0x1d, 0xb3, 0x58, 0xa2, 0x58, 0x62, + 0xc3, 0x4f, 0xa7, 0xcf, 0x35, 0x6e, 0x1d, 0xe6, 0x66, 0x4f, 0xff, + 0xb3, 0xe1, 0xf7, 0xd5, 0xcd, 0x6c, 0xab, 0xac, 0x67, 0x50}, + {0x51, 0x9d, 0x3, 0x8, 0x6b, 0x7f, 0x52, 0xfd, 0x6, 0x0, 0x7c, + 0x1, 0x64, 0x49, 0xb1, 0x18, 0xa8, 0xa4, 0x25, 0x2e, 0xb0, 0xe, + 0x22, 0xd5, 0x75, 0x3, 0x46, 0x62, 0x88, 0xba, 0x7c, 0x39}, + }, + { + {0xe7, 0x79, 0x13, 0xc8, 0xfb, 0xc3, 0x15, 0x78, 0xf1, 0x2a, 0xe1, + 0xdd, 0x20, 0x94, 0x61, 0xa6, 0xd5, 0xfd, 0xa8, 0x85, 0xf8, 0xc0, + 0xa9, 0xff, 0x52, 0xc2, 0xe1, 0xc1, 0x22, 0x40, 0x1b, 0x77}, + {0xb2, 0x59, 0x59, 0xf0, 0x93, 0x30, 0xc1, 0x30, 0x76, 0x79, 0xa9, + 0xe9, 0x8d, 0xa1, 0x3a, 0xe2, 0x26, 0x5e, 0x1d, 0x72, 0x91, 0xd4, + 0x2f, 0x22, 0x3a, 0x6c, 0x6e, 0x76, 0x20, 0xd3, 0x39, 0x23}, + {0xa7, 0x2f, 0x3a, 0x51, 0x86, 0xd9, 0x7d, 0xd8, 0x8, 0xcf, 0xd4, + 0xf9, 0x71, 0x9b, 0xac, 0xf5, 0xb3, 0x83, 0xa2, 0x1e, 0x1b, 0xc3, + 0x6b, 0xd0, 0x76, 0x1a, 0x97, 0x19, 0x92, 0x18, 0x1a, 0x33}, + }, + { + {0xaf, 0x72, 0x75, 0x9d, 0x3a, 0x2f, 0x51, 0x26, 0x9e, 0x4a, 0x7, + 0x68, 0x88, 0xe2, 0xcb, 0x5b, 0xc4, 0xf7, 0x80, 0x11, 0xc1, 0xc1, + 0xed, 0x84, 0x7b, 0xa6, 0x49, 0xf6, 0x9f, 0x61, 0xc9, 0x1a}, + {0xc6, 0x80, 0x4f, 0xfb, 0x45, 0x6f, 0x16, 0xf5, 0xcf, 0x75, 0xc7, + 0x61, 0xde, 0xc7, 0x36, 0x9c, 0x1c, 0xd9, 0x41, 0x90, 0x1b, 0xe8, + 0xd4, 0xe3, 0x21, 0xfe, 0xbd, 0x83, 0x6b, 0x7c, 0x16, 0x31}, + {0x68, 0x10, 0x4b, 0x52, 0x42, 0x38, 0x2b, 0xf2, 0x87, 0xe9, 0x9c, + 0xee, 0x3b, 0x34, 0x68, 0x50, 0xc8, 0x50, 0x62, 0x4a, 0x84, 0x71, + 0x9d, 0xfc, 0x11, 0xb1, 0x8, 0x1f, 0x34, 0x36, 0x24, 0x61}, + }, + { + {0x38, 0x26, 0x2d, 0x1a, 0xe3, 0x49, 0x63, 0x8b, 0x35, 0xfd, 0xd3, + 0x9b, 0x0, 0xb7, 0xdf, 0x9d, 0xa4, 0x6b, 0xa0, 0xa3, 0xb8, 0xf1, + 0x8b, 0x7f, 0x45, 0x4, 0xd9, 0x78, 0x31, 0xaa, 0x22, 0x15}, + {0x8d, 0x89, 0x4e, 0x87, 0xdb, 0x41, 0x9d, 0xd9, 0x20, 0xdc, 0x7, + 0x6c, 0xf1, 0xa5, 0xfe, 0x9, 0xbc, 0x9b, 0xf, 0xd0, 0x67, 0x2c, + 0x3d, 0x79, 0x40, 0xff, 0x5e, 0x9e, 0x30, 0xe2, 0xeb, 0x46}, + {0x38, 0x49, 0x61, 0x69, 0x53, 0x2f, 0x38, 0x2c, 0x10, 0x6d, 0x2d, + 0xb7, 0x9a, 0x40, 0xfe, 0xda, 0x27, 0xf2, 0x46, 0xb6, 0x91, 0x33, + 0xc8, 0xe8, 0x6c, 0x30, 0x24, 0x5, 0xf5, 0x70, 0xfe, 0x45}, + }, + { + {0x91, 0x14, 0x95, 0xc8, 0x20, 0x49, 0xf2, 0x62, 0xa2, 0xc, 0x63, + 0x3f, 0xc8, 0x7, 0xf0, 0x5, 0xb8, 0xd4, 0xc9, 0xf5, 0xd2, 0x45, + 0xbb, 0x6f, 0x45, 0x22, 0x7a, 0xb5, 0x6d, 0x9f, 0x61, 0x16}, + {0x8c, 0xb, 0xc, 0x96, 0xa6, 0x75, 0x48, 0xda, 0x20, 0x2f, 0xe, + 0xef, 0x76, 0xd0, 0x68, 0x5b, 0xd4, 0x8f, 0xb, 0x3d, 0xcf, 0x51, + 0xfb, 0x7, 0xd4, 0x92, 0xe3, 0xa0, 0x23, 0x16, 0x8d, 0x42}, + {0xfd, 0x8, 0xa3, 0x1, 0x44, 0x4a, 0x4f, 0x8, 0xac, 0xca, 0xa5, + 0x76, 0xc3, 0x19, 0x22, 0xa8, 0x7d, 0xbc, 0xd1, 0x43, 0x46, 0xde, + 0xb8, 0xde, 0xc6, 0x38, 0xbd, 0x60, 0x2d, 0x59, 0x81, 0x1d}, + }, + }, + { + { + {0xe8, 0xc5, 0x85, 0x7b, 0x9f, 0xb6, 0x65, 0x87, 0xb2, 0xba, 0x68, + 0xd1, 0x8b, 0x67, 0xf0, 0x6f, 0x9b, 0xf, 0x33, 0x1d, 0x7c, 0xe7, + 0x70, 0x3a, 0x7c, 0x8e, 0xaf, 0xb0, 0x51, 0x6d, 0x5f, 0x3a}, + {0x5f, 0xac, 0xd, 0xa6, 0x56, 0x87, 0x36, 0x61, 0x57, 0xdc, 0xab, + 0xeb, 0x6a, 0x2f, 0xe0, 0x17, 0x7d, 0xf, 0xce, 0x4c, 0x2d, 0x3f, + 0x19, 0x7f, 0xf0, 0xdc, 0xec, 0x89, 0x77, 0x4a, 0x23, 0x20}, + {0x52, 0xb2, 0x78, 0x71, 0xb6, 0xd, 0xd2, 0x76, 0x60, 0xd1, 0x1e, + 0xd5, 0xf9, 0x34, 0x1c, 0x7, 0x70, 0x11, 0xe4, 0xb3, 0x20, 0x4a, + 0x2a, 0xf6, 0x66, 0xe3, 0xff, 0x3c, 0x35, 0x82, 0xd6, 0x7c}, + }, + { + {0xf3, 0xf4, 0xac, 0x68, 0x60, 0xcd, 0x65, 0xa6, 0xd3, 0xe3, 0xd7, + 0x3c, 0x18, 0x2d, 0xd9, 0x42, 0xd9, 0x25, 0x60, 0x33, 0x9d, 0x38, + 0x59, 0x57, 0xff, 0xd8, 0x2c, 0x2b, 0x3b, 0x25, 0xf0, 0x3e}, + {0xb6, 0xfa, 0x87, 0xd8, 0x5b, 0xa4, 0xe1, 0xb, 0x6e, 0x3b, 0x40, + 0xba, 0x32, 0x6a, 0x84, 0x2a, 0x0, 0x60, 0x6e, 0xe9, 0x12, 0x10, + 0x92, 0xd9, 0x43, 0x9, 0xdc, 0x3b, 0x86, 0xc8, 0x38, 0x28}, + {0x30, 0x50, 0x46, 0x4a, 0xcf, 0xb0, 0x6b, 0xd1, 0xab, 0x77, 0xc5, + 0x15, 0x41, 0x6b, 0x49, 0xfa, 0x9d, 0x41, 0xab, 0xf4, 0x8a, 0xae, + 0xcf, 0x82, 0x12, 0x28, 0xa8, 0x6, 0xa6, 0xb8, 0xdc, 0x21}, + }, + { + {0xba, 0x31, 0x77, 0xbe, 0xfa, 0x0, 0x8d, 0x9a, 0x89, 0x18, 0x9e, + 0x62, 0x7e, 0x60, 0x3, 0x82, 0x7f, 0xd9, 0xf3, 0x43, 0x37, 0x2, + 0xcc, 0xb2, 0x8b, 0x67, 0x6f, 0x6c, 0xbf, 0xd, 0x84, 0x5d}, + {0xc8, 0x9f, 0x9d, 0x8c, 0x46, 0x4, 0x60, 0x5c, 0xcb, 0xa3, 0x2a, + 0xd4, 0x6e, 0x9, 0x40, 0x25, 0x9c, 0x2f, 0xee, 0x12, 0x4c, 0x4d, + 0x5b, 0x12, 0xab, 0x1d, 0xa3, 0x94, 0x81, 0xd0, 0xc3, 0xb}, + {0x8b, 0xe1, 0x9f, 0x30, 0xd, 0x38, 0x6e, 0x70, 0xc7, 0x65, 0xe1, + 0xb9, 0xa6, 0x2d, 0xb0, 0x6e, 0xab, 0x20, 0xae, 0x7d, 0x99, 0xba, + 0xbb, 0x57, 0xdd, 0x96, 0xc1, 0x2a, 0x23, 0x76, 0x42, 0x3a}, + }, + { + {0xcb, 0x7e, 0x44, 0xdb, 0x72, 0xc1, 0xf8, 0x3b, 0xbd, 0x2d, 0x28, + 0xc6, 0x1f, 0xc4, 0xcf, 0x5f, 0xfe, 0x15, 0xaa, 0x75, 0xc0, 0xff, + 0xac, 0x80, 0xf9, 0xa9, 0xe1, 0x24, 0xe8, 0xc9, 0x70, 0x7}, + {0xfa, 0x84, 0x70, 0x8a, 0x2c, 0x43, 0x42, 0x4b, 0x45, 0xe5, 0xb9, + 0xdf, 0xe3, 0x19, 0x8a, 0x89, 0x5d, 0xe4, 0x58, 0x9c, 0x21, 0x0, + 0x9f, 0xbe, 0xd1, 0xeb, 0x6d, 0xa1, 0xce, 0x77, 0xf1, 0x1f}, + {0xfd, 0xb5, 0xb5, 0x45, 0x9a, 0xd9, 0x61, 0xcf, 0x24, 0x79, 0x3a, + 0x1b, 0xe9, 0x84, 0x9, 0x86, 0x89, 0x3e, 0x3e, 0x30, 0x19, 0x9, + 0x30, 0xe7, 0x1e, 0xb, 0x50, 0x41, 0xfd, 0x64, 0xf2, 0x39}, + }, + { + {0xe1, 0x7b, 0x9, 0xfe, 0xab, 0x4a, 0x9b, 0xd1, 0x29, 0x19, 0xe0, + 0xdf, 0xe1, 0xfc, 0x6d, 0xa4, 0xff, 0xf1, 0xa6, 0x2c, 0x94, 0x8, + 0xc9, 0xc3, 0x4e, 0xf1, 0x35, 0x2c, 0x27, 0x21, 0xc6, 0x65}, + {0x9c, 0xe2, 0xe7, 0xdb, 0x17, 0x34, 0xad, 0xa7, 0x9c, 0x13, 0x9c, + 0x2b, 0x6a, 0x37, 0x94, 0xbd, 0xa9, 0x7b, 0x59, 0x93, 0x8e, 0x1b, + 0xe9, 0xa0, 0x40, 0x98, 0x88, 0x68, 0x34, 0xd7, 0x12, 0x17}, + {0xdd, 0x93, 0x31, 0xce, 0xf8, 0x89, 0x2b, 0xe7, 0xbb, 0xc0, 0x25, + 0xa1, 0x56, 0x33, 0x10, 0x4d, 0x83, 0xfe, 0x1c, 0x2e, 0x3d, 0xa9, + 0x19, 0x4, 0x72, 0xe2, 0x9c, 0xb1, 0xa, 0x80, 0xf9, 0x22}, + }, + { + {0xac, 0xfd, 0x6e, 0x9a, 0xdd, 0x9f, 0x2, 0x42, 0x41, 0x49, 0xa5, + 0x34, 0xbe, 0xce, 0x12, 0xb9, 0x7b, 0xf3, 0xbd, 0x87, 0xb9, 0x64, + 0xf, 0x64, 0xb4, 0xca, 0x98, 0x85, 0xd3, 0xa4, 0x71, 0x41}, + {0xcb, 0xf8, 0x9e, 0x3e, 0x8a, 0x36, 0x5a, 0x60, 0x15, 0x47, 0x50, + 0xa5, 0x22, 0xc0, 0xe9, 0xe3, 0x8f, 0x24, 0x24, 0x5f, 0xb0, 0x48, + 0x3d, 0x55, 0xe5, 0x26, 0x76, 0x64, 0xcd, 0x16, 0xf4, 0x13}, + {0x8c, 0x4c, 0xc9, 0x99, 0xaa, 0x58, 0x27, 0xfa, 0x7, 0xb8, 0x0, + 0xb0, 0x6f, 0x6f, 0x0, 0x23, 0x92, 0x53, 0xda, 0xad, 0xdd, 0x91, + 0xd2, 0xfb, 0xab, 0xd1, 0x4b, 0x57, 0xfa, 0x14, 0x82, 0x50}, + }, + { + {0xd6, 0x3, 0xd0, 0x53, 0xbb, 0x15, 0x1a, 0x46, 0x65, 0xc9, 0xf3, + 0xbc, 0x88, 0x28, 0x10, 0xb2, 0x5a, 0x3a, 0x68, 0x6c, 0x75, 0x76, + 0xc5, 0x27, 0x47, 0xb4, 0x6c, 0xc8, 0xa4, 0x58, 0x77, 0x3a}, + {0x4b, 0xfe, 0xd6, 0x3e, 0x15, 0x69, 0x2, 0xc2, 0xc4, 0x77, 0x1d, + 0x51, 0x39, 0x67, 0x5a, 0xa6, 0x94, 0xaf, 0x14, 0x2c, 0x46, 0x26, + 0xde, 0xcb, 0x4b, 0xa7, 0xab, 0x6f, 0xec, 0x60, 0xf9, 0x22}, + {0x76, 0x50, 0xae, 0x93, 0xf6, 0x11, 0x81, 0x54, 0xa6, 0x54, 0xfd, + 0x1d, 0xdf, 0x21, 0xae, 0x1d, 0x65, 0x5e, 0x11, 0xf3, 0x90, 0x8c, + 0x24, 0x12, 0x94, 0xf4, 0xe7, 0x8d, 0x5f, 0xd1, 0x9f, 0x5d}, + }, + { + {0x1e, 0x52, 0xd7, 0xee, 0x2a, 0x4d, 0x24, 0x3f, 0x15, 0x96, 0x2e, + 0x43, 0x28, 0x90, 0x3a, 0x8e, 0xd4, 0x16, 0x9c, 0x2e, 0x77, 0xba, + 0x64, 0xe1, 0xd8, 0x98, 0xeb, 0x47, 0xfa, 0x87, 0xc1, 0x3b}, + {0x7f, 0x72, 0x63, 0x6d, 0xd3, 0x8, 0x14, 0x3, 0x33, 0xb5, 0xc7, + 0xd7, 0xef, 0x9a, 0x37, 0x6a, 0x4b, 0xe2, 0xae, 0xcc, 0xc5, 0x8f, + 0xe1, 0xa9, 0xd3, 0xbe, 0x8f, 0x4f, 0x91, 0x35, 0x2f, 0x33}, + {0xc, 0xc2, 0x86, 0xea, 0x15, 0x1, 0x47, 0x6d, 0x25, 0xd1, 0x46, + 0x6c, 0xcb, 0xb7, 0x8a, 0x99, 0x88, 0x1, 0x66, 0x3a, 0xb5, 0x32, + 0x78, 0xd7, 0x3, 0xba, 0x6f, 0x90, 0xce, 0x81, 0xd, 0x45}, + }, + }, + { + { + {0x3f, 0x74, 0xae, 0x1c, 0x96, 0xd8, 0x74, 0xd0, 0xed, 0x63, 0x1c, + 0xee, 0xf5, 0x18, 0x6d, 0xf8, 0x29, 0xed, 0xf4, 0xe7, 0x5b, 0xc5, + 0xbd, 0x97, 0x8, 0xb1, 0x3a, 0x66, 0x79, 0xd2, 0xba, 0x4c}, + {0x75, 0x52, 0x20, 0xa6, 0xa1, 0xb6, 0x7b, 0x6e, 0x83, 0x8e, 0x3c, + 0x41, 0xd7, 0x21, 0x4f, 0xaa, 0xb2, 0x5c, 0x8f, 0xe8, 0x55, 0xd1, + 0x56, 0x6f, 0xe1, 0x5b, 0x34, 0xa6, 0x4b, 0x5d, 0xe2, 0x2d}, + {0xcd, 0x1f, 0xd7, 0xa0, 0x24, 0x90, 0xd1, 0x80, 0xf8, 0x8a, 0x28, + 0xfb, 0xa, 0xc2, 0x25, 0xc5, 0x19, 0x64, 0x3a, 0x5f, 0x4b, 0x97, + 0xa3, 0xb1, 0x33, 0x72, 0x0, 0xe2, 0xef, 0xbc, 0x7f, 0x7d}, + }, + { + {0x94, 0x90, 0xc2, 0xf3, 0xc5, 0x5d, 0x7c, 0xcd, 0xab, 0x5, 0x91, + 0x2a, 0x9a, 0xa2, 0x81, 0xc7, 0x58, 0x30, 0x1c, 0x42, 0x36, 0x1d, + 0xc6, 0x80, 0xd7, 0xd4, 0xd8, 0xdc, 0x96, 0xd1, 0x9c, 0x4f}, + {0x1, 0x28, 0x6b, 0x26, 0x6a, 0x1e, 0xef, 0xfa, 0x16, 0x9f, 0x73, + 0xd5, 0xc4, 0x68, 0x6c, 0x86, 0x2c, 0x76, 0x3, 0x1b, 0xbc, 0x2f, + 0x8a, 0xf6, 0x8d, 0x5a, 0xb7, 0x87, 0x5e, 0x43, 0x75, 0x59}, + {0x68, 0x37, 0x7b, 0x6a, 0xd8, 0x97, 0x92, 0x19, 0x63, 0x7a, 0xd1, + 0x1a, 0x24, 0x58, 0xd0, 0xd0, 0x17, 0xc, 0x1c, 0x5c, 0xad, 0x9c, + 0x2, 0xba, 0x7, 0x3, 0x7a, 0x38, 0x84, 0xd0, 0xcd, 0x7c}, + }, + { + {0x93, 0xcc, 0x60, 0x67, 0x18, 0x84, 0xc, 0x9b, 0x99, 0x2a, 0xb3, + 0x1a, 0x7a, 0x0, 0xae, 0xcd, 0x18, 0xda, 0xb, 0x62, 0x86, 0xec, + 0x8d, 0xa8, 0x44, 0xca, 0x90, 0x81, 0x84, 0xca, 0x93, 0x35}, + {0x17, 0x4, 0x26, 0x6d, 0x2c, 0x42, 0xa6, 0xdc, 0xbd, 0x40, 0x82, + 0x94, 0x50, 0x3d, 0x15, 0xae, 0x77, 0xc6, 0x68, 0xfb, 0xb4, 0xc1, + 0xc0, 0xa9, 0x53, 0xcf, 0xd0, 0x61, 0xed, 0xd0, 0x8b, 0x42}, + {0xa7, 0x9a, 0x84, 0x5e, 0x9a, 0x18, 0x13, 0x92, 0xcd, 0xfa, 0xd8, + 0x65, 0x35, 0xc3, 0xd8, 0xd4, 0xd1, 0xbb, 0xfd, 0x53, 0x5b, 0x54, + 0x52, 0x8c, 0xe6, 0x63, 0x2d, 0xda, 0x8, 0x83, 0x39, 0x27}, + }, + { + {0x53, 0x24, 0x70, 0xa, 0x4c, 0xe, 0xa1, 0xb9, 0xde, 0x1b, 0x7d, + 0xd5, 0x66, 0x58, 0xa2, 0xf, 0xf7, 0xda, 0x27, 0xcd, 0xb5, 0xd9, + 0xb9, 0xff, 0xfd, 0x33, 0x2c, 0x49, 0x45, 0x29, 0x2c, 0x57}, + {0x13, 0xd4, 0x5e, 0x43, 0x28, 0x8d, 0xc3, 0x42, 0xc9, 0xcc, 0x78, + 0x32, 0x60, 0xf3, 0x50, 0xbd, 0xef, 0x3, 0xda, 0x79, 0x1a, 0xab, + 0x7, 0xbb, 0x55, 0x33, 0x8c, 0xbe, 0xae, 0x97, 0x95, 0x26}, + {0xbe, 0x30, 0xcd, 0xd6, 0x45, 0xc7, 0x7f, 0xc7, 0xfb, 0xae, 0xba, + 0xe3, 0xd3, 0xe8, 0xdf, 0xe4, 0xc, 0xda, 0x5d, 0xaa, 0x30, 0x88, + 0x2c, 0xa2, 0x80, 0xca, 0x5b, 0xc0, 0x98, 0x54, 0x98, 0x7f}, + }, + { + {0x63, 0x63, 0xbf, 0xf, 0x52, 0x15, 0x56, 0xd3, 0xa6, 0xfb, 0x4d, + 0xcf, 0x45, 0x5a, 0x4, 0x8, 0xc2, 0xa0, 0x3f, 0x87, 0xbc, 0x4f, + 0xc2, 0xee, 0xe7, 0x12, 0x9b, 0xd6, 0x3c, 0x65, 0xf2, 0x30}, + {0x17, 0xe1, 0xb, 0x9f, 0x88, 0xce, 0x49, 0x38, 0x88, 0xa2, 0x54, + 0x7b, 0x1b, 0xad, 0x5, 0x80, 0x1c, 0x92, 0xfc, 0x23, 0x9f, 0xc3, + 0xa3, 0x3d, 0x4, 0xf3, 0x31, 0xa, 0x47, 0xec, 0xc2, 0x76}, + {0x85, 0xc, 0xc1, 0xaa, 0x38, 0xc9, 0x8, 0x8a, 0xcb, 0x6b, 0x27, + 0xdb, 0x60, 0x9b, 0x17, 0x46, 0x70, 0xac, 0x6f, 0xe, 0x1e, 0xc0, + 0x20, 0xa9, 0xda, 0x73, 0x64, 0x59, 0xf1, 0x73, 0x12, 0x2f}, + }, + { + {0xc0, 0xb, 0xa7, 0x55, 0xd7, 0x8b, 0x48, 0x30, 0xe7, 0x42, 0xd4, + 0xf1, 0xa4, 0xb5, 0xd6, 0x6, 0x62, 0x61, 0x59, 0xbc, 0x9e, 0xa6, + 0xd1, 0xea, 0x84, 0xf7, 0xc5, 0xed, 0x97, 0x19, 0xac, 0x38}, + {0x11, 0x1e, 0xe0, 0x8a, 0x7c, 0xfc, 0x39, 0x47, 0x9f, 0xab, 0x6a, + 0x4a, 0x90, 0x74, 0x52, 0xfd, 0x2e, 0x8f, 0x72, 0x87, 0x82, 0x8a, + 0xd9, 0x41, 0xf2, 0x69, 0x5b, 0xd8, 0x2a, 0x57, 0x9e, 0x5d}, + {0x3b, 0xb1, 0x51, 0xa7, 0x17, 0xb5, 0x66, 0x6, 0x8c, 0x85, 0x9b, + 0x7e, 0x86, 0x6, 0x7d, 0x74, 0x49, 0xde, 0x4d, 0x45, 0x11, 0xc0, + 0xac, 0xac, 0x9c, 0xe6, 0xe9, 0xbf, 0x9c, 0xcd, 0xdf, 0x22}, + }, + { + {0xa1, 0xe0, 0x3b, 0x10, 0xb4, 0x59, 0xec, 0x56, 0x69, 0xf9, 0x59, + 0xd2, 0xec, 0xba, 0xe3, 0x2e, 0x32, 0xcd, 0xf5, 0x13, 0x94, 0xb2, + 0x7c, 0x79, 0x72, 0xe4, 0xcd, 0x24, 0x78, 0x87, 0xe9, 0xf}, + {0xd9, 0xc, 0xd, 0xc3, 0xe0, 0xd2, 0xdb, 0x8d, 0x33, 0x43, 0xbb, + 0xac, 0x5f, 0x66, 0x8e, 0xad, 0x1f, 0x96, 0x2a, 0x32, 0x8c, 0x25, + 0x6b, 0x8f, 0xc7, 0xc1, 0x48, 0x54, 0xc0, 0x16, 0x29, 0x6b}, + {0x3b, 0x91, 0xba, 0xa, 0xd1, 0x34, 0xdb, 0x7e, 0xe, 0xac, 0x6d, + 0x2e, 0x82, 0xcd, 0xa3, 0x4e, 0x15, 0xf8, 0x78, 0x65, 0xff, 0x3d, + 0x8, 0x66, 0x17, 0xa, 0xf0, 0x7f, 0x30, 0x3f, 0x30, 0x4c}, + }, + { + {0x0, 0x45, 0xd9, 0xd, 0x58, 0x3, 0xfc, 0x29, 0x93, 0xec, 0xbb, + 0x6f, 0xa4, 0x7a, 0xd2, 0xec, 0xf8, 0xa7, 0xe2, 0xc2, 0x5f, 0x15, + 0xa, 0x13, 0xd5, 0xa1, 0x6, 0xb7, 0x1a, 0x15, 0x6b, 0x41}, + {0x85, 0x8c, 0xb2, 0x17, 0xd6, 0x3b, 0xa, 0xd3, 0xea, 0x3b, 0x77, + 0x39, 0xb7, 0x77, 0xd3, 0xc5, 0xbf, 0x5c, 0x6a, 0x1e, 0x8c, 0xe7, + 0xc6, 0xc6, 0xc4, 0xb7, 0x2a, 0x8b, 0xf7, 0xb8, 0x61, 0xd}, + {0xb0, 0x36, 0xc1, 0xe9, 0xef, 0xd7, 0xa8, 0x56, 0x20, 0x4b, 0xe4, + 0x58, 0xcd, 0xe5, 0x7, 0xbd, 0xab, 0xe0, 0x57, 0x1b, 0xda, 0x2f, + 0xe6, 0xaf, 0xd2, 0xe8, 0x77, 0x42, 0xf7, 0x2a, 0x1a, 0x19}, + }, + }, + { + { + {0xfb, 0xe, 0x46, 0x4f, 0x43, 0x2b, 0xe6, 0x9f, 0xd6, 0x7, 0x36, + 0xa6, 0xd4, 0x3, 0xd3, 0xde, 0x24, 0xda, 0xa0, 0xb7, 0xe, 0x21, + 0x52, 0xf0, 0x93, 0x5b, 0x54, 0x0, 0xbe, 0x7d, 0x7e, 0x23}, + {0x31, 0x14, 0x3c, 0xc5, 0x4b, 0xf7, 0x16, 0xce, 0xde, 0xed, 0x72, + 0x20, 0xce, 0x25, 0x97, 0x2b, 0xe7, 0x3e, 0xb2, 0xb5, 0x6f, 0xc3, + 0xb9, 0xb8, 0x8, 0xc9, 0x5c, 0xb, 0x45, 0xe, 0x2e, 0x7e}, + {0x30, 0xb4, 0x1, 0x67, 0xed, 0x75, 0x35, 0x1, 0x10, 0xfd, 0xb, + 0x9f, 0xe6, 0x94, 0x10, 0x23, 0x22, 0x7f, 0xe4, 0x83, 0x15, 0xf, + 0x32, 0x75, 0xe3, 0x55, 0x11, 0xb1, 0x99, 0xa6, 0xaf, 0x71}, + }, + { + {0xd6, 0x50, 0x3b, 0x47, 0x1c, 0x3c, 0x42, 0xea, 0x10, 0xef, 0x38, + 0x3b, 0x1f, 0x7a, 0xe8, 0x51, 0x95, 0xbe, 0xc9, 0xb2, 0x5f, 0xbf, + 0x84, 0x9b, 0x1c, 0x9a, 0xf8, 0x78, 0xbc, 0x1f, 0x73, 0x0}, + {0x1d, 0xb6, 0x53, 0x39, 0x9b, 0x6f, 0xce, 0x65, 0xe6, 0x41, 0xa1, + 0xaf, 0xea, 0x39, 0x58, 0xc6, 0xfe, 0x59, 0xf7, 0xa9, 0xfd, 0x5f, + 0x43, 0xf, 0x8e, 0xc2, 0xb1, 0xc2, 0xe9, 0x42, 0x11, 0x2}, + {0x80, 0x18, 0xf8, 0x48, 0x18, 0xc7, 0x30, 0xe4, 0x19, 0xc1, 0xce, + 0x5e, 0x22, 0xc, 0x96, 0xbf, 0xe3, 0x15, 0xba, 0x6b, 0x83, 0xe0, + 0xda, 0xb6, 0x8, 0x58, 0xe1, 0x47, 0x33, 0x6f, 0x4d, 0x4c}, + }, + { + {0x70, 0x19, 0x8f, 0x98, 0xfc, 0xdd, 0xc, 0x2f, 0x1b, 0xf5, 0xb9, + 0xb0, 0x27, 0x62, 0x91, 0x6b, 0xbe, 0x76, 0x91, 0x77, 0xc4, 0xb6, + 0xc7, 0x6e, 0xa8, 0x9f, 0x8f, 0xa8, 0x0, 0x95, 0xbf, 0x38}, + {0xc9, 0x1f, 0x7d, 0xc1, 0xcf, 0xec, 0xf7, 0x18, 0x14, 0x3c, 0x40, + 0x51, 0xa6, 0xf5, 0x75, 0x6c, 0xdf, 0xc, 0xee, 0xf7, 0x2b, 0x71, + 0xde, 0xdb, 0x22, 0x7a, 0xe4, 0xa7, 0xaa, 0xdd, 0x3f, 0x19}, + {0x6f, 0x87, 0xe8, 0x37, 0x3c, 0xc9, 0xd2, 0x1f, 0x2c, 0x46, 0xd1, + 0x18, 0x5a, 0x1e, 0xf6, 0xa2, 0x76, 0x12, 0x24, 0x39, 0x82, 0xf5, + 0x80, 0x50, 0x69, 0x49, 0xd, 0xbf, 0x9e, 0xb9, 0x6f, 0x6a}, + }, + { + {0xc6, 0x23, 0xe4, 0xb6, 0xb5, 0x22, 0xb1, 0xee, 0x8e, 0xff, 0x86, + 0xf2, 0x10, 0x70, 0x9d, 0x93, 0x8c, 0x5d, 0xcf, 0x1d, 0x83, 0x2a, + 0xa9, 0x90, 0x10, 0xeb, 0xc5, 0x42, 0x9f, 0xda, 0x6f, 0x13}, + {0xeb, 0x55, 0x8, 0x56, 0xbb, 0xc1, 0x46, 0x6a, 0x9d, 0xf0, 0x93, + 0xf8, 0x38, 0xbb, 0x16, 0x24, 0xc1, 0xac, 0x71, 0x8f, 0x37, 0x11, + 0x1d, 0xd7, 0xea, 0x96, 0x18, 0xa3, 0x14, 0x69, 0xf7, 0x75}, + {0xd1, 0xbd, 0x5, 0xa3, 0xb1, 0xdf, 0x4c, 0xf9, 0x8, 0x2c, 0xf8, + 0x9f, 0x9d, 0x4b, 0x36, 0xf, 0x8a, 0x58, 0xbb, 0xc3, 0xa5, 0xd8, + 0x87, 0x2a, 0xba, 0xdc, 0xe8, 0xb, 0x51, 0x83, 0x21, 0x2}, + }, + { + {0x7f, 0x7a, 0x30, 0x43, 0x1, 0x71, 0x5a, 0x9d, 0x5f, 0xa4, 0x7d, + 0xc4, 0x9e, 0xde, 0x63, 0xb0, 0xd3, 0x7a, 0x92, 0xbe, 0x52, 0xfe, + 0xbb, 0x22, 0x6c, 0x42, 0x40, 0xfd, 0x41, 0xc4, 0x87, 0x13}, + {0x14, 0x2d, 0xad, 0x5e, 0x38, 0x66, 0xf7, 0x4a, 0x30, 0x58, 0x7c, + 0xca, 0x80, 0xd8, 0x8e, 0xa0, 0x3d, 0x1e, 0x21, 0x10, 0xe6, 0xa6, + 0x13, 0xd, 0x3, 0x6c, 0x80, 0x7b, 0xe1, 0x1c, 0x7, 0x6a}, + {0xf8, 0x8a, 0x97, 0x87, 0xd1, 0xc3, 0xd3, 0xb5, 0x13, 0x44, 0xe, + 0x7f, 0x3d, 0x5a, 0x2b, 0x72, 0xa0, 0x7c, 0x47, 0xbb, 0x48, 0x48, + 0x7b, 0xd, 0x92, 0xdc, 0x1e, 0xaf, 0x6a, 0xb2, 0x71, 0x31}, + }, + { + {0xd1, 0x47, 0x8a, 0xb2, 0xd8, 0xb7, 0xd, 0xa6, 0xf1, 0xa4, 0x70, + 0x17, 0xd6, 0x14, 0xbf, 0xa6, 0x58, 0xbd, 0xdd, 0x53, 0x93, 0xf8, + 0xa1, 0xd4, 0xe9, 0x43, 0x42, 0x34, 0x63, 0x4a, 0x51, 0x6c}, + {0xa8, 0x4c, 0x56, 0x97, 0x90, 0x31, 0x2f, 0xa9, 0x19, 0xe1, 0x75, + 0x22, 0x4c, 0xb8, 0x7b, 0xff, 0x50, 0x51, 0x87, 0xa4, 0x37, 0xfe, + 0x55, 0x4f, 0x5a, 0x83, 0xf0, 0x3c, 0x87, 0xd4, 0x1f, 0x22}, + {0x41, 0x63, 0x15, 0x3a, 0x4f, 0x20, 0x22, 0x23, 0x2d, 0x3, 0xa, + 0xba, 0xe9, 0xe0, 0x73, 0xfb, 0xe, 0x3, 0xf, 0x41, 0x4c, 0xdd, + 0xe0, 0xfc, 0xaa, 0x4a, 0x92, 0xfb, 0x96, 0xa5, 0xda, 0x48}, + }, + { + {0x93, 0x97, 0x4c, 0xc8, 0x5d, 0x1d, 0xf6, 0x14, 0x6, 0x82, 0x41, + 0xef, 0xe3, 0xf9, 0x41, 0x99, 0xac, 0x77, 0x62, 0x34, 0x8f, 0xb8, + 0xf5, 0xcd, 0xa9, 0x79, 0x8a, 0xe, 0xfa, 0x37, 0xc8, 0x58}, + {0xc7, 0x9c, 0xa5, 0x5c, 0x66, 0x8e, 0xca, 0x6e, 0xa0, 0xac, 0x38, + 0x2e, 0x4b, 0x25, 0x47, 0xa8, 0xce, 0x17, 0x1e, 0xd2, 0x8, 0xc7, + 0xaf, 0x31, 0xf7, 0x4a, 0xd8, 0xca, 0xfc, 0xd6, 0x6d, 0x67}, + {0x58, 0x90, 0xfc, 0x96, 0x85, 0x68, 0xf9, 0xc, 0x1b, 0xa0, 0x56, + 0x7b, 0xf3, 0xbb, 0xdc, 0x1d, 0x6a, 0xd6, 0x35, 0x49, 0x7d, 0xe7, + 0xc2, 0xdc, 0xa, 0x7f, 0xa5, 0xc6, 0xf2, 0x73, 0x4f, 0x1c}, + }, + { + {0x84, 0x34, 0x7c, 0xfc, 0x6e, 0x70, 0x6e, 0xb3, 0x61, 0xcf, 0xc1, + 0xc3, 0xb4, 0xc9, 0xdf, 0x73, 0xe5, 0xc7, 0x1c, 0x78, 0xc9, 0x79, + 0x1d, 0xeb, 0x5c, 0x67, 0xaf, 0x7d, 0xdb, 0x9a, 0x45, 0x70}, + {0xbb, 0xa0, 0x5f, 0x30, 0xbd, 0x4f, 0x7a, 0xe, 0xad, 0x63, 0xc6, + 0x54, 0xe0, 0x4c, 0x9d, 0x82, 0x48, 0x38, 0xe3, 0x2f, 0x83, 0xc3, + 0x21, 0xf4, 0x42, 0x4c, 0xf6, 0x1b, 0xd, 0xc8, 0x5a, 0x79}, + {0xb3, 0x2b, 0xb4, 0x91, 0x49, 0xdb, 0x91, 0x1b, 0xca, 0xdc, 0x2, + 0x4b, 0x23, 0x96, 0x26, 0x57, 0xdc, 0x78, 0x8c, 0x1f, 0xe5, 0x9e, + 0xdf, 0x9f, 0xd3, 0x1f, 0xe2, 0x8c, 0x84, 0x62, 0xe1, 0x5f}, + }, + }, + { + { + {0x8, 0xb2, 0x7c, 0x5d, 0x2d, 0x85, 0x79, 0x28, 0xe7, 0xf2, 0x7d, + 0x68, 0x70, 0xdd, 0xde, 0xb8, 0x91, 0x78, 0x68, 0x21, 0xab, 0xff, + 0xb, 0xdc, 0x35, 0xaa, 0x7d, 0x67, 0x43, 0xc0, 0x44, 0x2b}, + {0x1a, 0x96, 0x94, 0xe1, 0x4f, 0x21, 0x59, 0x4e, 0x4f, 0xcd, 0x71, + 0xd, 0xc7, 0x7d, 0xbe, 0x49, 0x2d, 0xf2, 0x50, 0x3b, 0xd2, 0xcf, + 0x0, 0x93, 0x32, 0x72, 0x91, 0xfc, 0x46, 0xd4, 0x89, 0x47}, + {0x8e, 0xb7, 0x4e, 0x7, 0xab, 0x87, 0x1c, 0x1a, 0x67, 0xf4, 0xda, + 0x99, 0x8e, 0xd1, 0xc6, 0xfa, 0x67, 0x90, 0x4f, 0x48, 0xcd, 0xbb, + 0xac, 0x3e, 0xe4, 0xa4, 0xb9, 0x2b, 0xef, 0x2e, 0xc5, 0x60}, + }, + { + {0x11, 0x6d, 0xae, 0x7c, 0xc2, 0xc5, 0x2b, 0x70, 0xab, 0x8c, 0xa4, + 0x54, 0x9b, 0x69, 0xc7, 0x44, 0xb2, 0x2e, 0x49, 0xba, 0x56, 0x40, + 0xbc, 0xef, 0x6d, 0x67, 0xb6, 0xd9, 0x48, 0x72, 0xd7, 0x70}, + {0xf1, 0x8b, 0xfd, 0x3b, 0xbc, 0x89, 0x5d, 0xb, 0x1a, 0x55, 0xf3, + 0xc9, 0x37, 0x92, 0x6b, 0xb0, 0xf5, 0x28, 0x30, 0xd5, 0xb0, 0x16, + 0x4c, 0xe, 0xab, 0xca, 0xcf, 0x2c, 0x31, 0x9c, 0xbc, 0x10}, + {0x5b, 0xa0, 0xc2, 0x3e, 0x4b, 0xe8, 0x8a, 0xaa, 0xe0, 0x81, 0x17, + 0xed, 0xf4, 0x9e, 0x69, 0x98, 0xd1, 0x85, 0x8e, 0x70, 0xe4, 0x13, + 0x45, 0x79, 0x13, 0xf4, 0x76, 0xa9, 0xd3, 0x5b, 0x75, 0x63}, + }, + { + {0xb7, 0xac, 0xf1, 0x97, 0x18, 0x10, 0xc7, 0x3d, 0xd8, 0xbb, 0x65, + 0xc1, 0x5e, 0x7d, 0xda, 0x5d, 0xf, 0x2, 0xa1, 0xf, 0x9c, 0x5b, + 0x8e, 0x50, 0x56, 0x2a, 0xc5, 0x37, 0x17, 0x75, 0x63, 0x27}, + {0x53, 0x8, 0xd1, 0x2a, 0x3e, 0xa0, 0x5f, 0xb5, 0x69, 0x35, 0xe6, + 0x9e, 0x90, 0x75, 0x6f, 0x35, 0x90, 0xb8, 0x69, 0xbe, 0xfd, 0xf1, + 0xf9, 0x9f, 0x84, 0x6f, 0xc1, 0x8b, 0xc4, 0xc1, 0x8c, 0xd}, + {0xa9, 0x19, 0xb4, 0x6e, 0xd3, 0x2, 0x94, 0x2, 0xa5, 0x60, 0xb4, + 0x77, 0x7e, 0x4e, 0xb4, 0xf0, 0x56, 0x49, 0x3c, 0xd4, 0x30, 0x62, + 0xa8, 0xcf, 0xe7, 0x66, 0xd1, 0x7a, 0x8a, 0xdd, 0xc2, 0x70}, + }, + { + {0x13, 0x7e, 0xed, 0xb8, 0x7d, 0x96, 0xd4, 0x91, 0x7a, 0x81, 0x76, + 0xd7, 0xa, 0x2f, 0x25, 0x74, 0x64, 0x25, 0x85, 0xd, 0xe0, 0x82, + 0x9, 0xe4, 0xe5, 0x3c, 0xa5, 0x16, 0x38, 0x61, 0xb8, 0x32}, + {0xe, 0xec, 0x6f, 0x9f, 0x50, 0x94, 0x61, 0x65, 0x8d, 0x51, 0xc6, + 0x46, 0xa9, 0x7e, 0x2e, 0xee, 0x5c, 0x9b, 0xe0, 0x67, 0xf3, 0xc1, + 0x33, 0x97, 0x95, 0x84, 0x94, 0x63, 0x63, 0xac, 0xf, 0x2e}, + {0x64, 0xcd, 0x48, 0xe4, 0xbe, 0xf7, 0xe7, 0x79, 0xd0, 0x86, 0x78, + 0x8, 0x67, 0x3a, 0xc8, 0x6a, 0x2e, 0xdb, 0xe4, 0xa0, 0xd9, 0xd4, + 0x9f, 0xf8, 0x41, 0x4f, 0x5a, 0x73, 0x5c, 0x21, 0x79, 0x41}, + }, + { + {0x34, 0xcd, 0x6b, 0x28, 0xb9, 0x33, 0xae, 0xe4, 0xdc, 0xd6, 0x9d, + 0x55, 0xb6, 0x7e, 0xef, 0xb7, 0x1f, 0x8e, 0xd3, 0xb3, 0x1f, 0x14, + 0x8b, 0x27, 0x86, 0xc2, 0x41, 0x22, 0x66, 0x85, 0xfa, 0x31}, + {0x2a, 0xed, 0xdc, 0xd7, 0xe7, 0x94, 0x70, 0x8c, 0x70, 0x9c, 0xd3, + 0x47, 0xc3, 0x8a, 0xfb, 0x97, 0x2, 0xd9, 0x6, 0xa9, 0x33, 0xe0, + 0x3b, 0xe1, 0x76, 0x9d, 0xd9, 0xc, 0xa3, 0x44, 0x3, 0x70}, + {0xf4, 0x22, 0x36, 0x2e, 0x42, 0x6c, 0x82, 0xaf, 0x2d, 0x50, 0x33, + 0x98, 0x87, 0x29, 0x20, 0xc1, 0x23, 0x91, 0x38, 0x2b, 0xe1, 0xb7, + 0xc1, 0x9b, 0x89, 0x24, 0x95, 0xa9, 0x12, 0x23, 0xbb, 0x24}, + }, + { + {0x6b, 0x5c, 0xf8, 0xf5, 0x2a, 0xc, 0xf8, 0x41, 0x94, 0x67, 0xfa, + 0x4, 0xc3, 0x84, 0x72, 0x68, 0xad, 0x1b, 0xba, 0xa3, 0x99, 0xdf, + 0x45, 0x89, 0x16, 0x5d, 0xeb, 0xff, 0xf9, 0x2a, 0x1d, 0xd}, + {0xc3, 0x67, 0xde, 0x32, 0x17, 0xed, 0xa8, 0xb1, 0x48, 0x49, 0x1b, + 0x46, 0x18, 0x94, 0xb4, 0x3c, 0xd2, 0xbc, 0xcf, 0x76, 0x43, 0x43, + 0xbd, 0x8e, 0x8, 0x80, 0x18, 0x1e, 0x87, 0x3e, 0xee, 0xf}, + {0xdf, 0x1e, 0x62, 0x32, 0xa1, 0x8a, 0xda, 0xa9, 0x79, 0x65, 0x22, + 0x59, 0xa1, 0x22, 0xb8, 0x30, 0x93, 0xc1, 0x9a, 0xa7, 0x7b, 0x19, + 0x4, 0x40, 0x76, 0x1d, 0x53, 0x18, 0x97, 0xd7, 0xac, 0x16}, + }, + { + {0xad, 0xb6, 0x87, 0x78, 0xc5, 0xc6, 0x59, 0xc9, 0xba, 0xfe, 0x90, + 0x5f, 0xad, 0x9e, 0xe1, 0x94, 0x4, 0xf5, 0x42, 0xa3, 0x62, 0x4e, + 0xe2, 0x16, 0x0, 0x17, 0x16, 0x18, 0x4b, 0xd3, 0x4e, 0x16}, + {0x3d, 0x1d, 0x9b, 0x2d, 0xaf, 0x72, 0xdf, 0x72, 0x5a, 0x24, 0x32, + 0xa4, 0x36, 0x2a, 0x46, 0x63, 0x37, 0x96, 0xb3, 0x16, 0x79, 0xa0, + 0xce, 0x3e, 0x9, 0x23, 0x30, 0xb9, 0xf6, 0xe, 0x3e, 0x12}, + {0x9a, 0xe6, 0x2f, 0x19, 0x4c, 0xd9, 0x7e, 0x48, 0x13, 0x15, 0x91, + 0x3a, 0xea, 0x2c, 0xae, 0x61, 0x27, 0xde, 0xa4, 0xb9, 0xd3, 0xf6, + 0x7b, 0x87, 0xeb, 0xf3, 0x73, 0x10, 0xc6, 0xf, 0xda, 0x78}, + }, + { + {0x94, 0x3a, 0xc, 0x68, 0xf1, 0x80, 0x9f, 0xa2, 0xe6, 0xe7, 0xe9, + 0x1a, 0x15, 0x7e, 0xf7, 0x71, 0x73, 0x79, 0x1, 0x48, 0x58, 0xf1, + 0x0, 0x11, 0xdd, 0x8d, 0xb3, 0x16, 0xb3, 0xa4, 0x4a, 0x5}, + {0x6a, 0xc6, 0x2b, 0xe5, 0x28, 0x5d, 0xf1, 0x5b, 0x8e, 0x1a, 0xf0, + 0x70, 0x18, 0xe3, 0x47, 0x2c, 0xdd, 0x8b, 0xc2, 0x6, 0xbc, 0xaf, + 0x19, 0x24, 0x3a, 0x17, 0x6b, 0x25, 0xeb, 0xde, 0x25, 0x2d}, + {0xb8, 0x7c, 0x26, 0x19, 0x8d, 0x46, 0xc8, 0xdf, 0xaf, 0x4d, 0xe5, + 0x66, 0x9c, 0x78, 0x28, 0xb, 0x17, 0xec, 0x6e, 0x66, 0x2a, 0x1d, + 0xeb, 0x2a, 0x60, 0xa7, 0x7d, 0xab, 0xa6, 0x10, 0x46, 0x13}, + }, + }, + { + { + {0x15, 0xf5, 0xd1, 0x77, 0xe7, 0x65, 0x2a, 0xcd, 0xf1, 0x60, 0xaa, + 0x8f, 0x87, 0x91, 0x89, 0x54, 0xe5, 0x6, 0xbc, 0xda, 0xbc, 0x3b, + 0xb7, 0xb1, 0xfb, 0xc9, 0x7c, 0xa9, 0xcb, 0x78, 0x48, 0x65}, + {0xfe, 0xb0, 0xf6, 0x8d, 0xc7, 0x8e, 0x13, 0x51, 0x1b, 0xf5, 0x75, + 0xe5, 0x89, 0xda, 0x97, 0x53, 0xb9, 0xf1, 0x7a, 0x71, 0x1d, 0x7a, + 0x20, 0x9, 0x50, 0xd6, 0x20, 0x2b, 0xba, 0xfd, 0x2, 0x21}, + {0xa1, 0xe6, 0x5c, 0x5, 0x5, 0xe4, 0x9e, 0x96, 0x29, 0xad, 0x51, + 0x12, 0x68, 0xa7, 0xbc, 0x36, 0x15, 0xa4, 0x7d, 0xaa, 0x17, 0xf5, + 0x1a, 0x3a, 0xba, 0xb2, 0xec, 0x29, 0xdb, 0x25, 0xd7, 0xa}, + }, + { + {0x85, 0x6f, 0x5, 0x9b, 0xc, 0xbc, 0xc7, 0xfe, 0xd7, 0xff, 0xf5, + 0xe7, 0x68, 0x52, 0x7d, 0x53, 0xfa, 0xae, 0x12, 0x43, 0x62, 0xc6, + 0xaf, 0x77, 0xd9, 0x9f, 0x39, 0x2, 0x53, 0x5f, 0x67, 0x4f}, + {0x57, 0x24, 0x4e, 0x83, 0xb1, 0x67, 0x42, 0xdc, 0xc5, 0x1b, 0xce, + 0x70, 0xb5, 0x44, 0x75, 0xb6, 0xd7, 0x5e, 0xd1, 0xf7, 0xb, 0x7a, + 0xf0, 0x1a, 0x50, 0x36, 0xa0, 0x71, 0xfb, 0xcf, 0xef, 0x4a}, + {0x1e, 0x17, 0x15, 0x4, 0x36, 0x36, 0x2d, 0xc3, 0x3b, 0x48, 0x98, + 0x89, 0x11, 0xef, 0x2b, 0xcd, 0x10, 0x51, 0x94, 0xd0, 0xad, 0x6e, + 0xa, 0x87, 0x61, 0x65, 0xa8, 0xa2, 0x72, 0xbb, 0xcc, 0xb}, + }, + { + {0x96, 0x12, 0xfe, 0x50, 0x4c, 0x5e, 0x6d, 0x18, 0x7e, 0x9f, 0xe8, + 0xfe, 0x82, 0x7b, 0x39, 0xe0, 0xb0, 0x31, 0x70, 0x50, 0xc5, 0xf6, + 0xc7, 0x3b, 0xc2, 0x37, 0x8f, 0x10, 0x69, 0xfd, 0x78, 0x66}, + {0xc8, 0xa9, 0xb1, 0xea, 0x2f, 0x96, 0x5e, 0x18, 0xcd, 0x7d, 0x14, + 0x65, 0x35, 0xe6, 0xe7, 0x86, 0xf2, 0x6d, 0x5b, 0xbb, 0x31, 0xe0, + 0x92, 0xb0, 0x3e, 0xb7, 0xd6, 0x59, 0xab, 0xf0, 0x24, 0x40}, + {0xc2, 0x63, 0x68, 0x63, 0x31, 0xfa, 0x86, 0x15, 0xf2, 0x33, 0x2d, + 0x57, 0x48, 0x8c, 0xf6, 0x7, 0xfc, 0xae, 0x9e, 0x78, 0x9f, 0xcc, + 0x73, 0x4f, 0x1, 0x47, 0xad, 0x8e, 0x10, 0xe2, 0x42, 0x2d}, + }, + { + {0x93, 0x75, 0x53, 0xf, 0xd, 0x7b, 0x71, 0x21, 0x4c, 0x6, 0x1e, + 0x13, 0xb, 0x69, 0x4e, 0x91, 0x9f, 0xe0, 0x2a, 0x75, 0xae, 0x87, + 0xb6, 0x1b, 0x6e, 0x3c, 0x42, 0x9b, 0xa7, 0xf3, 0xb, 0x42}, + {0x9b, 0xd2, 0xdf, 0x94, 0x15, 0x13, 0xf5, 0x97, 0x6a, 0x4c, 0x3f, + 0x31, 0x5d, 0x98, 0x55, 0x61, 0x10, 0x50, 0x45, 0x8, 0x7, 0x3f, + 0xa1, 0xeb, 0x22, 0xd3, 0xd2, 0xb8, 0x8, 0x26, 0x6b, 0x67}, + {0x47, 0x2b, 0x5b, 0x1c, 0x65, 0xba, 0x38, 0x81, 0x80, 0x1b, 0x1b, + 0x31, 0xec, 0xb6, 0x71, 0x86, 0xb0, 0x35, 0x31, 0xbc, 0xb1, 0xc, + 0xff, 0x7b, 0xe0, 0xf1, 0xc, 0x9c, 0xfa, 0x2f, 0x5d, 0x74}, + }, + { + {0x6a, 0x4e, 0xd3, 0x21, 0x57, 0xdf, 0x36, 0x60, 0xd0, 0xb3, 0x7b, + 0x99, 0x27, 0x88, 0xdb, 0xb1, 0xfa, 0x6a, 0x75, 0xc8, 0xc3, 0x9, + 0xc2, 0xd3, 0x39, 0xc8, 0x1d, 0x4c, 0xe5, 0x5b, 0xe1, 0x6}, + {0xbd, 0xc8, 0xc9, 0x2b, 0x1e, 0x5a, 0x52, 0xbf, 0x81, 0x9d, 0x47, + 0x26, 0x8, 0x26, 0x5b, 0xea, 0xdb, 0x55, 0x1, 0xdf, 0xe, 0xc7, + 0x11, 0xd5, 0xd0, 0xf5, 0xc, 0x96, 0xeb, 0x3c, 0xe2, 0x1a}, + {0x4a, 0x99, 0x32, 0x19, 0x87, 0x5d, 0x72, 0x5b, 0xb0, 0xda, 0xb1, + 0xce, 0xb5, 0x1c, 0x35, 0x32, 0x5, 0xca, 0xb7, 0xda, 0x49, 0x15, + 0xc4, 0x7d, 0xf7, 0xc1, 0x8e, 0x27, 0x61, 0xd8, 0xde, 0x58}, + }, + { + {0xa8, 0xc9, 0xc2, 0xb6, 0xa8, 0x5b, 0xfb, 0x2d, 0x8c, 0x59, 0x2c, + 0xf5, 0x8e, 0xef, 0xee, 0x48, 0x73, 0x15, 0x2d, 0xf1, 0x7, 0x91, + 0x80, 0x33, 0xd8, 0x5b, 0x1d, 0x53, 0x6b, 0x69, 0xba, 0x8}, + {0x5c, 0xc5, 0x66, 0xf2, 0x93, 0x37, 0x17, 0xd8, 0x49, 0x4e, 0x45, + 0xcc, 0xc5, 0x76, 0xc9, 0xc8, 0xa8, 0xc3, 0x26, 0xbc, 0xf8, 0x82, + 0xe3, 0x5c, 0xf9, 0xf6, 0x85, 0x54, 0xe8, 0x9d, 0xf3, 0x2f}, + {0x7a, 0xc5, 0xef, 0xc3, 0xee, 0x3e, 0xed, 0x77, 0x11, 0x48, 0xff, + 0xd4, 0x17, 0x55, 0xe0, 0x4, 0xcb, 0x71, 0xa6, 0xf1, 0x3f, 0x7a, + 0x3d, 0xea, 0x54, 0xfe, 0x7c, 0x94, 0xb4, 0x33, 0x6, 0x12}, + }, + { + {0xa, 0x10, 0x12, 0x49, 0x47, 0x31, 0xbd, 0x82, 0x6, 0xbe, 0x6f, + 0x7e, 0x6d, 0x7b, 0x23, 0xde, 0xc6, 0x79, 0xea, 0x11, 0x19, 0x76, + 0x1e, 0xe1, 0xde, 0x3b, 0x39, 0xcb, 0xe3, 0x3b, 0x43, 0x7}, + {0x42, 0x0, 0x61, 0x91, 0x78, 0x98, 0x94, 0xb, 0xe8, 0xfa, 0xeb, + 0xec, 0x3c, 0xb1, 0xe7, 0x4e, 0xc0, 0xa4, 0xf0, 0x94, 0x95, 0x73, + 0xbe, 0x70, 0x85, 0x91, 0xd5, 0xb4, 0x99, 0xa, 0xd3, 0x35}, + {0xf4, 0x97, 0xe9, 0x5c, 0xc0, 0x44, 0x79, 0xff, 0xa3, 0x51, 0x5c, + 0xb0, 0xe4, 0x3d, 0x5d, 0x57, 0x7c, 0x84, 0x76, 0x5a, 0xfd, 0x81, + 0x33, 0x58, 0x9f, 0xda, 0xf6, 0x7a, 0xde, 0x3e, 0x87, 0x2d}, + }, + { + {0x81, 0xf9, 0x5d, 0x4e, 0xe1, 0x2, 0x62, 0xaa, 0xf5, 0xe1, 0x15, + 0x50, 0x17, 0x59, 0xd, 0xa2, 0x6c, 0x1d, 0xe2, 0xba, 0xd3, 0x75, + 0xa2, 0x18, 0x53, 0x2, 0x60, 0x1, 0x8a, 0x61, 0x43, 0x5}, + {0x9, 0x34, 0x37, 0x43, 0x64, 0x31, 0x7a, 0x15, 0xd9, 0x81, 0xaa, + 0xf4, 0xee, 0xb7, 0xb8, 0xfa, 0x6, 0x48, 0xa6, 0xf5, 0xe6, 0xfe, + 0x93, 0xb0, 0xb6, 0xa7, 0x7f, 0x70, 0x54, 0x36, 0x77, 0x2e}, + {0xc1, 0x23, 0x4c, 0x97, 0xf4, 0xbd, 0xea, 0xd, 0x93, 0x46, 0xce, + 0x9d, 0x25, 0xa, 0x6f, 0xaa, 0x2c, 0xba, 0x9a, 0xa2, 0xb8, 0x2c, + 0x20, 0x4, 0xd, 0x96, 0x7, 0x2d, 0x36, 0x43, 0x14, 0x4b}, + }, + }, + { + { + {0xcb, 0x9c, 0x52, 0x1c, 0xe9, 0x54, 0x7c, 0x96, 0xfb, 0x35, 0xc6, + 0x64, 0x92, 0x26, 0xf6, 0x30, 0x65, 0x19, 0x12, 0x78, 0xf4, 0xaf, + 0x47, 0x27, 0x5c, 0x6f, 0xf6, 0xea, 0x18, 0x84, 0x3, 0x17}, + {0x7a, 0x1f, 0x6e, 0xb6, 0xc7, 0xb7, 0xc4, 0xcc, 0x7e, 0x2f, 0xc, + 0xf5, 0x25, 0x7e, 0x15, 0x44, 0x1c, 0xaf, 0x3e, 0x71, 0xfc, 0x6d, + 0xf0, 0x3e, 0xf7, 0x63, 0xda, 0x52, 0x67, 0x44, 0x2f, 0x58}, + {0xe4, 0x4c, 0x32, 0x20, 0xd3, 0x7b, 0x31, 0xc6, 0xc4, 0x8b, 0x48, + 0xa4, 0xe8, 0x42, 0x10, 0xa8, 0x64, 0x13, 0x5a, 0x4e, 0x8b, 0xf1, + 0x1e, 0xb2, 0xc9, 0x8d, 0xa2, 0xcd, 0x4b, 0x1c, 0x2a, 0xc}, + }, + { + {0x45, 0x69, 0xbd, 0x69, 0x48, 0x81, 0xc4, 0xed, 0x22, 0x8d, 0x1c, + 0xbe, 0x7d, 0x90, 0x6d, 0xd, 0xab, 0xc5, 0x5c, 0xd5, 0x12, 0xd2, + 0x3b, 0xc6, 0x83, 0xdc, 0x14, 0xa3, 0x30, 0x9b, 0x6a, 0x5a}, + {0x47, 0x4, 0x1f, 0x6f, 0xd0, 0xc7, 0x4d, 0xd2, 0x59, 0xc0, 0x87, + 0xdb, 0x3e, 0x9e, 0x26, 0xb2, 0x8f, 0xd2, 0xb2, 0xfb, 0x72, 0x2, + 0x5b, 0xd1, 0x77, 0x48, 0xf6, 0xc6, 0xd1, 0x8b, 0x55, 0x7c}, + {0x3d, 0x46, 0x96, 0xd3, 0x24, 0x15, 0xec, 0xd0, 0xf0, 0x24, 0x5a, + 0xc3, 0x8a, 0x62, 0xbb, 0x12, 0xa4, 0x5f, 0xbc, 0x1c, 0x79, 0x3a, + 0xc, 0xa5, 0xc3, 0xaf, 0xfb, 0xa, 0xca, 0xa5, 0x4, 0x4}, + }, + { + {0xd1, 0x6f, 0x41, 0x2a, 0x1b, 0x9e, 0xbc, 0x62, 0x8b, 0x59, 0x50, + 0xe3, 0x28, 0xf7, 0xc6, 0xb5, 0x67, 0x69, 0x5d, 0x3d, 0xd8, 0x3f, + 0x34, 0x4, 0x98, 0xee, 0xf8, 0xe7, 0x16, 0x75, 0x52, 0x39}, + {0xd6, 0x43, 0xa7, 0xa, 0x7, 0x40, 0x1f, 0x8c, 0xe8, 0x5e, 0x26, + 0x5b, 0xcb, 0xd0, 0xba, 0xcc, 0xde, 0xd2, 0x8f, 0x66, 0x6b, 0x4, + 0x4b, 0x57, 0x33, 0x96, 0xdd, 0xca, 0xfd, 0x5b, 0x39, 0x46}, + {0x9c, 0x9a, 0x5d, 0x1a, 0x2d, 0xdb, 0x7f, 0x11, 0x2a, 0x5c, 0x0, + 0xd1, 0xbc, 0x45, 0x77, 0x9c, 0xea, 0x6f, 0xd5, 0x54, 0xf1, 0xbe, + 0xd4, 0xef, 0x16, 0xd0, 0x22, 0xe8, 0x29, 0x9a, 0x57, 0x76}, + }, + { + {0xf2, 0x34, 0xb4, 0x52, 0x13, 0xb5, 0x3c, 0x33, 0xe1, 0x80, 0xde, + 0x93, 0x49, 0x28, 0x32, 0xd8, 0xce, 0x35, 0xd, 0x75, 0x87, 0x28, + 0x51, 0xb5, 0xc1, 0x77, 0x27, 0x2a, 0xbb, 0x14, 0xc5, 0x2}, + {0x17, 0x2a, 0xc0, 0x49, 0x7e, 0x8e, 0xb6, 0x45, 0x7f, 0xa3, 0xa9, + 0xbc, 0xa2, 0x51, 0xcd, 0x23, 0x1b, 0x4c, 0x22, 0xec, 0x11, 0x5f, + 0xd6, 0x3e, 0xb1, 0xbd, 0x5, 0x9e, 0xdc, 0x84, 0xa3, 0x43}, + {0x45, 0xb6, 0xf1, 0x8b, 0xda, 0xd5, 0x4b, 0x68, 0x53, 0x4b, 0xb5, + 0xf6, 0x7e, 0xd3, 0x8b, 0xfb, 0x53, 0xd2, 0xb0, 0xa9, 0xd7, 0x16, + 0x39, 0x31, 0x59, 0x80, 0x54, 0x61, 0x9, 0x92, 0x60, 0x11}, + }, + { + {0xcd, 0x4d, 0x9b, 0x36, 0x16, 0x56, 0x38, 0x7a, 0x63, 0x35, 0x5c, + 0x65, 0xa7, 0x2c, 0xc0, 0x75, 0x21, 0x80, 0xf1, 0xd4, 0xf9, 0x1b, + 0xc2, 0x7d, 0x42, 0xe0, 0xe6, 0x91, 0x74, 0x7d, 0x63, 0x2f}, + {0xaa, 0xcf, 0xda, 0x29, 0x69, 0x16, 0x4d, 0xb4, 0x8f, 0x59, 0x13, + 0x84, 0x4c, 0x9f, 0x52, 0xda, 0x59, 0x55, 0x3d, 0x45, 0xca, 0x63, + 0xef, 0xe9, 0xb, 0x8e, 0x69, 0xc5, 0x5b, 0x12, 0x1e, 0x35}, + {0xbe, 0x7b, 0xf6, 0x1a, 0x46, 0x9b, 0xb4, 0xd4, 0x61, 0x89, 0xab, + 0xc8, 0x7a, 0x3, 0x3, 0xd6, 0xfb, 0x99, 0xa6, 0xf9, 0x9f, 0xe1, + 0xde, 0x71, 0x9a, 0x2a, 0xce, 0xe7, 0x6, 0x2d, 0x18, 0x7f}, + }, + { + {0x22, 0x75, 0x21, 0x8e, 0x72, 0x4b, 0x45, 0x9, 0xd8, 0xb8, 0x84, + 0xd4, 0xf4, 0xe8, 0x58, 0xaa, 0x3c, 0x90, 0x46, 0x7f, 0x4d, 0x25, + 0x58, 0xd3, 0x17, 0x52, 0x1c, 0x24, 0x43, 0xc0, 0xac, 0x44}, + {0xec, 0x68, 0x1, 0xab, 0x64, 0x8e, 0x7c, 0x7a, 0x43, 0xc5, 0xed, + 0x15, 0x55, 0x4a, 0x5a, 0xcb, 0xda, 0xe, 0xcd, 0x47, 0xd3, 0x19, + 0x55, 0x9, 0xb0, 0x93, 0x3e, 0x34, 0x8c, 0xac, 0xd4, 0x67}, + {0x77, 0x57, 0x7a, 0x4f, 0xbb, 0x6b, 0x7d, 0x1c, 0xe1, 0x13, 0x83, + 0x91, 0xd4, 0xfe, 0x35, 0x8b, 0x84, 0x46, 0x6b, 0xc9, 0xc6, 0xa1, + 0xdc, 0x4a, 0xbd, 0x71, 0xad, 0x12, 0x83, 0x1c, 0x6d, 0x55}, + }, + { + {0x21, 0xe8, 0x1b, 0xb1, 0x56, 0x67, 0xf0, 0x81, 0xdd, 0xf3, 0xa3, + 0x10, 0x23, 0xf8, 0xaf, 0xf, 0x5d, 0x46, 0x99, 0x6a, 0x55, 0xd0, + 0xb2, 0xf8, 0x5, 0x7f, 0x8c, 0xcc, 0x38, 0xbe, 0x7a, 0x9}, + {0x82, 0x39, 0x8d, 0xc, 0xe3, 0x40, 0xef, 0x17, 0x34, 0xfa, 0xa3, + 0x15, 0x3e, 0x7, 0xf7, 0x31, 0x6e, 0x64, 0x73, 0x7, 0xcb, 0xf3, + 0x21, 0x4f, 0xff, 0x4e, 0x82, 0x1d, 0x6d, 0x6c, 0x6c, 0x74}, + {0xa4, 0x2d, 0xa5, 0x7e, 0x87, 0xc9, 0x49, 0xc, 0x43, 0x1d, 0xdc, + 0x9b, 0x55, 0x69, 0x43, 0x4c, 0xd2, 0xeb, 0xcc, 0xf7, 0x9, 0x38, + 0x2c, 0x2, 0xbd, 0x84, 0xee, 0x4b, 0xa3, 0x14, 0x7e, 0x57}, + }, + { + {0x2b, 0xd7, 0x4d, 0xbd, 0xbe, 0xce, 0xfe, 0x94, 0x11, 0x22, 0xf, + 0x6, 0xda, 0x4f, 0x6a, 0xf4, 0xff, 0xd1, 0xc8, 0xc0, 0x77, 0x59, + 0x4a, 0x12, 0x95, 0x92, 0x0, 0xfb, 0xb8, 0x4, 0x53, 0x70}, + {0xa, 0x3b, 0xa7, 0x61, 0xac, 0x68, 0xe2, 0xf0, 0xf5, 0xa5, 0x91, + 0x37, 0x10, 0xfa, 0xfa, 0xf2, 0xe9, 0x0, 0x6d, 0x6b, 0x82, 0x3e, + 0xe1, 0xc1, 0x42, 0x8f, 0xd7, 0x6f, 0xe9, 0x7e, 0xfa, 0x60}, + {0xc6, 0x6e, 0x29, 0x4d, 0x35, 0x1d, 0x3d, 0xb6, 0xd8, 0x31, 0xad, + 0x5f, 0x3e, 0x5, 0xc3, 0xf3, 0xec, 0x42, 0xbd, 0xb4, 0x8c, 0x95, + 0xb, 0x67, 0xfd, 0x53, 0x63, 0xa1, 0xc, 0x8e, 0x39, 0x21}, + }, + }, + { + { + {0x1, 0x56, 0xb7, 0xb4, 0xf9, 0xaa, 0x98, 0x27, 0x72, 0xad, 0x8d, + 0x5c, 0x13, 0x72, 0xac, 0x5e, 0x23, 0xa0, 0xb7, 0x61, 0x61, 0xaa, + 0xce, 0xd2, 0x4e, 0x7d, 0x8f, 0xe9, 0x84, 0xb2, 0xbf, 0x1b}, + {0xf3, 0x33, 0x2b, 0x38, 0x8a, 0x5, 0xf5, 0x89, 0xb4, 0xc0, 0x48, + 0xad, 0xb, 0xba, 0xe2, 0x5a, 0x6e, 0xb3, 0x3d, 0xa5, 0x3, 0xb5, + 0x93, 0x8f, 0xe6, 0x32, 0xa2, 0x95, 0x9d, 0xed, 0xa3, 0x5a}, + {0x61, 0x65, 0xd9, 0xc7, 0xe9, 0x77, 0x67, 0x65, 0x36, 0x80, 0xc7, + 0x72, 0x54, 0x12, 0x2b, 0xcb, 0xee, 0x6e, 0x50, 0xd9, 0x99, 0x32, + 0x5, 0x65, 0xcc, 0x57, 0x89, 0x5e, 0x4e, 0xe1, 0x7, 0x4a}, + }, + { + {0x9b, 0xa4, 0x77, 0xc4, 0xcd, 0x58, 0xb, 0x24, 0x17, 0xf0, 0x47, + 0x64, 0xde, 0xda, 0x38, 0xfd, 0xad, 0x6a, 0xc8, 0xa7, 0x32, 0x8d, + 0x92, 0x19, 0x81, 0xa0, 0xaf, 0x84, 0xed, 0x7a, 0xaf, 0x50}, + {0x99, 0xf9, 0xd, 0x98, 0xcb, 0x12, 0xe4, 0x4e, 0x71, 0xc7, 0x6e, + 0x3c, 0x6f, 0xd7, 0x15, 0xa3, 0xfd, 0x77, 0x5c, 0x92, 0xde, 0xed, + 0xa5, 0xbb, 0x2, 0x34, 0x31, 0x1d, 0x39, 0xac, 0xb, 0x3f}, + {0xe5, 0x5b, 0xf6, 0x15, 0x1, 0xde, 0x4f, 0x6e, 0xb2, 0x9, 0x61, + 0x21, 0x21, 0x26, 0x98, 0x29, 0xd9, 0xd6, 0xad, 0xb, 0x81, 0x5, + 0x2, 0x78, 0x6, 0xd0, 0xeb, 0xba, 0x16, 0xa3, 0x21, 0x19}, + }, + { + {0x8b, 0xc1, 0xf3, 0xd9, 0x9a, 0xad, 0x5a, 0xd7, 0x9c, 0xc1, 0xb1, + 0x60, 0xef, 0xe, 0x6a, 0x56, 0xd9, 0xe, 0x5c, 0x25, 0xac, 0xb, + 0x9a, 0x3e, 0xf5, 0xc7, 0x62, 0xa0, 0xec, 0x9d, 0x4, 0x7b}, + {0xfc, 0x70, 0xb8, 0xdf, 0x7e, 0x2f, 0x42, 0x89, 0xbd, 0xb3, 0x76, + 0x4f, 0xeb, 0x6b, 0x29, 0x2c, 0xf7, 0x4d, 0xc2, 0x36, 0xd4, 0xf1, + 0x38, 0x7, 0xb0, 0xae, 0x73, 0xe2, 0x41, 0xdf, 0x58, 0x64}, + {0x83, 0x44, 0x44, 0x35, 0x7a, 0xe3, 0xcb, 0xdc, 0x93, 0xbe, 0xed, + 0xf, 0x33, 0x79, 0x88, 0x75, 0x87, 0xdd, 0xc5, 0x12, 0xc3, 0x4, + 0x60, 0x78, 0x64, 0xe, 0x95, 0xc2, 0xcb, 0xdc, 0x93, 0x60}, + }, + { + {0x4b, 0x3, 0x84, 0x60, 0xbe, 0xee, 0xde, 0x6b, 0x54, 0xb8, 0xf, + 0x78, 0xb6, 0xc2, 0x99, 0x31, 0x95, 0x6, 0x2d, 0xb6, 0xab, 0x76, + 0x33, 0x97, 0x90, 0x7d, 0x64, 0x8b, 0xc9, 0x80, 0x31, 0x6e}, + {0x6d, 0x70, 0xe0, 0x85, 0x85, 0x9a, 0xf3, 0x1f, 0x33, 0x39, 0xe7, + 0xb3, 0xd8, 0xa5, 0xd0, 0x36, 0x3b, 0x45, 0x8f, 0x71, 0xe1, 0xf2, + 0xb9, 0x43, 0x7c, 0xa9, 0x27, 0x48, 0x8, 0xea, 0xd1, 0x57}, + {0x71, 0xb0, 0x28, 0xa1, 0xe7, 0xb6, 0x7a, 0xee, 0xaa, 0x8b, 0xa8, + 0x93, 0x6d, 0x59, 0xc1, 0xa4, 0x30, 0x61, 0x21, 0xb2, 0x82, 0xde, + 0xb4, 0xf7, 0x18, 0xbd, 0x97, 0xdd, 0x9d, 0x99, 0x3e, 0x36}, + }, + { + {0xc6, 0xae, 0x4b, 0xe2, 0xdc, 0x48, 0x18, 0x2f, 0x60, 0xaf, 0xbc, + 0xba, 0x55, 0x72, 0x9b, 0x76, 0x31, 0xe9, 0xef, 0x3c, 0x6e, 0x3c, + 0xcb, 0x90, 0x55, 0xb3, 0xf9, 0xc6, 0x9b, 0x97, 0x1f, 0x23}, + {0xc4, 0x1f, 0xee, 0x35, 0xc1, 0x43, 0xa8, 0x96, 0xcf, 0xc8, 0xe4, + 0x8, 0x55, 0xb3, 0x6e, 0x97, 0x30, 0xd3, 0x8c, 0xb5, 0x1, 0x68, + 0x2f, 0xb4, 0x2b, 0x5, 0x3a, 0x69, 0x78, 0x9b, 0xee, 0x48}, + {0xc6, 0xf3, 0x2a, 0xcc, 0x4b, 0xde, 0x31, 0x5c, 0x1f, 0x8d, 0x20, + 0xfe, 0x30, 0xb0, 0x4b, 0xb0, 0x66, 0xb4, 0x4f, 0xc1, 0x9, 0x70, + 0x8d, 0xb7, 0x13, 0x24, 0x79, 0x8, 0x9b, 0xfa, 0x9b, 0x7}, + }, + { + {0x45, 0x42, 0xd5, 0xa2, 0x80, 0xed, 0xc9, 0xf3, 0x52, 0x39, 0xf6, + 0x77, 0x78, 0x8b, 0xa0, 0xa, 0x75, 0x54, 0x8, 0xd1, 0x63, 0xac, + 0x6d, 0xd7, 0x6b, 0x63, 0x70, 0x94, 0x15, 0xfb, 0xf4, 0x1e}, + {0xf4, 0xd, 0x30, 0xda, 0x51, 0x3a, 0x90, 0xe3, 0xb0, 0x5a, 0xa9, + 0x3d, 0x23, 0x64, 0x39, 0x84, 0x80, 0x64, 0x35, 0xb, 0x2d, 0xf1, + 0x3c, 0xed, 0x94, 0x71, 0x81, 0x84, 0xf6, 0x77, 0x8c, 0x3}, + {0xec, 0x7b, 0x16, 0x5b, 0xe6, 0x5e, 0x4e, 0x85, 0xc2, 0xcd, 0xd0, + 0x96, 0x42, 0xa, 0x59, 0x59, 0x99, 0x21, 0x10, 0x98, 0x34, 0xdf, + 0xb2, 0x72, 0x56, 0xff, 0xb, 0x4a, 0x2a, 0xe9, 0x5e, 0x57}, + }, + { + {0x1, 0xd8, 0xa4, 0xa, 0x45, 0xbc, 0x46, 0x5d, 0xd8, 0xb9, 0x33, + 0xa5, 0x27, 0x12, 0xaf, 0xc3, 0xc2, 0x6, 0x89, 0x2b, 0x26, 0x3b, + 0x9e, 0x38, 0x1b, 0x58, 0x2f, 0x38, 0x7e, 0x1e, 0xa, 0x20}, + {0xcf, 0x2f, 0x18, 0x8a, 0x90, 0x80, 0xc0, 0xd4, 0xbd, 0x9d, 0x48, + 0x99, 0xc2, 0x70, 0xe1, 0x30, 0xde, 0x33, 0xf7, 0x52, 0x57, 0xbd, + 0xba, 0x5, 0x0, 0xfd, 0xd3, 0x2c, 0x11, 0xe7, 0xd4, 0x43}, + {0xc5, 0x3a, 0xf9, 0xea, 0x67, 0xb9, 0x8d, 0x51, 0xc0, 0x52, 0x66, + 0x5, 0x9b, 0x98, 0xbc, 0x71, 0xf5, 0x97, 0x71, 0x56, 0xd9, 0x85, + 0x2b, 0xfe, 0x38, 0x4e, 0x1e, 0x65, 0x52, 0xca, 0xe, 0x5}, + }, + { + {0xea, 0x68, 0xe6, 0x60, 0x76, 0x39, 0xac, 0x97, 0x97, 0xb4, 0x3a, + 0x15, 0xfe, 0xbb, 0x19, 0x9b, 0x9f, 0xa7, 0xec, 0x34, 0xb5, 0x79, + 0xb1, 0x4c, 0x57, 0xae, 0x31, 0xa1, 0x9f, 0xc0, 0x51, 0x61}, + {0x9c, 0xc, 0x3f, 0x45, 0xde, 0x1a, 0x43, 0xc3, 0x9b, 0x3b, 0x70, + 0xff, 0x5e, 0x4, 0xf5, 0xe9, 0x3d, 0x7b, 0x84, 0xed, 0xc9, 0x7a, + 0xd9, 0xfc, 0xc6, 0xf4, 0x58, 0x1c, 0xc2, 0xe6, 0xe, 0x4b}, + {0x96, 0x5d, 0xf0, 0xfd, 0xd, 0x5c, 0xf5, 0x3a, 0x7a, 0xee, 0xb4, + 0x2a, 0xe0, 0x2e, 0x26, 0xdd, 0x9, 0x17, 0x17, 0x12, 0x87, 0xbb, + 0xb2, 0x11, 0xb, 0x3, 0xf, 0x80, 0xfa, 0x24, 0xef, 0x1f}, + }, + }, + { + { + {0x86, 0x6b, 0x97, 0x30, 0xf5, 0xaf, 0xd2, 0x22, 0x4, 0x46, 0xd2, + 0xc2, 0x6, 0xb8, 0x90, 0x8d, 0xe5, 0xba, 0xe5, 0x4d, 0x6c, 0x89, + 0xa1, 0xdc, 0x17, 0xc, 0x34, 0xc8, 0xe6, 0x5f, 0x0, 0x28}, + {0x96, 0x31, 0xa7, 0x1a, 0xfb, 0x53, 0xd6, 0x37, 0x18, 0x64, 0xd7, + 0x3f, 0x30, 0x95, 0x94, 0xf, 0xb2, 0x17, 0x3a, 0xfb, 0x9, 0xb, + 0x20, 0xad, 0x3e, 0x61, 0xc8, 0x2f, 0x29, 0x49, 0x4d, 0x54}, + {0x88, 0x86, 0x52, 0x34, 0x9f, 0xba, 0xef, 0x6a, 0xa1, 0x7d, 0x10, + 0x25, 0x94, 0xff, 0x1b, 0x5c, 0x36, 0x4b, 0xd9, 0x66, 0xcd, 0xbb, + 0x5b, 0xf7, 0xfa, 0x6d, 0x31, 0xf, 0x93, 0x72, 0xe4, 0x72}, + }, + { + {0x27, 0x76, 0x2a, 0xd3, 0x35, 0xf6, 0xf3, 0x7, 0xf0, 0x66, 0x65, + 0x5f, 0x86, 0x4d, 0xaa, 0x7a, 0x50, 0x44, 0xd0, 0x28, 0x97, 0xe7, + 0x85, 0x3c, 0x38, 0x64, 0xe0, 0xf, 0x0, 0x7f, 0xee, 0x1f}, + {0x4f, 0x8, 0x81, 0x97, 0x8c, 0x20, 0x95, 0x26, 0xe1, 0xe, 0x45, + 0x23, 0xb, 0x2a, 0x50, 0xb1, 0x2, 0xde, 0xef, 0x3, 0xa6, 0xae, + 0x9d, 0xfd, 0x4c, 0xa3, 0x33, 0x27, 0x8c, 0x2e, 0x9d, 0x5a}, + {0xe5, 0xf7, 0xdb, 0x3, 0xda, 0x5, 0x53, 0x76, 0xbd, 0xcd, 0x34, + 0x14, 0x49, 0xf2, 0xda, 0xa4, 0xec, 0x88, 0x4a, 0xd2, 0xcd, 0xd5, + 0x4a, 0x7b, 0x43, 0x5, 0x4, 0xee, 0x51, 0x40, 0xf9, 0x0}, + }, + { + {0x53, 0x97, 0xaf, 0x7, 0xbb, 0x93, 0xef, 0xd7, 0xa7, 0x66, 0xb7, + 0x3d, 0xcf, 0xd0, 0x3e, 0x58, 0xc5, 0x1e, 0xb, 0x6e, 0xbf, 0x98, + 0x69, 0xce, 0x52, 0x4, 0xd4, 0x5d, 0xd2, 0xff, 0xb7, 0x47}, + {0xb2, 0x30, 0xd3, 0xc3, 0x23, 0x6b, 0x35, 0x8d, 0x6, 0x1b, 0x47, + 0xb0, 0x9b, 0x8b, 0x1c, 0xf2, 0x3c, 0xb8, 0x42, 0x6e, 0x6c, 0x31, + 0x6c, 0xb3, 0xd, 0xb1, 0xea, 0x8b, 0x7e, 0x9c, 0xd7, 0x7}, + {0x12, 0xdd, 0x8, 0xbc, 0x9c, 0xfb, 0xfb, 0x87, 0x9b, 0xc2, 0xee, + 0xe1, 0x3a, 0x6b, 0x6, 0x8a, 0xbf, 0xc1, 0x1f, 0xdb, 0x2b, 0x24, + 0x57, 0xd, 0xb6, 0x4b, 0xa6, 0x5e, 0xa3, 0x20, 0x35, 0x1c}, + }, + { + {0x59, 0xc0, 0x6b, 0x21, 0x40, 0x6f, 0xa8, 0xcd, 0x7e, 0xd8, 0xbc, + 0x12, 0x1d, 0x23, 0xbb, 0x1f, 0x90, 0x9, 0xc7, 0x17, 0x9e, 0x6a, + 0x95, 0xb4, 0x55, 0x2e, 0xd1, 0x66, 0x3b, 0xc, 0x75, 0x38}, + {0x4a, 0xa3, 0xcb, 0xbc, 0xa6, 0x53, 0xd2, 0x80, 0x9b, 0x21, 0x38, + 0x38, 0xa1, 0xc3, 0x61, 0x3e, 0x96, 0xe3, 0x82, 0x98, 0x1, 0xb6, + 0xc3, 0x90, 0x6f, 0xe6, 0xe, 0x5d, 0x77, 0x5, 0x3d, 0x1c}, + {0x1a, 0xe5, 0x22, 0x94, 0x40, 0xf1, 0x2e, 0x69, 0x71, 0xf6, 0x5d, + 0x2b, 0x3c, 0xc7, 0xc0, 0xcb, 0x29, 0xe0, 0x4c, 0x74, 0xe7, 0x4f, + 0x1, 0x21, 0x7c, 0x48, 0x30, 0xd3, 0xc7, 0xe2, 0x21, 0x6}, + }, + { + {0xf3, 0xf0, 0xdb, 0xb0, 0x96, 0x17, 0xae, 0xb7, 0x96, 0xe1, 0x7c, + 0xe1, 0xb9, 0xaf, 0xdf, 0x54, 0xb4, 0xa3, 0xaa, 0xe9, 0x71, 0x30, + 0x92, 0x25, 0x9d, 0x2e, 0x0, 0xa1, 0x9c, 0x58, 0x8e, 0x5d}, + {0x8d, 0x83, 0x59, 0x82, 0xcc, 0x60, 0x98, 0xaf, 0xdc, 0x9a, 0x9f, + 0xc6, 0xc1, 0x48, 0xea, 0x90, 0x30, 0x1e, 0x58, 0x65, 0x37, 0x48, + 0x26, 0x65, 0xbc, 0xa5, 0xd3, 0x7b, 0x9, 0xd6, 0x7, 0x0}, + {0x4b, 0xa9, 0x42, 0x8, 0x95, 0x1d, 0xbf, 0xc0, 0x3e, 0x2e, 0x8f, + 0x58, 0x63, 0xc3, 0xd3, 0xb2, 0xef, 0xe2, 0x51, 0xbb, 0x38, 0x14, + 0x96, 0xa, 0x86, 0xbf, 0x1c, 0x3c, 0x78, 0xd7, 0x83, 0x15}, + }, + { + {0xc7, 0x28, 0x9d, 0xcc, 0x4, 0x47, 0x3, 0x90, 0x8f, 0xc5, 0x2c, + 0xf7, 0x9e, 0x67, 0x1b, 0x1d, 0x26, 0x87, 0x5b, 0xbe, 0x5f, 0x2b, + 0xe1, 0x16, 0xa, 0x58, 0xc5, 0x83, 0x4e, 0x6, 0x58, 0x49}, + {0xe1, 0x7a, 0xa2, 0x5d, 0xef, 0xa2, 0xee, 0xec, 0x74, 0x1, 0x67, + 0x55, 0x14, 0x3a, 0x7c, 0x59, 0x7a, 0x16, 0x9, 0x66, 0x12, 0x2a, + 0xa6, 0xc9, 0x70, 0x8f, 0xed, 0x81, 0x2e, 0x5f, 0x2a, 0x25}, + {0xd, 0xe8, 0x66, 0x50, 0x26, 0x94, 0x28, 0xd, 0x6b, 0x8c, 0x7c, + 0x30, 0x85, 0xf7, 0xc3, 0xfc, 0xfd, 0x12, 0x11, 0xc, 0x78, 0xda, + 0x53, 0x1b, 0x88, 0xb3, 0x43, 0xd8, 0xb, 0x17, 0x9c, 0x7}, + }, + { + {0x56, 0xd0, 0xd5, 0xc0, 0x50, 0xcd, 0xd6, 0xcd, 0x3b, 0x57, 0x3, + 0xbb, 0x6d, 0x68, 0xf7, 0x9a, 0x48, 0xef, 0xc3, 0xf3, 0x3f, 0x72, + 0xa6, 0x3c, 0xcc, 0x8a, 0x7b, 0x31, 0xd7, 0xc0, 0x68, 0x67}, + {0xff, 0x6f, 0xfa, 0x64, 0xe4, 0xec, 0x6, 0x5, 0x23, 0xe5, 0x5, + 0x62, 0x1e, 0x43, 0xe3, 0xbe, 0x42, 0xea, 0xb8, 0x51, 0x24, 0x42, + 0x79, 0x35, 0x0, 0xfb, 0xc9, 0x4a, 0xe3, 0x5, 0xec, 0x6d}, + {0xb3, 0xc1, 0x55, 0xf1, 0xe5, 0x25, 0xb6, 0x94, 0x91, 0x7b, 0x7b, + 0x99, 0xa7, 0xf3, 0x7b, 0x41, 0x0, 0x26, 0x6b, 0x6d, 0xdc, 0xbd, + 0x2c, 0xc2, 0xf4, 0x52, 0xcd, 0xdd, 0x14, 0x5e, 0x44, 0x51}, + }, + { + {0x55, 0xa4, 0xbe, 0x2b, 0xab, 0x47, 0x31, 0x89, 0x29, 0x91, 0x7, + 0x92, 0x4f, 0xa2, 0x53, 0x8c, 0xa7, 0xf7, 0x30, 0xbe, 0x48, 0xf9, + 0x49, 0x4b, 0x3d, 0xd4, 0x4f, 0x6e, 0x8, 0x90, 0xe9, 0x12}, + {0x51, 0x49, 0x14, 0x3b, 0x4b, 0x2b, 0x50, 0x57, 0xb3, 0xbc, 0x4b, + 0x44, 0x6b, 0xff, 0x67, 0x8e, 0xdb, 0x85, 0x63, 0x16, 0x27, 0x69, + 0xbd, 0xb8, 0xc8, 0x95, 0x92, 0xe3, 0x31, 0x6f, 0x18, 0x13}, + {0x2e, 0xbb, 0xdf, 0x7f, 0xb3, 0x96, 0xc, 0xf1, 0xf9, 0xea, 0x1c, + 0x12, 0x5e, 0x93, 0x9a, 0x9f, 0x3f, 0x98, 0x5b, 0x3a, 0xc4, 0x36, + 0x11, 0xdf, 0xaf, 0x99, 0x3e, 0x5d, 0xf0, 0xe3, 0xb2, 0x77}, + }, + }, + { + { + {0xa4, 0xb0, 0xdd, 0x12, 0x9c, 0x63, 0x98, 0xd5, 0x6b, 0x86, 0x24, + 0xc0, 0x30, 0x9f, 0xd1, 0xa5, 0x60, 0xe4, 0xfc, 0x58, 0x3, 0x2f, + 0x7c, 0xd1, 0x8a, 0x5e, 0x9, 0x2e, 0x15, 0x95, 0xa1, 0x7}, + {0xde, 0xc4, 0x2e, 0x9c, 0xc5, 0xa9, 0x6f, 0x29, 0xcb, 0xf3, 0x84, + 0x4f, 0xbf, 0x61, 0x8b, 0xbc, 0x8, 0xf9, 0xa8, 0x17, 0xd9, 0x6, + 0x77, 0x1c, 0x5d, 0x25, 0xd3, 0x7a, 0xfc, 0x95, 0xb7, 0x63}, + {0xc8, 0x5f, 0x9e, 0x38, 0x2, 0x8f, 0x36, 0xa8, 0x3b, 0xe4, 0x8d, + 0xcf, 0x2, 0x3b, 0x43, 0x90, 0x43, 0x26, 0x41, 0xc5, 0x5d, 0xfd, + 0xa1, 0xaf, 0x37, 0x1, 0x2f, 0x3, 0x3d, 0xe8, 0x8f, 0x3e}, + }, + { + {0x3c, 0xd1, 0xef, 0xe8, 0x8d, 0x4c, 0x70, 0x8, 0x31, 0x37, 0xe0, + 0x33, 0x8e, 0x1a, 0xc5, 0xdf, 0xe3, 0xcd, 0x60, 0x12, 0xa5, 0x5d, + 0x9d, 0xa5, 0x86, 0x8c, 0x25, 0xa6, 0x99, 0x8, 0xd6, 0x22}, + {0x94, 0xa2, 0x70, 0x5, 0xb9, 0x15, 0x8b, 0x2f, 0x49, 0x45, 0x8, + 0x67, 0x70, 0x42, 0xf2, 0x94, 0x84, 0xfd, 0xbb, 0x61, 0xe1, 0x5a, + 0x1c, 0xde, 0x7, 0x40, 0xac, 0x7f, 0x79, 0x3b, 0xba, 0x75}, + {0x96, 0xd1, 0xcd, 0x70, 0xc0, 0xdb, 0x39, 0x62, 0x9a, 0x8a, 0x7d, + 0x6c, 0x8b, 0x8a, 0xfe, 0x60, 0x60, 0x12, 0x40, 0xeb, 0xbc, 0x47, + 0x88, 0xb3, 0x5e, 0x9e, 0x77, 0x87, 0x7b, 0xd0, 0x4, 0x9}, + }, + { + {0xb9, 0x40, 0xf9, 0x48, 0x66, 0x2d, 0x32, 0xf4, 0x39, 0xc, 0x2d, + 0xbd, 0xc, 0x2f, 0x95, 0x6, 0x31, 0xf9, 0x81, 0xa0, 0xad, 0x97, + 0x76, 0x16, 0x6c, 0x2a, 0xf7, 0xba, 0xce, 0xaa, 0x40, 0x62}, + {0x9c, 0x91, 0xba, 0xdd, 0xd4, 0x1f, 0xce, 0xb4, 0xaa, 0x8d, 0x4c, + 0xc7, 0x3e, 0xdb, 0x31, 0xcf, 0x51, 0xcc, 0x86, 0xad, 0x63, 0xcc, + 0x63, 0x2c, 0x7, 0xde, 0x1d, 0xbc, 0x3f, 0x14, 0xe2, 0x43}, + {0xa0, 0x95, 0xa2, 0x5b, 0x9c, 0x74, 0x34, 0xf8, 0x5a, 0xd2, 0x37, + 0xca, 0x5b, 0x7c, 0x94, 0xd6, 0x6a, 0x31, 0xc9, 0xe7, 0xa7, 0x3b, + 0xf1, 0x66, 0xac, 0xc, 0xb4, 0x8d, 0x23, 0xaf, 0xbd, 0x56}, + }, + { + {0xb2, 0x3b, 0x9d, 0xc1, 0x6c, 0xd3, 0x10, 0x13, 0xb9, 0x86, 0x23, + 0x62, 0xb7, 0x6b, 0x2a, 0x6, 0x5c, 0x4f, 0xa1, 0xd7, 0x91, 0x85, + 0x9b, 0x7c, 0x54, 0x57, 0x1e, 0x7e, 0x50, 0x31, 0xaa, 0x3}, + {0xeb, 0x33, 0x35, 0xf5, 0xe3, 0xb9, 0x2a, 0x36, 0x40, 0x3d, 0xb9, + 0x6e, 0xd5, 0x68, 0x85, 0x33, 0x72, 0x55, 0x5a, 0x1d, 0x52, 0x14, + 0xe, 0x9e, 0x18, 0x13, 0x74, 0x83, 0x6d, 0xa8, 0x24, 0x1d}, + {0x1f, 0xce, 0xd4, 0xff, 0x48, 0x76, 0xec, 0xf4, 0x1c, 0x8c, 0xac, + 0x54, 0xf0, 0xea, 0x45, 0xe0, 0x7c, 0x35, 0x9, 0x1d, 0x82, 0x25, + 0xd2, 0x88, 0x59, 0x48, 0xeb, 0x9a, 0xdc, 0x61, 0xb2, 0x43}, + }, + { + {0x64, 0x13, 0x95, 0x6c, 0x8b, 0x3d, 0x51, 0x19, 0x7b, 0xf4, 0xb, + 0x0, 0x26, 0x71, 0xfe, 0x94, 0x67, 0x95, 0x4f, 0xd5, 0xdd, 0x10, + 0x8d, 0x2, 0x64, 0x9, 0x94, 0x42, 0xe2, 0xd5, 0xb4, 0x2}, + {0xbb, 0x79, 0xbb, 0x88, 0x19, 0x1e, 0x5b, 0xe5, 0x9d, 0x35, 0x7a, + 0xc1, 0x7d, 0xd0, 0x9e, 0xa0, 0x33, 0xea, 0x3d, 0x60, 0xe2, 0x2e, + 0x2c, 0xb0, 0xc2, 0x6b, 0x27, 0x5b, 0xcf, 0x55, 0x60, 0x32}, + {0xf2, 0x8d, 0xd1, 0x28, 0xcb, 0x55, 0xa1, 0xb4, 0x8, 0xe5, 0x6c, + 0x18, 0x46, 0x46, 0xcc, 0xea, 0x89, 0x43, 0x82, 0x6c, 0x93, 0xf4, + 0x9c, 0xc4, 0x10, 0x34, 0x5d, 0xae, 0x9, 0xc8, 0xa6, 0x27}, + }, + { + {0x54, 0x69, 0x3d, 0xc4, 0xa, 0x27, 0x2c, 0xcd, 0xb2, 0xca, 0x66, + 0x6a, 0x57, 0x3e, 0x4a, 0xdd, 0x6c, 0x3, 0xd7, 0x69, 0x24, 0x59, + 0xfa, 0x79, 0x99, 0x25, 0x8c, 0x3d, 0x60, 0x3, 0x15, 0x22}, + {0x88, 0xb1, 0xd, 0x1f, 0xcd, 0xeb, 0xa6, 0x8b, 0xe8, 0x5b, 0x5a, + 0x67, 0x3a, 0xd7, 0xd3, 0x37, 0x5a, 0x58, 0xf5, 0x15, 0xa3, 0xdf, + 0x2e, 0xf2, 0x7e, 0xa1, 0x60, 0xff, 0x74, 0x71, 0xb6, 0x2c}, + {0xd0, 0xe1, 0xb, 0x39, 0xf9, 0xcd, 0xee, 0x59, 0xf1, 0xe3, 0x8c, + 0x72, 0x44, 0x20, 0x42, 0xa9, 0xf4, 0xf0, 0x94, 0x7a, 0x66, 0x1c, + 0x89, 0x82, 0x36, 0xf4, 0x90, 0x38, 0xb7, 0xf4, 0x1d, 0x7b}, + }, + { + {0x8c, 0xf5, 0xf8, 0x7, 0x18, 0x22, 0x2e, 0x5f, 0xd4, 0x9, 0x94, + 0xd4, 0x9f, 0x5c, 0x55, 0xe3, 0x30, 0xa6, 0xb6, 0x1f, 0x8d, 0xa8, + 0xaa, 0xb2, 0x3d, 0xe0, 0x52, 0xd3, 0x45, 0x82, 0x69, 0x68}, + {0x24, 0xa2, 0xb2, 0xb3, 0xe0, 0xf2, 0x92, 0xe4, 0x60, 0x11, 0x55, + 0x2b, 0x6, 0x9e, 0x6c, 0x7c, 0xe, 0x7b, 0x7f, 0xd, 0xe2, 0x8f, + 0xeb, 0x15, 0x92, 0x59, 0xfc, 0x58, 0x26, 0xef, 0xfc, 0x61}, + {0x7a, 0x18, 0x18, 0x2a, 0x85, 0x5d, 0xb1, 0xdb, 0xd7, 0xac, 0xdd, + 0x86, 0xd3, 0xaa, 0xe4, 0xf3, 0x82, 0xc4, 0xf6, 0xf, 0x81, 0xe2, + 0xba, 0x44, 0xcf, 0x1, 0xaf, 0x3d, 0x47, 0x4c, 0xcf, 0x46}, + }, + { + {0x40, 0x81, 0x49, 0xf1, 0xa7, 0x6e, 0x3c, 0x21, 0x54, 0x48, 0x2b, + 0x39, 0xf8, 0x7e, 0x1e, 0x7c, 0xba, 0xce, 0x29, 0x56, 0x8c, 0xc3, + 0x88, 0x24, 0xbb, 0xc5, 0x8c, 0xd, 0xe5, 0xaa, 0x65, 0x10}, + {0xf9, 0xe5, 0xc4, 0x9e, 0xed, 0x25, 0x65, 0x42, 0x3, 0x33, 0x90, + 0x16, 0x1, 0xda, 0x5e, 0xe, 0xdc, 0xca, 0xe5, 0xcb, 0xf2, 0xa7, + 0xb1, 0x72, 0x40, 0x5f, 0xeb, 0x14, 0xcd, 0x7b, 0x38, 0x29}, + {0x57, 0xd, 0x20, 0xdf, 0x25, 0x45, 0x2c, 0x1c, 0x4a, 0x67, 0xca, + 0xbf, 0xd6, 0x2d, 0x3b, 0x5c, 0x30, 0x40, 0x83, 0xe1, 0xb1, 0xe7, + 0x7, 0xa, 0x16, 0xe7, 0x1c, 0x4f, 0xe6, 0x98, 0xa1, 0x69}, + }, + }, + { + { + {0xed, 0xca, 0xc5, 0xdc, 0x34, 0x44, 0x1, 0xe1, 0x33, 0xfb, 0x84, + 0x3c, 0x96, 0x5d, 0xed, 0x47, 0xe7, 0xa0, 0x86, 0xed, 0x76, 0x95, + 0x1, 0x70, 0xe4, 0xf9, 0x67, 0xd2, 0x7b, 0x69, 0xb2, 0x25}, + {0xbc, 0x78, 0x1a, 0xd9, 0xe0, 0xb2, 0x62, 0x90, 0x67, 0x96, 0x50, + 0xc8, 0x9c, 0x88, 0xc9, 0x47, 0xb8, 0x70, 0x50, 0x40, 0x66, 0x4a, + 0xf5, 0x9d, 0xbf, 0xa1, 0x93, 0x24, 0xa9, 0xe6, 0x69, 0x73}, + {0x64, 0x68, 0x98, 0x13, 0xfb, 0x3f, 0x67, 0x9d, 0xb8, 0xc7, 0x5d, + 0x41, 0xd9, 0xfb, 0xa5, 0x3c, 0x5e, 0x3b, 0x27, 0xdf, 0x3b, 0xcc, + 0x4e, 0xe0, 0xd2, 0x4c, 0x4e, 0xb5, 0x3d, 0x68, 0x20, 0x14}, + }, + { + {0xd0, 0x5a, 0xcc, 0xc1, 0x6f, 0xbb, 0xee, 0x34, 0x8b, 0xac, 0x46, + 0x96, 0xe9, 0xc, 0x1b, 0x6a, 0x53, 0xde, 0x6b, 0xa6, 0x49, 0xda, + 0xb0, 0xd3, 0xc1, 0x81, 0xd0, 0x61, 0x41, 0x3b, 0xe8, 0x31}, + {0x97, 0xd1, 0x9d, 0x24, 0x1e, 0xbd, 0x78, 0xb4, 0x2, 0xc1, 0x58, + 0x5e, 0x0, 0x35, 0xc, 0x62, 0x5c, 0xac, 0xba, 0xcc, 0x2f, 0xd3, + 0x2, 0xfb, 0x2d, 0xa7, 0x8, 0xf5, 0xeb, 0x3b, 0xb6, 0x60}, + {0x4f, 0x2b, 0x6, 0x9e, 0x12, 0xc7, 0xe8, 0x97, 0xd8, 0xa, 0x32, + 0x29, 0x4f, 0x8f, 0xe4, 0x49, 0x3f, 0x68, 0x18, 0x6f, 0x4b, 0xe1, + 0xec, 0x5b, 0x17, 0x3, 0x55, 0x2d, 0xb6, 0x1e, 0xcf, 0x55}, + }, + { + {0x52, 0x8c, 0xf5, 0x7d, 0xe3, 0xb5, 0x76, 0x30, 0x36, 0xcc, 0x99, + 0xe7, 0xdd, 0xb9, 0x3a, 0xd7, 0x20, 0xee, 0x13, 0x49, 0xe3, 0x1c, + 0x83, 0xbd, 0x33, 0x1, 0xba, 0x62, 0xaa, 0xfb, 0x56, 0x1a}, + {0x58, 0x3d, 0xc2, 0x65, 0x10, 0x10, 0x79, 0x58, 0x9c, 0x81, 0x94, + 0x50, 0x6d, 0x8, 0x9d, 0x8b, 0xa7, 0x5f, 0xc5, 0x12, 0xa9, 0x2f, + 0x40, 0xe2, 0xd4, 0x91, 0x8, 0x57, 0x64, 0x65, 0x9a, 0x66}, + {0xec, 0xc9, 0x9d, 0x5c, 0x50, 0x6b, 0x3e, 0x94, 0x1a, 0x37, 0x7c, + 0xa7, 0xbb, 0x57, 0x25, 0x30, 0x51, 0x76, 0x34, 0x41, 0x56, 0xae, + 0x73, 0x98, 0x5c, 0x8a, 0xc5, 0x99, 0x67, 0x83, 0xc4, 0x13}, + }, + { + {0x80, 0xd0, 0x8b, 0x5d, 0x6a, 0xfb, 0xdc, 0xc4, 0x42, 0x48, 0x1a, + 0x57, 0xec, 0xc4, 0xeb, 0xde, 0x65, 0x53, 0xe5, 0xb8, 0x83, 0xe8, + 0xb2, 0xd4, 0x27, 0xb8, 0xe5, 0xc8, 0x7d, 0xc8, 0xbd, 0x50}, + {0xb9, 0xe1, 0xb3, 0x5a, 0x46, 0x5d, 0x3a, 0x42, 0x61, 0x3f, 0xf1, + 0xc7, 0x87, 0xc1, 0x13, 0xfc, 0xb6, 0xb9, 0xb5, 0xec, 0x64, 0x36, + 0xf8, 0x19, 0x7, 0xb6, 0x37, 0xa6, 0x93, 0xc, 0xf8, 0x66}, + {0x11, 0xe1, 0xdf, 0x6e, 0x83, 0x37, 0x6d, 0x60, 0xd9, 0xab, 0x11, + 0xf0, 0x15, 0x3e, 0x35, 0x32, 0x96, 0x3b, 0xb7, 0x25, 0xc3, 0x3a, + 0xb0, 0x64, 0xae, 0xd5, 0x5f, 0x72, 0x44, 0x64, 0xd5, 0x1d}, + }, + { + {0x9a, 0xc8, 0xba, 0x8, 0x0, 0xe6, 0x97, 0xc2, 0xe0, 0xc3, 0xe1, + 0xea, 0x11, 0xea, 0x4c, 0x7d, 0x7c, 0x97, 0xe7, 0x9f, 0xe1, 0x8b, + 0xe3, 0xf3, 0xcd, 0x5, 0xa3, 0x63, 0xf, 0x45, 0x3a, 0x3a}, + {0x7d, 0x12, 0x62, 0x33, 0xf8, 0x7f, 0xa4, 0x8f, 0x15, 0x7c, 0xcd, + 0x71, 0xc4, 0x6a, 0x9f, 0xbc, 0x8b, 0xc, 0x22, 0x49, 0x43, 0x45, + 0x71, 0x6e, 0x2e, 0x73, 0x9f, 0x21, 0x12, 0x59, 0x64, 0xe}, + {0x27, 0x46, 0x39, 0xd8, 0x31, 0x2f, 0x8f, 0x7, 0x10, 0xa5, 0x94, + 0xde, 0x83, 0x31, 0x9d, 0x38, 0x80, 0x6f, 0x99, 0x17, 0x6d, 0x6c, + 0xe3, 0xd1, 0x7b, 0xa8, 0xa9, 0x93, 0x93, 0x8d, 0x8c, 0x31}, + }, + { + {0x98, 0xd3, 0x1d, 0xab, 0x29, 0x9e, 0x66, 0x5d, 0x3b, 0x9e, 0x2d, + 0x34, 0x58, 0x16, 0x92, 0xfc, 0xcd, 0x73, 0x59, 0xf3, 0xfd, 0x1d, + 0x85, 0x55, 0xf6, 0xa, 0x95, 0x25, 0xc3, 0x41, 0x9a, 0x50}, + {0x19, 0xfe, 0xff, 0x2a, 0x3, 0x5d, 0x74, 0xf2, 0x66, 0xdb, 0x24, + 0x7f, 0x49, 0x3c, 0x9f, 0xc, 0xef, 0x98, 0x85, 0xba, 0xe3, 0xd3, + 0x98, 0xbc, 0x14, 0x53, 0x1d, 0x9a, 0x67, 0x7c, 0x4c, 0x22}, + {0xe9, 0x25, 0xf9, 0xa6, 0xdc, 0x6e, 0xc0, 0xbd, 0x33, 0x1f, 0x1b, + 0x64, 0xf4, 0xf3, 0x3e, 0x79, 0x89, 0x3e, 0x83, 0x9d, 0x80, 0x12, + 0xec, 0x82, 0x89, 0x13, 0xa1, 0x28, 0x23, 0xf0, 0xbf, 0x5}, + }, + { + {0xe4, 0x12, 0xc5, 0xd, 0xdd, 0xa0, 0x81, 0x68, 0xfe, 0xfa, 0xa5, + 0x44, 0xc8, 0xd, 0xe7, 0x4f, 0x40, 0x52, 0x4a, 0x8f, 0x6b, 0x8e, + 0x74, 0x1f, 0xea, 0xa3, 0x1, 0xee, 0xcd, 0x77, 0x62, 0x57}, + {0xb, 0xe0, 0xca, 0x23, 0x70, 0x13, 0x32, 0x36, 0x59, 0xcf, 0xac, + 0xd1, 0xa, 0xcf, 0x4a, 0x54, 0x88, 0x1c, 0x1a, 0xd2, 0x49, 0x10, + 0x74, 0x96, 0xa7, 0x44, 0x2a, 0xfa, 0xc3, 0x8c, 0xb, 0x78}, + {0x5f, 0x30, 0x4f, 0x23, 0xbc, 0x8a, 0xf3, 0x1e, 0x8, 0xde, 0x5, + 0x14, 0xbd, 0x7f, 0x57, 0x9a, 0xd, 0x2a, 0xe6, 0x34, 0x14, 0xa5, + 0x82, 0x5e, 0xa1, 0xb7, 0x71, 0x62, 0x72, 0x18, 0xf4, 0x5f}, + }, + { + {0x40, 0x95, 0xb6, 0x13, 0xe8, 0x47, 0xdb, 0xe5, 0xe1, 0x10, 0x26, + 0x43, 0x3b, 0x2a, 0x5d, 0xf3, 0x76, 0x12, 0x78, 0x38, 0xe9, 0x26, + 0x1f, 0xac, 0x69, 0xcb, 0xa0, 0xa0, 0x8c, 0xdb, 0xd4, 0x29}, + {0x9d, 0xdb, 0x89, 0x17, 0xc, 0x8, 0x8e, 0x39, 0xf5, 0x78, 0xe7, + 0xf3, 0x25, 0x20, 0x60, 0xa7, 0x5d, 0x3, 0xbd, 0x6, 0x4c, 0x89, + 0x98, 0xfa, 0xbe, 0x66, 0xa9, 0x25, 0xdc, 0x3, 0x6a, 0x10}, + {0xd0, 0x53, 0x33, 0x33, 0xaf, 0xa, 0xad, 0xd9, 0xe5, 0x9, 0xd3, + 0xac, 0xa5, 0x9d, 0x66, 0x38, 0xf0, 0xf7, 0x88, 0xc8, 0x8a, 0x65, + 0x57, 0x3c, 0xfa, 0xbe, 0x2c, 0x5, 0x51, 0x8a, 0xb3, 0x4a}, + }, + }, + { + { + {0x9c, 0xc0, 0xdd, 0x5f, 0xef, 0xd1, 0xcf, 0xd6, 0xce, 0x5d, 0x57, + 0xf7, 0xfd, 0x3e, 0x2b, 0xe8, 0xc2, 0x34, 0x16, 0x20, 0x5d, 0x6b, + 0xd5, 0x25, 0x9b, 0x2b, 0xed, 0x4, 0xbb, 0xc6, 0x41, 0x30}, + {0x93, 0xd5, 0x68, 0x67, 0x25, 0x2b, 0x7c, 0xda, 0x13, 0xca, 0x22, + 0x44, 0x57, 0xc0, 0xc1, 0x98, 0x1d, 0xce, 0xa, 0xca, 0xd5, 0xb, + 0xa8, 0xf1, 0x90, 0xa6, 0x88, 0xc0, 0xad, 0xd1, 0xcd, 0x29}, + {0x48, 0xe1, 0x56, 0xd9, 0xf9, 0xf2, 0xf2, 0xf, 0x2e, 0x6b, 0x35, + 0x9f, 0x75, 0x97, 0xe7, 0xad, 0x5c, 0x2, 0x6c, 0x5f, 0xbb, 0x98, + 0x46, 0x1a, 0x7b, 0x9a, 0x4, 0x14, 0x68, 0xbd, 0x4b, 0x10}, + }, + { + {0x63, 0xf1, 0x7f, 0xd6, 0x5f, 0x9a, 0x5d, 0xa9, 0x81, 0x56, 0xc7, + 0x4c, 0x9d, 0xe6, 0x2b, 0xe9, 0x57, 0xf2, 0x20, 0xde, 0x4c, 0x2, + 0xf8, 0xb7, 0xf5, 0x2d, 0x7, 0xfb, 0x20, 0x2a, 0x4f, 0x20}, + {0x67, 0xed, 0xf1, 0x68, 0x31, 0xfd, 0xf0, 0x51, 0xc2, 0x3b, 0x6f, + 0xd8, 0xcd, 0x1d, 0x81, 0x2c, 0xde, 0xf2, 0xd2, 0x4, 0x43, 0x5c, + 0xdc, 0x44, 0x49, 0x71, 0x2a, 0x9, 0x57, 0xcc, 0xe8, 0x5b}, + {0x79, 0xb0, 0xeb, 0x30, 0x3d, 0x3b, 0x14, 0xc8, 0x30, 0x2e, 0x65, + 0xbd, 0x5a, 0x15, 0x89, 0x75, 0x31, 0x5c, 0x6d, 0x8f, 0x31, 0x3c, + 0x3c, 0x65, 0x1f, 0x16, 0x79, 0xc2, 0x17, 0xfb, 0x70, 0x25}, + }, + { + {0x5a, 0x24, 0xb8, 0xb, 0x55, 0xa9, 0x2e, 0x19, 0xd1, 0x50, 0x90, + 0x8f, 0xa8, 0xfb, 0xe6, 0xc8, 0x35, 0xc9, 0xa4, 0x88, 0x2d, 0xea, + 0x86, 0x79, 0x68, 0x86, 0x1, 0xde, 0x91, 0x5f, 0x1c, 0x24}, + {0x75, 0x15, 0xb6, 0x2c, 0x7f, 0x36, 0xfa, 0x3e, 0x6c, 0x2, 0xd6, + 0x1c, 0x76, 0x6f, 0xf9, 0xf5, 0x62, 0x25, 0xb5, 0x65, 0x2a, 0x14, + 0xc7, 0xe8, 0xcd, 0xa, 0x3, 0x53, 0xea, 0x65, 0xcb, 0x3d}, + {0xaa, 0x6c, 0xde, 0x40, 0x29, 0x17, 0xd8, 0x28, 0x3a, 0x73, 0xd9, + 0x22, 0xf0, 0x2c, 0xbf, 0x8f, 0xd1, 0x1, 0x5b, 0x23, 0xdd, 0xfc, + 0xd7, 0x16, 0xe5, 0xf0, 0xcd, 0x5f, 0xdd, 0xe, 0x42, 0x8}, + }, + { + {0xce, 0x10, 0xf4, 0x4, 0x4e, 0xc3, 0x58, 0x3, 0x85, 0x6, 0x6e, + 0x27, 0x5a, 0x5b, 0x13, 0xb6, 0x21, 0x15, 0xb9, 0xeb, 0xc7, 0x70, + 0x96, 0x5d, 0x9c, 0x88, 0xdb, 0x21, 0xf3, 0x54, 0xd6, 0x4}, + {0x4a, 0xfa, 0x62, 0x83, 0xab, 0x20, 0xff, 0xcd, 0x6e, 0x3e, 0x1a, + 0xe2, 0xd4, 0x18, 0xe1, 0x57, 0x2b, 0xe6, 0x39, 0xfc, 0x17, 0x96, + 0x17, 0xe3, 0xfd, 0x69, 0x17, 0xbc, 0xef, 0x53, 0x9a, 0xd}, + {0xd5, 0xb5, 0xbd, 0xdd, 0x16, 0xc1, 0x7d, 0x5e, 0x2d, 0xdd, 0xa5, + 0x8d, 0xb6, 0xde, 0x54, 0x29, 0x92, 0xa2, 0x34, 0x33, 0x17, 0x8, + 0xb6, 0x1c, 0xd7, 0x1a, 0x99, 0x18, 0x26, 0x4f, 0x7a, 0x4a}, + }, + { + {0x4b, 0x2a, 0x37, 0xaf, 0x91, 0xb2, 0xc3, 0x24, 0xf2, 0x47, 0x81, + 0x71, 0x70, 0x82, 0xda, 0x93, 0xf2, 0x9e, 0x89, 0x86, 0x64, 0x85, + 0x84, 0xdd, 0x33, 0xee, 0xe0, 0x23, 0x42, 0x31, 0x96, 0x4a}, + {0x95, 0x5f, 0xb1, 0x5f, 0x2, 0x18, 0xa7, 0xf4, 0x8f, 0x1b, 0x5c, + 0x6b, 0x34, 0x5f, 0xf6, 0x3d, 0x12, 0x11, 0xe0, 0x0, 0x85, 0xf0, + 0xfc, 0xcd, 0x48, 0x18, 0xd3, 0xdd, 0x4c, 0xc, 0xb5, 0x11}, + {0xd6, 0xff, 0xa4, 0x8, 0x44, 0x27, 0xe8, 0xa6, 0xd9, 0x76, 0x15, + 0x9c, 0x7e, 0x17, 0x8e, 0x73, 0xf2, 0xb3, 0x2, 0x3d, 0xb6, 0x48, + 0x33, 0x77, 0x51, 0xcc, 0x6b, 0xce, 0x4d, 0xce, 0x4b, 0x4f}, + }, + { + {0x6f, 0xb, 0x9d, 0xc4, 0x6e, 0x61, 0xe2, 0x30, 0x17, 0x23, 0xec, + 0xca, 0x8f, 0x71, 0x56, 0xe4, 0xa6, 0x4f, 0x6b, 0xf2, 0x9b, 0x40, + 0xeb, 0x48, 0x37, 0x5f, 0x59, 0x61, 0xe5, 0xce, 0x42, 0x30}, + {0x84, 0x25, 0x24, 0xe2, 0x5a, 0xce, 0x1f, 0xa7, 0x9e, 0x8a, 0xf5, + 0x92, 0x56, 0x72, 0xea, 0x26, 0xf4, 0x3c, 0xea, 0x1c, 0xd7, 0x9, + 0x1a, 0xd2, 0xe6, 0x1, 0x1c, 0xb7, 0x14, 0xdd, 0xfc, 0x73}, + {0x41, 0xac, 0x9b, 0x44, 0x79, 0x70, 0x7e, 0x42, 0xa, 0x31, 0xe2, + 0xbc, 0x6d, 0xe3, 0x5a, 0x85, 0x7c, 0x1a, 0x84, 0x5f, 0x21, 0x76, + 0xae, 0x4c, 0xd6, 0xe1, 0x9c, 0x9a, 0xc, 0x74, 0x9e, 0x38}, + }, + { + {0x28, 0xac, 0xe, 0x57, 0xf6, 0x78, 0xbd, 0xc9, 0xe1, 0x9c, 0x91, + 0x27, 0x32, 0xb, 0x5b, 0xe5, 0xed, 0x91, 0x9b, 0xa1, 0xab, 0x3e, + 0xfc, 0x65, 0x90, 0x36, 0x26, 0xd6, 0xe5, 0x25, 0xc4, 0x25}, + {0xce, 0xb9, 0xdc, 0x34, 0xae, 0xb3, 0xfc, 0x64, 0xad, 0xd0, 0x48, + 0xe3, 0x23, 0x3, 0x50, 0x97, 0x1b, 0x38, 0xc6, 0x62, 0x7d, 0xf0, + 0xb3, 0x45, 0x88, 0x67, 0x5a, 0x46, 0x79, 0x53, 0x54, 0x61}, + {0x6e, 0xde, 0xd7, 0xf1, 0xa6, 0x6, 0x3e, 0x3f, 0x8, 0x23, 0x6, + 0x8e, 0x27, 0x76, 0xf9, 0x3e, 0x77, 0x6c, 0x8a, 0x4e, 0x26, 0xf6, + 0x14, 0x8c, 0x59, 0x47, 0x48, 0x15, 0x89, 0xa0, 0x39, 0x65}, + }, + { + {0x19, 0x4a, 0xbb, 0x14, 0xd4, 0xdb, 0xc4, 0xdd, 0x8e, 0x4f, 0x42, + 0x98, 0x3c, 0xbc, 0xb2, 0x19, 0x69, 0x71, 0xca, 0x36, 0xd7, 0x9f, + 0xa8, 0x48, 0x90, 0xbd, 0x19, 0xf0, 0xe, 0x32, 0x65, 0xf}, + {0x73, 0xf7, 0xd2, 0xc3, 0x74, 0x1f, 0xd2, 0xe9, 0x45, 0x68, 0xc4, + 0x25, 0x41, 0x54, 0x50, 0xc1, 0x33, 0x9e, 0xb9, 0xf9, 0xe8, 0x5c, + 0x4e, 0x62, 0x6c, 0x18, 0xcd, 0xc5, 0xaa, 0xe4, 0xc5, 0x11}, + {0xc6, 0xe0, 0xfd, 0xca, 0xb1, 0xd1, 0x86, 0xd4, 0x81, 0x51, 0x3b, + 0x16, 0xe3, 0xe6, 0x3f, 0x4f, 0x9a, 0x93, 0xf2, 0xfa, 0xd, 0xaf, + 0xa8, 0x59, 0x2a, 0x7, 0x33, 0xec, 0xbd, 0xc7, 0xab, 0x4c}, + }, + }, + { + { + {0x89, 0xd2, 0x78, 0x3f, 0x8f, 0x78, 0x8f, 0xc0, 0x9f, 0x4d, 0x40, + 0xa1, 0x2c, 0xa7, 0x30, 0xfe, 0x9d, 0xcc, 0x65, 0xcf, 0xfc, 0x8b, + 0x77, 0xf2, 0x21, 0x20, 0xcb, 0x5a, 0x16, 0x98, 0xe4, 0x7e}, + {0x2e, 0xa, 0x9c, 0x8, 0x24, 0x96, 0x9e, 0x23, 0x38, 0x47, 0xfe, + 0x3a, 0xc0, 0xc4, 0x48, 0xc7, 0x2a, 0xa1, 0x4f, 0x76, 0x2a, 0xed, + 0xdb, 0x17, 0x82, 0x85, 0x1c, 0x32, 0xf0, 0x93, 0x9b, 0x63}, + {0xc3, 0xa1, 0x11, 0x91, 0xe3, 0x8, 0xd5, 0x7b, 0x89, 0x74, 0x90, + 0x80, 0xd4, 0x90, 0x2b, 0x2b, 0x19, 0xfd, 0x72, 0xae, 0xc2, 0xae, + 0xd2, 0xe7, 0xa6, 0x2, 0xb6, 0x85, 0x3c, 0x49, 0xdf, 0xe}, + }, + { + {0x13, 0x41, 0x76, 0x84, 0xd2, 0xc4, 0x67, 0x67, 0x35, 0xf8, 0xf5, + 0xf7, 0x3f, 0x40, 0x90, 0xa0, 0xde, 0xbe, 0xe6, 0xca, 0xfa, 0xcf, + 0x8f, 0x1c, 0x69, 0xa3, 0xdf, 0xd1, 0x54, 0xc, 0xc0, 0x4}, + {0x68, 0x5a, 0x9b, 0x59, 0x58, 0x81, 0xcc, 0xae, 0xe, 0xe2, 0xad, + 0xeb, 0xf, 0x4f, 0x57, 0xea, 0x7, 0x7f, 0xb6, 0x22, 0x74, 0x1d, + 0xe4, 0x4f, 0xb4, 0x4f, 0x9d, 0x1, 0xe3, 0x92, 0x3b, 0x40}, + {0xf8, 0x5c, 0x46, 0x8b, 0x81, 0x2f, 0xc2, 0x4d, 0xf8, 0xef, 0x80, + 0x14, 0x5a, 0xf3, 0xa0, 0x71, 0x57, 0xd6, 0xc7, 0x4, 0xad, 0xbf, + 0xe8, 0xae, 0xf4, 0x76, 0x61, 0xb2, 0x2a, 0xb1, 0x5b, 0x35}, + }, + { + {0x18, 0x73, 0x8c, 0x5a, 0xc7, 0xda, 0x1, 0xa3, 0x11, 0xaa, 0xce, + 0xb3, 0x9d, 0x3, 0x90, 0xed, 0x2d, 0x3f, 0xae, 0x3b, 0xbf, 0x7c, + 0x7, 0x6f, 0x8e, 0xad, 0x52, 0xe0, 0xf8, 0xea, 0x18, 0x75}, + {0xf4, 0xbb, 0x93, 0x74, 0xcc, 0x64, 0x1e, 0xa7, 0xc3, 0xb0, 0xa3, + 0xec, 0xd9, 0x84, 0xbd, 0xe5, 0x85, 0xe7, 0x5, 0xfa, 0xc, 0xc5, + 0x6b, 0xa, 0x12, 0xc3, 0x2e, 0x18, 0x32, 0x81, 0x9b, 0xf}, + {0x32, 0x6c, 0x7f, 0x1b, 0xc4, 0x59, 0x88, 0xa4, 0x98, 0x32, 0x38, + 0xf4, 0xbc, 0x60, 0x2d, 0xf, 0xd9, 0xd1, 0xb1, 0xc9, 0x29, 0xa9, + 0x15, 0x18, 0xc4, 0x55, 0x17, 0xbb, 0x1b, 0x87, 0xc3, 0x47}, + }, + { + {0xb0, 0x66, 0x50, 0xc8, 0x50, 0x5d, 0xe6, 0xfb, 0xb0, 0x99, 0xa2, + 0xb3, 0xb0, 0xc4, 0xec, 0x62, 0xe0, 0xe8, 0x1a, 0x44, 0xea, 0x54, + 0x37, 0xe5, 0x5f, 0x8d, 0xd4, 0xe8, 0x2c, 0xa0, 0xfe, 0x8}, + {0x48, 0x4f, 0xec, 0x71, 0x97, 0x53, 0x44, 0x51, 0x6e, 0x5d, 0x8c, + 0xc9, 0x7d, 0xb1, 0x5, 0xf8, 0x6b, 0xc6, 0xc3, 0x47, 0x1a, 0xc1, + 0x62, 0xf7, 0xdc, 0x99, 0x46, 0x76, 0x85, 0x9b, 0xb8, 0x0}, + {0xd0, 0xea, 0xde, 0x68, 0x76, 0xdd, 0x4d, 0x82, 0x23, 0x5d, 0x68, + 0x4b, 0x20, 0x45, 0x64, 0xc8, 0x65, 0xd6, 0x89, 0x5d, 0xcd, 0xcf, + 0x14, 0xb5, 0x37, 0xd5, 0x75, 0x4f, 0xa7, 0x29, 0x38, 0x47}, + }, + { + {0xc9, 0x2, 0x39, 0xad, 0x3a, 0x53, 0xd9, 0x23, 0x8f, 0x58, 0x3, + 0xef, 0xce, 0xdd, 0xc2, 0x64, 0xb4, 0x2f, 0xe1, 0xcf, 0x90, 0x73, + 0x25, 0x15, 0x90, 0xd3, 0xe4, 0x44, 0x4d, 0x8b, 0x66, 0x6c}, + {0x18, 0xc4, 0x79, 0x46, 0x75, 0xda, 0xd2, 0x82, 0xf0, 0x8d, 0x61, + 0xb2, 0xd8, 0xd7, 0x3b, 0xe6, 0xa, 0xeb, 0x47, 0xac, 0x24, 0xef, + 0x5e, 0x35, 0xb4, 0xc6, 0x33, 0x48, 0x4c, 0x68, 0x78, 0x20}, + {0xc, 0x82, 0x78, 0x7a, 0x21, 0xcf, 0x48, 0x3b, 0x97, 0x3e, 0x27, + 0x81, 0xb2, 0xa, 0x6a, 0xf7, 0x7b, 0xed, 0x8e, 0x8c, 0xa7, 0x65, + 0x6c, 0xa9, 0x3f, 0x43, 0x8a, 0x4f, 0x5, 0xa6, 0x11, 0x74}, + }, + { + {0xb4, 0x75, 0xb1, 0x18, 0x3d, 0xe5, 0x9a, 0x57, 0x2, 0xa1, 0x92, + 0xf3, 0x59, 0x31, 0x71, 0x68, 0xf5, 0x35, 0xef, 0x1e, 0xba, 0xec, + 0x55, 0x84, 0x8f, 0x39, 0x8c, 0x45, 0x72, 0xa8, 0xc9, 0x1e}, + {0x6d, 0xc8, 0x9d, 0xb9, 0x32, 0x9d, 0x65, 0x4d, 0x15, 0xf1, 0x3a, + 0x60, 0x75, 0xdc, 0x4c, 0x4, 0x88, 0xe4, 0xc2, 0xdc, 0x2c, 0x71, + 0x4c, 0xb3, 0xff, 0x34, 0x81, 0xfb, 0x74, 0x65, 0x13, 0x7c}, + {0x9b, 0x50, 0xa2, 0x0, 0xd4, 0xa4, 0xe6, 0xb8, 0xb4, 0x82, 0xc8, + 0xb, 0x2, 0xd7, 0x81, 0x9b, 0x61, 0x75, 0x95, 0xf1, 0x9b, 0xcc, + 0xe7, 0x57, 0x60, 0x64, 0xcd, 0xc7, 0xa5, 0x88, 0xdd, 0x3a}, + }, + { + {0x46, 0x30, 0x39, 0x59, 0xd4, 0x98, 0xc2, 0x85, 0xec, 0x59, 0xf6, + 0x5f, 0x98, 0x35, 0x7e, 0x8f, 0x3a, 0x6e, 0xf6, 0xf2, 0x2a, 0xa2, + 0x2c, 0x1d, 0x20, 0xa7, 0x6, 0xa4, 0x31, 0x11, 0xba, 0x61}, + {0xf2, 0xdc, 0x35, 0xb6, 0x70, 0x57, 0x89, 0xab, 0xbc, 0x1f, 0x6c, + 0xf6, 0x6c, 0xef, 0xdf, 0x2, 0x87, 0xd1, 0xb6, 0xbe, 0x68, 0x2, + 0x53, 0x85, 0x74, 0x9e, 0x87, 0xcc, 0xfc, 0x29, 0x99, 0x24}, + {0x29, 0x90, 0x95, 0x16, 0xf1, 0xa0, 0xd0, 0xa3, 0x89, 0xbd, 0x7e, + 0xba, 0x6c, 0x6b, 0x3b, 0x2, 0x7, 0x33, 0x78, 0x26, 0x3e, 0x5a, + 0xf1, 0x7b, 0xe7, 0xec, 0xd8, 0xbb, 0xc, 0x31, 0x20, 0x56}, + }, + { + {0xd6, 0x85, 0xe2, 0x77, 0xf4, 0xb5, 0x46, 0x66, 0x93, 0x61, 0x8f, + 0x6c, 0x67, 0xff, 0xe8, 0x40, 0xdd, 0x94, 0xb5, 0xab, 0x11, 0x73, + 0xec, 0xa6, 0x4d, 0xec, 0x8c, 0x65, 0xf3, 0x46, 0xc8, 0x7e}, + {0x43, 0xd6, 0x34, 0x49, 0x43, 0x93, 0x89, 0x52, 0xf5, 0x22, 0x12, + 0xa5, 0x6, 0xf8, 0xdb, 0xb9, 0x22, 0x1c, 0xf4, 0xc3, 0x8f, 0x87, + 0x6d, 0x8f, 0x30, 0x97, 0x9d, 0x4d, 0x2a, 0x6a, 0x67, 0x37}, + {0xc7, 0x2e, 0xa2, 0x1d, 0x3f, 0x8f, 0x5e, 0x9b, 0x13, 0xcd, 0x1, + 0x6c, 0x77, 0x1d, 0xf, 0x13, 0xb8, 0x9f, 0x98, 0xa2, 0xcf, 0x8f, + 0x4c, 0x21, 0xd5, 0x9d, 0x9b, 0x39, 0x23, 0xf7, 0xaa, 0x6d}, + }, + }, + { + { + {0xa2, 0x8e, 0xad, 0xac, 0xbf, 0x4, 0x3b, 0x58, 0x84, 0xe8, 0x8b, + 0x14, 0xe8, 0x43, 0xb7, 0x29, 0xdb, 0xc5, 0x10, 0x8, 0x3b, 0x58, + 0x1e, 0x2b, 0xaa, 0xbb, 0xb3, 0x8e, 0xe5, 0x49, 0x54, 0x2b}, + {0x47, 0xbe, 0x3d, 0xeb, 0x62, 0x75, 0x3a, 0x5f, 0xb8, 0xa0, 0xbd, + 0x8e, 0x54, 0x38, 0xea, 0xf7, 0x99, 0x72, 0x74, 0x45, 0x31, 0xe5, + 0xc3, 0x0, 0x51, 0xd5, 0x27, 0x16, 0xe7, 0xe9, 0x4, 0x13}, + {0xfe, 0x9c, 0xdc, 0x6a, 0xd2, 0x14, 0x98, 0x78, 0xb, 0xdd, 0x48, + 0x8b, 0x3f, 0xab, 0x1b, 0x3c, 0xa, 0xc6, 0x79, 0xf9, 0xff, 0xe1, + 0xf, 0xda, 0x93, 0xd6, 0x2d, 0x7c, 0x2d, 0xde, 0x68, 0x44}, + }, + { + {0xce, 0x7, 0x63, 0xf8, 0xc6, 0xd8, 0x9a, 0x4b, 0x28, 0xc, 0x5d, + 0x43, 0x31, 0x35, 0x11, 0x21, 0x2c, 0x77, 0x7a, 0x65, 0xc5, 0x66, + 0xa8, 0xd4, 0x52, 0x73, 0x24, 0x63, 0x7e, 0x42, 0xa6, 0x5d}, + {0x9e, 0x46, 0x19, 0x94, 0x5e, 0x35, 0xbb, 0x51, 0x54, 0xc7, 0xdd, + 0x23, 0x4c, 0xdc, 0xe6, 0x33, 0x62, 0x99, 0x7f, 0x44, 0xd6, 0xb6, + 0xa5, 0x93, 0x63, 0xbd, 0x44, 0xfb, 0x6f, 0x7c, 0xce, 0x6c}, + {0xca, 0x22, 0xac, 0xde, 0x88, 0xc6, 0x94, 0x1a, 0xf8, 0x1f, 0xae, + 0xbb, 0xf7, 0x6e, 0x6, 0xb9, 0xf, 0x58, 0x59, 0x8d, 0x38, 0x8c, + 0xad, 0x88, 0xa8, 0x2c, 0x9f, 0xe7, 0xbf, 0x9a, 0xf2, 0x58}, + }, + { + {0xf6, 0xcd, 0xe, 0x71, 0xbf, 0x64, 0x5a, 0x4b, 0x3c, 0x29, 0x2c, + 0x46, 0x38, 0xe5, 0x4c, 0xb1, 0xb9, 0x3a, 0xb, 0xd5, 0x56, 0xd0, + 0x43, 0x36, 0x70, 0x48, 0x5b, 0x18, 0x24, 0x37, 0xf9, 0x6a}, + {0x68, 0x3e, 0xe7, 0x8d, 0xab, 0xcf, 0xe, 0xe9, 0xa5, 0x76, 0x7e, + 0x37, 0x9f, 0x6f, 0x3, 0x54, 0x82, 0x59, 0x1, 0xbe, 0xb, 0x5b, + 0x49, 0xf0, 0x36, 0x1e, 0xf4, 0xa7, 0xc4, 0x29, 0x76, 0x57}, + {0x88, 0xa8, 0xc6, 0x9, 0x45, 0x2, 0x20, 0x32, 0x73, 0x89, 0x55, + 0x4b, 0x13, 0x36, 0xe0, 0xd2, 0x9f, 0x28, 0x33, 0x3c, 0x23, 0x36, + 0xe2, 0x83, 0x8f, 0xc1, 0xae, 0xc, 0xbb, 0x25, 0x1f, 0x70}, + }, + { + {0x13, 0xc1, 0xbe, 0x7c, 0xd9, 0xf6, 0x18, 0x9d, 0xe4, 0xdb, 0xbf, + 0x74, 0xe6, 0x6, 0x4a, 0x84, 0xd6, 0x60, 0x4e, 0xac, 0x22, 0xb5, + 0xf5, 0x20, 0x51, 0x5e, 0x95, 0x50, 0xc0, 0x5b, 0xa, 0x72}, + {0xed, 0x6c, 0x61, 0xe4, 0xf8, 0xb0, 0xa8, 0xc3, 0x7d, 0xa8, 0x25, + 0x9e, 0xe, 0x66, 0x0, 0xf7, 0x9c, 0xa5, 0xbc, 0xf4, 0x1f, 0x6, + 0xe3, 0x61, 0xe9, 0xb, 0xc4, 0xbd, 0xbf, 0x92, 0xc, 0x2e}, + {0x35, 0x5a, 0x80, 0x9b, 0x43, 0x9, 0x3f, 0xc, 0xfc, 0xab, 0x42, + 0x62, 0x37, 0x8b, 0x4e, 0xe8, 0x46, 0x93, 0x22, 0x5c, 0xf3, 0x17, + 0x14, 0x69, 0xec, 0xf0, 0x4e, 0x14, 0xbb, 0x9c, 0x9b, 0xe}, + }, + { + {0xee, 0xbe, 0xb1, 0x5d, 0xd5, 0x9b, 0xee, 0x8d, 0xb9, 0x3f, 0x72, + 0xa, 0x37, 0xab, 0xc3, 0xc9, 0x91, 0xd7, 0x68, 0x1c, 0xbf, 0xf1, + 0xa8, 0x44, 0xde, 0x3c, 0xfd, 0x1c, 0x19, 0x44, 0x6d, 0x36}, + {0xad, 0x20, 0x57, 0xfb, 0x8f, 0xd4, 0xba, 0xfb, 0xe, 0xd, 0xf9, + 0xdb, 0x6b, 0x91, 0x81, 0xee, 0xbf, 0x43, 0x55, 0x63, 0x52, 0x31, + 0x81, 0xd4, 0xd8, 0x7b, 0x33, 0x3f, 0xeb, 0x4, 0x11, 0x22}, + {0x14, 0x8c, 0xbc, 0xf2, 0x43, 0x17, 0x3c, 0x9e, 0x3b, 0x6c, 0x85, + 0xb5, 0xfc, 0x26, 0xda, 0x2e, 0x97, 0xfb, 0xa7, 0x68, 0xe, 0x2f, + 0xb8, 0xcc, 0x44, 0x32, 0x59, 0xbc, 0xe6, 0xa4, 0x67, 0x41}, + }, + { + {0xee, 0x8f, 0xce, 0xf8, 0x65, 0x26, 0xbe, 0xc2, 0x2c, 0xd6, 0x80, + 0xe8, 0x14, 0xff, 0x67, 0xe9, 0xee, 0x4e, 0x36, 0x2f, 0x7e, 0x6e, + 0x2e, 0xf1, 0xf6, 0xd2, 0x7e, 0xcb, 0x70, 0x33, 0xb3, 0x34}, + {0x0, 0x27, 0xf6, 0x76, 0x28, 0x9d, 0x3b, 0x64, 0xeb, 0x68, 0x76, + 0xe, 0x40, 0x9d, 0x1d, 0x5d, 0x84, 0x6, 0xfc, 0x21, 0x3, 0x43, + 0x4b, 0x1b, 0x6a, 0x24, 0x55, 0x22, 0x7e, 0xbb, 0x38, 0x79}, + {0xcc, 0xd6, 0x81, 0x86, 0xee, 0x91, 0xc5, 0xcd, 0x53, 0xa7, 0x85, + 0xed, 0x9c, 0x10, 0x2, 0xce, 0x83, 0x88, 0x80, 0x58, 0xc1, 0x85, + 0x74, 0xed, 0xe4, 0x65, 0xfe, 0x2d, 0x6e, 0xfc, 0x76, 0x11}, + }, + { + {0xb8, 0xe, 0x77, 0x49, 0x89, 0xe2, 0x90, 0xdb, 0xa3, 0x40, 0xf4, + 0xac, 0x2a, 0xcc, 0xfb, 0x98, 0x9b, 0x87, 0xd7, 0xde, 0xfe, 0x4f, + 0x35, 0x21, 0xb6, 0x6, 0x69, 0xf2, 0x54, 0x3e, 0x6a, 0x1f}, + {0x9b, 0x61, 0x9c, 0x5b, 0xd0, 0x6c, 0xaf, 0xb4, 0x80, 0x84, 0xa5, + 0xb2, 0xf4, 0xc9, 0xdf, 0x2d, 0xc4, 0x4d, 0xe9, 0xeb, 0x2, 0xa5, + 0x4f, 0x3d, 0x34, 0x5f, 0x7d, 0x67, 0x4c, 0x3a, 0xfc, 0x8}, + {0xea, 0x34, 0x7, 0xd3, 0x99, 0xc1, 0xa4, 0x60, 0xd6, 0x5c, 0x16, + 0x31, 0xb6, 0x85, 0xc0, 0x40, 0x95, 0x82, 0x59, 0xf7, 0x23, 0x3e, + 0x33, 0xe2, 0xd1, 0x0, 0xb9, 0x16, 0x1, 0xad, 0x2f, 0x4f}, + }, + { + {0x38, 0xb6, 0x3b, 0xb7, 0x1d, 0xd9, 0x2c, 0x96, 0x8, 0x9c, 0x12, + 0xfc, 0xaa, 0x77, 0x5, 0xe6, 0x89, 0x16, 0xb6, 0xf3, 0x39, 0x9b, + 0x61, 0x6f, 0x81, 0xee, 0x44, 0x29, 0x5f, 0x99, 0x51, 0x34}, + {0x54, 0x4e, 0xae, 0x94, 0x41, 0xb2, 0xbe, 0x44, 0x6c, 0xef, 0x57, + 0x18, 0x51, 0x1c, 0x54, 0x5f, 0x98, 0x4, 0x8d, 0x36, 0x2d, 0x6b, + 0x1e, 0xa6, 0xab, 0xf7, 0x2e, 0x97, 0xa4, 0x84, 0x54, 0x44}, + {0x7c, 0x7d, 0xea, 0x9f, 0xd0, 0xfc, 0x52, 0x91, 0xf6, 0x5c, 0x93, + 0xb0, 0x94, 0x6c, 0x81, 0x4a, 0x40, 0x5c, 0x28, 0x47, 0xaa, 0x9a, + 0x8e, 0x25, 0xb7, 0x93, 0x28, 0x4, 0xa6, 0x9c, 0xb8, 0x10}, + }, + }, + { + { + {0x6e, 0xf0, 0x45, 0x5a, 0xbe, 0x41, 0x39, 0x75, 0x65, 0x5f, 0x9c, + 0x6d, 0xed, 0xae, 0x7c, 0xd0, 0xb6, 0x51, 0xff, 0x72, 0x9c, 0x6b, + 0x77, 0x11, 0xa9, 0x4d, 0xd, 0xef, 0xd9, 0xd1, 0xd2, 0x17}, + {0x9c, 0x28, 0x18, 0x97, 0x49, 0x47, 0x59, 0x3d, 0x26, 0x3f, 0x53, + 0x24, 0xc5, 0xf8, 0xeb, 0x12, 0x15, 0xef, 0xc3, 0x14, 0xcb, 0xbf, + 0x62, 0x2, 0x8e, 0x51, 0xb7, 0x77, 0xd5, 0x78, 0xb8, 0x20}, + {0x6a, 0x3e, 0x3f, 0x7, 0x18, 0xaf, 0xf2, 0x27, 0x69, 0x10, 0x52, + 0xd7, 0x19, 0xe5, 0x3f, 0xfd, 0x22, 0x0, 0xa6, 0x3c, 0x2c, 0xb7, + 0xe3, 0x22, 0xa7, 0xc6, 0x65, 0xcc, 0x63, 0x4f, 0x21, 0x72}, + }, + { + {0xc9, 0x29, 0x3b, 0xf4, 0xb9, 0xb7, 0x9d, 0x1d, 0x75, 0x8f, 0x51, + 0x4f, 0x4a, 0x82, 0x5, 0xd6, 0xc4, 0x9d, 0x2f, 0x31, 0xbd, 0x72, + 0xc0, 0xf2, 0xb0, 0x45, 0x15, 0x5a, 0x85, 0xac, 0x24, 0x1f}, + {0x93, 0xa6, 0x7, 0x53, 0x40, 0x7f, 0xe3, 0xb4, 0x95, 0x67, 0x33, + 0x2f, 0xd7, 0x14, 0xa7, 0xab, 0x99, 0x10, 0x76, 0x73, 0xa7, 0xd0, + 0xfb, 0xd6, 0xc9, 0xcb, 0x71, 0x81, 0xc5, 0x48, 0xdf, 0x5f}, + {0xaa, 0x5, 0x95, 0x8e, 0x32, 0x8, 0xd6, 0x24, 0xee, 0x20, 0x14, + 0xc, 0xd1, 0xc1, 0x48, 0x47, 0xa2, 0x25, 0xfb, 0x6, 0x5c, 0xe4, + 0xff, 0xc7, 0xe6, 0x95, 0xe3, 0x2a, 0x9e, 0x73, 0xba, 0x0}, + }, + { + {0x26, 0xbb, 0x88, 0xea, 0xf5, 0x26, 0x44, 0xae, 0xfb, 0x3b, 0x97, + 0x84, 0xd9, 0x79, 0x6, 0x36, 0x50, 0x4e, 0x69, 0x26, 0xc, 0x3, + 0x9f, 0x5c, 0x26, 0xd2, 0x18, 0xd5, 0xe7, 0x7d, 0x29, 0x72}, + {0xd6, 0x90, 0x87, 0x5c, 0xde, 0x98, 0x2e, 0x59, 0xdf, 0xa2, 0xc2, + 0x45, 0xd3, 0xb7, 0xbf, 0xe5, 0x22, 0x99, 0xb4, 0xf9, 0x60, 0x3b, + 0x5a, 0x11, 0xf3, 0x78, 0xad, 0x67, 0x3e, 0x3a, 0x28, 0x3}, + {0x39, 0xb9, 0xc, 0xbe, 0xc7, 0x1d, 0x24, 0x48, 0x80, 0x30, 0x63, + 0x8b, 0x4d, 0x9b, 0xf1, 0x32, 0x8, 0x93, 0x28, 0x2, 0xd, 0xc9, + 0xdf, 0xd3, 0x45, 0x19, 0x27, 0x46, 0x68, 0x29, 0xe1, 0x5}, + }, + { + {0x50, 0x45, 0x2c, 0x24, 0xc8, 0xbb, 0xbf, 0xad, 0xd9, 0x81, 0x30, + 0xd0, 0xec, 0xc, 0xc8, 0xbc, 0x92, 0xdf, 0xc8, 0xf5, 0xa6, 0x66, + 0x35, 0x84, 0x4c, 0xce, 0x58, 0x82, 0xd3, 0x25, 0xcf, 0x78}, + {0x5a, 0x49, 0x9c, 0x2d, 0xb3, 0xee, 0x82, 0xba, 0x7c, 0xb9, 0x2b, + 0xf1, 0xfc, 0xc8, 0xef, 0xce, 0xe0, 0xd1, 0xb5, 0x93, 0xae, 0xab, + 0x2d, 0xb0, 0x9b, 0x8d, 0x69, 0x13, 0x9c, 0xc, 0xc0, 0x39}, + {0x68, 0x9d, 0x48, 0x31, 0x8e, 0x6b, 0xae, 0x15, 0x87, 0xf0, 0x2b, + 0x9c, 0xab, 0x1c, 0x85, 0xaa, 0x5, 0xfa, 0x4e, 0xf0, 0x97, 0x5a, + 0xa7, 0xc9, 0x32, 0xf8, 0x3f, 0x6b, 0x7, 0x52, 0x6b, 0x0}, + }, + { + {0x2d, 0x8, 0xce, 0xb9, 0x16, 0x7e, 0xcb, 0xf5, 0x29, 0xbc, 0x7a, + 0x41, 0x4c, 0xf1, 0x7, 0x34, 0xab, 0xa7, 0xf4, 0x2b, 0xce, 0x6b, + 0xb3, 0xd4, 0xce, 0x75, 0x9f, 0x1a, 0x56, 0xe9, 0xe2, 0x7d}, + {0x1c, 0x78, 0x95, 0x9d, 0xe1, 0xcf, 0xe0, 0x29, 0xe2, 0x10, 0x63, + 0x96, 0x18, 0xdf, 0x81, 0xb6, 0x39, 0x6b, 0x51, 0x70, 0xd3, 0x39, + 0xdf, 0x57, 0x22, 0x61, 0xc7, 0x3b, 0x44, 0xe3, 0x57, 0x4d}, + {0xcb, 0x5e, 0xa5, 0xb6, 0xf4, 0xd4, 0x70, 0xde, 0x99, 0xdb, 0x85, + 0x5d, 0x7f, 0x52, 0x1, 0x48, 0x81, 0x9a, 0xee, 0xd3, 0x40, 0xc4, + 0xc9, 0xdb, 0xed, 0x29, 0x60, 0x1a, 0xaf, 0x90, 0x2a, 0x6b}, + }, + { + {0xa, 0xd8, 0xb2, 0x5b, 0x24, 0xf3, 0xeb, 0x77, 0x9b, 0x7, 0xb9, + 0x2f, 0x47, 0x1b, 0x30, 0xd8, 0x33, 0x73, 0xee, 0x4c, 0xf2, 0xe6, + 0x47, 0xc6, 0x9, 0x21, 0x6c, 0x27, 0xc8, 0x12, 0x58, 0x46}, + {0x97, 0x1e, 0xe6, 0x9a, 0xfc, 0xf4, 0x23, 0x69, 0xd1, 0x5f, 0x3f, + 0xe0, 0x1d, 0x28, 0x35, 0x57, 0x2d, 0xd1, 0xed, 0xe6, 0x43, 0xae, + 0x64, 0xa7, 0x4a, 0x3e, 0x2d, 0xd1, 0xe9, 0xf4, 0xd8, 0x5f}, + {0xd9, 0x62, 0x10, 0x2a, 0xb2, 0xbe, 0x43, 0x4d, 0x16, 0xdc, 0x31, + 0x38, 0x75, 0xfb, 0x65, 0x70, 0xd7, 0x68, 0x29, 0xde, 0x7b, 0x4a, + 0xd, 0x18, 0x90, 0x67, 0xb1, 0x1c, 0x2b, 0x2c, 0xb3, 0x5}, + }, + { + {0x95, 0x81, 0xd5, 0x7a, 0x2c, 0xa4, 0xfc, 0xf7, 0xcc, 0xf3, 0x33, + 0x43, 0x6e, 0x28, 0x14, 0x32, 0x9d, 0x97, 0xb, 0x34, 0xd, 0x9d, + 0xc2, 0xb6, 0xe1, 0x7, 0x73, 0x56, 0x48, 0x1a, 0x77, 0x31}, + {0xfd, 0xa8, 0x4d, 0xd2, 0xcc, 0x5e, 0xc0, 0xc8, 0x83, 0xef, 0xdf, + 0x5, 0xac, 0x1a, 0xcf, 0xa1, 0x61, 0xcd, 0xf9, 0x7d, 0xf2, 0xef, + 0xbe, 0xdb, 0x99, 0x1e, 0x47, 0x7b, 0xa3, 0x56, 0x55, 0x3b}, + {0x82, 0xd4, 0x4d, 0xe1, 0x24, 0xc5, 0xb0, 0x32, 0xb6, 0xa4, 0x2b, + 0x1a, 0x54, 0x51, 0xb3, 0xed, 0xf3, 0x5a, 0x2b, 0x28, 0x48, 0x60, + 0xd1, 0xa3, 0xeb, 0x36, 0x73, 0x7a, 0xd2, 0x79, 0xc0, 0x4f}, + }, + { + {0xd, 0xc5, 0x86, 0xc, 0x44, 0x8b, 0x34, 0xdc, 0x51, 0xe6, 0x94, + 0xcc, 0xc9, 0xcb, 0x37, 0x13, 0xb9, 0x3c, 0x3e, 0x64, 0x4d, 0xf7, + 0x22, 0x64, 0x8, 0xcd, 0xe3, 0xba, 0xc2, 0x70, 0x11, 0x24}, + {0x7f, 0x2f, 0xbf, 0x89, 0xb0, 0x38, 0xc9, 0x51, 0xa7, 0xe9, 0xdf, + 0x2, 0x65, 0xbd, 0x97, 0x24, 0x53, 0xe4, 0x80, 0x78, 0x9c, 0xc0, + 0xff, 0xff, 0x92, 0x8e, 0xf9, 0xca, 0xce, 0x67, 0x45, 0x12}, + {0xb4, 0x73, 0xc4, 0xa, 0x86, 0xab, 0xf9, 0x3f, 0x35, 0xe4, 0x13, + 0x1, 0xee, 0x1d, 0x91, 0xf0, 0xaf, 0xc4, 0xc6, 0xeb, 0x60, 0x50, + 0xe7, 0x4a, 0xd, 0x0, 0x87, 0x6c, 0x96, 0x12, 0x86, 0x3f}, + }, + }, + { + { + {0x13, 0x8d, 0x4, 0x36, 0xfa, 0xfc, 0x18, 0x9c, 0xdd, 0x9d, 0x89, + 0x73, 0xb3, 0x9d, 0x15, 0x29, 0xaa, 0xd0, 0x92, 0x9f, 0xb, 0x35, + 0x9f, 0xdc, 0xd4, 0x19, 0x8a, 0x87, 0xee, 0x7e, 0xf5, 0x26}, + {0xde, 0xd, 0x2a, 0x78, 0xc9, 0xc, 0x9a, 0x55, 0x85, 0x83, 0x71, + 0xea, 0xb2, 0xcd, 0x1d, 0x55, 0x8c, 0x23, 0xef, 0x31, 0x5b, 0x86, + 0x62, 0x7f, 0x3d, 0x61, 0x73, 0x79, 0x76, 0xa7, 0x4a, 0x50}, + {0xb1, 0xef, 0x87, 0x56, 0xd5, 0x2c, 0xab, 0xc, 0x7b, 0xf1, 0x7a, + 0x24, 0x62, 0xd1, 0x80, 0x51, 0x67, 0x24, 0x5a, 0x4f, 0x34, 0x5a, + 0xc1, 0x85, 0x69, 0x30, 0xba, 0x9d, 0x3d, 0x94, 0x41, 0x40}, + }, + { + {0xdd, 0xaa, 0x6c, 0xa2, 0x43, 0x77, 0x21, 0x4b, 0xce, 0xb7, 0x8a, + 0x64, 0x24, 0xb4, 0xa6, 0x47, 0xe3, 0xc9, 0xfb, 0x3, 0x7a, 0x4f, + 0x1d, 0xcb, 0x19, 0xd0, 0x0, 0x98, 0x42, 0x31, 0xd9, 0x12}, + {0x96, 0xcc, 0xeb, 0x43, 0xba, 0xee, 0xc0, 0xc3, 0xaf, 0x9c, 0xea, + 0x26, 0x9c, 0x9c, 0x74, 0x8d, 0xc6, 0xcc, 0x77, 0x1c, 0xee, 0x95, + 0xfa, 0xd9, 0xf, 0x34, 0x84, 0x76, 0xd9, 0xa1, 0x20, 0x14}, + {0x4f, 0x59, 0x37, 0xd3, 0x99, 0x77, 0xc6, 0x0, 0x7b, 0xa4, 0x3a, + 0xb2, 0x40, 0x51, 0x3c, 0x5e, 0x95, 0xf3, 0x5f, 0xe3, 0x54, 0x28, + 0x18, 0x44, 0x12, 0xa0, 0x59, 0x43, 0x31, 0x92, 0x4f, 0x1b}, + }, + { + {0xb1, 0x66, 0x98, 0xa4, 0x30, 0x30, 0xcf, 0x33, 0x59, 0x48, 0x5f, + 0x21, 0xd2, 0x73, 0x1f, 0x25, 0xf6, 0xf4, 0xde, 0x51, 0x40, 0xaa, + 0x82, 0xab, 0xf6, 0x23, 0x9a, 0x6f, 0xd5, 0x91, 0xf1, 0x5f}, + {0x51, 0x9, 0x15, 0x89, 0x9d, 0x10, 0x5c, 0x3e, 0x6a, 0x69, 0xe9, + 0x2d, 0x91, 0xfa, 0xce, 0x39, 0x20, 0x30, 0x5f, 0x97, 0x3f, 0xe4, + 0xea, 0x20, 0xae, 0x2d, 0x13, 0x7f, 0x2a, 0x57, 0x9b, 0x23}, + {0x68, 0x90, 0x2d, 0xac, 0x33, 0xd4, 0x9e, 0x81, 0x23, 0x85, 0xc9, + 0x5f, 0x79, 0xab, 0x83, 0x28, 0x3d, 0xeb, 0x93, 0x55, 0x80, 0x72, + 0x45, 0xef, 0xcb, 0x36, 0x8f, 0x75, 0x6a, 0x52, 0xc, 0x2}, + }, + { + {0x89, 0xcc, 0x42, 0xf0, 0x59, 0xef, 0x31, 0xe9, 0xb6, 0x4b, 0x12, + 0x8e, 0x9d, 0x9c, 0x58, 0x2c, 0x97, 0x59, 0xc7, 0xae, 0x8a, 0xe1, + 0xc8, 0xad, 0xc, 0xc5, 0x2, 0x56, 0xa, 0xfe, 0x2c, 0x45}, + {0xbc, 0xdb, 0xd8, 0x9e, 0xf8, 0x34, 0x98, 0x77, 0x6c, 0xa4, 0x7c, + 0xdc, 0xf9, 0xaa, 0xf2, 0xc8, 0x74, 0xb0, 0xe1, 0xa3, 0xdc, 0x4c, + 0x52, 0xa9, 0x77, 0x38, 0x31, 0x15, 0x46, 0xcc, 0xaa, 0x2}, + {0xdf, 0x77, 0x78, 0x64, 0xa0, 0xf7, 0xa0, 0x86, 0x9f, 0x7c, 0x60, + 0xe, 0x27, 0x64, 0xc4, 0xbb, 0xc9, 0x11, 0xfb, 0xf1, 0x25, 0xea, + 0x17, 0xab, 0x7b, 0x87, 0x4b, 0x30, 0x7b, 0x7d, 0xfb, 0x4c}, + }, + { + {0x12, 0xef, 0x89, 0x97, 0xc2, 0x99, 0x86, 0xe2, 0xd, 0x19, 0x57, + 0xdf, 0x71, 0xcd, 0x6e, 0x2b, 0xd0, 0x70, 0xc9, 0xec, 0x57, 0xc8, + 0x43, 0xc3, 0xc5, 0x3a, 0x4d, 0x43, 0xbc, 0x4c, 0x1d, 0x5b}, + {0xfe, 0x75, 0x9b, 0xb8, 0x6c, 0x3d, 0xb4, 0x72, 0x80, 0xdc, 0x6a, + 0x9c, 0xd9, 0x94, 0xc6, 0x54, 0x9f, 0x4c, 0xe3, 0x3e, 0x37, 0xaa, + 0xc3, 0xb8, 0x64, 0x53, 0x7, 0x39, 0x2b, 0x62, 0xb4, 0x14}, + {0x26, 0x9f, 0xa, 0xcc, 0x15, 0x26, 0xfb, 0xb6, 0xe5, 0xcc, 0x8d, + 0xb8, 0x2b, 0xe, 0x4f, 0x3a, 0x5, 0xa7, 0x69, 0x33, 0x8b, 0x49, + 0x1, 0x13, 0xd1, 0x2d, 0x59, 0x58, 0x12, 0xf7, 0x98, 0x2f}, + }, + { + {0x1, 0xa7, 0x54, 0x4f, 0x44, 0xae, 0x12, 0x2e, 0xde, 0xd7, 0xcb, + 0xa9, 0xf0, 0x3e, 0xfe, 0xfc, 0xe0, 0x5d, 0x83, 0x75, 0xd, 0x89, + 0xbf, 0xce, 0x54, 0x45, 0x61, 0xe7, 0xe9, 0x62, 0x80, 0x1d}, + {0x56, 0x9e, 0xf, 0xb5, 0x4c, 0xa7, 0x94, 0xc, 0x20, 0x13, 0x8e, + 0x8e, 0xa9, 0xf4, 0x1f, 0x5b, 0x67, 0xf, 0x30, 0x82, 0x21, 0xcc, + 0x2a, 0x9a, 0xf9, 0xaa, 0x6, 0xd8, 0x49, 0xe2, 0x6a, 0x3a}, + {0x5a, 0x7c, 0x90, 0xa9, 0x85, 0xda, 0x7a, 0x65, 0x62, 0xf, 0xb9, + 0x91, 0xb5, 0xa8, 0xe, 0x1a, 0xe9, 0xb4, 0x34, 0xdf, 0xfb, 0x1d, + 0xe, 0x8d, 0xf3, 0x5f, 0xf2, 0xae, 0xe8, 0x8c, 0x8b, 0x29}, + }, + { + {0xde, 0x65, 0x21, 0xa, 0xea, 0x72, 0x7a, 0x83, 0xf6, 0x79, 0xcf, + 0xb, 0xb4, 0x7, 0xab, 0x3f, 0x70, 0xae, 0x38, 0x77, 0xc7, 0x36, + 0x16, 0x52, 0xdc, 0xd7, 0xa7, 0x3, 0x18, 0x27, 0xa6, 0x6b}, + {0xb2, 0xc, 0xf7, 0xef, 0x53, 0x79, 0x92, 0x2a, 0x76, 0x70, 0x15, + 0x79, 0x2a, 0xc9, 0x89, 0x4b, 0x6a, 0xcf, 0xa7, 0x30, 0x7a, 0x45, + 0x18, 0x94, 0x85, 0xe4, 0x5c, 0x4d, 0x40, 0xa8, 0xb8, 0x34}, + {0x35, 0x33, 0x69, 0x83, 0xb5, 0xec, 0x6e, 0xc2, 0xfd, 0xfe, 0xb5, + 0x63, 0xdf, 0x13, 0xa8, 0xd5, 0x73, 0x25, 0xb2, 0xa4, 0x9a, 0xaa, + 0x93, 0xa2, 0x6a, 0x1c, 0x5e, 0x46, 0xdd, 0x2b, 0xd6, 0x71}, + }, + { + {0xf5, 0x5e, 0xf7, 0xb1, 0xda, 0xb5, 0x2d, 0xcd, 0xf5, 0x65, 0xb0, + 0x16, 0xcf, 0x95, 0x7f, 0xd7, 0x85, 0xf0, 0x49, 0x3f, 0xea, 0x1f, + 0x57, 0x14, 0x3d, 0x2b, 0x2b, 0x26, 0x21, 0x36, 0x33, 0x1c}, + {0x80, 0xdf, 0x78, 0xd3, 0x28, 0xcc, 0x33, 0x65, 0xb4, 0xa4, 0xf, + 0xa, 0x79, 0x43, 0xdb, 0xf6, 0x5a, 0xda, 0x1, 0xf7, 0xf9, 0x5f, + 0x64, 0xe3, 0xa4, 0x2b, 0x17, 0xf3, 0x17, 0xf3, 0xd5, 0x74}, + {0x81, 0xca, 0xd9, 0x67, 0x54, 0xe5, 0x6f, 0xa8, 0x37, 0x8c, 0x29, + 0x2b, 0x75, 0x7c, 0x8b, 0x39, 0x3b, 0x62, 0xac, 0xe3, 0x92, 0x8, + 0x6d, 0xda, 0x8c, 0xd9, 0xe9, 0x47, 0x45, 0xcc, 0xeb, 0x4a}, + }, + }, + { + { + {0x10, 0xb6, 0x54, 0x73, 0x9e, 0x8d, 0x40, 0xb, 0x6e, 0x5b, 0xa8, + 0x5b, 0x53, 0x32, 0x6b, 0x80, 0x7, 0xa2, 0x58, 0x4a, 0x3, 0x3a, + 0xe6, 0xdb, 0x2c, 0xdf, 0xa1, 0xc9, 0xdd, 0xd9, 0x3b, 0x17}, + {0xc9, 0x1, 0x6d, 0x27, 0x1b, 0x7, 0xf0, 0x12, 0x70, 0x8c, 0xc4, + 0x86, 0xc5, 0xba, 0xb8, 0xe7, 0xa9, 0xfb, 0xd6, 0x71, 0x9b, 0x12, + 0x8, 0x53, 0x92, 0xb7, 0x3d, 0x5a, 0xf9, 0xfb, 0x88, 0x5d}, + {0xdf, 0x72, 0x58, 0xfe, 0x1e, 0xf, 0x50, 0x2b, 0xc1, 0x18, 0x39, + 0xd4, 0x2e, 0x58, 0xd6, 0x58, 0xe0, 0x3a, 0x67, 0xc9, 0x8e, 0x27, + 0xed, 0xe6, 0x19, 0xa3, 0x9e, 0xb1, 0x13, 0xcd, 0xe1, 0x6}, + }, + { + {0x53, 0x3, 0x5b, 0x9e, 0x62, 0xaf, 0x2b, 0x47, 0x47, 0x4, 0x8d, + 0x27, 0x90, 0xb, 0xaa, 0x3b, 0x27, 0xbf, 0x43, 0x96, 0x46, 0x5f, + 0x78, 0xc, 0x13, 0x7b, 0x83, 0x8d, 0x1a, 0x6a, 0x3a, 0x7f}, + {0x23, 0x6f, 0x16, 0x6f, 0x51, 0xad, 0xd0, 0x40, 0xbe, 0x6a, 0xab, + 0x1f, 0x93, 0x32, 0x8e, 0x11, 0x8e, 0x8, 0x4d, 0xa0, 0x14, 0x5e, + 0xe3, 0x3f, 0x66, 0x62, 0xe1, 0x26, 0x35, 0x60, 0x80, 0x30}, + {0xb, 0x80, 0x3d, 0x5d, 0x39, 0x44, 0xe6, 0xf7, 0xf6, 0xed, 0x1, + 0xc9, 0x55, 0xd5, 0xa8, 0x95, 0x39, 0x63, 0x2c, 0x59, 0x30, 0x78, + 0xcd, 0x68, 0x7e, 0x30, 0x51, 0x2e, 0xed, 0xfd, 0xd0, 0x30}, + }, + { + {0x50, 0x47, 0xb8, 0x68, 0x1e, 0x97, 0xb4, 0x9c, 0xcf, 0xbb, 0x64, + 0x66, 0x29, 0x72, 0x95, 0xa0, 0x2b, 0x41, 0xfa, 0x72, 0x26, 0xe7, + 0x8d, 0x5c, 0xd9, 0x89, 0xc5, 0x51, 0x43, 0x8, 0x15, 0x46}, + {0xb3, 0x33, 0x12, 0xf2, 0x1a, 0x4d, 0x59, 0xe0, 0x9c, 0x4d, 0xcc, + 0xf0, 0x8e, 0xe7, 0xdb, 0x1b, 0x77, 0x9a, 0x49, 0x8f, 0x7f, 0x18, + 0x65, 0x69, 0x68, 0x98, 0x9, 0x2c, 0x20, 0x14, 0x92, 0xa}, + {0x2e, 0xa0, 0xb9, 0xae, 0xc0, 0x19, 0x90, 0xbc, 0xae, 0x4c, 0x3, + 0x16, 0xd, 0x11, 0xc7, 0x55, 0xec, 0x32, 0x99, 0x65, 0x1, 0xf5, + 0x6d, 0xe, 0xfe, 0x5d, 0xca, 0x95, 0x28, 0xd, 0xca, 0x3b}, + }, + { + {0xbf, 0x1, 0xcc, 0x9e, 0xb6, 0x8e, 0x68, 0x9c, 0x6f, 0x89, 0x44, + 0xa6, 0xad, 0x83, 0xbc, 0xf0, 0xe2, 0x9f, 0x7a, 0x5f, 0x5f, 0x95, + 0x2d, 0xca, 0x41, 0x82, 0xf2, 0x8d, 0x3, 0xb4, 0xa8, 0x4e}, + {0xa4, 0x62, 0x5d, 0x3c, 0xbc, 0x31, 0xf0, 0x40, 0x60, 0x7a, 0xf0, + 0xcf, 0x3e, 0x8b, 0xfc, 0x19, 0x45, 0xb5, 0xf, 0x13, 0xa2, 0x3d, + 0x18, 0x98, 0xcd, 0x13, 0x8f, 0xae, 0xdd, 0xde, 0x31, 0x56}, + {0x2, 0xd2, 0xca, 0xf1, 0xa, 0x46, 0xed, 0x2a, 0x83, 0xee, 0x8c, + 0xa4, 0x5, 0x53, 0x30, 0x46, 0x5f, 0x1a, 0xf1, 0x49, 0x45, 0x77, + 0x21, 0x91, 0x63, 0xa4, 0x2c, 0x54, 0x30, 0x9, 0xce, 0x24}, + }, + { + {0x85, 0xb, 0xf3, 0xfd, 0x55, 0xa1, 0xcf, 0x3f, 0xa4, 0x2e, 0x37, + 0x36, 0x8e, 0x16, 0xf7, 0xd2, 0x44, 0xf8, 0x92, 0x64, 0xde, 0x64, + 0xe0, 0xb2, 0x80, 0x42, 0x4f, 0x32, 0xa7, 0x28, 0x99, 0x54}, + {0x6, 0xc1, 0x6, 0xfd, 0xf5, 0x90, 0xe8, 0x1f, 0xf2, 0x10, 0x88, + 0x5d, 0x35, 0x68, 0xc4, 0xb5, 0x3e, 0xaf, 0x8c, 0x6e, 0xfe, 0x8, + 0x78, 0x82, 0x4b, 0xd7, 0x6, 0x8a, 0xc2, 0xe3, 0xd4, 0x41}, + {0x2e, 0x1a, 0xee, 0x63, 0xa7, 0x32, 0x6e, 0xf2, 0xea, 0xfd, 0x5f, + 0xd2, 0xb7, 0xe4, 0x91, 0xae, 0x69, 0x4d, 0x7f, 0xd1, 0x3b, 0xd3, + 0x3b, 0xbc, 0x6a, 0xff, 0xdc, 0xc0, 0xde, 0x66, 0x1b, 0x49}, + }, + { + {0xa1, 0x64, 0xda, 0xd0, 0x8e, 0x4a, 0xf0, 0x75, 0x4b, 0x28, 0xe2, + 0x67, 0xaf, 0x2c, 0x22, 0xed, 0xa4, 0x7b, 0x7b, 0x1f, 0x79, 0xa3, + 0x34, 0x82, 0x67, 0x8b, 0x1, 0xb7, 0xb0, 0xb8, 0xf6, 0x4c}, + {0xa7, 0x32, 0xea, 0xc7, 0x3d, 0xb1, 0xf5, 0x98, 0x98, 0xdb, 0x16, + 0x7e, 0xcc, 0xf8, 0xd5, 0xe3, 0x47, 0xd9, 0xf8, 0xcb, 0x52, 0xbf, + 0xa, 0xac, 0xac, 0xe4, 0x5e, 0xc8, 0xd0, 0x38, 0xf3, 0x8}, + {0xbd, 0x73, 0x1a, 0x99, 0x21, 0xa8, 0x83, 0xc3, 0x7a, 0xc, 0x32, + 0xdf, 0x1, 0xbc, 0x27, 0xab, 0x63, 0x70, 0x77, 0x84, 0x1b, 0x33, + 0x3d, 0xc1, 0x99, 0x8a, 0x7, 0xeb, 0x82, 0x4a, 0xd, 0x53}, + }, + { + {0x9e, 0xbf, 0x9a, 0x6c, 0x45, 0x73, 0x69, 0x6d, 0x80, 0xa8, 0x0, + 0x49, 0xfc, 0xb2, 0x7f, 0x25, 0x50, 0xb8, 0xcf, 0xc8, 0x12, 0xf4, + 0xac, 0x2b, 0x5b, 0xbd, 0xbf, 0xc, 0xe0, 0xe7, 0xb3, 0xd}, + {0x25, 0x48, 0xf9, 0xe1, 0x30, 0x36, 0x4c, 0x0, 0x5a, 0x53, 0xab, + 0x8c, 0x26, 0x78, 0x2d, 0x7e, 0x8b, 0xff, 0x84, 0xcc, 0x23, 0x23, + 0x48, 0xc7, 0xb9, 0x70, 0x17, 0x10, 0x3f, 0x75, 0xea, 0x65}, + {0x63, 0x63, 0x9, 0xe2, 0x3e, 0xfc, 0x66, 0x3d, 0x6b, 0xcb, 0xb5, + 0x61, 0x7f, 0x2c, 0xd6, 0x81, 0x1a, 0x3b, 0x44, 0x13, 0x42, 0x4, + 0xbe, 0xf, 0xdb, 0xa1, 0xe1, 0x21, 0x19, 0xec, 0xa4, 0x2}, + }, + { + {0x5f, 0x79, 0xcf, 0xf1, 0x62, 0x61, 0xc8, 0xf5, 0xf2, 0x57, 0xee, + 0x26, 0x19, 0x86, 0x8c, 0x11, 0x78, 0x35, 0x6, 0x1c, 0x85, 0x24, + 0x21, 0x17, 0xcf, 0x7f, 0x6, 0xec, 0x5d, 0x2b, 0xd1, 0x36}, + {0xa2, 0xb8, 0x24, 0x3b, 0x9a, 0x25, 0xe6, 0x5c, 0xb8, 0xa0, 0xaf, + 0x45, 0xcc, 0x7a, 0x57, 0xb8, 0x37, 0x70, 0xa0, 0x8b, 0xe8, 0xe6, + 0xcb, 0xcc, 0xbf, 0x9, 0x78, 0x12, 0x51, 0x3c, 0x14, 0x3d}, + {0x57, 0x45, 0x15, 0x79, 0x91, 0x27, 0x6d, 0x12, 0xa, 0x3a, 0x78, + 0xfc, 0x5c, 0x8f, 0xe4, 0xd5, 0xac, 0x9b, 0x17, 0xdf, 0xe8, 0xb6, + 0xbd, 0x36, 0x59, 0x28, 0xa8, 0x5b, 0x88, 0x17, 0xf5, 0x2e}, + }, + }, + { + { + {0x51, 0x2f, 0x5b, 0x30, 0xfb, 0xbf, 0xee, 0x96, 0xb8, 0x96, 0x95, + 0x88, 0xad, 0x38, 0xf9, 0xd3, 0x25, 0xdd, 0xd5, 0x46, 0xc7, 0x2d, + 0xf5, 0xf0, 0x95, 0x0, 0x3a, 0xbb, 0x90, 0x82, 0x96, 0x57}, + {0xdc, 0xae, 0x58, 0x8c, 0x4e, 0x97, 0x37, 0x46, 0xa4, 0x41, 0xf0, + 0xab, 0xfb, 0x22, 0xef, 0xb9, 0x8a, 0x71, 0x80, 0xe9, 0x56, 0xd9, + 0x85, 0xe1, 0xa6, 0xa8, 0x43, 0xb1, 0xfa, 0x78, 0x1b, 0x2f}, + {0x1, 0xe1, 0x20, 0xa, 0x43, 0xb8, 0x1a, 0xf7, 0x47, 0xec, 0xf0, + 0x24, 0x8d, 0x65, 0x93, 0xf3, 0xd1, 0xee, 0xe2, 0x6e, 0xa8, 0x9, + 0x75, 0xcf, 0xe1, 0xa3, 0x2a, 0xdc, 0x35, 0x3e, 0xc4, 0x7d}, + }, + { + {0x18, 0x97, 0x3e, 0x27, 0x5c, 0x2a, 0x78, 0x5a, 0x94, 0xfd, 0x4e, + 0x5e, 0x99, 0xc6, 0x76, 0x35, 0x3e, 0x7d, 0x23, 0x1f, 0x5, 0xd8, + 0x2e, 0xf, 0x99, 0xa, 0xd5, 0x82, 0x1d, 0xb8, 0x4f, 0x4}, + {0xc3, 0xd9, 0x7d, 0x88, 0x65, 0x66, 0x96, 0x85, 0x55, 0x53, 0xb0, + 0x4b, 0x31, 0x9b, 0xf, 0xc9, 0xb1, 0x79, 0x20, 0xef, 0xf8, 0x8d, + 0xe0, 0xc6, 0x2f, 0xc1, 0x8c, 0x75, 0x16, 0x20, 0xf7, 0x7e}, + {0xd9, 0xe3, 0x7, 0xa9, 0xc5, 0x18, 0xdf, 0xc1, 0x59, 0x63, 0x4c, + 0xce, 0x1d, 0x37, 0xb3, 0x57, 0x49, 0xbb, 0x1, 0xb2, 0x34, 0x45, + 0x70, 0xca, 0x2e, 0xdd, 0x30, 0x9c, 0x3f, 0x82, 0x79, 0x7f}, + }, + { + {0xba, 0x87, 0xf5, 0x68, 0xf0, 0x1f, 0x9c, 0x6a, 0xde, 0xc8, 0x50, + 0x0, 0x4e, 0x89, 0x27, 0x8, 0xe7, 0x5b, 0xed, 0x7d, 0x55, 0x99, + 0xbf, 0x3c, 0xf0, 0xd6, 0x6, 0x1c, 0x43, 0xb0, 0xa9, 0x64}, + {0xe8, 0x13, 0xb5, 0xa3, 0x39, 0xd2, 0x34, 0x83, 0xd8, 0xa8, 0x1f, + 0xb9, 0xd4, 0x70, 0x36, 0xc1, 0x33, 0xbd, 0x90, 0xf5, 0x36, 0x41, + 0xb5, 0x12, 0xb4, 0xd9, 0x84, 0xd7, 0x73, 0x3, 0x4e, 0xa}, + {0x19, 0x29, 0x7d, 0x5b, 0xa1, 0xd6, 0xb3, 0x2e, 0x35, 0x82, 0x3a, + 0xd5, 0xa0, 0xf6, 0xb4, 0xb0, 0x47, 0x5d, 0xa4, 0x89, 0x43, 0xce, + 0x56, 0x71, 0x6c, 0x34, 0x18, 0xce, 0xa, 0x7d, 0x1a, 0x7}, + }, + { + {0x31, 0x44, 0xe1, 0x20, 0x52, 0x35, 0xc, 0xcc, 0x41, 0x51, 0xb1, + 0x9, 0x7, 0x95, 0x65, 0xd, 0x36, 0x5f, 0x9d, 0x20, 0x1b, 0x62, + 0xf5, 0x9a, 0xd3, 0x55, 0x77, 0x61, 0xf7, 0xbc, 0x69, 0x7c}, + {0xb, 0xba, 0x87, 0xc8, 0xaa, 0x2d, 0x7, 0xd3, 0xee, 0x62, 0xa5, + 0xbf, 0x5, 0x29, 0x26, 0x1, 0x8b, 0x76, 0xef, 0xc0, 0x2, 0x30, + 0x54, 0xcf, 0x9c, 0x7e, 0xea, 0x46, 0x71, 0xcc, 0x3b, 0x2c}, + {0x5f, 0x29, 0xe8, 0x4, 0xeb, 0xd7, 0xf0, 0x7, 0x7d, 0xf3, 0x50, + 0x2f, 0x25, 0x18, 0xdb, 0x10, 0xd7, 0x98, 0x17, 0x17, 0xa3, 0xa9, + 0x51, 0xe9, 0x1d, 0xa5, 0xac, 0x22, 0x73, 0x9a, 0x5a, 0x6f}, + }, + { + {0xbe, 0x44, 0xd9, 0xa3, 0xeb, 0xd4, 0x29, 0xe7, 0x9e, 0xaf, 0x78, + 0x80, 0x40, 0x9, 0x9e, 0x8d, 0x3, 0x9c, 0x86, 0x47, 0x7a, 0x56, + 0x25, 0x45, 0x24, 0x3b, 0x8d, 0xee, 0x80, 0x96, 0xab, 0x2}, + {0xc5, 0xc6, 0x41, 0x2f, 0xc, 0x0, 0xa1, 0x8b, 0x9b, 0xfb, 0xfe, + 0xc, 0xc1, 0x79, 0x9f, 0xc4, 0x9f, 0x1c, 0xc5, 0x3c, 0x70, 0x47, + 0xfa, 0x4e, 0xca, 0xaf, 0x47, 0xe1, 0xa2, 0x21, 0x4e, 0x49}, + {0x9a, 0xd, 0xe5, 0xdd, 0x85, 0x8a, 0xa4, 0xef, 0x49, 0xa2, 0xb9, + 0xf, 0x4e, 0x22, 0x9a, 0x21, 0xd9, 0xf6, 0x1e, 0xd9, 0x1d, 0x1f, + 0x9, 0xfa, 0x34, 0xbb, 0x46, 0xea, 0xcb, 0x76, 0x5d, 0x6b}, + }, + { + {0x22, 0x25, 0x78, 0x1e, 0x17, 0x41, 0xf9, 0xe0, 0xd3, 0x36, 0x69, + 0x3, 0x74, 0xae, 0xe6, 0xf1, 0x46, 0xc7, 0xfc, 0xd0, 0xa2, 0x3e, + 0x8b, 0x40, 0x3e, 0x31, 0xdd, 0x3, 0x9c, 0x86, 0xfb, 0x16}, + {0x94, 0xd9, 0xc, 0xec, 0x6c, 0x55, 0x57, 0x88, 0xba, 0x1d, 0xd0, + 0x5c, 0x6f, 0xdc, 0x72, 0x64, 0x77, 0xb4, 0x42, 0x8f, 0x14, 0x69, + 0x1, 0xaf, 0x54, 0x73, 0x27, 0x85, 0xf6, 0x33, 0xe3, 0xa}, + {0x62, 0x9, 0xb6, 0x33, 0x97, 0x19, 0x8e, 0x28, 0x33, 0xe1, 0xab, + 0xd8, 0xb4, 0x72, 0xfc, 0x24, 0x3e, 0xd0, 0x91, 0x9, 0xed, 0xf7, + 0x11, 0x48, 0x75, 0xd0, 0x70, 0x8f, 0x8b, 0xe3, 0x81, 0x3f}, + }, + { + {0x24, 0xc8, 0x17, 0x5f, 0x35, 0x7f, 0xdb, 0xa, 0xa4, 0x99, 0x42, + 0xd7, 0xc3, 0x23, 0xb9, 0x74, 0xf7, 0xea, 0xf8, 0xcb, 0x8b, 0x3e, + 0x7c, 0xd5, 0x3d, 0xdc, 0xde, 0x4c, 0xd3, 0xe2, 0xd3, 0xa}, + {0xfe, 0xaf, 0xd9, 0x7e, 0xcc, 0xf, 0x91, 0x7f, 0x4b, 0x87, 0x65, + 0x24, 0xa1, 0xb8, 0x5c, 0x54, 0x4, 0x47, 0xc, 0x4b, 0xd2, 0x7e, + 0x39, 0xa8, 0x93, 0x9, 0xf5, 0x4, 0xc1, 0xf, 0x51, 0x50}, + {0x9d, 0x24, 0x6e, 0x33, 0xc5, 0xf, 0xc, 0x6f, 0xd9, 0xcf, 0x31, + 0xc3, 0x19, 0xde, 0x5e, 0x74, 0x1c, 0xfe, 0xee, 0x9, 0x0, 0xfd, + 0xd6, 0xf2, 0xbe, 0x1e, 0xfa, 0xf0, 0x8b, 0x15, 0x7c, 0x12}, + }, + { + {0x74, 0xb9, 0x51, 0xae, 0xc4, 0x8f, 0xa2, 0xde, 0x96, 0xfe, 0x4d, + 0x74, 0xd3, 0x73, 0x99, 0x1d, 0xa8, 0x48, 0x38, 0x87, 0xb, 0x68, + 0x40, 0x62, 0x95, 0xdf, 0x67, 0xd1, 0x79, 0x24, 0xd8, 0x4e}, + {0xa2, 0x79, 0x98, 0x2e, 0x42, 0x7c, 0x19, 0xf6, 0x47, 0x36, 0xca, + 0x52, 0xd4, 0xdd, 0x4a, 0xa4, 0xcb, 0xac, 0x4e, 0x4b, 0xc1, 0x3f, + 0x41, 0x9b, 0x68, 0x4f, 0xef, 0x7, 0x7d, 0xf8, 0x4e, 0x35}, + {0x75, 0xd9, 0xc5, 0x60, 0x22, 0xb5, 0xe3, 0xfe, 0xb8, 0xb0, 0x41, + 0xeb, 0xfc, 0x2e, 0x35, 0x50, 0x3c, 0x65, 0xf6, 0xa9, 0x30, 0xac, + 0x8, 0x88, 0x6d, 0x23, 0x39, 0x5, 0xd2, 0x92, 0x2d, 0x30}, + }, + }, + { + { + {0x77, 0xf1, 0xe0, 0xe4, 0xb6, 0x6f, 0xbc, 0x2d, 0x93, 0x6a, 0xbd, + 0xa4, 0x29, 0xbf, 0xe1, 0x4, 0xe8, 0xf6, 0x7a, 0x78, 0xd4, 0x66, + 0x19, 0x5e, 0x60, 0xd0, 0x26, 0xb4, 0x5e, 0x5f, 0xdc, 0xe}, + {0x3d, 0x28, 0xa4, 0xbc, 0xa2, 0xc1, 0x13, 0x78, 0xd9, 0x3d, 0x86, + 0xa1, 0x91, 0xf0, 0x62, 0xed, 0x86, 0xfa, 0x68, 0xc2, 0xb8, 0xbc, + 0xc7, 0xae, 0x4c, 0xae, 0x1c, 0x6f, 0xb7, 0xd3, 0xe5, 0x10}, + {0x67, 0x8e, 0xda, 0x53, 0xd6, 0xbf, 0x53, 0x54, 0x41, 0xf6, 0xa9, + 0x24, 0xec, 0x1e, 0xdc, 0xe9, 0x23, 0x8a, 0x57, 0x3, 0x3b, 0x26, + 0x87, 0xbf, 0x72, 0xba, 0x1c, 0x36, 0x51, 0x6c, 0xb4, 0x45}, + }, + { + {0xe4, 0xe3, 0x7f, 0x8a, 0xdd, 0x4d, 0x9d, 0xce, 0x30, 0xe, 0x62, + 0x76, 0x56, 0x64, 0x13, 0xab, 0x58, 0x99, 0xe, 0xb3, 0x7b, 0x4f, + 0x59, 0x4b, 0xdf, 0x29, 0x12, 0x32, 0xef, 0xa, 0x1c, 0x5c}, + {0xa1, 0x7f, 0x4f, 0x31, 0xbf, 0x2a, 0x40, 0xa9, 0x50, 0xf4, 0x8c, + 0x8e, 0xdc, 0xf1, 0x57, 0xe2, 0x84, 0xbe, 0xa8, 0x23, 0x4b, 0xd5, + 0xbb, 0x1d, 0x3b, 0x71, 0xcb, 0x6d, 0xa3, 0xbf, 0x77, 0x21}, + {0x8f, 0xdb, 0x79, 0xfa, 0xbc, 0x1b, 0x8, 0x37, 0xb3, 0x59, 0x5f, + 0xc2, 0x1e, 0x81, 0x48, 0x60, 0x87, 0x24, 0x83, 0x9c, 0x65, 0x76, + 0x7a, 0x8, 0xbb, 0xb5, 0x8a, 0x7d, 0x38, 0x19, 0xe6, 0x4a}, + }, + { + {0x83, 0xfb, 0x5b, 0x98, 0x44, 0x7e, 0x11, 0x61, 0x36, 0x31, 0x96, + 0x71, 0x2a, 0x46, 0xe0, 0xfc, 0x4b, 0x90, 0x25, 0xd4, 0x48, 0x34, + 0xac, 0x83, 0x64, 0x3d, 0xa4, 0x5b, 0xbe, 0x5a, 0x68, 0x75}, + {0x2e, 0xa3, 0x44, 0x53, 0xaa, 0xf6, 0xdb, 0x8d, 0x78, 0x40, 0x1b, + 0xb4, 0xb4, 0xea, 0x88, 0x7d, 0x60, 0xd, 0x13, 0x4a, 0x97, 0xeb, + 0xb0, 0x5e, 0x3, 0x3e, 0xbf, 0x17, 0x1b, 0xd9, 0x0, 0x1a}, + {0xb2, 0xf2, 0x61, 0xeb, 0x33, 0x9, 0x96, 0x6e, 0x52, 0x49, 0xff, + 0xc9, 0xa8, 0xf, 0x3d, 0x54, 0x69, 0x65, 0xf6, 0x7a, 0x10, 0x75, + 0x72, 0xdf, 0xaa, 0xe6, 0xb0, 0x23, 0xb6, 0x29, 0x55, 0x13}, + }, + { + {0xfe, 0x83, 0x2e, 0xe2, 0xbc, 0x16, 0xc7, 0xf5, 0xc1, 0x85, 0x9, + 0xe8, 0x19, 0xeb, 0x2b, 0xb4, 0xae, 0x4a, 0x25, 0x14, 0x37, 0xa6, + 0x9d, 0xec, 0x13, 0xa6, 0x90, 0x15, 0x5, 0xea, 0x72, 0x59}, + {0x18, 0xd5, 0xd1, 0xad, 0xd7, 0xdb, 0xf0, 0x18, 0x11, 0x1f, 0xc1, + 0xcf, 0x88, 0x78, 0x9f, 0x97, 0x9b, 0x75, 0x14, 0x71, 0xf0, 0xe1, + 0x32, 0x87, 0x1, 0x3a, 0xca, 0x65, 0x1a, 0xb8, 0xb5, 0x79}, + {0x11, 0x78, 0x8f, 0xdc, 0x20, 0xac, 0xd4, 0xf, 0xa8, 0x4f, 0x4d, + 0xac, 0x94, 0xd2, 0x9a, 0x9a, 0x34, 0x4, 0x36, 0xb3, 0x64, 0x2d, + 0x1b, 0xc0, 0xdb, 0x3b, 0x5f, 0x90, 0x95, 0x9c, 0x7e, 0x4f}, + }, + { + {0xfe, 0x99, 0x52, 0x35, 0x3d, 0x44, 0xc8, 0x71, 0xd7, 0xea, 0xeb, + 0xdb, 0x1c, 0x3b, 0xcd, 0x8b, 0x66, 0x94, 0xa4, 0xf1, 0x9e, 0x49, + 0x92, 0x80, 0xc8, 0xad, 0x44, 0xa1, 0xc4, 0xee, 0x42, 0x19}, + {0x2e, 0x30, 0x81, 0x57, 0xbc, 0x4b, 0x67, 0x62, 0xf, 0xdc, 0xad, + 0x89, 0x39, 0xf, 0x52, 0xd8, 0xc6, 0xd9, 0xfb, 0x53, 0xae, 0x99, + 0x29, 0x8c, 0x4c, 0x8e, 0x63, 0x2e, 0xd9, 0x3a, 0x99, 0x31}, + {0x92, 0x49, 0x23, 0xae, 0x19, 0x53, 0xac, 0x7d, 0x92, 0x3e, 0xea, + 0xc, 0x91, 0x3d, 0x1b, 0x2c, 0x22, 0x11, 0x3c, 0x25, 0x94, 0xe4, + 0x3c, 0x55, 0x75, 0xca, 0xf9, 0x4e, 0x31, 0x65, 0xa, 0x2a}, + }, + { + {0x3a, 0x79, 0x1c, 0x3c, 0xcd, 0x1a, 0x36, 0xcf, 0x3b, 0xbc, 0x35, + 0x5a, 0xac, 0xbc, 0x9e, 0x2f, 0xab, 0xa6, 0xcd, 0xa8, 0xe9, 0x60, + 0xe8, 0x60, 0x13, 0x1a, 0xea, 0x6d, 0x9b, 0xc3, 0x5d, 0x5}, + {0xc2, 0x27, 0xf9, 0xf7, 0x7f, 0x93, 0xb7, 0x2d, 0x35, 0xa6, 0xd0, + 0x17, 0x6, 0x1f, 0x74, 0xdb, 0x76, 0xaf, 0x55, 0x11, 0xa2, 0xf3, + 0x82, 0x59, 0xed, 0x2d, 0x7c, 0x64, 0x18, 0xe2, 0xf6, 0x4c}, + {0xb6, 0x5b, 0x8d, 0xc2, 0x7c, 0x22, 0x19, 0xb1, 0xab, 0xff, 0x4d, + 0x77, 0xbc, 0x4e, 0xe2, 0x7, 0x89, 0x2c, 0xa3, 0xe4, 0xce, 0x78, + 0x3c, 0xa8, 0xb6, 0x24, 0xaa, 0x10, 0x77, 0x30, 0x1a, 0x12}, + }, + { + {0xc9, 0x83, 0x74, 0xc7, 0x3e, 0x71, 0x59, 0xd6, 0xaf, 0x96, 0x2b, + 0xb8, 0x77, 0xe0, 0xbf, 0x88, 0xd3, 0xbc, 0x97, 0x10, 0x23, 0x28, + 0x9e, 0x28, 0x9b, 0x3a, 0xed, 0x6c, 0x4a, 0xb9, 0x7b, 0x52}, + {0x97, 0x4a, 0x3, 0x9f, 0x5e, 0x5d, 0xdb, 0xe4, 0x2d, 0xbc, 0x34, + 0x30, 0x9, 0xfc, 0x53, 0xe1, 0xb1, 0xd3, 0x51, 0x95, 0x91, 0x46, + 0x5, 0x46, 0x2d, 0xe5, 0x40, 0x7a, 0x6c, 0xc7, 0x3f, 0x33}, + {0x2e, 0x48, 0x5b, 0x99, 0x2a, 0x99, 0x3d, 0x56, 0x1, 0x38, 0x38, + 0x6e, 0x7c, 0xd0, 0x5, 0x34, 0xe5, 0xd8, 0x64, 0x2f, 0xde, 0x35, + 0x50, 0x48, 0xf7, 0xa9, 0xa7, 0x20, 0x9b, 0x6, 0x89, 0x6b}, + }, + { + {0x77, 0xdb, 0xc7, 0xb5, 0x8c, 0xfa, 0x82, 0x40, 0x55, 0xc1, 0x34, + 0xc7, 0xf8, 0x86, 0x86, 0x6, 0x7e, 0xa5, 0xe7, 0xf6, 0xd9, 0xc8, + 0xe6, 0x29, 0xcf, 0x9b, 0x63, 0xa7, 0x8, 0xd3, 0x73, 0x4}, + {0xd, 0x22, 0x70, 0x62, 0x41, 0xa0, 0x2a, 0x81, 0x4e, 0x5b, 0x24, + 0xf9, 0xfa, 0x89, 0x5a, 0x99, 0x5, 0xef, 0x72, 0x50, 0xce, 0xc4, + 0xad, 0xff, 0x73, 0xeb, 0x73, 0xaa, 0x3, 0x21, 0xbc, 0x23}, + {0x5, 0x9e, 0x58, 0x3, 0x26, 0x79, 0xee, 0xca, 0x92, 0xc4, 0xdc, + 0x46, 0x12, 0x42, 0x4b, 0x2b, 0x4f, 0xa9, 0x1, 0xe6, 0x74, 0xef, + 0xa1, 0x2, 0x1a, 0x34, 0x4, 0xde, 0xbf, 0x73, 0x2f, 0x10}, + }, + }, + { + { + {0x9a, 0x1c, 0x51, 0xb5, 0xe0, 0xda, 0xb4, 0xa2, 0x6, 0xff, 0xff, + 0x2b, 0x29, 0x60, 0xc8, 0x7a, 0x34, 0x42, 0x50, 0xf5, 0x5d, 0x37, + 0x1f, 0x98, 0x2d, 0xa1, 0x4e, 0xda, 0x25, 0xd7, 0x6b, 0x3f}, + {0xc6, 0x45, 0x57, 0x7f, 0xab, 0xb9, 0x18, 0xeb, 0x90, 0xc6, 0x87, + 0x57, 0xee, 0x8a, 0x3a, 0x2, 0xa9, 0xaf, 0xf7, 0x2d, 0xda, 0x12, + 0x27, 0xb7, 0x3d, 0x1, 0x5c, 0xea, 0x25, 0x7d, 0x59, 0x36}, + {0xac, 0x58, 0x60, 0x10, 0x7b, 0x8d, 0x4d, 0x73, 0x5f, 0x90, 0xc6, + 0x6f, 0x9e, 0x57, 0x40, 0xd9, 0x2d, 0x93, 0x2, 0x92, 0xf9, 0xf8, + 0x66, 0x64, 0xd0, 0xd6, 0x60, 0xda, 0x19, 0xcc, 0x7e, 0x7b}, + }, + { + {0x9b, 0xfa, 0x7c, 0xa7, 0x51, 0x4a, 0xae, 0x6d, 0x50, 0x86, 0xa3, + 0xe7, 0x54, 0x36, 0x26, 0x82, 0xdb, 0x82, 0x2d, 0x8f, 0xcd, 0xff, + 0xbb, 0x9, 0xba, 0xca, 0xf5, 0x1b, 0x66, 0xdc, 0xbe, 0x3}, + {0xd, 0x69, 0x5c, 0x69, 0x3c, 0x37, 0xc2, 0x78, 0x6e, 0x90, 0x42, + 0x6, 0x66, 0x2e, 0x25, 0xdd, 0xd2, 0x2b, 0xe1, 0x4a, 0x44, 0x44, + 0x1d, 0x95, 0x56, 0x39, 0x74, 0x1, 0x76, 0xad, 0x35, 0x42}, + {0xf5, 0x75, 0x89, 0x7, 0xd, 0xcb, 0x58, 0x62, 0x98, 0xf2, 0x89, + 0x91, 0x54, 0x42, 0x29, 0x49, 0xe4, 0x6e, 0xe3, 0xe2, 0x23, 0xb4, + 0xca, 0xa0, 0xa1, 0x66, 0xf0, 0xcd, 0xb0, 0xe2, 0x7c, 0xe}, + }, + { + {0xf9, 0x70, 0x4b, 0xd9, 0xdf, 0xfe, 0xa6, 0xfe, 0x2d, 0xba, 0xfc, + 0xc1, 0x51, 0xc0, 0x30, 0xf1, 0x89, 0xab, 0x2f, 0x7f, 0x7e, 0xd4, + 0x82, 0x48, 0xb5, 0xee, 0xec, 0x8a, 0x13, 0x56, 0x52, 0x61}, + {0xa3, 0x85, 0x8c, 0xc4, 0x3a, 0x64, 0x94, 0xc4, 0xad, 0x39, 0x61, + 0x3c, 0xf4, 0x1d, 0x36, 0xfd, 0x48, 0x4d, 0xe9, 0x3a, 0xdd, 0x17, + 0xdb, 0x9, 0x4a, 0x67, 0xb4, 0x8f, 0x5d, 0xa, 0x6e, 0x66}, + {0xd, 0xcb, 0x70, 0x48, 0x4e, 0xf6, 0xbb, 0x2a, 0x6b, 0x8b, 0x45, + 0xaa, 0xf0, 0xbc, 0x65, 0xcd, 0x5d, 0x98, 0xe8, 0x75, 0xba, 0x4e, + 0xbe, 0x9a, 0xe4, 0xde, 0x14, 0xd5, 0x10, 0xc8, 0xb, 0x7f}, + }, + { + {0xa0, 0x13, 0x72, 0x73, 0xad, 0x9d, 0xac, 0x83, 0x98, 0x2e, 0xf7, + 0x2e, 0xba, 0xf8, 0xf6, 0x9f, 0x57, 0x69, 0xec, 0x43, 0xdd, 0x2e, + 0x1e, 0x31, 0x75, 0xab, 0xc5, 0xde, 0x7d, 0x90, 0x3a, 0x1d}, + {0x6f, 0x13, 0xf4, 0x26, 0xa4, 0x6b, 0x0, 0xb9, 0x35, 0x30, 0xe0, + 0x57, 0x9e, 0x36, 0x67, 0x8d, 0x28, 0x3c, 0x46, 0x4f, 0xd9, 0xdf, + 0xc8, 0xcb, 0xf5, 0xdb, 0xee, 0xf8, 0xbc, 0x8d, 0x1f, 0xd}, + {0xdc, 0x81, 0xd0, 0x3e, 0x31, 0x93, 0x16, 0xba, 0x80, 0x34, 0x1b, + 0x85, 0xad, 0x9f, 0x32, 0x29, 0xcb, 0x21, 0x3, 0x3, 0x3c, 0x1, + 0x28, 0x1, 0xe3, 0xfd, 0x1b, 0xa3, 0x44, 0x1b, 0x1, 0x0}, + }, + { + {0x5c, 0xa7, 0xa, 0x6a, 0x69, 0x1f, 0x56, 0x16, 0x6a, 0xbd, 0x52, + 0x58, 0x5c, 0x72, 0xbf, 0xc1, 0xad, 0x66, 0x79, 0x9a, 0x7f, 0xdd, + 0xa8, 0x11, 0x26, 0x10, 0x85, 0xd2, 0xa2, 0x88, 0xd9, 0x63}, + {0xc, 0x6c, 0xc6, 0x3f, 0x6c, 0xa0, 0xdf, 0x3f, 0xd2, 0xd, 0xd6, + 0x4d, 0x8e, 0xe3, 0x40, 0x5d, 0x71, 0x4d, 0x8e, 0x26, 0x38, 0x8b, + 0xe3, 0x7a, 0xe1, 0x57, 0x83, 0x6e, 0x91, 0x8d, 0xc4, 0x3a}, + {0x2e, 0x23, 0xbd, 0xaf, 0x53, 0x7, 0x12, 0x0, 0x83, 0xf6, 0xd8, + 0xfd, 0xb8, 0xce, 0x2b, 0xe9, 0x91, 0x2b, 0xe7, 0x84, 0xb3, 0x69, + 0x16, 0xf8, 0x66, 0xa0, 0x68, 0x23, 0x2b, 0xd5, 0xfa, 0x33}, + }, + { + {0xe8, 0xcf, 0x22, 0xc4, 0xd0, 0xc8, 0x2c, 0x8d, 0xcb, 0x3a, 0xa1, + 0x5, 0x7b, 0x4f, 0x2b, 0x7, 0x6f, 0xa5, 0xf6, 0xec, 0xe6, 0xb6, + 0xfe, 0xa3, 0xe2, 0x71, 0xa, 0xb9, 0xcc, 0x55, 0xc3, 0x3c}, + {0x16, 0x1e, 0xe4, 0xc5, 0xc6, 0x49, 0x6, 0x54, 0x35, 0x77, 0x3f, + 0x33, 0x30, 0x64, 0xf8, 0xa, 0x46, 0xe7, 0x5, 0xf3, 0xd2, 0xfc, + 0xac, 0xb2, 0xa7, 0xdc, 0x56, 0xa2, 0x29, 0xf4, 0xc0, 0x16}, + {0x31, 0x91, 0x3e, 0x90, 0x43, 0x94, 0xb6, 0xe9, 0xce, 0x37, 0x56, + 0x7a, 0xcb, 0x94, 0xa4, 0xb8, 0x44, 0x92, 0xba, 0xba, 0xa4, 0xd1, + 0x7c, 0xc8, 0x68, 0x75, 0xae, 0x6b, 0x42, 0xaf, 0x1e, 0x63}, + }, + { + {0xe8, 0xd, 0x70, 0xa3, 0xb9, 0x75, 0xd9, 0x47, 0x52, 0x5, 0xf8, + 0xe2, 0xfb, 0xc5, 0x80, 0x72, 0xe1, 0x5d, 0xe4, 0x32, 0x27, 0x8f, + 0x65, 0x53, 0xb5, 0x80, 0x5f, 0x66, 0x7f, 0x2c, 0x1f, 0x43}, + {0x9f, 0xfe, 0x66, 0xda, 0x10, 0x4, 0xe9, 0xb3, 0xa6, 0xe5, 0x16, + 0x6c, 0x52, 0x4b, 0xdd, 0x85, 0x83, 0xbf, 0xf9, 0x1e, 0x61, 0x97, + 0x3d, 0xbc, 0xb5, 0x19, 0xa9, 0x1e, 0x8b, 0x64, 0x99, 0x55}, + {0x19, 0x7b, 0x8f, 0x85, 0x44, 0x63, 0x2, 0xd6, 0x4a, 0x51, 0xea, + 0xa1, 0x2f, 0x35, 0xab, 0x14, 0xd7, 0xa9, 0x90, 0x20, 0x1a, 0x44, + 0x0, 0x89, 0x26, 0x3b, 0x25, 0x91, 0x5f, 0x71, 0x4, 0x7b}, + }, + { + {0xc6, 0xba, 0xe6, 0xc4, 0x80, 0xc2, 0x76, 0xb3, 0xb, 0x9b, 0x1d, + 0x6d, 0xdd, 0xd3, 0xe, 0x97, 0x44, 0xf9, 0xb, 0x45, 0x58, 0x95, + 0x9a, 0xb0, 0x23, 0xe2, 0xcd, 0x57, 0xfa, 0xac, 0xd0, 0x48}, + {0x43, 0xae, 0xf6, 0xac, 0x28, 0xbd, 0xed, 0x83, 0xb4, 0x7a, 0x5c, + 0x7d, 0x8b, 0x7c, 0x35, 0x86, 0x44, 0x2c, 0xeb, 0xb7, 0x69, 0x47, + 0x40, 0xc0, 0x3f, 0x58, 0xf6, 0xc2, 0xf5, 0x7b, 0xb3, 0x59}, + {0x71, 0xe6, 0xab, 0x7d, 0xe4, 0x26, 0xf, 0xb6, 0x37, 0x3a, 0x2f, + 0x62, 0x97, 0xa1, 0xd1, 0xf1, 0x94, 0x3, 0x96, 0xe9, 0x7e, 0xce, + 0x8, 0x42, 0xdb, 0x3b, 0x6d, 0x33, 0x91, 0x41, 0x23, 0x16}, + }, + }, + { + { + {0x40, 0x86, 0xf3, 0x1f, 0xd6, 0x9c, 0x49, 0xdd, 0xa0, 0x25, 0x36, + 0x6, 0xc3, 0x9b, 0xcd, 0x29, 0xc3, 0x3d, 0xd7, 0x3d, 0x2, 0xd8, + 0xe2, 0x51, 0x31, 0x92, 0x3b, 0x20, 0x7a, 0x70, 0x25, 0x4a}, + {0xf6, 0x7f, 0x26, 0xf6, 0xde, 0x99, 0xe4, 0xb9, 0x43, 0x8, 0x2c, + 0x74, 0x7b, 0xca, 0x72, 0x77, 0xb1, 0xf2, 0xa4, 0xe9, 0x3f, 0x15, + 0xa0, 0x23, 0x6, 0x50, 0xd0, 0xd5, 0xec, 0xdf, 0xdf, 0x2c}, + {0x6a, 0xed, 0xf6, 0x53, 0x8a, 0x66, 0xb7, 0x2a, 0xa1, 0x70, 0xd1, + 0x1d, 0x58, 0x42, 0x42, 0x30, 0x61, 0x1, 0xe2, 0x3a, 0x4c, 0x14, + 0x0, 0x40, 0xfc, 0x49, 0x8e, 0x24, 0x6d, 0x89, 0x21, 0x57}, + }, + { + {0x4e, 0xda, 0xd0, 0xa1, 0x91, 0x50, 0x5d, 0x28, 0x8, 0x3e, 0xfe, + 0xb5, 0xa7, 0x6f, 0xaa, 0x4b, 0xb3, 0x93, 0x93, 0xe1, 0x7c, 0x17, + 0xe5, 0x63, 0xfd, 0x30, 0xb0, 0xc4, 0xaf, 0x35, 0xc9, 0x3}, + {0xae, 0x1b, 0x18, 0xfd, 0x17, 0x55, 0x6e, 0xb, 0xb4, 0x63, 0xb9, + 0x2b, 0x9f, 0x62, 0x22, 0x90, 0x25, 0x46, 0x6, 0x32, 0xe9, 0xbc, + 0x9, 0x55, 0xda, 0x13, 0x3c, 0xf6, 0x74, 0xdd, 0x8e, 0x57}, + {0x3d, 0xc, 0x2b, 0x49, 0xc6, 0x76, 0x72, 0x99, 0xfc, 0x5, 0xe2, + 0xdf, 0xc4, 0xc2, 0xcc, 0x47, 0x3c, 0x3a, 0x62, 0xdd, 0x84, 0x9b, + 0xd2, 0xdc, 0xa2, 0xc7, 0x88, 0x2, 0x59, 0xab, 0xc2, 0x3e}, + }, + { + {0xcb, 0xd1, 0x32, 0xae, 0x9, 0x3a, 0x21, 0xa7, 0xd5, 0xc2, 0xf5, + 0x40, 0xdf, 0x87, 0x2b, 0xf, 0x29, 0xab, 0x1e, 0xe8, 0xc6, 0xa4, + 0xae, 0xb, 0x5e, 0xac, 0xdb, 0x6a, 0x6c, 0xf6, 0x1b, 0xe}, + {0xb9, 0x7b, 0xd8, 0xe4, 0x7b, 0xd2, 0xa0, 0xa1, 0xed, 0x1a, 0x39, + 0x61, 0xeb, 0x4d, 0x8b, 0xa9, 0x83, 0x9b, 0xcb, 0x73, 0xd0, 0xdd, + 0xa0, 0x99, 0xce, 0xca, 0xf, 0x20, 0x5a, 0xc2, 0xd5, 0x2d}, + {0x7e, 0x88, 0x2c, 0x79, 0xe9, 0xd5, 0xab, 0xe2, 0x5d, 0x6d, 0x92, + 0xcb, 0x18, 0x0, 0x2, 0x1a, 0x1e, 0x5f, 0xae, 0xba, 0xcd, 0x69, + 0xba, 0xbf, 0x5f, 0x8f, 0xe8, 0x5a, 0xb3, 0x48, 0x5, 0x73}, + }, + { + {0x34, 0xe3, 0xd6, 0xa1, 0x4b, 0x9, 0x5b, 0x80, 0x19, 0x3f, 0x35, + 0x9, 0x77, 0xf1, 0x3e, 0xbf, 0x2b, 0x70, 0x22, 0x6, 0xcb, 0x6, + 0x3f, 0x42, 0xdd, 0x45, 0x78, 0xd8, 0x77, 0x22, 0x5a, 0x58}, + {0xee, 0xb8, 0xa8, 0xcb, 0xa3, 0x51, 0x35, 0xc4, 0x16, 0x5f, 0x11, + 0xb2, 0x1d, 0x6f, 0xa2, 0x65, 0x50, 0x38, 0x8c, 0xab, 0x52, 0x4f, + 0xf, 0x76, 0xca, 0xb8, 0x1d, 0x41, 0x3b, 0x44, 0x43, 0x30}, + {0x62, 0x89, 0xd4, 0x33, 0x82, 0x5f, 0x8a, 0xa1, 0x7f, 0x25, 0x78, + 0xec, 0xb5, 0xc4, 0x98, 0x66, 0xff, 0x41, 0x3e, 0x37, 0xa5, 0x6f, + 0x8e, 0xa7, 0x1f, 0x98, 0xef, 0x50, 0x89, 0x27, 0x56, 0x76}, + }, + { + {0x9d, 0xcf, 0x86, 0xea, 0xa3, 0x73, 0x70, 0xe1, 0xdc, 0x5f, 0x15, + 0x7, 0xb7, 0xfb, 0x8c, 0x3a, 0x8e, 0x8a, 0x83, 0x31, 0xfc, 0xe7, + 0x53, 0x48, 0x16, 0xf6, 0x13, 0xb6, 0x84, 0xf4, 0xbb, 0x28}, + {0xc0, 0xc8, 0x1f, 0xd5, 0x59, 0xcf, 0xc3, 0x38, 0xf2, 0xb6, 0x6, + 0x5, 0xfd, 0xd2, 0xed, 0x9b, 0x8f, 0xe, 0x57, 0xab, 0x9f, 0x10, + 0xbf, 0x26, 0xa6, 0x46, 0xb8, 0xc1, 0xa8, 0x60, 0x41, 0x3f}, + {0x7c, 0x6c, 0x13, 0x6f, 0x5c, 0x2f, 0x61, 0xf2, 0xbe, 0x11, 0xdd, + 0xf6, 0x7, 0xd1, 0xea, 0xaf, 0x33, 0x6f, 0xde, 0x13, 0xd2, 0x9a, + 0x7e, 0x52, 0x5d, 0xf7, 0x88, 0x81, 0x35, 0xcb, 0x79, 0x1e}, + }, + { + {0x81, 0x81, 0xe0, 0xf5, 0xd8, 0x53, 0xe9, 0x77, 0xd9, 0xde, 0x9d, + 0x29, 0x44, 0xc, 0xa5, 0x84, 0xe5, 0x25, 0x45, 0x86, 0xc, 0x2d, + 0x6c, 0xdc, 0xf4, 0xf2, 0xd1, 0x39, 0x2d, 0xb5, 0x8a, 0x47}, + {0xf1, 0xe3, 0xf7, 0xee, 0xc3, 0x36, 0x34, 0x1, 0xf8, 0x10, 0x9e, + 0xfe, 0x7f, 0x6a, 0x8b, 0x82, 0xfc, 0xde, 0xf9, 0xbc, 0xe5, 0x8, + 0xf9, 0x7f, 0x31, 0x38, 0x3b, 0x3a, 0x1b, 0x95, 0xd7, 0x65}, + {0x59, 0xd1, 0x52, 0x92, 0xd3, 0xa4, 0xa6, 0x66, 0x7, 0xc8, 0x1a, + 0x87, 0xbc, 0xe1, 0xdd, 0xe5, 0x6f, 0xc9, 0xc1, 0xa6, 0x40, 0x6b, + 0x2c, 0xb8, 0x14, 0x22, 0x21, 0x1a, 0x41, 0x7a, 0xd8, 0x16}, + }, + { + {0x83, 0x5, 0x4e, 0xd5, 0xe2, 0xd5, 0xa4, 0xfb, 0xfa, 0x99, 0xbd, + 0x2e, 0xd7, 0xaf, 0x1f, 0xe2, 0x8f, 0x77, 0xe9, 0x6e, 0x73, 0xc2, + 0x7a, 0x49, 0xde, 0x6d, 0x5a, 0x7a, 0x57, 0xb, 0x99, 0x1f}, + {0x15, 0x62, 0x6, 0x42, 0x5a, 0x7e, 0xbd, 0xb3, 0xc1, 0x24, 0x5a, + 0xc, 0xcd, 0xe3, 0x9b, 0x87, 0xb7, 0x94, 0xf9, 0xd6, 0xb1, 0x5d, + 0xc0, 0x57, 0xa6, 0x8c, 0xf3, 0x65, 0x81, 0x7c, 0xf8, 0x28}, + {0xd6, 0xf7, 0xe8, 0x1b, 0xad, 0x4e, 0x34, 0xa3, 0x8f, 0x79, 0xea, + 0xac, 0xeb, 0x50, 0x1e, 0x7d, 0x52, 0xe0, 0xd, 0x52, 0x9e, 0x56, + 0xc6, 0x77, 0x3e, 0x6d, 0x4d, 0x53, 0xe1, 0x2f, 0x88, 0x45}, + }, + { + {0xe4, 0x6f, 0x3c, 0x94, 0x29, 0x99, 0xac, 0xd8, 0xa2, 0x92, 0x83, + 0xa3, 0x61, 0xf1, 0xf9, 0xb5, 0xf3, 0x9a, 0xc8, 0xbe, 0x13, 0xdb, + 0x99, 0x26, 0x74, 0xf0, 0x5, 0xe4, 0x3c, 0x84, 0xcf, 0x7d}, + {0xd6, 0x83, 0x79, 0x75, 0x5d, 0x34, 0x69, 0x66, 0xa6, 0x11, 0xaa, + 0x17, 0x11, 0xed, 0xb6, 0x62, 0x8f, 0x12, 0x5e, 0x98, 0x57, 0x18, + 0xdd, 0x7d, 0xdd, 0xf6, 0x26, 0xf6, 0xb8, 0xe5, 0x8f, 0x68}, + {0xc0, 0x32, 0x47, 0x4a, 0x48, 0xd6, 0x90, 0x6c, 0x99, 0x32, 0x56, + 0xca, 0xfd, 0x43, 0x21, 0xd5, 0xe1, 0xc6, 0x5d, 0x91, 0xc3, 0x28, + 0xbe, 0xb3, 0x1b, 0x19, 0x27, 0x73, 0x7e, 0x68, 0x39, 0x67}, + }, + }, + { + { + {0xc0, 0x1a, 0xc, 0xc8, 0x9d, 0xcc, 0x6d, 0xa6, 0x36, 0xa4, 0x38, + 0x1b, 0xf4, 0x5c, 0xa0, 0x97, 0xc6, 0xd7, 0xdb, 0x95, 0xbe, 0xf3, + 0xeb, 0xa7, 0xab, 0x7d, 0x7e, 0x8d, 0xf6, 0xb8, 0xa0, 0x7d}, + {0xa6, 0x75, 0x56, 0x38, 0x14, 0x20, 0x78, 0xef, 0xe8, 0xa9, 0xfd, + 0xaa, 0x30, 0x9f, 0x64, 0xa2, 0xcb, 0xa8, 0xdf, 0x5c, 0x50, 0xeb, + 0xd1, 0x4c, 0xb3, 0xc0, 0x4d, 0x1d, 0xba, 0x5a, 0x11, 0x46}, + {0x76, 0xda, 0xb5, 0xc3, 0x53, 0x19, 0xf, 0xd4, 0x9b, 0x9e, 0x11, + 0x21, 0x73, 0x6f, 0xac, 0x1d, 0x60, 0x59, 0xb2, 0xfe, 0x21, 0x60, + 0xcc, 0x3, 0x4b, 0x4b, 0x67, 0x83, 0x7e, 0x88, 0x5f, 0x5a}, + }, + { + {0xb9, 0x43, 0xa6, 0xa0, 0xd3, 0x28, 0x96, 0x9e, 0x64, 0x20, 0xc3, + 0xe6, 0x0, 0xcb, 0xc3, 0xb5, 0x32, 0xec, 0x2d, 0x7c, 0x89, 0x2, + 0x53, 0x9b, 0xc, 0xc7, 0xd1, 0xd5, 0xe2, 0x7a, 0xe3, 0x43}, + {0x11, 0x3d, 0xa1, 0x70, 0xcf, 0x1, 0x63, 0x8f, 0xc4, 0xd0, 0xd, + 0x35, 0x15, 0xb8, 0xce, 0xcf, 0x7e, 0xa4, 0xbc, 0xa4, 0xd4, 0x97, + 0x2, 0xf7, 0x34, 0x14, 0x4d, 0xe4, 0x56, 0xb6, 0x69, 0x36}, + {0x33, 0xe1, 0xa6, 0xed, 0x6, 0x3f, 0x7e, 0x38, 0xc0, 0x3a, 0xa1, + 0x99, 0x51, 0x1d, 0x30, 0x67, 0x11, 0x38, 0x26, 0x36, 0xf8, 0xd8, + 0x5a, 0xbd, 0xbe, 0xe9, 0xd5, 0x4f, 0xcd, 0xe6, 0x21, 0x6a}, + }, + { + {0xe3, 0xb2, 0x99, 0x66, 0x12, 0x29, 0x41, 0xef, 0x1, 0x13, 0x8d, + 0x70, 0x47, 0x8, 0xd3, 0x71, 0xbd, 0xb0, 0x82, 0x11, 0xd0, 0x32, + 0x54, 0x32, 0x36, 0x8b, 0x1e, 0x0, 0x7, 0x1b, 0x37, 0x45}, + {0x5f, 0xe6, 0x46, 0x30, 0xa, 0x17, 0xc6, 0xf1, 0x24, 0x35, 0xd2, + 0x0, 0x2a, 0x2a, 0x71, 0x58, 0x55, 0xb7, 0x82, 0x8c, 0x3c, 0xbd, + 0xdb, 0x69, 0x57, 0xff, 0x95, 0xa1, 0xf1, 0xf9, 0x6b, 0x58}, + {0xb, 0x79, 0xf8, 0x5e, 0x8d, 0x8, 0xdb, 0xa6, 0xe5, 0x37, 0x9, + 0x61, 0xdc, 0xf0, 0x78, 0x52, 0xb8, 0x6e, 0xa1, 0x61, 0xd2, 0x49, + 0x3, 0xac, 0x79, 0x21, 0xe5, 0x90, 0x37, 0xb0, 0xaf, 0xe}, + }, + { + {0x1d, 0xae, 0x75, 0xf, 0x5e, 0x80, 0x40, 0x51, 0x30, 0xcc, 0x62, + 0x26, 0xe3, 0xfb, 0x2, 0xec, 0x6d, 0x39, 0x92, 0xea, 0x1e, 0xdf, + 0xeb, 0x2c, 0xb3, 0x5b, 0x43, 0xc5, 0x44, 0x33, 0xae, 0x44}, + {0x2f, 0x4, 0x48, 0x37, 0xc1, 0x55, 0x5, 0x96, 0x11, 0xaa, 0xb, + 0x82, 0xe6, 0x41, 0x9a, 0x21, 0xc, 0x6d, 0x48, 0x73, 0x38, 0xf7, + 0x81, 0x1c, 0x61, 0xc6, 0x2, 0x5a, 0x67, 0xcc, 0x9a, 0x30}, + {0xee, 0x43, 0xa5, 0xbb, 0xb9, 0x89, 0xf2, 0x9c, 0x42, 0x71, 0xc9, + 0x5a, 0x9d, 0xe, 0x76, 0xf3, 0xaa, 0x60, 0x93, 0x4f, 0xc6, 0xe5, + 0x82, 0x1d, 0x8f, 0x67, 0x94, 0x7f, 0x1b, 0x22, 0xd5, 0x62}, + }, + { + {0x3c, 0x7a, 0xf7, 0x3a, 0x26, 0xd4, 0x85, 0x75, 0x4d, 0x14, 0xe9, + 0xfe, 0x11, 0x7b, 0xae, 0xdf, 0x3d, 0x19, 0xf7, 0x59, 0x80, 0x70, + 0x6, 0xa5, 0x37, 0x20, 0x92, 0x83, 0x53, 0x9a, 0xf2, 0x14}, + {0x6d, 0x93, 0xd0, 0x18, 0x9c, 0x29, 0x4c, 0x52, 0xc, 0x1a, 0xc, + 0x8a, 0x6c, 0xb5, 0x6b, 0xc8, 0x31, 0x86, 0x4a, 0xdb, 0x2e, 0x5, + 0x75, 0xa3, 0x62, 0x45, 0x75, 0xbc, 0xe4, 0xfd, 0xe, 0x5c}, + {0xf5, 0xd7, 0xb2, 0x25, 0xdc, 0x7e, 0x71, 0xdf, 0x40, 0x30, 0xb5, + 0x99, 0xdb, 0x70, 0xf9, 0x21, 0x62, 0x4c, 0xed, 0xc3, 0xb7, 0x34, + 0x92, 0xda, 0x3e, 0x9, 0xee, 0x7b, 0x5c, 0x36, 0x72, 0x5e}, + }, + { + {0x3e, 0xb3, 0x8, 0x2f, 0x6, 0x39, 0x93, 0x7d, 0xbe, 0x32, 0x9f, + 0xdf, 0xe5, 0x59, 0x96, 0x5b, 0xfd, 0xbd, 0x9e, 0x1f, 0xad, 0x3d, + 0xff, 0xac, 0xb7, 0x49, 0x73, 0xcb, 0x55, 0x5, 0xb2, 0x70}, + {0x7f, 0x21, 0x71, 0x45, 0x7, 0xfc, 0x5b, 0x57, 0x5b, 0xd9, 0x94, + 0x6, 0x5d, 0x67, 0x79, 0x37, 0x33, 0x1e, 0x19, 0xf4, 0xbb, 0x37, + 0xa, 0x9a, 0xbc, 0xea, 0xb4, 0x47, 0x4c, 0x10, 0xf1, 0x77}, + {0x4c, 0x2c, 0x11, 0x55, 0xc5, 0x13, 0x51, 0xbe, 0xcd, 0x1f, 0x88, + 0x9a, 0x3a, 0x42, 0x88, 0x66, 0x47, 0x3b, 0x50, 0x5e, 0x85, 0x77, + 0x66, 0x44, 0x4a, 0x40, 0x6, 0x4a, 0x8f, 0x39, 0x34, 0xe}, + }, + { + {0x28, 0x19, 0x4b, 0x3e, 0x9, 0xb, 0x93, 0x18, 0x40, 0xf6, 0xf3, + 0x73, 0xe, 0xe1, 0xe3, 0x7d, 0x6f, 0x5d, 0x39, 0x73, 0xda, 0x17, + 0x32, 0xf4, 0x3e, 0x9c, 0x37, 0xca, 0xd6, 0xde, 0x8a, 0x6f}, + {0xe8, 0xbd, 0xce, 0x3e, 0xd9, 0x22, 0x7d, 0xb6, 0x7, 0x2f, 0x82, + 0x27, 0x41, 0xe8, 0xb3, 0x9, 0x8d, 0x6d, 0x5b, 0xb0, 0x1f, 0xa6, + 0x3f, 0x74, 0x72, 0x23, 0x36, 0x8a, 0x36, 0x5, 0x54, 0x5e}, + {0x9a, 0xb2, 0xb7, 0xfd, 0x3d, 0x12, 0x40, 0xe3, 0x91, 0xb2, 0x1a, + 0xa2, 0xe1, 0x97, 0x7b, 0x48, 0x9e, 0x94, 0xe6, 0xfd, 0x2, 0x7d, + 0x96, 0xf9, 0x97, 0xde, 0xd3, 0xc8, 0x2e, 0xe7, 0xd, 0x78}, + }, + { + {0x72, 0x27, 0xf4, 0x0, 0xf3, 0xea, 0x1f, 0x67, 0xaa, 0x41, 0x8c, + 0x2a, 0x2a, 0xeb, 0x72, 0x8f, 0x92, 0x32, 0x37, 0x97, 0xd7, 0x7f, + 0xa1, 0x29, 0xa6, 0x87, 0xb5, 0x32, 0xad, 0xc6, 0xef, 0x1d}, + {0xbc, 0xe7, 0x9a, 0x8, 0x45, 0x85, 0xe2, 0xa, 0x6, 0x4d, 0x7f, + 0x1c, 0xcf, 0xde, 0x8d, 0x38, 0xb8, 0x11, 0x48, 0xa, 0x51, 0x15, + 0xac, 0x38, 0xe4, 0x8c, 0x92, 0x71, 0xf6, 0x8b, 0xb2, 0xe}, + {0xa7, 0x95, 0x51, 0xef, 0x1a, 0xbe, 0x5b, 0xaf, 0xed, 0x15, 0x7b, + 0x91, 0x77, 0x12, 0x8c, 0x14, 0x2e, 0xda, 0xe5, 0x7a, 0xfb, 0xf7, + 0x91, 0x29, 0x67, 0x28, 0xdd, 0xf8, 0x1b, 0x20, 0x7d, 0x46}, + }, + }, + { + { + {0xa9, 0xe7, 0x7a, 0x56, 0xbd, 0xf4, 0x1e, 0xbc, 0xbd, 0x98, 0x44, + 0xd6, 0xb2, 0x4c, 0x62, 0x3f, 0xc8, 0x4e, 0x1f, 0x2c, 0xd2, 0x64, + 0x10, 0xe4, 0x1, 0x40, 0x38, 0xba, 0xa5, 0xc5, 0xf9, 0x2e}, + {0xad, 0x4f, 0xef, 0x74, 0x9a, 0x91, 0xfe, 0x95, 0xa2, 0x8, 0xa3, + 0xf6, 0xec, 0x7b, 0x82, 0x3a, 0x1, 0x7b, 0xa4, 0x9, 0xd3, 0x1, + 0x4e, 0x96, 0x97, 0xc7, 0xa3, 0x5b, 0x4f, 0x3c, 0xc4, 0x71}, + {0xcd, 0x74, 0x9e, 0xfa, 0xf6, 0x6d, 0xfd, 0xb6, 0x7a, 0x26, 0xaf, + 0xe4, 0xbc, 0x78, 0x82, 0xf1, 0xe, 0x99, 0xef, 0xf1, 0xd0, 0xb3, + 0x55, 0x82, 0x93, 0xf2, 0xc5, 0x90, 0xa3, 0x8c, 0x75, 0x5a}, + }, + { + {0x94, 0xdc, 0x61, 0x1d, 0x8b, 0x91, 0xe0, 0x8c, 0x66, 0x30, 0x81, + 0x9a, 0x46, 0x36, 0xed, 0x8d, 0xd3, 0xaa, 0xe8, 0xaf, 0x29, 0xa8, + 0xe6, 0xd4, 0x3f, 0xd4, 0x39, 0xf6, 0x27, 0x80, 0x73, 0xa}, + {0x95, 0x24, 0x46, 0xd9, 0x10, 0x27, 0xb7, 0xa2, 0x3, 0x50, 0x7d, + 0xd5, 0xd2, 0xc6, 0xa8, 0x3a, 0xca, 0x87, 0xb4, 0xa0, 0xbf, 0x0, + 0xd4, 0xe3, 0xec, 0x72, 0xeb, 0xb3, 0x44, 0xe2, 0xba, 0x2d}, + {0xcc, 0xe1, 0xff, 0x57, 0x2f, 0x4a, 0xf, 0x98, 0x43, 0x98, 0x83, + 0xe1, 0xd, 0xd, 0x67, 0x0, 0xfd, 0x15, 0xfb, 0x49, 0x4a, 0x3f, + 0x5c, 0x10, 0x9c, 0xa6, 0x26, 0x51, 0x63, 0xca, 0x98, 0x26}, + }, + { + {0xe, 0xd9, 0x3d, 0x5e, 0x2f, 0x70, 0x3d, 0x2e, 0x86, 0x53, 0xd2, + 0xe4, 0x18, 0x9, 0x3f, 0x9e, 0x6a, 0xa9, 0x4d, 0x2, 0xf6, 0x3e, + 0x77, 0x5e, 0x32, 0x33, 0xfa, 0x4a, 0xc, 0x4b, 0x0, 0x3c}, + {0x78, 0xba, 0xb0, 0x32, 0x88, 0x31, 0x65, 0xe7, 0x8b, 0xff, 0x5c, + 0x92, 0xf7, 0x31, 0x18, 0x38, 0xcc, 0x1f, 0x29, 0xa0, 0x91, 0x1b, + 0xa8, 0x8, 0x7, 0xeb, 0xca, 0x49, 0xcc, 0x3d, 0xb4, 0x1f}, + {0x2b, 0xb8, 0xf4, 0x6, 0xac, 0x46, 0xa9, 0x9a, 0xf3, 0xc4, 0x6, + 0xa8, 0xa5, 0x84, 0xa2, 0x1c, 0x87, 0x47, 0xcd, 0xc6, 0x5f, 0x26, + 0xd3, 0x3e, 0x17, 0xd2, 0x1f, 0xcd, 0x1, 0xfd, 0x43, 0x6b}, + }, + { + {0xf3, 0xe, 0x76, 0x3e, 0x58, 0x42, 0xc7, 0xb5, 0x90, 0xb9, 0xa, + 0xee, 0xb9, 0x52, 0xdc, 0x75, 0x3f, 0x92, 0x2b, 0x7, 0xc2, 0x27, + 0x14, 0xbf, 0xf0, 0xd9, 0xf0, 0x6f, 0x2d, 0xb, 0x42, 0x73}, + {0x44, 0xc5, 0x97, 0x46, 0x4b, 0x5d, 0xa7, 0xc7, 0xbf, 0xff, 0xf, + 0xdf, 0x48, 0xf8, 0xfd, 0x15, 0x5a, 0x78, 0x46, 0xaa, 0xeb, 0xb9, + 0x68, 0x28, 0x14, 0xf7, 0x52, 0x5b, 0x10, 0xd7, 0x68, 0x5a}, + {0x6, 0x1e, 0x85, 0x9e, 0xcb, 0xf6, 0x2c, 0xaf, 0xc4, 0x38, 0x22, + 0xc6, 0x13, 0x39, 0x59, 0x8f, 0x73, 0xf3, 0xfb, 0x99, 0x96, 0xb8, + 0x8a, 0xda, 0x9e, 0xbc, 0x34, 0xea, 0x2f, 0x63, 0xb5, 0x3d}, + }, + { + {0xd5, 0x25, 0x98, 0x82, 0xb1, 0x90, 0x49, 0x2e, 0x91, 0x89, 0x9a, + 0x3e, 0x87, 0xeb, 0xea, 0xed, 0xf8, 0x4a, 0x70, 0x4c, 0x39, 0x3d, + 0xf0, 0xee, 0xe, 0x2b, 0xdf, 0x95, 0xa4, 0x7e, 0x19, 0x59}, + {0xd8, 0xd9, 0x5d, 0xf7, 0x2b, 0xee, 0x6e, 0xf4, 0xa5, 0x59, 0x67, + 0x39, 0xf6, 0xb1, 0x17, 0xd, 0x73, 0x72, 0x9e, 0x49, 0x31, 0xd1, + 0xf2, 0x1b, 0x13, 0x5f, 0xd7, 0x49, 0xdf, 0x1a, 0x32, 0x4}, + {0xae, 0x5a, 0xe5, 0xe4, 0x19, 0x60, 0xe1, 0x4, 0xe9, 0x92, 0x2f, + 0x7e, 0x7a, 0x43, 0x7b, 0xe7, 0xa4, 0x9a, 0x15, 0x6f, 0xc1, 0x2d, + 0xce, 0xc7, 0xc0, 0xc, 0xd7, 0xf4, 0xc1, 0xfd, 0xea, 0x45}, + }, + { + {0xed, 0xb1, 0xcc, 0xcf, 0x24, 0x46, 0xe, 0xb6, 0x95, 0x3, 0x5c, + 0xbd, 0x92, 0xc2, 0xdb, 0x59, 0xc9, 0x81, 0x4, 0xdc, 0x1d, 0x9d, + 0xa0, 0x31, 0x40, 0xd9, 0x56, 0x5d, 0xea, 0xce, 0x73, 0x3f}, + {0x2b, 0xd7, 0x45, 0x80, 0x85, 0x1, 0x84, 0x69, 0x51, 0x6, 0x2f, + 0xcf, 0xa2, 0xfa, 0x22, 0x4c, 0xc6, 0x2d, 0x22, 0x6b, 0x65, 0x36, + 0x1a, 0x94, 0xde, 0xda, 0x62, 0x3, 0xc8, 0xeb, 0x5e, 0x5a}, + {0xc6, 0x8d, 0x4e, 0xa, 0xd1, 0xbf, 0xa7, 0xb7, 0x39, 0xb3, 0xc9, + 0x44, 0x7e, 0x0, 0x57, 0xbe, 0xfa, 0xae, 0x57, 0x15, 0x7f, 0x20, + 0xc1, 0x60, 0xdb, 0x18, 0x62, 0x26, 0x91, 0x88, 0x5, 0x26}, + }, + { + {0x42, 0xe5, 0x76, 0xc6, 0x3c, 0x8e, 0x81, 0x4c, 0xad, 0xcc, 0xce, + 0x3, 0x93, 0x2c, 0x42, 0x5e, 0x8, 0x9f, 0x12, 0xb4, 0xca, 0xcc, + 0x7, 0xec, 0xb8, 0x43, 0x44, 0xb2, 0x10, 0xfa, 0xed, 0xd}, + {0x4, 0xff, 0x60, 0x83, 0xa6, 0x4, 0xf7, 0x59, 0xf4, 0xe6, 0x61, + 0x76, 0xde, 0x3f, 0xd9, 0xc3, 0x51, 0x35, 0x87, 0x12, 0x73, 0x2a, + 0x1b, 0x83, 0x57, 0x5d, 0x61, 0x4e, 0x2e, 0xc, 0xad, 0x54}, + {0x2a, 0x52, 0x2b, 0xb8, 0xd5, 0x67, 0x3b, 0xee, 0xeb, 0xc1, 0xa5, + 0x9f, 0x46, 0x63, 0xf1, 0x36, 0xd3, 0x9f, 0xc1, 0x6e, 0xf2, 0xd2, + 0xb4, 0xa5, 0x8, 0x94, 0x7a, 0xa7, 0xba, 0xb2, 0xec, 0x62}, + }, + { + {0x74, 0x28, 0xb6, 0xaf, 0x36, 0x28, 0x7, 0x92, 0xa5, 0x4, 0xe1, + 0x79, 0x85, 0x5e, 0xcd, 0x5f, 0x4a, 0xa1, 0x30, 0xc6, 0xad, 0x1, + 0xad, 0x5a, 0x98, 0x3f, 0x66, 0x75, 0x50, 0x3d, 0x91, 0x61}, + {0x3d, 0x2b, 0x15, 0x61, 0x52, 0x79, 0xed, 0xe5, 0xd1, 0xd7, 0xdd, + 0xe, 0x7d, 0x35, 0x62, 0x49, 0x71, 0x4c, 0x6b, 0xb9, 0xd0, 0xc8, + 0x82, 0x74, 0xbe, 0xd8, 0x66, 0xa9, 0x19, 0xf9, 0x59, 0x2e}, + {0xda, 0x31, 0x32, 0x1a, 0x36, 0x2d, 0xc6, 0xd, 0x70, 0x2, 0x20, + 0x94, 0x32, 0x58, 0x47, 0xfa, 0xce, 0x94, 0x95, 0x3f, 0x51, 0x1, + 0xd8, 0x2, 0x5c, 0x5d, 0xc0, 0x31, 0xa1, 0xc2, 0xdb, 0x3d}, + }, + }, + { + { + {0x14, 0xbb, 0x96, 0x27, 0xa2, 0x57, 0xaa, 0xf3, 0x21, 0xda, 0x7, + 0x9b, 0xb7, 0xba, 0x3a, 0x88, 0x1c, 0x39, 0xa0, 0x31, 0x18, 0xe2, + 0x4b, 0xe5, 0xf9, 0x5, 0x32, 0xd8, 0x38, 0xfb, 0xe7, 0x5e}, + {0x4b, 0xc5, 0x5e, 0xce, 0xf9, 0xf, 0xdc, 0x9a, 0xd, 0x13, 0x2f, + 0x8c, 0x6b, 0x2a, 0x9c, 0x3, 0x15, 0x95, 0xf8, 0xf0, 0xc7, 0x7, + 0x80, 0x2, 0x6b, 0xb3, 0x4, 0xac, 0x14, 0x83, 0x96, 0x78}, + {0x8e, 0x6a, 0x44, 0x41, 0xcb, 0xfd, 0x8d, 0x53, 0xf9, 0x37, 0x49, + 0x43, 0xa9, 0xfd, 0xac, 0xa5, 0x78, 0x8c, 0x3c, 0x26, 0x8d, 0x90, + 0xaf, 0x46, 0x9, 0xd, 0xca, 0x9b, 0x3c, 0x63, 0xd0, 0x61}, + }, + { + {0xdf, 0x73, 0xfc, 0xf8, 0xbc, 0x28, 0xa3, 0xad, 0xfc, 0x37, 0xf0, + 0xa6, 0x5d, 0x69, 0x84, 0xee, 0x9, 0xa9, 0xc2, 0x38, 0xdb, 0xb4, + 0x7f, 0x63, 0xdc, 0x7b, 0x6, 0xf8, 0x2d, 0xac, 0x23, 0x5b}, + {0x66, 0x25, 0xdb, 0xff, 0x35, 0x49, 0x74, 0x63, 0xbb, 0x68, 0xb, + 0x78, 0x89, 0x6b, 0xbd, 0xc5, 0x3, 0xec, 0x3e, 0x55, 0x80, 0x32, + 0x1b, 0x6f, 0xf5, 0xd7, 0xae, 0x47, 0xd8, 0x5f, 0x96, 0x6e}, + {0x7b, 0x52, 0x80, 0xee, 0x53, 0xb9, 0xd2, 0x9a, 0x8d, 0x6d, 0xde, + 0xfa, 0xaa, 0x19, 0x8f, 0xe8, 0xcf, 0x82, 0xe, 0x15, 0x4, 0x17, + 0x71, 0xe, 0xdc, 0xde, 0x95, 0xdd, 0xb9, 0xbb, 0xb9, 0x79}, + }, + { + {0x74, 0x73, 0x9f, 0x8e, 0xae, 0x7d, 0x99, 0xd1, 0x16, 0x8, 0xbb, + 0xcf, 0xf8, 0xa2, 0x32, 0xa0, 0xa, 0x5f, 0x44, 0x6d, 0x12, 0xba, + 0x6c, 0xcd, 0x34, 0xb8, 0xcc, 0xa, 0x46, 0x11, 0xa8, 0x1b}, + {0xc2, 0x26, 0x31, 0x6a, 0x40, 0x55, 0xb3, 0xeb, 0x93, 0xc3, 0xc8, + 0x68, 0xa8, 0x83, 0x63, 0xd2, 0x82, 0x7a, 0xb9, 0xe5, 0x29, 0x64, + 0xc, 0x6c, 0x47, 0x21, 0xfd, 0xc9, 0x58, 0xf1, 0x65, 0x50}, + {0x54, 0x99, 0x42, 0xc, 0xfb, 0x69, 0x81, 0x70, 0x67, 0xcf, 0x6e, + 0xd7, 0xac, 0x0, 0x46, 0xe1, 0xba, 0x45, 0xe6, 0x70, 0x8a, 0xb9, + 0xaa, 0x2e, 0xf2, 0xfa, 0xa4, 0x58, 0x9e, 0xf3, 0x81, 0x39}, + }, + { + {0xde, 0x6f, 0xe6, 0x6d, 0xa5, 0xdf, 0x45, 0xc8, 0x3a, 0x48, 0x40, + 0x2c, 0x0, 0xa5, 0x52, 0xe1, 0x32, 0xf6, 0xb4, 0xc7, 0x63, 0xe1, + 0xd2, 0xe9, 0x65, 0x1b, 0xbc, 0xdc, 0x2e, 0x45, 0xf4, 0x30}, + {0x93, 0xa, 0x23, 0x59, 0x75, 0x8a, 0xfb, 0x18, 0x5d, 0xf4, 0xe6, + 0x60, 0x69, 0x8f, 0x16, 0x1d, 0xb5, 0x3c, 0xa9, 0x14, 0x45, 0xa9, + 0x85, 0x3a, 0xfd, 0xd0, 0xac, 0x5, 0x37, 0x8, 0xdc, 0x38}, + {0x40, 0x97, 0x75, 0xc5, 0x82, 0x27, 0x6d, 0x85, 0xcc, 0xbe, 0x9c, + 0xf9, 0x69, 0x45, 0x13, 0xfa, 0x71, 0x4e, 0xea, 0xc0, 0x73, 0xfc, + 0x44, 0x88, 0x69, 0x24, 0x3f, 0x59, 0x1a, 0x9a, 0x2d, 0x63}, + }, + { + {0xa7, 0x84, 0xc, 0xed, 0x11, 0xfd, 0x9, 0xbf, 0x3a, 0x69, 0x9f, + 0xd, 0x81, 0x71, 0xf0, 0x63, 0x79, 0x87, 0xcf, 0x57, 0x2d, 0x8c, + 0x90, 0x21, 0xa2, 0x4b, 0xf6, 0x8a, 0xf2, 0x7d, 0x5a, 0x3a}, + {0xa6, 0xcb, 0x7, 0xb8, 0x15, 0x6b, 0xbb, 0xf6, 0xd7, 0xf0, 0x54, + 0xbc, 0xdf, 0xc7, 0x23, 0x18, 0xb, 0x67, 0x29, 0x6e, 0x3, 0x97, + 0x1d, 0xbb, 0x57, 0x4a, 0xed, 0x47, 0x88, 0xf4, 0x24, 0xb}, + {0xc7, 0xea, 0x1b, 0x51, 0xbe, 0xd4, 0xda, 0xdc, 0xf2, 0xcc, 0x26, + 0xed, 0x75, 0x80, 0x53, 0xa4, 0x65, 0x9a, 0x5f, 0x0, 0x9f, 0xff, + 0x9c, 0xe1, 0x63, 0x1f, 0x48, 0x75, 0x44, 0xf7, 0xfc, 0x34}, + }, + { + {0x98, 0xaa, 0xcf, 0x78, 0xab, 0x1d, 0xbb, 0xa5, 0xf2, 0x72, 0xb, + 0x19, 0x67, 0xa2, 0xed, 0x5c, 0x8e, 0x60, 0x92, 0xa, 0x11, 0xc9, + 0x9, 0x93, 0xb0, 0x74, 0xb3, 0x2f, 0x4, 0xa3, 0x19, 0x1}, + {0xca, 0x67, 0x97, 0x78, 0x4c, 0xe0, 0x97, 0xc1, 0x7d, 0x46, 0xd9, + 0x38, 0xcb, 0x4d, 0x71, 0xb8, 0xa8, 0x5f, 0xf9, 0x83, 0x82, 0x88, + 0xde, 0x55, 0xf7, 0x63, 0xfa, 0x4d, 0x16, 0xdc, 0x3b, 0x3d}, + {0x7d, 0x17, 0xc2, 0xe8, 0x9c, 0xd8, 0xa2, 0x67, 0xc1, 0xd0, 0x95, + 0x68, 0xf6, 0xa5, 0x9d, 0x66, 0xb0, 0xa2, 0x82, 0xb2, 0xe5, 0x98, + 0x65, 0xf5, 0x73, 0xa, 0xe2, 0xed, 0xf1, 0x88, 0xc0, 0x56}, + }, + { + {0x2, 0x8f, 0xf3, 0x24, 0xac, 0x5f, 0x1b, 0x58, 0xbd, 0xc, 0xe3, + 0xba, 0xfe, 0xe9, 0xb, 0xa9, 0xf0, 0x92, 0xcf, 0x8a, 0x2, 0x69, + 0x21, 0x9a, 0x8f, 0x3, 0x59, 0x83, 0xa4, 0x7e, 0x8b, 0x3}, + {0x17, 0x6e, 0xa8, 0x10, 0x11, 0x3d, 0x6d, 0x33, 0xfa, 0xb2, 0x75, + 0xb, 0x32, 0x88, 0xf3, 0xd7, 0x88, 0x29, 0x7, 0x25, 0x76, 0x33, + 0x15, 0xf9, 0x87, 0x8b, 0x10, 0x99, 0x6b, 0x4c, 0x67, 0x9}, + {0xf8, 0x6f, 0x31, 0x99, 0x21, 0xf8, 0x4e, 0x9f, 0x4f, 0x8d, 0xa7, + 0xea, 0x82, 0xd2, 0x49, 0x2f, 0x74, 0x31, 0xef, 0x5a, 0xab, 0xa5, + 0x71, 0x9, 0x65, 0xeb, 0x69, 0x59, 0x2, 0x31, 0x5e, 0x6e}, + }, + { + {0x22, 0x62, 0x6, 0x63, 0xe, 0xfb, 0x4, 0x33, 0x3f, 0xba, 0xac, + 0x87, 0x89, 0x6, 0x35, 0xfb, 0xa3, 0x61, 0x10, 0x8c, 0x77, 0x24, + 0x19, 0xbd, 0x20, 0x86, 0x83, 0xd1, 0x43, 0xad, 0x58, 0x30}, + {0xfb, 0x93, 0xe5, 0x87, 0xf5, 0x62, 0x6c, 0xb1, 0x71, 0x3e, 0x5d, + 0xca, 0xde, 0xed, 0x99, 0x49, 0x6d, 0x3e, 0xcc, 0x14, 0xe0, 0xc1, + 0x91, 0xb4, 0xa8, 0xdb, 0xa8, 0x89, 0x47, 0x11, 0xf5, 0x8}, + {0xd0, 0x63, 0x76, 0xe5, 0xfd, 0xf, 0x3c, 0x32, 0x10, 0xa6, 0x2e, + 0xa2, 0x38, 0xdf, 0xc3, 0x5, 0x9a, 0x4f, 0x99, 0xac, 0xbd, 0x8a, + 0xc7, 0xbd, 0x99, 0xdc, 0xe3, 0xef, 0xa4, 0x9f, 0x54, 0x26}, + }, + }, + { + { + {0x6e, 0x66, 0x3f, 0xaf, 0x49, 0x85, 0x46, 0xdb, 0xa5, 0xe, 0x4a, + 0xf1, 0x4, 0xcf, 0x7f, 0xd7, 0x47, 0xc, 0xba, 0xa4, 0xf7, 0x3f, + 0xf2, 0x3d, 0x85, 0x3c, 0xce, 0x32, 0xe1, 0xdf, 0x10, 0x3a}, + {0xd6, 0xf9, 0x6b, 0x1e, 0x46, 0x5a, 0x1d, 0x74, 0x81, 0xa5, 0x77, + 0x77, 0xfc, 0xb3, 0x5, 0x23, 0xd9, 0xd3, 0x74, 0x64, 0xa2, 0x74, + 0x55, 0xd4, 0xff, 0xe0, 0x1, 0x64, 0xdc, 0xe1, 0x26, 0x19}, + {0xa0, 0xce, 0x17, 0xea, 0x8a, 0x4e, 0x7f, 0xe0, 0xfd, 0xc1, 0x1f, + 0x3a, 0x46, 0x15, 0xd5, 0x2f, 0xf1, 0xc0, 0xf2, 0x31, 0xfd, 0x22, + 0x53, 0x17, 0x15, 0x5d, 0x1e, 0x86, 0x1d, 0xd0, 0xa1, 0x1f}, + }, + { + {0xab, 0x94, 0xdf, 0xd1, 0x0, 0xac, 0xdc, 0x38, 0xe9, 0xd, 0x8, + 0xd1, 0xdd, 0x2b, 0x71, 0x2e, 0x62, 0xe2, 0xd5, 0xfd, 0x3e, 0xe9, + 0x13, 0x7f, 0xe5, 0x1, 0x9a, 0xee, 0x18, 0xed, 0xfc, 0x73}, + {0x32, 0x98, 0x59, 0x7d, 0x94, 0x55, 0x80, 0xcc, 0x20, 0x55, 0xf1, + 0x37, 0xda, 0x56, 0x46, 0x1e, 0x20, 0x93, 0x5, 0x4e, 0x74, 0xf7, + 0xf6, 0x99, 0x33, 0xcf, 0x75, 0x6a, 0xbc, 0x63, 0x35, 0x77}, + {0xb3, 0x9c, 0x13, 0x63, 0x8, 0xe9, 0xb1, 0x6, 0xcd, 0x3e, 0xa0, + 0xc5, 0x67, 0xda, 0x93, 0xa4, 0x32, 0x89, 0x63, 0xad, 0xc8, 0xce, + 0x77, 0x8d, 0x44, 0x4f, 0x86, 0x1b, 0x70, 0x6b, 0x42, 0x1f}, + }, + { + {0x52, 0x25, 0xa1, 0x91, 0xc8, 0x35, 0x7e, 0xf1, 0x76, 0x9c, 0x5e, + 0x57, 0x53, 0x81, 0x6b, 0xb7, 0x3e, 0x72, 0x9b, 0xd, 0x6f, 0x40, + 0x83, 0xfa, 0x38, 0xe4, 0xa7, 0x3f, 0x1b, 0xbb, 0x76, 0xb}, + {0x1, 0x1c, 0x91, 0x41, 0x4c, 0x26, 0xc9, 0xef, 0x25, 0x2c, 0xa2, + 0x17, 0xb8, 0xb7, 0xa3, 0xf1, 0x47, 0x14, 0xf, 0xf3, 0x6b, 0xda, + 0x75, 0x58, 0x90, 0xb0, 0x31, 0x1d, 0x27, 0xf5, 0x1a, 0x4e}, + {0x9b, 0x93, 0x92, 0x7f, 0xf9, 0xc1, 0xb8, 0x8, 0x6e, 0xab, 0x44, + 0xd4, 0xcb, 0x71, 0x67, 0xbe, 0x17, 0x80, 0xbb, 0x99, 0x63, 0x64, + 0xe5, 0x22, 0x55, 0xa9, 0x72, 0xb7, 0x1e, 0xd6, 0x6d, 0x7b}, + }, + { + {0xc7, 0xd2, 0x1, 0xab, 0xf9, 0xab, 0x30, 0x57, 0x18, 0x3b, 0x14, + 0x40, 0xdc, 0x76, 0xfb, 0x16, 0x81, 0xb2, 0xcb, 0xa0, 0x65, 0xbe, + 0x6c, 0x86, 0xfe, 0x6a, 0xff, 0x9b, 0x65, 0x9b, 0xfa, 0x53}, + {0x92, 0x3d, 0xf3, 0x50, 0xe8, 0xc1, 0xad, 0xb7, 0xcf, 0xd5, 0x8c, + 0x60, 0x4f, 0xfa, 0x98, 0x79, 0xdb, 0x5b, 0xfc, 0x8d, 0xbd, 0x2d, + 0x96, 0xad, 0x4f, 0x2f, 0x1d, 0xaf, 0xce, 0x9b, 0x3e, 0x70}, + {0x55, 0x54, 0x88, 0x94, 0xe9, 0xc8, 0x14, 0x6c, 0xe5, 0xd4, 0xae, + 0x65, 0x66, 0x5d, 0x3a, 0x84, 0xf1, 0x5a, 0xd6, 0xbc, 0x3e, 0xb7, + 0x1b, 0x18, 0x50, 0x1f, 0xc6, 0xc4, 0xe5, 0x93, 0x8d, 0x39}, + }, + { + {0xf2, 0xe3, 0xe7, 0xd2, 0x60, 0x7c, 0x87, 0xc3, 0xb1, 0x8b, 0x82, + 0x30, 0xa0, 0xaa, 0x34, 0x3b, 0x38, 0xf1, 0x9e, 0x73, 0xe7, 0x26, + 0x3e, 0x28, 0x77, 0x5, 0xc3, 0x2, 0x90, 0x9c, 0x9c, 0x69}, + {0xf3, 0x48, 0xe2, 0x33, 0x67, 0xd1, 0x4b, 0x1c, 0x5f, 0xa, 0xbf, + 0x15, 0x87, 0x12, 0x9e, 0xbd, 0x76, 0x3, 0xb, 0xa1, 0xf0, 0x8c, + 0x3f, 0xd4, 0x13, 0x1b, 0x19, 0xdf, 0x5d, 0x9b, 0xb0, 0x53}, + {0xcc, 0xf1, 0x46, 0x59, 0x23, 0xa7, 0x6, 0xf3, 0x7d, 0xd9, 0xe5, + 0xcc, 0xb5, 0x18, 0x17, 0x92, 0x75, 0xe9, 0xb4, 0x81, 0x47, 0xd2, + 0xcd, 0x28, 0x7, 0xd9, 0xcd, 0x6f, 0xc, 0xf3, 0xca, 0x51}, + }, + { + {0xc7, 0x54, 0xac, 0x18, 0x9a, 0xf9, 0x7a, 0x73, 0xf, 0xb3, 0x1c, + 0xc5, 0xdc, 0x78, 0x33, 0x90, 0xc7, 0xc, 0xe1, 0x4c, 0x33, 0xbc, + 0x89, 0x2b, 0x9a, 0xe9, 0xf8, 0x89, 0xc1, 0x29, 0xae, 0x12}, + {0xa, 0xe0, 0x74, 0x76, 0x42, 0xa7, 0xb, 0xa6, 0xf3, 0x7b, 0x7a, + 0xa1, 0x70, 0x85, 0xe, 0x63, 0xcc, 0x24, 0x33, 0xcf, 0x3d, 0x56, + 0x58, 0x37, 0xaa, 0xfd, 0x83, 0x23, 0x29, 0xaa, 0x4, 0x55}, + {0xcf, 0x1, 0xd, 0x1f, 0xcb, 0xc0, 0x9e, 0xa9, 0xae, 0xf7, 0x34, + 0x3a, 0xcc, 0xef, 0xd1, 0xd, 0x22, 0x4e, 0x9c, 0xd0, 0x21, 0x75, + 0xca, 0x55, 0xea, 0xa5, 0xeb, 0x58, 0xe9, 0x4f, 0xd1, 0x5f}, + }, + { + {0x8e, 0xcb, 0x93, 0xbf, 0x5e, 0xfe, 0x42, 0x3c, 0x5f, 0x56, 0xd4, + 0x36, 0x51, 0xa8, 0xdf, 0xbe, 0xe8, 0x20, 0x42, 0x88, 0x9e, 0x85, + 0xf0, 0xe0, 0x28, 0xd1, 0x25, 0x7, 0x96, 0x3f, 0xd7, 0x7d}, + {0x2c, 0xab, 0x45, 0x28, 0xdf, 0x2d, 0xdc, 0xb5, 0x93, 0xe9, 0x7f, + 0xa, 0xb1, 0x91, 0x94, 0x6, 0x46, 0xe3, 0x2, 0x40, 0xd6, 0xf3, + 0xaa, 0x4d, 0xd1, 0x74, 0x64, 0x58, 0x6e, 0xf2, 0x3f, 0x9}, + {0x29, 0x98, 0x5, 0x68, 0xfe, 0x24, 0xd, 0xb1, 0xe5, 0x23, 0xaf, + 0xdb, 0x72, 0x6, 0x73, 0x75, 0x29, 0xac, 0x57, 0xb4, 0x3a, 0x25, + 0x67, 0x13, 0xa4, 0x70, 0xb4, 0x86, 0xbc, 0xbc, 0x59, 0x2f}, + }, + { + {0x1, 0xc3, 0x91, 0xb6, 0x60, 0xd5, 0x41, 0x70, 0x1e, 0xe7, 0xd7, + 0xad, 0x3f, 0x1b, 0x20, 0x85, 0x85, 0x55, 0x33, 0x11, 0x63, 0xe1, + 0xc2, 0x16, 0xb1, 0x28, 0x8, 0x1, 0x3d, 0x5e, 0xa5, 0x2a}, + {0x5f, 0x13, 0x17, 0x99, 0x42, 0x7d, 0x84, 0x83, 0xd7, 0x3, 0x7d, + 0x56, 0x1f, 0x91, 0x1b, 0xad, 0xd1, 0xaa, 0x77, 0xbe, 0xd9, 0x48, + 0x77, 0x7e, 0x4a, 0xaf, 0x51, 0x2e, 0x2e, 0xb4, 0x58, 0x54}, + {0x4f, 0x44, 0x7, 0xc, 0xe6, 0x92, 0x51, 0xed, 0x10, 0x1d, 0x42, + 0x74, 0x2d, 0x4e, 0xc5, 0x42, 0x64, 0xc8, 0xb5, 0xfd, 0x82, 0x4c, + 0x2b, 0x35, 0x64, 0x86, 0x76, 0x8a, 0x4a, 0x0, 0xe9, 0x13}, + }, + }, + { + { + {0x7f, 0x87, 0x3b, 0x19, 0xc9, 0x0, 0x2e, 0xbb, 0x6b, 0x50, 0xdc, + 0xe0, 0x90, 0xa8, 0xe3, 0xec, 0x9f, 0x64, 0xde, 0x36, 0xc0, 0xb7, + 0xf3, 0xec, 0x1a, 0x9e, 0xde, 0x98, 0x8, 0x4, 0x46, 0x5f}, + {0xdb, 0xce, 0x2f, 0x83, 0x45, 0x88, 0x9d, 0x73, 0x63, 0xf8, 0x6b, + 0xae, 0xc9, 0xd6, 0x38, 0xfa, 0xf7, 0xfe, 0x4f, 0xb7, 0xca, 0xd, + 0xbc, 0x32, 0x5e, 0xe4, 0xbc, 0x14, 0x88, 0x7e, 0x93, 0x73}, + {0x8d, 0xf4, 0x7b, 0x29, 0x16, 0x71, 0x3, 0xb9, 0x34, 0x68, 0xf0, + 0xd4, 0x22, 0x3b, 0xd1, 0xa9, 0xc6, 0xbd, 0x96, 0x46, 0x57, 0x15, + 0x97, 0xe1, 0x35, 0xe8, 0xd5, 0x91, 0xe8, 0xa4, 0xf8, 0x2c}, + }, + { + {0xa2, 0x6b, 0xd0, 0x17, 0x7e, 0x48, 0xb5, 0x2c, 0x6b, 0x19, 0x50, + 0x39, 0x1c, 0x38, 0xd2, 0x24, 0x30, 0x8a, 0x97, 0x85, 0x81, 0x9c, + 0x65, 0xd7, 0xf6, 0xa4, 0xd6, 0x91, 0x28, 0x7f, 0x6f, 0x7a}, + {0x67, 0xf, 0x11, 0x7, 0x87, 0xfd, 0x93, 0x6d, 0x49, 0xb5, 0x38, + 0x7c, 0xd3, 0x9, 0x4c, 0xdd, 0x86, 0x6a, 0x73, 0xc2, 0x4c, 0x6a, + 0xb1, 0x7c, 0x9, 0x2a, 0x25, 0x58, 0x6e, 0xbd, 0x49, 0x20}, + {0x49, 0xef, 0x9a, 0x6a, 0x8d, 0xfd, 0x9, 0x7d, 0xb, 0xb9, 0x3d, + 0x5b, 0xbe, 0x60, 0xee, 0xf0, 0xd4, 0xbf, 0x9e, 0x51, 0x2c, 0xb5, + 0x21, 0x4c, 0x1d, 0x94, 0x45, 0xc5, 0xdf, 0xaa, 0x11, 0x60}, + }, + { + {0x90, 0xf8, 0xcb, 0x2, 0xc8, 0xd0, 0xde, 0x63, 0xaa, 0x6a, 0xff, + 0xd, 0xca, 0x98, 0xd0, 0xfb, 0x99, 0xed, 0xb6, 0xb9, 0xfd, 0xa, + 0x4d, 0x62, 0x1e, 0xb, 0x34, 0x79, 0xb7, 0x18, 0xce, 0x69}, + {0x3c, 0xf8, 0x95, 0xcf, 0x6d, 0x92, 0x67, 0x5f, 0x71, 0x90, 0x28, + 0x71, 0x61, 0x85, 0x7e, 0x7c, 0x5b, 0x7a, 0x8f, 0x99, 0xf3, 0xe7, + 0xa1, 0xd6, 0xe0, 0xf9, 0x62, 0xb, 0x1b, 0xcc, 0xc5, 0x6f}, + {0xcb, 0x79, 0x98, 0xb2, 0x28, 0x55, 0xef, 0xd1, 0x92, 0x90, 0x7e, + 0xd4, 0x3c, 0xae, 0x1a, 0xdd, 0x52, 0x23, 0x9f, 0x18, 0x42, 0x4, + 0x7e, 0x12, 0xf1, 0x1, 0x71, 0xe5, 0x3a, 0x6b, 0x59, 0x15}, + }, + { + {0xca, 0x24, 0x51, 0x7e, 0x16, 0x31, 0xff, 0x9, 0xdf, 0x45, 0xc7, + 0xd9, 0x8b, 0x15, 0xe4, 0xb, 0xe5, 0x56, 0xf5, 0x7e, 0x22, 0x7d, + 0x2b, 0x29, 0x38, 0xd1, 0xb6, 0xaf, 0x41, 0xe2, 0xa4, 0x3a}, + {0xa2, 0x79, 0x91, 0x3f, 0xd2, 0x39, 0x27, 0x46, 0xcf, 0xdd, 0xd6, + 0x97, 0x31, 0x12, 0x83, 0xff, 0x8a, 0x14, 0xf2, 0x53, 0xb5, 0xde, + 0x7, 0x13, 0xda, 0x4d, 0x5f, 0x7b, 0x68, 0x37, 0x22, 0xd}, + {0xf5, 0x5, 0x33, 0x2a, 0xbf, 0x38, 0xc1, 0x2c, 0xc3, 0x26, 0xe9, + 0xa2, 0x8f, 0x3f, 0x58, 0x48, 0xeb, 0xd2, 0x49, 0x55, 0xa2, 0xb1, + 0x3a, 0x8, 0x6c, 0xa3, 0x87, 0x46, 0x6e, 0xaa, 0xfc, 0x32}, + }, + { + {0xdf, 0xcc, 0x87, 0x27, 0x73, 0xa4, 0x7, 0x32, 0xf8, 0xe3, 0x13, + 0xf2, 0x8, 0x19, 0xe3, 0x17, 0x4e, 0x96, 0xd, 0xf6, 0xd7, 0xec, + 0xb2, 0xd5, 0xe9, 0xb, 0x60, 0xc2, 0x36, 0x63, 0x6f, 0x74}, + {0xf5, 0x9a, 0x7d, 0xc5, 0x8d, 0x6e, 0xc5, 0x7b, 0xf2, 0xbd, 0xf0, + 0x9d, 0xed, 0xd2, 0xb, 0x3e, 0xa3, 0xe4, 0xef, 0x22, 0xde, 0x14, + 0xc0, 0xaa, 0x5c, 0x6a, 0xbd, 0xfe, 0xce, 0xe9, 0x27, 0x46}, + {0x1c, 0x97, 0x6c, 0xab, 0x45, 0xf3, 0x4a, 0x3f, 0x1f, 0x73, 0x43, + 0x99, 0x72, 0xeb, 0x88, 0xe2, 0x6d, 0x18, 0x44, 0x3, 0x8a, 0x6a, + 0x59, 0x33, 0x93, 0x62, 0xd6, 0x7e, 0x0, 0x17, 0x49, 0x7b}, + }, + { + {0xdd, 0xa2, 0x53, 0xdd, 0x28, 0x1b, 0x34, 0x54, 0x3f, 0xfc, 0x42, + 0xdf, 0x5b, 0x90, 0x17, 0xaa, 0xf4, 0xf8, 0xd2, 0x4d, 0xd9, 0x92, + 0xf5, 0xf, 0x7d, 0xd3, 0x8c, 0xe0, 0xf, 0x62, 0x3, 0x1d}, + {0x64, 0xb0, 0x84, 0xab, 0x5c, 0xfb, 0x85, 0x2d, 0x14, 0xbc, 0xf3, + 0x89, 0xd2, 0x10, 0x78, 0x49, 0xc, 0xce, 0x15, 0x7b, 0x44, 0xdc, + 0x6a, 0x47, 0x7b, 0xfd, 0x44, 0xf8, 0x76, 0xa3, 0x2b, 0x12}, + {0x54, 0xe5, 0xb4, 0xa2, 0xcd, 0x32, 0x2, 0xc2, 0x7f, 0x18, 0x5d, + 0x11, 0x42, 0xfd, 0xd0, 0x9e, 0xd9, 0x79, 0xd4, 0x7d, 0xbe, 0xb4, + 0xab, 0x2e, 0x4c, 0xec, 0x68, 0x2b, 0xf5, 0xb, 0xc7, 0x2}, + }, + { + {0xe1, 0x72, 0x8d, 0x45, 0xbf, 0x32, 0xe5, 0xac, 0xb5, 0x3c, 0xb7, + 0x7c, 0xe0, 0x68, 0xe7, 0x5b, 0xe7, 0xbd, 0x8b, 0xee, 0x94, 0x7d, + 0xcf, 0x56, 0x3, 0x3a, 0xb4, 0xfe, 0xe3, 0x97, 0x6, 0x6b}, + {0xbb, 0x2f, 0xb, 0x5d, 0x4b, 0xec, 0x87, 0xa2, 0xca, 0x82, 0x48, + 0x7, 0x90, 0x57, 0x5c, 0x41, 0x5c, 0x81, 0xd0, 0xc1, 0x1e, 0xa6, + 0x44, 0xe0, 0xe0, 0xf5, 0x9e, 0x40, 0xa, 0x4f, 0x33, 0x26}, + {0xc0, 0xa3, 0x62, 0xdf, 0x4a, 0xf0, 0xc8, 0xb6, 0x5d, 0xa4, 0x6d, + 0x7, 0xef, 0x0, 0xf0, 0x3e, 0xa9, 0xd2, 0xf0, 0x49, 0x58, 0xb9, + 0x9c, 0x9c, 0xae, 0x2f, 0x1b, 0x44, 0x43, 0x7f, 0xc3, 0x1c}, + }, + { + {0xb9, 0xae, 0xce, 0xc9, 0xf1, 0x56, 0x66, 0xd7, 0x6a, 0x65, 0xe5, + 0x18, 0xf8, 0x15, 0x5b, 0x1c, 0x34, 0x23, 0x4c, 0x84, 0x32, 0x28, + 0xe7, 0x26, 0x38, 0x68, 0x19, 0x2f, 0x77, 0x6f, 0x34, 0x3a}, + {0x4f, 0x32, 0xc7, 0x5c, 0x5a, 0x56, 0x8f, 0x50, 0x22, 0xa9, 0x6, + 0xe5, 0xc0, 0xc4, 0x61, 0xd0, 0x19, 0xac, 0x45, 0x5c, 0xdb, 0xab, + 0x18, 0xfb, 0x4a, 0x31, 0x80, 0x3, 0xc1, 0x9, 0x68, 0x6c}, + {0xc8, 0x6a, 0xda, 0xe2, 0x12, 0x51, 0xd5, 0xd2, 0xed, 0x51, 0xe8, + 0xb1, 0x31, 0x3, 0xbd, 0xe9, 0x62, 0x72, 0xc6, 0x8e, 0xdd, 0x46, + 0x7, 0x96, 0xd0, 0xc5, 0xf7, 0x6e, 0x9f, 0x1b, 0x91, 0x5}, + }, + }, + { + { + {0xef, 0xea, 0x2e, 0x51, 0xf3, 0xac, 0x49, 0x53, 0x49, 0xcb, 0xc1, + 0x1c, 0xd3, 0x41, 0xc1, 0x20, 0x8d, 0x68, 0x9a, 0xa9, 0x7, 0xc, + 0x18, 0x24, 0x17, 0x2d, 0x4b, 0xc6, 0xd1, 0xf9, 0x5e, 0x55}, + {0xbb, 0xe, 0xdf, 0xf5, 0x83, 0x99, 0x33, 0xc1, 0xac, 0x4c, 0x2c, + 0x51, 0x8f, 0x75, 0xf3, 0xc0, 0xe1, 0x98, 0xb3, 0xb, 0xa, 0x13, + 0xf1, 0x2c, 0x62, 0xc, 0x27, 0xaa, 0xf9, 0xec, 0x3c, 0x6b}, + {0x8, 0xbd, 0x73, 0x3b, 0xba, 0x70, 0xa7, 0x36, 0xc, 0xbf, 0xaf, + 0xa3, 0x8, 0xef, 0x4a, 0x62, 0xf2, 0x46, 0x9, 0xb4, 0x98, 0xff, + 0x37, 0x57, 0x9d, 0x74, 0x81, 0x33, 0xe1, 0x4d, 0x5f, 0x67}, + }, + { + {0x1d, 0xb3, 0xda, 0x3b, 0xd9, 0xf6, 0x2f, 0xa1, 0xfe, 0x2d, 0x65, + 0x9d, 0xf, 0xd8, 0x25, 0x7, 0x87, 0x94, 0xbe, 0x9a, 0xf3, 0x4f, + 0x9c, 0x1, 0x43, 0x3c, 0xcd, 0x82, 0xb8, 0x50, 0xf4, 0x60}, + {0xfc, 0x82, 0x17, 0x6b, 0x3, 0x52, 0x2c, 0xe, 0xb4, 0x83, 0xad, + 0x6c, 0x81, 0x6c, 0x81, 0x64, 0x3e, 0x7, 0x64, 0x69, 0xd9, 0xbd, + 0xdc, 0xd0, 0x20, 0xc5, 0x64, 0x1, 0xf7, 0x9d, 0xd9, 0x13}, + {0xca, 0xc0, 0xe5, 0x21, 0xc3, 0x5e, 0x4b, 0x1, 0xa2, 0xbf, 0x19, + 0xd7, 0xc9, 0x69, 0xcb, 0x4f, 0xa0, 0x23, 0x0, 0x75, 0x18, 0x1c, + 0x5f, 0x4e, 0x80, 0xac, 0xed, 0x55, 0x9e, 0xde, 0x6, 0x1c}, + }, + { + {0xaa, 0x69, 0x6d, 0xff, 0x40, 0x2b, 0xd5, 0xff, 0xbb, 0x49, 0x40, + 0xdc, 0x18, 0xb, 0x53, 0x34, 0x97, 0x98, 0x4d, 0xa3, 0x2f, 0x5c, + 0x4a, 0x5e, 0x2d, 0xba, 0x32, 0x7d, 0x8e, 0x6f, 0x9, 0x78}, + {0xe2, 0xc4, 0x3e, 0xa3, 0xd6, 0x7a, 0xf, 0x99, 0x8e, 0xe0, 0x2e, + 0xbe, 0x38, 0xf9, 0x8, 0x66, 0x15, 0x45, 0x28, 0x63, 0xc5, 0x43, + 0xa1, 0x9c, 0xd, 0xb6, 0x2d, 0xec, 0x1f, 0x8a, 0xf3, 0x4c}, + {0xe7, 0x5c, 0xfa, 0xd, 0x65, 0xaa, 0xaa, 0xa0, 0x8c, 0x47, 0xb5, + 0x48, 0x2a, 0x9e, 0xc4, 0xf9, 0x5b, 0x72, 0x3, 0x70, 0x7d, 0xcc, + 0x9, 0x4f, 0xbe, 0x1a, 0x9, 0x26, 0x3a, 0xad, 0x3c, 0x37}, + }, + { + {0xad, 0xbb, 0xdd, 0x89, 0xfb, 0xa8, 0xbe, 0xf1, 0xcb, 0xae, 0xae, + 0x61, 0xbc, 0x2c, 0xcb, 0x3b, 0x9d, 0x8d, 0x9b, 0x1f, 0xbb, 0xa7, + 0x58, 0x8f, 0x86, 0xa6, 0x12, 0x51, 0xda, 0x7e, 0x54, 0x21}, + {0x7c, 0xf5, 0xc9, 0x82, 0x4d, 0x63, 0x94, 0xb2, 0x36, 0x45, 0x93, + 0x24, 0xe1, 0xfd, 0xcb, 0x1f, 0x5a, 0xdb, 0x8c, 0x41, 0xb3, 0x4d, + 0x9c, 0x9e, 0xfc, 0x19, 0x44, 0x45, 0xd9, 0xf3, 0x40, 0x0}, + {0xd3, 0x86, 0x59, 0xfd, 0x39, 0xe9, 0xfd, 0xde, 0xc, 0x38, 0xa, + 0x51, 0x89, 0x2c, 0x27, 0xf4, 0xb9, 0x19, 0x31, 0xbb, 0x7, 0xa4, + 0x2b, 0xb7, 0xf4, 0x4d, 0x25, 0x4a, 0x33, 0xa, 0x55, 0x63}, + }, + { + {0x49, 0x7b, 0x54, 0x72, 0x45, 0x58, 0xba, 0x9b, 0xe0, 0x8, 0xc4, + 0xe2, 0xfa, 0xc6, 0x5, 0xf3, 0x8d, 0xf1, 0x34, 0xc7, 0x69, 0xfa, + 0xe8, 0x60, 0x7a, 0x76, 0x7d, 0xaa, 0xaf, 0x2b, 0xa9, 0x39}, + {0x37, 0xcf, 0x69, 0xb5, 0xed, 0xd6, 0x7, 0x65, 0xe1, 0x2e, 0xa5, + 0xc, 0xb0, 0x29, 0x84, 0x17, 0x5d, 0xd6, 0x6b, 0xeb, 0x90, 0x0, + 0x7c, 0xea, 0x51, 0x8f, 0xf7, 0xda, 0xc7, 0x62, 0xea, 0x3e}, + {0x4e, 0x27, 0x93, 0xe6, 0x13, 0xc7, 0x24, 0x9d, 0x75, 0xd3, 0xdb, + 0x68, 0x77, 0x85, 0x63, 0x5f, 0x9a, 0xb3, 0x8a, 0xeb, 0x60, 0x55, + 0x52, 0x70, 0xcd, 0xc4, 0xc9, 0x65, 0x6, 0x6a, 0x43, 0x68}, + }, + { + {0x7c, 0x10, 0x20, 0xe8, 0x17, 0xd3, 0x56, 0x1e, 0x65, 0xe9, 0xa, + 0x84, 0x44, 0x68, 0x26, 0xc5, 0x7a, 0xfc, 0xf, 0x32, 0xc6, 0xa1, + 0xe0, 0xc1, 0x72, 0x14, 0x61, 0x91, 0x9c, 0x66, 0x73, 0x53}, + {0x27, 0x3f, 0x2f, 0x20, 0xe8, 0x35, 0x2, 0xbc, 0xb0, 0x75, 0xf9, + 0x64, 0xe2, 0x0, 0x5c, 0xc7, 0x16, 0x24, 0x8c, 0xa3, 0xd5, 0xe9, + 0xa4, 0x91, 0xf9, 0x89, 0xb7, 0x8a, 0xf6, 0xe7, 0xb6, 0x17}, + {0x57, 0x52, 0xe, 0x9a, 0xab, 0x14, 0x28, 0x5d, 0xfc, 0xb3, 0xca, + 0xc9, 0x84, 0x20, 0x8f, 0x90, 0xca, 0x1e, 0x2d, 0x5b, 0x88, 0xf5, + 0xca, 0xaf, 0x11, 0x7d, 0xf8, 0x78, 0xa6, 0xb5, 0xb4, 0x1c}, + }, + { + {0xe7, 0x7, 0xa0, 0xa2, 0x62, 0xaa, 0x74, 0x6b, 0xb1, 0xc7, 0x71, + 0xf0, 0xb0, 0xe0, 0x11, 0xf3, 0x23, 0xe2, 0xb, 0x0, 0x38, 0xe4, + 0x7, 0x57, 0xac, 0x6e, 0xef, 0x82, 0x2d, 0xfd, 0xc0, 0x2d}, + {0x6c, 0xfc, 0x4a, 0x39, 0x6b, 0xc0, 0x64, 0xb6, 0xb1, 0x5f, 0xda, + 0x98, 0x24, 0xde, 0x88, 0xc, 0x34, 0xd8, 0xca, 0x4b, 0x16, 0x3, + 0x8d, 0x4f, 0xa2, 0x34, 0x74, 0xde, 0x78, 0xca, 0xb, 0x33}, + {0x4e, 0x74, 0x19, 0x11, 0x84, 0xff, 0x2e, 0x98, 0x24, 0x47, 0x7, + 0x2b, 0x96, 0x5e, 0x69, 0xf9, 0xfb, 0x53, 0xc9, 0xbf, 0x4f, 0xc1, + 0x8a, 0xc5, 0xf5, 0x1c, 0x9f, 0x36, 0x1b, 0xbe, 0x31, 0x3c}, + }, + { + {0x72, 0x42, 0xcb, 0xf9, 0x93, 0xbc, 0x68, 0xc1, 0x98, 0xdb, 0xce, + 0xc7, 0x1f, 0x71, 0xb8, 0xae, 0x7a, 0x8d, 0xac, 0x34, 0xaa, 0x52, + 0xe, 0x7f, 0xbb, 0x55, 0x7d, 0x7e, 0x9, 0xc1, 0xce, 0x41}, + {0xee, 0x8a, 0x94, 0x8, 0x4d, 0x86, 0xf4, 0xb0, 0x6f, 0x1c, 0xba, + 0x91, 0xee, 0x19, 0xdc, 0x7, 0x58, 0xa1, 0xac, 0xa6, 0xae, 0xcd, + 0x75, 0x79, 0xbb, 0xd4, 0x62, 0x42, 0x13, 0x61, 0xb, 0x33}, + {0x8a, 0x80, 0x6d, 0xa2, 0xd7, 0x19, 0x96, 0xf7, 0x6d, 0x15, 0x9e, + 0x1d, 0x9e, 0xd4, 0x1f, 0xbb, 0x27, 0xdf, 0xa1, 0xdb, 0x6c, 0xc3, + 0xd7, 0x73, 0x7d, 0x77, 0x28, 0x1f, 0xd9, 0x4c, 0xb4, 0x26}, + }, + }, + { + { + {0x83, 0x3, 0x73, 0x62, 0x93, 0xf2, 0xb7, 0xe1, 0x2c, 0x8a, 0xca, + 0xeb, 0xff, 0x79, 0x52, 0x4b, 0x14, 0x13, 0xd4, 0xbf, 0x8a, 0x77, + 0xfc, 0xda, 0xf, 0x61, 0x72, 0x9c, 0x14, 0x10, 0xeb, 0x7d}, + {0x75, 0x74, 0x38, 0x8f, 0x47, 0x48, 0xf0, 0x51, 0x3c, 0xcb, 0xbe, + 0x9c, 0xf4, 0xbc, 0x5d, 0xb2, 0x55, 0x20, 0x9f, 0xd9, 0x44, 0x12, + 0xab, 0x9a, 0xd6, 0xa5, 0x10, 0x1c, 0x6c, 0x9e, 0x70, 0x2c}, + {0x7a, 0xee, 0x66, 0x87, 0x6a, 0xaf, 0x62, 0xcb, 0xe, 0xcd, 0x53, + 0x55, 0x4, 0xec, 0xcb, 0x66, 0xb5, 0xe4, 0xb, 0xf, 0x38, 0x1, + 0x80, 0x58, 0xea, 0xe2, 0x2c, 0xf6, 0x9f, 0x8e, 0xe6, 0x8}, + }, + { + {0xf9, 0xf2, 0xb8, 0xa, 0xd5, 0x9, 0x2d, 0x2f, 0xdf, 0x23, 0x59, + 0xc5, 0x8d, 0x21, 0xb9, 0xac, 0xb9, 0x6c, 0x76, 0x73, 0x26, 0x34, + 0x8f, 0x4a, 0xf5, 0x19, 0xf7, 0x38, 0xd7, 0x3b, 0xb1, 0x4c}, + {0xad, 0x30, 0xc1, 0x4b, 0xa, 0x50, 0xad, 0x34, 0x9c, 0xd4, 0xb, + 0x3d, 0x49, 0xdb, 0x38, 0x8d, 0xbe, 0x89, 0xa, 0x50, 0x98, 0x3d, + 0x5c, 0xa2, 0x9, 0x3b, 0xba, 0xee, 0x87, 0x3f, 0x1f, 0x2f}, + {0x4a, 0xb6, 0x15, 0xe5, 0x75, 0x8c, 0x84, 0xf7, 0x38, 0x90, 0x4a, + 0xdb, 0xba, 0x1, 0x95, 0xa5, 0x50, 0x1b, 0x75, 0x3f, 0x3f, 0x31, + 0xd, 0xc2, 0xe8, 0x2e, 0xae, 0xc0, 0x53, 0xe3, 0xa1, 0x19}, + }, + { + {0xbd, 0xbd, 0x96, 0xd5, 0xcd, 0x72, 0x21, 0xb4, 0x40, 0xfc, 0xee, + 0x98, 0x43, 0x45, 0xe0, 0x93, 0xb5, 0x9, 0x41, 0xb4, 0x47, 0x53, + 0xb1, 0x9f, 0x34, 0xae, 0x66, 0x2, 0x99, 0xd3, 0x6b, 0x73}, + {0xc3, 0x5, 0xfa, 0xba, 0x60, 0x75, 0x1c, 0x7d, 0x61, 0x5e, 0xe5, + 0xc6, 0xa0, 0xa0, 0xe1, 0xb3, 0x73, 0x64, 0xd6, 0xc0, 0x18, 0x97, + 0x52, 0xe3, 0x86, 0x34, 0xc, 0xc2, 0x11, 0x6b, 0x54, 0x41}, + {0xb4, 0xb3, 0x34, 0x93, 0x50, 0x2d, 0x53, 0x85, 0x73, 0x65, 0x81, + 0x60, 0x4b, 0x11, 0xfd, 0x46, 0x75, 0x83, 0x5c, 0x42, 0x30, 0x5f, + 0x5f, 0xcc, 0x5c, 0xab, 0x7f, 0xb8, 0xa2, 0x95, 0x22, 0x41}, + }, + { + {0xc6, 0xea, 0x93, 0xe2, 0x61, 0x52, 0x65, 0x2e, 0xdb, 0xac, 0x33, + 0x21, 0x3, 0x92, 0x5a, 0x84, 0x6b, 0x99, 0x0, 0x79, 0xcb, 0x75, + 0x9, 0x46, 0x80, 0xdd, 0x5a, 0x19, 0x8d, 0xbb, 0x60, 0x7}, + {0xe9, 0xd6, 0x7e, 0xf5, 0x88, 0x9b, 0xc9, 0x19, 0x25, 0xc8, 0xf8, + 0x6d, 0x26, 0xcb, 0x93, 0x53, 0x73, 0xd2, 0xa, 0xb3, 0x13, 0x32, + 0xee, 0x5c, 0x34, 0x2e, 0x2d, 0xb5, 0xeb, 0x53, 0xe1, 0x14}, + {0x8a, 0x81, 0xe6, 0xcd, 0x17, 0x1a, 0x3e, 0x41, 0x84, 0xa0, 0x69, + 0xed, 0xa9, 0x6d, 0x15, 0x57, 0xb1, 0xcc, 0xca, 0x46, 0x8f, 0x26, + 0xbf, 0x2c, 0xf2, 0xc5, 0x3a, 0xc3, 0x9b, 0xbe, 0x34, 0x6b}, + }, + { + {0xd3, 0xf2, 0x71, 0x65, 0x65, 0x69, 0xfc, 0x11, 0x7a, 0x73, 0xe, + 0x53, 0x45, 0xe8, 0xc9, 0xc6, 0x35, 0x50, 0xfe, 0xd4, 0xa2, 0xe7, + 0x3a, 0xe3, 0xb, 0xd3, 0x6d, 0x2e, 0xb6, 0xc7, 0xb9, 0x1}, + {0xb2, 0xc0, 0x78, 0x3a, 0x64, 0x2f, 0xdf, 0xf3, 0x7c, 0x2, 0x2e, + 0xf2, 0x1e, 0x97, 0x3e, 0x4c, 0xa3, 0xb5, 0xc1, 0x49, 0x5e, 0x1c, + 0x7d, 0xec, 0x2d, 0xdd, 0x22, 0x9, 0x8f, 0xc1, 0x12, 0x20}, + {0x29, 0x9d, 0xc8, 0x5a, 0xe5, 0x55, 0xb, 0x88, 0x63, 0xa7, 0xa0, + 0x45, 0x1f, 0x24, 0x83, 0x14, 0x1f, 0x6c, 0xe7, 0xc2, 0xdf, 0xef, + 0x36, 0x3d, 0xe8, 0xad, 0x4b, 0x4e, 0x78, 0x5b, 0xaf, 0x8}, + }, + { + {0x4b, 0x2c, 0xcc, 0x89, 0xd2, 0x14, 0x73, 0xe2, 0x8d, 0x17, 0x87, + 0xa2, 0x11, 0xbd, 0xe4, 0x4b, 0xce, 0x64, 0x33, 0xfa, 0xd6, 0x28, + 0xd5, 0x18, 0x6e, 0x82, 0xd9, 0xaf, 0xd5, 0xc1, 0x23, 0x64}, + {0x33, 0x25, 0x1f, 0x88, 0xdc, 0x99, 0x34, 0x28, 0xb6, 0x23, 0x93, + 0x77, 0xda, 0x25, 0x5, 0x9d, 0xf4, 0x41, 0x34, 0x67, 0xfb, 0xdd, + 0x7a, 0x89, 0x8d, 0x16, 0x3a, 0x16, 0x71, 0x9d, 0xb7, 0x32}, + {0x6a, 0xb3, 0xfc, 0xed, 0xd9, 0xf8, 0x85, 0xcc, 0xf9, 0xe5, 0x46, + 0x37, 0x8f, 0xc2, 0xbc, 0x22, 0xcd, 0xd3, 0xe5, 0xf9, 0x38, 0xe3, + 0x9d, 0xe4, 0xcc, 0x2d, 0x3e, 0xc1, 0xfb, 0x5e, 0xa, 0x48}, + }, + { + {0x1f, 0x22, 0xce, 0x42, 0xe4, 0x4c, 0x61, 0xb6, 0x28, 0x39, 0x5, + 0x4c, 0xcc, 0x9d, 0x19, 0x6e, 0x3, 0xbe, 0x1c, 0xdc, 0xa4, 0xb4, + 0x3f, 0x66, 0x6, 0x8e, 0x1c, 0x69, 0x47, 0x1d, 0xb3, 0x24}, + {0x71, 0x20, 0x62, 0x1, 0xb, 0xe7, 0x51, 0xb, 0xc5, 0xaf, 0x1d, + 0x8b, 0xcf, 0x5, 0xb5, 0x6, 0xcd, 0xab, 0x5a, 0xef, 0x61, 0xb0, + 0x6b, 0x2c, 0x31, 0xbf, 0xb7, 0xc, 0x60, 0x27, 0xaa, 0x47}, + {0xc3, 0xf8, 0x15, 0xc0, 0xed, 0x1e, 0x54, 0x2a, 0x7c, 0x3f, 0x69, + 0x7c, 0x7e, 0xfe, 0xa4, 0x11, 0xd6, 0x78, 0xa2, 0x4e, 0x13, 0x66, + 0xaf, 0xf0, 0x94, 0xa0, 0xdd, 0x14, 0x5d, 0x58, 0x5b, 0x54}, + }, + { + {0xe1, 0x21, 0xb3, 0xe3, 0xd0, 0xe4, 0x4, 0x62, 0x95, 0x1e, 0xff, + 0x28, 0x7a, 0x63, 0xaa, 0x3b, 0x9e, 0xbd, 0x99, 0x5b, 0xfd, 0xcf, + 0xc, 0xb, 0x71, 0xd0, 0xc8, 0x64, 0x3e, 0xdc, 0x22, 0x4d}, + {0xf, 0x3a, 0xd4, 0xa0, 0x5e, 0x27, 0xbf, 0x67, 0xbe, 0xee, 0x9b, + 0x8, 0x34, 0x8e, 0xe6, 0xad, 0x2e, 0xe7, 0x79, 0xd4, 0x4c, 0x13, + 0x89, 0x42, 0x54, 0x54, 0xba, 0x32, 0xc3, 0xf9, 0x62, 0xf}, + {0x39, 0x5f, 0x3b, 0xd6, 0x89, 0x65, 0xb4, 0xfc, 0x61, 0xcf, 0xcb, + 0x57, 0x3f, 0x6a, 0xae, 0x5c, 0x5, 0xfa, 0x3a, 0x95, 0xd2, 0xc2, + 0xba, 0xfe, 0x36, 0x14, 0x37, 0x36, 0x1a, 0xa0, 0xf, 0x1c}, + }, + }, + { + { + {0x50, 0x6a, 0x93, 0x8c, 0xe, 0x2b, 0x8, 0x69, 0xb6, 0xc5, 0xda, + 0xc1, 0x35, 0xa0, 0xc9, 0xf9, 0x34, 0xb6, 0xdf, 0xc4, 0x54, 0x3e, + 0xb7, 0x6f, 0x40, 0xc1, 0x2b, 0x1d, 0x9b, 0x41, 0x5, 0x40}, + {0xff, 0x3d, 0x94, 0x22, 0xb6, 0x4, 0xc6, 0xd2, 0xa0, 0xb3, 0xcf, + 0x44, 0xce, 0xbe, 0x8c, 0xbc, 0x78, 0x86, 0x80, 0x97, 0xf3, 0x4f, + 0x25, 0x5d, 0xbf, 0xa6, 0x1c, 0x3b, 0x4f, 0x61, 0xa3, 0xf}, + {0xf0, 0x82, 0xbe, 0xb9, 0xbd, 0xfe, 0x3, 0xa0, 0x90, 0xac, 0x44, + 0x3a, 0xaf, 0xc1, 0x89, 0x20, 0x8e, 0xfa, 0x54, 0x19, 0x91, 0x9f, + 0x49, 0xf8, 0x42, 0xab, 0x40, 0xef, 0x8a, 0x21, 0xba, 0x1f}, + }, + { + {0x94, 0x1, 0x7b, 0x3e, 0x4, 0x57, 0x3e, 0x4f, 0x7f, 0xaf, 0xda, + 0x8, 0xee, 0x3e, 0x1d, 0xa8, 0xf1, 0xde, 0xdc, 0x99, 0xab, 0xc6, + 0x39, 0xc8, 0xd5, 0x61, 0x77, 0xff, 0x13, 0x5d, 0x53, 0x6c}, + {0x3e, 0xf5, 0xc8, 0xfa, 0x48, 0x94, 0x54, 0xab, 0x41, 0x37, 0xa6, + 0x7b, 0x9a, 0xe8, 0xf6, 0x81, 0x1, 0x5e, 0x2b, 0x6c, 0x7d, 0x6c, + 0xfd, 0x74, 0x42, 0x6e, 0xc8, 0xa8, 0xca, 0x3a, 0x2e, 0x39}, + {0xaf, 0x35, 0x8a, 0x3e, 0xe9, 0x34, 0xbd, 0x4c, 0x16, 0xe8, 0x87, + 0x58, 0x44, 0x81, 0x7, 0x2e, 0xab, 0xb0, 0x9a, 0xf2, 0x76, 0x9c, + 0x31, 0x19, 0x3b, 0xc1, 0xa, 0xd5, 0xe4, 0x7f, 0xe1, 0x25}, + }, + { + {0xa7, 0x21, 0xf1, 0x76, 0xf5, 0x7f, 0x5f, 0x91, 0xe3, 0x87, 0xcd, + 0x2f, 0x27, 0x32, 0x4a, 0xc3, 0x26, 0xe5, 0x1b, 0x4d, 0xde, 0x2f, + 0xba, 0xcc, 0x9b, 0x89, 0x69, 0x89, 0x8f, 0x82, 0xba, 0x6b}, + {0x76, 0xf6, 0x4, 0x1e, 0xd7, 0x9b, 0x28, 0xa, 0x95, 0xf, 0x42, + 0xd6, 0x52, 0x1c, 0x8e, 0x20, 0xab, 0x1f, 0x69, 0x34, 0xb0, 0xd8, + 0x86, 0x51, 0x51, 0xb3, 0x9f, 0x2a, 0x44, 0x51, 0x57, 0x25}, + {0x1, 0x39, 0xfe, 0x90, 0x66, 0xbc, 0xd1, 0xe2, 0xd5, 0x7a, 0x99, + 0xa0, 0x18, 0x4a, 0xb5, 0x4c, 0xd4, 0x60, 0x84, 0xaf, 0x14, 0x69, + 0x1d, 0x97, 0xe4, 0x7b, 0x6b, 0x7f, 0x4f, 0x50, 0x9d, 0x55}, + }, + { + {0xfd, 0x66, 0xd2, 0xf6, 0xe7, 0x91, 0x48, 0x9c, 0x1b, 0x78, 0x7, + 0x3, 0x9b, 0xa1, 0x44, 0x7, 0x3b, 0xe2, 0x61, 0x60, 0x1d, 0x8f, + 0x38, 0x88, 0xe, 0xd5, 0x4b, 0x35, 0xa3, 0xa6, 0x3e, 0x12}, + {0xd5, 0x54, 0xeb, 0xb3, 0x78, 0x83, 0x73, 0xa7, 0x7c, 0x3c, 0x55, + 0xa5, 0x66, 0xd3, 0x69, 0x1d, 0xba, 0x0, 0x28, 0xf9, 0x62, 0xcf, + 0x26, 0xa, 0x17, 0x32, 0x7e, 0x80, 0xd5, 0x12, 0xab, 0x1}, + {0x96, 0x2d, 0xe3, 0x41, 0x90, 0x18, 0x8d, 0x11, 0x48, 0x58, 0x31, + 0xd8, 0xc2, 0xe3, 0xed, 0xb9, 0xd9, 0x45, 0x32, 0xd8, 0x71, 0x42, + 0xab, 0x1e, 0x54, 0xa1, 0x18, 0xc9, 0xe2, 0x61, 0x39, 0x4a}, + }, + { + {0x1e, 0x3f, 0x23, 0xf3, 0x44, 0xd6, 0x27, 0x3, 0x16, 0xf0, 0xfc, + 0x34, 0xe, 0x26, 0x9a, 0x49, 0x79, 0xb9, 0xda, 0xf2, 0x16, 0xa7, + 0xb5, 0x83, 0x1f, 0x11, 0xd4, 0x9b, 0xad, 0xee, 0xac, 0x68}, + {0xa0, 0xbb, 0xe6, 0xf8, 0xe0, 0x3b, 0xdc, 0x71, 0xa, 0xe3, 0xff, + 0x7e, 0x34, 0xf8, 0xce, 0xd6, 0x6a, 0x47, 0x3a, 0xe1, 0x5f, 0x42, + 0x92, 0xa9, 0x63, 0xb7, 0x1d, 0xfb, 0xe3, 0xbc, 0xd6, 0x2c}, + {0x10, 0xc2, 0xd7, 0xf3, 0xe, 0xc9, 0xb4, 0x38, 0xc, 0x4, 0xad, + 0xb7, 0x24, 0x6e, 0x8e, 0x30, 0x23, 0x3e, 0xe7, 0xb7, 0xf1, 0xd9, + 0x60, 0x38, 0x97, 0xf5, 0x8, 0xb5, 0xd5, 0x60, 0x57, 0x59}, + }, + { + {0x90, 0x27, 0x2, 0xfd, 0xeb, 0xcb, 0x2a, 0x88, 0x60, 0x57, 0x11, + 0xc4, 0x5, 0x33, 0xaf, 0x89, 0xf4, 0x73, 0x34, 0x7d, 0xe3, 0x92, + 0xf4, 0x65, 0x2b, 0x5a, 0x51, 0x54, 0xdf, 0xc5, 0xb2, 0x2c}, + {0x97, 0x63, 0xaa, 0x4, 0xe1, 0xbf, 0x29, 0x61, 0xcb, 0xfc, 0xa7, + 0xa4, 0x8, 0x0, 0x96, 0x8f, 0x58, 0x94, 0x90, 0x7d, 0x89, 0xc0, + 0x8b, 0x3f, 0xa9, 0x91, 0xb2, 0xdc, 0x3e, 0xa4, 0x9f, 0x70}, + {0xca, 0x2a, 0xfd, 0x63, 0x8c, 0x5d, 0xa, 0xeb, 0xff, 0x4e, 0x69, + 0x2e, 0x66, 0xc1, 0x2b, 0xd2, 0x3a, 0xb0, 0xcb, 0xf8, 0x6e, 0xf3, + 0x23, 0x27, 0x1f, 0x13, 0xc8, 0xf0, 0xec, 0x29, 0xf0, 0x70}, + }, + { + {0xb9, 0xb0, 0x10, 0x5e, 0xaa, 0xaf, 0x6a, 0x2a, 0xa9, 0x1a, 0x4, + 0xef, 0x70, 0xa3, 0xf0, 0x78, 0x1f, 0xd6, 0x3a, 0xaa, 0x77, 0xfb, + 0x3e, 0x77, 0xe1, 0xd9, 0x4b, 0xa7, 0xa2, 0xa5, 0xec, 0x44}, + {0x33, 0x3e, 0xed, 0x2e, 0xb3, 0x7, 0x13, 0x46, 0xe7, 0x81, 0x55, + 0xa4, 0x33, 0x2f, 0x4, 0xae, 0x66, 0x3, 0x5f, 0x19, 0xd3, 0x49, + 0x44, 0xc9, 0x58, 0x48, 0x31, 0x6c, 0x8a, 0x5d, 0x7d, 0xb}, + {0x43, 0xd5, 0x95, 0x7b, 0x32, 0x48, 0xd4, 0x25, 0x1d, 0xf, 0x34, + 0xa3, 0x0, 0x83, 0xd3, 0x70, 0x2b, 0xc5, 0xe1, 0x60, 0x1c, 0x53, + 0x1c, 0xde, 0xe4, 0xe9, 0x7d, 0x2c, 0x51, 0x24, 0x22, 0x27}, + }, + { + {0xfc, 0x75, 0xa9, 0x42, 0x8a, 0xbb, 0x7b, 0xbf, 0x58, 0xa3, 0xad, + 0x96, 0x77, 0x39, 0x5c, 0x8c, 0x48, 0xaa, 0xed, 0xcd, 0x6f, 0xc7, + 0x7f, 0xe2, 0xa6, 0x20, 0xbc, 0xf6, 0xd7, 0x5f, 0x73, 0x19}, + {0x2e, 0x34, 0xc5, 0x49, 0xaf, 0x92, 0xbc, 0x1a, 0xd0, 0xfa, 0xe6, + 0xb2, 0x11, 0xd8, 0xee, 0xff, 0x29, 0x4e, 0xc8, 0xfc, 0x8d, 0x8c, + 0xa2, 0xef, 0x43, 0xc5, 0x4c, 0xa4, 0x18, 0xdf, 0xb5, 0x11}, + {0x66, 0x42, 0xc8, 0x42, 0xd0, 0x90, 0xab, 0xe3, 0x7e, 0x54, 0x19, + 0x7f, 0xf, 0x8e, 0x84, 0xeb, 0xb9, 0x97, 0xa4, 0x65, 0xd0, 0xa1, + 0x3, 0x25, 0x5f, 0x89, 0xdf, 0x91, 0x11, 0x91, 0xef, 0xf}, }, }, }; @@ -7639,7 +3031,7 @@ static const ge_precomp Bi[8] = { { {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 1288382639258501, 245678601348599, 269427782077623, 1462984067271730, 137412439391563 #else @@ -7648,7 +3040,7 @@ #endif }}, {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 62697248952638, 204681361388450, 631292143396476, 338455783676468, 1213667448819585 #else @@ -7657,7 +3049,7 @@ #endif }}, {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 301289933810280, 1259582250014073, 1422107436869536, 796239922652654, 1953934009299142 #else @@ -7668,7 +3060,7 @@ }, { {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 1601611775252272, 1720807796594148, 1132070835939856, 1260455018889551, 2147779492816911 #else @@ -7677,7 +3069,7 @@ #endif }}, {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 316559037616741, 2177824224946892, 1459442586438991, 1461528397712656, 751590696113597 #else @@ -7686,7 +3078,7 @@ #endif }}, {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 1850748884277385, 1200145853858453, 1068094770532492, 672251375690438, 1586055907191707 #else @@ -7697,7 +3089,7 @@ }, { {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 769950342298419, 132954430919746, 844085933195555, 974092374476333, 726076285546016 #else @@ -7706,7 +3098,7 @@ #endif }}, {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 425251763115706, 608463272472562, 442562545713235, 837766094556764, 374555092627893 #else @@ -7715,7 +3107,7 @@ #endif }}, {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 1086255230780037, 274979815921559, 1960002765731872, 929474102396301, 1190409889297339 #else @@ -7726,7 +3118,7 @@ }, { {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 665000864555967, 2065379846933859, 370231110385876, 350988370788628, 1233371373142985 #else @@ -7735,7 +3127,7 @@ #endif }}, {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 2019367628972465, 676711900706637, 110710997811333, 1108646842542025, 517791959672113 #else @@ -7744,7 +3136,7 @@ #endif }}, {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 965130719900578, 247011430587952, 526356006571389, 91986625355052, 2157223321444601 #else @@ -7755,7 +3147,7 @@ }, { {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 1802695059465007, 1664899123557221, 593559490740857, 2160434469266659, 927570450755031 #else @@ -7764,7 +3156,7 @@ #endif }}, {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 1725674970513508, 1933645953859181, 1542344539275782, 1767788773573747, 1297447965928905 #else @@ -7773,7 +3165,7 @@ #endif }}, {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 1381809363726107, 1430341051343062, 2061843536018959, 1551778050872521, 2036394857967624 #else @@ -7784,7 +3176,7 @@ }, { {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 1970894096313054, 528066325833207, 1619374932191227, 2207306624415883, 1169170329061080 #else @@ -7793,7 +3185,7 @@ #endif }}, {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 2070390218572616, 1458919061857835, 624171843017421, 1055332792707765, 433987520732508 #else @@ -7802,7 +3194,7 @@ #endif }}, {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 893653801273833, 1168026499324677, 1242553501121234, 1306366254304474, 1086752658510815 #else @@ -7813,7 +3205,7 @@ }, { {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 213454002618221, 939771523987438, 1159882208056014, 317388369627517, 621213314200687 #else @@ -7822,7 +3214,7 @@ #endif }}, {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 1971678598905747, 338026507889165, 762398079972271, 655096486107477, 42299032696322 #else @@ -7831,7 +3223,7 @@ #endif }}, {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 177130678690680, 1754759263300204, 1864311296286618, 1180675631479880, 1292726903152791 #else @@ -7842,7 +3234,7 @@ }, { {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 1913163449625248, 460779200291993, 2193883288642314, 1008900146920800, 1721983679009502 #else @@ -7851,7 +3243,7 @@ #endif }}, {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 1070401523076875, 1272492007800961, 1910153608563310, 2075579521696771, 1191169788841221 #else @@ -7860,7 +3252,7 @@ #endif }}, {{ -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) 692896803108118, 500174642072499, 2068223309439677, 1162190621851337, 1426986007309901 #else diff -Nru temporalio-1.3.0/vendor/ring/crypto/curve25519/internal.h temporalio-1.3.0/vendor/ring/crypto/curve25519/internal.h --- temporalio-1.3.0/vendor/ring/crypto/curve25519/internal.h 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/curve25519/internal.h 2023-10-30 19:40:00.000000000 +0000 @@ -15,7 +15,7 @@ #ifndef OPENSSL_HEADER_CURVE25519_INTERNAL_H #define OPENSSL_HEADER_CURVE25519_INTERNAL_H -#include +#include #include "../internal.h" @@ -24,15 +24,32 @@ #define BORINGSSL_X25519_NEON // x25519_NEON is defined in asm/x25519-arm.S. -void GFp_x25519_NEON(uint8_t out[32], const uint8_t scalar[32], +void x25519_NEON(uint8_t out[32], const uint8_t scalar[32], const uint8_t point[32]); #endif -#if defined(BORINGSSL_HAS_UINT128) -#define BORINGSSL_CURVE25519_64BIT +#if !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_SMALL) && !defined(OPENSSL_WINDOWS) && \ + defined(__GNUC__) && defined(__x86_64__) +#define BORINGSSL_FE25519_ADX + +// fiat_curve25519_adx_mul is defined in +// third_party/fiat/asm/fiat_curve25519_adx_mul.S +void __attribute__((sysv_abi)) +fiat_curve25519_adx_mul(uint64_t out[4], const uint64_t in1[4], + const uint64_t in2[4]); + +// fiat_curve25519_adx_square is defined in +// third_party/fiat/asm/fiat_curve25519_adx_square.S +void __attribute__((sysv_abi)) +fiat_curve25519_adx_square(uint64_t out[4], const uint64_t in[4]); + +// x25519_scalar_mult_adx is defined in third_party/fiat/curve25519_64_adx.h +void x25519_scalar_mult_adx(uint8_t out[32], const uint8_t scalar[32], + const uint8_t point[32]); +void x25519_ge_scalarmult_base_adx(uint8_t h[4][32], const uint8_t a[32]); #endif -#if defined(BORINGSSL_CURVE25519_64BIT) +#if defined(OPENSSL_64_BIT) // An element t, // entries t[0]...t[4], represents the integer t[0]+2^51 t[1]+2^102 t[2]+2^153 // t[3]+2^204 t[4]. @@ -113,4 +130,6 @@ fe_loose T2d; } ge_cached; +extern const uint8_t k25519Precomp[32][8][3][32]; + #endif // OPENSSL_HEADER_CURVE25519_INTERNAL_H diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/aes_nohw.c temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/aes_nohw.c --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/aes_nohw.c 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/aes_nohw.c 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#include +#include #include "../../internal.h" @@ -70,12 +70,6 @@ _mm_set_epi32(0x00ff0000, 0x00ff0000, 0x00ff0000, 0x00ff0000) #define AES_NOHW_ROW3_MASK \ _mm_set_epi32(0xff000000, 0xff000000, 0xff000000, 0xff000000) -#define AES_NOHW_COL01_MASK \ - _mm_set_epi32(0x00000000, 0x00000000, 0xffffffff, 0xffffffff) -#define AES_NOHW_COL2_MASK \ - _mm_set_epi32(0x00000000, 0xffffffff, 0x00000000, 0x00000000) -#define AES_NOHW_COL3_MASK \ - _mm_set_epi32(0xffffffff, 0x00000000, 0x00000000, 0x00000000) static inline aes_word_t aes_nohw_and(aes_word_t a, aes_word_t b) { return _mm_and_si128(a, b); @@ -109,9 +103,6 @@ #define AES_NOHW_ROW1_MASK UINT64_C(0x00f000f000f000f0) #define AES_NOHW_ROW2_MASK UINT64_C(0x0f000f000f000f00) #define AES_NOHW_ROW3_MASK UINT64_C(0xf000f000f000f000) -#define AES_NOHW_COL01_MASK UINT64_C(0x00000000ffffffff) -#define AES_NOHW_COL2_MASK UINT64_C(0x0000ffff00000000) -#define AES_NOHW_COL3_MASK UINT64_C(0xffff000000000000) #else // !OPENSSL_64_BIT typedef uint32_t aes_word_t; #define AES_NOHW_WORD_SIZE 4 @@ -120,9 +111,6 @@ #define AES_NOHW_ROW1_MASK 0x0c0c0c0c #define AES_NOHW_ROW2_MASK 0x30303030 #define AES_NOHW_ROW3_MASK 0xc0c0c0c0 -#define AES_NOHW_COL01_MASK 0x0000ffff -#define AES_NOHW_COL2_MASK 0x00ff0000 -#define AES_NOHW_COL3_MASK 0xff000000 #endif // OPENSSL_64_BIT static inline aes_word_t aes_nohw_and(aes_word_t a, aes_word_t b) { @@ -285,6 +273,9 @@ // http://programming.sirrida.de/calcperm.php on smaller inputs. #if defined(OPENSSL_64_BIT) static inline uint64_t aes_nohw_compact_word(uint64_t a) { +#if defined(RING_BIG_ENDIAN) + a = CRYPTO_bswap8(a); +#endif // Numbering the 64/2 = 16 4-bit chunks, least to most significant, we swap // quartets of those chunks: // 0 1 2 3 | 4 5 6 7 | 8 9 10 11 | 12 13 14 15 => @@ -306,10 +297,16 @@ a = aes_nohw_delta_swap(a, UINT64_C(0x00000000ffff0000), 16); a = aes_nohw_delta_swap(a, UINT64_C(0x0000ff000000ff00), 8); a = aes_nohw_delta_swap(a, UINT64_C(0x00f000f000f000f0), 4); +#if defined(RING_BIG_ENDIAN) + a = CRYPTO_bswap8(a); +#endif return a; } #else // !OPENSSL_64_BIT static inline uint32_t aes_nohw_compact_word(uint32_t a) { +#if defined(RING_BIG_ENDIAN) + a = CRYPTO_bswap4(a); +#endif // Numbering the 32/2 = 16 pairs of bits, least to most significant, we swap: // 0 1 2 3 | 4 5 6 7 | 8 9 10 11 | 12 13 14 15 => // 0 4 2 6 | 1 5 3 7 | 8 12 10 14 | 9 13 11 15 @@ -328,6 +325,9 @@ // Reverse the steps of |aes_nohw_uncompact_word|. a = aes_nohw_delta_swap(a, 0x0000f0f0, 12); a = aes_nohw_delta_swap(a, 0x00cc00cc, 6); +#if defined(RING_BIG_ENDIAN) + a = CRYPTO_bswap4(a); +#endif return a; } @@ -346,7 +346,7 @@ static inline void aes_nohw_compact_block(aes_word_t out[AES_NOHW_BLOCK_WORDS], const uint8_t in[16]) { - GFp_memcpy(out, in, 16); + OPENSSL_memcpy(out, in, 16); #if defined(OPENSSL_SSE2) // No conversions needed. #elif defined(OPENSSL_64_BIT) @@ -374,7 +374,7 @@ static inline void aes_nohw_uncompact_block( uint8_t out[16], const aes_word_t in[AES_NOHW_BLOCK_WORDS]) { #if defined(OPENSSL_SSE2) - GFp_memcpy(out, in, 16); // No conversions needed. + OPENSSL_memcpy(out, in, 16); // No conversions needed. #elif defined(OPENSSL_64_BIT) uint64_t a0 = in[0]; uint64_t a1 = in[1]; @@ -382,8 +382,8 @@ aes_nohw_uncompact_word((a0 & UINT64_C(0x00000000ffffffff)) | (a1 << 32)); uint64_t b1 = aes_nohw_uncompact_word((a1 & UINT64_C(0xffffffff00000000)) | (a0 >> 32)); - GFp_memcpy(out, &b0, 8); - GFp_memcpy(out + 8, &b1, 8); + OPENSSL_memcpy(out, &b0, 8); + OPENSSL_memcpy(out + 8, &b1, 8); #else uint32_t a0 = in[0]; uint32_t a1 = in[1]; @@ -404,10 +404,10 @@ b1 = aes_nohw_uncompact_word(b1); b2 = aes_nohw_uncompact_word(b2); b3 = aes_nohw_uncompact_word(b3); - GFp_memcpy(out, &b0, 4); - GFp_memcpy(out + 4, &b1, 4); - GFp_memcpy(out + 8, &b2, 4); - GFp_memcpy(out + 12, &b3, 4); + OPENSSL_memcpy(out, &b0, 4); + OPENSSL_memcpy(out + 4, &b1, 4); + OPENSSL_memcpy(out + 8, &b2, 4); + OPENSSL_memcpy(out + 12, &b3, 4); #endif } @@ -475,7 +475,7 @@ static void aes_nohw_to_batch(AES_NOHW_BATCH *out, const uint8_t *in, size_t num_blocks) { // Don't leave unused blocks uninitialized. - GFp_memset(out, 0, sizeof(AES_NOHW_BATCH)); + OPENSSL_memset(out, 0, sizeof(AES_NOHW_BATCH)); debug_assert_nonsecret(num_blocks <= AES_NOHW_BATCH_SIZE); for (size_t i = 0; i < num_blocks; i++) { aes_word_t block[AES_NOHW_BLOCK_WORDS]; @@ -766,11 +766,11 @@ static void aes_nohw_expand_round_keys(AES_NOHW_SCHEDULE *out, const AES_KEY *key) { - for (unsigned i = 0; i <= key->rounds; i++) { + for (size_t i = 0; i <= key->rounds; i++) { // Copy the round key into each block in the batch. for (size_t j = 0; j < AES_NOHW_BATCH_SIZE; j++) { aes_word_t tmp[AES_NOHW_BLOCK_WORDS]; - GFp_memcpy(tmp, key->rd_key + 4 * i, 16); + OPENSSL_memcpy(tmp, key->rd_key + 4 * i, 16); aes_nohw_batch_set(&out->keys[i], tmp, j); } aes_nohw_transpose(&out->keys[i]); @@ -794,7 +794,7 @@ static void aes_nohw_sub_block(aes_word_t out[AES_NOHW_BLOCK_WORDS], const aes_word_t in[AES_NOHW_BLOCK_WORDS]) { AES_NOHW_BATCH batch; - GFp_memset(&batch, 0, sizeof(batch)); + OPENSSL_memset(&batch, 0, sizeof(batch)); aes_nohw_batch_set(&batch, in, 0); aes_nohw_transpose(&batch); aes_nohw_sub_bytes(&batch); @@ -807,7 +807,7 @@ aes_word_t block[AES_NOHW_BLOCK_WORDS]; aes_nohw_compact_block(block, in); - GFp_memcpy(key->rd_key, block, 16); + OPENSSL_memcpy(key->rd_key, block, 16); for (size_t i = 1; i <= 10; i++) { aes_word_t sub[AES_NOHW_BLOCK_WORDS]; @@ -826,7 +826,7 @@ block[j] = aes_nohw_xor(block[j], aes_nohw_shift_left(v, 8)); block[j] = aes_nohw_xor(block[j], aes_nohw_shift_left(v, 12)); } - GFp_memcpy(key->rd_key + 4 * i, block, 16); + OPENSSL_memcpy(key->rd_key + 4 * i, block, 16); } } @@ -836,10 +836,10 @@ // Each key schedule iteration produces two round keys. aes_word_t block1[AES_NOHW_BLOCK_WORDS], block2[AES_NOHW_BLOCK_WORDS]; aes_nohw_compact_block(block1, in); - GFp_memcpy(key->rd_key, block1, 16); + OPENSSL_memcpy(key->rd_key, block1, 16); aes_nohw_compact_block(block2, in + 16); - GFp_memcpy(key->rd_key + 4, block2, 16); + OPENSSL_memcpy(key->rd_key + 4, block2, 16); for (size_t i = 2; i <= 14; i += 2) { aes_word_t sub[AES_NOHW_BLOCK_WORDS]; @@ -857,7 +857,7 @@ block1[j] = aes_nohw_xor(block1[j], aes_nohw_shift_left(v, 8)); block1[j] = aes_nohw_xor(block1[j], aes_nohw_shift_left(v, 12)); } - GFp_memcpy(key->rd_key + 4 * i, block1, 16); + OPENSSL_memcpy(key->rd_key + 4 * i, block1, 16); if (i == 14) { break; @@ -873,15 +873,15 @@ block2[j] = aes_nohw_xor(block2[j], aes_nohw_shift_left(v, 8)); block2[j] = aes_nohw_xor(block2[j], aes_nohw_shift_left(v, 12)); } - GFp_memcpy(key->rd_key + 4 * (i + 1), block2, 16); + OPENSSL_memcpy(key->rd_key + 4 * (i + 1), block2, 16); } } // External API. -int GFp_aes_nohw_set_encrypt_key(const uint8_t *key, unsigned bits, - AES_KEY *aeskey) { +int aes_nohw_set_encrypt_key(const uint8_t *key, unsigned bits, + AES_KEY *aeskey) { switch (bits) { case 128: aes_nohw_setup_key_128(aeskey, key); @@ -893,7 +893,7 @@ return 1; } -void GFp_aes_nohw_encrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key) { +void aes_nohw_encrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key) { AES_NOHW_SCHEDULE sched; aes_nohw_expand_round_keys(&sched, key); AES_NOHW_BATCH batch; @@ -906,16 +906,16 @@ const uint8_t b[16]) { for (size_t i = 0; i < 16; i += sizeof(aes_word_t)) { aes_word_t x, y; - GFp_memcpy(&x, a + i, sizeof(aes_word_t)); - GFp_memcpy(&y, b + i, sizeof(aes_word_t)); + OPENSSL_memcpy(&x, a + i, sizeof(aes_word_t)); + OPENSSL_memcpy(&y, b + i, sizeof(aes_word_t)); x = aes_nohw_xor(x, y); - GFp_memcpy(out + i, &x, sizeof(aes_word_t)); + OPENSSL_memcpy(out + i, &x, sizeof(aes_word_t)); } } -void GFp_aes_nohw_ctr32_encrypt_blocks(const uint8_t *in, uint8_t *out, - size_t blocks, const AES_KEY *key, - const uint8_t ivec[16]) { +void aes_nohw_ctr32_encrypt_blocks(const uint8_t *in, uint8_t *out, + size_t blocks, const AES_KEY *key, + const uint8_t ivec[16]) { if (blocks == 0) { return; } @@ -924,29 +924,27 @@ aes_nohw_expand_round_keys(&sched, key); // Make |AES_NOHW_BATCH_SIZE| copies of |ivec|. - alignas(AES_NOHW_WORD_SIZE) union { - uint32_t u32[AES_NOHW_BATCH_SIZE * 4]; - uint8_t u8[AES_NOHW_BATCH_SIZE * 16]; - } ivs, enc_ivs; + alignas(AES_NOHW_WORD_SIZE) uint8_t ivs[AES_NOHW_BATCH_SIZE * 16]; + alignas(AES_NOHW_WORD_SIZE) uint8_t enc_ivs[AES_NOHW_BATCH_SIZE * 16]; for (size_t i = 0; i < AES_NOHW_BATCH_SIZE; i++) { - GFp_memcpy(ivs.u8 + 16 * i, ivec, 16); + OPENSSL_memcpy(ivs + 16 * i, ivec, 16); } - uint32_t ctr = CRYPTO_bswap4(ivs.u32[3]); + uint32_t ctr = CRYPTO_load_u32_be(ivs + 12); for (;;) { // Update counters. - for (uint32_t i = 0; i < AES_NOHW_BATCH_SIZE; i++) { - ivs.u32[4 * i + 3] = CRYPTO_bswap4(ctr + i); + for (size_t i = 0; i < AES_NOHW_BATCH_SIZE; i++) { + CRYPTO_store_u32_be(ivs + 16 * i + 12, ctr + (uint32_t)i); } size_t todo = blocks >= AES_NOHW_BATCH_SIZE ? AES_NOHW_BATCH_SIZE : blocks; AES_NOHW_BATCH batch; - aes_nohw_to_batch(&batch, ivs.u8, todo); + aes_nohw_to_batch(&batch, ivs, todo); aes_nohw_encrypt_batch(&sched, key->rounds, &batch); - aes_nohw_from_batch(enc_ivs.u8, todo, &batch); + aes_nohw_from_batch(enc_ivs, todo, &batch); for (size_t i = 0; i < todo; i++) { - aes_nohw_xor_block(out + 16 * i, in + 16 * i, enc_ivs.u8 + 16 * i); + aes_nohw_xor_block(out + 16 * i, in + 16 * i, enc_ivs + 16 * i); } blocks -= todo; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/aesni-x86_64.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/aesni-x86_64.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/aesni-x86_64.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/aesni-x86_64.pl 2023-10-30 19:40:00.000000000 +0000 @@ -206,7 +206,7 @@ ("%rdi","%rsi","%rdx","%rcx"); # Unix order $code=".text\n"; -$code.=".extern GFp_ia32cap_P\n"; +$code.=".extern OPENSSL_ia32cap_P\n"; $rounds="%eax"; # input to and changed by aesni_[en|de]cryptN !!! # this is natural Unix argument order for public $PREFIX_[ecb|cbc]_encrypt ... @@ -265,11 +265,16 @@ { my ($inp,$out,$key) = @_4args; $code.=<<___; -.globl GFp_${PREFIX}_encrypt -.type GFp_${PREFIX}_encrypt,\@abi-omnipotent +.globl ${PREFIX}_encrypt +.type ${PREFIX}_encrypt,\@abi-omnipotent .align 16 -GFp_${PREFIX}_encrypt: +${PREFIX}_encrypt: .cfi_startproc + _CET_ENDBR +#ifdef BORINGSSL_DISPATCH_TEST +.extern BORINGSSL_function_hit + movb \$1,BORINGSSL_function_hit+1(%rip) +#endif movups ($inp),$inout0 # load input mov 240($key),$rounds # key->rounds ___ @@ -281,7 +286,7 @@ pxor $inout0,$inout0 ret .cfi_endproc -.size GFp_${PREFIX}_encrypt,.-GFp_${PREFIX}_encrypt +.size ${PREFIX}_encrypt,.-${PREFIX}_encrypt ___ } @@ -577,9 +582,9 @@ if ($PREFIX eq "aes_hw") { { ###################################################################### -# void GFp_aes_hw_ctr32_encrypt_blocks (const void *in, void *out, -# size_t blocks, const AES_KEY *key, -# const char *ivec); +# void aesni_ctr32_encrypt_blocks (const void *in, void *out, +# size_t blocks, const AES_KEY *key, +# const char *ivec); # # Handles only complete blocks, operates on 32-bit counter and # does not update *ivec! (see crypto/modes/ctr128.c for details) @@ -594,11 +599,15 @@ my $frame_size = 0x80 + ($win64?160:0); $code.=<<___; -.globl GFp_${PREFIX}_ctr32_encrypt_blocks -.type GFp_${PREFIX}_ctr32_encrypt_blocks,\@function,5 +.globl ${PREFIX}_ctr32_encrypt_blocks +.type ${PREFIX}_ctr32_encrypt_blocks,\@function,5 .align 16 -GFp_${PREFIX}_ctr32_encrypt_blocks: +${PREFIX}_ctr32_encrypt_blocks: .cfi_startproc + _CET_ENDBR +#ifdef BORINGSSL_DISPATCH_TEST + movb \$1,BORINGSSL_function_hit(%rip) +#endif cmp \$1,$len jne .Lctr32_bulk @@ -692,7 +701,7 @@ lea 7($ctr),%r9 mov %r10d,0x60+12(%rsp) bswap %r9d - leaq GFp_ia32cap_P(%rip),%r10 + leaq OPENSSL_ia32cap_P(%rip),%r10 mov 4(%r10),%r10d xor $key0,%r9d and \$`1<<26|1<<22`,%r10d # isolate XSAVE+MOVBE @@ -918,6 +927,8 @@ pxor $rndkey0,$in3 movdqu 0x50($inp),$in5 pxor $rndkey0,$in4 + prefetcht0 0x1c0($inp) # We process 128 bytes (8*16), so to prefetch 1 iteration + prefetcht0 0x200($inp) # We need to prefetch 2 64 byte lines pxor $rndkey0,$in5 aesenc $rndkey1,$inout0 aesenc $rndkey1,$inout1 @@ -1151,7 +1162,7 @@ .Lctr32_epilogue: ret .cfi_endproc -.size GFp_${PREFIX}_ctr32_encrypt_blocks,.-GFp_${PREFIX}_ctr32_encrypt_blocks +.size ${PREFIX}_ctr32_encrypt_blocks,.-${PREFIX}_ctr32_encrypt_blocks ___ } }} @@ -1167,8 +1178,8 @@ # Aggressively optimized in respect to aeskeygenassist's critical path # and is contained in %xmm0-5 to meet Win64 ABI requirement. # -# int GFp_${PREFIX}_set_encrypt_key(const unsigned char *inp, -# int bits, AES_KEY * const key); +# int ${PREFIX}_set_encrypt_key(const unsigned char *inp, +# int bits, AES_KEY * const key); # # input: $inp user-supplied key # $bits $inp length in bits @@ -1184,12 +1195,16 @@ # amount of volatile registers is smaller on Windows. # $code.=<<___; -.globl GFp_${PREFIX}_set_encrypt_key -.type GFp_${PREFIX}_set_encrypt_key,\@abi-omnipotent +.globl ${PREFIX}_set_encrypt_key +.type ${PREFIX}_set_encrypt_key,\@abi-omnipotent .align 16 -GFp_${PREFIX}_set_encrypt_key: +${PREFIX}_set_encrypt_key: __aesni_set_encrypt_key: .cfi_startproc + _CET_ENDBR +#ifdef BORINGSSL_DISPATCH_TEST + movb \$1,BORINGSSL_function_hit+3(%rip) +#endif .byte 0x48,0x83,0xEC,0x08 # sub rsp,8 .cfi_adjust_cfa_offset 8 mov \$-1,%rax @@ -1200,7 +1215,7 @@ movups ($inp),%xmm0 # pull first 128 bits of *userKey xorps %xmm4,%xmm4 # low dword of xmm4 is assumed 0 - leaq GFp_ia32cap_P(%rip),%r10 + leaq OPENSSL_ia32cap_P(%rip),%r10 movl 4(%r10),%r10d and \$`1<<28|1<<11`,%r10d # AVX and XOP bits lea 16($key),%rax # %rax is used as modifiable copy of $key @@ -1419,7 +1434,7 @@ .cfi_adjust_cfa_offset -8 ret .cfi_endproc -.LSEH_end_GFp_set_encrypt_key: +.LSEH_end_set_encrypt_key: .align 16 .Lkey_expansion_128: @@ -1489,12 +1504,13 @@ shufps \$0b10101010,%xmm1,%xmm1 # critical path xorps %xmm1,%xmm2 ret -.size GFp_${PREFIX}_set_encrypt_key,.-GFp_${PREFIX}_set_encrypt_key +.size ${PREFIX}_set_encrypt_key,.-${PREFIX}_set_encrypt_key .size __aesni_set_encrypt_key,.-__aesni_set_encrypt_key ___ } $code.=<<___; +.section .rodata .align 64 .Lbswap_mask: .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -1515,6 +1531,7 @@ .asciz "AES for Intel AES-NI, CRYPTOGAMS by " .align 64 +.text ___ # EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame, @@ -1616,25 +1633,25 @@ .align 4 ___ $code.=<<___ if ($PREFIX eq "aes_hw"); - .rva .LSEH_begin_GFp_${PREFIX}_ctr32_encrypt_blocks - .rva .LSEH_end_GFp_${PREFIX}_ctr32_encrypt_blocks - .rva .LSEH_info_GFp_ctr32 + .rva .LSEH_begin_${PREFIX}_ctr32_encrypt_blocks + .rva .LSEH_end_${PREFIX}_ctr32_encrypt_blocks + .rva .LSEH_info_ctr32 ___ $code.=<<___; - .rva GFp_${PREFIX}_set_encrypt_key - .rva .LSEH_end_GFp_set_encrypt_key - .rva .LSEH_info_GFp_key + .rva ${PREFIX}_set_encrypt_key + .rva .LSEH_end_set_encrypt_key + .rva .LSEH_info_key .section .xdata .align 8 ___ $code.=<<___ if ($PREFIX eq "aes_hw"); -.LSEH_info_GFp_ctr32: +.LSEH_info_ctr32: .byte 9,0,0,0 .rva ctr_xts_se_handler .rva .Lctr32_body,.Lctr32_epilogue # HandlerData[] ___ $code.=<<___; -.LSEH_info_GFp_key: +.LSEH_info_key: .byte 0x01,0x04,0x01,0x00 .byte 0x04,0x02,0x00,0x00 # sub rsp,8 ___ @@ -1701,4 +1718,4 @@ print $code; -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/aesni-x86.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/aesni-x86.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/aesni-x86.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/aesni-x86.pl 2023-10-30 19:40:00.000000000 +0000 @@ -67,10 +67,10 @@ # Goldmont 3.84/1.39 1.39 1.63 1.31 1.70 # Bulldozer 5.80/0.98 1.05 1.24 0.93 1.23 -$PREFIX="GFp_aes_hw"; # if $PREFIX is set to "AES", the script +$PREFIX="aes_hw"; # if $PREFIX is set to "AES", the script # generates drop-in replacement for # crypto/aes/asm/aes-586.pl:-) -$AESNI_PREFIX="GFp_aes_hw"; +$AESNI_PREFIX="aes_hw"; $inline=1; # inline _aesni_[en|de]crypt $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; @@ -83,7 +83,10 @@ &asm_init($ARGV[0]); -&external_label("GFp_ia32cap_P"); +&external_label("OPENSSL_ia32cap_P"); +&preprocessor_ifdef("BORINGSSL_DISPATCH_TEST") +&external_label("BORINGSSL_function_hit"); +&preprocessor_endif(); &static_label("key_const"); if ($PREFIX eq $AESNI_PREFIX) { $movekey=\&movups; } @@ -192,6 +195,8 @@ # void $PREFIX_encrypt (const void *inp,void *out,const AES_KEY *key); &aesni_generate1("enc") if (!$inline); &function_begin_B("${PREFIX}_encrypt"); + &record_function_hit(1); + &mov ("eax",&wparam(0)); &mov ($key,&wparam(2)); &movups ($inout0,&QWP(0,"eax")); @@ -419,6 +424,8 @@ # 80 saved %esp &function_begin("${PREFIX}_ctr32_encrypt_blocks"); + &record_function_hit(0); + &mov ($inp,&wparam(0)); &mov ($out,&wparam(1)); &mov ($len,&wparam(2)); @@ -688,7 +695,7 @@ &blindpop("ebx"); &lea ("ebx",&DWP(&label("key_const")."-".&label("pic"),"ebx")); - &picmeup("ebp","GFp_ia32cap_P","ebx",&label("key_const")); + &picmeup("ebp","OPENSSL_ia32cap_P","ebx",&label("key_const")); &movups ("xmm0",&QWP(0,"eax")); # pull first 128 bits of *userKey &xorps ("xmm4","xmm4"); # low dword of xmm4 is assumed 0 &mov ("ebp",&DWP(4,"ebp")); @@ -952,6 +959,8 @@ # int $PREFIX_set_encrypt_key (const unsigned char *userKey, int bits, # AES_KEY *key) &function_begin_B("${PREFIX}_set_encrypt_key"); + &record_function_hit(3); + &mov ("eax",&wparam(0)); &mov ($rounds,&wparam(1)); &mov ($key,&wparam(2)); @@ -968,4 +977,4 @@ &asm_finish(); -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/aesv8-armx.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/aesv8-armx.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/aesv8-armx.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/aesv8-armx.pl 2023-10-30 19:40:00.000000000 +0000 @@ -47,13 +47,13 @@ ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; -open OUT,"| \"$^X\" $xlate $flavour $output"; +open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""; *STDOUT=*OUT; $prefix="aes_hw"; $code=<<___; -#include +#include #if __ARM_MAX_ARCH__>=7 .text @@ -89,10 +89,10 @@ .text -.globl GFp_${prefix}_set_encrypt_key -.type GFp_${prefix}_set_encrypt_key,%function +.globl ${prefix}_set_encrypt_key +.type ${prefix}_set_encrypt_key,%function .align 5 -GFp_${prefix}_set_encrypt_key: +${prefix}_set_encrypt_key: .Lenc_key: ___ $code.=<<___ if ($flavour =~ /64/); @@ -235,7 +235,7 @@ mov x0,$ptr // return value `"ldr x29,[sp],#16" if ($flavour =~ /64/)` ret -.size GFp_${prefix}_set_encrypt_key,.-GFp_${prefix}_set_encrypt_key +.size ${prefix}_set_encrypt_key,.-${prefix}_set_encrypt_key ___ }}} {{{ @@ -247,10 +247,10 @@ my ($rndkey0,$rndkey1,$inout)=map("q$_",(0..3)); $code.=<<___; -.globl GFp_${prefix}_${dir}crypt -.type GFp_${prefix}_${dir}crypt,%function +.globl ${prefix}_${dir}crypt +.type ${prefix}_${dir}crypt,%function .align 5 -GFp_${prefix}_${dir}crypt: +${prefix}_${dir}crypt: AARCH64_VALID_CALL_TARGET ldr $rounds,[$key,#240] vld1.32 {$rndkey0},[$key],#16 @@ -276,11 +276,12 @@ vst1.8 {$inout},[$out] ret -.size GFp_${prefix}_${dir}crypt,.-GFp_${prefix}_${dir}crypt +.size ${prefix}_${dir}crypt,.-${prefix}_${dir}crypt ___ } &gen_block("en"); -&gen_block("de"); +# Decryption removed in *ring*. +# &gen_block("de"); }}} {{{ my ($inp,$out,$len,$key,$ivp)=map("x$_",(0..4)); @@ -296,10 +297,10 @@ ### q8-q15 preloaded key schedule $code.=<<___; -.globl GFp_${prefix}_ctr32_encrypt_blocks -.type GFp_${prefix}_ctr32_encrypt_blocks,%function +.globl ${prefix}_ctr32_encrypt_blocks +.type ${prefix}_ctr32_encrypt_blocks,%function .align 5 -GFp_${prefix}_ctr32_encrypt_blocks: +${prefix}_ctr32_encrypt_blocks: ___ $code.=<<___ if ($flavour =~ /64/); // Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later. @@ -513,7 +514,7 @@ ret ___ $code.=<<___; -.size GFp_${prefix}_ctr32_encrypt_blocks,.-GFp_${prefix}_ctr32_encrypt_blocks +.size ${prefix}_ctr32_encrypt_blocks,.-${prefix}_ctr32_encrypt_blocks ___ }}} $code.=<<___; @@ -558,6 +559,9 @@ s/\.[ui]?64//o and s/\.16b/\.2d/go; s/\.[42]([sd])\[([0-3])\]/\.$1\[$2\]/o; + # Switch preprocessor checks to aarch64 versions. + s/__ARME([BL])__/__AARCH64E$1__/go; + print $_,"\n"; } } else { ######## 32-bit code @@ -627,4 +631,4 @@ } } -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/bsaes-armv7.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/bsaes-armv7.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/bsaes-armv7.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/bsaes-armv7.pl 2023-10-30 19:40:00.000000000 +0000 @@ -60,7 +60,7 @@ ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; - open OUT,"| \"$^X\" $xlate $flavour $output"; + open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""; *STDOUT=*OUT; } else { open OUT,">$output"; @@ -707,7 +707,7 @@ $code.=<<___; #ifndef __KERNEL__ -# include +# include # define VFP_ABI_PUSH vstmdb sp!,{d8-d15} # define VFP_ABI_POP vldmia sp!,{d8-d15} @@ -937,10 +937,10 @@ my $keysched = "sp"; $code.=<<___; -.global GFp_bsaes_ctr32_encrypt_blocks -.type GFp_bsaes_ctr32_encrypt_blocks,%function +.global bsaes_ctr32_encrypt_blocks +.type bsaes_ctr32_encrypt_blocks,%function .align 5 -GFp_bsaes_ctr32_encrypt_blocks: +bsaes_ctr32_encrypt_blocks: @ In OpenSSL, short inputs fall back to aes_nohw_* here. We patch this @ out to retain a constant-time implementation. mov ip, sp @@ -1120,7 +1120,7 @@ @ OpenSSL contains aes_nohw_* fallback code here. We patch this @ out to retain a constant-time implementation. -.size GFp_bsaes_ctr32_encrypt_blocks,.-GFp_bsaes_ctr32_encrypt_blocks +.size bsaes_ctr32_encrypt_blocks,.-bsaes_ctr32_encrypt_blocks ___ } $code.=<<___; @@ -1139,4 +1139,4 @@ print $code; -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/vpaes-x86_64.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/vpaes-x86_64.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/vpaes-x86_64.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/vpaes-x86_64.pl 2023-10-30 19:40:00.000000000 +0000 @@ -636,11 +636,12 @@ # # Interface to OpenSSL # -.globl GFp_${PREFIX}_set_encrypt_key -.type GFp_${PREFIX}_set_encrypt_key,\@function,3 +.globl ${PREFIX}_set_encrypt_key +.type ${PREFIX}_set_encrypt_key,\@function,3 .align 16 -GFp_${PREFIX}_set_encrypt_key: +${PREFIX}_set_encrypt_key: .cfi_startproc + _CET_ENDBR #ifdef BORINGSSL_DISPATCH_TEST .extern BORINGSSL_function_hit movb \$1, BORINGSSL_function_hit+5(%rip) @@ -689,13 +690,18 @@ xor %eax,%eax ret .cfi_endproc -.size GFp_${PREFIX}_set_encrypt_key,.-GFp_${PREFIX}_set_encrypt_key +.size ${PREFIX}_set_encrypt_key,.-${PREFIX}_set_encrypt_key -.globl GFp_${PREFIX}_encrypt -.type GFp_${PREFIX}_encrypt,\@function,3 +.globl ${PREFIX}_encrypt +.type ${PREFIX}_encrypt,\@function,3 .align 16 -GFp_${PREFIX}_encrypt: +${PREFIX}_encrypt: .cfi_startproc + _CET_ENDBR +#ifdef BORINGSSL_DISPATCH_TEST +.extern BORINGSSL_function_hit + movb \$1, BORINGSSL_function_hit+4(%rip) +#endif ___ $code.=<<___ if ($win64); lea -0xb8(%rsp),%rsp @@ -734,19 +740,20 @@ $code.=<<___; ret .cfi_endproc -.size GFp_${PREFIX}_encrypt,.-GFp_${PREFIX}_encrypt +.size ${PREFIX}_encrypt,.-${PREFIX}_encrypt ___ { my ($inp,$out,$blocks,$key,$ivp)=("%rdi","%rsi","%rdx","%rcx","%r8"); -# void GFp_vpaes_ctr32_encrypt_blocks(const uint8_t *inp, uint8_t *out, +# void vpaes_ctr32_encrypt_blocks(const uint8_t *inp, uint8_t *out, # size_t blocks, const AES_KEY *key, # const uint8_t ivp[16]); $code.=<<___; -.globl GFp_${PREFIX}_ctr32_encrypt_blocks -.type GFp_${PREFIX}_ctr32_encrypt_blocks,\@function,5 +.globl ${PREFIX}_ctr32_encrypt_blocks +.type ${PREFIX}_ctr32_encrypt_blocks,\@function,5 .align 16 -GFp_${PREFIX}_ctr32_encrypt_blocks: +${PREFIX}_ctr32_encrypt_blocks: .cfi_startproc + _CET_ENDBR # _vpaes_encrypt_core and _vpaes_encrypt_core_2x expect the key in %rdx. xchg $key, $blocks ___ @@ -838,7 +845,7 @@ .Lctr32_abort: ret .cfi_endproc -.size GFp_${PREFIX}_ctr32_encrypt_blocks,.-GFp_${PREFIX}_ctr32_encrypt_blocks +.size ${PREFIX}_ctr32_encrypt_blocks,.-${PREFIX}_ctr32_encrypt_blocks ___ } $code.=<<___; @@ -869,6 +876,7 @@ ## ## ######################################################## .type _vpaes_consts,\@object +.section .rodata .align 64 _vpaes_consts: .Lk_inv: # inv, inva @@ -937,6 +945,7 @@ .asciz "Vector Permutation AES for x86_64/SSSE3, Mike Hamburg (Stanford University)" .align 64 .size _vpaes_consts,.-_vpaes_consts +.text ___ if ($win64) { @@ -1029,28 +1038,28 @@ .section .pdata .align 4 - .rva .LSEH_begin_GFp_${PREFIX}_set_encrypt_key - .rva .LSEH_end_GFp_${PREFIX}_set_encrypt_key - .rva .LSEH_info_GFp_${PREFIX}_set_encrypt_key - - .rva .LSEH_begin_GFp_${PREFIX}_encrypt - .rva .LSEH_end_GFp_${PREFIX}_encrypt - .rva .LSEH_info_GFp_${PREFIX}_encrypt - .rva .LSEH_begin_GFp_${PREFIX}_ctr32_encrypt_blocks - .rva .LSEH_end_GFp_${PREFIX}_ctr32_encrypt_blocks - .rva .LSEH_info_GFp_${PREFIX}_ctr32_encrypt_blocks + .rva .LSEH_begin_${PREFIX}_set_encrypt_key + .rva .LSEH_end_${PREFIX}_set_encrypt_key + .rva .LSEH_info_${PREFIX}_set_encrypt_key + + .rva .LSEH_begin_${PREFIX}_encrypt + .rva .LSEH_end_${PREFIX}_encrypt + .rva .LSEH_info_${PREFIX}_encrypt + .rva .LSEH_begin_${PREFIX}_ctr32_encrypt_blocks + .rva .LSEH_end_${PREFIX}_ctr32_encrypt_blocks + .rva .LSEH_info_${PREFIX}_ctr32_encrypt_blocks .section .xdata .align 8 -.LSEH_info_GFp_${PREFIX}_set_encrypt_key: +.LSEH_info_${PREFIX}_set_encrypt_key: .byte 9,0,0,0 .rva se_handler .rva .Lenc_key_body,.Lenc_key_epilogue # HandlerData[] -.LSEH_info_GFp_${PREFIX}_encrypt: +.LSEH_info_${PREFIX}_encrypt: .byte 9,0,0,0 .rva se_handler .rva .Lenc_body,.Lenc_epilogue # HandlerData[] -.LSEH_info_GFp_${PREFIX}_ctr32_encrypt_blocks: +.LSEH_info_${PREFIX}_ctr32_encrypt_blocks: .byte 9,0,0,0 .rva se_handler .rva .Lctr32_body,.Lctr32_epilogue # HandlerData[] @@ -1061,4 +1070,4 @@ print $code; -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/vpaes-x86.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/vpaes-x86.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/vpaes-x86.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/aes/asm/vpaes-x86.pl 2023-10-30 19:40:00.000000000 +0000 @@ -69,6 +69,9 @@ my ($round, $base, $magic, $key, $const, $inp, $out)= ("eax", "ebx", "ecx", "edx","ebp", "esi","edi"); +&preprocessor_ifdef("BORINGSSL_DISPATCH_TEST") +&external_label("BORINGSSL_function_hit"); +&preprocessor_endif(); &static_label("_vpaes_consts"); &static_label("_vpaes_schedule_low_round"); @@ -555,7 +558,9 @@ # # Interface to OpenSSL # -&function_begin("GFp_${PREFIX}_set_encrypt_key"); +&function_begin("${PREFIX}_set_encrypt_key"); + record_function_hit(5); + &mov ($inp,&wparam(0)); # inp &lea ($base,&DWP(-56,"esp")); &mov ($round,&wparam(1)); # bits @@ -577,9 +582,11 @@ &mov ("esp",&DWP(48,"esp")); &xor ("eax","eax"); -&function_end("GFp_${PREFIX}_set_encrypt_key"); +&function_end("${PREFIX}_set_encrypt_key"); + +&function_begin("${PREFIX}_encrypt"); + record_function_hit(4); -&function_begin("GFp_${PREFIX}_encrypt"); &lea ($const,&DWP(&label("_vpaes_consts")."+0x30-".&label("pic_point"))); &call ("_vpaes_preheat"); &set_label("pic_point"); @@ -596,8 +603,8 @@ &movdqu (&QWP(0,$out),"xmm0"); &mov ("esp",&DWP(48,"esp")); -&function_end("GFp_${PREFIX}_encrypt"); +&function_end("${PREFIX}_encrypt"); &asm_finish(); -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/armv4-mont.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/armv4-mont.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/armv4-mont.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/armv4-mont.pl 2023-10-30 19:40:00.000000000 +0000 @@ -64,7 +64,7 @@ ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; - open OUT,"| \"$^X\" $xlate $flavour $output"; + open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""; *STDOUT=*OUT; } else { open OUT,">$output"; @@ -97,7 +97,7 @@ $_num="$num,#15*4"; $_bpend=$_num; $code=<<___; -#include +#include @ Silence ARMv8 deprecated IT instruction warnings. This file is used by both @ ARMv7 and ARMv8 processors and does not use ARMv8 instructions. @@ -112,18 +112,18 @@ #endif #if __ARM_MAX_ARCH__>=7 -.extern GFp_armcap_P -.hidden GFp_armcap_P +.extern OPENSSL_armcap_P +.hidden OPENSSL_armcap_P .align 5 .LOPENSSL_armcap: -.word GFp_armcap_P-.Lbn_mul_mont +.word OPENSSL_armcap_P-.Lbn_mul_mont #endif -.global GFp_bn_mul_mont -.type GFp_bn_mul_mont,%function +.global bn_mul_mont +.type bn_mul_mont,%function .align 5 -GFp_bn_mul_mont: +bn_mul_mont: .Lbn_mul_mont: ldr ip,[sp,#4] @ load num stmdb sp!,{r0,r2} @ sp points at argument block @@ -294,7 +294,7 @@ moveq pc,lr @ be binary compatible with V4, yet bx lr @ interoperable with Thumb ISA:-) #endif -.size GFp_bn_mul_mont,.-GFp_bn_mul_mont +.size bn_mul_mont,.-bn_mul_mont ___ { my ($A0,$A1,$A2,$A3)=map("d$_",(0..3)); @@ -758,4 +758,4 @@ print $_,"\n"; } -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/armv8-mont.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/armv8-mont.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/armv8-mont.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/armv8-mont.pl 2023-10-30 19:40:00.000000000 +0000 @@ -48,14 +48,14 @@ ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; -open OUT,"| \"$^X\" $xlate $flavour $output"; +open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""; *STDOUT=*OUT; ($lo0,$hi0,$aj,$m0,$alo,$ahi, $lo1,$hi1,$nj,$m1,$nlo,$nhi, $ovf, $i,$j,$tp,$tj) = map("x$_",6..17,19..24); -# int GFp_bn_mul_mont( +# int bn_mul_mont( $rp="x0"; # BN_ULONG *rp, $ap="x1"; # const BN_ULONG *ap, $bp="x2"; # const BN_ULONG *bp, @@ -64,14 +64,14 @@ $num="x5"; # size_t num); $code.=<<___; -#include +#include .text -.globl GFp_bn_mul_mont -.type GFp_bn_mul_mont,%function +.globl bn_mul_mont +.type bn_mul_mont,%function .align 5 -GFp_bn_mul_mont: +bn_mul_mont: AARCH64_SIGN_LINK_REGISTER tst $num,#7 b.eq __bn_sqr8x_mont @@ -272,7 +272,7 @@ ldr x29,[sp],#64 AARCH64_VALIDATE_LINK_REGISTER ret -.size GFp_bn_mul_mont,.-GFp_bn_mul_mont +.size bn_mul_mont,.-bn_mul_mont ___ { ######################################################################## @@ -1520,4 +1520,4 @@ print $code; -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/x86_64-mont5.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/x86_64-mont5.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/x86_64-mont5.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/x86_64-mont5.pl 2023-10-30 19:40:00.000000000 +0000 @@ -50,7 +50,7 @@ # output, so this isn't useful anyway. $addx = 1; -# int GFp_bn_mul_mont_gather5( +# int bn_mul_mont_gather5( $rp="%rdi"; # BN_ULONG *rp, $ap="%rsi"; # const BN_ULONG *ap, $bp="%rdx"; # const BN_ULONG *bp, @@ -72,13 +72,14 @@ $code=<<___; .text -.extern GFp_ia32cap_P +.extern OPENSSL_ia32cap_P -.globl GFp_bn_mul_mont_gather5 -.type GFp_bn_mul_mont_gather5,\@function,6 +.globl bn_mul_mont_gather5 +.type bn_mul_mont_gather5,\@function,6 .align 64 -GFp_bn_mul_mont_gather5: +bn_mul_mont_gather5: .cfi_startproc + _CET_ENDBR mov ${num}d,${num}d mov %rsp,%rax .cfi_def_cfa_register %rax @@ -86,7 +87,7 @@ jnz .Lmul_enter ___ $code.=<<___ if ($addx); - leaq GFp_ia32cap_P(%rip),%r11 + leaq OPENSSL_ia32cap_P(%rip),%r11 mov 8(%r11),%r11d ___ $code.=<<___; @@ -158,8 +159,12 @@ movdqa %xmm1,%xmm2 ___ ######################################################################## -# calculate mask by comparing 0..31 to index and save result to stack +# Calculate masks by comparing 0..31 to $idx and save result to stack. # +# We compute sixteen 16-byte masks and store them on the stack. Mask i is stored +# in `16*i - 128`(%rax) and contains the comparisons for idx == 2*i and +# idx == 2*i + 1 in its lower and upper halves, respectively. Mask calculations +# are scheduled in groups of four. $code.=<<___; paddd %xmm0,%xmm1 pcmpeqd %xmm5,%xmm0 # compare to 1,0 @@ -228,7 +233,8 @@ } $code.=<<___; por %xmm1,%xmm0 - pshufd \$0x4e,%xmm0,%xmm1 + # Combine the upper and lower halves of %xmm0. + pshufd \$0x4e,%xmm0,%xmm1 # Swap upper and lower halves. por %xmm1,%xmm0 lea $STRIDE($bp),$bp movq %xmm0,$m0 # m0=bp[0] @@ -321,7 +327,8 @@ } $code.=<<___; por %xmm5,%xmm4 - pshufd \$0x4e,%xmm4,%xmm0 + # Combine the upper and lower halves of %xmm4 as %xmm0. + pshufd \$0x4e,%xmm4,%xmm0 # Swap upper and lower halves. por %xmm4,%xmm0 lea $STRIDE($bp),$bp @@ -447,7 +454,7 @@ .Lmul_epilogue: ret .cfi_endproc -.size GFp_bn_mul_mont_gather5,.-GFp_bn_mul_mont_gather5 +.size bn_mul_mont_gather5,.-bn_mul_mont_gather5 ___ {{{ my @A=("%r10","%r11"); @@ -492,7 +499,7 @@ # modulo 4096, which covers ret[num], am[num] and n[num] # (see bn_exp.c). This is done to allow memory disambiguation # logic do its magic. [Extra [num] is allocated in order - # to align with GFp_bn_power5's frame, which is cleansed after + # to align with bn_power5's frame, which is cleansed after # completing exponentiation. Extra 256 bytes is for power mask # calculated from 7th argument, the index.] # @@ -575,7 +582,6 @@ ___ $bp="%r12"; $STRIDE=2**5*8; # 5 is "window size" - $N=$STRIDE/4; # should match cache line size $tp=$i; $code.=<<___; movdqa 0(%rax),%xmm0 # 00000001000000010000000000000000 @@ -589,8 +595,12 @@ movdqa %xmm1,%xmm2 ___ ######################################################################## -# calculate mask by comparing 0..31 to index and save result to stack +# Calculate masks by comparing 0..31 to $idx and save result to stack. # +# We compute sixteen 16-byte masks and store them on the stack. Mask i is stored +# in `16*i - 128`(%rax) and contains the comparisons for idx == 2*i and +# idx == 2*i + 1 in its lower and upper halves, respectively. Mask calculations +# are scheduled in groups of four. $code.=<<___; paddd %xmm0,%xmm1 pcmpeqd %xmm5,%xmm0 # compare to 1,0 @@ -659,7 +669,8 @@ } $code.=<<___; por %xmm1,%xmm0 - pshufd \$0x4e,%xmm0,%xmm1 + # Combine the upper and lower halves of %xmm0. + pshufd \$0x4e,%xmm0,%xmm1 # Swap upper and lower halves. por %xmm1,%xmm0 lea $STRIDE($bp),$bp movq %xmm0,$m0 # m0=bp[0] @@ -836,7 +847,8 @@ } $code.=<<___; por %xmm5,%xmm4 - pshufd \$0x4e,%xmm4,%xmm0 + # Combine the upper and lower halves of %xmm4 as %xmm0. + pshufd \$0x4e,%xmm4,%xmm0 # Swap upper and lower halves. por %xmm4,%xmm0 lea $STRIDE($bp),$bp movq %xmm0,$m0 # m0=bp[i] @@ -1067,7 +1079,7 @@ }}} {{{ ###################################################################### -# void GFp_bn_power5( +# void bn_power5( my $rptr="%rdi"; # BN_ULONG *rptr, my $aptr="%rsi"; # const BN_ULONG *aptr, my $bptr="%rdx"; # const void *table, @@ -1082,16 +1094,17 @@ my ($a0,$a1,$ai)=("%r14","%r15","%rbx"); $code.=<<___; -.globl GFp_bn_power5 -.type GFp_bn_power5,\@function,6 +.globl bn_power5 +.type bn_power5,\@function,6 .align 32 -GFp_bn_power5: +bn_power5: .cfi_startproc + _CET_ENDBR mov %rsp,%rax .cfi_def_cfa_register %rax ___ $code.=<<___ if ($addx); - leaq GFp_ia32cap_P(%rip),%r11 + leaq OPENSSL_ia32cap_P(%rip),%r11 mov 8(%r11),%r11d and \$0x80108,%r11d cmp \$0x80108,%r11d # check for AD*X+BMI2+BMI1 @@ -1220,15 +1233,16 @@ .Lpower5_epilogue: ret .cfi_endproc -.size GFp_bn_power5,.-GFp_bn_power5 +.size bn_power5,.-bn_power5 -.globl GFp_bn_sqr8x_internal -.hidden GFp_bn_sqr8x_internal -.type GFp_bn_sqr8x_internal,\@abi-omnipotent +.globl bn_sqr8x_internal +.hidden bn_sqr8x_internal +.type bn_sqr8x_internal,\@abi-omnipotent .align 32 -GFp_bn_sqr8x_internal: +bn_sqr8x_internal: __bn_sqr8x_internal: .cfi_startproc + _CET_ENDBR ############################################################## # Squaring part: # @@ -2021,7 +2035,7 @@ jb .L8x_reduction_loop ret .cfi_endproc -.size GFp_bn_sqr8x_internal,.-GFp_bn_sqr8x_internal +.size bn_sqr8x_internal,.-bn_sqr8x_internal ___ } ############################################################## @@ -2088,194 +2102,6 @@ .size __bn_post4x_internal,.-__bn_post4x_internal ___ } -{ -$code.=<<___; -.globl GFp_bn_from_montgomery -.type GFp_bn_from_montgomery,\@abi-omnipotent -.align 32 -GFp_bn_from_montgomery: -.cfi_startproc - testl \$7,`($win64?"48(%rsp)":"%r9d")` - jz bn_from_mont8x - xor %eax,%eax - ret -.cfi_endproc -.size GFp_bn_from_montgomery,.-GFp_bn_from_montgomery - -.type bn_from_mont8x,\@function,6 -.align 32 -bn_from_mont8x: -.cfi_startproc - .byte 0x67 - mov %rsp,%rax -.cfi_def_cfa_register %rax - push %rbx -.cfi_push %rbx - push %rbp -.cfi_push %rbp - push %r12 -.cfi_push %r12 - push %r13 -.cfi_push %r13 - push %r14 -.cfi_push %r14 - push %r15 -.cfi_push %r15 -.Lfrom_prologue: - - shl \$3,${num}d # convert $num to bytes - lea ($num,$num,2),%r10 # 3*$num in bytes - neg $num - mov ($n0),$n0 # *n0 - - ############################################################## - # Ensure that stack frame doesn't alias with $rptr+3*$num - # modulo 4096, which covers ret[num], am[num] and n[num] - # (see bn_exp.c). The stack is allocated to aligned with - # GFp_bn_power5's frame, and as GFp_bn_from_montgomery happens to be - # last operation, we use the opportunity to cleanse it. - # - lea -320(%rsp,$num,2),%r11 - mov %rsp,%rbp - sub $rptr,%r11 - and \$4095,%r11 - cmp %r11,%r10 - jb .Lfrom_sp_alt - sub %r11,%rbp # align with $aptr - lea -320(%rbp,$num,2),%rbp # future alloca(frame+2*$num*8+256) - jmp .Lfrom_sp_done - -.align 32 -.Lfrom_sp_alt: - lea 4096-320(,$num,2),%r10 - lea -320(%rbp,$num,2),%rbp # future alloca(frame+2*$num*8+256) - sub %r10,%r11 - mov \$0,%r10 - cmovc %r10,%r11 - sub %r11,%rbp -.Lfrom_sp_done: - and \$-64,%rbp - mov %rsp,%r11 - sub %rbp,%r11 - and \$-4096,%r11 - lea (%rbp,%r11),%rsp - mov (%rsp),%r10 - cmp %rbp,%rsp - ja .Lfrom_page_walk - jmp .Lfrom_page_walk_done - -.Lfrom_page_walk: - lea -4096(%rsp),%rsp - mov (%rsp),%r10 - cmp %rbp,%rsp - ja .Lfrom_page_walk -.Lfrom_page_walk_done: - - mov $num,%r10 - neg $num - - ############################################################## - # Stack layout - # - # +0 saved $num, used in reduction section - # +8 &t[2*$num], used in reduction section - # +32 saved *n0 - # +40 saved %rsp - # +48 t[2*$num] - # - mov $n0, 32(%rsp) - mov %rax, 40(%rsp) # save original %rsp -.cfi_cfa_expression %rsp+40,deref,+8 -.Lfrom_body: - mov $num,%r11 - lea 48(%rsp),%rax - pxor %xmm0,%xmm0 - jmp .Lmul_by_1 - -.align 32 -.Lmul_by_1: - movdqu ($aptr),%xmm1 - movdqu 16($aptr),%xmm2 - movdqu 32($aptr),%xmm3 - movdqa %xmm0,(%rax,$num) - movdqu 48($aptr),%xmm4 - movdqa %xmm0,16(%rax,$num) - .byte 0x48,0x8d,0xb6,0x40,0x00,0x00,0x00 # lea 64($aptr),$aptr - movdqa %xmm1,(%rax) - movdqa %xmm0,32(%rax,$num) - movdqa %xmm2,16(%rax) - movdqa %xmm0,48(%rax,$num) - movdqa %xmm3,32(%rax) - movdqa %xmm4,48(%rax) - lea 64(%rax),%rax - sub \$64,%r11 - jnz .Lmul_by_1 - - movq $rptr,%xmm1 - movq $nptr,%xmm2 - .byte 0x67 - mov $nptr,%rbp - movq %r10, %xmm3 # -num -___ -$code.=<<___ if ($addx); - leaq GFp_ia32cap_P(%rip),%r11 - mov 8(%r11),%r11d - and \$0x80108,%r11d - cmp \$0x80108,%r11d # check for AD*X+BMI2+BMI1 - jne .Lfrom_mont_nox - - lea (%rax,$num),$rptr - call __bn_sqrx8x_reduction - call __bn_postx4x_internal - - pxor %xmm0,%xmm0 - lea 48(%rsp),%rax - jmp .Lfrom_mont_zero - -.align 32 -.Lfrom_mont_nox: -___ -$code.=<<___; - call __bn_sqr8x_reduction - call __bn_post4x_internal - - pxor %xmm0,%xmm0 - lea 48(%rsp),%rax - jmp .Lfrom_mont_zero - -.align 32 -.Lfrom_mont_zero: - mov 40(%rsp),%rsi # restore %rsp -.cfi_def_cfa %rsi,8 - movdqa %xmm0,16*0(%rax) - movdqa %xmm0,16*1(%rax) - movdqa %xmm0,16*2(%rax) - movdqa %xmm0,16*3(%rax) - lea 16*4(%rax),%rax - sub \$32,$num - jnz .Lfrom_mont_zero - - mov \$1,%rax - mov -48(%rsi),%r15 -.cfi_restore %r15 - mov -40(%rsi),%r14 -.cfi_restore %r14 - mov -32(%rsi),%r13 -.cfi_restore %r13 - mov -24(%rsi),%r12 -.cfi_restore %r12 - mov -16(%rsi),%rbp -.cfi_restore %rbp - mov -8(%rsi),%rbx -.cfi_restore %rbx - lea (%rsi),%rsp -.cfi_def_cfa_register %rsp -.Lfrom_epilogue: - ret -.cfi_endproc -.size bn_from_mont8x,.-bn_from_mont8x -___ -} }}} if ($addx) {{{ @@ -2313,7 +2139,7 @@ # modulo 4096, which covers ret[num], am[num] and n[num] # (see bn_exp.c). This is done to allow memory disambiguation # logic do its magic. [Extra [num] is allocated in order - # to align with GFp_bn_power5's frame, which is cleansed after + # to align with bn_power5's frame, which is cleansed after # completing exponentiation. Extra 256 bytes is for power mask # calculated from 7th argument, the index.] # @@ -2415,7 +2241,6 @@ ("%rsi","%rdi","%rcx","%rbx","%r8","%r9","%rbp","%rax"); my $rptr=$bptr; my $STRIDE=2**5*8; # 5 is "window size" -my $N=$STRIDE/4; # should match cache line size $code.=<<___; movdqa 0(%rax),%xmm0 # 00000001000000010000000000000000 movdqa 16(%rax),%xmm1 # 00000002000000020000000200000002 @@ -2428,8 +2253,12 @@ movdqa %xmm1,%xmm2 ___ ######################################################################## -# calculate mask by comparing 0..31 to index and save result to stack +# Calculate masks by comparing 0..31 to $idx and save result to stack. # +# We compute sixteen 16-byte masks and store them on the stack. Mask i is stored +# in `16*i - 128`(%rax) and contains the comparisons for idx == 2*i and +# idx == 2*i + 1 in its lower and upper halves, respectively. Mask calculations +# are scheduled in groups of four. $code.=<<___; .byte 0x67 paddd %xmm0,%xmm1 @@ -2498,7 +2327,8 @@ } $code.=<<___; pxor %xmm1,%xmm0 - pshufd \$0x4e,%xmm0,%xmm1 + # Combine the upper and lower halves of %xmm0. + pshufd \$0x4e,%xmm0,%xmm1 # Swap upper and lower halves. por %xmm1,%xmm0 lea $STRIDE($bptr),$bptr movq %xmm0,%rdx # bp[0] @@ -2618,7 +2448,8 @@ } $code.=<<___; por %xmm5,%xmm4 - pshufd \$0x4e,%xmm4,%xmm0 + # Combine the upper and lower halves of %xmm4 as %xmm0. + pshufd \$0x4e,%xmm4,%xmm0 # Swap upper and lower halves. por %xmm4,%xmm0 lea $STRIDE($bptr),$bptr movq %xmm0,%rdx # m0=bp[i] @@ -2752,7 +2583,7 @@ ___ } { ###################################################################### -# void GFp_bn_power5( +# void bn_power5( my $rptr="%rdi"; # BN_ULONG *rptr, my $aptr="%rsi"; # const BN_ULONG *aptr, my $bptr="%rdx"; # const void *table, @@ -2902,12 +2733,14 @@ .cfi_endproc .size bn_powerx5,.-bn_powerx5 -.globl GFp_bn_sqrx8x_internal -.type GFp_bn_sqrx8x_internal,\@abi-omnipotent +.globl bn_sqrx8x_internal +.hidden bn_sqrx8x_internal +.type bn_sqrx8x_internal,\@abi-omnipotent .align 32 -GFp_bn_sqrx8x_internal: +bn_sqrx8x_internal: __bn_sqrx8x_internal: .cfi_startproc + _CET_ENDBR ################################################################## # Squaring part: # @@ -3541,7 +3374,7 @@ jb .Lsqrx8x_reduction_loop ret .cfi_endproc -.size GFp_bn_sqrx8x_internal,.-GFp_bn_sqrx8x_internal +.size bn_sqrx8x_internal,.-bn_sqrx8x_internal ___ } ############################################################## @@ -3614,13 +3447,23 @@ my $N=$STRIDE/4; $code.=<<___; -.globl GFp_bn_scatter5 -.type GFp_bn_scatter5,\@abi-omnipotent +.globl bn_scatter5 +.type bn_scatter5,\@abi-omnipotent .align 16 -GFp_bn_scatter5: +bn_scatter5: .cfi_startproc + _CET_ENDBR cmp \$0, $num jz .Lscatter_epilogue + + # $tbl stores 32 entries, t0 through t31. Each entry has $num words. + # They are interleaved in memory as follows: + # + # t0[0] t1[0] t2[0] ... t31[0] + # t0[1] t1[1] t2[1] ... t31[1] + # ... + # t0[$num-1] t1[$num-1] t2[$num-1] ... t31[$num-1] + lea ($tbl,$idx,8),$tbl .Lscatter: mov ($inp),%rax @@ -3632,14 +3475,15 @@ .Lscatter_epilogue: ret .cfi_endproc -.size GFp_bn_scatter5,.-GFp_bn_scatter5 +.size bn_scatter5,.-bn_scatter5 -.globl GFp_bn_gather5 -.type GFp_bn_gather5,\@abi-omnipotent +.globl bn_gather5 +.type bn_gather5,\@abi-omnipotent .align 32 -GFp_bn_gather5: +bn_gather5: .cfi_startproc -.LSEH_begin_GFp_bn_gather5: # Win64 thing, but harmless in other cases +.LSEH_begin_bn_gather5: # Win64 thing, but harmless in other cases + _CET_ENDBR # I can't trust assembler to use specific encoding:-( .byte 0x4c,0x8d,0x14,0x24 #lea (%rsp),%r10 .cfi_def_cfa_register %r10 @@ -3658,8 +3502,12 @@ movdqa %xmm1,%xmm2 ___ ######################################################################## -# calculate mask by comparing 0..31 to $idx and save result to stack +# Calculate masks by comparing 0..31 to $idx and save result to stack. # +# We compute sixteen 16-byte masks and store them on the stack. Mask i is stored +# in `16*i - 128`(%rax) and contains the comparisons for idx == 2*i and +# idx == 2*i + 1 in its lower and upper halves, respectively. Mask calculations +# are scheduled in groups of four. for($i=0;$i<$STRIDE/16;$i+=4) { $code.=<<___; paddd %xmm0,%xmm1 @@ -3697,6 +3545,8 @@ pxor %xmm5,%xmm5 ___ for($i=0;$i<$STRIDE/16;$i+=4) { +# Combine the masks with the corresponding table entries to select the correct +# entry. $code.=<<___; movdqa `16*($i+0)-128`(%r11),%xmm0 movdqa `16*($i+1)-128`(%r11),%xmm1 @@ -3715,7 +3565,8 @@ $code.=<<___; por %xmm5,%xmm4 lea $STRIDE(%r11),%r11 - pshufd \$0x4e,%xmm4,%xmm0 + # Combine the upper and lower halves of %xmm0. + pshufd \$0x4e,%xmm4,%xmm0 # Swap upper and lower halves. por %xmm4,%xmm0 movq %xmm0,($out) # m0=bp[0] lea 8($out),$out @@ -3725,17 +3576,19 @@ lea (%r10),%rsp .cfi_def_cfa_register %rsp ret -.LSEH_end_GFp_bn_gather5: +.LSEH_end_bn_gather5: .cfi_endproc -.size GFp_bn_gather5,.-GFp_bn_gather5 +.size bn_gather5,.-bn_gather5 ___ } $code.=<<___; +.section .rodata .align 64 .Linc: .long 0,0, 1,1 .long 2,2, 2,2 .asciz "Montgomery Multiplication with scatter/gather for x86_64, CRYPTOGAMS by " +.text ___ # EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame, @@ -3852,21 +3705,17 @@ .section .pdata .align 4 - .rva .LSEH_begin_GFp_bn_mul_mont_gather5 - .rva .LSEH_end_GFp_bn_mul_mont_gather5 - .rva .LSEH_info_GFp_bn_mul_mont_gather5 + .rva .LSEH_begin_bn_mul_mont_gather5 + .rva .LSEH_end_bn_mul_mont_gather5 + .rva .LSEH_info_bn_mul_mont_gather5 .rva .LSEH_begin_bn_mul4x_mont_gather5 .rva .LSEH_end_bn_mul4x_mont_gather5 .rva .LSEH_info_bn_mul4x_mont_gather5 - .rva .LSEH_begin_GFp_bn_power5 - .rva .LSEH_end_GFp_bn_power5 - .rva .LSEH_info_GFp_bn_power5 - - .rva .LSEH_begin_bn_from_mont8x - .rva .LSEH_end_bn_from_mont8x - .rva .LSEH_info_bn_from_mont8x + .rva .LSEH_begin_bn_power5 + .rva .LSEH_end_bn_power5 + .rva .LSEH_info_bn_power5 ___ $code.=<<___ if ($addx); .rva .LSEH_begin_bn_mulx4x_mont_gather5 @@ -3875,16 +3724,16 @@ .rva .LSEH_begin_bn_powerx5 .rva .LSEH_end_bn_powerx5 - .rva .LSEH_info_GFp_bn_powerx5 + .rva .LSEH_info_bn_powerx5 ___ $code.=<<___; - .rva .LSEH_begin_GFp_bn_gather5 - .rva .LSEH_end_GFp_bn_gather5 - .rva .LSEH_info_GFp_bn_gather5 + .rva .LSEH_begin_bn_gather5 + .rva .LSEH_end_bn_gather5 + .rva .LSEH_info_bn_gather5 .section .xdata .align 8 -.LSEH_info_GFp_bn_mul_mont_gather5: +.LSEH_info_bn_mul_mont_gather5: .byte 9,0,0,0 .rva mul_handler .rva .Lmul_body,.Lmul_body,.Lmul_epilogue # HandlerData[] @@ -3894,15 +3743,10 @@ .rva mul_handler .rva .Lmul4x_prologue,.Lmul4x_body,.Lmul4x_epilogue # HandlerData[] .align 8 -.LSEH_info_GFp_bn_power5: +.LSEH_info_bn_power5: .byte 9,0,0,0 .rva mul_handler .rva .Lpower5_prologue,.Lpower5_body,.Lpower5_epilogue # HandlerData[] -.align 8 -.LSEH_info_bn_from_mont8x: - .byte 9,0,0,0 - .rva mul_handler - .rva .Lfrom_prologue,.Lfrom_body,.Lfrom_epilogue # HandlerData[] ___ $code.=<<___ if ($addx); .align 8 @@ -3911,14 +3755,14 @@ .rva mul_handler .rva .Lmulx4x_prologue,.Lmulx4x_body,.Lmulx4x_epilogue # HandlerData[] .align 8 -.LSEH_info_GFp_bn_powerx5: +.LSEH_info_bn_powerx5: .byte 9,0,0,0 .rva mul_handler .rva .Lpowerx5_prologue,.Lpowerx5_body,.Lpowerx5_epilogue # HandlerData[] ___ $code.=<<___; .align 8 -.LSEH_info_GFp_bn_gather5: +.LSEH_info_bn_gather5: .byte 0x01,0x0b,0x03,0x0a .byte 0x0b,0x01,0x21,0x00 # sub rsp,0x108 .byte 0x04,0xa3,0x00,0x00 # lea r10,(rsp) @@ -3929,4 +3773,4 @@ $code =~ s/\`([^\`]*)\`/eval($1)/gem; print $code; -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/x86_64-mont.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/x86_64-mont.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/x86_64-mont.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/x86_64-mont.pl 2023-10-30 19:40:00.000000000 +0000 @@ -65,7 +65,7 @@ # output, so this isn't useful anyway. $addx = 1; -# void GFp_bn_mul_mont( +# void bn_mul_mont( $rp="%rdi"; # BN_ULONG *rp, $ap="%rsi"; # const BN_ULONG *ap, $bp="%rdx"; # const BN_ULONG *bp, @@ -85,13 +85,14 @@ $code=<<___; .text -.extern GFp_ia32cap_P +.extern OPENSSL_ia32cap_P -.globl GFp_bn_mul_mont -.type GFp_bn_mul_mont,\@function,6 +.globl bn_mul_mont +.type bn_mul_mont,\@function,6 .align 16 -GFp_bn_mul_mont: +bn_mul_mont: .cfi_startproc + _CET_ENDBR mov ${num}d,${num}d mov %rsp,%rax .cfi_def_cfa_register %rax @@ -101,7 +102,8 @@ jb .Lmul_enter ___ $code.=<<___ if ($addx); - mov GFp_ia32cap_P+8(%rip),%r11d + leaq OPENSSL_ia32cap_P(%rip),%r11 + mov 8(%r11),%r11d ___ $code.=<<___; cmp $ap,$bp @@ -346,7 +348,7 @@ .Lmul_epilogue: ret .cfi_endproc -.size GFp_bn_mul_mont,.-GFp_bn_mul_mont +.size bn_mul_mont,.-bn_mul_mont ___ {{{ my @A=("%r10","%r11"); @@ -818,10 +820,10 @@ my ($a0,$a1,$ai)=("%r14","%r15","%rbx"); $code.=<<___ if ($addx); -.extern GFp_bn_sqrx8x_internal # see x86_64-mont5 module +.extern bn_sqrx8x_internal # see x86_64-mont5 module ___ $code.=<<___; -.extern GFp_bn_sqr8x_internal # see x86_64-mont5 module +.extern bn_sqr8x_internal # see x86_64-mont5 module .type bn_sqr8x_mont,\@function,6 .align 32 @@ -906,12 +908,13 @@ movq %r10, %xmm3 # -$num ___ $code.=<<___ if ($addx); - mov GFp_ia32cap_P+8(%rip),%eax + leaq OPENSSL_ia32cap_P(%rip),%rax + mov 8(%rax),%eax and \$0x80100,%eax cmp \$0x80100,%eax jne .Lsqr8x_nox - call GFp_bn_sqrx8x_internal # see x86_64-mont5 module + call bn_sqrx8x_internal # see x86_64-mont5 module # %rax top-most carry # %rbp nptr # %rcx -8*num @@ -927,7 +930,7 @@ .Lsqr8x_nox: ___ $code.=<<___; - call GFp_bn_sqr8x_internal # see x86_64-mont5 module + call bn_sqr8x_internal # see x86_64-mont5 module # %rax top-most carry # %rbp nptr # %r8 -8*num @@ -1532,9 +1535,9 @@ .section .pdata .align 4 - .rva .LSEH_begin_GFp_bn_mul_mont - .rva .LSEH_end_GFp_bn_mul_mont - .rva .LSEH_info_GFp_bn_mul_mont + .rva .LSEH_begin_bn_mul_mont + .rva .LSEH_end_bn_mul_mont + .rva .LSEH_info_bn_mul_mont .rva .LSEH_begin_bn_mul4x_mont .rva .LSEH_end_bn_mul4x_mont @@ -1552,7 +1555,7 @@ $code.=<<___; .section .xdata .align 8 -.LSEH_info_GFp_bn_mul_mont: +.LSEH_info_bn_mul_mont: .byte 9,0,0,0 .rva mul_handler .rva .Lmul_body,.Lmul_epilogue # HandlerData[] @@ -1576,4 +1579,4 @@ } print $code; -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/x86-mont.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/x86-mont.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/x86-mont.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/asm/x86-mont.pl 2023-10-30 19:40:00.000000000 +0000 @@ -45,9 +45,9 @@ $sse2=0; for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); } -&external_label("GFp_ia32cap_P") if ($sse2); +&external_label("OPENSSL_ia32cap_P") if ($sse2); -&function_begin("GFp_bn_mul_mont"); +&function_begin("bn_mul_mont"); $i="edx"; $j="ecx"; @@ -145,7 +145,7 @@ $temp="mm6"; $mask="mm7"; - &picmeup("eax","GFp_ia32cap_P"); + &picmeup("eax","OPENSSL_ia32cap_P"); &bt (&DWP(0,"eax"),26); # The non-SSE2 code was removed. @@ -327,10 +327,10 @@ &mov ("esp",$_sp); # pull saved stack pointer &mov ("eax",1); -&function_end("GFp_bn_mul_mont"); +&function_end("bn_mul_mont"); &asciz("Montgomery Multiplication for x86, CRYPTOGAMS by "); &asm_finish(); -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/internal.h temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/internal.h --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/internal.h 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/internal.h 2023-10-30 19:40:00.000000000 +0000 @@ -123,7 +123,7 @@ #ifndef OPENSSL_HEADER_BN_INTERNAL_H #define OPENSSL_HEADER_BN_INTERNAL_H -#include +#include #if defined(OPENSSL_X86_64) && defined(_MSC_VER) && !defined(__clang__) #pragma warning(push, 3) @@ -134,7 +134,7 @@ #include "../../internal.h" -typedef crypto_word BN_ULONG; +typedef crypto_word_t BN_ULONG; #if defined(OPENSSL_64_BIT) @@ -180,8 +180,8 @@ OPENSSL_STATIC_ASSERT(sizeof(int) == sizeof(size_t) || (sizeof(int) == 4 && sizeof(size_t) == 8), "int and size_t ABI mismatch"); -void GFp_bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, - const BN_ULONG *np, const BN_ULONG *n0, size_t num); +void bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, + const BN_ULONG *np, const BN_ULONG *n0, size_t num); static inline void bn_umult_lohi(BN_ULONG *low_out, BN_ULONG *high_out, BN_ULONG a, BN_ULONG b) { diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/montgomery.c temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/montgomery.c --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/montgomery.c 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/montgomery.c 2023-10-30 19:40:00.000000000 +0000 @@ -118,7 +118,7 @@ sizeof(BN_ULONG) * BN_MONT_CTX_N0_LIMBS == sizeof(uint64_t), "uint64_t is insufficient precision for n0"); -int GFp_bn_from_montgomery_in_place(BN_ULONG r[], size_t num_r, BN_ULONG a[], +int bn_from_montgomery_in_place(BN_ULONG r[], size_t num_r, BN_ULONG a[], size_t num_a, const BN_ULONG n[], size_t num_n, const BN_ULONG n0_[BN_MONT_CTX_N0_LIMBS]) { @@ -132,7 +132,7 @@ BN_ULONG n0 = n0_[0]; BN_ULONG carry = 0; for (size_t i = 0; i < num_n; i++) { - BN_ULONG v = GFp_limbs_mul_add_limb(a + i, n, a[i] * n0, num_n); + BN_ULONG v = limbs_mul_add_limb(a + i, n, a[i] * n0, num_n); v += carry + a[i + num_n]; carry |= (v != a[i + num_n]); carry &= (v <= a[i + num_n]); diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/montgomery_inv.c temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/montgomery_inv.c --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/montgomery_inv.c 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/bn/montgomery_inv.c 2023-10-30 19:40:00.000000000 +0000 @@ -46,7 +46,7 @@ // caller would have to negate the resultant |v| for the purpose of Montgomery // multiplication. This implementation does the negation implicitly by doing // the computations as a difference instead of a sum. -uint64_t GFp_bn_neg_inv_mod_r_u64(uint64_t n) { +uint64_t bn_neg_inv_mod_r_u64(uint64_t n) { dev_assert_secret(n % 2 == 1); // alpha == 2**(lg r - 1) == r / 2. diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/ecp_nistz256-armv4.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/ecp_nistz256-armv4.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/ecp_nistz256-armv4.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/ecp_nistz256-armv4.pl 1970-01-01 00:00:00.000000000 +0000 @@ -1,901 +0,0 @@ -#! /usr/bin/env perl -# Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. -# -# Licensed under the OpenSSL license (the "License"). You may not use -# this file except in compliance with the License. You can obtain a copy -# in the file LICENSE in the source distribution or at -# https://www.openssl.org/source/license.html - - -# ==================================================================== -# Written by Andy Polyakov for the OpenSSL -# project. The module is, however, dual licensed under OpenSSL and -# CRYPTOGAMS licenses depending on where you obtain it. For further -# details see http://www.openssl.org/~appro/cryptogams/. -# ==================================================================== -# -# ECP_NISTZ256 module for ARMv4. -# -# October 2014. -# -# Original ECP_NISTZ256 submission targeting x86_64 is detailed in -# http://eprint.iacr.org/2013/816. In the process of adaptation -# original .c module was made 32-bit savvy in order to make this -# implementation possible. -# -# with/without -DECP_NISTZ256_ASM -# Cortex-A8 +53-170% -# Cortex-A9 +76-205% -# Cortex-A15 +100-316% -# Snapdragon S4 +66-187% -# -# Ranges denote minimum and maximum improvement coefficients depending -# on benchmark. Lower coefficients are for ECDSA sign, server-side -# operation. Keep in mind that +200% means 3x improvement. - -$flavour = shift; -if ($flavour=~/\w[\w\-]*\.\w+$/) { $output=$flavour; undef $flavour; } -else { while (($output=shift) && ($output!~/\w[\w\-]*\.\w+$/)) {} } - -if ($flavour && $flavour ne "void") { - $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; - ( $xlate="${dir}arm-xlate.pl" and -f $xlate ) or - ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or - die "can't locate arm-xlate.pl"; - - open STDOUT,"| \"$^X\" $xlate $flavour $output"; -} else { - open STDOUT,">$output"; -} - -$code.=<<___; -#include - -.text -#if defined(__thumb2__) -.syntax unified -.thumb -#else -.code 32 -#endif - -.asciz "ECP_NISTZ256 for ARMv4, CRYPTOGAMS by " -.align 6 -___ - -######################################################################## -# common register layout, note that $t2 is link register, so that if -# internal subroutine uses $t2, then it has to offload lr... - -($r_ptr,$a_ptr,$b_ptr,$ff,$a0,$a1,$a2,$a3,$a4,$a5,$a6,$a7,$t1,$t2)= - map("r$_",(0..12,14)); -($t0,$t3)=($ff,$a_ptr); - -$code.=<<___; -.type __ecp_nistz256_mul_by_2,%function -.align 4 -__ecp_nistz256_mul_by_2: - ldr $a0,[$a_ptr,#0] - ldr $a1,[$a_ptr,#4] - ldr $a2,[$a_ptr,#8] - adds $a0,$a0,$a0 @ a[0:7]+=a[0:7], i.e. add with itself - ldr $a3,[$a_ptr,#12] - adcs $a1,$a1,$a1 - ldr $a4,[$a_ptr,#16] - adcs $a2,$a2,$a2 - ldr $a5,[$a_ptr,#20] - adcs $a3,$a3,$a3 - ldr $a6,[$a_ptr,#24] - adcs $a4,$a4,$a4 - ldr $a7,[$a_ptr,#28] - adcs $a5,$a5,$a5 - adcs $a6,$a6,$a6 - mov $ff,#0 - adcs $a7,$a7,$a7 - adc $ff,$ff,#0 - - b .Lreduce_by_sub -.size __ecp_nistz256_mul_by_2,.-__ecp_nistz256_mul_by_2 - -@ void GFp_nistz256_add(BN_ULONG r0[8],const BN_ULONG r1[8], -@ const BN_ULONG r2[8]); -.globl GFp_nistz256_add -.type GFp_nistz256_add,%function -.align 4 -GFp_nistz256_add: - stmdb sp!,{r4-r12,lr} - bl __ecp_nistz256_add -#if __ARM_ARCH__>=5 || !defined(__thumb__) - ldmia sp!,{r4-r12,pc} -#else - ldmia sp!,{r4-r12,lr} - bx lr @ interoperable with Thumb ISA:-) -#endif -.size GFp_nistz256_add,.-GFp_nistz256_add - -.type __ecp_nistz256_add,%function -.align 4 -__ecp_nistz256_add: - str lr,[sp,#-4]! @ push lr - - ldr $a0,[$a_ptr,#0] - ldr $a1,[$a_ptr,#4] - ldr $a2,[$a_ptr,#8] - ldr $a3,[$a_ptr,#12] - ldr $a4,[$a_ptr,#16] - ldr $t0,[$b_ptr,#0] - ldr $a5,[$a_ptr,#20] - ldr $t1,[$b_ptr,#4] - ldr $a6,[$a_ptr,#24] - ldr $t2,[$b_ptr,#8] - ldr $a7,[$a_ptr,#28] - ldr $t3,[$b_ptr,#12] - adds $a0,$a0,$t0 - ldr $t0,[$b_ptr,#16] - adcs $a1,$a1,$t1 - ldr $t1,[$b_ptr,#20] - adcs $a2,$a2,$t2 - ldr $t2,[$b_ptr,#24] - adcs $a3,$a3,$t3 - ldr $t3,[$b_ptr,#28] - adcs $a4,$a4,$t0 - adcs $a5,$a5,$t1 - adcs $a6,$a6,$t2 - mov $ff,#0 - adcs $a7,$a7,$t3 - adc $ff,$ff,#0 - ldr lr,[sp],#4 @ pop lr - -.Lreduce_by_sub: - - @ if a+b >= modulus, subtract modulus. - @ - @ But since comparison implies subtraction, we subtract - @ modulus and then add it back if subtraction borrowed. - - subs $a0,$a0,#-1 - sbcs $a1,$a1,#-1 - sbcs $a2,$a2,#-1 - sbcs $a3,$a3,#0 - sbcs $a4,$a4,#0 - sbcs $a5,$a5,#0 - sbcs $a6,$a6,#1 - sbcs $a7,$a7,#-1 - sbc $ff,$ff,#0 - - @ Note that because mod has special form, i.e. consists of - @ 0xffffffff, 1 and 0s, we can conditionally synthesize it by - @ using value of borrow as a whole or extracting single bit. - @ Follow $ff register... - - adds $a0,$a0,$ff @ add synthesized modulus - adcs $a1,$a1,$ff - str $a0,[$r_ptr,#0] - adcs $a2,$a2,$ff - str $a1,[$r_ptr,#4] - adcs $a3,$a3,#0 - str $a2,[$r_ptr,#8] - adcs $a4,$a4,#0 - str $a3,[$r_ptr,#12] - adcs $a5,$a5,#0 - str $a4,[$r_ptr,#16] - adcs $a6,$a6,$ff,lsr#31 - str $a5,[$r_ptr,#20] - adcs $a7,$a7,$ff - str $a6,[$r_ptr,#24] - str $a7,[$r_ptr,#28] - - mov pc,lr -.size __ecp_nistz256_add,.-__ecp_nistz256_add - -.type __ecp_nistz256_mul_by_3,%function -.align 4 -__ecp_nistz256_mul_by_3: - str lr,[sp,#-4]! @ push lr - - @ As multiplication by 3 is performed as 2*n+n, below are inline - @ copies of __ecp_nistz256_mul_by_2 and __ecp_nistz256_add, see - @ corresponding subroutines for details. - - ldr $a0,[$a_ptr,#0] - ldr $a1,[$a_ptr,#4] - ldr $a2,[$a_ptr,#8] - adds $a0,$a0,$a0 @ a[0:7]+=a[0:7] - ldr $a3,[$a_ptr,#12] - adcs $a1,$a1,$a1 - ldr $a4,[$a_ptr,#16] - adcs $a2,$a2,$a2 - ldr $a5,[$a_ptr,#20] - adcs $a3,$a3,$a3 - ldr $a6,[$a_ptr,#24] - adcs $a4,$a4,$a4 - ldr $a7,[$a_ptr,#28] - adcs $a5,$a5,$a5 - adcs $a6,$a6,$a6 - mov $ff,#0 - adcs $a7,$a7,$a7 - adc $ff,$ff,#0 - - subs $a0,$a0,#-1 @ .Lreduce_by_sub but without stores - sbcs $a1,$a1,#-1 - sbcs $a2,$a2,#-1 - sbcs $a3,$a3,#0 - sbcs $a4,$a4,#0 - sbcs $a5,$a5,#0 - sbcs $a6,$a6,#1 - sbcs $a7,$a7,#-1 - sbc $ff,$ff,#0 - - adds $a0,$a0,$ff @ add synthesized modulus - adcs $a1,$a1,$ff - adcs $a2,$a2,$ff - adcs $a3,$a3,#0 - adcs $a4,$a4,#0 - ldr $b_ptr,[$a_ptr,#0] - adcs $a5,$a5,#0 - ldr $t1,[$a_ptr,#4] - adcs $a6,$a6,$ff,lsr#31 - ldr $t2,[$a_ptr,#8] - adc $a7,$a7,$ff - - ldr $t0,[$a_ptr,#12] - adds $a0,$a0,$b_ptr @ 2*a[0:7]+=a[0:7] - ldr $b_ptr,[$a_ptr,#16] - adcs $a1,$a1,$t1 - ldr $t1,[$a_ptr,#20] - adcs $a2,$a2,$t2 - ldr $t2,[$a_ptr,#24] - adcs $a3,$a3,$t0 - ldr $t3,[$a_ptr,#28] - adcs $a4,$a4,$b_ptr - adcs $a5,$a5,$t1 - adcs $a6,$a6,$t2 - mov $ff,#0 - adcs $a7,$a7,$t3 - adc $ff,$ff,#0 - ldr lr,[sp],#4 @ pop lr - - b .Lreduce_by_sub -.size __ecp_nistz256_mul_by_3,.-__ecp_nistz256_mul_by_3 - -.type __ecp_nistz256_div_by_2,%function -.align 4 -__ecp_nistz256_div_by_2: - @ ret = (a is odd ? a+mod : a) >> 1 - - ldr $a0,[$a_ptr,#0] - ldr $a1,[$a_ptr,#4] - ldr $a2,[$a_ptr,#8] - mov $ff,$a0,lsl#31 @ place least significant bit to most - @ significant position, now arithmetic - @ right shift by 31 will produce -1 or - @ 0, while logical right shift 1 or 0, - @ this is how modulus is conditionally - @ synthesized in this case... - ldr $a3,[$a_ptr,#12] - adds $a0,$a0,$ff,asr#31 - ldr $a4,[$a_ptr,#16] - adcs $a1,$a1,$ff,asr#31 - ldr $a5,[$a_ptr,#20] - adcs $a2,$a2,$ff,asr#31 - ldr $a6,[$a_ptr,#24] - adcs $a3,$a3,#0 - ldr $a7,[$a_ptr,#28] - adcs $a4,$a4,#0 - mov $a0,$a0,lsr#1 @ a[0:7]>>=1, we can start early - @ because it doesn't affect flags - adcs $a5,$a5,#0 - orr $a0,$a0,$a1,lsl#31 - adcs $a6,$a6,$ff,lsr#31 - mov $b_ptr,#0 - adcs $a7,$a7,$ff,asr#31 - mov $a1,$a1,lsr#1 - adc $b_ptr,$b_ptr,#0 @ top-most carry bit from addition - - orr $a1,$a1,$a2,lsl#31 - mov $a2,$a2,lsr#1 - str $a0,[$r_ptr,#0] - orr $a2,$a2,$a3,lsl#31 - mov $a3,$a3,lsr#1 - str $a1,[$r_ptr,#4] - orr $a3,$a3,$a4,lsl#31 - mov $a4,$a4,lsr#1 - str $a2,[$r_ptr,#8] - orr $a4,$a4,$a5,lsl#31 - mov $a5,$a5,lsr#1 - str $a3,[$r_ptr,#12] - orr $a5,$a5,$a6,lsl#31 - mov $a6,$a6,lsr#1 - str $a4,[$r_ptr,#16] - orr $a6,$a6,$a7,lsl#31 - mov $a7,$a7,lsr#1 - str $a5,[$r_ptr,#20] - orr $a7,$a7,$b_ptr,lsl#31 @ don't forget the top-most carry bit - str $a6,[$r_ptr,#24] - str $a7,[$r_ptr,#28] - - mov pc,lr -.size __ecp_nistz256_div_by_2,.-__ecp_nistz256_div_by_2 - -.type __ecp_nistz256_sub,%function -.align 4 -__ecp_nistz256_sub: - str lr,[sp,#-4]! @ push lr - - ldr $a0,[$a_ptr,#0] - ldr $a1,[$a_ptr,#4] - ldr $a2,[$a_ptr,#8] - ldr $a3,[$a_ptr,#12] - ldr $a4,[$a_ptr,#16] - ldr $t0,[$b_ptr,#0] - ldr $a5,[$a_ptr,#20] - ldr $t1,[$b_ptr,#4] - ldr $a6,[$a_ptr,#24] - ldr $t2,[$b_ptr,#8] - ldr $a7,[$a_ptr,#28] - ldr $t3,[$b_ptr,#12] - subs $a0,$a0,$t0 - ldr $t0,[$b_ptr,#16] - sbcs $a1,$a1,$t1 - ldr $t1,[$b_ptr,#20] - sbcs $a2,$a2,$t2 - ldr $t2,[$b_ptr,#24] - sbcs $a3,$a3,$t3 - ldr $t3,[$b_ptr,#28] - sbcs $a4,$a4,$t0 - sbcs $a5,$a5,$t1 - sbcs $a6,$a6,$t2 - sbcs $a7,$a7,$t3 - sbc $ff,$ff,$ff @ broadcast borrow bit - ldr lr,[sp],#4 @ pop lr - -.Lreduce_by_add: - - @ if a-b borrows, add modulus. - @ - @ Note that because mod has special form, i.e. consists of - @ 0xffffffff, 1 and 0s, we can conditionally synthesize it by - @ broadcasting borrow bit to a register, $ff, and using it as - @ a whole or extracting single bit. - - adds $a0,$a0,$ff @ add synthesized modulus - adcs $a1,$a1,$ff - str $a0,[$r_ptr,#0] - adcs $a2,$a2,$ff - str $a1,[$r_ptr,#4] - adcs $a3,$a3,#0 - str $a2,[$r_ptr,#8] - adcs $a4,$a4,#0 - str $a3,[$r_ptr,#12] - adcs $a5,$a5,#0 - str $a4,[$r_ptr,#16] - adcs $a6,$a6,$ff,lsr#31 - str $a5,[$r_ptr,#20] - adcs $a7,$a7,$ff - str $a6,[$r_ptr,#24] - str $a7,[$r_ptr,#28] - - mov pc,lr -.size __ecp_nistz256_sub,.-__ecp_nistz256_sub - -@ void GFp_nistz256_neg(BN_ULONG r0[8],const BN_ULONG r1[8]); -.globl GFp_nistz256_neg -.type GFp_nistz256_neg,%function -.align 4 -GFp_nistz256_neg: - stmdb sp!,{r4-r12,lr} - bl __ecp_nistz256_neg -#if __ARM_ARCH__>=5 || !defined(__thumb__) - ldmia sp!,{r4-r12,pc} -#else - ldmia sp!,{r4-r12,lr} - bx lr @ interoperable with Thumb ISA:-) -#endif -.size GFp_nistz256_neg,.-GFp_nistz256_neg - -.type __ecp_nistz256_neg,%function -.align 4 -__ecp_nistz256_neg: - ldr $a0,[$a_ptr,#0] - eor $ff,$ff,$ff - ldr $a1,[$a_ptr,#4] - ldr $a2,[$a_ptr,#8] - subs $a0,$ff,$a0 - ldr $a3,[$a_ptr,#12] - sbcs $a1,$ff,$a1 - ldr $a4,[$a_ptr,#16] - sbcs $a2,$ff,$a2 - ldr $a5,[$a_ptr,#20] - sbcs $a3,$ff,$a3 - ldr $a6,[$a_ptr,#24] - sbcs $a4,$ff,$a4 - ldr $a7,[$a_ptr,#28] - sbcs $a5,$ff,$a5 - sbcs $a6,$ff,$a6 - sbcs $a7,$ff,$a7 - sbc $ff,$ff,$ff - - b .Lreduce_by_add -.size __ecp_nistz256_neg,.-__ecp_nistz256_neg -___ -{ -my @acc=map("r$_",(3..11)); -my ($t0,$t1,$bj,$t2,$t3)=map("r$_",(0,1,2,12,14)); - -$code.=<<___; -@ void GFp_nistz256_mul_mont(BN_ULONG r0[8],const BN_ULONG r1[8], -@ const BN_ULONG r2[8]); -.globl GFp_nistz256_mul_mont -.type GFp_nistz256_mul_mont,%function -.align 4 -GFp_nistz256_mul_mont: - stmdb sp!,{r4-r12,lr} - bl __ecp_nistz256_mul_mont -#if __ARM_ARCH__>=5 || !defined(__thumb__) - ldmia sp!,{r4-r12,pc} -#else - ldmia sp!,{r4-r12,lr} - bx lr @ interoperable with Thumb ISA:-) -#endif -.size GFp_nistz256_mul_mont,.-GFp_nistz256_mul_mont - -.type __ecp_nistz256_mul_mont,%function -.align 4 -__ecp_nistz256_mul_mont: - stmdb sp!,{r0-r2,lr} @ make a copy of arguments too - - ldr $bj,[$b_ptr,#0] @ b[0] - ldmia $a_ptr,{@acc[1]-@acc[8]} - - umull @acc[0],$t3,@acc[1],$bj @ r[0]=a[0]*b[0] - stmdb sp!,{$acc[1]-@acc[8]} @ copy a[0-7] to stack, so - @ that it can be addressed - @ without spending register - @ on address - umull @acc[1],$t0,@acc[2],$bj @ r[1]=a[1]*b[0] - umull @acc[2],$t1,@acc[3],$bj - adds @acc[1],@acc[1],$t3 @ accumulate high part of mult - umull @acc[3],$t2,@acc[4],$bj - adcs @acc[2],@acc[2],$t0 - umull @acc[4],$t3,@acc[5],$bj - adcs @acc[3],@acc[3],$t1 - umull @acc[5],$t0,@acc[6],$bj - adcs @acc[4],@acc[4],$t2 - umull @acc[6],$t1,@acc[7],$bj - adcs @acc[5],@acc[5],$t3 - umull @acc[7],$t2,@acc[8],$bj - adcs @acc[6],@acc[6],$t0 - adcs @acc[7],@acc[7],$t1 - eor $t3,$t3,$t3 @ first overflow bit is zero - adc @acc[8],$t2,#0 -___ -for(my $i=1;$i<8;$i++) { -my $t4=@acc[0]; - - # Reduction iteration is normally performed by accumulating - # result of multiplication of modulus by "magic" digit [and - # omitting least significant word, which is guaranteed to - # be 0], but thanks to special form of modulus and "magic" - # digit being equal to least significant word, it can be - # performed with additions and subtractions alone. Indeed: - # - # ffff.0001.0000.0000.0000.ffff.ffff.ffff - # * abcd - # + xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.abcd - # - # Now observing that ff..ff*x = (2^n-1)*x = 2^n*x-x, we - # rewrite above as: - # - # xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.abcd - # + abcd.0000.abcd.0000.0000.abcd.0000.0000.0000 - # - abcd.0000.0000.0000.0000.0000.0000.abcd - # - # or marking redundant operations: - # - # xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.---- - # + abcd.0000.abcd.0000.0000.abcd.----.----.---- - # - abcd.----.----.----.----.----.----.---- - -$code.=<<___; - @ multiplication-less reduction $i - adds @acc[3],@acc[3],@acc[0] @ r[3]+=r[0] - ldr $bj,[sp,#40] @ restore b_ptr - adcs @acc[4],@acc[4],#0 @ r[4]+=0 - adcs @acc[5],@acc[5],#0 @ r[5]+=0 - adcs @acc[6],@acc[6],@acc[0] @ r[6]+=r[0] - ldr $t1,[sp,#0] @ load a[0] - adcs @acc[7],@acc[7],#0 @ r[7]+=0 - ldr $bj,[$bj,#4*$i] @ load b[i] - adcs @acc[8],@acc[8],@acc[0] @ r[8]+=r[0] - eor $t0,$t0,$t0 - adc $t3,$t3,#0 @ overflow bit - subs @acc[7],@acc[7],@acc[0] @ r[7]-=r[0] - ldr $t2,[sp,#4] @ a[1] - sbcs @acc[8],@acc[8],#0 @ r[8]-=0 - umlal @acc[1],$t0,$t1,$bj @ "r[0]"+=a[0]*b[i] - eor $t1,$t1,$t1 - sbc @acc[0],$t3,#0 @ overflow bit, keep in mind - @ that netto result is - @ addition of a value which - @ makes underflow impossible - - ldr $t3,[sp,#8] @ a[2] - umlal @acc[2],$t1,$t2,$bj @ "r[1]"+=a[1]*b[i] - str @acc[0],[sp,#36] @ temporarily offload overflow - eor $t2,$t2,$t2 - ldr $t4,[sp,#12] @ a[3], $t4 is alias @acc[0] - umlal @acc[3],$t2,$t3,$bj @ "r[2]"+=a[2]*b[i] - eor $t3,$t3,$t3 - adds @acc[2],@acc[2],$t0 @ accumulate high part of mult - ldr $t0,[sp,#16] @ a[4] - umlal @acc[4],$t3,$t4,$bj @ "r[3]"+=a[3]*b[i] - eor $t4,$t4,$t4 - adcs @acc[3],@acc[3],$t1 - ldr $t1,[sp,#20] @ a[5] - umlal @acc[5],$t4,$t0,$bj @ "r[4]"+=a[4]*b[i] - eor $t0,$t0,$t0 - adcs @acc[4],@acc[4],$t2 - ldr $t2,[sp,#24] @ a[6] - umlal @acc[6],$t0,$t1,$bj @ "r[5]"+=a[5]*b[i] - eor $t1,$t1,$t1 - adcs @acc[5],@acc[5],$t3 - ldr $t3,[sp,#28] @ a[7] - umlal @acc[7],$t1,$t2,$bj @ "r[6]"+=a[6]*b[i] - eor $t2,$t2,$t2 - adcs @acc[6],@acc[6],$t4 - ldr @acc[0],[sp,#36] @ restore overflow bit - umlal @acc[8],$t2,$t3,$bj @ "r[7]"+=a[7]*b[i] - eor $t3,$t3,$t3 - adcs @acc[7],@acc[7],$t0 - adcs @acc[8],@acc[8],$t1 - adcs @acc[0],$acc[0],$t2 - adc $t3,$t3,#0 @ new overflow bit -___ - push(@acc,shift(@acc)); # rotate registers, so that - # "r[i]" becomes r[i] -} -$code.=<<___; - @ last multiplication-less reduction - adds @acc[3],@acc[3],@acc[0] - ldr $r_ptr,[sp,#32] @ restore r_ptr - adcs @acc[4],@acc[4],#0 - adcs @acc[5],@acc[5],#0 - adcs @acc[6],@acc[6],@acc[0] - adcs @acc[7],@acc[7],#0 - adcs @acc[8],@acc[8],@acc[0] - adc $t3,$t3,#0 - subs @acc[7],@acc[7],@acc[0] - sbcs @acc[8],@acc[8],#0 - sbc @acc[0],$t3,#0 @ overflow bit - - @ Final step is "if result > mod, subtract mod", but we do it - @ "other way around", namely subtract modulus from result - @ and if it borrowed, add modulus back. - - adds @acc[1],@acc[1],#1 @ subs @acc[1],@acc[1],#-1 - adcs @acc[2],@acc[2],#0 @ sbcs @acc[2],@acc[2],#-1 - adcs @acc[3],@acc[3],#0 @ sbcs @acc[3],@acc[3],#-1 - sbcs @acc[4],@acc[4],#0 - sbcs @acc[5],@acc[5],#0 - sbcs @acc[6],@acc[6],#0 - sbcs @acc[7],@acc[7],#1 - adcs @acc[8],@acc[8],#0 @ sbcs @acc[8],@acc[8],#-1 - ldr lr,[sp,#44] @ restore lr - sbc @acc[0],@acc[0],#0 @ broadcast borrow bit - add sp,sp,#48 - - @ Note that because mod has special form, i.e. consists of - @ 0xffffffff, 1 and 0s, we can conditionally synthesize it by - @ broadcasting borrow bit to a register, @acc[0], and using it as - @ a whole or extracting single bit. - - adds @acc[1],@acc[1],@acc[0] @ add modulus or zero - adcs @acc[2],@acc[2],@acc[0] - str @acc[1],[$r_ptr,#0] - adcs @acc[3],@acc[3],@acc[0] - str @acc[2],[$r_ptr,#4] - adcs @acc[4],@acc[4],#0 - str @acc[3],[$r_ptr,#8] - adcs @acc[5],@acc[5],#0 - str @acc[4],[$r_ptr,#12] - adcs @acc[6],@acc[6],#0 - str @acc[5],[$r_ptr,#16] - adcs @acc[7],@acc[7],@acc[0],lsr#31 - str @acc[6],[$r_ptr,#20] - adc @acc[8],@acc[8],@acc[0] - str @acc[7],[$r_ptr,#24] - str @acc[8],[$r_ptr,#28] - - mov pc,lr -.size __ecp_nistz256_mul_mont,.-__ecp_nistz256_mul_mont -___ -} - -{{{ -######################################################################## -# Below $aN assignment matches order in which 256-bit result appears in -# register bank at return from __ecp_nistz256_mul_mont, so that we can -# skip over reloading it from memory. This means that below functions -# use custom calling sequence accepting 256-bit input in registers, -# output pointer in r0, $r_ptr, and optional pointer in r2, $b_ptr. -# -# See their "normal" counterparts for insights on calculations. - -my ($a0,$a1,$a2,$a3,$a4,$a5,$a6,$a7, - $t0,$t1,$t2,$t3)=map("r$_",(11,3..10,12,14,1)); -my $ff=$b_ptr; - -$code.=<<___; -.type __ecp_nistz256_sub_from,%function -.align 5 -__ecp_nistz256_sub_from: - str lr,[sp,#-4]! @ push lr - - ldr $t0,[$b_ptr,#0] - ldr $t1,[$b_ptr,#4] - ldr $t2,[$b_ptr,#8] - ldr $t3,[$b_ptr,#12] - subs $a0,$a0,$t0 - ldr $t0,[$b_ptr,#16] - sbcs $a1,$a1,$t1 - ldr $t1,[$b_ptr,#20] - sbcs $a2,$a2,$t2 - ldr $t2,[$b_ptr,#24] - sbcs $a3,$a3,$t3 - ldr $t3,[$b_ptr,#28] - sbcs $a4,$a4,$t0 - sbcs $a5,$a5,$t1 - sbcs $a6,$a6,$t2 - sbcs $a7,$a7,$t3 - sbc $ff,$ff,$ff @ broadcast borrow bit - ldr lr,[sp],#4 @ pop lr - - adds $a0,$a0,$ff @ add synthesized modulus - adcs $a1,$a1,$ff - str $a0,[$r_ptr,#0] - adcs $a2,$a2,$ff - str $a1,[$r_ptr,#4] - adcs $a3,$a3,#0 - str $a2,[$r_ptr,#8] - adcs $a4,$a4,#0 - str $a3,[$r_ptr,#12] - adcs $a5,$a5,#0 - str $a4,[$r_ptr,#16] - adcs $a6,$a6,$ff,lsr#31 - str $a5,[$r_ptr,#20] - adcs $a7,$a7,$ff - str $a6,[$r_ptr,#24] - str $a7,[$r_ptr,#28] - - mov pc,lr -.size __ecp_nistz256_sub_from,.-__ecp_nistz256_sub_from - -.type __ecp_nistz256_sub_morf,%function -.align 5 -__ecp_nistz256_sub_morf: - str lr,[sp,#-4]! @ push lr - - ldr $t0,[$b_ptr,#0] - ldr $t1,[$b_ptr,#4] - ldr $t2,[$b_ptr,#8] - ldr $t3,[$b_ptr,#12] - subs $a0,$t0,$a0 - ldr $t0,[$b_ptr,#16] - sbcs $a1,$t1,$a1 - ldr $t1,[$b_ptr,#20] - sbcs $a2,$t2,$a2 - ldr $t2,[$b_ptr,#24] - sbcs $a3,$t3,$a3 - ldr $t3,[$b_ptr,#28] - sbcs $a4,$t0,$a4 - sbcs $a5,$t1,$a5 - sbcs $a6,$t2,$a6 - sbcs $a7,$t3,$a7 - sbc $ff,$ff,$ff @ broadcast borrow bit - ldr lr,[sp],#4 @ pop lr - - adds $a0,$a0,$ff @ add synthesized modulus - adcs $a1,$a1,$ff - str $a0,[$r_ptr,#0] - adcs $a2,$a2,$ff - str $a1,[$r_ptr,#4] - adcs $a3,$a3,#0 - str $a2,[$r_ptr,#8] - adcs $a4,$a4,#0 - str $a3,[$r_ptr,#12] - adcs $a5,$a5,#0 - str $a4,[$r_ptr,#16] - adcs $a6,$a6,$ff,lsr#31 - str $a5,[$r_ptr,#20] - adcs $a7,$a7,$ff - str $a6,[$r_ptr,#24] - str $a7,[$r_ptr,#28] - - mov pc,lr -.size __ecp_nistz256_sub_morf,.-__ecp_nistz256_sub_morf - -.type __ecp_nistz256_add_self,%function -.align 4 -__ecp_nistz256_add_self: - adds $a0,$a0,$a0 @ a[0:7]+=a[0:7] - adcs $a1,$a1,$a1 - adcs $a2,$a2,$a2 - adcs $a3,$a3,$a3 - adcs $a4,$a4,$a4 - adcs $a5,$a5,$a5 - adcs $a6,$a6,$a6 - mov $ff,#0 - adcs $a7,$a7,$a7 - adc $ff,$ff,#0 - - @ if a+b >= modulus, subtract modulus. - @ - @ But since comparison implies subtraction, we subtract - @ modulus and then add it back if subtraction borrowed. - - subs $a0,$a0,#-1 - sbcs $a1,$a1,#-1 - sbcs $a2,$a2,#-1 - sbcs $a3,$a3,#0 - sbcs $a4,$a4,#0 - sbcs $a5,$a5,#0 - sbcs $a6,$a6,#1 - sbcs $a7,$a7,#-1 - sbc $ff,$ff,#0 - - @ Note that because mod has special form, i.e. consists of - @ 0xffffffff, 1 and 0s, we can conditionally synthesize it by - @ using value of borrow as a whole or extracting single bit. - @ Follow $ff register... - - adds $a0,$a0,$ff @ add synthesized modulus - adcs $a1,$a1,$ff - str $a0,[$r_ptr,#0] - adcs $a2,$a2,$ff - str $a1,[$r_ptr,#4] - adcs $a3,$a3,#0 - str $a2,[$r_ptr,#8] - adcs $a4,$a4,#0 - str $a3,[$r_ptr,#12] - adcs $a5,$a5,#0 - str $a4,[$r_ptr,#16] - adcs $a6,$a6,$ff,lsr#31 - str $a5,[$r_ptr,#20] - adcs $a7,$a7,$ff - str $a6,[$r_ptr,#24] - str $a7,[$r_ptr,#28] - - mov pc,lr -.size __ecp_nistz256_add_self,.-__ecp_nistz256_add_self - -___ - -######################################################################## -# following subroutines are "literal" implementation of those found in -# ecp_nistz256.c -# -######################################################################## -# void ecp_nistz256_point_double(P256_POINT *out,const P256_POINT *inp); -# -{ -my ($S,$M,$Zsqr,$in_x,$tmp0)=map(32*$_,(0..4)); -# above map() describes stack layout with 5 temporary -# 256-bit vectors on top. Then note that we push -# starting from r0, which means that we have copy of -# input arguments just below these temporary vectors. - -$code.=<<___; -.globl GFp_nistz256_point_double -.type GFp_nistz256_point_double,%function -.align 5 -GFp_nistz256_point_double: - stmdb sp!,{r0-r12,lr} @ push from r0, unusual, but intentional - sub sp,sp,#32*5 - -.Lpoint_double_shortcut: - add r3,sp,#$in_x - ldmia $a_ptr!,{r4-r11} @ copy in_x - stmia r3,{r4-r11} - - add $r_ptr,sp,#$S - bl __ecp_nistz256_mul_by_2 @ p256_mul_by_2(S, in_y); - - add $b_ptr,$a_ptr,#32 - add $a_ptr,$a_ptr,#32 - add $r_ptr,sp,#$Zsqr - bl __ecp_nistz256_mul_mont @ p256_sqr_mont(Zsqr, in_z); - - add $a_ptr,sp,#$S - add $b_ptr,sp,#$S - add $r_ptr,sp,#$S - bl __ecp_nistz256_mul_mont @ p256_sqr_mont(S, S); - - ldr $b_ptr,[sp,#32*5+4] - add $a_ptr,$b_ptr,#32 - add $b_ptr,$b_ptr,#64 - add $r_ptr,sp,#$tmp0 - bl __ecp_nistz256_mul_mont @ p256_mul_mont(tmp0, in_z, in_y); - - ldr $r_ptr,[sp,#32*5] - add $r_ptr,$r_ptr,#64 - bl __ecp_nistz256_add_self @ p256_mul_by_2(res_z, tmp0); - - add $a_ptr,sp,#$in_x - add $b_ptr,sp,#$Zsqr - add $r_ptr,sp,#$M - bl __ecp_nistz256_add @ p256_add(M, in_x, Zsqr); - - add $a_ptr,sp,#$in_x - add $b_ptr,sp,#$Zsqr - add $r_ptr,sp,#$Zsqr - bl __ecp_nistz256_sub @ p256_sub(Zsqr, in_x, Zsqr); - - add $a_ptr,sp,#$S - add $b_ptr,sp,#$S - add $r_ptr,sp,#$tmp0 - bl __ecp_nistz256_mul_mont @ p256_sqr_mont(tmp0, S); - - add $a_ptr,sp,#$Zsqr - add $b_ptr,sp,#$M - add $r_ptr,sp,#$M - bl __ecp_nistz256_mul_mont @ p256_mul_mont(M, M, Zsqr); - - ldr $r_ptr,[sp,#32*5] - add $a_ptr,sp,#$tmp0 - add $r_ptr,$r_ptr,#32 - bl __ecp_nistz256_div_by_2 @ p256_div_by_2(res_y, tmp0); - - add $a_ptr,sp,#$M - add $r_ptr,sp,#$M - bl __ecp_nistz256_mul_by_3 @ p256_mul_by_3(M, M); - - add $a_ptr,sp,#$in_x - add $b_ptr,sp,#$S - add $r_ptr,sp,#$S - bl __ecp_nistz256_mul_mont @ p256_mul_mont(S, S, in_x); - - add $r_ptr,sp,#$tmp0 - bl __ecp_nistz256_add_self @ p256_mul_by_2(tmp0, S); - - ldr $r_ptr,[sp,#32*5] - add $a_ptr,sp,#$M - add $b_ptr,sp,#$M - bl __ecp_nistz256_mul_mont @ p256_sqr_mont(res_x, M); - - add $b_ptr,sp,#$tmp0 - bl __ecp_nistz256_sub_from @ p256_sub(res_x, res_x, tmp0); - - add $b_ptr,sp,#$S - add $r_ptr,sp,#$S - bl __ecp_nistz256_sub_morf @ p256_sub(S, S, res_x); - - add $a_ptr,sp,#$M - add $b_ptr,sp,#$S - bl __ecp_nistz256_mul_mont @ p256_mul_mont(S, S, M); - - ldr $r_ptr,[sp,#32*5] - add $b_ptr,$r_ptr,#32 - add $r_ptr,$r_ptr,#32 - bl __ecp_nistz256_sub_from @ p256_sub(res_y, S, res_y); - - add sp,sp,#32*5+16 @ +16 means "skip even over saved r0-r3" -#if __ARM_ARCH__>=5 || !defined(__thumb__) - ldmia sp!,{r4-r12,pc} -#else - ldmia sp!,{r4-r12,lr} - bx lr @ interoperable with Thumb ISA:-) -#endif -.size GFp_nistz256_point_double,.-GFp_nistz256_point_double -___ -} - -}}} - -foreach (split("\n",$code)) { - s/\`([^\`]*)\`/eval $1/geo; - - s/\bq([0-9]+)#(lo|hi)/sprintf "d%d",2*$1+($2 eq "hi")/geo; - - print $_,"\n"; -} -close STDOUT or die "error closing STDOUT"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/ecp_nistz256-armv8.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/ecp_nistz256-armv8.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/ecp_nistz256-armv8.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/ecp_nistz256-armv8.pl 1970-01-01 00:00:00.000000000 +0000 @@ -1,908 +0,0 @@ -#! /usr/bin/env perl -# Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# -# 3. All advertising materials mentioning features or use of this -# software must display the following acknowledgment: -# "This product includes software developed by the OpenSSL Project -# for use in the OpenSSL Toolkit. (http://www.openssl.org/)" -# -# 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to -# endorse or promote products derived from this software without -# prior written permission. For written permission, please contact -# openssl-core@openssl.org. -# -# 5. Products derived from this software may not be called "OpenSSL" -# nor may "OpenSSL" appear in their names without prior written -# permission of the OpenSSL Project. -# -# 6. Redistributions of any form whatsoever must retain the following -# acknowledgment: -# "This product includes software developed by the OpenSSL Project -# for use in the OpenSSL Toolkit (http://www.openssl.org/)" -# -# THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY -# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR -# ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED -# OF THE POSSIBILITY OF SUCH DAMAGE. -# ==================================================================== -# -# This product includes cryptographic software written by Eric Young -# (eay@cryptsoft.com). This product includes software written by Tim -# Hudson (tjh@cryptsoft.com). - - -# ==================================================================== -# Written by Andy Polyakov for the OpenSSL -# project. The module is, however, dual licensed under OpenSSL and -# CRYPTOGAMS licenses depending on where you obtain it. For further -# details see http://www.openssl.org/~appro/cryptogams/. -# ==================================================================== -# -# ECP_NISTZ256 module for ARMv8. -# -# February 2015. -# -# Original ECP_NISTZ256 submission targeting x86_64 is detailed in -# http://eprint.iacr.org/2013/816. -# -# with/without -DECP_NISTZ256_ASM -# Apple A7 +120-360% -# Cortex-A53 +120-400% -# Cortex-A57 +120-350% -# X-Gene +200-330% -# Denver +140-400% -# -# Ranges denote minimum and maximum improvement coefficients depending -# on benchmark. Lower coefficients are for ECDSA sign, server-side -# operation. Keep in mind that +400% means 5x improvement. - -$flavour = shift; -while (($output=shift) && ($output!~/\w[\w\-]*\.\w+$/)) {} - -$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; -( $xlate="${dir}arm-xlate.pl" and -f $xlate ) or -( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or -die "can't locate arm-xlate.pl"; - -open OUT,"| \"$^X\" $xlate $flavour $output"; -*STDOUT=*OUT; - -{ -my ($rp,$ap,$bp,$bi,$a0,$a1,$a2,$a3,$t0,$t1,$t2,$t3,$poly1,$poly3, - $acc0,$acc1,$acc2,$acc3,$acc4,$acc5) = - map("x$_",(0..17,19,20)); - -my ($acc6,$acc7)=($ap,$bp); # used in __ecp_nistz256_sqr_mont - -$code.=<<___; -#include - -.text -.align 5 -.Lpoly: -.quad 0xffffffffffffffff,0x00000000ffffffff,0x0000000000000000,0xffffffff00000001 -.Lone_mont: -.quad 0x0000000000000001,0xffffffff00000000,0xffffffffffffffff,0x00000000fffffffe -.Lone: -.quad 1,0,0,0 -.asciz "ECP_NISTZ256 for ARMv8, CRYPTOGAMS by " - -// void GFp_nistz256_mul_mont(BN_ULONG x0[4],const BN_ULONG x1[4], -// const BN_ULONG x2[4]); -.globl GFp_nistz256_mul_mont -.type GFp_nistz256_mul_mont,%function -.align 4 -GFp_nistz256_mul_mont: - stp x29,x30,[sp,#-32]! - add x29,sp,#0 - stp x19,x20,[sp,#16] - - ldr $bi,[$bp] // bp[0] - ldp $a0,$a1,[$ap] - ldp $a2,$a3,[$ap,#16] - ldr $poly1,.Lpoly+8 - ldr $poly3,.Lpoly+24 - - bl __ecp_nistz256_mul_mont - - ldp x19,x20,[sp,#16] - ldp x29,x30,[sp],#32 - ret -.size GFp_nistz256_mul_mont,.-GFp_nistz256_mul_mont - -// void GFp_nistz256_sqr_mont(BN_ULONG x0[4],const BN_ULONG x1[4]); -.globl GFp_nistz256_sqr_mont -.type GFp_nistz256_sqr_mont,%function -.align 4 -GFp_nistz256_sqr_mont: - stp x29,x30,[sp,#-32]! - add x29,sp,#0 - stp x19,x20,[sp,#16] - - ldp $a0,$a1,[$ap] - ldp $a2,$a3,[$ap,#16] - ldr $poly1,.Lpoly+8 - ldr $poly3,.Lpoly+24 - - bl __ecp_nistz256_sqr_mont - - ldp x19,x20,[sp,#16] - ldp x29,x30,[sp],#32 - ret -.size GFp_nistz256_sqr_mont,.-GFp_nistz256_sqr_mont - -// void GFp_nistz256_add(BN_ULONG x0[4],const BN_ULONG x1[4], -// const BN_ULONG x2[4]); -.globl GFp_nistz256_add -.type GFp_nistz256_add,%function -.align 4 -GFp_nistz256_add: - stp x29,x30,[sp,#-16]! - add x29,sp,#0 - - ldp $acc0,$acc1,[$ap] - ldp $t0,$t1,[$bp] - ldp $acc2,$acc3,[$ap,#16] - ldp $t2,$t3,[$bp,#16] - ldr $poly1,.Lpoly+8 - ldr $poly3,.Lpoly+24 - - bl __ecp_nistz256_add - - ldp x29,x30,[sp],#16 - ret -.size GFp_nistz256_add,.-GFp_nistz256_add - -// void GFp_nistz256_neg(BN_ULONG x0[4],const BN_ULONG x1[4]); -.globl GFp_nistz256_neg -.type GFp_nistz256_neg,%function -.align 4 -GFp_nistz256_neg: - stp x29,x30,[sp,#-16]! - add x29,sp,#0 - - mov $bp,$ap - mov $acc0,xzr // a = 0 - mov $acc1,xzr - mov $acc2,xzr - mov $acc3,xzr - ldr $poly1,.Lpoly+8 - ldr $poly3,.Lpoly+24 - - bl __ecp_nistz256_sub_from - - ldp x29,x30,[sp],#16 - ret -.size GFp_nistz256_neg,.-GFp_nistz256_neg - -// note that __ecp_nistz256_mul_mont expects a[0-3] input pre-loaded -// to $a0-$a3 and b[0] - to $bi -.type __ecp_nistz256_mul_mont,%function -.align 4 -__ecp_nistz256_mul_mont: - mul $acc0,$a0,$bi // a[0]*b[0] - umulh $t0,$a0,$bi - - mul $acc1,$a1,$bi // a[1]*b[0] - umulh $t1,$a1,$bi - - mul $acc2,$a2,$bi // a[2]*b[0] - umulh $t2,$a2,$bi - - mul $acc3,$a3,$bi // a[3]*b[0] - umulh $t3,$a3,$bi - ldr $bi,[$bp,#8] // b[1] - - adds $acc1,$acc1,$t0 // accumulate high parts of multiplication - lsl $t0,$acc0,#32 - adcs $acc2,$acc2,$t1 - lsr $t1,$acc0,#32 - adcs $acc3,$acc3,$t2 - adc $acc4,xzr,$t3 - mov $acc5,xzr -___ -for($i=1;$i<4;$i++) { - # Reduction iteration is normally performed by accumulating - # result of multiplication of modulus by "magic" digit [and - # omitting least significant word, which is guaranteed to - # be 0], but thanks to special form of modulus and "magic" - # digit being equal to least significant word, it can be - # performed with additions and subtractions alone. Indeed: - # - # ffff0001.00000000.0000ffff.ffffffff - # * abcdefgh - # + xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx.abcdefgh - # - # Now observing that ff..ff*x = (2^n-1)*x = 2^n*x-x, we - # rewrite above as: - # - # xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx.abcdefgh - # + abcdefgh.abcdefgh.0000abcd.efgh0000.00000000 - # - 0000abcd.efgh0000.00000000.00000000.abcdefgh - # - # or marking redundant operations: - # - # xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx.-------- - # + abcdefgh.abcdefgh.0000abcd.efgh0000.-------- - # - 0000abcd.efgh0000.--------.--------.-------- - -$code.=<<___; - subs $t2,$acc0,$t0 // "*0xffff0001" - sbc $t3,$acc0,$t1 - adds $acc0,$acc1,$t0 // +=acc[0]<<96 and omit acc[0] - mul $t0,$a0,$bi // lo(a[0]*b[i]) - adcs $acc1,$acc2,$t1 - mul $t1,$a1,$bi // lo(a[1]*b[i]) - adcs $acc2,$acc3,$t2 // +=acc[0]*0xffff0001 - mul $t2,$a2,$bi // lo(a[2]*b[i]) - adcs $acc3,$acc4,$t3 - mul $t3,$a3,$bi // lo(a[3]*b[i]) - adc $acc4,$acc5,xzr - - adds $acc0,$acc0,$t0 // accumulate low parts of multiplication - umulh $t0,$a0,$bi // hi(a[0]*b[i]) - adcs $acc1,$acc1,$t1 - umulh $t1,$a1,$bi // hi(a[1]*b[i]) - adcs $acc2,$acc2,$t2 - umulh $t2,$a2,$bi // hi(a[2]*b[i]) - adcs $acc3,$acc3,$t3 - umulh $t3,$a3,$bi // hi(a[3]*b[i]) - adc $acc4,$acc4,xzr -___ -$code.=<<___ if ($i<3); - ldr $bi,[$bp,#8*($i+1)] // b[$i+1] -___ -$code.=<<___; - adds $acc1,$acc1,$t0 // accumulate high parts of multiplication - lsl $t0,$acc0,#32 - adcs $acc2,$acc2,$t1 - lsr $t1,$acc0,#32 - adcs $acc3,$acc3,$t2 - adcs $acc4,$acc4,$t3 - adc $acc5,xzr,xzr -___ -} -$code.=<<___; - // last reduction - subs $t2,$acc0,$t0 // "*0xffff0001" - sbc $t3,$acc0,$t1 - adds $acc0,$acc1,$t0 // +=acc[0]<<96 and omit acc[0] - adcs $acc1,$acc2,$t1 - adcs $acc2,$acc3,$t2 // +=acc[0]*0xffff0001 - adcs $acc3,$acc4,$t3 - adc $acc4,$acc5,xzr - - adds $t0,$acc0,#1 // subs $t0,$acc0,#-1 // tmp = ret-modulus - sbcs $t1,$acc1,$poly1 - sbcs $t2,$acc2,xzr - sbcs $t3,$acc3,$poly3 - sbcs xzr,$acc4,xzr // did it borrow? - - csel $acc0,$acc0,$t0,lo // ret = borrow ? ret : ret-modulus - csel $acc1,$acc1,$t1,lo - csel $acc2,$acc2,$t2,lo - stp $acc0,$acc1,[$rp] - csel $acc3,$acc3,$t3,lo - stp $acc2,$acc3,[$rp,#16] - - ret -.size __ecp_nistz256_mul_mont,.-__ecp_nistz256_mul_mont - -// note that __ecp_nistz256_sqr_mont expects a[0-3] input pre-loaded -// to $a0-$a3 -.type __ecp_nistz256_sqr_mont,%function -.align 4 -__ecp_nistz256_sqr_mont: - // | | | | | |a1*a0| | - // | | | | |a2*a0| | | - // | |a3*a2|a3*a0| | | | - // | | | |a2*a1| | | | - // | | |a3*a1| | | | | - // *| | | | | | | | 2| - // +|a3*a3|a2*a2|a1*a1|a0*a0| - // |--+--+--+--+--+--+--+--| - // |A7|A6|A5|A4|A3|A2|A1|A0|, where Ax is $accx, i.e. follow $accx - // - // "can't overflow" below mark carrying into high part of - // multiplication result, which can't overflow, because it - // can never be all ones. - - mul $acc1,$a1,$a0 // a[1]*a[0] - umulh $t1,$a1,$a0 - mul $acc2,$a2,$a0 // a[2]*a[0] - umulh $t2,$a2,$a0 - mul $acc3,$a3,$a0 // a[3]*a[0] - umulh $acc4,$a3,$a0 - - adds $acc2,$acc2,$t1 // accumulate high parts of multiplication - mul $t0,$a2,$a1 // a[2]*a[1] - umulh $t1,$a2,$a1 - adcs $acc3,$acc3,$t2 - mul $t2,$a3,$a1 // a[3]*a[1] - umulh $t3,$a3,$a1 - adc $acc4,$acc4,xzr // can't overflow - - mul $acc5,$a3,$a2 // a[3]*a[2] - umulh $acc6,$a3,$a2 - - adds $t1,$t1,$t2 // accumulate high parts of multiplication - mul $acc0,$a0,$a0 // a[0]*a[0] - adc $t2,$t3,xzr // can't overflow - - adds $acc3,$acc3,$t0 // accumulate low parts of multiplication - umulh $a0,$a0,$a0 - adcs $acc4,$acc4,$t1 - mul $t1,$a1,$a1 // a[1]*a[1] - adcs $acc5,$acc5,$t2 - umulh $a1,$a1,$a1 - adc $acc6,$acc6,xzr // can't overflow - - adds $acc1,$acc1,$acc1 // acc[1-6]*=2 - mul $t2,$a2,$a2 // a[2]*a[2] - adcs $acc2,$acc2,$acc2 - umulh $a2,$a2,$a2 - adcs $acc3,$acc3,$acc3 - mul $t3,$a3,$a3 // a[3]*a[3] - adcs $acc4,$acc4,$acc4 - umulh $a3,$a3,$a3 - adcs $acc5,$acc5,$acc5 - adcs $acc6,$acc6,$acc6 - adc $acc7,xzr,xzr - - adds $acc1,$acc1,$a0 // +a[i]*a[i] - adcs $acc2,$acc2,$t1 - adcs $acc3,$acc3,$a1 - adcs $acc4,$acc4,$t2 - adcs $acc5,$acc5,$a2 - lsl $t0,$acc0,#32 - adcs $acc6,$acc6,$t3 - lsr $t1,$acc0,#32 - adc $acc7,$acc7,$a3 -___ -for($i=0;$i<3;$i++) { # reductions, see commentary in - # multiplication for details -$code.=<<___; - subs $t2,$acc0,$t0 // "*0xffff0001" - sbc $t3,$acc0,$t1 - adds $acc0,$acc1,$t0 // +=acc[0]<<96 and omit acc[0] - adcs $acc1,$acc2,$t1 - lsl $t0,$acc0,#32 - adcs $acc2,$acc3,$t2 // +=acc[0]*0xffff0001 - lsr $t1,$acc0,#32 - adc $acc3,$t3,xzr // can't overflow -___ -} -$code.=<<___; - subs $t2,$acc0,$t0 // "*0xffff0001" - sbc $t3,$acc0,$t1 - adds $acc0,$acc1,$t0 // +=acc[0]<<96 and omit acc[0] - adcs $acc1,$acc2,$t1 - adcs $acc2,$acc3,$t2 // +=acc[0]*0xffff0001 - adc $acc3,$t3,xzr // can't overflow - - adds $acc0,$acc0,$acc4 // accumulate upper half - adcs $acc1,$acc1,$acc5 - adcs $acc2,$acc2,$acc6 - adcs $acc3,$acc3,$acc7 - adc $acc4,xzr,xzr - - adds $t0,$acc0,#1 // subs $t0,$acc0,#-1 // tmp = ret-modulus - sbcs $t1,$acc1,$poly1 - sbcs $t2,$acc2,xzr - sbcs $t3,$acc3,$poly3 - sbcs xzr,$acc4,xzr // did it borrow? - - csel $acc0,$acc0,$t0,lo // ret = borrow ? ret : ret-modulus - csel $acc1,$acc1,$t1,lo - csel $acc2,$acc2,$t2,lo - stp $acc0,$acc1,[$rp] - csel $acc3,$acc3,$t3,lo - stp $acc2,$acc3,[$rp,#16] - - ret -.size __ecp_nistz256_sqr_mont,.-__ecp_nistz256_sqr_mont - -// Note that __ecp_nistz256_add expects both input vectors pre-loaded to -// $a0-$a3 and $t0-$t3. This is done because it's used in multiple -// contexts, e.g. in multiplication by 2 and 3... -.type __ecp_nistz256_add,%function -.align 4 -__ecp_nistz256_add: - adds $acc0,$acc0,$t0 // ret = a+b - adcs $acc1,$acc1,$t1 - adcs $acc2,$acc2,$t2 - adcs $acc3,$acc3,$t3 - adc $ap,xzr,xzr // zap $ap - - adds $t0,$acc0,#1 // subs $t0,$a0,#-1 // tmp = ret-modulus - sbcs $t1,$acc1,$poly1 - sbcs $t2,$acc2,xzr - sbcs $t3,$acc3,$poly3 - sbcs xzr,$ap,xzr // did subtraction borrow? - - csel $acc0,$acc0,$t0,lo // ret = borrow ? ret : ret-modulus - csel $acc1,$acc1,$t1,lo - csel $acc2,$acc2,$t2,lo - stp $acc0,$acc1,[$rp] - csel $acc3,$acc3,$t3,lo - stp $acc2,$acc3,[$rp,#16] - - ret -.size __ecp_nistz256_add,.-__ecp_nistz256_add - -.type __ecp_nistz256_sub_from,%function -.align 4 -__ecp_nistz256_sub_from: - ldp $t0,$t1,[$bp] - ldp $t2,$t3,[$bp,#16] - subs $acc0,$acc0,$t0 // ret = a-b - sbcs $acc1,$acc1,$t1 - sbcs $acc2,$acc2,$t2 - sbcs $acc3,$acc3,$t3 - sbc $ap,xzr,xzr // zap $ap - - subs $t0,$acc0,#1 // adds $t0,$a0,#-1 // tmp = ret+modulus - adcs $t1,$acc1,$poly1 - adcs $t2,$acc2,xzr - adc $t3,$acc3,$poly3 - cmp $ap,xzr // did subtraction borrow? - - csel $acc0,$acc0,$t0,eq // ret = borrow ? ret+modulus : ret - csel $acc1,$acc1,$t1,eq - csel $acc2,$acc2,$t2,eq - stp $acc0,$acc1,[$rp] - csel $acc3,$acc3,$t3,eq - stp $acc2,$acc3,[$rp,#16] - - ret -.size __ecp_nistz256_sub_from,.-__ecp_nistz256_sub_from - -.type __ecp_nistz256_sub_morf,%function -.align 4 -__ecp_nistz256_sub_morf: - ldp $t0,$t1,[$bp] - ldp $t2,$t3,[$bp,#16] - subs $acc0,$t0,$acc0 // ret = b-a - sbcs $acc1,$t1,$acc1 - sbcs $acc2,$t2,$acc2 - sbcs $acc3,$t3,$acc3 - sbc $ap,xzr,xzr // zap $ap - - subs $t0,$acc0,#1 // adds $t0,$a0,#-1 // tmp = ret+modulus - adcs $t1,$acc1,$poly1 - adcs $t2,$acc2,xzr - adc $t3,$acc3,$poly3 - cmp $ap,xzr // did subtraction borrow? - - csel $acc0,$acc0,$t0,eq // ret = borrow ? ret+modulus : ret - csel $acc1,$acc1,$t1,eq - csel $acc2,$acc2,$t2,eq - stp $acc0,$acc1,[$rp] - csel $acc3,$acc3,$t3,eq - stp $acc2,$acc3,[$rp,#16] - - ret -.size __ecp_nistz256_sub_morf,.-__ecp_nistz256_sub_morf - -.type __ecp_nistz256_div_by_2,%function -.align 4 -__ecp_nistz256_div_by_2: - subs $t0,$acc0,#1 // adds $t0,$a0,#-1 // tmp = a+modulus - adcs $t1,$acc1,$poly1 - adcs $t2,$acc2,xzr - adcs $t3,$acc3,$poly3 - adc $ap,xzr,xzr // zap $ap - tst $acc0,#1 // is a even? - - csel $acc0,$acc0,$t0,eq // ret = even ? a : a+modulus - csel $acc1,$acc1,$t1,eq - csel $acc2,$acc2,$t2,eq - csel $acc3,$acc3,$t3,eq - csel $ap,xzr,$ap,eq - - lsr $acc0,$acc0,#1 // ret >>= 1 - orr $acc0,$acc0,$acc1,lsl#63 - lsr $acc1,$acc1,#1 - orr $acc1,$acc1,$acc2,lsl#63 - lsr $acc2,$acc2,#1 - orr $acc2,$acc2,$acc3,lsl#63 - lsr $acc3,$acc3,#1 - stp $acc0,$acc1,[$rp] - orr $acc3,$acc3,$ap,lsl#63 - stp $acc2,$acc3,[$rp,#16] - - ret -.size __ecp_nistz256_div_by_2,.-__ecp_nistz256_div_by_2 -___ -######################################################################## -# following subroutines are "literal" implementation of those found in -# ecp_nistz256.c -# -######################################################################## -# void GFp_nistz256_point_double(P256_POINT *out,const P256_POINT *inp); -# -{ -my ($S,$M,$Zsqr,$tmp0)=map(32*$_,(0..3)); -# above map() describes stack layout with 4 temporary -# 256-bit vectors on top. -my ($rp_real,$ap_real) = map("x$_",(21,22)); - -$code.=<<___; -.globl GFp_nistz256_point_double -.type GFp_nistz256_point_double,%function -.align 5 -GFp_nistz256_point_double: - stp x29,x30,[sp,#-80]! - add x29,sp,#0 - stp x19,x20,[sp,#16] - stp x21,x22,[sp,#32] - sub sp,sp,#32*4 - -.Ldouble_shortcut: - ldp $acc0,$acc1,[$ap,#32] - mov $rp_real,$rp - ldp $acc2,$acc3,[$ap,#48] - mov $ap_real,$ap - ldr $poly1,.Lpoly+8 - mov $t0,$acc0 - ldr $poly3,.Lpoly+24 - mov $t1,$acc1 - ldp $a0,$a1,[$ap_real,#64] // forward load for p256_sqr_mont - mov $t2,$acc2 - mov $t3,$acc3 - ldp $a2,$a3,[$ap_real,#64+16] - add $rp,sp,#$S - bl __ecp_nistz256_add // p256_mul_by_2(S, in_y); - - add $rp,sp,#$Zsqr - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Zsqr, in_z); - - ldp $t0,$t1,[$ap_real] - ldp $t2,$t3,[$ap_real,#16] - mov $a0,$acc0 // put Zsqr aside for p256_sub - mov $a1,$acc1 - mov $a2,$acc2 - mov $a3,$acc3 - add $rp,sp,#$M - bl __ecp_nistz256_add // p256_add(M, Zsqr, in_x); - - add $bp,$ap_real,#0 - mov $acc0,$a0 // restore Zsqr - mov $acc1,$a1 - ldp $a0,$a1,[sp,#$S] // forward load for p256_sqr_mont - mov $acc2,$a2 - mov $acc3,$a3 - ldp $a2,$a3,[sp,#$S+16] - add $rp,sp,#$Zsqr - bl __ecp_nistz256_sub_morf // p256_sub(Zsqr, in_x, Zsqr); - - add $rp,sp,#$S - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(S, S); - - ldr $bi,[$ap_real,#32] - ldp $a0,$a1,[$ap_real,#64] - ldp $a2,$a3,[$ap_real,#64+16] - add $bp,$ap_real,#32 - add $rp,sp,#$tmp0 - bl __ecp_nistz256_mul_mont // p256_mul_mont(tmp0, in_z, in_y); - - mov $t0,$acc0 - mov $t1,$acc1 - ldp $a0,$a1,[sp,#$S] // forward load for p256_sqr_mont - mov $t2,$acc2 - mov $t3,$acc3 - ldp $a2,$a3,[sp,#$S+16] - add $rp,$rp_real,#64 - bl __ecp_nistz256_add // p256_mul_by_2(res_z, tmp0); - - add $rp,sp,#$tmp0 - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(tmp0, S); - - ldr $bi,[sp,#$Zsqr] // forward load for p256_mul_mont - ldp $a0,$a1,[sp,#$M] - ldp $a2,$a3,[sp,#$M+16] - add $rp,$rp_real,#32 - bl __ecp_nistz256_div_by_2 // p256_div_by_2(res_y, tmp0); - - add $bp,sp,#$Zsqr - add $rp,sp,#$M - bl __ecp_nistz256_mul_mont // p256_mul_mont(M, M, Zsqr); - - mov $t0,$acc0 // duplicate M - mov $t1,$acc1 - mov $t2,$acc2 - mov $t3,$acc3 - mov $a0,$acc0 // put M aside - mov $a1,$acc1 - mov $a2,$acc2 - mov $a3,$acc3 - add $rp,sp,#$M - bl __ecp_nistz256_add - mov $t0,$a0 // restore M - mov $t1,$a1 - ldr $bi,[$ap_real] // forward load for p256_mul_mont - mov $t2,$a2 - ldp $a0,$a1,[sp,#$S] - mov $t3,$a3 - ldp $a2,$a3,[sp,#$S+16] - bl __ecp_nistz256_add // p256_mul_by_3(M, M); - - add $bp,$ap_real,#0 - add $rp,sp,#$S - bl __ecp_nistz256_mul_mont // p256_mul_mont(S, S, in_x); - - mov $t0,$acc0 - mov $t1,$acc1 - ldp $a0,$a1,[sp,#$M] // forward load for p256_sqr_mont - mov $t2,$acc2 - mov $t3,$acc3 - ldp $a2,$a3,[sp,#$M+16] - add $rp,sp,#$tmp0 - bl __ecp_nistz256_add // p256_mul_by_2(tmp0, S); - - add $rp,$rp_real,#0 - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(res_x, M); - - add $bp,sp,#$tmp0 - bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, tmp0); - - add $bp,sp,#$S - add $rp,sp,#$S - bl __ecp_nistz256_sub_morf // p256_sub(S, S, res_x); - - ldr $bi,[sp,#$M] - mov $a0,$acc0 // copy S - mov $a1,$acc1 - mov $a2,$acc2 - mov $a3,$acc3 - add $bp,sp,#$M - bl __ecp_nistz256_mul_mont // p256_mul_mont(S, S, M); - - add $bp,$rp_real,#32 - add $rp,$rp_real,#32 - bl __ecp_nistz256_sub_from // p256_sub(res_y, S, res_y); - - add sp,x29,#0 // destroy frame - ldp x19,x20,[x29,#16] - ldp x21,x22,[x29,#32] - ldp x29,x30,[sp],#80 - ret -.size GFp_nistz256_point_double,.-GFp_nistz256_point_double -___ -} - -######################################################################## -# void GFp_nistz256_point_add_affine(P256_POINT *out,const P256_POINT *in1, -# const P256_POINT_AFFINE *in2); -{ -my ($res_x,$res_y,$res_z, - $U2,$S2,$H,$R,$Hsqr,$Hcub,$Rsqr)=map(32*$_,(0..9)); -my $Z1sqr = $S2; -# above map() describes stack layout with 10 temporary -# 256-bit vectors on top. -my ($rp_real,$ap_real,$bp_real,$in1infty,$in2infty,$temp)=map("x$_",(21..26)); - -$code.=<<___; -.globl GFp_nistz256_point_add_affine -.type GFp_nistz256_point_add_affine,%function -.align 5 -GFp_nistz256_point_add_affine: - stp x29,x30,[sp,#-80]! - add x29,sp,#0 - stp x19,x20,[sp,#16] - stp x21,x22,[sp,#32] - stp x23,x24,[sp,#48] - stp x25,x26,[sp,#64] - sub sp,sp,#32*10 - - mov $rp_real,$rp - mov $ap_real,$ap - mov $bp_real,$bp - ldr $poly1,.Lpoly+8 - ldr $poly3,.Lpoly+24 - - ldp $a0,$a1,[$ap,#64] // in1_z - ldp $a2,$a3,[$ap,#64+16] - orr $t0,$a0,$a1 - orr $t2,$a2,$a3 - orr $in1infty,$t0,$t2 - cmp $in1infty,#0 - csetm $in1infty,ne // !in1infty - - ldp $acc0,$acc1,[$bp] // in2_x - ldp $acc2,$acc3,[$bp,#16] - ldp $t0,$t1,[$bp,#32] // in2_y - ldp $t2,$t3,[$bp,#48] - orr $acc0,$acc0,$acc1 - orr $acc2,$acc2,$acc3 - orr $t0,$t0,$t1 - orr $t2,$t2,$t3 - orr $acc0,$acc0,$acc2 - orr $t0,$t0,$t2 - orr $in2infty,$acc0,$t0 - cmp $in2infty,#0 - csetm $in2infty,ne // !in2infty - - add $rp,sp,#$Z1sqr - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); - - mov $a0,$acc0 - mov $a1,$acc1 - mov $a2,$acc2 - mov $a3,$acc3 - ldr $bi,[$bp_real] - add $bp,$bp_real,#0 - add $rp,sp,#$U2 - bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, Z1sqr, in2_x); - - add $bp,$ap_real,#0 - ldr $bi,[$ap_real,#64] // forward load for p256_mul_mont - ldp $a0,$a1,[sp,#$Z1sqr] - ldp $a2,$a3,[sp,#$Z1sqr+16] - add $rp,sp,#$H - bl __ecp_nistz256_sub_from // p256_sub(H, U2, in1_x); - - add $bp,$ap_real,#64 - add $rp,sp,#$S2 - bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, Z1sqr, in1_z); - - ldr $bi,[$ap_real,#64] - ldp $a0,$a1,[sp,#$H] - ldp $a2,$a3,[sp,#$H+16] - add $bp,$ap_real,#64 - add $rp,sp,#$res_z - bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, H, in1_z); - - ldr $bi,[$bp_real,#32] - ldp $a0,$a1,[sp,#$S2] - ldp $a2,$a3,[sp,#$S2+16] - add $bp,$bp_real,#32 - add $rp,sp,#$S2 - bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S2, in2_y); - - add $bp,$ap_real,#32 - ldp $a0,$a1,[sp,#$H] // forward load for p256_sqr_mont - ldp $a2,$a3,[sp,#$H+16] - add $rp,sp,#$R - bl __ecp_nistz256_sub_from // p256_sub(R, S2, in1_y); - - add $rp,sp,#$Hsqr - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Hsqr, H); - - ldp $a0,$a1,[sp,#$R] - ldp $a2,$a3,[sp,#$R+16] - add $rp,sp,#$Rsqr - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Rsqr, R); - - ldr $bi,[sp,#$H] - ldp $a0,$a1,[sp,#$Hsqr] - ldp $a2,$a3,[sp,#$Hsqr+16] - add $bp,sp,#$H - add $rp,sp,#$Hcub - bl __ecp_nistz256_mul_mont // p256_mul_mont(Hcub, Hsqr, H); - - ldr $bi,[$ap_real] - ldp $a0,$a1,[sp,#$Hsqr] - ldp $a2,$a3,[sp,#$Hsqr+16] - add $bp,$ap_real,#0 - add $rp,sp,#$U2 - bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, in1_x, Hsqr); - - mov $t0,$acc0 - mov $t1,$acc1 - mov $t2,$acc2 - mov $t3,$acc3 - add $rp,sp,#$Hsqr - bl __ecp_nistz256_add // p256_mul_by_2(Hsqr, U2); - - add $bp,sp,#$Rsqr - add $rp,sp,#$res_x - bl __ecp_nistz256_sub_morf // p256_sub(res_x, Rsqr, Hsqr); - - add $bp,sp,#$Hcub - bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, Hcub); - - add $bp,sp,#$U2 - ldr $bi,[$ap_real,#32] // forward load for p256_mul_mont - ldp $a0,$a1,[sp,#$Hcub] - ldp $a2,$a3,[sp,#$Hcub+16] - add $rp,sp,#$res_y - bl __ecp_nistz256_sub_morf // p256_sub(res_y, U2, res_x); - - add $bp,$ap_real,#32 - add $rp,sp,#$S2 - bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, in1_y, Hcub); - - ldr $bi,[sp,#$R] - ldp $a0,$a1,[sp,#$res_y] - ldp $a2,$a3,[sp,#$res_y+16] - add $bp,sp,#$R - add $rp,sp,#$res_y - bl __ecp_nistz256_mul_mont // p256_mul_mont(res_y, res_y, R); - - add $bp,sp,#$S2 - bl __ecp_nistz256_sub_from // p256_sub(res_y, res_y, S2); - - ldp $a0,$a1,[sp,#$res_x] // res - ldp $a2,$a3,[sp,#$res_x+16] - ldp $t0,$t1,[$bp_real] // in2 - ldp $t2,$t3,[$bp_real,#16] -___ -for($i=0;$i<64;$i+=32) { # conditional moves -$code.=<<___; - ldp $acc0,$acc1,[$ap_real,#$i] // in1 - cmp $in1infty,#0 // !$in1intfy, remember? - ldp $acc2,$acc3,[$ap_real,#$i+16] - csel $t0,$a0,$t0,ne - csel $t1,$a1,$t1,ne - ldp $a0,$a1,[sp,#$res_x+$i+32] // res - csel $t2,$a2,$t2,ne - csel $t3,$a3,$t3,ne - cmp $in2infty,#0 // !$in2intfy, remember? - ldp $a2,$a3,[sp,#$res_x+$i+48] - csel $acc0,$t0,$acc0,ne - csel $acc1,$t1,$acc1,ne - ldp $t0,$t1,[$bp_real,#$i+32] // in2 - csel $acc2,$t2,$acc2,ne - csel $acc3,$t3,$acc3,ne - ldp $t2,$t3,[$bp_real,#$i+48] - stp $acc0,$acc1,[$rp_real,#$i] - stp $acc2,$acc3,[$rp_real,#$i+16] -___ -$code.=<<___ if ($i == 0); - adr $bp_real,.Lone_mont-64 -___ -} -$code.=<<___; - ldp $acc0,$acc1,[$ap_real,#$i] // in1 - cmp $in1infty,#0 // !$in1intfy, remember? - ldp $acc2,$acc3,[$ap_real,#$i+16] - csel $t0,$a0,$t0,ne - csel $t1,$a1,$t1,ne - csel $t2,$a2,$t2,ne - csel $t3,$a3,$t3,ne - cmp $in2infty,#0 // !$in2intfy, remember? - csel $acc0,$t0,$acc0,ne - csel $acc1,$t1,$acc1,ne - csel $acc2,$t2,$acc2,ne - csel $acc3,$t3,$acc3,ne - stp $acc0,$acc1,[$rp_real,#$i] - stp $acc2,$acc3,[$rp_real,#$i+16] - - add sp,x29,#0 // destroy frame - ldp x19,x20,[x29,#16] - ldp x21,x22,[x29,#32] - ldp x23,x24,[x29,#48] - ldp x25,x26,[x29,#64] - ldp x29,x30,[sp],#80 - ret -.size GFp_nistz256_point_add_affine,.-GFp_nistz256_point_add_affine -___ -} } - -foreach (split("\n",$code)) { - s/\`([^\`]*)\`/eval $1/ge; - - print $_,"\n"; -} -close STDOUT or die "error closing STDOUT"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/ecp_nistz256-x86.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/ecp_nistz256-x86.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/ecp_nistz256-x86.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/ecp_nistz256-x86.pl 1970-01-01 00:00:00.000000000 +0000 @@ -1,1122 +0,0 @@ -#! /usr/bin/env perl -# Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# -# 3. All advertising materials mentioning features or use of this -# software must display the following acknowledgment: -# "This product includes software developed by the OpenSSL Project -# for use in the OpenSSL Toolkit. (http://www.openssl.org/)" -# -# 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to -# endorse or promote products derived from this software without -# prior written permission. For written permission, please contact -# openssl-core@openssl.org. -# -# 5. Products derived from this software may not be called "OpenSSL" -# nor may "OpenSSL" appear in their names without prior written -# permission of the OpenSSL Project. -# -# 6. Redistributions of any form whatsoever must retain the following -# acknowledgment: -# "This product includes software developed by the OpenSSL Project -# for use in the OpenSSL Toolkit (http://www.openssl.org/)" -# -# THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY -# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR -# ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED -# OF THE POSSIBILITY OF SUCH DAMAGE. -# ==================================================================== -# -# This product includes cryptographic software written by Eric Young -# (eay@cryptsoft.com). This product includes software written by Tim -# Hudson (tjh@cryptsoft.com). - - -# ==================================================================== -# Written by Andy Polyakov for the OpenSSL -# project. The module is, however, dual licensed under OpenSSL and -# CRYPTOGAMS licenses depending on where you obtain it. For further -# details see http://www.openssl.org/~appro/cryptogams/. -# ==================================================================== -# -# ECP_NISTZ256 module for x86/SSE2. -# -# October 2014. -# -# Original ECP_NISTZ256 submission targeting x86_64 is detailed in -# http://eprint.iacr.org/2013/816. In the process of adaptation -# original .c module was made 32-bit savvy in order to make this -# implementation possible. -# -# with/without -DECP_NISTZ256_ASM -# Pentium +66-163% -# PIII +72-172% -# P4 +65-132% -# Core2 +90-215% -# Sandy Bridge +105-265% (contemporary i[57]-* are all close to this) -# Atom +65-155% -# Opteron +54-110% -# Bulldozer +99-240% -# VIA Nano +93-290% -# -# Ranges denote minimum and maximum improvement coefficients depending -# on benchmark. Lower coefficients are for ECDSA sign, server-side -# operation. Keep in mind that +200% means 3x improvement. - -$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; -push(@INC,"${dir}","${dir}../../../perlasm"); -require "x86asm.pl"; - -$output=pop; -open STDOUT,">$output"; - -&asm_init($ARGV[0],"ecp_nistz256-x86.pl",$ARGV[$#ARGV] eq "386"); - -$sse2=0; -for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); } - -&external_label("GFp_ia32cap_P") if ($sse2); - - -######################################################################## -# Keep in mind that constants are stored least to most significant word -&static_label("ONE_mont"); -&set_label("ONE_mont"); -&data_word(1,0,0,-1,-1,-1,-2,0); - - -&function_begin_B("_ecp_nistz256_div_by_2"); - # tmp = a is odd ? a+mod : a - # - # note that because mod has special form, i.e. consists of - # 0xffffffff, 1 and 0s, we can conditionally synthesize it by - # assigning least significant bit of input to one register, - # %ebp, and its negative to another, %edx. - - &mov ("ebp",&DWP(0,"esi")); - &xor ("edx","edx"); - &mov ("ebx",&DWP(4,"esi")); - &mov ("eax","ebp"); - &and ("ebp",1); - &mov ("ecx",&DWP(8,"esi")); - &sub ("edx","ebp"); - - &add ("eax","edx"); - &adc ("ebx","edx"); - &mov (&DWP(0,"edi"),"eax"); - &adc ("ecx","edx"); - &mov (&DWP(4,"edi"),"ebx"); - &mov (&DWP(8,"edi"),"ecx"); - - &mov ("eax",&DWP(12,"esi")); - &mov ("ebx",&DWP(16,"esi")); - &adc ("eax",0); - &mov ("ecx",&DWP(20,"esi")); - &adc ("ebx",0); - &mov (&DWP(12,"edi"),"eax"); - &adc ("ecx",0); - &mov (&DWP(16,"edi"),"ebx"); - &mov (&DWP(20,"edi"),"ecx"); - - &mov ("eax",&DWP(24,"esi")); - &mov ("ebx",&DWP(28,"esi")); - &adc ("eax","ebp"); - &adc ("ebx","edx"); - &mov (&DWP(24,"edi"),"eax"); - &sbb ("esi","esi"); # broadcast carry bit - &mov (&DWP(28,"edi"),"ebx"); - - # ret = tmp >> 1 - - &mov ("eax",&DWP(0,"edi")); - &mov ("ebx",&DWP(4,"edi")); - &mov ("ecx",&DWP(8,"edi")); - &mov ("edx",&DWP(12,"edi")); - - &shr ("eax",1); - &mov ("ebp","ebx"); - &shl ("ebx",31); - &or ("eax","ebx"); - - &shr ("ebp",1); - &mov ("ebx","ecx"); - &shl ("ecx",31); - &mov (&DWP(0,"edi"),"eax"); - &or ("ebp","ecx"); - &mov ("eax",&DWP(16,"edi")); - - &shr ("ebx",1); - &mov ("ecx","edx"); - &shl ("edx",31); - &mov (&DWP(4,"edi"),"ebp"); - &or ("ebx","edx"); - &mov ("ebp",&DWP(20,"edi")); - - &shr ("ecx",1); - &mov ("edx","eax"); - &shl ("eax",31); - &mov (&DWP(8,"edi"),"ebx"); - &or ("ecx","eax"); - &mov ("ebx",&DWP(24,"edi")); - - &shr ("edx",1); - &mov ("eax","ebp"); - &shl ("ebp",31); - &mov (&DWP(12,"edi"),"ecx"); - &or ("edx","ebp"); - &mov ("ecx",&DWP(28,"edi")); - - &shr ("eax",1); - &mov ("ebp","ebx"); - &shl ("ebx",31); - &mov (&DWP(16,"edi"),"edx"); - &or ("eax","ebx"); - - &shr ("ebp",1); - &mov ("ebx","ecx"); - &shl ("ecx",31); - &mov (&DWP(20,"edi"),"eax"); - &or ("ebp","ecx"); - - &shr ("ebx",1); - &shl ("esi",31); - &mov (&DWP(24,"edi"),"ebp"); - &or ("ebx","esi"); # handle top-most carry bit - &mov (&DWP(28,"edi"),"ebx"); - - &ret (); -&function_end_B("_ecp_nistz256_div_by_2"); - -######################################################################## -# void GFp_nistz256_add(BN_ULONG edi[8],const BN_ULONG esi[8], -# const BN_ULONG ebp[8]); -&function_begin("GFp_nistz256_add"); - &mov ("esi",&wparam(1)); - &mov ("ebp",&wparam(2)); - &mov ("edi",&wparam(0)); - &call ("_ecp_nistz256_add"); -&function_end("GFp_nistz256_add"); - -&function_begin_B("_ecp_nistz256_add"); - &mov ("eax",&DWP(0,"esi")); - &mov ("ebx",&DWP(4,"esi")); - &mov ("ecx",&DWP(8,"esi")); - &add ("eax",&DWP(0,"ebp")); - &mov ("edx",&DWP(12,"esi")); - &adc ("ebx",&DWP(4,"ebp")); - &mov (&DWP(0,"edi"),"eax"); - &adc ("ecx",&DWP(8,"ebp")); - &mov (&DWP(4,"edi"),"ebx"); - &adc ("edx",&DWP(12,"ebp")); - &mov (&DWP(8,"edi"),"ecx"); - &mov (&DWP(12,"edi"),"edx"); - - &mov ("eax",&DWP(16,"esi")); - &mov ("ebx",&DWP(20,"esi")); - &mov ("ecx",&DWP(24,"esi")); - &adc ("eax",&DWP(16,"ebp")); - &mov ("edx",&DWP(28,"esi")); - &adc ("ebx",&DWP(20,"ebp")); - &mov (&DWP(16,"edi"),"eax"); - &adc ("ecx",&DWP(24,"ebp")); - &mov (&DWP(20,"edi"),"ebx"); - &mov ("esi",0); - &adc ("edx",&DWP(28,"ebp")); - &mov (&DWP(24,"edi"),"ecx"); - &adc ("esi",0); - &mov (&DWP(28,"edi"),"edx"); - - # if a+b >= modulus, subtract modulus. - # - # But since comparison implies subtraction, we subtract modulus - # to see if it borrows, and then subtract it for real if - # subtraction didn't borrow. - - &mov ("eax",&DWP(0,"edi")); - &mov ("ebx",&DWP(4,"edi")); - &mov ("ecx",&DWP(8,"edi")); - &sub ("eax",-1); - &mov ("edx",&DWP(12,"edi")); - &sbb ("ebx",-1); - &mov ("eax",&DWP(16,"edi")); - &sbb ("ecx",-1); - &mov ("ebx",&DWP(20,"edi")); - &sbb ("edx",0); - &mov ("ecx",&DWP(24,"edi")); - &sbb ("eax",0); - &mov ("edx",&DWP(28,"edi")); - &sbb ("ebx",0); - &sbb ("ecx",1); - &sbb ("edx",-1); - &sbb ("esi",0); - - # Note that because mod has special form, i.e. consists of - # 0xffffffff, 1 and 0s, we can conditionally synthesize it by - # by using borrow. - - ¬ ("esi"); - &mov ("eax",&DWP(0,"edi")); - &mov ("ebp","esi"); - &mov ("ebx",&DWP(4,"edi")); - &shr ("ebp",31); - &mov ("ecx",&DWP(8,"edi")); - &sub ("eax","esi"); - &mov ("edx",&DWP(12,"edi")); - &sbb ("ebx","esi"); - &mov (&DWP(0,"edi"),"eax"); - &sbb ("ecx","esi"); - &mov (&DWP(4,"edi"),"ebx"); - &sbb ("edx",0); - &mov (&DWP(8,"edi"),"ecx"); - &mov (&DWP(12,"edi"),"edx"); - - &mov ("eax",&DWP(16,"edi")); - &mov ("ebx",&DWP(20,"edi")); - &mov ("ecx",&DWP(24,"edi")); - &sbb ("eax",0); - &mov ("edx",&DWP(28,"edi")); - &sbb ("ebx",0); - &mov (&DWP(16,"edi"),"eax"); - &sbb ("ecx","ebp"); - &mov (&DWP(20,"edi"),"ebx"); - &sbb ("edx","esi"); - &mov (&DWP(24,"edi"),"ecx"); - &mov (&DWP(28,"edi"),"edx"); - - &ret (); -&function_end_B("_ecp_nistz256_add"); - -&function_begin_B("_ecp_nistz256_sub"); - &mov ("eax",&DWP(0,"esi")); - &mov ("ebx",&DWP(4,"esi")); - &mov ("ecx",&DWP(8,"esi")); - &sub ("eax",&DWP(0,"ebp")); - &mov ("edx",&DWP(12,"esi")); - &sbb ("ebx",&DWP(4,"ebp")); - &mov (&DWP(0,"edi"),"eax"); - &sbb ("ecx",&DWP(8,"ebp")); - &mov (&DWP(4,"edi"),"ebx"); - &sbb ("edx",&DWP(12,"ebp")); - &mov (&DWP(8,"edi"),"ecx"); - &mov (&DWP(12,"edi"),"edx"); - - &mov ("eax",&DWP(16,"esi")); - &mov ("ebx",&DWP(20,"esi")); - &mov ("ecx",&DWP(24,"esi")); - &sbb ("eax",&DWP(16,"ebp")); - &mov ("edx",&DWP(28,"esi")); - &sbb ("ebx",&DWP(20,"ebp")); - &sbb ("ecx",&DWP(24,"ebp")); - &mov (&DWP(16,"edi"),"eax"); - &sbb ("edx",&DWP(28,"ebp")); - &mov (&DWP(20,"edi"),"ebx"); - &sbb ("esi","esi"); # broadcast borrow bit - &mov (&DWP(24,"edi"),"ecx"); - &mov (&DWP(28,"edi"),"edx"); - - # if a-b borrows, add modulus. - # - # Note that because mod has special form, i.e. consists of - # 0xffffffff, 1 and 0s, we can conditionally synthesize it by - # assigning borrow bit to one register, %ebp, and its negative - # to another, %esi. But we started by calculating %esi... - - &mov ("eax",&DWP(0,"edi")); - &mov ("ebp","esi"); - &mov ("ebx",&DWP(4,"edi")); - &shr ("ebp",31); - &mov ("ecx",&DWP(8,"edi")); - &add ("eax","esi"); - &mov ("edx",&DWP(12,"edi")); - &adc ("ebx","esi"); - &mov (&DWP(0,"edi"),"eax"); - &adc ("ecx","esi"); - &mov (&DWP(4,"edi"),"ebx"); - &adc ("edx",0); - &mov (&DWP(8,"edi"),"ecx"); - &mov (&DWP(12,"edi"),"edx"); - - &mov ("eax",&DWP(16,"edi")); - &mov ("ebx",&DWP(20,"edi")); - &mov ("ecx",&DWP(24,"edi")); - &adc ("eax",0); - &mov ("edx",&DWP(28,"edi")); - &adc ("ebx",0); - &mov (&DWP(16,"edi"),"eax"); - &adc ("ecx","ebp"); - &mov (&DWP(20,"edi"),"ebx"); - &adc ("edx","esi"); - &mov (&DWP(24,"edi"),"ecx"); - &mov (&DWP(28,"edi"),"edx"); - - &ret (); -&function_end_B("_ecp_nistz256_sub"); - -######################################################################## -# void GFp_nistz256_neg(BN_ULONG edi[8],const BN_ULONG esi[8]); -&function_begin("GFp_nistz256_neg"); - &mov ("ebp",&wparam(1)); - &mov ("edi",&wparam(0)); - - &xor ("eax","eax"); - &stack_push(8); - &mov (&DWP(0,"esp"),"eax"); - &mov ("esi","esp"); - &mov (&DWP(4,"esp"),"eax"); - &mov (&DWP(8,"esp"),"eax"); - &mov (&DWP(12,"esp"),"eax"); - &mov (&DWP(16,"esp"),"eax"); - &mov (&DWP(20,"esp"),"eax"); - &mov (&DWP(24,"esp"),"eax"); - &mov (&DWP(28,"esp"),"eax"); - - &call ("_ecp_nistz256_sub"); - - &stack_pop(8); -&function_end("GFp_nistz256_neg"); - -&function_begin_B("_picup_eax"); - &mov ("eax",&DWP(0,"esp")); - &ret (); -&function_end_B("_picup_eax"); - -######################################################################## -# void GFp_nistz256_mul_mont(BN_ULONG edi[8],const BN_ULONG esi[8], -# const BN_ULONG ebp[8]); -&function_begin("GFp_nistz256_mul_mont"); - &mov ("esi",&wparam(1)); - &mov ("ebp",&wparam(2)); - if ($sse2) { - &call ("_picup_eax"); - &set_label("pic"); - &picmeup("eax","GFp_ia32cap_P","eax",&label("pic")); - &mov ("eax",&DWP(0,"eax")); } - &mov ("edi",&wparam(0)); - &call ("_ecp_nistz256_mul_mont"); -&function_end("GFp_nistz256_mul_mont"); - -&function_begin_B("_ecp_nistz256_mul_mont"); - if ($sse2) { - # We always use SSE2 - - ######################################## - # SSE2 code path featuring 32x16-bit - # multiplications is ~2x faster than - # IALU counterpart (except on Atom)... - ######################################## - # stack layout: - # +------------------------------------+< %esp - # | 7 16-byte temporary XMM words, | - # | "sliding" toward lower address | - # . . - # +------------------------------------+ - # | unused XMM word | - # +------------------------------------+< +128,%ebx - # | 8 16-byte XMM words holding copies | - # | of a[i]<<64|a[i] | - # . . - # . . - # +------------------------------------+< +256 - &mov ("edx","esp"); - &sub ("esp",0x100); - - &movd ("xmm7",&DWP(0,"ebp")); # b[0] -> 0000.00xy - &lea ("ebp",&DWP(4,"ebp")); - &pcmpeqd("xmm6","xmm6"); - &psrlq ("xmm6",48); # compose 0xffff<<64|0xffff - - &pshuflw("xmm7","xmm7",0b11011100); # 0000.00xy -> 0000.0x0y - &and ("esp",-64); - &pshufd ("xmm7","xmm7",0b11011100); # 0000.0x0y -> 000x.000y - &lea ("ebx",&DWP(0x80,"esp")); - - &movd ("xmm0",&DWP(4*0,"esi")); # a[0] -> 0000.00xy - &pshufd ("xmm0","xmm0",0b11001100); # 0000.00xy -> 00xy.00xy - &movd ("xmm1",&DWP(4*1,"esi")); # a[1] -> ... - &movdqa (&QWP(0x00,"ebx"),"xmm0"); # offload converted a[0] - &pmuludq("xmm0","xmm7"); # a[0]*b[0] - - &movd ("xmm2",&DWP(4*2,"esi")); - &pshufd ("xmm1","xmm1",0b11001100); - &movdqa (&QWP(0x10,"ebx"),"xmm1"); - &pmuludq("xmm1","xmm7"); # a[1]*b[0] - - &movq ("xmm4","xmm0"); # clear upper 64 bits - &pslldq("xmm4",6); - &paddq ("xmm4","xmm0"); - &movdqa("xmm5","xmm4"); - &psrldq("xmm4",10); # upper 32 bits of a[0]*b[0] - &pand ("xmm5","xmm6"); # lower 32 bits of a[0]*b[0] - - # Upper half of a[0]*b[i] is carried into next multiplication - # iteration, while lower one "participates" in actual reduction. - # Normally latter is done by accumulating result of multiplication - # of modulus by "magic" digit, but thanks to special form of modulus - # and "magic" digit it can be performed only with additions and - # subtractions (see note in IALU section below). Note that we are - # not bothered with carry bits, they are accumulated in "flatten" - # phase after all multiplications and reductions. - - &movd ("xmm3",&DWP(4*3,"esi")); - &pshufd ("xmm2","xmm2",0b11001100); - &movdqa (&QWP(0x20,"ebx"),"xmm2"); - &pmuludq("xmm2","xmm7"); # a[2]*b[0] - &paddq ("xmm1","xmm4"); # a[1]*b[0]+hw(a[0]*b[0]), carry - &movdqa (&QWP(0x00,"esp"),"xmm1"); # t[0] - - &movd ("xmm0",&DWP(4*4,"esi")); - &pshufd ("xmm3","xmm3",0b11001100); - &movdqa (&QWP(0x30,"ebx"),"xmm3"); - &pmuludq("xmm3","xmm7"); # a[3]*b[0] - &movdqa (&QWP(0x10,"esp"),"xmm2"); - - &movd ("xmm1",&DWP(4*5,"esi")); - &pshufd ("xmm0","xmm0",0b11001100); - &movdqa (&QWP(0x40,"ebx"),"xmm0"); - &pmuludq("xmm0","xmm7"); # a[4]*b[0] - &paddq ("xmm3","xmm5"); # a[3]*b[0]+lw(a[0]*b[0]), reduction step - &movdqa (&QWP(0x20,"esp"),"xmm3"); - - &movd ("xmm2",&DWP(4*6,"esi")); - &pshufd ("xmm1","xmm1",0b11001100); - &movdqa (&QWP(0x50,"ebx"),"xmm1"); - &pmuludq("xmm1","xmm7"); # a[5]*b[0] - &movdqa (&QWP(0x30,"esp"),"xmm0"); - &pshufd("xmm4","xmm5",0b10110001); # xmm4 = xmm5<<32, reduction step - - &movd ("xmm3",&DWP(4*7,"esi")); - &pshufd ("xmm2","xmm2",0b11001100); - &movdqa (&QWP(0x60,"ebx"),"xmm2"); - &pmuludq("xmm2","xmm7"); # a[6]*b[0] - &movdqa (&QWP(0x40,"esp"),"xmm1"); - &psubq ("xmm4","xmm5"); # xmm4 = xmm5*0xffffffff, reduction step - - &movd ("xmm0",&DWP(0,"ebp")); # b[1] -> 0000.00xy - &pshufd ("xmm3","xmm3",0b11001100); - &movdqa (&QWP(0x70,"ebx"),"xmm3"); - &pmuludq("xmm3","xmm7"); # a[7]*b[0] - - &pshuflw("xmm7","xmm0",0b11011100); # 0000.00xy -> 0000.0x0y - &movdqa ("xmm0",&QWP(0x00,"ebx")); # pre-load converted a[0] - &pshufd ("xmm7","xmm7",0b11011100); # 0000.0x0y -> 000x.000y - - &mov ("ecx",6); - &lea ("ebp",&DWP(4,"ebp")); - &jmp (&label("madd_sse2")); - -&set_label("madd_sse2",16); - &paddq ("xmm2","xmm5"); # a[6]*b[i-1]+lw(a[0]*b[i-1]), reduction step [modulo-scheduled] - &paddq ("xmm3","xmm4"); # a[7]*b[i-1]+lw(a[0]*b[i-1])*0xffffffff, reduction step [modulo-scheduled] - &movdqa ("xmm1",&QWP(0x10,"ebx")); - &pmuludq("xmm0","xmm7"); # a[0]*b[i] - &movdqa(&QWP(0x50,"esp"),"xmm2"); - - &movdqa ("xmm2",&QWP(0x20,"ebx")); - &pmuludq("xmm1","xmm7"); # a[1]*b[i] - &movdqa(&QWP(0x60,"esp"),"xmm3"); - &paddq ("xmm0",&QWP(0x00,"esp")); - - &movdqa ("xmm3",&QWP(0x30,"ebx")); - &pmuludq("xmm2","xmm7"); # a[2]*b[i] - &movq ("xmm4","xmm0"); # clear upper 64 bits - &pslldq("xmm4",6); - &paddq ("xmm1",&QWP(0x10,"esp")); - &paddq ("xmm4","xmm0"); - &movdqa("xmm5","xmm4"); - &psrldq("xmm4",10); # upper 33 bits of a[0]*b[i]+t[0] - - &movdqa ("xmm0",&QWP(0x40,"ebx")); - &pmuludq("xmm3","xmm7"); # a[3]*b[i] - &paddq ("xmm1","xmm4"); # a[1]*b[i]+hw(a[0]*b[i]), carry - &paddq ("xmm2",&QWP(0x20,"esp")); - &movdqa (&QWP(0x00,"esp"),"xmm1"); - - &movdqa ("xmm1",&QWP(0x50,"ebx")); - &pmuludq("xmm0","xmm7"); # a[4]*b[i] - &paddq ("xmm3",&QWP(0x30,"esp")); - &movdqa (&QWP(0x10,"esp"),"xmm2"); - &pand ("xmm5","xmm6"); # lower 32 bits of a[0]*b[i] - - &movdqa ("xmm2",&QWP(0x60,"ebx")); - &pmuludq("xmm1","xmm7"); # a[5]*b[i] - &paddq ("xmm3","xmm5"); # a[3]*b[i]+lw(a[0]*b[i]), reduction step - &paddq ("xmm0",&QWP(0x40,"esp")); - &movdqa (&QWP(0x20,"esp"),"xmm3"); - &pshufd("xmm4","xmm5",0b10110001); # xmm4 = xmm5<<32, reduction step - - &movdqa ("xmm3","xmm7"); - &pmuludq("xmm2","xmm7"); # a[6]*b[i] - &movd ("xmm7",&DWP(0,"ebp")); # b[i++] -> 0000.00xy - &lea ("ebp",&DWP(4,"ebp")); - &paddq ("xmm1",&QWP(0x50,"esp")); - &psubq ("xmm4","xmm5"); # xmm4 = xmm5*0xffffffff, reduction step - &movdqa (&QWP(0x30,"esp"),"xmm0"); - &pshuflw("xmm7","xmm7",0b11011100); # 0000.00xy -> 0000.0x0y - - &pmuludq("xmm3",&QWP(0x70,"ebx")); # a[7]*b[i] - &pshufd("xmm7","xmm7",0b11011100); # 0000.0x0y -> 000x.000y - &movdqa("xmm0",&QWP(0x00,"ebx")); # pre-load converted a[0] - &movdqa (&QWP(0x40,"esp"),"xmm1"); - &paddq ("xmm2",&QWP(0x60,"esp")); - - &dec ("ecx"); - &jnz (&label("madd_sse2")); - - &paddq ("xmm2","xmm5"); # a[6]*b[6]+lw(a[0]*b[6]), reduction step [modulo-scheduled] - &paddq ("xmm3","xmm4"); # a[7]*b[6]+lw(a[0]*b[6])*0xffffffff, reduction step [modulo-scheduled] - &movdqa ("xmm1",&QWP(0x10,"ebx")); - &pmuludq("xmm0","xmm7"); # a[0]*b[7] - &movdqa(&QWP(0x50,"esp"),"xmm2"); - - &movdqa ("xmm2",&QWP(0x20,"ebx")); - &pmuludq("xmm1","xmm7"); # a[1]*b[7] - &movdqa(&QWP(0x60,"esp"),"xmm3"); - &paddq ("xmm0",&QWP(0x00,"esp")); - - &movdqa ("xmm3",&QWP(0x30,"ebx")); - &pmuludq("xmm2","xmm7"); # a[2]*b[7] - &movq ("xmm4","xmm0"); # clear upper 64 bits - &pslldq("xmm4",6); - &paddq ("xmm1",&QWP(0x10,"esp")); - &paddq ("xmm4","xmm0"); - &movdqa("xmm5","xmm4"); - &psrldq("xmm4",10); # upper 33 bits of a[0]*b[i]+t[0] - - &movdqa ("xmm0",&QWP(0x40,"ebx")); - &pmuludq("xmm3","xmm7"); # a[3]*b[7] - &paddq ("xmm1","xmm4"); # a[1]*b[7]+hw(a[0]*b[7]), carry - &paddq ("xmm2",&QWP(0x20,"esp")); - &movdqa (&QWP(0x00,"esp"),"xmm1"); - - &movdqa ("xmm1",&QWP(0x50,"ebx")); - &pmuludq("xmm0","xmm7"); # a[4]*b[7] - &paddq ("xmm3",&QWP(0x30,"esp")); - &movdqa (&QWP(0x10,"esp"),"xmm2"); - &pand ("xmm5","xmm6"); # lower 32 bits of a[0]*b[i] - - &movdqa ("xmm2",&QWP(0x60,"ebx")); - &pmuludq("xmm1","xmm7"); # a[5]*b[7] - &paddq ("xmm3","xmm5"); # reduction step - &paddq ("xmm0",&QWP(0x40,"esp")); - &movdqa (&QWP(0x20,"esp"),"xmm3"); - &pshufd("xmm4","xmm5",0b10110001); # xmm4 = xmm5<<32, reduction step - - &movdqa ("xmm3",&QWP(0x70,"ebx")); - &pmuludq("xmm2","xmm7"); # a[6]*b[7] - &paddq ("xmm1",&QWP(0x50,"esp")); - &psubq ("xmm4","xmm5"); # xmm4 = xmm5*0xffffffff, reduction step - &movdqa (&QWP(0x30,"esp"),"xmm0"); - - &pmuludq("xmm3","xmm7"); # a[7]*b[7] - &pcmpeqd("xmm7","xmm7"); - &movdqa ("xmm0",&QWP(0x00,"esp")); - &pslldq ("xmm7",8); - &movdqa (&QWP(0x40,"esp"),"xmm1"); - &paddq ("xmm2",&QWP(0x60,"esp")); - - &paddq ("xmm2","xmm5"); # a[6]*b[7]+lw(a[0]*b[7]), reduction step - &paddq ("xmm3","xmm4"); # a[6]*b[7]+lw(a[0]*b[7])*0xffffffff, reduction step - &movdqa(&QWP(0x50,"esp"),"xmm2"); - &movdqa(&QWP(0x60,"esp"),"xmm3"); - - &movdqa ("xmm1",&QWP(0x10,"esp")); - &movdqa ("xmm2",&QWP(0x20,"esp")); - &movdqa ("xmm3",&QWP(0x30,"esp")); - - &movq ("xmm4","xmm0"); # "flatten" - &pand ("xmm0","xmm7"); - &xor ("ebp","ebp"); - &pslldq ("xmm4",6); - &movq ("xmm5","xmm1"); - &paddq ("xmm0","xmm4"); - &pand ("xmm1","xmm7"); - &psrldq ("xmm0",6); - &movd ("eax","xmm0"); - &psrldq ("xmm0",4); - - &paddq ("xmm5","xmm0"); - &movdqa ("xmm0",&QWP(0x40,"esp")); - &sub ("eax",-1); # start subtracting modulus, - # this is used to determine - # if result is larger/smaller - # than modulus (see below) - &pslldq ("xmm5",6); - &movq ("xmm4","xmm2"); - &paddq ("xmm1","xmm5"); - &pand ("xmm2","xmm7"); - &psrldq ("xmm1",6); - &mov (&DWP(4*0,"edi"),"eax"); - &movd ("eax","xmm1"); - &psrldq ("xmm1",4); - - &paddq ("xmm4","xmm1"); - &movdqa ("xmm1",&QWP(0x50,"esp")); - &sbb ("eax",-1); - &pslldq ("xmm4",6); - &movq ("xmm5","xmm3"); - &paddq ("xmm2","xmm4"); - &pand ("xmm3","xmm7"); - &psrldq ("xmm2",6); - &mov (&DWP(4*1,"edi"),"eax"); - &movd ("eax","xmm2"); - &psrldq ("xmm2",4); - - &paddq ("xmm5","xmm2"); - &movdqa ("xmm2",&QWP(0x60,"esp")); - &sbb ("eax",-1); - &pslldq ("xmm5",6); - &movq ("xmm4","xmm0"); - &paddq ("xmm3","xmm5"); - &pand ("xmm0","xmm7"); - &psrldq ("xmm3",6); - &mov (&DWP(4*2,"edi"),"eax"); - &movd ("eax","xmm3"); - &psrldq ("xmm3",4); - - &paddq ("xmm4","xmm3"); - &sbb ("eax",0); - &pslldq ("xmm4",6); - &movq ("xmm5","xmm1"); - &paddq ("xmm0","xmm4"); - &pand ("xmm1","xmm7"); - &psrldq ("xmm0",6); - &mov (&DWP(4*3,"edi"),"eax"); - &movd ("eax","xmm0"); - &psrldq ("xmm0",4); - - &paddq ("xmm5","xmm0"); - &sbb ("eax",0); - &pslldq ("xmm5",6); - &movq ("xmm4","xmm2"); - &paddq ("xmm1","xmm5"); - &pand ("xmm2","xmm7"); - &psrldq ("xmm1",6); - &movd ("ebx","xmm1"); - &psrldq ("xmm1",4); - &mov ("esp","edx"); - - &paddq ("xmm4","xmm1"); - &pslldq ("xmm4",6); - &paddq ("xmm2","xmm4"); - &psrldq ("xmm2",6); - &movd ("ecx","xmm2"); - &psrldq ("xmm2",4); - &sbb ("ebx",0); - &movd ("edx","xmm2"); - &pextrw ("esi","xmm2",2); # top-most overflow bit - &sbb ("ecx",1); - &sbb ("edx",-1); - &sbb ("esi",0); # borrow from subtraction - - # Final step is "if result > mod, subtract mod", and at this point - # we have result - mod written to output buffer, as well as borrow - # bit from this subtraction, and if borrow bit is set, we add - # modulus back. - # - # Note that because mod has special form, i.e. consists of - # 0xffffffff, 1 and 0s, we can conditionally synthesize it by - # assigning borrow bit to one register, %ebp, and its negative - # to another, %esi. But we started by calculating %esi... - - &sub ("ebp","esi"); - &add (&DWP(4*0,"edi"),"esi"); # add modulus or zero - &adc (&DWP(4*1,"edi"),"esi"); - &adc (&DWP(4*2,"edi"),"esi"); - &adc (&DWP(4*3,"edi"),0); - &adc ("eax",0); - &adc ("ebx",0); - &mov (&DWP(4*4,"edi"),"eax"); - &adc ("ecx","ebp"); - &mov (&DWP(4*5,"edi"),"ebx"); - &adc ("edx","esi"); - &mov (&DWP(4*6,"edi"),"ecx"); - &mov (&DWP(4*7,"edi"),"edx"); - - &ret (); - -} # Non-SSE2 code removed. - -&function_end_B("_ecp_nistz256_mul_mont"); - -######################################################################## -# following subroutines are "literal" implementation of those found in -# ecp_nistz256.c -# -######################################################################## -# void GFp_nistz256_point_double(P256_POINT *out,const P256_POINT *inp); -# -&static_label("point_double_shortcut"); -&function_begin("GFp_nistz256_point_double"); -{ my ($S,$M,$Zsqr,$in_x,$tmp0)=map(32*$_,(0..4)); - - &mov ("esi",&wparam(1)); - - # above map() describes stack layout with 5 temporary - # 256-bit vectors on top, then we take extra word for - # GFp_ia32cap_P copy. - &stack_push(8*5+1); - if ($sse2) { - &call ("_picup_eax"); - &set_label("pic"); - &picmeup("edx","GFp_ia32cap_P","eax",&label("pic")); - &mov ("ebp",&DWP(0,"edx")); } - -&set_label("point_double_shortcut"); - &mov ("eax",&DWP(0,"esi")); # copy in_x - &mov ("ebx",&DWP(4,"esi")); - &mov ("ecx",&DWP(8,"esi")); - &mov ("edx",&DWP(12,"esi")); - &mov (&DWP($in_x+0,"esp"),"eax"); - &mov (&DWP($in_x+4,"esp"),"ebx"); - &mov (&DWP($in_x+8,"esp"),"ecx"); - &mov (&DWP($in_x+12,"esp"),"edx"); - &mov ("eax",&DWP(16,"esi")); - &mov ("ebx",&DWP(20,"esi")); - &mov ("ecx",&DWP(24,"esi")); - &mov ("edx",&DWP(28,"esi")); - &mov (&DWP($in_x+16,"esp"),"eax"); - &mov (&DWP($in_x+20,"esp"),"ebx"); - &mov (&DWP($in_x+24,"esp"),"ecx"); - &mov (&DWP($in_x+28,"esp"),"edx"); - &mov (&DWP(32*5,"esp"),"ebp"); # GFp_ia32cap_P copy - - &lea ("ebp",&DWP(32,"esi")); - &lea ("esi",&DWP(32,"esi")); - &lea ("edi",&DWP($S,"esp")); - &call ("_ecp_nistz256_add"); # p256_mul_by_2(S, in_y); - - &mov ("eax",&DWP(32*5,"esp")); # GFp_ia32cap_P copy - &mov ("esi",64); - &add ("esi",&wparam(1)); - &lea ("edi",&DWP($Zsqr,"esp")); - &mov ("ebp","esi"); - &call ("_ecp_nistz256_mul_mont"); # p256_sqr_mont(Zsqr, in_z); - - &mov ("eax",&DWP(32*5,"esp")); # GFp_ia32cap_P copy - &lea ("esi",&DWP($S,"esp")); - &lea ("ebp",&DWP($S,"esp")); - &lea ("edi",&DWP($S,"esp")); - &call ("_ecp_nistz256_mul_mont"); # p256_sqr_mont(S, S); - - &mov ("eax",&DWP(32*5,"esp")); # GFp_ia32cap_P copy - &mov ("ebp",&wparam(1)); - &lea ("esi",&DWP(32,"ebp")); - &lea ("ebp",&DWP(64,"ebp")); - &lea ("edi",&DWP($tmp0,"esp")); - &call ("_ecp_nistz256_mul_mont"); # p256_mul_mont(tmp0, in_z, in_y); - - &lea ("esi",&DWP($in_x,"esp")); - &lea ("ebp",&DWP($Zsqr,"esp")); - &lea ("edi",&DWP($M,"esp")); - &call ("_ecp_nistz256_add"); # p256_add(M, in_x, Zsqr); - - &mov ("edi",64); - &lea ("esi",&DWP($tmp0,"esp")); - &lea ("ebp",&DWP($tmp0,"esp")); - &add ("edi",&wparam(0)); - &call ("_ecp_nistz256_add"); # p256_mul_by_2(res_z, tmp0); - - &lea ("esi",&DWP($in_x,"esp")); - &lea ("ebp",&DWP($Zsqr,"esp")); - &lea ("edi",&DWP($Zsqr,"esp")); - &call ("_ecp_nistz256_sub"); # p256_sub(Zsqr, in_x, Zsqr); - - &mov ("eax",&DWP(32*5,"esp")); # GFp_ia32cap_P copy - &lea ("esi",&DWP($S,"esp")); - &lea ("ebp",&DWP($S,"esp")); - &lea ("edi",&DWP($tmp0,"esp")); - &call ("_ecp_nistz256_mul_mont"); # p256_sqr_mont(tmp0, S); - - &mov ("eax",&DWP(32*5,"esp")); # GFp_ia32cap_P copy - &lea ("esi",&DWP($M,"esp")); - &lea ("ebp",&DWP($Zsqr,"esp")); - &lea ("edi",&DWP($M,"esp")); - &call ("_ecp_nistz256_mul_mont"); # p256_mul_mont(M, M, Zsqr); - - &mov ("edi",32); - &lea ("esi",&DWP($tmp0,"esp")); - &add ("edi",&wparam(0)); - &call ("_ecp_nistz256_div_by_2"); # p256_div_by_2(res_y, tmp0); - - &lea ("esi",&DWP($M,"esp")); - &lea ("ebp",&DWP($M,"esp")); - &lea ("edi",&DWP($tmp0,"esp")); - &call ("_ecp_nistz256_add"); # 1/2 p256_mul_by_3(M, M); - - &mov ("eax",&DWP(32*5,"esp")); # GFp_ia32cap_P copy - &lea ("esi",&DWP($in_x,"esp")); - &lea ("ebp",&DWP($S,"esp")); - &lea ("edi",&DWP($S,"esp")); - &call ("_ecp_nistz256_mul_mont"); # p256_mul_mont(S, S, in_x); - - &lea ("esi",&DWP($tmp0,"esp")); - &lea ("ebp",&DWP($M,"esp")); - &lea ("edi",&DWP($M,"esp")); - &call ("_ecp_nistz256_add"); # 2/2 p256_mul_by_3(M, M); - - &lea ("esi",&DWP($S,"esp")); - &lea ("ebp",&DWP($S,"esp")); - &lea ("edi",&DWP($tmp0,"esp")); - &call ("_ecp_nistz256_add"); # p256_mul_by_2(tmp0, S); - - &mov ("eax",&DWP(32*5,"esp")); # GFp_ia32cap_P copy - &lea ("esi",&DWP($M,"esp")); - &lea ("ebp",&DWP($M,"esp")); - &mov ("edi",&wparam(0)); - &call ("_ecp_nistz256_mul_mont"); # p256_sqr_mont(res_x, M); - - &mov ("esi","edi"); # %edi is still res_x here - &lea ("ebp",&DWP($tmp0,"esp")); - &call ("_ecp_nistz256_sub"); # p256_sub(res_x, res_x, tmp0); - - &lea ("esi",&DWP($S,"esp")); - &mov ("ebp","edi"); # %edi is still res_x - &lea ("edi",&DWP($S,"esp")); - &call ("_ecp_nistz256_sub"); # p256_sub(S, S, res_x); - - &mov ("eax",&DWP(32*5,"esp")); # GFp_ia32cap_P copy - &mov ("esi","edi"); # %edi is still &S - &lea ("ebp",&DWP($M,"esp")); - &call ("_ecp_nistz256_mul_mont"); # p256_mul_mont(S, S, M); - - &mov ("ebp",32); - &lea ("esi",&DWP($S,"esp")); - &add ("ebp",&wparam(0)); - &mov ("edi","ebp"); - &call ("_ecp_nistz256_sub"); # p256_sub(res_y, S, res_y); - - &stack_pop(8*5+1); -} &function_end("GFp_nistz256_point_double"); - -######################################################################## -# void GFp_nistz256_point_add_affine(P256_POINT *out, -# const P256_POINT *in1, -# const P256_POINT_AFFINE *in2); -&function_begin("GFp_nistz256_point_add_affine"); -{ - my ($res_x,$res_y,$res_z, - $in1_x,$in1_y,$in1_z, - $in2_x,$in2_y, - $U2,$S2,$H,$R,$Hsqr,$Hcub,$Rsqr)=map(32*$_,(0..14)); - my $Z1sqr = $S2; - my @ONE_mont=(1,0,0,-1,-1,-1,-2,0); - - &mov ("esi",&wparam(1)); - - # above map() describes stack layout with 15 temporary - # 256-bit vectors on top, then we take extra words for - # !in1infty, !in2infty, and GFp_ia32cap_P copy. - &stack_push(8*15+3); - if ($sse2) { - &call ("_picup_eax"); - &set_label("pic"); - &picmeup("edx","GFp_ia32cap_P","eax",&label("pic")); - &mov ("ebp",&DWP(0,"edx")); } - - &lea ("edi",&DWP($in1_x,"esp")); - for($i=0;$i<96;$i+=16) { - &mov ("eax",&DWP($i+0,"esi")); # copy in1 - &mov ("ebx",&DWP($i+4,"esi")); - &mov ("ecx",&DWP($i+8,"esi")); - &mov ("edx",&DWP($i+12,"esi")); - &mov (&DWP($i+0,"edi"),"eax"); - &mov (&DWP(32*15+8,"esp"),"ebp") if ($i==0); - &mov ("ebp","eax") if ($i==64); - &or ("ebp","eax") if ($i>64); - &mov (&DWP($i+4,"edi"),"ebx"); - &or ("ebp","ebx") if ($i>=64); - &mov (&DWP($i+8,"edi"),"ecx"); - &or ("ebp","ecx") if ($i>=64); - &mov (&DWP($i+12,"edi"),"edx"); - &or ("ebp","edx") if ($i>=64); - } - &xor ("eax","eax"); - &mov ("esi",&wparam(2)); - &sub ("eax","ebp"); - &or ("ebp","eax"); - &sar ("ebp",31); - &mov (&DWP(32*15+0,"esp"),"ebp"); # !in1infty - - &lea ("edi",&DWP($in2_x,"esp")); - for($i=0;$i<64;$i+=16) { - &mov ("eax",&DWP($i+0,"esi")); # copy in2 - &mov ("ebx",&DWP($i+4,"esi")); - &mov ("ecx",&DWP($i+8,"esi")); - &mov ("edx",&DWP($i+12,"esi")); - &mov (&DWP($i+0,"edi"),"eax"); - &mov ("ebp","eax") if ($i==0); - &or ("ebp","eax") if ($i!=0); - &mov (&DWP($i+4,"edi"),"ebx"); - &or ("ebp","ebx"); - &mov (&DWP($i+8,"edi"),"ecx"); - &or ("ebp","ecx"); - &mov (&DWP($i+12,"edi"),"edx"); - &or ("ebp","edx"); - } - &xor ("ebx","ebx"); - &mov ("eax",&DWP(32*15+8,"esp")); # GFp_ia32cap_P copy - &sub ("ebx","ebp"); - &lea ("esi",&DWP($in1_z,"esp")); - &or ("ebx","ebp"); - &lea ("ebp",&DWP($in1_z,"esp")); - &sar ("ebx",31); - &lea ("edi",&DWP($Z1sqr,"esp")); - &mov (&DWP(32*15+4,"esp"),"ebx"); # !in2infty - - &call ("_ecp_nistz256_mul_mont"); # p256_sqr_mont(Z1sqr, in1_z); - - &mov ("eax",&DWP(32*15+8,"esp")); # GFp_ia32cap_P copy - &lea ("esi",&DWP($in2_x,"esp")); - &mov ("ebp","edi"); # %esi is stull &Z1sqr - &lea ("edi",&DWP($U2,"esp")); - &call ("_ecp_nistz256_mul_mont"); # p256_mul_mont(U2, Z1sqr, in2_x); - - &mov ("eax",&DWP(32*15+8,"esp")); # GFp_ia32cap_P copy - &lea ("esi",&DWP($in1_z,"esp")); - &lea ("ebp",&DWP($Z1sqr,"esp")); - &lea ("edi",&DWP($S2,"esp")); - &call ("_ecp_nistz256_mul_mont"); # p256_mul_mont(S2, Z1sqr, in1_z); - - &lea ("esi",&DWP($U2,"esp")); - &lea ("ebp",&DWP($in1_x,"esp")); - &lea ("edi",&DWP($H,"esp")); - &call ("_ecp_nistz256_sub"); # p256_sub(H, U2, in1_x); - - &mov ("eax",&DWP(32*15+8,"esp")); # GFp_ia32cap_P copy - &lea ("esi",&DWP($in2_y,"esp")); - &lea ("ebp",&DWP($S2,"esp")); - &lea ("edi",&DWP($S2,"esp")); - &call ("_ecp_nistz256_mul_mont"); # p256_mul_mont(S2, S2, in2_y); - - &mov ("eax",&DWP(32*15+8,"esp")); # GFp_ia32cap_P copy - &lea ("esi",&DWP($in1_z,"esp")); - &lea ("ebp",&DWP($H,"esp")); - &lea ("edi",&DWP($res_z,"esp")); - &call ("_ecp_nistz256_mul_mont"); # p256_mul_mont(res_z, H, in1_z); - - &lea ("esi",&DWP($S2,"esp")); - &lea ("ebp",&DWP($in1_y,"esp")); - &lea ("edi",&DWP($R,"esp")); - &call ("_ecp_nistz256_sub"); # p256_sub(R, S2, in1_y); - - &mov ("eax",&DWP(32*15+8,"esp")); # GFp_ia32cap_P copy - &lea ("esi",&DWP($H,"esp")); - &lea ("ebp",&DWP($H,"esp")); - &lea ("edi",&DWP($Hsqr,"esp")); - &call ("_ecp_nistz256_mul_mont"); # p256_sqr_mont(Hsqr, H); - - &mov ("eax",&DWP(32*15+8,"esp")); # GFp_ia32cap_P copy - &lea ("esi",&DWP($R,"esp")); - &lea ("ebp",&DWP($R,"esp")); - &lea ("edi",&DWP($Rsqr,"esp")); - &call ("_ecp_nistz256_mul_mont"); # p256_sqr_mont(Rsqr, R); - - &mov ("eax",&DWP(32*15+8,"esp")); # GFp_ia32cap_P copy - &lea ("esi",&DWP($in1_x,"esp")); - &lea ("ebp",&DWP($Hsqr,"esp")); - &lea ("edi",&DWP($U2,"esp")); - &call ("_ecp_nistz256_mul_mont"); # p256_mul_mont(U2, in1_x, Hsqr); - - &mov ("eax",&DWP(32*15+8,"esp")); # GFp_ia32cap_P copy - &lea ("esi",&DWP($H,"esp")); - &lea ("ebp",&DWP($Hsqr,"esp")); - &lea ("edi",&DWP($Hcub,"esp")); - &call ("_ecp_nistz256_mul_mont"); # p256_mul_mont(Hcub, Hsqr, H); - - &lea ("esi",&DWP($U2,"esp")); - &lea ("ebp",&DWP($U2,"esp")); - &lea ("edi",&DWP($Hsqr,"esp")); - &call ("_ecp_nistz256_add"); # p256_mul_by_2(Hsqr, U2); - - &lea ("esi",&DWP($Rsqr,"esp")); - &lea ("ebp",&DWP($Hsqr,"esp")); - &lea ("edi",&DWP($res_x,"esp")); - &call ("_ecp_nistz256_sub"); # p256_sub(res_x, Rsqr, Hsqr); - - &lea ("esi",&DWP($res_x,"esp")); - &lea ("ebp",&DWP($Hcub,"esp")); - &lea ("edi",&DWP($res_x,"esp")); - &call ("_ecp_nistz256_sub"); # p256_sub(res_x, res_x, Hcub); - - &lea ("esi",&DWP($U2,"esp")); - &lea ("ebp",&DWP($res_x,"esp")); - &lea ("edi",&DWP($res_y,"esp")); - &call ("_ecp_nistz256_sub"); # p256_sub(res_y, U2, res_x); - - &mov ("eax",&DWP(32*15+8,"esp")); # GFp_ia32cap_P copy - &lea ("esi",&DWP($Hcub,"esp")); - &lea ("ebp",&DWP($in1_y,"esp")); - &lea ("edi",&DWP($S2,"esp")); - &call ("_ecp_nistz256_mul_mont"); # p256_mul_mont(S2, Hcub, in1_y); - - &mov ("eax",&DWP(32*15+8,"esp")); # GFp_ia32cap_P copy - &lea ("esi",&DWP($R,"esp")); - &lea ("ebp",&DWP($res_y,"esp")); - &lea ("edi",&DWP($res_y,"esp")); - &call ("_ecp_nistz256_mul_mont"); # p256_mul_mont(res_y, res_y, R); - - &lea ("esi",&DWP($res_y,"esp")); - &lea ("ebp",&DWP($S2,"esp")); - &lea ("edi",&DWP($res_y,"esp")); - &call ("_ecp_nistz256_sub"); # p256_sub(res_y, res_y, S2); - - &mov ("ebp",&DWP(32*15+0,"esp")); # !in1infty - &mov ("esi",&DWP(32*15+4,"esp")); # !in2infty - &mov ("edi",&wparam(0)); - &mov ("edx","ebp"); - ¬ ("ebp"); - &and ("edx","esi"); - &and ("ebp","esi"); - ¬ ("esi"); - - ######################################## - # conditional moves - for($i=64;$i<96;$i+=4) { - my $one=@ONE_mont[($i-64)/4]; - - &mov ("eax","edx"); - &and ("eax",&DWP($res_x+$i,"esp")); - &mov ("ebx","ebp") if ($one && $one!=-1); - &and ("ebx",$one) if ($one && $one!=-1); - &mov ("ecx","esi"); - &and ("ecx",&DWP($in1_x+$i,"esp")); - &or ("eax",$one==-1?"ebp":"ebx") if ($one); - &or ("eax","ecx"); - &mov (&DWP($i,"edi"),"eax"); - } - for($i=0;$i<64;$i+=4) { - &mov ("eax","edx"); - &and ("eax",&DWP($res_x+$i,"esp")); - &mov ("ebx","ebp"); - &and ("ebx",&DWP($in2_x+$i,"esp")); - &mov ("ecx","esi"); - &and ("ecx",&DWP($in1_x+$i,"esp")); - &or ("eax","ebx"); - &or ("eax","ecx"); - &mov (&DWP($i,"edi"),"eax"); - } - &stack_pop(8*15+3); -} &function_end("GFp_nistz256_point_add_affine"); - -&asm_finish(); - -close STDOUT or die "error closing STDOUT"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/p256-armv8-asm.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/p256-armv8-asm.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/p256-armv8-asm.pl 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/p256-armv8-asm.pl 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1564 @@ +#! /usr/bin/env perl +# Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the OpenSSL license (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + + +# ==================================================================== +# Written by Andy Polyakov for the OpenSSL +# project. The module is, however, dual licensed under OpenSSL and +# CRYPTOGAMS licenses depending on where you obtain it. For further +# details see http://www.openssl.org/~appro/cryptogams/. +# ==================================================================== +# +# ECP_NISTZ256 module for ARMv8. +# +# February 2015. +# +# Original ECP_NISTZ256 submission targeting x86_64 is detailed in +# http://eprint.iacr.org/2013/816. +# +# with/without -DECP_NISTZ256_ASM +# Apple A7 +190-360% +# Cortex-A53 +190-400% +# Cortex-A57 +190-350% +# Denver +230-400% +# +# Ranges denote minimum and maximum improvement coefficients depending +# on benchmark. Lower coefficients are for ECDSA sign, server-side +# operation. Keep in mind that +400% means 5x improvement. + +# The first two arguments should always be the flavour and output file path. +if ($#ARGV < 1) { die "Not enough arguments provided. + Two arguments are necessary: the flavour and the output file path."; } + +$flavour = shift; +$output = shift; + +$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; +( $xlate="${dir}arm-xlate.pl" and -f $xlate ) or +( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or +die "can't locate arm-xlate.pl"; + +open OUT,"| \"$^X\" $xlate $flavour $output"; +*STDOUT=*OUT; + +{ +my ($rp,$ap,$bp,$bi,$a0,$a1,$a2,$a3,$t0,$t1,$t2,$t3,$poly1,$poly3, + $acc0,$acc1,$acc2,$acc3,$acc4,$acc5) = + map("x$_",(0..17,19,20)); + +my ($acc6,$acc7)=($ap,$bp); # used in __ecp_nistz256_sqr_mont + +$code.=<<___; +#include "ring-core/arm_arch.h" + +.section .rodata +.align 5 +.Lpoly: +.quad 0xffffffffffffffff,0x00000000ffffffff,0x0000000000000000,0xffffffff00000001 +.LRR: // 2^512 mod P precomputed for NIST P256 polynomial +.quad 0x0000000000000003,0xfffffffbffffffff,0xfffffffffffffffe,0x00000004fffffffd +.Lone_mont: +.quad 0x0000000000000001,0xffffffff00000000,0xffffffffffffffff,0x00000000fffffffe +.Lone: +.quad 1,0,0,0 +.Lord: +.quad 0xf3b9cac2fc632551,0xbce6faada7179e84,0xffffffffffffffff,0xffffffff00000000 +.LordK: +.quad 0xccd1c8aaee00bc4f +.asciz "ECP_NISTZ256 for ARMv8, CRYPTOGAMS by " +.text + +// void ecp_nistz256_mul_mont(BN_ULONG x0[4],const BN_ULONG x1[4], +// const BN_ULONG x2[4]); +.globl ecp_nistz256_mul_mont +.type ecp_nistz256_mul_mont,%function +.align 4 +ecp_nistz256_mul_mont: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-32]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + + ldr $bi,[$bp] // bp[0] + ldp $a0,$a1,[$ap] + ldp $a2,$a3,[$ap,#16] + adrp $poly3,:pg_hi21:.Lpoly + add $poly3,$poly3,:lo12:.Lpoly + ldr $poly1,[$poly3,#8] + ldr $poly3,[$poly3,#24] + + bl __ecp_nistz256_mul_mont + + ldp x19,x20,[sp,#16] + ldp x29,x30,[sp],#32 + AARCH64_VALIDATE_LINK_REGISTER + ret +.size ecp_nistz256_mul_mont,.-ecp_nistz256_mul_mont + +// void ecp_nistz256_sqr_mont(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl ecp_nistz256_sqr_mont +.type ecp_nistz256_sqr_mont,%function +.align 4 +ecp_nistz256_sqr_mont: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-32]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + + ldp $a0,$a1,[$ap] + ldp $a2,$a3,[$ap,#16] + adrp $poly3,:pg_hi21:.Lpoly + add $poly3,$poly3,:lo12:.Lpoly + ldr $poly1,[$poly3,#8] + ldr $poly3,[$poly3,#24] + + bl __ecp_nistz256_sqr_mont + + ldp x19,x20,[sp,#16] + ldp x29,x30,[sp],#32 + AARCH64_VALIDATE_LINK_REGISTER + ret +.size ecp_nistz256_sqr_mont,.-ecp_nistz256_sqr_mont + +// void ecp_nistz256_neg(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl ecp_nistz256_neg +.type ecp_nistz256_neg,%function +.align 4 +ecp_nistz256_neg: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + mov $bp,$ap + mov $acc0,xzr // a = 0 + mov $acc1,xzr + mov $acc2,xzr + mov $acc3,xzr + adrp $poly3,:pg_hi21:.Lpoly + add $poly3,$poly3,:lo12:.Lpoly + ldr $poly1,[$poly3,#8] + ldr $poly3,[$poly3,#24] + + bl __ecp_nistz256_sub_from + + ldp x29,x30,[sp],#16 + AARCH64_VALIDATE_LINK_REGISTER + ret +.size ecp_nistz256_neg,.-ecp_nistz256_neg + +// note that __ecp_nistz256_mul_mont expects a[0-3] input pre-loaded +// to $a0-$a3 and b[0] - to $bi +.type __ecp_nistz256_mul_mont,%function +.align 4 +__ecp_nistz256_mul_mont: + mul $acc0,$a0,$bi // a[0]*b[0] + umulh $t0,$a0,$bi + + mul $acc1,$a1,$bi // a[1]*b[0] + umulh $t1,$a1,$bi + + mul $acc2,$a2,$bi // a[2]*b[0] + umulh $t2,$a2,$bi + + mul $acc3,$a3,$bi // a[3]*b[0] + umulh $t3,$a3,$bi + ldr $bi,[$bp,#8] // b[1] + + adds $acc1,$acc1,$t0 // accumulate high parts of multiplication + lsl $t0,$acc0,#32 + adcs $acc2,$acc2,$t1 + lsr $t1,$acc0,#32 + adcs $acc3,$acc3,$t2 + adc $acc4,xzr,$t3 + mov $acc5,xzr +___ +for($i=1;$i<4;$i++) { + # Reduction iteration is normally performed by accumulating + # result of multiplication of modulus by "magic" digit [and + # omitting least significant word, which is guaranteed to + # be 0], but thanks to special form of modulus and "magic" + # digit being equal to least significant word, it can be + # performed with additions and subtractions alone. Indeed: + # + # ffff0001.00000000.0000ffff.ffffffff + # * abcdefgh + # + xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx.abcdefgh + # + # Now observing that ff..ff*x = (2^n-1)*x = 2^n*x-x, we + # rewrite above as: + # + # xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx.abcdefgh + # + abcdefgh.abcdefgh.0000abcd.efgh0000.00000000 + # - 0000abcd.efgh0000.00000000.00000000.abcdefgh + # + # or marking redundant operations: + # + # xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx.-------- + # + abcdefgh.abcdefgh.0000abcd.efgh0000.-------- + # - 0000abcd.efgh0000.--------.--------.-------- + +$code.=<<___; + subs $t2,$acc0,$t0 // "*0xffff0001" + sbc $t3,$acc0,$t1 + adds $acc0,$acc1,$t0 // +=acc[0]<<96 and omit acc[0] + mul $t0,$a0,$bi // lo(a[0]*b[i]) + adcs $acc1,$acc2,$t1 + mul $t1,$a1,$bi // lo(a[1]*b[i]) + adcs $acc2,$acc3,$t2 // +=acc[0]*0xffff0001 + mul $t2,$a2,$bi // lo(a[2]*b[i]) + adcs $acc3,$acc4,$t3 + mul $t3,$a3,$bi // lo(a[3]*b[i]) + adc $acc4,$acc5,xzr + + adds $acc0,$acc0,$t0 // accumulate low parts of multiplication + umulh $t0,$a0,$bi // hi(a[0]*b[i]) + adcs $acc1,$acc1,$t1 + umulh $t1,$a1,$bi // hi(a[1]*b[i]) + adcs $acc2,$acc2,$t2 + umulh $t2,$a2,$bi // hi(a[2]*b[i]) + adcs $acc3,$acc3,$t3 + umulh $t3,$a3,$bi // hi(a[3]*b[i]) + adc $acc4,$acc4,xzr +___ +$code.=<<___ if ($i<3); + ldr $bi,[$bp,#8*($i+1)] // b[$i+1] +___ +$code.=<<___; + adds $acc1,$acc1,$t0 // accumulate high parts of multiplication + lsl $t0,$acc0,#32 + adcs $acc2,$acc2,$t1 + lsr $t1,$acc0,#32 + adcs $acc3,$acc3,$t2 + adcs $acc4,$acc4,$t3 + adc $acc5,xzr,xzr +___ +} +$code.=<<___; + // last reduction + subs $t2,$acc0,$t0 // "*0xffff0001" + sbc $t3,$acc0,$t1 + adds $acc0,$acc1,$t0 // +=acc[0]<<96 and omit acc[0] + adcs $acc1,$acc2,$t1 + adcs $acc2,$acc3,$t2 // +=acc[0]*0xffff0001 + adcs $acc3,$acc4,$t3 + adc $acc4,$acc5,xzr + + adds $t0,$acc0,#1 // subs $t0,$acc0,#-1 // tmp = ret-modulus + sbcs $t1,$acc1,$poly1 + sbcs $t2,$acc2,xzr + sbcs $t3,$acc3,$poly3 + sbcs xzr,$acc4,xzr // did it borrow? + + csel $acc0,$acc0,$t0,lo // ret = borrow ? ret : ret-modulus + csel $acc1,$acc1,$t1,lo + csel $acc2,$acc2,$t2,lo + stp $acc0,$acc1,[$rp] + csel $acc3,$acc3,$t3,lo + stp $acc2,$acc3,[$rp,#16] + + ret +.size __ecp_nistz256_mul_mont,.-__ecp_nistz256_mul_mont + +// note that __ecp_nistz256_sqr_mont expects a[0-3] input pre-loaded +// to $a0-$a3 +.type __ecp_nistz256_sqr_mont,%function +.align 4 +__ecp_nistz256_sqr_mont: + // | | | | | |a1*a0| | + // | | | | |a2*a0| | | + // | |a3*a2|a3*a0| | | | + // | | | |a2*a1| | | | + // | | |a3*a1| | | | | + // *| | | | | | | | 2| + // +|a3*a3|a2*a2|a1*a1|a0*a0| + // |--+--+--+--+--+--+--+--| + // |A7|A6|A5|A4|A3|A2|A1|A0|, where Ax is $accx, i.e. follow $accx + // + // "can't overflow" below mark carrying into high part of + // multiplication result, which can't overflow, because it + // can never be all ones. + + mul $acc1,$a1,$a0 // a[1]*a[0] + umulh $t1,$a1,$a0 + mul $acc2,$a2,$a0 // a[2]*a[0] + umulh $t2,$a2,$a0 + mul $acc3,$a3,$a0 // a[3]*a[0] + umulh $acc4,$a3,$a0 + + adds $acc2,$acc2,$t1 // accumulate high parts of multiplication + mul $t0,$a2,$a1 // a[2]*a[1] + umulh $t1,$a2,$a1 + adcs $acc3,$acc3,$t2 + mul $t2,$a3,$a1 // a[3]*a[1] + umulh $t3,$a3,$a1 + adc $acc4,$acc4,xzr // can't overflow + + mul $acc5,$a3,$a2 // a[3]*a[2] + umulh $acc6,$a3,$a2 + + adds $t1,$t1,$t2 // accumulate high parts of multiplication + mul $acc0,$a0,$a0 // a[0]*a[0] + adc $t2,$t3,xzr // can't overflow + + adds $acc3,$acc3,$t0 // accumulate low parts of multiplication + umulh $a0,$a0,$a0 + adcs $acc4,$acc4,$t1 + mul $t1,$a1,$a1 // a[1]*a[1] + adcs $acc5,$acc5,$t2 + umulh $a1,$a1,$a1 + adc $acc6,$acc6,xzr // can't overflow + + adds $acc1,$acc1,$acc1 // acc[1-6]*=2 + mul $t2,$a2,$a2 // a[2]*a[2] + adcs $acc2,$acc2,$acc2 + umulh $a2,$a2,$a2 + adcs $acc3,$acc3,$acc3 + mul $t3,$a3,$a3 // a[3]*a[3] + adcs $acc4,$acc4,$acc4 + umulh $a3,$a3,$a3 + adcs $acc5,$acc5,$acc5 + adcs $acc6,$acc6,$acc6 + adc $acc7,xzr,xzr + + adds $acc1,$acc1,$a0 // +a[i]*a[i] + adcs $acc2,$acc2,$t1 + adcs $acc3,$acc3,$a1 + adcs $acc4,$acc4,$t2 + adcs $acc5,$acc5,$a2 + lsl $t0,$acc0,#32 + adcs $acc6,$acc6,$t3 + lsr $t1,$acc0,#32 + adc $acc7,$acc7,$a3 +___ +for($i=0;$i<3;$i++) { # reductions, see commentary in + # multiplication for details +$code.=<<___; + subs $t2,$acc0,$t0 // "*0xffff0001" + sbc $t3,$acc0,$t1 + adds $acc0,$acc1,$t0 // +=acc[0]<<96 and omit acc[0] + adcs $acc1,$acc2,$t1 + lsl $t0,$acc0,#32 + adcs $acc2,$acc3,$t2 // +=acc[0]*0xffff0001 + lsr $t1,$acc0,#32 + adc $acc3,$t3,xzr // can't overflow +___ +} +$code.=<<___; + subs $t2,$acc0,$t0 // "*0xffff0001" + sbc $t3,$acc0,$t1 + adds $acc0,$acc1,$t0 // +=acc[0]<<96 and omit acc[0] + adcs $acc1,$acc2,$t1 + adcs $acc2,$acc3,$t2 // +=acc[0]*0xffff0001 + adc $acc3,$t3,xzr // can't overflow + + adds $acc0,$acc0,$acc4 // accumulate upper half + adcs $acc1,$acc1,$acc5 + adcs $acc2,$acc2,$acc6 + adcs $acc3,$acc3,$acc7 + adc $acc4,xzr,xzr + + adds $t0,$acc0,#1 // subs $t0,$acc0,#-1 // tmp = ret-modulus + sbcs $t1,$acc1,$poly1 + sbcs $t2,$acc2,xzr + sbcs $t3,$acc3,$poly3 + sbcs xzr,$acc4,xzr // did it borrow? + + csel $acc0,$acc0,$t0,lo // ret = borrow ? ret : ret-modulus + csel $acc1,$acc1,$t1,lo + csel $acc2,$acc2,$t2,lo + stp $acc0,$acc1,[$rp] + csel $acc3,$acc3,$t3,lo + stp $acc2,$acc3,[$rp,#16] + + ret +.size __ecp_nistz256_sqr_mont,.-__ecp_nistz256_sqr_mont + +// Note that __ecp_nistz256_add_to expects both input vectors pre-loaded to +// $a0-$a3 and $t0-$t3. This is done because it's used in multiple +// contexts, e.g. in multiplication by 2 and 3... +.type __ecp_nistz256_add_to,%function +.align 4 +__ecp_nistz256_add_to: + adds $acc0,$acc0,$t0 // ret = a+b + adcs $acc1,$acc1,$t1 + adcs $acc2,$acc2,$t2 + adcs $acc3,$acc3,$t3 + adc $ap,xzr,xzr // zap $ap + + adds $t0,$acc0,#1 // subs $t0,$a0,#-1 // tmp = ret-modulus + sbcs $t1,$acc1,$poly1 + sbcs $t2,$acc2,xzr + sbcs $t3,$acc3,$poly3 + sbcs xzr,$ap,xzr // did subtraction borrow? + + csel $acc0,$acc0,$t0,lo // ret = borrow ? ret : ret-modulus + csel $acc1,$acc1,$t1,lo + csel $acc2,$acc2,$t2,lo + stp $acc0,$acc1,[$rp] + csel $acc3,$acc3,$t3,lo + stp $acc2,$acc3,[$rp,#16] + + ret +.size __ecp_nistz256_add_to,.-__ecp_nistz256_add_to + +.type __ecp_nistz256_sub_from,%function +.align 4 +__ecp_nistz256_sub_from: + ldp $t0,$t1,[$bp] + ldp $t2,$t3,[$bp,#16] + subs $acc0,$acc0,$t0 // ret = a-b + sbcs $acc1,$acc1,$t1 + sbcs $acc2,$acc2,$t2 + sbcs $acc3,$acc3,$t3 + sbc $ap,xzr,xzr // zap $ap + + subs $t0,$acc0,#1 // adds $t0,$a0,#-1 // tmp = ret+modulus + adcs $t1,$acc1,$poly1 + adcs $t2,$acc2,xzr + adc $t3,$acc3,$poly3 + cmp $ap,xzr // did subtraction borrow? + + csel $acc0,$acc0,$t0,eq // ret = borrow ? ret+modulus : ret + csel $acc1,$acc1,$t1,eq + csel $acc2,$acc2,$t2,eq + stp $acc0,$acc1,[$rp] + csel $acc3,$acc3,$t3,eq + stp $acc2,$acc3,[$rp,#16] + + ret +.size __ecp_nistz256_sub_from,.-__ecp_nistz256_sub_from + +.type __ecp_nistz256_sub_morf,%function +.align 4 +__ecp_nistz256_sub_morf: + ldp $t0,$t1,[$bp] + ldp $t2,$t3,[$bp,#16] + subs $acc0,$t0,$acc0 // ret = b-a + sbcs $acc1,$t1,$acc1 + sbcs $acc2,$t2,$acc2 + sbcs $acc3,$t3,$acc3 + sbc $ap,xzr,xzr // zap $ap + + subs $t0,$acc0,#1 // adds $t0,$a0,#-1 // tmp = ret+modulus + adcs $t1,$acc1,$poly1 + adcs $t2,$acc2,xzr + adc $t3,$acc3,$poly3 + cmp $ap,xzr // did subtraction borrow? + + csel $acc0,$acc0,$t0,eq // ret = borrow ? ret+modulus : ret + csel $acc1,$acc1,$t1,eq + csel $acc2,$acc2,$t2,eq + stp $acc0,$acc1,[$rp] + csel $acc3,$acc3,$t3,eq + stp $acc2,$acc3,[$rp,#16] + + ret +.size __ecp_nistz256_sub_morf,.-__ecp_nistz256_sub_morf + +.type __ecp_nistz256_div_by_2,%function +.align 4 +__ecp_nistz256_div_by_2: + subs $t0,$acc0,#1 // adds $t0,$a0,#-1 // tmp = a+modulus + adcs $t1,$acc1,$poly1 + adcs $t2,$acc2,xzr + adcs $t3,$acc3,$poly3 + adc $ap,xzr,xzr // zap $ap + tst $acc0,#1 // is a even? + + csel $acc0,$acc0,$t0,eq // ret = even ? a : a+modulus + csel $acc1,$acc1,$t1,eq + csel $acc2,$acc2,$t2,eq + csel $acc3,$acc3,$t3,eq + csel $ap,xzr,$ap,eq + + lsr $acc0,$acc0,#1 // ret >>= 1 + orr $acc0,$acc0,$acc1,lsl#63 + lsr $acc1,$acc1,#1 + orr $acc1,$acc1,$acc2,lsl#63 + lsr $acc2,$acc2,#1 + orr $acc2,$acc2,$acc3,lsl#63 + lsr $acc3,$acc3,#1 + stp $acc0,$acc1,[$rp] + orr $acc3,$acc3,$ap,lsl#63 + stp $acc2,$acc3,[$rp,#16] + + ret +.size __ecp_nistz256_div_by_2,.-__ecp_nistz256_div_by_2 +___ +######################################################################## +# following subroutines are "literal" implementation of those found in +# ecp_nistz256.c +# +######################################################################## +# void ecp_nistz256_point_double(P256_POINT *out,const P256_POINT *inp); +# +{ +my ($S,$M,$Zsqr,$tmp0)=map(32*$_,(0..3)); +# above map() describes stack layout with 4 temporary +# 256-bit vectors on top. +my ($rp_real,$ap_real) = map("x$_",(21,22)); + +$code.=<<___; +.globl ecp_nistz256_point_double +.type ecp_nistz256_point_double,%function +.align 5 +ecp_nistz256_point_double: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + sub sp,sp,#32*4 + +.Ldouble_shortcut: + ldp $acc0,$acc1,[$ap,#32] + mov $rp_real,$rp + ldp $acc2,$acc3,[$ap,#48] + mov $ap_real,$ap + adrp $poly3,:pg_hi21:.Lpoly + add $poly3,$poly3,:lo12:.Lpoly + ldr $poly1,[$poly3,#8] + mov $t0,$acc0 + ldr $poly3,[$poly3,#24] + mov $t1,$acc1 + ldp $a0,$a1,[$ap_real,#64] // forward load for p256_sqr_mont + mov $t2,$acc2 + mov $t3,$acc3 + ldp $a2,$a3,[$ap_real,#64+16] + add $rp,sp,#$S + bl __ecp_nistz256_add_to // p256_mul_by_2(S, in_y); + + add $rp,sp,#$Zsqr + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Zsqr, in_z); + + ldp $t0,$t1,[$ap_real] + ldp $t2,$t3,[$ap_real,#16] + mov $a0,$acc0 // put Zsqr aside for p256_sub + mov $a1,$acc1 + mov $a2,$acc2 + mov $a3,$acc3 + add $rp,sp,#$M + bl __ecp_nistz256_add_to // p256_add(M, Zsqr, in_x); + + add $bp,$ap_real,#0 + mov $acc0,$a0 // restore Zsqr + mov $acc1,$a1 + ldp $a0,$a1,[sp,#$S] // forward load for p256_sqr_mont + mov $acc2,$a2 + mov $acc3,$a3 + ldp $a2,$a3,[sp,#$S+16] + add $rp,sp,#$Zsqr + bl __ecp_nistz256_sub_morf // p256_sub(Zsqr, in_x, Zsqr); + + add $rp,sp,#$S + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(S, S); + + ldr $bi,[$ap_real,#32] + ldp $a0,$a1,[$ap_real,#64] + ldp $a2,$a3,[$ap_real,#64+16] + add $bp,$ap_real,#32 + add $rp,sp,#$tmp0 + bl __ecp_nistz256_mul_mont // p256_mul_mont(tmp0, in_z, in_y); + + mov $t0,$acc0 + mov $t1,$acc1 + ldp $a0,$a1,[sp,#$S] // forward load for p256_sqr_mont + mov $t2,$acc2 + mov $t3,$acc3 + ldp $a2,$a3,[sp,#$S+16] + add $rp,$rp_real,#64 + bl __ecp_nistz256_add_to // p256_mul_by_2(res_z, tmp0); + + add $rp,sp,#$tmp0 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(tmp0, S); + + ldr $bi,[sp,#$Zsqr] // forward load for p256_mul_mont + ldp $a0,$a1,[sp,#$M] + ldp $a2,$a3,[sp,#$M+16] + add $rp,$rp_real,#32 + bl __ecp_nistz256_div_by_2 // p256_div_by_2(res_y, tmp0); + + add $bp,sp,#$Zsqr + add $rp,sp,#$M + bl __ecp_nistz256_mul_mont // p256_mul_mont(M, M, Zsqr); + + mov $t0,$acc0 // duplicate M + mov $t1,$acc1 + mov $t2,$acc2 + mov $t3,$acc3 + mov $a0,$acc0 // put M aside + mov $a1,$acc1 + mov $a2,$acc2 + mov $a3,$acc3 + add $rp,sp,#$M + bl __ecp_nistz256_add_to + mov $t0,$a0 // restore M + mov $t1,$a1 + ldr $bi,[$ap_real] // forward load for p256_mul_mont + mov $t2,$a2 + ldp $a0,$a1,[sp,#$S] + mov $t3,$a3 + ldp $a2,$a3,[sp,#$S+16] + bl __ecp_nistz256_add_to // p256_mul_by_3(M, M); + + add $bp,$ap_real,#0 + add $rp,sp,#$S + bl __ecp_nistz256_mul_mont // p256_mul_mont(S, S, in_x); + + mov $t0,$acc0 + mov $t1,$acc1 + ldp $a0,$a1,[sp,#$M] // forward load for p256_sqr_mont + mov $t2,$acc2 + mov $t3,$acc3 + ldp $a2,$a3,[sp,#$M+16] + add $rp,sp,#$tmp0 + bl __ecp_nistz256_add_to // p256_mul_by_2(tmp0, S); + + add $rp,$rp_real,#0 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(res_x, M); + + add $bp,sp,#$tmp0 + bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, tmp0); + + add $bp,sp,#$S + add $rp,sp,#$S + bl __ecp_nistz256_sub_morf // p256_sub(S, S, res_x); + + ldr $bi,[sp,#$M] + mov $a0,$acc0 // copy S + mov $a1,$acc1 + mov $a2,$acc2 + mov $a3,$acc3 + add $bp,sp,#$M + bl __ecp_nistz256_mul_mont // p256_mul_mont(S, S, M); + + add $bp,$rp_real,#32 + add $rp,$rp_real,#32 + bl __ecp_nistz256_sub_from // p256_sub(res_y, S, res_y); + + add sp,x29,#0 // destroy frame + ldp x19,x20,[x29,#16] + ldp x21,x22,[x29,#32] + ldp x29,x30,[sp],#96 + AARCH64_VALIDATE_LINK_REGISTER + ret +.size ecp_nistz256_point_double,.-ecp_nistz256_point_double +___ +} + +######################################################################## +# void ecp_nistz256_point_add(P256_POINT *out,const P256_POINT *in1, +# const P256_POINT *in2); +{ +my ($res_x,$res_y,$res_z, + $H,$Hsqr,$R,$Rsqr,$Hcub, + $U1,$U2,$S1,$S2)=map(32*$_,(0..11)); +my ($Z1sqr, $Z2sqr) = ($Hsqr, $Rsqr); +# above map() describes stack layout with 12 temporary +# 256-bit vectors on top. +my ($rp_real,$ap_real,$bp_real,$in1infty,$in2infty,$temp0,$temp1,$temp2)=map("x$_",(21..28)); + +$code.=<<___; +.globl ecp_nistz256_point_add +.type ecp_nistz256_point_add,%function +.align 5 +ecp_nistz256_point_add: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#32*12 + + ldp $a0,$a1,[$bp,#64] // in2_z + ldp $a2,$a3,[$bp,#64+16] + mov $rp_real,$rp + mov $ap_real,$ap + mov $bp_real,$bp + adrp $poly3,:pg_hi21:.Lpoly + add $poly3,$poly3,:lo12:.Lpoly + ldr $poly1,[$poly3,#8] + ldr $poly3,[$poly3,#24] + orr $t0,$a0,$a1 + orr $t2,$a2,$a3 + orr $in2infty,$t0,$t2 + cmp $in2infty,#0 + csetm $in2infty,ne // ~in2infty + add $rp,sp,#$Z2sqr + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z2sqr, in2_z); + + ldp $a0,$a1,[$ap_real,#64] // in1_z + ldp $a2,$a3,[$ap_real,#64+16] + orr $t0,$a0,$a1 + orr $t2,$a2,$a3 + orr $in1infty,$t0,$t2 + cmp $in1infty,#0 + csetm $in1infty,ne // ~in1infty + add $rp,sp,#$Z1sqr + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); + + ldr $bi,[$bp_real,#64] + ldp $a0,$a1,[sp,#$Z2sqr] + ldp $a2,$a3,[sp,#$Z2sqr+16] + add $bp,$bp_real,#64 + add $rp,sp,#$S1 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S1, Z2sqr, in2_z); + + ldr $bi,[$ap_real,#64] + ldp $a0,$a1,[sp,#$Z1sqr] + ldp $a2,$a3,[sp,#$Z1sqr+16] + add $bp,$ap_real,#64 + add $rp,sp,#$S2 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, Z1sqr, in1_z); + + ldr $bi,[$ap_real,#32] + ldp $a0,$a1,[sp,#$S1] + ldp $a2,$a3,[sp,#$S1+16] + add $bp,$ap_real,#32 + add $rp,sp,#$S1 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S1, S1, in1_y); + + ldr $bi,[$bp_real,#32] + ldp $a0,$a1,[sp,#$S2] + ldp $a2,$a3,[sp,#$S2+16] + add $bp,$bp_real,#32 + add $rp,sp,#$S2 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S2, in2_y); + + add $bp,sp,#$S1 + ldr $bi,[sp,#$Z2sqr] // forward load for p256_mul_mont + ldp $a0,$a1,[$ap_real] + ldp $a2,$a3,[$ap_real,#16] + add $rp,sp,#$R + bl __ecp_nistz256_sub_from // p256_sub(R, S2, S1); + + orr $acc0,$acc0,$acc1 // see if result is zero + orr $acc2,$acc2,$acc3 + orr $temp0,$acc0,$acc2 // ~is_equal(S1,S2) + + add $bp,sp,#$Z2sqr + add $rp,sp,#$U1 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U1, in1_x, Z2sqr); + + ldr $bi,[sp,#$Z1sqr] + ldp $a0,$a1,[$bp_real] + ldp $a2,$a3,[$bp_real,#16] + add $bp,sp,#$Z1sqr + add $rp,sp,#$U2 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, in2_x, Z1sqr); + + add $bp,sp,#$U1 + ldp $a0,$a1,[sp,#$R] // forward load for p256_sqr_mont + ldp $a2,$a3,[sp,#$R+16] + add $rp,sp,#$H + bl __ecp_nistz256_sub_from // p256_sub(H, U2, U1); + + orr $acc0,$acc0,$acc1 // see if result is zero + orr $acc2,$acc2,$acc3 + orr $acc0,$acc0,$acc2 // ~is_equal(U1,U2) + + mvn $temp1,$in1infty // -1/0 -> 0/-1 + mvn $temp2,$in2infty // -1/0 -> 0/-1 + orr $acc0,$acc0,$temp1 + orr $acc0,$acc0,$temp2 + orr $acc0,$acc0,$temp0 + cbnz $acc0,.Ladd_proceed // if(~is_equal(U1,U2) | in1infty | in2infty | ~is_equal(S1,S2)) + +.Ladd_double: + mov $ap,$ap_real + mov $rp,$rp_real + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + add sp,sp,#256 // #256 is from #32*(12-4). difference in stack frames + b .Ldouble_shortcut + +.align 4 +.Ladd_proceed: + add $rp,sp,#$Rsqr + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Rsqr, R); + + ldr $bi,[$ap_real,#64] + ldp $a0,$a1,[sp,#$H] + ldp $a2,$a3,[sp,#$H+16] + add $bp,$ap_real,#64 + add $rp,sp,#$res_z + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, H, in1_z); + + ldp $a0,$a1,[sp,#$H] + ldp $a2,$a3,[sp,#$H+16] + add $rp,sp,#$Hsqr + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Hsqr, H); + + ldr $bi,[$bp_real,#64] + ldp $a0,$a1,[sp,#$res_z] + ldp $a2,$a3,[sp,#$res_z+16] + add $bp,$bp_real,#64 + add $rp,sp,#$res_z + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, res_z, in2_z); + + ldr $bi,[sp,#$H] + ldp $a0,$a1,[sp,#$Hsqr] + ldp $a2,$a3,[sp,#$Hsqr+16] + add $bp,sp,#$H + add $rp,sp,#$Hcub + bl __ecp_nistz256_mul_mont // p256_mul_mont(Hcub, Hsqr, H); + + ldr $bi,[sp,#$Hsqr] + ldp $a0,$a1,[sp,#$U1] + ldp $a2,$a3,[sp,#$U1+16] + add $bp,sp,#$Hsqr + add $rp,sp,#$U2 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, U1, Hsqr); + + mov $t0,$acc0 + mov $t1,$acc1 + mov $t2,$acc2 + mov $t3,$acc3 + add $rp,sp,#$Hsqr + bl __ecp_nistz256_add_to // p256_mul_by_2(Hsqr, U2); + + add $bp,sp,#$Rsqr + add $rp,sp,#$res_x + bl __ecp_nistz256_sub_morf // p256_sub(res_x, Rsqr, Hsqr); + + add $bp,sp,#$Hcub + bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, Hcub); + + add $bp,sp,#$U2 + ldr $bi,[sp,#$Hcub] // forward load for p256_mul_mont + ldp $a0,$a1,[sp,#$S1] + ldp $a2,$a3,[sp,#$S1+16] + add $rp,sp,#$res_y + bl __ecp_nistz256_sub_morf // p256_sub(res_y, U2, res_x); + + add $bp,sp,#$Hcub + add $rp,sp,#$S2 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S1, Hcub); + + ldr $bi,[sp,#$R] + ldp $a0,$a1,[sp,#$res_y] + ldp $a2,$a3,[sp,#$res_y+16] + add $bp,sp,#$R + add $rp,sp,#$res_y + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_y, res_y, R); + + add $bp,sp,#$S2 + bl __ecp_nistz256_sub_from // p256_sub(res_y, res_y, S2); + + ldp $a0,$a1,[sp,#$res_x] // res + ldp $a2,$a3,[sp,#$res_x+16] + ldp $t0,$t1,[$bp_real] // in2 + ldp $t2,$t3,[$bp_real,#16] +___ +for($i=0;$i<64;$i+=32) { # conditional moves +$code.=<<___; + ldp $acc0,$acc1,[$ap_real,#$i] // in1 + cmp $in1infty,#0 // ~$in1intfy, remember? + ldp $acc2,$acc3,[$ap_real,#$i+16] + csel $t0,$a0,$t0,ne + csel $t1,$a1,$t1,ne + ldp $a0,$a1,[sp,#$res_x+$i+32] // res + csel $t2,$a2,$t2,ne + csel $t3,$a3,$t3,ne + cmp $in2infty,#0 // ~$in2intfy, remember? + ldp $a2,$a3,[sp,#$res_x+$i+48] + csel $acc0,$t0,$acc0,ne + csel $acc1,$t1,$acc1,ne + ldp $t0,$t1,[$bp_real,#$i+32] // in2 + csel $acc2,$t2,$acc2,ne + csel $acc3,$t3,$acc3,ne + ldp $t2,$t3,[$bp_real,#$i+48] + stp $acc0,$acc1,[$rp_real,#$i] + stp $acc2,$acc3,[$rp_real,#$i+16] +___ +} +$code.=<<___; + ldp $acc0,$acc1,[$ap_real,#$i] // in1 + cmp $in1infty,#0 // ~$in1intfy, remember? + ldp $acc2,$acc3,[$ap_real,#$i+16] + csel $t0,$a0,$t0,ne + csel $t1,$a1,$t1,ne + csel $t2,$a2,$t2,ne + csel $t3,$a3,$t3,ne + cmp $in2infty,#0 // ~$in2intfy, remember? + csel $acc0,$t0,$acc0,ne + csel $acc1,$t1,$acc1,ne + csel $acc2,$t2,$acc2,ne + csel $acc3,$t3,$acc3,ne + stp $acc0,$acc1,[$rp_real,#$i] + stp $acc2,$acc3,[$rp_real,#$i+16] + +.Ladd_done: + add sp,x29,#0 // destroy frame + ldp x19,x20,[x29,#16] + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 + AARCH64_VALIDATE_LINK_REGISTER + ret +.size ecp_nistz256_point_add,.-ecp_nistz256_point_add +___ +} + +######################################################################## +# void ecp_nistz256_point_add_affine(P256_POINT *out,const P256_POINT *in1, +# const P256_POINT_AFFINE *in2); +{ +my ($res_x,$res_y,$res_z, + $U2,$S2,$H,$R,$Hsqr,$Hcub,$Rsqr)=map(32*$_,(0..9)); +my $Z1sqr = $S2; +# above map() describes stack layout with 10 temporary +# 256-bit vectors on top. +my ($rp_real,$ap_real,$bp_real,$in1infty,$in2infty,$temp)=map("x$_",(21..26)); + +$code.=<<___; +.globl ecp_nistz256_point_add_affine +.type ecp_nistz256_point_add_affine,%function +.align 5 +ecp_nistz256_point_add_affine: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-80]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + sub sp,sp,#32*10 + + mov $rp_real,$rp + mov $ap_real,$ap + mov $bp_real,$bp + adrp $poly3,:pg_hi21:.Lpoly + add $poly3,$poly3,:lo12:.Lpoly + ldr $poly1,[$poly3,#8] + ldr $poly3,[$poly3,#24] + + ldp $a0,$a1,[$ap,#64] // in1_z + ldp $a2,$a3,[$ap,#64+16] + orr $t0,$a0,$a1 + orr $t2,$a2,$a3 + orr $in1infty,$t0,$t2 + cmp $in1infty,#0 + csetm $in1infty,ne // ~in1infty + + ldp $acc0,$acc1,[$bp] // in2_x + ldp $acc2,$acc3,[$bp,#16] + ldp $t0,$t1,[$bp,#32] // in2_y + ldp $t2,$t3,[$bp,#48] + orr $acc0,$acc0,$acc1 + orr $acc2,$acc2,$acc3 + orr $t0,$t0,$t1 + orr $t2,$t2,$t3 + orr $acc0,$acc0,$acc2 + orr $t0,$t0,$t2 + orr $in2infty,$acc0,$t0 + cmp $in2infty,#0 + csetm $in2infty,ne // ~in2infty + + add $rp,sp,#$Z1sqr + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); + + mov $a0,$acc0 + mov $a1,$acc1 + mov $a2,$acc2 + mov $a3,$acc3 + ldr $bi,[$bp_real] + add $bp,$bp_real,#0 + add $rp,sp,#$U2 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, Z1sqr, in2_x); + + add $bp,$ap_real,#0 + ldr $bi,[$ap_real,#64] // forward load for p256_mul_mont + ldp $a0,$a1,[sp,#$Z1sqr] + ldp $a2,$a3,[sp,#$Z1sqr+16] + add $rp,sp,#$H + bl __ecp_nistz256_sub_from // p256_sub(H, U2, in1_x); + + add $bp,$ap_real,#64 + add $rp,sp,#$S2 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, Z1sqr, in1_z); + + ldr $bi,[$ap_real,#64] + ldp $a0,$a1,[sp,#$H] + ldp $a2,$a3,[sp,#$H+16] + add $bp,$ap_real,#64 + add $rp,sp,#$res_z + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, H, in1_z); + + ldr $bi,[$bp_real,#32] + ldp $a0,$a1,[sp,#$S2] + ldp $a2,$a3,[sp,#$S2+16] + add $bp,$bp_real,#32 + add $rp,sp,#$S2 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S2, in2_y); + + add $bp,$ap_real,#32 + ldp $a0,$a1,[sp,#$H] // forward load for p256_sqr_mont + ldp $a2,$a3,[sp,#$H+16] + add $rp,sp,#$R + bl __ecp_nistz256_sub_from // p256_sub(R, S2, in1_y); + + add $rp,sp,#$Hsqr + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Hsqr, H); + + ldp $a0,$a1,[sp,#$R] + ldp $a2,$a3,[sp,#$R+16] + add $rp,sp,#$Rsqr + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Rsqr, R); + + ldr $bi,[sp,#$H] + ldp $a0,$a1,[sp,#$Hsqr] + ldp $a2,$a3,[sp,#$Hsqr+16] + add $bp,sp,#$H + add $rp,sp,#$Hcub + bl __ecp_nistz256_mul_mont // p256_mul_mont(Hcub, Hsqr, H); + + ldr $bi,[$ap_real] + ldp $a0,$a1,[sp,#$Hsqr] + ldp $a2,$a3,[sp,#$Hsqr+16] + add $bp,$ap_real,#0 + add $rp,sp,#$U2 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, in1_x, Hsqr); + + mov $t0,$acc0 + mov $t1,$acc1 + mov $t2,$acc2 + mov $t3,$acc3 + add $rp,sp,#$Hsqr + bl __ecp_nistz256_add_to // p256_mul_by_2(Hsqr, U2); + + add $bp,sp,#$Rsqr + add $rp,sp,#$res_x + bl __ecp_nistz256_sub_morf // p256_sub(res_x, Rsqr, Hsqr); + + add $bp,sp,#$Hcub + bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, Hcub); + + add $bp,sp,#$U2 + ldr $bi,[$ap_real,#32] // forward load for p256_mul_mont + ldp $a0,$a1,[sp,#$Hcub] + ldp $a2,$a3,[sp,#$Hcub+16] + add $rp,sp,#$res_y + bl __ecp_nistz256_sub_morf // p256_sub(res_y, U2, res_x); + + add $bp,$ap_real,#32 + add $rp,sp,#$S2 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, in1_y, Hcub); + + ldr $bi,[sp,#$R] + ldp $a0,$a1,[sp,#$res_y] + ldp $a2,$a3,[sp,#$res_y+16] + add $bp,sp,#$R + add $rp,sp,#$res_y + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_y, res_y, R); + + add $bp,sp,#$S2 + bl __ecp_nistz256_sub_from // p256_sub(res_y, res_y, S2); + + ldp $a0,$a1,[sp,#$res_x] // res + ldp $a2,$a3,[sp,#$res_x+16] + ldp $t0,$t1,[$bp_real] // in2 + ldp $t2,$t3,[$bp_real,#16] +___ +for($i=0;$i<64;$i+=32) { # conditional moves +$code.=<<___; + ldp $acc0,$acc1,[$ap_real,#$i] // in1 + cmp $in1infty,#0 // ~$in1intfy, remember? + ldp $acc2,$acc3,[$ap_real,#$i+16] + csel $t0,$a0,$t0,ne + csel $t1,$a1,$t1,ne + ldp $a0,$a1,[sp,#$res_x+$i+32] // res + csel $t2,$a2,$t2,ne + csel $t3,$a3,$t3,ne + cmp $in2infty,#0 // ~$in2intfy, remember? + ldp $a2,$a3,[sp,#$res_x+$i+48] + csel $acc0,$t0,$acc0,ne + csel $acc1,$t1,$acc1,ne + ldp $t0,$t1,[$bp_real,#$i+32] // in2 + csel $acc2,$t2,$acc2,ne + csel $acc3,$t3,$acc3,ne + ldp $t2,$t3,[$bp_real,#$i+48] + stp $acc0,$acc1,[$rp_real,#$i] + stp $acc2,$acc3,[$rp_real,#$i+16] +___ +$code.=<<___ if ($i == 0); + adrp $bp_real,:pg_hi21:.Lone_mont-64 + add $bp_real,$bp_real,:lo12:.Lone_mont-64 +___ +} +$code.=<<___; + ldp $acc0,$acc1,[$ap_real,#$i] // in1 + cmp $in1infty,#0 // ~$in1intfy, remember? + ldp $acc2,$acc3,[$ap_real,#$i+16] + csel $t0,$a0,$t0,ne + csel $t1,$a1,$t1,ne + csel $t2,$a2,$t2,ne + csel $t3,$a3,$t3,ne + cmp $in2infty,#0 // ~$in2intfy, remember? + csel $acc0,$t0,$acc0,ne + csel $acc1,$t1,$acc1,ne + csel $acc2,$t2,$acc2,ne + csel $acc3,$t3,$acc3,ne + stp $acc0,$acc1,[$rp_real,#$i] + stp $acc2,$acc3,[$rp_real,#$i+16] + + add sp,x29,#0 // destroy frame + ldp x19,x20,[x29,#16] + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x29,x30,[sp],#80 + AARCH64_VALIDATE_LINK_REGISTER + ret +.size ecp_nistz256_point_add_affine,.-ecp_nistz256_point_add_affine +___ +} +if (1) { +my ($ord0,$ord1) = ($poly1,$poly3); +my ($ord2,$ord3,$ordk,$t4) = map("x$_",(21..24)); +my $acc7 = $bi; + +$code.=<<___; +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_ord_mul_mont(uint64_t res[4], uint64_t a[4], +// uint64_t b[4]); +.globl ecp_nistz256_ord_mul_mont +.type ecp_nistz256_ord_mul_mont,%function +.align 4 +ecp_nistz256_ord_mul_mont: + AARCH64_VALID_CALL_TARGET + // Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later. + stp x29,x30,[sp,#-64]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + + adrp $ordk,:pg_hi21:.Lord + add $ordk,$ordk,:lo12:.Lord + ldr $bi,[$bp] // bp[0] + ldp $a0,$a1,[$ap] + ldp $a2,$a3,[$ap,#16] + + ldp $ord0,$ord1,[$ordk,#0] + ldp $ord2,$ord3,[$ordk,#16] + ldr $ordk,[$ordk,#32] + + mul $acc0,$a0,$bi // a[0]*b[0] + umulh $t0,$a0,$bi + + mul $acc1,$a1,$bi // a[1]*b[0] + umulh $t1,$a1,$bi + + mul $acc2,$a2,$bi // a[2]*b[0] + umulh $t2,$a2,$bi + + mul $acc3,$a3,$bi // a[3]*b[0] + umulh $acc4,$a3,$bi + + mul $t4,$acc0,$ordk + + adds $acc1,$acc1,$t0 // accumulate high parts of multiplication + adcs $acc2,$acc2,$t1 + adcs $acc3,$acc3,$t2 + adc $acc4,$acc4,xzr + mov $acc5,xzr +___ +for ($i=1;$i<4;$i++) { + ################################################################ + # ffff0000.ffffffff.yyyyyyyy.zzzzzzzz + # * abcdefgh + # + xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx + # + # Now observing that ff..ff*x = (2^n-1)*x = 2^n*x-x, we + # rewrite above as: + # + # xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx + # - 0000abcd.efgh0000.abcdefgh.00000000.00000000 + # + abcdefgh.abcdefgh.yzayzbyz.cyzdyzey.zfyzgyzh +$code.=<<___; + ldr $bi,[$bp,#8*$i] // b[i] + + lsl $t0,$t4,#32 + subs $acc2,$acc2,$t4 + lsr $t1,$t4,#32 + sbcs $acc3,$acc3,$t0 + sbcs $acc4,$acc4,$t1 + sbc $acc5,$acc5,xzr + + subs xzr,$acc0,#1 + umulh $t1,$ord0,$t4 + mul $t2,$ord1,$t4 + umulh $t3,$ord1,$t4 + + adcs $t2,$t2,$t1 + mul $t0,$a0,$bi + adc $t3,$t3,xzr + mul $t1,$a1,$bi + + adds $acc0,$acc1,$t2 + mul $t2,$a2,$bi + adcs $acc1,$acc2,$t3 + mul $t3,$a3,$bi + adcs $acc2,$acc3,$t4 + adcs $acc3,$acc4,$t4 + adc $acc4,$acc5,xzr + + adds $acc0,$acc0,$t0 // accumulate low parts + umulh $t0,$a0,$bi + adcs $acc1,$acc1,$t1 + umulh $t1,$a1,$bi + adcs $acc2,$acc2,$t2 + umulh $t2,$a2,$bi + adcs $acc3,$acc3,$t3 + umulh $t3,$a3,$bi + adc $acc4,$acc4,xzr + mul $t4,$acc0,$ordk + adds $acc1,$acc1,$t0 // accumulate high parts + adcs $acc2,$acc2,$t1 + adcs $acc3,$acc3,$t2 + adcs $acc4,$acc4,$t3 + adc $acc5,xzr,xzr +___ +} +$code.=<<___; + lsl $t0,$t4,#32 // last reduction + subs $acc2,$acc2,$t4 + lsr $t1,$t4,#32 + sbcs $acc3,$acc3,$t0 + sbcs $acc4,$acc4,$t1 + sbc $acc5,$acc5,xzr + + subs xzr,$acc0,#1 + umulh $t1,$ord0,$t4 + mul $t2,$ord1,$t4 + umulh $t3,$ord1,$t4 + + adcs $t2,$t2,$t1 + adc $t3,$t3,xzr + + adds $acc0,$acc1,$t2 + adcs $acc1,$acc2,$t3 + adcs $acc2,$acc3,$t4 + adcs $acc3,$acc4,$t4 + adc $acc4,$acc5,xzr + + subs $t0,$acc0,$ord0 // ret -= modulus + sbcs $t1,$acc1,$ord1 + sbcs $t2,$acc2,$ord2 + sbcs $t3,$acc3,$ord3 + sbcs xzr,$acc4,xzr + + csel $acc0,$acc0,$t0,lo // ret = borrow ? ret : ret-modulus + csel $acc1,$acc1,$t1,lo + csel $acc2,$acc2,$t2,lo + stp $acc0,$acc1,[$rp] + csel $acc3,$acc3,$t3,lo + stp $acc2,$acc3,[$rp,#16] + + ldp x19,x20,[sp,#16] + ldp x21,x22,[sp,#32] + ldp x23,x24,[sp,#48] + ldr x29,[sp],#64 + ret +.size ecp_nistz256_ord_mul_mont,.-ecp_nistz256_ord_mul_mont + +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_ord_sqr_mont(uint64_t res[4], uint64_t a[4], +// uint64_t rep); +.globl ecp_nistz256_ord_sqr_mont +.type ecp_nistz256_ord_sqr_mont,%function +.align 4 +ecp_nistz256_ord_sqr_mont: + AARCH64_VALID_CALL_TARGET + // Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later. + stp x29,x30,[sp,#-64]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + + adrp $ordk,:pg_hi21:.Lord + add $ordk,$ordk,:lo12:.Lord + ldp $a0,$a1,[$ap] + ldp $a2,$a3,[$ap,#16] + + ldp $ord0,$ord1,[$ordk,#0] + ldp $ord2,$ord3,[$ordk,#16] + ldr $ordk,[$ordk,#32] + b .Loop_ord_sqr + +.align 4 +.Loop_ord_sqr: + sub $bp,$bp,#1 + //////////////////////////////////////////////////////////////// + // | | | | | |a1*a0| | + // | | | | |a2*a0| | | + // | |a3*a2|a3*a0| | | | + // | | | |a2*a1| | | | + // | | |a3*a1| | | | | + // *| | | | | | | | 2| + // +|a3*a3|a2*a2|a1*a1|a0*a0| + // |--+--+--+--+--+--+--+--| + // |A7|A6|A5|A4|A3|A2|A1|A0|, where Ax is $accx, i.e. follow $accx + // + // "can't overflow" below mark carrying into high part of + // multiplication result, which can't overflow, because it + // can never be all ones. + + mul $acc1,$a1,$a0 // a[1]*a[0] + umulh $t1,$a1,$a0 + mul $acc2,$a2,$a0 // a[2]*a[0] + umulh $t2,$a2,$a0 + mul $acc3,$a3,$a0 // a[3]*a[0] + umulh $acc4,$a3,$a0 + + adds $acc2,$acc2,$t1 // accumulate high parts of multiplication + mul $t0,$a2,$a1 // a[2]*a[1] + umulh $t1,$a2,$a1 + adcs $acc3,$acc3,$t2 + mul $t2,$a3,$a1 // a[3]*a[1] + umulh $t3,$a3,$a1 + adc $acc4,$acc4,xzr // can't overflow + + mul $acc5,$a3,$a2 // a[3]*a[2] + umulh $acc6,$a3,$a2 + + adds $t1,$t1,$t2 // accumulate high parts of multiplication + mul $acc0,$a0,$a0 // a[0]*a[0] + adc $t2,$t3,xzr // can't overflow + + adds $acc3,$acc3,$t0 // accumulate low parts of multiplication + umulh $a0,$a0,$a0 + adcs $acc4,$acc4,$t1 + mul $t1,$a1,$a1 // a[1]*a[1] + adcs $acc5,$acc5,$t2 + umulh $a1,$a1,$a1 + adc $acc6,$acc6,xzr // can't overflow + + adds $acc1,$acc1,$acc1 // acc[1-6]*=2 + mul $t2,$a2,$a2 // a[2]*a[2] + adcs $acc2,$acc2,$acc2 + umulh $a2,$a2,$a2 + adcs $acc3,$acc3,$acc3 + mul $t3,$a3,$a3 // a[3]*a[3] + adcs $acc4,$acc4,$acc4 + umulh $a3,$a3,$a3 + adcs $acc5,$acc5,$acc5 + adcs $acc6,$acc6,$acc6 + adc $acc7,xzr,xzr + + adds $acc1,$acc1,$a0 // +a[i]*a[i] + mul $t4,$acc0,$ordk + adcs $acc2,$acc2,$t1 + adcs $acc3,$acc3,$a1 + adcs $acc4,$acc4,$t2 + adcs $acc5,$acc5,$a2 + adcs $acc6,$acc6,$t3 + adc $acc7,$acc7,$a3 +___ +for($i=0; $i<4; $i++) { # reductions +$code.=<<___; + subs xzr,$acc0,#1 + umulh $t1,$ord0,$t4 + mul $t2,$ord1,$t4 + umulh $t3,$ord1,$t4 + + adcs $t2,$t2,$t1 + adc $t3,$t3,xzr + + adds $acc0,$acc1,$t2 + adcs $acc1,$acc2,$t3 + adcs $acc2,$acc3,$t4 + adc $acc3,xzr,$t4 // can't overflow +___ +$code.=<<___ if ($i<3); + mul $t3,$acc0,$ordk +___ +$code.=<<___; + lsl $t0,$t4,#32 + subs $acc1,$acc1,$t4 + lsr $t1,$t4,#32 + sbcs $acc2,$acc2,$t0 + sbc $acc3,$acc3,$t1 // can't borrow +___ + ($t3,$t4) = ($t4,$t3); +} +$code.=<<___; + adds $acc0,$acc0,$acc4 // accumulate upper half + adcs $acc1,$acc1,$acc5 + adcs $acc2,$acc2,$acc6 + adcs $acc3,$acc3,$acc7 + adc $acc4,xzr,xzr + + subs $t0,$acc0,$ord0 // ret -= modulus + sbcs $t1,$acc1,$ord1 + sbcs $t2,$acc2,$ord2 + sbcs $t3,$acc3,$ord3 + sbcs xzr,$acc4,xzr + + csel $a0,$acc0,$t0,lo // ret = borrow ? ret : ret-modulus + csel $a1,$acc1,$t1,lo + csel $a2,$acc2,$t2,lo + csel $a3,$acc3,$t3,lo + + cbnz $bp,.Loop_ord_sqr + + stp $a0,$a1,[$rp] + stp $a2,$a3,[$rp,#16] + + ldp x19,x20,[sp,#16] + ldp x21,x22,[sp,#32] + ldp x23,x24,[sp,#48] + ldr x29,[sp],#64 + ret +.size ecp_nistz256_ord_sqr_mont,.-ecp_nistz256_ord_sqr_mont +___ +} } + +######################################################################## +# select subroutines +# These select functions are similar to those in p256-x86_64-asm.pl +# They load all points in the lookup table +# keeping in the output only the one corresponding to the input index. +{ +my ($val,$in_t)=map("x$_",(0..1)); +my ($index)=("w2"); +my ($Idx_ctr,$Val_in, $Mask_64)=("w9", "x10", "x11"); +my ($Mask)=("v3"); +my ($Ra,$Rb,$Rc,$Rd,$Re,$Rf)=map("v$_",(16..21)); +my ($T0a,$T0b,$T0c,$T0d,$T0e,$T0f)=map("v$_",(22..27)); +$code.=<<___; +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_select_w5(uint64_t *val, uint64_t *in_t, int index); +.globl ecp_nistz256_select_w5 +.type ecp_nistz256_select_w5,%function +.align 4 +ecp_nistz256_select_w5: + AARCH64_VALID_CALL_TARGET + + // $Val_in := $val + // $Idx_ctr := 0; loop counter and incremented internal index + mov $Val_in, $val + mov $Idx_ctr, #0 + + // [$Ra-$Rf] := 0 + movi $Ra.16b, #0 + movi $Rb.16b, #0 + movi $Rc.16b, #0 + movi $Rd.16b, #0 + movi $Re.16b, #0 + movi $Rf.16b, #0 + +.Lselect_w5_loop: + // Loop 16 times. + + // Increment index (loop counter); tested at the end of the loop + add $Idx_ctr, $Idx_ctr, #1 + + // [$T0a-$T0f] := Load a (3*256-bit = 6*128-bit) table entry starting at $in_t + // and advance $in_t to point to the next entry + ld1 {$T0a.2d, $T0b.2d, $T0c.2d, $T0d.2d}, [$in_t],#64 + + // $Mask_64 := ($Idx_ctr == $index)? All 1s : All 0s + cmp $Idx_ctr, $index + csetm $Mask_64, eq + + // continue loading ... + ld1 {$T0e.2d, $T0f.2d}, [$in_t],#32 + + // duplicate mask_64 into Mask (all 0s or all 1s) + dup $Mask.2d, $Mask_64 + + // [$Ra-$Rd] := (Mask == all 1s)? [$T0a-$T0d] : [$Ra-$Rd] + // i.e., values in output registers will remain the same if $Idx_ctr != $index + bit $Ra.16b, $T0a.16b, $Mask.16b + bit $Rb.16b, $T0b.16b, $Mask.16b + + bit $Rc.16b, $T0c.16b, $Mask.16b + bit $Rd.16b, $T0d.16b, $Mask.16b + + bit $Re.16b, $T0e.16b, $Mask.16b + bit $Rf.16b, $T0f.16b, $Mask.16b + + // If bit #4 is not 0 (i.e. idx_ctr < 16) loop back + tbz $Idx_ctr, #4, .Lselect_w5_loop + + // Write [$Ra-$Rf] to memory at the output pointer + st1 {$Ra.2d, $Rb.2d, $Rc.2d, $Rd.2d}, [$Val_in],#64 + st1 {$Re.2d, $Rf.2d}, [$Val_in] + + ret +.size ecp_nistz256_select_w5,.-ecp_nistz256_select_w5 + + +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_select_w7(uint64_t *val, uint64_t *in_t, int index); +.globl ecp_nistz256_select_w7 +.type ecp_nistz256_select_w7,%function +.align 4 +ecp_nistz256_select_w7: + AARCH64_VALID_CALL_TARGET + + // $Idx_ctr := 0; loop counter and incremented internal index + mov $Idx_ctr, #0 + + // [$Ra-$Rf] := 0 + movi $Ra.16b, #0 + movi $Rb.16b, #0 + movi $Rc.16b, #0 + movi $Rd.16b, #0 + +.Lselect_w7_loop: + // Loop 64 times. + + // Increment index (loop counter); tested at the end of the loop + add $Idx_ctr, $Idx_ctr, #1 + + // [$T0a-$T0d] := Load a (2*256-bit = 4*128-bit) table entry starting at $in_t + // and advance $in_t to point to the next entry + ld1 {$T0a.2d, $T0b.2d, $T0c.2d, $T0d.2d}, [$in_t],#64 + + // $Mask_64 := ($Idx_ctr == $index)? All 1s : All 0s + cmp $Idx_ctr, $index + csetm $Mask_64, eq + + // duplicate mask_64 into Mask (all 0s or all 1s) + dup $Mask.2d, $Mask_64 + + // [$Ra-$Rd] := (Mask == all 1s)? [$T0a-$T0d] : [$Ra-$Rd] + // i.e., values in output registers will remain the same if $Idx_ctr != $index + bit $Ra.16b, $T0a.16b, $Mask.16b + bit $Rb.16b, $T0b.16b, $Mask.16b + + bit $Rc.16b, $T0c.16b, $Mask.16b + bit $Rd.16b, $T0d.16b, $Mask.16b + + // If bit #6 is not 0 (i.e. idx_ctr < 64) loop back + tbz $Idx_ctr, #6, .Lselect_w7_loop + + // Write [$Ra-$Rd] to memory at the output pointer + st1 {$Ra.2d, $Rb.2d, $Rc.2d, $Rd.2d}, [$val] + + ret +.size ecp_nistz256_select_w7,.-ecp_nistz256_select_w7 +___ +} + +foreach (split("\n",$code)) { + s/\`([^\`]*)\`/eval $1/ge; + + print $_,"\n"; +} +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/p256-x86_64-asm.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/p256-x86_64-asm.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/p256-x86_64-asm.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/asm/p256-x86_64-asm.pl 2023-10-30 19:40:00.000000000 +0000 @@ -59,9 +59,10 @@ $code.=<<___; .text -.extern GFp_ia32cap_P +.extern OPENSSL_ia32cap_P # The polynomial +.section .rodata .align 64 .Lpoly: .quad 0xffffffffffffffff, 0x00000000ffffffff, 0x0000000000000000, 0xffffffff00000001 @@ -80,6 +81,7 @@ .quad 0xf3b9cac2fc632551, 0xbce6faada7179e84, 0xffffffffffffffff, 0xffffffff00000000 .LordK: .quad 0xccd1c8aaee00bc4f +.text ___ { @@ -90,58 +92,13 @@ $code.=<<___; ################################################################################ -# void GFp_nistz256_add(uint64_t res[4], uint64_t a[4], uint64_t b[4]); -.globl GFp_nistz256_add -.type GFp_nistz256_add,\@function,3 -.align 32 -GFp_nistz256_add: - push %r12 - push %r13 - - mov 8*0($a_ptr), $a0 - xor $t4, $t4 - mov 8*1($a_ptr), $a1 - mov 8*2($a_ptr), $a2 - mov 8*3($a_ptr), $a3 - lea .Lpoly(%rip), $a_ptr - - add 8*0($b_ptr), $a0 - adc 8*1($b_ptr), $a1 - mov $a0, $t0 - adc 8*2($b_ptr), $a2 - adc 8*3($b_ptr), $a3 - mov $a1, $t1 - adc \$0, $t4 - - sub 8*0($a_ptr), $a0 - mov $a2, $t2 - sbb 8*1($a_ptr), $a1 - sbb 8*2($a_ptr), $a2 - mov $a3, $t3 - sbb 8*3($a_ptr), $a3 - sbb \$0, $t4 - - cmovc $t0, $a0 - cmovc $t1, $a1 - mov $a0, 8*0($r_ptr) - cmovc $t2, $a2 - mov $a1, 8*1($r_ptr) - cmovc $t3, $a3 - mov $a2, 8*2($r_ptr) - mov $a3, 8*3($r_ptr) - - pop %r13 - pop %r12 - ret -.size GFp_nistz256_add,.-GFp_nistz256_add - -################################################################################ -# void GFp_nistz256_neg(uint64_t res[4], uint64_t a[4]); -.globl GFp_nistz256_neg -.type GFp_nistz256_neg,\@function,2 +# void ecp_nistz256_neg(uint64_t res[4], uint64_t a[4]); +.globl ecp_nistz256_neg +.type ecp_nistz256_neg,\@function,2 .align 32 -GFp_nistz256_neg: +ecp_nistz256_neg: .cfi_startproc + _CET_ENDBR push %r12 .cfi_push %r12 push %r13 @@ -189,7 +146,7 @@ .Lneg_epilogue: ret .cfi_endproc -.size GFp_nistz256_neg,.-GFp_nistz256_neg +.size ecp_nistz256_neg,.-ecp_nistz256_neg ___ } { @@ -200,19 +157,20 @@ $code.=<<___; ################################################################################ -# void GFp_p256_scalar_mul_mont( +# void ecp_nistz256_ord_mul_mont( # uint64_t res[4], # uint64_t a[4], # uint64_t b[4]); -.globl GFp_p256_scalar_mul_mont -.type GFp_p256_scalar_mul_mont,\@function,3 +.globl ecp_nistz256_ord_mul_mont +.type ecp_nistz256_ord_mul_mont,\@function,3 .align 32 -GFp_p256_scalar_mul_mont: +ecp_nistz256_ord_mul_mont: .cfi_startproc + _CET_ENDBR ___ $code.=<<___ if ($addx); - leaq GFp_ia32cap_P(%rip), %rcx + leaq OPENSSL_ia32cap_P(%rip), %rcx mov 8(%rcx), %rcx and \$0x80100, %ecx cmp \$0x80100, %ecx @@ -528,22 +486,23 @@ .Lord_mul_epilogue: ret .cfi_endproc -.size GFp_p256_scalar_mul_mont,.-GFp_p256_scalar_mul_mont +.size ecp_nistz256_ord_mul_mont,.-ecp_nistz256_ord_mul_mont ################################################################################ -# void GFp_p256_scalar_sqr_rep_mont( +# void ecp_nistz256_ord_sqr_mont( # uint64_t res[4], # uint64_t a[4], # uint64_t rep); -.globl GFp_p256_scalar_sqr_rep_mont -.type GFp_p256_scalar_sqr_rep_mont,\@function,3 +.globl ecp_nistz256_ord_sqr_mont +.type ecp_nistz256_ord_sqr_mont,\@function,3 .align 32 -GFp_p256_scalar_sqr_rep_mont: +ecp_nistz256_ord_sqr_mont: .cfi_startproc + _CET_ENDBR ___ $code.=<<___ if ($addx); - leaq GFp_ia32cap_P(%rip), %rcx + leaq OPENSSL_ia32cap_P(%rip), %rcx mov 8(%rcx), %rcx and \$0x80100, %ecx cmp \$0x80100, %ecx @@ -829,7 +788,7 @@ .Lord_sqr_epilogue: ret .cfi_endproc -.size GFp_p256_scalar_sqr_rep_mont,.-GFp_p256_scalar_sqr_rep_mont +.size ecp_nistz256_ord_sqr_mont,.-ecp_nistz256_ord_sqr_mont ___ $code.=<<___ if ($addx); @@ -1281,19 +1240,20 @@ $code.=<<___; ################################################################################ -# void GFp_nistz256_mul_mont( +# void ecp_nistz256_mul_mont( # uint64_t res[4], # uint64_t a[4], # uint64_t b[4]); -.globl GFp_nistz256_mul_mont -.type GFp_nistz256_mul_mont,\@function,3 +.globl ecp_nistz256_mul_mont +.type ecp_nistz256_mul_mont,\@function,3 .align 32 -GFp_nistz256_mul_mont: +ecp_nistz256_mul_mont: .cfi_startproc + _CET_ENDBR ___ $code.=<<___ if ($addx); - leaq GFp_ia32cap_P(%rip), %rcx + leaq OPENSSL_ia32cap_P(%rip), %rcx mov 8(%rcx), %rcx and \$0x80100, %ecx ___ @@ -1361,7 +1321,7 @@ .Lmul_epilogue: ret .cfi_endproc -.size GFp_nistz256_mul_mont,.-GFp_nistz256_mul_mont +.size ecp_nistz256_mul_mont,.-ecp_nistz256_mul_mont .type __ecp_nistz256_mul_montq,\@abi-omnipotent .align 32 @@ -1582,20 +1542,21 @@ .size __ecp_nistz256_mul_montq,.-__ecp_nistz256_mul_montq ################################################################################ -# void GFp_nistz256_sqr_mont( +# void ecp_nistz256_sqr_mont( # uint64_t res[4], # uint64_t a[4]); # we optimize the square according to S.Gueron and V.Krasnov, # "Speeding up Big-Number Squaring" -.globl GFp_nistz256_sqr_mont -.type GFp_nistz256_sqr_mont,\@function,2 +.globl ecp_nistz256_sqr_mont +.type ecp_nistz256_sqr_mont,\@function,2 .align 32 -GFp_nistz256_sqr_mont: +ecp_nistz256_sqr_mont: .cfi_startproc + _CET_ENDBR ___ $code.=<<___ if ($addx); - leaq GFp_ia32cap_P(%rip), %rcx + leaq OPENSSL_ia32cap_P(%rip), %rcx mov 8(%rcx), %rcx and \$0x80100, %ecx ___ @@ -1658,7 +1619,7 @@ .Lsqr_epilogue: ret .cfi_endproc -.size GFp_nistz256_sqr_mont,.-GFp_nistz256_sqr_mont +.size ecp_nistz256_sqr_mont,.-ecp_nistz256_sqr_mont .type __ecp_nistz256_sqr_montq,\@abi-omnipotent .align 32 @@ -2136,22 +2097,23 @@ $code.=<<___; ################################################################################ -# void GFp_nistz256_select_w5(uint64_t *val, uint64_t *in_t, crypto_word index); -.globl GFp_nistz256_select_w5 -.type GFp_nistz256_select_w5,\@abi-omnipotent +# void ecp_nistz256_select_w5(uint64_t *val, uint64_t *in_t, int index); +.globl ecp_nistz256_select_w5 +.type ecp_nistz256_select_w5,\@abi-omnipotent .align 32 -GFp_nistz256_select_w5: +ecp_nistz256_select_w5: .cfi_startproc + _CET_ENDBR ___ $code.=<<___ if ($avx>1); - leaq GFp_ia32cap_P(%rip), %rax + leaq OPENSSL_ia32cap_P(%rip), %rax mov 8(%rax), %rax test \$`1<<5`, %eax jnz .Lavx2_select_w5 ___ $code.=<<___ if ($win64); lea -0x88(%rsp), %rax -.LSEH_begin_GFp_nistz256_select_w5: +.LSEH_begin_ecp_nistz256_select_w5: .byte 0x48,0x8d,0x60,0xe0 #lea -0x20(%rax), %rsp .byte 0x0f,0x29,0x70,0xe0 #movaps %xmm6, -0x20(%rax) .byte 0x0f,0x29,0x78,0xf0 #movaps %xmm7, -0x10(%rax) @@ -2232,26 +2194,27 @@ $code.=<<___; ret .cfi_endproc -.LSEH_end_GFp_nistz256_select_w5: -.size GFp_nistz256_select_w5,.-GFp_nistz256_select_w5 +.LSEH_end_ecp_nistz256_select_w5: +.size ecp_nistz256_select_w5,.-ecp_nistz256_select_w5 ################################################################################ -# void GFp_nistz256_select_w7(uint64_t *val, uint64_t *in_t, crypto_word index); -.globl GFp_nistz256_select_w7 -.type GFp_nistz256_select_w7,\@abi-omnipotent +# void ecp_nistz256_select_w7(uint64_t *val, uint64_t *in_t, int index); +.globl ecp_nistz256_select_w7 +.type ecp_nistz256_select_w7,\@abi-omnipotent .align 32 -GFp_nistz256_select_w7: +ecp_nistz256_select_w7: .cfi_startproc + _CET_ENDBR ___ $code.=<<___ if ($avx>1); - leaq GFp_ia32cap_P(%rip), %rax + leaq OPENSSL_ia32cap_P(%rip), %rax mov 8(%rax), %rax test \$`1<<5`, %eax jnz .Lavx2_select_w7 ___ $code.=<<___ if ($win64); lea -0x88(%rsp), %rax -.LSEH_begin_GFp_nistz256_select_w7: +.LSEH_begin_ecp_nistz256_select_w7: .byte 0x48,0x8d,0x60,0xe0 #lea -0x20(%rax), %rsp .byte 0x0f,0x29,0x70,0xe0 #movaps %xmm6, -0x20(%rax) .byte 0x0f,0x29,0x78,0xf0 #movaps %xmm7, -0x10(%rax) @@ -2321,8 +2284,8 @@ $code.=<<___; ret .cfi_endproc -.LSEH_end_GFp_nistz256_select_w7: -.size GFp_nistz256_select_w7,.-GFp_nistz256_select_w7 +.LSEH_end_ecp_nistz256_select_w7: +.size ecp_nistz256_select_w7,.-ecp_nistz256_select_w7 ___ } if ($avx>1) { @@ -2333,10 +2296,10 @@ $code.=<<___; ################################################################################ -# void GFp_nistz256_avx2_select_w5(uint64_t *val, uint64_t *in_t, crypto_word index); -.type GFp_nistz256_avx2_select_w5,\@abi-omnipotent +# void ecp_nistz256_avx2_select_w5(uint64_t *val, uint64_t *in_t, int index); +.type ecp_nistz256_avx2_select_w5,\@abi-omnipotent .align 32 -GFp_nistz256_avx2_select_w5: +ecp_nistz256_avx2_select_w5: .cfi_startproc .Lavx2_select_w5: vzeroupper @@ -2344,7 +2307,7 @@ $code.=<<___ if ($win64); lea -0x88(%rsp), %rax mov %rsp,%r11 -.LSEH_begin_GFp_nistz256_avx2_select_w5: +.LSEH_begin_ecp_nistz256_avx2_select_w5: .byte 0x48,0x8d,0x60,0xe0 # lea -0x20(%rax), %rsp .byte 0xc5,0xf8,0x29,0x70,0xe0 # vmovaps %xmm6, -0x20(%rax) .byte 0xc5,0xf8,0x29,0x78,0xf0 # vmovaps %xmm7, -0x10(%rax) @@ -2426,8 +2389,8 @@ $code.=<<___; ret .cfi_endproc -.LSEH_end_GFp_nistz256_avx2_select_w5: -.size GFp_nistz256_avx2_select_w5,.-GFp_nistz256_avx2_select_w5 +.LSEH_end_ecp_nistz256_avx2_select_w5: +.size ecp_nistz256_avx2_select_w5,.-ecp_nistz256_avx2_select_w5 ___ } if ($avx>1) { @@ -2440,19 +2403,19 @@ $code.=<<___; ################################################################################ -# void GFp_nistz256_avx2_select_w7(uint64_t *val, uint64_t *in_t, crypto_word index); -.globl GFp_nistz256_avx2_select_w7 -.type GFp_nistz256_avx2_select_w7,\@abi-omnipotent +# void ecp_nistz256_avx2_select_w7(uint64_t *val, uint64_t *in_t, int index); +.type ecp_nistz256_avx2_select_w7,\@abi-omnipotent .align 32 -GFp_nistz256_avx2_select_w7: +ecp_nistz256_avx2_select_w7: .cfi_startproc .Lavx2_select_w7: + _CET_ENDBR vzeroupper ___ $code.=<<___ if ($win64); mov %rsp,%r11 lea -0x88(%rsp), %rax -.LSEH_begin_GFp_nistz256_avx2_select_w7: +.LSEH_begin_ecp_nistz256_avx2_select_w7: .byte 0x48,0x8d,0x60,0xe0 # lea -0x20(%rax), %rsp .byte 0xc5,0xf8,0x29,0x70,0xe0 # vmovaps %xmm6, -0x20(%rax) .byte 0xc5,0xf8,0x29,0x78,0xf0 # vmovaps %xmm7, -0x10(%rax) @@ -2549,18 +2512,8 @@ $code.=<<___; ret .cfi_endproc -.LSEH_end_GFp_nistz256_avx2_select_w7: -.size GFp_nistz256_avx2_select_w7,.-GFp_nistz256_avx2_select_w7 -___ -} else { -$code.=<<___; -.globl GFp_nistz256_avx2_select_w7 -.type GFp_nistz256_avx2_select_w7,\@function,3 -.align 32 -GFp_nistz256_avx2_select_w7: - .byte 0x0f,0x0b # ud2 - ret -.size GFp_nistz256_avx2_select_w7,.-GFp_nistz256_avx2_select_w7 +.LSEH_end_ecp_nistz256_avx2_select_w7: +.size ecp_nistz256_avx2_select_w7,.-ecp_nistz256_avx2_select_w7 ___ } {{{ @@ -2757,14 +2710,15 @@ $bias = 0; $code.=<<___; -.globl GFp_nistz256_point_double -.type GFp_nistz256_point_double,\@function,2 +.globl ecp_nistz256_point_double +.type ecp_nistz256_point_double,\@function,2 .align 32 -GFp_nistz256_point_double: +ecp_nistz256_point_double: .cfi_startproc + _CET_ENDBR ___ $code.=<<___ if ($addx); - leaq GFp_ia32cap_P(%rip), %rcx + leaq OPENSSL_ia32cap_P(%rip), %rcx mov 8(%rcx), %rcx and \$0x80100, %ecx cmp \$0x80100, %ecx @@ -2776,9 +2730,9 @@ $bias = 128; $code.=<<___; -.type GFp_nistz256_point_doublex,\@function,2 +.type ecp_nistz256_point_doublex,\@function,2 .align 32 -GFp_nistz256_point_doublex: +ecp_nistz256_point_doublex: .cfi_startproc .Lpoint_doublex: ___ @@ -2865,7 +2819,7 @@ call __ecp_nistz256_sqr_mont$x # p256_sqr_mont(res_y, S); ___ { -######## GFp_nistz256_div_by_2(res_y, res_y); ########################## +######## ecp_nistz256_div_by_2(res_y, res_y); ########################## # operate in 4-5-6-7 "name space" that matches squaring output # my ($poly1,$poly3)=($a_ptr,$t1); @@ -2988,7 +2942,7 @@ .Lpoint_double${x}_epilogue: ret .cfi_endproc -.size GFp_nistz256_point_double$sfx,.-GFp_nistz256_point_double$sfx +.size ecp_nistz256_point_double$sfx,.-ecp_nistz256_point_double$sfx ___ } &gen_double("q"); @@ -3009,14 +2963,15 @@ $bias = 0; $code.=<<___; -.globl GFp_nistz256_point_add -.type GFp_nistz256_point_add,\@function,3 +.globl ecp_nistz256_point_add +.type ecp_nistz256_point_add,\@function,3 .align 32 -GFp_nistz256_point_add: +ecp_nistz256_point_add: .cfi_startproc + _CET_ENDBR ___ $code.=<<___ if ($addx); - leaq GFp_ia32cap_P(%rip), %rcx + leaq OPENSSL_ia32cap_P(%rip), %rcx mov 8(%rcx), %rcx and \$0x80100, %ecx cmp \$0x80100, %ecx @@ -3028,9 +2983,9 @@ $bias = 128; $code.=<<___; -.type GFp_nistz256_point_addx,\@function,3 +.type ecp_nistz256_point_addx,\@function,3 .align 32 -GFp_nistz256_point_addx: +ecp_nistz256_point_addx: .cfi_startproc .Lpoint_addx: ___ @@ -3387,7 +3342,7 @@ .Lpoint_add${x}_epilogue: ret .cfi_endproc -.size GFp_nistz256_point_add$sfx,.-GFp_nistz256_point_add$sfx +.size ecp_nistz256_point_add$sfx,.-ecp_nistz256_point_add$sfx ___ } &gen_add("q"); @@ -3407,14 +3362,15 @@ $bias = 0; $code.=<<___; -.globl GFp_nistz256_point_add_affine -.type GFp_nistz256_point_add_affine,\@function,3 +.globl ecp_nistz256_point_add_affine +.type ecp_nistz256_point_add_affine,\@function,3 .align 32 -GFp_nistz256_point_add_affine: +ecp_nistz256_point_add_affine: .cfi_startproc + _CET_ENDBR ___ $code.=<<___ if ($addx); - leaq GFp_ia32cap_P(%rip), %rcx + leaq OPENSSL_ia32cap_P(%rip), %rcx mov 8(%rcx), %rcx and \$0x80100, %ecx cmp \$0x80100, %ecx @@ -3426,9 +3382,9 @@ $bias = 128; $code.=<<___; -.type GFp_nistz256_point_add_affinex,\@function,3 +.type ecp_nistz256_point_add_affinex,\@function,3 .align 32 -GFp_nistz256_point_add_affinex: +ecp_nistz256_point_add_affinex: .cfi_startproc .Lpoint_add_affinex: ___ @@ -3712,7 +3668,7 @@ .Ladd_affine${x}_epilogue: ret .cfi_endproc -.size GFp_nistz256_point_add_affine$sfx,.-GFp_nistz256_point_add_affine$sfx +.size ecp_nistz256_point_add_affine$sfx,.-ecp_nistz256_point_add_affine$sfx ___ } &gen_add_affine("q"); @@ -4013,17 +3969,17 @@ .section .pdata .align 4 - .rva .LSEH_begin_GFp_nistz256_neg - .rva .LSEH_end_GFp_nistz256_neg - .rva .LSEH_info_GFp_nistz256_neg - - .rva .LSEH_begin_GFp_p256_scalar_mul_mont - .rva .LSEH_end_GFp_p256_scalar_mul_mont - .rva .LSEH_info_GFp_p256_scalar_mul_mont - - .rva .LSEH_begin_GFp_p256_scalar_sqr_rep_mont - .rva .LSEH_end_GFp_p256_scalar_sqr_rep_mont - .rva .LSEH_info_GFp_p256_scalar_sqr_rep_mont + .rva .LSEH_begin_ecp_nistz256_neg + .rva .LSEH_end_ecp_nistz256_neg + .rva .LSEH_info_ecp_nistz256_neg + + .rva .LSEH_begin_ecp_nistz256_ord_mul_mont + .rva .LSEH_end_ecp_nistz256_ord_mul_mont + .rva .LSEH_info_ecp_nistz256_ord_mul_mont + + .rva .LSEH_begin_ecp_nistz256_ord_sqr_mont + .rva .LSEH_end_ecp_nistz256_ord_sqr_mont + .rva .LSEH_info_ecp_nistz256_ord_sqr_mont ___ $code.=<<___ if ($addx); .rva .LSEH_begin_ecp_nistz256_ord_mul_montx @@ -4035,71 +3991,71 @@ .rva .LSEH_info_ecp_nistz256_ord_sqr_montx ___ $code.=<<___; - .rva .LSEH_begin_GFp_nistz256_mul_mont - .rva .LSEH_end_GFp_nistz256_mul_mont - .rva .LSEH_info_GFp_nistz256_mul_mont - - .rva .LSEH_begin_GFp_nistz256_sqr_mont - .rva .LSEH_end_GFp_nistz256_sqr_mont - .rva .LSEH_info_GFp_nistz256_sqr_mont - - .rva .LSEH_begin_GFp_nistz256_select_w5 - .rva .LSEH_end_GFp_nistz256_select_w5 - .rva .LSEH_info_GFp_nistz256_select_wX - - .rva .LSEH_begin_GFp_nistz256_select_w7 - .rva .LSEH_end_GFp_nistz256_select_w7 - .rva .LSEH_info_GFp_nistz256_select_wX + .rva .LSEH_begin_ecp_nistz256_mul_mont + .rva .LSEH_end_ecp_nistz256_mul_mont + .rva .LSEH_info_ecp_nistz256_mul_mont + + .rva .LSEH_begin_ecp_nistz256_sqr_mont + .rva .LSEH_end_ecp_nistz256_sqr_mont + .rva .LSEH_info_ecp_nistz256_sqr_mont + + .rva .LSEH_begin_ecp_nistz256_select_w5 + .rva .LSEH_end_ecp_nistz256_select_w5 + .rva .LSEH_info_ecp_nistz256_select_wX + + .rva .LSEH_begin_ecp_nistz256_select_w7 + .rva .LSEH_end_ecp_nistz256_select_w7 + .rva .LSEH_info_ecp_nistz256_select_wX ___ $code.=<<___ if ($avx>1); - .rva .LSEH_begin_GFp_nistz256_avx2_select_w5 - .rva .LSEH_end_GFp_nistz256_avx2_select_w5 - .rva .LSEH_info_GFp_nistz256_avx2_select_wX - - .rva .LSEH_begin_GFp_nistz256_avx2_select_w7 - .rva .LSEH_end_GFp_nistz256_avx2_select_w7 - .rva .LSEH_info_GFp_nistz256_avx2_select_wX -___ -$code.=<<___; - .rva .LSEH_begin_GFp_nistz256_point_double - .rva .LSEH_end_GFp_nistz256_point_double - .rva .LSEH_info_GFp_nistz256_point_double - - .rva .LSEH_begin_GFp_nistz256_point_add - .rva .LSEH_end_GFp_nistz256_point_add - .rva .LSEH_info_GFp_nistz256_point_add - - .rva .LSEH_begin_GFp_nistz256_point_add_affine - .rva .LSEH_end_GFp_nistz256_point_add_affine - .rva .LSEH_info_GFp_nistz256_point_add_affine + .rva .LSEH_begin_ecp_nistz256_avx2_select_w5 + .rva .LSEH_end_ecp_nistz256_avx2_select_w5 + .rva .LSEH_info_ecp_nistz256_avx2_select_wX + + .rva .LSEH_begin_ecp_nistz256_avx2_select_w7 + .rva .LSEH_end_ecp_nistz256_avx2_select_w7 + .rva .LSEH_info_ecp_nistz256_avx2_select_wX +___ +$code.=<<___; + .rva .LSEH_begin_ecp_nistz256_point_double + .rva .LSEH_end_ecp_nistz256_point_double + .rva .LSEH_info_ecp_nistz256_point_double + + .rva .LSEH_begin_ecp_nistz256_point_add + .rva .LSEH_end_ecp_nistz256_point_add + .rva .LSEH_info_ecp_nistz256_point_add + + .rva .LSEH_begin_ecp_nistz256_point_add_affine + .rva .LSEH_end_ecp_nistz256_point_add_affine + .rva .LSEH_info_ecp_nistz256_point_add_affine ___ $code.=<<___ if ($addx); - .rva .LSEH_begin_GFp_nistz256_point_doublex - .rva .LSEH_end_GFp_nistz256_point_doublex - .rva .LSEH_info_GFp_nistz256_point_doublex - - .rva .LSEH_begin_GFp_nistz256_point_addx - .rva .LSEH_end_GFp_nistz256_point_addx - .rva .LSEH_info_GFp_nistz256_point_addx - - .rva .LSEH_begin_GFp_nistz256_point_add_affinex - .rva .LSEH_end_GFp_nistz256_point_add_affinex - .rva .LSEH_info_GFp_nistz256_point_add_affinex + .rva .LSEH_begin_ecp_nistz256_point_doublex + .rva .LSEH_end_ecp_nistz256_point_doublex + .rva .LSEH_info_ecp_nistz256_point_doublex + + .rva .LSEH_begin_ecp_nistz256_point_addx + .rva .LSEH_end_ecp_nistz256_point_addx + .rva .LSEH_info_ecp_nistz256_point_addx + + .rva .LSEH_begin_ecp_nistz256_point_add_affinex + .rva .LSEH_end_ecp_nistz256_point_add_affinex + .rva .LSEH_info_ecp_nistz256_point_add_affinex ___ $code.=<<___; .section .xdata .align 8 -.LSEH_info_GFp_nistz256_neg: +.LSEH_info_ecp_nistz256_neg: .byte 9,0,0,0 .rva short_handler .rva .Lneg_body,.Lneg_epilogue # HandlerData[] -.LSEH_info_GFp_p256_scalar_mul_mont: +.LSEH_info_ecp_nistz256_ord_mul_mont: .byte 9,0,0,0 .rva full_handler .rva .Lord_mul_body,.Lord_mul_epilogue # HandlerData[] .long 48,0 -.LSEH_info_GFp_p256_scalar_sqr_rep_mont: +.LSEH_info_ecp_nistz256_ord_sqr_mont: .byte 9,0,0,0 .rva full_handler .rva .Lord_sqr_body,.Lord_sqr_epilogue # HandlerData[] @@ -4118,17 +4074,17 @@ .long 48,0 ___ $code.=<<___; -.LSEH_info_GFp_nistz256_mul_mont: +.LSEH_info_ecp_nistz256_mul_mont: .byte 9,0,0,0 .rva full_handler .rva .Lmul_body,.Lmul_epilogue # HandlerData[] .long 48,0 -.LSEH_info_GFp_nistz256_sqr_mont: +.LSEH_info_ecp_nistz256_sqr_mont: .byte 9,0,0,0 .rva full_handler .rva .Lsqr_body,.Lsqr_epilogue # HandlerData[] .long 48,0 -.LSEH_info_GFp_nistz256_select_wX: +.LSEH_info_ecp_nistz256_select_wX: .byte 0x01,0x33,0x16,0x00 .byte 0x33,0xf8,0x09,0x00 #movaps 0x90(rsp),xmm15 .byte 0x2e,0xe8,0x08,0x00 #movaps 0x80(rsp),xmm14 @@ -4144,7 +4100,7 @@ .align 8 ___ $code.=<<___ if ($avx>1); -.LSEH_info_GFp_nistz256_avx2_select_wX: +.LSEH_info_ecp_nistz256_avx2_select_wX: .byte 0x01,0x36,0x17,0x0b .byte 0x36,0xf8,0x09,0x00 # vmovaps 0x90(rsp),xmm15 .byte 0x31,0xe8,0x08,0x00 # vmovaps 0x80(rsp),xmm14 @@ -4161,17 +4117,17 @@ .align 8 ___ $code.=<<___; -.LSEH_info_GFp_nistz256_point_double: +.LSEH_info_ecp_nistz256_point_double: .byte 9,0,0,0 .rva full_handler .rva .Lpoint_doubleq_body,.Lpoint_doubleq_epilogue # HandlerData[] .long 32*5+56,0 -.LSEH_info_GFp_nistz256_point_add: +.LSEH_info_ecp_nistz256_point_add: .byte 9,0,0,0 .rva full_handler .rva .Lpoint_addq_body,.Lpoint_addq_epilogue # HandlerData[] .long 32*18+56,0 -.LSEH_info_GFp_nistz256_point_add_affine: +.LSEH_info_ecp_nistz256_point_add_affine: .byte 9,0,0,0 .rva full_handler .rva .Ladd_affineq_body,.Ladd_affineq_epilogue # HandlerData[] @@ -4179,17 +4135,17 @@ ___ $code.=<<___ if ($addx); .align 8 -.LSEH_info_GFp_nistz256_point_doublex: +.LSEH_info_ecp_nistz256_point_doublex: .byte 9,0,0,0 .rva full_handler .rva .Lpoint_doublex_body,.Lpoint_doublex_epilogue # HandlerData[] .long 32*5+56,0 -.LSEH_info_GFp_nistz256_point_addx: +.LSEH_info_ecp_nistz256_point_addx: .byte 9,0,0,0 .rva full_handler .rva .Lpoint_addx_body,.Lpoint_addx_epilogue # HandlerData[] .long 32*18+56,0 -.LSEH_info_GFp_nistz256_point_add_affinex: +.LSEH_info_ecp_nistz256_point_add_affinex: .byte 9,0,0,0 .rva full_handler .rva .Ladd_affinex_body,.Ladd_affinex_epilogue # HandlerData[] @@ -4199,4 +4155,4 @@ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz256.c temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz256.c --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz256.c 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz256.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,349 +0,0 @@ -/* Copyright (c) 2014, Intel Corporation. - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ - -/* Developers and authors: - * Shay Gueron (1, 2), and Vlad Krasnov (1) - * (1) Intel Corporation, Israel Development Center - * (2) University of Haifa - * Reference: - * Shay Gueron and Vlad Krasnov - * "Fast Prime Field Elliptic Curve Cryptography with 256 Bit Primes" - * http://eprint.iacr.org/2013/816 */ - -#include "ecp_nistz256.h" - -#include "ecp_nistz.h" -#include "../bn/internal.h" -#include "../../limbs/limbs.inl" - -#if defined(__GNUC__) -#pragma GCC diagnostic ignored "-Wsign-conversion" -#endif - -/* Functions implemented in assembly */ -/* Modular neg: res = -a mod P */ -void GFp_nistz256_neg(Limb res[P256_LIMBS], const Limb a[P256_LIMBS]); - - -/* One converted into the Montgomery domain */ -static const Limb ONE[P256_LIMBS] = { - TOBN(0x00000000, 0x00000001), TOBN(0xffffffff, 0x00000000), - TOBN(0xffffffff, 0xffffffff), TOBN(0x00000000, 0xfffffffe), -}; - -static void copy_conditional(Limb dst[P256_LIMBS], - const Limb src[P256_LIMBS], Limb move) { - Limb mask1 = move; - Limb mask2 = ~mask1; - - dst[0] = (src[0] & mask1) ^ (dst[0] & mask2); - dst[1] = (src[1] & mask1) ^ (dst[1] & mask2); - dst[2] = (src[2] & mask1) ^ (dst[2] & mask2); - dst[3] = (src[3] & mask1) ^ (dst[3] & mask2); - if (P256_LIMBS == 8) { - dst[4] = (src[4] & mask1) ^ (dst[4] & mask2); - dst[5] = (src[5] & mask1) ^ (dst[5] & mask2); - dst[6] = (src[6] & mask1) ^ (dst[6] & mask2); - dst[7] = (src[7] & mask1) ^ (dst[7] & mask2); - } -} - -void GFp_nistz256_point_double(P256_POINT *r, const P256_POINT *a); - -#if defined(GFp_USE_LARGE_TABLE) -void GFp_nistz256_point_add_affine(P256_POINT *r, const P256_POINT *a, - const P256_POINT_AFFINE *b); -#endif - -void GFp_nistz256_point_add(P256_POINT *r, const P256_POINT *a, - const P256_POINT *b); - -// |GFp_nistz256_point_add| is defined in assembly language in X86-64 only. -#if !defined(OPENSSL_X86_64) - -static const BN_ULONG Q[P256_LIMBS] = { - TOBN(0xffffffff, 0xffffffff), - TOBN(0x00000000, 0xffffffff), - TOBN(0x00000000, 0x00000000), - TOBN(0xffffffff, 0x00000001), -}; - -static inline Limb is_equal(const Limb a[P256_LIMBS], const Limb b[P256_LIMBS]) { - return LIMBS_equal(a, b, P256_LIMBS); -} - -static inline Limb is_zero(const BN_ULONG a[P256_LIMBS]) { - return LIMBS_are_zero(a, P256_LIMBS); -} - -static inline void elem_mul_by_2(Limb r[P256_LIMBS], const Limb a[P256_LIMBS]) { - LIMBS_shl_mod(r, a, Q, P256_LIMBS); -} - -static inline void elem_mul_mont(Limb r[P256_LIMBS], const Limb a[P256_LIMBS], - const Limb b[P256_LIMBS]) { - GFp_nistz256_mul_mont(r, a, b); -} - -static inline void elem_sqr_mont(Limb r[P256_LIMBS], const Limb a[P256_LIMBS]) { - GFp_nistz256_sqr_mont(r, a); -} - -static inline void elem_sub(Limb r[P256_LIMBS], const Limb a[P256_LIMBS], - const Limb b[P256_LIMBS]) { - LIMBS_sub_mod(r, a, b, Q, P256_LIMBS); -} - -/* Point addition: r = a+b */ -void GFp_nistz256_point_add(P256_POINT *r, const P256_POINT *a, const P256_POINT *b) { - BN_ULONG U2[P256_LIMBS], S2[P256_LIMBS]; - BN_ULONG U1[P256_LIMBS], S1[P256_LIMBS]; - BN_ULONG Z1sqr[P256_LIMBS]; - BN_ULONG Z2sqr[P256_LIMBS]; - BN_ULONG H[P256_LIMBS], R[P256_LIMBS]; - BN_ULONG Hsqr[P256_LIMBS]; - BN_ULONG Rsqr[P256_LIMBS]; - BN_ULONG Hcub[P256_LIMBS]; - - BN_ULONG res_x[P256_LIMBS]; - BN_ULONG res_y[P256_LIMBS]; - BN_ULONG res_z[P256_LIMBS]; - - const BN_ULONG *in1_x = a->X; - const BN_ULONG *in1_y = a->Y; - const BN_ULONG *in1_z = a->Z; - - const BN_ULONG *in2_x = b->X; - const BN_ULONG *in2_y = b->Y; - const BN_ULONG *in2_z = b->Z; - - BN_ULONG in1infty = is_zero(a->Z); - BN_ULONG in2infty = is_zero(b->Z); - - elem_sqr_mont(Z2sqr, in2_z); /* Z2^2 */ - elem_sqr_mont(Z1sqr, in1_z); /* Z1^2 */ - - elem_mul_mont(S1, Z2sqr, in2_z); /* S1 = Z2^3 */ - elem_mul_mont(S2, Z1sqr, in1_z); /* S2 = Z1^3 */ - - elem_mul_mont(S1, S1, in1_y); /* S1 = Y1*Z2^3 */ - elem_mul_mont(S2, S2, in2_y); /* S2 = Y2*Z1^3 */ - elem_sub(R, S2, S1); /* R = S2 - S1 */ - - elem_mul_mont(U1, in1_x, Z2sqr); /* U1 = X1*Z2^2 */ - elem_mul_mont(U2, in2_x, Z1sqr); /* U2 = X2*Z1^2 */ - elem_sub(H, U2, U1); /* H = U2 - U1 */ - - BN_ULONG is_exceptional = is_equal(U1, U2) & ~in1infty & ~in2infty; - if (is_exceptional) { - if (is_equal(S1, S2)) { - GFp_nistz256_point_double(r, a); - } else { - limbs_zero(r->X, P256_LIMBS); - limbs_zero(r->Y, P256_LIMBS); - limbs_zero(r->Z, P256_LIMBS); - } - return; - } - - elem_sqr_mont(Rsqr, R); /* R^2 */ - elem_mul_mont(res_z, H, in1_z); /* Z3 = H*Z1*Z2 */ - elem_sqr_mont(Hsqr, H); /* H^2 */ - elem_mul_mont(res_z, res_z, in2_z); /* Z3 = H*Z1*Z2 */ - elem_mul_mont(Hcub, Hsqr, H); /* H^3 */ - - elem_mul_mont(U2, U1, Hsqr); /* U1*H^2 */ - elem_mul_by_2(Hsqr, U2); /* 2*U1*H^2 */ - - elem_sub(res_x, Rsqr, Hsqr); - elem_sub(res_x, res_x, Hcub); - - elem_sub(res_y, U2, res_x); - - elem_mul_mont(S2, S1, Hcub); - elem_mul_mont(res_y, R, res_y); - elem_sub(res_y, res_y, S2); - - copy_conditional(res_x, in2_x, in1infty); - copy_conditional(res_y, in2_y, in1infty); - copy_conditional(res_z, in2_z, in1infty); - - copy_conditional(res_x, in1_x, in2infty); - copy_conditional(res_y, in1_y, in2infty); - copy_conditional(res_z, in1_z, in2infty); - - limbs_copy(r->X, res_x, P256_LIMBS); - limbs_copy(r->Y, res_y, P256_LIMBS); - limbs_copy(r->Z, res_z, P256_LIMBS); -} -#endif - -/* r = p * p_scalar */ -void GFp_nistz256_point_mul(P256_POINT *r, const Limb p_scalar[P256_LIMBS], - const Limb p_x[P256_LIMBS], - const Limb p_y[P256_LIMBS]) { - static const size_t kWindowSize = 5; - static const crypto_word kMask = (1 << (5 /* kWindowSize */ + 1)) - 1; - - uint8_t p_str[(P256_LIMBS * sizeof(Limb)) + 1]; - gfp_little_endian_bytes_from_scalar(p_str, sizeof(p_str) / sizeof(p_str[0]), - p_scalar, P256_LIMBS); - - /* A |P256_POINT| is (3 * 32) = 96 bytes, and the 64-byte alignment should - * add no more than 63 bytes of overhead. Thus, |table| should require - * ~1599 ((96 * 16) + 63) bytes of stack space. */ - alignas(64) P256_POINT table[16]; - - /* table[0] is implicitly (0,0,0) (the point at infinity), therefore it is - * not stored. All other values are actually stored with an offset of -1 in - * table. */ - P256_POINT *row = table; - - limbs_copy(row[1 - 1].X, p_x, P256_LIMBS); - limbs_copy(row[1 - 1].Y, p_y, P256_LIMBS); - limbs_copy(row[1 - 1].Z, ONE, P256_LIMBS); - - GFp_nistz256_point_double(&row[2 - 1], &row[1 - 1]); - GFp_nistz256_point_add(&row[3 - 1], &row[2 - 1], &row[1 - 1]); - GFp_nistz256_point_double(&row[4 - 1], &row[2 - 1]); - GFp_nistz256_point_double(&row[6 - 1], &row[3 - 1]); - GFp_nistz256_point_double(&row[8 - 1], &row[4 - 1]); - GFp_nistz256_point_double(&row[12 - 1], &row[6 - 1]); - GFp_nistz256_point_add(&row[5 - 1], &row[4 - 1], &row[1 - 1]); - GFp_nistz256_point_add(&row[7 - 1], &row[6 - 1], &row[1 - 1]); - GFp_nistz256_point_add(&row[9 - 1], &row[8 - 1], &row[1 - 1]); - GFp_nistz256_point_add(&row[13 - 1], &row[12 - 1], &row[1 - 1]); - GFp_nistz256_point_double(&row[14 - 1], &row[7 - 1]); - GFp_nistz256_point_double(&row[10 - 1], &row[5 - 1]); - GFp_nistz256_point_add(&row[15 - 1], &row[14 - 1], &row[1 - 1]); - GFp_nistz256_point_add(&row[11 - 1], &row[10 - 1], &row[1 - 1]); - GFp_nistz256_point_double(&row[16 - 1], &row[8 - 1]); - - Limb tmp[P256_LIMBS]; - alignas(32) P256_POINT h; - static const size_t START_INDEX = 256 - 1; - size_t index = START_INDEX; - - crypto_word raw_wvalue; - crypto_word recoded_is_negative; - crypto_word recoded; - - raw_wvalue = p_str[(index - 1) / 8]; - raw_wvalue = (raw_wvalue >> ((index - 1) % 8)) & kMask; - booth_recode(&recoded_is_negative, &recoded, raw_wvalue, kWindowSize); - dev_assert_secret(!recoded_is_negative); - GFp_nistz256_select_w5(r, table, recoded); - - while (index >= kWindowSize) { - if (index != START_INDEX) { - size_t off = (index - 1) / 8; - - raw_wvalue = p_str[off] | p_str[off + 1] << 8; - raw_wvalue = (raw_wvalue >> ((index - 1) % 8)) & kMask; - booth_recode(&recoded_is_negative, &recoded, raw_wvalue, kWindowSize); - - GFp_nistz256_select_w5(&h, table, recoded); - GFp_nistz256_neg(tmp, h.Y); - copy_conditional(h.Y, tmp, recoded_is_negative); - - GFp_nistz256_point_add(r, r, &h); - } - - index -= kWindowSize; - - GFp_nistz256_point_double(r, r); - GFp_nistz256_point_double(r, r); - GFp_nistz256_point_double(r, r); - GFp_nistz256_point_double(r, r); - GFp_nistz256_point_double(r, r); - } - - /* Final window */ - raw_wvalue = p_str[0]; - raw_wvalue = (raw_wvalue << 1) & kMask; - - booth_recode(&recoded_is_negative, &recoded, raw_wvalue, kWindowSize); - GFp_nistz256_select_w5(&h, table, recoded); - GFp_nistz256_neg(tmp, h.Y); - copy_conditional(h.Y, tmp, recoded_is_negative); - GFp_nistz256_point_add(r, r, &h); -} - -#if defined(GFp_USE_LARGE_TABLE) - -/* Precomputed tables for the default generator */ -#include "ecp_nistz256_table.inl" - -static const size_t kWindowSize = 7; - -static inline void select_precomputed(P256_POINT_AFFINE *p, size_t i, - crypto_word raw_wvalue) { - crypto_word recoded_is_negative; - crypto_word recoded; - booth_recode(&recoded_is_negative, &recoded, raw_wvalue, kWindowSize); - GFp_nistz256_select_w7(p, GFp_nistz256_precomputed[i], recoded); - Limb neg_y[P256_LIMBS]; - GFp_nistz256_neg(neg_y, p->Y); - copy_conditional(p->Y, neg_y, recoded_is_negative); -} - -/* This assumes that |x| and |y| have been each been reduced to their minimal - * unique representations. */ -static Limb is_infinity(const Limb x[P256_LIMBS], - const Limb y[P256_LIMBS]) { - Limb acc = 0; - for (size_t i = 0; i < P256_LIMBS; ++i) { - acc |= x[i] | y[i]; - } - return constant_time_is_zero_w(acc); -} - -void GFp_nistz256_point_mul_base(P256_POINT *r, - const Limb g_scalar[P256_LIMBS]) { - static const crypto_word kMask = (1 << (7 /* kWindowSize */ + 1)) - 1; - - uint8_t p_str[(P256_LIMBS * sizeof(Limb)) + 1]; - gfp_little_endian_bytes_from_scalar(p_str, sizeof(p_str) / sizeof(p_str[0]), - g_scalar, P256_LIMBS); - - /* First window */ - size_t index = kWindowSize; - - alignas(32) P256_POINT_AFFINE t; - - crypto_word raw_wvalue = (p_str[0] << 1) & kMask; - select_precomputed(&t, 0, raw_wvalue); - - alignas(32) P256_POINT p; - limbs_copy(p.X, t.X, P256_LIMBS); - limbs_copy(p.Y, t.Y, P256_LIMBS); - limbs_copy(p.Z, ONE, P256_LIMBS); - /* If it is at the point at infinity then p.p.X will be zero. */ - copy_conditional(p.Z, p.X, is_infinity(p.X, p.Y)); - - for (size_t i = 1; i < 37; i++) { - size_t off = (index - 1) / 8; - raw_wvalue = p_str[off] | p_str[off + 1] << 8; - raw_wvalue = (raw_wvalue >> ((index - 1) % 8)) & kMask; - index += kWindowSize; - select_precomputed(&t, i, raw_wvalue); - GFp_nistz256_point_add_affine(&p, &p, &t); - } - - limbs_copy(r->X, p.X, P256_LIMBS); - limbs_copy(r->Y, p.Y, P256_LIMBS); - limbs_copy(r->Z, p.Z, P256_LIMBS); -} - -#endif diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz256.h temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz256.h --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz256.h 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz256.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,54 +0,0 @@ -/* Copyright (c) 2014, Intel Corporation. - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ - -#ifndef OPENSSL_HEADER_EC_ECP_NISTZ256_H -#define OPENSSL_HEADER_EC_ECP_NISTZ256_H - -#include "../../limbs/limbs.h" - -// Keep this in sync with p256.rs. -#if defined(OPENSSL_AARCH64) || defined(OPENSSL_X86) || defined(OPENSSL_X86_64) -#define GFp_USE_LARGE_TABLE -#endif - -#define P256_LIMBS (256u / LIMB_BITS) - -typedef struct { - Limb X[P256_LIMBS]; - Limb Y[P256_LIMBS]; - Limb Z[P256_LIMBS]; -} P256_POINT; - -#if defined(GFp_USE_LARGE_TABLE) -typedef struct { - Limb X[P256_LIMBS]; - Limb Y[P256_LIMBS]; -} P256_POINT_AFFINE; -#endif - -typedef Limb PRECOMP256_ROW[64 * 2 * P256_LIMBS]; // 64 (x, y) entries. - -void GFp_nistz256_mul_mont(Limb res[P256_LIMBS], const Limb a[P256_LIMBS], - const Limb b[P256_LIMBS]); -void GFp_nistz256_sqr_mont(Limb res[P256_LIMBS], const Limb a[P256_LIMBS]); - -/* Functions that perform constant time access to the precomputed tables */ -void GFp_nistz256_select_w5(P256_POINT *out, const P256_POINT table[16], - crypto_word index); - -#if defined(GFp_USE_LARGE_TABLE) -void GFp_nistz256_select_w7(P256_POINT_AFFINE *out, const PRECOMP256_ROW table, crypto_word index); -#endif - -#endif /* OPENSSL_HEADER_EC_ECP_NISTZ256_H */ diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz256_table.inl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz256_table.inl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz256_table.inl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz256_table.inl 1970-01-01 00:00:00.000000000 +0000 @@ -1,9501 +0,0 @@ -/* Copyright (c) 2015, Intel Inc. - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ - -// This is the precomputed constant time access table for the code in -// GFp_nistz256.c, for the default generator. The table consists of 37 -// subtables, each subtable contains 64 affine points. The affine points are -// encoded as eight uint64's, four for the x coordinate and four for the y. -// Both values are in little-endian order. There are 37 tables because a -// signed, 6-bit recoding of the scalar is used and ceil(256/(6 + 1)) = 37. -// Within each table there are 64 values because the 6-bit recoding can take -// 64 values, ignoring the sign bit, which is implemented by performing a -// negation of the affine point when required. We would like to align it to 2MB -// in order to increase the chances of using a large page but that appears to -// lead to invalid ELF files being produced. - -// This file is generated by make_p256-x86_64-table.go. - -static const alignas(4096) PRECOMP256_ROW GFp_nistz256_precomputed[37] = { - {TOBN(0x79e730d4, 0x18a9143c), TOBN(0x75ba95fc, 0x5fedb601), - TOBN(0x79fb732b, 0x77622510), TOBN(0x18905f76, 0xa53755c6), - TOBN(0xddf25357, 0xce95560a), TOBN(0x8b4ab8e4, 0xba19e45c), - TOBN(0xd2e88688, 0xdd21f325), TOBN(0x8571ff18, 0x25885d85), - TOBN(0x850046d4, 0x10ddd64d), TOBN(0xaa6ae3c1, 0xa433827d), - TOBN(0x73220503, 0x8d1490d9), TOBN(0xf6bb32e4, 0x3dcf3a3b), - TOBN(0x2f3648d3, 0x61bee1a5), TOBN(0x152cd7cb, 0xeb236ff8), - TOBN(0x19a8fb0e, 0x92042dbe), TOBN(0x78c57751, 0x0a5b8a3b), - TOBN(0xffac3f90, 0x4eebc127), TOBN(0xb027f84a, 0x087d81fb), - TOBN(0x66ad77dd, 0x87cbbc98), TOBN(0x26936a3f, 0xb6ff747e), - TOBN(0xb04c5c1f, 0xc983a7eb), TOBN(0x583e47ad, 0x0861fe1a), - TOBN(0x78820831, 0x1a2ee98e), TOBN(0xd5f06a29, 0xe587cc07), - TOBN(0x74b0b50d, 0x46918dcc), TOBN(0x4650a6ed, 0xc623c173), - TOBN(0x0cdaacac, 0xe8100af2), TOBN(0x577362f5, 0x41b0176b), - TOBN(0x2d96f24c, 0xe4cbaba6), TOBN(0x17628471, 0xfad6f447), - TOBN(0x6b6c36de, 0xe5ddd22e), TOBN(0x84b14c39, 0x4c5ab863), - TOBN(0xbe1b8aae, 0xc45c61f5), TOBN(0x90ec649a, 0x94b9537d), - TOBN(0x941cb5aa, 0xd076c20c), TOBN(0xc9079605, 0x890523c8), - TOBN(0xeb309b4a, 0xe7ba4f10), TOBN(0x73c568ef, 0xe5eb882b), - TOBN(0x3540a987, 0x7e7a1f68), TOBN(0x73a076bb, 0x2dd1e916), - TOBN(0x40394737, 0x3e77664a), TOBN(0x55ae744f, 0x346cee3e), - TOBN(0xd50a961a, 0x5b17a3ad), TOBN(0x13074b59, 0x54213673), - TOBN(0x93d36220, 0xd377e44b), TOBN(0x299c2b53, 0xadff14b5), - TOBN(0xf424d44c, 0xef639f11), TOBN(0xa4c9916d, 0x4a07f75f), - TOBN(0x0746354e, 0xa0173b4f), TOBN(0x2bd20213, 0xd23c00f7), - TOBN(0xf43eaab5, 0x0c23bb08), TOBN(0x13ba5119, 0xc3123e03), - TOBN(0x2847d030, 0x3f5b9d4d), TOBN(0x6742f2f2, 0x5da67bdd), - TOBN(0xef933bdc, 0x77c94195), TOBN(0xeaedd915, 0x6e240867), - TOBN(0x27f14cd1, 0x9499a78f), TOBN(0x462ab5c5, 0x6f9b3455), - TOBN(0x8f90f02a, 0xf02cfc6b), TOBN(0xb763891e, 0xb265230d), - TOBN(0xf59da3a9, 0x532d4977), TOBN(0x21e3327d, 0xcf9eba15), - TOBN(0x123c7b84, 0xbe60bbf0), TOBN(0x56ec12f2, 0x7706df76), - TOBN(0x75c96e8f, 0x264e20e8), TOBN(0xabe6bfed, 0x59a7a841), - TOBN(0x2cc09c04, 0x44c8eb00), TOBN(0xe05b3080, 0xf0c4e16b), - TOBN(0x1eb7777a, 0xa45f3314), TOBN(0x56af7bed, 0xce5d45e3), - TOBN(0x2b6e019a, 0x88b12f1a), TOBN(0x086659cd, 0xfd835f9b), - TOBN(0x2c18dbd1, 0x9dc21ec8), TOBN(0x98f9868a, 0x0fcf8139), - TOBN(0x737d2cd6, 0x48250b49), TOBN(0xcc61c947, 0x24b3428f), - TOBN(0x0c2b4078, 0x80dd9e76), TOBN(0xc43a8991, 0x383fbe08), - TOBN(0x5f7d2d65, 0x779be5d2), TOBN(0x78719a54, 0xeb3b4ab5), - TOBN(0xea7d260a, 0x6245e404), TOBN(0x9de40795, 0x6e7fdfe0), - TOBN(0x1ff3a415, 0x8dac1ab5), TOBN(0x3e7090f1, 0x649c9073), - TOBN(0x1a768561, 0x2b944e88), TOBN(0x250f939e, 0xe57f61c8), - TOBN(0x0c0daa89, 0x1ead643d), TOBN(0x68930023, 0xe125b88e), - TOBN(0x04b71aa7, 0xd2697768), TOBN(0xabdedef5, 0xca345a33), - TOBN(0x2409d29d, 0xee37385e), TOBN(0x4ee1df77, 0xcb83e156), - TOBN(0x0cac12d9, 0x1cbb5b43), TOBN(0x170ed2f6, 0xca895637), - TOBN(0x28228cfa, 0x8ade6d66), TOBN(0x7ff57c95, 0x53238aca), - TOBN(0xccc42563, 0x4b2ed709), TOBN(0x0e356769, 0x856fd30d), - TOBN(0xbcbcd43f, 0x559e9811), TOBN(0x738477ac, 0x5395b759), - TOBN(0x35752b90, 0xc00ee17f), TOBN(0x68748390, 0x742ed2e3), - TOBN(0x7cd06422, 0xbd1f5bc1), TOBN(0xfbc08769, 0xc9e7b797), - TOBN(0xa242a35b, 0xb0cf664a), TOBN(0x126e48f7, 0x7f9707e3), - TOBN(0x1717bf54, 0xc6832660), TOBN(0xfaae7332, 0xfd12c72e), - TOBN(0x27b52db7, 0x995d586b), TOBN(0xbe29569e, 0x832237c2), - TOBN(0xe8e4193e, 0x2a65e7db), TOBN(0x152706dc, 0x2eaa1bbb), - TOBN(0x72bcd8b7, 0xbc60055b), TOBN(0x03cc23ee, 0x56e27e4b), - TOBN(0xee337424, 0xe4819370), TOBN(0xe2aa0e43, 0x0ad3da09), - TOBN(0x40b8524f, 0x6383c45d), TOBN(0xd7663554, 0x42a41b25), - TOBN(0x64efa6de, 0x778a4797), TOBN(0x2042170a, 0x7079adf4), - TOBN(0x808b0b65, 0x0bc6fb80), TOBN(0x5882e075, 0x3ffe2e6b), - TOBN(0xd5ef2f7c, 0x2c83f549), TOBN(0x54d63c80, 0x9103b723), - TOBN(0xf2f11bd6, 0x52a23f9b), TOBN(0x3670c319, 0x4b0b6587), - TOBN(0x55c4623b, 0xb1580e9e), TOBN(0x64edf7b2, 0x01efe220), - TOBN(0x97091dcb, 0xd53c5c9d), TOBN(0xf17624b6, 0xac0a177b), - TOBN(0xb0f13975, 0x2cfe2dff), TOBN(0xc1a35c0a, 0x6c7a574e), - TOBN(0x227d3146, 0x93e79987), TOBN(0x0575bf30, 0xe89cb80e), - TOBN(0x2f4e247f, 0x0d1883bb), TOBN(0xebd51226, 0x3274c3d0), - TOBN(0x5f3e51c8, 0x56ada97a), TOBN(0x4afc964d, 0x8f8b403e), - TOBN(0xa6f247ab, 0x412e2979), TOBN(0x675abd1b, 0x6f80ebda), - TOBN(0x66a2bd72, 0x5e485a1d), TOBN(0x4b2a5caf, 0x8f4f0b3c), - TOBN(0x2626927f, 0x1b847bba), TOBN(0x6c6fc7d9, 0x0502394d), - TOBN(0xfea912ba, 0xa5659ae8), TOBN(0x68363aba, 0x25e1a16e), - TOBN(0xb8842277, 0x752c41ac), TOBN(0xfe545c28, 0x2897c3fc), - TOBN(0x2d36e9e7, 0xdc4c696b), TOBN(0x5806244a, 0xfba977c5), - TOBN(0x85665e9b, 0xe39508c1), TOBN(0xf720ee25, 0x6d12597b), - TOBN(0x8a979129, 0xd2337a31), TOBN(0x5916868f, 0x0f862bdc), - TOBN(0x048099d9, 0x5dd283ba), TOBN(0xe2d1eeb6, 0xfe5bfb4e), - TOBN(0x82ef1c41, 0x7884005d), TOBN(0xa2d4ec17, 0xffffcbae), - TOBN(0x9161c53f, 0x8aa95e66), TOBN(0x5ee104e1, 0xc5fee0d0), - TOBN(0x562e4cec, 0xc135b208), TOBN(0x74e1b265, 0x4783f47d), - TOBN(0x6d2a506c, 0x5a3f3b30), TOBN(0xecead9f4, 0xc16762fc), - TOBN(0xf29dd4b2, 0xe286e5b9), TOBN(0x1b0fadc0, 0x83bb3c61), - TOBN(0x7a75023e, 0x7fac29a4), TOBN(0xc086d5f1, 0xc9477fa3), - TOBN(0x0fc61135, 0x2f6f3076), TOBN(0xc99ffa23, 0xe3912a9a), - TOBN(0x6a0b0685, 0xd2f8ba3d), TOBN(0xfdc777e8, 0xe93358a4), - TOBN(0x94a787bb, 0x35415f04), TOBN(0x640c2d6a, 0x4d23fea4), - TOBN(0x9de917da, 0x153a35b5), TOBN(0x793e8d07, 0x5d5cd074), - TOBN(0xf4f87653, 0x2de45068), TOBN(0x37c7a7e8, 0x9e2e1f6e), - TOBN(0xd0825fa2, 0xa3584069), TOBN(0xaf2cea7c, 0x1727bf42), - TOBN(0x0360a4fb, 0x9e4785a9), TOBN(0xe5fda49c, 0x27299f4a), - TOBN(0x48068e13, 0x71ac2f71), TOBN(0x83d0687b, 0x9077666f), - TOBN(0x6d3883b2, 0x15d02819), TOBN(0x6d0d7550, 0x40dd9a35), - TOBN(0x61d7cbf9, 0x1d2b469f), TOBN(0xf97b232f, 0x2efc3115), - TOBN(0xa551d750, 0xb24bcbc7), TOBN(0x11ea4949, 0x88a1e356), - TOBN(0x7669f031, 0x93cb7501), TOBN(0x595dc55e, 0xca737b8a), - TOBN(0xa4a319ac, 0xd837879f), TOBN(0x6fc1b49e, 0xed6b67b0), - TOBN(0xe3959933, 0x32f1f3af), TOBN(0x966742eb, 0x65432a2e), - TOBN(0x4b8dc9fe, 0xb4966228), TOBN(0x96cc6312, 0x43f43950), - TOBN(0x12068859, 0xc9b731ee), TOBN(0x7b948dc3, 0x56f79968), - TOBN(0x61e4ad32, 0xed1f8008), TOBN(0xe6c9267a, 0xd8b17538), - TOBN(0x1ac7c5eb, 0x857ff6fb), TOBN(0x994baaa8, 0x55f2fb10), - TOBN(0x84cf14e1, 0x1d248018), TOBN(0x5a39898b, 0x628ac508), - TOBN(0x14fde97b, 0x5fa944f5), TOBN(0xed178030, 0xd12e5ac7), - TOBN(0x042c2af4, 0x97e2feb4), TOBN(0xd36a42d7, 0xaebf7313), - TOBN(0x49d2c9eb, 0x084ffdd7), TOBN(0x9f8aa54b, 0x2ef7c76a), - TOBN(0x9200b7ba, 0x09895e70), TOBN(0x3bd0c66f, 0xddb7fb58), - TOBN(0x2d97d108, 0x78eb4cbb), TOBN(0x2d431068, 0xd84bde31), - TOBN(0x4b523eb7, 0x172ccd1f), TOBN(0x7323cb28, 0x30a6a892), - TOBN(0x97082ec0, 0xcfe153eb), TOBN(0xe97f6b6a, 0xf2aadb97), - TOBN(0x1d3d393e, 0xd1a83da1), TOBN(0xa6a7f9c7, 0x804b2a68), - TOBN(0x4a688b48, 0x2d0cb71e), TOBN(0xa9b4cc5f, 0x40585278), - TOBN(0x5e5db46a, 0xcb66e132), TOBN(0xf1be963a, 0x0d925880), - TOBN(0x944a7027, 0x0317b9e2), TOBN(0xe266f959, 0x48603d48), - TOBN(0x98db6673, 0x5c208899), TOBN(0x90472447, 0xa2fb18a3), - TOBN(0x8a966939, 0x777c619f), TOBN(0x3798142a, 0x2a3be21b), - TOBN(0xb4241cb1, 0x3298b343), TOBN(0xa3a14e49, 0xb44f65a1), - TOBN(0xc5f4d6cd, 0x3ac77acd), TOBN(0xd0288cb5, 0x52b6fc3c), - TOBN(0xd5cc8c2f, 0x1c040abc), TOBN(0xb675511e, 0x06bf9b4a), - TOBN(0xd667da37, 0x9b3aa441), TOBN(0x460d45ce, 0x51601f72), - TOBN(0xe2f73c69, 0x6755ff89), TOBN(0xdd3cf7e7, 0x473017e6), - TOBN(0x8ef5689d, 0x3cf7600d), TOBN(0x948dc4f8, 0xb1fc87b4), - TOBN(0xd9e9fe81, 0x4ea53299), TOBN(0x2d921ca2, 0x98eb6028), - TOBN(0xfaecedfd, 0x0c9803fc), TOBN(0xf38ae891, 0x4d7b4745), - TOBN(0xd8c5fccf, 0xc5e3a3d8), TOBN(0xbefd904c, 0x4079dfbf), - TOBN(0xbc6d6a58, 0xfead0197), TOBN(0x39227077, 0x695532a4), - TOBN(0x09e23e6d, 0xdbef42f5), TOBN(0x7e449b64, 0x480a9908), - TOBN(0x7b969c1a, 0xad9a2e40), TOBN(0x6231d792, 0x9591c2a4), - TOBN(0x87151456, 0x0f664534), TOBN(0x85ceae7c, 0x4b68f103), - TOBN(0xac09c4ae, 0x65578ab9), TOBN(0x33ec6868, 0xf044b10c), - TOBN(0x6ac4832b, 0x3a8ec1f1), TOBN(0x5509d128, 0x5847d5ef), - TOBN(0xf909604f, 0x763f1574), TOBN(0xb16c4303, 0xc32f63c4), - TOBN(0xb6ab2014, 0x7ca23cd3), TOBN(0xcaa7a5c6, 0xa391849d), - TOBN(0x5b0673a3, 0x75678d94), TOBN(0xc982ddd4, 0xdd303e64), - TOBN(0xfd7b000b, 0x5db6f971), TOBN(0xbba2cb1f, 0x6f876f92), - TOBN(0xc77332a3, 0x3c569426), TOBN(0xa159100c, 0x570d74f8), - TOBN(0xfd16847f, 0xdec67ef5), TOBN(0x742ee464, 0x233e76b7), - TOBN(0x0b8e4134, 0xefc2b4c8), TOBN(0xca640b86, 0x42a3e521), - TOBN(0x653a0190, 0x8ceb6aa9), TOBN(0x313c300c, 0x547852d5), - TOBN(0x24e4ab12, 0x6b237af7), TOBN(0x2ba90162, 0x8bb47af8), - TOBN(0x3d5e58d6, 0xa8219bb7), TOBN(0xc691d0bd, 0x1b06c57f), - TOBN(0x0ae4cb10, 0xd257576e), TOBN(0x3569656c, 0xd54a3dc3), - TOBN(0xe5ebaebd, 0x94cda03a), TOBN(0x934e82d3, 0x162bfe13), - TOBN(0x450ac0ba, 0xe251a0c6), TOBN(0x480b9e11, 0xdd6da526), - TOBN(0x00467bc5, 0x8cce08b5), TOBN(0xb636458c, 0x7f178d55), - TOBN(0xc5748bae, 0xa677d806), TOBN(0x2763a387, 0xdfa394eb), - TOBN(0xa12b448a, 0x7d3cebb6), TOBN(0xe7adda3e, 0x6f20d850), - TOBN(0xf63ebce5, 0x1558462c), TOBN(0x58b36143, 0x620088a8), - TOBN(0x8a2cc3ca, 0x4d63c0ee), TOBN(0x51233117, 0x0fe948ce), - TOBN(0x7463fd85, 0x222ef33b), TOBN(0xadf0c7dc, 0x7c603d6c), - TOBN(0x0ec32d3b, 0xfe7765e5), TOBN(0xccaab359, 0xbf380409), - TOBN(0xbdaa84d6, 0x8e59319c), TOBN(0xd9a4c280, 0x9c80c34d), - TOBN(0xa9d89488, 0xa059c142), TOBN(0x6f5ae714, 0xff0b9346), - TOBN(0x068f237d, 0x16fb3664), TOBN(0x5853e4c4, 0x363186ac), - TOBN(0xe2d87d23, 0x63c52f98), TOBN(0x2ec4a766, 0x81828876), - TOBN(0x47b864fa, 0xe14e7b1c), TOBN(0x0c0bc0e5, 0x69192408), - TOBN(0xe4d7681d, 0xb82e9f3e), TOBN(0x83200f0b, 0xdf25e13c), - TOBN(0x8909984c, 0x66f27280), TOBN(0x462d7b00, 0x75f73227), - TOBN(0xd90ba188, 0xf2651798), TOBN(0x74c6e18c, 0x36ab1c34), - TOBN(0xab256ea3, 0x5ef54359), TOBN(0x03466612, 0xd1aa702f), - TOBN(0x624d6049, 0x2ed22e91), TOBN(0x6fdfe0b5, 0x6f072822), - TOBN(0xeeca1115, 0x39ce2271), TOBN(0x98100a4f, 0xdb01614f), - TOBN(0xb6b0daa2, 0xa35c628f), TOBN(0xb6f94d2e, 0xc87e9a47), - TOBN(0xc6773259, 0x1d57d9ce), TOBN(0xf70bfeec, 0x03884a7b), - TOBN(0x5fb35ccf, 0xed2bad01), TOBN(0xa155cbe3, 0x1da6a5c7), - TOBN(0xc2e2594c, 0x30a92f8f), TOBN(0x649c89ce, 0x5bfafe43), - TOBN(0xd158667d, 0xe9ff257a), TOBN(0x9b359611, 0xf32c50ae), - TOBN(0x4b00b20b, 0x906014cf), TOBN(0xf3a8cfe3, 0x89bc7d3d), - TOBN(0x4ff23ffd, 0x248a7d06), TOBN(0x80c5bfb4, 0x878873fa), - TOBN(0xb7d9ad90, 0x05745981), TOBN(0x179c85db, 0x3db01994), - TOBN(0xba41b062, 0x61a6966c), TOBN(0x4d82d052, 0xeadce5a8), - TOBN(0x9e91cd3b, 0xa5e6a318), TOBN(0x47795f4f, 0x95b2dda0), - TOBN(0xecfd7c1f, 0xd55a897c), TOBN(0x009194ab, 0xb29110fb), - TOBN(0x5f0e2046, 0xe381d3b0), TOBN(0x5f3425f6, 0xa98dd291), - TOBN(0xbfa06687, 0x730d50da), TOBN(0x0423446c, 0x4b083b7f), - TOBN(0x397a247d, 0xd69d3417), TOBN(0xeb629f90, 0x387ba42a), - TOBN(0x1ee426cc, 0xd5cd79bf), TOBN(0x0032940b, 0x946c6e18), - TOBN(0x1b1e8ae0, 0x57477f58), TOBN(0xe94f7d34, 0x6d823278), - TOBN(0xc747cb96, 0x782ba21a), TOBN(0xc5254469, 0xf72b33a5), - TOBN(0x772ef6de, 0xc7f80c81), TOBN(0xd73acbfe, 0x2cd9e6b5), - TOBN(0x4075b5b1, 0x49ee90d9), TOBN(0x785c339a, 0xa06e9eba), - TOBN(0xa1030d5b, 0xabf825e0), TOBN(0xcec684c3, 0xa42931dc), - TOBN(0x42ab62c9, 0xc1586e63), TOBN(0x45431d66, 0x5ab43f2b), - TOBN(0x57c8b2c0, 0x55f7835d), TOBN(0x033da338, 0xc1b7f865), - TOBN(0x283c7513, 0xcaa76097), TOBN(0x0a624fa9, 0x36c83906), - TOBN(0x6b20afec, 0x715af2c7), TOBN(0x4b969974, 0xeba78bfd), - TOBN(0x220755cc, 0xd921d60e), TOBN(0x9b944e10, 0x7baeca13), - TOBN(0x04819d51, 0x5ded93d4), TOBN(0x9bbff86e, 0x6dddfd27), - TOBN(0x6b344130, 0x77adc612), TOBN(0xa7496529, 0xbbd803a0), - TOBN(0x1a1baaa7, 0x6d8805bd), TOBN(0xc8403902, 0x470343ad), - TOBN(0x39f59f66, 0x175adff1), TOBN(0x0b26d7fb, 0xb7d8c5b7), - TOBN(0xa875f5ce, 0x529d75e3), TOBN(0x85efc7e9, 0x41325cc2), - TOBN(0x21950b42, 0x1ff6acd3), TOBN(0xffe70484, 0x53dc6909), - TOBN(0xff4cd0b2, 0x28766127), TOBN(0xabdbe608, 0x4fb7db2b), - TOBN(0x837c9228, 0x5e1109e8), TOBN(0x26147d27, 0xf4645b5a), - TOBN(0x4d78f592, 0xf7818ed8), TOBN(0xd394077e, 0xf247fa36), - TOBN(0x0fb9c2d0, 0x488c171a), TOBN(0xa78bfbaa, 0x13685278), - TOBN(0xedfbe268, 0xd5b1fa6a), TOBN(0x0dceb8db, 0x2b7eaba7), - TOBN(0xbf9e8089, 0x9ae2b710), TOBN(0xefde7ae6, 0xa4449c96), - TOBN(0x43b7716b, 0xcc143a46), TOBN(0xd7d34194, 0xc3628c13), - TOBN(0x508cec1c, 0x3b3f64c9), TOBN(0xe20bc0ba, 0x1e5edf3f), - TOBN(0xda1deb85, 0x2f4318d4), TOBN(0xd20ebe0d, 0x5c3fa443), - TOBN(0x370b4ea7, 0x73241ea3), TOBN(0x61f1511c, 0x5e1a5f65), - TOBN(0x99a5e23d, 0x82681c62), TOBN(0xd731e383, 0xa2f54c2d), - TOBN(0x2692f36e, 0x83445904), TOBN(0x2e0ec469, 0xaf45f9c0), - TOBN(0x905a3201, 0xc67528b7), TOBN(0x88f77f34, 0xd0e5e542), - TOBN(0xf67a8d29, 0x5864687c), TOBN(0x23b92eae, 0x22df3562), - TOBN(0x5c27014b, 0x9bbec39e), TOBN(0x7ef2f226, 0x9c0f0f8d), - TOBN(0x97359638, 0x546c4d8d), TOBN(0x5f9c3fc4, 0x92f24679), - TOBN(0x912e8bed, 0xa8c8acd9), TOBN(0xec3a318d, 0x306634b0), - TOBN(0x80167f41, 0xc31cb264), TOBN(0x3db82f6f, 0x522113f2), - TOBN(0xb155bcd2, 0xdcafe197), TOBN(0xfba1da59, 0x43465283), - TOBN(0xa0425b8e, 0xb212cf53), TOBN(0x4f2e512e, 0xf8557c5f), - TOBN(0xc1286ff9, 0x25c4d56c), TOBN(0xbb8a0fea, 0xee26c851), - TOBN(0xc28f70d2, 0xe7d6107e), TOBN(0x7ee0c444, 0xe76265aa), - TOBN(0x3df277a4, 0x1d1936b1), TOBN(0x1a556e3f, 0xea9595eb), - TOBN(0x258bbbf9, 0xe7305683), TOBN(0x31eea5bf, 0x07ef5be6), - TOBN(0x0deb0e4a, 0x46c814c1), TOBN(0x5cee8449, 0xa7b730dd), - TOBN(0xeab495c5, 0xa0182bde), TOBN(0xee759f87, 0x9e27a6b4), - TOBN(0xc2cf6a68, 0x80e518ca), TOBN(0x25e8013f, 0xf14cf3f4), - TOBN(0x8fc44140, 0x7e8d7a14), TOBN(0xbb1ff3ca, 0x9556f36a), - TOBN(0x6a844385, 0x14600044), TOBN(0xba3f0c4a, 0x7451ae63), - TOBN(0xdfcac25b, 0x1f9af32a), TOBN(0x01e0db86, 0xb1f2214b), - TOBN(0x4e9a5bc2, 0xa4b596ac), TOBN(0x83927681, 0x026c2c08), - TOBN(0x3ec832e7, 0x7acaca28), TOBN(0x1bfeea57, 0xc7385b29), - TOBN(0x068212e3, 0xfd1eaf38), TOBN(0xc1329830, 0x6acf8ccc), - TOBN(0xb909f2db, 0x2aac9e59), TOBN(0x5748060d, 0xb661782a), - TOBN(0xc5ab2632, 0xc79b7a01), TOBN(0xda44c6c6, 0x00017626), - TOBN(0xf26c00e8, 0xa7ea82f0), TOBN(0x99cac80d, 0xe4299aaf), - TOBN(0xd66fe3b6, 0x7ed78be1), TOBN(0x305f725f, 0x648d02cd), - TOBN(0x33ed1bc4, 0x623fb21b), TOBN(0xfa70533e, 0x7a6319ad), - TOBN(0x17ab562d, 0xbe5ffb3e), TOBN(0x06374994, 0x56674741), - TOBN(0x69d44ed6, 0x5c46aa8e), TOBN(0x2100d5d3, 0xa8d063d1), - TOBN(0xcb9727ea, 0xa2d17c36), TOBN(0x4c2bab1b, 0x8add53b7), - TOBN(0xa084e90c, 0x15426704), TOBN(0x778afcd3, 0xa837ebea), - TOBN(0x6651f701, 0x7ce477f8), TOBN(0xa0624998, 0x46fb7a8b), - TOBN(0xdc1e6828, 0xed8a6e19), TOBN(0x33fc2336, 0x4189d9c7), - TOBN(0x026f8fe2, 0x671c39bc), TOBN(0xd40c4ccd, 0xbc6f9915), - TOBN(0xafa135bb, 0xf80e75ca), TOBN(0x12c651a0, 0x22adff2c), - TOBN(0xc40a04bd, 0x4f51ad96), TOBN(0x04820109, 0xbbe4e832), - TOBN(0x3667eb1a, 0x7f4c04cc), TOBN(0x59556621, 0xa9404f84), - TOBN(0x71cdf653, 0x7eceb50a), TOBN(0x994a44a6, 0x9b8335fa), - TOBN(0xd7faf819, 0xdbeb9b69), TOBN(0x473c5680, 0xeed4350d), - TOBN(0xb6658466, 0xda44bba2), TOBN(0x0d1bc780, 0x872bdbf3), - TOBN(0xe535f175, 0xa1962f91), TOBN(0x6ed7e061, 0xed58f5a7), - TOBN(0x177aa4c0, 0x2089a233), TOBN(0x0dbcb03a, 0xe539b413), - TOBN(0xe3dc424e, 0xbb32e38e), TOBN(0x6472e5ef, 0x6806701e), - TOBN(0xdd47ff98, 0x814be9ee), TOBN(0x6b60cfff, 0x35ace009), - TOBN(0xb8d3d931, 0x9ff91fe5), TOBN(0x039c4800, 0xf0518eed), - TOBN(0x95c37632, 0x9182cb26), TOBN(0x0763a434, 0x82fc568d), - TOBN(0x707c04d5, 0x383e76ba), TOBN(0xac98b930, 0x824e8197), - TOBN(0x92bf7c8f, 0x91230de0), TOBN(0x90876a01, 0x40959b70), - TOBN(0xdb6d96f3, 0x05968b80), TOBN(0x380a0913, 0x089f73b9), - TOBN(0x7da70b83, 0xc2c61e01), TOBN(0x95fb8394, 0x569b38c7), - TOBN(0x9a3c6512, 0x80edfe2f), TOBN(0x8f726bb9, 0x8faeaf82), - TOBN(0x8010a4a0, 0x78424bf8), TOBN(0x29672044, 0x0e844970)}, - {TOBN(0x63c5cb81, 0x7a2ad62a), TOBN(0x7ef2b6b9, 0xac62ff54), - TOBN(0x3749bba4, 0xb3ad9db5), TOBN(0xad311f2c, 0x46d5a617), - TOBN(0xb77a8087, 0xc2ff3b6d), TOBN(0xb46feaf3, 0x367834ff), - TOBN(0xf8aa266d, 0x75d6b138), TOBN(0xfa38d320, 0xec008188), - TOBN(0x486d8ffa, 0x696946fc), TOBN(0x50fbc6d8, 0xb9cba56d), - TOBN(0x7e3d423e, 0x90f35a15), TOBN(0x7c3da195, 0xc0dd962c), - TOBN(0xe673fdb0, 0x3cfd5d8b), TOBN(0x0704b7c2, 0x889dfca5), - TOBN(0xf6ce581f, 0xf52305aa), TOBN(0x399d49eb, 0x914d5e53), - TOBN(0x380a496d, 0x6ec293cd), TOBN(0x733dbda7, 0x8e7051f5), - TOBN(0x037e388d, 0xb849140a), TOBN(0xee4b32b0, 0x5946dbf6), - TOBN(0xb1c4fda9, 0xcae368d1), TOBN(0x5001a7b0, 0xfdb0b2f3), - TOBN(0x6df59374, 0x2e3ac46e), TOBN(0x4af675f2, 0x39b3e656), - TOBN(0x44e38110, 0x39949296), TOBN(0x5b63827b, 0x361db1b5), - TOBN(0x3e5323ed, 0x206eaff5), TOBN(0x942370d2, 0xc21f4290), - TOBN(0xf2caaf2e, 0xe0d985a1), TOBN(0x192cc64b, 0x7239846d), - TOBN(0x7c0b8f47, 0xae6312f8), TOBN(0x7dc61f91, 0x96620108), - TOBN(0xb830fb5b, 0xc2da7de9), TOBN(0xd0e643df, 0x0ff8d3be), - TOBN(0x31ee77ba, 0x188a9641), TOBN(0x4e8aa3aa, 0xbcf6d502), - TOBN(0xf9fb6532, 0x9a49110f), TOBN(0xd18317f6, 0x2dd6b220), - TOBN(0x7e3ced41, 0x52c3ea5a), TOBN(0x0d296a14, 0x7d579c4a), - TOBN(0x35d6a53e, 0xed4c3717), TOBN(0x9f8240cf, 0x3d0ed2a3), - TOBN(0x8c0d4d05, 0xe5543aa5), TOBN(0x45d5bbfb, 0xdd33b4b4), - TOBN(0xfa04cc73, 0x137fd28e), TOBN(0x862ac6ef, 0xc73b3ffd), - TOBN(0x403ff9f5, 0x31f51ef2), TOBN(0x34d5e0fc, 0xbc73f5a2), - TOBN(0xf2526820, 0x08913f4f), TOBN(0xea20ed61, 0xeac93d95), - TOBN(0x51ed38b4, 0x6ca6b26c), TOBN(0x8662dcbc, 0xea4327b0), - TOBN(0x6daf295c, 0x725d2aaa), TOBN(0xbad2752f, 0x8e52dcda), - TOBN(0x2210e721, 0x0b17dacc), TOBN(0xa37f7912, 0xd51e8232), - TOBN(0x4f7081e1, 0x44cc3add), TOBN(0xd5ffa1d6, 0x87be82cf), - TOBN(0x89890b6c, 0x0edd6472), TOBN(0xada26e1a, 0x3ed17863), - TOBN(0x276f2715, 0x63483caa), TOBN(0xe6924cd9, 0x2f6077fd), - TOBN(0x05a7fe98, 0x0a466e3c), TOBN(0xf1c794b0, 0xb1902d1f), - TOBN(0xe5213688, 0x82a8042c), TOBN(0xd931cfaf, 0xcd278298), - TOBN(0x069a0ae0, 0xf597a740), TOBN(0x0adbb3f3, 0xeb59107c), - TOBN(0x983e951e, 0x5eaa8eb8), TOBN(0xe663a8b5, 0x11b48e78), - TOBN(0x1631cc0d, 0x8a03f2c5), TOBN(0x7577c11e, 0x11e271e2), - TOBN(0x33b2385c, 0x08369a90), TOBN(0x2990c59b, 0x190eb4f8), - TOBN(0x819a6145, 0xc68eac80), TOBN(0x7a786d62, 0x2ec4a014), - TOBN(0x33faadbe, 0x20ac3a8d), TOBN(0x31a21781, 0x5aba2d30), - TOBN(0x209d2742, 0xdba4f565), TOBN(0xdb2ce9e3, 0x55aa0fbb), - TOBN(0x8cef334b, 0x168984df), TOBN(0xe81dce17, 0x33879638), - TOBN(0xf6e6949c, 0x263720f0), TOBN(0x5c56feaf, 0xf593cbec), - TOBN(0x8bff5601, 0xfde58c84), TOBN(0x74e24117, 0x2eccb314), - TOBN(0xbcf01b61, 0x4c9a8a78), TOBN(0xa233e35e, 0x544c9868), - TOBN(0xb3156bf3, 0x8bd7aff1), TOBN(0x1b5ee4cb, 0x1d81b146), - TOBN(0x7ba1ac41, 0xd628a915), TOBN(0x8f3a8f9c, 0xfd89699e), - TOBN(0x7329b9c9, 0xa0748be7), TOBN(0x1d391c95, 0xa92e621f), - TOBN(0xe51e6b21, 0x4d10a837), TOBN(0xd255f53a, 0x4947b435), - TOBN(0x07669e04, 0xf1788ee3), TOBN(0xc14f27af, 0xa86938a2), - TOBN(0x8b47a334, 0xe93a01c0), TOBN(0xff627438, 0xd9366808), - TOBN(0x7a0985d8, 0xca2a5965), TOBN(0x3d9a5542, 0xd6e9b9b3), - TOBN(0xc23eb80b, 0x4cf972e8), TOBN(0x5c1c33bb, 0x4fdf72fd), - TOBN(0x0c4a58d4, 0x74a86108), TOBN(0xf8048a8f, 0xee4c5d90), - TOBN(0xe3c7c924, 0xe86d4c80), TOBN(0x28c889de, 0x056a1e60), - TOBN(0x57e2662e, 0xb214a040), TOBN(0xe8c48e98, 0x37e10347), - TOBN(0x87742862, 0x80ac748a), TOBN(0xf1c24022, 0x186b06f2), - TOBN(0xac2dd4c3, 0x5f74040a), TOBN(0x409aeb71, 0xfceac957), - TOBN(0x4fbad782, 0x55c4ec23), TOBN(0xb359ed61, 0x8a7b76ec), - TOBN(0x12744926, 0xed6f4a60), TOBN(0xe21e8d7f, 0x4b912de3), - TOBN(0xe2575a59, 0xfc705a59), TOBN(0x72f1d4de, 0xed2dbc0e), - TOBN(0x3d2b24b9, 0xeb7926b8), TOBN(0xbff88cb3, 0xcdbe5509), - TOBN(0xd0f399af, 0xe4dd640b), TOBN(0x3c5fe130, 0x2f76ed45), - TOBN(0x6f3562f4, 0x3764fb3d), TOBN(0x7b5af318, 0x3151b62d), - TOBN(0xd5bd0bc7, 0xd79ce5f3), TOBN(0xfdaf6b20, 0xec66890f), - TOBN(0x735c67ec, 0x6063540c), TOBN(0x50b259c2, 0xe5f9cb8f), - TOBN(0xb8734f9a, 0x3f99c6ab), TOBN(0xf8cc13d5, 0xa3a7bc85), - TOBN(0x80c1b305, 0xc5217659), TOBN(0xfe5364d4, 0x4ec12a54), - TOBN(0xbd87045e, 0x681345fe), TOBN(0x7f8efeb1, 0x582f897f), - TOBN(0xe8cbf1e5, 0xd5923359), TOBN(0xdb0cea9d, 0x539b9fb0), - TOBN(0x0c5b34cf, 0x49859b98), TOBN(0x5e583c56, 0xa4403cc6), - TOBN(0x11fc1a2d, 0xd48185b7), TOBN(0xc93fbc7e, 0x6e521787), - TOBN(0x47e7a058, 0x05105b8b), TOBN(0x7b4d4d58, 0xdb8260c8), - TOBN(0xe33930b0, 0x46eb842a), TOBN(0x8e844a9a, 0x7bdae56d), - TOBN(0x34ef3a9e, 0x13f7fdfc), TOBN(0xb3768f82, 0x636ca176), - TOBN(0x2821f4e0, 0x4e09e61c), TOBN(0x414dc3a1, 0xa0c7cddc), - TOBN(0xd5379437, 0x54945fcd), TOBN(0x151b6eef, 0xb3555ff1), - TOBN(0xb31bd613, 0x6339c083), TOBN(0x39ff8155, 0xdfb64701), - TOBN(0x7c3388d2, 0xe29604ab), TOBN(0x1e19084b, 0xa6b10442), - TOBN(0x17cf54c0, 0xeccd47ef), TOBN(0x89693385, 0x4a5dfb30), - TOBN(0x69d023fb, 0x47daf9f6), TOBN(0x9222840b, 0x7d91d959), - TOBN(0x439108f5, 0x803bac62), TOBN(0x0b7dd91d, 0x379bd45f), - TOBN(0xd651e827, 0xca63c581), TOBN(0x5c5d75f6, 0x509c104f), - TOBN(0x7d5fc738, 0x1f2dc308), TOBN(0x20faa7bf, 0xd98454be), - TOBN(0x95374bee, 0xa517b031), TOBN(0xf036b9b1, 0x642692ac), - TOBN(0xc5106109, 0x39842194), TOBN(0xb7e2353e, 0x49d05295), - TOBN(0xfc8c1d5c, 0xefb42ee0), TOBN(0xe04884eb, 0x08ce811c), - TOBN(0xf1f75d81, 0x7419f40e), TOBN(0x5b0ac162, 0xa995c241), - TOBN(0x120921bb, 0xc4c55646), TOBN(0x713520c2, 0x8d33cf97), - TOBN(0xb4a65a5c, 0xe98c5100), TOBN(0x6cec871d, 0x2ddd0f5a), - TOBN(0x251f0b7f, 0x9ba2e78b), TOBN(0x224a8434, 0xce3a2a5f), - TOBN(0x26827f61, 0x25f5c46f), TOBN(0x6a22bedc, 0x48545ec0), - TOBN(0x25ae5fa0, 0xb1bb5cdc), TOBN(0xd693682f, 0xfcb9b98f), - TOBN(0x32027fe8, 0x91e5d7d3), TOBN(0xf14b7d17, 0x73a07678), - TOBN(0xf88497b3, 0xc0dfdd61), TOBN(0xf7c2eec0, 0x2a8c4f48), - TOBN(0xaa5573f4, 0x3756e621), TOBN(0xc013a240, 0x1825b948), - TOBN(0x1c03b345, 0x63878572), TOBN(0xa0472bea, 0x653a4184), - TOBN(0xf4222e27, 0x0ac69a80), TOBN(0x34096d25, 0xf51e54f6), - TOBN(0x00a648cb, 0x8fffa591), TOBN(0x4e87acdc, 0x69b6527f), - TOBN(0x0575e037, 0xe285ccb4), TOBN(0x188089e4, 0x50ddcf52), - TOBN(0xaa96c9a8, 0x870ff719), TOBN(0x74a56cd8, 0x1fc7e369), - TOBN(0x41d04ee2, 0x1726931a), TOBN(0x0bbbb2c8, 0x3660ecfd), - TOBN(0xa6ef6de5, 0x24818e18), TOBN(0xe421cc51, 0xe7d57887), - TOBN(0xf127d208, 0xbea87be6), TOBN(0x16a475d3, 0xb1cdd682), - TOBN(0x9db1b684, 0x439b63f7), TOBN(0x5359b3db, 0xf0f113b6), - TOBN(0xdfccf1de, 0x8bf06e31), TOBN(0x1fdf8f44, 0xdd383901), - TOBN(0x10775cad, 0x5017e7d2), TOBN(0xdfc3a597, 0x58d11eef), - TOBN(0x6ec9c8a0, 0xb1ecff10), TOBN(0xee6ed6cc, 0x28400549), - TOBN(0xb5ad7bae, 0x1b4f8d73), TOBN(0x61b4f11d, 0xe00aaab9), - TOBN(0x7b32d69b, 0xd4eff2d7), TOBN(0x88ae6771, 0x4288b60f), - TOBN(0x159461b4, 0x37a1e723), TOBN(0x1f3d4789, 0x570aae8c), - TOBN(0x869118c0, 0x7f9871da), TOBN(0x35fbda78, 0xf635e278), - TOBN(0x738f3641, 0xe1541dac), TOBN(0x6794b13a, 0xc0dae45f), - TOBN(0x065064ac, 0x09cc0917), TOBN(0x27c53729, 0xc68540fd), - TOBN(0x0d2d4c8e, 0xef227671), TOBN(0xd23a9f80, 0xa1785a04), - TOBN(0x98c59528, 0x52650359), TOBN(0xfa09ad01, 0x74a1acad), - TOBN(0x082d5a29, 0x0b55bf5c), TOBN(0xa40f1c67, 0x419b8084), - TOBN(0x3a5c752e, 0xdcc18770), TOBN(0x4baf1f2f, 0x8825c3a5), - TOBN(0xebd63f74, 0x21b153ed), TOBN(0xa2383e47, 0xb2f64723), - TOBN(0xe7bf620a, 0x2646d19a), TOBN(0x56cb44ec, 0x03c83ffd), - TOBN(0xaf7267c9, 0x4f6be9f1), TOBN(0x8b2dfd7b, 0xc06bb5e9), - TOBN(0xb87072f2, 0xa672c5c7), TOBN(0xeacb11c8, 0x0d53c5e2), - TOBN(0x22dac29d, 0xff435932), TOBN(0x37bdb99d, 0x4408693c), - TOBN(0xf6e62fb6, 0x2899c20f), TOBN(0x3535d512, 0x447ece24), - TOBN(0xfbdc6b88, 0xff577ce3), TOBN(0x726693bd, 0x190575f2), - TOBN(0x6772b0e5, 0xab4b35a2), TOBN(0x1d8b6001, 0xf5eeaacf), - TOBN(0x728f7ce4, 0x795b9580), TOBN(0x4a20ed2a, 0x41fb81da), - TOBN(0x9f685cd4, 0x4fec01e6), TOBN(0x3ed7ddcc, 0xa7ff50ad), - TOBN(0x460fd264, 0x0c2d97fd), TOBN(0x3a241426, 0xeb82f4f9), - TOBN(0x17d1df2c, 0x6a8ea820), TOBN(0xb2b50d3b, 0xf22cc254), - TOBN(0x03856cba, 0xb7291426), TOBN(0x87fd26ae, 0x04f5ee39), - TOBN(0x9cb696cc, 0x02bee4ba), TOBN(0x53121804, 0x06820fd6), - TOBN(0xa5dfc269, 0x0212e985), TOBN(0x666f7ffa, 0x160f9a09), - TOBN(0xc503cd33, 0xbccd9617), TOBN(0x365dede4, 0xba7730a3), - TOBN(0x798c6355, 0x5ddb0786), TOBN(0xa6c3200e, 0xfc9cd3bc), - TOBN(0x060ffb2c, 0xe5e35efd), TOBN(0x99a4e25b, 0x5555a1c1), - TOBN(0x11d95375, 0xf70b3751), TOBN(0x0a57354a, 0x160e1bf6), - TOBN(0xecb3ae4b, 0xf8e4b065), TOBN(0x07a834c4, 0x2e53022b), - TOBN(0x1cd300b3, 0x8692ed96), TOBN(0x16a6f792, 0x61ee14ec), - TOBN(0x8f1063c6, 0x6a8649ed), TOBN(0xfbcdfcfe, 0x869f3e14), - TOBN(0x2cfb97c1, 0x00a7b3ec), TOBN(0xcea49b3c, 0x7130c2f1), - TOBN(0x462d044f, 0xe9d96488), TOBN(0x4b53d52e, 0x8182a0c1), - TOBN(0x84b6ddd3, 0x0391e9e9), TOBN(0x80ab7b48, 0xb1741a09), - TOBN(0xec0e15d4, 0x27d3317f), TOBN(0x8dfc1ddb, 0x1a64671e), - TOBN(0x93cc5d5f, 0xd49c5b92), TOBN(0xc995d53d, 0x3674a331), - TOBN(0x302e41ec, 0x090090ae), TOBN(0x2278a0cc, 0xedb06830), - TOBN(0x1d025932, 0xfbc99690), TOBN(0x0c32fbd2, 0xb80d68da), - TOBN(0xd79146da, 0xf341a6c1), TOBN(0xae0ba139, 0x1bef68a0), - TOBN(0xc6b8a563, 0x8d774b3a), TOBN(0x1cf307bd, 0x880ba4d7), - TOBN(0xc033bdc7, 0x19803511), TOBN(0xa9f97b3b, 0x8888c3be), - TOBN(0x3d68aebc, 0x85c6d05e), TOBN(0xc3b88a9d, 0x193919eb), - TOBN(0x2d300748, 0xc48b0ee3), TOBN(0x7506bc7c, 0x07a746c1), - TOBN(0xfc48437c, 0x6e6d57f3), TOBN(0x5bd71587, 0xcfeaa91a), - TOBN(0xa4ed0408, 0xc1bc5225), TOBN(0xd0b946db, 0x2719226d), - TOBN(0x109ecd62, 0x758d2d43), TOBN(0x75c8485a, 0x2751759b), - TOBN(0xb0b75f49, 0x9ce4177a), TOBN(0x4fa61a1e, 0x79c10c3d), - TOBN(0xc062d300, 0xa167fcd7), TOBN(0x4df3874c, 0x750f0fa8), - TOBN(0x29ae2cf9, 0x83dfedc9), TOBN(0xf8437134, 0x8d87631a), - TOBN(0xaf571711, 0x7429c8d2), TOBN(0x18d15867, 0x146d9272), - TOBN(0x83053ecf, 0x69769bb7), TOBN(0xc55eb856, 0xc479ab82), - TOBN(0x5ef7791c, 0x21b0f4b2), TOBN(0xaa5956ba, 0x3d491525), - TOBN(0x407a96c2, 0x9fe20eba), TOBN(0xf27168bb, 0xe52a5ad3), - TOBN(0x43b60ab3, 0xbf1d9d89), TOBN(0xe45c51ef, 0x710e727a), - TOBN(0xdfca5276, 0x099b4221), TOBN(0x8dc6407c, 0x2557a159), - TOBN(0x0ead8335, 0x91035895), TOBN(0x0a9db957, 0x9c55dc32), - TOBN(0xe40736d3, 0xdf61bc76), TOBN(0x13a619c0, 0x3f778cdb), - TOBN(0x6dd921a4, 0xc56ea28f), TOBN(0x76a52433, 0x2fa647b4), - TOBN(0x23591891, 0xac5bdc5d), TOBN(0xff4a1a72, 0xbac7dc01), - TOBN(0x9905e261, 0x62df8453), TOBN(0x3ac045df, 0xe63b265f), - TOBN(0x8a3f341b, 0xad53dba7), TOBN(0x8ec269cc, 0x837b625a), - TOBN(0xd71a2782, 0x3ae31189), TOBN(0x8fb4f9a3, 0x55e96120), - TOBN(0x804af823, 0xff9875cf), TOBN(0x23224f57, 0x5d442a9b), - TOBN(0x1c4d3b9e, 0xecc62679), TOBN(0x91da22fb, 0xa0e7ddb1), - TOBN(0xa370324d, 0x6c04a661), TOBN(0x9710d3b6, 0x5e376d17), - TOBN(0xed8c98f0, 0x3044e357), TOBN(0xc364ebbe, 0x6422701c), - TOBN(0x347f5d51, 0x7733d61c), TOBN(0xd55644b9, 0xcea826c3), - TOBN(0x80c6e0ad, 0x55a25548), TOBN(0x0aa7641d, 0x844220a7), - TOBN(0x1438ec81, 0x31810660), TOBN(0x9dfa6507, 0xde4b4043), - TOBN(0x10b515d8, 0xcc3e0273), TOBN(0x1b6066dd, 0x28d8cfb2), - TOBN(0xd3b04591, 0x9c9efebd), TOBN(0x425d4bdf, 0xa21c1ff4), - TOBN(0x5fe5af19, 0xd57607d3), TOBN(0xbbf773f7, 0x54481084), - TOBN(0x8435bd69, 0x94b03ed1), TOBN(0xd9ad1de3, 0x634cc546), - TOBN(0x2cf423fc, 0x00e420ca), TOBN(0xeed26d80, 0xa03096dd), - TOBN(0xd7f60be7, 0xa4db09d2), TOBN(0xf47f569d, 0x960622f7), - TOBN(0xe5925fd7, 0x7296c729), TOBN(0xeff2db26, 0x26ca2715), - TOBN(0xa6fcd014, 0xb913e759), TOBN(0x53da4786, 0x8ff4de93), - TOBN(0x14616d79, 0xc32068e1), TOBN(0xb187d664, 0xccdf352e), - TOBN(0xf7afb650, 0x1dc90b59), TOBN(0x8170e943, 0x7daa1b26), - TOBN(0xc8e3bdd8, 0x700c0a84), TOBN(0x6e8d345f, 0x6482bdfa), - TOBN(0x84cfbfa1, 0xc5c5ea50), TOBN(0xd3baf14c, 0x67960681), - TOBN(0x26398403, 0x0dd50942), TOBN(0xe4b7839c, 0x4716a663), - TOBN(0xd5f1f794, 0xe7de6dc0), TOBN(0x5cd0f4d4, 0x622aa7ce), - TOBN(0x5295f3f1, 0x59acfeec), TOBN(0x8d933552, 0x953e0607), - TOBN(0xc7db8ec5, 0x776c5722), TOBN(0xdc467e62, 0x2b5f290c), - TOBN(0xd4297e70, 0x4ff425a9), TOBN(0x4be924c1, 0x0cf7bb72), - TOBN(0x0d5dc5ae, 0xa1892131), TOBN(0x8bf8a8e3, 0xa705c992), - TOBN(0x73a0b064, 0x7a305ac5), TOBN(0x00c9ca4e, 0x9a8c77a8), - TOBN(0x5dfee80f, 0x83774bdd), TOBN(0x63131602, 0x85734485), - TOBN(0xa1b524ae, 0x914a69a9), TOBN(0xebc2ffaf, 0xd4e300d7), - TOBN(0x52c93db7, 0x7cfa46a5), TOBN(0x71e6161f, 0x21653b50), - TOBN(0x3574fc57, 0xa4bc580a), TOBN(0xc09015dd, 0xe1bc1253), - TOBN(0x4b7b47b2, 0xd174d7aa), TOBN(0x4072d8e8, 0xf3a15d04), - TOBN(0xeeb7d47f, 0xd6fa07ed), TOBN(0x6f2b9ff9, 0xedbdafb1), - TOBN(0x18c51615, 0x3760fe8a), TOBN(0x7a96e6bf, 0xf06c6c13), - TOBN(0x4d7a0410, 0x0ea2d071), TOBN(0xa1914e9b, 0x0be2a5ce), - TOBN(0x5726e357, 0xd8a3c5cf), TOBN(0x1197ecc3, 0x2abb2b13), - TOBN(0x6c0d7f7f, 0x31ae88dd), TOBN(0x15b20d1a, 0xfdbb3efe), - TOBN(0xcd06aa26, 0x70584039), TOBN(0x2277c969, 0xa7dc9747), - TOBN(0xbca69587, 0x7855d815), TOBN(0x899ea238, 0x5188b32a), - TOBN(0x37d9228b, 0x760c1c9d), TOBN(0xc7efbb11, 0x9b5c18da), - TOBN(0x7f0d1bc8, 0x19f6dbc5), TOBN(0x4875384b, 0x07e6905b), - TOBN(0xc7c50baa, 0x3ba8cd86), TOBN(0xb0ce40fb, 0xc2905de0), - TOBN(0x70840673, 0x7a231952), TOBN(0xa912a262, 0xcf43de26), - TOBN(0x9c38ddcc, 0xeb5b76c1), TOBN(0x746f5285, 0x26fc0ab4), - TOBN(0x52a63a50, 0xd62c269f), TOBN(0x60049c55, 0x99458621), - TOBN(0xe7f48f82, 0x3c2f7c9e), TOBN(0x6bd99043, 0x917d5cf3), - TOBN(0xeb1317a8, 0x8701f469), TOBN(0xbd3fe2ed, 0x9a449fe0), - TOBN(0x421e79ca, 0x12ef3d36), TOBN(0x9ee3c36c, 0x3e7ea5de), - TOBN(0xe48198b5, 0xcdff36f7), TOBN(0xaff4f967, 0xc6b82228), - TOBN(0x15e19dd0, 0xc47adb7e), TOBN(0x45699b23, 0x032e7dfa), - TOBN(0x40680c8b, 0x1fae026a), TOBN(0x5a347a48, 0x550dbf4d), - TOBN(0xe652533b, 0x3cef0d7d), TOBN(0xd94f7b18, 0x2bbb4381), - TOBN(0x838752be, 0x0e80f500), TOBN(0x8e6e2488, 0x9e9c9bfb), - TOBN(0xc9751697, 0x16caca6a), TOBN(0x866c49d8, 0x38531ad9), - TOBN(0xc917e239, 0x7151ade1), TOBN(0x2d016ec1, 0x6037c407), - TOBN(0xa407ccc9, 0x00eac3f9), TOBN(0x835f6280, 0xe2ed4748), - TOBN(0xcc54c347, 0x1cc98e0d), TOBN(0x0e969937, 0xdcb572eb), - TOBN(0x1b16c8e8, 0x8f30c9cb), TOBN(0xa606ae75, 0x373c4661), - TOBN(0x47aa689b, 0x35502cab), TOBN(0xf89014ae, 0x4d9bb64f), - TOBN(0x202f6a9c, 0x31c71f7b), TOBN(0x01f95aa3, 0x296ffe5c), - TOBN(0x5fc06014, 0x53cec3a3), TOBN(0xeb991237, 0x5f498a45), - TOBN(0xae9a935e, 0x5d91ba87), TOBN(0xc6ac6281, 0x0b564a19), - TOBN(0x8a8fe81c, 0x3bd44e69), TOBN(0x7c8b467f, 0x9dd11d45), - TOBN(0xf772251f, 0xea5b8e69), TOBN(0xaeecb3bd, 0xc5b75fbc), - TOBN(0x1aca3331, 0x887ff0e5), TOBN(0xbe5d49ff, 0x19f0a131), - TOBN(0x582c13aa, 0xe5c8646f), TOBN(0xdbaa12e8, 0x20e19980), - TOBN(0x8f40f31a, 0xf7abbd94), TOBN(0x1f13f5a8, 0x1dfc7663), - TOBN(0x5d81f1ee, 0xaceb4fc0), TOBN(0x36256002, 0x5e6f0f42), - TOBN(0x4b67d6d7, 0x751370c8), TOBN(0x2608b698, 0x03e80589), - TOBN(0xcfc0d2fc, 0x05268301), TOBN(0xa6943d39, 0x40309212), - TOBN(0x192a90c2, 0x1fd0e1c2), TOBN(0xb209f113, 0x37f1dc76), - TOBN(0xefcc5e06, 0x97bf1298), TOBN(0xcbdb6730, 0x219d639e), - TOBN(0xd009c116, 0xb81e8c6f), TOBN(0xa3ffdde3, 0x1a7ce2e5), - TOBN(0xc53fbaaa, 0xa914d3ba), TOBN(0x836d500f, 0x88df85ee), - TOBN(0xd98dc71b, 0x66ee0751), TOBN(0x5a3d7005, 0x714516fd), - TOBN(0x21d3634d, 0x39eedbba), TOBN(0x35cd2e68, 0x0455a46d), - TOBN(0xc8cafe65, 0xf9d7eb0c), TOBN(0xbda3ce9e, 0x00cefb3e), - TOBN(0xddc17a60, 0x2c9cf7a4), TOBN(0x01572ee4, 0x7bcb8773), - TOBN(0xa92b2b01, 0x8c7548df), TOBN(0x732fd309, 0xa84600e3), - TOBN(0xe22109c7, 0x16543a40), TOBN(0x9acafd36, 0xfede3c6c), - TOBN(0xfb206852, 0x6824e614), TOBN(0x2a4544a9, 0xda25dca0), - TOBN(0x25985262, 0x91d60b06), TOBN(0x281b7be9, 0x28753545), - TOBN(0xec667b1a, 0x90f13b27), TOBN(0x33a83aff, 0x940e2eb4), - TOBN(0x80009862, 0xd5d721d5), TOBN(0x0c3357a3, 0x5bd3a182), - TOBN(0x27f3a83b, 0x7aa2cda4), TOBN(0xb58ae74e, 0xf6f83085), - TOBN(0x2a911a81, 0x2e6dad6b), TOBN(0xde286051, 0xf43d6c5b), - TOBN(0x4bdccc41, 0xf996c4d8), TOBN(0xe7312ec0, 0x0ae1e24e)}, - {TOBN(0xf8d112e7, 0x6e6485b3), TOBN(0x4d3e24db, 0x771c52f8), - TOBN(0x48e3ee41, 0x684a2f6d), TOBN(0x7161957d, 0x21d95551), - TOBN(0x19631283, 0xcdb12a6c), TOBN(0xbf3fa882, 0x2e50e164), - TOBN(0xf6254b63, 0x3166cc73), TOBN(0x3aefa7ae, 0xaee8cc38), - TOBN(0x79b0fe62, 0x3b36f9fd), TOBN(0x26543b23, 0xfde19fc0), - TOBN(0x136e64a0, 0x958482ef), TOBN(0x23f63771, 0x9b095825), - TOBN(0x14cfd596, 0xb6a1142e), TOBN(0x5ea6aac6, 0x335aac0b), - TOBN(0x86a0e8bd, 0xf3081dd5), TOBN(0x5fb89d79, 0x003dc12a), - TOBN(0xf615c33a, 0xf72e34d4), TOBN(0x0bd9ea40, 0x110eec35), - TOBN(0x1c12bc5b, 0xc1dea34e), TOBN(0x686584c9, 0x49ae4699), - TOBN(0x13ad95d3, 0x8c97b942), TOBN(0x4609561a, 0x4e5c7562), - TOBN(0x9e94a4ae, 0xf2737f89), TOBN(0xf57594c6, 0x371c78b6), - TOBN(0x0f0165fc, 0xe3779ee3), TOBN(0xe00e7f9d, 0xbd495d9e), - TOBN(0x1fa4efa2, 0x20284e7a), TOBN(0x4564bade, 0x47ac6219), - TOBN(0x90e6312a, 0xc4708e8e), TOBN(0x4f5725fb, 0xa71e9adf), - TOBN(0xe95f55ae, 0x3d684b9f), TOBN(0x47f7ccb1, 0x1e94b415), - TOBN(0x7322851b, 0x8d946581), TOBN(0xf0d13133, 0xbdf4a012), - TOBN(0xa3510f69, 0x6584dae0), TOBN(0x03a7c171, 0x3c9f6c6d), - TOBN(0x5be97f38, 0xe475381a), TOBN(0xca1ba422, 0x85823334), - TOBN(0xf83cc5c7, 0x0be17dda), TOBN(0x158b1494, 0x0b918c0f), - TOBN(0xda3a77e5, 0x522e6b69), TOBN(0x69c908c3, 0xbbcd6c18), - TOBN(0x1f1b9e48, 0xd924fd56), TOBN(0x37c64e36, 0xaa4bb3f7), - TOBN(0x5a4fdbdf, 0xee478d7d), TOBN(0xba75c8bc, 0x0193f7a0), - TOBN(0x84bc1e84, 0x56cd16df), TOBN(0x1fb08f08, 0x46fad151), - TOBN(0x8a7cabf9, 0x842e9f30), TOBN(0xa331d4bf, 0x5eab83af), - TOBN(0xd272cfba, 0x017f2a6a), TOBN(0x27560abc, 0x83aba0e3), - TOBN(0x94b83387, 0x0e3a6b75), TOBN(0x25c6aea2, 0x6b9f50f5), - TOBN(0x803d691d, 0xb5fdf6d0), TOBN(0x03b77509, 0xe6333514), - TOBN(0x36178903, 0x61a341c1), TOBN(0x3604dc60, 0x0cfd6142), - TOBN(0x022295eb, 0x8533316c), TOBN(0x3dbde4ac, 0x44af2922), - TOBN(0x898afc5d, 0x1c7eef69), TOBN(0x58896805, 0xd14f4fa1), - TOBN(0x05002160, 0x203c21ca), TOBN(0x6f0d1f30, 0x40ef730b), - TOBN(0x8e8c44d4, 0x196224f8), TOBN(0x75a4ab95, 0x374d079d), - TOBN(0x79085ecc, 0x7d48f123), TOBN(0x56f04d31, 0x1bf65ad8), - TOBN(0xe220bf1c, 0xbda602b2), TOBN(0x73ee1742, 0xf9612c69), - TOBN(0x76008fc8, 0x084fd06b), TOBN(0x4000ef9f, 0xf11380d1), - TOBN(0x48201b4b, 0x12cfe297), TOBN(0x3eee129c, 0x292f74e5), - TOBN(0xe1fe114e, 0xc9e874e8), TOBN(0x899b055c, 0x92c5fc41), - TOBN(0x4e477a64, 0x3a39c8cf), TOBN(0x82f09efe, 0x78963cc9), - TOBN(0x6fd3fd8f, 0xd333f863), TOBN(0x85132b2a, 0xdc949c63), - TOBN(0x7e06a3ab, 0x516eb17b), TOBN(0x73bec06f, 0xd2c7372b), - TOBN(0xe4f74f55, 0xba896da6), TOBN(0xbb4afef8, 0x8e9eb40f), - TOBN(0x2d75bec8, 0xe61d66b0), TOBN(0x02bda4b4, 0xef29300b), - TOBN(0x8bbaa8de, 0x026baa5a), TOBN(0xff54befd, 0xa07f4440), - TOBN(0xbd9b8b1d, 0xbe7a2af3), TOBN(0xec51caa9, 0x4fb74a72), - TOBN(0xb9937a4b, 0x63879697), TOBN(0x7c9a9d20, 0xec2687d5), - TOBN(0x1773e44f, 0x6ef5f014), TOBN(0x8abcf412, 0xe90c6900), - TOBN(0x387bd022, 0x8142161e), TOBN(0x50393755, 0xfcb6ff2a), - TOBN(0x9813fd56, 0xed6def63), TOBN(0x53cf6482, 0x7d53106c), - TOBN(0x991a35bd, 0x431f7ac1), TOBN(0xf1e274dd, 0x63e65faf), - TOBN(0xf63ffa3c, 0x44cc7880), TOBN(0x411a426b, 0x7c256981), - TOBN(0xb698b9fd, 0x93a420e0), TOBN(0x89fdddc0, 0xae53f8fe), - TOBN(0x766e0722, 0x32398baa), TOBN(0x205fee42, 0x5cfca031), - TOBN(0xa49f5341, 0x7a029cf2), TOBN(0xa88c68b8, 0x4023890d), - TOBN(0xbc275041, 0x7337aaa8), TOBN(0x9ed364ad, 0x0eb384f4), - TOBN(0xe0816f85, 0x29aba92f), TOBN(0x2e9e1941, 0x04e38a88), - TOBN(0x57eef44a, 0x3dafd2d5), TOBN(0x35d1fae5, 0x97ed98d8), - TOBN(0x50628c09, 0x2307f9b1), TOBN(0x09d84aae, 0xd6cba5c6), - TOBN(0x67071bc7, 0x88aaa691), TOBN(0x2dea57a9, 0xafe6cb03), - TOBN(0xdfe11bb4, 0x3d78ac01), TOBN(0x7286418c, 0x7fd7aa51), - TOBN(0xfabf7709, 0x77f7195a), TOBN(0x8ec86167, 0xadeb838f), - TOBN(0xea1285a8, 0xbb4f012d), TOBN(0xd6883503, 0x9a3eab3f), - TOBN(0xee5d24f8, 0x309004c2), TOBN(0xa96e4b76, 0x13ffe95e), - TOBN(0x0cdffe12, 0xbd223ea4), TOBN(0x8f5c2ee5, 0xb6739a53), - TOBN(0x5cb4aaa5, 0xdd968198), TOBN(0xfa131c52, 0x72413a6c), - TOBN(0x53d46a90, 0x9536d903), TOBN(0xb270f0d3, 0x48606d8e), - TOBN(0x518c7564, 0xa053a3bc), TOBN(0x088254b7, 0x1a86caef), - TOBN(0xb3ba8cb4, 0x0ab5efd0), TOBN(0x5c59900e, 0x4605945d), - TOBN(0xecace1dd, 0xa1887395), TOBN(0x40960f36, 0x932a65de), - TOBN(0x9611ff5c, 0x3aa95529), TOBN(0xc58215b0, 0x7c1e5a36), - TOBN(0xd48c9b58, 0xf0e1a524), TOBN(0xb406856b, 0xf590dfb8), - TOBN(0xc7605e04, 0x9cd95662), TOBN(0x0dd036ee, 0xa33ecf82), - TOBN(0xa50171ac, 0xc33156b3), TOBN(0xf09d24ea, 0x4a80172e), - TOBN(0x4e1f72c6, 0x76dc8eef), TOBN(0xe60caadc, 0x5e3d44ee), - TOBN(0x006ef8a6, 0x979b1d8f), TOBN(0x60908a1c, 0x97788d26), - TOBN(0x6e08f95b, 0x266feec0), TOBN(0x618427c2, 0x22e8c94e), - TOBN(0x3d613339, 0x59145a65), TOBN(0xcd9bc368, 0xfa406337), - TOBN(0x82d11be3, 0x2d8a52a0), TOBN(0xf6877b27, 0x97a1c590), - TOBN(0x837a819b, 0xf5cbdb25), TOBN(0x2a4fd1d8, 0xde090249), - TOBN(0x622a7de7, 0x74990e5f), TOBN(0x840fa5a0, 0x7945511b), - TOBN(0x30b974be, 0x6558842d), TOBN(0x70df8c64, 0x17f3d0a6), - TOBN(0x7c803520, 0x7542e46d), TOBN(0x7251fe7f, 0xe4ecc823), - TOBN(0xe59134cb, 0x5e9aac9a), TOBN(0x11bb0934, 0xf0045d71), - TOBN(0x53e5d9b5, 0xdbcb1d4e), TOBN(0x8d97a905, 0x92defc91), - TOBN(0xfe289327, 0x7946d3f9), TOBN(0xe132bd24, 0x07472273), - TOBN(0xeeeb510c, 0x1eb6ae86), TOBN(0x777708c5, 0xf0595067), - TOBN(0x18e2c8cd, 0x1297029e), TOBN(0x2c61095c, 0xbbf9305e), - TOBN(0xe466c258, 0x6b85d6d9), TOBN(0x8ac06c36, 0xda1ea530), - TOBN(0xa365dc39, 0xa1304668), TOBN(0xe4a9c885, 0x07f89606), - TOBN(0x65a4898f, 0xacc7228d), TOBN(0x3e2347ff, 0x84ca8303), - TOBN(0xa5f6fb77, 0xea7d23a3), TOBN(0x2fac257d, 0x672a71cd), - TOBN(0x6908bef8, 0x7e6a44d3), TOBN(0x8ff87566, 0x891d3d7a), - TOBN(0xe58e90b3, 0x6b0cf82e), TOBN(0x6438d246, 0x2615b5e7), - TOBN(0x07b1f8fc, 0x669c145a), TOBN(0xb0d8b2da, 0x36f1e1cb), - TOBN(0x54d5dadb, 0xd9184c4d), TOBN(0x3dbb18d5, 0xf93d9976), - TOBN(0x0a3e0f56, 0xd1147d47), TOBN(0x2afa8c8d, 0xa0a48609), - TOBN(0x275353e8, 0xbc36742c), TOBN(0x898f427e, 0xeea0ed90), - TOBN(0x26f4947e, 0x3e477b00), TOBN(0x8ad8848a, 0x308741e3), - TOBN(0x6c703c38, 0xd74a2a46), TOBN(0x5e3e05a9, 0x9ba17ba2), - TOBN(0xc1fa6f66, 0x4ab9a9e4), TOBN(0x474a2d9a, 0x3841d6ec), - TOBN(0x871239ad, 0x653ae326), TOBN(0x14bcf72a, 0xa74cbb43), - TOBN(0x8737650e, 0x20d4c083), TOBN(0x3df86536, 0x110ed4af), - TOBN(0xd2d86fe7, 0xb53ca555), TOBN(0x688cb00d, 0xabd5d538), - TOBN(0xcf81bda3, 0x1ad38468), TOBN(0x7ccfe3cc, 0xf01167b6), - TOBN(0xcf4f47e0, 0x6c4c1fe6), TOBN(0x557e1f1a, 0x298bbb79), - TOBN(0xf93b974f, 0x30d45a14), TOBN(0x174a1d2d, 0x0baf97c4), - TOBN(0x7a003b30, 0xc51fbf53), TOBN(0xd8940991, 0xee68b225), - TOBN(0x5b0aa7b7, 0x1c0f4173), TOBN(0x975797c9, 0xa20a7153), - TOBN(0x26e08c07, 0xe3533d77), TOBN(0xd7222e6a, 0x2e341c99), - TOBN(0x9d60ec3d, 0x8d2dc4ed), TOBN(0xbdfe0d8f, 0x7c476cf8), - TOBN(0x1fe59ab6, 0x1d056605), TOBN(0xa9ea9df6, 0x86a8551f), - TOBN(0x8489941e, 0x47fb8d8c), TOBN(0xfeb874eb, 0x4a7f1b10), - TOBN(0xfe5fea86, 0x7ee0d98f), TOBN(0x201ad34b, 0xdbf61864), - TOBN(0x45d8fe47, 0x37c031d4), TOBN(0xd5f49fae, 0x795f0822), - TOBN(0xdb0fb291, 0xc7f4a40c), TOBN(0x2e69d9c1, 0x730ddd92), - TOBN(0x754e1054, 0x49d76987), TOBN(0x8a24911d, 0x7662db87), - TOBN(0x61fc1810, 0x60a71676), TOBN(0xe852d1a8, 0xf66a8ad1), - TOBN(0x172bbd65, 0x6417231e), TOBN(0x0d6de7bd, 0x3babb11f), - TOBN(0x6fde6f88, 0xc8e347f8), TOBN(0x1c587547, 0x9bd99cc3), - TOBN(0x78e54ed0, 0x34076950), TOBN(0x97f0f334, 0x796e83ba), - TOBN(0xe4dbe1ce, 0x4924867a), TOBN(0xbd5f51b0, 0x60b84917), - TOBN(0x37530040, 0x3cb09a79), TOBN(0xdb3fe0f8, 0xff1743d8), - TOBN(0xed7894d8, 0x556fa9db), TOBN(0xfa262169, 0x23412fbf), - TOBN(0x563be0db, 0xba7b9291), TOBN(0x6ca8b8c0, 0x0c9fb234), - TOBN(0xed406aa9, 0xbd763802), TOBN(0xc21486a0, 0x65303da1), - TOBN(0x61ae291e, 0xc7e62ec4), TOBN(0x622a0492, 0xdf99333e), - TOBN(0x7fd80c9d, 0xbb7a8ee0), TOBN(0xdc2ed3bc, 0x6c01aedb), - TOBN(0x35c35a12, 0x08be74ec), TOBN(0xd540cb1a, 0x469f671f), - TOBN(0xd16ced4e, 0xcf84f6c7), TOBN(0x8561fb9c, 0x2d090f43), - TOBN(0x7e693d79, 0x6f239db4), TOBN(0xa736f928, 0x77bd0d94), - TOBN(0x07b4d929, 0x2c1950ee), TOBN(0xda177543, 0x56dc11b3), - TOBN(0xa5dfbbaa, 0x7a6a878e), TOBN(0x1c70cb29, 0x4decb08a), - TOBN(0xfba28c8b, 0x6f0f7c50), TOBN(0xa8eba2b8, 0x854dcc6d), - TOBN(0x5ff8e89a, 0x36b78642), TOBN(0x070c1c8e, 0xf6873adf), - TOBN(0xbbd3c371, 0x6484d2e4), TOBN(0xfb78318f, 0x0d414129), - TOBN(0x2621a39c, 0x6ad93b0b), TOBN(0x979d74c2, 0xa9e917f7), - TOBN(0xfc195647, 0x61fb0428), TOBN(0x4d78954a, 0xbee624d4), - TOBN(0xb94896e0, 0xb8ae86fd), TOBN(0x6667ac0c, 0xc91c8b13), - TOBN(0x9f180512, 0x43bcf832), TOBN(0xfbadf8b7, 0xa0010137), - TOBN(0xc69b4089, 0xb3ba8aa7), TOBN(0xfac4bacd, 0xe687ce85), - TOBN(0x9164088d, 0x977eab40), TOBN(0x51f4c5b6, 0x2760b390), - TOBN(0xd238238f, 0x340dd553), TOBN(0x358566c3, 0xdb1d31c9), - TOBN(0x3a5ad69e, 0x5068f5ff), TOBN(0xf31435fc, 0xdaff6b06), - TOBN(0xae549a5b, 0xd6debff0), TOBN(0x59e5f0b7, 0x75e01331), - TOBN(0x5d492fb8, 0x98559acf), TOBN(0x96018c2e, 0x4db79b50), - TOBN(0x55f4a48f, 0x609f66aa), TOBN(0x1943b3af, 0x4900a14f), - TOBN(0xc22496df, 0x15a40d39), TOBN(0xb2a44684, 0x4c20f7c5), - TOBN(0x76a35afa, 0x3b98404c), TOBN(0xbec75725, 0xff5d1b77), - TOBN(0xb67aa163, 0xbea06444), TOBN(0x27e95bb2, 0xf724b6f2), - TOBN(0x3c20e3e9, 0xd238c8ab), TOBN(0x1213754e, 0xddd6ae17), - TOBN(0x8c431020, 0x716e0f74), TOBN(0x6679c82e, 0xffc095c2), - TOBN(0x2eb3adf4, 0xd0ac2932), TOBN(0x2cc970d3, 0x01bb7a76), - TOBN(0x70c71f2f, 0x740f0e66), TOBN(0x545c616b, 0x2b6b23cc), - TOBN(0x4528cfcb, 0xb40a8bd7), TOBN(0xff839633, 0x2ab27722), - TOBN(0x049127d9, 0x025ac99a), TOBN(0xd314d4a0, 0x2b63e33b), - TOBN(0xc8c310e7, 0x28d84519), TOBN(0x0fcb8983, 0xb3bc84ba), - TOBN(0x2cc52261, 0x38634818), TOBN(0x501814f4, 0xb44c2e0b), - TOBN(0xf7e181aa, 0x54dfdba3), TOBN(0xcfd58ff0, 0xe759718c), - TOBN(0xf90cdb14, 0xd3b507a8), TOBN(0x57bd478e, 0xc50bdad8), - TOBN(0x29c197e2, 0x50e5f9aa), TOBN(0x4db6eef8, 0xe40bc855), - TOBN(0x2cc8f21a, 0xd1fc0654), TOBN(0xc71cc963, 0x81269d73), - TOBN(0xecfbb204, 0x077f49f9), TOBN(0xdde92571, 0xca56b793), - TOBN(0x9abed6a3, 0xf97ad8f7), TOBN(0xe6c19d3f, 0x924de3bd), - TOBN(0x8dce92f4, 0xa140a800), TOBN(0x85f44d1e, 0x1337af07), - TOBN(0x5953c08b, 0x09d64c52), TOBN(0xa1b5e49f, 0xf5df9749), - TOBN(0x336a8fb8, 0x52735f7d), TOBN(0xb332b6db, 0x9add676b), - TOBN(0x558b88a0, 0xb4511aa4), TOBN(0x09788752, 0xdbd5cc55), - TOBN(0x16b43b9c, 0xd8cd52bd), TOBN(0x7f0bc5a0, 0xc2a2696b), - TOBN(0x146e12d4, 0xc11f61ef), TOBN(0x9ce10754, 0x3a83e79e), - TOBN(0x08ec73d9, 0x6cbfca15), TOBN(0x09ff29ad, 0x5b49653f), - TOBN(0xe31b72bd, 0xe7da946e), TOBN(0xebf9eb3b, 0xee80a4f2), - TOBN(0xd1aabd08, 0x17598ce4), TOBN(0x18b5fef4, 0x53f37e80), - TOBN(0xd5d5cdd3, 0x5958cd79), TOBN(0x3580a1b5, 0x1d373114), - TOBN(0xa36e4c91, 0xfa935726), TOBN(0xa38c534d, 0xef20d760), - TOBN(0x7088e40a, 0x2ff5845b), TOBN(0xe5bb40bd, 0xbd78177f), - TOBN(0x4f06a7a8, 0x857f9920), TOBN(0xe3cc3e50, 0xe968f05d), - TOBN(0x1d68b7fe, 0xe5682d26), TOBN(0x5206f76f, 0xaec7f87c), - TOBN(0x41110530, 0x041951ab), TOBN(0x58ec52c1, 0xd4b5a71a), - TOBN(0xf3488f99, 0x0f75cf9a), TOBN(0xf411951f, 0xba82d0d5), - TOBN(0x27ee75be, 0x618895ab), TOBN(0xeae060d4, 0x6d8aab14), - TOBN(0x9ae1df73, 0x7fb54dc2), TOBN(0x1f3e391b, 0x25963649), - TOBN(0x242ec32a, 0xfe055081), TOBN(0x5bd450ef, 0x8491c9bd), - TOBN(0x367efc67, 0x981eb389), TOBN(0xed7e1928, 0x3a0550d5), - TOBN(0x362e776b, 0xab3ce75c), TOBN(0xe890e308, 0x1f24c523), - TOBN(0xb961b682, 0xfeccef76), TOBN(0x8b8e11f5, 0x8bba6d92), - TOBN(0x8f2ccc4c, 0x2b2375c4), TOBN(0x0d7f7a52, 0xe2f86cfa), - TOBN(0xfd94d30a, 0x9efe5633), TOBN(0x2d8d246b, 0x5451f934), - TOBN(0x2234c6e3, 0x244e6a00), TOBN(0xde2b5b0d, 0xddec8c50), - TOBN(0x2ce53c5a, 0xbf776f5b), TOBN(0x6f724071, 0x60357b05), - TOBN(0xb2593717, 0x71bf3f7a), TOBN(0x87d2501c, 0x440c4a9f), - TOBN(0x440552e1, 0x87b05340), TOBN(0xb7bf7cc8, 0x21624c32), - TOBN(0x4155a6ce, 0x22facddb), TOBN(0x5a4228cb, 0x889837ef), - TOBN(0xef87d6d6, 0xfd4fd671), TOBN(0xa233687e, 0xc2daa10e), - TOBN(0x75622244, 0x03c0eb96), TOBN(0x7632d184, 0x8bf19be6), - TOBN(0x05d0f8e9, 0x40735ff4), TOBN(0x3a3e6e13, 0xc00931f1), - TOBN(0x31ccde6a, 0xdafe3f18), TOBN(0xf381366a, 0xcfe51207), - TOBN(0x24c222a9, 0x60167d92), TOBN(0x62f9d6f8, 0x7529f18c), - TOBN(0x412397c0, 0x0353b114), TOBN(0x334d89dc, 0xef808043), - TOBN(0xd9ec63ba, 0x2a4383ce), TOBN(0xcec8e937, 0x5cf92ba0), - TOBN(0xfb8b4288, 0xc8be74c0), TOBN(0x67d6912f, 0x105d4391), - TOBN(0x7b996c46, 0x1b913149), TOBN(0x36aae2ef, 0x3a4e02da), - TOBN(0xb68aa003, 0x972de594), TOBN(0x284ec70d, 0x4ec6d545), - TOBN(0xf3d2b2d0, 0x61391d54), TOBN(0x69c5d5d6, 0xfe114e92), - TOBN(0xbe0f00b5, 0xb4482dff), TOBN(0xe1596fa5, 0xf5bf33c5), - TOBN(0x10595b56, 0x96a71cba), TOBN(0x944938b2, 0xfdcadeb7), - TOBN(0xa282da4c, 0xfccd8471), TOBN(0x98ec05f3, 0x0d37bfe1), - TOBN(0xe171ce1b, 0x0698304a), TOBN(0x2d691444, 0x21bdf79b), - TOBN(0xd0cd3b74, 0x1b21dec1), TOBN(0x712ecd8b, 0x16a15f71), - TOBN(0x8d4c00a7, 0x00fd56e1), TOBN(0x02ec9692, 0xf9527c18), - TOBN(0x21c44937, 0x4a3e42e1), TOBN(0x9176fbab, 0x1392ae0a), - TOBN(0x8726f1ba, 0x44b7b618), TOBN(0xb4d7aae9, 0xf1de491c), - TOBN(0xf91df7b9, 0x07b582c0), TOBN(0x7e116c30, 0xef60aa3a), - TOBN(0x99270f81, 0x466265d7), TOBN(0xb15b6fe2, 0x4df7adf0), - TOBN(0xfe33b2d3, 0xf9738f7f), TOBN(0x48553ab9, 0xd6d70f95), - TOBN(0x2cc72ac8, 0xc21e94db), TOBN(0x795ac38d, 0xbdc0bbee), - TOBN(0x0a1be449, 0x2e40478f), TOBN(0x81bd3394, 0x052bde55), - TOBN(0x63c8dbe9, 0x56b3c4f2), TOBN(0x017a99cf, 0x904177cc), - TOBN(0x947bbddb, 0x4d010fc1), TOBN(0xacf9b00b, 0xbb2c9b21), - TOBN(0x2970bc8d, 0x47173611), TOBN(0x1a4cbe08, 0xac7d756f), - TOBN(0x06d9f4aa, 0x67d541a2), TOBN(0xa3e8b689, 0x59c2cf44), - TOBN(0xaad066da, 0x4d88f1dd), TOBN(0xc604f165, 0x7ad35dea), - TOBN(0x7edc0720, 0x4478ca67), TOBN(0xa10dfae0, 0xba02ce06), - TOBN(0xeceb1c76, 0xaf36f4e4), TOBN(0x994b2292, 0xaf3f8f48), - TOBN(0xbf9ed77b, 0x77c8a68c), TOBN(0x74f544ea, 0x51744c9d), - TOBN(0x82d05bb9, 0x8113a757), TOBN(0x4ef2d2b4, 0x8a9885e4), - TOBN(0x1e332be5, 0x1aa7865f), TOBN(0x22b76b18, 0x290d1a52), - TOBN(0x308a2310, 0x44351683), TOBN(0x9d861896, 0xa3f22840), - TOBN(0x5959ddcd, 0x841ed947), TOBN(0x0def0c94, 0x154b73bf), - TOBN(0xf0105417, 0x4c7c15e0), TOBN(0x539bfb02, 0x3a277c32), - TOBN(0xe699268e, 0xf9dccf5f), TOBN(0x9f5796a5, 0x0247a3bd), - TOBN(0x8b839de8, 0x4f157269), TOBN(0xc825c1e5, 0x7a30196b), - TOBN(0x6ef0aabc, 0xdc8a5a91), TOBN(0xf4a8ce6c, 0x498b7fe6), - TOBN(0x1cce35a7, 0x70cbac78), TOBN(0x83488e9b, 0xf6b23958), - TOBN(0x0341a070, 0xd76cb011), TOBN(0xda6c9d06, 0xae1b2658), - TOBN(0xb701fb30, 0xdd648c52), TOBN(0x994ca02c, 0x52fb9fd1), - TOBN(0x06933117, 0x6f563086), TOBN(0x3d2b8100, 0x17856bab), - TOBN(0xe89f48c8, 0x5963a46e), TOBN(0x658ab875, 0xa99e61c7), - TOBN(0x6e296f87, 0x4b8517b4), TOBN(0x36c4fcdc, 0xfc1bc656), - TOBN(0xde5227a1, 0xa3906def), TOBN(0x9fe95f57, 0x62418945), - TOBN(0x20c91e81, 0xfdd96cde), TOBN(0x5adbe47e, 0xda4480de), - TOBN(0xa009370f, 0x396de2b6), TOBN(0x98583d4b, 0xf0ecc7bd), - TOBN(0xf44f6b57, 0xe51d0672), TOBN(0x03d6b078, 0x556b1984), - TOBN(0x27dbdd93, 0xb0b64912), TOBN(0x9b3a3434, 0x15687b09), - TOBN(0x0dba6461, 0x51ec20a9), TOBN(0xec93db7f, 0xff28187c), - TOBN(0x00ff8c24, 0x66e48bdd), TOBN(0x2514f2f9, 0x11ccd78e), - TOBN(0xeba11f4f, 0xe1250603), TOBN(0x8a22cd41, 0x243fa156), - TOBN(0xa4e58df4, 0xb283e4c6), TOBN(0x78c29859, 0x8b39783f), - TOBN(0x5235aee2, 0xa5259809), TOBN(0xc16284b5, 0x0e0227dd), - TOBN(0xa5f57916, 0x1338830d), TOBN(0x6d4b8a6b, 0xd2123fca), - TOBN(0x236ea68a, 0xf9c546f8), TOBN(0xc1d36873, 0xfa608d36), - TOBN(0xcd76e495, 0x8d436d13), TOBN(0xd4d9c221, 0x8fb080af), - TOBN(0x665c1728, 0xe8ad3fb5), TOBN(0xcf1ebe4d, 0xb3d572e0), - TOBN(0xa7a8746a, 0x584c5e20), TOBN(0x267e4ea1, 0xb9dc7035), - TOBN(0x593a15cf, 0xb9548c9b), TOBN(0x5e6e2135, 0x4bd012f3), - TOBN(0xdf31cc6a, 0x8c8f936e), TOBN(0x8af84d04, 0xb5c241dc), - TOBN(0x63990a6f, 0x345efb86), TOBN(0x6fef4e61, 0xb9b962cb)}, - {TOBN(0xf6368f09, 0x25722608), TOBN(0x131260db, 0x131cf5c6), - TOBN(0x40eb353b, 0xfab4f7ac), TOBN(0x85c78880, 0x37eee829), - TOBN(0x4c1581ff, 0xc3bdf24e), TOBN(0x5bff75cb, 0xf5c3c5a8), - TOBN(0x35e8c83f, 0xa14e6f40), TOBN(0xb81d1c0f, 0x0295e0ca), - TOBN(0xfcde7cc8, 0xf43a730f), TOBN(0xe89b6f3c, 0x33ab590e), - TOBN(0xc823f529, 0xad03240b), TOBN(0x82b79afe, 0x98bea5db), - TOBN(0x568f2856, 0x962fe5de), TOBN(0x0c590adb, 0x60c591f3), - TOBN(0x1fc74a14, 0x4a28a858), TOBN(0x3b662498, 0xb3203f4c), - TOBN(0x91e3cf0d, 0x6c39765a), TOBN(0xa2db3acd, 0xac3cca0b), - TOBN(0x288f2f08, 0xcb953b50), TOBN(0x2414582c, 0xcf43cf1a), - TOBN(0x8dec8bbc, 0x60eee9a8), TOBN(0x54c79f02, 0x729aa042), - TOBN(0xd81cd5ec, 0x6532f5d5), TOBN(0xa672303a, 0xcf82e15f), - TOBN(0x376aafa8, 0x719c0563), TOBN(0xcd8ad2dc, 0xbc5fc79f), - TOBN(0x303fdb9f, 0xcb750cd3), TOBN(0x14ff052f, 0x4418b08e), - TOBN(0xf75084cf, 0x3e2d6520), TOBN(0x7ebdf0f8, 0x144ed509), - TOBN(0xf43bf0f2, 0xd3f25b98), TOBN(0x86ad71cf, 0xa354d837), - TOBN(0xb827fe92, 0x26f43572), TOBN(0xdfd3ab5b, 0x5d824758), - TOBN(0x315dd23a, 0x539094c1), TOBN(0x85c0e37a, 0x66623d68), - TOBN(0x575c7972, 0x7be19ae0), TOBN(0x616a3396, 0xdf0d36b5), - TOBN(0xa1ebb3c8, 0x26b1ff7e), TOBN(0x635b9485, 0x140ad453), - TOBN(0x92bf3cda, 0xda430c0b), TOBN(0x4702850e, 0x3a96dac6), - TOBN(0xc91cf0a5, 0x15ac326a), TOBN(0x95de4f49, 0xab8c25e4), - TOBN(0xb01bad09, 0xe265c17c), TOBN(0x24e45464, 0x087b3881), - TOBN(0xd43e583c, 0xe1fac5ca), TOBN(0xe17cb318, 0x6ead97a6), - TOBN(0x6cc39243, 0x74dcec46), TOBN(0x33cfc02d, 0x54c2b73f), - TOBN(0x82917844, 0xf26cd99c), TOBN(0x8819dd95, 0xd1773f89), - TOBN(0x09572aa6, 0x0871f427), TOBN(0x8e0cf365, 0xf6f01c34), - TOBN(0x7fa52988, 0xbff1f5af), TOBN(0x4eb357ea, 0xe75e8e50), - TOBN(0xd9d0c8c4, 0x868af75d), TOBN(0xd7325cff, 0x45c8c7ea), - TOBN(0xab471996, 0xcc81ecb0), TOBN(0xff5d55f3, 0x611824ed), - TOBN(0xbe314541, 0x1977a0ee), TOBN(0x5085c4c5, 0x722038c6), - TOBN(0x2d5335bf, 0xf94bb495), TOBN(0x894ad8a6, 0xc8e2a082), - TOBN(0x5c3e2341, 0xada35438), TOBN(0xf4a9fc89, 0x049b8c4e), - TOBN(0xbeeb355a, 0x9f17cf34), TOBN(0x3f311e0e, 0x6c91fe10), - TOBN(0xc2d20038, 0x92ab9891), TOBN(0x257bdcc1, 0x3e8ce9a9), - TOBN(0x1b2d9789, 0x88c53bee), TOBN(0x927ce89a, 0xcdba143a), - TOBN(0xb0a32cca, 0x523db280), TOBN(0x5c889f8a, 0x50d43783), - TOBN(0x503e04b3, 0x4897d16f), TOBN(0x8cdb6e78, 0x08f5f2e8), - TOBN(0x6ab91cf0, 0x179c8e74), TOBN(0xd8874e52, 0x48211d60), - TOBN(0xf948d4d5, 0xea851200), TOBN(0x4076d41e, 0xe6f9840a), - TOBN(0xc20e263c, 0x47b517ea), TOBN(0x79a448fd, 0x30685e5e), - TOBN(0xe55f6f78, 0xf90631a0), TOBN(0x88a790b1, 0xa79e6346), - TOBN(0x62160c7d, 0x80969fe8), TOBN(0x54f92fd4, 0x41491bb9), - TOBN(0xa6645c23, 0x5c957526), TOBN(0xf44cc5ae, 0xbea3ce7b), - TOBN(0xf7628327, 0x8b1e68b7), TOBN(0xc731ad7a, 0x303f29d3), - TOBN(0xfe5a9ca9, 0x57d03ecb), TOBN(0x96c0d50c, 0x41bc97a7), - TOBN(0xc4669fe7, 0x9b4f7f24), TOBN(0xfdd781d8, 0x3d9967ef), - TOBN(0x7892c7c3, 0x5d2c208d), TOBN(0x8bf64f7c, 0xae545cb3), - TOBN(0xc01f862c, 0x467be912), TOBN(0xf4c85ee9, 0xc73d30cc), - TOBN(0x1fa6f4be, 0x6ab83ec7), TOBN(0xa07a3c1c, 0x4e3e3cf9), - TOBN(0x87f8ef45, 0x0c00beb3), TOBN(0x30e2c2b3, 0x000d4c3e), - TOBN(0x1aa00b94, 0xfe08bf5b), TOBN(0x32c133aa, 0x9224ef52), - TOBN(0x38df16bb, 0x32e5685d), TOBN(0x68a9e069, 0x58e6f544), - TOBN(0x495aaff7, 0xcdc5ebc6), TOBN(0xf894a645, 0x378b135f), - TOBN(0xf316350a, 0x09e27ecf), TOBN(0xeced201e, 0x58f7179d), - TOBN(0x2eec273c, 0xe97861ba), TOBN(0x47ec2cae, 0xd693be2e), - TOBN(0xfa4c97c4, 0xf68367ce), TOBN(0xe4f47d0b, 0xbe5a5755), - TOBN(0x17de815d, 0xb298a979), TOBN(0xd7eca659, 0xc177dc7d), - TOBN(0x20fdbb71, 0x49ded0a3), TOBN(0x4cb2aad4, 0xfb34d3c5), - TOBN(0x2cf31d28, 0x60858a33), TOBN(0x3b6873ef, 0xa24aa40f), - TOBN(0x540234b2, 0x2c11bb37), TOBN(0x2d0366dd, 0xed4c74a3), - TOBN(0xf9a968da, 0xeec5f25d), TOBN(0x36601068, 0x67b63142), - TOBN(0x07cd6d2c, 0x68d7b6d4), TOBN(0xa8f74f09, 0x0c842942), - TOBN(0xe2751404, 0x7768b1ee), TOBN(0x4b5f7e89, 0xfe62aee4), - TOBN(0xc6a77177, 0x89070d26), TOBN(0xa1f28e4e, 0xdd1c8bc7), - TOBN(0xea5f4f06, 0x469e1f17), TOBN(0x78fc242a, 0xfbdb78e0), - TOBN(0xc9c7c592, 0x8b0588f1), TOBN(0xb6b7a0fd, 0x1535921e), - TOBN(0xcc5bdb91, 0xbde5ae35), TOBN(0xb42c485e, 0x12ff1864), - TOBN(0xa1113e13, 0xdbab98aa), TOBN(0xde9d469b, 0xa17b1024), - TOBN(0x23f48b37, 0xc0462d3a), TOBN(0x3752e537, 0x7c5c078d), - TOBN(0xe3a86add, 0x15544eb9), TOBN(0xf013aea7, 0x80fba279), - TOBN(0x8b5bb76c, 0xf22001b5), TOBN(0xe617ba14, 0xf02891ab), - TOBN(0xd39182a6, 0x936219d3), TOBN(0x5ce1f194, 0xae51cb19), - TOBN(0xc78f8598, 0xbf07a74c), TOBN(0x6d7158f2, 0x22cbf1bc), - TOBN(0x3b846b21, 0xe300ce18), TOBN(0x35fba630, 0x2d11275d), - TOBN(0x5fe25c36, 0xa0239b9b), TOBN(0xd8beb35d, 0xdf05d940), - TOBN(0x4db02bb0, 0x1f7e320d), TOBN(0x0641c364, 0x6da320ea), - TOBN(0x6d95fa5d, 0x821389a3), TOBN(0x92699748, 0x8fcd8e3d), - TOBN(0x316fef17, 0xceb6c143), TOBN(0x67fcb841, 0xd933762b), - TOBN(0xbb837e35, 0x118b17f8), TOBN(0x4b92552f, 0x9fd24821), - TOBN(0xae6bc70e, 0x46aca793), TOBN(0x1cf0b0e4, 0xe579311b), - TOBN(0x8dc631be, 0x5802f716), TOBN(0x099bdc6f, 0xbddbee4d), - TOBN(0xcc352bb2, 0x0caf8b05), TOBN(0xf74d505a, 0x72d63df2), - TOBN(0xb9876d4b, 0x91c4f408), TOBN(0x1ce18473, 0x9e229b2d), - TOBN(0x49507597, 0x83abdb4a), TOBN(0x850fbcb6, 0xdee84b18), - TOBN(0x6325236e, 0x609e67dc), TOBN(0x04d831d9, 0x9336c6d8), - TOBN(0x8deaae3b, 0xfa12d45d), TOBN(0xe425f8ce, 0x4746e246), - TOBN(0x8004c175, 0x24f5f31e), TOBN(0xaca16d8f, 0xad62c3b7), - TOBN(0x0dc15a6a, 0x9152f934), TOBN(0xf1235e5d, 0xed0e12c1), - TOBN(0xc33c06ec, 0xda477dac), TOBN(0x76be8732, 0xb2ea0006), - TOBN(0xcf3f7831, 0x0c0cd313), TOBN(0x3c524553, 0xa614260d), - TOBN(0x31a756f8, 0xcab22d15), TOBN(0x03ee10d1, 0x77827a20), - TOBN(0xd1e059b2, 0x1994ef20), TOBN(0x2a653b69, 0x638ae318), - TOBN(0x70d5eb58, 0x2f699010), TOBN(0x279739f7, 0x09f5f84a), - TOBN(0x5da4663c, 0x8b799336), TOBN(0xfdfdf14d, 0x203c37eb), - TOBN(0x32d8a9dc, 0xa1dbfb2d), TOBN(0xab40cff0, 0x77d48f9b), - TOBN(0xc018b383, 0xd20b42d5), TOBN(0xf9a810ef, 0x9f78845f), - TOBN(0x40af3753, 0xbdba9df0), TOBN(0xb90bdcfc, 0x131dfdf9), - TOBN(0x18720591, 0xf01ab782), TOBN(0xc823f211, 0x6af12a88), - TOBN(0xa51b80f3, 0x0dc14401), TOBN(0xde248f77, 0xfb2dfbe3), - TOBN(0xef5a44e5, 0x0cafe751), TOBN(0x73997c9c, 0xd4dcd221), - TOBN(0x32fd86d1, 0xde854024), TOBN(0xd5b53adc, 0xa09b84bb), - TOBN(0x008d7a11, 0xdcedd8d1), TOBN(0x406bd1c8, 0x74b32c84), - TOBN(0x5d4472ff, 0x05dde8b1), TOBN(0x2e25f2cd, 0xfce2b32f), - TOBN(0xbec0dd5e, 0x29dfc254), TOBN(0x4455fcf6, 0x2b98b267), - TOBN(0x0b4d43a5, 0xc72df2ad), TOBN(0xea70e6be, 0x48a75397), - TOBN(0x2aad6169, 0x5820f3bf), TOBN(0xf410d2dd, 0x9e37f68f), - TOBN(0x70fb7dba, 0x7be5ac83), TOBN(0x636bb645, 0x36ec3eec), - TOBN(0x27104ea3, 0x9754e21c), TOBN(0xbc87a3e6, 0x8d63c373), - TOBN(0x483351d7, 0x4109db9a), TOBN(0x0fa724e3, 0x60134da7), - TOBN(0x9ff44c29, 0xb0720b16), TOBN(0x2dd0cf13, 0x06aceead), - TOBN(0x5942758c, 0xe26929a6), TOBN(0x96c5db92, 0xb766a92b), - TOBN(0xcec7d4c0, 0x5f18395e), TOBN(0xd3f22744, 0x1f80d032), - TOBN(0x7a68b37a, 0xcb86075b), TOBN(0x074764dd, 0xafef92db), - TOBN(0xded1e950, 0x7bc7f389), TOBN(0xc580c850, 0xb9756460), - TOBN(0xaeeec2a4, 0x7da48157), TOBN(0x3f0b4e7f, 0x82c587b3), - TOBN(0x231c6de8, 0xa9f19c53), TOBN(0x5717bd73, 0x6974e34e), - TOBN(0xd9e1d216, 0xf1508fa9), TOBN(0x9f112361, 0xdadaa124), - TOBN(0x80145e31, 0x823b7348), TOBN(0x4dd8f0d5, 0xac634069), - TOBN(0xe3d82fc7, 0x2297c258), TOBN(0x276fcfee, 0x9cee7431), - TOBN(0x8eb61b5e, 0x2bc0aea9), TOBN(0x4f668fd5, 0xde329431), - TOBN(0x03a32ab1, 0x38e4b87e), TOBN(0xe1374517, 0x73d0ef0b), - TOBN(0x1a46f7e6, 0x853ac983), TOBN(0xc3bdf42e, 0x68e78a57), - TOBN(0xacf20785, 0x2ea96dd1), TOBN(0xa10649b9, 0xf1638460), - TOBN(0xf2369f0b, 0x879fbbed), TOBN(0x0ff0ae86, 0xda9d1869), - TOBN(0x5251d759, 0x56766f45), TOBN(0x4984d8c0, 0x2be8d0fc), - TOBN(0x7ecc95a6, 0xd21008f0), TOBN(0x29bd54a0, 0x3a1a1c49), - TOBN(0xab9828c5, 0xd26c50f3), TOBN(0x32c0087c, 0x51d0d251), - TOBN(0x9bac3ce6, 0x0c1cdb26), TOBN(0xcd94d947, 0x557ca205), - TOBN(0x1b1bd598, 0x9db1fdcd), TOBN(0x0eda0108, 0xa3d8b149), - TOBN(0x95066610, 0x56152fcc), TOBN(0xc2f037e6, 0xe7192b33), - TOBN(0xdeffb41a, 0xc92e05a4), TOBN(0x1105f6c2, 0xc2f6c62e), - TOBN(0x68e73500, 0x8733913c), TOBN(0xcce86163, 0x3f3adc40), - TOBN(0xf407a942, 0x38a278e9), TOBN(0xd13c1b9d, 0x2ab21292), - TOBN(0x93ed7ec7, 0x1c74cf5c), TOBN(0x8887dc48, 0xf1a4c1b4), - TOBN(0x3830ff30, 0x4b3a11f1), TOBN(0x358c5a3c, 0x58937cb6), - TOBN(0x027dc404, 0x89022829), TOBN(0x40e93977, 0x3b798f79), - TOBN(0x90ad3337, 0x38be6ead), TOBN(0x9c23f6bc, 0xf34c0a5d), - TOBN(0xd1711a35, 0xfbffd8bb), TOBN(0x60fcfb49, 0x1949d3dd), - TOBN(0x09c8ef4b, 0x7825d93a), TOBN(0x24233cff, 0xa0a8c968), - TOBN(0x67ade46c, 0xe6d982af), TOBN(0xebb6bf3e, 0xe7544d7c), - TOBN(0xd6b9ba76, 0x3d8bd087), TOBN(0x46fe382d, 0x4dc61280), - TOBN(0xbd39a7e8, 0xb5bdbd75), TOBN(0xab381331, 0xb8f228fe), - TOBN(0x0709a77c, 0xce1c4300), TOBN(0x6a247e56, 0xf337ceac), - TOBN(0x8f34f21b, 0x636288be), TOBN(0x9dfdca74, 0xc8a7c305), - TOBN(0x6decfd1b, 0xea919e04), TOBN(0xcdf2688d, 0x8e1991f8), - TOBN(0xe607df44, 0xd0f8a67e), TOBN(0xd985df4b, 0x0b58d010), - TOBN(0x57f834c5, 0x0c24f8f4), TOBN(0xe976ef56, 0xa0bf01ae), - TOBN(0x536395ac, 0xa1c32373), TOBN(0x351027aa, 0x734c0a13), - TOBN(0xd2f1b5d6, 0x5e6bd5bc), TOBN(0x2b539e24, 0x223debed), - TOBN(0xd4994cec, 0x0eaa1d71), TOBN(0x2a83381d, 0x661dcf65), - TOBN(0x5f1aed2f, 0x7b54c740), TOBN(0x0bea3fa5, 0xd6dda5ee), - TOBN(0x9d4fb684, 0x36cc6134), TOBN(0x8eb9bbf3, 0xc0a443dd), - TOBN(0xfc500e2e, 0x383b7d2a), TOBN(0x7aad621c, 0x5b775257), - TOBN(0x69284d74, 0x0a8f7cc0), TOBN(0xe820c2ce, 0x07562d65), - TOBN(0xbf9531b9, 0x499758ee), TOBN(0x73e95ca5, 0x6ee0cc2d), - TOBN(0xf61790ab, 0xfbaf50a5), TOBN(0xdf55e76b, 0x684e0750), - TOBN(0xec516da7, 0xf176b005), TOBN(0x575553bb, 0x7a2dddc7), - TOBN(0x37c87ca3, 0x553afa73), TOBN(0x315f3ffc, 0x4d55c251), - TOBN(0xe846442a, 0xaf3e5d35), TOBN(0x61b91149, 0x6495ff28), - TOBN(0x23cc95d3, 0xfa326dc3), TOBN(0x1df4da1f, 0x18fc2cea), - TOBN(0x24bf9adc, 0xd0a37d59), TOBN(0xb6710053, 0x320d6e1e), - TOBN(0x96f9667e, 0x618344d1), TOBN(0xcc7ce042, 0xa06445af), - TOBN(0xa02d8514, 0xd68dbc3a), TOBN(0x4ea109e4, 0x280b5a5b), - TOBN(0x5741a7ac, 0xb40961bf), TOBN(0x4ada5937, 0x6aa56bfa), - TOBN(0x7feb9145, 0x02b765d1), TOBN(0x561e97be, 0xe6ad1582), - TOBN(0xbbc4a5b6, 0xda3982f5), TOBN(0x0c2659ed, 0xb546f468), - TOBN(0xb8e7e6aa, 0x59612d20), TOBN(0xd83dfe20, 0xac19e8e0), - TOBN(0x8530c45f, 0xb835398c), TOBN(0x6106a8bf, 0xb38a41c2), - TOBN(0x21e8f9a6, 0x35f5dcdb), TOBN(0x39707137, 0xcae498ed), - TOBN(0x70c23834, 0xd8249f00), TOBN(0x9f14b58f, 0xab2537a0), - TOBN(0xd043c365, 0x5f61c0c2), TOBN(0xdc5926d6, 0x09a194a7), - TOBN(0xddec0339, 0x8e77738a), TOBN(0xd07a63ef, 0xfba46426), - TOBN(0x2e58e79c, 0xee7f6e86), TOBN(0xe59b0459, 0xff32d241), - TOBN(0xc5ec84e5, 0x20fa0338), TOBN(0x97939ac8, 0xeaff5ace), - TOBN(0x0310a4e3, 0xb4a38313), TOBN(0x9115fba2, 0x8f9d9885), - TOBN(0x8dd710c2, 0x5fadf8c3), TOBN(0x66be38a2, 0xce19c0e2), - TOBN(0xd42a279c, 0x4cfe5022), TOBN(0x597bb530, 0x0e24e1b8), - TOBN(0x3cde86b7, 0xc153ca7f), TOBN(0xa8d30fb3, 0x707d63bd), - TOBN(0xac905f92, 0xbd60d21e), TOBN(0x98e7ffb6, 0x7b9a54ab), - TOBN(0xd7147df8, 0xe9726a30), TOBN(0xb5e216ff, 0xafce3533), - TOBN(0xb550b799, 0x2ff1ec40), TOBN(0x6b613b87, 0xa1e953fd), - TOBN(0x87b88dba, 0x792d5610), TOBN(0x2ee1270a, 0xa190fbe1), - TOBN(0x02f4e2dc, 0x2ef581da), TOBN(0x016530e4, 0xeff82a95), - TOBN(0xcbb93dfd, 0x8fd6ee89), TOBN(0x16d3d986, 0x46848fff), - TOBN(0x600eff24, 0x1da47adf), TOBN(0x1b9754a0, 0x0ad47a71), - TOBN(0x8f9266df, 0x70c33b98), TOBN(0xaadc87ae, 0xdf34186e), - TOBN(0x0d2ce8e1, 0x4ad24132), TOBN(0x8a47cbfc, 0x19946eba), - TOBN(0x47feeb66, 0x62b5f3af), TOBN(0xcefab561, 0x0abb3734), - TOBN(0x449de60e, 0x19f35cb1), TOBN(0x39f8db14, 0x157f0eb9), - TOBN(0xffaecc5b, 0x3c61bfd6), TOBN(0xa5a4d41d, 0x41216703), - TOBN(0x7f8fabed, 0x224e1cc2), TOBN(0x0d5a8186, 0x871ad953), - TOBN(0xf10774f7, 0xd22da9a9), TOBN(0x45b8a678, 0xcc8a9b0d), - TOBN(0xd9c2e722, 0xbdc32cff), TOBN(0xbf71b5f5, 0x337202a5), - TOBN(0x95c57f2f, 0x69fc4db9), TOBN(0xb6dad34c, 0x765d01e1), - TOBN(0x7e0bd13f, 0xcb904635), TOBN(0x61751253, 0x763a588c), - TOBN(0xd85c2997, 0x81af2c2d), TOBN(0xc0f7d9c4, 0x81b9d7da), - TOBN(0x838a34ae, 0x08533e8d), TOBN(0x15c4cb08, 0x311d8311), - TOBN(0x97f83285, 0x8e121e14), TOBN(0xeea7dc1e, 0x85000a5f), - TOBN(0x0c6059b6, 0x5d256274), TOBN(0xec9beace, 0xb95075c0), - TOBN(0x173daad7, 0x1df97828), TOBN(0xbf851cb5, 0xa8937877), - TOBN(0xb083c594, 0x01646f3c), TOBN(0x3bad30cf, 0x50c6d352), - TOBN(0xfeb2b202, 0x496bbcea), TOBN(0x3cf9fd4f, 0x18a1e8ba), - TOBN(0xd26de7ff, 0x1c066029), TOBN(0x39c81e9e, 0x4e9ed4f8), - TOBN(0xd8be0cb9, 0x7b390d35), TOBN(0x01df2bbd, 0x964aab27), - TOBN(0x3e8c1a65, 0xc3ef64f8), TOBN(0x567291d1, 0x716ed1dd), - TOBN(0x95499c6c, 0x5f5406d3), TOBN(0x71fdda39, 0x5ba8e23f), - TOBN(0xcfeb320e, 0xd5096ece), TOBN(0xbe7ba92b, 0xca66dd16), - TOBN(0x4608d36b, 0xc6fb5a7d), TOBN(0xe3eea15a, 0x6d2dd0e0), - TOBN(0x75b0a3eb, 0x8f97a36a), TOBN(0xf59814cc, 0x1c83de1e), - TOBN(0x56c9c5b0, 0x1c33c23f), TOBN(0xa96c1da4, 0x6faa4136), - TOBN(0x46bf2074, 0xde316551), TOBN(0x3b866e7b, 0x1f756c8f), - TOBN(0x727727d8, 0x1495ed6b), TOBN(0xb2394243, 0xb682dce7), - TOBN(0x8ab8454e, 0x758610f3), TOBN(0xc243ce84, 0x857d72a4), - TOBN(0x7b320d71, 0xdbbf370f), TOBN(0xff9afa37, 0x78e0f7ca), - TOBN(0x0119d1e0, 0xea7b523f), TOBN(0xb997f8cb, 0x058c7d42), - TOBN(0x285bcd2a, 0x37bbb184), TOBN(0x51dcec49, 0xa45d1fa6), - TOBN(0x6ade3b64, 0xe29634cb), TOBN(0x080c94a7, 0x26b86ef1), - TOBN(0xba583db1, 0x2283fbe3), TOBN(0x902bddc8, 0x5a9315ed), - TOBN(0x07c1ccb3, 0x86964bec), TOBN(0x78f4eacf, 0xb6258301), - TOBN(0x4bdf3a49, 0x56f90823), TOBN(0xba0f5080, 0x741d777b), - TOBN(0x091d71c3, 0xf38bf760), TOBN(0x9633d50f, 0x9b625b02), - TOBN(0x03ecb743, 0xb8c9de61), TOBN(0xb4751254, 0x5de74720), - TOBN(0x9f9defc9, 0x74ce1cb2), TOBN(0x774a4f6a, 0x00bd32ef), - TOBN(0xaca385f7, 0x73848f22), TOBN(0x53dad716, 0xf3f8558e), - TOBN(0xab7b34b0, 0x93c471f9), TOBN(0xf530e069, 0x19644bc7), - TOBN(0x3d9fb1ff, 0xdd59d31a), TOBN(0x4382e0df, 0x08daa795), - TOBN(0x165c6f4b, 0xd5cc88d7), TOBN(0xeaa392d5, 0x4a18c900), - TOBN(0x94203c67, 0x648024ee), TOBN(0x188763f2, 0x8c2fabcd), - TOBN(0xa80f87ac, 0xbbaec835), TOBN(0x632c96e0, 0xf29d8d54), - TOBN(0x29b0a60e, 0x4c00a95e), TOBN(0x2ef17f40, 0xe011e9fa), - TOBN(0xf6c0e1d1, 0x15b77223), TOBN(0xaaec2c62, 0x14b04e32), - TOBN(0xd35688d8, 0x3d84e58c), TOBN(0x2af5094c, 0x958571db), - TOBN(0x4fff7e19, 0x760682a6), TOBN(0x4cb27077, 0xe39a407c), - TOBN(0x0f59c547, 0x4ff0e321), TOBN(0x169f34a6, 0x1b34c8ff), - TOBN(0x2bff1096, 0x52bc1ba7), TOBN(0xa25423b7, 0x83583544), - TOBN(0x5d55d5d5, 0x0ac8b782), TOBN(0xff6622ec, 0x2db3c892), - TOBN(0x48fce741, 0x6b8bb642), TOBN(0x31d6998c, 0x69d7e3dc), - TOBN(0xdbaf8004, 0xcadcaed0), TOBN(0x801b0142, 0xd81d053c), - TOBN(0x94b189fc, 0x59630ec6), TOBN(0x120e9934, 0xaf762c8e), - TOBN(0x53a29aa4, 0xfdc6a404), TOBN(0x19d8e01e, 0xa1909948), - TOBN(0x3cfcabf1, 0xd7e89681), TOBN(0x3321a50d, 0x4e132d37), - TOBN(0xd0496863, 0xe9a86111), TOBN(0x8c0cde61, 0x06a3bc65), - TOBN(0xaf866c49, 0xfc9f8eef), TOBN(0x2066350e, 0xff7f5141), - TOBN(0x4f8a4689, 0xe56ddfbd), TOBN(0xea1b0c07, 0xfe32983a), - TOBN(0x2b317462, 0x873cb8cb), TOBN(0x658deddc, 0x2d93229f), - TOBN(0x65efaf4d, 0x0f64ef58), TOBN(0xfe43287d, 0x730cc7a8), - TOBN(0xaebc0c72, 0x3d047d70), TOBN(0x92efa539, 0xd92d26c9), - TOBN(0x06e78457, 0x94b56526), TOBN(0x415cb80f, 0x0961002d), - TOBN(0x89e5c565, 0x76dcb10f), TOBN(0x8bbb6982, 0xff9259fe), - TOBN(0x4fe8795b, 0x9abc2668), TOBN(0xb5d4f534, 0x1e678fb1), - TOBN(0x6601f3be, 0x7b7da2b9), TOBN(0x98da59e2, 0xa13d6805), - TOBN(0x190d8ea6, 0x01799a52), TOBN(0xa20cec41, 0xb86d2952), - TOBN(0x3062ffb2, 0x7fff2a7c), TOBN(0x741b32e5, 0x79f19d37), - TOBN(0xf80d8181, 0x4eb57d47), TOBN(0x7a2d0ed4, 0x16aef06b), - TOBN(0x09735fb0, 0x1cecb588), TOBN(0x1641caaa, 0xc6061f5b)}, - {TOBN(0x7f99824f, 0x20151427), TOBN(0x206828b6, 0x92430206), - TOBN(0xaa9097d7, 0xe1112357), TOBN(0xacf9a2f2, 0x09e414ec), - TOBN(0xdbdac9da, 0x27915356), TOBN(0x7e0734b7, 0x001efee3), - TOBN(0x54fab5bb, 0xd2b288e2), TOBN(0x4c630fc4, 0xf62dd09c), - TOBN(0x8537107a, 0x1ac2703b), TOBN(0xb49258d8, 0x6bc857b5), - TOBN(0x57df14de, 0xbcdaccd1), TOBN(0x24ab68d7, 0xc4ae8529), - TOBN(0x7ed8b5d4, 0x734e59d0), TOBN(0x5f8740c8, 0xc495cc80), - TOBN(0x84aedd5a, 0x291db9b3), TOBN(0x80b360f8, 0x4fb995be), - TOBN(0xae915f5d, 0x5fa067d1), TOBN(0x4134b57f, 0x9668960c), - TOBN(0xbd3656d6, 0xa48edaac), TOBN(0xdac1e3e4, 0xfc1d7436), - TOBN(0x674ff869, 0xd81fbb26), TOBN(0x449ed3ec, 0xb26c33d4), - TOBN(0x85138705, 0xd94203e8), TOBN(0xccde538b, 0xbeeb6f4a), - TOBN(0x55d5c68d, 0xa61a76fa), TOBN(0x598b441d, 0xca1554dc), - TOBN(0xd39923b9, 0x773b279c), TOBN(0x33331d3c, 0x36bf9efc), - TOBN(0x2d4c848e, 0x298de399), TOBN(0xcfdb8e77, 0xa1a27f56), - TOBN(0x94c855ea, 0x57b8ab70), TOBN(0xdcdb9dae, 0x6f7879ba), - TOBN(0x7bdff8c2, 0x019f2a59), TOBN(0xb3ce5bb3, 0xcb4fbc74), - TOBN(0xea907f68, 0x8a9173dd), TOBN(0x6cd3d0d3, 0x95a75439), - TOBN(0x92ecc4d6, 0xefed021c), TOBN(0x09a9f9b0, 0x6a77339a), - TOBN(0x87ca6b15, 0x7188c64a), TOBN(0x10c29968, 0x44899158), - TOBN(0x5859a229, 0xed6e82ef), TOBN(0x16f338e3, 0x65ebaf4e), - TOBN(0x0cd31387, 0x5ead67ae), TOBN(0x1c73d228, 0x54ef0bb4), - TOBN(0x4cb55131, 0x74a5c8c7), TOBN(0x01cd2970, 0x7f69ad6a), - TOBN(0xa04d00dd, 0xe966f87e), TOBN(0xd96fe447, 0x0b7b0321), - TOBN(0x342ac06e, 0x88fbd381), TOBN(0x02cd4a84, 0x5c35a493), - TOBN(0xe8fa89de, 0x54f1bbcd), TOBN(0x341d6367, 0x2575ed4c), - TOBN(0xebe357fb, 0xd238202b), TOBN(0x600b4d1a, 0xa984ead9), - TOBN(0xc35c9f44, 0x52436ea0), TOBN(0x96fe0a39, 0xa370751b), - TOBN(0x4c4f0736, 0x7f636a38), TOBN(0x9f943fb7, 0x0e76d5cb), - TOBN(0xb03510ba, 0xa8b68b8b), TOBN(0xc246780a, 0x9ed07a1f), - TOBN(0x3c051415, 0x6d549fc2), TOBN(0xc2953f31, 0x607781ca), - TOBN(0x955e2c69, 0xd8d95413), TOBN(0xb300fadc, 0x7bd282e3), - TOBN(0x81fe7b50, 0x87e9189f), TOBN(0xdb17375c, 0xf42dda27), - TOBN(0x22f7d896, 0xcf0a5904), TOBN(0xa0e57c5a, 0xebe348e6), - TOBN(0xa61011d3, 0xf40e3c80), TOBN(0xb1189321, 0x8db705c5), - TOBN(0x4ed9309e, 0x50fedec3), TOBN(0xdcf14a10, 0x4d6d5c1d), - TOBN(0x056c265b, 0x55691342), TOBN(0xe8e08504, 0x91049dc7), - TOBN(0x131329f5, 0xc9bae20a), TOBN(0x96c8b3e8, 0xd9dccdb4), - TOBN(0x8c5ff838, 0xfb4ee6b4), TOBN(0xfc5a9aeb, 0x41e8ccf0), - TOBN(0x7417b764, 0xfae050c6), TOBN(0x0953c3d7, 0x00452080), - TOBN(0x21372682, 0x38dfe7e8), TOBN(0xea417e15, 0x2bb79d4b), - TOBN(0x59641f1c, 0x76e7cf2d), TOBN(0x271e3059, 0xea0bcfcc), - TOBN(0x624c7dfd, 0x7253ecbd), TOBN(0x2f552e25, 0x4fca6186), - TOBN(0xcbf84ecd, 0x4d866e9c), TOBN(0x73967709, 0xf68d4610), - TOBN(0xa14b1163, 0xc27901b4), TOBN(0xfd9236e0, 0x899b8bf3), - TOBN(0x42b091ec, 0xcbc6da0a), TOBN(0xbb1dac6f, 0x5ad1d297), - TOBN(0x80e61d53, 0xa91cf76e), TOBN(0x4110a412, 0xd31f1ee7), - TOBN(0x2d87c3ba, 0x13efcf77), TOBN(0x1f374bb4, 0xdf450d76), - TOBN(0x5e78e2f2, 0x0d188dab), TOBN(0xe3968ed0, 0xf4b885ef), - TOBN(0x46c0568e, 0x7314570f), TOBN(0x31616338, 0x01170521), - TOBN(0x18e1e7e2, 0x4f0c8afe), TOBN(0x4caa75ff, 0xdeea78da), - TOBN(0x82db67f2, 0x7c5d8a51), TOBN(0x36a44d86, 0x6f505370), - TOBN(0xd72c5bda, 0x0333974f), TOBN(0x5db516ae, 0x27a70146), - TOBN(0x34705281, 0x210ef921), TOBN(0xbff17a8f, 0x0c9c38e5), - TOBN(0x78f4814e, 0x12476da1), TOBN(0xc1e16613, 0x33c16980), - TOBN(0x9e5b386f, 0x424d4bca), TOBN(0x4c274e87, 0xc85740de), - TOBN(0xb6a9b88d, 0x6c2f5226), TOBN(0x14d1b944, 0x550d7ca8), - TOBN(0x580c85fc, 0x1fc41709), TOBN(0xc1da368b, 0x54c6d519), - TOBN(0x2b0785ce, 0xd5113cf7), TOBN(0x0670f633, 0x5a34708f), - TOBN(0x46e23767, 0x15cc3f88), TOBN(0x1b480cfa, 0x50c72c8f), - TOBN(0x20288602, 0x4147519a), TOBN(0xd0981eac, 0x26b372f0), - TOBN(0xa9d4a7ca, 0xa785ebc8), TOBN(0xd953c50d, 0xdbdf58e9), - TOBN(0x9d6361cc, 0xfd590f8f), TOBN(0x72e9626b, 0x44e6c917), - TOBN(0x7fd96110, 0x22eb64cf), TOBN(0x863ebb7e, 0x9eb288f3), - TOBN(0x6e6ab761, 0x6aca8ee7), TOBN(0x97d10b39, 0xd7b40358), - TOBN(0x1687d377, 0x1e5feb0d), TOBN(0xc83e50e4, 0x8265a27a), - TOBN(0x8f75a9fe, 0xc954b313), TOBN(0xcc2e8f47, 0x310d1f61), - TOBN(0xf5ba81c5, 0x6557d0e0), TOBN(0x25f9680c, 0x3eaf6207), - TOBN(0xf95c6609, 0x4354080b), TOBN(0x5225bfa5, 0x7bf2fe1c), - TOBN(0xc5c004e2, 0x5c7d98fa), TOBN(0x3561bf1c, 0x019aaf60), - TOBN(0x5e6f9f17, 0xba151474), TOBN(0xdec2f934, 0xb04f6eca), - TOBN(0x64e368a1, 0x269acb1e), TOBN(0x1332d9e4, 0x0cdda493), - TOBN(0x60d6cf69, 0xdf23de05), TOBN(0x66d17da2, 0x009339a0), - TOBN(0x9fcac985, 0x0a693923), TOBN(0xbcf057fc, 0xed7c6a6d), - TOBN(0xc3c5c8c5, 0xf0b5662c), TOBN(0x25318dd8, 0xdcba4f24), - TOBN(0x60e8cb75, 0x082b69ff), TOBN(0x7c23b3ee, 0x1e728c01), - TOBN(0x15e10a0a, 0x097e4403), TOBN(0xcb3d0a86, 0x19854665), - TOBN(0x88d8e211, 0xd67d4826), TOBN(0xb39af66e, 0x0b9d2839), - TOBN(0xa5f94588, 0xbd475ca8), TOBN(0xe06b7966, 0xc077b80b), - TOBN(0xfedb1485, 0xda27c26c), TOBN(0xd290d33a, 0xfe0fd5e0), - TOBN(0xa40bcc47, 0xf34fb0fa), TOBN(0xb4760cc8, 0x1fb1ab09), - TOBN(0x8fca0993, 0xa273bfe3), TOBN(0x13e4fe07, 0xf70b213c), - TOBN(0x3bcdb992, 0xfdb05163), TOBN(0x8c484b11, 0x0c2b19b6), - TOBN(0x1acb815f, 0xaaf2e3e2), TOBN(0xc6905935, 0xb89ff1b4), - TOBN(0xb2ad6f9d, 0x586e74e1), TOBN(0x488883ad, 0x67b80484), - TOBN(0x758aa2c7, 0x369c3ddb), TOBN(0x8ab74e69, 0x9f9afd31), - TOBN(0x10fc2d28, 0x5e21beb1), TOBN(0x3484518a, 0x318c42f9), - TOBN(0x377427dc, 0x53cf40c3), TOBN(0x9de0781a, 0x391bc1d9), - TOBN(0x8faee858, 0x693807e1), TOBN(0xa3865327, 0x4e81ccc7), - TOBN(0x02c30ff2, 0x6f835b84), TOBN(0xb604437b, 0x0d3d38d4), - TOBN(0xb3fc8a98, 0x5ca1823d), TOBN(0xb82f7ec9, 0x03be0324), - TOBN(0xee36d761, 0xcf684a33), TOBN(0x5a01df0e, 0x9f29bf7d), - TOBN(0x686202f3, 0x1306583d), TOBN(0x05b10da0, 0x437c622e), - TOBN(0xbf9aaa0f, 0x076a7bc8), TOBN(0x25e94efb, 0x8f8f4e43), - TOBN(0x8a35c9b7, 0xfa3dc26d), TOBN(0xe0e5fb93, 0x96ff03c5), - TOBN(0xa77e3843, 0xebc394ce), TOBN(0xcede6595, 0x8361de60), - TOBN(0xd27c22f6, 0xa1993545), TOBN(0xab01cc36, 0x24d671ba), - TOBN(0x63fa2877, 0xa169c28e), TOBN(0x925ef904, 0x2eb08376), - TOBN(0x3b2fa3cf, 0x53aa0b32), TOBN(0xb27beb5b, 0x71c49d7a), - TOBN(0xb60e1834, 0xd105e27f), TOBN(0xd6089788, 0x4f68570d), - TOBN(0x23094ce0, 0xd6fbc2ac), TOBN(0x738037a1, 0x815ff551), - TOBN(0xda73b1bb, 0x6bef119c), TOBN(0xdcf6c430, 0xeef506ba), - TOBN(0x00e4fe7b, 0xe3ef104a), TOBN(0xebdd9a2c, 0x0a065628), - TOBN(0x853a81c3, 0x8792043e), TOBN(0x22ad6ece, 0xb3b59108), - TOBN(0x9fb813c0, 0x39cd297d), TOBN(0x8ec7e16e, 0x05bda5d9), - TOBN(0x2834797c, 0x0d104b96), TOBN(0xcc11a2e7, 0x7c511510), - TOBN(0x96ca5a53, 0x96ee6380), TOBN(0x054c8655, 0xcea38742), - TOBN(0xb5946852, 0xd54dfa7d), TOBN(0x97c422e7, 0x1f4ab207), - TOBN(0xbf907509, 0x0c22b540), TOBN(0x2cde42aa, 0xb7c267d4), - TOBN(0xba18f9ed, 0x5ab0d693), TOBN(0x3ba62aa6, 0x6e4660d9), - TOBN(0xb24bf97b, 0xab9ea96a), TOBN(0x5d039642, 0xe3b60e32), - TOBN(0x4e6a4506, 0x7c4d9bd5), TOBN(0x666c5b9e, 0x7ed4a6a4), - TOBN(0xfa3fdcd9, 0x8edbd7cc), TOBN(0x4660bb87, 0xc6ccd753), - TOBN(0x9ae90820, 0x21e6b64f), TOBN(0x8a56a713, 0xb36bfb3f), - TOBN(0xabfce096, 0x5726d47f), TOBN(0x9eed01b2, 0x0b1a9a7f), - TOBN(0x30e9cad4, 0x4eb74a37), TOBN(0x7b2524cc, 0x53e9666d), - TOBN(0x6a29683b, 0x8f4b002f), TOBN(0xc2200d7a, 0x41f4fc20), - TOBN(0xcf3af47a, 0x3a338acc), TOBN(0x6539a4fb, 0xe7128975), - TOBN(0xcec31c14, 0xc33c7fcf), TOBN(0x7eb6799b, 0xc7be322b), - TOBN(0x119ef4e9, 0x6646f623), TOBN(0x7b7a26a5, 0x54d7299b), - TOBN(0xcb37f08d, 0x403f46f2), TOBN(0x94b8fc43, 0x1a0ec0c7), - TOBN(0xbb8514e3, 0xc332142f), TOBN(0xf3ed2c33, 0xe80d2a7a), - TOBN(0x8d2080af, 0xb639126c), TOBN(0xf7b6be60, 0xe3553ade), - TOBN(0x3950aa9f, 0x1c7e2b09), TOBN(0x847ff958, 0x6410f02b), - TOBN(0x877b7cf5, 0x678a31b0), TOBN(0xd50301ae, 0x3998b620), - TOBN(0x734257c5, 0xc00fb396), TOBN(0xf9fb18a0, 0x04e672a6), - TOBN(0xff8bd8eb, 0xe8758851), TOBN(0x1e64e4c6, 0x5d99ba44), - TOBN(0x4b8eaedf, 0x7dfd93b7), TOBN(0xba2f2a98, 0x04e76b8c), - TOBN(0x7d790cba, 0xe8053433), TOBN(0xc8e725a0, 0x3d2c9585), - TOBN(0x58c5c476, 0xcdd8f5ed), TOBN(0xd106b952, 0xefa9fe1d), - TOBN(0x3c5c775b, 0x0eff13a9), TOBN(0x242442ba, 0xe057b930), - TOBN(0xe9f458d4, 0xc9b70cbd), TOBN(0x69b71448, 0xa3cdb89a), - TOBN(0x41ee46f6, 0x0e2ed742), TOBN(0x573f1045, 0x40067493), - TOBN(0xb1e154ff, 0x9d54c304), TOBN(0x2ad0436a, 0x8d3a7502), - TOBN(0xee4aaa2d, 0x431a8121), TOBN(0xcd38b3ab, 0x886f11ed), - TOBN(0x57d49ea6, 0x034a0eb7), TOBN(0xd2b773bd, 0xf7e85e58), - TOBN(0x4a559ac4, 0x9b5c1f14), TOBN(0xc444be1a, 0x3e54df2b), - TOBN(0x13aad704, 0xeda41891), TOBN(0xcd927bec, 0x5eb5c788), - TOBN(0xeb3c8516, 0xe48c8a34), TOBN(0x1b7ac812, 0x4b546669), - TOBN(0x1815f896, 0x594df8ec), TOBN(0x87c6a79c, 0x79227865), - TOBN(0xae02a2f0, 0x9b56ddbd), TOBN(0x1339b5ac, 0x8a2f1cf3), - TOBN(0xf2b569c7, 0x839dff0d), TOBN(0xb0b9e864, 0xfee9a43d), - TOBN(0x4ff8ca41, 0x77bb064e), TOBN(0x145a2812, 0xfd249f63), - TOBN(0x3ab7beac, 0xf86f689a), TOBN(0x9bafec27, 0x01d35f5e), - TOBN(0x28054c65, 0x4265aa91), TOBN(0xa4b18304, 0x035efe42), - TOBN(0x6887b0e6, 0x9639dec7), TOBN(0xf4b8f6ad, 0x3d52aea5), - TOBN(0xfb9293cc, 0x971a8a13), TOBN(0x3f159e5d, 0x4c934d07), - TOBN(0x2c50e9b1, 0x09acbc29), TOBN(0x08eb65e6, 0x7154d129), - TOBN(0x4feff589, 0x30b75c3e), TOBN(0x0bb82fe2, 0x94491c93), - TOBN(0xd8ac377a, 0x89af62bb), TOBN(0xd7b51490, 0x9685e49f), - TOBN(0xabca9a7b, 0x04497f19), TOBN(0x1b35ed0a, 0x1a7ad13f), - TOBN(0x6b601e21, 0x3ec86ed6), TOBN(0xda91fcb9, 0xce0c76f1), - TOBN(0x9e28507b, 0xd7ab27e1), TOBN(0x7c19a555, 0x63945b7b), - TOBN(0x6b43f0a1, 0xaafc9827), TOBN(0x443b4fbd, 0x3aa55b91), - TOBN(0x962b2e65, 0x6962c88f), TOBN(0x139da8d4, 0xce0db0ca), - TOBN(0xb93f05dd, 0x1b8d6c4f), TOBN(0x779cdff7, 0x180b9824), - TOBN(0xbba23fdd, 0xae57c7b7), TOBN(0x345342f2, 0x1b932522), - TOBN(0xfd9c80fe, 0x556d4aa3), TOBN(0xa03907ba, 0x6525bb61), - TOBN(0x38b010e1, 0xff218933), TOBN(0xc066b654, 0xaa52117b), - TOBN(0x8e141920, 0x94f2e6ea), TOBN(0x66a27dca, 0x0d32f2b2), - TOBN(0x69c7f993, 0x048b3717), TOBN(0xbf5a989a, 0xb178ae1c), - TOBN(0x49fa9058, 0x564f1d6b), TOBN(0x27ec6e15, 0xd31fde4e), - TOBN(0x4cce0373, 0x7276e7fc), TOBN(0x64086d79, 0x89d6bf02), - TOBN(0x5a72f046, 0x4ccdd979), TOBN(0x909c3566, 0x47775631), - TOBN(0x1c07bc6b, 0x75dd7125), TOBN(0xb4c6bc97, 0x87a0428d), - TOBN(0x507ece52, 0xfdeb6b9d), TOBN(0xfca56512, 0xb2c95432), - TOBN(0x15d97181, 0xd0e8bd06), TOBN(0x384dd317, 0xc6bb46ea), - TOBN(0x5441ea20, 0x3952b624), TOBN(0xbcf70dee, 0x4e7dc2fb), - TOBN(0x372b016e, 0x6628e8c3), TOBN(0x07a0d667, 0xb60a7522), - TOBN(0xcf05751b, 0x0a344ee2), TOBN(0x0ec09a48, 0x118bdeec), - TOBN(0x6e4b3d4e, 0xd83dce46), TOBN(0x43a6316d, 0x99d2fc6e), - TOBN(0xa99d8989, 0x56cf044c), TOBN(0x7c7f4454, 0xae3e5fb7), - TOBN(0xb2e6b121, 0xfbabbe92), TOBN(0x281850fb, 0xe1330076), - TOBN(0x093581ec, 0x97890015), TOBN(0x69b1dded, 0x75ff77f5), - TOBN(0x7cf0b18f, 0xab105105), TOBN(0x953ced31, 0xa89ccfef), - TOBN(0x3151f85f, 0xeb914009), TOBN(0x3c9f1b87, 0x88ed48ad), - TOBN(0xc9aba1a1, 0x4a7eadcb), TOBN(0x928e7501, 0x522e71cf), - TOBN(0xeaede727, 0x3a2e4f83), TOBN(0x467e10d1, 0x1ce3bbd3), - TOBN(0xf3442ac3, 0xb955dcf0), TOBN(0xba96307d, 0xd3d5e527), - TOBN(0xf763a10e, 0xfd77f474), TOBN(0x5d744bd0, 0x6a6e1ff0), - TOBN(0xd287282a, 0xa777899e), TOBN(0xe20eda8f, 0xd03f3cde), - TOBN(0x6a7e75bb, 0x50b07d31), TOBN(0x0b7e2a94, 0x6f379de4), - TOBN(0x31cb64ad, 0x19f593cf), TOBN(0x7b1a9e4f, 0x1e76ef1d), - TOBN(0xe18c9c9d, 0xb62d609c), TOBN(0x439bad6d, 0xe779a650), - TOBN(0x219d9066, 0xe032f144), TOBN(0x1db632b8, 0xe8b2ec6a), - TOBN(0xff0d0fd4, 0xfda12f78), TOBN(0x56fb4c2d, 0x2a25d265), - TOBN(0x5f4e2ee1, 0x255a03f1), TOBN(0x61cd6af2, 0xe96af176), - TOBN(0xe0317ba8, 0xd068bc97), TOBN(0x927d6bab, 0x264b988e), - TOBN(0xa18f07e0, 0xe90fb21e), TOBN(0x00fd2b80, 0xbba7fca1), - TOBN(0x20387f27, 0x95cd67b5), TOBN(0x5b89a4e7, 0xd39707f7), - TOBN(0x8f83ad3f, 0x894407ce), TOBN(0xa0025b94, 0x6c226132), - TOBN(0xc79563c7, 0xf906c13b), TOBN(0x5f548f31, 0x4e7bb025), - TOBN(0x2b4c6b8f, 0xeac6d113), TOBN(0xa67e3f9c, 0x0e813c76), - TOBN(0x3982717c, 0x3fe1f4b9), TOBN(0x58865819, 0x26d8050e), - TOBN(0x99f3640c, 0xf7f06f20), TOBN(0xdc610216, 0x2a66ebc2), - TOBN(0x52f2c175, 0x767a1e08), TOBN(0x05660e1a, 0x5999871b), - TOBN(0x6b0f1762, 0x6d3c4693), TOBN(0xf0e7d627, 0x37ed7bea), - TOBN(0xc51758c7, 0xb75b226d), TOBN(0x40a88628, 0x1f91613b), - TOBN(0x889dbaa7, 0xbbb38ce0), TOBN(0xe0404b65, 0xbddcad81), - TOBN(0xfebccd3a, 0x8bc9671f), TOBN(0xfbf9a357, 0xee1f5375), - TOBN(0x5dc169b0, 0x28f33398), TOBN(0xb07ec11d, 0x72e90f65), - TOBN(0xae7f3b4a, 0xfaab1eb1), TOBN(0xd970195e, 0x5f17538a), - TOBN(0x52b05cbe, 0x0181e640), TOBN(0xf5debd62, 0x2643313d), - TOBN(0x76148154, 0x5df31f82), TOBN(0x23e03b33, 0x3a9e13c5), - TOBN(0xff758949, 0x4fde0c1f), TOBN(0xbf8a1abe, 0xe5b6ec20), - TOBN(0x702278fb, 0x87e1db6c), TOBN(0xc447ad7a, 0x35ed658f), - TOBN(0x48d4aa38, 0x03d0ccf2), TOBN(0x80acb338, 0x819a7c03), - TOBN(0x9bc7c89e, 0x6e17cecc), TOBN(0x46736b8b, 0x03be1d82), - TOBN(0xd65d7b60, 0xc0432f96), TOBN(0xddebe7a3, 0xdeb5442f), - TOBN(0x79a25307, 0x7dff69a2), TOBN(0x37a56d94, 0x02cf3122), - TOBN(0x8bab8aed, 0xf2350d0a), TOBN(0x13c3f276, 0x037b0d9a), - TOBN(0xc664957c, 0x44c65cae), TOBN(0x88b44089, 0xc2e71a88), - TOBN(0xdb88e5a3, 0x5cb02664), TOBN(0x5d4c0bf1, 0x8686c72e), - TOBN(0xea3d9b62, 0xa682d53e), TOBN(0x9b605ef4, 0x0b2ad431), - TOBN(0x71bac202, 0xc69645d0), TOBN(0xa115f03a, 0x6a1b66e7), - TOBN(0xfe2c563a, 0x158f4dc4), TOBN(0xf715b3a0, 0x4d12a78c), - TOBN(0x8f7f0a48, 0xd413213a), TOBN(0x2035806d, 0xc04becdb), - TOBN(0xecd34a99, 0x5d8587f5), TOBN(0x4d8c3079, 0x9f6d3a71), - TOBN(0x1b2a2a67, 0x8d95a8f6), TOBN(0xc58c9d7d, 0xf2110d0d), - TOBN(0xdeee81d5, 0xcf8fba3f), TOBN(0xa42be3c0, 0x0c7cdf68), - TOBN(0x2126f742, 0xd43b5eaa), TOBN(0x054a0766, 0xdfa59b85), - TOBN(0x9d0d5e36, 0x126bfd45), TOBN(0xa1f8fbd7, 0x384f8a8f), - TOBN(0x317680f5, 0xd563fccc), TOBN(0x48ca5055, 0xf280a928), - TOBN(0xe00b81b2, 0x27b578cf), TOBN(0x10aad918, 0x2994a514), - TOBN(0xd9e07b62, 0xb7bdc953), TOBN(0x9f0f6ff2, 0x5bc086dd), - TOBN(0x09d1ccff, 0x655eee77), TOBN(0x45475f79, 0x5bef7df1), - TOBN(0x3faa28fa, 0x86f702cc), TOBN(0x92e60905, 0x0f021f07), - TOBN(0xe9e62968, 0x7f8fa8c6), TOBN(0xbd71419a, 0xf036ea2c), - TOBN(0x171ee1cc, 0x6028da9a), TOBN(0x5352fe1a, 0xc251f573), - TOBN(0xf8ff236e, 0x3fa997f4), TOBN(0xd831b6c9, 0xa5749d5f), - TOBN(0x7c872e1d, 0xe350e2c2), TOBN(0xc56240d9, 0x1e0ce403), - TOBN(0xf9deb077, 0x6974f5cb), TOBN(0x7d50ba87, 0x961c3728), - TOBN(0xd6f89426, 0x5a3a2518), TOBN(0xcf817799, 0xc6303d43), - TOBN(0x510a0471, 0x619e5696), TOBN(0xab049ff6, 0x3a5e307b), - TOBN(0xe4cdf9b0, 0xfeb13ec7), TOBN(0xd5e97117, 0x9d8ff90c), - TOBN(0xf6f64d06, 0x9afa96af), TOBN(0x00d0bf5e, 0x9d2012a2), - TOBN(0xe63f301f, 0x358bcdc0), TOBN(0x07689e99, 0x0a9d47f8), - TOBN(0x1f689e2f, 0x4f43d43a), TOBN(0x4d542a16, 0x90920904), - TOBN(0xaea293d5, 0x9ca0a707), TOBN(0xd061fe45, 0x8ac68065), - TOBN(0x1033bf1b, 0x0090008c), TOBN(0x29749558, 0xc08a6db6), - TOBN(0x74b5fc59, 0xc1d5d034), TOBN(0xf712e9f6, 0x67e215e0), - TOBN(0xfd520cbd, 0x860200e6), TOBN(0x0229acb4, 0x3ea22588), - TOBN(0x9cd1e14c, 0xfff0c82e), TOBN(0x87684b62, 0x59c69e73), - TOBN(0xda85e61c, 0x96ccb989), TOBN(0x2d5dbb02, 0xa3d06493), - TOBN(0xf22ad33a, 0xe86b173c), TOBN(0xe8e41ea5, 0xa79ff0e3), - TOBN(0x01d2d725, 0xdd0d0c10), TOBN(0x31f39088, 0x032d28f9), - TOBN(0x7b3f71e1, 0x7829839e), TOBN(0x0cf691b4, 0x4502ae58), - TOBN(0xef658dbd, 0xbefc6115), TOBN(0xa5cd6ee5, 0xb3ab5314), - TOBN(0x206c8d7b, 0x5f1d2347), TOBN(0x794645ba, 0x4cc2253a), - TOBN(0xd517d8ff, 0x58389e08), TOBN(0x4fa20dee, 0x9f847288), - TOBN(0xeba072d8, 0xd797770a), TOBN(0x7360c91d, 0xbf429e26), - TOBN(0x7200a3b3, 0x80af8279), TOBN(0x6a1c9150, 0x82dadce3), - TOBN(0x0ee6d3a7, 0xc35d8794), TOBN(0x042e6558, 0x0356bae5), - TOBN(0x9f59698d, 0x643322fd), TOBN(0x9379ae15, 0x50a61967), - TOBN(0x64b9ae62, 0xfcc9981e), TOBN(0xaed3d631, 0x6d2934c6), - TOBN(0x2454b302, 0x5e4e65eb), TOBN(0xab09f647, 0xf9950428)}, - {TOBN(0xb2083a12, 0x22248acc), TOBN(0x1f6ec0ef, 0x3264e366), - TOBN(0x5659b704, 0x5afdee28), TOBN(0x7a823a40, 0xe6430bb5), - TOBN(0x24592a04, 0xe1900a79), TOBN(0xcde09d4a, 0xc9ee6576), - TOBN(0x52b6463f, 0x4b5ea54a), TOBN(0x1efe9ed3, 0xd3ca65a7), - TOBN(0xe27a6dbe, 0x305406dd), TOBN(0x8eb7dc7f, 0xdd5d1957), - TOBN(0xf54a6876, 0x387d4d8f), TOBN(0x9c479409, 0xc7762de4), - TOBN(0xbe4d5b5d, 0x99b30778), TOBN(0x25380c56, 0x6e793682), - TOBN(0x602d37f3, 0xdac740e3), TOBN(0x140deabe, 0x1566e4ae), - TOBN(0x4481d067, 0xafd32acf), TOBN(0xd8f0fcca, 0xe1f71ccf), - TOBN(0xd208dd0c, 0xb596f2da), TOBN(0xd049d730, 0x9aad93f9), - TOBN(0xc79f263d, 0x42ab580e), TOBN(0x09411bb1, 0x23f707b4), - TOBN(0x8cfde1ff, 0x835e0eda), TOBN(0x72707490, 0x90f03402), - TOBN(0xeaee6126, 0xc49a861e), TOBN(0x024f3b65, 0xe14f0d06), - TOBN(0x51a3f1e8, 0xc69bfc17), TOBN(0xc3c3a8e9, 0xa7686381), - TOBN(0x3400752c, 0xb103d4c8), TOBN(0x02bc4613, 0x9218b36b), - TOBN(0xc67f75eb, 0x7651504a), TOBN(0xd6848b56, 0xd02aebfa), - TOBN(0xbd9802e6, 0xc30fa92b), TOBN(0x5a70d96d, 0x9a552784), - TOBN(0x9085c4ea, 0x3f83169b), TOBN(0xfa9423bb, 0x06908228), - TOBN(0x2ffebe12, 0xfe97a5b9), TOBN(0x85da6049, 0x71b99118), - TOBN(0x9cbc2f7f, 0x63178846), TOBN(0xfd96bc70, 0x9153218e), - TOBN(0x958381db, 0x1782269b), TOBN(0xae34bf79, 0x2597e550), - TOBN(0xbb5c6064, 0x5f385153), TOBN(0x6f0e96af, 0xe3088048), - TOBN(0xbf6a0215, 0x77884456), TOBN(0xb3b5688c, 0x69310ea7), - TOBN(0x17c94295, 0x04fad2de), TOBN(0xe020f0e5, 0x17896d4d), - TOBN(0x730ba0ab, 0x0976505f), TOBN(0x567f6813, 0x095e2ec5), - TOBN(0x47062010, 0x6331ab71), TOBN(0x72cfa977, 0x41d22b9f), - TOBN(0x33e55ead, 0x8a2373da), TOBN(0xa8d0d5f4, 0x7ba45a68), - TOBN(0xba1d8f9c, 0x03029d15), TOBN(0x8f34f1cc, 0xfc55b9f3), - TOBN(0xcca4428d, 0xbbe5a1a9), TOBN(0x8187fd5f, 0x3126bd67), - TOBN(0x0036973a, 0x48105826), TOBN(0xa39b6663, 0xb8bd61a0), - TOBN(0x6d42deef, 0x2d65a808), TOBN(0x4969044f, 0x94636b19), - TOBN(0xf611ee47, 0xdd5d564c), TOBN(0x7b2f3a49, 0xd2873077), - TOBN(0x94157d45, 0x300eb294), TOBN(0x2b2a656e, 0x169c1494), - TOBN(0xc000dd76, 0xd3a47aa9), TOBN(0xa2864e4f, 0xa6243ea4), - TOBN(0x82716c47, 0xdb89842e), TOBN(0x12dfd7d7, 0x61479fb7), - TOBN(0x3b9a2c56, 0xe0b2f6dc), TOBN(0x46be862a, 0xd7f85d67), - TOBN(0x03b0d8dd, 0x0f82b214), TOBN(0x460c34f9, 0xf103cbc6), - TOBN(0xf32e5c03, 0x18d79e19), TOBN(0x8b8888ba, 0xa84117f8), - TOBN(0x8f3c37dc, 0xc0722677), TOBN(0x10d21be9, 0x1c1c0f27), - TOBN(0xd47c8468, 0xe0f7a0c6), TOBN(0x9bf02213, 0xadecc0e0), - TOBN(0x0baa7d12, 0x42b48b99), TOBN(0x1bcb665d, 0x48424096), - TOBN(0x8b847cd6, 0xebfb5cfb), TOBN(0x87c2ae56, 0x9ad4d10d), - TOBN(0xf1cbb122, 0x0de36726), TOBN(0xe7043c68, 0x3fdfbd21), - TOBN(0x4bd0826a, 0x4e79d460), TOBN(0x11f5e598, 0x4bd1a2cb), - TOBN(0x97554160, 0xb7fe7b6e), TOBN(0x7d16189a, 0x400a3fb2), - TOBN(0xd73e9bea, 0xe328ca1e), TOBN(0x0dd04b97, 0xe793d8cc), - TOBN(0xa9c83c9b, 0x506db8cc), TOBN(0x5cd47aae, 0xcf38814c), - TOBN(0x26fc430d, 0xb64b45e6), TOBN(0x079b5499, 0xd818ea84), - TOBN(0xebb01102, 0xc1c24a3b), TOBN(0xca24e568, 0x1c161c1a), - TOBN(0x103eea69, 0x36f00a4a), TOBN(0x9ad76ee8, 0x76176c7b), - TOBN(0x97451fc2, 0x538e0ff7), TOBN(0x94f89809, 0x6604b3b0), - TOBN(0x6311436e, 0x3249cfd7), TOBN(0x27b4a7bd, 0x41224f69), - TOBN(0x03b5d21a, 0xe0ac2941), TOBN(0x279b0254, 0xc2d31937), - TOBN(0x3307c052, 0xcac992d0), TOBN(0x6aa7cb92, 0xefa8b1f3), - TOBN(0x5a182580, 0x0d37c7a5), TOBN(0x13380c37, 0x342d5422), - TOBN(0x92ac2d66, 0xd5d2ef92), TOBN(0x035a70c9, 0x030c63c6), - TOBN(0xc16025dd, 0x4ce4f152), TOBN(0x1f419a71, 0xf9df7c06), - TOBN(0x6d5b2214, 0x91e4bb14), TOBN(0xfc43c6cc, 0x839fb4ce), - TOBN(0x49f06591, 0x925d6b2d), TOBN(0x4b37d9d3, 0x62186598), - TOBN(0x8c54a971, 0xd01b1629), TOBN(0xe1a9c29f, 0x51d50e05), - TOBN(0x5109b785, 0x71ba1861), TOBN(0x48b22d5c, 0xd0c8f93d), - TOBN(0xe8fa84a7, 0x8633bb93), TOBN(0x53fba6ba, 0x5aebbd08), - TOBN(0x7ff27df3, 0xe5eea7d8), TOBN(0x521c8796, 0x68ca7158), - TOBN(0xb9d5133b, 0xce6f1a05), TOBN(0x2d50cd53, 0xfd0ebee4), - TOBN(0xc82115d6, 0xc5a3ef16), TOBN(0x993eff9d, 0xba079221), - TOBN(0xe4da2c5e, 0x4b5da81c), TOBN(0x9a89dbdb, 0x8033fd85), - TOBN(0x60819ebf, 0x2b892891), TOBN(0x53902b21, 0x5d14a4d5), - TOBN(0x6ac35051, 0xd7fda421), TOBN(0xcc6ab885, 0x61c83284), - TOBN(0x14eba133, 0xf74cff17), TOBN(0x240aaa03, 0xecb813f2), - TOBN(0xcfbb6540, 0x6f665bee), TOBN(0x084b1fe4, 0xa425ad73), - TOBN(0x009d5d16, 0xd081f6a6), TOBN(0x35304fe8, 0xeef82c90), - TOBN(0xf20346d5, 0xaa9eaa22), TOBN(0x0ada9f07, 0xac1c91e3), - TOBN(0xa6e21678, 0x968a6144), TOBN(0x54c1f77c, 0x07b31a1e), - TOBN(0xd6bb787e, 0x5781fbe1), TOBN(0x61bd2ee0, 0xe31f1c4a), - TOBN(0xf25aa1e9, 0x781105fc), TOBN(0x9cf2971f, 0x7b2f8e80), - TOBN(0x26d15412, 0xcdff919b), TOBN(0x01db4ebe, 0x34bc896e), - TOBN(0x7d9b3e23, 0xb40df1cf), TOBN(0x59337373, 0x94e971b4), - TOBN(0xbf57bd14, 0x669cf921), TOBN(0x865daedf, 0x0c1a1064), - TOBN(0x3eb70bd3, 0x83279125), TOBN(0xbc3d5b9f, 0x34ecdaab), - TOBN(0x91e3ed7e, 0x5f755caf), TOBN(0x49699f54, 0xd41e6f02), - TOBN(0x185770e1, 0xd4a7a15b), TOBN(0x08f3587a, 0xeaac87e7), - TOBN(0x352018db, 0x473133ea), TOBN(0x674ce719, 0x04fd30fc), - TOBN(0x7b8d9835, 0x088b3e0e), TOBN(0x7a0356a9, 0x5d0d47a1), - TOBN(0x9d9e7659, 0x6474a3c4), TOBN(0x61ea48a7, 0xff66966c), - TOBN(0x30417758, 0x0f3e4834), TOBN(0xfdbb21c2, 0x17a9afcb), - TOBN(0x756fa17f, 0x2f9a67b3), TOBN(0x2a6b2421, 0xa245c1a8), - TOBN(0x64be2794, 0x4af02291), TOBN(0xade465c6, 0x2a5804fe), - TOBN(0x8dffbd39, 0xa6f08fd7), TOBN(0xc4efa84c, 0xaa14403b), - TOBN(0xa1b91b2a, 0x442b0f5c), TOBN(0xb748e317, 0xcf997736), - TOBN(0x8d1b62bf, 0xcee90e16), TOBN(0x907ae271, 0x0b2078c0), - TOBN(0xdf31534b, 0x0c9bcddd), TOBN(0x043fb054, 0x39adce83), - TOBN(0x99031043, 0xd826846a), TOBN(0x61a9c0d6, 0xb144f393), - TOBN(0xdab48046, 0x47718427), TOBN(0xdf17ff9b, 0x6e830f8b), - TOBN(0x408d7ee8, 0xe49a1347), TOBN(0x6ac71e23, 0x91c1d4ae), - TOBN(0xc8cbb9fd, 0x1defd73c), TOBN(0x19840657, 0xbbbbfec5), - TOBN(0x39db1cb5, 0x9e7ef8ea), TOBN(0x78aa8296, 0x64105f30), - TOBN(0xa3d9b7f0, 0xa3738c29), TOBN(0x0a2f235a, 0xbc3250a3), - TOBN(0x55e506f6, 0x445e4caf), TOBN(0x0974f73d, 0x33475f7a), - TOBN(0xd37dbba3, 0x5ba2f5a8), TOBN(0x542c6e63, 0x6af40066), - TOBN(0x26d99b53, 0xc5d73e2c), TOBN(0x06060d7d, 0x6c3ca33e), - TOBN(0xcdbef1c2, 0x065fef4a), TOBN(0x77e60f7d, 0xfd5b92e3), - TOBN(0xd7c549f0, 0x26708350), TOBN(0x201b3ad0, 0x34f121bf), - TOBN(0x5fcac2a1, 0x0334fc14), TOBN(0x8a9a9e09, 0x344552f6), - TOBN(0x7dd8a1d3, 0x97653082), TOBN(0x5fc0738f, 0x79d4f289), - TOBN(0x787d244d, 0x17d2d8c3), TOBN(0xeffc6345, 0x70830684), - TOBN(0x5ddb96dd, 0xe4f73ae5), TOBN(0x8efb14b1, 0x172549a5), - TOBN(0x6eb73eee, 0x2245ae7a), TOBN(0xbca4061e, 0xea11f13e), - TOBN(0xb577421d, 0x30b01f5d), TOBN(0xaa688b24, 0x782e152c), - TOBN(0x67608e71, 0xbd3502ba), TOBN(0x4ef41f24, 0xb4de75a0), - TOBN(0xb08dde5e, 0xfd6125e5), TOBN(0xde484825, 0xa409543f), - TOBN(0x1f198d98, 0x65cc2295), TOBN(0x428a3771, 0x6e0edfa2), - TOBN(0x4f9697a2, 0xadf35fc7), TOBN(0x01a43c79, 0xf7cac3c7), - TOBN(0xb05d7059, 0x0fd3659a), TOBN(0x8927f30c, 0xbb7f2d9a), - TOBN(0x4023d1ac, 0x8cf984d3), TOBN(0x32125ed3, 0x02897a45), - TOBN(0xfb572dad, 0x3d414205), TOBN(0x73000ef2, 0xe3fa82a9), - TOBN(0x4c0868e9, 0xf10a5581), TOBN(0x5b61fc67, 0x6b0b3ca5), - TOBN(0xc1258d5b, 0x7cae440c), TOBN(0x21c08b41, 0x402b7531), - TOBN(0xf61a8955, 0xde932321), TOBN(0x3568faf8, 0x2d1408af), - TOBN(0x71b15e99, 0x9ecf965b), TOBN(0xf14ed248, 0xe917276f), - TOBN(0xc6f4caa1, 0x820cf9e2), TOBN(0x681b20b2, 0x18d83c7e), - TOBN(0x6cde738d, 0xc6c01120), TOBN(0x71db0813, 0xae70e0db), - TOBN(0x95fc0644, 0x74afe18c), TOBN(0x34619053, 0x129e2be7), - TOBN(0x80615cea, 0xdb2a3b15), TOBN(0x0a49a19e, 0xdb4c7073), - TOBN(0x0e1b84c8, 0x8fd2d367), TOBN(0xd74bf462, 0x033fb8aa), - TOBN(0x889f6d65, 0x533ef217), TOBN(0x7158c7e4, 0xc3ca2e87), - TOBN(0xfb670dfb, 0xdc2b4167), TOBN(0x75910a01, 0x844c257f), - TOBN(0xf336bf07, 0xcf88577d), TOBN(0x22245250, 0xe45e2ace), - TOBN(0x2ed92e8d, 0x7ca23d85), TOBN(0x29f8be4c, 0x2b812f58), - TOBN(0xdd9ebaa7, 0x076fe12b), TOBN(0x3f2400cb, 0xae1537f9), - TOBN(0x1aa93528, 0x17bdfb46), TOBN(0xc0f98430, 0x67883b41), - TOBN(0x5590ede1, 0x0170911d), TOBN(0x7562f5bb, 0x34d4b17f), - TOBN(0xe1fa1df2, 0x1826b8d2), TOBN(0xb40b796a, 0x6bd80d59), - TOBN(0xd65bf197, 0x3467ba92), TOBN(0x8c9b46db, 0xf70954b0), - TOBN(0x97c8a0f3, 0x0e78f15d), TOBN(0xa8f3a69a, 0x85a4c961), - TOBN(0x4242660f, 0x61e4ce9b), TOBN(0xbf06aab3, 0x6ea6790c), - TOBN(0xc6706f8e, 0xec986416), TOBN(0x9e56dec1, 0x9a9fc225), - TOBN(0x527c46f4, 0x9a9898d9), TOBN(0xd799e77b, 0x5633cdef), - TOBN(0x24eacc16, 0x7d9e4297), TOBN(0xabb61cea, 0x6b1cb734), - TOBN(0xbee2e8a7, 0xf778443c), TOBN(0x3bb42bf1, 0x29de2fe6), - TOBN(0xcbed86a1, 0x3003bb6f), TOBN(0xd3918e6c, 0xd781cdf6), - TOBN(0x4bee3271, 0x9a5103f1), TOBN(0x5243efc6, 0xf50eac06), - TOBN(0xb8e122cb, 0x6adcc119), TOBN(0x1b7faa84, 0xc0b80a08), - TOBN(0x32c3d1bd, 0x6dfcd08c), TOBN(0x129dec4e, 0x0be427de), - TOBN(0x98ab679c, 0x1d263c83), TOBN(0xafc83cb7, 0xcef64eff), - TOBN(0x85eb6088, 0x2fa6be76), TOBN(0x892585fb, 0x1328cbfe), - TOBN(0xc154d3ed, 0xcf618dda), TOBN(0xc44f601b, 0x3abaf26e), - TOBN(0x7bf57d0b, 0x2be1fdfd), TOBN(0xa833bd2d, 0x21137fee), - TOBN(0x9353af36, 0x2db591a8), TOBN(0xc76f26dc, 0x5562a056), - TOBN(0x1d87e47d, 0x3fdf5a51), TOBN(0x7afb5f93, 0x55c9cab0), - TOBN(0x91bbf58f, 0x89e0586e), TOBN(0x7c72c018, 0x0d843709), - TOBN(0xa9a5aafb, 0x99b5c3dc), TOBN(0xa48a0f1d, 0x3844aeb0), - TOBN(0x7178b7dd, 0xb667e482), TOBN(0x453985e9, 0x6e23a59a), - TOBN(0x4a54c860, 0x01b25dd8), TOBN(0x0dd37f48, 0xfb897c8a), - TOBN(0x5f8aa610, 0x0ea90cd9), TOBN(0xc8892c68, 0x16d5830d), - TOBN(0xeb4befc0, 0xef514ca5), TOBN(0x478eb679, 0xe72c9ee6), - TOBN(0x9bca20da, 0xdbc40d5f), TOBN(0xf015de21, 0xdde4f64a), - TOBN(0xaa6a4de0, 0xeaf4b8a5), TOBN(0x68cfd9ca, 0x4bc60e32), - TOBN(0x668a4b01, 0x7fd15e70), TOBN(0xd9f0694a, 0xf27dc09d), - TOBN(0xf6c3cad5, 0xba708bcd), TOBN(0x5cd2ba69, 0x5bb95c2a), - TOBN(0xaa28c1d3, 0x33c0a58f), TOBN(0x23e274e3, 0xabc77870), - TOBN(0x44c3692d, 0xdfd20a4a), TOBN(0x091c5fd3, 0x81a66653), - TOBN(0x6c0bb691, 0x09a0757d), TOBN(0x9072e8b9, 0x667343ea), - TOBN(0x31d40eb0, 0x80848bec), TOBN(0x95bd480a, 0x79fd36cc), - TOBN(0x01a77c61, 0x65ed43f5), TOBN(0xafccd127, 0x2e0d40bf), - TOBN(0xeccfc82d, 0x1cc1884b), TOBN(0xc85ac201, 0x5d4753b4), - TOBN(0xc7a6caac, 0x658e099f), TOBN(0xcf46369e, 0x04b27390), - TOBN(0xe2e7d049, 0x506467ea), TOBN(0x481b63a2, 0x37cdeccc), - TOBN(0x4029abd8, 0xed80143a), TOBN(0x28bfe3c7, 0xbcb00b88), - TOBN(0x3bec1009, 0x0643d84a), TOBN(0x885f3668, 0xabd11041), - TOBN(0xdb02432c, 0xf83a34d6), TOBN(0x32f7b360, 0x719ceebe), - TOBN(0xf06c7837, 0xdad1fe7a), TOBN(0x60a157a9, 0x5441a0b0), - TOBN(0x704970e9, 0xe2d47550), TOBN(0xcd2bd553, 0x271b9020), - TOBN(0xff57f82f, 0x33e24a0b), TOBN(0x9cbee23f, 0xf2565079), - TOBN(0x16353427, 0xeb5f5825), TOBN(0x276feec4, 0xe948d662), - TOBN(0xd1b62bc6, 0xda10032b), TOBN(0x718351dd, 0xf0e72a53), - TOBN(0x93452076, 0x2420e7ba), TOBN(0x96368fff, 0x3a00118d), - TOBN(0x00ce2d26, 0x150a49e4), TOBN(0x0c28b636, 0x3f04706b), - TOBN(0xbad65a46, 0x58b196d0), TOBN(0x6c8455fc, 0xec9f8b7c), - TOBN(0xe90c895f, 0x2d71867e), TOBN(0x5c0be31b, 0xedf9f38c), - TOBN(0x2a37a15e, 0xd8f6ec04), TOBN(0x239639e7, 0x8cd85251), - TOBN(0xd8975315, 0x9c7c4c6b), TOBN(0x603aa3c0, 0xd7409af7), - TOBN(0xb8d53d0c, 0x007132fb), TOBN(0x68d12af7, 0xa6849238), - TOBN(0xbe0607e7, 0xbf5d9279), TOBN(0x9aa50055, 0xaada74ce), - TOBN(0xe81079cb, 0xba7e8ccb), TOBN(0x610c71d1, 0xa5f4ff5e), - TOBN(0x9e2ee1a7, 0x5aa07093), TOBN(0xca84004b, 0xa75da47c), - TOBN(0x074d3951, 0x3de75401), TOBN(0xf938f756, 0xbb311592), - TOBN(0x96197618, 0x00a43421), TOBN(0x39a25362, 0x07bc78c8), - TOBN(0x278f710a, 0x0a171276), TOBN(0xb28446ea, 0x8d1a8f08), - TOBN(0x184781bf, 0xe3b6a661), TOBN(0x7751cb1d, 0xe6d279f7), - TOBN(0xf8ff95d6, 0xc59eb662), TOBN(0x186d90b7, 0x58d3dea7), - TOBN(0x0e4bb6c1, 0xdfb4f754), TOBN(0x5c5cf56b, 0x2b2801dc), - TOBN(0xc561e452, 0x1f54564d), TOBN(0xb4fb8c60, 0xf0dd7f13), - TOBN(0xf8849630, 0x33ff98c7), TOBN(0x9619fffa, 0xcf17769c), - TOBN(0xf8090bf6, 0x1bfdd80a), TOBN(0x14d9a149, 0x422cfe63), - TOBN(0xb354c360, 0x6f6df9ea), TOBN(0xdbcf770d, 0x218f17ea), - TOBN(0x207db7c8, 0x79eb3480), TOBN(0x213dbda8, 0x559b6a26), - TOBN(0xac4c200b, 0x29fc81b3), TOBN(0xebc3e09f, 0x171d87c1), - TOBN(0x91799530, 0x1481aa9e), TOBN(0x051b92e1, 0x92e114fa), - TOBN(0xdf8f92e9, 0xecb5537f), TOBN(0x44b1b2cc, 0x290c7483), - TOBN(0xa711455a, 0x2adeb016), TOBN(0x964b6856, 0x81a10c2c), - TOBN(0x4f159d99, 0xcec03623), TOBN(0x05532225, 0xef3271ea), - TOBN(0xb231bea3, 0xc5ee4849), TOBN(0x57a54f50, 0x7094f103), - TOBN(0x3e2d421d, 0x9598b352), TOBN(0xe865a49c, 0x67412ab4), - TOBN(0xd2998a25, 0x1cc3a912), TOBN(0x5d092808, 0x0c74d65d), - TOBN(0x73f45908, 0x4088567a), TOBN(0xeb6b280e, 0x1f214a61), - TOBN(0x8c9adc34, 0xcaf0c13d), TOBN(0x39d12938, 0xf561fb80), - TOBN(0xb2dc3a5e, 0xbc6edfb4), TOBN(0x7485b1b1, 0xfe4d210e), - TOBN(0x062e0400, 0xe186ae72), TOBN(0x91e32d5c, 0x6eeb3b88), - TOBN(0x6df574d7, 0x4be59224), TOBN(0xebc88ccc, 0x716d55f3), - TOBN(0x26c2e6d0, 0xcad6ed33), TOBN(0xc6e21e7d, 0x0d3e8b10), - TOBN(0x2cc5840e, 0x5bcc36bb), TOBN(0x9292445e, 0x7da74f69), - TOBN(0x8be8d321, 0x4e5193a8), TOBN(0x3ec23629, 0x8df06413), - TOBN(0xc7e9ae85, 0xb134defa), TOBN(0x6073b1d0, 0x1bb2d475), - TOBN(0xb9ad615e, 0x2863c00d), TOBN(0x9e29493d, 0x525f4ac4), - TOBN(0xc32b1dea, 0x4e9acf4f), TOBN(0x3e1f01c8, 0xa50db88d), - TOBN(0xb05d70ea, 0x04da916c), TOBN(0x714b0d0a, 0xd865803e), - TOBN(0x4bd493fc, 0x9920cb5e), TOBN(0x5b44b1f7, 0x92c7a3ac), - TOBN(0xa2a77293, 0xbcec9235), TOBN(0x5ee06e87, 0xcd378553), - TOBN(0xceff8173, 0xda621607), TOBN(0x2bb03e4c, 0x99f5d290), - TOBN(0x2945106a, 0xa6f734ac), TOBN(0xb5056604, 0xd25c4732), - TOBN(0x5945920c, 0xe079afee), TOBN(0x686e17a0, 0x6789831f), - TOBN(0x5966bee8, 0xb74a5ae5), TOBN(0x38a673a2, 0x1e258d46), - TOBN(0xbd1cc1f2, 0x83141c95), TOBN(0x3b2ecf4f, 0x0e96e486), - TOBN(0xcd3aa896, 0x74e5fc78), TOBN(0x415ec10c, 0x2482fa7a), - TOBN(0x15234419, 0x80503380), TOBN(0x513d917a, 0xd314b392), - TOBN(0xb0b52f4e, 0x63caecae), TOBN(0x07bf22ad, 0x2dc7780b), - TOBN(0xe761e8a1, 0xe4306839), TOBN(0x1b3be962, 0x5dd7feaa), - TOBN(0x4fe728de, 0x74c778f1), TOBN(0xf1fa0bda, 0x5e0070f6), - TOBN(0x85205a31, 0x6ec3f510), TOBN(0x2c7e4a14, 0xd2980475), - TOBN(0xde3c19c0, 0x6f30ebfd), TOBN(0xdb1c1f38, 0xd4b7e644), - TOBN(0xfe291a75, 0x5dce364a), TOBN(0xb7b22a3c, 0x058f5be3), - TOBN(0x2cd2c302, 0x37fea38c), TOBN(0x2930967a, 0x2e17be17), - TOBN(0x87f009de, 0x0c061c65), TOBN(0xcb014aac, 0xedc6ed44), - TOBN(0x49bd1cb4, 0x3bafb1eb), TOBN(0x81bd8b5c, 0x282d3688), - TOBN(0x1cdab87e, 0xf01a17af), TOBN(0x21f37ac4, 0xe710063b), - TOBN(0x5a6c5676, 0x42fc8193), TOBN(0xf4753e70, 0x56a6015c), - TOBN(0x020f795e, 0xa15b0a44), TOBN(0x8f37c8d7, 0x8958a958), - TOBN(0x63b7e89b, 0xa4b675b5), TOBN(0xb4fb0c0c, 0x0fc31aea), - TOBN(0xed95e639, 0xa7ff1f2e), TOBN(0x9880f5a3, 0x619614fb), - TOBN(0xdeb6ff02, 0x947151ab), TOBN(0x5bc5118c, 0xa868dcdb), - TOBN(0xd8da2055, 0x4c20cea5), TOBN(0xcac2776e, 0x14c4d69a), - TOBN(0xcccb22c1, 0x622d599b), TOBN(0xa4ddb653, 0x68a9bb50), - TOBN(0x2c4ff151, 0x1b4941b4), TOBN(0xe1ff19b4, 0x6efba588), - TOBN(0x35034363, 0xc48345e0), TOBN(0x45542e3d, 0x1e29dfc4), - TOBN(0xf197cb91, 0x349f7aed), TOBN(0x3b2b5a00, 0x8fca8420), - TOBN(0x7c175ee8, 0x23aaf6d8), TOBN(0x54dcf421, 0x35af32b6), - TOBN(0x0ba14307, 0x27d6561e), TOBN(0x879d5ee4, 0xd175b1e2), - TOBN(0xc7c43673, 0x99807db5), TOBN(0x77a54455, 0x9cd55bcd), - TOBN(0xe6c2ff13, 0x0105c072), TOBN(0x18f7a99f, 0x8dda7da4), - TOBN(0x4c301820, 0x0e2d35c1), TOBN(0x06a53ca0, 0xd9cc6c82), - TOBN(0xaa21cc1e, 0xf1aa1d9e), TOBN(0x32414334, 0x4a75b1e8), - TOBN(0x2a6d1328, 0x0ebe9fdc), TOBN(0x16bd173f, 0x98a4755a), - TOBN(0xfbb9b245, 0x2133ffd9), TOBN(0x39a8b2f1, 0x830f1a20), - TOBN(0x484bc97d, 0xd5a1f52a), TOBN(0xd6aebf56, 0xa40eddf8), - TOBN(0x32257acb, 0x76ccdac6), TOBN(0xaf4d36ec, 0x1586ff27), - TOBN(0x8eaa8863, 0xf8de7dd1), TOBN(0x0045d5cf, 0x88647c16)}, - {TOBN(0xa6f3d574, 0xc005979d), TOBN(0xc2072b42, 0x6a40e350), - TOBN(0xfca5c156, 0x8de2ecf9), TOBN(0xa8c8bf5b, 0xa515344e), - TOBN(0x97aee555, 0x114df14a), TOBN(0xd4374a4d, 0xfdc5ec6b), - TOBN(0x754cc28f, 0x2ca85418), TOBN(0x71cb9e27, 0xd3c41f78), - TOBN(0x89105079, 0x03605c39), TOBN(0xf0843d9e, 0xa142c96c), - TOBN(0xf3744934, 0x16923684), TOBN(0x732caa2f, 0xfa0a2893), - TOBN(0xb2e8c270, 0x61160170), TOBN(0xc32788cc, 0x437fbaa3), - TOBN(0x39cd818e, 0xa6eda3ac), TOBN(0xe2e94239, 0x9e2b2e07), - TOBN(0x6967d39b, 0x0260e52a), TOBN(0xd42585cc, 0x90653325), - TOBN(0x0d9bd605, 0x21ca7954), TOBN(0x4fa20877, 0x81ed57b3), - TOBN(0x60c1eff8, 0xe34a0bbe), TOBN(0x56b0040c, 0x84f6ef64), - TOBN(0x28be2b24, 0xb1af8483), TOBN(0xb2278163, 0xf5531614), - TOBN(0x8df27545, 0x5922ac1c), TOBN(0xa7b3ef5c, 0xa52b3f63), - TOBN(0x8e77b214, 0x71de57c4), TOBN(0x31682c10, 0x834c008b), - TOBN(0xc76824f0, 0x4bd55d31), TOBN(0xb6d1c086, 0x17b61c71), - TOBN(0x31db0903, 0xc2a5089d), TOBN(0x9c092172, 0x184e5d3f), - TOBN(0xdd7ced5b, 0xc00cc638), TOBN(0x1a2015eb, 0x61278fc2), - TOBN(0x2e8e5288, 0x6a37f8d6), TOBN(0xc457786f, 0xe79933ad), - TOBN(0xb3fe4cce, 0x2c51211a), TOBN(0xad9b10b2, 0x24c20498), - TOBN(0x90d87a4f, 0xd28db5e5), TOBN(0x698cd105, 0x3aca2fc3), - TOBN(0x4f112d07, 0xe91b536d), TOBN(0xceb982f2, 0x9eba09d6), - TOBN(0x3c157b2c, 0x197c396f), TOBN(0xe23c2d41, 0x7b66eb24), - TOBN(0x480c57d9, 0x3f330d37), TOBN(0xb3a4c8a1, 0x79108deb), - TOBN(0x702388de, 0xcb199ce5), TOBN(0x0b019211, 0xb944a8d4), - TOBN(0x24f2a692, 0x840bb336), TOBN(0x7c353bdc, 0xa669fa7b), - TOBN(0xda20d6fc, 0xdec9c300), TOBN(0x625fbe2f, 0xa13a4f17), - TOBN(0xa2b1b61a, 0xdbc17328), TOBN(0x008965bf, 0xa9515621), - TOBN(0x49690939, 0xc620ff46), TOBN(0x182dd27d, 0x8717e91c), - TOBN(0x5ace5035, 0xea6c3997), TOBN(0x54259aaa, 0xc2610bef), - TOBN(0xef18bb3f, 0x3c80dd39), TOBN(0x6910b95b, 0x5fc3fa39), - TOBN(0xfce2f510, 0x43e09aee), TOBN(0xced56c9f, 0xa7675665), - TOBN(0x10e265ac, 0xd872db61), TOBN(0x6982812e, 0xae9fce69), - TOBN(0x29be11c6, 0xce800998), TOBN(0x72bb1752, 0xb90360d9), - TOBN(0x2c193197, 0x5a4ad590), TOBN(0x2ba2f548, 0x9fc1dbc0), - TOBN(0x7fe4eebb, 0xe490ebe0), TOBN(0x12a0a4cd, 0x7fae11c0), - TOBN(0x7197cf81, 0xe903ba37), TOBN(0xcf7d4aa8, 0xde1c6dd8), - TOBN(0x92af6bf4, 0x3fd5684c), TOBN(0x2b26eecf, 0x80360aa1), - TOBN(0xbd960f30, 0x00546a82), TOBN(0x407b3c43, 0xf59ad8fe), - TOBN(0x86cae5fe, 0x249c82ba), TOBN(0x9e0faec7, 0x2463744c), - TOBN(0x87f551e8, 0x94916272), TOBN(0x033f9344, 0x6ceb0615), - TOBN(0x1e5eb0d1, 0x8be82e84), TOBN(0x89967f0e, 0x7a582fef), - TOBN(0xbcf687d5, 0xa6e921fa), TOBN(0xdfee4cf3, 0xd37a09ba), - TOBN(0x94f06965, 0xb493c465), TOBN(0x638b9a1c, 0x7635c030), - TOBN(0x76667864, 0x66f05e9f), TOBN(0xccaf6808, 0xc04da725), - TOBN(0xca2eb690, 0x768fccfc), TOBN(0xf402d37d, 0xb835b362), - TOBN(0x0efac0d0, 0xe2fdfcce), TOBN(0xefc9cdef, 0xb638d990), - TOBN(0x2af12b72, 0xd1669a8b), TOBN(0x33c536bc, 0x5774ccbd), - TOBN(0x30b21909, 0xfb34870e), TOBN(0xc38fa2f7, 0x7df25aca), - TOBN(0x74c5f02b, 0xbf81f3f5), TOBN(0x0525a5ae, 0xaf7e4581), - TOBN(0x88d2aaba, 0x433c54ae), TOBN(0xed9775db, 0x806a56c5), - TOBN(0xd320738a, 0xc0edb37d), TOBN(0x25fdb6ee, 0x66cc1f51), - TOBN(0xac661d17, 0x10600d76), TOBN(0x931ec1f3, 0xbdd1ed76), - TOBN(0x65c11d62, 0x19ee43f1), TOBN(0x5cd57c3e, 0x60829d97), - TOBN(0xd26c91a3, 0x984be6e8), TOBN(0xf08d9309, 0x8b0c53bd), - TOBN(0x94bc9e5b, 0xc016e4ea), TOBN(0xd3916839, 0x11d43d2b), - TOBN(0x886c5ad7, 0x73701155), TOBN(0xe0377626, 0x20b00715), - TOBN(0x7f01c9ec, 0xaa80ba59), TOBN(0x3083411a, 0x68538e51), - TOBN(0x970370f1, 0xe88128af), TOBN(0x625cc3db, 0x91dec14b), - TOBN(0xfef9666c, 0x01ac3107), TOBN(0xb2a8d577, 0xd5057ac3), - TOBN(0xb0f26299, 0x92be5df7), TOBN(0xf579c8e5, 0x00353924), - TOBN(0xb8fa3d93, 0x1341ed7a), TOBN(0x4223272c, 0xa7b59d49), - TOBN(0x3dcb1947, 0x83b8c4a4), TOBN(0x4e413c01, 0xed1302e4), - TOBN(0x6d999127, 0xe17e44ce), TOBN(0xee86bf75, 0x33b3adfb), - TOBN(0xf6902fe6, 0x25aa96ca), TOBN(0xb73540e4, 0xe5aae47d), - TOBN(0x32801d7b, 0x1b4a158c), TOBN(0xe571c99e, 0x27e2a369), - TOBN(0x40cb76c0, 0x10d9f197), TOBN(0xc308c289, 0x3167c0ae), - TOBN(0xa6ef9dd3, 0xeb7958f2), TOBN(0xa7226dfc, 0x300879b1), - TOBN(0x6cd0b362, 0x7edf0636), TOBN(0x4efbce6c, 0x7bc37eed), - TOBN(0x75f92a05, 0x8d699021), TOBN(0x586d4c79, 0x772566e3), - TOBN(0x378ca5f1, 0x761ad23a), TOBN(0x650d86fc, 0x1465a8ac), - TOBN(0x7a4ed457, 0x842ba251), TOBN(0x6b65e3e6, 0x42234933), - TOBN(0xaf1543b7, 0x31aad657), TOBN(0xa4cefe98, 0xcbfec369), - TOBN(0xb587da90, 0x9f47befb), TOBN(0x6562e9fb, 0x41312d13), - TOBN(0xa691ea59, 0xeff1cefe), TOBN(0xcc30477a, 0x05fc4cf6), - TOBN(0xa1632461, 0x0b0ffd3d), TOBN(0xa1f16f3b, 0x5b355956), - TOBN(0x5b148d53, 0x4224ec24), TOBN(0xdc834e7b, 0xf977012a), - TOBN(0x7bfc5e75, 0xb2c69dbc), TOBN(0x3aa77a29, 0x03c3da6c), - TOBN(0xde0df03c, 0xca910271), TOBN(0xcbd5ca4a, 0x7806dc55), - TOBN(0xe1ca5807, 0x6db476cb), TOBN(0xfde15d62, 0x5f37a31e), - TOBN(0xf49af520, 0xf41af416), TOBN(0x96c5c5b1, 0x7d342db5), - TOBN(0x155c43b7, 0xeb4ceb9b), TOBN(0x2e993010, 0x4e77371a), - TOBN(0x1d2987da, 0x675d43af), TOBN(0xef2bc1c0, 0x8599fd72), - TOBN(0x96894b7b, 0x9342f6b2), TOBN(0x201eadf2, 0x7c8e71f0), - TOBN(0xf3479d9f, 0x4a1f3efc), TOBN(0xe0f8a742, 0x702a9704), - TOBN(0xeafd44b6, 0xb3eba40c), TOBN(0xf9739f29, 0xc1c1e0d0), - TOBN(0x0091471a, 0x619d505e), TOBN(0xc15f9c96, 0x9d7c263e), - TOBN(0x5be47285, 0x83afbe33), TOBN(0xa3b6d6af, 0x04f1e092), - TOBN(0xe76526b9, 0x751a9d11), TOBN(0x2ec5b26d, 0x9a4ae4d2), - TOBN(0xeb66f4d9, 0x02f6fb8d), TOBN(0x4063c561, 0x96912164), - TOBN(0xeb7050c1, 0x80ef3000), TOBN(0x288d1c33, 0xeaa5b3f0), - TOBN(0xe87c68d6, 0x07806fd8), TOBN(0xb2f7f9d5, 0x4bbbf50f), - TOBN(0x25972f3a, 0xac8d6627), TOBN(0xf8547774, 0x10e8c13b), - TOBN(0xcc50ef6c, 0x872b4a60), TOBN(0xab2a34a4, 0x4613521b), - TOBN(0x39c5c190, 0x983e15d1), TOBN(0x61dde5df, 0x59905512), - TOBN(0xe417f621, 0x9f2275f3), TOBN(0x0750c8b6, 0x451d894b), - TOBN(0x75b04ab9, 0x78b0bdaa), TOBN(0x3bfd9fd4, 0x458589bd), - TOBN(0xf1013e30, 0xee9120b6), TOBN(0x2b51af93, 0x23a4743e), - TOBN(0xea96ffae, 0x48d14d9e), TOBN(0x71dc0dbe, 0x698a1d32), - TOBN(0x914962d2, 0x0180cca4), TOBN(0x1ae60677, 0xc3568963), - TOBN(0x8cf227b1, 0x437bc444), TOBN(0xc650c83b, 0xc9962c7a), - TOBN(0x23c2c7dd, 0xfe7ccfc4), TOBN(0xf925c89d, 0x1b929d48), - TOBN(0x4460f74b, 0x06783c33), TOBN(0xac2c8d49, 0xa590475a), - TOBN(0xfb40b407, 0xb807bba0), TOBN(0x9d1e362d, 0x69ff8f3a), - TOBN(0xa33e9681, 0xcbef64a4), TOBN(0x67ece5fa, 0x332fb4b2), - TOBN(0x6900a99b, 0x739f10e3), TOBN(0xc3341ca9, 0xff525925), - TOBN(0xee18a626, 0xa9e2d041), TOBN(0xa5a83685, 0x29580ddd), - TOBN(0xf3470c81, 0x9d7de3cd), TOBN(0xedf02586, 0x2062cf9c), - TOBN(0xf43522fa, 0xc010edb0), TOBN(0x30314135, 0x13a4b1ae), - TOBN(0xc792e02a, 0xdb22b94b), TOBN(0x993d8ae9, 0xa1eaa45b), - TOBN(0x8aad6cd3, 0xcd1e1c63), TOBN(0x89529ca7, 0xc5ce688a), - TOBN(0x2ccee3aa, 0xe572a253), TOBN(0xe02b6438, 0x02a21efb), - TOBN(0xa7091b6e, 0xc9430358), TOBN(0x06d1b1fa, 0x9d7db504), - TOBN(0x58846d32, 0xc4744733), TOBN(0x40517c71, 0x379f9e34), - TOBN(0x2f65655f, 0x130ef6ca), TOBN(0x526e4488, 0xf1f3503f), - TOBN(0x8467bd17, 0x7ee4a976), TOBN(0x1d9dc913, 0x921363d1), - TOBN(0xd8d24c33, 0xb069e041), TOBN(0x5eb5da0a, 0x2cdf7f51), - TOBN(0x1c0f3cb1, 0x197b994f), TOBN(0x3c95a6c5, 0x2843eae9), - TOBN(0x7766ffc9, 0xa6097ea5), TOBN(0x7bea4093, 0xd723b867), - TOBN(0xb48e1f73, 0x4db378f9), TOBN(0x70025b00, 0xe37b77ac), - TOBN(0x943dc8e7, 0xaf24ad46), TOBN(0xb98a15ac, 0x16d00a85), - TOBN(0x3adc38ba, 0x2743b004), TOBN(0xb1c7f4f7, 0x334415ee), - TOBN(0xea43df8f, 0x1e62d05a), TOBN(0x32618905, 0x9d76a3b6), - TOBN(0x2fbd0bb5, 0xa23a0f46), TOBN(0x5bc971db, 0x6a01918c), - TOBN(0x7801d94a, 0xb4743f94), TOBN(0xb94df65e, 0x676ae22b), - TOBN(0xaafcbfab, 0xaf95894c), TOBN(0x7b9bdc07, 0x276b2241), - TOBN(0xeaf98362, 0x5bdda48b), TOBN(0x5977faf2, 0xa3fcb4df), - TOBN(0xbed042ef, 0x052c4b5b), TOBN(0x9fe87f71, 0x067591f0), - TOBN(0xc89c73ca, 0x22f24ec7), TOBN(0x7d37fa9e, 0xe64a9f1b), - TOBN(0x2710841a, 0x15562627), TOBN(0x2c01a613, 0xc243b034), - TOBN(0x1d135c56, 0x2bc68609), TOBN(0xc2ca1715, 0x8b03f1f6), - TOBN(0xc9966c2d, 0x3eb81d82), TOBN(0xc02abf4a, 0x8f6df13e), - TOBN(0x77b34bd7, 0x8f72b43b), TOBN(0xaff6218f, 0x360c82b0), - TOBN(0x0aa5726c, 0x8d55b9d2), TOBN(0xdc0adbe9, 0x99e9bffb), - TOBN(0x9097549c, 0xefb9e72a), TOBN(0x16755712, 0x9dfb3111), - TOBN(0xdd8bf984, 0xf26847f9), TOBN(0xbcb8e387, 0xdfb30cb7), - TOBN(0xc1fd32a7, 0x5171ef9c), TOBN(0x977f3fc7, 0x389b363f), - TOBN(0x116eaf2b, 0xf4babda0), TOBN(0xfeab68bd, 0xf7113c8e), - TOBN(0xd1e3f064, 0xb7def526), TOBN(0x1ac30885, 0xe0b3fa02), - TOBN(0x1c5a6e7b, 0x40142d9d), TOBN(0x839b5603, 0x30921c0b), - TOBN(0x48f301fa, 0x36a116a3), TOBN(0x380e1107, 0xcfd9ee6d), - TOBN(0x7945ead8, 0x58854be1), TOBN(0x4111c12e, 0xcbd4d49d), - TOBN(0xece3b1ec, 0x3a29c2ef), TOBN(0x6356d404, 0x8d3616f5), - TOBN(0x9f0d6a8f, 0x594d320e), TOBN(0x0989316d, 0xf651ccd2), - TOBN(0x6c32117a, 0x0f8fdde4), TOBN(0x9abe5cc5, 0xa26a9bbc), - TOBN(0xcff560fb, 0x9723f671), TOBN(0x21b2a12d, 0x7f3d593c), - TOBN(0xe4cb18da, 0x24ba0696), TOBN(0x186e2220, 0xc3543384), - TOBN(0x722f64e0, 0x88312c29), TOBN(0x94282a99, 0x17dc7752), - TOBN(0x62467bbf, 0x5a85ee89), TOBN(0xf435c650, 0xf10076a0), - TOBN(0xc9ff1539, 0x43b3a50b), TOBN(0x7132130c, 0x1a53efbc), - TOBN(0x31bfe063, 0xf7b0c5b7), TOBN(0xb0179a7d, 0x4ea994cc), - TOBN(0x12d064b3, 0xc85f455b), TOBN(0x47259328, 0x8f6e0062), - TOBN(0xf64e590b, 0xb875d6d9), TOBN(0x22dd6225, 0xad92bcc7), - TOBN(0xb658038e, 0xb9c3bd6d), TOBN(0x00cdb0d6, 0xfbba27c8), - TOBN(0x0c681337, 0x1062c45d), TOBN(0xd8515b8c, 0x2d33407d), - TOBN(0xcb8f699e, 0x8cbb5ecf), TOBN(0x8c4347f8, 0xc608d7d8), - TOBN(0x2c11850a, 0xbb3e00db), TOBN(0x20a8dafd, 0xecb49d19), - TOBN(0xbd781480, 0x45ee2f40), TOBN(0x75e354af, 0x416b60cf), - TOBN(0xde0b58a1, 0x8d49a8c4), TOBN(0xe40e94e2, 0xfa359536), - TOBN(0xbd4fa59f, 0x62accd76), TOBN(0x05cf466a, 0x8c762837), - TOBN(0xb5abda99, 0x448c277b), TOBN(0x5a9e01bf, 0x48b13740), - TOBN(0x9d457798, 0x326aad8d), TOBN(0xbdef4954, 0xc396f7e7), - TOBN(0x6fb274a2, 0xc253e292), TOBN(0x2800bf0a, 0x1cfe53e7), - TOBN(0x22426d31, 0x44438fd4), TOBN(0xef233923, 0x5e259f9a), - TOBN(0x4188503c, 0x03f66264), TOBN(0x9e5e7f13, 0x7f9fdfab), - TOBN(0x565eb76c, 0x5fcc1aba), TOBN(0xea632548, 0x59b5bff8), - TOBN(0x5587c087, 0xaab6d3fa), TOBN(0x92b639ea, 0x6ce39c1b), - TOBN(0x0706e782, 0x953b135c), TOBN(0x7308912e, 0x425268ef), - TOBN(0x599e92c7, 0x090e7469), TOBN(0x83b90f52, 0x9bc35e75), - TOBN(0x4750b3d0, 0x244975b3), TOBN(0xf3a44358, 0x11965d72), - TOBN(0x179c6774, 0x9c8dc751), TOBN(0xff18cdfe, 0xd23d9ff0), - TOBN(0xc4013833, 0x2028e247), TOBN(0x96e280e2, 0xf3bfbc79), - TOBN(0xf60417bd, 0xd0880a84), TOBN(0x263c9f3d, 0x2a568151), - TOBN(0x36be15b3, 0x2d2ce811), TOBN(0x846dc0c2, 0xf8291d21), - TOBN(0x5cfa0ecb, 0x789fcfdb), TOBN(0x45a0beed, 0xd7535b9a), - TOBN(0xec8e9f07, 0x96d69af1), TOBN(0x31a7c5b8, 0x599ab6dc), - TOBN(0xd36d45ef, 0xf9e2e09f), TOBN(0x3cf49ef1, 0xdcee954b), - TOBN(0x6be34cf3, 0x086cff9b), TOBN(0x88dbd491, 0x39a3360f), - TOBN(0x1e96b8cc, 0x0dbfbd1d), TOBN(0xc1e5f7bf, 0xcb7e2552), - TOBN(0x0547b214, 0x28819d98), TOBN(0xc770dd9c, 0x7aea9dcb), - TOBN(0xaef0d4c7, 0x041d68c8), TOBN(0xcc2b9818, 0x13cb9ba8), - TOBN(0x7fc7bc76, 0xfe86c607), TOBN(0x6b7b9337, 0x502a9a95), - TOBN(0x1948dc27, 0xd14dab63), TOBN(0x249dd198, 0xdae047be), - TOBN(0xe8356584, 0xa981a202), TOBN(0x3531dd18, 0x3a893387), - TOBN(0x1be11f90, 0xc85c7209), TOBN(0x93d2fe1e, 0xe2a52b5a), - TOBN(0x8225bfe2, 0xec6d6b97), TOBN(0x9cf6d6f4, 0xbd0aa5de), - TOBN(0x911459cb, 0x54779f5f), TOBN(0x5649cddb, 0x86aeb1f3), - TOBN(0x32133579, 0x3f26ce5a), TOBN(0xc289a102, 0x550f431e), - TOBN(0x559dcfda, 0x73b84c6f), TOBN(0x84973819, 0xee3ac4d7), - TOBN(0xb51e55e6, 0xf2606a82), TOBN(0xe25f7061, 0x90f2fb57), - TOBN(0xacef6c2a, 0xb1a4e37c), TOBN(0x864e359d, 0x5dcf2706), - TOBN(0x479e6b18, 0x7ce57316), TOBN(0x2cab2500, 0x3a96b23d), - TOBN(0xed489862, 0x8ef16df7), TOBN(0x2056538c, 0xef3758b5), - TOBN(0xa7df865e, 0xf15d3101), TOBN(0x80c5533a, 0x61b553d7), - TOBN(0x366e1997, 0x4ed14294), TOBN(0x6620741f, 0xb3c0bcd6), - TOBN(0x21d1d9c4, 0xedc45418), TOBN(0x005b859e, 0xc1cc4a9d), - TOBN(0xdf01f630, 0xa1c462f0), TOBN(0x15d06cf3, 0xf26820c7), - TOBN(0x9f7f24ee, 0x3484be47), TOBN(0x2ff33e96, 0x4a0c902f), - TOBN(0x00bdf457, 0x5a0bc453), TOBN(0x2378dfaf, 0x1aa238db), - TOBN(0x272420ec, 0x856720f2), TOBN(0x2ad9d95b, 0x96797291), - TOBN(0xd1242cc6, 0x768a1558), TOBN(0x2e287f8b, 0x5cc86aa8), - TOBN(0x796873d0, 0x990cecaa), TOBN(0xade55f81, 0x675d4080), - TOBN(0x2645eea3, 0x21f0cd84), TOBN(0x7a1efa0f, 0xb4e17d02), - TOBN(0xf6858420, 0x037cc061), TOBN(0x682e05f0, 0xd5d43e12), - TOBN(0x59c36994, 0x27218710), TOBN(0x85cbba4d, 0x3f7cd2fc), - TOBN(0x726f9729, 0x7a3cd22a), TOBN(0x9f8cd5dc, 0x4a628397), - TOBN(0x17b93ab9, 0xc23165ed), TOBN(0xff5f5dbf, 0x122823d4), - TOBN(0xc1e4e4b5, 0x654a446d), TOBN(0xd1a9496f, 0x677257ba), - TOBN(0x6387ba94, 0xde766a56), TOBN(0x23608bc8, 0x521ec74a), - TOBN(0x16a522d7, 0x6688c4d4), TOBN(0x9d6b4282, 0x07373abd), - TOBN(0xa62f07ac, 0xb42efaa3), TOBN(0xf73e00f7, 0xe3b90180), - TOBN(0x36175fec, 0x49421c3e), TOBN(0xc4e44f9b, 0x3dcf2678), - TOBN(0x76df436b, 0x7220f09f), TOBN(0x172755fb, 0x3aa8b6cf), - TOBN(0xbab89d57, 0x446139cc), TOBN(0x0a0a6e02, 0x5fe0208f), - TOBN(0xcdbb63e2, 0x11e5d399), TOBN(0x33ecaa12, 0xa8977f0b), - TOBN(0x59598b21, 0xf7c42664), TOBN(0xb3e91b32, 0xab65d08a), - TOBN(0x035822ee, 0xf4502526), TOBN(0x1dcf0176, 0x720a82a9), - TOBN(0x50f8598f, 0x3d589e02), TOBN(0xdf0478ff, 0xb1d63d2c), - TOBN(0x8b8068bd, 0x1571cd07), TOBN(0x30c3aa4f, 0xd79670cd), - TOBN(0x25e8fd4b, 0x941ade7f), TOBN(0x3d1debdc, 0x32790011), - TOBN(0x65b6dcbd, 0x3a3f9ff0), TOBN(0x282736a4, 0x793de69c), - TOBN(0xef69a0c3, 0xd41d3bd3), TOBN(0xb533b8c9, 0x07a26bde), - TOBN(0xe2801d97, 0xdb2edf9f), TOBN(0xdc4a8269, 0xe1877af0), - TOBN(0x6c1c5851, 0x3d590dbe), TOBN(0x84632f6b, 0xee4e9357), - TOBN(0xd36d36b7, 0x79b33374), TOBN(0xb46833e3, 0x9bbca2e6), - TOBN(0x37893913, 0xf7fc0586), TOBN(0x385315f7, 0x66bf4719), - TOBN(0x72c56293, 0xb31855dc), TOBN(0xd1416d4e, 0x849061fe), - TOBN(0xbeb3ab78, 0x51047213), TOBN(0x447f6e61, 0xf040c996), - TOBN(0xd06d310d, 0x638b1d0c), TOBN(0xe28a413f, 0xbad1522e), - TOBN(0x685a76cb, 0x82003f86), TOBN(0x610d07f7, 0x0bcdbca3), - TOBN(0x6ff66021, 0x9ca4c455), TOBN(0x7df39b87, 0xcea10eec), - TOBN(0xb9255f96, 0xe22db218), TOBN(0x8cc6d9eb, 0x08a34c44), - TOBN(0xcd4ffb86, 0x859f9276), TOBN(0x8fa15eb2, 0x50d07335), - TOBN(0xdf553845, 0xcf2c24b5), TOBN(0x89f66a9f, 0x52f9c3ba), - TOBN(0x8f22b5b9, 0xe4a7ceb3), TOBN(0xaffef809, 0x0e134686), - TOBN(0x3e53e1c6, 0x8eb8fac2), TOBN(0x93c1e4eb, 0x28aec98e), - TOBN(0xb6b91ec5, 0x32a43bcb), TOBN(0x2dbfa947, 0xb2d74a51), - TOBN(0xe065d190, 0xca84bad7), TOBN(0xfb13919f, 0xad58e65c), - TOBN(0x3c41718b, 0xf1cb6e31), TOBN(0x688969f0, 0x06d05c3f), - TOBN(0xd4f94ce7, 0x21264d45), TOBN(0xfdfb65e9, 0x7367532b), - TOBN(0x5b1be8b1, 0x0945a39d), TOBN(0x229f789c, 0x2b8baf3b), - TOBN(0xd8f41f3e, 0x6f49f15d), TOBN(0x678ce828, 0x907f0792), - TOBN(0xc69ace82, 0xfca6e867), TOBN(0x106451ae, 0xd01dcc89), - TOBN(0x1bb4f7f0, 0x19fc32d2), TOBN(0x64633dfc, 0xb00c52d2), - TOBN(0x8f13549a, 0xad9ea445), TOBN(0x99a3bf50, 0xfb323705), - TOBN(0x0c9625a2, 0x534d4dbc), TOBN(0x45b8f1d1, 0xc2a2fea3), - TOBN(0x76ec21a1, 0xa530fc1a), TOBN(0x4bac9c2a, 0x9e5bd734), - TOBN(0x5996d76a, 0x7b4e3587), TOBN(0x0045cdee, 0x1182d9e3), - TOBN(0x1aee24b9, 0x1207f13d), TOBN(0x66452e97, 0x97345a41), - TOBN(0x16e5b054, 0x9f950cd0), TOBN(0x9cc72fb1, 0xd7fdd075), - TOBN(0x6edd61e7, 0x66249663), TOBN(0xde4caa4d, 0xf043cccb), - TOBN(0x11b1f57a, 0x55c7ac17), TOBN(0x779cbd44, 0x1a85e24d), - TOBN(0x78030f86, 0xe46081e7), TOBN(0xfd4a6032, 0x8e20f643), - TOBN(0xcc7a6488, 0x0a750c0f), TOBN(0x39bacfe3, 0x4e548e83), - TOBN(0x3d418c76, 0x0c110f05), TOBN(0x3e4daa4c, 0xb1f11588), - TOBN(0x2733e7b5, 0x5ffc69ff), TOBN(0x46f147bc, 0x92053127), - TOBN(0x885b2434, 0xd722df94), TOBN(0x6a444f65, 0xe6fc6b7c)}, - {TOBN(0x7a1a465a, 0xc3f16ea8), TOBN(0x115a461d, 0xb2f1d11c), - TOBN(0x4767dd95, 0x6c68a172), TOBN(0x3392f2eb, 0xd13a4698), - TOBN(0xc7a99ccd, 0xe526cdc7), TOBN(0x8e537fdc, 0x22292b81), - TOBN(0x76d8cf69, 0xa6d39198), TOBN(0xffc5ff43, 0x2446852d), - TOBN(0x97b14f7e, 0xa90567e6), TOBN(0x513257b7, 0xb6ae5cb7), - TOBN(0x85454a3c, 0x9f10903d), TOBN(0xd8d2c9ad, 0x69bc3724), - TOBN(0x38da9324, 0x6b29cb44), TOBN(0xb540a21d, 0x77c8cbac), - TOBN(0x9bbfe435, 0x01918e42), TOBN(0xfffa707a, 0x56c3614e), - TOBN(0x0ce4e3f1, 0xd4e353b7), TOBN(0x062d8a14, 0xef46b0a0), - TOBN(0x6408d5ab, 0x574b73fd), TOBN(0xbc41d1c9, 0xd3273ffd), - TOBN(0x3538e1e7, 0x6be77800), TOBN(0x71fe8b37, 0xc5655031), - TOBN(0x1cd91621, 0x6b9b331a), TOBN(0xad825d0b, 0xbb388f73), - TOBN(0x56c2e05b, 0x1cb76219), TOBN(0x0ec0bf91, 0x71567e7e), - TOBN(0xe7076f86, 0x61c4c910), TOBN(0xd67b085b, 0xbabc04d9), - TOBN(0x9fb90459, 0x5e93a96a), TOBN(0x7526c1ea, 0xfbdc249a), - TOBN(0x0d44d367, 0xecdd0bb7), TOBN(0x95399917, 0x9dc0d695), - TOBN(0x61360ee9, 0x9e240d18), TOBN(0x057cdcac, 0xb4b94466), - TOBN(0xe7667cd1, 0x2fe5325c), TOBN(0x1fa297b5, 0x21974e3b), - TOBN(0xfa4081e7, 0xdb083d76), TOBN(0x31993be6, 0xf206bd15), - TOBN(0x8949269b, 0x14c19f8c), TOBN(0x21468d72, 0xa9d92357), - TOBN(0x2ccbc583, 0xa4c506ec), TOBN(0x957ed188, 0xd1acfe97), - TOBN(0x8baed833, 0x12f1aea2), TOBN(0xef2a6cb4, 0x8325362d), - TOBN(0x130dde42, 0x8e195c43), TOBN(0xc842025a, 0x0e6050c6), - TOBN(0x2da972a7, 0x08686a5d), TOBN(0xb52999a1, 0xe508b4a8), - TOBN(0xd9f090b9, 0x10a5a8bd), TOBN(0xca91d249, 0x096864da), - TOBN(0x8e6a93be, 0x3f67dbc1), TOBN(0xacae6fba, 0xf5f4764c), - TOBN(0x1563c6e0, 0xd21411a0), TOBN(0x28fa787f, 0xda0a4ad8), - TOBN(0xd524491c, 0x908c8030), TOBN(0x1257ba0e, 0x4c795f07), - TOBN(0x83f49167, 0xceca9754), TOBN(0x426d2cf6, 0x4b7939a0), - TOBN(0x2555e355, 0x723fd0bf), TOBN(0xa96e6d06, 0xc4f144e2), - TOBN(0x4768a8dd, 0x87880e61), TOBN(0x15543815, 0xe508e4d5), - TOBN(0x09d7e772, 0xb1b65e15), TOBN(0x63439dd6, 0xac302fa0), - TOBN(0xb93f802f, 0xc14e35c2), TOBN(0x71735b7c, 0x4341333c), - TOBN(0x03a25104, 0x16d4f362), TOBN(0x3f4d069b, 0xbf433c8e), - TOBN(0x0d83ae01, 0xf78f5a7c), TOBN(0x50a8ffbe, 0x7c4eed07), - TOBN(0xc74f8906, 0x76e10f83), TOBN(0x7d080966, 0x9ddaf8e1), - TOBN(0xb11df8e1, 0x698e04cc), TOBN(0x877be203, 0x169005c8), - TOBN(0x32749e8c, 0x4f3c6179), TOBN(0x2dbc9d0a, 0x7853fc05), - TOBN(0x187d4f93, 0x9454d937), TOBN(0xe682ce9d, 0xb4800e1b), - TOBN(0xa9129ad8, 0x165e68e8), TOBN(0x0fe29735, 0xbe7f785b), - TOBN(0x5303f40c, 0x5b9e02b7), TOBN(0xa37c9692, 0x35ee04e8), - TOBN(0x5f46cc20, 0x34d6632b), TOBN(0x55ef72b2, 0x96ac545b), - TOBN(0xabec5c1f, 0x7b91b062), TOBN(0x0a79e1c7, 0xbb33e821), - TOBN(0xbb04b428, 0x3a9f4117), TOBN(0x0de1f28f, 0xfd2a475a), - TOBN(0x31019ccf, 0x3a4434b4), TOBN(0xa3458111, 0x1a7954dc), - TOBN(0xa9dac80d, 0xe34972a7), TOBN(0xb043d054, 0x74f6b8dd), - TOBN(0x021c319e, 0x11137b1a), TOBN(0x00a754ce, 0xed5cc03f), - TOBN(0x0aa2c794, 0xcbea5ad4), TOBN(0x093e67f4, 0x70c015b6), - TOBN(0x72cdfee9, 0xc97e3f6b), TOBN(0xc10bcab4, 0xb6da7461), - TOBN(0x3b02d2fc, 0xb59806b9), TOBN(0x85185e89, 0xa1de6f47), - TOBN(0x39e6931f, 0x0eb6c4d4), TOBN(0x4d4440bd, 0xd4fa5b04), - TOBN(0x5418786e, 0x34be7eb8), TOBN(0x6380e521, 0x9d7259bc), - TOBN(0x20ac0351, 0xd598d710), TOBN(0x272c4166, 0xcb3a4da4), - TOBN(0xdb82fe1a, 0xca71de1f), TOBN(0x746e79f2, 0xd8f54b0f), - TOBN(0x6e7fc736, 0x4b573e9b), TOBN(0x75d03f46, 0xfd4b5040), - TOBN(0x5c1cc36d, 0x0b98d87b), TOBN(0x513ba3f1, 0x1f472da1), - TOBN(0x79d0af26, 0xabb177dd), TOBN(0xf82ab568, 0x7891d564), - TOBN(0x2b6768a9, 0x72232173), TOBN(0xefbb3bb0, 0x8c1f6619), - TOBN(0xb29c11db, 0xa6d18358), TOBN(0x519e2797, 0xb0916d3a), - TOBN(0xd4dc18f0, 0x9188e290), TOBN(0x648e86e3, 0x98b0ca7f), - TOBN(0x859d3145, 0x983c38b5), TOBN(0xb14f176c, 0x637abc8b), - TOBN(0x2793fb9d, 0xcaff7be6), TOBN(0xebe5a55f, 0x35a66a5a), - TOBN(0x7cec1dcd, 0x9f87dc59), TOBN(0x7c595cd3, 0xfbdbf560), - TOBN(0x5b543b22, 0x26eb3257), TOBN(0x69080646, 0xc4c935fd), - TOBN(0x7f2e4403, 0x81e9ede3), TOBN(0x243c3894, 0xcaf6df0a), - TOBN(0x7c605bb1, 0x1c073b11), TOBN(0xcd06a541, 0xba6a4a62), - TOBN(0x29168949, 0x49d4e2e5), TOBN(0x33649d07, 0x4af66880), - TOBN(0xbfc0c885, 0xe9a85035), TOBN(0xb4e52113, 0xfc410f4b), - TOBN(0xdca3b706, 0x78a6513b), TOBN(0x92ea4a2a, 0x9edb1943), - TOBN(0x02642216, 0xdb6e2dd8), TOBN(0x9b45d0b4, 0x9fd57894), - TOBN(0x114e70db, 0xc69d11ae), TOBN(0x1477dd19, 0x4c57595f), - TOBN(0xbc2208b4, 0xec77c272), TOBN(0x95c5b4d7, 0xdb68f59c), - TOBN(0xb8c4fc63, 0x42e532b7), TOBN(0x386ba422, 0x9ae35290), - TOBN(0xfb5dda42, 0xd201ecbc), TOBN(0x2353dc8b, 0xa0e38fd6), - TOBN(0x9a0b85ea, 0x68f7e978), TOBN(0x96ec5682, 0x2ad6d11f), - TOBN(0x5e279d6c, 0xe5f6886d), TOBN(0xd3fe03cd, 0x3cb1914d), - TOBN(0xfe541fa4, 0x7ea67c77), TOBN(0x952bd2af, 0xe3ea810c), - TOBN(0x791fef56, 0x8d01d374), TOBN(0xa3a1c621, 0x0f11336e), - TOBN(0x5ad0d5a9, 0xc7ec6d79), TOBN(0xff7038af, 0x3225c342), - TOBN(0x003c6689, 0xbc69601b), TOBN(0x25059bc7, 0x45e8747d), - TOBN(0xfa4965b2, 0xf2086fbf), TOBN(0xf6840ea6, 0x86916078), - TOBN(0xd7ac7620, 0x70081d6c), TOBN(0xe600da31, 0xb5328645), - TOBN(0x01916f63, 0x529b8a80), TOBN(0xe80e4858, 0x2d7d6f3e), - TOBN(0x29eb0fe8, 0xd664ca7c), TOBN(0xf017637b, 0xe7b43b0c), - TOBN(0x9a75c806, 0x76cb2566), TOBN(0x8f76acb1, 0xb24892d9), - TOBN(0x7ae7b9cc, 0x1f08fe45), TOBN(0x19ef7329, 0x6a4907d8), - TOBN(0x2db4ab71, 0x5f228bf0), TOBN(0xf3cdea39, 0x817032d7), - TOBN(0x0b1f482e, 0xdcabe3c0), TOBN(0x3baf76b4, 0xbb86325c), - TOBN(0xd49065e0, 0x10089465), TOBN(0x3bab5d29, 0x8e77c596), - TOBN(0x7636c3a6, 0x193dbd95), TOBN(0xdef5d294, 0xb246e499), - TOBN(0xb22c58b9, 0x286b2475), TOBN(0xa0b93939, 0xcd80862b), - TOBN(0x3002c83a, 0xf0992388), TOBN(0x6de01f9b, 0xeacbe14c), - TOBN(0x6aac688e, 0xadd70482), TOBN(0x708de92a, 0x7b4a4e8a), - TOBN(0x75b6dd73, 0x758a6eef), TOBN(0xea4bf352, 0x725b3c43), - TOBN(0x10041f2c, 0x87912868), TOBN(0xb1b1be95, 0xef09297a), - TOBN(0x19ae23c5, 0xa9f3860a), TOBN(0xc4f0f839, 0x515dcf4b), - TOBN(0x3c7ecca3, 0x97f6306a), TOBN(0x744c44ae, 0x68a3a4b0), - TOBN(0x69cd13a0, 0xb3a1d8a2), TOBN(0x7cad0a1e, 0x5256b578), - TOBN(0xea653fcd, 0x33791d9e), TOBN(0x9cc2a05d, 0x74b2e05f), - TOBN(0x73b391dc, 0xfd7affa2), TOBN(0xddb7091e, 0xb6b05442), - TOBN(0xc71e27bf, 0x8538a5c6), TOBN(0x195c63dd, 0x89abff17), - TOBN(0xfd315285, 0x1b71e3da), TOBN(0x9cbdfda7, 0xfa680fa0), - TOBN(0x9db876ca, 0x849d7eab), TOBN(0xebe2764b, 0x3c273271), - TOBN(0x663357e3, 0xf208dcea), TOBN(0x8c5bd833, 0x565b1b70), - TOBN(0xccc3b4f5, 0x9837fc0d), TOBN(0x9b641ba8, 0xa79cf00f), - TOBN(0x7428243d, 0xdfdf3990), TOBN(0x83a594c4, 0x020786b1), - TOBN(0xb712451a, 0x526c4502), TOBN(0x9d39438e, 0x6adb3f93), - TOBN(0xfdb261e3, 0xe9ff0ccd), TOBN(0x80344e3c, 0xe07af4c3), - TOBN(0x75900d7c, 0x2fa4f126), TOBN(0x08a3b865, 0x5c99a232), - TOBN(0x2478b6bf, 0xdb25e0c3), TOBN(0x482cc2c2, 0x71db2edf), - TOBN(0x37df7e64, 0x5f321bb8), TOBN(0x8a93821b, 0x9a8005b4), - TOBN(0x3fa2f10c, 0xcc8c1958), TOBN(0x0d332218, 0x2c269d0a), - TOBN(0x20ab8119, 0xe246b0e6), TOBN(0xb39781e4, 0xd349fd17), - TOBN(0xd293231e, 0xb31aa100), TOBN(0x4b779c97, 0xbb032168), - TOBN(0x4b3f19e1, 0xc8470500), TOBN(0x45b7efe9, 0x0c4c869d), - TOBN(0xdb84f38a, 0xa1a6bbcc), TOBN(0x3b59cb15, 0xb2fddbc1), - TOBN(0xba5514df, 0x3fd165e8), TOBN(0x499fd6a9, 0x061f8811), - TOBN(0x72cd1fe0, 0xbfef9f00), TOBN(0x120a4bb9, 0x79ad7e8a), - TOBN(0xf2ffd095, 0x5f4a5ac5), TOBN(0xcfd174f1, 0x95a7a2f0), - TOBN(0xd42301ba, 0x9d17baf1), TOBN(0xd2fa487a, 0x77f22089), - TOBN(0x9cb09efe, 0xb1dc77e1), TOBN(0xe9566939, 0x21c99682), - TOBN(0x8c546901, 0x6c6067bb), TOBN(0xfd378574, 0x61c24456), - TOBN(0x2b6a6cbe, 0x81796b33), TOBN(0x62d550f6, 0x58e87f8b), - TOBN(0x1b763e1c, 0x7f1b01b4), TOBN(0x4b93cfea, 0x1b1b5e12), - TOBN(0xb9345238, 0x1d531696), TOBN(0x57201c00, 0x88cdde69), - TOBN(0xdde92251, 0x9a86afc7), TOBN(0xe3043895, 0xbd35cea8), - TOBN(0x7608c1e1, 0x8555970d), TOBN(0x8267dfa9, 0x2535935e), - TOBN(0xd4c60a57, 0x322ea38b), TOBN(0xe0bf7977, 0x804ef8b5), - TOBN(0x1a0dab28, 0xc06fece4), TOBN(0xd405991e, 0x94e7b49d), - TOBN(0xc542b6d2, 0x706dab28), TOBN(0xcb228da3, 0xa91618fb), - TOBN(0x224e4164, 0x107d1cea), TOBN(0xeb9fdab3, 0xd0f5d8f1), - TOBN(0xc02ba386, 0x0d6e41cd), TOBN(0x676a72c5, 0x9b1f7146), - TOBN(0xffd6dd98, 0x4d6cb00b), TOBN(0xcef9c5ca, 0xde2e8d7c), - TOBN(0xa1bbf5d7, 0x641c7936), TOBN(0x1b95b230, 0xee8f772e), - TOBN(0xf765a92e, 0xe8ac25b1), TOBN(0xceb04cfc, 0x3a18b7c6), - TOBN(0x27944cef, 0x0acc8966), TOBN(0xcbb3c957, 0x434c1004), - TOBN(0x9c9971a1, 0xa43ff93c), TOBN(0x5bc2db17, 0xa1e358a9), - TOBN(0x45b4862e, 0xa8d9bc82), TOBN(0x70ebfbfb, 0x2201e052), - TOBN(0xafdf64c7, 0x92871591), TOBN(0xea5bcae6, 0xb42d0219), - TOBN(0xde536c55, 0x2ad8f03c), TOBN(0xcd6c3f4d, 0xa76aa33c), - TOBN(0xbeb5f623, 0x0bca6de3), TOBN(0xdd20dd99, 0xb1e706fd), - TOBN(0x90b3ff9d, 0xac9059d4), TOBN(0x2d7b2902, 0x7ccccc4e), - TOBN(0x8a090a59, 0xce98840f), TOBN(0xa5d947e0, 0x8410680a), - TOBN(0x49ae346a, 0x923379a5), TOBN(0x7dbc84f9, 0xb28a3156), - TOBN(0xfd40d916, 0x54a1aff2), TOBN(0xabf318ba, 0x3a78fb9b), - TOBN(0x50152ed8, 0x3029f95e), TOBN(0x9fc1dd77, 0xc58ad7fa), - TOBN(0x5fa57915, 0x13595c17), TOBN(0xb9504668, 0x8f62b3a9), - TOBN(0x907b5b24, 0xff3055b0), TOBN(0x2e995e35, 0x9a84f125), - TOBN(0x87dacf69, 0x7e9bbcfb), TOBN(0x95d0c1d6, 0xe86d96e3), - TOBN(0x65726e3c, 0x2d95a75c), TOBN(0x2c3c9001, 0xacd27f21), - TOBN(0x1deab561, 0x6c973f57), TOBN(0x108b7e2c, 0xa5221643), - TOBN(0x5fee9859, 0xc4ef79d4), TOBN(0xbd62b88a, 0x40d4b8c6), - TOBN(0xb4dd29c4, 0x197c75d6), TOBN(0x266a6df2, 0xb7076feb), - TOBN(0x9512d0ea, 0x4bf2df11), TOBN(0x1320c24f, 0x6b0cc9ec), - TOBN(0x6bb1e0e1, 0x01a59596), TOBN(0x8317c5bb, 0xeff9aaac), - TOBN(0x65bb405e, 0x385aa6c9), TOBN(0x613439c1, 0x8f07988f), - TOBN(0xd730049f, 0x16a66e91), TOBN(0xe97f2820, 0xfa1b0e0d), - TOBN(0x4131e003, 0x304c28ea), TOBN(0x820ab732, 0x526bac62), - TOBN(0xb2ac9ef9, 0x28714423), TOBN(0x54ecfffa, 0xadb10cb2), - TOBN(0x8781476e, 0xf886a4cc), TOBN(0x4b2c87b5, 0xdb2f8d49), - TOBN(0xe857cd20, 0x0a44295d), TOBN(0x707d7d21, 0x58c6b044), - TOBN(0xae8521f9, 0xf596757c), TOBN(0x87448f03, 0x67b2b714), - TOBN(0x13a9bc45, 0x5ebcd58d), TOBN(0x79bcced9, 0x9122d3c1), - TOBN(0x3c644247, 0x9e076642), TOBN(0x0cf22778, 0x2df4767d), - TOBN(0x5e61aee4, 0x71d444b6), TOBN(0x211236bf, 0xc5084a1d), - TOBN(0x7e15bc9a, 0x4fd3eaf6), TOBN(0x68df2c34, 0xab622bf5), - TOBN(0x9e674f0f, 0x59bf4f36), TOBN(0xf883669b, 0xd7f34d73), - TOBN(0xc48ac1b8, 0x31497b1d), TOBN(0x323b925d, 0x5106703b), - TOBN(0x22156f42, 0x74082008), TOBN(0xeffc521a, 0xc8482bcb), - TOBN(0x5c6831bf, 0x12173479), TOBN(0xcaa2528f, 0xc4739490), - TOBN(0x84d2102a, 0x8f1b3c4d), TOBN(0xcf64dfc1, 0x2d9bec0d), - TOBN(0x433febad, 0x78a546ef), TOBN(0x1f621ec3, 0x7b73cef1), - TOBN(0x6aecd627, 0x37338615), TOBN(0x162082ab, 0x01d8edf6), - TOBN(0x833a8119, 0x19e86b66), TOBN(0x6023a251, 0xd299b5db), - TOBN(0xf5bb0c3a, 0xbbf04b89), TOBN(0x6735eb69, 0xae749a44), - TOBN(0xd0e058c5, 0x4713de3b), TOBN(0xfdf2593e, 0x2c3d4ccd), - TOBN(0x1b8f414e, 0xfdd23667), TOBN(0xdd52aaca, 0xfa2015ee), - TOBN(0x3e31b517, 0xbd9625ff), TOBN(0x5ec9322d, 0x8db5918c), - TOBN(0xbc73ac85, 0xa96f5294), TOBN(0x82aa5bf3, 0x61a0666a), - TOBN(0x49755810, 0xbf08ac42), TOBN(0xd21cdfd5, 0x891cedfc), - TOBN(0x918cb57b, 0x67f8be10), TOBN(0x365d1a7c, 0x56ffa726), - TOBN(0x2435c504, 0x6532de93), TOBN(0xc0fc5e10, 0x2674cd02), - TOBN(0x6e51fcf8, 0x9cbbb142), TOBN(0x1d436e5a, 0xafc50692), - TOBN(0x766bffff, 0x3fbcae22), TOBN(0x3148c2fd, 0xfd55d3b8), - TOBN(0x52c7fdc9, 0x233222fa), TOBN(0x89ff1092, 0xe419fb6b), - TOBN(0x3cd6db99, 0x25254977), TOBN(0x2e85a161, 0x1cf12ca7), - TOBN(0xadd2547c, 0xdc810bc9), TOBN(0xea3f458f, 0x9d257c22), - TOBN(0x642c1fbe, 0x27d6b19b), TOBN(0xed07e6b5, 0x140481a6), - TOBN(0x6ada1d42, 0x86d2e0f8), TOBN(0xe5920122, 0x0e8a9fd5), - TOBN(0x02c936af, 0x708c1b49), TOBN(0x60f30fee, 0x2b4bfaff), - TOBN(0x6637ad06, 0x858e6a61), TOBN(0xce4c7767, 0x3fd374d0), - TOBN(0x39d54b2d, 0x7188defb), TOBN(0xa8c9d250, 0xf56a6b66), - TOBN(0x58fc0f5e, 0xb24fe1dc), TOBN(0x9eaf9dee, 0x6b73f24c), - TOBN(0xa90d588b, 0x33650705), TOBN(0xde5b62c5, 0xaf2ec729), - TOBN(0x5c72cfae, 0xd3c2b36e), TOBN(0x868c19d5, 0x034435da), - TOBN(0x88605f93, 0xe17ee145), TOBN(0xaa60c4ee, 0x77a5d5b1), - TOBN(0xbcf5bfd2, 0x3b60c472), TOBN(0xaf4ef13c, 0xeb1d3049), - TOBN(0x373f44fc, 0xe13895c9), TOBN(0xf29b382f, 0x0cbc9822), - TOBN(0x1bfcb853, 0x73efaef6), TOBN(0xcf56ac9c, 0xa8c96f40), - TOBN(0xd7adf109, 0x7a191e24), TOBN(0x98035f44, 0xbf8a8dc2), - TOBN(0xf40a71b9, 0x1e750c84), TOBN(0xc57f7b0c, 0x5dc6c469), - TOBN(0x49a0e79c, 0x6fbc19c1), TOBN(0x6b0f5889, 0xa48ebdb8), - TOBN(0x5d3fd084, 0xa07c4e9f), TOBN(0xc3830111, 0xab27de14), - TOBN(0x0e4929fe, 0x33e08dcc), TOBN(0xf4a5ad24, 0x40bb73a3), - TOBN(0xde86c2bf, 0x490f97ca), TOBN(0x288f09c6, 0x67a1ce18), - TOBN(0x364bb886, 0x1844478d), TOBN(0x7840fa42, 0xceedb040), - TOBN(0x1269fdd2, 0x5a631b37), TOBN(0x94761f1e, 0xa47c8b7d), - TOBN(0xfc0c2e17, 0x481c6266), TOBN(0x85e16ea2, 0x3daa5fa7), - TOBN(0xccd86033, 0x92491048), TOBN(0x0c2f6963, 0xf4d402d7), - TOBN(0x6336f7df, 0xdf6a865c), TOBN(0x0a2a463c, 0xb5c02a87), - TOBN(0xb0e29be7, 0xbf2f12ee), TOBN(0xf0a22002, 0x66bad988), - TOBN(0x27f87e03, 0x9123c1d7), TOBN(0x21669c55, 0x328a8c98), - TOBN(0x186b9803, 0x92f14529), TOBN(0xd3d056cc, 0x63954df3), - TOBN(0x2f03fd58, 0x175a46f6), TOBN(0x63e34ebe, 0x11558558), - TOBN(0xe13fedee, 0x5b80cfa5), TOBN(0xe872a120, 0xd401dbd1), - TOBN(0x52657616, 0xe8a9d667), TOBN(0xbc8da4b6, 0xe08d6693), - TOBN(0x370fb9bb, 0x1b703e75), TOBN(0x6773b186, 0xd4338363), - TOBN(0x18dad378, 0xecef7bff), TOBN(0xaac787ed, 0x995677da), - TOBN(0x4801ea8b, 0x0437164b), TOBN(0xf430ad20, 0x73fe795e), - TOBN(0xb164154d, 0x8ee5eb73), TOBN(0x0884ecd8, 0x108f7c0e), - TOBN(0x0e6ec096, 0x5f520698), TOBN(0x640631fe, 0x44f7b8d9), - TOBN(0x92fd34fc, 0xa35a68b9), TOBN(0x9c5a4b66, 0x4d40cf4e), - TOBN(0x949454bf, 0x80b6783d), TOBN(0x80e701fe, 0x3a320a10), - TOBN(0x8d1a564a, 0x1a0a39b2), TOBN(0x1436d53d, 0x320587db), - TOBN(0xf5096e6d, 0x6556c362), TOBN(0xbc23a3c0, 0xe2455d7e), - TOBN(0x3a7aee54, 0x807230f9), TOBN(0x9ba1cfa6, 0x22ae82fd), - TOBN(0x833a057a, 0x99c5d706), TOBN(0x8be85f4b, 0x842315c9), - TOBN(0xd083179a, 0x66a72f12), TOBN(0x2fc77d5d, 0xcdcc73cd), - TOBN(0x22b88a80, 0x5616ee30), TOBN(0xfb09548f, 0xe7ab1083), - TOBN(0x8ad6ab0d, 0x511270cd), TOBN(0x61f6c57a, 0x6924d9ab), - TOBN(0xa0f7bf72, 0x90aecb08), TOBN(0x849f87c9, 0x0df784a4), - TOBN(0x27c79c15, 0xcfaf1d03), TOBN(0xbbf9f675, 0xc463face), - TOBN(0x91502c65, 0x765ba543), TOBN(0x18ce3cac, 0x42ea60dd), - TOBN(0xe5cee6ac, 0x6e43ecb3), TOBN(0x63e4e910, 0x68f2aeeb), - TOBN(0x26234fa3, 0xc85932ee), TOBN(0x96883e8b, 0x4c90c44d), - TOBN(0x29b9e738, 0xa18a50f6), TOBN(0xbfc62b2a, 0x3f0420df), - TOBN(0xd22a7d90, 0x6d3e1fa9), TOBN(0x17115618, 0xfe05b8a3), - TOBN(0x2a0c9926, 0xbb2b9c01), TOBN(0xc739fcc6, 0xe07e76a2), - TOBN(0x540e9157, 0x165e439a), TOBN(0x06353a62, 0x6a9063d8), - TOBN(0x84d95594, 0x61e927a3), TOBN(0x013b9b26, 0xe2e0be7f), - TOBN(0x4feaec3b, 0x973497f1), TOBN(0x15c0f94e, 0x093ebc2d), - TOBN(0x6af5f227, 0x33af0583), TOBN(0x0c2af206, 0xc61f3340), - TOBN(0xd25dbdf1, 0x4457397c), TOBN(0x2e8ed017, 0xcabcbae0), - TOBN(0xe3010938, 0xc2815306), TOBN(0xbaa99337, 0xe8c6cd68), - TOBN(0x08513182, 0x3b0ec7de), TOBN(0x1e1b822b, 0x58df05df), - TOBN(0x5c14842f, 0xa5c3b683), TOBN(0x98fe977e, 0x3eba34ce), - TOBN(0xfd2316c2, 0x0d5e8873), TOBN(0xe48d839a, 0xbd0d427d), - TOBN(0x495b2218, 0x623fc961), TOBN(0x24ee56e7, 0xb46fba5e), - TOBN(0x9184a55b, 0x91e4de58), TOBN(0xa7488ca5, 0xdfdea288), - TOBN(0xa723862e, 0xa8dcc943), TOBN(0x92d762b2, 0x849dc0fc), - TOBN(0x3c444a12, 0x091ff4a9), TOBN(0x581113fa, 0x0cada274), - TOBN(0xb9de0a45, 0x30d8eae2), TOBN(0x5e0fcd85, 0xdf6b41ea), - TOBN(0x6233ea68, 0xc094dbb5), TOBN(0xb77d062e, 0xd968d410), - TOBN(0x3e719bbc, 0x58b3002d), TOBN(0x68e7dd3d, 0x3dc49d58), - TOBN(0x8d825740, 0x013a5e58), TOBN(0x21311747, 0x3c9e3c1b), - TOBN(0x0cb0a2a7, 0x7c99b6ab), TOBN(0x5c48a3b3, 0xc2f888f2)}, - {TOBN(0xc7913e91, 0x991724f3), TOBN(0x5eda799c, 0x39cbd686), - TOBN(0xddb595c7, 0x63d4fc1e), TOBN(0x6b63b80b, 0xac4fed54), - TOBN(0x6ea0fc69, 0x7e5fb516), TOBN(0x737708ba, 0xd0f1c964), - TOBN(0x9628745f, 0x11a92ca5), TOBN(0x61f37958, 0x9a86967a), - TOBN(0x9af39b2c, 0xaa665072), TOBN(0x78322fa4, 0xefd324ef), - TOBN(0x3d153394, 0xc327bd31), TOBN(0x81d5f271, 0x3129dab0), - TOBN(0xc72e0c42, 0xf48027f5), TOBN(0xaa40cdbc, 0x8536e717), - TOBN(0xf45a657a, 0x2d369d0f), TOBN(0xb03bbfc4, 0xea7f74e6), - TOBN(0x46a8c418, 0x0d738ded), TOBN(0x6f1a5bb0, 0xe0de5729), - TOBN(0xf10230b9, 0x8ba81675), TOBN(0x32c6f30c, 0x112b33d4), - TOBN(0x7559129d, 0xd8fffb62), TOBN(0x6a281b47, 0xb459bf05), - TOBN(0x77c1bd3a, 0xfa3b6776), TOBN(0x0709b380, 0x7829973a), - TOBN(0x8c26b232, 0xa3326505), TOBN(0x38d69272, 0xee1d41bf), - TOBN(0x0459453e, 0xffe32afa), TOBN(0xce8143ad, 0x7cb3ea87), - TOBN(0x932ec1fa, 0x7e6ab666), TOBN(0x6cd2d230, 0x22286264), - TOBN(0x459a46fe, 0x6736f8ed), TOBN(0x50bf0d00, 0x9eca85bb), - TOBN(0x0b825852, 0x877a21ec), TOBN(0x300414a7, 0x0f537a94), - TOBN(0x3f1cba40, 0x21a9a6a2), TOBN(0x50824eee, 0x76943c00), - TOBN(0xa0dbfcec, 0xf83cba5d), TOBN(0xf9538148, 0x93b4f3c0), - TOBN(0x61744162, 0x48f24dd7), TOBN(0x5322d64d, 0xe4fb09dd), - TOBN(0x57447384, 0x3d9325f3), TOBN(0xa9bef2d0, 0xf371cb84), - TOBN(0x77d2188b, 0xa61e36c5), TOBN(0xbbd6a7d7, 0xc602df72), - TOBN(0xba3aa902, 0x8f61bc0b), TOBN(0xf49085ed, 0x6ed0b6a1), - TOBN(0x8bc625d6, 0xae6e8298), TOBN(0x832b0b1d, 0xa2e9c01d), - TOBN(0xa337c447, 0xf1f0ced1), TOBN(0x800cc793, 0x9492dd2b), - TOBN(0x4b93151d, 0xbea08efa), TOBN(0x820cf3f8, 0xde0a741e), - TOBN(0xff1982dc, 0x1c0f7d13), TOBN(0xef921960, 0x84dde6ca), - TOBN(0x1ad7d972, 0x45f96ee3), TOBN(0x319c8dbe, 0x29dea0c7), - TOBN(0xd3ea3871, 0x7b82b99b), TOBN(0x75922d4d, 0x470eb624), - TOBN(0x8f66ec54, 0x3b95d466), TOBN(0x66e673cc, 0xbee1e346), - TOBN(0x6afe67c4, 0xb5f2b89a), TOBN(0x3de9c1e6, 0x290e5cd3), - TOBN(0x8c278bb6, 0x310a2ada), TOBN(0x420fa384, 0x0bdb323b), - TOBN(0x0ae1d63b, 0x0eb919b0), TOBN(0xd74ee51d, 0xa74b9620), - TOBN(0x395458d0, 0xa674290c), TOBN(0x324c930f, 0x4620a510), - TOBN(0x2d1f4d19, 0xfbac27d4), TOBN(0x4086e8ca, 0x9bedeeac), - TOBN(0x0cdd211b, 0x9b679ab8), TOBN(0x5970167d, 0x7090fec4), - TOBN(0x3420f2c9, 0xfaf1fc63), TOBN(0x616d333a, 0x328c8bb4), - TOBN(0x7d65364c, 0x57f1fe4a), TOBN(0x9343e877, 0x55e5c73a), - TOBN(0x5795176b, 0xe970e78c), TOBN(0xa36ccebf, 0x60533627), - TOBN(0xfc7c7380, 0x09cdfc1b), TOBN(0xb39a2afe, 0xb3fec326), - TOBN(0xb7ff1ba1, 0x6224408a), TOBN(0xcc856e92, 0x247cfc5e), - TOBN(0x01f102e7, 0xc18bc493), TOBN(0x4613ab74, 0x2091c727), - TOBN(0xaa25e89c, 0xc420bf2b), TOBN(0x00a53176, 0x90337ec2), - TOBN(0xd2be9f43, 0x7d025fc7), TOBN(0x3316fb85, 0x6e6fe3dc), - TOBN(0x27520af5, 0x9ac50814), TOBN(0xfdf95e78, 0x9a8e4223), - TOBN(0xb7e7df2a, 0x56bec5a0), TOBN(0xf7022f7d, 0xdf159e5d), - TOBN(0x93eeeab1, 0xcac1fe8f), TOBN(0x8040188c, 0x37451168), - TOBN(0x7ee8aa8a, 0xd967dce6), TOBN(0xfa0e79e7, 0x3abc9299), - TOBN(0x67332cfc, 0x2064cfd1), TOBN(0x339c31de, 0xb0651934), - TOBN(0x719b28d5, 0x2a3bcbea), TOBN(0xee74c82b, 0x9d6ae5c6), - TOBN(0x0927d05e, 0xbaf28ee6), TOBN(0x82cecf2c, 0x9d719028), - TOBN(0x0b0d353e, 0xddb30289), TOBN(0xfe4bb977, 0xfddb2e29), - TOBN(0xbb5bb990, 0x640bfd9e), TOBN(0xd226e277, 0x82f62108), - TOBN(0x4bf00985, 0x02ffdd56), TOBN(0x7756758a, 0x2ca1b1b5), - TOBN(0xc32b62a3, 0x5285fe91), TOBN(0xedbc546a, 0x8c9cd140), - TOBN(0x1e47a013, 0xaf5cb008), TOBN(0xbca7e720, 0x073ce8f2), - TOBN(0xe10b2ab8, 0x17a91cae), TOBN(0xb89aab65, 0x08e27f63), - TOBN(0x7b3074a7, 0xdba3ddf9), TOBN(0x1c20ce09, 0x330c2972), - TOBN(0x6b9917b4, 0x5fcf7e33), TOBN(0xe6793743, 0x945ceb42), - TOBN(0x18fc2215, 0x5c633d19), TOBN(0xad1adb3c, 0xc7485474), - TOBN(0x646f9679, 0x6424c49b), TOBN(0xf888dfe8, 0x67c241c9), - TOBN(0xe12d4b93, 0x24f68b49), TOBN(0x9a6b62d8, 0xa571df20), - TOBN(0x81b4b26d, 0x179483cb), TOBN(0x666f9632, 0x9511fae2), - TOBN(0xd281b3e4, 0xd53aa51f), TOBN(0x7f96a765, 0x7f3dbd16), - TOBN(0xa7f8b5bf, 0x074a30ce), TOBN(0xd7f52107, 0x005a32e6), - TOBN(0x6f9e0907, 0x50237ed4), TOBN(0x2f21da47, 0x8096fa2b), - TOBN(0xf3e19cb4, 0xeec863a0), TOBN(0xd18f77fd, 0x9527620a), - TOBN(0x9505c81c, 0x407c1cf8), TOBN(0x9998db4e, 0x1b6ec284), - TOBN(0x7e3389e5, 0xc247d44d), TOBN(0x12507141, 0x3f4f3d80), - TOBN(0xd4ba0110, 0x4a78a6c7), TOBN(0x312874a0, 0x767720be), - TOBN(0xded059a6, 0x75944370), TOBN(0xd6123d90, 0x3b2c0bdd), - TOBN(0xa56b717b, 0x51c108e3), TOBN(0x9bb7940e, 0x070623e9), - TOBN(0x794e2d59, 0x84ac066c), TOBN(0xf5954a92, 0xe68c69a0), - TOBN(0x28c52458, 0x4fd99dcc), TOBN(0x60e639fc, 0xb1012517), - TOBN(0xc2e60125, 0x7de79248), TOBN(0xe9ef6404, 0xf12fc6d7), - TOBN(0x4c4f2808, 0x2a3b5d32), TOBN(0x865ad32e, 0xc768eb8a), - TOBN(0xac02331b, 0x13fb70b6), TOBN(0x037b44c1, 0x95599b27), - TOBN(0x1a860fc4, 0x60bd082c), TOBN(0xa2e25745, 0xc980cd01), - TOBN(0xee3387a8, 0x1da0263e), TOBN(0x931bfb95, 0x2d10f3d6), - TOBN(0x5b687270, 0xa1f24a32), TOBN(0xf140e65d, 0xca494b86), - TOBN(0x4f4ddf91, 0xb2f1ac7a), TOBN(0xf99eaabb, 0x760fee27), - TOBN(0x57f4008a, 0x49c228e5), TOBN(0x090be440, 0x1cf713bb), - TOBN(0xac91fbe4, 0x5004f022), TOBN(0xd838c2c2, 0x569e1af6), - TOBN(0xd6c7d20b, 0x0f1daaa5), TOBN(0xaa063ac1, 0x1bbb02c0), - TOBN(0x0938a422, 0x59558a78), TOBN(0x5343c669, 0x8435da2f), - TOBN(0x96f67b18, 0x034410dc), TOBN(0x7cc1e424, 0x84510804), - TOBN(0x86a1543f, 0x16dfbb7d), TOBN(0x921fa942, 0x5b5bd592), - TOBN(0x9dcccb6e, 0xb33dd03c), TOBN(0x8581ddd9, 0xb843f51e), - TOBN(0x54935fcb, 0x81d73c9e), TOBN(0x6d07e979, 0x0a5e97ab), - TOBN(0x4dc7b30a, 0xcf3a6bab), TOBN(0x147ab1f3, 0x170bee11), - TOBN(0x0aaf8e3d, 0x9fafdee4), TOBN(0xfab3dbcb, 0x538a8b95), - TOBN(0x405df4b3, 0x6ef13871), TOBN(0xf1f4e9cb, 0x088d5a49), - TOBN(0x9bcd24d3, 0x66b33f1d), TOBN(0x3b97b820, 0x5ce445c0), - TOBN(0xe2926549, 0xba93ff61), TOBN(0xd9c341ce, 0x4dafe616), - TOBN(0xfb30a76e, 0x16efb6f3), TOBN(0xdf24b8ca, 0x605b953c), - TOBN(0x8bd52afe, 0xc2fffb9f), TOBN(0xbbac5ff7, 0xe19d0b96), - TOBN(0x43c01b87, 0x459afccd), TOBN(0x6bd45143, 0xb7432652), - TOBN(0x84734530, 0x55b5d78e), TOBN(0x81088fdb, 0x1554ba7d), - TOBN(0xada0a52c, 0x1e269375), TOBN(0xf9f037c4, 0x2dc5ec10), - TOBN(0xc0660607, 0x94bfbc11), TOBN(0xc0a630bb, 0xc9c40d2f), - TOBN(0x5efc797e, 0xab64c31e), TOBN(0xffdb1dab, 0x74507144), - TOBN(0xf6124287, 0x1ca6790c), TOBN(0xe9609d81, 0xe69bf1bf), - TOBN(0xdb898595, 0x00d24fc9), TOBN(0x9c750333, 0xe51fb417), - TOBN(0x51830a91, 0xfef7bbde), TOBN(0x0ce67dc8, 0x945f585c), - TOBN(0x9a730ed4, 0x4763eb50), TOBN(0x24a0e221, 0xc1ab0d66), - TOBN(0x643b6393, 0x648748f3), TOBN(0x1982daa1, 0x6d3c6291), - TOBN(0x6f00a9f7, 0x8bbc5549), TOBN(0x7a1783e1, 0x7f36384e), - TOBN(0xe8346323, 0xde977f50), TOBN(0x91ab688d, 0xb245502a), - TOBN(0x331ab6b5, 0x6d0bdd66), TOBN(0x0a6ef32e, 0x64b71229), - TOBN(0x1028150e, 0xfe7c352f), TOBN(0x27e04350, 0xce7b39d3), - TOBN(0x2a3c8acd, 0xc1070c82), TOBN(0xfb2034d3, 0x80c9feef), - TOBN(0x2d729621, 0x709f3729), TOBN(0x8df290bf, 0x62cb4549), - TOBN(0x02f99f33, 0xfc2e4326), TOBN(0x3b30076d, 0x5eddf032), - TOBN(0xbb21f8cf, 0x0c652fb5), TOBN(0x314fb49e, 0xed91cf7b), - TOBN(0xa013eca5, 0x2f700750), TOBN(0x2b9e3c23, 0x712a4575), - TOBN(0xe5355557, 0xaf30fbb0), TOBN(0x1ada3516, 0x7c77e771), - TOBN(0x45f6ecb2, 0x7b135670), TOBN(0xe85d19df, 0x7cfc202e), - TOBN(0x0f1b50c7, 0x58d1be9f), TOBN(0x5ebf2c0a, 0xead2e344), - TOBN(0x1531fe4e, 0xabc199c9), TOBN(0xc7032592, 0x56bab0ae), - TOBN(0x16ab2e48, 0x6c1fec54), TOBN(0x0f87fda8, 0x04280188), - TOBN(0xdc9f46fc, 0x609e4a74), TOBN(0x2a44a143, 0xba667f91), - TOBN(0xbc3d8b95, 0xb4d83436), TOBN(0xa01e4bd0, 0xc7bd2958), - TOBN(0x7b182932, 0x73483c90), TOBN(0xa79c6aa1, 0xa7c7b598), - TOBN(0xbf3983c6, 0xeaaac07e), TOBN(0x8f18181e, 0x96e0d4e6), - TOBN(0x8553d37c, 0x051af62b), TOBN(0xe9a998eb, 0x0bf94496), - TOBN(0xe0844f9f, 0xb0d59aa1), TOBN(0x983fd558, 0xe6afb813), - TOBN(0x9670c0ca, 0x65d69804), TOBN(0x732b22de, 0x6ea5ff2d), - TOBN(0xd7640ba9, 0x5fd8623b), TOBN(0x9f619163, 0xa6351782), - TOBN(0x0bfc27ee, 0xacee5043), TOBN(0xae419e73, 0x2eb10f02), - TOBN(0x19c028d1, 0x8943fb05), TOBN(0x71f01cf7, 0xff13aa2a), - TOBN(0x7790737e, 0x8887a132), TOBN(0x67513309, 0x66318410), - TOBN(0x9819e8a3, 0x7ddb795e), TOBN(0xfecb8ef5, 0xdad100b2), - TOBN(0x59f74a22, 0x3021926a), TOBN(0xb7c28a49, 0x6f9b4c1c), - TOBN(0xed1a733f, 0x912ad0ab), TOBN(0x42a910af, 0x01a5659c), - TOBN(0x3842c6e0, 0x7bd68cab), TOBN(0x2b57fa38, 0x76d70ac8), - TOBN(0x8a6707a8, 0x3c53aaeb), TOBN(0x62c1c510, 0x65b4db18), - TOBN(0x8de2c1fb, 0xb2d09dc7), TOBN(0xc3dfed12, 0x266bd23b), - TOBN(0x927d039b, 0xd5b27db6), TOBN(0x2fb2f0f1, 0x103243da), - TOBN(0xf855a07b, 0x80be7399), TOBN(0xed9327ce, 0x1f9f27a8), - TOBN(0xa0bd99c7, 0x729bdef7), TOBN(0x2b67125e, 0x28250d88), - TOBN(0x784b26e8, 0x8670ced7), TOBN(0xe3dfe41f, 0xc31bd3b4), - TOBN(0x9e353a06, 0xbcc85cbc), TOBN(0x302e2909, 0x60178a9d), - TOBN(0x860abf11, 0xa6eac16e), TOBN(0x76447000, 0xaa2b3aac), - TOBN(0x46ff9d19, 0x850afdab), TOBN(0x35bdd6a5, 0xfdb2d4c1), - TOBN(0xe82594b0, 0x7e5c9ce9), TOBN(0x0f379e53, 0x20af346e), - TOBN(0x608b31e3, 0xbc65ad4a), TOBN(0x710c6b12, 0x267c4826), - TOBN(0x51c966f9, 0x71954cf1), TOBN(0xb1cec793, 0x0d0aa215), - TOBN(0x1f155989, 0x86bd23a8), TOBN(0xae2ff99c, 0xf9452e86), - TOBN(0xd8dd953c, 0x340ceaa2), TOBN(0x26355275, 0x2e2e9333), - TOBN(0x15d4e5f9, 0x8586f06d), TOBN(0xd6bf94a8, 0xf7cab546), - TOBN(0x33c59a0a, 0xb76a9af0), TOBN(0x52740ab3, 0xba095af7), - TOBN(0xc444de8a, 0x24389ca0), TOBN(0xcc6f9863, 0x706da0cb), - TOBN(0xb5a741a7, 0x6b2515cf), TOBN(0x71c41601, 0x9585c749), - TOBN(0x78350d4f, 0xe683de97), TOBN(0x31d61524, 0x63d0b5f5), - TOBN(0x7a0cc5e1, 0xfbce090b), TOBN(0xaac927ed, 0xfbcb2a5b), - TOBN(0xe920de49, 0x20d84c35), TOBN(0x8c06a0b6, 0x22b4de26), - TOBN(0xd34dd58b, 0xafe7ddf3), TOBN(0x55851fed, 0xc1e6e55b), - TOBN(0xd1395616, 0x960696e7), TOBN(0x940304b2, 0x5f22705f), - TOBN(0x6f43f861, 0xb0a2a860), TOBN(0xcf121282, 0x0e7cc981), - TOBN(0x12186212, 0x0ab64a96), TOBN(0x09215b9a, 0xb789383c), - TOBN(0x311eb305, 0x37387c09), TOBN(0xc5832fce, 0xf03ee760), - TOBN(0x30358f58, 0x32f7ea19), TOBN(0xe01d3c34, 0x91d53551), - TOBN(0x1ca5ee41, 0xda48ea80), TOBN(0x34e71e8e, 0xcf4fa4c1), - TOBN(0x312abd25, 0x7af1e1c7), TOBN(0xe3afcdeb, 0x2153f4a5), - TOBN(0x9d5c84d7, 0x00235e9a), TOBN(0x0308d3f4, 0x8c4c836f), - TOBN(0xc0a66b04, 0x89332de5), TOBN(0x610dd399, 0x89e566ef), - TOBN(0xf8eea460, 0xd1ac1635), TOBN(0x84cbb3fb, 0x20a2c0df), - TOBN(0x40afb488, 0xe74a48c5), TOBN(0x29738198, 0xd326b150), - TOBN(0x2a17747f, 0xa6d74081), TOBN(0x60ea4c05, 0x55a26214), - TOBN(0x53514bb4, 0x1f88c5fe), TOBN(0xedd64567, 0x7e83426c), - TOBN(0xd5d6cbec, 0x96460b25), TOBN(0xa12fd0ce, 0x68dc115e), - TOBN(0xc5bc3ed2, 0x697840ea), TOBN(0x969876a8, 0xa6331e31), - TOBN(0x60c36217, 0x472ff580), TOBN(0xf4229705, 0x4ad41393), - TOBN(0x4bd99ef0, 0xa03b8b92), TOBN(0x501c7317, 0xc144f4f6), - TOBN(0x159009b3, 0x18464945), TOBN(0x6d5e594c, 0x74c5c6be), - TOBN(0x2d587011, 0x321a3660), TOBN(0xd1e184b1, 0x3898d022), - TOBN(0x5ba04752, 0x4c6a7e04), TOBN(0x47fa1e2b, 0x45550b65), - TOBN(0x9419daf0, 0x48c0a9a5), TOBN(0x66362953, 0x7c243236), - TOBN(0xcd0744b1, 0x5cb12a88), TOBN(0x561b6f9a, 0x2b646188), - TOBN(0x599415a5, 0x66c2c0c0), TOBN(0xbe3f0859, 0x0f83f09a), - TOBN(0x9141c5be, 0xb92041b8), TOBN(0x01ae38c7, 0x26477d0d), - TOBN(0xca8b71f3, 0xd12c7a94), TOBN(0xfab5b31f, 0x765c70db), - TOBN(0x76ae7492, 0x487443e9), TOBN(0x8595a310, 0x990d1349), - TOBN(0xf8dbeda8, 0x7d460a37), TOBN(0x7f7ad082, 0x1e45a38f), - TOBN(0xed1d4db6, 0x1059705a), TOBN(0xa3dd492a, 0xe6b9c697), - TOBN(0x4b92ee3a, 0x6eb38bd5), TOBN(0xbab2609d, 0x67cc0bb7), - TOBN(0x7fc4fe89, 0x6e70ee82), TOBN(0xeff2c56e, 0x13e6b7e3), - TOBN(0x9b18959e, 0x34d26fca), TOBN(0x2517ab66, 0x889d6b45), - TOBN(0xf167b4e0, 0xbdefdd4f), TOBN(0x69958465, 0xf366e401), - TOBN(0x5aa368ab, 0xa73bbec0), TOBN(0x12148709, 0x7b240c21), - TOBN(0x378c3233, 0x18969006), TOBN(0xcb4d73ce, 0xe1fe53d1), - TOBN(0x5f50a80e, 0x130c4361), TOBN(0xd67f5951, 0x7ef5212b), - TOBN(0xf145e21e, 0x9e70c72e), TOBN(0xb2e52e29, 0x5566d2fb), - TOBN(0x44eaba4a, 0x032397f5), TOBN(0x5e56937b, 0x7e31a7de), - TOBN(0x68dcf517, 0x456c61e1), TOBN(0xbc2e954a, 0xa8b0a388), - TOBN(0xe3552fa7, 0x60a8b755), TOBN(0x03442dae, 0x73ad0cde), - TOBN(0x37ffe747, 0xceb26210), TOBN(0x983545e8, 0x787baef9), - TOBN(0x8b8c8535, 0x86a3de31), TOBN(0xc621dbcb, 0xfacd46db), - TOBN(0x82e442e9, 0x59266fbb), TOBN(0xa3514c37, 0x339d471c), - TOBN(0x3a11b771, 0x62cdad96), TOBN(0xf0cb3b3c, 0xecf9bdf0), - TOBN(0x3fcbdbce, 0x478e2135), TOBN(0x7547b5cf, 0xbda35342), - TOBN(0xa97e81f1, 0x8a677af6), TOBN(0xc8c2bf83, 0x28817987), - TOBN(0xdf07eaaf, 0x45580985), TOBN(0xc68d1f05, 0xc93b45cb), - TOBN(0x106aa2fe, 0xc77b4cac), TOBN(0x4c1d8afc, 0x04a7ae86), - TOBN(0xdb41c3fd, 0x9eb45ab2), TOBN(0x5b234b5b, 0xd4b22e74), - TOBN(0xda253dec, 0xf215958a), TOBN(0x67e0606e, 0xa04edfa0), - TOBN(0xabbbf070, 0xef751b11), TOBN(0xf352f175, 0xf6f06dce), - TOBN(0xdfc4b6af, 0x6839f6b4), TOBN(0x53ddf9a8, 0x9959848e), - TOBN(0xda49c379, 0xc21520b0), TOBN(0x90864ff0, 0xdbd5d1b6), - TOBN(0x2f055d23, 0x5f49c7f7), TOBN(0xe51e4e6a, 0xa796b2d8), - TOBN(0xc361a67f, 0x5c9dc340), TOBN(0x5ad53c37, 0xbca7c620), - TOBN(0xda1d6588, 0x32c756d0), TOBN(0xad60d911, 0x8bb67e13), - TOBN(0xd6c47bdf, 0x0eeec8c6), TOBN(0x4a27fec1, 0x078a1821), - TOBN(0x081f7415, 0xc3099524), TOBN(0x8effdf0b, 0x82cd8060), - TOBN(0xdb70ec1c, 0x65842df8), TOBN(0x8821b358, 0xd319a901), - TOBN(0x72ee56ee, 0xde42b529), TOBN(0x5bb39592, 0x236e4286), - TOBN(0xd1183316, 0xfd6f7140), TOBN(0xf9fadb5b, 0xbd8e81f7), - TOBN(0x701d5e0c, 0x5a02d962), TOBN(0xfdee4dbf, 0x1b601324), - TOBN(0xbed17407, 0x35d7620e), TOBN(0x04e3c2c3, 0xf48c0012), - TOBN(0x9ee29da7, 0x3455449a), TOBN(0x562cdef4, 0x91a836c4), - TOBN(0x8f682a5f, 0x47701097), TOBN(0x617125d8, 0xff88d0c2), - TOBN(0x948fda24, 0x57bb86dd), TOBN(0x348abb8f, 0x289f7286), - TOBN(0xeb10eab5, 0x99d94bbd), TOBN(0xd51ba28e, 0x4684d160), - TOBN(0xabe0e51c, 0x30c8f41a), TOBN(0x66588b45, 0x13254f4a), - TOBN(0x147ebf01, 0xfad097a5), TOBN(0x49883ea8, 0x610e815d), - TOBN(0xe44d60ba, 0x8a11de56), TOBN(0xa970de6e, 0x827a7a6d), - TOBN(0x2be41424, 0x5e17fc19), TOBN(0xd833c657, 0x01214057), - TOBN(0x1375813b, 0x363e723f), TOBN(0x6820bb88, 0xe6a52e9b), - TOBN(0x7e7f6970, 0xd875d56a), TOBN(0xd6a0a9ac, 0x51fbf6bf), - TOBN(0x54ba8790, 0xa3083c12), TOBN(0xebaeb23d, 0x6ae7eb64), - TOBN(0xa8685c3a, 0xb99a907a), TOBN(0xf1e74550, 0x026bf40b), - TOBN(0x7b73a027, 0xc802cd9e), TOBN(0x9a8a927c, 0x4fef4635), - TOBN(0xe1b6f60c, 0x08191224), TOBN(0xc4126ebb, 0xde4ec091), - TOBN(0xe1dff4dc, 0x4ae38d84), TOBN(0xde3f57db, 0x4f2ef985), - TOBN(0x34964337, 0xd446a1dd), TOBN(0x7bf217a0, 0x859e77f6), - TOBN(0x8ff10527, 0x8e1d13f5), TOBN(0xa304ef03, 0x74eeae27), - TOBN(0xfc6f5e47, 0xd19dfa5a), TOBN(0xdb007de3, 0x7fad982b), - TOBN(0x28205ad1, 0x613715f5), TOBN(0x251e6729, 0x7889529e), - TOBN(0x72705184, 0x1ae98e78), TOBN(0xf818537d, 0x271cac32), - TOBN(0xc8a15b7e, 0xb7f410f5), TOBN(0xc474356f, 0x81f62393), - TOBN(0x92dbdc5a, 0xc242316b), TOBN(0xabe060ac, 0xdbf4aff5), - TOBN(0x6e8c38fe, 0x909a8ec6), TOBN(0x43e514e5, 0x6116cb94), - TOBN(0x2078fa38, 0x07d784f9), TOBN(0x1161a880, 0xf4b5b357), - TOBN(0x5283ce79, 0x13adea3d), TOBN(0x0756c3e6, 0xcc6a910b), - TOBN(0x60bcfe01, 0xaaa79697), TOBN(0x04a73b29, 0x56391db1), - TOBN(0xdd8dad47, 0x189b45a0), TOBN(0xbfac0dd0, 0x48d5b8d9), - TOBN(0x34ab3af5, 0x7d3d2ec2), TOBN(0x6fa2fc2d, 0x207bd3af), - TOBN(0x9ff40092, 0x66550ded), TOBN(0x719b3e87, 0x1fd5b913), - TOBN(0xa573a496, 0x6d17fbc7), TOBN(0x0cd1a70a, 0x73d2b24e), - TOBN(0x34e2c5ca, 0xb2676937), TOBN(0xe7050b06, 0xbf669f21), - TOBN(0xfbe948b6, 0x1ede9046), TOBN(0xa0530051, 0x97662659), - TOBN(0x58cbd4ed, 0xf10124c5), TOBN(0xde2646e4, 0xdd6c06c8), - TOBN(0x332f8108, 0x8cad38c0), TOBN(0x471b7e90, 0x6bd68ae2), - TOBN(0x56ac3fb2, 0x0d8e27a3), TOBN(0xb54660db, 0x136b4b0d), - TOBN(0x123a1e11, 0xa6fd8de4), TOBN(0x44dbffea, 0xa37799ef), - TOBN(0x4540b977, 0xce6ac17c), TOBN(0x495173a8, 0xaf60acef)}, - {TOBN(0x9ebb284d, 0x391c2a82), TOBN(0xbcdd4863, 0x158308e8), - TOBN(0x006f16ec, 0x83f1edca), TOBN(0xa13e2c37, 0x695dc6c8), - TOBN(0x2ab756f0, 0x4a057a87), TOBN(0xa8765500, 0xa6b48f98), - TOBN(0x4252face, 0x68651c44), TOBN(0xa52b540b, 0xe1765e02), - TOBN(0x4f922fc5, 0x16a0d2bb), TOBN(0x0d5cc16c, 0x1a623499), - TOBN(0x9241cf3a, 0x57c62c8b), TOBN(0x2f5e6961, 0xfd1b667f), - TOBN(0x5c15c70b, 0xf5a01797), TOBN(0x3d20b44d, 0x60956192), - TOBN(0x04911b37, 0x071fdb52), TOBN(0xf648f916, 0x8d6f0f7b), - TOBN(0x6dc1acaf, 0xe60b7cf7), TOBN(0x25860a50, 0x84a9d869), - TOBN(0x56fc6f09, 0xe7ba8ac4), TOBN(0x828c5bd0, 0x6148d29e), - TOBN(0xac6b435e, 0xdc55ae5f), TOBN(0xa527f56c, 0xc0117411), - TOBN(0x94d5045e, 0xfd24342c), TOBN(0x2c4c0a35, 0x70b67c0d), - TOBN(0x027cc8b8, 0xfac61d9a), TOBN(0x7d25e062, 0xe3c6fe8a), - TOBN(0xe08805bf, 0xe5bff503), TOBN(0x13271e6c, 0x6ff632f7), - TOBN(0x55dca6c0, 0x232f76a5), TOBN(0x8957c32d, 0x701ef426), - TOBN(0xee728bcb, 0xa10a5178), TOBN(0x5ea60411, 0xb62c5173), - TOBN(0xfc4e964e, 0xd0b8892b), TOBN(0x9ea17683, 0x9301bb74), - TOBN(0x6265c5ae, 0xfcc48626), TOBN(0xe60cf82e, 0xbb3e9102), - TOBN(0x57adf797, 0xd4df5531), TOBN(0x235b59a1, 0x8deeefe2), - TOBN(0x60adcf58, 0x3f306eb1), TOBN(0x105c2753, 0x3d09492d), - TOBN(0x4090914b, 0xb5def996), TOBN(0x1cb69c83, 0x233dd1e7), - TOBN(0xc1e9c1d3, 0x9b3d5e76), TOBN(0x1f3338ed, 0xfccf6012), - TOBN(0xb1e95d0d, 0x2f5378a8), TOBN(0xacf4c2c7, 0x2f00cd21), - TOBN(0x6e984240, 0xeb5fe290), TOBN(0xd66c038d, 0x248088ae), - TOBN(0x804d264a, 0xf94d70cf), TOBN(0xbdb802ef, 0x7314bf7e), - TOBN(0x8fb54de2, 0x4333ed02), TOBN(0x740461e0, 0x285635d9), - TOBN(0x4113b2c8, 0x365e9383), TOBN(0xea762c83, 0x3fdef652), - TOBN(0x4eec6e2e, 0x47b956c1), TOBN(0xa3d814be, 0x65620fa4), - TOBN(0x9ad5462b, 0xb4d8bc50), TOBN(0x181c0b16, 0xa9195770), - TOBN(0xebd4fe1c, 0x78412a68), TOBN(0xae0341bc, 0xc0dff48c), - TOBN(0xb6bc45cf, 0x7003e866), TOBN(0xf11a6dea, 0x8a24a41b), - TOBN(0x5407151a, 0xd04c24c2), TOBN(0x62c9d27d, 0xda5b7b68), - TOBN(0x2e964235, 0x88cceff6), TOBN(0x8594c54f, 0x8b07ed69), - TOBN(0x1578e73c, 0xc84d0d0d), TOBN(0x7b4e1055, 0xff532868), - TOBN(0xa348c0d5, 0xb5ec995a), TOBN(0xbf4b9d55, 0x14289a54), - TOBN(0x9ba155a6, 0x58fbd777), TOBN(0x186ed7a8, 0x1a84491d), - TOBN(0xd4992b30, 0x614c0900), TOBN(0xda98d121, 0xbd00c24b), - TOBN(0x7f534dc8, 0x7ec4bfa1), TOBN(0x4a5ff674, 0x37dc34bc), - TOBN(0x68c196b8, 0x1d7ea1d7), TOBN(0x38cf2893, 0x80a6d208), - TOBN(0xfd56cd09, 0xe3cbbd6e), TOBN(0xec72e27e, 0x4205a5b6), - TOBN(0x15ea68f5, 0xa44f77f7), TOBN(0x7aa5f9fd, 0xb43c52bc), - TOBN(0x86ff676f, 0x94f0e609), TOBN(0xa4cde963, 0x2e2d432b), - TOBN(0x8cafa0c0, 0xeee470af), TOBN(0x84137d0e, 0x8a3f5ec8), - TOBN(0xebb40411, 0xfaa31231), TOBN(0xa239c13f, 0x6f7f7ccf), - TOBN(0x32865719, 0xa8afd30b), TOBN(0x86798328, 0x8a826dce), - TOBN(0xdf04e891, 0xc4a8fbe0), TOBN(0xbb6b6e1b, 0xebf56ad3), - TOBN(0x0a695b11, 0x471f1ff0), TOBN(0xd76c3389, 0xbe15baf0), - TOBN(0x018edb95, 0xbe96c43e), TOBN(0xf2beaaf4, 0x90794158), - TOBN(0x152db09e, 0xc3076a27), TOBN(0x5e82908e, 0xe416545d), - TOBN(0xa2c41272, 0x356d6f2e), TOBN(0xdc9c9642, 0x31fd74e1), - TOBN(0x66ceb88d, 0x519bf615), TOBN(0xe29ecd76, 0x05a2274e), - TOBN(0x3a0473c4, 0xbf5e2fa0), TOBN(0x6b6eb671, 0x64284e67), - TOBN(0xe8b97932, 0xb88756dd), TOBN(0xed4e8652, 0xf17e3e61), - TOBN(0xc2dd1499, 0x3ee1c4a4), TOBN(0xc0aaee17, 0x597f8c0e), - TOBN(0x15c4edb9, 0x6c168af3), TOBN(0x6563c7bf, 0xb39ae875), - TOBN(0xadfadb6f, 0x20adb436), TOBN(0xad55e8c9, 0x9a042ac0), - TOBN(0x975a1ed8, 0xb76da1f5), TOBN(0x10dfa466, 0xa58acb94), - TOBN(0x8dd7f7e3, 0xac060282), TOBN(0x6813e66a, 0x572a051e), - TOBN(0xb4ccae1e, 0x350cb901), TOBN(0xb653d656, 0x50cb7822), - TOBN(0x42484710, 0xdfab3b87), TOBN(0xcd7ee537, 0x9b670fd0), - TOBN(0x0a50b12e, 0x523b8bf6), TOBN(0x8009eb5b, 0x8f910c1b), - TOBN(0xf535af82, 0x4a167588), TOBN(0x0f835f9c, 0xfb2a2abd), - TOBN(0xf59b2931, 0x2afceb62), TOBN(0xc797df2a, 0x169d383f), - TOBN(0xeb3f5fb0, 0x66ac02b0), TOBN(0x029d4c6f, 0xdaa2d0ca), - TOBN(0xd4059bc1, 0xafab4bc5), TOBN(0x833f5c6f, 0x56783247), - TOBN(0xb5346630, 0x8d2d3605), TOBN(0x83387891, 0xd34d8433), - TOBN(0xd973b30f, 0xadd9419a), TOBN(0xbcca1099, 0xafe3fce8), - TOBN(0x08178315, 0x0809aac6), TOBN(0x01b7f21a, 0x540f0f11), - TOBN(0x65c29219, 0x909523c8), TOBN(0xa62f648f, 0xa3a1c741), - TOBN(0x88598d4f, 0x60c9e55a), TOBN(0xbce9141b, 0x0e4f347a), - TOBN(0x9af97d84, 0x35f9b988), TOBN(0x0210da62, 0x320475b6), - TOBN(0x3c076e22, 0x9191476c), TOBN(0x7520dbd9, 0x44fc7834), - TOBN(0x6a6b2cfe, 0xc1ab1bbd), TOBN(0xef8a65be, 0xdc650938), - TOBN(0x72855540, 0x805d7bc4), TOBN(0xda389396, 0xed11fdfd), - TOBN(0xa9d5bd36, 0x74660876), TOBN(0x11d67c54, 0xb45dff35), - TOBN(0x6af7d148, 0xa4f5da94), TOBN(0xbb8d4c3f, 0xc0bbeb31), - TOBN(0x87a7ebd1, 0xe0a1b12a), TOBN(0x1e4ef88d, 0x770ba95f), - TOBN(0x8c33345c, 0xdc2ae9cb), TOBN(0xcecf1276, 0x01cc8403), - TOBN(0x687c012e, 0x1b39b80f), TOBN(0xfd90d0ad, 0x35c33ba4), - TOBN(0xa3ef5a67, 0x5c9661c2), TOBN(0x368fc88e, 0xe017429e), - TOBN(0xd30c6761, 0x196a2fa2), TOBN(0x931b9817, 0xbd5b312e), - TOBN(0xba01000c, 0x72f54a31), TOBN(0xa203d2c8, 0x66eaa541), - TOBN(0xf2abdee0, 0x98939db3), TOBN(0xe37d6c2c, 0x3e606c02), - TOBN(0xf2921574, 0x521ff643), TOBN(0x2781b3c4, 0xd7e2fca3), - TOBN(0x664300b0, 0x7850ec06), TOBN(0xac5a38b9, 0x7d3a10cf), - TOBN(0x9233188d, 0xe34ab39d), TOBN(0xe77057e4, 0x5072cbb9), - TOBN(0xbcf0c042, 0xb59e78df), TOBN(0x4cfc91e8, 0x1d97de52), - TOBN(0x4661a26c, 0x3ee0ca4a), TOBN(0x5620a4c1, 0xfb8507bc), - TOBN(0x4b44d4aa, 0x049f842c), TOBN(0xceabc5d5, 0x1540e82b), - TOBN(0x306710fd, 0x15c6f156), TOBN(0xbe5ae52b, 0x63db1d72), - TOBN(0x06f1e7e6, 0x334957f1), TOBN(0x57e388f0, 0x31144a70), - TOBN(0xfb69bb2f, 0xdf96447b), TOBN(0x0f78ebd3, 0x73e38a12), - TOBN(0xb8222605, 0x2b7ce542), TOBN(0xe6d4ce99, 0x7472bde1), - TOBN(0x53e16ebe, 0x09d2f4da), TOBN(0x180ff42e, 0x53b92b2e), - TOBN(0xc59bcc02, 0x2c34a1c6), TOBN(0x3803d6f9, 0x422c46c2), - TOBN(0x18aff74f, 0x5c14a8a2), TOBN(0x55aebf80, 0x10a08b28), - TOBN(0x66097d58, 0x7135593f), TOBN(0x32e6eff7, 0x2be570cd), - TOBN(0x584e6a10, 0x2a8c860d), TOBN(0xcd185890, 0xa2eb4163), - TOBN(0x7ceae99d, 0x6d97e134), TOBN(0xd42c6b70, 0xdd8447ce), - TOBN(0x59ddbb4a, 0xb8c50273), TOBN(0x03c612df, 0x3cf34e1e), - TOBN(0x84b9ca15, 0x04b6c5a0), TOBN(0x35216f39, 0x18f0e3a3), - TOBN(0x3ec2d2bc, 0xbd986c00), TOBN(0x8bf546d9, 0xd19228fe), - TOBN(0xd1c655a4, 0x4cd623c3), TOBN(0x366ce718, 0x502b8e5a), - TOBN(0x2cfc84b4, 0xeea0bfe7), TOBN(0xe01d5cee, 0xcf443e8e), - TOBN(0x8ec045d9, 0x036520f8), TOBN(0xdfb3c3d1, 0x92d40e98), - TOBN(0x0bac4cce, 0xcc559a04), TOBN(0x35eccae5, 0x240ea6b1), - TOBN(0x180b32db, 0xf8a5a0ac), TOBN(0x547972a5, 0xeb699700), - TOBN(0xa3765801, 0xca26bca0), TOBN(0x57e09d0e, 0xa647f25a), - TOBN(0xb956970e, 0x2fdd23cc), TOBN(0xb80288bc, 0x5682e971), - TOBN(0xe6e6d91e, 0x9ae86ebc), TOBN(0x0564c83f, 0x8c9f1939), - TOBN(0x551932a2, 0x39560368), TOBN(0xe893752b, 0x049c28e2), - TOBN(0x0b03cee5, 0xa6a158c3), TOBN(0xe12d656b, 0x04964263), - TOBN(0x4b47554e, 0x63e3bc1d), TOBN(0xc719b6a2, 0x45044ff7), - TOBN(0x4f24d30a, 0xe48daa07), TOBN(0xa3f37556, 0xc8c1edc3), - TOBN(0x9a47bf76, 0x0700d360), TOBN(0xbb1a1824, 0x822ae4e2), - TOBN(0x22e275a3, 0x89f1fb4c), TOBN(0x72b1aa23, 0x9968c5f5), - TOBN(0xa75feaca, 0xbe063f64), TOBN(0x9b392f43, 0xbce47a09), - TOBN(0xd4241509, 0x1ad07aca), TOBN(0x4b0c591b, 0x8d26cd0f), - TOBN(0x2d42ddfd, 0x92f1169a), TOBN(0x63aeb1ac, 0x4cbf2392), - TOBN(0x1de9e877, 0x0691a2af), TOBN(0xebe79af7, 0xd98021da), - TOBN(0xcfdf2a4e, 0x40e50acf), TOBN(0xf0a98ad7, 0xaf01d665), - TOBN(0xefb640bf, 0x1831be1f), TOBN(0x6fe8bd2f, 0x80e9ada0), - TOBN(0x94c103a1, 0x6cafbc91), TOBN(0x170f8759, 0x8308e08c), - TOBN(0x5de2d2ab, 0x9780ff4f), TOBN(0x666466bc, 0x45b201f2), - TOBN(0x58af2010, 0xf5b343bc), TOBN(0x0f2e400a, 0xf2f142fe), - TOBN(0x3483bfde, 0xa85f4bdf), TOBN(0xf0b1d093, 0x03bfeaa9), - TOBN(0x2ea01b95, 0xc7081603), TOBN(0xe943e4c9, 0x3dba1097), - TOBN(0x47be92ad, 0xb438f3a6), TOBN(0x00bb7742, 0xe5bf6636), - TOBN(0x136b7083, 0x824297b4), TOBN(0x9d0e5580, 0x5584455f), - TOBN(0xab48cedc, 0xf1c7d69e), TOBN(0x53a9e481, 0x2a256e76), - TOBN(0x0402b0e0, 0x65eb2413), TOBN(0xdadbbb84, 0x8fc407a7), - TOBN(0xa65cd5a4, 0x8d7f5492), TOBN(0x21d44293, 0x74bae294), - TOBN(0x66917ce6, 0x3b5f1cc4), TOBN(0x37ae52ea, 0xce872e62), - TOBN(0xbb087b72, 0x2905f244), TOBN(0x12077086, 0x1e6af74f), - TOBN(0x4b644e49, 0x1058edea), TOBN(0x827510e3, 0xb638ca1d), - TOBN(0x8cf2b704, 0x6038591c), TOBN(0xffc8b47a, 0xfe635063), - TOBN(0x3ae220e6, 0x1b4d5e63), TOBN(0xbd864742, 0x9d961b4b), - TOBN(0x610c107e, 0x9bd16bed), TOBN(0x4270352a, 0x1127147b), - TOBN(0x7d17ffe6, 0x64cfc50e), TOBN(0x50dee01a, 0x1e36cb42), - TOBN(0x068a7622, 0x35dc5f9a), TOBN(0x9a08d536, 0xdf53f62c), - TOBN(0x4ed71457, 0x6be5f7de), TOBN(0xd93006f8, 0xc2263c9e), - TOBN(0xe073694c, 0xcacacb36), TOBN(0x2ff7a5b4, 0x3ae118ab), - TOBN(0x3cce53f1, 0xcd871236), TOBN(0xf156a39d, 0xc2aa6d52), - TOBN(0x9cc5f271, 0xb198d76d), TOBN(0xbc615b6f, 0x81383d39), - TOBN(0xa54538e8, 0xde3eee6b), TOBN(0x58c77538, 0xab910d91), - TOBN(0x31e5bdbc, 0x58d278bd), TOBN(0x3cde4adf, 0xb963acae), - TOBN(0xb1881fd2, 0x5302169c), TOBN(0x8ca60fa0, 0xa989ed8b), - TOBN(0xa1999458, 0xff96a0ee), TOBN(0xc1141f03, 0xac6c283d), - TOBN(0x7677408d, 0x6dfafed3), TOBN(0x33a01653, 0x39661588), - TOBN(0x3c9c15ec, 0x0b726fa0), TOBN(0x090cfd93, 0x6c9b56da), - TOBN(0xe34f4bae, 0xa3c40af5), TOBN(0x3469eadb, 0xd21129f1), - TOBN(0xcc51674a, 0x1e207ce8), TOBN(0x1e293b24, 0xc83b1ef9), - TOBN(0x17173d13, 0x1e6c0bb4), TOBN(0x19004695, 0x90776d35), - TOBN(0xe7980e34, 0x6de6f922), TOBN(0x873554cb, 0xf4dd9a22), - TOBN(0x0316c627, 0xcbf18a51), TOBN(0x4d93651b, 0x3032c081), - TOBN(0x207f2771, 0x3946834d), TOBN(0x2c08d7b4, 0x30cdbf80), - TOBN(0x137a4fb4, 0x86df2a61), TOBN(0xa1ed9c07, 0xecf7b4a2), - TOBN(0xb2e460e2, 0x7bd042ff), TOBN(0xb7f5e2fa, 0x5f62f5ec), - TOBN(0x7aa6ec6b, 0xcc2423b7), TOBN(0x75ce0a7f, 0xba63eea7), - TOBN(0x67a45fb1, 0xf250a6e1), TOBN(0x93bc919c, 0xe53cdc9f), - TOBN(0x9271f56f, 0x871942df), TOBN(0x2372ff6f, 0x7859ad66), - TOBN(0x5f4c2b96, 0x33cb1a78), TOBN(0xe3e29101, 0x5838aa83), - TOBN(0xa7ed1611, 0xe4e8110c), TOBN(0x2a2d70d5, 0x330198ce), - TOBN(0xbdf132e8, 0x6720efe0), TOBN(0xe61a8962, 0x66a471bf), - TOBN(0x796d3a85, 0x825808bd), TOBN(0x51dc3cb7, 0x3fd6e902), - TOBN(0x643c768a, 0x916219d1), TOBN(0x36cd7685, 0xa2ad7d32), - TOBN(0xe3db9d05, 0xb22922a4), TOBN(0x6494c87e, 0xdba29660), - TOBN(0xf0ac91df, 0xbcd2ebc7), TOBN(0x4deb57a0, 0x45107f8d), - TOBN(0x42271f59, 0xc3d12a73), TOBN(0x5f71687c, 0xa5c2c51d), - TOBN(0xcb1f50c6, 0x05797bcb), TOBN(0x29ed0ed9, 0xd6d34eb0), - TOBN(0xe5fe5b47, 0x4683c2eb), TOBN(0x4956eeb5, 0x97447c46), - TOBN(0x5b163a43, 0x71207167), TOBN(0x93fa2fed, 0x0248c5ef), - TOBN(0x67930af2, 0x31f63950), TOBN(0xa77797c1, 0x14caa2c9), - TOBN(0x526e80ee, 0x27ac7e62), TOBN(0xe1e6e626, 0x58b28aec), - TOBN(0x636178b0, 0xb3c9fef0), TOBN(0xaf7752e0, 0x6d5f90be), - TOBN(0x94ecaf18, 0xeece51cf), TOBN(0x2864d0ed, 0xca806e1f), - TOBN(0x6de2e383, 0x97c69134), TOBN(0x5a42c316, 0xeb291293), - TOBN(0xc7779219, 0x6a60bae0), TOBN(0xa24de346, 0x6b7599d1), - TOBN(0x49d374aa, 0xb75d4941), TOBN(0x98900586, 0x2d501ff0), - TOBN(0x9f16d40e, 0xeb7974cf), TOBN(0x1033860b, 0xcdd8c115), - TOBN(0xb6c69ac8, 0x2094cec3), TOBN(0x9976fb88, 0x403b770c), - TOBN(0x1dea026c, 0x4859590d), TOBN(0xb6acbb46, 0x8562d1fd), - TOBN(0x7cd6c461, 0x44569d85), TOBN(0xc3190a36, 0x97f0891d), - TOBN(0xc6f53195, 0x48d5a17d), TOBN(0x7d919966, 0xd749abc8), - TOBN(0x65104837, 0xdd1c8a20), TOBN(0x7e5410c8, 0x2f683419), - TOBN(0x958c3ca8, 0xbe94022e), TOBN(0x605c3197, 0x6145dac2), - TOBN(0x3fc07501, 0x01683d54), TOBN(0x1d7127c5, 0x595b1234), - TOBN(0x10b8f87c, 0x9481277f), TOBN(0x677db2a8, 0xe65a1adb), - TOBN(0xec2fccaa, 0xddce3345), TOBN(0x2a6811b7, 0x012a4350), - TOBN(0x96760ff1, 0xac598bdc), TOBN(0x054d652a, 0xd1bf4128), - TOBN(0x0a1151d4, 0x92a21005), TOBN(0xad7f3971, 0x33110fdf), - TOBN(0x8c95928c, 0x1960100f), TOBN(0x6c91c825, 0x7bf03362), - TOBN(0xc8c8b2a2, 0xce309f06), TOBN(0xfdb27b59, 0xca27204b), - TOBN(0xd223eaa5, 0x0848e32e), TOBN(0xb93e4b2e, 0xe7bfaf1e), - TOBN(0xc5308ae6, 0x44aa3ded), TOBN(0x317a666a, 0xc015d573), - TOBN(0xc888ce23, 0x1a979707), TOBN(0xf141c1e6, 0x0d5c4958), - TOBN(0xb53b7de5, 0x61906373), TOBN(0x858dbade, 0xeb999595), - TOBN(0x8cbb47b2, 0xa59e5c36), TOBN(0x660318b3, 0xdcf4e842), - TOBN(0xbd161ccd, 0x12ba4b7a), TOBN(0xf399daab, 0xf8c8282a), - TOBN(0x1587633a, 0xeeb2130d), TOBN(0xa465311a, 0xda38dd7d), - TOBN(0x5f75eec8, 0x64d3779b), TOBN(0x3c5d0476, 0xad64c171), - TOBN(0x87410371, 0x2a914428), TOBN(0x8096a891, 0x90e2fc29), - TOBN(0xd3d2ae9d, 0x23b3ebc2), TOBN(0x90bdd6db, 0xa580cfd6), - TOBN(0x52dbb7f3, 0xc5b01f6c), TOBN(0xe68eded4, 0xe102a2dc), - TOBN(0x17785b77, 0x99eb6df0), TOBN(0x26c3cc51, 0x7386b779), - TOBN(0x345ed988, 0x6417a48e), TOBN(0xe990b4e4, 0x07d6ef31), - TOBN(0x0f456b7e, 0x2586abba), TOBN(0x239ca6a5, 0x59c96e9a), - TOBN(0xe327459c, 0xe2eb4206), TOBN(0x3a4c3313, 0xa002b90a), - TOBN(0x2a114806, 0xf6a3f6fb), TOBN(0xad5cad2f, 0x85c251dd), - TOBN(0x92c1f613, 0xf5a784d3), TOBN(0xec7bfacf, 0x349766d5), - TOBN(0x04b3cd33, 0x3e23cb3b), TOBN(0x3979fe84, 0xc5a64b2d), - TOBN(0x192e2720, 0x7e589106), TOBN(0xa60c43d1, 0xa15b527f), - TOBN(0x2dae9082, 0xbe7cf3a6), TOBN(0xcc86ba92, 0xbc967274), - TOBN(0xf28a2ce8, 0xaea0a8a9), TOBN(0x404ca6d9, 0x6ee988b3), - TOBN(0xfd7e9c5d, 0x005921b8), TOBN(0xf56297f1, 0x44e79bf9), - TOBN(0xa163b460, 0x0d75ddc2), TOBN(0x30b23616, 0xa1f2be87), - TOBN(0x4b070d21, 0xbfe50e2b), TOBN(0x7ef8cfd0, 0xe1bfede1), - TOBN(0xadba0011, 0x2aac4ae0), TOBN(0x2a3e7d01, 0xb9ebd033), - TOBN(0x995277ec, 0xe38d9d1c), TOBN(0xb500249e, 0x9c5d2de3), - TOBN(0x8912b820, 0xf13ca8c9), TOBN(0xc8798114, 0x877793af), - TOBN(0x19e6125d, 0xec3f1dec), TOBN(0x07b1f040, 0x911178da), - TOBN(0xd93ededa, 0x904a6738), TOBN(0x55187a5a, 0x0bebedcd), - TOBN(0xf7d04722, 0xeb329d41), TOBN(0xf449099e, 0xf170b391), - TOBN(0xfd317a69, 0xca99f828), TOBN(0x50c3db2b, 0x34a4976d), - TOBN(0xe9ba7784, 0x3757b392), TOBN(0x326caefd, 0xaa3ca05a), - TOBN(0x78e5293b, 0xf1e593d4), TOBN(0x7842a937, 0x0d98fd13), - TOBN(0xe694bf96, 0x5f96b10d), TOBN(0x373a9df6, 0x06a8cd05), - TOBN(0x997d1e51, 0xe8f0c7fc), TOBN(0x1d019790, 0x63fd972e), - TOBN(0x0064d858, 0x5499fb32), TOBN(0x7b67bad9, 0x77a8aeb7), - TOBN(0x1d3eb977, 0x2d08eec5), TOBN(0x5fc047a6, 0xcbabae1d), - TOBN(0x0577d159, 0xe54a64bb), TOBN(0x8862201b, 0xc43497e4), - TOBN(0xad6b4e28, 0x2ce0608d), TOBN(0x8b687b7d, 0x0b167aac), - TOBN(0x6ed4d367, 0x8b2ecfa9), TOBN(0x24dfe62d, 0xa90c3c38), - TOBN(0xa1862e10, 0x3fe5c42b), TOBN(0x1ca73dca, 0xd5732a9f), - TOBN(0x35f038b7, 0x76bb87ad), TOBN(0x674976ab, 0xf242b81f), - TOBN(0x4f2bde7e, 0xb0fd90cd), TOBN(0x6efc172e, 0xa7fdf092), - TOBN(0x3806b69b, 0x92222f1f), TOBN(0x5a2459ca, 0x6cf7ae70), - TOBN(0x6789f69c, 0xa85217ee), TOBN(0x5f232b5e, 0xe3dc85ac), - TOBN(0x660e3ec5, 0x48e9e516), TOBN(0x124b4e47, 0x3197eb31), - TOBN(0x10a0cb13, 0xaafcca23), TOBN(0x7bd63ba4, 0x8213224f), - TOBN(0xaffad7cc, 0x290a7f4f), TOBN(0x6b409c9e, 0x0286b461), - TOBN(0x58ab809f, 0xffa407af), TOBN(0xc3122eed, 0xc68ac073), - TOBN(0x17bf9e50, 0x4ef24d7e), TOBN(0x5d929794, 0x3e2a5811), - TOBN(0x519bc867, 0x02902e01), TOBN(0x76bba5da, 0x39c8a851), - TOBN(0xe9f9669c, 0xda94951e), TOBN(0x4b6af58d, 0x66b8d418), - TOBN(0xfa321074, 0x17d426a4), TOBN(0xc78e66a9, 0x9dde6027), - TOBN(0x0516c083, 0x4a53b964), TOBN(0xfc659d38, 0xff602330), - TOBN(0x0ab55e5c, 0x58c5c897), TOBN(0x985099b2, 0x838bc5df), - TOBN(0x061d9efc, 0xc52fc238), TOBN(0x712b2728, 0x6ac1da3f), - TOBN(0xfb658149, 0x9283fe08), TOBN(0x4954ac94, 0xb8aaa2f7), - TOBN(0x85c0ada4, 0x7fb2e74f), TOBN(0xee8ba98e, 0xb89926b0), - TOBN(0xe4f9d37d, 0x23d1af5b), TOBN(0x14ccdbf9, 0xba9b015e), - TOBN(0xb674481b, 0x7bfe7178), TOBN(0x4e1debae, 0x65405868), - TOBN(0x061b2821, 0xc48c867d), TOBN(0x69c15b35, 0x513b30ea), - TOBN(0x3b4a1666, 0x36871088), TOBN(0xe5e29f5d, 0x1220b1ff), - TOBN(0x4b82bb35, 0x233d9f4d), TOBN(0x4e076333, 0x18cdc675)}, - {TOBN(0x0d53f5c7, 0xa3e6fced), TOBN(0xe8cbbdd5, 0xf45fbdeb), - TOBN(0xf85c01df, 0x13339a70), TOBN(0x0ff71880, 0x142ceb81), - TOBN(0x4c4e8774, 0xbd70437a), TOBN(0x5fb32891, 0xba0bda6a), - TOBN(0x1cdbebd2, 0xf18bd26e), TOBN(0x2f9526f1, 0x03a9d522), - TOBN(0x40ce3051, 0x92c4d684), TOBN(0x8b04d725, 0x7612efcd), - TOBN(0xb9dcda36, 0x6f9cae20), TOBN(0x0edc4d24, 0xf058856c), - TOBN(0x64f2e6bf, 0x85427900), TOBN(0x3de81295, 0xdc09dfea), - TOBN(0xd41b4487, 0x379bf26c), TOBN(0x50b62c6d, 0x6df135a9), - TOBN(0xd4f8e3b4, 0xc72dfe67), TOBN(0xc416b0f6, 0x90e19fdf), - TOBN(0x18b9098d, 0x4c13bd35), TOBN(0xac11118a, 0x15b8cb9e), - TOBN(0xf598a318, 0xf0062841), TOBN(0xbfe0602f, 0x89f356f4), - TOBN(0x7ae3637e, 0x30177a0c), TOBN(0x34097747, 0x61136537), - TOBN(0x0db2fb5e, 0xd005832a), TOBN(0x5f5efd3b, 0x91042e4f), - TOBN(0x8c4ffdc6, 0xed70f8ca), TOBN(0xe4645d0b, 0xb52da9cc), - TOBN(0x9596f58b, 0xc9001d1f), TOBN(0x52c8f0bc, 0x4e117205), - TOBN(0xfd4aa0d2, 0xe398a084), TOBN(0x815bfe3a, 0x104f49de), - TOBN(0x97e5443f, 0x23885e5f), TOBN(0xf72f8f99, 0xe8433aab), - TOBN(0xbd00b154, 0xe4d4e604), TOBN(0xd0b35e6a, 0xe5e173ff), - TOBN(0x57b2a048, 0x9164722d), TOBN(0x3e3c665b, 0x88761ec8), - TOBN(0x6bdd1397, 0x3da83832), TOBN(0x3c8b1a1e, 0x73dafe3b), - TOBN(0x4497ace6, 0x54317cac), TOBN(0xbe600ab9, 0x521771b3), - TOBN(0xb42e409e, 0xb0dfe8b8), TOBN(0x386a67d7, 0x3942310f), - TOBN(0x25548d8d, 0x4431cc28), TOBN(0xa7cff142, 0x985dc524), - TOBN(0x4d60f5a1, 0x93c4be32), TOBN(0x83ebd5c8, 0xd071c6e1), - TOBN(0xba3a80a7, 0xb1fd2b0b), TOBN(0x9b3ad396, 0x5bec33e8), - TOBN(0xb3868d61, 0x79743fb3), TOBN(0xcfd169fc, 0xfdb462fa), - TOBN(0xd3b499d7, 0x9ce0a6af), TOBN(0x55dc1cf1, 0xe42d3ff8), - TOBN(0x04fb9e6c, 0xc6c3e1b2), TOBN(0x47e6961d, 0x6f69a474), - TOBN(0x54eb3acc, 0xe548b37b), TOBN(0xb38e7542, 0x84d40549), - TOBN(0x8c3daa51, 0x7b341b4f), TOBN(0x2f6928ec, 0x690bf7fa), - TOBN(0x0496b323, 0x86ce6c41), TOBN(0x01be1c55, 0x10adadcd), - TOBN(0xc04e67e7, 0x4bb5faf9), TOBN(0x3cbaf678, 0xe15c9985), - TOBN(0x8cd12145, 0x50ca4247), TOBN(0xba1aa47a, 0xe7dd30aa), - TOBN(0x2f81ddf1, 0xe58fee24), TOBN(0x03452936, 0xeec9b0e8), - TOBN(0x8bdc3b81, 0x243aea96), TOBN(0x9a2919af, 0x15c3d0e5), - TOBN(0x9ea640ec, 0x10948361), TOBN(0x5ac86d5b, 0x6e0bcccf), - TOBN(0xf892d918, 0xc36cf440), TOBN(0xaed3e837, 0xc939719c), - TOBN(0xb07b08d2, 0xc0218b64), TOBN(0x6f1bcbba, 0xce9790dd), - TOBN(0x4a84d6ed, 0x60919b8e), TOBN(0xd8900791, 0x8ac1f9eb), - TOBN(0xf84941aa, 0x0dd5daef), TOBN(0xb22fe40a, 0x67fd62c5), - TOBN(0x97e15ba2, 0x157f2db3), TOBN(0xbda2fc8f, 0x8e28ca9c), - TOBN(0x5d050da4, 0x37b9f454), TOBN(0x3d57eb57, 0x2379d72e), - TOBN(0xe9b5eba2, 0xfb5ee997), TOBN(0x01648ca2, 0xe11538ca), - TOBN(0x32bb76f6, 0xf6327974), TOBN(0x338f14b8, 0xff3f4bb7), - TOBN(0x524d226a, 0xd7ab9a2d), TOBN(0x9c00090d, 0x7dfae958), - TOBN(0x0ba5f539, 0x8751d8c2), TOBN(0x8afcbcdd, 0x3ab8262d), - TOBN(0x57392729, 0xe99d043b), TOBN(0xef51263b, 0xaebc943a), - TOBN(0x9feace93, 0x20862935), TOBN(0x639efc03, 0xb06c817b), - TOBN(0x1fe054b3, 0x66b4be7a), TOBN(0x3f25a9de, 0x84a37a1e), - TOBN(0xf39ef1ad, 0x78d75cd9), TOBN(0xd7b58f49, 0x5062c1b5), - TOBN(0x6f74f9a9, 0xff563436), TOBN(0xf718ff29, 0xe8af51e7), - TOBN(0x5234d313, 0x15e97fec), TOBN(0xb6a8e2b1, 0x292f1c0a), - TOBN(0xa7f53aa8, 0x327720c1), TOBN(0x956ca322, 0xba092cc8), - TOBN(0x8f03d64a, 0x28746c4d), TOBN(0x51fe1782, 0x66d0d392), - TOBN(0xd19b34db, 0x3c832c80), TOBN(0x60dccc5c, 0x6da2e3b4), - TOBN(0x245dd62e, 0x0a104ccc), TOBN(0xa7ab1de1, 0x620b21fd), - TOBN(0xb293ae0b, 0x3893d123), TOBN(0xf7b75783, 0xb15ee71c), - TOBN(0x5aa3c614, 0x42a9468b), TOBN(0xd686123c, 0xdb15d744), - TOBN(0x8c616891, 0xa7ab4116), TOBN(0x6fcd72c8, 0xa4e6a459), - TOBN(0xac219110, 0x77e5fad7), TOBN(0xfb6a20e7, 0x704fa46b), - TOBN(0xe839be7d, 0x341d81dc), TOBN(0xcddb6889, 0x32148379), - TOBN(0xda6211a1, 0xf7026ead), TOBN(0xf3b2575f, 0xf4d1cc5e), - TOBN(0x40cfc8f6, 0xa7a73ae6), TOBN(0x83879a5e, 0x61d5b483), - TOBN(0xc5acb1ed, 0x41a50ebc), TOBN(0x59a60cc8, 0x3c07d8fa), - TOBN(0x1b73bdce, 0xb1876262), TOBN(0x2b0d79f0, 0x12af4ee9), - TOBN(0x8bcf3b0b, 0xd46e1d07), TOBN(0x17d6af9d, 0xe45d152f), - TOBN(0x73520461, 0x6d736451), TOBN(0x43cbbd97, 0x56b0bf5a), - TOBN(0xb0833a5b, 0xd5999b9d), TOBN(0x702614f0, 0xeb72e398), - TOBN(0x0aadf01a, 0x59c3e9f8), TOBN(0x40200e77, 0xce6b3d16), - TOBN(0xda22bdd3, 0xdeddafad), TOBN(0x76dedaf4, 0x310d72e1), - TOBN(0x49ef807c, 0x4bc2e88f), TOBN(0x6ba81291, 0x146dd5a5), - TOBN(0xa1a4077a, 0x7d8d59e9), TOBN(0x87b6a2e7, 0x802db349), - TOBN(0xd5679997, 0x1b4e598e), TOBN(0xf499ef1f, 0x06fe4b1d), - TOBN(0x3978d3ae, 0xfcb267c5), TOBN(0xb582b557, 0x235786d0), - TOBN(0x32b3b2ca, 0x1715cb07), TOBN(0x4c3de6a2, 0x8480241d), - TOBN(0x63b5ffed, 0xcb571ecd), TOBN(0xeaf53900, 0xed2fe9a9), - TOBN(0xdec98d4a, 0xc3b81990), TOBN(0x1cb83722, 0x9e0cc8fe), - TOBN(0xfe0b0491, 0xd2b427b9), TOBN(0x0f2386ac, 0xe983a66c), - TOBN(0x930c4d1e, 0xb3291213), TOBN(0xa2f82b2e, 0x59a62ae4), - TOBN(0x77233853, 0xf93e89e3), TOBN(0x7f8063ac, 0x11777c7f), - TOBN(0xff0eb567, 0x59ad2877), TOBN(0x6f454642, 0x9865c754), - TOBN(0xe6fe701a, 0x236e9a84), TOBN(0xc586ef16, 0x06e40fc3), - TOBN(0x3f62b6e0, 0x24bafad9), TOBN(0xc8b42bd2, 0x64da906a), - TOBN(0xc98e1eb4, 0xda3276a0), TOBN(0x30d0e5fc, 0x06cbf852), - TOBN(0x1b6b2ae1, 0xe8b4dfd4), TOBN(0xd754d5c7, 0x8301cbac), - TOBN(0x66097629, 0x112a39ac), TOBN(0xf86b5999, 0x93ba4ab9), - TOBN(0x26c9dea7, 0x99f9d581), TOBN(0x0473b1a8, 0xc2fafeaa), - TOBN(0x1469af55, 0x3b2505a5), TOBN(0x227d16d7, 0xd6a43323), - TOBN(0x3316f73c, 0xad3d97f9), TOBN(0x52bf3bb5, 0x1f137455), - TOBN(0x953eafeb, 0x09954e7c), TOBN(0xa721dfed, 0xdd732411), - TOBN(0xb4929821, 0x141d4579), TOBN(0x3411321c, 0xaa3bd435), - TOBN(0xafb355aa, 0x17fa6015), TOBN(0xb4e7ef4a, 0x18e42f0e), - TOBN(0x604ac97c, 0x59371000), TOBN(0xe1c48c70, 0x7f759c18), - TOBN(0x3f62ecc5, 0xa5db6b65), TOBN(0x0a78b173, 0x38a21495), - TOBN(0x6be1819d, 0xbcc8ad94), TOBN(0x70dc04f6, 0xd89c3400), - TOBN(0x462557b4, 0xa6b4840a), TOBN(0x544c6ade, 0x60bd21c0), - TOBN(0x6a00f24e, 0x907a544b), TOBN(0xa7520dcb, 0x313da210), - TOBN(0xfe939b75, 0x11e4994b), TOBN(0x918b6ba6, 0xbc275d70), - TOBN(0xd3e5e0fc, 0x644be892), TOBN(0x707a9816, 0xfdaf6c42), - TOBN(0x60145567, 0xf15c13fe), TOBN(0x4818ebaa, 0xe130a54a), - TOBN(0x28aad3ad, 0x58d2f767), TOBN(0xdc5267fd, 0xd7e7c773), - TOBN(0x4919cc88, 0xc3afcc98), TOBN(0xaa2e6ab0, 0x2db8cd4b), - TOBN(0xd46fec04, 0xd0c63eaa), TOBN(0xa1cb92c5, 0x19ffa832), - TOBN(0x678dd178, 0xe43a631f), TOBN(0xfb5ae1cd, 0x3dc788b3), - TOBN(0x68b4fb90, 0x6e77de04), TOBN(0x7992bcf0, 0xf06dbb97), - TOBN(0x896e6a13, 0xc417c01d), TOBN(0x8d96332c, 0xb956be01), - TOBN(0x902fc93a, 0x413aa2b9), TOBN(0x99a4d915, 0xfc98c8a5), - TOBN(0x52c29407, 0x565f1137), TOBN(0x4072690f, 0x21e4f281), - TOBN(0x36e607cf, 0x02ff6072), TOBN(0xa47d2ca9, 0x8ad98cdc), - TOBN(0xbf471d1e, 0xf5f56609), TOBN(0xbcf86623, 0xf264ada0), - TOBN(0xb70c0687, 0xaa9e5cb6), TOBN(0xc98124f2, 0x17401c6c), - TOBN(0x8189635f, 0xd4a61435), TOBN(0xd28fb8af, 0xa9d98ea6), - TOBN(0xb9a67c2a, 0x40c251f8), TOBN(0x88cd5d87, 0xa2da44be), - TOBN(0x437deb96, 0xe09b5423), TOBN(0x150467db, 0x64287dc1), - TOBN(0xe161debb, 0xcdabb839), TOBN(0xa79e9742, 0xf1839a3e), - TOBN(0xbb8dd3c2, 0x652d202b), TOBN(0x7b3e67f7, 0xe9f97d96), - TOBN(0x5aa5d78f, 0xb1cb6ac9), TOBN(0xffa13e8e, 0xca1d0d45), - TOBN(0x369295dd, 0x2ba5bf95), TOBN(0xd68bd1f8, 0x39aff05e), - TOBN(0xaf0d86f9, 0x26d783f2), TOBN(0x543a59b3, 0xfc3aafc1), - TOBN(0x3fcf81d2, 0x7b7da97c), TOBN(0xc990a056, 0xd25dee46), - TOBN(0x3e6775b8, 0x519cce2c), TOBN(0xfc9af71f, 0xae13d863), - TOBN(0x774a4a6f, 0x47c1605c), TOBN(0x46ba4245, 0x2fd205e8), - TOBN(0xa06feea4, 0xd3fd524d), TOBN(0x1e724641, 0x6de1acc2), - TOBN(0xf53816f1, 0x334e2b42), TOBN(0x49e5918e, 0x922f0024), - TOBN(0x439530b6, 0x65c7322d), TOBN(0xcf12cc01, 0xb3c1b3fb), - TOBN(0xc70b0186, 0x0172f685), TOBN(0xb915ee22, 0x1b58391d), - TOBN(0x9afdf03b, 0xa317db24), TOBN(0x87dec659, 0x17b8ffc4), - TOBN(0x7f46597b, 0xe4d3d050), TOBN(0x80a1c1ed, 0x006500e7), - TOBN(0x84902a96, 0x78bf030e), TOBN(0xfb5e9c9a, 0x50560148), - TOBN(0x6dae0a92, 0x63362426), TOBN(0xdcaeecf4, 0xa9e30c40), - TOBN(0xc0d887bb, 0x518d0c6b), TOBN(0x99181152, 0xcb985b9d), - TOBN(0xad186898, 0xef7bc381), TOBN(0x18168ffb, 0x9ee46201), - TOBN(0x9a04cdaa, 0x2502753c), TOBN(0xbb279e26, 0x51407c41), - TOBN(0xeacb03aa, 0xf23564e5), TOBN(0x18336582, 0x71e61016), - TOBN(0x8684b8c4, 0xeb809877), TOBN(0xb336e18d, 0xea0e672e), - TOBN(0xefb601f0, 0x34ee5867), TOBN(0x2733edbe, 0x1341cfd1), - TOBN(0xb15e809a, 0x26025c3c), TOBN(0xe6e981a6, 0x9350df88), - TOBN(0x92376237, 0x8502fd8e), TOBN(0x4791f216, 0x0c12be9b), - TOBN(0xb7256789, 0x25f02425), TOBN(0xec863194, 0x7a974443), - TOBN(0x7c0ce882, 0xfb41cc52), TOBN(0xc266ff7e, 0xf25c07f2), - TOBN(0x3d4da8c3, 0x017025f3), TOBN(0xefcf628c, 0xfb9579b4), - TOBN(0x5c4d0016, 0x1f3716ec), TOBN(0x9c27ebc4, 0x6801116e), - TOBN(0x5eba0ea1, 0x1da1767e), TOBN(0xfe151452, 0x47004c57), - TOBN(0x3ace6df6, 0x8c2373b7), TOBN(0x75c3dffe, 0x5dbc37ac), - TOBN(0x3dc32a73, 0xddc925fc), TOBN(0xb679c841, 0x2f65ee0b), - TOBN(0x715a3295, 0x451cbfeb), TOBN(0xd9889768, 0xf76e9a29), - TOBN(0xec20ce7f, 0xb28ad247), TOBN(0xe99146c4, 0x00894d79), - TOBN(0x71457d7c, 0x9f5e3ea7), TOBN(0x097b2662, 0x38030031), - TOBN(0xdb7f6ae6, 0xcf9f82a8), TOBN(0x319decb9, 0x438f473a), - TOBN(0xa63ab386, 0x283856c3), TOBN(0x13e3172f, 0xb06a361b), - TOBN(0x2959f8dc, 0x7d5a006c), TOBN(0x2dbc27c6, 0x75fba752), - TOBN(0xc1227ab2, 0x87c22c9e), TOBN(0x06f61f75, 0x71a268b2), - TOBN(0x1b6bb971, 0x04779ce2), TOBN(0xaca83812, 0x0aadcb1d), - TOBN(0x297ae0bc, 0xaeaab2d5), TOBN(0xa5c14ee7, 0x5bfb9f13), - TOBN(0xaa00c583, 0xf17a62c7), TOBN(0x39eb962c, 0x173759f6), - TOBN(0x1eeba1d4, 0x86c9a88f), TOBN(0x0ab6c37a, 0xdf016c5e), - TOBN(0xa2a147db, 0xa28a0749), TOBN(0x246c20d6, 0xee519165), - TOBN(0x5068d1b1, 0xd3810715), TOBN(0xb1e7018c, 0x748160b9), - TOBN(0x03f5b1fa, 0xf380ff62), TOBN(0xef7fb1dd, 0xf3cb2c1e), - TOBN(0xeab539a8, 0xfc91a7da), TOBN(0x83ddb707, 0xf3f9b561), - TOBN(0xc550e211, 0xfe7df7a4), TOBN(0xa7cd07f2, 0x063f6f40), - TOBN(0xb0de3635, 0x2976879c), TOBN(0xb5f83f85, 0xe55741da), - TOBN(0x4ea9d25e, 0xf3d8ac3d), TOBN(0x6fe2066f, 0x62819f02), - TOBN(0x4ab2b9c2, 0xcef4a564), TOBN(0x1e155d96, 0x5ffa2de3), - TOBN(0x0eb0a19b, 0xc3a72d00), TOBN(0x4037665b, 0x8513c31b), - TOBN(0x2fb2b6bf, 0x04c64637), TOBN(0x45c34d6e, 0x08cdc639), - TOBN(0x56f1e10f, 0xf01fd796), TOBN(0x4dfb8101, 0xfe3667b8), - TOBN(0xe0eda253, 0x9021d0c0), TOBN(0x7a94e9ff, 0x8a06c6ab), - TOBN(0x2d3bb0d9, 0xbb9aa882), TOBN(0xea20e4e5, 0xec05fd10), - TOBN(0xed7eeb5f, 0x1a1ca64e), TOBN(0x2fa6b43c, 0xc6327cbd), - TOBN(0xb577e3cf, 0x3aa91121), TOBN(0x8c6bd5ea, 0x3a34079b), - TOBN(0xd7e5ba39, 0x60e02fc0), TOBN(0xf16dd2c3, 0x90141bf8), - TOBN(0xb57276d9, 0x80101b98), TOBN(0x760883fd, 0xb82f0f66), - TOBN(0x89d7de75, 0x4bc3eff3), TOBN(0x03b60643, 0x5dc2ab40), - TOBN(0xcd6e53df, 0xe05beeac), TOBN(0xf2f1e862, 0xbc3325cd), - TOBN(0xdd0f7921, 0x774f03c3), TOBN(0x97ca7221, 0x4552cc1b), - TOBN(0x5a0d6afe, 0x1cd19f72), TOBN(0xa20915dc, 0xf183fbeb), - TOBN(0x9fda4b40, 0x832c403c), TOBN(0x32738edd, 0xbe425442), - TOBN(0x469a1df6, 0xb5eccf1a), TOBN(0x4b5aff42, 0x28bbe1f0), - TOBN(0x31359d7f, 0x570dfc93), TOBN(0xa18be235, 0xf0088628), - TOBN(0xa5b30fba, 0xb00ed3a9), TOBN(0x34c61374, 0x73cdf8be), - TOBN(0x2c5c5f46, 0xabc56797), TOBN(0x5cecf93d, 0xb82a8ae2), - TOBN(0x7d3dbe41, 0xa968fbf0), TOBN(0xd23d4583, 0x1a5c7f3d), - TOBN(0xf28f69a0, 0xc087a9c7), TOBN(0xc2d75471, 0x474471ca), - TOBN(0x36ec9f4a, 0x4eb732ec), TOBN(0x6c943bbd, 0xb1ca6bed), - TOBN(0xd64535e1, 0xf2457892), TOBN(0x8b84a8ea, 0xf7e2ac06), - TOBN(0xe0936cd3, 0x2499dd5f), TOBN(0x12053d7e, 0x0ed04e57), - TOBN(0x4bdd0076, 0xe4305d9d), TOBN(0x34a527b9, 0x1f67f0a2), - TOBN(0xe79a4af0, 0x9cec46ea), TOBN(0xb15347a1, 0x658b9bc7), - TOBN(0x6bd2796f, 0x35af2f75), TOBN(0xac957990, 0x4051c435), - TOBN(0x2669dda3, 0xc33a655d), TOBN(0x5d503c2e, 0x88514aa3), - TOBN(0xdfa11337, 0x3753dd41), TOBN(0x3f054673, 0x0b754f78), - TOBN(0xbf185677, 0x496125bd), TOBN(0xfb0023c8, 0x3775006c), - TOBN(0xfa0f072f, 0x3a037899), TOBN(0x4222b6eb, 0x0e4aea57), - TOBN(0x3dde5e76, 0x7866d25a), TOBN(0xb6eb04f8, 0x4837aa6f), - TOBN(0x5315591a, 0x2cf1cdb8), TOBN(0x6dfb4f41, 0x2d4e683c), - TOBN(0x7e923ea4, 0x48ee1f3a), TOBN(0x9604d9f7, 0x05a2afd5), - TOBN(0xbe1d4a33, 0x40ea4948), TOBN(0x5b45f1f4, 0xb44cbd2f), - TOBN(0x5faf8376, 0x4acc757e), TOBN(0xa7cf9ab8, 0x63d68ff7), - TOBN(0x8ad62f69, 0xdf0e404b), TOBN(0xd65f33c2, 0x12bdafdf), - TOBN(0xc365de15, 0xa377b14e), TOBN(0x6bf5463b, 0x8e39f60c), - TOBN(0x62030d2d, 0x2ce68148), TOBN(0xd95867ef, 0xe6f843a8), - TOBN(0xd39a0244, 0xef5ab017), TOBN(0x0bd2d8c1, 0x4ab55d12), - TOBN(0xc9503db3, 0x41639169), TOBN(0x2d4e25b0, 0xf7660c8a), - TOBN(0x760cb3b5, 0xe224c5d7), TOBN(0xfa3baf8c, 0x68616919), - TOBN(0x9fbca113, 0x8d142552), TOBN(0x1ab18bf1, 0x7669ebf5), - TOBN(0x55e6f53e, 0x9bdf25dd), TOBN(0x04cc0bf3, 0xcb6cd154), - TOBN(0x595bef49, 0x95e89080), TOBN(0xfe9459a8, 0x104a9ac1), - TOBN(0xad2d89ca, 0xcce9bb32), TOBN(0xddea65e1, 0xf7de8285), - TOBN(0x62ed8c35, 0xb351bd4b), TOBN(0x4150ff36, 0x0c0e19a7), - TOBN(0x86e3c801, 0x345f4e47), TOBN(0x3bf21f71, 0x203a266c), - TOBN(0x7ae110d4, 0x855b1f13), TOBN(0x5d6aaf6a, 0x07262517), - TOBN(0x1e0f12e1, 0x813d28f1), TOBN(0x6000e11d, 0x7ad7a523), - TOBN(0xc7d8deef, 0xc744a17b), TOBN(0x1e990b48, 0x14c05a00), - TOBN(0x68fddaee, 0x93e976d5), TOBN(0x696241d1, 0x46610d63), - TOBN(0xb204e7c3, 0x893dda88), TOBN(0x8bccfa65, 0x6a3a6946), - TOBN(0xb59425b4, 0xc5cd1411), TOBN(0x701b4042, 0xff3658b1), - TOBN(0xe3e56bca, 0x4784cf93), TOBN(0x27de5f15, 0x8fe68d60), - TOBN(0x4ab9cfce, 0xf8d53f19), TOBN(0xddb10311, 0xa40a730d), - TOBN(0x6fa73cd1, 0x4eee0a8a), TOBN(0xfd548748, 0x5249719d), - TOBN(0x49d66316, 0xa8123ef0), TOBN(0x73c32db4, 0xe7f95438), - TOBN(0x2e2ed209, 0x0d9e7854), TOBN(0xf98a9329, 0x9d9f0507), - TOBN(0xc5d33cf6, 0x0c6aa20a), TOBN(0x9a32ba14, 0x75279bb2), - TOBN(0x7e3202cb, 0x774a7307), TOBN(0x64ed4bc4, 0xe8c42dbd), - TOBN(0xc20f1a06, 0xd4caed0d), TOBN(0xb8021407, 0x171d22b3), - TOBN(0xd426ca04, 0xd13268d7), TOBN(0x92377007, 0x25f4d126), - TOBN(0x4204cbc3, 0x71f21a85), TOBN(0x18461b7a, 0xf82369ba), - TOBN(0xc0c07d31, 0x3fc858f9), TOBN(0x5deb5a50, 0xe2bab569), - TOBN(0xd5959d46, 0xd5eea89e), TOBN(0xfdff8424, 0x08437f4b), - TOBN(0xf21071e4, 0x3cfe254f), TOBN(0x72417696, 0x95468321), - TOBN(0x5d8288b9, 0x102cae3e), TOBN(0x2d143e3d, 0xf1965dff), - TOBN(0x00c9a376, 0xa078d847), TOBN(0x6fc0da31, 0x26028731), - TOBN(0xa2baeadf, 0xe45083a2), TOBN(0x66bc7218, 0x5e5b4bcd), - TOBN(0x2c826442, 0xd04b8e7f), TOBN(0xc19f5451, 0x6c4b586b), - TOBN(0x60182c49, 0x5b7eeed5), TOBN(0xd9954ecd, 0x7aa9dfa1), - TOBN(0xa403a8ec, 0xc73884ad), TOBN(0x7fb17de2, 0x9bb39041), - TOBN(0x694b64c5, 0xabb020e8), TOBN(0x3d18c184, 0x19c4eec7), - TOBN(0x9c4673ef, 0x1c4793e5), TOBN(0xc7b8aeb5, 0x056092e6), - TOBN(0x3aa1ca43, 0xf0f8c16b), TOBN(0x224ed5ec, 0xd679b2f6), - TOBN(0x0d56eeaf, 0x55a205c9), TOBN(0xbfe115ba, 0x4b8e028b), - TOBN(0x97e60849, 0x3927f4fe), TOBN(0xf91fbf94, 0x759aa7c5), - TOBN(0x985af769, 0x6be90a51), TOBN(0xc1277b78, 0x78ccb823), - TOBN(0x395b656e, 0xe7a75952), TOBN(0x00df7de0, 0x928da5f5), - TOBN(0x09c23175, 0x4ca4454f), TOBN(0x4ec971f4, 0x7aa2d3c1), - TOBN(0x45c3c507, 0xe75d9ccc), TOBN(0x63b7be8a, 0x3dc90306), - TOBN(0x37e09c66, 0x5db44bdc), TOBN(0x50d60da1, 0x6841c6a2), - TOBN(0x6f9b65ee, 0x08df1b12), TOBN(0x38734879, 0x7ff089df), - TOBN(0x9c331a66, 0x3fe8013d), TOBN(0x017f5de9, 0x5f42fcc8), - TOBN(0x43077866, 0xe8e57567), TOBN(0xc9f781ce, 0xf9fcdb18), - TOBN(0x38131dda, 0x9b12e174), TOBN(0x25d84aa3, 0x8a03752a), - TOBN(0x45e09e09, 0x4d0c0ce2), TOBN(0x1564008b, 0x92bebba5), - TOBN(0xf7e8ad31, 0xa87284c7), TOBN(0xb7c4b46c, 0x97e7bbaa), - TOBN(0x3e22a7b3, 0x97acf4ec), TOBN(0x0426c400, 0x5ea8b640), - TOBN(0x5e3295a6, 0x4e969285), TOBN(0x22aabc59, 0xa6a45670), - TOBN(0xb929714c, 0x5f5942bc), TOBN(0x9a6168bd, 0xfa3182ed), - TOBN(0x2216a665, 0x104152ba), TOBN(0x46908d03, 0xb6926368)}, - {TOBN(0xa9f5d874, 0x5a1251fb), TOBN(0x967747a8, 0xc72725c7), - TOBN(0x195c33e5, 0x31ffe89e), TOBN(0x609d210f, 0xe964935e), - TOBN(0xcafd6ca8, 0x2fe12227), TOBN(0xaf9b5b96, 0x0426469d), - TOBN(0x2e9ee04c, 0x5693183c), TOBN(0x1084a333, 0xc8146fef), - TOBN(0x96649933, 0xaed1d1f7), TOBN(0x566eaff3, 0x50563090), - TOBN(0x345057f0, 0xad2e39cf), TOBN(0x148ff65b, 0x1f832124), - TOBN(0x042e89d4, 0xcf94cf0d), TOBN(0x319bec84, 0x520c58b3), - TOBN(0x2a267626, 0x5361aa0d), TOBN(0xc86fa302, 0x8fbc87ad), - TOBN(0xfc83d2ab, 0x5c8b06d5), TOBN(0xb1a785a2, 0xfe4eac46), - TOBN(0xb99315bc, 0x846f7779), TOBN(0xcf31d816, 0xef9ea505), - TOBN(0x2391fe6a, 0x15d7dc85), TOBN(0x2f132b04, 0xb4016b33), - TOBN(0x29547fe3, 0x181cb4c7), TOBN(0xdb66d8a6, 0x650155a1), - TOBN(0x6b66d7e1, 0xadc1696f), TOBN(0x98ebe593, 0x0acd72d0), - TOBN(0x65f24550, 0xcc1b7435), TOBN(0xce231393, 0xb4b9a5ec), - TOBN(0x234a22d4, 0xdb067df9), TOBN(0x98dda095, 0xcaff9b00), - TOBN(0x1bbc75a0, 0x6100c9c1), TOBN(0x1560a9c8, 0x939cf695), - TOBN(0xcf006d3e, 0x99e0925f), TOBN(0x2dd74a96, 0x6322375a), - TOBN(0xc58b446a, 0xb56af5ba), TOBN(0x50292683, 0xe0b9b4f1), - TOBN(0xe2c34cb4, 0x1aeaffa3), TOBN(0x8b17203f, 0x9b9587c1), - TOBN(0x6d559207, 0xead1350c), TOBN(0x2b66a215, 0xfb7f9604), - TOBN(0x0850325e, 0xfe51bf74), TOBN(0x9c4f579e, 0x5e460094), - TOBN(0x5c87b92a, 0x76da2f25), TOBN(0x889de4e0, 0x6febef33), - TOBN(0x6900ec06, 0x646083ce), TOBN(0xbe2a0335, 0xbfe12773), - TOBN(0xadd1da35, 0xc5344110), TOBN(0x757568b7, 0xb802cd20), - TOBN(0x75559779, 0x00f7e6c8), TOBN(0x38e8b94f, 0x0facd2f0), - TOBN(0xfea1f3af, 0x03fde375), TOBN(0x5e11a1d8, 0x75881dfc), - TOBN(0xb3a6b02e, 0xc1e2f2ef), TOBN(0x193d2bbb, 0xc605a6c5), - TOBN(0x325ffeee, 0x339a0b2d), TOBN(0x27b6a724, 0x9e0c8846), - TOBN(0xe4050f1c, 0xf1c367ca), TOBN(0x9bc85a9b, 0xc90fbc7d), - TOBN(0xa373c4a2, 0xe1a11032), TOBN(0xb64232b7, 0xad0393a9), - TOBN(0xf5577eb0, 0x167dad29), TOBN(0x1604f301, 0x94b78ab2), - TOBN(0x0baa94af, 0xe829348b), TOBN(0x77fbd8dd, 0x41654342), - TOBN(0xdab50ea5, 0xb964e39a), TOBN(0xd4c29e3c, 0xd0d3c76e), - TOBN(0x80dae67c, 0x56d11964), TOBN(0x7307a8bf, 0xe5ffcc2f), - TOBN(0x65bbc1aa, 0x91708c3b), TOBN(0xa151e62c, 0x28bf0eeb), - TOBN(0x6cb53381, 0x6fa34db7), TOBN(0x5139e05c, 0xa29403a8), - TOBN(0x6ff651b4, 0x94a7cd2e), TOBN(0x5671ffd1, 0x0699336c), - TOBN(0x6f5fd2cc, 0x979a896a), TOBN(0x11e893a8, 0xd8148cef), - TOBN(0x988906a1, 0x65cf7b10), TOBN(0x81b67178, 0xc50d8485), - TOBN(0x7c0deb35, 0x8a35b3de), TOBN(0x423ac855, 0xc1d29799), - TOBN(0xaf580d87, 0xdac50b74), TOBN(0x28b2b89f, 0x5869734c), - TOBN(0x99a3b936, 0x874e28fb), TOBN(0xbb2c9190, 0x25f3f73a), - TOBN(0x199f6918, 0x84a9d5b7), TOBN(0x7ebe2325, 0x7e770374), - TOBN(0xf442e107, 0x0738efe2), TOBN(0xcf9f3f56, 0xcf9082d2), - TOBN(0x719f69e1, 0x09618708), TOBN(0xcc9e8364, 0xc183f9b1), - TOBN(0xec203a95, 0x366a21af), TOBN(0x6aec5d6d, 0x068b141f), - TOBN(0xee2df78a, 0x994f04e9), TOBN(0xb39ccae8, 0x271245b0), - TOBN(0xb875a4a9, 0x97e43f4f), TOBN(0x507dfe11, 0xdb2cea98), - TOBN(0x4fbf81cb, 0x489b03e9), TOBN(0xdb86ec5b, 0x6ec414fa), - TOBN(0xfad444f9, 0xf51b3ae5), TOBN(0xca7d33d6, 0x1914e3fe), - TOBN(0xa9c32f5c, 0x0ae6c4d0), TOBN(0xa9ca1d1e, 0x73969568), - TOBN(0x98043c31, 0x1aa7467e), TOBN(0xe832e75c, 0xe21b5ac6), - TOBN(0x314b7aea, 0x5232123d), TOBN(0x08307c8c, 0x65ae86db), - TOBN(0x06e7165c, 0xaa4668ed), TOBN(0xb170458b, 0xb4d3ec39), - TOBN(0x4d2e3ec6, 0xc19bb986), TOBN(0xc5f34846, 0xae0304ed), - TOBN(0x917695a0, 0x6c9f9722), TOBN(0x6c7f7317, 0x4cab1c0a), - TOBN(0x6295940e, 0x9d6d2e8b), TOBN(0xd318b8c1, 0x549f7c97), - TOBN(0x22453204, 0x97713885), TOBN(0x468d834b, 0xa8a440fe), - TOBN(0xd81fe5b2, 0xbfba796e), TOBN(0x152364db, 0x6d71f116), - TOBN(0xbb8c7c59, 0xb5b66e53), TOBN(0x0b12c61b, 0x2641a192), - TOBN(0x31f14802, 0xfcf0a7fd), TOBN(0x42fd0789, 0x5488b01e), - TOBN(0x71d78d6d, 0x9952b498), TOBN(0x8eb572d9, 0x07ac5201), - TOBN(0xe0a2a44c, 0x4d194a88), TOBN(0xd2b63fd9, 0xba017e66), - TOBN(0x78efc6c8, 0xf888aefc), TOBN(0xb76f6bda, 0x4a881a11), - TOBN(0x187f314b, 0xb46c2397), TOBN(0x004cf566, 0x5ded2819), - TOBN(0xa9ea5704, 0x38764d34), TOBN(0xbba45217, 0x78084709), - TOBN(0x06474571, 0x1171121e), TOBN(0xad7b7eb1, 0xe7c9b671), - TOBN(0xdacfbc40, 0x730f7507), TOBN(0x178cd8c6, 0xc7ad7bd1), - TOBN(0xbf0be101, 0xb2a67238), TOBN(0x3556d367, 0xaf9c14f2), - TOBN(0x104b7831, 0xa5662075), TOBN(0x58ca59bb, 0x79d9e60a), - TOBN(0x4bc45392, 0xa569a73b), TOBN(0x517a52e8, 0x5698f6c9), - TOBN(0x85643da5, 0xaeadd755), TOBN(0x1aed0cd5, 0x2a581b84), - TOBN(0xb9b4ff84, 0x80af1372), TOBN(0x244c3113, 0xf1ba5d1f), - TOBN(0x2a5dacbe, 0xf5f98d31), TOBN(0x2c3323e8, 0x4375bc2a), - TOBN(0x17a3ab4a, 0x5594b1dd), TOBN(0xa1928bfb, 0xceb4797e), - TOBN(0xe83af245, 0xe4886a19), TOBN(0x8979d546, 0x72b5a74a), - TOBN(0xa0f726bc, 0x19f9e967), TOBN(0xd9d03152, 0xe8fbbf4e), - TOBN(0xcfd6f51d, 0xb7707d40), TOBN(0x633084d9, 0x63f6e6e0), - TOBN(0xedcd9cdc, 0x55667eaf), TOBN(0x73b7f92b, 0x2e44d56f), - TOBN(0xfb2e39b6, 0x4e962b14), TOBN(0x7d408f6e, 0xf671fcbf), - TOBN(0xcc634ddc, 0x164a89bb), TOBN(0x74a42bb2, 0x3ef3bd05), - TOBN(0x1280dbb2, 0x428decbb), TOBN(0x6103f6bb, 0x402c8596), - TOBN(0xfa2bf581, 0x355a5752), TOBN(0x562f96a8, 0x00946674), - TOBN(0x4e4ca16d, 0x6da0223b), TOBN(0xfe47819f, 0x28d3aa25), - TOBN(0x9eea3075, 0xf8dfcf8a), TOBN(0xa284f0aa, 0x95669825), - TOBN(0xb3fca250, 0x867d3fd8), TOBN(0x20757b5f, 0x269d691e), - TOBN(0xf2c24020, 0x93b8a5de), TOBN(0xd3f93359, 0xebc06da6), - TOBN(0x1178293e, 0xb2739c33), TOBN(0xd2a3e770, 0xbcd686e5), - TOBN(0xa76f49f4, 0xcd941534), TOBN(0x0d37406b, 0xe3c71c0e), - TOBN(0x172d9397, 0x3b97f7e3), TOBN(0xec17e239, 0xbd7fd0de), - TOBN(0xe3290551, 0x6f496ba2), TOBN(0x6a693172, 0x36ad50e7), - TOBN(0xc4e539a2, 0x83e7eff5), TOBN(0x752737e7, 0x18e1b4cf), - TOBN(0xa2f7932c, 0x68af43ee), TOBN(0x5502468e, 0x703d00bd), - TOBN(0xe5dc978f, 0x2fb061f5), TOBN(0xc9a1904a, 0x28c815ad), - TOBN(0xd3af538d, 0x470c56a4), TOBN(0x159abc5f, 0x193d8ced), - TOBN(0x2a37245f, 0x20108ef3), TOBN(0xfa17081e, 0x223f7178), - TOBN(0x27b0fb2b, 0x10c8c0f5), TOBN(0x2102c3ea, 0x40650547), - TOBN(0x594564df, 0x8ac3bfa7), TOBN(0x98102033, 0x509dad96), - TOBN(0x6989643f, 0xf1d18a13), TOBN(0x35eebd91, 0xd7fc5af0), - TOBN(0x078d096a, 0xfaeaafd8), TOBN(0xb7a89341, 0xdef3de98), - TOBN(0x2a206e8d, 0xecf2a73a), TOBN(0x066a6397, 0x8e551994), - TOBN(0x3a6a088a, 0xb98d53a2), TOBN(0x0ce7c67c, 0x2d1124aa), - TOBN(0x48cec671, 0x759a113c), TOBN(0xe3b373d3, 0x4f6f67fa), - TOBN(0x5455d479, 0xfd36727b), TOBN(0xe5a428ee, 0xa13c0d81), - TOBN(0xb853dbc8, 0x1c86682b), TOBN(0xb78d2727, 0xb8d02b2a), - TOBN(0xaaf69bed, 0x8ebc329a), TOBN(0xdb6b40b3, 0x293b2148), - TOBN(0xe42ea77d, 0xb8c4961f), TOBN(0xb1a12f7c, 0x20e5e0ab), - TOBN(0xa0ec5274, 0x79e8b05e), TOBN(0x68027391, 0xfab60a80), - TOBN(0x6bfeea5f, 0x16b1bd5e), TOBN(0xf957e420, 0x4de30ad3), - TOBN(0xcbaf664e, 0x6a353b9e), TOBN(0x5c873312, 0x26d14feb), - TOBN(0x4e87f98c, 0xb65f57cb), TOBN(0xdb60a621, 0x5e0cdd41), - TOBN(0x67c16865, 0xa6881440), TOBN(0x1093ef1a, 0x46ab52aa), - TOBN(0xc095afb5, 0x3f4ece64), TOBN(0x6a6bb02e, 0x7604551a), - TOBN(0x55d44b4e, 0x0b26b8cd), TOBN(0xe5f9a999, 0xf971268a), - TOBN(0xc08ec425, 0x11a7de84), TOBN(0x83568095, 0xfda469dd), - TOBN(0x737bfba1, 0x6c6c90a2), TOBN(0x1cb9c4a0, 0xbe229831), - TOBN(0x93bccbba, 0xbb2eec64), TOBN(0xa0c23b64, 0xda03adbe), - TOBN(0x5f7aa00a, 0xe0e86ac4), TOBN(0x470b941e, 0xfc1401e6), - TOBN(0x5ad8d679, 0x9df43574), TOBN(0x4ccfb8a9, 0x0f65d810), - TOBN(0x1bce80e3, 0xaa7fbd81), TOBN(0x273291ad, 0x9508d20a), - TOBN(0xf5c4b46b, 0x42a92806), TOBN(0x810684ec, 0xa86ab44a), - TOBN(0x4591640b, 0xca0bc9f8), TOBN(0xb5efcdfc, 0x5c4b6054), - TOBN(0x16fc8907, 0x6e9edd12), TOBN(0xe29d0b50, 0xd4d792f9), - TOBN(0xa45fd01c, 0x9b03116d), TOBN(0x85035235, 0xc81765a4), - TOBN(0x1fe2a9b2, 0xb4b4b67c), TOBN(0xc1d10df0, 0xe8020604), - TOBN(0x9d64abfc, 0xbc8058d8), TOBN(0x8943b9b2, 0x712a0fbb), - TOBN(0x90eed914, 0x3b3def04), TOBN(0x85ab3aa2, 0x4ce775ff), - TOBN(0x605fd4ca, 0x7bbc9040), TOBN(0x8b34a564, 0xe2c75dfb), - TOBN(0x41ffc94a, 0x10358560), TOBN(0x2d8a5072, 0x9e5c28aa), - TOBN(0xe915a0fc, 0x4cc7eb15), TOBN(0xe9efab05, 0x8f6d0f5d), - TOBN(0xdbab47a9, 0xd19e9b91), TOBN(0x8cfed745, 0x0276154c), - TOBN(0x154357ae, 0x2cfede0d), TOBN(0x520630df, 0x19f5a4ef), - TOBN(0x25759f7c, 0xe382360f), TOBN(0xb6db05c9, 0x88bf5857), - TOBN(0x2917d61d, 0x6c58d46c), TOBN(0x14f8e491, 0xfd20cb7a), - TOBN(0xb68a727a, 0x11c20340), TOBN(0x0386f86f, 0xaf7ccbb6), - TOBN(0x5c8bc6cc, 0xfee09a20), TOBN(0x7d76ff4a, 0xbb7eea35), - TOBN(0xa7bdebe7, 0xdb15be7a), TOBN(0x67a08054, 0xd89f0302), - TOBN(0x56bf0ea9, 0xc1193364), TOBN(0xc8244467, 0x62837ebe), - TOBN(0x32bd8e8b, 0x20d841b8), TOBN(0x127a0548, 0xdbb8a54f), - TOBN(0x83dd4ca6, 0x63b20236), TOBN(0x87714718, 0x203491fa), - TOBN(0x4dabcaaa, 0xaa8a5288), TOBN(0x91cc0c8a, 0xaf23a1c9), - TOBN(0x34c72c6a, 0x3f220e0c), TOBN(0xbcc20bdf, 0x1232144a), - TOBN(0x6e2f42da, 0xa20ede1b), TOBN(0xc441f00c, 0x74a00515), - TOBN(0xbf46a5b6, 0x734b8c4b), TOBN(0x57409503, 0x7b56c9a4), - TOBN(0x9f735261, 0xe4585d45), TOBN(0x9231faed, 0x6734e642), - TOBN(0x1158a176, 0xbe70ee6c), TOBN(0x35f1068d, 0x7c3501bf), - TOBN(0x6beef900, 0xa2d26115), TOBN(0x649406f2, 0xef0afee3), - TOBN(0x3f43a60a, 0xbc2420a1), TOBN(0x509002a7, 0xd5aee4ac), - TOBN(0xb46836a5, 0x3ff3571b), TOBN(0x24f98b78, 0x837927c1), - TOBN(0x6254256a, 0x4533c716), TOBN(0xf27abb0b, 0xd07ee196), - TOBN(0xd7cf64fc, 0x5c6d5bfd), TOBN(0x6915c751, 0xf0cd7a77), - TOBN(0xd9f59012, 0x8798f534), TOBN(0x772b0da8, 0xf81d8b5f), - TOBN(0x1244260c, 0x2e03fa69), TOBN(0x36cf0e3a, 0x3be1a374), - TOBN(0x6e7c1633, 0xef06b960), TOBN(0xa71a4c55, 0x671f90f6), - TOBN(0x7a941251, 0x33c673db), TOBN(0xc0bea510, 0x73e8c131), - TOBN(0x61a8a699, 0xd4f6c734), TOBN(0x25e78c88, 0x341ed001), - TOBN(0x5c18acf8, 0x8e2f7d90), TOBN(0xfdbf33d7, 0x77be32cd), - TOBN(0x0a085cd7, 0xd2eb5ee9), TOBN(0x2d702cfb, 0xb3201115), - TOBN(0xb6e0ebdb, 0x85c88ce8), TOBN(0x23a3ce3c, 0x1e01d617), - TOBN(0x3041618e, 0x567333ac), TOBN(0x9dd0fd8f, 0x157edb6b), - TOBN(0x27f74702, 0xb57872b8), TOBN(0x2ef26b4f, 0x657d5fe1), - TOBN(0x95426f0a, 0x57cf3d40), TOBN(0x847e2ad1, 0x65a6067a), - TOBN(0xd474d9a0, 0x09996a74), TOBN(0x16a56acd, 0x2a26115c), - TOBN(0x02a615c3, 0xd16f4d43), TOBN(0xcc3fc965, 0xaadb85b7), - TOBN(0x386bda73, 0xce07d1b0), TOBN(0xd82910c2, 0x58ad4178), - TOBN(0x124f82cf, 0xcd2617f4), TOBN(0xcc2f5e8d, 0xef691770), - TOBN(0x82702550, 0xb8c30ccc), TOBN(0x7b856aea, 0x1a8e575a), - TOBN(0xbb822fef, 0xb1ab9459), TOBN(0x085928bc, 0xec24e38e), - TOBN(0x5d0402ec, 0xba8f4b4d), TOBN(0xc07cd4ba, 0x00b4d58b), - TOBN(0x5d8dffd5, 0x29227e7a), TOBN(0x61d44d0c, 0x31bf386f), - TOBN(0xe486dc2b, 0x135e6f4d), TOBN(0x680962eb, 0xe79410ef), - TOBN(0xa61bd343, 0xf10088b5), TOBN(0x6aa76076, 0xe2e28686), - TOBN(0x80463d11, 0x8fb98871), TOBN(0xcb26f5c3, 0xbbc76aff), - TOBN(0xd4ab8edd, 0xfbe03614), TOBN(0xc8eb579b, 0xc0cf2dee), - TOBN(0xcc004c15, 0xc93bae41), TOBN(0x46fbae5d, 0x3aeca3b2), - TOBN(0x671235cf, 0x0f1e9ab1), TOBN(0xadfba934, 0x9ec285c1), - TOBN(0x88ded013, 0xf216c980), TOBN(0xc8ac4fb8, 0xf79e0bc1), - TOBN(0xa29b89c6, 0xfb97a237), TOBN(0xb697b780, 0x9922d8e7), - TOBN(0x3142c639, 0xddb945b5), TOBN(0x447b06c7, 0xe094c3a9), - TOBN(0xcdcb3642, 0x72266c90), TOBN(0x633aad08, 0xa9385046), - TOBN(0xa36c936b, 0xb57c6477), TOBN(0x871f8b64, 0xe94dbcc6), - TOBN(0x28d0fb62, 0xa591a67b), TOBN(0x9d40e081, 0xc1d926f5), - TOBN(0x3111eaf6, 0xf2d84b5a), TOBN(0x228993f9, 0xa565b644), - TOBN(0x0ccbf592, 0x2c83188b), TOBN(0xf87b30ab, 0x3df3e197), - TOBN(0xb8658b31, 0x7642bca8), TOBN(0x1a032d7f, 0x52800f17), - TOBN(0x051dcae5, 0x79bf9445), TOBN(0xeba6b8ee, 0x54a2e253), - TOBN(0x5c8b9cad, 0xd4485692), TOBN(0x84bda40e, 0x8986e9be), - TOBN(0xd16d16a4, 0x2f0db448), TOBN(0x8ec80050, 0xa14d4188), - TOBN(0xb2b26107, 0x98fa7aaa), TOBN(0x41209ee4, 0xf073aa4e), - TOBN(0xf1570359, 0xf2d6b19b), TOBN(0xcbe6868c, 0xfc577caf), - TOBN(0x186c4bdc, 0x32c04dd3), TOBN(0xa6c35fae, 0xcfeee397), - TOBN(0xb4a1b312, 0xf086c0cf), TOBN(0xe0a5ccc6, 0xd9461fe2), - TOBN(0xc32278aa, 0x1536189f), TOBN(0x1126c55f, 0xba6df571), - TOBN(0x0f71a602, 0xb194560e), TOBN(0x8b2d7405, 0x324bd6e1), - TOBN(0x8481939e, 0x3738be71), TOBN(0xb5090b1a, 0x1a4d97a9), - TOBN(0x116c65a3, 0xf05ba915), TOBN(0x21863ad3, 0xaae448aa), - TOBN(0xd24e2679, 0xa7aae5d3), TOBN(0x7076013d, 0x0de5c1c4), - TOBN(0x2d50f8ba, 0xbb05b629), TOBN(0x73c1abe2, 0x6e66efbb), - TOBN(0xefd4b422, 0xf2488af7), TOBN(0xe4105d02, 0x663ba575), - TOBN(0x7eb60a8b, 0x53a69457), TOBN(0x62210008, 0xc945973b), - TOBN(0xfb255478, 0x77a50ec6), TOBN(0xbf0392f7, 0x0a37a72c), - TOBN(0xa0a7a19c, 0x4be18e7a), TOBN(0x90d8ea16, 0x25b1e0af), - TOBN(0x7582a293, 0xef953f57), TOBN(0x90a64d05, 0xbdc5465a), - TOBN(0xca79c497, 0xe2510717), TOBN(0x560dbb7c, 0x18cb641f), - TOBN(0x1d8e3286, 0x4b66abfb), TOBN(0xd26f52e5, 0x59030900), - TOBN(0x1ee3f643, 0x5584941a), TOBN(0x6d3b3730, 0x569f5958), - TOBN(0x9ff2a62f, 0x4789dba5), TOBN(0x91fcb815, 0x72b5c9b7), - TOBN(0xf446cb7d, 0x6c8f9a0e), TOBN(0x48f625c1, 0x39b7ecb5), - TOBN(0xbabae801, 0x1c6219b8), TOBN(0xe7a562d9, 0x28ac2f23), - TOBN(0xe1b48732, 0x26e20588), TOBN(0x06ee1cad, 0x775af051), - TOBN(0xda29ae43, 0xfaff79f7), TOBN(0xc141a412, 0x652ee9e0), - TOBN(0x1e127f6f, 0x195f4bd0), TOBN(0x29c6ab4f, 0x072f34f8), - TOBN(0x7b7c1477, 0x30448112), TOBN(0x82b51af1, 0xe4a38656), - TOBN(0x2bf2028a, 0x2f315010), TOBN(0xc9a4a01f, 0x6ea88cd4), - TOBN(0xf63e95d8, 0x257e5818), TOBN(0xdd8efa10, 0xb4519b16), - TOBN(0xed8973e0, 0x0da910bf), TOBN(0xed49d077, 0x5c0fe4a9), - TOBN(0xac3aac5e, 0xb7caee1e), TOBN(0x1033898d, 0xa7f4da57), - TOBN(0x42145c0e, 0x5c6669b9), TOBN(0x42daa688, 0xc1aa2aa0), - TOBN(0x629cc15c, 0x1a1d885a), TOBN(0x25572ec0, 0xf4b76817), - TOBN(0x8312e435, 0x9c8f8f28), TOBN(0x8107f8cd, 0x81965490), - TOBN(0x516ff3a3, 0x6fa6110c), TOBN(0x74fb1eb1, 0xfb93561f), - TOBN(0x6c0c9047, 0x8457522b), TOBN(0xcfd32104, 0x6bb8bdc6), - TOBN(0x2d6884a2, 0xcc80ad57), TOBN(0x7c27fc35, 0x86a9b637), - TOBN(0x3461baed, 0xadf4e8cd), TOBN(0x1d56251a, 0x617242f0), - TOBN(0x0b80d209, 0xc955bef4), TOBN(0xdf02cad2, 0x06adb047), - TOBN(0xf0d7cb91, 0x5ec74fee), TOBN(0xd2503375, 0x1111ba44), - TOBN(0x9671755e, 0xdf53cb36), TOBN(0x54dcb612, 0x3368551b), - TOBN(0x66d69aac, 0xc8a025a4), TOBN(0x6be946c6, 0xe77ef445), - TOBN(0x719946d1, 0xa995e094), TOBN(0x65e848f6, 0xe51e04d8), - TOBN(0xe62f3300, 0x6a1e3113), TOBN(0x1541c7c1, 0x501de503), - TOBN(0x4daac9fa, 0xf4acfade), TOBN(0x0e585897, 0x44cd0b71), - TOBN(0x544fd869, 0x0a51cd77), TOBN(0x60fc20ed, 0x0031016d), - TOBN(0x58b404ec, 0xa4276867), TOBN(0x46f6c3cc, 0x34f34993), - TOBN(0x477ca007, 0xc636e5bd), TOBN(0x8018f5e5, 0x7c458b47), - TOBN(0xa1202270, 0xe47b668f), TOBN(0xcef48ccd, 0xee14f203), - TOBN(0x23f98bae, 0x62ff9b4d), TOBN(0x55acc035, 0xc589eddd), - TOBN(0x3fe712af, 0x64db4444), TOBN(0x19e9d634, 0xbecdd480), - TOBN(0xe08bc047, 0xa930978a), TOBN(0x2dbf24ec, 0xa1280733), - TOBN(0x3c0ae38c, 0x2cd706b2), TOBN(0x5b012a5b, 0x359017b9), - TOBN(0x3943c38c, 0x72e0f5ae), TOBN(0x786167ea, 0x57176fa3), - TOBN(0xe5f9897d, 0x594881dc), TOBN(0x6b5efad8, 0xcfb820c1), - TOBN(0xb2179093, 0xd55018de), TOBN(0x39ad7d32, 0x0bac56ce), - TOBN(0xb55122e0, 0x2cfc0e81), TOBN(0x117c4661, 0xf6d89daa), - TOBN(0x362d01e1, 0xcb64fa09), TOBN(0x6a309b4e, 0x3e9c4ddd), - TOBN(0xfa979fb7, 0xabea49b1), TOBN(0xb4b1d27d, 0x10e2c6c5), - TOBN(0xbd61c2c4, 0x23afde7a), TOBN(0xeb6614f8, 0x9786d358), - TOBN(0x4a5d816b, 0x7f6f7459), TOBN(0xe431a44f, 0x09360e7b), - TOBN(0x8c27a032, 0xc309914c), TOBN(0xcea5d68a, 0xcaede3d8), - TOBN(0x3668f665, 0x3a0a3f95), TOBN(0x89369416, 0x7ceba27b), - TOBN(0x89981fad, 0xe4728fe9), TOBN(0x7102c8a0, 0x8a093562), - TOBN(0xbb80310e, 0x235d21c8), TOBN(0x505e55d1, 0xbefb7f7b), - TOBN(0xa0a90811, 0x12958a67), TOBN(0xd67e106a, 0x4d851fef), - TOBN(0xb84011a9, 0x431dd80e), TOBN(0xeb7c7cca, 0x73306cd9), - TOBN(0x20fadd29, 0xd1b3b730), TOBN(0x83858b5b, 0xfe37b3d3), - TOBN(0xbf4cd193, 0xb6251d5c), TOBN(0x1cca1fd3, 0x1352d952), - TOBN(0xc66157a4, 0x90fbc051), TOBN(0x7990a638, 0x89b98636)}, - {TOBN(0xe5aa692a, 0x87dec0e1), TOBN(0x010ded8d, 0xf7b39d00), - TOBN(0x7b1b80c8, 0x54cfa0b5), TOBN(0x66beb876, 0xa0f8ea28), - TOBN(0x50d7f531, 0x3476cd0e), TOBN(0xa63d0e65, 0xb08d3949), - TOBN(0x1a09eea9, 0x53479fc6), TOBN(0x82ae9891, 0xf499e742), - TOBN(0xab58b910, 0x5ca7d866), TOBN(0x582967e2, 0x3adb3b34), - TOBN(0x89ae4447, 0xcceac0bc), TOBN(0x919c667c, 0x7bf56af5), - TOBN(0x9aec17b1, 0x60f5dcd7), TOBN(0xec697b9f, 0xddcaadbc), - TOBN(0x0b98f341, 0x463467f5), TOBN(0xb187f1f7, 0xa967132f), - TOBN(0x90fe7a1d, 0x214aeb18), TOBN(0x1506af3c, 0x741432f7), - TOBN(0xbb5565f9, 0xe591a0c4), TOBN(0x10d41a77, 0xb44f1bc3), - TOBN(0xa09d65e4, 0xa84bde96), TOBN(0x42f060d8, 0xf20a6a1c), - TOBN(0x652a3bfd, 0xf27f9ce7), TOBN(0xb6bdb65c, 0x3b3d739f), - TOBN(0xeb5ddcb6, 0xec7fae9f), TOBN(0x995f2714, 0xefb66e5a), - TOBN(0xdee95d8e, 0x69445d52), TOBN(0x1b6c2d46, 0x09e27620), - TOBN(0x32621c31, 0x8129d716), TOBN(0xb03909f1, 0x0958c1aa), - TOBN(0x8c468ef9, 0x1af4af63), TOBN(0x162c429f, 0xfba5cdf6), - TOBN(0x2f682343, 0x753b9371), TOBN(0x29cab45a, 0x5f1f9cd7), - TOBN(0x571623ab, 0xb245db96), TOBN(0xc507db09, 0x3fd79999), - TOBN(0x4e2ef652, 0xaf036c32), TOBN(0x86f0cc78, 0x05018e5c), - TOBN(0xc10a73d4, 0xab8be350), TOBN(0x6519b397, 0x7e826327), - TOBN(0xe8cb5eef, 0x9c053df7), TOBN(0x8de25b37, 0xb300ea6f), - TOBN(0xdb03fa92, 0xc849cffb), TOBN(0x242e43a7, 0xe84169bb), - TOBN(0xe4fa51f4, 0xdd6f958e), TOBN(0x6925a77f, 0xf4445a8d), - TOBN(0xe6e72a50, 0xe90d8949), TOBN(0xc66648e3, 0x2b1f6390), - TOBN(0xb2ab1957, 0x173e460c), TOBN(0x1bbbce75, 0x30704590), - TOBN(0xc0a90dbd, 0xdb1c7162), TOBN(0x505e399e, 0x15cdd65d), - TOBN(0x68434dcb, 0x57797ab7), TOBN(0x60ad35ba, 0x6a2ca8e8), - TOBN(0x4bfdb1e0, 0xde3336c1), TOBN(0xbbef99eb, 0xd8b39015), - TOBN(0x6c3b96f3, 0x1711ebec), TOBN(0x2da40f1f, 0xce98fdc4), - TOBN(0xb99774d3, 0x57b4411f), TOBN(0x87c8bdf4, 0x15b65bb6), - TOBN(0xda3a89e3, 0xc2eef12d), TOBN(0xde95bb9b, 0x3c7471f3), - TOBN(0x600f225b, 0xd812c594), TOBN(0x54907c5d, 0x2b75a56b), - TOBN(0xa93cc5f0, 0x8db60e35), TOBN(0x743e3cd6, 0xfa833319), - TOBN(0x7dad5c41, 0xf81683c9), TOBN(0x70c1e7d9, 0x9c34107e), - TOBN(0x0edc4a39, 0xa6be0907), TOBN(0x36d47035, 0x86d0b7d3), - TOBN(0x8c76da03, 0x272bfa60), TOBN(0x0b4a07ea, 0x0f08a414), - TOBN(0x699e4d29, 0x45c1dd53), TOBN(0xcadc5898, 0x231debb5), - TOBN(0xdf49fcc7, 0xa77f00e0), TOBN(0x93057bbf, 0xa73e5a0e), - TOBN(0x2f8b7ecd, 0x027a4cd1), TOBN(0x114734b3, 0xc614011a), - TOBN(0xe7a01db7, 0x67677c68), TOBN(0x89d9be5e, 0x7e273f4f), - TOBN(0xd225cb2e, 0x089808ef), TOBN(0xf1f7a27d, 0xd59e4107), - TOBN(0x53afc761, 0x8211b9c9), TOBN(0x0361bc67, 0xe6819159), - TOBN(0x2a865d0b, 0x7f071426), TOBN(0x6a3c1810, 0xe7072567), - TOBN(0x3e3bca1e, 0x0d6bcabd), TOBN(0xa1b02bc1, 0x408591bc), - TOBN(0xe0deee59, 0x31fba239), TOBN(0xf47424d3, 0x98bd91d1), - TOBN(0x0f8886f4, 0x071a3c1d), TOBN(0x3f7d41e8, 0xa819233b), - TOBN(0x708623c2, 0xcf6eb998), TOBN(0x86bb49af, 0x609a287f), - TOBN(0x942bb249, 0x63c90762), TOBN(0x0ef6eea5, 0x55a9654b), - TOBN(0x5f6d2d72, 0x36f5defe), TOBN(0xfa9922dc, 0x56f99176), - TOBN(0x6c8c5ece, 0xf78ce0c7), TOBN(0x7b44589d, 0xbe09b55e), - TOBN(0xe11b3bca, 0x9ea83770), TOBN(0xd7fa2c7f, 0x2ab71547), - TOBN(0x2a3dd6fa, 0x2a1ddcc0), TOBN(0x09acb430, 0x5a7b7707), - TOBN(0x4add4a2e, 0x649d4e57), TOBN(0xcd53a2b0, 0x1917526e), - TOBN(0xc5262330, 0x20b44ac4), TOBN(0x4028746a, 0xbaa2c31d), - TOBN(0x51318390, 0x64291d4c), TOBN(0xbf48f151, 0xee5ad909), - TOBN(0xcce57f59, 0x7b185681), TOBN(0x7c3ac1b0, 0x4854d442), - TOBN(0x65587dc3, 0xc093c171), TOBN(0xae7acb24, 0x24f42b65), - TOBN(0x5a338adb, 0x955996cb), TOBN(0xc8e65675, 0x6051f91b), - TOBN(0x66711fba, 0x28b8d0b1), TOBN(0x15d74137, 0xb6c10a90), - TOBN(0x70cdd7eb, 0x3a232a80), TOBN(0xc9e2f07f, 0x6191ed24), - TOBN(0xa80d1db6, 0xf79588c0), TOBN(0xfa52fc69, 0xb55768cc), - TOBN(0x0b4df1ae, 0x7f54438a), TOBN(0x0cadd1a7, 0xf9b46a4f), - TOBN(0xb40ea6b3, 0x1803dd6f), TOBN(0x488e4fa5, 0x55eaae35), - TOBN(0x9f047d55, 0x382e4e16), TOBN(0xc9b5b7e0, 0x2f6e0c98), - TOBN(0x6b1bd2d3, 0x95762649), TOBN(0xa9604ee7, 0xc7aea3f6), - TOBN(0x3646ff27, 0x6dc6f896), TOBN(0x9bf0e7f5, 0x2860bad1), - TOBN(0x2d92c821, 0x7cb44b92), TOBN(0xa2f5ce63, 0xaea9c182), - TOBN(0xd0a2afb1, 0x9154a5fd), TOBN(0x482e474c, 0x95801da6), - TOBN(0xc19972d0, 0xb611c24b), TOBN(0x1d468e65, 0x60a8f351), - TOBN(0xeb758069, 0x7bcf6421), TOBN(0xec9dd0ee, 0x88fbc491), - TOBN(0x5b59d2bf, 0x956c2e32), TOBN(0x73dc6864, 0xdcddf94e), - TOBN(0xfd5e2321, 0xbcee7665), TOBN(0xa7b4f8ef, 0x5e9a06c4), - TOBN(0xfba918dd, 0x7280f855), TOBN(0xbbaac260, 0x8baec688), - TOBN(0xa3b3f00f, 0x33400f42), TOBN(0x3d2dba29, 0x66f2e6e4), - TOBN(0xb6f71a94, 0x98509375), TOBN(0x8f33031f, 0xcea423cc), - TOBN(0x009b8dd0, 0x4807e6fb), TOBN(0x5163cfe5, 0x5cdb954c), - TOBN(0x03cc8f17, 0xcf41c6e8), TOBN(0xf1f03c2a, 0x037b925c), - TOBN(0xc39c19cc, 0x66d2427c), TOBN(0x823d24ba, 0x7b6c18e4), - TOBN(0x32ef9013, 0x901f0b4f), TOBN(0x684360f1, 0xf8941c2e), - TOBN(0x0ebaff52, 0x2c28092e), TOBN(0x7891e4e3, 0x256c932f), - TOBN(0x51264319, 0xac445e3d), TOBN(0x553432e7, 0x8ea74381), - TOBN(0xe6eeaa69, 0x67e9c50a), TOBN(0x27ced284, 0x62e628c7), - TOBN(0x3f96d375, 0x7a4afa57), TOBN(0xde0a14c3, 0xe484c150), - TOBN(0x364a24eb, 0x38bd9923), TOBN(0x1df18da0, 0xe5177422), - TOBN(0x174e8f82, 0xd8d38a9b), TOBN(0x2e97c600, 0xe7de1391), - TOBN(0xc5709850, 0xa1c175dd), TOBN(0x969041a0, 0x32ae5035), - TOBN(0xcbfd533b, 0x76a2086b), TOBN(0xd6bba71b, 0xd7c2e8fe), - TOBN(0xb2d58ee6, 0x099dfb67), TOBN(0x3a8b342d, 0x064a85d9), - TOBN(0x3bc07649, 0x522f9be3), TOBN(0x690c075b, 0xdf1f49a8), - TOBN(0x80e1aee8, 0x3854ec42), TOBN(0x2a7dbf44, 0x17689dc7), - TOBN(0xc004fc0e, 0x3faf4078), TOBN(0xb2f02e9e, 0xdf11862c), - TOBN(0xf10a5e0f, 0xa0a1b7b3), TOBN(0x30aca623, 0x8936ec80), - TOBN(0xf83cbf05, 0x02f40d9a), TOBN(0x4681c468, 0x2c318a4d), - TOBN(0x98575618, 0x0e9c2674), TOBN(0xbe79d046, 0x1847092e), - TOBN(0xaf1e480a, 0x78bd01e0), TOBN(0x6dd359e4, 0x72a51db9), - TOBN(0x62ce3821, 0xe3afbab6), TOBN(0xc5cee5b6, 0x17733199), - TOBN(0xe08b30d4, 0x6ffd9fbb), TOBN(0x6e5bc699, 0x36c610b7), - TOBN(0xf343cff2, 0x9ce262cf), TOBN(0xca2e4e35, 0x68b914c1), - TOBN(0x011d64c0, 0x16de36c5), TOBN(0xe0b10fdd, 0x42e2b829), - TOBN(0x78942981, 0x6685aaf8), TOBN(0xe7511708, 0x230ede97), - TOBN(0x671ed8fc, 0x3b922bf8), TOBN(0xe4d8c0a0, 0x4c29b133), - TOBN(0x87eb1239, 0x3b6e99c4), TOBN(0xaff3974c, 0x8793beba), - TOBN(0x03749405, 0x2c18df9b), TOBN(0xc5c3a293, 0x91007139), - TOBN(0x6a77234f, 0xe37a0b95), TOBN(0x02c29a21, 0xb661c96b), - TOBN(0xc3aaf1d6, 0x141ecf61), TOBN(0x9195509e, 0x3bb22f53), - TOBN(0x29597404, 0x22d51357), TOBN(0x1b083822, 0x537bed60), - TOBN(0xcd7d6e35, 0xe07289f0), TOBN(0x1f94c48c, 0x6dd86eff), - TOBN(0xc8bb1f82, 0xeb0f9cfa), TOBN(0x9ee0b7e6, 0x1b2eb97d), - TOBN(0x5a52fe2e, 0x34d74e31), TOBN(0xa352c310, 0x3bf79ab6), - TOBN(0x97ff6c5a, 0xabfeeb8f), TOBN(0xbfbe8fef, 0xf5c97305), - TOBN(0xd6081ce6, 0xa7904608), TOBN(0x1f812f3a, 0xc4fca249), - TOBN(0x9b24bc9a, 0xb9e5e200), TOBN(0x91022c67, 0x38012ee8), - TOBN(0xe83d9c5d, 0x30a713a1), TOBN(0x4876e3f0, 0x84ef0f93), - TOBN(0xc9777029, 0xc1fbf928), TOBN(0xef7a6bb3, 0xbce7d2a4), - TOBN(0xb8067228, 0xdfa2a659), TOBN(0xd5cd3398, 0xd877a48f), - TOBN(0xbea4fd8f, 0x025d0f3f), TOBN(0xd67d2e35, 0x2eae7c2b), - TOBN(0x184de7d7, 0xcc5f4394), TOBN(0xb5551b5c, 0x4536e142), - TOBN(0x2e89b212, 0xd34aa60a), TOBN(0x14a96fea, 0xf50051d5), - TOBN(0x4e21ef74, 0x0d12bb0b), TOBN(0xc522f020, 0x60b9677e), - TOBN(0x8b12e467, 0x2df7731d), TOBN(0x39f80382, 0x7b326d31), - TOBN(0xdfb8630c, 0x39024a94), TOBN(0xaacb96a8, 0x97319452), - TOBN(0xd68a3961, 0xeda3867c), TOBN(0x0c58e2b0, 0x77c4ffca), - TOBN(0x3d545d63, 0x4da919fa), TOBN(0xef79b69a, 0xf15e2289), - TOBN(0x54bc3d3d, 0x808bab10), TOBN(0xc8ab3007, 0x45f82c37), - TOBN(0xc12738b6, 0x7c4a658a), TOBN(0xb3c47639, 0x40e72182), - TOBN(0x3b77be46, 0x8798e44f), TOBN(0xdc047df2, 0x17a7f85f), - TOBN(0x2439d4c5, 0x5e59d92d), TOBN(0xcedca475, 0xe8e64d8d), - TOBN(0xa724cd0d, 0x87ca9b16), TOBN(0x35e4fd59, 0xa5540dfe), - TOBN(0xf8c1ff18, 0xe4bcf6b1), TOBN(0x856d6285, 0x295018fa), - TOBN(0x433f665c, 0x3263c949), TOBN(0xa6a76dd6, 0xa1f21409), - TOBN(0x17d32334, 0xcc7b4f79), TOBN(0xa1d03122, 0x06720e4a), - TOBN(0xadb6661d, 0x81d9bed5), TOBN(0xf0d6fb02, 0x11db15d1), - TOBN(0x7fd11ad5, 0x1fb747d2), TOBN(0xab50f959, 0x3033762b), - TOBN(0x2a7e711b, 0xfbefaf5a), TOBN(0xc7393278, 0x3fef2bbf), - TOBN(0xe29fa244, 0x0df6f9be), TOBN(0x9092757b, 0x71efd215), - TOBN(0xee60e311, 0x4f3d6fd9), TOBN(0x338542d4, 0x0acfb78b), - TOBN(0x44a23f08, 0x38961a0f), TOBN(0x1426eade, 0x986987ca), - TOBN(0x36e6ee2e, 0x4a863cc6), TOBN(0x48059420, 0x628b8b79), - TOBN(0x30303ad8, 0x7396e1de), TOBN(0x5c8bdc48, 0x38c5aad1), - TOBN(0x3e40e11f, 0x5c8f5066), TOBN(0xabd6e768, 0x8d246bbd), - TOBN(0x68aa40bb, 0x23330a01), TOBN(0xd23f5ee4, 0xc34eafa0), - TOBN(0x3bbee315, 0x5de02c21), TOBN(0x18dd4397, 0xd1d8dd06), - TOBN(0x3ba1939a, 0x122d7b44), TOBN(0xe6d3b40a, 0xa33870d6), - TOBN(0x8e620f70, 0x1c4fe3f8), TOBN(0xf6bba1a5, 0xd3a50cbf), - TOBN(0x4a78bde5, 0xcfc0aee0), TOBN(0x847edc46, 0xc08c50bd), - TOBN(0xbaa2439c, 0xad63c9b2), TOBN(0xceb4a728, 0x10fc2acb), - TOBN(0xa419e40e, 0x26da033d), TOBN(0x6cc3889d, 0x03e02683), - TOBN(0x1cd28559, 0xfdccf725), TOBN(0x0fd7e0f1, 0x8d13d208), - TOBN(0x01b9733b, 0x1f0df9d4), TOBN(0x8cc2c5f3, 0xa2b5e4f3), - TOBN(0x43053bfa, 0x3a304fd4), TOBN(0x8e87665c, 0x0a9f1aa7), - TOBN(0x087f29ec, 0xd73dc965), TOBN(0x15ace455, 0x3e9023db), - TOBN(0x2370e309, 0x2bce28b4), TOBN(0xf9723442, 0xb6b1e84a), - TOBN(0xbeee662e, 0xb72d9f26), TOBN(0xb19396de, 0xf0e47109), - TOBN(0x85b1fa73, 0xe13289d0), TOBN(0x436cf77e, 0x54e58e32), - TOBN(0x0ec833b3, 0xe990ef77), TOBN(0x7373e3ed, 0x1b11fc25), - TOBN(0xbe0eda87, 0x0fc332ce), TOBN(0xced04970, 0x8d7ea856), - TOBN(0xf85ff785, 0x7e977ca0), TOBN(0xb66ee8da, 0xdfdd5d2b), - TOBN(0xf5e37950, 0x905af461), TOBN(0x587b9090, 0x966d487c), - TOBN(0x6a198a1b, 0x32ba0127), TOBN(0xa7720e07, 0x141615ac), - TOBN(0xa23f3499, 0x996ef2f2), TOBN(0xef5f64b4, 0x470bcb3d), - TOBN(0xa526a962, 0x92b8c559), TOBN(0x0c14aac0, 0x69740a0f), - TOBN(0x0d41a9e3, 0xa6bdc0a5), TOBN(0x97d52106, 0x9c48aef4), - TOBN(0xcf16bd30, 0x3e7c253b), TOBN(0xcc834b1a, 0x47fdedc1), - TOBN(0x7362c6e5, 0x373aab2e), TOBN(0x264ed85e, 0xc5f590ff), - TOBN(0x7a46d9c0, 0x66d41870), TOBN(0xa50c20b1, 0x4787ba09), - TOBN(0x185e7e51, 0xe3d44635), TOBN(0xb3b3e080, 0x31e2d8dc), - TOBN(0xbed1e558, 0xa179e9d9), TOBN(0x2daa3f79, 0x74a76781), - TOBN(0x4372baf2, 0x3a40864f), TOBN(0x46900c54, 0x4fe75cb5), - TOBN(0xb95f171e, 0xf76765d0), TOBN(0x4ad726d2, 0x95c87502), - TOBN(0x2ec769da, 0x4d7c99bd), TOBN(0x5e2ddd19, 0xc36cdfa8), - TOBN(0xc22117fc, 0xa93e6dea), TOBN(0xe8a2583b, 0x93771123), - TOBN(0xbe2f6089, 0xfa08a3a2), TOBN(0x4809d5ed, 0x8f0e1112), - TOBN(0x3b414aa3, 0xda7a095e), TOBN(0x9049acf1, 0x26f5aadd), - TOBN(0x78d46a4d, 0x6be8b84a), TOBN(0xd66b1963, 0xb732b9b3), - TOBN(0x5c2ac2a0, 0xde6e9555), TOBN(0xcf52d098, 0xb5bd8770), - TOBN(0x15a15fa6, 0x0fd28921), TOBN(0x56ccb81e, 0x8b27536d), - TOBN(0x0f0d8ab8, 0x9f4ccbb8), TOBN(0xed5f44d2, 0xdb221729), - TOBN(0x43141988, 0x00bed10c), TOBN(0xc94348a4, 0x1d735b8b), - TOBN(0x79f3e9c4, 0x29ef8479), TOBN(0x4c13a4e3, 0x614c693f), - TOBN(0x32c9af56, 0x8e143a14), TOBN(0xbc517799, 0xe29ac5c4), - TOBN(0x05e17992, 0x2774856f), TOBN(0x6e52fb05, 0x6c1bf55f), - TOBN(0xaeda4225, 0xe4f19e16), TOBN(0x70f4728a, 0xaf5ccb26), - TOBN(0x5d2118d1, 0xb2947f22), TOBN(0xc827ea16, 0x281d6fb9), - TOBN(0x8412328d, 0x8cf0eabd), TOBN(0x45ee9fb2, 0x03ef9dcf), - TOBN(0x8e700421, 0xbb937d63), TOBN(0xdf8ff2d5, 0xcc4b37a6), - TOBN(0xa4c0d5b2, 0x5ced7b68), TOBN(0x6537c1ef, 0xc7308f59), - TOBN(0x25ce6a26, 0x3b37f8e8), TOBN(0x170e9a9b, 0xdeebc6ce), - TOBN(0xdd037952, 0x8728d72c), TOBN(0x445b0e55, 0x850154bc), - TOBN(0x4b7d0e06, 0x83a7337b), TOBN(0x1e3416d4, 0xffecf249), - TOBN(0x24840eff, 0x66a2b71f), TOBN(0xd0d9a50a, 0xb37cc26d), - TOBN(0xe2198150, 0x6fe28ef7), TOBN(0x3cc5ef16, 0x23324c7f), - TOBN(0x220f3455, 0x769b5263), TOBN(0xe2ade2f1, 0xa10bf475), - TOBN(0x28cd20fa, 0x458d3671), TOBN(0x1549722c, 0x2dc4847b), - TOBN(0x6dd01e55, 0x591941e3), TOBN(0x0e6fbcea, 0x27128ccb), - TOBN(0xae1a1e6b, 0x3bef0262), TOBN(0xfa8c472c, 0x8f54e103), - TOBN(0x7539c0a8, 0x72c052ec), TOBN(0xd7b27369, 0x5a3490e9), - TOBN(0x143fe1f1, 0x71684349), TOBN(0x36b4722e, 0x32e19b97), - TOBN(0xdc059227, 0x90980aff), TOBN(0x175c9c88, 0x9e13d674), - TOBN(0xa7de5b22, 0x6e6bfdb1), TOBN(0x5ea5b7b2, 0xbedb4b46), - TOBN(0xd5570191, 0xd34a6e44), TOBN(0xfcf60d2e, 0xa24ff7e6), - TOBN(0x614a392d, 0x677819e1), TOBN(0x7be74c7e, 0xaa5a29e8), - TOBN(0xab50fece, 0x63c85f3f), TOBN(0xaca2e2a9, 0x46cab337), - TOBN(0x7f700388, 0x122a6fe3), TOBN(0xdb69f703, 0x882a04a8), - TOBN(0x9a77935d, 0xcf7aed57), TOBN(0xdf16207c, 0x8d91c86f), - TOBN(0x2fca49ab, 0x63ed9998), TOBN(0xa3125c44, 0xa77ddf96), - TOBN(0x05dd8a86, 0x24344072), TOBN(0xa023dda2, 0xfec3fb56), - TOBN(0x421b41fc, 0x0c743032), TOBN(0x4f2120c1, 0x5e438639), - TOBN(0xfb7cae51, 0xc83c1b07), TOBN(0xb2370caa, 0xcac2171a), - TOBN(0x2eb2d962, 0x6cc820fb), TOBN(0x59feee5c, 0xb85a44bf), - TOBN(0x94620fca, 0x5b6598f0), TOBN(0x6b922cae, 0x7e314051), - TOBN(0xff8745ad, 0x106bed4e), TOBN(0x546e71f5, 0xdfa1e9ab), - TOBN(0x935c1e48, 0x1ec29487), TOBN(0x9509216c, 0x4d936530), - TOBN(0xc7ca3067, 0x85c9a2db), TOBN(0xd6ae5152, 0x6be8606f), - TOBN(0x09dbcae6, 0xe14c651d), TOBN(0xc9536e23, 0x9bc32f96), - TOBN(0xa90535a9, 0x34521b03), TOBN(0xf39c526c, 0x878756ff), - TOBN(0x383172ec, 0x8aedf03c), TOBN(0x20a8075e, 0xefe0c034), - TOBN(0xf22f9c62, 0x64026422), TOBN(0x8dd10780, 0x24b9d076), - TOBN(0x944c742a, 0x3bef2950), TOBN(0x55b9502e, 0x88a2b00b), - TOBN(0xa59e14b4, 0x86a09817), TOBN(0xa39dd3ac, 0x47bb4071), - TOBN(0x55137f66, 0x3be0592f), TOBN(0x07fcafd4, 0xc9e63f5b), - TOBN(0x963652ee, 0x346eb226), TOBN(0x7dfab085, 0xec2facb7), - TOBN(0x273bf2b8, 0x691add26), TOBN(0x30d74540, 0xf2b46c44), - TOBN(0x05e8e73e, 0xf2c2d065), TOBN(0xff9b8a00, 0xd42eeac9), - TOBN(0x2fcbd205, 0x97209d22), TOBN(0xeb740ffa, 0xde14ea2c), - TOBN(0xc71ff913, 0xa8aef518), TOBN(0x7bfc74bb, 0xfff4cfa2), - TOBN(0x1716680c, 0xb6b36048), TOBN(0x121b2cce, 0x9ef79af1), - TOBN(0xbff3c836, 0xa01eb3d3), TOBN(0x50eb1c6a, 0x5f79077b), - TOBN(0xa48c32d6, 0xa004bbcf), TOBN(0x47a59316, 0x7d64f61d), - TOBN(0x6068147f, 0x93102016), TOBN(0x12c5f654, 0x94d12576), - TOBN(0xefb071a7, 0xc9bc6b91), TOBN(0x7c2da0c5, 0x6e23ea95), - TOBN(0xf4fd45b6, 0xd4a1dd5d), TOBN(0x3e7ad9b6, 0x9122b13c), - TOBN(0x342ca118, 0xe6f57a48), TOBN(0x1c2e94a7, 0x06f8288f), - TOBN(0x99e68f07, 0x5a97d231), TOBN(0x7c80de97, 0x4d838758), - TOBN(0xbce0f5d0, 0x05872727), TOBN(0xbe5d95c2, 0x19c4d016), - TOBN(0x921d5cb1, 0x9c2492ee), TOBN(0x42192dc1, 0x404d6fb3), - TOBN(0x4c84dcd1, 0x32f988d3), TOBN(0xde26d61f, 0xa17b8e85), - TOBN(0xc466dcb6, 0x137c7408), TOBN(0x9a38d7b6, 0x36a266da), - TOBN(0x7ef5cb06, 0x83bebf1b), TOBN(0xe5cdcbbf, 0x0fd014e3), - TOBN(0x30aa376d, 0xf65965a0), TOBN(0x60fe88c2, 0xebb3e95e), - TOBN(0x33fd0b61, 0x66ee6f20), TOBN(0x8827dcdb, 0x3f41f0a0), - TOBN(0xbf8a9d24, 0x0c56c690), TOBN(0x40265dad, 0xddb7641d), - TOBN(0x522b05bf, 0x3a6b662b), TOBN(0x466d1dfe, 0xb1478c9b), - TOBN(0xaa616962, 0x1484469b), TOBN(0x0db60549, 0x02df8f9f), - TOBN(0xc37bca02, 0x3cb8bf51), TOBN(0x5effe346, 0x21371ce8), - TOBN(0xe8f65264, 0xff112c32), TOBN(0x8a9c736d, 0x7b971fb2), - TOBN(0xa4f19470, 0x7b75080d), TOBN(0xfc3f2c5a, 0x8839c59b), - TOBN(0x1d6c777e, 0x5aeb49c2), TOBN(0xf3db034d, 0xda1addfe), - TOBN(0xd76fee5a, 0x5535affc), TOBN(0x0853ac70, 0xb92251fd), - TOBN(0x37e3d594, 0x8b2a29d5), TOBN(0x28f1f457, 0x4de00ddb), - TOBN(0x8083c1b5, 0xf42c328b), TOBN(0xd8ef1d8f, 0xe493c73b), - TOBN(0x96fb6260, 0x41dc61bd), TOBN(0xf74e8a9d, 0x27ee2f8a), - TOBN(0x7c605a80, 0x2c946a5d), TOBN(0xeed48d65, 0x3839ccfd), - TOBN(0x9894344f, 0x3a29467a), TOBN(0xde81e949, 0xc51eba6d), - TOBN(0xdaea066b, 0xa5e5c2f2), TOBN(0x3fc8a614, 0x08c8c7b3), - TOBN(0x7adff88f, 0x06d0de9f), TOBN(0xbbc11cf5, 0x3b75ce0a), - TOBN(0x9fbb7acc, 0xfbbc87d5), TOBN(0xa1458e26, 0x7badfde2)}, - {TOBN(0x1cb43668, 0xe039c256), TOBN(0x5f26fb8b, 0x7c17fd5d), - TOBN(0xeee426af, 0x79aa062b), TOBN(0x072002d0, 0xd78fbf04), - TOBN(0x4c9ca237, 0xe84fb7e3), TOBN(0xb401d8a1, 0x0c82133d), - TOBN(0xaaa52592, 0x6d7e4181), TOBN(0xe9430833, 0x73dbb152), - TOBN(0xf92dda31, 0xbe24319a), TOBN(0x03f7d28b, 0xe095a8e7), - TOBN(0xa52fe840, 0x98782185), TOBN(0x276ddafe, 0x29c24dbc), - TOBN(0x80cd5496, 0x1d7a64eb), TOBN(0xe4360889, 0x7f1dbe42), - TOBN(0x2f81a877, 0x8438d2d5), TOBN(0x7e4d52a8, 0x85169036), - TOBN(0x19e3d5b1, 0x1d59715d), TOBN(0xc7eaa762, 0xd788983e), - TOBN(0xe5a730b0, 0xabf1f248), TOBN(0xfbab8084, 0xfae3fd83), - TOBN(0x65e50d21, 0x53765b2f), TOBN(0xbdd4e083, 0xfa127f3d), - TOBN(0x9cf3c074, 0x397b1b10), TOBN(0x59f8090c, 0xb1b59fd3), - TOBN(0x7b15fd9d, 0x615faa8f), TOBN(0x8fa1eb40, 0x968554ed), - TOBN(0x7bb4447e, 0x7aa44882), TOBN(0x2bb2d0d1, 0x029fff32), - TOBN(0x075e2a64, 0x6caa6d2f), TOBN(0x8eb879de, 0x22e7351b), - TOBN(0xbcd5624e, 0x9a506c62), TOBN(0x218eaef0, 0xa87e24dc), - TOBN(0x37e56847, 0x44ddfa35), TOBN(0x9ccfc5c5, 0xdab3f747), - TOBN(0x9ac1df3f, 0x1ee96cf4), TOBN(0x0c0571a1, 0x3b480b8f), - TOBN(0x2fbeb3d5, 0x4b3a7b3c), TOBN(0x35c03669, 0x5dcdbb99), - TOBN(0x52a0f5dc, 0xb2415b3a), TOBN(0xd57759b4, 0x4413ed9a), - TOBN(0x1fe647d8, 0x3d30a2c5), TOBN(0x0857f77e, 0xf78a81dc), - TOBN(0x11d5a334, 0x131a4a9b), TOBN(0xc0a94af9, 0x29d393f5), - TOBN(0xbc3a5c0b, 0xdaa6ec1a), TOBN(0xba9fe493, 0x88d2d7ed), - TOBN(0xbb4335b4, 0xbb614797), TOBN(0x991c4d68, 0x72f83533), - TOBN(0x53258c28, 0xd2f01cb3), TOBN(0x93d6eaa3, 0xd75db0b1), - TOBN(0x419a2b0d, 0xe87d0db4), TOBN(0xa1e48f03, 0xd8fe8493), - TOBN(0xf747faf6, 0xc508b23a), TOBN(0xf137571a, 0x35d53549), - TOBN(0x9f5e58e2, 0xfcf9b838), TOBN(0xc7186cee, 0xa7fd3cf5), - TOBN(0x77b868ce, 0xe978a1d3), TOBN(0xe3a68b33, 0x7ab92d04), - TOBN(0x51029794, 0x87a5b862), TOBN(0x5f0606c3, 0x3a61d41d), - TOBN(0x2814be27, 0x6f9326f1), TOBN(0x2f521c14, 0xc6fe3c2e), - TOBN(0x17464d7d, 0xacdf7351), TOBN(0x10f5f9d3, 0x777f7e44), - TOBN(0xce8e616b, 0x269fb37d), TOBN(0xaaf73804, 0x7de62de5), - TOBN(0xaba11175, 0x4fdd4153), TOBN(0x515759ba, 0x3770b49b), - TOBN(0x8b09ebf8, 0xaa423a61), TOBN(0x592245a1, 0xcd41fb92), - TOBN(0x1cba8ec1, 0x9b4c8936), TOBN(0xa87e91e3, 0xaf36710e), - TOBN(0x1fd84ce4, 0x3d34a2e3), TOBN(0xee3759ce, 0xb43b5d61), - TOBN(0x895bc78c, 0x619186c7), TOBN(0xf19c3809, 0xcbb9725a), - TOBN(0xc0be21aa, 0xde744b1f), TOBN(0xa7d222b0, 0x60f8056b), - TOBN(0x74be6157, 0xb23efe11), TOBN(0x6fab2b4f, 0x0cd68253), - TOBN(0xad33ea5f, 0x4bf1d725), TOBN(0x9c1d8ee2, 0x4f6c950f), - TOBN(0x544ee78a, 0xa377af06), TOBN(0x54f489bb, 0x94a113e1), - TOBN(0x8f11d634, 0x992fb7e8), TOBN(0x0169a7aa, 0xa2a44347), - TOBN(0x1d49d4af, 0x95020e00), TOBN(0x95945722, 0xe08e120b), - TOBN(0xb6e33878, 0xa4d32282), TOBN(0xe36e029d, 0x48020ae7), - TOBN(0xe05847fb, 0x37a9b750), TOBN(0xf876812c, 0xb29e3819), - TOBN(0x84ad138e, 0xd23a17f0), TOBN(0x6d7b4480, 0xf0b3950e), - TOBN(0xdfa8aef4, 0x2fd67ae0), TOBN(0x8d3eea24, 0x52333af6), - TOBN(0x0d052075, 0xb15d5acc), TOBN(0xc6d9c79f, 0xbd815bc4), - TOBN(0x8dcafd88, 0xdfa36cf2), TOBN(0x908ccbe2, 0x38aa9070), - TOBN(0x638722c4, 0xba35afce), TOBN(0x5a3da8b0, 0xfd6abf0b), - TOBN(0x2dce252c, 0xc9c335c1), TOBN(0x84e7f0de, 0x65aa799b), - TOBN(0x2101a522, 0xb99a72cb), TOBN(0x06de6e67, 0x87618016), - TOBN(0x5ff8c7cd, 0xe6f3653e), TOBN(0x0a821ab5, 0xc7a6754a), - TOBN(0x7e3fa52b, 0x7cb0b5a2), TOBN(0xa7fb121c, 0xc9048790), - TOBN(0x1a725020, 0x06ce053a), TOBN(0xb490a31f, 0x04e929b0), - TOBN(0xe17be47d, 0x62dd61ad), TOBN(0x781a961c, 0x6be01371), - TOBN(0x1063bfd3, 0xdae3cbba), TOBN(0x35647406, 0x7f73c9ba), - TOBN(0xf50e957b, 0x2736a129), TOBN(0xa6313702, 0xed13f256), - TOBN(0x9436ee65, 0x3a19fcc5), TOBN(0xcf2bdb29, 0xe7a4c8b6), - TOBN(0xb06b1244, 0xc5f95cd8), TOBN(0xda8c8af0, 0xf4ab95f4), - TOBN(0x1bae59c2, 0xb9e5836d), TOBN(0x07d51e7e, 0x3acffffc), - TOBN(0x01e15e6a, 0xc2ccbcda), TOBN(0x3bc1923f, 0x8528c3e0), - TOBN(0x43324577, 0xa49fead4), TOBN(0x61a1b884, 0x2aa7a711), - TOBN(0xf9a86e08, 0x700230ef), TOBN(0x0af585a1, 0xbd19adf8), - TOBN(0x7645f361, 0xf55ad8f2), TOBN(0x6e676223, 0x46c3614c), - TOBN(0x23cb257c, 0x4e774d3f), TOBN(0x82a38513, 0xac102d1b), - TOBN(0x9bcddd88, 0x7b126aa5), TOBN(0xe716998b, 0xeefd3ee4), - TOBN(0x4239d571, 0xfb167583), TOBN(0xdd011c78, 0xd16c8f8a), - TOBN(0x271c2895, 0x69a27519), TOBN(0x9ce0a3b7, 0xd2d64b6a), - TOBN(0x8c977289, 0xd5ec6738), TOBN(0xa3b49f9a, 0x8840ef6b), - TOBN(0x808c14c9, 0x9a453419), TOBN(0x5c00295b, 0x0cf0a2d5), - TOBN(0x524414fb, 0x1d4bcc76), TOBN(0xb07691d2, 0x459a88f1), - TOBN(0x77f43263, 0xf70d110f), TOBN(0x64ada5e0, 0xb7abf9f3), - TOBN(0xafd0f94e, 0x5b544cf5), TOBN(0xb4a13a15, 0xfd2713fe), - TOBN(0xb99b7d6e, 0x250c74f4), TOBN(0x097f2f73, 0x20324e45), - TOBN(0x994b37d8, 0xaffa8208), TOBN(0xc3c31b0b, 0xdc29aafc), - TOBN(0x3da74651, 0x7a3a607f), TOBN(0xd8e1b8c1, 0xfe6955d6), - TOBN(0x716e1815, 0xc8418682), TOBN(0x541d487f, 0x7dc91d97), - TOBN(0x48a04669, 0xc6996982), TOBN(0xf39cab15, 0x83a6502e), - TOBN(0x025801a0, 0xe68db055), TOBN(0xf3569758, 0xba3338d5), - TOBN(0xb0c8c0aa, 0xee2afa84), TOBN(0x4f6985d3, 0xfb6562d1), - TOBN(0x351f1f15, 0x132ed17a), TOBN(0x510ed0b4, 0xc04365fe), - TOBN(0xa3f98138, 0xe5b1f066), TOBN(0xbc9d95d6, 0x32df03dc), - TOBN(0xa83ccf6e, 0x19abd09e), TOBN(0x0b4097c1, 0x4ff17edb), - TOBN(0x58a5c478, 0xd64a06ce), TOBN(0x2ddcc3fd, 0x544a58fd), - TOBN(0xd449503d, 0x9e8153b8), TOBN(0x3324fd02, 0x7774179b), - TOBN(0xaf5d47c8, 0xdbd9120c), TOBN(0xeb860162, 0x34fa94db), - TOBN(0x5817bdd1, 0x972f07f4), TOBN(0xe5579e2e, 0xd27bbceb), - TOBN(0x86847a1f, 0x5f11e5a6), TOBN(0xb39ed255, 0x7c3cf048), - TOBN(0xe1076417, 0xa2f62e55), TOBN(0x6b9ab38f, 0x1bcf82a2), - TOBN(0x4bb7c319, 0x7aeb29f9), TOBN(0xf6d17da3, 0x17227a46), - TOBN(0xab53ddbd, 0x0f968c00), TOBN(0xa03da7ec, 0x000c880b), - TOBN(0x7b239624, 0x6a9ad24d), TOBN(0x612c0401, 0x01ec60d0), - TOBN(0x70d10493, 0x109f5df1), TOBN(0xfbda4030, 0x80af7550), - TOBN(0x30b93f95, 0xc6b9a9b3), TOBN(0x0c74ec71, 0x007d9418), - TOBN(0x94175564, 0x6edb951f), TOBN(0x5f4a9d78, 0x7f22c282), - TOBN(0xb7870895, 0xb38d1196), TOBN(0xbc593df3, 0xa228ce7c), - TOBN(0xc78c5bd4, 0x6af3641a), TOBN(0x7802200b, 0x3d9b3dcc), - TOBN(0x0dc73f32, 0x8be33304), TOBN(0x847ed87d, 0x61ffb79a), - TOBN(0xf85c974e, 0x6d671192), TOBN(0x1e14100a, 0xde16f60f), - TOBN(0x45cb0d5a, 0x95c38797), TOBN(0x18923bba, 0x9b022da4), - TOBN(0xef2be899, 0xbbe7e86e), TOBN(0x4a1510ee, 0x216067bf), - TOBN(0xd98c8154, 0x84d5ce3e), TOBN(0x1af777f0, 0xf92a2b90), - TOBN(0x9fbcb400, 0x4ef65724), TOBN(0x3e04a4c9, 0x3c0ca6fe), - TOBN(0xfb3e2cb5, 0x55002994), TOBN(0x1f3a93c5, 0x5363ecab), - TOBN(0x1fe00efe, 0x3923555b), TOBN(0x744bedd9, 0x1e1751ea), - TOBN(0x3fb2db59, 0x6ab69357), TOBN(0x8dbd7365, 0xf5e6618b), - TOBN(0x99d53099, 0xdf1ea40e), TOBN(0xb3f24a0b, 0x57d61e64), - TOBN(0xd088a198, 0x596eb812), TOBN(0x22c8361b, 0x5762940b), - TOBN(0x66f01f97, 0xf9c0d95c), TOBN(0x88461172, 0x8e43cdae), - TOBN(0x11599a7f, 0xb72b15c3), TOBN(0x135a7536, 0x420d95cc), - TOBN(0x2dcdf0f7, 0x5f7ae2f6), TOBN(0x15fc6e1d, 0xd7fa6da2), - TOBN(0x81ca829a, 0xd1d441b6), TOBN(0x84c10cf8, 0x04a106b6), - TOBN(0xa9b26c95, 0xa73fbbd0), TOBN(0x7f24e0cb, 0x4d8f6ee8), - TOBN(0x48b45937, 0x1e25a043), TOBN(0xf8a74fca, 0x036f3dfe), - TOBN(0x1ed46585, 0xc9f84296), TOBN(0x7fbaa8fb, 0x3bc278b0), - TOBN(0xa8e96cd4, 0x6c4fcbd0), TOBN(0x940a1202, 0x73b60a5f), - TOBN(0x34aae120, 0x55a4aec8), TOBN(0x550e9a74, 0xdbd742f0), - TOBN(0x794456d7, 0x228c68ab), TOBN(0x492f8868, 0xa4e25ec6), - TOBN(0x682915ad, 0xb2d8f398), TOBN(0xf13b51cc, 0x5b84c953), - TOBN(0xcda90ab8, 0x5bb917d6), TOBN(0x4b615560, 0x4ea3dee1), - TOBN(0x578b4e85, 0x0a52c1c8), TOBN(0xeab1a695, 0x20b75fc4), - TOBN(0x60c14f3c, 0xaa0bb3c6), TOBN(0x220f448a, 0xb8216094), - TOBN(0x4fe7ee31, 0xb0e63d34), TOBN(0xf4600572, 0xa9e54fab), - TOBN(0xc0493334, 0xd5e7b5a4), TOBN(0x8589fb92, 0x06d54831), - TOBN(0xaa70f5cc, 0x6583553a), TOBN(0x0879094a, 0xe25649e5), - TOBN(0xcc904507, 0x10044652), TOBN(0xebb0696d, 0x02541c4f), - TOBN(0x5a171fde, 0xb9718710), TOBN(0x38f1bed8, 0xf374a9f5), - TOBN(0xc8c582e1, 0xba39bdc1), TOBN(0xfc457b0a, 0x908cc0ce), - TOBN(0x9a187fd4, 0x883841e2), TOBN(0x8ec25b39, 0x38725381), - TOBN(0x2553ed05, 0x96f84395), TOBN(0x095c7661, 0x6f6c6897), - TOBN(0x917ac85c, 0x4bdc5610), TOBN(0xb2885fe4, 0x179eb301), - TOBN(0x5fc65547, 0x8b78bdcc), TOBN(0x4a9fc893, 0xe59e4699), - TOBN(0xbb7ff0cd, 0x3ce299af), TOBN(0x195be9b3, 0xadf38b20), - TOBN(0x6a929c87, 0xd38ddb8f), TOBN(0x55fcc99c, 0xb21a51b9), - TOBN(0x2b695b4c, 0x721a4593), TOBN(0xed1e9a15, 0x768eaac2), - TOBN(0xfb63d71c, 0x7489f914), TOBN(0xf98ba31c, 0x78118910), - TOBN(0x80291373, 0x9b128eb4), TOBN(0x7801214e, 0xd448af4a), - TOBN(0xdbd2e22b, 0x55418dd3), TOBN(0xeffb3c0d, 0xd3998242), - TOBN(0xdfa6077c, 0xc7bf3827), TOBN(0xf2165bcb, 0x47f8238f), - TOBN(0xfe37cf68, 0x8564d554), TOBN(0xe5f825c4, 0x0a81fb98), - TOBN(0x43cc4f67, 0xffed4d6f), TOBN(0xbc609578, 0xb50a34b0), - TOBN(0x8aa8fcf9, 0x5041faf1), TOBN(0x5659f053, 0x651773b6), - TOBN(0xe87582c3, 0x6044d63b), TOBN(0xa6089409, 0x0cdb0ca0), - TOBN(0x8c993e0f, 0xbfb2bcf6), TOBN(0xfc64a719, 0x45985cfc), - TOBN(0x15c4da80, 0x83dbedba), TOBN(0x804ae112, 0x2be67df7), - TOBN(0xda4c9658, 0xa23defde), TOBN(0x12002ddd, 0x5156e0d3), - TOBN(0xe68eae89, 0x5dd21b96), TOBN(0x8b99f28b, 0xcf44624d), - TOBN(0x0ae00808, 0x1ec8897a), TOBN(0xdd0a9303, 0x6712f76e), - TOBN(0x96237522, 0x4e233de4), TOBN(0x192445b1, 0x2b36a8a5), - TOBN(0xabf9ff74, 0x023993d9), TOBN(0x21f37bf4, 0x2aad4a8f), - TOBN(0x340a4349, 0xf8bd2bbd), TOBN(0x1d902cd9, 0x4868195d), - TOBN(0x3d27bbf1, 0xe5fdb6f1), TOBN(0x7a5ab088, 0x124f9f1c), - TOBN(0xc466ab06, 0xf7a09e03), TOBN(0x2f8a1977, 0x31f2c123), - TOBN(0xda355dc7, 0x041b6657), TOBN(0xcb840d12, 0x8ece2a7c), - TOBN(0xb600ad9f, 0x7db32675), TOBN(0x78fea133, 0x07a06f1b), - TOBN(0x5d032269, 0xb31f6094), TOBN(0x07753ef5, 0x83ec37aa), - TOBN(0x03485aed, 0x9c0bea78), TOBN(0x41bb3989, 0xbc3f4524), - TOBN(0x09403761, 0x697f726d), TOBN(0x6109beb3, 0xdf394820), - TOBN(0x804111ea, 0x3b6d1145), TOBN(0xb6271ea9, 0xa8582654), - TOBN(0x619615e6, 0x24e66562), TOBN(0xa2554945, 0xd7b6ad9c), - TOBN(0xd9c4985e, 0x99bfe35f), TOBN(0x9770ccc0, 0x7b51cdf6), - TOBN(0x7c327013, 0x92881832), TOBN(0x8777d45f, 0x286b26d1), - TOBN(0x9bbeda22, 0xd847999d), TOBN(0x03aa33b6, 0xc3525d32), - TOBN(0x4b7b96d4, 0x28a959a1), TOBN(0xbb3786e5, 0x31e5d234), - TOBN(0xaeb5d3ce, 0x6961f247), TOBN(0x20aa85af, 0x02f93d3f), - TOBN(0x9cd1ad3d, 0xd7a7ae4f), TOBN(0xbf6688f0, 0x781adaa8), - TOBN(0xb1b40e86, 0x7469cead), TOBN(0x1904c524, 0x309fca48), - TOBN(0x9b7312af, 0x4b54bbc7), TOBN(0xbe24bf8f, 0x593affa2), - TOBN(0xbe5e0790, 0xbd98764b), TOBN(0xa0f45f17, 0xa26e299e), - TOBN(0x4af0d2c2, 0x6b8fe4c7), TOBN(0xef170db1, 0x8ae8a3e6), - TOBN(0x0e8d61a0, 0x29e0ccc1), TOBN(0xcd53e87e, 0x60ad36ca), - TOBN(0x328c6623, 0xc8173822), TOBN(0x7ee1767d, 0xa496be55), - TOBN(0x89f13259, 0x648945af), TOBN(0x9e45a5fd, 0x25c8009c), - TOBN(0xaf2febd9, 0x1f61ab8c), TOBN(0x43f6bc86, 0x8a275385), - TOBN(0x87792348, 0xf2142e79), TOBN(0x17d89259, 0xc6e6238a), - TOBN(0x7536d2f6, 0x4a839d9b), TOBN(0x1f428fce, 0x76a1fbdc), - TOBN(0x1c109601, 0x0db06dfe), TOBN(0xbfc16bc1, 0x50a3a3cc), - TOBN(0xf9cbd9ec, 0x9b30f41b), TOBN(0x5b5da0d6, 0x00138cce), - TOBN(0xec1d0a48, 0x56ef96a7), TOBN(0xb47eb848, 0x982bf842), - TOBN(0x66deae32, 0xec3f700d), TOBN(0x4e43c42c, 0xaa1181e0), - TOBN(0xa1d72a31, 0xd1a4aa2a), TOBN(0x440d4668, 0xc004f3ce), - TOBN(0x0d6a2d3b, 0x45fe8a7a), TOBN(0x820e52e2, 0xfb128365), - TOBN(0x29ac5fcf, 0x25e51b09), TOBN(0x180cd2bf, 0x2023d159), - TOBN(0xa9892171, 0xa1ebf90e), TOBN(0xf97c4c87, 0x7c132181), - TOBN(0x9f1dc724, 0xc03dbb7e), TOBN(0xae043765, 0x018cbbe4), - TOBN(0xfb0b2a36, 0x0767d153), TOBN(0xa8e2f4d6, 0x249cbaeb), - TOBN(0x172a5247, 0xd95ea168), TOBN(0x1758fada, 0x2970764a), - TOBN(0xac803a51, 0x1d978169), TOBN(0x299cfe2e, 0xde77e01b), - TOBN(0x652a1e17, 0xb0a98927), TOBN(0x2e26e1d1, 0x20014495), - TOBN(0x7ae0af9f, 0x7175b56a), TOBN(0xc2e22a80, 0xd64b9f95), - TOBN(0x4d0ff9fb, 0xd90a060a), TOBN(0x496a27db, 0xbaf38085), - TOBN(0x32305401, 0xda776bcf), TOBN(0xb8cdcef6, 0x725f209e), - TOBN(0x61ba0f37, 0x436a0bba), TOBN(0x263fa108, 0x76860049), - TOBN(0x92beb98e, 0xda3542cf), TOBN(0xa2d4d14a, 0xd5849538), - TOBN(0x989b9d68, 0x12e9a1bc), TOBN(0x61d9075c, 0x5f6e3268), - TOBN(0x352c6aa9, 0x99ace638), TOBN(0xde4e4a55, 0x920f43ff), - TOBN(0xe5e4144a, 0xd673c017), TOBN(0x667417ae, 0x6f6e05ea), - TOBN(0x613416ae, 0xdcd1bd56), TOBN(0x5eb36201, 0x86693711), - TOBN(0x2d7bc504, 0x3a1aa914), TOBN(0x175a1299, 0x76dc5975), - TOBN(0xe900e0f2, 0x3fc8125c), TOBN(0x569ef68c, 0x11198875), - TOBN(0x9012db63, 0x63a113b4), TOBN(0xe3bd3f56, 0x98835766), - TOBN(0xa5c94a52, 0x76412dea), TOBN(0xad9e2a09, 0xaa735e5c), - TOBN(0x405a984c, 0x508b65e9), TOBN(0xbde4a1d1, 0x6df1a0d1), - TOBN(0x1a9433a1, 0xdfba80da), TOBN(0xe9192ff9, 0x9440ad2e), - TOBN(0x9f649696, 0x5099fe92), TOBN(0x25ddb65c, 0x0b27a54a), - TOBN(0x178279dd, 0xc590da61), TOBN(0x5479a999, 0xfbde681a), - TOBN(0xd0e84e05, 0x013fe162), TOBN(0xbe11dc92, 0x632d471b), - TOBN(0xdf0b0c45, 0xfc0e089f), TOBN(0x04fb15b0, 0x4c144025), - TOBN(0xa61d5fc2, 0x13c99927), TOBN(0xa033e9e0, 0x3de2eb35), - TOBN(0xf8185d5c, 0xb8dacbb4), TOBN(0x9a88e265, 0x8644549d), - TOBN(0xf717af62, 0x54671ff6), TOBN(0x4bd4241b, 0x5fa58603), - TOBN(0x06fba40b, 0xe67773c0), TOBN(0xc1d933d2, 0x6a2847e9), - TOBN(0xf4f5acf3, 0x689e2c70), TOBN(0x92aab0e7, 0x46bafd31), - TOBN(0x798d76aa, 0x3473f6e5), TOBN(0xcc6641db, 0x93141934), - TOBN(0xcae27757, 0xd31e535e), TOBN(0x04cc43b6, 0x87c2ee11), - TOBN(0x8d1f9675, 0x2e029ffa), TOBN(0xc2150672, 0xe4cc7a2c), - TOBN(0x3b03c1e0, 0x8d68b013), TOBN(0xa9d6816f, 0xedf298f3), - TOBN(0x1bfbb529, 0xa2804464), TOBN(0x95a52fae, 0x5db22125), - TOBN(0x55b32160, 0x0e1cb64e), TOBN(0x004828f6, 0x7e7fc9fe), - TOBN(0x13394b82, 0x1bb0fb93), TOBN(0xb6293a2d, 0x35f1a920), - TOBN(0xde35ef21, 0xd145d2d9), TOBN(0xbe6225b3, 0xbb8fa603), - TOBN(0x00fc8f6b, 0x32cf252d), TOBN(0xa28e52e6, 0x117cf8c2), - TOBN(0x9d1dc89b, 0x4c371e6d), TOBN(0xcebe0675, 0x36ef0f28), - TOBN(0x5de05d09, 0xa4292f81), TOBN(0xa8303593, 0x353e3083), - TOBN(0xa1715b0a, 0x7e37a9bb), TOBN(0x8c56f61e, 0x2b8faec3), - TOBN(0x52507431, 0x33c9b102), TOBN(0x0130cefc, 0xa44431f0), - TOBN(0x56039fa0, 0xbd865cfb), TOBN(0x4b03e578, 0xbc5f1dd7), - TOBN(0x40edf2e4, 0xbabe7224), TOBN(0xc752496d, 0x3a1988f6), - TOBN(0xd1572d3b, 0x564beb6b), TOBN(0x0db1d110, 0x39a1c608), - TOBN(0x568d1934, 0x16f60126), TOBN(0x05ae9668, 0xf354af33), - TOBN(0x19de6d37, 0xc92544f2), TOBN(0xcc084353, 0xa35837d5), - TOBN(0xcbb6869c, 0x1a514ece), TOBN(0xb633e728, 0x2e1d1066), - TOBN(0xf15dd69f, 0x936c581c), TOBN(0x96e7b8ce, 0x7439c4f9), - TOBN(0x5e676f48, 0x2e448a5b), TOBN(0xb2ca7d5b, 0xfd916bbb), - TOBN(0xd55a2541, 0xf5024025), TOBN(0x47bc5769, 0xe4c2d937), - TOBN(0x7d31b92a, 0x0362189f), TOBN(0x83f3086e, 0xef7816f9), - TOBN(0xf9f46d94, 0xb587579a), TOBN(0xec2d22d8, 0x30e76c5f), - TOBN(0x27d57461, 0xb000ffcf), TOBN(0xbb7e65f9, 0x364ffc2c), - TOBN(0x7c7c9477, 0x6652a220), TOBN(0x61618f89, 0xd696c981), - TOBN(0x5021701d, 0x89effff3), TOBN(0xf2c8ff8e, 0x7c314163), - TOBN(0x2da413ad, 0x8efb4d3e), TOBN(0x937b5adf, 0xce176d95), - TOBN(0x22867d34, 0x2a67d51c), TOBN(0x262b9b10, 0x18eb3ac9), - TOBN(0x4e314fe4, 0xc43ff28b), TOBN(0x76476627, 0x6a664e7a), - TOBN(0x3e90e40b, 0xb7a565c2), TOBN(0x8588993a, 0xc1acf831), - TOBN(0xd7b501d6, 0x8f938829), TOBN(0x996627ee, 0x3edd7d4c), - TOBN(0x37d44a62, 0x90cd34c7), TOBN(0xa8327499, 0xf3833e8d), - TOBN(0x2e18917d, 0x4bf50353), TOBN(0x85dd726b, 0x556765fb), - TOBN(0x54fe65d6, 0x93d5ab66), TOBN(0x3ddbaced, 0x915c25fe), - TOBN(0xa799d9a4, 0x12f22e85), TOBN(0xe2a24867, 0x6d06f6bc), - TOBN(0xf4f1ee56, 0x43ca1637), TOBN(0xfda2828b, 0x61ece30a), - TOBN(0x758c1a3e, 0xa2dee7a6), TOBN(0xdcde2f3c, 0x734b2284), - TOBN(0xaba445d2, 0x4eaba6ad), TOBN(0x35aaf668, 0x76cee0a7), - TOBN(0x7e0b04a9, 0xe5aa049a), TOBN(0xe74083ad, 0x91103e84), - TOBN(0xbeb183ce, 0x40afecc3), TOBN(0x6b89de9f, 0xea043f7a)}, - {TOBN(0x0e299d23, 0xfe67ba66), TOBN(0x91450760, 0x93cf2f34), - TOBN(0xf45b5ea9, 0x97fcf913), TOBN(0x5be00843, 0x8bd7ddda), - TOBN(0x358c3e05, 0xd53ff04d), TOBN(0xbf7ccdc3, 0x5de91ef7), - TOBN(0xad684dbf, 0xb69ec1a0), TOBN(0x367e7cf2, 0x801fd997), - TOBN(0x0ca1f3b7, 0xb0dc8595), TOBN(0x27de4608, 0x9f1d9f2e), - TOBN(0x1af3bf39, 0xbadd82a7), TOBN(0x79356a79, 0x65862448), - TOBN(0xc0602345, 0xf5f9a052), TOBN(0x1a8b0f89, 0x139a42f9), - TOBN(0xb53eee42, 0x844d40fc), TOBN(0x93b0bfe5, 0x4e5b6368), - TOBN(0x5434dd02, 0xc024789c), TOBN(0x90dca9ea, 0x41b57bfc), - TOBN(0x8aa898e2, 0x243398df), TOBN(0xf607c834, 0x894a94bb), - TOBN(0xbb07be97, 0xc2c99b76), TOBN(0x6576ba67, 0x18c29302), - TOBN(0x3d79efcc, 0xe703a88c), TOBN(0xf259ced7, 0xb6a0d106), - TOBN(0x0f893a5d, 0xc8de610b), TOBN(0xe8c515fb, 0x67e223ce), - TOBN(0x7774bfa6, 0x4ead6dc5), TOBN(0x89d20f95, 0x925c728f), - TOBN(0x7a1e0966, 0x098583ce), TOBN(0xa2eedb94, 0x93f2a7d7), - TOBN(0x1b282097, 0x4c304d4a), TOBN(0x0842e3da, 0xc077282d), - TOBN(0xe4d972a3, 0x3b9e2d7b), TOBN(0x7cc60b27, 0xc48218ff), - TOBN(0x8fc70838, 0x84149d91), TOBN(0x5c04346f, 0x2f461ecc), - TOBN(0xebe9fdf2, 0x614650a9), TOBN(0x5e35b537, 0xc1f666ac), - TOBN(0x645613d1, 0x88babc83), TOBN(0x88cace3a, 0xc5e1c93e), - TOBN(0x209ca375, 0x3de92e23), TOBN(0xccb03cc8, 0x5fbbb6e3), - TOBN(0xccb90f03, 0xd7b1487e), TOBN(0xfa9c2a38, 0xc710941f), - TOBN(0x756c3823, 0x6724ceed), TOBN(0x3a902258, 0x192d0323), - TOBN(0xb150e519, 0xea5e038e), TOBN(0xdcba2865, 0xc7427591), - TOBN(0xe549237f, 0x78890732), TOBN(0xc443bef9, 0x53fcb4d9), - TOBN(0x9884d8a6, 0xeb3480d6), TOBN(0x8a35b6a1, 0x3048b186), - TOBN(0xb4e44716, 0x65e9a90a), TOBN(0x45bf380d, 0x653006c0), - TOBN(0x8f3f820d, 0x4fe9ae3b), TOBN(0x244a35a0, 0x979a3b71), - TOBN(0xa1010e9d, 0x74cd06ff), TOBN(0x9c17c7df, 0xaca3eeac), - TOBN(0x74c86cd3, 0x8063aa2b), TOBN(0x8595c4b3, 0x734614ff), - TOBN(0xa3de00ca, 0x990f62cc), TOBN(0xd9bed213, 0xca0c3be5), - TOBN(0x7886078a, 0xdf8ce9f5), TOBN(0xddb27ce3, 0x5cd44444), - TOBN(0xed374a66, 0x58926ddd), TOBN(0x138b2d49, 0x908015b8), - TOBN(0x886c6579, 0xde1f7ab8), TOBN(0x888b9aa0, 0xc3020b7a), - TOBN(0xd3ec034e, 0x3a96e355), TOBN(0xba65b0b8, 0xf30fbe9a), - TOBN(0x064c8e50, 0xff21367a), TOBN(0x1f508ea4, 0x0b04b46e), - TOBN(0x98561a49, 0x747c866c), TOBN(0xbbb1e5fe, 0x0518a062), - TOBN(0x20ff4e8b, 0xecdc3608), TOBN(0x7f55cded, 0x20184027), - TOBN(0x8d73ec95, 0xf38c85f0), TOBN(0x5b589fdf, 0x8bc3b8c3), - TOBN(0xbe95dd98, 0x0f12b66f), TOBN(0xf5bd1a09, 0x0e338e01), - TOBN(0x65163ae5, 0x5e915918), TOBN(0x6158d6d9, 0x86f8a46b), - TOBN(0x8466b538, 0xeeebf99c), TOBN(0xca8761f6, 0xbca477ef), - TOBN(0xaf3449c2, 0x9ebbc601), TOBN(0xef3b0f41, 0xe0c3ae2f), - TOBN(0xaa6c577d, 0x5de63752), TOBN(0xe9166601, 0x64682a51), - TOBN(0x5a3097be, 0xfc15aa1e), TOBN(0x40d12548, 0xb54b0745), - TOBN(0x5bad4706, 0x519a5f12), TOBN(0xed03f717, 0xa439dee6), - TOBN(0x0794bb6c, 0x4a02c499), TOBN(0xf725083d, 0xcffe71d2), - TOBN(0x2cad7519, 0x0f3adcaf), TOBN(0x7f68ea1c, 0x43729310), - TOBN(0xe747c8c7, 0xb7ffd977), TOBN(0xec104c35, 0x80761a22), - TOBN(0x8395ebaf, 0x5a3ffb83), TOBN(0xfb3261f4, 0xe4b63db7), - TOBN(0x53544960, 0xd883e544), TOBN(0x13520d70, 0x8cc2eeb8), - TOBN(0x08f6337b, 0xd3d65f99), TOBN(0x83997db2, 0x781cf95b), - TOBN(0xce6ff106, 0x0dbd2c01), TOBN(0x4f8eea6b, 0x1f9ce934), - TOBN(0x546f7c4b, 0x0e993921), TOBN(0x6236a324, 0x5e753fc7), - TOBN(0x65a41f84, 0xa16022e9), TOBN(0x0c18d878, 0x43d1dbb2), - TOBN(0x73c55640, 0x2d4cef9c), TOBN(0xa0428108, 0x70444c74), - TOBN(0x68e4f15e, 0x9afdfb3c), TOBN(0x49a56143, 0x5bdfb6df), - TOBN(0xa9bc1bd4, 0x5f823d97), TOBN(0xbceb5970, 0xea111c2a), - TOBN(0x366b455f, 0xb269bbc4), TOBN(0x7cd85e1e, 0xe9bc5d62), - TOBN(0xc743c41c, 0x4f18b086), TOBN(0xa4b40990, 0x95294fb9), - TOBN(0x9c7c581d, 0x26ee8382), TOBN(0xcf17dcc5, 0x359d638e), - TOBN(0xee8273ab, 0xb728ae3d), TOBN(0x1d112926, 0xf821f047), - TOBN(0x11498477, 0x50491a74), TOBN(0x687fa761, 0xfde0dfb9), - TOBN(0x2c258022, 0x7ea435ab), TOBN(0x6b8bdb94, 0x91ce7e3f), - TOBN(0x4c5b5dc9, 0x3bf834aa), TOBN(0x04371819, 0x4f6c7e4b), - TOBN(0xc284e00a, 0x3736bcad), TOBN(0x0d881118, 0x21ae8f8d), - TOBN(0xf9cf0f82, 0xf48c8e33), TOBN(0xa11fd075, 0xa1bf40db), - TOBN(0xdceab0de, 0xdc2733e5), TOBN(0xc560a8b5, 0x8e986bd7), - TOBN(0x48dd1fe2, 0x3929d097), TOBN(0x3885b290, 0x92f188f1), - TOBN(0x0f2ae613, 0xda6fcdac), TOBN(0x9054303e, 0xb662a46c), - TOBN(0xb6871e44, 0x0738042a), TOBN(0x98e6a977, 0xbdaf6449), - TOBN(0xd8bc0650, 0xd1c9df1b), TOBN(0xef3d6451, 0x36e098f9), - TOBN(0x03fbae82, 0xb6d72d28), TOBN(0x77ca9db1, 0xf5d84080), - TOBN(0x8a112cff, 0xa58efc1c), TOBN(0x518d761c, 0xc564cb4a), - TOBN(0x69b5740e, 0xf0d1b5ce), TOBN(0x717039cc, 0xe9eb1785), - TOBN(0x3fe29f90, 0x22f53382), TOBN(0x8e54ba56, 0x6bc7c95c), - TOBN(0x9c806d8a, 0xf7f91d0f), TOBN(0x3b61b0f1, 0xa82a5728), - TOBN(0x4640032d, 0x94d76754), TOBN(0x273eb5de, 0x47d834c6), - TOBN(0x2988abf7, 0x7b4e4d53), TOBN(0xb7ce66bf, 0xde401777), - TOBN(0x9fba6b32, 0x715071b3), TOBN(0x82413c24, 0xad3a1a98), - TOBN(0x5b7fc8c4, 0xe0e8ad93), TOBN(0xb5679aee, 0x5fab868d), - TOBN(0xb1f9d2fa, 0x2b3946f3), TOBN(0x458897dc, 0x5685b50a), - TOBN(0x1e98c930, 0x89d0caf3), TOBN(0x39564c5f, 0x78642e92), - TOBN(0x1b77729a, 0x0dbdaf18), TOBN(0xf9170722, 0x579e82e6), - TOBN(0x680c0317, 0xe4515fa5), TOBN(0xf85cff84, 0xfb0c790f), - TOBN(0xc7a82aab, 0x6d2e0765), TOBN(0x7446bca9, 0x35c82b32), - TOBN(0x5de607aa, 0x6d63184f), TOBN(0x7c1a46a8, 0x262803a6), - TOBN(0xd218313d, 0xaebe8035), TOBN(0x92113ffd, 0xc73c51f8), - TOBN(0x4b38e083, 0x12e7e46c), TOBN(0x69d0a37a, 0x56126bd5), - TOBN(0xfb3f324b, 0x73c07e04), TOBN(0xa0c22f67, 0x8fda7267), - TOBN(0x8f2c0051, 0x4d2c7d8f), TOBN(0xbc45ced3, 0xcbe2cae5), - TOBN(0xe1c6cf07, 0xa8f0f277), TOBN(0xbc392312, 0x1eb99a98), - TOBN(0x75537b7e, 0x3cc8ac85), TOBN(0x8d725f57, 0xdd02753b), - TOBN(0xfd05ff64, 0xb737df2f), TOBN(0x55fe8712, 0xf6d2531d), - TOBN(0x57ce04a9, 0x6ab6b01c), TOBN(0x69a02a89, 0x7cd93724), - TOBN(0x4f82ac35, 0xcf86699b), TOBN(0x8242d3ad, 0x9cb4b232), - TOBN(0x713d0f65, 0xd62105e5), TOBN(0xbb222bfa, 0x2d29be61), - TOBN(0xf2f9a79e, 0x6cfbef09), TOBN(0xfc24d8d3, 0xd5d6782f), - TOBN(0x5db77085, 0xd4129967), TOBN(0xdb81c3cc, 0xdc3c2a43), - TOBN(0x9d655fc0, 0x05d8d9a3), TOBN(0x3f5d057a, 0x54298026), - TOBN(0x1157f56d, 0x88c54694), TOBN(0xb26baba5, 0x9b09573e), - TOBN(0x2cab03b0, 0x22adffd1), TOBN(0x60a412c8, 0xdd69f383), - TOBN(0xed76e98b, 0x54b25039), TOBN(0xd4ee67d3, 0x687e714d), - TOBN(0x87739648, 0x7b00b594), TOBN(0xce419775, 0xc9ef709b), - TOBN(0x40f76f85, 0x1c203a40), TOBN(0x30d352d6, 0xeafd8f91), - TOBN(0xaf196d3d, 0x95578dd2), TOBN(0xea4bb3d7, 0x77cc3f3d), - TOBN(0x42a5bd03, 0xb98e782b), TOBN(0xac958c40, 0x0624920d), - TOBN(0xb838134c, 0xfc56fcc8), TOBN(0x86ec4ccf, 0x89572e5e), - TOBN(0x69c43526, 0x9be47be0), TOBN(0x323b7dd8, 0xcb28fea1), - TOBN(0xfa5538ba, 0x3a6c67e5), TOBN(0xef921d70, 0x1d378e46), - TOBN(0xf92961fc, 0x3c4b880e), TOBN(0x3f6f914e, 0x98940a67), - TOBN(0xa990eb0a, 0xfef0ff39), TOBN(0xa6c2920f, 0xf0eeff9c), - TOBN(0xca804166, 0x51b8d9a3), TOBN(0x42531bc9, 0x0ffb0db1), - TOBN(0x72ce4718, 0xaa82e7ce), TOBN(0x6e199913, 0xdf574741), - TOBN(0xd5f1b13d, 0xd5d36946), TOBN(0x8255dc65, 0xf68f0194), - TOBN(0xdc9df4cd, 0x8710d230), TOBN(0x3453c20f, 0x138c1988), - TOBN(0x9af98dc0, 0x89a6ef01), TOBN(0x4dbcc3f0, 0x9857df85), - TOBN(0x34805601, 0x5c1ad924), TOBN(0x40448da5, 0xd0493046), - TOBN(0xf629926d, 0x4ee343e2), TOBN(0x6343f1bd, 0x90e8a301), - TOBN(0xefc93491, 0x40815b3f), TOBN(0xf882a423, 0xde8f66fb), - TOBN(0x3a12d5f4, 0xe7db9f57), TOBN(0x7dfba38a, 0x3c384c27), - TOBN(0x7a904bfd, 0x6fc660b1), TOBN(0xeb6c5db3, 0x2773b21c), - TOBN(0xc350ee66, 0x1cdfe049), TOBN(0x9baac0ce, 0x44540f29), - TOBN(0xbc57b6ab, 0xa5ec6aad), TOBN(0x167ce8c3, 0x0a7c1baa), - TOBN(0xb23a03a5, 0x53fb2b56), TOBN(0x6ce141e7, 0x4e057f78), - TOBN(0x796525c3, 0x89e490d9), TOBN(0x0bc95725, 0xa31a7e75), - TOBN(0x1ec56791, 0x1220fd06), TOBN(0x716e3a3c, 0x408b0bd6), - TOBN(0x31cd6bf7, 0xe8ebeba9), TOBN(0xa7326ca6, 0xbee6b670), - TOBN(0x3d9f851c, 0xcd090c43), TOBN(0x561e8f13, 0xf12c3988), - TOBN(0x50490b6a, 0x904b7be4), TOBN(0x61690ce1, 0x0410737b), - TOBN(0x299e9a37, 0x0f009052), TOBN(0x258758f0, 0xf026092e), - TOBN(0x9fa255f3, 0xfdfcdc0f), TOBN(0xdbc9fb1f, 0xc0e1bcd2), - TOBN(0x35f9dd6e, 0x24651840), TOBN(0xdca45a84, 0xa5c59abc), - TOBN(0x103d396f, 0xecca4938), TOBN(0x4532da0a, 0xb97b3f29), - TOBN(0xc4135ea5, 0x1999a6bf), TOBN(0x3aa9505a, 0x5e6bf2ee), - TOBN(0xf77cef06, 0x3f5be093), TOBN(0x97d1a0f8, 0xa943152e), - TOBN(0x2cb0ebba, 0x2e1c21dd), TOBN(0xf41b29fc, 0x2c6797c4), - TOBN(0xc6e17321, 0xb300101f), TOBN(0x4422b0e9, 0xd0d79a89), - TOBN(0x49e4901c, 0x92f1bfc4), TOBN(0x06ab1f8f, 0xe1e10ed9), - TOBN(0x84d35577, 0xdb2926b8), TOBN(0xca349d39, 0x356e8ec2), - TOBN(0x70b63d32, 0x343bf1a9), TOBN(0x8fd3bd28, 0x37d1a6b1), - TOBN(0x0454879c, 0x316865b4), TOBN(0xee959ff6, 0xc458efa2), - TOBN(0x0461dcf8, 0x9706dc3f), TOBN(0x737db0e2, 0x164e4b2e), - TOBN(0x09262680, 0x2f8843c8), TOBN(0x54498bbc, 0x7745e6f6), - TOBN(0x359473fa, 0xa29e24af), TOBN(0xfcc3c454, 0x70aa87a1), - TOBN(0xfd2c4bf5, 0x00573ace), TOBN(0xb65b514e, 0x28dd1965), - TOBN(0xe46ae7cf, 0x2193e393), TOBN(0x60e9a4e1, 0xf5444d97), - TOBN(0xe7594e96, 0x00ff38ed), TOBN(0x43d84d2f, 0x0a0e0f02), - TOBN(0x8b6db141, 0xee398a21), TOBN(0xb88a56ae, 0xe3bcc5be), - TOBN(0x0a1aa52f, 0x373460ea), TOBN(0x20da1a56, 0x160bb19b), - TOBN(0xfb54999d, 0x65bf0384), TOBN(0x71a14d24, 0x5d5a180e), - TOBN(0xbc44db7b, 0x21737b04), TOBN(0xd84fcb18, 0x01dd8e92), - TOBN(0x80de937b, 0xfa44b479), TOBN(0x53505499, 0x5c98fd4f), - TOBN(0x1edb12ab, 0x28f08727), TOBN(0x4c58b582, 0xa5f3ef53), - TOBN(0xbfb236d8, 0x8327f246), TOBN(0xc3a3bfaa, 0x4d7df320), - TOBN(0xecd96c59, 0xb96024f2), TOBN(0xfc293a53, 0x7f4e0433), - TOBN(0x5341352b, 0x5acf6e10), TOBN(0xc50343fd, 0xafe652c3), - TOBN(0x4af3792d, 0x18577a7f), TOBN(0xe1a4c617, 0xaf16823d), - TOBN(0x9b26d0cd, 0x33425d0a), TOBN(0x306399ed, 0x9b7bc47f), - TOBN(0x2a792f33, 0x706bb20b), TOBN(0x31219614, 0x98111055), - TOBN(0x864ec064, 0x87f5d28b), TOBN(0x11392d91, 0x962277fd), - TOBN(0xb5aa7942, 0xbb6aed5f), TOBN(0x080094dc, 0x47e799d9), - TOBN(0x4afa588c, 0x208ba19b), TOBN(0xd3e7570f, 0x8512f284), - TOBN(0xcbae64e6, 0x02f5799a), TOBN(0xdeebe7ef, 0x514b9492), - TOBN(0x30300f98, 0xe5c298ff), TOBN(0x17f561be, 0x3678361f), - TOBN(0xf52ff312, 0x98cb9a16), TOBN(0x6233c3bc, 0x5562d490), - TOBN(0x7bfa15a1, 0x92e3a2cb), TOBN(0x961bcfd1, 0xe6365119), - TOBN(0x3bdd29bf, 0x2c8c53b1), TOBN(0x739704df, 0x822844ba), - TOBN(0x7dacfb58, 0x7e7b754b), TOBN(0x23360791, 0xa806c9b9), - TOBN(0xe7eb88c9, 0x23504452), TOBN(0x2983e996, 0x852c1783), - TOBN(0xdd4ae529, 0x958d881d), TOBN(0x026bae03, 0x262c7b3c), - TOBN(0x3a6f9193, 0x960b52d1), TOBN(0xd0980f90, 0x92696cfb), - TOBN(0x4c1f428c, 0xd5f30851), TOBN(0x94dfed27, 0x2a4f6630), - TOBN(0x4df53772, 0xfc5d48a4), TOBN(0xdd2d5a2f, 0x933260ce), - TOBN(0x574115bd, 0xd44cc7a5), TOBN(0x4ba6b20d, 0xbd12533a), - TOBN(0x30e93cb8, 0x243057c9), TOBN(0x794c486a, 0x14de320e), - TOBN(0xe925d4ce, 0xf21496e4), TOBN(0xf951d198, 0xec696331), - TOBN(0x9810e2de, 0x3e8d812f), TOBN(0xd0a47259, 0x389294ab), - TOBN(0x513ba2b5, 0x0e3bab66), TOBN(0x462caff5, 0xabad306f), - TOBN(0xe2dc6d59, 0xaf04c49e), TOBN(0x1aeb8750, 0xe0b84b0b), - TOBN(0xc034f12f, 0x2f7d0ca2), TOBN(0x6d2e8128, 0xe06acf2f), - TOBN(0x801f4f83, 0x21facc2f), TOBN(0xa1170c03, 0xf40ef607), - TOBN(0xfe0a1d4f, 0x7805a99c), TOBN(0xbde56a36, 0xcc26aba5), - TOBN(0x5b1629d0, 0x35531f40), TOBN(0xac212c2b, 0x9afa6108), - TOBN(0x30a06bf3, 0x15697be5), TOBN(0x6f0545dc, 0x2c63c7c1), - TOBN(0x5d8cb842, 0x7ccdadaf), TOBN(0xd52e379b, 0xac7015bb), - TOBN(0xc4f56147, 0xf462c23e), TOBN(0xd44a4298, 0x46bc24b0), - TOBN(0xbc73d23a, 0xe2856d4f), TOBN(0x61cedd8c, 0x0832bcdf), - TOBN(0x60953556, 0x99f241d7), TOBN(0xee4adbd7, 0x001a349d), - TOBN(0x0b35bf6a, 0xaa89e491), TOBN(0x7f0076f4, 0x136f7546), - TOBN(0xd19a18ba, 0x9264da3d), TOBN(0x6eb2d2cd, 0x62a7a28b), - TOBN(0xcdba941f, 0x8761c971), TOBN(0x1550518b, 0xa3be4a5d), - TOBN(0xd0e8e2f0, 0x57d0b70c), TOBN(0xeea8612e, 0xcd133ba3), - TOBN(0x814670f0, 0x44416aec), TOBN(0x424db6c3, 0x30775061), - TOBN(0xd96039d1, 0x16213fd1), TOBN(0xc61e7fa5, 0x18a3478f), - TOBN(0xa805bdcc, 0xcb0c5021), TOBN(0xbdd6f3a8, 0x0cc616dd), - TOBN(0x06009667, 0x5d97f7e2), TOBN(0x31db0fc1, 0xaf0bf4b6), - TOBN(0x23680ed4, 0x5491627a), TOBN(0xb99a3c66, 0x7d741fb1), - TOBN(0xe9bb5f55, 0x36b1ff92), TOBN(0x29738577, 0x512b388d), - TOBN(0xdb8a2ce7, 0x50fcf263), TOBN(0x385346d4, 0x6c4f7b47), - TOBN(0xbe86c5ef, 0x31631f9e), TOBN(0xbf91da21, 0x03a57a29), - TOBN(0xc3b1f796, 0x7b23f821), TOBN(0x0f7d00d2, 0x770db354), - TOBN(0x8ffc6c3b, 0xd8fe79da), TOBN(0xcc5e8c40, 0xd525c996), - TOBN(0x4640991d, 0xcfff632a), TOBN(0x64d97e8c, 0x67112528), - TOBN(0xc232d973, 0x02f1cd1e), TOBN(0xce87eacb, 0x1dd212a4), - TOBN(0x6e4c8c73, 0xe69802f7), TOBN(0x12ef0290, 0x1fffddbd), - TOBN(0x941ec74e, 0x1bcea6e2), TOBN(0xd0b54024, 0x3cb92cbb), - TOBN(0x809fb9d4, 0x7e8f9d05), TOBN(0x3bf16159, 0xf2992aae), - TOBN(0xad40f279, 0xf8a7a838), TOBN(0x11aea631, 0x05615660), - TOBN(0xbf52e6f1, 0xa01f6fa1), TOBN(0xef046995, 0x3dc2aec9), - TOBN(0x785dbec9, 0xd8080711), TOBN(0xe1aec60a, 0x9fdedf76), - TOBN(0xece797b5, 0xfa21c126), TOBN(0xc66e898f, 0x05e52732), - TOBN(0x39bb69c4, 0x08811fdb), TOBN(0x8bfe1ef8, 0x2fc7f082), - TOBN(0xc8e7a393, 0x174f4138), TOBN(0xfba8ad1d, 0xd58d1f98), - TOBN(0xbc21d0ce, 0xbfd2fd5b), TOBN(0x0b839a82, 0x6ee60d61), - TOBN(0xaacf7658, 0xafd22253), TOBN(0xb526bed8, 0xaae396b3), - TOBN(0xccc1bbc2, 0x38564464), TOBN(0x9e3ff947, 0x8c45bc73), - TOBN(0xcde9bca3, 0x58188a78), TOBN(0x138b8ee0, 0xd73bf8f7), - TOBN(0x5c7e234c, 0x4123c489), TOBN(0x66e69368, 0xfa643297), - TOBN(0x0629eeee, 0x39a15fa3), TOBN(0x95fab881, 0xa9e2a927), - TOBN(0xb2497007, 0xeafbb1e1), TOBN(0xd75c9ce6, 0xe75b7a93), - TOBN(0x3558352d, 0xefb68d78), TOBN(0xa2f26699, 0x223f6396), - TOBN(0xeb911ecf, 0xe469b17a), TOBN(0x62545779, 0xe72d3ec2), - TOBN(0x8ea47de7, 0x82cb113f), TOBN(0xebe4b086, 0x4e1fa98d), - TOBN(0xec2d5ed7, 0x8cdfedb1), TOBN(0xa535c077, 0xfe211a74), - TOBN(0x9678109b, 0x11d244c5), TOBN(0xf17c8bfb, 0xbe299a76), - TOBN(0xb651412e, 0xfb11fbc4), TOBN(0xea0b5482, 0x94ab3f65), - TOBN(0xd8dffd95, 0x0cf78243), TOBN(0x2e719e57, 0xce0361d4), - TOBN(0x9007f085, 0x304ddc5b), TOBN(0x095e8c6d, 0x4daba2ea), - TOBN(0x5a33cdb4, 0x3f9d28a9), TOBN(0x85b95cd8, 0xe2283003), - TOBN(0xbcd6c819, 0xb9744733), TOBN(0x29c5f538, 0xfc7f5783), - TOBN(0x6c49b2fa, 0xd59038e4), TOBN(0x68349cc1, 0x3bbe1018), - TOBN(0xcc490c1d, 0x21830ee5), TOBN(0x36f9c4ee, 0xe9bfa297), - TOBN(0x58fd7294, 0x48de1a94), TOBN(0xaadb13a8, 0x4e8f2cdc), - TOBN(0x515eaaa0, 0x81313dba), TOBN(0xc76bb468, 0xc2152dd8), - TOBN(0x357f8d75, 0xa653dbf8), TOBN(0xe4d8c4d1, 0xb14ac143), - TOBN(0xbdb8e675, 0xb055cb40), TOBN(0x898f8e7b, 0x977b5167), - TOBN(0xecc65651, 0xb82fb863), TOBN(0x56544814, 0x6d88f01f), - TOBN(0xb0928e95, 0x263a75a9), TOBN(0xcfb6836f, 0x1a22fcda), - TOBN(0x651d14db, 0x3f3bd37c), TOBN(0x1d3837fb, 0xb6ad4664), - TOBN(0x7c5fb538, 0xff4f94ab), TOBN(0x7243c712, 0x6d7fb8f2), - TOBN(0xef13d60c, 0xa85c5287), TOBN(0x18cfb7c7, 0x4bb8dd1b), - TOBN(0x82f9bfe6, 0x72908219), TOBN(0x35c4592b, 0x9d5144ab), - TOBN(0x52734f37, 0x9cf4b42f), TOBN(0x6bac55e7, 0x8c60ddc4), - TOBN(0xb5cd811e, 0x94dea0f6), TOBN(0x259ecae4, 0xe18cc1a3), - TOBN(0x6a0e836e, 0x15e660f8), TOBN(0x6c639ea6, 0x0e02bff2), - TOBN(0x8721b8cb, 0x7e1026fd), TOBN(0x9e73b50b, 0x63261942), - TOBN(0xb8c70974, 0x77f01da3), TOBN(0x1839e6a6, 0x8268f57f), - TOBN(0x571b9415, 0x5150b805), TOBN(0x1892389e, 0xf92c7097), - TOBN(0x8d69c18e, 0x4a084b95), TOBN(0x7014c512, 0xbe5b495c), - TOBN(0x4780db36, 0x1b07523c), TOBN(0x2f6219ce, 0x2c1c64fa), - TOBN(0xc38b81b0, 0x602c105a), TOBN(0xab4f4f20, 0x5dc8e360), - TOBN(0x20d3c982, 0xcf7d62d2), TOBN(0x1f36e29d, 0x23ba8150), - TOBN(0x48ae0bf0, 0x92763f9e), TOBN(0x7a527e6b, 0x1d3a7007), - TOBN(0xb4a89097, 0x581a85e3), TOBN(0x1f1a520f, 0xdc158be5), - TOBN(0xf98db37d, 0x167d726e), TOBN(0x8802786e, 0x1113e862)}, - {TOBN(0xefb2149e, 0x36f09ab0), TOBN(0x03f163ca, 0x4a10bb5b), - TOBN(0xd0297045, 0x06e20998), TOBN(0x56f0af00, 0x1b5a3bab), - TOBN(0x7af4cfec, 0x70880e0d), TOBN(0x7332a66f, 0xbe3d913f), - TOBN(0x32e6c84a, 0x7eceb4bd), TOBN(0xedc4a79a, 0x9c228f55), - TOBN(0xc37c7dd0, 0xc55c4496), TOBN(0xa6a96357, 0x25bbabd2), - TOBN(0x5b7e63f2, 0xadd7f363), TOBN(0x9dce3782, 0x2e73f1df), - TOBN(0xe1e5a16a, 0xb2b91f71), TOBN(0xe4489823, 0x5ba0163c), - TOBN(0xf2759c32, 0xf6e515ad), TOBN(0xa5e2f1f8, 0x8615eecf), - TOBN(0x74519be7, 0xabded551), TOBN(0x03d358b8, 0xc8b74410), - TOBN(0x4d00b10b, 0x0e10d9a9), TOBN(0x6392b0b1, 0x28da52b7), - TOBN(0x6744a298, 0x0b75c904), TOBN(0xc305b0ae, 0xa8f7f96c), - TOBN(0x042e421d, 0x182cf932), TOBN(0xf6fc5d50, 0x9e4636ca), - TOBN(0x795847c9, 0xd64cc78c), TOBN(0x6c50621b, 0x9b6cb27b), - TOBN(0x07099bf8, 0xdf8022ab), TOBN(0x48f862eb, 0xc04eda1d), - TOBN(0xd12732ed, 0xe1603c16), TOBN(0x19a80e0f, 0x5c9a9450), - TOBN(0xe2257f54, 0xb429b4fc), TOBN(0x66d3b2c6, 0x45460515), - TOBN(0x6ca4f87e, 0x822e37be), TOBN(0x73f237b4, 0x253bda4e), - TOBN(0xf747f3a2, 0x41190aeb), TOBN(0xf06fa36f, 0x804cf284), - TOBN(0x0a6bbb6e, 0xfc621c12), TOBN(0x5d624b64, 0x40b80ec6), - TOBN(0x4b072425, 0x7ba556f3), TOBN(0x7fa0c354, 0x3e2d20a8), - TOBN(0xe921fa31, 0xe3229d41), TOBN(0xa929c652, 0x94531bd4), - TOBN(0x84156027, 0xa6d38209), TOBN(0xf3d69f73, 0x6bdb97bd), - TOBN(0x8906d19a, 0x16833631), TOBN(0x68a34c2e, 0x03d51be3), - TOBN(0xcb59583b, 0x0e511cd8), TOBN(0x99ce6bfd, 0xfdc132a8), - TOBN(0x3facdaaa, 0xffcdb463), TOBN(0x658bbc1a, 0x34a38b08), - TOBN(0x12a801f8, 0xf1a9078d), TOBN(0x1567bcf9, 0x6ab855de), - TOBN(0xe08498e0, 0x3572359b), TOBN(0xcf0353e5, 0x8659e68b), - TOBN(0xbb86e9c8, 0x7d23807c), TOBN(0xbc08728d, 0x2198e8a2), - TOBN(0x8de2b7bc, 0x453cadd6), TOBN(0x203900a7, 0xbc0bc1f8), - TOBN(0xbcd86e47, 0xa6abd3af), TOBN(0x911cac12, 0x8502effb), - TOBN(0x2d550242, 0xec965469), TOBN(0x0e9f7692, 0x29e0017e), - TOBN(0x633f078f, 0x65979885), TOBN(0xfb87d449, 0x4cf751ef), - TOBN(0xe1790e4b, 0xfc25419a), TOBN(0x36467203, 0x4bff3cfd), - TOBN(0xc8db6386, 0x25b6e83f), TOBN(0x6cc69f23, 0x6cad6fd2), - TOBN(0x0219e45a, 0x6bc68bb9), TOBN(0xe43d79b6, 0x297f7334), - TOBN(0x7d445368, 0x465dc97c), TOBN(0x4b9eea32, 0x2a0b949a), - TOBN(0x1b96c6ba, 0x6102d021), TOBN(0xeaafac78, 0x2f4461ea), - TOBN(0xd4b85c41, 0xc49f19a8), TOBN(0x275c28e4, 0xcf538875), - TOBN(0x35451a9d, 0xdd2e54e0), TOBN(0x6991adb5, 0x0605618b), - TOBN(0x5b8b4bcd, 0x7b36cd24), TOBN(0x372a4f8c, 0x56f37216), - TOBN(0xc890bd73, 0xa6a5da60), TOBN(0x6f083da0, 0xdc4c9ff0), - TOBN(0xf4e14d94, 0xf0536e57), TOBN(0xf9ee1eda, 0xaaec8243), - TOBN(0x571241ec, 0x8bdcf8e7), TOBN(0xa5db8271, 0x0b041e26), - TOBN(0x9a0b9a99, 0xe3fff040), TOBN(0xcaaf21dd, 0x7c271202), - TOBN(0xb4e2b2e1, 0x4f0dd2e8), TOBN(0xe77e7c4f, 0x0a377ac7), - TOBN(0x69202c3f, 0x0d7a2198), TOBN(0xf759b7ff, 0x28200eb8), - TOBN(0xc87526ed, 0xdcfe314e), TOBN(0xeb84c524, 0x53d5cf99), - TOBN(0xb1b52ace, 0x515138b6), TOBN(0x5aa7ff8c, 0x23fca3f4), - TOBN(0xff0b13c3, 0xb9791a26), TOBN(0x960022da, 0xcdd58b16), - TOBN(0xdbd55c92, 0x57aad2de), TOBN(0x3baaaaa3, 0xf30fe619), - TOBN(0x9a4b2346, 0x0d881efd), TOBN(0x506416c0, 0x46325e2a), - TOBN(0x91381e76, 0x035c18d4), TOBN(0xb3bb68be, 0xf27817b0), - TOBN(0x15bfb8bf, 0x5116f937), TOBN(0x7c64a586, 0xc1268943), - TOBN(0x71e25cc3, 0x8419a2c8), TOBN(0x9fd6b0c4, 0x8335f463), - TOBN(0x4bf0ba3c, 0xe8ee0e0e), TOBN(0x6f6fba60, 0x298c21fa), - TOBN(0x57d57b39, 0xae66bee0), TOBN(0x292d5130, 0x22672544), - TOBN(0xf451105d, 0xbab093b3), TOBN(0x012f59b9, 0x02839986), - TOBN(0x8a915802, 0x3474a89c), TOBN(0x048c919c, 0x2de03e97), - TOBN(0xc476a2b5, 0x91071cd5), TOBN(0x791ed89a, 0x034970a5), - TOBN(0x89bd9042, 0xe1b7994b), TOBN(0x8eaf5179, 0xa1057ffd), - TOBN(0x6066e2a2, 0xd551ee10), TOBN(0x87a8f1d8, 0x727e09a6), - TOBN(0x00d08bab, 0x2c01148d), TOBN(0x6da8e4f1, 0x424f33fe), - TOBN(0x466d17f0, 0xcf9a4e71), TOBN(0xff502010, 0x3bf5cb19), - TOBN(0xdccf97d8, 0xd062ecc0), TOBN(0x80c0d9af, 0x81d80ac4), - TOBN(0xe87771d8, 0x033f2876), TOBN(0xb0186ec6, 0x7d5cc3db), - TOBN(0x58e8bb80, 0x3bc9bc1d), TOBN(0x4d1395cc, 0x6f6ef60e), - TOBN(0xa73c62d6, 0x186244a0), TOBN(0x918e5f23, 0x110a5b53), - TOBN(0xed4878ca, 0x741b7eab), TOBN(0x3038d71a, 0xdbe03e51), - TOBN(0x840204b7, 0xa93c3246), TOBN(0x21ab6069, 0xa0b9b4cd), - TOBN(0xf5fa6e2b, 0xb1d64218), TOBN(0x1de6ad0e, 0xf3d56191), - TOBN(0x570aaa88, 0xff1929c7), TOBN(0xc6df4c6b, 0x640e87b5), - TOBN(0xde8a74f2, 0xc65f0ccc), TOBN(0x8b972fd5, 0xe6f6cc01), - TOBN(0x3fff36b6, 0x0b846531), TOBN(0xba7e45e6, 0x10a5e475), - TOBN(0x84a1d10e, 0x4145b6c5), TOBN(0xf1f7f91a, 0x5e046d9d), - TOBN(0x0317a692, 0x44de90d7), TOBN(0x951a1d4a, 0xf199c15e), - TOBN(0x91f78046, 0xc9d73deb), TOBN(0x74c82828, 0xfab8224f), - TOBN(0xaa6778fc, 0xe7560b90), TOBN(0xb4073e61, 0xa7e824ce), - TOBN(0xff0d693c, 0xd642eba8), TOBN(0x7ce2e57a, 0x5dccef38), - TOBN(0x89c2c789, 0x1df1ad46), TOBN(0x83a06922, 0x098346fd), - TOBN(0x2d715d72, 0xda2fc177), TOBN(0x7b6dd71d, 0x85b6cf1d), - TOBN(0xc60a6d0a, 0x73fa9cb0), TOBN(0xedd3992e, 0x328bf5a9), - TOBN(0xc380ddd0, 0x832c8c82), TOBN(0xd182d410, 0xa2a0bf50), - TOBN(0x7d9d7438, 0xd9a528db), TOBN(0xe8b1a0e9, 0xcaf53994), - TOBN(0xddd6e5fe, 0x0e19987c), TOBN(0xacb8df03, 0x190b059d), - TOBN(0x53703a32, 0x8300129f), TOBN(0x1f637662, 0x68c43bfd), - TOBN(0xbcbd1913, 0x00e54051), TOBN(0x812fcc62, 0x7bf5a8c5), - TOBN(0x3f969d5f, 0x29fb85da), TOBN(0x72f4e00a, 0x694759e8), - TOBN(0x426b6e52, 0x790726b7), TOBN(0x617bbc87, 0x3bdbb209), - TOBN(0x511f8bb9, 0x97aee317), TOBN(0x812a4096, 0xe81536a8), - TOBN(0x137dfe59, 0x3ac09b9b), TOBN(0x0682238f, 0xba8c9a7a), - TOBN(0x7072ead6, 0xaeccb4bd), TOBN(0x6a34e9aa, 0x692ba633), - TOBN(0xc82eaec2, 0x6fff9d33), TOBN(0xfb753512, 0x1d4d2b62), - TOBN(0x1a0445ff, 0x1d7aadab), TOBN(0x65d38260, 0xd5f6a67c), - TOBN(0x6e62fb08, 0x91cfb26f), TOBN(0xef1e0fa5, 0x5c7d91d6), - TOBN(0x47e7c7ba, 0x33db72cd), TOBN(0x017cbc09, 0xfa7c74b2), - TOBN(0x3c931590, 0xf50a503c), TOBN(0xcac54f60, 0x616baa42), - TOBN(0x9b6cd380, 0xb2369f0f), TOBN(0x97d3a70d, 0x23c76151), - TOBN(0x5f9dd6fc, 0x9862a9c6), TOBN(0x044c4ab2, 0x12312f51), - TOBN(0x035ea0fd, 0x834a2ddc), TOBN(0x49e6b862, 0xcc7b826d), - TOBN(0xb03d6883, 0x62fce490), TOBN(0x62f2497a, 0xb37e36e9), - TOBN(0x04b005b6, 0xc6458293), TOBN(0x36bb5276, 0xe8d10af7), - TOBN(0xacf2dc13, 0x8ee617b8), TOBN(0x470d2d35, 0xb004b3d4), - TOBN(0x06790832, 0xfeeb1b77), TOBN(0x2bb75c39, 0x85657f9c), - TOBN(0xd70bd4ed, 0xc0f60004), TOBN(0xfe797ecc, 0x219b018b), - TOBN(0x9b5bec2a, 0x753aebcc), TOBN(0xdaf9f3dc, 0xc939eca5), - TOBN(0xd6bc6833, 0xd095ad09), TOBN(0x98abdd51, 0xdaa4d2fc), - TOBN(0xd9840a31, 0x8d168be5), TOBN(0xcf7c10e0, 0x2325a23c), - TOBN(0xa5c02aa0, 0x7e6ecfaf), TOBN(0x2462e7e6, 0xb5bfdf18), - TOBN(0xab2d8a8b, 0xa0cc3f12), TOBN(0x68dd485d, 0xbc672a29), - TOBN(0x72039752, 0x596f2cd3), TOBN(0x5d3eea67, 0xa0cf3d8d), - TOBN(0x810a1a81, 0xe6602671), TOBN(0x8f144a40, 0x14026c0c), - TOBN(0xbc753a6d, 0x76b50f85), TOBN(0xc4dc21e8, 0x645cd4a4), - TOBN(0xc5262dea, 0x521d0378), TOBN(0x802b8e0e, 0x05011c6f), - TOBN(0x1ba19cbb, 0x0b4c19ea), TOBN(0x21db64b5, 0xebf0aaec), - TOBN(0x1f394ee9, 0x70342f9d), TOBN(0x93a10aee, 0x1bc44a14), - TOBN(0xa7eed31b, 0x3efd0baa), TOBN(0x6e7c824e, 0x1d154e65), - TOBN(0xee23fa81, 0x9966e7ee), TOBN(0x64ec4aa8, 0x05b7920d), - TOBN(0x2d44462d, 0x2d90aad4), TOBN(0xf44dd195, 0xdf277ad5), - TOBN(0x8d6471f1, 0xbb46b6a1), TOBN(0x1e65d313, 0xfd885090), - TOBN(0x33a800f5, 0x13a977b4), TOBN(0xaca9d721, 0x0797e1ef), - TOBN(0x9a5a85a0, 0xfcff6a17), TOBN(0x9970a3f3, 0x1eca7cee), - TOBN(0xbb9f0d6b, 0xc9504be3), TOBN(0xe0c504be, 0xadd24ee2), - TOBN(0x7e09d956, 0x77fcc2f4), TOBN(0xef1a5227, 0x65bb5fc4), - TOBN(0x145d4fb1, 0x8b9286aa), TOBN(0x66fd0c5d, 0x6649028b), - TOBN(0x98857ceb, 0x1bf4581c), TOBN(0xe635e186, 0xaca7b166), - TOBN(0x278ddd22, 0x659722ac), TOBN(0xa0903c4c, 0x1db68007), - TOBN(0x366e4589, 0x48f21402), TOBN(0x31b49c14, 0xb96abda2), - TOBN(0x329c4b09, 0xe0403190), TOBN(0x97197ca3, 0xd29f43fe), - TOBN(0x8073dd1e, 0x274983d8), TOBN(0xda1a3bde, 0x55717c8f), - TOBN(0xfd3d4da2, 0x0361f9d1), TOBN(0x1332d081, 0x4c7de1ce), - TOBN(0x9b7ef7a3, 0xaa6d0e10), TOBN(0x17db2e73, 0xf54f1c4a), - TOBN(0xaf3dffae, 0x4cd35567), TOBN(0xaaa2f406, 0xe56f4e71), - TOBN(0x8966759e, 0x7ace3fc7), TOBN(0x9594eacf, 0x45a8d8c6), - TOBN(0x8de3bd8b, 0x91834e0e), TOBN(0xafe4ca53, 0x548c0421), - TOBN(0xfdd7e856, 0xe6ee81c6), TOBN(0x8f671beb, 0x6b891a3a), - TOBN(0xf7a58f2b, 0xfae63829), TOBN(0x9ab186fb, 0x9c11ac9f), - TOBN(0x8d6eb369, 0x10b5be76), TOBN(0x046b7739, 0xfb040bcd), - TOBN(0xccb4529f, 0xcb73de88), TOBN(0x1df0fefc, 0xcf26be03), - TOBN(0xad7757a6, 0xbcfcd027), TOBN(0xa8786c75, 0xbb3165ca), - TOBN(0xe9db1e34, 0x7e99a4d9), TOBN(0x99ee86df, 0xb06c504b), - TOBN(0x5b7c2ddd, 0xc15c9f0a), TOBN(0xdf87a734, 0x4295989e), - TOBN(0x59ece47c, 0x03d08fda), TOBN(0xb074d3dd, 0xad5fc702), - TOBN(0x20407903, 0x51a03776), TOBN(0x2bb1f77b, 0x2a608007), - TOBN(0x25c58f4f, 0xe1153185), TOBN(0xe6df62f6, 0x766e6447), - TOBN(0xefb3d1be, 0xed51275a), TOBN(0x5de47dc7, 0x2f0f483f), - TOBN(0x7932d98e, 0x97c2bedf), TOBN(0xd5c11927, 0x0219f8a1), - TOBN(0x9d751200, 0xa73a294e), TOBN(0x5f88434a, 0x9dc20172), - TOBN(0xd28d9fd3, 0xa26f506a), TOBN(0xa890cd31, 0x9d1dcd48), - TOBN(0x0aebaec1, 0x70f4d3b4), TOBN(0xfd1a1369, 0x0ffc8d00), - TOBN(0xb9d9c240, 0x57d57838), TOBN(0x45929d26, 0x68bac361), - TOBN(0x5a2cd060, 0x25b15ca6), TOBN(0x4b3c83e1, 0x6e474446), - TOBN(0x1aac7578, 0xee1e5134), TOBN(0xa418f5d6, 0xc91e2f41), - TOBN(0x6936fc8a, 0x213ed68b), TOBN(0x860ae7ed, 0x510a5224), - TOBN(0x63660335, 0xdef09b53), TOBN(0x641b2897, 0xcd79c98d), - TOBN(0x29bd38e1, 0x01110f35), TOBN(0x79c26f42, 0x648b1937), - TOBN(0x64dae519, 0x9d9164f4), TOBN(0xd85a2310, 0x0265c273), - TOBN(0x7173dd5d, 0x4b07e2b1), TOBN(0xd144c4cb, 0x8d9ea221), - TOBN(0xe8b04ea4, 0x1105ab14), TOBN(0x92dda542, 0xfe80d8f1), - TOBN(0xe9982fa8, 0xcf03dce6), TOBN(0x8b5ea965, 0x1a22cffc), - TOBN(0xf7f4ea7f, 0x3fad88c4), TOBN(0x62db773e, 0x6a5ba95c), - TOBN(0xd20f02fb, 0x93f24567), TOBN(0xfd46c69a, 0x315257ca), - TOBN(0x0ac74cc7, 0x8bcab987), TOBN(0x46f31c01, 0x5ceca2f5), - TOBN(0x40aedb59, 0x888b219e), TOBN(0xe50ecc37, 0xe1fccd02), - TOBN(0x1bcd9dad, 0x911f816c), TOBN(0x583cc1ec, 0x8db9b00c), - TOBN(0xf3cd2e66, 0xa483bf11), TOBN(0xfa08a6f5, 0xb1b2c169), - TOBN(0xf375e245, 0x4be9fa28), TOBN(0x99a7ffec, 0x5b6d011f), - TOBN(0x6a3ebddb, 0xc4ae62da), TOBN(0x6cea00ae, 0x374aef5d), - TOBN(0xab5fb98d, 0x9d4d05bc), TOBN(0x7cba1423, 0xd560f252), - TOBN(0x49b2cc21, 0x208490de), TOBN(0x1ca66ec3, 0xbcfb2879), - TOBN(0x7f1166b7, 0x1b6fb16f), TOBN(0xfff63e08, 0x65fe5db3), - TOBN(0xb8345abe, 0x8b2610be), TOBN(0xb732ed80, 0x39de3df4), - TOBN(0x0e24ed50, 0x211c32b4), TOBN(0xd10d8a69, 0x848ff27d), - TOBN(0xc1074398, 0xed4de248), TOBN(0xd7cedace, 0x10488927), - TOBN(0xa4aa6bf8, 0x85673e13), TOBN(0xb46bae91, 0x6daf30af), - TOBN(0x07088472, 0xfcef7ad8), TOBN(0x61151608, 0xd4b35e97), - TOBN(0xbcfe8f26, 0xdde29986), TOBN(0xeb84c4c7, 0xd5a34c79), - TOBN(0xc1eec55c, 0x164e1214), TOBN(0x891be86d, 0xa147bb03), - TOBN(0x9fab4d10, 0x0ba96835), TOBN(0xbf01e9b8, 0xa5c1ae9f), - TOBN(0x6b4de139, 0xb186ebc0), TOBN(0xd5c74c26, 0x85b91bca), - TOBN(0x5086a99c, 0xc2d93854), TOBN(0xeed62a7b, 0xa7a9dfbc), - TOBN(0x8778ed6f, 0x76b7618a), TOBN(0xbff750a5, 0x03b66062), - TOBN(0x4cb7be22, 0xb65186db), TOBN(0x369dfbf0, 0xcc3a6d13), - TOBN(0xc7dab26c, 0x7191a321), TOBN(0x9edac3f9, 0x40ed718e), - TOBN(0xbc142b36, 0xd0cfd183), TOBN(0xc8af82f6, 0x7c991693), - TOBN(0xb3d1e4d8, 0x97ce0b2a), TOBN(0xe6d7c87f, 0xc3a55cdf), - TOBN(0x35846b95, 0x68b81afe), TOBN(0x018d12af, 0xd3c239d8), - TOBN(0x2b2c6208, 0x01206e15), TOBN(0xe0e42453, 0xa3b882c6), - TOBN(0x854470a3, 0xa50162d5), TOBN(0x08157478, 0x7017a62a), - TOBN(0x18bd3fb4, 0x820357c7), TOBN(0x992039ae, 0x6f1458ad), - TOBN(0x9a1df3c5, 0x25b44aa1), TOBN(0x2d780357, 0xed3d5281), - TOBN(0x58cf7e4d, 0xc77ad4d4), TOBN(0xd49a7998, 0xf9df4fc4), - TOBN(0x4465a8b5, 0x1d71205e), TOBN(0xa0ee0ea6, 0x649254aa), - TOBN(0x4b5eeecf, 0xab7bd771), TOBN(0x6c873073, 0x35c262b9), - TOBN(0xdc5bd648, 0x3c9d61e7), TOBN(0x233d6d54, 0x321460d2), - TOBN(0xd20c5626, 0xfc195bcc), TOBN(0x25445958, 0x04d78b63), - TOBN(0xe03fcb3d, 0x17ec8ef3), TOBN(0x54b690d1, 0x46b8f781), - TOBN(0x82fa2c8a, 0x21230646), TOBN(0xf51aabb9, 0x084f418c), - TOBN(0xff4fbec1, 0x1a30ba43), TOBN(0x6a5acf73, 0x743c9df7), - TOBN(0x1da2b357, 0xd635b4d5), TOBN(0xc3de68dd, 0xecd5c1da), - TOBN(0xa689080b, 0xd61af0dd), TOBN(0xdea5938a, 0xd665bf99), - TOBN(0x0231d71a, 0xfe637294), TOBN(0x01968aa6, 0xa5a81cd8), - TOBN(0x11252d50, 0x048e63b5), TOBN(0xc446bc52, 0x6ca007e9), - TOBN(0xef8c50a6, 0x96d6134b), TOBN(0x9361fbf5, 0x9e09a05c), - TOBN(0xf17f85a6, 0xdca3291a), TOBN(0xb178d548, 0xff251a21), - TOBN(0x87f6374b, 0xa4df3915), TOBN(0x566ce1bf, 0x2fd5d608), - TOBN(0x425cba4d, 0x7de35102), TOBN(0x6b745f8f, 0x58c5d5e2), - TOBN(0x88402af6, 0x63122edf), TOBN(0x3190f9ed, 0x3b989a89), - TOBN(0x4ad3d387, 0xebba3156), TOBN(0xef385ad9, 0xc7c469a5), - TOBN(0xb08281de, 0x3f642c29), TOBN(0x20be0888, 0x910ffb88), - TOBN(0xf353dd4a, 0xd5292546), TOBN(0x3f1627de, 0x8377a262), - TOBN(0xa5faa013, 0xeefcd638), TOBN(0x8f3bf626, 0x74cc77c3), - TOBN(0x32618f65, 0xa348f55e), TOBN(0x5787c0dc, 0x9fefeb9e), - TOBN(0xf1673aa2, 0xd9a23e44), TOBN(0x88dfa993, 0x4e10690d), - TOBN(0x1ced1b36, 0x2bf91108), TOBN(0x9193ceca, 0x3af48649), - TOBN(0xfb34327d, 0x2d738fc5), TOBN(0x6697b037, 0x975fee6c), - TOBN(0x2f485da0, 0xc04079a5), TOBN(0x2cdf5735, 0x2feaa1ac), - TOBN(0x76944420, 0xbd55659e), TOBN(0x7973e32b, 0x4376090c), - TOBN(0x86bb4fe1, 0x163b591a), TOBN(0x10441aed, 0xc196f0ca), - TOBN(0x3b431f4a, 0x045ad915), TOBN(0x6c11b437, 0xa4afacb1), - TOBN(0x30b0c7db, 0x71fdbbd8), TOBN(0xb642931f, 0xeda65acd), - TOBN(0x4baae6e8, 0x9c92b235), TOBN(0xa73bbd0e, 0x6b3993a1), - TOBN(0xd06d60ec, 0x693dd031), TOBN(0x03cab91b, 0x7156881c), - TOBN(0xd615862f, 0x1db3574b), TOBN(0x485b0185, 0x64bb061a), - TOBN(0x27434988, 0xa0181e06), TOBN(0x2cd61ad4, 0xc1c0c757), - TOBN(0x3effed5a, 0x2ff9f403), TOBN(0x8dc98d8b, 0x62239029), - TOBN(0x2206021e, 0x1f17b70d), TOBN(0xafbec0ca, 0xbf510015), - TOBN(0x9fed7164, 0x80130dfa), TOBN(0x306dc2b5, 0x8a02dcf5), - TOBN(0x48f06620, 0xfeb10fc0), TOBN(0x78d1e1d5, 0x5a57cf51), - TOBN(0xadef8c5a, 0x192ef710), TOBN(0x88afbd4b, 0x3b7431f9), - TOBN(0x7e1f7407, 0x64250c9e), TOBN(0x6e31318d, 0xb58bec07), - TOBN(0xfd4fc4b8, 0x24f89b4e), TOBN(0x65a5dd88, 0x48c36a2a), - TOBN(0x4f1eccff, 0xf024baa7), TOBN(0x22a21cf2, 0xcba94650), - TOBN(0x95d29dee, 0x42a554f7), TOBN(0x828983a5, 0x002ec4ba), - TOBN(0x8112a1f7, 0x8badb73d), TOBN(0x79ea8897, 0xa27c1839), - TOBN(0x8969a5a7, 0xd065fd83), TOBN(0xf49af791, 0xb262a0bc), - TOBN(0xfcdea8b6, 0xaf2b5127), TOBN(0x10e913e1, 0x564c2dbc), - TOBN(0x51239d14, 0xbc21ef51), TOBN(0xe51c3ceb, 0x4ce57292), - TOBN(0x795ff068, 0x47bbcc3b), TOBN(0x86b46e1e, 0xbd7e11e6), - TOBN(0x0ea6ba23, 0x80041ef4), TOBN(0xd72fe505, 0x6262342e), - TOBN(0x8abc6dfd, 0x31d294d4), TOBN(0xbbe017a2, 0x1278c2c9), - TOBN(0xb1fcfa09, 0xb389328a), TOBN(0x322fbc62, 0xd01771b5), - TOBN(0x04c0d063, 0x60b045bf), TOBN(0xdb652edc, 0x10e52d01), - TOBN(0x50ef932c, 0x03ec6627), TOBN(0xde1b3b2d, 0xc1ee50e3), - TOBN(0x5ab7bdc5, 0xdc37a90d), TOBN(0xfea67213, 0x31e33a96), - TOBN(0x6482b5cb, 0x4f2999aa), TOBN(0x38476cc6, 0xb8cbf0dd), - TOBN(0x93ebfacb, 0x173405bb), TOBN(0x15cdafe7, 0xe52369ec), - TOBN(0xd42d5ba4, 0xd935b7db), TOBN(0x648b6004, 0x1c99a4cd), - TOBN(0x785101bd, 0xa3b5545b), TOBN(0x4bf2c38a, 0x9dd67faf), - TOBN(0xb1aadc63, 0x4442449c), TOBN(0xe0e9921a, 0x33ad4fb8), - TOBN(0x5c552313, 0xaa686d82), TOBN(0xdee635fa, 0x465d866c), - TOBN(0xbc3c224a, 0x18ee6e8a), TOBN(0xeed748a6, 0xed42e02f), - TOBN(0xe70f930a, 0xd474cd08), TOBN(0x774ea6ec, 0xfff24adf), - TOBN(0x03e2de1c, 0xf3480d4a), TOBN(0xf0d8edc7, 0xbc8acf1a), - TOBN(0xf23e3303, 0x68295a9c), TOBN(0xfadd5f68, 0xc546a97d), - TOBN(0x895597ad, 0x96f8acb1), TOBN(0xbddd49d5, 0x671bdae2), - TOBN(0x16fcd528, 0x21dd43f4), TOBN(0xa5a45412, 0x6619141a)}, - {TOBN(0x8ce9b6bf, 0xc360e25a), TOBN(0xe6425195, 0x075a1a78), - TOBN(0x9dc756a8, 0x481732f4), TOBN(0x83c0440f, 0x5432b57a), - TOBN(0xc670b3f1, 0xd720281f), TOBN(0x2205910e, 0xd135e051), - TOBN(0xded14b0e, 0xdb052be7), TOBN(0x697b3d27, 0xc568ea39), - TOBN(0x2e599b9a, 0xfb3ff9ed), TOBN(0x28c2e0ab, 0x17f6515c), - TOBN(0x1cbee4fd, 0x474da449), TOBN(0x071279a4, 0x4f364452), - TOBN(0x97abff66, 0x01fbe855), TOBN(0x3ee394e8, 0x5fda51c4), - TOBN(0x190385f6, 0x67597c0b), TOBN(0x6e9fccc6, 0xa27ee34b), - TOBN(0x0b89de93, 0x14092ebb), TOBN(0xf17256bd, 0x428e240c), - TOBN(0xcf89a7f3, 0x93d2f064), TOBN(0x4f57841e, 0xe1ed3b14), - TOBN(0x4ee14405, 0xe708d855), TOBN(0x856aae72, 0x03f1c3d0), - TOBN(0xc8e5424f, 0xbdd7eed5), TOBN(0x3333e4ef, 0x73ab4270), - TOBN(0x3bc77ade, 0xdda492f8), TOBN(0xc11a3aea, 0x78297205), - TOBN(0x5e89a3e7, 0x34931b4c), TOBN(0x17512e2e, 0x9f5694bb), - TOBN(0x5dc349f3, 0x177bf8b6), TOBN(0x232ea4ba, 0x08c7ff3e), - TOBN(0x9c4f9d16, 0xf511145d), TOBN(0xccf109a3, 0x33b379c3), - TOBN(0xe75e7a88, 0xa1f25897), TOBN(0x7ac6961f, 0xa1b5d4d8), - TOBN(0xe3e10773, 0x08f3ed5c), TOBN(0x208a54ec, 0x0a892dfb), - TOBN(0xbe826e19, 0x78660710), TOBN(0x0cf70a97, 0x237df2c8), - TOBN(0x418a7340, 0xed704da5), TOBN(0xa3eeb9a9, 0x08ca33fd), - TOBN(0x49d96233, 0x169bca96), TOBN(0x04d286d4, 0x2da6aafb), - TOBN(0xc09606ec, 0xa0c2fa94), TOBN(0x8869d0d5, 0x23ff0fb3), - TOBN(0xa99937e5, 0xd0150d65), TOBN(0xa92e2503, 0x240c14c9), - TOBN(0x656bf945, 0x108e2d49), TOBN(0x152a733a, 0xa2f59e2b), - TOBN(0xb4323d58, 0x8434a920), TOBN(0xc0af8e93, 0x622103c5), - TOBN(0x667518ef, 0x938dbf9a), TOBN(0xa1843073, 0x83a9cdf2), - TOBN(0x350a94aa, 0x5447ab80), TOBN(0xe5e5a325, 0xc75a3d61), - TOBN(0x74ba507f, 0x68411a9e), TOBN(0x10581fc1, 0x594f70c5), - TOBN(0x60e28570, 0x80eb24a9), TOBN(0x7bedfb4d, 0x488e0cfd), - TOBN(0x721ebbd7, 0xc259cdb8), TOBN(0x0b0da855, 0xbc6390a9), - TOBN(0x2b4d04db, 0xde314c70), TOBN(0xcdbf1fbc, 0x6c32e846), - TOBN(0x33833eab, 0xb162fc9e), TOBN(0x9939b48b, 0xb0dd3ab7), - TOBN(0x5aaa98a7, 0xcb0c9c8c), TOBN(0x75105f30, 0x81c4375c), - TOBN(0xceee5057, 0x5ef1c90f), TOBN(0xb31e065f, 0xc23a17bf), - TOBN(0x5364d275, 0xd4b6d45a), TOBN(0xd363f3ad, 0x62ec8996), - TOBN(0xb5d21239, 0x4391c65b), TOBN(0x84564765, 0xebb41b47), - TOBN(0x20d18ecc, 0x37107c78), TOBN(0xacff3b6b, 0x570c2a66), - TOBN(0x22f975d9, 0x9bd0d845), TOBN(0xef0a0c46, 0xba178fa0), - TOBN(0x1a419651, 0x76b6028e), TOBN(0xc49ec674, 0x248612d4), - TOBN(0x5b6ac4f2, 0x7338af55), TOBN(0x06145e62, 0x7bee5a36), - TOBN(0x33e95d07, 0xe75746b5), TOBN(0x1c1e1f6d, 0xc40c78be), - TOBN(0x967833ef, 0x222ff8e2), TOBN(0x4bedcf6a, 0xb49180ad), - TOBN(0x6b37e9c1, 0x3d7a4c8a), TOBN(0x2748887c, 0x6ddfe760), - TOBN(0xf7055123, 0xaa3a5bbc), TOBN(0x954ff225, 0x7bbb8e74), - TOBN(0xc42b8ab1, 0x97c3dfb9), TOBN(0x55a549b0, 0xcf168154), - TOBN(0xad6748e7, 0xc1b50692), TOBN(0x2775780f, 0x6fc5cbcb), - TOBN(0x4eab80b8, 0xe1c9d7c8), TOBN(0x8c69dae1, 0x3fdbcd56), - TOBN(0x47e6b4fb, 0x9969eace), TOBN(0x002f1085, 0xa705cb5a), - TOBN(0x4e23ca44, 0x6d3fea55), TOBN(0xb4ae9c86, 0xf4810568), - TOBN(0x47bfb91b, 0x2a62f27d), TOBN(0x60deb4c9, 0xd9bac28c), - TOBN(0xa892d894, 0x7de6c34c), TOBN(0x4ee68259, 0x4494587d), - TOBN(0x914ee14e, 0x1a3f8a5b), TOBN(0xbb113eaa, 0x28700385), - TOBN(0x81ca03b9, 0x2115b4c9), TOBN(0x7c163d38, 0x8908cad1), - TOBN(0xc912a118, 0xaa18179a), TOBN(0xe09ed750, 0x886e3081), - TOBN(0xa676e3fa, 0x26f516ca), TOBN(0x753cacf7, 0x8e732f91), - TOBN(0x51592aea, 0x833da8b4), TOBN(0xc626f42f, 0x4cbea8aa), - TOBN(0xef9dc899, 0xa7b56eaf), TOBN(0x00c0e52c, 0x34ef7316), - TOBN(0x5b1e4e24, 0xfe818a86), TOBN(0x9d31e20d, 0xc538be47), - TOBN(0x22eb932d, 0x3ed68974), TOBN(0xe44bbc08, 0x7c4e87c4), - TOBN(0x4121086e, 0x0dde9aef), TOBN(0x8e6b9cff, 0x134f4345), - TOBN(0x96892c1f, 0x711b0eb9), TOBN(0xb905f2c8, 0x780ab954), - TOBN(0xace26309, 0xa20792db), TOBN(0xec8ac9b3, 0x0684e126), - TOBN(0x486ad8b6, 0xb40a2447), TOBN(0x60121fc1, 0x9fe3fb24), - TOBN(0x5626fccf, 0x1a8e3b3f), TOBN(0x4e568622, 0x6ad1f394), - TOBN(0xda7aae0d, 0x196aa5a1), TOBN(0xe0df8c77, 0x1041b5fb), - TOBN(0x451465d9, 0x26b318b7), TOBN(0xc29b6e55, 0x7ab136e9), - TOBN(0x2c2ab48b, 0x71148463), TOBN(0xb5738de3, 0x64454a76), - TOBN(0x54ccf9a0, 0x5a03abe4), TOBN(0x377c0296, 0x0427d58e), - TOBN(0x73f5f0b9, 0x2bb39c1f), TOBN(0x14373f2c, 0xe608d8c5), - TOBN(0xdcbfd314, 0x00fbb805), TOBN(0xdf18fb20, 0x83afdcfb), - TOBN(0x81a57f42, 0x42b3523f), TOBN(0xe958532d, 0x87f650fb), - TOBN(0xaa8dc8b6, 0x8b0a7d7c), TOBN(0x1b75dfb7, 0x150166be), - TOBN(0x90e4f7c9, 0x2d7d1413), TOBN(0x67e2d6b5, 0x9834f597), - TOBN(0x4fd4f4f9, 0xa808c3e8), TOBN(0xaf8237e0, 0xd5281ec1), - TOBN(0x25ab5fdc, 0x84687cee), TOBN(0xc5ded6b1, 0xa5b26c09), - TOBN(0x8e4a5aec, 0xc8ea7650), TOBN(0x23b73e5c, 0x14cc417f), - TOBN(0x2bfb4318, 0x3037bf52), TOBN(0xb61e6db5, 0x78c725d7), - TOBN(0x8efd4060, 0xbbb3e5d7), TOBN(0x2e014701, 0xdbac488e), - TOBN(0xac75cf9a, 0x360aa449), TOBN(0xb70cfd05, 0x79634d08), - TOBN(0xa591536d, 0xfffb15ef), TOBN(0xb2c37582, 0xd07c106c), - TOBN(0xb4293fdc, 0xf50225f9), TOBN(0xc52e175c, 0xb0e12b03), - TOBN(0xf649c3ba, 0xd0a8bf64), TOBN(0x745a8fef, 0xeb8ae3c6), - TOBN(0x30d7e5a3, 0x58321bc3), TOBN(0xb1732be7, 0x0bc4df48), - TOBN(0x1f217993, 0xe9ea5058), TOBN(0xf7a71cde, 0x3e4fd745), - TOBN(0x86cc533e, 0x894c5bbb), TOBN(0x6915c7d9, 0x69d83082), - TOBN(0xa6aa2d05, 0x5815c244), TOBN(0xaeeee592, 0x49b22ce5), - TOBN(0x89e39d13, 0x78135486), TOBN(0x3a275c1f, 0x16b76f2f), - TOBN(0xdb6bcc1b, 0xe036e8f5), TOBN(0x4df69b21, 0x5e4709f5), - TOBN(0xa188b250, 0x2d0f39aa), TOBN(0x622118bb, 0x15a85947), - TOBN(0x2ebf520f, 0xfde0f4fa), TOBN(0xa40e9f29, 0x4860e539), - TOBN(0x7b6a51eb, 0x22b57f0f), TOBN(0x849a33b9, 0x7e80644a), - TOBN(0x50e5d16f, 0x1cf095fe), TOBN(0xd754b54e, 0xec55f002), - TOBN(0x5cfbbb22, 0x236f4a98), TOBN(0x0b0c59e9, 0x066800bb), - TOBN(0x4ac69a8f, 0x5a9a7774), TOBN(0x2b33f804, 0xd6bec948), - TOBN(0xb3729295, 0x32e6c466), TOBN(0x68956d0f, 0x4e599c73), - TOBN(0xa47a249f, 0x155c31cc), TOBN(0x24d80f0d, 0xe1ce284e), - TOBN(0xcd821dfb, 0x988baf01), TOBN(0xe6331a7d, 0xdbb16647), - TOBN(0x1eb8ad33, 0x094cb960), TOBN(0x593cca38, 0xc91bbca5), - TOBN(0x384aac8d, 0x26567456), TOBN(0x40fa0309, 0xc04b6490), - TOBN(0x97834cd6, 0xdab6c8f6), TOBN(0x68a7318d, 0x3f91e55f), - TOBN(0xa00fd04e, 0xfc4d3157), TOBN(0xb56f8ab2, 0x2bf3bdea), - TOBN(0x014f5648, 0x4fa57172), TOBN(0x948c5860, 0x450abdb3), - TOBN(0x342b5df0, 0x0ebd4f08), TOBN(0x3e5168cd, 0x0e82938e), - TOBN(0x7aedc1ce, 0xb0df5dd0), TOBN(0x6bbbc6d9, 0xe5732516), - TOBN(0xc7bfd486, 0x605daaa6), TOBN(0x46fd72b7, 0xbb9a6c9e), - TOBN(0xe4847fb1, 0xa124fb89), TOBN(0x75959cbd, 0xa2d8ffbc), - TOBN(0x42579f65, 0xc8a588ee), TOBN(0x368c92e6, 0xb80b499d), - TOBN(0xea4ef6cd, 0x999a5df1), TOBN(0xaa73bb7f, 0x936fe604), - TOBN(0xf347a70d, 0x6457d188), TOBN(0x86eda86b, 0x8b7a388b), - TOBN(0xb7cdff06, 0x0ccd6013), TOBN(0xbeb1b6c7, 0xd0053fb2), - TOBN(0x0b022387, 0x99240a9f), TOBN(0x1bbb384f, 0x776189b2), - TOBN(0x8695e71e, 0x9066193a), TOBN(0x2eb50097, 0x06ffac7e), - TOBN(0x0654a9c0, 0x4a7d2caa), TOBN(0x6f3fb3d1, 0xa5aaa290), - TOBN(0x835db041, 0xff476e8f), TOBN(0x540b8b0b, 0xc42295e4), - TOBN(0xa5c73ac9, 0x05e214f5), TOBN(0x9a74075a, 0x56a0b638), - TOBN(0x2e4b1090, 0xce9e680b), TOBN(0x57a5b479, 0x6b8d9afa), - TOBN(0x0dca48e7, 0x26bfe65c), TOBN(0x097e391c, 0x7290c307), - TOBN(0x683c462e, 0x6669e72e), TOBN(0xf505be1e, 0x062559ac), - TOBN(0x5fbe3ea1, 0xe3a3035a), TOBN(0x6431ebf6, 0x9cd50da8), - TOBN(0xfd169d5c, 0x1f6407f2), TOBN(0x8d838a95, 0x60fce6b8), - TOBN(0x2a2bfa7f, 0x650006f0), TOBN(0xdfd7dad3, 0x50c0fbb2), - TOBN(0x92452495, 0xccf9ad96), TOBN(0x183bf494, 0xd95635f9), - TOBN(0x02d5df43, 0x4a7bd989), TOBN(0x505385cc, 0xa5431095), - TOBN(0xdd98e67d, 0xfd43f53e), TOBN(0xd61e1a6c, 0x500c34a9), - TOBN(0x5a4b46c6, 0x4a8a3d62), TOBN(0x8469c4d0, 0x247743d2), - TOBN(0x2bb3a13d, 0x88f7e433), TOBN(0x62b23a10, 0x01be5849), - TOBN(0xe83596b4, 0xa63d1a4c), TOBN(0x454e7fea, 0x7d183f3e), - TOBN(0x643fce61, 0x17afb01c), TOBN(0x4e65e5e6, 0x1c4c3638), - TOBN(0x41d85ea1, 0xef74c45b), TOBN(0x2cfbfa66, 0xae328506), - TOBN(0x98b078f5, 0x3ada7da9), TOBN(0xd985fe37, 0xec752fbb), - TOBN(0xeece68fe, 0x5a0148b4), TOBN(0x6f9a55c7, 0x2d78136d), - TOBN(0x232dccc4, 0xd2b729ce), TOBN(0xa27e0dfd, 0x90aafbc4), - TOBN(0x96474452, 0x12b4603e), TOBN(0xa876c551, 0x6b706d14), - TOBN(0xdf145fcf, 0x69a9d412), TOBN(0xe2ab75b7, 0x2d479c34), - TOBN(0x12df9a76, 0x1a23ff97), TOBN(0xc6138992, 0x5d359d10), - TOBN(0x6e51c7ae, 0xfa835f22), TOBN(0x69a79cb1, 0xc0fcc4d9), - TOBN(0xf57f350d, 0x594cc7e1), TOBN(0x3079ca63, 0x3350ab79), - TOBN(0x226fb614, 0x9aff594a), TOBN(0x35afec02, 0x6d59a62b), - TOBN(0x9bee46f4, 0x06ed2c6e), TOBN(0x58da1735, 0x7d939a57), - TOBN(0x44c50402, 0x8fd1797e), TOBN(0xd8853e7c, 0x5ccea6ca), - TOBN(0x4065508d, 0xa35fcd5f), TOBN(0x8965df8c, 0x495ccaeb), - TOBN(0x0f2da850, 0x12e1a962), TOBN(0xee471b94, 0xc1cf1cc4), - TOBN(0xcef19bc8, 0x0a08fb75), TOBN(0x704958f5, 0x81de3591), - TOBN(0x2867f8b2, 0x3aef4f88), TOBN(0x8d749384, 0xea9f9a5f), - TOBN(0x1b385537, 0x8c9049f4), TOBN(0x5be948f3, 0x7b92d8b6), - TOBN(0xd96f725d, 0xb6e2bd6b), TOBN(0x37a222bc, 0x958c454d), - TOBN(0xe7c61abb, 0x8809bf61), TOBN(0x46f07fbc, 0x1346f18d), - TOBN(0xfb567a7a, 0xe87c0d1c), TOBN(0x84a461c8, 0x7ef3d07a), - TOBN(0x0a5adce6, 0xd9278d98), TOBN(0x24d94813, 0x9dfc73e1), - TOBN(0x4f3528b6, 0x054321c3), TOBN(0x2e03fdde, 0x692ea706), - TOBN(0x10e60619, 0x47b533c0), TOBN(0x1a8bc73f, 0x2ca3c055), - TOBN(0xae58d4b2, 0x1bb62b8f), TOBN(0xb2045a73, 0x584a24e3), - TOBN(0x3ab3d5af, 0xbd76e195), TOBN(0x478dd1ad, 0x6938a810), - TOBN(0x6ffab393, 0x6ee3d5cb), TOBN(0xdfb693db, 0x22b361e4), - TOBN(0xf9694496, 0x51dbf1a7), TOBN(0xcab4b4ef, 0x08a2e762), - TOBN(0xe8c92f25, 0xd39bba9a), TOBN(0x850e61bc, 0xf1464d96), - TOBN(0xb7e830e3, 0xdc09508b), TOBN(0xfaf6d2cf, 0x74317655), - TOBN(0x72606ceb, 0xdf690355), TOBN(0x48bb92b3, 0xd0c3ded6), - TOBN(0x65b75484, 0x5c7cf892), TOBN(0xf6cd7ac9, 0xd5d5f01f), - TOBN(0xc2c30a59, 0x96401d69), TOBN(0x91268650, 0xed921878), - TOBN(0x380bf913, 0xb78c558f), TOBN(0x43c0baeb, 0xc8afdaa9), - TOBN(0x377f61d5, 0x54f169d3), TOBN(0xf8da07e3, 0xae5ff20b), - TOBN(0xb676c49d, 0xa8a90ea8), TOBN(0x81c1ff2b, 0x83a29b21), - TOBN(0x383297ac, 0x2ad8d276), TOBN(0x3001122f, 0xba89f982), - TOBN(0xe1d794be, 0x6718e448), TOBN(0x246c1482, 0x7c3e6e13), - TOBN(0x56646ef8, 0x5d26b5ef), TOBN(0x80f5091e, 0x88069cdd), - TOBN(0xc5992e2f, 0x724bdd38), TOBN(0x02e915b4, 0x8471e8c7), - TOBN(0x96ff320a, 0x0d0ff2a9), TOBN(0xbf886487, 0x4384d1a0), - TOBN(0xbbe1e6a6, 0xc93f72d6), TOBN(0xd5f75d12, 0xcad800ea), - TOBN(0xfa40a09f, 0xe7acf117), TOBN(0x32c8cdd5, 0x7581a355), - TOBN(0x74221992, 0x7023c499), TOBN(0xa8afe5d7, 0x38ec3901), - TOBN(0x5691afcb, 0xa90e83f0), TOBN(0x41bcaa03, 0x0b8f8eac), - TOBN(0xe38b5ff9, 0x8d2668d5), TOBN(0x0715281a, 0x7ad81965), - TOBN(0x1bc8fc7c, 0x03c6ce11), TOBN(0xcbbee6e2, 0x8b650436), - TOBN(0x06b00fe8, 0x0cdb9808), TOBN(0x17d6e066, 0xfe3ed315), - TOBN(0x2e9d38c6, 0x4d0b5018), TOBN(0xab8bfd56, 0x844dcaef), - TOBN(0x42894a59, 0x513aed8b), TOBN(0xf77f3b6d, 0x314bd07a), - TOBN(0xbbdecb8f, 0x8e42b582), TOBN(0xf10e2fa8, 0xd2390fe6), - TOBN(0xefb95022, 0x62a2f201), TOBN(0x4d59ea50, 0x50ee32b0), - TOBN(0xd87f7728, 0x6da789a8), TOBN(0xcf98a2cf, 0xf79492c4), - TOBN(0xf9577239, 0x720943c2), TOBN(0xba044cf5, 0x3990b9d0), - TOBN(0x5aa8e823, 0x95f2884a), TOBN(0x834de6ed, 0x0278a0af), - TOBN(0xc8e1ee9a, 0x5f25bd12), TOBN(0x9259ceaa, 0x6f7ab271), - TOBN(0x7e6d97a2, 0x77d00b76), TOBN(0x5c0c6eea, 0xa437832a), - TOBN(0x5232c20f, 0x5606b81d), TOBN(0xabd7b375, 0x0d991ee5), - TOBN(0x4d2bfe35, 0x8632d951), TOBN(0x78f85146, 0x98ed9364), - TOBN(0x951873f0, 0xf30c3282), TOBN(0x0da8ac80, 0xa789230b), - TOBN(0x3ac7789c, 0x5398967f), TOBN(0xa69b8f7f, 0xbdda0fb5), - TOBN(0xe5db7717, 0x6add8545), TOBN(0x1b71cb66, 0x72c49b66), - TOBN(0xd8560739, 0x68421d77), TOBN(0x03840fe8, 0x83e3afea), - TOBN(0xb391dad5, 0x1ec69977), TOBN(0xae243fb9, 0x307f6726), - TOBN(0xc88ac87b, 0xe8ca160c), TOBN(0x5174cced, 0x4ce355f4), - TOBN(0x98a35966, 0xe58ba37d), TOBN(0xfdcc8da2, 0x7817335d), - TOBN(0x5b752830, 0x83fbc7bf), TOBN(0x68e419d4, 0xd9c96984), - TOBN(0x409a39f4, 0x02a40380), TOBN(0x88940faf, 0x1fe977bc), - TOBN(0xc640a94b, 0x8f8edea6), TOBN(0x1e22cd17, 0xed11547d), - TOBN(0xe28568ce, 0x59ffc3e2), TOBN(0x60aa1b55, 0xc1dee4e7), - TOBN(0xc67497c8, 0x837cb363), TOBN(0x06fb438a, 0x105a2bf2), - TOBN(0x30357ec4, 0x500d8e20), TOBN(0x1ad9095d, 0x0670db10), - TOBN(0x7f589a05, 0xc73b7cfd), TOBN(0xf544607d, 0x880d6d28), - TOBN(0x17ba93b1, 0xa20ef103), TOBN(0xad859130, 0x6ba6577b), - TOBN(0x65c91cf6, 0x6fa214a0), TOBN(0xd7d49c6c, 0x27990da5), - TOBN(0xecd9ec8d, 0x20bb569d), TOBN(0xbd4b2502, 0xeeffbc33), - TOBN(0x2056ca5a, 0x6bed0467), TOBN(0x7916a1f7, 0x5b63728c), - TOBN(0xd4f9497d, 0x53a4f566), TOBN(0x89734664, 0x97b56810), - TOBN(0xf8e1da74, 0x0494a621), TOBN(0x82546a93, 0x8d011c68), - TOBN(0x1f3acb19, 0xc61ac162), TOBN(0x52f8fa9c, 0xabad0d3e), - TOBN(0x15356523, 0xb4b7ea43), TOBN(0x5a16ad61, 0xae608125), - TOBN(0xb0bcb87f, 0x4faed184), TOBN(0x5f236b1d, 0x5029f45f), - TOBN(0xd42c7607, 0x0bc6b1fc), TOBN(0xc644324e, 0x68aefce3), - TOBN(0x8e191d59, 0x5c5d8446), TOBN(0xc0208077, 0x13ae1979), - TOBN(0xadcaee55, 0x3ba59cc7), TOBN(0x20ed6d6b, 0xa2cb81ba), - TOBN(0x0952ba19, 0xb6efcffc), TOBN(0x60f12d68, 0x97c0b87c), - TOBN(0x4ee2c7c4, 0x9caa30bc), TOBN(0x767238b7, 0x97fbff4e), - TOBN(0xebc73921, 0x501b5d92), TOBN(0x3279e3df, 0xc2a37737), - TOBN(0x9fc12bc8, 0x6d197543), TOBN(0xfa94dc6f, 0x0a40db4e), - TOBN(0x7392b41a, 0x530ccbbd), TOBN(0x87c82146, 0xea823525), - TOBN(0xa52f984c, 0x05d98d0c), TOBN(0x2ae57d73, 0x5ef6974c), - TOBN(0x9377f7bf, 0x3042a6dd), TOBN(0xb1a007c0, 0x19647a64), - TOBN(0xfaa9079a, 0x0cca9767), TOBN(0x3d81a25b, 0xf68f72d5), - TOBN(0x752067f8, 0xff81578e), TOBN(0x78622150, 0x9045447d), - TOBN(0xc0c22fcf, 0x0505aa6f), TOBN(0x1030f0a6, 0x6bed1c77), - TOBN(0x31f29f15, 0x1f0bd739), TOBN(0x2d7989c7, 0xe6debe85), - TOBN(0x5c070e72, 0x8e677e98), TOBN(0x0a817bd3, 0x06e81fd5), - TOBN(0xc110d830, 0xb0f2ac95), TOBN(0x48d0995a, 0xab20e64e), - TOBN(0x0f3e00e1, 0x7729cd9a), TOBN(0x2a570c20, 0xdd556946), - TOBN(0x912dbcfd, 0x4e86214d), TOBN(0x2d014ee2, 0xcf615498), - TOBN(0x55e2b1e6, 0x3530d76e), TOBN(0xc5135ae4, 0xfd0fd6d1), - TOBN(0x0066273a, 0xd4f3049f), TOBN(0xbb8e9893, 0xe7087477), - TOBN(0x2dba1ddb, 0x14c6e5fd), TOBN(0xdba37886, 0x51f57e6c), - TOBN(0x5aaee0a6, 0x5a72f2cf), TOBN(0x1208bfbf, 0x7bea5642), - TOBN(0xf5c6aa3b, 0x67872c37), TOBN(0xd726e083, 0x43f93224), - TOBN(0x1854daa5, 0x061f1658), TOBN(0xc0016df1, 0xdf0cd2b3), - TOBN(0xc2a3f23e, 0x833d50de), TOBN(0x73b681d2, 0xbbbd3017), - TOBN(0x2f046dc4, 0x3ac343c0), TOBN(0x9c847e7d, 0x85716421), - TOBN(0xe1e13c91, 0x0917eed4), TOBN(0x3fc9eebd, 0x63a1b9c6), - TOBN(0x0f816a72, 0x7fe02299), TOBN(0x6335ccc2, 0x294f3319), - TOBN(0x3820179f, 0x4745c5be), TOBN(0xe647b782, 0x922f066e), - TOBN(0xc22e49de, 0x02cafb8a), TOBN(0x299bc2ff, 0xfcc2eccc), - TOBN(0x9a8feea2, 0x6e0e8282), TOBN(0xa627278b, 0xfe893205), - TOBN(0xa7e19733, 0x7933e47b), TOBN(0xf4ff6b13, 0x2e766402), - TOBN(0xa4d8be0a, 0x98440d9f), TOBN(0x658f5c2f, 0x38938808), - TOBN(0x90b75677, 0xc95b3b3e), TOBN(0xfa044269, 0x3137b6ff), - TOBN(0x077b039b, 0x43c47c29), TOBN(0xcca95dd3, 0x8a6445b2), - TOBN(0x0b498ba4, 0x2333fc4c), TOBN(0x274f8e68, 0xf736a1b1), - TOBN(0x6ca348fd, 0x5f1d4b2e), TOBN(0x24d3be78, 0xa8f10199), - TOBN(0x8535f858, 0xca14f530), TOBN(0xa6e7f163, 0x5b982e51), - TOBN(0x847c8512, 0x36e1bf62), TOBN(0xf6a7c58e, 0x03448418), - TOBN(0x583f3703, 0xf9374ab6), TOBN(0x864f9195, 0x6e564145), - TOBN(0x33bc3f48, 0x22526d50), TOBN(0x9f323c80, 0x1262a496), - TOBN(0xaa97a7ae, 0x3f046a9a), TOBN(0x70da183e, 0xdf8a039a), - TOBN(0x5b68f71c, 0x52aa0ba6), TOBN(0x9be0fe51, 0x21459c2d), - TOBN(0xc1e17eb6, 0xcbc613e5), TOBN(0x33131d55, 0x497ea61c), - TOBN(0x2f69d39e, 0xaf7eded5), TOBN(0x73c2f434, 0xde6af11b), - TOBN(0x4ca52493, 0xa4a375fa), TOBN(0x5f06787c, 0xb833c5c2), - TOBN(0x814e091f, 0x3e6e71cf), TOBN(0x76451f57, 0x8b746666)}, - {TOBN(0x80f9bdef, 0x694db7e0), TOBN(0xedca8787, 0xb9fcddc6), - TOBN(0x51981c34, 0x03b8dce1), TOBN(0x4274dcf1, 0x70e10ba1), - TOBN(0xf72743b8, 0x6def6d1a), TOBN(0xd25b1670, 0xebdb1866), - TOBN(0xc4491e8c, 0x050c6f58), TOBN(0x2be2b2ab, 0x87fbd7f5), - TOBN(0x3e0e5c9d, 0xd111f8ec), TOBN(0xbcc33f8d, 0xb7c4e760), - TOBN(0x702f9a91, 0xbd392a51), TOBN(0x7da4a795, 0xc132e92d), - TOBN(0x1a0b0ae3, 0x0bb1151b), TOBN(0x54febac8, 0x02e32251), - TOBN(0xea3a5082, 0x694e9e78), TOBN(0xe58ffec1, 0xe4fe40b8), - TOBN(0xf85592fc, 0xd1e0cf9e), TOBN(0xdea75f0d, 0xc0e7b2e8), - TOBN(0xc04215cf, 0xc135584e), TOBN(0x174fc727, 0x2f57092a), - TOBN(0xe7277877, 0xeb930bea), TOBN(0x504caccb, 0x5eb02a5a), - TOBN(0xf9fe08f7, 0xf5241b9b), TOBN(0xe7fb62f4, 0x8d5ca954), - TOBN(0xfbb8349d, 0x29c4120b), TOBN(0x9f94391f, 0xc0d0d915), - TOBN(0xc4074fa7, 0x5410ba51), TOBN(0xa66adbf6, 0x150a5911), - TOBN(0xc164543c, 0x34bfca38), TOBN(0xe0f27560, 0xb9e1ccfc), - TOBN(0x99da0f53, 0xe820219c), TOBN(0xe8234498, 0xc6b4997a), - TOBN(0xcfb88b76, 0x9d4c5423), TOBN(0x9e56eb10, 0xb0521c49), - TOBN(0x418e0b5e, 0xbe8700a1), TOBN(0x00cbaad6, 0xf93cb58a), - TOBN(0xe923fbde, 0xd92a5e67), TOBN(0xca4979ac, 0x1f347f11), - TOBN(0x89162d85, 0x6bc0585b), TOBN(0xdd6254af, 0xac3c70e3), - TOBN(0x7b23c513, 0x516e19e4), TOBN(0x56e2e847, 0xc5c4d593), - TOBN(0x9f727d73, 0x5ce71ef6), TOBN(0x5b6304a6, 0xf79a44c5), - TOBN(0x6638a736, 0x3ab7e433), TOBN(0x1adea470, 0xfe742f83), - TOBN(0xe054b854, 0x5b7fc19f), TOBN(0xf935381a, 0xba1d0698), - TOBN(0x546eab2d, 0x799e9a74), TOBN(0x96239e0e, 0xa949f729), - TOBN(0xca274c6b, 0x7090055a), TOBN(0x835142c3, 0x9020c9b0), - TOBN(0xa405667a, 0xa2e8807f), TOBN(0x29f2c085, 0x1aa3d39e), - TOBN(0xcc555d64, 0x42fc72f5), TOBN(0xe856e0e7, 0xfbeacb3c), - TOBN(0xb5504f9d, 0x918e4936), TOBN(0x65035ef6, 0xb2513982), - TOBN(0x0553a0c2, 0x6f4d9cb9), TOBN(0x6cb10d56, 0xbea85509), - TOBN(0x48d957b7, 0xa242da11), TOBN(0x16a4d3dd, 0x672b7268), - TOBN(0x3d7e637c, 0x8502a96b), TOBN(0x27c7032b, 0x730d463b), - TOBN(0xbdc02b18, 0xe4136a14), TOBN(0xbacf969d, 0x678e32bf), - TOBN(0xc98d89a3, 0xdd9c3c03), TOBN(0x7b92420a, 0x23becc4f), - TOBN(0xd4b41f78, 0xc64d565c), TOBN(0x9f969d00, 0x10f28295), - TOBN(0xec7f7f76, 0xb13d051a), TOBN(0x08945e1e, 0xa92da585), - TOBN(0x55366b7d, 0x5846426f), TOBN(0xe7d09e89, 0x247d441d), - TOBN(0x510b404d, 0x736fbf48), TOBN(0x7fa003d0, 0xe784bd7d), - TOBN(0x25f7614f, 0x17fd9596), TOBN(0x49e0e0a1, 0x35cb98db), - TOBN(0x2c65957b, 0x2e83a76a), TOBN(0x5d40da8d, 0xcddbe0f8), - TOBN(0xf2b8c405, 0x050bad24), TOBN(0x8918426d, 0xc2aa4823), - TOBN(0x2aeab3dd, 0xa38365a7), TOBN(0x72031717, 0x7c91b690), - TOBN(0x8b00d699, 0x60a94120), TOBN(0x478a255d, 0xe99eaeec), - TOBN(0xbf656a5f, 0x6f60aafd), TOBN(0xdfd7cb75, 0x5dee77b3), - TOBN(0x37f68bb4, 0xa595939d), TOBN(0x03556479, 0x28740217), - TOBN(0x8e740e7c, 0x84ad7612), TOBN(0xd89bc843, 0x9044695f), - TOBN(0xf7f3da5d, 0x85a9184d), TOBN(0x562563bb, 0x9fc0b074), - TOBN(0x06d2e6aa, 0xf88a888e), TOBN(0x612d8643, 0x161fbe7c), - TOBN(0x465edba7, 0xf64085e7), TOBN(0xb230f304, 0x29aa8511), - TOBN(0x53388426, 0xcda2d188), TOBN(0x90885735, 0x4b666649), - TOBN(0x6f02ff9a, 0x652f54f6), TOBN(0x65c82294, 0x5fae2bf0), - TOBN(0x7816ade0, 0x62f5eee3), TOBN(0xdcdbdf43, 0xfcc56d70), - TOBN(0x9fb3bba3, 0x54530bb2), TOBN(0xbde3ef77, 0xcb0869ea), - TOBN(0x89bc9046, 0x0b431163), TOBN(0x4d03d7d2, 0xe4819a35), - TOBN(0x33ae4f9e, 0x43b6a782), TOBN(0x216db307, 0x9c88a686), - TOBN(0x91dd88e0, 0x00ffedd9), TOBN(0xb280da9f, 0x12bd4840), - TOBN(0x32a7cb8a, 0x1635e741), TOBN(0xfe14008a, 0x78be02a7), - TOBN(0x3fafb334, 0x1b7ae030), TOBN(0x7fd508e7, 0x5add0ce9), - TOBN(0x72c83219, 0xd607ad51), TOBN(0x0f229c0a, 0x8d40964a), - TOBN(0x1be2c336, 0x1c878da2), TOBN(0xe0c96742, 0xeab2ab86), - TOBN(0x458f8691, 0x3e538cd7), TOBN(0xa7001f6c, 0x8e08ad53), - TOBN(0x52b8c6e6, 0xbf5d15ff), TOBN(0x548234a4, 0x011215dd), - TOBN(0xff5a9d2d, 0x3d5b4045), TOBN(0xb0ffeeb6, 0x4a904190), - TOBN(0x55a3aca4, 0x48607f8b), TOBN(0x8cbd665c, 0x30a0672a), - TOBN(0x87f834e0, 0x42583068), TOBN(0x02da2aeb, 0xf3f6e683), - TOBN(0x6b763e5d, 0x05c12248), TOBN(0x7230378f, 0x65a8aefc), - TOBN(0x93bd80b5, 0x71e8e5ca), TOBN(0x53ab041c, 0xb3b62524), - TOBN(0x1b860513, 0x6c9c552e), TOBN(0xe84d402c, 0xd5524e66), - TOBN(0xa37f3573, 0xf37f5937), TOBN(0xeb0f6c7d, 0xd1e4fca5), - TOBN(0x2965a554, 0xac8ab0fc), TOBN(0x17fbf56c, 0x274676ac), - TOBN(0x2e2f6bd9, 0xacf7d720), TOBN(0x41fc8f88, 0x10224766), - TOBN(0x517a14b3, 0x85d53bef), TOBN(0xdae327a5, 0x7d76a7d1), - TOBN(0x6ad0a065, 0xc4818267), TOBN(0x33aa189b, 0x37c1bbc1), - TOBN(0x64970b52, 0x27392a92), TOBN(0x21699a1c, 0x2d1535ea), - TOBN(0xcd20779c, 0xc2d7a7fd), TOBN(0xe3186059, 0x99c83cf2), - TOBN(0x9b69440b, 0x72c0b8c7), TOBN(0xa81497d7, 0x7b9e0e4d), - TOBN(0x515d5c89, 0x1f5f82dc), TOBN(0x9a7f67d7, 0x6361079e), - TOBN(0xa8da81e3, 0x11a35330), TOBN(0xe44990c4, 0x4b18be1b), - TOBN(0xc7d5ed95, 0xaf103e59), TOBN(0xece8aba7, 0x8dac9261), - TOBN(0xbe82b099, 0x9394b8d3), TOBN(0x6830f09a, 0x16adfe83), - TOBN(0x250a29b4, 0x88172d01), TOBN(0x8b20bd65, 0xcaff9e02), - TOBN(0xb8a7661e, 0xe8a6329a), TOBN(0x4520304d, 0xd3fce920), - TOBN(0xae45da1f, 0x2b47f7ef), TOBN(0xe07f5288, 0x5bffc540), - TOBN(0xf7997009, 0x3464f874), TOBN(0x2244c2cd, 0xa6fa1f38), - TOBN(0x43c41ac1, 0x94d7d9b1), TOBN(0x5bafdd82, 0xc82e7f17), - TOBN(0xdf0614c1, 0x5fda0fca), TOBN(0x74b043a7, 0xa8ae37ad), - TOBN(0x3ba6afa1, 0x9e71734c), TOBN(0x15d5437e, 0x9c450f2e), - TOBN(0x4a5883fe, 0x67e242b1), TOBN(0x5143bdc2, 0x2c1953c2), - TOBN(0x542b8b53, 0xfc5e8920), TOBN(0x363bf9a8, 0x9a9cee08), - TOBN(0x02375f10, 0xc3486e08), TOBN(0x2037543b, 0x8c5e70d2), - TOBN(0x7109bccc, 0x625640b4), TOBN(0xcbc1051e, 0x8bc62c3b), - TOBN(0xf8455fed, 0x803f26ea), TOBN(0x6badceab, 0xeb372424), - TOBN(0xa2a9ce7c, 0x6b53f5f9), TOBN(0x64246595, 0x1b176d99), - TOBN(0xb1298d36, 0xb95c081b), TOBN(0x53505bb8, 0x1d9a9ee6), - TOBN(0x3f6f9e61, 0xf2ba70b0), TOBN(0xd07e16c9, 0x8afad453), - TOBN(0x9f1694bb, 0xe7eb4a6a), TOBN(0xdfebced9, 0x3cb0bc8e), - TOBN(0x92d3dcdc, 0x53868c8b), TOBN(0x174311a2, 0x386107a6), - TOBN(0x4109e07c, 0x689b4e64), TOBN(0x30e4587f, 0x2df3dcb6), - TOBN(0x841aea31, 0x0811b3b2), TOBN(0x6144d41d, 0x0cce43ea), - TOBN(0x464c4581, 0x2a9a7803), TOBN(0xd03d371f, 0x3e158930), - TOBN(0xc676d7f2, 0xb1f3390b), TOBN(0x9f7a1b8c, 0xa5b61272), - TOBN(0x4ebebfc9, 0xc2e127a9), TOBN(0x4602500c, 0x5dd997bf), - TOBN(0x7f09771c, 0x4711230f), TOBN(0x058eb37c, 0x020f09c1), - TOBN(0xab693d4b, 0xfee5e38b), TOBN(0x9289eb1f, 0x4653cbc0), - TOBN(0xbecf46ab, 0xd51b9cf5), TOBN(0xd2aa9c02, 0x9f0121af), - TOBN(0x36aaf7d2, 0xe90dc274), TOBN(0x909e4ea0, 0x48b95a3c), - TOBN(0xe6b70496, 0x6f32dbdb), TOBN(0x672188a0, 0x8b030b3e), - TOBN(0xeeffe5b3, 0xcfb617e2), TOBN(0x87e947de, 0x7c82709e), - TOBN(0xa44d2b39, 0x1770f5a7), TOBN(0xe4d4d791, 0x0e44eb82), - TOBN(0x42e69d1e, 0x3f69712a), TOBN(0xbf11c4d6, 0xac6a820e), - TOBN(0xb5e7f3e5, 0x42c4224c), TOBN(0xd6b4e81c, 0x449d941c), - TOBN(0x5d72bd16, 0x5450e878), TOBN(0x6a61e28a, 0xee25ac54), - TOBN(0x33272094, 0xe6f1cd95), TOBN(0x7512f30d, 0x0d18673f), - TOBN(0x32f7a4ca, 0x5afc1464), TOBN(0x2f095656, 0x6bbb977b), - TOBN(0x586f47ca, 0xa8226200), TOBN(0x02c868ad, 0x1ac07369), - TOBN(0x4ef2b845, 0xc613acbe), TOBN(0x43d7563e, 0x0386054c), - TOBN(0x54da9dc7, 0xab952578), TOBN(0xb5423df2, 0x26e84d0b), - TOBN(0xa8b64eeb, 0x9b872042), TOBN(0xac205782, 0x5990f6df), - TOBN(0x4ff696eb, 0x21f4c77a), TOBN(0x1a79c3e4, 0xaab273af), - TOBN(0x29bc922e, 0x9436b3f1), TOBN(0xff807ef8, 0xd6d9a27a), - TOBN(0x82acea3d, 0x778f22a0), TOBN(0xfb10b2e8, 0x5b5e7469), - TOBN(0xc0b16980, 0x2818ee7d), TOBN(0x011afff4, 0xc91c1a2f), - TOBN(0x95a6d126, 0xad124418), TOBN(0x31c081a5, 0xe72e295f), - TOBN(0x36bb283a, 0xf2f4db75), TOBN(0xd115540f, 0x7acef462), - TOBN(0xc7f3a8f8, 0x33f6746c), TOBN(0x21e46f65, 0xfea990ca), - TOBN(0x915fd5c5, 0xcaddb0a9), TOBN(0xbd41f016, 0x78614555), - TOBN(0x346f4434, 0x426ffb58), TOBN(0x80559436, 0x14dbc204), - TOBN(0xf3dd20fe, 0x5a969b7f), TOBN(0x9d59e956, 0xe899a39a), - TOBN(0xf1b0971c, 0x8ad4cf4b), TOBN(0x03448860, 0x2ffb8fb8), - TOBN(0xf071ac3c, 0x65340ba4), TOBN(0x408d0596, 0xb27fd758), - TOBN(0xe7c78ea4, 0x98c364b0), TOBN(0xa4aac4a5, 0x051e8ab5), - TOBN(0xb9e1d560, 0x485d9002), TOBN(0x9acd518a, 0x88844455), - TOBN(0xe4ca688f, 0xd06f56c0), TOBN(0xa48af70d, 0xdf027972), - TOBN(0x691f0f04, 0x5e9a609d), TOBN(0xa9dd82cd, 0xee61270e), - TOBN(0x8903ca63, 0xa0ef18d3), TOBN(0x9fb7ee35, 0x3d6ca3bd), - TOBN(0xa7b4a09c, 0xabf47d03), TOBN(0x4cdada01, 0x1c67de8e), - TOBN(0x52003749, 0x9355a244), TOBN(0xe77fd2b6, 0x4f2151a9), - TOBN(0x695d6cf6, 0x66b4efcb), TOBN(0xc5a0cacf, 0xda2cfe25), - TOBN(0x104efe5c, 0xef811865), TOBN(0xf52813e8, 0x9ea5cc3d), - TOBN(0x855683dc, 0x40b58dbc), TOBN(0x0338ecde, 0x175fcb11), - TOBN(0xf9a05637, 0x74921592), TOBN(0xb4f1261d, 0xb9bb9d31), - TOBN(0x551429b7, 0x4e9c5459), TOBN(0xbe182e6f, 0x6ea71f53), - TOBN(0xd3a3b07c, 0xdfc50573), TOBN(0x9ba1afda, 0x62be8d44), - TOBN(0x9bcfd2cb, 0x52ab65d3), TOBN(0xdf11d547, 0xa9571802), - TOBN(0x099403ee, 0x02a2404a), TOBN(0x497406f4, 0x21088a71), - TOBN(0x99479409, 0x5004ae71), TOBN(0xbdb42078, 0xa812c362), - TOBN(0x2b72a30f, 0xd8828442), TOBN(0x283add27, 0xfcb5ed1c), - TOBN(0xf7c0e200, 0x66a40015), TOBN(0x3e3be641, 0x08b295ef), - TOBN(0xac127dc1, 0xe038a675), TOBN(0x729deff3, 0x8c5c6320), - TOBN(0xb7df8fd4, 0xa90d2c53), TOBN(0x9b74b0ec, 0x681e7cd3), - TOBN(0x5cb5a623, 0xdab407e5), TOBN(0xcdbd3615, 0x76b340c6), - TOBN(0xa184415a, 0x7d28392c), TOBN(0xc184c1d8, 0xe96f7830), - TOBN(0xc3204f19, 0x81d3a80f), TOBN(0xfde0c841, 0xc8e02432), - TOBN(0x78203b3e, 0x8149e0c1), TOBN(0x5904bdbb, 0x08053a73), - TOBN(0x30fc1dd1, 0x101b6805), TOBN(0x43c223bc, 0x49aa6d49), - TOBN(0x9ed67141, 0x7a174087), TOBN(0x311469a0, 0xd5997008), - TOBN(0xb189b684, 0x5e43fc61), TOBN(0xf3282375, 0xe0d3ab57), - TOBN(0x4fa34b67, 0xb1181da8), TOBN(0x621ed0b2, 0x99ee52b8), - TOBN(0x9b178de1, 0xad990676), TOBN(0xd51de67b, 0x56d54065), - TOBN(0x2a2c27c4, 0x7538c201), TOBN(0x33856ec8, 0x38a40f5c), - TOBN(0x2522fc15, 0xbe6cdcde), TOBN(0x1e603f33, 0x9f0c6f89), - TOBN(0x7994edc3, 0x103e30a6), TOBN(0x033a00db, 0x220c853e), - TOBN(0xd3cfa409, 0xf7bb7fd7), TOBN(0x70f8781e, 0x462d18f6), - TOBN(0xbbd82980, 0x687fe295), TOBN(0x6eef4c32, 0x595669f3), - TOBN(0x86a9303b, 0x2f7e85c3), TOBN(0x5fce4621, 0x71988f9b), - TOBN(0x5b935bf6, 0xc138acb5), TOBN(0x30ea7d67, 0x25661212), - TOBN(0xef1eb5f4, 0xe51ab9a2), TOBN(0x0587c98a, 0xae067c78), - TOBN(0xb3ce1b3c, 0x77ca9ca6), TOBN(0x2a553d4d, 0x54b5f057), - TOBN(0xc7898236, 0x4da29ec2), TOBN(0xdbdd5d13, 0xb9c57316), - TOBN(0xc57d6e6b, 0x2cd80d47), TOBN(0x80b460cf, 0xfe9e7391), - TOBN(0x98648cab, 0xf963c31e), TOBN(0x67f9f633, 0xcc4d32fd), - TOBN(0x0af42a9d, 0xfdf7c687), TOBN(0x55f292a3, 0x0b015ea7), - TOBN(0x89e468b2, 0xcd21ab3d), TOBN(0xe504f022, 0xc393d392), - TOBN(0xab21e1d4, 0xa5013af9), TOBN(0xe3283f78, 0xc2c28acb), - TOBN(0xf38b35f6, 0x226bf99f), TOBN(0xe8354274, 0x0e291e69), - TOBN(0x61673a15, 0xb20c162d), TOBN(0xc101dc75, 0xb04fbdbe), - TOBN(0x8323b4c2, 0x255bd617), TOBN(0x6c969693, 0x6c2a9154), - TOBN(0xc6e65860, 0x62679387), TOBN(0x8e01db0c, 0xb8c88e23), - TOBN(0x33c42873, 0x893a5559), TOBN(0x7630f04b, 0x47a3e149), - TOBN(0xb5d80805, 0xddcf35f8), TOBN(0x582ca080, 0x77dfe732), - TOBN(0x2c7156e1, 0x0b1894a0), TOBN(0x92034001, 0xd81c68c0), - TOBN(0xed225d00, 0xc8b115b5), TOBN(0x237f9c22, 0x83b907f2), - TOBN(0x0ea2f32f, 0x4470e2c0), TOBN(0xb725f7c1, 0x58be4e95), - TOBN(0x0f1dcafa, 0xb1ae5463), TOBN(0x59ed5187, 0x1ba2fc04), - TOBN(0xf6e0f316, 0xd0115d4d), TOBN(0x5180b12f, 0xd3691599), - TOBN(0x157e32c9, 0x527f0a41), TOBN(0x7b0b081d, 0xa8e0ecc0), - TOBN(0x6dbaaa8a, 0xbf4f0dd0), TOBN(0x99b289c7, 0x4d252696), - TOBN(0x79b7755e, 0xdbf864fe), TOBN(0x6974e2b1, 0x76cad3ab), - TOBN(0x35dbbee2, 0x06ddd657), TOBN(0xe7cbdd11, 0x2ff3a96d), - TOBN(0x88381968, 0x076be758), TOBN(0x2d737e72, 0x08c91f5d), - TOBN(0x5f83ab62, 0x86ec3776), TOBN(0x98aa649d, 0x945fa7a1), - TOBN(0xf477ec37, 0x72ef0933), TOBN(0x66f52b1e, 0x098c17b1), - TOBN(0x9eec58fb, 0xd803738b), TOBN(0x91aaade7, 0xe4e86aa4), - TOBN(0x6b1ae617, 0xa5b51492), TOBN(0x63272121, 0xbbc45974), - TOBN(0x7e0e28f0, 0x862c5129), TOBN(0x0a8f79a9, 0x3321a4a0), - TOBN(0xe26d1664, 0x5041c88f), TOBN(0x0571b805, 0x53233e3a), - TOBN(0xd1b0ccde, 0xc9520711), TOBN(0x55a9e4ed, 0x3c8b84bf), - TOBN(0x9426bd39, 0xa1fef314), TOBN(0x4f5f638e, 0x6eb93f2b), - TOBN(0xba2a1ed3, 0x2bf9341b), TOBN(0xd63c1321, 0x4d42d5a9), - TOBN(0xd2964a89, 0x316dc7c5), TOBN(0xd1759606, 0xca511851), - TOBN(0xd8a9201f, 0xf9e6ed35), TOBN(0xb7b5ee45, 0x6736925a), - TOBN(0x0a83fbbc, 0x99581af7), TOBN(0x3076bc40, 0x64eeb051), - TOBN(0x5511c98c, 0x02dec312), TOBN(0x270de898, 0x238dcb78), - TOBN(0x2cf4cf9c, 0x539c08c9), TOBN(0xa70cb65e, 0x38d3b06e), - TOBN(0xb12ec10e, 0xcfe57bbd), TOBN(0x82c7b656, 0x35a0c2b5), - TOBN(0xddc7d5cd, 0x161c67bd), TOBN(0xe32e8985, 0xae3a32cc), - TOBN(0x7aba9444, 0xd11a5529), TOBN(0xe964ed02, 0x2427fa1a), - TOBN(0x1528392d, 0x24a1770a), TOBN(0xa152ce2c, 0x12c72fcd), - TOBN(0x714553a4, 0x8ec07649), TOBN(0x18b4c290, 0x459dd453), - TOBN(0xea32b714, 0x7b64b110), TOBN(0xb871bfa5, 0x2e6f07a2), - TOBN(0xb67112e5, 0x9e2e3c9b), TOBN(0xfbf250e5, 0x44aa90f6), - TOBN(0xf77aedb8, 0xbd539006), TOBN(0x3b0cdf9a, 0xd172a66f), - TOBN(0xedf69fea, 0xf8c51187), TOBN(0x05bb67ec, 0x741e4da7), - TOBN(0x47df0f32, 0x08114345), TOBN(0x56facb07, 0xbb9792b1), - TOBN(0xf3e007e9, 0x8f6229e4), TOBN(0x62d103f4, 0x526fba0f), - TOBN(0x4f33bef7, 0xb0339d79), TOBN(0x9841357b, 0xb59bfec1), - TOBN(0xfa8dbb59, 0xc34e6705), TOBN(0xc3c7180b, 0x7fdaa84c), - TOBN(0xf95872fc, 0xa4108537), TOBN(0x8750cc3b, 0x932a3e5a), - TOBN(0xb61cc69d, 0xb7275d7d), TOBN(0xffa0168b, 0x2e59b2e9), - TOBN(0xca032abc, 0x6ecbb493), TOBN(0x1d86dbd3, 0x2c9082d8), - TOBN(0xae1e0b67, 0xe28ef5ba), TOBN(0x2c9a4699, 0xcb18e169), - TOBN(0x0ecd0e33, 0x1e6bbd20), TOBN(0x571b360e, 0xaf5e81d2), - TOBN(0xcd9fea58, 0x101c1d45), TOBN(0x6651788e, 0x18880452), - TOBN(0xa9972635, 0x1f8dd446), TOBN(0x44bed022, 0xe37281d0), - TOBN(0x094b2b2d, 0x33da525d), TOBN(0xf193678e, 0x13144fd8), - TOBN(0xb8ab5ba4, 0xf4c1061d), TOBN(0x4343b5fa, 0xdccbe0f4), - TOBN(0xa8702371, 0x63812713), TOBN(0x47bf6d2d, 0xf7611d93), - TOBN(0x46729b8c, 0xbd21e1d7), TOBN(0x7484d4e0, 0xd629e77d), - TOBN(0x830e6eea, 0x60dbac1f), TOBN(0x23d8c484, 0xda06a2f7), - TOBN(0x896714b0, 0x50ca535b), TOBN(0xdc8d3644, 0xebd97a9b), - TOBN(0x106ef9fa, 0xb12177b4), TOBN(0xf79bf464, 0x534d5d9c), - TOBN(0x2537a349, 0xa6ab360b), TOBN(0xc7c54253, 0xa00c744f), - TOBN(0xb3c7a047, 0xe5911a76), TOBN(0x61ffa5c8, 0x647f1ee7), - TOBN(0x15aed36f, 0x8f56ab42), TOBN(0x6a0d41b0, 0xa3ff9ac9), - TOBN(0x68f469f5, 0xcc30d357), TOBN(0xbe9adf81, 0x6b72be96), - TOBN(0x1cd926fe, 0x903ad461), TOBN(0x7e89e38f, 0xcaca441b), - TOBN(0xf0f82de5, 0xfacf69d4), TOBN(0x363b7e76, 0x4775344c), - TOBN(0x6894f312, 0xb2e36d04), TOBN(0x3c6cb4fe, 0x11d1c9a5), - TOBN(0x85d9c339, 0x4008e1f2), TOBN(0x5e9a85ea, 0x249f326c), - TOBN(0xdc35c60a, 0x678c5e06), TOBN(0xc08b944f, 0x9f86fba9), - TOBN(0xde40c02c, 0x89f71f0f), TOBN(0xad8f3e31, 0xff3da3c0), - TOBN(0x3ea5096b, 0x42125ded), TOBN(0x13879cbf, 0xa7379183), - TOBN(0x6f4714a5, 0x6b306a0b), TOBN(0x359c2ea6, 0x67646c5e), - TOBN(0xfacf8943, 0x07726368), TOBN(0x07a58935, 0x65ff431e), - TOBN(0x24d661d1, 0x68754ab0), TOBN(0x801fce1d, 0x6f429a76), - TOBN(0xc068a85f, 0xa58ce769), TOBN(0xedc35c54, 0x5d5eca2b), - TOBN(0xea31276f, 0xa3f660d1), TOBN(0xa0184ebe, 0xb8fc7167), - TOBN(0x0f20f21a, 0x1d8db0ae), TOBN(0xd96d095f, 0x56c35e12), - TOBN(0xedf402b5, 0xf8c2a25b), TOBN(0x1bb772b9, 0x059204b6), - TOBN(0x50cbeae2, 0x19b4e34c), TOBN(0x93109d80, 0x3fa0845a), - TOBN(0x54f7ccf7, 0x8ef59fb5), TOBN(0x3b438fe2, 0x88070963), - TOBN(0x9e28c659, 0x31f3ba9b), TOBN(0x9cc31b46, 0xead9da92), - TOBN(0x3c2f0ba9, 0xb733aa5f), TOBN(0xdece47cb, 0xf05af235), - TOBN(0xf8e3f715, 0xa2ac82a5), TOBN(0xc97ba641, 0x2203f18a), - TOBN(0xc3af5504, 0x09c11060), TOBN(0x56ea2c05, 0x46af512d), - TOBN(0xfac28daf, 0xf3f28146), TOBN(0x87fab43a, 0x959ef494)}, - {TOBN(0x09891641, 0xd4c5105f), TOBN(0x1ae80f8e, 0x6d7fbd65), - TOBN(0x9d67225f, 0xbee6bdb0), TOBN(0x3b433b59, 0x7fc4d860), - TOBN(0x44e66db6, 0x93e85638), TOBN(0xf7b59252, 0xe3e9862f), - TOBN(0xdb785157, 0x665c32ec), TOBN(0x702fefd7, 0xae362f50), - TOBN(0x3754475d, 0x0fefb0c3), TOBN(0xd48fb56b, 0x46d7c35d), - TOBN(0xa070b633, 0x363798a4), TOBN(0xae89f3d2, 0x8fdb98e6), - TOBN(0x970b89c8, 0x6363d14c), TOBN(0x89817521, 0x67abd27d), - TOBN(0x9bf7d474, 0x44d5a021), TOBN(0xb3083baf, 0xcac72aee), - TOBN(0x389741de, 0xbe949a44), TOBN(0x638e9388, 0x546a4fa5), - TOBN(0x3fe6419c, 0xa0047bdc), TOBN(0x7047f648, 0xaaea57ca), - TOBN(0x54e48a90, 0x41fbab17), TOBN(0xda8e0b28, 0x576bdba2), - TOBN(0xe807eebc, 0xc72afddc), TOBN(0x07d3336d, 0xf42577bf), - TOBN(0x62a8c244, 0xbfe20925), TOBN(0x91c19ac3, 0x8fdce867), - TOBN(0x5a96a5d5, 0xdd387063), TOBN(0x61d587d4, 0x21d324f6), - TOBN(0xe87673a2, 0xa37173ea), TOBN(0x23848008, 0x53778b65), - TOBN(0x10f8441e, 0x05bab43e), TOBN(0xfa11fe12, 0x4621efbe), - TOBN(0x047b772e, 0x81685d7b), TOBN(0x23f27d81, 0xbf34a976), - TOBN(0xc27608e2, 0x915f48ef), TOBN(0x3b0b43fa, 0xa521d5c3), - TOBN(0x7613fb26, 0x63ca7284), TOBN(0x7f5729b4, 0x1d4db837), - TOBN(0x87b14898, 0x583b526b), TOBN(0x00b732a6, 0xbbadd3d1), - TOBN(0x8e02f426, 0x2048e396), TOBN(0x436b50b6, 0x383d9de4), - TOBN(0xf78d3481, 0x471e85ad), TOBN(0x8b01ea6a, 0xd005c8d6), - TOBN(0xd3c7afee, 0x97015c07), TOBN(0x46cdf1a9, 0x4e3ba2ae), - TOBN(0x7a42e501, 0x83d3a1d2), TOBN(0xd54b5268, 0xb541dff4), - TOBN(0x3f24cf30, 0x4e23e9bc), TOBN(0x4387f816, 0x126e3624), - TOBN(0x26a46a03, 0x3b0b6d61), TOBN(0xaf1bc845, 0x8b2d777c), - TOBN(0x25c401ba, 0x527de79c), TOBN(0x0e1346d4, 0x4261bbb6), - TOBN(0x4b96c44b, 0x287b4bc7), TOBN(0x658493c7, 0x5254562f), - TOBN(0x23f949fe, 0xb8a24a20), TOBN(0x17ebfed1, 0xf52ca53f), - TOBN(0x9b691bbe, 0xbcfb4853), TOBN(0x5617ff6b, 0x6278a05d), - TOBN(0x241b34c5, 0xe3c99ebd), TOBN(0xfc64242e, 0x1784156a), - TOBN(0x4206482f, 0x695d67df), TOBN(0xb967ce0e, 0xee27c011), - TOBN(0x65db3751, 0x21c80b5d), TOBN(0x2e7a563c, 0xa31ecca0), - TOBN(0xe56ffc4e, 0x5238a07e), TOBN(0x3d6c2966, 0x32ced854), - TOBN(0xe99d7d1a, 0xaf70b885), TOBN(0xafc3bad9, 0x2d686459), - TOBN(0x9c78bf46, 0x0cc8ba5b), TOBN(0x5a439519, 0x18955aa3), - TOBN(0xf8b517a8, 0x5fe4e314), TOBN(0xe60234d0, 0xfcb8906f), - TOBN(0xffe542ac, 0xf2061b23), TOBN(0x287e191f, 0x6b4cb59c), - TOBN(0x21857ddc, 0x09d877d8), TOBN(0x1c23478c, 0x14678941), - TOBN(0xbbf0c056, 0xb6e05ea4), TOBN(0x82da4b53, 0xb01594fe), - TOBN(0xf7526791, 0xfadb8608), TOBN(0x049e832d, 0x7b74cdf6), - TOBN(0xa43581cc, 0xc2b90a34), TOBN(0x73639eb8, 0x9360b10c), - TOBN(0x4fba331f, 0xe1e4a71b), TOBN(0x6ffd6b93, 0x8072f919), - TOBN(0x6e53271c, 0x65679032), TOBN(0x67206444, 0xf14272ce), - TOBN(0xc0f734a3, 0xb2335834), TOBN(0x9526205a, 0x90ef6860), - TOBN(0xcb8be717, 0x04e2bb0d), TOBN(0x2418871e, 0x02f383fa), - TOBN(0xd7177681, 0x4082c157), TOBN(0xcc914ad0, 0x29c20073), - TOBN(0xf186c1eb, 0xe587e728), TOBN(0x6fdb3c22, 0x61bcd5fd), - TOBN(0x30d014a6, 0xf2f9f8e9), TOBN(0x963ece23, 0x4fec49d2), - TOBN(0x862025c5, 0x9605a8d9), TOBN(0x39874445, 0x19f8929a), - TOBN(0x01b6ff65, 0x12bf476a), TOBN(0x598a64d8, 0x09cf7d91), - TOBN(0xd7ec7749, 0x93be56ca), TOBN(0x10899785, 0xcbb33615), - TOBN(0xb8a092fd, 0x02eee3ad), TOBN(0xa86b3d35, 0x30145270), - TOBN(0x323d98c6, 0x8512b675), TOBN(0x4b8bc785, 0x62ebb40f), - TOBN(0x7d301f54, 0x413f9cde), TOBN(0xa5e4fb4f, 0x2bab5664), - TOBN(0x1d2b252d, 0x1cbfec23), TOBN(0xfcd576bb, 0xe177120d), - TOBN(0x04427d3e, 0x83731a34), TOBN(0x2bb9028e, 0xed836e8e), - TOBN(0xb36acff8, 0xb612ca7c), TOBN(0xb88fe5ef, 0xd3d9c73a), - TOBN(0xbe2a6bc6, 0xedea4eb3), TOBN(0x43b93133, 0x488eec77), - TOBN(0xf41ff566, 0xb17106e1), TOBN(0x469e9172, 0x654efa32), - TOBN(0xb4480f04, 0x41c23fa3), TOBN(0xb4712eb0, 0xc1989a2e), - TOBN(0x3ccbba0f, 0x93a29ca7), TOBN(0x6e205c14, 0xd619428c), - TOBN(0x90db7957, 0xb3641686), TOBN(0x0432691d, 0x45ac8b4e), - TOBN(0x07a759ac, 0xf64e0350), TOBN(0x0514d89c, 0x9c972517), - TOBN(0x1701147f, 0xa8e67fc3), TOBN(0x9e2e0b8b, 0xab2085be), - TOBN(0xd5651824, 0xac284e57), TOBN(0x890d4325, 0x74893664), - TOBN(0x8a7c5e6e, 0xc55e68a3), TOBN(0xbf12e90b, 0x4339c85a), - TOBN(0x31846b85, 0xf922b655), TOBN(0x9a54ce4d, 0x0bf4d700), - TOBN(0xd7f4e83a, 0xf1a14295), TOBN(0x916f955c, 0xb285d4f9), - TOBN(0xe57bb0e0, 0x99ffdaba), TOBN(0x28a43034, 0xeab0d152), - TOBN(0x0a36ffa2, 0xb8a9cef8), TOBN(0x5517407e, 0xb9ec051a), - TOBN(0x9c796096, 0xea68e672), TOBN(0x853db5fb, 0xfb3c77fb), - TOBN(0x21474ba9, 0xe864a51a), TOBN(0x6c267699, 0x6e8a1b8b), - TOBN(0x7c823626, 0x94120a28), TOBN(0xe61e9a48, 0x8383a5db), - TOBN(0x7dd75003, 0x9f84216d), TOBN(0xab020d07, 0xad43cd85), - TOBN(0x9437ae48, 0xda12c659), TOBN(0x6449c2eb, 0xe65452ad), - TOBN(0xcc7c4c1c, 0x2cf9d7c1), TOBN(0x1320886a, 0xee95e5ab), - TOBN(0xbb7b9056, 0xbeae170c), TOBN(0xc8a5b250, 0xdbc0d662), - TOBN(0x4ed81432, 0xc11d2303), TOBN(0x7da66912, 0x1f03769f), - TOBN(0x3ac7a5fd, 0x84539828), TOBN(0x14dada94, 0x3bccdd02), - TOBN(0x8b84c321, 0x7ef6b0d1), TOBN(0x52a9477a, 0x7c933f22), - TOBN(0x5ef6728a, 0xfd440b82), TOBN(0x5c3bd859, 0x6ce4bd5e), - TOBN(0x918b80f5, 0xf22c2d3e), TOBN(0x368d5040, 0xb7bb6cc5), - TOBN(0xb66142a1, 0x2695a11c), TOBN(0x60ac583a, 0xeb19ea70), - TOBN(0x317cbb98, 0x0eab2437), TOBN(0x8cc08c55, 0x5e2654c8), - TOBN(0xfe2d6520, 0xe6d8307f), TOBN(0xe9f147f3, 0x57428993), - TOBN(0x5f9c7d14, 0xd2fd6cf1), TOBN(0xa3ecd064, 0x2d4fcbb0), - TOBN(0xad83fef0, 0x8e7341f7), TOBN(0x643f23a0, 0x3a63115c), - TOBN(0xd38a78ab, 0xe65ab743), TOBN(0xbf7c75b1, 0x35edc89c), - TOBN(0x3dd8752e, 0x530df568), TOBN(0xf85c4a76, 0xe308c682), - TOBN(0x4c9955b2, 0xe68acf37), TOBN(0xa544df3d, 0xab32af85), - TOBN(0x4b8ec3f5, 0xa25cf493), TOBN(0x4d8f2764, 0x1a622feb), - TOBN(0x7bb4f7aa, 0xf0dcbc49), TOBN(0x7de551f9, 0x70bbb45b), - TOBN(0xcfd0f3e4, 0x9f2ca2e5), TOBN(0xece58709, 0x1f5c76ef), - TOBN(0x32920edd, 0x167d79ae), TOBN(0x039df8a2, 0xfa7d7ec1), - TOBN(0xf46206c0, 0xbb30af91), TOBN(0x1ff5e2f5, 0x22676b59), - TOBN(0x11f4a039, 0x6ea51d66), TOBN(0x506c1445, 0x807d7a26), - TOBN(0x60da5705, 0x755a9b24), TOBN(0x8fc8cc32, 0x1f1a319e), - TOBN(0x83642d4d, 0x9433d67d), TOBN(0x7fa5cb8f, 0x6a7dd296), - TOBN(0x576591db, 0x9b7bde07), TOBN(0x13173d25, 0x419716fb), - TOBN(0xea30599d, 0xd5b340ff), TOBN(0xfc6b5297, 0xb0fe76c5), - TOBN(0x1c6968c8, 0xab8f5adc), TOBN(0xf723c7f5, 0x901c928d), - TOBN(0x4203c321, 0x9773d402), TOBN(0xdf7c6aa3, 0x1b51dd47), - TOBN(0x3d49e37a, 0x552be23c), TOBN(0x57febee8, 0x0b5a6e87), - TOBN(0xc5ecbee4, 0x7bd8e739), TOBN(0x79d44994, 0xae63bf75), - TOBN(0x168bd00f, 0x38fb8923), TOBN(0x75d48ee4, 0xd0533130), - TOBN(0x554f77aa, 0xdb5cdf33), TOBN(0x3396e896, 0x3c696769), - TOBN(0x2fdddbf2, 0xd3fd674e), TOBN(0xbbb8f6ee, 0x99d0e3e5), - TOBN(0x51b90651, 0xcbae2f70), TOBN(0xefc4bc05, 0x93aaa8eb), - TOBN(0x8ecd8689, 0xdd1df499), TOBN(0x1aee99a8, 0x22f367a5), - TOBN(0x95d485b9, 0xae8274c5), TOBN(0x6c14d445, 0x7d30b39c), - TOBN(0xbafea90b, 0xbcc1ef81), TOBN(0x7c5f317a, 0xa459a2ed), - TOBN(0x01211075, 0x4ef44227), TOBN(0xa17bed6e, 0xdc20f496), - TOBN(0x0cdfe424, 0x819853cd), TOBN(0x13793298, 0xf71e2ce7), - TOBN(0x3c1f3078, 0xdbbe307b), TOBN(0x6dd1c20e, 0x76ee9936), - TOBN(0x23ee4b57, 0x423caa20), TOBN(0x4ac3793b, 0x8efb840e), - TOBN(0x934438eb, 0xed1f8ca0), TOBN(0x3e546658, 0x4ebb25a2), - TOBN(0xc415af0e, 0xc069896f), TOBN(0xc13eddb0, 0x9a5aa43d), - TOBN(0x7a04204f, 0xd49eb8f6), TOBN(0xd0d5bdfc, 0xd74f1670), - TOBN(0x3697e286, 0x56fc0558), TOBN(0x10207371, 0x01cebade), - TOBN(0x5f87e690, 0x0647a82b), TOBN(0x908e0ed4, 0x8f40054f), - TOBN(0xa9f633d4, 0x79853803), TOBN(0x8ed13c9a, 0x4a28b252), - TOBN(0x3e2ef676, 0x1f460f64), TOBN(0x53930b9b, 0x36d06336), - TOBN(0x347073ac, 0x8fc4979b), TOBN(0x84380e0e, 0x5ecd5597), - TOBN(0xe3b22c6b, 0xc4fe3c39), TOBN(0xba4a8153, 0x6c7bebdf), - TOBN(0xf23ab6b7, 0x25693459), TOBN(0x53bc3770, 0x14922b11), - TOBN(0x4645c8ab, 0x5afc60db), TOBN(0xaa022355, 0x20b9f2a3), - TOBN(0x52a2954c, 0xce0fc507), TOBN(0x8c2731bb, 0x7ce1c2e7), - TOBN(0xf39608ab, 0x18a0339d), TOBN(0xac7a658d, 0x3735436c), - TOBN(0xb22c2b07, 0xcd992b4f), TOBN(0x4e83daec, 0xf40dcfd4), - TOBN(0x8a34c7be, 0x2f39ea3e), TOBN(0xef0c005f, 0xb0a56d2e), - TOBN(0x62731f6a, 0x6edd8038), TOBN(0x5721d740, 0x4e3cb075), - TOBN(0x1ea41511, 0xfbeeee1b), TOBN(0xd1ef5e73, 0xef1d0c05), - TOBN(0x42feefd1, 0x73c07d35), TOBN(0xe530a00a, 0x8a329493), - TOBN(0x5d55b7fe, 0xf15ebfb0), TOBN(0x549de03c, 0xd322491a), - TOBN(0xf7b5f602, 0x745b3237), TOBN(0x3632a3a2, 0x1ab6e2b6), - TOBN(0x0d3bba89, 0x0ef59f78), TOBN(0x0dfc6443, 0xc9e52b9a), - TOBN(0x1dc79699, 0x72631447), TOBN(0xef033917, 0xb3be20b1), - TOBN(0x0c92735d, 0xb1383948), TOBN(0xc1fc29a2, 0xc0dd7d7d), - TOBN(0x6485b697, 0x403ed068), TOBN(0x13bfaab3, 0xaac93bdc), - TOBN(0x410dc6a9, 0x0deeaf52), TOBN(0xb003fb02, 0x4c641c15), - TOBN(0x1384978c, 0x5bc504c4), TOBN(0x37640487, 0x864a6a77), - TOBN(0x05991bc6, 0x222a77da), TOBN(0x62260a57, 0x5e47eb11), - TOBN(0xc7af6613, 0xf21b432c), TOBN(0x22f3acc9, 0xab4953e9), - TOBN(0x52934922, 0x8e41d155), TOBN(0x4d024568, 0x3ac059ef), - TOBN(0xb0201755, 0x4d884411), TOBN(0xce8055cf, 0xa59a178f), - TOBN(0xcd77d1af, 0xf6204549), TOBN(0xa0a00a3e, 0xc7066759), - TOBN(0x471071ef, 0x0272c229), TOBN(0x009bcf6b, 0xd3c4b6b0), - TOBN(0x2a2638a8, 0x22305177), TOBN(0xd51d59df, 0x41645bbf), - TOBN(0xa81142fd, 0xc0a7a3c0), TOBN(0xa17eca6d, 0x4c7063ee), - TOBN(0x0bb887ed, 0x60d9dcec), TOBN(0xd6d28e51, 0x20ad2455), - TOBN(0xebed6308, 0xa67102ba), TOBN(0x042c3114, 0x8bffa408), - TOBN(0xfd099ac5, 0x8aa68e30), TOBN(0x7a6a3d7c, 0x1483513e), - TOBN(0xffcc6b75, 0xba2d8f0c), TOBN(0x54dacf96, 0x1e78b954), - TOBN(0xf645696f, 0xa4a9af89), TOBN(0x3a411940, 0x06ac98ec), - TOBN(0x41b8b3f6, 0x22a67a20), TOBN(0x2d0b1e0f, 0x99dec626), - TOBN(0x27c89192, 0x40be34e8), TOBN(0xc7162b37, 0x91907f35), - TOBN(0x90188ec1, 0xa956702b), TOBN(0xca132f7d, 0xdf93769c), - TOBN(0x3ece44f9, 0x0e2025b4), TOBN(0x67aaec69, 0x0c62f14c), - TOBN(0xad741418, 0x22e3cc11), TOBN(0xcf9b75c3, 0x7ff9a50e), - TOBN(0x02fa2b16, 0x4d348272), TOBN(0xbd99d61a, 0x9959d56d), - TOBN(0xbc4f19db, 0x18762916), TOBN(0xcc7cce50, 0x49c1ac80), - TOBN(0x4d59ebaa, 0xd846bd83), TOBN(0x8775a9dc, 0xa9202849), - TOBN(0x07ec4ae1, 0x6e1f4ca9), TOBN(0x27eb5875, 0xba893f11), - TOBN(0x00284d51, 0x662cc565), TOBN(0x82353a6b, 0x0db4138d), - TOBN(0xd9c7aaaa, 0xaa32a594), TOBN(0xf5528b5e, 0xa5669c47), - TOBN(0xf3220231, 0x2f23c5ff), TOBN(0xe3e8147a, 0x6affa3a1), - TOBN(0xfb423d5c, 0x202ddda0), TOBN(0x3d6414ac, 0x6b871bd4), - TOBN(0x586f82e1, 0xa51a168a), TOBN(0xb712c671, 0x48ae5448), - TOBN(0x9a2e4bd1, 0x76233eb8), TOBN(0x0188223a, 0x78811ca9), - TOBN(0x553c5e21, 0xf7c18de1), TOBN(0x7682e451, 0xb27bb286), - TOBN(0x3ed036b3, 0x0e51e929), TOBN(0xf487211b, 0xec9cb34f), - TOBN(0x0d094277, 0x0c24efc8), TOBN(0x0349fd04, 0xbef737a4), - TOBN(0x6d1c9dd2, 0x514cdd28), TOBN(0x29c135ff, 0x30da9521), - TOBN(0xea6e4508, 0xf78b0b6f), TOBN(0x176f5dd2, 0x678c143c), - TOBN(0x08148418, 0x4be21e65), TOBN(0x27f7525c, 0xe7df38c4), - TOBN(0x1fb70e09, 0x748ab1a4), TOBN(0x9cba50a0, 0x5efe4433), - TOBN(0x7846c7a6, 0x15f75af2), TOBN(0x2a7c2c57, 0x5ee73ea8), - TOBN(0x42e566a4, 0x3f0a449a), TOBN(0x45474c3b, 0xad90fc3d), - TOBN(0x7447be3d, 0x8b61d057), TOBN(0x3e9d1cf1, 0x3a4ec092), - TOBN(0x1603e453, 0xf380a6e6), TOBN(0x0b86e431, 0x9b1437c2), - TOBN(0x7a4173f2, 0xef29610a), TOBN(0x8fa729a7, 0xf03d57f7), - TOBN(0x3e186f6e, 0x6c9c217e), TOBN(0xbe1d3079, 0x91919524), - TOBN(0x92a62a70, 0x153d4fb1), TOBN(0x32ed3e34, 0xd68c2f71), - TOBN(0xd785027f, 0x9eb1a8b7), TOBN(0xbc37eb77, 0xc5b22fe8), - TOBN(0x466b34f0, 0xb9d6a191), TOBN(0x008a89af, 0x9a05f816), - TOBN(0x19b028fb, 0x7d42c10a), TOBN(0x7fe8c92f, 0x49b3f6b8), - TOBN(0x58907cc0, 0xa5a0ade3), TOBN(0xb3154f51, 0x559d1a7c), - TOBN(0x5066efb6, 0xd9790ed6), TOBN(0xa77a0cbc, 0xa6aa793b), - TOBN(0x1a915f3c, 0x223e042e), TOBN(0x1c5def04, 0x69c5874b), - TOBN(0x0e830078, 0x73b6c1da), TOBN(0x55cf85d2, 0xfcd8557a), - TOBN(0x0f7c7c76, 0x0460f3b1), TOBN(0x87052acb, 0x46e58063), - TOBN(0x09212b80, 0x907eae66), TOBN(0x3cb068e0, 0x4d721c89), - TOBN(0xa87941ae, 0xdd45ac1c), TOBN(0xde8d5c0d, 0x0daa0dbb), - TOBN(0xda421fdc, 0xe3502e6e), TOBN(0xc8944201, 0x4d89a084), - TOBN(0x7307ba5e, 0xf0c24bfb), TOBN(0xda212beb, 0x20bde0ef), - TOBN(0xea2da24b, 0xf82ce682), TOBN(0x058d3816, 0x07f71fe4), - TOBN(0x35a02462, 0x5ffad8de), TOBN(0xcd7b05dc, 0xaadcefab), - TOBN(0xd442f8ed, 0x1d9f54ec), TOBN(0x8be3d618, 0xb2d3b5ca), - TOBN(0xe2220ed0, 0xe06b2ce2), TOBN(0x82699a5f, 0x1b0da4c0), - TOBN(0x3ff106f5, 0x71c0c3a7), TOBN(0x8f580f5a, 0x0d34180c), - TOBN(0x4ebb120e, 0x22d7d375), TOBN(0x5e5782cc, 0xe9513675), - TOBN(0x2275580c, 0x99c82a70), TOBN(0xe8359fbf, 0x15ea8c4c), - TOBN(0x53b48db8, 0x7b415e70), TOBN(0xaacf2240, 0x100c6014), - TOBN(0x9faaccf5, 0xe4652f1d), TOBN(0xbd6fdd2a, 0xd56157b2), - TOBN(0xa4f4fb1f, 0x6261ec50), TOBN(0x244e55ad, 0x476bcd52), - TOBN(0x881c9305, 0x047d320b), TOBN(0x1ca983d5, 0x6181263f), - TOBN(0x354e9a44, 0x278fb8ee), TOBN(0xad2dbc0f, 0x396e4964), - TOBN(0x723f3aa2, 0x9268b3de), TOBN(0x0d1ca29a, 0xe6e0609a), - TOBN(0x794866aa, 0x6cf44252), TOBN(0x0b59f3e3, 0x01af87ed), - TOBN(0xe234e5ff, 0x7f4a6c51), TOBN(0xa8768fd2, 0x61dc2f7e), - TOBN(0xdafc7332, 0x0a94d81f), TOBN(0xd7f84282, 0x06938ce1), - TOBN(0xae0b3c0e, 0x0546063e), TOBN(0x7fbadcb2, 0x5d61abc6), - TOBN(0xd5d7a2c9, 0x369ac400), TOBN(0xa5978d09, 0xae67d10c), - TOBN(0x290f211e, 0x4f85eaac), TOBN(0xe61e2ad1, 0xfacac681), - TOBN(0xae125225, 0x388384cd), TOBN(0xa7fb68e9, 0xccfde30f), - TOBN(0x7a59b936, 0x3daed4c2), TOBN(0x80a9aa40, 0x2606f789), - TOBN(0xb40c1ea5, 0xf6a6d90a), TOBN(0x948364d3, 0x514d5885), - TOBN(0x062ebc60, 0x70985182), TOBN(0xa6db5b0e, 0x33310895), - TOBN(0x64a12175, 0xe329c2f5), TOBN(0xc5f25bd2, 0x90ea237e), - TOBN(0x7915c524, 0x2d0a4c23), TOBN(0xeb5d26e4, 0x6bb3cc52), - TOBN(0x369a9116, 0xc09e2c92), TOBN(0x0c527f92, 0xcf182cf8), - TOBN(0x9e591938, 0x2aede0ac), TOBN(0xb2922208, 0x6cc34939), - TOBN(0x3c9d8962, 0x99a34361), TOBN(0x3c81836d, 0xc1905fe6), - TOBN(0x4bfeb57f, 0xa001ec5a), TOBN(0xe993f5bb, 0xa0dc5dba), - TOBN(0x47884109, 0x724a1380), TOBN(0x8a0369ab, 0x32fe9a04), - TOBN(0xea068d60, 0x8c927db8), TOBN(0xbf5f37cf, 0x94655741), - TOBN(0x47d402a2, 0x04b6c7ea), TOBN(0x4551c295, 0x6af259cb), - TOBN(0x698b71e7, 0xed77ee8b), TOBN(0xbddf7bd0, 0xf309d5c7), - TOBN(0x6201c22c, 0x34e780ca), TOBN(0xab04f7d8, 0x4c295ef4), - TOBN(0x1c947294, 0x4313a8ce), TOBN(0xe532e4ac, 0x92ca4cfe), - TOBN(0x89738f80, 0xd0a7a97a), TOBN(0xec088c88, 0xa580fd5b), - TOBN(0x612b1ecc, 0x42ce9e51), TOBN(0x8f9840fd, 0xb25fdd2a), - TOBN(0x3cda78c0, 0x01e7f839), TOBN(0x546b3d3a, 0xece05480), - TOBN(0x271719a9, 0x80d30916), TOBN(0x45497107, 0x584c20c4), - TOBN(0xaf8f9478, 0x5bc78608), TOBN(0x28c7d484, 0x277e2a4c), - TOBN(0xfce01767, 0x88a2ffe4), TOBN(0xdc506a35, 0x28e169a5), - TOBN(0x0ea10861, 0x7af9c93a), TOBN(0x1ed24361, 0x03fa0e08), - TOBN(0x96eaaa92, 0xa3d694e7), TOBN(0xc0f43b4d, 0xef50bc74), - TOBN(0xce6aa58c, 0x64114db4), TOBN(0x8218e8ea, 0x7c000fd4), - TOBN(0xac815dfb, 0x185f8844), TOBN(0xcd7e90cb, 0x1557abfb), - TOBN(0x23d16655, 0xafbfecdf), TOBN(0x80f3271f, 0x085cac4a), - TOBN(0x7fc39aa7, 0xd0e62f47), TOBN(0x88d519d1, 0x460a48e5), - TOBN(0x59559ac4, 0xd28f101e), TOBN(0x7981d9e9, 0xca9ae816), - TOBN(0x5c38652c, 0x9ac38203), TOBN(0x86eaf87f, 0x57657fe5), - TOBN(0x568fc472, 0xe21f5416), TOBN(0x2afff39c, 0xe7e597b5), - TOBN(0x3adbbb07, 0x256d4eab), TOBN(0x22598692, 0x8285ab89), - TOBN(0x35f8112a, 0x041caefe), TOBN(0x95df02e3, 0xa5064c8b), - TOBN(0x4d63356e, 0xc7004bf3), TOBN(0x230a08f4, 0xdb83c7de), - TOBN(0xca27b270, 0x8709a7b7), TOBN(0x0d1c4cc4, 0xcb9abd2d), - TOBN(0x8a0bc66e, 0x7550fee8), TOBN(0x369cd4c7, 0x9cf7247e), - TOBN(0x75562e84, 0x92b5b7e7), TOBN(0x8fed0da0, 0x5802af7b), - TOBN(0x6a7091c2, 0xe48fb889), TOBN(0x26882c13, 0x7b8a9d06), - TOBN(0xa2498663, 0x1b82a0e2), TOBN(0x844ed736, 0x3518152d), - TOBN(0x282f476f, 0xd86e27c7), TOBN(0xa04edaca, 0x04afefdc), - TOBN(0x8b256ebc, 0x6119e34d), TOBN(0x56a413e9, 0x0787d78b)}, - {TOBN(0x82ee061d, 0x5a74be50), TOBN(0xe41781c4, 0xdea16ff5), - TOBN(0xe0b0c81e, 0x99bfc8a2), TOBN(0x624f4d69, 0x0b547e2d), - TOBN(0x3a83545d, 0xbdcc9ae4), TOBN(0x2573dbb6, 0x409b1e8e), - TOBN(0x482960c4, 0xa6c93539), TOBN(0xf01059ad, 0x5ae18798), - TOBN(0x715c9f97, 0x3112795f), TOBN(0xe8244437, 0x984e6ee1), - TOBN(0x55cb4858, 0xecb66bcd), TOBN(0x7c136735, 0xabaffbee), - TOBN(0x54661595, 0x5dbec38e), TOBN(0x51c0782c, 0x388ad153), - TOBN(0x9ba4c53a, 0xc6e0952f), TOBN(0x27e6782a, 0x1b21dfa8), - TOBN(0x682f903d, 0x4ed2dbc2), TOBN(0x0eba59c8, 0x7c3b2d83), - TOBN(0x8e9dc84d, 0x9c7e9335), TOBN(0x5f9b21b0, 0x0eb226d7), - TOBN(0xe33bd394, 0xaf267bae), TOBN(0xaa86cc25, 0xbe2e15ae), - TOBN(0x4f0bf67d, 0x6a8ec500), TOBN(0x5846aa44, 0xf9630658), - TOBN(0xfeb09740, 0xe2c2bf15), TOBN(0x627a2205, 0xa9e99704), - TOBN(0xec8d73d0, 0xc2fbc565), TOBN(0x223eed8f, 0xc20c8de8), - TOBN(0x1ee32583, 0xa8363b49), TOBN(0x1a0b6cb9, 0xc9c2b0a6), - TOBN(0x49f7c3d2, 0x90dbc85c), TOBN(0xa8dfbb97, 0x1ef4c1ac), - TOBN(0xafb34d4c, 0x65c7c2ab), TOBN(0x1d4610e7, 0xe2c5ea84), - TOBN(0x893f6d1b, 0x973c4ab5), TOBN(0xa3cdd7e9, 0x945ba5c4), - TOBN(0x60514983, 0x064417ee), TOBN(0x1459b23c, 0xad6bdf2b), - TOBN(0x23b2c341, 0x5cf726c3), TOBN(0x3a829635, 0x32d6354a), - TOBN(0x294f901f, 0xab192c18), TOBN(0xec5fcbfe, 0x7030164f), - TOBN(0xe2e2fcb7, 0xe2246ba6), TOBN(0x1e7c88b3, 0x221a1a0c), - TOBN(0x72c7dd93, 0xc92d88c5), TOBN(0x41c2148e, 0x1106fb59), - TOBN(0x547dd4f5, 0xa0f60f14), TOBN(0xed9b52b2, 0x63960f31), - TOBN(0x6c8349eb, 0xb0a5b358), TOBN(0xb154c5c2, 0x9e7e2ed6), - TOBN(0xcad5eccf, 0xeda462db), TOBN(0xf2d6dbe4, 0x2de66b69), - TOBN(0x426aedf3, 0x8665e5b2), TOBN(0x488a8513, 0x7b7f5723), - TOBN(0x15cc43b3, 0x8bcbb386), TOBN(0x27ad0af3, 0xd791d879), - TOBN(0xc16c236e, 0x846e364f), TOBN(0x7f33527c, 0xdea50ca0), - TOBN(0xc4810775, 0x0926b86d), TOBN(0x6c2a3609, 0x0598e70c), - TOBN(0xa6755e52, 0xf024e924), TOBN(0xe0fa07a4, 0x9db4afca), - TOBN(0x15c3ce7d, 0x66831790), TOBN(0x5b4ef350, 0xa6cbb0d6), - TOBN(0x2c4aafc4, 0xb6205969), TOBN(0x42563f02, 0xf6c7854f), - TOBN(0x016aced5, 0x1d983b48), TOBN(0xfeb356d8, 0x99949755), - TOBN(0x8c2a2c81, 0xd1a39bd7), TOBN(0x8f44340f, 0xe6934ae9), - TOBN(0x148cf91c, 0x447904da), TOBN(0x7340185f, 0x0f51a926), - TOBN(0x2f8f00fb, 0x7409ab46), TOBN(0x057e78e6, 0x80e289b2), - TOBN(0x03e5022c, 0xa888e5d1), TOBN(0x3c87111a, 0x9dede4e2), - TOBN(0x5b9b0e1c, 0x7809460b), TOBN(0xe751c852, 0x71c9abc7), - TOBN(0x8b944e28, 0xc7cc1dc9), TOBN(0x4f201ffa, 0x1d3cfa08), - TOBN(0x02fc905c, 0x3e6721ce), TOBN(0xd52d70da, 0xd0b3674c), - TOBN(0x5dc2e5ca, 0x18810da4), TOBN(0xa984b273, 0x5c69dd99), - TOBN(0x63b92527, 0x84de5ca4), TOBN(0x2f1c9872, 0xc852dec4), - TOBN(0x18b03593, 0xc2e3de09), TOBN(0x19d70b01, 0x9813dc2f), - TOBN(0x42806b2d, 0xa6dc1d29), TOBN(0xd3030009, 0xf871e144), - TOBN(0xa1feb333, 0xaaf49276), TOBN(0xb5583b9e, 0xc70bc04b), - TOBN(0x1db0be78, 0x95695f20), TOBN(0xfc841811, 0x89d012b5), - TOBN(0x6409f272, 0x05f61643), TOBN(0x40d34174, 0xd5883128), - TOBN(0xd79196f5, 0x67419833), TOBN(0x6059e252, 0x863b7b08), - TOBN(0x84da1817, 0x1c56700c), TOBN(0x5758ee56, 0xb28d3ec4), - TOBN(0x7da2771d, 0x013b0ea6), TOBN(0xfddf524b, 0x54c5e9b9), - TOBN(0x7df4faf8, 0x24305d80), TOBN(0x58f5c1bf, 0x3a97763f), - TOBN(0xa5af37f1, 0x7c696042), TOBN(0xd4cba22c, 0x4a2538de), - TOBN(0x211cb995, 0x9ea42600), TOBN(0xcd105f41, 0x7b069889), - TOBN(0xb1e1cf19, 0xddb81e74), TOBN(0x472f2d89, 0x5157b8ca), - TOBN(0x086fb008, 0xee9db885), TOBN(0x365cd570, 0x0f26d131), - TOBN(0x284b02bb, 0xa2be7053), TOBN(0xdcbbf7c6, 0x7ab9a6d6), - TOBN(0x4425559c, 0x20f7a530), TOBN(0x961f2dfa, 0x188767c8), - TOBN(0xe2fd9435, 0x70dc80c4), TOBN(0x104d6b63, 0xf0784120), - TOBN(0x7f592bc1, 0x53567122), TOBN(0xf6bc1246, 0xf688ad77), - TOBN(0x05214c05, 0x0f15dde9), TOBN(0xa47a76a8, 0x0d5f2b82), - TOBN(0xbb254d30, 0x62e82b62), TOBN(0x11a05fe0, 0x3ec955ee), - TOBN(0x7eaff46e, 0x9d529b36), TOBN(0x55ab1301, 0x8f9e3df6), - TOBN(0xc463e371, 0x99317698), TOBN(0xfd251438, 0xccda47ad), - TOBN(0xca9c3547, 0x23d695ea), TOBN(0x48ce626e, 0x16e589b5), - TOBN(0x6b5b64c7, 0xb187d086), TOBN(0xd02e1794, 0xb2207948), - TOBN(0x8b58e98f, 0x7198111d), TOBN(0x90ca6305, 0xdcf9c3cc), - TOBN(0x5691fe72, 0xf34089b0), TOBN(0x60941af1, 0xfc7c80ff), - TOBN(0xa09bc0a2, 0x22eb51e5), TOBN(0xc0bb7244, 0xaa9cf09a), - TOBN(0x36a8077f, 0x80159f06), TOBN(0x8b5c989e, 0xdddc560e), - TOBN(0x19d2f316, 0x512e1f43), TOBN(0x02eac554, 0xad08ff62), - TOBN(0x012ab84c, 0x07d20b4e), TOBN(0x37d1e115, 0xd6d4e4e1), - TOBN(0xb6443e1a, 0xab7b19a8), TOBN(0xf08d067e, 0xdef8cd45), - TOBN(0x63adf3e9, 0x685e03da), TOBN(0xcf15a10e, 0x4792b916), - TOBN(0xf44bcce5, 0xb738a425), TOBN(0xebe131d5, 0x9636b2fd), - TOBN(0x94068841, 0x7850d605), TOBN(0x09684eaa, 0xb40d749d), - TOBN(0x8c3c669c, 0x72ba075b), TOBN(0x89f78b55, 0xba469015), - TOBN(0x5706aade, 0x3e9f8ba8), TOBN(0x6d8bd565, 0xb32d7ed7), - TOBN(0x25f4e63b, 0x805f08d6), TOBN(0x7f48200d, 0xc3bcc1b5), - TOBN(0x4e801968, 0xb025d847), TOBN(0x74afac04, 0x87cbe0a8), - TOBN(0x43ed2c2b, 0x7e63d690), TOBN(0xefb6bbf0, 0x0223cdb8), - TOBN(0x4fec3cae, 0x2884d3fe), TOBN(0x065ecce6, 0xd75e25a4), - TOBN(0x6c2294ce, 0x69f79071), TOBN(0x0d9a8e5f, 0x044b8666), - TOBN(0x5009f238, 0x17b69d8f), TOBN(0x3c29f8fe, 0xc5dfdaf7), - TOBN(0x9067528f, 0xebae68c4), TOBN(0x5b385632, 0x30c5ba21), - TOBN(0x540df119, 0x1fdd1aec), TOBN(0xcf37825b, 0xcfba4c78), - TOBN(0x77eff980, 0xbeb11454), TOBN(0x40a1a991, 0x60c1b066), - TOBN(0xe8018980, 0xf889a1c7), TOBN(0xb9c52ae9, 0x76c24be0), - TOBN(0x05fbbcce, 0x45650ef4), TOBN(0xae000f10, 0x8aa29ac7), - TOBN(0x884b7172, 0x4f04c470), TOBN(0x7cd4fde2, 0x19bb5c25), - TOBN(0x6477b22a, 0xe8840869), TOBN(0xa8868859, 0x5fbd0686), - TOBN(0xf23cc02e, 0x1116dfba), TOBN(0x76cd563f, 0xd87d7776), - TOBN(0xe2a37598, 0xa9d82abf), TOBN(0x5f188ccb, 0xe6c170f5), - TOBN(0x81682200, 0x5066b087), TOBN(0xda22c212, 0xc7155ada), - TOBN(0x151e5d3a, 0xfbddb479), TOBN(0x4b606b84, 0x6d715b99), - TOBN(0x4a73b54b, 0xf997cb2e), TOBN(0x9a1bfe43, 0x3ecd8b66), - TOBN(0x1c312809, 0x2a67d48a), TOBN(0xcd6a671e, 0x031fa9e2), - TOBN(0xbec3312a, 0x0e43a34a), TOBN(0x1d935639, 0x55ef47d3), - TOBN(0x5ea02489, 0x8fea73ea), TOBN(0x8247b364, 0xa035afb2), - TOBN(0xb58300a6, 0x5265b54c), TOBN(0x3286662f, 0x722c7148), - TOBN(0xb77fd76b, 0xb4ec4c20), TOBN(0xf0a12fa7, 0x0f3fe3fd), - TOBN(0xf845bbf5, 0x41d8c7e8), TOBN(0xe4d969ca, 0x5ec10aa8), - TOBN(0x4c0053b7, 0x43e232a3), TOBN(0xdc7a3fac, 0x37f8a45a), - TOBN(0x3c4261c5, 0x20d81c8f), TOBN(0xfd4b3453, 0xb00eab00), - TOBN(0x76d48f86, 0xd36e3062), TOBN(0x626c5277, 0xa143ff02), - TOBN(0x538174de, 0xaf76f42e), TOBN(0x2267aa86, 0x6407ceac), - TOBN(0xfad76351, 0x72e572d5), TOBN(0xab861af7, 0xba7330eb), - TOBN(0xa0a1c8c7, 0x418d8657), TOBN(0x988821cb, 0x20289a52), - TOBN(0x79732522, 0xcccc18ad), TOBN(0xaadf3f8d, 0xf1a6e027), - TOBN(0xf7382c93, 0x17c2354d), TOBN(0x5ce1680c, 0xd818b689), - TOBN(0x359ebbfc, 0xd9ecbee9), TOBN(0x4330689c, 0x1cae62ac), - TOBN(0xb55ce5b4, 0xc51ac38a), TOBN(0x7921dfea, 0xfe238ee8), - TOBN(0x3972bef8, 0x271d1ca5), TOBN(0x3e423bc7, 0xe8aabd18), - TOBN(0x57b09f3f, 0x44a3e5e3), TOBN(0x5da886ae, 0x7b444d66), - TOBN(0x68206634, 0xa9964375), TOBN(0x356a2fa3, 0x699cd0ff), - TOBN(0xaf0faa24, 0xdba515e9), TOBN(0x536e1f5c, 0xb321d79a), - TOBN(0xd3b9913a, 0x5c04e4ea), TOBN(0xd549dcfe, 0xd6f11513), - TOBN(0xee227bf5, 0x79fd1d94), TOBN(0x9f35afee, 0xb43f2c67), - TOBN(0xd2638d24, 0xf1314f53), TOBN(0x62baf948, 0xcabcd822), - TOBN(0x5542de29, 0x4ef48db0), TOBN(0xb3eb6a04, 0xfc5f6bb2), - TOBN(0x23c110ae, 0x1208e16a), TOBN(0x1a4d15b5, 0xf8363e24), - TOBN(0x30716844, 0x164be00b), TOBN(0xa8e24824, 0xf6f4690d), - TOBN(0x548773a2, 0x90b170cf), TOBN(0xa1bef331, 0x42f191f4), - TOBN(0x70f418d0, 0x9247aa97), TOBN(0xea06028e, 0x48be9147), - TOBN(0xe13122f3, 0xdbfb894e), TOBN(0xbe9b79f6, 0xce274b18), - TOBN(0x85a49de5, 0xca58aadf), TOBN(0x24957758, 0x11487351), - TOBN(0x111def61, 0xbb939099), TOBN(0x1d6a974a, 0x26d13694), - TOBN(0x4474b4ce, 0xd3fc253b), TOBN(0x3a1485e6, 0x4c5db15e), - TOBN(0xe79667b4, 0x147c15b4), TOBN(0xe34f553b, 0x7bc61301), - TOBN(0x032b80f8, 0x17094381), TOBN(0x55d8bafd, 0x723eaa21), - TOBN(0x5a987995, 0xf1c0e74e), TOBN(0x5a9b292e, 0xebba289c), - TOBN(0x413cd4b2, 0xeb4c8251), TOBN(0x98b5d243, 0xd162db0a), - TOBN(0xbb47bf66, 0x68342520), TOBN(0x08d68949, 0xbaa862d1), - TOBN(0x11f349c7, 0xe906abcd), TOBN(0x454ce985, 0xed7bf00e), - TOBN(0xacab5c9e, 0xb55b803b), TOBN(0xb03468ea, 0x31e3c16d), - TOBN(0x5c24213d, 0xd273bf12), TOBN(0x211538eb, 0x71587887), - TOBN(0x198e4a2f, 0x731dea2d), TOBN(0xd5856cf2, 0x74ed7b2a), - TOBN(0x86a632eb, 0x13a664fe), TOBN(0x932cd909, 0xbda41291), - TOBN(0x850e95d4, 0xc0c4ddc0), TOBN(0xc0f422f8, 0x347fc2c9), - TOBN(0xe68cbec4, 0x86076bcb), TOBN(0xf9e7c0c0, 0xcd6cd286), - TOBN(0x65994ddb, 0x0f5f27ca), TOBN(0xe85461fb, 0xa80d59ff), - TOBN(0xff05481a, 0x66601023), TOBN(0xc665427a, 0xfc9ebbfb), - TOBN(0xb0571a69, 0x7587fd52), TOBN(0x935289f8, 0x8d49efce), - TOBN(0x61becc60, 0xea420688), TOBN(0xb22639d9, 0x13a786af), - TOBN(0x1a8e6220, 0x361ecf90), TOBN(0x001f23e0, 0x25506463), - TOBN(0xe4ae9b5d, 0x0a5c2b79), TOBN(0xebc9cdad, 0xd8149db5), - TOBN(0xb33164a1, 0x934aa728), TOBN(0x750eb00e, 0xae9b60f3), - TOBN(0x5a91615b, 0x9b9cfbfd), TOBN(0x97015cbf, 0xef45f7f6), - TOBN(0xb462c4a5, 0xbf5151df), TOBN(0x21adcc41, 0xb07118f2), - TOBN(0xd60c545b, 0x043fa42c), TOBN(0xfc21aa54, 0xe96be1ab), - TOBN(0xe84bc32f, 0x4e51ea80), TOBN(0x3dae45f0, 0x259b5d8d), - TOBN(0xbb73c7eb, 0xc38f1b5e), TOBN(0xe405a74a, 0xe8ae617d), - TOBN(0xbb1ae9c6, 0x9f1c56bd), TOBN(0x8c176b98, 0x49f196a4), - TOBN(0xc448f311, 0x6875092b), TOBN(0xb5afe3de, 0x9f976033), - TOBN(0xa8dafd49, 0x145813e5), TOBN(0x687fc4d9, 0xe2b34226), - TOBN(0xf2dfc92d, 0x4c7ff57f), TOBN(0x004e3fc1, 0x401f1b46), - TOBN(0x5afddab6, 0x1430c9ab), TOBN(0x0bdd41d3, 0x2238e997), - TOBN(0xf0947430, 0x418042ae), TOBN(0x71f9adda, 0xcdddc4cb), - TOBN(0x7090c016, 0xc52dd907), TOBN(0xd9bdf44d, 0x29e2047f), - TOBN(0xe6f1fe80, 0x1b1011a6), TOBN(0xb63accbc, 0xd9acdc78), - TOBN(0xcfc7e235, 0x1272a95b), TOBN(0x0c667717, 0xa6276ac8), - TOBN(0x3c0d3709, 0xe2d7eef7), TOBN(0x5add2b06, 0x9a685b3e), - TOBN(0x363ad32d, 0x14ea5d65), TOBN(0xf8e01f06, 0x8d7dd506), - TOBN(0xc9ea2213, 0x75b4aac6), TOBN(0xed2a2bf9, 0x0d353466), - TOBN(0x439d79b5, 0xe9d3a7c3), TOBN(0x8e0ee5a6, 0x81b7f34b), - TOBN(0xcf3dacf5, 0x1dc4ba75), TOBN(0x1d3d1773, 0xeb3310c7), - TOBN(0xa8e67112, 0x7747ae83), TOBN(0x31f43160, 0x197d6b40), - TOBN(0x0521ccee, 0xcd961400), TOBN(0x67246f11, 0xf6535768), - TOBN(0x702fcc5a, 0xef0c3133), TOBN(0x247cc45d, 0x7e16693b), - TOBN(0xfd484e49, 0xc729b749), TOBN(0x522cef7d, 0xb218320f), - TOBN(0xe56ef405, 0x59ab93b3), TOBN(0x225fba11, 0x9f181071), - TOBN(0x33bd6595, 0x15330ed0), TOBN(0xc4be69d5, 0x1ddb32f7), - TOBN(0x264c7668, 0x0448087c), TOBN(0xac30903f, 0x71432dae), - TOBN(0x3851b266, 0x00f9bf47), TOBN(0x400ed311, 0x6cdd6d03), - TOBN(0x045e79fe, 0xf8fd2424), TOBN(0xfdfd974a, 0xfa6da98b), - TOBN(0x45c9f641, 0x0c1e673a), TOBN(0x76f2e733, 0x5b2c5168), - TOBN(0x1adaebb5, 0x2a601753), TOBN(0xb286514c, 0xc57c2d49), - TOBN(0xd8769670, 0x1e0bfd24), TOBN(0x950c547e, 0x04478922), - TOBN(0xd1d41969, 0xe5d32bfe), TOBN(0x30bc1472, 0x750d6c3e), - TOBN(0x8f3679fe, 0xe0e27f3a), TOBN(0x8f64a7dc, 0xa4a6ee0c), - TOBN(0x2fe59937, 0x633dfb1f), TOBN(0xea82c395, 0x977f2547), - TOBN(0xcbdfdf1a, 0x661ea646), TOBN(0xc7ccc591, 0xb9085451), - TOBN(0x82177962, 0x81761e13), TOBN(0xda57596f, 0x9196885c), - TOBN(0xbc17e849, 0x28ffbd70), TOBN(0x1e6e0a41, 0x2671d36f), - TOBN(0x61ae872c, 0x4152fcf5), TOBN(0x441c87b0, 0x9e77e754), - TOBN(0xd0799dd5, 0xa34dff09), TOBN(0x766b4e44, 0x88a6b171), - TOBN(0xdc06a512, 0x11f1c792), TOBN(0xea02ae93, 0x4be35c3e), - TOBN(0xe5ca4d6d, 0xe90c469e), TOBN(0x4df4368e, 0x56e4ff5c), - TOBN(0x7817acab, 0x4baef62e), TOBN(0x9f5a2202, 0xa85b91e8), - TOBN(0x9666ebe6, 0x6ce57610), TOBN(0x32ad31f3, 0xf73bfe03), - TOBN(0x628330a4, 0x25bcf4d6), TOBN(0xea950593, 0x515056e6), - TOBN(0x59811c89, 0xe1332156), TOBN(0xc89cf1fe, 0x8c11b2d7), - TOBN(0x75b63913, 0x04e60cc0), TOBN(0xce811e8d, 0x4625d375), - TOBN(0x030e43fc, 0x2d26e562), TOBN(0xfbb30b4b, 0x608d36a0), - TOBN(0x634ff82c, 0x48528118), TOBN(0x7c6fe085, 0xcd285911), - TOBN(0x7f2830c0, 0x99358f28), TOBN(0x2e60a95e, 0x665e6c09), - TOBN(0x08407d3d, 0x9b785dbf), TOBN(0x530889ab, 0xa759bce7), - TOBN(0xf228e0e6, 0x52f61239), TOBN(0x2b6d1461, 0x6879be3c), - TOBN(0xe6902c04, 0x51a7bbf7), TOBN(0x30ad99f0, 0x76f24a64), - TOBN(0x66d9317a, 0x98bc6da0), TOBN(0xf4f877f3, 0xcb596ac0), - TOBN(0xb05ff62d, 0x4c44f119), TOBN(0x4555f536, 0xe9b77416), - TOBN(0xc7c0d059, 0x8caed63b), TOBN(0x0cd2b7ce, 0xc358b2a9), - TOBN(0x3f33287b, 0x46945fa3), TOBN(0xf8785b20, 0xd67c8791), - TOBN(0xc54a7a61, 0x9637bd08), TOBN(0x54d4598c, 0x18be79d7), - TOBN(0x889e5acb, 0xc46d7ce1), TOBN(0x9a515bb7, 0x8b085877), - TOBN(0xfac1a03d, 0x0b7a5050), TOBN(0x7d3e738a, 0xf2926035), - TOBN(0x861cc2ce, 0x2a6cb0eb), TOBN(0x6f2e2955, 0x8f7adc79), - TOBN(0x61c4d451, 0x33016376), TOBN(0xd9fd2c80, 0x5ad59090), - TOBN(0xe5a83738, 0xb2b836a1), TOBN(0x855b41a0, 0x7c0d6622), - TOBN(0x186fe317, 0x7cc19af1), TOBN(0x6465c1ff, 0xfdd99acb), - TOBN(0x46e5c23f, 0x6974b99e), TOBN(0x75a7cf8b, 0xa2717cbe), - TOBN(0x4d2ebc3f, 0x062be658), TOBN(0x094b4447, 0x5f209c98), - TOBN(0x4af285ed, 0xb940cb5a), TOBN(0x6706d792, 0x7cc82f10), - TOBN(0xc8c8776c, 0x030526fa), TOBN(0xfa8e6f76, 0xa0da9140), - TOBN(0x77ea9d34, 0x591ee4f0), TOBN(0x5f46e337, 0x40274166), - TOBN(0x1bdf98bb, 0xea671457), TOBN(0xd7c08b46, 0x862a1fe2), - TOBN(0x46cc303c, 0x1c08ad63), TOBN(0x99543440, 0x4c845e7b), - TOBN(0x1b8fbdb5, 0x48f36bf7), TOBN(0x5b82c392, 0x8c8273a7), - TOBN(0x08f712c4, 0x928435d5), TOBN(0x071cf0f1, 0x79330380), - TOBN(0xc74c2d24, 0xa8da054a), TOBN(0xcb0e7201, 0x43c46b5c), - TOBN(0x0ad7337a, 0xc0b7eff3), TOBN(0x8552225e, 0xc5e48b3c), - TOBN(0xe6f78b0c, 0x73f13a5f), TOBN(0x5e70062e, 0x82349cbe), - TOBN(0x6b8d5048, 0xe7073969), TOBN(0x392d2a29, 0xc33cb3d2), - TOBN(0xee4f727c, 0x4ecaa20f), TOBN(0xa068c99e, 0x2ccde707), - TOBN(0xfcd5651f, 0xb87a2913), TOBN(0xea3e3c15, 0x3cc252f0), - TOBN(0x777d92df, 0x3b6cd3e4), TOBN(0x7a414143, 0xc5a732e7), - TOBN(0xa895951a, 0xa71ff493), TOBN(0xfe980c92, 0xbbd37cf6), - TOBN(0x45bd5e64, 0xdecfeeff), TOBN(0x910dc2a9, 0xa44c43e9), - TOBN(0xcb403f26, 0xcca9f54d), TOBN(0x928bbdfb, 0x9303f6db), - TOBN(0x3c37951e, 0xa9eee67c), TOBN(0x3bd61a52, 0xf79961c3), - TOBN(0x09a238e6, 0x395c9a79), TOBN(0x6940ca2d, 0x61eb352d), - TOBN(0x7d1e5c5e, 0xc1875631), TOBN(0x1e19742c, 0x1e1b20d1), - TOBN(0x4633d908, 0x23fc2e6e), TOBN(0xa76e29a9, 0x08959149), - TOBN(0x61069d9c, 0x84ed7da5), TOBN(0x0baa11cf, 0x5dbcad51), - TOBN(0xd01eec64, 0x961849da), TOBN(0x93b75f1f, 0xaf3d8c28), - TOBN(0x57bc4f9f, 0x1ca2ee44), TOBN(0x5a26322d, 0x00e00558), - TOBN(0x1888d658, 0x61a023ef), TOBN(0x1d72aab4, 0xb9e5246e), - TOBN(0xa9a26348, 0xe5563ec0), TOBN(0xa0971963, 0xc3439a43), - TOBN(0x567dd54b, 0xadb9b5b7), TOBN(0x73fac1a1, 0xc45a524b), - TOBN(0x8fe97ef7, 0xfe38e608), TOBN(0x608748d2, 0x3f384f48), - TOBN(0xb0571794, 0xc486094f), TOBN(0x869254a3, 0x8bf3a8d6), - TOBN(0x148a8dd1, 0x310b0e25), TOBN(0x99ab9f3f, 0x9aa3f7d8), - TOBN(0x0927c68a, 0x6706c02e), TOBN(0x22b5e76c, 0x69790e6c), - TOBN(0x6c325260, 0x6c71376c), TOBN(0x53a57690, 0x09ef6657), - TOBN(0x8d63f852, 0xedffcf3a), TOBN(0xb4d2ed04, 0x3c0a6f55), - TOBN(0xdb3aa8de, 0x12519b9e), TOBN(0x5d38e9c4, 0x1e0a569a), - TOBN(0x871528bf, 0x303747e2), TOBN(0xa208e77c, 0xf5b5c18d), - TOBN(0x9d129c88, 0xca6bf923), TOBN(0xbcbf197f, 0xbf02839f), - TOBN(0x9b9bf030, 0x27323194), TOBN(0x3b055a8b, 0x339ca59d), - TOBN(0xb46b2312, 0x0f669520), TOBN(0x19789f1f, 0x497e5f24), - TOBN(0x9c499468, 0xaaf01801), TOBN(0x72ee1190, 0x8b69d59c), - TOBN(0x8bd39595, 0xacf4c079), TOBN(0x3ee11ece, 0x8e0cd048), - TOBN(0xebde86ec, 0x1ed66f18), TOBN(0x225d906b, 0xd61fce43), - TOBN(0x5cab07d6, 0xe8bed74d), TOBN(0x16e4617f, 0x27855ab7), - TOBN(0x6568aadd, 0xb2fbc3dd), TOBN(0xedb5484f, 0x8aeddf5b), - TOBN(0x878f20e8, 0x6dcf2fad), TOBN(0x3516497c, 0x615f5699)}, - {TOBN(0xef0a3fec, 0xfa181e69), TOBN(0x9ea02f81, 0x30d69a98), - TOBN(0xb2e9cf8e, 0x66eab95d), TOBN(0x520f2beb, 0x24720021), - TOBN(0x621c540a, 0x1df84361), TOBN(0x12037721, 0x71fa6d5d), - TOBN(0x6e3c7b51, 0x0ff5f6ff), TOBN(0x817a069b, 0xabb2bef3), - TOBN(0x83572fb6, 0xb294cda6), TOBN(0x6ce9bf75, 0xb9039f34), - TOBN(0x20e012f0, 0x095cbb21), TOBN(0xa0aecc1b, 0xd063f0da), - TOBN(0x57c21c3a, 0xf02909e5), TOBN(0xc7d59ecf, 0x48ce9cdc), - TOBN(0x2732b844, 0x8ae336f8), TOBN(0x056e3723, 0x3f4f85f4), - TOBN(0x8a10b531, 0x89e800ca), TOBN(0x50fe0c17, 0x145208fd), - TOBN(0x9e43c0d3, 0xb714ba37), TOBN(0x427d200e, 0x34189acc), - TOBN(0x05dee24f, 0xe616e2c0), TOBN(0x9c25f4c8, 0xee1854c1), - TOBN(0x4d3222a5, 0x8f342a73), TOBN(0x0807804f, 0xa027c952), - TOBN(0xc222653a, 0x4f0d56f3), TOBN(0x961e4047, 0xca28b805), - TOBN(0x2c03f8b0, 0x4a73434b), TOBN(0x4c966787, 0xab712a19), - TOBN(0xcc196c42, 0x864fee42), TOBN(0xc1be93da, 0x5b0ece5c), - TOBN(0xa87d9f22, 0xc131c159), TOBN(0x2bb6d593, 0xdce45655), - TOBN(0x22c49ec9, 0xb809b7ce), TOBN(0x8a41486b, 0xe2c72c2c), - TOBN(0x813b9420, 0xfea0bf36), TOBN(0xb3d36ee9, 0xa66dac69), - TOBN(0x6fddc08a, 0x328cc987), TOBN(0x0a3bcd2c, 0x3a326461), - TOBN(0x7103c49d, 0xd810dbba), TOBN(0xf9d81a28, 0x4b78a4c4), - TOBN(0x3de865ad, 0xe4d55941), TOBN(0xdedafa5e, 0x30384087), - TOBN(0x6f414abb, 0x4ef18b9b), TOBN(0x9ee9ea42, 0xfaee5268), - TOBN(0x260faa16, 0x37a55a4a), TOBN(0xeb19a514, 0x015f93b9), - TOBN(0x51d7ebd2, 0x9e9c3598), TOBN(0x523fc56d, 0x1932178e), - TOBN(0x501d070c, 0xb98fe684), TOBN(0xd60fbe9a, 0x124a1458), - TOBN(0xa45761c8, 0x92bc6b3f), TOBN(0xf5384858, 0xfe6f27cb), - TOBN(0x4b0271f7, 0xb59e763b), TOBN(0x3d4606a9, 0x5b5a8e5e), - TOBN(0x1eda5d9b, 0x05a48292), TOBN(0xda7731d0, 0xe6fec446), - TOBN(0xa3e33693, 0x90d45871), TOBN(0xe9764040, 0x06166d8d), - TOBN(0xb5c33682, 0x89a90403), TOBN(0x4bd17983, 0x72f1d637), - TOBN(0xa616679e, 0xd5d2c53a), TOBN(0x5ec4bcd8, 0xfdcf3b87), - TOBN(0xae6d7613, 0xb66a694e), TOBN(0x7460fc76, 0xe3fc27e5), - TOBN(0x70469b82, 0x95caabee), TOBN(0xde024ca5, 0x889501e3), - TOBN(0x6bdadc06, 0x076ed265), TOBN(0x0cb1236b, 0x5a0ef8b2), - TOBN(0x4065ddbf, 0x0972ebf9), TOBN(0xf1dd3875, 0x22aca432), - TOBN(0xa88b97cf, 0x744aff76), TOBN(0xd1359afd, 0xfe8e3d24), - TOBN(0x52a3ba2b, 0x91502cf3), TOBN(0x2c3832a8, 0x084db75d), - TOBN(0x04a12ddd, 0xde30b1c9), TOBN(0x7802eabc, 0xe31fd60c), - TOBN(0x33707327, 0xa37fddab), TOBN(0x65d6f2ab, 0xfaafa973), - TOBN(0x3525c5b8, 0x11e6f91a), TOBN(0x76aeb0c9, 0x5f46530b), - TOBN(0xe8815ff6, 0x2f93a675), TOBN(0xa6ec9684, 0x05f48679), - TOBN(0x6dcbb556, 0x358ae884), TOBN(0x0af61472, 0xe19e3873), - TOBN(0x72334372, 0xa5f696be), TOBN(0xc65e57ea, 0x6f22fb70), - TOBN(0x268da30c, 0x946cea90), TOBN(0x136a8a87, 0x65681b2a), - TOBN(0xad5e81dc, 0x0f9f44d4), TOBN(0xf09a6960, 0x2c46585a), - TOBN(0xd1649164, 0xc447d1b1), TOBN(0x3b4b36c8, 0x879dc8b1), - TOBN(0x20d4177b, 0x3b6b234c), TOBN(0x096a2505, 0x1730d9d0), - TOBN(0x0611b9b8, 0xef80531d), TOBN(0xba904b3b, 0x64bb495d), - TOBN(0x1192d9d4, 0x93a3147a), TOBN(0x9f30a5dc, 0x9a565545), - TOBN(0x90b1f9cb, 0x6ef07212), TOBN(0x29958546, 0x0d87fc13), - TOBN(0xd3323eff, 0xc17db9ba), TOBN(0xcb18548c, 0xcb1644a8), - TOBN(0x18a306d4, 0x4f49ffbc), TOBN(0x28d658f1, 0x4c2e8684), - TOBN(0x44ba60cd, 0xa99f8c71), TOBN(0x67b7abdb, 0x4bf742ff), - TOBN(0x66310f9c, 0x914b3f99), TOBN(0xae430a32, 0xf412c161), - TOBN(0x1e6776d3, 0x88ace52f), TOBN(0x4bc0fa24, 0x52d7067d), - TOBN(0x03c286aa, 0x8f07cd1b), TOBN(0x4cb8f38c, 0xa985b2c1), - TOBN(0x83ccbe80, 0x8c3bff36), TOBN(0x005a0bd2, 0x5263e575), - TOBN(0x460d7dda, 0x259bdcd1), TOBN(0x4a1c5642, 0xfa5cab6b), - TOBN(0x2b7bdbb9, 0x9fe4fc88), TOBN(0x09418e28, 0xcc97bbb5), - TOBN(0xd8274fb4, 0xa12321ae), TOBN(0xb137007d, 0x5c87b64e), - TOBN(0x80531fe1, 0xc63c4962), TOBN(0x50541e89, 0x981fdb25), - TOBN(0xdc1291a1, 0xfd4c2b6b), TOBN(0xc0693a17, 0xa6df4fca), - TOBN(0xb2c4604e, 0x0117f203), TOBN(0x245f1963, 0x0a99b8d0), - TOBN(0xaedc20aa, 0xc6212c44), TOBN(0xb1ed4e56, 0x520f52a8), - TOBN(0xfe48f575, 0xf8547be3), TOBN(0x0a7033cd, 0xa9e45f98), - TOBN(0x4b45d3a9, 0x18c50100), TOBN(0xb2a6cd6a, 0xa61d41da), - TOBN(0x60bbb4f5, 0x57933c6b), TOBN(0xa7538ebd, 0x2b0d7ffc), - TOBN(0x9ea3ab8d, 0x8cd626b6), TOBN(0x8273a484, 0x3601625a), - TOBN(0x88859845, 0x0168e508), TOBN(0x8cbc9bb2, 0x99a94abd), - TOBN(0x713ac792, 0xfab0a671), TOBN(0xa3995b19, 0x6c9ebffc), - TOBN(0xe711668e, 0x1239e152), TOBN(0x56892558, 0xbbb8dff4), - TOBN(0x8bfc7dab, 0xdbf17963), TOBN(0x5b59fe5a, 0xb3de1253), - TOBN(0x7e3320eb, 0x34a9f7ae), TOBN(0xe5e8cf72, 0xd751efe4), - TOBN(0x7ea003bc, 0xd9be2f37), TOBN(0xc0f551a0, 0xb6c08ef7), - TOBN(0x56606268, 0x038f6725), TOBN(0x1dd38e35, 0x6d92d3b6), - TOBN(0x07dfce7c, 0xc3cbd686), TOBN(0x4e549e04, 0x651c5da8), - TOBN(0x4058f93b, 0x08b19340), TOBN(0xc2fae6f4, 0xcac6d89d), - TOBN(0x4bad8a8c, 0x8f159cc7), TOBN(0x0ddba4b3, 0xcb0b601c), - TOBN(0xda4fc7b5, 0x1dd95f8c), TOBN(0x1d163cd7, 0xcea5c255), - TOBN(0x30707d06, 0x274a8c4c), TOBN(0x79d9e008, 0x2802e9ce), - TOBN(0x02a29ebf, 0xe6ddd505), TOBN(0x37064e74, 0xb50bed1a), - TOBN(0x3f6bae65, 0xa7327d57), TOBN(0x3846f5f1, 0xf83920bc), - TOBN(0x87c37491, 0x60df1b9b), TOBN(0x4cfb2895, 0x2d1da29f), - TOBN(0x10a478ca, 0x4ed1743c), TOBN(0x390c6030, 0x3edd47c6), - TOBN(0x8f3e5312, 0x8c0a78de), TOBN(0xccd02bda, 0x1e85df70), - TOBN(0xd6c75c03, 0xa61b6582), TOBN(0x0762921c, 0xfc0eebd1), - TOBN(0xd34d0823, 0xd85010c0), TOBN(0xd73aaacb, 0x0044cf1f), - TOBN(0xfb4159bb, 0xa3b5e78a), TOBN(0x2287c7f7, 0xe5826f3f), - TOBN(0x4aeaf742, 0x580b1a01), TOBN(0xf080415d, 0x60423b79), - TOBN(0xe12622cd, 0xa7dea144), TOBN(0x49ea4996, 0x59d62472), - TOBN(0xb42991ef, 0x571f3913), TOBN(0x0610f214, 0xf5b25a8a), - TOBN(0x47adc585, 0x30b79e8f), TOBN(0xf90e3df6, 0x07a065a2), - TOBN(0x5d0a5deb, 0x43e2e034), TOBN(0x53fb5a34, 0x444024aa), - TOBN(0xa8628c68, 0x6b0c9f7f), TOBN(0x9c69c29c, 0xac563656), - TOBN(0x5a231feb, 0xbace47b6), TOBN(0xbdce0289, 0x9ea5a2ec), - TOBN(0x05da1fac, 0x9463853e), TOBN(0x96812c52, 0x509e78aa), - TOBN(0xd3fb5771, 0x57151692), TOBN(0xeb2721f8, 0xd98e1c44), - TOBN(0xc0506087, 0x32399be1), TOBN(0xda5a5511, 0xd979d8b8), - TOBN(0x737ed55d, 0xc6f56780), TOBN(0xe20d3004, 0x0dc7a7f4), - TOBN(0x02ce7301, 0xf5941a03), TOBN(0x91ef5215, 0xed30f83a), - TOBN(0x28727fc1, 0x4092d85f), TOBN(0x72d223c6, 0x5c49e41a), - TOBN(0xa7cf30a2, 0xba6a4d81), TOBN(0x7c086209, 0xb030d87d), - TOBN(0x04844c7d, 0xfc588b09), TOBN(0x728cd499, 0x5874bbb0), - TOBN(0xcc1281ee, 0xe84c0495), TOBN(0x0769b5ba, 0xec31958f), - TOBN(0x665c228b, 0xf99c2471), TOBN(0xf2d8a11b, 0x191eb110), - TOBN(0x4594f494, 0xd36d7024), TOBN(0x482ded8b, 0xcdcb25a1), - TOBN(0xc958a9d8, 0xdadd4885), TOBN(0x7004477e, 0xf1d2b547), - TOBN(0x0a45f6ef, 0x2a0af550), TOBN(0x4fc739d6, 0x2f8d6351), - TOBN(0x75cdaf27, 0x786f08a9), TOBN(0x8700bb26, 0x42c2737f), - TOBN(0x855a7141, 0x1c4e2670), TOBN(0x810188c1, 0x15076fef), - TOBN(0xc251d0c9, 0xabcd3297), TOBN(0xae4c8967, 0xf48108eb), - TOBN(0xbd146de7, 0x18ceed30), TOBN(0xf9d4f07a, 0xc986bced), - TOBN(0x5ad98ed5, 0x83fa1e08), TOBN(0x7780d33e, 0xbeabd1fb), - TOBN(0xe330513c, 0x903b1196), TOBN(0xba11de9e, 0xa47bc8c4), - TOBN(0x684334da, 0x02c2d064), TOBN(0x7ecf360d, 0xa48de23b), - TOBN(0x57a1b474, 0x0a9089d8), TOBN(0xf28fa439, 0xff36734c), - TOBN(0xf2a482cb, 0xea4570b3), TOBN(0xee65d68b, 0xa5ebcee9), - TOBN(0x988d0036, 0xb9694cd5), TOBN(0x53edd0e9, 0x37885d32), - TOBN(0xe37e3307, 0xbeb9bc6d), TOBN(0xe9abb907, 0x9f5c6768), - TOBN(0x4396ccd5, 0x51f2160f), TOBN(0x2500888c, 0x47336da6), - TOBN(0x383f9ed9, 0x926fce43), TOBN(0x809dd1c7, 0x04da2930), - TOBN(0x30f6f596, 0x8a4cb227), TOBN(0x0d700c7f, 0x73a56b38), - TOBN(0x1825ea33, 0xab64a065), TOBN(0xaab9b735, 0x1338df80), - TOBN(0x1516100d, 0x9b63f57f), TOBN(0x2574395a, 0x27a6a634), - TOBN(0xb5560fb6, 0x700a1acd), TOBN(0xe823fd73, 0xfd999681), - TOBN(0xda915d1f, 0x6cb4e1ba), TOBN(0x0d030118, 0x6ebe00a3), - TOBN(0x744fb0c9, 0x89fca8cd), TOBN(0x970d01db, 0xf9da0e0b), - TOBN(0x0ad8c564, 0x7931d76f), TOBN(0xb15737bf, 0xf659b96a), - TOBN(0xdc9933e8, 0xa8b484e7), TOBN(0xb2fdbdf9, 0x7a26dec7), - TOBN(0x2349e9a4, 0x9f1f0136), TOBN(0x7860368e, 0x70fddddb), - TOBN(0xd93d2c1c, 0xf9ad3e18), TOBN(0x6d6c5f17, 0x689f4e79), - TOBN(0x7a544d91, 0xb24ff1b6), TOBN(0x3e12a5eb, 0xfe16cd8c), - TOBN(0x543574e9, 0xa56b872f), TOBN(0xa1ad550c, 0xfcf68ea2), - TOBN(0x689e37d2, 0x3f560ef7), TOBN(0x8c54b9ca, 0xc9d47a8b), - TOBN(0x46d40a4a, 0x088ac342), TOBN(0xec450c7c, 0x1576c6d0), - TOBN(0xb589e31c, 0x1f9689e9), TOBN(0xdacf2602, 0xb8781718), - TOBN(0xa89237c6, 0xc8cb6b42), TOBN(0x1326fc93, 0xb96ef381), - TOBN(0x55d56c6d, 0xb5f07825), TOBN(0xacba2eea, 0x7449e22d), - TOBN(0x74e0887a, 0x633c3000), TOBN(0xcb6cd172, 0xd7cbcf71), - TOBN(0x309e81de, 0xc36cf1be), TOBN(0x07a18a6d, 0x60ae399b), - TOBN(0xb36c2679, 0x9edce57e), TOBN(0x52b892f4, 0xdf001d41), - TOBN(0xd884ae5d, 0x16a1f2c6), TOBN(0x9b329424, 0xefcc370a), - TOBN(0x3120daf2, 0xbd2e21df), TOBN(0x55298d2d, 0x02470a99), - TOBN(0x0b78af6c, 0xa05db32e), TOBN(0x5c76a331, 0x601f5636), - TOBN(0xaae861ff, 0xf8a4f29c), TOBN(0x70dc9240, 0xd68f8d49), - TOBN(0x960e649f, 0x81b1321c), TOBN(0x3d2c801b, 0x8792e4ce), - TOBN(0xf479f772, 0x42521876), TOBN(0x0bed93bc, 0x416c79b1), - TOBN(0xa67fbc05, 0x263e5bc9), TOBN(0x01e8e630, 0x521db049), - TOBN(0x76f26738, 0xc6f3431e), TOBN(0xe609cb02, 0xe3267541), - TOBN(0xb10cff2d, 0x818c877c), TOBN(0x1f0e75ce, 0x786a13cb), - TOBN(0xf4fdca64, 0x1158544d), TOBN(0x5d777e89, 0x6cb71ed0), - TOBN(0x3c233737, 0xa9aa4755), TOBN(0x7b453192, 0xe527ab40), - TOBN(0xdb59f688, 0x39f05ffe), TOBN(0x8f4f4be0, 0x6d82574e), - TOBN(0xcce3450c, 0xee292d1b), TOBN(0xaa448a12, 0x61ccd086), - TOBN(0xabce91b3, 0xf7914967), TOBN(0x4537f09b, 0x1908a5ed), - TOBN(0xa812421e, 0xf51042e7), TOBN(0xfaf5cebc, 0xec0b3a34), - TOBN(0x730ffd87, 0x4ca6b39a), TOBN(0x70fb72ed, 0x02efd342), - TOBN(0xeb4735f9, 0xd75c8edb), TOBN(0xc11f2157, 0xc278aa51), - TOBN(0xc459f635, 0xbf3bfebf), TOBN(0x3a1ff0b4, 0x6bd9601f), - TOBN(0xc9d12823, 0xc420cb73), TOBN(0x3e9af3e2, 0x3c2915a3), - TOBN(0xe0c82c72, 0xb41c3440), TOBN(0x175239e5, 0xe3039a5f), - TOBN(0xe1084b8a, 0x558795a3), TOBN(0x328d0a1d, 0xd01e5c60), - TOBN(0x0a495f2e, 0xd3788a04), TOBN(0x25d8ff16, 0x66c11a9f), - TOBN(0xf5155f05, 0x9ed692d6), TOBN(0x954fa107, 0x4f425fe4), - TOBN(0xd16aabf2, 0xe98aaa99), TOBN(0x90cd8ba0, 0x96b0f88a), - TOBN(0x957f4782, 0xc154026a), TOBN(0x54ee0734, 0x52af56d2), - TOBN(0xbcf89e54, 0x45b4147a), TOBN(0x3d102f21, 0x9a52816c), - TOBN(0x6808517e, 0x39b62e77), TOBN(0x92e25421, 0x69169ad8), - TOBN(0xd721d871, 0xbb608558), TOBN(0x60e4ebae, 0xf6d4ff9b), - TOBN(0x0ba10819, 0x41f2763e), TOBN(0xca2e45be, 0x51ee3247), - TOBN(0x66d172ec, 0x2bfd7a5f), TOBN(0x528a8f2f, 0x74d0b12d), - TOBN(0xe17f1e38, 0xdabe70dc), TOBN(0x1d5d7316, 0x9f93983c), - TOBN(0x51b2184a, 0xdf423e31), TOBN(0xcb417291, 0xaedb1a10), - TOBN(0x2054ca93, 0x625bcab9), TOBN(0x54396860, 0xa98998f0), - TOBN(0x4e53f6c4, 0xa54ae57e), TOBN(0x0ffeb590, 0xee648e9d), - TOBN(0xfbbdaadc, 0x6afaf6bc), TOBN(0xf88ae796, 0xaa3bfb8a), - TOBN(0x209f1d44, 0xd2359ed9), TOBN(0xac68dd03, 0xf3544ce2), - TOBN(0xf378da47, 0xfd51e569), TOBN(0xe1abd860, 0x2cc80097), - TOBN(0x23ca18d9, 0x343b6e3a), TOBN(0x480797e8, 0xb40a1bae), - TOBN(0xd1f0c717, 0x533f3e67), TOBN(0x44896970, 0x06e6cdfc), - TOBN(0x8ca21055, 0x52a82e8d), TOBN(0xb2caf785, 0x78460cdc), - TOBN(0x4c1b7b62, 0xe9037178), TOBN(0xefc09d2c, 0xdb514b58), - TOBN(0x5f2df9ee, 0x9113be5c), TOBN(0x2fbda78f, 0xb3f9271c), - TOBN(0xe09a81af, 0x8f83fc54), TOBN(0x06b13866, 0x8afb5141), - TOBN(0x38f6480f, 0x43e3865d), TOBN(0x72dd77a8, 0x1ddf47d9), - TOBN(0xf2a8e971, 0x4c205ff7), TOBN(0x46d449d8, 0x9d088ad8), - TOBN(0x926619ea, 0x185d706f), TOBN(0xe47e02eb, 0xc7dd7f62), - TOBN(0xe7f120a7, 0x8cbc2031), TOBN(0xc18bef00, 0x998d4ac9), - TOBN(0x18f37a9c, 0x6bdf22da), TOBN(0xefbc432f, 0x90dc82df), - TOBN(0xc52cef8e, 0x5d703651), TOBN(0x82887ba0, 0xd99881a5), - TOBN(0x7cec9dda, 0xb920ec1d), TOBN(0xd0d7e8c3, 0xec3e8d3b), - TOBN(0x445bc395, 0x4ca88747), TOBN(0xedeaa2e0, 0x9fd53535), - TOBN(0x461b1d93, 0x6cc87475), TOBN(0xd92a52e2, 0x6d2383bd), - TOBN(0xfabccb59, 0xd7903546), TOBN(0x6111a761, 0x3d14b112), - TOBN(0x0ae584fe, 0xb3d5f612), TOBN(0x5ea69b8d, 0x60e828ec), - TOBN(0x6c078985, 0x54087030), TOBN(0x649cab04, 0xac4821fe), - TOBN(0x25ecedcf, 0x8bdce214), TOBN(0xb5622f72, 0x86af7361), - TOBN(0x0e1227aa, 0x7038b9e2), TOBN(0xd0efb273, 0xac20fa77), - TOBN(0x817ff88b, 0x79df975b), TOBN(0x856bf286, 0x1999503e), - TOBN(0xb4d5351f, 0x5038ec46), TOBN(0x740a52c5, 0xfc42af6e), - TOBN(0x2e38bb15, 0x2cbb1a3f), TOBN(0xc3eb99fe, 0x17a83429), - TOBN(0xca4fcbf1, 0xdd66bb74), TOBN(0x880784d6, 0xcde5e8fc), - TOBN(0xddc84c1c, 0xb4e7a0be), TOBN(0x8780510d, 0xbd15a72f), - TOBN(0x44bcf1af, 0x81ec30e1), TOBN(0x141e50a8, 0x0a61073e), - TOBN(0x0d955718, 0x47be87ae), TOBN(0x68a61417, 0xf76a4372), - TOBN(0xf57e7e87, 0xc607c3d3), TOBN(0x043afaf8, 0x5252f332), - TOBN(0xcc14e121, 0x1552a4d2), TOBN(0xb6dee692, 0xbb4d4ab4), - TOBN(0xb6ab74c8, 0xa03816a4), TOBN(0x84001ae4, 0x6f394a29), - TOBN(0x5bed8344, 0xd795fb45), TOBN(0x57326e7d, 0xb79f55a5), - TOBN(0xc9533ce0, 0x4accdffc), TOBN(0x53473caf, 0x3993fa04), - TOBN(0x7906eb93, 0xa13df4c8), TOBN(0xa73e51f6, 0x97cbe46f), - TOBN(0xd1ab3ae1, 0x0ae4ccf8), TOBN(0x25614508, 0x8a5b3dbc), - TOBN(0x61eff962, 0x11a71b27), TOBN(0xdf71412b, 0x6bb7fa39), - TOBN(0xb31ba6b8, 0x2bd7f3ef), TOBN(0xb0b9c415, 0x69180d29), - TOBN(0xeec14552, 0x014cdde5), TOBN(0x702c624b, 0x227b4bbb), - TOBN(0x2b15e8c2, 0xd3e988f3), TOBN(0xee3bcc6d, 0xa4f7fd04), - TOBN(0x9d00822a, 0x42ac6c85), TOBN(0x2db0cea6, 0x1df9f2b7), - TOBN(0xd7cad2ab, 0x42de1e58), TOBN(0x346ed526, 0x2d6fbb61), - TOBN(0xb3962995, 0x1a2faf09), TOBN(0x2fa8a580, 0x7c25612e), - TOBN(0x30ae04da, 0x7cf56490), TOBN(0x75662908, 0x0eea3961), - TOBN(0x3609f5c5, 0x3d080847), TOBN(0xcb081d39, 0x5241d4f6), - TOBN(0xb4fb3810, 0x77961a63), TOBN(0xc20c5984, 0x2abb66fc), - TOBN(0x3d40aa7c, 0xf902f245), TOBN(0x9cb12736, 0x4e536b1e), - TOBN(0x5eda24da, 0x99b3134f), TOBN(0xafbd9c69, 0x5cd011af), - TOBN(0x9a16e30a, 0xc7088c7d), TOBN(0x5ab65710, 0x3207389f), - TOBN(0x1b09547f, 0xe7407a53), TOBN(0x2322f9d7, 0x4fdc6eab), - TOBN(0xc0f2f22d, 0x7430de4d), TOBN(0x19382696, 0xe68ca9a9), - TOBN(0x17f1eff1, 0x918e5868), TOBN(0xe3b5b635, 0x586f4204), - TOBN(0x146ef980, 0x3fbc4341), TOBN(0x359f2c80, 0x5b5eed4e), - TOBN(0x9f35744e, 0x7482e41d), TOBN(0x9a9ac3ec, 0xf3b224c2), - TOBN(0x9161a6fe, 0x91fc50ae), TOBN(0x89ccc66b, 0xc613fa7c), - TOBN(0x89268b14, 0xc732f15a), TOBN(0x7cd6f4e2, 0xb467ed03), - TOBN(0xfbf79869, 0xce56b40e), TOBN(0xf93e094c, 0xc02dde98), - TOBN(0xefe0c3a8, 0xedee2cd7), TOBN(0x90f3ffc0, 0xb268fd42), - TOBN(0x81a7fd56, 0x08241aed), TOBN(0x95ab7ad8, 0x00b1afe8), - TOBN(0x40127056, 0x3e310d52), TOBN(0xd3ffdeb1, 0x09d9fc43), - TOBN(0xc8f85c91, 0xd11a8594), TOBN(0x2e74d258, 0x31cf6db8), - TOBN(0x829c7ca3, 0x02b5dfd0), TOBN(0xe389cfbe, 0x69143c86), - TOBN(0xd01b6405, 0x941768d8), TOBN(0x45103995, 0x03bf825d), - TOBN(0xcc4ee166, 0x56cd17e2), TOBN(0xbea3c283, 0xba037e79), - TOBN(0x4e1ac06e, 0xd9a47520), TOBN(0xfbfe18aa, 0xaf852404), - TOBN(0x5615f8e2, 0x8087648a), TOBN(0x7301e47e, 0xb9d150d9), - TOBN(0x79f9f9dd, 0xb299b977), TOBN(0x76697a7b, 0xa5b78314), - TOBN(0x10d67468, 0x7d7c90e7), TOBN(0x7afffe03, 0x937210b5), - TOBN(0x5aef3e4b, 0x28c22cee), TOBN(0xefb0ecd8, 0x09fd55ae), - TOBN(0x4cea7132, 0x0d2a5d6a), TOBN(0x9cfb5fa1, 0x01db6357), - TOBN(0x395e0b57, 0xf36e1ac5), TOBN(0x008fa9ad, 0x36cafb7d), - TOBN(0x8f6cdf70, 0x5308c4db), TOBN(0x51527a37, 0x95ed2477), - TOBN(0xba0dee30, 0x5bd21311), TOBN(0x6ed41b22, 0x909c90d7), - TOBN(0xc5f6b758, 0x7c8696d3), TOBN(0x0db8eaa8, 0x3ce83a80), - TOBN(0xd297fe37, 0xb24b4b6f), TOBN(0xfe58afe8, 0x522d1f0d), - TOBN(0x97358736, 0x8c98dbd9), TOBN(0x6bc226ca, 0x9454a527), - TOBN(0xa12b384e, 0xce53c2d0), TOBN(0x779d897d, 0x5e4606da), - TOBN(0xa53e47b0, 0x73ec12b0), TOBN(0x462dbbba, 0x5756f1ad), - TOBN(0x69fe09f2, 0xcafe37b6), TOBN(0x273d1ebf, 0xecce2e17), - TOBN(0x8ac1d538, 0x3cf607fd), TOBN(0x8035f7ff, 0x12e10c25)}, - {TOBN(0x854d34c7, 0x7e6c5520), TOBN(0xc27df9ef, 0xdcb9ea58), - TOBN(0x405f2369, 0xd686666d), TOBN(0x29d1febf, 0x0417aa85), - TOBN(0x9846819e, 0x93470afe), TOBN(0x3e6a9669, 0xe2a27f9e), - TOBN(0x24d008a2, 0xe31e6504), TOBN(0xdba7cecf, 0x9cb7680a), - TOBN(0xecaff541, 0x338d6e43), TOBN(0x56f7dd73, 0x4541d5cc), - TOBN(0xb5d426de, 0x96bc88ca), TOBN(0x48d94f6b, 0x9ed3a2c3), - TOBN(0x6354a3bb, 0x2ef8279c), TOBN(0xd575465b, 0x0b1867f2), - TOBN(0xef99b0ff, 0x95225151), TOBN(0xf3e19d88, 0xf94500d8), - TOBN(0x92a83268, 0xe32dd620), TOBN(0x913ec99f, 0x627849a2), - TOBN(0xedd8fdfa, 0x2c378882), TOBN(0xaf96f33e, 0xee6f8cfe), - TOBN(0xc06737e5, 0xdc3fa8a5), TOBN(0x236bb531, 0xb0b03a1d), - TOBN(0x33e59f29, 0x89f037b0), TOBN(0x13f9b5a7, 0xd9a12a53), - TOBN(0x0d0df6ce, 0x51efb310), TOBN(0xcb5b2eb4, 0x958df5be), - TOBN(0xd6459e29, 0x36158e59), TOBN(0x82aae2b9, 0x1466e336), - TOBN(0xfb658a39, 0x411aa636), TOBN(0x7152ecc5, 0xd4c0a933), - TOBN(0xf10c758a, 0x49f026b7), TOBN(0xf4837f97, 0xcb09311f), - TOBN(0xddfb02c4, 0xc753c45f), TOBN(0x18ca81b6, 0xf9c840fe), - TOBN(0x846fd09a, 0xb0f8a3e6), TOBN(0xb1162add, 0xe7733dbc), - TOBN(0x7070ad20, 0x236e3ab6), TOBN(0xf88cdaf5, 0xb2a56326), - TOBN(0x05fc8719, 0x997cbc7a), TOBN(0x442cd452, 0x4b665272), - TOBN(0x7807f364, 0xb71698f5), TOBN(0x6ba418d2, 0x9f7b605e), - TOBN(0xfd20b00f, 0xa03b2cbb), TOBN(0x883eca37, 0xda54386f), - TOBN(0xff0be43f, 0xf3437f24), TOBN(0xe910b432, 0xa48bb33c), - TOBN(0x4963a128, 0x329df765), TOBN(0xac1dd556, 0xbe2fe6f7), - TOBN(0x557610f9, 0x24a0a3fc), TOBN(0x38e17bf4, 0xe881c3f9), - TOBN(0x6ba84faf, 0xed0dac99), TOBN(0xd4a222c3, 0x59eeb918), - TOBN(0xc79c1dbe, 0x13f542b6), TOBN(0x1fc65e0d, 0xe425d457), - TOBN(0xeffb754f, 0x1debb779), TOBN(0x638d8fd0, 0x9e08af60), - TOBN(0x994f523a, 0x626332d5), TOBN(0x7bc38833, 0x5561bb44), - TOBN(0x005ed4b0, 0x3d845ea2), TOBN(0xd39d3ee1, 0xc2a1f08a), - TOBN(0x6561fdd3, 0xe7676b0d), TOBN(0x620e35ff, 0xfb706017), - TOBN(0x36ce424f, 0xf264f9a8), TOBN(0xc4c3419f, 0xda2681f7), - TOBN(0xfb6afd2f, 0x69beb6e8), TOBN(0x3a50b993, 0x6d700d03), - TOBN(0xc840b2ad, 0x0c83a14f), TOBN(0x573207be, 0x54085bef), - TOBN(0x5af882e3, 0x09fe7e5b), TOBN(0x957678a4, 0x3b40a7e1), - TOBN(0x172d4bdd, 0x543056e2), TOBN(0x9c1b26b4, 0x0df13c0a), - TOBN(0x1c30861c, 0xf405ff06), TOBN(0xebac86bd, 0x486e828b), - TOBN(0xe791a971, 0x636933fc), TOBN(0x50e7c2be, 0x7aeee947), - TOBN(0xc3d4a095, 0xfa90d767), TOBN(0xae60eb7b, 0xe670ab7b), - TOBN(0x17633a64, 0x397b056d), TOBN(0x93a21f33, 0x105012aa), - TOBN(0x663c370b, 0xabb88643), TOBN(0x91df36d7, 0x22e21599), - TOBN(0x183ba835, 0x8b761671), TOBN(0x381eea1d, 0x728f3bf1), - TOBN(0xb9b2f1ba, 0x39966e6c), TOBN(0x7c464a28, 0xe7295492), - TOBN(0x0fd5f70a, 0x09b26b7f), TOBN(0xa9aba1f9, 0xfbe009df), - TOBN(0x857c1f22, 0x369b87ad), TOBN(0x3c00e5d9, 0x32fca556), - TOBN(0x1ad74cab, 0x90b06466), TOBN(0xa7112386, 0x550faaf2), - TOBN(0x7435e198, 0x6d9bd5f5), TOBN(0x2dcc7e38, 0x59c3463f), - TOBN(0xdc7df748, 0xca7bd4b2), TOBN(0x13cd4c08, 0x9dec2f31), - TOBN(0x0d3b5df8, 0xe3237710), TOBN(0x0dadb26e, 0xcbd2f7b0), - TOBN(0x9f5966ab, 0xe4aa082b), TOBN(0x666ec8de, 0x350e966e), - TOBN(0x1bfd1ed5, 0xee524216), TOBN(0xcd93c59b, 0x41dab0b6), - TOBN(0x658a8435, 0xd186d6ba), TOBN(0x1b7d34d2, 0x159d1195), - TOBN(0x5936e460, 0x22caf46b), TOBN(0x6a45dd8f, 0x9a96fe4f), - TOBN(0xf7925434, 0xb98f474e), TOBN(0x41410412, 0x0053ef15), - TOBN(0x71cf8d12, 0x41de97bf), TOBN(0xb8547b61, 0xbd80bef4), - TOBN(0xb47d3970, 0xc4db0037), TOBN(0xf1bcd328, 0xfef20dff), - TOBN(0x31a92e09, 0x10caad67), TOBN(0x1f591960, 0x5531a1e1), - TOBN(0x3bb852e0, 0x5f4fc840), TOBN(0x63e297ca, 0x93a72c6c), - TOBN(0x3c2b0b2e, 0x49abad67), TOBN(0x6ec405fc, 0xed3db0d9), - TOBN(0xdc14a530, 0x7fef1d40), TOBN(0xccd19846, 0x280896fc), - TOBN(0x00f83176, 0x9bb81648), TOBN(0xd69eb485, 0x653120d0), - TOBN(0xd17d75f4, 0x4ccabc62), TOBN(0x34a07f82, 0xb749fcb1), - TOBN(0x2c3af787, 0xbbfb5554), TOBN(0xb06ed4d0, 0x62e283f8), - TOBN(0x5722889f, 0xa19213a0), TOBN(0x162b085e, 0xdcf3c7b4), - TOBN(0xbcaecb31, 0xe0dd3eca), TOBN(0xc6237fbc, 0xe52f13a5), - TOBN(0xcc2b6b03, 0x27bac297), TOBN(0x2ae1cac5, 0xb917f54a), - TOBN(0x474807d4, 0x7845ae4f), TOBN(0xfec7dd92, 0xce5972e0), - TOBN(0xc3bd2541, 0x1d7915bb), TOBN(0x66f85dc4, 0xd94907ca), - TOBN(0xd981b888, 0xbdbcf0ca), TOBN(0xd75f5da6, 0xdf279e9f), - TOBN(0x128bbf24, 0x7054e934), TOBN(0x3c6ff6e5, 0x81db134b), - TOBN(0x795b7cf4, 0x047d26e4), TOBN(0xf370f7b8, 0x5049ec37), - TOBN(0xc6712d4d, 0xced945af), TOBN(0xdf30b5ec, 0x095642bc), - TOBN(0x9b034c62, 0x4896246e), TOBN(0x5652c016, 0xee90bbd1), - TOBN(0xeb38636f, 0x87fedb73), TOBN(0x5e32f847, 0x0135a613), - TOBN(0x0703b312, 0xcf933c83), TOBN(0xd05bb76e, 0x1a7f47e6), - TOBN(0x825e4f0c, 0x949c2415), TOBN(0x569e5622, 0x7250d6f8), - TOBN(0xbbe9eb3a, 0x6568013e), TOBN(0x8dbd203f, 0x22f243fc), - TOBN(0x9dbd7694, 0xb342734a), TOBN(0x8f6d12f8, 0x46afa984), - TOBN(0xb98610a2, 0xc9eade29), TOBN(0xbab4f323, 0x47dd0f18), - TOBN(0x5779737b, 0x671c0d46), TOBN(0x10b6a7c6, 0xd3e0a42a), - TOBN(0xfb19ddf3, 0x3035b41c), TOBN(0xd336343f, 0x99c45895), - TOBN(0x61fe4938, 0x54c857e5), TOBN(0xc4d506be, 0xae4e57d5), - TOBN(0x3cd8c8cb, 0xbbc33f75), TOBN(0x7281f08a, 0x9262c77d), - TOBN(0x083f4ea6, 0xf11a2823), TOBN(0x8895041e, 0x9fba2e33), - TOBN(0xfcdfea49, 0x9c438edf), TOBN(0x7678dcc3, 0x91edba44), - TOBN(0xf07b3b87, 0xe2ba50f0), TOBN(0xc13888ef, 0x43948c1b), - TOBN(0xc2135ad4, 0x1140af42), TOBN(0x8e5104f3, 0x926ed1a7), - TOBN(0xf24430cb, 0x88f6695f), TOBN(0x0ce0637b, 0x6d73c120), - TOBN(0xb2db01e6, 0xfe631e8f), TOBN(0x1c5563d7, 0xd7bdd24b), - TOBN(0x8daea3ba, 0x369ad44f), TOBN(0x000c81b6, 0x8187a9f9), - TOBN(0x5f48a951, 0xaae1fd9a), TOBN(0xe35626c7, 0x8d5aed8a), - TOBN(0x20952763, 0x0498c622), TOBN(0x76d17634, 0x773aa504), - TOBN(0x36d90dda, 0xeb300f7a), TOBN(0x9dcf7dfc, 0xedb5e801), - TOBN(0x645cb268, 0x74d5244c), TOBN(0xa127ee79, 0x348e3aa2), - TOBN(0x488acc53, 0x575f1dbb), TOBN(0x95037e85, 0x80e6161e), - TOBN(0x57e59283, 0x292650d0), TOBN(0xabe67d99, 0x14938216), - TOBN(0x3c7f944b, 0x3f8e1065), TOBN(0xed908cb6, 0x330e8924), - TOBN(0x08ee8fd5, 0x6f530136), TOBN(0x2227b7d5, 0xd7ffc169), - TOBN(0x4f55c893, 0xb5cd6dd5), TOBN(0x82225e11, 0xa62796e8), - TOBN(0x5c6cead1, 0xcb18e12c), TOBN(0x4381ae0c, 0x84f5a51a), - TOBN(0x345913d3, 0x7fafa4c8), TOBN(0x3d918082, 0x0491aac0), - TOBN(0x9347871f, 0x3e69264c), TOBN(0xbea9dd3c, 0xb4f4f0cd), - TOBN(0xbda5d067, 0x3eadd3e7), TOBN(0x0033c1b8, 0x0573bcd8), - TOBN(0x25589379, 0x5da2486c), TOBN(0xcb89ee5b, 0x86abbee7), - TOBN(0x8fe0a8f3, 0x22532e5d), TOBN(0xb6410ff0, 0x727dfc4c), - TOBN(0x619b9d58, 0x226726db), TOBN(0x5ec25669, 0x7a2b2dc7), - TOBN(0xaf4d2e06, 0x4c3beb01), TOBN(0x852123d0, 0x7acea556), - TOBN(0x0e9470fa, 0xf783487a), TOBN(0x75a7ea04, 0x5664b3eb), - TOBN(0x4ad78f35, 0x6798e4ba), TOBN(0x9214e6e5, 0xc7d0e091), - TOBN(0xc420b488, 0xb1290403), TOBN(0x64049e0a, 0xfc295749), - TOBN(0x03ef5af1, 0x3ae9841f), TOBN(0xdbe4ca19, 0xb0b662a6), - TOBN(0x46845c5f, 0xfa453458), TOBN(0xf8dabf19, 0x10b66722), - TOBN(0xb650f0aa, 0xcce2793b), TOBN(0x71db851e, 0xc5ec47c1), - TOBN(0x3eb78f3e, 0x3b234fa9), TOBN(0xb0c60f35, 0xfc0106ce), - TOBN(0x05427121, 0x774eadbd), TOBN(0x25367faf, 0xce323863), - TOBN(0x7541b5c9, 0xcd086976), TOBN(0x4ff069e2, 0xdc507ad1), - TOBN(0x74145256, 0x8776e667), TOBN(0x6e76142c, 0xb23c6bb5), - TOBN(0xdbf30712, 0x1b3a8a87), TOBN(0x60e7363e, 0x98450836), - TOBN(0x5741450e, 0xb7366d80), TOBN(0xe4ee14ca, 0x4837dbdf), - TOBN(0xa765eb9b, 0x69d4316f), TOBN(0x04548dca, 0x8ef43825), - TOBN(0x9c9f4e4c, 0x5ae888eb), TOBN(0x733abb51, 0x56e9ac99), - TOBN(0xdaad3c20, 0xba6ac029), TOBN(0x9b8dd3d3, 0x2ba3e38e), - TOBN(0xa9bb4c92, 0x0bc5d11a), TOBN(0xf20127a7, 0x9c5f88a3), - TOBN(0x4f52b06e, 0x161d3cb8), TOBN(0x26c1ff09, 0x6afaf0a6), - TOBN(0x32670d2f, 0x7189e71f), TOBN(0xc6438748, 0x5ecf91e7), - TOBN(0x15758e57, 0xdb757a21), TOBN(0x427d09f8, 0x290a9ce5), - TOBN(0x846a308f, 0x38384a7a), TOBN(0xaac3acb4, 0xb0732b99), - TOBN(0x9e941009, 0x17845819), TOBN(0x95cba111, 0xa7ce5e03), - TOBN(0x6f3d4f7f, 0xb00009c4), TOBN(0xb8396c27, 0x8ff28b5f), - TOBN(0xb1a9ae43, 0x1c97975d), TOBN(0x9d7ba8af, 0xe5d9fed5), - TOBN(0x338cf09f, 0x34f485b6), TOBN(0xbc0ddacc, 0x64122516), - TOBN(0xa450da12, 0x05d471fe), TOBN(0x4c3a6250, 0x628dd8c9), - TOBN(0x69c7d103, 0xd1295837), TOBN(0xa2893e50, 0x3807eb2f), - TOBN(0xd6e1e1de, 0xbdb41491), TOBN(0xc630745b, 0x5e138235), - TOBN(0xc892109e, 0x48661ae1), TOBN(0x8d17e7eb, 0xea2b2674), - TOBN(0x00ec0f87, 0xc328d6b5), TOBN(0x6d858645, 0xf079ff9e), - TOBN(0x6cdf243e, 0x19115ead), TOBN(0x1ce1393e, 0x4bac4fcf), - TOBN(0x2c960ed0, 0x9c29f25b), TOBN(0x59be4d8e, 0x9d388a05), - TOBN(0x0d46e06c, 0xd0def72b), TOBN(0xb923db5d, 0xe0342748), - TOBN(0xf7d3aacd, 0x936d4a3d), TOBN(0x558519cc, 0x0b0b099e), - TOBN(0x3ea8ebf8, 0x827097ef), TOBN(0x259353db, 0xd054f55d), - TOBN(0x84c89abc, 0x6d2ed089), TOBN(0x5c548b69, 0x8e096a7c), - TOBN(0xd587f616, 0x994b995d), TOBN(0x4d1531f6, 0xa5845601), - TOBN(0x792ab31e, 0x451fd9f0), TOBN(0xc8b57bb2, 0x65adf6ca), - TOBN(0x68440fcb, 0x1cd5ad73), TOBN(0xb9c860e6, 0x6144da4f), - TOBN(0x2ab286aa, 0x8462beb8), TOBN(0xcc6b8fff, 0xef46797f), - TOBN(0xac820da4, 0x20c8a471), TOBN(0x69ae05a1, 0x77ff7faf), - TOBN(0xb9163f39, 0xbfb5da77), TOBN(0xbd03e590, 0x2c73ab7a), - TOBN(0x7e862b5e, 0xb2940d9e), TOBN(0x3c663d86, 0x4b9af564), - TOBN(0xd8309031, 0xbde3033d), TOBN(0x298231b2, 0xd42c5bc6), - TOBN(0x42090d2c, 0x552ad093), TOBN(0xa4799d1c, 0xff854695), - TOBN(0x0a88b5d6, 0xd31f0d00), TOBN(0xf8b40825, 0xa2f26b46), - TOBN(0xec29b1ed, 0xf1bd7218), TOBN(0xd491c53b, 0x4b24c86e), - TOBN(0xd2fe588f, 0x3395ea65), TOBN(0x6f3764f7, 0x4456ef15), - TOBN(0xdb43116d, 0xcdc34800), TOBN(0xcdbcd456, 0xc1e33955), - TOBN(0xefdb5540, 0x74ab286b), TOBN(0x948c7a51, 0xd18c5d7c), - TOBN(0xeb81aa37, 0x7378058e), TOBN(0x41c746a1, 0x04411154), - TOBN(0xa10c73bc, 0xfb828ac7), TOBN(0x6439be91, 0x9d972b29), - TOBN(0x4bf3b4b0, 0x43a2fbad), TOBN(0x39e6dadf, 0x82b5e840), - TOBN(0x4f716408, 0x6397bd4c), TOBN(0x0f7de568, 0x7f1eeccb), - TOBN(0x5865c5a1, 0xd2ffbfc1), TOBN(0xf74211fa, 0x4ccb6451), - TOBN(0x66368a88, 0xc0b32558), TOBN(0x5b539dc2, 0x9ad7812e), - TOBN(0x579483d0, 0x2f3af6f6), TOBN(0x52132078, 0x99934ece), - TOBN(0x50b9650f, 0xdcc9e983), TOBN(0xca989ec9, 0xaee42b8a), - TOBN(0x6a44c829, 0xd6f62f99), TOBN(0x8f06a309, 0x4c2a7c0c), - TOBN(0x4ea2b3a0, 0x98a0cb0a), TOBN(0x5c547b70, 0xbeee8364), - TOBN(0x461d40e1, 0x682afe11), TOBN(0x9e0fc77a, 0x7b41c0a8), - TOBN(0x79e4aefd, 0xe20d5d36), TOBN(0x2916e520, 0x32dd9f63), - TOBN(0xf59e52e8, 0x3f883faf), TOBN(0x396f9639, 0x2b868d35), - TOBN(0xc902a9df, 0x4ca19881), TOBN(0x0fc96822, 0xdb2401a6), - TOBN(0x41237587, 0x66f1c68d), TOBN(0x10fc6de3, 0xfb476c0d), - TOBN(0xf8b6b579, 0x841f5d90), TOBN(0x2ba8446c, 0xfa24f44a), - TOBN(0xa237b920, 0xef4a9975), TOBN(0x60bb6004, 0x2330435f), - TOBN(0xd6f4ab5a, 0xcfb7e7b5), TOBN(0xb2ac5097, 0x83435391), - TOBN(0xf036ee2f, 0xb0d1ea67), TOBN(0xae779a6a, 0x74c56230), - TOBN(0x59bff8c8, 0xab838ae6), TOBN(0xcd83ca99, 0x9b38e6f0), - TOBN(0xbb27bef5, 0xe33deed3), TOBN(0xe6356f6f, 0x001892a8), - TOBN(0xbf3be6cc, 0x7adfbd3e), TOBN(0xaecbc81c, 0x33d1ac9d), - TOBN(0xe4feb909, 0xe6e861dc), TOBN(0x90a247a4, 0x53f5f801), - TOBN(0x01c50acb, 0x27346e57), TOBN(0xce29242e, 0x461acc1b), - TOBN(0x04dd214a, 0x2f998a91), TOBN(0x271ee9b1, 0xd4baf27b), - TOBN(0x7e3027d1, 0xe8c26722), TOBN(0x21d1645c, 0x1820dce5), - TOBN(0x086f242c, 0x7501779c), TOBN(0xf0061407, 0xfa0e8009), - TOBN(0xf23ce477, 0x60187129), TOBN(0x05bbdedb, 0x0fde9bd0), - TOBN(0x682f4832, 0x25d98473), TOBN(0xf207fe85, 0x5c658427), - TOBN(0xb6fdd7ba, 0x4166ffa1), TOBN(0x0c314056, 0x9eed799d), - TOBN(0x0db8048f, 0x4107e28f), TOBN(0x74ed3871, 0x41216840), - TOBN(0x74489f8f, 0x56a3c06e), TOBN(0x1e1c005b, 0x12777134), - TOBN(0xdb332a73, 0xf37ec3c3), TOBN(0xc65259bd, 0xdd59eba0), - TOBN(0x2291709c, 0xdb4d3257), TOBN(0x9a793b25, 0xbd389390), - TOBN(0xf39fe34b, 0xe43756f0), TOBN(0x2f76bdce, 0x9afb56c9), - TOBN(0x9f37867a, 0x61208b27), TOBN(0xea1d4307, 0x089972c3), - TOBN(0x8c595330, 0x8bdf623a), TOBN(0x5f5accda, 0x8441fb7d), - TOBN(0xfafa9418, 0x32ddfd95), TOBN(0x6ad40c5a, 0x0fde9be7), - TOBN(0x43faba89, 0xaeca8709), TOBN(0xc64a7cf1, 0x2c248a9d), - TOBN(0x16620252, 0x72637a76), TOBN(0xaee1c791, 0x22b8d1bb), - TOBN(0xf0f798fd, 0x21a843b2), TOBN(0x56e4ed4d, 0x8d005cb1), - TOBN(0x355f7780, 0x1f0d8abe), TOBN(0x197b04cf, 0x34522326), - TOBN(0x41f9b31f, 0xfd42c13f), TOBN(0x5ef7feb2, 0xb40f933d), - TOBN(0x27326f42, 0x5d60bad4), TOBN(0x027ecdb2, 0x8c92cf89), - TOBN(0x04aae4d1, 0x4e3352fe), TOBN(0x08414d2f, 0x73591b90), - TOBN(0x5ed6124e, 0xb7da7d60), TOBN(0xb985b931, 0x4d13d4ec), - TOBN(0xa592d3ab, 0x96bf36f9), TOBN(0x012dbed5, 0xbbdf51df), - TOBN(0xa57963c0, 0xdf6c177d), TOBN(0x010ec869, 0x87ca29cf), - TOBN(0xba1700f6, 0xbf926dff), TOBN(0x7c9fdbd1, 0xf4bf6bc2), - TOBN(0xdc18dc8f, 0x64da11f5), TOBN(0xa6074b7a, 0xd938ae75), - TOBN(0x14270066, 0xe84f44a4), TOBN(0x99998d38, 0xd27b954e), - TOBN(0xc1be8ab2, 0xb4f38e9a), TOBN(0x8bb55bbf, 0x15c01016), - TOBN(0xf73472b4, 0x0ea2ab30), TOBN(0xd365a340, 0xf73d68dd), - TOBN(0xc01a7168, 0x19c2e1eb), TOBN(0x32f49e37, 0x34061719), - TOBN(0xb73c57f1, 0x01d8b4d6), TOBN(0x03c8423c, 0x26b47700), - TOBN(0x321d0bc8, 0xa4d8826a), TOBN(0x6004213c, 0x4bc0e638), - TOBN(0xf78c64a1, 0xc1c06681), TOBN(0x16e0a16f, 0xef018e50), - TOBN(0x31cbdf91, 0xdb42b2b3), TOBN(0xf8f4ffce, 0xe0d36f58), - TOBN(0xcdcc71cd, 0x4cc5e3e0), TOBN(0xd55c7cfa, 0xa129e3e0), - TOBN(0xccdb6ba0, 0x0fb2cbf1), TOBN(0x6aba0005, 0xc4bce3cb), - TOBN(0x501cdb30, 0xd232cfc4), TOBN(0x9ddcf12e, 0xd58a3cef), - TOBN(0x02d2cf9c, 0x87e09149), TOBN(0xdc5d7ec7, 0x2c976257), - TOBN(0x6447986e, 0x0b50d7dd), TOBN(0x88fdbaf7, 0x807f112a), - TOBN(0x58c9822a, 0xb00ae9f6), TOBN(0x6abfb950, 0x6d3d27e0), - TOBN(0xd0a74487, 0x8a429f4f), TOBN(0x0649712b, 0xdb516609), - TOBN(0xb826ba57, 0xe769b5df), TOBN(0x82335df2, 0x1fc7aaf2), - TOBN(0x2389f067, 0x5c93d995), TOBN(0x59ac367a, 0x68677be6), - TOBN(0xa77985ff, 0x21d9951b), TOBN(0x038956fb, 0x85011cce), - TOBN(0x608e48cb, 0xbb734e37), TOBN(0xc08c0bf2, 0x2be5b26f), - TOBN(0x17bbdd3b, 0xf9b1a0d9), TOBN(0xeac7d898, 0x10483319), - TOBN(0xc95c4baf, 0xbc1a6dea), TOBN(0xfdd0e2bf, 0x172aafdb), - TOBN(0x40373cbc, 0x8235c41a), TOBN(0x14303f21, 0xfb6f41d5), - TOBN(0xba063621, 0x0408f237), TOBN(0xcad3b09a, 0xecd2d1ed), - TOBN(0x4667855a, 0x52abb6a2), TOBN(0xba9157dc, 0xaa8b417b), - TOBN(0xfe7f3507, 0x4f013efb), TOBN(0x1b112c4b, 0xaa38c4a2), - TOBN(0xa1406a60, 0x9ba64345), TOBN(0xe53cba33, 0x6993c80b), - TOBN(0x45466063, 0xded40d23), TOBN(0x3d5f1f4d, 0x54908e25), - TOBN(0x9ebefe62, 0x403c3c31), TOBN(0x274ea0b5, 0x0672a624), - TOBN(0xff818d99, 0x451d1b71), TOBN(0x80e82643, 0x8f79cf79), - TOBN(0xa165df13, 0x73ce37f5), TOBN(0xa744ef4f, 0xfe3a21fd), - TOBN(0x73f1e7f5, 0xcf551396), TOBN(0xc616898e, 0x868c676b), - TOBN(0x671c28c7, 0x8c442c36), TOBN(0xcfe5e558, 0x5e0a317d), - TOBN(0x1242d818, 0x7051f476), TOBN(0x56fad2a6, 0x14f03442), - TOBN(0x262068bc, 0x0a44d0f6), TOBN(0xdfa2cd6e, 0xce6edf4e), - TOBN(0x0f43813a, 0xd15d1517), TOBN(0x61214cb2, 0x377d44f5), - TOBN(0xd399aa29, 0xc639b35f), TOBN(0x42136d71, 0x54c51c19), - TOBN(0x9774711b, 0x08417221), TOBN(0x0a5546b3, 0x52545a57), - TOBN(0x80624c41, 0x1150582d), TOBN(0x9ec5c418, 0xfbc555bc), - TOBN(0x2c87dcad, 0x771849f1), TOBN(0xb0c932c5, 0x01d7bf6f), - TOBN(0x6aa5cd3e, 0x89116eb2), TOBN(0xd378c25a, 0x51ca7bd3), - TOBN(0xc612a0da, 0x9e6e3e31), TOBN(0x0417a54d, 0xb68ad5d0), - TOBN(0x00451e4a, 0x22c6edb8), TOBN(0x9fbfe019, 0xb42827ce), - TOBN(0x2fa92505, 0xba9384a2), TOBN(0x21b8596e, 0x64ad69c1), - TOBN(0x8f4fcc49, 0x983b35a6), TOBN(0xde093760, 0x72754672), - TOBN(0x2f14ccc8, 0xf7bffe6d), TOBN(0x27566bff, 0x5d94263d), - TOBN(0xb5b4e9c6, 0x2df3ec30), TOBN(0x94f1d7d5, 0x3e6ea6ba), - TOBN(0x97b7851a, 0xaaca5e9b), TOBN(0x518aa521, 0x56713b97), - TOBN(0x3357e8c7, 0x150a61f6), TOBN(0x7842e7e2, 0xec2c2b69), - TOBN(0x8dffaf65, 0x6868a548), TOBN(0xd963bd82, 0xe068fc81), - TOBN(0x64da5c8b, 0x65917733), TOBN(0x927090ff, 0x7b247328)}, - {TOBN(0x214bc9a7, 0xd298c241), TOBN(0xe3b697ba, 0x56807cfd), - TOBN(0xef1c7802, 0x4564eadb), TOBN(0xdde8cdcf, 0xb48149c5), - TOBN(0x946bf0a7, 0x5a4d2604), TOBN(0x27154d7f, 0x6c1538af), - TOBN(0x95cc9230, 0xde5b1fcc), TOBN(0xd88519e9, 0x66864f82), - TOBN(0xb828dd1a, 0x7cb1282c), TOBN(0xa08d7626, 0xbe46973a), - TOBN(0x6baf8d40, 0xe708d6b2), TOBN(0x72571fa1, 0x4daeb3f3), - TOBN(0x85b1732f, 0xf22dfd98), TOBN(0x87ab01a7, 0x0087108d), - TOBN(0xaaaafea8, 0x5988207a), TOBN(0xccc832f8, 0x69f00755), - TOBN(0x964d950e, 0x36ff3bf0), TOBN(0x8ad20f6f, 0xf0b34638), - TOBN(0x4d9177b3, 0xb5d7585f), TOBN(0xcf839760, 0xef3f019f), - TOBN(0x582fc5b3, 0x8288c545), TOBN(0x2f8e4e9b, 0x13116bd1), - TOBN(0xf91e1b2f, 0x332120ef), TOBN(0xcf568724, 0x2a17dd23), - TOBN(0x488f1185, 0xca8d9d1a), TOBN(0xadf2c77d, 0xd987ded2), - TOBN(0x5f3039f0, 0x60c46124), TOBN(0xe5d70b75, 0x71e095f4), - TOBN(0x82d58650, 0x6260e70f), TOBN(0x39d75ea7, 0xf750d105), - TOBN(0x8cf3d0b1, 0x75bac364), TOBN(0xf3a7564d, 0x21d01329), - TOBN(0x182f04cd, 0x2f52d2a7), TOBN(0x4fde149a, 0xe2df565a), - TOBN(0xb80c5eec, 0xa79fb2f7), TOBN(0xab491d7b, 0x22ddc897), - TOBN(0x99d76c18, 0xc6312c7f), TOBN(0xca0d5f3d, 0x6aa41a57), - TOBN(0x71207325, 0xd15363a0), TOBN(0xe82aa265, 0xbeb252c2), - TOBN(0x94ab4700, 0xec3128c2), TOBN(0x6c76d862, 0x8e383f49), - TOBN(0xdc36b150, 0xc03024eb), TOBN(0xfb439477, 0x53daac69), - TOBN(0xfc68764a, 0x8dc79623), TOBN(0x5b86995d, 0xb440fbb2), - TOBN(0xd66879bf, 0xccc5ee0d), TOBN(0x05228942, 0x95aa8bd3), - TOBN(0xb51a40a5, 0x1e6a75c1), TOBN(0x24327c76, 0x0ea7d817), - TOBN(0x06630182, 0x07774597), TOBN(0xd6fdbec3, 0x97fa7164), - TOBN(0x20c99dfb, 0x13c90f48), TOBN(0xd6ac5273, 0x686ef263), - TOBN(0xc6a50bdc, 0xfef64eeb), TOBN(0xcd87b281, 0x86fdfc32), - TOBN(0xb24aa43e, 0x3fcd3efc), TOBN(0xdd26c034, 0xb8088e9a), - TOBN(0xa5ef4dc9, 0xbd3d46ea), TOBN(0xa2f99d58, 0x8a4c6a6f), - TOBN(0xddabd355, 0x2f1da46c), TOBN(0x72c3f8ce, 0x1afacdd1), - TOBN(0xd90c4eee, 0x92d40578), TOBN(0xd28bb41f, 0xca623b94), - TOBN(0x50fc0711, 0x745edc11), TOBN(0x9dd9ad7d, 0x3dc87558), - TOBN(0xce6931fb, 0xb49d1e64), TOBN(0x6c77a0a2, 0xc98bd0f9), - TOBN(0x62b9a629, 0x6baf7cb1), TOBN(0xcf065f91, 0xccf72d22), - TOBN(0x7203cce9, 0x79639071), TOBN(0x09ae4885, 0xf9cb732f), - TOBN(0x5e7c3bec, 0xee8314f3), TOBN(0x1c068aed, 0xdbea298f), - TOBN(0x08d381f1, 0x7c80acec), TOBN(0x03b56be8, 0xe330495b), - TOBN(0xaeffb8f2, 0x9222882d), TOBN(0x95ff38f6, 0xc4af8bf7), - TOBN(0x50e32d35, 0x1fc57d8c), TOBN(0x6635be52, 0x17b444f0), - TOBN(0x04d15276, 0xa5177900), TOBN(0x4e1dbb47, 0xf6858752), - TOBN(0x5b475622, 0xc615796c), TOBN(0xa6fa0387, 0x691867bf), - TOBN(0xed7f5d56, 0x2844c6d0), TOBN(0xc633cf9b, 0x03a2477d), - TOBN(0xf6be5c40, 0x2d3721d6), TOBN(0xaf312eb7, 0xe9fd68e6), - TOBN(0x242792d2, 0xe7417ce1), TOBN(0xff42bc71, 0x970ee7f5), - TOBN(0x1ff4dc6d, 0x5c67a41e), TOBN(0x77709b7b, 0x20882a58), - TOBN(0x3554731d, 0xbe217f2c), TOBN(0x2af2a8cd, 0x5bb72177), - TOBN(0x58eee769, 0x591dd059), TOBN(0xbb2930c9, 0x4bba6477), - TOBN(0x863ee047, 0x7d930cfc), TOBN(0x4c262ad1, 0x396fd1f4), - TOBN(0xf4765bc8, 0x039af7e1), TOBN(0x2519834b, 0x5ba104f6), - TOBN(0x7cd61b4c, 0xd105f961), TOBN(0xa5415da5, 0xd63bca54), - TOBN(0x778280a0, 0x88a1f17c), TOBN(0xc4968949, 0x2329512c), - TOBN(0x174a9126, 0xcecdaa7a), TOBN(0xfc8c7e0e, 0x0b13247b), - TOBN(0x29c110d2, 0x3484c1c4), TOBN(0xf8eb8757, 0x831dfc3b), - TOBN(0x022f0212, 0xc0067452), TOBN(0x3f6f69ee, 0x7b9b926c), - TOBN(0x09032da0, 0xef42daf4), TOBN(0x79f00ade, 0x83f80de4), - TOBN(0x6210db71, 0x81236c97), TOBN(0x74f7685b, 0x3ee0781f), - TOBN(0x4df7da7b, 0xa3e41372), TOBN(0x2aae38b1, 0xb1a1553e), - TOBN(0x1688e222, 0xf6dd9d1b), TOBN(0x57695448, 0x5b8b6487), - TOBN(0x478d2127, 0x4b2edeaa), TOBN(0xb2818fa5, 0x1e85956a), - TOBN(0x1e6addda, 0xf176f2c0), TOBN(0x01ca4604, 0xe2572658), - TOBN(0x0a404ded, 0x85342ffb), TOBN(0x8cf60f96, 0x441838d6), - TOBN(0x9bbc691c, 0xc9071c4a), TOBN(0xfd588744, 0x34442803), - TOBN(0x97101c85, 0x809c0d81), TOBN(0xa7fb754c, 0x8c456f7f), - TOBN(0xc95f3c5c, 0xd51805e1), TOBN(0xab4ccd39, 0xb299dca8), - TOBN(0x3e03d20b, 0x47eaf500), TOBN(0xfa3165c1, 0xd7b80893), - TOBN(0x005e8b54, 0xe160e552), TOBN(0xdc4972ba, 0x9019d11f), - TOBN(0x21a6972e, 0x0c9a4a7a), TOBN(0xa52c258f, 0x37840fd7), - TOBN(0xf8559ff4, 0xc1e99d81), TOBN(0x08e1a7d6, 0xa3c617c0), - TOBN(0xb398fd43, 0x248c6ba7), TOBN(0x6ffedd91, 0xd1283794), - TOBN(0x8a6a59d2, 0xd629d208), TOBN(0xa9d141d5, 0x3490530e), - TOBN(0x42f6fc18, 0x38505989), TOBN(0x09bf250d, 0x479d94ee), - TOBN(0x223ad3b1, 0xb3822790), TOBN(0x6c5926c0, 0x93b8971c), - TOBN(0x609efc7e, 0x75f7fa62), TOBN(0x45d66a6d, 0x1ec2d989), - TOBN(0x4422d663, 0x987d2792), TOBN(0x4a73caad, 0x3eb31d2b), - TOBN(0xf06c2ac1, 0xa32cb9e6), TOBN(0xd9445c5f, 0x91aeba84), - TOBN(0x6af7a1d5, 0xaf71013f), TOBN(0xe68216e5, 0x0bedc946), - TOBN(0xf4cba30b, 0xd27370a0), TOBN(0x7981afbf, 0x870421cc), - TOBN(0x02496a67, 0x9449f0e1), TOBN(0x86cfc4be, 0x0a47edae), - TOBN(0x3073c936, 0xb1feca22), TOBN(0xf5694612, 0x03f8f8fb), - TOBN(0xd063b723, 0x901515ea), TOBN(0x4c6c77a5, 0x749cf038), - TOBN(0x6361e360, 0xab9e5059), TOBN(0x596cf171, 0xa76a37c0), - TOBN(0x800f53fa, 0x6530ae7a), TOBN(0x0f5e631e, 0x0792a7a6), - TOBN(0x5cc29c24, 0xefdb81c9), TOBN(0xa269e868, 0x3f9c40ba), - TOBN(0xec14f9e1, 0x2cb7191e), TOBN(0x78ea1bd8, 0xe5b08ea6), - TOBN(0x3c65aa9b, 0x46332bb9), TOBN(0x84cc22b3, 0xbf80ce25), - TOBN(0x0098e9e9, 0xd49d5bf1), TOBN(0xcd4ec1c6, 0x19087da4), - TOBN(0x3c9d07c5, 0xaef6e357), TOBN(0x839a0268, 0x9f8f64b8), - TOBN(0xc5e9eb62, 0xc6d8607f), TOBN(0x759689f5, 0x6aa995e4), - TOBN(0x70464669, 0xbbb48317), TOBN(0x921474bf, 0xe402417d), - TOBN(0xcabe135b, 0x2a354c8c), TOBN(0xd51e52d2, 0x812fa4b5), - TOBN(0xec741096, 0x53311fe8), TOBN(0x4f774535, 0xb864514b), - TOBN(0xbcadd671, 0x5bde48f8), TOBN(0xc9703873, 0x2189bc7d), - TOBN(0x5d45299e, 0xc709ee8a), TOBN(0xd1287ee2, 0x845aaff8), - TOBN(0x7d1f8874, 0xdb1dbf1f), TOBN(0xea46588b, 0x990c88d6), - TOBN(0x60ba649a, 0x84368313), TOBN(0xd5fdcbce, 0x60d543ae), - TOBN(0x90b46d43, 0x810d5ab0), TOBN(0x6739d8f9, 0x04d7e5cc), - TOBN(0x021c1a58, 0x0d337c33), TOBN(0x00a61162, 0x68e67c40), - TOBN(0x95ef413b, 0x379f0a1f), TOBN(0xfe126605, 0xe9e2ab95), - TOBN(0x67578b85, 0x2f5f199c), TOBN(0xf5c00329, 0x2cb84913), - TOBN(0xf7956430, 0x37577dd8), TOBN(0x83b82af4, 0x29c5fe88), - TOBN(0x9c1bea26, 0xcdbdc132), TOBN(0x589fa086, 0x9c04339e), - TOBN(0x033e9538, 0xb13799df), TOBN(0x85fa8b21, 0xd295d034), - TOBN(0xdf17f73f, 0xbd9ddcca), TOBN(0xf32bd122, 0xddb66334), - TOBN(0x55ef88a7, 0x858b044c), TOBN(0x1f0d69c2, 0x5aa9e397), - TOBN(0x55fd9cc3, 0x40d85559), TOBN(0xc774df72, 0x7785ddb2), - TOBN(0x5dcce9f6, 0xd3bd2e1c), TOBN(0xeb30da20, 0xa85dfed0), - TOBN(0x5ed7f5bb, 0xd3ed09c4), TOBN(0x7d42a35c, 0x82a9c1bd), - TOBN(0xcf3de995, 0x9890272d), TOBN(0x75f3432a, 0x3e713a10), - TOBN(0x5e13479f, 0xe28227b8), TOBN(0xb8561ea9, 0xfefacdc8), - TOBN(0xa6a297a0, 0x8332aafd), TOBN(0x9b0d8bb5, 0x73809b62), - TOBN(0xd2fa1cfd, 0x0c63036f), TOBN(0x7a16eb55, 0xbd64bda8), - TOBN(0x3f5cf5f6, 0x78e62ddc), TOBN(0x2267c454, 0x07fd752b), - TOBN(0x5e361b6b, 0x5e437bbe), TOBN(0x95c59501, 0x8354e075), - TOBN(0xec725f85, 0xf2b254d9), TOBN(0x844b617d, 0x2cb52b4e), - TOBN(0xed8554f5, 0xcf425fb5), TOBN(0xab67703e, 0x2af9f312), - TOBN(0x4cc34ec1, 0x3cf48283), TOBN(0xb09daa25, 0x9c8a705e), - TOBN(0xd1e9d0d0, 0x5b7d4f84), TOBN(0x4df6ef64, 0xdb38929d), - TOBN(0xe16b0763, 0xaa21ba46), TOBN(0xc6b1d178, 0xa293f8fb), - TOBN(0x0ff5b602, 0xd520aabf), TOBN(0x94d671bd, 0xc339397a), - TOBN(0x7c7d98cf, 0x4f5792fa), TOBN(0x7c5e0d67, 0x11215261), - TOBN(0x9b19a631, 0xa7c5a6d4), TOBN(0xc8511a62, 0x7a45274d), - TOBN(0x0c16621c, 0xa5a60d99), TOBN(0xf7fbab88, 0xcf5e48cb), - TOBN(0xab1e6ca2, 0xf7ddee08), TOBN(0x83bd08ce, 0xe7867f3c), - TOBN(0xf7e48e8a, 0x2ac13e27), TOBN(0x4494f6df, 0x4eb1a9f5), - TOBN(0xedbf84eb, 0x981f0a62), TOBN(0x49badc32, 0x536438f0), - TOBN(0x50bea541, 0x004f7571), TOBN(0xbac67d10, 0xdf1c94ee), - TOBN(0x253d73a1, 0xb727bc31), TOBN(0xb3d01cf2, 0x30686e28), - TOBN(0x51b77b1b, 0x55fd0b8b), TOBN(0xa099d183, 0xfeec3173), - TOBN(0x202b1fb7, 0x670e72b7), TOBN(0xadc88b33, 0xa8e1635f), - TOBN(0x34e8216a, 0xf989d905), TOBN(0xc2e68d20, 0x29b58d01), - TOBN(0x11f81c92, 0x6fe55a93), TOBN(0x15f1462a, 0x8f296f40), - TOBN(0x1915d375, 0xea3d62f2), TOBN(0xa17765a3, 0x01c8977d), - TOBN(0x7559710a, 0xe47b26f6), TOBN(0xe0bd29c8, 0x535077a5), - TOBN(0x615f976d, 0x08d84858), TOBN(0x370dfe85, 0x69ced5c1), - TOBN(0xbbc7503c, 0xa734fa56), TOBN(0xfbb9f1ec, 0x91ac4574), - TOBN(0x95d7ec53, 0x060dd7ef), TOBN(0xeef2dacd, 0x6e657979), - TOBN(0x54511af3, 0xe2a08235), TOBN(0x1e324aa4, 0x1f4aea3d), - TOBN(0x550e7e71, 0xe6e67671), TOBN(0xbccd5190, 0xbf52faf7), - TOBN(0xf880d316, 0x223cc62a), TOBN(0x0d402c7e, 0x2b32eb5d), - TOBN(0xa40bc039, 0x306a5a3b), TOBN(0x4e0a41fd, 0x96783a1b), - TOBN(0xa1e8d39a, 0x0253cdd4), TOBN(0x6480be26, 0xc7388638), - TOBN(0xee365e1d, 0x2285f382), TOBN(0x188d8d8f, 0xec0b5c36), - TOBN(0x34ef1a48, 0x1f0f4d82), TOBN(0x1a8f43e1, 0xa487d29a), - TOBN(0x8168226d, 0x77aefb3a), TOBN(0xf69a751e, 0x1e72c253), - TOBN(0x8e04359a, 0xe9594df1), TOBN(0x475ffd7d, 0xd14c0467), - TOBN(0xb5a2c2b1, 0x3844e95c), TOBN(0x85caf647, 0xdd12ef94), - TOBN(0x1ecd2a9f, 0xf1063d00), TOBN(0x1dd2e229, 0x23843311), - TOBN(0x38f0e09d, 0x73d17244), TOBN(0x3ede7746, 0x8fc653f1), - TOBN(0xae4459f5, 0xdc20e21c), TOBN(0x00db2ffa, 0x6a8599ea), - TOBN(0x11682c39, 0x30cfd905), TOBN(0x4934d074, 0xa5c112a6), - TOBN(0xbdf063c5, 0x568bfe95), TOBN(0x779a440a, 0x016c441a), - TOBN(0x0c23f218, 0x97d6fbdc), TOBN(0xd3a5cd87, 0xe0776aac), - TOBN(0xcee37f72, 0xd712e8db), TOBN(0xfb28c70d, 0x26f74e8d), - TOBN(0xffe0c728, 0xb61301a0), TOBN(0xa6282168, 0xd3724354), - TOBN(0x7ff4cb00, 0x768ffedc), TOBN(0xc51b3088, 0x03b02de9), - TOBN(0xa5a8147c, 0x3902dda5), TOBN(0x35d2f706, 0xfe6973b4), - TOBN(0x5ac2efcf, 0xc257457e), TOBN(0x933f48d4, 0x8700611b), - TOBN(0xc365af88, 0x4912beb2), TOBN(0x7f5a4de6, 0x162edf94), - TOBN(0xc646ba7c, 0x0c32f34b), TOBN(0x632c6af3, 0xb2091074), - TOBN(0x58d4f2e3, 0x753e43a9), TOBN(0x70e1d217, 0x24d4e23f), - TOBN(0xb24bf729, 0xafede6a6), TOBN(0x7f4a94d8, 0x710c8b60), - TOBN(0xaad90a96, 0x8d4faa6a), TOBN(0xd9ed0b32, 0xb066b690), - TOBN(0x52fcd37b, 0x78b6dbfd), TOBN(0x0b64615e, 0x8bd2b431), - TOBN(0x228e2048, 0xcfb9fad5), TOBN(0xbeaa386d, 0x240b76bd), - TOBN(0x2d6681c8, 0x90dad7bc), TOBN(0x3e553fc3, 0x06d38f5e), - TOBN(0xf27cdb9b, 0x9d5f9750), TOBN(0x3e85c52a, 0xd28c5b0e), - TOBN(0x190795af, 0x5247c39b), TOBN(0x547831eb, 0xbddd6828), - TOBN(0xf327a227, 0x4a82f424), TOBN(0x36919c78, 0x7e47f89d), - TOBN(0xe4783919, 0x43c7392c), TOBN(0xf101b9aa, 0x2316fefe), - TOBN(0xbcdc9e9c, 0x1c5009d2), TOBN(0xfb55ea13, 0x9cd18345), - TOBN(0xf5b5e231, 0xa3ce77c7), TOBN(0xde6b4527, 0xd2f2cb3d), - TOBN(0x10f6a333, 0x9bb26f5f), TOBN(0x1e85db8e, 0x044d85b6), - TOBN(0xc3697a08, 0x94197e54), TOBN(0x65e18cc0, 0xa7cb4ea8), - TOBN(0xa38c4f50, 0xa471fe6e), TOBN(0xf031747a, 0x2f13439c), - TOBN(0x53c4a6ba, 0xc007318b), TOBN(0xa8da3ee5, 0x1deccb3d), - TOBN(0x0555b31c, 0x558216b1), TOBN(0x90c7810c, 0x2f79e6c2), - TOBN(0x9b669f4d, 0xfe8eed3c), TOBN(0x70398ec8, 0xe0fac126), - TOBN(0xa96a449e, 0xf701b235), TOBN(0x0ceecdb3, 0xeb94f395), - TOBN(0x285fc368, 0xd0cb7431), TOBN(0x0d37bb52, 0x16a18c64), - TOBN(0x05110d38, 0xb880d2dd), TOBN(0xa60f177b, 0x65930d57), - TOBN(0x7da34a67, 0xf36235f5), TOBN(0x47f5e17c, 0x183816b9), - TOBN(0xc7664b57, 0xdb394af4), TOBN(0x39ba215d, 0x7036f789), - TOBN(0x46d2ca0e, 0x2f27b472), TOBN(0xc42647ee, 0xf73a84b7), - TOBN(0x44bc7545, 0x64488f1d), TOBN(0xaa922708, 0xf4cf85d5), - TOBN(0x721a01d5, 0x53e4df63), TOBN(0x649c0c51, 0x5db46ced), - TOBN(0x6bf0d64e, 0x3cffcb6c), TOBN(0xe3bf93fe, 0x50f71d96), - TOBN(0x75044558, 0xbcc194a0), TOBN(0x16ae3372, 0x6afdc554), - TOBN(0xbfc01adf, 0x5ca48f3f), TOBN(0x64352f06, 0xe22a9b84), - TOBN(0xcee54da1, 0xc1099e4a), TOBN(0xbbda54e8, 0xfa1b89c0), - TOBN(0x166a3df5, 0x6f6e55fb), TOBN(0x1ca44a24, 0x20176f88), - TOBN(0x936afd88, 0xdfb7b5ff), TOBN(0xe34c2437, 0x8611d4a0), - TOBN(0x7effbb75, 0x86142103), TOBN(0x6704ba1b, 0x1f34fc4d), - TOBN(0x7c2a468f, 0x10c1b122), TOBN(0x36b3a610, 0x8c6aace9), - TOBN(0xabfcc0a7, 0x75a0d050), TOBN(0x066f9197, 0x3ce33e32), - TOBN(0xce905ef4, 0x29fe09be), TOBN(0x89ee25ba, 0xa8376351), - TOBN(0x2a3ede22, 0xfd29dc76), TOBN(0x7fd32ed9, 0x36f17260), - TOBN(0x0cadcf68, 0x284b4126), TOBN(0x63422f08, 0xa7951fc8), - TOBN(0x562b24f4, 0x0807e199), TOBN(0xfe9ce5d1, 0x22ad4490), - TOBN(0xc2f51b10, 0x0db2b1b4), TOBN(0xeb3613ff, 0xe4541d0d), - TOBN(0xbd2c4a05, 0x2680813b), TOBN(0x527aa55d, 0x561b08d6), - TOBN(0xa9f8a40e, 0xa7205558), TOBN(0xe3eea56f, 0x243d0bec), - TOBN(0x7b853817, 0xa0ff58b3), TOBN(0xb67d3f65, 0x1a69e627), - TOBN(0x0b76bbb9, 0xa869b5d6), TOBN(0xa3afeb82, 0x546723ed), - TOBN(0x5f24416d, 0x3e554892), TOBN(0x8413b53d, 0x430e2a45), - TOBN(0x99c56aee, 0x9032a2a0), TOBN(0x09432bf6, 0xeec367b1), - TOBN(0x552850c6, 0xdaf0ecc1), TOBN(0x49ebce55, 0x5bc92048), - TOBN(0xdfb66ba6, 0x54811307), TOBN(0x1b84f797, 0x6f298597), - TOBN(0x79590481, 0x8d1d7a0d), TOBN(0xd9fabe03, 0x3a6fa556), - TOBN(0xa40f9c59, 0xba9e5d35), TOBN(0xcb1771c1, 0xf6247577), - TOBN(0x542a47ca, 0xe9a6312b), TOBN(0xa34b3560, 0x552dd8c5), - TOBN(0xfdf94de0, 0x0d794716), TOBN(0xd46124a9, 0x9c623094), - TOBN(0x56b7435d, 0x68afe8b4), TOBN(0x27f20540, 0x6c0d8ea1), - TOBN(0x12b77e14, 0x73186898), TOBN(0xdbc3dd46, 0x7479490f), - TOBN(0x951a9842, 0xc03b0c05), TOBN(0x8b1b3bb3, 0x7921bc96), - TOBN(0xa573b346, 0x2b202e0a), TOBN(0x77e4665d, 0x47254d56), - TOBN(0x08b70dfc, 0xd23e3984), TOBN(0xab86e8bc, 0xebd14236), - TOBN(0xaa3e07f8, 0x57114ba7), TOBN(0x5ac71689, 0xab0ef4f2), - TOBN(0x88fca384, 0x0139d9af), TOBN(0x72733f88, 0x76644af0), - TOBN(0xf122f72a, 0x65d74f4a), TOBN(0x13931577, 0xa5626c7a), - TOBN(0xd5b5d9eb, 0x70f8d5a4), TOBN(0x375adde7, 0xd7bbb228), - TOBN(0x31e88b86, 0x0c1c0b32), TOBN(0xd1f568c4, 0x173edbaa), - TOBN(0x1592fc83, 0x5459df02), TOBN(0x2beac0fb, 0x0fcd9a7e), - TOBN(0xb0a6fdb8, 0x1b473b0a), TOBN(0xe3224c6f, 0x0fe8fc48), - TOBN(0x680bd00e, 0xe87edf5b), TOBN(0x30385f02, 0x20e77cf5), - TOBN(0xe9ab98c0, 0x4d42d1b2), TOBN(0x72d191d2, 0xd3816d77), - TOBN(0x1564daca, 0x0917d9e5), TOBN(0x394eab59, 0x1f8fed7f), - TOBN(0xa209aa8d, 0x7fbb3896), TOBN(0x5564f3b9, 0xbe6ac98e), - TOBN(0xead21d05, 0xd73654ef), TOBN(0x68d1a9c4, 0x13d78d74), - TOBN(0x61e01708, 0x6d4973a0), TOBN(0x83da3500, 0x46e6d32a), - TOBN(0x6a3dfca4, 0x68ae0118), TOBN(0xa1b9a4c9, 0xd02da069), - TOBN(0x0b2ff9c7, 0xebab8302), TOBN(0x98af07c3, 0x944ba436), - TOBN(0x85997326, 0x995f0f9f), TOBN(0x467fade0, 0x71b58bc6), - TOBN(0x47e4495a, 0xbd625a2b), TOBN(0xfdd2d01d, 0x33c3b8cd), - TOBN(0x2c38ae28, 0xc693f9fa), TOBN(0x48622329, 0x348f7999), - TOBN(0x97bf738e, 0x2161f583), TOBN(0x15ee2fa7, 0x565e8cc9), - TOBN(0xa1a5c845, 0x5777e189), TOBN(0xcc10bee0, 0x456f2829), - TOBN(0x8ad95c56, 0xda762bd5), TOBN(0x152e2214, 0xe9d91da8), - TOBN(0x975b0e72, 0x7cb23c74), TOBN(0xfd5d7670, 0xa90c66df), - TOBN(0xb5b5b8ad, 0x225ffc53), TOBN(0xab6dff73, 0xfaded2ae), - TOBN(0xebd56781, 0x6f4cbe9d), TOBN(0x0ed8b249, 0x6a574bd7), - TOBN(0x41c246fe, 0x81a881fa), TOBN(0x91564805, 0xc3db9c70), - TOBN(0xd7c12b08, 0x5b862809), TOBN(0x1facd1f1, 0x55858d7b), - TOBN(0x7693747c, 0xaf09e92a), TOBN(0x3b69dcba, 0x189a425f), - TOBN(0x0be28e9f, 0x967365ef), TOBN(0x57300eb2, 0xe801f5c9), - TOBN(0x93b8ac6a, 0xd583352f), TOBN(0xa2cf1f89, 0xcd05b2b7), - TOBN(0x7c0c9b74, 0x4dcc40cc), TOBN(0xfee38c45, 0xada523fb), - TOBN(0xb49a4dec, 0x1099cc4d), TOBN(0x325c377f, 0x69f069c6), - TOBN(0xe12458ce, 0x476cc9ff), TOBN(0x580e0b6c, 0xc6d4cb63), - TOBN(0xd561c8b7, 0x9072289b), TOBN(0x0377f264, 0xa619e6da), - TOBN(0x26685362, 0x88e591a5), TOBN(0xa453a7bd, 0x7523ca2b), - TOBN(0x8a9536d2, 0xc1df4533), TOBN(0xc8e50f2f, 0xbe972f79), - TOBN(0xd433e50f, 0x6d3549cf), TOBN(0x6f33696f, 0xfacd665e), - TOBN(0x695bfdac, 0xce11fcb4), TOBN(0x810ee252, 0xaf7c9860), - TOBN(0x65450fe1, 0x7159bb2c), TOBN(0xf7dfbebe, 0x758b357b), - TOBN(0x2b057e74, 0xd69fea72), TOBN(0xd485717a, 0x92731745)}, - {TOBN(0x896c42e8, 0xee36860c), TOBN(0xdaf04dfd, 0x4113c22d), - TOBN(0x1adbb7b7, 0x44104213), TOBN(0xe5fd5fa1, 0x1fd394ea), - TOBN(0x68235d94, 0x1a4e0551), TOBN(0x6772cfbe, 0x18d10151), - TOBN(0x276071e3, 0x09984523), TOBN(0xe4e879de, 0x5a56ba98), - TOBN(0xaaafafb0, 0x285b9491), TOBN(0x01a0be88, 0x1e4c705e), - TOBN(0xff1d4f5d, 0x2ad9caab), TOBN(0x6e349a4a, 0xc37a233f), - TOBN(0xcf1c1246, 0x4a1c6a16), TOBN(0xd99e6b66, 0x29383260), - TOBN(0xea3d4366, 0x5f6d5471), TOBN(0x36974d04, 0xff8cc89b), - TOBN(0xc26c49a1, 0xcfe89d80), TOBN(0xb42c026d, 0xda9c8371), - TOBN(0xca6c013a, 0xdad066d2), TOBN(0xfb8f7228, 0x56a4f3ee), - TOBN(0x08b579ec, 0xd850935b), TOBN(0x34c1a74c, 0xd631e1b3), - TOBN(0xcb5fe596, 0xac198534), TOBN(0x39ff21f6, 0xe1f24f25), - TOBN(0x27f29e14, 0x8f929057), TOBN(0x7a64ae06, 0xc0c853df), - TOBN(0x256cd183, 0x58e9c5ce), TOBN(0x9d9cce82, 0xded092a5), - TOBN(0xcc6e5979, 0x6e93b7c7), TOBN(0xe1e47092, 0x31bb9e27), - TOBN(0xb70b3083, 0xaa9e29a0), TOBN(0xbf181a75, 0x3785e644), - TOBN(0xf53f2c65, 0x8ead09f7), TOBN(0x1335e1d5, 0x9780d14d), - TOBN(0x69cc20e0, 0xcd1b66bc), TOBN(0x9b670a37, 0xbbe0bfc8), - TOBN(0xce53dc81, 0x28efbeed), TOBN(0x0c74e77c, 0x8326a6e5), - TOBN(0x3604e0d2, 0xb88e9a63), TOBN(0xbab38fca, 0x13dc2248), - TOBN(0x8ed6e8c8, 0x5c0a3f1e), TOBN(0xbcad2492, 0x7c87c37f), - TOBN(0xfdfb62bb, 0x9ee3b78d), TOBN(0xeba8e477, 0xcbceba46), - TOBN(0x37d38cb0, 0xeeaede4b), TOBN(0x0bc498e8, 0x7976deb6), - TOBN(0xb2944c04, 0x6b6147fb), TOBN(0x8b123f35, 0xf71f9609), - TOBN(0xa155dcc7, 0xde79dc24), TOBN(0xf1168a32, 0x558f69cd), - TOBN(0xbac21595, 0x0d1850df), TOBN(0x15c8295b, 0xb204c848), - TOBN(0xf661aa36, 0x7d8184ff), TOBN(0xc396228e, 0x30447bdb), - TOBN(0x11cd5143, 0xbde4a59e), TOBN(0xe3a26e3b, 0x6beab5e6), - TOBN(0xd3b3a13f, 0x1402b9d0), TOBN(0x573441c3, 0x2c7bc863), - TOBN(0x4b301ec4, 0x578c3e6e), TOBN(0xc26fc9c4, 0x0adaf57e), - TOBN(0x96e71bfd, 0x7493cea3), TOBN(0xd05d4b3f, 0x1af81456), - TOBN(0xdaca2a8a, 0x6a8c608f), TOBN(0x53ef07f6, 0x0725b276), - TOBN(0x07a5fbd2, 0x7824fc56), TOBN(0x34675218, 0x13289077), - TOBN(0x5bf69fd5, 0xe0c48349), TOBN(0xa613ddd3, 0xb6aa7875), - TOBN(0x7f78c19c, 0x5450d866), TOBN(0x46f4409c, 0x8f84a481), - TOBN(0x9f1d1928, 0x90fce239), TOBN(0x016c4168, 0xb2ce44b9), - TOBN(0xbae023f0, 0xc7435978), TOBN(0xb152c888, 0x20e30e19), - TOBN(0x9c241645, 0xe3fa6faf), TOBN(0x735d95c1, 0x84823e60), - TOBN(0x03197573, 0x03955317), TOBN(0x0b4b02a9, 0xf03b4995), - TOBN(0x076bf559, 0x70274600), TOBN(0x32c5cc53, 0xaaf57508), - TOBN(0xe8af6d1f, 0x60624129), TOBN(0xb7bc5d64, 0x9a5e2b5e), - TOBN(0x3814b048, 0x5f082d72), TOBN(0x76f267f2, 0xce19677a), - TOBN(0x626c630f, 0xb36eed93), TOBN(0x55230cd7, 0x3bf56803), - TOBN(0x78837949, 0xce2736a0), TOBN(0x0d792d60, 0xaa6c55f1), - TOBN(0x0318dbfd, 0xd5c7c5d2), TOBN(0xb38f8da7, 0x072b342d), - TOBN(0x3569bddc, 0x7b8de38a), TOBN(0xf25b5887, 0xa1c94842), - TOBN(0xb2d5b284, 0x2946ad60), TOBN(0x854f29ad, 0xe9d1707e), - TOBN(0xaa5159dc, 0x2c6a4509), TOBN(0x899f94c0, 0x57189837), - TOBN(0xcf6adc51, 0xf4a55b03), TOBN(0x261762de, 0x35e3b2d5), - TOBN(0x4cc43012, 0x04827b51), TOBN(0xcd22a113, 0xc6021442), - TOBN(0xce2fd61a, 0x247c9569), TOBN(0x59a50973, 0xd152beca), - TOBN(0x6c835a11, 0x63a716d4), TOBN(0xc26455ed, 0x187dedcf), - TOBN(0x27f536e0, 0x49ce89e7), TOBN(0x18908539, 0xcc890cb5), - TOBN(0x308909ab, 0xd83c2aa1), TOBN(0xecd3142b, 0x1ab73bd3), - TOBN(0x6a85bf59, 0xb3f5ab84), TOBN(0x3c320a68, 0xf2bea4c6), - TOBN(0xad8dc538, 0x6da4541f), TOBN(0xeaf34eb0, 0xb7c41186), - TOBN(0x1c780129, 0x977c97c4), TOBN(0x5ff9beeb, 0xc57eb9fa), - TOBN(0xa24d0524, 0xc822c478), TOBN(0xfd8eec2a, 0x461cd415), - TOBN(0xfbde194e, 0xf027458c), TOBN(0xb4ff5319, 0x1d1be115), - TOBN(0x63f874d9, 0x4866d6f4), TOBN(0x35c75015, 0xb21ad0c9), - TOBN(0xa6b5c9d6, 0x46ac49d2), TOBN(0x42c77c0b, 0x83137aa9), - TOBN(0x24d000fc, 0x68225a38), TOBN(0x0f63cfc8, 0x2fe1e907), - TOBN(0x22d1b01b, 0xc6441f95), TOBN(0x7d38f719, 0xec8e448f), - TOBN(0x9b33fa5f, 0x787fb1ba), TOBN(0x94dcfda1, 0x190158df), - TOBN(0xc47cb339, 0x5f6d4a09), TOBN(0x6b4f355c, 0xee52b826), - TOBN(0x3d100f5d, 0xf51b930a), TOBN(0xf4512fac, 0x9f668f69), - TOBN(0x546781d5, 0x206c4c74), TOBN(0xd021d4d4, 0xcb4d2e48), - TOBN(0x494a54c2, 0xca085c2d), TOBN(0xf1dbaca4, 0x520850a8), - TOBN(0x63c79326, 0x490a1aca), TOBN(0xcb64dd9c, 0x41526b02), - TOBN(0xbb772591, 0xa2979258), TOBN(0x3f582970, 0x48d97846), - TOBN(0xd66b70d1, 0x7c213ba7), TOBN(0xc28febb5, 0xe8a0ced4), - TOBN(0x6b911831, 0xc10338c1), TOBN(0x0d54e389, 0xbf0126f3), - TOBN(0x7048d460, 0x4af206ee), TOBN(0x786c88f6, 0x77e97cb9), - TOBN(0xd4375ae1, 0xac64802e), TOBN(0x469bcfe1, 0xd53ec11c), - TOBN(0xfc9b340d, 0x47062230), TOBN(0xe743bb57, 0xc5b4a3ac), - TOBN(0xfe00b4aa, 0x59ef45ac), TOBN(0x29a4ef23, 0x59edf188), - TOBN(0x40242efe, 0xb483689b), TOBN(0x2575d3f6, 0x513ac262), - TOBN(0xf30037c8, 0x0ca6db72), TOBN(0xc9fcce82, 0x98864be2), - TOBN(0x84a112ff, 0x0149362d), TOBN(0x95e57582, 0x1c4ae971), - TOBN(0x1fa4b1a8, 0x945cf86c), TOBN(0x4525a734, 0x0b024a2f), - TOBN(0xe76c8b62, 0x8f338360), TOBN(0x483ff593, 0x28edf32b), - TOBN(0x67e8e90a, 0x298b1aec), TOBN(0x9caab338, 0x736d9a21), - TOBN(0x5c09d2fd, 0x66892709), TOBN(0x2496b4dc, 0xb55a1d41), - TOBN(0x93f5fb1a, 0xe24a4394), TOBN(0x08c75049, 0x6fa8f6c1), - TOBN(0xcaead1c2, 0xc905d85f), TOBN(0xe9d7f790, 0x0733ae57), - TOBN(0x24c9a65c, 0xf07cdd94), TOBN(0x7389359c, 0xa4b55931), - TOBN(0xf58709b7, 0x367e45f7), TOBN(0x1f203067, 0xcb7e7adc), - TOBN(0x82444bff, 0xc7b72818), TOBN(0x07303b35, 0xbaac8033), - TOBN(0x1e1ee4e4, 0xd13b7ea1), TOBN(0xe6489b24, 0xe0e74180), - TOBN(0xa5f2c610, 0x7e70ef70), TOBN(0xa1655412, 0xbdd10894), - TOBN(0x555ebefb, 0x7af4194e), TOBN(0x533c1c3c, 0x8e89bd9c), - TOBN(0x735b9b57, 0x89895856), TOBN(0x15fb3cd2, 0x567f5c15), - TOBN(0x057fed45, 0x526f09fd), TOBN(0xe8a4f10c, 0x8128240a), - TOBN(0x9332efc4, 0xff2bfd8d), TOBN(0x214e77a0, 0xbd35aa31), - TOBN(0x32896d73, 0x14faa40e), TOBN(0x767867ec, 0x01e5f186), - TOBN(0xc9adf8f1, 0x17a1813e), TOBN(0xcb6cda78, 0x54741795), - TOBN(0xb7521b6d, 0x349d51aa), TOBN(0xf56b5a9e, 0xe3c7b8e9), - TOBN(0xc6f1e5c9, 0x32a096df), TOBN(0x083667c4, 0xa3635024), - TOBN(0x365ea135, 0x18087f2f), TOBN(0xf1b8eaac, 0xd136e45d), - TOBN(0xc8a0e484, 0x73aec989), TOBN(0xd75a324b, 0x142c9259), - TOBN(0xb7b4d001, 0x01dae185), TOBN(0x45434e0b, 0x9b7a94bc), - TOBN(0xf54339af, 0xfbd8cb0b), TOBN(0xdcc4569e, 0xe98ef49e), - TOBN(0x7789318a, 0x09a51299), TOBN(0x81b4d206, 0xb2b025d8), - TOBN(0xf64aa418, 0xfae85792), TOBN(0x3e50258f, 0xacd7baf7), - TOBN(0xdce84cdb, 0x2996864b), TOBN(0xa2e67089, 0x1f485fa4), - TOBN(0xb28b2bb6, 0x534c6a5a), TOBN(0x31a7ec6b, 0xc94b9d39), - TOBN(0x1d217766, 0xd6bc20da), TOBN(0x4acdb5ec, 0x86761190), - TOBN(0x68726328, 0x73701063), TOBN(0x4d24ee7c, 0x2128c29b), - TOBN(0xc072ebd3, 0xa19fd868), TOBN(0x612e481c, 0xdb8ddd3b), - TOBN(0xb4e1d754, 0x1a64d852), TOBN(0x00ef95ac, 0xc4c6c4ab), - TOBN(0x1536d2ed, 0xaa0a6c46), TOBN(0x61294086, 0x43774790), - TOBN(0x54af25e8, 0x343fda10), TOBN(0x9ff9d98d, 0xfd25d6f2), - TOBN(0x0746af7c, 0x468b8835), TOBN(0x977a31cb, 0x730ecea7), - TOBN(0xa5096b80, 0xc2cf4a81), TOBN(0xaa986833, 0x6458c37a), - TOBN(0x6af29bf3, 0xa6bd9d34), TOBN(0x6a62fe9b, 0x33c5d854), - TOBN(0x50e6c304, 0xb7133b5e), TOBN(0x04b60159, 0x7d6e6848), - TOBN(0x4cd296df, 0x5579bea4), TOBN(0x10e35ac8, 0x5ceedaf1), - TOBN(0x04c4c5fd, 0xe3bcc5b1), TOBN(0x95f9ee8a, 0x89412cf9), - TOBN(0x2c9459ee, 0x82b6eb0f), TOBN(0x2e845765, 0x95c2aadd), - TOBN(0x774a84ae, 0xd327fcfe), TOBN(0xd8c93722, 0x0368d476), - TOBN(0x0dbd5748, 0xf83e8a3b), TOBN(0xa579aa96, 0x8d2495f3), - TOBN(0x535996a0, 0xae496e9b), TOBN(0x07afbfe9, 0xb7f9bcc2), - TOBN(0x3ac1dc6d, 0x5b7bd293), TOBN(0x3b592cff, 0x7022323d), - TOBN(0xba0deb98, 0x9c0a3e76), TOBN(0x18e78e9f, 0x4b197acb), - TOBN(0x211cde10, 0x296c36ef), TOBN(0x7ee89672, 0x82c4da77), - TOBN(0xb617d270, 0xa57836da), TOBN(0xf0cd9c31, 0x9cb7560b), - TOBN(0x01fdcbf7, 0xe455fe90), TOBN(0x3fb53cbb, 0x7e7334f3), - TOBN(0x781e2ea4, 0x4e7de4ec), TOBN(0x8adab3ad, 0x0b384fd0), - TOBN(0x129eee2f, 0x53d64829), TOBN(0x7a471e17, 0xa261492b), - TOBN(0xe4f9adb9, 0xe4cb4a2c), TOBN(0x3d359f6f, 0x97ba2c2d), - TOBN(0x346c6786, 0x0aacd697), TOBN(0x92b444c3, 0x75c2f8a8), - TOBN(0xc79fa117, 0xd85df44e), TOBN(0x56782372, 0x398ddf31), - TOBN(0x60e690f2, 0xbbbab3b8), TOBN(0x4851f8ae, 0x8b04816b), - TOBN(0xc72046ab, 0x9c92e4d2), TOBN(0x518c74a1, 0x7cf3136b), - TOBN(0xff4eb50a, 0xf9877d4c), TOBN(0x14578d90, 0xa919cabb), - TOBN(0x8218f8c4, 0xac5eb2b6), TOBN(0xa3ccc547, 0x542016e4), - TOBN(0x025bf48e, 0x327f8349), TOBN(0xf3e97346, 0xf43cb641), - TOBN(0xdc2bafdf, 0x500f1085), TOBN(0x57167876, 0x2f063055), - TOBN(0x5bd914b9, 0x411925a6), TOBN(0x7c078d48, 0xa1123de5), - TOBN(0xee6bf835, 0x182b165d), TOBN(0xb11b5e5b, 0xba519727), - TOBN(0xe33ea76c, 0x1eea7b85), TOBN(0x2352b461, 0x92d4f85e), - TOBN(0xf101d334, 0xafe115bb), TOBN(0xfabc1294, 0x889175a3), - TOBN(0x7f6bcdc0, 0x5233f925), TOBN(0xe0a802db, 0xe77fec55), - TOBN(0xbdb47b75, 0x8069b659), TOBN(0x1c5e12de, 0xf98fbd74), - TOBN(0x869c58c6, 0x4b8457ee), TOBN(0xa5360f69, 0x4f7ea9f7), - TOBN(0xe576c09f, 0xf460b38f), TOBN(0x6b70d548, 0x22b7fb36), - TOBN(0x3fd237f1, 0x3bfae315), TOBN(0x33797852, 0xcbdff369), - TOBN(0x97df25f5, 0x25b516f9), TOBN(0x46f388f2, 0xba38ad2d), - TOBN(0x656c4658, 0x89d8ddbb), TOBN(0x8830b26e, 0x70f38ee8), - TOBN(0x4320fd5c, 0xde1212b0), TOBN(0xc34f30cf, 0xe4a2edb2), - TOBN(0xabb131a3, 0x56ab64b8), TOBN(0x7f77f0cc, 0xd99c5d26), - TOBN(0x66856a37, 0xbf981d94), TOBN(0x19e76d09, 0x738bd76e), - TOBN(0xe76c8ac3, 0x96238f39), TOBN(0xc0a482be, 0xa830b366), - TOBN(0xb7b8eaff, 0x0b4eb499), TOBN(0x8ecd83bc, 0x4bfb4865), - TOBN(0x971b2cb7, 0xa2f3776f), TOBN(0xb42176a4, 0xf4b88adf), - TOBN(0xb9617df5, 0xbe1fa446), TOBN(0x8b32d508, 0xcd031bd2), - TOBN(0x1c6bd47d, 0x53b618c0), TOBN(0xc424f46c, 0x6a227923), - TOBN(0x7303ffde, 0xdd92d964), TOBN(0xe9712878, 0x71b5abf2), - TOBN(0x8f48a632, 0xf815561d), TOBN(0x85f48ff5, 0xd3c055d1), - TOBN(0x222a1427, 0x7525684f), TOBN(0xd0d841a0, 0x67360cc3), - TOBN(0x4245a926, 0x0b9267c6), TOBN(0xc78913f1, 0xcf07f863), - TOBN(0xaa844c8e, 0x4d0d9e24), TOBN(0xa42ad522, 0x3d5f9017), - TOBN(0xbd371749, 0xa2c989d5), TOBN(0x928292df, 0xe1f5e78e), - TOBN(0x493b383e, 0x0a1ea6da), TOBN(0x5136fd8d, 0x13aee529), - TOBN(0x860c44b1, 0xf2c34a99), TOBN(0x3b00aca4, 0xbf5855ac), - TOBN(0xabf6aaa0, 0xfaaf37be), TOBN(0x65f43682, 0x2a53ec08), - TOBN(0x1d9a5801, 0xa11b12e1), TOBN(0x78a7ab2c, 0xe20ed475), - TOBN(0x0de1067e, 0x9a41e0d5), TOBN(0x30473f5f, 0x305023ea), - TOBN(0xdd3ae09d, 0x169c7d97), TOBN(0x5cd5baa4, 0xcfaef9cd), - TOBN(0x5cd7440b, 0x65a44803), TOBN(0xdc13966a, 0x47f364de), - TOBN(0x077b2be8, 0x2b8357c1), TOBN(0x0cb1b4c5, 0xe9d57c2a), - TOBN(0x7a4ceb32, 0x05ff363e), TOBN(0xf310fa4d, 0xca35a9ef), - TOBN(0xdbb7b352, 0xf97f68c6), TOBN(0x0c773b50, 0x0b02cf58), - TOBN(0xea2e4821, 0x3c1f96d9), TOBN(0xffb357b0, 0xeee01815), - TOBN(0xb9c924cd, 0xe0f28039), TOBN(0x0b36c95a, 0x46a3fbe4), - TOBN(0x1faaaea4, 0x5e46db6c), TOBN(0xcae575c3, 0x1928aaff), - TOBN(0x7f671302, 0xa70dab86), TOBN(0xfcbd12a9, 0x71c58cfc), - TOBN(0xcbef9acf, 0xbee0cb92), TOBN(0x573da0b9, 0xf8c1b583), - TOBN(0x4752fcfe, 0x0d41d550), TOBN(0xe7eec0e3, 0x2155cffe), - TOBN(0x0fc39fcb, 0x545ae248), TOBN(0x522cb8d1, 0x8065f44e), - TOBN(0x263c962a, 0x70cbb96c), TOBN(0xe034362a, 0xbcd124a9), - TOBN(0xf120db28, 0x3c2ae58d), TOBN(0xb9a38d49, 0xfef6d507), - TOBN(0xb1fd2a82, 0x1ff140fd), TOBN(0xbd162f30, 0x20aee7e0), - TOBN(0x4e17a5d4, 0xcb251949), TOBN(0x2aebcb83, 0x4f7e1c3d), - TOBN(0x608eb25f, 0x937b0527), TOBN(0xf42e1e47, 0xeb7d9997), - TOBN(0xeba699c4, 0xb8a53a29), TOBN(0x1f921c71, 0xe091b536), - TOBN(0xcce29e7b, 0x5b26bbd5), TOBN(0x7a8ef5ed, 0x3b61a680), - TOBN(0xe5ef8043, 0xba1f1c7e), TOBN(0x16ea8217, 0x18158dda), - TOBN(0x01778a2b, 0x599ff0f9), TOBN(0x68a923d7, 0x8104fc6b), - TOBN(0x5bfa44df, 0xda694ff3), TOBN(0x4f7199db, 0xf7667f12), - TOBN(0xc06d8ff6, 0xe46f2a79), TOBN(0x08b5dead, 0xe9f8131d), - TOBN(0x02519a59, 0xabb4ce7c), TOBN(0xc4f710bc, 0xb42aec3e), - TOBN(0x3d77b057, 0x78bde41a), TOBN(0x6474bf80, 0xb4186b5a), - TOBN(0x048b3f67, 0x88c65741), TOBN(0xc64519de, 0x03c7c154), - TOBN(0xdf073846, 0x0edfcc4f), TOBN(0x319aa737, 0x48f1aa6b), - TOBN(0x8b9f8a02, 0xca909f77), TOBN(0x90258139, 0x7580bfef), - TOBN(0xd8bfd3ca, 0xc0c22719), TOBN(0xc60209e4, 0xc9ca151e), - TOBN(0x7a744ab5, 0xd9a1a69c), TOBN(0x6de5048b, 0x14937f8f), - TOBN(0x171938d8, 0xe115ac04), TOBN(0x7df70940, 0x1c6b16d2), - TOBN(0xa6aeb663, 0x7f8e94e7), TOBN(0xc130388e, 0x2a2cf094), - TOBN(0x1850be84, 0x77f54e6e), TOBN(0x9f258a72, 0x65d60fe5), - TOBN(0xff7ff0c0, 0x6c9146d6), TOBN(0x039aaf90, 0xe63a830b), - TOBN(0x38f27a73, 0x9460342f), TOBN(0x4703148c, 0x3f795f8a), - TOBN(0x1bb5467b, 0x9681a97e), TOBN(0x00931ba5, 0xecaeb594), - TOBN(0xcdb6719d, 0x786f337c), TOBN(0xd9c01cd2, 0xe704397d), - TOBN(0x0f4a3f20, 0x555c2fef), TOBN(0x00452509, 0x7c0af223), - TOBN(0x54a58047, 0x84db8e76), TOBN(0x3bacf1aa, 0x93c8aa06), - TOBN(0x11ca957c, 0xf7919422), TOBN(0x50641053, 0x78cdaa40), - TOBN(0x7a303874, 0x9f7144ae), TOBN(0x170c963f, 0x43d4acfd), - TOBN(0x5e148149, 0x58ddd3ef), TOBN(0xa7bde582, 0x9e72dba8), - TOBN(0x0769da8b, 0x6fa68750), TOBN(0xfa64e532, 0x572e0249), - TOBN(0xfcaadf9d, 0x2619ad31), TOBN(0x87882daa, 0xa7b349cd), - TOBN(0x9f6eb731, 0x6c67a775), TOBN(0xcb10471a, 0xefc5d0b1), - TOBN(0xb433750c, 0xe1b806b2), TOBN(0x19c5714d, 0x57b1ae7e), - TOBN(0xc0dc8b7b, 0xed03fd3f), TOBN(0xdd03344f, 0x31bc194e), - TOBN(0xa66c52a7, 0x8c6320b5), TOBN(0x8bc82ce3, 0xd0b6fd93), - TOBN(0xf8e13501, 0xb35f1341), TOBN(0xe53156dd, 0x25a43e42), - TOBN(0xd3adf27e, 0x4daeb85c), TOBN(0xb81d8379, 0xbbeddeb5), - TOBN(0x1b0b546e, 0x2e435867), TOBN(0x9020eb94, 0xeba5dd60), - TOBN(0x37d91161, 0x8210cb9d), TOBN(0x4c596b31, 0x5c91f1cf), - TOBN(0xb228a90f, 0x0e0b040d), TOBN(0xbaf02d82, 0x45ff897f), - TOBN(0x2aac79e6, 0x00fa6122), TOBN(0x24828817, 0x8e36f557), - TOBN(0xb9521d31, 0x113ec356), TOBN(0x9e48861e, 0x15eff1f8), - TOBN(0x2aa1d412, 0xe0d41715), TOBN(0x71f86203, 0x53f131b8), - TOBN(0xf60da8da, 0x3fd19408), TOBN(0x4aa716dc, 0x278d9d99), - TOBN(0x394531f7, 0xa8c51c90), TOBN(0xb560b0e8, 0xf59db51c), - TOBN(0xa28fc992, 0xfa34bdad), TOBN(0xf024fa14, 0x9cd4f8bd), - TOBN(0x5cf530f7, 0x23a9d0d3), TOBN(0x615ca193, 0xe28c9b56), - TOBN(0x6d2a483d, 0x6f73c51e), TOBN(0xa4cb2412, 0xea0dc2dd), - TOBN(0x50663c41, 0x1eb917ff), TOBN(0x3d3a74cf, 0xeade299e), - TOBN(0x29b3990f, 0x4a7a9202), TOBN(0xa9bccf59, 0xa7b15c3d), - TOBN(0x66a3ccdc, 0xa5df9208), TOBN(0x48027c14, 0x43f2f929), - TOBN(0xd385377c, 0x40b557f0), TOBN(0xe001c366, 0xcd684660), - TOBN(0x1b18ed6b, 0xe2183a27), TOBN(0x879738d8, 0x63210329), - TOBN(0xa687c74b, 0xbda94882), TOBN(0xd1bbcc48, 0xa684b299), - TOBN(0xaf6f1112, 0x863b3724), TOBN(0x6943d1b4, 0x2c8ce9f8), - TOBN(0xe044a3bb, 0x098cafb4), TOBN(0x27ed2310, 0x60d48caf), - TOBN(0x542b5675, 0x3a31b84d), TOBN(0xcbf3dd50, 0xfcddbed7), - TOBN(0x25031f16, 0x41b1d830), TOBN(0xa7ec851d, 0xcb0c1e27), - TOBN(0xac1c8fe0, 0xb5ae75db), TOBN(0xb24c7557, 0x08c52120), - TOBN(0x57f811dc, 0x1d4636c3), TOBN(0xf8436526, 0x681a9939), - TOBN(0x1f6bc6d9, 0x9c81adb3), TOBN(0x840f8ac3, 0x5b7d80d4), - TOBN(0x731a9811, 0xf4387f1a), TOBN(0x7c501cd3, 0xb5156880), - TOBN(0xa5ca4a07, 0xdfe68867), TOBN(0xf123d8f0, 0x5fcea120), - TOBN(0x1fbb0e71, 0xd607039e), TOBN(0x2b70e215, 0xcd3a4546), - TOBN(0x32d2f01d, 0x53324091), TOBN(0xb796ff08, 0x180ab19b), - TOBN(0x32d87a86, 0x3c57c4aa), TOBN(0x2aed9caf, 0xb7c49a27), - TOBN(0x9fb35eac, 0x31630d98), TOBN(0x338e8cdf, 0x5c3e20a3), - TOBN(0x80f16182, 0x66cde8db), TOBN(0x4e159980, 0x2d72fd36), - TOBN(0xd7b8f13b, 0x9b6e5072), TOBN(0xf5213907, 0x3b7b5dc1), - TOBN(0x4d431f1d, 0x8ce4396e), TOBN(0x37a1a680, 0xa7ed2142), - TOBN(0xbf375696, 0xd01aaf6b), TOBN(0xaa1c0c54, 0xe63aab66), - TOBN(0x3014368b, 0x4ed80940), TOBN(0x67e6d056, 0x7a6fcedd), - TOBN(0x7c208c49, 0xca97579f), TOBN(0xfe3d7a81, 0xa23597f6), - TOBN(0x5e203202, 0x7e096ae2), TOBN(0xb1f3e1e7, 0x24b39366), - TOBN(0x26da26f3, 0x2fdcdffc), TOBN(0x79422f1d, 0x6097be83)}, - {TOBN(0x263a2cfb, 0x9db3b381), TOBN(0x9c3a2dee, 0xd4df0a4b), - TOBN(0x728d06e9, 0x7d04e61f), TOBN(0x8b1adfbc, 0x42449325), - TOBN(0x6ec1d939, 0x7e053a1b), TOBN(0xee2be5c7, 0x66daf707), - TOBN(0x80ba1e14, 0x810ac7ab), TOBN(0xdd2ae778, 0xf530f174), - TOBN(0x0435d97a, 0x205b9d8b), TOBN(0x6eb8f064, 0x056756d4), - TOBN(0xd5e88a8b, 0xb6f8210e), TOBN(0x070ef12d, 0xec9fd9ea), - TOBN(0x4d849505, 0x3bcc876a), TOBN(0x12a75338, 0xa7404ce3), - TOBN(0xd22b49e1, 0xb8a1db5e), TOBN(0xec1f2051, 0x14bfa5ad), - TOBN(0xadbaeb79, 0xb6828f36), TOBN(0x9d7a0258, 0x01bd5b9e), - TOBN(0xeda01e0d, 0x1e844b0c), TOBN(0x4b625175, 0x887edfc9), - TOBN(0x14109fdd, 0x9669b621), TOBN(0x88a2ca56, 0xf6f87b98), - TOBN(0xfe2eb788, 0x170df6bc), TOBN(0x0cea06f4, 0xffa473f9), - TOBN(0x43ed81b5, 0xc4e83d33), TOBN(0xd9f35879, 0x5efd488b), - TOBN(0x164a620f, 0x9deb4d0f), TOBN(0xc6927bdb, 0xac6a7394), - TOBN(0x45c28df7, 0x9f9e0f03), TOBN(0x2868661e, 0xfcd7e1a9), - TOBN(0x7cf4e8d0, 0xffa348f1), TOBN(0x6bd4c284, 0x398538e0), - TOBN(0x2618a091, 0x289a8619), TOBN(0xef796e60, 0x6671b173), - TOBN(0x664e46e5, 0x9090c632), TOBN(0xa38062d4, 0x1e66f8fb), - TOBN(0x6c744a20, 0x0573274e), TOBN(0xd07b67e4, 0xa9271394), - TOBN(0x391223b2, 0x6bdc0e20), TOBN(0xbe2d93f1, 0xeb0a05a7), - TOBN(0xf23e2e53, 0x3f36d141), TOBN(0xe84bb3d4, 0x4dfca442), - TOBN(0xb804a48d, 0x6b7c023a), TOBN(0x1e16a8fa, 0x76431c3b), - TOBN(0x1b5452ad, 0xddd472e0), TOBN(0x7d405ee7, 0x0d1ee127), - TOBN(0x50fc6f1d, 0xffa27599), TOBN(0x351ac53c, 0xbf391b35), - TOBN(0x7efa14b8, 0x4444896b), TOBN(0x64974d2f, 0xf94027fb), - TOBN(0xefdcd0e8, 0xde84487d), TOBN(0x8c45b260, 0x2b48989b), - TOBN(0xa8fcbbc2, 0xd8463487), TOBN(0xd1b2b3f7, 0x3fbc476c), - TOBN(0x21d005b7, 0xc8f443c0), TOBN(0x518f2e67, 0x40c0139c), - TOBN(0x56036e8c, 0x06d75fc1), TOBN(0x2dcf7bb7, 0x3249a89f), - TOBN(0x81dd1d3d, 0xe245e7dd), TOBN(0xf578dc4b, 0xebd6e2a7), - TOBN(0x4c028903, 0xdf2ce7a0), TOBN(0xaee36288, 0x9c39afac), - TOBN(0xdc847c31, 0x146404ab), TOBN(0x6304c0d8, 0xa4e97818), - TOBN(0xae51dca2, 0xa91f6791), TOBN(0x2abe4190, 0x9baa9efc), - TOBN(0xd9d2e2f4, 0x559c7ac1), TOBN(0xe82f4b51, 0xfc9f773a), - TOBN(0xa7713027, 0x4073e81c), TOBN(0xc0276fac, 0xfbb596fc), - TOBN(0x1d819fc9, 0xa684f70c), TOBN(0x29b47fdd, 0xc9f7b1e0), - TOBN(0x358de103, 0x459b1940), TOBN(0xec881c59, 0x5b013e93), - TOBN(0x51574c93, 0x49532ad3), TOBN(0x2db1d445, 0xb37b46de), - TOBN(0xc6445b87, 0xdf239fd8), TOBN(0xc718af75, 0x151d24ee), - TOBN(0xaea1c4a4, 0xf43c6259), TOBN(0x40c0e5d7, 0x70be02f7), - TOBN(0x6a4590f4, 0x721b33f2), TOBN(0x2124f1fb, 0xfedf04ea), - TOBN(0xf8e53cde, 0x9745efe7), TOBN(0xe7e10432, 0x65f046d9), - TOBN(0xc3fca28e, 0xe4d0c7e6), TOBN(0x847e339a, 0x87253b1b), - TOBN(0x9b595348, 0x3743e643), TOBN(0xcb6a0a0b, 0x4fd12fc5), - TOBN(0xfb6836c3, 0x27d02dcc), TOBN(0x5ad00982, 0x7a68bcc2), - TOBN(0x1b24b44c, 0x005e912d), TOBN(0xcc83d20f, 0x811fdcfe), - TOBN(0x36527ec1, 0x666fba0c), TOBN(0x69948197, 0x14754635), - TOBN(0xfcdcb1a8, 0x556da9c2), TOBN(0xa5934267, 0x81a732b2), - TOBN(0xec1214ed, 0xa714181d), TOBN(0x609ac13b, 0x6067b341), - TOBN(0xff4b4c97, 0xa545df1f), TOBN(0xa1240501, 0x34d2076b), - TOBN(0x6efa0c23, 0x1409ca97), TOBN(0x254cc1a8, 0x20638c43), - TOBN(0xd4e363af, 0xdcfb46cd), TOBN(0x62c2adc3, 0x03942a27), - TOBN(0xc67b9df0, 0x56e46483), TOBN(0xa55abb20, 0x63736356), - TOBN(0xab93c098, 0xc551bc52), TOBN(0x382b49f9, 0xb15fe64b), - TOBN(0x9ec221ad, 0x4dff8d47), TOBN(0x79caf615, 0x437df4d6), - TOBN(0x5f13dc64, 0xbb456509), TOBN(0xe4c589d9, 0x191f0714), - TOBN(0x27b6a8ab, 0x3fd40e09), TOBN(0xe455842e, 0x77313ea9), - TOBN(0x8b51d1e2, 0x1f55988b), TOBN(0x5716dd73, 0x062bbbfc), - TOBN(0x633c11e5, 0x4e8bf3de), TOBN(0x9a0e77b6, 0x1b85be3b), - TOBN(0x56510729, 0x0911cca6), TOBN(0x27e76495, 0xefa6590f), - TOBN(0xe4ac8b33, 0x070d3aab), TOBN(0x2643672b, 0x9a2cd5e5), - TOBN(0x52eff79b, 0x1cfc9173), TOBN(0x665ca49b, 0x90a7c13f), - TOBN(0x5a8dda59, 0xb3efb998), TOBN(0x8a5b922d, 0x052f1341), - TOBN(0xae9ebbab, 0x3cf9a530), TOBN(0x35986e7b, 0xf56da4d7), - TOBN(0x3a636b5c, 0xff3513cc), TOBN(0xbb0cf8ba, 0x3198f7dd), - TOBN(0xb8d40522, 0x41f16f86), TOBN(0x760575d8, 0xde13a7bf), - TOBN(0x36f74e16, 0x9f7aa181), TOBN(0x163a3ecf, 0xf509ed1c), - TOBN(0x6aead61f, 0x3c40a491), TOBN(0x158c95fc, 0xdfe8fcaa), - TOBN(0xa3991b6e, 0x13cda46f), TOBN(0x79482415, 0x342faed0), - TOBN(0xf3ba5bde, 0x666b5970), TOBN(0x1d52e6bc, 0xb26ab6dd), - TOBN(0x768ba1e7, 0x8608dd3d), TOBN(0x4930db2a, 0xea076586), - TOBN(0xd9575714, 0xe7dc1afa), TOBN(0x1fc7bf7d, 0xf7c58817), - TOBN(0x6b47accd, 0xd9eee96c), TOBN(0x0ca277fb, 0xe58cec37), - TOBN(0x113fe413, 0xe702c42a), TOBN(0xdd1764ee, 0xc47cbe51), - TOBN(0x041e7cde, 0x7b3ed739), TOBN(0x50cb7459, 0x5ce9e1c0), - TOBN(0x35568513, 0x2925b212), TOBN(0x7cff95c4, 0x001b081c), - TOBN(0x63ee4cbd, 0x8088b454), TOBN(0xdb7f32f7, 0x9a9e0c8a), - TOBN(0xb377d418, 0x6b2447cb), TOBN(0xe3e982aa, 0xd370219b), - TOBN(0x06ccc1e4, 0xc2a2a593), TOBN(0x72c36865, 0x0773f24f), - TOBN(0xa13b4da7, 0x95859423), TOBN(0x8bbf1d33, 0x75040c8f), - TOBN(0x726f0973, 0xda50c991), TOBN(0x48afcd5b, 0x822d6ee2), - TOBN(0xe5fc718b, 0x20fd7771), TOBN(0xb9e8e77d, 0xfd0807a1), - TOBN(0x7f5e0f44, 0x99a7703d), TOBN(0x6972930e, 0x618e36f3), - TOBN(0x2b7c77b8, 0x23807bbe), TOBN(0xe5b82405, 0xcb27ff50), - TOBN(0xba8b8be3, 0xbd379062), TOBN(0xd64b7a1d, 0x2dce4a92), - TOBN(0x040a73c5, 0xb2952e37), TOBN(0x0a9e252e, 0xd438aeca), - TOBN(0xdd43956b, 0xc39d3bcb), TOBN(0x1a31ca00, 0xb32b2d63), - TOBN(0xd67133b8, 0x5c417a18), TOBN(0xd08e4790, 0x2ef442c8), - TOBN(0x98cb1ae9, 0x255c0980), TOBN(0x4bd86381, 0x2b4a739f), - TOBN(0x5a5c31e1, 0x1e4a45a1), TOBN(0x1e5d55fe, 0x9cb0db2f), - TOBN(0x74661b06, 0x8ff5cc29), TOBN(0x026b389f, 0x0eb8a4f4), - TOBN(0x536b21a4, 0x58848c24), TOBN(0x2e5bf8ec, 0x81dc72b0), - TOBN(0x03c187d0, 0xad886aac), TOBN(0x5c16878a, 0xb771b645), - TOBN(0xb07dfc6f, 0xc74045ab), TOBN(0x2c6360bf, 0x7800caed), - TOBN(0x24295bb5, 0xb9c972a3), TOBN(0xc9e6f88e, 0x7c9a6dba), - TOBN(0x90ffbf24, 0x92a79aa6), TOBN(0xde29d50a, 0x41c26ac2), - TOBN(0x9f0af483, 0xd309cbe6), TOBN(0x5b020d8a, 0xe0bced4f), - TOBN(0x606e986d, 0xb38023e3), TOBN(0xad8f2c9d, 0x1abc6933), - TOBN(0x19292e1d, 0xe7400e93), TOBN(0xfe3e18a9, 0x52be5e4d), - TOBN(0xe8e9771d, 0x2e0680bf), TOBN(0x8c5bec98, 0xc54db063), - TOBN(0x2af9662a, 0x74a55d1f), TOBN(0xe3fbf28f, 0x046f66d8), - TOBN(0xa3a72ab4, 0xd4dc4794), TOBN(0x09779f45, 0x5c7c2dd8), - TOBN(0xd893bdaf, 0xc3d19d8d), TOBN(0xd5a75094, 0x57d6a6df), - TOBN(0x8cf8fef9, 0x952e6255), TOBN(0x3da67cfb, 0xda9a8aff), - TOBN(0x4c23f62a, 0x2c160dcd), TOBN(0x34e6c5e3, 0x8f90eaef), - TOBN(0x35865519, 0xa9a65d5a), TOBN(0x07c48aae, 0x8fd38a3d), - TOBN(0xb7e7aeda, 0x50068527), TOBN(0x2c09ef23, 0x1c90936a), - TOBN(0x31ecfeb6, 0xe879324c), TOBN(0xa0871f6b, 0xfb0ec938), - TOBN(0xb1f0fb68, 0xd84d835d), TOBN(0xc90caf39, 0x861dc1e6), - TOBN(0x12e5b046, 0x7594f8d7), TOBN(0x26897ae2, 0x65012b92), - TOBN(0xbcf68a08, 0xa4d6755d), TOBN(0x403ee41c, 0x0991fbda), - TOBN(0x733e343e, 0x3bbf17e8), TOBN(0xd2c7980d, 0x679b3d65), - TOBN(0x33056232, 0xd2e11305), TOBN(0x966be492, 0xf3c07a6f), - TOBN(0x6a8878ff, 0xbb15509d), TOBN(0xff221101, 0x0a9b59a4), - TOBN(0x6c9f564a, 0xabe30129), TOBN(0xc6f2c940, 0x336e64cf), - TOBN(0x0fe75262, 0x8b0c8022), TOBN(0xbe0267e9, 0x6ae8db87), - TOBN(0x22e192f1, 0x93bc042b), TOBN(0xf085b534, 0xb237c458), - TOBN(0xa0d192bd, 0x832c4168), TOBN(0x7a76e9e3, 0xbdf6271d), - TOBN(0x52a882fa, 0xb88911b5), TOBN(0xc85345e4, 0xb4db0eb5), - TOBN(0xa3be02a6, 0x81a7c3ff), TOBN(0x51889c8c, 0xf0ec0469), - TOBN(0x9d031369, 0xa5e829e5), TOBN(0xcbb4c6fc, 0x1607aa41), - TOBN(0x75ac59a6, 0x241d84c1), TOBN(0xc043f2bf, 0x8829e0ee), - TOBN(0x82a38f75, 0x8ea5e185), TOBN(0x8bda40b9, 0xd87cbd9f), - TOBN(0x9e65e75e, 0x2d8fc601), TOBN(0x3d515f74, 0xa35690b3), - TOBN(0x534acf4f, 0xda79e5ac), TOBN(0x68b83b3a, 0x8630215f), - TOBN(0x5c748b2e, 0xd085756e), TOBN(0xb0317258, 0xe5d37cb2), - TOBN(0x6735841a, 0xc5ccc2c4), TOBN(0x7d7dc96b, 0x3d9d5069), - TOBN(0xa147e410, 0xfd1754bd), TOBN(0x65296e94, 0xd399ddd5), - TOBN(0xf6b5b2d0, 0xbc8fa5bc), TOBN(0x8a5ead67, 0x500c277b), - TOBN(0x214625e6, 0xdfa08a5d), TOBN(0x51fdfedc, 0x959cf047), - TOBN(0x6bc9430b, 0x289fca32), TOBN(0xe36ff0cf, 0x9d9bdc3f), - TOBN(0x2fe187cb, 0x58ea0ede), TOBN(0xed66af20, 0x5a900b3f), - TOBN(0x00e0968b, 0x5fa9f4d6), TOBN(0x2d4066ce, 0x37a362e7), - TOBN(0xa99a9748, 0xbd07e772), TOBN(0x710989c0, 0x06a4f1d0), - TOBN(0xd5dedf35, 0xce40cbd8), TOBN(0xab55c5f0, 0x1743293d), - TOBN(0x766f1144, 0x8aa24e2c), TOBN(0x94d874f8, 0x605fbcb4), - TOBN(0xa365f0e8, 0xa518001b), TOBN(0xee605eb6, 0x9d04ef0f), - TOBN(0x5a3915cd, 0xba8d4d25), TOBN(0x44c0e1b8, 0xb5113472), - TOBN(0xcbb024e8, 0x8b6740dc), TOBN(0x89087a53, 0xee1d4f0c), - TOBN(0xa88fa05c, 0x1fc4e372), TOBN(0x8bf395cb, 0xaf8b3af2), - TOBN(0x1e71c9a1, 0xdeb8568b), TOBN(0xa35daea0, 0x80fb3d32), - TOBN(0xe8b6f266, 0x2cf8fb81), TOBN(0x6d51afe8, 0x9490696a), - TOBN(0x81beac6e, 0x51803a19), TOBN(0xe3d24b7f, 0x86219080), - TOBN(0x727cfd9d, 0xdf6f463c), TOBN(0x8c6865ca, 0x72284ee8), - TOBN(0x32c88b7d, 0xb743f4ef), TOBN(0x3793909b, 0xe7d11dce), - TOBN(0xd398f922, 0x2ff2ebe8), TOBN(0x2c70ca44, 0xe5e49796), - TOBN(0xdf4d9929, 0xcb1131b1), TOBN(0x7826f298, 0x25888e79), - TOBN(0x4d3a112c, 0xf1d8740a), TOBN(0x00384cb6, 0x270afa8b), - TOBN(0xcb64125b, 0x3ab48095), TOBN(0x3451c256, 0x62d05106), - TOBN(0xd73d577d, 0xa4955845), TOBN(0x39570c16, 0xbf9f4433), - TOBN(0xd7dfaad3, 0xadecf263), TOBN(0xf1c3d8d1, 0xdc76e102), - TOBN(0x5e774a58, 0x54c6a836), TOBN(0xdad4b672, 0x3e92d47b), - TOBN(0xbe7e990f, 0xf0d796a0), TOBN(0x5fc62478, 0xdf0e8b02), - TOBN(0x8aae8bf4, 0x030c00ad), TOBN(0x3d2db93b, 0x9004ba0f), - TOBN(0xe48c8a79, 0xd85d5ddc), TOBN(0xe907caa7, 0x6bb07f34), - TOBN(0x58db343a, 0xa39eaed5), TOBN(0x0ea6e007, 0xadaf5724), - TOBN(0xe00df169, 0xd23233f3), TOBN(0x3e322796, 0x77cb637f), - TOBN(0x1f897c0e, 0x1da0cf6c), TOBN(0xa651f5d8, 0x31d6bbdd), - TOBN(0xdd61af19, 0x1a230c76), TOBN(0xbd527272, 0xcdaa5e4a), - TOBN(0xca753636, 0xd0abcd7e), TOBN(0x78bdd37c, 0x370bd8dc), - TOBN(0xc23916c2, 0x17cd93fe), TOBN(0x65b97a4d, 0xdadce6e2), - TOBN(0xe04ed4eb, 0x174e42f8), TOBN(0x1491ccaa, 0xbb21480a), - TOBN(0x145a8280, 0x23196332), TOBN(0x3c3862d7, 0x587b479a), - TOBN(0x9f4a88a3, 0x01dcd0ed), TOBN(0x4da2b7ef, 0x3ea12f1f), - TOBN(0xf8e7ae33, 0xb126e48e), TOBN(0x404a0b32, 0xf494e237), - TOBN(0x9beac474, 0xc55acadb), TOBN(0x4ee5cf3b, 0xcbec9fd9), - TOBN(0x336b33b9, 0x7df3c8c3), TOBN(0xbd905fe3, 0xb76808fd), - TOBN(0x8f436981, 0xaa45c16a), TOBN(0x255c5bfa, 0x3dd27b62), - TOBN(0x71965cbf, 0xc3dd9b4d), TOBN(0xce23edbf, 0xfc068a87), - TOBN(0xb78d4725, 0x745b029b), TOBN(0x74610713, 0xcefdd9bd), - TOBN(0x7116f75f, 0x1266bf52), TOBN(0x02046722, 0x18e49bb6), - TOBN(0xdf43df9f, 0x3d6f19e3), TOBN(0xef1bc7d0, 0xe685cb2f), - TOBN(0xcddb27c1, 0x7078c432), TOBN(0xe1961b9c, 0xb77fedb7), - TOBN(0x1edc2f5c, 0xc2290570), TOBN(0x2c3fefca, 0x19cbd886), - TOBN(0xcf880a36, 0xc2af389a), TOBN(0x96c610fd, 0xbda71cea), - TOBN(0xf03977a9, 0x32aa8463), TOBN(0x8eb7763f, 0x8586d90a), - TOBN(0x3f342454, 0x2a296e77), TOBN(0xc8718683, 0x42837a35), - TOBN(0x7dc71090, 0x6a09c731), TOBN(0x54778ffb, 0x51b816db), - TOBN(0x6b33bfec, 0xaf06defd), TOBN(0xfe3c105f, 0x8592b70b), - TOBN(0xf937fda4, 0x61da6114), TOBN(0x3c13e651, 0x4c266ad7), - TOBN(0xe363a829, 0x855938e8), TOBN(0x2eeb5d9e, 0x9de54b72), - TOBN(0xbeb93b0e, 0x20ccfab9), TOBN(0x3dffbb5f, 0x25e61a25), - TOBN(0x7f655e43, 0x1acc093d), TOBN(0x0cb6cc3d, 0x3964ce61), - TOBN(0x6ab283a1, 0xe5e9b460), TOBN(0x55d787c5, 0xa1c7e72d), - TOBN(0x4d2efd47, 0xdeadbf02), TOBN(0x11e80219, 0xac459068), - TOBN(0x810c7626, 0x71f311f0), TOBN(0xfa17ef8d, 0x4ab6ef53), - TOBN(0xaf47fd25, 0x93e43bff), TOBN(0x5cb5ff3f, 0x0be40632), - TOBN(0x54687106, 0x8ee61da3), TOBN(0x7764196e, 0xb08afd0f), - TOBN(0x831ab3ed, 0xf0290a8f), TOBN(0xcae81966, 0xcb47c387), - TOBN(0xaad7dece, 0x184efb4f), TOBN(0xdcfc53b3, 0x4749110e), - TOBN(0x6698f23c, 0x4cb632f9), TOBN(0xc42a1ad6, 0xb91f8067), - TOBN(0xb116a81d, 0x6284180a), TOBN(0xebedf5f8, 0xe901326f), - TOBN(0xf2274c9f, 0x97e3e044), TOBN(0x42018520, 0x11d09fc9), - TOBN(0x56a65f17, 0xd18e6e23), TOBN(0x2ea61e2a, 0x352b683c), - TOBN(0x27d291bc, 0x575eaa94), TOBN(0x9e7bc721, 0xb8ff522d), - TOBN(0x5f7268bf, 0xa7f04d6f), TOBN(0x5868c73f, 0xaba41748), - TOBN(0x9f85c2db, 0x7be0eead), TOBN(0x511e7842, 0xff719135), - TOBN(0x5a06b1e9, 0xc5ea90d7), TOBN(0x0c19e283, 0x26fab631), - TOBN(0x8af8f0cf, 0xe9206c55), TOBN(0x89389cb4, 0x3553c06a), - TOBN(0x39dbed97, 0xf65f8004), TOBN(0x0621b037, 0xc508991d), - TOBN(0x1c52e635, 0x96e78cc4), TOBN(0x5385c8b2, 0x0c06b4a8), - TOBN(0xd84ddfdb, 0xb0e87d03), TOBN(0xc49dfb66, 0x934bafad), - TOBN(0x7071e170, 0x59f70772), TOBN(0x3a073a84, 0x3a1db56b), - TOBN(0x03494903, 0x3b8af190), TOBN(0x7d882de3, 0xd32920f0), - TOBN(0x91633f0a, 0xb2cf8940), TOBN(0x72b0b178, 0x6f948f51), - TOBN(0x2d28dc30, 0x782653c8), TOBN(0x88829849, 0xdb903a05), - TOBN(0xb8095d0c, 0x6a19d2bb), TOBN(0x4b9e7f0c, 0x86f782cb), - TOBN(0x7af73988, 0x2d907064), TOBN(0xd12be0fe, 0x8b32643c), - TOBN(0x358ed23d, 0x0e165dc3), TOBN(0x3d47ce62, 0x4e2378ce), - TOBN(0x7e2bb0b9, 0xfeb8a087), TOBN(0x3246e8ae, 0xe29e10b9), - TOBN(0x459f4ec7, 0x03ce2b4d), TOBN(0xe9b4ca1b, 0xbbc077cf), - TOBN(0x2613b4f2, 0x0e9940c1), TOBN(0xfc598bb9, 0x047d1eb1), - TOBN(0x9744c62b, 0x45036099), TOBN(0xa9dee742, 0x167c65d8), - TOBN(0x0c511525, 0xdabe1943), TOBN(0xda110554, 0x93c6c624), - TOBN(0xae00a52c, 0x651a3be2), TOBN(0xcda5111d, 0x884449a6), - TOBN(0x063c06f4, 0xff33bed1), TOBN(0x73baaf9a, 0x0d3d76b4), - TOBN(0x52fb0c9d, 0x7fc63668), TOBN(0x6886c9dd, 0x0c039cde), - TOBN(0x602bd599, 0x55b22351), TOBN(0xb00cab02, 0x360c7c13), - TOBN(0x8cb616bc, 0x81b69442), TOBN(0x41486700, 0xb55c3cee), - TOBN(0x71093281, 0xf49ba278), TOBN(0xad956d9c, 0x64a50710), - TOBN(0x9561f28b, 0x638a7e81), TOBN(0x54155cdf, 0x5980ddc3), - TOBN(0xb2db4a96, 0xd26f247a), TOBN(0x9d774e4e, 0x4787d100), - TOBN(0x1a9e6e2e, 0x078637d2), TOBN(0x1c363e2d, 0x5e0ae06a), - TOBN(0x7493483e, 0xe9cfa354), TOBN(0x76843cb3, 0x7f74b98d), - TOBN(0xbaca6591, 0xd4b66947), TOBN(0xb452ce98, 0x04460a8c), - TOBN(0x6830d246, 0x43768f55), TOBN(0xf4197ed8, 0x7dff12df), - TOBN(0x6521b472, 0x400dd0f7), TOBN(0x59f5ca8f, 0x4b1e7093), - TOBN(0x6feff11b, 0x080338ae), TOBN(0x0ada31f6, 0xa29ca3c6), - TOBN(0x24794eb6, 0x94a2c215), TOBN(0xd83a43ab, 0x05a57ab4), - TOBN(0x264a543a, 0x2a6f89fe), TOBN(0x2c2a3868, 0xdd5ec7c2), - TOBN(0xd3373940, 0x8439d9b2), TOBN(0x715ea672, 0x0acd1f11), - TOBN(0x42c1d235, 0xe7e6cc19), TOBN(0x81ce6e96, 0xb990585c), - TOBN(0x04e5dfe0, 0xd809c7bd), TOBN(0xd7b2580c, 0x8f1050ab), - TOBN(0x6d91ad78, 0xd8a4176f), TOBN(0x0af556ee, 0x4e2e897c), - TOBN(0x162a8b73, 0x921de0ac), TOBN(0x52ac9c22, 0x7ea78400), - TOBN(0xee2a4eea, 0xefce2174), TOBN(0xbe61844e, 0x6d637f79), - TOBN(0x0491f1bc, 0x789a283b), TOBN(0x72d3ac3d, 0x880836f4), - TOBN(0xaa1c5ea3, 0x88e5402d), TOBN(0x1b192421, 0xd5cc473d), - TOBN(0x5c0b9998, 0x9dc84cac), TOBN(0xb0a8482d, 0x9c6e75b8), - TOBN(0x639961d0, 0x3a191ce2), TOBN(0xda3bc865, 0x6d837930), - TOBN(0xca990653, 0x056e6f8f), TOBN(0x84861c41, 0x64d133a7), - TOBN(0x8b403276, 0x746abe40), TOBN(0xb7b4d51a, 0xebf8e303), - TOBN(0x05b43211, 0x220a255d), TOBN(0xc997152c, 0x02419e6e), - TOBN(0x76ff47b6, 0x630c2fea), TOBN(0x50518677, 0x281fdade), - TOBN(0x3283b8ba, 0xcf902b0b), TOBN(0x8d4b4eb5, 0x37db303b), - TOBN(0xcc89f42d, 0x755011bc), TOBN(0xb43d74bb, 0xdd09d19b), - TOBN(0x65746bc9, 0x8adba350), TOBN(0x364eaf8c, 0xb51c1927), - TOBN(0x13c76596, 0x10ad72ec), TOBN(0x30045121, 0xf8d40c20), - TOBN(0x6d2d99b7, 0xea7b979b), TOBN(0xcd78cd74, 0xe6fb3bcd), - TOBN(0x11e45a9e, 0x86cffbfe), TOBN(0x78a61cf4, 0x637024f6), - TOBN(0xd06bc872, 0x3d502295), TOBN(0xf1376854, 0x458cb288), - TOBN(0xb9db26a1, 0x342f8586), TOBN(0xf33effcf, 0x4beee09e), - TOBN(0xd7e0c4cd, 0xb30cfb3a), TOBN(0x6d09b8c1, 0x6c9db4c8), - TOBN(0x40ba1a42, 0x07c8d9df), TOBN(0x6fd495f7, 0x1c52c66d), - TOBN(0xfb0e169f, 0x275264da), TOBN(0x80c2b746, 0xe57d8362), - TOBN(0xedd987f7, 0x49ad7222), TOBN(0xfdc229af, 0x4398ec7b)}, - {TOBN(0xb0d1ed84, 0x52666a58), TOBN(0x4bcb6e00, 0xe6a9c3c2), - TOBN(0x3c57411c, 0x26906408), TOBN(0xcfc20755, 0x13556400), - TOBN(0xa08b1c50, 0x5294dba3), TOBN(0xa30ba286, 0x8b7dd31e), - TOBN(0xd70ba90e, 0x991eca74), TOBN(0x094e142c, 0xe762c2b9), - TOBN(0xb81d783e, 0x979f3925), TOBN(0x1efd130a, 0xaf4c89a7), - TOBN(0x525c2144, 0xfd1bf7fa), TOBN(0x4b296904, 0x1b265a9e), - TOBN(0xed8e9634, 0xb9db65b6), TOBN(0x35c82e32, 0x03599d8a), - TOBN(0xdaa7a54f, 0x403563f3), TOBN(0x9df088ad, 0x022c38ab), - TOBN(0xe5cfb066, 0xbb3fd30a), TOBN(0x429169da, 0xeff0354e), - TOBN(0x809cf852, 0x3524e36c), TOBN(0x136f4fb3, 0x0155be1d), - TOBN(0x4826af01, 0x1fbba712), TOBN(0x6ef0f0b4, 0x506ba1a1), - TOBN(0xd9928b31, 0x77aea73e), TOBN(0xe2bf6af2, 0x5eaa244e), - TOBN(0x8d084f12, 0x4237b64b), TOBN(0x688ebe99, 0xe3ecfd07), - TOBN(0x57b8a70c, 0xf6845dd8), TOBN(0x808fc59c, 0x5da4a325), - TOBN(0xa9032b2b, 0xa3585862), TOBN(0xb66825d5, 0xedf29386), - TOBN(0xb5a5a8db, 0x431ec29b), TOBN(0xbb143a98, 0x3a1e8dc8), - TOBN(0x35ee94ce, 0x12ae381b), TOBN(0x3a7f176c, 0x86ccda90), - TOBN(0xc63a657e, 0x4606eaca), TOBN(0x9ae5a380, 0x43cd04df), - TOBN(0x9bec8d15, 0xed251b46), TOBN(0x1f5d6d30, 0xcaca5e64), - TOBN(0x347b3b35, 0x9ff20f07), TOBN(0x4d65f034, 0xf7e4b286), - TOBN(0x9e93ba24, 0xf111661e), TOBN(0xedced484, 0xb105eb04), - TOBN(0x96dc9ba1, 0xf424b578), TOBN(0xbf8f66b7, 0xe83e9069), - TOBN(0x872d4df4, 0xd7ed8216), TOBN(0xbf07f377, 0x8e2cbecf), - TOBN(0x4281d899, 0x98e73754), TOBN(0xfec85fbb, 0x8aab8708), - TOBN(0x9a3c0dee, 0xa5ba5b0b), TOBN(0xe6a116ce, 0x42d05299), - TOBN(0xae9775fe, 0xe9b02d42), TOBN(0x72b05200, 0xa1545cb6), - TOBN(0xbc506f7d, 0x31a3b4ea), TOBN(0xe5893078, 0x8bbd9b32), - TOBN(0xc8bc5f37, 0xe4b12a97), TOBN(0x6b000c06, 0x4a73b671), - TOBN(0x13b5bf22, 0x765fa7d0), TOBN(0x59805bf0, 0x1d6a5370), - TOBN(0x67a5e29d, 0x4280db98), TOBN(0x4f53916f, 0x776b1ce3), - TOBN(0x714ff61f, 0x33ddf626), TOBN(0x4206238e, 0xa085d103), - TOBN(0x1c50d4b7, 0xe5809ee3), TOBN(0x999f450d, 0x85f8eb1d), - TOBN(0x658a6051, 0xe4c79e9b), TOBN(0x1394cb73, 0xc66a9fea), - TOBN(0x27f31ed5, 0xc6be7b23), TOBN(0xf4c88f36, 0x5aa6f8fe), - TOBN(0x0fb0721f, 0x4aaa499e), TOBN(0x68b3a7d5, 0xe3fb2a6b), - TOBN(0xa788097d, 0x3a92851d), TOBN(0x060e7f8a, 0xe96f4913), - TOBN(0x82eebe73, 0x1a3a93bc), TOBN(0x42bbf465, 0xa21adc1a), - TOBN(0xc10b6fa4, 0xef030efd), TOBN(0x247aa4c7, 0x87b097bb), - TOBN(0x8b8dc632, 0xf60c77da), TOBN(0x6ffbc26a, 0xc223523e), - TOBN(0xa4f6ff11, 0x344579cf), TOBN(0x5825653c, 0x980250f6), - TOBN(0xb2dd097e, 0xbc1aa2b9), TOBN(0x07889393, 0x37a0333a), - TOBN(0x1cf55e71, 0x37a0db38), TOBN(0x2648487f, 0x792c1613), - TOBN(0xdad01336, 0x3fcef261), TOBN(0x6239c81d, 0x0eabf129), - TOBN(0x8ee761de, 0x9d276be2), TOBN(0x406a7a34, 0x1eda6ad3), - TOBN(0x4bf367ba, 0x4a493b31), TOBN(0x54f20a52, 0x9bf7f026), - TOBN(0xb696e062, 0x9795914b), TOBN(0xcddab96d, 0x8bf236ac), - TOBN(0x4ff2c70a, 0xed25ea13), TOBN(0xfa1d09eb, 0x81cbbbe7), - TOBN(0x88fc8c87, 0x468544c5), TOBN(0x847a670d, 0x696b3317), - TOBN(0xf133421e, 0x64bcb626), TOBN(0xaea638c8, 0x26dee0b5), - TOBN(0xd6e7680b, 0xb310346c), TOBN(0xe06f4097, 0xd5d4ced3), - TOBN(0x09961452, 0x7512a30b), TOBN(0xf3d867fd, 0xe589a59a), - TOBN(0x2e73254f, 0x52d0c180), TOBN(0x9063d8a3, 0x333c74ac), - TOBN(0xeda6c595, 0xd314e7bc), TOBN(0x2ee7464b, 0x467899ed), - TOBN(0x1cef423c, 0x0a1ed5d3), TOBN(0x217e76ea, 0x69cc7613), - TOBN(0x27ccce1f, 0xe7cda917), TOBN(0x12d8016b, 0x8a893f16), - TOBN(0xbcd6de84, 0x9fc74f6b), TOBN(0xfa5817e2, 0xf3144e61), - TOBN(0x1f354164, 0x0821ee4c), TOBN(0x1583eab4, 0x0bc61992), - TOBN(0x7490caf6, 0x1d72879f), TOBN(0x998ad9f3, 0xf76ae7b2), - TOBN(0x1e181950, 0xa41157f7), TOBN(0xa9d7e1e6, 0xe8da3a7e), - TOBN(0x963784eb, 0x8426b95f), TOBN(0x0ee4ed6e, 0x542e2a10), - TOBN(0xb79d4cc5, 0xac751e7b), TOBN(0x93f96472, 0xfd4211bd), - TOBN(0x8c72d3d2, 0xc8de4fc6), TOBN(0x7b69cbf5, 0xdf44f064), - TOBN(0x3da90ca2, 0xf4bf94e1), TOBN(0x1a5325f8, 0xf12894e2), - TOBN(0x0a437f6c, 0x7917d60b), TOBN(0x9be70486, 0x96c9cb5d), - TOBN(0xb4d880bf, 0xe1dc5c05), TOBN(0xd738adda, 0xeebeeb57), - TOBN(0x6f0119d3, 0xdf0fe6a3), TOBN(0x5c686e55, 0x66eaaf5a), - TOBN(0x9cb10b50, 0xdfd0b7ec), TOBN(0xbdd0264b, 0x6a497c21), - TOBN(0xfc093514, 0x8c546c96), TOBN(0x58a947fa, 0x79dbf42a), - TOBN(0xc0b48d4e, 0x49ccd6d7), TOBN(0xff8fb02c, 0x88bd5580), - TOBN(0xc75235e9, 0x07d473b2), TOBN(0x4fab1ac5, 0xa2188af3), - TOBN(0x030fa3bc, 0x97576ec0), TOBN(0xe8c946e8, 0x0b7e7d2f), - TOBN(0x40a5c9cc, 0x70305600), TOBN(0x6d8260a9, 0xc8b013b4), - TOBN(0x0368304f, 0x70bba85c), TOBN(0xad090da1, 0xa4a0d311), - TOBN(0x7170e870, 0x2415eec1), TOBN(0xbfba35fe, 0x8461ea47), - TOBN(0x6279019a, 0xc1e91938), TOBN(0xa47638f3, 0x1afc415f), - TOBN(0x36c65cbb, 0xbcba0e0f), TOBN(0x02160efb, 0x034e2c48), - TOBN(0xe6c51073, 0x615cd9e4), TOBN(0x498ec047, 0xf1243c06), - TOBN(0x3e5a8809, 0xb17b3d8c), TOBN(0x5cd99e61, 0x0cc565f1), - TOBN(0x81e312df, 0x7851dafe), TOBN(0xf156f5ba, 0xa79061e2), - TOBN(0x80d62b71, 0x880c590e), TOBN(0xbec9746f, 0x0a39faa1), - TOBN(0x1d98a9c1, 0xc8ed1f7a), TOBN(0x09e43bb5, 0xa81d5ff2), - TOBN(0xd5f00f68, 0x0da0794a), TOBN(0x412050d9, 0x661aa836), - TOBN(0xa89f7c4e, 0x90747e40), TOBN(0x6dc05ebb, 0xb62a3686), - TOBN(0xdf4de847, 0x308e3353), TOBN(0x53868fbb, 0x9fb53bb9), - TOBN(0x2b09d2c3, 0xcfdcf7dd), TOBN(0x41a9fce3, 0x723fcab4), - TOBN(0x73d905f7, 0x07f57ca3), TOBN(0x080f9fb1, 0xac8e1555), - TOBN(0x7c088e84, 0x9ba7a531), TOBN(0x07d35586, 0xed9a147f), - TOBN(0x602846ab, 0xaf48c336), TOBN(0x7320fd32, 0x0ccf0e79), - TOBN(0xaa780798, 0xb18bd1ff), TOBN(0x52c2e300, 0xafdd2905), - TOBN(0xf27ea3d6, 0x434267cd), TOBN(0x8b96d16d, 0x15605b5f), - TOBN(0x7bb31049, 0x4b45706b), TOBN(0xe7f58b8e, 0x743d25f8), - TOBN(0xe9b5e45b, 0x87f30076), TOBN(0xd19448d6, 0x5d053d5a), - TOBN(0x1ecc8cb9, 0xd3210a04), TOBN(0x6bc7d463, 0xdafb5269), - TOBN(0x3e59b10a, 0x67c3489f), TOBN(0x1769788c, 0x65641e1b), - TOBN(0x8a53b82d, 0xbd6cb838), TOBN(0x7066d6e6, 0x236d5f22), - TOBN(0x03aa1c61, 0x6908536e), TOBN(0xc971da0d, 0x66ae9809), - TOBN(0x01b3a86b, 0xc49a2fac), TOBN(0x3b8420c0, 0x3092e77a), - TOBN(0x02057300, 0x7d6fb556), TOBN(0x6941b2a1, 0xbff40a87), - TOBN(0x140b6308, 0x0658ff2a), TOBN(0x87804363, 0x3424ab36), - TOBN(0x0253bd51, 0x5751e299), TOBN(0xc75bcd76, 0x449c3e3a), - TOBN(0x92eb4090, 0x7f8f875d), TOBN(0x9c9d754e, 0x56c26bbf), - TOBN(0x158cea61, 0x8110bbe7), TOBN(0x62a6b802, 0x745f91ea), - TOBN(0xa79c41aa, 0xc6e7394b), TOBN(0x445b6a83, 0xad57ef10), - TOBN(0x0c5277eb, 0x6ea6f40c), TOBN(0x319fe96b, 0x88633365), - TOBN(0x0b0fc61f, 0x385f63cb), TOBN(0x41250c84, 0x22bdd127), - TOBN(0x67d153f1, 0x09e942c2), TOBN(0x60920d08, 0xc021ad5d), - TOBN(0x229f5746, 0x724d81a5), TOBN(0xb7ffb892, 0x5bba3299), - TOBN(0x518c51a1, 0xde413032), TOBN(0x2a9bfe77, 0x3c2fd94c), - TOBN(0xcbcde239, 0x3191f4fd), TOBN(0x43093e16, 0xd3d6ada1), - TOBN(0x184579f3, 0x58769606), TOBN(0x2c94a8b3, 0xd236625c), - TOBN(0x6922b9c0, 0x5c437d8e), TOBN(0x3d4ae423, 0xd8d9f3c8), - TOBN(0xf72c31c1, 0x2e7090a2), TOBN(0x4ac3f5f3, 0xd76a55bd), - TOBN(0x342508fc, 0x6b6af991), TOBN(0x0d527100, 0x1b5cebbd), - TOBN(0xb84740d0, 0xdd440dd7), TOBN(0x748ef841, 0x780162fd), - TOBN(0xa8dbfe0e, 0xdfc6fafb), TOBN(0xeadfdf05, 0xf7300f27), - TOBN(0x7d06555f, 0xfeba4ec9), TOBN(0x12c56f83, 0x9e25fa97), - TOBN(0x77f84203, 0xd39b8c34), TOBN(0xed8b1be6, 0x3125eddb), - TOBN(0x5bbf2441, 0xf6e39dc5), TOBN(0xb00f6ee6, 0x6a5d678a), - TOBN(0xba456ecf, 0x57d0ea99), TOBN(0xdcae0f58, 0x17e06c43), - TOBN(0x01643de4, 0x0f5b4baa), TOBN(0x2c324341, 0xd161b9be), - TOBN(0x80177f55, 0xe126d468), TOBN(0xed325f1f, 0x76748e09), - TOBN(0x6116004a, 0xcfa9bdc2), TOBN(0x2d8607e6, 0x3a9fb468), - TOBN(0x0e573e27, 0x6009d660), TOBN(0x3a525d2e, 0x8d10c5a1), - TOBN(0xd26cb45c, 0x3b9009a0), TOBN(0xb6b0cdc0, 0xde9d7448), - TOBN(0x949c9976, 0xe1337c26), TOBN(0x6faadebd, 0xd73d68e5), - TOBN(0x9e158614, 0xf1b768d9), TOBN(0x22dfa557, 0x9cc4f069), - TOBN(0xccd6da17, 0xbe93c6d6), TOBN(0x24866c61, 0xa504f5b9), - TOBN(0x2121353c, 0x8d694da1), TOBN(0x1c6ca580, 0x0140b8c6), - TOBN(0xc245ad8c, 0xe964021e), TOBN(0xb83bffba, 0x032b82b3), - TOBN(0xfaa220c6, 0x47ef9898), TOBN(0x7e8d3ac6, 0x982c948a), - TOBN(0x1faa2091, 0xbc2d124a), TOBN(0xbd54c3dd, 0x05b15ff4), - TOBN(0x386bf3ab, 0xc87c6fb7), TOBN(0xfb2b0563, 0xfdeb6f66), - TOBN(0x4e77c557, 0x5b45afb4), TOBN(0xe9ded649, 0xefb8912d), - TOBN(0x7ec9bbf5, 0x42f6e557), TOBN(0x2570dfff, 0x62671f00), - TOBN(0x2b3bfb78, 0x88e084bd), TOBN(0xa024b238, 0xf37fe5b4), - TOBN(0x44e7dc04, 0x95649aee), TOBN(0x498ca255, 0x5e7ec1d8), - TOBN(0x3bc766ea, 0xaaa07e86), TOBN(0x0db6facb, 0xf3608586), - TOBN(0xbadd2549, 0xbdc259c8), TOBN(0x95af3c6e, 0x041c649f), - TOBN(0xb36a928c, 0x02e30afb), TOBN(0x9b5356ad, 0x008a88b8), - TOBN(0x4b67a5f1, 0xcf1d9e9d), TOBN(0xc6542e47, 0xa5d8d8ce), - TOBN(0x73061fe8, 0x7adfb6cc), TOBN(0xcc826fd3, 0x98678141), - TOBN(0x00e758b1, 0x3c80515a), TOBN(0x6afe3247, 0x41485083), - TOBN(0x0fcb08b9, 0xb6ae8a75), TOBN(0xb8cf388d, 0x4acf51e1), - TOBN(0x344a5560, 0x6961b9d6), TOBN(0x1a6778b8, 0x6a97fd0c), - TOBN(0xd840fdc1, 0xecc4c7e3), TOBN(0xde9fe47d, 0x16db68cc), - TOBN(0xe95f89de, 0xa3e216aa), TOBN(0x84f1a6a4, 0x9594a8be), - TOBN(0x7ddc7d72, 0x5a7b162b), TOBN(0xc5cfda19, 0xadc817a3), - TOBN(0x80a5d350, 0x78b58d46), TOBN(0x93365b13, 0x82978f19), - TOBN(0x2e44d225, 0x26a1fc90), TOBN(0x0d6d10d2, 0x4d70705d), - TOBN(0xd94b6b10, 0xd70c45f4), TOBN(0x0f201022, 0xb216c079), - TOBN(0xcec966c5, 0x658fde41), TOBN(0xa8d2bc7d, 0x7e27601d), - TOBN(0xbfcce3e1, 0xff230be7), TOBN(0x3394ff6b, 0x0033ffb5), - TOBN(0xd890c509, 0x8132c9af), TOBN(0xaac4b0eb, 0x361e7868), - TOBN(0x5194ded3, 0xe82d15aa), TOBN(0x4550bd2e, 0x23ae6b7d), - TOBN(0x3fda318e, 0xea5399d4), TOBN(0xd989bffa, 0x91638b80), - TOBN(0x5ea124d0, 0xa14aa12d), TOBN(0x1fb1b899, 0x3667b944), - TOBN(0x95ec7969, 0x44c44d6a), TOBN(0x91df144a, 0x57e86137), - TOBN(0x915fd620, 0x73adac44), TOBN(0x8f01732d, 0x59a83801), - TOBN(0xec579d25, 0x3aa0a633), TOBN(0x06de5e7c, 0xc9d6d59c), - TOBN(0xc132f958, 0xb1ef8010), TOBN(0x29476f96, 0xe65c1a02), - TOBN(0x336a77c0, 0xd34c3565), TOBN(0xef1105b2, 0x1b9f1e9e), - TOBN(0x63e6d08b, 0xf9e08002), TOBN(0x9aff2f21, 0xc613809e), - TOBN(0xb5754f85, 0x3a80e75d), TOBN(0xde71853e, 0x6bbda681), - TOBN(0x86f041df, 0x8197fd7a), TOBN(0x8b332e08, 0x127817fa), - TOBN(0x05d99be8, 0xb9c20cda), TOBN(0x89f7aad5, 0xd5cd0c98), - TOBN(0x7ef936fe, 0x5bb94183), TOBN(0x92ca0753, 0xb05cd7f2), - TOBN(0x9d65db11, 0x74a1e035), TOBN(0x02628cc8, 0x13eaea92), - TOBN(0xf2d9e242, 0x49e4fbf2), TOBN(0x94fdfd9b, 0xe384f8b7), - TOBN(0x65f56054, 0x63428c6b), TOBN(0x2f7205b2, 0x90b409a5), - TOBN(0xf778bb78, 0xff45ae11), TOBN(0xa13045be, 0xc5ee53b2), - TOBN(0xe00a14ff, 0x03ef77fe), TOBN(0x689cd59f, 0xffef8bef), - TOBN(0x3578f0ed, 0x1e9ade22), TOBN(0xe99f3ec0, 0x6268b6a8), - TOBN(0xa2057d91, 0xea1b3c3e), TOBN(0x2d1a7053, 0xb8823a4a), - TOBN(0xabbb336a, 0x2cca451e), TOBN(0xcd2466e3, 0x2218bb5d), - TOBN(0x3ac1f42f, 0xc8cb762d), TOBN(0x7e312aae, 0x7690211f), - TOBN(0xebb9bd73, 0x45d07450), TOBN(0x207c4b82, 0x46c2213f), - TOBN(0x99d425c1, 0x375913ec), TOBN(0x94e45e96, 0x67908220), - TOBN(0xc08f3087, 0xcd67dbf6), TOBN(0xa5670fbe, 0xc0887056), - TOBN(0x6717b64a, 0x66f5b8fc), TOBN(0xd5a56aea, 0x786fec28), - TOBN(0xa8c3f55f, 0xc0ff4952), TOBN(0xa77fefae, 0x457ac49b), - TOBN(0x29882d7c, 0x98379d44), TOBN(0xd000bdfb, 0x509edc8a), - TOBN(0xc6f95979, 0xe66fe464), TOBN(0x504a6115, 0xfa61bde0), - TOBN(0x56b3b871, 0xeffea31a), TOBN(0x2d3de26d, 0xf0c21a54), - TOBN(0x21dbff31, 0x834753bf), TOBN(0xe67ecf49, 0x69269d86), - TOBN(0x7a176952, 0x151fe690), TOBN(0x03515804, 0x7f2adb5f), - TOBN(0xee794b15, 0xd1b62a8d), TOBN(0xf004ceec, 0xaae454e6), - TOBN(0x0897ea7c, 0xf0386fac), TOBN(0x3b62ff12, 0xd1fca751), - TOBN(0x154181df, 0x1b7a04ec), TOBN(0x2008e04a, 0xfb5847ec), - TOBN(0xd147148e, 0x41dbd772), TOBN(0x2b419f73, 0x22942654), - TOBN(0x669f30d3, 0xe9c544f7), TOBN(0x52a2c223, 0xc8540149), - TOBN(0x5da9ee14, 0x634dfb02), TOBN(0x5f074ff0, 0xf47869f3), - TOBN(0x74ee878d, 0xa3933acc), TOBN(0xe6510651, 0x4fe35ed1), - TOBN(0xb3eb9482, 0xf1012e7a), TOBN(0x51013cc0, 0xa8a566ae), - TOBN(0xdd5e9243, 0x47c00d3b), TOBN(0x7fde089d, 0x946bb0e5), - TOBN(0x030754fe, 0xc731b4b3), TOBN(0x12a136a4, 0x99fda062), - TOBN(0x7c1064b8, 0x5a1a35bc), TOBN(0xbf1f5763, 0x446c84ef), - TOBN(0xed29a56d, 0xa16d4b34), TOBN(0x7fba9d09, 0xdca21c4f), - TOBN(0x66d7ac00, 0x6d8de486), TOBN(0x60061987, 0x73a2a5e1), - TOBN(0x8b400f86, 0x9da28ff0), TOBN(0x3133f708, 0x43c4599c), - TOBN(0x9911c9b8, 0xee28cb0d), TOBN(0xcd7e2874, 0x8e0af61d), - TOBN(0x5a85f0f2, 0x72ed91fc), TOBN(0x85214f31, 0x9cd4a373), - TOBN(0x881fe5be, 0x1925253c), TOBN(0xd8dc98e0, 0x91e8bc76), - TOBN(0x7120affe, 0x585cc3a2), TOBN(0x724952ed, 0x735bf97a), - TOBN(0x5581e7dc, 0x3eb34581), TOBN(0x5cbff4f2, 0xe52ee57d), - TOBN(0x8d320a0e, 0x87d8cc7b), TOBN(0x9beaa7f3, 0xf1d280d0), - TOBN(0x7a0b9571, 0x9beec704), TOBN(0x9126332e, 0x5b7f0057), - TOBN(0x01fbc1b4, 0x8ed3bd6d), TOBN(0x35bb2c12, 0xd945eb24), - TOBN(0x6404694e, 0x9a8ae255), TOBN(0xb6092eec, 0x8d6abfb3), - TOBN(0x4d76143f, 0xcc058865), TOBN(0x7b0a5af2, 0x6e249922), - TOBN(0x8aef9440, 0x6a50d353), TOBN(0xe11e4bcc, 0x64f0e07a), - TOBN(0x4472993a, 0xa14a90fa), TOBN(0x7706e20c, 0xba0c51d4), - TOBN(0xf403292f, 0x1532672d), TOBN(0x52573bfa, 0x21829382), - TOBN(0x6a7bb6a9, 0x3b5bdb83), TOBN(0x08da65c0, 0xa4a72318), - TOBN(0xc58d22aa, 0x63eb065f), TOBN(0x1717596c, 0x1b15d685), - TOBN(0x112df0d0, 0xb266d88b), TOBN(0xf688ae97, 0x5941945a), - TOBN(0x487386e3, 0x7c292cac), TOBN(0x42f3b50d, 0x57d6985c), - TOBN(0x6da4f998, 0x6a90fc34), TOBN(0xc8f257d3, 0x65ca8a8d), - TOBN(0xc2feabca, 0x6951f762), TOBN(0xe1bc81d0, 0x74c323ac), - TOBN(0x1bc68f67, 0x251a2a12), TOBN(0x10d86587, 0xbe8a70dc), - TOBN(0xd648af7f, 0xf0f84d2e), TOBN(0xf0aa9ebc, 0x6a43ac92), - TOBN(0x69e3be04, 0x27596893), TOBN(0xb6bb02a6, 0x45bf452b), - TOBN(0x0875c11a, 0xf4c698c8), TOBN(0x6652b5c7, 0xbece3794), - TOBN(0x7b3755fd, 0x4f5c0499), TOBN(0x6ea16558, 0xb5532b38), - TOBN(0xd1c69889, 0xa2e96ef7), TOBN(0x9c773c3a, 0x61ed8f48), - TOBN(0x2b653a40, 0x9b323abc), TOBN(0xe26605e1, 0xf0e1d791), - TOBN(0x45d41064, 0x4a87157a), TOBN(0x8f9a78b7, 0xcbbce616), - TOBN(0xcf1e44aa, 0xc407eddd), TOBN(0x81ddd1d8, 0xa35b964f), - TOBN(0x473e339e, 0xfd083999), TOBN(0x6c94bdde, 0x8e796802), - TOBN(0x5a304ada, 0x8545d185), TOBN(0x82ae44ea, 0x738bb8cb), - TOBN(0x628a35e3, 0xdf87e10e), TOBN(0xd3624f3d, 0xa15b9fe3), - TOBN(0xcc44209b, 0x14be4254), TOBN(0x7d0efcbc, 0xbdbc2ea5), - TOBN(0x1f603362, 0x04c37bbe), TOBN(0x21f363f5, 0x56a5852c), - TOBN(0xa1503d1c, 0xa8501550), TOBN(0x2251e0e1, 0xd8ab10bb), - TOBN(0xde129c96, 0x6961c51c), TOBN(0x1f7246a4, 0x81910f68), - TOBN(0x2eb744ee, 0x5f2591f2), TOBN(0x3c47d33f, 0x5e627157), - TOBN(0x4d6d62c9, 0x22f3bd68), TOBN(0x6120a64b, 0xcb8df856), - TOBN(0x3a9ac6c0, 0x7b5d07df), TOBN(0xa92b9558, 0x7ef39783), - TOBN(0xe128a134, 0xab3a9b4f), TOBN(0x41c18807, 0xb1252f05), - TOBN(0xfc7ed089, 0x80ba9b1c), TOBN(0xac8dc6de, 0xc532a9dd), - TOBN(0xbf829cef, 0x55246809), TOBN(0x101b784f, 0x5b4ee80f), - TOBN(0xc09945bb, 0xb6f11603), TOBN(0x57b09dbe, 0x41d2801e), - TOBN(0xfba5202f, 0xa97534a8), TOBN(0x7fd8ae5f, 0xc17b9614), - TOBN(0xa50ba666, 0x78308435), TOBN(0x9572f77c, 0xd3868c4d), - TOBN(0x0cef7bfd, 0x2dd7aab0), TOBN(0xe7958e08, 0x2c7c79ff), - TOBN(0x81262e42, 0x25346689), TOBN(0x716da290, 0xb07c7004), - TOBN(0x35f911ea, 0xb7950ee3), TOBN(0x6fd72969, 0x261d21b5), - TOBN(0x52389803, 0x08b640d3), TOBN(0x5b0026ee, 0x887f12a1), - TOBN(0x20e21660, 0x742e9311), TOBN(0x0ef6d541, 0x5ff77ff7), - TOBN(0x969127f0, 0xf9c41135), TOBN(0xf21d60c9, 0x68a64993), - TOBN(0x656e5d0c, 0xe541875c), TOBN(0xf1e0f84e, 0xa1d3c233), - TOBN(0x9bcca359, 0x06002d60), TOBN(0xbe2da60c, 0x06191552), - TOBN(0x5da8bbae, 0x61181ec3), TOBN(0x9f04b823, 0x65806f19), - TOBN(0xf1604a7d, 0xd4b79bb8), TOBN(0xaee806fb, 0x52c878c8), - TOBN(0x34144f11, 0x8d47b8e8), TOBN(0x72edf52b, 0x949f9054), - TOBN(0xebfca84e, 0x2127015a), TOBN(0x9051d0c0, 0x9cb7cef3), - TOBN(0x86e8fe58, 0x296deec8), TOBN(0x33b28188, 0x41010d74)}, - {TOBN(0x01079383, 0x171b445f), TOBN(0x9bcf21e3, 0x8131ad4c), - TOBN(0x8cdfe205, 0xc93987e8), TOBN(0xe63f4152, 0xc92e8c8f), - TOBN(0x729462a9, 0x30add43d), TOBN(0x62ebb143, 0xc980f05a), - TOBN(0x4f3954e5, 0x3b06e968), TOBN(0xfe1d75ad, 0x242cf6b1), - TOBN(0x5f95c6c7, 0xaf8685c8), TOBN(0xd4c1c8ce, 0x2f8f01aa), - TOBN(0xc44bbe32, 0x2574692a), TOBN(0xb8003478, 0xd4a4a068), - TOBN(0x7c8fc6e5, 0x2eca3cdb), TOBN(0xea1db16b, 0xec04d399), - TOBN(0xb05bc82e, 0x8f2bc5cf), TOBN(0x763d517f, 0xf44793d2), - TOBN(0x4451c1b8, 0x08bd98d0), TOBN(0x644b1cd4, 0x6575f240), - TOBN(0x6907eb33, 0x7375d270), TOBN(0x56c8bebd, 0xfa2286bd), - TOBN(0xc713d2ac, 0xc4632b46), TOBN(0x17da427a, 0xafd60242), - TOBN(0x313065b7, 0xc95c7546), TOBN(0xf8239898, 0xbf17a3de), - TOBN(0xf3b7963f, 0x4c830320), TOBN(0x842c7aa0, 0x903203e3), - TOBN(0xaf22ca0a, 0xe7327afb), TOBN(0x38e13092, 0x967609b6), - TOBN(0x73b8fb62, 0x757558f1), TOBN(0x3cc3e831, 0xf7eca8c1), - TOBN(0xe4174474, 0xf6331627), TOBN(0xa77989ca, 0xc3c40234), - TOBN(0xe5fd17a1, 0x44a081e0), TOBN(0xd797fb7d, 0xb70e296a), - TOBN(0x2b472b30, 0x481f719c), TOBN(0x0e632a98, 0xfe6f8c52), - TOBN(0x89ccd116, 0xc5f0c284), TOBN(0xf51088af, 0x2d987c62), - TOBN(0x2a2bccda, 0x4c2de6cf), TOBN(0x810f9efe, 0xf679f0f9), - TOBN(0xb0f394b9, 0x7ffe4b3e), TOBN(0x0b691d21, 0xe5fa5d21), - TOBN(0xb0bd7747, 0x9dfbbc75), TOBN(0xd2830fda, 0xfaf78b00), - TOBN(0xf78c249c, 0x52434f57), TOBN(0x4b1f7545, 0x98096dab), - TOBN(0x73bf6f94, 0x8ff8c0b3), TOBN(0x34aef03d, 0x454e134c), - TOBN(0xf8d151f4, 0xb7ac7ec5), TOBN(0xd6ceb95a, 0xe50da7d5), - TOBN(0xa1b492b0, 0xdc3a0eb8), TOBN(0x75157b69, 0xb3dd2863), - TOBN(0xe2c4c74e, 0xc5413d62), TOBN(0xbe329ff7, 0xbc5fc4c7), - TOBN(0x835a2aea, 0x60fa9dda), TOBN(0xf117f5ad, 0x7445cb87), - TOBN(0xae8317f4, 0xb0166f7a), TOBN(0xfbd3e3f7, 0xceec74e6), - TOBN(0xfdb516ac, 0xe0874bfd), TOBN(0x3d846019, 0xc681f3a3), - TOBN(0x0b12ee5c, 0x7c1620b0), TOBN(0xba68b4dd, 0x2b63c501), - TOBN(0xac03cd32, 0x6668c51e), TOBN(0x2a6279f7, 0x4e0bcb5b), - TOBN(0x17bd69b0, 0x6ae85c10), TOBN(0x72946979, 0x1dfdd3a6), - TOBN(0xd9a03268, 0x2c078bec), TOBN(0x41c6a658, 0xbfd68a52), - TOBN(0xcdea1024, 0x0e023900), TOBN(0xbaeec121, 0xb10d144d), - TOBN(0x5a600e74, 0x058ab8dc), TOBN(0x1333af21, 0xbb89ccdd), - TOBN(0xdf25eae0, 0x3aaba1f1), TOBN(0x2cada16e, 0x3b7144cf), - TOBN(0x657ee27d, 0x71ab98bc), TOBN(0x99088b4c, 0x7a6fc96e), - TOBN(0x05d5c0a0, 0x3549dbd4), TOBN(0x42cbdf8f, 0xf158c3ac), - TOBN(0x3fb6b3b0, 0x87edd685), TOBN(0x22071cf6, 0x86f064d0), - TOBN(0xd2d6721f, 0xff2811e5), TOBN(0xdb81b703, 0xfe7fae8c), - TOBN(0x3cfb74ef, 0xd3f1f7bb), TOBN(0x0cdbcd76, 0x16cdeb5d), - TOBN(0x4f39642a, 0x566a808c), TOBN(0x02b74454, 0x340064d6), - TOBN(0xfabbadca, 0x0528fa6f), TOBN(0xe4c3074c, 0xd3fc0bb6), - TOBN(0xb32cb8b0, 0xb796d219), TOBN(0xc3e95f4f, 0x34741dd9), - TOBN(0x87212125, 0x68edf6f5), TOBN(0x7a03aee4, 0xa2b9cb8e), - TOBN(0x0cd3c376, 0xf53a89aa), TOBN(0x0d8af9b1, 0x948a28dc), - TOBN(0xcf86a3f4, 0x902ab04f), TOBN(0x8aacb62a, 0x7f42002d), - TOBN(0x106985eb, 0xf62ffd52), TOBN(0xe670b54e, 0x5797bf10), - TOBN(0x4b405209, 0xc5e30aef), TOBN(0x12c97a20, 0x4365b5e9), - TOBN(0x104646ce, 0x1fe32093), TOBN(0x13cb4ff6, 0x3907a8c9), - TOBN(0x8b9f30d1, 0xd46e726b), TOBN(0xe1985e21, 0xaba0f499), - TOBN(0xc573dea9, 0x10a230cd), TOBN(0x24f46a93, 0xcd30f947), - TOBN(0xf2623fcf, 0xabe2010a), TOBN(0x3f278cb2, 0x73f00e4f), - TOBN(0xed55c67d, 0x50b920eb), TOBN(0xf1cb9a2d, 0x8e760571), - TOBN(0x7c50d109, 0x0895b709), TOBN(0x4207cf07, 0x190d4369), - TOBN(0x3b027e81, 0xc4127fe1), TOBN(0xa9f8b9ad, 0x3ae9c566), - TOBN(0x5ab10851, 0xacbfbba5), TOBN(0xa747d648, 0x569556f5), - TOBN(0xcc172b5c, 0x2ba97bf7), TOBN(0x15e0f77d, 0xbcfa3324), - TOBN(0xa345b797, 0x7686279d), TOBN(0x5a723480, 0xe38003d3), - TOBN(0xfd8e139f, 0x8f5fcda8), TOBN(0xf3e558c4, 0xbdee5bfd), - TOBN(0xd76cbaf4, 0xe33f9f77), TOBN(0x3a4c97a4, 0x71771969), - TOBN(0xda27e84b, 0xf6dce6a7), TOBN(0xff373d96, 0x13e6c2d1), - TOBN(0xf115193c, 0xd759a6e9), TOBN(0x3f9b7025, 0x63d2262c), - TOBN(0xd9764a31, 0x317cd062), TOBN(0x30779d8e, 0x199f8332), - TOBN(0xd8074106, 0x16b11b0b), TOBN(0x7917ab9f, 0x78aeaed8), - TOBN(0xb67a9cbe, 0x28fb1d8e), TOBN(0x2e313563, 0x136eda33), - TOBN(0x010b7069, 0xa371a86c), TOBN(0x44d90fa2, 0x6744e6b7), - TOBN(0x68190867, 0xd6b3e243), TOBN(0x9fe6cd9d, 0x59048c48), - TOBN(0xb900b028, 0x95731538), TOBN(0xa012062f, 0x32cae04f), - TOBN(0x8107c8bc, 0x9399d082), TOBN(0x47e8c54a, 0x41df12e2), - TOBN(0x14ba5117, 0xb6ef3f73), TOBN(0x22260bea, 0x81362f0b), - TOBN(0x90ea261e, 0x1a18cc20), TOBN(0x2192999f, 0x2321d636), - TOBN(0xef64d314, 0xe311b6a0), TOBN(0xd7401e4c, 0x3b54a1f5), - TOBN(0x19019983, 0x6fbca2ba), TOBN(0x46ad3293, 0x8fbffc4b), - TOBN(0xa142d3f6, 0x3786bf40), TOBN(0xeb5cbc26, 0xb67039fc), - TOBN(0x9cb0ae6c, 0x252bd479), TOBN(0x05e0f88a, 0x12b5848f), - TOBN(0x78f6d2b2, 0xa5c97663), TOBN(0x6f6e149b, 0xc162225c), - TOBN(0xe602235c, 0xde601a89), TOBN(0xd17bbe98, 0xf373be1f), - TOBN(0xcaf49a5b, 0xa8471827), TOBN(0x7e1a0a85, 0x18aaa116), - TOBN(0x6c833196, 0x270580c3), TOBN(0x1e233839, 0xf1c98a14), - TOBN(0x67b2f7b4, 0xae34e0a5), TOBN(0x47ac8745, 0xd8ce7289), - TOBN(0x2b74779a, 0x100dd467), TOBN(0x274a4337, 0x4ee50d09), - TOBN(0x603dcf13, 0x83608bc9), TOBN(0xcd9da6c3, 0xc89e8388), - TOBN(0x2660199f, 0x355116ac), TOBN(0xcc38bb59, 0xb6d18eed), - TOBN(0x3075f31f, 0x2f4bc071), TOBN(0x9774457f, 0x265dc57e), - TOBN(0x06a6a9c8, 0xc6db88bb), TOBN(0x6429d07f, 0x4ec98e04), - TOBN(0x8d05e57b, 0x05ecaa8b), TOBN(0x20f140b1, 0x7872ea7b), - TOBN(0xdf8c0f09, 0xca494693), TOBN(0x48d3a020, 0xf252e909), - TOBN(0x4c5c29af, 0x57b14b12), TOBN(0x7e6fa37d, 0xbf47ad1c), - TOBN(0x66e7b506, 0x49a0c938), TOBN(0xb72c0d48, 0x6be5f41f), - TOBN(0x6a6242b8, 0xb2359412), TOBN(0xcd35c774, 0x8e859480), - TOBN(0x12536fea, 0x87baa627), TOBN(0x58c1fec1, 0xf72aa680), - TOBN(0x6c29b637, 0x601e5dc9), TOBN(0x9e3c3c1c, 0xde9e01b9), - TOBN(0xefc8127b, 0x2bcfe0b0), TOBN(0x35107102, 0x2a12f50d), - TOBN(0x6ccd6cb1, 0x4879b397), TOBN(0xf792f804, 0xf8a82f21), - TOBN(0x509d4804, 0xa9b46402), TOBN(0xedddf85d, 0xc10f0850), - TOBN(0x928410dc, 0x4b6208aa), TOBN(0xf6229c46, 0x391012dc), - TOBN(0xc5a7c41e, 0x7727b9b6), TOBN(0x289e4e4b, 0xaa444842), - TOBN(0x049ba1d9, 0xe9a947ea), TOBN(0x44f9e47f, 0x83c8debc), - TOBN(0xfa77a1fe, 0x611f8b8e), TOBN(0xfd2e416a, 0xf518f427), - TOBN(0xc5fffa70, 0x114ebac3), TOBN(0xfe57c4e9, 0x5d89697b), - TOBN(0xfdd053ac, 0xb1aaf613), TOBN(0x31df210f, 0xea585a45), - TOBN(0x318cc10e, 0x24985034), TOBN(0x1a38efd1, 0x5f1d6130), - TOBN(0xbf86f237, 0x0b1e9e21), TOBN(0xb258514d, 0x1dbe88aa), - TOBN(0x1e38a588, 0x90c1baf9), TOBN(0x2936a01e, 0xbdb9b692), - TOBN(0xd576de98, 0x6dd5b20c), TOBN(0xb586bf71, 0x70f98ecf), - TOBN(0xcccf0f12, 0xc42d2fd7), TOBN(0x8717e61c, 0xfb35bd7b), - TOBN(0x8b1e5722, 0x35e6fc06), TOBN(0x3477728f, 0x0b3e13d5), - TOBN(0x150c294d, 0xaa8a7372), TOBN(0xc0291d43, 0x3bfa528a), - TOBN(0xc6c8bc67, 0xcec5a196), TOBN(0xdeeb31e4, 0x5c2e8a7c), - TOBN(0xba93e244, 0xfb6e1c51), TOBN(0xb9f8b71b, 0x2e28e156), - TOBN(0xce65a287, 0x968a2ab9), TOBN(0xe3c5ce69, 0x46bbcb1f), - TOBN(0xf8c835b9, 0xe7ae3f30), TOBN(0x16bbee26, 0xff72b82b), - TOBN(0x665e2017, 0xfd42cd22), TOBN(0x1e139970, 0xf8b1d2a0), - TOBN(0x125cda29, 0x79204932), TOBN(0x7aee94a5, 0x49c3bee5), - TOBN(0x68c70160, 0x89821a66), TOBN(0xf7c37678, 0x8f981669), - TOBN(0xd90829fc, 0x48cc3645), TOBN(0x346af049, 0xd70addfc), - TOBN(0x2057b232, 0x370bf29c), TOBN(0xf90c73ce, 0x42e650ee), - TOBN(0xe03386ea, 0xa126ab90), TOBN(0x0e266e7e, 0x975a087b), - TOBN(0x80578eb9, 0x0fca65d9), TOBN(0x7e2989ea, 0x16af45b8), - TOBN(0x7438212d, 0xcac75a4e), TOBN(0x38c7ca39, 0x4fef36b8), - TOBN(0x8650c494, 0xd402676a), TOBN(0x26ab5a66, 0xf72c7c48), - TOBN(0x4e6cb426, 0xce3a464e), TOBN(0xf8f99896, 0x2b72f841), - TOBN(0x8c318491, 0x1a335cc8), TOBN(0x563459ba, 0x6a5913e4), - TOBN(0x1b920d61, 0xc7b32919), TOBN(0x805ab8b6, 0xa02425ad), - TOBN(0x2ac512da, 0x8d006086), TOBN(0x6ca4846a, 0xbcf5c0fd), - TOBN(0xafea51d8, 0xac2138d7), TOBN(0xcb647545, 0x344cd443), - TOBN(0x0429ee8f, 0xbd7d9040), TOBN(0xee66a2de, 0x819b9c96), - TOBN(0x54f9ec25, 0xdea7d744), TOBN(0x2ffea642, 0x671721bb), - TOBN(0x4f19dbd1, 0x114344ea), TOBN(0x04304536, 0xfd0dbc8b), - TOBN(0x014b50aa, 0x29ec7f91), TOBN(0xb5fc22fe, 0xbb06014d), - TOBN(0x60d963a9, 0x1ee682e0), TOBN(0xdf48abc0, 0xfe85c727), - TOBN(0x0cadba13, 0x2e707c2d), TOBN(0xde608d3a, 0xa645aeff), - TOBN(0x05f1c28b, 0xedafd883), TOBN(0x3c362ede, 0xbd94de1f), - TOBN(0x8dd0629d, 0x13593e41), TOBN(0x0a5e736f, 0x766d6eaf), - TOBN(0xbfa92311, 0xf68cf9d1), TOBN(0xa4f9ef87, 0xc1797556), - TOBN(0x10d75a1f, 0x5601c209), TOBN(0x651c374c, 0x09b07361), - TOBN(0x49950b58, 0x88b5cead), TOBN(0x0ef00058, 0x6fa9dbaa), - TOBN(0xf51ddc26, 0x4e15f33a), TOBN(0x1f8b5ca6, 0x2ef46140), - TOBN(0x343ac0a3, 0xee9523f0), TOBN(0xbb75eab2, 0x975ea978), - TOBN(0x1bccf332, 0x107387f4), TOBN(0x790f9259, 0x9ab0062e), - TOBN(0xf1a363ad, 0x1e4f6a5f), TOBN(0x06e08b84, 0x62519a50), - TOBN(0x60915187, 0x7265f1ee), TOBN(0x6a80ca34, 0x93ae985e), - TOBN(0x81b29768, 0xaaba4864), TOBN(0xb13cabf2, 0x8d52a7d6), - TOBN(0xb5c36348, 0x8ead03f1), TOBN(0xc932ad95, 0x81c7c1c0), - TOBN(0x5452708e, 0xcae1e27b), TOBN(0x9dac4269, 0x1b0df648), - TOBN(0x233e3f0c, 0xdfcdb8bc), TOBN(0xe6ceccdf, 0xec540174), - TOBN(0xbd0d845e, 0x95081181), TOBN(0xcc8a7920, 0x699355d5), - TOBN(0x111c0f6d, 0xc3b375a8), TOBN(0xfd95bc6b, 0xfd51e0dc), - TOBN(0x4a106a26, 0x6888523a), TOBN(0x4d142bd6, 0xcb01a06d), - TOBN(0x79bfd289, 0xadb9b397), TOBN(0x0bdbfb94, 0xe9863914), - TOBN(0x29d8a229, 0x1660f6a6), TOBN(0x7f6abcd6, 0x551c042d), - TOBN(0x13039deb, 0x0ac3ffe8), TOBN(0xa01be628, 0xec8523fb), - TOBN(0x6ea34103, 0x0ca1c328), TOBN(0xc74114bd, 0xb903928e), - TOBN(0x8aa4ff4e, 0x9e9144b0), TOBN(0x7064091f, 0x7f9a4b17), - TOBN(0xa3f4f521, 0xe447f2c4), TOBN(0x81b8da7a, 0x604291f0), - TOBN(0xd680bc46, 0x7d5926de), TOBN(0x84f21fd5, 0x34a1202f), - TOBN(0x1d1e3181, 0x4e9df3d8), TOBN(0x1ca4861a, 0x39ab8d34), - TOBN(0x809ddeec, 0x5b19aa4a), TOBN(0x59f72f7e, 0x4d329366), - TOBN(0xa2f93f41, 0x386d5087), TOBN(0x40bf739c, 0xdd67d64f), - TOBN(0xb4494205, 0x66702158), TOBN(0xc33c65be, 0x73b1e178), - TOBN(0xcdcd657c, 0x38ca6153), TOBN(0x97f4519a, 0xdc791976), - TOBN(0xcc7c7f29, 0xcd6e1f39), TOBN(0x38de9cfb, 0x7e3c3932), - TOBN(0xe448eba3, 0x7b793f85), TOBN(0xe9f8dbf9, 0xf067e914), - TOBN(0xc0390266, 0xf114ae87), TOBN(0x39ed75a7, 0xcd6a8e2a), - TOBN(0xadb14848, 0x7ffba390), TOBN(0x67f8cb8b, 0x6af9bc09), - TOBN(0x322c3848, 0x9c7476db), TOBN(0xa320fecf, 0x52a538d6), - TOBN(0xe0493002, 0xb2aced2b), TOBN(0xdfba1809, 0x616bd430), - TOBN(0x531c4644, 0xc331be70), TOBN(0xbc04d32e, 0x90d2e450), - TOBN(0x1805a0d1, 0x0f9f142d), TOBN(0x2c44a0c5, 0x47ee5a23), - TOBN(0x31875a43, 0x3989b4e3), TOBN(0x6b1949fd, 0x0c063481), - TOBN(0x2dfb9e08, 0xbe0f4492), TOBN(0x3ff0da03, 0xe9d5e517), - TOBN(0x03dbe9a1, 0xf79466a8), TOBN(0x0b87bcd0, 0x15ea9932), - TOBN(0xeb64fc83, 0xab1f58ab), TOBN(0x6d9598da, 0x817edc8a), - TOBN(0x699cff66, 0x1d3b67e5), TOBN(0x645c0f29, 0x92635853), - TOBN(0x253cdd82, 0xeabaf21c), TOBN(0x82b9602a, 0x2241659e), - TOBN(0x2cae07ec, 0x2d9f7091), TOBN(0xbe4c720c, 0x8b48cd9b), - TOBN(0x6ce5bc03, 0x6f08d6c9), TOBN(0x36e8a997, 0xaf10bf40), - TOBN(0x83422d21, 0x3e10ff12), TOBN(0x7b26d3eb, 0xbcc12494), - TOBN(0xb240d2d0, 0xc9469ad6), TOBN(0xc4a11b4d, 0x30afa05b), - TOBN(0x4b604ace, 0xdd6ba286), TOBN(0x18486600, 0x3ee2864c), - TOBN(0x5869d6ba, 0x8d9ce5be), TOBN(0x0d8f68c5, 0xff4bfb0d), - TOBN(0xb69f210b, 0x5700cf73), TOBN(0x61f6653a, 0x6d37c135), - TOBN(0xff3d432b, 0x5aff5a48), TOBN(0x0d81c4b9, 0x72ba3a69), - TOBN(0xee879ae9, 0xfa1899ef), TOBN(0xbac7e2a0, 0x2d6acafd), - TOBN(0xd6d93f6c, 0x1c664399), TOBN(0x4c288de1, 0x5bcb135d), - TOBN(0x83031dab, 0x9dab7cbf), TOBN(0xfe23feb0, 0x3abbf5f0), - TOBN(0x9f1b2466, 0xcdedca85), TOBN(0x140bb710, 0x1a09538c), - TOBN(0xac8ae851, 0x5e11115d), TOBN(0x0d63ff67, 0x6f03f59e), - TOBN(0x755e5551, 0x7d234afb), TOBN(0x61c2db4e, 0x7e208fc1), - TOBN(0xaa9859ce, 0xf28a4b5d), TOBN(0xbdd6d4fc, 0x34af030f), - TOBN(0xd1c4a26d, 0x3be01cb1), TOBN(0x9ba14ffc, 0x243aa07c), - TOBN(0xf95cd3a9, 0xb2503502), TOBN(0xe379bc06, 0x7d2a93ab), - TOBN(0x3efc18e9, 0xd4ca8d68), TOBN(0x083558ec, 0x80bb412a), - TOBN(0xd903b940, 0x9645a968), TOBN(0xa499f0b6, 0x9ba6054f), - TOBN(0x208b573c, 0xb8349abe), TOBN(0x3baab3e5, 0x30b4fc1c), - TOBN(0x87e978ba, 0xcb524990), TOBN(0x3524194e, 0xccdf0e80), - TOBN(0x62711725, 0x7d4bcc42), TOBN(0xe90a3d9b, 0xb90109ba), - TOBN(0x3b1bdd57, 0x1323e1e0), TOBN(0xb78e9bd5, 0x5eae1599), - TOBN(0x0794b746, 0x9e03d278), TOBN(0x80178605, 0xd70e6297), - TOBN(0x171792f8, 0x99c97855), TOBN(0x11b393ee, 0xf5a86b5c), - TOBN(0x48ef6582, 0xd8884f27), TOBN(0xbd44737a, 0xbf19ba5f), - TOBN(0x8698de4c, 0xa42062c6), TOBN(0x8975eb80, 0x61ce9c54), - TOBN(0xd50e57c7, 0xd7fe71f3), TOBN(0x15342190, 0xbc97ce38), - TOBN(0x51bda2de, 0x4df07b63), TOBN(0xba12aeae, 0x200eb87d), - TOBN(0xabe135d2, 0xa9b4f8f6), TOBN(0x04619d65, 0xfad6d99c), - TOBN(0x4a6683a7, 0x7994937c), TOBN(0x7a778c8b, 0x6f94f09a), - TOBN(0x8c508623, 0x20a71b89), TOBN(0x241a2aed, 0x1c229165), - TOBN(0x352be595, 0xaaf83a99), TOBN(0x9fbfee7f, 0x1562bac8), - TOBN(0xeaf658b9, 0x5c4017e3), TOBN(0x1dc7f9e0, 0x15120b86), - TOBN(0xd84f13dd, 0x4c034d6f), TOBN(0x283dd737, 0xeaea3038), - TOBN(0x197f2609, 0xcd85d6a2), TOBN(0x6ebbc345, 0xfae60177), - TOBN(0xb80f031b, 0x4e12fede), TOBN(0xde55d0c2, 0x07a2186b), - TOBN(0x1fb3e37f, 0x24dcdd5a), TOBN(0x8d602da5, 0x7ed191fb), - TOBN(0x108fb056, 0x76023e0d), TOBN(0x70178c71, 0x459c20c0), - TOBN(0xfad5a386, 0x3fe54cf0), TOBN(0xa4a3ec4f, 0x02bbb475), - TOBN(0x1aa5ec20, 0x919d94d7), TOBN(0x5d3b63b5, 0xa81e4ab3), - TOBN(0x7fa733d8, 0x5ad3d2af), TOBN(0xfbc586dd, 0xd1ac7a37), - TOBN(0x282925de, 0x40779614), TOBN(0xfe0ffffb, 0xe74a242a), - TOBN(0x3f39e67f, 0x906151e5), TOBN(0xcea27f5f, 0x55e10649), - TOBN(0xdca1d4e1, 0xc17cf7b7), TOBN(0x0c326d12, 0x2fe2362d), - TOBN(0x05f7ac33, 0x7dd35df3), TOBN(0x0c3b7639, 0xc396dbdf), - TOBN(0x0912f5ac, 0x03b7db1c), TOBN(0x9dea4b70, 0x5c9ed4a9), - TOBN(0x475e6e53, 0xaae3f639), TOBN(0xfaba0e7c, 0xfc278bac), - TOBN(0x16f9e221, 0x9490375f), TOBN(0xaebf9746, 0xa5a7ed0a), - TOBN(0x45f9af3f, 0xf41ad5d6), TOBN(0x03c4623c, 0xb2e99224), - TOBN(0x82c5bb5c, 0xb3cf56aa), TOBN(0x64311819, 0x34567ed3), - TOBN(0xec57f211, 0x8be489ac), TOBN(0x2821895d, 0xb9a1104b), - TOBN(0x610dc875, 0x6064e007), TOBN(0x8e526f3f, 0x5b20d0fe), - TOBN(0x6e71ca77, 0x5b645aee), TOBN(0x3d1dcb9f, 0x800e10ff), - TOBN(0x36b51162, 0x189cf6de), TOBN(0x2c5a3e30, 0x6bb17353), - TOBN(0xc186cd3e, 0x2a6c6fbf), TOBN(0xa74516fa, 0x4bf97906), - TOBN(0x5b4b8f4b, 0x279d6901), TOBN(0x0c4e57b4, 0x2b573743), - TOBN(0x75fdb229, 0xb6e386b6), TOBN(0xb46793fd, 0x99deac27), - TOBN(0xeeec47ea, 0xcf712629), TOBN(0xe965f3c4, 0xcbc3b2dd), - TOBN(0x8dd1fb83, 0x425c6559), TOBN(0x7fc00ee6, 0x0af06fda), - TOBN(0xe98c9225, 0x33d956df), TOBN(0x0f1ef335, 0x4fbdc8a2), - TOBN(0x2abb5145, 0xb79b8ea2), TOBN(0x40fd2945, 0xbdbff288), - TOBN(0x6a814ac4, 0xd7185db7), TOBN(0xc4329d6f, 0xc084609a), - TOBN(0xc9ba7b52, 0xed1be45d), TOBN(0x891dd20d, 0xe4cd2c74), - TOBN(0x5a4d4a7f, 0x824139b1), TOBN(0x66c17716, 0xb873c710), - TOBN(0x5e5bc141, 0x2843c4e0), TOBN(0xd5ac4817, 0xb97eb5bf), - TOBN(0xc0f8af54, 0x450c95c7), TOBN(0xc91b3fa0, 0x318406c5), - TOBN(0x360c340a, 0xab9d97f8), TOBN(0xfb57bd07, 0x90a2d611), - TOBN(0x4339ae3c, 0xa6a6f7e5), TOBN(0x9c1fcd2a, 0x2feb8a10), - TOBN(0x972bcca9, 0xc7ea7432), TOBN(0x1b0b924c, 0x308076f6), - TOBN(0x80b2814a, 0x2a5b4ca5), TOBN(0x2f78f55b, 0x61ef3b29), - TOBN(0xf838744a, 0xc18a414f), TOBN(0xc611eaae, 0x903d0a86), - TOBN(0x94dabc16, 0x2a453f55), TOBN(0xe6f2e3da, 0x14efb279), - TOBN(0x5b7a6017, 0x9320dc3c), TOBN(0x692e382f, 0x8df6b5a4), - TOBN(0x3f5e15e0, 0x2d40fa90), TOBN(0xc87883ae, 0x643dd318), - TOBN(0x511053e4, 0x53544774), TOBN(0x834d0ecc, 0x3adba2bc), - TOBN(0x4215d7f7, 0xbae371f5), TOBN(0xfcfd57bf, 0x6c8663bc), - TOBN(0xded2383d, 0xd6901b1d), TOBN(0x3b49fbb4, 0xb5587dc3), - TOBN(0xfd44a08d, 0x07625f62), TOBN(0x3ee4d65b, 0x9de9b762)}, - {TOBN(0x64e5137d, 0x0d63d1fa), TOBN(0x658fc052, 0x02a9d89f), - TOBN(0x48894874, 0x50436309), TOBN(0xe9ae30f8, 0xd598da61), - TOBN(0x2ed710d1, 0x818baf91), TOBN(0xe27e9e06, 0x8b6a0c20), - TOBN(0x1e28dcfb, 0x1c1a6b44), TOBN(0x883acb64, 0xd6ac57dc), - TOBN(0x8735728d, 0xc2c6ff70), TOBN(0x79d6122f, 0xc5dc2235), - TOBN(0x23f5d003, 0x19e277f9), TOBN(0x7ee84e25, 0xdded8cc7), - TOBN(0x91a8afb0, 0x63cd880a), TOBN(0x3f3ea7c6, 0x3574af60), - TOBN(0x0cfcdc84, 0x02de7f42), TOBN(0x62d0792f, 0xb31aa152), - TOBN(0x8e1b4e43, 0x8a5807ce), TOBN(0xad283893, 0xe4109a7e), - TOBN(0xc30cc9cb, 0xafd59dda), TOBN(0xf65f36c6, 0x3d8d8093), - TOBN(0xdf31469e, 0xa60d32b2), TOBN(0xee93df4b, 0x3e8191c8), - TOBN(0x9c1017c5, 0x355bdeb5), TOBN(0xd2623185, 0x8616aa28), - TOBN(0xb02c83f9, 0xdec31a21), TOBN(0x988c8b23, 0x6ad9d573), - TOBN(0x53e983ae, 0xa57be365), TOBN(0xe968734d, 0x646f834e), - TOBN(0x9137ea8f, 0x5da6309b), TOBN(0x10f3a624, 0xc1f1ce16), - TOBN(0x782a9ea2, 0xca440921), TOBN(0xdf94739e, 0x5b46f1b5), - TOBN(0x9f9be006, 0xcce85c9b), TOBN(0x360e70d6, 0xa4c7c2d3), - TOBN(0x2cd5beea, 0xaefa1e60), TOBN(0x64cf63c0, 0x8c3d2b6d), - TOBN(0xfb107fa3, 0xe1cf6f90), TOBN(0xb7e937c6, 0xd5e044e6), - TOBN(0x74e8ca78, 0xce34db9f), TOBN(0x4f8b36c1, 0x3e210bd0), - TOBN(0x1df165a4, 0x34a35ea8), TOBN(0x3418e0f7, 0x4d4412f6), - TOBN(0x5af1f8af, 0x518836c3), TOBN(0x42ceef4d, 0x130e1965), - TOBN(0x5560ca0b, 0x543a1957), TOBN(0xc33761e5, 0x886cb123), - TOBN(0x66624b1f, 0xfe98ed30), TOBN(0xf772f4bf, 0x1090997d), - TOBN(0xf4e540bb, 0x4885d410), TOBN(0x7287f810, 0x9ba5f8d7), - TOBN(0x22d0d865, 0xde98dfb1), TOBN(0x49ff51a1, 0xbcfbb8a3), - TOBN(0xb6b6fa53, 0x6bc3012e), TOBN(0x3d31fd72, 0x170d541d), - TOBN(0x8018724f, 0x4b0f4966), TOBN(0x79e7399f, 0x87dbde07), - TOBN(0x56f8410e, 0xf4f8b16a), TOBN(0x97241afe, 0xc47b266a), - TOBN(0x0a406b8e, 0x6d9c87c1), TOBN(0x803f3e02, 0xcd42ab1b), - TOBN(0x7f0309a8, 0x04dbec69), TOBN(0xa83b85f7, 0x3bbad05f), - TOBN(0xc6097273, 0xad8e197f), TOBN(0xc097440e, 0x5067adc1), - TOBN(0x730eafb6, 0x3524ff16), TOBN(0xd7f9b51e, 0x823fc6ce), - TOBN(0x27bd0d32, 0x443e4ac0), TOBN(0x40c59ad9, 0x4d66f217), - TOBN(0x6c33136f, 0x17c387a4), TOBN(0x5043b8d5, 0xeb86804d), - TOBN(0x74970312, 0x675a73c9), TOBN(0x838fdb31, 0xf16669b6), - TOBN(0xc507b6dd, 0x418e7ddd), TOBN(0x39888d93, 0x472f19d6), - TOBN(0x7eae26be, 0x0c27eb4d), TOBN(0x17b53ed3, 0xfbabb884), - TOBN(0xfc27021b, 0x2b01ae4f), TOBN(0x88462e87, 0xcf488682), - TOBN(0xbee096ec, 0x215e2d87), TOBN(0xeb2fea9a, 0xd242e29b), - TOBN(0x5d985b5f, 0xb821fc28), TOBN(0x89d2e197, 0xdc1e2ad2), - TOBN(0x55b566b8, 0x9030ba62), TOBN(0xe3fd41b5, 0x4f41b1c6), - TOBN(0xb738ac2e, 0xb9a96d61), TOBN(0x7f8567ca, 0x369443f4), - TOBN(0x8698622d, 0xf803a440), TOBN(0x2b586236, 0x8fe2f4dc), - TOBN(0xbbcc00c7, 0x56b95bce), TOBN(0x5ec03906, 0x616da680), - TOBN(0x79162ee6, 0x72214252), TOBN(0x43132b63, 0x86a892d2), - TOBN(0x4bdd3ff2, 0x2f3263bf), TOBN(0xd5b3733c, 0x9cd0a142), - TOBN(0x592eaa82, 0x44415ccb), TOBN(0x663e8924, 0x8d5474ea), - TOBN(0x8058a25e, 0x5236344e), TOBN(0x82e8df9d, 0xbda76ee6), - TOBN(0xdcf6efd8, 0x11cc3d22), TOBN(0x00089cda, 0x3b4ab529), - TOBN(0x91d3a071, 0xbd38a3db), TOBN(0x4ea97fc0, 0xef72b925), - TOBN(0x0c9fc15b, 0xea3edf75), TOBN(0x5a6297cd, 0xa4348ed3), - TOBN(0x0d38ab35, 0xce7c42d4), TOBN(0x9fd493ef, 0x82feab10), - TOBN(0x46056b6d, 0x82111b45), TOBN(0xda11dae1, 0x73efc5c3), - TOBN(0xdc740278, 0x5545a7fb), TOBN(0xbdb2601c, 0x40d507e6), - TOBN(0x121dfeeb, 0x7066fa58), TOBN(0x214369a8, 0x39ae8c2a), - TOBN(0x195709cb, 0x06e0956c), TOBN(0x4c9d254f, 0x010cd34b), - TOBN(0xf51e13f7, 0x0471a532), TOBN(0xe19d6791, 0x1e73054d), - TOBN(0xf702a628, 0xdb5c7be3), TOBN(0xc7141218, 0xb24dde05), - TOBN(0xdc18233c, 0xf29b2e2e), TOBN(0x3a6bd1e8, 0x85342dba), - TOBN(0x3f747fa0, 0xb311898c), TOBN(0xe2a272e4, 0xcd0eac65), - TOBN(0x4bba5851, 0xf914d0bc), TOBN(0x7a1a9660, 0xc4a43ee3), - TOBN(0xe5a367ce, 0xa1c8cde9), TOBN(0x9d958ba9, 0x7271abe3), - TOBN(0xf3ff7eb6, 0x3d1615cd), TOBN(0xa2280dce, 0xf5ae20b0), - TOBN(0x56dba5c1, 0xcf640147), TOBN(0xea5a2e3d, 0x5e83d118), - TOBN(0x04cd6b6d, 0xda24c511), TOBN(0x1c0f4671, 0xe854d214), - TOBN(0x91a6b7a9, 0x69565381), TOBN(0xdc966240, 0xdecf1f5b), - TOBN(0x1b22d21c, 0xfcf5d009), TOBN(0x2a05f641, 0x9021dbd5), - TOBN(0x8c0ed566, 0xd4312483), TOBN(0x5179a95d, 0x643e216f), - TOBN(0xcc185fec, 0x17044493), TOBN(0xb3063339, 0x54991a21), - TOBN(0xd801ecdb, 0x0081a726), TOBN(0x0149b0c6, 0x4fa89bbb), - TOBN(0xafe9065a, 0x4391b6b9), TOBN(0xedc92786, 0xd633f3a3), - TOBN(0xe408c24a, 0xae6a8e13), TOBN(0x85833fde, 0x9f3897ab), - TOBN(0x43800e7e, 0xd81a0715), TOBN(0xde08e346, 0xb44ffc5f), - TOBN(0x7094184c, 0xcdeff2e0), TOBN(0x49f9387b, 0x165eaed1), - TOBN(0x635d6129, 0x777c468a), TOBN(0x8c0dcfd1, 0x538c2dd8), - TOBN(0xd6d9d9e3, 0x7a6a308b), TOBN(0x62375830, 0x4c2767d3), - TOBN(0x874a8bc6, 0xf38cbeb6), TOBN(0xd94d3f1a, 0xccb6fd9e), - TOBN(0x92a9735b, 0xba21f248), TOBN(0x272ad0e5, 0x6cd1efb0), - TOBN(0x7437b69c, 0x05b03284), TOBN(0xe7f04702, 0x6948c225), - TOBN(0x8a56c04a, 0xcba2ecec), TOBN(0x0c181270, 0xe3a73e41), - TOBN(0x6cb34e9d, 0x03e93725), TOBN(0xf77c8713, 0x496521a9), - TOBN(0x94569183, 0xfa7f9f90), TOBN(0xf2e7aa4c, 0x8c9707ad), - TOBN(0xced2c9ba, 0x26c1c9a3), TOBN(0x9109fe96, 0x40197507), - TOBN(0x9ae868a9, 0xe9adfe1c), TOBN(0x3984403d, 0x314e39bb), - TOBN(0xb5875720, 0xf2fe378f), TOBN(0x33f901e0, 0xba44a628), - TOBN(0xea1125fe, 0x3652438c), TOBN(0xae9ec4e6, 0x9dd1f20b), - TOBN(0x1e740d9e, 0xbebf7fbd), TOBN(0x6dbd3ddc, 0x42dbe79c), - TOBN(0x62082aec, 0xedd36776), TOBN(0xf612c478, 0xe9859039), - TOBN(0xa493b201, 0x032f7065), TOBN(0xebd4d8f2, 0x4ff9b211), - TOBN(0x3f23a0aa, 0xaac4cb32), TOBN(0xea3aadb7, 0x15ed4005), - TOBN(0xacf17ea4, 0xafa27e63), TOBN(0x56125c1a, 0xc11fd66c), - TOBN(0x266344a4, 0x3794f8dc), TOBN(0xdcca923a, 0x483c5c36), - TOBN(0x2d6b6bbf, 0x3f9d10a0), TOBN(0xb320c5ca, 0x81d9bdf3), - TOBN(0x620e28ff, 0x47b50a95), TOBN(0x933e3b01, 0xcef03371), - TOBN(0xf081bf85, 0x99100153), TOBN(0x183be9a0, 0xc3a8c8d6), - TOBN(0x4e3ddc5a, 0xd6bbe24d), TOBN(0xc6c74630, 0x53843795), - TOBN(0x78193dd7, 0x65ec2d4c), TOBN(0xb8df26cc, 0xcd3c89b2), - TOBN(0x98dbe399, 0x5a483f8d), TOBN(0x72d8a957, 0x7dd3313a), - TOBN(0x65087294, 0xab0bd375), TOBN(0xfcd89248, 0x7c259d16), - TOBN(0x8a9443d7, 0x7613aa81), TOBN(0x80100800, 0x85fe6584), - TOBN(0x70fc4dbc, 0x7fb10288), TOBN(0xf58280d3, 0xe86beee8), - TOBN(0x14fdd82f, 0x7c978c38), TOBN(0xdf1204c1, 0x0de44d7b), - TOBN(0xa08a1c84, 0x4160252f), TOBN(0x591554ca, 0xc17646a5), - TOBN(0x214a37d6, 0xa05bd525), TOBN(0x48d5f09b, 0x07957b3c), - TOBN(0x0247cdcb, 0xd7109bc9), TOBN(0x40f9e4bb, 0x30599ce7), - TOBN(0xc325fa03, 0xf46ad2ec), TOBN(0x00f766cf, 0xc3e3f9ee), - TOBN(0xab556668, 0xd43a4577), TOBN(0x68d30a61, 0x3ee03b93), - TOBN(0x7ddc81ea, 0x77b46a08), TOBN(0xcf5a6477, 0xc7480699), - TOBN(0x43a8cb34, 0x6633f683), TOBN(0x1b867e6b, 0x92363c60), - TOBN(0x43921114, 0x1f60558e), TOBN(0xcdbcdd63, 0x2f41450e), - TOBN(0x7fc04601, 0xcc630e8b), TOBN(0xea7c66d5, 0x97038b43), - TOBN(0x7259b8a5, 0x04e99fd8), TOBN(0x98a8dd12, 0x4785549a), - TOBN(0x0e459a7c, 0x840552e1), TOBN(0xcdfcf4d0, 0x4bb0909e), - TOBN(0x34a86db2, 0x53758da7), TOBN(0xe643bb83, 0xeac997e1), - TOBN(0x96400bd7, 0x530c5b7e), TOBN(0x9f97af87, 0xb41c8b52), - TOBN(0x34fc8820, 0xfbeee3f9), TOBN(0x93e53490, 0x49091afd), - TOBN(0x764b9be5, 0x9a31f35c), TOBN(0x71f37864, 0x57e3d924), - TOBN(0x02fb34e0, 0x943aa75e), TOBN(0xa18c9c58, 0xab8ff6e4), - TOBN(0x080f31b1, 0x33cf0d19), TOBN(0x5c9682db, 0x083518a7), - TOBN(0x873d4ca6, 0xb709c3de), TOBN(0x64a84262, 0x3575b8f0), - TOBN(0x6275da1f, 0x020154bb), TOBN(0x97678caa, 0xd17cf1ab), - TOBN(0x8779795f, 0x951a95c3), TOBN(0xdd35b163, 0x50fccc08), - TOBN(0x32709627, 0x33d8f031), TOBN(0x3c5ab10a, 0x498dd85c), - TOBN(0xb6c185c3, 0x41dca566), TOBN(0x7de7feda, 0xd8622aa3), - TOBN(0x99e84d92, 0x901b6dfb), TOBN(0x30a02b0e, 0x7c4ad288), - TOBN(0xc7c81daa, 0x2fd3cf36), TOBN(0xd1319547, 0xdf89e59f), - TOBN(0xb2be8184, 0xcd496733), TOBN(0xd5f449eb, 0x93d3412b), - TOBN(0x7ea41b1b, 0x25fe531d), TOBN(0xf9797432, 0x6a1d5646), - TOBN(0x86067f72, 0x2bde501a), TOBN(0xf91481c0, 0x0c85e89c), - TOBN(0xca8ee465, 0xf8b05bc6), TOBN(0x1844e1cf, 0x02e83cda), - TOBN(0xca82114a, 0xb4dbe33b), TOBN(0x0f9f8769, 0x4eabfde2), - TOBN(0x4936b1c0, 0x38b27fe2), TOBN(0x63b6359b, 0xaba402df), - TOBN(0x40c0ea2f, 0x656bdbab), TOBN(0x9c992a89, 0x6580c39c), - TOBN(0x600e8f15, 0x2a60aed1), TOBN(0xeb089ca4, 0xe0bf49df), - TOBN(0x9c233d7d, 0x2d42d99a), TOBN(0x648d3f95, 0x4c6bc2fa), - TOBN(0xdcc383a8, 0xe1add3f3), TOBN(0xf42c0c6a, 0x4f64a348), - TOBN(0x2abd176f, 0x0030dbdb), TOBN(0x4de501a3, 0x7d6c215e), - TOBN(0x4a107c1f, 0x4b9a64bc), TOBN(0xa77f0ad3, 0x2496cd59), - TOBN(0xfb78ac62, 0x7688dffb), TOBN(0x7025a2ca, 0x67937d8e), - TOBN(0xfde8b2d1, 0xd1a8f4e7), TOBN(0xf5b3da47, 0x7354927c), - TOBN(0xe48606a3, 0xd9205735), TOBN(0xac477cc6, 0xe177b917), - TOBN(0xfb1f73d2, 0xa883239a), TOBN(0xe12572f6, 0xcc8b8357), - TOBN(0x9d355e9c, 0xfb1f4f86), TOBN(0x89b795f8, 0xd9f3ec6e), - TOBN(0x27be56f1, 0xb54398dc), TOBN(0x1890efd7, 0x3fedeed5), - TOBN(0x62f77f1f, 0x9c6d0140), TOBN(0x7ef0e314, 0x596f0ee4), - TOBN(0x50ca6631, 0xcc61dab3), TOBN(0x4a39801d, 0xf4866e4f), - TOBN(0x66c8d032, 0xae363b39), TOBN(0x22c591e5, 0x2ead66aa), - TOBN(0x954ba308, 0xde02a53e), TOBN(0x2a6c060f, 0xd389f357), - TOBN(0xe6cfcde8, 0xfbf40b66), TOBN(0x8e02fc56, 0xc6340ce1), - TOBN(0xe4957795, 0x73adb4ba), TOBN(0x7b86122c, 0xa7b03805), - TOBN(0x63f83512, 0x0c8e6fa6), TOBN(0x83660ea0, 0x057d7804), - TOBN(0xbad79105, 0x21ba473c), TOBN(0xb6c50bee, 0xded5389d), - TOBN(0xee2caf4d, 0xaa7c9bc0), TOBN(0xd97b8de4, 0x8c4e98a7), - TOBN(0xa9f63e70, 0xab3bbddb), TOBN(0x3898aabf, 0x2597815a), - TOBN(0x7659af89, 0xac15b3d9), TOBN(0xedf7725b, 0x703ce784), - TOBN(0x25470fab, 0xe085116b), TOBN(0x04a43375, 0x87285310), - TOBN(0x4e39187e, 0xe2bfd52f), TOBN(0x36166b44, 0x7d9ebc74), - TOBN(0x92ad433c, 0xfd4b322c), TOBN(0x726aa817, 0xba79ab51), - TOBN(0xf96eacd8, 0xc1db15eb), TOBN(0xfaf71e91, 0x0476be63), - TOBN(0xdd69a640, 0x641fad98), TOBN(0xb7995918, 0x29622559), - TOBN(0x03c6daa5, 0xde4199dc), TOBN(0x92cadc97, 0xad545eb4), - TOBN(0x1028238b, 0x256534e4), TOBN(0x73e80ce6, 0x8595409a), - TOBN(0x690d4c66, 0xd05dc59b), TOBN(0xc95f7b8f, 0x981dee80), - TOBN(0xf4337014, 0xd856ac25), TOBN(0x441bd9dd, 0xac524dca), - TOBN(0x640b3d85, 0x5f0499f5), TOBN(0x39cf84a9, 0xd5fda182), - TOBN(0x04e7b055, 0xb2aa95a0), TOBN(0x29e33f0a, 0x0ddf1860), - TOBN(0x082e74b5, 0x423f6b43), TOBN(0x217edeb9, 0x0aaa2b0f), - TOBN(0x58b83f35, 0x83cbea55), TOBN(0xc485ee4d, 0xbc185d70), - TOBN(0x833ff03b, 0x1e5f6992), TOBN(0xb5b9b9cc, 0xcf0c0dd5), - TOBN(0x7caaee8e, 0x4e9e8a50), TOBN(0x462e907b, 0x6269dafd), - TOBN(0x6ed5cee9, 0xfbe791c6), TOBN(0x68ca3259, 0xed430790), - TOBN(0x2b72bdf2, 0x13b5ba88), TOBN(0x60294c8a, 0x35ef0ac4), - TOBN(0x9c3230ed, 0x19b99b08), TOBN(0x560fff17, 0x6c2589aa), - TOBN(0x552b8487, 0xd6770374), TOBN(0xa373202d, 0x9a56f685), - TOBN(0xd3e7f907, 0x45f175d9), TOBN(0x3c2f315f, 0xd080d810), - TOBN(0x1130e9dd, 0x7b9520e8), TOBN(0xc078f9e2, 0x0af037b5), - TOBN(0x38cd2ec7, 0x1e9c104c), TOBN(0x0f684368, 0xc472fe92), - TOBN(0xd3f1b5ed, 0x6247e7ef), TOBN(0xb32d33a9, 0x396dfe21), - TOBN(0x46f59cf4, 0x4a9aa2c2), TOBN(0x69cd5168, 0xff0f7e41), - TOBN(0x3f59da0f, 0x4b3234da), TOBN(0xcf0b0235, 0xb4579ebe), - TOBN(0x6d1cbb25, 0x6d2476c7), TOBN(0x4f0837e6, 0x9dc30f08), - TOBN(0x9a4075bb, 0x906f6e98), TOBN(0x253bb434, 0xc761e7d1), - TOBN(0xde2e645f, 0x6e73af10), TOBN(0xb89a4060, 0x0c5f131c), - TOBN(0xd12840c5, 0xb8cc037f), TOBN(0x3d093a5b, 0x7405bb47), - TOBN(0x6202c253, 0x206348b8), TOBN(0xbf5d57fc, 0xc55a3ca7), - TOBN(0x89f6c90c, 0x8c3bef48), TOBN(0x23ac7623, 0x5a0a960a), - TOBN(0xdfbd3d6b, 0x552b42ab), TOBN(0x3ef22458, 0x132061f6), - TOBN(0xd74e9bda, 0xc97e6516), TOBN(0x88779360, 0xc230f49e), - TOBN(0xa6ec1de3, 0x1e74ea49), TOBN(0x581dcee5, 0x3fb645a2), - TOBN(0xbaef2391, 0x8f483f14), TOBN(0x6d2dddfc, 0xd137d13b), - TOBN(0x54cde50e, 0xd2743a42), TOBN(0x89a34fc5, 0xe4d97e67), - TOBN(0x13f1f5b3, 0x12e08ce5), TOBN(0xa80540b8, 0xa7f0b2ca), - TOBN(0x854bcf77, 0x01982805), TOBN(0xb8653ffd, 0x233bea04), - TOBN(0x8e7b8787, 0x02b0b4c9), TOBN(0x2675261f, 0x9acb170a), - TOBN(0x061a9d90, 0x930c14e5), TOBN(0xb59b30e0, 0xdef0abea), - TOBN(0x1dc19ea6, 0x0200ec7d), TOBN(0xb6f4a3f9, 0x0bce132b), - TOBN(0xb8d5de90, 0xf13e27e0), TOBN(0xbaee5ef0, 0x1fade16f), - TOBN(0x6f406aaa, 0xe4c6cf38), TOBN(0xab4cfe06, 0xd1369815), - TOBN(0x0dcffe87, 0xefd550c6), TOBN(0x9d4f59c7, 0x75ff7d39), - TOBN(0xb02553b1, 0x51deb6ad), TOBN(0x812399a4, 0xb1877749), - TOBN(0xce90f71f, 0xca6006e1), TOBN(0xc32363a6, 0xb02b6e77), - TOBN(0x02284fbe, 0xdc36c64d), TOBN(0x86c81e31, 0xa7e1ae61), - TOBN(0x2576c7e5, 0xb909d94a), TOBN(0x8b6f7d02, 0x818b2bb0), - TOBN(0xeca3ed07, 0x56faa38a), TOBN(0xa3790e6c, 0x9305bb54), - TOBN(0xd784eeda, 0x7bc73061), TOBN(0xbd56d369, 0x6dd50614), - TOBN(0xd6575949, 0x229a8aa9), TOBN(0xdcca8f47, 0x4595ec28), - TOBN(0x814305c1, 0x06ab4fe6), TOBN(0xc8c39768, 0x24f43f16), - TOBN(0xe2a45f36, 0x523f2b36), TOBN(0x995c6493, 0x920d93bb), - TOBN(0xf8afdab7, 0x90f1632b), TOBN(0x79ebbecd, 0x1c295954), - TOBN(0xc7bb3ddb, 0x79592f48), TOBN(0x67216a7b, 0x5f88e998), - TOBN(0xd91f098b, 0xbc01193e), TOBN(0xf7d928a5, 0xb1db83fc), - TOBN(0x55e38417, 0xe991f600), TOBN(0x2a91113e, 0x2981a934), - TOBN(0xcbc9d648, 0x06b13bde), TOBN(0xb011b6ac, 0x0755ff44), - TOBN(0x6f4cb518, 0x045ec613), TOBN(0x522d2d31, 0xc2f5930a), - TOBN(0x5acae1af, 0x382e65de), TOBN(0x57643067, 0x27bc966f), - TOBN(0x5e12705d, 0x1c7193f0), TOBN(0xf0f32f47, 0x3be8858e), - TOBN(0x785c3d7d, 0x96c6dfc7), TOBN(0xd75b4a20, 0xbf31795d), - TOBN(0x91acf17b, 0x342659d4), TOBN(0xe596ea34, 0x44f0378f), - TOBN(0x4515708f, 0xce52129d), TOBN(0x17387e1e, 0x79f2f585), - TOBN(0x72cfd2e9, 0x49dee168), TOBN(0x1ae05223, 0x3e2af239), - TOBN(0x009e75be, 0x1d94066a), TOBN(0x6cca31c7, 0x38abf413), - TOBN(0xb50bd61d, 0x9bc49908), TOBN(0x4a9b4a8c, 0xf5e2bc1e), - TOBN(0xeb6cc5f7, 0x946f83ac), TOBN(0x27da93fc, 0xebffab28), - TOBN(0xea314c96, 0x4821c8c5), TOBN(0x8de49ded, 0xa83c15f4), - TOBN(0x7a64cf20, 0x7af33004), TOBN(0x45f1bfeb, 0xc9627e10), - TOBN(0x878b0626, 0x54b9df60), TOBN(0x5e4fdc3c, 0xa95c0b33), - TOBN(0xe54a37ca, 0xc2035d8e), TOBN(0x9087cda9, 0x80f20b8c), - TOBN(0x36f61c23, 0x8319ade4), TOBN(0x766f287a, 0xde8cfdf8), - TOBN(0x48821948, 0x346f3705), TOBN(0x49a7b853, 0x16e4f4a2), - TOBN(0xb9b3f8a7, 0x5cedadfd), TOBN(0x8f562815, 0x8db2a815), - TOBN(0xc0b7d554, 0x01f68f95), TOBN(0x12971e27, 0x688a208e), - TOBN(0xc9f8b696, 0xd0ff34fc), TOBN(0x20824de2, 0x1222718c), - TOBN(0x7213cf9f, 0x0c95284d), TOBN(0xe2ad741b, 0xdc158240), - TOBN(0x0ee3a6df, 0x54043ccf), TOBN(0x16ff479b, 0xd84412b3), - TOBN(0xf6c74ee0, 0xdfc98af0), TOBN(0xa78a169f, 0x52fcd2fb), - TOBN(0xd8ae8746, 0x99c930e9), TOBN(0x1d33e858, 0x49e117a5), - TOBN(0x7581fcb4, 0x6624759f), TOBN(0xde50644f, 0x5bedc01d), - TOBN(0xbeec5d00, 0xcaf3155e), TOBN(0x672d66ac, 0xbc73e75f), - TOBN(0x86b9d8c6, 0x270b01db), TOBN(0xd249ef83, 0x50f55b79), - TOBN(0x6131d6d4, 0x73978fe3), TOBN(0xcc4e4542, 0x754b00a1), - TOBN(0x4e05df05, 0x57dfcfe9), TOBN(0x94b29cdd, 0x51ef6bf0), - TOBN(0xe4530cff, 0x9bc7edf2), TOBN(0x8ac236fd, 0xd3da65f3), - TOBN(0x0faf7d5f, 0xc8eb0b48), TOBN(0x4d2de14c, 0x660eb039), - TOBN(0xc006bba7, 0x60430e54), TOBN(0x10a2d0d6, 0xda3289ab), - TOBN(0x9c037a5d, 0xd7979c59), TOBN(0x04d1f3d3, 0xa116d944), - TOBN(0x9ff22473, 0x8a0983cd), TOBN(0x28e25b38, 0xc883cabb), - TOBN(0xe968dba5, 0x47a58995), TOBN(0x2c80b505, 0x774eebdf), - TOBN(0xee763b71, 0x4a953beb), TOBN(0x502e223f, 0x1642e7f6), - TOBN(0x6fe4b641, 0x61d5e722), TOBN(0x9d37c5b0, 0xdbef5316), - TOBN(0x0115ed70, 0xf8330bc7), TOBN(0x139850e6, 0x75a72789), - TOBN(0x27d7faec, 0xffceccc2), TOBN(0x3016a860, 0x4fd9f7f6), - TOBN(0xc492ec64, 0x4cd8f64c), TOBN(0x58a2d790, 0x279d7b51), - TOBN(0x0ced1fc5, 0x1fc75256), TOBN(0x3e658aed, 0x8f433017), - TOBN(0x0b61942e, 0x05da59eb), TOBN(0xba3d60a3, 0x0ddc3722), - TOBN(0x7c311cd1, 0x742e7f87), TOBN(0x6473ffee, 0xf6b01b6e)}, - {TOBN(0x8303604f, 0x692ac542), TOBN(0xf079ffe1, 0x227b91d3), - TOBN(0x19f63e63, 0x15aaf9bd), TOBN(0xf99ee565, 0xf1f344fb), - TOBN(0x8a1d661f, 0xd6219199), TOBN(0x8c883bc6, 0xd48ce41c), - TOBN(0x1065118f, 0x3c74d904), TOBN(0x713889ee, 0x0faf8b1b), - TOBN(0x972b3f8f, 0x81a1b3be), TOBN(0x4f3ce145, 0xce2764a0), - TOBN(0xe2d0f1cc, 0x28c4f5f7), TOBN(0xdeee0c0d, 0xc7f3985b), - TOBN(0x7df4adc0, 0xd39e25c3), TOBN(0x40619820, 0xc467a080), - TOBN(0x440ebc93, 0x61cf5a58), TOBN(0x527729a6, 0x422ad600), - TOBN(0xca6c0937, 0xb1b76ba6), TOBN(0x1a2eab85, 0x4d2026dc), - TOBN(0xb1715e15, 0x19d9ae0a), TOBN(0xf1ad9199, 0xbac4a026), - TOBN(0x35b3dfb8, 0x07ea7b0e), TOBN(0xedf5496f, 0x3ed9eb89), - TOBN(0x8932e5ff, 0x2d6d08ab), TOBN(0xf314874e, 0x25bd2731), - TOBN(0xefb26a75, 0x3f73f449), TOBN(0x1d1c94f8, 0x8d44fc79), - TOBN(0x49f0fbc5, 0x3bc0dc4d), TOBN(0xb747ea0b, 0x3698a0d0), - TOBN(0x5218c3fe, 0x228d291e), TOBN(0x35b804b5, 0x43c129d6), - TOBN(0xfac859b8, 0xd1acc516), TOBN(0x6c10697d, 0x95d6e668), - TOBN(0xc38e438f, 0x0876fd4e), TOBN(0x45f0c307, 0x83d2f383), - TOBN(0x203cc2ec, 0xb10934cb), TOBN(0x6a8f2439, 0x2c9d46ee), - TOBN(0xf16b431b, 0x65ccde7b), TOBN(0x41e2cd18, 0x27e76a6f), - TOBN(0xb9c8cf8f, 0x4e3484d7), TOBN(0x64426efd, 0x8315244a), - TOBN(0x1c0a8e44, 0xfc94dea3), TOBN(0x34c8cdbf, 0xdad6a0b0), - TOBN(0x919c3840, 0x04113cef), TOBN(0xfd32fba4, 0x15490ffa), - TOBN(0x58d190f6, 0x795dcfb7), TOBN(0xfef01b03, 0x83588baf), - TOBN(0x9e6d1d63, 0xca1fc1c0), TOBN(0x53173f96, 0xf0a41ac9), - TOBN(0x2b1d402a, 0xba16f73b), TOBN(0x2fb31014, 0x8cf9b9fc), - TOBN(0x2d51e60e, 0x446ef7bf), TOBN(0xc731021b, 0xb91e1745), - TOBN(0x9d3b4724, 0x4fee99d4), TOBN(0x4bca48b6, 0xfac5c1ea), - TOBN(0x70f5f514, 0xbbea9af7), TOBN(0x751f55a5, 0x974c283a), - TOBN(0x6e30251a, 0xcb452fdb), TOBN(0x31ee6965, 0x50f30650), - TOBN(0xb0b3e508, 0x933548d9), TOBN(0xb8949a4f, 0xf4b0ef5b), - TOBN(0x208b8326, 0x3c88f3bd), TOBN(0xab147c30, 0xdb1d9989), - TOBN(0xed6515fd, 0x44d4df03), TOBN(0x17a12f75, 0xe72eb0c5), - TOBN(0x3b59796d, 0x36cf69db), TOBN(0x1219eee9, 0x56670c18), - TOBN(0xfe3341f7, 0x7a070d8e), TOBN(0x9b70130b, 0xa327f90c), - TOBN(0x36a32462, 0x0ae18e0e), TOBN(0x2021a623, 0x46c0a638), - TOBN(0x251b5817, 0xc62eb0d4), TOBN(0x87bfbcdf, 0x4c762293), - TOBN(0xf78ab505, 0xcdd61d64), TOBN(0x8c7a53fc, 0xc8c18857), - TOBN(0xa653ce6f, 0x16147515), TOBN(0x9c923aa5, 0xea7d52d5), - TOBN(0xc24709cb, 0x5c18871f), TOBN(0x7d53bec8, 0x73b3cc74), - TOBN(0x59264aff, 0xfdd1d4c4), TOBN(0x5555917e, 0x240da582), - TOBN(0xcae8bbda, 0x548f5a0e), TOBN(0x1910eaba, 0x3bbfbbe1), - TOBN(0xae579685, 0x7677afc3), TOBN(0x49ea61f1, 0x73ff0b5c), - TOBN(0x78655478, 0x4f7c3922), TOBN(0x95d337cd, 0x20c68eef), - TOBN(0x68f1e1e5, 0xdf779ab9), TOBN(0x14b491b0, 0xb5cf69a8), - TOBN(0x7a6cbbe0, 0x28e3fe89), TOBN(0xe7e1fee4, 0xc5aac0eb), - TOBN(0x7f47eda5, 0x697e5140), TOBN(0x4f450137, 0xb454921f), - TOBN(0xdb625f84, 0x95cd8185), TOBN(0x74be0ba1, 0xcdb2e583), - TOBN(0xaee4fd7c, 0xdd5e6de4), TOBN(0x4251437d, 0xe8101739), - TOBN(0x686d72a0, 0xac620366), TOBN(0x4be3fb9c, 0xb6d59344), - TOBN(0x6e8b44e7, 0xa1eb75b9), TOBN(0x84e39da3, 0x91a5c10c), - TOBN(0x37cc1490, 0xb38f0409), TOBN(0x02951943, 0x2c2ade82), - TOBN(0x9b688783, 0x1190a2d8), TOBN(0x25627d14, 0x231182ba), - TOBN(0x6eb550aa, 0x658a6d87), TOBN(0x1405aaa7, 0xcf9c7325), - TOBN(0xd147142e, 0x5c8748c9), TOBN(0x7f637e4f, 0x53ede0e0), - TOBN(0xf8ca2776, 0x14ffad2c), TOBN(0xe58fb1bd, 0xbafb6791), - TOBN(0x17158c23, 0xbf8f93fc), TOBN(0x7f15b373, 0x0a4a4655), - TOBN(0x39d4add2, 0xd842ca72), TOBN(0xa71e4391, 0x3ed96305), - TOBN(0x5bb09cbe, 0x6700be14), TOBN(0x68d69d54, 0xd8befcf6), - TOBN(0xa45f5367, 0x37183bcf), TOBN(0x7152b7bb, 0x3370dff7), - TOBN(0xcf887baa, 0xbf12525b), TOBN(0xe7ac7bdd, 0xd6d1e3cd), - TOBN(0x25914f78, 0x81fdad90), TOBN(0xcf638f56, 0x0d2cf6ab), - TOBN(0xb90bc03f, 0xcc054de5), TOBN(0x932811a7, 0x18b06350), - TOBN(0x2f00b330, 0x9bbd11ff), TOBN(0x76108a6f, 0xb4044974), - TOBN(0x801bb9e0, 0xa851d266), TOBN(0x0dd099be, 0xbf8990c1), - TOBN(0x58c5aaaa, 0xabe32986), TOBN(0x0fe9dd2a, 0x50d59c27), - TOBN(0x84951ff4, 0x8d307305), TOBN(0x6c23f829, 0x86529b78), - TOBN(0x50bb2218, 0x0b136a79), TOBN(0x7e2174de, 0x77a20996), - TOBN(0x6f00a4b9, 0xc0bb4da6), TOBN(0x89a25a17, 0xefdde8da), - TOBN(0xf728a27e, 0xc11ee01d), TOBN(0xf900553a, 0xe5f10dfb), - TOBN(0x189a83c8, 0x02ec893c), TOBN(0x3ca5bdc1, 0x23f66d77), - TOBN(0x98781537, 0x97eada9f), TOBN(0x59c50ab3, 0x10256230), - TOBN(0x346042d9, 0x323c69b3), TOBN(0x1b715a6d, 0x2c460449), - TOBN(0xa41dd476, 0x6ae06e0b), TOBN(0xcdd7888e, 0x9d42e25f), - TOBN(0x0f395f74, 0x56b25a20), TOBN(0xeadfe0ae, 0x8700e27e), - TOBN(0xb09d52a9, 0x69950093), TOBN(0x3525d9cb, 0x327f8d40), - TOBN(0xb8235a94, 0x67df886a), TOBN(0x77e4b0dd, 0x035faec2), - TOBN(0x115eb20a, 0x517d7061), TOBN(0x77fe3433, 0x6c2df683), - TOBN(0x6870ddc7, 0xcdc6fc67), TOBN(0xb1610588, 0x0b87de83), - TOBN(0x343584ca, 0xd9c4ddbe), TOBN(0xb3164f1c, 0x3d754be2), - TOBN(0x0731ed3a, 0xc1e6c894), TOBN(0x26327dec, 0x4f6b904c), - TOBN(0x9d49c6de, 0x97b5cd32), TOBN(0x40835dae, 0xb5eceecd), - TOBN(0xc66350ed, 0xd9ded7fe), TOBN(0x8aeebb5c, 0x7a678804), - TOBN(0x51d42fb7, 0x5b8ee9ec), TOBN(0xd7a17bdd, 0x8e3ca118), - TOBN(0x40d7511a, 0x2ef4400e), TOBN(0xc48990ac, 0x875a66f4), - TOBN(0x8de07d2a, 0x2199e347), TOBN(0xbee75556, 0x2a39e051), - TOBN(0x56918786, 0x916e51dc), TOBN(0xeb191313, 0x4a2d89ec), - TOBN(0x6679610d, 0x37d341ed), TOBN(0x434fbb41, 0x56d51c2b), - TOBN(0xe54b7ee7, 0xd7492dba), TOBN(0xaa33a79a, 0x59021493), - TOBN(0x49fc5054, 0xe4bd6d3d), TOBN(0x09540f04, 0x5ab551d0), - TOBN(0x8acc9085, 0x4942d3a6), TOBN(0x231af02f, 0x2d28323b), - TOBN(0x93458cac, 0x0992c163), TOBN(0x1fef8e71, 0x888e3bb4), - TOBN(0x27578da5, 0xbe8c268c), TOBN(0xcc8be792, 0xe805ec00), - TOBN(0x29267bae, 0xc61c3855), TOBN(0xebff429d, 0x58c1fd3b), - TOBN(0x22d886c0, 0x8c0b93b8), TOBN(0xca5e00b2, 0x2ddb8953), - TOBN(0xcf330117, 0xc3fed8b7), TOBN(0xd49ac6fa, 0x819c01f6), - TOBN(0x6ddaa6bd, 0x3c0fbd54), TOBN(0x91743068, 0x8049a2cf), - TOBN(0xd67f981e, 0xaff2ef81), TOBN(0xc3654d35, 0x2818ae80), - TOBN(0x81d05044, 0x1b2aa892), TOBN(0x2db067bf, 0x3d099328), - TOBN(0xe7c79e86, 0x703dcc97), TOBN(0xe66f9b37, 0xe133e215), - TOBN(0xcdf119a6, 0xe39a7a5c), TOBN(0x47c60de3, 0x876f1b61), - TOBN(0x6e405939, 0xd860f1b2), TOBN(0x3e9a1dbc, 0xf5ed4d4a), - TOBN(0x3f23619e, 0xc9b6bcbd), TOBN(0x5ee790cf, 0x734e4497), - TOBN(0xf0a834b1, 0x5bdaf9bb), TOBN(0x02cedda7, 0x4ca295f0), - TOBN(0x4619aa2b, 0xcb8e378c), TOBN(0xe5613244, 0xcc987ea4), - TOBN(0x0bc022cc, 0x76b23a50), TOBN(0x4a2793ad, 0x0a6c21ce), - TOBN(0x38328780, 0x89cac3f5), TOBN(0x29176f1b, 0xcba26d56), - TOBN(0x06296187, 0x4f6f59eb), TOBN(0x86e9bca9, 0x8bdc658e), - TOBN(0x2ca9c4d3, 0x57e30402), TOBN(0x5438b216, 0x516a09bb), - TOBN(0x0a6a063c, 0x7672765a), TOBN(0x37a3ce64, 0x0547b9bf), - TOBN(0x42c099c8, 0x98b1a633), TOBN(0xb5ab800d, 0x05ee6961), - TOBN(0xf1963f59, 0x11a5acd6), TOBN(0xbaee6157, 0x46201063), - TOBN(0x36d9a649, 0xa596210a), TOBN(0xaed04363, 0x1ba7138c), - TOBN(0xcf817d1c, 0xa4a82b76), TOBN(0x5586960e, 0xf3806be9), - TOBN(0x7ab67c89, 0x09dc6bb5), TOBN(0x52ace7a0, 0x114fe7eb), - TOBN(0xcd987618, 0xcbbc9b70), TOBN(0x4f06fd5a, 0x604ca5e1), - TOBN(0x90af14ca, 0x6dbde133), TOBN(0x1afe4322, 0x948a3264), - TOBN(0xa70d2ca6, 0xc44b2c6c), TOBN(0xab726799, 0x0ef87dfe), - TOBN(0x310f64dc, 0x2e696377), TOBN(0x49b42e68, 0x4c8126a0), - TOBN(0x0ea444c3, 0xcea0b176), TOBN(0x53a8ddf7, 0xcb269182), - TOBN(0xf3e674eb, 0xbbba9dcb), TOBN(0x0d2878a8, 0xd8669d33), - TOBN(0x04b935d5, 0xd019b6a3), TOBN(0xbb5cf88e, 0x406f1e46), - TOBN(0xa1912d16, 0x5b57c111), TOBN(0x9803fc21, 0x19ebfd78), - TOBN(0x4f231c9e, 0xc07764a9), TOBN(0xd93286ee, 0xb75bd055), - TOBN(0x83a9457d, 0x8ee6c9de), TOBN(0x04695915, 0x6087ec90), - TOBN(0x14c6dd8a, 0x58d6cd46), TOBN(0x9cb633b5, 0x8e6634d2), - TOBN(0xc1305047, 0xf81bc328), TOBN(0x12ede0e2, 0x26a177e5), - TOBN(0x332cca62, 0x065a6f4f), TOBN(0xc3a47ecd, 0x67be487b), - TOBN(0x741eb187, 0x0f47ed1c), TOBN(0x99e66e58, 0xe7598b14), - TOBN(0x6f0544ca, 0x63d0ff12), TOBN(0xe5efc784, 0xb610a05f), - TOBN(0xf72917b1, 0x7cad7b47), TOBN(0x3ff6ea20, 0xf2cac0c0), - TOBN(0xcc23791b, 0xf21db8b7), TOBN(0x7dac70b1, 0xd7d93565), - TOBN(0x682cda1d, 0x694bdaad), TOBN(0xeb88bb8c, 0x1023516d), - TOBN(0xc4c634b4, 0xdfdbeb1b), TOBN(0x22f5ca72, 0xb4ee4dea), - TOBN(0x1045a368, 0xe6524821), TOBN(0xed9e8a3f, 0x052b18b2), - TOBN(0x9b7f2cb1, 0xb961f49a), TOBN(0x7fee2ec1, 0x7b009670), - TOBN(0x350d8754, 0x22507a6d), TOBN(0x561bd711, 0x4db55f1d), - TOBN(0x4c189ccc, 0x320bbcaf), TOBN(0x568434cf, 0xdf1de48c), - TOBN(0x6af1b00e, 0x0fa8f128), TOBN(0xf0ba9d02, 0x8907583c), - TOBN(0x735a4004, 0x32ff9f60), TOBN(0x3dd8e4b6, 0xc25dcf33), - TOBN(0xf2230f16, 0x42c74cef), TOBN(0xd8117623, 0x013fa8ad), - TOBN(0x36822876, 0xf51fe76e), TOBN(0x8a6811cc, 0x11d62589), - TOBN(0xc3fc7e65, 0x46225718), TOBN(0xb7df2c9f, 0xc82fdbcd), - TOBN(0x3b1d4e52, 0xdd7b205b), TOBN(0xb6959478, 0x47a2e414), - TOBN(0x05e4d793, 0xefa91148), TOBN(0xb47ed446, 0xfd2e9675), - TOBN(0x1a7098b9, 0x04c9d9bf), TOBN(0x661e2881, 0x1b793048), - TOBN(0xb1a16966, 0xb01ee461), TOBN(0xbc521308, 0x2954746f), - TOBN(0xc909a0fc, 0x2477de50), TOBN(0xd80bb41c, 0x7dbd51ef), - TOBN(0xa85be7ec, 0x53294905), TOBN(0x6d465b18, 0x83958f97), - TOBN(0x16f6f330, 0xfb6840fd), TOBN(0xfaaeb214, 0x3401e6c8), - TOBN(0xaf83d30f, 0xccb5b4f8), TOBN(0x22885739, 0x266dec4b), - TOBN(0x51b4367c, 0x7bc467df), TOBN(0x926562e3, 0xd842d27a), - TOBN(0xdfcb6614, 0x0fea14a6), TOBN(0xeb394dae, 0xf2734cd9), - TOBN(0x3eeae5d2, 0x11c0be98), TOBN(0xb1e6ed11, 0x814e8165), - TOBN(0x191086bc, 0xe52bce1c), TOBN(0x14b74cc6, 0xa75a04da), - TOBN(0x63cf1186, 0x8c060985), TOBN(0x071047de, 0x2dbd7f7c), - TOBN(0x4e433b8b, 0xce0942ca), TOBN(0xecbac447, 0xd8fec61d), - TOBN(0x8f0ed0e2, 0xebf3232f), TOBN(0xfff80f9e, 0xc52a2edd), - TOBN(0xad9ab433, 0x75b55fdb), TOBN(0x73ca7820, 0xe42e0c11), - TOBN(0x6dace0a0, 0xe6251b46), TOBN(0x89bc6b5c, 0x4c0d932d), - TOBN(0x3438cd77, 0x095da19a), TOBN(0x2f24a939, 0x8d48bdfb), - TOBN(0x99b47e46, 0x766561b7), TOBN(0x736600e6, 0x0ed0322a), - TOBN(0x06a47cb1, 0x638e1865), TOBN(0x927c1c2d, 0xcb136000), - TOBN(0x29542337, 0x0cc5df69), TOBN(0x99b37c02, 0x09d649a9), - TOBN(0xc5f0043c, 0x6aefdb27), TOBN(0x6cdd9987, 0x1be95c27), - TOBN(0x69850931, 0x390420d2), TOBN(0x299c40ac, 0x0983efa4), - TOBN(0x3a05e778, 0xaf39aead), TOBN(0x84274408, 0x43a45193), - TOBN(0x6bcd0fb9, 0x91a711a0), TOBN(0x461592c8, 0x9f52ab17), - TOBN(0xb49302b4, 0xda3c6ed6), TOBN(0xc51fddc7, 0x330d7067), - TOBN(0x94babeb6, 0xda50d531), TOBN(0x521b840d, 0xa6a7b9da), - TOBN(0x5305151e, 0x404bdc89), TOBN(0x1bcde201, 0xd0d07449), - TOBN(0xf427a78b, 0x3b76a59a), TOBN(0xf84841ce, 0x07791a1b), - TOBN(0xebd314be, 0xbf91ed1c), TOBN(0x8e61d34c, 0xbf172943), - TOBN(0x1d5dc451, 0x5541b892), TOBN(0xb186ee41, 0xfc9d9e54), - TOBN(0x9d9f345e, 0xd5bf610d), TOBN(0x3e7ba65d, 0xf6acca9f), - TOBN(0x9dda787a, 0xa8369486), TOBN(0x09f9dab7, 0x8eb5ba53), - TOBN(0x5afb2033, 0xd6481bc3), TOBN(0x76f4ce30, 0xafa62104), - TOBN(0xa8fa00cf, 0xf4f066b5), TOBN(0x89ab5143, 0x461dafc2), - TOBN(0x44339ed7, 0xa3389998), TOBN(0x2ff862f1, 0xbc214903), - TOBN(0x2c88f985, 0xb05556e3), TOBN(0xcd96058e, 0x3467081e), - TOBN(0x7d6a4176, 0xedc637ea), TOBN(0xe1743d09, 0x36a5acdc), - TOBN(0x66fd72e2, 0x7eb37726), TOBN(0xf7fa264e, 0x1481a037), - TOBN(0x9fbd3bde, 0x45f4aa79), TOBN(0xed1e0147, 0x767c3e22), - TOBN(0x7621f979, 0x82e7abe2), TOBN(0x19eedc72, 0x45f633f8), - TOBN(0xe69b155e, 0x6137bf3a), TOBN(0xa0ad13ce, 0x414ee94e), - TOBN(0x93e3d524, 0x1c0e651a), TOBN(0xab1a6e2a, 0x02ce227e), - TOBN(0xe7af1797, 0x4ab27eca), TOBN(0x245446de, 0xbd444f39), - TOBN(0x59e22a21, 0x56c07613), TOBN(0x43deafce, 0xf4275498), - TOBN(0x10834ccb, 0x67fd0946), TOBN(0xa75841e5, 0x47406edf), - TOBN(0xebd6a677, 0x7b0ac93d), TOBN(0xa6e37b0d, 0x78f5e0d7), - TOBN(0x2516c096, 0x76f5492b), TOBN(0x1e4bf888, 0x9ac05f3a), - TOBN(0xcdb42ce0, 0x4df0ba2b), TOBN(0x935d5cfd, 0x5062341b), - TOBN(0x8a303333, 0x82acac20), TOBN(0x429438c4, 0x5198b00e), - TOBN(0x1d083bc9, 0x049d33fa), TOBN(0x58b82dda, 0x946f67ff), - TOBN(0xac3e2db8, 0x67a1d6a3), TOBN(0x62e6bead, 0x1798aac8), - TOBN(0xfc85980f, 0xde46c58c), TOBN(0xa7f69379, 0x69c8d7be), - TOBN(0x23557927, 0x837b35ec), TOBN(0x06a933d8, 0xe0790c0c), - TOBN(0x827c0e9b, 0x077ff55d), TOBN(0x53977798, 0xbb26e680), - TOBN(0x59530874, 0x1d9cb54f), TOBN(0xcca3f449, 0x4aac53ef), - TOBN(0x11dc5c87, 0xa07eda0f), TOBN(0xc138bccf, 0xfd6400c8), - TOBN(0x549680d3, 0x13e5da72), TOBN(0xc93eed82, 0x4540617e), - TOBN(0xfd3db157, 0x4d0b75c0), TOBN(0x9716eb42, 0x6386075b), - TOBN(0x0639605c, 0x817b2c16), TOBN(0x09915109, 0xf1e4f201), - TOBN(0x35c9a928, 0x5cca6c3b), TOBN(0xb25f7d1a, 0x3505c900), - TOBN(0xeb9f7d20, 0x630480c4), TOBN(0xc3c7b8c6, 0x2a1a501c), - TOBN(0x3f99183c, 0x5a1f8e24), TOBN(0xfdb118fa, 0x9dd255f0), - TOBN(0xb9b18b90, 0xc27f62a6), TOBN(0xe8f732f7, 0x396ec191), - TOBN(0x524a2d91, 0x0be786ab), TOBN(0x5d32adef, 0x0ac5a0f5), - TOBN(0x9b53d4d6, 0x9725f694), TOBN(0x032a76c6, 0x0510ba89), - TOBN(0x840391a3, 0xebeb1544), TOBN(0x44b7b88c, 0x3ed73ac3), - TOBN(0xd24bae7a, 0x256cb8b3), TOBN(0x7ceb151a, 0xe394cb12), - TOBN(0xbd6b66d0, 0x5bc1e6a8), TOBN(0xec70cecb, 0x090f07bf), - TOBN(0x270644ed, 0x7d937589), TOBN(0xee9e1a3d, 0x5f1dccfe), - TOBN(0xb0d40a84, 0x745b98d2), TOBN(0xda429a21, 0x2556ed40), - TOBN(0xf676eced, 0x85148cb9), TOBN(0x5a22d40c, 0xded18936), - TOBN(0x3bc4b9e5, 0x70e8a4ce), TOBN(0xbfd1445b, 0x9eae0379), - TOBN(0xf23f2c0c, 0x1a0bd47e), TOBN(0xa9c0bb31, 0xe1845531), - TOBN(0x9ddc4d60, 0x0a4c3f6b), TOBN(0xbdfaad79, 0x2c15ef44), - TOBN(0xce55a236, 0x7f484acc), TOBN(0x08653ca7, 0x055b1f15), - TOBN(0x2efa8724, 0x538873a3), TOBN(0x09299e5d, 0xace1c7e7), - TOBN(0x07afab66, 0xade332ba), TOBN(0x9be1fdf6, 0x92dd71b7), - TOBN(0xa49b5d59, 0x5758b11c), TOBN(0x0b852893, 0xc8654f40), - TOBN(0xb63ef6f4, 0x52379447), TOBN(0xd4957d29, 0x105e690c), - TOBN(0x7d484363, 0x646559b0), TOBN(0xf4a8273c, 0x49788a8e), - TOBN(0xee406cb8, 0x34ce54a9), TOBN(0x1e1c260f, 0xf86fda9b), - TOBN(0xe150e228, 0xcf6a4a81), TOBN(0x1fa3b6a3, 0x1b488772), - TOBN(0x1e6ff110, 0xc5a9c15b), TOBN(0xc6133b91, 0x8ad6aa47), - TOBN(0x8ac5d55c, 0x9dffa978), TOBN(0xba1d1c1d, 0x5f3965f2), - TOBN(0xf969f4e0, 0x7732b52f), TOBN(0xfceecdb5, 0xa5172a07), - TOBN(0xb0120a5f, 0x10f2b8f5), TOBN(0xc83a6cdf, 0x5c4c2f63), - TOBN(0x4d47a491, 0xf8f9c213), TOBN(0xd9e1cce5, 0xd3f1bbd5), - TOBN(0x0d91bc7c, 0xaba7e372), TOBN(0xfcdc74c8, 0xdfd1a2db), - TOBN(0x05efa800, 0x374618e5), TOBN(0x11216969, 0x15a7925e), - TOBN(0xd4c89823, 0xf6021c5d), TOBN(0x880d5e84, 0xeff14423), - TOBN(0x6523bc5a, 0x6dcd1396), TOBN(0xd1acfdfc, 0x113c978b), - TOBN(0xb0c164e8, 0xbbb66840), TOBN(0xf7f4301e, 0x72b58459), - TOBN(0xc29ad4a6, 0xa638e8ec), TOBN(0xf5ab8961, 0x46b78699), - TOBN(0x9dbd7974, 0x0e954750), TOBN(0x0121de88, 0x64f9d2c6), - TOBN(0x2e597b42, 0xd985232e), TOBN(0x55b6c3c5, 0x53451777), - TOBN(0xbb53e547, 0x519cb9fb), TOBN(0xf134019f, 0x8428600d), - TOBN(0x5a473176, 0xe081791a), TOBN(0x2f3e2263, 0x35fb0c08), - TOBN(0xb28c3017, 0x73d273b0), TOBN(0xccd21076, 0x7721ef9a), - TOBN(0x054cc292, 0xb650dc39), TOBN(0x662246de, 0x6188045e), - TOBN(0x904b52fa, 0x6b83c0d1), TOBN(0xa72df267, 0x97e9cd46), - TOBN(0x886b43cd, 0x899725e4), TOBN(0x2b651688, 0xd849ff22), - TOBN(0x60479b79, 0x02f34533), TOBN(0x5e354c14, 0x0c77c148), - TOBN(0xb4bb7581, 0xa8537c78), TOBN(0x188043d7, 0xefe1495f), - TOBN(0x9ba12f42, 0x8c1d5026), TOBN(0x2e0c8a26, 0x93d4aaab), - TOBN(0xbdba7b8b, 0xaa57c450), TOBN(0x140c9ad6, 0x9bbdafef), - TOBN(0x2067aa42, 0x25ac0f18), TOBN(0xf7b1295b, 0x04d1fbf3), - TOBN(0x14829111, 0xa4b04824), TOBN(0x2ce3f192, 0x33bd5e91), - TOBN(0x9c7a1d55, 0x8f2e1b72), TOBN(0xfe932286, 0x302aa243), - TOBN(0x497ca7b4, 0xd4be9554), TOBN(0xb8e821b8, 0xe0547a6e), - TOBN(0xfb2838be, 0x67e573e0), TOBN(0x05891db9, 0x4084c44b), - TOBN(0x91311373, 0x96c1c2c5), TOBN(0x6aebfa3f, 0xd958444b), - TOBN(0xac9cdce9, 0xe56e55c1), TOBN(0x7148ced3, 0x2caa46d0), - TOBN(0x2e10c7ef, 0xb61fe8eb), TOBN(0x9fd835da, 0xff97cf4d)}, - {TOBN(0xa36da109, 0x081e9387), TOBN(0xfb9780d7, 0x8c935828), - TOBN(0xd5940332, 0xe540b015), TOBN(0xc9d7b51b, 0xe0f466fa), - TOBN(0xfaadcd41, 0xd6d9f671), TOBN(0xba6c1e28, 0xb1a2ac17), - TOBN(0x066a7833, 0xed201e5f), TOBN(0x19d99719, 0xf90f462b), - TOBN(0xf431f462, 0x060b5f61), TOBN(0xa56f46b4, 0x7bd057c2), - TOBN(0x348dca6c, 0x47e1bf65), TOBN(0x9a38783e, 0x41bcf1ff), - TOBN(0x7a5d33a9, 0xda710718), TOBN(0x5a779987, 0x2e0aeaf6), - TOBN(0xca87314d, 0x2d29d187), TOBN(0xfa0edc3e, 0xc687d733), - TOBN(0x9df33621, 0x6a31e09b), TOBN(0xde89e44d, 0xc1350e35), - TOBN(0x29214871, 0x4ca0cf52), TOBN(0xdf379672, 0x0b88a538), - TOBN(0xc92a510a, 0x2591d61b), TOBN(0x79aa87d7, 0x585b447b), - TOBN(0xf67db604, 0xe5287f77), TOBN(0x1697c8bf, 0x5efe7a80), - TOBN(0x1c894849, 0xcb198ac7), TOBN(0xa884a93d, 0x0f264665), - TOBN(0x2da964ef, 0x9b200678), TOBN(0x3c351b87, 0x009834e6), - TOBN(0xafb2ef9f, 0xe2c4b44b), TOBN(0x580f6c47, 0x3326790c), - TOBN(0xb8480521, 0x0b02264a), TOBN(0x8ba6f9e2, 0x42a194e2), - TOBN(0xfc87975f, 0x8fb54738), TOBN(0x35160788, 0x27c3ead3), - TOBN(0x834116d2, 0xb74a085a), TOBN(0x53c99a73, 0xa62fe996), - TOBN(0x87585be0, 0x5b81c51b), TOBN(0x925bafa8, 0xbe0852b7), - TOBN(0x76a4fafd, 0xa84d19a7), TOBN(0x39a45982, 0x585206d4), - TOBN(0x499b6ab6, 0x5eb03c0e), TOBN(0xf19b7954, 0x72bc3fde), - TOBN(0xa86b5b9c, 0x6e3a80d2), TOBN(0xe4377508, 0x6d42819f), - TOBN(0xc1663650, 0xbb3ee8a3), TOBN(0x75eb14fc, 0xb132075f), - TOBN(0xa8ccc906, 0x7ad834f6), TOBN(0xea6a2474, 0xe6e92ffd), - TOBN(0x9d72fd95, 0x0f8d6758), TOBN(0xcb84e101, 0x408c07dd), - TOBN(0xb9114bfd, 0xa5e23221), TOBN(0x358b5fe2, 0xe94e742c), - TOBN(0x1c0577ec, 0x95f40e75), TOBN(0xf0155451, 0x3d73f3d6), - TOBN(0x9d55cd67, 0xbd1b9b66), TOBN(0x63e86e78, 0xaf8d63c7), - TOBN(0x39d934ab, 0xd3c095f1), TOBN(0x04b261be, 0xe4b76d71), - TOBN(0x1d2e6970, 0xe73e6984), TOBN(0x879fb23b, 0x5e5fcb11), - TOBN(0x11506c72, 0xdfd75490), TOBN(0x3a97d085, 0x61bcf1c1), - TOBN(0x43201d82, 0xbf5e7007), TOBN(0x7f0ac52f, 0x798232a7), - TOBN(0x2715cbc4, 0x6eb564d4), TOBN(0x8d6c752c, 0x9e570e29), - TOBN(0xf80247c8, 0x9ef5fd5d), TOBN(0xc3c66b46, 0xd53eb514), - TOBN(0x9666b401, 0x0f87de56), TOBN(0xce62c06f, 0xc6c603b5), - TOBN(0xae7b4c60, 0x7e4fc942), TOBN(0x38ac0b77, 0x663a9c19), - TOBN(0xcb4d20ee, 0x4b049136), TOBN(0x8b63bf12, 0x356a4613), - TOBN(0x1221aef6, 0x70e08128), TOBN(0xe62d8c51, 0x4acb6b16), - TOBN(0x71f64a67, 0x379e7896), TOBN(0xb25237a2, 0xcafd7fa5), - TOBN(0xf077bd98, 0x3841ba6a), TOBN(0xc4ac0244, 0x3cd16e7e), - TOBN(0x548ba869, 0x21fea4ca), TOBN(0xd36d0817, 0xf3dfdac1), - TOBN(0x09d8d71f, 0xf4685faf), TOBN(0x8eff66be, 0xc52c459a), - TOBN(0x182faee7, 0x0b57235e), TOBN(0xee3c39b1, 0x0106712b), - TOBN(0x5107331f, 0xc0fcdcb0), TOBN(0x669fb9dc, 0xa51054ba), - TOBN(0xb25101fb, 0x319d7682), TOBN(0xb0293129, 0x0a982fee), - TOBN(0x51c1c9b9, 0x0261b344), TOBN(0x0e008c5b, 0xbfd371fa), - TOBN(0xd866dd1c, 0x0278ca33), TOBN(0x666f76a6, 0xe5aa53b1), - TOBN(0xe5cfb779, 0x6013a2cf), TOBN(0x1d3a1aad, 0xa3521836), - TOBN(0xcedd2531, 0x73faa485), TOBN(0xc8ee6c4f, 0xc0a76878), - TOBN(0xddbccfc9, 0x2a11667d), TOBN(0x1a418ea9, 0x1c2f695a), - TOBN(0xdb11bd92, 0x51f73971), TOBN(0x3e4b3c82, 0xda2ed89f), - TOBN(0x9a44f3f4, 0xe73e0319), TOBN(0xd1e3de0f, 0x303431af), - TOBN(0x3c5604ff, 0x50f75f9c), TOBN(0x1d8eddf3, 0x7e752b22), - TOBN(0x0ef074dd, 0x3c9a1118), TOBN(0xd0ffc172, 0xccb86d7b), - TOBN(0xabd1ece3, 0x037d90f2), TOBN(0xe3f307d6, 0x6055856c), - TOBN(0x422f9328, 0x7e4c6daf), TOBN(0x902aac66, 0x334879a0), - TOBN(0xb6a1e7bf, 0x94cdfade), TOBN(0x6c97e1ed, 0x7fc6d634), - TOBN(0x662ad24d, 0xa2fb63f8), TOBN(0xf81be1b9, 0xa5928405), - TOBN(0x86d765e4, 0xd14b4206), TOBN(0xbecc2e0e, 0x8fa0db65), - TOBN(0xa28838e0, 0xb17fc76c), TOBN(0xe49a602a, 0xe37cf24e), - TOBN(0x76b4131a, 0x567193ec), TOBN(0xaf3c305a, 0xe5f6e70b), - TOBN(0x9587bd39, 0x031eebdd), TOBN(0x5709def8, 0x71bbe831), - TOBN(0x57059983, 0x0eb2b669), TOBN(0x4d80ce1b, 0x875b7029), - TOBN(0x838a7da8, 0x0364ac16), TOBN(0x2f431d23, 0xbe1c83ab), - TOBN(0xe56812a6, 0xf9294dd3), TOBN(0xb448d01f, 0x9b4b0d77), - TOBN(0xf3ae6061, 0x04e8305c), TOBN(0x2bead645, 0x94d8c63e), - TOBN(0x0a85434d, 0x84fd8b07), TOBN(0x537b983f, 0xf7a9dee5), - TOBN(0xedcc5f18, 0xef55bd85), TOBN(0x2041af62, 0x21c6cf8b), - TOBN(0x8e52874c, 0xb940c71e), TOBN(0x211935a9, 0xdb5f4b3a), - TOBN(0x94350492, 0x301b1dc3), TOBN(0x33d2646d, 0x29958620), - TOBN(0x16b0d64b, 0xef911404), TOBN(0x9d1f25ea, 0x9a3c5ef4), - TOBN(0x20f200eb, 0x4a352c78), TOBN(0x43929f2c, 0x4bd0b428), - TOBN(0xa5656667, 0xc7196e29), TOBN(0x7992c2f0, 0x9391be48), - TOBN(0xaaa97cbd, 0x9ee0cd6e), TOBN(0x51b0310c, 0x3dc8c9bf), - TOBN(0x237f8acf, 0xdd9f22cb), TOBN(0xbb1d81a1, 0xb585d584), - TOBN(0x8d5d85f5, 0x8c416388), TOBN(0x0d6e5a5a, 0x42fe474f), - TOBN(0xe7812766, 0x38235d4e), TOBN(0x1c62bd67, 0x496e3298), - TOBN(0x8378660c, 0x3f175bc8), TOBN(0x4d04e189, 0x17afdd4d), - TOBN(0x32a81601, 0x85a8068c), TOBN(0xdb58e4e1, 0x92b29a85), - TOBN(0xe8a65b86, 0xc70d8a3b), TOBN(0x5f0e6f4e, 0x98a0403b), - TOBN(0x08129684, 0x69ed2370), TOBN(0x34dc30bd, 0x0871ee26), - TOBN(0x3a5ce948, 0x7c9c5b05), TOBN(0x7d487b80, 0x43a90c87), - TOBN(0x4089ba37, 0xdd0e7179), TOBN(0x45f80191, 0xb4041811), - TOBN(0x1c3e1058, 0x98747ba5), TOBN(0x98c4e13a, 0x6e1ae592), - TOBN(0xd44636e6, 0xe82c9f9e), TOBN(0x711db87c, 0xc33a1043), - TOBN(0x6f431263, 0xaa8aec05), TOBN(0x43ff120d, 0x2744a4aa), - TOBN(0xd3bd892f, 0xae77779b), TOBN(0xf0fe0cc9, 0x8cdc9f82), - TOBN(0xca5f7fe6, 0xf1c5b1bc), TOBN(0xcc63a682, 0x44929a72), - TOBN(0xc7eaba0c, 0x09dbe19a), TOBN(0x2f3585ad, 0x6b5c73c2), - TOBN(0x8ab8924b, 0x0ae50c30), TOBN(0x17fcd27a, 0x638b30ba), - TOBN(0xaf414d34, 0x10b3d5a5), TOBN(0x09c107d2, 0x2a9accf1), - TOBN(0x15dac49f, 0x946a6242), TOBN(0xaec3df2a, 0xd707d642), - TOBN(0x2c2492b7, 0x3f894ae0), TOBN(0xf59df3e5, 0xb75f18ce), - TOBN(0x7cb740d2, 0x8f53cad0), TOBN(0x3eb585fb, 0xc4f01294), - TOBN(0x17da0c86, 0x32c7f717), TOBN(0xeb8c795b, 0xaf943f4c), - TOBN(0x4ee23fb5, 0xf67c51d2), TOBN(0xef187575, 0x68889949), - TOBN(0xa6b4bdb2, 0x0389168b), TOBN(0xc4ecd258, 0xea577d03), - TOBN(0x3a63782b, 0x55743082), TOBN(0x6f678f4c, 0xc72f08cd), - TOBN(0x553511cf, 0x65e58dd8), TOBN(0xd53b4e3e, 0xd402c0cd), - TOBN(0x37de3e29, 0xa037c14c), TOBN(0x86b6c516, 0xc05712aa), - TOBN(0x2834da3e, 0xb38dff6f), TOBN(0xbe012c52, 0xea636be8), - TOBN(0x292d238c, 0x61dd37f8), TOBN(0x0e54523f, 0x8f8142db), - TOBN(0xe31eb436, 0x036a05d8), TOBN(0x83e3cdff, 0x1e93c0ff), - TOBN(0x3fd2fe0f, 0x50821ddf), TOBN(0xc8e19b0d, 0xff9eb33b), - TOBN(0xc8cc943f, 0xb569a5fe), TOBN(0xad0090d4, 0xd4342d75), - TOBN(0x82090b4b, 0xcaeca000), TOBN(0xca39687f, 0x1bd410eb), - TOBN(0xe7bb0df7, 0x65959d77), TOBN(0x39d78218, 0x9c964999), - TOBN(0xd87f62e8, 0xb2415451), TOBN(0xe5efb774, 0xbed76108), - TOBN(0x3ea011a4, 0xe822f0d0), TOBN(0xbc647ad1, 0x5a8704f8), - TOBN(0xbb315b35, 0x50c6820f), TOBN(0x863dec3d, 0xb7e76bec), - TOBN(0x01ff5d3a, 0xf017bfc7), TOBN(0x20054439, 0x976b8229), - TOBN(0x067fca37, 0x0bbd0d3b), TOBN(0xf63dde64, 0x7f5e3d0f), - TOBN(0x22dbefb3, 0x2a4c94e9), TOBN(0xafbff0fe, 0x96f8278a), - TOBN(0x80aea0b1, 0x3503793d), TOBN(0xb2238029, 0x5f06cd29), - TOBN(0x65703e57, 0x8ec3feca), TOBN(0x06c38314, 0x393e7053), - TOBN(0xa0b751eb, 0x7c6734c4), TOBN(0xd2e8a435, 0xc59f0f1e), - TOBN(0x147d9052, 0x5e9ca895), TOBN(0x2f4dd31e, 0x972072df), - TOBN(0xa16fda8e, 0xe6c6755c), TOBN(0xc66826ff, 0xcf196558), - TOBN(0x1f1a76a3, 0x0cf43895), TOBN(0xa9d604e0, 0x83c3097b), - TOBN(0xe1908309, 0x66390e0e), TOBN(0xa50bf753, 0xb3c85eff), - TOBN(0x0696bdde, 0xf6a70251), TOBN(0x548b801b, 0x3c6ab16a), - TOBN(0x37fcf704, 0xa4d08762), TOBN(0x090b3def, 0xdff76c4e), - TOBN(0x87e8cb89, 0x69cb9158), TOBN(0x44a90744, 0x995ece43), - TOBN(0xf85395f4, 0x0ad9fbf5), TOBN(0x49b0f6c5, 0x4fb0c82d), - TOBN(0x75d9bc15, 0xadf7cccf), TOBN(0x81a3e5d6, 0xdfa1e1b0), - TOBN(0x8c39e444, 0x249bc17e), TOBN(0xf37dccb2, 0x8ea7fd43), - TOBN(0xda654873, 0x907fba12), TOBN(0x35daa6da, 0x4a372904), - TOBN(0x0564cfc6, 0x6283a6c5), TOBN(0xd09fa4f6, 0x4a9395bf), - TOBN(0x688e9ec9, 0xaeb19a36), TOBN(0xd913f1ce, 0xc7bfbfb4), - TOBN(0x797b9a3c, 0x61c2faa6), TOBN(0x2f979bec, 0x6a0a9c12), - TOBN(0xb5969d0f, 0x359679ec), TOBN(0xebcf523d, 0x079b0460), - TOBN(0xfd6b0008, 0x10fab870), TOBN(0x3f2edcda, 0x9373a39c), - TOBN(0x0d64f9a7, 0x6f568431), TOBN(0xf848c27c, 0x02f8898c), - TOBN(0xf418ade1, 0x260b5bd5), TOBN(0xc1f3e323, 0x6973dee8), - TOBN(0x46e9319c, 0x26c185dd), TOBN(0x6d85b7d8, 0x546f0ac4), - TOBN(0x427965f2, 0x247f9d57), TOBN(0xb519b636, 0xb0035f48), - TOBN(0x6b6163a9, 0xab87d59c), TOBN(0xff9f58c3, 0x39caaa11), - TOBN(0x4ac39cde, 0x3177387b), TOBN(0x5f6557c2, 0x873e77f9), - TOBN(0x67504006, 0x36a83041), TOBN(0x9b1c96ca, 0x75ef196c), - TOBN(0xf34283de, 0xb08c7940), TOBN(0x7ea09644, 0x1128c316), - TOBN(0xb510b3b5, 0x6aa39dff), TOBN(0x59b43da2, 0x9f8e4d8c), - TOBN(0xa8ce31fd, 0x9e4c4b9f), TOBN(0x0e20be26, 0xc1303c01), - TOBN(0x18187182, 0xe8ee47c9), TOBN(0xd9687cdb, 0x7db98101), - TOBN(0x7a520e4d, 0xa1e14ff6), TOBN(0x429808ba, 0x8836d572), - TOBN(0xa37ca60d, 0x4944b663), TOBN(0xf901f7a9, 0xa3f91ae5), - TOBN(0xe4e3e76e, 0x9e36e3b1), TOBN(0x9aa219cf, 0x29d93250), - TOBN(0x347fe275, 0x056a2512), TOBN(0xa4d643d9, 0xde65d95c), - TOBN(0x9669d396, 0x699fc3ed), TOBN(0xb598dee2, 0xcf8c6bbe), - TOBN(0x682ac1e5, 0xdda9e5c6), TOBN(0x4e0d3c72, 0xcaa9fc95), - TOBN(0x17faaade, 0x772bea44), TOBN(0x5ef8428c, 0xab0009c8), - TOBN(0xcc4ce47a, 0x460ff016), TOBN(0xda6d12bf, 0x725281cb), - TOBN(0x44c67848, 0x0223aad2), TOBN(0x6e342afa, 0x36256e28), - TOBN(0x1400bb0b, 0x93a37c04), TOBN(0x62b1bc9b, 0xdd10bd96), - TOBN(0x7251adeb, 0x0dac46b7), TOBN(0x7d33b92e, 0x7be4ef51), - TOBN(0x28b2a94b, 0xe61fa29a), TOBN(0x4b2be13f, 0x06422233), - TOBN(0x36d6d062, 0x330d8d37), TOBN(0x5ef80e1e, 0xb28ca005), - TOBN(0x174d4699, 0x6d16768e), TOBN(0x9fc4ff6a, 0x628bf217), - TOBN(0x77705a94, 0x154e490d), TOBN(0x9d96dd28, 0x8d2d997a), - TOBN(0x77e2d9d8, 0xce5d72c4), TOBN(0x9d06c5a4, 0xc11c714f), - TOBN(0x02aa5136, 0x79e4a03e), TOBN(0x1386b3c2, 0x030ff28b), - TOBN(0xfe82e8a6, 0xfb283f61), TOBN(0x7df203e5, 0xf3abc3fb), - TOBN(0xeec7c351, 0x3a4d3622), TOBN(0xf7d17dbf, 0xdf762761), - TOBN(0xc3956e44, 0x522055f0), TOBN(0xde3012db, 0x8fa748db), - TOBN(0xca9fcb63, 0xbf1dcc14), TOBN(0xa56d9dcf, 0xbe4e2f3a), - TOBN(0xb86186b6, 0x8bcec9c2), TOBN(0x7cf24df9, 0x680b9f06), - TOBN(0xc46b45ea, 0xc0d29281), TOBN(0xfff42bc5, 0x07b10e12), - TOBN(0x12263c40, 0x4d289427), TOBN(0x3d5f1899, 0xb4848ec4), - TOBN(0x11f97010, 0xd040800c), TOBN(0xb4c5f529, 0x300feb20), - TOBN(0xcc543f8f, 0xde94fdcb), TOBN(0xe96af739, 0xc7c2f05e), - TOBN(0xaa5e0036, 0x882692e1), TOBN(0x09c75b68, 0x950d4ae9), - TOBN(0x62f63df2, 0xb5932a7a), TOBN(0x2658252e, 0xde0979ad), - TOBN(0x2a19343f, 0xb5e69631), TOBN(0x718c7501, 0x525b666b), - TOBN(0x26a42d69, 0xea40dc3a), TOBN(0xdc84ad22, 0xaecc018f), - TOBN(0x25c36c7b, 0x3270f04a), TOBN(0x46ba6d47, 0x50fa72ed), - TOBN(0x6c37d1c5, 0x93e58a8e), TOBN(0xa2394731, 0x120c088c), - TOBN(0xc3be4263, 0xcb6e86da), TOBN(0x2c417d36, 0x7126d038), - TOBN(0x5b70f9c5, 0x8b6f8efa), TOBN(0x671a2faa, 0x37718536), - TOBN(0xd3ced3c6, 0xb539c92b), TOBN(0xe56f1bd9, 0xa31203c2), - TOBN(0x8b096ec4, 0x9ff3c8eb), TOBN(0x2deae432, 0x43491cea), - TOBN(0x2465c6eb, 0x17943794), TOBN(0x5d267e66, 0x20586843), - TOBN(0x9d3d116d, 0xb07159d0), TOBN(0xae07a67f, 0xc1896210), - TOBN(0x8fc84d87, 0xbb961579), TOBN(0x30009e49, 0x1c1f8dd6), - TOBN(0x8a8caf22, 0xe3132819), TOBN(0xcffa197c, 0xf23ab4ff), - TOBN(0x58103a44, 0x205dd687), TOBN(0x57b796c3, 0x0ded67a2), - TOBN(0x0b9c3a6c, 0xa1779ad7), TOBN(0xa33cfe2e, 0x357c09c5), - TOBN(0x2ea29315, 0x3db4a57e), TOBN(0x91959695, 0x8ebeb52e), - TOBN(0x118db9a6, 0xe546c879), TOBN(0x8e996df4, 0x6295c8d6), - TOBN(0xdd990484, 0x55ec806b), TOBN(0x24f291ca, 0x165c1035), - TOBN(0xcca523bb, 0x440e2229), TOBN(0x324673a2, 0x73ef4d04), - TOBN(0xaf3adf34, 0x3e11ec39), TOBN(0x6136d7f1, 0xdc5968d3), - TOBN(0x7a7b2899, 0xb053a927), TOBN(0x3eaa2661, 0xae067ecd), - TOBN(0x8549b9c8, 0x02779cd9), TOBN(0x061d7940, 0xc53385ea), - TOBN(0x3e0ba883, 0xf06d18bd), TOBN(0x4ba6de53, 0xb2700843), - TOBN(0xb966b668, 0x591a9e4d), TOBN(0x93f67567, 0x7f4fa0ed), - TOBN(0x5a02711b, 0x4347237b), TOBN(0xbc041e2f, 0xe794608e), - TOBN(0x55af10f5, 0x70f73d8c), TOBN(0xd2d4d4f7, 0xbb7564f7), - TOBN(0xd7d27a89, 0xb3e93ce7), TOBN(0xf7b5a875, 0x5d3a2c1b), - TOBN(0xb29e68a0, 0x255b218a), TOBN(0xb533837e, 0x8af76754), - TOBN(0xd1b05a73, 0x579fab2e), TOBN(0xb41055a1, 0xecd74385), - TOBN(0xb2369274, 0x445e9115), TOBN(0x2972a7c4, 0xf520274e), - TOBN(0x6c08334e, 0xf678e68a), TOBN(0x4e4160f0, 0x99b057ed), - TOBN(0x3cfe11b8, 0x52ccb69a), TOBN(0x2fd1823a, 0x21c8f772), - TOBN(0xdf7f072f, 0x3298f055), TOBN(0x8c0566f9, 0xfec74a6e), - TOBN(0xe549e019, 0x5bb4d041), TOBN(0x7c3930ba, 0x9208d850), - TOBN(0xe07141fc, 0xaaa2902b), TOBN(0x539ad799, 0xe4f69ad3), - TOBN(0xa6453f94, 0x813f9ffd), TOBN(0xc58d3c48, 0x375bc2f7), - TOBN(0xb3326fad, 0x5dc64e96), TOBN(0x3aafcaa9, 0xb240e354), - TOBN(0x1d1b0903, 0xaca1e7a9), TOBN(0x4ceb9767, 0x1211b8a0), - TOBN(0xeca83e49, 0xe32a858e), TOBN(0x4c32892e, 0xae907bad), - TOBN(0xd5b42ab6, 0x2eb9b494), TOBN(0x7fde3ee2, 0x1eabae1b), - TOBN(0x13b5ab09, 0xcaf54957), TOBN(0xbfb028be, 0xe5f5d5d5), - TOBN(0x928a0650, 0x2003e2c0), TOBN(0x90793aac, 0x67476843), - TOBN(0x5e942e79, 0xc81710a0), TOBN(0x557e4a36, 0x27ccadd4), - TOBN(0x72a2bc56, 0x4bcf6d0c), TOBN(0x09ee5f43, 0x26d7b80c), - TOBN(0x6b70dbe9, 0xd4292f19), TOBN(0x56f74c26, 0x63f16b18), - TOBN(0xc23db0f7, 0x35fbb42a), TOBN(0xb606bdf6, 0x6ae10040), - TOBN(0x1eb15d4d, 0x044573ac), TOBN(0x7dc3cf86, 0x556b0ba4), - TOBN(0x97af9a33, 0xc60df6f7), TOBN(0x0b1ef85c, 0xa716ce8c), - TOBN(0x2922f884, 0xc96958be), TOBN(0x7c32fa94, 0x35690963), - TOBN(0x2d7f667c, 0xeaa00061), TOBN(0xeaaf7c17, 0x3547365c), - TOBN(0x1eb4de46, 0x87032d58), TOBN(0xc54f3d83, 0x5e2c79e0), - TOBN(0x07818df4, 0x5d04ef23), TOBN(0x55faa9c8, 0x673d41b4), - TOBN(0xced64f6f, 0x89b95355), TOBN(0x4860d2ea, 0xb7415c84), - TOBN(0x5fdb9bd2, 0x050ebad3), TOBN(0xdb53e0cc, 0x6685a5bf), - TOBN(0xb830c031, 0x9feb6593), TOBN(0xdd87f310, 0x6accff17), - TOBN(0x2303ebab, 0x9f555c10), TOBN(0x94603695, 0x287e7065), - TOBN(0xf88311c3, 0x2e83358c), TOBN(0x508dd9b4, 0xeefb0178), - TOBN(0x7ca23706, 0x2dba8652), TOBN(0x62aac5a3, 0x0047abe5), - TOBN(0x9a61d2a0, 0x8b1ea7b3), TOBN(0xd495ab63, 0xae8b1485), - TOBN(0x38740f84, 0x87052f99), TOBN(0x178ebe5b, 0xb2974eea), - TOBN(0x030bbcca, 0x5b36d17f), TOBN(0xb5e4cce3, 0xaaf86eea), - TOBN(0xb51a0220, 0x68f8e9e0), TOBN(0xa4348796, 0x09eb3e75), - TOBN(0xbe592309, 0xeef1a752), TOBN(0x5d7162d7, 0x6f2aa1ed), - TOBN(0xaebfb5ed, 0x0f007dd2), TOBN(0x255e14b2, 0xc89edd22), - TOBN(0xba85e072, 0x0303b697), TOBN(0xc5d17e25, 0xf05720ff), - TOBN(0x02b58d6e, 0x5128ebb6), TOBN(0x2c80242d, 0xd754e113), - TOBN(0x919fca5f, 0xabfae1ca), TOBN(0x937afaac, 0x1a21459b), - TOBN(0x9e0ca91c, 0x1f66a4d2), TOBN(0x194cc7f3, 0x23ec1331), - TOBN(0xad25143a, 0x8aa11690), TOBN(0xbe40ad8d, 0x09b59e08), - TOBN(0x37d60d9b, 0xe750860a), TOBN(0x6c53b008, 0xc6bf434c), - TOBN(0xb572415d, 0x1356eb80), TOBN(0xb8bf9da3, 0x9578ded8), - TOBN(0x22658e36, 0x5e8fb38b), TOBN(0x9b70ce22, 0x5af8cb22), - TOBN(0x7c00018a, 0x829a8180), TOBN(0x84329f93, 0xb81ed295), - TOBN(0x7c343ea2, 0x5f3cea83), TOBN(0x38f8655f, 0x67586536), - TOBN(0xa661a0d0, 0x1d3ec517), TOBN(0x98744652, 0x512321ae), - TOBN(0x084ca591, 0xeca92598), TOBN(0xa9bb9dc9, 0x1dcb3feb), - TOBN(0x14c54355, 0x78b4c240), TOBN(0x5ed62a3b, 0x610cafdc), - TOBN(0x07512f37, 0x1b38846b), TOBN(0x571bb70a, 0xb0e38161), - TOBN(0xb556b95b, 0x2da705d2), TOBN(0x3ef8ada6, 0xb1a08f98), - TOBN(0x85302ca7, 0xddecfbe5), TOBN(0x0e530573, 0x943105cd), - TOBN(0x60554d55, 0x21a9255d), TOBN(0x63a32fa1, 0xf2f3802a), - TOBN(0x35c8c5b0, 0xcd477875), TOBN(0x97f458ea, 0x6ad42da1), - TOBN(0x832d7080, 0xeb6b242d), TOBN(0xd30bd023, 0x3b71e246), - TOBN(0x7027991b, 0xbe31139d), TOBN(0x68797e91, 0x462e4e53), - TOBN(0x423fe20a, 0x6b4e185a), TOBN(0x82f2c67e, 0x42d9b707), - TOBN(0x25c81768, 0x4cf7811b), TOBN(0xbd53005e, 0x045bb95d)}, - {TOBN(0xe5f649be, 0x9d8e68fd), TOBN(0xdb0f0533, 0x1b044320), - TOBN(0xf6fde9b3, 0xe0c33398), TOBN(0x92f4209b, 0x66c8cfae), - TOBN(0xe9d1afcc, 0x1a739d4b), TOBN(0x09aea75f, 0xa28ab8de), - TOBN(0x14375fb5, 0xeac6f1d0), TOBN(0x6420b560, 0x708f7aa5), - TOBN(0x9eae499c, 0x6254dc41), TOBN(0x7e293924, 0x7a837e7e), - TOBN(0x74aec08c, 0x090524a7), TOBN(0xf82b9219, 0x8d6f55f2), - TOBN(0x493c962e, 0x1402cec5), TOBN(0x9f17ca17, 0xfa2f30e7), - TOBN(0xbcd783e8, 0xe9b879cb), TOBN(0xea3d8c14, 0x5a6f145f), - TOBN(0xdede15e7, 0x5e0dee6e), TOBN(0x74f24872, 0xdc628aa2), - TOBN(0xd3e9c4fe, 0x7861bb93), TOBN(0x56d4822a, 0x6187b2e0), - TOBN(0xb66417cf, 0xc59826f9), TOBN(0xca260969, 0x2408169e), - TOBN(0xedf69d06, 0xc79ef885), TOBN(0x00031f8a, 0xdc7d138f), - TOBN(0x103c46e6, 0x0ebcf726), TOBN(0x4482b831, 0x6231470e), - TOBN(0x6f6dfaca, 0x487c2109), TOBN(0x2e0ace97, 0x62e666ef), - TOBN(0x3246a9d3, 0x1f8d1f42), TOBN(0x1b1e83f1, 0x574944d2), - TOBN(0x13dfa63a, 0xa57f334b), TOBN(0x0cf8daed, 0x9f025d81), - TOBN(0x30d78ea8, 0x00ee11c1), TOBN(0xeb053cd4, 0xb5e3dd75), - TOBN(0x9b65b13e, 0xd58c43c5), TOBN(0xc3ad49bd, 0xbd151663), - TOBN(0x99fd8e41, 0xb6427990), TOBN(0x12cf15bd, 0x707eae1e), - TOBN(0x29ad4f1b, 0x1aabb71e), TOBN(0x5143e74d, 0x07545d0e), - TOBN(0x30266336, 0xc88bdee1), TOBN(0x25f29306, 0x5876767c), - TOBN(0x9c078571, 0xc6731996), TOBN(0xc88690b2, 0xed552951), - TOBN(0x274f2c2d, 0x852705b4), TOBN(0xb0bf8d44, 0x4e09552d), - TOBN(0x7628beeb, 0x986575d1), TOBN(0x407be238, 0x7f864651), - TOBN(0x0e5e3049, 0xa639fc6b), TOBN(0xe75c35d9, 0x86003625), - TOBN(0x0cf35bd8, 0x5dcc1646), TOBN(0x8bcaced2, 0x6c26273a), - TOBN(0xe22ecf1d, 0xb5536742), TOBN(0x013dd897, 0x1a9e068b), - TOBN(0x17f411cb, 0x8a7909c5), TOBN(0x5757ac98, 0x861dd506), - TOBN(0x85de1f0d, 0x1e935abb), TOBN(0xdefd10b4, 0x154de37a), - TOBN(0xb8d9e392, 0x369cebb5), TOBN(0x54d5ef9b, 0x761324be), - TOBN(0x4d6341ba, 0x74f17e26), TOBN(0xc0a0e3c8, 0x78c1dde4), - TOBN(0xa6d77581, 0x87d918fd), TOBN(0x66876015, 0x02ca3a13), - TOBN(0xc7313e9c, 0xf36658f0), TOBN(0xc433ef1c, 0x71f8057e), - TOBN(0x85326246, 0x1b6a835a), TOBN(0xc8f05398, 0x7c86394c), - TOBN(0xff398cdf, 0xe983c4a1), TOBN(0xbf5e8162, 0x03b7b931), - TOBN(0x93193c46, 0xb7b9045b), TOBN(0x1e4ebf5d, 0xa4a6e46b), - TOBN(0xf9942a60, 0x43a24fe7), TOBN(0x29c1191e, 0xffb3492b), - TOBN(0x9f662449, 0x902fde05), TOBN(0xc792a7ac, 0x6713c32d), - TOBN(0x2fd88ad8, 0xb737982c), TOBN(0x7e3a0319, 0xa21e60e3), - TOBN(0x09b0de44, 0x7383591a), TOBN(0x6df141ee, 0x8310a456), - TOBN(0xaec1a039, 0xe6d6f471), TOBN(0x14b2ba0f, 0x1198d12e), - TOBN(0xebc1a160, 0x3aeee5ac), TOBN(0x401f4836, 0xe0b964ce), - TOBN(0x2ee43796, 0x4fd03f66), TOBN(0x3fdb4e49, 0xdd8f3f12), - TOBN(0x6ef267f6, 0x29380f18), TOBN(0x3e8e9670, 0x8da64d16), - TOBN(0xbc19180c, 0x207674f1), TOBN(0x112e09a7, 0x33ae8fdb), - TOBN(0x99667554, 0x6aaeb71e), TOBN(0x79432af1, 0xe101b1c7), - TOBN(0xd5eb558f, 0xde2ddec6), TOBN(0x81392d1f, 0x5357753f), - TOBN(0xa7a76b97, 0x3ae1158a), TOBN(0x416fbbff, 0x4a899991), - TOBN(0x9e65fdfd, 0x0d4a9dcf), TOBN(0x7bc29e48, 0x944ddf12), - TOBN(0xbc1a92d9, 0x3c856866), TOBN(0x273c6905, 0x6e98dfe2), - TOBN(0x69fce418, 0xcdfaa6b8), TOBN(0x606bd823, 0x5061c69f), - TOBN(0x42d495a0, 0x6af75e27), TOBN(0x8ed3d505, 0x6d873a1f), - TOBN(0xaf552841, 0x6ab25b6a), TOBN(0xc6c0ffc7, 0x2b1a4523), - TOBN(0xab18827b, 0x21c99e03), TOBN(0x060e8648, 0x9034691b), - TOBN(0x5207f90f, 0x93c7f398), TOBN(0x9f4a96cb, 0x82f8d10b), - TOBN(0xdd71cd79, 0x3ad0f9e3), TOBN(0x84f435d2, 0xfc3a54f5), - TOBN(0x4b03c55b, 0x8e33787f), TOBN(0xef42f975, 0xa6384673), - TOBN(0xff7304f7, 0x5051b9f0), TOBN(0x18aca1dc, 0x741c87c2), - TOBN(0x56f120a7, 0x2d4bfe80), TOBN(0xfd823b3d, 0x053e732c), - TOBN(0x11bccfe4, 0x7537ca16), TOBN(0xdf6c9c74, 0x1b5a996b), - TOBN(0xee7332c7, 0x904fc3fa), TOBN(0x14a23f45, 0xc7e3636a), - TOBN(0xc38659c3, 0xf091d9aa), TOBN(0x4a995e5d, 0xb12d8540), - TOBN(0x20a53bec, 0xf3a5598a), TOBN(0x56534b17, 0xb1eaa995), - TOBN(0x9ed3dca4, 0xbf04e03c), TOBN(0x716c563a, 0xd8d56268), - TOBN(0x27ba77a4, 0x1d6178e7), TOBN(0xe4c80c40, 0x68a1ff8e), - TOBN(0x75011099, 0x0a13f63d), TOBN(0x7bf33521, 0xa61d46f3), - TOBN(0x0aff218e, 0x10b365bb), TOBN(0x81021804, 0x0fd7ea75), - TOBN(0x05a3fd8a, 0xa4b3a925), TOBN(0xb829e75f, 0x9b3db4e6), - TOBN(0x6bdc75a5, 0x4d53e5fb), TOBN(0x04a5dc02, 0xd52717e3), - TOBN(0x86af502f, 0xe9a42ec2), TOBN(0x8867e8fb, 0x2630e382), - TOBN(0xbf845c6e, 0xbec9889b), TOBN(0x54f491f2, 0xcb47c98d), - TOBN(0xa3091fba, 0x790c2a12), TOBN(0xd7f6fd78, 0xc20f708b), - TOBN(0xa569ac30, 0xacde5e17), TOBN(0xd0f996d0, 0x6852b4d7), - TOBN(0xe51d4bb5, 0x4609ae54), TOBN(0x3fa37d17, 0x0daed061), - TOBN(0x62a88684, 0x34b8fb41), TOBN(0x99a2acbd, 0x9efb64f1), - TOBN(0xb75c1a5e, 0x6448e1f2), TOBN(0xfa99951a, 0x42b5a069), - TOBN(0x6d956e89, 0x2f3b26e7), TOBN(0xf4709860, 0xda875247), - TOBN(0x3ad15179, 0x2482dda3), TOBN(0xd64110e3, 0x017d82f0), - TOBN(0x14928d2c, 0xfad414e4), TOBN(0x2b155f58, 0x2ed02b24), - TOBN(0x481a141b, 0xcb821bf1), TOBN(0x12e3c770, 0x4f81f5da), - TOBN(0xe49c5de5, 0x9fff8381), TOBN(0x11053232, 0x5bbec894), - TOBN(0xa0d051cc, 0x454d88c4), TOBN(0x4f6db89c, 0x1f8e531b), - TOBN(0x34fe3fd6, 0xca563a44), TOBN(0x7f5c2215, 0x58da8ab9), - TOBN(0x8445016d, 0x9474f0a1), TOBN(0x17d34d61, 0xcb7d8a0a), - TOBN(0x8e9d3910, 0x1c474019), TOBN(0xcaff2629, 0xd52ceefb), - TOBN(0xf9cf3e32, 0xc1622c2b), TOBN(0xd4b95e3c, 0xe9071a05), - TOBN(0xfbbca61f, 0x1594438c), TOBN(0x1eb6e6a6, 0x04aadedf), - TOBN(0x853027f4, 0x68e14940), TOBN(0x221d322a, 0xdfabda9c), - TOBN(0xed8ea9f6, 0xb7cb179a), TOBN(0xdc7b764d, 0xb7934dcc), - TOBN(0xfcb13940, 0x5e09180d), TOBN(0x6629a6bf, 0xb47dc2dd), - TOBN(0xbfc55e4e, 0x9f5a915e), TOBN(0xb1db9d37, 0x6204441e), - TOBN(0xf82d68cf, 0x930c5f53), TOBN(0x17d3a142, 0xcbb605b1), - TOBN(0xdd5944ea, 0x308780f2), TOBN(0xdc8de761, 0x3845f5e4), - TOBN(0x6beaba7d, 0x7624d7a3), TOBN(0x1e709afd, 0x304df11e), - TOBN(0x95364376, 0x02170456), TOBN(0xbf204b3a, 0xc8f94b64), - TOBN(0x4e53af7c, 0x5680ca68), TOBN(0x0526074a, 0xe0c67574), - TOBN(0x95d8cef8, 0xecd92af6), TOBN(0xe6b9fa7a, 0x6cd1745a), - TOBN(0x3d546d3d, 0xa325c3e4), TOBN(0x1f57691d, 0x9ae93aae), - TOBN(0xe891f3fe, 0x9d2e1a33), TOBN(0xd430093f, 0xac063d35), - TOBN(0xeda59b12, 0x5513a327), TOBN(0xdc2134f3, 0x5536f18f), - TOBN(0xaa51fe2c, 0x5c210286), TOBN(0x3f68aaee, 0x1cab658c), - TOBN(0x5a23a00b, 0xf9357292), TOBN(0x9a626f39, 0x7efdabed), - TOBN(0xfe2b3bf3, 0x199d78e3), TOBN(0xb7a2af77, 0x71bbc345), - TOBN(0x3d19827a, 0x1e59802c), TOBN(0x823bbc15, 0xb487a51c), - TOBN(0x856139f2, 0x99d0a422), TOBN(0x9ac3df65, 0xf456c6fb), - TOBN(0xaddf65c6, 0x701f8bd6), TOBN(0x149f321e, 0x3758df87), - TOBN(0xb1ecf714, 0x721b7eba), TOBN(0xe17df098, 0x31a3312a), - TOBN(0xdb2fd6ec, 0xd5c4d581), TOBN(0xfd02996f, 0x8fcea1b3), - TOBN(0xe29fa63e, 0x7882f14f), TOBN(0xc9f6dc35, 0x07c6cadc), - TOBN(0x46f22d6f, 0xb882bed0), TOBN(0x1a45755b, 0xd118e52c), - TOBN(0x9f2c7c27, 0x7c4608cf), TOBN(0x7ccbdf32, 0x568012c2), - TOBN(0xfcb0aedd, 0x61729b0e), TOBN(0x7ca2ca9e, 0xf7d75dbf), - TOBN(0xf58fecb1, 0x6f640f62), TOBN(0xe274b92b, 0x39f51946), - TOBN(0x7f4dfc04, 0x6288af44), TOBN(0x0a91f32a, 0xeac329e5), - TOBN(0x43ad274b, 0xd6aaba31), TOBN(0x719a1640, 0x0f6884f9), - TOBN(0x685d29f6, 0xdaf91e20), TOBN(0x5ec1cc33, 0x27e49d52), - TOBN(0x38f4de96, 0x3b54a059), TOBN(0x0e0015e5, 0xefbcfdb3), - TOBN(0x177d23d9, 0x4dbb8da6), TOBN(0x98724aa2, 0x97a617ad), - TOBN(0x30f0885b, 0xfdb6558e), TOBN(0xf9f7a28a, 0xc7899a96), - TOBN(0xd2ae8ac8, 0x872dc112), TOBN(0xfa0642ca, 0x73c3c459), - TOBN(0x15296981, 0xe7dfc8d6), TOBN(0x67cd4450, 0x1fb5b94a), - TOBN(0x0ec71cf1, 0x0eddfd37), TOBN(0xc7e5eeb3, 0x9a8eddc7), - TOBN(0x02ac8e3d, 0x81d95028), TOBN(0x0088f172, 0x70b0e35d), - TOBN(0xec041fab, 0xe1881fe3), TOBN(0x62cf71b8, 0xd99e7faa), - TOBN(0x5043dea7, 0xe0f222c2), TOBN(0x309d42ac, 0x72e65142), - TOBN(0x94fe9ddd, 0x9216cd30), TOBN(0xd6539c7d, 0x0f87feec), - TOBN(0x03c5a57c, 0x432ac7d7), TOBN(0x72692cf0, 0x327fda10), - TOBN(0xec28c85f, 0x280698de), TOBN(0x2331fb46, 0x7ec283b1), - TOBN(0xd34bfa32, 0x2867e633), TOBN(0x78709a82, 0x0a9cc815), - TOBN(0xb7fe6964, 0x875e2fa5), TOBN(0x25cc064f, 0x9e98bfb5), - TOBN(0x9eb0151c, 0x493a65c5), TOBN(0x5fb5d941, 0x53182464), - TOBN(0x69e6f130, 0xf04618e2), TOBN(0xa8ecec22, 0xf89c8ab6), - TOBN(0xcd6ac88b, 0xb96209bd), TOBN(0x65fa8cdb, 0xb3e1c9e0), - TOBN(0xa47d22f5, 0x4a8d8eac), TOBN(0x83895cdf, 0x8d33f963), - TOBN(0xa8adca59, 0xb56cd3d1), TOBN(0x10c8350b, 0xdaf38232), - TOBN(0x2b161fb3, 0xa5080a9f), TOBN(0xbe7f5c64, 0x3af65b3a), - TOBN(0x2c754039, 0x97403a11), TOBN(0x94626cf7, 0x121b96af), - TOBN(0x431de7c4, 0x6a983ec2), TOBN(0x3780dd3a, 0x52cc3df7), - TOBN(0xe28a0e46, 0x2baf8e3b), TOBN(0xabe68aad, 0x51d299ae), - TOBN(0x603eb8f9, 0x647a2408), TOBN(0x14c61ed6, 0x5c750981), - TOBN(0x88b34414, 0xc53352e7), TOBN(0x5a34889c, 0x1337d46e), - TOBN(0x612c1560, 0xf95f2bc8), TOBN(0x8a3f8441, 0xd4807a3a), - TOBN(0x680d9e97, 0x5224da68), TOBN(0x60cd6e88, 0xc3eb00e9), - TOBN(0x3875a98e, 0x9a6bc375), TOBN(0xdc80f924, 0x4fd554c2), - TOBN(0x6c4b3415, 0x6ac77407), TOBN(0xa1e5ea8f, 0x25420681), - TOBN(0x541bfa14, 0x4607a458), TOBN(0x5dbc7e7a, 0x96d7fbf9), - TOBN(0x646a851b, 0x31590a47), TOBN(0x039e85ba, 0x15ee6df8), - TOBN(0xd19fa231, 0xd7b43fc0), TOBN(0x84bc8be8, 0x299a0e04), - TOBN(0x2b9d2936, 0xf20df03a), TOBN(0x24054382, 0x8608d472), - TOBN(0x76b6ba04, 0x9149202a), TOBN(0xb21c3831, 0x3670e7b7), - TOBN(0xddd93059, 0xd6fdee10), TOBN(0x9da47ad3, 0x78488e71), - TOBN(0x99cc1dfd, 0xa0fcfb25), TOBN(0x42abde10, 0x64696954), - TOBN(0x14cc15fc, 0x17eab9fe), TOBN(0xd6e863e4, 0xd3e70972), - TOBN(0x29a7765c, 0x6432112c), TOBN(0x88660001, 0x5b0774d8), - TOBN(0x3729175a, 0x2c088eae), TOBN(0x13afbcae, 0x8230b8d4), - TOBN(0x44768151, 0x915f4379), TOBN(0xf086431a, 0xd8d22812), - TOBN(0x37461955, 0xc298b974), TOBN(0x905fb5f0, 0xf8711e04), - TOBN(0x787abf3a, 0xfe969d18), TOBN(0x392167c2, 0x6f6a494e), - TOBN(0xfc7a0d2d, 0x28c511da), TOBN(0xf127c7dc, 0xb66a262d), - TOBN(0xf9c4bb95, 0xfd63fdf0), TOBN(0x90016589, 0x3913ef46), - TOBN(0x74d2a73c, 0x11aa600d), TOBN(0x2f5379bd, 0x9fb5ab52), - TOBN(0xe49e53a4, 0x7fb70068), TOBN(0x68dd39e5, 0x404aa9a7), - TOBN(0xb9b0cf57, 0x2ecaa9c3), TOBN(0xba0e103b, 0xe824826b), - TOBN(0x60c2198b, 0x4631a3c4), TOBN(0xc5ff84ab, 0xfa8966a2), - TOBN(0x2d6ebe22, 0xac95aff8), TOBN(0x1c9bb6db, 0xb5a46d09), - TOBN(0x419062da, 0x53ee4f8d), TOBN(0x7b9042d0, 0xbb97efef), - TOBN(0x0f87f080, 0x830cf6bd), TOBN(0x4861d19a, 0x6ec8a6c6), - TOBN(0xd3a0daa1, 0x202f01aa), TOBN(0xb0111674, 0xf25afbd5), - TOBN(0x6d00d6cf, 0x1afb20d9), TOBN(0x13695000, 0x40671bc5), - TOBN(0x913ab0dc, 0x2485ea9b), TOBN(0x1f2bed06, 0x9eef61ac), - TOBN(0x850c8217, 0x6d799e20), TOBN(0x93415f37, 0x3271c2de), - TOBN(0x5afb06e9, 0x6c4f5910), TOBN(0x688a52df, 0xc4e9e421), - TOBN(0x30495ba3, 0xe2a9a6db), TOBN(0x4601303d, 0x58f9268b), - TOBN(0xbe3b0dad, 0x7eb0f04f), TOBN(0x4ea47250, 0x4456936d), - TOBN(0x8caf8798, 0xd33fd3e7), TOBN(0x1ccd8a89, 0xeb433708), - TOBN(0x9effe3e8, 0x87fd50ad), TOBN(0xbe240a56, 0x6b29c4df), - TOBN(0xec4ffd98, 0xca0e7ebd), TOBN(0xf586783a, 0xe748616e), - TOBN(0xa5b00d8f, 0xc77baa99), TOBN(0x0acada29, 0xb4f34c9c), - TOBN(0x36dad67d, 0x0fe723ac), TOBN(0x1d8e53a5, 0x39c36c1e), - TOBN(0xe4dd342d, 0x1f4bea41), TOBN(0x64fd5e35, 0xebc9e4e0), - TOBN(0x96f01f90, 0x57908805), TOBN(0xb5b9ea3d, 0x5ed480dd), - TOBN(0x366c5dc2, 0x3efd2dd0), TOBN(0xed2fe305, 0x6e9dfa27), - TOBN(0x4575e892, 0x6e9197e2), TOBN(0x11719c09, 0xab502a5d), - TOBN(0x264c7bec, 0xe81f213f), TOBN(0x741b9241, 0x55f5c457), - TOBN(0x78ac7b68, 0x49a5f4f4), TOBN(0xf91d70a2, 0x9fc45b7d), - TOBN(0x39b05544, 0xb0f5f355), TOBN(0x11f06bce, 0xeef930d9), - TOBN(0xdb84d25d, 0x038d05e1), TOBN(0x04838ee5, 0xbacc1d51), - TOBN(0x9da3ce86, 0x9e8ee00b), TOBN(0xc3412057, 0xc36eda1f), - TOBN(0xae80b913, 0x64d9c2f4), TOBN(0x7468bac3, 0xa010a8ff), - TOBN(0xdfd20037, 0x37359d41), TOBN(0x1a0f5ab8, 0x15efeacc), - TOBN(0x7c25ad2f, 0x659d0ce0), TOBN(0x4011bcbb, 0x6785cff1), - TOBN(0x128b9912, 0x7e2192c7), TOBN(0xa549d8e1, 0x13ccb0e8), - TOBN(0x805588d8, 0xc85438b1), TOBN(0x5680332d, 0xbc25cb27), - TOBN(0xdcd1bc96, 0x1a4bfdf4), TOBN(0x779ff428, 0x706f6566), - TOBN(0x8bbee998, 0xf059987a), TOBN(0xf6ce8cf2, 0xcc686de7), - TOBN(0xf8ad3c4a, 0x953cfdb2), TOBN(0xd1d426d9, 0x2205da36), - TOBN(0xb3c0f13f, 0xc781a241), TOBN(0x3e89360e, 0xd75362a8), - TOBN(0xccd05863, 0xc8a91184), TOBN(0x9bd0c9b7, 0xefa8a7f4), - TOBN(0x97ee4d53, 0x8a912a4b), TOBN(0xde5e15f8, 0xbcf518fd), - TOBN(0x6a055bf8, 0xc467e1e0), TOBN(0x10be4b4b, 0x1587e256), - TOBN(0xd90c14f2, 0x668621c9), TOBN(0xd5518f51, 0xab9c92c1), - TOBN(0x8e6a0100, 0xd6d47b3c), TOBN(0xcbe980dd, 0x66716175), - TOBN(0x500d3f10, 0xddd83683), TOBN(0x3b6cb35d, 0x99cac73c), - TOBN(0x53730c8b, 0x6083d550), TOBN(0xcf159767, 0xdf0a1987), - TOBN(0x84bfcf53, 0x43ad73b3), TOBN(0x1b528c20, 0x4f035a94), - TOBN(0x4294edf7, 0x33eeac69), TOBN(0xb6283e83, 0x817f3240), - TOBN(0xc3fdc959, 0x0a5f25b1), TOBN(0xefaf8aa5, 0x5844ee22), - TOBN(0xde269ba5, 0xdbdde4de), TOBN(0xe3347160, 0xc56133bf), - TOBN(0xc1184219, 0x8d9ea9f8), TOBN(0x090de5db, 0xf3fc1ab5), - TOBN(0x404c37b1, 0x0bf22cda), TOBN(0x7de20ec8, 0xf5618894), - TOBN(0x754c588e, 0xecdaecab), TOBN(0x6ca4b0ed, 0x88342743), - TOBN(0x76f08bdd, 0xf4a938ec), TOBN(0xd182de89, 0x91493ccb), - TOBN(0xd652c53e, 0xc8a4186a), TOBN(0xb3e878db, 0x946d8e33), - TOBN(0x088453c0, 0x5f37663c), TOBN(0x5cd9daaa, 0xb407748b), - TOBN(0xa1f5197f, 0x586d5e72), TOBN(0x47500be8, 0xc443ca59), - TOBN(0x78ef35b2, 0xe2652424), TOBN(0x09c5d26f, 0x6dd7767d), - TOBN(0x7175a79a, 0xa74d3f7b), TOBN(0x0428fd8d, 0xcf5ea459), - TOBN(0x511cb97c, 0xa5d1746d), TOBN(0x36363939, 0xe71d1278), - TOBN(0xcf2df955, 0x10350bf4), TOBN(0xb3817439, 0x60aae782), - TOBN(0xa748c0e4, 0x3e688809), TOBN(0x98021fbf, 0xd7a5a006), - TOBN(0x9076a70c, 0x0e367a98), TOBN(0xbea1bc15, 0x0f62b7c2), - TOBN(0x2645a68c, 0x30fe0343), TOBN(0xacaffa78, 0x699dc14f), - TOBN(0xf4469964, 0x457bf9c4), TOBN(0x0db6407b, 0x0d2ead83), - TOBN(0x68d56cad, 0xb2c6f3eb), TOBN(0x3b512e73, 0xf376356c), - TOBN(0xe43b0e1f, 0xfce10408), TOBN(0x89ddc003, 0x5a5e257d), - TOBN(0xb0ae0d12, 0x0362e5b3), TOBN(0x07f983c7, 0xb0519161), - TOBN(0xc2e94d15, 0x5d5231e7), TOBN(0xcff22aed, 0x0b4f9513), - TOBN(0xb02588dd, 0x6ad0b0b5), TOBN(0xb967d1ac, 0x11d0dcd5), - TOBN(0x8dac6bc6, 0xcf777b6c), TOBN(0x0062bdbd, 0x4c6d1959), - TOBN(0x53da71b5, 0x0ef5cc85), TOBN(0x07012c7d, 0x4006f14f), - TOBN(0x4617f962, 0xac47800d), TOBN(0x53365f2b, 0xc102ed75), - TOBN(0xb422efcb, 0x4ab8c9d3), TOBN(0x195cb26b, 0x34af31c9), - TOBN(0x3a926e29, 0x05f2c4ce), TOBN(0xbd2bdecb, 0x9856966c), - TOBN(0x5d16ab3a, 0x85527015), TOBN(0x9f81609e, 0x4486c231), - TOBN(0xd8b96b2c, 0xda350002), TOBN(0xbd054690, 0xfa1b7d36), - TOBN(0xdc90ebf5, 0xe71d79bc), TOBN(0xf241b6f9, 0x08964e4e), - TOBN(0x7c838643, 0x2fe3cd4c), TOBN(0xe0f33acb, 0xb4bc633c), - TOBN(0xb4a9ecec, 0x3d139f1f), TOBN(0x05ce69cd, 0xdc4a1f49), - TOBN(0xa19d1b16, 0xf5f98aaf), TOBN(0x45bb71d6, 0x6f23e0ef), - TOBN(0x33789fcd, 0x46cdfdd3), TOBN(0x9b8e2978, 0xcee040ca), - TOBN(0x9c69b246, 0xae0a6828), TOBN(0xba533d24, 0x7078d5aa), - TOBN(0x7a2e42c0, 0x7bb4fbdb), TOBN(0xcfb4879a, 0x7035385c), - TOBN(0x8c3dd30b, 0x3281705b), TOBN(0x7e361c6c, 0x404fe081), - TOBN(0x7b21649c, 0x3f604edf), TOBN(0x5dbf6a3f, 0xe52ffe47), - TOBN(0xc41b7c23, 0x4b54d9bf), TOBN(0x1374e681, 0x3511c3d9), - TOBN(0x1863bf16, 0xc1b2b758), TOBN(0x90e78507, 0x1e9e6a96), - TOBN(0xab4bf98d, 0x5d86f174), TOBN(0xd74e0bd3, 0x85e96fe4), - TOBN(0x8afde39f, 0xcac5d344), TOBN(0x90946dbc, 0xbd91b847), - TOBN(0xf5b42358, 0xfe1a838c), TOBN(0x05aae6c5, 0x620ac9d8), - TOBN(0x8e193bd8, 0xa1ce5a0b), TOBN(0x8f710571, 0x4dabfd72), - TOBN(0x8d8fdd48, 0x182caaac), TOBN(0x8c4aeefa, 0x040745cf), - TOBN(0x73c6c30a, 0xf3b93e6d), TOBN(0x991241f3, 0x16f42011), - TOBN(0xa0158eea, 0xe457a477), TOBN(0xd19857db, 0xee6ddc05), - TOBN(0xb3265224, 0x18c41671), TOBN(0x3ffdfc7e, 0x3c2c0d58), - TOBN(0x3a3a5254, 0x26ee7cda), TOBN(0x341b0869, 0xdf02c3a8), - TOBN(0xa023bf42, 0x723bbfc8), TOBN(0x3d15002a, 0x14452691)}, - {TOBN(0x5ef7324c, 0x85edfa30), TOBN(0x25976554, 0x87d4f3da), - TOBN(0x352f5bc0, 0xdcb50c86), TOBN(0x8f6927b0, 0x4832a96c), - TOBN(0xd08ee1ba, 0x55f2f94c), TOBN(0x6a996f99, 0x344b45fa), - TOBN(0xe133cb8d, 0xa8aa455d), TOBN(0x5d0721ec, 0x758dc1f7), - TOBN(0x6ba7a920, 0x79e5fb67), TOBN(0xe1331feb, 0x70aa725e), - TOBN(0x5080ccf5, 0x7df5d837), TOBN(0xe4cae01d, 0x7ff72e21), - TOBN(0xd9243ee6, 0x0412a77d), TOBN(0x06ff7cac, 0xdf449025), - TOBN(0xbe75f7cd, 0x23ef5a31), TOBN(0xbc957822, 0x0ddef7a8), - TOBN(0x8cf7230c, 0xb0ce1c55), TOBN(0x5b534d05, 0x0bbfb607), - TOBN(0xee1ef113, 0x0e16363b), TOBN(0x27e0aa7a, 0xb4999e82), - TOBN(0xce1dac2d, 0x79362c41), TOBN(0x67920c90, 0x91bb6cb0), - TOBN(0x1e648d63, 0x2223df24), TOBN(0x0f7d9eef, 0xe32e8f28), - TOBN(0x6943f39a, 0xfa833834), TOBN(0x22951722, 0xa6328562), - TOBN(0x81d63dd5, 0x4170fc10), TOBN(0x9f5fa58f, 0xaecc2e6d), - TOBN(0xb66c8725, 0xe77d9a3b), TOBN(0x11235cea, 0x6384ebe0), - TOBN(0x06a8c118, 0x5845e24a), TOBN(0x0137b286, 0xebd093b1), - TOBN(0xc589e1ce, 0x44ace150), TOBN(0xe0f8d3d9, 0x4381e97c), - TOBN(0x59e99b11, 0x62c5a4b8), TOBN(0x90d262f7, 0xfd0ec9f9), - TOBN(0xfbc854c9, 0x283e13c9), TOBN(0x2d04fde7, 0xaedc7085), - TOBN(0x057d7765, 0x47dcbecb), TOBN(0x8dbdf591, 0x9a76fa5f), - TOBN(0xd0150695, 0x0de1e578), TOBN(0x2e1463e7, 0xe9f72bc6), - TOBN(0xffa68441, 0x1b39eca5), TOBN(0x673c8530, 0x7c037f2f), - TOBN(0xd0d6a600, 0x747f91da), TOBN(0xb08d43e1, 0xc9cb78e9), - TOBN(0x0fc0c644, 0x27b5cef5), TOBN(0x5c1d160a, 0xa60a2fd6), - TOBN(0xf98cae53, 0x28c8e13b), TOBN(0x375f10c4, 0xb2eddcd1), - TOBN(0xd4eb8b7f, 0x5cce06ad), TOBN(0xb4669f45, 0x80a2e1ef), - TOBN(0xd593f9d0, 0x5bbd8699), TOBN(0x5528a4c9, 0xe7976d13), - TOBN(0x3923e095, 0x1c7e28d3), TOBN(0xb9293790, 0x3f6bb577), - TOBN(0xdb567d6a, 0xc42bd6d2), TOBN(0x6df86468, 0xbb1f96ae), - TOBN(0x0efe5b1a, 0x4843b28e), TOBN(0x961bbb05, 0x6379b240), - TOBN(0xb6caf5f0, 0x70a6a26b), TOBN(0x70686c0d, 0x328e6e39), - TOBN(0x80da06cf, 0x895fc8d3), TOBN(0x804d8810, 0xb363fdc9), - TOBN(0xbe22877b, 0x207f1670), TOBN(0x9b0dd188, 0x4e615291), - TOBN(0x625ae8dc, 0x97a3c2bf), TOBN(0x08584ef7, 0x439b86e8), - TOBN(0xde7190a5, 0xdcd898ff), TOBN(0x26286c40, 0x2058ee3d), - TOBN(0x3db0b217, 0x5f87b1c1), TOBN(0xcc334771, 0x102a6db5), - TOBN(0xd99de954, 0x2f770fb1), TOBN(0x97c1c620, 0x4cd7535e), - TOBN(0xd3b6c448, 0x3f09cefc), TOBN(0xd725af15, 0x5a63b4f8), - TOBN(0x0c95d24f, 0xc01e20ec), TOBN(0xdfd37494, 0x9ae7121f), - TOBN(0x7d6ddb72, 0xec77b7ec), TOBN(0xfe079d3b, 0x0353a4ae), - TOBN(0x3066e70a, 0x2e6ac8d2), TOBN(0x9c6b5a43, 0x106e5c05), - TOBN(0x52d3c6f5, 0xede59b8c), TOBN(0x30d6a5c3, 0xfccec9ae), - TOBN(0xedec7c22, 0x4fc0a9ef), TOBN(0x190ff083, 0x95c16ced), - TOBN(0xbe12ec8f, 0x94de0fde), TOBN(0x0d131ab8, 0x852d3433), - TOBN(0x42ace07e, 0x85701291), TOBN(0x94793ed9, 0x194061a8), - TOBN(0x30e83ed6, 0xd7f4a485), TOBN(0x9eec7269, 0xf9eeff4d), - TOBN(0x90acba59, 0x0c9d8005), TOBN(0x5feca458, 0x1e79b9d1), - TOBN(0x8fbe5427, 0x1d506a1e), TOBN(0xa32b2c8e, 0x2439cfa7), - TOBN(0x1671c173, 0x73dd0b4e), TOBN(0x37a28214, 0x44a054c6), - TOBN(0x81760a1b, 0x4e8b53f1), TOBN(0xa6c04224, 0xf9f93b9e), - TOBN(0x18784b34, 0xcf671e3c), TOBN(0x81bbecd2, 0xcda9b994), - TOBN(0x38831979, 0xb2ab3848), TOBN(0xef54feb7, 0xf2e03c2d), - TOBN(0xcf197ca7, 0xfb8088fa), TOBN(0x01427247, 0x4ddc96c5), - TOBN(0xa2d2550a, 0x30777176), TOBN(0x53469898, 0x4d0cf71d), - TOBN(0x6ce937b8, 0x3a2aaac6), TOBN(0xe9f91dc3, 0x5af38d9b), - TOBN(0x2598ad83, 0xc8bf2899), TOBN(0x8e706ac9, 0xb5536c16), - TOBN(0x40dc7495, 0xf688dc98), TOBN(0x26490cd7, 0x124c4afc), - TOBN(0xe651ec84, 0x1f18775c), TOBN(0x393ea6c3, 0xb4fdaf4a), - TOBN(0x1e1f3343, 0x7f338e0d), TOBN(0x39fb832b, 0x6053e7b5), - TOBN(0x46e702da, 0x619e14d5), TOBN(0x859cacd1, 0xcdeef6e0), - TOBN(0x63b99ce7, 0x4462007d), TOBN(0xb8ab48a5, 0x4cb5f5b7), - TOBN(0x9ec673d2, 0xf55edde7), TOBN(0xd1567f74, 0x8cfaefda), - TOBN(0x46381b6b, 0x0887bcec), TOBN(0x694497ce, 0xe178f3c2), - TOBN(0x5e6525e3, 0x1e6266cb), TOBN(0x5931de26, 0x697d6413), - TOBN(0x87f8df7c, 0x0e58d493), TOBN(0xb1ae5ed0, 0x58b73f12), - TOBN(0xc368f784, 0xdea0c34d), TOBN(0x9bd0a120, 0x859a91a0), - TOBN(0xb00d88b7, 0xcc863c68), TOBN(0x3a1cc11e, 0x3d1f4d65), - TOBN(0xea38e0e7, 0x0aa85593), TOBN(0x37f13e98, 0x7dc4aee8), - TOBN(0x10d38667, 0xbc947bad), TOBN(0x738e07ce, 0x2a36ee2e), - TOBN(0xc93470cd, 0xc577fcac), TOBN(0xdee1b616, 0x2782470d), - TOBN(0x36a25e67, 0x2e793d12), TOBN(0xd6aa6cae, 0xe0f186da), - TOBN(0x474d0fd9, 0x80e07af7), TOBN(0xf7cdc47d, 0xba8a5cd4), - TOBN(0x28af6d9d, 0xab15247f), TOBN(0x7c789c10, 0x493a537f), - TOBN(0x7ac9b110, 0x23a334e7), TOBN(0x0236ac09, 0x12c9c277), - TOBN(0xa7e5bd25, 0x1d7a5144), TOBN(0x098b9c2a, 0xf13ec4ec), - TOBN(0x3639daca, 0xd3f0abca), TOBN(0x642da81a, 0xa23960f9), - TOBN(0x7d2e5c05, 0x4f7269b1), TOBN(0xfcf30777, 0xe287c385), - TOBN(0x10edc84f, 0xf2a46f21), TOBN(0x35441757, 0x4f43fa36), - TOBN(0xf1327899, 0xfd703431), TOBN(0xa438d7a6, 0x16dd587a), - TOBN(0x65c34c57, 0xe9c8352d), TOBN(0xa728edab, 0x5cc5a24e), - TOBN(0xaed78abc, 0x42531689), TOBN(0x0a51a0e8, 0x010963ef), - TOBN(0x5776fa0a, 0xd717d9b3), TOBN(0xf356c239, 0x7dd3428b), - TOBN(0x29903fff, 0x8d3a3dac), TOBN(0x409597fa, 0x3d94491f), - TOBN(0x4cd7a5ff, 0xbf4a56a4), TOBN(0xe5096474, 0x8adab462), - TOBN(0xa97b5126, 0x5c3427b0), TOBN(0x6401405c, 0xd282c9bd), - TOBN(0x3629f8d7, 0x222c5c45), TOBN(0xb1c02c16, 0xe8d50aed), - TOBN(0xbea2ed75, 0xd9635bc9), TOBN(0x226790c7, 0x6e24552f), - TOBN(0x3c33f2a3, 0x65f1d066), TOBN(0x2a43463e, 0x6dfccc2e), - TOBN(0x8cc3453a, 0xdb483761), TOBN(0xe7cc6085, 0x65d5672b), - TOBN(0x277ed6cb, 0xde3efc87), TOBN(0x19f2f368, 0x69234eaf), - TOBN(0x9aaf4317, 0x5c0b800b), TOBN(0x1f1e7c89, 0x8b6da6e2), - TOBN(0x6cfb4715, 0xb94ec75e), TOBN(0xd590dd5f, 0x453118c2), - TOBN(0x14e49da1, 0x1f17a34c), TOBN(0x5420ab39, 0x235a1456), - TOBN(0xb7637241, 0x2f50363b), TOBN(0x7b15d623, 0xc3fabb6e), - TOBN(0xa0ef40b1, 0xe274e49c), TOBN(0x5cf50744, 0x96b1860a), - TOBN(0xd6583fbf, 0x66afe5a4), TOBN(0x44240510, 0xf47e3e9a), - TOBN(0x99254343, 0x11b2d595), TOBN(0xf1367499, 0xeec8df57), - TOBN(0x3cb12c61, 0x3e73dd05), TOBN(0xd248c033, 0x7dac102a), - TOBN(0xcf154f13, 0xa77739f5), TOBN(0xbf4288cb, 0x23d2af42), - TOBN(0xaa64c9b6, 0x32e4a1cf), TOBN(0xee8c07a8, 0xc8a208f3), - TOBN(0xe10d4999, 0x6fe8393f), TOBN(0x0f809a3f, 0xe91f3a32), - TOBN(0x61096d1c, 0x802f63c8), TOBN(0x289e1462, 0x57750d3d), - TOBN(0xed06167e, 0x9889feea), TOBN(0xd5c9c0e2, 0xe0993909), - TOBN(0x46fca0d8, 0x56508ac6), TOBN(0x91826047, 0x4f1b8e83), - TOBN(0x4f2c877a, 0x9a4a2751), TOBN(0x71bd0072, 0xcae6fead), - TOBN(0x38df8dcc, 0x06aa1941), TOBN(0x5a074b4c, 0x63beeaa8), - TOBN(0xd6d65934, 0xc1cec8ed), TOBN(0xa6ecb49e, 0xaabc03bd), - TOBN(0xaade91c2, 0xde8a8415), TOBN(0xcfb0efdf, 0x691136e0), - TOBN(0x11af45ee, 0x23ab3495), TOBN(0xa132df88, 0x0b77463d), - TOBN(0x8923c15c, 0x815d06f4), TOBN(0xc3ceb3f5, 0x0d61a436), - TOBN(0xaf52291d, 0xe88fb1da), TOBN(0xea057974, 0x1da12179), - TOBN(0xb0d7218c, 0xd2fef720), TOBN(0x6c0899c9, 0x8e1d8845), - TOBN(0x98157504, 0x752ddad7), TOBN(0xd60bd74f, 0xa1a68a97), - TOBN(0x7047a3a9, 0xf658fb99), TOBN(0x1f5d86d6, 0x5f8511e4), - TOBN(0xb8a4bc42, 0x4b5a6d88), TOBN(0x69eb2c33, 0x1abefa7d), - TOBN(0x95bf39e8, 0x13c9c510), TOBN(0xf571960a, 0xd48aab43), - TOBN(0x7e8cfbcf, 0x704e23c6), TOBN(0xc71b7d22, 0x28aaa65b), - TOBN(0xa041b2bd, 0x245e3c83), TOBN(0x69b98834, 0xd21854ff), - TOBN(0x89d227a3, 0x963bfeec), TOBN(0x99947aaa, 0xde7da7cb), - TOBN(0x1d9ee9db, 0xee68a9b1), TOBN(0x0a08f003, 0x698ec368), - TOBN(0xe9ea4094, 0x78ef2487), TOBN(0xc8d2d415, 0x02cfec26), - TOBN(0xc52f9a6e, 0xb7dcf328), TOBN(0x0ed489e3, 0x85b6a937), - TOBN(0x9b94986b, 0xbef3366e), TOBN(0x0de59c70, 0xedddddb8), - TOBN(0xffdb748c, 0xeadddbe2), TOBN(0x9b9784bb, 0x8266ea40), - TOBN(0x142b5502, 0x1a93507a), TOBN(0xb4cd1187, 0x8d3c06cf), - TOBN(0xdf70e76a, 0x91ec3f40), TOBN(0x484e81ad, 0x4e7553c2), - TOBN(0x830f87b5, 0x272e9d6e), TOBN(0xea1c93e5, 0xc6ff514a), - TOBN(0x67cc2adc, 0xc4192a8e), TOBN(0xc77e27e2, 0x42f4535a), - TOBN(0x9cdbab36, 0xd2b713c5), TOBN(0x86274ea0, 0xcf7b0cd3), - TOBN(0x784680f3, 0x09af826b), TOBN(0xbfcc837a, 0x0c72dea3), - TOBN(0xa8bdfe9d, 0xd6529b73), TOBN(0x708aa228, 0x63a88002), - TOBN(0x6c7a9a54, 0xc91d45b9), TOBN(0xdf1a38bb, 0xfd004f56), - TOBN(0x2e8c9a26, 0xb8bad853), TOBN(0x2d52cea3, 0x3723eae7), - TOBN(0x054d6d81, 0x56ca2830), TOBN(0xa3317d14, 0x9a8dc411), - TOBN(0xa08662fe, 0xfd4ddeda), TOBN(0xed2a153a, 0xb55d792b), - TOBN(0x7035c16a, 0xbfc6e944), TOBN(0xb6bc5834, 0x00171cf3), - TOBN(0xe27152b3, 0x83d102b6), TOBN(0xfe695a47, 0x0646b848), - TOBN(0xa5bb09d8, 0x916e6d37), TOBN(0xb4269d64, 0x0d17015e), - TOBN(0x8d8156a1, 0x0a1d2285), TOBN(0xfeef6c51, 0x46d26d72), - TOBN(0x9dac57c8, 0x4c5434a7), TOBN(0x0282e5be, 0x59d39e31), - TOBN(0xedfff181, 0x721c486d), TOBN(0x301baf10, 0xbc58824e), - TOBN(0x8136a6aa, 0x00570031), TOBN(0x55aaf78c, 0x1cddde68), - TOBN(0x26829371, 0x59c63952), TOBN(0x3a3bd274, 0x8bc25baf), - TOBN(0xecdf8657, 0xb7e52dc3), TOBN(0x2dd8c087, 0xfd78e6c8), - TOBN(0x20553274, 0xf5531461), TOBN(0x8b4a1281, 0x5d95499b), - TOBN(0xe2c8763a, 0x1a80f9d2), TOBN(0xd1dbe32b, 0x4ddec758), - TOBN(0xaf12210d, 0x30c34169), TOBN(0xba74a953, 0x78baa533), - TOBN(0x3d133c6e, 0xa438f254), TOBN(0xa431531a, 0x201bef5b), - TOBN(0x15295e22, 0xf669d7ec), TOBN(0xca374f64, 0x357fb515), - TOBN(0x8a8406ff, 0xeaa3fdb3), TOBN(0x106ae448, 0xdf3f2da8), - TOBN(0x8f9b0a90, 0x33c8e9a1), TOBN(0x234645e2, 0x71ad5885), - TOBN(0x3d083224, 0x1c0aed14), TOBN(0xf10a7d3e, 0x7a942d46), - TOBN(0x7c11deee, 0x40d5c9be), TOBN(0xb2bae7ff, 0xba84ed98), - TOBN(0x93e97139, 0xaad58ddd), TOBN(0x3d872796, 0x3f6d1fa3), - TOBN(0x483aca81, 0x8569ff13), TOBN(0x8b89a5fb, 0x9a600f72), - TOBN(0x4cbc27c3, 0xc06f2b86), TOBN(0x22130713, 0x63ad9c0b), - TOBN(0xb5358b1e, 0x48ac2840), TOBN(0x18311294, 0xecba9477), - TOBN(0xda58f990, 0xa6946b43), TOBN(0x3098baf9, 0x9ab41819), - TOBN(0x66c4c158, 0x4198da52), TOBN(0xab4fc17c, 0x146bfd1b), - TOBN(0x2f0a4c3c, 0xbf36a908), TOBN(0x2ae9e34b, 0x58cf7838), - TOBN(0xf411529e, 0x3fa11b1f), TOBN(0x21e43677, 0x974af2b4), - TOBN(0x7c20958e, 0xc230793b), TOBN(0x710ea885, 0x16e840f3), - TOBN(0xfc0b21fc, 0xc5dc67cf), TOBN(0x08d51647, 0x88405718), - TOBN(0xd955c21f, 0xcfe49eb7), TOBN(0x9722a5d5, 0x56dd4a1f), - TOBN(0xc9ef50e2, 0xc861baa5), TOBN(0xc0c21a5d, 0x9505ac3e), - TOBN(0xaf6b9a33, 0x8b7c063f), TOBN(0xc6370339, 0x2f4779c1), - TOBN(0x22df99c7, 0x638167c3), TOBN(0xfe6ffe76, 0x795db30c), - TOBN(0x2b822d33, 0xa4854989), TOBN(0xfef031dd, 0x30563aa5), - TOBN(0x16b09f82, 0xd57c667f), TOBN(0xc70312ce, 0xcc0b76f1), - TOBN(0xbf04a9e6, 0xc9118aec), TOBN(0x82fcb419, 0x3409d133), - TOBN(0x1a8ab385, 0xab45d44d), TOBN(0xfba07222, 0x617b83a3), - TOBN(0xb05f50dd, 0x58e81b52), TOBN(0x1d8db553, 0x21ce5aff), - TOBN(0x3097b8d4, 0xe344a873), TOBN(0x7d8d116d, 0xfe36d53e), - TOBN(0x6db22f58, 0x7875e750), TOBN(0x2dc5e373, 0x43e144ea), - TOBN(0xc05f32e6, 0xe799eb95), TOBN(0xe9e5f4df, 0x6899e6ec), - TOBN(0xbdc3bd68, 0x1fab23d5), TOBN(0xb72b8ab7, 0x73af60e6), - TOBN(0x8db27ae0, 0x2cecc84a), TOBN(0x600016d8, 0x7bdb871c), - TOBN(0x42a44b13, 0xd7c46f58), TOBN(0xb8919727, 0xc3a77d39), - TOBN(0xcfc6bbbd, 0xdafd6088), TOBN(0x1a740146, 0x6bd20d39), - TOBN(0x8c747abd, 0x98c41072), TOBN(0x4c91e765, 0xbdf68ea1), - TOBN(0x7c95e5ca, 0x08819a78), TOBN(0xcf48b729, 0xc9587921), - TOBN(0x091c7c5f, 0xdebbcc7d), TOBN(0x6f287404, 0xf0e05149), - TOBN(0xf83b5ac2, 0x26cd44ec), TOBN(0x88ae32a6, 0xcfea250e), - TOBN(0x6ac5047a, 0x1d06ebc5), TOBN(0xc7e550b4, 0xd434f781), - TOBN(0x61ab1cf2, 0x5c727bd2), TOBN(0x2e4badb1, 0x1cf915b0), - TOBN(0x1b4dadec, 0xf69d3920), TOBN(0xe61b1ca6, 0xf14c1dfe), - TOBN(0x90b479cc, 0xbd6bd51f), TOBN(0x8024e401, 0x8045ec30), - TOBN(0xcab29ca3, 0x25ef0e62), TOBN(0x4f2e9416, 0x49e4ebc0), - TOBN(0x45eb40ec, 0x0ccced58), TOBN(0x25cd4b9c, 0x0da44f98), - TOBN(0x43e06458, 0x871812c6), TOBN(0x99f80d55, 0x16cef651), - TOBN(0x571340c9, 0xce6dc153), TOBN(0x138d5117, 0xd8665521), - TOBN(0xacdb45bc, 0x4e07014d), TOBN(0x2f34bb38, 0x84b60b91), - TOBN(0xf44a4fd2, 0x2ae8921e), TOBN(0xb039288e, 0x892ba1e2), - TOBN(0x9da50174, 0xb1c180b2), TOBN(0x6b70ab66, 0x1693dc87), - TOBN(0x7e9babc9, 0xe7057481), TOBN(0x4581ddef, 0x9c80dc41), - TOBN(0x0c890da9, 0x51294682), TOBN(0x0b5629d3, 0x3f4736e5), - TOBN(0x2340c79e, 0xb06f5b41), TOBN(0xa42e84ce, 0x4e243469), - TOBN(0xf9a20135, 0x045a71a9), TOBN(0xefbfb415, 0xd27b6fb6), - TOBN(0x25ebea23, 0x9d33cd6f), TOBN(0x9caedb88, 0xaa6c0af8), - TOBN(0x53dc7e9a, 0xd9ce6f96), TOBN(0x3897f9fd, 0x51e0b15a), - TOBN(0xf51cb1f8, 0x8e5d788e), TOBN(0x1aec7ba8, 0xe1d490ee), - TOBN(0x265991e0, 0xcc58cb3c), TOBN(0x9f306e8c, 0x9fc3ad31), - TOBN(0x5fed006e, 0x5040a0ac), TOBN(0xca9d5043, 0xfb476f2e), - TOBN(0xa19c06e8, 0xbeea7a23), TOBN(0xd2865801, 0x0edabb63), - TOBN(0xdb92293f, 0x6967469a), TOBN(0x2894d839, 0x8d8a8ed8), - TOBN(0x87c9e406, 0xbbc77122), TOBN(0x8671c6f1, 0x2ea3a26a), - TOBN(0xe42df8d6, 0xd7de9853), TOBN(0x2e3ce346, 0xb1f2bcc7), - TOBN(0xda601dfc, 0x899d50cf), TOBN(0xbfc913de, 0xfb1b598f), - TOBN(0x81c4909f, 0xe61f7908), TOBN(0x192e304f, 0x9bbc7b29), - TOBN(0xc3ed8738, 0xc104b338), TOBN(0xedbe9e47, 0x783f5d61), - TOBN(0x0c06e9be, 0x2db30660), TOBN(0xda3e613f, 0xc0eb7d8e), - TOBN(0xd8fa3e97, 0x322e096e), TOBN(0xfebd91e8, 0xd336e247), - TOBN(0x8f13ccc4, 0xdf655a49), TOBN(0xa9e00dfc, 0x5eb20210), - TOBN(0x84631d0f, 0xc656b6ea), TOBN(0x93a058cd, 0xd8c0d947), - TOBN(0x6846904a, 0x67bd3448), TOBN(0x4a3d4e1a, 0xf394fd5c), - TOBN(0xc102c1a5, 0xdb225f52), TOBN(0xe3455bba, 0xfc4f5e9a), - TOBN(0x6b36985b, 0x4b9ad1ce), TOBN(0xa9818536, 0x5bb7f793), - TOBN(0x6c25e1d0, 0x48b1a416), TOBN(0x1381dd53, 0x3c81bee7), - TOBN(0xd2a30d61, 0x7a4a7620), TOBN(0xc8412926, 0x39b8944c), - TOBN(0x3c1c6fbe, 0x7a97c33a), TOBN(0x941e541d, 0x938664e7), - TOBN(0x417499e8, 0x4a34f239), TOBN(0x15fdb83c, 0xb90402d5), - TOBN(0xb75f46bf, 0x433aa832), TOBN(0xb61e15af, 0x63215db1), - TOBN(0xaabe59d4, 0xa127f89a), TOBN(0x5d541e0c, 0x07e816da), - TOBN(0xaaba0659, 0xa618b692), TOBN(0x55327733, 0x17266026), - TOBN(0xaf53a0fc, 0x95f57552), TOBN(0x32947650, 0x6cacb0c9), - TOBN(0x253ff58d, 0xc821be01), TOBN(0xb0309531, 0xa06f1146), - TOBN(0x59bbbdf5, 0x05c2e54d), TOBN(0x158f27ad, 0x26e8dd22), - TOBN(0xcc5b7ffb, 0x397e1e53), TOBN(0xae03f65b, 0x7fc1e50d), - TOBN(0xa9784ebd, 0x9c95f0f9), TOBN(0x5ed9deb2, 0x24640771), - TOBN(0x31244af7, 0x035561c4), TOBN(0x87332f3a, 0x7ee857de), - TOBN(0x09e16e9e, 0x2b9e0d88), TOBN(0x52d910f4, 0x56a06049), - TOBN(0x507ed477, 0xa9592f48), TOBN(0x85cb917b, 0x2365d678), - TOBN(0xf8511c93, 0x4c8998d1), TOBN(0x2186a3f1, 0x730ea58f), - TOBN(0x50189626, 0xb2029db0), TOBN(0x9137a6d9, 0x02ceb75a), - TOBN(0x2fe17f37, 0x748bc82c), TOBN(0x87c2e931, 0x80469f8c), - TOBN(0x850f71cd, 0xbf891aa2), TOBN(0x0ca1b89b, 0x75ec3d8d), - TOBN(0x516c43aa, 0x5e1cd3cd), TOBN(0x89397808, 0x9a887c28), - TOBN(0x0059c699, 0xddea1f9f), TOBN(0x7737d6fa, 0x8e6868f7), - TOBN(0x6d93746a, 0x60f1524b), TOBN(0x36985e55, 0xba052aa7), - TOBN(0x41b1d322, 0xed923ea5), TOBN(0x3429759f, 0x25852a11), - TOBN(0xbeca6ec3, 0x092e9f41), TOBN(0x3a238c66, 0x62256bbd), - TOBN(0xd82958ea, 0x70ad487d), TOBN(0x4ac8aaf9, 0x65610d93), - TOBN(0x3fa101b1, 0x5e4ccab0), TOBN(0x9bf430f2, 0x9de14bfb), - TOBN(0xa10f5cc6, 0x6531899d), TOBN(0x590005fb, 0xea8ce17d), - TOBN(0xc437912f, 0x24544cb6), TOBN(0x9987b71a, 0xd79ac2e3), - TOBN(0x13e3d9dd, 0xc058a212), TOBN(0x00075aac, 0xd2de9606), - TOBN(0x80ab508b, 0x6cac8369), TOBN(0x87842be7, 0xf54f6c89), - TOBN(0xa7ad663d, 0x6bc532a4), TOBN(0x67813de7, 0x78a91bc8), - TOBN(0x5dcb61ce, 0xc3427239), TOBN(0x5f3c7cf0, 0xc56934d9), - TOBN(0xc079e0fb, 0xe3191591), TOBN(0xe40896bd, 0xb01aada7), - TOBN(0x8d466791, 0x0492d25f), TOBN(0x8aeb30c9, 0xe7408276), - TOBN(0xe9437495, 0x9287aacc), TOBN(0x23d4708d, 0x79fe03d4), - TOBN(0x8cda9cf2, 0xd0c05199), TOBN(0x502fbc22, 0xfae78454), - TOBN(0xc0bda9df, 0xf572a182), TOBN(0x5f9b71b8, 0x6158b372), - TOBN(0xe0f33a59, 0x2b82dd07), TOBN(0x76302735, 0x9523032e), - TOBN(0x7fe1a721, 0xc4505a32), TOBN(0x7b6e3e82, 0xf796409f)}, - {TOBN(0xe3417bc0, 0x35d0b34a), TOBN(0x440b386b, 0x8327c0a7), - TOBN(0x8fb7262d, 0xac0362d1), TOBN(0x2c41114c, 0xe0cdf943), - TOBN(0x2ba5cef1, 0xad95a0b1), TOBN(0xc09b37a8, 0x67d54362), - TOBN(0x26d6cdd2, 0x01e486c9), TOBN(0x20477abf, 0x42ff9297), - TOBN(0xa004dcb3, 0x292a9287), TOBN(0xddc15cf6, 0x77b092c7), - TOBN(0x083a8464, 0x806c0605), TOBN(0x4a68df70, 0x3db997b0), - TOBN(0x9c134e45, 0x05bf7dd0), TOBN(0xa4e63d39, 0x8ccf7f8c), - TOBN(0xa6e6517f, 0x41b5f8af), TOBN(0xaa8b9342, 0xad7bc1cc), - TOBN(0x126f35b5, 0x1e706ad9), TOBN(0xb99cebb4, 0xc3a9ebdf), - TOBN(0xa75389af, 0xbf608d90), TOBN(0x76113c4f, 0xc6c89858), - TOBN(0x80de8eb0, 0x97e2b5aa), TOBN(0x7e1022cc, 0x63b91304), - TOBN(0x3bdab605, 0x6ccc066c), TOBN(0x33cbb144, 0xb2edf900), - TOBN(0xc4176471, 0x7af715d2), TOBN(0xe2f7f594, 0xd0134a96), - TOBN(0x2c1873ef, 0xa41ec956), TOBN(0xe4e7b4f6, 0x77821304), - TOBN(0xe5c8ff97, 0x88d5374a), TOBN(0x2b915e63, 0x80823d5b), - TOBN(0xea6bc755, 0xb2ee8fe2), TOBN(0x6657624c, 0xe7112651), - TOBN(0x157af101, 0xdace5aca), TOBN(0xc4fdbcf2, 0x11a6a267), - TOBN(0xdaddf340, 0xc49c8609), TOBN(0x97e49f52, 0xe9604a65), - TOBN(0x9be8e790, 0x937e2ad5), TOBN(0x846e2508, 0x326e17f1), - TOBN(0x3f38007a, 0x0bbbc0dc), TOBN(0xcf03603f, 0xb11e16d6), - TOBN(0xd6f800e0, 0x7442f1d5), TOBN(0x475607d1, 0x66e0e3ab), - TOBN(0x82807f16, 0xb7c64047), TOBN(0x8858e1e3, 0xa749883d), - TOBN(0x5859120b, 0x8231ee10), TOBN(0x1b80e7eb, 0x638a1ece), - TOBN(0xcb72525a, 0xc6aa73a4), TOBN(0xa7cdea3d, 0x844423ac), - TOBN(0x5ed0c007, 0xf8ae7c38), TOBN(0x6db07a5c, 0x3d740192), - TOBN(0xbe5e9c2a, 0x5fe36db3), TOBN(0xd5b9d57a, 0x76e95046), - TOBN(0x54ac32e7, 0x8eba20f2), TOBN(0xef11ca8f, 0x71b9a352), - TOBN(0x305e373e, 0xff98a658), TOBN(0xffe5a100, 0x823eb667), - TOBN(0x57477b11, 0xe51732d2), TOBN(0xdfd6eb28, 0x2538fc0e), - TOBN(0x5c43b0cc, 0x3b39eec5), TOBN(0x6af12778, 0xcb36cc57), - TOBN(0x70b0852d, 0x06c425ae), TOBN(0x6df92f8c, 0x5c221b9b), - TOBN(0x6c8d4f9e, 0xce826d9c), TOBN(0xf59aba7b, 0xb49359c3), - TOBN(0x5c8ed8d5, 0xda64309d), TOBN(0x61a6de56, 0x91b30704), - TOBN(0xd6b52f6a, 0x2f9b5808), TOBN(0x0eee4194, 0x98c958a7), - TOBN(0xcddd9aab, 0x771e4caa), TOBN(0x83965dfd, 0x78bc21be), - TOBN(0x02affce3, 0xb3b504f5), TOBN(0x30847a21, 0x561c8291), - TOBN(0xd2eb2cf1, 0x52bfda05), TOBN(0xe0e4c4e9, 0x6197b98c), - TOBN(0x1d35076c, 0xf8a1726f), TOBN(0x6c06085b, 0x2db11e3d), - TOBN(0x15c0c4d7, 0x4463ba14), TOBN(0x9d292f83, 0x0030238c), - TOBN(0x1311ee8b, 0x3727536d), TOBN(0xfeea86ef, 0xbeaedc1e), - TOBN(0xb9d18cd3, 0x66131e2e), TOBN(0xf31d974f, 0x80fe2682), - TOBN(0xb6e49e0f, 0xe4160289), TOBN(0x7c48ec0b, 0x08e92799), - TOBN(0x818111d8, 0xd1989aa7), TOBN(0xb34fa0aa, 0xebf926f9), - TOBN(0xdb5fe2f5, 0xa245474a), TOBN(0xf80a6ebb, 0x3c7ca756), - TOBN(0xa7f96054, 0xafa05dd8), TOBN(0x26dfcf21, 0xfcaf119e), - TOBN(0xe20ef2e3, 0x0564bb59), TOBN(0xef4dca50, 0x61cb02b8), - TOBN(0xcda7838a, 0x65d30672), TOBN(0x8b08d534, 0xfd657e86), - TOBN(0x4c5b4395, 0x46d595c8), TOBN(0x39b58725, 0x425cb836), - TOBN(0x8ea61059, 0x3de9abe3), TOBN(0x40434881, 0x9cdc03be), - TOBN(0x9b261245, 0xcfedce8c), TOBN(0x78c318b4, 0xcf5234a1), - TOBN(0x510bcf16, 0xfde24c99), TOBN(0x2a77cb75, 0xa2c2ff5d), - TOBN(0x9c895c2b, 0x27960fb4), TOBN(0xd30ce975, 0xb0eda42b), - TOBN(0xfda85393, 0x1a62cc26), TOBN(0x23c69b96, 0x50c0e052), - TOBN(0xa227df15, 0xbfc633f3), TOBN(0x2ac78848, 0x1bae7d48), - TOBN(0x487878f9, 0x187d073d), TOBN(0x6c2be919, 0x967f807d), - TOBN(0x765861d8, 0x336e6d8f), TOBN(0x88b8974c, 0xce528a43), - TOBN(0x09521177, 0xff57d051), TOBN(0x2ff38037, 0xfb6a1961), - TOBN(0xfc0aba74, 0xa3d76ad4), TOBN(0x7c764803, 0x25a7ec17), - TOBN(0x7532d75f, 0x48879bc8), TOBN(0xea7eacc0, 0x58ce6bc1), - TOBN(0xc82176b4, 0x8e896c16), TOBN(0x9a30e0b2, 0x2c750fed), - TOBN(0xc37e2c2e, 0x421d3aa4), TOBN(0xf926407c, 0xe84fa840), - TOBN(0x18abc03d, 0x1454e41c), TOBN(0x26605ecd, 0x3f7af644), - TOBN(0x242341a6, 0xd6a5eabf), TOBN(0x1edb84f4, 0x216b668e), - TOBN(0xd836edb8, 0x04010102), TOBN(0x5b337ce7, 0x945e1d8c), - TOBN(0xd2075c77, 0xc055dc14), TOBN(0x2a0ffa25, 0x81d89cdf), - TOBN(0x8ce815ea, 0x6ffdcbaf), TOBN(0xa3428878, 0xfb648867), - TOBN(0x277699cf, 0x884655fb), TOBN(0xfa5b5bd6, 0x364d3e41), - TOBN(0x01f680c6, 0x441e1cb7), TOBN(0x3fd61e66, 0xb70a7d67), - TOBN(0x666ba2dc, 0xcc78cf66), TOBN(0xb3018174, 0x6fdbff77), - TOBN(0x8d4dd0db, 0x168d4668), TOBN(0x259455d0, 0x1dab3a2a), - TOBN(0xf58564c5, 0xcde3acec), TOBN(0x77141925, 0x13adb276), - TOBN(0x527d725d, 0x8a303f65), TOBN(0x55deb6c9, 0xe6f38f7b), - TOBN(0xfd5bb657, 0xb1fa70fb), TOBN(0xfa07f50f, 0xd8073a00), - TOBN(0xf72e3aa7, 0xbca02500), TOBN(0xf68f895d, 0x9975740d), - TOBN(0x30112060, 0x5cae2a6a), TOBN(0x01bd7218, 0x02874842), - TOBN(0x3d423891, 0x7ce47bd3), TOBN(0xa66663c1, 0x789544f6), - TOBN(0x864d05d7, 0x3272d838), TOBN(0xe22924f9, 0xfa6295c5), - TOBN(0x8189593f, 0x6c2fda32), TOBN(0x330d7189, 0xb184b544), - TOBN(0x79efa62c, 0xbde1f714), TOBN(0x35771c94, 0xe5cb1a63), - TOBN(0x2f4826b8, 0x641c8332), TOBN(0x00a894fb, 0xc8cee854), - TOBN(0xb4b9a39b, 0x36194d40), TOBN(0xe857a7c5, 0x77612601), - TOBN(0xf4209dd2, 0x4ecf2f58), TOBN(0x82b9e66d, 0x5a033487), - TOBN(0xc1e36934, 0xe4e8b9dd), TOBN(0xd2372c9d, 0xa42377d7), - TOBN(0x51dc94c7, 0x0e3ae43b), TOBN(0x4c57761e, 0x04474f6f), - TOBN(0xdcdacd0a, 0x1058a318), TOBN(0x369cf3f5, 0x78053a9a), - TOBN(0xc6c3de50, 0x31c68de2), TOBN(0x4653a576, 0x3c4b6d9f), - TOBN(0x1688dd5a, 0xaa4e5c97), TOBN(0x5be80aa1, 0xb7ab3c74), - TOBN(0x70cefe7c, 0xbc65c283), TOBN(0x57f95f13, 0x06867091), - TOBN(0xa39114e2, 0x4415503b), TOBN(0xc08ff7c6, 0x4cbb17e9), - TOBN(0x1eff674d, 0xd7dec966), TOBN(0x6d4690af, 0x53376f63), - TOBN(0xff6fe32e, 0xea74237b), TOBN(0xc436d17e, 0xcd57508e), - TOBN(0x15aa28e1, 0xedcc40fe), TOBN(0x0d769c04, 0x581bbb44), - TOBN(0xc240b6de, 0x34eaacda), TOBN(0xd9e116e8, 0x2ba0f1de), - TOBN(0xcbe45ec7, 0x79438e55), TOBN(0x91787c9d, 0x96f752d7), - TOBN(0x897f532b, 0xf129ac2f), TOBN(0xd307b7c8, 0x5a36e22c), - TOBN(0x91940675, 0x749fb8f3), TOBN(0xd14f95d0, 0x157fdb28), - TOBN(0xfe51d029, 0x6ae55043), TOBN(0x8931e98f, 0x44a87de1), - TOBN(0xe57f1cc6, 0x09e4fee2), TOBN(0x0d063b67, 0x4e072d92), - TOBN(0x70a998b9, 0xed0e4316), TOBN(0xe74a736b, 0x306aca46), - TOBN(0xecf0fbf2, 0x4fda97c7), TOBN(0xa40f65cb, 0x3e178d93), - TOBN(0x16253604, 0x16df4285), TOBN(0xb0c9babb, 0xd0c56ae2), - TOBN(0x73032b19, 0xcfc5cfc3), TOBN(0xe497e5c3, 0x09752056), - TOBN(0x12096bb4, 0x164bda96), TOBN(0x1ee42419, 0xa0b74da1), - TOBN(0x8fc36243, 0x403826ba), TOBN(0x0c8f0069, 0xdc09e660), - TOBN(0x8667e981, 0xc27253c9), TOBN(0x05a6aefb, 0x92b36a45), - TOBN(0xa62c4b36, 0x9cb7bb46), TOBN(0x8394f375, 0x11f7027b), - TOBN(0x747bc79c, 0x5f109d0f), TOBN(0xcad88a76, 0x5b8cc60a), - TOBN(0x80c5a66b, 0x58f09e68), TOBN(0xe753d451, 0xf6127eac), - TOBN(0xc44b74a1, 0x5b0ec6f5), TOBN(0x47989fe4, 0x5289b2b8), - TOBN(0x745f8484, 0x58d6fc73), TOBN(0xec362a6f, 0xf61c70ab), - TOBN(0x070c98a7, 0xb3a8ad41), TOBN(0x73a20fc0, 0x7b63db51), - TOBN(0xed2c2173, 0xf44c35f4), TOBN(0x8a56149d, 0x9acc9dca), - TOBN(0x98f17881, 0x9ac6e0f4), TOBN(0x360fdeaf, 0xa413b5ed), - TOBN(0x0625b8f4, 0xa300b0fd), TOBN(0xf1f4d76a, 0x5b3222d3), - TOBN(0x9d6f5109, 0x587f76b8), TOBN(0x8b4ee08d, 0x2317fdb5), - TOBN(0x88089bb7, 0x8c68b095), TOBN(0x95570e9a, 0x5808d9b9), - TOBN(0xa395c36f, 0x35d33ae7), TOBN(0x200ea123, 0x50bb5a94), - TOBN(0x20c789bd, 0x0bafe84b), TOBN(0x243ef52d, 0x0919276a), - TOBN(0x3934c577, 0xe23ae233), TOBN(0xb93807af, 0xa460d1ec), - TOBN(0xb72a53b1, 0xf8fa76a4), TOBN(0xd8914cb0, 0xc3ca4491), - TOBN(0x2e128494, 0x3fb42622), TOBN(0x3b2700ac, 0x500907d5), - TOBN(0xf370fb09, 0x1a95ec63), TOBN(0xf8f30be2, 0x31b6dfbd), - TOBN(0xf2b2f8d2, 0x69e55f15), TOBN(0x1fead851, 0xcc1323e9), - TOBN(0xfa366010, 0xd9e5eef6), TOBN(0x64d487b0, 0xe316107e), - TOBN(0x4c076b86, 0xd23ddc82), TOBN(0x03fd344c, 0x7e0143f0), - TOBN(0xa95362ff, 0x317af2c5), TOBN(0x0add3db7, 0xe18b7a4f), - TOBN(0x9c673e3f, 0x8260e01b), TOBN(0xfbeb49e5, 0x54a1cc91), - TOBN(0x91351bf2, 0x92f2e433), TOBN(0xc755e7ec, 0x851141eb), - TOBN(0xc9a95139, 0x29607745), TOBN(0x0ca07420, 0xa26f2b28), - TOBN(0xcb2790e7, 0x4bc6f9dd), TOBN(0x345bbb58, 0xadcaffc0), - TOBN(0xc65ea38c, 0xbe0f27a2), TOBN(0x67c24d7c, 0x641fcb56), - TOBN(0x2c25f0a7, 0xa9e2c757), TOBN(0x93f5cdb0, 0x16f16c49), - TOBN(0x2ca5a9d7, 0xc5ee30a1), TOBN(0xd1593635, 0xb909b729), - TOBN(0x804ce9f3, 0xdadeff48), TOBN(0xec464751, 0xb07c30c3), - TOBN(0x89d65ff3, 0x9e49af6a), TOBN(0xf2d6238a, 0x6f3d01bc), - TOBN(0x1095561e, 0x0bced843), TOBN(0x51789e12, 0xc8a13fd8), - TOBN(0xd633f929, 0x763231df), TOBN(0x46df9f7d, 0xe7cbddef), - TOBN(0x01c889c0, 0xcb265da8), TOBN(0xfce1ad10, 0xaf4336d2), - TOBN(0x8d110df6, 0xfc6a0a7e), TOBN(0xdd431b98, 0x6da425dc), - TOBN(0xcdc4aeab, 0x1834aabe), TOBN(0x84deb124, 0x8439b7fc), - TOBN(0x8796f169, 0x3c2a5998), TOBN(0x9b9247b4, 0x7947190d), - TOBN(0x55b9d9a5, 0x11597014), TOBN(0x7e9dd70d, 0x7b1566ee), - TOBN(0x94ad78f7, 0xcbcd5e64), TOBN(0x0359ac17, 0x9bd4c032), - TOBN(0x3b11baaf, 0x7cc222ae), TOBN(0xa6a6e284, 0xba78e812), - TOBN(0x8392053f, 0x24cea1a0), TOBN(0xc97bce4a, 0x33621491), - TOBN(0x7eb1db34, 0x35399ee9), TOBN(0x473f78ef, 0xece81ad1), - TOBN(0x41d72fe0, 0xf63d3d0d), TOBN(0xe620b880, 0xafab62fc), - TOBN(0x92096bc9, 0x93158383), TOBN(0x41a21357, 0x8f896f6c), - TOBN(0x1b5ee2fa, 0xc7dcfcab), TOBN(0x650acfde, 0x9546e007), - TOBN(0xc081b749, 0xb1b02e07), TOBN(0xda9e41a0, 0xf9eca03d), - TOBN(0x013ba727, 0x175a54ab), TOBN(0xca0cd190, 0xea5d8d10), - TOBN(0x85ea52c0, 0x95fd96a9), TOBN(0x2c591b9f, 0xbc5c3940), - TOBN(0x6fb4d4e4, 0x2bad4d5f), TOBN(0xfa4c3590, 0xfef0059b), - TOBN(0x6a10218a, 0xf5122294), TOBN(0x9a78a81a, 0xa85751d1), - TOBN(0x04f20579, 0xa98e84e7), TOBN(0xfe1242c0, 0x4997e5b5), - TOBN(0xe77a273b, 0xca21e1e4), TOBN(0xfcc8b1ef, 0x9411939d), - TOBN(0xe20ea302, 0x92d0487a), TOBN(0x1442dbec, 0x294b91fe), - TOBN(0x1f7a4afe, 0xbb6b0e8f), TOBN(0x1700ef74, 0x6889c318), - TOBN(0xf5bbffc3, 0x70f1fc62), TOBN(0x3b31d4b6, 0x69c79cca), - TOBN(0xe8bc2aab, 0xa7f6340d), TOBN(0xb0b08ab4, 0xa725e10a), - TOBN(0x44f05701, 0xae340050), TOBN(0xba4b3016, 0x1cf0c569), - TOBN(0x5aa29f83, 0xfbe19a51), TOBN(0x1b9ed428, 0xb71d752e), - TOBN(0x1666e54e, 0xeb4819f5), TOBN(0x616cdfed, 0x9e18b75b), - TOBN(0x112ed5be, 0x3ee27b0b), TOBN(0xfbf28319, 0x44c7de4d), - TOBN(0xd685ec85, 0xe0e60d84), TOBN(0x68037e30, 0x1db7ee78), - TOBN(0x5b65bdcd, 0x003c4d6e), TOBN(0x33e7363a, 0x93e29a6a), - TOBN(0x995b3a61, 0x08d0756c), TOBN(0xd727f85c, 0x2faf134b), - TOBN(0xfac6edf7, 0x1d337823), TOBN(0x99b9aa50, 0x0439b8b4), - TOBN(0x722eb104, 0xe2b4e075), TOBN(0x49987295, 0x437c4926), - TOBN(0xb1e4c0e4, 0x46a9b82d), TOBN(0xd0cb3197, 0x57a006f5), - TOBN(0xf3de0f7d, 0xd7808c56), TOBN(0xb5c54d8f, 0x51f89772), - TOBN(0x500a114a, 0xadbd31aa), TOBN(0x9afaaaa6, 0x295f6cab), - TOBN(0x94705e21, 0x04cf667a), TOBN(0xfc2a811b, 0x9d3935d7), - TOBN(0x560b0280, 0x6d09267c), TOBN(0xf19ed119, 0xf780e53b), - TOBN(0xf0227c09, 0x067b6269), TOBN(0x967b8533, 0x5caef599), - TOBN(0x155b9243, 0x68efeebc), TOBN(0xcd6d34f5, 0xc497bae6), - TOBN(0x1dd8d5d3, 0x6cceb370), TOBN(0x2aeac579, 0xa78d7bf9), - TOBN(0x5d65017d, 0x70b67a62), TOBN(0x70c8e44f, 0x17c53f67), - TOBN(0xd1fc0950, 0x86a34d09), TOBN(0xe0fca256, 0xe7134907), - TOBN(0xe24fa29c, 0x80fdd315), TOBN(0x2c4acd03, 0xd87499ad), - TOBN(0xbaaf7517, 0x3b5a9ba6), TOBN(0xb9cbe1f6, 0x12e51a51), - TOBN(0xd88edae3, 0x5e154897), TOBN(0xe4309c3c, 0x77b66ca0), - TOBN(0xf5555805, 0xf67f3746), TOBN(0x85fc37ba, 0xa36401ff), - TOBN(0xdf86e2ca, 0xd9499a53), TOBN(0x6270b2a3, 0xecbc955b), - TOBN(0xafae64f5, 0x974ad33b), TOBN(0x04d85977, 0xfe7b2df1), - TOBN(0x2a3db3ff, 0x4ab03f73), TOBN(0x0b87878a, 0x8702740a), - TOBN(0x6d263f01, 0x5a061732), TOBN(0xc25430ce, 0xa32a1901), - TOBN(0xf7ebab3d, 0xdb155018), TOBN(0x3a86f693, 0x63a9b78e), - TOBN(0x349ae368, 0xda9f3804), TOBN(0x470f07fe, 0xa164349c), - TOBN(0xd52f4cc9, 0x8562baa5), TOBN(0xc74a9e86, 0x2b290df3), - TOBN(0xd3a1aa35, 0x43471a24), TOBN(0x239446be, 0xb8194511), - TOBN(0xbec2dd00, 0x81dcd44d), TOBN(0xca3d7f0f, 0xc42ac82d), - TOBN(0x1f3db085, 0xfdaf4520), TOBN(0xbb6d3e80, 0x4549daf2), - TOBN(0xf5969d8a, 0x19ad5c42), TOBN(0x7052b13d, 0xdbfd1511), - TOBN(0x11890d1b, 0x682b9060), TOBN(0xa71d3883, 0xac34452c), - TOBN(0xa438055b, 0x783805b4), TOBN(0x43241277, 0x4725b23e), - TOBN(0xf20cf96e, 0x4901bbed), TOBN(0x6419c710, 0xf432a2bb), - TOBN(0x57a0fbb9, 0xdfa9cd7d), TOBN(0x589111e4, 0x00daa249), - TOBN(0x19809a33, 0x7b60554e), TOBN(0xea5f8887, 0xede283a4), - TOBN(0x2d713802, 0x503bfd35), TOBN(0x151bb0af, 0x585d2a53), - TOBN(0x40b08f74, 0x43b30ca8), TOBN(0xe10b5bba, 0xd9934583), - TOBN(0xe8a546d6, 0xb51110ad), TOBN(0x1dd50e66, 0x28e0b6c5), - TOBN(0x292e9d54, 0xcff2b821), TOBN(0x3882555d, 0x47281760), - TOBN(0x134838f8, 0x3724d6e3), TOBN(0xf2c679e0, 0x22ddcda1), - TOBN(0x40ee8815, 0x6d2a5768), TOBN(0x7f227bd2, 0x1c1e7e2d), - TOBN(0x487ba134, 0xd04ff443), TOBN(0x76e2ff3d, 0xc614e54b), - TOBN(0x36b88d6f, 0xa3177ec7), TOBN(0xbf731d51, 0x2328fff5), - TOBN(0x758caea2, 0x49ba158e), TOBN(0x5ab8ff4c, 0x02938188), - TOBN(0x33e16056, 0x35edc56d), TOBN(0x5a69d349, 0x7e940d79), - TOBN(0x6c4fd001, 0x03866dcb), TOBN(0x20a38f57, 0x4893cdef), - TOBN(0xfbf3e790, 0xfac3a15b), TOBN(0x6ed7ea2e, 0x7a4f8e6b), - TOBN(0xa663eb4f, 0xbc3aca86), TOBN(0x22061ea5, 0x080d53f7), - TOBN(0x2480dfe6, 0xf546783f), TOBN(0xd38bc6da, 0x5a0a641e), - TOBN(0xfb093cd1, 0x2ede8965), TOBN(0x89654db4, 0xacb455cf), - TOBN(0x413cbf9a, 0x26e1adee), TOBN(0x291f3764, 0x373294d4), - TOBN(0x00797257, 0x648083fe), TOBN(0x25f504d3, 0x208cc341), - TOBN(0x635a8e5e, 0xc3a0ee43), TOBN(0x70aaebca, 0x679898ff), - TOBN(0x9ee9f547, 0x5dc63d56), TOBN(0xce987966, 0xffb34d00), - TOBN(0xf9f86b19, 0x5e26310a), TOBN(0x9e435484, 0x382a8ca8), - TOBN(0x253bcb81, 0xc2352fe4), TOBN(0xa4eac8b0, 0x4474b571), - TOBN(0xc1b97512, 0xc1ad8cf8), TOBN(0x193b4e9e, 0x99e0b697), - TOBN(0x939d2716, 0x01e85df0), TOBN(0x4fb265b3, 0xcd44eafd), - TOBN(0x321e7dcd, 0xe51e1ae2), TOBN(0x8e3a8ca6, 0xe3d8b096), - TOBN(0x8de46cb0, 0x52604998), TOBN(0x91099ad8, 0x39072aa7), - TOBN(0x2617f91c, 0x93aa96b8), TOBN(0x0fc8716b, 0x7fca2e13), - TOBN(0xa7106f5e, 0x95328723), TOBN(0xd1c9c40b, 0x262e6522), - TOBN(0xb9bafe86, 0x42b7c094), TOBN(0x1873439d, 0x1543c021), - TOBN(0xe1baa5de, 0x5cbefd5d), TOBN(0xa363fc5e, 0x521e8aff), - TOBN(0xefe6320d, 0xf862eaac), TOBN(0x14419c63, 0x22c647dc), - TOBN(0x0e06707c, 0x4e46d428), TOBN(0xcb6c834f, 0x4a178f8f), - TOBN(0x0f993a45, 0xd30f917c), TOBN(0xd4c4b049, 0x9879afee), - TOBN(0xb6142a1e, 0x70500063), TOBN(0x7c9b41c3, 0xa5d9d605), - TOBN(0xbc00fc2f, 0x2f8ba2c7), TOBN(0x0966eb2f, 0x7c67aa28), - TOBN(0x13f7b516, 0x5a786972), TOBN(0x3bfb7557, 0x8a2fbba0), - TOBN(0x131c4f23, 0x5a2b9620), TOBN(0xbff3ed27, 0x6faf46be), - TOBN(0x9b4473d1, 0x7e172323), TOBN(0x421e8878, 0x339f6246), - TOBN(0x0fa8587a, 0x25a41632), TOBN(0xc0814124, 0xa35b6c93), - TOBN(0x2b18a9f5, 0x59ebb8db), TOBN(0x264e3357, 0x76edb29c), - TOBN(0xaf245ccd, 0xc87c51e2), TOBN(0x16b3015b, 0x501e6214), - TOBN(0xbb31c560, 0x0a3882ce), TOBN(0x6961bb94, 0xfec11e04), - TOBN(0x3b825b8d, 0xeff7a3a0), TOBN(0xbec33738, 0xb1df7326), - TOBN(0x68ad747c, 0x99604a1f), TOBN(0xd154c934, 0x9a3bd499), - TOBN(0xac33506f, 0x1cc7a906), TOBN(0x73bb5392, 0x6c560e8f), - TOBN(0x6428fcbe, 0x263e3944), TOBN(0xc11828d5, 0x1c387434), - TOBN(0x3cd04be1, 0x3e4b12ff), TOBN(0xc3aad9f9, 0x2d88667c), - TOBN(0xc52ddcf8, 0x248120cf), TOBN(0x985a892e, 0x2a389532), - TOBN(0xfbb4b21b, 0x3bb85fa0), TOBN(0xf95375e0, 0x8dfc6269), - TOBN(0xfb4fb06c, 0x7ee2acea), TOBN(0x6785426e, 0x309c4d1f), - TOBN(0x659b17c8, 0xd8ceb147), TOBN(0x9b649eee, 0xb70a5554), - TOBN(0x6b7fa0b5, 0xac6bc634), TOBN(0xd99fe2c7, 0x1d6e732f), - TOBN(0x30e6e762, 0x8d3abba2), TOBN(0x18fee6e7, 0xa797b799), - TOBN(0x5c9d360d, 0xc696464d), TOBN(0xe3baeb48, 0x27bfde12), - TOBN(0x2bf5db47, 0xf23206d5), TOBN(0x2f6d3420, 0x1d260152), - TOBN(0x17b87653, 0x3f8ff89a), TOBN(0x5157c30c, 0x378fa458), - TOBN(0x7517c5c5, 0x2d4fb936), TOBN(0xef22f7ac, 0xe6518cdc), - TOBN(0xdeb483e6, 0xbf847a64), TOBN(0xf5084558, 0x92e0fa89)}, - {TOBN(0xab9659d8, 0xdf7304d4), TOBN(0xb71bcf1b, 0xff210e8e), - TOBN(0xa9a2438b, 0xd73fbd60), TOBN(0x4595cd1f, 0x5d11b4de), - TOBN(0x9c0d329a, 0x4835859d), TOBN(0x4a0f0d2d, 0x7dbb6e56), - TOBN(0xc6038e5e, 0xdf928a4e), TOBN(0xc9429621, 0x8f5ad154), - TOBN(0x91213462, 0xf23f2d92), TOBN(0x6cab71bd, 0x60b94078), - TOBN(0x6bdd0a63, 0x176cde20), TOBN(0x54c9b20c, 0xee4d54bc), - TOBN(0x3cd2d8aa, 0x9f2ac02f), TOBN(0x03f8e617, 0x206eedb0), - TOBN(0xc7f68e16, 0x93086434), TOBN(0x831469c5, 0x92dd3db9), - TOBN(0x8521df24, 0x8f981354), TOBN(0x587e23ec, 0x3588a259), - TOBN(0xcbedf281, 0xd7a0992c), TOBN(0x06930a55, 0x38961407), - TOBN(0x09320deb, 0xbe5bbe21), TOBN(0xa7ffa5b5, 0x2491817f), - TOBN(0xe6c8b4d9, 0x09065160), TOBN(0xac4f3992, 0xfff6d2a9), - TOBN(0x7aa7a158, 0x3ae9c1bd), TOBN(0xe0af6d98, 0xe37ce240), - TOBN(0xe54342d9, 0x28ab38b4), TOBN(0xe8b75007, 0x0a1c98ca), - TOBN(0xefce86af, 0xe02358f2), TOBN(0x31b8b856, 0xea921228), - TOBN(0x052a1912, 0x0a1c67fc), TOBN(0xb4069ea4, 0xe3aead59), - TOBN(0x3232d6e2, 0x7fa03cb3), TOBN(0xdb938e5b, 0x0fdd7d88), - TOBN(0x04c1d2cd, 0x2ccbfc5d), TOBN(0xd2f45c12, 0xaf3a580f), - TOBN(0x592620b5, 0x7883e614), TOBN(0x5fd27e68, 0xbe7c5f26), - TOBN(0x139e45a9, 0x1567e1e3), TOBN(0x2cc71d2d, 0x44d8aaaf), - TOBN(0x4a9090cd, 0xe36d0757), TOBN(0xf722d7b1, 0xd9a29382), - TOBN(0xfb7fb04c, 0x04b48ddf), TOBN(0x628ad2a7, 0xebe16f43), - TOBN(0xcd3fbfb5, 0x20226040), TOBN(0x6c34ecb1, 0x5104b6c4), - TOBN(0x30c0754e, 0xc903c188), TOBN(0xec336b08, 0x2d23cab0), - TOBN(0x473d62a2, 0x1e206ee5), TOBN(0xf1e27480, 0x8c49a633), - TOBN(0x87ab956c, 0xe9f6b2c3), TOBN(0x61830b48, 0x62b606ea), - TOBN(0x67cd6846, 0xe78e815f), TOBN(0xfe40139f, 0x4c02082a), - TOBN(0x52bbbfcb, 0x952ec365), TOBN(0x74c11642, 0x6b9836ab), - TOBN(0x9f51439e, 0x558df019), TOBN(0x230da4ba, 0xac712b27), - TOBN(0x518919e3, 0x55185a24), TOBN(0x4dcefcdd, 0x84b78f50), - TOBN(0xa7d90fb2, 0xa47d4c5a), TOBN(0x55ac9abf, 0xb30e009e), - TOBN(0xfd2fc359, 0x74eed273), TOBN(0xb72d824c, 0xdbea8faf), - TOBN(0xce721a74, 0x4513e2ca), TOBN(0x0b418612, 0x38240b2c), - TOBN(0x05199968, 0xd5baa450), TOBN(0xeb1757ed, 0x2b0e8c25), - TOBN(0x6ebc3e28, 0x3dfac6d5), TOBN(0xb2431e2e, 0x48a237f5), - TOBN(0x2acb5e23, 0x52f61499), TOBN(0x5558a2a7, 0xe06c936b), - TOBN(0xd213f923, 0xcbb13d1b), TOBN(0x98799f42, 0x5bfb9bfe), - TOBN(0x1ae8ddc9, 0x701144a9), TOBN(0x0b8b3bb6, 0x4c5595ee), - TOBN(0x0ea9ef2e, 0x3ecebb21), TOBN(0x17cb6c4b, 0x3671f9a7), - TOBN(0x47ef464f, 0x726f1d1f), TOBN(0x171b9484, 0x6943a276), - TOBN(0x51a4ae2d, 0x7ef0329c), TOBN(0x08509222, 0x91c4402a), - TOBN(0x64a61d35, 0xafd45bbc), TOBN(0x38f096fe, 0x3035a851), - TOBN(0xc7468b74, 0xa1dec027), TOBN(0xe8cf10e7, 0x4fc7dcba), - TOBN(0xea35ff40, 0xf4a06353), TOBN(0x0b4c0dfa, 0x8b77dd66), - TOBN(0x779b8552, 0xde7e5c19), TOBN(0xfab28609, 0xc1c0256c), - TOBN(0x64f58eee, 0xabd4743d), TOBN(0x4e8ef838, 0x7b6cc93b), - TOBN(0xee650d26, 0x4cb1bf3d), TOBN(0x4c1f9d09, 0x73dedf61), - TOBN(0xaef7c9d7, 0xbfb70ced), TOBN(0x1ec0507e, 0x1641de1e), - TOBN(0xcd7e5cc7, 0xcde45079), TOBN(0xde173c9a, 0x516ac9e4), - TOBN(0x517a8494, 0xc170315c), TOBN(0x438fd905, 0x91d8e8fb), - TOBN(0x5145c506, 0xc7d9630b), TOBN(0x6457a87b, 0xf47d4d75), - TOBN(0xd31646bf, 0x0d9a80e8), TOBN(0x453add2b, 0xcef3aabe), - TOBN(0xc9941109, 0xa607419d), TOBN(0xfaa71e62, 0xbb6bca80), - TOBN(0x34158c13, 0x07c431f3), TOBN(0x594abebc, 0x992bc47a), - TOBN(0x6dfea691, 0xeb78399f), TOBN(0x48aafb35, 0x3f42cba4), - TOBN(0xedcd65af, 0x077c04f0), TOBN(0x1a29a366, 0xe884491a), - TOBN(0x023a40e5, 0x1c21f2bf), TOBN(0xf99a513c, 0xa5057aee), - TOBN(0xa3fe7e25, 0xbcab072e), TOBN(0x8568d2e1, 0x40e32bcf), - TOBN(0x904594eb, 0xd3f69d9f), TOBN(0x181a9733, 0x07affab1), - TOBN(0xe4d68d76, 0xb6e330f4), TOBN(0x87a6dafb, 0xc75a7fc1), - TOBN(0x549db2b5, 0xef7d9289), TOBN(0x2480d4a8, 0x197f015a), - TOBN(0x61d5590b, 0xc40493b6), TOBN(0x3a55b52e, 0x6f780331), - TOBN(0x40eb8115, 0x309eadb0), TOBN(0xdea7de5a, 0x92e5c625), - TOBN(0x64d631f0, 0xcc6a3d5a), TOBN(0x9d5e9d7c, 0x93e8dd61), - TOBN(0xf297bef5, 0x206d3ffc), TOBN(0x23d5e033, 0x7d808bd4), - TOBN(0x4a4f6912, 0xd24cf5ba), TOBN(0xe4d8163b, 0x09cdaa8a), - TOBN(0x0e0de9ef, 0xd3082e8e), TOBN(0x4fe1246c, 0x0192f360), - TOBN(0x1f900150, 0x4b8eee0a), TOBN(0x5219da81, 0xf1da391b), - TOBN(0x7bf6a5c1, 0xf7ea25aa), TOBN(0xd165e6bf, 0xfbb07d5f), - TOBN(0xe3539361, 0x89e78671), TOBN(0xa3fcac89, 0x2bac4219), - TOBN(0xdfab6fd4, 0xf0baa8ab), TOBN(0x5a4adac1, 0xe2c1c2e5), - TOBN(0x6cd75e31, 0x40d85849), TOBN(0xce263fea, 0x19b39181), - TOBN(0xcb6803d3, 0x07032c72), TOBN(0x7f40d5ce, 0x790968c8), - TOBN(0xa6de86bd, 0xdce978f0), TOBN(0x25547c4f, 0x368f751c), - TOBN(0xb1e685fd, 0x65fb2a9e), TOBN(0xce69336f, 0x1eb9179c), - TOBN(0xb15d1c27, 0x12504442), TOBN(0xb7df465c, 0xb911a06b), - TOBN(0xb8d804a3, 0x315980cd), TOBN(0x693bc492, 0xfa3bebf7), - TOBN(0x3578aeee, 0x2253c504), TOBN(0x158de498, 0xcd2474a2), - TOBN(0x1331f5c7, 0xcfda8368), TOBN(0xd2d7bbb3, 0x78d7177e), - TOBN(0xdf61133a, 0xf3c1e46e), TOBN(0x5836ce7d, 0xd30e7be8), - TOBN(0x83084f19, 0x94f834cb), TOBN(0xd35653d4, 0x429ed782), - TOBN(0xa542f16f, 0x59e58243), TOBN(0xc2b52f65, 0x0470a22d), - TOBN(0xe3b6221b, 0x18f23d96), TOBN(0xcb05abac, 0x3f5252b4), - TOBN(0xca00938b, 0x87d61402), TOBN(0x2f186cdd, 0x411933e4), - TOBN(0xe042ece5, 0x9a29a5c5), TOBN(0xb19b3c07, 0x3b6c8402), - TOBN(0xc97667c7, 0x19d92684), TOBN(0xb5624622, 0xebc66372), - TOBN(0x0cb96e65, 0x3c04fa02), TOBN(0x83a7176c, 0x8eaa39aa), - TOBN(0x2033561d, 0xeaa1633f), TOBN(0x45a9d086, 0x4533df73), - TOBN(0xe0542c1d, 0x3dc090bc), TOBN(0x82c996ef, 0xaa59c167), - TOBN(0xe3f735e8, 0x0ee7fc4d), TOBN(0x7b179393, 0x7c35db79), - TOBN(0xb6419e25, 0xf8c5dbfd), TOBN(0x4d9d7a1e, 0x1f327b04), - TOBN(0x979f6f9b, 0x298dfca8), TOBN(0xc7c5dff1, 0x8de9366a), - TOBN(0x1b7a588d, 0x04c82bdd), TOBN(0x68005534, 0xf8319dfd), - TOBN(0xde8a55b5, 0xd8eb9580), TOBN(0x5ea886da, 0x8d5bca81), - TOBN(0xe8530a01, 0x252a0b4d), TOBN(0x1bffb4fe, 0x35eaa0a1), - TOBN(0x2ad828b1, 0xd8e99563), TOBN(0x7de96ef5, 0x95f9cd87), - TOBN(0x4abb2d0c, 0xd77d970c), TOBN(0x03cfb933, 0xd33ef9cb), - TOBN(0xb0547c01, 0x8b211fe9), TOBN(0x2fe64809, 0xa56ed1c6), - TOBN(0xcb7d5624, 0xc2ac98cc), TOBN(0x2a1372c0, 0x1a393e33), - TOBN(0xc8d1ec1c, 0x29660521), TOBN(0xf3d31b04, 0xb37ac3e9), - TOBN(0xa29ae9df, 0x5ece6e7c), TOBN(0x0603ac8f, 0x0facfb55), - TOBN(0xcfe85b7a, 0xdda233a5), TOBN(0xe618919f, 0xbd75f0b8), - TOBN(0xf555a3d2, 0x99bf1603), TOBN(0x1f43afc9, 0xf184255a), - TOBN(0xdcdaf341, 0x319a3e02), TOBN(0xd3b117ef, 0x03903a39), - TOBN(0xe095da13, 0x65d1d131), TOBN(0x86f16367, 0xc37ad03e), - TOBN(0x5f37389e, 0x462cd8dd), TOBN(0xc103fa04, 0xd67a60e6), - TOBN(0x57c34344, 0xf4b478f0), TOBN(0xce91edd8, 0xe117c98d), - TOBN(0x001777b0, 0x231fc12e), TOBN(0x11ae47f2, 0xb207bccb), - TOBN(0xd983cf8d, 0x20f8a242), TOBN(0x7aff5b1d, 0xf22e1ad8), - TOBN(0x68fd11d0, 0x7fc4feb3), TOBN(0x5d53ae90, 0xb0f1c3e1), - TOBN(0x50fb7905, 0xec041803), TOBN(0x85e3c977, 0x14404888), - TOBN(0x0e67faed, 0xac628d8f), TOBN(0x2e865150, 0x6668532c), - TOBN(0x15acaaa4, 0x6a67a6b0), TOBN(0xf4cdee25, 0xb25cec41), - TOBN(0x49ee565a, 0xe4c6701e), TOBN(0x2a04ca66, 0xfc7d63d8), - TOBN(0xeb105018, 0xef0543fb), TOBN(0xf709a4f5, 0xd1b0d81d), - TOBN(0x5b906ee6, 0x2915d333), TOBN(0xf4a87412, 0x96f1f0ab), - TOBN(0xb6b82fa7, 0x4d82f4c2), TOBN(0x90725a60, 0x6804efb3), - TOBN(0xbc82ec46, 0xadc3425e), TOBN(0xb7b80581, 0x2787843e), - TOBN(0xdf46d91c, 0xdd1fc74c), TOBN(0xdc1c62cb, 0xe783a6c4), - TOBN(0x59d1b9f3, 0x1a04cbba), TOBN(0xd87f6f72, 0x95e40764), - TOBN(0x02b4cfc1, 0x317f4a76), TOBN(0x8d2703eb, 0x91036bce), - TOBN(0x98206cc6, 0xa5e72a56), TOBN(0x57be9ed1, 0xcf53fb0f), - TOBN(0x09374571, 0xef0b17ac), TOBN(0x74b2655e, 0xd9181b38), - TOBN(0xc8f80ea8, 0x89935d0e), TOBN(0xc0d9e942, 0x91529936), - TOBN(0x19686041, 0x1e84e0e5), TOBN(0xa5db84d3, 0xaea34c93), - TOBN(0xf9d5bb19, 0x7073a732), TOBN(0xb8d2fe56, 0x6bcfd7c0), - TOBN(0x45775f36, 0xf3eb82fa), TOBN(0x8cb20ccc, 0xfdff8b58), - TOBN(0x1659b65f, 0x8374c110), TOBN(0xb8b4a422, 0x330c789a), - TOBN(0x75e3c3ea, 0x6fe8208b), TOBN(0xbd74b9e4, 0x286e78fe), - TOBN(0x0be2e81b, 0xd7d93a1a), TOBN(0x7ed06e27, 0xdd0a5aae), - TOBN(0x721f5a58, 0x6be8b800), TOBN(0x428299d1, 0xd846db28), - TOBN(0x95cb8e6b, 0x5be88ed3), TOBN(0xc3186b23, 0x1c034e11), - TOBN(0xa6312c9e, 0x8977d99b), TOBN(0xbe944331, 0x83f531e7), - TOBN(0x8232c0c2, 0x18d3b1d4), TOBN(0x617aae8b, 0xe1247b73), - TOBN(0x40153fc4, 0x282aec3b), TOBN(0xc6063d2f, 0xf7b8f823), - TOBN(0x68f10e58, 0x3304f94c), TOBN(0x31efae74, 0xee676346), - TOBN(0xbadb6c6d, 0x40a9b97c), TOBN(0x14702c63, 0x4f666256), - TOBN(0xdeb954f1, 0x5184b2e3), TOBN(0x5184a526, 0x94b6ca40), - TOBN(0xfff05337, 0x003c32ea), TOBN(0x5aa374dd, 0x205974c7), - TOBN(0x9a763854, 0x4b0dd71a), TOBN(0x459cd27f, 0xdeb947ec), - TOBN(0xa6e28161, 0x459c2b92), TOBN(0x2f020fa8, 0x75ee8ef5), - TOBN(0xb132ec2d, 0x30b06310), TOBN(0xc3e15899, 0xbc6a4530), - TOBN(0xdc5f53fe, 0xaa3f451a), TOBN(0x3a3c7f23, 0xc2d9acac), - TOBN(0x2ec2f892, 0x6b27e58b), TOBN(0x68466ee7, 0xd742799f), - TOBN(0x98324dd4, 0x1fa26613), TOBN(0xa2dc6dab, 0xbdc29d63), - TOBN(0xf9675faa, 0xd712d657), TOBN(0x813994be, 0x21fd8d15), - TOBN(0x5ccbb722, 0xfd4f7553), TOBN(0x5135ff8b, 0xf3a36b20), - TOBN(0x44be28af, 0x69559df5), TOBN(0x40b65bed, 0x9d41bf30), - TOBN(0xd98bf2a4, 0x3734e520), TOBN(0x5e3abbe3, 0x209bdcba), - TOBN(0x77c76553, 0xbc945b35), TOBN(0x5331c093, 0xc6ef14aa), - TOBN(0x518ffe29, 0x76b60c80), TOBN(0x2285593b, 0x7ace16f8), - TOBN(0xab1f64cc, 0xbe2b9784), TOBN(0xe8f2c0d9, 0xab2421b6), - TOBN(0x617d7174, 0xc1df065c), TOBN(0xafeeb5ab, 0x5f6578fa), - TOBN(0x16ff1329, 0x263b54a8), TOBN(0x45c55808, 0xc990dce3), - TOBN(0x42eab6c0, 0xecc8c177), TOBN(0x799ea9b5, 0x5982ecaa), - TOBN(0xf65da244, 0xb607ef8e), TOBN(0x8ab226ce, 0x32a3fc2c), - TOBN(0x745741e5, 0x7ea973dc), TOBN(0x5c00ca70, 0x20888f2e), - TOBN(0x7cdce3cf, 0x45fd9cf1), TOBN(0x8a741ef1, 0x5507f872), - TOBN(0x47c51c2f, 0x196b4cec), TOBN(0x70d08e43, 0xc97ea618), - TOBN(0x930da15c, 0x15b18a2b), TOBN(0x33b6c678, 0x2f610514), - TOBN(0xc662e4f8, 0x07ac9794), TOBN(0x1eccf050, 0xba06cb79), - TOBN(0x1ff08623, 0xe7d954e5), TOBN(0x6ef2c5fb, 0x24cf71c3), - TOBN(0xb2c063d2, 0x67978453), TOBN(0xa0cf3796, 0x1d654af8), - TOBN(0x7cb242ea, 0x7ebdaa37), TOBN(0x206e0b10, 0xb86747e0), - TOBN(0x481dae5f, 0xd5ecfefc), TOBN(0x07084fd8, 0xc2bff8fc), - TOBN(0x8040a01a, 0xea324596), TOBN(0x4c646980, 0xd4de4036), - TOBN(0x9eb8ab4e, 0xd65abfc3), TOBN(0xe01cb91f, 0x13541ec7), - TOBN(0x8f029adb, 0xfd695012), TOBN(0x9ae28483, 0x3c7569ec), - TOBN(0xa5614c9e, 0xa66d80a1), TOBN(0x680a3e44, 0x75f5f911), - TOBN(0x0c07b14d, 0xceba4fc1), TOBN(0x891c285b, 0xa13071c1), - TOBN(0xcac67ceb, 0x799ece3c), TOBN(0x29b910a9, 0x41e07e27), - TOBN(0x66bdb409, 0xf2e43123), TOBN(0x06f8b137, 0x7ac9ecbe), - TOBN(0x5981fafd, 0x38547090), TOBN(0x19ab8b9f, 0x85e3415d), - TOBN(0xfc28c194, 0xc7e31b27), TOBN(0x843be0aa, 0x6fbcbb42), - TOBN(0xf3b1ed43, 0xa6db836c), TOBN(0x2a1330e4, 0x01a45c05), - TOBN(0x4f19f3c5, 0x95c1a377), TOBN(0xa85f39d0, 0x44b5ee33), - TOBN(0x3da18e6d, 0x4ae52834), TOBN(0x5a403b39, 0x7423dcb0), - TOBN(0xbb555e0a, 0xf2374aef), TOBN(0x2ad599c4, 0x1e8ca111), - TOBN(0x1b3a2fb9, 0x014b3bf8), TOBN(0x73092684, 0xf66d5007), - TOBN(0x079f1426, 0xc4340102), TOBN(0x1827cf81, 0x8fddf4de), - TOBN(0xc83605f6, 0xf10ff927), TOBN(0xd3871451, 0x23739fc6), - TOBN(0x6d163450, 0xcac1c2cc), TOBN(0x6b521296, 0xa2ec1ac5), - TOBN(0x0606c4f9, 0x6e3cb4a5), TOBN(0xe47d3f41, 0x778abff7), - TOBN(0x425a8d5e, 0xbe8e3a45), TOBN(0x53ea9e97, 0xa6102160), - TOBN(0x477a106e, 0x39cbb688), TOBN(0x532401d2, 0xf3386d32), - TOBN(0x8e564f64, 0xb1b9b421), TOBN(0xca9b8388, 0x81dad33f), - TOBN(0xb1422b4e, 0x2093913e), TOBN(0x533d2f92, 0x69bc8112), - TOBN(0x3fa017be, 0xebe7b2c7), TOBN(0xb2767c4a, 0xcaf197c6), - TOBN(0xc925ff87, 0xaedbae9f), TOBN(0x7daf0eb9, 0x36880a54), - TOBN(0x9284ddf5, 0x9c4d0e71), TOBN(0x1581cf93, 0x316f8cf5), - TOBN(0x3eeca887, 0x3ac1f452), TOBN(0xb417fce9, 0xfb6aeffe), - TOBN(0xa5918046, 0xeefb8dc3), TOBN(0x73d318ac, 0x02209400), - TOBN(0xe800400f, 0x728693e5), TOBN(0xe87d814b, 0x339927ed), - TOBN(0x93e94d3b, 0x57ea9910), TOBN(0xff8a35b6, 0x2245fb69), - TOBN(0x043853d7, 0x7f200d34), TOBN(0x470f1e68, 0x0f653ce1), - TOBN(0x81ac05bd, 0x59a06379), TOBN(0xa14052c2, 0x03930c29), - TOBN(0x6b72fab5, 0x26bc2797), TOBN(0x13670d16, 0x99f16771), - TOBN(0x00170052, 0x1e3e48d1), TOBN(0x978fe401, 0xb7adf678), - TOBN(0x55ecfb92, 0xd41c5dd4), TOBN(0x5ff8e247, 0xc7b27da5), - TOBN(0xe7518272, 0x013fb606), TOBN(0x5768d7e5, 0x2f547a3c), - TOBN(0xbb24eaa3, 0x60017a5f), TOBN(0x6b18e6e4, 0x9c64ce9b), - TOBN(0xc225c655, 0x103dde07), TOBN(0xfc3672ae, 0x7592f7ea), - TOBN(0x9606ad77, 0xd06283a1), TOBN(0x542fc650, 0xe4d59d99), - TOBN(0xabb57c49, 0x2a40e7c2), TOBN(0xac948f13, 0xa8db9f55), - TOBN(0x6d4c9682, 0xb04465c3), TOBN(0xe3d062fa, 0x6468bd15), - TOBN(0xa51729ac, 0x5f318d7e), TOBN(0x1fc87df6, 0x9eb6fc95), - TOBN(0x63d146a8, 0x0591f652), TOBN(0xa861b8f7, 0x589621aa), - TOBN(0x59f5f15a, 0xce31348c), TOBN(0x8f663391, 0x440da6da), - TOBN(0xcfa778ac, 0xb591ffa3), TOBN(0x027ca9c5, 0x4cdfebce), - TOBN(0xbe8e05a5, 0x444ea6b3), TOBN(0x8aab4e69, 0xa78d8254), - TOBN(0x2437f04f, 0xb474d6b8), TOBN(0x6597ffd4, 0x045b3855), - TOBN(0xbb0aea4e, 0xca47ecaa), TOBN(0x568aae83, 0x85c7ebfc), - TOBN(0x0e966e64, 0xc73b2383), TOBN(0x49eb3447, 0xd17d8762), - TOBN(0xde107821, 0x8da05dab), TOBN(0x443d8baa, 0x016b7236), - TOBN(0x163b63a5, 0xea7610d6), TOBN(0xe47e4185, 0xce1ca979), - TOBN(0xae648b65, 0x80baa132), TOBN(0xebf53de2, 0x0e0d5b64), - TOBN(0x8d3bfcb4, 0xd3c8c1ca), TOBN(0x0d914ef3, 0x5d04b309), - TOBN(0x55ef6415, 0x3de7d395), TOBN(0xbde1666f, 0x26b850e8), - TOBN(0xdbe1ca6e, 0xd449ab19), TOBN(0x8902b322, 0xe89a2672), - TOBN(0xb1674b7e, 0xdacb7a53), TOBN(0x8e9faf6e, 0xf52523ff), - TOBN(0x6ba535da, 0x9a85788b), TOBN(0xd21f03ae, 0xbd0626d4), - TOBN(0x099f8c47, 0xe873dc64), TOBN(0xcda8564d, 0x018ec97e), - TOBN(0x3e8d7a5c, 0xde92c68c), TOBN(0x78e035a1, 0x73323cc4), - TOBN(0x3ef26275, 0xf880ff7c), TOBN(0xa4ee3dff, 0x273eedaa), - TOBN(0x58823507, 0xaf4e18f8), TOBN(0x967ec9b5, 0x0672f328), - TOBN(0x9ded19d9, 0x559d3186), TOBN(0x5e2ab3de, 0x6cdce39c), - TOBN(0xabad6e4d, 0x11c226df), TOBN(0xf9783f43, 0x87723014), - TOBN(0x9a49a0cf, 0x1a885719), TOBN(0xfc0c1a5a, 0x90da9dbf), - TOBN(0x8bbaec49, 0x571d92ac), TOBN(0x569e85fe, 0x4692517f), - TOBN(0x8333b014, 0xa14ea4af), TOBN(0x32f2a62f, 0x12e5c5ad), - TOBN(0x98c2ce3a, 0x06d89b85), TOBN(0xb90741aa, 0x2ff77a08), - TOBN(0x2530defc, 0x01f795a2), TOBN(0xd6e5ba0b, 0x84b3c199), - TOBN(0x7d8e8451, 0x12e4c936), TOBN(0xae419f7d, 0xbd0be17b), - TOBN(0xa583fc8c, 0x22262bc9), TOBN(0x6b842ac7, 0x91bfe2bd), - TOBN(0x33cef4e9, 0x440d6827), TOBN(0x5f69f4de, 0xef81fb14), - TOBN(0xf16cf6f6, 0x234fbb92), TOBN(0x76ae3fc3, 0xd9e7e158), - TOBN(0x4e89f6c2, 0xe9740b33), TOBN(0x677bc85d, 0x4962d6a1), - TOBN(0x6c6d8a7f, 0x68d10d15), TOBN(0x5f9a7224, 0x0257b1cd), - TOBN(0x7096b916, 0x4ad85961), TOBN(0x5f8c47f7, 0xe657ab4a), - TOBN(0xde57d7d0, 0xf7461d7e), TOBN(0x7eb6094d, 0x80ce5ee2), - TOBN(0x0b1e1dfd, 0x34190547), TOBN(0x8a394f43, 0xf05dd150), - TOBN(0x0a9eb24d, 0x97df44e6), TOBN(0x78ca06bf, 0x87675719), - TOBN(0x6f0b3462, 0x6ffeec22), TOBN(0x9d91bcea, 0x36cdd8fb), - TOBN(0xac83363c, 0xa105be47), TOBN(0x81ba76c1, 0x069710e3), - TOBN(0x3d1b24cb, 0x28c682c6), TOBN(0x27f25228, 0x8612575b), - TOBN(0xb587c779, 0xe8e66e98), TOBN(0x7b0c03e9, 0x405eb1fe), - TOBN(0xfdf0d030, 0x15b548e7), TOBN(0xa8be76e0, 0x38b36af7), - TOBN(0x4cdab04a, 0x4f310c40), TOBN(0x6287223e, 0xf47ecaec), - TOBN(0x678e6055, 0x8b399320), TOBN(0x61fe3fa6, 0xc01e4646), - TOBN(0xc482866b, 0x03261a5e), TOBN(0xdfcf45b8, 0x5c2f244a), - TOBN(0x8fab9a51, 0x2f684b43), TOBN(0xf796c654, 0xc7220a66), - TOBN(0x1d90707e, 0xf5afa58f), TOBN(0x2c421d97, 0x4fdbe0de), - TOBN(0xc4f4cda3, 0xaf2ebc2f), TOBN(0xa0af843d, 0xcb4efe24), - TOBN(0x53b857c1, 0x9ccd10b1), TOBN(0xddc9d1eb, 0x914d3e04), - TOBN(0x7bdec8bb, 0x62771deb), TOBN(0x829277aa, 0x91c5aa81), - TOBN(0x7af18dd6, 0x832391ae), TOBN(0x1740f316, 0xc71a84ca)}, - {TOBN(0x8928e99a, 0xeeaf8c49), TOBN(0xee7aa73d, 0x6e24d728), - TOBN(0x4c5007c2, 0xe72b156c), TOBN(0x5fcf57c5, 0xed408a1d), - TOBN(0x9f719e39, 0xb6057604), TOBN(0x7d343c01, 0xc2868bbf), - TOBN(0x2cca254b, 0x7e103e2d), TOBN(0xe6eb38a9, 0xf131bea2), - TOBN(0xb33e624f, 0x8be762b4), TOBN(0x2a9ee4d1, 0x058e3413), - TOBN(0x968e6369, 0x67d805fa), TOBN(0x9848949b, 0x7db8bfd7), - TOBN(0x5308d7e5, 0xd23a8417), TOBN(0x892f3b1d, 0xf3e29da5), - TOBN(0xc95c139e, 0x3dee471f), TOBN(0x8631594d, 0xd757e089), - TOBN(0xe0c82a3c, 0xde918dcc), TOBN(0x2e7b5994, 0x26fdcf4b), - TOBN(0x82c50249, 0x32cb1b2d), TOBN(0xea613a9d, 0x7657ae07), - TOBN(0xc2eb5f6c, 0xf1fdc9f7), TOBN(0xb6eae8b8, 0x879fe682), - TOBN(0x253dfee0, 0x591cbc7f), TOBN(0x000da713, 0x3e1290e6), - TOBN(0x1083e2ea, 0x1f095615), TOBN(0x0a28ad77, 0x14e68c33), - TOBN(0x6bfc0252, 0x3d8818be), TOBN(0xb585113a, 0xf35850cd), - TOBN(0x7d935f0b, 0x30df8aa1), TOBN(0xaddda07c, 0x4ab7e3ac), - TOBN(0x92c34299, 0x552f00cb), TOBN(0xc33ed1de, 0x2909df6c), - TOBN(0x22c2195d, 0x80e87766), TOBN(0x9e99e6d8, 0x9ddf4ac0), - TOBN(0x09642e4e, 0x65e74934), TOBN(0x2610ffa2, 0xff1ff241), - TOBN(0x4d1d47d4, 0x751c8159), TOBN(0x697b4985, 0xaf3a9363), - TOBN(0x0318ca46, 0x87477c33), TOBN(0xa90cb565, 0x9441eff3), - TOBN(0x58bb3848, 0x36f024cb), TOBN(0x85be1f77, 0x36016168), - TOBN(0x6c59587c, 0xdc7e07f1), TOBN(0x191be071, 0xaf1d8f02), - TOBN(0xbf169fa5, 0xcca5e55c), TOBN(0x3864ba3c, 0xf7d04eac), - TOBN(0x915e367f, 0x8d7d05db), TOBN(0xb48a876d, 0xa6549e5d), - TOBN(0xef89c656, 0x580e40a2), TOBN(0xf194ed8c, 0x728068bc), - TOBN(0x74528045, 0xa47990c9), TOBN(0xf53fc7d7, 0x5e1a4649), - TOBN(0xbec5ae9b, 0x78593e7d), TOBN(0x2cac4ee3, 0x41db65d7), - TOBN(0xa8c1eb24, 0x04a3d39b), TOBN(0x53b7d634, 0x03f8f3ef), - TOBN(0x2dc40d48, 0x3e07113c), TOBN(0x6e4a5d39, 0x7d8b63ae), - TOBN(0x5582a94b, 0x79684c2b), TOBN(0x932b33d4, 0x622da26c), - TOBN(0xf534f651, 0x0dbbf08d), TOBN(0x211d07c9, 0x64c23a52), - TOBN(0x0eeece0f, 0xee5bdc9b), TOBN(0xdf178168, 0xf7015558), - TOBN(0xd4294635, 0x0a712229), TOBN(0x93cbe448, 0x09273f8c), - TOBN(0x00b095ef, 0x8f13bc83), TOBN(0xbb741972, 0x8798978c), - TOBN(0x9d7309a2, 0x56dbe6e7), TOBN(0xe578ec56, 0x5a5d39ec), - TOBN(0x3961151b, 0x851f9a31), TOBN(0x2da7715d, 0xe5709eb4), - TOBN(0x867f3017, 0x53dfabf0), TOBN(0x728d2078, 0xb8e39259), - TOBN(0x5c75a0cd, 0x815d9958), TOBN(0xf84867a6, 0x16603be1), - TOBN(0xc865b13d, 0x70e35b1c), TOBN(0x02414468, 0x19b03e2c), - TOBN(0xe46041da, 0xac1f3121), TOBN(0x7c9017ad, 0x6f028a7c), - TOBN(0xabc96de9, 0x0a482873), TOBN(0x4265d6b1, 0xb77e54d4), - TOBN(0x68c38e79, 0xa57d88e7), TOBN(0xd461d766, 0x9ce82de3), - TOBN(0x817a9ec5, 0x64a7e489), TOBN(0xcc5675cd, 0xa0def5f2), - TOBN(0x9a00e785, 0x985d494e), TOBN(0xc626833f, 0x1b03514a), - TOBN(0xabe7905a, 0x83cdd60e), TOBN(0x50602fb5, 0xa1170184), - TOBN(0x689886cd, 0xb023642a), TOBN(0xd568d090, 0xa6e1fb00), - TOBN(0x5b1922c7, 0x0259217f), TOBN(0x93831cd9, 0xc43141e4), - TOBN(0xdfca3587, 0x0c95f86e), TOBN(0xdec2057a, 0x568ae828), - TOBN(0xc44ea599, 0xf98a759a), TOBN(0x55a0a7a2, 0xf7c23c1d), - TOBN(0xd5ffb6e6, 0x94c4f687), TOBN(0x3563cce2, 0x12848478), - TOBN(0x812b3517, 0xe7b1fbe1), TOBN(0x8a7dc979, 0x4f7338e0), - TOBN(0x211ecee9, 0x52d048db), TOBN(0x2eea4056, 0xc86ea3b8), - TOBN(0xd8cb68a7, 0xba772b34), TOBN(0xe16ed341, 0x5f4e2541), - TOBN(0x9b32f6a6, 0x0fec14db), TOBN(0xeee376f7, 0x391698be), - TOBN(0xe9a7aa17, 0x83674c02), TOBN(0x65832f97, 0x5843022a), - TOBN(0x29f3a8da, 0x5ba4990f), TOBN(0x79a59c3a, 0xfb8e3216), - TOBN(0x9cdc4d2e, 0xbd19bb16), TOBN(0xc6c7cfd0, 0xb3262d86), - TOBN(0xd4ce14d0, 0x969c0b47), TOBN(0x1fa352b7, 0x13e56128), - TOBN(0x383d55b8, 0x973db6d3), TOBN(0x71836850, 0xe8e5b7bf), - TOBN(0xc7714596, 0xe6bb571f), TOBN(0x259df31f, 0x2d5b2dd2), - TOBN(0x568f8925, 0x913cc16d), TOBN(0x18bc5b6d, 0xe1a26f5a), - TOBN(0xdfa413be, 0xf5f499ae), TOBN(0xf8835dec, 0xc3f0ae84), - TOBN(0xb6e60bd8, 0x65a40ab0), TOBN(0x65596439, 0x194b377e), - TOBN(0xbcd85625, 0x92084a69), TOBN(0x5ce433b9, 0x4f23ede0), - TOBN(0xe8e8f04f, 0x6ad65143), TOBN(0x11511827, 0xd6e14af6), - TOBN(0x3d390a10, 0x8295c0c7), TOBN(0x71e29ee4, 0x621eba16), - TOBN(0xa588fc09, 0x63717b46), TOBN(0x02be02fe, 0xe06ad4a2), - TOBN(0x931558c6, 0x04c22b22), TOBN(0xbb4d4bd6, 0x12f3c849), - TOBN(0x54a4f496, 0x20efd662), TOBN(0x92ba6d20, 0xc5952d14), - TOBN(0x2db8ea1e, 0xcc9784c2), TOBN(0x81cc10ca, 0x4b353644), - TOBN(0x40b570ad, 0x4b4d7f6c), TOBN(0x5c9f1d96, 0x84a1dcd2), - TOBN(0x01379f81, 0x3147e797), TOBN(0xe5c6097b, 0x2bd499f5), - TOBN(0x40dcafa6, 0x328e5e20), TOBN(0xf7b5244a, 0x54815550), - TOBN(0xb9a4f118, 0x47bfc978), TOBN(0x0ea0e79f, 0xd25825b1), - TOBN(0xa50f96eb, 0x646c7ecf), TOBN(0xeb811493, 0x446dea9d), - TOBN(0x2af04677, 0xdfabcf69), TOBN(0xbe3a068f, 0xc713f6e8), - TOBN(0x860d523d, 0x42e06189), TOBN(0xbf077941, 0x4e3aff13), - TOBN(0x0b616dca, 0xc1b20650), TOBN(0xe66dd6d1, 0x2131300d), - TOBN(0xd4a0fd67, 0xff99abde), TOBN(0xc9903550, 0xc7aac50d), - TOBN(0x022ecf8b, 0x7c46b2d7), TOBN(0x3333b1e8, 0x3abf92af), - TOBN(0x11cc113c, 0x6c491c14), TOBN(0x05976688, 0x80dd3f88), - TOBN(0xf5b4d9e7, 0x29d932ed), TOBN(0xe982aad8, 0xa2c38b6d), - TOBN(0x6f925347, 0x8be0dcf0), TOBN(0x700080ae, 0x65ca53f2), - TOBN(0xd8131156, 0x443ca77f), TOBN(0xe92d6942, 0xec51f984), - TOBN(0xd2a08af8, 0x85dfe9ae), TOBN(0xd825d9a5, 0x4d2a86ca), - TOBN(0x2c53988d, 0x39dff020), TOBN(0xf38b135a, 0x430cdc40), - TOBN(0x0c918ae0, 0x62a7150b), TOBN(0xf31fd8de, 0x0c340e9b), - TOBN(0xafa0e7ae, 0x4dbbf02e), TOBN(0x5847fb2a, 0x5eba6239), - TOBN(0x6b1647dc, 0xdccbac8b), TOBN(0xb642aa78, 0x06f485c8), - TOBN(0x873f3765, 0x7038ecdf), TOBN(0x2ce5e865, 0xfa49d3fe), - TOBN(0xea223788, 0xc98c4400), TOBN(0x8104a8cd, 0xf1fa5279), - TOBN(0xbcf7cc7a, 0x06becfd7), TOBN(0x49424316, 0xc8f974ae), - TOBN(0xc0da65e7, 0x84d6365d), TOBN(0xbcb7443f, 0x8f759fb8), - TOBN(0x35c712b1, 0x7ae81930), TOBN(0x80428dff, 0x4c6e08ab), - TOBN(0xf19dafef, 0xa4faf843), TOBN(0xced8538d, 0xffa9855f), - TOBN(0x20ac409c, 0xbe3ac7ce), TOBN(0x358c1fb6, 0x882da71e), - TOBN(0xafa9c0e5, 0xfd349961), TOBN(0x2b2cfa51, 0x8421c2fc), - TOBN(0x2a80db17, 0xf3a28d38), TOBN(0xa8aba539, 0x5d138e7e), - TOBN(0x52012d1d, 0x6e96eb8d), TOBN(0x65d8dea0, 0xcbaf9622), - TOBN(0x57735447, 0xb264f56c), TOBN(0xbeebef3f, 0x1b6c8da2), - TOBN(0xfc346d98, 0xce785254), TOBN(0xd50e8d72, 0xbb64a161), - TOBN(0xc03567c7, 0x49794add), TOBN(0x15a76065, 0x752c7ef6), - TOBN(0x59f3a222, 0x961f23d6), TOBN(0x378e4438, 0x73ecc0b0), - TOBN(0xc74be434, 0x5a82fde4), TOBN(0xae509af2, 0xd8b9cf34), - TOBN(0x4a61ee46, 0x577f44a1), TOBN(0xe09b748c, 0xb611deeb), - TOBN(0xc0481b2c, 0xf5f7b884), TOBN(0x35626678, 0x61acfa6b), - TOBN(0x37f4c518, 0xbf8d21e6), TOBN(0x22d96531, 0xb205a76d), - TOBN(0x37fb85e1, 0x954073c0), TOBN(0xbceafe4f, 0x65b3a567), - TOBN(0xefecdef7, 0xbe42a582), TOBN(0xd3fc6080, 0x65046be6), - TOBN(0xc9af13c8, 0x09e8dba9), TOBN(0x1e6c9847, 0x641491ff), - TOBN(0x3b574925, 0xd30c31f7), TOBN(0xb7eb72ba, 0xac2a2122), - TOBN(0x776a0dac, 0xef0859e7), TOBN(0x06fec314, 0x21900942), - TOBN(0x2464bc10, 0xf8c22049), TOBN(0x9bfbcce7, 0x875ebf69), - TOBN(0xd7a88e2a, 0x4336326b), TOBN(0xda05261c, 0x5bc2acfa), - TOBN(0xc29f5bdc, 0xeba7efc8), TOBN(0x471237ca, 0x25dbbf2e), - TOBN(0xa72773f2, 0x2975f127), TOBN(0xdc744e8e, 0x04d0b326), - TOBN(0x38a7ed16, 0xa56edb73), TOBN(0x64357e37, 0x2c007e70), - TOBN(0xa167d15b, 0x5080b400), TOBN(0x07b41164, 0x23de4be1), - TOBN(0xb2d91e32, 0x74c89883), TOBN(0x3c162821, 0x2882e7ed), - TOBN(0xad6b36ba, 0x7503e482), TOBN(0x48434e8e, 0x0ea34331), - TOBN(0x79f4f24f, 0x2c7ae0b9), TOBN(0xc46fbf81, 0x1939b44a), - TOBN(0x76fefae8, 0x56595eb1), TOBN(0x417b66ab, 0xcd5f29c7), - TOBN(0x5f2332b2, 0xc5ceec20), TOBN(0xd69661ff, 0xe1a1cae2), - TOBN(0x5ede7e52, 0x9b0286e6), TOBN(0x9d062529, 0xe276b993), - TOBN(0x324794b0, 0x7e50122b), TOBN(0xdd744f8b, 0x4af07ca5), - TOBN(0x30a12f08, 0xd63fc97b), TOBN(0x39650f1a, 0x76626d9d), - TOBN(0x101b47f7, 0x1fa38477), TOBN(0x3d815f19, 0xd4dc124f), - TOBN(0x1569ae95, 0xb26eb58a), TOBN(0xc3cde188, 0x95fb1887), - TOBN(0x54e9f37b, 0xf9539a48), TOBN(0xb0100e06, 0x7408c1a5), - TOBN(0x821d9811, 0xea580cbb), TOBN(0x8af52d35, 0x86e50c56), - TOBN(0xdfbd9d47, 0xdbbf698b), TOBN(0x2961a1ea, 0x03dc1c73), - TOBN(0x203d38f8, 0xe76a5df8), TOBN(0x08a53a68, 0x6def707a), - TOBN(0x26eefb48, 0x1bee45d4), TOBN(0xb3cee346, 0x3c688036), - TOBN(0x463c5315, 0xc42f2469), TOBN(0x19d84d2e, 0x81378162), - TOBN(0x22d7c3c5, 0x1c4d349f), TOBN(0x65965844, 0x163d59c5), - TOBN(0xcf198c56, 0xb8abceae), TOBN(0x6fb1fb1b, 0x628559d5), - TOBN(0x8bbffd06, 0x07bf8fe3), TOBN(0x46259c58, 0x3467734b), - TOBN(0xd8953cea, 0x35f7f0d3), TOBN(0x1f0bece2, 0xd65b0ff1), - TOBN(0xf7d5b4b3, 0xf3c72914), TOBN(0x29e8ea95, 0x3cb53389), - TOBN(0x4a365626, 0x836b6d46), TOBN(0xe849f910, 0xea174fde), - TOBN(0x7ec62fbb, 0xf4737f21), TOBN(0xd8dba5ab, 0x6209f5ac), - TOBN(0x24b5d7a9, 0xa5f9adbe), TOBN(0x707d28f7, 0xa61dc768), - TOBN(0x7711460b, 0xcaa999ea), TOBN(0xba7b174d, 0x1c92e4cc), - TOBN(0x3c4bab66, 0x18d4bf2d), TOBN(0xb8f0c980, 0xeb8bd279), - TOBN(0x024bea9a, 0x324b4737), TOBN(0xfba9e423, 0x32a83bca), - TOBN(0x6e635643, 0xa232dced), TOBN(0x99619367, 0x2571c8ba), - TOBN(0xe8c9f357, 0x54b7032b), TOBN(0xf936b3ba, 0x2442d54a), - TOBN(0x2263f0f0, 0x8290c65a), TOBN(0x48989780, 0xee2c7fdb), - TOBN(0xadc5d55a, 0x13d4f95e), TOBN(0x737cff85, 0xad9b8500), - TOBN(0x271c557b, 0x8a73f43d), TOBN(0xbed617a4, 0xe18bc476), - TOBN(0x66245401, 0x7dfd8ab2), TOBN(0xae7b89ae, 0x3a2870aa), - TOBN(0x1b555f53, 0x23a7e545), TOBN(0x6791e247, 0xbe057e4c), - TOBN(0x860136ad, 0x324fa34d), TOBN(0xea111447, 0x4cbeae28), - TOBN(0x023a4270, 0xbedd3299), TOBN(0x3d5c3a7f, 0xc1c35c34), - TOBN(0xb0f6db67, 0x8d0412d2), TOBN(0xd92625e2, 0xfcdc6b9a), - TOBN(0x92ae5ccc, 0x4e28a982), TOBN(0xea251c36, 0x47a3ce7e), - TOBN(0x9d658932, 0x790691bf), TOBN(0xed610589, 0x06b736ae), - TOBN(0x712c2f04, 0xc0d63b6e), TOBN(0x5cf06fd5, 0xc63d488f), - TOBN(0x97363fac, 0xd9588e41), TOBN(0x1f9bf762, 0x2b93257e), - TOBN(0xa9d1ffc4, 0x667acace), TOBN(0x1cf4a1aa, 0x0a061ecf), - TOBN(0x40e48a49, 0xdc1818d0), TOBN(0x0643ff39, 0xa3621ab0), - TOBN(0x5768640c, 0xe39ef639), TOBN(0x1fc099ea, 0x04d86854), - TOBN(0x9130b9c3, 0xeccd28fd), TOBN(0xd743cbd2, 0x7eec54ab), - TOBN(0x052b146f, 0xe5b475b6), TOBN(0x058d9a82, 0x900a7d1f), - TOBN(0x65e02292, 0x91262b72), TOBN(0x96f924f9, 0xbb0edf03), - TOBN(0x5cfa59c8, 0xfe206842), TOBN(0xf6037004, 0x5eafa720), - TOBN(0x5f30699e, 0x18d7dd96), TOBN(0x381e8782, 0xcbab2495), - TOBN(0x91669b46, 0xdd8be949), TOBN(0xb40606f5, 0x26aae8ef), - TOBN(0x2812b839, 0xfc6751a4), TOBN(0x16196214, 0xfba800ef), - TOBN(0x4398d5ca, 0x4c1a2875), TOBN(0x720c00ee, 0x653d8349), - TOBN(0xc2699eb0, 0xd820007c), TOBN(0x880ee660, 0xa39b5825), - TOBN(0x70694694, 0x471f6984), TOBN(0xf7d16ea8, 0xe3dda99a), - TOBN(0x28d675b2, 0xc0519a23), TOBN(0x9ebf94fe, 0x4f6952e3), - TOBN(0xf28bb767, 0xa2294a8a), TOBN(0x85512b4d, 0xfe0af3f5), - TOBN(0x18958ba8, 0x99b16a0d), TOBN(0x95c2430c, 0xba7548a7), - TOBN(0xb30d1b10, 0xa16be615), TOBN(0xe3ebbb97, 0x85bfb74c), - TOBN(0xa3273cfe, 0x18549fdb), TOBN(0xf6e200bf, 0x4fcdb792), - TOBN(0x54a76e18, 0x83aba56c), TOBN(0x73ec66f6, 0x89ef6aa2), - TOBN(0x8d17add7, 0xd1b9a305), TOBN(0xa959c5b9, 0xb7ae1b9d), - TOBN(0x88643522, 0x6bcc094a), TOBN(0xcc5616c4, 0xd7d429b9), - TOBN(0xa6dada01, 0xe6a33f7c), TOBN(0xc6217a07, 0x9d4e70ad), - TOBN(0xd619a818, 0x09c15b7c), TOBN(0xea06b329, 0x0e80c854), - TOBN(0x174811ce, 0xa5f5e7b9), TOBN(0x66dfc310, 0x787c65f4), - TOBN(0x4ea7bd69, 0x3316ab54), TOBN(0xc12c4acb, 0x1dcc0f70), - TOBN(0xe4308d1a, 0x1e407dd9), TOBN(0xe8a3587c, 0x91afa997), - TOBN(0xea296c12, 0xab77b7a5), TOBN(0xb5ad49e4, 0x673c0d52), - TOBN(0x40f9b2b2, 0x7006085a), TOBN(0xa88ff340, 0x87bf6ec2), - TOBN(0x978603b1, 0x4e3066a6), TOBN(0xb3f99fc2, 0xb5e486e2), - TOBN(0x07b53f5e, 0xb2e63645), TOBN(0xbe57e547, 0x84c84232), - TOBN(0xd779c216, 0x7214d5cf), TOBN(0x617969cd, 0x029a3aca), - TOBN(0xd17668cd, 0x8a7017a0), TOBN(0x77b4d19a, 0xbe9b7ee8), - TOBN(0x58fd0e93, 0x9c161776), TOBN(0xa8c4f4ef, 0xd5968a72), - TOBN(0x296071cc, 0x67b3de77), TOBN(0xae3c0b8e, 0x634f7905), - TOBN(0x67e440c2, 0x8a7100c9), TOBN(0xbb8c3c1b, 0xeb4b9b42), - TOBN(0x6d71e8ea, 0xc51b3583), TOBN(0x7591f5af, 0x9525e642), - TOBN(0xf73a2f7b, 0x13f509f3), TOBN(0x618487aa, 0x5619ac9b), - TOBN(0x3a72e5f7, 0x9d61718a), TOBN(0x00413bcc, 0x7592d28c), - TOBN(0x7d9b11d3, 0x963c35cf), TOBN(0x77623bcf, 0xb90a46ed), - TOBN(0xdeef273b, 0xdcdd2a50), TOBN(0x4a741f9b, 0x0601846e), - TOBN(0x33b89e51, 0x0ec6e929), TOBN(0xcb02319f, 0x8b7f22cd), - TOBN(0xbbe1500d, 0x084bae24), TOBN(0x2f0ae8d7, 0x343d2693), - TOBN(0xacffb5f2, 0x7cdef811), TOBN(0xaa0c030a, 0x263fb94f), - TOBN(0x6eef0d61, 0xa0f442de), TOBN(0xf92e1817, 0x27b139d3), - TOBN(0x1ae6deb7, 0x0ad8bc28), TOBN(0xa89e38dc, 0xc0514130), - TOBN(0x81eeb865, 0xd2fdca23), TOBN(0x5a15ee08, 0xcc8ef895), - TOBN(0x768fa10a, 0x01905614), TOBN(0xeff5b8ef, 0x880ee19b), - TOBN(0xf0c0cabb, 0xcb1c8a0e), TOBN(0x2e1ee9cd, 0xb8c838f9), - TOBN(0x0587d8b8, 0x8a4a14c0), TOBN(0xf6f27896, 0x2ff698e5), - TOBN(0xed38ef1c, 0x89ee6256), TOBN(0xf44ee1fe, 0x6b353b45), - TOBN(0x9115c0c7, 0x70e903b3), TOBN(0xc78ec0a1, 0x818f31df), - TOBN(0x6c003324, 0xb7dccbc6), TOBN(0xd96dd1f3, 0x163bbc25), - TOBN(0x33aa82dd, 0x5cedd805), TOBN(0x123aae4f, 0x7f7eb2f1), - TOBN(0x1723fcf5, 0xa26262cd), TOBN(0x1f7f4d5d, 0x0060ebd5), - TOBN(0xf19c5c01, 0xb2eaa3af), TOBN(0x2ccb9b14, 0x9790accf), - TOBN(0x1f9c1cad, 0x52324aa6), TOBN(0x63200526, 0x7247df54), - TOBN(0x5732fe42, 0xbac96f82), TOBN(0x52fe771f, 0x01a1c384), - TOBN(0x546ca13d, 0xb1001684), TOBN(0xb56b4eee, 0xa1709f75), - TOBN(0x266545a9, 0xd5db8672), TOBN(0xed971c90, 0x1e8f3cfb), - TOBN(0x4e7d8691, 0xe3a07b29), TOBN(0x7570d9ec, 0xe4b696b9), - TOBN(0xdc5fa067, 0x7bc7e9ae), TOBN(0x68b44caf, 0xc82c4844), - TOBN(0x519d34b3, 0xbf44da80), TOBN(0x283834f9, 0x5ab32e66), - TOBN(0x6e608797, 0x6278a000), TOBN(0x1e62960e, 0x627312f6), - TOBN(0x9b87b27b, 0xe6901c55), TOBN(0x80e78538, 0x24fdbc1f), - TOBN(0xbbbc0951, 0x2facc27d), TOBN(0x06394239, 0xac143b5a), - TOBN(0x35bb4a40, 0x376c1944), TOBN(0x7cb62694, 0x63da1511), - TOBN(0xafd29161, 0xb7148a3b), TOBN(0xa6f9d9ed, 0x4e2ea2ee), - TOBN(0x15dc2ca2, 0x880dd212), TOBN(0x903c3813, 0xa61139a9), - TOBN(0x2aa7b46d, 0x6c0f8785), TOBN(0x36ce2871, 0x901c60ff), - TOBN(0xc683b028, 0xe10d9c12), TOBN(0x7573baa2, 0x032f33d3), - TOBN(0x87a9b1f6, 0x67a31b58), TOBN(0xfd3ed11a, 0xf4ffae12), - TOBN(0x83dcaa9a, 0x0cb2748e), TOBN(0x8239f018, 0x5d6fdf16), - TOBN(0xba67b49c, 0x72753941), TOBN(0x2beec455, 0xc321cb36), - TOBN(0x88015606, 0x3f8b84ce), TOBN(0x76417083, 0x8d38c86f), - TOBN(0x054f1ca7, 0x598953dd), TOBN(0xc939e110, 0x4e8e7429), - TOBN(0x9b1ac2b3, 0x5a914f2f), TOBN(0x39e35ed3, 0xe74b8f9c), - TOBN(0xd0debdb2, 0x781b2fb0), TOBN(0x1585638f, 0x2d997ba2), - TOBN(0x9c4b646e, 0x9e2fce99), TOBN(0x68a21081, 0x1e80857f), - TOBN(0x06d54e44, 0x3643b52a), TOBN(0xde8d6d63, 0x0d8eb843), - TOBN(0x70321563, 0x42146a0a), TOBN(0x8ba826f2, 0x5eaa3622), - TOBN(0x227a58bd, 0x86138787), TOBN(0x43b6c03c, 0x10281d37), - TOBN(0x6326afbb, 0xb54dde39), TOBN(0x744e5e8a, 0xdb6f2d5f), - TOBN(0x48b2a99a, 0xcff158e1), TOBN(0xa93c8fa0, 0xef87918f), - TOBN(0x2182f956, 0xde058c5c), TOBN(0x216235d2, 0x936f9e7a), - TOBN(0xace0c0db, 0xd2e31e67), TOBN(0xc96449bf, 0xf23ac3e7), - TOBN(0x7e9a2874, 0x170693bd), TOBN(0xa28e14fd, 0xa45e6335), - TOBN(0x5757f6b3, 0x56427344), TOBN(0x822e4556, 0xacf8edf9), - TOBN(0x2b7a6ee2, 0xe6a285cd), TOBN(0x5866f211, 0xa9df3af0), - TOBN(0x40dde2dd, 0xf845b844), TOBN(0x986c3726, 0x110e5e49), - TOBN(0x73680c2a, 0xf7172277), TOBN(0x57b94f0f, 0x0cccb244), - TOBN(0xbdff7267, 0x2d438ca7), TOBN(0xbad1ce11, 0xcf4663fd), - TOBN(0x9813ed9d, 0xd8f71cae), TOBN(0xf43272a6, 0x961fdaa6), - TOBN(0xbeff0119, 0xbd6d1637), TOBN(0xfebc4f91, 0x30361978), - TOBN(0x02b37a95, 0x2f41deff), TOBN(0x0e44a59a, 0xe63b89b7), - TOBN(0x673257dc, 0x143ff951), TOBN(0x19c02205, 0xd752baf4), - TOBN(0x46c23069, 0xc4b7d692), TOBN(0x2e6392c3, 0xfd1502ac), - TOBN(0x6057b1a2, 0x1b220846), TOBN(0xe51ff946, 0x0c1b5b63)}, - {TOBN(0x6e85cb51, 0x566c5c43), TOBN(0xcff9c919, 0x3597f046), - TOBN(0x9354e90c, 0x4994d94a), TOBN(0xe0a39332, 0x2147927d), - TOBN(0x8427fac1, 0x0dc1eb2b), TOBN(0x88cfd8c2, 0x2ff319fa), - TOBN(0xe2d4e684, 0x01965274), TOBN(0xfa2e067d, 0x67aaa746), - TOBN(0xb6d92a7f, 0x3e5f9f11), TOBN(0x9afe153a, 0xd6cb3b8e), - TOBN(0x4d1a6dd7, 0xddf800bd), TOBN(0xf6c13cc0, 0xcaf17e19), - TOBN(0x15f6c58e, 0x325fc3ee), TOBN(0x71095400, 0xa31dc3b2), - TOBN(0x168e7c07, 0xafa3d3e7), TOBN(0x3f8417a1, 0x94c7ae2d), - TOBN(0xec234772, 0x813b230d), TOBN(0x634d0f5f, 0x17344427), - TOBN(0x11548ab1, 0xd77fc56a), TOBN(0x7fab1750, 0xce06af77), - TOBN(0xb62c10a7, 0x4f7c4f83), TOBN(0xa7d2edc4, 0x220a67d9), - TOBN(0x1c404170, 0x921209a0), TOBN(0x0b9815a0, 0xface59f0), - TOBN(0x2842589b, 0x319540c3), TOBN(0x18490f59, 0xa283d6f8), - TOBN(0xa2731f84, 0xdaae9fcb), TOBN(0x3db6d960, 0xc3683ba0), - TOBN(0xc85c63bb, 0x14611069), TOBN(0xb19436af, 0x0788bf05), - TOBN(0x905459df, 0x347460d2), TOBN(0x73f6e094, 0xe11a7db1), - TOBN(0xdc7f938e, 0xb6357f37), TOBN(0xc5d00f79, 0x2bd8aa62), - TOBN(0xc878dcb9, 0x2ca979fc), TOBN(0x37e83ed9, 0xeb023a99), - TOBN(0x6b23e273, 0x1560bf3d), TOBN(0x1086e459, 0x1d0fae61), - TOBN(0x78248316, 0x9a9414bd), TOBN(0x1b956bc0, 0xf0ea9ea1), - TOBN(0x7b85bb91, 0xc31b9c38), TOBN(0x0c5aa90b, 0x48ef57b5), - TOBN(0xdedeb169, 0xaf3bab6f), TOBN(0xe610ad73, 0x2d373685), - TOBN(0xf13870df, 0x02ba8e15), TOBN(0x0337edb6, 0x8ca7f771), - TOBN(0xe4acf747, 0xb62c036c), TOBN(0xd921d576, 0xb6b94e81), - TOBN(0xdbc86439, 0x2c422f7a), TOBN(0xfb635362, 0xed348898), - TOBN(0x83084668, 0xc45bfcd1), TOBN(0xc357c9e3, 0x2b315e11), - TOBN(0xb173b540, 0x5b2e5b8c), TOBN(0x7e946931, 0xe102b9a4), - TOBN(0x17c890eb, 0x7b0fb199), TOBN(0xec225a83, 0xd61b662b), - TOBN(0xf306a3c8, 0xee3c76cb), TOBN(0x3cf11623, 0xd32a1f6e), - TOBN(0xe6d5ab64, 0x6863e956), TOBN(0x3b8a4cbe, 0x5c005c26), - TOBN(0xdcd529a5, 0x9ce6bb27), TOBN(0xc4afaa52, 0x04d4b16f), - TOBN(0xb0624a26, 0x7923798d), TOBN(0x85e56df6, 0x6b307fab), - TOBN(0x0281893c, 0x2bf29698), TOBN(0x91fc19a4, 0xd7ce7603), - TOBN(0x75a5dca3, 0xad9a558f), TOBN(0x40ceb3fa, 0x4d50bf77), - TOBN(0x1baf6060, 0xbc9ba369), TOBN(0x927e1037, 0x597888c2), - TOBN(0xd936bf19, 0x86a34c07), TOBN(0xd4cf10c1, 0xc34ae980), - TOBN(0x3a3e5334, 0x859dd614), TOBN(0x9c475b5b, 0x18d0c8ee), - TOBN(0x63080d1f, 0x07cd51d5), TOBN(0xc9c0d0a6, 0xb88b4326), - TOBN(0x1ac98691, 0xc234296f), TOBN(0x2a0a83a4, 0x94887fb6), - TOBN(0x56511427, 0x0cea9cf2), TOBN(0x5230a6e8, 0xa24802f5), - TOBN(0xf7a2bf0f, 0x72e3d5c1), TOBN(0x37717446, 0x4f21439e), - TOBN(0xfedcbf25, 0x9ce30334), TOBN(0xe0030a78, 0x7ce202f9), - TOBN(0x6f2d9ebf, 0x1202e9ca), TOBN(0xe79dde6c, 0x75e6e591), - TOBN(0xf52072af, 0xf1dac4f8), TOBN(0x6c8d087e, 0xbb9b404d), - TOBN(0xad0fc73d, 0xbce913af), TOBN(0x909e587b, 0x458a07cb), - TOBN(0x1300da84, 0xd4f00c8a), TOBN(0x425cd048, 0xb54466ac), - TOBN(0xb59cb9be, 0x90e9d8bf), TOBN(0x991616db, 0x3e431b0e), - TOBN(0xd3aa117a, 0x531aecff), TOBN(0x91af92d3, 0x59f4dc3b), - TOBN(0x9b1ec292, 0xe93fda29), TOBN(0x76bb6c17, 0xe97d91bc), - TOBN(0x7509d95f, 0xaface1e6), TOBN(0x3653fe47, 0xbe855ae3), - TOBN(0x73180b28, 0x0f680e75), TOBN(0x75eefd1b, 0xeeb6c26c), - TOBN(0xa4cdf29f, 0xb66d4236), TOBN(0x2d70a997, 0x6b5821d8), - TOBN(0x7a3ee207, 0x20445c36), TOBN(0x71d1ac82, 0x59877174), - TOBN(0x0fc539f7, 0x949f73e9), TOBN(0xd05cf3d7, 0x982e3081), - TOBN(0x8758e20b, 0x7b1c7129), TOBN(0xffadcc20, 0x569e61f2), - TOBN(0xb05d3a2f, 0x59544c2d), TOBN(0xbe16f5c1, 0x9fff5e53), - TOBN(0x73cf65b8, 0xaad58135), TOBN(0x622c2119, 0x037aa5be), - TOBN(0x79373b3f, 0x646fd6a0), TOBN(0x0e029db5, 0x0d3978cf), - TOBN(0x8bdfc437, 0x94fba037), TOBN(0xaefbd687, 0x620797a6), - TOBN(0x3fa5382b, 0xbd30d38e), TOBN(0x7627cfbf, 0x585d7464), - TOBN(0xb2330fef, 0x4e4ca463), TOBN(0xbcef7287, 0x3566cc63), - TOBN(0xd161d2ca, 0xcf780900), TOBN(0x135dc539, 0x5b54827d), - TOBN(0x638f052e, 0x27bf1bc6), TOBN(0x10a224f0, 0x07dfa06c), - TOBN(0xe973586d, 0x6d3321da), TOBN(0x8b0c5738, 0x26152c8f), - TOBN(0x07ef4f2a, 0x34606074), TOBN(0x80fe7fe8, 0xa0f7047a), - TOBN(0x3d1a8152, 0xe1a0e306), TOBN(0x32cf43d8, 0x88da5222), - TOBN(0xbf89a95f, 0x5f02ffe6), TOBN(0x3d9eb9a4, 0x806ad3ea), - TOBN(0x012c17bb, 0x79c8e55e), TOBN(0xfdcd1a74, 0x99c81dac), - TOBN(0x7043178b, 0xb9556098), TOBN(0x4090a1df, 0x801c3886), - TOBN(0x759800ff, 0x9b67b912), TOBN(0x3e5c0304, 0x232620c8), - TOBN(0x4b9d3c4b, 0x70dceeca), TOBN(0xbb2d3c15, 0x181f648e), - TOBN(0xf981d837, 0x6e33345c), TOBN(0xb626289b, 0x0cf2297a), - TOBN(0x766ac659, 0x8baebdcf), TOBN(0x1a28ae09, 0x75df01e5), - TOBN(0xb71283da, 0x375876d8), TOBN(0x4865a96d, 0x607b9800), - TOBN(0x25dd1bcd, 0x237936b2), TOBN(0x332f4f4b, 0x60417494), - TOBN(0xd0923d68, 0x370a2147), TOBN(0x497f5dfb, 0xdc842203), - TOBN(0x9dc74cbd, 0x32be5e0f), TOBN(0x7475bcb7, 0x17a01375), - TOBN(0x438477c9, 0x50d872b1), TOBN(0xcec67879, 0xffe1d63d), - TOBN(0x9b006014, 0xd8578c70), TOBN(0xc9ad99a8, 0x78bb6b8b), - TOBN(0x6799008e, 0x11fb3806), TOBN(0xcfe81435, 0xcd44cab3), - TOBN(0xa2ee1582, 0x2f4fb344), TOBN(0xb8823450, 0x483fa6eb), - TOBN(0x622d323d, 0x652c7749), TOBN(0xd8474a98, 0xbeb0a15b), - TOBN(0xe43c154d, 0x5d1c00d0), TOBN(0x7fd581d9, 0x0e3e7aac), - TOBN(0x2b44c619, 0x2525ddf8), TOBN(0x67a033eb, 0xb8ae9739), - TOBN(0x113ffec1, 0x9ef2d2e4), TOBN(0x1bf6767e, 0xd5a0ea7f), - TOBN(0x57fff75e, 0x03714c0a), TOBN(0xa23c422e, 0x0a23e9ee), - TOBN(0xdd5f6b2d, 0x540f83af), TOBN(0xc2c2c27e, 0x55ea46a7), - TOBN(0xeb6b4246, 0x672a1208), TOBN(0xd13599f7, 0xae634f7a), - TOBN(0xcf914b5c, 0xd7b32c6e), TOBN(0x61a5a640, 0xeaf61814), - TOBN(0x8dc3df8b, 0x208a1bbb), TOBN(0xef627fd6, 0xb6d79aa5), - TOBN(0x44232ffc, 0xc4c86bc8), TOBN(0xe6f9231b, 0x061539fe), - TOBN(0x1d04f25a, 0x958b9533), TOBN(0x180cf934, 0x49e8c885), - TOBN(0x89689595, 0x9884aaf7), TOBN(0xb1959be3, 0x07b348a6), - TOBN(0x96250e57, 0x3c147c87), TOBN(0xae0efb3a, 0xdd0c61f8), - TOBN(0xed00745e, 0xca8c325e), TOBN(0x3c911696, 0xecff3f70), - TOBN(0x73acbc65, 0x319ad41d), TOBN(0x7b01a020, 0xf0b1c7ef), - TOBN(0xea32b293, 0x63a1483f), TOBN(0x89eabe71, 0x7a248f96), - TOBN(0x9c6231d3, 0x343157e5), TOBN(0x93a375e5, 0xdf3c546d), - TOBN(0xe76e9343, 0x6a2afe69), TOBN(0xc4f89100, 0xe166c88e), - TOBN(0x248efd0d, 0x4f872093), TOBN(0xae0eb3ea, 0x8fe0ea61), - TOBN(0xaf89790d, 0x9d79046e), TOBN(0x4d650f2d, 0x6cee0976), - TOBN(0xa3935d9a, 0x43071eca), TOBN(0x66fcd2c9, 0x283b0bfe), - TOBN(0x0e665eb5, 0x696605f1), TOBN(0xe77e5d07, 0xa54cd38d), - TOBN(0x90ee050a, 0x43d950cf), TOBN(0x86ddebda, 0xd32e69b5), - TOBN(0x6ad94a3d, 0xfddf7415), TOBN(0xf7fa1309, 0x3f6e8d5a), - TOBN(0xc4831d1d, 0xe9957f75), TOBN(0x7de28501, 0xd5817447), - TOBN(0x6f1d7078, 0x9e2aeb6b), TOBN(0xba2b9ff4, 0xf67a53c2), - TOBN(0x36963767, 0xdf9defc3), TOBN(0x479deed3, 0x0d38022c), - TOBN(0xd2edb89b, 0x3a8631e8), TOBN(0x8de855de, 0x7a213746), - TOBN(0xb2056cb7, 0xb00c5f11), TOBN(0xdeaefbd0, 0x2c9b85e4), - TOBN(0x03f39a8d, 0xd150892d), TOBN(0x37b84686, 0x218b7985), - TOBN(0x36296dd8, 0xb7375f1a), TOBN(0x472cd4b1, 0xb78e898e), - TOBN(0x15dff651, 0xe9f05de9), TOBN(0xd4045069, 0x2ce98ba9), - TOBN(0x8466a7ae, 0x9b38024c), TOBN(0xb910e700, 0xe5a6b5ef), - TOBN(0xae1c56ea, 0xb3aa8f0d), TOBN(0xbab2a507, 0x7eee74a6), - TOBN(0x0dca11e2, 0x4b4c4620), TOBN(0xfd896e2e, 0x4c47d1f4), - TOBN(0xeb45ae53, 0x308fbd93), TOBN(0x46cd5a2e, 0x02c36fda), - TOBN(0x6a3d4e90, 0xbaa48385), TOBN(0xdd55e62e, 0x9dbe9960), - TOBN(0xa1406aa0, 0x2a81ede7), TOBN(0x6860dd14, 0xf9274ea7), - TOBN(0xcfdcb0c2, 0x80414f86), TOBN(0xff410b10, 0x22f94327), - TOBN(0x5a33cc38, 0x49ad467b), TOBN(0xefb48b6c, 0x0a7335f1), - TOBN(0x14fb54a4, 0xb153a360), TOBN(0x604aa9d2, 0xb52469cc), - TOBN(0x5e9dc486, 0x754e48e9), TOBN(0x693cb455, 0x37471e8e), - TOBN(0xfb2fd7cd, 0x8d3b37b6), TOBN(0x63345e16, 0xcf09ff07), - TOBN(0x9910ba6b, 0x23a5d896), TOBN(0x1fe19e35, 0x7fe4364e), - TOBN(0x6e1da8c3, 0x9a33c677), TOBN(0x15b4488b, 0x29fd9fd0), - TOBN(0x1f439254, 0x1a1f22bf), TOBN(0x920a8a70, 0xab8163e8), - TOBN(0x3fd1b249, 0x07e5658e), TOBN(0xf2c4f79c, 0xb6ec839b), - TOBN(0x1abbc3d0, 0x4aa38d1b), TOBN(0x3b0db35c, 0xb5d9510e), - TOBN(0x1754ac78, 0x3e60dec0), TOBN(0x53272fd7, 0xea099b33), - TOBN(0x5fb0494f, 0x07a8e107), TOBN(0x4a89e137, 0x6a8191fa), - TOBN(0xa113b7f6, 0x3c4ad544), TOBN(0x88a2e909, 0x6cb9897b), - TOBN(0x17d55de3, 0xb44a3f84), TOBN(0xacb2f344, 0x17c6c690), - TOBN(0x32088168, 0x10232390), TOBN(0xf2e8a61f, 0x6c733bf7), - TOBN(0xa774aab6, 0x9c2d7652), TOBN(0xfb5307e3, 0xed95c5bc), - TOBN(0xa05c73c2, 0x4981f110), TOBN(0x1baae31c, 0xa39458c9), - TOBN(0x1def185b, 0xcbea62e7), TOBN(0xe8ac9eae, 0xeaf63059), - TOBN(0x098a8cfd, 0x9921851c), TOBN(0xd959c3f1, 0x3abe2f5b), - TOBN(0xa4f19525, 0x20e40ae5), TOBN(0x320789e3, 0x07a24aa1), - TOBN(0x259e6927, 0x7392b2bc), TOBN(0x58f6c667, 0x1918668b), - TOBN(0xce1db2bb, 0xc55d2d8b), TOBN(0x41d58bb7, 0xf4f6ca56), - TOBN(0x7650b680, 0x8f877614), TOBN(0x905e16ba, 0xf4c349ed), - TOBN(0xed415140, 0xf661acac), TOBN(0x3b8784f0, 0xcb2270af), - TOBN(0x3bc280ac, 0x8a402cba), TOBN(0xd53f7146, 0x0937921a), - TOBN(0xc03c8ee5, 0xe5681e83), TOBN(0x62126105, 0xf6ac9e4a), - TOBN(0x9503a53f, 0x936b1a38), TOBN(0x3d45e2d4, 0x782fecbd), - TOBN(0x69a5c439, 0x76e8ae98), TOBN(0xb53b2eeb, 0xbfb4b00e), - TOBN(0xf1674712, 0x72386c89), TOBN(0x30ca34a2, 0x4268bce4), - TOBN(0x7f1ed86c, 0x78341730), TOBN(0x8ef5beb8, 0xb525e248), - TOBN(0xbbc489fd, 0xb74fbf38), TOBN(0x38a92a0e, 0x91a0b382), - TOBN(0x7a77ba3f, 0x22433ccf), TOBN(0xde8362d6, 0xa29f05a9), - TOBN(0x7f6a30ea, 0x61189afc), TOBN(0x693b5505, 0x59ef114f), - TOBN(0x50266bc0, 0xcd1797a1), TOBN(0xea17b47e, 0xf4b7af2d), - TOBN(0xd6c4025c, 0x3df9483e), TOBN(0x8cbb9d9f, 0xa37b18c9), - TOBN(0x91cbfd9c, 0x4d8424cf), TOBN(0xdb7048f1, 0xab1c3506), - TOBN(0x9eaf641f, 0x028206a3), TOBN(0xf986f3f9, 0x25bdf6ce), - TOBN(0x262143b5, 0x224c08dc), TOBN(0x2bbb09b4, 0x81b50c91), - TOBN(0xc16ed709, 0xaca8c84f), TOBN(0xa6210d9d, 0xb2850ca8), - TOBN(0x6d8df67a, 0x09cb54d6), TOBN(0x91eef6e0, 0x500919a4), - TOBN(0x90f61381, 0x0f132857), TOBN(0x9acede47, 0xf8d5028b), - TOBN(0x844d1b71, 0x90b771c3), TOBN(0x563b71e4, 0xba6426be), - TOBN(0x2efa2e83, 0xbdb802ff), TOBN(0x3410cbab, 0xab5b4a41), - TOBN(0x555b2d26, 0x30da84dd), TOBN(0xd0711ae9, 0xee1cc29a), - TOBN(0xcf3e8c60, 0x2f547792), TOBN(0x03d7d5de, 0xdc678b35), - TOBN(0x071a2fa8, 0xced806b8), TOBN(0x222e6134, 0x697f1478), - TOBN(0xdc16fd5d, 0xabfcdbbf), TOBN(0x44912ebf, 0x121b53b8), - TOBN(0xac943674, 0x2496c27c), TOBN(0x8ea3176c, 0x1ffc26b0), - TOBN(0xb6e224ac, 0x13debf2c), TOBN(0x524cc235, 0xf372a832), - TOBN(0xd706e1d8, 0x9f6f1b18), TOBN(0x2552f005, 0x44cce35b), - TOBN(0x8c8326c2, 0xa88e31fc), TOBN(0xb5468b2c, 0xf9552047), - TOBN(0xce683e88, 0x3ff90f2b), TOBN(0x77947bdf, 0x2f0a5423), - TOBN(0xd0a1b28b, 0xed56e328), TOBN(0xaee35253, 0xc20134ac), - TOBN(0x7e98367d, 0x3567962f), TOBN(0x379ed61f, 0x8188bffb), - TOBN(0x73bba348, 0xfaf130a1), TOBN(0x6c1f75e1, 0x904ed734), - TOBN(0x18956642, 0x3b4a79fc), TOBN(0xf20bc83d, 0x54ef4493), - TOBN(0x836d425d, 0x9111eca1), TOBN(0xe5b5c318, 0x009a8dcf), - TOBN(0x3360b25d, 0x13221bc5), TOBN(0x707baad2, 0x6b3eeaf7), - TOBN(0xd7279ed8, 0x743a95a1), TOBN(0x7450a875, 0x969e809f), - TOBN(0x32b6bd53, 0xe5d0338f), TOBN(0x1e77f7af, 0x2b883bbc), - TOBN(0x90da12cc, 0x1063ecd0), TOBN(0xe2697b58, 0xc315be47), - TOBN(0x2771a5bd, 0xda85d534), TOBN(0x53e78c1f, 0xff980eea), - TOBN(0xadf1cf84, 0x900385e7), TOBN(0x7d3b14f6, 0xc9387b62), - TOBN(0x170e74b0, 0xcb8f2bd2), TOBN(0x2d50b486, 0x827fa993), - TOBN(0xcdbe8c9a, 0xf6f32bab), TOBN(0x55e906b0, 0xc3b93ab8), - TOBN(0x747f22fc, 0x8fe280d1), TOBN(0xcd8e0de5, 0xb2e114ab), - TOBN(0x5ab7dbeb, 0xe10b68b0), TOBN(0x9dc63a9c, 0xa480d4b2), - TOBN(0x78d4bc3b, 0x4be1495f), TOBN(0x25eb3db8, 0x9359122d), - TOBN(0x3f8ac05b, 0x0809cbdc), TOBN(0xbf4187bb, 0xd37c702f), - TOBN(0x84cea069, 0x1416a6a5), TOBN(0x8f860c79, 0x43ef881c), - TOBN(0x41311f8a, 0x38038a5d), TOBN(0xe78c2ec0, 0xfc612067), - TOBN(0x494d2e81, 0x5ad73581), TOBN(0xb4cc9e00, 0x59604097), - TOBN(0xff558aec, 0xf3612cba), TOBN(0x35beef7a, 0x9e36c39e), - TOBN(0x1845c7cf, 0xdbcf41b9), TOBN(0x5703662a, 0xaea997c0), - TOBN(0x8b925afe, 0xe402f6d8), TOBN(0xd0a1b1ae, 0x4dd72162), - TOBN(0x9f47b375, 0x03c41c4b), TOBN(0xa023829b, 0x0391d042), - TOBN(0x5f5045c3, 0x503b8b0a), TOBN(0x123c2688, 0x98c010e5), - TOBN(0x324ec0cc, 0x36ba06ee), TOBN(0xface3115, 0x3dd2cc0c), - TOBN(0xb364f3be, 0xf333e91f), TOBN(0xef8aff73, 0x28e832b0), - TOBN(0x1e9bad04, 0x2d05841b), TOBN(0x42f0e3df, 0x356a21e2), - TOBN(0xa3270bcb, 0x4add627e), TOBN(0xb09a8158, 0xd322e711), - TOBN(0x86e326a1, 0x0fee104a), TOBN(0xad7788f8, 0x3703f65d), - TOBN(0x7e765430, 0x47bc4833), TOBN(0x6cee582b, 0x2b9b893a), - TOBN(0x9cd2a167, 0xe8f55a7b), TOBN(0xefbee3c6, 0xd9e4190d), - TOBN(0x33ee7185, 0xd40c2e9d), TOBN(0x844cc9c5, 0xa380b548), - TOBN(0x323f8ecd, 0x66926e04), TOBN(0x0001e38f, 0x8110c1ba), - TOBN(0x8dbcac12, 0xfc6a7f07), TOBN(0xd65e1d58, 0x0cec0827), - TOBN(0xd2cd4141, 0xbe76ca2d), TOBN(0x7895cf5c, 0xe892f33a), - TOBN(0x956d230d, 0x367139d2), TOBN(0xa91abd3e, 0xd012c4c1), - TOBN(0x34fa4883, 0x87eb36bf), TOBN(0xc5f07102, 0x914b8fb4), - TOBN(0x90f0e579, 0xadb9c95f), TOBN(0xfe6ea8cb, 0x28888195), - TOBN(0x7b9b5065, 0xedfa9284), TOBN(0x6c510bd2, 0x2b8c8d65), - TOBN(0xd7b8ebef, 0xcbe8aafd), TOBN(0xedb3af98, 0x96b1da07), - TOBN(0x28ff779d, 0x6295d426), TOBN(0x0c4f6ac7, 0x3fa3ad7b), - TOBN(0xec44d054, 0x8b8e2604), TOBN(0x9b32a66d, 0x8b0050e1), - TOBN(0x1f943366, 0xf0476ce2), TOBN(0x7554d953, 0xa602c7b4), - TOBN(0xbe35aca6, 0x524f2809), TOBN(0xb6881229, 0xfd4edbea), - TOBN(0xe8cd0c8f, 0x508efb63), TOBN(0x9eb5b5c8, 0x6abcefc7), - TOBN(0xf5621f5f, 0xb441ab4f), TOBN(0x79e6c046, 0xb76a2b22), - TOBN(0x74a4792c, 0xe37a1f69), TOBN(0xcbd252cb, 0x03542b60), - TOBN(0x785f65d5, 0xb3c20bd3), TOBN(0x8dea6143, 0x4fabc60c), - TOBN(0x45e21446, 0xde673629), TOBN(0x57f7aa1e, 0x703c2d21), - TOBN(0xa0e99b7f, 0x98c868c7), TOBN(0x4e42f66d, 0x8b641676), - TOBN(0x602884dc, 0x91077896), TOBN(0xa0d690cf, 0xc2c9885b), - TOBN(0xfeb4da33, 0x3b9a5187), TOBN(0x5f789598, 0x153c87ee), - TOBN(0x2192dd47, 0x52b16dba), TOBN(0xdeefc0e6, 0x3524c1b1), - TOBN(0x465ea76e, 0xe4383693), TOBN(0x79401711, 0x361b8d98), - TOBN(0xa5f9ace9, 0xf21a15cb), TOBN(0x73d26163, 0xefee9aeb), - TOBN(0xcca844b3, 0xe677016c), TOBN(0x6c122b07, 0x57eaee06), - TOBN(0xb782dce7, 0x15f09690), TOBN(0x508b9b12, 0x2dfc0fc9), - TOBN(0x9015ab4b, 0x65d89fc6), TOBN(0x5e79dab7, 0xd6d5bb0f), - TOBN(0x64f021f0, 0x6c775aa2), TOBN(0xdf09d8cc, 0x37c7eca1), - TOBN(0x9a761367, 0xef2fa506), TOBN(0xed4ca476, 0x5b81eec6), - TOBN(0x262ede36, 0x10bbb8b5), TOBN(0x0737ce83, 0x0641ada3), - TOBN(0x4c94288a, 0xe9831ccc), TOBN(0x487fc1ce, 0x8065e635), - TOBN(0xb13d7ab3, 0xb8bb3659), TOBN(0xdea5df3e, 0x855e4120), - TOBN(0xb9a18573, 0x85eb0244), TOBN(0x1a1b8ea3, 0xa7cfe0a3), - TOBN(0x3b837119, 0x67b0867c), TOBN(0x8d5e0d08, 0x9d364520), - TOBN(0x52dccc1e, 0xd930f0e3), TOBN(0xefbbcec7, 0xbf20bbaf), - TOBN(0x99cffcab, 0x0263ad10), TOBN(0xd8199e6d, 0xfcd18f8a), - TOBN(0x64e2773f, 0xe9f10617), TOBN(0x0079e8e1, 0x08704848), - TOBN(0x1169989f, 0x8a342283), TOBN(0x8097799c, 0xa83012e6), - TOBN(0xece966cb, 0x8a6a9001), TOBN(0x93b3afef, 0x072ac7fc), - TOBN(0xe6893a2a, 0x2db3d5ba), TOBN(0x263dc462, 0x89bf4fdc), - TOBN(0x8852dfc9, 0xe0396673), TOBN(0x7ac70895, 0x3af362b6), - TOBN(0xbb9cce4d, 0x5c2f342b), TOBN(0xbf80907a, 0xb52d7aae), - TOBN(0x97f3d3cd, 0x2161bcd0), TOBN(0xb25b0834, 0x0962744d), - TOBN(0xc5b18ea5, 0x6c3a1dda), TOBN(0xfe4ec7eb, 0x06c92317), - TOBN(0xb787b890, 0xad1c4afe), TOBN(0xdccd9a92, 0x0ede801a), - TOBN(0x9ac6ddda, 0xdb58da1f), TOBN(0x22bbc12f, 0xb8cae6ee), - TOBN(0xc6f8bced, 0x815c4a43), TOBN(0x8105a92c, 0xf96480c7), - TOBN(0x0dc3dbf3, 0x7a859d51), TOBN(0xe3ec7ce6, 0x3041196b), - TOBN(0xd9f64b25, 0x0d1067c9), TOBN(0xf2321321, 0x3d1f8dd8), - TOBN(0x8b5c619c, 0x76497ee8), TOBN(0x5d2b0ac6, 0xc717370e), - TOBN(0x98204cb6, 0x4fcf68e1), TOBN(0x0bdec211, 0x62bc6792), - TOBN(0x6973ccef, 0xa63b1011), TOBN(0xf9e3fa97, 0xe0de1ac5), - TOBN(0x5efb693e, 0x3d0e0c8b), TOBN(0x037248e9, 0xd2d4fcb4)}, - {TOBN(0x80802dc9, 0x1ec34f9e), TOBN(0xd8772d35, 0x33810603), - TOBN(0x3f06d66c, 0x530cb4f3), TOBN(0x7be5ed0d, 0xc475c129), - TOBN(0xcb9e3c19, 0x31e82b10), TOBN(0xc63d2857, 0xc9ff6b4c), - TOBN(0xb92118c6, 0x92a1b45e), TOBN(0x0aec4414, 0x7285bbca), - TOBN(0xfc189ae7, 0x1e29a3ef), TOBN(0xcbe906f0, 0x4c93302e), - TOBN(0xd0107914, 0xceaae10e), TOBN(0xb7a23f34, 0xb68e19f8), - TOBN(0xe9d875c2, 0xefd2119d), TOBN(0x03198c6e, 0xfcadc9c8), - TOBN(0x65591bf6, 0x4da17113), TOBN(0x3cf0bbf8, 0x3d443038), - TOBN(0xae485bb7, 0x2b724759), TOBN(0x945353e1, 0xb2d4c63a), - TOBN(0x82159d07, 0xde7d6f2c), TOBN(0x389caef3, 0x4ec5b109), - TOBN(0x4a8ebb53, 0xdb65ef14), TOBN(0x2dc2cb7e, 0xdd99de43), - TOBN(0x816fa3ed, 0x83f2405f), TOBN(0x73429bb9, 0xc14208a3), - TOBN(0xb618d590, 0xb01e6e27), TOBN(0x047e2ccd, 0xe180b2dc), - TOBN(0xd1b299b5, 0x04aea4a9), TOBN(0x412c9e1e, 0x9fa403a4), - TOBN(0x88d28a36, 0x79407552), TOBN(0x49c50136, 0xf332b8e3), - TOBN(0x3a1b6fcc, 0xe668de19), TOBN(0x178851bc, 0x75122b97), - TOBN(0xb1e13752, 0xfb85fa4c), TOBN(0xd61257ce, 0x383c8ce9), - TOBN(0xd43da670, 0xd2f74dae), TOBN(0xa35aa23f, 0xbf846bbb), - TOBN(0x5e74235d, 0x4421fc83), TOBN(0xf6df8ee0, 0xc363473b), - TOBN(0x34d7f52a, 0x3c4aa158), TOBN(0x50d05aab, 0x9bc6d22e), - TOBN(0x8c56e735, 0xa64785f4), TOBN(0xbc56637b, 0x5f29cd07), - TOBN(0x53b2bb80, 0x3ee35067), TOBN(0x50235a0f, 0xdc919270), - TOBN(0x191ab6d8, 0xf2c4aa65), TOBN(0xc3475831, 0x8396023b), - TOBN(0x80400ba5, 0xf0f805ba), TOBN(0x8881065b, 0x5ec0f80f), - TOBN(0xc370e522, 0xcc1b5e83), TOBN(0xde2d4ad1, 0x860b8bfb), - TOBN(0xad364df0, 0x67b256df), TOBN(0x8f12502e, 0xe0138997), - TOBN(0x503fa0dc, 0x7783920a), TOBN(0xe80014ad, 0xc0bc866a), - TOBN(0x3f89b744, 0xd3064ba6), TOBN(0x03511dcd, 0xcba5dba5), - TOBN(0x197dd46d, 0x95a7b1a2), TOBN(0x9c4e7ad6, 0x3c6341fb), - TOBN(0x426eca29, 0x484c2ece), TOBN(0x9211e489, 0xde7f4f8a), - TOBN(0x14997f6e, 0xc78ef1f4), TOBN(0x2b2c0910, 0x06574586), - TOBN(0x17286a6e, 0x1c3eede8), TOBN(0x25f92e47, 0x0f60e018), - TOBN(0x805c5646, 0x31890a36), TOBN(0x703ef600, 0x57feea5b), - TOBN(0x389f747c, 0xaf3c3030), TOBN(0xe0e5daeb, 0x54dd3739), - TOBN(0xfe24a4c3, 0xc9c9f155), TOBN(0x7e4bf176, 0xb5393962), - TOBN(0x37183de2, 0xaf20bf29), TOBN(0x4a1bd7b5, 0xf95a8c3b), - TOBN(0xa83b9699, 0x46191d3d), TOBN(0x281fc8dd, 0x7b87f257), - TOBN(0xb18e2c13, 0x54107588), TOBN(0x6372def7, 0x9b2bafe8), - TOBN(0xdaf4bb48, 0x0d8972ca), TOBN(0x3f2dd4b7, 0x56167a3f), - TOBN(0x1eace32d, 0x84310cf4), TOBN(0xe3bcefaf, 0xe42700aa), - TOBN(0x5fe5691e, 0xd785e73d), TOBN(0xa5db5ab6, 0x2ea60467), - TOBN(0x02e23d41, 0xdfc6514a), TOBN(0x35e8048e, 0xe03c3665), - TOBN(0x3f8b118f, 0x1adaa0f8), TOBN(0x28ec3b45, 0x84ce1a5a), - TOBN(0xe8cacc6e, 0x2c6646b8), TOBN(0x1343d185, 0xdbd0e40f), - TOBN(0xe5d7f844, 0xcaaa358c), TOBN(0x1a1db7e4, 0x9924182a), - TOBN(0xd64cd42d, 0x9c875d9a), TOBN(0xb37b515f, 0x042eeec8), - TOBN(0x4d4dd409, 0x7b165fbe), TOBN(0xfc322ed9, 0xe206eff3), - TOBN(0x7dee4102, 0x59b7e17e), TOBN(0x55a481c0, 0x8236ca00), - TOBN(0x8c885312, 0xc23fc975), TOBN(0x15715806, 0x05d6297b), - TOBN(0xa078868e, 0xf78edd39), TOBN(0x956b31e0, 0x03c45e52), - TOBN(0x470275d5, 0xff7b33a6), TOBN(0xc8d5dc3a, 0x0c7e673f), - TOBN(0x419227b4, 0x7e2f2598), TOBN(0x8b37b634, 0x4c14a975), - TOBN(0xd0667ed6, 0x8b11888c), TOBN(0x5e0e8c3e, 0x803e25dc), - TOBN(0x34e5d0dc, 0xb987a24a), TOBN(0x9f40ac3b, 0xae920323), - TOBN(0x5463de95, 0x34e0f63a), TOBN(0xa128bf92, 0x6b6328f9), - TOBN(0x491ccd7c, 0xda64f1b7), TOBN(0x7ef1ec27, 0xc47bde35), - TOBN(0xa857240f, 0xa36a2737), TOBN(0x35dc1366, 0x63621bc1), - TOBN(0x7a3a6453, 0xd4fb6897), TOBN(0x80f1a439, 0xc929319d), - TOBN(0xfc18274b, 0xf8cb0ba0), TOBN(0xb0b53766, 0x8078c5eb), - TOBN(0xfb0d4924, 0x1e01d0ef), TOBN(0x50d7c67d, 0x372ab09c), - TOBN(0xb4e370af, 0x3aeac968), TOBN(0xe4f7fee9, 0xc4b63266), - TOBN(0xb4acd4c2, 0xe3ac5664), TOBN(0xf8910bd2, 0xceb38cbf), - TOBN(0x1c3ae50c, 0xc9c0726e), TOBN(0x15309569, 0xd97b40bf), - TOBN(0x70884b7f, 0xfd5a5a1b), TOBN(0x3890896a, 0xef8314cd), - TOBN(0x58e1515c, 0xa5618c93), TOBN(0xe665432b, 0x77d942d1), - TOBN(0xb32181bf, 0xb6f767a8), TOBN(0x753794e8, 0x3a604110), - TOBN(0x09afeb7c, 0xe8c0dbcc), TOBN(0x31e02613, 0x598673a3), - TOBN(0x5d98e557, 0x7d46db00), TOBN(0xfc21fb8c, 0x9d985b28), - TOBN(0xc9040116, 0xb0843e0b), TOBN(0x53b1b3a8, 0x69b04531), - TOBN(0xdd1649f0, 0x85d7d830), TOBN(0xbb3bcc87, 0xcb7427e8), - TOBN(0x77261100, 0xc93dce83), TOBN(0x7e79da61, 0xa1922a2a), - TOBN(0x587a2b02, 0xf3149ce8), TOBN(0x147e1384, 0xde92ec83), - TOBN(0x484c83d3, 0xaf077f30), TOBN(0xea78f844, 0x0658b53a), - TOBN(0x912076c2, 0x027aec53), TOBN(0xf34714e3, 0x93c8177d), - TOBN(0x37ef5d15, 0xc2376c84), TOBN(0x8315b659, 0x3d1aa783), - TOBN(0x3a75c484, 0xef852a90), TOBN(0x0ba0c58a, 0x16086bd4), - TOBN(0x29688d7a, 0x529a6d48), TOBN(0x9c7f250d, 0xc2f19203), - TOBN(0x123042fb, 0x682e2df9), TOBN(0x2b7587e7, 0xad8121bc), - TOBN(0x30fc0233, 0xe0182a65), TOBN(0xb82ecf87, 0xe3e1128a), - TOBN(0x71682861, 0x93fb098f), TOBN(0x043e21ae, 0x85e9e6a7), - TOBN(0xab5b49d6, 0x66c834ea), TOBN(0x3be43e18, 0x47414287), - TOBN(0xf40fb859, 0x219a2a47), TOBN(0x0e6559e9, 0xcc58df3c), - TOBN(0xfe1dfe8e, 0x0c6615b4), TOBN(0x14abc8fd, 0x56459d70), - TOBN(0x7be0fa8e, 0x05de0386), TOBN(0x8e63ef68, 0xe9035c7c), - TOBN(0x116401b4, 0x53b31e91), TOBN(0x0cba7ad4, 0x4436b4d8), - TOBN(0x9151f9a0, 0x107afd66), TOBN(0xafaca8d0, 0x1f0ee4c4), - TOBN(0x75fe5c1d, 0x9ee9761c), TOBN(0x3497a16b, 0xf0c0588f), - TOBN(0x3ee2bebd, 0x0304804c), TOBN(0xa8fb9a60, 0xc2c990b9), - TOBN(0xd14d32fe, 0x39251114), TOBN(0x36bf25bc, 0xcac73366), - TOBN(0xc9562c66, 0xdba7495c), TOBN(0x324d301b, 0x46ad348b), - TOBN(0x9f46620c, 0xd670407e), TOBN(0x0ea8d4f1, 0xe3733a01), - TOBN(0xd396d532, 0xb0c324e0), TOBN(0x5b211a0e, 0x03c317cd), - TOBN(0x090d7d20, 0x5ffe7b37), TOBN(0x3b7f3efb, 0x1747d2da), - TOBN(0xa2cb525f, 0xb54fc519), TOBN(0x6e220932, 0xf66a971e), - TOBN(0xddc160df, 0xb486d440), TOBN(0x7fcfec46, 0x3fe13465), - TOBN(0x83da7e4e, 0x76e4c151), TOBN(0xd6fa48a1, 0xd8d302b5), - TOBN(0xc6304f26, 0x5872cd88), TOBN(0x806c1d3c, 0x278b90a1), - TOBN(0x3553e725, 0xcaf0bc1c), TOBN(0xff59e603, 0xbb9d8d5c), - TOBN(0xa4550f32, 0x7a0b85dd), TOBN(0xdec5720a, 0x93ecc217), - TOBN(0x0b88b741, 0x69d62213), TOBN(0x7212f245, 0x5b365955), - TOBN(0x20764111, 0xb5cae787), TOBN(0x13cb7f58, 0x1dfd3124), - TOBN(0x2dca77da, 0x1175aefb), TOBN(0xeb75466b, 0xffaae775), - TOBN(0x74d76f3b, 0xdb6cff32), TOBN(0x7440f37a, 0x61fcda9a), - TOBN(0x1bb3ac92, 0xb525028b), TOBN(0x20fbf8f7, 0xa1975f29), - TOBN(0x982692e1, 0xdf83097f), TOBN(0x28738f6c, 0x554b0800), - TOBN(0xdc703717, 0xa2ce2f2f), TOBN(0x7913b93c, 0x40814194), - TOBN(0x04924593, 0x1fe89636), TOBN(0x7b98443f, 0xf78834a6), - TOBN(0x11c6ab01, 0x5114a5a1), TOBN(0x60deb383, 0xffba5f4c), - TOBN(0x4caa54c6, 0x01a982e6), TOBN(0x1dd35e11, 0x3491cd26), - TOBN(0x973c315f, 0x7cbd6b05), TOBN(0xcab00775, 0x52494724), - TOBN(0x04659b1f, 0x6565e15a), TOBN(0xbf30f529, 0x8c8fb026), - TOBN(0xfc21641b, 0xa8a0de37), TOBN(0xe9c7a366, 0xfa5e5114), - TOBN(0xdb849ca5, 0x52f03ad8), TOBN(0xc7e8dbe9, 0x024e35c0), - TOBN(0xa1a2bbac, 0xcfc3c789), TOBN(0xbf733e7d, 0x9c26f262), - TOBN(0x882ffbf5, 0xb8444823), TOBN(0xb7224e88, 0x6bf8483b), - TOBN(0x53023b8b, 0x65bef640), TOBN(0xaabfec91, 0xd4d5f8cd), - TOBN(0xa40e1510, 0x079ea1bd), TOBN(0x1ad9addc, 0xd05d5d26), - TOBN(0xdb3f2eab, 0x13e68d4f), TOBN(0x1cff1ae2, 0x640f803f), - TOBN(0xe0e7b749, 0xd4cee117), TOBN(0x8e9f275b, 0x4036d909), - TOBN(0xce34e31d, 0x8f4d4c38), TOBN(0x22b37f69, 0xd75130fc), - TOBN(0x83e0f1fd, 0xb4014604), TOBN(0xa8ce9919, 0x89415078), - TOBN(0x82375b75, 0x41792efe), TOBN(0x4f59bf5c, 0x97d4515b), - TOBN(0xac4f324f, 0x923a277d), TOBN(0xd9bc9b7d, 0x650f3406), - TOBN(0xc6fa87d1, 0x8a39bc51), TOBN(0x82588530, 0x5ccc108f), - TOBN(0x5ced3c9f, 0x82e4c634), TOBN(0x8efb8314, 0x3a4464f8), - TOBN(0xe706381b, 0x7a1dca25), TOBN(0x6cd15a3c, 0x5a2a412b), - TOBN(0x9347a8fd, 0xbfcd8fb5), TOBN(0x31db2eef, 0x6e54cd22), - TOBN(0xc4aeb11e, 0xf8d8932f), TOBN(0x11e7c1ed, 0x344411af), - TOBN(0x2653050c, 0xdc9a151e), TOBN(0x9edbfc08, 0x3bb0a859), - TOBN(0x926c81c7, 0xfd5691e7), TOBN(0x9c1b2342, 0x6f39019a), - TOBN(0x64a81c8b, 0x7f8474b9), TOBN(0x90657c07, 0x01761819), - TOBN(0x390b3331, 0x55e0375a), TOBN(0xc676c626, 0xb6ebc47d), - TOBN(0x51623247, 0xb7d6dee8), TOBN(0x0948d927, 0x79659313), - TOBN(0x99700161, 0xe9ab35ed), TOBN(0x06cc32b4, 0x8ddde408), - TOBN(0x6f2fd664, 0x061ef338), TOBN(0x1606fa02, 0xc202e9ed), - TOBN(0x55388bc1, 0x929ba99b), TOBN(0xc4428c5e, 0x1e81df69), - TOBN(0xce2028ae, 0xf91b0b2a), TOBN(0xce870a23, 0xf03dfd3f), - TOBN(0x66ec2c87, 0x0affe8ed), TOBN(0xb205fb46, 0x284d0c00), - TOBN(0xbf5dffe7, 0x44cefa48), TOBN(0xb6fc37a8, 0xa19876d7), - TOBN(0xbecfa84c, 0x08b72863), TOBN(0xd7205ff5, 0x2576374f), - TOBN(0x80330d32, 0x8887de41), TOBN(0x5de0df0c, 0x869ea534), - TOBN(0x13f42753, 0x3c56ea17), TOBN(0xeb1f6069, 0x452b1a78), - TOBN(0x50474396, 0xe30ea15c), TOBN(0x575816a1, 0xc1494125), - TOBN(0xbe1ce55b, 0xfe6bb38f), TOBN(0xb901a948, 0x96ae30f7), - TOBN(0xe5af0f08, 0xd8fc3548), TOBN(0x5010b5d0, 0xd73bfd08), - TOBN(0x993d2880, 0x53fe655a), TOBN(0x99f2630b, 0x1c1309fd), - TOBN(0xd8677baf, 0xb4e3b76f), TOBN(0x14e51ddc, 0xb840784b), - TOBN(0x326c750c, 0xbf0092ce), TOBN(0xc83d306b, 0xf528320f), - TOBN(0xc4456715, 0x77d4715c), TOBN(0xd30019f9, 0x6b703235), - TOBN(0x207ccb2e, 0xd669e986), TOBN(0x57c824af, 0xf6dbfc28), - TOBN(0xf0eb532f, 0xd8f92a23), TOBN(0x4a557fd4, 0x9bb98fd2), - TOBN(0xa57acea7, 0xc1e6199a), TOBN(0x0c663820, 0x8b94b1ed), - TOBN(0x9b42be8f, 0xf83a9266), TOBN(0xc7741c97, 0x0101bd45), - TOBN(0x95770c11, 0x07bd9ceb), TOBN(0x1f50250a, 0x8b2e0744), - TOBN(0xf762eec8, 0x1477b654), TOBN(0xc65b900e, 0x15efe59a), - TOBN(0x88c96148, 0x9546a897), TOBN(0x7e8025b3, 0xc30b4d7c), - TOBN(0xae4065ef, 0x12045cf9), TOBN(0x6fcb2caf, 0x9ccce8bd), - TOBN(0x1fa0ba4e, 0xf2cf6525), TOBN(0xf683125d, 0xcb72c312), - TOBN(0xa01da4ea, 0xe312410e), TOBN(0x67e28677, 0x6cd8e830), - TOBN(0xabd95752, 0x98fb3f07), TOBN(0x05f11e11, 0xeef649a5), - TOBN(0xba47faef, 0x9d3472c2), TOBN(0x3adff697, 0xc77d1345), - TOBN(0x4761fa04, 0xdd15afee), TOBN(0x64f1f61a, 0xb9e69462), - TOBN(0xfa691fab, 0x9bfb9093), TOBN(0x3df8ae8f, 0xa1133dfe), - TOBN(0xcd5f8967, 0x58cc710d), TOBN(0xfbb88d50, 0x16c7fe79), - TOBN(0x8e011b4c, 0xe88c50d1), TOBN(0x7532e807, 0xa8771c4f), - TOBN(0x64c78a48, 0xe2278ee4), TOBN(0x0b283e83, 0x3845072a), - TOBN(0x98a6f291, 0x49e69274), TOBN(0xb96e9668, 0x1868b21c), - TOBN(0x38f0adc2, 0xb1a8908e), TOBN(0x90afcff7, 0x1feb829d), - TOBN(0x9915a383, 0x210b0856), TOBN(0xa5a80602, 0xdef04889), - TOBN(0x800e9af9, 0x7c64d509), TOBN(0x81382d0b, 0xb8996f6f), - TOBN(0x490eba53, 0x81927e27), TOBN(0x46c63b32, 0x4af50182), - TOBN(0x784c5fd9, 0xd3ad62ce), TOBN(0xe4fa1870, 0xf8ae8736), - TOBN(0x4ec9d0bc, 0xd7466b25), TOBN(0x84ddbe1a, 0xdb235c65), - TOBN(0x5e2645ee, 0x163c1688), TOBN(0x570bd00e, 0x00eba747), - TOBN(0xfa51b629, 0x128bfa0f), TOBN(0x92fce1bd, 0x6c1d3b68), - TOBN(0x3e7361dc, 0xb66778b1), TOBN(0x9c7d249d, 0x5561d2bb), - TOBN(0xa40b28bf, 0x0bbc6229), TOBN(0x1c83c05e, 0xdfd91497), - TOBN(0x5f9f5154, 0xf083df05), TOBN(0xbac38b3c, 0xeee66c9d), - TOBN(0xf71db7e3, 0xec0dfcfd), TOBN(0xf2ecda8e, 0x8b0a8416), - TOBN(0x52fddd86, 0x7812aa66), TOBN(0x2896ef10, 0x4e6f4272), - TOBN(0xff27186a, 0x0fe9a745), TOBN(0x08249fcd, 0x49ca70db), - TOBN(0x7425a2e6, 0x441cac49), TOBN(0xf4a0885a, 0xece5ff57), - TOBN(0x6e2cb731, 0x7d7ead58), TOBN(0xf96cf7d6, 0x1898d104), - TOBN(0xafe67c9d, 0x4f2c9a89), TOBN(0x89895a50, 0x1c7bf5bc), - TOBN(0xdc7cb8e5, 0x573cecfa), TOBN(0x66497eae, 0xd15f03e6), - TOBN(0x6bc0de69, 0x3f084420), TOBN(0x323b9b36, 0xacd532b0), - TOBN(0xcfed390a, 0x0115a3c1), TOBN(0x9414c40b, 0x2d65ca0e), - TOBN(0x641406bd, 0x2f530c78), TOBN(0x29369a44, 0x833438f2), - TOBN(0x996884f5, 0x903fa271), TOBN(0xe6da0fd2, 0xb9da921e), - TOBN(0xa6f2f269, 0x5db01e54), TOBN(0x1ee3e9bd, 0x6876214e), - TOBN(0xa26e181c, 0xe27a9497), TOBN(0x36d254e4, 0x8e215e04), - TOBN(0x42f32a6c, 0x252cabca), TOBN(0x99481487, 0x80b57614), - TOBN(0x4c4dfe69, 0x40d9cae1), TOBN(0x05869580, 0x11a10f09), - TOBN(0xca287b57, 0x3491b64b), TOBN(0x77862d5d, 0x3fd4a53b), - TOBN(0xbf94856e, 0x50349126), TOBN(0x2be30bd1, 0x71c5268f), - TOBN(0x10393f19, 0xcbb650a6), TOBN(0x639531fe, 0x778cf9fd), - TOBN(0x02556a11, 0xb2935359), TOBN(0xda38aa96, 0xaf8c126e), - TOBN(0x47dbe6c2, 0x0960167f), TOBN(0x37bbabb6, 0x501901cd), - TOBN(0xb6e979e0, 0x2c947778), TOBN(0xd69a5175, 0x7a1a1dc6), - TOBN(0xc3ed5095, 0x9d9faf0c), TOBN(0x4dd9c096, 0x1d5fa5f0), - TOBN(0xa0c4304d, 0x64f16ea8), TOBN(0x8b1cac16, 0x7e718623), - TOBN(0x0b576546, 0x7c67f03e), TOBN(0x559cf5ad, 0xcbd88c01), - TOBN(0x074877bb, 0x0e2af19a), TOBN(0x1f717ec1, 0xa1228c92), - TOBN(0x70bcb800, 0x326e8920), TOBN(0xec6e2c5c, 0x4f312804), - TOBN(0x426aea7d, 0x3fca4752), TOBN(0xf12c0949, 0x2211f62a), - TOBN(0x24beecd8, 0x7be7b6b5), TOBN(0xb77eaf4c, 0x36d7a27d), - TOBN(0x154c2781, 0xfda78fd3), TOBN(0x848a83b0, 0x264eeabe), - TOBN(0x81287ef0, 0x4ffe2bc4), TOBN(0x7b6d88c6, 0xb6b6fc2a), - TOBN(0x805fb947, 0xce417d99), TOBN(0x4b93dcc3, 0x8b916cc4), - TOBN(0x72e65bb3, 0x21273323), TOBN(0xbcc1badd, 0x6ea9886e), - TOBN(0x0e223011, 0x4bc5ee85), TOBN(0xa561be74, 0xc18ee1e4), - TOBN(0x762fd2d4, 0xa6bcf1f1), TOBN(0x50e6a5a4, 0x95231489), - TOBN(0xca96001f, 0xa00b500b), TOBN(0x5c098cfc, 0x5d7dcdf5), - TOBN(0xa64e2d2e, 0x8c446a85), TOBN(0xbae9bcf1, 0x971f3c62), - TOBN(0x4ec22683, 0x8435a2c5), TOBN(0x8ceaed6c, 0x4bad4643), - TOBN(0xe9f8fb47, 0xccccf4e3), TOBN(0xbd4f3fa4, 0x1ce3b21e), - TOBN(0xd79fb110, 0xa3db3292), TOBN(0xe28a37da, 0xb536c66a), - TOBN(0x279ce87b, 0x8e49e6a9), TOBN(0x70ccfe8d, 0xfdcec8e3), - TOBN(0x2193e4e0, 0x3ba464b2), TOBN(0x0f39d60e, 0xaca9a398), - TOBN(0x7d7932af, 0xf82c12ab), TOBN(0xd8ff50ed, 0x91e7e0f7), - TOBN(0xea961058, 0xfa28a7e0), TOBN(0xc726cf25, 0x0bf5ec74), - TOBN(0xe74d55c8, 0xdb229666), TOBN(0x0bd9abbf, 0xa57f5799), - TOBN(0x7479ef07, 0x4dfc47b3), TOBN(0xd9c65fc3, 0x0c52f91d), - TOBN(0x8e0283fe, 0x36a8bde2), TOBN(0xa32a8b5e, 0x7d4b7280), - TOBN(0x6a677c61, 0x12e83233), TOBN(0x0fbb3512, 0xdcc9bf28), - TOBN(0x562e8ea5, 0x0d780f61), TOBN(0x0db8b22b, 0x1dc4e89c), - TOBN(0x0a6fd1fb, 0x89be0144), TOBN(0x8c77d246, 0xca57113b), - TOBN(0x4639075d, 0xff09c91c), TOBN(0x5b47b17f, 0x5060824c), - TOBN(0x58aea2b0, 0x16287b52), TOBN(0xa1343520, 0xd0cd8eb0), - TOBN(0x6148b4d0, 0xc5d58573), TOBN(0xdd2b6170, 0x291c68ae), - TOBN(0xa61b3929, 0x1da3b3b7), TOBN(0x5f946d79, 0x08c4ac10), - TOBN(0x4105d4a5, 0x7217d583), TOBN(0x5061da3d, 0x25e6de5e), - TOBN(0x3113940d, 0xec1b4991), TOBN(0xf12195e1, 0x36f485ae), - TOBN(0xa7507fb2, 0x731a2ee0), TOBN(0x95057a8e, 0x6e9e196e), - TOBN(0xa3c2c911, 0x2e130136), TOBN(0x97dfbb36, 0x33c60d15), - TOBN(0xcaf3c581, 0xb300ee2b), TOBN(0x77f25d90, 0xf4bac8b8), - TOBN(0xdb1c4f98, 0x6d840cd6), TOBN(0x471d62c0, 0xe634288c), - TOBN(0x8ec2f85e, 0xcec8a161), TOBN(0x41f37cbc, 0xfa6f4ae2), - TOBN(0x6793a20f, 0x4b709985), TOBN(0x7a7bd33b, 0xefa8985b), - TOBN(0x2c6a3fbd, 0x938e6446), TOBN(0x19042619, 0x2a8d47c1), - TOBN(0x16848667, 0xcc36975f), TOBN(0x02acf168, 0x9d5f1dfb), - TOBN(0x62d41ad4, 0x613baa94), TOBN(0xb56fbb92, 0x9f684670), - TOBN(0xce610d0d, 0xe9e40569), TOBN(0x7b99c65f, 0x35489fef), - TOBN(0x0c88ad1b, 0x3df18b97), TOBN(0x81b7d9be, 0x5d0e9edb), - TOBN(0xd85218c0, 0xc716cc0a), TOBN(0xf4b5ff90, 0x85691c49), - TOBN(0xa4fd666b, 0xce356ac6), TOBN(0x17c72895, 0x4b327a7a), - TOBN(0xf93d5085, 0xda6be7de), TOBN(0xff71530e, 0x3301d34e), - TOBN(0x4cd96442, 0xd8f448e8), TOBN(0x9283d331, 0x2ed18ffa), - TOBN(0x4d33dd99, 0x2a849870), TOBN(0xa716964b, 0x41576335), - TOBN(0xff5e3a9b, 0x179be0e5), TOBN(0x5b9d6b1b, 0x83b13632), - TOBN(0x3b8bd7d4, 0xa52f313b), TOBN(0xc9dd95a0, 0x637a4660), - TOBN(0x30035962, 0x0b3e218f), TOBN(0xce1481a3, 0xc7b28a3c), - TOBN(0xab41b43a, 0x43228d83), TOBN(0x24ae1c30, 0x4ad63f99), - TOBN(0x8e525f1a, 0x46a51229), TOBN(0x14af860f, 0xcd26d2b4), - TOBN(0xd6baef61, 0x3f714aa1), TOBN(0xf51865ad, 0xeb78795e), - TOBN(0xd3e21fce, 0xe6a9d694), TOBN(0x82ceb1dd, 0x8a37b527)}}; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz384.inl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz384.inl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz384.inl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz384.inl 2023-10-30 19:40:00.000000000 +0000 @@ -23,13 +23,13 @@ #include "ecp_nistz.h" -#if defined(__GNUC__) +#if defined(__GNUC__) || defined(__clang__) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wsign-conversion" #endif /* Point double: r = 2*a */ -void GFp_nistz384_point_double(P384_POINT *r, const P384_POINT *a) { +void nistz384_point_double(P384_POINT *r, const P384_POINT *a) { BN_ULONG S[P384_LIMBS]; BN_ULONG M[P384_LIMBS]; BN_ULONG Zsqr[P384_LIMBS]; @@ -74,7 +74,7 @@ } /* Point addition: r = a+b */ -void GFp_nistz384_point_add(P384_POINT *r, const P384_POINT *a, +void nistz384_point_add(P384_POINT *r, const P384_POINT *a, const P384_POINT *b) { BN_ULONG U2[P384_LIMBS], S2[P384_LIMBS]; BN_ULONG U1[P384_LIMBS], S1[P384_LIMBS]; @@ -117,7 +117,7 @@ BN_ULONG is_exceptional = is_equal(U1, U2) & ~in1infty & ~in2infty; if (is_exceptional) { if (is_equal(S1, S2)) { - GFp_nistz384_point_double(r, a); + nistz384_point_double(r, a); } else { limbs_zero(r->X, P384_LIMBS); limbs_zero(r->Y, P384_LIMBS); @@ -157,32 +157,32 @@ limbs_copy(r->Z, res_z, P384_LIMBS); } -static void add_precomputed_w5(P384_POINT *r, crypto_word wvalue, +static void add_precomputed_w5(P384_POINT *r, crypto_word_t wvalue, const P384_POINT table[16]) { - crypto_word recoded_is_negative; - crypto_word recoded; + crypto_word_t recoded_is_negative; + crypto_word_t recoded; booth_recode(&recoded_is_negative, &recoded, wvalue, 5); alignas(64) P384_POINT h; - gfp_p384_point_select_w5(&h, table, recoded); + p384_point_select_w5(&h, table, recoded); alignas(64) BN_ULONG tmp[P384_LIMBS]; - GFp_p384_elem_neg(tmp, h.Y); + p384_elem_neg(tmp, h.Y); copy_conditional(h.Y, tmp, recoded_is_negative); - GFp_nistz384_point_add(r, r, &h); + nistz384_point_add(r, r, &h); } /* r = p * p_scalar */ -void GFp_nistz384_point_mul(P384_POINT *r, const BN_ULONG p_scalar[P384_LIMBS], +void nistz384_point_mul(P384_POINT *r, const BN_ULONG p_scalar[P384_LIMBS], const BN_ULONG p_x[P384_LIMBS], const BN_ULONG p_y[P384_LIMBS]) { static const size_t kWindowSize = 5; - static const crypto_word kMask = (1 << (5 /* kWindowSize */ + 1)) - 1; + static const crypto_word_t kMask = (1 << (5 /* kWindowSize */ + 1)) - 1; uint8_t p_str[(P384_LIMBS * sizeof(Limb)) + 1]; - gfp_little_endian_bytes_from_scalar(p_str, sizeof(p_str) / sizeof(p_str[0]), - p_scalar, P384_LIMBS); + little_endian_bytes_from_scalar(p_str, sizeof(p_str) / sizeof(p_str[0]), + p_scalar, P384_LIMBS); /* A |P384_POINT| is (3 * 48) = 144 bytes, and the 64-byte alignment should * add no more than 63 bytes of overhead. Thus, |table| should require @@ -198,35 +198,35 @@ limbs_copy(row[1 - 1].Y, p_y, P384_LIMBS); limbs_copy(row[1 - 1].Z, ONE, P384_LIMBS); - GFp_nistz384_point_double(&row[2 - 1], &row[1 - 1]); - GFp_nistz384_point_add(&row[3 - 1], &row[2 - 1], &row[1 - 1]); - GFp_nistz384_point_double(&row[4 - 1], &row[2 - 1]); - GFp_nistz384_point_double(&row[6 - 1], &row[3 - 1]); - GFp_nistz384_point_double(&row[8 - 1], &row[4 - 1]); - GFp_nistz384_point_double(&row[12 - 1], &row[6 - 1]); - GFp_nistz384_point_add(&row[5 - 1], &row[4 - 1], &row[1 - 1]); - GFp_nistz384_point_add(&row[7 - 1], &row[6 - 1], &row[1 - 1]); - GFp_nistz384_point_add(&row[9 - 1], &row[8 - 1], &row[1 - 1]); - GFp_nistz384_point_add(&row[13 - 1], &row[12 - 1], &row[1 - 1]); - GFp_nistz384_point_double(&row[14 - 1], &row[7 - 1]); - GFp_nistz384_point_double(&row[10 - 1], &row[5 - 1]); - GFp_nistz384_point_add(&row[15 - 1], &row[14 - 1], &row[1 - 1]); - GFp_nistz384_point_add(&row[11 - 1], &row[10 - 1], &row[1 - 1]); - GFp_nistz384_point_double(&row[16 - 1], &row[8 - 1]); + nistz384_point_double(&row[2 - 1], &row[1 - 1]); + nistz384_point_add(&row[3 - 1], &row[2 - 1], &row[1 - 1]); + nistz384_point_double(&row[4 - 1], &row[2 - 1]); + nistz384_point_double(&row[6 - 1], &row[3 - 1]); + nistz384_point_double(&row[8 - 1], &row[4 - 1]); + nistz384_point_double(&row[12 - 1], &row[6 - 1]); + nistz384_point_add(&row[5 - 1], &row[4 - 1], &row[1 - 1]); + nistz384_point_add(&row[7 - 1], &row[6 - 1], &row[1 - 1]); + nistz384_point_add(&row[9 - 1], &row[8 - 1], &row[1 - 1]); + nistz384_point_add(&row[13 - 1], &row[12 - 1], &row[1 - 1]); + nistz384_point_double(&row[14 - 1], &row[7 - 1]); + nistz384_point_double(&row[10 - 1], &row[5 - 1]); + nistz384_point_add(&row[15 - 1], &row[14 - 1], &row[1 - 1]); + nistz384_point_add(&row[11 - 1], &row[10 - 1], &row[1 - 1]); + nistz384_point_double(&row[16 - 1], &row[8 - 1]); static const size_t START_INDEX = 384 - 4; size_t index = START_INDEX; BN_ULONG recoded_is_negative; - crypto_word recoded; + crypto_word_t recoded; - crypto_word wvalue = p_str[(index - 1) / 8]; + crypto_word_t wvalue = p_str[(index - 1) / 8]; wvalue = (wvalue >> ((index - 1) % 8)) & kMask; booth_recode(&recoded_is_negative, &recoded, wvalue, 5); dev_assert_secret(!recoded_is_negative); - gfp_p384_point_select_w5(r, table, recoded); + p384_point_select_w5(r, table, recoded); while (index >= kWindowSize) { if (index != START_INDEX) { @@ -239,11 +239,11 @@ index -= kWindowSize; - GFp_nistz384_point_double(r, r); - GFp_nistz384_point_double(r, r); - GFp_nistz384_point_double(r, r); - GFp_nistz384_point_double(r, r); - GFp_nistz384_point_double(r, r); + nistz384_point_double(r, r); + nistz384_point_double(r, r); + nistz384_point_double(r, r); + nistz384_point_double(r, r); + nistz384_point_double(r, r); } /* Final window */ @@ -252,6 +252,6 @@ add_precomputed_w5(r, wvalue, table); } -#if defined(__GNUC__) +#if defined(__GNUC__) || defined(__clang__) #pragma GCC diagnostic pop #endif diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz.c temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz.c --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz.c 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz.c 2023-10-30 19:40:00.000000000 +0000 @@ -25,7 +25,7 @@ * the end. The extra byte is useful because the caller will be breaking |str| * up into windows of a number of bits (5 or 7) that isn't divisible by 8, and * so it is useful for it to be able to read an extra zero byte. */ -void gfp_little_endian_bytes_from_scalar(uint8_t str[], size_t str_len, +void little_endian_bytes_from_scalar(uint8_t str[], size_t str_len, const Limb scalar[], size_t num_limbs) { debug_assert_nonsecret(str_len == (num_limbs * sizeof(Limb)) + 1); diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz.h temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz.h --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz.h 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/ecp_nistz.h 2023-10-30 19:40:00.000000000 +0000 @@ -15,7 +15,7 @@ #ifndef OPENSSL_HEADER_EC_ECP_NISTZ_H #define OPENSSL_HEADER_EC_ECP_NISTZ_H -#include +#include #include "../../limbs/limbs.h" @@ -114,7 +114,7 @@ // is a prime that is much larger than 2^w. It also only holds when windows // are applied from most significant to least significant, doubling between each // window. It does not apply to more complex table strategies such as -// |EC_GFp_nistz256_method|. +// |EC_nistz256_method|. // // PROOF: // @@ -246,16 +246,16 @@ // P-384: ...01110011; w = 2, 5, 6, 7 are okay // P-256: ...01010001; w = 5, 7 are okay // P-224: ...00111101; w = 3, 4, 5, 6 are okay -static inline void booth_recode(crypto_word *is_negative, crypto_word *digit, - crypto_word in, crypto_word w) { +static inline void booth_recode(crypto_word_t *is_negative, crypto_word_t *digit, + crypto_word_t in, crypto_word_t w) { debug_assert_nonsecret(w >= 2); debug_assert_nonsecret(w <= 7); // Set all bits of `s` to MSB(in), similar to |constant_time_msb_s|, // but 'in' seen as (`w+1`)-bit value. - crypto_word s = ~((in >> w) - 1); - crypto_word d; - d = ((crypto_word)1u << (w + 1)) - in - 1; + crypto_word_t s = ~((in >> w) - 1); + crypto_word_t d; + d = ((crypto_word_t)1u << (w + 1)) - in - 1; d = (d & s) | (in & ~s); d = (d >> 1) + (d & 1); @@ -267,8 +267,8 @@ #pragma GCC diagnostic pop #endif -void gfp_little_endian_bytes_from_scalar(uint8_t str[], size_t str_len, - const Limb scalar[], - size_t num_limbs); +void little_endian_bytes_from_scalar(uint8_t str[], size_t str_len, + const Limb scalar[], + size_t num_limbs); #endif // OPENSSL_HEADER_EC_ECP_NISTZ_H diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/gfp_p256.c temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/gfp_p256.c --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/gfp_p256.c 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/gfp_p256.c 2023-10-30 19:40:00.000000000 +0000 @@ -12,28 +12,18 @@ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#include "ecp_nistz256.h" +#include "./p256_shared.h" + #include "../../limbs/limbs.h" -#include "../../internal.h" -#include "../bn/internal.h" -#include "../../limbs/limbs.inl" +#if !defined(OPENSSL_USE_NISTZ256) -typedef Limb Elem[P256_LIMBS]; typedef Limb ScalarMont[P256_LIMBS]; typedef Limb Scalar[P256_LIMBS]; -void GFp_p256_scalar_sqr_rep_mont(ScalarMont r, const ScalarMont a, Limb rep); - -#if defined(OPENSSL_ARM) || defined(OPENSSL_X86) -void GFp_nistz256_sqr_mont(Elem r, const Elem a) { - /* XXX: Inefficient. TODO: optimize with dedicated squaring routine. */ - GFp_nistz256_mul_mont(r, a, a); -} -#endif +#include "../bn/internal.h" -#if !defined(OPENSSL_X86_64) -void GFp_p256_scalar_mul_mont(ScalarMont r, const ScalarMont a, +void p256_scalar_mul_mont(ScalarMont r, const ScalarMont a, const ScalarMont b) { static const BN_ULONG N[] = { TOBN(0xf3b9cac2, 0xfc632551), @@ -45,64 +35,16 @@ BN_MONT_CTX_N0(0xccd1c8aa, 0xee00bc4f) }; /* XXX: Inefficient. TODO: optimize with dedicated multiplication routine. */ - GFp_bn_mul_mont(r, a, b, N, N_N0, P256_LIMBS); + bn_mul_mont(r, a, b, N, N_N0, P256_LIMBS); } -#endif -#if defined(OPENSSL_X86_64) -void GFp_p256_scalar_sqr_mont(ScalarMont r, const ScalarMont a) { - GFp_p256_scalar_sqr_rep_mont(r, a, 1); -} -#else -void GFp_p256_scalar_sqr_mont(ScalarMont r, const ScalarMont a) { - GFp_p256_scalar_mul_mont(r, a, a); -} - -void GFp_p256_scalar_sqr_rep_mont(ScalarMont r, const ScalarMont a, Limb rep) { +/* XXX: Inefficient. TODO: optimize with dedicated squaring routine. */ +void p256_scalar_sqr_rep_mont(ScalarMont r, const ScalarMont a, Limb rep) { dev_assert_secret(rep >= 1); - GFp_p256_scalar_sqr_mont(r, a); + p256_scalar_mul_mont(r, a, a); for (Limb i = 1; i < rep; ++i) { - GFp_p256_scalar_sqr_mont(r, r); + p256_scalar_mul_mont(r, r, r); } } -#endif - - -#if !defined(OPENSSL_X86_64) - -/* TODO(perf): Optimize these. */ - -void GFp_nistz256_select_w5(P256_POINT *out, const P256_POINT table[16], - crypto_word index) { - dev_assert_secret(index >= 0); - - alignas(32) Elem x; limbs_zero(x, P256_LIMBS); - alignas(32) Elem y; limbs_zero(y, P256_LIMBS); - alignas(32) Elem z; limbs_zero(z, P256_LIMBS); - - // TODO: Rewrite in terms of |limbs_select|. - for (size_t i = 0; i < 16; ++i) { - crypto_word equal = constant_time_eq_w(index, (crypto_word)i + 1); - for (size_t j = 0; j < P256_LIMBS; ++j) { - x[j] = constant_time_select_w(equal, table[i].X[j], x[j]); - y[j] = constant_time_select_w(equal, table[i].Y[j], y[j]); - z[j] = constant_time_select_w(equal, table[i].Z[j], z[j]); - } - } - - limbs_copy(out->X, x, P256_LIMBS); - limbs_copy(out->Y, y, P256_LIMBS); - limbs_copy(out->Z, z, P256_LIMBS); -} - -#if defined GFp_USE_LARGE_TABLE -void GFp_nistz256_select_w7(P256_POINT_AFFINE *out, - const PRECOMP256_ROW table, crypto_word index) { - alignas(32) Limb xy[P256_LIMBS * 2]; - limbs_select(xy, table, P256_LIMBS * 2, 64, index - 1); - limbs_copy(out->X, &xy[0], P256_LIMBS); - limbs_copy(out->Y, &xy[P256_LIMBS], P256_LIMBS); -} -#endif #endif diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/gfp_p384.c temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/gfp_p384.c --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/gfp_p384.c 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/gfp_p384.c 2023-10-30 19:40:00.000000000 +0000 @@ -159,7 +159,7 @@ BN_MONT_CTX_N0(0x1, 0x1) }; /* XXX: Not (clearly) constant-time; inefficient.*/ - GFp_bn_mul_mont(r, a, b, Q, Q_N0, P384_LIMBS); + bn_mul_mont(r, a, b, Q, Q_N0, P384_LIMBS); } static inline void elem_mul_by_2(Elem r, const Elem a) { @@ -178,23 +178,19 @@ elem_mul_mont(r, a, a); } -void GFp_p384_elem_add(Elem r, const Elem a, const Elem b) { - elem_add(r, a, b); -} - -void GFp_p384_elem_sub(Elem r, const Elem a, const Elem b) { +void p384_elem_sub(Elem r, const Elem a, const Elem b) { elem_sub(r, a, b); } -void GFp_p384_elem_div_by_2(Elem r, const Elem a) { +void p384_elem_div_by_2(Elem r, const Elem a) { elem_div_by_2(r, a); } -void GFp_p384_elem_mul_mont(Elem r, const Elem a, const Elem b) { +void p384_elem_mul_mont(Elem r, const Elem a, const Elem b) { elem_mul_mont(r, a, b); } -void GFp_p384_elem_neg(Elem r, const Elem a) { +void p384_elem_neg(Elem r, const Elem a) { Limb is_zero = LIMBS_are_zero(a, P384_LIMBS); Carry borrow = limbs_sub(r, Q, a, P384_LIMBS); dev_assert_secret(borrow == 0); @@ -205,19 +201,19 @@ } -void GFp_p384_scalar_mul_mont(ScalarMont r, const ScalarMont a, +void p384_scalar_mul_mont(ScalarMont r, const ScalarMont a, const ScalarMont b) { static const BN_ULONG N_N0[] = { BN_MONT_CTX_N0(0x6ed46089, 0xe88fdc45) }; /* XXX: Inefficient. TODO: Add dedicated multiplication routine. */ - GFp_bn_mul_mont(r, a, b, N, N_N0, P384_LIMBS); + bn_mul_mont(r, a, b, N, N_N0, P384_LIMBS); } /* TODO(perf): Optimize this. */ -static void gfp_p384_point_select_w5(P384_POINT *out, +static void p384_point_select_w5(P384_POINT *out, const P384_POINT table[16], size_t index) { Elem x; limbs_zero(x, P384_LIMBS); Elem y; limbs_zero(y, P384_LIMBS); @@ -225,7 +221,7 @@ // TODO: Rewrite in terms of |limbs_select|. for (size_t i = 0; i < 16; ++i) { - crypto_word equal = constant_time_eq_w(index, (crypto_word)i + 1); + crypto_word_t equal = constant_time_eq_w(index, (crypto_word_t)i + 1); for (size_t j = 0; j < P384_LIMBS; ++j) { x[j] = constant_time_select_w(equal, table[i].X[j], x[j]); y[j] = constant_time_select_w(equal, table[i].Y[j], y[j]); diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256.c temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256.c --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256.c 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256.c 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,497 @@ +/* Copyright (c) 2020, Google Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ + +// An implementation of the NIST P-256 elliptic curve point multiplication. +// 256-bit Montgomery form for 64 and 32-bit. Field operations are generated by +// Fiat, which lives in //third_party/fiat. + +#include + +#include "../../limbs/limbs.h" +#include "../../limbs/limbs.inl" + +#include "p256_shared.h" + +#include "../../internal.h" +#include "./util.h" + +#if !defined(OPENSSL_USE_NISTZ256) + +#if defined(_MSC_VER) && !defined(__clang__) +// '=': conversion from 'int64_t' to 'int32_t', possible loss of data +#pragma warning(disable: 4242) +// '=': conversion from 'int32_t' to 'uint8_t', possible loss of data +#pragma warning(disable: 4244) +// 'initializing': conversion from 'size_t' to 'fiat_p256_limb_t' +#pragma warning(disable: 4267) +#endif + +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wsign-conversion" +#endif + +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic ignored "-Winline" +#endif + +#if defined(BORINGSSL_HAS_UINT128) +#if defined(__GNUC__) +#pragma GCC diagnostic ignored "-Wpedantic" +#endif +#include "../../../third_party/fiat/p256_64.h" +#elif defined(OPENSSL_64_BIT) +#include "../../../third_party/fiat/p256_64_msvc.h" +#else +#include "../../../third_party/fiat/p256_32.h" +#endif + + +// utility functions, handwritten + +#if defined(OPENSSL_64_BIT) +#define FIAT_P256_NLIMBS 4 +typedef uint64_t fiat_p256_limb_t; +typedef uint64_t fiat_p256_felem[FIAT_P256_NLIMBS]; +static const fiat_p256_felem fiat_p256_one = {0x1, 0xffffffff00000000, + 0xffffffffffffffff, 0xfffffffe}; +#else // 64BIT; else 32BIT +#define FIAT_P256_NLIMBS 8 +typedef uint32_t fiat_p256_limb_t; +typedef uint32_t fiat_p256_felem[FIAT_P256_NLIMBS]; +static const fiat_p256_felem fiat_p256_one = { + 0x1, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffffffe, 0x0}; +#endif // 64BIT + + +static fiat_p256_limb_t fiat_p256_nz( + const fiat_p256_limb_t in1[FIAT_P256_NLIMBS]) { + fiat_p256_limb_t ret; + fiat_p256_nonzero(&ret, in1); + return ret; +} + +static void fiat_p256_copy(fiat_p256_limb_t out[FIAT_P256_NLIMBS], + const fiat_p256_limb_t in1[FIAT_P256_NLIMBS]) { + for (size_t i = 0; i < FIAT_P256_NLIMBS; i++) { + out[i] = in1[i]; + } +} + +static void fiat_p256_cmovznz(fiat_p256_limb_t out[FIAT_P256_NLIMBS], + fiat_p256_limb_t t, + const fiat_p256_limb_t z[FIAT_P256_NLIMBS], + const fiat_p256_limb_t nz[FIAT_P256_NLIMBS]) { + fiat_p256_selectznz(out, !!t, z, nz); +} + +// Group operations +// ---------------- +// +// Building on top of the field operations we have the operations on the +// elliptic curve group itself. Points on the curve are represented in Jacobian +// coordinates. +// +// Both operations were transcribed to Coq and proven to correspond to naive +// implementations using Affine coordinates, for all suitable fields. In the +// Coq proofs, issues of constant-time execution and memory layout (aliasing) +// conventions were not considered. Specification of affine coordinates: +// +// As a sanity check, a proof that these points form a commutative group: +// + +// fiat_p256_point_double calculates 2*(x_in, y_in, z_in) +// +// The method is taken from: +// http://hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b +// +// Coq transcription and correctness proof: +// +// +// +// Outputs can equal corresponding inputs, i.e., x_out == x_in is allowed. +// while x_out == y_in is not (maybe this works, but it's not tested). +static void fiat_p256_point_double(fiat_p256_felem x_out, fiat_p256_felem y_out, + fiat_p256_felem z_out, + const fiat_p256_felem x_in, + const fiat_p256_felem y_in, + const fiat_p256_felem z_in) { + fiat_p256_felem delta, gamma, beta, ftmp, ftmp2, tmptmp, alpha, fourbeta; + // delta = z^2 + fiat_p256_square(delta, z_in); + // gamma = y^2 + fiat_p256_square(gamma, y_in); + // beta = x*gamma + fiat_p256_mul(beta, x_in, gamma); + + // alpha = 3*(x-delta)*(x+delta) + fiat_p256_sub(ftmp, x_in, delta); + fiat_p256_add(ftmp2, x_in, delta); + + fiat_p256_add(tmptmp, ftmp2, ftmp2); + fiat_p256_add(ftmp2, ftmp2, tmptmp); + fiat_p256_mul(alpha, ftmp, ftmp2); + + // x' = alpha^2 - 8*beta + fiat_p256_square(x_out, alpha); + fiat_p256_add(fourbeta, beta, beta); + fiat_p256_add(fourbeta, fourbeta, fourbeta); + fiat_p256_add(tmptmp, fourbeta, fourbeta); + fiat_p256_sub(x_out, x_out, tmptmp); + + // z' = (y + z)^2 - gamma - delta + fiat_p256_add(delta, gamma, delta); + fiat_p256_add(ftmp, y_in, z_in); + fiat_p256_square(z_out, ftmp); + fiat_p256_sub(z_out, z_out, delta); + + // y' = alpha*(4*beta - x') - 8*gamma^2 + fiat_p256_sub(y_out, fourbeta, x_out); + fiat_p256_add(gamma, gamma, gamma); + fiat_p256_square(gamma, gamma); + fiat_p256_mul(y_out, alpha, y_out); + fiat_p256_add(gamma, gamma, gamma); + fiat_p256_sub(y_out, y_out, gamma); +} + +// fiat_p256_point_add calculates (x1, y1, z1) + (x2, y2, z2) +// +// The method is taken from: +// http://hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#addition-add-2007-bl, +// adapted for mixed addition (z2 = 1, or z2 = 0 for the point at infinity). +// +// Coq transcription and correctness proof: +// +// +// +// This function includes a branch for checking whether the two input points +// are equal, (while not equal to the point at infinity). This case never +// happens during single point multiplication, so there is no timing leak for +// ECDH or ECDSA signing. +static void fiat_p256_point_add(fiat_p256_felem x3, fiat_p256_felem y3, + fiat_p256_felem z3, const fiat_p256_felem x1, + const fiat_p256_felem y1, + const fiat_p256_felem z1, const int mixed, + const fiat_p256_felem x2, + const fiat_p256_felem y2, + const fiat_p256_felem z2) { + fiat_p256_felem x_out, y_out, z_out; + fiat_p256_limb_t z1nz = fiat_p256_nz(z1); + fiat_p256_limb_t z2nz = fiat_p256_nz(z2); + + // z1z1 = z1z1 = z1**2 + fiat_p256_felem z1z1; + fiat_p256_square(z1z1, z1); + + fiat_p256_felem u1, s1, two_z1z2; + if (!mixed) { + // z2z2 = z2**2 + fiat_p256_felem z2z2; + fiat_p256_square(z2z2, z2); + + // u1 = x1*z2z2 + fiat_p256_mul(u1, x1, z2z2); + + // two_z1z2 = (z1 + z2)**2 - (z1z1 + z2z2) = 2z1z2 + fiat_p256_add(two_z1z2, z1, z2); + fiat_p256_square(two_z1z2, two_z1z2); + fiat_p256_sub(two_z1z2, two_z1z2, z1z1); + fiat_p256_sub(two_z1z2, two_z1z2, z2z2); + + // s1 = y1 * z2**3 + fiat_p256_mul(s1, z2, z2z2); + fiat_p256_mul(s1, s1, y1); + } else { + // We'll assume z2 = 1 (special case z2 = 0 is handled later). + + // u1 = x1*z2z2 + fiat_p256_copy(u1, x1); + // two_z1z2 = 2z1z2 + fiat_p256_add(two_z1z2, z1, z1); + // s1 = y1 * z2**3 + fiat_p256_copy(s1, y1); + } + + // u2 = x2*z1z1 + fiat_p256_felem u2; + fiat_p256_mul(u2, x2, z1z1); + + // h = u2 - u1 + fiat_p256_felem h; + fiat_p256_sub(h, u2, u1); + + fiat_p256_limb_t xneq = fiat_p256_nz(h); + + // z_out = two_z1z2 * h + fiat_p256_mul(z_out, h, two_z1z2); + + // z1z1z1 = z1 * z1z1 + fiat_p256_felem z1z1z1; + fiat_p256_mul(z1z1z1, z1, z1z1); + + // s2 = y2 * z1**3 + fiat_p256_felem s2; + fiat_p256_mul(s2, y2, z1z1z1); + + // r = (s2 - s1)*2 + fiat_p256_felem r; + fiat_p256_sub(r, s2, s1); + fiat_p256_add(r, r, r); + + fiat_p256_limb_t yneq = fiat_p256_nz(r); + + fiat_p256_limb_t is_nontrivial_double = constant_time_is_zero_w(xneq | yneq) & + ~constant_time_is_zero_w(z1nz) & + ~constant_time_is_zero_w(z2nz); + if (constant_time_declassify_w(is_nontrivial_double)) { + fiat_p256_point_double(x3, y3, z3, x1, y1, z1); + return; + } + + // I = (2h)**2 + fiat_p256_felem i; + fiat_p256_add(i, h, h); + fiat_p256_square(i, i); + + // J = h * I + fiat_p256_felem j; + fiat_p256_mul(j, h, i); + + // V = U1 * I + fiat_p256_felem v; + fiat_p256_mul(v, u1, i); + + // x_out = r**2 - J - 2V + fiat_p256_square(x_out, r); + fiat_p256_sub(x_out, x_out, j); + fiat_p256_sub(x_out, x_out, v); + fiat_p256_sub(x_out, x_out, v); + + // y_out = r(V-x_out) - 2 * s1 * J + fiat_p256_sub(y_out, v, x_out); + fiat_p256_mul(y_out, y_out, r); + fiat_p256_felem s1j; + fiat_p256_mul(s1j, s1, j); + fiat_p256_sub(y_out, y_out, s1j); + fiat_p256_sub(y_out, y_out, s1j); + + fiat_p256_cmovznz(x_out, z1nz, x2, x_out); + fiat_p256_cmovznz(x3, z2nz, x1, x_out); + fiat_p256_cmovznz(y_out, z1nz, y2, y_out); + fiat_p256_cmovznz(y3, z2nz, y1, y_out); + fiat_p256_cmovznz(z_out, z1nz, z2, z_out); + fiat_p256_cmovznz(z3, z2nz, z1, z_out); +} + +#include "./p256_table.h" + +// fiat_p256_select_point_affine selects the |idx-1|th point from a +// precomputation table and copies it to out. If |idx| is zero, the output is +// the point at infinity. +static void fiat_p256_select_point_affine( + const fiat_p256_limb_t idx, size_t size, + const fiat_p256_felem pre_comp[/*size*/][2], fiat_p256_felem out[3]) { + OPENSSL_memset(out, 0, sizeof(fiat_p256_felem) * 3); + for (size_t i = 0; i < size; i++) { + fiat_p256_limb_t mismatch = i ^ (idx - 1); + fiat_p256_cmovznz(out[0], mismatch, pre_comp[i][0], out[0]); + fiat_p256_cmovznz(out[1], mismatch, pre_comp[i][1], out[1]); + } + fiat_p256_cmovznz(out[2], idx, out[2], fiat_p256_one); +} + +// fiat_p256_select_point selects the |idx|th point from a precomputation table +// and copies it to out. +static void fiat_p256_select_point(const fiat_p256_limb_t idx, size_t size, + const fiat_p256_felem pre_comp[/*size*/][3], + fiat_p256_felem out[3]) { + OPENSSL_memset(out, 0, sizeof(fiat_p256_felem) * 3); + for (size_t i = 0; i < size; i++) { + fiat_p256_limb_t mismatch = i ^ idx; + fiat_p256_cmovznz(out[0], mismatch, pre_comp[i][0], out[0]); + fiat_p256_cmovznz(out[1], mismatch, pre_comp[i][1], out[1]); + fiat_p256_cmovznz(out[2], mismatch, pre_comp[i][2], out[2]); + } +} + +// fiat_p256_get_bit returns the |i|th bit in |in| +static crypto_word_t fiat_p256_get_bit(const Limb in[P256_LIMBS], int i) { + if (i < 0 || i >= 256) { + return 0; + } +#if defined(OPENSSL_64_BIT) + OPENSSL_STATIC_ASSERT(sizeof(Limb) == 8, "BN_ULONG was not 64-bit"); + return (in[i >> 6] >> (i & 63)) & 1; +#else + OPENSSL_STATIC_ASSERT(sizeof(Limb) == 4, "BN_ULONG was not 32-bit"); + return (in[i >> 5] >> (i & 31)) & 1; +#endif +} + +void p256_point_mul(P256_POINT *r, const Limb scalar[P256_LIMBS], + const Limb p_x[P256_LIMBS], const Limb p_y[P256_LIMBS]) { + debug_assert_nonsecret(r != NULL); + debug_assert_nonsecret(scalar != NULL); + debug_assert_nonsecret(p_x != NULL); + debug_assert_nonsecret(p_y != NULL); + + fiat_p256_felem p_pre_comp[17][3]; + OPENSSL_memset(&p_pre_comp, 0, sizeof(p_pre_comp)); + // Precompute multiples. + limbs_copy(&p_pre_comp[1][0][0], p_x, P256_LIMBS); + limbs_copy(&p_pre_comp[1][1][0], p_y, P256_LIMBS); + limbs_copy(&p_pre_comp[1][2][0], fiat_p256_one, P256_LIMBS); + + for (size_t j = 2; j <= 16; ++j) { + if (j & 1) { + fiat_p256_point_add(p_pre_comp[j][0], p_pre_comp[j][1], p_pre_comp[j][2], + p_pre_comp[1][0], p_pre_comp[1][1], p_pre_comp[1][2], + 0, p_pre_comp[j - 1][0], p_pre_comp[j - 1][1], + p_pre_comp[j - 1][2]); + } else { + fiat_p256_point_double(p_pre_comp[j][0], p_pre_comp[j][1], + p_pre_comp[j][2], p_pre_comp[j / 2][0], + p_pre_comp[j / 2][1], p_pre_comp[j / 2][2]); + } + } + + // Set nq to the point at infinity. + fiat_p256_felem nq[3] = {{0}, {0}, {0}}, ftmp, tmp[3]; + + // Loop over |scalar| msb-to-lsb, incorporating |p_pre_comp| every 5th round. + int skip = 1; // Save two point operations in the first round. + for (size_t i = 255; i < 256; i--) { + // double + if (!skip) { + fiat_p256_point_double(nq[0], nq[1], nq[2], nq[0], nq[1], nq[2]); + } + + // do other additions every 5 doublings + if (i % 5 == 0) { + crypto_word_t bits = fiat_p256_get_bit(scalar, i + 4) << 5; + bits |= fiat_p256_get_bit(scalar, i + 3) << 4; + bits |= fiat_p256_get_bit(scalar, i + 2) << 3; + bits |= fiat_p256_get_bit(scalar, i + 1) << 2; + bits |= fiat_p256_get_bit(scalar, i) << 1; + bits |= fiat_p256_get_bit(scalar, i - 1); + crypto_word_t sign, digit; + recode_scalar_bits(&sign, &digit, bits); + + // select the point to add or subtract, in constant time. + fiat_p256_select_point((fiat_p256_limb_t)digit, 17, + RING_CORE_POINTLESS_ARRAY_CONST_CAST((const fiat_p256_felem(*)[3]))p_pre_comp, + tmp); + fiat_p256_opp(ftmp, tmp[1]); // (X, -Y, Z) is the negative point. + fiat_p256_cmovznz(tmp[1], (fiat_p256_limb_t)sign, tmp[1], ftmp); + + if (!skip) { + fiat_p256_point_add(nq[0], nq[1], nq[2], nq[0], nq[1], nq[2], + 0 /* mixed */, tmp[0], tmp[1], tmp[2]); + } else { + fiat_p256_copy(nq[0], tmp[0]); + fiat_p256_copy(nq[1], tmp[1]); + fiat_p256_copy(nq[2], tmp[2]); + skip = 0; + } + } + } + + limbs_copy(r->X, nq[0], P256_LIMBS); + limbs_copy(r->Y, nq[1], P256_LIMBS); + limbs_copy(r->Z, nq[2], P256_LIMBS); +} + +void p256_point_mul_base(P256_POINT *r, const Limb scalar[P256_LIMBS]) { + // Set nq to the point at infinity. + fiat_p256_felem nq[3] = {{0}, {0}, {0}}, tmp[3]; + + int skip = 1; // Save two point operations in the first round. + for (size_t i = 31; i < 32; i--) { + if (!skip) { + fiat_p256_point_double(nq[0], nq[1], nq[2], nq[0], nq[1], nq[2]); + } + + // First, look 32 bits upwards. + crypto_word_t bits = fiat_p256_get_bit(scalar, i + 224) << 3; + bits |= fiat_p256_get_bit(scalar, i + 160) << 2; + bits |= fiat_p256_get_bit(scalar, i + 96) << 1; + bits |= fiat_p256_get_bit(scalar, i + 32); + // Select the point to add, in constant time. + fiat_p256_select_point_affine((fiat_p256_limb_t)bits, 15, + fiat_p256_g_pre_comp[1], tmp); + + if (!skip) { + fiat_p256_point_add(nq[0], nq[1], nq[2], nq[0], nq[1], nq[2], + 1 /* mixed */, tmp[0], tmp[1], tmp[2]); + } else { + fiat_p256_copy(nq[0], tmp[0]); + fiat_p256_copy(nq[1], tmp[1]); + fiat_p256_copy(nq[2], tmp[2]); + skip = 0; + } + + // Second, look at the current position. + bits = fiat_p256_get_bit(scalar, i + 192) << 3; + bits |= fiat_p256_get_bit(scalar, i + 128) << 2; + bits |= fiat_p256_get_bit(scalar, i + 64) << 1; + bits |= fiat_p256_get_bit(scalar, i); + // Select the point to add, in constant time. + fiat_p256_select_point_affine((fiat_p256_limb_t)bits, 15, + fiat_p256_g_pre_comp[0], tmp); + fiat_p256_point_add(nq[0], nq[1], nq[2], nq[0], nq[1], nq[2], 1 /* mixed */, + tmp[0], tmp[1], tmp[2]); + } + + limbs_copy(r->X, nq[0], P256_LIMBS); + limbs_copy(r->Y, nq[1], P256_LIMBS); + limbs_copy(r->Z, nq[2], P256_LIMBS); +} + +void p256_mul_mont(Limb r[P256_LIMBS], const Limb a[P256_LIMBS], + const Limb b[P256_LIMBS]) { + fiat_p256_mul(r, a, b); +} + +void p256_sqr_mont(Limb r[P256_LIMBS], const Limb a[P256_LIMBS]) { + fiat_p256_square(r, a); +} + +void p256_point_add(P256_POINT *r, const P256_POINT *a, const P256_POINT *b) { + fiat_p256_point_add(r->X, r->Y, r->Z, + a->X, a->Y, a->Z, + 0, + b->X, b->Y, b->Z); +} + +void p256_point_double(P256_POINT *r, const P256_POINT *a) { + fiat_p256_point_double(r->X, r->Y, r->Z, + a->X, a->Y, a->Z); +} + +// For testing only. +void p256_point_add_affine(P256_POINT *r, const P256_POINT *a, + const BN_ULONG b[P256_LIMBS * 2]) { + const Limb *b_x = &b[0]; + const Limb *b_y = &b[P256_LIMBS]; + fiat_p256_felem b_z = {0}; + crypto_word_t b_is_inf = constant_time_select_w( + LIMBS_are_zero(b_x, P256_LIMBS), LIMBS_are_zero(b_y, P256_LIMBS), 0); + fiat_p256_cmovznz(b_z, constant_time_is_zero_w(b_is_inf), b_z, fiat_p256_one); + fiat_p256_point_add(r->X, r->Y, r->Z, + a->X, a->Y, a->Z, + 1, + b_x, b_y, b_z); +} + +#endif diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256-nistz.c temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256-nistz.c --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256-nistz.c 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256-nistz.c 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,287 @@ +/* + * Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2014, Intel Corporation. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + * + * Originally written by Shay Gueron (1, 2), and Vlad Krasnov (1) + * (1) Intel Corporation, Israel Development Center, Haifa, Israel + * (2) University of Haifa, Israel + * + * Reference: + * S.Gueron and V.Krasnov, "Fast Prime Field Elliptic Curve Cryptography with + * 256 Bit Primes" + */ + +#include + +#include "../../limbs/limbs.inl" + +#include + +#include "p256-nistz.h" + +#if defined(OPENSSL_USE_NISTZ256) + +typedef P256_POINT_AFFINE PRECOMP256_ROW[64]; + +// One converted into the Montgomery domain +static const BN_ULONG ONE[P256_LIMBS] = { + TOBN(0x00000000, 0x00000001), TOBN(0xffffffff, 0x00000000), + TOBN(0xffffffff, 0xffffffff), TOBN(0x00000000, 0xfffffffe), +}; + +// Precomputed tables for the default generator +#include "p256-nistz-table.h" + +// Recode window to a signed digit, see |nistp_recode_scalar_bits| in +// util.c for details +static crypto_word_t booth_recode_w5(crypto_word_t in) { + crypto_word_t s, d; + + s = ~((in >> 5) - 1); + d = (1 << 6) - in - 1; + d = (d & s) | (in & ~s); + d = (d >> 1) + (d & 1); + + return (d << 1) + (s & 1); +} + +static crypto_word_t booth_recode_w7(crypto_word_t in) { + crypto_word_t s, d; + + s = ~((in >> 7) - 1); + d = (1 << 8) - in - 1; + d = (d & s) | (in & ~s); + d = (d >> 1) + (d & 1); + + return (d << 1) + (s & 1); +} + +// The `(P256_LIMBS == 8)` case is unreachable for 64-bit targets. +#if defined(OPENSSL_64_BIT) && defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunreachable-code" +#endif + +// copy_conditional copies |src| to |dst| if |move| is one and leaves it as-is +// if |move| is zero. +// +// WARNING: this breaks the usual convention of constant-time functions +// returning masks. +static void copy_conditional(BN_ULONG dst[P256_LIMBS], + const BN_ULONG src[P256_LIMBS], BN_ULONG move) { + BN_ULONG mask1 = ((BN_ULONG)0) - move; + BN_ULONG mask2 = ~mask1; + + dst[0] = (src[0] & mask1) ^ (dst[0] & mask2); + dst[1] = (src[1] & mask1) ^ (dst[1] & mask2); + dst[2] = (src[2] & mask1) ^ (dst[2] & mask2); + dst[3] = (src[3] & mask1) ^ (dst[3] & mask2); + if (P256_LIMBS == 8) { + dst[4] = (src[4] & mask1) ^ (dst[4] & mask2); + dst[5] = (src[5] & mask1) ^ (dst[5] & mask2); + dst[6] = (src[6] & mask1) ^ (dst[6] & mask2); + dst[7] = (src[7] & mask1) ^ (dst[7] & mask2); + } +} + +#if defined(__clang__) +#pragma GCC diagnostic pop +#endif + +// is_not_zero returns one iff in != 0 and zero otherwise. +// +// WARNING: this breaks the usual convention of constant-time functions +// returning masks. +// +// (define-fun is_not_zero ((in (_ BitVec 64))) (_ BitVec 64) +// (bvlshr (bvor in (bvsub #x0000000000000000 in)) #x000000000000003f) +// ) +// +// (declare-fun x () (_ BitVec 64)) +// +// (assert (and (= x #x0000000000000000) (= (is_not_zero x) #x0000000000000001))) +// (check-sat) +// +// (assert (and (not (= x #x0000000000000000)) (= (is_not_zero x) #x0000000000000000))) +// (check-sat) +// +static BN_ULONG is_not_zero(BN_ULONG in) { + in |= (0 - in); + in >>= BN_BITS2 - 1; + return in; +} + + +// r = p * p_scalar +static void ecp_nistz256_windowed_mul(P256_POINT *r, + const BN_ULONG p_scalar[P256_LIMBS], + const BN_ULONG p_x[P256_LIMBS], + const BN_ULONG p_y[P256_LIMBS]) { + debug_assert_nonsecret(r != NULL); + debug_assert_nonsecret(p_scalar != NULL); + debug_assert_nonsecret(p_x != NULL); + debug_assert_nonsecret(p_y != NULL); + + static const size_t kWindowSize = 5; + static const crypto_word_t kMask = (1 << (5 /* kWindowSize */ + 1)) - 1; + + // A |P256_POINT| is (3 * 32) = 96 bytes, and the 64-byte alignment should + // add no more than 63 bytes of overhead. Thus, |table| should require + // ~1599 ((96 * 16) + 63) bytes of stack space. + alignas(64) P256_POINT table[16]; + P256_SCALAR_BYTES p_str; + p256_scalar_bytes_from_limbs(p_str, p_scalar); + + // table[0] is implicitly (0,0,0) (the point at infinity), therefore it is + // not stored. All other values are actually stored with an offset of -1 in + // table. + P256_POINT *row = table; + + limbs_copy(row[1 - 1].X, p_x, P256_LIMBS); + limbs_copy(row[1 - 1].Y, p_y, P256_LIMBS); + limbs_copy(row[1 - 1].Z, ONE, P256_LIMBS); + + ecp_nistz256_point_double(&row[2 - 1], &row[1 - 1]); + ecp_nistz256_point_add(&row[3 - 1], &row[2 - 1], &row[1 - 1]); + ecp_nistz256_point_double(&row[4 - 1], &row[2 - 1]); + ecp_nistz256_point_double(&row[6 - 1], &row[3 - 1]); + ecp_nistz256_point_double(&row[8 - 1], &row[4 - 1]); + ecp_nistz256_point_double(&row[12 - 1], &row[6 - 1]); + ecp_nistz256_point_add(&row[5 - 1], &row[4 - 1], &row[1 - 1]); + ecp_nistz256_point_add(&row[7 - 1], &row[6 - 1], &row[1 - 1]); + ecp_nistz256_point_add(&row[9 - 1], &row[8 - 1], &row[1 - 1]); + ecp_nistz256_point_add(&row[13 - 1], &row[12 - 1], &row[1 - 1]); + ecp_nistz256_point_double(&row[14 - 1], &row[7 - 1]); + ecp_nistz256_point_double(&row[10 - 1], &row[5 - 1]); + ecp_nistz256_point_add(&row[15 - 1], &row[14 - 1], &row[1 - 1]); + ecp_nistz256_point_add(&row[11 - 1], &row[10 - 1], &row[1 - 1]); + ecp_nistz256_point_double(&row[16 - 1], &row[8 - 1]); + + BN_ULONG tmp[P256_LIMBS]; + alignas(32) P256_POINT h; + size_t index = 255; + crypto_word_t wvalue = p_str[(index - 1) / 8]; + wvalue = (wvalue >> ((index - 1) % 8)) & kMask; + + ecp_nistz256_select_w5(r, table, (int)(booth_recode_w5(wvalue) >> 1)); + + while (index >= 5) { + if (index != 255) { + size_t off = (index - 1) / 8; + + wvalue = (crypto_word_t)p_str[off] | (crypto_word_t)p_str[off + 1] << 8; + wvalue = (wvalue >> ((index - 1) % 8)) & kMask; + + wvalue = booth_recode_w5(wvalue); + + ecp_nistz256_select_w5(&h, table, (int)(wvalue >> 1)); + + ecp_nistz256_neg(tmp, h.Y); + copy_conditional(h.Y, tmp, (wvalue & 1)); + + ecp_nistz256_point_add(r, r, &h); + } + + index -= kWindowSize; + + ecp_nistz256_point_double(r, r); + ecp_nistz256_point_double(r, r); + ecp_nistz256_point_double(r, r); + ecp_nistz256_point_double(r, r); + ecp_nistz256_point_double(r, r); + } + + // Final window + wvalue = p_str[0]; + wvalue = (wvalue << 1) & kMask; + + wvalue = booth_recode_w5(wvalue); + + ecp_nistz256_select_w5(&h, table, (int)(wvalue >> 1)); + + ecp_nistz256_neg(tmp, h.Y); + copy_conditional(h.Y, tmp, wvalue & 1); + + ecp_nistz256_point_add(r, r, &h); +} + +static crypto_word_t calc_first_wvalue(size_t *index, const uint8_t p_str[33]) { + static const size_t kWindowSize = 7; + static const crypto_word_t kMask = (1 << (7 /* kWindowSize */ + 1)) - 1; + *index = kWindowSize; + + crypto_word_t wvalue = ((crypto_word_t)p_str[0] << 1) & kMask; + return booth_recode_w7(wvalue); +} + +static crypto_word_t calc_wvalue(size_t *index, const uint8_t p_str[33]) { + static const size_t kWindowSize = 7; + static const crypto_word_t kMask = (1 << (7 /* kWindowSize */ + 1)) - 1; + + const size_t off = (*index - 1) / 8; + crypto_word_t wvalue = + (crypto_word_t)p_str[off] | (crypto_word_t)p_str[off + 1] << 8; + wvalue = (wvalue >> ((*index - 1) % 8)) & kMask; + *index += kWindowSize; + + return booth_recode_w7(wvalue); +} + +void p256_point_mul(P256_POINT *r, const Limb p_scalar[P256_LIMBS], + const Limb p_x[P256_LIMBS], + const Limb p_y[P256_LIMBS]) { + alignas(32) P256_POINT out; + ecp_nistz256_windowed_mul(&out, p_scalar, p_x, p_y); + + limbs_copy(r->X, out.X, P256_LIMBS); + limbs_copy(r->Y, out.Y, P256_LIMBS); + limbs_copy(r->Z, out.Z, P256_LIMBS); +} + +void p256_point_mul_base(P256_POINT *r, const Limb scalar[P256_LIMBS]) { + P256_SCALAR_BYTES p_str; + p256_scalar_bytes_from_limbs(p_str, scalar); + + // First window + size_t index = 0; + crypto_word_t wvalue = calc_first_wvalue(&index, p_str); + + alignas(32) P256_POINT_AFFINE t; + alignas(32) P256_POINT p; + ecp_nistz256_select_w7(&t, ecp_nistz256_precomputed[0], (int)(wvalue >> 1)); + ecp_nistz256_neg(p.Z, t.Y); + copy_conditional(t.Y, p.Z, wvalue & 1); + + // Convert |t| from affine to Jacobian coordinates. We set Z to zero if |t| + // is infinity and |ONE| otherwise. |t| was computed from the table, so it + // is infinity iff |wvalue >> 1| is zero. + limbs_copy(p.X, t.X, P256_LIMBS); + limbs_copy(p.Y, t.Y, P256_LIMBS); + limbs_zero(p.Z, P256_LIMBS); + copy_conditional(p.Z, ONE, is_not_zero(wvalue >> 1)); + + for (int i = 1; i < 37; i++) { + wvalue = calc_wvalue(&index, p_str); + + ecp_nistz256_select_w7(&t, ecp_nistz256_precomputed[i], (int)(wvalue >> 1)); + + alignas(32) BN_ULONG neg_Y[P256_LIMBS]; + ecp_nistz256_neg(neg_Y, t.Y); + copy_conditional(t.Y, neg_Y, wvalue & 1); + + // Note |ecp_nistz256_point_add_affine| does not work if |p| and |t| are the + // same non-infinity point. + ecp_nistz256_point_add_affine(&p, &p, &t); + } + + limbs_copy(r->X, p.X, P256_LIMBS); + limbs_copy(r->Y, p.Y, P256_LIMBS); + limbs_copy(r->Z, p.Z, P256_LIMBS); +} + +#endif /* defined(OPENSSL_USE_NISTZ256) */ diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256-nistz.h temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256-nistz.h --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256-nistz.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256-nistz.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,102 @@ +/* + * Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2014, Intel Corporation. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + * + * Originally written by Shay Gueron (1, 2), and Vlad Krasnov (1) + * (1) Intel Corporation, Israel Development Center, Haifa, Israel + * (2) University of Haifa, Israel + * + * Reference: + * S.Gueron and V.Krasnov, "Fast Prime Field Elliptic Curve Cryptography with + * 256 Bit Primes" + */ + +#ifndef OPENSSL_HEADER_EC_P256_X86_64_H +#define OPENSSL_HEADER_EC_P256_X86_64_H + +#include + +#include "p256_shared.h" + +#include "../bn/internal.h" + +#if defined(OPENSSL_USE_NISTZ256) + +// ecp_nistz256_neg sets |res| to -|a| mod P. +void ecp_nistz256_neg(BN_ULONG res[P256_LIMBS], const BN_ULONG a[P256_LIMBS]); + +// ecp_nistz256_mul_mont sets |res| to |a| * |b| * 2^-256 mod P. +void ecp_nistz256_mul_mont(BN_ULONG res[P256_LIMBS], + const BN_ULONG a[P256_LIMBS], + const BN_ULONG b[P256_LIMBS]); + +// ecp_nistz256_sqr_mont sets |res| to |a| * |a| * 2^-256 mod P. +void ecp_nistz256_sqr_mont(BN_ULONG res[P256_LIMBS], + const BN_ULONG a[P256_LIMBS]); + + +// P-256 scalar operations. +// +// The following functions compute modulo N, where N is the order of P-256. They +// take fully-reduced inputs and give fully-reduced outputs. + +// ecp_nistz256_ord_mul_mont sets |res| to |a| * |b| where inputs and outputs +// are in Montgomery form. That is, |res| is |a| * |b| * 2^-256 mod N. +void ecp_nistz256_ord_mul_mont(BN_ULONG res[P256_LIMBS], + const BN_ULONG a[P256_LIMBS], + const BN_ULONG b[P256_LIMBS]); + +// ecp_nistz256_ord_sqr_mont sets |res| to |a|^(2*|rep|) where inputs and +// outputs are in Montgomery form. That is, |res| is +// (|a| * 2^-256)^(2*|rep|) * 2^256 mod N. +void ecp_nistz256_ord_sqr_mont(BN_ULONG res[P256_LIMBS], + const BN_ULONG a[P256_LIMBS], BN_ULONG rep); + + + +// P-256 point operations. +// +// The following functions may be used in-place. All coordinates are in the +// Montgomery domain. + +// A P256_POINT_AFFINE represents a P-256 point in affine coordinates. Infinity +// is encoded as (0, 0). +typedef struct { + BN_ULONG X[P256_LIMBS]; + BN_ULONG Y[P256_LIMBS]; +} P256_POINT_AFFINE; + +// ecp_nistz256_select_w5 sets |*val| to |in_t[index-1]| if 1 <= |index| <= 16 +// and all zeros (the point at infinity) if |index| is 0. This is done in +// constant time. +void ecp_nistz256_select_w5(P256_POINT *val, const P256_POINT in_t[16], + int index); + +// ecp_nistz256_select_w7 sets |*val| to |in_t[index-1]| if 1 <= |index| <= 64 +// and all zeros (the point at infinity) if |index| is 0. This is done in +// constant time. +void ecp_nistz256_select_w7(P256_POINT_AFFINE *val, + const P256_POINT_AFFINE in_t[64], + int index); + +// ecp_nistz256_point_double sets |r| to |a| doubled. +void ecp_nistz256_point_double(P256_POINT *r, const P256_POINT *a); + +// ecp_nistz256_point_add adds |a| to |b| and places the result in |r|. +void ecp_nistz256_point_add(P256_POINT *r, const P256_POINT *a, + const P256_POINT *b); + +// ecp_nistz256_point_add_affine adds |a| to |b| and places the result in +// |r|. |a| and |b| must not represent the same point unless they are both +// infinity. +void ecp_nistz256_point_add_affine(P256_POINT *r, const P256_POINT *a, + const P256_POINT_AFFINE *b); + +#endif /* defined(OPENSSL_USE_NISTZ256) */ + +#endif // OPENSSL_HEADER_EC_P256_X86_64_H diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256-nistz-table.h temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256-nistz-table.h --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256-nistz-table.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256-nistz-table.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,9497 @@ +/* + * Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2015, Intel Inc. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +// This is the precomputed constant time access table for the code in +// p256-nistz.c, for the default generator. The table consists of 37 +// subtables, each subtable contains 64 affine points. The affine points are +// encoded as eight uint64's, four for the x coordinate and four for the y. +// Both values are in little-endian order. There are 37 tables because a +// signed, 6-bit wNAF form of the scalar is used and ceil(256/(6 + 1)) = 37. +// Within each table there are 64 values because the 6-bit wNAF value can take +// 64 values, ignoring the sign bit, which is implemented by performing a +// negation of the affine point when required. We would like to align it to 2MB +// in order to increase the chances of using a large page but that appears to +// lead to invalid ELF files being produced. + +// This file is generated by make_tables.go. + +static const alignas(4096) PRECOMP256_ROW ecp_nistz256_precomputed[37] = { + {{{TOBN(0x79e730d4, 0x18a9143c), TOBN(0x75ba95fc, 0x5fedb601), + TOBN(0x79fb732b, 0x77622510), TOBN(0x18905f76, 0xa53755c6)}, + {TOBN(0xddf25357, 0xce95560a), TOBN(0x8b4ab8e4, 0xba19e45c), + TOBN(0xd2e88688, 0xdd21f325), TOBN(0x8571ff18, 0x25885d85)}}, + {{TOBN(0x850046d4, 0x10ddd64d), TOBN(0xaa6ae3c1, 0xa433827d), + TOBN(0x73220503, 0x8d1490d9), TOBN(0xf6bb32e4, 0x3dcf3a3b)}, + {TOBN(0x2f3648d3, 0x61bee1a5), TOBN(0x152cd7cb, 0xeb236ff8), + TOBN(0x19a8fb0e, 0x92042dbe), TOBN(0x78c57751, 0x0a5b8a3b)}}, + {{TOBN(0xffac3f90, 0x4eebc127), TOBN(0xb027f84a, 0x087d81fb), + TOBN(0x66ad77dd, 0x87cbbc98), TOBN(0x26936a3f, 0xb6ff747e)}, + {TOBN(0xb04c5c1f, 0xc983a7eb), TOBN(0x583e47ad, 0x0861fe1a), + TOBN(0x78820831, 0x1a2ee98e), TOBN(0xd5f06a29, 0xe587cc07)}}, + {{TOBN(0x74b0b50d, 0x46918dcc), TOBN(0x4650a6ed, 0xc623c173), + TOBN(0x0cdaacac, 0xe8100af2), TOBN(0x577362f5, 0x41b0176b)}, + {TOBN(0x2d96f24c, 0xe4cbaba6), TOBN(0x17628471, 0xfad6f447), + TOBN(0x6b6c36de, 0xe5ddd22e), TOBN(0x84b14c39, 0x4c5ab863)}}, + {{TOBN(0xbe1b8aae, 0xc45c61f5), TOBN(0x90ec649a, 0x94b9537d), + TOBN(0x941cb5aa, 0xd076c20c), TOBN(0xc9079605, 0x890523c8)}, + {TOBN(0xeb309b4a, 0xe7ba4f10), TOBN(0x73c568ef, 0xe5eb882b), + TOBN(0x3540a987, 0x7e7a1f68), TOBN(0x73a076bb, 0x2dd1e916)}}, + {{TOBN(0x40394737, 0x3e77664a), TOBN(0x55ae744f, 0x346cee3e), + TOBN(0xd50a961a, 0x5b17a3ad), TOBN(0x13074b59, 0x54213673)}, + {TOBN(0x93d36220, 0xd377e44b), TOBN(0x299c2b53, 0xadff14b5), + TOBN(0xf424d44c, 0xef639f11), TOBN(0xa4c9916d, 0x4a07f75f)}}, + {{TOBN(0x0746354e, 0xa0173b4f), TOBN(0x2bd20213, 0xd23c00f7), + TOBN(0xf43eaab5, 0x0c23bb08), TOBN(0x13ba5119, 0xc3123e03)}, + {TOBN(0x2847d030, 0x3f5b9d4d), TOBN(0x6742f2f2, 0x5da67bdd), + TOBN(0xef933bdc, 0x77c94195), TOBN(0xeaedd915, 0x6e240867)}}, + {{TOBN(0x27f14cd1, 0x9499a78f), TOBN(0x462ab5c5, 0x6f9b3455), + TOBN(0x8f90f02a, 0xf02cfc6b), TOBN(0xb763891e, 0xb265230d)}, + {TOBN(0xf59da3a9, 0x532d4977), TOBN(0x21e3327d, 0xcf9eba15), + TOBN(0x123c7b84, 0xbe60bbf0), TOBN(0x56ec12f2, 0x7706df76)}}, + {{TOBN(0x75c96e8f, 0x264e20e8), TOBN(0xabe6bfed, 0x59a7a841), + TOBN(0x2cc09c04, 0x44c8eb00), TOBN(0xe05b3080, 0xf0c4e16b)}, + {TOBN(0x1eb7777a, 0xa45f3314), TOBN(0x56af7bed, 0xce5d45e3), + TOBN(0x2b6e019a, 0x88b12f1a), TOBN(0x086659cd, 0xfd835f9b)}}, + {{TOBN(0x2c18dbd1, 0x9dc21ec8), TOBN(0x98f9868a, 0x0fcf8139), + TOBN(0x737d2cd6, 0x48250b49), TOBN(0xcc61c947, 0x24b3428f)}, + {TOBN(0x0c2b4078, 0x80dd9e76), TOBN(0xc43a8991, 0x383fbe08), + TOBN(0x5f7d2d65, 0x779be5d2), TOBN(0x78719a54, 0xeb3b4ab5)}}, + {{TOBN(0xea7d260a, 0x6245e404), TOBN(0x9de40795, 0x6e7fdfe0), + TOBN(0x1ff3a415, 0x8dac1ab5), TOBN(0x3e7090f1, 0x649c9073)}, + {TOBN(0x1a768561, 0x2b944e88), TOBN(0x250f939e, 0xe57f61c8), + TOBN(0x0c0daa89, 0x1ead643d), TOBN(0x68930023, 0xe125b88e)}}, + {{TOBN(0x04b71aa7, 0xd2697768), TOBN(0xabdedef5, 0xca345a33), + TOBN(0x2409d29d, 0xee37385e), TOBN(0x4ee1df77, 0xcb83e156)}, + {TOBN(0x0cac12d9, 0x1cbb5b43), TOBN(0x170ed2f6, 0xca895637), + TOBN(0x28228cfa, 0x8ade6d66), TOBN(0x7ff57c95, 0x53238aca)}}, + {{TOBN(0xccc42563, 0x4b2ed709), TOBN(0x0e356769, 0x856fd30d), + TOBN(0xbcbcd43f, 0x559e9811), TOBN(0x738477ac, 0x5395b759)}, + {TOBN(0x35752b90, 0xc00ee17f), TOBN(0x68748390, 0x742ed2e3), + TOBN(0x7cd06422, 0xbd1f5bc1), TOBN(0xfbc08769, 0xc9e7b797)}}, + {{TOBN(0xa242a35b, 0xb0cf664a), TOBN(0x126e48f7, 0x7f9707e3), + TOBN(0x1717bf54, 0xc6832660), TOBN(0xfaae7332, 0xfd12c72e)}, + {TOBN(0x27b52db7, 0x995d586b), TOBN(0xbe29569e, 0x832237c2), + TOBN(0xe8e4193e, 0x2a65e7db), TOBN(0x152706dc, 0x2eaa1bbb)}}, + {{TOBN(0x72bcd8b7, 0xbc60055b), TOBN(0x03cc23ee, 0x56e27e4b), + TOBN(0xee337424, 0xe4819370), TOBN(0xe2aa0e43, 0x0ad3da09)}, + {TOBN(0x40b8524f, 0x6383c45d), TOBN(0xd7663554, 0x42a41b25), + TOBN(0x64efa6de, 0x778a4797), TOBN(0x2042170a, 0x7079adf4)}}, + {{TOBN(0x808b0b65, 0x0bc6fb80), TOBN(0x5882e075, 0x3ffe2e6b), + TOBN(0xd5ef2f7c, 0x2c83f549), TOBN(0x54d63c80, 0x9103b723)}, + {TOBN(0xf2f11bd6, 0x52a23f9b), TOBN(0x3670c319, 0x4b0b6587), + TOBN(0x55c4623b, 0xb1580e9e), TOBN(0x64edf7b2, 0x01efe220)}}, + {{TOBN(0x97091dcb, 0xd53c5c9d), TOBN(0xf17624b6, 0xac0a177b), + TOBN(0xb0f13975, 0x2cfe2dff), TOBN(0xc1a35c0a, 0x6c7a574e)}, + {TOBN(0x227d3146, 0x93e79987), TOBN(0x0575bf30, 0xe89cb80e), + TOBN(0x2f4e247f, 0x0d1883bb), TOBN(0xebd51226, 0x3274c3d0)}}, + {{TOBN(0x5f3e51c8, 0x56ada97a), TOBN(0x4afc964d, 0x8f8b403e), + TOBN(0xa6f247ab, 0x412e2979), TOBN(0x675abd1b, 0x6f80ebda)}, + {TOBN(0x66a2bd72, 0x5e485a1d), TOBN(0x4b2a5caf, 0x8f4f0b3c), + TOBN(0x2626927f, 0x1b847bba), TOBN(0x6c6fc7d9, 0x0502394d)}}, + {{TOBN(0xfea912ba, 0xa5659ae8), TOBN(0x68363aba, 0x25e1a16e), + TOBN(0xb8842277, 0x752c41ac), TOBN(0xfe545c28, 0x2897c3fc)}, + {TOBN(0x2d36e9e7, 0xdc4c696b), TOBN(0x5806244a, 0xfba977c5), + TOBN(0x85665e9b, 0xe39508c1), TOBN(0xf720ee25, 0x6d12597b)}}, + {{TOBN(0x8a979129, 0xd2337a31), TOBN(0x5916868f, 0x0f862bdc), + TOBN(0x048099d9, 0x5dd283ba), TOBN(0xe2d1eeb6, 0xfe5bfb4e)}, + {TOBN(0x82ef1c41, 0x7884005d), TOBN(0xa2d4ec17, 0xffffcbae), + TOBN(0x9161c53f, 0x8aa95e66), TOBN(0x5ee104e1, 0xc5fee0d0)}}, + {{TOBN(0x562e4cec, 0xc135b208), TOBN(0x74e1b265, 0x4783f47d), + TOBN(0x6d2a506c, 0x5a3f3b30), TOBN(0xecead9f4, 0xc16762fc)}, + {TOBN(0xf29dd4b2, 0xe286e5b9), TOBN(0x1b0fadc0, 0x83bb3c61), + TOBN(0x7a75023e, 0x7fac29a4), TOBN(0xc086d5f1, 0xc9477fa3)}}, + {{TOBN(0x0fc61135, 0x2f6f3076), TOBN(0xc99ffa23, 0xe3912a9a), + TOBN(0x6a0b0685, 0xd2f8ba3d), TOBN(0xfdc777e8, 0xe93358a4)}, + {TOBN(0x94a787bb, 0x35415f04), TOBN(0x640c2d6a, 0x4d23fea4), + TOBN(0x9de917da, 0x153a35b5), TOBN(0x793e8d07, 0x5d5cd074)}}, + {{TOBN(0xf4f87653, 0x2de45068), TOBN(0x37c7a7e8, 0x9e2e1f6e), + TOBN(0xd0825fa2, 0xa3584069), TOBN(0xaf2cea7c, 0x1727bf42)}, + {TOBN(0x0360a4fb, 0x9e4785a9), TOBN(0xe5fda49c, 0x27299f4a), + TOBN(0x48068e13, 0x71ac2f71), TOBN(0x83d0687b, 0x9077666f)}}, + {{TOBN(0x6d3883b2, 0x15d02819), TOBN(0x6d0d7550, 0x40dd9a35), + TOBN(0x61d7cbf9, 0x1d2b469f), TOBN(0xf97b232f, 0x2efc3115)}, + {TOBN(0xa551d750, 0xb24bcbc7), TOBN(0x11ea4949, 0x88a1e356), + TOBN(0x7669f031, 0x93cb7501), TOBN(0x595dc55e, 0xca737b8a)}}, + {{TOBN(0xa4a319ac, 0xd837879f), TOBN(0x6fc1b49e, 0xed6b67b0), + TOBN(0xe3959933, 0x32f1f3af), TOBN(0x966742eb, 0x65432a2e)}, + {TOBN(0x4b8dc9fe, 0xb4966228), TOBN(0x96cc6312, 0x43f43950), + TOBN(0x12068859, 0xc9b731ee), TOBN(0x7b948dc3, 0x56f79968)}}, + {{TOBN(0x61e4ad32, 0xed1f8008), TOBN(0xe6c9267a, 0xd8b17538), + TOBN(0x1ac7c5eb, 0x857ff6fb), TOBN(0x994baaa8, 0x55f2fb10)}, + {TOBN(0x84cf14e1, 0x1d248018), TOBN(0x5a39898b, 0x628ac508), + TOBN(0x14fde97b, 0x5fa944f5), TOBN(0xed178030, 0xd12e5ac7)}}, + {{TOBN(0x042c2af4, 0x97e2feb4), TOBN(0xd36a42d7, 0xaebf7313), + TOBN(0x49d2c9eb, 0x084ffdd7), TOBN(0x9f8aa54b, 0x2ef7c76a)}, + {TOBN(0x9200b7ba, 0x09895e70), TOBN(0x3bd0c66f, 0xddb7fb58), + TOBN(0x2d97d108, 0x78eb4cbb), TOBN(0x2d431068, 0xd84bde31)}}, + {{TOBN(0x4b523eb7, 0x172ccd1f), TOBN(0x7323cb28, 0x30a6a892), + TOBN(0x97082ec0, 0xcfe153eb), TOBN(0xe97f6b6a, 0xf2aadb97)}, + {TOBN(0x1d3d393e, 0xd1a83da1), TOBN(0xa6a7f9c7, 0x804b2a68), + TOBN(0x4a688b48, 0x2d0cb71e), TOBN(0xa9b4cc5f, 0x40585278)}}, + {{TOBN(0x5e5db46a, 0xcb66e132), TOBN(0xf1be963a, 0x0d925880), + TOBN(0x944a7027, 0x0317b9e2), TOBN(0xe266f959, 0x48603d48)}, + {TOBN(0x98db6673, 0x5c208899), TOBN(0x90472447, 0xa2fb18a3), + TOBN(0x8a966939, 0x777c619f), TOBN(0x3798142a, 0x2a3be21b)}}, + {{TOBN(0xb4241cb1, 0x3298b343), TOBN(0xa3a14e49, 0xb44f65a1), + TOBN(0xc5f4d6cd, 0x3ac77acd), TOBN(0xd0288cb5, 0x52b6fc3c)}, + {TOBN(0xd5cc8c2f, 0x1c040abc), TOBN(0xb675511e, 0x06bf9b4a), + TOBN(0xd667da37, 0x9b3aa441), TOBN(0x460d45ce, 0x51601f72)}}, + {{TOBN(0xe2f73c69, 0x6755ff89), TOBN(0xdd3cf7e7, 0x473017e6), + TOBN(0x8ef5689d, 0x3cf7600d), TOBN(0x948dc4f8, 0xb1fc87b4)}, + {TOBN(0xd9e9fe81, 0x4ea53299), TOBN(0x2d921ca2, 0x98eb6028), + TOBN(0xfaecedfd, 0x0c9803fc), TOBN(0xf38ae891, 0x4d7b4745)}}, + {{TOBN(0xd8c5fccf, 0xc5e3a3d8), TOBN(0xbefd904c, 0x4079dfbf), + TOBN(0xbc6d6a58, 0xfead0197), TOBN(0x39227077, 0x695532a4)}, + {TOBN(0x09e23e6d, 0xdbef42f5), TOBN(0x7e449b64, 0x480a9908), + TOBN(0x7b969c1a, 0xad9a2e40), TOBN(0x6231d792, 0x9591c2a4)}}, + {{TOBN(0x87151456, 0x0f664534), TOBN(0x85ceae7c, 0x4b68f103), + TOBN(0xac09c4ae, 0x65578ab9), TOBN(0x33ec6868, 0xf044b10c)}, + {TOBN(0x6ac4832b, 0x3a8ec1f1), TOBN(0x5509d128, 0x5847d5ef), + TOBN(0xf909604f, 0x763f1574), TOBN(0xb16c4303, 0xc32f63c4)}}, + {{TOBN(0xb6ab2014, 0x7ca23cd3), TOBN(0xcaa7a5c6, 0xa391849d), + TOBN(0x5b0673a3, 0x75678d94), TOBN(0xc982ddd4, 0xdd303e64)}, + {TOBN(0xfd7b000b, 0x5db6f971), TOBN(0xbba2cb1f, 0x6f876f92), + TOBN(0xc77332a3, 0x3c569426), TOBN(0xa159100c, 0x570d74f8)}}, + {{TOBN(0xfd16847f, 0xdec67ef5), TOBN(0x742ee464, 0x233e76b7), + TOBN(0x0b8e4134, 0xefc2b4c8), TOBN(0xca640b86, 0x42a3e521)}, + {TOBN(0x653a0190, 0x8ceb6aa9), TOBN(0x313c300c, 0x547852d5), + TOBN(0x24e4ab12, 0x6b237af7), TOBN(0x2ba90162, 0x8bb47af8)}}, + {{TOBN(0x3d5e58d6, 0xa8219bb7), TOBN(0xc691d0bd, 0x1b06c57f), + TOBN(0x0ae4cb10, 0xd257576e), TOBN(0x3569656c, 0xd54a3dc3)}, + {TOBN(0xe5ebaebd, 0x94cda03a), TOBN(0x934e82d3, 0x162bfe13), + TOBN(0x450ac0ba, 0xe251a0c6), TOBN(0x480b9e11, 0xdd6da526)}}, + {{TOBN(0x00467bc5, 0x8cce08b5), TOBN(0xb636458c, 0x7f178d55), + TOBN(0xc5748bae, 0xa677d806), TOBN(0x2763a387, 0xdfa394eb)}, + {TOBN(0xa12b448a, 0x7d3cebb6), TOBN(0xe7adda3e, 0x6f20d850), + TOBN(0xf63ebce5, 0x1558462c), TOBN(0x58b36143, 0x620088a8)}}, + {{TOBN(0x8a2cc3ca, 0x4d63c0ee), TOBN(0x51233117, 0x0fe948ce), + TOBN(0x7463fd85, 0x222ef33b), TOBN(0xadf0c7dc, 0x7c603d6c)}, + {TOBN(0x0ec32d3b, 0xfe7765e5), TOBN(0xccaab359, 0xbf380409), + TOBN(0xbdaa84d6, 0x8e59319c), TOBN(0xd9a4c280, 0x9c80c34d)}}, + {{TOBN(0xa9d89488, 0xa059c142), TOBN(0x6f5ae714, 0xff0b9346), + TOBN(0x068f237d, 0x16fb3664), TOBN(0x5853e4c4, 0x363186ac)}, + {TOBN(0xe2d87d23, 0x63c52f98), TOBN(0x2ec4a766, 0x81828876), + TOBN(0x47b864fa, 0xe14e7b1c), TOBN(0x0c0bc0e5, 0x69192408)}}, + {{TOBN(0xe4d7681d, 0xb82e9f3e), TOBN(0x83200f0b, 0xdf25e13c), + TOBN(0x8909984c, 0x66f27280), TOBN(0x462d7b00, 0x75f73227)}, + {TOBN(0xd90ba188, 0xf2651798), TOBN(0x74c6e18c, 0x36ab1c34), + TOBN(0xab256ea3, 0x5ef54359), TOBN(0x03466612, 0xd1aa702f)}}, + {{TOBN(0x624d6049, 0x2ed22e91), TOBN(0x6fdfe0b5, 0x6f072822), + TOBN(0xeeca1115, 0x39ce2271), TOBN(0x98100a4f, 0xdb01614f)}, + {TOBN(0xb6b0daa2, 0xa35c628f), TOBN(0xb6f94d2e, 0xc87e9a47), + TOBN(0xc6773259, 0x1d57d9ce), TOBN(0xf70bfeec, 0x03884a7b)}}, + {{TOBN(0x5fb35ccf, 0xed2bad01), TOBN(0xa155cbe3, 0x1da6a5c7), + TOBN(0xc2e2594c, 0x30a92f8f), TOBN(0x649c89ce, 0x5bfafe43)}, + {TOBN(0xd158667d, 0xe9ff257a), TOBN(0x9b359611, 0xf32c50ae), + TOBN(0x4b00b20b, 0x906014cf), TOBN(0xf3a8cfe3, 0x89bc7d3d)}}, + {{TOBN(0x4ff23ffd, 0x248a7d06), TOBN(0x80c5bfb4, 0x878873fa), + TOBN(0xb7d9ad90, 0x05745981), TOBN(0x179c85db, 0x3db01994)}, + {TOBN(0xba41b062, 0x61a6966c), TOBN(0x4d82d052, 0xeadce5a8), + TOBN(0x9e91cd3b, 0xa5e6a318), TOBN(0x47795f4f, 0x95b2dda0)}}, + {{TOBN(0xecfd7c1f, 0xd55a897c), TOBN(0x009194ab, 0xb29110fb), + TOBN(0x5f0e2046, 0xe381d3b0), TOBN(0x5f3425f6, 0xa98dd291)}, + {TOBN(0xbfa06687, 0x730d50da), TOBN(0x0423446c, 0x4b083b7f), + TOBN(0x397a247d, 0xd69d3417), TOBN(0xeb629f90, 0x387ba42a)}}, + {{TOBN(0x1ee426cc, 0xd5cd79bf), TOBN(0x0032940b, 0x946c6e18), + TOBN(0x1b1e8ae0, 0x57477f58), TOBN(0xe94f7d34, 0x6d823278)}, + {TOBN(0xc747cb96, 0x782ba21a), TOBN(0xc5254469, 0xf72b33a5), + TOBN(0x772ef6de, 0xc7f80c81), TOBN(0xd73acbfe, 0x2cd9e6b5)}}, + {{TOBN(0x4075b5b1, 0x49ee90d9), TOBN(0x785c339a, 0xa06e9eba), + TOBN(0xa1030d5b, 0xabf825e0), TOBN(0xcec684c3, 0xa42931dc)}, + {TOBN(0x42ab62c9, 0xc1586e63), TOBN(0x45431d66, 0x5ab43f2b), + TOBN(0x57c8b2c0, 0x55f7835d), TOBN(0x033da338, 0xc1b7f865)}}, + {{TOBN(0x283c7513, 0xcaa76097), TOBN(0x0a624fa9, 0x36c83906), + TOBN(0x6b20afec, 0x715af2c7), TOBN(0x4b969974, 0xeba78bfd)}, + {TOBN(0x220755cc, 0xd921d60e), TOBN(0x9b944e10, 0x7baeca13), + TOBN(0x04819d51, 0x5ded93d4), TOBN(0x9bbff86e, 0x6dddfd27)}}, + {{TOBN(0x6b344130, 0x77adc612), TOBN(0xa7496529, 0xbbd803a0), + TOBN(0x1a1baaa7, 0x6d8805bd), TOBN(0xc8403902, 0x470343ad)}, + {TOBN(0x39f59f66, 0x175adff1), TOBN(0x0b26d7fb, 0xb7d8c5b7), + TOBN(0xa875f5ce, 0x529d75e3), TOBN(0x85efc7e9, 0x41325cc2)}}, + {{TOBN(0x21950b42, 0x1ff6acd3), TOBN(0xffe70484, 0x53dc6909), + TOBN(0xff4cd0b2, 0x28766127), TOBN(0xabdbe608, 0x4fb7db2b)}, + {TOBN(0x837c9228, 0x5e1109e8), TOBN(0x26147d27, 0xf4645b5a), + TOBN(0x4d78f592, 0xf7818ed8), TOBN(0xd394077e, 0xf247fa36)}}, + {{TOBN(0x0fb9c2d0, 0x488c171a), TOBN(0xa78bfbaa, 0x13685278), + TOBN(0xedfbe268, 0xd5b1fa6a), TOBN(0x0dceb8db, 0x2b7eaba7)}, + {TOBN(0xbf9e8089, 0x9ae2b710), TOBN(0xefde7ae6, 0xa4449c96), + TOBN(0x43b7716b, 0xcc143a46), TOBN(0xd7d34194, 0xc3628c13)}}, + {{TOBN(0x508cec1c, 0x3b3f64c9), TOBN(0xe20bc0ba, 0x1e5edf3f), + TOBN(0xda1deb85, 0x2f4318d4), TOBN(0xd20ebe0d, 0x5c3fa443)}, + {TOBN(0x370b4ea7, 0x73241ea3), TOBN(0x61f1511c, 0x5e1a5f65), + TOBN(0x99a5e23d, 0x82681c62), TOBN(0xd731e383, 0xa2f54c2d)}}, + {{TOBN(0x2692f36e, 0x83445904), TOBN(0x2e0ec469, 0xaf45f9c0), + TOBN(0x905a3201, 0xc67528b7), TOBN(0x88f77f34, 0xd0e5e542)}, + {TOBN(0xf67a8d29, 0x5864687c), TOBN(0x23b92eae, 0x22df3562), + TOBN(0x5c27014b, 0x9bbec39e), TOBN(0x7ef2f226, 0x9c0f0f8d)}}, + {{TOBN(0x97359638, 0x546c4d8d), TOBN(0x5f9c3fc4, 0x92f24679), + TOBN(0x912e8bed, 0xa8c8acd9), TOBN(0xec3a318d, 0x306634b0)}, + {TOBN(0x80167f41, 0xc31cb264), TOBN(0x3db82f6f, 0x522113f2), + TOBN(0xb155bcd2, 0xdcafe197), TOBN(0xfba1da59, 0x43465283)}}, + {{TOBN(0xa0425b8e, 0xb212cf53), TOBN(0x4f2e512e, 0xf8557c5f), + TOBN(0xc1286ff9, 0x25c4d56c), TOBN(0xbb8a0fea, 0xee26c851)}, + {TOBN(0xc28f70d2, 0xe7d6107e), TOBN(0x7ee0c444, 0xe76265aa), + TOBN(0x3df277a4, 0x1d1936b1), TOBN(0x1a556e3f, 0xea9595eb)}}, + {{TOBN(0x258bbbf9, 0xe7305683), TOBN(0x31eea5bf, 0x07ef5be6), + TOBN(0x0deb0e4a, 0x46c814c1), TOBN(0x5cee8449, 0xa7b730dd)}, + {TOBN(0xeab495c5, 0xa0182bde), TOBN(0xee759f87, 0x9e27a6b4), + TOBN(0xc2cf6a68, 0x80e518ca), TOBN(0x25e8013f, 0xf14cf3f4)}}, + {{TOBN(0x8fc44140, 0x7e8d7a14), TOBN(0xbb1ff3ca, 0x9556f36a), + TOBN(0x6a844385, 0x14600044), TOBN(0xba3f0c4a, 0x7451ae63)}, + {TOBN(0xdfcac25b, 0x1f9af32a), TOBN(0x01e0db86, 0xb1f2214b), + TOBN(0x4e9a5bc2, 0xa4b596ac), TOBN(0x83927681, 0x026c2c08)}}, + {{TOBN(0x3ec832e7, 0x7acaca28), TOBN(0x1bfeea57, 0xc7385b29), + TOBN(0x068212e3, 0xfd1eaf38), TOBN(0xc1329830, 0x6acf8ccc)}, + {TOBN(0xb909f2db, 0x2aac9e59), TOBN(0x5748060d, 0xb661782a), + TOBN(0xc5ab2632, 0xc79b7a01), TOBN(0xda44c6c6, 0x00017626)}}, + {{TOBN(0xf26c00e8, 0xa7ea82f0), TOBN(0x99cac80d, 0xe4299aaf), + TOBN(0xd66fe3b6, 0x7ed78be1), TOBN(0x305f725f, 0x648d02cd)}, + {TOBN(0x33ed1bc4, 0x623fb21b), TOBN(0xfa70533e, 0x7a6319ad), + TOBN(0x17ab562d, 0xbe5ffb3e), TOBN(0x06374994, 0x56674741)}}, + {{TOBN(0x69d44ed6, 0x5c46aa8e), TOBN(0x2100d5d3, 0xa8d063d1), + TOBN(0xcb9727ea, 0xa2d17c36), TOBN(0x4c2bab1b, 0x8add53b7)}, + {TOBN(0xa084e90c, 0x15426704), TOBN(0x778afcd3, 0xa837ebea), + TOBN(0x6651f701, 0x7ce477f8), TOBN(0xa0624998, 0x46fb7a8b)}}, + {{TOBN(0xdc1e6828, 0xed8a6e19), TOBN(0x33fc2336, 0x4189d9c7), + TOBN(0x026f8fe2, 0x671c39bc), TOBN(0xd40c4ccd, 0xbc6f9915)}, + {TOBN(0xafa135bb, 0xf80e75ca), TOBN(0x12c651a0, 0x22adff2c), + TOBN(0xc40a04bd, 0x4f51ad96), TOBN(0x04820109, 0xbbe4e832)}}, + {{TOBN(0x3667eb1a, 0x7f4c04cc), TOBN(0x59556621, 0xa9404f84), + TOBN(0x71cdf653, 0x7eceb50a), TOBN(0x994a44a6, 0x9b8335fa)}, + {TOBN(0xd7faf819, 0xdbeb9b69), TOBN(0x473c5680, 0xeed4350d), + TOBN(0xb6658466, 0xda44bba2), TOBN(0x0d1bc780, 0x872bdbf3)}}, + {{TOBN(0xe535f175, 0xa1962f91), TOBN(0x6ed7e061, 0xed58f5a7), + TOBN(0x177aa4c0, 0x2089a233), TOBN(0x0dbcb03a, 0xe539b413)}, + {TOBN(0xe3dc424e, 0xbb32e38e), TOBN(0x6472e5ef, 0x6806701e), + TOBN(0xdd47ff98, 0x814be9ee), TOBN(0x6b60cfff, 0x35ace009)}}, + {{TOBN(0xb8d3d931, 0x9ff91fe5), TOBN(0x039c4800, 0xf0518eed), + TOBN(0x95c37632, 0x9182cb26), TOBN(0x0763a434, 0x82fc568d)}, + {TOBN(0x707c04d5, 0x383e76ba), TOBN(0xac98b930, 0x824e8197), + TOBN(0x92bf7c8f, 0x91230de0), TOBN(0x90876a01, 0x40959b70)}}, + {{TOBN(0xdb6d96f3, 0x05968b80), TOBN(0x380a0913, 0x089f73b9), + TOBN(0x7da70b83, 0xc2c61e01), TOBN(0x95fb8394, 0x569b38c7)}, + {TOBN(0x9a3c6512, 0x80edfe2f), TOBN(0x8f726bb9, 0x8faeaf82), + TOBN(0x8010a4a0, 0x78424bf8), TOBN(0x29672044, 0x0e844970)}}}, + {{{TOBN(0x63c5cb81, 0x7a2ad62a), TOBN(0x7ef2b6b9, 0xac62ff54), + TOBN(0x3749bba4, 0xb3ad9db5), TOBN(0xad311f2c, 0x46d5a617)}, + {TOBN(0xb77a8087, 0xc2ff3b6d), TOBN(0xb46feaf3, 0x367834ff), + TOBN(0xf8aa266d, 0x75d6b138), TOBN(0xfa38d320, 0xec008188)}}, + {{TOBN(0x486d8ffa, 0x696946fc), TOBN(0x50fbc6d8, 0xb9cba56d), + TOBN(0x7e3d423e, 0x90f35a15), TOBN(0x7c3da195, 0xc0dd962c)}, + {TOBN(0xe673fdb0, 0x3cfd5d8b), TOBN(0x0704b7c2, 0x889dfca5), + TOBN(0xf6ce581f, 0xf52305aa), TOBN(0x399d49eb, 0x914d5e53)}}, + {{TOBN(0x380a496d, 0x6ec293cd), TOBN(0x733dbda7, 0x8e7051f5), + TOBN(0x037e388d, 0xb849140a), TOBN(0xee4b32b0, 0x5946dbf6)}, + {TOBN(0xb1c4fda9, 0xcae368d1), TOBN(0x5001a7b0, 0xfdb0b2f3), + TOBN(0x6df59374, 0x2e3ac46e), TOBN(0x4af675f2, 0x39b3e656)}}, + {{TOBN(0x44e38110, 0x39949296), TOBN(0x5b63827b, 0x361db1b5), + TOBN(0x3e5323ed, 0x206eaff5), TOBN(0x942370d2, 0xc21f4290)}, + {TOBN(0xf2caaf2e, 0xe0d985a1), TOBN(0x192cc64b, 0x7239846d), + TOBN(0x7c0b8f47, 0xae6312f8), TOBN(0x7dc61f91, 0x96620108)}}, + {{TOBN(0xb830fb5b, 0xc2da7de9), TOBN(0xd0e643df, 0x0ff8d3be), + TOBN(0x31ee77ba, 0x188a9641), TOBN(0x4e8aa3aa, 0xbcf6d502)}, + {TOBN(0xf9fb6532, 0x9a49110f), TOBN(0xd18317f6, 0x2dd6b220), + TOBN(0x7e3ced41, 0x52c3ea5a), TOBN(0x0d296a14, 0x7d579c4a)}}, + {{TOBN(0x35d6a53e, 0xed4c3717), TOBN(0x9f8240cf, 0x3d0ed2a3), + TOBN(0x8c0d4d05, 0xe5543aa5), TOBN(0x45d5bbfb, 0xdd33b4b4)}, + {TOBN(0xfa04cc73, 0x137fd28e), TOBN(0x862ac6ef, 0xc73b3ffd), + TOBN(0x403ff9f5, 0x31f51ef2), TOBN(0x34d5e0fc, 0xbc73f5a2)}}, + {{TOBN(0xf2526820, 0x08913f4f), TOBN(0xea20ed61, 0xeac93d95), + TOBN(0x51ed38b4, 0x6ca6b26c), TOBN(0x8662dcbc, 0xea4327b0)}, + {TOBN(0x6daf295c, 0x725d2aaa), TOBN(0xbad2752f, 0x8e52dcda), + TOBN(0x2210e721, 0x0b17dacc), TOBN(0xa37f7912, 0xd51e8232)}}, + {{TOBN(0x4f7081e1, 0x44cc3add), TOBN(0xd5ffa1d6, 0x87be82cf), + TOBN(0x89890b6c, 0x0edd6472), TOBN(0xada26e1a, 0x3ed17863)}, + {TOBN(0x276f2715, 0x63483caa), TOBN(0xe6924cd9, 0x2f6077fd), + TOBN(0x05a7fe98, 0x0a466e3c), TOBN(0xf1c794b0, 0xb1902d1f)}}, + {{TOBN(0xe5213688, 0x82a8042c), TOBN(0xd931cfaf, 0xcd278298), + TOBN(0x069a0ae0, 0xf597a740), TOBN(0x0adbb3f3, 0xeb59107c)}, + {TOBN(0x983e951e, 0x5eaa8eb8), TOBN(0xe663a8b5, 0x11b48e78), + TOBN(0x1631cc0d, 0x8a03f2c5), TOBN(0x7577c11e, 0x11e271e2)}}, + {{TOBN(0x33b2385c, 0x08369a90), TOBN(0x2990c59b, 0x190eb4f8), + TOBN(0x819a6145, 0xc68eac80), TOBN(0x7a786d62, 0x2ec4a014)}, + {TOBN(0x33faadbe, 0x20ac3a8d), TOBN(0x31a21781, 0x5aba2d30), + TOBN(0x209d2742, 0xdba4f565), TOBN(0xdb2ce9e3, 0x55aa0fbb)}}, + {{TOBN(0x8cef334b, 0x168984df), TOBN(0xe81dce17, 0x33879638), + TOBN(0xf6e6949c, 0x263720f0), TOBN(0x5c56feaf, 0xf593cbec)}, + {TOBN(0x8bff5601, 0xfde58c84), TOBN(0x74e24117, 0x2eccb314), + TOBN(0xbcf01b61, 0x4c9a8a78), TOBN(0xa233e35e, 0x544c9868)}}, + {{TOBN(0xb3156bf3, 0x8bd7aff1), TOBN(0x1b5ee4cb, 0x1d81b146), + TOBN(0x7ba1ac41, 0xd628a915), TOBN(0x8f3a8f9c, 0xfd89699e)}, + {TOBN(0x7329b9c9, 0xa0748be7), TOBN(0x1d391c95, 0xa92e621f), + TOBN(0xe51e6b21, 0x4d10a837), TOBN(0xd255f53a, 0x4947b435)}}, + {{TOBN(0x07669e04, 0xf1788ee3), TOBN(0xc14f27af, 0xa86938a2), + TOBN(0x8b47a334, 0xe93a01c0), TOBN(0xff627438, 0xd9366808)}, + {TOBN(0x7a0985d8, 0xca2a5965), TOBN(0x3d9a5542, 0xd6e9b9b3), + TOBN(0xc23eb80b, 0x4cf972e8), TOBN(0x5c1c33bb, 0x4fdf72fd)}}, + {{TOBN(0x0c4a58d4, 0x74a86108), TOBN(0xf8048a8f, 0xee4c5d90), + TOBN(0xe3c7c924, 0xe86d4c80), TOBN(0x28c889de, 0x056a1e60)}, + {TOBN(0x57e2662e, 0xb214a040), TOBN(0xe8c48e98, 0x37e10347), + TOBN(0x87742862, 0x80ac748a), TOBN(0xf1c24022, 0x186b06f2)}}, + {{TOBN(0xac2dd4c3, 0x5f74040a), TOBN(0x409aeb71, 0xfceac957), + TOBN(0x4fbad782, 0x55c4ec23), TOBN(0xb359ed61, 0x8a7b76ec)}, + {TOBN(0x12744926, 0xed6f4a60), TOBN(0xe21e8d7f, 0x4b912de3), + TOBN(0xe2575a59, 0xfc705a59), TOBN(0x72f1d4de, 0xed2dbc0e)}}, + {{TOBN(0x3d2b24b9, 0xeb7926b8), TOBN(0xbff88cb3, 0xcdbe5509), + TOBN(0xd0f399af, 0xe4dd640b), TOBN(0x3c5fe130, 0x2f76ed45)}, + {TOBN(0x6f3562f4, 0x3764fb3d), TOBN(0x7b5af318, 0x3151b62d), + TOBN(0xd5bd0bc7, 0xd79ce5f3), TOBN(0xfdaf6b20, 0xec66890f)}}, + {{TOBN(0x735c67ec, 0x6063540c), TOBN(0x50b259c2, 0xe5f9cb8f), + TOBN(0xb8734f9a, 0x3f99c6ab), TOBN(0xf8cc13d5, 0xa3a7bc85)}, + {TOBN(0x80c1b305, 0xc5217659), TOBN(0xfe5364d4, 0x4ec12a54), + TOBN(0xbd87045e, 0x681345fe), TOBN(0x7f8efeb1, 0x582f897f)}}, + {{TOBN(0xe8cbf1e5, 0xd5923359), TOBN(0xdb0cea9d, 0x539b9fb0), + TOBN(0x0c5b34cf, 0x49859b98), TOBN(0x5e583c56, 0xa4403cc6)}, + {TOBN(0x11fc1a2d, 0xd48185b7), TOBN(0xc93fbc7e, 0x6e521787), + TOBN(0x47e7a058, 0x05105b8b), TOBN(0x7b4d4d58, 0xdb8260c8)}}, + {{TOBN(0xe33930b0, 0x46eb842a), TOBN(0x8e844a9a, 0x7bdae56d), + TOBN(0x34ef3a9e, 0x13f7fdfc), TOBN(0xb3768f82, 0x636ca176)}, + {TOBN(0x2821f4e0, 0x4e09e61c), TOBN(0x414dc3a1, 0xa0c7cddc), + TOBN(0xd5379437, 0x54945fcd), TOBN(0x151b6eef, 0xb3555ff1)}}, + {{TOBN(0xb31bd613, 0x6339c083), TOBN(0x39ff8155, 0xdfb64701), + TOBN(0x7c3388d2, 0xe29604ab), TOBN(0x1e19084b, 0xa6b10442)}, + {TOBN(0x17cf54c0, 0xeccd47ef), TOBN(0x89693385, 0x4a5dfb30), + TOBN(0x69d023fb, 0x47daf9f6), TOBN(0x9222840b, 0x7d91d959)}}, + {{TOBN(0x439108f5, 0x803bac62), TOBN(0x0b7dd91d, 0x379bd45f), + TOBN(0xd651e827, 0xca63c581), TOBN(0x5c5d75f6, 0x509c104f)}, + {TOBN(0x7d5fc738, 0x1f2dc308), TOBN(0x20faa7bf, 0xd98454be), + TOBN(0x95374bee, 0xa517b031), TOBN(0xf036b9b1, 0x642692ac)}}, + {{TOBN(0xc5106109, 0x39842194), TOBN(0xb7e2353e, 0x49d05295), + TOBN(0xfc8c1d5c, 0xefb42ee0), TOBN(0xe04884eb, 0x08ce811c)}, + {TOBN(0xf1f75d81, 0x7419f40e), TOBN(0x5b0ac162, 0xa995c241), + TOBN(0x120921bb, 0xc4c55646), TOBN(0x713520c2, 0x8d33cf97)}}, + {{TOBN(0xb4a65a5c, 0xe98c5100), TOBN(0x6cec871d, 0x2ddd0f5a), + TOBN(0x251f0b7f, 0x9ba2e78b), TOBN(0x224a8434, 0xce3a2a5f)}, + {TOBN(0x26827f61, 0x25f5c46f), TOBN(0x6a22bedc, 0x48545ec0), + TOBN(0x25ae5fa0, 0xb1bb5cdc), TOBN(0xd693682f, 0xfcb9b98f)}}, + {{TOBN(0x32027fe8, 0x91e5d7d3), TOBN(0xf14b7d17, 0x73a07678), + TOBN(0xf88497b3, 0xc0dfdd61), TOBN(0xf7c2eec0, 0x2a8c4f48)}, + {TOBN(0xaa5573f4, 0x3756e621), TOBN(0xc013a240, 0x1825b948), + TOBN(0x1c03b345, 0x63878572), TOBN(0xa0472bea, 0x653a4184)}}, + {{TOBN(0xf4222e27, 0x0ac69a80), TOBN(0x34096d25, 0xf51e54f6), + TOBN(0x00a648cb, 0x8fffa591), TOBN(0x4e87acdc, 0x69b6527f)}, + {TOBN(0x0575e037, 0xe285ccb4), TOBN(0x188089e4, 0x50ddcf52), + TOBN(0xaa96c9a8, 0x870ff719), TOBN(0x74a56cd8, 0x1fc7e369)}}, + {{TOBN(0x41d04ee2, 0x1726931a), TOBN(0x0bbbb2c8, 0x3660ecfd), + TOBN(0xa6ef6de5, 0x24818e18), TOBN(0xe421cc51, 0xe7d57887)}, + {TOBN(0xf127d208, 0xbea87be6), TOBN(0x16a475d3, 0xb1cdd682), + TOBN(0x9db1b684, 0x439b63f7), TOBN(0x5359b3db, 0xf0f113b6)}}, + {{TOBN(0xdfccf1de, 0x8bf06e31), TOBN(0x1fdf8f44, 0xdd383901), + TOBN(0x10775cad, 0x5017e7d2), TOBN(0xdfc3a597, 0x58d11eef)}, + {TOBN(0x6ec9c8a0, 0xb1ecff10), TOBN(0xee6ed6cc, 0x28400549), + TOBN(0xb5ad7bae, 0x1b4f8d73), TOBN(0x61b4f11d, 0xe00aaab9)}}, + {{TOBN(0x7b32d69b, 0xd4eff2d7), TOBN(0x88ae6771, 0x4288b60f), + TOBN(0x159461b4, 0x37a1e723), TOBN(0x1f3d4789, 0x570aae8c)}, + {TOBN(0x869118c0, 0x7f9871da), TOBN(0x35fbda78, 0xf635e278), + TOBN(0x738f3641, 0xe1541dac), TOBN(0x6794b13a, 0xc0dae45f)}}, + {{TOBN(0x065064ac, 0x09cc0917), TOBN(0x27c53729, 0xc68540fd), + TOBN(0x0d2d4c8e, 0xef227671), TOBN(0xd23a9f80, 0xa1785a04)}, + {TOBN(0x98c59528, 0x52650359), TOBN(0xfa09ad01, 0x74a1acad), + TOBN(0x082d5a29, 0x0b55bf5c), TOBN(0xa40f1c67, 0x419b8084)}}, + {{TOBN(0x3a5c752e, 0xdcc18770), TOBN(0x4baf1f2f, 0x8825c3a5), + TOBN(0xebd63f74, 0x21b153ed), TOBN(0xa2383e47, 0xb2f64723)}, + {TOBN(0xe7bf620a, 0x2646d19a), TOBN(0x56cb44ec, 0x03c83ffd), + TOBN(0xaf7267c9, 0x4f6be9f1), TOBN(0x8b2dfd7b, 0xc06bb5e9)}}, + {{TOBN(0xb87072f2, 0xa672c5c7), TOBN(0xeacb11c8, 0x0d53c5e2), + TOBN(0x22dac29d, 0xff435932), TOBN(0x37bdb99d, 0x4408693c)}, + {TOBN(0xf6e62fb6, 0x2899c20f), TOBN(0x3535d512, 0x447ece24), + TOBN(0xfbdc6b88, 0xff577ce3), TOBN(0x726693bd, 0x190575f2)}}, + {{TOBN(0x6772b0e5, 0xab4b35a2), TOBN(0x1d8b6001, 0xf5eeaacf), + TOBN(0x728f7ce4, 0x795b9580), TOBN(0x4a20ed2a, 0x41fb81da)}, + {TOBN(0x9f685cd4, 0x4fec01e6), TOBN(0x3ed7ddcc, 0xa7ff50ad), + TOBN(0x460fd264, 0x0c2d97fd), TOBN(0x3a241426, 0xeb82f4f9)}}, + {{TOBN(0x17d1df2c, 0x6a8ea820), TOBN(0xb2b50d3b, 0xf22cc254), + TOBN(0x03856cba, 0xb7291426), TOBN(0x87fd26ae, 0x04f5ee39)}, + {TOBN(0x9cb696cc, 0x02bee4ba), TOBN(0x53121804, 0x06820fd6), + TOBN(0xa5dfc269, 0x0212e985), TOBN(0x666f7ffa, 0x160f9a09)}}, + {{TOBN(0xc503cd33, 0xbccd9617), TOBN(0x365dede4, 0xba7730a3), + TOBN(0x798c6355, 0x5ddb0786), TOBN(0xa6c3200e, 0xfc9cd3bc)}, + {TOBN(0x060ffb2c, 0xe5e35efd), TOBN(0x99a4e25b, 0x5555a1c1), + TOBN(0x11d95375, 0xf70b3751), TOBN(0x0a57354a, 0x160e1bf6)}}, + {{TOBN(0xecb3ae4b, 0xf8e4b065), TOBN(0x07a834c4, 0x2e53022b), + TOBN(0x1cd300b3, 0x8692ed96), TOBN(0x16a6f792, 0x61ee14ec)}, + {TOBN(0x8f1063c6, 0x6a8649ed), TOBN(0xfbcdfcfe, 0x869f3e14), + TOBN(0x2cfb97c1, 0x00a7b3ec), TOBN(0xcea49b3c, 0x7130c2f1)}}, + {{TOBN(0x462d044f, 0xe9d96488), TOBN(0x4b53d52e, 0x8182a0c1), + TOBN(0x84b6ddd3, 0x0391e9e9), TOBN(0x80ab7b48, 0xb1741a09)}, + {TOBN(0xec0e15d4, 0x27d3317f), TOBN(0x8dfc1ddb, 0x1a64671e), + TOBN(0x93cc5d5f, 0xd49c5b92), TOBN(0xc995d53d, 0x3674a331)}}, + {{TOBN(0x302e41ec, 0x090090ae), TOBN(0x2278a0cc, 0xedb06830), + TOBN(0x1d025932, 0xfbc99690), TOBN(0x0c32fbd2, 0xb80d68da)}, + {TOBN(0xd79146da, 0xf341a6c1), TOBN(0xae0ba139, 0x1bef68a0), + TOBN(0xc6b8a563, 0x8d774b3a), TOBN(0x1cf307bd, 0x880ba4d7)}}, + {{TOBN(0xc033bdc7, 0x19803511), TOBN(0xa9f97b3b, 0x8888c3be), + TOBN(0x3d68aebc, 0x85c6d05e), TOBN(0xc3b88a9d, 0x193919eb)}, + {TOBN(0x2d300748, 0xc48b0ee3), TOBN(0x7506bc7c, 0x07a746c1), + TOBN(0xfc48437c, 0x6e6d57f3), TOBN(0x5bd71587, 0xcfeaa91a)}}, + {{TOBN(0xa4ed0408, 0xc1bc5225), TOBN(0xd0b946db, 0x2719226d), + TOBN(0x109ecd62, 0x758d2d43), TOBN(0x75c8485a, 0x2751759b)}, + {TOBN(0xb0b75f49, 0x9ce4177a), TOBN(0x4fa61a1e, 0x79c10c3d), + TOBN(0xc062d300, 0xa167fcd7), TOBN(0x4df3874c, 0x750f0fa8)}}, + {{TOBN(0x29ae2cf9, 0x83dfedc9), TOBN(0xf8437134, 0x8d87631a), + TOBN(0xaf571711, 0x7429c8d2), TOBN(0x18d15867, 0x146d9272)}, + {TOBN(0x83053ecf, 0x69769bb7), TOBN(0xc55eb856, 0xc479ab82), + TOBN(0x5ef7791c, 0x21b0f4b2), TOBN(0xaa5956ba, 0x3d491525)}}, + {{TOBN(0x407a96c2, 0x9fe20eba), TOBN(0xf27168bb, 0xe52a5ad3), + TOBN(0x43b60ab3, 0xbf1d9d89), TOBN(0xe45c51ef, 0x710e727a)}, + {TOBN(0xdfca5276, 0x099b4221), TOBN(0x8dc6407c, 0x2557a159), + TOBN(0x0ead8335, 0x91035895), TOBN(0x0a9db957, 0x9c55dc32)}}, + {{TOBN(0xe40736d3, 0xdf61bc76), TOBN(0x13a619c0, 0x3f778cdb), + TOBN(0x6dd921a4, 0xc56ea28f), TOBN(0x76a52433, 0x2fa647b4)}, + {TOBN(0x23591891, 0xac5bdc5d), TOBN(0xff4a1a72, 0xbac7dc01), + TOBN(0x9905e261, 0x62df8453), TOBN(0x3ac045df, 0xe63b265f)}}, + {{TOBN(0x8a3f341b, 0xad53dba7), TOBN(0x8ec269cc, 0x837b625a), + TOBN(0xd71a2782, 0x3ae31189), TOBN(0x8fb4f9a3, 0x55e96120)}, + {TOBN(0x804af823, 0xff9875cf), TOBN(0x23224f57, 0x5d442a9b), + TOBN(0x1c4d3b9e, 0xecc62679), TOBN(0x91da22fb, 0xa0e7ddb1)}}, + {{TOBN(0xa370324d, 0x6c04a661), TOBN(0x9710d3b6, 0x5e376d17), + TOBN(0xed8c98f0, 0x3044e357), TOBN(0xc364ebbe, 0x6422701c)}, + {TOBN(0x347f5d51, 0x7733d61c), TOBN(0xd55644b9, 0xcea826c3), + TOBN(0x80c6e0ad, 0x55a25548), TOBN(0x0aa7641d, 0x844220a7)}}, + {{TOBN(0x1438ec81, 0x31810660), TOBN(0x9dfa6507, 0xde4b4043), + TOBN(0x10b515d8, 0xcc3e0273), TOBN(0x1b6066dd, 0x28d8cfb2)}, + {TOBN(0xd3b04591, 0x9c9efebd), TOBN(0x425d4bdf, 0xa21c1ff4), + TOBN(0x5fe5af19, 0xd57607d3), TOBN(0xbbf773f7, 0x54481084)}}, + {{TOBN(0x8435bd69, 0x94b03ed1), TOBN(0xd9ad1de3, 0x634cc546), + TOBN(0x2cf423fc, 0x00e420ca), TOBN(0xeed26d80, 0xa03096dd)}, + {TOBN(0xd7f60be7, 0xa4db09d2), TOBN(0xf47f569d, 0x960622f7), + TOBN(0xe5925fd7, 0x7296c729), TOBN(0xeff2db26, 0x26ca2715)}}, + {{TOBN(0xa6fcd014, 0xb913e759), TOBN(0x53da4786, 0x8ff4de93), + TOBN(0x14616d79, 0xc32068e1), TOBN(0xb187d664, 0xccdf352e)}, + {TOBN(0xf7afb650, 0x1dc90b59), TOBN(0x8170e943, 0x7daa1b26), + TOBN(0xc8e3bdd8, 0x700c0a84), TOBN(0x6e8d345f, 0x6482bdfa)}}, + {{TOBN(0x84cfbfa1, 0xc5c5ea50), TOBN(0xd3baf14c, 0x67960681), + TOBN(0x26398403, 0x0dd50942), TOBN(0xe4b7839c, 0x4716a663)}, + {TOBN(0xd5f1f794, 0xe7de6dc0), TOBN(0x5cd0f4d4, 0x622aa7ce), + TOBN(0x5295f3f1, 0x59acfeec), TOBN(0x8d933552, 0x953e0607)}}, + {{TOBN(0xc7db8ec5, 0x776c5722), TOBN(0xdc467e62, 0x2b5f290c), + TOBN(0xd4297e70, 0x4ff425a9), TOBN(0x4be924c1, 0x0cf7bb72)}, + {TOBN(0x0d5dc5ae, 0xa1892131), TOBN(0x8bf8a8e3, 0xa705c992), + TOBN(0x73a0b064, 0x7a305ac5), TOBN(0x00c9ca4e, 0x9a8c77a8)}}, + {{TOBN(0x5dfee80f, 0x83774bdd), TOBN(0x63131602, 0x85734485), + TOBN(0xa1b524ae, 0x914a69a9), TOBN(0xebc2ffaf, 0xd4e300d7)}, + {TOBN(0x52c93db7, 0x7cfa46a5), TOBN(0x71e6161f, 0x21653b50), + TOBN(0x3574fc57, 0xa4bc580a), TOBN(0xc09015dd, 0xe1bc1253)}}, + {{TOBN(0x4b7b47b2, 0xd174d7aa), TOBN(0x4072d8e8, 0xf3a15d04), + TOBN(0xeeb7d47f, 0xd6fa07ed), TOBN(0x6f2b9ff9, 0xedbdafb1)}, + {TOBN(0x18c51615, 0x3760fe8a), TOBN(0x7a96e6bf, 0xf06c6c13), + TOBN(0x4d7a0410, 0x0ea2d071), TOBN(0xa1914e9b, 0x0be2a5ce)}}, + {{TOBN(0x5726e357, 0xd8a3c5cf), TOBN(0x1197ecc3, 0x2abb2b13), + TOBN(0x6c0d7f7f, 0x31ae88dd), TOBN(0x15b20d1a, 0xfdbb3efe)}, + {TOBN(0xcd06aa26, 0x70584039), TOBN(0x2277c969, 0xa7dc9747), + TOBN(0xbca69587, 0x7855d815), TOBN(0x899ea238, 0x5188b32a)}}, + {{TOBN(0x37d9228b, 0x760c1c9d), TOBN(0xc7efbb11, 0x9b5c18da), + TOBN(0x7f0d1bc8, 0x19f6dbc5), TOBN(0x4875384b, 0x07e6905b)}, + {TOBN(0xc7c50baa, 0x3ba8cd86), TOBN(0xb0ce40fb, 0xc2905de0), + TOBN(0x70840673, 0x7a231952), TOBN(0xa912a262, 0xcf43de26)}}, + {{TOBN(0x9c38ddcc, 0xeb5b76c1), TOBN(0x746f5285, 0x26fc0ab4), + TOBN(0x52a63a50, 0xd62c269f), TOBN(0x60049c55, 0x99458621)}, + {TOBN(0xe7f48f82, 0x3c2f7c9e), TOBN(0x6bd99043, 0x917d5cf3), + TOBN(0xeb1317a8, 0x8701f469), TOBN(0xbd3fe2ed, 0x9a449fe0)}}, + {{TOBN(0x421e79ca, 0x12ef3d36), TOBN(0x9ee3c36c, 0x3e7ea5de), + TOBN(0xe48198b5, 0xcdff36f7), TOBN(0xaff4f967, 0xc6b82228)}, + {TOBN(0x15e19dd0, 0xc47adb7e), TOBN(0x45699b23, 0x032e7dfa), + TOBN(0x40680c8b, 0x1fae026a), TOBN(0x5a347a48, 0x550dbf4d)}}, + {{TOBN(0xe652533b, 0x3cef0d7d), TOBN(0xd94f7b18, 0x2bbb4381), + TOBN(0x838752be, 0x0e80f500), TOBN(0x8e6e2488, 0x9e9c9bfb)}, + {TOBN(0xc9751697, 0x16caca6a), TOBN(0x866c49d8, 0x38531ad9), + TOBN(0xc917e239, 0x7151ade1), TOBN(0x2d016ec1, 0x6037c407)}}, + {{TOBN(0xa407ccc9, 0x00eac3f9), TOBN(0x835f6280, 0xe2ed4748), + TOBN(0xcc54c347, 0x1cc98e0d), TOBN(0x0e969937, 0xdcb572eb)}, + {TOBN(0x1b16c8e8, 0x8f30c9cb), TOBN(0xa606ae75, 0x373c4661), + TOBN(0x47aa689b, 0x35502cab), TOBN(0xf89014ae, 0x4d9bb64f)}}, + {{TOBN(0x202f6a9c, 0x31c71f7b), TOBN(0x01f95aa3, 0x296ffe5c), + TOBN(0x5fc06014, 0x53cec3a3), TOBN(0xeb991237, 0x5f498a45)}, + {TOBN(0xae9a935e, 0x5d91ba87), TOBN(0xc6ac6281, 0x0b564a19), + TOBN(0x8a8fe81c, 0x3bd44e69), TOBN(0x7c8b467f, 0x9dd11d45)}}, + {{TOBN(0xf772251f, 0xea5b8e69), TOBN(0xaeecb3bd, 0xc5b75fbc), + TOBN(0x1aca3331, 0x887ff0e5), TOBN(0xbe5d49ff, 0x19f0a131)}, + {TOBN(0x582c13aa, 0xe5c8646f), TOBN(0xdbaa12e8, 0x20e19980), + TOBN(0x8f40f31a, 0xf7abbd94), TOBN(0x1f13f5a8, 0x1dfc7663)}}, + {{TOBN(0x5d81f1ee, 0xaceb4fc0), TOBN(0x36256002, 0x5e6f0f42), + TOBN(0x4b67d6d7, 0x751370c8), TOBN(0x2608b698, 0x03e80589)}, + {TOBN(0xcfc0d2fc, 0x05268301), TOBN(0xa6943d39, 0x40309212), + TOBN(0x192a90c2, 0x1fd0e1c2), TOBN(0xb209f113, 0x37f1dc76)}}, + {{TOBN(0xefcc5e06, 0x97bf1298), TOBN(0xcbdb6730, 0x219d639e), + TOBN(0xd009c116, 0xb81e8c6f), TOBN(0xa3ffdde3, 0x1a7ce2e5)}, + {TOBN(0xc53fbaaa, 0xa914d3ba), TOBN(0x836d500f, 0x88df85ee), + TOBN(0xd98dc71b, 0x66ee0751), TOBN(0x5a3d7005, 0x714516fd)}}, + {{TOBN(0x21d3634d, 0x39eedbba), TOBN(0x35cd2e68, 0x0455a46d), + TOBN(0xc8cafe65, 0xf9d7eb0c), TOBN(0xbda3ce9e, 0x00cefb3e)}, + {TOBN(0xddc17a60, 0x2c9cf7a4), TOBN(0x01572ee4, 0x7bcb8773), + TOBN(0xa92b2b01, 0x8c7548df), TOBN(0x732fd309, 0xa84600e3)}}, + {{TOBN(0xe22109c7, 0x16543a40), TOBN(0x9acafd36, 0xfede3c6c), + TOBN(0xfb206852, 0x6824e614), TOBN(0x2a4544a9, 0xda25dca0)}, + {TOBN(0x25985262, 0x91d60b06), TOBN(0x281b7be9, 0x28753545), + TOBN(0xec667b1a, 0x90f13b27), TOBN(0x33a83aff, 0x940e2eb4)}}, + {{TOBN(0x80009862, 0xd5d721d5), TOBN(0x0c3357a3, 0x5bd3a182), + TOBN(0x27f3a83b, 0x7aa2cda4), TOBN(0xb58ae74e, 0xf6f83085)}, + {TOBN(0x2a911a81, 0x2e6dad6b), TOBN(0xde286051, 0xf43d6c5b), + TOBN(0x4bdccc41, 0xf996c4d8), TOBN(0xe7312ec0, 0x0ae1e24e)}}}, + {{{TOBN(0xf8d112e7, 0x6e6485b3), TOBN(0x4d3e24db, 0x771c52f8), + TOBN(0x48e3ee41, 0x684a2f6d), TOBN(0x7161957d, 0x21d95551)}, + {TOBN(0x19631283, 0xcdb12a6c), TOBN(0xbf3fa882, 0x2e50e164), + TOBN(0xf6254b63, 0x3166cc73), TOBN(0x3aefa7ae, 0xaee8cc38)}}, + {{TOBN(0x79b0fe62, 0x3b36f9fd), TOBN(0x26543b23, 0xfde19fc0), + TOBN(0x136e64a0, 0x958482ef), TOBN(0x23f63771, 0x9b095825)}, + {TOBN(0x14cfd596, 0xb6a1142e), TOBN(0x5ea6aac6, 0x335aac0b), + TOBN(0x86a0e8bd, 0xf3081dd5), TOBN(0x5fb89d79, 0x003dc12a)}}, + {{TOBN(0xf615c33a, 0xf72e34d4), TOBN(0x0bd9ea40, 0x110eec35), + TOBN(0x1c12bc5b, 0xc1dea34e), TOBN(0x686584c9, 0x49ae4699)}, + {TOBN(0x13ad95d3, 0x8c97b942), TOBN(0x4609561a, 0x4e5c7562), + TOBN(0x9e94a4ae, 0xf2737f89), TOBN(0xf57594c6, 0x371c78b6)}}, + {{TOBN(0x0f0165fc, 0xe3779ee3), TOBN(0xe00e7f9d, 0xbd495d9e), + TOBN(0x1fa4efa2, 0x20284e7a), TOBN(0x4564bade, 0x47ac6219)}, + {TOBN(0x90e6312a, 0xc4708e8e), TOBN(0x4f5725fb, 0xa71e9adf), + TOBN(0xe95f55ae, 0x3d684b9f), TOBN(0x47f7ccb1, 0x1e94b415)}}, + {{TOBN(0x7322851b, 0x8d946581), TOBN(0xf0d13133, 0xbdf4a012), + TOBN(0xa3510f69, 0x6584dae0), TOBN(0x03a7c171, 0x3c9f6c6d)}, + {TOBN(0x5be97f38, 0xe475381a), TOBN(0xca1ba422, 0x85823334), + TOBN(0xf83cc5c7, 0x0be17dda), TOBN(0x158b1494, 0x0b918c0f)}}, + {{TOBN(0xda3a77e5, 0x522e6b69), TOBN(0x69c908c3, 0xbbcd6c18), + TOBN(0x1f1b9e48, 0xd924fd56), TOBN(0x37c64e36, 0xaa4bb3f7)}, + {TOBN(0x5a4fdbdf, 0xee478d7d), TOBN(0xba75c8bc, 0x0193f7a0), + TOBN(0x84bc1e84, 0x56cd16df), TOBN(0x1fb08f08, 0x46fad151)}}, + {{TOBN(0x8a7cabf9, 0x842e9f30), TOBN(0xa331d4bf, 0x5eab83af), + TOBN(0xd272cfba, 0x017f2a6a), TOBN(0x27560abc, 0x83aba0e3)}, + {TOBN(0x94b83387, 0x0e3a6b75), TOBN(0x25c6aea2, 0x6b9f50f5), + TOBN(0x803d691d, 0xb5fdf6d0), TOBN(0x03b77509, 0xe6333514)}}, + {{TOBN(0x36178903, 0x61a341c1), TOBN(0x3604dc60, 0x0cfd6142), + TOBN(0x022295eb, 0x8533316c), TOBN(0x3dbde4ac, 0x44af2922)}, + {TOBN(0x898afc5d, 0x1c7eef69), TOBN(0x58896805, 0xd14f4fa1), + TOBN(0x05002160, 0x203c21ca), TOBN(0x6f0d1f30, 0x40ef730b)}}, + {{TOBN(0x8e8c44d4, 0x196224f8), TOBN(0x75a4ab95, 0x374d079d), + TOBN(0x79085ecc, 0x7d48f123), TOBN(0x56f04d31, 0x1bf65ad8)}, + {TOBN(0xe220bf1c, 0xbda602b2), TOBN(0x73ee1742, 0xf9612c69), + TOBN(0x76008fc8, 0x084fd06b), TOBN(0x4000ef9f, 0xf11380d1)}}, + {{TOBN(0x48201b4b, 0x12cfe297), TOBN(0x3eee129c, 0x292f74e5), + TOBN(0xe1fe114e, 0xc9e874e8), TOBN(0x899b055c, 0x92c5fc41)}, + {TOBN(0x4e477a64, 0x3a39c8cf), TOBN(0x82f09efe, 0x78963cc9), + TOBN(0x6fd3fd8f, 0xd333f863), TOBN(0x85132b2a, 0xdc949c63)}}, + {{TOBN(0x7e06a3ab, 0x516eb17b), TOBN(0x73bec06f, 0xd2c7372b), + TOBN(0xe4f74f55, 0xba896da6), TOBN(0xbb4afef8, 0x8e9eb40f)}, + {TOBN(0x2d75bec8, 0xe61d66b0), TOBN(0x02bda4b4, 0xef29300b), + TOBN(0x8bbaa8de, 0x026baa5a), TOBN(0xff54befd, 0xa07f4440)}}, + {{TOBN(0xbd9b8b1d, 0xbe7a2af3), TOBN(0xec51caa9, 0x4fb74a72), + TOBN(0xb9937a4b, 0x63879697), TOBN(0x7c9a9d20, 0xec2687d5)}, + {TOBN(0x1773e44f, 0x6ef5f014), TOBN(0x8abcf412, 0xe90c6900), + TOBN(0x387bd022, 0x8142161e), TOBN(0x50393755, 0xfcb6ff2a)}}, + {{TOBN(0x9813fd56, 0xed6def63), TOBN(0x53cf6482, 0x7d53106c), + TOBN(0x991a35bd, 0x431f7ac1), TOBN(0xf1e274dd, 0x63e65faf)}, + {TOBN(0xf63ffa3c, 0x44cc7880), TOBN(0x411a426b, 0x7c256981), + TOBN(0xb698b9fd, 0x93a420e0), TOBN(0x89fdddc0, 0xae53f8fe)}}, + {{TOBN(0x766e0722, 0x32398baa), TOBN(0x205fee42, 0x5cfca031), + TOBN(0xa49f5341, 0x7a029cf2), TOBN(0xa88c68b8, 0x4023890d)}, + {TOBN(0xbc275041, 0x7337aaa8), TOBN(0x9ed364ad, 0x0eb384f4), + TOBN(0xe0816f85, 0x29aba92f), TOBN(0x2e9e1941, 0x04e38a88)}}, + {{TOBN(0x57eef44a, 0x3dafd2d5), TOBN(0x35d1fae5, 0x97ed98d8), + TOBN(0x50628c09, 0x2307f9b1), TOBN(0x09d84aae, 0xd6cba5c6)}, + {TOBN(0x67071bc7, 0x88aaa691), TOBN(0x2dea57a9, 0xafe6cb03), + TOBN(0xdfe11bb4, 0x3d78ac01), TOBN(0x7286418c, 0x7fd7aa51)}}, + {{TOBN(0xfabf7709, 0x77f7195a), TOBN(0x8ec86167, 0xadeb838f), + TOBN(0xea1285a8, 0xbb4f012d), TOBN(0xd6883503, 0x9a3eab3f)}, + {TOBN(0xee5d24f8, 0x309004c2), TOBN(0xa96e4b76, 0x13ffe95e), + TOBN(0x0cdffe12, 0xbd223ea4), TOBN(0x8f5c2ee5, 0xb6739a53)}}, + {{TOBN(0x5cb4aaa5, 0xdd968198), TOBN(0xfa131c52, 0x72413a6c), + TOBN(0x53d46a90, 0x9536d903), TOBN(0xb270f0d3, 0x48606d8e)}, + {TOBN(0x518c7564, 0xa053a3bc), TOBN(0x088254b7, 0x1a86caef), + TOBN(0xb3ba8cb4, 0x0ab5efd0), TOBN(0x5c59900e, 0x4605945d)}}, + {{TOBN(0xecace1dd, 0xa1887395), TOBN(0x40960f36, 0x932a65de), + TOBN(0x9611ff5c, 0x3aa95529), TOBN(0xc58215b0, 0x7c1e5a36)}, + {TOBN(0xd48c9b58, 0xf0e1a524), TOBN(0xb406856b, 0xf590dfb8), + TOBN(0xc7605e04, 0x9cd95662), TOBN(0x0dd036ee, 0xa33ecf82)}}, + {{TOBN(0xa50171ac, 0xc33156b3), TOBN(0xf09d24ea, 0x4a80172e), + TOBN(0x4e1f72c6, 0x76dc8eef), TOBN(0xe60caadc, 0x5e3d44ee)}, + {TOBN(0x006ef8a6, 0x979b1d8f), TOBN(0x60908a1c, 0x97788d26), + TOBN(0x6e08f95b, 0x266feec0), TOBN(0x618427c2, 0x22e8c94e)}}, + {{TOBN(0x3d613339, 0x59145a65), TOBN(0xcd9bc368, 0xfa406337), + TOBN(0x82d11be3, 0x2d8a52a0), TOBN(0xf6877b27, 0x97a1c590)}, + {TOBN(0x837a819b, 0xf5cbdb25), TOBN(0x2a4fd1d8, 0xde090249), + TOBN(0x622a7de7, 0x74990e5f), TOBN(0x840fa5a0, 0x7945511b)}}, + {{TOBN(0x30b974be, 0x6558842d), TOBN(0x70df8c64, 0x17f3d0a6), + TOBN(0x7c803520, 0x7542e46d), TOBN(0x7251fe7f, 0xe4ecc823)}, + {TOBN(0xe59134cb, 0x5e9aac9a), TOBN(0x11bb0934, 0xf0045d71), + TOBN(0x53e5d9b5, 0xdbcb1d4e), TOBN(0x8d97a905, 0x92defc91)}}, + {{TOBN(0xfe289327, 0x7946d3f9), TOBN(0xe132bd24, 0x07472273), + TOBN(0xeeeb510c, 0x1eb6ae86), TOBN(0x777708c5, 0xf0595067)}, + {TOBN(0x18e2c8cd, 0x1297029e), TOBN(0x2c61095c, 0xbbf9305e), + TOBN(0xe466c258, 0x6b85d6d9), TOBN(0x8ac06c36, 0xda1ea530)}}, + {{TOBN(0xa365dc39, 0xa1304668), TOBN(0xe4a9c885, 0x07f89606), + TOBN(0x65a4898f, 0xacc7228d), TOBN(0x3e2347ff, 0x84ca8303)}, + {TOBN(0xa5f6fb77, 0xea7d23a3), TOBN(0x2fac257d, 0x672a71cd), + TOBN(0x6908bef8, 0x7e6a44d3), TOBN(0x8ff87566, 0x891d3d7a)}}, + {{TOBN(0xe58e90b3, 0x6b0cf82e), TOBN(0x6438d246, 0x2615b5e7), + TOBN(0x07b1f8fc, 0x669c145a), TOBN(0xb0d8b2da, 0x36f1e1cb)}, + {TOBN(0x54d5dadb, 0xd9184c4d), TOBN(0x3dbb18d5, 0xf93d9976), + TOBN(0x0a3e0f56, 0xd1147d47), TOBN(0x2afa8c8d, 0xa0a48609)}}, + {{TOBN(0x275353e8, 0xbc36742c), TOBN(0x898f427e, 0xeea0ed90), + TOBN(0x26f4947e, 0x3e477b00), TOBN(0x8ad8848a, 0x308741e3)}, + {TOBN(0x6c703c38, 0xd74a2a46), TOBN(0x5e3e05a9, 0x9ba17ba2), + TOBN(0xc1fa6f66, 0x4ab9a9e4), TOBN(0x474a2d9a, 0x3841d6ec)}}, + {{TOBN(0x871239ad, 0x653ae326), TOBN(0x14bcf72a, 0xa74cbb43), + TOBN(0x8737650e, 0x20d4c083), TOBN(0x3df86536, 0x110ed4af)}, + {TOBN(0xd2d86fe7, 0xb53ca555), TOBN(0x688cb00d, 0xabd5d538), + TOBN(0xcf81bda3, 0x1ad38468), TOBN(0x7ccfe3cc, 0xf01167b6)}}, + {{TOBN(0xcf4f47e0, 0x6c4c1fe6), TOBN(0x557e1f1a, 0x298bbb79), + TOBN(0xf93b974f, 0x30d45a14), TOBN(0x174a1d2d, 0x0baf97c4)}, + {TOBN(0x7a003b30, 0xc51fbf53), TOBN(0xd8940991, 0xee68b225), + TOBN(0x5b0aa7b7, 0x1c0f4173), TOBN(0x975797c9, 0xa20a7153)}}, + {{TOBN(0x26e08c07, 0xe3533d77), TOBN(0xd7222e6a, 0x2e341c99), + TOBN(0x9d60ec3d, 0x8d2dc4ed), TOBN(0xbdfe0d8f, 0x7c476cf8)}, + {TOBN(0x1fe59ab6, 0x1d056605), TOBN(0xa9ea9df6, 0x86a8551f), + TOBN(0x8489941e, 0x47fb8d8c), TOBN(0xfeb874eb, 0x4a7f1b10)}}, + {{TOBN(0xfe5fea86, 0x7ee0d98f), TOBN(0x201ad34b, 0xdbf61864), + TOBN(0x45d8fe47, 0x37c031d4), TOBN(0xd5f49fae, 0x795f0822)}, + {TOBN(0xdb0fb291, 0xc7f4a40c), TOBN(0x2e69d9c1, 0x730ddd92), + TOBN(0x754e1054, 0x49d76987), TOBN(0x8a24911d, 0x7662db87)}}, + {{TOBN(0x61fc1810, 0x60a71676), TOBN(0xe852d1a8, 0xf66a8ad1), + TOBN(0x172bbd65, 0x6417231e), TOBN(0x0d6de7bd, 0x3babb11f)}, + {TOBN(0x6fde6f88, 0xc8e347f8), TOBN(0x1c587547, 0x9bd99cc3), + TOBN(0x78e54ed0, 0x34076950), TOBN(0x97f0f334, 0x796e83ba)}}, + {{TOBN(0xe4dbe1ce, 0x4924867a), TOBN(0xbd5f51b0, 0x60b84917), + TOBN(0x37530040, 0x3cb09a79), TOBN(0xdb3fe0f8, 0xff1743d8)}, + {TOBN(0xed7894d8, 0x556fa9db), TOBN(0xfa262169, 0x23412fbf), + TOBN(0x563be0db, 0xba7b9291), TOBN(0x6ca8b8c0, 0x0c9fb234)}}, + {{TOBN(0xed406aa9, 0xbd763802), TOBN(0xc21486a0, 0x65303da1), + TOBN(0x61ae291e, 0xc7e62ec4), TOBN(0x622a0492, 0xdf99333e)}, + {TOBN(0x7fd80c9d, 0xbb7a8ee0), TOBN(0xdc2ed3bc, 0x6c01aedb), + TOBN(0x35c35a12, 0x08be74ec), TOBN(0xd540cb1a, 0x469f671f)}}, + {{TOBN(0xd16ced4e, 0xcf84f6c7), TOBN(0x8561fb9c, 0x2d090f43), + TOBN(0x7e693d79, 0x6f239db4), TOBN(0xa736f928, 0x77bd0d94)}, + {TOBN(0x07b4d929, 0x2c1950ee), TOBN(0xda177543, 0x56dc11b3), + TOBN(0xa5dfbbaa, 0x7a6a878e), TOBN(0x1c70cb29, 0x4decb08a)}}, + {{TOBN(0xfba28c8b, 0x6f0f7c50), TOBN(0xa8eba2b8, 0x854dcc6d), + TOBN(0x5ff8e89a, 0x36b78642), TOBN(0x070c1c8e, 0xf6873adf)}, + {TOBN(0xbbd3c371, 0x6484d2e4), TOBN(0xfb78318f, 0x0d414129), + TOBN(0x2621a39c, 0x6ad93b0b), TOBN(0x979d74c2, 0xa9e917f7)}}, + {{TOBN(0xfc195647, 0x61fb0428), TOBN(0x4d78954a, 0xbee624d4), + TOBN(0xb94896e0, 0xb8ae86fd), TOBN(0x6667ac0c, 0xc91c8b13)}, + {TOBN(0x9f180512, 0x43bcf832), TOBN(0xfbadf8b7, 0xa0010137), + TOBN(0xc69b4089, 0xb3ba8aa7), TOBN(0xfac4bacd, 0xe687ce85)}}, + {{TOBN(0x9164088d, 0x977eab40), TOBN(0x51f4c5b6, 0x2760b390), + TOBN(0xd238238f, 0x340dd553), TOBN(0x358566c3, 0xdb1d31c9)}, + {TOBN(0x3a5ad69e, 0x5068f5ff), TOBN(0xf31435fc, 0xdaff6b06), + TOBN(0xae549a5b, 0xd6debff0), TOBN(0x59e5f0b7, 0x75e01331)}}, + {{TOBN(0x5d492fb8, 0x98559acf), TOBN(0x96018c2e, 0x4db79b50), + TOBN(0x55f4a48f, 0x609f66aa), TOBN(0x1943b3af, 0x4900a14f)}, + {TOBN(0xc22496df, 0x15a40d39), TOBN(0xb2a44684, 0x4c20f7c5), + TOBN(0x76a35afa, 0x3b98404c), TOBN(0xbec75725, 0xff5d1b77)}}, + {{TOBN(0xb67aa163, 0xbea06444), TOBN(0x27e95bb2, 0xf724b6f2), + TOBN(0x3c20e3e9, 0xd238c8ab), TOBN(0x1213754e, 0xddd6ae17)}, + {TOBN(0x8c431020, 0x716e0f74), TOBN(0x6679c82e, 0xffc095c2), + TOBN(0x2eb3adf4, 0xd0ac2932), TOBN(0x2cc970d3, 0x01bb7a76)}}, + {{TOBN(0x70c71f2f, 0x740f0e66), TOBN(0x545c616b, 0x2b6b23cc), + TOBN(0x4528cfcb, 0xb40a8bd7), TOBN(0xff839633, 0x2ab27722)}, + {TOBN(0x049127d9, 0x025ac99a), TOBN(0xd314d4a0, 0x2b63e33b), + TOBN(0xc8c310e7, 0x28d84519), TOBN(0x0fcb8983, 0xb3bc84ba)}}, + {{TOBN(0x2cc52261, 0x38634818), TOBN(0x501814f4, 0xb44c2e0b), + TOBN(0xf7e181aa, 0x54dfdba3), TOBN(0xcfd58ff0, 0xe759718c)}, + {TOBN(0xf90cdb14, 0xd3b507a8), TOBN(0x57bd478e, 0xc50bdad8), + TOBN(0x29c197e2, 0x50e5f9aa), TOBN(0x4db6eef8, 0xe40bc855)}}, + {{TOBN(0x2cc8f21a, 0xd1fc0654), TOBN(0xc71cc963, 0x81269d73), + TOBN(0xecfbb204, 0x077f49f9), TOBN(0xdde92571, 0xca56b793)}, + {TOBN(0x9abed6a3, 0xf97ad8f7), TOBN(0xe6c19d3f, 0x924de3bd), + TOBN(0x8dce92f4, 0xa140a800), TOBN(0x85f44d1e, 0x1337af07)}}, + {{TOBN(0x5953c08b, 0x09d64c52), TOBN(0xa1b5e49f, 0xf5df9749), + TOBN(0x336a8fb8, 0x52735f7d), TOBN(0xb332b6db, 0x9add676b)}, + {TOBN(0x558b88a0, 0xb4511aa4), TOBN(0x09788752, 0xdbd5cc55), + TOBN(0x16b43b9c, 0xd8cd52bd), TOBN(0x7f0bc5a0, 0xc2a2696b)}}, + {{TOBN(0x146e12d4, 0xc11f61ef), TOBN(0x9ce10754, 0x3a83e79e), + TOBN(0x08ec73d9, 0x6cbfca15), TOBN(0x09ff29ad, 0x5b49653f)}, + {TOBN(0xe31b72bd, 0xe7da946e), TOBN(0xebf9eb3b, 0xee80a4f2), + TOBN(0xd1aabd08, 0x17598ce4), TOBN(0x18b5fef4, 0x53f37e80)}}, + {{TOBN(0xd5d5cdd3, 0x5958cd79), TOBN(0x3580a1b5, 0x1d373114), + TOBN(0xa36e4c91, 0xfa935726), TOBN(0xa38c534d, 0xef20d760)}, + {TOBN(0x7088e40a, 0x2ff5845b), TOBN(0xe5bb40bd, 0xbd78177f), + TOBN(0x4f06a7a8, 0x857f9920), TOBN(0xe3cc3e50, 0xe968f05d)}}, + {{TOBN(0x1d68b7fe, 0xe5682d26), TOBN(0x5206f76f, 0xaec7f87c), + TOBN(0x41110530, 0x041951ab), TOBN(0x58ec52c1, 0xd4b5a71a)}, + {TOBN(0xf3488f99, 0x0f75cf9a), TOBN(0xf411951f, 0xba82d0d5), + TOBN(0x27ee75be, 0x618895ab), TOBN(0xeae060d4, 0x6d8aab14)}}, + {{TOBN(0x9ae1df73, 0x7fb54dc2), TOBN(0x1f3e391b, 0x25963649), + TOBN(0x242ec32a, 0xfe055081), TOBN(0x5bd450ef, 0x8491c9bd)}, + {TOBN(0x367efc67, 0x981eb389), TOBN(0xed7e1928, 0x3a0550d5), + TOBN(0x362e776b, 0xab3ce75c), TOBN(0xe890e308, 0x1f24c523)}}, + {{TOBN(0xb961b682, 0xfeccef76), TOBN(0x8b8e11f5, 0x8bba6d92), + TOBN(0x8f2ccc4c, 0x2b2375c4), TOBN(0x0d7f7a52, 0xe2f86cfa)}, + {TOBN(0xfd94d30a, 0x9efe5633), TOBN(0x2d8d246b, 0x5451f934), + TOBN(0x2234c6e3, 0x244e6a00), TOBN(0xde2b5b0d, 0xddec8c50)}}, + {{TOBN(0x2ce53c5a, 0xbf776f5b), TOBN(0x6f724071, 0x60357b05), + TOBN(0xb2593717, 0x71bf3f7a), TOBN(0x87d2501c, 0x440c4a9f)}, + {TOBN(0x440552e1, 0x87b05340), TOBN(0xb7bf7cc8, 0x21624c32), + TOBN(0x4155a6ce, 0x22facddb), TOBN(0x5a4228cb, 0x889837ef)}}, + {{TOBN(0xef87d6d6, 0xfd4fd671), TOBN(0xa233687e, 0xc2daa10e), + TOBN(0x75622244, 0x03c0eb96), TOBN(0x7632d184, 0x8bf19be6)}, + {TOBN(0x05d0f8e9, 0x40735ff4), TOBN(0x3a3e6e13, 0xc00931f1), + TOBN(0x31ccde6a, 0xdafe3f18), TOBN(0xf381366a, 0xcfe51207)}}, + {{TOBN(0x24c222a9, 0x60167d92), TOBN(0x62f9d6f8, 0x7529f18c), + TOBN(0x412397c0, 0x0353b114), TOBN(0x334d89dc, 0xef808043)}, + {TOBN(0xd9ec63ba, 0x2a4383ce), TOBN(0xcec8e937, 0x5cf92ba0), + TOBN(0xfb8b4288, 0xc8be74c0), TOBN(0x67d6912f, 0x105d4391)}}, + {{TOBN(0x7b996c46, 0x1b913149), TOBN(0x36aae2ef, 0x3a4e02da), + TOBN(0xb68aa003, 0x972de594), TOBN(0x284ec70d, 0x4ec6d545)}, + {TOBN(0xf3d2b2d0, 0x61391d54), TOBN(0x69c5d5d6, 0xfe114e92), + TOBN(0xbe0f00b5, 0xb4482dff), TOBN(0xe1596fa5, 0xf5bf33c5)}}, + {{TOBN(0x10595b56, 0x96a71cba), TOBN(0x944938b2, 0xfdcadeb7), + TOBN(0xa282da4c, 0xfccd8471), TOBN(0x98ec05f3, 0x0d37bfe1)}, + {TOBN(0xe171ce1b, 0x0698304a), TOBN(0x2d691444, 0x21bdf79b), + TOBN(0xd0cd3b74, 0x1b21dec1), TOBN(0x712ecd8b, 0x16a15f71)}}, + {{TOBN(0x8d4c00a7, 0x00fd56e1), TOBN(0x02ec9692, 0xf9527c18), + TOBN(0x21c44937, 0x4a3e42e1), TOBN(0x9176fbab, 0x1392ae0a)}, + {TOBN(0x8726f1ba, 0x44b7b618), TOBN(0xb4d7aae9, 0xf1de491c), + TOBN(0xf91df7b9, 0x07b582c0), TOBN(0x7e116c30, 0xef60aa3a)}}, + {{TOBN(0x99270f81, 0x466265d7), TOBN(0xb15b6fe2, 0x4df7adf0), + TOBN(0xfe33b2d3, 0xf9738f7f), TOBN(0x48553ab9, 0xd6d70f95)}, + {TOBN(0x2cc72ac8, 0xc21e94db), TOBN(0x795ac38d, 0xbdc0bbee), + TOBN(0x0a1be449, 0x2e40478f), TOBN(0x81bd3394, 0x052bde55)}}, + {{TOBN(0x63c8dbe9, 0x56b3c4f2), TOBN(0x017a99cf, 0x904177cc), + TOBN(0x947bbddb, 0x4d010fc1), TOBN(0xacf9b00b, 0xbb2c9b21)}, + {TOBN(0x2970bc8d, 0x47173611), TOBN(0x1a4cbe08, 0xac7d756f), + TOBN(0x06d9f4aa, 0x67d541a2), TOBN(0xa3e8b689, 0x59c2cf44)}}, + {{TOBN(0xaad066da, 0x4d88f1dd), TOBN(0xc604f165, 0x7ad35dea), + TOBN(0x7edc0720, 0x4478ca67), TOBN(0xa10dfae0, 0xba02ce06)}, + {TOBN(0xeceb1c76, 0xaf36f4e4), TOBN(0x994b2292, 0xaf3f8f48), + TOBN(0xbf9ed77b, 0x77c8a68c), TOBN(0x74f544ea, 0x51744c9d)}}, + {{TOBN(0x82d05bb9, 0x8113a757), TOBN(0x4ef2d2b4, 0x8a9885e4), + TOBN(0x1e332be5, 0x1aa7865f), TOBN(0x22b76b18, 0x290d1a52)}, + {TOBN(0x308a2310, 0x44351683), TOBN(0x9d861896, 0xa3f22840), + TOBN(0x5959ddcd, 0x841ed947), TOBN(0x0def0c94, 0x154b73bf)}}, + {{TOBN(0xf0105417, 0x4c7c15e0), TOBN(0x539bfb02, 0x3a277c32), + TOBN(0xe699268e, 0xf9dccf5f), TOBN(0x9f5796a5, 0x0247a3bd)}, + {TOBN(0x8b839de8, 0x4f157269), TOBN(0xc825c1e5, 0x7a30196b), + TOBN(0x6ef0aabc, 0xdc8a5a91), TOBN(0xf4a8ce6c, 0x498b7fe6)}}, + {{TOBN(0x1cce35a7, 0x70cbac78), TOBN(0x83488e9b, 0xf6b23958), + TOBN(0x0341a070, 0xd76cb011), TOBN(0xda6c9d06, 0xae1b2658)}, + {TOBN(0xb701fb30, 0xdd648c52), TOBN(0x994ca02c, 0x52fb9fd1), + TOBN(0x06933117, 0x6f563086), TOBN(0x3d2b8100, 0x17856bab)}}, + {{TOBN(0xe89f48c8, 0x5963a46e), TOBN(0x658ab875, 0xa99e61c7), + TOBN(0x6e296f87, 0x4b8517b4), TOBN(0x36c4fcdc, 0xfc1bc656)}, + {TOBN(0xde5227a1, 0xa3906def), TOBN(0x9fe95f57, 0x62418945), + TOBN(0x20c91e81, 0xfdd96cde), TOBN(0x5adbe47e, 0xda4480de)}}, + {{TOBN(0xa009370f, 0x396de2b6), TOBN(0x98583d4b, 0xf0ecc7bd), + TOBN(0xf44f6b57, 0xe51d0672), TOBN(0x03d6b078, 0x556b1984)}, + {TOBN(0x27dbdd93, 0xb0b64912), TOBN(0x9b3a3434, 0x15687b09), + TOBN(0x0dba6461, 0x51ec20a9), TOBN(0xec93db7f, 0xff28187c)}}, + {{TOBN(0x00ff8c24, 0x66e48bdd), TOBN(0x2514f2f9, 0x11ccd78e), + TOBN(0xeba11f4f, 0xe1250603), TOBN(0x8a22cd41, 0x243fa156)}, + {TOBN(0xa4e58df4, 0xb283e4c6), TOBN(0x78c29859, 0x8b39783f), + TOBN(0x5235aee2, 0xa5259809), TOBN(0xc16284b5, 0x0e0227dd)}}, + {{TOBN(0xa5f57916, 0x1338830d), TOBN(0x6d4b8a6b, 0xd2123fca), + TOBN(0x236ea68a, 0xf9c546f8), TOBN(0xc1d36873, 0xfa608d36)}, + {TOBN(0xcd76e495, 0x8d436d13), TOBN(0xd4d9c221, 0x8fb080af), + TOBN(0x665c1728, 0xe8ad3fb5), TOBN(0xcf1ebe4d, 0xb3d572e0)}}, + {{TOBN(0xa7a8746a, 0x584c5e20), TOBN(0x267e4ea1, 0xb9dc7035), + TOBN(0x593a15cf, 0xb9548c9b), TOBN(0x5e6e2135, 0x4bd012f3)}, + {TOBN(0xdf31cc6a, 0x8c8f936e), TOBN(0x8af84d04, 0xb5c241dc), + TOBN(0x63990a6f, 0x345efb86), TOBN(0x6fef4e61, 0xb9b962cb)}}}, + {{{TOBN(0xf6368f09, 0x25722608), TOBN(0x131260db, 0x131cf5c6), + TOBN(0x40eb353b, 0xfab4f7ac), TOBN(0x85c78880, 0x37eee829)}, + {TOBN(0x4c1581ff, 0xc3bdf24e), TOBN(0x5bff75cb, 0xf5c3c5a8), + TOBN(0x35e8c83f, 0xa14e6f40), TOBN(0xb81d1c0f, 0x0295e0ca)}}, + {{TOBN(0xfcde7cc8, 0xf43a730f), TOBN(0xe89b6f3c, 0x33ab590e), + TOBN(0xc823f529, 0xad03240b), TOBN(0x82b79afe, 0x98bea5db)}, + {TOBN(0x568f2856, 0x962fe5de), TOBN(0x0c590adb, 0x60c591f3), + TOBN(0x1fc74a14, 0x4a28a858), TOBN(0x3b662498, 0xb3203f4c)}}, + {{TOBN(0x91e3cf0d, 0x6c39765a), TOBN(0xa2db3acd, 0xac3cca0b), + TOBN(0x288f2f08, 0xcb953b50), TOBN(0x2414582c, 0xcf43cf1a)}, + {TOBN(0x8dec8bbc, 0x60eee9a8), TOBN(0x54c79f02, 0x729aa042), + TOBN(0xd81cd5ec, 0x6532f5d5), TOBN(0xa672303a, 0xcf82e15f)}}, + {{TOBN(0x376aafa8, 0x719c0563), TOBN(0xcd8ad2dc, 0xbc5fc79f), + TOBN(0x303fdb9f, 0xcb750cd3), TOBN(0x14ff052f, 0x4418b08e)}, + {TOBN(0xf75084cf, 0x3e2d6520), TOBN(0x7ebdf0f8, 0x144ed509), + TOBN(0xf43bf0f2, 0xd3f25b98), TOBN(0x86ad71cf, 0xa354d837)}}, + {{TOBN(0xb827fe92, 0x26f43572), TOBN(0xdfd3ab5b, 0x5d824758), + TOBN(0x315dd23a, 0x539094c1), TOBN(0x85c0e37a, 0x66623d68)}, + {TOBN(0x575c7972, 0x7be19ae0), TOBN(0x616a3396, 0xdf0d36b5), + TOBN(0xa1ebb3c8, 0x26b1ff7e), TOBN(0x635b9485, 0x140ad453)}}, + {{TOBN(0x92bf3cda, 0xda430c0b), TOBN(0x4702850e, 0x3a96dac6), + TOBN(0xc91cf0a5, 0x15ac326a), TOBN(0x95de4f49, 0xab8c25e4)}, + {TOBN(0xb01bad09, 0xe265c17c), TOBN(0x24e45464, 0x087b3881), + TOBN(0xd43e583c, 0xe1fac5ca), TOBN(0xe17cb318, 0x6ead97a6)}}, + {{TOBN(0x6cc39243, 0x74dcec46), TOBN(0x33cfc02d, 0x54c2b73f), + TOBN(0x82917844, 0xf26cd99c), TOBN(0x8819dd95, 0xd1773f89)}, + {TOBN(0x09572aa6, 0x0871f427), TOBN(0x8e0cf365, 0xf6f01c34), + TOBN(0x7fa52988, 0xbff1f5af), TOBN(0x4eb357ea, 0xe75e8e50)}}, + {{TOBN(0xd9d0c8c4, 0x868af75d), TOBN(0xd7325cff, 0x45c8c7ea), + TOBN(0xab471996, 0xcc81ecb0), TOBN(0xff5d55f3, 0x611824ed)}, + {TOBN(0xbe314541, 0x1977a0ee), TOBN(0x5085c4c5, 0x722038c6), + TOBN(0x2d5335bf, 0xf94bb495), TOBN(0x894ad8a6, 0xc8e2a082)}}, + {{TOBN(0x5c3e2341, 0xada35438), TOBN(0xf4a9fc89, 0x049b8c4e), + TOBN(0xbeeb355a, 0x9f17cf34), TOBN(0x3f311e0e, 0x6c91fe10)}, + {TOBN(0xc2d20038, 0x92ab9891), TOBN(0x257bdcc1, 0x3e8ce9a9), + TOBN(0x1b2d9789, 0x88c53bee), TOBN(0x927ce89a, 0xcdba143a)}}, + {{TOBN(0xb0a32cca, 0x523db280), TOBN(0x5c889f8a, 0x50d43783), + TOBN(0x503e04b3, 0x4897d16f), TOBN(0x8cdb6e78, 0x08f5f2e8)}, + {TOBN(0x6ab91cf0, 0x179c8e74), TOBN(0xd8874e52, 0x48211d60), + TOBN(0xf948d4d5, 0xea851200), TOBN(0x4076d41e, 0xe6f9840a)}}, + {{TOBN(0xc20e263c, 0x47b517ea), TOBN(0x79a448fd, 0x30685e5e), + TOBN(0xe55f6f78, 0xf90631a0), TOBN(0x88a790b1, 0xa79e6346)}, + {TOBN(0x62160c7d, 0x80969fe8), TOBN(0x54f92fd4, 0x41491bb9), + TOBN(0xa6645c23, 0x5c957526), TOBN(0xf44cc5ae, 0xbea3ce7b)}}, + {{TOBN(0xf7628327, 0x8b1e68b7), TOBN(0xc731ad7a, 0x303f29d3), + TOBN(0xfe5a9ca9, 0x57d03ecb), TOBN(0x96c0d50c, 0x41bc97a7)}, + {TOBN(0xc4669fe7, 0x9b4f7f24), TOBN(0xfdd781d8, 0x3d9967ef), + TOBN(0x7892c7c3, 0x5d2c208d), TOBN(0x8bf64f7c, 0xae545cb3)}}, + {{TOBN(0xc01f862c, 0x467be912), TOBN(0xf4c85ee9, 0xc73d30cc), + TOBN(0x1fa6f4be, 0x6ab83ec7), TOBN(0xa07a3c1c, 0x4e3e3cf9)}, + {TOBN(0x87f8ef45, 0x0c00beb3), TOBN(0x30e2c2b3, 0x000d4c3e), + TOBN(0x1aa00b94, 0xfe08bf5b), TOBN(0x32c133aa, 0x9224ef52)}}, + {{TOBN(0x38df16bb, 0x32e5685d), TOBN(0x68a9e069, 0x58e6f544), + TOBN(0x495aaff7, 0xcdc5ebc6), TOBN(0xf894a645, 0x378b135f)}, + {TOBN(0xf316350a, 0x09e27ecf), TOBN(0xeced201e, 0x58f7179d), + TOBN(0x2eec273c, 0xe97861ba), TOBN(0x47ec2cae, 0xd693be2e)}}, + {{TOBN(0xfa4c97c4, 0xf68367ce), TOBN(0xe4f47d0b, 0xbe5a5755), + TOBN(0x17de815d, 0xb298a979), TOBN(0xd7eca659, 0xc177dc7d)}, + {TOBN(0x20fdbb71, 0x49ded0a3), TOBN(0x4cb2aad4, 0xfb34d3c5), + TOBN(0x2cf31d28, 0x60858a33), TOBN(0x3b6873ef, 0xa24aa40f)}}, + {{TOBN(0x540234b2, 0x2c11bb37), TOBN(0x2d0366dd, 0xed4c74a3), + TOBN(0xf9a968da, 0xeec5f25d), TOBN(0x36601068, 0x67b63142)}, + {TOBN(0x07cd6d2c, 0x68d7b6d4), TOBN(0xa8f74f09, 0x0c842942), + TOBN(0xe2751404, 0x7768b1ee), TOBN(0x4b5f7e89, 0xfe62aee4)}}, + {{TOBN(0xc6a77177, 0x89070d26), TOBN(0xa1f28e4e, 0xdd1c8bc7), + TOBN(0xea5f4f06, 0x469e1f17), TOBN(0x78fc242a, 0xfbdb78e0)}, + {TOBN(0xc9c7c592, 0x8b0588f1), TOBN(0xb6b7a0fd, 0x1535921e), + TOBN(0xcc5bdb91, 0xbde5ae35), TOBN(0xb42c485e, 0x12ff1864)}}, + {{TOBN(0xa1113e13, 0xdbab98aa), TOBN(0xde9d469b, 0xa17b1024), + TOBN(0x23f48b37, 0xc0462d3a), TOBN(0x3752e537, 0x7c5c078d)}, + {TOBN(0xe3a86add, 0x15544eb9), TOBN(0xf013aea7, 0x80fba279), + TOBN(0x8b5bb76c, 0xf22001b5), TOBN(0xe617ba14, 0xf02891ab)}}, + {{TOBN(0xd39182a6, 0x936219d3), TOBN(0x5ce1f194, 0xae51cb19), + TOBN(0xc78f8598, 0xbf07a74c), TOBN(0x6d7158f2, 0x22cbf1bc)}, + {TOBN(0x3b846b21, 0xe300ce18), TOBN(0x35fba630, 0x2d11275d), + TOBN(0x5fe25c36, 0xa0239b9b), TOBN(0xd8beb35d, 0xdf05d940)}}, + {{TOBN(0x4db02bb0, 0x1f7e320d), TOBN(0x0641c364, 0x6da320ea), + TOBN(0x6d95fa5d, 0x821389a3), TOBN(0x92699748, 0x8fcd8e3d)}, + {TOBN(0x316fef17, 0xceb6c143), TOBN(0x67fcb841, 0xd933762b), + TOBN(0xbb837e35, 0x118b17f8), TOBN(0x4b92552f, 0x9fd24821)}}, + {{TOBN(0xae6bc70e, 0x46aca793), TOBN(0x1cf0b0e4, 0xe579311b), + TOBN(0x8dc631be, 0x5802f716), TOBN(0x099bdc6f, 0xbddbee4d)}, + {TOBN(0xcc352bb2, 0x0caf8b05), TOBN(0xf74d505a, 0x72d63df2), + TOBN(0xb9876d4b, 0x91c4f408), TOBN(0x1ce18473, 0x9e229b2d)}}, + {{TOBN(0x49507597, 0x83abdb4a), TOBN(0x850fbcb6, 0xdee84b18), + TOBN(0x6325236e, 0x609e67dc), TOBN(0x04d831d9, 0x9336c6d8)}, + {TOBN(0x8deaae3b, 0xfa12d45d), TOBN(0xe425f8ce, 0x4746e246), + TOBN(0x8004c175, 0x24f5f31e), TOBN(0xaca16d8f, 0xad62c3b7)}}, + {{TOBN(0x0dc15a6a, 0x9152f934), TOBN(0xf1235e5d, 0xed0e12c1), + TOBN(0xc33c06ec, 0xda477dac), TOBN(0x76be8732, 0xb2ea0006)}, + {TOBN(0xcf3f7831, 0x0c0cd313), TOBN(0x3c524553, 0xa614260d), + TOBN(0x31a756f8, 0xcab22d15), TOBN(0x03ee10d1, 0x77827a20)}}, + {{TOBN(0xd1e059b2, 0x1994ef20), TOBN(0x2a653b69, 0x638ae318), + TOBN(0x70d5eb58, 0x2f699010), TOBN(0x279739f7, 0x09f5f84a)}, + {TOBN(0x5da4663c, 0x8b799336), TOBN(0xfdfdf14d, 0x203c37eb), + TOBN(0x32d8a9dc, 0xa1dbfb2d), TOBN(0xab40cff0, 0x77d48f9b)}}, + {{TOBN(0xc018b383, 0xd20b42d5), TOBN(0xf9a810ef, 0x9f78845f), + TOBN(0x40af3753, 0xbdba9df0), TOBN(0xb90bdcfc, 0x131dfdf9)}, + {TOBN(0x18720591, 0xf01ab782), TOBN(0xc823f211, 0x6af12a88), + TOBN(0xa51b80f3, 0x0dc14401), TOBN(0xde248f77, 0xfb2dfbe3)}}, + {{TOBN(0xef5a44e5, 0x0cafe751), TOBN(0x73997c9c, 0xd4dcd221), + TOBN(0x32fd86d1, 0xde854024), TOBN(0xd5b53adc, 0xa09b84bb)}, + {TOBN(0x008d7a11, 0xdcedd8d1), TOBN(0x406bd1c8, 0x74b32c84), + TOBN(0x5d4472ff, 0x05dde8b1), TOBN(0x2e25f2cd, 0xfce2b32f)}}, + {{TOBN(0xbec0dd5e, 0x29dfc254), TOBN(0x4455fcf6, 0x2b98b267), + TOBN(0x0b4d43a5, 0xc72df2ad), TOBN(0xea70e6be, 0x48a75397)}, + {TOBN(0x2aad6169, 0x5820f3bf), TOBN(0xf410d2dd, 0x9e37f68f), + TOBN(0x70fb7dba, 0x7be5ac83), TOBN(0x636bb645, 0x36ec3eec)}}, + {{TOBN(0x27104ea3, 0x9754e21c), TOBN(0xbc87a3e6, 0x8d63c373), + TOBN(0x483351d7, 0x4109db9a), TOBN(0x0fa724e3, 0x60134da7)}, + {TOBN(0x9ff44c29, 0xb0720b16), TOBN(0x2dd0cf13, 0x06aceead), + TOBN(0x5942758c, 0xe26929a6), TOBN(0x96c5db92, 0xb766a92b)}}, + {{TOBN(0xcec7d4c0, 0x5f18395e), TOBN(0xd3f22744, 0x1f80d032), + TOBN(0x7a68b37a, 0xcb86075b), TOBN(0x074764dd, 0xafef92db)}, + {TOBN(0xded1e950, 0x7bc7f389), TOBN(0xc580c850, 0xb9756460), + TOBN(0xaeeec2a4, 0x7da48157), TOBN(0x3f0b4e7f, 0x82c587b3)}}, + {{TOBN(0x231c6de8, 0xa9f19c53), TOBN(0x5717bd73, 0x6974e34e), + TOBN(0xd9e1d216, 0xf1508fa9), TOBN(0x9f112361, 0xdadaa124)}, + {TOBN(0x80145e31, 0x823b7348), TOBN(0x4dd8f0d5, 0xac634069), + TOBN(0xe3d82fc7, 0x2297c258), TOBN(0x276fcfee, 0x9cee7431)}}, + {{TOBN(0x8eb61b5e, 0x2bc0aea9), TOBN(0x4f668fd5, 0xde329431), + TOBN(0x03a32ab1, 0x38e4b87e), TOBN(0xe1374517, 0x73d0ef0b)}, + {TOBN(0x1a46f7e6, 0x853ac983), TOBN(0xc3bdf42e, 0x68e78a57), + TOBN(0xacf20785, 0x2ea96dd1), TOBN(0xa10649b9, 0xf1638460)}}, + {{TOBN(0xf2369f0b, 0x879fbbed), TOBN(0x0ff0ae86, 0xda9d1869), + TOBN(0x5251d759, 0x56766f45), TOBN(0x4984d8c0, 0x2be8d0fc)}, + {TOBN(0x7ecc95a6, 0xd21008f0), TOBN(0x29bd54a0, 0x3a1a1c49), + TOBN(0xab9828c5, 0xd26c50f3), TOBN(0x32c0087c, 0x51d0d251)}}, + {{TOBN(0x9bac3ce6, 0x0c1cdb26), TOBN(0xcd94d947, 0x557ca205), + TOBN(0x1b1bd598, 0x9db1fdcd), TOBN(0x0eda0108, 0xa3d8b149)}, + {TOBN(0x95066610, 0x56152fcc), TOBN(0xc2f037e6, 0xe7192b33), + TOBN(0xdeffb41a, 0xc92e05a4), TOBN(0x1105f6c2, 0xc2f6c62e)}}, + {{TOBN(0x68e73500, 0x8733913c), TOBN(0xcce86163, 0x3f3adc40), + TOBN(0xf407a942, 0x38a278e9), TOBN(0xd13c1b9d, 0x2ab21292)}, + {TOBN(0x93ed7ec7, 0x1c74cf5c), TOBN(0x8887dc48, 0xf1a4c1b4), + TOBN(0x3830ff30, 0x4b3a11f1), TOBN(0x358c5a3c, 0x58937cb6)}}, + {{TOBN(0x027dc404, 0x89022829), TOBN(0x40e93977, 0x3b798f79), + TOBN(0x90ad3337, 0x38be6ead), TOBN(0x9c23f6bc, 0xf34c0a5d)}, + {TOBN(0xd1711a35, 0xfbffd8bb), TOBN(0x60fcfb49, 0x1949d3dd), + TOBN(0x09c8ef4b, 0x7825d93a), TOBN(0x24233cff, 0xa0a8c968)}}, + {{TOBN(0x67ade46c, 0xe6d982af), TOBN(0xebb6bf3e, 0xe7544d7c), + TOBN(0xd6b9ba76, 0x3d8bd087), TOBN(0x46fe382d, 0x4dc61280)}, + {TOBN(0xbd39a7e8, 0xb5bdbd75), TOBN(0xab381331, 0xb8f228fe), + TOBN(0x0709a77c, 0xce1c4300), TOBN(0x6a247e56, 0xf337ceac)}}, + {{TOBN(0x8f34f21b, 0x636288be), TOBN(0x9dfdca74, 0xc8a7c305), + TOBN(0x6decfd1b, 0xea919e04), TOBN(0xcdf2688d, 0x8e1991f8)}, + {TOBN(0xe607df44, 0xd0f8a67e), TOBN(0xd985df4b, 0x0b58d010), + TOBN(0x57f834c5, 0x0c24f8f4), TOBN(0xe976ef56, 0xa0bf01ae)}}, + {{TOBN(0x536395ac, 0xa1c32373), TOBN(0x351027aa, 0x734c0a13), + TOBN(0xd2f1b5d6, 0x5e6bd5bc), TOBN(0x2b539e24, 0x223debed)}, + {TOBN(0xd4994cec, 0x0eaa1d71), TOBN(0x2a83381d, 0x661dcf65), + TOBN(0x5f1aed2f, 0x7b54c740), TOBN(0x0bea3fa5, 0xd6dda5ee)}}, + {{TOBN(0x9d4fb684, 0x36cc6134), TOBN(0x8eb9bbf3, 0xc0a443dd), + TOBN(0xfc500e2e, 0x383b7d2a), TOBN(0x7aad621c, 0x5b775257)}, + {TOBN(0x69284d74, 0x0a8f7cc0), TOBN(0xe820c2ce, 0x07562d65), + TOBN(0xbf9531b9, 0x499758ee), TOBN(0x73e95ca5, 0x6ee0cc2d)}}, + {{TOBN(0xf61790ab, 0xfbaf50a5), TOBN(0xdf55e76b, 0x684e0750), + TOBN(0xec516da7, 0xf176b005), TOBN(0x575553bb, 0x7a2dddc7)}, + {TOBN(0x37c87ca3, 0x553afa73), TOBN(0x315f3ffc, 0x4d55c251), + TOBN(0xe846442a, 0xaf3e5d35), TOBN(0x61b91149, 0x6495ff28)}}, + {{TOBN(0x23cc95d3, 0xfa326dc3), TOBN(0x1df4da1f, 0x18fc2cea), + TOBN(0x24bf9adc, 0xd0a37d59), TOBN(0xb6710053, 0x320d6e1e)}, + {TOBN(0x96f9667e, 0x618344d1), TOBN(0xcc7ce042, 0xa06445af), + TOBN(0xa02d8514, 0xd68dbc3a), TOBN(0x4ea109e4, 0x280b5a5b)}}, + {{TOBN(0x5741a7ac, 0xb40961bf), TOBN(0x4ada5937, 0x6aa56bfa), + TOBN(0x7feb9145, 0x02b765d1), TOBN(0x561e97be, 0xe6ad1582)}, + {TOBN(0xbbc4a5b6, 0xda3982f5), TOBN(0x0c2659ed, 0xb546f468), + TOBN(0xb8e7e6aa, 0x59612d20), TOBN(0xd83dfe20, 0xac19e8e0)}}, + {{TOBN(0x8530c45f, 0xb835398c), TOBN(0x6106a8bf, 0xb38a41c2), + TOBN(0x21e8f9a6, 0x35f5dcdb), TOBN(0x39707137, 0xcae498ed)}, + {TOBN(0x70c23834, 0xd8249f00), TOBN(0x9f14b58f, 0xab2537a0), + TOBN(0xd043c365, 0x5f61c0c2), TOBN(0xdc5926d6, 0x09a194a7)}}, + {{TOBN(0xddec0339, 0x8e77738a), TOBN(0xd07a63ef, 0xfba46426), + TOBN(0x2e58e79c, 0xee7f6e86), TOBN(0xe59b0459, 0xff32d241)}, + {TOBN(0xc5ec84e5, 0x20fa0338), TOBN(0x97939ac8, 0xeaff5ace), + TOBN(0x0310a4e3, 0xb4a38313), TOBN(0x9115fba2, 0x8f9d9885)}}, + {{TOBN(0x8dd710c2, 0x5fadf8c3), TOBN(0x66be38a2, 0xce19c0e2), + TOBN(0xd42a279c, 0x4cfe5022), TOBN(0x597bb530, 0x0e24e1b8)}, + {TOBN(0x3cde86b7, 0xc153ca7f), TOBN(0xa8d30fb3, 0x707d63bd), + TOBN(0xac905f92, 0xbd60d21e), TOBN(0x98e7ffb6, 0x7b9a54ab)}}, + {{TOBN(0xd7147df8, 0xe9726a30), TOBN(0xb5e216ff, 0xafce3533), + TOBN(0xb550b799, 0x2ff1ec40), TOBN(0x6b613b87, 0xa1e953fd)}, + {TOBN(0x87b88dba, 0x792d5610), TOBN(0x2ee1270a, 0xa190fbe1), + TOBN(0x02f4e2dc, 0x2ef581da), TOBN(0x016530e4, 0xeff82a95)}}, + {{TOBN(0xcbb93dfd, 0x8fd6ee89), TOBN(0x16d3d986, 0x46848fff), + TOBN(0x600eff24, 0x1da47adf), TOBN(0x1b9754a0, 0x0ad47a71)}, + {TOBN(0x8f9266df, 0x70c33b98), TOBN(0xaadc87ae, 0xdf34186e), + TOBN(0x0d2ce8e1, 0x4ad24132), TOBN(0x8a47cbfc, 0x19946eba)}}, + {{TOBN(0x47feeb66, 0x62b5f3af), TOBN(0xcefab561, 0x0abb3734), + TOBN(0x449de60e, 0x19f35cb1), TOBN(0x39f8db14, 0x157f0eb9)}, + {TOBN(0xffaecc5b, 0x3c61bfd6), TOBN(0xa5a4d41d, 0x41216703), + TOBN(0x7f8fabed, 0x224e1cc2), TOBN(0x0d5a8186, 0x871ad953)}}, + {{TOBN(0xf10774f7, 0xd22da9a9), TOBN(0x45b8a678, 0xcc8a9b0d), + TOBN(0xd9c2e722, 0xbdc32cff), TOBN(0xbf71b5f5, 0x337202a5)}, + {TOBN(0x95c57f2f, 0x69fc4db9), TOBN(0xb6dad34c, 0x765d01e1), + TOBN(0x7e0bd13f, 0xcb904635), TOBN(0x61751253, 0x763a588c)}}, + {{TOBN(0xd85c2997, 0x81af2c2d), TOBN(0xc0f7d9c4, 0x81b9d7da), + TOBN(0x838a34ae, 0x08533e8d), TOBN(0x15c4cb08, 0x311d8311)}, + {TOBN(0x97f83285, 0x8e121e14), TOBN(0xeea7dc1e, 0x85000a5f), + TOBN(0x0c6059b6, 0x5d256274), TOBN(0xec9beace, 0xb95075c0)}}, + {{TOBN(0x173daad7, 0x1df97828), TOBN(0xbf851cb5, 0xa8937877), + TOBN(0xb083c594, 0x01646f3c), TOBN(0x3bad30cf, 0x50c6d352)}, + {TOBN(0xfeb2b202, 0x496bbcea), TOBN(0x3cf9fd4f, 0x18a1e8ba), + TOBN(0xd26de7ff, 0x1c066029), TOBN(0x39c81e9e, 0x4e9ed4f8)}}, + {{TOBN(0xd8be0cb9, 0x7b390d35), TOBN(0x01df2bbd, 0x964aab27), + TOBN(0x3e8c1a65, 0xc3ef64f8), TOBN(0x567291d1, 0x716ed1dd)}, + {TOBN(0x95499c6c, 0x5f5406d3), TOBN(0x71fdda39, 0x5ba8e23f), + TOBN(0xcfeb320e, 0xd5096ece), TOBN(0xbe7ba92b, 0xca66dd16)}}, + {{TOBN(0x4608d36b, 0xc6fb5a7d), TOBN(0xe3eea15a, 0x6d2dd0e0), + TOBN(0x75b0a3eb, 0x8f97a36a), TOBN(0xf59814cc, 0x1c83de1e)}, + {TOBN(0x56c9c5b0, 0x1c33c23f), TOBN(0xa96c1da4, 0x6faa4136), + TOBN(0x46bf2074, 0xde316551), TOBN(0x3b866e7b, 0x1f756c8f)}}, + {{TOBN(0x727727d8, 0x1495ed6b), TOBN(0xb2394243, 0xb682dce7), + TOBN(0x8ab8454e, 0x758610f3), TOBN(0xc243ce84, 0x857d72a4)}, + {TOBN(0x7b320d71, 0xdbbf370f), TOBN(0xff9afa37, 0x78e0f7ca), + TOBN(0x0119d1e0, 0xea7b523f), TOBN(0xb997f8cb, 0x058c7d42)}}, + {{TOBN(0x285bcd2a, 0x37bbb184), TOBN(0x51dcec49, 0xa45d1fa6), + TOBN(0x6ade3b64, 0xe29634cb), TOBN(0x080c94a7, 0x26b86ef1)}, + {TOBN(0xba583db1, 0x2283fbe3), TOBN(0x902bddc8, 0x5a9315ed), + TOBN(0x07c1ccb3, 0x86964bec), TOBN(0x78f4eacf, 0xb6258301)}}, + {{TOBN(0x4bdf3a49, 0x56f90823), TOBN(0xba0f5080, 0x741d777b), + TOBN(0x091d71c3, 0xf38bf760), TOBN(0x9633d50f, 0x9b625b02)}, + {TOBN(0x03ecb743, 0xb8c9de61), TOBN(0xb4751254, 0x5de74720), + TOBN(0x9f9defc9, 0x74ce1cb2), TOBN(0x774a4f6a, 0x00bd32ef)}}, + {{TOBN(0xaca385f7, 0x73848f22), TOBN(0x53dad716, 0xf3f8558e), + TOBN(0xab7b34b0, 0x93c471f9), TOBN(0xf530e069, 0x19644bc7)}, + {TOBN(0x3d9fb1ff, 0xdd59d31a), TOBN(0x4382e0df, 0x08daa795), + TOBN(0x165c6f4b, 0xd5cc88d7), TOBN(0xeaa392d5, 0x4a18c900)}}, + {{TOBN(0x94203c67, 0x648024ee), TOBN(0x188763f2, 0x8c2fabcd), + TOBN(0xa80f87ac, 0xbbaec835), TOBN(0x632c96e0, 0xf29d8d54)}, + {TOBN(0x29b0a60e, 0x4c00a95e), TOBN(0x2ef17f40, 0xe011e9fa), + TOBN(0xf6c0e1d1, 0x15b77223), TOBN(0xaaec2c62, 0x14b04e32)}}, + {{TOBN(0xd35688d8, 0x3d84e58c), TOBN(0x2af5094c, 0x958571db), + TOBN(0x4fff7e19, 0x760682a6), TOBN(0x4cb27077, 0xe39a407c)}, + {TOBN(0x0f59c547, 0x4ff0e321), TOBN(0x169f34a6, 0x1b34c8ff), + TOBN(0x2bff1096, 0x52bc1ba7), TOBN(0xa25423b7, 0x83583544)}}, + {{TOBN(0x5d55d5d5, 0x0ac8b782), TOBN(0xff6622ec, 0x2db3c892), + TOBN(0x48fce741, 0x6b8bb642), TOBN(0x31d6998c, 0x69d7e3dc)}, + {TOBN(0xdbaf8004, 0xcadcaed0), TOBN(0x801b0142, 0xd81d053c), + TOBN(0x94b189fc, 0x59630ec6), TOBN(0x120e9934, 0xaf762c8e)}}, + {{TOBN(0x53a29aa4, 0xfdc6a404), TOBN(0x19d8e01e, 0xa1909948), + TOBN(0x3cfcabf1, 0xd7e89681), TOBN(0x3321a50d, 0x4e132d37)}, + {TOBN(0xd0496863, 0xe9a86111), TOBN(0x8c0cde61, 0x06a3bc65), + TOBN(0xaf866c49, 0xfc9f8eef), TOBN(0x2066350e, 0xff7f5141)}}, + {{TOBN(0x4f8a4689, 0xe56ddfbd), TOBN(0xea1b0c07, 0xfe32983a), + TOBN(0x2b317462, 0x873cb8cb), TOBN(0x658deddc, 0x2d93229f)}, + {TOBN(0x65efaf4d, 0x0f64ef58), TOBN(0xfe43287d, 0x730cc7a8), + TOBN(0xaebc0c72, 0x3d047d70), TOBN(0x92efa539, 0xd92d26c9)}}, + {{TOBN(0x06e78457, 0x94b56526), TOBN(0x415cb80f, 0x0961002d), + TOBN(0x89e5c565, 0x76dcb10f), TOBN(0x8bbb6982, 0xff9259fe)}, + {TOBN(0x4fe8795b, 0x9abc2668), TOBN(0xb5d4f534, 0x1e678fb1), + TOBN(0x6601f3be, 0x7b7da2b9), TOBN(0x98da59e2, 0xa13d6805)}}, + {{TOBN(0x190d8ea6, 0x01799a52), TOBN(0xa20cec41, 0xb86d2952), + TOBN(0x3062ffb2, 0x7fff2a7c), TOBN(0x741b32e5, 0x79f19d37)}, + {TOBN(0xf80d8181, 0x4eb57d47), TOBN(0x7a2d0ed4, 0x16aef06b), + TOBN(0x09735fb0, 0x1cecb588), TOBN(0x1641caaa, 0xc6061f5b)}}}, + {{{TOBN(0x7f99824f, 0x20151427), TOBN(0x206828b6, 0x92430206), + TOBN(0xaa9097d7, 0xe1112357), TOBN(0xacf9a2f2, 0x09e414ec)}, + {TOBN(0xdbdac9da, 0x27915356), TOBN(0x7e0734b7, 0x001efee3), + TOBN(0x54fab5bb, 0xd2b288e2), TOBN(0x4c630fc4, 0xf62dd09c)}}, + {{TOBN(0x8537107a, 0x1ac2703b), TOBN(0xb49258d8, 0x6bc857b5), + TOBN(0x57df14de, 0xbcdaccd1), TOBN(0x24ab68d7, 0xc4ae8529)}, + {TOBN(0x7ed8b5d4, 0x734e59d0), TOBN(0x5f8740c8, 0xc495cc80), + TOBN(0x84aedd5a, 0x291db9b3), TOBN(0x80b360f8, 0x4fb995be)}}, + {{TOBN(0xae915f5d, 0x5fa067d1), TOBN(0x4134b57f, 0x9668960c), + TOBN(0xbd3656d6, 0xa48edaac), TOBN(0xdac1e3e4, 0xfc1d7436)}, + {TOBN(0x674ff869, 0xd81fbb26), TOBN(0x449ed3ec, 0xb26c33d4), + TOBN(0x85138705, 0xd94203e8), TOBN(0xccde538b, 0xbeeb6f4a)}}, + {{TOBN(0x55d5c68d, 0xa61a76fa), TOBN(0x598b441d, 0xca1554dc), + TOBN(0xd39923b9, 0x773b279c), TOBN(0x33331d3c, 0x36bf9efc)}, + {TOBN(0x2d4c848e, 0x298de399), TOBN(0xcfdb8e77, 0xa1a27f56), + TOBN(0x94c855ea, 0x57b8ab70), TOBN(0xdcdb9dae, 0x6f7879ba)}}, + {{TOBN(0x7bdff8c2, 0x019f2a59), TOBN(0xb3ce5bb3, 0xcb4fbc74), + TOBN(0xea907f68, 0x8a9173dd), TOBN(0x6cd3d0d3, 0x95a75439)}, + {TOBN(0x92ecc4d6, 0xefed021c), TOBN(0x09a9f9b0, 0x6a77339a), + TOBN(0x87ca6b15, 0x7188c64a), TOBN(0x10c29968, 0x44899158)}}, + {{TOBN(0x5859a229, 0xed6e82ef), TOBN(0x16f338e3, 0x65ebaf4e), + TOBN(0x0cd31387, 0x5ead67ae), TOBN(0x1c73d228, 0x54ef0bb4)}, + {TOBN(0x4cb55131, 0x74a5c8c7), TOBN(0x01cd2970, 0x7f69ad6a), + TOBN(0xa04d00dd, 0xe966f87e), TOBN(0xd96fe447, 0x0b7b0321)}}, + {{TOBN(0x342ac06e, 0x88fbd381), TOBN(0x02cd4a84, 0x5c35a493), + TOBN(0xe8fa89de, 0x54f1bbcd), TOBN(0x341d6367, 0x2575ed4c)}, + {TOBN(0xebe357fb, 0xd238202b), TOBN(0x600b4d1a, 0xa984ead9), + TOBN(0xc35c9f44, 0x52436ea0), TOBN(0x96fe0a39, 0xa370751b)}}, + {{TOBN(0x4c4f0736, 0x7f636a38), TOBN(0x9f943fb7, 0x0e76d5cb), + TOBN(0xb03510ba, 0xa8b68b8b), TOBN(0xc246780a, 0x9ed07a1f)}, + {TOBN(0x3c051415, 0x6d549fc2), TOBN(0xc2953f31, 0x607781ca), + TOBN(0x955e2c69, 0xd8d95413), TOBN(0xb300fadc, 0x7bd282e3)}}, + {{TOBN(0x81fe7b50, 0x87e9189f), TOBN(0xdb17375c, 0xf42dda27), + TOBN(0x22f7d896, 0xcf0a5904), TOBN(0xa0e57c5a, 0xebe348e6)}, + {TOBN(0xa61011d3, 0xf40e3c80), TOBN(0xb1189321, 0x8db705c5), + TOBN(0x4ed9309e, 0x50fedec3), TOBN(0xdcf14a10, 0x4d6d5c1d)}}, + {{TOBN(0x056c265b, 0x55691342), TOBN(0xe8e08504, 0x91049dc7), + TOBN(0x131329f5, 0xc9bae20a), TOBN(0x96c8b3e8, 0xd9dccdb4)}, + {TOBN(0x8c5ff838, 0xfb4ee6b4), TOBN(0xfc5a9aeb, 0x41e8ccf0), + TOBN(0x7417b764, 0xfae050c6), TOBN(0x0953c3d7, 0x00452080)}}, + {{TOBN(0x21372682, 0x38dfe7e8), TOBN(0xea417e15, 0x2bb79d4b), + TOBN(0x59641f1c, 0x76e7cf2d), TOBN(0x271e3059, 0xea0bcfcc)}, + {TOBN(0x624c7dfd, 0x7253ecbd), TOBN(0x2f552e25, 0x4fca6186), + TOBN(0xcbf84ecd, 0x4d866e9c), TOBN(0x73967709, 0xf68d4610)}}, + {{TOBN(0xa14b1163, 0xc27901b4), TOBN(0xfd9236e0, 0x899b8bf3), + TOBN(0x42b091ec, 0xcbc6da0a), TOBN(0xbb1dac6f, 0x5ad1d297)}, + {TOBN(0x80e61d53, 0xa91cf76e), TOBN(0x4110a412, 0xd31f1ee7), + TOBN(0x2d87c3ba, 0x13efcf77), TOBN(0x1f374bb4, 0xdf450d76)}}, + {{TOBN(0x5e78e2f2, 0x0d188dab), TOBN(0xe3968ed0, 0xf4b885ef), + TOBN(0x46c0568e, 0x7314570f), TOBN(0x31616338, 0x01170521)}, + {TOBN(0x18e1e7e2, 0x4f0c8afe), TOBN(0x4caa75ff, 0xdeea78da), + TOBN(0x82db67f2, 0x7c5d8a51), TOBN(0x36a44d86, 0x6f505370)}}, + {{TOBN(0xd72c5bda, 0x0333974f), TOBN(0x5db516ae, 0x27a70146), + TOBN(0x34705281, 0x210ef921), TOBN(0xbff17a8f, 0x0c9c38e5)}, + {TOBN(0x78f4814e, 0x12476da1), TOBN(0xc1e16613, 0x33c16980), + TOBN(0x9e5b386f, 0x424d4bca), TOBN(0x4c274e87, 0xc85740de)}}, + {{TOBN(0xb6a9b88d, 0x6c2f5226), TOBN(0x14d1b944, 0x550d7ca8), + TOBN(0x580c85fc, 0x1fc41709), TOBN(0xc1da368b, 0x54c6d519)}, + {TOBN(0x2b0785ce, 0xd5113cf7), TOBN(0x0670f633, 0x5a34708f), + TOBN(0x46e23767, 0x15cc3f88), TOBN(0x1b480cfa, 0x50c72c8f)}}, + {{TOBN(0x20288602, 0x4147519a), TOBN(0xd0981eac, 0x26b372f0), + TOBN(0xa9d4a7ca, 0xa785ebc8), TOBN(0xd953c50d, 0xdbdf58e9)}, + {TOBN(0x9d6361cc, 0xfd590f8f), TOBN(0x72e9626b, 0x44e6c917), + TOBN(0x7fd96110, 0x22eb64cf), TOBN(0x863ebb7e, 0x9eb288f3)}}, + {{TOBN(0x6e6ab761, 0x6aca8ee7), TOBN(0x97d10b39, 0xd7b40358), + TOBN(0x1687d377, 0x1e5feb0d), TOBN(0xc83e50e4, 0x8265a27a)}, + {TOBN(0x8f75a9fe, 0xc954b313), TOBN(0xcc2e8f47, 0x310d1f61), + TOBN(0xf5ba81c5, 0x6557d0e0), TOBN(0x25f9680c, 0x3eaf6207)}}, + {{TOBN(0xf95c6609, 0x4354080b), TOBN(0x5225bfa5, 0x7bf2fe1c), + TOBN(0xc5c004e2, 0x5c7d98fa), TOBN(0x3561bf1c, 0x019aaf60)}, + {TOBN(0x5e6f9f17, 0xba151474), TOBN(0xdec2f934, 0xb04f6eca), + TOBN(0x64e368a1, 0x269acb1e), TOBN(0x1332d9e4, 0x0cdda493)}}, + {{TOBN(0x60d6cf69, 0xdf23de05), TOBN(0x66d17da2, 0x009339a0), + TOBN(0x9fcac985, 0x0a693923), TOBN(0xbcf057fc, 0xed7c6a6d)}, + {TOBN(0xc3c5c8c5, 0xf0b5662c), TOBN(0x25318dd8, 0xdcba4f24), + TOBN(0x60e8cb75, 0x082b69ff), TOBN(0x7c23b3ee, 0x1e728c01)}}, + {{TOBN(0x15e10a0a, 0x097e4403), TOBN(0xcb3d0a86, 0x19854665), + TOBN(0x88d8e211, 0xd67d4826), TOBN(0xb39af66e, 0x0b9d2839)}, + {TOBN(0xa5f94588, 0xbd475ca8), TOBN(0xe06b7966, 0xc077b80b), + TOBN(0xfedb1485, 0xda27c26c), TOBN(0xd290d33a, 0xfe0fd5e0)}}, + {{TOBN(0xa40bcc47, 0xf34fb0fa), TOBN(0xb4760cc8, 0x1fb1ab09), + TOBN(0x8fca0993, 0xa273bfe3), TOBN(0x13e4fe07, 0xf70b213c)}, + {TOBN(0x3bcdb992, 0xfdb05163), TOBN(0x8c484b11, 0x0c2b19b6), + TOBN(0x1acb815f, 0xaaf2e3e2), TOBN(0xc6905935, 0xb89ff1b4)}}, + {{TOBN(0xb2ad6f9d, 0x586e74e1), TOBN(0x488883ad, 0x67b80484), + TOBN(0x758aa2c7, 0x369c3ddb), TOBN(0x8ab74e69, 0x9f9afd31)}, + {TOBN(0x10fc2d28, 0x5e21beb1), TOBN(0x3484518a, 0x318c42f9), + TOBN(0x377427dc, 0x53cf40c3), TOBN(0x9de0781a, 0x391bc1d9)}}, + {{TOBN(0x8faee858, 0x693807e1), TOBN(0xa3865327, 0x4e81ccc7), + TOBN(0x02c30ff2, 0x6f835b84), TOBN(0xb604437b, 0x0d3d38d4)}, + {TOBN(0xb3fc8a98, 0x5ca1823d), TOBN(0xb82f7ec9, 0x03be0324), + TOBN(0xee36d761, 0xcf684a33), TOBN(0x5a01df0e, 0x9f29bf7d)}}, + {{TOBN(0x686202f3, 0x1306583d), TOBN(0x05b10da0, 0x437c622e), + TOBN(0xbf9aaa0f, 0x076a7bc8), TOBN(0x25e94efb, 0x8f8f4e43)}, + {TOBN(0x8a35c9b7, 0xfa3dc26d), TOBN(0xe0e5fb93, 0x96ff03c5), + TOBN(0xa77e3843, 0xebc394ce), TOBN(0xcede6595, 0x8361de60)}}, + {{TOBN(0xd27c22f6, 0xa1993545), TOBN(0xab01cc36, 0x24d671ba), + TOBN(0x63fa2877, 0xa169c28e), TOBN(0x925ef904, 0x2eb08376)}, + {TOBN(0x3b2fa3cf, 0x53aa0b32), TOBN(0xb27beb5b, 0x71c49d7a), + TOBN(0xb60e1834, 0xd105e27f), TOBN(0xd6089788, 0x4f68570d)}}, + {{TOBN(0x23094ce0, 0xd6fbc2ac), TOBN(0x738037a1, 0x815ff551), + TOBN(0xda73b1bb, 0x6bef119c), TOBN(0xdcf6c430, 0xeef506ba)}, + {TOBN(0x00e4fe7b, 0xe3ef104a), TOBN(0xebdd9a2c, 0x0a065628), + TOBN(0x853a81c3, 0x8792043e), TOBN(0x22ad6ece, 0xb3b59108)}}, + {{TOBN(0x9fb813c0, 0x39cd297d), TOBN(0x8ec7e16e, 0x05bda5d9), + TOBN(0x2834797c, 0x0d104b96), TOBN(0xcc11a2e7, 0x7c511510)}, + {TOBN(0x96ca5a53, 0x96ee6380), TOBN(0x054c8655, 0xcea38742), + TOBN(0xb5946852, 0xd54dfa7d), TOBN(0x97c422e7, 0x1f4ab207)}}, + {{TOBN(0xbf907509, 0x0c22b540), TOBN(0x2cde42aa, 0xb7c267d4), + TOBN(0xba18f9ed, 0x5ab0d693), TOBN(0x3ba62aa6, 0x6e4660d9)}, + {TOBN(0xb24bf97b, 0xab9ea96a), TOBN(0x5d039642, 0xe3b60e32), + TOBN(0x4e6a4506, 0x7c4d9bd5), TOBN(0x666c5b9e, 0x7ed4a6a4)}}, + {{TOBN(0xfa3fdcd9, 0x8edbd7cc), TOBN(0x4660bb87, 0xc6ccd753), + TOBN(0x9ae90820, 0x21e6b64f), TOBN(0x8a56a713, 0xb36bfb3f)}, + {TOBN(0xabfce096, 0x5726d47f), TOBN(0x9eed01b2, 0x0b1a9a7f), + TOBN(0x30e9cad4, 0x4eb74a37), TOBN(0x7b2524cc, 0x53e9666d)}}, + {{TOBN(0x6a29683b, 0x8f4b002f), TOBN(0xc2200d7a, 0x41f4fc20), + TOBN(0xcf3af47a, 0x3a338acc), TOBN(0x6539a4fb, 0xe7128975)}, + {TOBN(0xcec31c14, 0xc33c7fcf), TOBN(0x7eb6799b, 0xc7be322b), + TOBN(0x119ef4e9, 0x6646f623), TOBN(0x7b7a26a5, 0x54d7299b)}}, + {{TOBN(0xcb37f08d, 0x403f46f2), TOBN(0x94b8fc43, 0x1a0ec0c7), + TOBN(0xbb8514e3, 0xc332142f), TOBN(0xf3ed2c33, 0xe80d2a7a)}, + {TOBN(0x8d2080af, 0xb639126c), TOBN(0xf7b6be60, 0xe3553ade), + TOBN(0x3950aa9f, 0x1c7e2b09), TOBN(0x847ff958, 0x6410f02b)}}, + {{TOBN(0x877b7cf5, 0x678a31b0), TOBN(0xd50301ae, 0x3998b620), + TOBN(0x734257c5, 0xc00fb396), TOBN(0xf9fb18a0, 0x04e672a6)}, + {TOBN(0xff8bd8eb, 0xe8758851), TOBN(0x1e64e4c6, 0x5d99ba44), + TOBN(0x4b8eaedf, 0x7dfd93b7), TOBN(0xba2f2a98, 0x04e76b8c)}}, + {{TOBN(0x7d790cba, 0xe8053433), TOBN(0xc8e725a0, 0x3d2c9585), + TOBN(0x58c5c476, 0xcdd8f5ed), TOBN(0xd106b952, 0xefa9fe1d)}, + {TOBN(0x3c5c775b, 0x0eff13a9), TOBN(0x242442ba, 0xe057b930), + TOBN(0xe9f458d4, 0xc9b70cbd), TOBN(0x69b71448, 0xa3cdb89a)}}, + {{TOBN(0x41ee46f6, 0x0e2ed742), TOBN(0x573f1045, 0x40067493), + TOBN(0xb1e154ff, 0x9d54c304), TOBN(0x2ad0436a, 0x8d3a7502)}, + {TOBN(0xee4aaa2d, 0x431a8121), TOBN(0xcd38b3ab, 0x886f11ed), + TOBN(0x57d49ea6, 0x034a0eb7), TOBN(0xd2b773bd, 0xf7e85e58)}}, + {{TOBN(0x4a559ac4, 0x9b5c1f14), TOBN(0xc444be1a, 0x3e54df2b), + TOBN(0x13aad704, 0xeda41891), TOBN(0xcd927bec, 0x5eb5c788)}, + {TOBN(0xeb3c8516, 0xe48c8a34), TOBN(0x1b7ac812, 0x4b546669), + TOBN(0x1815f896, 0x594df8ec), TOBN(0x87c6a79c, 0x79227865)}}, + {{TOBN(0xae02a2f0, 0x9b56ddbd), TOBN(0x1339b5ac, 0x8a2f1cf3), + TOBN(0xf2b569c7, 0x839dff0d), TOBN(0xb0b9e864, 0xfee9a43d)}, + {TOBN(0x4ff8ca41, 0x77bb064e), TOBN(0x145a2812, 0xfd249f63), + TOBN(0x3ab7beac, 0xf86f689a), TOBN(0x9bafec27, 0x01d35f5e)}}, + {{TOBN(0x28054c65, 0x4265aa91), TOBN(0xa4b18304, 0x035efe42), + TOBN(0x6887b0e6, 0x9639dec7), TOBN(0xf4b8f6ad, 0x3d52aea5)}, + {TOBN(0xfb9293cc, 0x971a8a13), TOBN(0x3f159e5d, 0x4c934d07), + TOBN(0x2c50e9b1, 0x09acbc29), TOBN(0x08eb65e6, 0x7154d129)}}, + {{TOBN(0x4feff589, 0x30b75c3e), TOBN(0x0bb82fe2, 0x94491c93), + TOBN(0xd8ac377a, 0x89af62bb), TOBN(0xd7b51490, 0x9685e49f)}, + {TOBN(0xabca9a7b, 0x04497f19), TOBN(0x1b35ed0a, 0x1a7ad13f), + TOBN(0x6b601e21, 0x3ec86ed6), TOBN(0xda91fcb9, 0xce0c76f1)}}, + {{TOBN(0x9e28507b, 0xd7ab27e1), TOBN(0x7c19a555, 0x63945b7b), + TOBN(0x6b43f0a1, 0xaafc9827), TOBN(0x443b4fbd, 0x3aa55b91)}, + {TOBN(0x962b2e65, 0x6962c88f), TOBN(0x139da8d4, 0xce0db0ca), + TOBN(0xb93f05dd, 0x1b8d6c4f), TOBN(0x779cdff7, 0x180b9824)}}, + {{TOBN(0xbba23fdd, 0xae57c7b7), TOBN(0x345342f2, 0x1b932522), + TOBN(0xfd9c80fe, 0x556d4aa3), TOBN(0xa03907ba, 0x6525bb61)}, + {TOBN(0x38b010e1, 0xff218933), TOBN(0xc066b654, 0xaa52117b), + TOBN(0x8e141920, 0x94f2e6ea), TOBN(0x66a27dca, 0x0d32f2b2)}}, + {{TOBN(0x69c7f993, 0x048b3717), TOBN(0xbf5a989a, 0xb178ae1c), + TOBN(0x49fa9058, 0x564f1d6b), TOBN(0x27ec6e15, 0xd31fde4e)}, + {TOBN(0x4cce0373, 0x7276e7fc), TOBN(0x64086d79, 0x89d6bf02), + TOBN(0x5a72f046, 0x4ccdd979), TOBN(0x909c3566, 0x47775631)}}, + {{TOBN(0x1c07bc6b, 0x75dd7125), TOBN(0xb4c6bc97, 0x87a0428d), + TOBN(0x507ece52, 0xfdeb6b9d), TOBN(0xfca56512, 0xb2c95432)}, + {TOBN(0x15d97181, 0xd0e8bd06), TOBN(0x384dd317, 0xc6bb46ea), + TOBN(0x5441ea20, 0x3952b624), TOBN(0xbcf70dee, 0x4e7dc2fb)}}, + {{TOBN(0x372b016e, 0x6628e8c3), TOBN(0x07a0d667, 0xb60a7522), + TOBN(0xcf05751b, 0x0a344ee2), TOBN(0x0ec09a48, 0x118bdeec)}, + {TOBN(0x6e4b3d4e, 0xd83dce46), TOBN(0x43a6316d, 0x99d2fc6e), + TOBN(0xa99d8989, 0x56cf044c), TOBN(0x7c7f4454, 0xae3e5fb7)}}, + {{TOBN(0xb2e6b121, 0xfbabbe92), TOBN(0x281850fb, 0xe1330076), + TOBN(0x093581ec, 0x97890015), TOBN(0x69b1dded, 0x75ff77f5)}, + {TOBN(0x7cf0b18f, 0xab105105), TOBN(0x953ced31, 0xa89ccfef), + TOBN(0x3151f85f, 0xeb914009), TOBN(0x3c9f1b87, 0x88ed48ad)}}, + {{TOBN(0xc9aba1a1, 0x4a7eadcb), TOBN(0x928e7501, 0x522e71cf), + TOBN(0xeaede727, 0x3a2e4f83), TOBN(0x467e10d1, 0x1ce3bbd3)}, + {TOBN(0xf3442ac3, 0xb955dcf0), TOBN(0xba96307d, 0xd3d5e527), + TOBN(0xf763a10e, 0xfd77f474), TOBN(0x5d744bd0, 0x6a6e1ff0)}}, + {{TOBN(0xd287282a, 0xa777899e), TOBN(0xe20eda8f, 0xd03f3cde), + TOBN(0x6a7e75bb, 0x50b07d31), TOBN(0x0b7e2a94, 0x6f379de4)}, + {TOBN(0x31cb64ad, 0x19f593cf), TOBN(0x7b1a9e4f, 0x1e76ef1d), + TOBN(0xe18c9c9d, 0xb62d609c), TOBN(0x439bad6d, 0xe779a650)}}, + {{TOBN(0x219d9066, 0xe032f144), TOBN(0x1db632b8, 0xe8b2ec6a), + TOBN(0xff0d0fd4, 0xfda12f78), TOBN(0x56fb4c2d, 0x2a25d265)}, + {TOBN(0x5f4e2ee1, 0x255a03f1), TOBN(0x61cd6af2, 0xe96af176), + TOBN(0xe0317ba8, 0xd068bc97), TOBN(0x927d6bab, 0x264b988e)}}, + {{TOBN(0xa18f07e0, 0xe90fb21e), TOBN(0x00fd2b80, 0xbba7fca1), + TOBN(0x20387f27, 0x95cd67b5), TOBN(0x5b89a4e7, 0xd39707f7)}, + {TOBN(0x8f83ad3f, 0x894407ce), TOBN(0xa0025b94, 0x6c226132), + TOBN(0xc79563c7, 0xf906c13b), TOBN(0x5f548f31, 0x4e7bb025)}}, + {{TOBN(0x2b4c6b8f, 0xeac6d113), TOBN(0xa67e3f9c, 0x0e813c76), + TOBN(0x3982717c, 0x3fe1f4b9), TOBN(0x58865819, 0x26d8050e)}, + {TOBN(0x99f3640c, 0xf7f06f20), TOBN(0xdc610216, 0x2a66ebc2), + TOBN(0x52f2c175, 0x767a1e08), TOBN(0x05660e1a, 0x5999871b)}}, + {{TOBN(0x6b0f1762, 0x6d3c4693), TOBN(0xf0e7d627, 0x37ed7bea), + TOBN(0xc51758c7, 0xb75b226d), TOBN(0x40a88628, 0x1f91613b)}, + {TOBN(0x889dbaa7, 0xbbb38ce0), TOBN(0xe0404b65, 0xbddcad81), + TOBN(0xfebccd3a, 0x8bc9671f), TOBN(0xfbf9a357, 0xee1f5375)}}, + {{TOBN(0x5dc169b0, 0x28f33398), TOBN(0xb07ec11d, 0x72e90f65), + TOBN(0xae7f3b4a, 0xfaab1eb1), TOBN(0xd970195e, 0x5f17538a)}, + {TOBN(0x52b05cbe, 0x0181e640), TOBN(0xf5debd62, 0x2643313d), + TOBN(0x76148154, 0x5df31f82), TOBN(0x23e03b33, 0x3a9e13c5)}}, + {{TOBN(0xff758949, 0x4fde0c1f), TOBN(0xbf8a1abe, 0xe5b6ec20), + TOBN(0x702278fb, 0x87e1db6c), TOBN(0xc447ad7a, 0x35ed658f)}, + {TOBN(0x48d4aa38, 0x03d0ccf2), TOBN(0x80acb338, 0x819a7c03), + TOBN(0x9bc7c89e, 0x6e17cecc), TOBN(0x46736b8b, 0x03be1d82)}}, + {{TOBN(0xd65d7b60, 0xc0432f96), TOBN(0xddebe7a3, 0xdeb5442f), + TOBN(0x79a25307, 0x7dff69a2), TOBN(0x37a56d94, 0x02cf3122)}, + {TOBN(0x8bab8aed, 0xf2350d0a), TOBN(0x13c3f276, 0x037b0d9a), + TOBN(0xc664957c, 0x44c65cae), TOBN(0x88b44089, 0xc2e71a88)}}, + {{TOBN(0xdb88e5a3, 0x5cb02664), TOBN(0x5d4c0bf1, 0x8686c72e), + TOBN(0xea3d9b62, 0xa682d53e), TOBN(0x9b605ef4, 0x0b2ad431)}, + {TOBN(0x71bac202, 0xc69645d0), TOBN(0xa115f03a, 0x6a1b66e7), + TOBN(0xfe2c563a, 0x158f4dc4), TOBN(0xf715b3a0, 0x4d12a78c)}}, + {{TOBN(0x8f7f0a48, 0xd413213a), TOBN(0x2035806d, 0xc04becdb), + TOBN(0xecd34a99, 0x5d8587f5), TOBN(0x4d8c3079, 0x9f6d3a71)}, + {TOBN(0x1b2a2a67, 0x8d95a8f6), TOBN(0xc58c9d7d, 0xf2110d0d), + TOBN(0xdeee81d5, 0xcf8fba3f), TOBN(0xa42be3c0, 0x0c7cdf68)}}, + {{TOBN(0x2126f742, 0xd43b5eaa), TOBN(0x054a0766, 0xdfa59b85), + TOBN(0x9d0d5e36, 0x126bfd45), TOBN(0xa1f8fbd7, 0x384f8a8f)}, + {TOBN(0x317680f5, 0xd563fccc), TOBN(0x48ca5055, 0xf280a928), + TOBN(0xe00b81b2, 0x27b578cf), TOBN(0x10aad918, 0x2994a514)}}, + {{TOBN(0xd9e07b62, 0xb7bdc953), TOBN(0x9f0f6ff2, 0x5bc086dd), + TOBN(0x09d1ccff, 0x655eee77), TOBN(0x45475f79, 0x5bef7df1)}, + {TOBN(0x3faa28fa, 0x86f702cc), TOBN(0x92e60905, 0x0f021f07), + TOBN(0xe9e62968, 0x7f8fa8c6), TOBN(0xbd71419a, 0xf036ea2c)}}, + {{TOBN(0x171ee1cc, 0x6028da9a), TOBN(0x5352fe1a, 0xc251f573), + TOBN(0xf8ff236e, 0x3fa997f4), TOBN(0xd831b6c9, 0xa5749d5f)}, + {TOBN(0x7c872e1d, 0xe350e2c2), TOBN(0xc56240d9, 0x1e0ce403), + TOBN(0xf9deb077, 0x6974f5cb), TOBN(0x7d50ba87, 0x961c3728)}}, + {{TOBN(0xd6f89426, 0x5a3a2518), TOBN(0xcf817799, 0xc6303d43), + TOBN(0x510a0471, 0x619e5696), TOBN(0xab049ff6, 0x3a5e307b)}, + {TOBN(0xe4cdf9b0, 0xfeb13ec7), TOBN(0xd5e97117, 0x9d8ff90c), + TOBN(0xf6f64d06, 0x9afa96af), TOBN(0x00d0bf5e, 0x9d2012a2)}}, + {{TOBN(0xe63f301f, 0x358bcdc0), TOBN(0x07689e99, 0x0a9d47f8), + TOBN(0x1f689e2f, 0x4f43d43a), TOBN(0x4d542a16, 0x90920904)}, + {TOBN(0xaea293d5, 0x9ca0a707), TOBN(0xd061fe45, 0x8ac68065), + TOBN(0x1033bf1b, 0x0090008c), TOBN(0x29749558, 0xc08a6db6)}}, + {{TOBN(0x74b5fc59, 0xc1d5d034), TOBN(0xf712e9f6, 0x67e215e0), + TOBN(0xfd520cbd, 0x860200e6), TOBN(0x0229acb4, 0x3ea22588)}, + {TOBN(0x9cd1e14c, 0xfff0c82e), TOBN(0x87684b62, 0x59c69e73), + TOBN(0xda85e61c, 0x96ccb989), TOBN(0x2d5dbb02, 0xa3d06493)}}, + {{TOBN(0xf22ad33a, 0xe86b173c), TOBN(0xe8e41ea5, 0xa79ff0e3), + TOBN(0x01d2d725, 0xdd0d0c10), TOBN(0x31f39088, 0x032d28f9)}, + {TOBN(0x7b3f71e1, 0x7829839e), TOBN(0x0cf691b4, 0x4502ae58), + TOBN(0xef658dbd, 0xbefc6115), TOBN(0xa5cd6ee5, 0xb3ab5314)}}, + {{TOBN(0x206c8d7b, 0x5f1d2347), TOBN(0x794645ba, 0x4cc2253a), + TOBN(0xd517d8ff, 0x58389e08), TOBN(0x4fa20dee, 0x9f847288)}, + {TOBN(0xeba072d8, 0xd797770a), TOBN(0x7360c91d, 0xbf429e26), + TOBN(0x7200a3b3, 0x80af8279), TOBN(0x6a1c9150, 0x82dadce3)}}, + {{TOBN(0x0ee6d3a7, 0xc35d8794), TOBN(0x042e6558, 0x0356bae5), + TOBN(0x9f59698d, 0x643322fd), TOBN(0x9379ae15, 0x50a61967)}, + {TOBN(0x64b9ae62, 0xfcc9981e), TOBN(0xaed3d631, 0x6d2934c6), + TOBN(0x2454b302, 0x5e4e65eb), TOBN(0xab09f647, 0xf9950428)}}}, + {{{TOBN(0xb2083a12, 0x22248acc), TOBN(0x1f6ec0ef, 0x3264e366), + TOBN(0x5659b704, 0x5afdee28), TOBN(0x7a823a40, 0xe6430bb5)}, + {TOBN(0x24592a04, 0xe1900a79), TOBN(0xcde09d4a, 0xc9ee6576), + TOBN(0x52b6463f, 0x4b5ea54a), TOBN(0x1efe9ed3, 0xd3ca65a7)}}, + {{TOBN(0xe27a6dbe, 0x305406dd), TOBN(0x8eb7dc7f, 0xdd5d1957), + TOBN(0xf54a6876, 0x387d4d8f), TOBN(0x9c479409, 0xc7762de4)}, + {TOBN(0xbe4d5b5d, 0x99b30778), TOBN(0x25380c56, 0x6e793682), + TOBN(0x602d37f3, 0xdac740e3), TOBN(0x140deabe, 0x1566e4ae)}}, + {{TOBN(0x4481d067, 0xafd32acf), TOBN(0xd8f0fcca, 0xe1f71ccf), + TOBN(0xd208dd0c, 0xb596f2da), TOBN(0xd049d730, 0x9aad93f9)}, + {TOBN(0xc79f263d, 0x42ab580e), TOBN(0x09411bb1, 0x23f707b4), + TOBN(0x8cfde1ff, 0x835e0eda), TOBN(0x72707490, 0x90f03402)}}, + {{TOBN(0xeaee6126, 0xc49a861e), TOBN(0x024f3b65, 0xe14f0d06), + TOBN(0x51a3f1e8, 0xc69bfc17), TOBN(0xc3c3a8e9, 0xa7686381)}, + {TOBN(0x3400752c, 0xb103d4c8), TOBN(0x02bc4613, 0x9218b36b), + TOBN(0xc67f75eb, 0x7651504a), TOBN(0xd6848b56, 0xd02aebfa)}}, + {{TOBN(0xbd9802e6, 0xc30fa92b), TOBN(0x5a70d96d, 0x9a552784), + TOBN(0x9085c4ea, 0x3f83169b), TOBN(0xfa9423bb, 0x06908228)}, + {TOBN(0x2ffebe12, 0xfe97a5b9), TOBN(0x85da6049, 0x71b99118), + TOBN(0x9cbc2f7f, 0x63178846), TOBN(0xfd96bc70, 0x9153218e)}}, + {{TOBN(0x958381db, 0x1782269b), TOBN(0xae34bf79, 0x2597e550), + TOBN(0xbb5c6064, 0x5f385153), TOBN(0x6f0e96af, 0xe3088048)}, + {TOBN(0xbf6a0215, 0x77884456), TOBN(0xb3b5688c, 0x69310ea7), + TOBN(0x17c94295, 0x04fad2de), TOBN(0xe020f0e5, 0x17896d4d)}}, + {{TOBN(0x730ba0ab, 0x0976505f), TOBN(0x567f6813, 0x095e2ec5), + TOBN(0x47062010, 0x6331ab71), TOBN(0x72cfa977, 0x41d22b9f)}, + {TOBN(0x33e55ead, 0x8a2373da), TOBN(0xa8d0d5f4, 0x7ba45a68), + TOBN(0xba1d8f9c, 0x03029d15), TOBN(0x8f34f1cc, 0xfc55b9f3)}}, + {{TOBN(0xcca4428d, 0xbbe5a1a9), TOBN(0x8187fd5f, 0x3126bd67), + TOBN(0x0036973a, 0x48105826), TOBN(0xa39b6663, 0xb8bd61a0)}, + {TOBN(0x6d42deef, 0x2d65a808), TOBN(0x4969044f, 0x94636b19), + TOBN(0xf611ee47, 0xdd5d564c), TOBN(0x7b2f3a49, 0xd2873077)}}, + {{TOBN(0x94157d45, 0x300eb294), TOBN(0x2b2a656e, 0x169c1494), + TOBN(0xc000dd76, 0xd3a47aa9), TOBN(0xa2864e4f, 0xa6243ea4)}, + {TOBN(0x82716c47, 0xdb89842e), TOBN(0x12dfd7d7, 0x61479fb7), + TOBN(0x3b9a2c56, 0xe0b2f6dc), TOBN(0x46be862a, 0xd7f85d67)}}, + {{TOBN(0x03b0d8dd, 0x0f82b214), TOBN(0x460c34f9, 0xf103cbc6), + TOBN(0xf32e5c03, 0x18d79e19), TOBN(0x8b8888ba, 0xa84117f8)}, + {TOBN(0x8f3c37dc, 0xc0722677), TOBN(0x10d21be9, 0x1c1c0f27), + TOBN(0xd47c8468, 0xe0f7a0c6), TOBN(0x9bf02213, 0xadecc0e0)}}, + {{TOBN(0x0baa7d12, 0x42b48b99), TOBN(0x1bcb665d, 0x48424096), + TOBN(0x8b847cd6, 0xebfb5cfb), TOBN(0x87c2ae56, 0x9ad4d10d)}, + {TOBN(0xf1cbb122, 0x0de36726), TOBN(0xe7043c68, 0x3fdfbd21), + TOBN(0x4bd0826a, 0x4e79d460), TOBN(0x11f5e598, 0x4bd1a2cb)}}, + {{TOBN(0x97554160, 0xb7fe7b6e), TOBN(0x7d16189a, 0x400a3fb2), + TOBN(0xd73e9bea, 0xe328ca1e), TOBN(0x0dd04b97, 0xe793d8cc)}, + {TOBN(0xa9c83c9b, 0x506db8cc), TOBN(0x5cd47aae, 0xcf38814c), + TOBN(0x26fc430d, 0xb64b45e6), TOBN(0x079b5499, 0xd818ea84)}}, + {{TOBN(0xebb01102, 0xc1c24a3b), TOBN(0xca24e568, 0x1c161c1a), + TOBN(0x103eea69, 0x36f00a4a), TOBN(0x9ad76ee8, 0x76176c7b)}, + {TOBN(0x97451fc2, 0x538e0ff7), TOBN(0x94f89809, 0x6604b3b0), + TOBN(0x6311436e, 0x3249cfd7), TOBN(0x27b4a7bd, 0x41224f69)}}, + {{TOBN(0x03b5d21a, 0xe0ac2941), TOBN(0x279b0254, 0xc2d31937), + TOBN(0x3307c052, 0xcac992d0), TOBN(0x6aa7cb92, 0xefa8b1f3)}, + {TOBN(0x5a182580, 0x0d37c7a5), TOBN(0x13380c37, 0x342d5422), + TOBN(0x92ac2d66, 0xd5d2ef92), TOBN(0x035a70c9, 0x030c63c6)}}, + {{TOBN(0xc16025dd, 0x4ce4f152), TOBN(0x1f419a71, 0xf9df7c06), + TOBN(0x6d5b2214, 0x91e4bb14), TOBN(0xfc43c6cc, 0x839fb4ce)}, + {TOBN(0x49f06591, 0x925d6b2d), TOBN(0x4b37d9d3, 0x62186598), + TOBN(0x8c54a971, 0xd01b1629), TOBN(0xe1a9c29f, 0x51d50e05)}}, + {{TOBN(0x5109b785, 0x71ba1861), TOBN(0x48b22d5c, 0xd0c8f93d), + TOBN(0xe8fa84a7, 0x8633bb93), TOBN(0x53fba6ba, 0x5aebbd08)}, + {TOBN(0x7ff27df3, 0xe5eea7d8), TOBN(0x521c8796, 0x68ca7158), + TOBN(0xb9d5133b, 0xce6f1a05), TOBN(0x2d50cd53, 0xfd0ebee4)}}, + {{TOBN(0xc82115d6, 0xc5a3ef16), TOBN(0x993eff9d, 0xba079221), + TOBN(0xe4da2c5e, 0x4b5da81c), TOBN(0x9a89dbdb, 0x8033fd85)}, + {TOBN(0x60819ebf, 0x2b892891), TOBN(0x53902b21, 0x5d14a4d5), + TOBN(0x6ac35051, 0xd7fda421), TOBN(0xcc6ab885, 0x61c83284)}}, + {{TOBN(0x14eba133, 0xf74cff17), TOBN(0x240aaa03, 0xecb813f2), + TOBN(0xcfbb6540, 0x6f665bee), TOBN(0x084b1fe4, 0xa425ad73)}, + {TOBN(0x009d5d16, 0xd081f6a6), TOBN(0x35304fe8, 0xeef82c90), + TOBN(0xf20346d5, 0xaa9eaa22), TOBN(0x0ada9f07, 0xac1c91e3)}}, + {{TOBN(0xa6e21678, 0x968a6144), TOBN(0x54c1f77c, 0x07b31a1e), + TOBN(0xd6bb787e, 0x5781fbe1), TOBN(0x61bd2ee0, 0xe31f1c4a)}, + {TOBN(0xf25aa1e9, 0x781105fc), TOBN(0x9cf2971f, 0x7b2f8e80), + TOBN(0x26d15412, 0xcdff919b), TOBN(0x01db4ebe, 0x34bc896e)}}, + {{TOBN(0x7d9b3e23, 0xb40df1cf), TOBN(0x59337373, 0x94e971b4), + TOBN(0xbf57bd14, 0x669cf921), TOBN(0x865daedf, 0x0c1a1064)}, + {TOBN(0x3eb70bd3, 0x83279125), TOBN(0xbc3d5b9f, 0x34ecdaab), + TOBN(0x91e3ed7e, 0x5f755caf), TOBN(0x49699f54, 0xd41e6f02)}}, + {{TOBN(0x185770e1, 0xd4a7a15b), TOBN(0x08f3587a, 0xeaac87e7), + TOBN(0x352018db, 0x473133ea), TOBN(0x674ce719, 0x04fd30fc)}, + {TOBN(0x7b8d9835, 0x088b3e0e), TOBN(0x7a0356a9, 0x5d0d47a1), + TOBN(0x9d9e7659, 0x6474a3c4), TOBN(0x61ea48a7, 0xff66966c)}}, + {{TOBN(0x30417758, 0x0f3e4834), TOBN(0xfdbb21c2, 0x17a9afcb), + TOBN(0x756fa17f, 0x2f9a67b3), TOBN(0x2a6b2421, 0xa245c1a8)}, + {TOBN(0x64be2794, 0x4af02291), TOBN(0xade465c6, 0x2a5804fe), + TOBN(0x8dffbd39, 0xa6f08fd7), TOBN(0xc4efa84c, 0xaa14403b)}}, + {{TOBN(0xa1b91b2a, 0x442b0f5c), TOBN(0xb748e317, 0xcf997736), + TOBN(0x8d1b62bf, 0xcee90e16), TOBN(0x907ae271, 0x0b2078c0)}, + {TOBN(0xdf31534b, 0x0c9bcddd), TOBN(0x043fb054, 0x39adce83), + TOBN(0x99031043, 0xd826846a), TOBN(0x61a9c0d6, 0xb144f393)}}, + {{TOBN(0xdab48046, 0x47718427), TOBN(0xdf17ff9b, 0x6e830f8b), + TOBN(0x408d7ee8, 0xe49a1347), TOBN(0x6ac71e23, 0x91c1d4ae)}, + {TOBN(0xc8cbb9fd, 0x1defd73c), TOBN(0x19840657, 0xbbbbfec5), + TOBN(0x39db1cb5, 0x9e7ef8ea), TOBN(0x78aa8296, 0x64105f30)}}, + {{TOBN(0xa3d9b7f0, 0xa3738c29), TOBN(0x0a2f235a, 0xbc3250a3), + TOBN(0x55e506f6, 0x445e4caf), TOBN(0x0974f73d, 0x33475f7a)}, + {TOBN(0xd37dbba3, 0x5ba2f5a8), TOBN(0x542c6e63, 0x6af40066), + TOBN(0x26d99b53, 0xc5d73e2c), TOBN(0x06060d7d, 0x6c3ca33e)}}, + {{TOBN(0xcdbef1c2, 0x065fef4a), TOBN(0x77e60f7d, 0xfd5b92e3), + TOBN(0xd7c549f0, 0x26708350), TOBN(0x201b3ad0, 0x34f121bf)}, + {TOBN(0x5fcac2a1, 0x0334fc14), TOBN(0x8a9a9e09, 0x344552f6), + TOBN(0x7dd8a1d3, 0x97653082), TOBN(0x5fc0738f, 0x79d4f289)}}, + {{TOBN(0x787d244d, 0x17d2d8c3), TOBN(0xeffc6345, 0x70830684), + TOBN(0x5ddb96dd, 0xe4f73ae5), TOBN(0x8efb14b1, 0x172549a5)}, + {TOBN(0x6eb73eee, 0x2245ae7a), TOBN(0xbca4061e, 0xea11f13e), + TOBN(0xb577421d, 0x30b01f5d), TOBN(0xaa688b24, 0x782e152c)}}, + {{TOBN(0x67608e71, 0xbd3502ba), TOBN(0x4ef41f24, 0xb4de75a0), + TOBN(0xb08dde5e, 0xfd6125e5), TOBN(0xde484825, 0xa409543f)}, + {TOBN(0x1f198d98, 0x65cc2295), TOBN(0x428a3771, 0x6e0edfa2), + TOBN(0x4f9697a2, 0xadf35fc7), TOBN(0x01a43c79, 0xf7cac3c7)}}, + {{TOBN(0xb05d7059, 0x0fd3659a), TOBN(0x8927f30c, 0xbb7f2d9a), + TOBN(0x4023d1ac, 0x8cf984d3), TOBN(0x32125ed3, 0x02897a45)}, + {TOBN(0xfb572dad, 0x3d414205), TOBN(0x73000ef2, 0xe3fa82a9), + TOBN(0x4c0868e9, 0xf10a5581), TOBN(0x5b61fc67, 0x6b0b3ca5)}}, + {{TOBN(0xc1258d5b, 0x7cae440c), TOBN(0x21c08b41, 0x402b7531), + TOBN(0xf61a8955, 0xde932321), TOBN(0x3568faf8, 0x2d1408af)}, + {TOBN(0x71b15e99, 0x9ecf965b), TOBN(0xf14ed248, 0xe917276f), + TOBN(0xc6f4caa1, 0x820cf9e2), TOBN(0x681b20b2, 0x18d83c7e)}}, + {{TOBN(0x6cde738d, 0xc6c01120), TOBN(0x71db0813, 0xae70e0db), + TOBN(0x95fc0644, 0x74afe18c), TOBN(0x34619053, 0x129e2be7)}, + {TOBN(0x80615cea, 0xdb2a3b15), TOBN(0x0a49a19e, 0xdb4c7073), + TOBN(0x0e1b84c8, 0x8fd2d367), TOBN(0xd74bf462, 0x033fb8aa)}}, + {{TOBN(0x889f6d65, 0x533ef217), TOBN(0x7158c7e4, 0xc3ca2e87), + TOBN(0xfb670dfb, 0xdc2b4167), TOBN(0x75910a01, 0x844c257f)}, + {TOBN(0xf336bf07, 0xcf88577d), TOBN(0x22245250, 0xe45e2ace), + TOBN(0x2ed92e8d, 0x7ca23d85), TOBN(0x29f8be4c, 0x2b812f58)}}, + {{TOBN(0xdd9ebaa7, 0x076fe12b), TOBN(0x3f2400cb, 0xae1537f9), + TOBN(0x1aa93528, 0x17bdfb46), TOBN(0xc0f98430, 0x67883b41)}, + {TOBN(0x5590ede1, 0x0170911d), TOBN(0x7562f5bb, 0x34d4b17f), + TOBN(0xe1fa1df2, 0x1826b8d2), TOBN(0xb40b796a, 0x6bd80d59)}}, + {{TOBN(0xd65bf197, 0x3467ba92), TOBN(0x8c9b46db, 0xf70954b0), + TOBN(0x97c8a0f3, 0x0e78f15d), TOBN(0xa8f3a69a, 0x85a4c961)}, + {TOBN(0x4242660f, 0x61e4ce9b), TOBN(0xbf06aab3, 0x6ea6790c), + TOBN(0xc6706f8e, 0xec986416), TOBN(0x9e56dec1, 0x9a9fc225)}}, + {{TOBN(0x527c46f4, 0x9a9898d9), TOBN(0xd799e77b, 0x5633cdef), + TOBN(0x24eacc16, 0x7d9e4297), TOBN(0xabb61cea, 0x6b1cb734)}, + {TOBN(0xbee2e8a7, 0xf778443c), TOBN(0x3bb42bf1, 0x29de2fe6), + TOBN(0xcbed86a1, 0x3003bb6f), TOBN(0xd3918e6c, 0xd781cdf6)}}, + {{TOBN(0x4bee3271, 0x9a5103f1), TOBN(0x5243efc6, 0xf50eac06), + TOBN(0xb8e122cb, 0x6adcc119), TOBN(0x1b7faa84, 0xc0b80a08)}, + {TOBN(0x32c3d1bd, 0x6dfcd08c), TOBN(0x129dec4e, 0x0be427de), + TOBN(0x98ab679c, 0x1d263c83), TOBN(0xafc83cb7, 0xcef64eff)}}, + {{TOBN(0x85eb6088, 0x2fa6be76), TOBN(0x892585fb, 0x1328cbfe), + TOBN(0xc154d3ed, 0xcf618dda), TOBN(0xc44f601b, 0x3abaf26e)}, + {TOBN(0x7bf57d0b, 0x2be1fdfd), TOBN(0xa833bd2d, 0x21137fee), + TOBN(0x9353af36, 0x2db591a8), TOBN(0xc76f26dc, 0x5562a056)}}, + {{TOBN(0x1d87e47d, 0x3fdf5a51), TOBN(0x7afb5f93, 0x55c9cab0), + TOBN(0x91bbf58f, 0x89e0586e), TOBN(0x7c72c018, 0x0d843709)}, + {TOBN(0xa9a5aafb, 0x99b5c3dc), TOBN(0xa48a0f1d, 0x3844aeb0), + TOBN(0x7178b7dd, 0xb667e482), TOBN(0x453985e9, 0x6e23a59a)}}, + {{TOBN(0x4a54c860, 0x01b25dd8), TOBN(0x0dd37f48, 0xfb897c8a), + TOBN(0x5f8aa610, 0x0ea90cd9), TOBN(0xc8892c68, 0x16d5830d)}, + {TOBN(0xeb4befc0, 0xef514ca5), TOBN(0x478eb679, 0xe72c9ee6), + TOBN(0x9bca20da, 0xdbc40d5f), TOBN(0xf015de21, 0xdde4f64a)}}, + {{TOBN(0xaa6a4de0, 0xeaf4b8a5), TOBN(0x68cfd9ca, 0x4bc60e32), + TOBN(0x668a4b01, 0x7fd15e70), TOBN(0xd9f0694a, 0xf27dc09d)}, + {TOBN(0xf6c3cad5, 0xba708bcd), TOBN(0x5cd2ba69, 0x5bb95c2a), + TOBN(0xaa28c1d3, 0x33c0a58f), TOBN(0x23e274e3, 0xabc77870)}}, + {{TOBN(0x44c3692d, 0xdfd20a4a), TOBN(0x091c5fd3, 0x81a66653), + TOBN(0x6c0bb691, 0x09a0757d), TOBN(0x9072e8b9, 0x667343ea)}, + {TOBN(0x31d40eb0, 0x80848bec), TOBN(0x95bd480a, 0x79fd36cc), + TOBN(0x01a77c61, 0x65ed43f5), TOBN(0xafccd127, 0x2e0d40bf)}}, + {{TOBN(0xeccfc82d, 0x1cc1884b), TOBN(0xc85ac201, 0x5d4753b4), + TOBN(0xc7a6caac, 0x658e099f), TOBN(0xcf46369e, 0x04b27390)}, + {TOBN(0xe2e7d049, 0x506467ea), TOBN(0x481b63a2, 0x37cdeccc), + TOBN(0x4029abd8, 0xed80143a), TOBN(0x28bfe3c7, 0xbcb00b88)}}, + {{TOBN(0x3bec1009, 0x0643d84a), TOBN(0x885f3668, 0xabd11041), + TOBN(0xdb02432c, 0xf83a34d6), TOBN(0x32f7b360, 0x719ceebe)}, + {TOBN(0xf06c7837, 0xdad1fe7a), TOBN(0x60a157a9, 0x5441a0b0), + TOBN(0x704970e9, 0xe2d47550), TOBN(0xcd2bd553, 0x271b9020)}}, + {{TOBN(0xff57f82f, 0x33e24a0b), TOBN(0x9cbee23f, 0xf2565079), + TOBN(0x16353427, 0xeb5f5825), TOBN(0x276feec4, 0xe948d662)}, + {TOBN(0xd1b62bc6, 0xda10032b), TOBN(0x718351dd, 0xf0e72a53), + TOBN(0x93452076, 0x2420e7ba), TOBN(0x96368fff, 0x3a00118d)}}, + {{TOBN(0x00ce2d26, 0x150a49e4), TOBN(0x0c28b636, 0x3f04706b), + TOBN(0xbad65a46, 0x58b196d0), TOBN(0x6c8455fc, 0xec9f8b7c)}, + {TOBN(0xe90c895f, 0x2d71867e), TOBN(0x5c0be31b, 0xedf9f38c), + TOBN(0x2a37a15e, 0xd8f6ec04), TOBN(0x239639e7, 0x8cd85251)}}, + {{TOBN(0xd8975315, 0x9c7c4c6b), TOBN(0x603aa3c0, 0xd7409af7), + TOBN(0xb8d53d0c, 0x007132fb), TOBN(0x68d12af7, 0xa6849238)}, + {TOBN(0xbe0607e7, 0xbf5d9279), TOBN(0x9aa50055, 0xaada74ce), + TOBN(0xe81079cb, 0xba7e8ccb), TOBN(0x610c71d1, 0xa5f4ff5e)}}, + {{TOBN(0x9e2ee1a7, 0x5aa07093), TOBN(0xca84004b, 0xa75da47c), + TOBN(0x074d3951, 0x3de75401), TOBN(0xf938f756, 0xbb311592)}, + {TOBN(0x96197618, 0x00a43421), TOBN(0x39a25362, 0x07bc78c8), + TOBN(0x278f710a, 0x0a171276), TOBN(0xb28446ea, 0x8d1a8f08)}}, + {{TOBN(0x184781bf, 0xe3b6a661), TOBN(0x7751cb1d, 0xe6d279f7), + TOBN(0xf8ff95d6, 0xc59eb662), TOBN(0x186d90b7, 0x58d3dea7)}, + {TOBN(0x0e4bb6c1, 0xdfb4f754), TOBN(0x5c5cf56b, 0x2b2801dc), + TOBN(0xc561e452, 0x1f54564d), TOBN(0xb4fb8c60, 0xf0dd7f13)}}, + {{TOBN(0xf8849630, 0x33ff98c7), TOBN(0x9619fffa, 0xcf17769c), + TOBN(0xf8090bf6, 0x1bfdd80a), TOBN(0x14d9a149, 0x422cfe63)}, + {TOBN(0xb354c360, 0x6f6df9ea), TOBN(0xdbcf770d, 0x218f17ea), + TOBN(0x207db7c8, 0x79eb3480), TOBN(0x213dbda8, 0x559b6a26)}}, + {{TOBN(0xac4c200b, 0x29fc81b3), TOBN(0xebc3e09f, 0x171d87c1), + TOBN(0x91799530, 0x1481aa9e), TOBN(0x051b92e1, 0x92e114fa)}, + {TOBN(0xdf8f92e9, 0xecb5537f), TOBN(0x44b1b2cc, 0x290c7483), + TOBN(0xa711455a, 0x2adeb016), TOBN(0x964b6856, 0x81a10c2c)}}, + {{TOBN(0x4f159d99, 0xcec03623), TOBN(0x05532225, 0xef3271ea), + TOBN(0xb231bea3, 0xc5ee4849), TOBN(0x57a54f50, 0x7094f103)}, + {TOBN(0x3e2d421d, 0x9598b352), TOBN(0xe865a49c, 0x67412ab4), + TOBN(0xd2998a25, 0x1cc3a912), TOBN(0x5d092808, 0x0c74d65d)}}, + {{TOBN(0x73f45908, 0x4088567a), TOBN(0xeb6b280e, 0x1f214a61), + TOBN(0x8c9adc34, 0xcaf0c13d), TOBN(0x39d12938, 0xf561fb80)}, + {TOBN(0xb2dc3a5e, 0xbc6edfb4), TOBN(0x7485b1b1, 0xfe4d210e), + TOBN(0x062e0400, 0xe186ae72), TOBN(0x91e32d5c, 0x6eeb3b88)}}, + {{TOBN(0x6df574d7, 0x4be59224), TOBN(0xebc88ccc, 0x716d55f3), + TOBN(0x26c2e6d0, 0xcad6ed33), TOBN(0xc6e21e7d, 0x0d3e8b10)}, + {TOBN(0x2cc5840e, 0x5bcc36bb), TOBN(0x9292445e, 0x7da74f69), + TOBN(0x8be8d321, 0x4e5193a8), TOBN(0x3ec23629, 0x8df06413)}}, + {{TOBN(0xc7e9ae85, 0xb134defa), TOBN(0x6073b1d0, 0x1bb2d475), + TOBN(0xb9ad615e, 0x2863c00d), TOBN(0x9e29493d, 0x525f4ac4)}, + {TOBN(0xc32b1dea, 0x4e9acf4f), TOBN(0x3e1f01c8, 0xa50db88d), + TOBN(0xb05d70ea, 0x04da916c), TOBN(0x714b0d0a, 0xd865803e)}}, + {{TOBN(0x4bd493fc, 0x9920cb5e), TOBN(0x5b44b1f7, 0x92c7a3ac), + TOBN(0xa2a77293, 0xbcec9235), TOBN(0x5ee06e87, 0xcd378553)}, + {TOBN(0xceff8173, 0xda621607), TOBN(0x2bb03e4c, 0x99f5d290), + TOBN(0x2945106a, 0xa6f734ac), TOBN(0xb5056604, 0xd25c4732)}}, + {{TOBN(0x5945920c, 0xe079afee), TOBN(0x686e17a0, 0x6789831f), + TOBN(0x5966bee8, 0xb74a5ae5), TOBN(0x38a673a2, 0x1e258d46)}, + {TOBN(0xbd1cc1f2, 0x83141c95), TOBN(0x3b2ecf4f, 0x0e96e486), + TOBN(0xcd3aa896, 0x74e5fc78), TOBN(0x415ec10c, 0x2482fa7a)}}, + {{TOBN(0x15234419, 0x80503380), TOBN(0x513d917a, 0xd314b392), + TOBN(0xb0b52f4e, 0x63caecae), TOBN(0x07bf22ad, 0x2dc7780b)}, + {TOBN(0xe761e8a1, 0xe4306839), TOBN(0x1b3be962, 0x5dd7feaa), + TOBN(0x4fe728de, 0x74c778f1), TOBN(0xf1fa0bda, 0x5e0070f6)}}, + {{TOBN(0x85205a31, 0x6ec3f510), TOBN(0x2c7e4a14, 0xd2980475), + TOBN(0xde3c19c0, 0x6f30ebfd), TOBN(0xdb1c1f38, 0xd4b7e644)}, + {TOBN(0xfe291a75, 0x5dce364a), TOBN(0xb7b22a3c, 0x058f5be3), + TOBN(0x2cd2c302, 0x37fea38c), TOBN(0x2930967a, 0x2e17be17)}}, + {{TOBN(0x87f009de, 0x0c061c65), TOBN(0xcb014aac, 0xedc6ed44), + TOBN(0x49bd1cb4, 0x3bafb1eb), TOBN(0x81bd8b5c, 0x282d3688)}, + {TOBN(0x1cdab87e, 0xf01a17af), TOBN(0x21f37ac4, 0xe710063b), + TOBN(0x5a6c5676, 0x42fc8193), TOBN(0xf4753e70, 0x56a6015c)}}, + {{TOBN(0x020f795e, 0xa15b0a44), TOBN(0x8f37c8d7, 0x8958a958), + TOBN(0x63b7e89b, 0xa4b675b5), TOBN(0xb4fb0c0c, 0x0fc31aea)}, + {TOBN(0xed95e639, 0xa7ff1f2e), TOBN(0x9880f5a3, 0x619614fb), + TOBN(0xdeb6ff02, 0x947151ab), TOBN(0x5bc5118c, 0xa868dcdb)}}, + {{TOBN(0xd8da2055, 0x4c20cea5), TOBN(0xcac2776e, 0x14c4d69a), + TOBN(0xcccb22c1, 0x622d599b), TOBN(0xa4ddb653, 0x68a9bb50)}, + {TOBN(0x2c4ff151, 0x1b4941b4), TOBN(0xe1ff19b4, 0x6efba588), + TOBN(0x35034363, 0xc48345e0), TOBN(0x45542e3d, 0x1e29dfc4)}}, + {{TOBN(0xf197cb91, 0x349f7aed), TOBN(0x3b2b5a00, 0x8fca8420), + TOBN(0x7c175ee8, 0x23aaf6d8), TOBN(0x54dcf421, 0x35af32b6)}, + {TOBN(0x0ba14307, 0x27d6561e), TOBN(0x879d5ee4, 0xd175b1e2), + TOBN(0xc7c43673, 0x99807db5), TOBN(0x77a54455, 0x9cd55bcd)}}, + {{TOBN(0xe6c2ff13, 0x0105c072), TOBN(0x18f7a99f, 0x8dda7da4), + TOBN(0x4c301820, 0x0e2d35c1), TOBN(0x06a53ca0, 0xd9cc6c82)}, + {TOBN(0xaa21cc1e, 0xf1aa1d9e), TOBN(0x32414334, 0x4a75b1e8), + TOBN(0x2a6d1328, 0x0ebe9fdc), TOBN(0x16bd173f, 0x98a4755a)}}, + {{TOBN(0xfbb9b245, 0x2133ffd9), TOBN(0x39a8b2f1, 0x830f1a20), + TOBN(0x484bc97d, 0xd5a1f52a), TOBN(0xd6aebf56, 0xa40eddf8)}, + {TOBN(0x32257acb, 0x76ccdac6), TOBN(0xaf4d36ec, 0x1586ff27), + TOBN(0x8eaa8863, 0xf8de7dd1), TOBN(0x0045d5cf, 0x88647c16)}}}, + {{{TOBN(0xa6f3d574, 0xc005979d), TOBN(0xc2072b42, 0x6a40e350), + TOBN(0xfca5c156, 0x8de2ecf9), TOBN(0xa8c8bf5b, 0xa515344e)}, + {TOBN(0x97aee555, 0x114df14a), TOBN(0xd4374a4d, 0xfdc5ec6b), + TOBN(0x754cc28f, 0x2ca85418), TOBN(0x71cb9e27, 0xd3c41f78)}}, + {{TOBN(0x89105079, 0x03605c39), TOBN(0xf0843d9e, 0xa142c96c), + TOBN(0xf3744934, 0x16923684), TOBN(0x732caa2f, 0xfa0a2893)}, + {TOBN(0xb2e8c270, 0x61160170), TOBN(0xc32788cc, 0x437fbaa3), + TOBN(0x39cd818e, 0xa6eda3ac), TOBN(0xe2e94239, 0x9e2b2e07)}}, + {{TOBN(0x6967d39b, 0x0260e52a), TOBN(0xd42585cc, 0x90653325), + TOBN(0x0d9bd605, 0x21ca7954), TOBN(0x4fa20877, 0x81ed57b3)}, + {TOBN(0x60c1eff8, 0xe34a0bbe), TOBN(0x56b0040c, 0x84f6ef64), + TOBN(0x28be2b24, 0xb1af8483), TOBN(0xb2278163, 0xf5531614)}}, + {{TOBN(0x8df27545, 0x5922ac1c), TOBN(0xa7b3ef5c, 0xa52b3f63), + TOBN(0x8e77b214, 0x71de57c4), TOBN(0x31682c10, 0x834c008b)}, + {TOBN(0xc76824f0, 0x4bd55d31), TOBN(0xb6d1c086, 0x17b61c71), + TOBN(0x31db0903, 0xc2a5089d), TOBN(0x9c092172, 0x184e5d3f)}}, + {{TOBN(0xdd7ced5b, 0xc00cc638), TOBN(0x1a2015eb, 0x61278fc2), + TOBN(0x2e8e5288, 0x6a37f8d6), TOBN(0xc457786f, 0xe79933ad)}, + {TOBN(0xb3fe4cce, 0x2c51211a), TOBN(0xad9b10b2, 0x24c20498), + TOBN(0x90d87a4f, 0xd28db5e5), TOBN(0x698cd105, 0x3aca2fc3)}}, + {{TOBN(0x4f112d07, 0xe91b536d), TOBN(0xceb982f2, 0x9eba09d6), + TOBN(0x3c157b2c, 0x197c396f), TOBN(0xe23c2d41, 0x7b66eb24)}, + {TOBN(0x480c57d9, 0x3f330d37), TOBN(0xb3a4c8a1, 0x79108deb), + TOBN(0x702388de, 0xcb199ce5), TOBN(0x0b019211, 0xb944a8d4)}}, + {{TOBN(0x24f2a692, 0x840bb336), TOBN(0x7c353bdc, 0xa669fa7b), + TOBN(0xda20d6fc, 0xdec9c300), TOBN(0x625fbe2f, 0xa13a4f17)}, + {TOBN(0xa2b1b61a, 0xdbc17328), TOBN(0x008965bf, 0xa9515621), + TOBN(0x49690939, 0xc620ff46), TOBN(0x182dd27d, 0x8717e91c)}}, + {{TOBN(0x5ace5035, 0xea6c3997), TOBN(0x54259aaa, 0xc2610bef), + TOBN(0xef18bb3f, 0x3c80dd39), TOBN(0x6910b95b, 0x5fc3fa39)}, + {TOBN(0xfce2f510, 0x43e09aee), TOBN(0xced56c9f, 0xa7675665), + TOBN(0x10e265ac, 0xd872db61), TOBN(0x6982812e, 0xae9fce69)}}, + {{TOBN(0x29be11c6, 0xce800998), TOBN(0x72bb1752, 0xb90360d9), + TOBN(0x2c193197, 0x5a4ad590), TOBN(0x2ba2f548, 0x9fc1dbc0)}, + {TOBN(0x7fe4eebb, 0xe490ebe0), TOBN(0x12a0a4cd, 0x7fae11c0), + TOBN(0x7197cf81, 0xe903ba37), TOBN(0xcf7d4aa8, 0xde1c6dd8)}}, + {{TOBN(0x92af6bf4, 0x3fd5684c), TOBN(0x2b26eecf, 0x80360aa1), + TOBN(0xbd960f30, 0x00546a82), TOBN(0x407b3c43, 0xf59ad8fe)}, + {TOBN(0x86cae5fe, 0x249c82ba), TOBN(0x9e0faec7, 0x2463744c), + TOBN(0x87f551e8, 0x94916272), TOBN(0x033f9344, 0x6ceb0615)}}, + {{TOBN(0x1e5eb0d1, 0x8be82e84), TOBN(0x89967f0e, 0x7a582fef), + TOBN(0xbcf687d5, 0xa6e921fa), TOBN(0xdfee4cf3, 0xd37a09ba)}, + {TOBN(0x94f06965, 0xb493c465), TOBN(0x638b9a1c, 0x7635c030), + TOBN(0x76667864, 0x66f05e9f), TOBN(0xccaf6808, 0xc04da725)}}, + {{TOBN(0xca2eb690, 0x768fccfc), TOBN(0xf402d37d, 0xb835b362), + TOBN(0x0efac0d0, 0xe2fdfcce), TOBN(0xefc9cdef, 0xb638d990)}, + {TOBN(0x2af12b72, 0xd1669a8b), TOBN(0x33c536bc, 0x5774ccbd), + TOBN(0x30b21909, 0xfb34870e), TOBN(0xc38fa2f7, 0x7df25aca)}}, + {{TOBN(0x74c5f02b, 0xbf81f3f5), TOBN(0x0525a5ae, 0xaf7e4581), + TOBN(0x88d2aaba, 0x433c54ae), TOBN(0xed9775db, 0x806a56c5)}, + {TOBN(0xd320738a, 0xc0edb37d), TOBN(0x25fdb6ee, 0x66cc1f51), + TOBN(0xac661d17, 0x10600d76), TOBN(0x931ec1f3, 0xbdd1ed76)}}, + {{TOBN(0x65c11d62, 0x19ee43f1), TOBN(0x5cd57c3e, 0x60829d97), + TOBN(0xd26c91a3, 0x984be6e8), TOBN(0xf08d9309, 0x8b0c53bd)}, + {TOBN(0x94bc9e5b, 0xc016e4ea), TOBN(0xd3916839, 0x11d43d2b), + TOBN(0x886c5ad7, 0x73701155), TOBN(0xe0377626, 0x20b00715)}}, + {{TOBN(0x7f01c9ec, 0xaa80ba59), TOBN(0x3083411a, 0x68538e51), + TOBN(0x970370f1, 0xe88128af), TOBN(0x625cc3db, 0x91dec14b)}, + {TOBN(0xfef9666c, 0x01ac3107), TOBN(0xb2a8d577, 0xd5057ac3), + TOBN(0xb0f26299, 0x92be5df7), TOBN(0xf579c8e5, 0x00353924)}}, + {{TOBN(0xb8fa3d93, 0x1341ed7a), TOBN(0x4223272c, 0xa7b59d49), + TOBN(0x3dcb1947, 0x83b8c4a4), TOBN(0x4e413c01, 0xed1302e4)}, + {TOBN(0x6d999127, 0xe17e44ce), TOBN(0xee86bf75, 0x33b3adfb), + TOBN(0xf6902fe6, 0x25aa96ca), TOBN(0xb73540e4, 0xe5aae47d)}}, + {{TOBN(0x32801d7b, 0x1b4a158c), TOBN(0xe571c99e, 0x27e2a369), + TOBN(0x40cb76c0, 0x10d9f197), TOBN(0xc308c289, 0x3167c0ae)}, + {TOBN(0xa6ef9dd3, 0xeb7958f2), TOBN(0xa7226dfc, 0x300879b1), + TOBN(0x6cd0b362, 0x7edf0636), TOBN(0x4efbce6c, 0x7bc37eed)}}, + {{TOBN(0x75f92a05, 0x8d699021), TOBN(0x586d4c79, 0x772566e3), + TOBN(0x378ca5f1, 0x761ad23a), TOBN(0x650d86fc, 0x1465a8ac)}, + {TOBN(0x7a4ed457, 0x842ba251), TOBN(0x6b65e3e6, 0x42234933), + TOBN(0xaf1543b7, 0x31aad657), TOBN(0xa4cefe98, 0xcbfec369)}}, + {{TOBN(0xb587da90, 0x9f47befb), TOBN(0x6562e9fb, 0x41312d13), + TOBN(0xa691ea59, 0xeff1cefe), TOBN(0xcc30477a, 0x05fc4cf6)}, + {TOBN(0xa1632461, 0x0b0ffd3d), TOBN(0xa1f16f3b, 0x5b355956), + TOBN(0x5b148d53, 0x4224ec24), TOBN(0xdc834e7b, 0xf977012a)}}, + {{TOBN(0x7bfc5e75, 0xb2c69dbc), TOBN(0x3aa77a29, 0x03c3da6c), + TOBN(0xde0df03c, 0xca910271), TOBN(0xcbd5ca4a, 0x7806dc55)}, + {TOBN(0xe1ca5807, 0x6db476cb), TOBN(0xfde15d62, 0x5f37a31e), + TOBN(0xf49af520, 0xf41af416), TOBN(0x96c5c5b1, 0x7d342db5)}}, + {{TOBN(0x155c43b7, 0xeb4ceb9b), TOBN(0x2e993010, 0x4e77371a), + TOBN(0x1d2987da, 0x675d43af), TOBN(0xef2bc1c0, 0x8599fd72)}, + {TOBN(0x96894b7b, 0x9342f6b2), TOBN(0x201eadf2, 0x7c8e71f0), + TOBN(0xf3479d9f, 0x4a1f3efc), TOBN(0xe0f8a742, 0x702a9704)}}, + {{TOBN(0xeafd44b6, 0xb3eba40c), TOBN(0xf9739f29, 0xc1c1e0d0), + TOBN(0x0091471a, 0x619d505e), TOBN(0xc15f9c96, 0x9d7c263e)}, + {TOBN(0x5be47285, 0x83afbe33), TOBN(0xa3b6d6af, 0x04f1e092), + TOBN(0xe76526b9, 0x751a9d11), TOBN(0x2ec5b26d, 0x9a4ae4d2)}}, + {{TOBN(0xeb66f4d9, 0x02f6fb8d), TOBN(0x4063c561, 0x96912164), + TOBN(0xeb7050c1, 0x80ef3000), TOBN(0x288d1c33, 0xeaa5b3f0)}, + {TOBN(0xe87c68d6, 0x07806fd8), TOBN(0xb2f7f9d5, 0x4bbbf50f), + TOBN(0x25972f3a, 0xac8d6627), TOBN(0xf8547774, 0x10e8c13b)}}, + {{TOBN(0xcc50ef6c, 0x872b4a60), TOBN(0xab2a34a4, 0x4613521b), + TOBN(0x39c5c190, 0x983e15d1), TOBN(0x61dde5df, 0x59905512)}, + {TOBN(0xe417f621, 0x9f2275f3), TOBN(0x0750c8b6, 0x451d894b), + TOBN(0x75b04ab9, 0x78b0bdaa), TOBN(0x3bfd9fd4, 0x458589bd)}}, + {{TOBN(0xf1013e30, 0xee9120b6), TOBN(0x2b51af93, 0x23a4743e), + TOBN(0xea96ffae, 0x48d14d9e), TOBN(0x71dc0dbe, 0x698a1d32)}, + {TOBN(0x914962d2, 0x0180cca4), TOBN(0x1ae60677, 0xc3568963), + TOBN(0x8cf227b1, 0x437bc444), TOBN(0xc650c83b, 0xc9962c7a)}}, + {{TOBN(0x23c2c7dd, 0xfe7ccfc4), TOBN(0xf925c89d, 0x1b929d48), + TOBN(0x4460f74b, 0x06783c33), TOBN(0xac2c8d49, 0xa590475a)}, + {TOBN(0xfb40b407, 0xb807bba0), TOBN(0x9d1e362d, 0x69ff8f3a), + TOBN(0xa33e9681, 0xcbef64a4), TOBN(0x67ece5fa, 0x332fb4b2)}}, + {{TOBN(0x6900a99b, 0x739f10e3), TOBN(0xc3341ca9, 0xff525925), + TOBN(0xee18a626, 0xa9e2d041), TOBN(0xa5a83685, 0x29580ddd)}, + {TOBN(0xf3470c81, 0x9d7de3cd), TOBN(0xedf02586, 0x2062cf9c), + TOBN(0xf43522fa, 0xc010edb0), TOBN(0x30314135, 0x13a4b1ae)}}, + {{TOBN(0xc792e02a, 0xdb22b94b), TOBN(0x993d8ae9, 0xa1eaa45b), + TOBN(0x8aad6cd3, 0xcd1e1c63), TOBN(0x89529ca7, 0xc5ce688a)}, + {TOBN(0x2ccee3aa, 0xe572a253), TOBN(0xe02b6438, 0x02a21efb), + TOBN(0xa7091b6e, 0xc9430358), TOBN(0x06d1b1fa, 0x9d7db504)}}, + {{TOBN(0x58846d32, 0xc4744733), TOBN(0x40517c71, 0x379f9e34), + TOBN(0x2f65655f, 0x130ef6ca), TOBN(0x526e4488, 0xf1f3503f)}, + {TOBN(0x8467bd17, 0x7ee4a976), TOBN(0x1d9dc913, 0x921363d1), + TOBN(0xd8d24c33, 0xb069e041), TOBN(0x5eb5da0a, 0x2cdf7f51)}}, + {{TOBN(0x1c0f3cb1, 0x197b994f), TOBN(0x3c95a6c5, 0x2843eae9), + TOBN(0x7766ffc9, 0xa6097ea5), TOBN(0x7bea4093, 0xd723b867)}, + {TOBN(0xb48e1f73, 0x4db378f9), TOBN(0x70025b00, 0xe37b77ac), + TOBN(0x943dc8e7, 0xaf24ad46), TOBN(0xb98a15ac, 0x16d00a85)}}, + {{TOBN(0x3adc38ba, 0x2743b004), TOBN(0xb1c7f4f7, 0x334415ee), + TOBN(0xea43df8f, 0x1e62d05a), TOBN(0x32618905, 0x9d76a3b6)}, + {TOBN(0x2fbd0bb5, 0xa23a0f46), TOBN(0x5bc971db, 0x6a01918c), + TOBN(0x7801d94a, 0xb4743f94), TOBN(0xb94df65e, 0x676ae22b)}}, + {{TOBN(0xaafcbfab, 0xaf95894c), TOBN(0x7b9bdc07, 0x276b2241), + TOBN(0xeaf98362, 0x5bdda48b), TOBN(0x5977faf2, 0xa3fcb4df)}, + {TOBN(0xbed042ef, 0x052c4b5b), TOBN(0x9fe87f71, 0x067591f0), + TOBN(0xc89c73ca, 0x22f24ec7), TOBN(0x7d37fa9e, 0xe64a9f1b)}}, + {{TOBN(0x2710841a, 0x15562627), TOBN(0x2c01a613, 0xc243b034), + TOBN(0x1d135c56, 0x2bc68609), TOBN(0xc2ca1715, 0x8b03f1f6)}, + {TOBN(0xc9966c2d, 0x3eb81d82), TOBN(0xc02abf4a, 0x8f6df13e), + TOBN(0x77b34bd7, 0x8f72b43b), TOBN(0xaff6218f, 0x360c82b0)}}, + {{TOBN(0x0aa5726c, 0x8d55b9d2), TOBN(0xdc0adbe9, 0x99e9bffb), + TOBN(0x9097549c, 0xefb9e72a), TOBN(0x16755712, 0x9dfb3111)}, + {TOBN(0xdd8bf984, 0xf26847f9), TOBN(0xbcb8e387, 0xdfb30cb7), + TOBN(0xc1fd32a7, 0x5171ef9c), TOBN(0x977f3fc7, 0x389b363f)}}, + {{TOBN(0x116eaf2b, 0xf4babda0), TOBN(0xfeab68bd, 0xf7113c8e), + TOBN(0xd1e3f064, 0xb7def526), TOBN(0x1ac30885, 0xe0b3fa02)}, + {TOBN(0x1c5a6e7b, 0x40142d9d), TOBN(0x839b5603, 0x30921c0b), + TOBN(0x48f301fa, 0x36a116a3), TOBN(0x380e1107, 0xcfd9ee6d)}}, + {{TOBN(0x7945ead8, 0x58854be1), TOBN(0x4111c12e, 0xcbd4d49d), + TOBN(0xece3b1ec, 0x3a29c2ef), TOBN(0x6356d404, 0x8d3616f5)}, + {TOBN(0x9f0d6a8f, 0x594d320e), TOBN(0x0989316d, 0xf651ccd2), + TOBN(0x6c32117a, 0x0f8fdde4), TOBN(0x9abe5cc5, 0xa26a9bbc)}}, + {{TOBN(0xcff560fb, 0x9723f671), TOBN(0x21b2a12d, 0x7f3d593c), + TOBN(0xe4cb18da, 0x24ba0696), TOBN(0x186e2220, 0xc3543384)}, + {TOBN(0x722f64e0, 0x88312c29), TOBN(0x94282a99, 0x17dc7752), + TOBN(0x62467bbf, 0x5a85ee89), TOBN(0xf435c650, 0xf10076a0)}}, + {{TOBN(0xc9ff1539, 0x43b3a50b), TOBN(0x7132130c, 0x1a53efbc), + TOBN(0x31bfe063, 0xf7b0c5b7), TOBN(0xb0179a7d, 0x4ea994cc)}, + {TOBN(0x12d064b3, 0xc85f455b), TOBN(0x47259328, 0x8f6e0062), + TOBN(0xf64e590b, 0xb875d6d9), TOBN(0x22dd6225, 0xad92bcc7)}}, + {{TOBN(0xb658038e, 0xb9c3bd6d), TOBN(0x00cdb0d6, 0xfbba27c8), + TOBN(0x0c681337, 0x1062c45d), TOBN(0xd8515b8c, 0x2d33407d)}, + {TOBN(0xcb8f699e, 0x8cbb5ecf), TOBN(0x8c4347f8, 0xc608d7d8), + TOBN(0x2c11850a, 0xbb3e00db), TOBN(0x20a8dafd, 0xecb49d19)}}, + {{TOBN(0xbd781480, 0x45ee2f40), TOBN(0x75e354af, 0x416b60cf), + TOBN(0xde0b58a1, 0x8d49a8c4), TOBN(0xe40e94e2, 0xfa359536)}, + {TOBN(0xbd4fa59f, 0x62accd76), TOBN(0x05cf466a, 0x8c762837), + TOBN(0xb5abda99, 0x448c277b), TOBN(0x5a9e01bf, 0x48b13740)}}, + {{TOBN(0x9d457798, 0x326aad8d), TOBN(0xbdef4954, 0xc396f7e7), + TOBN(0x6fb274a2, 0xc253e292), TOBN(0x2800bf0a, 0x1cfe53e7)}, + {TOBN(0x22426d31, 0x44438fd4), TOBN(0xef233923, 0x5e259f9a), + TOBN(0x4188503c, 0x03f66264), TOBN(0x9e5e7f13, 0x7f9fdfab)}}, + {{TOBN(0x565eb76c, 0x5fcc1aba), TOBN(0xea632548, 0x59b5bff8), + TOBN(0x5587c087, 0xaab6d3fa), TOBN(0x92b639ea, 0x6ce39c1b)}, + {TOBN(0x0706e782, 0x953b135c), TOBN(0x7308912e, 0x425268ef), + TOBN(0x599e92c7, 0x090e7469), TOBN(0x83b90f52, 0x9bc35e75)}}, + {{TOBN(0x4750b3d0, 0x244975b3), TOBN(0xf3a44358, 0x11965d72), + TOBN(0x179c6774, 0x9c8dc751), TOBN(0xff18cdfe, 0xd23d9ff0)}, + {TOBN(0xc4013833, 0x2028e247), TOBN(0x96e280e2, 0xf3bfbc79), + TOBN(0xf60417bd, 0xd0880a84), TOBN(0x263c9f3d, 0x2a568151)}}, + {{TOBN(0x36be15b3, 0x2d2ce811), TOBN(0x846dc0c2, 0xf8291d21), + TOBN(0x5cfa0ecb, 0x789fcfdb), TOBN(0x45a0beed, 0xd7535b9a)}, + {TOBN(0xec8e9f07, 0x96d69af1), TOBN(0x31a7c5b8, 0x599ab6dc), + TOBN(0xd36d45ef, 0xf9e2e09f), TOBN(0x3cf49ef1, 0xdcee954b)}}, + {{TOBN(0x6be34cf3, 0x086cff9b), TOBN(0x88dbd491, 0x39a3360f), + TOBN(0x1e96b8cc, 0x0dbfbd1d), TOBN(0xc1e5f7bf, 0xcb7e2552)}, + {TOBN(0x0547b214, 0x28819d98), TOBN(0xc770dd9c, 0x7aea9dcb), + TOBN(0xaef0d4c7, 0x041d68c8), TOBN(0xcc2b9818, 0x13cb9ba8)}}, + {{TOBN(0x7fc7bc76, 0xfe86c607), TOBN(0x6b7b9337, 0x502a9a95), + TOBN(0x1948dc27, 0xd14dab63), TOBN(0x249dd198, 0xdae047be)}, + {TOBN(0xe8356584, 0xa981a202), TOBN(0x3531dd18, 0x3a893387), + TOBN(0x1be11f90, 0xc85c7209), TOBN(0x93d2fe1e, 0xe2a52b5a)}}, + {{TOBN(0x8225bfe2, 0xec6d6b97), TOBN(0x9cf6d6f4, 0xbd0aa5de), + TOBN(0x911459cb, 0x54779f5f), TOBN(0x5649cddb, 0x86aeb1f3)}, + {TOBN(0x32133579, 0x3f26ce5a), TOBN(0xc289a102, 0x550f431e), + TOBN(0x559dcfda, 0x73b84c6f), TOBN(0x84973819, 0xee3ac4d7)}}, + {{TOBN(0xb51e55e6, 0xf2606a82), TOBN(0xe25f7061, 0x90f2fb57), + TOBN(0xacef6c2a, 0xb1a4e37c), TOBN(0x864e359d, 0x5dcf2706)}, + {TOBN(0x479e6b18, 0x7ce57316), TOBN(0x2cab2500, 0x3a96b23d), + TOBN(0xed489862, 0x8ef16df7), TOBN(0x2056538c, 0xef3758b5)}}, + {{TOBN(0xa7df865e, 0xf15d3101), TOBN(0x80c5533a, 0x61b553d7), + TOBN(0x366e1997, 0x4ed14294), TOBN(0x6620741f, 0xb3c0bcd6)}, + {TOBN(0x21d1d9c4, 0xedc45418), TOBN(0x005b859e, 0xc1cc4a9d), + TOBN(0xdf01f630, 0xa1c462f0), TOBN(0x15d06cf3, 0xf26820c7)}}, + {{TOBN(0x9f7f24ee, 0x3484be47), TOBN(0x2ff33e96, 0x4a0c902f), + TOBN(0x00bdf457, 0x5a0bc453), TOBN(0x2378dfaf, 0x1aa238db)}, + {TOBN(0x272420ec, 0x856720f2), TOBN(0x2ad9d95b, 0x96797291), + TOBN(0xd1242cc6, 0x768a1558), TOBN(0x2e287f8b, 0x5cc86aa8)}}, + {{TOBN(0x796873d0, 0x990cecaa), TOBN(0xade55f81, 0x675d4080), + TOBN(0x2645eea3, 0x21f0cd84), TOBN(0x7a1efa0f, 0xb4e17d02)}, + {TOBN(0xf6858420, 0x037cc061), TOBN(0x682e05f0, 0xd5d43e12), + TOBN(0x59c36994, 0x27218710), TOBN(0x85cbba4d, 0x3f7cd2fc)}}, + {{TOBN(0x726f9729, 0x7a3cd22a), TOBN(0x9f8cd5dc, 0x4a628397), + TOBN(0x17b93ab9, 0xc23165ed), TOBN(0xff5f5dbf, 0x122823d4)}, + {TOBN(0xc1e4e4b5, 0x654a446d), TOBN(0xd1a9496f, 0x677257ba), + TOBN(0x6387ba94, 0xde766a56), TOBN(0x23608bc8, 0x521ec74a)}}, + {{TOBN(0x16a522d7, 0x6688c4d4), TOBN(0x9d6b4282, 0x07373abd), + TOBN(0xa62f07ac, 0xb42efaa3), TOBN(0xf73e00f7, 0xe3b90180)}, + {TOBN(0x36175fec, 0x49421c3e), TOBN(0xc4e44f9b, 0x3dcf2678), + TOBN(0x76df436b, 0x7220f09f), TOBN(0x172755fb, 0x3aa8b6cf)}}, + {{TOBN(0xbab89d57, 0x446139cc), TOBN(0x0a0a6e02, 0x5fe0208f), + TOBN(0xcdbb63e2, 0x11e5d399), TOBN(0x33ecaa12, 0xa8977f0b)}, + {TOBN(0x59598b21, 0xf7c42664), TOBN(0xb3e91b32, 0xab65d08a), + TOBN(0x035822ee, 0xf4502526), TOBN(0x1dcf0176, 0x720a82a9)}}, + {{TOBN(0x50f8598f, 0x3d589e02), TOBN(0xdf0478ff, 0xb1d63d2c), + TOBN(0x8b8068bd, 0x1571cd07), TOBN(0x30c3aa4f, 0xd79670cd)}, + {TOBN(0x25e8fd4b, 0x941ade7f), TOBN(0x3d1debdc, 0x32790011), + TOBN(0x65b6dcbd, 0x3a3f9ff0), TOBN(0x282736a4, 0x793de69c)}}, + {{TOBN(0xef69a0c3, 0xd41d3bd3), TOBN(0xb533b8c9, 0x07a26bde), + TOBN(0xe2801d97, 0xdb2edf9f), TOBN(0xdc4a8269, 0xe1877af0)}, + {TOBN(0x6c1c5851, 0x3d590dbe), TOBN(0x84632f6b, 0xee4e9357), + TOBN(0xd36d36b7, 0x79b33374), TOBN(0xb46833e3, 0x9bbca2e6)}}, + {{TOBN(0x37893913, 0xf7fc0586), TOBN(0x385315f7, 0x66bf4719), + TOBN(0x72c56293, 0xb31855dc), TOBN(0xd1416d4e, 0x849061fe)}, + {TOBN(0xbeb3ab78, 0x51047213), TOBN(0x447f6e61, 0xf040c996), + TOBN(0xd06d310d, 0x638b1d0c), TOBN(0xe28a413f, 0xbad1522e)}}, + {{TOBN(0x685a76cb, 0x82003f86), TOBN(0x610d07f7, 0x0bcdbca3), + TOBN(0x6ff66021, 0x9ca4c455), TOBN(0x7df39b87, 0xcea10eec)}, + {TOBN(0xb9255f96, 0xe22db218), TOBN(0x8cc6d9eb, 0x08a34c44), + TOBN(0xcd4ffb86, 0x859f9276), TOBN(0x8fa15eb2, 0x50d07335)}}, + {{TOBN(0xdf553845, 0xcf2c24b5), TOBN(0x89f66a9f, 0x52f9c3ba), + TOBN(0x8f22b5b9, 0xe4a7ceb3), TOBN(0xaffef809, 0x0e134686)}, + {TOBN(0x3e53e1c6, 0x8eb8fac2), TOBN(0x93c1e4eb, 0x28aec98e), + TOBN(0xb6b91ec5, 0x32a43bcb), TOBN(0x2dbfa947, 0xb2d74a51)}}, + {{TOBN(0xe065d190, 0xca84bad7), TOBN(0xfb13919f, 0xad58e65c), + TOBN(0x3c41718b, 0xf1cb6e31), TOBN(0x688969f0, 0x06d05c3f)}, + {TOBN(0xd4f94ce7, 0x21264d45), TOBN(0xfdfb65e9, 0x7367532b), + TOBN(0x5b1be8b1, 0x0945a39d), TOBN(0x229f789c, 0x2b8baf3b)}}, + {{TOBN(0xd8f41f3e, 0x6f49f15d), TOBN(0x678ce828, 0x907f0792), + TOBN(0xc69ace82, 0xfca6e867), TOBN(0x106451ae, 0xd01dcc89)}, + {TOBN(0x1bb4f7f0, 0x19fc32d2), TOBN(0x64633dfc, 0xb00c52d2), + TOBN(0x8f13549a, 0xad9ea445), TOBN(0x99a3bf50, 0xfb323705)}}, + {{TOBN(0x0c9625a2, 0x534d4dbc), TOBN(0x45b8f1d1, 0xc2a2fea3), + TOBN(0x76ec21a1, 0xa530fc1a), TOBN(0x4bac9c2a, 0x9e5bd734)}, + {TOBN(0x5996d76a, 0x7b4e3587), TOBN(0x0045cdee, 0x1182d9e3), + TOBN(0x1aee24b9, 0x1207f13d), TOBN(0x66452e97, 0x97345a41)}}, + {{TOBN(0x16e5b054, 0x9f950cd0), TOBN(0x9cc72fb1, 0xd7fdd075), + TOBN(0x6edd61e7, 0x66249663), TOBN(0xde4caa4d, 0xf043cccb)}, + {TOBN(0x11b1f57a, 0x55c7ac17), TOBN(0x779cbd44, 0x1a85e24d), + TOBN(0x78030f86, 0xe46081e7), TOBN(0xfd4a6032, 0x8e20f643)}}, + {{TOBN(0xcc7a6488, 0x0a750c0f), TOBN(0x39bacfe3, 0x4e548e83), + TOBN(0x3d418c76, 0x0c110f05), TOBN(0x3e4daa4c, 0xb1f11588)}, + {TOBN(0x2733e7b5, 0x5ffc69ff), TOBN(0x46f147bc, 0x92053127), + TOBN(0x885b2434, 0xd722df94), TOBN(0x6a444f65, 0xe6fc6b7c)}}}, + {{{TOBN(0x7a1a465a, 0xc3f16ea8), TOBN(0x115a461d, 0xb2f1d11c), + TOBN(0x4767dd95, 0x6c68a172), TOBN(0x3392f2eb, 0xd13a4698)}, + {TOBN(0xc7a99ccd, 0xe526cdc7), TOBN(0x8e537fdc, 0x22292b81), + TOBN(0x76d8cf69, 0xa6d39198), TOBN(0xffc5ff43, 0x2446852d)}}, + {{TOBN(0x97b14f7e, 0xa90567e6), TOBN(0x513257b7, 0xb6ae5cb7), + TOBN(0x85454a3c, 0x9f10903d), TOBN(0xd8d2c9ad, 0x69bc3724)}, + {TOBN(0x38da9324, 0x6b29cb44), TOBN(0xb540a21d, 0x77c8cbac), + TOBN(0x9bbfe435, 0x01918e42), TOBN(0xfffa707a, 0x56c3614e)}}, + {{TOBN(0x0ce4e3f1, 0xd4e353b7), TOBN(0x062d8a14, 0xef46b0a0), + TOBN(0x6408d5ab, 0x574b73fd), TOBN(0xbc41d1c9, 0xd3273ffd)}, + {TOBN(0x3538e1e7, 0x6be77800), TOBN(0x71fe8b37, 0xc5655031), + TOBN(0x1cd91621, 0x6b9b331a), TOBN(0xad825d0b, 0xbb388f73)}}, + {{TOBN(0x56c2e05b, 0x1cb76219), TOBN(0x0ec0bf91, 0x71567e7e), + TOBN(0xe7076f86, 0x61c4c910), TOBN(0xd67b085b, 0xbabc04d9)}, + {TOBN(0x9fb90459, 0x5e93a96a), TOBN(0x7526c1ea, 0xfbdc249a), + TOBN(0x0d44d367, 0xecdd0bb7), TOBN(0x95399917, 0x9dc0d695)}}, + {{TOBN(0x61360ee9, 0x9e240d18), TOBN(0x057cdcac, 0xb4b94466), + TOBN(0xe7667cd1, 0x2fe5325c), TOBN(0x1fa297b5, 0x21974e3b)}, + {TOBN(0xfa4081e7, 0xdb083d76), TOBN(0x31993be6, 0xf206bd15), + TOBN(0x8949269b, 0x14c19f8c), TOBN(0x21468d72, 0xa9d92357)}}, + {{TOBN(0x2ccbc583, 0xa4c506ec), TOBN(0x957ed188, 0xd1acfe97), + TOBN(0x8baed833, 0x12f1aea2), TOBN(0xef2a6cb4, 0x8325362d)}, + {TOBN(0x130dde42, 0x8e195c43), TOBN(0xc842025a, 0x0e6050c6), + TOBN(0x2da972a7, 0x08686a5d), TOBN(0xb52999a1, 0xe508b4a8)}}, + {{TOBN(0xd9f090b9, 0x10a5a8bd), TOBN(0xca91d249, 0x096864da), + TOBN(0x8e6a93be, 0x3f67dbc1), TOBN(0xacae6fba, 0xf5f4764c)}, + {TOBN(0x1563c6e0, 0xd21411a0), TOBN(0x28fa787f, 0xda0a4ad8), + TOBN(0xd524491c, 0x908c8030), TOBN(0x1257ba0e, 0x4c795f07)}}, + {{TOBN(0x83f49167, 0xceca9754), TOBN(0x426d2cf6, 0x4b7939a0), + TOBN(0x2555e355, 0x723fd0bf), TOBN(0xa96e6d06, 0xc4f144e2)}, + {TOBN(0x4768a8dd, 0x87880e61), TOBN(0x15543815, 0xe508e4d5), + TOBN(0x09d7e772, 0xb1b65e15), TOBN(0x63439dd6, 0xac302fa0)}}, + {{TOBN(0xb93f802f, 0xc14e35c2), TOBN(0x71735b7c, 0x4341333c), + TOBN(0x03a25104, 0x16d4f362), TOBN(0x3f4d069b, 0xbf433c8e)}, + {TOBN(0x0d83ae01, 0xf78f5a7c), TOBN(0x50a8ffbe, 0x7c4eed07), + TOBN(0xc74f8906, 0x76e10f83), TOBN(0x7d080966, 0x9ddaf8e1)}}, + {{TOBN(0xb11df8e1, 0x698e04cc), TOBN(0x877be203, 0x169005c8), + TOBN(0x32749e8c, 0x4f3c6179), TOBN(0x2dbc9d0a, 0x7853fc05)}, + {TOBN(0x187d4f93, 0x9454d937), TOBN(0xe682ce9d, 0xb4800e1b), + TOBN(0xa9129ad8, 0x165e68e8), TOBN(0x0fe29735, 0xbe7f785b)}}, + {{TOBN(0x5303f40c, 0x5b9e02b7), TOBN(0xa37c9692, 0x35ee04e8), + TOBN(0x5f46cc20, 0x34d6632b), TOBN(0x55ef72b2, 0x96ac545b)}, + {TOBN(0xabec5c1f, 0x7b91b062), TOBN(0x0a79e1c7, 0xbb33e821), + TOBN(0xbb04b428, 0x3a9f4117), TOBN(0x0de1f28f, 0xfd2a475a)}}, + {{TOBN(0x31019ccf, 0x3a4434b4), TOBN(0xa3458111, 0x1a7954dc), + TOBN(0xa9dac80d, 0xe34972a7), TOBN(0xb043d054, 0x74f6b8dd)}, + {TOBN(0x021c319e, 0x11137b1a), TOBN(0x00a754ce, 0xed5cc03f), + TOBN(0x0aa2c794, 0xcbea5ad4), TOBN(0x093e67f4, 0x70c015b6)}}, + {{TOBN(0x72cdfee9, 0xc97e3f6b), TOBN(0xc10bcab4, 0xb6da7461), + TOBN(0x3b02d2fc, 0xb59806b9), TOBN(0x85185e89, 0xa1de6f47)}, + {TOBN(0x39e6931f, 0x0eb6c4d4), TOBN(0x4d4440bd, 0xd4fa5b04), + TOBN(0x5418786e, 0x34be7eb8), TOBN(0x6380e521, 0x9d7259bc)}}, + {{TOBN(0x20ac0351, 0xd598d710), TOBN(0x272c4166, 0xcb3a4da4), + TOBN(0xdb82fe1a, 0xca71de1f), TOBN(0x746e79f2, 0xd8f54b0f)}, + {TOBN(0x6e7fc736, 0x4b573e9b), TOBN(0x75d03f46, 0xfd4b5040), + TOBN(0x5c1cc36d, 0x0b98d87b), TOBN(0x513ba3f1, 0x1f472da1)}}, + {{TOBN(0x79d0af26, 0xabb177dd), TOBN(0xf82ab568, 0x7891d564), + TOBN(0x2b6768a9, 0x72232173), TOBN(0xefbb3bb0, 0x8c1f6619)}, + {TOBN(0xb29c11db, 0xa6d18358), TOBN(0x519e2797, 0xb0916d3a), + TOBN(0xd4dc18f0, 0x9188e290), TOBN(0x648e86e3, 0x98b0ca7f)}}, + {{TOBN(0x859d3145, 0x983c38b5), TOBN(0xb14f176c, 0x637abc8b), + TOBN(0x2793fb9d, 0xcaff7be6), TOBN(0xebe5a55f, 0x35a66a5a)}, + {TOBN(0x7cec1dcd, 0x9f87dc59), TOBN(0x7c595cd3, 0xfbdbf560), + TOBN(0x5b543b22, 0x26eb3257), TOBN(0x69080646, 0xc4c935fd)}}, + {{TOBN(0x7f2e4403, 0x81e9ede3), TOBN(0x243c3894, 0xcaf6df0a), + TOBN(0x7c605bb1, 0x1c073b11), TOBN(0xcd06a541, 0xba6a4a62)}, + {TOBN(0x29168949, 0x49d4e2e5), TOBN(0x33649d07, 0x4af66880), + TOBN(0xbfc0c885, 0xe9a85035), TOBN(0xb4e52113, 0xfc410f4b)}}, + {{TOBN(0xdca3b706, 0x78a6513b), TOBN(0x92ea4a2a, 0x9edb1943), + TOBN(0x02642216, 0xdb6e2dd8), TOBN(0x9b45d0b4, 0x9fd57894)}, + {TOBN(0x114e70db, 0xc69d11ae), TOBN(0x1477dd19, 0x4c57595f), + TOBN(0xbc2208b4, 0xec77c272), TOBN(0x95c5b4d7, 0xdb68f59c)}}, + {{TOBN(0xb8c4fc63, 0x42e532b7), TOBN(0x386ba422, 0x9ae35290), + TOBN(0xfb5dda42, 0xd201ecbc), TOBN(0x2353dc8b, 0xa0e38fd6)}, + {TOBN(0x9a0b85ea, 0x68f7e978), TOBN(0x96ec5682, 0x2ad6d11f), + TOBN(0x5e279d6c, 0xe5f6886d), TOBN(0xd3fe03cd, 0x3cb1914d)}}, + {{TOBN(0xfe541fa4, 0x7ea67c77), TOBN(0x952bd2af, 0xe3ea810c), + TOBN(0x791fef56, 0x8d01d374), TOBN(0xa3a1c621, 0x0f11336e)}, + {TOBN(0x5ad0d5a9, 0xc7ec6d79), TOBN(0xff7038af, 0x3225c342), + TOBN(0x003c6689, 0xbc69601b), TOBN(0x25059bc7, 0x45e8747d)}}, + {{TOBN(0xfa4965b2, 0xf2086fbf), TOBN(0xf6840ea6, 0x86916078), + TOBN(0xd7ac7620, 0x70081d6c), TOBN(0xe600da31, 0xb5328645)}, + {TOBN(0x01916f63, 0x529b8a80), TOBN(0xe80e4858, 0x2d7d6f3e), + TOBN(0x29eb0fe8, 0xd664ca7c), TOBN(0xf017637b, 0xe7b43b0c)}}, + {{TOBN(0x9a75c806, 0x76cb2566), TOBN(0x8f76acb1, 0xb24892d9), + TOBN(0x7ae7b9cc, 0x1f08fe45), TOBN(0x19ef7329, 0x6a4907d8)}, + {TOBN(0x2db4ab71, 0x5f228bf0), TOBN(0xf3cdea39, 0x817032d7), + TOBN(0x0b1f482e, 0xdcabe3c0), TOBN(0x3baf76b4, 0xbb86325c)}}, + {{TOBN(0xd49065e0, 0x10089465), TOBN(0x3bab5d29, 0x8e77c596), + TOBN(0x7636c3a6, 0x193dbd95), TOBN(0xdef5d294, 0xb246e499)}, + {TOBN(0xb22c58b9, 0x286b2475), TOBN(0xa0b93939, 0xcd80862b), + TOBN(0x3002c83a, 0xf0992388), TOBN(0x6de01f9b, 0xeacbe14c)}}, + {{TOBN(0x6aac688e, 0xadd70482), TOBN(0x708de92a, 0x7b4a4e8a), + TOBN(0x75b6dd73, 0x758a6eef), TOBN(0xea4bf352, 0x725b3c43)}, + {TOBN(0x10041f2c, 0x87912868), TOBN(0xb1b1be95, 0xef09297a), + TOBN(0x19ae23c5, 0xa9f3860a), TOBN(0xc4f0f839, 0x515dcf4b)}}, + {{TOBN(0x3c7ecca3, 0x97f6306a), TOBN(0x744c44ae, 0x68a3a4b0), + TOBN(0x69cd13a0, 0xb3a1d8a2), TOBN(0x7cad0a1e, 0x5256b578)}, + {TOBN(0xea653fcd, 0x33791d9e), TOBN(0x9cc2a05d, 0x74b2e05f), + TOBN(0x73b391dc, 0xfd7affa2), TOBN(0xddb7091e, 0xb6b05442)}}, + {{TOBN(0xc71e27bf, 0x8538a5c6), TOBN(0x195c63dd, 0x89abff17), + TOBN(0xfd315285, 0x1b71e3da), TOBN(0x9cbdfda7, 0xfa680fa0)}, + {TOBN(0x9db876ca, 0x849d7eab), TOBN(0xebe2764b, 0x3c273271), + TOBN(0x663357e3, 0xf208dcea), TOBN(0x8c5bd833, 0x565b1b70)}}, + {{TOBN(0xccc3b4f5, 0x9837fc0d), TOBN(0x9b641ba8, 0xa79cf00f), + TOBN(0x7428243d, 0xdfdf3990), TOBN(0x83a594c4, 0x020786b1)}, + {TOBN(0xb712451a, 0x526c4502), TOBN(0x9d39438e, 0x6adb3f93), + TOBN(0xfdb261e3, 0xe9ff0ccd), TOBN(0x80344e3c, 0xe07af4c3)}}, + {{TOBN(0x75900d7c, 0x2fa4f126), TOBN(0x08a3b865, 0x5c99a232), + TOBN(0x2478b6bf, 0xdb25e0c3), TOBN(0x482cc2c2, 0x71db2edf)}, + {TOBN(0x37df7e64, 0x5f321bb8), TOBN(0x8a93821b, 0x9a8005b4), + TOBN(0x3fa2f10c, 0xcc8c1958), TOBN(0x0d332218, 0x2c269d0a)}}, + {{TOBN(0x20ab8119, 0xe246b0e6), TOBN(0xb39781e4, 0xd349fd17), + TOBN(0xd293231e, 0xb31aa100), TOBN(0x4b779c97, 0xbb032168)}, + {TOBN(0x4b3f19e1, 0xc8470500), TOBN(0x45b7efe9, 0x0c4c869d), + TOBN(0xdb84f38a, 0xa1a6bbcc), TOBN(0x3b59cb15, 0xb2fddbc1)}}, + {{TOBN(0xba5514df, 0x3fd165e8), TOBN(0x499fd6a9, 0x061f8811), + TOBN(0x72cd1fe0, 0xbfef9f00), TOBN(0x120a4bb9, 0x79ad7e8a)}, + {TOBN(0xf2ffd095, 0x5f4a5ac5), TOBN(0xcfd174f1, 0x95a7a2f0), + TOBN(0xd42301ba, 0x9d17baf1), TOBN(0xd2fa487a, 0x77f22089)}}, + {{TOBN(0x9cb09efe, 0xb1dc77e1), TOBN(0xe9566939, 0x21c99682), + TOBN(0x8c546901, 0x6c6067bb), TOBN(0xfd378574, 0x61c24456)}, + {TOBN(0x2b6a6cbe, 0x81796b33), TOBN(0x62d550f6, 0x58e87f8b), + TOBN(0x1b763e1c, 0x7f1b01b4), TOBN(0x4b93cfea, 0x1b1b5e12)}}, + {{TOBN(0xb9345238, 0x1d531696), TOBN(0x57201c00, 0x88cdde69), + TOBN(0xdde92251, 0x9a86afc7), TOBN(0xe3043895, 0xbd35cea8)}, + {TOBN(0x7608c1e1, 0x8555970d), TOBN(0x8267dfa9, 0x2535935e), + TOBN(0xd4c60a57, 0x322ea38b), TOBN(0xe0bf7977, 0x804ef8b5)}}, + {{TOBN(0x1a0dab28, 0xc06fece4), TOBN(0xd405991e, 0x94e7b49d), + TOBN(0xc542b6d2, 0x706dab28), TOBN(0xcb228da3, 0xa91618fb)}, + {TOBN(0x224e4164, 0x107d1cea), TOBN(0xeb9fdab3, 0xd0f5d8f1), + TOBN(0xc02ba386, 0x0d6e41cd), TOBN(0x676a72c5, 0x9b1f7146)}}, + {{TOBN(0xffd6dd98, 0x4d6cb00b), TOBN(0xcef9c5ca, 0xde2e8d7c), + TOBN(0xa1bbf5d7, 0x641c7936), TOBN(0x1b95b230, 0xee8f772e)}, + {TOBN(0xf765a92e, 0xe8ac25b1), TOBN(0xceb04cfc, 0x3a18b7c6), + TOBN(0x27944cef, 0x0acc8966), TOBN(0xcbb3c957, 0x434c1004)}}, + {{TOBN(0x9c9971a1, 0xa43ff93c), TOBN(0x5bc2db17, 0xa1e358a9), + TOBN(0x45b4862e, 0xa8d9bc82), TOBN(0x70ebfbfb, 0x2201e052)}, + {TOBN(0xafdf64c7, 0x92871591), TOBN(0xea5bcae6, 0xb42d0219), + TOBN(0xde536c55, 0x2ad8f03c), TOBN(0xcd6c3f4d, 0xa76aa33c)}}, + {{TOBN(0xbeb5f623, 0x0bca6de3), TOBN(0xdd20dd99, 0xb1e706fd), + TOBN(0x90b3ff9d, 0xac9059d4), TOBN(0x2d7b2902, 0x7ccccc4e)}, + {TOBN(0x8a090a59, 0xce98840f), TOBN(0xa5d947e0, 0x8410680a), + TOBN(0x49ae346a, 0x923379a5), TOBN(0x7dbc84f9, 0xb28a3156)}}, + {{TOBN(0xfd40d916, 0x54a1aff2), TOBN(0xabf318ba, 0x3a78fb9b), + TOBN(0x50152ed8, 0x3029f95e), TOBN(0x9fc1dd77, 0xc58ad7fa)}, + {TOBN(0x5fa57915, 0x13595c17), TOBN(0xb9504668, 0x8f62b3a9), + TOBN(0x907b5b24, 0xff3055b0), TOBN(0x2e995e35, 0x9a84f125)}}, + {{TOBN(0x87dacf69, 0x7e9bbcfb), TOBN(0x95d0c1d6, 0xe86d96e3), + TOBN(0x65726e3c, 0x2d95a75c), TOBN(0x2c3c9001, 0xacd27f21)}, + {TOBN(0x1deab561, 0x6c973f57), TOBN(0x108b7e2c, 0xa5221643), + TOBN(0x5fee9859, 0xc4ef79d4), TOBN(0xbd62b88a, 0x40d4b8c6)}}, + {{TOBN(0xb4dd29c4, 0x197c75d6), TOBN(0x266a6df2, 0xb7076feb), + TOBN(0x9512d0ea, 0x4bf2df11), TOBN(0x1320c24f, 0x6b0cc9ec)}, + {TOBN(0x6bb1e0e1, 0x01a59596), TOBN(0x8317c5bb, 0xeff9aaac), + TOBN(0x65bb405e, 0x385aa6c9), TOBN(0x613439c1, 0x8f07988f)}}, + {{TOBN(0xd730049f, 0x16a66e91), TOBN(0xe97f2820, 0xfa1b0e0d), + TOBN(0x4131e003, 0x304c28ea), TOBN(0x820ab732, 0x526bac62)}, + {TOBN(0xb2ac9ef9, 0x28714423), TOBN(0x54ecfffa, 0xadb10cb2), + TOBN(0x8781476e, 0xf886a4cc), TOBN(0x4b2c87b5, 0xdb2f8d49)}}, + {{TOBN(0xe857cd20, 0x0a44295d), TOBN(0x707d7d21, 0x58c6b044), + TOBN(0xae8521f9, 0xf596757c), TOBN(0x87448f03, 0x67b2b714)}, + {TOBN(0x13a9bc45, 0x5ebcd58d), TOBN(0x79bcced9, 0x9122d3c1), + TOBN(0x3c644247, 0x9e076642), TOBN(0x0cf22778, 0x2df4767d)}}, + {{TOBN(0x5e61aee4, 0x71d444b6), TOBN(0x211236bf, 0xc5084a1d), + TOBN(0x7e15bc9a, 0x4fd3eaf6), TOBN(0x68df2c34, 0xab622bf5)}, + {TOBN(0x9e674f0f, 0x59bf4f36), TOBN(0xf883669b, 0xd7f34d73), + TOBN(0xc48ac1b8, 0x31497b1d), TOBN(0x323b925d, 0x5106703b)}}, + {{TOBN(0x22156f42, 0x74082008), TOBN(0xeffc521a, 0xc8482bcb), + TOBN(0x5c6831bf, 0x12173479), TOBN(0xcaa2528f, 0xc4739490)}, + {TOBN(0x84d2102a, 0x8f1b3c4d), TOBN(0xcf64dfc1, 0x2d9bec0d), + TOBN(0x433febad, 0x78a546ef), TOBN(0x1f621ec3, 0x7b73cef1)}}, + {{TOBN(0x6aecd627, 0x37338615), TOBN(0x162082ab, 0x01d8edf6), + TOBN(0x833a8119, 0x19e86b66), TOBN(0x6023a251, 0xd299b5db)}, + {TOBN(0xf5bb0c3a, 0xbbf04b89), TOBN(0x6735eb69, 0xae749a44), + TOBN(0xd0e058c5, 0x4713de3b), TOBN(0xfdf2593e, 0x2c3d4ccd)}}, + {{TOBN(0x1b8f414e, 0xfdd23667), TOBN(0xdd52aaca, 0xfa2015ee), + TOBN(0x3e31b517, 0xbd9625ff), TOBN(0x5ec9322d, 0x8db5918c)}, + {TOBN(0xbc73ac85, 0xa96f5294), TOBN(0x82aa5bf3, 0x61a0666a), + TOBN(0x49755810, 0xbf08ac42), TOBN(0xd21cdfd5, 0x891cedfc)}}, + {{TOBN(0x918cb57b, 0x67f8be10), TOBN(0x365d1a7c, 0x56ffa726), + TOBN(0x2435c504, 0x6532de93), TOBN(0xc0fc5e10, 0x2674cd02)}, + {TOBN(0x6e51fcf8, 0x9cbbb142), TOBN(0x1d436e5a, 0xafc50692), + TOBN(0x766bffff, 0x3fbcae22), TOBN(0x3148c2fd, 0xfd55d3b8)}}, + {{TOBN(0x52c7fdc9, 0x233222fa), TOBN(0x89ff1092, 0xe419fb6b), + TOBN(0x3cd6db99, 0x25254977), TOBN(0x2e85a161, 0x1cf12ca7)}, + {TOBN(0xadd2547c, 0xdc810bc9), TOBN(0xea3f458f, 0x9d257c22), + TOBN(0x642c1fbe, 0x27d6b19b), TOBN(0xed07e6b5, 0x140481a6)}}, + {{TOBN(0x6ada1d42, 0x86d2e0f8), TOBN(0xe5920122, 0x0e8a9fd5), + TOBN(0x02c936af, 0x708c1b49), TOBN(0x60f30fee, 0x2b4bfaff)}, + {TOBN(0x6637ad06, 0x858e6a61), TOBN(0xce4c7767, 0x3fd374d0), + TOBN(0x39d54b2d, 0x7188defb), TOBN(0xa8c9d250, 0xf56a6b66)}}, + {{TOBN(0x58fc0f5e, 0xb24fe1dc), TOBN(0x9eaf9dee, 0x6b73f24c), + TOBN(0xa90d588b, 0x33650705), TOBN(0xde5b62c5, 0xaf2ec729)}, + {TOBN(0x5c72cfae, 0xd3c2b36e), TOBN(0x868c19d5, 0x034435da), + TOBN(0x88605f93, 0xe17ee145), TOBN(0xaa60c4ee, 0x77a5d5b1)}}, + {{TOBN(0xbcf5bfd2, 0x3b60c472), TOBN(0xaf4ef13c, 0xeb1d3049), + TOBN(0x373f44fc, 0xe13895c9), TOBN(0xf29b382f, 0x0cbc9822)}, + {TOBN(0x1bfcb853, 0x73efaef6), TOBN(0xcf56ac9c, 0xa8c96f40), + TOBN(0xd7adf109, 0x7a191e24), TOBN(0x98035f44, 0xbf8a8dc2)}}, + {{TOBN(0xf40a71b9, 0x1e750c84), TOBN(0xc57f7b0c, 0x5dc6c469), + TOBN(0x49a0e79c, 0x6fbc19c1), TOBN(0x6b0f5889, 0xa48ebdb8)}, + {TOBN(0x5d3fd084, 0xa07c4e9f), TOBN(0xc3830111, 0xab27de14), + TOBN(0x0e4929fe, 0x33e08dcc), TOBN(0xf4a5ad24, 0x40bb73a3)}}, + {{TOBN(0xde86c2bf, 0x490f97ca), TOBN(0x288f09c6, 0x67a1ce18), + TOBN(0x364bb886, 0x1844478d), TOBN(0x7840fa42, 0xceedb040)}, + {TOBN(0x1269fdd2, 0x5a631b37), TOBN(0x94761f1e, 0xa47c8b7d), + TOBN(0xfc0c2e17, 0x481c6266), TOBN(0x85e16ea2, 0x3daa5fa7)}}, + {{TOBN(0xccd86033, 0x92491048), TOBN(0x0c2f6963, 0xf4d402d7), + TOBN(0x6336f7df, 0xdf6a865c), TOBN(0x0a2a463c, 0xb5c02a87)}, + {TOBN(0xb0e29be7, 0xbf2f12ee), TOBN(0xf0a22002, 0x66bad988), + TOBN(0x27f87e03, 0x9123c1d7), TOBN(0x21669c55, 0x328a8c98)}}, + {{TOBN(0x186b9803, 0x92f14529), TOBN(0xd3d056cc, 0x63954df3), + TOBN(0x2f03fd58, 0x175a46f6), TOBN(0x63e34ebe, 0x11558558)}, + {TOBN(0xe13fedee, 0x5b80cfa5), TOBN(0xe872a120, 0xd401dbd1), + TOBN(0x52657616, 0xe8a9d667), TOBN(0xbc8da4b6, 0xe08d6693)}}, + {{TOBN(0x370fb9bb, 0x1b703e75), TOBN(0x6773b186, 0xd4338363), + TOBN(0x18dad378, 0xecef7bff), TOBN(0xaac787ed, 0x995677da)}, + {TOBN(0x4801ea8b, 0x0437164b), TOBN(0xf430ad20, 0x73fe795e), + TOBN(0xb164154d, 0x8ee5eb73), TOBN(0x0884ecd8, 0x108f7c0e)}}, + {{TOBN(0x0e6ec096, 0x5f520698), TOBN(0x640631fe, 0x44f7b8d9), + TOBN(0x92fd34fc, 0xa35a68b9), TOBN(0x9c5a4b66, 0x4d40cf4e)}, + {TOBN(0x949454bf, 0x80b6783d), TOBN(0x80e701fe, 0x3a320a10), + TOBN(0x8d1a564a, 0x1a0a39b2), TOBN(0x1436d53d, 0x320587db)}}, + {{TOBN(0xf5096e6d, 0x6556c362), TOBN(0xbc23a3c0, 0xe2455d7e), + TOBN(0x3a7aee54, 0x807230f9), TOBN(0x9ba1cfa6, 0x22ae82fd)}, + {TOBN(0x833a057a, 0x99c5d706), TOBN(0x8be85f4b, 0x842315c9), + TOBN(0xd083179a, 0x66a72f12), TOBN(0x2fc77d5d, 0xcdcc73cd)}}, + {{TOBN(0x22b88a80, 0x5616ee30), TOBN(0xfb09548f, 0xe7ab1083), + TOBN(0x8ad6ab0d, 0x511270cd), TOBN(0x61f6c57a, 0x6924d9ab)}, + {TOBN(0xa0f7bf72, 0x90aecb08), TOBN(0x849f87c9, 0x0df784a4), + TOBN(0x27c79c15, 0xcfaf1d03), TOBN(0xbbf9f675, 0xc463face)}}, + {{TOBN(0x91502c65, 0x765ba543), TOBN(0x18ce3cac, 0x42ea60dd), + TOBN(0xe5cee6ac, 0x6e43ecb3), TOBN(0x63e4e910, 0x68f2aeeb)}, + {TOBN(0x26234fa3, 0xc85932ee), TOBN(0x96883e8b, 0x4c90c44d), + TOBN(0x29b9e738, 0xa18a50f6), TOBN(0xbfc62b2a, 0x3f0420df)}}, + {{TOBN(0xd22a7d90, 0x6d3e1fa9), TOBN(0x17115618, 0xfe05b8a3), + TOBN(0x2a0c9926, 0xbb2b9c01), TOBN(0xc739fcc6, 0xe07e76a2)}, + {TOBN(0x540e9157, 0x165e439a), TOBN(0x06353a62, 0x6a9063d8), + TOBN(0x84d95594, 0x61e927a3), TOBN(0x013b9b26, 0xe2e0be7f)}}, + {{TOBN(0x4feaec3b, 0x973497f1), TOBN(0x15c0f94e, 0x093ebc2d), + TOBN(0x6af5f227, 0x33af0583), TOBN(0x0c2af206, 0xc61f3340)}, + {TOBN(0xd25dbdf1, 0x4457397c), TOBN(0x2e8ed017, 0xcabcbae0), + TOBN(0xe3010938, 0xc2815306), TOBN(0xbaa99337, 0xe8c6cd68)}}, + {{TOBN(0x08513182, 0x3b0ec7de), TOBN(0x1e1b822b, 0x58df05df), + TOBN(0x5c14842f, 0xa5c3b683), TOBN(0x98fe977e, 0x3eba34ce)}, + {TOBN(0xfd2316c2, 0x0d5e8873), TOBN(0xe48d839a, 0xbd0d427d), + TOBN(0x495b2218, 0x623fc961), TOBN(0x24ee56e7, 0xb46fba5e)}}, + {{TOBN(0x9184a55b, 0x91e4de58), TOBN(0xa7488ca5, 0xdfdea288), + TOBN(0xa723862e, 0xa8dcc943), TOBN(0x92d762b2, 0x849dc0fc)}, + {TOBN(0x3c444a12, 0x091ff4a9), TOBN(0x581113fa, 0x0cada274), + TOBN(0xb9de0a45, 0x30d8eae2), TOBN(0x5e0fcd85, 0xdf6b41ea)}}, + {{TOBN(0x6233ea68, 0xc094dbb5), TOBN(0xb77d062e, 0xd968d410), + TOBN(0x3e719bbc, 0x58b3002d), TOBN(0x68e7dd3d, 0x3dc49d58)}, + {TOBN(0x8d825740, 0x013a5e58), TOBN(0x21311747, 0x3c9e3c1b), + TOBN(0x0cb0a2a7, 0x7c99b6ab), TOBN(0x5c48a3b3, 0xc2f888f2)}}}, + {{{TOBN(0xc7913e91, 0x991724f3), TOBN(0x5eda799c, 0x39cbd686), + TOBN(0xddb595c7, 0x63d4fc1e), TOBN(0x6b63b80b, 0xac4fed54)}, + {TOBN(0x6ea0fc69, 0x7e5fb516), TOBN(0x737708ba, 0xd0f1c964), + TOBN(0x9628745f, 0x11a92ca5), TOBN(0x61f37958, 0x9a86967a)}}, + {{TOBN(0x9af39b2c, 0xaa665072), TOBN(0x78322fa4, 0xefd324ef), + TOBN(0x3d153394, 0xc327bd31), TOBN(0x81d5f271, 0x3129dab0)}, + {TOBN(0xc72e0c42, 0xf48027f5), TOBN(0xaa40cdbc, 0x8536e717), + TOBN(0xf45a657a, 0x2d369d0f), TOBN(0xb03bbfc4, 0xea7f74e6)}}, + {{TOBN(0x46a8c418, 0x0d738ded), TOBN(0x6f1a5bb0, 0xe0de5729), + TOBN(0xf10230b9, 0x8ba81675), TOBN(0x32c6f30c, 0x112b33d4)}, + {TOBN(0x7559129d, 0xd8fffb62), TOBN(0x6a281b47, 0xb459bf05), + TOBN(0x77c1bd3a, 0xfa3b6776), TOBN(0x0709b380, 0x7829973a)}}, + {{TOBN(0x8c26b232, 0xa3326505), TOBN(0x38d69272, 0xee1d41bf), + TOBN(0x0459453e, 0xffe32afa), TOBN(0xce8143ad, 0x7cb3ea87)}, + {TOBN(0x932ec1fa, 0x7e6ab666), TOBN(0x6cd2d230, 0x22286264), + TOBN(0x459a46fe, 0x6736f8ed), TOBN(0x50bf0d00, 0x9eca85bb)}}, + {{TOBN(0x0b825852, 0x877a21ec), TOBN(0x300414a7, 0x0f537a94), + TOBN(0x3f1cba40, 0x21a9a6a2), TOBN(0x50824eee, 0x76943c00)}, + {TOBN(0xa0dbfcec, 0xf83cba5d), TOBN(0xf9538148, 0x93b4f3c0), + TOBN(0x61744162, 0x48f24dd7), TOBN(0x5322d64d, 0xe4fb09dd)}}, + {{TOBN(0x57447384, 0x3d9325f3), TOBN(0xa9bef2d0, 0xf371cb84), + TOBN(0x77d2188b, 0xa61e36c5), TOBN(0xbbd6a7d7, 0xc602df72)}, + {TOBN(0xba3aa902, 0x8f61bc0b), TOBN(0xf49085ed, 0x6ed0b6a1), + TOBN(0x8bc625d6, 0xae6e8298), TOBN(0x832b0b1d, 0xa2e9c01d)}}, + {{TOBN(0xa337c447, 0xf1f0ced1), TOBN(0x800cc793, 0x9492dd2b), + TOBN(0x4b93151d, 0xbea08efa), TOBN(0x820cf3f8, 0xde0a741e)}, + {TOBN(0xff1982dc, 0x1c0f7d13), TOBN(0xef921960, 0x84dde6ca), + TOBN(0x1ad7d972, 0x45f96ee3), TOBN(0x319c8dbe, 0x29dea0c7)}}, + {{TOBN(0xd3ea3871, 0x7b82b99b), TOBN(0x75922d4d, 0x470eb624), + TOBN(0x8f66ec54, 0x3b95d466), TOBN(0x66e673cc, 0xbee1e346)}, + {TOBN(0x6afe67c4, 0xb5f2b89a), TOBN(0x3de9c1e6, 0x290e5cd3), + TOBN(0x8c278bb6, 0x310a2ada), TOBN(0x420fa384, 0x0bdb323b)}}, + {{TOBN(0x0ae1d63b, 0x0eb919b0), TOBN(0xd74ee51d, 0xa74b9620), + TOBN(0x395458d0, 0xa674290c), TOBN(0x324c930f, 0x4620a510)}, + {TOBN(0x2d1f4d19, 0xfbac27d4), TOBN(0x4086e8ca, 0x9bedeeac), + TOBN(0x0cdd211b, 0x9b679ab8), TOBN(0x5970167d, 0x7090fec4)}}, + {{TOBN(0x3420f2c9, 0xfaf1fc63), TOBN(0x616d333a, 0x328c8bb4), + TOBN(0x7d65364c, 0x57f1fe4a), TOBN(0x9343e877, 0x55e5c73a)}, + {TOBN(0x5795176b, 0xe970e78c), TOBN(0xa36ccebf, 0x60533627), + TOBN(0xfc7c7380, 0x09cdfc1b), TOBN(0xb39a2afe, 0xb3fec326)}}, + {{TOBN(0xb7ff1ba1, 0x6224408a), TOBN(0xcc856e92, 0x247cfc5e), + TOBN(0x01f102e7, 0xc18bc493), TOBN(0x4613ab74, 0x2091c727)}, + {TOBN(0xaa25e89c, 0xc420bf2b), TOBN(0x00a53176, 0x90337ec2), + TOBN(0xd2be9f43, 0x7d025fc7), TOBN(0x3316fb85, 0x6e6fe3dc)}}, + {{TOBN(0x27520af5, 0x9ac50814), TOBN(0xfdf95e78, 0x9a8e4223), + TOBN(0xb7e7df2a, 0x56bec5a0), TOBN(0xf7022f7d, 0xdf159e5d)}, + {TOBN(0x93eeeab1, 0xcac1fe8f), TOBN(0x8040188c, 0x37451168), + TOBN(0x7ee8aa8a, 0xd967dce6), TOBN(0xfa0e79e7, 0x3abc9299)}}, + {{TOBN(0x67332cfc, 0x2064cfd1), TOBN(0x339c31de, 0xb0651934), + TOBN(0x719b28d5, 0x2a3bcbea), TOBN(0xee74c82b, 0x9d6ae5c6)}, + {TOBN(0x0927d05e, 0xbaf28ee6), TOBN(0x82cecf2c, 0x9d719028), + TOBN(0x0b0d353e, 0xddb30289), TOBN(0xfe4bb977, 0xfddb2e29)}}, + {{TOBN(0xbb5bb990, 0x640bfd9e), TOBN(0xd226e277, 0x82f62108), + TOBN(0x4bf00985, 0x02ffdd56), TOBN(0x7756758a, 0x2ca1b1b5)}, + {TOBN(0xc32b62a3, 0x5285fe91), TOBN(0xedbc546a, 0x8c9cd140), + TOBN(0x1e47a013, 0xaf5cb008), TOBN(0xbca7e720, 0x073ce8f2)}}, + {{TOBN(0xe10b2ab8, 0x17a91cae), TOBN(0xb89aab65, 0x08e27f63), + TOBN(0x7b3074a7, 0xdba3ddf9), TOBN(0x1c20ce09, 0x330c2972)}, + {TOBN(0x6b9917b4, 0x5fcf7e33), TOBN(0xe6793743, 0x945ceb42), + TOBN(0x18fc2215, 0x5c633d19), TOBN(0xad1adb3c, 0xc7485474)}}, + {{TOBN(0x646f9679, 0x6424c49b), TOBN(0xf888dfe8, 0x67c241c9), + TOBN(0xe12d4b93, 0x24f68b49), TOBN(0x9a6b62d8, 0xa571df20)}, + {TOBN(0x81b4b26d, 0x179483cb), TOBN(0x666f9632, 0x9511fae2), + TOBN(0xd281b3e4, 0xd53aa51f), TOBN(0x7f96a765, 0x7f3dbd16)}}, + {{TOBN(0xa7f8b5bf, 0x074a30ce), TOBN(0xd7f52107, 0x005a32e6), + TOBN(0x6f9e0907, 0x50237ed4), TOBN(0x2f21da47, 0x8096fa2b)}, + {TOBN(0xf3e19cb4, 0xeec863a0), TOBN(0xd18f77fd, 0x9527620a), + TOBN(0x9505c81c, 0x407c1cf8), TOBN(0x9998db4e, 0x1b6ec284)}}, + {{TOBN(0x7e3389e5, 0xc247d44d), TOBN(0x12507141, 0x3f4f3d80), + TOBN(0xd4ba0110, 0x4a78a6c7), TOBN(0x312874a0, 0x767720be)}, + {TOBN(0xded059a6, 0x75944370), TOBN(0xd6123d90, 0x3b2c0bdd), + TOBN(0xa56b717b, 0x51c108e3), TOBN(0x9bb7940e, 0x070623e9)}}, + {{TOBN(0x794e2d59, 0x84ac066c), TOBN(0xf5954a92, 0xe68c69a0), + TOBN(0x28c52458, 0x4fd99dcc), TOBN(0x60e639fc, 0xb1012517)}, + {TOBN(0xc2e60125, 0x7de79248), TOBN(0xe9ef6404, 0xf12fc6d7), + TOBN(0x4c4f2808, 0x2a3b5d32), TOBN(0x865ad32e, 0xc768eb8a)}}, + {{TOBN(0xac02331b, 0x13fb70b6), TOBN(0x037b44c1, 0x95599b27), + TOBN(0x1a860fc4, 0x60bd082c), TOBN(0xa2e25745, 0xc980cd01)}, + {TOBN(0xee3387a8, 0x1da0263e), TOBN(0x931bfb95, 0x2d10f3d6), + TOBN(0x5b687270, 0xa1f24a32), TOBN(0xf140e65d, 0xca494b86)}}, + {{TOBN(0x4f4ddf91, 0xb2f1ac7a), TOBN(0xf99eaabb, 0x760fee27), + TOBN(0x57f4008a, 0x49c228e5), TOBN(0x090be440, 0x1cf713bb)}, + {TOBN(0xac91fbe4, 0x5004f022), TOBN(0xd838c2c2, 0x569e1af6), + TOBN(0xd6c7d20b, 0x0f1daaa5), TOBN(0xaa063ac1, 0x1bbb02c0)}}, + {{TOBN(0x0938a422, 0x59558a78), TOBN(0x5343c669, 0x8435da2f), + TOBN(0x96f67b18, 0x034410dc), TOBN(0x7cc1e424, 0x84510804)}, + {TOBN(0x86a1543f, 0x16dfbb7d), TOBN(0x921fa942, 0x5b5bd592), + TOBN(0x9dcccb6e, 0xb33dd03c), TOBN(0x8581ddd9, 0xb843f51e)}}, + {{TOBN(0x54935fcb, 0x81d73c9e), TOBN(0x6d07e979, 0x0a5e97ab), + TOBN(0x4dc7b30a, 0xcf3a6bab), TOBN(0x147ab1f3, 0x170bee11)}, + {TOBN(0x0aaf8e3d, 0x9fafdee4), TOBN(0xfab3dbcb, 0x538a8b95), + TOBN(0x405df4b3, 0x6ef13871), TOBN(0xf1f4e9cb, 0x088d5a49)}}, + {{TOBN(0x9bcd24d3, 0x66b33f1d), TOBN(0x3b97b820, 0x5ce445c0), + TOBN(0xe2926549, 0xba93ff61), TOBN(0xd9c341ce, 0x4dafe616)}, + {TOBN(0xfb30a76e, 0x16efb6f3), TOBN(0xdf24b8ca, 0x605b953c), + TOBN(0x8bd52afe, 0xc2fffb9f), TOBN(0xbbac5ff7, 0xe19d0b96)}}, + {{TOBN(0x43c01b87, 0x459afccd), TOBN(0x6bd45143, 0xb7432652), + TOBN(0x84734530, 0x55b5d78e), TOBN(0x81088fdb, 0x1554ba7d)}, + {TOBN(0xada0a52c, 0x1e269375), TOBN(0xf9f037c4, 0x2dc5ec10), + TOBN(0xc0660607, 0x94bfbc11), TOBN(0xc0a630bb, 0xc9c40d2f)}}, + {{TOBN(0x5efc797e, 0xab64c31e), TOBN(0xffdb1dab, 0x74507144), + TOBN(0xf6124287, 0x1ca6790c), TOBN(0xe9609d81, 0xe69bf1bf)}, + {TOBN(0xdb898595, 0x00d24fc9), TOBN(0x9c750333, 0xe51fb417), + TOBN(0x51830a91, 0xfef7bbde), TOBN(0x0ce67dc8, 0x945f585c)}}, + {{TOBN(0x9a730ed4, 0x4763eb50), TOBN(0x24a0e221, 0xc1ab0d66), + TOBN(0x643b6393, 0x648748f3), TOBN(0x1982daa1, 0x6d3c6291)}, + {TOBN(0x6f00a9f7, 0x8bbc5549), TOBN(0x7a1783e1, 0x7f36384e), + TOBN(0xe8346323, 0xde977f50), TOBN(0x91ab688d, 0xb245502a)}}, + {{TOBN(0x331ab6b5, 0x6d0bdd66), TOBN(0x0a6ef32e, 0x64b71229), + TOBN(0x1028150e, 0xfe7c352f), TOBN(0x27e04350, 0xce7b39d3)}, + {TOBN(0x2a3c8acd, 0xc1070c82), TOBN(0xfb2034d3, 0x80c9feef), + TOBN(0x2d729621, 0x709f3729), TOBN(0x8df290bf, 0x62cb4549)}}, + {{TOBN(0x02f99f33, 0xfc2e4326), TOBN(0x3b30076d, 0x5eddf032), + TOBN(0xbb21f8cf, 0x0c652fb5), TOBN(0x314fb49e, 0xed91cf7b)}, + {TOBN(0xa013eca5, 0x2f700750), TOBN(0x2b9e3c23, 0x712a4575), + TOBN(0xe5355557, 0xaf30fbb0), TOBN(0x1ada3516, 0x7c77e771)}}, + {{TOBN(0x45f6ecb2, 0x7b135670), TOBN(0xe85d19df, 0x7cfc202e), + TOBN(0x0f1b50c7, 0x58d1be9f), TOBN(0x5ebf2c0a, 0xead2e344)}, + {TOBN(0x1531fe4e, 0xabc199c9), TOBN(0xc7032592, 0x56bab0ae), + TOBN(0x16ab2e48, 0x6c1fec54), TOBN(0x0f87fda8, 0x04280188)}}, + {{TOBN(0xdc9f46fc, 0x609e4a74), TOBN(0x2a44a143, 0xba667f91), + TOBN(0xbc3d8b95, 0xb4d83436), TOBN(0xa01e4bd0, 0xc7bd2958)}, + {TOBN(0x7b182932, 0x73483c90), TOBN(0xa79c6aa1, 0xa7c7b598), + TOBN(0xbf3983c6, 0xeaaac07e), TOBN(0x8f18181e, 0x96e0d4e6)}}, + {{TOBN(0x8553d37c, 0x051af62b), TOBN(0xe9a998eb, 0x0bf94496), + TOBN(0xe0844f9f, 0xb0d59aa1), TOBN(0x983fd558, 0xe6afb813)}, + {TOBN(0x9670c0ca, 0x65d69804), TOBN(0x732b22de, 0x6ea5ff2d), + TOBN(0xd7640ba9, 0x5fd8623b), TOBN(0x9f619163, 0xa6351782)}}, + {{TOBN(0x0bfc27ee, 0xacee5043), TOBN(0xae419e73, 0x2eb10f02), + TOBN(0x19c028d1, 0x8943fb05), TOBN(0x71f01cf7, 0xff13aa2a)}, + {TOBN(0x7790737e, 0x8887a132), TOBN(0x67513309, 0x66318410), + TOBN(0x9819e8a3, 0x7ddb795e), TOBN(0xfecb8ef5, 0xdad100b2)}}, + {{TOBN(0x59f74a22, 0x3021926a), TOBN(0xb7c28a49, 0x6f9b4c1c), + TOBN(0xed1a733f, 0x912ad0ab), TOBN(0x42a910af, 0x01a5659c)}, + {TOBN(0x3842c6e0, 0x7bd68cab), TOBN(0x2b57fa38, 0x76d70ac8), + TOBN(0x8a6707a8, 0x3c53aaeb), TOBN(0x62c1c510, 0x65b4db18)}}, + {{TOBN(0x8de2c1fb, 0xb2d09dc7), TOBN(0xc3dfed12, 0x266bd23b), + TOBN(0x927d039b, 0xd5b27db6), TOBN(0x2fb2f0f1, 0x103243da)}, + {TOBN(0xf855a07b, 0x80be7399), TOBN(0xed9327ce, 0x1f9f27a8), + TOBN(0xa0bd99c7, 0x729bdef7), TOBN(0x2b67125e, 0x28250d88)}}, + {{TOBN(0x784b26e8, 0x8670ced7), TOBN(0xe3dfe41f, 0xc31bd3b4), + TOBN(0x9e353a06, 0xbcc85cbc), TOBN(0x302e2909, 0x60178a9d)}, + {TOBN(0x860abf11, 0xa6eac16e), TOBN(0x76447000, 0xaa2b3aac), + TOBN(0x46ff9d19, 0x850afdab), TOBN(0x35bdd6a5, 0xfdb2d4c1)}}, + {{TOBN(0xe82594b0, 0x7e5c9ce9), TOBN(0x0f379e53, 0x20af346e), + TOBN(0x608b31e3, 0xbc65ad4a), TOBN(0x710c6b12, 0x267c4826)}, + {TOBN(0x51c966f9, 0x71954cf1), TOBN(0xb1cec793, 0x0d0aa215), + TOBN(0x1f155989, 0x86bd23a8), TOBN(0xae2ff99c, 0xf9452e86)}}, + {{TOBN(0xd8dd953c, 0x340ceaa2), TOBN(0x26355275, 0x2e2e9333), + TOBN(0x15d4e5f9, 0x8586f06d), TOBN(0xd6bf94a8, 0xf7cab546)}, + {TOBN(0x33c59a0a, 0xb76a9af0), TOBN(0x52740ab3, 0xba095af7), + TOBN(0xc444de8a, 0x24389ca0), TOBN(0xcc6f9863, 0x706da0cb)}}, + {{TOBN(0xb5a741a7, 0x6b2515cf), TOBN(0x71c41601, 0x9585c749), + TOBN(0x78350d4f, 0xe683de97), TOBN(0x31d61524, 0x63d0b5f5)}, + {TOBN(0x7a0cc5e1, 0xfbce090b), TOBN(0xaac927ed, 0xfbcb2a5b), + TOBN(0xe920de49, 0x20d84c35), TOBN(0x8c06a0b6, 0x22b4de26)}}, + {{TOBN(0xd34dd58b, 0xafe7ddf3), TOBN(0x55851fed, 0xc1e6e55b), + TOBN(0xd1395616, 0x960696e7), TOBN(0x940304b2, 0x5f22705f)}, + {TOBN(0x6f43f861, 0xb0a2a860), TOBN(0xcf121282, 0x0e7cc981), + TOBN(0x12186212, 0x0ab64a96), TOBN(0x09215b9a, 0xb789383c)}}, + {{TOBN(0x311eb305, 0x37387c09), TOBN(0xc5832fce, 0xf03ee760), + TOBN(0x30358f58, 0x32f7ea19), TOBN(0xe01d3c34, 0x91d53551)}, + {TOBN(0x1ca5ee41, 0xda48ea80), TOBN(0x34e71e8e, 0xcf4fa4c1), + TOBN(0x312abd25, 0x7af1e1c7), TOBN(0xe3afcdeb, 0x2153f4a5)}}, + {{TOBN(0x9d5c84d7, 0x00235e9a), TOBN(0x0308d3f4, 0x8c4c836f), + TOBN(0xc0a66b04, 0x89332de5), TOBN(0x610dd399, 0x89e566ef)}, + {TOBN(0xf8eea460, 0xd1ac1635), TOBN(0x84cbb3fb, 0x20a2c0df), + TOBN(0x40afb488, 0xe74a48c5), TOBN(0x29738198, 0xd326b150)}}, + {{TOBN(0x2a17747f, 0xa6d74081), TOBN(0x60ea4c05, 0x55a26214), + TOBN(0x53514bb4, 0x1f88c5fe), TOBN(0xedd64567, 0x7e83426c)}, + {TOBN(0xd5d6cbec, 0x96460b25), TOBN(0xa12fd0ce, 0x68dc115e), + TOBN(0xc5bc3ed2, 0x697840ea), TOBN(0x969876a8, 0xa6331e31)}}, + {{TOBN(0x60c36217, 0x472ff580), TOBN(0xf4229705, 0x4ad41393), + TOBN(0x4bd99ef0, 0xa03b8b92), TOBN(0x501c7317, 0xc144f4f6)}, + {TOBN(0x159009b3, 0x18464945), TOBN(0x6d5e594c, 0x74c5c6be), + TOBN(0x2d587011, 0x321a3660), TOBN(0xd1e184b1, 0x3898d022)}}, + {{TOBN(0x5ba04752, 0x4c6a7e04), TOBN(0x47fa1e2b, 0x45550b65), + TOBN(0x9419daf0, 0x48c0a9a5), TOBN(0x66362953, 0x7c243236)}, + {TOBN(0xcd0744b1, 0x5cb12a88), TOBN(0x561b6f9a, 0x2b646188), + TOBN(0x599415a5, 0x66c2c0c0), TOBN(0xbe3f0859, 0x0f83f09a)}}, + {{TOBN(0x9141c5be, 0xb92041b8), TOBN(0x01ae38c7, 0x26477d0d), + TOBN(0xca8b71f3, 0xd12c7a94), TOBN(0xfab5b31f, 0x765c70db)}, + {TOBN(0x76ae7492, 0x487443e9), TOBN(0x8595a310, 0x990d1349), + TOBN(0xf8dbeda8, 0x7d460a37), TOBN(0x7f7ad082, 0x1e45a38f)}}, + {{TOBN(0xed1d4db6, 0x1059705a), TOBN(0xa3dd492a, 0xe6b9c697), + TOBN(0x4b92ee3a, 0x6eb38bd5), TOBN(0xbab2609d, 0x67cc0bb7)}, + {TOBN(0x7fc4fe89, 0x6e70ee82), TOBN(0xeff2c56e, 0x13e6b7e3), + TOBN(0x9b18959e, 0x34d26fca), TOBN(0x2517ab66, 0x889d6b45)}}, + {{TOBN(0xf167b4e0, 0xbdefdd4f), TOBN(0x69958465, 0xf366e401), + TOBN(0x5aa368ab, 0xa73bbec0), TOBN(0x12148709, 0x7b240c21)}, + {TOBN(0x378c3233, 0x18969006), TOBN(0xcb4d73ce, 0xe1fe53d1), + TOBN(0x5f50a80e, 0x130c4361), TOBN(0xd67f5951, 0x7ef5212b)}}, + {{TOBN(0xf145e21e, 0x9e70c72e), TOBN(0xb2e52e29, 0x5566d2fb), + TOBN(0x44eaba4a, 0x032397f5), TOBN(0x5e56937b, 0x7e31a7de)}, + {TOBN(0x68dcf517, 0x456c61e1), TOBN(0xbc2e954a, 0xa8b0a388), + TOBN(0xe3552fa7, 0x60a8b755), TOBN(0x03442dae, 0x73ad0cde)}}, + {{TOBN(0x37ffe747, 0xceb26210), TOBN(0x983545e8, 0x787baef9), + TOBN(0x8b8c8535, 0x86a3de31), TOBN(0xc621dbcb, 0xfacd46db)}, + {TOBN(0x82e442e9, 0x59266fbb), TOBN(0xa3514c37, 0x339d471c), + TOBN(0x3a11b771, 0x62cdad96), TOBN(0xf0cb3b3c, 0xecf9bdf0)}}, + {{TOBN(0x3fcbdbce, 0x478e2135), TOBN(0x7547b5cf, 0xbda35342), + TOBN(0xa97e81f1, 0x8a677af6), TOBN(0xc8c2bf83, 0x28817987)}, + {TOBN(0xdf07eaaf, 0x45580985), TOBN(0xc68d1f05, 0xc93b45cb), + TOBN(0x106aa2fe, 0xc77b4cac), TOBN(0x4c1d8afc, 0x04a7ae86)}}, + {{TOBN(0xdb41c3fd, 0x9eb45ab2), TOBN(0x5b234b5b, 0xd4b22e74), + TOBN(0xda253dec, 0xf215958a), TOBN(0x67e0606e, 0xa04edfa0)}, + {TOBN(0xabbbf070, 0xef751b11), TOBN(0xf352f175, 0xf6f06dce), + TOBN(0xdfc4b6af, 0x6839f6b4), TOBN(0x53ddf9a8, 0x9959848e)}}, + {{TOBN(0xda49c379, 0xc21520b0), TOBN(0x90864ff0, 0xdbd5d1b6), + TOBN(0x2f055d23, 0x5f49c7f7), TOBN(0xe51e4e6a, 0xa796b2d8)}, + {TOBN(0xc361a67f, 0x5c9dc340), TOBN(0x5ad53c37, 0xbca7c620), + TOBN(0xda1d6588, 0x32c756d0), TOBN(0xad60d911, 0x8bb67e13)}}, + {{TOBN(0xd6c47bdf, 0x0eeec8c6), TOBN(0x4a27fec1, 0x078a1821), + TOBN(0x081f7415, 0xc3099524), TOBN(0x8effdf0b, 0x82cd8060)}, + {TOBN(0xdb70ec1c, 0x65842df8), TOBN(0x8821b358, 0xd319a901), + TOBN(0x72ee56ee, 0xde42b529), TOBN(0x5bb39592, 0x236e4286)}}, + {{TOBN(0xd1183316, 0xfd6f7140), TOBN(0xf9fadb5b, 0xbd8e81f7), + TOBN(0x701d5e0c, 0x5a02d962), TOBN(0xfdee4dbf, 0x1b601324)}, + {TOBN(0xbed17407, 0x35d7620e), TOBN(0x04e3c2c3, 0xf48c0012), + TOBN(0x9ee29da7, 0x3455449a), TOBN(0x562cdef4, 0x91a836c4)}}, + {{TOBN(0x8f682a5f, 0x47701097), TOBN(0x617125d8, 0xff88d0c2), + TOBN(0x948fda24, 0x57bb86dd), TOBN(0x348abb8f, 0x289f7286)}, + {TOBN(0xeb10eab5, 0x99d94bbd), TOBN(0xd51ba28e, 0x4684d160), + TOBN(0xabe0e51c, 0x30c8f41a), TOBN(0x66588b45, 0x13254f4a)}}, + {{TOBN(0x147ebf01, 0xfad097a5), TOBN(0x49883ea8, 0x610e815d), + TOBN(0xe44d60ba, 0x8a11de56), TOBN(0xa970de6e, 0x827a7a6d)}, + {TOBN(0x2be41424, 0x5e17fc19), TOBN(0xd833c657, 0x01214057), + TOBN(0x1375813b, 0x363e723f), TOBN(0x6820bb88, 0xe6a52e9b)}}, + {{TOBN(0x7e7f6970, 0xd875d56a), TOBN(0xd6a0a9ac, 0x51fbf6bf), + TOBN(0x54ba8790, 0xa3083c12), TOBN(0xebaeb23d, 0x6ae7eb64)}, + {TOBN(0xa8685c3a, 0xb99a907a), TOBN(0xf1e74550, 0x026bf40b), + TOBN(0x7b73a027, 0xc802cd9e), TOBN(0x9a8a927c, 0x4fef4635)}}, + {{TOBN(0xe1b6f60c, 0x08191224), TOBN(0xc4126ebb, 0xde4ec091), + TOBN(0xe1dff4dc, 0x4ae38d84), TOBN(0xde3f57db, 0x4f2ef985)}, + {TOBN(0x34964337, 0xd446a1dd), TOBN(0x7bf217a0, 0x859e77f6), + TOBN(0x8ff10527, 0x8e1d13f5), TOBN(0xa304ef03, 0x74eeae27)}}, + {{TOBN(0xfc6f5e47, 0xd19dfa5a), TOBN(0xdb007de3, 0x7fad982b), + TOBN(0x28205ad1, 0x613715f5), TOBN(0x251e6729, 0x7889529e)}, + {TOBN(0x72705184, 0x1ae98e78), TOBN(0xf818537d, 0x271cac32), + TOBN(0xc8a15b7e, 0xb7f410f5), TOBN(0xc474356f, 0x81f62393)}}, + {{TOBN(0x92dbdc5a, 0xc242316b), TOBN(0xabe060ac, 0xdbf4aff5), + TOBN(0x6e8c38fe, 0x909a8ec6), TOBN(0x43e514e5, 0x6116cb94)}, + {TOBN(0x2078fa38, 0x07d784f9), TOBN(0x1161a880, 0xf4b5b357), + TOBN(0x5283ce79, 0x13adea3d), TOBN(0x0756c3e6, 0xcc6a910b)}}, + {{TOBN(0x60bcfe01, 0xaaa79697), TOBN(0x04a73b29, 0x56391db1), + TOBN(0xdd8dad47, 0x189b45a0), TOBN(0xbfac0dd0, 0x48d5b8d9)}, + {TOBN(0x34ab3af5, 0x7d3d2ec2), TOBN(0x6fa2fc2d, 0x207bd3af), + TOBN(0x9ff40092, 0x66550ded), TOBN(0x719b3e87, 0x1fd5b913)}}, + {{TOBN(0xa573a496, 0x6d17fbc7), TOBN(0x0cd1a70a, 0x73d2b24e), + TOBN(0x34e2c5ca, 0xb2676937), TOBN(0xe7050b06, 0xbf669f21)}, + {TOBN(0xfbe948b6, 0x1ede9046), TOBN(0xa0530051, 0x97662659), + TOBN(0x58cbd4ed, 0xf10124c5), TOBN(0xde2646e4, 0xdd6c06c8)}}, + {{TOBN(0x332f8108, 0x8cad38c0), TOBN(0x471b7e90, 0x6bd68ae2), + TOBN(0x56ac3fb2, 0x0d8e27a3), TOBN(0xb54660db, 0x136b4b0d)}, + {TOBN(0x123a1e11, 0xa6fd8de4), TOBN(0x44dbffea, 0xa37799ef), + TOBN(0x4540b977, 0xce6ac17c), TOBN(0x495173a8, 0xaf60acef)}}}, + {{{TOBN(0x9ebb284d, 0x391c2a82), TOBN(0xbcdd4863, 0x158308e8), + TOBN(0x006f16ec, 0x83f1edca), TOBN(0xa13e2c37, 0x695dc6c8)}, + {TOBN(0x2ab756f0, 0x4a057a87), TOBN(0xa8765500, 0xa6b48f98), + TOBN(0x4252face, 0x68651c44), TOBN(0xa52b540b, 0xe1765e02)}}, + {{TOBN(0x4f922fc5, 0x16a0d2bb), TOBN(0x0d5cc16c, 0x1a623499), + TOBN(0x9241cf3a, 0x57c62c8b), TOBN(0x2f5e6961, 0xfd1b667f)}, + {TOBN(0x5c15c70b, 0xf5a01797), TOBN(0x3d20b44d, 0x60956192), + TOBN(0x04911b37, 0x071fdb52), TOBN(0xf648f916, 0x8d6f0f7b)}}, + {{TOBN(0x6dc1acaf, 0xe60b7cf7), TOBN(0x25860a50, 0x84a9d869), + TOBN(0x56fc6f09, 0xe7ba8ac4), TOBN(0x828c5bd0, 0x6148d29e)}, + {TOBN(0xac6b435e, 0xdc55ae5f), TOBN(0xa527f56c, 0xc0117411), + TOBN(0x94d5045e, 0xfd24342c), TOBN(0x2c4c0a35, 0x70b67c0d)}}, + {{TOBN(0x027cc8b8, 0xfac61d9a), TOBN(0x7d25e062, 0xe3c6fe8a), + TOBN(0xe08805bf, 0xe5bff503), TOBN(0x13271e6c, 0x6ff632f7)}, + {TOBN(0x55dca6c0, 0x232f76a5), TOBN(0x8957c32d, 0x701ef426), + TOBN(0xee728bcb, 0xa10a5178), TOBN(0x5ea60411, 0xb62c5173)}}, + {{TOBN(0xfc4e964e, 0xd0b8892b), TOBN(0x9ea17683, 0x9301bb74), + TOBN(0x6265c5ae, 0xfcc48626), TOBN(0xe60cf82e, 0xbb3e9102)}, + {TOBN(0x57adf797, 0xd4df5531), TOBN(0x235b59a1, 0x8deeefe2), + TOBN(0x60adcf58, 0x3f306eb1), TOBN(0x105c2753, 0x3d09492d)}}, + {{TOBN(0x4090914b, 0xb5def996), TOBN(0x1cb69c83, 0x233dd1e7), + TOBN(0xc1e9c1d3, 0x9b3d5e76), TOBN(0x1f3338ed, 0xfccf6012)}, + {TOBN(0xb1e95d0d, 0x2f5378a8), TOBN(0xacf4c2c7, 0x2f00cd21), + TOBN(0x6e984240, 0xeb5fe290), TOBN(0xd66c038d, 0x248088ae)}}, + {{TOBN(0x804d264a, 0xf94d70cf), TOBN(0xbdb802ef, 0x7314bf7e), + TOBN(0x8fb54de2, 0x4333ed02), TOBN(0x740461e0, 0x285635d9)}, + {TOBN(0x4113b2c8, 0x365e9383), TOBN(0xea762c83, 0x3fdef652), + TOBN(0x4eec6e2e, 0x47b956c1), TOBN(0xa3d814be, 0x65620fa4)}}, + {{TOBN(0x9ad5462b, 0xb4d8bc50), TOBN(0x181c0b16, 0xa9195770), + TOBN(0xebd4fe1c, 0x78412a68), TOBN(0xae0341bc, 0xc0dff48c)}, + {TOBN(0xb6bc45cf, 0x7003e866), TOBN(0xf11a6dea, 0x8a24a41b), + TOBN(0x5407151a, 0xd04c24c2), TOBN(0x62c9d27d, 0xda5b7b68)}}, + {{TOBN(0x2e964235, 0x88cceff6), TOBN(0x8594c54f, 0x8b07ed69), + TOBN(0x1578e73c, 0xc84d0d0d), TOBN(0x7b4e1055, 0xff532868)}, + {TOBN(0xa348c0d5, 0xb5ec995a), TOBN(0xbf4b9d55, 0x14289a54), + TOBN(0x9ba155a6, 0x58fbd777), TOBN(0x186ed7a8, 0x1a84491d)}}, + {{TOBN(0xd4992b30, 0x614c0900), TOBN(0xda98d121, 0xbd00c24b), + TOBN(0x7f534dc8, 0x7ec4bfa1), TOBN(0x4a5ff674, 0x37dc34bc)}, + {TOBN(0x68c196b8, 0x1d7ea1d7), TOBN(0x38cf2893, 0x80a6d208), + TOBN(0xfd56cd09, 0xe3cbbd6e), TOBN(0xec72e27e, 0x4205a5b6)}}, + {{TOBN(0x15ea68f5, 0xa44f77f7), TOBN(0x7aa5f9fd, 0xb43c52bc), + TOBN(0x86ff676f, 0x94f0e609), TOBN(0xa4cde963, 0x2e2d432b)}, + {TOBN(0x8cafa0c0, 0xeee470af), TOBN(0x84137d0e, 0x8a3f5ec8), + TOBN(0xebb40411, 0xfaa31231), TOBN(0xa239c13f, 0x6f7f7ccf)}}, + {{TOBN(0x32865719, 0xa8afd30b), TOBN(0x86798328, 0x8a826dce), + TOBN(0xdf04e891, 0xc4a8fbe0), TOBN(0xbb6b6e1b, 0xebf56ad3)}, + {TOBN(0x0a695b11, 0x471f1ff0), TOBN(0xd76c3389, 0xbe15baf0), + TOBN(0x018edb95, 0xbe96c43e), TOBN(0xf2beaaf4, 0x90794158)}}, + {{TOBN(0x152db09e, 0xc3076a27), TOBN(0x5e82908e, 0xe416545d), + TOBN(0xa2c41272, 0x356d6f2e), TOBN(0xdc9c9642, 0x31fd74e1)}, + {TOBN(0x66ceb88d, 0x519bf615), TOBN(0xe29ecd76, 0x05a2274e), + TOBN(0x3a0473c4, 0xbf5e2fa0), TOBN(0x6b6eb671, 0x64284e67)}}, + {{TOBN(0xe8b97932, 0xb88756dd), TOBN(0xed4e8652, 0xf17e3e61), + TOBN(0xc2dd1499, 0x3ee1c4a4), TOBN(0xc0aaee17, 0x597f8c0e)}, + {TOBN(0x15c4edb9, 0x6c168af3), TOBN(0x6563c7bf, 0xb39ae875), + TOBN(0xadfadb6f, 0x20adb436), TOBN(0xad55e8c9, 0x9a042ac0)}}, + {{TOBN(0x975a1ed8, 0xb76da1f5), TOBN(0x10dfa466, 0xa58acb94), + TOBN(0x8dd7f7e3, 0xac060282), TOBN(0x6813e66a, 0x572a051e)}, + {TOBN(0xb4ccae1e, 0x350cb901), TOBN(0xb653d656, 0x50cb7822), + TOBN(0x42484710, 0xdfab3b87), TOBN(0xcd7ee537, 0x9b670fd0)}}, + {{TOBN(0x0a50b12e, 0x523b8bf6), TOBN(0x8009eb5b, 0x8f910c1b), + TOBN(0xf535af82, 0x4a167588), TOBN(0x0f835f9c, 0xfb2a2abd)}, + {TOBN(0xf59b2931, 0x2afceb62), TOBN(0xc797df2a, 0x169d383f), + TOBN(0xeb3f5fb0, 0x66ac02b0), TOBN(0x029d4c6f, 0xdaa2d0ca)}}, + {{TOBN(0xd4059bc1, 0xafab4bc5), TOBN(0x833f5c6f, 0x56783247), + TOBN(0xb5346630, 0x8d2d3605), TOBN(0x83387891, 0xd34d8433)}, + {TOBN(0xd973b30f, 0xadd9419a), TOBN(0xbcca1099, 0xafe3fce8), + TOBN(0x08178315, 0x0809aac6), TOBN(0x01b7f21a, 0x540f0f11)}}, + {{TOBN(0x65c29219, 0x909523c8), TOBN(0xa62f648f, 0xa3a1c741), + TOBN(0x88598d4f, 0x60c9e55a), TOBN(0xbce9141b, 0x0e4f347a)}, + {TOBN(0x9af97d84, 0x35f9b988), TOBN(0x0210da62, 0x320475b6), + TOBN(0x3c076e22, 0x9191476c), TOBN(0x7520dbd9, 0x44fc7834)}}, + {{TOBN(0x6a6b2cfe, 0xc1ab1bbd), TOBN(0xef8a65be, 0xdc650938), + TOBN(0x72855540, 0x805d7bc4), TOBN(0xda389396, 0xed11fdfd)}, + {TOBN(0xa9d5bd36, 0x74660876), TOBN(0x11d67c54, 0xb45dff35), + TOBN(0x6af7d148, 0xa4f5da94), TOBN(0xbb8d4c3f, 0xc0bbeb31)}}, + {{TOBN(0x87a7ebd1, 0xe0a1b12a), TOBN(0x1e4ef88d, 0x770ba95f), + TOBN(0x8c33345c, 0xdc2ae9cb), TOBN(0xcecf1276, 0x01cc8403)}, + {TOBN(0x687c012e, 0x1b39b80f), TOBN(0xfd90d0ad, 0x35c33ba4), + TOBN(0xa3ef5a67, 0x5c9661c2), TOBN(0x368fc88e, 0xe017429e)}}, + {{TOBN(0xd30c6761, 0x196a2fa2), TOBN(0x931b9817, 0xbd5b312e), + TOBN(0xba01000c, 0x72f54a31), TOBN(0xa203d2c8, 0x66eaa541)}, + {TOBN(0xf2abdee0, 0x98939db3), TOBN(0xe37d6c2c, 0x3e606c02), + TOBN(0xf2921574, 0x521ff643), TOBN(0x2781b3c4, 0xd7e2fca3)}}, + {{TOBN(0x664300b0, 0x7850ec06), TOBN(0xac5a38b9, 0x7d3a10cf), + TOBN(0x9233188d, 0xe34ab39d), TOBN(0xe77057e4, 0x5072cbb9)}, + {TOBN(0xbcf0c042, 0xb59e78df), TOBN(0x4cfc91e8, 0x1d97de52), + TOBN(0x4661a26c, 0x3ee0ca4a), TOBN(0x5620a4c1, 0xfb8507bc)}}, + {{TOBN(0x4b44d4aa, 0x049f842c), TOBN(0xceabc5d5, 0x1540e82b), + TOBN(0x306710fd, 0x15c6f156), TOBN(0xbe5ae52b, 0x63db1d72)}, + {TOBN(0x06f1e7e6, 0x334957f1), TOBN(0x57e388f0, 0x31144a70), + TOBN(0xfb69bb2f, 0xdf96447b), TOBN(0x0f78ebd3, 0x73e38a12)}}, + {{TOBN(0xb8222605, 0x2b7ce542), TOBN(0xe6d4ce99, 0x7472bde1), + TOBN(0x53e16ebe, 0x09d2f4da), TOBN(0x180ff42e, 0x53b92b2e)}, + {TOBN(0xc59bcc02, 0x2c34a1c6), TOBN(0x3803d6f9, 0x422c46c2), + TOBN(0x18aff74f, 0x5c14a8a2), TOBN(0x55aebf80, 0x10a08b28)}}, + {{TOBN(0x66097d58, 0x7135593f), TOBN(0x32e6eff7, 0x2be570cd), + TOBN(0x584e6a10, 0x2a8c860d), TOBN(0xcd185890, 0xa2eb4163)}, + {TOBN(0x7ceae99d, 0x6d97e134), TOBN(0xd42c6b70, 0xdd8447ce), + TOBN(0x59ddbb4a, 0xb8c50273), TOBN(0x03c612df, 0x3cf34e1e)}}, + {{TOBN(0x84b9ca15, 0x04b6c5a0), TOBN(0x35216f39, 0x18f0e3a3), + TOBN(0x3ec2d2bc, 0xbd986c00), TOBN(0x8bf546d9, 0xd19228fe)}, + {TOBN(0xd1c655a4, 0x4cd623c3), TOBN(0x366ce718, 0x502b8e5a), + TOBN(0x2cfc84b4, 0xeea0bfe7), TOBN(0xe01d5cee, 0xcf443e8e)}}, + {{TOBN(0x8ec045d9, 0x036520f8), TOBN(0xdfb3c3d1, 0x92d40e98), + TOBN(0x0bac4cce, 0xcc559a04), TOBN(0x35eccae5, 0x240ea6b1)}, + {TOBN(0x180b32db, 0xf8a5a0ac), TOBN(0x547972a5, 0xeb699700), + TOBN(0xa3765801, 0xca26bca0), TOBN(0x57e09d0e, 0xa647f25a)}}, + {{TOBN(0xb956970e, 0x2fdd23cc), TOBN(0xb80288bc, 0x5682e971), + TOBN(0xe6e6d91e, 0x9ae86ebc), TOBN(0x0564c83f, 0x8c9f1939)}, + {TOBN(0x551932a2, 0x39560368), TOBN(0xe893752b, 0x049c28e2), + TOBN(0x0b03cee5, 0xa6a158c3), TOBN(0xe12d656b, 0x04964263)}}, + {{TOBN(0x4b47554e, 0x63e3bc1d), TOBN(0xc719b6a2, 0x45044ff7), + TOBN(0x4f24d30a, 0xe48daa07), TOBN(0xa3f37556, 0xc8c1edc3)}, + {TOBN(0x9a47bf76, 0x0700d360), TOBN(0xbb1a1824, 0x822ae4e2), + TOBN(0x22e275a3, 0x89f1fb4c), TOBN(0x72b1aa23, 0x9968c5f5)}}, + {{TOBN(0xa75feaca, 0xbe063f64), TOBN(0x9b392f43, 0xbce47a09), + TOBN(0xd4241509, 0x1ad07aca), TOBN(0x4b0c591b, 0x8d26cd0f)}, + {TOBN(0x2d42ddfd, 0x92f1169a), TOBN(0x63aeb1ac, 0x4cbf2392), + TOBN(0x1de9e877, 0x0691a2af), TOBN(0xebe79af7, 0xd98021da)}}, + {{TOBN(0xcfdf2a4e, 0x40e50acf), TOBN(0xf0a98ad7, 0xaf01d665), + TOBN(0xefb640bf, 0x1831be1f), TOBN(0x6fe8bd2f, 0x80e9ada0)}, + {TOBN(0x94c103a1, 0x6cafbc91), TOBN(0x170f8759, 0x8308e08c), + TOBN(0x5de2d2ab, 0x9780ff4f), TOBN(0x666466bc, 0x45b201f2)}}, + {{TOBN(0x58af2010, 0xf5b343bc), TOBN(0x0f2e400a, 0xf2f142fe), + TOBN(0x3483bfde, 0xa85f4bdf), TOBN(0xf0b1d093, 0x03bfeaa9)}, + {TOBN(0x2ea01b95, 0xc7081603), TOBN(0xe943e4c9, 0x3dba1097), + TOBN(0x47be92ad, 0xb438f3a6), TOBN(0x00bb7742, 0xe5bf6636)}}, + {{TOBN(0x136b7083, 0x824297b4), TOBN(0x9d0e5580, 0x5584455f), + TOBN(0xab48cedc, 0xf1c7d69e), TOBN(0x53a9e481, 0x2a256e76)}, + {TOBN(0x0402b0e0, 0x65eb2413), TOBN(0xdadbbb84, 0x8fc407a7), + TOBN(0xa65cd5a4, 0x8d7f5492), TOBN(0x21d44293, 0x74bae294)}}, + {{TOBN(0x66917ce6, 0x3b5f1cc4), TOBN(0x37ae52ea, 0xce872e62), + TOBN(0xbb087b72, 0x2905f244), TOBN(0x12077086, 0x1e6af74f)}, + {TOBN(0x4b644e49, 0x1058edea), TOBN(0x827510e3, 0xb638ca1d), + TOBN(0x8cf2b704, 0x6038591c), TOBN(0xffc8b47a, 0xfe635063)}}, + {{TOBN(0x3ae220e6, 0x1b4d5e63), TOBN(0xbd864742, 0x9d961b4b), + TOBN(0x610c107e, 0x9bd16bed), TOBN(0x4270352a, 0x1127147b)}, + {TOBN(0x7d17ffe6, 0x64cfc50e), TOBN(0x50dee01a, 0x1e36cb42), + TOBN(0x068a7622, 0x35dc5f9a), TOBN(0x9a08d536, 0xdf53f62c)}}, + {{TOBN(0x4ed71457, 0x6be5f7de), TOBN(0xd93006f8, 0xc2263c9e), + TOBN(0xe073694c, 0xcacacb36), TOBN(0x2ff7a5b4, 0x3ae118ab)}, + {TOBN(0x3cce53f1, 0xcd871236), TOBN(0xf156a39d, 0xc2aa6d52), + TOBN(0x9cc5f271, 0xb198d76d), TOBN(0xbc615b6f, 0x81383d39)}}, + {{TOBN(0xa54538e8, 0xde3eee6b), TOBN(0x58c77538, 0xab910d91), + TOBN(0x31e5bdbc, 0x58d278bd), TOBN(0x3cde4adf, 0xb963acae)}, + {TOBN(0xb1881fd2, 0x5302169c), TOBN(0x8ca60fa0, 0xa989ed8b), + TOBN(0xa1999458, 0xff96a0ee), TOBN(0xc1141f03, 0xac6c283d)}}, + {{TOBN(0x7677408d, 0x6dfafed3), TOBN(0x33a01653, 0x39661588), + TOBN(0x3c9c15ec, 0x0b726fa0), TOBN(0x090cfd93, 0x6c9b56da)}, + {TOBN(0xe34f4bae, 0xa3c40af5), TOBN(0x3469eadb, 0xd21129f1), + TOBN(0xcc51674a, 0x1e207ce8), TOBN(0x1e293b24, 0xc83b1ef9)}}, + {{TOBN(0x17173d13, 0x1e6c0bb4), TOBN(0x19004695, 0x90776d35), + TOBN(0xe7980e34, 0x6de6f922), TOBN(0x873554cb, 0xf4dd9a22)}, + {TOBN(0x0316c627, 0xcbf18a51), TOBN(0x4d93651b, 0x3032c081), + TOBN(0x207f2771, 0x3946834d), TOBN(0x2c08d7b4, 0x30cdbf80)}}, + {{TOBN(0x137a4fb4, 0x86df2a61), TOBN(0xa1ed9c07, 0xecf7b4a2), + TOBN(0xb2e460e2, 0x7bd042ff), TOBN(0xb7f5e2fa, 0x5f62f5ec)}, + {TOBN(0x7aa6ec6b, 0xcc2423b7), TOBN(0x75ce0a7f, 0xba63eea7), + TOBN(0x67a45fb1, 0xf250a6e1), TOBN(0x93bc919c, 0xe53cdc9f)}}, + {{TOBN(0x9271f56f, 0x871942df), TOBN(0x2372ff6f, 0x7859ad66), + TOBN(0x5f4c2b96, 0x33cb1a78), TOBN(0xe3e29101, 0x5838aa83)}, + {TOBN(0xa7ed1611, 0xe4e8110c), TOBN(0x2a2d70d5, 0x330198ce), + TOBN(0xbdf132e8, 0x6720efe0), TOBN(0xe61a8962, 0x66a471bf)}}, + {{TOBN(0x796d3a85, 0x825808bd), TOBN(0x51dc3cb7, 0x3fd6e902), + TOBN(0x643c768a, 0x916219d1), TOBN(0x36cd7685, 0xa2ad7d32)}, + {TOBN(0xe3db9d05, 0xb22922a4), TOBN(0x6494c87e, 0xdba29660), + TOBN(0xf0ac91df, 0xbcd2ebc7), TOBN(0x4deb57a0, 0x45107f8d)}}, + {{TOBN(0x42271f59, 0xc3d12a73), TOBN(0x5f71687c, 0xa5c2c51d), + TOBN(0xcb1f50c6, 0x05797bcb), TOBN(0x29ed0ed9, 0xd6d34eb0)}, + {TOBN(0xe5fe5b47, 0x4683c2eb), TOBN(0x4956eeb5, 0x97447c46), + TOBN(0x5b163a43, 0x71207167), TOBN(0x93fa2fed, 0x0248c5ef)}}, + {{TOBN(0x67930af2, 0x31f63950), TOBN(0xa77797c1, 0x14caa2c9), + TOBN(0x526e80ee, 0x27ac7e62), TOBN(0xe1e6e626, 0x58b28aec)}, + {TOBN(0x636178b0, 0xb3c9fef0), TOBN(0xaf7752e0, 0x6d5f90be), + TOBN(0x94ecaf18, 0xeece51cf), TOBN(0x2864d0ed, 0xca806e1f)}}, + {{TOBN(0x6de2e383, 0x97c69134), TOBN(0x5a42c316, 0xeb291293), + TOBN(0xc7779219, 0x6a60bae0), TOBN(0xa24de346, 0x6b7599d1)}, + {TOBN(0x49d374aa, 0xb75d4941), TOBN(0x98900586, 0x2d501ff0), + TOBN(0x9f16d40e, 0xeb7974cf), TOBN(0x1033860b, 0xcdd8c115)}}, + {{TOBN(0xb6c69ac8, 0x2094cec3), TOBN(0x9976fb88, 0x403b770c), + TOBN(0x1dea026c, 0x4859590d), TOBN(0xb6acbb46, 0x8562d1fd)}, + {TOBN(0x7cd6c461, 0x44569d85), TOBN(0xc3190a36, 0x97f0891d), + TOBN(0xc6f53195, 0x48d5a17d), TOBN(0x7d919966, 0xd749abc8)}}, + {{TOBN(0x65104837, 0xdd1c8a20), TOBN(0x7e5410c8, 0x2f683419), + TOBN(0x958c3ca8, 0xbe94022e), TOBN(0x605c3197, 0x6145dac2)}, + {TOBN(0x3fc07501, 0x01683d54), TOBN(0x1d7127c5, 0x595b1234), + TOBN(0x10b8f87c, 0x9481277f), TOBN(0x677db2a8, 0xe65a1adb)}}, + {{TOBN(0xec2fccaa, 0xddce3345), TOBN(0x2a6811b7, 0x012a4350), + TOBN(0x96760ff1, 0xac598bdc), TOBN(0x054d652a, 0xd1bf4128)}, + {TOBN(0x0a1151d4, 0x92a21005), TOBN(0xad7f3971, 0x33110fdf), + TOBN(0x8c95928c, 0x1960100f), TOBN(0x6c91c825, 0x7bf03362)}}, + {{TOBN(0xc8c8b2a2, 0xce309f06), TOBN(0xfdb27b59, 0xca27204b), + TOBN(0xd223eaa5, 0x0848e32e), TOBN(0xb93e4b2e, 0xe7bfaf1e)}, + {TOBN(0xc5308ae6, 0x44aa3ded), TOBN(0x317a666a, 0xc015d573), + TOBN(0xc888ce23, 0x1a979707), TOBN(0xf141c1e6, 0x0d5c4958)}}, + {{TOBN(0xb53b7de5, 0x61906373), TOBN(0x858dbade, 0xeb999595), + TOBN(0x8cbb47b2, 0xa59e5c36), TOBN(0x660318b3, 0xdcf4e842)}, + {TOBN(0xbd161ccd, 0x12ba4b7a), TOBN(0xf399daab, 0xf8c8282a), + TOBN(0x1587633a, 0xeeb2130d), TOBN(0xa465311a, 0xda38dd7d)}}, + {{TOBN(0x5f75eec8, 0x64d3779b), TOBN(0x3c5d0476, 0xad64c171), + TOBN(0x87410371, 0x2a914428), TOBN(0x8096a891, 0x90e2fc29)}, + {TOBN(0xd3d2ae9d, 0x23b3ebc2), TOBN(0x90bdd6db, 0xa580cfd6), + TOBN(0x52dbb7f3, 0xc5b01f6c), TOBN(0xe68eded4, 0xe102a2dc)}}, + {{TOBN(0x17785b77, 0x99eb6df0), TOBN(0x26c3cc51, 0x7386b779), + TOBN(0x345ed988, 0x6417a48e), TOBN(0xe990b4e4, 0x07d6ef31)}, + {TOBN(0x0f456b7e, 0x2586abba), TOBN(0x239ca6a5, 0x59c96e9a), + TOBN(0xe327459c, 0xe2eb4206), TOBN(0x3a4c3313, 0xa002b90a)}}, + {{TOBN(0x2a114806, 0xf6a3f6fb), TOBN(0xad5cad2f, 0x85c251dd), + TOBN(0x92c1f613, 0xf5a784d3), TOBN(0xec7bfacf, 0x349766d5)}, + {TOBN(0x04b3cd33, 0x3e23cb3b), TOBN(0x3979fe84, 0xc5a64b2d), + TOBN(0x192e2720, 0x7e589106), TOBN(0xa60c43d1, 0xa15b527f)}}, + {{TOBN(0x2dae9082, 0xbe7cf3a6), TOBN(0xcc86ba92, 0xbc967274), + TOBN(0xf28a2ce8, 0xaea0a8a9), TOBN(0x404ca6d9, 0x6ee988b3)}, + {TOBN(0xfd7e9c5d, 0x005921b8), TOBN(0xf56297f1, 0x44e79bf9), + TOBN(0xa163b460, 0x0d75ddc2), TOBN(0x30b23616, 0xa1f2be87)}}, + {{TOBN(0x4b070d21, 0xbfe50e2b), TOBN(0x7ef8cfd0, 0xe1bfede1), + TOBN(0xadba0011, 0x2aac4ae0), TOBN(0x2a3e7d01, 0xb9ebd033)}, + {TOBN(0x995277ec, 0xe38d9d1c), TOBN(0xb500249e, 0x9c5d2de3), + TOBN(0x8912b820, 0xf13ca8c9), TOBN(0xc8798114, 0x877793af)}}, + {{TOBN(0x19e6125d, 0xec3f1dec), TOBN(0x07b1f040, 0x911178da), + TOBN(0xd93ededa, 0x904a6738), TOBN(0x55187a5a, 0x0bebedcd)}, + {TOBN(0xf7d04722, 0xeb329d41), TOBN(0xf449099e, 0xf170b391), + TOBN(0xfd317a69, 0xca99f828), TOBN(0x50c3db2b, 0x34a4976d)}}, + {{TOBN(0xe9ba7784, 0x3757b392), TOBN(0x326caefd, 0xaa3ca05a), + TOBN(0x78e5293b, 0xf1e593d4), TOBN(0x7842a937, 0x0d98fd13)}, + {TOBN(0xe694bf96, 0x5f96b10d), TOBN(0x373a9df6, 0x06a8cd05), + TOBN(0x997d1e51, 0xe8f0c7fc), TOBN(0x1d019790, 0x63fd972e)}}, + {{TOBN(0x0064d858, 0x5499fb32), TOBN(0x7b67bad9, 0x77a8aeb7), + TOBN(0x1d3eb977, 0x2d08eec5), TOBN(0x5fc047a6, 0xcbabae1d)}, + {TOBN(0x0577d159, 0xe54a64bb), TOBN(0x8862201b, 0xc43497e4), + TOBN(0xad6b4e28, 0x2ce0608d), TOBN(0x8b687b7d, 0x0b167aac)}}, + {{TOBN(0x6ed4d367, 0x8b2ecfa9), TOBN(0x24dfe62d, 0xa90c3c38), + TOBN(0xa1862e10, 0x3fe5c42b), TOBN(0x1ca73dca, 0xd5732a9f)}, + {TOBN(0x35f038b7, 0x76bb87ad), TOBN(0x674976ab, 0xf242b81f), + TOBN(0x4f2bde7e, 0xb0fd90cd), TOBN(0x6efc172e, 0xa7fdf092)}}, + {{TOBN(0x3806b69b, 0x92222f1f), TOBN(0x5a2459ca, 0x6cf7ae70), + TOBN(0x6789f69c, 0xa85217ee), TOBN(0x5f232b5e, 0xe3dc85ac)}, + {TOBN(0x660e3ec5, 0x48e9e516), TOBN(0x124b4e47, 0x3197eb31), + TOBN(0x10a0cb13, 0xaafcca23), TOBN(0x7bd63ba4, 0x8213224f)}}, + {{TOBN(0xaffad7cc, 0x290a7f4f), TOBN(0x6b409c9e, 0x0286b461), + TOBN(0x58ab809f, 0xffa407af), TOBN(0xc3122eed, 0xc68ac073)}, + {TOBN(0x17bf9e50, 0x4ef24d7e), TOBN(0x5d929794, 0x3e2a5811), + TOBN(0x519bc867, 0x02902e01), TOBN(0x76bba5da, 0x39c8a851)}}, + {{TOBN(0xe9f9669c, 0xda94951e), TOBN(0x4b6af58d, 0x66b8d418), + TOBN(0xfa321074, 0x17d426a4), TOBN(0xc78e66a9, 0x9dde6027)}, + {TOBN(0x0516c083, 0x4a53b964), TOBN(0xfc659d38, 0xff602330), + TOBN(0x0ab55e5c, 0x58c5c897), TOBN(0x985099b2, 0x838bc5df)}}, + {{TOBN(0x061d9efc, 0xc52fc238), TOBN(0x712b2728, 0x6ac1da3f), + TOBN(0xfb658149, 0x9283fe08), TOBN(0x4954ac94, 0xb8aaa2f7)}, + {TOBN(0x85c0ada4, 0x7fb2e74f), TOBN(0xee8ba98e, 0xb89926b0), + TOBN(0xe4f9d37d, 0x23d1af5b), TOBN(0x14ccdbf9, 0xba9b015e)}}, + {{TOBN(0xb674481b, 0x7bfe7178), TOBN(0x4e1debae, 0x65405868), + TOBN(0x061b2821, 0xc48c867d), TOBN(0x69c15b35, 0x513b30ea)}, + {TOBN(0x3b4a1666, 0x36871088), TOBN(0xe5e29f5d, 0x1220b1ff), + TOBN(0x4b82bb35, 0x233d9f4d), TOBN(0x4e076333, 0x18cdc675)}}}, + {{{TOBN(0x0d53f5c7, 0xa3e6fced), TOBN(0xe8cbbdd5, 0xf45fbdeb), + TOBN(0xf85c01df, 0x13339a70), TOBN(0x0ff71880, 0x142ceb81)}, + {TOBN(0x4c4e8774, 0xbd70437a), TOBN(0x5fb32891, 0xba0bda6a), + TOBN(0x1cdbebd2, 0xf18bd26e), TOBN(0x2f9526f1, 0x03a9d522)}}, + {{TOBN(0x40ce3051, 0x92c4d684), TOBN(0x8b04d725, 0x7612efcd), + TOBN(0xb9dcda36, 0x6f9cae20), TOBN(0x0edc4d24, 0xf058856c)}, + {TOBN(0x64f2e6bf, 0x85427900), TOBN(0x3de81295, 0xdc09dfea), + TOBN(0xd41b4487, 0x379bf26c), TOBN(0x50b62c6d, 0x6df135a9)}}, + {{TOBN(0xd4f8e3b4, 0xc72dfe67), TOBN(0xc416b0f6, 0x90e19fdf), + TOBN(0x18b9098d, 0x4c13bd35), TOBN(0xac11118a, 0x15b8cb9e)}, + {TOBN(0xf598a318, 0xf0062841), TOBN(0xbfe0602f, 0x89f356f4), + TOBN(0x7ae3637e, 0x30177a0c), TOBN(0x34097747, 0x61136537)}}, + {{TOBN(0x0db2fb5e, 0xd005832a), TOBN(0x5f5efd3b, 0x91042e4f), + TOBN(0x8c4ffdc6, 0xed70f8ca), TOBN(0xe4645d0b, 0xb52da9cc)}, + {TOBN(0x9596f58b, 0xc9001d1f), TOBN(0x52c8f0bc, 0x4e117205), + TOBN(0xfd4aa0d2, 0xe398a084), TOBN(0x815bfe3a, 0x104f49de)}}, + {{TOBN(0x97e5443f, 0x23885e5f), TOBN(0xf72f8f99, 0xe8433aab), + TOBN(0xbd00b154, 0xe4d4e604), TOBN(0xd0b35e6a, 0xe5e173ff)}, + {TOBN(0x57b2a048, 0x9164722d), TOBN(0x3e3c665b, 0x88761ec8), + TOBN(0x6bdd1397, 0x3da83832), TOBN(0x3c8b1a1e, 0x73dafe3b)}}, + {{TOBN(0x4497ace6, 0x54317cac), TOBN(0xbe600ab9, 0x521771b3), + TOBN(0xb42e409e, 0xb0dfe8b8), TOBN(0x386a67d7, 0x3942310f)}, + {TOBN(0x25548d8d, 0x4431cc28), TOBN(0xa7cff142, 0x985dc524), + TOBN(0x4d60f5a1, 0x93c4be32), TOBN(0x83ebd5c8, 0xd071c6e1)}}, + {{TOBN(0xba3a80a7, 0xb1fd2b0b), TOBN(0x9b3ad396, 0x5bec33e8), + TOBN(0xb3868d61, 0x79743fb3), TOBN(0xcfd169fc, 0xfdb462fa)}, + {TOBN(0xd3b499d7, 0x9ce0a6af), TOBN(0x55dc1cf1, 0xe42d3ff8), + TOBN(0x04fb9e6c, 0xc6c3e1b2), TOBN(0x47e6961d, 0x6f69a474)}}, + {{TOBN(0x54eb3acc, 0xe548b37b), TOBN(0xb38e7542, 0x84d40549), + TOBN(0x8c3daa51, 0x7b341b4f), TOBN(0x2f6928ec, 0x690bf7fa)}, + {TOBN(0x0496b323, 0x86ce6c41), TOBN(0x01be1c55, 0x10adadcd), + TOBN(0xc04e67e7, 0x4bb5faf9), TOBN(0x3cbaf678, 0xe15c9985)}}, + {{TOBN(0x8cd12145, 0x50ca4247), TOBN(0xba1aa47a, 0xe7dd30aa), + TOBN(0x2f81ddf1, 0xe58fee24), TOBN(0x03452936, 0xeec9b0e8)}, + {TOBN(0x8bdc3b81, 0x243aea96), TOBN(0x9a2919af, 0x15c3d0e5), + TOBN(0x9ea640ec, 0x10948361), TOBN(0x5ac86d5b, 0x6e0bcccf)}}, + {{TOBN(0xf892d918, 0xc36cf440), TOBN(0xaed3e837, 0xc939719c), + TOBN(0xb07b08d2, 0xc0218b64), TOBN(0x6f1bcbba, 0xce9790dd)}, + {TOBN(0x4a84d6ed, 0x60919b8e), TOBN(0xd8900791, 0x8ac1f9eb), + TOBN(0xf84941aa, 0x0dd5daef), TOBN(0xb22fe40a, 0x67fd62c5)}}, + {{TOBN(0x97e15ba2, 0x157f2db3), TOBN(0xbda2fc8f, 0x8e28ca9c), + TOBN(0x5d050da4, 0x37b9f454), TOBN(0x3d57eb57, 0x2379d72e)}, + {TOBN(0xe9b5eba2, 0xfb5ee997), TOBN(0x01648ca2, 0xe11538ca), + TOBN(0x32bb76f6, 0xf6327974), TOBN(0x338f14b8, 0xff3f4bb7)}}, + {{TOBN(0x524d226a, 0xd7ab9a2d), TOBN(0x9c00090d, 0x7dfae958), + TOBN(0x0ba5f539, 0x8751d8c2), TOBN(0x8afcbcdd, 0x3ab8262d)}, + {TOBN(0x57392729, 0xe99d043b), TOBN(0xef51263b, 0xaebc943a), + TOBN(0x9feace93, 0x20862935), TOBN(0x639efc03, 0xb06c817b)}}, + {{TOBN(0x1fe054b3, 0x66b4be7a), TOBN(0x3f25a9de, 0x84a37a1e), + TOBN(0xf39ef1ad, 0x78d75cd9), TOBN(0xd7b58f49, 0x5062c1b5)}, + {TOBN(0x6f74f9a9, 0xff563436), TOBN(0xf718ff29, 0xe8af51e7), + TOBN(0x5234d313, 0x15e97fec), TOBN(0xb6a8e2b1, 0x292f1c0a)}}, + {{TOBN(0xa7f53aa8, 0x327720c1), TOBN(0x956ca322, 0xba092cc8), + TOBN(0x8f03d64a, 0x28746c4d), TOBN(0x51fe1782, 0x66d0d392)}, + {TOBN(0xd19b34db, 0x3c832c80), TOBN(0x60dccc5c, 0x6da2e3b4), + TOBN(0x245dd62e, 0x0a104ccc), TOBN(0xa7ab1de1, 0x620b21fd)}}, + {{TOBN(0xb293ae0b, 0x3893d123), TOBN(0xf7b75783, 0xb15ee71c), + TOBN(0x5aa3c614, 0x42a9468b), TOBN(0xd686123c, 0xdb15d744)}, + {TOBN(0x8c616891, 0xa7ab4116), TOBN(0x6fcd72c8, 0xa4e6a459), + TOBN(0xac219110, 0x77e5fad7), TOBN(0xfb6a20e7, 0x704fa46b)}}, + {{TOBN(0xe839be7d, 0x341d81dc), TOBN(0xcddb6889, 0x32148379), + TOBN(0xda6211a1, 0xf7026ead), TOBN(0xf3b2575f, 0xf4d1cc5e)}, + {TOBN(0x40cfc8f6, 0xa7a73ae6), TOBN(0x83879a5e, 0x61d5b483), + TOBN(0xc5acb1ed, 0x41a50ebc), TOBN(0x59a60cc8, 0x3c07d8fa)}}, + {{TOBN(0x1b73bdce, 0xb1876262), TOBN(0x2b0d79f0, 0x12af4ee9), + TOBN(0x8bcf3b0b, 0xd46e1d07), TOBN(0x17d6af9d, 0xe45d152f)}, + {TOBN(0x73520461, 0x6d736451), TOBN(0x43cbbd97, 0x56b0bf5a), + TOBN(0xb0833a5b, 0xd5999b9d), TOBN(0x702614f0, 0xeb72e398)}}, + {{TOBN(0x0aadf01a, 0x59c3e9f8), TOBN(0x40200e77, 0xce6b3d16), + TOBN(0xda22bdd3, 0xdeddafad), TOBN(0x76dedaf4, 0x310d72e1)}, + {TOBN(0x49ef807c, 0x4bc2e88f), TOBN(0x6ba81291, 0x146dd5a5), + TOBN(0xa1a4077a, 0x7d8d59e9), TOBN(0x87b6a2e7, 0x802db349)}}, + {{TOBN(0xd5679997, 0x1b4e598e), TOBN(0xf499ef1f, 0x06fe4b1d), + TOBN(0x3978d3ae, 0xfcb267c5), TOBN(0xb582b557, 0x235786d0)}, + {TOBN(0x32b3b2ca, 0x1715cb07), TOBN(0x4c3de6a2, 0x8480241d), + TOBN(0x63b5ffed, 0xcb571ecd), TOBN(0xeaf53900, 0xed2fe9a9)}}, + {{TOBN(0xdec98d4a, 0xc3b81990), TOBN(0x1cb83722, 0x9e0cc8fe), + TOBN(0xfe0b0491, 0xd2b427b9), TOBN(0x0f2386ac, 0xe983a66c)}, + {TOBN(0x930c4d1e, 0xb3291213), TOBN(0xa2f82b2e, 0x59a62ae4), + TOBN(0x77233853, 0xf93e89e3), TOBN(0x7f8063ac, 0x11777c7f)}}, + {{TOBN(0xff0eb567, 0x59ad2877), TOBN(0x6f454642, 0x9865c754), + TOBN(0xe6fe701a, 0x236e9a84), TOBN(0xc586ef16, 0x06e40fc3)}, + {TOBN(0x3f62b6e0, 0x24bafad9), TOBN(0xc8b42bd2, 0x64da906a), + TOBN(0xc98e1eb4, 0xda3276a0), TOBN(0x30d0e5fc, 0x06cbf852)}}, + {{TOBN(0x1b6b2ae1, 0xe8b4dfd4), TOBN(0xd754d5c7, 0x8301cbac), + TOBN(0x66097629, 0x112a39ac), TOBN(0xf86b5999, 0x93ba4ab9)}, + {TOBN(0x26c9dea7, 0x99f9d581), TOBN(0x0473b1a8, 0xc2fafeaa), + TOBN(0x1469af55, 0x3b2505a5), TOBN(0x227d16d7, 0xd6a43323)}}, + {{TOBN(0x3316f73c, 0xad3d97f9), TOBN(0x52bf3bb5, 0x1f137455), + TOBN(0x953eafeb, 0x09954e7c), TOBN(0xa721dfed, 0xdd732411)}, + {TOBN(0xb4929821, 0x141d4579), TOBN(0x3411321c, 0xaa3bd435), + TOBN(0xafb355aa, 0x17fa6015), TOBN(0xb4e7ef4a, 0x18e42f0e)}}, + {{TOBN(0x604ac97c, 0x59371000), TOBN(0xe1c48c70, 0x7f759c18), + TOBN(0x3f62ecc5, 0xa5db6b65), TOBN(0x0a78b173, 0x38a21495)}, + {TOBN(0x6be1819d, 0xbcc8ad94), TOBN(0x70dc04f6, 0xd89c3400), + TOBN(0x462557b4, 0xa6b4840a), TOBN(0x544c6ade, 0x60bd21c0)}}, + {{TOBN(0x6a00f24e, 0x907a544b), TOBN(0xa7520dcb, 0x313da210), + TOBN(0xfe939b75, 0x11e4994b), TOBN(0x918b6ba6, 0xbc275d70)}, + {TOBN(0xd3e5e0fc, 0x644be892), TOBN(0x707a9816, 0xfdaf6c42), + TOBN(0x60145567, 0xf15c13fe), TOBN(0x4818ebaa, 0xe130a54a)}}, + {{TOBN(0x28aad3ad, 0x58d2f767), TOBN(0xdc5267fd, 0xd7e7c773), + TOBN(0x4919cc88, 0xc3afcc98), TOBN(0xaa2e6ab0, 0x2db8cd4b)}, + {TOBN(0xd46fec04, 0xd0c63eaa), TOBN(0xa1cb92c5, 0x19ffa832), + TOBN(0x678dd178, 0xe43a631f), TOBN(0xfb5ae1cd, 0x3dc788b3)}}, + {{TOBN(0x68b4fb90, 0x6e77de04), TOBN(0x7992bcf0, 0xf06dbb97), + TOBN(0x896e6a13, 0xc417c01d), TOBN(0x8d96332c, 0xb956be01)}, + {TOBN(0x902fc93a, 0x413aa2b9), TOBN(0x99a4d915, 0xfc98c8a5), + TOBN(0x52c29407, 0x565f1137), TOBN(0x4072690f, 0x21e4f281)}}, + {{TOBN(0x36e607cf, 0x02ff6072), TOBN(0xa47d2ca9, 0x8ad98cdc), + TOBN(0xbf471d1e, 0xf5f56609), TOBN(0xbcf86623, 0xf264ada0)}, + {TOBN(0xb70c0687, 0xaa9e5cb6), TOBN(0xc98124f2, 0x17401c6c), + TOBN(0x8189635f, 0xd4a61435), TOBN(0xd28fb8af, 0xa9d98ea6)}}, + {{TOBN(0xb9a67c2a, 0x40c251f8), TOBN(0x88cd5d87, 0xa2da44be), + TOBN(0x437deb96, 0xe09b5423), TOBN(0x150467db, 0x64287dc1)}, + {TOBN(0xe161debb, 0xcdabb839), TOBN(0xa79e9742, 0xf1839a3e), + TOBN(0xbb8dd3c2, 0x652d202b), TOBN(0x7b3e67f7, 0xe9f97d96)}}, + {{TOBN(0x5aa5d78f, 0xb1cb6ac9), TOBN(0xffa13e8e, 0xca1d0d45), + TOBN(0x369295dd, 0x2ba5bf95), TOBN(0xd68bd1f8, 0x39aff05e)}, + {TOBN(0xaf0d86f9, 0x26d783f2), TOBN(0x543a59b3, 0xfc3aafc1), + TOBN(0x3fcf81d2, 0x7b7da97c), TOBN(0xc990a056, 0xd25dee46)}}, + {{TOBN(0x3e6775b8, 0x519cce2c), TOBN(0xfc9af71f, 0xae13d863), + TOBN(0x774a4a6f, 0x47c1605c), TOBN(0x46ba4245, 0x2fd205e8)}, + {TOBN(0xa06feea4, 0xd3fd524d), TOBN(0x1e724641, 0x6de1acc2), + TOBN(0xf53816f1, 0x334e2b42), TOBN(0x49e5918e, 0x922f0024)}}, + {{TOBN(0x439530b6, 0x65c7322d), TOBN(0xcf12cc01, 0xb3c1b3fb), + TOBN(0xc70b0186, 0x0172f685), TOBN(0xb915ee22, 0x1b58391d)}, + {TOBN(0x9afdf03b, 0xa317db24), TOBN(0x87dec659, 0x17b8ffc4), + TOBN(0x7f46597b, 0xe4d3d050), TOBN(0x80a1c1ed, 0x006500e7)}}, + {{TOBN(0x84902a96, 0x78bf030e), TOBN(0xfb5e9c9a, 0x50560148), + TOBN(0x6dae0a92, 0x63362426), TOBN(0xdcaeecf4, 0xa9e30c40)}, + {TOBN(0xc0d887bb, 0x518d0c6b), TOBN(0x99181152, 0xcb985b9d), + TOBN(0xad186898, 0xef7bc381), TOBN(0x18168ffb, 0x9ee46201)}}, + {{TOBN(0x9a04cdaa, 0x2502753c), TOBN(0xbb279e26, 0x51407c41), + TOBN(0xeacb03aa, 0xf23564e5), TOBN(0x18336582, 0x71e61016)}, + {TOBN(0x8684b8c4, 0xeb809877), TOBN(0xb336e18d, 0xea0e672e), + TOBN(0xefb601f0, 0x34ee5867), TOBN(0x2733edbe, 0x1341cfd1)}}, + {{TOBN(0xb15e809a, 0x26025c3c), TOBN(0xe6e981a6, 0x9350df88), + TOBN(0x92376237, 0x8502fd8e), TOBN(0x4791f216, 0x0c12be9b)}, + {TOBN(0xb7256789, 0x25f02425), TOBN(0xec863194, 0x7a974443), + TOBN(0x7c0ce882, 0xfb41cc52), TOBN(0xc266ff7e, 0xf25c07f2)}}, + {{TOBN(0x3d4da8c3, 0x017025f3), TOBN(0xefcf628c, 0xfb9579b4), + TOBN(0x5c4d0016, 0x1f3716ec), TOBN(0x9c27ebc4, 0x6801116e)}, + {TOBN(0x5eba0ea1, 0x1da1767e), TOBN(0xfe151452, 0x47004c57), + TOBN(0x3ace6df6, 0x8c2373b7), TOBN(0x75c3dffe, 0x5dbc37ac)}}, + {{TOBN(0x3dc32a73, 0xddc925fc), TOBN(0xb679c841, 0x2f65ee0b), + TOBN(0x715a3295, 0x451cbfeb), TOBN(0xd9889768, 0xf76e9a29)}, + {TOBN(0xec20ce7f, 0xb28ad247), TOBN(0xe99146c4, 0x00894d79), + TOBN(0x71457d7c, 0x9f5e3ea7), TOBN(0x097b2662, 0x38030031)}}, + {{TOBN(0xdb7f6ae6, 0xcf9f82a8), TOBN(0x319decb9, 0x438f473a), + TOBN(0xa63ab386, 0x283856c3), TOBN(0x13e3172f, 0xb06a361b)}, + {TOBN(0x2959f8dc, 0x7d5a006c), TOBN(0x2dbc27c6, 0x75fba752), + TOBN(0xc1227ab2, 0x87c22c9e), TOBN(0x06f61f75, 0x71a268b2)}}, + {{TOBN(0x1b6bb971, 0x04779ce2), TOBN(0xaca83812, 0x0aadcb1d), + TOBN(0x297ae0bc, 0xaeaab2d5), TOBN(0xa5c14ee7, 0x5bfb9f13)}, + {TOBN(0xaa00c583, 0xf17a62c7), TOBN(0x39eb962c, 0x173759f6), + TOBN(0x1eeba1d4, 0x86c9a88f), TOBN(0x0ab6c37a, 0xdf016c5e)}}, + {{TOBN(0xa2a147db, 0xa28a0749), TOBN(0x246c20d6, 0xee519165), + TOBN(0x5068d1b1, 0xd3810715), TOBN(0xb1e7018c, 0x748160b9)}, + {TOBN(0x03f5b1fa, 0xf380ff62), TOBN(0xef7fb1dd, 0xf3cb2c1e), + TOBN(0xeab539a8, 0xfc91a7da), TOBN(0x83ddb707, 0xf3f9b561)}}, + {{TOBN(0xc550e211, 0xfe7df7a4), TOBN(0xa7cd07f2, 0x063f6f40), + TOBN(0xb0de3635, 0x2976879c), TOBN(0xb5f83f85, 0xe55741da)}, + {TOBN(0x4ea9d25e, 0xf3d8ac3d), TOBN(0x6fe2066f, 0x62819f02), + TOBN(0x4ab2b9c2, 0xcef4a564), TOBN(0x1e155d96, 0x5ffa2de3)}}, + {{TOBN(0x0eb0a19b, 0xc3a72d00), TOBN(0x4037665b, 0x8513c31b), + TOBN(0x2fb2b6bf, 0x04c64637), TOBN(0x45c34d6e, 0x08cdc639)}, + {TOBN(0x56f1e10f, 0xf01fd796), TOBN(0x4dfb8101, 0xfe3667b8), + TOBN(0xe0eda253, 0x9021d0c0), TOBN(0x7a94e9ff, 0x8a06c6ab)}}, + {{TOBN(0x2d3bb0d9, 0xbb9aa882), TOBN(0xea20e4e5, 0xec05fd10), + TOBN(0xed7eeb5f, 0x1a1ca64e), TOBN(0x2fa6b43c, 0xc6327cbd)}, + {TOBN(0xb577e3cf, 0x3aa91121), TOBN(0x8c6bd5ea, 0x3a34079b), + TOBN(0xd7e5ba39, 0x60e02fc0), TOBN(0xf16dd2c3, 0x90141bf8)}}, + {{TOBN(0xb57276d9, 0x80101b98), TOBN(0x760883fd, 0xb82f0f66), + TOBN(0x89d7de75, 0x4bc3eff3), TOBN(0x03b60643, 0x5dc2ab40)}, + {TOBN(0xcd6e53df, 0xe05beeac), TOBN(0xf2f1e862, 0xbc3325cd), + TOBN(0xdd0f7921, 0x774f03c3), TOBN(0x97ca7221, 0x4552cc1b)}}, + {{TOBN(0x5a0d6afe, 0x1cd19f72), TOBN(0xa20915dc, 0xf183fbeb), + TOBN(0x9fda4b40, 0x832c403c), TOBN(0x32738edd, 0xbe425442)}, + {TOBN(0x469a1df6, 0xb5eccf1a), TOBN(0x4b5aff42, 0x28bbe1f0), + TOBN(0x31359d7f, 0x570dfc93), TOBN(0xa18be235, 0xf0088628)}}, + {{TOBN(0xa5b30fba, 0xb00ed3a9), TOBN(0x34c61374, 0x73cdf8be), + TOBN(0x2c5c5f46, 0xabc56797), TOBN(0x5cecf93d, 0xb82a8ae2)}, + {TOBN(0x7d3dbe41, 0xa968fbf0), TOBN(0xd23d4583, 0x1a5c7f3d), + TOBN(0xf28f69a0, 0xc087a9c7), TOBN(0xc2d75471, 0x474471ca)}}, + {{TOBN(0x36ec9f4a, 0x4eb732ec), TOBN(0x6c943bbd, 0xb1ca6bed), + TOBN(0xd64535e1, 0xf2457892), TOBN(0x8b84a8ea, 0xf7e2ac06)}, + {TOBN(0xe0936cd3, 0x2499dd5f), TOBN(0x12053d7e, 0x0ed04e57), + TOBN(0x4bdd0076, 0xe4305d9d), TOBN(0x34a527b9, 0x1f67f0a2)}}, + {{TOBN(0xe79a4af0, 0x9cec46ea), TOBN(0xb15347a1, 0x658b9bc7), + TOBN(0x6bd2796f, 0x35af2f75), TOBN(0xac957990, 0x4051c435)}, + {TOBN(0x2669dda3, 0xc33a655d), TOBN(0x5d503c2e, 0x88514aa3), + TOBN(0xdfa11337, 0x3753dd41), TOBN(0x3f054673, 0x0b754f78)}}, + {{TOBN(0xbf185677, 0x496125bd), TOBN(0xfb0023c8, 0x3775006c), + TOBN(0xfa0f072f, 0x3a037899), TOBN(0x4222b6eb, 0x0e4aea57)}, + {TOBN(0x3dde5e76, 0x7866d25a), TOBN(0xb6eb04f8, 0x4837aa6f), + TOBN(0x5315591a, 0x2cf1cdb8), TOBN(0x6dfb4f41, 0x2d4e683c)}}, + {{TOBN(0x7e923ea4, 0x48ee1f3a), TOBN(0x9604d9f7, 0x05a2afd5), + TOBN(0xbe1d4a33, 0x40ea4948), TOBN(0x5b45f1f4, 0xb44cbd2f)}, + {TOBN(0x5faf8376, 0x4acc757e), TOBN(0xa7cf9ab8, 0x63d68ff7), + TOBN(0x8ad62f69, 0xdf0e404b), TOBN(0xd65f33c2, 0x12bdafdf)}}, + {{TOBN(0xc365de15, 0xa377b14e), TOBN(0x6bf5463b, 0x8e39f60c), + TOBN(0x62030d2d, 0x2ce68148), TOBN(0xd95867ef, 0xe6f843a8)}, + {TOBN(0xd39a0244, 0xef5ab017), TOBN(0x0bd2d8c1, 0x4ab55d12), + TOBN(0xc9503db3, 0x41639169), TOBN(0x2d4e25b0, 0xf7660c8a)}}, + {{TOBN(0x760cb3b5, 0xe224c5d7), TOBN(0xfa3baf8c, 0x68616919), + TOBN(0x9fbca113, 0x8d142552), TOBN(0x1ab18bf1, 0x7669ebf5)}, + {TOBN(0x55e6f53e, 0x9bdf25dd), TOBN(0x04cc0bf3, 0xcb6cd154), + TOBN(0x595bef49, 0x95e89080), TOBN(0xfe9459a8, 0x104a9ac1)}}, + {{TOBN(0xad2d89ca, 0xcce9bb32), TOBN(0xddea65e1, 0xf7de8285), + TOBN(0x62ed8c35, 0xb351bd4b), TOBN(0x4150ff36, 0x0c0e19a7)}, + {TOBN(0x86e3c801, 0x345f4e47), TOBN(0x3bf21f71, 0x203a266c), + TOBN(0x7ae110d4, 0x855b1f13), TOBN(0x5d6aaf6a, 0x07262517)}}, + {{TOBN(0x1e0f12e1, 0x813d28f1), TOBN(0x6000e11d, 0x7ad7a523), + TOBN(0xc7d8deef, 0xc744a17b), TOBN(0x1e990b48, 0x14c05a00)}, + {TOBN(0x68fddaee, 0x93e976d5), TOBN(0x696241d1, 0x46610d63), + TOBN(0xb204e7c3, 0x893dda88), TOBN(0x8bccfa65, 0x6a3a6946)}}, + {{TOBN(0xb59425b4, 0xc5cd1411), TOBN(0x701b4042, 0xff3658b1), + TOBN(0xe3e56bca, 0x4784cf93), TOBN(0x27de5f15, 0x8fe68d60)}, + {TOBN(0x4ab9cfce, 0xf8d53f19), TOBN(0xddb10311, 0xa40a730d), + TOBN(0x6fa73cd1, 0x4eee0a8a), TOBN(0xfd548748, 0x5249719d)}}, + {{TOBN(0x49d66316, 0xa8123ef0), TOBN(0x73c32db4, 0xe7f95438), + TOBN(0x2e2ed209, 0x0d9e7854), TOBN(0xf98a9329, 0x9d9f0507)}, + {TOBN(0xc5d33cf6, 0x0c6aa20a), TOBN(0x9a32ba14, 0x75279bb2), + TOBN(0x7e3202cb, 0x774a7307), TOBN(0x64ed4bc4, 0xe8c42dbd)}}, + {{TOBN(0xc20f1a06, 0xd4caed0d), TOBN(0xb8021407, 0x171d22b3), + TOBN(0xd426ca04, 0xd13268d7), TOBN(0x92377007, 0x25f4d126)}, + {TOBN(0x4204cbc3, 0x71f21a85), TOBN(0x18461b7a, 0xf82369ba), + TOBN(0xc0c07d31, 0x3fc858f9), TOBN(0x5deb5a50, 0xe2bab569)}}, + {{TOBN(0xd5959d46, 0xd5eea89e), TOBN(0xfdff8424, 0x08437f4b), + TOBN(0xf21071e4, 0x3cfe254f), TOBN(0x72417696, 0x95468321)}, + {TOBN(0x5d8288b9, 0x102cae3e), TOBN(0x2d143e3d, 0xf1965dff), + TOBN(0x00c9a376, 0xa078d847), TOBN(0x6fc0da31, 0x26028731)}}, + {{TOBN(0xa2baeadf, 0xe45083a2), TOBN(0x66bc7218, 0x5e5b4bcd), + TOBN(0x2c826442, 0xd04b8e7f), TOBN(0xc19f5451, 0x6c4b586b)}, + {TOBN(0x60182c49, 0x5b7eeed5), TOBN(0xd9954ecd, 0x7aa9dfa1), + TOBN(0xa403a8ec, 0xc73884ad), TOBN(0x7fb17de2, 0x9bb39041)}}, + {{TOBN(0x694b64c5, 0xabb020e8), TOBN(0x3d18c184, 0x19c4eec7), + TOBN(0x9c4673ef, 0x1c4793e5), TOBN(0xc7b8aeb5, 0x056092e6)}, + {TOBN(0x3aa1ca43, 0xf0f8c16b), TOBN(0x224ed5ec, 0xd679b2f6), + TOBN(0x0d56eeaf, 0x55a205c9), TOBN(0xbfe115ba, 0x4b8e028b)}}, + {{TOBN(0x97e60849, 0x3927f4fe), TOBN(0xf91fbf94, 0x759aa7c5), + TOBN(0x985af769, 0x6be90a51), TOBN(0xc1277b78, 0x78ccb823)}, + {TOBN(0x395b656e, 0xe7a75952), TOBN(0x00df7de0, 0x928da5f5), + TOBN(0x09c23175, 0x4ca4454f), TOBN(0x4ec971f4, 0x7aa2d3c1)}}, + {{TOBN(0x45c3c507, 0xe75d9ccc), TOBN(0x63b7be8a, 0x3dc90306), + TOBN(0x37e09c66, 0x5db44bdc), TOBN(0x50d60da1, 0x6841c6a2)}, + {TOBN(0x6f9b65ee, 0x08df1b12), TOBN(0x38734879, 0x7ff089df), + TOBN(0x9c331a66, 0x3fe8013d), TOBN(0x017f5de9, 0x5f42fcc8)}}, + {{TOBN(0x43077866, 0xe8e57567), TOBN(0xc9f781ce, 0xf9fcdb18), + TOBN(0x38131dda, 0x9b12e174), TOBN(0x25d84aa3, 0x8a03752a)}, + {TOBN(0x45e09e09, 0x4d0c0ce2), TOBN(0x1564008b, 0x92bebba5), + TOBN(0xf7e8ad31, 0xa87284c7), TOBN(0xb7c4b46c, 0x97e7bbaa)}}, + {{TOBN(0x3e22a7b3, 0x97acf4ec), TOBN(0x0426c400, 0x5ea8b640), + TOBN(0x5e3295a6, 0x4e969285), TOBN(0x22aabc59, 0xa6a45670)}, + {TOBN(0xb929714c, 0x5f5942bc), TOBN(0x9a6168bd, 0xfa3182ed), + TOBN(0x2216a665, 0x104152ba), TOBN(0x46908d03, 0xb6926368)}}}, + {{{TOBN(0xa9f5d874, 0x5a1251fb), TOBN(0x967747a8, 0xc72725c7), + TOBN(0x195c33e5, 0x31ffe89e), TOBN(0x609d210f, 0xe964935e)}, + {TOBN(0xcafd6ca8, 0x2fe12227), TOBN(0xaf9b5b96, 0x0426469d), + TOBN(0x2e9ee04c, 0x5693183c), TOBN(0x1084a333, 0xc8146fef)}}, + {{TOBN(0x96649933, 0xaed1d1f7), TOBN(0x566eaff3, 0x50563090), + TOBN(0x345057f0, 0xad2e39cf), TOBN(0x148ff65b, 0x1f832124)}, + {TOBN(0x042e89d4, 0xcf94cf0d), TOBN(0x319bec84, 0x520c58b3), + TOBN(0x2a267626, 0x5361aa0d), TOBN(0xc86fa302, 0x8fbc87ad)}}, + {{TOBN(0xfc83d2ab, 0x5c8b06d5), TOBN(0xb1a785a2, 0xfe4eac46), + TOBN(0xb99315bc, 0x846f7779), TOBN(0xcf31d816, 0xef9ea505)}, + {TOBN(0x2391fe6a, 0x15d7dc85), TOBN(0x2f132b04, 0xb4016b33), + TOBN(0x29547fe3, 0x181cb4c7), TOBN(0xdb66d8a6, 0x650155a1)}}, + {{TOBN(0x6b66d7e1, 0xadc1696f), TOBN(0x98ebe593, 0x0acd72d0), + TOBN(0x65f24550, 0xcc1b7435), TOBN(0xce231393, 0xb4b9a5ec)}, + {TOBN(0x234a22d4, 0xdb067df9), TOBN(0x98dda095, 0xcaff9b00), + TOBN(0x1bbc75a0, 0x6100c9c1), TOBN(0x1560a9c8, 0x939cf695)}}, + {{TOBN(0xcf006d3e, 0x99e0925f), TOBN(0x2dd74a96, 0x6322375a), + TOBN(0xc58b446a, 0xb56af5ba), TOBN(0x50292683, 0xe0b9b4f1)}, + {TOBN(0xe2c34cb4, 0x1aeaffa3), TOBN(0x8b17203f, 0x9b9587c1), + TOBN(0x6d559207, 0xead1350c), TOBN(0x2b66a215, 0xfb7f9604)}}, + {{TOBN(0x0850325e, 0xfe51bf74), TOBN(0x9c4f579e, 0x5e460094), + TOBN(0x5c87b92a, 0x76da2f25), TOBN(0x889de4e0, 0x6febef33)}, + {TOBN(0x6900ec06, 0x646083ce), TOBN(0xbe2a0335, 0xbfe12773), + TOBN(0xadd1da35, 0xc5344110), TOBN(0x757568b7, 0xb802cd20)}}, + {{TOBN(0x75559779, 0x00f7e6c8), TOBN(0x38e8b94f, 0x0facd2f0), + TOBN(0xfea1f3af, 0x03fde375), TOBN(0x5e11a1d8, 0x75881dfc)}, + {TOBN(0xb3a6b02e, 0xc1e2f2ef), TOBN(0x193d2bbb, 0xc605a6c5), + TOBN(0x325ffeee, 0x339a0b2d), TOBN(0x27b6a724, 0x9e0c8846)}}, + {{TOBN(0xe4050f1c, 0xf1c367ca), TOBN(0x9bc85a9b, 0xc90fbc7d), + TOBN(0xa373c4a2, 0xe1a11032), TOBN(0xb64232b7, 0xad0393a9)}, + {TOBN(0xf5577eb0, 0x167dad29), TOBN(0x1604f301, 0x94b78ab2), + TOBN(0x0baa94af, 0xe829348b), TOBN(0x77fbd8dd, 0x41654342)}}, + {{TOBN(0xdab50ea5, 0xb964e39a), TOBN(0xd4c29e3c, 0xd0d3c76e), + TOBN(0x80dae67c, 0x56d11964), TOBN(0x7307a8bf, 0xe5ffcc2f)}, + {TOBN(0x65bbc1aa, 0x91708c3b), TOBN(0xa151e62c, 0x28bf0eeb), + TOBN(0x6cb53381, 0x6fa34db7), TOBN(0x5139e05c, 0xa29403a8)}}, + {{TOBN(0x6ff651b4, 0x94a7cd2e), TOBN(0x5671ffd1, 0x0699336c), + TOBN(0x6f5fd2cc, 0x979a896a), TOBN(0x11e893a8, 0xd8148cef)}, + {TOBN(0x988906a1, 0x65cf7b10), TOBN(0x81b67178, 0xc50d8485), + TOBN(0x7c0deb35, 0x8a35b3de), TOBN(0x423ac855, 0xc1d29799)}}, + {{TOBN(0xaf580d87, 0xdac50b74), TOBN(0x28b2b89f, 0x5869734c), + TOBN(0x99a3b936, 0x874e28fb), TOBN(0xbb2c9190, 0x25f3f73a)}, + {TOBN(0x199f6918, 0x84a9d5b7), TOBN(0x7ebe2325, 0x7e770374), + TOBN(0xf442e107, 0x0738efe2), TOBN(0xcf9f3f56, 0xcf9082d2)}}, + {{TOBN(0x719f69e1, 0x09618708), TOBN(0xcc9e8364, 0xc183f9b1), + TOBN(0xec203a95, 0x366a21af), TOBN(0x6aec5d6d, 0x068b141f)}, + {TOBN(0xee2df78a, 0x994f04e9), TOBN(0xb39ccae8, 0x271245b0), + TOBN(0xb875a4a9, 0x97e43f4f), TOBN(0x507dfe11, 0xdb2cea98)}}, + {{TOBN(0x4fbf81cb, 0x489b03e9), TOBN(0xdb86ec5b, 0x6ec414fa), + TOBN(0xfad444f9, 0xf51b3ae5), TOBN(0xca7d33d6, 0x1914e3fe)}, + {TOBN(0xa9c32f5c, 0x0ae6c4d0), TOBN(0xa9ca1d1e, 0x73969568), + TOBN(0x98043c31, 0x1aa7467e), TOBN(0xe832e75c, 0xe21b5ac6)}}, + {{TOBN(0x314b7aea, 0x5232123d), TOBN(0x08307c8c, 0x65ae86db), + TOBN(0x06e7165c, 0xaa4668ed), TOBN(0xb170458b, 0xb4d3ec39)}, + {TOBN(0x4d2e3ec6, 0xc19bb986), TOBN(0xc5f34846, 0xae0304ed), + TOBN(0x917695a0, 0x6c9f9722), TOBN(0x6c7f7317, 0x4cab1c0a)}}, + {{TOBN(0x6295940e, 0x9d6d2e8b), TOBN(0xd318b8c1, 0x549f7c97), + TOBN(0x22453204, 0x97713885), TOBN(0x468d834b, 0xa8a440fe)}, + {TOBN(0xd81fe5b2, 0xbfba796e), TOBN(0x152364db, 0x6d71f116), + TOBN(0xbb8c7c59, 0xb5b66e53), TOBN(0x0b12c61b, 0x2641a192)}}, + {{TOBN(0x31f14802, 0xfcf0a7fd), TOBN(0x42fd0789, 0x5488b01e), + TOBN(0x71d78d6d, 0x9952b498), TOBN(0x8eb572d9, 0x07ac5201)}, + {TOBN(0xe0a2a44c, 0x4d194a88), TOBN(0xd2b63fd9, 0xba017e66), + TOBN(0x78efc6c8, 0xf888aefc), TOBN(0xb76f6bda, 0x4a881a11)}}, + {{TOBN(0x187f314b, 0xb46c2397), TOBN(0x004cf566, 0x5ded2819), + TOBN(0xa9ea5704, 0x38764d34), TOBN(0xbba45217, 0x78084709)}, + {TOBN(0x06474571, 0x1171121e), TOBN(0xad7b7eb1, 0xe7c9b671), + TOBN(0xdacfbc40, 0x730f7507), TOBN(0x178cd8c6, 0xc7ad7bd1)}}, + {{TOBN(0xbf0be101, 0xb2a67238), TOBN(0x3556d367, 0xaf9c14f2), + TOBN(0x104b7831, 0xa5662075), TOBN(0x58ca59bb, 0x79d9e60a)}, + {TOBN(0x4bc45392, 0xa569a73b), TOBN(0x517a52e8, 0x5698f6c9), + TOBN(0x85643da5, 0xaeadd755), TOBN(0x1aed0cd5, 0x2a581b84)}}, + {{TOBN(0xb9b4ff84, 0x80af1372), TOBN(0x244c3113, 0xf1ba5d1f), + TOBN(0x2a5dacbe, 0xf5f98d31), TOBN(0x2c3323e8, 0x4375bc2a)}, + {TOBN(0x17a3ab4a, 0x5594b1dd), TOBN(0xa1928bfb, 0xceb4797e), + TOBN(0xe83af245, 0xe4886a19), TOBN(0x8979d546, 0x72b5a74a)}}, + {{TOBN(0xa0f726bc, 0x19f9e967), TOBN(0xd9d03152, 0xe8fbbf4e), + TOBN(0xcfd6f51d, 0xb7707d40), TOBN(0x633084d9, 0x63f6e6e0)}, + {TOBN(0xedcd9cdc, 0x55667eaf), TOBN(0x73b7f92b, 0x2e44d56f), + TOBN(0xfb2e39b6, 0x4e962b14), TOBN(0x7d408f6e, 0xf671fcbf)}}, + {{TOBN(0xcc634ddc, 0x164a89bb), TOBN(0x74a42bb2, 0x3ef3bd05), + TOBN(0x1280dbb2, 0x428decbb), TOBN(0x6103f6bb, 0x402c8596)}, + {TOBN(0xfa2bf581, 0x355a5752), TOBN(0x562f96a8, 0x00946674), + TOBN(0x4e4ca16d, 0x6da0223b), TOBN(0xfe47819f, 0x28d3aa25)}}, + {{TOBN(0x9eea3075, 0xf8dfcf8a), TOBN(0xa284f0aa, 0x95669825), + TOBN(0xb3fca250, 0x867d3fd8), TOBN(0x20757b5f, 0x269d691e)}, + {TOBN(0xf2c24020, 0x93b8a5de), TOBN(0xd3f93359, 0xebc06da6), + TOBN(0x1178293e, 0xb2739c33), TOBN(0xd2a3e770, 0xbcd686e5)}}, + {{TOBN(0xa76f49f4, 0xcd941534), TOBN(0x0d37406b, 0xe3c71c0e), + TOBN(0x172d9397, 0x3b97f7e3), TOBN(0xec17e239, 0xbd7fd0de)}, + {TOBN(0xe3290551, 0x6f496ba2), TOBN(0x6a693172, 0x36ad50e7), + TOBN(0xc4e539a2, 0x83e7eff5), TOBN(0x752737e7, 0x18e1b4cf)}}, + {{TOBN(0xa2f7932c, 0x68af43ee), TOBN(0x5502468e, 0x703d00bd), + TOBN(0xe5dc978f, 0x2fb061f5), TOBN(0xc9a1904a, 0x28c815ad)}, + {TOBN(0xd3af538d, 0x470c56a4), TOBN(0x159abc5f, 0x193d8ced), + TOBN(0x2a37245f, 0x20108ef3), TOBN(0xfa17081e, 0x223f7178)}}, + {{TOBN(0x27b0fb2b, 0x10c8c0f5), TOBN(0x2102c3ea, 0x40650547), + TOBN(0x594564df, 0x8ac3bfa7), TOBN(0x98102033, 0x509dad96)}, + {TOBN(0x6989643f, 0xf1d18a13), TOBN(0x35eebd91, 0xd7fc5af0), + TOBN(0x078d096a, 0xfaeaafd8), TOBN(0xb7a89341, 0xdef3de98)}}, + {{TOBN(0x2a206e8d, 0xecf2a73a), TOBN(0x066a6397, 0x8e551994), + TOBN(0x3a6a088a, 0xb98d53a2), TOBN(0x0ce7c67c, 0x2d1124aa)}, + {TOBN(0x48cec671, 0x759a113c), TOBN(0xe3b373d3, 0x4f6f67fa), + TOBN(0x5455d479, 0xfd36727b), TOBN(0xe5a428ee, 0xa13c0d81)}}, + {{TOBN(0xb853dbc8, 0x1c86682b), TOBN(0xb78d2727, 0xb8d02b2a), + TOBN(0xaaf69bed, 0x8ebc329a), TOBN(0xdb6b40b3, 0x293b2148)}, + {TOBN(0xe42ea77d, 0xb8c4961f), TOBN(0xb1a12f7c, 0x20e5e0ab), + TOBN(0xa0ec5274, 0x79e8b05e), TOBN(0x68027391, 0xfab60a80)}}, + {{TOBN(0x6bfeea5f, 0x16b1bd5e), TOBN(0xf957e420, 0x4de30ad3), + TOBN(0xcbaf664e, 0x6a353b9e), TOBN(0x5c873312, 0x26d14feb)}, + {TOBN(0x4e87f98c, 0xb65f57cb), TOBN(0xdb60a621, 0x5e0cdd41), + TOBN(0x67c16865, 0xa6881440), TOBN(0x1093ef1a, 0x46ab52aa)}}, + {{TOBN(0xc095afb5, 0x3f4ece64), TOBN(0x6a6bb02e, 0x7604551a), + TOBN(0x55d44b4e, 0x0b26b8cd), TOBN(0xe5f9a999, 0xf971268a)}, + {TOBN(0xc08ec425, 0x11a7de84), TOBN(0x83568095, 0xfda469dd), + TOBN(0x737bfba1, 0x6c6c90a2), TOBN(0x1cb9c4a0, 0xbe229831)}}, + {{TOBN(0x93bccbba, 0xbb2eec64), TOBN(0xa0c23b64, 0xda03adbe), + TOBN(0x5f7aa00a, 0xe0e86ac4), TOBN(0x470b941e, 0xfc1401e6)}, + {TOBN(0x5ad8d679, 0x9df43574), TOBN(0x4ccfb8a9, 0x0f65d810), + TOBN(0x1bce80e3, 0xaa7fbd81), TOBN(0x273291ad, 0x9508d20a)}}, + {{TOBN(0xf5c4b46b, 0x42a92806), TOBN(0x810684ec, 0xa86ab44a), + TOBN(0x4591640b, 0xca0bc9f8), TOBN(0xb5efcdfc, 0x5c4b6054)}, + {TOBN(0x16fc8907, 0x6e9edd12), TOBN(0xe29d0b50, 0xd4d792f9), + TOBN(0xa45fd01c, 0x9b03116d), TOBN(0x85035235, 0xc81765a4)}}, + {{TOBN(0x1fe2a9b2, 0xb4b4b67c), TOBN(0xc1d10df0, 0xe8020604), + TOBN(0x9d64abfc, 0xbc8058d8), TOBN(0x8943b9b2, 0x712a0fbb)}, + {TOBN(0x90eed914, 0x3b3def04), TOBN(0x85ab3aa2, 0x4ce775ff), + TOBN(0x605fd4ca, 0x7bbc9040), TOBN(0x8b34a564, 0xe2c75dfb)}}, + {{TOBN(0x41ffc94a, 0x10358560), TOBN(0x2d8a5072, 0x9e5c28aa), + TOBN(0xe915a0fc, 0x4cc7eb15), TOBN(0xe9efab05, 0x8f6d0f5d)}, + {TOBN(0xdbab47a9, 0xd19e9b91), TOBN(0x8cfed745, 0x0276154c), + TOBN(0x154357ae, 0x2cfede0d), TOBN(0x520630df, 0x19f5a4ef)}}, + {{TOBN(0x25759f7c, 0xe382360f), TOBN(0xb6db05c9, 0x88bf5857), + TOBN(0x2917d61d, 0x6c58d46c), TOBN(0x14f8e491, 0xfd20cb7a)}, + {TOBN(0xb68a727a, 0x11c20340), TOBN(0x0386f86f, 0xaf7ccbb6), + TOBN(0x5c8bc6cc, 0xfee09a20), TOBN(0x7d76ff4a, 0xbb7eea35)}}, + {{TOBN(0xa7bdebe7, 0xdb15be7a), TOBN(0x67a08054, 0xd89f0302), + TOBN(0x56bf0ea9, 0xc1193364), TOBN(0xc8244467, 0x62837ebe)}, + {TOBN(0x32bd8e8b, 0x20d841b8), TOBN(0x127a0548, 0xdbb8a54f), + TOBN(0x83dd4ca6, 0x63b20236), TOBN(0x87714718, 0x203491fa)}}, + {{TOBN(0x4dabcaaa, 0xaa8a5288), TOBN(0x91cc0c8a, 0xaf23a1c9), + TOBN(0x34c72c6a, 0x3f220e0c), TOBN(0xbcc20bdf, 0x1232144a)}, + {TOBN(0x6e2f42da, 0xa20ede1b), TOBN(0xc441f00c, 0x74a00515), + TOBN(0xbf46a5b6, 0x734b8c4b), TOBN(0x57409503, 0x7b56c9a4)}}, + {{TOBN(0x9f735261, 0xe4585d45), TOBN(0x9231faed, 0x6734e642), + TOBN(0x1158a176, 0xbe70ee6c), TOBN(0x35f1068d, 0x7c3501bf)}, + {TOBN(0x6beef900, 0xa2d26115), TOBN(0x649406f2, 0xef0afee3), + TOBN(0x3f43a60a, 0xbc2420a1), TOBN(0x509002a7, 0xd5aee4ac)}}, + {{TOBN(0xb46836a5, 0x3ff3571b), TOBN(0x24f98b78, 0x837927c1), + TOBN(0x6254256a, 0x4533c716), TOBN(0xf27abb0b, 0xd07ee196)}, + {TOBN(0xd7cf64fc, 0x5c6d5bfd), TOBN(0x6915c751, 0xf0cd7a77), + TOBN(0xd9f59012, 0x8798f534), TOBN(0x772b0da8, 0xf81d8b5f)}}, + {{TOBN(0x1244260c, 0x2e03fa69), TOBN(0x36cf0e3a, 0x3be1a374), + TOBN(0x6e7c1633, 0xef06b960), TOBN(0xa71a4c55, 0x671f90f6)}, + {TOBN(0x7a941251, 0x33c673db), TOBN(0xc0bea510, 0x73e8c131), + TOBN(0x61a8a699, 0xd4f6c734), TOBN(0x25e78c88, 0x341ed001)}}, + {{TOBN(0x5c18acf8, 0x8e2f7d90), TOBN(0xfdbf33d7, 0x77be32cd), + TOBN(0x0a085cd7, 0xd2eb5ee9), TOBN(0x2d702cfb, 0xb3201115)}, + {TOBN(0xb6e0ebdb, 0x85c88ce8), TOBN(0x23a3ce3c, 0x1e01d617), + TOBN(0x3041618e, 0x567333ac), TOBN(0x9dd0fd8f, 0x157edb6b)}}, + {{TOBN(0x27f74702, 0xb57872b8), TOBN(0x2ef26b4f, 0x657d5fe1), + TOBN(0x95426f0a, 0x57cf3d40), TOBN(0x847e2ad1, 0x65a6067a)}, + {TOBN(0xd474d9a0, 0x09996a74), TOBN(0x16a56acd, 0x2a26115c), + TOBN(0x02a615c3, 0xd16f4d43), TOBN(0xcc3fc965, 0xaadb85b7)}}, + {{TOBN(0x386bda73, 0xce07d1b0), TOBN(0xd82910c2, 0x58ad4178), + TOBN(0x124f82cf, 0xcd2617f4), TOBN(0xcc2f5e8d, 0xef691770)}, + {TOBN(0x82702550, 0xb8c30ccc), TOBN(0x7b856aea, 0x1a8e575a), + TOBN(0xbb822fef, 0xb1ab9459), TOBN(0x085928bc, 0xec24e38e)}}, + {{TOBN(0x5d0402ec, 0xba8f4b4d), TOBN(0xc07cd4ba, 0x00b4d58b), + TOBN(0x5d8dffd5, 0x29227e7a), TOBN(0x61d44d0c, 0x31bf386f)}, + {TOBN(0xe486dc2b, 0x135e6f4d), TOBN(0x680962eb, 0xe79410ef), + TOBN(0xa61bd343, 0xf10088b5), TOBN(0x6aa76076, 0xe2e28686)}}, + {{TOBN(0x80463d11, 0x8fb98871), TOBN(0xcb26f5c3, 0xbbc76aff), + TOBN(0xd4ab8edd, 0xfbe03614), TOBN(0xc8eb579b, 0xc0cf2dee)}, + {TOBN(0xcc004c15, 0xc93bae41), TOBN(0x46fbae5d, 0x3aeca3b2), + TOBN(0x671235cf, 0x0f1e9ab1), TOBN(0xadfba934, 0x9ec285c1)}}, + {{TOBN(0x88ded013, 0xf216c980), TOBN(0xc8ac4fb8, 0xf79e0bc1), + TOBN(0xa29b89c6, 0xfb97a237), TOBN(0xb697b780, 0x9922d8e7)}, + {TOBN(0x3142c639, 0xddb945b5), TOBN(0x447b06c7, 0xe094c3a9), + TOBN(0xcdcb3642, 0x72266c90), TOBN(0x633aad08, 0xa9385046)}}, + {{TOBN(0xa36c936b, 0xb57c6477), TOBN(0x871f8b64, 0xe94dbcc6), + TOBN(0x28d0fb62, 0xa591a67b), TOBN(0x9d40e081, 0xc1d926f5)}, + {TOBN(0x3111eaf6, 0xf2d84b5a), TOBN(0x228993f9, 0xa565b644), + TOBN(0x0ccbf592, 0x2c83188b), TOBN(0xf87b30ab, 0x3df3e197)}}, + {{TOBN(0xb8658b31, 0x7642bca8), TOBN(0x1a032d7f, 0x52800f17), + TOBN(0x051dcae5, 0x79bf9445), TOBN(0xeba6b8ee, 0x54a2e253)}, + {TOBN(0x5c8b9cad, 0xd4485692), TOBN(0x84bda40e, 0x8986e9be), + TOBN(0xd16d16a4, 0x2f0db448), TOBN(0x8ec80050, 0xa14d4188)}}, + {{TOBN(0xb2b26107, 0x98fa7aaa), TOBN(0x41209ee4, 0xf073aa4e), + TOBN(0xf1570359, 0xf2d6b19b), TOBN(0xcbe6868c, 0xfc577caf)}, + {TOBN(0x186c4bdc, 0x32c04dd3), TOBN(0xa6c35fae, 0xcfeee397), + TOBN(0xb4a1b312, 0xf086c0cf), TOBN(0xe0a5ccc6, 0xd9461fe2)}}, + {{TOBN(0xc32278aa, 0x1536189f), TOBN(0x1126c55f, 0xba6df571), + TOBN(0x0f71a602, 0xb194560e), TOBN(0x8b2d7405, 0x324bd6e1)}, + {TOBN(0x8481939e, 0x3738be71), TOBN(0xb5090b1a, 0x1a4d97a9), + TOBN(0x116c65a3, 0xf05ba915), TOBN(0x21863ad3, 0xaae448aa)}}, + {{TOBN(0xd24e2679, 0xa7aae5d3), TOBN(0x7076013d, 0x0de5c1c4), + TOBN(0x2d50f8ba, 0xbb05b629), TOBN(0x73c1abe2, 0x6e66efbb)}, + {TOBN(0xefd4b422, 0xf2488af7), TOBN(0xe4105d02, 0x663ba575), + TOBN(0x7eb60a8b, 0x53a69457), TOBN(0x62210008, 0xc945973b)}}, + {{TOBN(0xfb255478, 0x77a50ec6), TOBN(0xbf0392f7, 0x0a37a72c), + TOBN(0xa0a7a19c, 0x4be18e7a), TOBN(0x90d8ea16, 0x25b1e0af)}, + {TOBN(0x7582a293, 0xef953f57), TOBN(0x90a64d05, 0xbdc5465a), + TOBN(0xca79c497, 0xe2510717), TOBN(0x560dbb7c, 0x18cb641f)}}, + {{TOBN(0x1d8e3286, 0x4b66abfb), TOBN(0xd26f52e5, 0x59030900), + TOBN(0x1ee3f643, 0x5584941a), TOBN(0x6d3b3730, 0x569f5958)}, + {TOBN(0x9ff2a62f, 0x4789dba5), TOBN(0x91fcb815, 0x72b5c9b7), + TOBN(0xf446cb7d, 0x6c8f9a0e), TOBN(0x48f625c1, 0x39b7ecb5)}}, + {{TOBN(0xbabae801, 0x1c6219b8), TOBN(0xe7a562d9, 0x28ac2f23), + TOBN(0xe1b48732, 0x26e20588), TOBN(0x06ee1cad, 0x775af051)}, + {TOBN(0xda29ae43, 0xfaff79f7), TOBN(0xc141a412, 0x652ee9e0), + TOBN(0x1e127f6f, 0x195f4bd0), TOBN(0x29c6ab4f, 0x072f34f8)}}, + {{TOBN(0x7b7c1477, 0x30448112), TOBN(0x82b51af1, 0xe4a38656), + TOBN(0x2bf2028a, 0x2f315010), TOBN(0xc9a4a01f, 0x6ea88cd4)}, + {TOBN(0xf63e95d8, 0x257e5818), TOBN(0xdd8efa10, 0xb4519b16), + TOBN(0xed8973e0, 0x0da910bf), TOBN(0xed49d077, 0x5c0fe4a9)}}, + {{TOBN(0xac3aac5e, 0xb7caee1e), TOBN(0x1033898d, 0xa7f4da57), + TOBN(0x42145c0e, 0x5c6669b9), TOBN(0x42daa688, 0xc1aa2aa0)}, + {TOBN(0x629cc15c, 0x1a1d885a), TOBN(0x25572ec0, 0xf4b76817), + TOBN(0x8312e435, 0x9c8f8f28), TOBN(0x8107f8cd, 0x81965490)}}, + {{TOBN(0x516ff3a3, 0x6fa6110c), TOBN(0x74fb1eb1, 0xfb93561f), + TOBN(0x6c0c9047, 0x8457522b), TOBN(0xcfd32104, 0x6bb8bdc6)}, + {TOBN(0x2d6884a2, 0xcc80ad57), TOBN(0x7c27fc35, 0x86a9b637), + TOBN(0x3461baed, 0xadf4e8cd), TOBN(0x1d56251a, 0x617242f0)}}, + {{TOBN(0x0b80d209, 0xc955bef4), TOBN(0xdf02cad2, 0x06adb047), + TOBN(0xf0d7cb91, 0x5ec74fee), TOBN(0xd2503375, 0x1111ba44)}, + {TOBN(0x9671755e, 0xdf53cb36), TOBN(0x54dcb612, 0x3368551b), + TOBN(0x66d69aac, 0xc8a025a4), TOBN(0x6be946c6, 0xe77ef445)}}, + {{TOBN(0x719946d1, 0xa995e094), TOBN(0x65e848f6, 0xe51e04d8), + TOBN(0xe62f3300, 0x6a1e3113), TOBN(0x1541c7c1, 0x501de503)}, + {TOBN(0x4daac9fa, 0xf4acfade), TOBN(0x0e585897, 0x44cd0b71), + TOBN(0x544fd869, 0x0a51cd77), TOBN(0x60fc20ed, 0x0031016d)}}, + {{TOBN(0x58b404ec, 0xa4276867), TOBN(0x46f6c3cc, 0x34f34993), + TOBN(0x477ca007, 0xc636e5bd), TOBN(0x8018f5e5, 0x7c458b47)}, + {TOBN(0xa1202270, 0xe47b668f), TOBN(0xcef48ccd, 0xee14f203), + TOBN(0x23f98bae, 0x62ff9b4d), TOBN(0x55acc035, 0xc589eddd)}}, + {{TOBN(0x3fe712af, 0x64db4444), TOBN(0x19e9d634, 0xbecdd480), + TOBN(0xe08bc047, 0xa930978a), TOBN(0x2dbf24ec, 0xa1280733)}, + {TOBN(0x3c0ae38c, 0x2cd706b2), TOBN(0x5b012a5b, 0x359017b9), + TOBN(0x3943c38c, 0x72e0f5ae), TOBN(0x786167ea, 0x57176fa3)}}, + {{TOBN(0xe5f9897d, 0x594881dc), TOBN(0x6b5efad8, 0xcfb820c1), + TOBN(0xb2179093, 0xd55018de), TOBN(0x39ad7d32, 0x0bac56ce)}, + {TOBN(0xb55122e0, 0x2cfc0e81), TOBN(0x117c4661, 0xf6d89daa), + TOBN(0x362d01e1, 0xcb64fa09), TOBN(0x6a309b4e, 0x3e9c4ddd)}}, + {{TOBN(0xfa979fb7, 0xabea49b1), TOBN(0xb4b1d27d, 0x10e2c6c5), + TOBN(0xbd61c2c4, 0x23afde7a), TOBN(0xeb6614f8, 0x9786d358)}, + {TOBN(0x4a5d816b, 0x7f6f7459), TOBN(0xe431a44f, 0x09360e7b), + TOBN(0x8c27a032, 0xc309914c), TOBN(0xcea5d68a, 0xcaede3d8)}}, + {{TOBN(0x3668f665, 0x3a0a3f95), TOBN(0x89369416, 0x7ceba27b), + TOBN(0x89981fad, 0xe4728fe9), TOBN(0x7102c8a0, 0x8a093562)}, + {TOBN(0xbb80310e, 0x235d21c8), TOBN(0x505e55d1, 0xbefb7f7b), + TOBN(0xa0a90811, 0x12958a67), TOBN(0xd67e106a, 0x4d851fef)}}, + {{TOBN(0xb84011a9, 0x431dd80e), TOBN(0xeb7c7cca, 0x73306cd9), + TOBN(0x20fadd29, 0xd1b3b730), TOBN(0x83858b5b, 0xfe37b3d3)}, + {TOBN(0xbf4cd193, 0xb6251d5c), TOBN(0x1cca1fd3, 0x1352d952), + TOBN(0xc66157a4, 0x90fbc051), TOBN(0x7990a638, 0x89b98636)}}}, + {{{TOBN(0xe5aa692a, 0x87dec0e1), TOBN(0x010ded8d, 0xf7b39d00), + TOBN(0x7b1b80c8, 0x54cfa0b5), TOBN(0x66beb876, 0xa0f8ea28)}, + {TOBN(0x50d7f531, 0x3476cd0e), TOBN(0xa63d0e65, 0xb08d3949), + TOBN(0x1a09eea9, 0x53479fc6), TOBN(0x82ae9891, 0xf499e742)}}, + {{TOBN(0xab58b910, 0x5ca7d866), TOBN(0x582967e2, 0x3adb3b34), + TOBN(0x89ae4447, 0xcceac0bc), TOBN(0x919c667c, 0x7bf56af5)}, + {TOBN(0x9aec17b1, 0x60f5dcd7), TOBN(0xec697b9f, 0xddcaadbc), + TOBN(0x0b98f341, 0x463467f5), TOBN(0xb187f1f7, 0xa967132f)}}, + {{TOBN(0x90fe7a1d, 0x214aeb18), TOBN(0x1506af3c, 0x741432f7), + TOBN(0xbb5565f9, 0xe591a0c4), TOBN(0x10d41a77, 0xb44f1bc3)}, + {TOBN(0xa09d65e4, 0xa84bde96), TOBN(0x42f060d8, 0xf20a6a1c), + TOBN(0x652a3bfd, 0xf27f9ce7), TOBN(0xb6bdb65c, 0x3b3d739f)}}, + {{TOBN(0xeb5ddcb6, 0xec7fae9f), TOBN(0x995f2714, 0xefb66e5a), + TOBN(0xdee95d8e, 0x69445d52), TOBN(0x1b6c2d46, 0x09e27620)}, + {TOBN(0x32621c31, 0x8129d716), TOBN(0xb03909f1, 0x0958c1aa), + TOBN(0x8c468ef9, 0x1af4af63), TOBN(0x162c429f, 0xfba5cdf6)}}, + {{TOBN(0x2f682343, 0x753b9371), TOBN(0x29cab45a, 0x5f1f9cd7), + TOBN(0x571623ab, 0xb245db96), TOBN(0xc507db09, 0x3fd79999)}, + {TOBN(0x4e2ef652, 0xaf036c32), TOBN(0x86f0cc78, 0x05018e5c), + TOBN(0xc10a73d4, 0xab8be350), TOBN(0x6519b397, 0x7e826327)}}, + {{TOBN(0xe8cb5eef, 0x9c053df7), TOBN(0x8de25b37, 0xb300ea6f), + TOBN(0xdb03fa92, 0xc849cffb), TOBN(0x242e43a7, 0xe84169bb)}, + {TOBN(0xe4fa51f4, 0xdd6f958e), TOBN(0x6925a77f, 0xf4445a8d), + TOBN(0xe6e72a50, 0xe90d8949), TOBN(0xc66648e3, 0x2b1f6390)}}, + {{TOBN(0xb2ab1957, 0x173e460c), TOBN(0x1bbbce75, 0x30704590), + TOBN(0xc0a90dbd, 0xdb1c7162), TOBN(0x505e399e, 0x15cdd65d)}, + {TOBN(0x68434dcb, 0x57797ab7), TOBN(0x60ad35ba, 0x6a2ca8e8), + TOBN(0x4bfdb1e0, 0xde3336c1), TOBN(0xbbef99eb, 0xd8b39015)}}, + {{TOBN(0x6c3b96f3, 0x1711ebec), TOBN(0x2da40f1f, 0xce98fdc4), + TOBN(0xb99774d3, 0x57b4411f), TOBN(0x87c8bdf4, 0x15b65bb6)}, + {TOBN(0xda3a89e3, 0xc2eef12d), TOBN(0xde95bb9b, 0x3c7471f3), + TOBN(0x600f225b, 0xd812c594), TOBN(0x54907c5d, 0x2b75a56b)}}, + {{TOBN(0xa93cc5f0, 0x8db60e35), TOBN(0x743e3cd6, 0xfa833319), + TOBN(0x7dad5c41, 0xf81683c9), TOBN(0x70c1e7d9, 0x9c34107e)}, + {TOBN(0x0edc4a39, 0xa6be0907), TOBN(0x36d47035, 0x86d0b7d3), + TOBN(0x8c76da03, 0x272bfa60), TOBN(0x0b4a07ea, 0x0f08a414)}}, + {{TOBN(0x699e4d29, 0x45c1dd53), TOBN(0xcadc5898, 0x231debb5), + TOBN(0xdf49fcc7, 0xa77f00e0), TOBN(0x93057bbf, 0xa73e5a0e)}, + {TOBN(0x2f8b7ecd, 0x027a4cd1), TOBN(0x114734b3, 0xc614011a), + TOBN(0xe7a01db7, 0x67677c68), TOBN(0x89d9be5e, 0x7e273f4f)}}, + {{TOBN(0xd225cb2e, 0x089808ef), TOBN(0xf1f7a27d, 0xd59e4107), + TOBN(0x53afc761, 0x8211b9c9), TOBN(0x0361bc67, 0xe6819159)}, + {TOBN(0x2a865d0b, 0x7f071426), TOBN(0x6a3c1810, 0xe7072567), + TOBN(0x3e3bca1e, 0x0d6bcabd), TOBN(0xa1b02bc1, 0x408591bc)}}, + {{TOBN(0xe0deee59, 0x31fba239), TOBN(0xf47424d3, 0x98bd91d1), + TOBN(0x0f8886f4, 0x071a3c1d), TOBN(0x3f7d41e8, 0xa819233b)}, + {TOBN(0x708623c2, 0xcf6eb998), TOBN(0x86bb49af, 0x609a287f), + TOBN(0x942bb249, 0x63c90762), TOBN(0x0ef6eea5, 0x55a9654b)}}, + {{TOBN(0x5f6d2d72, 0x36f5defe), TOBN(0xfa9922dc, 0x56f99176), + TOBN(0x6c8c5ece, 0xf78ce0c7), TOBN(0x7b44589d, 0xbe09b55e)}, + {TOBN(0xe11b3bca, 0x9ea83770), TOBN(0xd7fa2c7f, 0x2ab71547), + TOBN(0x2a3dd6fa, 0x2a1ddcc0), TOBN(0x09acb430, 0x5a7b7707)}}, + {{TOBN(0x4add4a2e, 0x649d4e57), TOBN(0xcd53a2b0, 0x1917526e), + TOBN(0xc5262330, 0x20b44ac4), TOBN(0x4028746a, 0xbaa2c31d)}, + {TOBN(0x51318390, 0x64291d4c), TOBN(0xbf48f151, 0xee5ad909), + TOBN(0xcce57f59, 0x7b185681), TOBN(0x7c3ac1b0, 0x4854d442)}}, + {{TOBN(0x65587dc3, 0xc093c171), TOBN(0xae7acb24, 0x24f42b65), + TOBN(0x5a338adb, 0x955996cb), TOBN(0xc8e65675, 0x6051f91b)}, + {TOBN(0x66711fba, 0x28b8d0b1), TOBN(0x15d74137, 0xb6c10a90), + TOBN(0x70cdd7eb, 0x3a232a80), TOBN(0xc9e2f07f, 0x6191ed24)}}, + {{TOBN(0xa80d1db6, 0xf79588c0), TOBN(0xfa52fc69, 0xb55768cc), + TOBN(0x0b4df1ae, 0x7f54438a), TOBN(0x0cadd1a7, 0xf9b46a4f)}, + {TOBN(0xb40ea6b3, 0x1803dd6f), TOBN(0x488e4fa5, 0x55eaae35), + TOBN(0x9f047d55, 0x382e4e16), TOBN(0xc9b5b7e0, 0x2f6e0c98)}}, + {{TOBN(0x6b1bd2d3, 0x95762649), TOBN(0xa9604ee7, 0xc7aea3f6), + TOBN(0x3646ff27, 0x6dc6f896), TOBN(0x9bf0e7f5, 0x2860bad1)}, + {TOBN(0x2d92c821, 0x7cb44b92), TOBN(0xa2f5ce63, 0xaea9c182), + TOBN(0xd0a2afb1, 0x9154a5fd), TOBN(0x482e474c, 0x95801da6)}}, + {{TOBN(0xc19972d0, 0xb611c24b), TOBN(0x1d468e65, 0x60a8f351), + TOBN(0xeb758069, 0x7bcf6421), TOBN(0xec9dd0ee, 0x88fbc491)}, + {TOBN(0x5b59d2bf, 0x956c2e32), TOBN(0x73dc6864, 0xdcddf94e), + TOBN(0xfd5e2321, 0xbcee7665), TOBN(0xa7b4f8ef, 0x5e9a06c4)}}, + {{TOBN(0xfba918dd, 0x7280f855), TOBN(0xbbaac260, 0x8baec688), + TOBN(0xa3b3f00f, 0x33400f42), TOBN(0x3d2dba29, 0x66f2e6e4)}, + {TOBN(0xb6f71a94, 0x98509375), TOBN(0x8f33031f, 0xcea423cc), + TOBN(0x009b8dd0, 0x4807e6fb), TOBN(0x5163cfe5, 0x5cdb954c)}}, + {{TOBN(0x03cc8f17, 0xcf41c6e8), TOBN(0xf1f03c2a, 0x037b925c), + TOBN(0xc39c19cc, 0x66d2427c), TOBN(0x823d24ba, 0x7b6c18e4)}, + {TOBN(0x32ef9013, 0x901f0b4f), TOBN(0x684360f1, 0xf8941c2e), + TOBN(0x0ebaff52, 0x2c28092e), TOBN(0x7891e4e3, 0x256c932f)}}, + {{TOBN(0x51264319, 0xac445e3d), TOBN(0x553432e7, 0x8ea74381), + TOBN(0xe6eeaa69, 0x67e9c50a), TOBN(0x27ced284, 0x62e628c7)}, + {TOBN(0x3f96d375, 0x7a4afa57), TOBN(0xde0a14c3, 0xe484c150), + TOBN(0x364a24eb, 0x38bd9923), TOBN(0x1df18da0, 0xe5177422)}}, + {{TOBN(0x174e8f82, 0xd8d38a9b), TOBN(0x2e97c600, 0xe7de1391), + TOBN(0xc5709850, 0xa1c175dd), TOBN(0x969041a0, 0x32ae5035)}, + {TOBN(0xcbfd533b, 0x76a2086b), TOBN(0xd6bba71b, 0xd7c2e8fe), + TOBN(0xb2d58ee6, 0x099dfb67), TOBN(0x3a8b342d, 0x064a85d9)}}, + {{TOBN(0x3bc07649, 0x522f9be3), TOBN(0x690c075b, 0xdf1f49a8), + TOBN(0x80e1aee8, 0x3854ec42), TOBN(0x2a7dbf44, 0x17689dc7)}, + {TOBN(0xc004fc0e, 0x3faf4078), TOBN(0xb2f02e9e, 0xdf11862c), + TOBN(0xf10a5e0f, 0xa0a1b7b3), TOBN(0x30aca623, 0x8936ec80)}}, + {{TOBN(0xf83cbf05, 0x02f40d9a), TOBN(0x4681c468, 0x2c318a4d), + TOBN(0x98575618, 0x0e9c2674), TOBN(0xbe79d046, 0x1847092e)}, + {TOBN(0xaf1e480a, 0x78bd01e0), TOBN(0x6dd359e4, 0x72a51db9), + TOBN(0x62ce3821, 0xe3afbab6), TOBN(0xc5cee5b6, 0x17733199)}}, + {{TOBN(0xe08b30d4, 0x6ffd9fbb), TOBN(0x6e5bc699, 0x36c610b7), + TOBN(0xf343cff2, 0x9ce262cf), TOBN(0xca2e4e35, 0x68b914c1)}, + {TOBN(0x011d64c0, 0x16de36c5), TOBN(0xe0b10fdd, 0x42e2b829), + TOBN(0x78942981, 0x6685aaf8), TOBN(0xe7511708, 0x230ede97)}}, + {{TOBN(0x671ed8fc, 0x3b922bf8), TOBN(0xe4d8c0a0, 0x4c29b133), + TOBN(0x87eb1239, 0x3b6e99c4), TOBN(0xaff3974c, 0x8793beba)}, + {TOBN(0x03749405, 0x2c18df9b), TOBN(0xc5c3a293, 0x91007139), + TOBN(0x6a77234f, 0xe37a0b95), TOBN(0x02c29a21, 0xb661c96b)}}, + {{TOBN(0xc3aaf1d6, 0x141ecf61), TOBN(0x9195509e, 0x3bb22f53), + TOBN(0x29597404, 0x22d51357), TOBN(0x1b083822, 0x537bed60)}, + {TOBN(0xcd7d6e35, 0xe07289f0), TOBN(0x1f94c48c, 0x6dd86eff), + TOBN(0xc8bb1f82, 0xeb0f9cfa), TOBN(0x9ee0b7e6, 0x1b2eb97d)}}, + {{TOBN(0x5a52fe2e, 0x34d74e31), TOBN(0xa352c310, 0x3bf79ab6), + TOBN(0x97ff6c5a, 0xabfeeb8f), TOBN(0xbfbe8fef, 0xf5c97305)}, + {TOBN(0xd6081ce6, 0xa7904608), TOBN(0x1f812f3a, 0xc4fca249), + TOBN(0x9b24bc9a, 0xb9e5e200), TOBN(0x91022c67, 0x38012ee8)}}, + {{TOBN(0xe83d9c5d, 0x30a713a1), TOBN(0x4876e3f0, 0x84ef0f93), + TOBN(0xc9777029, 0xc1fbf928), TOBN(0xef7a6bb3, 0xbce7d2a4)}, + {TOBN(0xb8067228, 0xdfa2a659), TOBN(0xd5cd3398, 0xd877a48f), + TOBN(0xbea4fd8f, 0x025d0f3f), TOBN(0xd67d2e35, 0x2eae7c2b)}}, + {{TOBN(0x184de7d7, 0xcc5f4394), TOBN(0xb5551b5c, 0x4536e142), + TOBN(0x2e89b212, 0xd34aa60a), TOBN(0x14a96fea, 0xf50051d5)}, + {TOBN(0x4e21ef74, 0x0d12bb0b), TOBN(0xc522f020, 0x60b9677e), + TOBN(0x8b12e467, 0x2df7731d), TOBN(0x39f80382, 0x7b326d31)}}, + {{TOBN(0xdfb8630c, 0x39024a94), TOBN(0xaacb96a8, 0x97319452), + TOBN(0xd68a3961, 0xeda3867c), TOBN(0x0c58e2b0, 0x77c4ffca)}, + {TOBN(0x3d545d63, 0x4da919fa), TOBN(0xef79b69a, 0xf15e2289), + TOBN(0x54bc3d3d, 0x808bab10), TOBN(0xc8ab3007, 0x45f82c37)}}, + {{TOBN(0xc12738b6, 0x7c4a658a), TOBN(0xb3c47639, 0x40e72182), + TOBN(0x3b77be46, 0x8798e44f), TOBN(0xdc047df2, 0x17a7f85f)}, + {TOBN(0x2439d4c5, 0x5e59d92d), TOBN(0xcedca475, 0xe8e64d8d), + TOBN(0xa724cd0d, 0x87ca9b16), TOBN(0x35e4fd59, 0xa5540dfe)}}, + {{TOBN(0xf8c1ff18, 0xe4bcf6b1), TOBN(0x856d6285, 0x295018fa), + TOBN(0x433f665c, 0x3263c949), TOBN(0xa6a76dd6, 0xa1f21409)}, + {TOBN(0x17d32334, 0xcc7b4f79), TOBN(0xa1d03122, 0x06720e4a), + TOBN(0xadb6661d, 0x81d9bed5), TOBN(0xf0d6fb02, 0x11db15d1)}}, + {{TOBN(0x7fd11ad5, 0x1fb747d2), TOBN(0xab50f959, 0x3033762b), + TOBN(0x2a7e711b, 0xfbefaf5a), TOBN(0xc7393278, 0x3fef2bbf)}, + {TOBN(0xe29fa244, 0x0df6f9be), TOBN(0x9092757b, 0x71efd215), + TOBN(0xee60e311, 0x4f3d6fd9), TOBN(0x338542d4, 0x0acfb78b)}}, + {{TOBN(0x44a23f08, 0x38961a0f), TOBN(0x1426eade, 0x986987ca), + TOBN(0x36e6ee2e, 0x4a863cc6), TOBN(0x48059420, 0x628b8b79)}, + {TOBN(0x30303ad8, 0x7396e1de), TOBN(0x5c8bdc48, 0x38c5aad1), + TOBN(0x3e40e11f, 0x5c8f5066), TOBN(0xabd6e768, 0x8d246bbd)}}, + {{TOBN(0x68aa40bb, 0x23330a01), TOBN(0xd23f5ee4, 0xc34eafa0), + TOBN(0x3bbee315, 0x5de02c21), TOBN(0x18dd4397, 0xd1d8dd06)}, + {TOBN(0x3ba1939a, 0x122d7b44), TOBN(0xe6d3b40a, 0xa33870d6), + TOBN(0x8e620f70, 0x1c4fe3f8), TOBN(0xf6bba1a5, 0xd3a50cbf)}}, + {{TOBN(0x4a78bde5, 0xcfc0aee0), TOBN(0x847edc46, 0xc08c50bd), + TOBN(0xbaa2439c, 0xad63c9b2), TOBN(0xceb4a728, 0x10fc2acb)}, + {TOBN(0xa419e40e, 0x26da033d), TOBN(0x6cc3889d, 0x03e02683), + TOBN(0x1cd28559, 0xfdccf725), TOBN(0x0fd7e0f1, 0x8d13d208)}}, + {{TOBN(0x01b9733b, 0x1f0df9d4), TOBN(0x8cc2c5f3, 0xa2b5e4f3), + TOBN(0x43053bfa, 0x3a304fd4), TOBN(0x8e87665c, 0x0a9f1aa7)}, + {TOBN(0x087f29ec, 0xd73dc965), TOBN(0x15ace455, 0x3e9023db), + TOBN(0x2370e309, 0x2bce28b4), TOBN(0xf9723442, 0xb6b1e84a)}}, + {{TOBN(0xbeee662e, 0xb72d9f26), TOBN(0xb19396de, 0xf0e47109), + TOBN(0x85b1fa73, 0xe13289d0), TOBN(0x436cf77e, 0x54e58e32)}, + {TOBN(0x0ec833b3, 0xe990ef77), TOBN(0x7373e3ed, 0x1b11fc25), + TOBN(0xbe0eda87, 0x0fc332ce), TOBN(0xced04970, 0x8d7ea856)}}, + {{TOBN(0xf85ff785, 0x7e977ca0), TOBN(0xb66ee8da, 0xdfdd5d2b), + TOBN(0xf5e37950, 0x905af461), TOBN(0x587b9090, 0x966d487c)}, + {TOBN(0x6a198a1b, 0x32ba0127), TOBN(0xa7720e07, 0x141615ac), + TOBN(0xa23f3499, 0x996ef2f2), TOBN(0xef5f64b4, 0x470bcb3d)}}, + {{TOBN(0xa526a962, 0x92b8c559), TOBN(0x0c14aac0, 0x69740a0f), + TOBN(0x0d41a9e3, 0xa6bdc0a5), TOBN(0x97d52106, 0x9c48aef4)}, + {TOBN(0xcf16bd30, 0x3e7c253b), TOBN(0xcc834b1a, 0x47fdedc1), + TOBN(0x7362c6e5, 0x373aab2e), TOBN(0x264ed85e, 0xc5f590ff)}}, + {{TOBN(0x7a46d9c0, 0x66d41870), TOBN(0xa50c20b1, 0x4787ba09), + TOBN(0x185e7e51, 0xe3d44635), TOBN(0xb3b3e080, 0x31e2d8dc)}, + {TOBN(0xbed1e558, 0xa179e9d9), TOBN(0x2daa3f79, 0x74a76781), + TOBN(0x4372baf2, 0x3a40864f), TOBN(0x46900c54, 0x4fe75cb5)}}, + {{TOBN(0xb95f171e, 0xf76765d0), TOBN(0x4ad726d2, 0x95c87502), + TOBN(0x2ec769da, 0x4d7c99bd), TOBN(0x5e2ddd19, 0xc36cdfa8)}, + {TOBN(0xc22117fc, 0xa93e6dea), TOBN(0xe8a2583b, 0x93771123), + TOBN(0xbe2f6089, 0xfa08a3a2), TOBN(0x4809d5ed, 0x8f0e1112)}}, + {{TOBN(0x3b414aa3, 0xda7a095e), TOBN(0x9049acf1, 0x26f5aadd), + TOBN(0x78d46a4d, 0x6be8b84a), TOBN(0xd66b1963, 0xb732b9b3)}, + {TOBN(0x5c2ac2a0, 0xde6e9555), TOBN(0xcf52d098, 0xb5bd8770), + TOBN(0x15a15fa6, 0x0fd28921), TOBN(0x56ccb81e, 0x8b27536d)}}, + {{TOBN(0x0f0d8ab8, 0x9f4ccbb8), TOBN(0xed5f44d2, 0xdb221729), + TOBN(0x43141988, 0x00bed10c), TOBN(0xc94348a4, 0x1d735b8b)}, + {TOBN(0x79f3e9c4, 0x29ef8479), TOBN(0x4c13a4e3, 0x614c693f), + TOBN(0x32c9af56, 0x8e143a14), TOBN(0xbc517799, 0xe29ac5c4)}}, + {{TOBN(0x05e17992, 0x2774856f), TOBN(0x6e52fb05, 0x6c1bf55f), + TOBN(0xaeda4225, 0xe4f19e16), TOBN(0x70f4728a, 0xaf5ccb26)}, + {TOBN(0x5d2118d1, 0xb2947f22), TOBN(0xc827ea16, 0x281d6fb9), + TOBN(0x8412328d, 0x8cf0eabd), TOBN(0x45ee9fb2, 0x03ef9dcf)}}, + {{TOBN(0x8e700421, 0xbb937d63), TOBN(0xdf8ff2d5, 0xcc4b37a6), + TOBN(0xa4c0d5b2, 0x5ced7b68), TOBN(0x6537c1ef, 0xc7308f59)}, + {TOBN(0x25ce6a26, 0x3b37f8e8), TOBN(0x170e9a9b, 0xdeebc6ce), + TOBN(0xdd037952, 0x8728d72c), TOBN(0x445b0e55, 0x850154bc)}}, + {{TOBN(0x4b7d0e06, 0x83a7337b), TOBN(0x1e3416d4, 0xffecf249), + TOBN(0x24840eff, 0x66a2b71f), TOBN(0xd0d9a50a, 0xb37cc26d)}, + {TOBN(0xe2198150, 0x6fe28ef7), TOBN(0x3cc5ef16, 0x23324c7f), + TOBN(0x220f3455, 0x769b5263), TOBN(0xe2ade2f1, 0xa10bf475)}}, + {{TOBN(0x28cd20fa, 0x458d3671), TOBN(0x1549722c, 0x2dc4847b), + TOBN(0x6dd01e55, 0x591941e3), TOBN(0x0e6fbcea, 0x27128ccb)}, + {TOBN(0xae1a1e6b, 0x3bef0262), TOBN(0xfa8c472c, 0x8f54e103), + TOBN(0x7539c0a8, 0x72c052ec), TOBN(0xd7b27369, 0x5a3490e9)}}, + {{TOBN(0x143fe1f1, 0x71684349), TOBN(0x36b4722e, 0x32e19b97), + TOBN(0xdc059227, 0x90980aff), TOBN(0x175c9c88, 0x9e13d674)}, + {TOBN(0xa7de5b22, 0x6e6bfdb1), TOBN(0x5ea5b7b2, 0xbedb4b46), + TOBN(0xd5570191, 0xd34a6e44), TOBN(0xfcf60d2e, 0xa24ff7e6)}}, + {{TOBN(0x614a392d, 0x677819e1), TOBN(0x7be74c7e, 0xaa5a29e8), + TOBN(0xab50fece, 0x63c85f3f), TOBN(0xaca2e2a9, 0x46cab337)}, + {TOBN(0x7f700388, 0x122a6fe3), TOBN(0xdb69f703, 0x882a04a8), + TOBN(0x9a77935d, 0xcf7aed57), TOBN(0xdf16207c, 0x8d91c86f)}}, + {{TOBN(0x2fca49ab, 0x63ed9998), TOBN(0xa3125c44, 0xa77ddf96), + TOBN(0x05dd8a86, 0x24344072), TOBN(0xa023dda2, 0xfec3fb56)}, + {TOBN(0x421b41fc, 0x0c743032), TOBN(0x4f2120c1, 0x5e438639), + TOBN(0xfb7cae51, 0xc83c1b07), TOBN(0xb2370caa, 0xcac2171a)}}, + {{TOBN(0x2eb2d962, 0x6cc820fb), TOBN(0x59feee5c, 0xb85a44bf), + TOBN(0x94620fca, 0x5b6598f0), TOBN(0x6b922cae, 0x7e314051)}, + {TOBN(0xff8745ad, 0x106bed4e), TOBN(0x546e71f5, 0xdfa1e9ab), + TOBN(0x935c1e48, 0x1ec29487), TOBN(0x9509216c, 0x4d936530)}}, + {{TOBN(0xc7ca3067, 0x85c9a2db), TOBN(0xd6ae5152, 0x6be8606f), + TOBN(0x09dbcae6, 0xe14c651d), TOBN(0xc9536e23, 0x9bc32f96)}, + {TOBN(0xa90535a9, 0x34521b03), TOBN(0xf39c526c, 0x878756ff), + TOBN(0x383172ec, 0x8aedf03c), TOBN(0x20a8075e, 0xefe0c034)}}, + {{TOBN(0xf22f9c62, 0x64026422), TOBN(0x8dd10780, 0x24b9d076), + TOBN(0x944c742a, 0x3bef2950), TOBN(0x55b9502e, 0x88a2b00b)}, + {TOBN(0xa59e14b4, 0x86a09817), TOBN(0xa39dd3ac, 0x47bb4071), + TOBN(0x55137f66, 0x3be0592f), TOBN(0x07fcafd4, 0xc9e63f5b)}}, + {{TOBN(0x963652ee, 0x346eb226), TOBN(0x7dfab085, 0xec2facb7), + TOBN(0x273bf2b8, 0x691add26), TOBN(0x30d74540, 0xf2b46c44)}, + {TOBN(0x05e8e73e, 0xf2c2d065), TOBN(0xff9b8a00, 0xd42eeac9), + TOBN(0x2fcbd205, 0x97209d22), TOBN(0xeb740ffa, 0xde14ea2c)}}, + {{TOBN(0xc71ff913, 0xa8aef518), TOBN(0x7bfc74bb, 0xfff4cfa2), + TOBN(0x1716680c, 0xb6b36048), TOBN(0x121b2cce, 0x9ef79af1)}, + {TOBN(0xbff3c836, 0xa01eb3d3), TOBN(0x50eb1c6a, 0x5f79077b), + TOBN(0xa48c32d6, 0xa004bbcf), TOBN(0x47a59316, 0x7d64f61d)}}, + {{TOBN(0x6068147f, 0x93102016), TOBN(0x12c5f654, 0x94d12576), + TOBN(0xefb071a7, 0xc9bc6b91), TOBN(0x7c2da0c5, 0x6e23ea95)}, + {TOBN(0xf4fd45b6, 0xd4a1dd5d), TOBN(0x3e7ad9b6, 0x9122b13c), + TOBN(0x342ca118, 0xe6f57a48), TOBN(0x1c2e94a7, 0x06f8288f)}}, + {{TOBN(0x99e68f07, 0x5a97d231), TOBN(0x7c80de97, 0x4d838758), + TOBN(0xbce0f5d0, 0x05872727), TOBN(0xbe5d95c2, 0x19c4d016)}, + {TOBN(0x921d5cb1, 0x9c2492ee), TOBN(0x42192dc1, 0x404d6fb3), + TOBN(0x4c84dcd1, 0x32f988d3), TOBN(0xde26d61f, 0xa17b8e85)}}, + {{TOBN(0xc466dcb6, 0x137c7408), TOBN(0x9a38d7b6, 0x36a266da), + TOBN(0x7ef5cb06, 0x83bebf1b), TOBN(0xe5cdcbbf, 0x0fd014e3)}, + {TOBN(0x30aa376d, 0xf65965a0), TOBN(0x60fe88c2, 0xebb3e95e), + TOBN(0x33fd0b61, 0x66ee6f20), TOBN(0x8827dcdb, 0x3f41f0a0)}}, + {{TOBN(0xbf8a9d24, 0x0c56c690), TOBN(0x40265dad, 0xddb7641d), + TOBN(0x522b05bf, 0x3a6b662b), TOBN(0x466d1dfe, 0xb1478c9b)}, + {TOBN(0xaa616962, 0x1484469b), TOBN(0x0db60549, 0x02df8f9f), + TOBN(0xc37bca02, 0x3cb8bf51), TOBN(0x5effe346, 0x21371ce8)}}, + {{TOBN(0xe8f65264, 0xff112c32), TOBN(0x8a9c736d, 0x7b971fb2), + TOBN(0xa4f19470, 0x7b75080d), TOBN(0xfc3f2c5a, 0x8839c59b)}, + {TOBN(0x1d6c777e, 0x5aeb49c2), TOBN(0xf3db034d, 0xda1addfe), + TOBN(0xd76fee5a, 0x5535affc), TOBN(0x0853ac70, 0xb92251fd)}}, + {{TOBN(0x37e3d594, 0x8b2a29d5), TOBN(0x28f1f457, 0x4de00ddb), + TOBN(0x8083c1b5, 0xf42c328b), TOBN(0xd8ef1d8f, 0xe493c73b)}, + {TOBN(0x96fb6260, 0x41dc61bd), TOBN(0xf74e8a9d, 0x27ee2f8a), + TOBN(0x7c605a80, 0x2c946a5d), TOBN(0xeed48d65, 0x3839ccfd)}}, + {{TOBN(0x9894344f, 0x3a29467a), TOBN(0xde81e949, 0xc51eba6d), + TOBN(0xdaea066b, 0xa5e5c2f2), TOBN(0x3fc8a614, 0x08c8c7b3)}, + {TOBN(0x7adff88f, 0x06d0de9f), TOBN(0xbbc11cf5, 0x3b75ce0a), + TOBN(0x9fbb7acc, 0xfbbc87d5), TOBN(0xa1458e26, 0x7badfde2)}}}, + {{{TOBN(0x1cb43668, 0xe039c256), TOBN(0x5f26fb8b, 0x7c17fd5d), + TOBN(0xeee426af, 0x79aa062b), TOBN(0x072002d0, 0xd78fbf04)}, + {TOBN(0x4c9ca237, 0xe84fb7e3), TOBN(0xb401d8a1, 0x0c82133d), + TOBN(0xaaa52592, 0x6d7e4181), TOBN(0xe9430833, 0x73dbb152)}}, + {{TOBN(0xf92dda31, 0xbe24319a), TOBN(0x03f7d28b, 0xe095a8e7), + TOBN(0xa52fe840, 0x98782185), TOBN(0x276ddafe, 0x29c24dbc)}, + {TOBN(0x80cd5496, 0x1d7a64eb), TOBN(0xe4360889, 0x7f1dbe42), + TOBN(0x2f81a877, 0x8438d2d5), TOBN(0x7e4d52a8, 0x85169036)}}, + {{TOBN(0x19e3d5b1, 0x1d59715d), TOBN(0xc7eaa762, 0xd788983e), + TOBN(0xe5a730b0, 0xabf1f248), TOBN(0xfbab8084, 0xfae3fd83)}, + {TOBN(0x65e50d21, 0x53765b2f), TOBN(0xbdd4e083, 0xfa127f3d), + TOBN(0x9cf3c074, 0x397b1b10), TOBN(0x59f8090c, 0xb1b59fd3)}}, + {{TOBN(0x7b15fd9d, 0x615faa8f), TOBN(0x8fa1eb40, 0x968554ed), + TOBN(0x7bb4447e, 0x7aa44882), TOBN(0x2bb2d0d1, 0x029fff32)}, + {TOBN(0x075e2a64, 0x6caa6d2f), TOBN(0x8eb879de, 0x22e7351b), + TOBN(0xbcd5624e, 0x9a506c62), TOBN(0x218eaef0, 0xa87e24dc)}}, + {{TOBN(0x37e56847, 0x44ddfa35), TOBN(0x9ccfc5c5, 0xdab3f747), + TOBN(0x9ac1df3f, 0x1ee96cf4), TOBN(0x0c0571a1, 0x3b480b8f)}, + {TOBN(0x2fbeb3d5, 0x4b3a7b3c), TOBN(0x35c03669, 0x5dcdbb99), + TOBN(0x52a0f5dc, 0xb2415b3a), TOBN(0xd57759b4, 0x4413ed9a)}}, + {{TOBN(0x1fe647d8, 0x3d30a2c5), TOBN(0x0857f77e, 0xf78a81dc), + TOBN(0x11d5a334, 0x131a4a9b), TOBN(0xc0a94af9, 0x29d393f5)}, + {TOBN(0xbc3a5c0b, 0xdaa6ec1a), TOBN(0xba9fe493, 0x88d2d7ed), + TOBN(0xbb4335b4, 0xbb614797), TOBN(0x991c4d68, 0x72f83533)}}, + {{TOBN(0x53258c28, 0xd2f01cb3), TOBN(0x93d6eaa3, 0xd75db0b1), + TOBN(0x419a2b0d, 0xe87d0db4), TOBN(0xa1e48f03, 0xd8fe8493)}, + {TOBN(0xf747faf6, 0xc508b23a), TOBN(0xf137571a, 0x35d53549), + TOBN(0x9f5e58e2, 0xfcf9b838), TOBN(0xc7186cee, 0xa7fd3cf5)}}, + {{TOBN(0x77b868ce, 0xe978a1d3), TOBN(0xe3a68b33, 0x7ab92d04), + TOBN(0x51029794, 0x87a5b862), TOBN(0x5f0606c3, 0x3a61d41d)}, + {TOBN(0x2814be27, 0x6f9326f1), TOBN(0x2f521c14, 0xc6fe3c2e), + TOBN(0x17464d7d, 0xacdf7351), TOBN(0x10f5f9d3, 0x777f7e44)}}, + {{TOBN(0xce8e616b, 0x269fb37d), TOBN(0xaaf73804, 0x7de62de5), + TOBN(0xaba11175, 0x4fdd4153), TOBN(0x515759ba, 0x3770b49b)}, + {TOBN(0x8b09ebf8, 0xaa423a61), TOBN(0x592245a1, 0xcd41fb92), + TOBN(0x1cba8ec1, 0x9b4c8936), TOBN(0xa87e91e3, 0xaf36710e)}}, + {{TOBN(0x1fd84ce4, 0x3d34a2e3), TOBN(0xee3759ce, 0xb43b5d61), + TOBN(0x895bc78c, 0x619186c7), TOBN(0xf19c3809, 0xcbb9725a)}, + {TOBN(0xc0be21aa, 0xde744b1f), TOBN(0xa7d222b0, 0x60f8056b), + TOBN(0x74be6157, 0xb23efe11), TOBN(0x6fab2b4f, 0x0cd68253)}}, + {{TOBN(0xad33ea5f, 0x4bf1d725), TOBN(0x9c1d8ee2, 0x4f6c950f), + TOBN(0x544ee78a, 0xa377af06), TOBN(0x54f489bb, 0x94a113e1)}, + {TOBN(0x8f11d634, 0x992fb7e8), TOBN(0x0169a7aa, 0xa2a44347), + TOBN(0x1d49d4af, 0x95020e00), TOBN(0x95945722, 0xe08e120b)}}, + {{TOBN(0xb6e33878, 0xa4d32282), TOBN(0xe36e029d, 0x48020ae7), + TOBN(0xe05847fb, 0x37a9b750), TOBN(0xf876812c, 0xb29e3819)}, + {TOBN(0x84ad138e, 0xd23a17f0), TOBN(0x6d7b4480, 0xf0b3950e), + TOBN(0xdfa8aef4, 0x2fd67ae0), TOBN(0x8d3eea24, 0x52333af6)}}, + {{TOBN(0x0d052075, 0xb15d5acc), TOBN(0xc6d9c79f, 0xbd815bc4), + TOBN(0x8dcafd88, 0xdfa36cf2), TOBN(0x908ccbe2, 0x38aa9070)}, + {TOBN(0x638722c4, 0xba35afce), TOBN(0x5a3da8b0, 0xfd6abf0b), + TOBN(0x2dce252c, 0xc9c335c1), TOBN(0x84e7f0de, 0x65aa799b)}}, + {{TOBN(0x2101a522, 0xb99a72cb), TOBN(0x06de6e67, 0x87618016), + TOBN(0x5ff8c7cd, 0xe6f3653e), TOBN(0x0a821ab5, 0xc7a6754a)}, + {TOBN(0x7e3fa52b, 0x7cb0b5a2), TOBN(0xa7fb121c, 0xc9048790), + TOBN(0x1a725020, 0x06ce053a), TOBN(0xb490a31f, 0x04e929b0)}}, + {{TOBN(0xe17be47d, 0x62dd61ad), TOBN(0x781a961c, 0x6be01371), + TOBN(0x1063bfd3, 0xdae3cbba), TOBN(0x35647406, 0x7f73c9ba)}, + {TOBN(0xf50e957b, 0x2736a129), TOBN(0xa6313702, 0xed13f256), + TOBN(0x9436ee65, 0x3a19fcc5), TOBN(0xcf2bdb29, 0xe7a4c8b6)}}, + {{TOBN(0xb06b1244, 0xc5f95cd8), TOBN(0xda8c8af0, 0xf4ab95f4), + TOBN(0x1bae59c2, 0xb9e5836d), TOBN(0x07d51e7e, 0x3acffffc)}, + {TOBN(0x01e15e6a, 0xc2ccbcda), TOBN(0x3bc1923f, 0x8528c3e0), + TOBN(0x43324577, 0xa49fead4), TOBN(0x61a1b884, 0x2aa7a711)}}, + {{TOBN(0xf9a86e08, 0x700230ef), TOBN(0x0af585a1, 0xbd19adf8), + TOBN(0x7645f361, 0xf55ad8f2), TOBN(0x6e676223, 0x46c3614c)}, + {TOBN(0x23cb257c, 0x4e774d3f), TOBN(0x82a38513, 0xac102d1b), + TOBN(0x9bcddd88, 0x7b126aa5), TOBN(0xe716998b, 0xeefd3ee4)}}, + {{TOBN(0x4239d571, 0xfb167583), TOBN(0xdd011c78, 0xd16c8f8a), + TOBN(0x271c2895, 0x69a27519), TOBN(0x9ce0a3b7, 0xd2d64b6a)}, + {TOBN(0x8c977289, 0xd5ec6738), TOBN(0xa3b49f9a, 0x8840ef6b), + TOBN(0x808c14c9, 0x9a453419), TOBN(0x5c00295b, 0x0cf0a2d5)}}, + {{TOBN(0x524414fb, 0x1d4bcc76), TOBN(0xb07691d2, 0x459a88f1), + TOBN(0x77f43263, 0xf70d110f), TOBN(0x64ada5e0, 0xb7abf9f3)}, + {TOBN(0xafd0f94e, 0x5b544cf5), TOBN(0xb4a13a15, 0xfd2713fe), + TOBN(0xb99b7d6e, 0x250c74f4), TOBN(0x097f2f73, 0x20324e45)}}, + {{TOBN(0x994b37d8, 0xaffa8208), TOBN(0xc3c31b0b, 0xdc29aafc), + TOBN(0x3da74651, 0x7a3a607f), TOBN(0xd8e1b8c1, 0xfe6955d6)}, + {TOBN(0x716e1815, 0xc8418682), TOBN(0x541d487f, 0x7dc91d97), + TOBN(0x48a04669, 0xc6996982), TOBN(0xf39cab15, 0x83a6502e)}}, + {{TOBN(0x025801a0, 0xe68db055), TOBN(0xf3569758, 0xba3338d5), + TOBN(0xb0c8c0aa, 0xee2afa84), TOBN(0x4f6985d3, 0xfb6562d1)}, + {TOBN(0x351f1f15, 0x132ed17a), TOBN(0x510ed0b4, 0xc04365fe), + TOBN(0xa3f98138, 0xe5b1f066), TOBN(0xbc9d95d6, 0x32df03dc)}}, + {{TOBN(0xa83ccf6e, 0x19abd09e), TOBN(0x0b4097c1, 0x4ff17edb), + TOBN(0x58a5c478, 0xd64a06ce), TOBN(0x2ddcc3fd, 0x544a58fd)}, + {TOBN(0xd449503d, 0x9e8153b8), TOBN(0x3324fd02, 0x7774179b), + TOBN(0xaf5d47c8, 0xdbd9120c), TOBN(0xeb860162, 0x34fa94db)}}, + {{TOBN(0x5817bdd1, 0x972f07f4), TOBN(0xe5579e2e, 0xd27bbceb), + TOBN(0x86847a1f, 0x5f11e5a6), TOBN(0xb39ed255, 0x7c3cf048)}, + {TOBN(0xe1076417, 0xa2f62e55), TOBN(0x6b9ab38f, 0x1bcf82a2), + TOBN(0x4bb7c319, 0x7aeb29f9), TOBN(0xf6d17da3, 0x17227a46)}}, + {{TOBN(0xab53ddbd, 0x0f968c00), TOBN(0xa03da7ec, 0x000c880b), + TOBN(0x7b239624, 0x6a9ad24d), TOBN(0x612c0401, 0x01ec60d0)}, + {TOBN(0x70d10493, 0x109f5df1), TOBN(0xfbda4030, 0x80af7550), + TOBN(0x30b93f95, 0xc6b9a9b3), TOBN(0x0c74ec71, 0x007d9418)}}, + {{TOBN(0x94175564, 0x6edb951f), TOBN(0x5f4a9d78, 0x7f22c282), + TOBN(0xb7870895, 0xb38d1196), TOBN(0xbc593df3, 0xa228ce7c)}, + {TOBN(0xc78c5bd4, 0x6af3641a), TOBN(0x7802200b, 0x3d9b3dcc), + TOBN(0x0dc73f32, 0x8be33304), TOBN(0x847ed87d, 0x61ffb79a)}}, + {{TOBN(0xf85c974e, 0x6d671192), TOBN(0x1e14100a, 0xde16f60f), + TOBN(0x45cb0d5a, 0x95c38797), TOBN(0x18923bba, 0x9b022da4)}, + {TOBN(0xef2be899, 0xbbe7e86e), TOBN(0x4a1510ee, 0x216067bf), + TOBN(0xd98c8154, 0x84d5ce3e), TOBN(0x1af777f0, 0xf92a2b90)}}, + {{TOBN(0x9fbcb400, 0x4ef65724), TOBN(0x3e04a4c9, 0x3c0ca6fe), + TOBN(0xfb3e2cb5, 0x55002994), TOBN(0x1f3a93c5, 0x5363ecab)}, + {TOBN(0x1fe00efe, 0x3923555b), TOBN(0x744bedd9, 0x1e1751ea), + TOBN(0x3fb2db59, 0x6ab69357), TOBN(0x8dbd7365, 0xf5e6618b)}}, + {{TOBN(0x99d53099, 0xdf1ea40e), TOBN(0xb3f24a0b, 0x57d61e64), + TOBN(0xd088a198, 0x596eb812), TOBN(0x22c8361b, 0x5762940b)}, + {TOBN(0x66f01f97, 0xf9c0d95c), TOBN(0x88461172, 0x8e43cdae), + TOBN(0x11599a7f, 0xb72b15c3), TOBN(0x135a7536, 0x420d95cc)}}, + {{TOBN(0x2dcdf0f7, 0x5f7ae2f6), TOBN(0x15fc6e1d, 0xd7fa6da2), + TOBN(0x81ca829a, 0xd1d441b6), TOBN(0x84c10cf8, 0x04a106b6)}, + {TOBN(0xa9b26c95, 0xa73fbbd0), TOBN(0x7f24e0cb, 0x4d8f6ee8), + TOBN(0x48b45937, 0x1e25a043), TOBN(0xf8a74fca, 0x036f3dfe)}}, + {{TOBN(0x1ed46585, 0xc9f84296), TOBN(0x7fbaa8fb, 0x3bc278b0), + TOBN(0xa8e96cd4, 0x6c4fcbd0), TOBN(0x940a1202, 0x73b60a5f)}, + {TOBN(0x34aae120, 0x55a4aec8), TOBN(0x550e9a74, 0xdbd742f0), + TOBN(0x794456d7, 0x228c68ab), TOBN(0x492f8868, 0xa4e25ec6)}}, + {{TOBN(0x682915ad, 0xb2d8f398), TOBN(0xf13b51cc, 0x5b84c953), + TOBN(0xcda90ab8, 0x5bb917d6), TOBN(0x4b615560, 0x4ea3dee1)}, + {TOBN(0x578b4e85, 0x0a52c1c8), TOBN(0xeab1a695, 0x20b75fc4), + TOBN(0x60c14f3c, 0xaa0bb3c6), TOBN(0x220f448a, 0xb8216094)}}, + {{TOBN(0x4fe7ee31, 0xb0e63d34), TOBN(0xf4600572, 0xa9e54fab), + TOBN(0xc0493334, 0xd5e7b5a4), TOBN(0x8589fb92, 0x06d54831)}, + {TOBN(0xaa70f5cc, 0x6583553a), TOBN(0x0879094a, 0xe25649e5), + TOBN(0xcc904507, 0x10044652), TOBN(0xebb0696d, 0x02541c4f)}}, + {{TOBN(0x5a171fde, 0xb9718710), TOBN(0x38f1bed8, 0xf374a9f5), + TOBN(0xc8c582e1, 0xba39bdc1), TOBN(0xfc457b0a, 0x908cc0ce)}, + {TOBN(0x9a187fd4, 0x883841e2), TOBN(0x8ec25b39, 0x38725381), + TOBN(0x2553ed05, 0x96f84395), TOBN(0x095c7661, 0x6f6c6897)}}, + {{TOBN(0x917ac85c, 0x4bdc5610), TOBN(0xb2885fe4, 0x179eb301), + TOBN(0x5fc65547, 0x8b78bdcc), TOBN(0x4a9fc893, 0xe59e4699)}, + {TOBN(0xbb7ff0cd, 0x3ce299af), TOBN(0x195be9b3, 0xadf38b20), + TOBN(0x6a929c87, 0xd38ddb8f), TOBN(0x55fcc99c, 0xb21a51b9)}}, + {{TOBN(0x2b695b4c, 0x721a4593), TOBN(0xed1e9a15, 0x768eaac2), + TOBN(0xfb63d71c, 0x7489f914), TOBN(0xf98ba31c, 0x78118910)}, + {TOBN(0x80291373, 0x9b128eb4), TOBN(0x7801214e, 0xd448af4a), + TOBN(0xdbd2e22b, 0x55418dd3), TOBN(0xeffb3c0d, 0xd3998242)}}, + {{TOBN(0xdfa6077c, 0xc7bf3827), TOBN(0xf2165bcb, 0x47f8238f), + TOBN(0xfe37cf68, 0x8564d554), TOBN(0xe5f825c4, 0x0a81fb98)}, + {TOBN(0x43cc4f67, 0xffed4d6f), TOBN(0xbc609578, 0xb50a34b0), + TOBN(0x8aa8fcf9, 0x5041faf1), TOBN(0x5659f053, 0x651773b6)}}, + {{TOBN(0xe87582c3, 0x6044d63b), TOBN(0xa6089409, 0x0cdb0ca0), + TOBN(0x8c993e0f, 0xbfb2bcf6), TOBN(0xfc64a719, 0x45985cfc)}, + {TOBN(0x15c4da80, 0x83dbedba), TOBN(0x804ae112, 0x2be67df7), + TOBN(0xda4c9658, 0xa23defde), TOBN(0x12002ddd, 0x5156e0d3)}}, + {{TOBN(0xe68eae89, 0x5dd21b96), TOBN(0x8b99f28b, 0xcf44624d), + TOBN(0x0ae00808, 0x1ec8897a), TOBN(0xdd0a9303, 0x6712f76e)}, + {TOBN(0x96237522, 0x4e233de4), TOBN(0x192445b1, 0x2b36a8a5), + TOBN(0xabf9ff74, 0x023993d9), TOBN(0x21f37bf4, 0x2aad4a8f)}}, + {{TOBN(0x340a4349, 0xf8bd2bbd), TOBN(0x1d902cd9, 0x4868195d), + TOBN(0x3d27bbf1, 0xe5fdb6f1), TOBN(0x7a5ab088, 0x124f9f1c)}, + {TOBN(0xc466ab06, 0xf7a09e03), TOBN(0x2f8a1977, 0x31f2c123), + TOBN(0xda355dc7, 0x041b6657), TOBN(0xcb840d12, 0x8ece2a7c)}}, + {{TOBN(0xb600ad9f, 0x7db32675), TOBN(0x78fea133, 0x07a06f1b), + TOBN(0x5d032269, 0xb31f6094), TOBN(0x07753ef5, 0x83ec37aa)}, + {TOBN(0x03485aed, 0x9c0bea78), TOBN(0x41bb3989, 0xbc3f4524), + TOBN(0x09403761, 0x697f726d), TOBN(0x6109beb3, 0xdf394820)}}, + {{TOBN(0x804111ea, 0x3b6d1145), TOBN(0xb6271ea9, 0xa8582654), + TOBN(0x619615e6, 0x24e66562), TOBN(0xa2554945, 0xd7b6ad9c)}, + {TOBN(0xd9c4985e, 0x99bfe35f), TOBN(0x9770ccc0, 0x7b51cdf6), + TOBN(0x7c327013, 0x92881832), TOBN(0x8777d45f, 0x286b26d1)}}, + {{TOBN(0x9bbeda22, 0xd847999d), TOBN(0x03aa33b6, 0xc3525d32), + TOBN(0x4b7b96d4, 0x28a959a1), TOBN(0xbb3786e5, 0x31e5d234)}, + {TOBN(0xaeb5d3ce, 0x6961f247), TOBN(0x20aa85af, 0x02f93d3f), + TOBN(0x9cd1ad3d, 0xd7a7ae4f), TOBN(0xbf6688f0, 0x781adaa8)}}, + {{TOBN(0xb1b40e86, 0x7469cead), TOBN(0x1904c524, 0x309fca48), + TOBN(0x9b7312af, 0x4b54bbc7), TOBN(0xbe24bf8f, 0x593affa2)}, + {TOBN(0xbe5e0790, 0xbd98764b), TOBN(0xa0f45f17, 0xa26e299e), + TOBN(0x4af0d2c2, 0x6b8fe4c7), TOBN(0xef170db1, 0x8ae8a3e6)}}, + {{TOBN(0x0e8d61a0, 0x29e0ccc1), TOBN(0xcd53e87e, 0x60ad36ca), + TOBN(0x328c6623, 0xc8173822), TOBN(0x7ee1767d, 0xa496be55)}, + {TOBN(0x89f13259, 0x648945af), TOBN(0x9e45a5fd, 0x25c8009c), + TOBN(0xaf2febd9, 0x1f61ab8c), TOBN(0x43f6bc86, 0x8a275385)}}, + {{TOBN(0x87792348, 0xf2142e79), TOBN(0x17d89259, 0xc6e6238a), + TOBN(0x7536d2f6, 0x4a839d9b), TOBN(0x1f428fce, 0x76a1fbdc)}, + {TOBN(0x1c109601, 0x0db06dfe), TOBN(0xbfc16bc1, 0x50a3a3cc), + TOBN(0xf9cbd9ec, 0x9b30f41b), TOBN(0x5b5da0d6, 0x00138cce)}}, + {{TOBN(0xec1d0a48, 0x56ef96a7), TOBN(0xb47eb848, 0x982bf842), + TOBN(0x66deae32, 0xec3f700d), TOBN(0x4e43c42c, 0xaa1181e0)}, + {TOBN(0xa1d72a31, 0xd1a4aa2a), TOBN(0x440d4668, 0xc004f3ce), + TOBN(0x0d6a2d3b, 0x45fe8a7a), TOBN(0x820e52e2, 0xfb128365)}}, + {{TOBN(0x29ac5fcf, 0x25e51b09), TOBN(0x180cd2bf, 0x2023d159), + TOBN(0xa9892171, 0xa1ebf90e), TOBN(0xf97c4c87, 0x7c132181)}, + {TOBN(0x9f1dc724, 0xc03dbb7e), TOBN(0xae043765, 0x018cbbe4), + TOBN(0xfb0b2a36, 0x0767d153), TOBN(0xa8e2f4d6, 0x249cbaeb)}}, + {{TOBN(0x172a5247, 0xd95ea168), TOBN(0x1758fada, 0x2970764a), + TOBN(0xac803a51, 0x1d978169), TOBN(0x299cfe2e, 0xde77e01b)}, + {TOBN(0x652a1e17, 0xb0a98927), TOBN(0x2e26e1d1, 0x20014495), + TOBN(0x7ae0af9f, 0x7175b56a), TOBN(0xc2e22a80, 0xd64b9f95)}}, + {{TOBN(0x4d0ff9fb, 0xd90a060a), TOBN(0x496a27db, 0xbaf38085), + TOBN(0x32305401, 0xda776bcf), TOBN(0xb8cdcef6, 0x725f209e)}, + {TOBN(0x61ba0f37, 0x436a0bba), TOBN(0x263fa108, 0x76860049), + TOBN(0x92beb98e, 0xda3542cf), TOBN(0xa2d4d14a, 0xd5849538)}}, + {{TOBN(0x989b9d68, 0x12e9a1bc), TOBN(0x61d9075c, 0x5f6e3268), + TOBN(0x352c6aa9, 0x99ace638), TOBN(0xde4e4a55, 0x920f43ff)}, + {TOBN(0xe5e4144a, 0xd673c017), TOBN(0x667417ae, 0x6f6e05ea), + TOBN(0x613416ae, 0xdcd1bd56), TOBN(0x5eb36201, 0x86693711)}}, + {{TOBN(0x2d7bc504, 0x3a1aa914), TOBN(0x175a1299, 0x76dc5975), + TOBN(0xe900e0f2, 0x3fc8125c), TOBN(0x569ef68c, 0x11198875)}, + {TOBN(0x9012db63, 0x63a113b4), TOBN(0xe3bd3f56, 0x98835766), + TOBN(0xa5c94a52, 0x76412dea), TOBN(0xad9e2a09, 0xaa735e5c)}}, + {{TOBN(0x405a984c, 0x508b65e9), TOBN(0xbde4a1d1, 0x6df1a0d1), + TOBN(0x1a9433a1, 0xdfba80da), TOBN(0xe9192ff9, 0x9440ad2e)}, + {TOBN(0x9f649696, 0x5099fe92), TOBN(0x25ddb65c, 0x0b27a54a), + TOBN(0x178279dd, 0xc590da61), TOBN(0x5479a999, 0xfbde681a)}}, + {{TOBN(0xd0e84e05, 0x013fe162), TOBN(0xbe11dc92, 0x632d471b), + TOBN(0xdf0b0c45, 0xfc0e089f), TOBN(0x04fb15b0, 0x4c144025)}, + {TOBN(0xa61d5fc2, 0x13c99927), TOBN(0xa033e9e0, 0x3de2eb35), + TOBN(0xf8185d5c, 0xb8dacbb4), TOBN(0x9a88e265, 0x8644549d)}}, + {{TOBN(0xf717af62, 0x54671ff6), TOBN(0x4bd4241b, 0x5fa58603), + TOBN(0x06fba40b, 0xe67773c0), TOBN(0xc1d933d2, 0x6a2847e9)}, + {TOBN(0xf4f5acf3, 0x689e2c70), TOBN(0x92aab0e7, 0x46bafd31), + TOBN(0x798d76aa, 0x3473f6e5), TOBN(0xcc6641db, 0x93141934)}}, + {{TOBN(0xcae27757, 0xd31e535e), TOBN(0x04cc43b6, 0x87c2ee11), + TOBN(0x8d1f9675, 0x2e029ffa), TOBN(0xc2150672, 0xe4cc7a2c)}, + {TOBN(0x3b03c1e0, 0x8d68b013), TOBN(0xa9d6816f, 0xedf298f3), + TOBN(0x1bfbb529, 0xa2804464), TOBN(0x95a52fae, 0x5db22125)}}, + {{TOBN(0x55b32160, 0x0e1cb64e), TOBN(0x004828f6, 0x7e7fc9fe), + TOBN(0x13394b82, 0x1bb0fb93), TOBN(0xb6293a2d, 0x35f1a920)}, + {TOBN(0xde35ef21, 0xd145d2d9), TOBN(0xbe6225b3, 0xbb8fa603), + TOBN(0x00fc8f6b, 0x32cf252d), TOBN(0xa28e52e6, 0x117cf8c2)}}, + {{TOBN(0x9d1dc89b, 0x4c371e6d), TOBN(0xcebe0675, 0x36ef0f28), + TOBN(0x5de05d09, 0xa4292f81), TOBN(0xa8303593, 0x353e3083)}, + {TOBN(0xa1715b0a, 0x7e37a9bb), TOBN(0x8c56f61e, 0x2b8faec3), + TOBN(0x52507431, 0x33c9b102), TOBN(0x0130cefc, 0xa44431f0)}}, + {{TOBN(0x56039fa0, 0xbd865cfb), TOBN(0x4b03e578, 0xbc5f1dd7), + TOBN(0x40edf2e4, 0xbabe7224), TOBN(0xc752496d, 0x3a1988f6)}, + {TOBN(0xd1572d3b, 0x564beb6b), TOBN(0x0db1d110, 0x39a1c608), + TOBN(0x568d1934, 0x16f60126), TOBN(0x05ae9668, 0xf354af33)}}, + {{TOBN(0x19de6d37, 0xc92544f2), TOBN(0xcc084353, 0xa35837d5), + TOBN(0xcbb6869c, 0x1a514ece), TOBN(0xb633e728, 0x2e1d1066)}, + {TOBN(0xf15dd69f, 0x936c581c), TOBN(0x96e7b8ce, 0x7439c4f9), + TOBN(0x5e676f48, 0x2e448a5b), TOBN(0xb2ca7d5b, 0xfd916bbb)}}, + {{TOBN(0xd55a2541, 0xf5024025), TOBN(0x47bc5769, 0xe4c2d937), + TOBN(0x7d31b92a, 0x0362189f), TOBN(0x83f3086e, 0xef7816f9)}, + {TOBN(0xf9f46d94, 0xb587579a), TOBN(0xec2d22d8, 0x30e76c5f), + TOBN(0x27d57461, 0xb000ffcf), TOBN(0xbb7e65f9, 0x364ffc2c)}}, + {{TOBN(0x7c7c9477, 0x6652a220), TOBN(0x61618f89, 0xd696c981), + TOBN(0x5021701d, 0x89effff3), TOBN(0xf2c8ff8e, 0x7c314163)}, + {TOBN(0x2da413ad, 0x8efb4d3e), TOBN(0x937b5adf, 0xce176d95), + TOBN(0x22867d34, 0x2a67d51c), TOBN(0x262b9b10, 0x18eb3ac9)}}, + {{TOBN(0x4e314fe4, 0xc43ff28b), TOBN(0x76476627, 0x6a664e7a), + TOBN(0x3e90e40b, 0xb7a565c2), TOBN(0x8588993a, 0xc1acf831)}, + {TOBN(0xd7b501d6, 0x8f938829), TOBN(0x996627ee, 0x3edd7d4c), + TOBN(0x37d44a62, 0x90cd34c7), TOBN(0xa8327499, 0xf3833e8d)}}, + {{TOBN(0x2e18917d, 0x4bf50353), TOBN(0x85dd726b, 0x556765fb), + TOBN(0x54fe65d6, 0x93d5ab66), TOBN(0x3ddbaced, 0x915c25fe)}, + {TOBN(0xa799d9a4, 0x12f22e85), TOBN(0xe2a24867, 0x6d06f6bc), + TOBN(0xf4f1ee56, 0x43ca1637), TOBN(0xfda2828b, 0x61ece30a)}}, + {{TOBN(0x758c1a3e, 0xa2dee7a6), TOBN(0xdcde2f3c, 0x734b2284), + TOBN(0xaba445d2, 0x4eaba6ad), TOBN(0x35aaf668, 0x76cee0a7)}, + {TOBN(0x7e0b04a9, 0xe5aa049a), TOBN(0xe74083ad, 0x91103e84), + TOBN(0xbeb183ce, 0x40afecc3), TOBN(0x6b89de9f, 0xea043f7a)}}}, + {{{TOBN(0x0e299d23, 0xfe67ba66), TOBN(0x91450760, 0x93cf2f34), + TOBN(0xf45b5ea9, 0x97fcf913), TOBN(0x5be00843, 0x8bd7ddda)}, + {TOBN(0x358c3e05, 0xd53ff04d), TOBN(0xbf7ccdc3, 0x5de91ef7), + TOBN(0xad684dbf, 0xb69ec1a0), TOBN(0x367e7cf2, 0x801fd997)}}, + {{TOBN(0x0ca1f3b7, 0xb0dc8595), TOBN(0x27de4608, 0x9f1d9f2e), + TOBN(0x1af3bf39, 0xbadd82a7), TOBN(0x79356a79, 0x65862448)}, + {TOBN(0xc0602345, 0xf5f9a052), TOBN(0x1a8b0f89, 0x139a42f9), + TOBN(0xb53eee42, 0x844d40fc), TOBN(0x93b0bfe5, 0x4e5b6368)}}, + {{TOBN(0x5434dd02, 0xc024789c), TOBN(0x90dca9ea, 0x41b57bfc), + TOBN(0x8aa898e2, 0x243398df), TOBN(0xf607c834, 0x894a94bb)}, + {TOBN(0xbb07be97, 0xc2c99b76), TOBN(0x6576ba67, 0x18c29302), + TOBN(0x3d79efcc, 0xe703a88c), TOBN(0xf259ced7, 0xb6a0d106)}}, + {{TOBN(0x0f893a5d, 0xc8de610b), TOBN(0xe8c515fb, 0x67e223ce), + TOBN(0x7774bfa6, 0x4ead6dc5), TOBN(0x89d20f95, 0x925c728f)}, + {TOBN(0x7a1e0966, 0x098583ce), TOBN(0xa2eedb94, 0x93f2a7d7), + TOBN(0x1b282097, 0x4c304d4a), TOBN(0x0842e3da, 0xc077282d)}}, + {{TOBN(0xe4d972a3, 0x3b9e2d7b), TOBN(0x7cc60b27, 0xc48218ff), + TOBN(0x8fc70838, 0x84149d91), TOBN(0x5c04346f, 0x2f461ecc)}, + {TOBN(0xebe9fdf2, 0x614650a9), TOBN(0x5e35b537, 0xc1f666ac), + TOBN(0x645613d1, 0x88babc83), TOBN(0x88cace3a, 0xc5e1c93e)}}, + {{TOBN(0x209ca375, 0x3de92e23), TOBN(0xccb03cc8, 0x5fbbb6e3), + TOBN(0xccb90f03, 0xd7b1487e), TOBN(0xfa9c2a38, 0xc710941f)}, + {TOBN(0x756c3823, 0x6724ceed), TOBN(0x3a902258, 0x192d0323), + TOBN(0xb150e519, 0xea5e038e), TOBN(0xdcba2865, 0xc7427591)}}, + {{TOBN(0xe549237f, 0x78890732), TOBN(0xc443bef9, 0x53fcb4d9), + TOBN(0x9884d8a6, 0xeb3480d6), TOBN(0x8a35b6a1, 0x3048b186)}, + {TOBN(0xb4e44716, 0x65e9a90a), TOBN(0x45bf380d, 0x653006c0), + TOBN(0x8f3f820d, 0x4fe9ae3b), TOBN(0x244a35a0, 0x979a3b71)}}, + {{TOBN(0xa1010e9d, 0x74cd06ff), TOBN(0x9c17c7df, 0xaca3eeac), + TOBN(0x74c86cd3, 0x8063aa2b), TOBN(0x8595c4b3, 0x734614ff)}, + {TOBN(0xa3de00ca, 0x990f62cc), TOBN(0xd9bed213, 0xca0c3be5), + TOBN(0x7886078a, 0xdf8ce9f5), TOBN(0xddb27ce3, 0x5cd44444)}}, + {{TOBN(0xed374a66, 0x58926ddd), TOBN(0x138b2d49, 0x908015b8), + TOBN(0x886c6579, 0xde1f7ab8), TOBN(0x888b9aa0, 0xc3020b7a)}, + {TOBN(0xd3ec034e, 0x3a96e355), TOBN(0xba65b0b8, 0xf30fbe9a), + TOBN(0x064c8e50, 0xff21367a), TOBN(0x1f508ea4, 0x0b04b46e)}}, + {{TOBN(0x98561a49, 0x747c866c), TOBN(0xbbb1e5fe, 0x0518a062), + TOBN(0x20ff4e8b, 0xecdc3608), TOBN(0x7f55cded, 0x20184027)}, + {TOBN(0x8d73ec95, 0xf38c85f0), TOBN(0x5b589fdf, 0x8bc3b8c3), + TOBN(0xbe95dd98, 0x0f12b66f), TOBN(0xf5bd1a09, 0x0e338e01)}}, + {{TOBN(0x65163ae5, 0x5e915918), TOBN(0x6158d6d9, 0x86f8a46b), + TOBN(0x8466b538, 0xeeebf99c), TOBN(0xca8761f6, 0xbca477ef)}, + {TOBN(0xaf3449c2, 0x9ebbc601), TOBN(0xef3b0f41, 0xe0c3ae2f), + TOBN(0xaa6c577d, 0x5de63752), TOBN(0xe9166601, 0x64682a51)}}, + {{TOBN(0x5a3097be, 0xfc15aa1e), TOBN(0x40d12548, 0xb54b0745), + TOBN(0x5bad4706, 0x519a5f12), TOBN(0xed03f717, 0xa439dee6)}, + {TOBN(0x0794bb6c, 0x4a02c499), TOBN(0xf725083d, 0xcffe71d2), + TOBN(0x2cad7519, 0x0f3adcaf), TOBN(0x7f68ea1c, 0x43729310)}}, + {{TOBN(0xe747c8c7, 0xb7ffd977), TOBN(0xec104c35, 0x80761a22), + TOBN(0x8395ebaf, 0x5a3ffb83), TOBN(0xfb3261f4, 0xe4b63db7)}, + {TOBN(0x53544960, 0xd883e544), TOBN(0x13520d70, 0x8cc2eeb8), + TOBN(0x08f6337b, 0xd3d65f99), TOBN(0x83997db2, 0x781cf95b)}}, + {{TOBN(0xce6ff106, 0x0dbd2c01), TOBN(0x4f8eea6b, 0x1f9ce934), + TOBN(0x546f7c4b, 0x0e993921), TOBN(0x6236a324, 0x5e753fc7)}, + {TOBN(0x65a41f84, 0xa16022e9), TOBN(0x0c18d878, 0x43d1dbb2), + TOBN(0x73c55640, 0x2d4cef9c), TOBN(0xa0428108, 0x70444c74)}}, + {{TOBN(0x68e4f15e, 0x9afdfb3c), TOBN(0x49a56143, 0x5bdfb6df), + TOBN(0xa9bc1bd4, 0x5f823d97), TOBN(0xbceb5970, 0xea111c2a)}, + {TOBN(0x366b455f, 0xb269bbc4), TOBN(0x7cd85e1e, 0xe9bc5d62), + TOBN(0xc743c41c, 0x4f18b086), TOBN(0xa4b40990, 0x95294fb9)}}, + {{TOBN(0x9c7c581d, 0x26ee8382), TOBN(0xcf17dcc5, 0x359d638e), + TOBN(0xee8273ab, 0xb728ae3d), TOBN(0x1d112926, 0xf821f047)}, + {TOBN(0x11498477, 0x50491a74), TOBN(0x687fa761, 0xfde0dfb9), + TOBN(0x2c258022, 0x7ea435ab), TOBN(0x6b8bdb94, 0x91ce7e3f)}}, + {{TOBN(0x4c5b5dc9, 0x3bf834aa), TOBN(0x04371819, 0x4f6c7e4b), + TOBN(0xc284e00a, 0x3736bcad), TOBN(0x0d881118, 0x21ae8f8d)}, + {TOBN(0xf9cf0f82, 0xf48c8e33), TOBN(0xa11fd075, 0xa1bf40db), + TOBN(0xdceab0de, 0xdc2733e5), TOBN(0xc560a8b5, 0x8e986bd7)}}, + {{TOBN(0x48dd1fe2, 0x3929d097), TOBN(0x3885b290, 0x92f188f1), + TOBN(0x0f2ae613, 0xda6fcdac), TOBN(0x9054303e, 0xb662a46c)}, + {TOBN(0xb6871e44, 0x0738042a), TOBN(0x98e6a977, 0xbdaf6449), + TOBN(0xd8bc0650, 0xd1c9df1b), TOBN(0xef3d6451, 0x36e098f9)}}, + {{TOBN(0x03fbae82, 0xb6d72d28), TOBN(0x77ca9db1, 0xf5d84080), + TOBN(0x8a112cff, 0xa58efc1c), TOBN(0x518d761c, 0xc564cb4a)}, + {TOBN(0x69b5740e, 0xf0d1b5ce), TOBN(0x717039cc, 0xe9eb1785), + TOBN(0x3fe29f90, 0x22f53382), TOBN(0x8e54ba56, 0x6bc7c95c)}}, + {{TOBN(0x9c806d8a, 0xf7f91d0f), TOBN(0x3b61b0f1, 0xa82a5728), + TOBN(0x4640032d, 0x94d76754), TOBN(0x273eb5de, 0x47d834c6)}, + {TOBN(0x2988abf7, 0x7b4e4d53), TOBN(0xb7ce66bf, 0xde401777), + TOBN(0x9fba6b32, 0x715071b3), TOBN(0x82413c24, 0xad3a1a98)}}, + {{TOBN(0x5b7fc8c4, 0xe0e8ad93), TOBN(0xb5679aee, 0x5fab868d), + TOBN(0xb1f9d2fa, 0x2b3946f3), TOBN(0x458897dc, 0x5685b50a)}, + {TOBN(0x1e98c930, 0x89d0caf3), TOBN(0x39564c5f, 0x78642e92), + TOBN(0x1b77729a, 0x0dbdaf18), TOBN(0xf9170722, 0x579e82e6)}}, + {{TOBN(0x680c0317, 0xe4515fa5), TOBN(0xf85cff84, 0xfb0c790f), + TOBN(0xc7a82aab, 0x6d2e0765), TOBN(0x7446bca9, 0x35c82b32)}, + {TOBN(0x5de607aa, 0x6d63184f), TOBN(0x7c1a46a8, 0x262803a6), + TOBN(0xd218313d, 0xaebe8035), TOBN(0x92113ffd, 0xc73c51f8)}}, + {{TOBN(0x4b38e083, 0x12e7e46c), TOBN(0x69d0a37a, 0x56126bd5), + TOBN(0xfb3f324b, 0x73c07e04), TOBN(0xa0c22f67, 0x8fda7267)}, + {TOBN(0x8f2c0051, 0x4d2c7d8f), TOBN(0xbc45ced3, 0xcbe2cae5), + TOBN(0xe1c6cf07, 0xa8f0f277), TOBN(0xbc392312, 0x1eb99a98)}}, + {{TOBN(0x75537b7e, 0x3cc8ac85), TOBN(0x8d725f57, 0xdd02753b), + TOBN(0xfd05ff64, 0xb737df2f), TOBN(0x55fe8712, 0xf6d2531d)}, + {TOBN(0x57ce04a9, 0x6ab6b01c), TOBN(0x69a02a89, 0x7cd93724), + TOBN(0x4f82ac35, 0xcf86699b), TOBN(0x8242d3ad, 0x9cb4b232)}}, + {{TOBN(0x713d0f65, 0xd62105e5), TOBN(0xbb222bfa, 0x2d29be61), + TOBN(0xf2f9a79e, 0x6cfbef09), TOBN(0xfc24d8d3, 0xd5d6782f)}, + {TOBN(0x5db77085, 0xd4129967), TOBN(0xdb81c3cc, 0xdc3c2a43), + TOBN(0x9d655fc0, 0x05d8d9a3), TOBN(0x3f5d057a, 0x54298026)}}, + {{TOBN(0x1157f56d, 0x88c54694), TOBN(0xb26baba5, 0x9b09573e), + TOBN(0x2cab03b0, 0x22adffd1), TOBN(0x60a412c8, 0xdd69f383)}, + {TOBN(0xed76e98b, 0x54b25039), TOBN(0xd4ee67d3, 0x687e714d), + TOBN(0x87739648, 0x7b00b594), TOBN(0xce419775, 0xc9ef709b)}}, + {{TOBN(0x40f76f85, 0x1c203a40), TOBN(0x30d352d6, 0xeafd8f91), + TOBN(0xaf196d3d, 0x95578dd2), TOBN(0xea4bb3d7, 0x77cc3f3d)}, + {TOBN(0x42a5bd03, 0xb98e782b), TOBN(0xac958c40, 0x0624920d), + TOBN(0xb838134c, 0xfc56fcc8), TOBN(0x86ec4ccf, 0x89572e5e)}}, + {{TOBN(0x69c43526, 0x9be47be0), TOBN(0x323b7dd8, 0xcb28fea1), + TOBN(0xfa5538ba, 0x3a6c67e5), TOBN(0xef921d70, 0x1d378e46)}, + {TOBN(0xf92961fc, 0x3c4b880e), TOBN(0x3f6f914e, 0x98940a67), + TOBN(0xa990eb0a, 0xfef0ff39), TOBN(0xa6c2920f, 0xf0eeff9c)}}, + {{TOBN(0xca804166, 0x51b8d9a3), TOBN(0x42531bc9, 0x0ffb0db1), + TOBN(0x72ce4718, 0xaa82e7ce), TOBN(0x6e199913, 0xdf574741)}, + {TOBN(0xd5f1b13d, 0xd5d36946), TOBN(0x8255dc65, 0xf68f0194), + TOBN(0xdc9df4cd, 0x8710d230), TOBN(0x3453c20f, 0x138c1988)}}, + {{TOBN(0x9af98dc0, 0x89a6ef01), TOBN(0x4dbcc3f0, 0x9857df85), + TOBN(0x34805601, 0x5c1ad924), TOBN(0x40448da5, 0xd0493046)}, + {TOBN(0xf629926d, 0x4ee343e2), TOBN(0x6343f1bd, 0x90e8a301), + TOBN(0xefc93491, 0x40815b3f), TOBN(0xf882a423, 0xde8f66fb)}}, + {{TOBN(0x3a12d5f4, 0xe7db9f57), TOBN(0x7dfba38a, 0x3c384c27), + TOBN(0x7a904bfd, 0x6fc660b1), TOBN(0xeb6c5db3, 0x2773b21c)}, + {TOBN(0xc350ee66, 0x1cdfe049), TOBN(0x9baac0ce, 0x44540f29), + TOBN(0xbc57b6ab, 0xa5ec6aad), TOBN(0x167ce8c3, 0x0a7c1baa)}}, + {{TOBN(0xb23a03a5, 0x53fb2b56), TOBN(0x6ce141e7, 0x4e057f78), + TOBN(0x796525c3, 0x89e490d9), TOBN(0x0bc95725, 0xa31a7e75)}, + {TOBN(0x1ec56791, 0x1220fd06), TOBN(0x716e3a3c, 0x408b0bd6), + TOBN(0x31cd6bf7, 0xe8ebeba9), TOBN(0xa7326ca6, 0xbee6b670)}}, + {{TOBN(0x3d9f851c, 0xcd090c43), TOBN(0x561e8f13, 0xf12c3988), + TOBN(0x50490b6a, 0x904b7be4), TOBN(0x61690ce1, 0x0410737b)}, + {TOBN(0x299e9a37, 0x0f009052), TOBN(0x258758f0, 0xf026092e), + TOBN(0x9fa255f3, 0xfdfcdc0f), TOBN(0xdbc9fb1f, 0xc0e1bcd2)}}, + {{TOBN(0x35f9dd6e, 0x24651840), TOBN(0xdca45a84, 0xa5c59abc), + TOBN(0x103d396f, 0xecca4938), TOBN(0x4532da0a, 0xb97b3f29)}, + {TOBN(0xc4135ea5, 0x1999a6bf), TOBN(0x3aa9505a, 0x5e6bf2ee), + TOBN(0xf77cef06, 0x3f5be093), TOBN(0x97d1a0f8, 0xa943152e)}}, + {{TOBN(0x2cb0ebba, 0x2e1c21dd), TOBN(0xf41b29fc, 0x2c6797c4), + TOBN(0xc6e17321, 0xb300101f), TOBN(0x4422b0e9, 0xd0d79a89)}, + {TOBN(0x49e4901c, 0x92f1bfc4), TOBN(0x06ab1f8f, 0xe1e10ed9), + TOBN(0x84d35577, 0xdb2926b8), TOBN(0xca349d39, 0x356e8ec2)}}, + {{TOBN(0x70b63d32, 0x343bf1a9), TOBN(0x8fd3bd28, 0x37d1a6b1), + TOBN(0x0454879c, 0x316865b4), TOBN(0xee959ff6, 0xc458efa2)}, + {TOBN(0x0461dcf8, 0x9706dc3f), TOBN(0x737db0e2, 0x164e4b2e), + TOBN(0x09262680, 0x2f8843c8), TOBN(0x54498bbc, 0x7745e6f6)}}, + {{TOBN(0x359473fa, 0xa29e24af), TOBN(0xfcc3c454, 0x70aa87a1), + TOBN(0xfd2c4bf5, 0x00573ace), TOBN(0xb65b514e, 0x28dd1965)}, + {TOBN(0xe46ae7cf, 0x2193e393), TOBN(0x60e9a4e1, 0xf5444d97), + TOBN(0xe7594e96, 0x00ff38ed), TOBN(0x43d84d2f, 0x0a0e0f02)}}, + {{TOBN(0x8b6db141, 0xee398a21), TOBN(0xb88a56ae, 0xe3bcc5be), + TOBN(0x0a1aa52f, 0x373460ea), TOBN(0x20da1a56, 0x160bb19b)}, + {TOBN(0xfb54999d, 0x65bf0384), TOBN(0x71a14d24, 0x5d5a180e), + TOBN(0xbc44db7b, 0x21737b04), TOBN(0xd84fcb18, 0x01dd8e92)}}, + {{TOBN(0x80de937b, 0xfa44b479), TOBN(0x53505499, 0x5c98fd4f), + TOBN(0x1edb12ab, 0x28f08727), TOBN(0x4c58b582, 0xa5f3ef53)}, + {TOBN(0xbfb236d8, 0x8327f246), TOBN(0xc3a3bfaa, 0x4d7df320), + TOBN(0xecd96c59, 0xb96024f2), TOBN(0xfc293a53, 0x7f4e0433)}}, + {{TOBN(0x5341352b, 0x5acf6e10), TOBN(0xc50343fd, 0xafe652c3), + TOBN(0x4af3792d, 0x18577a7f), TOBN(0xe1a4c617, 0xaf16823d)}, + {TOBN(0x9b26d0cd, 0x33425d0a), TOBN(0x306399ed, 0x9b7bc47f), + TOBN(0x2a792f33, 0x706bb20b), TOBN(0x31219614, 0x98111055)}}, + {{TOBN(0x864ec064, 0x87f5d28b), TOBN(0x11392d91, 0x962277fd), + TOBN(0xb5aa7942, 0xbb6aed5f), TOBN(0x080094dc, 0x47e799d9)}, + {TOBN(0x4afa588c, 0x208ba19b), TOBN(0xd3e7570f, 0x8512f284), + TOBN(0xcbae64e6, 0x02f5799a), TOBN(0xdeebe7ef, 0x514b9492)}}, + {{TOBN(0x30300f98, 0xe5c298ff), TOBN(0x17f561be, 0x3678361f), + TOBN(0xf52ff312, 0x98cb9a16), TOBN(0x6233c3bc, 0x5562d490)}, + {TOBN(0x7bfa15a1, 0x92e3a2cb), TOBN(0x961bcfd1, 0xe6365119), + TOBN(0x3bdd29bf, 0x2c8c53b1), TOBN(0x739704df, 0x822844ba)}}, + {{TOBN(0x7dacfb58, 0x7e7b754b), TOBN(0x23360791, 0xa806c9b9), + TOBN(0xe7eb88c9, 0x23504452), TOBN(0x2983e996, 0x852c1783)}, + {TOBN(0xdd4ae529, 0x958d881d), TOBN(0x026bae03, 0x262c7b3c), + TOBN(0x3a6f9193, 0x960b52d1), TOBN(0xd0980f90, 0x92696cfb)}}, + {{TOBN(0x4c1f428c, 0xd5f30851), TOBN(0x94dfed27, 0x2a4f6630), + TOBN(0x4df53772, 0xfc5d48a4), TOBN(0xdd2d5a2f, 0x933260ce)}, + {TOBN(0x574115bd, 0xd44cc7a5), TOBN(0x4ba6b20d, 0xbd12533a), + TOBN(0x30e93cb8, 0x243057c9), TOBN(0x794c486a, 0x14de320e)}}, + {{TOBN(0xe925d4ce, 0xf21496e4), TOBN(0xf951d198, 0xec696331), + TOBN(0x9810e2de, 0x3e8d812f), TOBN(0xd0a47259, 0x389294ab)}, + {TOBN(0x513ba2b5, 0x0e3bab66), TOBN(0x462caff5, 0xabad306f), + TOBN(0xe2dc6d59, 0xaf04c49e), TOBN(0x1aeb8750, 0xe0b84b0b)}}, + {{TOBN(0xc034f12f, 0x2f7d0ca2), TOBN(0x6d2e8128, 0xe06acf2f), + TOBN(0x801f4f83, 0x21facc2f), TOBN(0xa1170c03, 0xf40ef607)}, + {TOBN(0xfe0a1d4f, 0x7805a99c), TOBN(0xbde56a36, 0xcc26aba5), + TOBN(0x5b1629d0, 0x35531f40), TOBN(0xac212c2b, 0x9afa6108)}}, + {{TOBN(0x30a06bf3, 0x15697be5), TOBN(0x6f0545dc, 0x2c63c7c1), + TOBN(0x5d8cb842, 0x7ccdadaf), TOBN(0xd52e379b, 0xac7015bb)}, + {TOBN(0xc4f56147, 0xf462c23e), TOBN(0xd44a4298, 0x46bc24b0), + TOBN(0xbc73d23a, 0xe2856d4f), TOBN(0x61cedd8c, 0x0832bcdf)}}, + {{TOBN(0x60953556, 0x99f241d7), TOBN(0xee4adbd7, 0x001a349d), + TOBN(0x0b35bf6a, 0xaa89e491), TOBN(0x7f0076f4, 0x136f7546)}, + {TOBN(0xd19a18ba, 0x9264da3d), TOBN(0x6eb2d2cd, 0x62a7a28b), + TOBN(0xcdba941f, 0x8761c971), TOBN(0x1550518b, 0xa3be4a5d)}}, + {{TOBN(0xd0e8e2f0, 0x57d0b70c), TOBN(0xeea8612e, 0xcd133ba3), + TOBN(0x814670f0, 0x44416aec), TOBN(0x424db6c3, 0x30775061)}, + {TOBN(0xd96039d1, 0x16213fd1), TOBN(0xc61e7fa5, 0x18a3478f), + TOBN(0xa805bdcc, 0xcb0c5021), TOBN(0xbdd6f3a8, 0x0cc616dd)}}, + {{TOBN(0x06009667, 0x5d97f7e2), TOBN(0x31db0fc1, 0xaf0bf4b6), + TOBN(0x23680ed4, 0x5491627a), TOBN(0xb99a3c66, 0x7d741fb1)}, + {TOBN(0xe9bb5f55, 0x36b1ff92), TOBN(0x29738577, 0x512b388d), + TOBN(0xdb8a2ce7, 0x50fcf263), TOBN(0x385346d4, 0x6c4f7b47)}}, + {{TOBN(0xbe86c5ef, 0x31631f9e), TOBN(0xbf91da21, 0x03a57a29), + TOBN(0xc3b1f796, 0x7b23f821), TOBN(0x0f7d00d2, 0x770db354)}, + {TOBN(0x8ffc6c3b, 0xd8fe79da), TOBN(0xcc5e8c40, 0xd525c996), + TOBN(0x4640991d, 0xcfff632a), TOBN(0x64d97e8c, 0x67112528)}}, + {{TOBN(0xc232d973, 0x02f1cd1e), TOBN(0xce87eacb, 0x1dd212a4), + TOBN(0x6e4c8c73, 0xe69802f7), TOBN(0x12ef0290, 0x1fffddbd)}, + {TOBN(0x941ec74e, 0x1bcea6e2), TOBN(0xd0b54024, 0x3cb92cbb), + TOBN(0x809fb9d4, 0x7e8f9d05), TOBN(0x3bf16159, 0xf2992aae)}}, + {{TOBN(0xad40f279, 0xf8a7a838), TOBN(0x11aea631, 0x05615660), + TOBN(0xbf52e6f1, 0xa01f6fa1), TOBN(0xef046995, 0x3dc2aec9)}, + {TOBN(0x785dbec9, 0xd8080711), TOBN(0xe1aec60a, 0x9fdedf76), + TOBN(0xece797b5, 0xfa21c126), TOBN(0xc66e898f, 0x05e52732)}}, + {{TOBN(0x39bb69c4, 0x08811fdb), TOBN(0x8bfe1ef8, 0x2fc7f082), + TOBN(0xc8e7a393, 0x174f4138), TOBN(0xfba8ad1d, 0xd58d1f98)}, + {TOBN(0xbc21d0ce, 0xbfd2fd5b), TOBN(0x0b839a82, 0x6ee60d61), + TOBN(0xaacf7658, 0xafd22253), TOBN(0xb526bed8, 0xaae396b3)}}, + {{TOBN(0xccc1bbc2, 0x38564464), TOBN(0x9e3ff947, 0x8c45bc73), + TOBN(0xcde9bca3, 0x58188a78), TOBN(0x138b8ee0, 0xd73bf8f7)}, + {TOBN(0x5c7e234c, 0x4123c489), TOBN(0x66e69368, 0xfa643297), + TOBN(0x0629eeee, 0x39a15fa3), TOBN(0x95fab881, 0xa9e2a927)}}, + {{TOBN(0xb2497007, 0xeafbb1e1), TOBN(0xd75c9ce6, 0xe75b7a93), + TOBN(0x3558352d, 0xefb68d78), TOBN(0xa2f26699, 0x223f6396)}, + {TOBN(0xeb911ecf, 0xe469b17a), TOBN(0x62545779, 0xe72d3ec2), + TOBN(0x8ea47de7, 0x82cb113f), TOBN(0xebe4b086, 0x4e1fa98d)}}, + {{TOBN(0xec2d5ed7, 0x8cdfedb1), TOBN(0xa535c077, 0xfe211a74), + TOBN(0x9678109b, 0x11d244c5), TOBN(0xf17c8bfb, 0xbe299a76)}, + {TOBN(0xb651412e, 0xfb11fbc4), TOBN(0xea0b5482, 0x94ab3f65), + TOBN(0xd8dffd95, 0x0cf78243), TOBN(0x2e719e57, 0xce0361d4)}}, + {{TOBN(0x9007f085, 0x304ddc5b), TOBN(0x095e8c6d, 0x4daba2ea), + TOBN(0x5a33cdb4, 0x3f9d28a9), TOBN(0x85b95cd8, 0xe2283003)}, + {TOBN(0xbcd6c819, 0xb9744733), TOBN(0x29c5f538, 0xfc7f5783), + TOBN(0x6c49b2fa, 0xd59038e4), TOBN(0x68349cc1, 0x3bbe1018)}}, + {{TOBN(0xcc490c1d, 0x21830ee5), TOBN(0x36f9c4ee, 0xe9bfa297), + TOBN(0x58fd7294, 0x48de1a94), TOBN(0xaadb13a8, 0x4e8f2cdc)}, + {TOBN(0x515eaaa0, 0x81313dba), TOBN(0xc76bb468, 0xc2152dd8), + TOBN(0x357f8d75, 0xa653dbf8), TOBN(0xe4d8c4d1, 0xb14ac143)}}, + {{TOBN(0xbdb8e675, 0xb055cb40), TOBN(0x898f8e7b, 0x977b5167), + TOBN(0xecc65651, 0xb82fb863), TOBN(0x56544814, 0x6d88f01f)}, + {TOBN(0xb0928e95, 0x263a75a9), TOBN(0xcfb6836f, 0x1a22fcda), + TOBN(0x651d14db, 0x3f3bd37c), TOBN(0x1d3837fb, 0xb6ad4664)}}, + {{TOBN(0x7c5fb538, 0xff4f94ab), TOBN(0x7243c712, 0x6d7fb8f2), + TOBN(0xef13d60c, 0xa85c5287), TOBN(0x18cfb7c7, 0x4bb8dd1b)}, + {TOBN(0x82f9bfe6, 0x72908219), TOBN(0x35c4592b, 0x9d5144ab), + TOBN(0x52734f37, 0x9cf4b42f), TOBN(0x6bac55e7, 0x8c60ddc4)}}, + {{TOBN(0xb5cd811e, 0x94dea0f6), TOBN(0x259ecae4, 0xe18cc1a3), + TOBN(0x6a0e836e, 0x15e660f8), TOBN(0x6c639ea6, 0x0e02bff2)}, + {TOBN(0x8721b8cb, 0x7e1026fd), TOBN(0x9e73b50b, 0x63261942), + TOBN(0xb8c70974, 0x77f01da3), TOBN(0x1839e6a6, 0x8268f57f)}}, + {{TOBN(0x571b9415, 0x5150b805), TOBN(0x1892389e, 0xf92c7097), + TOBN(0x8d69c18e, 0x4a084b95), TOBN(0x7014c512, 0xbe5b495c)}, + {TOBN(0x4780db36, 0x1b07523c), TOBN(0x2f6219ce, 0x2c1c64fa), + TOBN(0xc38b81b0, 0x602c105a), TOBN(0xab4f4f20, 0x5dc8e360)}}, + {{TOBN(0x20d3c982, 0xcf7d62d2), TOBN(0x1f36e29d, 0x23ba8150), + TOBN(0x48ae0bf0, 0x92763f9e), TOBN(0x7a527e6b, 0x1d3a7007)}, + {TOBN(0xb4a89097, 0x581a85e3), TOBN(0x1f1a520f, 0xdc158be5), + TOBN(0xf98db37d, 0x167d726e), TOBN(0x8802786e, 0x1113e862)}}}, + {{{TOBN(0xefb2149e, 0x36f09ab0), TOBN(0x03f163ca, 0x4a10bb5b), + TOBN(0xd0297045, 0x06e20998), TOBN(0x56f0af00, 0x1b5a3bab)}, + {TOBN(0x7af4cfec, 0x70880e0d), TOBN(0x7332a66f, 0xbe3d913f), + TOBN(0x32e6c84a, 0x7eceb4bd), TOBN(0xedc4a79a, 0x9c228f55)}}, + {{TOBN(0xc37c7dd0, 0xc55c4496), TOBN(0xa6a96357, 0x25bbabd2), + TOBN(0x5b7e63f2, 0xadd7f363), TOBN(0x9dce3782, 0x2e73f1df)}, + {TOBN(0xe1e5a16a, 0xb2b91f71), TOBN(0xe4489823, 0x5ba0163c), + TOBN(0xf2759c32, 0xf6e515ad), TOBN(0xa5e2f1f8, 0x8615eecf)}}, + {{TOBN(0x74519be7, 0xabded551), TOBN(0x03d358b8, 0xc8b74410), + TOBN(0x4d00b10b, 0x0e10d9a9), TOBN(0x6392b0b1, 0x28da52b7)}, + {TOBN(0x6744a298, 0x0b75c904), TOBN(0xc305b0ae, 0xa8f7f96c), + TOBN(0x042e421d, 0x182cf932), TOBN(0xf6fc5d50, 0x9e4636ca)}}, + {{TOBN(0x795847c9, 0xd64cc78c), TOBN(0x6c50621b, 0x9b6cb27b), + TOBN(0x07099bf8, 0xdf8022ab), TOBN(0x48f862eb, 0xc04eda1d)}, + {TOBN(0xd12732ed, 0xe1603c16), TOBN(0x19a80e0f, 0x5c9a9450), + TOBN(0xe2257f54, 0xb429b4fc), TOBN(0x66d3b2c6, 0x45460515)}}, + {{TOBN(0x6ca4f87e, 0x822e37be), TOBN(0x73f237b4, 0x253bda4e), + TOBN(0xf747f3a2, 0x41190aeb), TOBN(0xf06fa36f, 0x804cf284)}, + {TOBN(0x0a6bbb6e, 0xfc621c12), TOBN(0x5d624b64, 0x40b80ec6), + TOBN(0x4b072425, 0x7ba556f3), TOBN(0x7fa0c354, 0x3e2d20a8)}}, + {{TOBN(0xe921fa31, 0xe3229d41), TOBN(0xa929c652, 0x94531bd4), + TOBN(0x84156027, 0xa6d38209), TOBN(0xf3d69f73, 0x6bdb97bd)}, + {TOBN(0x8906d19a, 0x16833631), TOBN(0x68a34c2e, 0x03d51be3), + TOBN(0xcb59583b, 0x0e511cd8), TOBN(0x99ce6bfd, 0xfdc132a8)}}, + {{TOBN(0x3facdaaa, 0xffcdb463), TOBN(0x658bbc1a, 0x34a38b08), + TOBN(0x12a801f8, 0xf1a9078d), TOBN(0x1567bcf9, 0x6ab855de)}, + {TOBN(0xe08498e0, 0x3572359b), TOBN(0xcf0353e5, 0x8659e68b), + TOBN(0xbb86e9c8, 0x7d23807c), TOBN(0xbc08728d, 0x2198e8a2)}}, + {{TOBN(0x8de2b7bc, 0x453cadd6), TOBN(0x203900a7, 0xbc0bc1f8), + TOBN(0xbcd86e47, 0xa6abd3af), TOBN(0x911cac12, 0x8502effb)}, + {TOBN(0x2d550242, 0xec965469), TOBN(0x0e9f7692, 0x29e0017e), + TOBN(0x633f078f, 0x65979885), TOBN(0xfb87d449, 0x4cf751ef)}}, + {{TOBN(0xe1790e4b, 0xfc25419a), TOBN(0x36467203, 0x4bff3cfd), + TOBN(0xc8db6386, 0x25b6e83f), TOBN(0x6cc69f23, 0x6cad6fd2)}, + {TOBN(0x0219e45a, 0x6bc68bb9), TOBN(0xe43d79b6, 0x297f7334), + TOBN(0x7d445368, 0x465dc97c), TOBN(0x4b9eea32, 0x2a0b949a)}}, + {{TOBN(0x1b96c6ba, 0x6102d021), TOBN(0xeaafac78, 0x2f4461ea), + TOBN(0xd4b85c41, 0xc49f19a8), TOBN(0x275c28e4, 0xcf538875)}, + {TOBN(0x35451a9d, 0xdd2e54e0), TOBN(0x6991adb5, 0x0605618b), + TOBN(0x5b8b4bcd, 0x7b36cd24), TOBN(0x372a4f8c, 0x56f37216)}}, + {{TOBN(0xc890bd73, 0xa6a5da60), TOBN(0x6f083da0, 0xdc4c9ff0), + TOBN(0xf4e14d94, 0xf0536e57), TOBN(0xf9ee1eda, 0xaaec8243)}, + {TOBN(0x571241ec, 0x8bdcf8e7), TOBN(0xa5db8271, 0x0b041e26), + TOBN(0x9a0b9a99, 0xe3fff040), TOBN(0xcaaf21dd, 0x7c271202)}}, + {{TOBN(0xb4e2b2e1, 0x4f0dd2e8), TOBN(0xe77e7c4f, 0x0a377ac7), + TOBN(0x69202c3f, 0x0d7a2198), TOBN(0xf759b7ff, 0x28200eb8)}, + {TOBN(0xc87526ed, 0xdcfe314e), TOBN(0xeb84c524, 0x53d5cf99), + TOBN(0xb1b52ace, 0x515138b6), TOBN(0x5aa7ff8c, 0x23fca3f4)}}, + {{TOBN(0xff0b13c3, 0xb9791a26), TOBN(0x960022da, 0xcdd58b16), + TOBN(0xdbd55c92, 0x57aad2de), TOBN(0x3baaaaa3, 0xf30fe619)}, + {TOBN(0x9a4b2346, 0x0d881efd), TOBN(0x506416c0, 0x46325e2a), + TOBN(0x91381e76, 0x035c18d4), TOBN(0xb3bb68be, 0xf27817b0)}}, + {{TOBN(0x15bfb8bf, 0x5116f937), TOBN(0x7c64a586, 0xc1268943), + TOBN(0x71e25cc3, 0x8419a2c8), TOBN(0x9fd6b0c4, 0x8335f463)}, + {TOBN(0x4bf0ba3c, 0xe8ee0e0e), TOBN(0x6f6fba60, 0x298c21fa), + TOBN(0x57d57b39, 0xae66bee0), TOBN(0x292d5130, 0x22672544)}}, + {{TOBN(0xf451105d, 0xbab093b3), TOBN(0x012f59b9, 0x02839986), + TOBN(0x8a915802, 0x3474a89c), TOBN(0x048c919c, 0x2de03e97)}, + {TOBN(0xc476a2b5, 0x91071cd5), TOBN(0x791ed89a, 0x034970a5), + TOBN(0x89bd9042, 0xe1b7994b), TOBN(0x8eaf5179, 0xa1057ffd)}}, + {{TOBN(0x6066e2a2, 0xd551ee10), TOBN(0x87a8f1d8, 0x727e09a6), + TOBN(0x00d08bab, 0x2c01148d), TOBN(0x6da8e4f1, 0x424f33fe)}, + {TOBN(0x466d17f0, 0xcf9a4e71), TOBN(0xff502010, 0x3bf5cb19), + TOBN(0xdccf97d8, 0xd062ecc0), TOBN(0x80c0d9af, 0x81d80ac4)}}, + {{TOBN(0xe87771d8, 0x033f2876), TOBN(0xb0186ec6, 0x7d5cc3db), + TOBN(0x58e8bb80, 0x3bc9bc1d), TOBN(0x4d1395cc, 0x6f6ef60e)}, + {TOBN(0xa73c62d6, 0x186244a0), TOBN(0x918e5f23, 0x110a5b53), + TOBN(0xed4878ca, 0x741b7eab), TOBN(0x3038d71a, 0xdbe03e51)}}, + {{TOBN(0x840204b7, 0xa93c3246), TOBN(0x21ab6069, 0xa0b9b4cd), + TOBN(0xf5fa6e2b, 0xb1d64218), TOBN(0x1de6ad0e, 0xf3d56191)}, + {TOBN(0x570aaa88, 0xff1929c7), TOBN(0xc6df4c6b, 0x640e87b5), + TOBN(0xde8a74f2, 0xc65f0ccc), TOBN(0x8b972fd5, 0xe6f6cc01)}}, + {{TOBN(0x3fff36b6, 0x0b846531), TOBN(0xba7e45e6, 0x10a5e475), + TOBN(0x84a1d10e, 0x4145b6c5), TOBN(0xf1f7f91a, 0x5e046d9d)}, + {TOBN(0x0317a692, 0x44de90d7), TOBN(0x951a1d4a, 0xf199c15e), + TOBN(0x91f78046, 0xc9d73deb), TOBN(0x74c82828, 0xfab8224f)}}, + {{TOBN(0xaa6778fc, 0xe7560b90), TOBN(0xb4073e61, 0xa7e824ce), + TOBN(0xff0d693c, 0xd642eba8), TOBN(0x7ce2e57a, 0x5dccef38)}, + {TOBN(0x89c2c789, 0x1df1ad46), TOBN(0x83a06922, 0x098346fd), + TOBN(0x2d715d72, 0xda2fc177), TOBN(0x7b6dd71d, 0x85b6cf1d)}}, + {{TOBN(0xc60a6d0a, 0x73fa9cb0), TOBN(0xedd3992e, 0x328bf5a9), + TOBN(0xc380ddd0, 0x832c8c82), TOBN(0xd182d410, 0xa2a0bf50)}, + {TOBN(0x7d9d7438, 0xd9a528db), TOBN(0xe8b1a0e9, 0xcaf53994), + TOBN(0xddd6e5fe, 0x0e19987c), TOBN(0xacb8df03, 0x190b059d)}}, + {{TOBN(0x53703a32, 0x8300129f), TOBN(0x1f637662, 0x68c43bfd), + TOBN(0xbcbd1913, 0x00e54051), TOBN(0x812fcc62, 0x7bf5a8c5)}, + {TOBN(0x3f969d5f, 0x29fb85da), TOBN(0x72f4e00a, 0x694759e8), + TOBN(0x426b6e52, 0x790726b7), TOBN(0x617bbc87, 0x3bdbb209)}}, + {{TOBN(0x511f8bb9, 0x97aee317), TOBN(0x812a4096, 0xe81536a8), + TOBN(0x137dfe59, 0x3ac09b9b), TOBN(0x0682238f, 0xba8c9a7a)}, + {TOBN(0x7072ead6, 0xaeccb4bd), TOBN(0x6a34e9aa, 0x692ba633), + TOBN(0xc82eaec2, 0x6fff9d33), TOBN(0xfb753512, 0x1d4d2b62)}}, + {{TOBN(0x1a0445ff, 0x1d7aadab), TOBN(0x65d38260, 0xd5f6a67c), + TOBN(0x6e62fb08, 0x91cfb26f), TOBN(0xef1e0fa5, 0x5c7d91d6)}, + {TOBN(0x47e7c7ba, 0x33db72cd), TOBN(0x017cbc09, 0xfa7c74b2), + TOBN(0x3c931590, 0xf50a503c), TOBN(0xcac54f60, 0x616baa42)}}, + {{TOBN(0x9b6cd380, 0xb2369f0f), TOBN(0x97d3a70d, 0x23c76151), + TOBN(0x5f9dd6fc, 0x9862a9c6), TOBN(0x044c4ab2, 0x12312f51)}, + {TOBN(0x035ea0fd, 0x834a2ddc), TOBN(0x49e6b862, 0xcc7b826d), + TOBN(0xb03d6883, 0x62fce490), TOBN(0x62f2497a, 0xb37e36e9)}}, + {{TOBN(0x04b005b6, 0xc6458293), TOBN(0x36bb5276, 0xe8d10af7), + TOBN(0xacf2dc13, 0x8ee617b8), TOBN(0x470d2d35, 0xb004b3d4)}, + {TOBN(0x06790832, 0xfeeb1b77), TOBN(0x2bb75c39, 0x85657f9c), + TOBN(0xd70bd4ed, 0xc0f60004), TOBN(0xfe797ecc, 0x219b018b)}}, + {{TOBN(0x9b5bec2a, 0x753aebcc), TOBN(0xdaf9f3dc, 0xc939eca5), + TOBN(0xd6bc6833, 0xd095ad09), TOBN(0x98abdd51, 0xdaa4d2fc)}, + {TOBN(0xd9840a31, 0x8d168be5), TOBN(0xcf7c10e0, 0x2325a23c), + TOBN(0xa5c02aa0, 0x7e6ecfaf), TOBN(0x2462e7e6, 0xb5bfdf18)}}, + {{TOBN(0xab2d8a8b, 0xa0cc3f12), TOBN(0x68dd485d, 0xbc672a29), + TOBN(0x72039752, 0x596f2cd3), TOBN(0x5d3eea67, 0xa0cf3d8d)}, + {TOBN(0x810a1a81, 0xe6602671), TOBN(0x8f144a40, 0x14026c0c), + TOBN(0xbc753a6d, 0x76b50f85), TOBN(0xc4dc21e8, 0x645cd4a4)}}, + {{TOBN(0xc5262dea, 0x521d0378), TOBN(0x802b8e0e, 0x05011c6f), + TOBN(0x1ba19cbb, 0x0b4c19ea), TOBN(0x21db64b5, 0xebf0aaec)}, + {TOBN(0x1f394ee9, 0x70342f9d), TOBN(0x93a10aee, 0x1bc44a14), + TOBN(0xa7eed31b, 0x3efd0baa), TOBN(0x6e7c824e, 0x1d154e65)}}, + {{TOBN(0xee23fa81, 0x9966e7ee), TOBN(0x64ec4aa8, 0x05b7920d), + TOBN(0x2d44462d, 0x2d90aad4), TOBN(0xf44dd195, 0xdf277ad5)}, + {TOBN(0x8d6471f1, 0xbb46b6a1), TOBN(0x1e65d313, 0xfd885090), + TOBN(0x33a800f5, 0x13a977b4), TOBN(0xaca9d721, 0x0797e1ef)}}, + {{TOBN(0x9a5a85a0, 0xfcff6a17), TOBN(0x9970a3f3, 0x1eca7cee), + TOBN(0xbb9f0d6b, 0xc9504be3), TOBN(0xe0c504be, 0xadd24ee2)}, + {TOBN(0x7e09d956, 0x77fcc2f4), TOBN(0xef1a5227, 0x65bb5fc4), + TOBN(0x145d4fb1, 0x8b9286aa), TOBN(0x66fd0c5d, 0x6649028b)}}, + {{TOBN(0x98857ceb, 0x1bf4581c), TOBN(0xe635e186, 0xaca7b166), + TOBN(0x278ddd22, 0x659722ac), TOBN(0xa0903c4c, 0x1db68007)}, + {TOBN(0x366e4589, 0x48f21402), TOBN(0x31b49c14, 0xb96abda2), + TOBN(0x329c4b09, 0xe0403190), TOBN(0x97197ca3, 0xd29f43fe)}}, + {{TOBN(0x8073dd1e, 0x274983d8), TOBN(0xda1a3bde, 0x55717c8f), + TOBN(0xfd3d4da2, 0x0361f9d1), TOBN(0x1332d081, 0x4c7de1ce)}, + {TOBN(0x9b7ef7a3, 0xaa6d0e10), TOBN(0x17db2e73, 0xf54f1c4a), + TOBN(0xaf3dffae, 0x4cd35567), TOBN(0xaaa2f406, 0xe56f4e71)}}, + {{TOBN(0x8966759e, 0x7ace3fc7), TOBN(0x9594eacf, 0x45a8d8c6), + TOBN(0x8de3bd8b, 0x91834e0e), TOBN(0xafe4ca53, 0x548c0421)}, + {TOBN(0xfdd7e856, 0xe6ee81c6), TOBN(0x8f671beb, 0x6b891a3a), + TOBN(0xf7a58f2b, 0xfae63829), TOBN(0x9ab186fb, 0x9c11ac9f)}}, + {{TOBN(0x8d6eb369, 0x10b5be76), TOBN(0x046b7739, 0xfb040bcd), + TOBN(0xccb4529f, 0xcb73de88), TOBN(0x1df0fefc, 0xcf26be03)}, + {TOBN(0xad7757a6, 0xbcfcd027), TOBN(0xa8786c75, 0xbb3165ca), + TOBN(0xe9db1e34, 0x7e99a4d9), TOBN(0x99ee86df, 0xb06c504b)}}, + {{TOBN(0x5b7c2ddd, 0xc15c9f0a), TOBN(0xdf87a734, 0x4295989e), + TOBN(0x59ece47c, 0x03d08fda), TOBN(0xb074d3dd, 0xad5fc702)}, + {TOBN(0x20407903, 0x51a03776), TOBN(0x2bb1f77b, 0x2a608007), + TOBN(0x25c58f4f, 0xe1153185), TOBN(0xe6df62f6, 0x766e6447)}}, + {{TOBN(0xefb3d1be, 0xed51275a), TOBN(0x5de47dc7, 0x2f0f483f), + TOBN(0x7932d98e, 0x97c2bedf), TOBN(0xd5c11927, 0x0219f8a1)}, + {TOBN(0x9d751200, 0xa73a294e), TOBN(0x5f88434a, 0x9dc20172), + TOBN(0xd28d9fd3, 0xa26f506a), TOBN(0xa890cd31, 0x9d1dcd48)}}, + {{TOBN(0x0aebaec1, 0x70f4d3b4), TOBN(0xfd1a1369, 0x0ffc8d00), + TOBN(0xb9d9c240, 0x57d57838), TOBN(0x45929d26, 0x68bac361)}, + {TOBN(0x5a2cd060, 0x25b15ca6), TOBN(0x4b3c83e1, 0x6e474446), + TOBN(0x1aac7578, 0xee1e5134), TOBN(0xa418f5d6, 0xc91e2f41)}}, + {{TOBN(0x6936fc8a, 0x213ed68b), TOBN(0x860ae7ed, 0x510a5224), + TOBN(0x63660335, 0xdef09b53), TOBN(0x641b2897, 0xcd79c98d)}, + {TOBN(0x29bd38e1, 0x01110f35), TOBN(0x79c26f42, 0x648b1937), + TOBN(0x64dae519, 0x9d9164f4), TOBN(0xd85a2310, 0x0265c273)}}, + {{TOBN(0x7173dd5d, 0x4b07e2b1), TOBN(0xd144c4cb, 0x8d9ea221), + TOBN(0xe8b04ea4, 0x1105ab14), TOBN(0x92dda542, 0xfe80d8f1)}, + {TOBN(0xe9982fa8, 0xcf03dce6), TOBN(0x8b5ea965, 0x1a22cffc), + TOBN(0xf7f4ea7f, 0x3fad88c4), TOBN(0x62db773e, 0x6a5ba95c)}}, + {{TOBN(0xd20f02fb, 0x93f24567), TOBN(0xfd46c69a, 0x315257ca), + TOBN(0x0ac74cc7, 0x8bcab987), TOBN(0x46f31c01, 0x5ceca2f5)}, + {TOBN(0x40aedb59, 0x888b219e), TOBN(0xe50ecc37, 0xe1fccd02), + TOBN(0x1bcd9dad, 0x911f816c), TOBN(0x583cc1ec, 0x8db9b00c)}}, + {{TOBN(0xf3cd2e66, 0xa483bf11), TOBN(0xfa08a6f5, 0xb1b2c169), + TOBN(0xf375e245, 0x4be9fa28), TOBN(0x99a7ffec, 0x5b6d011f)}, + {TOBN(0x6a3ebddb, 0xc4ae62da), TOBN(0x6cea00ae, 0x374aef5d), + TOBN(0xab5fb98d, 0x9d4d05bc), TOBN(0x7cba1423, 0xd560f252)}}, + {{TOBN(0x49b2cc21, 0x208490de), TOBN(0x1ca66ec3, 0xbcfb2879), + TOBN(0x7f1166b7, 0x1b6fb16f), TOBN(0xfff63e08, 0x65fe5db3)}, + {TOBN(0xb8345abe, 0x8b2610be), TOBN(0xb732ed80, 0x39de3df4), + TOBN(0x0e24ed50, 0x211c32b4), TOBN(0xd10d8a69, 0x848ff27d)}}, + {{TOBN(0xc1074398, 0xed4de248), TOBN(0xd7cedace, 0x10488927), + TOBN(0xa4aa6bf8, 0x85673e13), TOBN(0xb46bae91, 0x6daf30af)}, + {TOBN(0x07088472, 0xfcef7ad8), TOBN(0x61151608, 0xd4b35e97), + TOBN(0xbcfe8f26, 0xdde29986), TOBN(0xeb84c4c7, 0xd5a34c79)}}, + {{TOBN(0xc1eec55c, 0x164e1214), TOBN(0x891be86d, 0xa147bb03), + TOBN(0x9fab4d10, 0x0ba96835), TOBN(0xbf01e9b8, 0xa5c1ae9f)}, + {TOBN(0x6b4de139, 0xb186ebc0), TOBN(0xd5c74c26, 0x85b91bca), + TOBN(0x5086a99c, 0xc2d93854), TOBN(0xeed62a7b, 0xa7a9dfbc)}}, + {{TOBN(0x8778ed6f, 0x76b7618a), TOBN(0xbff750a5, 0x03b66062), + TOBN(0x4cb7be22, 0xb65186db), TOBN(0x369dfbf0, 0xcc3a6d13)}, + {TOBN(0xc7dab26c, 0x7191a321), TOBN(0x9edac3f9, 0x40ed718e), + TOBN(0xbc142b36, 0xd0cfd183), TOBN(0xc8af82f6, 0x7c991693)}}, + {{TOBN(0xb3d1e4d8, 0x97ce0b2a), TOBN(0xe6d7c87f, 0xc3a55cdf), + TOBN(0x35846b95, 0x68b81afe), TOBN(0x018d12af, 0xd3c239d8)}, + {TOBN(0x2b2c6208, 0x01206e15), TOBN(0xe0e42453, 0xa3b882c6), + TOBN(0x854470a3, 0xa50162d5), TOBN(0x08157478, 0x7017a62a)}}, + {{TOBN(0x18bd3fb4, 0x820357c7), TOBN(0x992039ae, 0x6f1458ad), + TOBN(0x9a1df3c5, 0x25b44aa1), TOBN(0x2d780357, 0xed3d5281)}, + {TOBN(0x58cf7e4d, 0xc77ad4d4), TOBN(0xd49a7998, 0xf9df4fc4), + TOBN(0x4465a8b5, 0x1d71205e), TOBN(0xa0ee0ea6, 0x649254aa)}}, + {{TOBN(0x4b5eeecf, 0xab7bd771), TOBN(0x6c873073, 0x35c262b9), + TOBN(0xdc5bd648, 0x3c9d61e7), TOBN(0x233d6d54, 0x321460d2)}, + {TOBN(0xd20c5626, 0xfc195bcc), TOBN(0x25445958, 0x04d78b63), + TOBN(0xe03fcb3d, 0x17ec8ef3), TOBN(0x54b690d1, 0x46b8f781)}}, + {{TOBN(0x82fa2c8a, 0x21230646), TOBN(0xf51aabb9, 0x084f418c), + TOBN(0xff4fbec1, 0x1a30ba43), TOBN(0x6a5acf73, 0x743c9df7)}, + {TOBN(0x1da2b357, 0xd635b4d5), TOBN(0xc3de68dd, 0xecd5c1da), + TOBN(0xa689080b, 0xd61af0dd), TOBN(0xdea5938a, 0xd665bf99)}}, + {{TOBN(0x0231d71a, 0xfe637294), TOBN(0x01968aa6, 0xa5a81cd8), + TOBN(0x11252d50, 0x048e63b5), TOBN(0xc446bc52, 0x6ca007e9)}, + {TOBN(0xef8c50a6, 0x96d6134b), TOBN(0x9361fbf5, 0x9e09a05c), + TOBN(0xf17f85a6, 0xdca3291a), TOBN(0xb178d548, 0xff251a21)}}, + {{TOBN(0x87f6374b, 0xa4df3915), TOBN(0x566ce1bf, 0x2fd5d608), + TOBN(0x425cba4d, 0x7de35102), TOBN(0x6b745f8f, 0x58c5d5e2)}, + {TOBN(0x88402af6, 0x63122edf), TOBN(0x3190f9ed, 0x3b989a89), + TOBN(0x4ad3d387, 0xebba3156), TOBN(0xef385ad9, 0xc7c469a5)}}, + {{TOBN(0xb08281de, 0x3f642c29), TOBN(0x20be0888, 0x910ffb88), + TOBN(0xf353dd4a, 0xd5292546), TOBN(0x3f1627de, 0x8377a262)}, + {TOBN(0xa5faa013, 0xeefcd638), TOBN(0x8f3bf626, 0x74cc77c3), + TOBN(0x32618f65, 0xa348f55e), TOBN(0x5787c0dc, 0x9fefeb9e)}}, + {{TOBN(0xf1673aa2, 0xd9a23e44), TOBN(0x88dfa993, 0x4e10690d), + TOBN(0x1ced1b36, 0x2bf91108), TOBN(0x9193ceca, 0x3af48649)}, + {TOBN(0xfb34327d, 0x2d738fc5), TOBN(0x6697b037, 0x975fee6c), + TOBN(0x2f485da0, 0xc04079a5), TOBN(0x2cdf5735, 0x2feaa1ac)}}, + {{TOBN(0x76944420, 0xbd55659e), TOBN(0x7973e32b, 0x4376090c), + TOBN(0x86bb4fe1, 0x163b591a), TOBN(0x10441aed, 0xc196f0ca)}, + {TOBN(0x3b431f4a, 0x045ad915), TOBN(0x6c11b437, 0xa4afacb1), + TOBN(0x30b0c7db, 0x71fdbbd8), TOBN(0xb642931f, 0xeda65acd)}}, + {{TOBN(0x4baae6e8, 0x9c92b235), TOBN(0xa73bbd0e, 0x6b3993a1), + TOBN(0xd06d60ec, 0x693dd031), TOBN(0x03cab91b, 0x7156881c)}, + {TOBN(0xd615862f, 0x1db3574b), TOBN(0x485b0185, 0x64bb061a), + TOBN(0x27434988, 0xa0181e06), TOBN(0x2cd61ad4, 0xc1c0c757)}}, + {{TOBN(0x3effed5a, 0x2ff9f403), TOBN(0x8dc98d8b, 0x62239029), + TOBN(0x2206021e, 0x1f17b70d), TOBN(0xafbec0ca, 0xbf510015)}, + {TOBN(0x9fed7164, 0x80130dfa), TOBN(0x306dc2b5, 0x8a02dcf5), + TOBN(0x48f06620, 0xfeb10fc0), TOBN(0x78d1e1d5, 0x5a57cf51)}}, + {{TOBN(0xadef8c5a, 0x192ef710), TOBN(0x88afbd4b, 0x3b7431f9), + TOBN(0x7e1f7407, 0x64250c9e), TOBN(0x6e31318d, 0xb58bec07)}, + {TOBN(0xfd4fc4b8, 0x24f89b4e), TOBN(0x65a5dd88, 0x48c36a2a), + TOBN(0x4f1eccff, 0xf024baa7), TOBN(0x22a21cf2, 0xcba94650)}}, + {{TOBN(0x95d29dee, 0x42a554f7), TOBN(0x828983a5, 0x002ec4ba), + TOBN(0x8112a1f7, 0x8badb73d), TOBN(0x79ea8897, 0xa27c1839)}, + {TOBN(0x8969a5a7, 0xd065fd83), TOBN(0xf49af791, 0xb262a0bc), + TOBN(0xfcdea8b6, 0xaf2b5127), TOBN(0x10e913e1, 0x564c2dbc)}}, + {{TOBN(0x51239d14, 0xbc21ef51), TOBN(0xe51c3ceb, 0x4ce57292), + TOBN(0x795ff068, 0x47bbcc3b), TOBN(0x86b46e1e, 0xbd7e11e6)}, + {TOBN(0x0ea6ba23, 0x80041ef4), TOBN(0xd72fe505, 0x6262342e), + TOBN(0x8abc6dfd, 0x31d294d4), TOBN(0xbbe017a2, 0x1278c2c9)}}, + {{TOBN(0xb1fcfa09, 0xb389328a), TOBN(0x322fbc62, 0xd01771b5), + TOBN(0x04c0d063, 0x60b045bf), TOBN(0xdb652edc, 0x10e52d01)}, + {TOBN(0x50ef932c, 0x03ec6627), TOBN(0xde1b3b2d, 0xc1ee50e3), + TOBN(0x5ab7bdc5, 0xdc37a90d), TOBN(0xfea67213, 0x31e33a96)}}, + {{TOBN(0x6482b5cb, 0x4f2999aa), TOBN(0x38476cc6, 0xb8cbf0dd), + TOBN(0x93ebfacb, 0x173405bb), TOBN(0x15cdafe7, 0xe52369ec)}, + {TOBN(0xd42d5ba4, 0xd935b7db), TOBN(0x648b6004, 0x1c99a4cd), + TOBN(0x785101bd, 0xa3b5545b), TOBN(0x4bf2c38a, 0x9dd67faf)}}, + {{TOBN(0xb1aadc63, 0x4442449c), TOBN(0xe0e9921a, 0x33ad4fb8), + TOBN(0x5c552313, 0xaa686d82), TOBN(0xdee635fa, 0x465d866c)}, + {TOBN(0xbc3c224a, 0x18ee6e8a), TOBN(0xeed748a6, 0xed42e02f), + TOBN(0xe70f930a, 0xd474cd08), TOBN(0x774ea6ec, 0xfff24adf)}}, + {{TOBN(0x03e2de1c, 0xf3480d4a), TOBN(0xf0d8edc7, 0xbc8acf1a), + TOBN(0xf23e3303, 0x68295a9c), TOBN(0xfadd5f68, 0xc546a97d)}, + {TOBN(0x895597ad, 0x96f8acb1), TOBN(0xbddd49d5, 0x671bdae2), + TOBN(0x16fcd528, 0x21dd43f4), TOBN(0xa5a45412, 0x6619141a)}}}, + {{{TOBN(0x8ce9b6bf, 0xc360e25a), TOBN(0xe6425195, 0x075a1a78), + TOBN(0x9dc756a8, 0x481732f4), TOBN(0x83c0440f, 0x5432b57a)}, + {TOBN(0xc670b3f1, 0xd720281f), TOBN(0x2205910e, 0xd135e051), + TOBN(0xded14b0e, 0xdb052be7), TOBN(0x697b3d27, 0xc568ea39)}}, + {{TOBN(0x2e599b9a, 0xfb3ff9ed), TOBN(0x28c2e0ab, 0x17f6515c), + TOBN(0x1cbee4fd, 0x474da449), TOBN(0x071279a4, 0x4f364452)}, + {TOBN(0x97abff66, 0x01fbe855), TOBN(0x3ee394e8, 0x5fda51c4), + TOBN(0x190385f6, 0x67597c0b), TOBN(0x6e9fccc6, 0xa27ee34b)}}, + {{TOBN(0x0b89de93, 0x14092ebb), TOBN(0xf17256bd, 0x428e240c), + TOBN(0xcf89a7f3, 0x93d2f064), TOBN(0x4f57841e, 0xe1ed3b14)}, + {TOBN(0x4ee14405, 0xe708d855), TOBN(0x856aae72, 0x03f1c3d0), + TOBN(0xc8e5424f, 0xbdd7eed5), TOBN(0x3333e4ef, 0x73ab4270)}}, + {{TOBN(0x3bc77ade, 0xdda492f8), TOBN(0xc11a3aea, 0x78297205), + TOBN(0x5e89a3e7, 0x34931b4c), TOBN(0x17512e2e, 0x9f5694bb)}, + {TOBN(0x5dc349f3, 0x177bf8b6), TOBN(0x232ea4ba, 0x08c7ff3e), + TOBN(0x9c4f9d16, 0xf511145d), TOBN(0xccf109a3, 0x33b379c3)}}, + {{TOBN(0xe75e7a88, 0xa1f25897), TOBN(0x7ac6961f, 0xa1b5d4d8), + TOBN(0xe3e10773, 0x08f3ed5c), TOBN(0x208a54ec, 0x0a892dfb)}, + {TOBN(0xbe826e19, 0x78660710), TOBN(0x0cf70a97, 0x237df2c8), + TOBN(0x418a7340, 0xed704da5), TOBN(0xa3eeb9a9, 0x08ca33fd)}}, + {{TOBN(0x49d96233, 0x169bca96), TOBN(0x04d286d4, 0x2da6aafb), + TOBN(0xc09606ec, 0xa0c2fa94), TOBN(0x8869d0d5, 0x23ff0fb3)}, + {TOBN(0xa99937e5, 0xd0150d65), TOBN(0xa92e2503, 0x240c14c9), + TOBN(0x656bf945, 0x108e2d49), TOBN(0x152a733a, 0xa2f59e2b)}}, + {{TOBN(0xb4323d58, 0x8434a920), TOBN(0xc0af8e93, 0x622103c5), + TOBN(0x667518ef, 0x938dbf9a), TOBN(0xa1843073, 0x83a9cdf2)}, + {TOBN(0x350a94aa, 0x5447ab80), TOBN(0xe5e5a325, 0xc75a3d61), + TOBN(0x74ba507f, 0x68411a9e), TOBN(0x10581fc1, 0x594f70c5)}}, + {{TOBN(0x60e28570, 0x80eb24a9), TOBN(0x7bedfb4d, 0x488e0cfd), + TOBN(0x721ebbd7, 0xc259cdb8), TOBN(0x0b0da855, 0xbc6390a9)}, + {TOBN(0x2b4d04db, 0xde314c70), TOBN(0xcdbf1fbc, 0x6c32e846), + TOBN(0x33833eab, 0xb162fc9e), TOBN(0x9939b48b, 0xb0dd3ab7)}}, + {{TOBN(0x5aaa98a7, 0xcb0c9c8c), TOBN(0x75105f30, 0x81c4375c), + TOBN(0xceee5057, 0x5ef1c90f), TOBN(0xb31e065f, 0xc23a17bf)}, + {TOBN(0x5364d275, 0xd4b6d45a), TOBN(0xd363f3ad, 0x62ec8996), + TOBN(0xb5d21239, 0x4391c65b), TOBN(0x84564765, 0xebb41b47)}}, + {{TOBN(0x20d18ecc, 0x37107c78), TOBN(0xacff3b6b, 0x570c2a66), + TOBN(0x22f975d9, 0x9bd0d845), TOBN(0xef0a0c46, 0xba178fa0)}, + {TOBN(0x1a419651, 0x76b6028e), TOBN(0xc49ec674, 0x248612d4), + TOBN(0x5b6ac4f2, 0x7338af55), TOBN(0x06145e62, 0x7bee5a36)}}, + {{TOBN(0x33e95d07, 0xe75746b5), TOBN(0x1c1e1f6d, 0xc40c78be), + TOBN(0x967833ef, 0x222ff8e2), TOBN(0x4bedcf6a, 0xb49180ad)}, + {TOBN(0x6b37e9c1, 0x3d7a4c8a), TOBN(0x2748887c, 0x6ddfe760), + TOBN(0xf7055123, 0xaa3a5bbc), TOBN(0x954ff225, 0x7bbb8e74)}}, + {{TOBN(0xc42b8ab1, 0x97c3dfb9), TOBN(0x55a549b0, 0xcf168154), + TOBN(0xad6748e7, 0xc1b50692), TOBN(0x2775780f, 0x6fc5cbcb)}, + {TOBN(0x4eab80b8, 0xe1c9d7c8), TOBN(0x8c69dae1, 0x3fdbcd56), + TOBN(0x47e6b4fb, 0x9969eace), TOBN(0x002f1085, 0xa705cb5a)}}, + {{TOBN(0x4e23ca44, 0x6d3fea55), TOBN(0xb4ae9c86, 0xf4810568), + TOBN(0x47bfb91b, 0x2a62f27d), TOBN(0x60deb4c9, 0xd9bac28c)}, + {TOBN(0xa892d894, 0x7de6c34c), TOBN(0x4ee68259, 0x4494587d), + TOBN(0x914ee14e, 0x1a3f8a5b), TOBN(0xbb113eaa, 0x28700385)}}, + {{TOBN(0x81ca03b9, 0x2115b4c9), TOBN(0x7c163d38, 0x8908cad1), + TOBN(0xc912a118, 0xaa18179a), TOBN(0xe09ed750, 0x886e3081)}, + {TOBN(0xa676e3fa, 0x26f516ca), TOBN(0x753cacf7, 0x8e732f91), + TOBN(0x51592aea, 0x833da8b4), TOBN(0xc626f42f, 0x4cbea8aa)}}, + {{TOBN(0xef9dc899, 0xa7b56eaf), TOBN(0x00c0e52c, 0x34ef7316), + TOBN(0x5b1e4e24, 0xfe818a86), TOBN(0x9d31e20d, 0xc538be47)}, + {TOBN(0x22eb932d, 0x3ed68974), TOBN(0xe44bbc08, 0x7c4e87c4), + TOBN(0x4121086e, 0x0dde9aef), TOBN(0x8e6b9cff, 0x134f4345)}}, + {{TOBN(0x96892c1f, 0x711b0eb9), TOBN(0xb905f2c8, 0x780ab954), + TOBN(0xace26309, 0xa20792db), TOBN(0xec8ac9b3, 0x0684e126)}, + {TOBN(0x486ad8b6, 0xb40a2447), TOBN(0x60121fc1, 0x9fe3fb24), + TOBN(0x5626fccf, 0x1a8e3b3f), TOBN(0x4e568622, 0x6ad1f394)}}, + {{TOBN(0xda7aae0d, 0x196aa5a1), TOBN(0xe0df8c77, 0x1041b5fb), + TOBN(0x451465d9, 0x26b318b7), TOBN(0xc29b6e55, 0x7ab136e9)}, + {TOBN(0x2c2ab48b, 0x71148463), TOBN(0xb5738de3, 0x64454a76), + TOBN(0x54ccf9a0, 0x5a03abe4), TOBN(0x377c0296, 0x0427d58e)}}, + {{TOBN(0x73f5f0b9, 0x2bb39c1f), TOBN(0x14373f2c, 0xe608d8c5), + TOBN(0xdcbfd314, 0x00fbb805), TOBN(0xdf18fb20, 0x83afdcfb)}, + {TOBN(0x81a57f42, 0x42b3523f), TOBN(0xe958532d, 0x87f650fb), + TOBN(0xaa8dc8b6, 0x8b0a7d7c), TOBN(0x1b75dfb7, 0x150166be)}}, + {{TOBN(0x90e4f7c9, 0x2d7d1413), TOBN(0x67e2d6b5, 0x9834f597), + TOBN(0x4fd4f4f9, 0xa808c3e8), TOBN(0xaf8237e0, 0xd5281ec1)}, + {TOBN(0x25ab5fdc, 0x84687cee), TOBN(0xc5ded6b1, 0xa5b26c09), + TOBN(0x8e4a5aec, 0xc8ea7650), TOBN(0x23b73e5c, 0x14cc417f)}}, + {{TOBN(0x2bfb4318, 0x3037bf52), TOBN(0xb61e6db5, 0x78c725d7), + TOBN(0x8efd4060, 0xbbb3e5d7), TOBN(0x2e014701, 0xdbac488e)}, + {TOBN(0xac75cf9a, 0x360aa449), TOBN(0xb70cfd05, 0x79634d08), + TOBN(0xa591536d, 0xfffb15ef), TOBN(0xb2c37582, 0xd07c106c)}}, + {{TOBN(0xb4293fdc, 0xf50225f9), TOBN(0xc52e175c, 0xb0e12b03), + TOBN(0xf649c3ba, 0xd0a8bf64), TOBN(0x745a8fef, 0xeb8ae3c6)}, + {TOBN(0x30d7e5a3, 0x58321bc3), TOBN(0xb1732be7, 0x0bc4df48), + TOBN(0x1f217993, 0xe9ea5058), TOBN(0xf7a71cde, 0x3e4fd745)}}, + {{TOBN(0x86cc533e, 0x894c5bbb), TOBN(0x6915c7d9, 0x69d83082), + TOBN(0xa6aa2d05, 0x5815c244), TOBN(0xaeeee592, 0x49b22ce5)}, + {TOBN(0x89e39d13, 0x78135486), TOBN(0x3a275c1f, 0x16b76f2f), + TOBN(0xdb6bcc1b, 0xe036e8f5), TOBN(0x4df69b21, 0x5e4709f5)}}, + {{TOBN(0xa188b250, 0x2d0f39aa), TOBN(0x622118bb, 0x15a85947), + TOBN(0x2ebf520f, 0xfde0f4fa), TOBN(0xa40e9f29, 0x4860e539)}, + {TOBN(0x7b6a51eb, 0x22b57f0f), TOBN(0x849a33b9, 0x7e80644a), + TOBN(0x50e5d16f, 0x1cf095fe), TOBN(0xd754b54e, 0xec55f002)}}, + {{TOBN(0x5cfbbb22, 0x236f4a98), TOBN(0x0b0c59e9, 0x066800bb), + TOBN(0x4ac69a8f, 0x5a9a7774), TOBN(0x2b33f804, 0xd6bec948)}, + {TOBN(0xb3729295, 0x32e6c466), TOBN(0x68956d0f, 0x4e599c73), + TOBN(0xa47a249f, 0x155c31cc), TOBN(0x24d80f0d, 0xe1ce284e)}}, + {{TOBN(0xcd821dfb, 0x988baf01), TOBN(0xe6331a7d, 0xdbb16647), + TOBN(0x1eb8ad33, 0x094cb960), TOBN(0x593cca38, 0xc91bbca5)}, + {TOBN(0x384aac8d, 0x26567456), TOBN(0x40fa0309, 0xc04b6490), + TOBN(0x97834cd6, 0xdab6c8f6), TOBN(0x68a7318d, 0x3f91e55f)}}, + {{TOBN(0xa00fd04e, 0xfc4d3157), TOBN(0xb56f8ab2, 0x2bf3bdea), + TOBN(0x014f5648, 0x4fa57172), TOBN(0x948c5860, 0x450abdb3)}, + {TOBN(0x342b5df0, 0x0ebd4f08), TOBN(0x3e5168cd, 0x0e82938e), + TOBN(0x7aedc1ce, 0xb0df5dd0), TOBN(0x6bbbc6d9, 0xe5732516)}}, + {{TOBN(0xc7bfd486, 0x605daaa6), TOBN(0x46fd72b7, 0xbb9a6c9e), + TOBN(0xe4847fb1, 0xa124fb89), TOBN(0x75959cbd, 0xa2d8ffbc)}, + {TOBN(0x42579f65, 0xc8a588ee), TOBN(0x368c92e6, 0xb80b499d), + TOBN(0xea4ef6cd, 0x999a5df1), TOBN(0xaa73bb7f, 0x936fe604)}}, + {{TOBN(0xf347a70d, 0x6457d188), TOBN(0x86eda86b, 0x8b7a388b), + TOBN(0xb7cdff06, 0x0ccd6013), TOBN(0xbeb1b6c7, 0xd0053fb2)}, + {TOBN(0x0b022387, 0x99240a9f), TOBN(0x1bbb384f, 0x776189b2), + TOBN(0x8695e71e, 0x9066193a), TOBN(0x2eb50097, 0x06ffac7e)}}, + {{TOBN(0x0654a9c0, 0x4a7d2caa), TOBN(0x6f3fb3d1, 0xa5aaa290), + TOBN(0x835db041, 0xff476e8f), TOBN(0x540b8b0b, 0xc42295e4)}, + {TOBN(0xa5c73ac9, 0x05e214f5), TOBN(0x9a74075a, 0x56a0b638), + TOBN(0x2e4b1090, 0xce9e680b), TOBN(0x57a5b479, 0x6b8d9afa)}}, + {{TOBN(0x0dca48e7, 0x26bfe65c), TOBN(0x097e391c, 0x7290c307), + TOBN(0x683c462e, 0x6669e72e), TOBN(0xf505be1e, 0x062559ac)}, + {TOBN(0x5fbe3ea1, 0xe3a3035a), TOBN(0x6431ebf6, 0x9cd50da8), + TOBN(0xfd169d5c, 0x1f6407f2), TOBN(0x8d838a95, 0x60fce6b8)}}, + {{TOBN(0x2a2bfa7f, 0x650006f0), TOBN(0xdfd7dad3, 0x50c0fbb2), + TOBN(0x92452495, 0xccf9ad96), TOBN(0x183bf494, 0xd95635f9)}, + {TOBN(0x02d5df43, 0x4a7bd989), TOBN(0x505385cc, 0xa5431095), + TOBN(0xdd98e67d, 0xfd43f53e), TOBN(0xd61e1a6c, 0x500c34a9)}}, + {{TOBN(0x5a4b46c6, 0x4a8a3d62), TOBN(0x8469c4d0, 0x247743d2), + TOBN(0x2bb3a13d, 0x88f7e433), TOBN(0x62b23a10, 0x01be5849)}, + {TOBN(0xe83596b4, 0xa63d1a4c), TOBN(0x454e7fea, 0x7d183f3e), + TOBN(0x643fce61, 0x17afb01c), TOBN(0x4e65e5e6, 0x1c4c3638)}}, + {{TOBN(0x41d85ea1, 0xef74c45b), TOBN(0x2cfbfa66, 0xae328506), + TOBN(0x98b078f5, 0x3ada7da9), TOBN(0xd985fe37, 0xec752fbb)}, + {TOBN(0xeece68fe, 0x5a0148b4), TOBN(0x6f9a55c7, 0x2d78136d), + TOBN(0x232dccc4, 0xd2b729ce), TOBN(0xa27e0dfd, 0x90aafbc4)}}, + {{TOBN(0x96474452, 0x12b4603e), TOBN(0xa876c551, 0x6b706d14), + TOBN(0xdf145fcf, 0x69a9d412), TOBN(0xe2ab75b7, 0x2d479c34)}, + {TOBN(0x12df9a76, 0x1a23ff97), TOBN(0xc6138992, 0x5d359d10), + TOBN(0x6e51c7ae, 0xfa835f22), TOBN(0x69a79cb1, 0xc0fcc4d9)}}, + {{TOBN(0xf57f350d, 0x594cc7e1), TOBN(0x3079ca63, 0x3350ab79), + TOBN(0x226fb614, 0x9aff594a), TOBN(0x35afec02, 0x6d59a62b)}, + {TOBN(0x9bee46f4, 0x06ed2c6e), TOBN(0x58da1735, 0x7d939a57), + TOBN(0x44c50402, 0x8fd1797e), TOBN(0xd8853e7c, 0x5ccea6ca)}}, + {{TOBN(0x4065508d, 0xa35fcd5f), TOBN(0x8965df8c, 0x495ccaeb), + TOBN(0x0f2da850, 0x12e1a962), TOBN(0xee471b94, 0xc1cf1cc4)}, + {TOBN(0xcef19bc8, 0x0a08fb75), TOBN(0x704958f5, 0x81de3591), + TOBN(0x2867f8b2, 0x3aef4f88), TOBN(0x8d749384, 0xea9f9a5f)}}, + {{TOBN(0x1b385537, 0x8c9049f4), TOBN(0x5be948f3, 0x7b92d8b6), + TOBN(0xd96f725d, 0xb6e2bd6b), TOBN(0x37a222bc, 0x958c454d)}, + {TOBN(0xe7c61abb, 0x8809bf61), TOBN(0x46f07fbc, 0x1346f18d), + TOBN(0xfb567a7a, 0xe87c0d1c), TOBN(0x84a461c8, 0x7ef3d07a)}}, + {{TOBN(0x0a5adce6, 0xd9278d98), TOBN(0x24d94813, 0x9dfc73e1), + TOBN(0x4f3528b6, 0x054321c3), TOBN(0x2e03fdde, 0x692ea706)}, + {TOBN(0x10e60619, 0x47b533c0), TOBN(0x1a8bc73f, 0x2ca3c055), + TOBN(0xae58d4b2, 0x1bb62b8f), TOBN(0xb2045a73, 0x584a24e3)}}, + {{TOBN(0x3ab3d5af, 0xbd76e195), TOBN(0x478dd1ad, 0x6938a810), + TOBN(0x6ffab393, 0x6ee3d5cb), TOBN(0xdfb693db, 0x22b361e4)}, + {TOBN(0xf9694496, 0x51dbf1a7), TOBN(0xcab4b4ef, 0x08a2e762), + TOBN(0xe8c92f25, 0xd39bba9a), TOBN(0x850e61bc, 0xf1464d96)}}, + {{TOBN(0xb7e830e3, 0xdc09508b), TOBN(0xfaf6d2cf, 0x74317655), + TOBN(0x72606ceb, 0xdf690355), TOBN(0x48bb92b3, 0xd0c3ded6)}, + {TOBN(0x65b75484, 0x5c7cf892), TOBN(0xf6cd7ac9, 0xd5d5f01f), + TOBN(0xc2c30a59, 0x96401d69), TOBN(0x91268650, 0xed921878)}}, + {{TOBN(0x380bf913, 0xb78c558f), TOBN(0x43c0baeb, 0xc8afdaa9), + TOBN(0x377f61d5, 0x54f169d3), TOBN(0xf8da07e3, 0xae5ff20b)}, + {TOBN(0xb676c49d, 0xa8a90ea8), TOBN(0x81c1ff2b, 0x83a29b21), + TOBN(0x383297ac, 0x2ad8d276), TOBN(0x3001122f, 0xba89f982)}}, + {{TOBN(0xe1d794be, 0x6718e448), TOBN(0x246c1482, 0x7c3e6e13), + TOBN(0x56646ef8, 0x5d26b5ef), TOBN(0x80f5091e, 0x88069cdd)}, + {TOBN(0xc5992e2f, 0x724bdd38), TOBN(0x02e915b4, 0x8471e8c7), + TOBN(0x96ff320a, 0x0d0ff2a9), TOBN(0xbf886487, 0x4384d1a0)}}, + {{TOBN(0xbbe1e6a6, 0xc93f72d6), TOBN(0xd5f75d12, 0xcad800ea), + TOBN(0xfa40a09f, 0xe7acf117), TOBN(0x32c8cdd5, 0x7581a355)}, + {TOBN(0x74221992, 0x7023c499), TOBN(0xa8afe5d7, 0x38ec3901), + TOBN(0x5691afcb, 0xa90e83f0), TOBN(0x41bcaa03, 0x0b8f8eac)}}, + {{TOBN(0xe38b5ff9, 0x8d2668d5), TOBN(0x0715281a, 0x7ad81965), + TOBN(0x1bc8fc7c, 0x03c6ce11), TOBN(0xcbbee6e2, 0x8b650436)}, + {TOBN(0x06b00fe8, 0x0cdb9808), TOBN(0x17d6e066, 0xfe3ed315), + TOBN(0x2e9d38c6, 0x4d0b5018), TOBN(0xab8bfd56, 0x844dcaef)}}, + {{TOBN(0x42894a59, 0x513aed8b), TOBN(0xf77f3b6d, 0x314bd07a), + TOBN(0xbbdecb8f, 0x8e42b582), TOBN(0xf10e2fa8, 0xd2390fe6)}, + {TOBN(0xefb95022, 0x62a2f201), TOBN(0x4d59ea50, 0x50ee32b0), + TOBN(0xd87f7728, 0x6da789a8), TOBN(0xcf98a2cf, 0xf79492c4)}}, + {{TOBN(0xf9577239, 0x720943c2), TOBN(0xba044cf5, 0x3990b9d0), + TOBN(0x5aa8e823, 0x95f2884a), TOBN(0x834de6ed, 0x0278a0af)}, + {TOBN(0xc8e1ee9a, 0x5f25bd12), TOBN(0x9259ceaa, 0x6f7ab271), + TOBN(0x7e6d97a2, 0x77d00b76), TOBN(0x5c0c6eea, 0xa437832a)}}, + {{TOBN(0x5232c20f, 0x5606b81d), TOBN(0xabd7b375, 0x0d991ee5), + TOBN(0x4d2bfe35, 0x8632d951), TOBN(0x78f85146, 0x98ed9364)}, + {TOBN(0x951873f0, 0xf30c3282), TOBN(0x0da8ac80, 0xa789230b), + TOBN(0x3ac7789c, 0x5398967f), TOBN(0xa69b8f7f, 0xbdda0fb5)}}, + {{TOBN(0xe5db7717, 0x6add8545), TOBN(0x1b71cb66, 0x72c49b66), + TOBN(0xd8560739, 0x68421d77), TOBN(0x03840fe8, 0x83e3afea)}, + {TOBN(0xb391dad5, 0x1ec69977), TOBN(0xae243fb9, 0x307f6726), + TOBN(0xc88ac87b, 0xe8ca160c), TOBN(0x5174cced, 0x4ce355f4)}}, + {{TOBN(0x98a35966, 0xe58ba37d), TOBN(0xfdcc8da2, 0x7817335d), + TOBN(0x5b752830, 0x83fbc7bf), TOBN(0x68e419d4, 0xd9c96984)}, + {TOBN(0x409a39f4, 0x02a40380), TOBN(0x88940faf, 0x1fe977bc), + TOBN(0xc640a94b, 0x8f8edea6), TOBN(0x1e22cd17, 0xed11547d)}}, + {{TOBN(0xe28568ce, 0x59ffc3e2), TOBN(0x60aa1b55, 0xc1dee4e7), + TOBN(0xc67497c8, 0x837cb363), TOBN(0x06fb438a, 0x105a2bf2)}, + {TOBN(0x30357ec4, 0x500d8e20), TOBN(0x1ad9095d, 0x0670db10), + TOBN(0x7f589a05, 0xc73b7cfd), TOBN(0xf544607d, 0x880d6d28)}}, + {{TOBN(0x17ba93b1, 0xa20ef103), TOBN(0xad859130, 0x6ba6577b), + TOBN(0x65c91cf6, 0x6fa214a0), TOBN(0xd7d49c6c, 0x27990da5)}, + {TOBN(0xecd9ec8d, 0x20bb569d), TOBN(0xbd4b2502, 0xeeffbc33), + TOBN(0x2056ca5a, 0x6bed0467), TOBN(0x7916a1f7, 0x5b63728c)}}, + {{TOBN(0xd4f9497d, 0x53a4f566), TOBN(0x89734664, 0x97b56810), + TOBN(0xf8e1da74, 0x0494a621), TOBN(0x82546a93, 0x8d011c68)}, + {TOBN(0x1f3acb19, 0xc61ac162), TOBN(0x52f8fa9c, 0xabad0d3e), + TOBN(0x15356523, 0xb4b7ea43), TOBN(0x5a16ad61, 0xae608125)}}, + {{TOBN(0xb0bcb87f, 0x4faed184), TOBN(0x5f236b1d, 0x5029f45f), + TOBN(0xd42c7607, 0x0bc6b1fc), TOBN(0xc644324e, 0x68aefce3)}, + {TOBN(0x8e191d59, 0x5c5d8446), TOBN(0xc0208077, 0x13ae1979), + TOBN(0xadcaee55, 0x3ba59cc7), TOBN(0x20ed6d6b, 0xa2cb81ba)}}, + {{TOBN(0x0952ba19, 0xb6efcffc), TOBN(0x60f12d68, 0x97c0b87c), + TOBN(0x4ee2c7c4, 0x9caa30bc), TOBN(0x767238b7, 0x97fbff4e)}, + {TOBN(0xebc73921, 0x501b5d92), TOBN(0x3279e3df, 0xc2a37737), + TOBN(0x9fc12bc8, 0x6d197543), TOBN(0xfa94dc6f, 0x0a40db4e)}}, + {{TOBN(0x7392b41a, 0x530ccbbd), TOBN(0x87c82146, 0xea823525), + TOBN(0xa52f984c, 0x05d98d0c), TOBN(0x2ae57d73, 0x5ef6974c)}, + {TOBN(0x9377f7bf, 0x3042a6dd), TOBN(0xb1a007c0, 0x19647a64), + TOBN(0xfaa9079a, 0x0cca9767), TOBN(0x3d81a25b, 0xf68f72d5)}}, + {{TOBN(0x752067f8, 0xff81578e), TOBN(0x78622150, 0x9045447d), + TOBN(0xc0c22fcf, 0x0505aa6f), TOBN(0x1030f0a6, 0x6bed1c77)}, + {TOBN(0x31f29f15, 0x1f0bd739), TOBN(0x2d7989c7, 0xe6debe85), + TOBN(0x5c070e72, 0x8e677e98), TOBN(0x0a817bd3, 0x06e81fd5)}}, + {{TOBN(0xc110d830, 0xb0f2ac95), TOBN(0x48d0995a, 0xab20e64e), + TOBN(0x0f3e00e1, 0x7729cd9a), TOBN(0x2a570c20, 0xdd556946)}, + {TOBN(0x912dbcfd, 0x4e86214d), TOBN(0x2d014ee2, 0xcf615498), + TOBN(0x55e2b1e6, 0x3530d76e), TOBN(0xc5135ae4, 0xfd0fd6d1)}}, + {{TOBN(0x0066273a, 0xd4f3049f), TOBN(0xbb8e9893, 0xe7087477), + TOBN(0x2dba1ddb, 0x14c6e5fd), TOBN(0xdba37886, 0x51f57e6c)}, + {TOBN(0x5aaee0a6, 0x5a72f2cf), TOBN(0x1208bfbf, 0x7bea5642), + TOBN(0xf5c6aa3b, 0x67872c37), TOBN(0xd726e083, 0x43f93224)}}, + {{TOBN(0x1854daa5, 0x061f1658), TOBN(0xc0016df1, 0xdf0cd2b3), + TOBN(0xc2a3f23e, 0x833d50de), TOBN(0x73b681d2, 0xbbbd3017)}, + {TOBN(0x2f046dc4, 0x3ac343c0), TOBN(0x9c847e7d, 0x85716421), + TOBN(0xe1e13c91, 0x0917eed4), TOBN(0x3fc9eebd, 0x63a1b9c6)}}, + {{TOBN(0x0f816a72, 0x7fe02299), TOBN(0x6335ccc2, 0x294f3319), + TOBN(0x3820179f, 0x4745c5be), TOBN(0xe647b782, 0x922f066e)}, + {TOBN(0xc22e49de, 0x02cafb8a), TOBN(0x299bc2ff, 0xfcc2eccc), + TOBN(0x9a8feea2, 0x6e0e8282), TOBN(0xa627278b, 0xfe893205)}}, + {{TOBN(0xa7e19733, 0x7933e47b), TOBN(0xf4ff6b13, 0x2e766402), + TOBN(0xa4d8be0a, 0x98440d9f), TOBN(0x658f5c2f, 0x38938808)}, + {TOBN(0x90b75677, 0xc95b3b3e), TOBN(0xfa044269, 0x3137b6ff), + TOBN(0x077b039b, 0x43c47c29), TOBN(0xcca95dd3, 0x8a6445b2)}}, + {{TOBN(0x0b498ba4, 0x2333fc4c), TOBN(0x274f8e68, 0xf736a1b1), + TOBN(0x6ca348fd, 0x5f1d4b2e), TOBN(0x24d3be78, 0xa8f10199)}, + {TOBN(0x8535f858, 0xca14f530), TOBN(0xa6e7f163, 0x5b982e51), + TOBN(0x847c8512, 0x36e1bf62), TOBN(0xf6a7c58e, 0x03448418)}}, + {{TOBN(0x583f3703, 0xf9374ab6), TOBN(0x864f9195, 0x6e564145), + TOBN(0x33bc3f48, 0x22526d50), TOBN(0x9f323c80, 0x1262a496)}, + {TOBN(0xaa97a7ae, 0x3f046a9a), TOBN(0x70da183e, 0xdf8a039a), + TOBN(0x5b68f71c, 0x52aa0ba6), TOBN(0x9be0fe51, 0x21459c2d)}}, + {{TOBN(0xc1e17eb6, 0xcbc613e5), TOBN(0x33131d55, 0x497ea61c), + TOBN(0x2f69d39e, 0xaf7eded5), TOBN(0x73c2f434, 0xde6af11b)}, + {TOBN(0x4ca52493, 0xa4a375fa), TOBN(0x5f06787c, 0xb833c5c2), + TOBN(0x814e091f, 0x3e6e71cf), TOBN(0x76451f57, 0x8b746666)}}}, + {{{TOBN(0x80f9bdef, 0x694db7e0), TOBN(0xedca8787, 0xb9fcddc6), + TOBN(0x51981c34, 0x03b8dce1), TOBN(0x4274dcf1, 0x70e10ba1)}, + {TOBN(0xf72743b8, 0x6def6d1a), TOBN(0xd25b1670, 0xebdb1866), + TOBN(0xc4491e8c, 0x050c6f58), TOBN(0x2be2b2ab, 0x87fbd7f5)}}, + {{TOBN(0x3e0e5c9d, 0xd111f8ec), TOBN(0xbcc33f8d, 0xb7c4e760), + TOBN(0x702f9a91, 0xbd392a51), TOBN(0x7da4a795, 0xc132e92d)}, + {TOBN(0x1a0b0ae3, 0x0bb1151b), TOBN(0x54febac8, 0x02e32251), + TOBN(0xea3a5082, 0x694e9e78), TOBN(0xe58ffec1, 0xe4fe40b8)}}, + {{TOBN(0xf85592fc, 0xd1e0cf9e), TOBN(0xdea75f0d, 0xc0e7b2e8), + TOBN(0xc04215cf, 0xc135584e), TOBN(0x174fc727, 0x2f57092a)}, + {TOBN(0xe7277877, 0xeb930bea), TOBN(0x504caccb, 0x5eb02a5a), + TOBN(0xf9fe08f7, 0xf5241b9b), TOBN(0xe7fb62f4, 0x8d5ca954)}}, + {{TOBN(0xfbb8349d, 0x29c4120b), TOBN(0x9f94391f, 0xc0d0d915), + TOBN(0xc4074fa7, 0x5410ba51), TOBN(0xa66adbf6, 0x150a5911)}, + {TOBN(0xc164543c, 0x34bfca38), TOBN(0xe0f27560, 0xb9e1ccfc), + TOBN(0x99da0f53, 0xe820219c), TOBN(0xe8234498, 0xc6b4997a)}}, + {{TOBN(0xcfb88b76, 0x9d4c5423), TOBN(0x9e56eb10, 0xb0521c49), + TOBN(0x418e0b5e, 0xbe8700a1), TOBN(0x00cbaad6, 0xf93cb58a)}, + {TOBN(0xe923fbde, 0xd92a5e67), TOBN(0xca4979ac, 0x1f347f11), + TOBN(0x89162d85, 0x6bc0585b), TOBN(0xdd6254af, 0xac3c70e3)}}, + {{TOBN(0x7b23c513, 0x516e19e4), TOBN(0x56e2e847, 0xc5c4d593), + TOBN(0x9f727d73, 0x5ce71ef6), TOBN(0x5b6304a6, 0xf79a44c5)}, + {TOBN(0x6638a736, 0x3ab7e433), TOBN(0x1adea470, 0xfe742f83), + TOBN(0xe054b854, 0x5b7fc19f), TOBN(0xf935381a, 0xba1d0698)}}, + {{TOBN(0x546eab2d, 0x799e9a74), TOBN(0x96239e0e, 0xa949f729), + TOBN(0xca274c6b, 0x7090055a), TOBN(0x835142c3, 0x9020c9b0)}, + {TOBN(0xa405667a, 0xa2e8807f), TOBN(0x29f2c085, 0x1aa3d39e), + TOBN(0xcc555d64, 0x42fc72f5), TOBN(0xe856e0e7, 0xfbeacb3c)}}, + {{TOBN(0xb5504f9d, 0x918e4936), TOBN(0x65035ef6, 0xb2513982), + TOBN(0x0553a0c2, 0x6f4d9cb9), TOBN(0x6cb10d56, 0xbea85509)}, + {TOBN(0x48d957b7, 0xa242da11), TOBN(0x16a4d3dd, 0x672b7268), + TOBN(0x3d7e637c, 0x8502a96b), TOBN(0x27c7032b, 0x730d463b)}}, + {{TOBN(0xbdc02b18, 0xe4136a14), TOBN(0xbacf969d, 0x678e32bf), + TOBN(0xc98d89a3, 0xdd9c3c03), TOBN(0x7b92420a, 0x23becc4f)}, + {TOBN(0xd4b41f78, 0xc64d565c), TOBN(0x9f969d00, 0x10f28295), + TOBN(0xec7f7f76, 0xb13d051a), TOBN(0x08945e1e, 0xa92da585)}}, + {{TOBN(0x55366b7d, 0x5846426f), TOBN(0xe7d09e89, 0x247d441d), + TOBN(0x510b404d, 0x736fbf48), TOBN(0x7fa003d0, 0xe784bd7d)}, + {TOBN(0x25f7614f, 0x17fd9596), TOBN(0x49e0e0a1, 0x35cb98db), + TOBN(0x2c65957b, 0x2e83a76a), TOBN(0x5d40da8d, 0xcddbe0f8)}}, + {{TOBN(0xf2b8c405, 0x050bad24), TOBN(0x8918426d, 0xc2aa4823), + TOBN(0x2aeab3dd, 0xa38365a7), TOBN(0x72031717, 0x7c91b690)}, + {TOBN(0x8b00d699, 0x60a94120), TOBN(0x478a255d, 0xe99eaeec), + TOBN(0xbf656a5f, 0x6f60aafd), TOBN(0xdfd7cb75, 0x5dee77b3)}}, + {{TOBN(0x37f68bb4, 0xa595939d), TOBN(0x03556479, 0x28740217), + TOBN(0x8e740e7c, 0x84ad7612), TOBN(0xd89bc843, 0x9044695f)}, + {TOBN(0xf7f3da5d, 0x85a9184d), TOBN(0x562563bb, 0x9fc0b074), + TOBN(0x06d2e6aa, 0xf88a888e), TOBN(0x612d8643, 0x161fbe7c)}}, + {{TOBN(0x465edba7, 0xf64085e7), TOBN(0xb230f304, 0x29aa8511), + TOBN(0x53388426, 0xcda2d188), TOBN(0x90885735, 0x4b666649)}, + {TOBN(0x6f02ff9a, 0x652f54f6), TOBN(0x65c82294, 0x5fae2bf0), + TOBN(0x7816ade0, 0x62f5eee3), TOBN(0xdcdbdf43, 0xfcc56d70)}}, + {{TOBN(0x9fb3bba3, 0x54530bb2), TOBN(0xbde3ef77, 0xcb0869ea), + TOBN(0x89bc9046, 0x0b431163), TOBN(0x4d03d7d2, 0xe4819a35)}, + {TOBN(0x33ae4f9e, 0x43b6a782), TOBN(0x216db307, 0x9c88a686), + TOBN(0x91dd88e0, 0x00ffedd9), TOBN(0xb280da9f, 0x12bd4840)}}, + {{TOBN(0x32a7cb8a, 0x1635e741), TOBN(0xfe14008a, 0x78be02a7), + TOBN(0x3fafb334, 0x1b7ae030), TOBN(0x7fd508e7, 0x5add0ce9)}, + {TOBN(0x72c83219, 0xd607ad51), TOBN(0x0f229c0a, 0x8d40964a), + TOBN(0x1be2c336, 0x1c878da2), TOBN(0xe0c96742, 0xeab2ab86)}}, + {{TOBN(0x458f8691, 0x3e538cd7), TOBN(0xa7001f6c, 0x8e08ad53), + TOBN(0x52b8c6e6, 0xbf5d15ff), TOBN(0x548234a4, 0x011215dd)}, + {TOBN(0xff5a9d2d, 0x3d5b4045), TOBN(0xb0ffeeb6, 0x4a904190), + TOBN(0x55a3aca4, 0x48607f8b), TOBN(0x8cbd665c, 0x30a0672a)}}, + {{TOBN(0x87f834e0, 0x42583068), TOBN(0x02da2aeb, 0xf3f6e683), + TOBN(0x6b763e5d, 0x05c12248), TOBN(0x7230378f, 0x65a8aefc)}, + {TOBN(0x93bd80b5, 0x71e8e5ca), TOBN(0x53ab041c, 0xb3b62524), + TOBN(0x1b860513, 0x6c9c552e), TOBN(0xe84d402c, 0xd5524e66)}}, + {{TOBN(0xa37f3573, 0xf37f5937), TOBN(0xeb0f6c7d, 0xd1e4fca5), + TOBN(0x2965a554, 0xac8ab0fc), TOBN(0x17fbf56c, 0x274676ac)}, + {TOBN(0x2e2f6bd9, 0xacf7d720), TOBN(0x41fc8f88, 0x10224766), + TOBN(0x517a14b3, 0x85d53bef), TOBN(0xdae327a5, 0x7d76a7d1)}}, + {{TOBN(0x6ad0a065, 0xc4818267), TOBN(0x33aa189b, 0x37c1bbc1), + TOBN(0x64970b52, 0x27392a92), TOBN(0x21699a1c, 0x2d1535ea)}, + {TOBN(0xcd20779c, 0xc2d7a7fd), TOBN(0xe3186059, 0x99c83cf2), + TOBN(0x9b69440b, 0x72c0b8c7), TOBN(0xa81497d7, 0x7b9e0e4d)}}, + {{TOBN(0x515d5c89, 0x1f5f82dc), TOBN(0x9a7f67d7, 0x6361079e), + TOBN(0xa8da81e3, 0x11a35330), TOBN(0xe44990c4, 0x4b18be1b)}, + {TOBN(0xc7d5ed95, 0xaf103e59), TOBN(0xece8aba7, 0x8dac9261), + TOBN(0xbe82b099, 0x9394b8d3), TOBN(0x6830f09a, 0x16adfe83)}}, + {{TOBN(0x250a29b4, 0x88172d01), TOBN(0x8b20bd65, 0xcaff9e02), + TOBN(0xb8a7661e, 0xe8a6329a), TOBN(0x4520304d, 0xd3fce920)}, + {TOBN(0xae45da1f, 0x2b47f7ef), TOBN(0xe07f5288, 0x5bffc540), + TOBN(0xf7997009, 0x3464f874), TOBN(0x2244c2cd, 0xa6fa1f38)}}, + {{TOBN(0x43c41ac1, 0x94d7d9b1), TOBN(0x5bafdd82, 0xc82e7f17), + TOBN(0xdf0614c1, 0x5fda0fca), TOBN(0x74b043a7, 0xa8ae37ad)}, + {TOBN(0x3ba6afa1, 0x9e71734c), TOBN(0x15d5437e, 0x9c450f2e), + TOBN(0x4a5883fe, 0x67e242b1), TOBN(0x5143bdc2, 0x2c1953c2)}}, + {{TOBN(0x542b8b53, 0xfc5e8920), TOBN(0x363bf9a8, 0x9a9cee08), + TOBN(0x02375f10, 0xc3486e08), TOBN(0x2037543b, 0x8c5e70d2)}, + {TOBN(0x7109bccc, 0x625640b4), TOBN(0xcbc1051e, 0x8bc62c3b), + TOBN(0xf8455fed, 0x803f26ea), TOBN(0x6badceab, 0xeb372424)}}, + {{TOBN(0xa2a9ce7c, 0x6b53f5f9), TOBN(0x64246595, 0x1b176d99), + TOBN(0xb1298d36, 0xb95c081b), TOBN(0x53505bb8, 0x1d9a9ee6)}, + {TOBN(0x3f6f9e61, 0xf2ba70b0), TOBN(0xd07e16c9, 0x8afad453), + TOBN(0x9f1694bb, 0xe7eb4a6a), TOBN(0xdfebced9, 0x3cb0bc8e)}}, + {{TOBN(0x92d3dcdc, 0x53868c8b), TOBN(0x174311a2, 0x386107a6), + TOBN(0x4109e07c, 0x689b4e64), TOBN(0x30e4587f, 0x2df3dcb6)}, + {TOBN(0x841aea31, 0x0811b3b2), TOBN(0x6144d41d, 0x0cce43ea), + TOBN(0x464c4581, 0x2a9a7803), TOBN(0xd03d371f, 0x3e158930)}}, + {{TOBN(0xc676d7f2, 0xb1f3390b), TOBN(0x9f7a1b8c, 0xa5b61272), + TOBN(0x4ebebfc9, 0xc2e127a9), TOBN(0x4602500c, 0x5dd997bf)}, + {TOBN(0x7f09771c, 0x4711230f), TOBN(0x058eb37c, 0x020f09c1), + TOBN(0xab693d4b, 0xfee5e38b), TOBN(0x9289eb1f, 0x4653cbc0)}}, + {{TOBN(0xbecf46ab, 0xd51b9cf5), TOBN(0xd2aa9c02, 0x9f0121af), + TOBN(0x36aaf7d2, 0xe90dc274), TOBN(0x909e4ea0, 0x48b95a3c)}, + {TOBN(0xe6b70496, 0x6f32dbdb), TOBN(0x672188a0, 0x8b030b3e), + TOBN(0xeeffe5b3, 0xcfb617e2), TOBN(0x87e947de, 0x7c82709e)}}, + {{TOBN(0xa44d2b39, 0x1770f5a7), TOBN(0xe4d4d791, 0x0e44eb82), + TOBN(0x42e69d1e, 0x3f69712a), TOBN(0xbf11c4d6, 0xac6a820e)}, + {TOBN(0xb5e7f3e5, 0x42c4224c), TOBN(0xd6b4e81c, 0x449d941c), + TOBN(0x5d72bd16, 0x5450e878), TOBN(0x6a61e28a, 0xee25ac54)}}, + {{TOBN(0x33272094, 0xe6f1cd95), TOBN(0x7512f30d, 0x0d18673f), + TOBN(0x32f7a4ca, 0x5afc1464), TOBN(0x2f095656, 0x6bbb977b)}, + {TOBN(0x586f47ca, 0xa8226200), TOBN(0x02c868ad, 0x1ac07369), + TOBN(0x4ef2b845, 0xc613acbe), TOBN(0x43d7563e, 0x0386054c)}}, + {{TOBN(0x54da9dc7, 0xab952578), TOBN(0xb5423df2, 0x26e84d0b), + TOBN(0xa8b64eeb, 0x9b872042), TOBN(0xac205782, 0x5990f6df)}, + {TOBN(0x4ff696eb, 0x21f4c77a), TOBN(0x1a79c3e4, 0xaab273af), + TOBN(0x29bc922e, 0x9436b3f1), TOBN(0xff807ef8, 0xd6d9a27a)}}, + {{TOBN(0x82acea3d, 0x778f22a0), TOBN(0xfb10b2e8, 0x5b5e7469), + TOBN(0xc0b16980, 0x2818ee7d), TOBN(0x011afff4, 0xc91c1a2f)}, + {TOBN(0x95a6d126, 0xad124418), TOBN(0x31c081a5, 0xe72e295f), + TOBN(0x36bb283a, 0xf2f4db75), TOBN(0xd115540f, 0x7acef462)}}, + {{TOBN(0xc7f3a8f8, 0x33f6746c), TOBN(0x21e46f65, 0xfea990ca), + TOBN(0x915fd5c5, 0xcaddb0a9), TOBN(0xbd41f016, 0x78614555)}, + {TOBN(0x346f4434, 0x426ffb58), TOBN(0x80559436, 0x14dbc204), + TOBN(0xf3dd20fe, 0x5a969b7f), TOBN(0x9d59e956, 0xe899a39a)}}, + {{TOBN(0xf1b0971c, 0x8ad4cf4b), TOBN(0x03448860, 0x2ffb8fb8), + TOBN(0xf071ac3c, 0x65340ba4), TOBN(0x408d0596, 0xb27fd758)}, + {TOBN(0xe7c78ea4, 0x98c364b0), TOBN(0xa4aac4a5, 0x051e8ab5), + TOBN(0xb9e1d560, 0x485d9002), TOBN(0x9acd518a, 0x88844455)}}, + {{TOBN(0xe4ca688f, 0xd06f56c0), TOBN(0xa48af70d, 0xdf027972), + TOBN(0x691f0f04, 0x5e9a609d), TOBN(0xa9dd82cd, 0xee61270e)}, + {TOBN(0x8903ca63, 0xa0ef18d3), TOBN(0x9fb7ee35, 0x3d6ca3bd), + TOBN(0xa7b4a09c, 0xabf47d03), TOBN(0x4cdada01, 0x1c67de8e)}}, + {{TOBN(0x52003749, 0x9355a244), TOBN(0xe77fd2b6, 0x4f2151a9), + TOBN(0x695d6cf6, 0x66b4efcb), TOBN(0xc5a0cacf, 0xda2cfe25)}, + {TOBN(0x104efe5c, 0xef811865), TOBN(0xf52813e8, 0x9ea5cc3d), + TOBN(0x855683dc, 0x40b58dbc), TOBN(0x0338ecde, 0x175fcb11)}}, + {{TOBN(0xf9a05637, 0x74921592), TOBN(0xb4f1261d, 0xb9bb9d31), + TOBN(0x551429b7, 0x4e9c5459), TOBN(0xbe182e6f, 0x6ea71f53)}, + {TOBN(0xd3a3b07c, 0xdfc50573), TOBN(0x9ba1afda, 0x62be8d44), + TOBN(0x9bcfd2cb, 0x52ab65d3), TOBN(0xdf11d547, 0xa9571802)}}, + {{TOBN(0x099403ee, 0x02a2404a), TOBN(0x497406f4, 0x21088a71), + TOBN(0x99479409, 0x5004ae71), TOBN(0xbdb42078, 0xa812c362)}, + {TOBN(0x2b72a30f, 0xd8828442), TOBN(0x283add27, 0xfcb5ed1c), + TOBN(0xf7c0e200, 0x66a40015), TOBN(0x3e3be641, 0x08b295ef)}}, + {{TOBN(0xac127dc1, 0xe038a675), TOBN(0x729deff3, 0x8c5c6320), + TOBN(0xb7df8fd4, 0xa90d2c53), TOBN(0x9b74b0ec, 0x681e7cd3)}, + {TOBN(0x5cb5a623, 0xdab407e5), TOBN(0xcdbd3615, 0x76b340c6), + TOBN(0xa184415a, 0x7d28392c), TOBN(0xc184c1d8, 0xe96f7830)}}, + {{TOBN(0xc3204f19, 0x81d3a80f), TOBN(0xfde0c841, 0xc8e02432), + TOBN(0x78203b3e, 0x8149e0c1), TOBN(0x5904bdbb, 0x08053a73)}, + {TOBN(0x30fc1dd1, 0x101b6805), TOBN(0x43c223bc, 0x49aa6d49), + TOBN(0x9ed67141, 0x7a174087), TOBN(0x311469a0, 0xd5997008)}}, + {{TOBN(0xb189b684, 0x5e43fc61), TOBN(0xf3282375, 0xe0d3ab57), + TOBN(0x4fa34b67, 0xb1181da8), TOBN(0x621ed0b2, 0x99ee52b8)}, + {TOBN(0x9b178de1, 0xad990676), TOBN(0xd51de67b, 0x56d54065), + TOBN(0x2a2c27c4, 0x7538c201), TOBN(0x33856ec8, 0x38a40f5c)}}, + {{TOBN(0x2522fc15, 0xbe6cdcde), TOBN(0x1e603f33, 0x9f0c6f89), + TOBN(0x7994edc3, 0x103e30a6), TOBN(0x033a00db, 0x220c853e)}, + {TOBN(0xd3cfa409, 0xf7bb7fd7), TOBN(0x70f8781e, 0x462d18f6), + TOBN(0xbbd82980, 0x687fe295), TOBN(0x6eef4c32, 0x595669f3)}}, + {{TOBN(0x86a9303b, 0x2f7e85c3), TOBN(0x5fce4621, 0x71988f9b), + TOBN(0x5b935bf6, 0xc138acb5), TOBN(0x30ea7d67, 0x25661212)}, + {TOBN(0xef1eb5f4, 0xe51ab9a2), TOBN(0x0587c98a, 0xae067c78), + TOBN(0xb3ce1b3c, 0x77ca9ca6), TOBN(0x2a553d4d, 0x54b5f057)}}, + {{TOBN(0xc7898236, 0x4da29ec2), TOBN(0xdbdd5d13, 0xb9c57316), + TOBN(0xc57d6e6b, 0x2cd80d47), TOBN(0x80b460cf, 0xfe9e7391)}, + {TOBN(0x98648cab, 0xf963c31e), TOBN(0x67f9f633, 0xcc4d32fd), + TOBN(0x0af42a9d, 0xfdf7c687), TOBN(0x55f292a3, 0x0b015ea7)}}, + {{TOBN(0x89e468b2, 0xcd21ab3d), TOBN(0xe504f022, 0xc393d392), + TOBN(0xab21e1d4, 0xa5013af9), TOBN(0xe3283f78, 0xc2c28acb)}, + {TOBN(0xf38b35f6, 0x226bf99f), TOBN(0xe8354274, 0x0e291e69), + TOBN(0x61673a15, 0xb20c162d), TOBN(0xc101dc75, 0xb04fbdbe)}}, + {{TOBN(0x8323b4c2, 0x255bd617), TOBN(0x6c969693, 0x6c2a9154), + TOBN(0xc6e65860, 0x62679387), TOBN(0x8e01db0c, 0xb8c88e23)}, + {TOBN(0x33c42873, 0x893a5559), TOBN(0x7630f04b, 0x47a3e149), + TOBN(0xb5d80805, 0xddcf35f8), TOBN(0x582ca080, 0x77dfe732)}}, + {{TOBN(0x2c7156e1, 0x0b1894a0), TOBN(0x92034001, 0xd81c68c0), + TOBN(0xed225d00, 0xc8b115b5), TOBN(0x237f9c22, 0x83b907f2)}, + {TOBN(0x0ea2f32f, 0x4470e2c0), TOBN(0xb725f7c1, 0x58be4e95), + TOBN(0x0f1dcafa, 0xb1ae5463), TOBN(0x59ed5187, 0x1ba2fc04)}}, + {{TOBN(0xf6e0f316, 0xd0115d4d), TOBN(0x5180b12f, 0xd3691599), + TOBN(0x157e32c9, 0x527f0a41), TOBN(0x7b0b081d, 0xa8e0ecc0)}, + {TOBN(0x6dbaaa8a, 0xbf4f0dd0), TOBN(0x99b289c7, 0x4d252696), + TOBN(0x79b7755e, 0xdbf864fe), TOBN(0x6974e2b1, 0x76cad3ab)}}, + {{TOBN(0x35dbbee2, 0x06ddd657), TOBN(0xe7cbdd11, 0x2ff3a96d), + TOBN(0x88381968, 0x076be758), TOBN(0x2d737e72, 0x08c91f5d)}, + {TOBN(0x5f83ab62, 0x86ec3776), TOBN(0x98aa649d, 0x945fa7a1), + TOBN(0xf477ec37, 0x72ef0933), TOBN(0x66f52b1e, 0x098c17b1)}}, + {{TOBN(0x9eec58fb, 0xd803738b), TOBN(0x91aaade7, 0xe4e86aa4), + TOBN(0x6b1ae617, 0xa5b51492), TOBN(0x63272121, 0xbbc45974)}, + {TOBN(0x7e0e28f0, 0x862c5129), TOBN(0x0a8f79a9, 0x3321a4a0), + TOBN(0xe26d1664, 0x5041c88f), TOBN(0x0571b805, 0x53233e3a)}}, + {{TOBN(0xd1b0ccde, 0xc9520711), TOBN(0x55a9e4ed, 0x3c8b84bf), + TOBN(0x9426bd39, 0xa1fef314), TOBN(0x4f5f638e, 0x6eb93f2b)}, + {TOBN(0xba2a1ed3, 0x2bf9341b), TOBN(0xd63c1321, 0x4d42d5a9), + TOBN(0xd2964a89, 0x316dc7c5), TOBN(0xd1759606, 0xca511851)}}, + {{TOBN(0xd8a9201f, 0xf9e6ed35), TOBN(0xb7b5ee45, 0x6736925a), + TOBN(0x0a83fbbc, 0x99581af7), TOBN(0x3076bc40, 0x64eeb051)}, + {TOBN(0x5511c98c, 0x02dec312), TOBN(0x270de898, 0x238dcb78), + TOBN(0x2cf4cf9c, 0x539c08c9), TOBN(0xa70cb65e, 0x38d3b06e)}}, + {{TOBN(0xb12ec10e, 0xcfe57bbd), TOBN(0x82c7b656, 0x35a0c2b5), + TOBN(0xddc7d5cd, 0x161c67bd), TOBN(0xe32e8985, 0xae3a32cc)}, + {TOBN(0x7aba9444, 0xd11a5529), TOBN(0xe964ed02, 0x2427fa1a), + TOBN(0x1528392d, 0x24a1770a), TOBN(0xa152ce2c, 0x12c72fcd)}}, + {{TOBN(0x714553a4, 0x8ec07649), TOBN(0x18b4c290, 0x459dd453), + TOBN(0xea32b714, 0x7b64b110), TOBN(0xb871bfa5, 0x2e6f07a2)}, + {TOBN(0xb67112e5, 0x9e2e3c9b), TOBN(0xfbf250e5, 0x44aa90f6), + TOBN(0xf77aedb8, 0xbd539006), TOBN(0x3b0cdf9a, 0xd172a66f)}}, + {{TOBN(0xedf69fea, 0xf8c51187), TOBN(0x05bb67ec, 0x741e4da7), + TOBN(0x47df0f32, 0x08114345), TOBN(0x56facb07, 0xbb9792b1)}, + {TOBN(0xf3e007e9, 0x8f6229e4), TOBN(0x62d103f4, 0x526fba0f), + TOBN(0x4f33bef7, 0xb0339d79), TOBN(0x9841357b, 0xb59bfec1)}}, + {{TOBN(0xfa8dbb59, 0xc34e6705), TOBN(0xc3c7180b, 0x7fdaa84c), + TOBN(0xf95872fc, 0xa4108537), TOBN(0x8750cc3b, 0x932a3e5a)}, + {TOBN(0xb61cc69d, 0xb7275d7d), TOBN(0xffa0168b, 0x2e59b2e9), + TOBN(0xca032abc, 0x6ecbb493), TOBN(0x1d86dbd3, 0x2c9082d8)}}, + {{TOBN(0xae1e0b67, 0xe28ef5ba), TOBN(0x2c9a4699, 0xcb18e169), + TOBN(0x0ecd0e33, 0x1e6bbd20), TOBN(0x571b360e, 0xaf5e81d2)}, + {TOBN(0xcd9fea58, 0x101c1d45), TOBN(0x6651788e, 0x18880452), + TOBN(0xa9972635, 0x1f8dd446), TOBN(0x44bed022, 0xe37281d0)}}, + {{TOBN(0x094b2b2d, 0x33da525d), TOBN(0xf193678e, 0x13144fd8), + TOBN(0xb8ab5ba4, 0xf4c1061d), TOBN(0x4343b5fa, 0xdccbe0f4)}, + {TOBN(0xa8702371, 0x63812713), TOBN(0x47bf6d2d, 0xf7611d93), + TOBN(0x46729b8c, 0xbd21e1d7), TOBN(0x7484d4e0, 0xd629e77d)}}, + {{TOBN(0x830e6eea, 0x60dbac1f), TOBN(0x23d8c484, 0xda06a2f7), + TOBN(0x896714b0, 0x50ca535b), TOBN(0xdc8d3644, 0xebd97a9b)}, + {TOBN(0x106ef9fa, 0xb12177b4), TOBN(0xf79bf464, 0x534d5d9c), + TOBN(0x2537a349, 0xa6ab360b), TOBN(0xc7c54253, 0xa00c744f)}}, + {{TOBN(0xb3c7a047, 0xe5911a76), TOBN(0x61ffa5c8, 0x647f1ee7), + TOBN(0x15aed36f, 0x8f56ab42), TOBN(0x6a0d41b0, 0xa3ff9ac9)}, + {TOBN(0x68f469f5, 0xcc30d357), TOBN(0xbe9adf81, 0x6b72be96), + TOBN(0x1cd926fe, 0x903ad461), TOBN(0x7e89e38f, 0xcaca441b)}}, + {{TOBN(0xf0f82de5, 0xfacf69d4), TOBN(0x363b7e76, 0x4775344c), + TOBN(0x6894f312, 0xb2e36d04), TOBN(0x3c6cb4fe, 0x11d1c9a5)}, + {TOBN(0x85d9c339, 0x4008e1f2), TOBN(0x5e9a85ea, 0x249f326c), + TOBN(0xdc35c60a, 0x678c5e06), TOBN(0xc08b944f, 0x9f86fba9)}}, + {{TOBN(0xde40c02c, 0x89f71f0f), TOBN(0xad8f3e31, 0xff3da3c0), + TOBN(0x3ea5096b, 0x42125ded), TOBN(0x13879cbf, 0xa7379183)}, + {TOBN(0x6f4714a5, 0x6b306a0b), TOBN(0x359c2ea6, 0x67646c5e), + TOBN(0xfacf8943, 0x07726368), TOBN(0x07a58935, 0x65ff431e)}}, + {{TOBN(0x24d661d1, 0x68754ab0), TOBN(0x801fce1d, 0x6f429a76), + TOBN(0xc068a85f, 0xa58ce769), TOBN(0xedc35c54, 0x5d5eca2b)}, + {TOBN(0xea31276f, 0xa3f660d1), TOBN(0xa0184ebe, 0xb8fc7167), + TOBN(0x0f20f21a, 0x1d8db0ae), TOBN(0xd96d095f, 0x56c35e12)}}, + {{TOBN(0xedf402b5, 0xf8c2a25b), TOBN(0x1bb772b9, 0x059204b6), + TOBN(0x50cbeae2, 0x19b4e34c), TOBN(0x93109d80, 0x3fa0845a)}, + {TOBN(0x54f7ccf7, 0x8ef59fb5), TOBN(0x3b438fe2, 0x88070963), + TOBN(0x9e28c659, 0x31f3ba9b), TOBN(0x9cc31b46, 0xead9da92)}}, + {{TOBN(0x3c2f0ba9, 0xb733aa5f), TOBN(0xdece47cb, 0xf05af235), + TOBN(0xf8e3f715, 0xa2ac82a5), TOBN(0xc97ba641, 0x2203f18a)}, + {TOBN(0xc3af5504, 0x09c11060), TOBN(0x56ea2c05, 0x46af512d), + TOBN(0xfac28daf, 0xf3f28146), TOBN(0x87fab43a, 0x959ef494)}}}, + {{{TOBN(0x09891641, 0xd4c5105f), TOBN(0x1ae80f8e, 0x6d7fbd65), + TOBN(0x9d67225f, 0xbee6bdb0), TOBN(0x3b433b59, 0x7fc4d860)}, + {TOBN(0x44e66db6, 0x93e85638), TOBN(0xf7b59252, 0xe3e9862f), + TOBN(0xdb785157, 0x665c32ec), TOBN(0x702fefd7, 0xae362f50)}}, + {{TOBN(0x3754475d, 0x0fefb0c3), TOBN(0xd48fb56b, 0x46d7c35d), + TOBN(0xa070b633, 0x363798a4), TOBN(0xae89f3d2, 0x8fdb98e6)}, + {TOBN(0x970b89c8, 0x6363d14c), TOBN(0x89817521, 0x67abd27d), + TOBN(0x9bf7d474, 0x44d5a021), TOBN(0xb3083baf, 0xcac72aee)}}, + {{TOBN(0x389741de, 0xbe949a44), TOBN(0x638e9388, 0x546a4fa5), + TOBN(0x3fe6419c, 0xa0047bdc), TOBN(0x7047f648, 0xaaea57ca)}, + {TOBN(0x54e48a90, 0x41fbab17), TOBN(0xda8e0b28, 0x576bdba2), + TOBN(0xe807eebc, 0xc72afddc), TOBN(0x07d3336d, 0xf42577bf)}}, + {{TOBN(0x62a8c244, 0xbfe20925), TOBN(0x91c19ac3, 0x8fdce867), + TOBN(0x5a96a5d5, 0xdd387063), TOBN(0x61d587d4, 0x21d324f6)}, + {TOBN(0xe87673a2, 0xa37173ea), TOBN(0x23848008, 0x53778b65), + TOBN(0x10f8441e, 0x05bab43e), TOBN(0xfa11fe12, 0x4621efbe)}}, + {{TOBN(0x047b772e, 0x81685d7b), TOBN(0x23f27d81, 0xbf34a976), + TOBN(0xc27608e2, 0x915f48ef), TOBN(0x3b0b43fa, 0xa521d5c3)}, + {TOBN(0x7613fb26, 0x63ca7284), TOBN(0x7f5729b4, 0x1d4db837), + TOBN(0x87b14898, 0x583b526b), TOBN(0x00b732a6, 0xbbadd3d1)}}, + {{TOBN(0x8e02f426, 0x2048e396), TOBN(0x436b50b6, 0x383d9de4), + TOBN(0xf78d3481, 0x471e85ad), TOBN(0x8b01ea6a, 0xd005c8d6)}, + {TOBN(0xd3c7afee, 0x97015c07), TOBN(0x46cdf1a9, 0x4e3ba2ae), + TOBN(0x7a42e501, 0x83d3a1d2), TOBN(0xd54b5268, 0xb541dff4)}}, + {{TOBN(0x3f24cf30, 0x4e23e9bc), TOBN(0x4387f816, 0x126e3624), + TOBN(0x26a46a03, 0x3b0b6d61), TOBN(0xaf1bc845, 0x8b2d777c)}, + {TOBN(0x25c401ba, 0x527de79c), TOBN(0x0e1346d4, 0x4261bbb6), + TOBN(0x4b96c44b, 0x287b4bc7), TOBN(0x658493c7, 0x5254562f)}}, + {{TOBN(0x23f949fe, 0xb8a24a20), TOBN(0x17ebfed1, 0xf52ca53f), + TOBN(0x9b691bbe, 0xbcfb4853), TOBN(0x5617ff6b, 0x6278a05d)}, + {TOBN(0x241b34c5, 0xe3c99ebd), TOBN(0xfc64242e, 0x1784156a), + TOBN(0x4206482f, 0x695d67df), TOBN(0xb967ce0e, 0xee27c011)}}, + {{TOBN(0x65db3751, 0x21c80b5d), TOBN(0x2e7a563c, 0xa31ecca0), + TOBN(0xe56ffc4e, 0x5238a07e), TOBN(0x3d6c2966, 0x32ced854)}, + {TOBN(0xe99d7d1a, 0xaf70b885), TOBN(0xafc3bad9, 0x2d686459), + TOBN(0x9c78bf46, 0x0cc8ba5b), TOBN(0x5a439519, 0x18955aa3)}}, + {{TOBN(0xf8b517a8, 0x5fe4e314), TOBN(0xe60234d0, 0xfcb8906f), + TOBN(0xffe542ac, 0xf2061b23), TOBN(0x287e191f, 0x6b4cb59c)}, + {TOBN(0x21857ddc, 0x09d877d8), TOBN(0x1c23478c, 0x14678941), + TOBN(0xbbf0c056, 0xb6e05ea4), TOBN(0x82da4b53, 0xb01594fe)}}, + {{TOBN(0xf7526791, 0xfadb8608), TOBN(0x049e832d, 0x7b74cdf6), + TOBN(0xa43581cc, 0xc2b90a34), TOBN(0x73639eb8, 0x9360b10c)}, + {TOBN(0x4fba331f, 0xe1e4a71b), TOBN(0x6ffd6b93, 0x8072f919), + TOBN(0x6e53271c, 0x65679032), TOBN(0x67206444, 0xf14272ce)}}, + {{TOBN(0xc0f734a3, 0xb2335834), TOBN(0x9526205a, 0x90ef6860), + TOBN(0xcb8be717, 0x04e2bb0d), TOBN(0x2418871e, 0x02f383fa)}, + {TOBN(0xd7177681, 0x4082c157), TOBN(0xcc914ad0, 0x29c20073), + TOBN(0xf186c1eb, 0xe587e728), TOBN(0x6fdb3c22, 0x61bcd5fd)}}, + {{TOBN(0x30d014a6, 0xf2f9f8e9), TOBN(0x963ece23, 0x4fec49d2), + TOBN(0x862025c5, 0x9605a8d9), TOBN(0x39874445, 0x19f8929a)}, + {TOBN(0x01b6ff65, 0x12bf476a), TOBN(0x598a64d8, 0x09cf7d91), + TOBN(0xd7ec7749, 0x93be56ca), TOBN(0x10899785, 0xcbb33615)}}, + {{TOBN(0xb8a092fd, 0x02eee3ad), TOBN(0xa86b3d35, 0x30145270), + TOBN(0x323d98c6, 0x8512b675), TOBN(0x4b8bc785, 0x62ebb40f)}, + {TOBN(0x7d301f54, 0x413f9cde), TOBN(0xa5e4fb4f, 0x2bab5664), + TOBN(0x1d2b252d, 0x1cbfec23), TOBN(0xfcd576bb, 0xe177120d)}}, + {{TOBN(0x04427d3e, 0x83731a34), TOBN(0x2bb9028e, 0xed836e8e), + TOBN(0xb36acff8, 0xb612ca7c), TOBN(0xb88fe5ef, 0xd3d9c73a)}, + {TOBN(0xbe2a6bc6, 0xedea4eb3), TOBN(0x43b93133, 0x488eec77), + TOBN(0xf41ff566, 0xb17106e1), TOBN(0x469e9172, 0x654efa32)}}, + {{TOBN(0xb4480f04, 0x41c23fa3), TOBN(0xb4712eb0, 0xc1989a2e), + TOBN(0x3ccbba0f, 0x93a29ca7), TOBN(0x6e205c14, 0xd619428c)}, + {TOBN(0x90db7957, 0xb3641686), TOBN(0x0432691d, 0x45ac8b4e), + TOBN(0x07a759ac, 0xf64e0350), TOBN(0x0514d89c, 0x9c972517)}}, + {{TOBN(0x1701147f, 0xa8e67fc3), TOBN(0x9e2e0b8b, 0xab2085be), + TOBN(0xd5651824, 0xac284e57), TOBN(0x890d4325, 0x74893664)}, + {TOBN(0x8a7c5e6e, 0xc55e68a3), TOBN(0xbf12e90b, 0x4339c85a), + TOBN(0x31846b85, 0xf922b655), TOBN(0x9a54ce4d, 0x0bf4d700)}}, + {{TOBN(0xd7f4e83a, 0xf1a14295), TOBN(0x916f955c, 0xb285d4f9), + TOBN(0xe57bb0e0, 0x99ffdaba), TOBN(0x28a43034, 0xeab0d152)}, + {TOBN(0x0a36ffa2, 0xb8a9cef8), TOBN(0x5517407e, 0xb9ec051a), + TOBN(0x9c796096, 0xea68e672), TOBN(0x853db5fb, 0xfb3c77fb)}}, + {{TOBN(0x21474ba9, 0xe864a51a), TOBN(0x6c267699, 0x6e8a1b8b), + TOBN(0x7c823626, 0x94120a28), TOBN(0xe61e9a48, 0x8383a5db)}, + {TOBN(0x7dd75003, 0x9f84216d), TOBN(0xab020d07, 0xad43cd85), + TOBN(0x9437ae48, 0xda12c659), TOBN(0x6449c2eb, 0xe65452ad)}}, + {{TOBN(0xcc7c4c1c, 0x2cf9d7c1), TOBN(0x1320886a, 0xee95e5ab), + TOBN(0xbb7b9056, 0xbeae170c), TOBN(0xc8a5b250, 0xdbc0d662)}, + {TOBN(0x4ed81432, 0xc11d2303), TOBN(0x7da66912, 0x1f03769f), + TOBN(0x3ac7a5fd, 0x84539828), TOBN(0x14dada94, 0x3bccdd02)}}, + {{TOBN(0x8b84c321, 0x7ef6b0d1), TOBN(0x52a9477a, 0x7c933f22), + TOBN(0x5ef6728a, 0xfd440b82), TOBN(0x5c3bd859, 0x6ce4bd5e)}, + {TOBN(0x918b80f5, 0xf22c2d3e), TOBN(0x368d5040, 0xb7bb6cc5), + TOBN(0xb66142a1, 0x2695a11c), TOBN(0x60ac583a, 0xeb19ea70)}}, + {{TOBN(0x317cbb98, 0x0eab2437), TOBN(0x8cc08c55, 0x5e2654c8), + TOBN(0xfe2d6520, 0xe6d8307f), TOBN(0xe9f147f3, 0x57428993)}, + {TOBN(0x5f9c7d14, 0xd2fd6cf1), TOBN(0xa3ecd064, 0x2d4fcbb0), + TOBN(0xad83fef0, 0x8e7341f7), TOBN(0x643f23a0, 0x3a63115c)}}, + {{TOBN(0xd38a78ab, 0xe65ab743), TOBN(0xbf7c75b1, 0x35edc89c), + TOBN(0x3dd8752e, 0x530df568), TOBN(0xf85c4a76, 0xe308c682)}, + {TOBN(0x4c9955b2, 0xe68acf37), TOBN(0xa544df3d, 0xab32af85), + TOBN(0x4b8ec3f5, 0xa25cf493), TOBN(0x4d8f2764, 0x1a622feb)}}, + {{TOBN(0x7bb4f7aa, 0xf0dcbc49), TOBN(0x7de551f9, 0x70bbb45b), + TOBN(0xcfd0f3e4, 0x9f2ca2e5), TOBN(0xece58709, 0x1f5c76ef)}, + {TOBN(0x32920edd, 0x167d79ae), TOBN(0x039df8a2, 0xfa7d7ec1), + TOBN(0xf46206c0, 0xbb30af91), TOBN(0x1ff5e2f5, 0x22676b59)}}, + {{TOBN(0x11f4a039, 0x6ea51d66), TOBN(0x506c1445, 0x807d7a26), + TOBN(0x60da5705, 0x755a9b24), TOBN(0x8fc8cc32, 0x1f1a319e)}, + {TOBN(0x83642d4d, 0x9433d67d), TOBN(0x7fa5cb8f, 0x6a7dd296), + TOBN(0x576591db, 0x9b7bde07), TOBN(0x13173d25, 0x419716fb)}}, + {{TOBN(0xea30599d, 0xd5b340ff), TOBN(0xfc6b5297, 0xb0fe76c5), + TOBN(0x1c6968c8, 0xab8f5adc), TOBN(0xf723c7f5, 0x901c928d)}, + {TOBN(0x4203c321, 0x9773d402), TOBN(0xdf7c6aa3, 0x1b51dd47), + TOBN(0x3d49e37a, 0x552be23c), TOBN(0x57febee8, 0x0b5a6e87)}}, + {{TOBN(0xc5ecbee4, 0x7bd8e739), TOBN(0x79d44994, 0xae63bf75), + TOBN(0x168bd00f, 0x38fb8923), TOBN(0x75d48ee4, 0xd0533130)}, + {TOBN(0x554f77aa, 0xdb5cdf33), TOBN(0x3396e896, 0x3c696769), + TOBN(0x2fdddbf2, 0xd3fd674e), TOBN(0xbbb8f6ee, 0x99d0e3e5)}}, + {{TOBN(0x51b90651, 0xcbae2f70), TOBN(0xefc4bc05, 0x93aaa8eb), + TOBN(0x8ecd8689, 0xdd1df499), TOBN(0x1aee99a8, 0x22f367a5)}, + {TOBN(0x95d485b9, 0xae8274c5), TOBN(0x6c14d445, 0x7d30b39c), + TOBN(0xbafea90b, 0xbcc1ef81), TOBN(0x7c5f317a, 0xa459a2ed)}}, + {{TOBN(0x01211075, 0x4ef44227), TOBN(0xa17bed6e, 0xdc20f496), + TOBN(0x0cdfe424, 0x819853cd), TOBN(0x13793298, 0xf71e2ce7)}, + {TOBN(0x3c1f3078, 0xdbbe307b), TOBN(0x6dd1c20e, 0x76ee9936), + TOBN(0x23ee4b57, 0x423caa20), TOBN(0x4ac3793b, 0x8efb840e)}}, + {{TOBN(0x934438eb, 0xed1f8ca0), TOBN(0x3e546658, 0x4ebb25a2), + TOBN(0xc415af0e, 0xc069896f), TOBN(0xc13eddb0, 0x9a5aa43d)}, + {TOBN(0x7a04204f, 0xd49eb8f6), TOBN(0xd0d5bdfc, 0xd74f1670), + TOBN(0x3697e286, 0x56fc0558), TOBN(0x10207371, 0x01cebade)}}, + {{TOBN(0x5f87e690, 0x0647a82b), TOBN(0x908e0ed4, 0x8f40054f), + TOBN(0xa9f633d4, 0x79853803), TOBN(0x8ed13c9a, 0x4a28b252)}, + {TOBN(0x3e2ef676, 0x1f460f64), TOBN(0x53930b9b, 0x36d06336), + TOBN(0x347073ac, 0x8fc4979b), TOBN(0x84380e0e, 0x5ecd5597)}}, + {{TOBN(0xe3b22c6b, 0xc4fe3c39), TOBN(0xba4a8153, 0x6c7bebdf), + TOBN(0xf23ab6b7, 0x25693459), TOBN(0x53bc3770, 0x14922b11)}, + {TOBN(0x4645c8ab, 0x5afc60db), TOBN(0xaa022355, 0x20b9f2a3), + TOBN(0x52a2954c, 0xce0fc507), TOBN(0x8c2731bb, 0x7ce1c2e7)}}, + {{TOBN(0xf39608ab, 0x18a0339d), TOBN(0xac7a658d, 0x3735436c), + TOBN(0xb22c2b07, 0xcd992b4f), TOBN(0x4e83daec, 0xf40dcfd4)}, + {TOBN(0x8a34c7be, 0x2f39ea3e), TOBN(0xef0c005f, 0xb0a56d2e), + TOBN(0x62731f6a, 0x6edd8038), TOBN(0x5721d740, 0x4e3cb075)}}, + {{TOBN(0x1ea41511, 0xfbeeee1b), TOBN(0xd1ef5e73, 0xef1d0c05), + TOBN(0x42feefd1, 0x73c07d35), TOBN(0xe530a00a, 0x8a329493)}, + {TOBN(0x5d55b7fe, 0xf15ebfb0), TOBN(0x549de03c, 0xd322491a), + TOBN(0xf7b5f602, 0x745b3237), TOBN(0x3632a3a2, 0x1ab6e2b6)}}, + {{TOBN(0x0d3bba89, 0x0ef59f78), TOBN(0x0dfc6443, 0xc9e52b9a), + TOBN(0x1dc79699, 0x72631447), TOBN(0xef033917, 0xb3be20b1)}, + {TOBN(0x0c92735d, 0xb1383948), TOBN(0xc1fc29a2, 0xc0dd7d7d), + TOBN(0x6485b697, 0x403ed068), TOBN(0x13bfaab3, 0xaac93bdc)}}, + {{TOBN(0x410dc6a9, 0x0deeaf52), TOBN(0xb003fb02, 0x4c641c15), + TOBN(0x1384978c, 0x5bc504c4), TOBN(0x37640487, 0x864a6a77)}, + {TOBN(0x05991bc6, 0x222a77da), TOBN(0x62260a57, 0x5e47eb11), + TOBN(0xc7af6613, 0xf21b432c), TOBN(0x22f3acc9, 0xab4953e9)}}, + {{TOBN(0x52934922, 0x8e41d155), TOBN(0x4d024568, 0x3ac059ef), + TOBN(0xb0201755, 0x4d884411), TOBN(0xce8055cf, 0xa59a178f)}, + {TOBN(0xcd77d1af, 0xf6204549), TOBN(0xa0a00a3e, 0xc7066759), + TOBN(0x471071ef, 0x0272c229), TOBN(0x009bcf6b, 0xd3c4b6b0)}}, + {{TOBN(0x2a2638a8, 0x22305177), TOBN(0xd51d59df, 0x41645bbf), + TOBN(0xa81142fd, 0xc0a7a3c0), TOBN(0xa17eca6d, 0x4c7063ee)}, + {TOBN(0x0bb887ed, 0x60d9dcec), TOBN(0xd6d28e51, 0x20ad2455), + TOBN(0xebed6308, 0xa67102ba), TOBN(0x042c3114, 0x8bffa408)}}, + {{TOBN(0xfd099ac5, 0x8aa68e30), TOBN(0x7a6a3d7c, 0x1483513e), + TOBN(0xffcc6b75, 0xba2d8f0c), TOBN(0x54dacf96, 0x1e78b954)}, + {TOBN(0xf645696f, 0xa4a9af89), TOBN(0x3a411940, 0x06ac98ec), + TOBN(0x41b8b3f6, 0x22a67a20), TOBN(0x2d0b1e0f, 0x99dec626)}}, + {{TOBN(0x27c89192, 0x40be34e8), TOBN(0xc7162b37, 0x91907f35), + TOBN(0x90188ec1, 0xa956702b), TOBN(0xca132f7d, 0xdf93769c)}, + {TOBN(0x3ece44f9, 0x0e2025b4), TOBN(0x67aaec69, 0x0c62f14c), + TOBN(0xad741418, 0x22e3cc11), TOBN(0xcf9b75c3, 0x7ff9a50e)}}, + {{TOBN(0x02fa2b16, 0x4d348272), TOBN(0xbd99d61a, 0x9959d56d), + TOBN(0xbc4f19db, 0x18762916), TOBN(0xcc7cce50, 0x49c1ac80)}, + {TOBN(0x4d59ebaa, 0xd846bd83), TOBN(0x8775a9dc, 0xa9202849), + TOBN(0x07ec4ae1, 0x6e1f4ca9), TOBN(0x27eb5875, 0xba893f11)}}, + {{TOBN(0x00284d51, 0x662cc565), TOBN(0x82353a6b, 0x0db4138d), + TOBN(0xd9c7aaaa, 0xaa32a594), TOBN(0xf5528b5e, 0xa5669c47)}, + {TOBN(0xf3220231, 0x2f23c5ff), TOBN(0xe3e8147a, 0x6affa3a1), + TOBN(0xfb423d5c, 0x202ddda0), TOBN(0x3d6414ac, 0x6b871bd4)}}, + {{TOBN(0x586f82e1, 0xa51a168a), TOBN(0xb712c671, 0x48ae5448), + TOBN(0x9a2e4bd1, 0x76233eb8), TOBN(0x0188223a, 0x78811ca9)}, + {TOBN(0x553c5e21, 0xf7c18de1), TOBN(0x7682e451, 0xb27bb286), + TOBN(0x3ed036b3, 0x0e51e929), TOBN(0xf487211b, 0xec9cb34f)}}, + {{TOBN(0x0d094277, 0x0c24efc8), TOBN(0x0349fd04, 0xbef737a4), + TOBN(0x6d1c9dd2, 0x514cdd28), TOBN(0x29c135ff, 0x30da9521)}, + {TOBN(0xea6e4508, 0xf78b0b6f), TOBN(0x176f5dd2, 0x678c143c), + TOBN(0x08148418, 0x4be21e65), TOBN(0x27f7525c, 0xe7df38c4)}}, + {{TOBN(0x1fb70e09, 0x748ab1a4), TOBN(0x9cba50a0, 0x5efe4433), + TOBN(0x7846c7a6, 0x15f75af2), TOBN(0x2a7c2c57, 0x5ee73ea8)}, + {TOBN(0x42e566a4, 0x3f0a449a), TOBN(0x45474c3b, 0xad90fc3d), + TOBN(0x7447be3d, 0x8b61d057), TOBN(0x3e9d1cf1, 0x3a4ec092)}}, + {{TOBN(0x1603e453, 0xf380a6e6), TOBN(0x0b86e431, 0x9b1437c2), + TOBN(0x7a4173f2, 0xef29610a), TOBN(0x8fa729a7, 0xf03d57f7)}, + {TOBN(0x3e186f6e, 0x6c9c217e), TOBN(0xbe1d3079, 0x91919524), + TOBN(0x92a62a70, 0x153d4fb1), TOBN(0x32ed3e34, 0xd68c2f71)}}, + {{TOBN(0xd785027f, 0x9eb1a8b7), TOBN(0xbc37eb77, 0xc5b22fe8), + TOBN(0x466b34f0, 0xb9d6a191), TOBN(0x008a89af, 0x9a05f816)}, + {TOBN(0x19b028fb, 0x7d42c10a), TOBN(0x7fe8c92f, 0x49b3f6b8), + TOBN(0x58907cc0, 0xa5a0ade3), TOBN(0xb3154f51, 0x559d1a7c)}}, + {{TOBN(0x5066efb6, 0xd9790ed6), TOBN(0xa77a0cbc, 0xa6aa793b), + TOBN(0x1a915f3c, 0x223e042e), TOBN(0x1c5def04, 0x69c5874b)}, + {TOBN(0x0e830078, 0x73b6c1da), TOBN(0x55cf85d2, 0xfcd8557a), + TOBN(0x0f7c7c76, 0x0460f3b1), TOBN(0x87052acb, 0x46e58063)}}, + {{TOBN(0x09212b80, 0x907eae66), TOBN(0x3cb068e0, 0x4d721c89), + TOBN(0xa87941ae, 0xdd45ac1c), TOBN(0xde8d5c0d, 0x0daa0dbb)}, + {TOBN(0xda421fdc, 0xe3502e6e), TOBN(0xc8944201, 0x4d89a084), + TOBN(0x7307ba5e, 0xf0c24bfb), TOBN(0xda212beb, 0x20bde0ef)}}, + {{TOBN(0xea2da24b, 0xf82ce682), TOBN(0x058d3816, 0x07f71fe4), + TOBN(0x35a02462, 0x5ffad8de), TOBN(0xcd7b05dc, 0xaadcefab)}, + {TOBN(0xd442f8ed, 0x1d9f54ec), TOBN(0x8be3d618, 0xb2d3b5ca), + TOBN(0xe2220ed0, 0xe06b2ce2), TOBN(0x82699a5f, 0x1b0da4c0)}}, + {{TOBN(0x3ff106f5, 0x71c0c3a7), TOBN(0x8f580f5a, 0x0d34180c), + TOBN(0x4ebb120e, 0x22d7d375), TOBN(0x5e5782cc, 0xe9513675)}, + {TOBN(0x2275580c, 0x99c82a70), TOBN(0xe8359fbf, 0x15ea8c4c), + TOBN(0x53b48db8, 0x7b415e70), TOBN(0xaacf2240, 0x100c6014)}}, + {{TOBN(0x9faaccf5, 0xe4652f1d), TOBN(0xbd6fdd2a, 0xd56157b2), + TOBN(0xa4f4fb1f, 0x6261ec50), TOBN(0x244e55ad, 0x476bcd52)}, + {TOBN(0x881c9305, 0x047d320b), TOBN(0x1ca983d5, 0x6181263f), + TOBN(0x354e9a44, 0x278fb8ee), TOBN(0xad2dbc0f, 0x396e4964)}}, + {{TOBN(0x723f3aa2, 0x9268b3de), TOBN(0x0d1ca29a, 0xe6e0609a), + TOBN(0x794866aa, 0x6cf44252), TOBN(0x0b59f3e3, 0x01af87ed)}, + {TOBN(0xe234e5ff, 0x7f4a6c51), TOBN(0xa8768fd2, 0x61dc2f7e), + TOBN(0xdafc7332, 0x0a94d81f), TOBN(0xd7f84282, 0x06938ce1)}}, + {{TOBN(0xae0b3c0e, 0x0546063e), TOBN(0x7fbadcb2, 0x5d61abc6), + TOBN(0xd5d7a2c9, 0x369ac400), TOBN(0xa5978d09, 0xae67d10c)}, + {TOBN(0x290f211e, 0x4f85eaac), TOBN(0xe61e2ad1, 0xfacac681), + TOBN(0xae125225, 0x388384cd), TOBN(0xa7fb68e9, 0xccfde30f)}}, + {{TOBN(0x7a59b936, 0x3daed4c2), TOBN(0x80a9aa40, 0x2606f789), + TOBN(0xb40c1ea5, 0xf6a6d90a), TOBN(0x948364d3, 0x514d5885)}, + {TOBN(0x062ebc60, 0x70985182), TOBN(0xa6db5b0e, 0x33310895), + TOBN(0x64a12175, 0xe329c2f5), TOBN(0xc5f25bd2, 0x90ea237e)}}, + {{TOBN(0x7915c524, 0x2d0a4c23), TOBN(0xeb5d26e4, 0x6bb3cc52), + TOBN(0x369a9116, 0xc09e2c92), TOBN(0x0c527f92, 0xcf182cf8)}, + {TOBN(0x9e591938, 0x2aede0ac), TOBN(0xb2922208, 0x6cc34939), + TOBN(0x3c9d8962, 0x99a34361), TOBN(0x3c81836d, 0xc1905fe6)}}, + {{TOBN(0x4bfeb57f, 0xa001ec5a), TOBN(0xe993f5bb, 0xa0dc5dba), + TOBN(0x47884109, 0x724a1380), TOBN(0x8a0369ab, 0x32fe9a04)}, + {TOBN(0xea068d60, 0x8c927db8), TOBN(0xbf5f37cf, 0x94655741), + TOBN(0x47d402a2, 0x04b6c7ea), TOBN(0x4551c295, 0x6af259cb)}}, + {{TOBN(0x698b71e7, 0xed77ee8b), TOBN(0xbddf7bd0, 0xf309d5c7), + TOBN(0x6201c22c, 0x34e780ca), TOBN(0xab04f7d8, 0x4c295ef4)}, + {TOBN(0x1c947294, 0x4313a8ce), TOBN(0xe532e4ac, 0x92ca4cfe), + TOBN(0x89738f80, 0xd0a7a97a), TOBN(0xec088c88, 0xa580fd5b)}}, + {{TOBN(0x612b1ecc, 0x42ce9e51), TOBN(0x8f9840fd, 0xb25fdd2a), + TOBN(0x3cda78c0, 0x01e7f839), TOBN(0x546b3d3a, 0xece05480)}, + {TOBN(0x271719a9, 0x80d30916), TOBN(0x45497107, 0x584c20c4), + TOBN(0xaf8f9478, 0x5bc78608), TOBN(0x28c7d484, 0x277e2a4c)}}, + {{TOBN(0xfce01767, 0x88a2ffe4), TOBN(0xdc506a35, 0x28e169a5), + TOBN(0x0ea10861, 0x7af9c93a), TOBN(0x1ed24361, 0x03fa0e08)}, + {TOBN(0x96eaaa92, 0xa3d694e7), TOBN(0xc0f43b4d, 0xef50bc74), + TOBN(0xce6aa58c, 0x64114db4), TOBN(0x8218e8ea, 0x7c000fd4)}}, + {{TOBN(0xac815dfb, 0x185f8844), TOBN(0xcd7e90cb, 0x1557abfb), + TOBN(0x23d16655, 0xafbfecdf), TOBN(0x80f3271f, 0x085cac4a)}, + {TOBN(0x7fc39aa7, 0xd0e62f47), TOBN(0x88d519d1, 0x460a48e5), + TOBN(0x59559ac4, 0xd28f101e), TOBN(0x7981d9e9, 0xca9ae816)}}, + {{TOBN(0x5c38652c, 0x9ac38203), TOBN(0x86eaf87f, 0x57657fe5), + TOBN(0x568fc472, 0xe21f5416), TOBN(0x2afff39c, 0xe7e597b5)}, + {TOBN(0x3adbbb07, 0x256d4eab), TOBN(0x22598692, 0x8285ab89), + TOBN(0x35f8112a, 0x041caefe), TOBN(0x95df02e3, 0xa5064c8b)}}, + {{TOBN(0x4d63356e, 0xc7004bf3), TOBN(0x230a08f4, 0xdb83c7de), + TOBN(0xca27b270, 0x8709a7b7), TOBN(0x0d1c4cc4, 0xcb9abd2d)}, + {TOBN(0x8a0bc66e, 0x7550fee8), TOBN(0x369cd4c7, 0x9cf7247e), + TOBN(0x75562e84, 0x92b5b7e7), TOBN(0x8fed0da0, 0x5802af7b)}}, + {{TOBN(0x6a7091c2, 0xe48fb889), TOBN(0x26882c13, 0x7b8a9d06), + TOBN(0xa2498663, 0x1b82a0e2), TOBN(0x844ed736, 0x3518152d)}, + {TOBN(0x282f476f, 0xd86e27c7), TOBN(0xa04edaca, 0x04afefdc), + TOBN(0x8b256ebc, 0x6119e34d), TOBN(0x56a413e9, 0x0787d78b)}}}, + {{{TOBN(0x82ee061d, 0x5a74be50), TOBN(0xe41781c4, 0xdea16ff5), + TOBN(0xe0b0c81e, 0x99bfc8a2), TOBN(0x624f4d69, 0x0b547e2d)}, + {TOBN(0x3a83545d, 0xbdcc9ae4), TOBN(0x2573dbb6, 0x409b1e8e), + TOBN(0x482960c4, 0xa6c93539), TOBN(0xf01059ad, 0x5ae18798)}}, + {{TOBN(0x715c9f97, 0x3112795f), TOBN(0xe8244437, 0x984e6ee1), + TOBN(0x55cb4858, 0xecb66bcd), TOBN(0x7c136735, 0xabaffbee)}, + {TOBN(0x54661595, 0x5dbec38e), TOBN(0x51c0782c, 0x388ad153), + TOBN(0x9ba4c53a, 0xc6e0952f), TOBN(0x27e6782a, 0x1b21dfa8)}}, + {{TOBN(0x682f903d, 0x4ed2dbc2), TOBN(0x0eba59c8, 0x7c3b2d83), + TOBN(0x8e9dc84d, 0x9c7e9335), TOBN(0x5f9b21b0, 0x0eb226d7)}, + {TOBN(0xe33bd394, 0xaf267bae), TOBN(0xaa86cc25, 0xbe2e15ae), + TOBN(0x4f0bf67d, 0x6a8ec500), TOBN(0x5846aa44, 0xf9630658)}}, + {{TOBN(0xfeb09740, 0xe2c2bf15), TOBN(0x627a2205, 0xa9e99704), + TOBN(0xec8d73d0, 0xc2fbc565), TOBN(0x223eed8f, 0xc20c8de8)}, + {TOBN(0x1ee32583, 0xa8363b49), TOBN(0x1a0b6cb9, 0xc9c2b0a6), + TOBN(0x49f7c3d2, 0x90dbc85c), TOBN(0xa8dfbb97, 0x1ef4c1ac)}}, + {{TOBN(0xafb34d4c, 0x65c7c2ab), TOBN(0x1d4610e7, 0xe2c5ea84), + TOBN(0x893f6d1b, 0x973c4ab5), TOBN(0xa3cdd7e9, 0x945ba5c4)}, + {TOBN(0x60514983, 0x064417ee), TOBN(0x1459b23c, 0xad6bdf2b), + TOBN(0x23b2c341, 0x5cf726c3), TOBN(0x3a829635, 0x32d6354a)}}, + {{TOBN(0x294f901f, 0xab192c18), TOBN(0xec5fcbfe, 0x7030164f), + TOBN(0xe2e2fcb7, 0xe2246ba6), TOBN(0x1e7c88b3, 0x221a1a0c)}, + {TOBN(0x72c7dd93, 0xc92d88c5), TOBN(0x41c2148e, 0x1106fb59), + TOBN(0x547dd4f5, 0xa0f60f14), TOBN(0xed9b52b2, 0x63960f31)}}, + {{TOBN(0x6c8349eb, 0xb0a5b358), TOBN(0xb154c5c2, 0x9e7e2ed6), + TOBN(0xcad5eccf, 0xeda462db), TOBN(0xf2d6dbe4, 0x2de66b69)}, + {TOBN(0x426aedf3, 0x8665e5b2), TOBN(0x488a8513, 0x7b7f5723), + TOBN(0x15cc43b3, 0x8bcbb386), TOBN(0x27ad0af3, 0xd791d879)}}, + {{TOBN(0xc16c236e, 0x846e364f), TOBN(0x7f33527c, 0xdea50ca0), + TOBN(0xc4810775, 0x0926b86d), TOBN(0x6c2a3609, 0x0598e70c)}, + {TOBN(0xa6755e52, 0xf024e924), TOBN(0xe0fa07a4, 0x9db4afca), + TOBN(0x15c3ce7d, 0x66831790), TOBN(0x5b4ef350, 0xa6cbb0d6)}}, + {{TOBN(0x2c4aafc4, 0xb6205969), TOBN(0x42563f02, 0xf6c7854f), + TOBN(0x016aced5, 0x1d983b48), TOBN(0xfeb356d8, 0x99949755)}, + {TOBN(0x8c2a2c81, 0xd1a39bd7), TOBN(0x8f44340f, 0xe6934ae9), + TOBN(0x148cf91c, 0x447904da), TOBN(0x7340185f, 0x0f51a926)}}, + {{TOBN(0x2f8f00fb, 0x7409ab46), TOBN(0x057e78e6, 0x80e289b2), + TOBN(0x03e5022c, 0xa888e5d1), TOBN(0x3c87111a, 0x9dede4e2)}, + {TOBN(0x5b9b0e1c, 0x7809460b), TOBN(0xe751c852, 0x71c9abc7), + TOBN(0x8b944e28, 0xc7cc1dc9), TOBN(0x4f201ffa, 0x1d3cfa08)}}, + {{TOBN(0x02fc905c, 0x3e6721ce), TOBN(0xd52d70da, 0xd0b3674c), + TOBN(0x5dc2e5ca, 0x18810da4), TOBN(0xa984b273, 0x5c69dd99)}, + {TOBN(0x63b92527, 0x84de5ca4), TOBN(0x2f1c9872, 0xc852dec4), + TOBN(0x18b03593, 0xc2e3de09), TOBN(0x19d70b01, 0x9813dc2f)}}, + {{TOBN(0x42806b2d, 0xa6dc1d29), TOBN(0xd3030009, 0xf871e144), + TOBN(0xa1feb333, 0xaaf49276), TOBN(0xb5583b9e, 0xc70bc04b)}, + {TOBN(0x1db0be78, 0x95695f20), TOBN(0xfc841811, 0x89d012b5), + TOBN(0x6409f272, 0x05f61643), TOBN(0x40d34174, 0xd5883128)}}, + {{TOBN(0xd79196f5, 0x67419833), TOBN(0x6059e252, 0x863b7b08), + TOBN(0x84da1817, 0x1c56700c), TOBN(0x5758ee56, 0xb28d3ec4)}, + {TOBN(0x7da2771d, 0x013b0ea6), TOBN(0xfddf524b, 0x54c5e9b9), + TOBN(0x7df4faf8, 0x24305d80), TOBN(0x58f5c1bf, 0x3a97763f)}}, + {{TOBN(0xa5af37f1, 0x7c696042), TOBN(0xd4cba22c, 0x4a2538de), + TOBN(0x211cb995, 0x9ea42600), TOBN(0xcd105f41, 0x7b069889)}, + {TOBN(0xb1e1cf19, 0xddb81e74), TOBN(0x472f2d89, 0x5157b8ca), + TOBN(0x086fb008, 0xee9db885), TOBN(0x365cd570, 0x0f26d131)}}, + {{TOBN(0x284b02bb, 0xa2be7053), TOBN(0xdcbbf7c6, 0x7ab9a6d6), + TOBN(0x4425559c, 0x20f7a530), TOBN(0x961f2dfa, 0x188767c8)}, + {TOBN(0xe2fd9435, 0x70dc80c4), TOBN(0x104d6b63, 0xf0784120), + TOBN(0x7f592bc1, 0x53567122), TOBN(0xf6bc1246, 0xf688ad77)}}, + {{TOBN(0x05214c05, 0x0f15dde9), TOBN(0xa47a76a8, 0x0d5f2b82), + TOBN(0xbb254d30, 0x62e82b62), TOBN(0x11a05fe0, 0x3ec955ee)}, + {TOBN(0x7eaff46e, 0x9d529b36), TOBN(0x55ab1301, 0x8f9e3df6), + TOBN(0xc463e371, 0x99317698), TOBN(0xfd251438, 0xccda47ad)}}, + {{TOBN(0xca9c3547, 0x23d695ea), TOBN(0x48ce626e, 0x16e589b5), + TOBN(0x6b5b64c7, 0xb187d086), TOBN(0xd02e1794, 0xb2207948)}, + {TOBN(0x8b58e98f, 0x7198111d), TOBN(0x90ca6305, 0xdcf9c3cc), + TOBN(0x5691fe72, 0xf34089b0), TOBN(0x60941af1, 0xfc7c80ff)}}, + {{TOBN(0xa09bc0a2, 0x22eb51e5), TOBN(0xc0bb7244, 0xaa9cf09a), + TOBN(0x36a8077f, 0x80159f06), TOBN(0x8b5c989e, 0xdddc560e)}, + {TOBN(0x19d2f316, 0x512e1f43), TOBN(0x02eac554, 0xad08ff62), + TOBN(0x012ab84c, 0x07d20b4e), TOBN(0x37d1e115, 0xd6d4e4e1)}}, + {{TOBN(0xb6443e1a, 0xab7b19a8), TOBN(0xf08d067e, 0xdef8cd45), + TOBN(0x63adf3e9, 0x685e03da), TOBN(0xcf15a10e, 0x4792b916)}, + {TOBN(0xf44bcce5, 0xb738a425), TOBN(0xebe131d5, 0x9636b2fd), + TOBN(0x94068841, 0x7850d605), TOBN(0x09684eaa, 0xb40d749d)}}, + {{TOBN(0x8c3c669c, 0x72ba075b), TOBN(0x89f78b55, 0xba469015), + TOBN(0x5706aade, 0x3e9f8ba8), TOBN(0x6d8bd565, 0xb32d7ed7)}, + {TOBN(0x25f4e63b, 0x805f08d6), TOBN(0x7f48200d, 0xc3bcc1b5), + TOBN(0x4e801968, 0xb025d847), TOBN(0x74afac04, 0x87cbe0a8)}}, + {{TOBN(0x43ed2c2b, 0x7e63d690), TOBN(0xefb6bbf0, 0x0223cdb8), + TOBN(0x4fec3cae, 0x2884d3fe), TOBN(0x065ecce6, 0xd75e25a4)}, + {TOBN(0x6c2294ce, 0x69f79071), TOBN(0x0d9a8e5f, 0x044b8666), + TOBN(0x5009f238, 0x17b69d8f), TOBN(0x3c29f8fe, 0xc5dfdaf7)}}, + {{TOBN(0x9067528f, 0xebae68c4), TOBN(0x5b385632, 0x30c5ba21), + TOBN(0x540df119, 0x1fdd1aec), TOBN(0xcf37825b, 0xcfba4c78)}, + {TOBN(0x77eff980, 0xbeb11454), TOBN(0x40a1a991, 0x60c1b066), + TOBN(0xe8018980, 0xf889a1c7), TOBN(0xb9c52ae9, 0x76c24be0)}}, + {{TOBN(0x05fbbcce, 0x45650ef4), TOBN(0xae000f10, 0x8aa29ac7), + TOBN(0x884b7172, 0x4f04c470), TOBN(0x7cd4fde2, 0x19bb5c25)}, + {TOBN(0x6477b22a, 0xe8840869), TOBN(0xa8868859, 0x5fbd0686), + TOBN(0xf23cc02e, 0x1116dfba), TOBN(0x76cd563f, 0xd87d7776)}}, + {{TOBN(0xe2a37598, 0xa9d82abf), TOBN(0x5f188ccb, 0xe6c170f5), + TOBN(0x81682200, 0x5066b087), TOBN(0xda22c212, 0xc7155ada)}, + {TOBN(0x151e5d3a, 0xfbddb479), TOBN(0x4b606b84, 0x6d715b99), + TOBN(0x4a73b54b, 0xf997cb2e), TOBN(0x9a1bfe43, 0x3ecd8b66)}}, + {{TOBN(0x1c312809, 0x2a67d48a), TOBN(0xcd6a671e, 0x031fa9e2), + TOBN(0xbec3312a, 0x0e43a34a), TOBN(0x1d935639, 0x55ef47d3)}, + {TOBN(0x5ea02489, 0x8fea73ea), TOBN(0x8247b364, 0xa035afb2), + TOBN(0xb58300a6, 0x5265b54c), TOBN(0x3286662f, 0x722c7148)}}, + {{TOBN(0xb77fd76b, 0xb4ec4c20), TOBN(0xf0a12fa7, 0x0f3fe3fd), + TOBN(0xf845bbf5, 0x41d8c7e8), TOBN(0xe4d969ca, 0x5ec10aa8)}, + {TOBN(0x4c0053b7, 0x43e232a3), TOBN(0xdc7a3fac, 0x37f8a45a), + TOBN(0x3c4261c5, 0x20d81c8f), TOBN(0xfd4b3453, 0xb00eab00)}}, + {{TOBN(0x76d48f86, 0xd36e3062), TOBN(0x626c5277, 0xa143ff02), + TOBN(0x538174de, 0xaf76f42e), TOBN(0x2267aa86, 0x6407ceac)}, + {TOBN(0xfad76351, 0x72e572d5), TOBN(0xab861af7, 0xba7330eb), + TOBN(0xa0a1c8c7, 0x418d8657), TOBN(0x988821cb, 0x20289a52)}}, + {{TOBN(0x79732522, 0xcccc18ad), TOBN(0xaadf3f8d, 0xf1a6e027), + TOBN(0xf7382c93, 0x17c2354d), TOBN(0x5ce1680c, 0xd818b689)}, + {TOBN(0x359ebbfc, 0xd9ecbee9), TOBN(0x4330689c, 0x1cae62ac), + TOBN(0xb55ce5b4, 0xc51ac38a), TOBN(0x7921dfea, 0xfe238ee8)}}, + {{TOBN(0x3972bef8, 0x271d1ca5), TOBN(0x3e423bc7, 0xe8aabd18), + TOBN(0x57b09f3f, 0x44a3e5e3), TOBN(0x5da886ae, 0x7b444d66)}, + {TOBN(0x68206634, 0xa9964375), TOBN(0x356a2fa3, 0x699cd0ff), + TOBN(0xaf0faa24, 0xdba515e9), TOBN(0x536e1f5c, 0xb321d79a)}}, + {{TOBN(0xd3b9913a, 0x5c04e4ea), TOBN(0xd549dcfe, 0xd6f11513), + TOBN(0xee227bf5, 0x79fd1d94), TOBN(0x9f35afee, 0xb43f2c67)}, + {TOBN(0xd2638d24, 0xf1314f53), TOBN(0x62baf948, 0xcabcd822), + TOBN(0x5542de29, 0x4ef48db0), TOBN(0xb3eb6a04, 0xfc5f6bb2)}}, + {{TOBN(0x23c110ae, 0x1208e16a), TOBN(0x1a4d15b5, 0xf8363e24), + TOBN(0x30716844, 0x164be00b), TOBN(0xa8e24824, 0xf6f4690d)}, + {TOBN(0x548773a2, 0x90b170cf), TOBN(0xa1bef331, 0x42f191f4), + TOBN(0x70f418d0, 0x9247aa97), TOBN(0xea06028e, 0x48be9147)}}, + {{TOBN(0xe13122f3, 0xdbfb894e), TOBN(0xbe9b79f6, 0xce274b18), + TOBN(0x85a49de5, 0xca58aadf), TOBN(0x24957758, 0x11487351)}, + {TOBN(0x111def61, 0xbb939099), TOBN(0x1d6a974a, 0x26d13694), + TOBN(0x4474b4ce, 0xd3fc253b), TOBN(0x3a1485e6, 0x4c5db15e)}}, + {{TOBN(0xe79667b4, 0x147c15b4), TOBN(0xe34f553b, 0x7bc61301), + TOBN(0x032b80f8, 0x17094381), TOBN(0x55d8bafd, 0x723eaa21)}, + {TOBN(0x5a987995, 0xf1c0e74e), TOBN(0x5a9b292e, 0xebba289c), + TOBN(0x413cd4b2, 0xeb4c8251), TOBN(0x98b5d243, 0xd162db0a)}}, + {{TOBN(0xbb47bf66, 0x68342520), TOBN(0x08d68949, 0xbaa862d1), + TOBN(0x11f349c7, 0xe906abcd), TOBN(0x454ce985, 0xed7bf00e)}, + {TOBN(0xacab5c9e, 0xb55b803b), TOBN(0xb03468ea, 0x31e3c16d), + TOBN(0x5c24213d, 0xd273bf12), TOBN(0x211538eb, 0x71587887)}}, + {{TOBN(0x198e4a2f, 0x731dea2d), TOBN(0xd5856cf2, 0x74ed7b2a), + TOBN(0x86a632eb, 0x13a664fe), TOBN(0x932cd909, 0xbda41291)}, + {TOBN(0x850e95d4, 0xc0c4ddc0), TOBN(0xc0f422f8, 0x347fc2c9), + TOBN(0xe68cbec4, 0x86076bcb), TOBN(0xf9e7c0c0, 0xcd6cd286)}}, + {{TOBN(0x65994ddb, 0x0f5f27ca), TOBN(0xe85461fb, 0xa80d59ff), + TOBN(0xff05481a, 0x66601023), TOBN(0xc665427a, 0xfc9ebbfb)}, + {TOBN(0xb0571a69, 0x7587fd52), TOBN(0x935289f8, 0x8d49efce), + TOBN(0x61becc60, 0xea420688), TOBN(0xb22639d9, 0x13a786af)}}, + {{TOBN(0x1a8e6220, 0x361ecf90), TOBN(0x001f23e0, 0x25506463), + TOBN(0xe4ae9b5d, 0x0a5c2b79), TOBN(0xebc9cdad, 0xd8149db5)}, + {TOBN(0xb33164a1, 0x934aa728), TOBN(0x750eb00e, 0xae9b60f3), + TOBN(0x5a91615b, 0x9b9cfbfd), TOBN(0x97015cbf, 0xef45f7f6)}}, + {{TOBN(0xb462c4a5, 0xbf5151df), TOBN(0x21adcc41, 0xb07118f2), + TOBN(0xd60c545b, 0x043fa42c), TOBN(0xfc21aa54, 0xe96be1ab)}, + {TOBN(0xe84bc32f, 0x4e51ea80), TOBN(0x3dae45f0, 0x259b5d8d), + TOBN(0xbb73c7eb, 0xc38f1b5e), TOBN(0xe405a74a, 0xe8ae617d)}}, + {{TOBN(0xbb1ae9c6, 0x9f1c56bd), TOBN(0x8c176b98, 0x49f196a4), + TOBN(0xc448f311, 0x6875092b), TOBN(0xb5afe3de, 0x9f976033)}, + {TOBN(0xa8dafd49, 0x145813e5), TOBN(0x687fc4d9, 0xe2b34226), + TOBN(0xf2dfc92d, 0x4c7ff57f), TOBN(0x004e3fc1, 0x401f1b46)}}, + {{TOBN(0x5afddab6, 0x1430c9ab), TOBN(0x0bdd41d3, 0x2238e997), + TOBN(0xf0947430, 0x418042ae), TOBN(0x71f9adda, 0xcdddc4cb)}, + {TOBN(0x7090c016, 0xc52dd907), TOBN(0xd9bdf44d, 0x29e2047f), + TOBN(0xe6f1fe80, 0x1b1011a6), TOBN(0xb63accbc, 0xd9acdc78)}}, + {{TOBN(0xcfc7e235, 0x1272a95b), TOBN(0x0c667717, 0xa6276ac8), + TOBN(0x3c0d3709, 0xe2d7eef7), TOBN(0x5add2b06, 0x9a685b3e)}, + {TOBN(0x363ad32d, 0x14ea5d65), TOBN(0xf8e01f06, 0x8d7dd506), + TOBN(0xc9ea2213, 0x75b4aac6), TOBN(0xed2a2bf9, 0x0d353466)}}, + {{TOBN(0x439d79b5, 0xe9d3a7c3), TOBN(0x8e0ee5a6, 0x81b7f34b), + TOBN(0xcf3dacf5, 0x1dc4ba75), TOBN(0x1d3d1773, 0xeb3310c7)}, + {TOBN(0xa8e67112, 0x7747ae83), TOBN(0x31f43160, 0x197d6b40), + TOBN(0x0521ccee, 0xcd961400), TOBN(0x67246f11, 0xf6535768)}}, + {{TOBN(0x702fcc5a, 0xef0c3133), TOBN(0x247cc45d, 0x7e16693b), + TOBN(0xfd484e49, 0xc729b749), TOBN(0x522cef7d, 0xb218320f)}, + {TOBN(0xe56ef405, 0x59ab93b3), TOBN(0x225fba11, 0x9f181071), + TOBN(0x33bd6595, 0x15330ed0), TOBN(0xc4be69d5, 0x1ddb32f7)}}, + {{TOBN(0x264c7668, 0x0448087c), TOBN(0xac30903f, 0x71432dae), + TOBN(0x3851b266, 0x00f9bf47), TOBN(0x400ed311, 0x6cdd6d03)}, + {TOBN(0x045e79fe, 0xf8fd2424), TOBN(0xfdfd974a, 0xfa6da98b), + TOBN(0x45c9f641, 0x0c1e673a), TOBN(0x76f2e733, 0x5b2c5168)}}, + {{TOBN(0x1adaebb5, 0x2a601753), TOBN(0xb286514c, 0xc57c2d49), + TOBN(0xd8769670, 0x1e0bfd24), TOBN(0x950c547e, 0x04478922)}, + {TOBN(0xd1d41969, 0xe5d32bfe), TOBN(0x30bc1472, 0x750d6c3e), + TOBN(0x8f3679fe, 0xe0e27f3a), TOBN(0x8f64a7dc, 0xa4a6ee0c)}}, + {{TOBN(0x2fe59937, 0x633dfb1f), TOBN(0xea82c395, 0x977f2547), + TOBN(0xcbdfdf1a, 0x661ea646), TOBN(0xc7ccc591, 0xb9085451)}, + {TOBN(0x82177962, 0x81761e13), TOBN(0xda57596f, 0x9196885c), + TOBN(0xbc17e849, 0x28ffbd70), TOBN(0x1e6e0a41, 0x2671d36f)}}, + {{TOBN(0x61ae872c, 0x4152fcf5), TOBN(0x441c87b0, 0x9e77e754), + TOBN(0xd0799dd5, 0xa34dff09), TOBN(0x766b4e44, 0x88a6b171)}, + {TOBN(0xdc06a512, 0x11f1c792), TOBN(0xea02ae93, 0x4be35c3e), + TOBN(0xe5ca4d6d, 0xe90c469e), TOBN(0x4df4368e, 0x56e4ff5c)}}, + {{TOBN(0x7817acab, 0x4baef62e), TOBN(0x9f5a2202, 0xa85b91e8), + TOBN(0x9666ebe6, 0x6ce57610), TOBN(0x32ad31f3, 0xf73bfe03)}, + {TOBN(0x628330a4, 0x25bcf4d6), TOBN(0xea950593, 0x515056e6), + TOBN(0x59811c89, 0xe1332156), TOBN(0xc89cf1fe, 0x8c11b2d7)}}, + {{TOBN(0x75b63913, 0x04e60cc0), TOBN(0xce811e8d, 0x4625d375), + TOBN(0x030e43fc, 0x2d26e562), TOBN(0xfbb30b4b, 0x608d36a0)}, + {TOBN(0x634ff82c, 0x48528118), TOBN(0x7c6fe085, 0xcd285911), + TOBN(0x7f2830c0, 0x99358f28), TOBN(0x2e60a95e, 0x665e6c09)}}, + {{TOBN(0x08407d3d, 0x9b785dbf), TOBN(0x530889ab, 0xa759bce7), + TOBN(0xf228e0e6, 0x52f61239), TOBN(0x2b6d1461, 0x6879be3c)}, + {TOBN(0xe6902c04, 0x51a7bbf7), TOBN(0x30ad99f0, 0x76f24a64), + TOBN(0x66d9317a, 0x98bc6da0), TOBN(0xf4f877f3, 0xcb596ac0)}}, + {{TOBN(0xb05ff62d, 0x4c44f119), TOBN(0x4555f536, 0xe9b77416), + TOBN(0xc7c0d059, 0x8caed63b), TOBN(0x0cd2b7ce, 0xc358b2a9)}, + {TOBN(0x3f33287b, 0x46945fa3), TOBN(0xf8785b20, 0xd67c8791), + TOBN(0xc54a7a61, 0x9637bd08), TOBN(0x54d4598c, 0x18be79d7)}}, + {{TOBN(0x889e5acb, 0xc46d7ce1), TOBN(0x9a515bb7, 0x8b085877), + TOBN(0xfac1a03d, 0x0b7a5050), TOBN(0x7d3e738a, 0xf2926035)}, + {TOBN(0x861cc2ce, 0x2a6cb0eb), TOBN(0x6f2e2955, 0x8f7adc79), + TOBN(0x61c4d451, 0x33016376), TOBN(0xd9fd2c80, 0x5ad59090)}}, + {{TOBN(0xe5a83738, 0xb2b836a1), TOBN(0x855b41a0, 0x7c0d6622), + TOBN(0x186fe317, 0x7cc19af1), TOBN(0x6465c1ff, 0xfdd99acb)}, + {TOBN(0x46e5c23f, 0x6974b99e), TOBN(0x75a7cf8b, 0xa2717cbe), + TOBN(0x4d2ebc3f, 0x062be658), TOBN(0x094b4447, 0x5f209c98)}}, + {{TOBN(0x4af285ed, 0xb940cb5a), TOBN(0x6706d792, 0x7cc82f10), + TOBN(0xc8c8776c, 0x030526fa), TOBN(0xfa8e6f76, 0xa0da9140)}, + {TOBN(0x77ea9d34, 0x591ee4f0), TOBN(0x5f46e337, 0x40274166), + TOBN(0x1bdf98bb, 0xea671457), TOBN(0xd7c08b46, 0x862a1fe2)}}, + {{TOBN(0x46cc303c, 0x1c08ad63), TOBN(0x99543440, 0x4c845e7b), + TOBN(0x1b8fbdb5, 0x48f36bf7), TOBN(0x5b82c392, 0x8c8273a7)}, + {TOBN(0x08f712c4, 0x928435d5), TOBN(0x071cf0f1, 0x79330380), + TOBN(0xc74c2d24, 0xa8da054a), TOBN(0xcb0e7201, 0x43c46b5c)}}, + {{TOBN(0x0ad7337a, 0xc0b7eff3), TOBN(0x8552225e, 0xc5e48b3c), + TOBN(0xe6f78b0c, 0x73f13a5f), TOBN(0x5e70062e, 0x82349cbe)}, + {TOBN(0x6b8d5048, 0xe7073969), TOBN(0x392d2a29, 0xc33cb3d2), + TOBN(0xee4f727c, 0x4ecaa20f), TOBN(0xa068c99e, 0x2ccde707)}}, + {{TOBN(0xfcd5651f, 0xb87a2913), TOBN(0xea3e3c15, 0x3cc252f0), + TOBN(0x777d92df, 0x3b6cd3e4), TOBN(0x7a414143, 0xc5a732e7)}, + {TOBN(0xa895951a, 0xa71ff493), TOBN(0xfe980c92, 0xbbd37cf6), + TOBN(0x45bd5e64, 0xdecfeeff), TOBN(0x910dc2a9, 0xa44c43e9)}}, + {{TOBN(0xcb403f26, 0xcca9f54d), TOBN(0x928bbdfb, 0x9303f6db), + TOBN(0x3c37951e, 0xa9eee67c), TOBN(0x3bd61a52, 0xf79961c3)}, + {TOBN(0x09a238e6, 0x395c9a79), TOBN(0x6940ca2d, 0x61eb352d), + TOBN(0x7d1e5c5e, 0xc1875631), TOBN(0x1e19742c, 0x1e1b20d1)}}, + {{TOBN(0x4633d908, 0x23fc2e6e), TOBN(0xa76e29a9, 0x08959149), + TOBN(0x61069d9c, 0x84ed7da5), TOBN(0x0baa11cf, 0x5dbcad51)}, + {TOBN(0xd01eec64, 0x961849da), TOBN(0x93b75f1f, 0xaf3d8c28), + TOBN(0x57bc4f9f, 0x1ca2ee44), TOBN(0x5a26322d, 0x00e00558)}}, + {{TOBN(0x1888d658, 0x61a023ef), TOBN(0x1d72aab4, 0xb9e5246e), + TOBN(0xa9a26348, 0xe5563ec0), TOBN(0xa0971963, 0xc3439a43)}, + {TOBN(0x567dd54b, 0xadb9b5b7), TOBN(0x73fac1a1, 0xc45a524b), + TOBN(0x8fe97ef7, 0xfe38e608), TOBN(0x608748d2, 0x3f384f48)}}, + {{TOBN(0xb0571794, 0xc486094f), TOBN(0x869254a3, 0x8bf3a8d6), + TOBN(0x148a8dd1, 0x310b0e25), TOBN(0x99ab9f3f, 0x9aa3f7d8)}, + {TOBN(0x0927c68a, 0x6706c02e), TOBN(0x22b5e76c, 0x69790e6c), + TOBN(0x6c325260, 0x6c71376c), TOBN(0x53a57690, 0x09ef6657)}}, + {{TOBN(0x8d63f852, 0xedffcf3a), TOBN(0xb4d2ed04, 0x3c0a6f55), + TOBN(0xdb3aa8de, 0x12519b9e), TOBN(0x5d38e9c4, 0x1e0a569a)}, + {TOBN(0x871528bf, 0x303747e2), TOBN(0xa208e77c, 0xf5b5c18d), + TOBN(0x9d129c88, 0xca6bf923), TOBN(0xbcbf197f, 0xbf02839f)}}, + {{TOBN(0x9b9bf030, 0x27323194), TOBN(0x3b055a8b, 0x339ca59d), + TOBN(0xb46b2312, 0x0f669520), TOBN(0x19789f1f, 0x497e5f24)}, + {TOBN(0x9c499468, 0xaaf01801), TOBN(0x72ee1190, 0x8b69d59c), + TOBN(0x8bd39595, 0xacf4c079), TOBN(0x3ee11ece, 0x8e0cd048)}}, + {{TOBN(0xebde86ec, 0x1ed66f18), TOBN(0x225d906b, 0xd61fce43), + TOBN(0x5cab07d6, 0xe8bed74d), TOBN(0x16e4617f, 0x27855ab7)}, + {TOBN(0x6568aadd, 0xb2fbc3dd), TOBN(0xedb5484f, 0x8aeddf5b), + TOBN(0x878f20e8, 0x6dcf2fad), TOBN(0x3516497c, 0x615f5699)}}}, + {{{TOBN(0xef0a3fec, 0xfa181e69), TOBN(0x9ea02f81, 0x30d69a98), + TOBN(0xb2e9cf8e, 0x66eab95d), TOBN(0x520f2beb, 0x24720021)}, + {TOBN(0x621c540a, 0x1df84361), TOBN(0x12037721, 0x71fa6d5d), + TOBN(0x6e3c7b51, 0x0ff5f6ff), TOBN(0x817a069b, 0xabb2bef3)}}, + {{TOBN(0x83572fb6, 0xb294cda6), TOBN(0x6ce9bf75, 0xb9039f34), + TOBN(0x20e012f0, 0x095cbb21), TOBN(0xa0aecc1b, 0xd063f0da)}, + {TOBN(0x57c21c3a, 0xf02909e5), TOBN(0xc7d59ecf, 0x48ce9cdc), + TOBN(0x2732b844, 0x8ae336f8), TOBN(0x056e3723, 0x3f4f85f4)}}, + {{TOBN(0x8a10b531, 0x89e800ca), TOBN(0x50fe0c17, 0x145208fd), + TOBN(0x9e43c0d3, 0xb714ba37), TOBN(0x427d200e, 0x34189acc)}, + {TOBN(0x05dee24f, 0xe616e2c0), TOBN(0x9c25f4c8, 0xee1854c1), + TOBN(0x4d3222a5, 0x8f342a73), TOBN(0x0807804f, 0xa027c952)}}, + {{TOBN(0xc222653a, 0x4f0d56f3), TOBN(0x961e4047, 0xca28b805), + TOBN(0x2c03f8b0, 0x4a73434b), TOBN(0x4c966787, 0xab712a19)}, + {TOBN(0xcc196c42, 0x864fee42), TOBN(0xc1be93da, 0x5b0ece5c), + TOBN(0xa87d9f22, 0xc131c159), TOBN(0x2bb6d593, 0xdce45655)}}, + {{TOBN(0x22c49ec9, 0xb809b7ce), TOBN(0x8a41486b, 0xe2c72c2c), + TOBN(0x813b9420, 0xfea0bf36), TOBN(0xb3d36ee9, 0xa66dac69)}, + {TOBN(0x6fddc08a, 0x328cc987), TOBN(0x0a3bcd2c, 0x3a326461), + TOBN(0x7103c49d, 0xd810dbba), TOBN(0xf9d81a28, 0x4b78a4c4)}}, + {{TOBN(0x3de865ad, 0xe4d55941), TOBN(0xdedafa5e, 0x30384087), + TOBN(0x6f414abb, 0x4ef18b9b), TOBN(0x9ee9ea42, 0xfaee5268)}, + {TOBN(0x260faa16, 0x37a55a4a), TOBN(0xeb19a514, 0x015f93b9), + TOBN(0x51d7ebd2, 0x9e9c3598), TOBN(0x523fc56d, 0x1932178e)}}, + {{TOBN(0x501d070c, 0xb98fe684), TOBN(0xd60fbe9a, 0x124a1458), + TOBN(0xa45761c8, 0x92bc6b3f), TOBN(0xf5384858, 0xfe6f27cb)}, + {TOBN(0x4b0271f7, 0xb59e763b), TOBN(0x3d4606a9, 0x5b5a8e5e), + TOBN(0x1eda5d9b, 0x05a48292), TOBN(0xda7731d0, 0xe6fec446)}}, + {{TOBN(0xa3e33693, 0x90d45871), TOBN(0xe9764040, 0x06166d8d), + TOBN(0xb5c33682, 0x89a90403), TOBN(0x4bd17983, 0x72f1d637)}, + {TOBN(0xa616679e, 0xd5d2c53a), TOBN(0x5ec4bcd8, 0xfdcf3b87), + TOBN(0xae6d7613, 0xb66a694e), TOBN(0x7460fc76, 0xe3fc27e5)}}, + {{TOBN(0x70469b82, 0x95caabee), TOBN(0xde024ca5, 0x889501e3), + TOBN(0x6bdadc06, 0x076ed265), TOBN(0x0cb1236b, 0x5a0ef8b2)}, + {TOBN(0x4065ddbf, 0x0972ebf9), TOBN(0xf1dd3875, 0x22aca432), + TOBN(0xa88b97cf, 0x744aff76), TOBN(0xd1359afd, 0xfe8e3d24)}}, + {{TOBN(0x52a3ba2b, 0x91502cf3), TOBN(0x2c3832a8, 0x084db75d), + TOBN(0x04a12ddd, 0xde30b1c9), TOBN(0x7802eabc, 0xe31fd60c)}, + {TOBN(0x33707327, 0xa37fddab), TOBN(0x65d6f2ab, 0xfaafa973), + TOBN(0x3525c5b8, 0x11e6f91a), TOBN(0x76aeb0c9, 0x5f46530b)}}, + {{TOBN(0xe8815ff6, 0x2f93a675), TOBN(0xa6ec9684, 0x05f48679), + TOBN(0x6dcbb556, 0x358ae884), TOBN(0x0af61472, 0xe19e3873)}, + {TOBN(0x72334372, 0xa5f696be), TOBN(0xc65e57ea, 0x6f22fb70), + TOBN(0x268da30c, 0x946cea90), TOBN(0x136a8a87, 0x65681b2a)}}, + {{TOBN(0xad5e81dc, 0x0f9f44d4), TOBN(0xf09a6960, 0x2c46585a), + TOBN(0xd1649164, 0xc447d1b1), TOBN(0x3b4b36c8, 0x879dc8b1)}, + {TOBN(0x20d4177b, 0x3b6b234c), TOBN(0x096a2505, 0x1730d9d0), + TOBN(0x0611b9b8, 0xef80531d), TOBN(0xba904b3b, 0x64bb495d)}}, + {{TOBN(0x1192d9d4, 0x93a3147a), TOBN(0x9f30a5dc, 0x9a565545), + TOBN(0x90b1f9cb, 0x6ef07212), TOBN(0x29958546, 0x0d87fc13)}, + {TOBN(0xd3323eff, 0xc17db9ba), TOBN(0xcb18548c, 0xcb1644a8), + TOBN(0x18a306d4, 0x4f49ffbc), TOBN(0x28d658f1, 0x4c2e8684)}}, + {{TOBN(0x44ba60cd, 0xa99f8c71), TOBN(0x67b7abdb, 0x4bf742ff), + TOBN(0x66310f9c, 0x914b3f99), TOBN(0xae430a32, 0xf412c161)}, + {TOBN(0x1e6776d3, 0x88ace52f), TOBN(0x4bc0fa24, 0x52d7067d), + TOBN(0x03c286aa, 0x8f07cd1b), TOBN(0x4cb8f38c, 0xa985b2c1)}}, + {{TOBN(0x83ccbe80, 0x8c3bff36), TOBN(0x005a0bd2, 0x5263e575), + TOBN(0x460d7dda, 0x259bdcd1), TOBN(0x4a1c5642, 0xfa5cab6b)}, + {TOBN(0x2b7bdbb9, 0x9fe4fc88), TOBN(0x09418e28, 0xcc97bbb5), + TOBN(0xd8274fb4, 0xa12321ae), TOBN(0xb137007d, 0x5c87b64e)}}, + {{TOBN(0x80531fe1, 0xc63c4962), TOBN(0x50541e89, 0x981fdb25), + TOBN(0xdc1291a1, 0xfd4c2b6b), TOBN(0xc0693a17, 0xa6df4fca)}, + {TOBN(0xb2c4604e, 0x0117f203), TOBN(0x245f1963, 0x0a99b8d0), + TOBN(0xaedc20aa, 0xc6212c44), TOBN(0xb1ed4e56, 0x520f52a8)}}, + {{TOBN(0xfe48f575, 0xf8547be3), TOBN(0x0a7033cd, 0xa9e45f98), + TOBN(0x4b45d3a9, 0x18c50100), TOBN(0xb2a6cd6a, 0xa61d41da)}, + {TOBN(0x60bbb4f5, 0x57933c6b), TOBN(0xa7538ebd, 0x2b0d7ffc), + TOBN(0x9ea3ab8d, 0x8cd626b6), TOBN(0x8273a484, 0x3601625a)}}, + {{TOBN(0x88859845, 0x0168e508), TOBN(0x8cbc9bb2, 0x99a94abd), + TOBN(0x713ac792, 0xfab0a671), TOBN(0xa3995b19, 0x6c9ebffc)}, + {TOBN(0xe711668e, 0x1239e152), TOBN(0x56892558, 0xbbb8dff4), + TOBN(0x8bfc7dab, 0xdbf17963), TOBN(0x5b59fe5a, 0xb3de1253)}}, + {{TOBN(0x7e3320eb, 0x34a9f7ae), TOBN(0xe5e8cf72, 0xd751efe4), + TOBN(0x7ea003bc, 0xd9be2f37), TOBN(0xc0f551a0, 0xb6c08ef7)}, + {TOBN(0x56606268, 0x038f6725), TOBN(0x1dd38e35, 0x6d92d3b6), + TOBN(0x07dfce7c, 0xc3cbd686), TOBN(0x4e549e04, 0x651c5da8)}}, + {{TOBN(0x4058f93b, 0x08b19340), TOBN(0xc2fae6f4, 0xcac6d89d), + TOBN(0x4bad8a8c, 0x8f159cc7), TOBN(0x0ddba4b3, 0xcb0b601c)}, + {TOBN(0xda4fc7b5, 0x1dd95f8c), TOBN(0x1d163cd7, 0xcea5c255), + TOBN(0x30707d06, 0x274a8c4c), TOBN(0x79d9e008, 0x2802e9ce)}}, + {{TOBN(0x02a29ebf, 0xe6ddd505), TOBN(0x37064e74, 0xb50bed1a), + TOBN(0x3f6bae65, 0xa7327d57), TOBN(0x3846f5f1, 0xf83920bc)}, + {TOBN(0x87c37491, 0x60df1b9b), TOBN(0x4cfb2895, 0x2d1da29f), + TOBN(0x10a478ca, 0x4ed1743c), TOBN(0x390c6030, 0x3edd47c6)}}, + {{TOBN(0x8f3e5312, 0x8c0a78de), TOBN(0xccd02bda, 0x1e85df70), + TOBN(0xd6c75c03, 0xa61b6582), TOBN(0x0762921c, 0xfc0eebd1)}, + {TOBN(0xd34d0823, 0xd85010c0), TOBN(0xd73aaacb, 0x0044cf1f), + TOBN(0xfb4159bb, 0xa3b5e78a), TOBN(0x2287c7f7, 0xe5826f3f)}}, + {{TOBN(0x4aeaf742, 0x580b1a01), TOBN(0xf080415d, 0x60423b79), + TOBN(0xe12622cd, 0xa7dea144), TOBN(0x49ea4996, 0x59d62472)}, + {TOBN(0xb42991ef, 0x571f3913), TOBN(0x0610f214, 0xf5b25a8a), + TOBN(0x47adc585, 0x30b79e8f), TOBN(0xf90e3df6, 0x07a065a2)}}, + {{TOBN(0x5d0a5deb, 0x43e2e034), TOBN(0x53fb5a34, 0x444024aa), + TOBN(0xa8628c68, 0x6b0c9f7f), TOBN(0x9c69c29c, 0xac563656)}, + {TOBN(0x5a231feb, 0xbace47b6), TOBN(0xbdce0289, 0x9ea5a2ec), + TOBN(0x05da1fac, 0x9463853e), TOBN(0x96812c52, 0x509e78aa)}}, + {{TOBN(0xd3fb5771, 0x57151692), TOBN(0xeb2721f8, 0xd98e1c44), + TOBN(0xc0506087, 0x32399be1), TOBN(0xda5a5511, 0xd979d8b8)}, + {TOBN(0x737ed55d, 0xc6f56780), TOBN(0xe20d3004, 0x0dc7a7f4), + TOBN(0x02ce7301, 0xf5941a03), TOBN(0x91ef5215, 0xed30f83a)}}, + {{TOBN(0x28727fc1, 0x4092d85f), TOBN(0x72d223c6, 0x5c49e41a), + TOBN(0xa7cf30a2, 0xba6a4d81), TOBN(0x7c086209, 0xb030d87d)}, + {TOBN(0x04844c7d, 0xfc588b09), TOBN(0x728cd499, 0x5874bbb0), + TOBN(0xcc1281ee, 0xe84c0495), TOBN(0x0769b5ba, 0xec31958f)}}, + {{TOBN(0x665c228b, 0xf99c2471), TOBN(0xf2d8a11b, 0x191eb110), + TOBN(0x4594f494, 0xd36d7024), TOBN(0x482ded8b, 0xcdcb25a1)}, + {TOBN(0xc958a9d8, 0xdadd4885), TOBN(0x7004477e, 0xf1d2b547), + TOBN(0x0a45f6ef, 0x2a0af550), TOBN(0x4fc739d6, 0x2f8d6351)}}, + {{TOBN(0x75cdaf27, 0x786f08a9), TOBN(0x8700bb26, 0x42c2737f), + TOBN(0x855a7141, 0x1c4e2670), TOBN(0x810188c1, 0x15076fef)}, + {TOBN(0xc251d0c9, 0xabcd3297), TOBN(0xae4c8967, 0xf48108eb), + TOBN(0xbd146de7, 0x18ceed30), TOBN(0xf9d4f07a, 0xc986bced)}}, + {{TOBN(0x5ad98ed5, 0x83fa1e08), TOBN(0x7780d33e, 0xbeabd1fb), + TOBN(0xe330513c, 0x903b1196), TOBN(0xba11de9e, 0xa47bc8c4)}, + {TOBN(0x684334da, 0x02c2d064), TOBN(0x7ecf360d, 0xa48de23b), + TOBN(0x57a1b474, 0x0a9089d8), TOBN(0xf28fa439, 0xff36734c)}}, + {{TOBN(0xf2a482cb, 0xea4570b3), TOBN(0xee65d68b, 0xa5ebcee9), + TOBN(0x988d0036, 0xb9694cd5), TOBN(0x53edd0e9, 0x37885d32)}, + {TOBN(0xe37e3307, 0xbeb9bc6d), TOBN(0xe9abb907, 0x9f5c6768), + TOBN(0x4396ccd5, 0x51f2160f), TOBN(0x2500888c, 0x47336da6)}}, + {{TOBN(0x383f9ed9, 0x926fce43), TOBN(0x809dd1c7, 0x04da2930), + TOBN(0x30f6f596, 0x8a4cb227), TOBN(0x0d700c7f, 0x73a56b38)}, + {TOBN(0x1825ea33, 0xab64a065), TOBN(0xaab9b735, 0x1338df80), + TOBN(0x1516100d, 0x9b63f57f), TOBN(0x2574395a, 0x27a6a634)}}, + {{TOBN(0xb5560fb6, 0x700a1acd), TOBN(0xe823fd73, 0xfd999681), + TOBN(0xda915d1f, 0x6cb4e1ba), TOBN(0x0d030118, 0x6ebe00a3)}, + {TOBN(0x744fb0c9, 0x89fca8cd), TOBN(0x970d01db, 0xf9da0e0b), + TOBN(0x0ad8c564, 0x7931d76f), TOBN(0xb15737bf, 0xf659b96a)}}, + {{TOBN(0xdc9933e8, 0xa8b484e7), TOBN(0xb2fdbdf9, 0x7a26dec7), + TOBN(0x2349e9a4, 0x9f1f0136), TOBN(0x7860368e, 0x70fddddb)}, + {TOBN(0xd93d2c1c, 0xf9ad3e18), TOBN(0x6d6c5f17, 0x689f4e79), + TOBN(0x7a544d91, 0xb24ff1b6), TOBN(0x3e12a5eb, 0xfe16cd8c)}}, + {{TOBN(0x543574e9, 0xa56b872f), TOBN(0xa1ad550c, 0xfcf68ea2), + TOBN(0x689e37d2, 0x3f560ef7), TOBN(0x8c54b9ca, 0xc9d47a8b)}, + {TOBN(0x46d40a4a, 0x088ac342), TOBN(0xec450c7c, 0x1576c6d0), + TOBN(0xb589e31c, 0x1f9689e9), TOBN(0xdacf2602, 0xb8781718)}}, + {{TOBN(0xa89237c6, 0xc8cb6b42), TOBN(0x1326fc93, 0xb96ef381), + TOBN(0x55d56c6d, 0xb5f07825), TOBN(0xacba2eea, 0x7449e22d)}, + {TOBN(0x74e0887a, 0x633c3000), TOBN(0xcb6cd172, 0xd7cbcf71), + TOBN(0x309e81de, 0xc36cf1be), TOBN(0x07a18a6d, 0x60ae399b)}}, + {{TOBN(0xb36c2679, 0x9edce57e), TOBN(0x52b892f4, 0xdf001d41), + TOBN(0xd884ae5d, 0x16a1f2c6), TOBN(0x9b329424, 0xefcc370a)}, + {TOBN(0x3120daf2, 0xbd2e21df), TOBN(0x55298d2d, 0x02470a99), + TOBN(0x0b78af6c, 0xa05db32e), TOBN(0x5c76a331, 0x601f5636)}}, + {{TOBN(0xaae861ff, 0xf8a4f29c), TOBN(0x70dc9240, 0xd68f8d49), + TOBN(0x960e649f, 0x81b1321c), TOBN(0x3d2c801b, 0x8792e4ce)}, + {TOBN(0xf479f772, 0x42521876), TOBN(0x0bed93bc, 0x416c79b1), + TOBN(0xa67fbc05, 0x263e5bc9), TOBN(0x01e8e630, 0x521db049)}}, + {{TOBN(0x76f26738, 0xc6f3431e), TOBN(0xe609cb02, 0xe3267541), + TOBN(0xb10cff2d, 0x818c877c), TOBN(0x1f0e75ce, 0x786a13cb)}, + {TOBN(0xf4fdca64, 0x1158544d), TOBN(0x5d777e89, 0x6cb71ed0), + TOBN(0x3c233737, 0xa9aa4755), TOBN(0x7b453192, 0xe527ab40)}}, + {{TOBN(0xdb59f688, 0x39f05ffe), TOBN(0x8f4f4be0, 0x6d82574e), + TOBN(0xcce3450c, 0xee292d1b), TOBN(0xaa448a12, 0x61ccd086)}, + {TOBN(0xabce91b3, 0xf7914967), TOBN(0x4537f09b, 0x1908a5ed), + TOBN(0xa812421e, 0xf51042e7), TOBN(0xfaf5cebc, 0xec0b3a34)}}, + {{TOBN(0x730ffd87, 0x4ca6b39a), TOBN(0x70fb72ed, 0x02efd342), + TOBN(0xeb4735f9, 0xd75c8edb), TOBN(0xc11f2157, 0xc278aa51)}, + {TOBN(0xc459f635, 0xbf3bfebf), TOBN(0x3a1ff0b4, 0x6bd9601f), + TOBN(0xc9d12823, 0xc420cb73), TOBN(0x3e9af3e2, 0x3c2915a3)}}, + {{TOBN(0xe0c82c72, 0xb41c3440), TOBN(0x175239e5, 0xe3039a5f), + TOBN(0xe1084b8a, 0x558795a3), TOBN(0x328d0a1d, 0xd01e5c60)}, + {TOBN(0x0a495f2e, 0xd3788a04), TOBN(0x25d8ff16, 0x66c11a9f), + TOBN(0xf5155f05, 0x9ed692d6), TOBN(0x954fa107, 0x4f425fe4)}}, + {{TOBN(0xd16aabf2, 0xe98aaa99), TOBN(0x90cd8ba0, 0x96b0f88a), + TOBN(0x957f4782, 0xc154026a), TOBN(0x54ee0734, 0x52af56d2)}, + {TOBN(0xbcf89e54, 0x45b4147a), TOBN(0x3d102f21, 0x9a52816c), + TOBN(0x6808517e, 0x39b62e77), TOBN(0x92e25421, 0x69169ad8)}}, + {{TOBN(0xd721d871, 0xbb608558), TOBN(0x60e4ebae, 0xf6d4ff9b), + TOBN(0x0ba10819, 0x41f2763e), TOBN(0xca2e45be, 0x51ee3247)}, + {TOBN(0x66d172ec, 0x2bfd7a5f), TOBN(0x528a8f2f, 0x74d0b12d), + TOBN(0xe17f1e38, 0xdabe70dc), TOBN(0x1d5d7316, 0x9f93983c)}}, + {{TOBN(0x51b2184a, 0xdf423e31), TOBN(0xcb417291, 0xaedb1a10), + TOBN(0x2054ca93, 0x625bcab9), TOBN(0x54396860, 0xa98998f0)}, + {TOBN(0x4e53f6c4, 0xa54ae57e), TOBN(0x0ffeb590, 0xee648e9d), + TOBN(0xfbbdaadc, 0x6afaf6bc), TOBN(0xf88ae796, 0xaa3bfb8a)}}, + {{TOBN(0x209f1d44, 0xd2359ed9), TOBN(0xac68dd03, 0xf3544ce2), + TOBN(0xf378da47, 0xfd51e569), TOBN(0xe1abd860, 0x2cc80097)}, + {TOBN(0x23ca18d9, 0x343b6e3a), TOBN(0x480797e8, 0xb40a1bae), + TOBN(0xd1f0c717, 0x533f3e67), TOBN(0x44896970, 0x06e6cdfc)}}, + {{TOBN(0x8ca21055, 0x52a82e8d), TOBN(0xb2caf785, 0x78460cdc), + TOBN(0x4c1b7b62, 0xe9037178), TOBN(0xefc09d2c, 0xdb514b58)}, + {TOBN(0x5f2df9ee, 0x9113be5c), TOBN(0x2fbda78f, 0xb3f9271c), + TOBN(0xe09a81af, 0x8f83fc54), TOBN(0x06b13866, 0x8afb5141)}}, + {{TOBN(0x38f6480f, 0x43e3865d), TOBN(0x72dd77a8, 0x1ddf47d9), + TOBN(0xf2a8e971, 0x4c205ff7), TOBN(0x46d449d8, 0x9d088ad8)}, + {TOBN(0x926619ea, 0x185d706f), TOBN(0xe47e02eb, 0xc7dd7f62), + TOBN(0xe7f120a7, 0x8cbc2031), TOBN(0xc18bef00, 0x998d4ac9)}}, + {{TOBN(0x18f37a9c, 0x6bdf22da), TOBN(0xefbc432f, 0x90dc82df), + TOBN(0xc52cef8e, 0x5d703651), TOBN(0x82887ba0, 0xd99881a5)}, + {TOBN(0x7cec9dda, 0xb920ec1d), TOBN(0xd0d7e8c3, 0xec3e8d3b), + TOBN(0x445bc395, 0x4ca88747), TOBN(0xedeaa2e0, 0x9fd53535)}}, + {{TOBN(0x461b1d93, 0x6cc87475), TOBN(0xd92a52e2, 0x6d2383bd), + TOBN(0xfabccb59, 0xd7903546), TOBN(0x6111a761, 0x3d14b112)}, + {TOBN(0x0ae584fe, 0xb3d5f612), TOBN(0x5ea69b8d, 0x60e828ec), + TOBN(0x6c078985, 0x54087030), TOBN(0x649cab04, 0xac4821fe)}}, + {{TOBN(0x25ecedcf, 0x8bdce214), TOBN(0xb5622f72, 0x86af7361), + TOBN(0x0e1227aa, 0x7038b9e2), TOBN(0xd0efb273, 0xac20fa77)}, + {TOBN(0x817ff88b, 0x79df975b), TOBN(0x856bf286, 0x1999503e), + TOBN(0xb4d5351f, 0x5038ec46), TOBN(0x740a52c5, 0xfc42af6e)}}, + {{TOBN(0x2e38bb15, 0x2cbb1a3f), TOBN(0xc3eb99fe, 0x17a83429), + TOBN(0xca4fcbf1, 0xdd66bb74), TOBN(0x880784d6, 0xcde5e8fc)}, + {TOBN(0xddc84c1c, 0xb4e7a0be), TOBN(0x8780510d, 0xbd15a72f), + TOBN(0x44bcf1af, 0x81ec30e1), TOBN(0x141e50a8, 0x0a61073e)}}, + {{TOBN(0x0d955718, 0x47be87ae), TOBN(0x68a61417, 0xf76a4372), + TOBN(0xf57e7e87, 0xc607c3d3), TOBN(0x043afaf8, 0x5252f332)}, + {TOBN(0xcc14e121, 0x1552a4d2), TOBN(0xb6dee692, 0xbb4d4ab4), + TOBN(0xb6ab74c8, 0xa03816a4), TOBN(0x84001ae4, 0x6f394a29)}}, + {{TOBN(0x5bed8344, 0xd795fb45), TOBN(0x57326e7d, 0xb79f55a5), + TOBN(0xc9533ce0, 0x4accdffc), TOBN(0x53473caf, 0x3993fa04)}, + {TOBN(0x7906eb93, 0xa13df4c8), TOBN(0xa73e51f6, 0x97cbe46f), + TOBN(0xd1ab3ae1, 0x0ae4ccf8), TOBN(0x25614508, 0x8a5b3dbc)}}, + {{TOBN(0x61eff962, 0x11a71b27), TOBN(0xdf71412b, 0x6bb7fa39), + TOBN(0xb31ba6b8, 0x2bd7f3ef), TOBN(0xb0b9c415, 0x69180d29)}, + {TOBN(0xeec14552, 0x014cdde5), TOBN(0x702c624b, 0x227b4bbb), + TOBN(0x2b15e8c2, 0xd3e988f3), TOBN(0xee3bcc6d, 0xa4f7fd04)}}, + {{TOBN(0x9d00822a, 0x42ac6c85), TOBN(0x2db0cea6, 0x1df9f2b7), + TOBN(0xd7cad2ab, 0x42de1e58), TOBN(0x346ed526, 0x2d6fbb61)}, + {TOBN(0xb3962995, 0x1a2faf09), TOBN(0x2fa8a580, 0x7c25612e), + TOBN(0x30ae04da, 0x7cf56490), TOBN(0x75662908, 0x0eea3961)}}, + {{TOBN(0x3609f5c5, 0x3d080847), TOBN(0xcb081d39, 0x5241d4f6), + TOBN(0xb4fb3810, 0x77961a63), TOBN(0xc20c5984, 0x2abb66fc)}, + {TOBN(0x3d40aa7c, 0xf902f245), TOBN(0x9cb12736, 0x4e536b1e), + TOBN(0x5eda24da, 0x99b3134f), TOBN(0xafbd9c69, 0x5cd011af)}}, + {{TOBN(0x9a16e30a, 0xc7088c7d), TOBN(0x5ab65710, 0x3207389f), + TOBN(0x1b09547f, 0xe7407a53), TOBN(0x2322f9d7, 0x4fdc6eab)}, + {TOBN(0xc0f2f22d, 0x7430de4d), TOBN(0x19382696, 0xe68ca9a9), + TOBN(0x17f1eff1, 0x918e5868), TOBN(0xe3b5b635, 0x586f4204)}}, + {{TOBN(0x146ef980, 0x3fbc4341), TOBN(0x359f2c80, 0x5b5eed4e), + TOBN(0x9f35744e, 0x7482e41d), TOBN(0x9a9ac3ec, 0xf3b224c2)}, + {TOBN(0x9161a6fe, 0x91fc50ae), TOBN(0x89ccc66b, 0xc613fa7c), + TOBN(0x89268b14, 0xc732f15a), TOBN(0x7cd6f4e2, 0xb467ed03)}}, + {{TOBN(0xfbf79869, 0xce56b40e), TOBN(0xf93e094c, 0xc02dde98), + TOBN(0xefe0c3a8, 0xedee2cd7), TOBN(0x90f3ffc0, 0xb268fd42)}, + {TOBN(0x81a7fd56, 0x08241aed), TOBN(0x95ab7ad8, 0x00b1afe8), + TOBN(0x40127056, 0x3e310d52), TOBN(0xd3ffdeb1, 0x09d9fc43)}}, + {{TOBN(0xc8f85c91, 0xd11a8594), TOBN(0x2e74d258, 0x31cf6db8), + TOBN(0x829c7ca3, 0x02b5dfd0), TOBN(0xe389cfbe, 0x69143c86)}, + {TOBN(0xd01b6405, 0x941768d8), TOBN(0x45103995, 0x03bf825d), + TOBN(0xcc4ee166, 0x56cd17e2), TOBN(0xbea3c283, 0xba037e79)}}, + {{TOBN(0x4e1ac06e, 0xd9a47520), TOBN(0xfbfe18aa, 0xaf852404), + TOBN(0x5615f8e2, 0x8087648a), TOBN(0x7301e47e, 0xb9d150d9)}, + {TOBN(0x79f9f9dd, 0xb299b977), TOBN(0x76697a7b, 0xa5b78314), + TOBN(0x10d67468, 0x7d7c90e7), TOBN(0x7afffe03, 0x937210b5)}}, + {{TOBN(0x5aef3e4b, 0x28c22cee), TOBN(0xefb0ecd8, 0x09fd55ae), + TOBN(0x4cea7132, 0x0d2a5d6a), TOBN(0x9cfb5fa1, 0x01db6357)}, + {TOBN(0x395e0b57, 0xf36e1ac5), TOBN(0x008fa9ad, 0x36cafb7d), + TOBN(0x8f6cdf70, 0x5308c4db), TOBN(0x51527a37, 0x95ed2477)}}, + {{TOBN(0xba0dee30, 0x5bd21311), TOBN(0x6ed41b22, 0x909c90d7), + TOBN(0xc5f6b758, 0x7c8696d3), TOBN(0x0db8eaa8, 0x3ce83a80)}, + {TOBN(0xd297fe37, 0xb24b4b6f), TOBN(0xfe58afe8, 0x522d1f0d), + TOBN(0x97358736, 0x8c98dbd9), TOBN(0x6bc226ca, 0x9454a527)}}, + {{TOBN(0xa12b384e, 0xce53c2d0), TOBN(0x779d897d, 0x5e4606da), + TOBN(0xa53e47b0, 0x73ec12b0), TOBN(0x462dbbba, 0x5756f1ad)}, + {TOBN(0x69fe09f2, 0xcafe37b6), TOBN(0x273d1ebf, 0xecce2e17), + TOBN(0x8ac1d538, 0x3cf607fd), TOBN(0x8035f7ff, 0x12e10c25)}}}, + {{{TOBN(0x854d34c7, 0x7e6c5520), TOBN(0xc27df9ef, 0xdcb9ea58), + TOBN(0x405f2369, 0xd686666d), TOBN(0x29d1febf, 0x0417aa85)}, + {TOBN(0x9846819e, 0x93470afe), TOBN(0x3e6a9669, 0xe2a27f9e), + TOBN(0x24d008a2, 0xe31e6504), TOBN(0xdba7cecf, 0x9cb7680a)}}, + {{TOBN(0xecaff541, 0x338d6e43), TOBN(0x56f7dd73, 0x4541d5cc), + TOBN(0xb5d426de, 0x96bc88ca), TOBN(0x48d94f6b, 0x9ed3a2c3)}, + {TOBN(0x6354a3bb, 0x2ef8279c), TOBN(0xd575465b, 0x0b1867f2), + TOBN(0xef99b0ff, 0x95225151), TOBN(0xf3e19d88, 0xf94500d8)}}, + {{TOBN(0x92a83268, 0xe32dd620), TOBN(0x913ec99f, 0x627849a2), + TOBN(0xedd8fdfa, 0x2c378882), TOBN(0xaf96f33e, 0xee6f8cfe)}, + {TOBN(0xc06737e5, 0xdc3fa8a5), TOBN(0x236bb531, 0xb0b03a1d), + TOBN(0x33e59f29, 0x89f037b0), TOBN(0x13f9b5a7, 0xd9a12a53)}}, + {{TOBN(0x0d0df6ce, 0x51efb310), TOBN(0xcb5b2eb4, 0x958df5be), + TOBN(0xd6459e29, 0x36158e59), TOBN(0x82aae2b9, 0x1466e336)}, + {TOBN(0xfb658a39, 0x411aa636), TOBN(0x7152ecc5, 0xd4c0a933), + TOBN(0xf10c758a, 0x49f026b7), TOBN(0xf4837f97, 0xcb09311f)}}, + {{TOBN(0xddfb02c4, 0xc753c45f), TOBN(0x18ca81b6, 0xf9c840fe), + TOBN(0x846fd09a, 0xb0f8a3e6), TOBN(0xb1162add, 0xe7733dbc)}, + {TOBN(0x7070ad20, 0x236e3ab6), TOBN(0xf88cdaf5, 0xb2a56326), + TOBN(0x05fc8719, 0x997cbc7a), TOBN(0x442cd452, 0x4b665272)}}, + {{TOBN(0x7807f364, 0xb71698f5), TOBN(0x6ba418d2, 0x9f7b605e), + TOBN(0xfd20b00f, 0xa03b2cbb), TOBN(0x883eca37, 0xda54386f)}, + {TOBN(0xff0be43f, 0xf3437f24), TOBN(0xe910b432, 0xa48bb33c), + TOBN(0x4963a128, 0x329df765), TOBN(0xac1dd556, 0xbe2fe6f7)}}, + {{TOBN(0x557610f9, 0x24a0a3fc), TOBN(0x38e17bf4, 0xe881c3f9), + TOBN(0x6ba84faf, 0xed0dac99), TOBN(0xd4a222c3, 0x59eeb918)}, + {TOBN(0xc79c1dbe, 0x13f542b6), TOBN(0x1fc65e0d, 0xe425d457), + TOBN(0xeffb754f, 0x1debb779), TOBN(0x638d8fd0, 0x9e08af60)}}, + {{TOBN(0x994f523a, 0x626332d5), TOBN(0x7bc38833, 0x5561bb44), + TOBN(0x005ed4b0, 0x3d845ea2), TOBN(0xd39d3ee1, 0xc2a1f08a)}, + {TOBN(0x6561fdd3, 0xe7676b0d), TOBN(0x620e35ff, 0xfb706017), + TOBN(0x36ce424f, 0xf264f9a8), TOBN(0xc4c3419f, 0xda2681f7)}}, + {{TOBN(0xfb6afd2f, 0x69beb6e8), TOBN(0x3a50b993, 0x6d700d03), + TOBN(0xc840b2ad, 0x0c83a14f), TOBN(0x573207be, 0x54085bef)}, + {TOBN(0x5af882e3, 0x09fe7e5b), TOBN(0x957678a4, 0x3b40a7e1), + TOBN(0x172d4bdd, 0x543056e2), TOBN(0x9c1b26b4, 0x0df13c0a)}}, + {{TOBN(0x1c30861c, 0xf405ff06), TOBN(0xebac86bd, 0x486e828b), + TOBN(0xe791a971, 0x636933fc), TOBN(0x50e7c2be, 0x7aeee947)}, + {TOBN(0xc3d4a095, 0xfa90d767), TOBN(0xae60eb7b, 0xe670ab7b), + TOBN(0x17633a64, 0x397b056d), TOBN(0x93a21f33, 0x105012aa)}}, + {{TOBN(0x663c370b, 0xabb88643), TOBN(0x91df36d7, 0x22e21599), + TOBN(0x183ba835, 0x8b761671), TOBN(0x381eea1d, 0x728f3bf1)}, + {TOBN(0xb9b2f1ba, 0x39966e6c), TOBN(0x7c464a28, 0xe7295492), + TOBN(0x0fd5f70a, 0x09b26b7f), TOBN(0xa9aba1f9, 0xfbe009df)}}, + {{TOBN(0x857c1f22, 0x369b87ad), TOBN(0x3c00e5d9, 0x32fca556), + TOBN(0x1ad74cab, 0x90b06466), TOBN(0xa7112386, 0x550faaf2)}, + {TOBN(0x7435e198, 0x6d9bd5f5), TOBN(0x2dcc7e38, 0x59c3463f), + TOBN(0xdc7df748, 0xca7bd4b2), TOBN(0x13cd4c08, 0x9dec2f31)}}, + {{TOBN(0x0d3b5df8, 0xe3237710), TOBN(0x0dadb26e, 0xcbd2f7b0), + TOBN(0x9f5966ab, 0xe4aa082b), TOBN(0x666ec8de, 0x350e966e)}, + {TOBN(0x1bfd1ed5, 0xee524216), TOBN(0xcd93c59b, 0x41dab0b6), + TOBN(0x658a8435, 0xd186d6ba), TOBN(0x1b7d34d2, 0x159d1195)}}, + {{TOBN(0x5936e460, 0x22caf46b), TOBN(0x6a45dd8f, 0x9a96fe4f), + TOBN(0xf7925434, 0xb98f474e), TOBN(0x41410412, 0x0053ef15)}, + {TOBN(0x71cf8d12, 0x41de97bf), TOBN(0xb8547b61, 0xbd80bef4), + TOBN(0xb47d3970, 0xc4db0037), TOBN(0xf1bcd328, 0xfef20dff)}}, + {{TOBN(0x31a92e09, 0x10caad67), TOBN(0x1f591960, 0x5531a1e1), + TOBN(0x3bb852e0, 0x5f4fc840), TOBN(0x63e297ca, 0x93a72c6c)}, + {TOBN(0x3c2b0b2e, 0x49abad67), TOBN(0x6ec405fc, 0xed3db0d9), + TOBN(0xdc14a530, 0x7fef1d40), TOBN(0xccd19846, 0x280896fc)}}, + {{TOBN(0x00f83176, 0x9bb81648), TOBN(0xd69eb485, 0x653120d0), + TOBN(0xd17d75f4, 0x4ccabc62), TOBN(0x34a07f82, 0xb749fcb1)}, + {TOBN(0x2c3af787, 0xbbfb5554), TOBN(0xb06ed4d0, 0x62e283f8), + TOBN(0x5722889f, 0xa19213a0), TOBN(0x162b085e, 0xdcf3c7b4)}}, + {{TOBN(0xbcaecb31, 0xe0dd3eca), TOBN(0xc6237fbc, 0xe52f13a5), + TOBN(0xcc2b6b03, 0x27bac297), TOBN(0x2ae1cac5, 0xb917f54a)}, + {TOBN(0x474807d4, 0x7845ae4f), TOBN(0xfec7dd92, 0xce5972e0), + TOBN(0xc3bd2541, 0x1d7915bb), TOBN(0x66f85dc4, 0xd94907ca)}}, + {{TOBN(0xd981b888, 0xbdbcf0ca), TOBN(0xd75f5da6, 0xdf279e9f), + TOBN(0x128bbf24, 0x7054e934), TOBN(0x3c6ff6e5, 0x81db134b)}, + {TOBN(0x795b7cf4, 0x047d26e4), TOBN(0xf370f7b8, 0x5049ec37), + TOBN(0xc6712d4d, 0xced945af), TOBN(0xdf30b5ec, 0x095642bc)}}, + {{TOBN(0x9b034c62, 0x4896246e), TOBN(0x5652c016, 0xee90bbd1), + TOBN(0xeb38636f, 0x87fedb73), TOBN(0x5e32f847, 0x0135a613)}, + {TOBN(0x0703b312, 0xcf933c83), TOBN(0xd05bb76e, 0x1a7f47e6), + TOBN(0x825e4f0c, 0x949c2415), TOBN(0x569e5622, 0x7250d6f8)}}, + {{TOBN(0xbbe9eb3a, 0x6568013e), TOBN(0x8dbd203f, 0x22f243fc), + TOBN(0x9dbd7694, 0xb342734a), TOBN(0x8f6d12f8, 0x46afa984)}, + {TOBN(0xb98610a2, 0xc9eade29), TOBN(0xbab4f323, 0x47dd0f18), + TOBN(0x5779737b, 0x671c0d46), TOBN(0x10b6a7c6, 0xd3e0a42a)}}, + {{TOBN(0xfb19ddf3, 0x3035b41c), TOBN(0xd336343f, 0x99c45895), + TOBN(0x61fe4938, 0x54c857e5), TOBN(0xc4d506be, 0xae4e57d5)}, + {TOBN(0x3cd8c8cb, 0xbbc33f75), TOBN(0x7281f08a, 0x9262c77d), + TOBN(0x083f4ea6, 0xf11a2823), TOBN(0x8895041e, 0x9fba2e33)}}, + {{TOBN(0xfcdfea49, 0x9c438edf), TOBN(0x7678dcc3, 0x91edba44), + TOBN(0xf07b3b87, 0xe2ba50f0), TOBN(0xc13888ef, 0x43948c1b)}, + {TOBN(0xc2135ad4, 0x1140af42), TOBN(0x8e5104f3, 0x926ed1a7), + TOBN(0xf24430cb, 0x88f6695f), TOBN(0x0ce0637b, 0x6d73c120)}}, + {{TOBN(0xb2db01e6, 0xfe631e8f), TOBN(0x1c5563d7, 0xd7bdd24b), + TOBN(0x8daea3ba, 0x369ad44f), TOBN(0x000c81b6, 0x8187a9f9)}, + {TOBN(0x5f48a951, 0xaae1fd9a), TOBN(0xe35626c7, 0x8d5aed8a), + TOBN(0x20952763, 0x0498c622), TOBN(0x76d17634, 0x773aa504)}}, + {{TOBN(0x36d90dda, 0xeb300f7a), TOBN(0x9dcf7dfc, 0xedb5e801), + TOBN(0x645cb268, 0x74d5244c), TOBN(0xa127ee79, 0x348e3aa2)}, + {TOBN(0x488acc53, 0x575f1dbb), TOBN(0x95037e85, 0x80e6161e), + TOBN(0x57e59283, 0x292650d0), TOBN(0xabe67d99, 0x14938216)}}, + {{TOBN(0x3c7f944b, 0x3f8e1065), TOBN(0xed908cb6, 0x330e8924), + TOBN(0x08ee8fd5, 0x6f530136), TOBN(0x2227b7d5, 0xd7ffc169)}, + {TOBN(0x4f55c893, 0xb5cd6dd5), TOBN(0x82225e11, 0xa62796e8), + TOBN(0x5c6cead1, 0xcb18e12c), TOBN(0x4381ae0c, 0x84f5a51a)}}, + {{TOBN(0x345913d3, 0x7fafa4c8), TOBN(0x3d918082, 0x0491aac0), + TOBN(0x9347871f, 0x3e69264c), TOBN(0xbea9dd3c, 0xb4f4f0cd)}, + {TOBN(0xbda5d067, 0x3eadd3e7), TOBN(0x0033c1b8, 0x0573bcd8), + TOBN(0x25589379, 0x5da2486c), TOBN(0xcb89ee5b, 0x86abbee7)}}, + {{TOBN(0x8fe0a8f3, 0x22532e5d), TOBN(0xb6410ff0, 0x727dfc4c), + TOBN(0x619b9d58, 0x226726db), TOBN(0x5ec25669, 0x7a2b2dc7)}, + {TOBN(0xaf4d2e06, 0x4c3beb01), TOBN(0x852123d0, 0x7acea556), + TOBN(0x0e9470fa, 0xf783487a), TOBN(0x75a7ea04, 0x5664b3eb)}}, + {{TOBN(0x4ad78f35, 0x6798e4ba), TOBN(0x9214e6e5, 0xc7d0e091), + TOBN(0xc420b488, 0xb1290403), TOBN(0x64049e0a, 0xfc295749)}, + {TOBN(0x03ef5af1, 0x3ae9841f), TOBN(0xdbe4ca19, 0xb0b662a6), + TOBN(0x46845c5f, 0xfa453458), TOBN(0xf8dabf19, 0x10b66722)}}, + {{TOBN(0xb650f0aa, 0xcce2793b), TOBN(0x71db851e, 0xc5ec47c1), + TOBN(0x3eb78f3e, 0x3b234fa9), TOBN(0xb0c60f35, 0xfc0106ce)}, + {TOBN(0x05427121, 0x774eadbd), TOBN(0x25367faf, 0xce323863), + TOBN(0x7541b5c9, 0xcd086976), TOBN(0x4ff069e2, 0xdc507ad1)}}, + {{TOBN(0x74145256, 0x8776e667), TOBN(0x6e76142c, 0xb23c6bb5), + TOBN(0xdbf30712, 0x1b3a8a87), TOBN(0x60e7363e, 0x98450836)}, + {TOBN(0x5741450e, 0xb7366d80), TOBN(0xe4ee14ca, 0x4837dbdf), + TOBN(0xa765eb9b, 0x69d4316f), TOBN(0x04548dca, 0x8ef43825)}}, + {{TOBN(0x9c9f4e4c, 0x5ae888eb), TOBN(0x733abb51, 0x56e9ac99), + TOBN(0xdaad3c20, 0xba6ac029), TOBN(0x9b8dd3d3, 0x2ba3e38e)}, + {TOBN(0xa9bb4c92, 0x0bc5d11a), TOBN(0xf20127a7, 0x9c5f88a3), + TOBN(0x4f52b06e, 0x161d3cb8), TOBN(0x26c1ff09, 0x6afaf0a6)}}, + {{TOBN(0x32670d2f, 0x7189e71f), TOBN(0xc6438748, 0x5ecf91e7), + TOBN(0x15758e57, 0xdb757a21), TOBN(0x427d09f8, 0x290a9ce5)}, + {TOBN(0x846a308f, 0x38384a7a), TOBN(0xaac3acb4, 0xb0732b99), + TOBN(0x9e941009, 0x17845819), TOBN(0x95cba111, 0xa7ce5e03)}}, + {{TOBN(0x6f3d4f7f, 0xb00009c4), TOBN(0xb8396c27, 0x8ff28b5f), + TOBN(0xb1a9ae43, 0x1c97975d), TOBN(0x9d7ba8af, 0xe5d9fed5)}, + {TOBN(0x338cf09f, 0x34f485b6), TOBN(0xbc0ddacc, 0x64122516), + TOBN(0xa450da12, 0x05d471fe), TOBN(0x4c3a6250, 0x628dd8c9)}}, + {{TOBN(0x69c7d103, 0xd1295837), TOBN(0xa2893e50, 0x3807eb2f), + TOBN(0xd6e1e1de, 0xbdb41491), TOBN(0xc630745b, 0x5e138235)}, + {TOBN(0xc892109e, 0x48661ae1), TOBN(0x8d17e7eb, 0xea2b2674), + TOBN(0x00ec0f87, 0xc328d6b5), TOBN(0x6d858645, 0xf079ff9e)}}, + {{TOBN(0x6cdf243e, 0x19115ead), TOBN(0x1ce1393e, 0x4bac4fcf), + TOBN(0x2c960ed0, 0x9c29f25b), TOBN(0x59be4d8e, 0x9d388a05)}, + {TOBN(0x0d46e06c, 0xd0def72b), TOBN(0xb923db5d, 0xe0342748), + TOBN(0xf7d3aacd, 0x936d4a3d), TOBN(0x558519cc, 0x0b0b099e)}}, + {{TOBN(0x3ea8ebf8, 0x827097ef), TOBN(0x259353db, 0xd054f55d), + TOBN(0x84c89abc, 0x6d2ed089), TOBN(0x5c548b69, 0x8e096a7c)}, + {TOBN(0xd587f616, 0x994b995d), TOBN(0x4d1531f6, 0xa5845601), + TOBN(0x792ab31e, 0x451fd9f0), TOBN(0xc8b57bb2, 0x65adf6ca)}}, + {{TOBN(0x68440fcb, 0x1cd5ad73), TOBN(0xb9c860e6, 0x6144da4f), + TOBN(0x2ab286aa, 0x8462beb8), TOBN(0xcc6b8fff, 0xef46797f)}, + {TOBN(0xac820da4, 0x20c8a471), TOBN(0x69ae05a1, 0x77ff7faf), + TOBN(0xb9163f39, 0xbfb5da77), TOBN(0xbd03e590, 0x2c73ab7a)}}, + {{TOBN(0x7e862b5e, 0xb2940d9e), TOBN(0x3c663d86, 0x4b9af564), + TOBN(0xd8309031, 0xbde3033d), TOBN(0x298231b2, 0xd42c5bc6)}, + {TOBN(0x42090d2c, 0x552ad093), TOBN(0xa4799d1c, 0xff854695), + TOBN(0x0a88b5d6, 0xd31f0d00), TOBN(0xf8b40825, 0xa2f26b46)}}, + {{TOBN(0xec29b1ed, 0xf1bd7218), TOBN(0xd491c53b, 0x4b24c86e), + TOBN(0xd2fe588f, 0x3395ea65), TOBN(0x6f3764f7, 0x4456ef15)}, + {TOBN(0xdb43116d, 0xcdc34800), TOBN(0xcdbcd456, 0xc1e33955), + TOBN(0xefdb5540, 0x74ab286b), TOBN(0x948c7a51, 0xd18c5d7c)}}, + {{TOBN(0xeb81aa37, 0x7378058e), TOBN(0x41c746a1, 0x04411154), + TOBN(0xa10c73bc, 0xfb828ac7), TOBN(0x6439be91, 0x9d972b29)}, + {TOBN(0x4bf3b4b0, 0x43a2fbad), TOBN(0x39e6dadf, 0x82b5e840), + TOBN(0x4f716408, 0x6397bd4c), TOBN(0x0f7de568, 0x7f1eeccb)}}, + {{TOBN(0x5865c5a1, 0xd2ffbfc1), TOBN(0xf74211fa, 0x4ccb6451), + TOBN(0x66368a88, 0xc0b32558), TOBN(0x5b539dc2, 0x9ad7812e)}, + {TOBN(0x579483d0, 0x2f3af6f6), TOBN(0x52132078, 0x99934ece), + TOBN(0x50b9650f, 0xdcc9e983), TOBN(0xca989ec9, 0xaee42b8a)}}, + {{TOBN(0x6a44c829, 0xd6f62f99), TOBN(0x8f06a309, 0x4c2a7c0c), + TOBN(0x4ea2b3a0, 0x98a0cb0a), TOBN(0x5c547b70, 0xbeee8364)}, + {TOBN(0x461d40e1, 0x682afe11), TOBN(0x9e0fc77a, 0x7b41c0a8), + TOBN(0x79e4aefd, 0xe20d5d36), TOBN(0x2916e520, 0x32dd9f63)}}, + {{TOBN(0xf59e52e8, 0x3f883faf), TOBN(0x396f9639, 0x2b868d35), + TOBN(0xc902a9df, 0x4ca19881), TOBN(0x0fc96822, 0xdb2401a6)}, + {TOBN(0x41237587, 0x66f1c68d), TOBN(0x10fc6de3, 0xfb476c0d), + TOBN(0xf8b6b579, 0x841f5d90), TOBN(0x2ba8446c, 0xfa24f44a)}}, + {{TOBN(0xa237b920, 0xef4a9975), TOBN(0x60bb6004, 0x2330435f), + TOBN(0xd6f4ab5a, 0xcfb7e7b5), TOBN(0xb2ac5097, 0x83435391)}, + {TOBN(0xf036ee2f, 0xb0d1ea67), TOBN(0xae779a6a, 0x74c56230), + TOBN(0x59bff8c8, 0xab838ae6), TOBN(0xcd83ca99, 0x9b38e6f0)}}, + {{TOBN(0xbb27bef5, 0xe33deed3), TOBN(0xe6356f6f, 0x001892a8), + TOBN(0xbf3be6cc, 0x7adfbd3e), TOBN(0xaecbc81c, 0x33d1ac9d)}, + {TOBN(0xe4feb909, 0xe6e861dc), TOBN(0x90a247a4, 0x53f5f801), + TOBN(0x01c50acb, 0x27346e57), TOBN(0xce29242e, 0x461acc1b)}}, + {{TOBN(0x04dd214a, 0x2f998a91), TOBN(0x271ee9b1, 0xd4baf27b), + TOBN(0x7e3027d1, 0xe8c26722), TOBN(0x21d1645c, 0x1820dce5)}, + {TOBN(0x086f242c, 0x7501779c), TOBN(0xf0061407, 0xfa0e8009), + TOBN(0xf23ce477, 0x60187129), TOBN(0x05bbdedb, 0x0fde9bd0)}}, + {{TOBN(0x682f4832, 0x25d98473), TOBN(0xf207fe85, 0x5c658427), + TOBN(0xb6fdd7ba, 0x4166ffa1), TOBN(0x0c314056, 0x9eed799d)}, + {TOBN(0x0db8048f, 0x4107e28f), TOBN(0x74ed3871, 0x41216840), + TOBN(0x74489f8f, 0x56a3c06e), TOBN(0x1e1c005b, 0x12777134)}}, + {{TOBN(0xdb332a73, 0xf37ec3c3), TOBN(0xc65259bd, 0xdd59eba0), + TOBN(0x2291709c, 0xdb4d3257), TOBN(0x9a793b25, 0xbd389390)}, + {TOBN(0xf39fe34b, 0xe43756f0), TOBN(0x2f76bdce, 0x9afb56c9), + TOBN(0x9f37867a, 0x61208b27), TOBN(0xea1d4307, 0x089972c3)}}, + {{TOBN(0x8c595330, 0x8bdf623a), TOBN(0x5f5accda, 0x8441fb7d), + TOBN(0xfafa9418, 0x32ddfd95), TOBN(0x6ad40c5a, 0x0fde9be7)}, + {TOBN(0x43faba89, 0xaeca8709), TOBN(0xc64a7cf1, 0x2c248a9d), + TOBN(0x16620252, 0x72637a76), TOBN(0xaee1c791, 0x22b8d1bb)}}, + {{TOBN(0xf0f798fd, 0x21a843b2), TOBN(0x56e4ed4d, 0x8d005cb1), + TOBN(0x355f7780, 0x1f0d8abe), TOBN(0x197b04cf, 0x34522326)}, + {TOBN(0x41f9b31f, 0xfd42c13f), TOBN(0x5ef7feb2, 0xb40f933d), + TOBN(0x27326f42, 0x5d60bad4), TOBN(0x027ecdb2, 0x8c92cf89)}}, + {{TOBN(0x04aae4d1, 0x4e3352fe), TOBN(0x08414d2f, 0x73591b90), + TOBN(0x5ed6124e, 0xb7da7d60), TOBN(0xb985b931, 0x4d13d4ec)}, + {TOBN(0xa592d3ab, 0x96bf36f9), TOBN(0x012dbed5, 0xbbdf51df), + TOBN(0xa57963c0, 0xdf6c177d), TOBN(0x010ec869, 0x87ca29cf)}}, + {{TOBN(0xba1700f6, 0xbf926dff), TOBN(0x7c9fdbd1, 0xf4bf6bc2), + TOBN(0xdc18dc8f, 0x64da11f5), TOBN(0xa6074b7a, 0xd938ae75)}, + {TOBN(0x14270066, 0xe84f44a4), TOBN(0x99998d38, 0xd27b954e), + TOBN(0xc1be8ab2, 0xb4f38e9a), TOBN(0x8bb55bbf, 0x15c01016)}}, + {{TOBN(0xf73472b4, 0x0ea2ab30), TOBN(0xd365a340, 0xf73d68dd), + TOBN(0xc01a7168, 0x19c2e1eb), TOBN(0x32f49e37, 0x34061719)}, + {TOBN(0xb73c57f1, 0x01d8b4d6), TOBN(0x03c8423c, 0x26b47700), + TOBN(0x321d0bc8, 0xa4d8826a), TOBN(0x6004213c, 0x4bc0e638)}}, + {{TOBN(0xf78c64a1, 0xc1c06681), TOBN(0x16e0a16f, 0xef018e50), + TOBN(0x31cbdf91, 0xdb42b2b3), TOBN(0xf8f4ffce, 0xe0d36f58)}, + {TOBN(0xcdcc71cd, 0x4cc5e3e0), TOBN(0xd55c7cfa, 0xa129e3e0), + TOBN(0xccdb6ba0, 0x0fb2cbf1), TOBN(0x6aba0005, 0xc4bce3cb)}}, + {{TOBN(0x501cdb30, 0xd232cfc4), TOBN(0x9ddcf12e, 0xd58a3cef), + TOBN(0x02d2cf9c, 0x87e09149), TOBN(0xdc5d7ec7, 0x2c976257)}, + {TOBN(0x6447986e, 0x0b50d7dd), TOBN(0x88fdbaf7, 0x807f112a), + TOBN(0x58c9822a, 0xb00ae9f6), TOBN(0x6abfb950, 0x6d3d27e0)}}, + {{TOBN(0xd0a74487, 0x8a429f4f), TOBN(0x0649712b, 0xdb516609), + TOBN(0xb826ba57, 0xe769b5df), TOBN(0x82335df2, 0x1fc7aaf2)}, + {TOBN(0x2389f067, 0x5c93d995), TOBN(0x59ac367a, 0x68677be6), + TOBN(0xa77985ff, 0x21d9951b), TOBN(0x038956fb, 0x85011cce)}}, + {{TOBN(0x608e48cb, 0xbb734e37), TOBN(0xc08c0bf2, 0x2be5b26f), + TOBN(0x17bbdd3b, 0xf9b1a0d9), TOBN(0xeac7d898, 0x10483319)}, + {TOBN(0xc95c4baf, 0xbc1a6dea), TOBN(0xfdd0e2bf, 0x172aafdb), + TOBN(0x40373cbc, 0x8235c41a), TOBN(0x14303f21, 0xfb6f41d5)}}, + {{TOBN(0xba063621, 0x0408f237), TOBN(0xcad3b09a, 0xecd2d1ed), + TOBN(0x4667855a, 0x52abb6a2), TOBN(0xba9157dc, 0xaa8b417b)}, + {TOBN(0xfe7f3507, 0x4f013efb), TOBN(0x1b112c4b, 0xaa38c4a2), + TOBN(0xa1406a60, 0x9ba64345), TOBN(0xe53cba33, 0x6993c80b)}}, + {{TOBN(0x45466063, 0xded40d23), TOBN(0x3d5f1f4d, 0x54908e25), + TOBN(0x9ebefe62, 0x403c3c31), TOBN(0x274ea0b5, 0x0672a624)}, + {TOBN(0xff818d99, 0x451d1b71), TOBN(0x80e82643, 0x8f79cf79), + TOBN(0xa165df13, 0x73ce37f5), TOBN(0xa744ef4f, 0xfe3a21fd)}}, + {{TOBN(0x73f1e7f5, 0xcf551396), TOBN(0xc616898e, 0x868c676b), + TOBN(0x671c28c7, 0x8c442c36), TOBN(0xcfe5e558, 0x5e0a317d)}, + {TOBN(0x1242d818, 0x7051f476), TOBN(0x56fad2a6, 0x14f03442), + TOBN(0x262068bc, 0x0a44d0f6), TOBN(0xdfa2cd6e, 0xce6edf4e)}}, + {{TOBN(0x0f43813a, 0xd15d1517), TOBN(0x61214cb2, 0x377d44f5), + TOBN(0xd399aa29, 0xc639b35f), TOBN(0x42136d71, 0x54c51c19)}, + {TOBN(0x9774711b, 0x08417221), TOBN(0x0a5546b3, 0x52545a57), + TOBN(0x80624c41, 0x1150582d), TOBN(0x9ec5c418, 0xfbc555bc)}}, + {{TOBN(0x2c87dcad, 0x771849f1), TOBN(0xb0c932c5, 0x01d7bf6f), + TOBN(0x6aa5cd3e, 0x89116eb2), TOBN(0xd378c25a, 0x51ca7bd3)}, + {TOBN(0xc612a0da, 0x9e6e3e31), TOBN(0x0417a54d, 0xb68ad5d0), + TOBN(0x00451e4a, 0x22c6edb8), TOBN(0x9fbfe019, 0xb42827ce)}}, + {{TOBN(0x2fa92505, 0xba9384a2), TOBN(0x21b8596e, 0x64ad69c1), + TOBN(0x8f4fcc49, 0x983b35a6), TOBN(0xde093760, 0x72754672)}, + {TOBN(0x2f14ccc8, 0xf7bffe6d), TOBN(0x27566bff, 0x5d94263d), + TOBN(0xb5b4e9c6, 0x2df3ec30), TOBN(0x94f1d7d5, 0x3e6ea6ba)}}, + {{TOBN(0x97b7851a, 0xaaca5e9b), TOBN(0x518aa521, 0x56713b97), + TOBN(0x3357e8c7, 0x150a61f6), TOBN(0x7842e7e2, 0xec2c2b69)}, + {TOBN(0x8dffaf65, 0x6868a548), TOBN(0xd963bd82, 0xe068fc81), + TOBN(0x64da5c8b, 0x65917733), TOBN(0x927090ff, 0x7b247328)}}}, + {{{TOBN(0x214bc9a7, 0xd298c241), TOBN(0xe3b697ba, 0x56807cfd), + TOBN(0xef1c7802, 0x4564eadb), TOBN(0xdde8cdcf, 0xb48149c5)}, + {TOBN(0x946bf0a7, 0x5a4d2604), TOBN(0x27154d7f, 0x6c1538af), + TOBN(0x95cc9230, 0xde5b1fcc), TOBN(0xd88519e9, 0x66864f82)}}, + {{TOBN(0xb828dd1a, 0x7cb1282c), TOBN(0xa08d7626, 0xbe46973a), + TOBN(0x6baf8d40, 0xe708d6b2), TOBN(0x72571fa1, 0x4daeb3f3)}, + {TOBN(0x85b1732f, 0xf22dfd98), TOBN(0x87ab01a7, 0x0087108d), + TOBN(0xaaaafea8, 0x5988207a), TOBN(0xccc832f8, 0x69f00755)}}, + {{TOBN(0x964d950e, 0x36ff3bf0), TOBN(0x8ad20f6f, 0xf0b34638), + TOBN(0x4d9177b3, 0xb5d7585f), TOBN(0xcf839760, 0xef3f019f)}, + {TOBN(0x582fc5b3, 0x8288c545), TOBN(0x2f8e4e9b, 0x13116bd1), + TOBN(0xf91e1b2f, 0x332120ef), TOBN(0xcf568724, 0x2a17dd23)}}, + {{TOBN(0x488f1185, 0xca8d9d1a), TOBN(0xadf2c77d, 0xd987ded2), + TOBN(0x5f3039f0, 0x60c46124), TOBN(0xe5d70b75, 0x71e095f4)}, + {TOBN(0x82d58650, 0x6260e70f), TOBN(0x39d75ea7, 0xf750d105), + TOBN(0x8cf3d0b1, 0x75bac364), TOBN(0xf3a7564d, 0x21d01329)}}, + {{TOBN(0x182f04cd, 0x2f52d2a7), TOBN(0x4fde149a, 0xe2df565a), + TOBN(0xb80c5eec, 0xa79fb2f7), TOBN(0xab491d7b, 0x22ddc897)}, + {TOBN(0x99d76c18, 0xc6312c7f), TOBN(0xca0d5f3d, 0x6aa41a57), + TOBN(0x71207325, 0xd15363a0), TOBN(0xe82aa265, 0xbeb252c2)}}, + {{TOBN(0x94ab4700, 0xec3128c2), TOBN(0x6c76d862, 0x8e383f49), + TOBN(0xdc36b150, 0xc03024eb), TOBN(0xfb439477, 0x53daac69)}, + {TOBN(0xfc68764a, 0x8dc79623), TOBN(0x5b86995d, 0xb440fbb2), + TOBN(0xd66879bf, 0xccc5ee0d), TOBN(0x05228942, 0x95aa8bd3)}}, + {{TOBN(0xb51a40a5, 0x1e6a75c1), TOBN(0x24327c76, 0x0ea7d817), + TOBN(0x06630182, 0x07774597), TOBN(0xd6fdbec3, 0x97fa7164)}, + {TOBN(0x20c99dfb, 0x13c90f48), TOBN(0xd6ac5273, 0x686ef263), + TOBN(0xc6a50bdc, 0xfef64eeb), TOBN(0xcd87b281, 0x86fdfc32)}}, + {{TOBN(0xb24aa43e, 0x3fcd3efc), TOBN(0xdd26c034, 0xb8088e9a), + TOBN(0xa5ef4dc9, 0xbd3d46ea), TOBN(0xa2f99d58, 0x8a4c6a6f)}, + {TOBN(0xddabd355, 0x2f1da46c), TOBN(0x72c3f8ce, 0x1afacdd1), + TOBN(0xd90c4eee, 0x92d40578), TOBN(0xd28bb41f, 0xca623b94)}}, + {{TOBN(0x50fc0711, 0x745edc11), TOBN(0x9dd9ad7d, 0x3dc87558), + TOBN(0xce6931fb, 0xb49d1e64), TOBN(0x6c77a0a2, 0xc98bd0f9)}, + {TOBN(0x62b9a629, 0x6baf7cb1), TOBN(0xcf065f91, 0xccf72d22), + TOBN(0x7203cce9, 0x79639071), TOBN(0x09ae4885, 0xf9cb732f)}}, + {{TOBN(0x5e7c3bec, 0xee8314f3), TOBN(0x1c068aed, 0xdbea298f), + TOBN(0x08d381f1, 0x7c80acec), TOBN(0x03b56be8, 0xe330495b)}, + {TOBN(0xaeffb8f2, 0x9222882d), TOBN(0x95ff38f6, 0xc4af8bf7), + TOBN(0x50e32d35, 0x1fc57d8c), TOBN(0x6635be52, 0x17b444f0)}}, + {{TOBN(0x04d15276, 0xa5177900), TOBN(0x4e1dbb47, 0xf6858752), + TOBN(0x5b475622, 0xc615796c), TOBN(0xa6fa0387, 0x691867bf)}, + {TOBN(0xed7f5d56, 0x2844c6d0), TOBN(0xc633cf9b, 0x03a2477d), + TOBN(0xf6be5c40, 0x2d3721d6), TOBN(0xaf312eb7, 0xe9fd68e6)}}, + {{TOBN(0x242792d2, 0xe7417ce1), TOBN(0xff42bc71, 0x970ee7f5), + TOBN(0x1ff4dc6d, 0x5c67a41e), TOBN(0x77709b7b, 0x20882a58)}, + {TOBN(0x3554731d, 0xbe217f2c), TOBN(0x2af2a8cd, 0x5bb72177), + TOBN(0x58eee769, 0x591dd059), TOBN(0xbb2930c9, 0x4bba6477)}}, + {{TOBN(0x863ee047, 0x7d930cfc), TOBN(0x4c262ad1, 0x396fd1f4), + TOBN(0xf4765bc8, 0x039af7e1), TOBN(0x2519834b, 0x5ba104f6)}, + {TOBN(0x7cd61b4c, 0xd105f961), TOBN(0xa5415da5, 0xd63bca54), + TOBN(0x778280a0, 0x88a1f17c), TOBN(0xc4968949, 0x2329512c)}}, + {{TOBN(0x174a9126, 0xcecdaa7a), TOBN(0xfc8c7e0e, 0x0b13247b), + TOBN(0x29c110d2, 0x3484c1c4), TOBN(0xf8eb8757, 0x831dfc3b)}, + {TOBN(0x022f0212, 0xc0067452), TOBN(0x3f6f69ee, 0x7b9b926c), + TOBN(0x09032da0, 0xef42daf4), TOBN(0x79f00ade, 0x83f80de4)}}, + {{TOBN(0x6210db71, 0x81236c97), TOBN(0x74f7685b, 0x3ee0781f), + TOBN(0x4df7da7b, 0xa3e41372), TOBN(0x2aae38b1, 0xb1a1553e)}, + {TOBN(0x1688e222, 0xf6dd9d1b), TOBN(0x57695448, 0x5b8b6487), + TOBN(0x478d2127, 0x4b2edeaa), TOBN(0xb2818fa5, 0x1e85956a)}}, + {{TOBN(0x1e6addda, 0xf176f2c0), TOBN(0x01ca4604, 0xe2572658), + TOBN(0x0a404ded, 0x85342ffb), TOBN(0x8cf60f96, 0x441838d6)}, + {TOBN(0x9bbc691c, 0xc9071c4a), TOBN(0xfd588744, 0x34442803), + TOBN(0x97101c85, 0x809c0d81), TOBN(0xa7fb754c, 0x8c456f7f)}}, + {{TOBN(0xc95f3c5c, 0xd51805e1), TOBN(0xab4ccd39, 0xb299dca8), + TOBN(0x3e03d20b, 0x47eaf500), TOBN(0xfa3165c1, 0xd7b80893)}, + {TOBN(0x005e8b54, 0xe160e552), TOBN(0xdc4972ba, 0x9019d11f), + TOBN(0x21a6972e, 0x0c9a4a7a), TOBN(0xa52c258f, 0x37840fd7)}}, + {{TOBN(0xf8559ff4, 0xc1e99d81), TOBN(0x08e1a7d6, 0xa3c617c0), + TOBN(0xb398fd43, 0x248c6ba7), TOBN(0x6ffedd91, 0xd1283794)}, + {TOBN(0x8a6a59d2, 0xd629d208), TOBN(0xa9d141d5, 0x3490530e), + TOBN(0x42f6fc18, 0x38505989), TOBN(0x09bf250d, 0x479d94ee)}}, + {{TOBN(0x223ad3b1, 0xb3822790), TOBN(0x6c5926c0, 0x93b8971c), + TOBN(0x609efc7e, 0x75f7fa62), TOBN(0x45d66a6d, 0x1ec2d989)}, + {TOBN(0x4422d663, 0x987d2792), TOBN(0x4a73caad, 0x3eb31d2b), + TOBN(0xf06c2ac1, 0xa32cb9e6), TOBN(0xd9445c5f, 0x91aeba84)}}, + {{TOBN(0x6af7a1d5, 0xaf71013f), TOBN(0xe68216e5, 0x0bedc946), + TOBN(0xf4cba30b, 0xd27370a0), TOBN(0x7981afbf, 0x870421cc)}, + {TOBN(0x02496a67, 0x9449f0e1), TOBN(0x86cfc4be, 0x0a47edae), + TOBN(0x3073c936, 0xb1feca22), TOBN(0xf5694612, 0x03f8f8fb)}}, + {{TOBN(0xd063b723, 0x901515ea), TOBN(0x4c6c77a5, 0x749cf038), + TOBN(0x6361e360, 0xab9e5059), TOBN(0x596cf171, 0xa76a37c0)}, + {TOBN(0x800f53fa, 0x6530ae7a), TOBN(0x0f5e631e, 0x0792a7a6), + TOBN(0x5cc29c24, 0xefdb81c9), TOBN(0xa269e868, 0x3f9c40ba)}}, + {{TOBN(0xec14f9e1, 0x2cb7191e), TOBN(0x78ea1bd8, 0xe5b08ea6), + TOBN(0x3c65aa9b, 0x46332bb9), TOBN(0x84cc22b3, 0xbf80ce25)}, + {TOBN(0x0098e9e9, 0xd49d5bf1), TOBN(0xcd4ec1c6, 0x19087da4), + TOBN(0x3c9d07c5, 0xaef6e357), TOBN(0x839a0268, 0x9f8f64b8)}}, + {{TOBN(0xc5e9eb62, 0xc6d8607f), TOBN(0x759689f5, 0x6aa995e4), + TOBN(0x70464669, 0xbbb48317), TOBN(0x921474bf, 0xe402417d)}, + {TOBN(0xcabe135b, 0x2a354c8c), TOBN(0xd51e52d2, 0x812fa4b5), + TOBN(0xec741096, 0x53311fe8), TOBN(0x4f774535, 0xb864514b)}}, + {{TOBN(0xbcadd671, 0x5bde48f8), TOBN(0xc9703873, 0x2189bc7d), + TOBN(0x5d45299e, 0xc709ee8a), TOBN(0xd1287ee2, 0x845aaff8)}, + {TOBN(0x7d1f8874, 0xdb1dbf1f), TOBN(0xea46588b, 0x990c88d6), + TOBN(0x60ba649a, 0x84368313), TOBN(0xd5fdcbce, 0x60d543ae)}}, + {{TOBN(0x90b46d43, 0x810d5ab0), TOBN(0x6739d8f9, 0x04d7e5cc), + TOBN(0x021c1a58, 0x0d337c33), TOBN(0x00a61162, 0x68e67c40)}, + {TOBN(0x95ef413b, 0x379f0a1f), TOBN(0xfe126605, 0xe9e2ab95), + TOBN(0x67578b85, 0x2f5f199c), TOBN(0xf5c00329, 0x2cb84913)}}, + {{TOBN(0xf7956430, 0x37577dd8), TOBN(0x83b82af4, 0x29c5fe88), + TOBN(0x9c1bea26, 0xcdbdc132), TOBN(0x589fa086, 0x9c04339e)}, + {TOBN(0x033e9538, 0xb13799df), TOBN(0x85fa8b21, 0xd295d034), + TOBN(0xdf17f73f, 0xbd9ddcca), TOBN(0xf32bd122, 0xddb66334)}}, + {{TOBN(0x55ef88a7, 0x858b044c), TOBN(0x1f0d69c2, 0x5aa9e397), + TOBN(0x55fd9cc3, 0x40d85559), TOBN(0xc774df72, 0x7785ddb2)}, + {TOBN(0x5dcce9f6, 0xd3bd2e1c), TOBN(0xeb30da20, 0xa85dfed0), + TOBN(0x5ed7f5bb, 0xd3ed09c4), TOBN(0x7d42a35c, 0x82a9c1bd)}}, + {{TOBN(0xcf3de995, 0x9890272d), TOBN(0x75f3432a, 0x3e713a10), + TOBN(0x5e13479f, 0xe28227b8), TOBN(0xb8561ea9, 0xfefacdc8)}, + {TOBN(0xa6a297a0, 0x8332aafd), TOBN(0x9b0d8bb5, 0x73809b62), + TOBN(0xd2fa1cfd, 0x0c63036f), TOBN(0x7a16eb55, 0xbd64bda8)}}, + {{TOBN(0x3f5cf5f6, 0x78e62ddc), TOBN(0x2267c454, 0x07fd752b), + TOBN(0x5e361b6b, 0x5e437bbe), TOBN(0x95c59501, 0x8354e075)}, + {TOBN(0xec725f85, 0xf2b254d9), TOBN(0x844b617d, 0x2cb52b4e), + TOBN(0xed8554f5, 0xcf425fb5), TOBN(0xab67703e, 0x2af9f312)}}, + {{TOBN(0x4cc34ec1, 0x3cf48283), TOBN(0xb09daa25, 0x9c8a705e), + TOBN(0xd1e9d0d0, 0x5b7d4f84), TOBN(0x4df6ef64, 0xdb38929d)}, + {TOBN(0xe16b0763, 0xaa21ba46), TOBN(0xc6b1d178, 0xa293f8fb), + TOBN(0x0ff5b602, 0xd520aabf), TOBN(0x94d671bd, 0xc339397a)}}, + {{TOBN(0x7c7d98cf, 0x4f5792fa), TOBN(0x7c5e0d67, 0x11215261), + TOBN(0x9b19a631, 0xa7c5a6d4), TOBN(0xc8511a62, 0x7a45274d)}, + {TOBN(0x0c16621c, 0xa5a60d99), TOBN(0xf7fbab88, 0xcf5e48cb), + TOBN(0xab1e6ca2, 0xf7ddee08), TOBN(0x83bd08ce, 0xe7867f3c)}}, + {{TOBN(0xf7e48e8a, 0x2ac13e27), TOBN(0x4494f6df, 0x4eb1a9f5), + TOBN(0xedbf84eb, 0x981f0a62), TOBN(0x49badc32, 0x536438f0)}, + {TOBN(0x50bea541, 0x004f7571), TOBN(0xbac67d10, 0xdf1c94ee), + TOBN(0x253d73a1, 0xb727bc31), TOBN(0xb3d01cf2, 0x30686e28)}}, + {{TOBN(0x51b77b1b, 0x55fd0b8b), TOBN(0xa099d183, 0xfeec3173), + TOBN(0x202b1fb7, 0x670e72b7), TOBN(0xadc88b33, 0xa8e1635f)}, + {TOBN(0x34e8216a, 0xf989d905), TOBN(0xc2e68d20, 0x29b58d01), + TOBN(0x11f81c92, 0x6fe55a93), TOBN(0x15f1462a, 0x8f296f40)}}, + {{TOBN(0x1915d375, 0xea3d62f2), TOBN(0xa17765a3, 0x01c8977d), + TOBN(0x7559710a, 0xe47b26f6), TOBN(0xe0bd29c8, 0x535077a5)}, + {TOBN(0x615f976d, 0x08d84858), TOBN(0x370dfe85, 0x69ced5c1), + TOBN(0xbbc7503c, 0xa734fa56), TOBN(0xfbb9f1ec, 0x91ac4574)}}, + {{TOBN(0x95d7ec53, 0x060dd7ef), TOBN(0xeef2dacd, 0x6e657979), + TOBN(0x54511af3, 0xe2a08235), TOBN(0x1e324aa4, 0x1f4aea3d)}, + {TOBN(0x550e7e71, 0xe6e67671), TOBN(0xbccd5190, 0xbf52faf7), + TOBN(0xf880d316, 0x223cc62a), TOBN(0x0d402c7e, 0x2b32eb5d)}}, + {{TOBN(0xa40bc039, 0x306a5a3b), TOBN(0x4e0a41fd, 0x96783a1b), + TOBN(0xa1e8d39a, 0x0253cdd4), TOBN(0x6480be26, 0xc7388638)}, + {TOBN(0xee365e1d, 0x2285f382), TOBN(0x188d8d8f, 0xec0b5c36), + TOBN(0x34ef1a48, 0x1f0f4d82), TOBN(0x1a8f43e1, 0xa487d29a)}}, + {{TOBN(0x8168226d, 0x77aefb3a), TOBN(0xf69a751e, 0x1e72c253), + TOBN(0x8e04359a, 0xe9594df1), TOBN(0x475ffd7d, 0xd14c0467)}, + {TOBN(0xb5a2c2b1, 0x3844e95c), TOBN(0x85caf647, 0xdd12ef94), + TOBN(0x1ecd2a9f, 0xf1063d00), TOBN(0x1dd2e229, 0x23843311)}}, + {{TOBN(0x38f0e09d, 0x73d17244), TOBN(0x3ede7746, 0x8fc653f1), + TOBN(0xae4459f5, 0xdc20e21c), TOBN(0x00db2ffa, 0x6a8599ea)}, + {TOBN(0x11682c39, 0x30cfd905), TOBN(0x4934d074, 0xa5c112a6), + TOBN(0xbdf063c5, 0x568bfe95), TOBN(0x779a440a, 0x016c441a)}}, + {{TOBN(0x0c23f218, 0x97d6fbdc), TOBN(0xd3a5cd87, 0xe0776aac), + TOBN(0xcee37f72, 0xd712e8db), TOBN(0xfb28c70d, 0x26f74e8d)}, + {TOBN(0xffe0c728, 0xb61301a0), TOBN(0xa6282168, 0xd3724354), + TOBN(0x7ff4cb00, 0x768ffedc), TOBN(0xc51b3088, 0x03b02de9)}}, + {{TOBN(0xa5a8147c, 0x3902dda5), TOBN(0x35d2f706, 0xfe6973b4), + TOBN(0x5ac2efcf, 0xc257457e), TOBN(0x933f48d4, 0x8700611b)}, + {TOBN(0xc365af88, 0x4912beb2), TOBN(0x7f5a4de6, 0x162edf94), + TOBN(0xc646ba7c, 0x0c32f34b), TOBN(0x632c6af3, 0xb2091074)}}, + {{TOBN(0x58d4f2e3, 0x753e43a9), TOBN(0x70e1d217, 0x24d4e23f), + TOBN(0xb24bf729, 0xafede6a6), TOBN(0x7f4a94d8, 0x710c8b60)}, + {TOBN(0xaad90a96, 0x8d4faa6a), TOBN(0xd9ed0b32, 0xb066b690), + TOBN(0x52fcd37b, 0x78b6dbfd), TOBN(0x0b64615e, 0x8bd2b431)}}, + {{TOBN(0x228e2048, 0xcfb9fad5), TOBN(0xbeaa386d, 0x240b76bd), + TOBN(0x2d6681c8, 0x90dad7bc), TOBN(0x3e553fc3, 0x06d38f5e)}, + {TOBN(0xf27cdb9b, 0x9d5f9750), TOBN(0x3e85c52a, 0xd28c5b0e), + TOBN(0x190795af, 0x5247c39b), TOBN(0x547831eb, 0xbddd6828)}}, + {{TOBN(0xf327a227, 0x4a82f424), TOBN(0x36919c78, 0x7e47f89d), + TOBN(0xe4783919, 0x43c7392c), TOBN(0xf101b9aa, 0x2316fefe)}, + {TOBN(0xbcdc9e9c, 0x1c5009d2), TOBN(0xfb55ea13, 0x9cd18345), + TOBN(0xf5b5e231, 0xa3ce77c7), TOBN(0xde6b4527, 0xd2f2cb3d)}}, + {{TOBN(0x10f6a333, 0x9bb26f5f), TOBN(0x1e85db8e, 0x044d85b6), + TOBN(0xc3697a08, 0x94197e54), TOBN(0x65e18cc0, 0xa7cb4ea8)}, + {TOBN(0xa38c4f50, 0xa471fe6e), TOBN(0xf031747a, 0x2f13439c), + TOBN(0x53c4a6ba, 0xc007318b), TOBN(0xa8da3ee5, 0x1deccb3d)}}, + {{TOBN(0x0555b31c, 0x558216b1), TOBN(0x90c7810c, 0x2f79e6c2), + TOBN(0x9b669f4d, 0xfe8eed3c), TOBN(0x70398ec8, 0xe0fac126)}, + {TOBN(0xa96a449e, 0xf701b235), TOBN(0x0ceecdb3, 0xeb94f395), + TOBN(0x285fc368, 0xd0cb7431), TOBN(0x0d37bb52, 0x16a18c64)}}, + {{TOBN(0x05110d38, 0xb880d2dd), TOBN(0xa60f177b, 0x65930d57), + TOBN(0x7da34a67, 0xf36235f5), TOBN(0x47f5e17c, 0x183816b9)}, + {TOBN(0xc7664b57, 0xdb394af4), TOBN(0x39ba215d, 0x7036f789), + TOBN(0x46d2ca0e, 0x2f27b472), TOBN(0xc42647ee, 0xf73a84b7)}}, + {{TOBN(0x44bc7545, 0x64488f1d), TOBN(0xaa922708, 0xf4cf85d5), + TOBN(0x721a01d5, 0x53e4df63), TOBN(0x649c0c51, 0x5db46ced)}, + {TOBN(0x6bf0d64e, 0x3cffcb6c), TOBN(0xe3bf93fe, 0x50f71d96), + TOBN(0x75044558, 0xbcc194a0), TOBN(0x16ae3372, 0x6afdc554)}}, + {{TOBN(0xbfc01adf, 0x5ca48f3f), TOBN(0x64352f06, 0xe22a9b84), + TOBN(0xcee54da1, 0xc1099e4a), TOBN(0xbbda54e8, 0xfa1b89c0)}, + {TOBN(0x166a3df5, 0x6f6e55fb), TOBN(0x1ca44a24, 0x20176f88), + TOBN(0x936afd88, 0xdfb7b5ff), TOBN(0xe34c2437, 0x8611d4a0)}}, + {{TOBN(0x7effbb75, 0x86142103), TOBN(0x6704ba1b, 0x1f34fc4d), + TOBN(0x7c2a468f, 0x10c1b122), TOBN(0x36b3a610, 0x8c6aace9)}, + {TOBN(0xabfcc0a7, 0x75a0d050), TOBN(0x066f9197, 0x3ce33e32), + TOBN(0xce905ef4, 0x29fe09be), TOBN(0x89ee25ba, 0xa8376351)}}, + {{TOBN(0x2a3ede22, 0xfd29dc76), TOBN(0x7fd32ed9, 0x36f17260), + TOBN(0x0cadcf68, 0x284b4126), TOBN(0x63422f08, 0xa7951fc8)}, + {TOBN(0x562b24f4, 0x0807e199), TOBN(0xfe9ce5d1, 0x22ad4490), + TOBN(0xc2f51b10, 0x0db2b1b4), TOBN(0xeb3613ff, 0xe4541d0d)}}, + {{TOBN(0xbd2c4a05, 0x2680813b), TOBN(0x527aa55d, 0x561b08d6), + TOBN(0xa9f8a40e, 0xa7205558), TOBN(0xe3eea56f, 0x243d0bec)}, + {TOBN(0x7b853817, 0xa0ff58b3), TOBN(0xb67d3f65, 0x1a69e627), + TOBN(0x0b76bbb9, 0xa869b5d6), TOBN(0xa3afeb82, 0x546723ed)}}, + {{TOBN(0x5f24416d, 0x3e554892), TOBN(0x8413b53d, 0x430e2a45), + TOBN(0x99c56aee, 0x9032a2a0), TOBN(0x09432bf6, 0xeec367b1)}, + {TOBN(0x552850c6, 0xdaf0ecc1), TOBN(0x49ebce55, 0x5bc92048), + TOBN(0xdfb66ba6, 0x54811307), TOBN(0x1b84f797, 0x6f298597)}}, + {{TOBN(0x79590481, 0x8d1d7a0d), TOBN(0xd9fabe03, 0x3a6fa556), + TOBN(0xa40f9c59, 0xba9e5d35), TOBN(0xcb1771c1, 0xf6247577)}, + {TOBN(0x542a47ca, 0xe9a6312b), TOBN(0xa34b3560, 0x552dd8c5), + TOBN(0xfdf94de0, 0x0d794716), TOBN(0xd46124a9, 0x9c623094)}}, + {{TOBN(0x56b7435d, 0x68afe8b4), TOBN(0x27f20540, 0x6c0d8ea1), + TOBN(0x12b77e14, 0x73186898), TOBN(0xdbc3dd46, 0x7479490f)}, + {TOBN(0x951a9842, 0xc03b0c05), TOBN(0x8b1b3bb3, 0x7921bc96), + TOBN(0xa573b346, 0x2b202e0a), TOBN(0x77e4665d, 0x47254d56)}}, + {{TOBN(0x08b70dfc, 0xd23e3984), TOBN(0xab86e8bc, 0xebd14236), + TOBN(0xaa3e07f8, 0x57114ba7), TOBN(0x5ac71689, 0xab0ef4f2)}, + {TOBN(0x88fca384, 0x0139d9af), TOBN(0x72733f88, 0x76644af0), + TOBN(0xf122f72a, 0x65d74f4a), TOBN(0x13931577, 0xa5626c7a)}}, + {{TOBN(0xd5b5d9eb, 0x70f8d5a4), TOBN(0x375adde7, 0xd7bbb228), + TOBN(0x31e88b86, 0x0c1c0b32), TOBN(0xd1f568c4, 0x173edbaa)}, + {TOBN(0x1592fc83, 0x5459df02), TOBN(0x2beac0fb, 0x0fcd9a7e), + TOBN(0xb0a6fdb8, 0x1b473b0a), TOBN(0xe3224c6f, 0x0fe8fc48)}}, + {{TOBN(0x680bd00e, 0xe87edf5b), TOBN(0x30385f02, 0x20e77cf5), + TOBN(0xe9ab98c0, 0x4d42d1b2), TOBN(0x72d191d2, 0xd3816d77)}, + {TOBN(0x1564daca, 0x0917d9e5), TOBN(0x394eab59, 0x1f8fed7f), + TOBN(0xa209aa8d, 0x7fbb3896), TOBN(0x5564f3b9, 0xbe6ac98e)}}, + {{TOBN(0xead21d05, 0xd73654ef), TOBN(0x68d1a9c4, 0x13d78d74), + TOBN(0x61e01708, 0x6d4973a0), TOBN(0x83da3500, 0x46e6d32a)}, + {TOBN(0x6a3dfca4, 0x68ae0118), TOBN(0xa1b9a4c9, 0xd02da069), + TOBN(0x0b2ff9c7, 0xebab8302), TOBN(0x98af07c3, 0x944ba436)}}, + {{TOBN(0x85997326, 0x995f0f9f), TOBN(0x467fade0, 0x71b58bc6), + TOBN(0x47e4495a, 0xbd625a2b), TOBN(0xfdd2d01d, 0x33c3b8cd)}, + {TOBN(0x2c38ae28, 0xc693f9fa), TOBN(0x48622329, 0x348f7999), + TOBN(0x97bf738e, 0x2161f583), TOBN(0x15ee2fa7, 0x565e8cc9)}}, + {{TOBN(0xa1a5c845, 0x5777e189), TOBN(0xcc10bee0, 0x456f2829), + TOBN(0x8ad95c56, 0xda762bd5), TOBN(0x152e2214, 0xe9d91da8)}, + {TOBN(0x975b0e72, 0x7cb23c74), TOBN(0xfd5d7670, 0xa90c66df), + TOBN(0xb5b5b8ad, 0x225ffc53), TOBN(0xab6dff73, 0xfaded2ae)}}, + {{TOBN(0xebd56781, 0x6f4cbe9d), TOBN(0x0ed8b249, 0x6a574bd7), + TOBN(0x41c246fe, 0x81a881fa), TOBN(0x91564805, 0xc3db9c70)}, + {TOBN(0xd7c12b08, 0x5b862809), TOBN(0x1facd1f1, 0x55858d7b), + TOBN(0x7693747c, 0xaf09e92a), TOBN(0x3b69dcba, 0x189a425f)}}, + {{TOBN(0x0be28e9f, 0x967365ef), TOBN(0x57300eb2, 0xe801f5c9), + TOBN(0x93b8ac6a, 0xd583352f), TOBN(0xa2cf1f89, 0xcd05b2b7)}, + {TOBN(0x7c0c9b74, 0x4dcc40cc), TOBN(0xfee38c45, 0xada523fb), + TOBN(0xb49a4dec, 0x1099cc4d), TOBN(0x325c377f, 0x69f069c6)}}, + {{TOBN(0xe12458ce, 0x476cc9ff), TOBN(0x580e0b6c, 0xc6d4cb63), + TOBN(0xd561c8b7, 0x9072289b), TOBN(0x0377f264, 0xa619e6da)}, + {TOBN(0x26685362, 0x88e591a5), TOBN(0xa453a7bd, 0x7523ca2b), + TOBN(0x8a9536d2, 0xc1df4533), TOBN(0xc8e50f2f, 0xbe972f79)}}, + {{TOBN(0xd433e50f, 0x6d3549cf), TOBN(0x6f33696f, 0xfacd665e), + TOBN(0x695bfdac, 0xce11fcb4), TOBN(0x810ee252, 0xaf7c9860)}, + {TOBN(0x65450fe1, 0x7159bb2c), TOBN(0xf7dfbebe, 0x758b357b), + TOBN(0x2b057e74, 0xd69fea72), TOBN(0xd485717a, 0x92731745)}}}, + {{{TOBN(0x896c42e8, 0xee36860c), TOBN(0xdaf04dfd, 0x4113c22d), + TOBN(0x1adbb7b7, 0x44104213), TOBN(0xe5fd5fa1, 0x1fd394ea)}, + {TOBN(0x68235d94, 0x1a4e0551), TOBN(0x6772cfbe, 0x18d10151), + TOBN(0x276071e3, 0x09984523), TOBN(0xe4e879de, 0x5a56ba98)}}, + {{TOBN(0xaaafafb0, 0x285b9491), TOBN(0x01a0be88, 0x1e4c705e), + TOBN(0xff1d4f5d, 0x2ad9caab), TOBN(0x6e349a4a, 0xc37a233f)}, + {TOBN(0xcf1c1246, 0x4a1c6a16), TOBN(0xd99e6b66, 0x29383260), + TOBN(0xea3d4366, 0x5f6d5471), TOBN(0x36974d04, 0xff8cc89b)}}, + {{TOBN(0xc26c49a1, 0xcfe89d80), TOBN(0xb42c026d, 0xda9c8371), + TOBN(0xca6c013a, 0xdad066d2), TOBN(0xfb8f7228, 0x56a4f3ee)}, + {TOBN(0x08b579ec, 0xd850935b), TOBN(0x34c1a74c, 0xd631e1b3), + TOBN(0xcb5fe596, 0xac198534), TOBN(0x39ff21f6, 0xe1f24f25)}}, + {{TOBN(0x27f29e14, 0x8f929057), TOBN(0x7a64ae06, 0xc0c853df), + TOBN(0x256cd183, 0x58e9c5ce), TOBN(0x9d9cce82, 0xded092a5)}, + {TOBN(0xcc6e5979, 0x6e93b7c7), TOBN(0xe1e47092, 0x31bb9e27), + TOBN(0xb70b3083, 0xaa9e29a0), TOBN(0xbf181a75, 0x3785e644)}}, + {{TOBN(0xf53f2c65, 0x8ead09f7), TOBN(0x1335e1d5, 0x9780d14d), + TOBN(0x69cc20e0, 0xcd1b66bc), TOBN(0x9b670a37, 0xbbe0bfc8)}, + {TOBN(0xce53dc81, 0x28efbeed), TOBN(0x0c74e77c, 0x8326a6e5), + TOBN(0x3604e0d2, 0xb88e9a63), TOBN(0xbab38fca, 0x13dc2248)}}, + {{TOBN(0x8ed6e8c8, 0x5c0a3f1e), TOBN(0xbcad2492, 0x7c87c37f), + TOBN(0xfdfb62bb, 0x9ee3b78d), TOBN(0xeba8e477, 0xcbceba46)}, + {TOBN(0x37d38cb0, 0xeeaede4b), TOBN(0x0bc498e8, 0x7976deb6), + TOBN(0xb2944c04, 0x6b6147fb), TOBN(0x8b123f35, 0xf71f9609)}}, + {{TOBN(0xa155dcc7, 0xde79dc24), TOBN(0xf1168a32, 0x558f69cd), + TOBN(0xbac21595, 0x0d1850df), TOBN(0x15c8295b, 0xb204c848)}, + {TOBN(0xf661aa36, 0x7d8184ff), TOBN(0xc396228e, 0x30447bdb), + TOBN(0x11cd5143, 0xbde4a59e), TOBN(0xe3a26e3b, 0x6beab5e6)}}, + {{TOBN(0xd3b3a13f, 0x1402b9d0), TOBN(0x573441c3, 0x2c7bc863), + TOBN(0x4b301ec4, 0x578c3e6e), TOBN(0xc26fc9c4, 0x0adaf57e)}, + {TOBN(0x96e71bfd, 0x7493cea3), TOBN(0xd05d4b3f, 0x1af81456), + TOBN(0xdaca2a8a, 0x6a8c608f), TOBN(0x53ef07f6, 0x0725b276)}}, + {{TOBN(0x07a5fbd2, 0x7824fc56), TOBN(0x34675218, 0x13289077), + TOBN(0x5bf69fd5, 0xe0c48349), TOBN(0xa613ddd3, 0xb6aa7875)}, + {TOBN(0x7f78c19c, 0x5450d866), TOBN(0x46f4409c, 0x8f84a481), + TOBN(0x9f1d1928, 0x90fce239), TOBN(0x016c4168, 0xb2ce44b9)}}, + {{TOBN(0xbae023f0, 0xc7435978), TOBN(0xb152c888, 0x20e30e19), + TOBN(0x9c241645, 0xe3fa6faf), TOBN(0x735d95c1, 0x84823e60)}, + {TOBN(0x03197573, 0x03955317), TOBN(0x0b4b02a9, 0xf03b4995), + TOBN(0x076bf559, 0x70274600), TOBN(0x32c5cc53, 0xaaf57508)}}, + {{TOBN(0xe8af6d1f, 0x60624129), TOBN(0xb7bc5d64, 0x9a5e2b5e), + TOBN(0x3814b048, 0x5f082d72), TOBN(0x76f267f2, 0xce19677a)}, + {TOBN(0x626c630f, 0xb36eed93), TOBN(0x55230cd7, 0x3bf56803), + TOBN(0x78837949, 0xce2736a0), TOBN(0x0d792d60, 0xaa6c55f1)}}, + {{TOBN(0x0318dbfd, 0xd5c7c5d2), TOBN(0xb38f8da7, 0x072b342d), + TOBN(0x3569bddc, 0x7b8de38a), TOBN(0xf25b5887, 0xa1c94842)}, + {TOBN(0xb2d5b284, 0x2946ad60), TOBN(0x854f29ad, 0xe9d1707e), + TOBN(0xaa5159dc, 0x2c6a4509), TOBN(0x899f94c0, 0x57189837)}}, + {{TOBN(0xcf6adc51, 0xf4a55b03), TOBN(0x261762de, 0x35e3b2d5), + TOBN(0x4cc43012, 0x04827b51), TOBN(0xcd22a113, 0xc6021442)}, + {TOBN(0xce2fd61a, 0x247c9569), TOBN(0x59a50973, 0xd152beca), + TOBN(0x6c835a11, 0x63a716d4), TOBN(0xc26455ed, 0x187dedcf)}}, + {{TOBN(0x27f536e0, 0x49ce89e7), TOBN(0x18908539, 0xcc890cb5), + TOBN(0x308909ab, 0xd83c2aa1), TOBN(0xecd3142b, 0x1ab73bd3)}, + {TOBN(0x6a85bf59, 0xb3f5ab84), TOBN(0x3c320a68, 0xf2bea4c6), + TOBN(0xad8dc538, 0x6da4541f), TOBN(0xeaf34eb0, 0xb7c41186)}}, + {{TOBN(0x1c780129, 0x977c97c4), TOBN(0x5ff9beeb, 0xc57eb9fa), + TOBN(0xa24d0524, 0xc822c478), TOBN(0xfd8eec2a, 0x461cd415)}, + {TOBN(0xfbde194e, 0xf027458c), TOBN(0xb4ff5319, 0x1d1be115), + TOBN(0x63f874d9, 0x4866d6f4), TOBN(0x35c75015, 0xb21ad0c9)}}, + {{TOBN(0xa6b5c9d6, 0x46ac49d2), TOBN(0x42c77c0b, 0x83137aa9), + TOBN(0x24d000fc, 0x68225a38), TOBN(0x0f63cfc8, 0x2fe1e907)}, + {TOBN(0x22d1b01b, 0xc6441f95), TOBN(0x7d38f719, 0xec8e448f), + TOBN(0x9b33fa5f, 0x787fb1ba), TOBN(0x94dcfda1, 0x190158df)}}, + {{TOBN(0xc47cb339, 0x5f6d4a09), TOBN(0x6b4f355c, 0xee52b826), + TOBN(0x3d100f5d, 0xf51b930a), TOBN(0xf4512fac, 0x9f668f69)}, + {TOBN(0x546781d5, 0x206c4c74), TOBN(0xd021d4d4, 0xcb4d2e48), + TOBN(0x494a54c2, 0xca085c2d), TOBN(0xf1dbaca4, 0x520850a8)}}, + {{TOBN(0x63c79326, 0x490a1aca), TOBN(0xcb64dd9c, 0x41526b02), + TOBN(0xbb772591, 0xa2979258), TOBN(0x3f582970, 0x48d97846)}, + {TOBN(0xd66b70d1, 0x7c213ba7), TOBN(0xc28febb5, 0xe8a0ced4), + TOBN(0x6b911831, 0xc10338c1), TOBN(0x0d54e389, 0xbf0126f3)}}, + {{TOBN(0x7048d460, 0x4af206ee), TOBN(0x786c88f6, 0x77e97cb9), + TOBN(0xd4375ae1, 0xac64802e), TOBN(0x469bcfe1, 0xd53ec11c)}, + {TOBN(0xfc9b340d, 0x47062230), TOBN(0xe743bb57, 0xc5b4a3ac), + TOBN(0xfe00b4aa, 0x59ef45ac), TOBN(0x29a4ef23, 0x59edf188)}}, + {{TOBN(0x40242efe, 0xb483689b), TOBN(0x2575d3f6, 0x513ac262), + TOBN(0xf30037c8, 0x0ca6db72), TOBN(0xc9fcce82, 0x98864be2)}, + {TOBN(0x84a112ff, 0x0149362d), TOBN(0x95e57582, 0x1c4ae971), + TOBN(0x1fa4b1a8, 0x945cf86c), TOBN(0x4525a734, 0x0b024a2f)}}, + {{TOBN(0xe76c8b62, 0x8f338360), TOBN(0x483ff593, 0x28edf32b), + TOBN(0x67e8e90a, 0x298b1aec), TOBN(0x9caab338, 0x736d9a21)}, + {TOBN(0x5c09d2fd, 0x66892709), TOBN(0x2496b4dc, 0xb55a1d41), + TOBN(0x93f5fb1a, 0xe24a4394), TOBN(0x08c75049, 0x6fa8f6c1)}}, + {{TOBN(0xcaead1c2, 0xc905d85f), TOBN(0xe9d7f790, 0x0733ae57), + TOBN(0x24c9a65c, 0xf07cdd94), TOBN(0x7389359c, 0xa4b55931)}, + {TOBN(0xf58709b7, 0x367e45f7), TOBN(0x1f203067, 0xcb7e7adc), + TOBN(0x82444bff, 0xc7b72818), TOBN(0x07303b35, 0xbaac8033)}}, + {{TOBN(0x1e1ee4e4, 0xd13b7ea1), TOBN(0xe6489b24, 0xe0e74180), + TOBN(0xa5f2c610, 0x7e70ef70), TOBN(0xa1655412, 0xbdd10894)}, + {TOBN(0x555ebefb, 0x7af4194e), TOBN(0x533c1c3c, 0x8e89bd9c), + TOBN(0x735b9b57, 0x89895856), TOBN(0x15fb3cd2, 0x567f5c15)}}, + {{TOBN(0x057fed45, 0x526f09fd), TOBN(0xe8a4f10c, 0x8128240a), + TOBN(0x9332efc4, 0xff2bfd8d), TOBN(0x214e77a0, 0xbd35aa31)}, + {TOBN(0x32896d73, 0x14faa40e), TOBN(0x767867ec, 0x01e5f186), + TOBN(0xc9adf8f1, 0x17a1813e), TOBN(0xcb6cda78, 0x54741795)}}, + {{TOBN(0xb7521b6d, 0x349d51aa), TOBN(0xf56b5a9e, 0xe3c7b8e9), + TOBN(0xc6f1e5c9, 0x32a096df), TOBN(0x083667c4, 0xa3635024)}, + {TOBN(0x365ea135, 0x18087f2f), TOBN(0xf1b8eaac, 0xd136e45d), + TOBN(0xc8a0e484, 0x73aec989), TOBN(0xd75a324b, 0x142c9259)}}, + {{TOBN(0xb7b4d001, 0x01dae185), TOBN(0x45434e0b, 0x9b7a94bc), + TOBN(0xf54339af, 0xfbd8cb0b), TOBN(0xdcc4569e, 0xe98ef49e)}, + {TOBN(0x7789318a, 0x09a51299), TOBN(0x81b4d206, 0xb2b025d8), + TOBN(0xf64aa418, 0xfae85792), TOBN(0x3e50258f, 0xacd7baf7)}}, + {{TOBN(0xdce84cdb, 0x2996864b), TOBN(0xa2e67089, 0x1f485fa4), + TOBN(0xb28b2bb6, 0x534c6a5a), TOBN(0x31a7ec6b, 0xc94b9d39)}, + {TOBN(0x1d217766, 0xd6bc20da), TOBN(0x4acdb5ec, 0x86761190), + TOBN(0x68726328, 0x73701063), TOBN(0x4d24ee7c, 0x2128c29b)}}, + {{TOBN(0xc072ebd3, 0xa19fd868), TOBN(0x612e481c, 0xdb8ddd3b), + TOBN(0xb4e1d754, 0x1a64d852), TOBN(0x00ef95ac, 0xc4c6c4ab)}, + {TOBN(0x1536d2ed, 0xaa0a6c46), TOBN(0x61294086, 0x43774790), + TOBN(0x54af25e8, 0x343fda10), TOBN(0x9ff9d98d, 0xfd25d6f2)}}, + {{TOBN(0x0746af7c, 0x468b8835), TOBN(0x977a31cb, 0x730ecea7), + TOBN(0xa5096b80, 0xc2cf4a81), TOBN(0xaa986833, 0x6458c37a)}, + {TOBN(0x6af29bf3, 0xa6bd9d34), TOBN(0x6a62fe9b, 0x33c5d854), + TOBN(0x50e6c304, 0xb7133b5e), TOBN(0x04b60159, 0x7d6e6848)}}, + {{TOBN(0x4cd296df, 0x5579bea4), TOBN(0x10e35ac8, 0x5ceedaf1), + TOBN(0x04c4c5fd, 0xe3bcc5b1), TOBN(0x95f9ee8a, 0x89412cf9)}, + {TOBN(0x2c9459ee, 0x82b6eb0f), TOBN(0x2e845765, 0x95c2aadd), + TOBN(0x774a84ae, 0xd327fcfe), TOBN(0xd8c93722, 0x0368d476)}}, + {{TOBN(0x0dbd5748, 0xf83e8a3b), TOBN(0xa579aa96, 0x8d2495f3), + TOBN(0x535996a0, 0xae496e9b), TOBN(0x07afbfe9, 0xb7f9bcc2)}, + {TOBN(0x3ac1dc6d, 0x5b7bd293), TOBN(0x3b592cff, 0x7022323d), + TOBN(0xba0deb98, 0x9c0a3e76), TOBN(0x18e78e9f, 0x4b197acb)}}, + {{TOBN(0x211cde10, 0x296c36ef), TOBN(0x7ee89672, 0x82c4da77), + TOBN(0xb617d270, 0xa57836da), TOBN(0xf0cd9c31, 0x9cb7560b)}, + {TOBN(0x01fdcbf7, 0xe455fe90), TOBN(0x3fb53cbb, 0x7e7334f3), + TOBN(0x781e2ea4, 0x4e7de4ec), TOBN(0x8adab3ad, 0x0b384fd0)}}, + {{TOBN(0x129eee2f, 0x53d64829), TOBN(0x7a471e17, 0xa261492b), + TOBN(0xe4f9adb9, 0xe4cb4a2c), TOBN(0x3d359f6f, 0x97ba2c2d)}, + {TOBN(0x346c6786, 0x0aacd697), TOBN(0x92b444c3, 0x75c2f8a8), + TOBN(0xc79fa117, 0xd85df44e), TOBN(0x56782372, 0x398ddf31)}}, + {{TOBN(0x60e690f2, 0xbbbab3b8), TOBN(0x4851f8ae, 0x8b04816b), + TOBN(0xc72046ab, 0x9c92e4d2), TOBN(0x518c74a1, 0x7cf3136b)}, + {TOBN(0xff4eb50a, 0xf9877d4c), TOBN(0x14578d90, 0xa919cabb), + TOBN(0x8218f8c4, 0xac5eb2b6), TOBN(0xa3ccc547, 0x542016e4)}}, + {{TOBN(0x025bf48e, 0x327f8349), TOBN(0xf3e97346, 0xf43cb641), + TOBN(0xdc2bafdf, 0x500f1085), TOBN(0x57167876, 0x2f063055)}, + {TOBN(0x5bd914b9, 0x411925a6), TOBN(0x7c078d48, 0xa1123de5), + TOBN(0xee6bf835, 0x182b165d), TOBN(0xb11b5e5b, 0xba519727)}}, + {{TOBN(0xe33ea76c, 0x1eea7b85), TOBN(0x2352b461, 0x92d4f85e), + TOBN(0xf101d334, 0xafe115bb), TOBN(0xfabc1294, 0x889175a3)}, + {TOBN(0x7f6bcdc0, 0x5233f925), TOBN(0xe0a802db, 0xe77fec55), + TOBN(0xbdb47b75, 0x8069b659), TOBN(0x1c5e12de, 0xf98fbd74)}}, + {{TOBN(0x869c58c6, 0x4b8457ee), TOBN(0xa5360f69, 0x4f7ea9f7), + TOBN(0xe576c09f, 0xf460b38f), TOBN(0x6b70d548, 0x22b7fb36)}, + {TOBN(0x3fd237f1, 0x3bfae315), TOBN(0x33797852, 0xcbdff369), + TOBN(0x97df25f5, 0x25b516f9), TOBN(0x46f388f2, 0xba38ad2d)}}, + {{TOBN(0x656c4658, 0x89d8ddbb), TOBN(0x8830b26e, 0x70f38ee8), + TOBN(0x4320fd5c, 0xde1212b0), TOBN(0xc34f30cf, 0xe4a2edb2)}, + {TOBN(0xabb131a3, 0x56ab64b8), TOBN(0x7f77f0cc, 0xd99c5d26), + TOBN(0x66856a37, 0xbf981d94), TOBN(0x19e76d09, 0x738bd76e)}}, + {{TOBN(0xe76c8ac3, 0x96238f39), TOBN(0xc0a482be, 0xa830b366), + TOBN(0xb7b8eaff, 0x0b4eb499), TOBN(0x8ecd83bc, 0x4bfb4865)}, + {TOBN(0x971b2cb7, 0xa2f3776f), TOBN(0xb42176a4, 0xf4b88adf), + TOBN(0xb9617df5, 0xbe1fa446), TOBN(0x8b32d508, 0xcd031bd2)}}, + {{TOBN(0x1c6bd47d, 0x53b618c0), TOBN(0xc424f46c, 0x6a227923), + TOBN(0x7303ffde, 0xdd92d964), TOBN(0xe9712878, 0x71b5abf2)}, + {TOBN(0x8f48a632, 0xf815561d), TOBN(0x85f48ff5, 0xd3c055d1), + TOBN(0x222a1427, 0x7525684f), TOBN(0xd0d841a0, 0x67360cc3)}}, + {{TOBN(0x4245a926, 0x0b9267c6), TOBN(0xc78913f1, 0xcf07f863), + TOBN(0xaa844c8e, 0x4d0d9e24), TOBN(0xa42ad522, 0x3d5f9017)}, + {TOBN(0xbd371749, 0xa2c989d5), TOBN(0x928292df, 0xe1f5e78e), + TOBN(0x493b383e, 0x0a1ea6da), TOBN(0x5136fd8d, 0x13aee529)}}, + {{TOBN(0x860c44b1, 0xf2c34a99), TOBN(0x3b00aca4, 0xbf5855ac), + TOBN(0xabf6aaa0, 0xfaaf37be), TOBN(0x65f43682, 0x2a53ec08)}, + {TOBN(0x1d9a5801, 0xa11b12e1), TOBN(0x78a7ab2c, 0xe20ed475), + TOBN(0x0de1067e, 0x9a41e0d5), TOBN(0x30473f5f, 0x305023ea)}}, + {{TOBN(0xdd3ae09d, 0x169c7d97), TOBN(0x5cd5baa4, 0xcfaef9cd), + TOBN(0x5cd7440b, 0x65a44803), TOBN(0xdc13966a, 0x47f364de)}, + {TOBN(0x077b2be8, 0x2b8357c1), TOBN(0x0cb1b4c5, 0xe9d57c2a), + TOBN(0x7a4ceb32, 0x05ff363e), TOBN(0xf310fa4d, 0xca35a9ef)}}, + {{TOBN(0xdbb7b352, 0xf97f68c6), TOBN(0x0c773b50, 0x0b02cf58), + TOBN(0xea2e4821, 0x3c1f96d9), TOBN(0xffb357b0, 0xeee01815)}, + {TOBN(0xb9c924cd, 0xe0f28039), TOBN(0x0b36c95a, 0x46a3fbe4), + TOBN(0x1faaaea4, 0x5e46db6c), TOBN(0xcae575c3, 0x1928aaff)}}, + {{TOBN(0x7f671302, 0xa70dab86), TOBN(0xfcbd12a9, 0x71c58cfc), + TOBN(0xcbef9acf, 0xbee0cb92), TOBN(0x573da0b9, 0xf8c1b583)}, + {TOBN(0x4752fcfe, 0x0d41d550), TOBN(0xe7eec0e3, 0x2155cffe), + TOBN(0x0fc39fcb, 0x545ae248), TOBN(0x522cb8d1, 0x8065f44e)}}, + {{TOBN(0x263c962a, 0x70cbb96c), TOBN(0xe034362a, 0xbcd124a9), + TOBN(0xf120db28, 0x3c2ae58d), TOBN(0xb9a38d49, 0xfef6d507)}, + {TOBN(0xb1fd2a82, 0x1ff140fd), TOBN(0xbd162f30, 0x20aee7e0), + TOBN(0x4e17a5d4, 0xcb251949), TOBN(0x2aebcb83, 0x4f7e1c3d)}}, + {{TOBN(0x608eb25f, 0x937b0527), TOBN(0xf42e1e47, 0xeb7d9997), + TOBN(0xeba699c4, 0xb8a53a29), TOBN(0x1f921c71, 0xe091b536)}, + {TOBN(0xcce29e7b, 0x5b26bbd5), TOBN(0x7a8ef5ed, 0x3b61a680), + TOBN(0xe5ef8043, 0xba1f1c7e), TOBN(0x16ea8217, 0x18158dda)}}, + {{TOBN(0x01778a2b, 0x599ff0f9), TOBN(0x68a923d7, 0x8104fc6b), + TOBN(0x5bfa44df, 0xda694ff3), TOBN(0x4f7199db, 0xf7667f12)}, + {TOBN(0xc06d8ff6, 0xe46f2a79), TOBN(0x08b5dead, 0xe9f8131d), + TOBN(0x02519a59, 0xabb4ce7c), TOBN(0xc4f710bc, 0xb42aec3e)}}, + {{TOBN(0x3d77b057, 0x78bde41a), TOBN(0x6474bf80, 0xb4186b5a), + TOBN(0x048b3f67, 0x88c65741), TOBN(0xc64519de, 0x03c7c154)}, + {TOBN(0xdf073846, 0x0edfcc4f), TOBN(0x319aa737, 0x48f1aa6b), + TOBN(0x8b9f8a02, 0xca909f77), TOBN(0x90258139, 0x7580bfef)}}, + {{TOBN(0xd8bfd3ca, 0xc0c22719), TOBN(0xc60209e4, 0xc9ca151e), + TOBN(0x7a744ab5, 0xd9a1a69c), TOBN(0x6de5048b, 0x14937f8f)}, + {TOBN(0x171938d8, 0xe115ac04), TOBN(0x7df70940, 0x1c6b16d2), + TOBN(0xa6aeb663, 0x7f8e94e7), TOBN(0xc130388e, 0x2a2cf094)}}, + {{TOBN(0x1850be84, 0x77f54e6e), TOBN(0x9f258a72, 0x65d60fe5), + TOBN(0xff7ff0c0, 0x6c9146d6), TOBN(0x039aaf90, 0xe63a830b)}, + {TOBN(0x38f27a73, 0x9460342f), TOBN(0x4703148c, 0x3f795f8a), + TOBN(0x1bb5467b, 0x9681a97e), TOBN(0x00931ba5, 0xecaeb594)}}, + {{TOBN(0xcdb6719d, 0x786f337c), TOBN(0xd9c01cd2, 0xe704397d), + TOBN(0x0f4a3f20, 0x555c2fef), TOBN(0x00452509, 0x7c0af223)}, + {TOBN(0x54a58047, 0x84db8e76), TOBN(0x3bacf1aa, 0x93c8aa06), + TOBN(0x11ca957c, 0xf7919422), TOBN(0x50641053, 0x78cdaa40)}}, + {{TOBN(0x7a303874, 0x9f7144ae), TOBN(0x170c963f, 0x43d4acfd), + TOBN(0x5e148149, 0x58ddd3ef), TOBN(0xa7bde582, 0x9e72dba8)}, + {TOBN(0x0769da8b, 0x6fa68750), TOBN(0xfa64e532, 0x572e0249), + TOBN(0xfcaadf9d, 0x2619ad31), TOBN(0x87882daa, 0xa7b349cd)}}, + {{TOBN(0x9f6eb731, 0x6c67a775), TOBN(0xcb10471a, 0xefc5d0b1), + TOBN(0xb433750c, 0xe1b806b2), TOBN(0x19c5714d, 0x57b1ae7e)}, + {TOBN(0xc0dc8b7b, 0xed03fd3f), TOBN(0xdd03344f, 0x31bc194e), + TOBN(0xa66c52a7, 0x8c6320b5), TOBN(0x8bc82ce3, 0xd0b6fd93)}}, + {{TOBN(0xf8e13501, 0xb35f1341), TOBN(0xe53156dd, 0x25a43e42), + TOBN(0xd3adf27e, 0x4daeb85c), TOBN(0xb81d8379, 0xbbeddeb5)}, + {TOBN(0x1b0b546e, 0x2e435867), TOBN(0x9020eb94, 0xeba5dd60), + TOBN(0x37d91161, 0x8210cb9d), TOBN(0x4c596b31, 0x5c91f1cf)}}, + {{TOBN(0xb228a90f, 0x0e0b040d), TOBN(0xbaf02d82, 0x45ff897f), + TOBN(0x2aac79e6, 0x00fa6122), TOBN(0x24828817, 0x8e36f557)}, + {TOBN(0xb9521d31, 0x113ec356), TOBN(0x9e48861e, 0x15eff1f8), + TOBN(0x2aa1d412, 0xe0d41715), TOBN(0x71f86203, 0x53f131b8)}}, + {{TOBN(0xf60da8da, 0x3fd19408), TOBN(0x4aa716dc, 0x278d9d99), + TOBN(0x394531f7, 0xa8c51c90), TOBN(0xb560b0e8, 0xf59db51c)}, + {TOBN(0xa28fc992, 0xfa34bdad), TOBN(0xf024fa14, 0x9cd4f8bd), + TOBN(0x5cf530f7, 0x23a9d0d3), TOBN(0x615ca193, 0xe28c9b56)}}, + {{TOBN(0x6d2a483d, 0x6f73c51e), TOBN(0xa4cb2412, 0xea0dc2dd), + TOBN(0x50663c41, 0x1eb917ff), TOBN(0x3d3a74cf, 0xeade299e)}, + {TOBN(0x29b3990f, 0x4a7a9202), TOBN(0xa9bccf59, 0xa7b15c3d), + TOBN(0x66a3ccdc, 0xa5df9208), TOBN(0x48027c14, 0x43f2f929)}}, + {{TOBN(0xd385377c, 0x40b557f0), TOBN(0xe001c366, 0xcd684660), + TOBN(0x1b18ed6b, 0xe2183a27), TOBN(0x879738d8, 0x63210329)}, + {TOBN(0xa687c74b, 0xbda94882), TOBN(0xd1bbcc48, 0xa684b299), + TOBN(0xaf6f1112, 0x863b3724), TOBN(0x6943d1b4, 0x2c8ce9f8)}}, + {{TOBN(0xe044a3bb, 0x098cafb4), TOBN(0x27ed2310, 0x60d48caf), + TOBN(0x542b5675, 0x3a31b84d), TOBN(0xcbf3dd50, 0xfcddbed7)}, + {TOBN(0x25031f16, 0x41b1d830), TOBN(0xa7ec851d, 0xcb0c1e27), + TOBN(0xac1c8fe0, 0xb5ae75db), TOBN(0xb24c7557, 0x08c52120)}}, + {{TOBN(0x57f811dc, 0x1d4636c3), TOBN(0xf8436526, 0x681a9939), + TOBN(0x1f6bc6d9, 0x9c81adb3), TOBN(0x840f8ac3, 0x5b7d80d4)}, + {TOBN(0x731a9811, 0xf4387f1a), TOBN(0x7c501cd3, 0xb5156880), + TOBN(0xa5ca4a07, 0xdfe68867), TOBN(0xf123d8f0, 0x5fcea120)}}, + {{TOBN(0x1fbb0e71, 0xd607039e), TOBN(0x2b70e215, 0xcd3a4546), + TOBN(0x32d2f01d, 0x53324091), TOBN(0xb796ff08, 0x180ab19b)}, + {TOBN(0x32d87a86, 0x3c57c4aa), TOBN(0x2aed9caf, 0xb7c49a27), + TOBN(0x9fb35eac, 0x31630d98), TOBN(0x338e8cdf, 0x5c3e20a3)}}, + {{TOBN(0x80f16182, 0x66cde8db), TOBN(0x4e159980, 0x2d72fd36), + TOBN(0xd7b8f13b, 0x9b6e5072), TOBN(0xf5213907, 0x3b7b5dc1)}, + {TOBN(0x4d431f1d, 0x8ce4396e), TOBN(0x37a1a680, 0xa7ed2142), + TOBN(0xbf375696, 0xd01aaf6b), TOBN(0xaa1c0c54, 0xe63aab66)}}, + {{TOBN(0x3014368b, 0x4ed80940), TOBN(0x67e6d056, 0x7a6fcedd), + TOBN(0x7c208c49, 0xca97579f), TOBN(0xfe3d7a81, 0xa23597f6)}, + {TOBN(0x5e203202, 0x7e096ae2), TOBN(0xb1f3e1e7, 0x24b39366), + TOBN(0x26da26f3, 0x2fdcdffc), TOBN(0x79422f1d, 0x6097be83)}}}, + {{{TOBN(0x263a2cfb, 0x9db3b381), TOBN(0x9c3a2dee, 0xd4df0a4b), + TOBN(0x728d06e9, 0x7d04e61f), TOBN(0x8b1adfbc, 0x42449325)}, + {TOBN(0x6ec1d939, 0x7e053a1b), TOBN(0xee2be5c7, 0x66daf707), + TOBN(0x80ba1e14, 0x810ac7ab), TOBN(0xdd2ae778, 0xf530f174)}}, + {{TOBN(0x0435d97a, 0x205b9d8b), TOBN(0x6eb8f064, 0x056756d4), + TOBN(0xd5e88a8b, 0xb6f8210e), TOBN(0x070ef12d, 0xec9fd9ea)}, + {TOBN(0x4d849505, 0x3bcc876a), TOBN(0x12a75338, 0xa7404ce3), + TOBN(0xd22b49e1, 0xb8a1db5e), TOBN(0xec1f2051, 0x14bfa5ad)}}, + {{TOBN(0xadbaeb79, 0xb6828f36), TOBN(0x9d7a0258, 0x01bd5b9e), + TOBN(0xeda01e0d, 0x1e844b0c), TOBN(0x4b625175, 0x887edfc9)}, + {TOBN(0x14109fdd, 0x9669b621), TOBN(0x88a2ca56, 0xf6f87b98), + TOBN(0xfe2eb788, 0x170df6bc), TOBN(0x0cea06f4, 0xffa473f9)}}, + {{TOBN(0x43ed81b5, 0xc4e83d33), TOBN(0xd9f35879, 0x5efd488b), + TOBN(0x164a620f, 0x9deb4d0f), TOBN(0xc6927bdb, 0xac6a7394)}, + {TOBN(0x45c28df7, 0x9f9e0f03), TOBN(0x2868661e, 0xfcd7e1a9), + TOBN(0x7cf4e8d0, 0xffa348f1), TOBN(0x6bd4c284, 0x398538e0)}}, + {{TOBN(0x2618a091, 0x289a8619), TOBN(0xef796e60, 0x6671b173), + TOBN(0x664e46e5, 0x9090c632), TOBN(0xa38062d4, 0x1e66f8fb)}, + {TOBN(0x6c744a20, 0x0573274e), TOBN(0xd07b67e4, 0xa9271394), + TOBN(0x391223b2, 0x6bdc0e20), TOBN(0xbe2d93f1, 0xeb0a05a7)}}, + {{TOBN(0xf23e2e53, 0x3f36d141), TOBN(0xe84bb3d4, 0x4dfca442), + TOBN(0xb804a48d, 0x6b7c023a), TOBN(0x1e16a8fa, 0x76431c3b)}, + {TOBN(0x1b5452ad, 0xddd472e0), TOBN(0x7d405ee7, 0x0d1ee127), + TOBN(0x50fc6f1d, 0xffa27599), TOBN(0x351ac53c, 0xbf391b35)}}, + {{TOBN(0x7efa14b8, 0x4444896b), TOBN(0x64974d2f, 0xf94027fb), + TOBN(0xefdcd0e8, 0xde84487d), TOBN(0x8c45b260, 0x2b48989b)}, + {TOBN(0xa8fcbbc2, 0xd8463487), TOBN(0xd1b2b3f7, 0x3fbc476c), + TOBN(0x21d005b7, 0xc8f443c0), TOBN(0x518f2e67, 0x40c0139c)}}, + {{TOBN(0x56036e8c, 0x06d75fc1), TOBN(0x2dcf7bb7, 0x3249a89f), + TOBN(0x81dd1d3d, 0xe245e7dd), TOBN(0xf578dc4b, 0xebd6e2a7)}, + {TOBN(0x4c028903, 0xdf2ce7a0), TOBN(0xaee36288, 0x9c39afac), + TOBN(0xdc847c31, 0x146404ab), TOBN(0x6304c0d8, 0xa4e97818)}}, + {{TOBN(0xae51dca2, 0xa91f6791), TOBN(0x2abe4190, 0x9baa9efc), + TOBN(0xd9d2e2f4, 0x559c7ac1), TOBN(0xe82f4b51, 0xfc9f773a)}, + {TOBN(0xa7713027, 0x4073e81c), TOBN(0xc0276fac, 0xfbb596fc), + TOBN(0x1d819fc9, 0xa684f70c), TOBN(0x29b47fdd, 0xc9f7b1e0)}}, + {{TOBN(0x358de103, 0x459b1940), TOBN(0xec881c59, 0x5b013e93), + TOBN(0x51574c93, 0x49532ad3), TOBN(0x2db1d445, 0xb37b46de)}, + {TOBN(0xc6445b87, 0xdf239fd8), TOBN(0xc718af75, 0x151d24ee), + TOBN(0xaea1c4a4, 0xf43c6259), TOBN(0x40c0e5d7, 0x70be02f7)}}, + {{TOBN(0x6a4590f4, 0x721b33f2), TOBN(0x2124f1fb, 0xfedf04ea), + TOBN(0xf8e53cde, 0x9745efe7), TOBN(0xe7e10432, 0x65f046d9)}, + {TOBN(0xc3fca28e, 0xe4d0c7e6), TOBN(0x847e339a, 0x87253b1b), + TOBN(0x9b595348, 0x3743e643), TOBN(0xcb6a0a0b, 0x4fd12fc5)}}, + {{TOBN(0xfb6836c3, 0x27d02dcc), TOBN(0x5ad00982, 0x7a68bcc2), + TOBN(0x1b24b44c, 0x005e912d), TOBN(0xcc83d20f, 0x811fdcfe)}, + {TOBN(0x36527ec1, 0x666fba0c), TOBN(0x69948197, 0x14754635), + TOBN(0xfcdcb1a8, 0x556da9c2), TOBN(0xa5934267, 0x81a732b2)}}, + {{TOBN(0xec1214ed, 0xa714181d), TOBN(0x609ac13b, 0x6067b341), + TOBN(0xff4b4c97, 0xa545df1f), TOBN(0xa1240501, 0x34d2076b)}, + {TOBN(0x6efa0c23, 0x1409ca97), TOBN(0x254cc1a8, 0x20638c43), + TOBN(0xd4e363af, 0xdcfb46cd), TOBN(0x62c2adc3, 0x03942a27)}}, + {{TOBN(0xc67b9df0, 0x56e46483), TOBN(0xa55abb20, 0x63736356), + TOBN(0xab93c098, 0xc551bc52), TOBN(0x382b49f9, 0xb15fe64b)}, + {TOBN(0x9ec221ad, 0x4dff8d47), TOBN(0x79caf615, 0x437df4d6), + TOBN(0x5f13dc64, 0xbb456509), TOBN(0xe4c589d9, 0x191f0714)}}, + {{TOBN(0x27b6a8ab, 0x3fd40e09), TOBN(0xe455842e, 0x77313ea9), + TOBN(0x8b51d1e2, 0x1f55988b), TOBN(0x5716dd73, 0x062bbbfc)}, + {TOBN(0x633c11e5, 0x4e8bf3de), TOBN(0x9a0e77b6, 0x1b85be3b), + TOBN(0x56510729, 0x0911cca6), TOBN(0x27e76495, 0xefa6590f)}}, + {{TOBN(0xe4ac8b33, 0x070d3aab), TOBN(0x2643672b, 0x9a2cd5e5), + TOBN(0x52eff79b, 0x1cfc9173), TOBN(0x665ca49b, 0x90a7c13f)}, + {TOBN(0x5a8dda59, 0xb3efb998), TOBN(0x8a5b922d, 0x052f1341), + TOBN(0xae9ebbab, 0x3cf9a530), TOBN(0x35986e7b, 0xf56da4d7)}}, + {{TOBN(0x3a636b5c, 0xff3513cc), TOBN(0xbb0cf8ba, 0x3198f7dd), + TOBN(0xb8d40522, 0x41f16f86), TOBN(0x760575d8, 0xde13a7bf)}, + {TOBN(0x36f74e16, 0x9f7aa181), TOBN(0x163a3ecf, 0xf509ed1c), + TOBN(0x6aead61f, 0x3c40a491), TOBN(0x158c95fc, 0xdfe8fcaa)}}, + {{TOBN(0xa3991b6e, 0x13cda46f), TOBN(0x79482415, 0x342faed0), + TOBN(0xf3ba5bde, 0x666b5970), TOBN(0x1d52e6bc, 0xb26ab6dd)}, + {TOBN(0x768ba1e7, 0x8608dd3d), TOBN(0x4930db2a, 0xea076586), + TOBN(0xd9575714, 0xe7dc1afa), TOBN(0x1fc7bf7d, 0xf7c58817)}}, + {{TOBN(0x6b47accd, 0xd9eee96c), TOBN(0x0ca277fb, 0xe58cec37), + TOBN(0x113fe413, 0xe702c42a), TOBN(0xdd1764ee, 0xc47cbe51)}, + {TOBN(0x041e7cde, 0x7b3ed739), TOBN(0x50cb7459, 0x5ce9e1c0), + TOBN(0x35568513, 0x2925b212), TOBN(0x7cff95c4, 0x001b081c)}}, + {{TOBN(0x63ee4cbd, 0x8088b454), TOBN(0xdb7f32f7, 0x9a9e0c8a), + TOBN(0xb377d418, 0x6b2447cb), TOBN(0xe3e982aa, 0xd370219b)}, + {TOBN(0x06ccc1e4, 0xc2a2a593), TOBN(0x72c36865, 0x0773f24f), + TOBN(0xa13b4da7, 0x95859423), TOBN(0x8bbf1d33, 0x75040c8f)}}, + {{TOBN(0x726f0973, 0xda50c991), TOBN(0x48afcd5b, 0x822d6ee2), + TOBN(0xe5fc718b, 0x20fd7771), TOBN(0xb9e8e77d, 0xfd0807a1)}, + {TOBN(0x7f5e0f44, 0x99a7703d), TOBN(0x6972930e, 0x618e36f3), + TOBN(0x2b7c77b8, 0x23807bbe), TOBN(0xe5b82405, 0xcb27ff50)}}, + {{TOBN(0xba8b8be3, 0xbd379062), TOBN(0xd64b7a1d, 0x2dce4a92), + TOBN(0x040a73c5, 0xb2952e37), TOBN(0x0a9e252e, 0xd438aeca)}, + {TOBN(0xdd43956b, 0xc39d3bcb), TOBN(0x1a31ca00, 0xb32b2d63), + TOBN(0xd67133b8, 0x5c417a18), TOBN(0xd08e4790, 0x2ef442c8)}}, + {{TOBN(0x98cb1ae9, 0x255c0980), TOBN(0x4bd86381, 0x2b4a739f), + TOBN(0x5a5c31e1, 0x1e4a45a1), TOBN(0x1e5d55fe, 0x9cb0db2f)}, + {TOBN(0x74661b06, 0x8ff5cc29), TOBN(0x026b389f, 0x0eb8a4f4), + TOBN(0x536b21a4, 0x58848c24), TOBN(0x2e5bf8ec, 0x81dc72b0)}}, + {{TOBN(0x03c187d0, 0xad886aac), TOBN(0x5c16878a, 0xb771b645), + TOBN(0xb07dfc6f, 0xc74045ab), TOBN(0x2c6360bf, 0x7800caed)}, + {TOBN(0x24295bb5, 0xb9c972a3), TOBN(0xc9e6f88e, 0x7c9a6dba), + TOBN(0x90ffbf24, 0x92a79aa6), TOBN(0xde29d50a, 0x41c26ac2)}}, + {{TOBN(0x9f0af483, 0xd309cbe6), TOBN(0x5b020d8a, 0xe0bced4f), + TOBN(0x606e986d, 0xb38023e3), TOBN(0xad8f2c9d, 0x1abc6933)}, + {TOBN(0x19292e1d, 0xe7400e93), TOBN(0xfe3e18a9, 0x52be5e4d), + TOBN(0xe8e9771d, 0x2e0680bf), TOBN(0x8c5bec98, 0xc54db063)}}, + {{TOBN(0x2af9662a, 0x74a55d1f), TOBN(0xe3fbf28f, 0x046f66d8), + TOBN(0xa3a72ab4, 0xd4dc4794), TOBN(0x09779f45, 0x5c7c2dd8)}, + {TOBN(0xd893bdaf, 0xc3d19d8d), TOBN(0xd5a75094, 0x57d6a6df), + TOBN(0x8cf8fef9, 0x952e6255), TOBN(0x3da67cfb, 0xda9a8aff)}}, + {{TOBN(0x4c23f62a, 0x2c160dcd), TOBN(0x34e6c5e3, 0x8f90eaef), + TOBN(0x35865519, 0xa9a65d5a), TOBN(0x07c48aae, 0x8fd38a3d)}, + {TOBN(0xb7e7aeda, 0x50068527), TOBN(0x2c09ef23, 0x1c90936a), + TOBN(0x31ecfeb6, 0xe879324c), TOBN(0xa0871f6b, 0xfb0ec938)}}, + {{TOBN(0xb1f0fb68, 0xd84d835d), TOBN(0xc90caf39, 0x861dc1e6), + TOBN(0x12e5b046, 0x7594f8d7), TOBN(0x26897ae2, 0x65012b92)}, + {TOBN(0xbcf68a08, 0xa4d6755d), TOBN(0x403ee41c, 0x0991fbda), + TOBN(0x733e343e, 0x3bbf17e8), TOBN(0xd2c7980d, 0x679b3d65)}}, + {{TOBN(0x33056232, 0xd2e11305), TOBN(0x966be492, 0xf3c07a6f), + TOBN(0x6a8878ff, 0xbb15509d), TOBN(0xff221101, 0x0a9b59a4)}, + {TOBN(0x6c9f564a, 0xabe30129), TOBN(0xc6f2c940, 0x336e64cf), + TOBN(0x0fe75262, 0x8b0c8022), TOBN(0xbe0267e9, 0x6ae8db87)}}, + {{TOBN(0x22e192f1, 0x93bc042b), TOBN(0xf085b534, 0xb237c458), + TOBN(0xa0d192bd, 0x832c4168), TOBN(0x7a76e9e3, 0xbdf6271d)}, + {TOBN(0x52a882fa, 0xb88911b5), TOBN(0xc85345e4, 0xb4db0eb5), + TOBN(0xa3be02a6, 0x81a7c3ff), TOBN(0x51889c8c, 0xf0ec0469)}}, + {{TOBN(0x9d031369, 0xa5e829e5), TOBN(0xcbb4c6fc, 0x1607aa41), + TOBN(0x75ac59a6, 0x241d84c1), TOBN(0xc043f2bf, 0x8829e0ee)}, + {TOBN(0x82a38f75, 0x8ea5e185), TOBN(0x8bda40b9, 0xd87cbd9f), + TOBN(0x9e65e75e, 0x2d8fc601), TOBN(0x3d515f74, 0xa35690b3)}}, + {{TOBN(0x534acf4f, 0xda79e5ac), TOBN(0x68b83b3a, 0x8630215f), + TOBN(0x5c748b2e, 0xd085756e), TOBN(0xb0317258, 0xe5d37cb2)}, + {TOBN(0x6735841a, 0xc5ccc2c4), TOBN(0x7d7dc96b, 0x3d9d5069), + TOBN(0xa147e410, 0xfd1754bd), TOBN(0x65296e94, 0xd399ddd5)}}, + {{TOBN(0xf6b5b2d0, 0xbc8fa5bc), TOBN(0x8a5ead67, 0x500c277b), + TOBN(0x214625e6, 0xdfa08a5d), TOBN(0x51fdfedc, 0x959cf047)}, + {TOBN(0x6bc9430b, 0x289fca32), TOBN(0xe36ff0cf, 0x9d9bdc3f), + TOBN(0x2fe187cb, 0x58ea0ede), TOBN(0xed66af20, 0x5a900b3f)}}, + {{TOBN(0x00e0968b, 0x5fa9f4d6), TOBN(0x2d4066ce, 0x37a362e7), + TOBN(0xa99a9748, 0xbd07e772), TOBN(0x710989c0, 0x06a4f1d0)}, + {TOBN(0xd5dedf35, 0xce40cbd8), TOBN(0xab55c5f0, 0x1743293d), + TOBN(0x766f1144, 0x8aa24e2c), TOBN(0x94d874f8, 0x605fbcb4)}}, + {{TOBN(0xa365f0e8, 0xa518001b), TOBN(0xee605eb6, 0x9d04ef0f), + TOBN(0x5a3915cd, 0xba8d4d25), TOBN(0x44c0e1b8, 0xb5113472)}, + {TOBN(0xcbb024e8, 0x8b6740dc), TOBN(0x89087a53, 0xee1d4f0c), + TOBN(0xa88fa05c, 0x1fc4e372), TOBN(0x8bf395cb, 0xaf8b3af2)}}, + {{TOBN(0x1e71c9a1, 0xdeb8568b), TOBN(0xa35daea0, 0x80fb3d32), + TOBN(0xe8b6f266, 0x2cf8fb81), TOBN(0x6d51afe8, 0x9490696a)}, + {TOBN(0x81beac6e, 0x51803a19), TOBN(0xe3d24b7f, 0x86219080), + TOBN(0x727cfd9d, 0xdf6f463c), TOBN(0x8c6865ca, 0x72284ee8)}}, + {{TOBN(0x32c88b7d, 0xb743f4ef), TOBN(0x3793909b, 0xe7d11dce), + TOBN(0xd398f922, 0x2ff2ebe8), TOBN(0x2c70ca44, 0xe5e49796)}, + {TOBN(0xdf4d9929, 0xcb1131b1), TOBN(0x7826f298, 0x25888e79), + TOBN(0x4d3a112c, 0xf1d8740a), TOBN(0x00384cb6, 0x270afa8b)}}, + {{TOBN(0xcb64125b, 0x3ab48095), TOBN(0x3451c256, 0x62d05106), + TOBN(0xd73d577d, 0xa4955845), TOBN(0x39570c16, 0xbf9f4433)}, + {TOBN(0xd7dfaad3, 0xadecf263), TOBN(0xf1c3d8d1, 0xdc76e102), + TOBN(0x5e774a58, 0x54c6a836), TOBN(0xdad4b672, 0x3e92d47b)}}, + {{TOBN(0xbe7e990f, 0xf0d796a0), TOBN(0x5fc62478, 0xdf0e8b02), + TOBN(0x8aae8bf4, 0x030c00ad), TOBN(0x3d2db93b, 0x9004ba0f)}, + {TOBN(0xe48c8a79, 0xd85d5ddc), TOBN(0xe907caa7, 0x6bb07f34), + TOBN(0x58db343a, 0xa39eaed5), TOBN(0x0ea6e007, 0xadaf5724)}}, + {{TOBN(0xe00df169, 0xd23233f3), TOBN(0x3e322796, 0x77cb637f), + TOBN(0x1f897c0e, 0x1da0cf6c), TOBN(0xa651f5d8, 0x31d6bbdd)}, + {TOBN(0xdd61af19, 0x1a230c76), TOBN(0xbd527272, 0xcdaa5e4a), + TOBN(0xca753636, 0xd0abcd7e), TOBN(0x78bdd37c, 0x370bd8dc)}}, + {{TOBN(0xc23916c2, 0x17cd93fe), TOBN(0x65b97a4d, 0xdadce6e2), + TOBN(0xe04ed4eb, 0x174e42f8), TOBN(0x1491ccaa, 0xbb21480a)}, + {TOBN(0x145a8280, 0x23196332), TOBN(0x3c3862d7, 0x587b479a), + TOBN(0x9f4a88a3, 0x01dcd0ed), TOBN(0x4da2b7ef, 0x3ea12f1f)}}, + {{TOBN(0xf8e7ae33, 0xb126e48e), TOBN(0x404a0b32, 0xf494e237), + TOBN(0x9beac474, 0xc55acadb), TOBN(0x4ee5cf3b, 0xcbec9fd9)}, + {TOBN(0x336b33b9, 0x7df3c8c3), TOBN(0xbd905fe3, 0xb76808fd), + TOBN(0x8f436981, 0xaa45c16a), TOBN(0x255c5bfa, 0x3dd27b62)}}, + {{TOBN(0x71965cbf, 0xc3dd9b4d), TOBN(0xce23edbf, 0xfc068a87), + TOBN(0xb78d4725, 0x745b029b), TOBN(0x74610713, 0xcefdd9bd)}, + {TOBN(0x7116f75f, 0x1266bf52), TOBN(0x02046722, 0x18e49bb6), + TOBN(0xdf43df9f, 0x3d6f19e3), TOBN(0xef1bc7d0, 0xe685cb2f)}}, + {{TOBN(0xcddb27c1, 0x7078c432), TOBN(0xe1961b9c, 0xb77fedb7), + TOBN(0x1edc2f5c, 0xc2290570), TOBN(0x2c3fefca, 0x19cbd886)}, + {TOBN(0xcf880a36, 0xc2af389a), TOBN(0x96c610fd, 0xbda71cea), + TOBN(0xf03977a9, 0x32aa8463), TOBN(0x8eb7763f, 0x8586d90a)}}, + {{TOBN(0x3f342454, 0x2a296e77), TOBN(0xc8718683, 0x42837a35), + TOBN(0x7dc71090, 0x6a09c731), TOBN(0x54778ffb, 0x51b816db)}, + {TOBN(0x6b33bfec, 0xaf06defd), TOBN(0xfe3c105f, 0x8592b70b), + TOBN(0xf937fda4, 0x61da6114), TOBN(0x3c13e651, 0x4c266ad7)}}, + {{TOBN(0xe363a829, 0x855938e8), TOBN(0x2eeb5d9e, 0x9de54b72), + TOBN(0xbeb93b0e, 0x20ccfab9), TOBN(0x3dffbb5f, 0x25e61a25)}, + {TOBN(0x7f655e43, 0x1acc093d), TOBN(0x0cb6cc3d, 0x3964ce61), + TOBN(0x6ab283a1, 0xe5e9b460), TOBN(0x55d787c5, 0xa1c7e72d)}}, + {{TOBN(0x4d2efd47, 0xdeadbf02), TOBN(0x11e80219, 0xac459068), + TOBN(0x810c7626, 0x71f311f0), TOBN(0xfa17ef8d, 0x4ab6ef53)}, + {TOBN(0xaf47fd25, 0x93e43bff), TOBN(0x5cb5ff3f, 0x0be40632), + TOBN(0x54687106, 0x8ee61da3), TOBN(0x7764196e, 0xb08afd0f)}}, + {{TOBN(0x831ab3ed, 0xf0290a8f), TOBN(0xcae81966, 0xcb47c387), + TOBN(0xaad7dece, 0x184efb4f), TOBN(0xdcfc53b3, 0x4749110e)}, + {TOBN(0x6698f23c, 0x4cb632f9), TOBN(0xc42a1ad6, 0xb91f8067), + TOBN(0xb116a81d, 0x6284180a), TOBN(0xebedf5f8, 0xe901326f)}}, + {{TOBN(0xf2274c9f, 0x97e3e044), TOBN(0x42018520, 0x11d09fc9), + TOBN(0x56a65f17, 0xd18e6e23), TOBN(0x2ea61e2a, 0x352b683c)}, + {TOBN(0x27d291bc, 0x575eaa94), TOBN(0x9e7bc721, 0xb8ff522d), + TOBN(0x5f7268bf, 0xa7f04d6f), TOBN(0x5868c73f, 0xaba41748)}}, + {{TOBN(0x9f85c2db, 0x7be0eead), TOBN(0x511e7842, 0xff719135), + TOBN(0x5a06b1e9, 0xc5ea90d7), TOBN(0x0c19e283, 0x26fab631)}, + {TOBN(0x8af8f0cf, 0xe9206c55), TOBN(0x89389cb4, 0x3553c06a), + TOBN(0x39dbed97, 0xf65f8004), TOBN(0x0621b037, 0xc508991d)}}, + {{TOBN(0x1c52e635, 0x96e78cc4), TOBN(0x5385c8b2, 0x0c06b4a8), + TOBN(0xd84ddfdb, 0xb0e87d03), TOBN(0xc49dfb66, 0x934bafad)}, + {TOBN(0x7071e170, 0x59f70772), TOBN(0x3a073a84, 0x3a1db56b), + TOBN(0x03494903, 0x3b8af190), TOBN(0x7d882de3, 0xd32920f0)}}, + {{TOBN(0x91633f0a, 0xb2cf8940), TOBN(0x72b0b178, 0x6f948f51), + TOBN(0x2d28dc30, 0x782653c8), TOBN(0x88829849, 0xdb903a05)}, + {TOBN(0xb8095d0c, 0x6a19d2bb), TOBN(0x4b9e7f0c, 0x86f782cb), + TOBN(0x7af73988, 0x2d907064), TOBN(0xd12be0fe, 0x8b32643c)}}, + {{TOBN(0x358ed23d, 0x0e165dc3), TOBN(0x3d47ce62, 0x4e2378ce), + TOBN(0x7e2bb0b9, 0xfeb8a087), TOBN(0x3246e8ae, 0xe29e10b9)}, + {TOBN(0x459f4ec7, 0x03ce2b4d), TOBN(0xe9b4ca1b, 0xbbc077cf), + TOBN(0x2613b4f2, 0x0e9940c1), TOBN(0xfc598bb9, 0x047d1eb1)}}, + {{TOBN(0x9744c62b, 0x45036099), TOBN(0xa9dee742, 0x167c65d8), + TOBN(0x0c511525, 0xdabe1943), TOBN(0xda110554, 0x93c6c624)}, + {TOBN(0xae00a52c, 0x651a3be2), TOBN(0xcda5111d, 0x884449a6), + TOBN(0x063c06f4, 0xff33bed1), TOBN(0x73baaf9a, 0x0d3d76b4)}}, + {{TOBN(0x52fb0c9d, 0x7fc63668), TOBN(0x6886c9dd, 0x0c039cde), + TOBN(0x602bd599, 0x55b22351), TOBN(0xb00cab02, 0x360c7c13)}, + {TOBN(0x8cb616bc, 0x81b69442), TOBN(0x41486700, 0xb55c3cee), + TOBN(0x71093281, 0xf49ba278), TOBN(0xad956d9c, 0x64a50710)}}, + {{TOBN(0x9561f28b, 0x638a7e81), TOBN(0x54155cdf, 0x5980ddc3), + TOBN(0xb2db4a96, 0xd26f247a), TOBN(0x9d774e4e, 0x4787d100)}, + {TOBN(0x1a9e6e2e, 0x078637d2), TOBN(0x1c363e2d, 0x5e0ae06a), + TOBN(0x7493483e, 0xe9cfa354), TOBN(0x76843cb3, 0x7f74b98d)}}, + {{TOBN(0xbaca6591, 0xd4b66947), TOBN(0xb452ce98, 0x04460a8c), + TOBN(0x6830d246, 0x43768f55), TOBN(0xf4197ed8, 0x7dff12df)}, + {TOBN(0x6521b472, 0x400dd0f7), TOBN(0x59f5ca8f, 0x4b1e7093), + TOBN(0x6feff11b, 0x080338ae), TOBN(0x0ada31f6, 0xa29ca3c6)}}, + {{TOBN(0x24794eb6, 0x94a2c215), TOBN(0xd83a43ab, 0x05a57ab4), + TOBN(0x264a543a, 0x2a6f89fe), TOBN(0x2c2a3868, 0xdd5ec7c2)}, + {TOBN(0xd3373940, 0x8439d9b2), TOBN(0x715ea672, 0x0acd1f11), + TOBN(0x42c1d235, 0xe7e6cc19), TOBN(0x81ce6e96, 0xb990585c)}}, + {{TOBN(0x04e5dfe0, 0xd809c7bd), TOBN(0xd7b2580c, 0x8f1050ab), + TOBN(0x6d91ad78, 0xd8a4176f), TOBN(0x0af556ee, 0x4e2e897c)}, + {TOBN(0x162a8b73, 0x921de0ac), TOBN(0x52ac9c22, 0x7ea78400), + TOBN(0xee2a4eea, 0xefce2174), TOBN(0xbe61844e, 0x6d637f79)}}, + {{TOBN(0x0491f1bc, 0x789a283b), TOBN(0x72d3ac3d, 0x880836f4), + TOBN(0xaa1c5ea3, 0x88e5402d), TOBN(0x1b192421, 0xd5cc473d)}, + {TOBN(0x5c0b9998, 0x9dc84cac), TOBN(0xb0a8482d, 0x9c6e75b8), + TOBN(0x639961d0, 0x3a191ce2), TOBN(0xda3bc865, 0x6d837930)}}, + {{TOBN(0xca990653, 0x056e6f8f), TOBN(0x84861c41, 0x64d133a7), + TOBN(0x8b403276, 0x746abe40), TOBN(0xb7b4d51a, 0xebf8e303)}, + {TOBN(0x05b43211, 0x220a255d), TOBN(0xc997152c, 0x02419e6e), + TOBN(0x76ff47b6, 0x630c2fea), TOBN(0x50518677, 0x281fdade)}}, + {{TOBN(0x3283b8ba, 0xcf902b0b), TOBN(0x8d4b4eb5, 0x37db303b), + TOBN(0xcc89f42d, 0x755011bc), TOBN(0xb43d74bb, 0xdd09d19b)}, + {TOBN(0x65746bc9, 0x8adba350), TOBN(0x364eaf8c, 0xb51c1927), + TOBN(0x13c76596, 0x10ad72ec), TOBN(0x30045121, 0xf8d40c20)}}, + {{TOBN(0x6d2d99b7, 0xea7b979b), TOBN(0xcd78cd74, 0xe6fb3bcd), + TOBN(0x11e45a9e, 0x86cffbfe), TOBN(0x78a61cf4, 0x637024f6)}, + {TOBN(0xd06bc872, 0x3d502295), TOBN(0xf1376854, 0x458cb288), + TOBN(0xb9db26a1, 0x342f8586), TOBN(0xf33effcf, 0x4beee09e)}}, + {{TOBN(0xd7e0c4cd, 0xb30cfb3a), TOBN(0x6d09b8c1, 0x6c9db4c8), + TOBN(0x40ba1a42, 0x07c8d9df), TOBN(0x6fd495f7, 0x1c52c66d)}, + {TOBN(0xfb0e169f, 0x275264da), TOBN(0x80c2b746, 0xe57d8362), + TOBN(0xedd987f7, 0x49ad7222), TOBN(0xfdc229af, 0x4398ec7b)}}}, + {{{TOBN(0xb0d1ed84, 0x52666a58), TOBN(0x4bcb6e00, 0xe6a9c3c2), + TOBN(0x3c57411c, 0x26906408), TOBN(0xcfc20755, 0x13556400)}, + {TOBN(0xa08b1c50, 0x5294dba3), TOBN(0xa30ba286, 0x8b7dd31e), + TOBN(0xd70ba90e, 0x991eca74), TOBN(0x094e142c, 0xe762c2b9)}}, + {{TOBN(0xb81d783e, 0x979f3925), TOBN(0x1efd130a, 0xaf4c89a7), + TOBN(0x525c2144, 0xfd1bf7fa), TOBN(0x4b296904, 0x1b265a9e)}, + {TOBN(0xed8e9634, 0xb9db65b6), TOBN(0x35c82e32, 0x03599d8a), + TOBN(0xdaa7a54f, 0x403563f3), TOBN(0x9df088ad, 0x022c38ab)}}, + {{TOBN(0xe5cfb066, 0xbb3fd30a), TOBN(0x429169da, 0xeff0354e), + TOBN(0x809cf852, 0x3524e36c), TOBN(0x136f4fb3, 0x0155be1d)}, + {TOBN(0x4826af01, 0x1fbba712), TOBN(0x6ef0f0b4, 0x506ba1a1), + TOBN(0xd9928b31, 0x77aea73e), TOBN(0xe2bf6af2, 0x5eaa244e)}}, + {{TOBN(0x8d084f12, 0x4237b64b), TOBN(0x688ebe99, 0xe3ecfd07), + TOBN(0x57b8a70c, 0xf6845dd8), TOBN(0x808fc59c, 0x5da4a325)}, + {TOBN(0xa9032b2b, 0xa3585862), TOBN(0xb66825d5, 0xedf29386), + TOBN(0xb5a5a8db, 0x431ec29b), TOBN(0xbb143a98, 0x3a1e8dc8)}}, + {{TOBN(0x35ee94ce, 0x12ae381b), TOBN(0x3a7f176c, 0x86ccda90), + TOBN(0xc63a657e, 0x4606eaca), TOBN(0x9ae5a380, 0x43cd04df)}, + {TOBN(0x9bec8d15, 0xed251b46), TOBN(0x1f5d6d30, 0xcaca5e64), + TOBN(0x347b3b35, 0x9ff20f07), TOBN(0x4d65f034, 0xf7e4b286)}}, + {{TOBN(0x9e93ba24, 0xf111661e), TOBN(0xedced484, 0xb105eb04), + TOBN(0x96dc9ba1, 0xf424b578), TOBN(0xbf8f66b7, 0xe83e9069)}, + {TOBN(0x872d4df4, 0xd7ed8216), TOBN(0xbf07f377, 0x8e2cbecf), + TOBN(0x4281d899, 0x98e73754), TOBN(0xfec85fbb, 0x8aab8708)}}, + {{TOBN(0x9a3c0dee, 0xa5ba5b0b), TOBN(0xe6a116ce, 0x42d05299), + TOBN(0xae9775fe, 0xe9b02d42), TOBN(0x72b05200, 0xa1545cb6)}, + {TOBN(0xbc506f7d, 0x31a3b4ea), TOBN(0xe5893078, 0x8bbd9b32), + TOBN(0xc8bc5f37, 0xe4b12a97), TOBN(0x6b000c06, 0x4a73b671)}}, + {{TOBN(0x13b5bf22, 0x765fa7d0), TOBN(0x59805bf0, 0x1d6a5370), + TOBN(0x67a5e29d, 0x4280db98), TOBN(0x4f53916f, 0x776b1ce3)}, + {TOBN(0x714ff61f, 0x33ddf626), TOBN(0x4206238e, 0xa085d103), + TOBN(0x1c50d4b7, 0xe5809ee3), TOBN(0x999f450d, 0x85f8eb1d)}}, + {{TOBN(0x658a6051, 0xe4c79e9b), TOBN(0x1394cb73, 0xc66a9fea), + TOBN(0x27f31ed5, 0xc6be7b23), TOBN(0xf4c88f36, 0x5aa6f8fe)}, + {TOBN(0x0fb0721f, 0x4aaa499e), TOBN(0x68b3a7d5, 0xe3fb2a6b), + TOBN(0xa788097d, 0x3a92851d), TOBN(0x060e7f8a, 0xe96f4913)}}, + {{TOBN(0x82eebe73, 0x1a3a93bc), TOBN(0x42bbf465, 0xa21adc1a), + TOBN(0xc10b6fa4, 0xef030efd), TOBN(0x247aa4c7, 0x87b097bb)}, + {TOBN(0x8b8dc632, 0xf60c77da), TOBN(0x6ffbc26a, 0xc223523e), + TOBN(0xa4f6ff11, 0x344579cf), TOBN(0x5825653c, 0x980250f6)}}, + {{TOBN(0xb2dd097e, 0xbc1aa2b9), TOBN(0x07889393, 0x37a0333a), + TOBN(0x1cf55e71, 0x37a0db38), TOBN(0x2648487f, 0x792c1613)}, + {TOBN(0xdad01336, 0x3fcef261), TOBN(0x6239c81d, 0x0eabf129), + TOBN(0x8ee761de, 0x9d276be2), TOBN(0x406a7a34, 0x1eda6ad3)}}, + {{TOBN(0x4bf367ba, 0x4a493b31), TOBN(0x54f20a52, 0x9bf7f026), + TOBN(0xb696e062, 0x9795914b), TOBN(0xcddab96d, 0x8bf236ac)}, + {TOBN(0x4ff2c70a, 0xed25ea13), TOBN(0xfa1d09eb, 0x81cbbbe7), + TOBN(0x88fc8c87, 0x468544c5), TOBN(0x847a670d, 0x696b3317)}}, + {{TOBN(0xf133421e, 0x64bcb626), TOBN(0xaea638c8, 0x26dee0b5), + TOBN(0xd6e7680b, 0xb310346c), TOBN(0xe06f4097, 0xd5d4ced3)}, + {TOBN(0x09961452, 0x7512a30b), TOBN(0xf3d867fd, 0xe589a59a), + TOBN(0x2e73254f, 0x52d0c180), TOBN(0x9063d8a3, 0x333c74ac)}}, + {{TOBN(0xeda6c595, 0xd314e7bc), TOBN(0x2ee7464b, 0x467899ed), + TOBN(0x1cef423c, 0x0a1ed5d3), TOBN(0x217e76ea, 0x69cc7613)}, + {TOBN(0x27ccce1f, 0xe7cda917), TOBN(0x12d8016b, 0x8a893f16), + TOBN(0xbcd6de84, 0x9fc74f6b), TOBN(0xfa5817e2, 0xf3144e61)}}, + {{TOBN(0x1f354164, 0x0821ee4c), TOBN(0x1583eab4, 0x0bc61992), + TOBN(0x7490caf6, 0x1d72879f), TOBN(0x998ad9f3, 0xf76ae7b2)}, + {TOBN(0x1e181950, 0xa41157f7), TOBN(0xa9d7e1e6, 0xe8da3a7e), + TOBN(0x963784eb, 0x8426b95f), TOBN(0x0ee4ed6e, 0x542e2a10)}}, + {{TOBN(0xb79d4cc5, 0xac751e7b), TOBN(0x93f96472, 0xfd4211bd), + TOBN(0x8c72d3d2, 0xc8de4fc6), TOBN(0x7b69cbf5, 0xdf44f064)}, + {TOBN(0x3da90ca2, 0xf4bf94e1), TOBN(0x1a5325f8, 0xf12894e2), + TOBN(0x0a437f6c, 0x7917d60b), TOBN(0x9be70486, 0x96c9cb5d)}}, + {{TOBN(0xb4d880bf, 0xe1dc5c05), TOBN(0xd738adda, 0xeebeeb57), + TOBN(0x6f0119d3, 0xdf0fe6a3), TOBN(0x5c686e55, 0x66eaaf5a)}, + {TOBN(0x9cb10b50, 0xdfd0b7ec), TOBN(0xbdd0264b, 0x6a497c21), + TOBN(0xfc093514, 0x8c546c96), TOBN(0x58a947fa, 0x79dbf42a)}}, + {{TOBN(0xc0b48d4e, 0x49ccd6d7), TOBN(0xff8fb02c, 0x88bd5580), + TOBN(0xc75235e9, 0x07d473b2), TOBN(0x4fab1ac5, 0xa2188af3)}, + {TOBN(0x030fa3bc, 0x97576ec0), TOBN(0xe8c946e8, 0x0b7e7d2f), + TOBN(0x40a5c9cc, 0x70305600), TOBN(0x6d8260a9, 0xc8b013b4)}}, + {{TOBN(0x0368304f, 0x70bba85c), TOBN(0xad090da1, 0xa4a0d311), + TOBN(0x7170e870, 0x2415eec1), TOBN(0xbfba35fe, 0x8461ea47)}, + {TOBN(0x6279019a, 0xc1e91938), TOBN(0xa47638f3, 0x1afc415f), + TOBN(0x36c65cbb, 0xbcba0e0f), TOBN(0x02160efb, 0x034e2c48)}}, + {{TOBN(0xe6c51073, 0x615cd9e4), TOBN(0x498ec047, 0xf1243c06), + TOBN(0x3e5a8809, 0xb17b3d8c), TOBN(0x5cd99e61, 0x0cc565f1)}, + {TOBN(0x81e312df, 0x7851dafe), TOBN(0xf156f5ba, 0xa79061e2), + TOBN(0x80d62b71, 0x880c590e), TOBN(0xbec9746f, 0x0a39faa1)}}, + {{TOBN(0x1d98a9c1, 0xc8ed1f7a), TOBN(0x09e43bb5, 0xa81d5ff2), + TOBN(0xd5f00f68, 0x0da0794a), TOBN(0x412050d9, 0x661aa836)}, + {TOBN(0xa89f7c4e, 0x90747e40), TOBN(0x6dc05ebb, 0xb62a3686), + TOBN(0xdf4de847, 0x308e3353), TOBN(0x53868fbb, 0x9fb53bb9)}}, + {{TOBN(0x2b09d2c3, 0xcfdcf7dd), TOBN(0x41a9fce3, 0x723fcab4), + TOBN(0x73d905f7, 0x07f57ca3), TOBN(0x080f9fb1, 0xac8e1555)}, + {TOBN(0x7c088e84, 0x9ba7a531), TOBN(0x07d35586, 0xed9a147f), + TOBN(0x602846ab, 0xaf48c336), TOBN(0x7320fd32, 0x0ccf0e79)}}, + {{TOBN(0xaa780798, 0xb18bd1ff), TOBN(0x52c2e300, 0xafdd2905), + TOBN(0xf27ea3d6, 0x434267cd), TOBN(0x8b96d16d, 0x15605b5f)}, + {TOBN(0x7bb31049, 0x4b45706b), TOBN(0xe7f58b8e, 0x743d25f8), + TOBN(0xe9b5e45b, 0x87f30076), TOBN(0xd19448d6, 0x5d053d5a)}}, + {{TOBN(0x1ecc8cb9, 0xd3210a04), TOBN(0x6bc7d463, 0xdafb5269), + TOBN(0x3e59b10a, 0x67c3489f), TOBN(0x1769788c, 0x65641e1b)}, + {TOBN(0x8a53b82d, 0xbd6cb838), TOBN(0x7066d6e6, 0x236d5f22), + TOBN(0x03aa1c61, 0x6908536e), TOBN(0xc971da0d, 0x66ae9809)}}, + {{TOBN(0x01b3a86b, 0xc49a2fac), TOBN(0x3b8420c0, 0x3092e77a), + TOBN(0x02057300, 0x7d6fb556), TOBN(0x6941b2a1, 0xbff40a87)}, + {TOBN(0x140b6308, 0x0658ff2a), TOBN(0x87804363, 0x3424ab36), + TOBN(0x0253bd51, 0x5751e299), TOBN(0xc75bcd76, 0x449c3e3a)}}, + {{TOBN(0x92eb4090, 0x7f8f875d), TOBN(0x9c9d754e, 0x56c26bbf), + TOBN(0x158cea61, 0x8110bbe7), TOBN(0x62a6b802, 0x745f91ea)}, + {TOBN(0xa79c41aa, 0xc6e7394b), TOBN(0x445b6a83, 0xad57ef10), + TOBN(0x0c5277eb, 0x6ea6f40c), TOBN(0x319fe96b, 0x88633365)}}, + {{TOBN(0x0b0fc61f, 0x385f63cb), TOBN(0x41250c84, 0x22bdd127), + TOBN(0x67d153f1, 0x09e942c2), TOBN(0x60920d08, 0xc021ad5d)}, + {TOBN(0x229f5746, 0x724d81a5), TOBN(0xb7ffb892, 0x5bba3299), + TOBN(0x518c51a1, 0xde413032), TOBN(0x2a9bfe77, 0x3c2fd94c)}}, + {{TOBN(0xcbcde239, 0x3191f4fd), TOBN(0x43093e16, 0xd3d6ada1), + TOBN(0x184579f3, 0x58769606), TOBN(0x2c94a8b3, 0xd236625c)}, + {TOBN(0x6922b9c0, 0x5c437d8e), TOBN(0x3d4ae423, 0xd8d9f3c8), + TOBN(0xf72c31c1, 0x2e7090a2), TOBN(0x4ac3f5f3, 0xd76a55bd)}}, + {{TOBN(0x342508fc, 0x6b6af991), TOBN(0x0d527100, 0x1b5cebbd), + TOBN(0xb84740d0, 0xdd440dd7), TOBN(0x748ef841, 0x780162fd)}, + {TOBN(0xa8dbfe0e, 0xdfc6fafb), TOBN(0xeadfdf05, 0xf7300f27), + TOBN(0x7d06555f, 0xfeba4ec9), TOBN(0x12c56f83, 0x9e25fa97)}}, + {{TOBN(0x77f84203, 0xd39b8c34), TOBN(0xed8b1be6, 0x3125eddb), + TOBN(0x5bbf2441, 0xf6e39dc5), TOBN(0xb00f6ee6, 0x6a5d678a)}, + {TOBN(0xba456ecf, 0x57d0ea99), TOBN(0xdcae0f58, 0x17e06c43), + TOBN(0x01643de4, 0x0f5b4baa), TOBN(0x2c324341, 0xd161b9be)}}, + {{TOBN(0x80177f55, 0xe126d468), TOBN(0xed325f1f, 0x76748e09), + TOBN(0x6116004a, 0xcfa9bdc2), TOBN(0x2d8607e6, 0x3a9fb468)}, + {TOBN(0x0e573e27, 0x6009d660), TOBN(0x3a525d2e, 0x8d10c5a1), + TOBN(0xd26cb45c, 0x3b9009a0), TOBN(0xb6b0cdc0, 0xde9d7448)}}, + {{TOBN(0x949c9976, 0xe1337c26), TOBN(0x6faadebd, 0xd73d68e5), + TOBN(0x9e158614, 0xf1b768d9), TOBN(0x22dfa557, 0x9cc4f069)}, + {TOBN(0xccd6da17, 0xbe93c6d6), TOBN(0x24866c61, 0xa504f5b9), + TOBN(0x2121353c, 0x8d694da1), TOBN(0x1c6ca580, 0x0140b8c6)}}, + {{TOBN(0xc245ad8c, 0xe964021e), TOBN(0xb83bffba, 0x032b82b3), + TOBN(0xfaa220c6, 0x47ef9898), TOBN(0x7e8d3ac6, 0x982c948a)}, + {TOBN(0x1faa2091, 0xbc2d124a), TOBN(0xbd54c3dd, 0x05b15ff4), + TOBN(0x386bf3ab, 0xc87c6fb7), TOBN(0xfb2b0563, 0xfdeb6f66)}}, + {{TOBN(0x4e77c557, 0x5b45afb4), TOBN(0xe9ded649, 0xefb8912d), + TOBN(0x7ec9bbf5, 0x42f6e557), TOBN(0x2570dfff, 0x62671f00)}, + {TOBN(0x2b3bfb78, 0x88e084bd), TOBN(0xa024b238, 0xf37fe5b4), + TOBN(0x44e7dc04, 0x95649aee), TOBN(0x498ca255, 0x5e7ec1d8)}}, + {{TOBN(0x3bc766ea, 0xaaa07e86), TOBN(0x0db6facb, 0xf3608586), + TOBN(0xbadd2549, 0xbdc259c8), TOBN(0x95af3c6e, 0x041c649f)}, + {TOBN(0xb36a928c, 0x02e30afb), TOBN(0x9b5356ad, 0x008a88b8), + TOBN(0x4b67a5f1, 0xcf1d9e9d), TOBN(0xc6542e47, 0xa5d8d8ce)}}, + {{TOBN(0x73061fe8, 0x7adfb6cc), TOBN(0xcc826fd3, 0x98678141), + TOBN(0x00e758b1, 0x3c80515a), TOBN(0x6afe3247, 0x41485083)}, + {TOBN(0x0fcb08b9, 0xb6ae8a75), TOBN(0xb8cf388d, 0x4acf51e1), + TOBN(0x344a5560, 0x6961b9d6), TOBN(0x1a6778b8, 0x6a97fd0c)}}, + {{TOBN(0xd840fdc1, 0xecc4c7e3), TOBN(0xde9fe47d, 0x16db68cc), + TOBN(0xe95f89de, 0xa3e216aa), TOBN(0x84f1a6a4, 0x9594a8be)}, + {TOBN(0x7ddc7d72, 0x5a7b162b), TOBN(0xc5cfda19, 0xadc817a3), + TOBN(0x80a5d350, 0x78b58d46), TOBN(0x93365b13, 0x82978f19)}}, + {{TOBN(0x2e44d225, 0x26a1fc90), TOBN(0x0d6d10d2, 0x4d70705d), + TOBN(0xd94b6b10, 0xd70c45f4), TOBN(0x0f201022, 0xb216c079)}, + {TOBN(0xcec966c5, 0x658fde41), TOBN(0xa8d2bc7d, 0x7e27601d), + TOBN(0xbfcce3e1, 0xff230be7), TOBN(0x3394ff6b, 0x0033ffb5)}}, + {{TOBN(0xd890c509, 0x8132c9af), TOBN(0xaac4b0eb, 0x361e7868), + TOBN(0x5194ded3, 0xe82d15aa), TOBN(0x4550bd2e, 0x23ae6b7d)}, + {TOBN(0x3fda318e, 0xea5399d4), TOBN(0xd989bffa, 0x91638b80), + TOBN(0x5ea124d0, 0xa14aa12d), TOBN(0x1fb1b899, 0x3667b944)}}, + {{TOBN(0x95ec7969, 0x44c44d6a), TOBN(0x91df144a, 0x57e86137), + TOBN(0x915fd620, 0x73adac44), TOBN(0x8f01732d, 0x59a83801)}, + {TOBN(0xec579d25, 0x3aa0a633), TOBN(0x06de5e7c, 0xc9d6d59c), + TOBN(0xc132f958, 0xb1ef8010), TOBN(0x29476f96, 0xe65c1a02)}}, + {{TOBN(0x336a77c0, 0xd34c3565), TOBN(0xef1105b2, 0x1b9f1e9e), + TOBN(0x63e6d08b, 0xf9e08002), TOBN(0x9aff2f21, 0xc613809e)}, + {TOBN(0xb5754f85, 0x3a80e75d), TOBN(0xde71853e, 0x6bbda681), + TOBN(0x86f041df, 0x8197fd7a), TOBN(0x8b332e08, 0x127817fa)}}, + {{TOBN(0x05d99be8, 0xb9c20cda), TOBN(0x89f7aad5, 0xd5cd0c98), + TOBN(0x7ef936fe, 0x5bb94183), TOBN(0x92ca0753, 0xb05cd7f2)}, + {TOBN(0x9d65db11, 0x74a1e035), TOBN(0x02628cc8, 0x13eaea92), + TOBN(0xf2d9e242, 0x49e4fbf2), TOBN(0x94fdfd9b, 0xe384f8b7)}}, + {{TOBN(0x65f56054, 0x63428c6b), TOBN(0x2f7205b2, 0x90b409a5), + TOBN(0xf778bb78, 0xff45ae11), TOBN(0xa13045be, 0xc5ee53b2)}, + {TOBN(0xe00a14ff, 0x03ef77fe), TOBN(0x689cd59f, 0xffef8bef), + TOBN(0x3578f0ed, 0x1e9ade22), TOBN(0xe99f3ec0, 0x6268b6a8)}}, + {{TOBN(0xa2057d91, 0xea1b3c3e), TOBN(0x2d1a7053, 0xb8823a4a), + TOBN(0xabbb336a, 0x2cca451e), TOBN(0xcd2466e3, 0x2218bb5d)}, + {TOBN(0x3ac1f42f, 0xc8cb762d), TOBN(0x7e312aae, 0x7690211f), + TOBN(0xebb9bd73, 0x45d07450), TOBN(0x207c4b82, 0x46c2213f)}}, + {{TOBN(0x99d425c1, 0x375913ec), TOBN(0x94e45e96, 0x67908220), + TOBN(0xc08f3087, 0xcd67dbf6), TOBN(0xa5670fbe, 0xc0887056)}, + {TOBN(0x6717b64a, 0x66f5b8fc), TOBN(0xd5a56aea, 0x786fec28), + TOBN(0xa8c3f55f, 0xc0ff4952), TOBN(0xa77fefae, 0x457ac49b)}}, + {{TOBN(0x29882d7c, 0x98379d44), TOBN(0xd000bdfb, 0x509edc8a), + TOBN(0xc6f95979, 0xe66fe464), TOBN(0x504a6115, 0xfa61bde0)}, + {TOBN(0x56b3b871, 0xeffea31a), TOBN(0x2d3de26d, 0xf0c21a54), + TOBN(0x21dbff31, 0x834753bf), TOBN(0xe67ecf49, 0x69269d86)}}, + {{TOBN(0x7a176952, 0x151fe690), TOBN(0x03515804, 0x7f2adb5f), + TOBN(0xee794b15, 0xd1b62a8d), TOBN(0xf004ceec, 0xaae454e6)}, + {TOBN(0x0897ea7c, 0xf0386fac), TOBN(0x3b62ff12, 0xd1fca751), + TOBN(0x154181df, 0x1b7a04ec), TOBN(0x2008e04a, 0xfb5847ec)}}, + {{TOBN(0xd147148e, 0x41dbd772), TOBN(0x2b419f73, 0x22942654), + TOBN(0x669f30d3, 0xe9c544f7), TOBN(0x52a2c223, 0xc8540149)}, + {TOBN(0x5da9ee14, 0x634dfb02), TOBN(0x5f074ff0, 0xf47869f3), + TOBN(0x74ee878d, 0xa3933acc), TOBN(0xe6510651, 0x4fe35ed1)}}, + {{TOBN(0xb3eb9482, 0xf1012e7a), TOBN(0x51013cc0, 0xa8a566ae), + TOBN(0xdd5e9243, 0x47c00d3b), TOBN(0x7fde089d, 0x946bb0e5)}, + {TOBN(0x030754fe, 0xc731b4b3), TOBN(0x12a136a4, 0x99fda062), + TOBN(0x7c1064b8, 0x5a1a35bc), TOBN(0xbf1f5763, 0x446c84ef)}}, + {{TOBN(0xed29a56d, 0xa16d4b34), TOBN(0x7fba9d09, 0xdca21c4f), + TOBN(0x66d7ac00, 0x6d8de486), TOBN(0x60061987, 0x73a2a5e1)}, + {TOBN(0x8b400f86, 0x9da28ff0), TOBN(0x3133f708, 0x43c4599c), + TOBN(0x9911c9b8, 0xee28cb0d), TOBN(0xcd7e2874, 0x8e0af61d)}}, + {{TOBN(0x5a85f0f2, 0x72ed91fc), TOBN(0x85214f31, 0x9cd4a373), + TOBN(0x881fe5be, 0x1925253c), TOBN(0xd8dc98e0, 0x91e8bc76)}, + {TOBN(0x7120affe, 0x585cc3a2), TOBN(0x724952ed, 0x735bf97a), + TOBN(0x5581e7dc, 0x3eb34581), TOBN(0x5cbff4f2, 0xe52ee57d)}}, + {{TOBN(0x8d320a0e, 0x87d8cc7b), TOBN(0x9beaa7f3, 0xf1d280d0), + TOBN(0x7a0b9571, 0x9beec704), TOBN(0x9126332e, 0x5b7f0057)}, + {TOBN(0x01fbc1b4, 0x8ed3bd6d), TOBN(0x35bb2c12, 0xd945eb24), + TOBN(0x6404694e, 0x9a8ae255), TOBN(0xb6092eec, 0x8d6abfb3)}}, + {{TOBN(0x4d76143f, 0xcc058865), TOBN(0x7b0a5af2, 0x6e249922), + TOBN(0x8aef9440, 0x6a50d353), TOBN(0xe11e4bcc, 0x64f0e07a)}, + {TOBN(0x4472993a, 0xa14a90fa), TOBN(0x7706e20c, 0xba0c51d4), + TOBN(0xf403292f, 0x1532672d), TOBN(0x52573bfa, 0x21829382)}}, + {{TOBN(0x6a7bb6a9, 0x3b5bdb83), TOBN(0x08da65c0, 0xa4a72318), + TOBN(0xc58d22aa, 0x63eb065f), TOBN(0x1717596c, 0x1b15d685)}, + {TOBN(0x112df0d0, 0xb266d88b), TOBN(0xf688ae97, 0x5941945a), + TOBN(0x487386e3, 0x7c292cac), TOBN(0x42f3b50d, 0x57d6985c)}}, + {{TOBN(0x6da4f998, 0x6a90fc34), TOBN(0xc8f257d3, 0x65ca8a8d), + TOBN(0xc2feabca, 0x6951f762), TOBN(0xe1bc81d0, 0x74c323ac)}, + {TOBN(0x1bc68f67, 0x251a2a12), TOBN(0x10d86587, 0xbe8a70dc), + TOBN(0xd648af7f, 0xf0f84d2e), TOBN(0xf0aa9ebc, 0x6a43ac92)}}, + {{TOBN(0x69e3be04, 0x27596893), TOBN(0xb6bb02a6, 0x45bf452b), + TOBN(0x0875c11a, 0xf4c698c8), TOBN(0x6652b5c7, 0xbece3794)}, + {TOBN(0x7b3755fd, 0x4f5c0499), TOBN(0x6ea16558, 0xb5532b38), + TOBN(0xd1c69889, 0xa2e96ef7), TOBN(0x9c773c3a, 0x61ed8f48)}}, + {{TOBN(0x2b653a40, 0x9b323abc), TOBN(0xe26605e1, 0xf0e1d791), + TOBN(0x45d41064, 0x4a87157a), TOBN(0x8f9a78b7, 0xcbbce616)}, + {TOBN(0xcf1e44aa, 0xc407eddd), TOBN(0x81ddd1d8, 0xa35b964f), + TOBN(0x473e339e, 0xfd083999), TOBN(0x6c94bdde, 0x8e796802)}}, + {{TOBN(0x5a304ada, 0x8545d185), TOBN(0x82ae44ea, 0x738bb8cb), + TOBN(0x628a35e3, 0xdf87e10e), TOBN(0xd3624f3d, 0xa15b9fe3)}, + {TOBN(0xcc44209b, 0x14be4254), TOBN(0x7d0efcbc, 0xbdbc2ea5), + TOBN(0x1f603362, 0x04c37bbe), TOBN(0x21f363f5, 0x56a5852c)}}, + {{TOBN(0xa1503d1c, 0xa8501550), TOBN(0x2251e0e1, 0xd8ab10bb), + TOBN(0xde129c96, 0x6961c51c), TOBN(0x1f7246a4, 0x81910f68)}, + {TOBN(0x2eb744ee, 0x5f2591f2), TOBN(0x3c47d33f, 0x5e627157), + TOBN(0x4d6d62c9, 0x22f3bd68), TOBN(0x6120a64b, 0xcb8df856)}}, + {{TOBN(0x3a9ac6c0, 0x7b5d07df), TOBN(0xa92b9558, 0x7ef39783), + TOBN(0xe128a134, 0xab3a9b4f), TOBN(0x41c18807, 0xb1252f05)}, + {TOBN(0xfc7ed089, 0x80ba9b1c), TOBN(0xac8dc6de, 0xc532a9dd), + TOBN(0xbf829cef, 0x55246809), TOBN(0x101b784f, 0x5b4ee80f)}}, + {{TOBN(0xc09945bb, 0xb6f11603), TOBN(0x57b09dbe, 0x41d2801e), + TOBN(0xfba5202f, 0xa97534a8), TOBN(0x7fd8ae5f, 0xc17b9614)}, + {TOBN(0xa50ba666, 0x78308435), TOBN(0x9572f77c, 0xd3868c4d), + TOBN(0x0cef7bfd, 0x2dd7aab0), TOBN(0xe7958e08, 0x2c7c79ff)}}, + {{TOBN(0x81262e42, 0x25346689), TOBN(0x716da290, 0xb07c7004), + TOBN(0x35f911ea, 0xb7950ee3), TOBN(0x6fd72969, 0x261d21b5)}, + {TOBN(0x52389803, 0x08b640d3), TOBN(0x5b0026ee, 0x887f12a1), + TOBN(0x20e21660, 0x742e9311), TOBN(0x0ef6d541, 0x5ff77ff7)}}, + {{TOBN(0x969127f0, 0xf9c41135), TOBN(0xf21d60c9, 0x68a64993), + TOBN(0x656e5d0c, 0xe541875c), TOBN(0xf1e0f84e, 0xa1d3c233)}, + {TOBN(0x9bcca359, 0x06002d60), TOBN(0xbe2da60c, 0x06191552), + TOBN(0x5da8bbae, 0x61181ec3), TOBN(0x9f04b823, 0x65806f19)}}, + {{TOBN(0xf1604a7d, 0xd4b79bb8), TOBN(0xaee806fb, 0x52c878c8), + TOBN(0x34144f11, 0x8d47b8e8), TOBN(0x72edf52b, 0x949f9054)}, + {TOBN(0xebfca84e, 0x2127015a), TOBN(0x9051d0c0, 0x9cb7cef3), + TOBN(0x86e8fe58, 0x296deec8), TOBN(0x33b28188, 0x41010d74)}}}, + {{{TOBN(0x01079383, 0x171b445f), TOBN(0x9bcf21e3, 0x8131ad4c), + TOBN(0x8cdfe205, 0xc93987e8), TOBN(0xe63f4152, 0xc92e8c8f)}, + {TOBN(0x729462a9, 0x30add43d), TOBN(0x62ebb143, 0xc980f05a), + TOBN(0x4f3954e5, 0x3b06e968), TOBN(0xfe1d75ad, 0x242cf6b1)}}, + {{TOBN(0x5f95c6c7, 0xaf8685c8), TOBN(0xd4c1c8ce, 0x2f8f01aa), + TOBN(0xc44bbe32, 0x2574692a), TOBN(0xb8003478, 0xd4a4a068)}, + {TOBN(0x7c8fc6e5, 0x2eca3cdb), TOBN(0xea1db16b, 0xec04d399), + TOBN(0xb05bc82e, 0x8f2bc5cf), TOBN(0x763d517f, 0xf44793d2)}}, + {{TOBN(0x4451c1b8, 0x08bd98d0), TOBN(0x644b1cd4, 0x6575f240), + TOBN(0x6907eb33, 0x7375d270), TOBN(0x56c8bebd, 0xfa2286bd)}, + {TOBN(0xc713d2ac, 0xc4632b46), TOBN(0x17da427a, 0xafd60242), + TOBN(0x313065b7, 0xc95c7546), TOBN(0xf8239898, 0xbf17a3de)}}, + {{TOBN(0xf3b7963f, 0x4c830320), TOBN(0x842c7aa0, 0x903203e3), + TOBN(0xaf22ca0a, 0xe7327afb), TOBN(0x38e13092, 0x967609b6)}, + {TOBN(0x73b8fb62, 0x757558f1), TOBN(0x3cc3e831, 0xf7eca8c1), + TOBN(0xe4174474, 0xf6331627), TOBN(0xa77989ca, 0xc3c40234)}}, + {{TOBN(0xe5fd17a1, 0x44a081e0), TOBN(0xd797fb7d, 0xb70e296a), + TOBN(0x2b472b30, 0x481f719c), TOBN(0x0e632a98, 0xfe6f8c52)}, + {TOBN(0x89ccd116, 0xc5f0c284), TOBN(0xf51088af, 0x2d987c62), + TOBN(0x2a2bccda, 0x4c2de6cf), TOBN(0x810f9efe, 0xf679f0f9)}}, + {{TOBN(0xb0f394b9, 0x7ffe4b3e), TOBN(0x0b691d21, 0xe5fa5d21), + TOBN(0xb0bd7747, 0x9dfbbc75), TOBN(0xd2830fda, 0xfaf78b00)}, + {TOBN(0xf78c249c, 0x52434f57), TOBN(0x4b1f7545, 0x98096dab), + TOBN(0x73bf6f94, 0x8ff8c0b3), TOBN(0x34aef03d, 0x454e134c)}}, + {{TOBN(0xf8d151f4, 0xb7ac7ec5), TOBN(0xd6ceb95a, 0xe50da7d5), + TOBN(0xa1b492b0, 0xdc3a0eb8), TOBN(0x75157b69, 0xb3dd2863)}, + {TOBN(0xe2c4c74e, 0xc5413d62), TOBN(0xbe329ff7, 0xbc5fc4c7), + TOBN(0x835a2aea, 0x60fa9dda), TOBN(0xf117f5ad, 0x7445cb87)}}, + {{TOBN(0xae8317f4, 0xb0166f7a), TOBN(0xfbd3e3f7, 0xceec74e6), + TOBN(0xfdb516ac, 0xe0874bfd), TOBN(0x3d846019, 0xc681f3a3)}, + {TOBN(0x0b12ee5c, 0x7c1620b0), TOBN(0xba68b4dd, 0x2b63c501), + TOBN(0xac03cd32, 0x6668c51e), TOBN(0x2a6279f7, 0x4e0bcb5b)}}, + {{TOBN(0x17bd69b0, 0x6ae85c10), TOBN(0x72946979, 0x1dfdd3a6), + TOBN(0xd9a03268, 0x2c078bec), TOBN(0x41c6a658, 0xbfd68a52)}, + {TOBN(0xcdea1024, 0x0e023900), TOBN(0xbaeec121, 0xb10d144d), + TOBN(0x5a600e74, 0x058ab8dc), TOBN(0x1333af21, 0xbb89ccdd)}}, + {{TOBN(0xdf25eae0, 0x3aaba1f1), TOBN(0x2cada16e, 0x3b7144cf), + TOBN(0x657ee27d, 0x71ab98bc), TOBN(0x99088b4c, 0x7a6fc96e)}, + {TOBN(0x05d5c0a0, 0x3549dbd4), TOBN(0x42cbdf8f, 0xf158c3ac), + TOBN(0x3fb6b3b0, 0x87edd685), TOBN(0x22071cf6, 0x86f064d0)}}, + {{TOBN(0xd2d6721f, 0xff2811e5), TOBN(0xdb81b703, 0xfe7fae8c), + TOBN(0x3cfb74ef, 0xd3f1f7bb), TOBN(0x0cdbcd76, 0x16cdeb5d)}, + {TOBN(0x4f39642a, 0x566a808c), TOBN(0x02b74454, 0x340064d6), + TOBN(0xfabbadca, 0x0528fa6f), TOBN(0xe4c3074c, 0xd3fc0bb6)}}, + {{TOBN(0xb32cb8b0, 0xb796d219), TOBN(0xc3e95f4f, 0x34741dd9), + TOBN(0x87212125, 0x68edf6f5), TOBN(0x7a03aee4, 0xa2b9cb8e)}, + {TOBN(0x0cd3c376, 0xf53a89aa), TOBN(0x0d8af9b1, 0x948a28dc), + TOBN(0xcf86a3f4, 0x902ab04f), TOBN(0x8aacb62a, 0x7f42002d)}}, + {{TOBN(0x106985eb, 0xf62ffd52), TOBN(0xe670b54e, 0x5797bf10), + TOBN(0x4b405209, 0xc5e30aef), TOBN(0x12c97a20, 0x4365b5e9)}, + {TOBN(0x104646ce, 0x1fe32093), TOBN(0x13cb4ff6, 0x3907a8c9), + TOBN(0x8b9f30d1, 0xd46e726b), TOBN(0xe1985e21, 0xaba0f499)}}, + {{TOBN(0xc573dea9, 0x10a230cd), TOBN(0x24f46a93, 0xcd30f947), + TOBN(0xf2623fcf, 0xabe2010a), TOBN(0x3f278cb2, 0x73f00e4f)}, + {TOBN(0xed55c67d, 0x50b920eb), TOBN(0xf1cb9a2d, 0x8e760571), + TOBN(0x7c50d109, 0x0895b709), TOBN(0x4207cf07, 0x190d4369)}}, + {{TOBN(0x3b027e81, 0xc4127fe1), TOBN(0xa9f8b9ad, 0x3ae9c566), + TOBN(0x5ab10851, 0xacbfbba5), TOBN(0xa747d648, 0x569556f5)}, + {TOBN(0xcc172b5c, 0x2ba97bf7), TOBN(0x15e0f77d, 0xbcfa3324), + TOBN(0xa345b797, 0x7686279d), TOBN(0x5a723480, 0xe38003d3)}}, + {{TOBN(0xfd8e139f, 0x8f5fcda8), TOBN(0xf3e558c4, 0xbdee5bfd), + TOBN(0xd76cbaf4, 0xe33f9f77), TOBN(0x3a4c97a4, 0x71771969)}, + {TOBN(0xda27e84b, 0xf6dce6a7), TOBN(0xff373d96, 0x13e6c2d1), + TOBN(0xf115193c, 0xd759a6e9), TOBN(0x3f9b7025, 0x63d2262c)}}, + {{TOBN(0xd9764a31, 0x317cd062), TOBN(0x30779d8e, 0x199f8332), + TOBN(0xd8074106, 0x16b11b0b), TOBN(0x7917ab9f, 0x78aeaed8)}, + {TOBN(0xb67a9cbe, 0x28fb1d8e), TOBN(0x2e313563, 0x136eda33), + TOBN(0x010b7069, 0xa371a86c), TOBN(0x44d90fa2, 0x6744e6b7)}}, + {{TOBN(0x68190867, 0xd6b3e243), TOBN(0x9fe6cd9d, 0x59048c48), + TOBN(0xb900b028, 0x95731538), TOBN(0xa012062f, 0x32cae04f)}, + {TOBN(0x8107c8bc, 0x9399d082), TOBN(0x47e8c54a, 0x41df12e2), + TOBN(0x14ba5117, 0xb6ef3f73), TOBN(0x22260bea, 0x81362f0b)}}, + {{TOBN(0x90ea261e, 0x1a18cc20), TOBN(0x2192999f, 0x2321d636), + TOBN(0xef64d314, 0xe311b6a0), TOBN(0xd7401e4c, 0x3b54a1f5)}, + {TOBN(0x19019983, 0x6fbca2ba), TOBN(0x46ad3293, 0x8fbffc4b), + TOBN(0xa142d3f6, 0x3786bf40), TOBN(0xeb5cbc26, 0xb67039fc)}}, + {{TOBN(0x9cb0ae6c, 0x252bd479), TOBN(0x05e0f88a, 0x12b5848f), + TOBN(0x78f6d2b2, 0xa5c97663), TOBN(0x6f6e149b, 0xc162225c)}, + {TOBN(0xe602235c, 0xde601a89), TOBN(0xd17bbe98, 0xf373be1f), + TOBN(0xcaf49a5b, 0xa8471827), TOBN(0x7e1a0a85, 0x18aaa116)}}, + {{TOBN(0x6c833196, 0x270580c3), TOBN(0x1e233839, 0xf1c98a14), + TOBN(0x67b2f7b4, 0xae34e0a5), TOBN(0x47ac8745, 0xd8ce7289)}, + {TOBN(0x2b74779a, 0x100dd467), TOBN(0x274a4337, 0x4ee50d09), + TOBN(0x603dcf13, 0x83608bc9), TOBN(0xcd9da6c3, 0xc89e8388)}}, + {{TOBN(0x2660199f, 0x355116ac), TOBN(0xcc38bb59, 0xb6d18eed), + TOBN(0x3075f31f, 0x2f4bc071), TOBN(0x9774457f, 0x265dc57e)}, + {TOBN(0x06a6a9c8, 0xc6db88bb), TOBN(0x6429d07f, 0x4ec98e04), + TOBN(0x8d05e57b, 0x05ecaa8b), TOBN(0x20f140b1, 0x7872ea7b)}}, + {{TOBN(0xdf8c0f09, 0xca494693), TOBN(0x48d3a020, 0xf252e909), + TOBN(0x4c5c29af, 0x57b14b12), TOBN(0x7e6fa37d, 0xbf47ad1c)}, + {TOBN(0x66e7b506, 0x49a0c938), TOBN(0xb72c0d48, 0x6be5f41f), + TOBN(0x6a6242b8, 0xb2359412), TOBN(0xcd35c774, 0x8e859480)}}, + {{TOBN(0x12536fea, 0x87baa627), TOBN(0x58c1fec1, 0xf72aa680), + TOBN(0x6c29b637, 0x601e5dc9), TOBN(0x9e3c3c1c, 0xde9e01b9)}, + {TOBN(0xefc8127b, 0x2bcfe0b0), TOBN(0x35107102, 0x2a12f50d), + TOBN(0x6ccd6cb1, 0x4879b397), TOBN(0xf792f804, 0xf8a82f21)}}, + {{TOBN(0x509d4804, 0xa9b46402), TOBN(0xedddf85d, 0xc10f0850), + TOBN(0x928410dc, 0x4b6208aa), TOBN(0xf6229c46, 0x391012dc)}, + {TOBN(0xc5a7c41e, 0x7727b9b6), TOBN(0x289e4e4b, 0xaa444842), + TOBN(0x049ba1d9, 0xe9a947ea), TOBN(0x44f9e47f, 0x83c8debc)}}, + {{TOBN(0xfa77a1fe, 0x611f8b8e), TOBN(0xfd2e416a, 0xf518f427), + TOBN(0xc5fffa70, 0x114ebac3), TOBN(0xfe57c4e9, 0x5d89697b)}, + {TOBN(0xfdd053ac, 0xb1aaf613), TOBN(0x31df210f, 0xea585a45), + TOBN(0x318cc10e, 0x24985034), TOBN(0x1a38efd1, 0x5f1d6130)}}, + {{TOBN(0xbf86f237, 0x0b1e9e21), TOBN(0xb258514d, 0x1dbe88aa), + TOBN(0x1e38a588, 0x90c1baf9), TOBN(0x2936a01e, 0xbdb9b692)}, + {TOBN(0xd576de98, 0x6dd5b20c), TOBN(0xb586bf71, 0x70f98ecf), + TOBN(0xcccf0f12, 0xc42d2fd7), TOBN(0x8717e61c, 0xfb35bd7b)}}, + {{TOBN(0x8b1e5722, 0x35e6fc06), TOBN(0x3477728f, 0x0b3e13d5), + TOBN(0x150c294d, 0xaa8a7372), TOBN(0xc0291d43, 0x3bfa528a)}, + {TOBN(0xc6c8bc67, 0xcec5a196), TOBN(0xdeeb31e4, 0x5c2e8a7c), + TOBN(0xba93e244, 0xfb6e1c51), TOBN(0xb9f8b71b, 0x2e28e156)}}, + {{TOBN(0xce65a287, 0x968a2ab9), TOBN(0xe3c5ce69, 0x46bbcb1f), + TOBN(0xf8c835b9, 0xe7ae3f30), TOBN(0x16bbee26, 0xff72b82b)}, + {TOBN(0x665e2017, 0xfd42cd22), TOBN(0x1e139970, 0xf8b1d2a0), + TOBN(0x125cda29, 0x79204932), TOBN(0x7aee94a5, 0x49c3bee5)}}, + {{TOBN(0x68c70160, 0x89821a66), TOBN(0xf7c37678, 0x8f981669), + TOBN(0xd90829fc, 0x48cc3645), TOBN(0x346af049, 0xd70addfc)}, + {TOBN(0x2057b232, 0x370bf29c), TOBN(0xf90c73ce, 0x42e650ee), + TOBN(0xe03386ea, 0xa126ab90), TOBN(0x0e266e7e, 0x975a087b)}}, + {{TOBN(0x80578eb9, 0x0fca65d9), TOBN(0x7e2989ea, 0x16af45b8), + TOBN(0x7438212d, 0xcac75a4e), TOBN(0x38c7ca39, 0x4fef36b8)}, + {TOBN(0x8650c494, 0xd402676a), TOBN(0x26ab5a66, 0xf72c7c48), + TOBN(0x4e6cb426, 0xce3a464e), TOBN(0xf8f99896, 0x2b72f841)}}, + {{TOBN(0x8c318491, 0x1a335cc8), TOBN(0x563459ba, 0x6a5913e4), + TOBN(0x1b920d61, 0xc7b32919), TOBN(0x805ab8b6, 0xa02425ad)}, + {TOBN(0x2ac512da, 0x8d006086), TOBN(0x6ca4846a, 0xbcf5c0fd), + TOBN(0xafea51d8, 0xac2138d7), TOBN(0xcb647545, 0x344cd443)}}, + {{TOBN(0x0429ee8f, 0xbd7d9040), TOBN(0xee66a2de, 0x819b9c96), + TOBN(0x54f9ec25, 0xdea7d744), TOBN(0x2ffea642, 0x671721bb)}, + {TOBN(0x4f19dbd1, 0x114344ea), TOBN(0x04304536, 0xfd0dbc8b), + TOBN(0x014b50aa, 0x29ec7f91), TOBN(0xb5fc22fe, 0xbb06014d)}}, + {{TOBN(0x60d963a9, 0x1ee682e0), TOBN(0xdf48abc0, 0xfe85c727), + TOBN(0x0cadba13, 0x2e707c2d), TOBN(0xde608d3a, 0xa645aeff)}, + {TOBN(0x05f1c28b, 0xedafd883), TOBN(0x3c362ede, 0xbd94de1f), + TOBN(0x8dd0629d, 0x13593e41), TOBN(0x0a5e736f, 0x766d6eaf)}}, + {{TOBN(0xbfa92311, 0xf68cf9d1), TOBN(0xa4f9ef87, 0xc1797556), + TOBN(0x10d75a1f, 0x5601c209), TOBN(0x651c374c, 0x09b07361)}, + {TOBN(0x49950b58, 0x88b5cead), TOBN(0x0ef00058, 0x6fa9dbaa), + TOBN(0xf51ddc26, 0x4e15f33a), TOBN(0x1f8b5ca6, 0x2ef46140)}}, + {{TOBN(0x343ac0a3, 0xee9523f0), TOBN(0xbb75eab2, 0x975ea978), + TOBN(0x1bccf332, 0x107387f4), TOBN(0x790f9259, 0x9ab0062e)}, + {TOBN(0xf1a363ad, 0x1e4f6a5f), TOBN(0x06e08b84, 0x62519a50), + TOBN(0x60915187, 0x7265f1ee), TOBN(0x6a80ca34, 0x93ae985e)}}, + {{TOBN(0x81b29768, 0xaaba4864), TOBN(0xb13cabf2, 0x8d52a7d6), + TOBN(0xb5c36348, 0x8ead03f1), TOBN(0xc932ad95, 0x81c7c1c0)}, + {TOBN(0x5452708e, 0xcae1e27b), TOBN(0x9dac4269, 0x1b0df648), + TOBN(0x233e3f0c, 0xdfcdb8bc), TOBN(0xe6ceccdf, 0xec540174)}}, + {{TOBN(0xbd0d845e, 0x95081181), TOBN(0xcc8a7920, 0x699355d5), + TOBN(0x111c0f6d, 0xc3b375a8), TOBN(0xfd95bc6b, 0xfd51e0dc)}, + {TOBN(0x4a106a26, 0x6888523a), TOBN(0x4d142bd6, 0xcb01a06d), + TOBN(0x79bfd289, 0xadb9b397), TOBN(0x0bdbfb94, 0xe9863914)}}, + {{TOBN(0x29d8a229, 0x1660f6a6), TOBN(0x7f6abcd6, 0x551c042d), + TOBN(0x13039deb, 0x0ac3ffe8), TOBN(0xa01be628, 0xec8523fb)}, + {TOBN(0x6ea34103, 0x0ca1c328), TOBN(0xc74114bd, 0xb903928e), + TOBN(0x8aa4ff4e, 0x9e9144b0), TOBN(0x7064091f, 0x7f9a4b17)}}, + {{TOBN(0xa3f4f521, 0xe447f2c4), TOBN(0x81b8da7a, 0x604291f0), + TOBN(0xd680bc46, 0x7d5926de), TOBN(0x84f21fd5, 0x34a1202f)}, + {TOBN(0x1d1e3181, 0x4e9df3d8), TOBN(0x1ca4861a, 0x39ab8d34), + TOBN(0x809ddeec, 0x5b19aa4a), TOBN(0x59f72f7e, 0x4d329366)}}, + {{TOBN(0xa2f93f41, 0x386d5087), TOBN(0x40bf739c, 0xdd67d64f), + TOBN(0xb4494205, 0x66702158), TOBN(0xc33c65be, 0x73b1e178)}, + {TOBN(0xcdcd657c, 0x38ca6153), TOBN(0x97f4519a, 0xdc791976), + TOBN(0xcc7c7f29, 0xcd6e1f39), TOBN(0x38de9cfb, 0x7e3c3932)}}, + {{TOBN(0xe448eba3, 0x7b793f85), TOBN(0xe9f8dbf9, 0xf067e914), + TOBN(0xc0390266, 0xf114ae87), TOBN(0x39ed75a7, 0xcd6a8e2a)}, + {TOBN(0xadb14848, 0x7ffba390), TOBN(0x67f8cb8b, 0x6af9bc09), + TOBN(0x322c3848, 0x9c7476db), TOBN(0xa320fecf, 0x52a538d6)}}, + {{TOBN(0xe0493002, 0xb2aced2b), TOBN(0xdfba1809, 0x616bd430), + TOBN(0x531c4644, 0xc331be70), TOBN(0xbc04d32e, 0x90d2e450)}, + {TOBN(0x1805a0d1, 0x0f9f142d), TOBN(0x2c44a0c5, 0x47ee5a23), + TOBN(0x31875a43, 0x3989b4e3), TOBN(0x6b1949fd, 0x0c063481)}}, + {{TOBN(0x2dfb9e08, 0xbe0f4492), TOBN(0x3ff0da03, 0xe9d5e517), + TOBN(0x03dbe9a1, 0xf79466a8), TOBN(0x0b87bcd0, 0x15ea9932)}, + {TOBN(0xeb64fc83, 0xab1f58ab), TOBN(0x6d9598da, 0x817edc8a), + TOBN(0x699cff66, 0x1d3b67e5), TOBN(0x645c0f29, 0x92635853)}}, + {{TOBN(0x253cdd82, 0xeabaf21c), TOBN(0x82b9602a, 0x2241659e), + TOBN(0x2cae07ec, 0x2d9f7091), TOBN(0xbe4c720c, 0x8b48cd9b)}, + {TOBN(0x6ce5bc03, 0x6f08d6c9), TOBN(0x36e8a997, 0xaf10bf40), + TOBN(0x83422d21, 0x3e10ff12), TOBN(0x7b26d3eb, 0xbcc12494)}}, + {{TOBN(0xb240d2d0, 0xc9469ad6), TOBN(0xc4a11b4d, 0x30afa05b), + TOBN(0x4b604ace, 0xdd6ba286), TOBN(0x18486600, 0x3ee2864c)}, + {TOBN(0x5869d6ba, 0x8d9ce5be), TOBN(0x0d8f68c5, 0xff4bfb0d), + TOBN(0xb69f210b, 0x5700cf73), TOBN(0x61f6653a, 0x6d37c135)}}, + {{TOBN(0xff3d432b, 0x5aff5a48), TOBN(0x0d81c4b9, 0x72ba3a69), + TOBN(0xee879ae9, 0xfa1899ef), TOBN(0xbac7e2a0, 0x2d6acafd)}, + {TOBN(0xd6d93f6c, 0x1c664399), TOBN(0x4c288de1, 0x5bcb135d), + TOBN(0x83031dab, 0x9dab7cbf), TOBN(0xfe23feb0, 0x3abbf5f0)}}, + {{TOBN(0x9f1b2466, 0xcdedca85), TOBN(0x140bb710, 0x1a09538c), + TOBN(0xac8ae851, 0x5e11115d), TOBN(0x0d63ff67, 0x6f03f59e)}, + {TOBN(0x755e5551, 0x7d234afb), TOBN(0x61c2db4e, 0x7e208fc1), + TOBN(0xaa9859ce, 0xf28a4b5d), TOBN(0xbdd6d4fc, 0x34af030f)}}, + {{TOBN(0xd1c4a26d, 0x3be01cb1), TOBN(0x9ba14ffc, 0x243aa07c), + TOBN(0xf95cd3a9, 0xb2503502), TOBN(0xe379bc06, 0x7d2a93ab)}, + {TOBN(0x3efc18e9, 0xd4ca8d68), TOBN(0x083558ec, 0x80bb412a), + TOBN(0xd903b940, 0x9645a968), TOBN(0xa499f0b6, 0x9ba6054f)}}, + {{TOBN(0x208b573c, 0xb8349abe), TOBN(0x3baab3e5, 0x30b4fc1c), + TOBN(0x87e978ba, 0xcb524990), TOBN(0x3524194e, 0xccdf0e80)}, + {TOBN(0x62711725, 0x7d4bcc42), TOBN(0xe90a3d9b, 0xb90109ba), + TOBN(0x3b1bdd57, 0x1323e1e0), TOBN(0xb78e9bd5, 0x5eae1599)}}, + {{TOBN(0x0794b746, 0x9e03d278), TOBN(0x80178605, 0xd70e6297), + TOBN(0x171792f8, 0x99c97855), TOBN(0x11b393ee, 0xf5a86b5c)}, + {TOBN(0x48ef6582, 0xd8884f27), TOBN(0xbd44737a, 0xbf19ba5f), + TOBN(0x8698de4c, 0xa42062c6), TOBN(0x8975eb80, 0x61ce9c54)}}, + {{TOBN(0xd50e57c7, 0xd7fe71f3), TOBN(0x15342190, 0xbc97ce38), + TOBN(0x51bda2de, 0x4df07b63), TOBN(0xba12aeae, 0x200eb87d)}, + {TOBN(0xabe135d2, 0xa9b4f8f6), TOBN(0x04619d65, 0xfad6d99c), + TOBN(0x4a6683a7, 0x7994937c), TOBN(0x7a778c8b, 0x6f94f09a)}}, + {{TOBN(0x8c508623, 0x20a71b89), TOBN(0x241a2aed, 0x1c229165), + TOBN(0x352be595, 0xaaf83a99), TOBN(0x9fbfee7f, 0x1562bac8)}, + {TOBN(0xeaf658b9, 0x5c4017e3), TOBN(0x1dc7f9e0, 0x15120b86), + TOBN(0xd84f13dd, 0x4c034d6f), TOBN(0x283dd737, 0xeaea3038)}}, + {{TOBN(0x197f2609, 0xcd85d6a2), TOBN(0x6ebbc345, 0xfae60177), + TOBN(0xb80f031b, 0x4e12fede), TOBN(0xde55d0c2, 0x07a2186b)}, + {TOBN(0x1fb3e37f, 0x24dcdd5a), TOBN(0x8d602da5, 0x7ed191fb), + TOBN(0x108fb056, 0x76023e0d), TOBN(0x70178c71, 0x459c20c0)}}, + {{TOBN(0xfad5a386, 0x3fe54cf0), TOBN(0xa4a3ec4f, 0x02bbb475), + TOBN(0x1aa5ec20, 0x919d94d7), TOBN(0x5d3b63b5, 0xa81e4ab3)}, + {TOBN(0x7fa733d8, 0x5ad3d2af), TOBN(0xfbc586dd, 0xd1ac7a37), + TOBN(0x282925de, 0x40779614), TOBN(0xfe0ffffb, 0xe74a242a)}}, + {{TOBN(0x3f39e67f, 0x906151e5), TOBN(0xcea27f5f, 0x55e10649), + TOBN(0xdca1d4e1, 0xc17cf7b7), TOBN(0x0c326d12, 0x2fe2362d)}, + {TOBN(0x05f7ac33, 0x7dd35df3), TOBN(0x0c3b7639, 0xc396dbdf), + TOBN(0x0912f5ac, 0x03b7db1c), TOBN(0x9dea4b70, 0x5c9ed4a9)}}, + {{TOBN(0x475e6e53, 0xaae3f639), TOBN(0xfaba0e7c, 0xfc278bac), + TOBN(0x16f9e221, 0x9490375f), TOBN(0xaebf9746, 0xa5a7ed0a)}, + {TOBN(0x45f9af3f, 0xf41ad5d6), TOBN(0x03c4623c, 0xb2e99224), + TOBN(0x82c5bb5c, 0xb3cf56aa), TOBN(0x64311819, 0x34567ed3)}}, + {{TOBN(0xec57f211, 0x8be489ac), TOBN(0x2821895d, 0xb9a1104b), + TOBN(0x610dc875, 0x6064e007), TOBN(0x8e526f3f, 0x5b20d0fe)}, + {TOBN(0x6e71ca77, 0x5b645aee), TOBN(0x3d1dcb9f, 0x800e10ff), + TOBN(0x36b51162, 0x189cf6de), TOBN(0x2c5a3e30, 0x6bb17353)}}, + {{TOBN(0xc186cd3e, 0x2a6c6fbf), TOBN(0xa74516fa, 0x4bf97906), + TOBN(0x5b4b8f4b, 0x279d6901), TOBN(0x0c4e57b4, 0x2b573743)}, + {TOBN(0x75fdb229, 0xb6e386b6), TOBN(0xb46793fd, 0x99deac27), + TOBN(0xeeec47ea, 0xcf712629), TOBN(0xe965f3c4, 0xcbc3b2dd)}}, + {{TOBN(0x8dd1fb83, 0x425c6559), TOBN(0x7fc00ee6, 0x0af06fda), + TOBN(0xe98c9225, 0x33d956df), TOBN(0x0f1ef335, 0x4fbdc8a2)}, + {TOBN(0x2abb5145, 0xb79b8ea2), TOBN(0x40fd2945, 0xbdbff288), + TOBN(0x6a814ac4, 0xd7185db7), TOBN(0xc4329d6f, 0xc084609a)}}, + {{TOBN(0xc9ba7b52, 0xed1be45d), TOBN(0x891dd20d, 0xe4cd2c74), + TOBN(0x5a4d4a7f, 0x824139b1), TOBN(0x66c17716, 0xb873c710)}, + {TOBN(0x5e5bc141, 0x2843c4e0), TOBN(0xd5ac4817, 0xb97eb5bf), + TOBN(0xc0f8af54, 0x450c95c7), TOBN(0xc91b3fa0, 0x318406c5)}}, + {{TOBN(0x360c340a, 0xab9d97f8), TOBN(0xfb57bd07, 0x90a2d611), + TOBN(0x4339ae3c, 0xa6a6f7e5), TOBN(0x9c1fcd2a, 0x2feb8a10)}, + {TOBN(0x972bcca9, 0xc7ea7432), TOBN(0x1b0b924c, 0x308076f6), + TOBN(0x80b2814a, 0x2a5b4ca5), TOBN(0x2f78f55b, 0x61ef3b29)}}, + {{TOBN(0xf838744a, 0xc18a414f), TOBN(0xc611eaae, 0x903d0a86), + TOBN(0x94dabc16, 0x2a453f55), TOBN(0xe6f2e3da, 0x14efb279)}, + {TOBN(0x5b7a6017, 0x9320dc3c), TOBN(0x692e382f, 0x8df6b5a4), + TOBN(0x3f5e15e0, 0x2d40fa90), TOBN(0xc87883ae, 0x643dd318)}}, + {{TOBN(0x511053e4, 0x53544774), TOBN(0x834d0ecc, 0x3adba2bc), + TOBN(0x4215d7f7, 0xbae371f5), TOBN(0xfcfd57bf, 0x6c8663bc)}, + {TOBN(0xded2383d, 0xd6901b1d), TOBN(0x3b49fbb4, 0xb5587dc3), + TOBN(0xfd44a08d, 0x07625f62), TOBN(0x3ee4d65b, 0x9de9b762)}}}, + {{{TOBN(0x64e5137d, 0x0d63d1fa), TOBN(0x658fc052, 0x02a9d89f), + TOBN(0x48894874, 0x50436309), TOBN(0xe9ae30f8, 0xd598da61)}, + {TOBN(0x2ed710d1, 0x818baf91), TOBN(0xe27e9e06, 0x8b6a0c20), + TOBN(0x1e28dcfb, 0x1c1a6b44), TOBN(0x883acb64, 0xd6ac57dc)}}, + {{TOBN(0x8735728d, 0xc2c6ff70), TOBN(0x79d6122f, 0xc5dc2235), + TOBN(0x23f5d003, 0x19e277f9), TOBN(0x7ee84e25, 0xdded8cc7)}, + {TOBN(0x91a8afb0, 0x63cd880a), TOBN(0x3f3ea7c6, 0x3574af60), + TOBN(0x0cfcdc84, 0x02de7f42), TOBN(0x62d0792f, 0xb31aa152)}}, + {{TOBN(0x8e1b4e43, 0x8a5807ce), TOBN(0xad283893, 0xe4109a7e), + TOBN(0xc30cc9cb, 0xafd59dda), TOBN(0xf65f36c6, 0x3d8d8093)}, + {TOBN(0xdf31469e, 0xa60d32b2), TOBN(0xee93df4b, 0x3e8191c8), + TOBN(0x9c1017c5, 0x355bdeb5), TOBN(0xd2623185, 0x8616aa28)}}, + {{TOBN(0xb02c83f9, 0xdec31a21), TOBN(0x988c8b23, 0x6ad9d573), + TOBN(0x53e983ae, 0xa57be365), TOBN(0xe968734d, 0x646f834e)}, + {TOBN(0x9137ea8f, 0x5da6309b), TOBN(0x10f3a624, 0xc1f1ce16), + TOBN(0x782a9ea2, 0xca440921), TOBN(0xdf94739e, 0x5b46f1b5)}}, + {{TOBN(0x9f9be006, 0xcce85c9b), TOBN(0x360e70d6, 0xa4c7c2d3), + TOBN(0x2cd5beea, 0xaefa1e60), TOBN(0x64cf63c0, 0x8c3d2b6d)}, + {TOBN(0xfb107fa3, 0xe1cf6f90), TOBN(0xb7e937c6, 0xd5e044e6), + TOBN(0x74e8ca78, 0xce34db9f), TOBN(0x4f8b36c1, 0x3e210bd0)}}, + {{TOBN(0x1df165a4, 0x34a35ea8), TOBN(0x3418e0f7, 0x4d4412f6), + TOBN(0x5af1f8af, 0x518836c3), TOBN(0x42ceef4d, 0x130e1965)}, + {TOBN(0x5560ca0b, 0x543a1957), TOBN(0xc33761e5, 0x886cb123), + TOBN(0x66624b1f, 0xfe98ed30), TOBN(0xf772f4bf, 0x1090997d)}}, + {{TOBN(0xf4e540bb, 0x4885d410), TOBN(0x7287f810, 0x9ba5f8d7), + TOBN(0x22d0d865, 0xde98dfb1), TOBN(0x49ff51a1, 0xbcfbb8a3)}, + {TOBN(0xb6b6fa53, 0x6bc3012e), TOBN(0x3d31fd72, 0x170d541d), + TOBN(0x8018724f, 0x4b0f4966), TOBN(0x79e7399f, 0x87dbde07)}}, + {{TOBN(0x56f8410e, 0xf4f8b16a), TOBN(0x97241afe, 0xc47b266a), + TOBN(0x0a406b8e, 0x6d9c87c1), TOBN(0x803f3e02, 0xcd42ab1b)}, + {TOBN(0x7f0309a8, 0x04dbec69), TOBN(0xa83b85f7, 0x3bbad05f), + TOBN(0xc6097273, 0xad8e197f), TOBN(0xc097440e, 0x5067adc1)}}, + {{TOBN(0x730eafb6, 0x3524ff16), TOBN(0xd7f9b51e, 0x823fc6ce), + TOBN(0x27bd0d32, 0x443e4ac0), TOBN(0x40c59ad9, 0x4d66f217)}, + {TOBN(0x6c33136f, 0x17c387a4), TOBN(0x5043b8d5, 0xeb86804d), + TOBN(0x74970312, 0x675a73c9), TOBN(0x838fdb31, 0xf16669b6)}}, + {{TOBN(0xc507b6dd, 0x418e7ddd), TOBN(0x39888d93, 0x472f19d6), + TOBN(0x7eae26be, 0x0c27eb4d), TOBN(0x17b53ed3, 0xfbabb884)}, + {TOBN(0xfc27021b, 0x2b01ae4f), TOBN(0x88462e87, 0xcf488682), + TOBN(0xbee096ec, 0x215e2d87), TOBN(0xeb2fea9a, 0xd242e29b)}}, + {{TOBN(0x5d985b5f, 0xb821fc28), TOBN(0x89d2e197, 0xdc1e2ad2), + TOBN(0x55b566b8, 0x9030ba62), TOBN(0xe3fd41b5, 0x4f41b1c6)}, + {TOBN(0xb738ac2e, 0xb9a96d61), TOBN(0x7f8567ca, 0x369443f4), + TOBN(0x8698622d, 0xf803a440), TOBN(0x2b586236, 0x8fe2f4dc)}}, + {{TOBN(0xbbcc00c7, 0x56b95bce), TOBN(0x5ec03906, 0x616da680), + TOBN(0x79162ee6, 0x72214252), TOBN(0x43132b63, 0x86a892d2)}, + {TOBN(0x4bdd3ff2, 0x2f3263bf), TOBN(0xd5b3733c, 0x9cd0a142), + TOBN(0x592eaa82, 0x44415ccb), TOBN(0x663e8924, 0x8d5474ea)}}, + {{TOBN(0x8058a25e, 0x5236344e), TOBN(0x82e8df9d, 0xbda76ee6), + TOBN(0xdcf6efd8, 0x11cc3d22), TOBN(0x00089cda, 0x3b4ab529)}, + {TOBN(0x91d3a071, 0xbd38a3db), TOBN(0x4ea97fc0, 0xef72b925), + TOBN(0x0c9fc15b, 0xea3edf75), TOBN(0x5a6297cd, 0xa4348ed3)}}, + {{TOBN(0x0d38ab35, 0xce7c42d4), TOBN(0x9fd493ef, 0x82feab10), + TOBN(0x46056b6d, 0x82111b45), TOBN(0xda11dae1, 0x73efc5c3)}, + {TOBN(0xdc740278, 0x5545a7fb), TOBN(0xbdb2601c, 0x40d507e6), + TOBN(0x121dfeeb, 0x7066fa58), TOBN(0x214369a8, 0x39ae8c2a)}}, + {{TOBN(0x195709cb, 0x06e0956c), TOBN(0x4c9d254f, 0x010cd34b), + TOBN(0xf51e13f7, 0x0471a532), TOBN(0xe19d6791, 0x1e73054d)}, + {TOBN(0xf702a628, 0xdb5c7be3), TOBN(0xc7141218, 0xb24dde05), + TOBN(0xdc18233c, 0xf29b2e2e), TOBN(0x3a6bd1e8, 0x85342dba)}}, + {{TOBN(0x3f747fa0, 0xb311898c), TOBN(0xe2a272e4, 0xcd0eac65), + TOBN(0x4bba5851, 0xf914d0bc), TOBN(0x7a1a9660, 0xc4a43ee3)}, + {TOBN(0xe5a367ce, 0xa1c8cde9), TOBN(0x9d958ba9, 0x7271abe3), + TOBN(0xf3ff7eb6, 0x3d1615cd), TOBN(0xa2280dce, 0xf5ae20b0)}}, + {{TOBN(0x56dba5c1, 0xcf640147), TOBN(0xea5a2e3d, 0x5e83d118), + TOBN(0x04cd6b6d, 0xda24c511), TOBN(0x1c0f4671, 0xe854d214)}, + {TOBN(0x91a6b7a9, 0x69565381), TOBN(0xdc966240, 0xdecf1f5b), + TOBN(0x1b22d21c, 0xfcf5d009), TOBN(0x2a05f641, 0x9021dbd5)}}, + {{TOBN(0x8c0ed566, 0xd4312483), TOBN(0x5179a95d, 0x643e216f), + TOBN(0xcc185fec, 0x17044493), TOBN(0xb3063339, 0x54991a21)}, + {TOBN(0xd801ecdb, 0x0081a726), TOBN(0x0149b0c6, 0x4fa89bbb), + TOBN(0xafe9065a, 0x4391b6b9), TOBN(0xedc92786, 0xd633f3a3)}}, + {{TOBN(0xe408c24a, 0xae6a8e13), TOBN(0x85833fde, 0x9f3897ab), + TOBN(0x43800e7e, 0xd81a0715), TOBN(0xde08e346, 0xb44ffc5f)}, + {TOBN(0x7094184c, 0xcdeff2e0), TOBN(0x49f9387b, 0x165eaed1), + TOBN(0x635d6129, 0x777c468a), TOBN(0x8c0dcfd1, 0x538c2dd8)}}, + {{TOBN(0xd6d9d9e3, 0x7a6a308b), TOBN(0x62375830, 0x4c2767d3), + TOBN(0x874a8bc6, 0xf38cbeb6), TOBN(0xd94d3f1a, 0xccb6fd9e)}, + {TOBN(0x92a9735b, 0xba21f248), TOBN(0x272ad0e5, 0x6cd1efb0), + TOBN(0x7437b69c, 0x05b03284), TOBN(0xe7f04702, 0x6948c225)}}, + {{TOBN(0x8a56c04a, 0xcba2ecec), TOBN(0x0c181270, 0xe3a73e41), + TOBN(0x6cb34e9d, 0x03e93725), TOBN(0xf77c8713, 0x496521a9)}, + {TOBN(0x94569183, 0xfa7f9f90), TOBN(0xf2e7aa4c, 0x8c9707ad), + TOBN(0xced2c9ba, 0x26c1c9a3), TOBN(0x9109fe96, 0x40197507)}}, + {{TOBN(0x9ae868a9, 0xe9adfe1c), TOBN(0x3984403d, 0x314e39bb), + TOBN(0xb5875720, 0xf2fe378f), TOBN(0x33f901e0, 0xba44a628)}, + {TOBN(0xea1125fe, 0x3652438c), TOBN(0xae9ec4e6, 0x9dd1f20b), + TOBN(0x1e740d9e, 0xbebf7fbd), TOBN(0x6dbd3ddc, 0x42dbe79c)}}, + {{TOBN(0x62082aec, 0xedd36776), TOBN(0xf612c478, 0xe9859039), + TOBN(0xa493b201, 0x032f7065), TOBN(0xebd4d8f2, 0x4ff9b211)}, + {TOBN(0x3f23a0aa, 0xaac4cb32), TOBN(0xea3aadb7, 0x15ed4005), + TOBN(0xacf17ea4, 0xafa27e63), TOBN(0x56125c1a, 0xc11fd66c)}}, + {{TOBN(0x266344a4, 0x3794f8dc), TOBN(0xdcca923a, 0x483c5c36), + TOBN(0x2d6b6bbf, 0x3f9d10a0), TOBN(0xb320c5ca, 0x81d9bdf3)}, + {TOBN(0x620e28ff, 0x47b50a95), TOBN(0x933e3b01, 0xcef03371), + TOBN(0xf081bf85, 0x99100153), TOBN(0x183be9a0, 0xc3a8c8d6)}}, + {{TOBN(0x4e3ddc5a, 0xd6bbe24d), TOBN(0xc6c74630, 0x53843795), + TOBN(0x78193dd7, 0x65ec2d4c), TOBN(0xb8df26cc, 0xcd3c89b2)}, + {TOBN(0x98dbe399, 0x5a483f8d), TOBN(0x72d8a957, 0x7dd3313a), + TOBN(0x65087294, 0xab0bd375), TOBN(0xfcd89248, 0x7c259d16)}}, + {{TOBN(0x8a9443d7, 0x7613aa81), TOBN(0x80100800, 0x85fe6584), + TOBN(0x70fc4dbc, 0x7fb10288), TOBN(0xf58280d3, 0xe86beee8)}, + {TOBN(0x14fdd82f, 0x7c978c38), TOBN(0xdf1204c1, 0x0de44d7b), + TOBN(0xa08a1c84, 0x4160252f), TOBN(0x591554ca, 0xc17646a5)}}, + {{TOBN(0x214a37d6, 0xa05bd525), TOBN(0x48d5f09b, 0x07957b3c), + TOBN(0x0247cdcb, 0xd7109bc9), TOBN(0x40f9e4bb, 0x30599ce7)}, + {TOBN(0xc325fa03, 0xf46ad2ec), TOBN(0x00f766cf, 0xc3e3f9ee), + TOBN(0xab556668, 0xd43a4577), TOBN(0x68d30a61, 0x3ee03b93)}}, + {{TOBN(0x7ddc81ea, 0x77b46a08), TOBN(0xcf5a6477, 0xc7480699), + TOBN(0x43a8cb34, 0x6633f683), TOBN(0x1b867e6b, 0x92363c60)}, + {TOBN(0x43921114, 0x1f60558e), TOBN(0xcdbcdd63, 0x2f41450e), + TOBN(0x7fc04601, 0xcc630e8b), TOBN(0xea7c66d5, 0x97038b43)}}, + {{TOBN(0x7259b8a5, 0x04e99fd8), TOBN(0x98a8dd12, 0x4785549a), + TOBN(0x0e459a7c, 0x840552e1), TOBN(0xcdfcf4d0, 0x4bb0909e)}, + {TOBN(0x34a86db2, 0x53758da7), TOBN(0xe643bb83, 0xeac997e1), + TOBN(0x96400bd7, 0x530c5b7e), TOBN(0x9f97af87, 0xb41c8b52)}}, + {{TOBN(0x34fc8820, 0xfbeee3f9), TOBN(0x93e53490, 0x49091afd), + TOBN(0x764b9be5, 0x9a31f35c), TOBN(0x71f37864, 0x57e3d924)}, + {TOBN(0x02fb34e0, 0x943aa75e), TOBN(0xa18c9c58, 0xab8ff6e4), + TOBN(0x080f31b1, 0x33cf0d19), TOBN(0x5c9682db, 0x083518a7)}}, + {{TOBN(0x873d4ca6, 0xb709c3de), TOBN(0x64a84262, 0x3575b8f0), + TOBN(0x6275da1f, 0x020154bb), TOBN(0x97678caa, 0xd17cf1ab)}, + {TOBN(0x8779795f, 0x951a95c3), TOBN(0xdd35b163, 0x50fccc08), + TOBN(0x32709627, 0x33d8f031), TOBN(0x3c5ab10a, 0x498dd85c)}}, + {{TOBN(0xb6c185c3, 0x41dca566), TOBN(0x7de7feda, 0xd8622aa3), + TOBN(0x99e84d92, 0x901b6dfb), TOBN(0x30a02b0e, 0x7c4ad288)}, + {TOBN(0xc7c81daa, 0x2fd3cf36), TOBN(0xd1319547, 0xdf89e59f), + TOBN(0xb2be8184, 0xcd496733), TOBN(0xd5f449eb, 0x93d3412b)}}, + {{TOBN(0x7ea41b1b, 0x25fe531d), TOBN(0xf9797432, 0x6a1d5646), + TOBN(0x86067f72, 0x2bde501a), TOBN(0xf91481c0, 0x0c85e89c)}, + {TOBN(0xca8ee465, 0xf8b05bc6), TOBN(0x1844e1cf, 0x02e83cda), + TOBN(0xca82114a, 0xb4dbe33b), TOBN(0x0f9f8769, 0x4eabfde2)}}, + {{TOBN(0x4936b1c0, 0x38b27fe2), TOBN(0x63b6359b, 0xaba402df), + TOBN(0x40c0ea2f, 0x656bdbab), TOBN(0x9c992a89, 0x6580c39c)}, + {TOBN(0x600e8f15, 0x2a60aed1), TOBN(0xeb089ca4, 0xe0bf49df), + TOBN(0x9c233d7d, 0x2d42d99a), TOBN(0x648d3f95, 0x4c6bc2fa)}}, + {{TOBN(0xdcc383a8, 0xe1add3f3), TOBN(0xf42c0c6a, 0x4f64a348), + TOBN(0x2abd176f, 0x0030dbdb), TOBN(0x4de501a3, 0x7d6c215e)}, + {TOBN(0x4a107c1f, 0x4b9a64bc), TOBN(0xa77f0ad3, 0x2496cd59), + TOBN(0xfb78ac62, 0x7688dffb), TOBN(0x7025a2ca, 0x67937d8e)}}, + {{TOBN(0xfde8b2d1, 0xd1a8f4e7), TOBN(0xf5b3da47, 0x7354927c), + TOBN(0xe48606a3, 0xd9205735), TOBN(0xac477cc6, 0xe177b917)}, + {TOBN(0xfb1f73d2, 0xa883239a), TOBN(0xe12572f6, 0xcc8b8357), + TOBN(0x9d355e9c, 0xfb1f4f86), TOBN(0x89b795f8, 0xd9f3ec6e)}}, + {{TOBN(0x27be56f1, 0xb54398dc), TOBN(0x1890efd7, 0x3fedeed5), + TOBN(0x62f77f1f, 0x9c6d0140), TOBN(0x7ef0e314, 0x596f0ee4)}, + {TOBN(0x50ca6631, 0xcc61dab3), TOBN(0x4a39801d, 0xf4866e4f), + TOBN(0x66c8d032, 0xae363b39), TOBN(0x22c591e5, 0x2ead66aa)}}, + {{TOBN(0x954ba308, 0xde02a53e), TOBN(0x2a6c060f, 0xd389f357), + TOBN(0xe6cfcde8, 0xfbf40b66), TOBN(0x8e02fc56, 0xc6340ce1)}, + {TOBN(0xe4957795, 0x73adb4ba), TOBN(0x7b86122c, 0xa7b03805), + TOBN(0x63f83512, 0x0c8e6fa6), TOBN(0x83660ea0, 0x057d7804)}}, + {{TOBN(0xbad79105, 0x21ba473c), TOBN(0xb6c50bee, 0xded5389d), + TOBN(0xee2caf4d, 0xaa7c9bc0), TOBN(0xd97b8de4, 0x8c4e98a7)}, + {TOBN(0xa9f63e70, 0xab3bbddb), TOBN(0x3898aabf, 0x2597815a), + TOBN(0x7659af89, 0xac15b3d9), TOBN(0xedf7725b, 0x703ce784)}}, + {{TOBN(0x25470fab, 0xe085116b), TOBN(0x04a43375, 0x87285310), + TOBN(0x4e39187e, 0xe2bfd52f), TOBN(0x36166b44, 0x7d9ebc74)}, + {TOBN(0x92ad433c, 0xfd4b322c), TOBN(0x726aa817, 0xba79ab51), + TOBN(0xf96eacd8, 0xc1db15eb), TOBN(0xfaf71e91, 0x0476be63)}}, + {{TOBN(0xdd69a640, 0x641fad98), TOBN(0xb7995918, 0x29622559), + TOBN(0x03c6daa5, 0xde4199dc), TOBN(0x92cadc97, 0xad545eb4)}, + {TOBN(0x1028238b, 0x256534e4), TOBN(0x73e80ce6, 0x8595409a), + TOBN(0x690d4c66, 0xd05dc59b), TOBN(0xc95f7b8f, 0x981dee80)}}, + {{TOBN(0xf4337014, 0xd856ac25), TOBN(0x441bd9dd, 0xac524dca), + TOBN(0x640b3d85, 0x5f0499f5), TOBN(0x39cf84a9, 0xd5fda182)}, + {TOBN(0x04e7b055, 0xb2aa95a0), TOBN(0x29e33f0a, 0x0ddf1860), + TOBN(0x082e74b5, 0x423f6b43), TOBN(0x217edeb9, 0x0aaa2b0f)}}, + {{TOBN(0x58b83f35, 0x83cbea55), TOBN(0xc485ee4d, 0xbc185d70), + TOBN(0x833ff03b, 0x1e5f6992), TOBN(0xb5b9b9cc, 0xcf0c0dd5)}, + {TOBN(0x7caaee8e, 0x4e9e8a50), TOBN(0x462e907b, 0x6269dafd), + TOBN(0x6ed5cee9, 0xfbe791c6), TOBN(0x68ca3259, 0xed430790)}}, + {{TOBN(0x2b72bdf2, 0x13b5ba88), TOBN(0x60294c8a, 0x35ef0ac4), + TOBN(0x9c3230ed, 0x19b99b08), TOBN(0x560fff17, 0x6c2589aa)}, + {TOBN(0x552b8487, 0xd6770374), TOBN(0xa373202d, 0x9a56f685), + TOBN(0xd3e7f907, 0x45f175d9), TOBN(0x3c2f315f, 0xd080d810)}}, + {{TOBN(0x1130e9dd, 0x7b9520e8), TOBN(0xc078f9e2, 0x0af037b5), + TOBN(0x38cd2ec7, 0x1e9c104c), TOBN(0x0f684368, 0xc472fe92)}, + {TOBN(0xd3f1b5ed, 0x6247e7ef), TOBN(0xb32d33a9, 0x396dfe21), + TOBN(0x46f59cf4, 0x4a9aa2c2), TOBN(0x69cd5168, 0xff0f7e41)}}, + {{TOBN(0x3f59da0f, 0x4b3234da), TOBN(0xcf0b0235, 0xb4579ebe), + TOBN(0x6d1cbb25, 0x6d2476c7), TOBN(0x4f0837e6, 0x9dc30f08)}, + {TOBN(0x9a4075bb, 0x906f6e98), TOBN(0x253bb434, 0xc761e7d1), + TOBN(0xde2e645f, 0x6e73af10), TOBN(0xb89a4060, 0x0c5f131c)}}, + {{TOBN(0xd12840c5, 0xb8cc037f), TOBN(0x3d093a5b, 0x7405bb47), + TOBN(0x6202c253, 0x206348b8), TOBN(0xbf5d57fc, 0xc55a3ca7)}, + {TOBN(0x89f6c90c, 0x8c3bef48), TOBN(0x23ac7623, 0x5a0a960a), + TOBN(0xdfbd3d6b, 0x552b42ab), TOBN(0x3ef22458, 0x132061f6)}}, + {{TOBN(0xd74e9bda, 0xc97e6516), TOBN(0x88779360, 0xc230f49e), + TOBN(0xa6ec1de3, 0x1e74ea49), TOBN(0x581dcee5, 0x3fb645a2)}, + {TOBN(0xbaef2391, 0x8f483f14), TOBN(0x6d2dddfc, 0xd137d13b), + TOBN(0x54cde50e, 0xd2743a42), TOBN(0x89a34fc5, 0xe4d97e67)}}, + {{TOBN(0x13f1f5b3, 0x12e08ce5), TOBN(0xa80540b8, 0xa7f0b2ca), + TOBN(0x854bcf77, 0x01982805), TOBN(0xb8653ffd, 0x233bea04)}, + {TOBN(0x8e7b8787, 0x02b0b4c9), TOBN(0x2675261f, 0x9acb170a), + TOBN(0x061a9d90, 0x930c14e5), TOBN(0xb59b30e0, 0xdef0abea)}}, + {{TOBN(0x1dc19ea6, 0x0200ec7d), TOBN(0xb6f4a3f9, 0x0bce132b), + TOBN(0xb8d5de90, 0xf13e27e0), TOBN(0xbaee5ef0, 0x1fade16f)}, + {TOBN(0x6f406aaa, 0xe4c6cf38), TOBN(0xab4cfe06, 0xd1369815), + TOBN(0x0dcffe87, 0xefd550c6), TOBN(0x9d4f59c7, 0x75ff7d39)}}, + {{TOBN(0xb02553b1, 0x51deb6ad), TOBN(0x812399a4, 0xb1877749), + TOBN(0xce90f71f, 0xca6006e1), TOBN(0xc32363a6, 0xb02b6e77)}, + {TOBN(0x02284fbe, 0xdc36c64d), TOBN(0x86c81e31, 0xa7e1ae61), + TOBN(0x2576c7e5, 0xb909d94a), TOBN(0x8b6f7d02, 0x818b2bb0)}}, + {{TOBN(0xeca3ed07, 0x56faa38a), TOBN(0xa3790e6c, 0x9305bb54), + TOBN(0xd784eeda, 0x7bc73061), TOBN(0xbd56d369, 0x6dd50614)}, + {TOBN(0xd6575949, 0x229a8aa9), TOBN(0xdcca8f47, 0x4595ec28), + TOBN(0x814305c1, 0x06ab4fe6), TOBN(0xc8c39768, 0x24f43f16)}}, + {{TOBN(0xe2a45f36, 0x523f2b36), TOBN(0x995c6493, 0x920d93bb), + TOBN(0xf8afdab7, 0x90f1632b), TOBN(0x79ebbecd, 0x1c295954)}, + {TOBN(0xc7bb3ddb, 0x79592f48), TOBN(0x67216a7b, 0x5f88e998), + TOBN(0xd91f098b, 0xbc01193e), TOBN(0xf7d928a5, 0xb1db83fc)}}, + {{TOBN(0x55e38417, 0xe991f600), TOBN(0x2a91113e, 0x2981a934), + TOBN(0xcbc9d648, 0x06b13bde), TOBN(0xb011b6ac, 0x0755ff44)}, + {TOBN(0x6f4cb518, 0x045ec613), TOBN(0x522d2d31, 0xc2f5930a), + TOBN(0x5acae1af, 0x382e65de), TOBN(0x57643067, 0x27bc966f)}}, + {{TOBN(0x5e12705d, 0x1c7193f0), TOBN(0xf0f32f47, 0x3be8858e), + TOBN(0x785c3d7d, 0x96c6dfc7), TOBN(0xd75b4a20, 0xbf31795d)}, + {TOBN(0x91acf17b, 0x342659d4), TOBN(0xe596ea34, 0x44f0378f), + TOBN(0x4515708f, 0xce52129d), TOBN(0x17387e1e, 0x79f2f585)}}, + {{TOBN(0x72cfd2e9, 0x49dee168), TOBN(0x1ae05223, 0x3e2af239), + TOBN(0x009e75be, 0x1d94066a), TOBN(0x6cca31c7, 0x38abf413)}, + {TOBN(0xb50bd61d, 0x9bc49908), TOBN(0x4a9b4a8c, 0xf5e2bc1e), + TOBN(0xeb6cc5f7, 0x946f83ac), TOBN(0x27da93fc, 0xebffab28)}}, + {{TOBN(0xea314c96, 0x4821c8c5), TOBN(0x8de49ded, 0xa83c15f4), + TOBN(0x7a64cf20, 0x7af33004), TOBN(0x45f1bfeb, 0xc9627e10)}, + {TOBN(0x878b0626, 0x54b9df60), TOBN(0x5e4fdc3c, 0xa95c0b33), + TOBN(0xe54a37ca, 0xc2035d8e), TOBN(0x9087cda9, 0x80f20b8c)}}, + {{TOBN(0x36f61c23, 0x8319ade4), TOBN(0x766f287a, 0xde8cfdf8), + TOBN(0x48821948, 0x346f3705), TOBN(0x49a7b853, 0x16e4f4a2)}, + {TOBN(0xb9b3f8a7, 0x5cedadfd), TOBN(0x8f562815, 0x8db2a815), + TOBN(0xc0b7d554, 0x01f68f95), TOBN(0x12971e27, 0x688a208e)}}, + {{TOBN(0xc9f8b696, 0xd0ff34fc), TOBN(0x20824de2, 0x1222718c), + TOBN(0x7213cf9f, 0x0c95284d), TOBN(0xe2ad741b, 0xdc158240)}, + {TOBN(0x0ee3a6df, 0x54043ccf), TOBN(0x16ff479b, 0xd84412b3), + TOBN(0xf6c74ee0, 0xdfc98af0), TOBN(0xa78a169f, 0x52fcd2fb)}}, + {{TOBN(0xd8ae8746, 0x99c930e9), TOBN(0x1d33e858, 0x49e117a5), + TOBN(0x7581fcb4, 0x6624759f), TOBN(0xde50644f, 0x5bedc01d)}, + {TOBN(0xbeec5d00, 0xcaf3155e), TOBN(0x672d66ac, 0xbc73e75f), + TOBN(0x86b9d8c6, 0x270b01db), TOBN(0xd249ef83, 0x50f55b79)}}, + {{TOBN(0x6131d6d4, 0x73978fe3), TOBN(0xcc4e4542, 0x754b00a1), + TOBN(0x4e05df05, 0x57dfcfe9), TOBN(0x94b29cdd, 0x51ef6bf0)}, + {TOBN(0xe4530cff, 0x9bc7edf2), TOBN(0x8ac236fd, 0xd3da65f3), + TOBN(0x0faf7d5f, 0xc8eb0b48), TOBN(0x4d2de14c, 0x660eb039)}}, + {{TOBN(0xc006bba7, 0x60430e54), TOBN(0x10a2d0d6, 0xda3289ab), + TOBN(0x9c037a5d, 0xd7979c59), TOBN(0x04d1f3d3, 0xa116d944)}, + {TOBN(0x9ff22473, 0x8a0983cd), TOBN(0x28e25b38, 0xc883cabb), + TOBN(0xe968dba5, 0x47a58995), TOBN(0x2c80b505, 0x774eebdf)}}, + {{TOBN(0xee763b71, 0x4a953beb), TOBN(0x502e223f, 0x1642e7f6), + TOBN(0x6fe4b641, 0x61d5e722), TOBN(0x9d37c5b0, 0xdbef5316)}, + {TOBN(0x0115ed70, 0xf8330bc7), TOBN(0x139850e6, 0x75a72789), + TOBN(0x27d7faec, 0xffceccc2), TOBN(0x3016a860, 0x4fd9f7f6)}}, + {{TOBN(0xc492ec64, 0x4cd8f64c), TOBN(0x58a2d790, 0x279d7b51), + TOBN(0x0ced1fc5, 0x1fc75256), TOBN(0x3e658aed, 0x8f433017)}, + {TOBN(0x0b61942e, 0x05da59eb), TOBN(0xba3d60a3, 0x0ddc3722), + TOBN(0x7c311cd1, 0x742e7f87), TOBN(0x6473ffee, 0xf6b01b6e)}}}, + {{{TOBN(0x8303604f, 0x692ac542), TOBN(0xf079ffe1, 0x227b91d3), + TOBN(0x19f63e63, 0x15aaf9bd), TOBN(0xf99ee565, 0xf1f344fb)}, + {TOBN(0x8a1d661f, 0xd6219199), TOBN(0x8c883bc6, 0xd48ce41c), + TOBN(0x1065118f, 0x3c74d904), TOBN(0x713889ee, 0x0faf8b1b)}}, + {{TOBN(0x972b3f8f, 0x81a1b3be), TOBN(0x4f3ce145, 0xce2764a0), + TOBN(0xe2d0f1cc, 0x28c4f5f7), TOBN(0xdeee0c0d, 0xc7f3985b)}, + {TOBN(0x7df4adc0, 0xd39e25c3), TOBN(0x40619820, 0xc467a080), + TOBN(0x440ebc93, 0x61cf5a58), TOBN(0x527729a6, 0x422ad600)}}, + {{TOBN(0xca6c0937, 0xb1b76ba6), TOBN(0x1a2eab85, 0x4d2026dc), + TOBN(0xb1715e15, 0x19d9ae0a), TOBN(0xf1ad9199, 0xbac4a026)}, + {TOBN(0x35b3dfb8, 0x07ea7b0e), TOBN(0xedf5496f, 0x3ed9eb89), + TOBN(0x8932e5ff, 0x2d6d08ab), TOBN(0xf314874e, 0x25bd2731)}}, + {{TOBN(0xefb26a75, 0x3f73f449), TOBN(0x1d1c94f8, 0x8d44fc79), + TOBN(0x49f0fbc5, 0x3bc0dc4d), TOBN(0xb747ea0b, 0x3698a0d0)}, + {TOBN(0x5218c3fe, 0x228d291e), TOBN(0x35b804b5, 0x43c129d6), + TOBN(0xfac859b8, 0xd1acc516), TOBN(0x6c10697d, 0x95d6e668)}}, + {{TOBN(0xc38e438f, 0x0876fd4e), TOBN(0x45f0c307, 0x83d2f383), + TOBN(0x203cc2ec, 0xb10934cb), TOBN(0x6a8f2439, 0x2c9d46ee)}, + {TOBN(0xf16b431b, 0x65ccde7b), TOBN(0x41e2cd18, 0x27e76a6f), + TOBN(0xb9c8cf8f, 0x4e3484d7), TOBN(0x64426efd, 0x8315244a)}}, + {{TOBN(0x1c0a8e44, 0xfc94dea3), TOBN(0x34c8cdbf, 0xdad6a0b0), + TOBN(0x919c3840, 0x04113cef), TOBN(0xfd32fba4, 0x15490ffa)}, + {TOBN(0x58d190f6, 0x795dcfb7), TOBN(0xfef01b03, 0x83588baf), + TOBN(0x9e6d1d63, 0xca1fc1c0), TOBN(0x53173f96, 0xf0a41ac9)}}, + {{TOBN(0x2b1d402a, 0xba16f73b), TOBN(0x2fb31014, 0x8cf9b9fc), + TOBN(0x2d51e60e, 0x446ef7bf), TOBN(0xc731021b, 0xb91e1745)}, + {TOBN(0x9d3b4724, 0x4fee99d4), TOBN(0x4bca48b6, 0xfac5c1ea), + TOBN(0x70f5f514, 0xbbea9af7), TOBN(0x751f55a5, 0x974c283a)}}, + {{TOBN(0x6e30251a, 0xcb452fdb), TOBN(0x31ee6965, 0x50f30650), + TOBN(0xb0b3e508, 0x933548d9), TOBN(0xb8949a4f, 0xf4b0ef5b)}, + {TOBN(0x208b8326, 0x3c88f3bd), TOBN(0xab147c30, 0xdb1d9989), + TOBN(0xed6515fd, 0x44d4df03), TOBN(0x17a12f75, 0xe72eb0c5)}}, + {{TOBN(0x3b59796d, 0x36cf69db), TOBN(0x1219eee9, 0x56670c18), + TOBN(0xfe3341f7, 0x7a070d8e), TOBN(0x9b70130b, 0xa327f90c)}, + {TOBN(0x36a32462, 0x0ae18e0e), TOBN(0x2021a623, 0x46c0a638), + TOBN(0x251b5817, 0xc62eb0d4), TOBN(0x87bfbcdf, 0x4c762293)}}, + {{TOBN(0xf78ab505, 0xcdd61d64), TOBN(0x8c7a53fc, 0xc8c18857), + TOBN(0xa653ce6f, 0x16147515), TOBN(0x9c923aa5, 0xea7d52d5)}, + {TOBN(0xc24709cb, 0x5c18871f), TOBN(0x7d53bec8, 0x73b3cc74), + TOBN(0x59264aff, 0xfdd1d4c4), TOBN(0x5555917e, 0x240da582)}}, + {{TOBN(0xcae8bbda, 0x548f5a0e), TOBN(0x1910eaba, 0x3bbfbbe1), + TOBN(0xae579685, 0x7677afc3), TOBN(0x49ea61f1, 0x73ff0b5c)}, + {TOBN(0x78655478, 0x4f7c3922), TOBN(0x95d337cd, 0x20c68eef), + TOBN(0x68f1e1e5, 0xdf779ab9), TOBN(0x14b491b0, 0xb5cf69a8)}}, + {{TOBN(0x7a6cbbe0, 0x28e3fe89), TOBN(0xe7e1fee4, 0xc5aac0eb), + TOBN(0x7f47eda5, 0x697e5140), TOBN(0x4f450137, 0xb454921f)}, + {TOBN(0xdb625f84, 0x95cd8185), TOBN(0x74be0ba1, 0xcdb2e583), + TOBN(0xaee4fd7c, 0xdd5e6de4), TOBN(0x4251437d, 0xe8101739)}}, + {{TOBN(0x686d72a0, 0xac620366), TOBN(0x4be3fb9c, 0xb6d59344), + TOBN(0x6e8b44e7, 0xa1eb75b9), TOBN(0x84e39da3, 0x91a5c10c)}, + {TOBN(0x37cc1490, 0xb38f0409), TOBN(0x02951943, 0x2c2ade82), + TOBN(0x9b688783, 0x1190a2d8), TOBN(0x25627d14, 0x231182ba)}}, + {{TOBN(0x6eb550aa, 0x658a6d87), TOBN(0x1405aaa7, 0xcf9c7325), + TOBN(0xd147142e, 0x5c8748c9), TOBN(0x7f637e4f, 0x53ede0e0)}, + {TOBN(0xf8ca2776, 0x14ffad2c), TOBN(0xe58fb1bd, 0xbafb6791), + TOBN(0x17158c23, 0xbf8f93fc), TOBN(0x7f15b373, 0x0a4a4655)}}, + {{TOBN(0x39d4add2, 0xd842ca72), TOBN(0xa71e4391, 0x3ed96305), + TOBN(0x5bb09cbe, 0x6700be14), TOBN(0x68d69d54, 0xd8befcf6)}, + {TOBN(0xa45f5367, 0x37183bcf), TOBN(0x7152b7bb, 0x3370dff7), + TOBN(0xcf887baa, 0xbf12525b), TOBN(0xe7ac7bdd, 0xd6d1e3cd)}}, + {{TOBN(0x25914f78, 0x81fdad90), TOBN(0xcf638f56, 0x0d2cf6ab), + TOBN(0xb90bc03f, 0xcc054de5), TOBN(0x932811a7, 0x18b06350)}, + {TOBN(0x2f00b330, 0x9bbd11ff), TOBN(0x76108a6f, 0xb4044974), + TOBN(0x801bb9e0, 0xa851d266), TOBN(0x0dd099be, 0xbf8990c1)}}, + {{TOBN(0x58c5aaaa, 0xabe32986), TOBN(0x0fe9dd2a, 0x50d59c27), + TOBN(0x84951ff4, 0x8d307305), TOBN(0x6c23f829, 0x86529b78)}, + {TOBN(0x50bb2218, 0x0b136a79), TOBN(0x7e2174de, 0x77a20996), + TOBN(0x6f00a4b9, 0xc0bb4da6), TOBN(0x89a25a17, 0xefdde8da)}}, + {{TOBN(0xf728a27e, 0xc11ee01d), TOBN(0xf900553a, 0xe5f10dfb), + TOBN(0x189a83c8, 0x02ec893c), TOBN(0x3ca5bdc1, 0x23f66d77)}, + {TOBN(0x98781537, 0x97eada9f), TOBN(0x59c50ab3, 0x10256230), + TOBN(0x346042d9, 0x323c69b3), TOBN(0x1b715a6d, 0x2c460449)}}, + {{TOBN(0xa41dd476, 0x6ae06e0b), TOBN(0xcdd7888e, 0x9d42e25f), + TOBN(0x0f395f74, 0x56b25a20), TOBN(0xeadfe0ae, 0x8700e27e)}, + {TOBN(0xb09d52a9, 0x69950093), TOBN(0x3525d9cb, 0x327f8d40), + TOBN(0xb8235a94, 0x67df886a), TOBN(0x77e4b0dd, 0x035faec2)}}, + {{TOBN(0x115eb20a, 0x517d7061), TOBN(0x77fe3433, 0x6c2df683), + TOBN(0x6870ddc7, 0xcdc6fc67), TOBN(0xb1610588, 0x0b87de83)}, + {TOBN(0x343584ca, 0xd9c4ddbe), TOBN(0xb3164f1c, 0x3d754be2), + TOBN(0x0731ed3a, 0xc1e6c894), TOBN(0x26327dec, 0x4f6b904c)}}, + {{TOBN(0x9d49c6de, 0x97b5cd32), TOBN(0x40835dae, 0xb5eceecd), + TOBN(0xc66350ed, 0xd9ded7fe), TOBN(0x8aeebb5c, 0x7a678804)}, + {TOBN(0x51d42fb7, 0x5b8ee9ec), TOBN(0xd7a17bdd, 0x8e3ca118), + TOBN(0x40d7511a, 0x2ef4400e), TOBN(0xc48990ac, 0x875a66f4)}}, + {{TOBN(0x8de07d2a, 0x2199e347), TOBN(0xbee75556, 0x2a39e051), + TOBN(0x56918786, 0x916e51dc), TOBN(0xeb191313, 0x4a2d89ec)}, + {TOBN(0x6679610d, 0x37d341ed), TOBN(0x434fbb41, 0x56d51c2b), + TOBN(0xe54b7ee7, 0xd7492dba), TOBN(0xaa33a79a, 0x59021493)}}, + {{TOBN(0x49fc5054, 0xe4bd6d3d), TOBN(0x09540f04, 0x5ab551d0), + TOBN(0x8acc9085, 0x4942d3a6), TOBN(0x231af02f, 0x2d28323b)}, + {TOBN(0x93458cac, 0x0992c163), TOBN(0x1fef8e71, 0x888e3bb4), + TOBN(0x27578da5, 0xbe8c268c), TOBN(0xcc8be792, 0xe805ec00)}}, + {{TOBN(0x29267bae, 0xc61c3855), TOBN(0xebff429d, 0x58c1fd3b), + TOBN(0x22d886c0, 0x8c0b93b8), TOBN(0xca5e00b2, 0x2ddb8953)}, + {TOBN(0xcf330117, 0xc3fed8b7), TOBN(0xd49ac6fa, 0x819c01f6), + TOBN(0x6ddaa6bd, 0x3c0fbd54), TOBN(0x91743068, 0x8049a2cf)}}, + {{TOBN(0xd67f981e, 0xaff2ef81), TOBN(0xc3654d35, 0x2818ae80), + TOBN(0x81d05044, 0x1b2aa892), TOBN(0x2db067bf, 0x3d099328)}, + {TOBN(0xe7c79e86, 0x703dcc97), TOBN(0xe66f9b37, 0xe133e215), + TOBN(0xcdf119a6, 0xe39a7a5c), TOBN(0x47c60de3, 0x876f1b61)}}, + {{TOBN(0x6e405939, 0xd860f1b2), TOBN(0x3e9a1dbc, 0xf5ed4d4a), + TOBN(0x3f23619e, 0xc9b6bcbd), TOBN(0x5ee790cf, 0x734e4497)}, + {TOBN(0xf0a834b1, 0x5bdaf9bb), TOBN(0x02cedda7, 0x4ca295f0), + TOBN(0x4619aa2b, 0xcb8e378c), TOBN(0xe5613244, 0xcc987ea4)}}, + {{TOBN(0x0bc022cc, 0x76b23a50), TOBN(0x4a2793ad, 0x0a6c21ce), + TOBN(0x38328780, 0x89cac3f5), TOBN(0x29176f1b, 0xcba26d56)}, + {TOBN(0x06296187, 0x4f6f59eb), TOBN(0x86e9bca9, 0x8bdc658e), + TOBN(0x2ca9c4d3, 0x57e30402), TOBN(0x5438b216, 0x516a09bb)}}, + {{TOBN(0x0a6a063c, 0x7672765a), TOBN(0x37a3ce64, 0x0547b9bf), + TOBN(0x42c099c8, 0x98b1a633), TOBN(0xb5ab800d, 0x05ee6961)}, + {TOBN(0xf1963f59, 0x11a5acd6), TOBN(0xbaee6157, 0x46201063), + TOBN(0x36d9a649, 0xa596210a), TOBN(0xaed04363, 0x1ba7138c)}}, + {{TOBN(0xcf817d1c, 0xa4a82b76), TOBN(0x5586960e, 0xf3806be9), + TOBN(0x7ab67c89, 0x09dc6bb5), TOBN(0x52ace7a0, 0x114fe7eb)}, + {TOBN(0xcd987618, 0xcbbc9b70), TOBN(0x4f06fd5a, 0x604ca5e1), + TOBN(0x90af14ca, 0x6dbde133), TOBN(0x1afe4322, 0x948a3264)}}, + {{TOBN(0xa70d2ca6, 0xc44b2c6c), TOBN(0xab726799, 0x0ef87dfe), + TOBN(0x310f64dc, 0x2e696377), TOBN(0x49b42e68, 0x4c8126a0)}, + {TOBN(0x0ea444c3, 0xcea0b176), TOBN(0x53a8ddf7, 0xcb269182), + TOBN(0xf3e674eb, 0xbbba9dcb), TOBN(0x0d2878a8, 0xd8669d33)}}, + {{TOBN(0x04b935d5, 0xd019b6a3), TOBN(0xbb5cf88e, 0x406f1e46), + TOBN(0xa1912d16, 0x5b57c111), TOBN(0x9803fc21, 0x19ebfd78)}, + {TOBN(0x4f231c9e, 0xc07764a9), TOBN(0xd93286ee, 0xb75bd055), + TOBN(0x83a9457d, 0x8ee6c9de), TOBN(0x04695915, 0x6087ec90)}}, + {{TOBN(0x14c6dd8a, 0x58d6cd46), TOBN(0x9cb633b5, 0x8e6634d2), + TOBN(0xc1305047, 0xf81bc328), TOBN(0x12ede0e2, 0x26a177e5)}, + {TOBN(0x332cca62, 0x065a6f4f), TOBN(0xc3a47ecd, 0x67be487b), + TOBN(0x741eb187, 0x0f47ed1c), TOBN(0x99e66e58, 0xe7598b14)}}, + {{TOBN(0x6f0544ca, 0x63d0ff12), TOBN(0xe5efc784, 0xb610a05f), + TOBN(0xf72917b1, 0x7cad7b47), TOBN(0x3ff6ea20, 0xf2cac0c0)}, + {TOBN(0xcc23791b, 0xf21db8b7), TOBN(0x7dac70b1, 0xd7d93565), + TOBN(0x682cda1d, 0x694bdaad), TOBN(0xeb88bb8c, 0x1023516d)}}, + {{TOBN(0xc4c634b4, 0xdfdbeb1b), TOBN(0x22f5ca72, 0xb4ee4dea), + TOBN(0x1045a368, 0xe6524821), TOBN(0xed9e8a3f, 0x052b18b2)}, + {TOBN(0x9b7f2cb1, 0xb961f49a), TOBN(0x7fee2ec1, 0x7b009670), + TOBN(0x350d8754, 0x22507a6d), TOBN(0x561bd711, 0x4db55f1d)}}, + {{TOBN(0x4c189ccc, 0x320bbcaf), TOBN(0x568434cf, 0xdf1de48c), + TOBN(0x6af1b00e, 0x0fa8f128), TOBN(0xf0ba9d02, 0x8907583c)}, + {TOBN(0x735a4004, 0x32ff9f60), TOBN(0x3dd8e4b6, 0xc25dcf33), + TOBN(0xf2230f16, 0x42c74cef), TOBN(0xd8117623, 0x013fa8ad)}}, + {{TOBN(0x36822876, 0xf51fe76e), TOBN(0x8a6811cc, 0x11d62589), + TOBN(0xc3fc7e65, 0x46225718), TOBN(0xb7df2c9f, 0xc82fdbcd)}, + {TOBN(0x3b1d4e52, 0xdd7b205b), TOBN(0xb6959478, 0x47a2e414), + TOBN(0x05e4d793, 0xefa91148), TOBN(0xb47ed446, 0xfd2e9675)}}, + {{TOBN(0x1a7098b9, 0x04c9d9bf), TOBN(0x661e2881, 0x1b793048), + TOBN(0xb1a16966, 0xb01ee461), TOBN(0xbc521308, 0x2954746f)}, + {TOBN(0xc909a0fc, 0x2477de50), TOBN(0xd80bb41c, 0x7dbd51ef), + TOBN(0xa85be7ec, 0x53294905), TOBN(0x6d465b18, 0x83958f97)}}, + {{TOBN(0x16f6f330, 0xfb6840fd), TOBN(0xfaaeb214, 0x3401e6c8), + TOBN(0xaf83d30f, 0xccb5b4f8), TOBN(0x22885739, 0x266dec4b)}, + {TOBN(0x51b4367c, 0x7bc467df), TOBN(0x926562e3, 0xd842d27a), + TOBN(0xdfcb6614, 0x0fea14a6), TOBN(0xeb394dae, 0xf2734cd9)}}, + {{TOBN(0x3eeae5d2, 0x11c0be98), TOBN(0xb1e6ed11, 0x814e8165), + TOBN(0x191086bc, 0xe52bce1c), TOBN(0x14b74cc6, 0xa75a04da)}, + {TOBN(0x63cf1186, 0x8c060985), TOBN(0x071047de, 0x2dbd7f7c), + TOBN(0x4e433b8b, 0xce0942ca), TOBN(0xecbac447, 0xd8fec61d)}}, + {{TOBN(0x8f0ed0e2, 0xebf3232f), TOBN(0xfff80f9e, 0xc52a2edd), + TOBN(0xad9ab433, 0x75b55fdb), TOBN(0x73ca7820, 0xe42e0c11)}, + {TOBN(0x6dace0a0, 0xe6251b46), TOBN(0x89bc6b5c, 0x4c0d932d), + TOBN(0x3438cd77, 0x095da19a), TOBN(0x2f24a939, 0x8d48bdfb)}}, + {{TOBN(0x99b47e46, 0x766561b7), TOBN(0x736600e6, 0x0ed0322a), + TOBN(0x06a47cb1, 0x638e1865), TOBN(0x927c1c2d, 0xcb136000)}, + {TOBN(0x29542337, 0x0cc5df69), TOBN(0x99b37c02, 0x09d649a9), + TOBN(0xc5f0043c, 0x6aefdb27), TOBN(0x6cdd9987, 0x1be95c27)}}, + {{TOBN(0x69850931, 0x390420d2), TOBN(0x299c40ac, 0x0983efa4), + TOBN(0x3a05e778, 0xaf39aead), TOBN(0x84274408, 0x43a45193)}, + {TOBN(0x6bcd0fb9, 0x91a711a0), TOBN(0x461592c8, 0x9f52ab17), + TOBN(0xb49302b4, 0xda3c6ed6), TOBN(0xc51fddc7, 0x330d7067)}}, + {{TOBN(0x94babeb6, 0xda50d531), TOBN(0x521b840d, 0xa6a7b9da), + TOBN(0x5305151e, 0x404bdc89), TOBN(0x1bcde201, 0xd0d07449)}, + {TOBN(0xf427a78b, 0x3b76a59a), TOBN(0xf84841ce, 0x07791a1b), + TOBN(0xebd314be, 0xbf91ed1c), TOBN(0x8e61d34c, 0xbf172943)}}, + {{TOBN(0x1d5dc451, 0x5541b892), TOBN(0xb186ee41, 0xfc9d9e54), + TOBN(0x9d9f345e, 0xd5bf610d), TOBN(0x3e7ba65d, 0xf6acca9f)}, + {TOBN(0x9dda787a, 0xa8369486), TOBN(0x09f9dab7, 0x8eb5ba53), + TOBN(0x5afb2033, 0xd6481bc3), TOBN(0x76f4ce30, 0xafa62104)}}, + {{TOBN(0xa8fa00cf, 0xf4f066b5), TOBN(0x89ab5143, 0x461dafc2), + TOBN(0x44339ed7, 0xa3389998), TOBN(0x2ff862f1, 0xbc214903)}, + {TOBN(0x2c88f985, 0xb05556e3), TOBN(0xcd96058e, 0x3467081e), + TOBN(0x7d6a4176, 0xedc637ea), TOBN(0xe1743d09, 0x36a5acdc)}}, + {{TOBN(0x66fd72e2, 0x7eb37726), TOBN(0xf7fa264e, 0x1481a037), + TOBN(0x9fbd3bde, 0x45f4aa79), TOBN(0xed1e0147, 0x767c3e22)}, + {TOBN(0x7621f979, 0x82e7abe2), TOBN(0x19eedc72, 0x45f633f8), + TOBN(0xe69b155e, 0x6137bf3a), TOBN(0xa0ad13ce, 0x414ee94e)}}, + {{TOBN(0x93e3d524, 0x1c0e651a), TOBN(0xab1a6e2a, 0x02ce227e), + TOBN(0xe7af1797, 0x4ab27eca), TOBN(0x245446de, 0xbd444f39)}, + {TOBN(0x59e22a21, 0x56c07613), TOBN(0x43deafce, 0xf4275498), + TOBN(0x10834ccb, 0x67fd0946), TOBN(0xa75841e5, 0x47406edf)}}, + {{TOBN(0xebd6a677, 0x7b0ac93d), TOBN(0xa6e37b0d, 0x78f5e0d7), + TOBN(0x2516c096, 0x76f5492b), TOBN(0x1e4bf888, 0x9ac05f3a)}, + {TOBN(0xcdb42ce0, 0x4df0ba2b), TOBN(0x935d5cfd, 0x5062341b), + TOBN(0x8a303333, 0x82acac20), TOBN(0x429438c4, 0x5198b00e)}}, + {{TOBN(0x1d083bc9, 0x049d33fa), TOBN(0x58b82dda, 0x946f67ff), + TOBN(0xac3e2db8, 0x67a1d6a3), TOBN(0x62e6bead, 0x1798aac8)}, + {TOBN(0xfc85980f, 0xde46c58c), TOBN(0xa7f69379, 0x69c8d7be), + TOBN(0x23557927, 0x837b35ec), TOBN(0x06a933d8, 0xe0790c0c)}}, + {{TOBN(0x827c0e9b, 0x077ff55d), TOBN(0x53977798, 0xbb26e680), + TOBN(0x59530874, 0x1d9cb54f), TOBN(0xcca3f449, 0x4aac53ef)}, + {TOBN(0x11dc5c87, 0xa07eda0f), TOBN(0xc138bccf, 0xfd6400c8), + TOBN(0x549680d3, 0x13e5da72), TOBN(0xc93eed82, 0x4540617e)}}, + {{TOBN(0xfd3db157, 0x4d0b75c0), TOBN(0x9716eb42, 0x6386075b), + TOBN(0x0639605c, 0x817b2c16), TOBN(0x09915109, 0xf1e4f201)}, + {TOBN(0x35c9a928, 0x5cca6c3b), TOBN(0xb25f7d1a, 0x3505c900), + TOBN(0xeb9f7d20, 0x630480c4), TOBN(0xc3c7b8c6, 0x2a1a501c)}}, + {{TOBN(0x3f99183c, 0x5a1f8e24), TOBN(0xfdb118fa, 0x9dd255f0), + TOBN(0xb9b18b90, 0xc27f62a6), TOBN(0xe8f732f7, 0x396ec191)}, + {TOBN(0x524a2d91, 0x0be786ab), TOBN(0x5d32adef, 0x0ac5a0f5), + TOBN(0x9b53d4d6, 0x9725f694), TOBN(0x032a76c6, 0x0510ba89)}}, + {{TOBN(0x840391a3, 0xebeb1544), TOBN(0x44b7b88c, 0x3ed73ac3), + TOBN(0xd24bae7a, 0x256cb8b3), TOBN(0x7ceb151a, 0xe394cb12)}, + {TOBN(0xbd6b66d0, 0x5bc1e6a8), TOBN(0xec70cecb, 0x090f07bf), + TOBN(0x270644ed, 0x7d937589), TOBN(0xee9e1a3d, 0x5f1dccfe)}}, + {{TOBN(0xb0d40a84, 0x745b98d2), TOBN(0xda429a21, 0x2556ed40), + TOBN(0xf676eced, 0x85148cb9), TOBN(0x5a22d40c, 0xded18936)}, + {TOBN(0x3bc4b9e5, 0x70e8a4ce), TOBN(0xbfd1445b, 0x9eae0379), + TOBN(0xf23f2c0c, 0x1a0bd47e), TOBN(0xa9c0bb31, 0xe1845531)}}, + {{TOBN(0x9ddc4d60, 0x0a4c3f6b), TOBN(0xbdfaad79, 0x2c15ef44), + TOBN(0xce55a236, 0x7f484acc), TOBN(0x08653ca7, 0x055b1f15)}, + {TOBN(0x2efa8724, 0x538873a3), TOBN(0x09299e5d, 0xace1c7e7), + TOBN(0x07afab66, 0xade332ba), TOBN(0x9be1fdf6, 0x92dd71b7)}}, + {{TOBN(0xa49b5d59, 0x5758b11c), TOBN(0x0b852893, 0xc8654f40), + TOBN(0xb63ef6f4, 0x52379447), TOBN(0xd4957d29, 0x105e690c)}, + {TOBN(0x7d484363, 0x646559b0), TOBN(0xf4a8273c, 0x49788a8e), + TOBN(0xee406cb8, 0x34ce54a9), TOBN(0x1e1c260f, 0xf86fda9b)}}, + {{TOBN(0xe150e228, 0xcf6a4a81), TOBN(0x1fa3b6a3, 0x1b488772), + TOBN(0x1e6ff110, 0xc5a9c15b), TOBN(0xc6133b91, 0x8ad6aa47)}, + {TOBN(0x8ac5d55c, 0x9dffa978), TOBN(0xba1d1c1d, 0x5f3965f2), + TOBN(0xf969f4e0, 0x7732b52f), TOBN(0xfceecdb5, 0xa5172a07)}}, + {{TOBN(0xb0120a5f, 0x10f2b8f5), TOBN(0xc83a6cdf, 0x5c4c2f63), + TOBN(0x4d47a491, 0xf8f9c213), TOBN(0xd9e1cce5, 0xd3f1bbd5)}, + {TOBN(0x0d91bc7c, 0xaba7e372), TOBN(0xfcdc74c8, 0xdfd1a2db), + TOBN(0x05efa800, 0x374618e5), TOBN(0x11216969, 0x15a7925e)}}, + {{TOBN(0xd4c89823, 0xf6021c5d), TOBN(0x880d5e84, 0xeff14423), + TOBN(0x6523bc5a, 0x6dcd1396), TOBN(0xd1acfdfc, 0x113c978b)}, + {TOBN(0xb0c164e8, 0xbbb66840), TOBN(0xf7f4301e, 0x72b58459), + TOBN(0xc29ad4a6, 0xa638e8ec), TOBN(0xf5ab8961, 0x46b78699)}}, + {{TOBN(0x9dbd7974, 0x0e954750), TOBN(0x0121de88, 0x64f9d2c6), + TOBN(0x2e597b42, 0xd985232e), TOBN(0x55b6c3c5, 0x53451777)}, + {TOBN(0xbb53e547, 0x519cb9fb), TOBN(0xf134019f, 0x8428600d), + TOBN(0x5a473176, 0xe081791a), TOBN(0x2f3e2263, 0x35fb0c08)}}, + {{TOBN(0xb28c3017, 0x73d273b0), TOBN(0xccd21076, 0x7721ef9a), + TOBN(0x054cc292, 0xb650dc39), TOBN(0x662246de, 0x6188045e)}, + {TOBN(0x904b52fa, 0x6b83c0d1), TOBN(0xa72df267, 0x97e9cd46), + TOBN(0x886b43cd, 0x899725e4), TOBN(0x2b651688, 0xd849ff22)}}, + {{TOBN(0x60479b79, 0x02f34533), TOBN(0x5e354c14, 0x0c77c148), + TOBN(0xb4bb7581, 0xa8537c78), TOBN(0x188043d7, 0xefe1495f)}, + {TOBN(0x9ba12f42, 0x8c1d5026), TOBN(0x2e0c8a26, 0x93d4aaab), + TOBN(0xbdba7b8b, 0xaa57c450), TOBN(0x140c9ad6, 0x9bbdafef)}}, + {{TOBN(0x2067aa42, 0x25ac0f18), TOBN(0xf7b1295b, 0x04d1fbf3), + TOBN(0x14829111, 0xa4b04824), TOBN(0x2ce3f192, 0x33bd5e91)}, + {TOBN(0x9c7a1d55, 0x8f2e1b72), TOBN(0xfe932286, 0x302aa243), + TOBN(0x497ca7b4, 0xd4be9554), TOBN(0xb8e821b8, 0xe0547a6e)}}, + {{TOBN(0xfb2838be, 0x67e573e0), TOBN(0x05891db9, 0x4084c44b), + TOBN(0x91311373, 0x96c1c2c5), TOBN(0x6aebfa3f, 0xd958444b)}, + {TOBN(0xac9cdce9, 0xe56e55c1), TOBN(0x7148ced3, 0x2caa46d0), + TOBN(0x2e10c7ef, 0xb61fe8eb), TOBN(0x9fd835da, 0xff97cf4d)}}}, + {{{TOBN(0xa36da109, 0x081e9387), TOBN(0xfb9780d7, 0x8c935828), + TOBN(0xd5940332, 0xe540b015), TOBN(0xc9d7b51b, 0xe0f466fa)}, + {TOBN(0xfaadcd41, 0xd6d9f671), TOBN(0xba6c1e28, 0xb1a2ac17), + TOBN(0x066a7833, 0xed201e5f), TOBN(0x19d99719, 0xf90f462b)}}, + {{TOBN(0xf431f462, 0x060b5f61), TOBN(0xa56f46b4, 0x7bd057c2), + TOBN(0x348dca6c, 0x47e1bf65), TOBN(0x9a38783e, 0x41bcf1ff)}, + {TOBN(0x7a5d33a9, 0xda710718), TOBN(0x5a779987, 0x2e0aeaf6), + TOBN(0xca87314d, 0x2d29d187), TOBN(0xfa0edc3e, 0xc687d733)}}, + {{TOBN(0x9df33621, 0x6a31e09b), TOBN(0xde89e44d, 0xc1350e35), + TOBN(0x29214871, 0x4ca0cf52), TOBN(0xdf379672, 0x0b88a538)}, + {TOBN(0xc92a510a, 0x2591d61b), TOBN(0x79aa87d7, 0x585b447b), + TOBN(0xf67db604, 0xe5287f77), TOBN(0x1697c8bf, 0x5efe7a80)}}, + {{TOBN(0x1c894849, 0xcb198ac7), TOBN(0xa884a93d, 0x0f264665), + TOBN(0x2da964ef, 0x9b200678), TOBN(0x3c351b87, 0x009834e6)}, + {TOBN(0xafb2ef9f, 0xe2c4b44b), TOBN(0x580f6c47, 0x3326790c), + TOBN(0xb8480521, 0x0b02264a), TOBN(0x8ba6f9e2, 0x42a194e2)}}, + {{TOBN(0xfc87975f, 0x8fb54738), TOBN(0x35160788, 0x27c3ead3), + TOBN(0x834116d2, 0xb74a085a), TOBN(0x53c99a73, 0xa62fe996)}, + {TOBN(0x87585be0, 0x5b81c51b), TOBN(0x925bafa8, 0xbe0852b7), + TOBN(0x76a4fafd, 0xa84d19a7), TOBN(0x39a45982, 0x585206d4)}}, + {{TOBN(0x499b6ab6, 0x5eb03c0e), TOBN(0xf19b7954, 0x72bc3fde), + TOBN(0xa86b5b9c, 0x6e3a80d2), TOBN(0xe4377508, 0x6d42819f)}, + {TOBN(0xc1663650, 0xbb3ee8a3), TOBN(0x75eb14fc, 0xb132075f), + TOBN(0xa8ccc906, 0x7ad834f6), TOBN(0xea6a2474, 0xe6e92ffd)}}, + {{TOBN(0x9d72fd95, 0x0f8d6758), TOBN(0xcb84e101, 0x408c07dd), + TOBN(0xb9114bfd, 0xa5e23221), TOBN(0x358b5fe2, 0xe94e742c)}, + {TOBN(0x1c0577ec, 0x95f40e75), TOBN(0xf0155451, 0x3d73f3d6), + TOBN(0x9d55cd67, 0xbd1b9b66), TOBN(0x63e86e78, 0xaf8d63c7)}}, + {{TOBN(0x39d934ab, 0xd3c095f1), TOBN(0x04b261be, 0xe4b76d71), + TOBN(0x1d2e6970, 0xe73e6984), TOBN(0x879fb23b, 0x5e5fcb11)}, + {TOBN(0x11506c72, 0xdfd75490), TOBN(0x3a97d085, 0x61bcf1c1), + TOBN(0x43201d82, 0xbf5e7007), TOBN(0x7f0ac52f, 0x798232a7)}}, + {{TOBN(0x2715cbc4, 0x6eb564d4), TOBN(0x8d6c752c, 0x9e570e29), + TOBN(0xf80247c8, 0x9ef5fd5d), TOBN(0xc3c66b46, 0xd53eb514)}, + {TOBN(0x9666b401, 0x0f87de56), TOBN(0xce62c06f, 0xc6c603b5), + TOBN(0xae7b4c60, 0x7e4fc942), TOBN(0x38ac0b77, 0x663a9c19)}}, + {{TOBN(0xcb4d20ee, 0x4b049136), TOBN(0x8b63bf12, 0x356a4613), + TOBN(0x1221aef6, 0x70e08128), TOBN(0xe62d8c51, 0x4acb6b16)}, + {TOBN(0x71f64a67, 0x379e7896), TOBN(0xb25237a2, 0xcafd7fa5), + TOBN(0xf077bd98, 0x3841ba6a), TOBN(0xc4ac0244, 0x3cd16e7e)}}, + {{TOBN(0x548ba869, 0x21fea4ca), TOBN(0xd36d0817, 0xf3dfdac1), + TOBN(0x09d8d71f, 0xf4685faf), TOBN(0x8eff66be, 0xc52c459a)}, + {TOBN(0x182faee7, 0x0b57235e), TOBN(0xee3c39b1, 0x0106712b), + TOBN(0x5107331f, 0xc0fcdcb0), TOBN(0x669fb9dc, 0xa51054ba)}}, + {{TOBN(0xb25101fb, 0x319d7682), TOBN(0xb0293129, 0x0a982fee), + TOBN(0x51c1c9b9, 0x0261b344), TOBN(0x0e008c5b, 0xbfd371fa)}, + {TOBN(0xd866dd1c, 0x0278ca33), TOBN(0x666f76a6, 0xe5aa53b1), + TOBN(0xe5cfb779, 0x6013a2cf), TOBN(0x1d3a1aad, 0xa3521836)}}, + {{TOBN(0xcedd2531, 0x73faa485), TOBN(0xc8ee6c4f, 0xc0a76878), + TOBN(0xddbccfc9, 0x2a11667d), TOBN(0x1a418ea9, 0x1c2f695a)}, + {TOBN(0xdb11bd92, 0x51f73971), TOBN(0x3e4b3c82, 0xda2ed89f), + TOBN(0x9a44f3f4, 0xe73e0319), TOBN(0xd1e3de0f, 0x303431af)}}, + {{TOBN(0x3c5604ff, 0x50f75f9c), TOBN(0x1d8eddf3, 0x7e752b22), + TOBN(0x0ef074dd, 0x3c9a1118), TOBN(0xd0ffc172, 0xccb86d7b)}, + {TOBN(0xabd1ece3, 0x037d90f2), TOBN(0xe3f307d6, 0x6055856c), + TOBN(0x422f9328, 0x7e4c6daf), TOBN(0x902aac66, 0x334879a0)}}, + {{TOBN(0xb6a1e7bf, 0x94cdfade), TOBN(0x6c97e1ed, 0x7fc6d634), + TOBN(0x662ad24d, 0xa2fb63f8), TOBN(0xf81be1b9, 0xa5928405)}, + {TOBN(0x86d765e4, 0xd14b4206), TOBN(0xbecc2e0e, 0x8fa0db65), + TOBN(0xa28838e0, 0xb17fc76c), TOBN(0xe49a602a, 0xe37cf24e)}}, + {{TOBN(0x76b4131a, 0x567193ec), TOBN(0xaf3c305a, 0xe5f6e70b), + TOBN(0x9587bd39, 0x031eebdd), TOBN(0x5709def8, 0x71bbe831)}, + {TOBN(0x57059983, 0x0eb2b669), TOBN(0x4d80ce1b, 0x875b7029), + TOBN(0x838a7da8, 0x0364ac16), TOBN(0x2f431d23, 0xbe1c83ab)}}, + {{TOBN(0xe56812a6, 0xf9294dd3), TOBN(0xb448d01f, 0x9b4b0d77), + TOBN(0xf3ae6061, 0x04e8305c), TOBN(0x2bead645, 0x94d8c63e)}, + {TOBN(0x0a85434d, 0x84fd8b07), TOBN(0x537b983f, 0xf7a9dee5), + TOBN(0xedcc5f18, 0xef55bd85), TOBN(0x2041af62, 0x21c6cf8b)}}, + {{TOBN(0x8e52874c, 0xb940c71e), TOBN(0x211935a9, 0xdb5f4b3a), + TOBN(0x94350492, 0x301b1dc3), TOBN(0x33d2646d, 0x29958620)}, + {TOBN(0x16b0d64b, 0xef911404), TOBN(0x9d1f25ea, 0x9a3c5ef4), + TOBN(0x20f200eb, 0x4a352c78), TOBN(0x43929f2c, 0x4bd0b428)}}, + {{TOBN(0xa5656667, 0xc7196e29), TOBN(0x7992c2f0, 0x9391be48), + TOBN(0xaaa97cbd, 0x9ee0cd6e), TOBN(0x51b0310c, 0x3dc8c9bf)}, + {TOBN(0x237f8acf, 0xdd9f22cb), TOBN(0xbb1d81a1, 0xb585d584), + TOBN(0x8d5d85f5, 0x8c416388), TOBN(0x0d6e5a5a, 0x42fe474f)}}, + {{TOBN(0xe7812766, 0x38235d4e), TOBN(0x1c62bd67, 0x496e3298), + TOBN(0x8378660c, 0x3f175bc8), TOBN(0x4d04e189, 0x17afdd4d)}, + {TOBN(0x32a81601, 0x85a8068c), TOBN(0xdb58e4e1, 0x92b29a85), + TOBN(0xe8a65b86, 0xc70d8a3b), TOBN(0x5f0e6f4e, 0x98a0403b)}}, + {{TOBN(0x08129684, 0x69ed2370), TOBN(0x34dc30bd, 0x0871ee26), + TOBN(0x3a5ce948, 0x7c9c5b05), TOBN(0x7d487b80, 0x43a90c87)}, + {TOBN(0x4089ba37, 0xdd0e7179), TOBN(0x45f80191, 0xb4041811), + TOBN(0x1c3e1058, 0x98747ba5), TOBN(0x98c4e13a, 0x6e1ae592)}}, + {{TOBN(0xd44636e6, 0xe82c9f9e), TOBN(0x711db87c, 0xc33a1043), + TOBN(0x6f431263, 0xaa8aec05), TOBN(0x43ff120d, 0x2744a4aa)}, + {TOBN(0xd3bd892f, 0xae77779b), TOBN(0xf0fe0cc9, 0x8cdc9f82), + TOBN(0xca5f7fe6, 0xf1c5b1bc), TOBN(0xcc63a682, 0x44929a72)}}, + {{TOBN(0xc7eaba0c, 0x09dbe19a), TOBN(0x2f3585ad, 0x6b5c73c2), + TOBN(0x8ab8924b, 0x0ae50c30), TOBN(0x17fcd27a, 0x638b30ba)}, + {TOBN(0xaf414d34, 0x10b3d5a5), TOBN(0x09c107d2, 0x2a9accf1), + TOBN(0x15dac49f, 0x946a6242), TOBN(0xaec3df2a, 0xd707d642)}}, + {{TOBN(0x2c2492b7, 0x3f894ae0), TOBN(0xf59df3e5, 0xb75f18ce), + TOBN(0x7cb740d2, 0x8f53cad0), TOBN(0x3eb585fb, 0xc4f01294)}, + {TOBN(0x17da0c86, 0x32c7f717), TOBN(0xeb8c795b, 0xaf943f4c), + TOBN(0x4ee23fb5, 0xf67c51d2), TOBN(0xef187575, 0x68889949)}}, + {{TOBN(0xa6b4bdb2, 0x0389168b), TOBN(0xc4ecd258, 0xea577d03), + TOBN(0x3a63782b, 0x55743082), TOBN(0x6f678f4c, 0xc72f08cd)}, + {TOBN(0x553511cf, 0x65e58dd8), TOBN(0xd53b4e3e, 0xd402c0cd), + TOBN(0x37de3e29, 0xa037c14c), TOBN(0x86b6c516, 0xc05712aa)}}, + {{TOBN(0x2834da3e, 0xb38dff6f), TOBN(0xbe012c52, 0xea636be8), + TOBN(0x292d238c, 0x61dd37f8), TOBN(0x0e54523f, 0x8f8142db)}, + {TOBN(0xe31eb436, 0x036a05d8), TOBN(0x83e3cdff, 0x1e93c0ff), + TOBN(0x3fd2fe0f, 0x50821ddf), TOBN(0xc8e19b0d, 0xff9eb33b)}}, + {{TOBN(0xc8cc943f, 0xb569a5fe), TOBN(0xad0090d4, 0xd4342d75), + TOBN(0x82090b4b, 0xcaeca000), TOBN(0xca39687f, 0x1bd410eb)}, + {TOBN(0xe7bb0df7, 0x65959d77), TOBN(0x39d78218, 0x9c964999), + TOBN(0xd87f62e8, 0xb2415451), TOBN(0xe5efb774, 0xbed76108)}}, + {{TOBN(0x3ea011a4, 0xe822f0d0), TOBN(0xbc647ad1, 0x5a8704f8), + TOBN(0xbb315b35, 0x50c6820f), TOBN(0x863dec3d, 0xb7e76bec)}, + {TOBN(0x01ff5d3a, 0xf017bfc7), TOBN(0x20054439, 0x976b8229), + TOBN(0x067fca37, 0x0bbd0d3b), TOBN(0xf63dde64, 0x7f5e3d0f)}}, + {{TOBN(0x22dbefb3, 0x2a4c94e9), TOBN(0xafbff0fe, 0x96f8278a), + TOBN(0x80aea0b1, 0x3503793d), TOBN(0xb2238029, 0x5f06cd29)}, + {TOBN(0x65703e57, 0x8ec3feca), TOBN(0x06c38314, 0x393e7053), + TOBN(0xa0b751eb, 0x7c6734c4), TOBN(0xd2e8a435, 0xc59f0f1e)}}, + {{TOBN(0x147d9052, 0x5e9ca895), TOBN(0x2f4dd31e, 0x972072df), + TOBN(0xa16fda8e, 0xe6c6755c), TOBN(0xc66826ff, 0xcf196558)}, + {TOBN(0x1f1a76a3, 0x0cf43895), TOBN(0xa9d604e0, 0x83c3097b), + TOBN(0xe1908309, 0x66390e0e), TOBN(0xa50bf753, 0xb3c85eff)}}, + {{TOBN(0x0696bdde, 0xf6a70251), TOBN(0x548b801b, 0x3c6ab16a), + TOBN(0x37fcf704, 0xa4d08762), TOBN(0x090b3def, 0xdff76c4e)}, + {TOBN(0x87e8cb89, 0x69cb9158), TOBN(0x44a90744, 0x995ece43), + TOBN(0xf85395f4, 0x0ad9fbf5), TOBN(0x49b0f6c5, 0x4fb0c82d)}}, + {{TOBN(0x75d9bc15, 0xadf7cccf), TOBN(0x81a3e5d6, 0xdfa1e1b0), + TOBN(0x8c39e444, 0x249bc17e), TOBN(0xf37dccb2, 0x8ea7fd43)}, + {TOBN(0xda654873, 0x907fba12), TOBN(0x35daa6da, 0x4a372904), + TOBN(0x0564cfc6, 0x6283a6c5), TOBN(0xd09fa4f6, 0x4a9395bf)}}, + {{TOBN(0x688e9ec9, 0xaeb19a36), TOBN(0xd913f1ce, 0xc7bfbfb4), + TOBN(0x797b9a3c, 0x61c2faa6), TOBN(0x2f979bec, 0x6a0a9c12)}, + {TOBN(0xb5969d0f, 0x359679ec), TOBN(0xebcf523d, 0x079b0460), + TOBN(0xfd6b0008, 0x10fab870), TOBN(0x3f2edcda, 0x9373a39c)}}, + {{TOBN(0x0d64f9a7, 0x6f568431), TOBN(0xf848c27c, 0x02f8898c), + TOBN(0xf418ade1, 0x260b5bd5), TOBN(0xc1f3e323, 0x6973dee8)}, + {TOBN(0x46e9319c, 0x26c185dd), TOBN(0x6d85b7d8, 0x546f0ac4), + TOBN(0x427965f2, 0x247f9d57), TOBN(0xb519b636, 0xb0035f48)}}, + {{TOBN(0x6b6163a9, 0xab87d59c), TOBN(0xff9f58c3, 0x39caaa11), + TOBN(0x4ac39cde, 0x3177387b), TOBN(0x5f6557c2, 0x873e77f9)}, + {TOBN(0x67504006, 0x36a83041), TOBN(0x9b1c96ca, 0x75ef196c), + TOBN(0xf34283de, 0xb08c7940), TOBN(0x7ea09644, 0x1128c316)}}, + {{TOBN(0xb510b3b5, 0x6aa39dff), TOBN(0x59b43da2, 0x9f8e4d8c), + TOBN(0xa8ce31fd, 0x9e4c4b9f), TOBN(0x0e20be26, 0xc1303c01)}, + {TOBN(0x18187182, 0xe8ee47c9), TOBN(0xd9687cdb, 0x7db98101), + TOBN(0x7a520e4d, 0xa1e14ff6), TOBN(0x429808ba, 0x8836d572)}}, + {{TOBN(0xa37ca60d, 0x4944b663), TOBN(0xf901f7a9, 0xa3f91ae5), + TOBN(0xe4e3e76e, 0x9e36e3b1), TOBN(0x9aa219cf, 0x29d93250)}, + {TOBN(0x347fe275, 0x056a2512), TOBN(0xa4d643d9, 0xde65d95c), + TOBN(0x9669d396, 0x699fc3ed), TOBN(0xb598dee2, 0xcf8c6bbe)}}, + {{TOBN(0x682ac1e5, 0xdda9e5c6), TOBN(0x4e0d3c72, 0xcaa9fc95), + TOBN(0x17faaade, 0x772bea44), TOBN(0x5ef8428c, 0xab0009c8)}, + {TOBN(0xcc4ce47a, 0x460ff016), TOBN(0xda6d12bf, 0x725281cb), + TOBN(0x44c67848, 0x0223aad2), TOBN(0x6e342afa, 0x36256e28)}}, + {{TOBN(0x1400bb0b, 0x93a37c04), TOBN(0x62b1bc9b, 0xdd10bd96), + TOBN(0x7251adeb, 0x0dac46b7), TOBN(0x7d33b92e, 0x7be4ef51)}, + {TOBN(0x28b2a94b, 0xe61fa29a), TOBN(0x4b2be13f, 0x06422233), + TOBN(0x36d6d062, 0x330d8d37), TOBN(0x5ef80e1e, 0xb28ca005)}}, + {{TOBN(0x174d4699, 0x6d16768e), TOBN(0x9fc4ff6a, 0x628bf217), + TOBN(0x77705a94, 0x154e490d), TOBN(0x9d96dd28, 0x8d2d997a)}, + {TOBN(0x77e2d9d8, 0xce5d72c4), TOBN(0x9d06c5a4, 0xc11c714f), + TOBN(0x02aa5136, 0x79e4a03e), TOBN(0x1386b3c2, 0x030ff28b)}}, + {{TOBN(0xfe82e8a6, 0xfb283f61), TOBN(0x7df203e5, 0xf3abc3fb), + TOBN(0xeec7c351, 0x3a4d3622), TOBN(0xf7d17dbf, 0xdf762761)}, + {TOBN(0xc3956e44, 0x522055f0), TOBN(0xde3012db, 0x8fa748db), + TOBN(0xca9fcb63, 0xbf1dcc14), TOBN(0xa56d9dcf, 0xbe4e2f3a)}}, + {{TOBN(0xb86186b6, 0x8bcec9c2), TOBN(0x7cf24df9, 0x680b9f06), + TOBN(0xc46b45ea, 0xc0d29281), TOBN(0xfff42bc5, 0x07b10e12)}, + {TOBN(0x12263c40, 0x4d289427), TOBN(0x3d5f1899, 0xb4848ec4), + TOBN(0x11f97010, 0xd040800c), TOBN(0xb4c5f529, 0x300feb20)}}, + {{TOBN(0xcc543f8f, 0xde94fdcb), TOBN(0xe96af739, 0xc7c2f05e), + TOBN(0xaa5e0036, 0x882692e1), TOBN(0x09c75b68, 0x950d4ae9)}, + {TOBN(0x62f63df2, 0xb5932a7a), TOBN(0x2658252e, 0xde0979ad), + TOBN(0x2a19343f, 0xb5e69631), TOBN(0x718c7501, 0x525b666b)}}, + {{TOBN(0x26a42d69, 0xea40dc3a), TOBN(0xdc84ad22, 0xaecc018f), + TOBN(0x25c36c7b, 0x3270f04a), TOBN(0x46ba6d47, 0x50fa72ed)}, + {TOBN(0x6c37d1c5, 0x93e58a8e), TOBN(0xa2394731, 0x120c088c), + TOBN(0xc3be4263, 0xcb6e86da), TOBN(0x2c417d36, 0x7126d038)}}, + {{TOBN(0x5b70f9c5, 0x8b6f8efa), TOBN(0x671a2faa, 0x37718536), + TOBN(0xd3ced3c6, 0xb539c92b), TOBN(0xe56f1bd9, 0xa31203c2)}, + {TOBN(0x8b096ec4, 0x9ff3c8eb), TOBN(0x2deae432, 0x43491cea), + TOBN(0x2465c6eb, 0x17943794), TOBN(0x5d267e66, 0x20586843)}}, + {{TOBN(0x9d3d116d, 0xb07159d0), TOBN(0xae07a67f, 0xc1896210), + TOBN(0x8fc84d87, 0xbb961579), TOBN(0x30009e49, 0x1c1f8dd6)}, + {TOBN(0x8a8caf22, 0xe3132819), TOBN(0xcffa197c, 0xf23ab4ff), + TOBN(0x58103a44, 0x205dd687), TOBN(0x57b796c3, 0x0ded67a2)}}, + {{TOBN(0x0b9c3a6c, 0xa1779ad7), TOBN(0xa33cfe2e, 0x357c09c5), + TOBN(0x2ea29315, 0x3db4a57e), TOBN(0x91959695, 0x8ebeb52e)}, + {TOBN(0x118db9a6, 0xe546c879), TOBN(0x8e996df4, 0x6295c8d6), + TOBN(0xdd990484, 0x55ec806b), TOBN(0x24f291ca, 0x165c1035)}}, + {{TOBN(0xcca523bb, 0x440e2229), TOBN(0x324673a2, 0x73ef4d04), + TOBN(0xaf3adf34, 0x3e11ec39), TOBN(0x6136d7f1, 0xdc5968d3)}, + {TOBN(0x7a7b2899, 0xb053a927), TOBN(0x3eaa2661, 0xae067ecd), + TOBN(0x8549b9c8, 0x02779cd9), TOBN(0x061d7940, 0xc53385ea)}}, + {{TOBN(0x3e0ba883, 0xf06d18bd), TOBN(0x4ba6de53, 0xb2700843), + TOBN(0xb966b668, 0x591a9e4d), TOBN(0x93f67567, 0x7f4fa0ed)}, + {TOBN(0x5a02711b, 0x4347237b), TOBN(0xbc041e2f, 0xe794608e), + TOBN(0x55af10f5, 0x70f73d8c), TOBN(0xd2d4d4f7, 0xbb7564f7)}}, + {{TOBN(0xd7d27a89, 0xb3e93ce7), TOBN(0xf7b5a875, 0x5d3a2c1b), + TOBN(0xb29e68a0, 0x255b218a), TOBN(0xb533837e, 0x8af76754)}, + {TOBN(0xd1b05a73, 0x579fab2e), TOBN(0xb41055a1, 0xecd74385), + TOBN(0xb2369274, 0x445e9115), TOBN(0x2972a7c4, 0xf520274e)}}, + {{TOBN(0x6c08334e, 0xf678e68a), TOBN(0x4e4160f0, 0x99b057ed), + TOBN(0x3cfe11b8, 0x52ccb69a), TOBN(0x2fd1823a, 0x21c8f772)}, + {TOBN(0xdf7f072f, 0x3298f055), TOBN(0x8c0566f9, 0xfec74a6e), + TOBN(0xe549e019, 0x5bb4d041), TOBN(0x7c3930ba, 0x9208d850)}}, + {{TOBN(0xe07141fc, 0xaaa2902b), TOBN(0x539ad799, 0xe4f69ad3), + TOBN(0xa6453f94, 0x813f9ffd), TOBN(0xc58d3c48, 0x375bc2f7)}, + {TOBN(0xb3326fad, 0x5dc64e96), TOBN(0x3aafcaa9, 0xb240e354), + TOBN(0x1d1b0903, 0xaca1e7a9), TOBN(0x4ceb9767, 0x1211b8a0)}}, + {{TOBN(0xeca83e49, 0xe32a858e), TOBN(0x4c32892e, 0xae907bad), + TOBN(0xd5b42ab6, 0x2eb9b494), TOBN(0x7fde3ee2, 0x1eabae1b)}, + {TOBN(0x13b5ab09, 0xcaf54957), TOBN(0xbfb028be, 0xe5f5d5d5), + TOBN(0x928a0650, 0x2003e2c0), TOBN(0x90793aac, 0x67476843)}}, + {{TOBN(0x5e942e79, 0xc81710a0), TOBN(0x557e4a36, 0x27ccadd4), + TOBN(0x72a2bc56, 0x4bcf6d0c), TOBN(0x09ee5f43, 0x26d7b80c)}, + {TOBN(0x6b70dbe9, 0xd4292f19), TOBN(0x56f74c26, 0x63f16b18), + TOBN(0xc23db0f7, 0x35fbb42a), TOBN(0xb606bdf6, 0x6ae10040)}}, + {{TOBN(0x1eb15d4d, 0x044573ac), TOBN(0x7dc3cf86, 0x556b0ba4), + TOBN(0x97af9a33, 0xc60df6f7), TOBN(0x0b1ef85c, 0xa716ce8c)}, + {TOBN(0x2922f884, 0xc96958be), TOBN(0x7c32fa94, 0x35690963), + TOBN(0x2d7f667c, 0xeaa00061), TOBN(0xeaaf7c17, 0x3547365c)}}, + {{TOBN(0x1eb4de46, 0x87032d58), TOBN(0xc54f3d83, 0x5e2c79e0), + TOBN(0x07818df4, 0x5d04ef23), TOBN(0x55faa9c8, 0x673d41b4)}, + {TOBN(0xced64f6f, 0x89b95355), TOBN(0x4860d2ea, 0xb7415c84), + TOBN(0x5fdb9bd2, 0x050ebad3), TOBN(0xdb53e0cc, 0x6685a5bf)}}, + {{TOBN(0xb830c031, 0x9feb6593), TOBN(0xdd87f310, 0x6accff17), + TOBN(0x2303ebab, 0x9f555c10), TOBN(0x94603695, 0x287e7065)}, + {TOBN(0xf88311c3, 0x2e83358c), TOBN(0x508dd9b4, 0xeefb0178), + TOBN(0x7ca23706, 0x2dba8652), TOBN(0x62aac5a3, 0x0047abe5)}}, + {{TOBN(0x9a61d2a0, 0x8b1ea7b3), TOBN(0xd495ab63, 0xae8b1485), + TOBN(0x38740f84, 0x87052f99), TOBN(0x178ebe5b, 0xb2974eea)}, + {TOBN(0x030bbcca, 0x5b36d17f), TOBN(0xb5e4cce3, 0xaaf86eea), + TOBN(0xb51a0220, 0x68f8e9e0), TOBN(0xa4348796, 0x09eb3e75)}}, + {{TOBN(0xbe592309, 0xeef1a752), TOBN(0x5d7162d7, 0x6f2aa1ed), + TOBN(0xaebfb5ed, 0x0f007dd2), TOBN(0x255e14b2, 0xc89edd22)}, + {TOBN(0xba85e072, 0x0303b697), TOBN(0xc5d17e25, 0xf05720ff), + TOBN(0x02b58d6e, 0x5128ebb6), TOBN(0x2c80242d, 0xd754e113)}}, + {{TOBN(0x919fca5f, 0xabfae1ca), TOBN(0x937afaac, 0x1a21459b), + TOBN(0x9e0ca91c, 0x1f66a4d2), TOBN(0x194cc7f3, 0x23ec1331)}, + {TOBN(0xad25143a, 0x8aa11690), TOBN(0xbe40ad8d, 0x09b59e08), + TOBN(0x37d60d9b, 0xe750860a), TOBN(0x6c53b008, 0xc6bf434c)}}, + {{TOBN(0xb572415d, 0x1356eb80), TOBN(0xb8bf9da3, 0x9578ded8), + TOBN(0x22658e36, 0x5e8fb38b), TOBN(0x9b70ce22, 0x5af8cb22)}, + {TOBN(0x7c00018a, 0x829a8180), TOBN(0x84329f93, 0xb81ed295), + TOBN(0x7c343ea2, 0x5f3cea83), TOBN(0x38f8655f, 0x67586536)}}, + {{TOBN(0xa661a0d0, 0x1d3ec517), TOBN(0x98744652, 0x512321ae), + TOBN(0x084ca591, 0xeca92598), TOBN(0xa9bb9dc9, 0x1dcb3feb)}, + {TOBN(0x14c54355, 0x78b4c240), TOBN(0x5ed62a3b, 0x610cafdc), + TOBN(0x07512f37, 0x1b38846b), TOBN(0x571bb70a, 0xb0e38161)}}, + {{TOBN(0xb556b95b, 0x2da705d2), TOBN(0x3ef8ada6, 0xb1a08f98), + TOBN(0x85302ca7, 0xddecfbe5), TOBN(0x0e530573, 0x943105cd)}, + {TOBN(0x60554d55, 0x21a9255d), TOBN(0x63a32fa1, 0xf2f3802a), + TOBN(0x35c8c5b0, 0xcd477875), TOBN(0x97f458ea, 0x6ad42da1)}}, + {{TOBN(0x832d7080, 0xeb6b242d), TOBN(0xd30bd023, 0x3b71e246), + TOBN(0x7027991b, 0xbe31139d), TOBN(0x68797e91, 0x462e4e53)}, + {TOBN(0x423fe20a, 0x6b4e185a), TOBN(0x82f2c67e, 0x42d9b707), + TOBN(0x25c81768, 0x4cf7811b), TOBN(0xbd53005e, 0x045bb95d)}}}, + {{{TOBN(0xe5f649be, 0x9d8e68fd), TOBN(0xdb0f0533, 0x1b044320), + TOBN(0xf6fde9b3, 0xe0c33398), TOBN(0x92f4209b, 0x66c8cfae)}, + {TOBN(0xe9d1afcc, 0x1a739d4b), TOBN(0x09aea75f, 0xa28ab8de), + TOBN(0x14375fb5, 0xeac6f1d0), TOBN(0x6420b560, 0x708f7aa5)}}, + {{TOBN(0x9eae499c, 0x6254dc41), TOBN(0x7e293924, 0x7a837e7e), + TOBN(0x74aec08c, 0x090524a7), TOBN(0xf82b9219, 0x8d6f55f2)}, + {TOBN(0x493c962e, 0x1402cec5), TOBN(0x9f17ca17, 0xfa2f30e7), + TOBN(0xbcd783e8, 0xe9b879cb), TOBN(0xea3d8c14, 0x5a6f145f)}}, + {{TOBN(0xdede15e7, 0x5e0dee6e), TOBN(0x74f24872, 0xdc628aa2), + TOBN(0xd3e9c4fe, 0x7861bb93), TOBN(0x56d4822a, 0x6187b2e0)}, + {TOBN(0xb66417cf, 0xc59826f9), TOBN(0xca260969, 0x2408169e), + TOBN(0xedf69d06, 0xc79ef885), TOBN(0x00031f8a, 0xdc7d138f)}}, + {{TOBN(0x103c46e6, 0x0ebcf726), TOBN(0x4482b831, 0x6231470e), + TOBN(0x6f6dfaca, 0x487c2109), TOBN(0x2e0ace97, 0x62e666ef)}, + {TOBN(0x3246a9d3, 0x1f8d1f42), TOBN(0x1b1e83f1, 0x574944d2), + TOBN(0x13dfa63a, 0xa57f334b), TOBN(0x0cf8daed, 0x9f025d81)}}, + {{TOBN(0x30d78ea8, 0x00ee11c1), TOBN(0xeb053cd4, 0xb5e3dd75), + TOBN(0x9b65b13e, 0xd58c43c5), TOBN(0xc3ad49bd, 0xbd151663)}, + {TOBN(0x99fd8e41, 0xb6427990), TOBN(0x12cf15bd, 0x707eae1e), + TOBN(0x29ad4f1b, 0x1aabb71e), TOBN(0x5143e74d, 0x07545d0e)}}, + {{TOBN(0x30266336, 0xc88bdee1), TOBN(0x25f29306, 0x5876767c), + TOBN(0x9c078571, 0xc6731996), TOBN(0xc88690b2, 0xed552951)}, + {TOBN(0x274f2c2d, 0x852705b4), TOBN(0xb0bf8d44, 0x4e09552d), + TOBN(0x7628beeb, 0x986575d1), TOBN(0x407be238, 0x7f864651)}}, + {{TOBN(0x0e5e3049, 0xa639fc6b), TOBN(0xe75c35d9, 0x86003625), + TOBN(0x0cf35bd8, 0x5dcc1646), TOBN(0x8bcaced2, 0x6c26273a)}, + {TOBN(0xe22ecf1d, 0xb5536742), TOBN(0x013dd897, 0x1a9e068b), + TOBN(0x17f411cb, 0x8a7909c5), TOBN(0x5757ac98, 0x861dd506)}}, + {{TOBN(0x85de1f0d, 0x1e935abb), TOBN(0xdefd10b4, 0x154de37a), + TOBN(0xb8d9e392, 0x369cebb5), TOBN(0x54d5ef9b, 0x761324be)}, + {TOBN(0x4d6341ba, 0x74f17e26), TOBN(0xc0a0e3c8, 0x78c1dde4), + TOBN(0xa6d77581, 0x87d918fd), TOBN(0x66876015, 0x02ca3a13)}}, + {{TOBN(0xc7313e9c, 0xf36658f0), TOBN(0xc433ef1c, 0x71f8057e), + TOBN(0x85326246, 0x1b6a835a), TOBN(0xc8f05398, 0x7c86394c)}, + {TOBN(0xff398cdf, 0xe983c4a1), TOBN(0xbf5e8162, 0x03b7b931), + TOBN(0x93193c46, 0xb7b9045b), TOBN(0x1e4ebf5d, 0xa4a6e46b)}}, + {{TOBN(0xf9942a60, 0x43a24fe7), TOBN(0x29c1191e, 0xffb3492b), + TOBN(0x9f662449, 0x902fde05), TOBN(0xc792a7ac, 0x6713c32d)}, + {TOBN(0x2fd88ad8, 0xb737982c), TOBN(0x7e3a0319, 0xa21e60e3), + TOBN(0x09b0de44, 0x7383591a), TOBN(0x6df141ee, 0x8310a456)}}, + {{TOBN(0xaec1a039, 0xe6d6f471), TOBN(0x14b2ba0f, 0x1198d12e), + TOBN(0xebc1a160, 0x3aeee5ac), TOBN(0x401f4836, 0xe0b964ce)}, + {TOBN(0x2ee43796, 0x4fd03f66), TOBN(0x3fdb4e49, 0xdd8f3f12), + TOBN(0x6ef267f6, 0x29380f18), TOBN(0x3e8e9670, 0x8da64d16)}}, + {{TOBN(0xbc19180c, 0x207674f1), TOBN(0x112e09a7, 0x33ae8fdb), + TOBN(0x99667554, 0x6aaeb71e), TOBN(0x79432af1, 0xe101b1c7)}, + {TOBN(0xd5eb558f, 0xde2ddec6), TOBN(0x81392d1f, 0x5357753f), + TOBN(0xa7a76b97, 0x3ae1158a), TOBN(0x416fbbff, 0x4a899991)}}, + {{TOBN(0x9e65fdfd, 0x0d4a9dcf), TOBN(0x7bc29e48, 0x944ddf12), + TOBN(0xbc1a92d9, 0x3c856866), TOBN(0x273c6905, 0x6e98dfe2)}, + {TOBN(0x69fce418, 0xcdfaa6b8), TOBN(0x606bd823, 0x5061c69f), + TOBN(0x42d495a0, 0x6af75e27), TOBN(0x8ed3d505, 0x6d873a1f)}}, + {{TOBN(0xaf552841, 0x6ab25b6a), TOBN(0xc6c0ffc7, 0x2b1a4523), + TOBN(0xab18827b, 0x21c99e03), TOBN(0x060e8648, 0x9034691b)}, + {TOBN(0x5207f90f, 0x93c7f398), TOBN(0x9f4a96cb, 0x82f8d10b), + TOBN(0xdd71cd79, 0x3ad0f9e3), TOBN(0x84f435d2, 0xfc3a54f5)}}, + {{TOBN(0x4b03c55b, 0x8e33787f), TOBN(0xef42f975, 0xa6384673), + TOBN(0xff7304f7, 0x5051b9f0), TOBN(0x18aca1dc, 0x741c87c2)}, + {TOBN(0x56f120a7, 0x2d4bfe80), TOBN(0xfd823b3d, 0x053e732c), + TOBN(0x11bccfe4, 0x7537ca16), TOBN(0xdf6c9c74, 0x1b5a996b)}}, + {{TOBN(0xee7332c7, 0x904fc3fa), TOBN(0x14a23f45, 0xc7e3636a), + TOBN(0xc38659c3, 0xf091d9aa), TOBN(0x4a995e5d, 0xb12d8540)}, + {TOBN(0x20a53bec, 0xf3a5598a), TOBN(0x56534b17, 0xb1eaa995), + TOBN(0x9ed3dca4, 0xbf04e03c), TOBN(0x716c563a, 0xd8d56268)}}, + {{TOBN(0x27ba77a4, 0x1d6178e7), TOBN(0xe4c80c40, 0x68a1ff8e), + TOBN(0x75011099, 0x0a13f63d), TOBN(0x7bf33521, 0xa61d46f3)}, + {TOBN(0x0aff218e, 0x10b365bb), TOBN(0x81021804, 0x0fd7ea75), + TOBN(0x05a3fd8a, 0xa4b3a925), TOBN(0xb829e75f, 0x9b3db4e6)}}, + {{TOBN(0x6bdc75a5, 0x4d53e5fb), TOBN(0x04a5dc02, 0xd52717e3), + TOBN(0x86af502f, 0xe9a42ec2), TOBN(0x8867e8fb, 0x2630e382)}, + {TOBN(0xbf845c6e, 0xbec9889b), TOBN(0x54f491f2, 0xcb47c98d), + TOBN(0xa3091fba, 0x790c2a12), TOBN(0xd7f6fd78, 0xc20f708b)}}, + {{TOBN(0xa569ac30, 0xacde5e17), TOBN(0xd0f996d0, 0x6852b4d7), + TOBN(0xe51d4bb5, 0x4609ae54), TOBN(0x3fa37d17, 0x0daed061)}, + {TOBN(0x62a88684, 0x34b8fb41), TOBN(0x99a2acbd, 0x9efb64f1), + TOBN(0xb75c1a5e, 0x6448e1f2), TOBN(0xfa99951a, 0x42b5a069)}}, + {{TOBN(0x6d956e89, 0x2f3b26e7), TOBN(0xf4709860, 0xda875247), + TOBN(0x3ad15179, 0x2482dda3), TOBN(0xd64110e3, 0x017d82f0)}, + {TOBN(0x14928d2c, 0xfad414e4), TOBN(0x2b155f58, 0x2ed02b24), + TOBN(0x481a141b, 0xcb821bf1), TOBN(0x12e3c770, 0x4f81f5da)}}, + {{TOBN(0xe49c5de5, 0x9fff8381), TOBN(0x11053232, 0x5bbec894), + TOBN(0xa0d051cc, 0x454d88c4), TOBN(0x4f6db89c, 0x1f8e531b)}, + {TOBN(0x34fe3fd6, 0xca563a44), TOBN(0x7f5c2215, 0x58da8ab9), + TOBN(0x8445016d, 0x9474f0a1), TOBN(0x17d34d61, 0xcb7d8a0a)}}, + {{TOBN(0x8e9d3910, 0x1c474019), TOBN(0xcaff2629, 0xd52ceefb), + TOBN(0xf9cf3e32, 0xc1622c2b), TOBN(0xd4b95e3c, 0xe9071a05)}, + {TOBN(0xfbbca61f, 0x1594438c), TOBN(0x1eb6e6a6, 0x04aadedf), + TOBN(0x853027f4, 0x68e14940), TOBN(0x221d322a, 0xdfabda9c)}}, + {{TOBN(0xed8ea9f6, 0xb7cb179a), TOBN(0xdc7b764d, 0xb7934dcc), + TOBN(0xfcb13940, 0x5e09180d), TOBN(0x6629a6bf, 0xb47dc2dd)}, + {TOBN(0xbfc55e4e, 0x9f5a915e), TOBN(0xb1db9d37, 0x6204441e), + TOBN(0xf82d68cf, 0x930c5f53), TOBN(0x17d3a142, 0xcbb605b1)}}, + {{TOBN(0xdd5944ea, 0x308780f2), TOBN(0xdc8de761, 0x3845f5e4), + TOBN(0x6beaba7d, 0x7624d7a3), TOBN(0x1e709afd, 0x304df11e)}, + {TOBN(0x95364376, 0x02170456), TOBN(0xbf204b3a, 0xc8f94b64), + TOBN(0x4e53af7c, 0x5680ca68), TOBN(0x0526074a, 0xe0c67574)}}, + {{TOBN(0x95d8cef8, 0xecd92af6), TOBN(0xe6b9fa7a, 0x6cd1745a), + TOBN(0x3d546d3d, 0xa325c3e4), TOBN(0x1f57691d, 0x9ae93aae)}, + {TOBN(0xe891f3fe, 0x9d2e1a33), TOBN(0xd430093f, 0xac063d35), + TOBN(0xeda59b12, 0x5513a327), TOBN(0xdc2134f3, 0x5536f18f)}}, + {{TOBN(0xaa51fe2c, 0x5c210286), TOBN(0x3f68aaee, 0x1cab658c), + TOBN(0x5a23a00b, 0xf9357292), TOBN(0x9a626f39, 0x7efdabed)}, + {TOBN(0xfe2b3bf3, 0x199d78e3), TOBN(0xb7a2af77, 0x71bbc345), + TOBN(0x3d19827a, 0x1e59802c), TOBN(0x823bbc15, 0xb487a51c)}}, + {{TOBN(0x856139f2, 0x99d0a422), TOBN(0x9ac3df65, 0xf456c6fb), + TOBN(0xaddf65c6, 0x701f8bd6), TOBN(0x149f321e, 0x3758df87)}, + {TOBN(0xb1ecf714, 0x721b7eba), TOBN(0xe17df098, 0x31a3312a), + TOBN(0xdb2fd6ec, 0xd5c4d581), TOBN(0xfd02996f, 0x8fcea1b3)}}, + {{TOBN(0xe29fa63e, 0x7882f14f), TOBN(0xc9f6dc35, 0x07c6cadc), + TOBN(0x46f22d6f, 0xb882bed0), TOBN(0x1a45755b, 0xd118e52c)}, + {TOBN(0x9f2c7c27, 0x7c4608cf), TOBN(0x7ccbdf32, 0x568012c2), + TOBN(0xfcb0aedd, 0x61729b0e), TOBN(0x7ca2ca9e, 0xf7d75dbf)}}, + {{TOBN(0xf58fecb1, 0x6f640f62), TOBN(0xe274b92b, 0x39f51946), + TOBN(0x7f4dfc04, 0x6288af44), TOBN(0x0a91f32a, 0xeac329e5)}, + {TOBN(0x43ad274b, 0xd6aaba31), TOBN(0x719a1640, 0x0f6884f9), + TOBN(0x685d29f6, 0xdaf91e20), TOBN(0x5ec1cc33, 0x27e49d52)}}, + {{TOBN(0x38f4de96, 0x3b54a059), TOBN(0x0e0015e5, 0xefbcfdb3), + TOBN(0x177d23d9, 0x4dbb8da6), TOBN(0x98724aa2, 0x97a617ad)}, + {TOBN(0x30f0885b, 0xfdb6558e), TOBN(0xf9f7a28a, 0xc7899a96), + TOBN(0xd2ae8ac8, 0x872dc112), TOBN(0xfa0642ca, 0x73c3c459)}}, + {{TOBN(0x15296981, 0xe7dfc8d6), TOBN(0x67cd4450, 0x1fb5b94a), + TOBN(0x0ec71cf1, 0x0eddfd37), TOBN(0xc7e5eeb3, 0x9a8eddc7)}, + {TOBN(0x02ac8e3d, 0x81d95028), TOBN(0x0088f172, 0x70b0e35d), + TOBN(0xec041fab, 0xe1881fe3), TOBN(0x62cf71b8, 0xd99e7faa)}}, + {{TOBN(0x5043dea7, 0xe0f222c2), TOBN(0x309d42ac, 0x72e65142), + TOBN(0x94fe9ddd, 0x9216cd30), TOBN(0xd6539c7d, 0x0f87feec)}, + {TOBN(0x03c5a57c, 0x432ac7d7), TOBN(0x72692cf0, 0x327fda10), + TOBN(0xec28c85f, 0x280698de), TOBN(0x2331fb46, 0x7ec283b1)}}, + {{TOBN(0xd34bfa32, 0x2867e633), TOBN(0x78709a82, 0x0a9cc815), + TOBN(0xb7fe6964, 0x875e2fa5), TOBN(0x25cc064f, 0x9e98bfb5)}, + {TOBN(0x9eb0151c, 0x493a65c5), TOBN(0x5fb5d941, 0x53182464), + TOBN(0x69e6f130, 0xf04618e2), TOBN(0xa8ecec22, 0xf89c8ab6)}}, + {{TOBN(0xcd6ac88b, 0xb96209bd), TOBN(0x65fa8cdb, 0xb3e1c9e0), + TOBN(0xa47d22f5, 0x4a8d8eac), TOBN(0x83895cdf, 0x8d33f963)}, + {TOBN(0xa8adca59, 0xb56cd3d1), TOBN(0x10c8350b, 0xdaf38232), + TOBN(0x2b161fb3, 0xa5080a9f), TOBN(0xbe7f5c64, 0x3af65b3a)}}, + {{TOBN(0x2c754039, 0x97403a11), TOBN(0x94626cf7, 0x121b96af), + TOBN(0x431de7c4, 0x6a983ec2), TOBN(0x3780dd3a, 0x52cc3df7)}, + {TOBN(0xe28a0e46, 0x2baf8e3b), TOBN(0xabe68aad, 0x51d299ae), + TOBN(0x603eb8f9, 0x647a2408), TOBN(0x14c61ed6, 0x5c750981)}}, + {{TOBN(0x88b34414, 0xc53352e7), TOBN(0x5a34889c, 0x1337d46e), + TOBN(0x612c1560, 0xf95f2bc8), TOBN(0x8a3f8441, 0xd4807a3a)}, + {TOBN(0x680d9e97, 0x5224da68), TOBN(0x60cd6e88, 0xc3eb00e9), + TOBN(0x3875a98e, 0x9a6bc375), TOBN(0xdc80f924, 0x4fd554c2)}}, + {{TOBN(0x6c4b3415, 0x6ac77407), TOBN(0xa1e5ea8f, 0x25420681), + TOBN(0x541bfa14, 0x4607a458), TOBN(0x5dbc7e7a, 0x96d7fbf9)}, + {TOBN(0x646a851b, 0x31590a47), TOBN(0x039e85ba, 0x15ee6df8), + TOBN(0xd19fa231, 0xd7b43fc0), TOBN(0x84bc8be8, 0x299a0e04)}}, + {{TOBN(0x2b9d2936, 0xf20df03a), TOBN(0x24054382, 0x8608d472), + TOBN(0x76b6ba04, 0x9149202a), TOBN(0xb21c3831, 0x3670e7b7)}, + {TOBN(0xddd93059, 0xd6fdee10), TOBN(0x9da47ad3, 0x78488e71), + TOBN(0x99cc1dfd, 0xa0fcfb25), TOBN(0x42abde10, 0x64696954)}}, + {{TOBN(0x14cc15fc, 0x17eab9fe), TOBN(0xd6e863e4, 0xd3e70972), + TOBN(0x29a7765c, 0x6432112c), TOBN(0x88660001, 0x5b0774d8)}, + {TOBN(0x3729175a, 0x2c088eae), TOBN(0x13afbcae, 0x8230b8d4), + TOBN(0x44768151, 0x915f4379), TOBN(0xf086431a, 0xd8d22812)}}, + {{TOBN(0x37461955, 0xc298b974), TOBN(0x905fb5f0, 0xf8711e04), + TOBN(0x787abf3a, 0xfe969d18), TOBN(0x392167c2, 0x6f6a494e)}, + {TOBN(0xfc7a0d2d, 0x28c511da), TOBN(0xf127c7dc, 0xb66a262d), + TOBN(0xf9c4bb95, 0xfd63fdf0), TOBN(0x90016589, 0x3913ef46)}}, + {{TOBN(0x74d2a73c, 0x11aa600d), TOBN(0x2f5379bd, 0x9fb5ab52), + TOBN(0xe49e53a4, 0x7fb70068), TOBN(0x68dd39e5, 0x404aa9a7)}, + {TOBN(0xb9b0cf57, 0x2ecaa9c3), TOBN(0xba0e103b, 0xe824826b), + TOBN(0x60c2198b, 0x4631a3c4), TOBN(0xc5ff84ab, 0xfa8966a2)}}, + {{TOBN(0x2d6ebe22, 0xac95aff8), TOBN(0x1c9bb6db, 0xb5a46d09), + TOBN(0x419062da, 0x53ee4f8d), TOBN(0x7b9042d0, 0xbb97efef)}, + {TOBN(0x0f87f080, 0x830cf6bd), TOBN(0x4861d19a, 0x6ec8a6c6), + TOBN(0xd3a0daa1, 0x202f01aa), TOBN(0xb0111674, 0xf25afbd5)}}, + {{TOBN(0x6d00d6cf, 0x1afb20d9), TOBN(0x13695000, 0x40671bc5), + TOBN(0x913ab0dc, 0x2485ea9b), TOBN(0x1f2bed06, 0x9eef61ac)}, + {TOBN(0x850c8217, 0x6d799e20), TOBN(0x93415f37, 0x3271c2de), + TOBN(0x5afb06e9, 0x6c4f5910), TOBN(0x688a52df, 0xc4e9e421)}}, + {{TOBN(0x30495ba3, 0xe2a9a6db), TOBN(0x4601303d, 0x58f9268b), + TOBN(0xbe3b0dad, 0x7eb0f04f), TOBN(0x4ea47250, 0x4456936d)}, + {TOBN(0x8caf8798, 0xd33fd3e7), TOBN(0x1ccd8a89, 0xeb433708), + TOBN(0x9effe3e8, 0x87fd50ad), TOBN(0xbe240a56, 0x6b29c4df)}}, + {{TOBN(0xec4ffd98, 0xca0e7ebd), TOBN(0xf586783a, 0xe748616e), + TOBN(0xa5b00d8f, 0xc77baa99), TOBN(0x0acada29, 0xb4f34c9c)}, + {TOBN(0x36dad67d, 0x0fe723ac), TOBN(0x1d8e53a5, 0x39c36c1e), + TOBN(0xe4dd342d, 0x1f4bea41), TOBN(0x64fd5e35, 0xebc9e4e0)}}, + {{TOBN(0x96f01f90, 0x57908805), TOBN(0xb5b9ea3d, 0x5ed480dd), + TOBN(0x366c5dc2, 0x3efd2dd0), TOBN(0xed2fe305, 0x6e9dfa27)}, + {TOBN(0x4575e892, 0x6e9197e2), TOBN(0x11719c09, 0xab502a5d), + TOBN(0x264c7bec, 0xe81f213f), TOBN(0x741b9241, 0x55f5c457)}}, + {{TOBN(0x78ac7b68, 0x49a5f4f4), TOBN(0xf91d70a2, 0x9fc45b7d), + TOBN(0x39b05544, 0xb0f5f355), TOBN(0x11f06bce, 0xeef930d9)}, + {TOBN(0xdb84d25d, 0x038d05e1), TOBN(0x04838ee5, 0xbacc1d51), + TOBN(0x9da3ce86, 0x9e8ee00b), TOBN(0xc3412057, 0xc36eda1f)}}, + {{TOBN(0xae80b913, 0x64d9c2f4), TOBN(0x7468bac3, 0xa010a8ff), + TOBN(0xdfd20037, 0x37359d41), TOBN(0x1a0f5ab8, 0x15efeacc)}, + {TOBN(0x7c25ad2f, 0x659d0ce0), TOBN(0x4011bcbb, 0x6785cff1), + TOBN(0x128b9912, 0x7e2192c7), TOBN(0xa549d8e1, 0x13ccb0e8)}}, + {{TOBN(0x805588d8, 0xc85438b1), TOBN(0x5680332d, 0xbc25cb27), + TOBN(0xdcd1bc96, 0x1a4bfdf4), TOBN(0x779ff428, 0x706f6566)}, + {TOBN(0x8bbee998, 0xf059987a), TOBN(0xf6ce8cf2, 0xcc686de7), + TOBN(0xf8ad3c4a, 0x953cfdb2), TOBN(0xd1d426d9, 0x2205da36)}}, + {{TOBN(0xb3c0f13f, 0xc781a241), TOBN(0x3e89360e, 0xd75362a8), + TOBN(0xccd05863, 0xc8a91184), TOBN(0x9bd0c9b7, 0xefa8a7f4)}, + {TOBN(0x97ee4d53, 0x8a912a4b), TOBN(0xde5e15f8, 0xbcf518fd), + TOBN(0x6a055bf8, 0xc467e1e0), TOBN(0x10be4b4b, 0x1587e256)}}, + {{TOBN(0xd90c14f2, 0x668621c9), TOBN(0xd5518f51, 0xab9c92c1), + TOBN(0x8e6a0100, 0xd6d47b3c), TOBN(0xcbe980dd, 0x66716175)}, + {TOBN(0x500d3f10, 0xddd83683), TOBN(0x3b6cb35d, 0x99cac73c), + TOBN(0x53730c8b, 0x6083d550), TOBN(0xcf159767, 0xdf0a1987)}}, + {{TOBN(0x84bfcf53, 0x43ad73b3), TOBN(0x1b528c20, 0x4f035a94), + TOBN(0x4294edf7, 0x33eeac69), TOBN(0xb6283e83, 0x817f3240)}, + {TOBN(0xc3fdc959, 0x0a5f25b1), TOBN(0xefaf8aa5, 0x5844ee22), + TOBN(0xde269ba5, 0xdbdde4de), TOBN(0xe3347160, 0xc56133bf)}}, + {{TOBN(0xc1184219, 0x8d9ea9f8), TOBN(0x090de5db, 0xf3fc1ab5), + TOBN(0x404c37b1, 0x0bf22cda), TOBN(0x7de20ec8, 0xf5618894)}, + {TOBN(0x754c588e, 0xecdaecab), TOBN(0x6ca4b0ed, 0x88342743), + TOBN(0x76f08bdd, 0xf4a938ec), TOBN(0xd182de89, 0x91493ccb)}}, + {{TOBN(0xd652c53e, 0xc8a4186a), TOBN(0xb3e878db, 0x946d8e33), + TOBN(0x088453c0, 0x5f37663c), TOBN(0x5cd9daaa, 0xb407748b)}, + {TOBN(0xa1f5197f, 0x586d5e72), TOBN(0x47500be8, 0xc443ca59), + TOBN(0x78ef35b2, 0xe2652424), TOBN(0x09c5d26f, 0x6dd7767d)}}, + {{TOBN(0x7175a79a, 0xa74d3f7b), TOBN(0x0428fd8d, 0xcf5ea459), + TOBN(0x511cb97c, 0xa5d1746d), TOBN(0x36363939, 0xe71d1278)}, + {TOBN(0xcf2df955, 0x10350bf4), TOBN(0xb3817439, 0x60aae782), + TOBN(0xa748c0e4, 0x3e688809), TOBN(0x98021fbf, 0xd7a5a006)}}, + {{TOBN(0x9076a70c, 0x0e367a98), TOBN(0xbea1bc15, 0x0f62b7c2), + TOBN(0x2645a68c, 0x30fe0343), TOBN(0xacaffa78, 0x699dc14f)}, + {TOBN(0xf4469964, 0x457bf9c4), TOBN(0x0db6407b, 0x0d2ead83), + TOBN(0x68d56cad, 0xb2c6f3eb), TOBN(0x3b512e73, 0xf376356c)}}, + {{TOBN(0xe43b0e1f, 0xfce10408), TOBN(0x89ddc003, 0x5a5e257d), + TOBN(0xb0ae0d12, 0x0362e5b3), TOBN(0x07f983c7, 0xb0519161)}, + {TOBN(0xc2e94d15, 0x5d5231e7), TOBN(0xcff22aed, 0x0b4f9513), + TOBN(0xb02588dd, 0x6ad0b0b5), TOBN(0xb967d1ac, 0x11d0dcd5)}}, + {{TOBN(0x8dac6bc6, 0xcf777b6c), TOBN(0x0062bdbd, 0x4c6d1959), + TOBN(0x53da71b5, 0x0ef5cc85), TOBN(0x07012c7d, 0x4006f14f)}, + {TOBN(0x4617f962, 0xac47800d), TOBN(0x53365f2b, 0xc102ed75), + TOBN(0xb422efcb, 0x4ab8c9d3), TOBN(0x195cb26b, 0x34af31c9)}}, + {{TOBN(0x3a926e29, 0x05f2c4ce), TOBN(0xbd2bdecb, 0x9856966c), + TOBN(0x5d16ab3a, 0x85527015), TOBN(0x9f81609e, 0x4486c231)}, + {TOBN(0xd8b96b2c, 0xda350002), TOBN(0xbd054690, 0xfa1b7d36), + TOBN(0xdc90ebf5, 0xe71d79bc), TOBN(0xf241b6f9, 0x08964e4e)}}, + {{TOBN(0x7c838643, 0x2fe3cd4c), TOBN(0xe0f33acb, 0xb4bc633c), + TOBN(0xb4a9ecec, 0x3d139f1f), TOBN(0x05ce69cd, 0xdc4a1f49)}, + {TOBN(0xa19d1b16, 0xf5f98aaf), TOBN(0x45bb71d6, 0x6f23e0ef), + TOBN(0x33789fcd, 0x46cdfdd3), TOBN(0x9b8e2978, 0xcee040ca)}}, + {{TOBN(0x9c69b246, 0xae0a6828), TOBN(0xba533d24, 0x7078d5aa), + TOBN(0x7a2e42c0, 0x7bb4fbdb), TOBN(0xcfb4879a, 0x7035385c)}, + {TOBN(0x8c3dd30b, 0x3281705b), TOBN(0x7e361c6c, 0x404fe081), + TOBN(0x7b21649c, 0x3f604edf), TOBN(0x5dbf6a3f, 0xe52ffe47)}}, + {{TOBN(0xc41b7c23, 0x4b54d9bf), TOBN(0x1374e681, 0x3511c3d9), + TOBN(0x1863bf16, 0xc1b2b758), TOBN(0x90e78507, 0x1e9e6a96)}, + {TOBN(0xab4bf98d, 0x5d86f174), TOBN(0xd74e0bd3, 0x85e96fe4), + TOBN(0x8afde39f, 0xcac5d344), TOBN(0x90946dbc, 0xbd91b847)}}, + {{TOBN(0xf5b42358, 0xfe1a838c), TOBN(0x05aae6c5, 0x620ac9d8), + TOBN(0x8e193bd8, 0xa1ce5a0b), TOBN(0x8f710571, 0x4dabfd72)}, + {TOBN(0x8d8fdd48, 0x182caaac), TOBN(0x8c4aeefa, 0x040745cf), + TOBN(0x73c6c30a, 0xf3b93e6d), TOBN(0x991241f3, 0x16f42011)}}, + {{TOBN(0xa0158eea, 0xe457a477), TOBN(0xd19857db, 0xee6ddc05), + TOBN(0xb3265224, 0x18c41671), TOBN(0x3ffdfc7e, 0x3c2c0d58)}, + {TOBN(0x3a3a5254, 0x26ee7cda), TOBN(0x341b0869, 0xdf02c3a8), + TOBN(0xa023bf42, 0x723bbfc8), TOBN(0x3d15002a, 0x14452691)}}}, + {{{TOBN(0x5ef7324c, 0x85edfa30), TOBN(0x25976554, 0x87d4f3da), + TOBN(0x352f5bc0, 0xdcb50c86), TOBN(0x8f6927b0, 0x4832a96c)}, + {TOBN(0xd08ee1ba, 0x55f2f94c), TOBN(0x6a996f99, 0x344b45fa), + TOBN(0xe133cb8d, 0xa8aa455d), TOBN(0x5d0721ec, 0x758dc1f7)}}, + {{TOBN(0x6ba7a920, 0x79e5fb67), TOBN(0xe1331feb, 0x70aa725e), + TOBN(0x5080ccf5, 0x7df5d837), TOBN(0xe4cae01d, 0x7ff72e21)}, + {TOBN(0xd9243ee6, 0x0412a77d), TOBN(0x06ff7cac, 0xdf449025), + TOBN(0xbe75f7cd, 0x23ef5a31), TOBN(0xbc957822, 0x0ddef7a8)}}, + {{TOBN(0x8cf7230c, 0xb0ce1c55), TOBN(0x5b534d05, 0x0bbfb607), + TOBN(0xee1ef113, 0x0e16363b), TOBN(0x27e0aa7a, 0xb4999e82)}, + {TOBN(0xce1dac2d, 0x79362c41), TOBN(0x67920c90, 0x91bb6cb0), + TOBN(0x1e648d63, 0x2223df24), TOBN(0x0f7d9eef, 0xe32e8f28)}}, + {{TOBN(0x6943f39a, 0xfa833834), TOBN(0x22951722, 0xa6328562), + TOBN(0x81d63dd5, 0x4170fc10), TOBN(0x9f5fa58f, 0xaecc2e6d)}, + {TOBN(0xb66c8725, 0xe77d9a3b), TOBN(0x11235cea, 0x6384ebe0), + TOBN(0x06a8c118, 0x5845e24a), TOBN(0x0137b286, 0xebd093b1)}}, + {{TOBN(0xc589e1ce, 0x44ace150), TOBN(0xe0f8d3d9, 0x4381e97c), + TOBN(0x59e99b11, 0x62c5a4b8), TOBN(0x90d262f7, 0xfd0ec9f9)}, + {TOBN(0xfbc854c9, 0x283e13c9), TOBN(0x2d04fde7, 0xaedc7085), + TOBN(0x057d7765, 0x47dcbecb), TOBN(0x8dbdf591, 0x9a76fa5f)}}, + {{TOBN(0xd0150695, 0x0de1e578), TOBN(0x2e1463e7, 0xe9f72bc6), + TOBN(0xffa68441, 0x1b39eca5), TOBN(0x673c8530, 0x7c037f2f)}, + {TOBN(0xd0d6a600, 0x747f91da), TOBN(0xb08d43e1, 0xc9cb78e9), + TOBN(0x0fc0c644, 0x27b5cef5), TOBN(0x5c1d160a, 0xa60a2fd6)}}, + {{TOBN(0xf98cae53, 0x28c8e13b), TOBN(0x375f10c4, 0xb2eddcd1), + TOBN(0xd4eb8b7f, 0x5cce06ad), TOBN(0xb4669f45, 0x80a2e1ef)}, + {TOBN(0xd593f9d0, 0x5bbd8699), TOBN(0x5528a4c9, 0xe7976d13), + TOBN(0x3923e095, 0x1c7e28d3), TOBN(0xb9293790, 0x3f6bb577)}}, + {{TOBN(0xdb567d6a, 0xc42bd6d2), TOBN(0x6df86468, 0xbb1f96ae), + TOBN(0x0efe5b1a, 0x4843b28e), TOBN(0x961bbb05, 0x6379b240)}, + {TOBN(0xb6caf5f0, 0x70a6a26b), TOBN(0x70686c0d, 0x328e6e39), + TOBN(0x80da06cf, 0x895fc8d3), TOBN(0x804d8810, 0xb363fdc9)}}, + {{TOBN(0xbe22877b, 0x207f1670), TOBN(0x9b0dd188, 0x4e615291), + TOBN(0x625ae8dc, 0x97a3c2bf), TOBN(0x08584ef7, 0x439b86e8)}, + {TOBN(0xde7190a5, 0xdcd898ff), TOBN(0x26286c40, 0x2058ee3d), + TOBN(0x3db0b217, 0x5f87b1c1), TOBN(0xcc334771, 0x102a6db5)}}, + {{TOBN(0xd99de954, 0x2f770fb1), TOBN(0x97c1c620, 0x4cd7535e), + TOBN(0xd3b6c448, 0x3f09cefc), TOBN(0xd725af15, 0x5a63b4f8)}, + {TOBN(0x0c95d24f, 0xc01e20ec), TOBN(0xdfd37494, 0x9ae7121f), + TOBN(0x7d6ddb72, 0xec77b7ec), TOBN(0xfe079d3b, 0x0353a4ae)}}, + {{TOBN(0x3066e70a, 0x2e6ac8d2), TOBN(0x9c6b5a43, 0x106e5c05), + TOBN(0x52d3c6f5, 0xede59b8c), TOBN(0x30d6a5c3, 0xfccec9ae)}, + {TOBN(0xedec7c22, 0x4fc0a9ef), TOBN(0x190ff083, 0x95c16ced), + TOBN(0xbe12ec8f, 0x94de0fde), TOBN(0x0d131ab8, 0x852d3433)}}, + {{TOBN(0x42ace07e, 0x85701291), TOBN(0x94793ed9, 0x194061a8), + TOBN(0x30e83ed6, 0xd7f4a485), TOBN(0x9eec7269, 0xf9eeff4d)}, + {TOBN(0x90acba59, 0x0c9d8005), TOBN(0x5feca458, 0x1e79b9d1), + TOBN(0x8fbe5427, 0x1d506a1e), TOBN(0xa32b2c8e, 0x2439cfa7)}}, + {{TOBN(0x1671c173, 0x73dd0b4e), TOBN(0x37a28214, 0x44a054c6), + TOBN(0x81760a1b, 0x4e8b53f1), TOBN(0xa6c04224, 0xf9f93b9e)}, + {TOBN(0x18784b34, 0xcf671e3c), TOBN(0x81bbecd2, 0xcda9b994), + TOBN(0x38831979, 0xb2ab3848), TOBN(0xef54feb7, 0xf2e03c2d)}}, + {{TOBN(0xcf197ca7, 0xfb8088fa), TOBN(0x01427247, 0x4ddc96c5), + TOBN(0xa2d2550a, 0x30777176), TOBN(0x53469898, 0x4d0cf71d)}, + {TOBN(0x6ce937b8, 0x3a2aaac6), TOBN(0xe9f91dc3, 0x5af38d9b), + TOBN(0x2598ad83, 0xc8bf2899), TOBN(0x8e706ac9, 0xb5536c16)}}, + {{TOBN(0x40dc7495, 0xf688dc98), TOBN(0x26490cd7, 0x124c4afc), + TOBN(0xe651ec84, 0x1f18775c), TOBN(0x393ea6c3, 0xb4fdaf4a)}, + {TOBN(0x1e1f3343, 0x7f338e0d), TOBN(0x39fb832b, 0x6053e7b5), + TOBN(0x46e702da, 0x619e14d5), TOBN(0x859cacd1, 0xcdeef6e0)}}, + {{TOBN(0x63b99ce7, 0x4462007d), TOBN(0xb8ab48a5, 0x4cb5f5b7), + TOBN(0x9ec673d2, 0xf55edde7), TOBN(0xd1567f74, 0x8cfaefda)}, + {TOBN(0x46381b6b, 0x0887bcec), TOBN(0x694497ce, 0xe178f3c2), + TOBN(0x5e6525e3, 0x1e6266cb), TOBN(0x5931de26, 0x697d6413)}}, + {{TOBN(0x87f8df7c, 0x0e58d493), TOBN(0xb1ae5ed0, 0x58b73f12), + TOBN(0xc368f784, 0xdea0c34d), TOBN(0x9bd0a120, 0x859a91a0)}, + {TOBN(0xb00d88b7, 0xcc863c68), TOBN(0x3a1cc11e, 0x3d1f4d65), + TOBN(0xea38e0e7, 0x0aa85593), TOBN(0x37f13e98, 0x7dc4aee8)}}, + {{TOBN(0x10d38667, 0xbc947bad), TOBN(0x738e07ce, 0x2a36ee2e), + TOBN(0xc93470cd, 0xc577fcac), TOBN(0xdee1b616, 0x2782470d)}, + {TOBN(0x36a25e67, 0x2e793d12), TOBN(0xd6aa6cae, 0xe0f186da), + TOBN(0x474d0fd9, 0x80e07af7), TOBN(0xf7cdc47d, 0xba8a5cd4)}}, + {{TOBN(0x28af6d9d, 0xab15247f), TOBN(0x7c789c10, 0x493a537f), + TOBN(0x7ac9b110, 0x23a334e7), TOBN(0x0236ac09, 0x12c9c277)}, + {TOBN(0xa7e5bd25, 0x1d7a5144), TOBN(0x098b9c2a, 0xf13ec4ec), + TOBN(0x3639daca, 0xd3f0abca), TOBN(0x642da81a, 0xa23960f9)}}, + {{TOBN(0x7d2e5c05, 0x4f7269b1), TOBN(0xfcf30777, 0xe287c385), + TOBN(0x10edc84f, 0xf2a46f21), TOBN(0x35441757, 0x4f43fa36)}, + {TOBN(0xf1327899, 0xfd703431), TOBN(0xa438d7a6, 0x16dd587a), + TOBN(0x65c34c57, 0xe9c8352d), TOBN(0xa728edab, 0x5cc5a24e)}}, + {{TOBN(0xaed78abc, 0x42531689), TOBN(0x0a51a0e8, 0x010963ef), + TOBN(0x5776fa0a, 0xd717d9b3), TOBN(0xf356c239, 0x7dd3428b)}, + {TOBN(0x29903fff, 0x8d3a3dac), TOBN(0x409597fa, 0x3d94491f), + TOBN(0x4cd7a5ff, 0xbf4a56a4), TOBN(0xe5096474, 0x8adab462)}}, + {{TOBN(0xa97b5126, 0x5c3427b0), TOBN(0x6401405c, 0xd282c9bd), + TOBN(0x3629f8d7, 0x222c5c45), TOBN(0xb1c02c16, 0xe8d50aed)}, + {TOBN(0xbea2ed75, 0xd9635bc9), TOBN(0x226790c7, 0x6e24552f), + TOBN(0x3c33f2a3, 0x65f1d066), TOBN(0x2a43463e, 0x6dfccc2e)}}, + {{TOBN(0x8cc3453a, 0xdb483761), TOBN(0xe7cc6085, 0x65d5672b), + TOBN(0x277ed6cb, 0xde3efc87), TOBN(0x19f2f368, 0x69234eaf)}, + {TOBN(0x9aaf4317, 0x5c0b800b), TOBN(0x1f1e7c89, 0x8b6da6e2), + TOBN(0x6cfb4715, 0xb94ec75e), TOBN(0xd590dd5f, 0x453118c2)}}, + {{TOBN(0x14e49da1, 0x1f17a34c), TOBN(0x5420ab39, 0x235a1456), + TOBN(0xb7637241, 0x2f50363b), TOBN(0x7b15d623, 0xc3fabb6e)}, + {TOBN(0xa0ef40b1, 0xe274e49c), TOBN(0x5cf50744, 0x96b1860a), + TOBN(0xd6583fbf, 0x66afe5a4), TOBN(0x44240510, 0xf47e3e9a)}}, + {{TOBN(0x99254343, 0x11b2d595), TOBN(0xf1367499, 0xeec8df57), + TOBN(0x3cb12c61, 0x3e73dd05), TOBN(0xd248c033, 0x7dac102a)}, + {TOBN(0xcf154f13, 0xa77739f5), TOBN(0xbf4288cb, 0x23d2af42), + TOBN(0xaa64c9b6, 0x32e4a1cf), TOBN(0xee8c07a8, 0xc8a208f3)}}, + {{TOBN(0xe10d4999, 0x6fe8393f), TOBN(0x0f809a3f, 0xe91f3a32), + TOBN(0x61096d1c, 0x802f63c8), TOBN(0x289e1462, 0x57750d3d)}, + {TOBN(0xed06167e, 0x9889feea), TOBN(0xd5c9c0e2, 0xe0993909), + TOBN(0x46fca0d8, 0x56508ac6), TOBN(0x91826047, 0x4f1b8e83)}}, + {{TOBN(0x4f2c877a, 0x9a4a2751), TOBN(0x71bd0072, 0xcae6fead), + TOBN(0x38df8dcc, 0x06aa1941), TOBN(0x5a074b4c, 0x63beeaa8)}, + {TOBN(0xd6d65934, 0xc1cec8ed), TOBN(0xa6ecb49e, 0xaabc03bd), + TOBN(0xaade91c2, 0xde8a8415), TOBN(0xcfb0efdf, 0x691136e0)}}, + {{TOBN(0x11af45ee, 0x23ab3495), TOBN(0xa132df88, 0x0b77463d), + TOBN(0x8923c15c, 0x815d06f4), TOBN(0xc3ceb3f5, 0x0d61a436)}, + {TOBN(0xaf52291d, 0xe88fb1da), TOBN(0xea057974, 0x1da12179), + TOBN(0xb0d7218c, 0xd2fef720), TOBN(0x6c0899c9, 0x8e1d8845)}}, + {{TOBN(0x98157504, 0x752ddad7), TOBN(0xd60bd74f, 0xa1a68a97), + TOBN(0x7047a3a9, 0xf658fb99), TOBN(0x1f5d86d6, 0x5f8511e4)}, + {TOBN(0xb8a4bc42, 0x4b5a6d88), TOBN(0x69eb2c33, 0x1abefa7d), + TOBN(0x95bf39e8, 0x13c9c510), TOBN(0xf571960a, 0xd48aab43)}}, + {{TOBN(0x7e8cfbcf, 0x704e23c6), TOBN(0xc71b7d22, 0x28aaa65b), + TOBN(0xa041b2bd, 0x245e3c83), TOBN(0x69b98834, 0xd21854ff)}, + {TOBN(0x89d227a3, 0x963bfeec), TOBN(0x99947aaa, 0xde7da7cb), + TOBN(0x1d9ee9db, 0xee68a9b1), TOBN(0x0a08f003, 0x698ec368)}}, + {{TOBN(0xe9ea4094, 0x78ef2487), TOBN(0xc8d2d415, 0x02cfec26), + TOBN(0xc52f9a6e, 0xb7dcf328), TOBN(0x0ed489e3, 0x85b6a937)}, + {TOBN(0x9b94986b, 0xbef3366e), TOBN(0x0de59c70, 0xedddddb8), + TOBN(0xffdb748c, 0xeadddbe2), TOBN(0x9b9784bb, 0x8266ea40)}}, + {{TOBN(0x142b5502, 0x1a93507a), TOBN(0xb4cd1187, 0x8d3c06cf), + TOBN(0xdf70e76a, 0x91ec3f40), TOBN(0x484e81ad, 0x4e7553c2)}, + {TOBN(0x830f87b5, 0x272e9d6e), TOBN(0xea1c93e5, 0xc6ff514a), + TOBN(0x67cc2adc, 0xc4192a8e), TOBN(0xc77e27e2, 0x42f4535a)}}, + {{TOBN(0x9cdbab36, 0xd2b713c5), TOBN(0x86274ea0, 0xcf7b0cd3), + TOBN(0x784680f3, 0x09af826b), TOBN(0xbfcc837a, 0x0c72dea3)}, + {TOBN(0xa8bdfe9d, 0xd6529b73), TOBN(0x708aa228, 0x63a88002), + TOBN(0x6c7a9a54, 0xc91d45b9), TOBN(0xdf1a38bb, 0xfd004f56)}}, + {{TOBN(0x2e8c9a26, 0xb8bad853), TOBN(0x2d52cea3, 0x3723eae7), + TOBN(0x054d6d81, 0x56ca2830), TOBN(0xa3317d14, 0x9a8dc411)}, + {TOBN(0xa08662fe, 0xfd4ddeda), TOBN(0xed2a153a, 0xb55d792b), + TOBN(0x7035c16a, 0xbfc6e944), TOBN(0xb6bc5834, 0x00171cf3)}}, + {{TOBN(0xe27152b3, 0x83d102b6), TOBN(0xfe695a47, 0x0646b848), + TOBN(0xa5bb09d8, 0x916e6d37), TOBN(0xb4269d64, 0x0d17015e)}, + {TOBN(0x8d8156a1, 0x0a1d2285), TOBN(0xfeef6c51, 0x46d26d72), + TOBN(0x9dac57c8, 0x4c5434a7), TOBN(0x0282e5be, 0x59d39e31)}}, + {{TOBN(0xedfff181, 0x721c486d), TOBN(0x301baf10, 0xbc58824e), + TOBN(0x8136a6aa, 0x00570031), TOBN(0x55aaf78c, 0x1cddde68)}, + {TOBN(0x26829371, 0x59c63952), TOBN(0x3a3bd274, 0x8bc25baf), + TOBN(0xecdf8657, 0xb7e52dc3), TOBN(0x2dd8c087, 0xfd78e6c8)}}, + {{TOBN(0x20553274, 0xf5531461), TOBN(0x8b4a1281, 0x5d95499b), + TOBN(0xe2c8763a, 0x1a80f9d2), TOBN(0xd1dbe32b, 0x4ddec758)}, + {TOBN(0xaf12210d, 0x30c34169), TOBN(0xba74a953, 0x78baa533), + TOBN(0x3d133c6e, 0xa438f254), TOBN(0xa431531a, 0x201bef5b)}}, + {{TOBN(0x15295e22, 0xf669d7ec), TOBN(0xca374f64, 0x357fb515), + TOBN(0x8a8406ff, 0xeaa3fdb3), TOBN(0x106ae448, 0xdf3f2da8)}, + {TOBN(0x8f9b0a90, 0x33c8e9a1), TOBN(0x234645e2, 0x71ad5885), + TOBN(0x3d083224, 0x1c0aed14), TOBN(0xf10a7d3e, 0x7a942d46)}}, + {{TOBN(0x7c11deee, 0x40d5c9be), TOBN(0xb2bae7ff, 0xba84ed98), + TOBN(0x93e97139, 0xaad58ddd), TOBN(0x3d872796, 0x3f6d1fa3)}, + {TOBN(0x483aca81, 0x8569ff13), TOBN(0x8b89a5fb, 0x9a600f72), + TOBN(0x4cbc27c3, 0xc06f2b86), TOBN(0x22130713, 0x63ad9c0b)}}, + {{TOBN(0xb5358b1e, 0x48ac2840), TOBN(0x18311294, 0xecba9477), + TOBN(0xda58f990, 0xa6946b43), TOBN(0x3098baf9, 0x9ab41819)}, + {TOBN(0x66c4c158, 0x4198da52), TOBN(0xab4fc17c, 0x146bfd1b), + TOBN(0x2f0a4c3c, 0xbf36a908), TOBN(0x2ae9e34b, 0x58cf7838)}}, + {{TOBN(0xf411529e, 0x3fa11b1f), TOBN(0x21e43677, 0x974af2b4), + TOBN(0x7c20958e, 0xc230793b), TOBN(0x710ea885, 0x16e840f3)}, + {TOBN(0xfc0b21fc, 0xc5dc67cf), TOBN(0x08d51647, 0x88405718), + TOBN(0xd955c21f, 0xcfe49eb7), TOBN(0x9722a5d5, 0x56dd4a1f)}}, + {{TOBN(0xc9ef50e2, 0xc861baa5), TOBN(0xc0c21a5d, 0x9505ac3e), + TOBN(0xaf6b9a33, 0x8b7c063f), TOBN(0xc6370339, 0x2f4779c1)}, + {TOBN(0x22df99c7, 0x638167c3), TOBN(0xfe6ffe76, 0x795db30c), + TOBN(0x2b822d33, 0xa4854989), TOBN(0xfef031dd, 0x30563aa5)}}, + {{TOBN(0x16b09f82, 0xd57c667f), TOBN(0xc70312ce, 0xcc0b76f1), + TOBN(0xbf04a9e6, 0xc9118aec), TOBN(0x82fcb419, 0x3409d133)}, + {TOBN(0x1a8ab385, 0xab45d44d), TOBN(0xfba07222, 0x617b83a3), + TOBN(0xb05f50dd, 0x58e81b52), TOBN(0x1d8db553, 0x21ce5aff)}}, + {{TOBN(0x3097b8d4, 0xe344a873), TOBN(0x7d8d116d, 0xfe36d53e), + TOBN(0x6db22f58, 0x7875e750), TOBN(0x2dc5e373, 0x43e144ea)}, + {TOBN(0xc05f32e6, 0xe799eb95), TOBN(0xe9e5f4df, 0x6899e6ec), + TOBN(0xbdc3bd68, 0x1fab23d5), TOBN(0xb72b8ab7, 0x73af60e6)}}, + {{TOBN(0x8db27ae0, 0x2cecc84a), TOBN(0x600016d8, 0x7bdb871c), + TOBN(0x42a44b13, 0xd7c46f58), TOBN(0xb8919727, 0xc3a77d39)}, + {TOBN(0xcfc6bbbd, 0xdafd6088), TOBN(0x1a740146, 0x6bd20d39), + TOBN(0x8c747abd, 0x98c41072), TOBN(0x4c91e765, 0xbdf68ea1)}}, + {{TOBN(0x7c95e5ca, 0x08819a78), TOBN(0xcf48b729, 0xc9587921), + TOBN(0x091c7c5f, 0xdebbcc7d), TOBN(0x6f287404, 0xf0e05149)}, + {TOBN(0xf83b5ac2, 0x26cd44ec), TOBN(0x88ae32a6, 0xcfea250e), + TOBN(0x6ac5047a, 0x1d06ebc5), TOBN(0xc7e550b4, 0xd434f781)}}, + {{TOBN(0x61ab1cf2, 0x5c727bd2), TOBN(0x2e4badb1, 0x1cf915b0), + TOBN(0x1b4dadec, 0xf69d3920), TOBN(0xe61b1ca6, 0xf14c1dfe)}, + {TOBN(0x90b479cc, 0xbd6bd51f), TOBN(0x8024e401, 0x8045ec30), + TOBN(0xcab29ca3, 0x25ef0e62), TOBN(0x4f2e9416, 0x49e4ebc0)}}, + {{TOBN(0x45eb40ec, 0x0ccced58), TOBN(0x25cd4b9c, 0x0da44f98), + TOBN(0x43e06458, 0x871812c6), TOBN(0x99f80d55, 0x16cef651)}, + {TOBN(0x571340c9, 0xce6dc153), TOBN(0x138d5117, 0xd8665521), + TOBN(0xacdb45bc, 0x4e07014d), TOBN(0x2f34bb38, 0x84b60b91)}}, + {{TOBN(0xf44a4fd2, 0x2ae8921e), TOBN(0xb039288e, 0x892ba1e2), + TOBN(0x9da50174, 0xb1c180b2), TOBN(0x6b70ab66, 0x1693dc87)}, + {TOBN(0x7e9babc9, 0xe7057481), TOBN(0x4581ddef, 0x9c80dc41), + TOBN(0x0c890da9, 0x51294682), TOBN(0x0b5629d3, 0x3f4736e5)}}, + {{TOBN(0x2340c79e, 0xb06f5b41), TOBN(0xa42e84ce, 0x4e243469), + TOBN(0xf9a20135, 0x045a71a9), TOBN(0xefbfb415, 0xd27b6fb6)}, + {TOBN(0x25ebea23, 0x9d33cd6f), TOBN(0x9caedb88, 0xaa6c0af8), + TOBN(0x53dc7e9a, 0xd9ce6f96), TOBN(0x3897f9fd, 0x51e0b15a)}}, + {{TOBN(0xf51cb1f8, 0x8e5d788e), TOBN(0x1aec7ba8, 0xe1d490ee), + TOBN(0x265991e0, 0xcc58cb3c), TOBN(0x9f306e8c, 0x9fc3ad31)}, + {TOBN(0x5fed006e, 0x5040a0ac), TOBN(0xca9d5043, 0xfb476f2e), + TOBN(0xa19c06e8, 0xbeea7a23), TOBN(0xd2865801, 0x0edabb63)}}, + {{TOBN(0xdb92293f, 0x6967469a), TOBN(0x2894d839, 0x8d8a8ed8), + TOBN(0x87c9e406, 0xbbc77122), TOBN(0x8671c6f1, 0x2ea3a26a)}, + {TOBN(0xe42df8d6, 0xd7de9853), TOBN(0x2e3ce346, 0xb1f2bcc7), + TOBN(0xda601dfc, 0x899d50cf), TOBN(0xbfc913de, 0xfb1b598f)}}, + {{TOBN(0x81c4909f, 0xe61f7908), TOBN(0x192e304f, 0x9bbc7b29), + TOBN(0xc3ed8738, 0xc104b338), TOBN(0xedbe9e47, 0x783f5d61)}, + {TOBN(0x0c06e9be, 0x2db30660), TOBN(0xda3e613f, 0xc0eb7d8e), + TOBN(0xd8fa3e97, 0x322e096e), TOBN(0xfebd91e8, 0xd336e247)}}, + {{TOBN(0x8f13ccc4, 0xdf655a49), TOBN(0xa9e00dfc, 0x5eb20210), + TOBN(0x84631d0f, 0xc656b6ea), TOBN(0x93a058cd, 0xd8c0d947)}, + {TOBN(0x6846904a, 0x67bd3448), TOBN(0x4a3d4e1a, 0xf394fd5c), + TOBN(0xc102c1a5, 0xdb225f52), TOBN(0xe3455bba, 0xfc4f5e9a)}}, + {{TOBN(0x6b36985b, 0x4b9ad1ce), TOBN(0xa9818536, 0x5bb7f793), + TOBN(0x6c25e1d0, 0x48b1a416), TOBN(0x1381dd53, 0x3c81bee7)}, + {TOBN(0xd2a30d61, 0x7a4a7620), TOBN(0xc8412926, 0x39b8944c), + TOBN(0x3c1c6fbe, 0x7a97c33a), TOBN(0x941e541d, 0x938664e7)}}, + {{TOBN(0x417499e8, 0x4a34f239), TOBN(0x15fdb83c, 0xb90402d5), + TOBN(0xb75f46bf, 0x433aa832), TOBN(0xb61e15af, 0x63215db1)}, + {TOBN(0xaabe59d4, 0xa127f89a), TOBN(0x5d541e0c, 0x07e816da), + TOBN(0xaaba0659, 0xa618b692), TOBN(0x55327733, 0x17266026)}}, + {{TOBN(0xaf53a0fc, 0x95f57552), TOBN(0x32947650, 0x6cacb0c9), + TOBN(0x253ff58d, 0xc821be01), TOBN(0xb0309531, 0xa06f1146)}, + {TOBN(0x59bbbdf5, 0x05c2e54d), TOBN(0x158f27ad, 0x26e8dd22), + TOBN(0xcc5b7ffb, 0x397e1e53), TOBN(0xae03f65b, 0x7fc1e50d)}}, + {{TOBN(0xa9784ebd, 0x9c95f0f9), TOBN(0x5ed9deb2, 0x24640771), + TOBN(0x31244af7, 0x035561c4), TOBN(0x87332f3a, 0x7ee857de)}, + {TOBN(0x09e16e9e, 0x2b9e0d88), TOBN(0x52d910f4, 0x56a06049), + TOBN(0x507ed477, 0xa9592f48), TOBN(0x85cb917b, 0x2365d678)}}, + {{TOBN(0xf8511c93, 0x4c8998d1), TOBN(0x2186a3f1, 0x730ea58f), + TOBN(0x50189626, 0xb2029db0), TOBN(0x9137a6d9, 0x02ceb75a)}, + {TOBN(0x2fe17f37, 0x748bc82c), TOBN(0x87c2e931, 0x80469f8c), + TOBN(0x850f71cd, 0xbf891aa2), TOBN(0x0ca1b89b, 0x75ec3d8d)}}, + {{TOBN(0x516c43aa, 0x5e1cd3cd), TOBN(0x89397808, 0x9a887c28), + TOBN(0x0059c699, 0xddea1f9f), TOBN(0x7737d6fa, 0x8e6868f7)}, + {TOBN(0x6d93746a, 0x60f1524b), TOBN(0x36985e55, 0xba052aa7), + TOBN(0x41b1d322, 0xed923ea5), TOBN(0x3429759f, 0x25852a11)}}, + {{TOBN(0xbeca6ec3, 0x092e9f41), TOBN(0x3a238c66, 0x62256bbd), + TOBN(0xd82958ea, 0x70ad487d), TOBN(0x4ac8aaf9, 0x65610d93)}, + {TOBN(0x3fa101b1, 0x5e4ccab0), TOBN(0x9bf430f2, 0x9de14bfb), + TOBN(0xa10f5cc6, 0x6531899d), TOBN(0x590005fb, 0xea8ce17d)}}, + {{TOBN(0xc437912f, 0x24544cb6), TOBN(0x9987b71a, 0xd79ac2e3), + TOBN(0x13e3d9dd, 0xc058a212), TOBN(0x00075aac, 0xd2de9606)}, + {TOBN(0x80ab508b, 0x6cac8369), TOBN(0x87842be7, 0xf54f6c89), + TOBN(0xa7ad663d, 0x6bc532a4), TOBN(0x67813de7, 0x78a91bc8)}}, + {{TOBN(0x5dcb61ce, 0xc3427239), TOBN(0x5f3c7cf0, 0xc56934d9), + TOBN(0xc079e0fb, 0xe3191591), TOBN(0xe40896bd, 0xb01aada7)}, + {TOBN(0x8d466791, 0x0492d25f), TOBN(0x8aeb30c9, 0xe7408276), + TOBN(0xe9437495, 0x9287aacc), TOBN(0x23d4708d, 0x79fe03d4)}}, + {{TOBN(0x8cda9cf2, 0xd0c05199), TOBN(0x502fbc22, 0xfae78454), + TOBN(0xc0bda9df, 0xf572a182), TOBN(0x5f9b71b8, 0x6158b372)}, + {TOBN(0xe0f33a59, 0x2b82dd07), TOBN(0x76302735, 0x9523032e), + TOBN(0x7fe1a721, 0xc4505a32), TOBN(0x7b6e3e82, 0xf796409f)}}}, + {{{TOBN(0xe3417bc0, 0x35d0b34a), TOBN(0x440b386b, 0x8327c0a7), + TOBN(0x8fb7262d, 0xac0362d1), TOBN(0x2c41114c, 0xe0cdf943)}, + {TOBN(0x2ba5cef1, 0xad95a0b1), TOBN(0xc09b37a8, 0x67d54362), + TOBN(0x26d6cdd2, 0x01e486c9), TOBN(0x20477abf, 0x42ff9297)}}, + {{TOBN(0xa004dcb3, 0x292a9287), TOBN(0xddc15cf6, 0x77b092c7), + TOBN(0x083a8464, 0x806c0605), TOBN(0x4a68df70, 0x3db997b0)}, + {TOBN(0x9c134e45, 0x05bf7dd0), TOBN(0xa4e63d39, 0x8ccf7f8c), + TOBN(0xa6e6517f, 0x41b5f8af), TOBN(0xaa8b9342, 0xad7bc1cc)}}, + {{TOBN(0x126f35b5, 0x1e706ad9), TOBN(0xb99cebb4, 0xc3a9ebdf), + TOBN(0xa75389af, 0xbf608d90), TOBN(0x76113c4f, 0xc6c89858)}, + {TOBN(0x80de8eb0, 0x97e2b5aa), TOBN(0x7e1022cc, 0x63b91304), + TOBN(0x3bdab605, 0x6ccc066c), TOBN(0x33cbb144, 0xb2edf900)}}, + {{TOBN(0xc4176471, 0x7af715d2), TOBN(0xe2f7f594, 0xd0134a96), + TOBN(0x2c1873ef, 0xa41ec956), TOBN(0xe4e7b4f6, 0x77821304)}, + {TOBN(0xe5c8ff97, 0x88d5374a), TOBN(0x2b915e63, 0x80823d5b), + TOBN(0xea6bc755, 0xb2ee8fe2), TOBN(0x6657624c, 0xe7112651)}}, + {{TOBN(0x157af101, 0xdace5aca), TOBN(0xc4fdbcf2, 0x11a6a267), + TOBN(0xdaddf340, 0xc49c8609), TOBN(0x97e49f52, 0xe9604a65)}, + {TOBN(0x9be8e790, 0x937e2ad5), TOBN(0x846e2508, 0x326e17f1), + TOBN(0x3f38007a, 0x0bbbc0dc), TOBN(0xcf03603f, 0xb11e16d6)}}, + {{TOBN(0xd6f800e0, 0x7442f1d5), TOBN(0x475607d1, 0x66e0e3ab), + TOBN(0x82807f16, 0xb7c64047), TOBN(0x8858e1e3, 0xa749883d)}, + {TOBN(0x5859120b, 0x8231ee10), TOBN(0x1b80e7eb, 0x638a1ece), + TOBN(0xcb72525a, 0xc6aa73a4), TOBN(0xa7cdea3d, 0x844423ac)}}, + {{TOBN(0x5ed0c007, 0xf8ae7c38), TOBN(0x6db07a5c, 0x3d740192), + TOBN(0xbe5e9c2a, 0x5fe36db3), TOBN(0xd5b9d57a, 0x76e95046)}, + {TOBN(0x54ac32e7, 0x8eba20f2), TOBN(0xef11ca8f, 0x71b9a352), + TOBN(0x305e373e, 0xff98a658), TOBN(0xffe5a100, 0x823eb667)}}, + {{TOBN(0x57477b11, 0xe51732d2), TOBN(0xdfd6eb28, 0x2538fc0e), + TOBN(0x5c43b0cc, 0x3b39eec5), TOBN(0x6af12778, 0xcb36cc57)}, + {TOBN(0x70b0852d, 0x06c425ae), TOBN(0x6df92f8c, 0x5c221b9b), + TOBN(0x6c8d4f9e, 0xce826d9c), TOBN(0xf59aba7b, 0xb49359c3)}}, + {{TOBN(0x5c8ed8d5, 0xda64309d), TOBN(0x61a6de56, 0x91b30704), + TOBN(0xd6b52f6a, 0x2f9b5808), TOBN(0x0eee4194, 0x98c958a7)}, + {TOBN(0xcddd9aab, 0x771e4caa), TOBN(0x83965dfd, 0x78bc21be), + TOBN(0x02affce3, 0xb3b504f5), TOBN(0x30847a21, 0x561c8291)}}, + {{TOBN(0xd2eb2cf1, 0x52bfda05), TOBN(0xe0e4c4e9, 0x6197b98c), + TOBN(0x1d35076c, 0xf8a1726f), TOBN(0x6c06085b, 0x2db11e3d)}, + {TOBN(0x15c0c4d7, 0x4463ba14), TOBN(0x9d292f83, 0x0030238c), + TOBN(0x1311ee8b, 0x3727536d), TOBN(0xfeea86ef, 0xbeaedc1e)}}, + {{TOBN(0xb9d18cd3, 0x66131e2e), TOBN(0xf31d974f, 0x80fe2682), + TOBN(0xb6e49e0f, 0xe4160289), TOBN(0x7c48ec0b, 0x08e92799)}, + {TOBN(0x818111d8, 0xd1989aa7), TOBN(0xb34fa0aa, 0xebf926f9), + TOBN(0xdb5fe2f5, 0xa245474a), TOBN(0xf80a6ebb, 0x3c7ca756)}}, + {{TOBN(0xa7f96054, 0xafa05dd8), TOBN(0x26dfcf21, 0xfcaf119e), + TOBN(0xe20ef2e3, 0x0564bb59), TOBN(0xef4dca50, 0x61cb02b8)}, + {TOBN(0xcda7838a, 0x65d30672), TOBN(0x8b08d534, 0xfd657e86), + TOBN(0x4c5b4395, 0x46d595c8), TOBN(0x39b58725, 0x425cb836)}}, + {{TOBN(0x8ea61059, 0x3de9abe3), TOBN(0x40434881, 0x9cdc03be), + TOBN(0x9b261245, 0xcfedce8c), TOBN(0x78c318b4, 0xcf5234a1)}, + {TOBN(0x510bcf16, 0xfde24c99), TOBN(0x2a77cb75, 0xa2c2ff5d), + TOBN(0x9c895c2b, 0x27960fb4), TOBN(0xd30ce975, 0xb0eda42b)}}, + {{TOBN(0xfda85393, 0x1a62cc26), TOBN(0x23c69b96, 0x50c0e052), + TOBN(0xa227df15, 0xbfc633f3), TOBN(0x2ac78848, 0x1bae7d48)}, + {TOBN(0x487878f9, 0x187d073d), TOBN(0x6c2be919, 0x967f807d), + TOBN(0x765861d8, 0x336e6d8f), TOBN(0x88b8974c, 0xce528a43)}}, + {{TOBN(0x09521177, 0xff57d051), TOBN(0x2ff38037, 0xfb6a1961), + TOBN(0xfc0aba74, 0xa3d76ad4), TOBN(0x7c764803, 0x25a7ec17)}, + {TOBN(0x7532d75f, 0x48879bc8), TOBN(0xea7eacc0, 0x58ce6bc1), + TOBN(0xc82176b4, 0x8e896c16), TOBN(0x9a30e0b2, 0x2c750fed)}}, + {{TOBN(0xc37e2c2e, 0x421d3aa4), TOBN(0xf926407c, 0xe84fa840), + TOBN(0x18abc03d, 0x1454e41c), TOBN(0x26605ecd, 0x3f7af644)}, + {TOBN(0x242341a6, 0xd6a5eabf), TOBN(0x1edb84f4, 0x216b668e), + TOBN(0xd836edb8, 0x04010102), TOBN(0x5b337ce7, 0x945e1d8c)}}, + {{TOBN(0xd2075c77, 0xc055dc14), TOBN(0x2a0ffa25, 0x81d89cdf), + TOBN(0x8ce815ea, 0x6ffdcbaf), TOBN(0xa3428878, 0xfb648867)}, + {TOBN(0x277699cf, 0x884655fb), TOBN(0xfa5b5bd6, 0x364d3e41), + TOBN(0x01f680c6, 0x441e1cb7), TOBN(0x3fd61e66, 0xb70a7d67)}}, + {{TOBN(0x666ba2dc, 0xcc78cf66), TOBN(0xb3018174, 0x6fdbff77), + TOBN(0x8d4dd0db, 0x168d4668), TOBN(0x259455d0, 0x1dab3a2a)}, + {TOBN(0xf58564c5, 0xcde3acec), TOBN(0x77141925, 0x13adb276), + TOBN(0x527d725d, 0x8a303f65), TOBN(0x55deb6c9, 0xe6f38f7b)}}, + {{TOBN(0xfd5bb657, 0xb1fa70fb), TOBN(0xfa07f50f, 0xd8073a00), + TOBN(0xf72e3aa7, 0xbca02500), TOBN(0xf68f895d, 0x9975740d)}, + {TOBN(0x30112060, 0x5cae2a6a), TOBN(0x01bd7218, 0x02874842), + TOBN(0x3d423891, 0x7ce47bd3), TOBN(0xa66663c1, 0x789544f6)}}, + {{TOBN(0x864d05d7, 0x3272d838), TOBN(0xe22924f9, 0xfa6295c5), + TOBN(0x8189593f, 0x6c2fda32), TOBN(0x330d7189, 0xb184b544)}, + {TOBN(0x79efa62c, 0xbde1f714), TOBN(0x35771c94, 0xe5cb1a63), + TOBN(0x2f4826b8, 0x641c8332), TOBN(0x00a894fb, 0xc8cee854)}}, + {{TOBN(0xb4b9a39b, 0x36194d40), TOBN(0xe857a7c5, 0x77612601), + TOBN(0xf4209dd2, 0x4ecf2f58), TOBN(0x82b9e66d, 0x5a033487)}, + {TOBN(0xc1e36934, 0xe4e8b9dd), TOBN(0xd2372c9d, 0xa42377d7), + TOBN(0x51dc94c7, 0x0e3ae43b), TOBN(0x4c57761e, 0x04474f6f)}}, + {{TOBN(0xdcdacd0a, 0x1058a318), TOBN(0x369cf3f5, 0x78053a9a), + TOBN(0xc6c3de50, 0x31c68de2), TOBN(0x4653a576, 0x3c4b6d9f)}, + {TOBN(0x1688dd5a, 0xaa4e5c97), TOBN(0x5be80aa1, 0xb7ab3c74), + TOBN(0x70cefe7c, 0xbc65c283), TOBN(0x57f95f13, 0x06867091)}}, + {{TOBN(0xa39114e2, 0x4415503b), TOBN(0xc08ff7c6, 0x4cbb17e9), + TOBN(0x1eff674d, 0xd7dec966), TOBN(0x6d4690af, 0x53376f63)}, + {TOBN(0xff6fe32e, 0xea74237b), TOBN(0xc436d17e, 0xcd57508e), + TOBN(0x15aa28e1, 0xedcc40fe), TOBN(0x0d769c04, 0x581bbb44)}}, + {{TOBN(0xc240b6de, 0x34eaacda), TOBN(0xd9e116e8, 0x2ba0f1de), + TOBN(0xcbe45ec7, 0x79438e55), TOBN(0x91787c9d, 0x96f752d7)}, + {TOBN(0x897f532b, 0xf129ac2f), TOBN(0xd307b7c8, 0x5a36e22c), + TOBN(0x91940675, 0x749fb8f3), TOBN(0xd14f95d0, 0x157fdb28)}}, + {{TOBN(0xfe51d029, 0x6ae55043), TOBN(0x8931e98f, 0x44a87de1), + TOBN(0xe57f1cc6, 0x09e4fee2), TOBN(0x0d063b67, 0x4e072d92)}, + {TOBN(0x70a998b9, 0xed0e4316), TOBN(0xe74a736b, 0x306aca46), + TOBN(0xecf0fbf2, 0x4fda97c7), TOBN(0xa40f65cb, 0x3e178d93)}}, + {{TOBN(0x16253604, 0x16df4285), TOBN(0xb0c9babb, 0xd0c56ae2), + TOBN(0x73032b19, 0xcfc5cfc3), TOBN(0xe497e5c3, 0x09752056)}, + {TOBN(0x12096bb4, 0x164bda96), TOBN(0x1ee42419, 0xa0b74da1), + TOBN(0x8fc36243, 0x403826ba), TOBN(0x0c8f0069, 0xdc09e660)}}, + {{TOBN(0x8667e981, 0xc27253c9), TOBN(0x05a6aefb, 0x92b36a45), + TOBN(0xa62c4b36, 0x9cb7bb46), TOBN(0x8394f375, 0x11f7027b)}, + {TOBN(0x747bc79c, 0x5f109d0f), TOBN(0xcad88a76, 0x5b8cc60a), + TOBN(0x80c5a66b, 0x58f09e68), TOBN(0xe753d451, 0xf6127eac)}}, + {{TOBN(0xc44b74a1, 0x5b0ec6f5), TOBN(0x47989fe4, 0x5289b2b8), + TOBN(0x745f8484, 0x58d6fc73), TOBN(0xec362a6f, 0xf61c70ab)}, + {TOBN(0x070c98a7, 0xb3a8ad41), TOBN(0x73a20fc0, 0x7b63db51), + TOBN(0xed2c2173, 0xf44c35f4), TOBN(0x8a56149d, 0x9acc9dca)}}, + {{TOBN(0x98f17881, 0x9ac6e0f4), TOBN(0x360fdeaf, 0xa413b5ed), + TOBN(0x0625b8f4, 0xa300b0fd), TOBN(0xf1f4d76a, 0x5b3222d3)}, + {TOBN(0x9d6f5109, 0x587f76b8), TOBN(0x8b4ee08d, 0x2317fdb5), + TOBN(0x88089bb7, 0x8c68b095), TOBN(0x95570e9a, 0x5808d9b9)}}, + {{TOBN(0xa395c36f, 0x35d33ae7), TOBN(0x200ea123, 0x50bb5a94), + TOBN(0x20c789bd, 0x0bafe84b), TOBN(0x243ef52d, 0x0919276a)}, + {TOBN(0x3934c577, 0xe23ae233), TOBN(0xb93807af, 0xa460d1ec), + TOBN(0xb72a53b1, 0xf8fa76a4), TOBN(0xd8914cb0, 0xc3ca4491)}}, + {{TOBN(0x2e128494, 0x3fb42622), TOBN(0x3b2700ac, 0x500907d5), + TOBN(0xf370fb09, 0x1a95ec63), TOBN(0xf8f30be2, 0x31b6dfbd)}, + {TOBN(0xf2b2f8d2, 0x69e55f15), TOBN(0x1fead851, 0xcc1323e9), + TOBN(0xfa366010, 0xd9e5eef6), TOBN(0x64d487b0, 0xe316107e)}}, + {{TOBN(0x4c076b86, 0xd23ddc82), TOBN(0x03fd344c, 0x7e0143f0), + TOBN(0xa95362ff, 0x317af2c5), TOBN(0x0add3db7, 0xe18b7a4f)}, + {TOBN(0x9c673e3f, 0x8260e01b), TOBN(0xfbeb49e5, 0x54a1cc91), + TOBN(0x91351bf2, 0x92f2e433), TOBN(0xc755e7ec, 0x851141eb)}}, + {{TOBN(0xc9a95139, 0x29607745), TOBN(0x0ca07420, 0xa26f2b28), + TOBN(0xcb2790e7, 0x4bc6f9dd), TOBN(0x345bbb58, 0xadcaffc0)}, + {TOBN(0xc65ea38c, 0xbe0f27a2), TOBN(0x67c24d7c, 0x641fcb56), + TOBN(0x2c25f0a7, 0xa9e2c757), TOBN(0x93f5cdb0, 0x16f16c49)}}, + {{TOBN(0x2ca5a9d7, 0xc5ee30a1), TOBN(0xd1593635, 0xb909b729), + TOBN(0x804ce9f3, 0xdadeff48), TOBN(0xec464751, 0xb07c30c3)}, + {TOBN(0x89d65ff3, 0x9e49af6a), TOBN(0xf2d6238a, 0x6f3d01bc), + TOBN(0x1095561e, 0x0bced843), TOBN(0x51789e12, 0xc8a13fd8)}}, + {{TOBN(0xd633f929, 0x763231df), TOBN(0x46df9f7d, 0xe7cbddef), + TOBN(0x01c889c0, 0xcb265da8), TOBN(0xfce1ad10, 0xaf4336d2)}, + {TOBN(0x8d110df6, 0xfc6a0a7e), TOBN(0xdd431b98, 0x6da425dc), + TOBN(0xcdc4aeab, 0x1834aabe), TOBN(0x84deb124, 0x8439b7fc)}}, + {{TOBN(0x8796f169, 0x3c2a5998), TOBN(0x9b9247b4, 0x7947190d), + TOBN(0x55b9d9a5, 0x11597014), TOBN(0x7e9dd70d, 0x7b1566ee)}, + {TOBN(0x94ad78f7, 0xcbcd5e64), TOBN(0x0359ac17, 0x9bd4c032), + TOBN(0x3b11baaf, 0x7cc222ae), TOBN(0xa6a6e284, 0xba78e812)}}, + {{TOBN(0x8392053f, 0x24cea1a0), TOBN(0xc97bce4a, 0x33621491), + TOBN(0x7eb1db34, 0x35399ee9), TOBN(0x473f78ef, 0xece81ad1)}, + {TOBN(0x41d72fe0, 0xf63d3d0d), TOBN(0xe620b880, 0xafab62fc), + TOBN(0x92096bc9, 0x93158383), TOBN(0x41a21357, 0x8f896f6c)}}, + {{TOBN(0x1b5ee2fa, 0xc7dcfcab), TOBN(0x650acfde, 0x9546e007), + TOBN(0xc081b749, 0xb1b02e07), TOBN(0xda9e41a0, 0xf9eca03d)}, + {TOBN(0x013ba727, 0x175a54ab), TOBN(0xca0cd190, 0xea5d8d10), + TOBN(0x85ea52c0, 0x95fd96a9), TOBN(0x2c591b9f, 0xbc5c3940)}}, + {{TOBN(0x6fb4d4e4, 0x2bad4d5f), TOBN(0xfa4c3590, 0xfef0059b), + TOBN(0x6a10218a, 0xf5122294), TOBN(0x9a78a81a, 0xa85751d1)}, + {TOBN(0x04f20579, 0xa98e84e7), TOBN(0xfe1242c0, 0x4997e5b5), + TOBN(0xe77a273b, 0xca21e1e4), TOBN(0xfcc8b1ef, 0x9411939d)}}, + {{TOBN(0xe20ea302, 0x92d0487a), TOBN(0x1442dbec, 0x294b91fe), + TOBN(0x1f7a4afe, 0xbb6b0e8f), TOBN(0x1700ef74, 0x6889c318)}, + {TOBN(0xf5bbffc3, 0x70f1fc62), TOBN(0x3b31d4b6, 0x69c79cca), + TOBN(0xe8bc2aab, 0xa7f6340d), TOBN(0xb0b08ab4, 0xa725e10a)}}, + {{TOBN(0x44f05701, 0xae340050), TOBN(0xba4b3016, 0x1cf0c569), + TOBN(0x5aa29f83, 0xfbe19a51), TOBN(0x1b9ed428, 0xb71d752e)}, + {TOBN(0x1666e54e, 0xeb4819f5), TOBN(0x616cdfed, 0x9e18b75b), + TOBN(0x112ed5be, 0x3ee27b0b), TOBN(0xfbf28319, 0x44c7de4d)}}, + {{TOBN(0xd685ec85, 0xe0e60d84), TOBN(0x68037e30, 0x1db7ee78), + TOBN(0x5b65bdcd, 0x003c4d6e), TOBN(0x33e7363a, 0x93e29a6a)}, + {TOBN(0x995b3a61, 0x08d0756c), TOBN(0xd727f85c, 0x2faf134b), + TOBN(0xfac6edf7, 0x1d337823), TOBN(0x99b9aa50, 0x0439b8b4)}}, + {{TOBN(0x722eb104, 0xe2b4e075), TOBN(0x49987295, 0x437c4926), + TOBN(0xb1e4c0e4, 0x46a9b82d), TOBN(0xd0cb3197, 0x57a006f5)}, + {TOBN(0xf3de0f7d, 0xd7808c56), TOBN(0xb5c54d8f, 0x51f89772), + TOBN(0x500a114a, 0xadbd31aa), TOBN(0x9afaaaa6, 0x295f6cab)}}, + {{TOBN(0x94705e21, 0x04cf667a), TOBN(0xfc2a811b, 0x9d3935d7), + TOBN(0x560b0280, 0x6d09267c), TOBN(0xf19ed119, 0xf780e53b)}, + {TOBN(0xf0227c09, 0x067b6269), TOBN(0x967b8533, 0x5caef599), + TOBN(0x155b9243, 0x68efeebc), TOBN(0xcd6d34f5, 0xc497bae6)}}, + {{TOBN(0x1dd8d5d3, 0x6cceb370), TOBN(0x2aeac579, 0xa78d7bf9), + TOBN(0x5d65017d, 0x70b67a62), TOBN(0x70c8e44f, 0x17c53f67)}, + {TOBN(0xd1fc0950, 0x86a34d09), TOBN(0xe0fca256, 0xe7134907), + TOBN(0xe24fa29c, 0x80fdd315), TOBN(0x2c4acd03, 0xd87499ad)}}, + {{TOBN(0xbaaf7517, 0x3b5a9ba6), TOBN(0xb9cbe1f6, 0x12e51a51), + TOBN(0xd88edae3, 0x5e154897), TOBN(0xe4309c3c, 0x77b66ca0)}, + {TOBN(0xf5555805, 0xf67f3746), TOBN(0x85fc37ba, 0xa36401ff), + TOBN(0xdf86e2ca, 0xd9499a53), TOBN(0x6270b2a3, 0xecbc955b)}}, + {{TOBN(0xafae64f5, 0x974ad33b), TOBN(0x04d85977, 0xfe7b2df1), + TOBN(0x2a3db3ff, 0x4ab03f73), TOBN(0x0b87878a, 0x8702740a)}, + {TOBN(0x6d263f01, 0x5a061732), TOBN(0xc25430ce, 0xa32a1901), + TOBN(0xf7ebab3d, 0xdb155018), TOBN(0x3a86f693, 0x63a9b78e)}}, + {{TOBN(0x349ae368, 0xda9f3804), TOBN(0x470f07fe, 0xa164349c), + TOBN(0xd52f4cc9, 0x8562baa5), TOBN(0xc74a9e86, 0x2b290df3)}, + {TOBN(0xd3a1aa35, 0x43471a24), TOBN(0x239446be, 0xb8194511), + TOBN(0xbec2dd00, 0x81dcd44d), TOBN(0xca3d7f0f, 0xc42ac82d)}}, + {{TOBN(0x1f3db085, 0xfdaf4520), TOBN(0xbb6d3e80, 0x4549daf2), + TOBN(0xf5969d8a, 0x19ad5c42), TOBN(0x7052b13d, 0xdbfd1511)}, + {TOBN(0x11890d1b, 0x682b9060), TOBN(0xa71d3883, 0xac34452c), + TOBN(0xa438055b, 0x783805b4), TOBN(0x43241277, 0x4725b23e)}}, + {{TOBN(0xf20cf96e, 0x4901bbed), TOBN(0x6419c710, 0xf432a2bb), + TOBN(0x57a0fbb9, 0xdfa9cd7d), TOBN(0x589111e4, 0x00daa249)}, + {TOBN(0x19809a33, 0x7b60554e), TOBN(0xea5f8887, 0xede283a4), + TOBN(0x2d713802, 0x503bfd35), TOBN(0x151bb0af, 0x585d2a53)}}, + {{TOBN(0x40b08f74, 0x43b30ca8), TOBN(0xe10b5bba, 0xd9934583), + TOBN(0xe8a546d6, 0xb51110ad), TOBN(0x1dd50e66, 0x28e0b6c5)}, + {TOBN(0x292e9d54, 0xcff2b821), TOBN(0x3882555d, 0x47281760), + TOBN(0x134838f8, 0x3724d6e3), TOBN(0xf2c679e0, 0x22ddcda1)}}, + {{TOBN(0x40ee8815, 0x6d2a5768), TOBN(0x7f227bd2, 0x1c1e7e2d), + TOBN(0x487ba134, 0xd04ff443), TOBN(0x76e2ff3d, 0xc614e54b)}, + {TOBN(0x36b88d6f, 0xa3177ec7), TOBN(0xbf731d51, 0x2328fff5), + TOBN(0x758caea2, 0x49ba158e), TOBN(0x5ab8ff4c, 0x02938188)}}, + {{TOBN(0x33e16056, 0x35edc56d), TOBN(0x5a69d349, 0x7e940d79), + TOBN(0x6c4fd001, 0x03866dcb), TOBN(0x20a38f57, 0x4893cdef)}, + {TOBN(0xfbf3e790, 0xfac3a15b), TOBN(0x6ed7ea2e, 0x7a4f8e6b), + TOBN(0xa663eb4f, 0xbc3aca86), TOBN(0x22061ea5, 0x080d53f7)}}, + {{TOBN(0x2480dfe6, 0xf546783f), TOBN(0xd38bc6da, 0x5a0a641e), + TOBN(0xfb093cd1, 0x2ede8965), TOBN(0x89654db4, 0xacb455cf)}, + {TOBN(0x413cbf9a, 0x26e1adee), TOBN(0x291f3764, 0x373294d4), + TOBN(0x00797257, 0x648083fe), TOBN(0x25f504d3, 0x208cc341)}}, + {{TOBN(0x635a8e5e, 0xc3a0ee43), TOBN(0x70aaebca, 0x679898ff), + TOBN(0x9ee9f547, 0x5dc63d56), TOBN(0xce987966, 0xffb34d00)}, + {TOBN(0xf9f86b19, 0x5e26310a), TOBN(0x9e435484, 0x382a8ca8), + TOBN(0x253bcb81, 0xc2352fe4), TOBN(0xa4eac8b0, 0x4474b571)}}, + {{TOBN(0xc1b97512, 0xc1ad8cf8), TOBN(0x193b4e9e, 0x99e0b697), + TOBN(0x939d2716, 0x01e85df0), TOBN(0x4fb265b3, 0xcd44eafd)}, + {TOBN(0x321e7dcd, 0xe51e1ae2), TOBN(0x8e3a8ca6, 0xe3d8b096), + TOBN(0x8de46cb0, 0x52604998), TOBN(0x91099ad8, 0x39072aa7)}}, + {{TOBN(0x2617f91c, 0x93aa96b8), TOBN(0x0fc8716b, 0x7fca2e13), + TOBN(0xa7106f5e, 0x95328723), TOBN(0xd1c9c40b, 0x262e6522)}, + {TOBN(0xb9bafe86, 0x42b7c094), TOBN(0x1873439d, 0x1543c021), + TOBN(0xe1baa5de, 0x5cbefd5d), TOBN(0xa363fc5e, 0x521e8aff)}}, + {{TOBN(0xefe6320d, 0xf862eaac), TOBN(0x14419c63, 0x22c647dc), + TOBN(0x0e06707c, 0x4e46d428), TOBN(0xcb6c834f, 0x4a178f8f)}, + {TOBN(0x0f993a45, 0xd30f917c), TOBN(0xd4c4b049, 0x9879afee), + TOBN(0xb6142a1e, 0x70500063), TOBN(0x7c9b41c3, 0xa5d9d605)}}, + {{TOBN(0xbc00fc2f, 0x2f8ba2c7), TOBN(0x0966eb2f, 0x7c67aa28), + TOBN(0x13f7b516, 0x5a786972), TOBN(0x3bfb7557, 0x8a2fbba0)}, + {TOBN(0x131c4f23, 0x5a2b9620), TOBN(0xbff3ed27, 0x6faf46be), + TOBN(0x9b4473d1, 0x7e172323), TOBN(0x421e8878, 0x339f6246)}}, + {{TOBN(0x0fa8587a, 0x25a41632), TOBN(0xc0814124, 0xa35b6c93), + TOBN(0x2b18a9f5, 0x59ebb8db), TOBN(0x264e3357, 0x76edb29c)}, + {TOBN(0xaf245ccd, 0xc87c51e2), TOBN(0x16b3015b, 0x501e6214), + TOBN(0xbb31c560, 0x0a3882ce), TOBN(0x6961bb94, 0xfec11e04)}}, + {{TOBN(0x3b825b8d, 0xeff7a3a0), TOBN(0xbec33738, 0xb1df7326), + TOBN(0x68ad747c, 0x99604a1f), TOBN(0xd154c934, 0x9a3bd499)}, + {TOBN(0xac33506f, 0x1cc7a906), TOBN(0x73bb5392, 0x6c560e8f), + TOBN(0x6428fcbe, 0x263e3944), TOBN(0xc11828d5, 0x1c387434)}}, + {{TOBN(0x3cd04be1, 0x3e4b12ff), TOBN(0xc3aad9f9, 0x2d88667c), + TOBN(0xc52ddcf8, 0x248120cf), TOBN(0x985a892e, 0x2a389532)}, + {TOBN(0xfbb4b21b, 0x3bb85fa0), TOBN(0xf95375e0, 0x8dfc6269), + TOBN(0xfb4fb06c, 0x7ee2acea), TOBN(0x6785426e, 0x309c4d1f)}}, + {{TOBN(0x659b17c8, 0xd8ceb147), TOBN(0x9b649eee, 0xb70a5554), + TOBN(0x6b7fa0b5, 0xac6bc634), TOBN(0xd99fe2c7, 0x1d6e732f)}, + {TOBN(0x30e6e762, 0x8d3abba2), TOBN(0x18fee6e7, 0xa797b799), + TOBN(0x5c9d360d, 0xc696464d), TOBN(0xe3baeb48, 0x27bfde12)}}, + {{TOBN(0x2bf5db47, 0xf23206d5), TOBN(0x2f6d3420, 0x1d260152), + TOBN(0x17b87653, 0x3f8ff89a), TOBN(0x5157c30c, 0x378fa458)}, + {TOBN(0x7517c5c5, 0x2d4fb936), TOBN(0xef22f7ac, 0xe6518cdc), + TOBN(0xdeb483e6, 0xbf847a64), TOBN(0xf5084558, 0x92e0fa89)}}}, + {{{TOBN(0xab9659d8, 0xdf7304d4), TOBN(0xb71bcf1b, 0xff210e8e), + TOBN(0xa9a2438b, 0xd73fbd60), TOBN(0x4595cd1f, 0x5d11b4de)}, + {TOBN(0x9c0d329a, 0x4835859d), TOBN(0x4a0f0d2d, 0x7dbb6e56), + TOBN(0xc6038e5e, 0xdf928a4e), TOBN(0xc9429621, 0x8f5ad154)}}, + {{TOBN(0x91213462, 0xf23f2d92), TOBN(0x6cab71bd, 0x60b94078), + TOBN(0x6bdd0a63, 0x176cde20), TOBN(0x54c9b20c, 0xee4d54bc)}, + {TOBN(0x3cd2d8aa, 0x9f2ac02f), TOBN(0x03f8e617, 0x206eedb0), + TOBN(0xc7f68e16, 0x93086434), TOBN(0x831469c5, 0x92dd3db9)}}, + {{TOBN(0x8521df24, 0x8f981354), TOBN(0x587e23ec, 0x3588a259), + TOBN(0xcbedf281, 0xd7a0992c), TOBN(0x06930a55, 0x38961407)}, + {TOBN(0x09320deb, 0xbe5bbe21), TOBN(0xa7ffa5b5, 0x2491817f), + TOBN(0xe6c8b4d9, 0x09065160), TOBN(0xac4f3992, 0xfff6d2a9)}}, + {{TOBN(0x7aa7a158, 0x3ae9c1bd), TOBN(0xe0af6d98, 0xe37ce240), + TOBN(0xe54342d9, 0x28ab38b4), TOBN(0xe8b75007, 0x0a1c98ca)}, + {TOBN(0xefce86af, 0xe02358f2), TOBN(0x31b8b856, 0xea921228), + TOBN(0x052a1912, 0x0a1c67fc), TOBN(0xb4069ea4, 0xe3aead59)}}, + {{TOBN(0x3232d6e2, 0x7fa03cb3), TOBN(0xdb938e5b, 0x0fdd7d88), + TOBN(0x04c1d2cd, 0x2ccbfc5d), TOBN(0xd2f45c12, 0xaf3a580f)}, + {TOBN(0x592620b5, 0x7883e614), TOBN(0x5fd27e68, 0xbe7c5f26), + TOBN(0x139e45a9, 0x1567e1e3), TOBN(0x2cc71d2d, 0x44d8aaaf)}}, + {{TOBN(0x4a9090cd, 0xe36d0757), TOBN(0xf722d7b1, 0xd9a29382), + TOBN(0xfb7fb04c, 0x04b48ddf), TOBN(0x628ad2a7, 0xebe16f43)}, + {TOBN(0xcd3fbfb5, 0x20226040), TOBN(0x6c34ecb1, 0x5104b6c4), + TOBN(0x30c0754e, 0xc903c188), TOBN(0xec336b08, 0x2d23cab0)}}, + {{TOBN(0x473d62a2, 0x1e206ee5), TOBN(0xf1e27480, 0x8c49a633), + TOBN(0x87ab956c, 0xe9f6b2c3), TOBN(0x61830b48, 0x62b606ea)}, + {TOBN(0x67cd6846, 0xe78e815f), TOBN(0xfe40139f, 0x4c02082a), + TOBN(0x52bbbfcb, 0x952ec365), TOBN(0x74c11642, 0x6b9836ab)}}, + {{TOBN(0x9f51439e, 0x558df019), TOBN(0x230da4ba, 0xac712b27), + TOBN(0x518919e3, 0x55185a24), TOBN(0x4dcefcdd, 0x84b78f50)}, + {TOBN(0xa7d90fb2, 0xa47d4c5a), TOBN(0x55ac9abf, 0xb30e009e), + TOBN(0xfd2fc359, 0x74eed273), TOBN(0xb72d824c, 0xdbea8faf)}}, + {{TOBN(0xce721a74, 0x4513e2ca), TOBN(0x0b418612, 0x38240b2c), + TOBN(0x05199968, 0xd5baa450), TOBN(0xeb1757ed, 0x2b0e8c25)}, + {TOBN(0x6ebc3e28, 0x3dfac6d5), TOBN(0xb2431e2e, 0x48a237f5), + TOBN(0x2acb5e23, 0x52f61499), TOBN(0x5558a2a7, 0xe06c936b)}}, + {{TOBN(0xd213f923, 0xcbb13d1b), TOBN(0x98799f42, 0x5bfb9bfe), + TOBN(0x1ae8ddc9, 0x701144a9), TOBN(0x0b8b3bb6, 0x4c5595ee)}, + {TOBN(0x0ea9ef2e, 0x3ecebb21), TOBN(0x17cb6c4b, 0x3671f9a7), + TOBN(0x47ef464f, 0x726f1d1f), TOBN(0x171b9484, 0x6943a276)}}, + {{TOBN(0x51a4ae2d, 0x7ef0329c), TOBN(0x08509222, 0x91c4402a), + TOBN(0x64a61d35, 0xafd45bbc), TOBN(0x38f096fe, 0x3035a851)}, + {TOBN(0xc7468b74, 0xa1dec027), TOBN(0xe8cf10e7, 0x4fc7dcba), + TOBN(0xea35ff40, 0xf4a06353), TOBN(0x0b4c0dfa, 0x8b77dd66)}}, + {{TOBN(0x779b8552, 0xde7e5c19), TOBN(0xfab28609, 0xc1c0256c), + TOBN(0x64f58eee, 0xabd4743d), TOBN(0x4e8ef838, 0x7b6cc93b)}, + {TOBN(0xee650d26, 0x4cb1bf3d), TOBN(0x4c1f9d09, 0x73dedf61), + TOBN(0xaef7c9d7, 0xbfb70ced), TOBN(0x1ec0507e, 0x1641de1e)}}, + {{TOBN(0xcd7e5cc7, 0xcde45079), TOBN(0xde173c9a, 0x516ac9e4), + TOBN(0x517a8494, 0xc170315c), TOBN(0x438fd905, 0x91d8e8fb)}, + {TOBN(0x5145c506, 0xc7d9630b), TOBN(0x6457a87b, 0xf47d4d75), + TOBN(0xd31646bf, 0x0d9a80e8), TOBN(0x453add2b, 0xcef3aabe)}}, + {{TOBN(0xc9941109, 0xa607419d), TOBN(0xfaa71e62, 0xbb6bca80), + TOBN(0x34158c13, 0x07c431f3), TOBN(0x594abebc, 0x992bc47a)}, + {TOBN(0x6dfea691, 0xeb78399f), TOBN(0x48aafb35, 0x3f42cba4), + TOBN(0xedcd65af, 0x077c04f0), TOBN(0x1a29a366, 0xe884491a)}}, + {{TOBN(0x023a40e5, 0x1c21f2bf), TOBN(0xf99a513c, 0xa5057aee), + TOBN(0xa3fe7e25, 0xbcab072e), TOBN(0x8568d2e1, 0x40e32bcf)}, + {TOBN(0x904594eb, 0xd3f69d9f), TOBN(0x181a9733, 0x07affab1), + TOBN(0xe4d68d76, 0xb6e330f4), TOBN(0x87a6dafb, 0xc75a7fc1)}}, + {{TOBN(0x549db2b5, 0xef7d9289), TOBN(0x2480d4a8, 0x197f015a), + TOBN(0x61d5590b, 0xc40493b6), TOBN(0x3a55b52e, 0x6f780331)}, + {TOBN(0x40eb8115, 0x309eadb0), TOBN(0xdea7de5a, 0x92e5c625), + TOBN(0x64d631f0, 0xcc6a3d5a), TOBN(0x9d5e9d7c, 0x93e8dd61)}}, + {{TOBN(0xf297bef5, 0x206d3ffc), TOBN(0x23d5e033, 0x7d808bd4), + TOBN(0x4a4f6912, 0xd24cf5ba), TOBN(0xe4d8163b, 0x09cdaa8a)}, + {TOBN(0x0e0de9ef, 0xd3082e8e), TOBN(0x4fe1246c, 0x0192f360), + TOBN(0x1f900150, 0x4b8eee0a), TOBN(0x5219da81, 0xf1da391b)}}, + {{TOBN(0x7bf6a5c1, 0xf7ea25aa), TOBN(0xd165e6bf, 0xfbb07d5f), + TOBN(0xe3539361, 0x89e78671), TOBN(0xa3fcac89, 0x2bac4219)}, + {TOBN(0xdfab6fd4, 0xf0baa8ab), TOBN(0x5a4adac1, 0xe2c1c2e5), + TOBN(0x6cd75e31, 0x40d85849), TOBN(0xce263fea, 0x19b39181)}}, + {{TOBN(0xcb6803d3, 0x07032c72), TOBN(0x7f40d5ce, 0x790968c8), + TOBN(0xa6de86bd, 0xdce978f0), TOBN(0x25547c4f, 0x368f751c)}, + {TOBN(0xb1e685fd, 0x65fb2a9e), TOBN(0xce69336f, 0x1eb9179c), + TOBN(0xb15d1c27, 0x12504442), TOBN(0xb7df465c, 0xb911a06b)}}, + {{TOBN(0xb8d804a3, 0x315980cd), TOBN(0x693bc492, 0xfa3bebf7), + TOBN(0x3578aeee, 0x2253c504), TOBN(0x158de498, 0xcd2474a2)}, + {TOBN(0x1331f5c7, 0xcfda8368), TOBN(0xd2d7bbb3, 0x78d7177e), + TOBN(0xdf61133a, 0xf3c1e46e), TOBN(0x5836ce7d, 0xd30e7be8)}}, + {{TOBN(0x83084f19, 0x94f834cb), TOBN(0xd35653d4, 0x429ed782), + TOBN(0xa542f16f, 0x59e58243), TOBN(0xc2b52f65, 0x0470a22d)}, + {TOBN(0xe3b6221b, 0x18f23d96), TOBN(0xcb05abac, 0x3f5252b4), + TOBN(0xca00938b, 0x87d61402), TOBN(0x2f186cdd, 0x411933e4)}}, + {{TOBN(0xe042ece5, 0x9a29a5c5), TOBN(0xb19b3c07, 0x3b6c8402), + TOBN(0xc97667c7, 0x19d92684), TOBN(0xb5624622, 0xebc66372)}, + {TOBN(0x0cb96e65, 0x3c04fa02), TOBN(0x83a7176c, 0x8eaa39aa), + TOBN(0x2033561d, 0xeaa1633f), TOBN(0x45a9d086, 0x4533df73)}}, + {{TOBN(0xe0542c1d, 0x3dc090bc), TOBN(0x82c996ef, 0xaa59c167), + TOBN(0xe3f735e8, 0x0ee7fc4d), TOBN(0x7b179393, 0x7c35db79)}, + {TOBN(0xb6419e25, 0xf8c5dbfd), TOBN(0x4d9d7a1e, 0x1f327b04), + TOBN(0x979f6f9b, 0x298dfca8), TOBN(0xc7c5dff1, 0x8de9366a)}}, + {{TOBN(0x1b7a588d, 0x04c82bdd), TOBN(0x68005534, 0xf8319dfd), + TOBN(0xde8a55b5, 0xd8eb9580), TOBN(0x5ea886da, 0x8d5bca81)}, + {TOBN(0xe8530a01, 0x252a0b4d), TOBN(0x1bffb4fe, 0x35eaa0a1), + TOBN(0x2ad828b1, 0xd8e99563), TOBN(0x7de96ef5, 0x95f9cd87)}}, + {{TOBN(0x4abb2d0c, 0xd77d970c), TOBN(0x03cfb933, 0xd33ef9cb), + TOBN(0xb0547c01, 0x8b211fe9), TOBN(0x2fe64809, 0xa56ed1c6)}, + {TOBN(0xcb7d5624, 0xc2ac98cc), TOBN(0x2a1372c0, 0x1a393e33), + TOBN(0xc8d1ec1c, 0x29660521), TOBN(0xf3d31b04, 0xb37ac3e9)}}, + {{TOBN(0xa29ae9df, 0x5ece6e7c), TOBN(0x0603ac8f, 0x0facfb55), + TOBN(0xcfe85b7a, 0xdda233a5), TOBN(0xe618919f, 0xbd75f0b8)}, + {TOBN(0xf555a3d2, 0x99bf1603), TOBN(0x1f43afc9, 0xf184255a), + TOBN(0xdcdaf341, 0x319a3e02), TOBN(0xd3b117ef, 0x03903a39)}}, + {{TOBN(0xe095da13, 0x65d1d131), TOBN(0x86f16367, 0xc37ad03e), + TOBN(0x5f37389e, 0x462cd8dd), TOBN(0xc103fa04, 0xd67a60e6)}, + {TOBN(0x57c34344, 0xf4b478f0), TOBN(0xce91edd8, 0xe117c98d), + TOBN(0x001777b0, 0x231fc12e), TOBN(0x11ae47f2, 0xb207bccb)}}, + {{TOBN(0xd983cf8d, 0x20f8a242), TOBN(0x7aff5b1d, 0xf22e1ad8), + TOBN(0x68fd11d0, 0x7fc4feb3), TOBN(0x5d53ae90, 0xb0f1c3e1)}, + {TOBN(0x50fb7905, 0xec041803), TOBN(0x85e3c977, 0x14404888), + TOBN(0x0e67faed, 0xac628d8f), TOBN(0x2e865150, 0x6668532c)}}, + {{TOBN(0x15acaaa4, 0x6a67a6b0), TOBN(0xf4cdee25, 0xb25cec41), + TOBN(0x49ee565a, 0xe4c6701e), TOBN(0x2a04ca66, 0xfc7d63d8)}, + {TOBN(0xeb105018, 0xef0543fb), TOBN(0xf709a4f5, 0xd1b0d81d), + TOBN(0x5b906ee6, 0x2915d333), TOBN(0xf4a87412, 0x96f1f0ab)}}, + {{TOBN(0xb6b82fa7, 0x4d82f4c2), TOBN(0x90725a60, 0x6804efb3), + TOBN(0xbc82ec46, 0xadc3425e), TOBN(0xb7b80581, 0x2787843e)}, + {TOBN(0xdf46d91c, 0xdd1fc74c), TOBN(0xdc1c62cb, 0xe783a6c4), + TOBN(0x59d1b9f3, 0x1a04cbba), TOBN(0xd87f6f72, 0x95e40764)}}, + {{TOBN(0x02b4cfc1, 0x317f4a76), TOBN(0x8d2703eb, 0x91036bce), + TOBN(0x98206cc6, 0xa5e72a56), TOBN(0x57be9ed1, 0xcf53fb0f)}, + {TOBN(0x09374571, 0xef0b17ac), TOBN(0x74b2655e, 0xd9181b38), + TOBN(0xc8f80ea8, 0x89935d0e), TOBN(0xc0d9e942, 0x91529936)}}, + {{TOBN(0x19686041, 0x1e84e0e5), TOBN(0xa5db84d3, 0xaea34c93), + TOBN(0xf9d5bb19, 0x7073a732), TOBN(0xb8d2fe56, 0x6bcfd7c0)}, + {TOBN(0x45775f36, 0xf3eb82fa), TOBN(0x8cb20ccc, 0xfdff8b58), + TOBN(0x1659b65f, 0x8374c110), TOBN(0xb8b4a422, 0x330c789a)}}, + {{TOBN(0x75e3c3ea, 0x6fe8208b), TOBN(0xbd74b9e4, 0x286e78fe), + TOBN(0x0be2e81b, 0xd7d93a1a), TOBN(0x7ed06e27, 0xdd0a5aae)}, + {TOBN(0x721f5a58, 0x6be8b800), TOBN(0x428299d1, 0xd846db28), + TOBN(0x95cb8e6b, 0x5be88ed3), TOBN(0xc3186b23, 0x1c034e11)}}, + {{TOBN(0xa6312c9e, 0x8977d99b), TOBN(0xbe944331, 0x83f531e7), + TOBN(0x8232c0c2, 0x18d3b1d4), TOBN(0x617aae8b, 0xe1247b73)}, + {TOBN(0x40153fc4, 0x282aec3b), TOBN(0xc6063d2f, 0xf7b8f823), + TOBN(0x68f10e58, 0x3304f94c), TOBN(0x31efae74, 0xee676346)}}, + {{TOBN(0xbadb6c6d, 0x40a9b97c), TOBN(0x14702c63, 0x4f666256), + TOBN(0xdeb954f1, 0x5184b2e3), TOBN(0x5184a526, 0x94b6ca40)}, + {TOBN(0xfff05337, 0x003c32ea), TOBN(0x5aa374dd, 0x205974c7), + TOBN(0x9a763854, 0x4b0dd71a), TOBN(0x459cd27f, 0xdeb947ec)}}, + {{TOBN(0xa6e28161, 0x459c2b92), TOBN(0x2f020fa8, 0x75ee8ef5), + TOBN(0xb132ec2d, 0x30b06310), TOBN(0xc3e15899, 0xbc6a4530)}, + {TOBN(0xdc5f53fe, 0xaa3f451a), TOBN(0x3a3c7f23, 0xc2d9acac), + TOBN(0x2ec2f892, 0x6b27e58b), TOBN(0x68466ee7, 0xd742799f)}}, + {{TOBN(0x98324dd4, 0x1fa26613), TOBN(0xa2dc6dab, 0xbdc29d63), + TOBN(0xf9675faa, 0xd712d657), TOBN(0x813994be, 0x21fd8d15)}, + {TOBN(0x5ccbb722, 0xfd4f7553), TOBN(0x5135ff8b, 0xf3a36b20), + TOBN(0x44be28af, 0x69559df5), TOBN(0x40b65bed, 0x9d41bf30)}}, + {{TOBN(0xd98bf2a4, 0x3734e520), TOBN(0x5e3abbe3, 0x209bdcba), + TOBN(0x77c76553, 0xbc945b35), TOBN(0x5331c093, 0xc6ef14aa)}, + {TOBN(0x518ffe29, 0x76b60c80), TOBN(0x2285593b, 0x7ace16f8), + TOBN(0xab1f64cc, 0xbe2b9784), TOBN(0xe8f2c0d9, 0xab2421b6)}}, + {{TOBN(0x617d7174, 0xc1df065c), TOBN(0xafeeb5ab, 0x5f6578fa), + TOBN(0x16ff1329, 0x263b54a8), TOBN(0x45c55808, 0xc990dce3)}, + {TOBN(0x42eab6c0, 0xecc8c177), TOBN(0x799ea9b5, 0x5982ecaa), + TOBN(0xf65da244, 0xb607ef8e), TOBN(0x8ab226ce, 0x32a3fc2c)}}, + {{TOBN(0x745741e5, 0x7ea973dc), TOBN(0x5c00ca70, 0x20888f2e), + TOBN(0x7cdce3cf, 0x45fd9cf1), TOBN(0x8a741ef1, 0x5507f872)}, + {TOBN(0x47c51c2f, 0x196b4cec), TOBN(0x70d08e43, 0xc97ea618), + TOBN(0x930da15c, 0x15b18a2b), TOBN(0x33b6c678, 0x2f610514)}}, + {{TOBN(0xc662e4f8, 0x07ac9794), TOBN(0x1eccf050, 0xba06cb79), + TOBN(0x1ff08623, 0xe7d954e5), TOBN(0x6ef2c5fb, 0x24cf71c3)}, + {TOBN(0xb2c063d2, 0x67978453), TOBN(0xa0cf3796, 0x1d654af8), + TOBN(0x7cb242ea, 0x7ebdaa37), TOBN(0x206e0b10, 0xb86747e0)}}, + {{TOBN(0x481dae5f, 0xd5ecfefc), TOBN(0x07084fd8, 0xc2bff8fc), + TOBN(0x8040a01a, 0xea324596), TOBN(0x4c646980, 0xd4de4036)}, + {TOBN(0x9eb8ab4e, 0xd65abfc3), TOBN(0xe01cb91f, 0x13541ec7), + TOBN(0x8f029adb, 0xfd695012), TOBN(0x9ae28483, 0x3c7569ec)}}, + {{TOBN(0xa5614c9e, 0xa66d80a1), TOBN(0x680a3e44, 0x75f5f911), + TOBN(0x0c07b14d, 0xceba4fc1), TOBN(0x891c285b, 0xa13071c1)}, + {TOBN(0xcac67ceb, 0x799ece3c), TOBN(0x29b910a9, 0x41e07e27), + TOBN(0x66bdb409, 0xf2e43123), TOBN(0x06f8b137, 0x7ac9ecbe)}}, + {{TOBN(0x5981fafd, 0x38547090), TOBN(0x19ab8b9f, 0x85e3415d), + TOBN(0xfc28c194, 0xc7e31b27), TOBN(0x843be0aa, 0x6fbcbb42)}, + {TOBN(0xf3b1ed43, 0xa6db836c), TOBN(0x2a1330e4, 0x01a45c05), + TOBN(0x4f19f3c5, 0x95c1a377), TOBN(0xa85f39d0, 0x44b5ee33)}}, + {{TOBN(0x3da18e6d, 0x4ae52834), TOBN(0x5a403b39, 0x7423dcb0), + TOBN(0xbb555e0a, 0xf2374aef), TOBN(0x2ad599c4, 0x1e8ca111)}, + {TOBN(0x1b3a2fb9, 0x014b3bf8), TOBN(0x73092684, 0xf66d5007), + TOBN(0x079f1426, 0xc4340102), TOBN(0x1827cf81, 0x8fddf4de)}}, + {{TOBN(0xc83605f6, 0xf10ff927), TOBN(0xd3871451, 0x23739fc6), + TOBN(0x6d163450, 0xcac1c2cc), TOBN(0x6b521296, 0xa2ec1ac5)}, + {TOBN(0x0606c4f9, 0x6e3cb4a5), TOBN(0xe47d3f41, 0x778abff7), + TOBN(0x425a8d5e, 0xbe8e3a45), TOBN(0x53ea9e97, 0xa6102160)}}, + {{TOBN(0x477a106e, 0x39cbb688), TOBN(0x532401d2, 0xf3386d32), + TOBN(0x8e564f64, 0xb1b9b421), TOBN(0xca9b8388, 0x81dad33f)}, + {TOBN(0xb1422b4e, 0x2093913e), TOBN(0x533d2f92, 0x69bc8112), + TOBN(0x3fa017be, 0xebe7b2c7), TOBN(0xb2767c4a, 0xcaf197c6)}}, + {{TOBN(0xc925ff87, 0xaedbae9f), TOBN(0x7daf0eb9, 0x36880a54), + TOBN(0x9284ddf5, 0x9c4d0e71), TOBN(0x1581cf93, 0x316f8cf5)}, + {TOBN(0x3eeca887, 0x3ac1f452), TOBN(0xb417fce9, 0xfb6aeffe), + TOBN(0xa5918046, 0xeefb8dc3), TOBN(0x73d318ac, 0x02209400)}}, + {{TOBN(0xe800400f, 0x728693e5), TOBN(0xe87d814b, 0x339927ed), + TOBN(0x93e94d3b, 0x57ea9910), TOBN(0xff8a35b6, 0x2245fb69)}, + {TOBN(0x043853d7, 0x7f200d34), TOBN(0x470f1e68, 0x0f653ce1), + TOBN(0x81ac05bd, 0x59a06379), TOBN(0xa14052c2, 0x03930c29)}}, + {{TOBN(0x6b72fab5, 0x26bc2797), TOBN(0x13670d16, 0x99f16771), + TOBN(0x00170052, 0x1e3e48d1), TOBN(0x978fe401, 0xb7adf678)}, + {TOBN(0x55ecfb92, 0xd41c5dd4), TOBN(0x5ff8e247, 0xc7b27da5), + TOBN(0xe7518272, 0x013fb606), TOBN(0x5768d7e5, 0x2f547a3c)}}, + {{TOBN(0xbb24eaa3, 0x60017a5f), TOBN(0x6b18e6e4, 0x9c64ce9b), + TOBN(0xc225c655, 0x103dde07), TOBN(0xfc3672ae, 0x7592f7ea)}, + {TOBN(0x9606ad77, 0xd06283a1), TOBN(0x542fc650, 0xe4d59d99), + TOBN(0xabb57c49, 0x2a40e7c2), TOBN(0xac948f13, 0xa8db9f55)}}, + {{TOBN(0x6d4c9682, 0xb04465c3), TOBN(0xe3d062fa, 0x6468bd15), + TOBN(0xa51729ac, 0x5f318d7e), TOBN(0x1fc87df6, 0x9eb6fc95)}, + {TOBN(0x63d146a8, 0x0591f652), TOBN(0xa861b8f7, 0x589621aa), + TOBN(0x59f5f15a, 0xce31348c), TOBN(0x8f663391, 0x440da6da)}}, + {{TOBN(0xcfa778ac, 0xb591ffa3), TOBN(0x027ca9c5, 0x4cdfebce), + TOBN(0xbe8e05a5, 0x444ea6b3), TOBN(0x8aab4e69, 0xa78d8254)}, + {TOBN(0x2437f04f, 0xb474d6b8), TOBN(0x6597ffd4, 0x045b3855), + TOBN(0xbb0aea4e, 0xca47ecaa), TOBN(0x568aae83, 0x85c7ebfc)}}, + {{TOBN(0x0e966e64, 0xc73b2383), TOBN(0x49eb3447, 0xd17d8762), + TOBN(0xde107821, 0x8da05dab), TOBN(0x443d8baa, 0x016b7236)}, + {TOBN(0x163b63a5, 0xea7610d6), TOBN(0xe47e4185, 0xce1ca979), + TOBN(0xae648b65, 0x80baa132), TOBN(0xebf53de2, 0x0e0d5b64)}}, + {{TOBN(0x8d3bfcb4, 0xd3c8c1ca), TOBN(0x0d914ef3, 0x5d04b309), + TOBN(0x55ef6415, 0x3de7d395), TOBN(0xbde1666f, 0x26b850e8)}, + {TOBN(0xdbe1ca6e, 0xd449ab19), TOBN(0x8902b322, 0xe89a2672), + TOBN(0xb1674b7e, 0xdacb7a53), TOBN(0x8e9faf6e, 0xf52523ff)}}, + {{TOBN(0x6ba535da, 0x9a85788b), TOBN(0xd21f03ae, 0xbd0626d4), + TOBN(0x099f8c47, 0xe873dc64), TOBN(0xcda8564d, 0x018ec97e)}, + {TOBN(0x3e8d7a5c, 0xde92c68c), TOBN(0x78e035a1, 0x73323cc4), + TOBN(0x3ef26275, 0xf880ff7c), TOBN(0xa4ee3dff, 0x273eedaa)}}, + {{TOBN(0x58823507, 0xaf4e18f8), TOBN(0x967ec9b5, 0x0672f328), + TOBN(0x9ded19d9, 0x559d3186), TOBN(0x5e2ab3de, 0x6cdce39c)}, + {TOBN(0xabad6e4d, 0x11c226df), TOBN(0xf9783f43, 0x87723014), + TOBN(0x9a49a0cf, 0x1a885719), TOBN(0xfc0c1a5a, 0x90da9dbf)}}, + {{TOBN(0x8bbaec49, 0x571d92ac), TOBN(0x569e85fe, 0x4692517f), + TOBN(0x8333b014, 0xa14ea4af), TOBN(0x32f2a62f, 0x12e5c5ad)}, + {TOBN(0x98c2ce3a, 0x06d89b85), TOBN(0xb90741aa, 0x2ff77a08), + TOBN(0x2530defc, 0x01f795a2), TOBN(0xd6e5ba0b, 0x84b3c199)}}, + {{TOBN(0x7d8e8451, 0x12e4c936), TOBN(0xae419f7d, 0xbd0be17b), + TOBN(0xa583fc8c, 0x22262bc9), TOBN(0x6b842ac7, 0x91bfe2bd)}, + {TOBN(0x33cef4e9, 0x440d6827), TOBN(0x5f69f4de, 0xef81fb14), + TOBN(0xf16cf6f6, 0x234fbb92), TOBN(0x76ae3fc3, 0xd9e7e158)}}, + {{TOBN(0x4e89f6c2, 0xe9740b33), TOBN(0x677bc85d, 0x4962d6a1), + TOBN(0x6c6d8a7f, 0x68d10d15), TOBN(0x5f9a7224, 0x0257b1cd)}, + {TOBN(0x7096b916, 0x4ad85961), TOBN(0x5f8c47f7, 0xe657ab4a), + TOBN(0xde57d7d0, 0xf7461d7e), TOBN(0x7eb6094d, 0x80ce5ee2)}}, + {{TOBN(0x0b1e1dfd, 0x34190547), TOBN(0x8a394f43, 0xf05dd150), + TOBN(0x0a9eb24d, 0x97df44e6), TOBN(0x78ca06bf, 0x87675719)}, + {TOBN(0x6f0b3462, 0x6ffeec22), TOBN(0x9d91bcea, 0x36cdd8fb), + TOBN(0xac83363c, 0xa105be47), TOBN(0x81ba76c1, 0x069710e3)}}, + {{TOBN(0x3d1b24cb, 0x28c682c6), TOBN(0x27f25228, 0x8612575b), + TOBN(0xb587c779, 0xe8e66e98), TOBN(0x7b0c03e9, 0x405eb1fe)}, + {TOBN(0xfdf0d030, 0x15b548e7), TOBN(0xa8be76e0, 0x38b36af7), + TOBN(0x4cdab04a, 0x4f310c40), TOBN(0x6287223e, 0xf47ecaec)}}, + {{TOBN(0x678e6055, 0x8b399320), TOBN(0x61fe3fa6, 0xc01e4646), + TOBN(0xc482866b, 0x03261a5e), TOBN(0xdfcf45b8, 0x5c2f244a)}, + {TOBN(0x8fab9a51, 0x2f684b43), TOBN(0xf796c654, 0xc7220a66), + TOBN(0x1d90707e, 0xf5afa58f), TOBN(0x2c421d97, 0x4fdbe0de)}}, + {{TOBN(0xc4f4cda3, 0xaf2ebc2f), TOBN(0xa0af843d, 0xcb4efe24), + TOBN(0x53b857c1, 0x9ccd10b1), TOBN(0xddc9d1eb, 0x914d3e04)}, + {TOBN(0x7bdec8bb, 0x62771deb), TOBN(0x829277aa, 0x91c5aa81), + TOBN(0x7af18dd6, 0x832391ae), TOBN(0x1740f316, 0xc71a84ca)}}}, + {{{TOBN(0x8928e99a, 0xeeaf8c49), TOBN(0xee7aa73d, 0x6e24d728), + TOBN(0x4c5007c2, 0xe72b156c), TOBN(0x5fcf57c5, 0xed408a1d)}, + {TOBN(0x9f719e39, 0xb6057604), TOBN(0x7d343c01, 0xc2868bbf), + TOBN(0x2cca254b, 0x7e103e2d), TOBN(0xe6eb38a9, 0xf131bea2)}}, + {{TOBN(0xb33e624f, 0x8be762b4), TOBN(0x2a9ee4d1, 0x058e3413), + TOBN(0x968e6369, 0x67d805fa), TOBN(0x9848949b, 0x7db8bfd7)}, + {TOBN(0x5308d7e5, 0xd23a8417), TOBN(0x892f3b1d, 0xf3e29da5), + TOBN(0xc95c139e, 0x3dee471f), TOBN(0x8631594d, 0xd757e089)}}, + {{TOBN(0xe0c82a3c, 0xde918dcc), TOBN(0x2e7b5994, 0x26fdcf4b), + TOBN(0x82c50249, 0x32cb1b2d), TOBN(0xea613a9d, 0x7657ae07)}, + {TOBN(0xc2eb5f6c, 0xf1fdc9f7), TOBN(0xb6eae8b8, 0x879fe682), + TOBN(0x253dfee0, 0x591cbc7f), TOBN(0x000da713, 0x3e1290e6)}}, + {{TOBN(0x1083e2ea, 0x1f095615), TOBN(0x0a28ad77, 0x14e68c33), + TOBN(0x6bfc0252, 0x3d8818be), TOBN(0xb585113a, 0xf35850cd)}, + {TOBN(0x7d935f0b, 0x30df8aa1), TOBN(0xaddda07c, 0x4ab7e3ac), + TOBN(0x92c34299, 0x552f00cb), TOBN(0xc33ed1de, 0x2909df6c)}}, + {{TOBN(0x22c2195d, 0x80e87766), TOBN(0x9e99e6d8, 0x9ddf4ac0), + TOBN(0x09642e4e, 0x65e74934), TOBN(0x2610ffa2, 0xff1ff241)}, + {TOBN(0x4d1d47d4, 0x751c8159), TOBN(0x697b4985, 0xaf3a9363), + TOBN(0x0318ca46, 0x87477c33), TOBN(0xa90cb565, 0x9441eff3)}}, + {{TOBN(0x58bb3848, 0x36f024cb), TOBN(0x85be1f77, 0x36016168), + TOBN(0x6c59587c, 0xdc7e07f1), TOBN(0x191be071, 0xaf1d8f02)}, + {TOBN(0xbf169fa5, 0xcca5e55c), TOBN(0x3864ba3c, 0xf7d04eac), + TOBN(0x915e367f, 0x8d7d05db), TOBN(0xb48a876d, 0xa6549e5d)}}, + {{TOBN(0xef89c656, 0x580e40a2), TOBN(0xf194ed8c, 0x728068bc), + TOBN(0x74528045, 0xa47990c9), TOBN(0xf53fc7d7, 0x5e1a4649)}, + {TOBN(0xbec5ae9b, 0x78593e7d), TOBN(0x2cac4ee3, 0x41db65d7), + TOBN(0xa8c1eb24, 0x04a3d39b), TOBN(0x53b7d634, 0x03f8f3ef)}}, + {{TOBN(0x2dc40d48, 0x3e07113c), TOBN(0x6e4a5d39, 0x7d8b63ae), + TOBN(0x5582a94b, 0x79684c2b), TOBN(0x932b33d4, 0x622da26c)}, + {TOBN(0xf534f651, 0x0dbbf08d), TOBN(0x211d07c9, 0x64c23a52), + TOBN(0x0eeece0f, 0xee5bdc9b), TOBN(0xdf178168, 0xf7015558)}}, + {{TOBN(0xd4294635, 0x0a712229), TOBN(0x93cbe448, 0x09273f8c), + TOBN(0x00b095ef, 0x8f13bc83), TOBN(0xbb741972, 0x8798978c)}, + {TOBN(0x9d7309a2, 0x56dbe6e7), TOBN(0xe578ec56, 0x5a5d39ec), + TOBN(0x3961151b, 0x851f9a31), TOBN(0x2da7715d, 0xe5709eb4)}}, + {{TOBN(0x867f3017, 0x53dfabf0), TOBN(0x728d2078, 0xb8e39259), + TOBN(0x5c75a0cd, 0x815d9958), TOBN(0xf84867a6, 0x16603be1)}, + {TOBN(0xc865b13d, 0x70e35b1c), TOBN(0x02414468, 0x19b03e2c), + TOBN(0xe46041da, 0xac1f3121), TOBN(0x7c9017ad, 0x6f028a7c)}}, + {{TOBN(0xabc96de9, 0x0a482873), TOBN(0x4265d6b1, 0xb77e54d4), + TOBN(0x68c38e79, 0xa57d88e7), TOBN(0xd461d766, 0x9ce82de3)}, + {TOBN(0x817a9ec5, 0x64a7e489), TOBN(0xcc5675cd, 0xa0def5f2), + TOBN(0x9a00e785, 0x985d494e), TOBN(0xc626833f, 0x1b03514a)}}, + {{TOBN(0xabe7905a, 0x83cdd60e), TOBN(0x50602fb5, 0xa1170184), + TOBN(0x689886cd, 0xb023642a), TOBN(0xd568d090, 0xa6e1fb00)}, + {TOBN(0x5b1922c7, 0x0259217f), TOBN(0x93831cd9, 0xc43141e4), + TOBN(0xdfca3587, 0x0c95f86e), TOBN(0xdec2057a, 0x568ae828)}}, + {{TOBN(0xc44ea599, 0xf98a759a), TOBN(0x55a0a7a2, 0xf7c23c1d), + TOBN(0xd5ffb6e6, 0x94c4f687), TOBN(0x3563cce2, 0x12848478)}, + {TOBN(0x812b3517, 0xe7b1fbe1), TOBN(0x8a7dc979, 0x4f7338e0), + TOBN(0x211ecee9, 0x52d048db), TOBN(0x2eea4056, 0xc86ea3b8)}}, + {{TOBN(0xd8cb68a7, 0xba772b34), TOBN(0xe16ed341, 0x5f4e2541), + TOBN(0x9b32f6a6, 0x0fec14db), TOBN(0xeee376f7, 0x391698be)}, + {TOBN(0xe9a7aa17, 0x83674c02), TOBN(0x65832f97, 0x5843022a), + TOBN(0x29f3a8da, 0x5ba4990f), TOBN(0x79a59c3a, 0xfb8e3216)}}, + {{TOBN(0x9cdc4d2e, 0xbd19bb16), TOBN(0xc6c7cfd0, 0xb3262d86), + TOBN(0xd4ce14d0, 0x969c0b47), TOBN(0x1fa352b7, 0x13e56128)}, + {TOBN(0x383d55b8, 0x973db6d3), TOBN(0x71836850, 0xe8e5b7bf), + TOBN(0xc7714596, 0xe6bb571f), TOBN(0x259df31f, 0x2d5b2dd2)}}, + {{TOBN(0x568f8925, 0x913cc16d), TOBN(0x18bc5b6d, 0xe1a26f5a), + TOBN(0xdfa413be, 0xf5f499ae), TOBN(0xf8835dec, 0xc3f0ae84)}, + {TOBN(0xb6e60bd8, 0x65a40ab0), TOBN(0x65596439, 0x194b377e), + TOBN(0xbcd85625, 0x92084a69), TOBN(0x5ce433b9, 0x4f23ede0)}}, + {{TOBN(0xe8e8f04f, 0x6ad65143), TOBN(0x11511827, 0xd6e14af6), + TOBN(0x3d390a10, 0x8295c0c7), TOBN(0x71e29ee4, 0x621eba16)}, + {TOBN(0xa588fc09, 0x63717b46), TOBN(0x02be02fe, 0xe06ad4a2), + TOBN(0x931558c6, 0x04c22b22), TOBN(0xbb4d4bd6, 0x12f3c849)}}, + {{TOBN(0x54a4f496, 0x20efd662), TOBN(0x92ba6d20, 0xc5952d14), + TOBN(0x2db8ea1e, 0xcc9784c2), TOBN(0x81cc10ca, 0x4b353644)}, + {TOBN(0x40b570ad, 0x4b4d7f6c), TOBN(0x5c9f1d96, 0x84a1dcd2), + TOBN(0x01379f81, 0x3147e797), TOBN(0xe5c6097b, 0x2bd499f5)}}, + {{TOBN(0x40dcafa6, 0x328e5e20), TOBN(0xf7b5244a, 0x54815550), + TOBN(0xb9a4f118, 0x47bfc978), TOBN(0x0ea0e79f, 0xd25825b1)}, + {TOBN(0xa50f96eb, 0x646c7ecf), TOBN(0xeb811493, 0x446dea9d), + TOBN(0x2af04677, 0xdfabcf69), TOBN(0xbe3a068f, 0xc713f6e8)}}, + {{TOBN(0x860d523d, 0x42e06189), TOBN(0xbf077941, 0x4e3aff13), + TOBN(0x0b616dca, 0xc1b20650), TOBN(0xe66dd6d1, 0x2131300d)}, + {TOBN(0xd4a0fd67, 0xff99abde), TOBN(0xc9903550, 0xc7aac50d), + TOBN(0x022ecf8b, 0x7c46b2d7), TOBN(0x3333b1e8, 0x3abf92af)}}, + {{TOBN(0x11cc113c, 0x6c491c14), TOBN(0x05976688, 0x80dd3f88), + TOBN(0xf5b4d9e7, 0x29d932ed), TOBN(0xe982aad8, 0xa2c38b6d)}, + {TOBN(0x6f925347, 0x8be0dcf0), TOBN(0x700080ae, 0x65ca53f2), + TOBN(0xd8131156, 0x443ca77f), TOBN(0xe92d6942, 0xec51f984)}}, + {{TOBN(0xd2a08af8, 0x85dfe9ae), TOBN(0xd825d9a5, 0x4d2a86ca), + TOBN(0x2c53988d, 0x39dff020), TOBN(0xf38b135a, 0x430cdc40)}, + {TOBN(0x0c918ae0, 0x62a7150b), TOBN(0xf31fd8de, 0x0c340e9b), + TOBN(0xafa0e7ae, 0x4dbbf02e), TOBN(0x5847fb2a, 0x5eba6239)}}, + {{TOBN(0x6b1647dc, 0xdccbac8b), TOBN(0xb642aa78, 0x06f485c8), + TOBN(0x873f3765, 0x7038ecdf), TOBN(0x2ce5e865, 0xfa49d3fe)}, + {TOBN(0xea223788, 0xc98c4400), TOBN(0x8104a8cd, 0xf1fa5279), + TOBN(0xbcf7cc7a, 0x06becfd7), TOBN(0x49424316, 0xc8f974ae)}}, + {{TOBN(0xc0da65e7, 0x84d6365d), TOBN(0xbcb7443f, 0x8f759fb8), + TOBN(0x35c712b1, 0x7ae81930), TOBN(0x80428dff, 0x4c6e08ab)}, + {TOBN(0xf19dafef, 0xa4faf843), TOBN(0xced8538d, 0xffa9855f), + TOBN(0x20ac409c, 0xbe3ac7ce), TOBN(0x358c1fb6, 0x882da71e)}}, + {{TOBN(0xafa9c0e5, 0xfd349961), TOBN(0x2b2cfa51, 0x8421c2fc), + TOBN(0x2a80db17, 0xf3a28d38), TOBN(0xa8aba539, 0x5d138e7e)}, + {TOBN(0x52012d1d, 0x6e96eb8d), TOBN(0x65d8dea0, 0xcbaf9622), + TOBN(0x57735447, 0xb264f56c), TOBN(0xbeebef3f, 0x1b6c8da2)}}, + {{TOBN(0xfc346d98, 0xce785254), TOBN(0xd50e8d72, 0xbb64a161), + TOBN(0xc03567c7, 0x49794add), TOBN(0x15a76065, 0x752c7ef6)}, + {TOBN(0x59f3a222, 0x961f23d6), TOBN(0x378e4438, 0x73ecc0b0), + TOBN(0xc74be434, 0x5a82fde4), TOBN(0xae509af2, 0xd8b9cf34)}}, + {{TOBN(0x4a61ee46, 0x577f44a1), TOBN(0xe09b748c, 0xb611deeb), + TOBN(0xc0481b2c, 0xf5f7b884), TOBN(0x35626678, 0x61acfa6b)}, + {TOBN(0x37f4c518, 0xbf8d21e6), TOBN(0x22d96531, 0xb205a76d), + TOBN(0x37fb85e1, 0x954073c0), TOBN(0xbceafe4f, 0x65b3a567)}}, + {{TOBN(0xefecdef7, 0xbe42a582), TOBN(0xd3fc6080, 0x65046be6), + TOBN(0xc9af13c8, 0x09e8dba9), TOBN(0x1e6c9847, 0x641491ff)}, + {TOBN(0x3b574925, 0xd30c31f7), TOBN(0xb7eb72ba, 0xac2a2122), + TOBN(0x776a0dac, 0xef0859e7), TOBN(0x06fec314, 0x21900942)}}, + {{TOBN(0x2464bc10, 0xf8c22049), TOBN(0x9bfbcce7, 0x875ebf69), + TOBN(0xd7a88e2a, 0x4336326b), TOBN(0xda05261c, 0x5bc2acfa)}, + {TOBN(0xc29f5bdc, 0xeba7efc8), TOBN(0x471237ca, 0x25dbbf2e), + TOBN(0xa72773f2, 0x2975f127), TOBN(0xdc744e8e, 0x04d0b326)}}, + {{TOBN(0x38a7ed16, 0xa56edb73), TOBN(0x64357e37, 0x2c007e70), + TOBN(0xa167d15b, 0x5080b400), TOBN(0x07b41164, 0x23de4be1)}, + {TOBN(0xb2d91e32, 0x74c89883), TOBN(0x3c162821, 0x2882e7ed), + TOBN(0xad6b36ba, 0x7503e482), TOBN(0x48434e8e, 0x0ea34331)}}, + {{TOBN(0x79f4f24f, 0x2c7ae0b9), TOBN(0xc46fbf81, 0x1939b44a), + TOBN(0x76fefae8, 0x56595eb1), TOBN(0x417b66ab, 0xcd5f29c7)}, + {TOBN(0x5f2332b2, 0xc5ceec20), TOBN(0xd69661ff, 0xe1a1cae2), + TOBN(0x5ede7e52, 0x9b0286e6), TOBN(0x9d062529, 0xe276b993)}}, + {{TOBN(0x324794b0, 0x7e50122b), TOBN(0xdd744f8b, 0x4af07ca5), + TOBN(0x30a12f08, 0xd63fc97b), TOBN(0x39650f1a, 0x76626d9d)}, + {TOBN(0x101b47f7, 0x1fa38477), TOBN(0x3d815f19, 0xd4dc124f), + TOBN(0x1569ae95, 0xb26eb58a), TOBN(0xc3cde188, 0x95fb1887)}}, + {{TOBN(0x54e9f37b, 0xf9539a48), TOBN(0xb0100e06, 0x7408c1a5), + TOBN(0x821d9811, 0xea580cbb), TOBN(0x8af52d35, 0x86e50c56)}, + {TOBN(0xdfbd9d47, 0xdbbf698b), TOBN(0x2961a1ea, 0x03dc1c73), + TOBN(0x203d38f8, 0xe76a5df8), TOBN(0x08a53a68, 0x6def707a)}}, + {{TOBN(0x26eefb48, 0x1bee45d4), TOBN(0xb3cee346, 0x3c688036), + TOBN(0x463c5315, 0xc42f2469), TOBN(0x19d84d2e, 0x81378162)}, + {TOBN(0x22d7c3c5, 0x1c4d349f), TOBN(0x65965844, 0x163d59c5), + TOBN(0xcf198c56, 0xb8abceae), TOBN(0x6fb1fb1b, 0x628559d5)}}, + {{TOBN(0x8bbffd06, 0x07bf8fe3), TOBN(0x46259c58, 0x3467734b), + TOBN(0xd8953cea, 0x35f7f0d3), TOBN(0x1f0bece2, 0xd65b0ff1)}, + {TOBN(0xf7d5b4b3, 0xf3c72914), TOBN(0x29e8ea95, 0x3cb53389), + TOBN(0x4a365626, 0x836b6d46), TOBN(0xe849f910, 0xea174fde)}}, + {{TOBN(0x7ec62fbb, 0xf4737f21), TOBN(0xd8dba5ab, 0x6209f5ac), + TOBN(0x24b5d7a9, 0xa5f9adbe), TOBN(0x707d28f7, 0xa61dc768)}, + {TOBN(0x7711460b, 0xcaa999ea), TOBN(0xba7b174d, 0x1c92e4cc), + TOBN(0x3c4bab66, 0x18d4bf2d), TOBN(0xb8f0c980, 0xeb8bd279)}}, + {{TOBN(0x024bea9a, 0x324b4737), TOBN(0xfba9e423, 0x32a83bca), + TOBN(0x6e635643, 0xa232dced), TOBN(0x99619367, 0x2571c8ba)}, + {TOBN(0xe8c9f357, 0x54b7032b), TOBN(0xf936b3ba, 0x2442d54a), + TOBN(0x2263f0f0, 0x8290c65a), TOBN(0x48989780, 0xee2c7fdb)}}, + {{TOBN(0xadc5d55a, 0x13d4f95e), TOBN(0x737cff85, 0xad9b8500), + TOBN(0x271c557b, 0x8a73f43d), TOBN(0xbed617a4, 0xe18bc476)}, + {TOBN(0x66245401, 0x7dfd8ab2), TOBN(0xae7b89ae, 0x3a2870aa), + TOBN(0x1b555f53, 0x23a7e545), TOBN(0x6791e247, 0xbe057e4c)}}, + {{TOBN(0x860136ad, 0x324fa34d), TOBN(0xea111447, 0x4cbeae28), + TOBN(0x023a4270, 0xbedd3299), TOBN(0x3d5c3a7f, 0xc1c35c34)}, + {TOBN(0xb0f6db67, 0x8d0412d2), TOBN(0xd92625e2, 0xfcdc6b9a), + TOBN(0x92ae5ccc, 0x4e28a982), TOBN(0xea251c36, 0x47a3ce7e)}}, + {{TOBN(0x9d658932, 0x790691bf), TOBN(0xed610589, 0x06b736ae), + TOBN(0x712c2f04, 0xc0d63b6e), TOBN(0x5cf06fd5, 0xc63d488f)}, + {TOBN(0x97363fac, 0xd9588e41), TOBN(0x1f9bf762, 0x2b93257e), + TOBN(0xa9d1ffc4, 0x667acace), TOBN(0x1cf4a1aa, 0x0a061ecf)}}, + {{TOBN(0x40e48a49, 0xdc1818d0), TOBN(0x0643ff39, 0xa3621ab0), + TOBN(0x5768640c, 0xe39ef639), TOBN(0x1fc099ea, 0x04d86854)}, + {TOBN(0x9130b9c3, 0xeccd28fd), TOBN(0xd743cbd2, 0x7eec54ab), + TOBN(0x052b146f, 0xe5b475b6), TOBN(0x058d9a82, 0x900a7d1f)}}, + {{TOBN(0x65e02292, 0x91262b72), TOBN(0x96f924f9, 0xbb0edf03), + TOBN(0x5cfa59c8, 0xfe206842), TOBN(0xf6037004, 0x5eafa720)}, + {TOBN(0x5f30699e, 0x18d7dd96), TOBN(0x381e8782, 0xcbab2495), + TOBN(0x91669b46, 0xdd8be949), TOBN(0xb40606f5, 0x26aae8ef)}}, + {{TOBN(0x2812b839, 0xfc6751a4), TOBN(0x16196214, 0xfba800ef), + TOBN(0x4398d5ca, 0x4c1a2875), TOBN(0x720c00ee, 0x653d8349)}, + {TOBN(0xc2699eb0, 0xd820007c), TOBN(0x880ee660, 0xa39b5825), + TOBN(0x70694694, 0x471f6984), TOBN(0xf7d16ea8, 0xe3dda99a)}}, + {{TOBN(0x28d675b2, 0xc0519a23), TOBN(0x9ebf94fe, 0x4f6952e3), + TOBN(0xf28bb767, 0xa2294a8a), TOBN(0x85512b4d, 0xfe0af3f5)}, + {TOBN(0x18958ba8, 0x99b16a0d), TOBN(0x95c2430c, 0xba7548a7), + TOBN(0xb30d1b10, 0xa16be615), TOBN(0xe3ebbb97, 0x85bfb74c)}}, + {{TOBN(0xa3273cfe, 0x18549fdb), TOBN(0xf6e200bf, 0x4fcdb792), + TOBN(0x54a76e18, 0x83aba56c), TOBN(0x73ec66f6, 0x89ef6aa2)}, + {TOBN(0x8d17add7, 0xd1b9a305), TOBN(0xa959c5b9, 0xb7ae1b9d), + TOBN(0x88643522, 0x6bcc094a), TOBN(0xcc5616c4, 0xd7d429b9)}}, + {{TOBN(0xa6dada01, 0xe6a33f7c), TOBN(0xc6217a07, 0x9d4e70ad), + TOBN(0xd619a818, 0x09c15b7c), TOBN(0xea06b329, 0x0e80c854)}, + {TOBN(0x174811ce, 0xa5f5e7b9), TOBN(0x66dfc310, 0x787c65f4), + TOBN(0x4ea7bd69, 0x3316ab54), TOBN(0xc12c4acb, 0x1dcc0f70)}}, + {{TOBN(0xe4308d1a, 0x1e407dd9), TOBN(0xe8a3587c, 0x91afa997), + TOBN(0xea296c12, 0xab77b7a5), TOBN(0xb5ad49e4, 0x673c0d52)}, + {TOBN(0x40f9b2b2, 0x7006085a), TOBN(0xa88ff340, 0x87bf6ec2), + TOBN(0x978603b1, 0x4e3066a6), TOBN(0xb3f99fc2, 0xb5e486e2)}}, + {{TOBN(0x07b53f5e, 0xb2e63645), TOBN(0xbe57e547, 0x84c84232), + TOBN(0xd779c216, 0x7214d5cf), TOBN(0x617969cd, 0x029a3aca)}, + {TOBN(0xd17668cd, 0x8a7017a0), TOBN(0x77b4d19a, 0xbe9b7ee8), + TOBN(0x58fd0e93, 0x9c161776), TOBN(0xa8c4f4ef, 0xd5968a72)}}, + {{TOBN(0x296071cc, 0x67b3de77), TOBN(0xae3c0b8e, 0x634f7905), + TOBN(0x67e440c2, 0x8a7100c9), TOBN(0xbb8c3c1b, 0xeb4b9b42)}, + {TOBN(0x6d71e8ea, 0xc51b3583), TOBN(0x7591f5af, 0x9525e642), + TOBN(0xf73a2f7b, 0x13f509f3), TOBN(0x618487aa, 0x5619ac9b)}}, + {{TOBN(0x3a72e5f7, 0x9d61718a), TOBN(0x00413bcc, 0x7592d28c), + TOBN(0x7d9b11d3, 0x963c35cf), TOBN(0x77623bcf, 0xb90a46ed)}, + {TOBN(0xdeef273b, 0xdcdd2a50), TOBN(0x4a741f9b, 0x0601846e), + TOBN(0x33b89e51, 0x0ec6e929), TOBN(0xcb02319f, 0x8b7f22cd)}}, + {{TOBN(0xbbe1500d, 0x084bae24), TOBN(0x2f0ae8d7, 0x343d2693), + TOBN(0xacffb5f2, 0x7cdef811), TOBN(0xaa0c030a, 0x263fb94f)}, + {TOBN(0x6eef0d61, 0xa0f442de), TOBN(0xf92e1817, 0x27b139d3), + TOBN(0x1ae6deb7, 0x0ad8bc28), TOBN(0xa89e38dc, 0xc0514130)}}, + {{TOBN(0x81eeb865, 0xd2fdca23), TOBN(0x5a15ee08, 0xcc8ef895), + TOBN(0x768fa10a, 0x01905614), TOBN(0xeff5b8ef, 0x880ee19b)}, + {TOBN(0xf0c0cabb, 0xcb1c8a0e), TOBN(0x2e1ee9cd, 0xb8c838f9), + TOBN(0x0587d8b8, 0x8a4a14c0), TOBN(0xf6f27896, 0x2ff698e5)}}, + {{TOBN(0xed38ef1c, 0x89ee6256), TOBN(0xf44ee1fe, 0x6b353b45), + TOBN(0x9115c0c7, 0x70e903b3), TOBN(0xc78ec0a1, 0x818f31df)}, + {TOBN(0x6c003324, 0xb7dccbc6), TOBN(0xd96dd1f3, 0x163bbc25), + TOBN(0x33aa82dd, 0x5cedd805), TOBN(0x123aae4f, 0x7f7eb2f1)}}, + {{TOBN(0x1723fcf5, 0xa26262cd), TOBN(0x1f7f4d5d, 0x0060ebd5), + TOBN(0xf19c5c01, 0xb2eaa3af), TOBN(0x2ccb9b14, 0x9790accf)}, + {TOBN(0x1f9c1cad, 0x52324aa6), TOBN(0x63200526, 0x7247df54), + TOBN(0x5732fe42, 0xbac96f82), TOBN(0x52fe771f, 0x01a1c384)}}, + {{TOBN(0x546ca13d, 0xb1001684), TOBN(0xb56b4eee, 0xa1709f75), + TOBN(0x266545a9, 0xd5db8672), TOBN(0xed971c90, 0x1e8f3cfb)}, + {TOBN(0x4e7d8691, 0xe3a07b29), TOBN(0x7570d9ec, 0xe4b696b9), + TOBN(0xdc5fa067, 0x7bc7e9ae), TOBN(0x68b44caf, 0xc82c4844)}}, + {{TOBN(0x519d34b3, 0xbf44da80), TOBN(0x283834f9, 0x5ab32e66), + TOBN(0x6e608797, 0x6278a000), TOBN(0x1e62960e, 0x627312f6)}, + {TOBN(0x9b87b27b, 0xe6901c55), TOBN(0x80e78538, 0x24fdbc1f), + TOBN(0xbbbc0951, 0x2facc27d), TOBN(0x06394239, 0xac143b5a)}}, + {{TOBN(0x35bb4a40, 0x376c1944), TOBN(0x7cb62694, 0x63da1511), + TOBN(0xafd29161, 0xb7148a3b), TOBN(0xa6f9d9ed, 0x4e2ea2ee)}, + {TOBN(0x15dc2ca2, 0x880dd212), TOBN(0x903c3813, 0xa61139a9), + TOBN(0x2aa7b46d, 0x6c0f8785), TOBN(0x36ce2871, 0x901c60ff)}}, + {{TOBN(0xc683b028, 0xe10d9c12), TOBN(0x7573baa2, 0x032f33d3), + TOBN(0x87a9b1f6, 0x67a31b58), TOBN(0xfd3ed11a, 0xf4ffae12)}, + {TOBN(0x83dcaa9a, 0x0cb2748e), TOBN(0x8239f018, 0x5d6fdf16), + TOBN(0xba67b49c, 0x72753941), TOBN(0x2beec455, 0xc321cb36)}}, + {{TOBN(0x88015606, 0x3f8b84ce), TOBN(0x76417083, 0x8d38c86f), + TOBN(0x054f1ca7, 0x598953dd), TOBN(0xc939e110, 0x4e8e7429)}, + {TOBN(0x9b1ac2b3, 0x5a914f2f), TOBN(0x39e35ed3, 0xe74b8f9c), + TOBN(0xd0debdb2, 0x781b2fb0), TOBN(0x1585638f, 0x2d997ba2)}}, + {{TOBN(0x9c4b646e, 0x9e2fce99), TOBN(0x68a21081, 0x1e80857f), + TOBN(0x06d54e44, 0x3643b52a), TOBN(0xde8d6d63, 0x0d8eb843)}, + {TOBN(0x70321563, 0x42146a0a), TOBN(0x8ba826f2, 0x5eaa3622), + TOBN(0x227a58bd, 0x86138787), TOBN(0x43b6c03c, 0x10281d37)}}, + {{TOBN(0x6326afbb, 0xb54dde39), TOBN(0x744e5e8a, 0xdb6f2d5f), + TOBN(0x48b2a99a, 0xcff158e1), TOBN(0xa93c8fa0, 0xef87918f)}, + {TOBN(0x2182f956, 0xde058c5c), TOBN(0x216235d2, 0x936f9e7a), + TOBN(0xace0c0db, 0xd2e31e67), TOBN(0xc96449bf, 0xf23ac3e7)}}, + {{TOBN(0x7e9a2874, 0x170693bd), TOBN(0xa28e14fd, 0xa45e6335), + TOBN(0x5757f6b3, 0x56427344), TOBN(0x822e4556, 0xacf8edf9)}, + {TOBN(0x2b7a6ee2, 0xe6a285cd), TOBN(0x5866f211, 0xa9df3af0), + TOBN(0x40dde2dd, 0xf845b844), TOBN(0x986c3726, 0x110e5e49)}}, + {{TOBN(0x73680c2a, 0xf7172277), TOBN(0x57b94f0f, 0x0cccb244), + TOBN(0xbdff7267, 0x2d438ca7), TOBN(0xbad1ce11, 0xcf4663fd)}, + {TOBN(0x9813ed9d, 0xd8f71cae), TOBN(0xf43272a6, 0x961fdaa6), + TOBN(0xbeff0119, 0xbd6d1637), TOBN(0xfebc4f91, 0x30361978)}}, + {{TOBN(0x02b37a95, 0x2f41deff), TOBN(0x0e44a59a, 0xe63b89b7), + TOBN(0x673257dc, 0x143ff951), TOBN(0x19c02205, 0xd752baf4)}, + {TOBN(0x46c23069, 0xc4b7d692), TOBN(0x2e6392c3, 0xfd1502ac), + TOBN(0x6057b1a2, 0x1b220846), TOBN(0xe51ff946, 0x0c1b5b63)}}}, + {{{TOBN(0x6e85cb51, 0x566c5c43), TOBN(0xcff9c919, 0x3597f046), + TOBN(0x9354e90c, 0x4994d94a), TOBN(0xe0a39332, 0x2147927d)}, + {TOBN(0x8427fac1, 0x0dc1eb2b), TOBN(0x88cfd8c2, 0x2ff319fa), + TOBN(0xe2d4e684, 0x01965274), TOBN(0xfa2e067d, 0x67aaa746)}}, + {{TOBN(0xb6d92a7f, 0x3e5f9f11), TOBN(0x9afe153a, 0xd6cb3b8e), + TOBN(0x4d1a6dd7, 0xddf800bd), TOBN(0xf6c13cc0, 0xcaf17e19)}, + {TOBN(0x15f6c58e, 0x325fc3ee), TOBN(0x71095400, 0xa31dc3b2), + TOBN(0x168e7c07, 0xafa3d3e7), TOBN(0x3f8417a1, 0x94c7ae2d)}}, + {{TOBN(0xec234772, 0x813b230d), TOBN(0x634d0f5f, 0x17344427), + TOBN(0x11548ab1, 0xd77fc56a), TOBN(0x7fab1750, 0xce06af77)}, + {TOBN(0xb62c10a7, 0x4f7c4f83), TOBN(0xa7d2edc4, 0x220a67d9), + TOBN(0x1c404170, 0x921209a0), TOBN(0x0b9815a0, 0xface59f0)}}, + {{TOBN(0x2842589b, 0x319540c3), TOBN(0x18490f59, 0xa283d6f8), + TOBN(0xa2731f84, 0xdaae9fcb), TOBN(0x3db6d960, 0xc3683ba0)}, + {TOBN(0xc85c63bb, 0x14611069), TOBN(0xb19436af, 0x0788bf05), + TOBN(0x905459df, 0x347460d2), TOBN(0x73f6e094, 0xe11a7db1)}}, + {{TOBN(0xdc7f938e, 0xb6357f37), TOBN(0xc5d00f79, 0x2bd8aa62), + TOBN(0xc878dcb9, 0x2ca979fc), TOBN(0x37e83ed9, 0xeb023a99)}, + {TOBN(0x6b23e273, 0x1560bf3d), TOBN(0x1086e459, 0x1d0fae61), + TOBN(0x78248316, 0x9a9414bd), TOBN(0x1b956bc0, 0xf0ea9ea1)}}, + {{TOBN(0x7b85bb91, 0xc31b9c38), TOBN(0x0c5aa90b, 0x48ef57b5), + TOBN(0xdedeb169, 0xaf3bab6f), TOBN(0xe610ad73, 0x2d373685)}, + {TOBN(0xf13870df, 0x02ba8e15), TOBN(0x0337edb6, 0x8ca7f771), + TOBN(0xe4acf747, 0xb62c036c), TOBN(0xd921d576, 0xb6b94e81)}}, + {{TOBN(0xdbc86439, 0x2c422f7a), TOBN(0xfb635362, 0xed348898), + TOBN(0x83084668, 0xc45bfcd1), TOBN(0xc357c9e3, 0x2b315e11)}, + {TOBN(0xb173b540, 0x5b2e5b8c), TOBN(0x7e946931, 0xe102b9a4), + TOBN(0x17c890eb, 0x7b0fb199), TOBN(0xec225a83, 0xd61b662b)}}, + {{TOBN(0xf306a3c8, 0xee3c76cb), TOBN(0x3cf11623, 0xd32a1f6e), + TOBN(0xe6d5ab64, 0x6863e956), TOBN(0x3b8a4cbe, 0x5c005c26)}, + {TOBN(0xdcd529a5, 0x9ce6bb27), TOBN(0xc4afaa52, 0x04d4b16f), + TOBN(0xb0624a26, 0x7923798d), TOBN(0x85e56df6, 0x6b307fab)}}, + {{TOBN(0x0281893c, 0x2bf29698), TOBN(0x91fc19a4, 0xd7ce7603), + TOBN(0x75a5dca3, 0xad9a558f), TOBN(0x40ceb3fa, 0x4d50bf77)}, + {TOBN(0x1baf6060, 0xbc9ba369), TOBN(0x927e1037, 0x597888c2), + TOBN(0xd936bf19, 0x86a34c07), TOBN(0xd4cf10c1, 0xc34ae980)}}, + {{TOBN(0x3a3e5334, 0x859dd614), TOBN(0x9c475b5b, 0x18d0c8ee), + TOBN(0x63080d1f, 0x07cd51d5), TOBN(0xc9c0d0a6, 0xb88b4326)}, + {TOBN(0x1ac98691, 0xc234296f), TOBN(0x2a0a83a4, 0x94887fb6), + TOBN(0x56511427, 0x0cea9cf2), TOBN(0x5230a6e8, 0xa24802f5)}}, + {{TOBN(0xf7a2bf0f, 0x72e3d5c1), TOBN(0x37717446, 0x4f21439e), + TOBN(0xfedcbf25, 0x9ce30334), TOBN(0xe0030a78, 0x7ce202f9)}, + {TOBN(0x6f2d9ebf, 0x1202e9ca), TOBN(0xe79dde6c, 0x75e6e591), + TOBN(0xf52072af, 0xf1dac4f8), TOBN(0x6c8d087e, 0xbb9b404d)}}, + {{TOBN(0xad0fc73d, 0xbce913af), TOBN(0x909e587b, 0x458a07cb), + TOBN(0x1300da84, 0xd4f00c8a), TOBN(0x425cd048, 0xb54466ac)}, + {TOBN(0xb59cb9be, 0x90e9d8bf), TOBN(0x991616db, 0x3e431b0e), + TOBN(0xd3aa117a, 0x531aecff), TOBN(0x91af92d3, 0x59f4dc3b)}}, + {{TOBN(0x9b1ec292, 0xe93fda29), TOBN(0x76bb6c17, 0xe97d91bc), + TOBN(0x7509d95f, 0xaface1e6), TOBN(0x3653fe47, 0xbe855ae3)}, + {TOBN(0x73180b28, 0x0f680e75), TOBN(0x75eefd1b, 0xeeb6c26c), + TOBN(0xa4cdf29f, 0xb66d4236), TOBN(0x2d70a997, 0x6b5821d8)}}, + {{TOBN(0x7a3ee207, 0x20445c36), TOBN(0x71d1ac82, 0x59877174), + TOBN(0x0fc539f7, 0x949f73e9), TOBN(0xd05cf3d7, 0x982e3081)}, + {TOBN(0x8758e20b, 0x7b1c7129), TOBN(0xffadcc20, 0x569e61f2), + TOBN(0xb05d3a2f, 0x59544c2d), TOBN(0xbe16f5c1, 0x9fff5e53)}}, + {{TOBN(0x73cf65b8, 0xaad58135), TOBN(0x622c2119, 0x037aa5be), + TOBN(0x79373b3f, 0x646fd6a0), TOBN(0x0e029db5, 0x0d3978cf)}, + {TOBN(0x8bdfc437, 0x94fba037), TOBN(0xaefbd687, 0x620797a6), + TOBN(0x3fa5382b, 0xbd30d38e), TOBN(0x7627cfbf, 0x585d7464)}}, + {{TOBN(0xb2330fef, 0x4e4ca463), TOBN(0xbcef7287, 0x3566cc63), + TOBN(0xd161d2ca, 0xcf780900), TOBN(0x135dc539, 0x5b54827d)}, + {TOBN(0x638f052e, 0x27bf1bc6), TOBN(0x10a224f0, 0x07dfa06c), + TOBN(0xe973586d, 0x6d3321da), TOBN(0x8b0c5738, 0x26152c8f)}}, + {{TOBN(0x07ef4f2a, 0x34606074), TOBN(0x80fe7fe8, 0xa0f7047a), + TOBN(0x3d1a8152, 0xe1a0e306), TOBN(0x32cf43d8, 0x88da5222)}, + {TOBN(0xbf89a95f, 0x5f02ffe6), TOBN(0x3d9eb9a4, 0x806ad3ea), + TOBN(0x012c17bb, 0x79c8e55e), TOBN(0xfdcd1a74, 0x99c81dac)}}, + {{TOBN(0x7043178b, 0xb9556098), TOBN(0x4090a1df, 0x801c3886), + TOBN(0x759800ff, 0x9b67b912), TOBN(0x3e5c0304, 0x232620c8)}, + {TOBN(0x4b9d3c4b, 0x70dceeca), TOBN(0xbb2d3c15, 0x181f648e), + TOBN(0xf981d837, 0x6e33345c), TOBN(0xb626289b, 0x0cf2297a)}}, + {{TOBN(0x766ac659, 0x8baebdcf), TOBN(0x1a28ae09, 0x75df01e5), + TOBN(0xb71283da, 0x375876d8), TOBN(0x4865a96d, 0x607b9800)}, + {TOBN(0x25dd1bcd, 0x237936b2), TOBN(0x332f4f4b, 0x60417494), + TOBN(0xd0923d68, 0x370a2147), TOBN(0x497f5dfb, 0xdc842203)}}, + {{TOBN(0x9dc74cbd, 0x32be5e0f), TOBN(0x7475bcb7, 0x17a01375), + TOBN(0x438477c9, 0x50d872b1), TOBN(0xcec67879, 0xffe1d63d)}, + {TOBN(0x9b006014, 0xd8578c70), TOBN(0xc9ad99a8, 0x78bb6b8b), + TOBN(0x6799008e, 0x11fb3806), TOBN(0xcfe81435, 0xcd44cab3)}}, + {{TOBN(0xa2ee1582, 0x2f4fb344), TOBN(0xb8823450, 0x483fa6eb), + TOBN(0x622d323d, 0x652c7749), TOBN(0xd8474a98, 0xbeb0a15b)}, + {TOBN(0xe43c154d, 0x5d1c00d0), TOBN(0x7fd581d9, 0x0e3e7aac), + TOBN(0x2b44c619, 0x2525ddf8), TOBN(0x67a033eb, 0xb8ae9739)}}, + {{TOBN(0x113ffec1, 0x9ef2d2e4), TOBN(0x1bf6767e, 0xd5a0ea7f), + TOBN(0x57fff75e, 0x03714c0a), TOBN(0xa23c422e, 0x0a23e9ee)}, + {TOBN(0xdd5f6b2d, 0x540f83af), TOBN(0xc2c2c27e, 0x55ea46a7), + TOBN(0xeb6b4246, 0x672a1208), TOBN(0xd13599f7, 0xae634f7a)}}, + {{TOBN(0xcf914b5c, 0xd7b32c6e), TOBN(0x61a5a640, 0xeaf61814), + TOBN(0x8dc3df8b, 0x208a1bbb), TOBN(0xef627fd6, 0xb6d79aa5)}, + {TOBN(0x44232ffc, 0xc4c86bc8), TOBN(0xe6f9231b, 0x061539fe), + TOBN(0x1d04f25a, 0x958b9533), TOBN(0x180cf934, 0x49e8c885)}}, + {{TOBN(0x89689595, 0x9884aaf7), TOBN(0xb1959be3, 0x07b348a6), + TOBN(0x96250e57, 0x3c147c87), TOBN(0xae0efb3a, 0xdd0c61f8)}, + {TOBN(0xed00745e, 0xca8c325e), TOBN(0x3c911696, 0xecff3f70), + TOBN(0x73acbc65, 0x319ad41d), TOBN(0x7b01a020, 0xf0b1c7ef)}}, + {{TOBN(0xea32b293, 0x63a1483f), TOBN(0x89eabe71, 0x7a248f96), + TOBN(0x9c6231d3, 0x343157e5), TOBN(0x93a375e5, 0xdf3c546d)}, + {TOBN(0xe76e9343, 0x6a2afe69), TOBN(0xc4f89100, 0xe166c88e), + TOBN(0x248efd0d, 0x4f872093), TOBN(0xae0eb3ea, 0x8fe0ea61)}}, + {{TOBN(0xaf89790d, 0x9d79046e), TOBN(0x4d650f2d, 0x6cee0976), + TOBN(0xa3935d9a, 0x43071eca), TOBN(0x66fcd2c9, 0x283b0bfe)}, + {TOBN(0x0e665eb5, 0x696605f1), TOBN(0xe77e5d07, 0xa54cd38d), + TOBN(0x90ee050a, 0x43d950cf), TOBN(0x86ddebda, 0xd32e69b5)}}, + {{TOBN(0x6ad94a3d, 0xfddf7415), TOBN(0xf7fa1309, 0x3f6e8d5a), + TOBN(0xc4831d1d, 0xe9957f75), TOBN(0x7de28501, 0xd5817447)}, + {TOBN(0x6f1d7078, 0x9e2aeb6b), TOBN(0xba2b9ff4, 0xf67a53c2), + TOBN(0x36963767, 0xdf9defc3), TOBN(0x479deed3, 0x0d38022c)}}, + {{TOBN(0xd2edb89b, 0x3a8631e8), TOBN(0x8de855de, 0x7a213746), + TOBN(0xb2056cb7, 0xb00c5f11), TOBN(0xdeaefbd0, 0x2c9b85e4)}, + {TOBN(0x03f39a8d, 0xd150892d), TOBN(0x37b84686, 0x218b7985), + TOBN(0x36296dd8, 0xb7375f1a), TOBN(0x472cd4b1, 0xb78e898e)}}, + {{TOBN(0x15dff651, 0xe9f05de9), TOBN(0xd4045069, 0x2ce98ba9), + TOBN(0x8466a7ae, 0x9b38024c), TOBN(0xb910e700, 0xe5a6b5ef)}, + {TOBN(0xae1c56ea, 0xb3aa8f0d), TOBN(0xbab2a507, 0x7eee74a6), + TOBN(0x0dca11e2, 0x4b4c4620), TOBN(0xfd896e2e, 0x4c47d1f4)}}, + {{TOBN(0xeb45ae53, 0x308fbd93), TOBN(0x46cd5a2e, 0x02c36fda), + TOBN(0x6a3d4e90, 0xbaa48385), TOBN(0xdd55e62e, 0x9dbe9960)}, + {TOBN(0xa1406aa0, 0x2a81ede7), TOBN(0x6860dd14, 0xf9274ea7), + TOBN(0xcfdcb0c2, 0x80414f86), TOBN(0xff410b10, 0x22f94327)}}, + {{TOBN(0x5a33cc38, 0x49ad467b), TOBN(0xefb48b6c, 0x0a7335f1), + TOBN(0x14fb54a4, 0xb153a360), TOBN(0x604aa9d2, 0xb52469cc)}, + {TOBN(0x5e9dc486, 0x754e48e9), TOBN(0x693cb455, 0x37471e8e), + TOBN(0xfb2fd7cd, 0x8d3b37b6), TOBN(0x63345e16, 0xcf09ff07)}}, + {{TOBN(0x9910ba6b, 0x23a5d896), TOBN(0x1fe19e35, 0x7fe4364e), + TOBN(0x6e1da8c3, 0x9a33c677), TOBN(0x15b4488b, 0x29fd9fd0)}, + {TOBN(0x1f439254, 0x1a1f22bf), TOBN(0x920a8a70, 0xab8163e8), + TOBN(0x3fd1b249, 0x07e5658e), TOBN(0xf2c4f79c, 0xb6ec839b)}}, + {{TOBN(0x1abbc3d0, 0x4aa38d1b), TOBN(0x3b0db35c, 0xb5d9510e), + TOBN(0x1754ac78, 0x3e60dec0), TOBN(0x53272fd7, 0xea099b33)}, + {TOBN(0x5fb0494f, 0x07a8e107), TOBN(0x4a89e137, 0x6a8191fa), + TOBN(0xa113b7f6, 0x3c4ad544), TOBN(0x88a2e909, 0x6cb9897b)}}, + {{TOBN(0x17d55de3, 0xb44a3f84), TOBN(0xacb2f344, 0x17c6c690), + TOBN(0x32088168, 0x10232390), TOBN(0xf2e8a61f, 0x6c733bf7)}, + {TOBN(0xa774aab6, 0x9c2d7652), TOBN(0xfb5307e3, 0xed95c5bc), + TOBN(0xa05c73c2, 0x4981f110), TOBN(0x1baae31c, 0xa39458c9)}}, + {{TOBN(0x1def185b, 0xcbea62e7), TOBN(0xe8ac9eae, 0xeaf63059), + TOBN(0x098a8cfd, 0x9921851c), TOBN(0xd959c3f1, 0x3abe2f5b)}, + {TOBN(0xa4f19525, 0x20e40ae5), TOBN(0x320789e3, 0x07a24aa1), + TOBN(0x259e6927, 0x7392b2bc), TOBN(0x58f6c667, 0x1918668b)}}, + {{TOBN(0xce1db2bb, 0xc55d2d8b), TOBN(0x41d58bb7, 0xf4f6ca56), + TOBN(0x7650b680, 0x8f877614), TOBN(0x905e16ba, 0xf4c349ed)}, + {TOBN(0xed415140, 0xf661acac), TOBN(0x3b8784f0, 0xcb2270af), + TOBN(0x3bc280ac, 0x8a402cba), TOBN(0xd53f7146, 0x0937921a)}}, + {{TOBN(0xc03c8ee5, 0xe5681e83), TOBN(0x62126105, 0xf6ac9e4a), + TOBN(0x9503a53f, 0x936b1a38), TOBN(0x3d45e2d4, 0x782fecbd)}, + {TOBN(0x69a5c439, 0x76e8ae98), TOBN(0xb53b2eeb, 0xbfb4b00e), + TOBN(0xf1674712, 0x72386c89), TOBN(0x30ca34a2, 0x4268bce4)}}, + {{TOBN(0x7f1ed86c, 0x78341730), TOBN(0x8ef5beb8, 0xb525e248), + TOBN(0xbbc489fd, 0xb74fbf38), TOBN(0x38a92a0e, 0x91a0b382)}, + {TOBN(0x7a77ba3f, 0x22433ccf), TOBN(0xde8362d6, 0xa29f05a9), + TOBN(0x7f6a30ea, 0x61189afc), TOBN(0x693b5505, 0x59ef114f)}}, + {{TOBN(0x50266bc0, 0xcd1797a1), TOBN(0xea17b47e, 0xf4b7af2d), + TOBN(0xd6c4025c, 0x3df9483e), TOBN(0x8cbb9d9f, 0xa37b18c9)}, + {TOBN(0x91cbfd9c, 0x4d8424cf), TOBN(0xdb7048f1, 0xab1c3506), + TOBN(0x9eaf641f, 0x028206a3), TOBN(0xf986f3f9, 0x25bdf6ce)}}, + {{TOBN(0x262143b5, 0x224c08dc), TOBN(0x2bbb09b4, 0x81b50c91), + TOBN(0xc16ed709, 0xaca8c84f), TOBN(0xa6210d9d, 0xb2850ca8)}, + {TOBN(0x6d8df67a, 0x09cb54d6), TOBN(0x91eef6e0, 0x500919a4), + TOBN(0x90f61381, 0x0f132857), TOBN(0x9acede47, 0xf8d5028b)}}, + {{TOBN(0x844d1b71, 0x90b771c3), TOBN(0x563b71e4, 0xba6426be), + TOBN(0x2efa2e83, 0xbdb802ff), TOBN(0x3410cbab, 0xab5b4a41)}, + {TOBN(0x555b2d26, 0x30da84dd), TOBN(0xd0711ae9, 0xee1cc29a), + TOBN(0xcf3e8c60, 0x2f547792), TOBN(0x03d7d5de, 0xdc678b35)}}, + {{TOBN(0x071a2fa8, 0xced806b8), TOBN(0x222e6134, 0x697f1478), + TOBN(0xdc16fd5d, 0xabfcdbbf), TOBN(0x44912ebf, 0x121b53b8)}, + {TOBN(0xac943674, 0x2496c27c), TOBN(0x8ea3176c, 0x1ffc26b0), + TOBN(0xb6e224ac, 0x13debf2c), TOBN(0x524cc235, 0xf372a832)}}, + {{TOBN(0xd706e1d8, 0x9f6f1b18), TOBN(0x2552f005, 0x44cce35b), + TOBN(0x8c8326c2, 0xa88e31fc), TOBN(0xb5468b2c, 0xf9552047)}, + {TOBN(0xce683e88, 0x3ff90f2b), TOBN(0x77947bdf, 0x2f0a5423), + TOBN(0xd0a1b28b, 0xed56e328), TOBN(0xaee35253, 0xc20134ac)}}, + {{TOBN(0x7e98367d, 0x3567962f), TOBN(0x379ed61f, 0x8188bffb), + TOBN(0x73bba348, 0xfaf130a1), TOBN(0x6c1f75e1, 0x904ed734)}, + {TOBN(0x18956642, 0x3b4a79fc), TOBN(0xf20bc83d, 0x54ef4493), + TOBN(0x836d425d, 0x9111eca1), TOBN(0xe5b5c318, 0x009a8dcf)}}, + {{TOBN(0x3360b25d, 0x13221bc5), TOBN(0x707baad2, 0x6b3eeaf7), + TOBN(0xd7279ed8, 0x743a95a1), TOBN(0x7450a875, 0x969e809f)}, + {TOBN(0x32b6bd53, 0xe5d0338f), TOBN(0x1e77f7af, 0x2b883bbc), + TOBN(0x90da12cc, 0x1063ecd0), TOBN(0xe2697b58, 0xc315be47)}}, + {{TOBN(0x2771a5bd, 0xda85d534), TOBN(0x53e78c1f, 0xff980eea), + TOBN(0xadf1cf84, 0x900385e7), TOBN(0x7d3b14f6, 0xc9387b62)}, + {TOBN(0x170e74b0, 0xcb8f2bd2), TOBN(0x2d50b486, 0x827fa993), + TOBN(0xcdbe8c9a, 0xf6f32bab), TOBN(0x55e906b0, 0xc3b93ab8)}}, + {{TOBN(0x747f22fc, 0x8fe280d1), TOBN(0xcd8e0de5, 0xb2e114ab), + TOBN(0x5ab7dbeb, 0xe10b68b0), TOBN(0x9dc63a9c, 0xa480d4b2)}, + {TOBN(0x78d4bc3b, 0x4be1495f), TOBN(0x25eb3db8, 0x9359122d), + TOBN(0x3f8ac05b, 0x0809cbdc), TOBN(0xbf4187bb, 0xd37c702f)}}, + {{TOBN(0x84cea069, 0x1416a6a5), TOBN(0x8f860c79, 0x43ef881c), + TOBN(0x41311f8a, 0x38038a5d), TOBN(0xe78c2ec0, 0xfc612067)}, + {TOBN(0x494d2e81, 0x5ad73581), TOBN(0xb4cc9e00, 0x59604097), + TOBN(0xff558aec, 0xf3612cba), TOBN(0x35beef7a, 0x9e36c39e)}}, + {{TOBN(0x1845c7cf, 0xdbcf41b9), TOBN(0x5703662a, 0xaea997c0), + TOBN(0x8b925afe, 0xe402f6d8), TOBN(0xd0a1b1ae, 0x4dd72162)}, + {TOBN(0x9f47b375, 0x03c41c4b), TOBN(0xa023829b, 0x0391d042), + TOBN(0x5f5045c3, 0x503b8b0a), TOBN(0x123c2688, 0x98c010e5)}}, + {{TOBN(0x324ec0cc, 0x36ba06ee), TOBN(0xface3115, 0x3dd2cc0c), + TOBN(0xb364f3be, 0xf333e91f), TOBN(0xef8aff73, 0x28e832b0)}, + {TOBN(0x1e9bad04, 0x2d05841b), TOBN(0x42f0e3df, 0x356a21e2), + TOBN(0xa3270bcb, 0x4add627e), TOBN(0xb09a8158, 0xd322e711)}}, + {{TOBN(0x86e326a1, 0x0fee104a), TOBN(0xad7788f8, 0x3703f65d), + TOBN(0x7e765430, 0x47bc4833), TOBN(0x6cee582b, 0x2b9b893a)}, + {TOBN(0x9cd2a167, 0xe8f55a7b), TOBN(0xefbee3c6, 0xd9e4190d), + TOBN(0x33ee7185, 0xd40c2e9d), TOBN(0x844cc9c5, 0xa380b548)}}, + {{TOBN(0x323f8ecd, 0x66926e04), TOBN(0x0001e38f, 0x8110c1ba), + TOBN(0x8dbcac12, 0xfc6a7f07), TOBN(0xd65e1d58, 0x0cec0827)}, + {TOBN(0xd2cd4141, 0xbe76ca2d), TOBN(0x7895cf5c, 0xe892f33a), + TOBN(0x956d230d, 0x367139d2), TOBN(0xa91abd3e, 0xd012c4c1)}}, + {{TOBN(0x34fa4883, 0x87eb36bf), TOBN(0xc5f07102, 0x914b8fb4), + TOBN(0x90f0e579, 0xadb9c95f), TOBN(0xfe6ea8cb, 0x28888195)}, + {TOBN(0x7b9b5065, 0xedfa9284), TOBN(0x6c510bd2, 0x2b8c8d65), + TOBN(0xd7b8ebef, 0xcbe8aafd), TOBN(0xedb3af98, 0x96b1da07)}}, + {{TOBN(0x28ff779d, 0x6295d426), TOBN(0x0c4f6ac7, 0x3fa3ad7b), + TOBN(0xec44d054, 0x8b8e2604), TOBN(0x9b32a66d, 0x8b0050e1)}, + {TOBN(0x1f943366, 0xf0476ce2), TOBN(0x7554d953, 0xa602c7b4), + TOBN(0xbe35aca6, 0x524f2809), TOBN(0xb6881229, 0xfd4edbea)}}, + {{TOBN(0xe8cd0c8f, 0x508efb63), TOBN(0x9eb5b5c8, 0x6abcefc7), + TOBN(0xf5621f5f, 0xb441ab4f), TOBN(0x79e6c046, 0xb76a2b22)}, + {TOBN(0x74a4792c, 0xe37a1f69), TOBN(0xcbd252cb, 0x03542b60), + TOBN(0x785f65d5, 0xb3c20bd3), TOBN(0x8dea6143, 0x4fabc60c)}}, + {{TOBN(0x45e21446, 0xde673629), TOBN(0x57f7aa1e, 0x703c2d21), + TOBN(0xa0e99b7f, 0x98c868c7), TOBN(0x4e42f66d, 0x8b641676)}, + {TOBN(0x602884dc, 0x91077896), TOBN(0xa0d690cf, 0xc2c9885b), + TOBN(0xfeb4da33, 0x3b9a5187), TOBN(0x5f789598, 0x153c87ee)}}, + {{TOBN(0x2192dd47, 0x52b16dba), TOBN(0xdeefc0e6, 0x3524c1b1), + TOBN(0x465ea76e, 0xe4383693), TOBN(0x79401711, 0x361b8d98)}, + {TOBN(0xa5f9ace9, 0xf21a15cb), TOBN(0x73d26163, 0xefee9aeb), + TOBN(0xcca844b3, 0xe677016c), TOBN(0x6c122b07, 0x57eaee06)}}, + {{TOBN(0xb782dce7, 0x15f09690), TOBN(0x508b9b12, 0x2dfc0fc9), + TOBN(0x9015ab4b, 0x65d89fc6), TOBN(0x5e79dab7, 0xd6d5bb0f)}, + {TOBN(0x64f021f0, 0x6c775aa2), TOBN(0xdf09d8cc, 0x37c7eca1), + TOBN(0x9a761367, 0xef2fa506), TOBN(0xed4ca476, 0x5b81eec6)}}, + {{TOBN(0x262ede36, 0x10bbb8b5), TOBN(0x0737ce83, 0x0641ada3), + TOBN(0x4c94288a, 0xe9831ccc), TOBN(0x487fc1ce, 0x8065e635)}, + {TOBN(0xb13d7ab3, 0xb8bb3659), TOBN(0xdea5df3e, 0x855e4120), + TOBN(0xb9a18573, 0x85eb0244), TOBN(0x1a1b8ea3, 0xa7cfe0a3)}}, + {{TOBN(0x3b837119, 0x67b0867c), TOBN(0x8d5e0d08, 0x9d364520), + TOBN(0x52dccc1e, 0xd930f0e3), TOBN(0xefbbcec7, 0xbf20bbaf)}, + {TOBN(0x99cffcab, 0x0263ad10), TOBN(0xd8199e6d, 0xfcd18f8a), + TOBN(0x64e2773f, 0xe9f10617), TOBN(0x0079e8e1, 0x08704848)}}, + {{TOBN(0x1169989f, 0x8a342283), TOBN(0x8097799c, 0xa83012e6), + TOBN(0xece966cb, 0x8a6a9001), TOBN(0x93b3afef, 0x072ac7fc)}, + {TOBN(0xe6893a2a, 0x2db3d5ba), TOBN(0x263dc462, 0x89bf4fdc), + TOBN(0x8852dfc9, 0xe0396673), TOBN(0x7ac70895, 0x3af362b6)}}, + {{TOBN(0xbb9cce4d, 0x5c2f342b), TOBN(0xbf80907a, 0xb52d7aae), + TOBN(0x97f3d3cd, 0x2161bcd0), TOBN(0xb25b0834, 0x0962744d)}, + {TOBN(0xc5b18ea5, 0x6c3a1dda), TOBN(0xfe4ec7eb, 0x06c92317), + TOBN(0xb787b890, 0xad1c4afe), TOBN(0xdccd9a92, 0x0ede801a)}}, + {{TOBN(0x9ac6ddda, 0xdb58da1f), TOBN(0x22bbc12f, 0xb8cae6ee), + TOBN(0xc6f8bced, 0x815c4a43), TOBN(0x8105a92c, 0xf96480c7)}, + {TOBN(0x0dc3dbf3, 0x7a859d51), TOBN(0xe3ec7ce6, 0x3041196b), + TOBN(0xd9f64b25, 0x0d1067c9), TOBN(0xf2321321, 0x3d1f8dd8)}}, + {{TOBN(0x8b5c619c, 0x76497ee8), TOBN(0x5d2b0ac6, 0xc717370e), + TOBN(0x98204cb6, 0x4fcf68e1), TOBN(0x0bdec211, 0x62bc6792)}, + {TOBN(0x6973ccef, 0xa63b1011), TOBN(0xf9e3fa97, 0xe0de1ac5), + TOBN(0x5efb693e, 0x3d0e0c8b), TOBN(0x037248e9, 0xd2d4fcb4)}}}, + {{{TOBN(0x80802dc9, 0x1ec34f9e), TOBN(0xd8772d35, 0x33810603), + TOBN(0x3f06d66c, 0x530cb4f3), TOBN(0x7be5ed0d, 0xc475c129)}, + {TOBN(0xcb9e3c19, 0x31e82b10), TOBN(0xc63d2857, 0xc9ff6b4c), + TOBN(0xb92118c6, 0x92a1b45e), TOBN(0x0aec4414, 0x7285bbca)}}, + {{TOBN(0xfc189ae7, 0x1e29a3ef), TOBN(0xcbe906f0, 0x4c93302e), + TOBN(0xd0107914, 0xceaae10e), TOBN(0xb7a23f34, 0xb68e19f8)}, + {TOBN(0xe9d875c2, 0xefd2119d), TOBN(0x03198c6e, 0xfcadc9c8), + TOBN(0x65591bf6, 0x4da17113), TOBN(0x3cf0bbf8, 0x3d443038)}}, + {{TOBN(0xae485bb7, 0x2b724759), TOBN(0x945353e1, 0xb2d4c63a), + TOBN(0x82159d07, 0xde7d6f2c), TOBN(0x389caef3, 0x4ec5b109)}, + {TOBN(0x4a8ebb53, 0xdb65ef14), TOBN(0x2dc2cb7e, 0xdd99de43), + TOBN(0x816fa3ed, 0x83f2405f), TOBN(0x73429bb9, 0xc14208a3)}}, + {{TOBN(0xb618d590, 0xb01e6e27), TOBN(0x047e2ccd, 0xe180b2dc), + TOBN(0xd1b299b5, 0x04aea4a9), TOBN(0x412c9e1e, 0x9fa403a4)}, + {TOBN(0x88d28a36, 0x79407552), TOBN(0x49c50136, 0xf332b8e3), + TOBN(0x3a1b6fcc, 0xe668de19), TOBN(0x178851bc, 0x75122b97)}}, + {{TOBN(0xb1e13752, 0xfb85fa4c), TOBN(0xd61257ce, 0x383c8ce9), + TOBN(0xd43da670, 0xd2f74dae), TOBN(0xa35aa23f, 0xbf846bbb)}, + {TOBN(0x5e74235d, 0x4421fc83), TOBN(0xf6df8ee0, 0xc363473b), + TOBN(0x34d7f52a, 0x3c4aa158), TOBN(0x50d05aab, 0x9bc6d22e)}}, + {{TOBN(0x8c56e735, 0xa64785f4), TOBN(0xbc56637b, 0x5f29cd07), + TOBN(0x53b2bb80, 0x3ee35067), TOBN(0x50235a0f, 0xdc919270)}, + {TOBN(0x191ab6d8, 0xf2c4aa65), TOBN(0xc3475831, 0x8396023b), + TOBN(0x80400ba5, 0xf0f805ba), TOBN(0x8881065b, 0x5ec0f80f)}}, + {{TOBN(0xc370e522, 0xcc1b5e83), TOBN(0xde2d4ad1, 0x860b8bfb), + TOBN(0xad364df0, 0x67b256df), TOBN(0x8f12502e, 0xe0138997)}, + {TOBN(0x503fa0dc, 0x7783920a), TOBN(0xe80014ad, 0xc0bc866a), + TOBN(0x3f89b744, 0xd3064ba6), TOBN(0x03511dcd, 0xcba5dba5)}}, + {{TOBN(0x197dd46d, 0x95a7b1a2), TOBN(0x9c4e7ad6, 0x3c6341fb), + TOBN(0x426eca29, 0x484c2ece), TOBN(0x9211e489, 0xde7f4f8a)}, + {TOBN(0x14997f6e, 0xc78ef1f4), TOBN(0x2b2c0910, 0x06574586), + TOBN(0x17286a6e, 0x1c3eede8), TOBN(0x25f92e47, 0x0f60e018)}}, + {{TOBN(0x805c5646, 0x31890a36), TOBN(0x703ef600, 0x57feea5b), + TOBN(0x389f747c, 0xaf3c3030), TOBN(0xe0e5daeb, 0x54dd3739)}, + {TOBN(0xfe24a4c3, 0xc9c9f155), TOBN(0x7e4bf176, 0xb5393962), + TOBN(0x37183de2, 0xaf20bf29), TOBN(0x4a1bd7b5, 0xf95a8c3b)}}, + {{TOBN(0xa83b9699, 0x46191d3d), TOBN(0x281fc8dd, 0x7b87f257), + TOBN(0xb18e2c13, 0x54107588), TOBN(0x6372def7, 0x9b2bafe8)}, + {TOBN(0xdaf4bb48, 0x0d8972ca), TOBN(0x3f2dd4b7, 0x56167a3f), + TOBN(0x1eace32d, 0x84310cf4), TOBN(0xe3bcefaf, 0xe42700aa)}}, + {{TOBN(0x5fe5691e, 0xd785e73d), TOBN(0xa5db5ab6, 0x2ea60467), + TOBN(0x02e23d41, 0xdfc6514a), TOBN(0x35e8048e, 0xe03c3665)}, + {TOBN(0x3f8b118f, 0x1adaa0f8), TOBN(0x28ec3b45, 0x84ce1a5a), + TOBN(0xe8cacc6e, 0x2c6646b8), TOBN(0x1343d185, 0xdbd0e40f)}}, + {{TOBN(0xe5d7f844, 0xcaaa358c), TOBN(0x1a1db7e4, 0x9924182a), + TOBN(0xd64cd42d, 0x9c875d9a), TOBN(0xb37b515f, 0x042eeec8)}, + {TOBN(0x4d4dd409, 0x7b165fbe), TOBN(0xfc322ed9, 0xe206eff3), + TOBN(0x7dee4102, 0x59b7e17e), TOBN(0x55a481c0, 0x8236ca00)}}, + {{TOBN(0x8c885312, 0xc23fc975), TOBN(0x15715806, 0x05d6297b), + TOBN(0xa078868e, 0xf78edd39), TOBN(0x956b31e0, 0x03c45e52)}, + {TOBN(0x470275d5, 0xff7b33a6), TOBN(0xc8d5dc3a, 0x0c7e673f), + TOBN(0x419227b4, 0x7e2f2598), TOBN(0x8b37b634, 0x4c14a975)}}, + {{TOBN(0xd0667ed6, 0x8b11888c), TOBN(0x5e0e8c3e, 0x803e25dc), + TOBN(0x34e5d0dc, 0xb987a24a), TOBN(0x9f40ac3b, 0xae920323)}, + {TOBN(0x5463de95, 0x34e0f63a), TOBN(0xa128bf92, 0x6b6328f9), + TOBN(0x491ccd7c, 0xda64f1b7), TOBN(0x7ef1ec27, 0xc47bde35)}}, + {{TOBN(0xa857240f, 0xa36a2737), TOBN(0x35dc1366, 0x63621bc1), + TOBN(0x7a3a6453, 0xd4fb6897), TOBN(0x80f1a439, 0xc929319d)}, + {TOBN(0xfc18274b, 0xf8cb0ba0), TOBN(0xb0b53766, 0x8078c5eb), + TOBN(0xfb0d4924, 0x1e01d0ef), TOBN(0x50d7c67d, 0x372ab09c)}}, + {{TOBN(0xb4e370af, 0x3aeac968), TOBN(0xe4f7fee9, 0xc4b63266), + TOBN(0xb4acd4c2, 0xe3ac5664), TOBN(0xf8910bd2, 0xceb38cbf)}, + {TOBN(0x1c3ae50c, 0xc9c0726e), TOBN(0x15309569, 0xd97b40bf), + TOBN(0x70884b7f, 0xfd5a5a1b), TOBN(0x3890896a, 0xef8314cd)}}, + {{TOBN(0x58e1515c, 0xa5618c93), TOBN(0xe665432b, 0x77d942d1), + TOBN(0xb32181bf, 0xb6f767a8), TOBN(0x753794e8, 0x3a604110)}, + {TOBN(0x09afeb7c, 0xe8c0dbcc), TOBN(0x31e02613, 0x598673a3), + TOBN(0x5d98e557, 0x7d46db00), TOBN(0xfc21fb8c, 0x9d985b28)}}, + {{TOBN(0xc9040116, 0xb0843e0b), TOBN(0x53b1b3a8, 0x69b04531), + TOBN(0xdd1649f0, 0x85d7d830), TOBN(0xbb3bcc87, 0xcb7427e8)}, + {TOBN(0x77261100, 0xc93dce83), TOBN(0x7e79da61, 0xa1922a2a), + TOBN(0x587a2b02, 0xf3149ce8), TOBN(0x147e1384, 0xde92ec83)}}, + {{TOBN(0x484c83d3, 0xaf077f30), TOBN(0xea78f844, 0x0658b53a), + TOBN(0x912076c2, 0x027aec53), TOBN(0xf34714e3, 0x93c8177d)}, + {TOBN(0x37ef5d15, 0xc2376c84), TOBN(0x8315b659, 0x3d1aa783), + TOBN(0x3a75c484, 0xef852a90), TOBN(0x0ba0c58a, 0x16086bd4)}}, + {{TOBN(0x29688d7a, 0x529a6d48), TOBN(0x9c7f250d, 0xc2f19203), + TOBN(0x123042fb, 0x682e2df9), TOBN(0x2b7587e7, 0xad8121bc)}, + {TOBN(0x30fc0233, 0xe0182a65), TOBN(0xb82ecf87, 0xe3e1128a), + TOBN(0x71682861, 0x93fb098f), TOBN(0x043e21ae, 0x85e9e6a7)}}, + {{TOBN(0xab5b49d6, 0x66c834ea), TOBN(0x3be43e18, 0x47414287), + TOBN(0xf40fb859, 0x219a2a47), TOBN(0x0e6559e9, 0xcc58df3c)}, + {TOBN(0xfe1dfe8e, 0x0c6615b4), TOBN(0x14abc8fd, 0x56459d70), + TOBN(0x7be0fa8e, 0x05de0386), TOBN(0x8e63ef68, 0xe9035c7c)}}, + {{TOBN(0x116401b4, 0x53b31e91), TOBN(0x0cba7ad4, 0x4436b4d8), + TOBN(0x9151f9a0, 0x107afd66), TOBN(0xafaca8d0, 0x1f0ee4c4)}, + {TOBN(0x75fe5c1d, 0x9ee9761c), TOBN(0x3497a16b, 0xf0c0588f), + TOBN(0x3ee2bebd, 0x0304804c), TOBN(0xa8fb9a60, 0xc2c990b9)}}, + {{TOBN(0xd14d32fe, 0x39251114), TOBN(0x36bf25bc, 0xcac73366), + TOBN(0xc9562c66, 0xdba7495c), TOBN(0x324d301b, 0x46ad348b)}, + {TOBN(0x9f46620c, 0xd670407e), TOBN(0x0ea8d4f1, 0xe3733a01), + TOBN(0xd396d532, 0xb0c324e0), TOBN(0x5b211a0e, 0x03c317cd)}}, + {{TOBN(0x090d7d20, 0x5ffe7b37), TOBN(0x3b7f3efb, 0x1747d2da), + TOBN(0xa2cb525f, 0xb54fc519), TOBN(0x6e220932, 0xf66a971e)}, + {TOBN(0xddc160df, 0xb486d440), TOBN(0x7fcfec46, 0x3fe13465), + TOBN(0x83da7e4e, 0x76e4c151), TOBN(0xd6fa48a1, 0xd8d302b5)}}, + {{TOBN(0xc6304f26, 0x5872cd88), TOBN(0x806c1d3c, 0x278b90a1), + TOBN(0x3553e725, 0xcaf0bc1c), TOBN(0xff59e603, 0xbb9d8d5c)}, + {TOBN(0xa4550f32, 0x7a0b85dd), TOBN(0xdec5720a, 0x93ecc217), + TOBN(0x0b88b741, 0x69d62213), TOBN(0x7212f245, 0x5b365955)}}, + {{TOBN(0x20764111, 0xb5cae787), TOBN(0x13cb7f58, 0x1dfd3124), + TOBN(0x2dca77da, 0x1175aefb), TOBN(0xeb75466b, 0xffaae775)}, + {TOBN(0x74d76f3b, 0xdb6cff32), TOBN(0x7440f37a, 0x61fcda9a), + TOBN(0x1bb3ac92, 0xb525028b), TOBN(0x20fbf8f7, 0xa1975f29)}}, + {{TOBN(0x982692e1, 0xdf83097f), TOBN(0x28738f6c, 0x554b0800), + TOBN(0xdc703717, 0xa2ce2f2f), TOBN(0x7913b93c, 0x40814194)}, + {TOBN(0x04924593, 0x1fe89636), TOBN(0x7b98443f, 0xf78834a6), + TOBN(0x11c6ab01, 0x5114a5a1), TOBN(0x60deb383, 0xffba5f4c)}}, + {{TOBN(0x4caa54c6, 0x01a982e6), TOBN(0x1dd35e11, 0x3491cd26), + TOBN(0x973c315f, 0x7cbd6b05), TOBN(0xcab00775, 0x52494724)}, + {TOBN(0x04659b1f, 0x6565e15a), TOBN(0xbf30f529, 0x8c8fb026), + TOBN(0xfc21641b, 0xa8a0de37), TOBN(0xe9c7a366, 0xfa5e5114)}}, + {{TOBN(0xdb849ca5, 0x52f03ad8), TOBN(0xc7e8dbe9, 0x024e35c0), + TOBN(0xa1a2bbac, 0xcfc3c789), TOBN(0xbf733e7d, 0x9c26f262)}, + {TOBN(0x882ffbf5, 0xb8444823), TOBN(0xb7224e88, 0x6bf8483b), + TOBN(0x53023b8b, 0x65bef640), TOBN(0xaabfec91, 0xd4d5f8cd)}}, + {{TOBN(0xa40e1510, 0x079ea1bd), TOBN(0x1ad9addc, 0xd05d5d26), + TOBN(0xdb3f2eab, 0x13e68d4f), TOBN(0x1cff1ae2, 0x640f803f)}, + {TOBN(0xe0e7b749, 0xd4cee117), TOBN(0x8e9f275b, 0x4036d909), + TOBN(0xce34e31d, 0x8f4d4c38), TOBN(0x22b37f69, 0xd75130fc)}}, + {{TOBN(0x83e0f1fd, 0xb4014604), TOBN(0xa8ce9919, 0x89415078), + TOBN(0x82375b75, 0x41792efe), TOBN(0x4f59bf5c, 0x97d4515b)}, + {TOBN(0xac4f324f, 0x923a277d), TOBN(0xd9bc9b7d, 0x650f3406), + TOBN(0xc6fa87d1, 0x8a39bc51), TOBN(0x82588530, 0x5ccc108f)}}, + {{TOBN(0x5ced3c9f, 0x82e4c634), TOBN(0x8efb8314, 0x3a4464f8), + TOBN(0xe706381b, 0x7a1dca25), TOBN(0x6cd15a3c, 0x5a2a412b)}, + {TOBN(0x9347a8fd, 0xbfcd8fb5), TOBN(0x31db2eef, 0x6e54cd22), + TOBN(0xc4aeb11e, 0xf8d8932f), TOBN(0x11e7c1ed, 0x344411af)}}, + {{TOBN(0x2653050c, 0xdc9a151e), TOBN(0x9edbfc08, 0x3bb0a859), + TOBN(0x926c81c7, 0xfd5691e7), TOBN(0x9c1b2342, 0x6f39019a)}, + {TOBN(0x64a81c8b, 0x7f8474b9), TOBN(0x90657c07, 0x01761819), + TOBN(0x390b3331, 0x55e0375a), TOBN(0xc676c626, 0xb6ebc47d)}}, + {{TOBN(0x51623247, 0xb7d6dee8), TOBN(0x0948d927, 0x79659313), + TOBN(0x99700161, 0xe9ab35ed), TOBN(0x06cc32b4, 0x8ddde408)}, + {TOBN(0x6f2fd664, 0x061ef338), TOBN(0x1606fa02, 0xc202e9ed), + TOBN(0x55388bc1, 0x929ba99b), TOBN(0xc4428c5e, 0x1e81df69)}}, + {{TOBN(0xce2028ae, 0xf91b0b2a), TOBN(0xce870a23, 0xf03dfd3f), + TOBN(0x66ec2c87, 0x0affe8ed), TOBN(0xb205fb46, 0x284d0c00)}, + {TOBN(0xbf5dffe7, 0x44cefa48), TOBN(0xb6fc37a8, 0xa19876d7), + TOBN(0xbecfa84c, 0x08b72863), TOBN(0xd7205ff5, 0x2576374f)}}, + {{TOBN(0x80330d32, 0x8887de41), TOBN(0x5de0df0c, 0x869ea534), + TOBN(0x13f42753, 0x3c56ea17), TOBN(0xeb1f6069, 0x452b1a78)}, + {TOBN(0x50474396, 0xe30ea15c), TOBN(0x575816a1, 0xc1494125), + TOBN(0xbe1ce55b, 0xfe6bb38f), TOBN(0xb901a948, 0x96ae30f7)}}, + {{TOBN(0xe5af0f08, 0xd8fc3548), TOBN(0x5010b5d0, 0xd73bfd08), + TOBN(0x993d2880, 0x53fe655a), TOBN(0x99f2630b, 0x1c1309fd)}, + {TOBN(0xd8677baf, 0xb4e3b76f), TOBN(0x14e51ddc, 0xb840784b), + TOBN(0x326c750c, 0xbf0092ce), TOBN(0xc83d306b, 0xf528320f)}}, + {{TOBN(0xc4456715, 0x77d4715c), TOBN(0xd30019f9, 0x6b703235), + TOBN(0x207ccb2e, 0xd669e986), TOBN(0x57c824af, 0xf6dbfc28)}, + {TOBN(0xf0eb532f, 0xd8f92a23), TOBN(0x4a557fd4, 0x9bb98fd2), + TOBN(0xa57acea7, 0xc1e6199a), TOBN(0x0c663820, 0x8b94b1ed)}}, + {{TOBN(0x9b42be8f, 0xf83a9266), TOBN(0xc7741c97, 0x0101bd45), + TOBN(0x95770c11, 0x07bd9ceb), TOBN(0x1f50250a, 0x8b2e0744)}, + {TOBN(0xf762eec8, 0x1477b654), TOBN(0xc65b900e, 0x15efe59a), + TOBN(0x88c96148, 0x9546a897), TOBN(0x7e8025b3, 0xc30b4d7c)}}, + {{TOBN(0xae4065ef, 0x12045cf9), TOBN(0x6fcb2caf, 0x9ccce8bd), + TOBN(0x1fa0ba4e, 0xf2cf6525), TOBN(0xf683125d, 0xcb72c312)}, + {TOBN(0xa01da4ea, 0xe312410e), TOBN(0x67e28677, 0x6cd8e830), + TOBN(0xabd95752, 0x98fb3f07), TOBN(0x05f11e11, 0xeef649a5)}}, + {{TOBN(0xba47faef, 0x9d3472c2), TOBN(0x3adff697, 0xc77d1345), + TOBN(0x4761fa04, 0xdd15afee), TOBN(0x64f1f61a, 0xb9e69462)}, + {TOBN(0xfa691fab, 0x9bfb9093), TOBN(0x3df8ae8f, 0xa1133dfe), + TOBN(0xcd5f8967, 0x58cc710d), TOBN(0xfbb88d50, 0x16c7fe79)}}, + {{TOBN(0x8e011b4c, 0xe88c50d1), TOBN(0x7532e807, 0xa8771c4f), + TOBN(0x64c78a48, 0xe2278ee4), TOBN(0x0b283e83, 0x3845072a)}, + {TOBN(0x98a6f291, 0x49e69274), TOBN(0xb96e9668, 0x1868b21c), + TOBN(0x38f0adc2, 0xb1a8908e), TOBN(0x90afcff7, 0x1feb829d)}}, + {{TOBN(0x9915a383, 0x210b0856), TOBN(0xa5a80602, 0xdef04889), + TOBN(0x800e9af9, 0x7c64d509), TOBN(0x81382d0b, 0xb8996f6f)}, + {TOBN(0x490eba53, 0x81927e27), TOBN(0x46c63b32, 0x4af50182), + TOBN(0x784c5fd9, 0xd3ad62ce), TOBN(0xe4fa1870, 0xf8ae8736)}}, + {{TOBN(0x4ec9d0bc, 0xd7466b25), TOBN(0x84ddbe1a, 0xdb235c65), + TOBN(0x5e2645ee, 0x163c1688), TOBN(0x570bd00e, 0x00eba747)}, + {TOBN(0xfa51b629, 0x128bfa0f), TOBN(0x92fce1bd, 0x6c1d3b68), + TOBN(0x3e7361dc, 0xb66778b1), TOBN(0x9c7d249d, 0x5561d2bb)}}, + {{TOBN(0xa40b28bf, 0x0bbc6229), TOBN(0x1c83c05e, 0xdfd91497), + TOBN(0x5f9f5154, 0xf083df05), TOBN(0xbac38b3c, 0xeee66c9d)}, + {TOBN(0xf71db7e3, 0xec0dfcfd), TOBN(0xf2ecda8e, 0x8b0a8416), + TOBN(0x52fddd86, 0x7812aa66), TOBN(0x2896ef10, 0x4e6f4272)}}, + {{TOBN(0xff27186a, 0x0fe9a745), TOBN(0x08249fcd, 0x49ca70db), + TOBN(0x7425a2e6, 0x441cac49), TOBN(0xf4a0885a, 0xece5ff57)}, + {TOBN(0x6e2cb731, 0x7d7ead58), TOBN(0xf96cf7d6, 0x1898d104), + TOBN(0xafe67c9d, 0x4f2c9a89), TOBN(0x89895a50, 0x1c7bf5bc)}}, + {{TOBN(0xdc7cb8e5, 0x573cecfa), TOBN(0x66497eae, 0xd15f03e6), + TOBN(0x6bc0de69, 0x3f084420), TOBN(0x323b9b36, 0xacd532b0)}, + {TOBN(0xcfed390a, 0x0115a3c1), TOBN(0x9414c40b, 0x2d65ca0e), + TOBN(0x641406bd, 0x2f530c78), TOBN(0x29369a44, 0x833438f2)}}, + {{TOBN(0x996884f5, 0x903fa271), TOBN(0xe6da0fd2, 0xb9da921e), + TOBN(0xa6f2f269, 0x5db01e54), TOBN(0x1ee3e9bd, 0x6876214e)}, + {TOBN(0xa26e181c, 0xe27a9497), TOBN(0x36d254e4, 0x8e215e04), + TOBN(0x42f32a6c, 0x252cabca), TOBN(0x99481487, 0x80b57614)}}, + {{TOBN(0x4c4dfe69, 0x40d9cae1), TOBN(0x05869580, 0x11a10f09), + TOBN(0xca287b57, 0x3491b64b), TOBN(0x77862d5d, 0x3fd4a53b)}, + {TOBN(0xbf94856e, 0x50349126), TOBN(0x2be30bd1, 0x71c5268f), + TOBN(0x10393f19, 0xcbb650a6), TOBN(0x639531fe, 0x778cf9fd)}}, + {{TOBN(0x02556a11, 0xb2935359), TOBN(0xda38aa96, 0xaf8c126e), + TOBN(0x47dbe6c2, 0x0960167f), TOBN(0x37bbabb6, 0x501901cd)}, + {TOBN(0xb6e979e0, 0x2c947778), TOBN(0xd69a5175, 0x7a1a1dc6), + TOBN(0xc3ed5095, 0x9d9faf0c), TOBN(0x4dd9c096, 0x1d5fa5f0)}}, + {{TOBN(0xa0c4304d, 0x64f16ea8), TOBN(0x8b1cac16, 0x7e718623), + TOBN(0x0b576546, 0x7c67f03e), TOBN(0x559cf5ad, 0xcbd88c01)}, + {TOBN(0x074877bb, 0x0e2af19a), TOBN(0x1f717ec1, 0xa1228c92), + TOBN(0x70bcb800, 0x326e8920), TOBN(0xec6e2c5c, 0x4f312804)}}, + {{TOBN(0x426aea7d, 0x3fca4752), TOBN(0xf12c0949, 0x2211f62a), + TOBN(0x24beecd8, 0x7be7b6b5), TOBN(0xb77eaf4c, 0x36d7a27d)}, + {TOBN(0x154c2781, 0xfda78fd3), TOBN(0x848a83b0, 0x264eeabe), + TOBN(0x81287ef0, 0x4ffe2bc4), TOBN(0x7b6d88c6, 0xb6b6fc2a)}}, + {{TOBN(0x805fb947, 0xce417d99), TOBN(0x4b93dcc3, 0x8b916cc4), + TOBN(0x72e65bb3, 0x21273323), TOBN(0xbcc1badd, 0x6ea9886e)}, + {TOBN(0x0e223011, 0x4bc5ee85), TOBN(0xa561be74, 0xc18ee1e4), + TOBN(0x762fd2d4, 0xa6bcf1f1), TOBN(0x50e6a5a4, 0x95231489)}}, + {{TOBN(0xca96001f, 0xa00b500b), TOBN(0x5c098cfc, 0x5d7dcdf5), + TOBN(0xa64e2d2e, 0x8c446a85), TOBN(0xbae9bcf1, 0x971f3c62)}, + {TOBN(0x4ec22683, 0x8435a2c5), TOBN(0x8ceaed6c, 0x4bad4643), + TOBN(0xe9f8fb47, 0xccccf4e3), TOBN(0xbd4f3fa4, 0x1ce3b21e)}}, + {{TOBN(0xd79fb110, 0xa3db3292), TOBN(0xe28a37da, 0xb536c66a), + TOBN(0x279ce87b, 0x8e49e6a9), TOBN(0x70ccfe8d, 0xfdcec8e3)}, + {TOBN(0x2193e4e0, 0x3ba464b2), TOBN(0x0f39d60e, 0xaca9a398), + TOBN(0x7d7932af, 0xf82c12ab), TOBN(0xd8ff50ed, 0x91e7e0f7)}}, + {{TOBN(0xea961058, 0xfa28a7e0), TOBN(0xc726cf25, 0x0bf5ec74), + TOBN(0xe74d55c8, 0xdb229666), TOBN(0x0bd9abbf, 0xa57f5799)}, + {TOBN(0x7479ef07, 0x4dfc47b3), TOBN(0xd9c65fc3, 0x0c52f91d), + TOBN(0x8e0283fe, 0x36a8bde2), TOBN(0xa32a8b5e, 0x7d4b7280)}}, + {{TOBN(0x6a677c61, 0x12e83233), TOBN(0x0fbb3512, 0xdcc9bf28), + TOBN(0x562e8ea5, 0x0d780f61), TOBN(0x0db8b22b, 0x1dc4e89c)}, + {TOBN(0x0a6fd1fb, 0x89be0144), TOBN(0x8c77d246, 0xca57113b), + TOBN(0x4639075d, 0xff09c91c), TOBN(0x5b47b17f, 0x5060824c)}}, + {{TOBN(0x58aea2b0, 0x16287b52), TOBN(0xa1343520, 0xd0cd8eb0), + TOBN(0x6148b4d0, 0xc5d58573), TOBN(0xdd2b6170, 0x291c68ae)}, + {TOBN(0xa61b3929, 0x1da3b3b7), TOBN(0x5f946d79, 0x08c4ac10), + TOBN(0x4105d4a5, 0x7217d583), TOBN(0x5061da3d, 0x25e6de5e)}}, + {{TOBN(0x3113940d, 0xec1b4991), TOBN(0xf12195e1, 0x36f485ae), + TOBN(0xa7507fb2, 0x731a2ee0), TOBN(0x95057a8e, 0x6e9e196e)}, + {TOBN(0xa3c2c911, 0x2e130136), TOBN(0x97dfbb36, 0x33c60d15), + TOBN(0xcaf3c581, 0xb300ee2b), TOBN(0x77f25d90, 0xf4bac8b8)}}, + {{TOBN(0xdb1c4f98, 0x6d840cd6), TOBN(0x471d62c0, 0xe634288c), + TOBN(0x8ec2f85e, 0xcec8a161), TOBN(0x41f37cbc, 0xfa6f4ae2)}, + {TOBN(0x6793a20f, 0x4b709985), TOBN(0x7a7bd33b, 0xefa8985b), + TOBN(0x2c6a3fbd, 0x938e6446), TOBN(0x19042619, 0x2a8d47c1)}}, + {{TOBN(0x16848667, 0xcc36975f), TOBN(0x02acf168, 0x9d5f1dfb), + TOBN(0x62d41ad4, 0x613baa94), TOBN(0xb56fbb92, 0x9f684670)}, + {TOBN(0xce610d0d, 0xe9e40569), TOBN(0x7b99c65f, 0x35489fef), + TOBN(0x0c88ad1b, 0x3df18b97), TOBN(0x81b7d9be, 0x5d0e9edb)}}, + {{TOBN(0xd85218c0, 0xc716cc0a), TOBN(0xf4b5ff90, 0x85691c49), + TOBN(0xa4fd666b, 0xce356ac6), TOBN(0x17c72895, 0x4b327a7a)}, + {TOBN(0xf93d5085, 0xda6be7de), TOBN(0xff71530e, 0x3301d34e), + TOBN(0x4cd96442, 0xd8f448e8), TOBN(0x9283d331, 0x2ed18ffa)}}, + {{TOBN(0x4d33dd99, 0x2a849870), TOBN(0xa716964b, 0x41576335), + TOBN(0xff5e3a9b, 0x179be0e5), TOBN(0x5b9d6b1b, 0x83b13632)}, + {TOBN(0x3b8bd7d4, 0xa52f313b), TOBN(0xc9dd95a0, 0x637a4660), + TOBN(0x30035962, 0x0b3e218f), TOBN(0xce1481a3, 0xc7b28a3c)}}, + {{TOBN(0xab41b43a, 0x43228d83), TOBN(0x24ae1c30, 0x4ad63f99), + TOBN(0x8e525f1a, 0x46a51229), TOBN(0x14af860f, 0xcd26d2b4)}, + {TOBN(0xd6baef61, 0x3f714aa1), TOBN(0xf51865ad, 0xeb78795e), + TOBN(0xd3e21fce, 0xe6a9d694), TOBN(0x82ceb1dd, 0x8a37b527)}}}}; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256_shared.h temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256_shared.h --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256_shared.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256_shared.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,58 @@ +/* + * Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2014, Intel Corporation. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + * + * Originally written by Shay Gueron (1, 2), and Vlad Krasnov (1) + * (1) Intel Corporation, Israel Development Center, Haifa, Israel + * (2) University of Haifa, Israel + * + * Reference: + * S.Gueron and V.Krasnov, "Fast Prime Field Elliptic Curve Cryptography with + * 256 Bit Primes" + */ + +#ifndef OPENSSL_HEADER_EC_P256_SHARED_H +#define OPENSSL_HEADER_EC_P256_SHARED_H + +#include "ring-core/base.h" + +#include "../bn/internal.h" + +#if !defined(OPENSSL_NO_ASM) && \ + (defined(OPENSSL_X86_64) || defined(OPENSSL_AARCH64)) && \ + !defined(OPENSSL_SMALL) +# define OPENSSL_USE_NISTZ256 +#endif + +// P-256 field operations. +// +// An element mod P in P-256 is represented as a little-endian array of +// |P256_LIMBS| |BN_ULONG|s, spanning the full range of values. +// +// The following functions take fully-reduced inputs mod P and give +// fully-reduced outputs. They may be used in-place. + +#define P256_LIMBS (256 / BN_BITS2) + +// A P256_POINT represents a P-256 point in Jacobian coordinates. +// All coordinates are in the Montgomery domain. +typedef struct { + BN_ULONG X[P256_LIMBS]; + BN_ULONG Y[P256_LIMBS]; + BN_ULONG Z[P256_LIMBS]; +} P256_POINT; + +typedef unsigned char P256_SCALAR_BYTES[33]; + +static inline void p256_scalar_bytes_from_limbs( + P256_SCALAR_BYTES bytes_out, const BN_ULONG limbs[P256_LIMBS]) { + OPENSSL_memcpy(bytes_out, limbs, 32); + bytes_out[32] = 0; +} + +#endif /* !defined(OPENSSL_USE_NISTZ256) */ diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256_table.h temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256_table.h --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256_table.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/p256_table.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,297 @@ +/* Copyright (c) 2020, Google Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ + +// This file is generated by make_tables.go. + +// Base point pre computation +// -------------------------- +// +// Two different sorts of precomputed tables are used in the following code. +// Each contain various points on the curve, where each point is three field +// elements (x, y, z). +// +// For the base point table, z is usually 1 (0 for the point at infinity). +// This table has 2 * 16 elements, starting with the following: +// index | bits | point +// ------+---------+------------------------------ +// 0 | 0 0 0 0 | 0G +// 1 | 0 0 0 1 | 1G +// 2 | 0 0 1 0 | 2^64G +// 3 | 0 0 1 1 | (2^64 + 1)G +// 4 | 0 1 0 0 | 2^128G +// 5 | 0 1 0 1 | (2^128 + 1)G +// 6 | 0 1 1 0 | (2^128 + 2^64)G +// 7 | 0 1 1 1 | (2^128 + 2^64 + 1)G +// 8 | 1 0 0 0 | 2^192G +// 9 | 1 0 0 1 | (2^192 + 1)G +// 10 | 1 0 1 0 | (2^192 + 2^64)G +// 11 | 1 0 1 1 | (2^192 + 2^64 + 1)G +// 12 | 1 1 0 0 | (2^192 + 2^128)G +// 13 | 1 1 0 1 | (2^192 + 2^128 + 1)G +// 14 | 1 1 1 0 | (2^192 + 2^128 + 2^64)G +// 15 | 1 1 1 1 | (2^192 + 2^128 + 2^64 + 1)G +// followed by a copy of this with each element multiplied by 2^32. +// +// The reason for this is so that we can clock bits into four different +// locations when doing simple scalar multiplies against the base point, +// and then another four locations using the second 16 elements. +// +// Tables for other points have table[i] = iG for i in 0 .. 16. + +// fiat_p256_g_pre_comp is the table of precomputed base points +#if defined(OPENSSL_64_BIT) +static const fiat_p256_felem fiat_p256_g_pre_comp[2][15][2] = { + {{{0x79e730d418a9143c, 0x75ba95fc5fedb601, 0x79fb732b77622510, + 0x18905f76a53755c6}, + {0xddf25357ce95560a, 0x8b4ab8e4ba19e45c, 0xd2e88688dd21f325, + 0x8571ff1825885d85}}, + {{0x4f922fc516a0d2bb, 0x0d5cc16c1a623499, 0x9241cf3a57c62c8b, + 0x2f5e6961fd1b667f}, + {0x5c15c70bf5a01797, 0x3d20b44d60956192, 0x04911b37071fdb52, + 0xf648f9168d6f0f7b}}, + {{0x9e566847e137bbbc, 0xe434469e8a6a0bec, 0xb1c4276179d73463, + 0x5abe0285133d0015}, + {0x92aa837cc04c7dab, 0x573d9f4c43260c07, 0x0c93156278e6cc37, + 0x94bb725b6b6f7383}}, + {{0x62a8c244bfe20925, 0x91c19ac38fdce867, 0x5a96a5d5dd387063, + 0x61d587d421d324f6}, + {0xe87673a2a37173ea, 0x2384800853778b65, 0x10f8441e05bab43e, + 0xfa11fe124621efbe}}, + {{0x1c891f2b2cb19ffd, 0x01ba8d5bb1923c23, 0xb6d03d678ac5ca8e, + 0x586eb04c1f13bedc}, + {0x0c35c6e527e8ed09, 0x1e81a33c1819ede2, 0x278fd6c056c652fa, + 0x19d5ac0870864f11}}, + {{0x62577734d2b533d5, 0x673b8af6a1bdddc0, 0x577e7c9aa79ec293, + 0xbb6de651c3b266b1}, + {0xe7e9303ab65259b3, 0xd6a0afd3d03a7480, 0xc5ac83d19b3cfc27, + 0x60b4619a5d18b99b}}, + {{0xbd6a38e11ae5aa1c, 0xb8b7652b49e73658, 0x0b130014ee5f87ed, + 0x9d0f27b2aeebffcd}, + {0xca9246317a730a55, 0x9c955b2fddbbc83a, 0x07c1dfe0ac019a71, + 0x244a566d356ec48d}}, + {{0x56f8410ef4f8b16a, 0x97241afec47b266a, 0x0a406b8e6d9c87c1, + 0x803f3e02cd42ab1b}, + {0x7f0309a804dbec69, 0xa83b85f73bbad05f, 0xc6097273ad8e197f, + 0xc097440e5067adc1}}, + {{0x846a56f2c379ab34, 0xa8ee068b841df8d1, 0x20314459176c68ef, + 0xf1af32d5915f1f30}, + {0x99c375315d75bd50, 0x837cffbaf72f67bc, 0x0613a41848d7723f, + 0x23d0f130e2d41c8b}}, + {{0xed93e225d5be5a2b, 0x6fe799835934f3c6, 0x4314092622626ffc, + 0x50bbb4d97990216a}, + {0x378191c6e57ec63e, 0x65422c40181dcdb2, 0x41a8099b0236e0f6, + 0x2b10011801fe49c3}}, + {{0xfc68b5c59b391593, 0xc385f5a2598270fc, 0x7144f3aad19adcbb, + 0xdd55899983fbae0c}, + {0x93b88b8e74b82ff4, 0xd2e03c4071e734c9, 0x9a7a9eaf43c0322a, + 0xe6e4c551149d6041}}, + {{0x5fe14bfe80ec21fe, 0xf6ce116ac255be82, 0x98bc5a072f4a5d67, + 0xfad27148db7e63af}, + {0x90c0b6ac29ab05b3, 0x37a9a83c4e251ae6, 0x0a7dc875c2aade7d, + 0x77387de39f0e1a84}}, + {{0x1e9ecc49a56c0dd7, 0xa5cffcd846086c74, 0x8f7a1408f505aece, + 0xb37b85c0bef0c47e}, + {0x3596b6e4cc0e6a8f, 0xfd6d4bbf6b388f23, 0xaba453fac39cef4e, + 0x9c135ac8f9f628d5}}, + {{0x0a1c729495c8f8be, 0x2961c4803bf362bf, 0x9e418403df63d4ac, + 0xc109f9cb91ece900}, + {0xc2d095d058945705, 0xb9083d96ddeb85c0, 0x84692b8d7a40449b, + 0x9bc3344f2eee1ee1}}, + {{0x0d5ae35642913074, 0x55491b2748a542b1, 0x469ca665b310732a, + 0x29591d525f1a4cc1}, + {0xe76f5b6bb84f983f, 0xbe7eef419f5f84e1, 0x1200d49680baa189, + 0x6376551f18ef332c}}}, + {{{0x202886024147519a, 0xd0981eac26b372f0, 0xa9d4a7caa785ebc8, + 0xd953c50ddbdf58e9}, + {0x9d6361ccfd590f8f, 0x72e9626b44e6c917, 0x7fd9611022eb64cf, + 0x863ebb7e9eb288f3}}, + {{0x4fe7ee31b0e63d34, 0xf4600572a9e54fab, 0xc0493334d5e7b5a4, + 0x8589fb9206d54831}, + {0xaa70f5cc6583553a, 0x0879094ae25649e5, 0xcc90450710044652, + 0xebb0696d02541c4f}}, + {{0xabbaa0c03b89da99, 0xa6f2d79eb8284022, 0x27847862b81c05e8, + 0x337a4b5905e54d63}, + {0x3c67500d21f7794a, 0x207005b77d6d7f61, 0x0a5a378104cfd6e8, + 0x0d65e0d5f4c2fbd6}}, + {{0xd433e50f6d3549cf, 0x6f33696ffacd665e, 0x695bfdacce11fcb4, + 0x810ee252af7c9860}, + {0x65450fe17159bb2c, 0xf7dfbebe758b357b, 0x2b057e74d69fea72, + 0xd485717a92731745}}, + {{0xce1f69bbe83f7669, 0x09f8ae8272877d6b, 0x9548ae543244278d, + 0x207755dee3c2c19c}, + {0x87bd61d96fef1945, 0x18813cefb12d28c3, 0x9fbcd1d672df64aa, + 0x48dc5ee57154b00d}}, + {{0xef0f469ef49a3154, 0x3e85a5956e2b2e9a, 0x45aaec1eaa924a9c, + 0xaa12dfc8a09e4719}, + {0x26f272274df69f1d, 0xe0e4c82ca2ff5e73, 0xb9d8ce73b7a9dd44, + 0x6c036e73e48ca901}}, + {{0xe1e421e1a47153f0, 0xb86c3b79920418c9, 0x93bdce87705d7672, + 0xf25ae793cab79a77}, + {0x1f3194a36d869d0c, 0x9d55c8824986c264, 0x49fb5ea3096e945e, + 0x39b8e65313db0a3e}}, + {{0xe3417bc035d0b34a, 0x440b386b8327c0a7, 0x8fb7262dac0362d1, + 0x2c41114ce0cdf943}, + {0x2ba5cef1ad95a0b1, 0xc09b37a867d54362, 0x26d6cdd201e486c9, + 0x20477abf42ff9297}}, + {{0x0f121b41bc0a67d2, 0x62d4760a444d248a, 0x0e044f1d659b4737, + 0x08fde365250bb4a8}, + {0xaceec3da848bf287, 0xc2a62182d3369d6e, 0x3582dfdc92449482, + 0x2f7e2fd2565d6cd7}}, + {{0x0a0122b5178a876b, 0x51ff96ff085104b4, 0x050b31ab14f29f76, + 0x84abb28b5f87d4e6}, + {0xd5ed439f8270790a, 0x2d6cb59d85e3f46b, 0x75f55c1b6c1e2212, + 0xe5436f6717655640}}, + {{0xc2965ecc9aeb596d, 0x01ea03e7023c92b4, 0x4704b4b62e013961, + 0x0ca8fd3f905ea367}, + {0x92523a42551b2b61, 0x1eb7a89c390fcd06, 0xe7f1d2be0392a63e, + 0x96dca2644ddb0c33}}, + {{0x231c210e15339848, 0xe87a28e870778c8d, 0x9d1de6616956e170, + 0x4ac3c9382bb09c0b}, + {0x19be05516998987d, 0x8b2376c4ae09f4d6, 0x1de0b7651a3f933d, + 0x380d94c7e39705f4}}, + {{0x3685954b8c31c31d, 0x68533d005bf21a0c, 0x0bd7626e75c79ec9, + 0xca17754742c69d54}, + {0xcc6edafff6d2dbb2, 0xfd0d8cbd174a9d18, 0x875e8793aa4578e8, + 0xa976a7139cab2ce6}}, + {{0xce37ab11b43ea1db, 0x0a7ff1a95259d292, 0x851b02218f84f186, + 0xa7222beadefaad13}, + {0xa2ac78ec2b0a9144, 0x5a024051f2fa59c5, 0x91d1eca56147ce38, + 0xbe94d523bc2ac690}}, + {{0x2d8daefd79ec1a0f, 0x3bbcd6fdceb39c97, 0xf5575ffc58f61a95, + 0xdbd986c4adf7b420}, + {0x81aa881415f39eb7, 0x6ee2fcf5b98d976c, 0x5465475dcf2f717d, + 0x8e24d3c46860bbd0}}}}; +#else +static const fiat_p256_felem fiat_p256_g_pre_comp[2][15][2] = { + {{{0x18a9143c, 0x79e730d4, 0x5fedb601, 0x75ba95fc, 0x77622510, 0x79fb732b, + 0xa53755c6, 0x18905f76}, + {0xce95560a, 0xddf25357, 0xba19e45c, 0x8b4ab8e4, 0xdd21f325, 0xd2e88688, + 0x25885d85, 0x8571ff18}}, + {{0x16a0d2bb, 0x4f922fc5, 0x1a623499, 0x0d5cc16c, 0x57c62c8b, 0x9241cf3a, + 0xfd1b667f, 0x2f5e6961}, + {0xf5a01797, 0x5c15c70b, 0x60956192, 0x3d20b44d, 0x071fdb52, 0x04911b37, + 0x8d6f0f7b, 0xf648f916}}, + {{0xe137bbbc, 0x9e566847, 0x8a6a0bec, 0xe434469e, 0x79d73463, 0xb1c42761, + 0x133d0015, 0x5abe0285}, + {0xc04c7dab, 0x92aa837c, 0x43260c07, 0x573d9f4c, 0x78e6cc37, 0x0c931562, + 0x6b6f7383, 0x94bb725b}}, + {{0xbfe20925, 0x62a8c244, 0x8fdce867, 0x91c19ac3, 0xdd387063, 0x5a96a5d5, + 0x21d324f6, 0x61d587d4}, + {0xa37173ea, 0xe87673a2, 0x53778b65, 0x23848008, 0x05bab43e, 0x10f8441e, + 0x4621efbe, 0xfa11fe12}}, + {{0x2cb19ffd, 0x1c891f2b, 0xb1923c23, 0x01ba8d5b, 0x8ac5ca8e, 0xb6d03d67, + 0x1f13bedc, 0x586eb04c}, + {0x27e8ed09, 0x0c35c6e5, 0x1819ede2, 0x1e81a33c, 0x56c652fa, 0x278fd6c0, + 0x70864f11, 0x19d5ac08}}, + {{0xd2b533d5, 0x62577734, 0xa1bdddc0, 0x673b8af6, 0xa79ec293, 0x577e7c9a, + 0xc3b266b1, 0xbb6de651}, + {0xb65259b3, 0xe7e9303a, 0xd03a7480, 0xd6a0afd3, 0x9b3cfc27, 0xc5ac83d1, + 0x5d18b99b, 0x60b4619a}}, + {{0x1ae5aa1c, 0xbd6a38e1, 0x49e73658, 0xb8b7652b, 0xee5f87ed, 0x0b130014, + 0xaeebffcd, 0x9d0f27b2}, + {0x7a730a55, 0xca924631, 0xddbbc83a, 0x9c955b2f, 0xac019a71, 0x07c1dfe0, + 0x356ec48d, 0x244a566d}}, + {{0xf4f8b16a, 0x56f8410e, 0xc47b266a, 0x97241afe, 0x6d9c87c1, 0x0a406b8e, + 0xcd42ab1b, 0x803f3e02}, + {0x04dbec69, 0x7f0309a8, 0x3bbad05f, 0xa83b85f7, 0xad8e197f, 0xc6097273, + 0x5067adc1, 0xc097440e}}, + {{0xc379ab34, 0x846a56f2, 0x841df8d1, 0xa8ee068b, 0x176c68ef, 0x20314459, + 0x915f1f30, 0xf1af32d5}, + {0x5d75bd50, 0x99c37531, 0xf72f67bc, 0x837cffba, 0x48d7723f, 0x0613a418, + 0xe2d41c8b, 0x23d0f130}}, + {{0xd5be5a2b, 0xed93e225, 0x5934f3c6, 0x6fe79983, 0x22626ffc, 0x43140926, + 0x7990216a, 0x50bbb4d9}, + {0xe57ec63e, 0x378191c6, 0x181dcdb2, 0x65422c40, 0x0236e0f6, 0x41a8099b, + 0x01fe49c3, 0x2b100118}}, + {{0x9b391593, 0xfc68b5c5, 0x598270fc, 0xc385f5a2, 0xd19adcbb, 0x7144f3aa, + 0x83fbae0c, 0xdd558999}, + {0x74b82ff4, 0x93b88b8e, 0x71e734c9, 0xd2e03c40, 0x43c0322a, 0x9a7a9eaf, + 0x149d6041, 0xe6e4c551}}, + {{0x80ec21fe, 0x5fe14bfe, 0xc255be82, 0xf6ce116a, 0x2f4a5d67, 0x98bc5a07, + 0xdb7e63af, 0xfad27148}, + {0x29ab05b3, 0x90c0b6ac, 0x4e251ae6, 0x37a9a83c, 0xc2aade7d, 0x0a7dc875, + 0x9f0e1a84, 0x77387de3}}, + {{0xa56c0dd7, 0x1e9ecc49, 0x46086c74, 0xa5cffcd8, 0xf505aece, 0x8f7a1408, + 0xbef0c47e, 0xb37b85c0}, + {0xcc0e6a8f, 0x3596b6e4, 0x6b388f23, 0xfd6d4bbf, 0xc39cef4e, 0xaba453fa, + 0xf9f628d5, 0x9c135ac8}}, + {{0x95c8f8be, 0x0a1c7294, 0x3bf362bf, 0x2961c480, 0xdf63d4ac, 0x9e418403, + 0x91ece900, 0xc109f9cb}, + {0x58945705, 0xc2d095d0, 0xddeb85c0, 0xb9083d96, 0x7a40449b, 0x84692b8d, + 0x2eee1ee1, 0x9bc3344f}}, + {{0x42913074, 0x0d5ae356, 0x48a542b1, 0x55491b27, 0xb310732a, 0x469ca665, + 0x5f1a4cc1, 0x29591d52}, + {0xb84f983f, 0xe76f5b6b, 0x9f5f84e1, 0xbe7eef41, 0x80baa189, 0x1200d496, + 0x18ef332c, 0x6376551f}}}, + {{{0x4147519a, 0x20288602, 0x26b372f0, 0xd0981eac, 0xa785ebc8, 0xa9d4a7ca, + 0xdbdf58e9, 0xd953c50d}, + {0xfd590f8f, 0x9d6361cc, 0x44e6c917, 0x72e9626b, 0x22eb64cf, 0x7fd96110, + 0x9eb288f3, 0x863ebb7e}}, + {{0xb0e63d34, 0x4fe7ee31, 0xa9e54fab, 0xf4600572, 0xd5e7b5a4, 0xc0493334, + 0x06d54831, 0x8589fb92}, + {0x6583553a, 0xaa70f5cc, 0xe25649e5, 0x0879094a, 0x10044652, 0xcc904507, + 0x02541c4f, 0xebb0696d}}, + {{0x3b89da99, 0xabbaa0c0, 0xb8284022, 0xa6f2d79e, 0xb81c05e8, 0x27847862, + 0x05e54d63, 0x337a4b59}, + {0x21f7794a, 0x3c67500d, 0x7d6d7f61, 0x207005b7, 0x04cfd6e8, 0x0a5a3781, + 0xf4c2fbd6, 0x0d65e0d5}}, + {{0x6d3549cf, 0xd433e50f, 0xfacd665e, 0x6f33696f, 0xce11fcb4, 0x695bfdac, + 0xaf7c9860, 0x810ee252}, + {0x7159bb2c, 0x65450fe1, 0x758b357b, 0xf7dfbebe, 0xd69fea72, 0x2b057e74, + 0x92731745, 0xd485717a}}, + {{0xe83f7669, 0xce1f69bb, 0x72877d6b, 0x09f8ae82, 0x3244278d, 0x9548ae54, + 0xe3c2c19c, 0x207755de}, + {0x6fef1945, 0x87bd61d9, 0xb12d28c3, 0x18813cef, 0x72df64aa, 0x9fbcd1d6, + 0x7154b00d, 0x48dc5ee5}}, + {{0xf49a3154, 0xef0f469e, 0x6e2b2e9a, 0x3e85a595, 0xaa924a9c, 0x45aaec1e, + 0xa09e4719, 0xaa12dfc8}, + {0x4df69f1d, 0x26f27227, 0xa2ff5e73, 0xe0e4c82c, 0xb7a9dd44, 0xb9d8ce73, + 0xe48ca901, 0x6c036e73}}, + {{0xa47153f0, 0xe1e421e1, 0x920418c9, 0xb86c3b79, 0x705d7672, 0x93bdce87, + 0xcab79a77, 0xf25ae793}, + {0x6d869d0c, 0x1f3194a3, 0x4986c264, 0x9d55c882, 0x096e945e, 0x49fb5ea3, + 0x13db0a3e, 0x39b8e653}}, + {{0x35d0b34a, 0xe3417bc0, 0x8327c0a7, 0x440b386b, 0xac0362d1, 0x8fb7262d, + 0xe0cdf943, 0x2c41114c}, + {0xad95a0b1, 0x2ba5cef1, 0x67d54362, 0xc09b37a8, 0x01e486c9, 0x26d6cdd2, + 0x42ff9297, 0x20477abf}}, + {{0xbc0a67d2, 0x0f121b41, 0x444d248a, 0x62d4760a, 0x659b4737, 0x0e044f1d, + 0x250bb4a8, 0x08fde365}, + {0x848bf287, 0xaceec3da, 0xd3369d6e, 0xc2a62182, 0x92449482, 0x3582dfdc, + 0x565d6cd7, 0x2f7e2fd2}}, + {{0x178a876b, 0x0a0122b5, 0x085104b4, 0x51ff96ff, 0x14f29f76, 0x050b31ab, + 0x5f87d4e6, 0x84abb28b}, + {0x8270790a, 0xd5ed439f, 0x85e3f46b, 0x2d6cb59d, 0x6c1e2212, 0x75f55c1b, + 0x17655640, 0xe5436f67}}, + {{0x9aeb596d, 0xc2965ecc, 0x023c92b4, 0x01ea03e7, 0x2e013961, 0x4704b4b6, + 0x905ea367, 0x0ca8fd3f}, + {0x551b2b61, 0x92523a42, 0x390fcd06, 0x1eb7a89c, 0x0392a63e, 0xe7f1d2be, + 0x4ddb0c33, 0x96dca264}}, + {{0x15339848, 0x231c210e, 0x70778c8d, 0xe87a28e8, 0x6956e170, 0x9d1de661, + 0x2bb09c0b, 0x4ac3c938}, + {0x6998987d, 0x19be0551, 0xae09f4d6, 0x8b2376c4, 0x1a3f933d, 0x1de0b765, + 0xe39705f4, 0x380d94c7}}, + {{0x8c31c31d, 0x3685954b, 0x5bf21a0c, 0x68533d00, 0x75c79ec9, 0x0bd7626e, + 0x42c69d54, 0xca177547}, + {0xf6d2dbb2, 0xcc6edaff, 0x174a9d18, 0xfd0d8cbd, 0xaa4578e8, 0x875e8793, + 0x9cab2ce6, 0xa976a713}}, + {{0xb43ea1db, 0xce37ab11, 0x5259d292, 0x0a7ff1a9, 0x8f84f186, 0x851b0221, + 0xdefaad13, 0xa7222bea}, + {0x2b0a9144, 0xa2ac78ec, 0xf2fa59c5, 0x5a024051, 0x6147ce38, 0x91d1eca5, + 0xbc2ac690, 0xbe94d523}}, + {{0x79ec1a0f, 0x2d8daefd, 0xceb39c97, 0x3bbcd6fd, 0x58f61a95, 0xf5575ffc, + 0xadf7b420, 0xdbd986c4}, + {0x15f39eb7, 0x81aa8814, 0xb98d976c, 0x6ee2fcf5, 0xcf2f717d, 0x5465475d, + 0x6860bbd0, 0x8e24d3c4}}}}; +#endif diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/util.h temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/util.h --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/util.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/ec/util.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,258 @@ +/* Copyright (c) 2015, Google Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ + +#include + +#include "../../internal.h" + +#if defined(__GNUC__) +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wsign-conversion" +#endif + + +// This function looks at 5+1 scalar bits (5 current, 1 adjacent less +// significant bit), and recodes them into a signed digit for use in fast point +// multiplication: the use of signed rather than unsigned digits means that +// fewer points need to be precomputed, given that point inversion is easy (a +// precomputed point dP makes -dP available as well). +// +// BACKGROUND: +// +// Signed digits for multiplication were introduced by Booth ("A signed binary +// multiplication technique", Quart. Journ. Mech. and Applied Math., vol. IV, +// pt. 2 (1951), pp. 236-240), in that case for multiplication of integers. +// Booth's original encoding did not generally improve the density of nonzero +// digits over the binary representation, and was merely meant to simplify the +// handling of signed factors given in two's complement; but it has since been +// shown to be the basis of various signed-digit representations that do have +// further advantages, including the wNAF, using the following general +// approach: +// +// (1) Given a binary representation +// +// b_k ... b_2 b_1 b_0, +// +// of a nonnegative integer (b_k in {0, 1}), rewrite it in digits 0, 1, -1 +// by using bit-wise subtraction as follows: +// +// b_k b_(k-1) ... b_2 b_1 b_0 +// - b_k ... b_3 b_2 b_1 b_0 +// ----------------------------------------- +// s_(k+1) s_k ... s_3 s_2 s_1 s_0 +// +// A left-shift followed by subtraction of the original value yields a new +// representation of the same value, using signed bits s_i = b_(i-1) - b_i. +// This representation from Booth's paper has since appeared in the +// literature under a variety of different names including "reversed binary +// form", "alternating greedy expansion", "mutual opposite form", and +// "sign-alternating {+-1}-representation". +// +// An interesting property is that among the nonzero bits, values 1 and -1 +// strictly alternate. +// +// (2) Various window schemes can be applied to the Booth representation of +// integers: for example, right-to-left sliding windows yield the wNAF +// (a signed-digit encoding independently discovered by various researchers +// in the 1990s), and left-to-right sliding windows yield a left-to-right +// equivalent of the wNAF (independently discovered by various researchers +// around 2004). +// +// To prevent leaking information through side channels in point multiplication, +// we need to recode the given integer into a regular pattern: sliding windows +// as in wNAFs won't do, we need their fixed-window equivalent -- which is a few +// decades older: we'll be using the so-called "modified Booth encoding" due to +// MacSorley ("High-speed arithmetic in binary computers", Proc. IRE, vol. 49 +// (1961), pp. 67-91), in a radix-2^5 setting. That is, we always combine five +// signed bits into a signed digit: +// +// s_(5j + 4) s_(5j + 3) s_(5j + 2) s_(5j + 1) s_(5j) +// +// The sign-alternating property implies that the resulting digit values are +// integers from -16 to 16. +// +// Of course, we don't actually need to compute the signed digits s_i as an +// intermediate step (that's just a nice way to see how this scheme relates +// to the wNAF): a direct computation obtains the recoded digit from the +// six bits b_(5j + 4) ... b_(5j - 1). +// +// This function takes those six bits as an integer (0 .. 63), writing the +// recoded digit to *sign (0 for positive, 1 for negative) and *digit (absolute +// value, in the range 0 .. 16). Note that this integer essentially provides +// the input bits "shifted to the left" by one position: for example, the input +// to compute the least significant recoded digit, given that there's no bit +// b_-1, has to be b_4 b_3 b_2 b_1 b_0 0. +// +// DOUBLING CASE: +// +// Point addition formulas for short Weierstrass curves are often incomplete. +// Edge cases such as P + P or P + ∞ must be handled separately. This +// complicates constant-time requirements. P + ∞ cannot be avoided (any window +// may be zero) and is handled with constant-time selects. P + P (where P is not +// ∞) usually is not. Instead, windowing strategies are chosen to avoid this +// case. Whether this happens depends on the group order. +// +// Let w be the window width (in this function, w = 5). The non-trivial doubling +// case in single-point scalar multiplication may occur if and only if the +// 2^(w-1) bit of the group order is zero. +// +// Note the above only holds if the scalar is fully reduced and the group order +// is a prime that is much larger than 2^w. It also only holds when windows +// are applied from most significant to least significant, doubling between each +// window. It does not apply to more complex table strategies such as +// |EC_nistz256_method|. +// +// PROOF: +// +// Let n be the group order. Let l be the number of bits needed to represent n. +// Assume there exists some 0 <= k < n such that signed w-bit windowed +// multiplication hits the doubling case. +// +// Windowed multiplication consists of iterating over groups of s_i (defined +// above based on k's binary representation) from most to least significant. At +// iteration i (for i = ..., 3w, 2w, w, 0, starting from the most significant +// window), we: +// +// 1. Double the accumulator A, w times. Let A_i be the value of A at this +// point. +// +// 2. Set A to T_i + A_i, where T_i is a precomputed multiple of P +// corresponding to the window s_(i+w-1) ... s_i. +// +// Let j be the index such that A_j = T_j ≠ ∞. Looking at A_i and T_i as +// multiples of P, define a_i and t_i to be scalar coefficients of A_i and T_i. +// Thus a_j = t_j ≠ 0 (mod n). Note a_i and t_i may not be reduced mod n. t_i is +// the value of the w signed bits s_(i+w-1) ... s_i. a_i is computed as a_i = +// 2^w * (a_(i+w) + t_(i+w)). +// +// t_i is bounded by -2^(w-1) <= t_i <= 2^(w-1). Additionally, we may write it +// in terms of unsigned bits b_i. t_i consists of signed bits s_(i+w-1) ... s_i. +// This is computed as: +// +// b_(i+w-2) b_(i+w-3) ... b_i b_(i-1) +// - b_(i+w-1) b_(i+w-2) ... b_(i+1) b_i +// -------------------------------------------- +// t_i = s_(i+w-1) s_(i+w-2) ... s_(i+1) s_i +// +// Observe that b_(i+w-2) through b_i occur in both terms. Let x be the integer +// represented by that bit string, i.e. 2^(w-2)*b_(i+w-2) + ... + b_i. +// +// t_i = (2*x + b_(i-1)) - (2^(w-1)*b_(i+w-1) + x) +// = x - 2^(w-1)*b_(i+w-1) + b_(i-1) +// +// Or, using C notation for bit operations: +// +// t_i = (k>>i) & ((1<<(w-1)) - 1) - (k>>i) & (1<<(w-1)) + (k>>(i-1)) & 1 +// +// Note b_(i-1) is added in left-shifted by one (or doubled) from its place. +// This is compensated by t_(i-w)'s subtraction term. Thus, a_i may be computed +// by adding b_l b_(l-1) ... b_(i+1) b_i and an extra copy of b_(i-1). In C +// notation, this is: +// +// a_i = (k>>(i+w)) << w + ((k>>(i+w-1)) & 1) << w +// +// Observe that, while t_i may be positive or negative, a_i is bounded by +// 0 <= a_i < n + 2^w. Additionally, a_i can only be zero if b_(i+w-1) and up +// are all zero. (Note this implies a non-trivial P + (-P) is unreachable for +// all groups. That would imply the subsequent a_i is zero, which means all +// terms thus far were zero.) +// +// Returning to our doubling position, we have a_j = t_j (mod n). We now +// determine the value of a_j - t_j, which must be divisible by n. Our bounds on +// a_j and t_j imply a_j - t_j is 0 or n. If it is 0, a_j = t_j. However, 2^w +// divides a_j and -2^(w-1) <= t_j <= 2^(w-1), so this can only happen if +// a_j = t_j = 0, which is a trivial doubling. Therefore, a_j - t_j = n. +// +// Now we determine j. Suppose j > 0. w divides j, so j >= w. Then, +// +// n = a_j - t_j = (k>>(j+w)) << w + ((k>>(j+w-1)) & 1) << w - t_j +// <= k/2^j + 2^w - t_j +// < n/2^w + 2^w + 2^(w-1) +// +// n is much larger than 2^w, so this is impossible. Thus, j = 0: only the final +// addition may hit the doubling case. +// +// Finally, we consider bit patterns for n and k. Divide k into k_H + k_M + k_L +// such that k_H is the contribution from b_(l-1) .. b_w, k_M is the +// contribution from b_(w-1), and k_L is the contribution from b_(w-2) ... b_0. +// That is: +// +// - 2^w divides k_H +// - k_M is 0 or 2^(w-1) +// - 0 <= k_L < 2^(w-1) +// +// Divide n into n_H + n_M + n_L similarly. We thus have: +// +// t_0 = (k>>0) & ((1<<(w-1)) - 1) - (k>>0) & (1<<(w-1)) + (k>>(0-1)) & 1 +// = k & ((1<<(w-1)) - 1) - k & (1<<(w-1)) +// = k_L - k_M +// +// a_0 = (k>>(0+w)) << w + ((k>>(0+w-1)) & 1) << w +// = (k>>w) << w + ((k>>(w-1)) & 1) << w +// = k_H + 2*k_M +// +// n = a_0 - t_0 +// n_H + n_M + n_L = (k_H + 2*k_M) - (k_L - k_M) +// = k_H + 3*k_M - k_L +// +// k_H - k_L < k and k < n, so k_H - k_L ≠ n. Therefore k_M is not 0 and must be +// 2^(w-1). Now we consider k_H and n_H. We know k_H <= n_H. Suppose k_H = n_H. +// Then, +// +// n_M + n_L = 3*(2^(w-1)) - k_L +// > 3*(2^(w-1)) - 2^(w-1) +// = 2^w +// +// Contradiction (n_M + n_L is the bottom w bits of n). Thus k_H < n_H. Suppose +// k_H < n_H - 2*2^w. Then, +// +// n_H + n_M + n_L = k_H + 3*(2^(w-1)) - k_L +// < n_H - 2*2^w + 3*(2^(w-1)) - k_L +// n_M + n_L < -2^(w-1) - k_L +// +// Contradiction. Thus, k_H = n_H - 2^w. (Note 2^w divides n_H and k_H.) Thus, +// +// n_H + n_M + n_L = k_H + 3*(2^(w-1)) - k_L +// = n_H - 2^w + 3*(2^(w-1)) - k_L +// n_M + n_L = 2^(w-1) - k_L +// <= 2^(w-1) +// +// Equality would mean 2^(w-1) divides n, which is impossible if n is prime. +// Thus n_M + n_L < 2^(w-1), so n_M is zero, proving our condition. +// +// This proof constructs k, so, to show the converse, let k_H = n_H - 2^w, +// k_M = 2^(w-1), k_L = 2^(w-1) - n_L. This will result in a non-trivial point +// doubling in the final addition and is the only such scalar. +// +// COMMON CURVES: +// +// The group orders for common curves end in the following bit patterns: +// +// P-521: ...00001001; w = 4 is okay +// P-384: ...01110011; w = 2, 5, 6, 7 are okay +// P-256: ...01010001; w = 5, 7 are okay +// P-224: ...00111101; w = 3, 4, 5, 6 are okay +static inline void recode_scalar_bits(crypto_word_t *sign, crypto_word_t *digit, + crypto_word_t in) { + crypto_word_t s, d; + + s = ~((in >> 5) - 1); /* sets all bits to MSB(in), 'in' seen as + * 6-bit value */ + d = (1 << 6) - in - 1; + d = (d & s) | (in & ~s); + d = (d >> 1) + (d & 1); + + *sign = s & 1; + *digit = d; +} diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl 2023-10-30 19:40:00.000000000 +0000 @@ -71,14 +71,27 @@ # no AVX2 instructions being used. if ($avx>1) {{{ -($inp,$out,$len,$key,$ivp,$Xip)=("%rdi","%rsi","%rdx","%rcx","%r8","%r9"); +# On Windows, only four parameters are passed in registers. The last two +# parameters will be manually loaded into %rdi and %rsi. +my ($inp, $out, $len, $key, $ivp, $Htable) = + $win64 ? ("%rcx", "%rdx", "%r8", "%r9", "%rdi", "%rsi") : + ("%rdi", "%rsi", "%rdx", "%rcx", "%r8", "%r9"); + +# The offset from %rbp to the Xip parameter. On Windows, all parameters have +# corresponding stack positions, not just ones passed on the stack. +# (0x40 = 6*8 + 0x10) +# +# Xip only needs to be accessed at the beginning and end of the function, and +# this function is short on registers, so we make it the last parameter for +# convenience. +my $Xip_offset = $win64 ? 0x40 : 0x10; ($Ii,$T1,$T2,$Hkey, $Z0,$Z1,$Z2,$Z3,$Xi) = map("%xmm$_",(0..8)); ($inout0,$inout1,$inout2,$inout3,$inout4,$inout5,$rndkey) = map("%xmm$_",(9..15)); -($counter,$rounds,$ret,$const,$in0,$end0)=("%ebx","%ebp","%r10","%r11","%r14","%r15"); +($counter,$rounds,$const,$in0,$end0)=("%ebx","%r10d","%r11","%r14","%r15"); $code=<<___; .text @@ -104,7 +117,7 @@ .Loop6x: add \$`6<<24`,$counter jc .Lhandle_ctr32 # discard $inout[1-5]? - vmovdqu 0x00-0x20($Xip),$Hkey # $Hkey^1 + vmovdqu 0x00-0x20($Htable),$Hkey # $Hkey^1 vpaddb $T2,$inout5,$T1 # next counter value vpxor $rndkey,$inout1,$inout1 vpxor $rndkey,$inout2,$inout2 @@ -144,7 +157,7 @@ setnc %r12b vpclmulqdq \$0x11,$Hkey,$Z3,$Z3 vaesenc $T2,$inout2,$inout2 - vmovdqu 0x10-0x20($Xip),$Hkey # $Hkey^2 + vmovdqu 0x10-0x20($Htable),$Hkey # $Hkey^2 neg %r12 vaesenc $T2,$inout3,$inout3 vpxor $Z1,$Z2,$Z2 @@ -171,7 +184,7 @@ mov %r13,0x20+8(%rsp) vaesenc $rndkey,$inout4,$inout4 mov %r12,0x28+8(%rsp) - vmovdqu 0x30-0x20($Xip),$Z1 # borrow $Z1 for $Hkey^3 + vmovdqu 0x30-0x20($Htable),$Z1 # borrow $Z1 for $Hkey^3 vaesenc $rndkey,$inout5,$inout5 vmovups 0x30-0x80($key),$rndkey @@ -189,7 +202,7 @@ vaesenc $rndkey,$inout3,$inout3 vaesenc $rndkey,$inout4,$inout4 vpxor $T1,$Z0,$Z0 - vmovdqu 0x40-0x20($Xip),$T1 # borrow $T1 for $Hkey^4 + vmovdqu 0x40-0x20($Htable),$T1 # borrow $T1 for $Hkey^4 vaesenc $rndkey,$inout5,$inout5 vmovups 0x40-0x80($key),$rndkey @@ -211,7 +224,7 @@ vaesenc $rndkey,$inout4,$inout4 mov %r12,0x38+8(%rsp) vpxor $T2,$Z0,$Z0 - vmovdqu 0x60-0x20($Xip),$T2 # borrow $T2 for $Hkey^5 + vmovdqu 0x60-0x20($Htable),$T2 # borrow $T2 for $Hkey^5 vaesenc $rndkey,$inout5,$inout5 vmovups 0x50-0x80($key),$rndkey @@ -233,7 +246,7 @@ vaesenc $rndkey,$inout4,$inout4 mov %r12,0x48+8(%rsp) vpxor $Hkey,$Z0,$Z0 - vmovdqu 0x70-0x20($Xip),$Hkey # $Hkey^6 + vmovdqu 0x70-0x20($Htable),$Hkey # $Hkey^6 vaesenc $rndkey,$inout5,$inout5 vmovups 0x60-0x80($key),$rndkey @@ -335,7 +348,7 @@ vmovdqu 0x30($const),$Z1 # borrow $Z1, .Ltwo_lsb vpaddd 0x40($const),$Z2,$inout1 # .Lone_lsb vpaddd $Z1,$Z2,$inout2 - vmovdqu 0x00-0x20($Xip),$Hkey # $Hkey^1 + vmovdqu 0x00-0x20($Htable),$Hkey # $Hkey^1 vpaddd $Z1,$inout1,$inout3 vpshufb $Ii,$inout1,$inout1 vpaddd $Z1,$inout2,$inout4 @@ -375,6 +388,9 @@ vpaddb $T2,$T1,$Ii mov %r13,0x70+8(%rsp) lea 0x60($inp),$inp + # These two prefetches were added in BoringSSL. See change that added them. + prefetcht0 512($inp) # We use 96-byte block so prefetch 2 lines (128 bytes) + prefetcht0 576($inp) vaesenclast $Z1,$inout2,$inout2 vpaddb $T2,$Ii,$Z1 mov %r12,0x78+8(%rsp) @@ -387,7 +403,7 @@ vaesenclast $Hkey,$inout5,$inout5 vpaddb $T2,$Z3,$Hkey - add \$0x60,$ret + add \$0x60,%rax sub \$0x6,$len jc .L6x_done @@ -416,65 +432,97 @@ ___ ###################################################################### # -# size_t GFp_aesni_gcm_[en|de]crypt(const void *inp, void *out, size_t len, -# const AES_KEY *key, unsigned char iv[16], -# struct { u128 Xi,H,Htbl[9]; } *Xip); +# size_t aesni_gcm_[en|de]crypt(const void *inp, void *out, size_t len, +# const AES_KEY *key, unsigned char iv[16], const u128 Htbl[9], +# u128 *Xip); $code.=<<___; -.globl GFp_aesni_gcm_decrypt -.type GFp_aesni_gcm_decrypt,\@function,6 +.globl aesni_gcm_decrypt +.type aesni_gcm_decrypt,\@abi-omnipotent .align 32 -GFp_aesni_gcm_decrypt: +aesni_gcm_decrypt: .cfi_startproc - xor $ret,$ret +.seh_startproc + _CET_ENDBR + xor %rax,%rax # We call |_aesni_ctr32_ghash_6x|, which requires at least 96 (0x60) # bytes of input. cmp \$0x60,$len # minimal accepted length jb .Lgcm_dec_abort - lea (%rsp),%rax # save stack pointer -.cfi_def_cfa_register %rax - push %rbx -.cfi_push %rbx push %rbp .cfi_push %rbp +.seh_pushreg %rbp + mov %rsp, %rbp # save stack pointer +.cfi_def_cfa_register %rbp + push %rbx +.cfi_push %rbx +.seh_pushreg %rbx push %r12 .cfi_push %r12 +.seh_pushreg %r12 push %r13 .cfi_push %r13 +.seh_pushreg %r13 push %r14 .cfi_push %r14 +.seh_pushreg %r14 push %r15 .cfi_push %r15 +.seh_pushreg %r15 ___ -$code.=<<___ if ($win64); - lea -0xa8(%rsp),%rsp - movaps %xmm6,-0xd8(%rax) - movaps %xmm7,-0xc8(%rax) - movaps %xmm8,-0xb8(%rax) - movaps %xmm9,-0xa8(%rax) - movaps %xmm10,-0x98(%rax) - movaps %xmm11,-0x88(%rax) - movaps %xmm12,-0x78(%rax) - movaps %xmm13,-0x68(%rax) - movaps %xmm14,-0x58(%rax) - movaps %xmm15,-0x48(%rax) -.Lgcm_dec_body: +if ($win64) { +$code.=<<___ + lea -0xa8(%rsp),%rsp # 8 extra bytes to align the stack +.seh_allocstack 0xa8 +.seh_setframe %rbp, 0xa8+5*8 + # Load the last two parameters. These go into %rdi and %rsi, which are + # non-volatile on Windows, so stash them in the parameter stack area + # first. + mov %rdi, 0x10(%rbp) +.seh_savereg %rdi, 0xa8+5*8+0x10 + mov %rsi, 0x18(%rbp) +.seh_savereg %rsi, 0xa8+5*8+0x18 + mov 0x30(%rbp), $ivp + mov 0x38(%rbp), $Htable + # Save non-volatile XMM registers. + movaps %xmm6,-0xd0(%rbp) +.seh_savexmm128 %xmm6, 0xa8+5*8-0xd0 + movaps %xmm7,-0xc0(%rbp) +.seh_savexmm128 %xmm7, 0xa8+5*8-0xc0 + movaps %xmm8,-0xb0(%rbp) +.seh_savexmm128 %xmm8, 0xa8+5*8-0xb0 + movaps %xmm9,-0xa0(%rbp) +.seh_savexmm128 %xmm9, 0xa8+5*8-0xa0 + movaps %xmm10,-0x90(%rbp) +.seh_savexmm128 %xmm10, 0xa8+5*8-0x90 + movaps %xmm11,-0x80(%rbp) +.seh_savexmm128 %xmm11, 0xa8+5*8-0x80 + movaps %xmm12,-0x70(%rbp) +.seh_savexmm128 %xmm12, 0xa8+5*8-0x70 + movaps %xmm13,-0x60(%rbp) +.seh_savexmm128 %xmm13, 0xa8+5*8-0x60 + movaps %xmm14,-0x50(%rbp) +.seh_savexmm128 %xmm14, 0xa8+5*8-0x50 + movaps %xmm15,-0x40(%rbp) +.seh_savexmm128 %xmm15, 0xa8+5*8-0x40 ___ +} $code.=<<___; vzeroupper + mov $Xip_offset(%rbp), %r12 vmovdqu ($ivp),$T1 # input counter value add \$-128,%rsp mov 12($ivp),$counter lea .Lbswap_mask(%rip),$const lea -0x80($key),$in0 # borrow $in0 mov \$0xf80,$end0 # borrow $end0 - vmovdqu ($Xip),$Xi # load Xi + vmovdqu (%r12),$Xi # load Xi and \$-128,%rsp # ensure stack alignment vmovdqu ($const),$Ii # borrow $Ii for .Lbswap_mask lea 0x80($key),$key # size optimization - lea 0x20+0x20($Xip),$Xip # size optimization + lea 0x20($Htable),$Htable # size optimization mov 0xf0-0x80($key),$rounds vpshufb $Ii,$Xi,$Xi @@ -488,7 +536,7 @@ .Ldec_no_key_aliasing: vmovdqu 0x50($inp),$Z3 # I[5] - lea ($inp),$in0 + mov $inp,$in0 vmovdqu 0x40($inp),$Z0 # |_aesni_ctr32_ghash_6x| requires |$end0| to point to 2*96 (0xc0) @@ -501,7 +549,7 @@ vmovdqu 0x30($inp),$Z1 shr \$4,$len - xor $ret,$ret + xor %rax,%rax vmovdqu 0x20($inp),$Z2 vpshufb $Ii,$Z3,$Z3 # passed to _aesni_ctr32_ghash_6x vmovdqu 0x10($inp),$T2 @@ -519,6 +567,7 @@ call _aesni_ctr32_ghash_6x + mov $Xip_offset(%rbp), %r12 vmovups $inout0,-0x60($out) # save output vmovups $inout1,-0x50($out) vmovups $inout2,-0x40($out) @@ -527,42 +576,44 @@ vmovups $inout5,-0x10($out) vpshufb ($const),$Xi,$Xi # .Lbswap_mask - vmovdqu $Xi,-0x40($Xip) # output Xi + vmovdqu $Xi,(%r12) # output Xi vzeroupper ___ $code.=<<___ if ($win64); - movaps -0xd8(%rax),%xmm6 - movaps -0xc8(%rax),%xmm7 - movaps -0xb8(%rax),%xmm8 - movaps -0xa8(%rax),%xmm9 - movaps -0x98(%rax),%xmm10 - movaps -0x88(%rax),%xmm11 - movaps -0x78(%rax),%xmm12 - movaps -0x68(%rax),%xmm13 - movaps -0x58(%rax),%xmm14 - movaps -0x48(%rax),%xmm15 + movaps -0xd0(%rbp),%xmm6 + movaps -0xc0(%rbp),%xmm7 + movaps -0xb0(%rbp),%xmm8 + movaps -0xa0(%rbp),%xmm9 + movaps -0x90(%rbp),%xmm10 + movaps -0x80(%rbp),%xmm11 + movaps -0x70(%rbp),%xmm12 + movaps -0x60(%rbp),%xmm13 + movaps -0x50(%rbp),%xmm14 + movaps -0x40(%rbp),%xmm15 + mov 0x10(%rbp),%rdi + mov 0x18(%rbp),%rsi ___ $code.=<<___; - mov -48(%rax),%r15 -.cfi_restore %r15 - mov -40(%rax),%r14 -.cfi_restore %r14 - mov -32(%rax),%r13 -.cfi_restore %r13 - mov -24(%rax),%r12 -.cfi_restore %r12 - mov -16(%rax),%rbp -.cfi_restore %rbp - mov -8(%rax),%rbx -.cfi_restore %rbx - lea (%rax),%rsp # restore %rsp -.cfi_def_cfa_register %rsp + lea -0x28(%rbp), %rsp # restore %rsp to fixed allocation +.cfi_def_cfa %rsp, 0x38 + pop %r15 +.cfi_pop %r15 + pop %r14 +.cfi_pop %r14 + pop %r13 +.cfi_pop %r13 + pop %r12 +.cfi_pop %r12 + pop %rbx +.cfi_pop %rbx + pop %rbp +.cfi_pop %rbp .Lgcm_dec_abort: - mov $ret,%rax # return value ret +.seh_endproc .cfi_endproc -.size GFp_aesni_gcm_decrypt,.-GFp_aesni_gcm_decrypt +.size aesni_gcm_decrypt,.-aesni_gcm_decrypt ___ $code.=<<___; @@ -659,12 +710,18 @@ .cfi_endproc .size _aesni_ctr32_6x,.-_aesni_ctr32_6x -.globl GFp_aesni_gcm_encrypt -.type GFp_aesni_gcm_encrypt,\@function,6 +.globl aesni_gcm_encrypt +.type aesni_gcm_encrypt,\@abi-omnipotent .align 32 -GFp_aesni_gcm_encrypt: +aesni_gcm_encrypt: .cfi_startproc - xor $ret,$ret +.seh_startproc + _CET_ENDBR +#ifdef BORINGSSL_DISPATCH_TEST +.extern BORINGSSL_function_hit + movb \$1,BORINGSSL_function_hit+2(%rip) +#endif + xor %rax,%rax # We call |_aesni_ctr32_6x| twice, each call consuming 96 bytes of # input. Then we call |_aesni_ctr32_ghash_6x|, which requires at @@ -672,35 +729,64 @@ cmp \$0x60*3,$len # minimal accepted length jb .Lgcm_enc_abort - lea (%rsp),%rax # save stack pointer -.cfi_def_cfa_register %rax - push %rbx -.cfi_push %rbx push %rbp .cfi_push %rbp +.seh_pushreg %rbp + mov %rsp, %rbp # save stack pointer +.cfi_def_cfa_register %rbp + push %rbx +.cfi_push %rbx +.seh_pushreg %rbx push %r12 .cfi_push %r12 +.seh_pushreg %r12 push %r13 .cfi_push %r13 +.seh_pushreg %r13 push %r14 .cfi_push %r14 +.seh_pushreg %r14 push %r15 .cfi_push %r15 +.seh_pushreg %r15 ___ -$code.=<<___ if ($win64); - lea -0xa8(%rsp),%rsp - movaps %xmm6,-0xd8(%rax) - movaps %xmm7,-0xc8(%rax) - movaps %xmm8,-0xb8(%rax) - movaps %xmm9,-0xa8(%rax) - movaps %xmm10,-0x98(%rax) - movaps %xmm11,-0x88(%rax) - movaps %xmm12,-0x78(%rax) - movaps %xmm13,-0x68(%rax) - movaps %xmm14,-0x58(%rax) - movaps %xmm15,-0x48(%rax) -.Lgcm_enc_body: +if ($win64) { +$code.=<<___ + lea -0xa8(%rsp),%rsp # 8 extra bytes to align the stack +.seh_allocstack 0xa8 +.seh_setframe %rbp, 0xa8+5*8 + # Load the last two parameters. These go into %rdi and %rsi, which are + # non-volatile on Windows, so stash them in the parameter stack area + # first. + mov %rdi, 0x10(%rbp) +.seh_savereg %rdi, 0xa8+5*8+0x10 + mov %rsi, 0x18(%rbp) +.seh_savereg %rsi, 0xa8+5*8+0x18 + mov 0x30(%rbp), $ivp + mov 0x38(%rbp), $Htable + # Save non-volatile XMM registers. + movaps %xmm6,-0xd0(%rbp) +.seh_savexmm128 %xmm6, 0xa8+5*8-0xd0 + movaps %xmm7,-0xc0(%rbp) +.seh_savexmm128 %xmm7, 0xa8+5*8-0xc0 + movaps %xmm8,-0xb0(%rbp) +.seh_savexmm128 %xmm8, 0xa8+5*8-0xb0 + movaps %xmm9,-0xa0(%rbp) +.seh_savexmm128 %xmm9, 0xa8+5*8-0xa0 + movaps %xmm10,-0x90(%rbp) +.seh_savexmm128 %xmm10, 0xa8+5*8-0x90 + movaps %xmm11,-0x80(%rbp) +.seh_savexmm128 %xmm11, 0xa8+5*8-0x80 + movaps %xmm12,-0x70(%rbp) +.seh_savexmm128 %xmm12, 0xa8+5*8-0x70 + movaps %xmm13,-0x60(%rbp) +.seh_savexmm128 %xmm13, 0xa8+5*8-0x60 + movaps %xmm14,-0x50(%rbp) +.seh_savexmm128 %xmm14, 0xa8+5*8-0x50 + movaps %xmm15,-0x40(%rbp) +.seh_savexmm128 %xmm15, 0xa8+5*8-0x40 ___ +} $code.=<<___; vzeroupper @@ -724,7 +810,7 @@ sub $end0,%rsp # avoid aliasing with key .Lenc_no_key_aliasing: - lea ($out),$in0 + mov $out,$in0 # |_aesni_ctr32_ghash_6x| requires |$end0| to point to 2*96 (0xc0) # bytes before the end of the input. Note, in particular, that this is @@ -752,18 +838,19 @@ call _aesni_ctr32_6x - vmovdqu ($Xip),$Xi # load Xi - lea 0x20+0x20($Xip),$Xip # size optimization + mov $Xip_offset(%rbp), %r12 + lea 0x20($Htable),$Htable # size optimization + vmovdqu (%r12),$Xi # load Xi sub \$12,$len - mov \$0x60*2,$ret + mov \$0x60*2,%rax vpshufb $Ii,$Xi,$Xi call _aesni_ctr32_ghash_6x vmovdqu 0x20(%rsp),$Z3 # I[5] vmovdqu ($const),$Ii # borrow $Ii for .Lbswap_mask - vmovdqu 0x00-0x20($Xip),$Hkey # $Hkey^1 + vmovdqu 0x00-0x20($Htable),$Hkey # $Hkey^1 vpunpckhqdq $Z3,$Z3,$T1 - vmovdqu 0x20-0x20($Xip),$rndkey # borrow $rndkey for $HK + vmovdqu 0x20-0x20($Htable),$rndkey # borrow $rndkey for $HK vmovups $inout0,-0x60($out) # save output vpshufb $Ii,$inout0,$inout0 # but keep bswapped copy vpxor $Z3,$T1,$T1 @@ -783,7 +870,7 @@ $code.=<<___; vmovdqu 0x30(%rsp),$Z2 # I[4] - vmovdqu 0x10-0x20($Xip),$Ii # borrow $Ii for $Hkey^2 + vmovdqu 0x10-0x20($Htable),$Ii # borrow $Ii for $Hkey^2 vpunpckhqdq $Z2,$Z2,$T2 vpclmulqdq \$0x00,$Hkey,$Z3,$Z1 vpxor $Z2,$T2,$T2 @@ -792,19 +879,19 @@ vmovdqu 0x40(%rsp),$T3 # I[3] vpclmulqdq \$0x00,$Ii,$Z2,$Z0 - vmovdqu 0x30-0x20($Xip),$Hkey # $Hkey^3 + vmovdqu 0x30-0x20($Htable),$Hkey # $Hkey^3 vpxor $Z1,$Z0,$Z0 vpunpckhqdq $T3,$T3,$Z1 vpclmulqdq \$0x11,$Ii,$Z2,$Z2 vpxor $T3,$Z1,$Z1 vpxor $Z3,$Z2,$Z2 vpclmulqdq \$0x10,$HK,$T2,$T2 - vmovdqu 0x50-0x20($Xip),$HK + vmovdqu 0x50-0x20($Htable),$HK vpxor $T1,$T2,$T2 vmovdqu 0x50(%rsp),$T1 # I[2] vpclmulqdq \$0x00,$Hkey,$T3,$Z3 - vmovdqu 0x40-0x20($Xip),$Ii # borrow $Ii for $Hkey^4 + vmovdqu 0x40-0x20($Htable),$Ii # borrow $Ii for $Hkey^4 vpxor $Z0,$Z3,$Z3 vpunpckhqdq $T1,$T1,$Z0 vpclmulqdq \$0x11,$Hkey,$T3,$T3 @@ -815,19 +902,19 @@ vmovdqu 0x60(%rsp),$T2 # I[1] vpclmulqdq \$0x00,$Ii,$T1,$Z2 - vmovdqu 0x60-0x20($Xip),$Hkey # $Hkey^5 + vmovdqu 0x60-0x20($Htable),$Hkey # $Hkey^5 vpxor $Z3,$Z2,$Z2 vpunpckhqdq $T2,$T2,$Z3 vpclmulqdq \$0x11,$Ii,$T1,$T1 vpxor $T2,$Z3,$Z3 vpxor $T3,$T1,$T1 vpclmulqdq \$0x10,$HK,$Z0,$Z0 - vmovdqu 0x80-0x20($Xip),$HK + vmovdqu 0x80-0x20($Htable),$HK vpxor $Z1,$Z0,$Z0 vpxor 0x70(%rsp),$Xi,$Xi # accumulate I[0] vpclmulqdq \$0x00,$Hkey,$T2,$Z1 - vmovdqu 0x70-0x20($Xip),$Ii # borrow $Ii for $Hkey^6 + vmovdqu 0x70-0x20($Htable),$Ii # borrow $Ii for $Hkey^6 vpunpckhqdq $Xi,$Xi,$T3 vpxor $Z2,$Z1,$Z1 vpclmulqdq \$0x11,$Hkey,$T2,$T2 @@ -837,17 +924,17 @@ vpxor $Z0,$Z3,$Z0 vpclmulqdq \$0x00,$Ii,$Xi,$Z2 - vmovdqu 0x00-0x20($Xip),$Hkey # $Hkey^1 + vmovdqu 0x00-0x20($Htable),$Hkey # $Hkey^1 vpunpckhqdq $inout5,$inout5,$T1 vpclmulqdq \$0x11,$Ii,$Xi,$Xi vpxor $inout5,$T1,$T1 vpxor $Z1,$Z2,$Z1 vpclmulqdq \$0x10,$HK,$T3,$T3 - vmovdqu 0x20-0x20($Xip),$HK + vmovdqu 0x20-0x20($Htable),$HK vpxor $T2,$Xi,$Z3 vpxor $Z0,$T3,$Z2 - vmovdqu 0x10-0x20($Xip),$Ii # borrow $Ii for $Hkey^2 + vmovdqu 0x10-0x20($Htable),$Ii # borrow $Ii for $Hkey^2 vpxor $Z1,$Z3,$T3 # aggregated Karatsuba post-processing vpclmulqdq \$0x00,$Hkey,$inout5,$Z0 vpxor $T3,$Z2,$Z2 @@ -861,7 +948,7 @@ vpxor $Z2,$Z3,$Z3 vpclmulqdq \$0x00,$Ii,$inout4,$Z1 - vmovdqu 0x30-0x20($Xip),$Hkey # $Hkey^3 + vmovdqu 0x30-0x20($Htable),$Hkey # $Hkey^3 vpxor $Z0,$Z1,$Z1 vpunpckhqdq $inout3,$inout3,$T3 vpclmulqdq \$0x11,$Ii,$inout4,$inout4 @@ -869,11 +956,11 @@ vpxor $inout5,$inout4,$inout4 vpalignr \$8,$Xi,$Xi,$inout5 # 1st phase vpclmulqdq \$0x10,$HK,$T2,$T2 - vmovdqu 0x50-0x20($Xip),$HK + vmovdqu 0x50-0x20($Htable),$HK vpxor $T1,$T2,$T2 vpclmulqdq \$0x00,$Hkey,$inout3,$Z0 - vmovdqu 0x40-0x20($Xip),$Ii # borrow $Ii for $Hkey^4 + vmovdqu 0x40-0x20($Htable),$Ii # borrow $Ii for $Hkey^4 vpxor $Z1,$Z0,$Z0 vpunpckhqdq $inout2,$inout2,$T1 vpclmulqdq \$0x11,$Hkey,$inout3,$inout3 @@ -887,7 +974,7 @@ vxorps $inout5,$Xi,$Xi vpclmulqdq \$0x00,$Ii,$inout2,$Z1 - vmovdqu 0x60-0x20($Xip),$Hkey # $Hkey^5 + vmovdqu 0x60-0x20($Htable),$Hkey # $Hkey^5 vpxor $Z0,$Z1,$Z1 vpunpckhqdq $inout1,$inout1,$T2 vpclmulqdq \$0x11,$Ii,$inout2,$inout2 @@ -895,7 +982,7 @@ vpalignr \$8,$Xi,$Xi,$inout5 # 2nd phase vpxor $inout3,$inout2,$inout2 vpclmulqdq \$0x10,$HK,$T1,$T1 - vmovdqu 0x80-0x20($Xip),$HK + vmovdqu 0x80-0x20($Htable),$HK vpxor $T3,$T1,$T1 vxorps $Z3,$inout5,$inout5 @@ -903,7 +990,7 @@ vxorps $inout5,$Xi,$Xi vpclmulqdq \$0x00,$Hkey,$inout1,$Z0 - vmovdqu 0x70-0x20($Xip),$Ii # borrow $Ii for $Hkey^6 + vmovdqu 0x70-0x20($Htable),$Ii # borrow $Ii for $Hkey^6 vpxor $Z1,$Z0,$Z0 vpunpckhqdq $Xi,$Xi,$T3 vpclmulqdq \$0x11,$Hkey,$inout1,$inout1 @@ -938,46 +1025,50 @@ ___ } $code.=<<___; + mov $Xip_offset(%rbp), %r12 vpshufb ($const),$Xi,$Xi # .Lbswap_mask - vmovdqu $Xi,-0x40($Xip) # output Xi + vmovdqu $Xi,(%r12) # output Xi vzeroupper ___ $code.=<<___ if ($win64); - movaps -0xd8(%rax),%xmm6 - movaps -0xc8(%rax),%xmm7 - movaps -0xb8(%rax),%xmm8 - movaps -0xa8(%rax),%xmm9 - movaps -0x98(%rax),%xmm10 - movaps -0x88(%rax),%xmm11 - movaps -0x78(%rax),%xmm12 - movaps -0x68(%rax),%xmm13 - movaps -0x58(%rax),%xmm14 - movaps -0x48(%rax),%xmm15 + movaps -0xd0(%rbp),%xmm6 + movaps -0xc0(%rbp),%xmm7 + movaps -0xb0(%rbp),%xmm8 + movaps -0xa0(%rbp),%xmm9 + movaps -0x90(%rbp),%xmm10 + movaps -0x80(%rbp),%xmm11 + movaps -0x70(%rbp),%xmm12 + movaps -0x60(%rbp),%xmm13 + movaps -0x50(%rbp),%xmm14 + movaps -0x40(%rbp),%xmm15 + mov 0x10(%rbp),%rdi + mov 0x18(%rbp),%rsi ___ $code.=<<___; - mov -48(%rax),%r15 -.cfi_restore %r15 - mov -40(%rax),%r14 -.cfi_restore %r14 - mov -32(%rax),%r13 -.cfi_restore %r13 - mov -24(%rax),%r12 -.cfi_restore %r12 - mov -16(%rax),%rbp -.cfi_restore %rbp - mov -8(%rax),%rbx -.cfi_restore %rbx - lea (%rax),%rsp # restore %rsp -.cfi_def_cfa_register %rsp + lea -0x28(%rbp), %rsp # restore %rsp to fixed allocation +.cfi_def_cfa %rsp, 0x38 + pop %r15 +.cfi_pop %r15 + pop %r14 +.cfi_pop %r14 + pop %r13 +.cfi_pop %r13 + pop %r12 +.cfi_pop %r12 + pop %rbx +.cfi_pop %rbx + pop %rbp +.cfi_pop %rbp .Lgcm_enc_abort: - mov $ret,%rax # return value ret +.seh_endproc .cfi_endproc -.size GFp_aesni_gcm_encrypt,.-GFp_aesni_gcm_encrypt +.size aesni_gcm_encrypt,.-aesni_gcm_encrypt ___ $code.=<<___; +.section .rodata .align 64 .Lbswap_mask: .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -991,132 +1082,32 @@ .byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .asciz "AES-NI GCM module for x86_64, CRYPTOGAMS by " .align 64 +.text ___ -if ($win64) { -$rec="%rcx"; -$frame="%rdx"; -$context="%r8"; -$disp="%r9"; - -$code.=<<___ -.extern __imp_RtlVirtualUnwind -.type gcm_se_handler,\@abi-omnipotent -.align 16 -gcm_se_handler: - push %rsi - push %rdi - push %rbx - push %rbp - push %r12 - push %r13 - push %r14 - push %r15 - pushfq - sub \$64,%rsp - - mov 120($context),%rax # pull context->Rax - mov 248($context),%rbx # pull context->Rip - - mov 8($disp),%rsi # disp->ImageBase - mov 56($disp),%r11 # disp->HandlerData +}}} else {{{ +$code=<<___; # assembler is too old +.text - mov 0(%r11),%r10d # HandlerData[0] - lea (%rsi,%r10),%r10 # prologue label - cmp %r10,%rbx # context->RipRsp - - mov 4(%r11),%r10d # HandlerData[1] - lea (%rsi,%r10),%r10 # epilogue label - cmp %r10,%rbx # context->Rip>=epilogue label - jae .Lcommon_seh_tail - - mov 120($context),%rax # pull context->Rax - - mov -48(%rax),%r15 - mov -40(%rax),%r14 - mov -32(%rax),%r13 - mov -24(%rax),%r12 - mov -16(%rax),%rbp - mov -8(%rax),%rbx - mov %r15,240($context) - mov %r14,232($context) - mov %r13,224($context) - mov %r12,216($context) - mov %rbp,160($context) - mov %rbx,144($context) - - lea -0xd8(%rax),%rsi # %xmm save area - lea 512($context),%rdi # & context.Xmm6 - mov \$20,%ecx # 10*sizeof(%xmm0)/sizeof(%rax) - .long 0xa548f3fc # cld; rep movsq - -.Lcommon_seh_tail: - mov 8(%rax),%rdi - mov 16(%rax),%rsi - mov %rax,152($context) # restore context->Rsp - mov %rsi,168($context) # restore context->Rsi - mov %rdi,176($context) # restore context->Rdi - - mov 40($disp),%rdi # disp->ContextRecord - mov $context,%rsi # context - mov \$154,%ecx # sizeof(CONTEXT) - .long 0xa548f3fc # cld; rep movsq - - mov $disp,%rsi - xor %rcx,%rcx # arg1, UNW_FLAG_NHANDLER - mov 8(%rsi),%rdx # arg2, disp->ImageBase - mov 0(%rsi),%r8 # arg3, disp->ControlPc - mov 16(%rsi),%r9 # arg4, disp->FunctionEntry - mov 40(%rsi),%r10 # disp->ContextRecord - lea 56(%rsi),%r11 # &disp->HandlerData - lea 24(%rsi),%r12 # &disp->EstablisherFrame - mov %r10,32(%rsp) # arg5 - mov %r11,40(%rsp) # arg6 - mov %r12,48(%rsp) # arg7 - mov %rcx,56(%rsp) # arg8, (NULL) - call *__imp_RtlVirtualUnwind(%rip) - - mov \$1,%eax # ExceptionContinueSearch - add \$64,%rsp - popfq - pop %r15 - pop %r14 - pop %r13 - pop %r12 - pop %rbp - pop %rbx - pop %rdi - pop %rsi +.globl aesni_gcm_encrypt +.type aesni_gcm_encrypt,\@abi-omnipotent +aesni_gcm_encrypt: + _CET_ENDBR + xor %eax,%eax ret -.size gcm_se_handler,.-gcm_se_handler +.size aesni_gcm_encrypt,.-aesni_gcm_encrypt -.section .pdata -.align 4 - .rva .LSEH_begin_GFp_aesni_gcm_decrypt - .rva .LSEH_end_GFp_aesni_gcm_decrypt - .rva .LSEH_gcm_dec_info - - .rva .LSEH_begin_GFp_aesni_gcm_encrypt - .rva .LSEH_end_GFp_aesni_gcm_encrypt - .rva .LSEH_GFp_gcm_enc_info -.section .xdata -.align 8 -.LSEH_gcm_dec_info: - .byte 9,0,0,0 - .rva gcm_se_handler - .rva .Lgcm_dec_body,.Lgcm_dec_abort -.LSEH_GFp_gcm_enc_info: - .byte 9,0,0,0 - .rva gcm_se_handler - .rva .Lgcm_enc_body,.Lgcm_enc_abort +.globl aesni_gcm_decrypt +.type aesni_gcm_decrypt,\@abi-omnipotent +aesni_gcm_decrypt: + _CET_ENDBR + xor %eax,%eax + ret +.size aesni_gcm_decrypt,.-aesni_gcm_decrypt ___ -} }}} $code =~ s/\`([^\`]*)\`/eval($1)/gem; print $code; -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/ghash-armv4.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/ghash-armv4.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/ghash-armv4.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/ghash-armv4.pl 2023-10-30 19:40:00.000000000 +0000 @@ -91,7 +91,7 @@ ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; - open OUT,"| \"$^X\" $xlate $flavour $output"; + open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""; *STDOUT=*OUT; } else { open OUT,">$output"; @@ -104,7 +104,7 @@ $len="r3"; $code=<<___; -#include +#include @ Silence ARMv8 deprecated IT instruction warnings. This file is used by both @ ARMv7 and ARMv8 processors and does not use ARMv8 instructions. (ARMv8 PMULL @@ -176,10 +176,10 @@ .arch armv7-a .fpu neon -.global GFp_gcm_init_neon -.type GFp_gcm_init_neon,%function +.global gcm_init_neon +.type gcm_init_neon,%function .align 4 -GFp_gcm_init_neon: +gcm_init_neon: vld1.64 $IN#hi,[r1]! @ load H vmov.i8 $t0,#0xe1 vld1.64 $IN#lo,[r1] @@ -195,12 +195,12 @@ vstmia r0,{$IN} ret @ bx lr -.size GFp_gcm_init_neon,.-GFp_gcm_init_neon +.size gcm_init_neon,.-gcm_init_neon -.global GFp_gcm_gmult_neon -.type GFp_gcm_gmult_neon,%function +.global gcm_gmult_neon +.type gcm_gmult_neon,%function .align 4 -GFp_gcm_gmult_neon: +gcm_gmult_neon: vld1.64 $IN#hi,[$Xi]! @ load Xi vld1.64 $IN#lo,[$Xi]! vmov.i64 $k48,#0x0000ffffffffffff @@ -213,12 +213,12 @@ veor $Hhl,$Hlo,$Hhi @ Karatsuba pre-processing mov $len,#16 b .Lgmult_neon -.size GFp_gcm_gmult_neon,.-GFp_gcm_gmult_neon +.size gcm_gmult_neon,.-gcm_gmult_neon -.global GFp_gcm_ghash_neon -.type GFp_gcm_ghash_neon,%function +.global gcm_ghash_neon +.type gcm_ghash_neon,%function .align 4 -GFp_gcm_ghash_neon: +gcm_ghash_neon: vld1.64 $Xl#hi,[$Xi]! @ load Xi vld1.64 $Xl#lo,[$Xi]! vmov.i64 $k48,#0x0000ffffffffffff @@ -279,7 +279,7 @@ vst1.64 $Xl#lo,[$Xi] ret @ bx lr -.size GFp_gcm_ghash_neon,.-GFp_gcm_ghash_neon +.size gcm_ghash_neon,.-gcm_ghash_neon #endif ___ } @@ -297,4 +297,4 @@ print $_,"\n"; } -close STDOUT or die "error closing STDOUT"; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/ghashv8-armx.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/ghashv8-armx.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/ghashv8-armx.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/ghashv8-armx.pl 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -17,23 +17,31 @@ # GHASH for ARMv8 Crypto Extension, 64-bit polynomial multiplication. # # June 2014 -# Initial version was developed in tight cooperation with Ard Biesheuvel -# of Linaro from bits-n-pieces from other assembly modules. Just like -# aesv8-armx.pl this module supports both AArch32 and AArch64 execution modes. +# +# Initial version was developed in tight cooperation with Ard +# Biesheuvel of Linaro from bits-n-pieces from other assembly modules. +# Just like aesv8-armx.pl this module supports both AArch32 and +# AArch64 execution modes. # # July 2014 +# # Implement 2x aggregated reduction [see ghash-x86.pl for background # information]. # +# November 2017 +# +# AArch64 register bank to "accommodate" 4x aggregated reduction and +# improve performance by 20-70% depending on processor. +# # Current performance in cycles per processed byte: # -# PMULL[2] 32-bit NEON(*) -# Apple A7 0.92 5.62 -# Cortex-A53 1.01 8.39 -# Cortex-A57 1.17 7.61 -# Denver 0.71 6.02 -# Mongoose 1.10 8.06 -# Kryo 1.16 8.00 +# 64-bit PMULL 32-bit PMULL 32-bit NEON(*) +# Apple A7 0.58 0.92 5.62 +# Cortex-A53 0.85 1.01 8.39 +# Cortex-A57 0.73 1.17 7.61 +# Denver 0.51 0.65 6.02 +# Mongoose 0.65 1.10 8.06 +# Kryo 0.76 1.16 8.00 # # (*) presented for reference/comparison purposes; @@ -45,7 +53,7 @@ ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; -open OUT,"| \"$^X\" $xlate $flavour $output"; +open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""; *STDOUT=*OUT; $Xi="x0"; # argument block @@ -60,8 +68,9 @@ my ($t0,$t1,$t2,$xC2,$H,$Hhl,$H2)=map("q$_",(8..14)); $code=<<___; -#include +#include +#if __ARM_MAX_ARCH__>=7 .text ___ $code.=".arch armv8-a+crypto\n" if ($flavour =~ /64/); @@ -72,7 +81,7 @@ ___ ################################################################################ -# void GFp_gcm_init_clmul(u128 Htable[16],const u64 H[2]); +# void gcm_init_clmul(u128 Htable[16],const u64 H[2]); # # input: 128-bit H - secret parameter E(K,0^128) # output: precomputed table filled with degrees of twisted H; @@ -82,10 +91,10 @@ # optimize the code independently); # $code.=<<___; -.global GFp_gcm_init_clmul -.type GFp_gcm_init_clmul,%function +.global gcm_init_clmul +.type gcm_init_clmul,%function .align 4 -GFp_gcm_init_clmul: +gcm_init_clmul: AARCH64_VALID_CALL_TARGET vld1.64 {$t1},[x1] @ load input H vmov.i8 $xC2,#0xe1 @@ -129,23 +138,71 @@ vext.8 $t1,$H2,$H2,#8 @ Karatsuba pre-processing veor $t1,$t1,$H2 vext.8 $Hhl,$t0,$t1,#8 @ pack Karatsuba pre-processed - vst1.64 {$Hhl-$H2},[x0] @ store Htable[1..2] + vst1.64 {$Hhl-$H2},[x0],#32 @ store Htable[1..2] +___ +if ($flavour =~ /64/) { +my ($t3,$Yl,$Ym,$Yh) = map("q$_",(4..7)); + +$code.=<<___; + @ calculate H^3 and H^4 + vpmull.p64 $Xl,$H, $H2 + vpmull.p64 $Yl,$H2,$H2 + vpmull2.p64 $Xh,$H, $H2 + vpmull2.p64 $Yh,$H2,$H2 + vpmull.p64 $Xm,$t0,$t1 + vpmull.p64 $Ym,$t1,$t1 + + vext.8 $t0,$Xl,$Xh,#8 @ Karatsuba post-processing + vext.8 $t1,$Yl,$Yh,#8 + veor $t2,$Xl,$Xh + veor $Xm,$Xm,$t0 + veor $t3,$Yl,$Yh + veor $Ym,$Ym,$t1 + veor $Xm,$Xm,$t2 + vpmull.p64 $t2,$Xl,$xC2 @ 1st phase + veor $Ym,$Ym,$t3 + vpmull.p64 $t3,$Yl,$xC2 + + vmov $Xh#lo,$Xm#hi @ Xh|Xm - 256-bit result + vmov $Yh#lo,$Ym#hi + vmov $Xm#hi,$Xl#lo @ Xm is rotated Xl + vmov $Ym#hi,$Yl#lo + veor $Xl,$Xm,$t2 + veor $Yl,$Ym,$t3 + + vext.8 $t2,$Xl,$Xl,#8 @ 2nd phase + vext.8 $t3,$Yl,$Yl,#8 + vpmull.p64 $Xl,$Xl,$xC2 + vpmull.p64 $Yl,$Yl,$xC2 + veor $t2,$t2,$Xh + veor $t3,$t3,$Yh + veor $H, $Xl,$t2 @ H^3 + veor $H2,$Yl,$t3 @ H^4 + vext.8 $t0,$H, $H,#8 @ Karatsuba pre-processing + vext.8 $t1,$H2,$H2,#8 + veor $t0,$t0,$H + veor $t1,$t1,$H2 + vext.8 $Hhl,$t0,$t1,#8 @ pack Karatsuba pre-processed + vst1.64 {$H-$H2},[x0] @ store Htable[3..5] +___ +} +$code.=<<___; ret -.size GFp_gcm_init_clmul,.-GFp_gcm_init_clmul +.size gcm_init_clmul,.-gcm_init_clmul ___ ################################################################################ -# void GFp_gcm_gmult_clmul(u64 Xi[2],const u128 Htable[16]); +# void gcm_gmult_clmul(u64 Xi[2],const u128 Htable[16]); # # input: Xi - current hash value; -# Htable - table precomputed in GFp_gcm_init_clmul; +# Htable - table precomputed in gcm_init_clmul; # output: Xi - next hash value Xi; # $code.=<<___; -.global GFp_gcm_gmult_clmul -.type GFp_gcm_gmult_clmul,%function +.global gcm_gmult_clmul +.type gcm_gmult_clmul,%function .align 4 -GFp_gcm_gmult_clmul: +gcm_gmult_clmul: AARCH64_VALID_CALL_TARGET vld1.64 {$t1},[$Xi] @ load Xi vmov.i8 $xC2,#0xe1 @@ -183,25 +240,29 @@ vst1.64 {$Xl},[$Xi] @ write out Xi ret -.size GFp_gcm_gmult_clmul,.-GFp_gcm_gmult_clmul +.size gcm_gmult_clmul,.-gcm_gmult_clmul ___ ################################################################################ -# void GFp_gcm_ghash_clmul(u64 Xi[2], const u128 Htable[16], const u8 *inp, +# void gcm_ghash_clmul(u64 Xi[2], const u128 Htable[16], const u8 *inp, # size_t len); # -# input: table precomputed in GFp_gcm_init_clmul; +# input: table precomputed in gcm_init_clmul; # current hash value Xi; # pointer to input data; # length of input data in bytes, but divisible by block size; # output: next hash value Xi; # $code.=<<___; -.global GFp_gcm_ghash_clmul -.type GFp_gcm_ghash_clmul,%function +.global gcm_ghash_clmul +.type gcm_ghash_clmul,%function .align 4 -GFp_gcm_ghash_clmul: +gcm_ghash_clmul: AARCH64_VALID_CALL_TARGET ___ +$code.=<<___ if ($flavour =~ /64/); + cmp $len,#64 + b.hs .Lgcm_ghash_v8_4x +___ $code.=<<___ if ($flavour !~ /64/); vstmdb sp!,{d8-d15} @ 32-bit ABI says so ___ @@ -347,12 +408,303 @@ ___ $code.=<<___; ret -.size GFp_gcm_ghash_clmul,.-GFp_gcm_ghash_clmul +.size gcm_ghash_clmul,.-gcm_ghash_clmul +___ + +if ($flavour =~ /64/) { # 4x subroutine +my ($I0,$j1,$j2,$j3, + $I1,$I2,$I3,$H3,$H34,$H4,$Yl,$Ym,$Yh) = map("q$_",(4..7,15..23)); + +$code.=<<___; +.type gcm_ghash_v8_4x,%function +.align 4 +gcm_ghash_v8_4x: +.Lgcm_ghash_v8_4x: + vld1.64 {$Xl},[$Xi] @ load [rotated] Xi + vld1.64 {$H-$H2},[$Htbl],#48 @ load twisted H, ..., H^2 + vmov.i8 $xC2,#0xe1 + vld1.64 {$H3-$H4},[$Htbl] @ load twisted H^3, ..., H^4 + vshl.u64 $xC2,$xC2,#57 @ compose 0xc2.0 constant + + vld1.64 {$I0-$j3},[$inp],#64 +#ifndef __ARMEB__ + vrev64.8 $Xl,$Xl + vrev64.8 $j1,$j1 + vrev64.8 $j2,$j2 + vrev64.8 $j3,$j3 + vrev64.8 $I0,$I0 +#endif + vext.8 $I3,$j3,$j3,#8 + vext.8 $I2,$j2,$j2,#8 + vext.8 $I1,$j1,$j1,#8 + + vpmull.p64 $Yl,$H,$I3 @ H·Ii+3 + veor $j3,$j3,$I3 + vpmull2.p64 $Yh,$H,$I3 + vpmull.p64 $Ym,$Hhl,$j3 + + vpmull.p64 $t0,$H2,$I2 @ H^2·Ii+2 + veor $j2,$j2,$I2 + vpmull2.p64 $I2,$H2,$I2 + vpmull2.p64 $j2,$Hhl,$j2 + + veor $Yl,$Yl,$t0 + veor $Yh,$Yh,$I2 + veor $Ym,$Ym,$j2 + + vpmull.p64 $j3,$H3,$I1 @ H^3·Ii+1 + veor $j1,$j1,$I1 + vpmull2.p64 $I1,$H3,$I1 + vpmull.p64 $j1,$H34,$j1 + + veor $Yl,$Yl,$j3 + veor $Yh,$Yh,$I1 + veor $Ym,$Ym,$j1 + + subs $len,$len,#128 + b.lo .Ltail4x + + b .Loop4x + +.align 4 +.Loop4x: + veor $t0,$I0,$Xl + vld1.64 {$I0-$j3},[$inp],#64 + vext.8 $IN,$t0,$t0,#8 +#ifndef __ARMEB__ + vrev64.8 $j1,$j1 + vrev64.8 $j2,$j2 + vrev64.8 $j3,$j3 + vrev64.8 $I0,$I0 +#endif + + vpmull.p64 $Xl,$H4,$IN @ H^4·(Xi+Ii) + veor $t0,$t0,$IN + vpmull2.p64 $Xh,$H4,$IN + vext.8 $I3,$j3,$j3,#8 + vpmull2.p64 $Xm,$H34,$t0 + + veor $Xl,$Xl,$Yl + veor $Xh,$Xh,$Yh + vext.8 $I2,$j2,$j2,#8 + veor $Xm,$Xm,$Ym + vext.8 $I1,$j1,$j1,#8 + + vext.8 $t1,$Xl,$Xh,#8 @ Karatsuba post-processing + veor $t2,$Xl,$Xh + vpmull.p64 $Yl,$H,$I3 @ H·Ii+3 + veor $j3,$j3,$I3 + veor $Xm,$Xm,$t1 + vpmull2.p64 $Yh,$H,$I3 + veor $Xm,$Xm,$t2 + vpmull.p64 $Ym,$Hhl,$j3 + + vpmull.p64 $t2,$Xl,$xC2 @ 1st phase of reduction + vmov $Xh#lo,$Xm#hi @ Xh|Xm - 256-bit result + vmov $Xm#hi,$Xl#lo @ Xm is rotated Xl + vpmull.p64 $t0,$H2,$I2 @ H^2·Ii+2 + veor $j2,$j2,$I2 + vpmull2.p64 $I2,$H2,$I2 + veor $Xl,$Xm,$t2 + vpmull2.p64 $j2,$Hhl,$j2 + + veor $Yl,$Yl,$t0 + veor $Yh,$Yh,$I2 + veor $Ym,$Ym,$j2 + + vext.8 $t2,$Xl,$Xl,#8 @ 2nd phase of reduction + vpmull.p64 $Xl,$Xl,$xC2 + vpmull.p64 $j3,$H3,$I1 @ H^3·Ii+1 + veor $j1,$j1,$I1 + veor $t2,$t2,$Xh + vpmull2.p64 $I1,$H3,$I1 + vpmull.p64 $j1,$H34,$j1 + + veor $Xl,$Xl,$t2 + veor $Yl,$Yl,$j3 + veor $Yh,$Yh,$I1 + vext.8 $Xl,$Xl,$Xl,#8 + veor $Ym,$Ym,$j1 + + subs $len,$len,#64 + b.hs .Loop4x + +.Ltail4x: + veor $t0,$I0,$Xl + vext.8 $IN,$t0,$t0,#8 + + vpmull.p64 $Xl,$H4,$IN @ H^4·(Xi+Ii) + veor $t0,$t0,$IN + vpmull2.p64 $Xh,$H4,$IN + vpmull2.p64 $Xm,$H34,$t0 + + veor $Xl,$Xl,$Yl + veor $Xh,$Xh,$Yh + veor $Xm,$Xm,$Ym + + adds $len,$len,#64 + b.eq .Ldone4x + + cmp $len,#32 + b.lo .Lone + b.eq .Ltwo +.Lthree: + vext.8 $t1,$Xl,$Xh,#8 @ Karatsuba post-processing + veor $t2,$Xl,$Xh + veor $Xm,$Xm,$t1 + vld1.64 {$I0-$j2},[$inp] + veor $Xm,$Xm,$t2 +#ifndef __ARMEB__ + vrev64.8 $j1,$j1 + vrev64.8 $j2,$j2 + vrev64.8 $I0,$I0 +#endif + + vpmull.p64 $t2,$Xl,$xC2 @ 1st phase of reduction + vmov $Xh#lo,$Xm#hi @ Xh|Xm - 256-bit result + vmov $Xm#hi,$Xl#lo @ Xm is rotated Xl + vext.8 $I2,$j2,$j2,#8 + vext.8 $I1,$j1,$j1,#8 + veor $Xl,$Xm,$t2 + + vpmull.p64 $Yl,$H,$I2 @ H·Ii+2 + veor $j2,$j2,$I2 + + vext.8 $t2,$Xl,$Xl,#8 @ 2nd phase of reduction + vpmull.p64 $Xl,$Xl,$xC2 + veor $t2,$t2,$Xh + vpmull2.p64 $Yh,$H,$I2 + vpmull.p64 $Ym,$Hhl,$j2 + veor $Xl,$Xl,$t2 + vpmull.p64 $j3,$H2,$I1 @ H^2·Ii+1 + veor $j1,$j1,$I1 + vext.8 $Xl,$Xl,$Xl,#8 + + vpmull2.p64 $I1,$H2,$I1 + veor $t0,$I0,$Xl + vpmull2.p64 $j1,$Hhl,$j1 + vext.8 $IN,$t0,$t0,#8 + + veor $Yl,$Yl,$j3 + veor $Yh,$Yh,$I1 + veor $Ym,$Ym,$j1 + + vpmull.p64 $Xl,$H3,$IN @ H^3·(Xi+Ii) + veor $t0,$t0,$IN + vpmull2.p64 $Xh,$H3,$IN + vpmull.p64 $Xm,$H34,$t0 + + veor $Xl,$Xl,$Yl + veor $Xh,$Xh,$Yh + veor $Xm,$Xm,$Ym + b .Ldone4x + +.align 4 +.Ltwo: + vext.8 $t1,$Xl,$Xh,#8 @ Karatsuba post-processing + veor $t2,$Xl,$Xh + veor $Xm,$Xm,$t1 + vld1.64 {$I0-$j1},[$inp] + veor $Xm,$Xm,$t2 +#ifndef __ARMEB__ + vrev64.8 $j1,$j1 + vrev64.8 $I0,$I0 +#endif + + vpmull.p64 $t2,$Xl,$xC2 @ 1st phase of reduction + vmov $Xh#lo,$Xm#hi @ Xh|Xm - 256-bit result + vmov $Xm#hi,$Xl#lo @ Xm is rotated Xl + vext.8 $I1,$j1,$j1,#8 + veor $Xl,$Xm,$t2 + + vext.8 $t2,$Xl,$Xl,#8 @ 2nd phase of reduction + vpmull.p64 $Xl,$Xl,$xC2 + veor $t2,$t2,$Xh + veor $Xl,$Xl,$t2 + vext.8 $Xl,$Xl,$Xl,#8 + + vpmull.p64 $Yl,$H,$I1 @ H·Ii+1 + veor $j1,$j1,$I1 + + veor $t0,$I0,$Xl + vext.8 $IN,$t0,$t0,#8 + + vpmull2.p64 $Yh,$H,$I1 + vpmull.p64 $Ym,$Hhl,$j1 + + vpmull.p64 $Xl,$H2,$IN @ H^2·(Xi+Ii) + veor $t0,$t0,$IN + vpmull2.p64 $Xh,$H2,$IN + vpmull2.p64 $Xm,$Hhl,$t0 + + veor $Xl,$Xl,$Yl + veor $Xh,$Xh,$Yh + veor $Xm,$Xm,$Ym + b .Ldone4x + +.align 4 +.Lone: + vext.8 $t1,$Xl,$Xh,#8 @ Karatsuba post-processing + veor $t2,$Xl,$Xh + veor $Xm,$Xm,$t1 + vld1.64 {$I0},[$inp] + veor $Xm,$Xm,$t2 +#ifndef __ARMEB__ + vrev64.8 $I0,$I0 +#endif + + vpmull.p64 $t2,$Xl,$xC2 @ 1st phase of reduction + vmov $Xh#lo,$Xm#hi @ Xh|Xm - 256-bit result + vmov $Xm#hi,$Xl#lo @ Xm is rotated Xl + veor $Xl,$Xm,$t2 + + vext.8 $t2,$Xl,$Xl,#8 @ 2nd phase of reduction + vpmull.p64 $Xl,$Xl,$xC2 + veor $t2,$t2,$Xh + veor $Xl,$Xl,$t2 + vext.8 $Xl,$Xl,$Xl,#8 + + veor $t0,$I0,$Xl + vext.8 $IN,$t0,$t0,#8 + + vpmull.p64 $Xl,$H,$IN + veor $t0,$t0,$IN + vpmull2.p64 $Xh,$H,$IN + vpmull.p64 $Xm,$Hhl,$t0 + +.Ldone4x: + vext.8 $t1,$Xl,$Xh,#8 @ Karatsuba post-processing + veor $t2,$Xl,$Xh + veor $Xm,$Xm,$t1 + veor $Xm,$Xm,$t2 + + vpmull.p64 $t2,$Xl,$xC2 @ 1st phase of reduction + vmov $Xh#lo,$Xm#hi @ Xh|Xm - 256-bit result + vmov $Xm#hi,$Xl#lo @ Xm is rotated Xl + veor $Xl,$Xm,$t2 + + vext.8 $t2,$Xl,$Xl,#8 @ 2nd phase of reduction + vpmull.p64 $Xl,$Xl,$xC2 + veor $t2,$t2,$Xh + veor $Xl,$Xl,$t2 + vext.8 $Xl,$Xl,$Xl,#8 + +#ifndef __ARMEB__ + vrev64.8 $Xl,$Xl +#endif + vst1.64 {$Xl},[$Xi] @ write out Xi + + ret +.size gcm_ghash_v8_4x,.-gcm_ghash_v8_4x ___ + } +} + $code.=<<___; .asciz "GHASH for ARMv8, CRYPTOGAMS by " .align 2 +#endif ___ if ($flavour =~ /64/) { ######## 64-bit code @@ -360,7 +712,8 @@ my $arg=shift; $arg =~ m/q([0-9]+)#(lo|hi),\s*q([0-9]+)#(lo|hi)/o && - sprintf "ins v%d.d[%d],v%d.d[%d]",$1,($2 eq "lo")?0:1,$3,($4 eq "lo")?0:1; + sprintf "ins v%d.d[%d],v%d.d[%d]",$1<8?$1:$1+8,($2 eq "lo")?0:1, + $3<8?$3:$3+8,($4 eq "lo")?0:1; } foreach(split("\n",$code)) { s/cclr\s+([wx])([^,]+),\s*([a-z]+)/csel $1$2,$1zr,$1$2,$3/o or @@ -383,6 +736,9 @@ s/\.[uisp]?64//o and s/\.16b/\.2d/go; s/\.[42]([sd])\[([0-3])\]/\.$1\[$2\]/o; + # Switch preprocessor checks to aarch64 versions. + s/__ARME([BL])__/__AARCH64E$1__/go; + print $_,"\n"; } } else { ######## 32-bit code @@ -429,4 +785,4 @@ } } -close STDOUT or die "error closing STDOUT"; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/ghash-x86_64.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/ghash-x86_64.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/ghash-x86_64.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/ghash-x86_64.pl 2023-10-30 19:40:00.000000000 +0000 @@ -120,7 +120,7 @@ $code=<<___; .text -.extern GFp_ia32cap_P +.extern OPENSSL_ia32cap_P ___ @@ -200,18 +200,20 @@ my $HK="%xmm6"; $code.=<<___; -.globl GFp_gcm_init_clmul -.type GFp_gcm_init_clmul,\@abi-omnipotent +.globl gcm_init_clmul +.type gcm_init_clmul,\@abi-omnipotent .align 16 -GFp_gcm_init_clmul: +gcm_init_clmul: .cfi_startproc +.seh_startproc + _CET_ENDBR .L_init_clmul: ___ $code.=<<___ if ($win64); -.LSEH_begin_GFp_gcm_init_clmul: - # I can't trust assembler to use specific encoding:-( - .byte 0x48,0x83,0xec,0x18 #sub $0x18,%rsp - .byte 0x0f,0x29,0x34,0x24 #movaps %xmm6,(%rsp) + sub \$0x18,%rsp +.seh_allocstack 0x18 + movaps %xmm6,(%rsp) +.seh_savexmm128 %xmm6, 0 ___ $code.=<<___; movdqu ($Xip),$Hkey @@ -270,23 +272,24 @@ $code.=<<___ if ($win64); movaps (%rsp),%xmm6 lea 0x18(%rsp),%rsp -.LSEH_end_GFp_gcm_init_clmul: ___ $code.=<<___; ret .cfi_endproc -.size GFp_gcm_init_clmul,.-GFp_gcm_init_clmul +.seh_endproc +.size gcm_init_clmul,.-gcm_init_clmul ___ } { my ($Xip,$Htbl)=@_4args; $code.=<<___; -.globl GFp_gcm_gmult_clmul -.type GFp_gcm_gmult_clmul,\@abi-omnipotent +.globl gcm_gmult_clmul +.type gcm_gmult_clmul,\@abi-omnipotent .align 16 -GFp_gcm_gmult_clmul: +gcm_gmult_clmul: .cfi_startproc + _CET_ENDBR .L_gmult_clmul: movdqu ($Xip),$Xi movdqa .Lbswap_mask(%rip),$T3 @@ -324,7 +327,7 @@ movdqu $Xi,($Xip) ret .cfi_endproc -.size GFp_gcm_gmult_clmul,.-GFp_gcm_gmult_clmul +.size gcm_gmult_clmul,.-gcm_gmult_clmul ___ } @@ -333,28 +336,39 @@ my ($T1,$T2,$T3)=map("%xmm$_",(8..10)); $code.=<<___; -.globl GFp_gcm_ghash_clmul -.type GFp_gcm_ghash_clmul,\@abi-omnipotent +.globl gcm_ghash_clmul +.type gcm_ghash_clmul,\@abi-omnipotent .align 32 -GFp_gcm_ghash_clmul: +gcm_ghash_clmul: .cfi_startproc +.seh_startproc + _CET_ENDBR .L_ghash_clmul: ___ $code.=<<___ if ($win64); lea -0x88(%rsp),%rax -.LSEH_begin_GFp_gcm_ghash_clmul: - # I can't trust assembler to use specific encoding:-( - .byte 0x48,0x8d,0x60,0xe0 #lea -0x20(%rax),%rsp - .byte 0x0f,0x29,0x70,0xe0 #movaps %xmm6,-0x20(%rax) - .byte 0x0f,0x29,0x78,0xf0 #movaps %xmm7,-0x10(%rax) - .byte 0x44,0x0f,0x29,0x00 #movaps %xmm8,0(%rax) - .byte 0x44,0x0f,0x29,0x48,0x10 #movaps %xmm9,0x10(%rax) - .byte 0x44,0x0f,0x29,0x50,0x20 #movaps %xmm10,0x20(%rax) - .byte 0x44,0x0f,0x29,0x58,0x30 #movaps %xmm11,0x30(%rax) - .byte 0x44,0x0f,0x29,0x60,0x40 #movaps %xmm12,0x40(%rax) - .byte 0x44,0x0f,0x29,0x68,0x50 #movaps %xmm13,0x50(%rax) - .byte 0x44,0x0f,0x29,0x70,0x60 #movaps %xmm14,0x60(%rax) - .byte 0x44,0x0f,0x29,0x78,0x70 #movaps %xmm15,0x70(%rax) + lea -0x20(%rax),%rsp +.seh_allocstack 0x20+0x88 + movaps %xmm6,-0x20(%rax) +.seh_savexmm128 %xmm6, 0x20-0x20 + movaps %xmm7,-0x10(%rax) +.seh_savexmm128 %xmm7, 0x20-0x10 + movaps %xmm8,0(%rax) +.seh_savexmm128 %xmm8, 0x20+0 + movaps %xmm9,0x10(%rax) +.seh_savexmm128 %xmm9, 0x20+0x10 + movaps %xmm10,0x20(%rax) +.seh_savexmm128 %xmm10, 0x20+0x20 + movaps %xmm11,0x30(%rax) +.seh_savexmm128 %xmm11, 0x20+0x30 + movaps %xmm12,0x40(%rax) +.seh_savexmm128 %xmm12, 0x20+0x40 + movaps %xmm13,0x50(%rax) +.seh_savexmm128 %xmm13, 0x20+0x50 + movaps %xmm14,0x60(%rax) +.seh_savexmm128 %xmm14, 0x20+0x60 + movaps %xmm15,0x70(%rax) +.seh_savexmm128 %xmm15, 0x20+0x70 ___ $code.=<<___; movdqa .Lbswap_mask(%rip),$T3 @@ -373,7 +387,7 @@ my ($Xl,$Xm,$Xh,$Hkey3,$Hkey4)=map("%xmm$_",(11..15)); $code.=<<___; - leaq GFp_ia32cap_P(%rip),%rax + leaq OPENSSL_ia32cap_P(%rip),%rax mov 4(%rax),%eax cmp \$0x30,$len jb .Lskip4x @@ -682,31 +696,33 @@ movaps 0x80(%rsp),%xmm14 movaps 0x90(%rsp),%xmm15 lea 0xa8(%rsp),%rsp -.LSEH_end_GFp_gcm_ghash_clmul: ___ $code.=<<___; ret .cfi_endproc -.size GFp_gcm_ghash_clmul,.-GFp_gcm_ghash_clmul +.seh_endproc +.size gcm_ghash_clmul,.-gcm_ghash_clmul ___ } $code.=<<___; -.globl GFp_gcm_init_avx -.type GFp_gcm_init_avx,\@abi-omnipotent +.globl gcm_init_avx +.type gcm_init_avx,\@abi-omnipotent .align 32 -GFp_gcm_init_avx: +gcm_init_avx: .cfi_startproc + _CET_ENDBR ___ if ($avx) { my ($Htbl,$Xip)=@_4args; my $HK="%xmm6"; $code.=<<___ if ($win64); -.LSEH_begin_GFp_gcm_init_avx: - # I can't trust assembler to use specific encoding:-( - .byte 0x48,0x83,0xec,0x18 #sub $0x18,%rsp - .byte 0x0f,0x29,0x34,0x24 #movaps %xmm6,(%rsp) +.seh_startproc + sub \$0x18,%rsp +.seh_allocstack 0x18 + movaps %xmm6,(%rsp) +.seh_savexmm128 %xmm6, 0 ___ $code.=<<___; vzeroupper @@ -821,26 +837,27 @@ $code.=<<___ if ($win64); movaps (%rsp),%xmm6 lea 0x18(%rsp),%rsp -.LSEH_end_GFp_gcm_init_avx: ___ $code.=<<___; ret +.seh_endproc .cfi_endproc -.size GFp_gcm_init_avx,.-GFp_gcm_init_avx +.size gcm_init_avx,.-gcm_init_avx ___ } else { $code.=<<___; jmp .L_init_clmul -.size GFp_gcm_init_avx,.-GFp_gcm_init_avx +.size gcm_init_avx,.-gcm_init_avx ___ } $code.=<<___; -.globl GFp_gcm_ghash_avx -.type GFp_gcm_ghash_avx,\@abi-omnipotent +.globl gcm_ghash_avx +.type gcm_ghash_avx,\@abi-omnipotent .align 32 -GFp_gcm_ghash_avx: +gcm_ghash_avx: .cfi_startproc + _CET_ENDBR ___ if ($avx) { my ($Xip,$Htbl,$inp,$len)=@_4args; @@ -850,20 +867,30 @@ $Xi,$Xo,$Tred,$bswap,$Ii,$Ij) = map("%xmm$_",(0..15)); $code.=<<___ if ($win64); +.seh_startproc lea -0x88(%rsp),%rax -.LSEH_begin_GFp_gcm_ghash_avx: - # I can't trust assembler to use specific encoding:-( - .byte 0x48,0x8d,0x60,0xe0 #lea -0x20(%rax),%rsp - .byte 0x0f,0x29,0x70,0xe0 #movaps %xmm6,-0x20(%rax) - .byte 0x0f,0x29,0x78,0xf0 #movaps %xmm7,-0x10(%rax) - .byte 0x44,0x0f,0x29,0x00 #movaps %xmm8,0(%rax) - .byte 0x44,0x0f,0x29,0x48,0x10 #movaps %xmm9,0x10(%rax) - .byte 0x44,0x0f,0x29,0x50,0x20 #movaps %xmm10,0x20(%rax) - .byte 0x44,0x0f,0x29,0x58,0x30 #movaps %xmm11,0x30(%rax) - .byte 0x44,0x0f,0x29,0x60,0x40 #movaps %xmm12,0x40(%rax) - .byte 0x44,0x0f,0x29,0x68,0x50 #movaps %xmm13,0x50(%rax) - .byte 0x44,0x0f,0x29,0x70,0x60 #movaps %xmm14,0x60(%rax) - .byte 0x44,0x0f,0x29,0x78,0x70 #movaps %xmm15,0x70(%rax) + lea -0x20(%rax),%rsp +.seh_allocstack 0x20+0x88 + movaps %xmm6,-0x20(%rax) +.seh_savexmm128 %xmm6, 0x20-0x20 + movaps %xmm7,-0x10(%rax) +.seh_savexmm128 %xmm7, 0x20-0x10 + movaps %xmm8,0(%rax) +.seh_savexmm128 %xmm8, 0x20+0 + movaps %xmm9,0x10(%rax) +.seh_savexmm128 %xmm9, 0x20+0x10 + movaps %xmm10,0x20(%rax) +.seh_savexmm128 %xmm10, 0x20+0x20 + movaps %xmm11,0x30(%rax) +.seh_savexmm128 %xmm11, 0x20+0x30 + movaps %xmm12,0x40(%rax) +.seh_savexmm128 %xmm12, 0x20+0x40 + movaps %xmm13,0x50(%rax) +.seh_savexmm128 %xmm13, 0x20+0x50 + movaps %xmm14,0x60(%rax) +.seh_savexmm128 %xmm14, 0x20+0x60 + movaps %xmm15,0x70(%rax) +.seh_savexmm128 %xmm15, 0x20+0x70 ___ $code.=<<___; vzeroupper @@ -1249,21 +1276,22 @@ movaps 0x80(%rsp),%xmm14 movaps 0x90(%rsp),%xmm15 lea 0xa8(%rsp),%rsp -.LSEH_end_GFp_gcm_ghash_avx: ___ $code.=<<___; ret .cfi_endproc -.size GFp_gcm_ghash_avx,.-GFp_gcm_ghash_avx +.seh_endproc +.size gcm_ghash_avx,.-gcm_ghash_avx ___ } else { $code.=<<___; jmp .L_ghash_clmul -.size GFp_gcm_ghash_avx,.-GFp_gcm_ghash_avx +.size gcm_ghash_avx,.-gcm_ghash_avx ___ } $code.=<<___; +.section .rodata .align 64 .Lbswap_mask: .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -1275,54 +1303,11 @@ .asciz "GHASH for x86_64, CRYPTOGAMS by " .align 64 +.text ___ -if ($win64) { -$code.=<<___; -.section .pdata -.align 4 - .rva .LSEH_begin_GFp_gcm_init_clmul - .rva .LSEH_end_GFp_gcm_init_clmul - .rva .LSEH_info_GFp_gcm_init_clmul - - .rva .LSEH_begin_GFp_gcm_ghash_clmul - .rva .LSEH_end_GFp_gcm_ghash_clmul - .rva .LSEH_info_GFp_gcm_ghash_clmul -___ -$code.=<<___ if ($avx); - .rva .LSEH_begin_GFp_gcm_init_avx - .rva .LSEH_end_GFp_gcm_init_avx - .rva .LSEH_info_GFp_gcm_init_clmul - - .rva .LSEH_begin_GFp_gcm_ghash_avx - .rva .LSEH_end_GFp_gcm_ghash_avx - .rva .LSEH_info_GFp_gcm_ghash_clmul -___ -$code.=<<___; -.section .xdata -.align 8 -.LSEH_info_GFp_gcm_init_clmul: - .byte 0x01,0x08,0x03,0x00 - .byte 0x08,0x68,0x00,0x00 #movaps 0x00(rsp),xmm6 - .byte 0x04,0x22,0x00,0x00 #sub rsp,0x18 -.LSEH_info_GFp_gcm_ghash_clmul: - .byte 0x01,0x33,0x16,0x00 - .byte 0x33,0xf8,0x09,0x00 #movaps 0x90(rsp),xmm15 - .byte 0x2e,0xe8,0x08,0x00 #movaps 0x80(rsp),xmm14 - .byte 0x29,0xd8,0x07,0x00 #movaps 0x70(rsp),xmm13 - .byte 0x24,0xc8,0x06,0x00 #movaps 0x60(rsp),xmm12 - .byte 0x1f,0xb8,0x05,0x00 #movaps 0x50(rsp),xmm11 - .byte 0x1a,0xa8,0x04,0x00 #movaps 0x40(rsp),xmm10 - .byte 0x15,0x98,0x03,0x00 #movaps 0x30(rsp),xmm9 - .byte 0x10,0x88,0x02,0x00 #movaps 0x20(rsp),xmm8 - .byte 0x0c,0x78,0x01,0x00 #movaps 0x10(rsp),xmm7 - .byte 0x08,0x68,0x00,0x00 #movaps 0x00(rsp),xmm6 - .byte 0x04,0x01,0x15,0x00 #sub rsp,0xa8 -___ -} - $code =~ s/\`([^\`]*)\`/eval($1)/gem; print $code; -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/ghash-x86.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/ghash-x86.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/ghash-x86.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/modes/asm/ghash-x86.pl 2023-10-30 19:40:00.000000000 +0000 @@ -131,6 +131,9 @@ # reduction_alg9. Resulting performance is 1.96 cycles per byte on # Westmere, 1.95 - on Sandy/Ivy Bridge, 1.76 - on Bulldozer. +# This file was patched in BoringSSL to remove the variable-time 4-bit +# implementation. + $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; push(@INC,"${dir}","${dir}../../../perlasm"); require "x86asm.pl"; @@ -142,7 +145,7 @@ $sse2=1; - +if (!$x86only) {{{ if ($sse2) {{ ###################################################################### # PCLMULQDQ version. @@ -185,7 +188,7 @@ sub clmul64x64_T3 { # Even though this subroutine offers visually better ILP, it # was empirically found to be a tad slower than above version. -# At least in GFp_gcm_ghash_clmul context. But it's just as well, +# At least in gcm_ghash_clmul context. But it's just as well, # because loop modulo-scheduling is possible only thanks to # minimized "register" pressure... my ($Xhi,$Xi,$Hkey)=@_; @@ -246,7 +249,7 @@ &pxor ($Xi,$Xhi) # } -&function_begin_B("GFp_gcm_init_clmul"); +&function_begin_B("gcm_init_clmul"); &mov ($Htbl,&wparam(0)); &mov ($Xip,&wparam(1)); @@ -287,9 +290,9 @@ &movdqu (&QWP(32,$Htbl),$T2); # save Karatsuba "salt" &ret (); -&function_end_B("GFp_gcm_init_clmul"); +&function_end_B("gcm_init_clmul"); -&function_begin_B("GFp_gcm_gmult_clmul"); +&function_begin_B("gcm_gmult_clmul"); &mov ($Xip,&wparam(0)); &mov ($Htbl,&wparam(1)); @@ -311,9 +314,9 @@ &movdqu (&QWP(0,$Xip),$Xi); &ret (); -&function_end_B("GFp_gcm_gmult_clmul"); +&function_end_B("gcm_gmult_clmul"); -&function_begin("GFp_gcm_ghash_clmul"); +&function_begin("gcm_ghash_clmul"); &mov ($Xip,&wparam(0)); &mov ($Htbl,&wparam(1)); &mov ($inp,&wparam(2)); @@ -462,7 +465,7 @@ &set_label("done"); &pshufb ($Xi,$T3); &movdqu (&QWP(0,$Xip),$Xi); -&function_end("GFp_gcm_ghash_clmul"); +&function_end("gcm_ghash_clmul"); } else { # Algorithm 5. Kept for reference purposes. @@ -511,7 +514,7 @@ &pxor ($Xi,$Xhi); # } -&function_begin_B("GFp_gcm_init_clmul"); +&function_begin_B("gcm_init_clmul"); &mov ($Htbl,&wparam(0)); &mov ($Xip,&wparam(1)); @@ -532,9 +535,9 @@ &movdqu (&QWP(16,$Htbl),$Xi); # save H^2 &ret (); -&function_end_B("GFp_gcm_init_clmul"); +&function_end_B("gcm_init_clmul"); -&function_begin_B("GFp_gcm_gmult_clmul"); +&function_begin_B("gcm_gmult_clmul"); &mov ($Xip,&wparam(0)); &mov ($Htbl,&wparam(1)); @@ -555,9 +558,9 @@ &movdqu (&QWP(0,$Xip),$Xi); &ret (); -&function_end_B("GFp_gcm_gmult_clmul"); +&function_end_B("gcm_gmult_clmul"); -&function_begin("GFp_gcm_ghash_clmul"); +&function_begin("gcm_ghash_clmul"); &mov ($Xip,&wparam(0)); &mov ($Htbl,&wparam(1)); &mov ($inp,&wparam(2)); @@ -643,52 +646,20 @@ &set_label("done"); &pshufb ($Xi,$T3); &movdqu (&QWP(0,$Xip),$Xi); -&function_end("GFp_gcm_ghash_clmul"); +&function_end("gcm_ghash_clmul"); } &set_label("bswap",64); &data_byte(15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0); &data_byte(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2); # 0x1c2_polynomial -&set_label("rem_8bit",64); - &data_short(0x0000,0x01C2,0x0384,0x0246,0x0708,0x06CA,0x048C,0x054E); - &data_short(0x0E10,0x0FD2,0x0D94,0x0C56,0x0918,0x08DA,0x0A9C,0x0B5E); - &data_short(0x1C20,0x1DE2,0x1FA4,0x1E66,0x1B28,0x1AEA,0x18AC,0x196E); - &data_short(0x1230,0x13F2,0x11B4,0x1076,0x1538,0x14FA,0x16BC,0x177E); - &data_short(0x3840,0x3982,0x3BC4,0x3A06,0x3F48,0x3E8A,0x3CCC,0x3D0E); - &data_short(0x3650,0x3792,0x35D4,0x3416,0x3158,0x309A,0x32DC,0x331E); - &data_short(0x2460,0x25A2,0x27E4,0x2626,0x2368,0x22AA,0x20EC,0x212E); - &data_short(0x2A70,0x2BB2,0x29F4,0x2836,0x2D78,0x2CBA,0x2EFC,0x2F3E); - &data_short(0x7080,0x7142,0x7304,0x72C6,0x7788,0x764A,0x740C,0x75CE); - &data_short(0x7E90,0x7F52,0x7D14,0x7CD6,0x7998,0x785A,0x7A1C,0x7BDE); - &data_short(0x6CA0,0x6D62,0x6F24,0x6EE6,0x6BA8,0x6A6A,0x682C,0x69EE); - &data_short(0x62B0,0x6372,0x6134,0x60F6,0x65B8,0x647A,0x663C,0x67FE); - &data_short(0x48C0,0x4902,0x4B44,0x4A86,0x4FC8,0x4E0A,0x4C4C,0x4D8E); - &data_short(0x46D0,0x4712,0x4554,0x4496,0x41D8,0x401A,0x425C,0x439E); - &data_short(0x54E0,0x5522,0x5764,0x56A6,0x53E8,0x522A,0x506C,0x51AE); - &data_short(0x5AF0,0x5B32,0x5974,0x58B6,0x5DF8,0x5C3A,0x5E7C,0x5FBE); - &data_short(0xE100,0xE0C2,0xE284,0xE346,0xE608,0xE7CA,0xE58C,0xE44E); - &data_short(0xEF10,0xEED2,0xEC94,0xED56,0xE818,0xE9DA,0xEB9C,0xEA5E); - &data_short(0xFD20,0xFCE2,0xFEA4,0xFF66,0xFA28,0xFBEA,0xF9AC,0xF86E); - &data_short(0xF330,0xF2F2,0xF0B4,0xF176,0xF438,0xF5FA,0xF7BC,0xF67E); - &data_short(0xD940,0xD882,0xDAC4,0xDB06,0xDE48,0xDF8A,0xDDCC,0xDC0E); - &data_short(0xD750,0xD692,0xD4D4,0xD516,0xD058,0xD19A,0xD3DC,0xD21E); - &data_short(0xC560,0xC4A2,0xC6E4,0xC726,0xC268,0xC3AA,0xC1EC,0xC02E); - &data_short(0xCB70,0xCAB2,0xC8F4,0xC936,0xCC78,0xCDBA,0xCFFC,0xCE3E); - &data_short(0x9180,0x9042,0x9204,0x93C6,0x9688,0x974A,0x950C,0x94CE); - &data_short(0x9F90,0x9E52,0x9C14,0x9DD6,0x9898,0x995A,0x9B1C,0x9ADE); - &data_short(0x8DA0,0x8C62,0x8E24,0x8FE6,0x8AA8,0x8B6A,0x892C,0x88EE); - &data_short(0x83B0,0x8272,0x8034,0x81F6,0x84B8,0x857A,0x873C,0x86FE); - &data_short(0xA9C0,0xA802,0xAA44,0xAB86,0xAEC8,0xAF0A,0xAD4C,0xAC8E); - &data_short(0xA7D0,0xA612,0xA454,0xA596,0xA0D8,0xA11A,0xA35C,0xA29E); - &data_short(0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE); - &data_short(0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE); }} # $sse2 +}}} # !$x86only &asciz("GHASH for x86, CRYPTOGAMS by "); &asm_finish(); -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; # A question was risen about choice of vanilla MMX. Or rather why wasn't # SSE2 chosen instead? In addition to the fact that MMX runs on legacy diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/sha/asm/sha256-armv4.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/sha/asm/sha256-armv4.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/sha/asm/sha256-armv4.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/sha/asm/sha256-armv4.pl 2023-10-30 19:40:00.000000000 +0000 @@ -54,7 +54,7 @@ ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; - open OUT,"| \"$^X\" $xlate $flavour $output"; + open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""; *STDOUT=*OUT; } else { open OUT,">$output"; @@ -177,7 +177,7 @@ $code=<<___; #ifndef __KERNEL__ -# include +# include #else # define __ARM_ARCH__ __LINUX_ARM_ARCH__ # define __ARM_MAX_ARCH__ 7 @@ -218,25 +218,25 @@ .size K256,.-K256 .word 0 @ terminator #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) -.extern GFp_armcap_P -.hidden GFp_armcap_P +.extern OPENSSL_armcap_P +.hidden OPENSSL_armcap_P .LOPENSSL_armcap: -.word GFp_armcap_P-.Lsha256_block_data_order +.word OPENSSL_armcap_P-.Lsha256_block_data_order #endif .align 5 -.global GFp_sha256_block_data_order -.type GFp_sha256_block_data_order,%function -GFp_sha256_block_data_order: +.global sha256_block_data_order +.type sha256_block_data_order,%function +sha256_block_data_order: .Lsha256_block_data_order: #if __ARM_ARCH__<7 && !defined(__thumb2__) - sub r3,pc,#8 @ GFp_sha256_block_data_order + sub r3,pc,#8 @ sha256_block_data_order #else adr r3,.Lsha256_block_data_order #endif #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) ldr r12,.LOPENSSL_armcap - ldr r12,[r3,r12] @ GFp_armcap_P + ldr r12,[r3,r12] @ OPENSSL_armcap_P #ifdef __APPLE__ ldr r12,[r12] #endif @@ -302,7 +302,7 @@ moveq pc,lr @ be binary compatible with V4, yet bx lr @ interoperable with Thumb ISA:-) #endif -.size GFp_sha256_block_data_order,.-GFp_sha256_block_data_order +.size sha256_block_data_order,.-sha256_block_data_order ___ ###################################################################### # NEON stuff @@ -733,4 +733,4 @@ print $_,"\n"; } -close STDOUT or die "error closing STDOUT"; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/sha/asm/sha512-armv4.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/sha/asm/sha512-armv4.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/sha/asm/sha512-armv4.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/sha/asm/sha512-armv4.pl 2023-10-30 19:40:00.000000000 +0000 @@ -67,7 +67,7 @@ ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; - open OUT,"| \"$^X\" $xlate $flavour $output"; + open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""; *STDOUT=*OUT; } else { open OUT,">$output"; @@ -200,7 +200,7 @@ } $code=<<___; #ifndef __KERNEL__ -# include +# include # define VFP_ABI_PUSH vstmdb sp!,{d8-d15} # define VFP_ABI_POP vldmia sp!,{d8-d15} #else @@ -278,27 +278,27 @@ WORD64(0x5fcb6fab,0x3ad6faec, 0x6c44198c,0x4a475817) .size K512,.-K512 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) -.extern GFp_armcap_P -.hidden GFp_armcap_P +.extern OPENSSL_armcap_P +.hidden OPENSSL_armcap_P .LOPENSSL_armcap: -.word GFp_armcap_P-.Lsha512_block_data_order +.word OPENSSL_armcap_P-.Lsha512_block_data_order .skip 32-4 #else .skip 32 #endif -.global GFp_sha512_block_data_order -.type GFp_sha512_block_data_order,%function -GFp_sha512_block_data_order: +.global sha512_block_data_order +.type sha512_block_data_order,%function +sha512_block_data_order: .Lsha512_block_data_order: #if __ARM_ARCH__<7 && !defined(__thumb2__) - sub r3,pc,#8 @ GFp_sha512_block_data_order + sub r3,pc,#8 @ sha512_block_data_order #else adr r3,.Lsha512_block_data_order #endif #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) ldr r12,.LOPENSSL_armcap - ldr r12,[r3,r12] @ GFp_armcap_P + ldr r12,[r3,r12] @ OPENSSL_armcap_P #ifdef __APPLE__ ldr r12,[r12] #endif @@ -506,7 +506,7 @@ moveq pc,lr @ be binary compatible with V4, yet bx lr @ interoperable with Thumb ISA:-) #endif -.size GFp_sha512_block_data_order,.-GFp_sha512_block_data_order +.size sha512_block_data_order,.-sha512_block_data_order ___ { @@ -668,4 +668,4 @@ close SELF; print $code; -close STDOUT or die "error closing STDOUT"; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/sha/asm/sha512-armv8.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/sha/asm/sha512-armv8.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/sha/asm/sha512-armv8.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/sha/asm/sha512-armv8.pl 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -27,6 +27,7 @@ # Denver 2.01 10.5 (+26%) 6.70 (+8%) # X-Gene 20.0 (+100%) 12.8 (+300%(***)) # Mongoose 2.36 13.0 (+50%) 8.36 (+33%) +# Kryo 1.92 17.4 (+30%) 11.2 (+8%) # # (*) Software SHA256 results are of lesser relevance, presented # mostly for informational purposes. @@ -35,24 +36,10 @@ # on Cortex-A53 (or by 4 cycles per round). # (***) Super-impressive coefficients over gcc-generated code are # indication of some compiler "pathology", most notably code -# generated with -mgeneral-regs-only is significanty faster +# generated with -mgeneral-regs-only is significantly faster # and the gap is only 40-90%. -$output=pop; -$flavour=pop; - -if ($flavour && $flavour ne "void") { - $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; - ( $xlate="${dir}arm-xlate.pl" and -f $xlate ) or - ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or - die "can't locate arm-xlate.pl"; - - open OUT,"| \"$^X\" $xlate $flavour $output"; - *STDOUT=*OUT; -} else { - open OUT,">$output"; - *STDOUT=*OUT; -} +my ($flavour, $output) = @ARGV; if ($output =~ /sha512-armv8/) { $BITS=512; @@ -74,7 +61,20 @@ $reg_t="w"; } -$func="GFp_sha${BITS}_block_data_order"; +if ($flavour && $flavour ne "void") { + $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; + ( $xlate="${dir}arm-xlate.pl" and -f $xlate ) or + ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or + die "can't locate arm-xlate.pl"; + + open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""; + *STDOUT=*OUT; +} else { + open OUT,">$output"; + *STDOUT=*OUT; +} + +$func="sha${BITS}_block_data_order"; ($ctx,$inp,$num,$Ktbl)=map("x$_",(0..2,30)); @@ -89,7 +89,7 @@ $T0=@X[$i+3] if ($i<11); $code.=<<___ if ($i<16); -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev @X[$i],@X[$i] // $i #endif ___ @@ -173,32 +173,36 @@ $code.=<<___; #ifndef __KERNEL__ -# include +# include #endif .text -.extern GFp_armcap_P -.hidden GFp_armcap_P +.extern OPENSSL_armcap_P +.hidden OPENSSL_armcap_P .globl $func .type $func,%function .align 6 $func: -___ -$code.=<<___ if ($SZ==4); AARCH64_VALID_CALL_TARGET #ifndef __KERNEL__ -#if __has_feature(hwaddress_sanitizer) && __clang_major__ >= 10 - adrp x16,:pg_hi21_nc:GFp_armcap_P +#if defined(OPENSSL_HWASAN) && __clang_major__ >= 10 + adrp x16,:pg_hi21_nc:OPENSSL_armcap_P #else - adrp x16,:pg_hi21:GFp_armcap_P + adrp x16,:pg_hi21:OPENSSL_armcap_P #endif - ldr w16,[x16,:lo12:GFp_armcap_P] + ldr w16,[x16,:lo12:OPENSSL_armcap_P] +___ +$code.=<<___ if ($SZ==4); tst w16,#ARMV8_SHA256 b.ne .Lv8_entry -#endif +___ +$code.=<<___ if ($SZ==8); + tst w16,#ARMV8_SHA512 + b.ne .Lv8_entry ___ $code.=<<___; +#endif AARCH64_SIGN_LINK_REGISTER stp x29,x30,[sp,#-128]! add x29,sp,#0 @@ -424,6 +428,110 @@ ___ } +if ($SZ==8) { +my $Ktbl="x3"; + +my @H = map("v$_.16b",(0..4)); +my ($fg,$de,$m9_10)=map("v$_.16b",(5..7)); +my @MSG=map("v$_.16b",(16..23)); +my ($W0,$W1)=("v24.2d","v25.2d"); +my ($AB,$CD,$EF,$GH)=map("v$_.16b",(26..29)); + +$code.=<<___; +.text +#ifndef __KERNEL__ +.type sha512_block_armv8,%function +.align 6 +sha512_block_armv8: +.Lv8_entry: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ld1 {@MSG[0]-@MSG[3]},[$inp],#64 // load input + ld1 {@MSG[4]-@MSG[7]},[$inp],#64 + + ld1.64 {@H[0]-@H[3]},[$ctx] // load context + adrp $Ktbl,:pg_hi21:.LK512 + add $Ktbl,$Ktbl,:lo12:.LK512 + + rev64 @MSG[0],@MSG[0] + rev64 @MSG[1],@MSG[1] + rev64 @MSG[2],@MSG[2] + rev64 @MSG[3],@MSG[3] + rev64 @MSG[4],@MSG[4] + rev64 @MSG[5],@MSG[5] + rev64 @MSG[6],@MSG[6] + rev64 @MSG[7],@MSG[7] + b .Loop_hw + +.align 4 +.Loop_hw: + ld1.64 {$W0},[$Ktbl],#16 + subs $num,$num,#1 + sub x4,$inp,#128 + orr $AB,@H[0],@H[0] // offload + orr $CD,@H[1],@H[1] + orr $EF,@H[2],@H[2] + orr $GH,@H[3],@H[3] + csel $inp,$inp,x4,ne // conditional rewind +___ +for($i=0;$i<32;$i++) { +$code.=<<___; + add.i64 $W0,$W0,@MSG[0] + ld1.64 {$W1},[$Ktbl],#16 + ext $W0,$W0,$W0,#8 + ext $fg,@H[2],@H[3],#8 + ext $de,@H[1],@H[2],#8 + add.i64 @H[3],@H[3],$W0 // "T1 + H + K512[i]" + sha512su0 @MSG[0],@MSG[1] + ext $m9_10,@MSG[4],@MSG[5],#8 + sha512h @H[3],$fg,$de + sha512su1 @MSG[0],@MSG[7],$m9_10 + add.i64 @H[4],@H[1],@H[3] // "D + T1" + sha512h2 @H[3],$H[1],@H[0] +___ + ($W0,$W1)=($W1,$W0); push(@MSG,shift(@MSG)); + @H = (@H[3],@H[0],@H[4],@H[2],@H[1]); +} +for(;$i<40;$i++) { +$code.=<<___ if ($i<39); + ld1.64 {$W1},[$Ktbl],#16 +___ +$code.=<<___ if ($i==39); + sub $Ktbl,$Ktbl,#$rounds*$SZ // rewind +___ +$code.=<<___; + add.i64 $W0,$W0,@MSG[0] + ld1 {@MSG[0]},[$inp],#16 // load next input + ext $W0,$W0,$W0,#8 + ext $fg,@H[2],@H[3],#8 + ext $de,@H[1],@H[2],#8 + add.i64 @H[3],@H[3],$W0 // "T1 + H + K512[i]" + sha512h @H[3],$fg,$de + rev64 @MSG[0],@MSG[0] + add.i64 @H[4],@H[1],@H[3] // "D + T1" + sha512h2 @H[3],$H[1],@H[0] +___ + ($W0,$W1)=($W1,$W0); push(@MSG,shift(@MSG)); + @H = (@H[3],@H[0],@H[4],@H[2],@H[1]); +} +$code.=<<___; + add.i64 @H[0],@H[0],$AB // accumulate + add.i64 @H[1],@H[1],$CD + add.i64 @H[2],@H[2],$EF + add.i64 @H[3],@H[3],$GH + + cbnz $num,.Loop_hw + + st1.64 {@H[0]-@H[3]},[$ctx] // store context + + ldr x29,[sp],#16 + ret +.size sha512_block_armv8,.-sha512_block_armv8 +#endif +___ +} + { my %opcode = ( "sha256h" => 0x5e004000, "sha256h2" => 0x5e005000, "sha256su0" => 0x5e282800, "sha256su1" => 0x5e006000 ); @@ -439,6 +547,21 @@ } } +{ my %opcode = ( + "sha512h" => 0xce608000, "sha512h2" => 0xce608400, + "sha512su0" => 0xcec08000, "sha512su1" => 0xce608800 ); + + sub unsha512 { + my ($mnemonic,$arg)=@_; + + $arg =~ m/[qv]([0-9]+)[^,]*,\s*[qv]([0-9]+)[^,]*(?:,\s*[qv]([0-9]+))?/o + && + sprintf ".inst\t0x%08x\t//%s %s", + $opcode{$mnemonic}|$1|($2<<5)|($3<<16), + $mnemonic,$arg; + } +} + open SELF,$0; while() { next if (/^#!/); @@ -449,14 +572,20 @@ foreach(split("\n",$code)) { - s/\`([^\`]*)\`/eval($1)/geo; + s/\`([^\`]*)\`/eval($1)/ge; + + s/\b(sha512\w+)\s+([qv].*)/unsha512($1,$2)/ge or + s/\b(sha256\w+)\s+([qv].*)/unsha256($1,$2)/ge; - s/\b(sha256\w+)\s+([qv].*)/unsha256($1,$2)/geo; + s/\bq([0-9]+)\b/v$1.16b/g; # old->new registers - s/\.\w?32\b//o and s/\.16b/\.4s/go; - m/(ld|st)1[^\[]+\[0\]/o and s/\.4s/\.s/go; + s/\.[ui]?8(\s)/$1/; + s/\.\w?64\b// and s/\.16b/\.2d/g or + s/\.\w?32\b// and s/\.16b/\.4s/g; + m/\bext\b/ and s/\.2d/\.16b/g or + m/(ld|st)1[^\[]+\[0\]/ and s/\.4s/\.s/g; print $_,"\n"; } -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/fipsmodule/sha/asm/sha512-x86_64.pl temporalio-1.3.0/vendor/ring/crypto/fipsmodule/sha/asm/sha512-x86_64.pl --- temporalio-1.3.0/vendor/ring/crypto/fipsmodule/sha/asm/sha512-x86_64.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/fipsmodule/sha/asm/sha512-x86_64.pl 2023-10-30 19:40:00.000000000 +0000 @@ -111,38 +111,10 @@ # # Modified from upstream OpenSSL to remove the XOP code. -$flavour = shift; -$output = shift; -if ($flavour =~ /\./) { $output = $flavour; undef $flavour; } - -$win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/); - -$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; -( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or -( $xlate="${dir}../../../perlasm/x86_64-xlate.pl" and -f $xlate) or -die "can't locate x86_64-xlate.pl"; - -# In upstream, this is controlled by shelling out to the compiler to check -# versions, but BoringSSL is intended to be used with pre-generated perlasm -# output, so this isn't useful anyway. -# -# TODO(briansmith): Address davidben's concerns about the CFI annotations and -# Win64 ABI issues at https://github.com/openssl/openssl/issues/8853. -# TODO(davidben): Enable AVX2 code after testing by setting $avx to 2. Is it -# necessary to disable AVX2 code when SHA Extensions code is disabled? Upstream -# did not tie them together until after $shaext was added. -$avx = 1; - -# TODO(davidben): Consider enabling the Intel SHA Extensions code once it's -# been tested. -$shaext=0; ### set to zero if compiling for 1.0.1 -$avx=1 if (!$shaext && $avx); - -open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""; -*STDOUT=*OUT; +my ($flavour, $output) = @ARGV; if ($output =~ /sha512-x86_64/) { - $func="GFp_sha512_block_data_order"; + $func="sha512_block_data_order"; $TABLE="K512"; $SZ=8; @ROT=($A,$B,$C,$D,$E,$F,$G,$H)=("%rax","%rbx","%rcx","%rdx", @@ -154,7 +126,7 @@ @sigma1=(19,61, 6); $rounds=80; } else { - $func="GFp_sha256_block_data_order"; + $func="sha256_block_data_order"; $TABLE="K256"; $SZ=4; @ROT=($A,$B,$C,$D,$E,$F,$G,$H)=("%eax","%ebx","%ecx","%edx", @@ -167,6 +139,27 @@ $rounds=64; } +$win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/); + +$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; +( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or +( $xlate="${dir}../../../perlasm/x86_64-xlate.pl" and -f $xlate) or +die "can't locate x86_64-xlate.pl"; + +# In upstream, this is controlled by shelling out to the compiler to check +# versions, but BoringSSL is intended to be used with pre-generated perlasm +# output, so this isn't useful anyway. +# +# This file also has an AVX2 implementation, controlled by setting $avx to 2. +# For now, we intentionally disable it. While it gives a 13-16% perf boost, the +# CFI annotations are wrong. It allocates stack in a loop and should be +# rewritten to avoid this. +$avx = 1; +$shaext = 1; + +open OUT,"| \"$^X\" \"$xlate\" $flavour \"$output\""; +*STDOUT=*OUT; + $ctx="%rdi"; # 1st arg, zapped by $a3 $inp="%rsi"; # 2nd arg $Tbl="%rbp"; @@ -262,22 +255,23 @@ $code=<<___; .text -.extern GFp_ia32cap_P +.extern OPENSSL_ia32cap_P .globl $func .type $func,\@function,3 .align 16 $func: .cfi_startproc + _CET_ENDBR ___ $code.=<<___ if ($SZ==4 || $avx); - leaq GFp_ia32cap_P(%rip),%r11 + leaq OPENSSL_ia32cap_P(%rip),%r11 mov 0(%r11),%r9d mov 4(%r11),%r10d mov 8(%r11),%r11d ___ $code.=<<___ if ($SZ==4 && $shaext); test \$`1<<29`,%r11d # check for SHA - jnz _shaext_shortcut + jnz .Lshaext_shortcut ___ # XOP codepath removed. $code.=<<___ if ($avx>1); @@ -409,6 +403,7 @@ if ($SZ==4) { $code.=<<___; +.section .rodata .align 64 .type $TABLE,\@object $TABLE: @@ -452,9 +447,11 @@ .long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 .long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 .asciz "SHA256 block transform for x86_64, CRYPTOGAMS by " +.text ___ } else { $code.=<<___; +.section .rodata .align 64 .type $TABLE,\@object $TABLE: @@ -542,6 +539,7 @@ .quad 0x0001020304050607,0x08090a0b0c0d0e0f .quad 0x0001020304050607,0x08090a0b0c0d0e0f .asciz "SHA512 block transform for x86_64, CRYPTOGAMS by " +.text ___ } @@ -558,10 +556,11 @@ my @MSG=map("%xmm$_",(3..6)); $code.=<<___; -.type GFp_sha256_block_data_order_shaext,\@function,3 +.type sha256_block_data_order_shaext,\@function,3 .align 64 -GFp_sha256_block_data_order_shaext: -_shaext_shortcut: +sha256_block_data_order_shaext: +.cfi_startproc +.Lshaext_shortcut: ___ $code.=<<___ if ($win64); lea `-8-5*16`(%rsp),%rsp @@ -705,7 +704,8 @@ ___ $code.=<<___; ret -.size GFp_sha256_block_data_order_shaext,.-GFp_sha256_block_data_order_shaext +.cfi_endproc +.size sha256_block_data_order_shaext,.-sha256_block_data_order_shaext ___ }}} {{{ @@ -1672,4 +1672,4 @@ print $_,"\n"; } -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/internal.h temporalio-1.3.0/vendor/ring/crypto/internal.h --- temporalio-1.3.0/vendor/ring/crypto/internal.h 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/internal.h 2023-10-30 19:40:00.000000000 +0000 @@ -109,9 +109,15 @@ #ifndef OPENSSL_HEADER_CRYPTO_INTERNAL_H #define OPENSSL_HEADER_CRYPTO_INTERNAL_H -#include // Must be first. +#include // Must be first. -#include "GFp/check.h" +#include "ring-core/check.h" + +#if defined(__clang__) +// Don't require prototypes for functions defined in C that are only +// used from Rust. +#pragma GCC diagnostic ignored "-Wmissing-prototypes" +#endif #if defined(__GNUC__) && \ (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800 @@ -125,12 +131,39 @@ #include #endif +// Some C compilers require a useless cast when dealing with arrays for the +// reason explained in +// https://gustedt.wordpress.com/2011/02/12/const-and-arrays/ +#if defined(__clang__) || defined(_MSC_VER) +#define RING_CORE_POINTLESS_ARRAY_CONST_CAST(cast) +#else +#define RING_CORE_POINTLESS_ARRAY_CONST_CAST(cast) cast +#endif + +// `uint8_t` isn't guaranteed to be 'unsigned char' and only 'char' and +// 'unsigned char' are allowed to alias according to ISO C. +typedef unsigned char aliasing_uint8_t; + #if (!defined(_MSC_VER) || defined(__clang__)) && defined(OPENSSL_64_BIT) #define BORINGSSL_HAS_UINT128 typedef __int128_t int128_t; typedef __uint128_t uint128_t; #endif +// Pointer utility functions. + +// buffers_alias returns one if |a| and |b| alias and zero otherwise. +static inline int buffers_alias(const void *a, size_t a_bytes, + const void *b, size_t b_bytes) { + // Cast |a| and |b| to integers. In C, pointer comparisons between unrelated + // objects are undefined whereas pointer to integer conversions are merely + // implementation-defined. We assume the implementation defined it in a sane + // way. + uintptr_t a_u = (uintptr_t)a; + uintptr_t b_u = (uintptr_t)b; + return a_u + a_bytes > b_u && b_u + b_bytes > a_u; +} + // Constant-time utility functions. // @@ -146,25 +179,39 @@ // // can be written as // -// crypto_word lt = constant_time_lt_w(a, b); +// crypto_word_t lt = constant_time_lt_w(a, b); // c = constant_time_select_w(lt, a, b); -// crypto_word is the type that most constant-time functions use. Ideally we +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif +#if defined(_MSC_VER) && !defined(__clang__) +#pragma warning(push) +// '=': conversion from 'crypto_word_t' to 'uint8_t', possible loss of data +#pragma warning(disable: 4242) +// 'initializing': conversion from 'crypto_word_t' to 'uint8_t', ... +#pragma warning(disable: 4244) +#endif + +// crypto_word_t is the type that most constant-time functions use. Ideally we // would like it to be |size_t|, but NaCl builds in 64-bit mode with 32-bit -// pointers, which means that |size_t| can be 32 bits when |crypto_word| is 64 -// bits. +// pointers, which means that |size_t| can be 32 bits when |BN_ULONG| is 64 +// bits. Since we want to be able to do constant-time operations on a +// |BN_ULONG|, |crypto_word_t| is defined as an unsigned value with the native +// word length. #if defined(OPENSSL_64_BIT) -typedef uint64_t crypto_word; +typedef uint64_t crypto_word_t; #define CRYPTO_WORD_BITS (64u) #elif defined(OPENSSL_32_BIT) -typedef uint32_t crypto_word; +typedef uint32_t crypto_word_t; #define CRYPTO_WORD_BITS (32u) #else #error "Must define either OPENSSL_32_BIT or OPENSSL_64_BIT" #endif -#define CONSTTIME_TRUE_W ~((crypto_word)0) -#define CONSTTIME_FALSE_W ((crypto_word)0) +#define CONSTTIME_TRUE_W ~((crypto_word_t)0) +#define CONSTTIME_FALSE_W ((crypto_word_t)0) // value_barrier_w returns |a|, but prevents GCC and Clang from reasoning about // the returned value. This is used to mitigate compilers undoing constant-time @@ -173,37 +220,24 @@ // Note the compiler is aware that |value_barrier_w| has no side effects and // always has the same output for a given input. This allows it to eliminate // dead code, move computations across loops, and vectorize. -static inline crypto_word value_barrier_w(crypto_word a) { -#if !defined(OPENSSL_NO_ASM) && (defined(__GNUC__) || defined(__clang__)) - __asm__("" : "+r"(a) : /* no inputs */); -#endif - return a; -} - -// value_barrier_u32 behaves like |value_barrier_w| but takes a |uint32_t|. -static inline uint32_t value_barrier_u32(uint32_t a) { -#if !defined(OPENSSL_NO_ASM) && (defined(__GNUC__) || defined(__clang__)) +static inline crypto_word_t value_barrier_w(crypto_word_t a) { +#if defined(__GNUC__) || defined(__clang__) __asm__("" : "+r"(a) : /* no inputs */); #endif return a; } -// value_barrier_u64 behaves like |value_barrier_w| but takes a |uint64_t|. -static inline uint64_t value_barrier_u64(uint64_t a) { -#if !defined(OPENSSL_NO_ASM) && (defined(__GNUC__) || defined(__clang__)) - __asm__("" : "+r"(a) : /* no inputs */); -#endif - return a; -} +// |value_barrier_u8| could be defined as above, but compilers other than +// clang seem to still materialize 0x00..00MM instead of reusing 0x??..??MM. // constant_time_msb_w returns the given value with the MSB copied to all the // other bits. -static inline crypto_word constant_time_msb_w(crypto_word a) { +static inline crypto_word_t constant_time_msb_w(crypto_word_t a) { return 0u - (a >> (sizeof(a) * 8 - 1)); } -// constant_time_is_zero_w returns 0xff..f if a == 0 and 0 otherwise. -static inline crypto_word constant_time_is_zero_w(crypto_word a) { +// constant_time_is_zero returns 0xff..f if a == 0 and 0 otherwise. +static inline crypto_word_t constant_time_is_zero_w(crypto_word_t a) { // Here is an SMT-LIB verification of this formula: // // (define-fun is_zero ((a (_ BitVec 32))) (_ BitVec 32) @@ -218,29 +252,115 @@ return constant_time_msb_w(~a & (a - 1)); } -static inline crypto_word constant_time_is_nonzero_w(crypto_word a) { +static inline crypto_word_t constant_time_is_nonzero_w(crypto_word_t a) { return ~constant_time_is_zero_w(a); } // constant_time_eq_w returns 0xff..f if a == b and 0 otherwise. -static inline crypto_word constant_time_eq_w(crypto_word a, - crypto_word b) { +static inline crypto_word_t constant_time_eq_w(crypto_word_t a, + crypto_word_t b) { return constant_time_is_zero_w(a ^ b); } // constant_time_select_w returns (mask & a) | (~mask & b). When |mask| is all // 1s or all 0s (as returned by the methods above), the select methods return // either |a| (if |mask| is nonzero) or |b| (if |mask| is zero). -static inline crypto_word constant_time_select_w(crypto_word mask, - crypto_word a, - crypto_word b) { +static inline crypto_word_t constant_time_select_w(crypto_word_t mask, + crypto_word_t a, + crypto_word_t b) { // Clang recognizes this pattern as a select. While it usually transforms it // to a cmov, it sometimes further transforms it into a branch, which we do // not want. // - // Adding barriers to both |mask| and |~mask| breaks the relationship between - // the two, which makes the compiler stick with bitmasks. - return (value_barrier_w(mask) & a) | (value_barrier_w(~mask) & b); + // Hiding the value of the mask from the compiler evades this transformation. + mask = value_barrier_w(mask); + return (mask & a) | (~mask & b); +} + +// constant_time_select_8 acts like |constant_time_select| but operates on +// 8-bit values. +static inline uint8_t constant_time_select_8(crypto_word_t mask, uint8_t a, + uint8_t b) { + // |mask| is a word instead of |uint8_t| to avoid materializing 0x000..0MM + // Making both |mask| and its value barrier |uint8_t| would allow the compiler + // to materialize 0x????..?MM instead, but only clang is that clever. + // However, vectorization of bitwise operations seems to work better on + // |uint8_t| than a mix of |uint64_t| and |uint8_t|, so |m| is cast to + // |uint8_t| after the value barrier but before the bitwise operations. + uint8_t m = value_barrier_w(mask); + return (m & a) | (~m & b); +} + +// constant_time_conditional_memcpy copies |n| bytes from |src| to |dst| if +// |mask| is 0xff..ff and does nothing if |mask| is 0. The |n|-byte memory +// ranges at |dst| and |src| must not overlap, as when calling |memcpy|. +static inline void constant_time_conditional_memcpy(void *dst, const void *src, + const size_t n, + const crypto_word_t mask) { + debug_assert_nonsecret(!buffers_alias(dst, n, src, n)); + uint8_t *out = (uint8_t *)dst; + const uint8_t *in = (const uint8_t *)src; + for (size_t i = 0; i < n; i++) { + out[i] = constant_time_select_8(mask, in[i], out[i]); + } +} + +// constant_time_conditional_memxor xors |n| bytes from |src| to |dst| if +// |mask| is 0xff..ff and does nothing if |mask| is 0. The |n|-byte memory +// ranges at |dst| and |src| must not overlap, as when calling |memcpy|. +static inline void constant_time_conditional_memxor(void *dst, const void *src, + const size_t n, + const crypto_word_t mask) { + debug_assert_nonsecret(!buffers_alias(dst, n, src, n)); + aliasing_uint8_t *out = dst; + const aliasing_uint8_t *in = src; + for (size_t i = 0; i < n; i++) { + out[i] ^= value_barrier_w(mask) & in[i]; + } +} + +#if defined(_MSC_VER) && !defined(__clang__) +// '=': conversion from 'int64_t' to 'int32_t', possible loss of data +#pragma warning(pop) +#endif +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic pop +#endif + +#if defined(BORINGSSL_CONSTANT_TIME_VALIDATION) + +// CONSTTIME_SECRET takes a pointer and a number of bytes and marks that region +// of memory as secret. Secret data is tracked as it flows to registers and +// other parts of a memory. If secret data is used as a condition for a branch, +// or as a memory index, it will trigger warnings in valgrind. +#define CONSTTIME_SECRET(ptr, len) VALGRIND_MAKE_MEM_UNDEFINED(ptr, len) + +// CONSTTIME_DECLASSIFY takes a pointer and a number of bytes and marks that +// region of memory as public. Public data is not subject to constant-time +// rules. +#define CONSTTIME_DECLASSIFY(ptr, len) VALGRIND_MAKE_MEM_DEFINED(ptr, len) + +#else + +#define CONSTTIME_SECRET(ptr, len) +#define CONSTTIME_DECLASSIFY(ptr, len) + +#endif // BORINGSSL_CONSTANT_TIME_VALIDATION + +static inline crypto_word_t constant_time_declassify_w(crypto_word_t v) { + // Return |v| through a value barrier to be safe. Valgrind-based constant-time + // validation is partly to check the compiler has not undone any constant-time + // work. Any place |BORINGSSL_CONSTANT_TIME_VALIDATION| influences + // optimizations, this validation is inaccurate. + // + // However, by sending pointers through valgrind, we likely inhibit escape + // analysis. On local variables, particularly booleans, we likely + // significantly impact optimizations. + // + // Thus, to be safe, stick a value barrier, in hopes of comparably inhibiting + // compiler analysis. + CONSTTIME_DECLASSIFY(&v, sizeof(v)); + return value_barrier_w(v); } // Endianness conversions. @@ -249,6 +369,10 @@ static inline uint32_t CRYPTO_bswap4(uint32_t x) { return __builtin_bswap32(x); } + +static inline uint64_t CRYPTO_bswap8(uint64_t x) { + return __builtin_bswap64(x); +} #elif defined(_MSC_VER) #pragma warning(push, 3) #include @@ -257,21 +381,25 @@ static inline uint32_t CRYPTO_bswap4(uint32_t x) { return _byteswap_ulong(x); } + +static inline uint64_t CRYPTO_bswap8(uint64_t x) { + return _byteswap_uint64(x); +} #endif -#if !defined(GFp_NOSTDLIBINC) +#if !defined(RING_CORE_NOSTDLIBINC) #include #endif -static inline void *GFp_memcpy(void *dst, const void *src, size_t n) { -#if !defined(GFp_NOSTDLIBINC) +static inline void *OPENSSL_memcpy(void *dst, const void *src, size_t n) { +#if !defined(RING_CORE_NOSTDLIBINC) if (n == 0) { return dst; } return memcpy(dst, src, n); #else - unsigned char *d = dst; - const unsigned char *s = src; + aliasing_uint8_t *d = dst; + const aliasing_uint8_t *s = src; for (size_t i = 0; i < n; ++i) { d[i] = s[i]; } @@ -279,19 +407,126 @@ #endif } -static inline void *GFp_memset(void *dst, int c, size_t n) { -#if !defined(GFp_NOSTDLIBINC) +static inline void *OPENSSL_memset(void *dst, int c, size_t n) { +#if !defined(RING_CORE_NOSTDLIBINC) if (n == 0) { return dst; } return memset(dst, c, n); #else - unsigned char *d = dst; + aliasing_uint8_t *d = dst; for (size_t i = 0; i < n; ++i) { - d[i] = (unsigned char)c; + d[i] = (aliasing_uint8_t)c; } return dst; #endif } + +// Loads and stores. +// +// The following functions load and store sized integers with the specified +// endianness. They use |memcpy|, and so avoid alignment or strict aliasing +// requirements on the input and output pointers. + +#if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +#define RING_BIG_ENDIAN +#endif +#endif + +static inline uint32_t CRYPTO_load_u32_le(const void *in) { + uint32_t v; + OPENSSL_memcpy(&v, in, sizeof(v)); +#if defined(RING_BIG_ENDIAN) + return CRYPTO_bswap4(v); +#else + return v; +#endif +} + +static inline void CRYPTO_store_u32_le(void *out, uint32_t v) { +#if defined(RING_BIG_ENDIAN) + v = CRYPTO_bswap4(v); +#endif + OPENSSL_memcpy(out, &v, sizeof(v)); +} + +static inline uint32_t CRYPTO_load_u32_be(const void *in) { + uint32_t v; + OPENSSL_memcpy(&v, in, sizeof(v)); +#if !defined(RING_BIG_ENDIAN) + return CRYPTO_bswap4(v); +#else + return v; +#endif +} + +static inline void CRYPTO_store_u32_be(void *out, uint32_t v) { +#if !defined(RING_BIG_ENDIAN) + v = CRYPTO_bswap4(v); +#endif + OPENSSL_memcpy(out, &v, sizeof(v)); +} + +static inline uint64_t CRYPTO_load_u64_le(const void *in) { + uint64_t v; + OPENSSL_memcpy(&v, in, sizeof(v)); +#if defined(RING_BIG_ENDIAN) + return CRYPTO_bswap8(v); +#else + return v; +#endif +} + +static inline void CRYPTO_store_u64_le(void *out, uint64_t v) { +#if defined(RING_BIG_ENDIAN) + v = CRYPTO_bswap8(v); +#endif + OPENSSL_memcpy(out, &v, sizeof(v)); +} + +static inline uint64_t CRYPTO_load_u64_be(const void *ptr) { + uint64_t ret; + OPENSSL_memcpy(&ret, ptr, sizeof(ret)); +#if !defined(RING_BIG_ENDIAN) + return CRYPTO_bswap8(ret); +#else + return ret; +#endif +} + +static inline void CRYPTO_store_u64_be(void *out, uint64_t v) { +#if !defined(RING_BIG_ENDIAN) + v = CRYPTO_bswap8(v); +#endif + OPENSSL_memcpy(out, &v, sizeof(v)); +} + + +// Runtime CPU feature support + +#if defined(OPENSSL_X86) || defined(OPENSSL_X86_64) +// OPENSSL_ia32cap_P contains the Intel CPUID bits when running on an x86 or +// x86-64 system. +// +// Index 0: +// EDX for CPUID where EAX = 1 +// Bit 20 is always zero +// Bit 28 is adjusted to reflect whether the data cache is shared between +// multiple logical cores +// Bit 30 is used to indicate an Intel CPU +// Index 1: +// ECX for CPUID where EAX = 1 +// Bit 11 is used to indicate AMD XOP support, not SDBG +// Index 2: +// EBX for CPUID where EAX = 7 +// Index 3: +// ECX for CPUID where EAX = 7 +// +// Note: the CPUID bits are pre-adjusted for the OSXSAVE bit and the YMM and XMM +// bits in XCR0, so it is not necessary to check those. +extern uint32_t OPENSSL_ia32cap_P[4]; +#endif + #endif // OPENSSL_HEADER_CRYPTO_INTERNAL_H diff -Nru temporalio-1.3.0/vendor/ring/crypto/limbs/limbs.c temporalio-1.3.0/vendor/ring/crypto/limbs/limbs.c --- temporalio-1.3.0/vendor/ring/crypto/limbs/limbs.c 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/limbs/limbs.c 2023-10-30 19:40:00.000000000 +0000 @@ -151,7 +151,7 @@ } int LIMBS_select_512_32(Limb r[], const Limb table[], size_t num_limbs, - crypto_word index) { + crypto_word_t index) { if (num_limbs % (512 / LIMB_BITS) != 0) { return 0; } @@ -161,7 +161,7 @@ static const Limb FIVE_BITS_MASK = 0x1f; -crypto_word LIMBS_window5_split_window(Limb lower_limb, Limb higher_limb, size_t index_within_word) { +crypto_word_t LIMBS_window5_split_window(Limb lower_limb, Limb higher_limb, size_t index_within_word) { Limb high_bits = (higher_limb << (LIMB_BITS - index_within_word)) & FIVE_BITS_MASK; // There are no bits outside the window above |index_within_word| (if there @@ -171,7 +171,7 @@ return low_bits | high_bits; } -crypto_word LIMBS_window5_unsplit_window(Limb limb, size_t index_within_word) { +crypto_word_t LIMBS_window5_unsplit_window(Limb limb, size_t index_within_word) { return (limb >> index_within_word) & FIVE_BITS_MASK; } @@ -179,7 +179,7 @@ return a >> shift; } -Limb GFp_limbs_mul_add_limb(Limb r[], const Limb a[], Limb b, size_t num_limbs) { +Limb limbs_mul_add_limb(Limb r[], const Limb a[], Limb b, size_t num_limbs) { Limb carried = 0; for (size_t i = 0; i < num_limbs; ++i) { Limb lo; diff -Nru temporalio-1.3.0/vendor/ring/crypto/limbs/limbs.h temporalio-1.3.0/vendor/ring/crypto/limbs/limbs.h --- temporalio-1.3.0/vendor/ring/crypto/limbs/limbs.h 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/limbs/limbs.h 2023-10-30 19:40:00.000000000 +0000 @@ -15,11 +15,11 @@ #ifndef RING_LIMBS_H #define RING_LIMBS_H -#include +#include #include "../internal.h" -typedef crypto_word Limb; +typedef crypto_word_t Limb; #define LIMB_BITS CRYPTO_WORD_BITS #define LIMB_HIGH_BIT ((Limb)(1) << (LIMB_BITS - 1)) @@ -35,6 +35,6 @@ void LIMBS_sub_mod(Limb r[], const Limb a[], const Limb b[], const Limb m[], size_t num_limbs); void LIMBS_shl_mod(Limb r[], const Limb a[], const Limb m[], size_t num_limbs); -Limb GFp_limbs_mul_add_limb(Limb r[], const Limb a[], Limb b, size_t num_limbs); +Limb limbs_mul_add_limb(Limb r[], const Limb a[], Limb b, size_t num_limbs); #endif /* RING_LIMBS_H */ diff -Nru temporalio-1.3.0/vendor/ring/crypto/limbs/limbs.inl temporalio-1.3.0/vendor/ring/crypto/limbs/limbs.inl --- temporalio-1.3.0/vendor/ring/crypto/limbs/limbs.inl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/limbs/limbs.inl 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include "limbs.h" -#include "GFp/check.h" +#include "ring-core/check.h" #if defined(_MSC_VER) && !defined(__clang__) #pragma warning(push, 3) @@ -36,12 +36,12 @@ typedef uint8_t Carry; #if LIMB_BITS == 64 #pragma intrinsic(_addcarry_u64, _subborrow_u64) -#define GFp_ADDCARRY_INTRINSIC _addcarry_u64 -#define GFp_SUBBORROW_INTRINSIC _subborrow_u64 +#define RING_CORE_ADDCARRY_INTRINSIC _addcarry_u64 +#define RING_CORE_SUBBORROW_INTRINSIC _subborrow_u64 #elif LIMB_BITS == 32 #pragma intrinsic(_addcarry_u32, _subborrow_u32) -#define GFp_ADDCARRY_INTRINSIC _addcarry_u32 -#define GFp_SUBBORROW_INTRINSIC _subborrow_u32 +#define RING_CORE_ADDCARRY_INTRINSIC _addcarry_u32 +#define RING_CORE_SUBBORROW_INTRINSIC _subborrow_u32 typedef uint64_t DoubleLimb; #endif #else @@ -58,8 +58,8 @@ static inline Carry limb_adc(Limb *r, Limb a, Limb b, Carry carry_in) { dev_assert_secret(carry_in == 0 || carry_in == 1); Carry ret; -#if defined(GFp_ADDCARRY_INTRINSIC) - ret = GFp_ADDCARRY_INTRINSIC(carry_in, a, b, r); +#if defined(RING_CORE_ADDCARRY_INTRINSIC) + ret = RING_CORE_ADDCARRY_INTRINSIC(carry_in, a, b, r); #else DoubleLimb x = (DoubleLimb)a + b + carry_in; *r = (Limb)x; @@ -72,8 +72,8 @@ /* |*r = a + b|, returning carry bit. */ static inline Carry limb_add(Limb *r, Limb a, Limb b) { Carry ret; -#if defined(GFp_ADDCARRY_INTRINSIC) - ret = GFp_ADDCARRY_INTRINSIC(0, a, b, r); +#if defined(RING_CORE_ADDCARRY_INTRINSIC) + ret = RING_CORE_ADDCARRY_INTRINSIC(0, a, b, r); #else DoubleLimb x = (DoubleLimb)a + b; *r = (Limb)x; @@ -88,8 +88,8 @@ static inline Carry limb_sbb(Limb *r, Limb a, Limb b, Carry borrow_in) { dev_assert_secret(borrow_in == 0 || borrow_in == 1); Carry ret; -#if defined(GFp_SUBBORROW_INTRINSIC) - ret = GFp_SUBBORROW_INTRINSIC(borrow_in, a, b, r); +#if defined(RING_CORE_SUBBORROW_INTRINSIC) + ret = RING_CORE_SUBBORROW_INTRINSIC(borrow_in, a, b, r); #else DoubleLimb x = (DoubleLimb)a - b - borrow_in; *r = (Limb)x; @@ -102,8 +102,8 @@ /* |*r = a - b|, returning borrow bit. */ static inline Carry limb_sub(Limb *r, Limb a, Limb b) { Carry ret; -#if defined(GFp_SUBBORROW_INTRINSIC) - ret = GFp_SUBBORROW_INTRINSIC(0, a, b, r); +#if defined(RING_CORE_SUBBORROW_INTRINSIC) + ret = RING_CORE_SUBBORROW_INTRINSIC(0, a, b, r); #else DoubleLimb x = (DoubleLimb)a - b; *r = (Limb)x; @@ -142,7 +142,7 @@ static inline void limbs_select(Limb r[], const Limb table[], size_t num_limbs, size_t num_entries, - crypto_word index) { + crypto_word_t index) { for (size_t i = 0; i < num_limbs; ++i) { r[i] = 0; } diff -Nru temporalio-1.3.0/vendor/ring/crypto/mem.c temporalio-1.3.0/vendor/ring/crypto/mem.c --- temporalio-1.3.0/vendor/ring/crypto/mem.c 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/mem.c 2023-10-30 19:40:00.000000000 +0000 @@ -54,10 +54,14 @@ * copied and put under another distribution licence * [including the GNU Public Licence.] */ -#include +#include +#include "internal.h" -int GFp_memcmp(const uint8_t *a, const uint8_t *b, size_t len) { +int CRYPTO_memcmp(const void *in_a, const void *in_b, size_t len) { + const aliasing_uint8_t *a = in_a; + const aliasing_uint8_t *b = in_b; uint8_t x = 0; + for (size_t i = 0; i < len; i++) { x |= a[i] ^ b[i]; } diff -Nru temporalio-1.3.0/vendor/ring/crypto/perlasm/arm-xlate.pl temporalio-1.3.0/vendor/ring/crypto/perlasm/arm-xlate.pl --- temporalio-1.3.0/vendor/ring/crypto/perlasm/arm-xlate.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/perlasm/arm-xlate.pl 2023-10-30 19:40:00.000000000 +0000 @@ -22,6 +22,7 @@ ################################################################ my $arch = sub { if ($flavour =~ /linux/) { ".arch\t".join(',',@_); } + elsif ($flavour =~ /win64/) { ".arch\t".join(',',@_); } else { ""; } }; my $fpu = sub { @@ -30,6 +31,7 @@ }; my $hidden = sub { if ($flavour =~ /ios/) { ".private_extern\t".join(',',@_); } + elsif ($flavour =~ /win64/) { ""; } else { ".hidden\t".join(',',@_); } }; my $comm = sub { @@ -80,6 +82,15 @@ "#endif"; } } + elsif ($flavour =~ /win64/) { if (join(',',@_) =~ /(\w+),%function/) { + # See https://sourceware.org/binutils/docs/as/Pseudo-Ops.html + # Per https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#coff-symbol-table, + # the type for functions is 0x20, or 32. + ".def $1\n". + " .type 32\n". + ".endef"; + } + } else { ""; } }; my $size = sub { @@ -140,23 +151,37 @@ return $line; } +my ($arch_defines, $target_defines); +if ($flavour =~ /32/) { + $arch_defines = "defined(OPENSSL_ARM)"; +} elsif ($flavour =~ /64/) { + $arch_defines = "defined(OPENSSL_AARCH64)"; +} else { + die "unknown architecture: $flavour"; +} +if ($flavour =~ /linux/) { + # Although the flavour is specified as "linux", it is really used by all + # ELF platforms. + $target_defines = "defined(__ELF__)"; +} elsif ($flavour =~ /ios/) { + # Although the flavour is specified as "ios", it is really used by all Apple + # platforms. + $target_defines = "defined(__APPLE__)"; +} elsif ($flavour =~ /win/) { + $target_defines = "defined(_WIN32)"; +} else { + die "unknown target: $flavour"; +} + print <<___; // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && $arch_defines && $target_defines ___ -print "#if defined(__arm__)\n" if ($flavour eq "linux32"); -print "#if defined(__aarch64__)\n" if ($flavour eq "linux64"); - while(my $line=<>) { if ($line =~ m/^\s*(#|@|\/\/)/) { print $line; next; } @@ -224,10 +249,8 @@ print "\n"; } -print "#endif\n" if ($flavour eq "linux32" || $flavour eq "linux64"); -print "#endif // !OPENSSL_NO_ASM\n"; - -# See https://www.airs.com/blog/archives/518. -print ".section\t.note.GNU-stack,\"\",\%progbits\n" if ($flavour =~ /linux/); +print <<___; +#endif // !OPENSSL_NO_ASM && $arch_defines && $target_defines +___ -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff -Nru temporalio-1.3.0/vendor/ring/crypto/perlasm/x86_64-xlate.pl temporalio-1.3.0/vendor/ring/crypto/perlasm/x86_64-xlate.pl --- temporalio-1.3.0/vendor/ring/crypto/perlasm/x86_64-xlate.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/perlasm/x86_64-xlate.pl 2023-10-30 19:40:00.000000000 +0000 @@ -47,7 +47,6 @@ # (sorry about latter). # 6. Don't use [or hand-code with .byte] "rep ret." "ret" mnemonic is # required to identify the spots, where to inject Win64 epilogue! -# But on the pros, it's then prefixed with rep automatically:-) # 7. Stick to explicit ip-relative addressing. If you have to use # GOTPCREL addressing, stick to mov symbol@GOTPCREL(%rip),%r??. # Both are recognized and translated to proper Win64 addressing @@ -59,6 +58,10 @@ # 9. .init segment is allowed to contain calls to functions only. # a. If function accepts more than 4 arguments *and* >4th argument # is declared as non 64-bit value, do clear its upper part. +# +# TODO(https://crbug.com/boringssl/259): The dual-ABI mechanism described here +# does not quite unwind correctly on Windows. The seh_directive logic below has +# the start of a new mechanism. use strict; @@ -72,6 +75,7 @@ my $gas=1; $gas=0 if ($output =~ /\.asm$/); my $elf=1; $elf=0 if (!$gas); +my $apple=0; my $win64=0; my $prefix=""; my $decor=".L"; @@ -91,7 +95,7 @@ $prefix=`echo __USER_LABEL_PREFIX__ | $ENV{CC} -E -P -`; $prefix =~ s|\R$||; # Better chomp } -elsif ($flavour eq "macosx") { $gas=1; $elf=0; $prefix="_"; $decor="L\$"; } +elsif ($flavour eq "macosx") { $gas=1; $elf=0; $apple=1; $prefix="_"; $decor="L\$"; } elsif ($flavour eq "masm") { $gas=0; $elf=0; $masm=$masmref; $win64=1; $decor="\$L\$"; } elsif ($flavour eq "nasm") { $gas=0; $elf=0; $nasm=$nasmref; $win64=1; $decor="\$L\$"; $PTR=""; } elsif (!$gas) { die "unknown flavour $flavour"; } @@ -152,7 +156,7 @@ $epilogue = "movq 8(%rsp),%rdi\n\t" . "movq 16(%rsp),%rsi\n\t"; } - $epilogue . ".byte 0xf3,0xc3"; + $epilogue . "ret"; } elsif ($self->{op} eq "call" && !$elf && $current_segment eq ".init") { ".p2align\t3\n\t.quad"; } else { @@ -166,7 +170,7 @@ $self->{op} = "mov rdi,QWORD$PTR\[8+rsp\]\t;WIN64 epilogue\n\t". "mov rsi,QWORD$PTR\[16+rsp\]\n\t"; } - $self->{op} .= "DB\t0F3h,0C3h\t\t;repret"; + $self->{op} .= "ret"; } elsif ($self->{op} =~ /^(pop|push)f/) { $self->{op} .= $self->{sz}; } elsif ($self->{op} eq "call" && $current_segment eq ".CRT\$XCU") { @@ -709,15 +713,351 @@ return ($elf ? $self->{value} : undef); } } +{ package seh_directive; + # This implements directives, like MASM's, for specifying Windows unwind + # codes. See https://learn.microsoft.com/en-us/cpp/build/exception-handling-x64?view=msvc-170 + # for details on the Windows unwind mechanism. Unlike MASM's directives, we + # have no .seh_endprolog directive. Instead, the last prolog directive is + # implicitly the end of the prolog. + # + # TODO(https://crbug.com/boringssl/259): For now, SEH directives are ignored + # on non-Windows platforms. This means functions need to specify both CFI + # and SEH directives, often redundantly. Ideally we'd abstract between the + # two. E.g., we can synthesize CFI from SEH prologs, but SEH does not + # annotate epilogs, so we'd need to combine parts from both. Or we can + # restrict ourselves to a subset of CFI and synthesize SEH from CFI. + # + # Additionally, this only supports @abi-omnipotent functions. It is + # incompatible with the automatic calling convention conversion. The main + # complication is the current scheme modifies RDI and RSI (non-volatile on + # Windows) at the start of the function, and saves them in the parameter + # stack area. This can be expressed with .seh_savereg, but .seh_savereg is + # only usable late in the prolog. However, unwind information gives enough + # information to locate the parameter stack area at any point in the + # function, so we can defer conversion or implement other schemes. + + my $UWOP_PUSH_NONVOL = 0; + my $UWOP_ALLOC_LARGE = 1; + my $UWOP_ALLOC_SMALL = 2; + my $UWOP_SET_FPREG = 3; + my $UWOP_SAVE_NONVOL = 4; + my $UWOP_SAVE_NONVOL_FAR = 5; + my $UWOP_SAVE_XMM128 = 8; + my $UWOP_SAVE_XMM128_FAR = 9; + + my %UWOP_REG_TO_NUMBER = ("%rax" => 0, "%rcx" => 1, "%rdx" => 2, "%rbx" => 3, + "%rsp" => 4, "%rbp" => 5, "%rsi" => 6, "%rdi" => 7, + map(("%r$_" => $_), (8..15))); + my %UWOP_NUMBER_TO_REG = reverse %UWOP_REG_TO_NUMBER; + + # The contents of the pdata and xdata sections so far. + my ($xdata, $pdata) = ("", ""); + + my %info; + + my $next_label = 0; + my $current_label_func = ""; + + # _new_unwind_label allocates a new label, unique to the file. + sub _new_unwind_label { + my ($name) = (@_); + # Labels only need to be unique, but to make diffs easier to read, scope + # them all under the current function. + my $func = $current_function->{name}; + if ($func ne $current_label_func) { + $current_label_func = $func; + $next_label = 0; + } + + my $num = $next_label++; + return ".LSEH_${name}_${func}_${num}"; + } + + sub _check_in_proc { + die "Missing .seh_startproc directive" unless %info; + } + + sub _check_not_in_proc { + die "Missing .seh_endproc directive" if %info; + } + + sub _startproc { + _check_not_in_proc(); + if ($current_function->{abi} eq "svr4") { + die "SEH directives can only be used with \@abi-omnipotent"; + } + + my $info_label = _new_unwind_label("info"); + my $start_label = _new_unwind_label("begin"); + %info = ( + # info_label is the label of the function's entry in .xdata. + info_label => $info_label, + # start_label is the start of the function. + start_label => $start_label, + # endprolog is the label of the last unwind code in the function. + endprolog => $start_label, + # unwind_codes contains the textual representation of the + # unwind codes in the function so far. + unwind_codes => "", + # num_codes is the number of 16-bit words in unwind_codes. + num_codes => 0, + # frame_reg is the number of the frame register, or zero if + # there is none. + frame_reg => 0, + # frame_offset is the offset into the fixed part of the stack that + # the frame register points into. + frame_offset => 0, + # has_offset is whether directives taking an offset have + # been used. This is used to check that such directives + # come after the fixed portion of the stack frame is established. + has_offset => 0, + # has_nonpushreg is whether directives other than + # .seh_pushreg have been used. This is used to check that + # .seh_pushreg directives are first. + has_nonpushreg => 0, + ); + return $start_label; + } + + sub _add_unwind_code { + my ($op, $value, @extra) = @_; + _check_in_proc(); + if ($op != $UWOP_PUSH_NONVOL) { + $info{has_nonpushreg} = 1; + } elsif ($info{has_nonpushreg}) { + die ".seh_pushreg directives must appear first in the prolog"; + } + + my $label = _new_unwind_label("prolog"); + # Encode an UNWIND_CODE structure. See + # https://learn.microsoft.com/en-us/cpp/build/exception-handling-x64?view=msvc-170#struct-unwind_code + my $encoded = $op | ($value << 4); + my $codes = <<____; + .byte $label-$info{start_label} + .byte $encoded +____ + # Some opcodes need additional values to encode themselves. + foreach (@extra) { + $codes .= "\t.value\t$_\n"; + } + + $info{num_codes} += 1 + scalar(@extra); + # Unwind codes are listed in reverse order. + $info{unwind_codes} = $codes . $info{unwind_codes}; + # Track the label of the last unwind code. It implicitly is the end of + # the prolog. MASM has an endprolog directive, but it seems to be + # unnecessary. + $info{endprolog} = $label; + return $label; + } + + sub _updating_fixed_allocation { + _check_in_proc(); + if ($info{frame_reg} != 0) { + # Windows documentation does not explicitly forbid .seh_allocstack + # after .seh_setframe, but it appears to have no effect. Offsets are + # still relative to the fixed allocation when the frame register was + # established. + die "fixed allocation may not be increased after .seh_setframe"; + } + if ($info{has_offset}) { + # Windows documentation does not explicitly forbid .seh_savereg + # before .seh_allocstack, but it does not work very well. Offsets + # are relative to the top of the final fixed allocation, not where + # RSP currently is. + die "directives with an offset must come after the fixed allocation is established."; + } + } + + sub _endproc { + _check_in_proc(); + if ($info{num_codes} == 0) { + # If a Windows function has no directives (i.e. it doesn't touch the + # stack), it is a leaf function and is not expected to appear in + # .pdata or .xdata. + die ".seh_endproc found with no unwind codes"; + } + + my $end_label = _new_unwind_label("end"); + # Encode a RUNTIME_FUNCTION. See + # https://learn.microsoft.com/en-us/cpp/build/exception-handling-x64?view=msvc-170#struct-runtime_function + $pdata .= <<____; + .rva $info{start_label} + .rva $end_label + .rva $info{info_label} + +____ + + # Encode an UNWIND_INFO. See + # https://learn.microsoft.com/en-us/cpp/build/exception-handling-x64?view=msvc-170#struct-unwind_info + my $frame_encoded = $info{frame_reg} | (($info{frame_offset} / 16) << 4); + $xdata .= <<____; +$info{info_label}: + .byte 1 # version 1, no flags + .byte $info{endprolog}-$info{start_label} + .byte $info{num_codes} + .byte $frame_encoded +$info{unwind_codes} +____ + + %info = (); + return $end_label; + } + + sub re { + my ($class, $line) = @_; + if ($$line =~ s/^\s*\.seh_(\w+)\s*//) { + my $dir = $1; + if (!$win64) { + $$line = ""; + return; + } + + my $label; + SWITCH: for ($dir) { + /^startproc$/ && do { + $label = _startproc(); + last; + }; + /^pushreg$/ && do { + $$line =~ /^(%\w+)\s*$/ or die "could not parse .seh_$dir"; + my $reg_num = $UWOP_REG_TO_NUMBER{$1} or die "unknown register $1"; + _updating_fixed_allocation(); + $label = _add_unwind_code($UWOP_PUSH_NONVOL, $reg_num); + last; + }; + /^allocstack$/ && do { + my $num = eval($$line); + if ($num <= 0 || $num % 8 != 0) { + die "invalid stack allocation: $num"; + } + _updating_fixed_allocation(); + if ($num <= 128) { + $label = _add_unwind_code($UWOP_ALLOC_SMALL, ($num - 8) / 8); + } elsif ($num < 512 * 1024) { + $label = _add_unwind_code($UWOP_ALLOC_LARGE, 0, $num / 8); + } elsif ($num < 4 * 1024 * 1024 * 1024) { + $label = _add_unwind_code($UWOP_ALLOC_LARGE, 1, $num >> 16, $num & 0xffff); + } else { + die "stack allocation too large: $num" + } + last; + }; + /^setframe$/ && do { + if ($info{frame_reg} != 0) { + die "duplicate .seh_setframe directive"; + } + if ($info{has_offset}) { + die "directives with with an offset must come after .seh_setframe."; + } + $$line =~ /(%\w+)\s*,\s*(.+)/ or die "could not parse .seh_$dir"; + my $reg_num = $UWOP_REG_TO_NUMBER{$1} or die "unknown register $1"; + my $offset = eval($2); + if ($offset < 0 || $offset % 16 != 0 || $offset > 240) { + die "invalid offset: $offset"; + } + $info{frame_reg} = $reg_num; + $info{frame_offset} = $offset; + $label = _add_unwind_code($UWOP_SET_FPREG, 0); + last; + }; + /^savereg$/ && do { + $$line =~ /(%\w+)\s*,\s*(.+)/ or die "could not parse .seh_$dir"; + my $reg_num = $UWOP_REG_TO_NUMBER{$1} or die "unknown register $1"; + my $offset = eval($2); + if ($offset < 0 || $offset % 8 != 0) { + die "invalid offset: $offset"; + } + if ($offset < 8 * 65536) { + $label = _add_unwind_code($UWOP_SAVE_NONVOL, $reg_num, $offset / 8); + } else { + $label = _add_unwind_code($UWOP_SAVE_NONVOL_FAR, $reg_num, $offset >> 16, $offset & 0xffff); + } + $info{has_offset} = 1; + last; + }; + /^savexmm128$/ && do { + $$line =~ /%xmm(\d+)\s*,\s*(.+)/ or die "could not parse .seh_$dir"; + my $reg_num = $1; + my $offset = eval($2); + if ($offset < 0 || $offset % 16 != 0) { + die "invalid offset: $offset"; + } + if ($offset < 16 * 65536) { + $label = _add_unwind_code($UWOP_SAVE_XMM128, $reg_num, $offset / 16); + } else { + $label = _add_unwind_code($UWOP_SAVE_XMM128_FAR, $reg_num, $offset >> 16, $offset & 0xffff); + } + $info{has_offset} = 1; + last; + }; + /^endproc$/ && do { + $label = _endproc(); + last; + }; + die "unknown SEH directive .seh_$dir"; + } + + # All SEH directives compile to labels inline. The other data is + # emitted later. + $$line = ""; + $label .= ":"; + return label->re(\$label); + } + } + + sub pdata_and_xdata { + return "" unless $win64; + + my $ret = ""; + if ($pdata ne "") { + $ret .= <<____; +.section .pdata +.align 4 +$pdata +____ + } + if ($xdata ne "") { + $ret .= <<____; +.section .xdata +.align 4 +$xdata +____ + } + return $ret; + } +} { package directive; # pick up directives, which start with . + my %sections; + sub nasm_section { + my ($name, $qualifiers) = @_; + my $ret = "section\t$name"; + if (exists $sections{$name}) { + # Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392701. Only + # emit section qualifiers the first time a section is referenced. + # For all subsequent references, require the qualifiers match and + # omit them. + # + # See also https://crbug.com/1422018 and b/270643835. + my $old = $sections{$name}; + die "Inconsistent qualifiers: $qualifiers vs $old" if ($qualifiers ne "" && $qualifiers ne $old); + } else { + $sections{$name} = $qualifiers; + if ($qualifiers ne "") { + $ret .= " $qualifiers"; + } + } + return $ret; + } sub re { my ($class, $line) = @_; my $self = {}; my $ret; my $dir; - # chain-call to cfi_directive + # chain-call to cfi_directive and seh_directive. $ret = cfi_directive->re($line) and return $ret; + $ret = seh_directive->re($line) and return $ret; if ($$line =~ /^\s*(\.\w+)/) { bless $self,$class; @@ -787,6 +1127,9 @@ $self->{value} = ".p2align\t" . (log($$line)/log(2)); } elsif ($dir eq ".section") { $current_segment=$$line; + if (!$elf && $current_segment eq ".rodata") { + if ($flavour eq "macosx") { $self->{value} = ".section\t__DATA,__const"; } + } if (!$elf && $current_segment eq ".init") { if ($flavour eq "macosx") { $self->{value} = ".mod_init_func"; } elsif ($flavour eq "mingw64") { $self->{value} = ".section\t.ctors"; } @@ -814,7 +1157,7 @@ SWITCH: for ($dir) { /\.text/ && do { my $v=undef; if ($nasm) { - $v="section .text code align=64\n"; + $v=nasm_section(".text", "code align=64")."\n"; } else { $v="$current_segment\tENDS\n" if ($current_segment); $current_segment = ".text\$"; @@ -827,7 +1170,7 @@ }; /\.data/ && do { my $v=undef; if ($nasm) { - $v="section .data data align=8\n"; + $v=nasm_section(".data", "data align=8")."\n"; } else { $v="$current_segment\tENDS\n" if ($current_segment); $current_segment = "_DATA"; @@ -839,18 +1182,20 @@ /\.section/ && do { my $v=undef; $$line =~ s/([^,]*).*/$1/; $$line = ".CRT\$XCU" if ($$line eq ".init"); + $$line = ".rdata" if ($$line eq ".rodata"); if ($nasm) { - $v="section $$line"; - if ($$line=~/\.([px])data/) { - $v.=" rdata align="; - $v.=$1 eq "p"? 4 : 8; + my $qualifiers = ""; + if ($$line=~/\.([prx])data/) { + $qualifiers = "rdata align="; + $qualifiers .= $1 eq "p"? 4 : 8; } elsif ($$line=~/\.CRT\$/i) { - $v.=" rdata align=8"; + $qualifiers = "rdata align=8"; } + $v = nasm_section($$line, $qualifiers); } else { $v="$current_segment\tENDS\n" if ($current_segment); $v.="$$line\tSEGMENT"; - if ($$line=~/\.([px])data/) { + if ($$line=~/\.([prx])data/) { $v.=" READONLY"; $v.=" ALIGN(".($1 eq "p" ? 4 : 8).")" if ($masm>=$masmref); } elsif ($$line=~/\.CRT\$/i) { @@ -908,11 +1253,11 @@ map(s/(0b[0-1]+)/oct($1)/eig,@str); map(s/0x([0-9a-f]+)/0$1h/ig,@str) if ($masm); while ($#str>15) { - $self->{value}.="DB\t" + $self->{value}.="\tDB\t" .join(",",@str[0..15])."\n"; foreach (0..15) { shift @str; } } - $self->{value}.="DB\t" + $self->{value}.="\tDB\t" .join(",",@str) if (@str); last; }; @@ -1136,7 +1481,7 @@ ######################################################################## { - my $comment = "#"; + my $comment = "//"; $comment = ";" if ($masm || $nasm); print <<___; $comment This file is generated from a similarly-named Perl script in the BoringSSL @@ -1146,11 +1491,16 @@ } if ($nasm) { + die "unknown target" unless ($win64); print <<___; +\%ifidn __OUTPUT_FORMAT__, win64 default rel -%define XMMWORD -%define YMMWORD -%define ZMMWORD +\%define XMMWORD +\%define YMMWORD +\%define ZMMWORD +\%define _CET_ENDBR + +\%include "ring_core_generated/prefix_symbols_nasm.inc" ___ } elsif ($masm) { print <<___; @@ -1159,19 +1509,25 @@ } if ($gas) { - print <<___; -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif + my $target; + if ($elf) { + # The "elf" target is really ELF with SysV ABI, but every ELF platform + # uses the SysV ABI. + $target = "defined(__ELF__)"; + } elsif ($apple) { + $target = "defined(__APPLE__)"; + } else { + die "unknown target: $flavour"; + } + print <<___; +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && $target ___ } -while(defined(my $line=<>)) { - +sub process_line { + my $line = shift; $line =~ s|\R$||; # Better chomp if ($nasm) { @@ -1251,13 +1607,30 @@ print $line,"\n"; } +while(defined(my $line=<>)) { + process_line($line); +} +foreach my $line (split(/\n/, seh_directive->pdata_and_xdata())) { + process_line($line); +} + print "\n$current_segment\tENDS\n" if ($current_segment && $masm); -print "END\n" if ($masm); -print "#endif\n" if ($gas); -# See https://www.airs.com/blog/archives/518. -print ".section\t.note.GNU-stack,\"\",\@progbits\n" if ($elf); +if ($masm) { + print "END\n"; +} elsif ($gas) { + print "#endif\n"; +} elsif ($nasm) { + print <<___; +\%else +; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 +ret +\%endif +___ +} else { + die "unknown assembler"; +} -close STDOUT or die "error closing STDOUT"; +close STDOUT or die "error closing STDOUT: $!"; ################################################# # Cross-reference x86_64 ABI "card" diff -Nru temporalio-1.3.0/vendor/ring/crypto/perlasm/x86asm.pl temporalio-1.3.0/vendor/ring/crypto/perlasm/x86asm.pl --- temporalio-1.3.0/vendor/ring/crypto/perlasm/x86asm.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/perlasm/x86asm.pl 2023-10-30 19:40:00.000000000 +0000 @@ -33,6 +33,26 @@ &generic($opcode,@_) or die "undefined subroutine \&$AUTOLOAD"; } +# record_function_hit(int) writes a byte with value one to the given offset of +# |BORINGSSL_function_hit|, but only if BORINGSSL_DISPATCH_TEST is defined. +# This is used in impl_dispatch_test.cc to test whether the expected assembly +# functions are triggered by high-level API calls. +sub ::record_function_hit +{ my($index)=@_; + &preprocessor_ifdef("BORINGSSL_DISPATCH_TEST"); + &push("ebx"); + &push("edx"); + &call(&label("pic")); + &set_label("pic"); + &blindpop("ebx"); + &lea("ebx",&DWP("BORINGSSL_function_hit+$index"."-".&label("pic"),"ebx")); + &mov("edx", 1); + &movb(&BP(0, "ebx"), "dl"); + &pop("edx"); + &pop("ebx"); + &preprocessor_endif(); +} + sub ::emit { my $opcode=shift; @@ -255,7 +275,7 @@ sub ::asm_finish { &file_end(); - my $comment = "#"; + my $comment = "//"; $comment = ";" if ($win32); print <<___; $comment This file is generated from a similarly-named Perl script in the BoringSSL @@ -264,22 +284,36 @@ ___ if ($win32) { print <<___ unless $masm; -%ifdef BORINGSSL_PREFIX -%include "boringssl_prefix_symbols_nasm.inc" -%endif +\%include "ring_core_generated/prefix_symbols_nasm.inc" +\%ifidn __OUTPUT_FORMAT__, win32 +___ + print @out; + print <<___ unless $masm; +\%else +; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 +ret +\%endif ___ } else { + my $target; + if ($elf) { + $target = "defined(__ELF__)"; + } elsif ($macosx) { + $target = "defined(__APPLE__)"; + } else { + die "unknown target"; + } + + print <<___; +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && $target +___ + print @out; print <<___; -#if defined(__i386__) -#if defined(BORINGSSL_PREFIX) -#include -#endif +#endif // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && $target ___ } - print @out; - print "#endif\n" unless ($win32); - # See https://www.airs.com/blog/archives/518. - print ".section\t.note.GNU-stack,\"\",\@progbits\n" if ($elf); } sub ::asm_init diff -Nru temporalio-1.3.0/vendor/ring/crypto/perlasm/x86gas.pl temporalio-1.3.0/vendor/ring/crypto/perlasm/x86gas.pl --- temporalio-1.3.0/vendor/ring/crypto/perlasm/x86gas.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/perlasm/x86gas.pl 2023-10-30 19:40:00.000000000 +0000 @@ -170,8 +170,8 @@ { push(@out,"$non_lazy_ptr{$i}:\n.indirect_symbol\t$i\n.long\t0\n"); } } } - if (0 && grep {/\b${nmdecor}GFp_ia32cap_P\b/i} @out) { - my $tmp=".comm\t${nmdecor}GFp_ia32cap_P,16"; + if (0 && grep {/\b${nmdecor}OPENSSL_ia32cap_P\b/i} @out) { + my $tmp=".comm\t${nmdecor}OPENSSL_ia32cap_P,16"; if ($::macosx) { push (@out,"$tmp,2\n"); } elsif ($::elf) { push (@out,"$tmp,4\n"); } else { push (@out,"$tmp\n"); } @@ -208,7 +208,7 @@ &::mov($dst,&::DWP("$indirect-$reflabel",$base)); $non_lazy_ptr{"$nmdecor$sym"}=$indirect; } - elsif ($sym eq "GFp_ia32cap_P" && $::elf>0) + elsif ($sym eq "OPENSSL_ia32cap_P" && $::elf>0) { &::lea($dst,&::DWP("$sym-$reflabel",$base)); } else { &::lea($dst,&::DWP("_GLOBAL_OFFSET_TABLE_+[.-$reflabel]", @@ -265,6 +265,14 @@ sub ::dataseg { push(@out,".data\n"); } +sub ::preprocessor_ifdef +{ my($define)=@_; + push(@out,"#ifdef ${define}\n"); +} + +sub ::preprocessor_endif +{ push(@out,"#endif\n"); } + *::hidden = sub { push(@out,".hidden\t$nmdecor$_[0]\n"); } if ($::elf); 1; diff -Nru temporalio-1.3.0/vendor/ring/crypto/perlasm/x86nasm.pl temporalio-1.3.0/vendor/ring/crypto/perlasm/x86nasm.pl --- temporalio-1.3.0/vendor/ring/crypto/perlasm/x86nasm.pl 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/perlasm/x86nasm.pl 2023-10-30 19:40:00.000000000 +0000 @@ -123,13 +123,13 @@ } sub ::file_end -{ if (grep {/\b${nmdecor}GFp_ia32cap_P\b/i} @out) +{ if (grep {/\b${nmdecor}OPENSSL_ia32cap_P\b/i} @out) { my $comm=<<___; ${drdecor}segment .bss -${drdecor}common ${nmdecor}GFp_ia32cap_P 16 +${drdecor}common ${nmdecor}OPENSSL_ia32cap_P 16 ___ - # comment out GFp_ia32cap_P declarations - grep {s/(^extern\s+${nmdecor}GFp_ia32cap_P)/\;$1/} @out; + # comment out OPENSSL_ia32cap_P declarations + grep {s/(^extern\s+${nmdecor}OPENSSL_ia32cap_P)/\;$1/} @out; push (@out,$comm) } push (@out,$initseg) if ($initseg); @@ -183,4 +183,12 @@ push(@out,"%endif\n"); } +sub ::preprocessor_ifdef +{ my($define)=@_; + push(@out,"%ifdef ${define}\n"); +} + +sub ::preprocessor_endif +{ push(@out,"%endif\n"); } + 1; diff -Nru temporalio-1.3.0/vendor/ring/crypto/poly1305/internal.h temporalio-1.3.0/vendor/ring/crypto/poly1305/internal.h --- temporalio-1.3.0/vendor/ring/crypto/poly1305/internal.h 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/poly1305/internal.h 2023-10-30 19:40:00.000000000 +0000 @@ -15,8 +15,8 @@ #ifndef OPENSSL_HEADER_POLY1305_INTERNAL_H #define OPENSSL_HEADER_POLY1305_INTERNAL_H -#include -#include +#include +#include #if defined(OPENSSL_ARM) && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_APPLE) #define OPENSSL_POLY1305_NEON diff -Nru temporalio-1.3.0/vendor/ring/crypto/poly1305/poly1305_arm_asm.S temporalio-1.3.0/vendor/ring/crypto/poly1305/poly1305_arm_asm.S --- temporalio-1.3.0/vendor/ring/crypto/poly1305/poly1305_arm_asm.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/poly1305/poly1305_arm_asm.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,17 +1,9 @@ -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__arm__) && !defined(OPENSSL_NO_ASM) && !defined(__APPLE__) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_ARM) && defined(__ELF__) #pragma GCC diagnostic ignored "-Wlanguage-extension-token" -#if defined(BORINGSSL_PREFIX) -#include -#endif - # This implementation was taken from the public domain, neon2 version in # SUPERCOP by D. J. Bernstein and Peter Schwabe. @@ -165,10 +157,10 @@ # qhasm: qpushenter crypto_onetimeauth_poly1305_neon2_blocks .align 4 -.global GFp_poly1305_neon2_blocks -.hidden GFp_poly1305_neon2_blocks -.type GFp_poly1305_neon2_blocks STT_FUNC -GFp_poly1305_neon2_blocks: +.global openssl_poly1305_neon2_blocks +.hidden openssl_poly1305_neon2_blocks +.type openssl_poly1305_neon2_blocks STT_FUNC +openssl_poly1305_neon2_blocks: vpush {q4,q5,q6,q7} mov r12,sp sub sp,sp,#192 @@ -1624,10 +1616,10 @@ # qhasm: enter crypto_onetimeauth_poly1305_neon2_addmulmod .align 2 -.global GFp_poly1305_neon2_addmulmod -.hidden GFp_poly1305_neon2_addmulmod -.type GFp_poly1305_neon2_addmulmod STT_FUNC -GFp_poly1305_neon2_addmulmod: +.global openssl_poly1305_neon2_addmulmod +.hidden openssl_poly1305_neon2_addmulmod +.type openssl_poly1305_neon2_addmulmod STT_FUNC +openssl_poly1305_neon2_addmulmod: sub sp,sp,#0 # qhasm: 2x mask = 0xffffffff @@ -2024,8 +2016,4 @@ add sp,sp,#0 bx lr -#endif /* __arm__ && !OPENSSL_NO_ASM && !__APPLE__ */ - -#if defined(__ELF__) -.section .note.GNU-stack,"",%progbits -#endif +#endif /* !OPENSSL_NO_ASM && OPENSSL_ARM && __ELF__ */ diff -Nru temporalio-1.3.0/vendor/ring/crypto/poly1305/poly1305_arm.c temporalio-1.3.0/vendor/ring/crypto/poly1305/poly1305_arm.c --- temporalio-1.3.0/vendor/ring/crypto/poly1305/poly1305_arm.c 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/poly1305/poly1305_arm.c 2023-10-30 19:40:00.000000000 +0000 @@ -15,7 +15,7 @@ // This implementation was taken from the public domain, neon2 version in // SUPERCOP by D. J. Bernstein and Peter Schwabe. -#include +#include #include "internal.h" #include "../internal.h" @@ -30,8 +30,8 @@ uint32_t v[12]; // for alignment; only using 10 } fe1305x2; -#define addmulmod GFp_poly1305_neon2_addmulmod -#define blocks GFp_poly1305_neon2_blocks +#define addmulmod openssl_poly1305_neon2_addmulmod +#define blocks openssl_poly1305_neon2_blocks extern void addmulmod(fe1305x2 *r, const fe1305x2 *x, const fe1305x2 *y, const fe1305x2 *c); @@ -104,13 +104,13 @@ r->v[8] = y4; } -static void store32(uint8_t out[4], uint32_t v) { GFp_memcpy(out, &v, 4); } +static void store32(uint8_t out[4], uint32_t v) { OPENSSL_memcpy(out, &v, 4); } // load32 exists to avoid breaking strict aliasing rules in // fe1305x2_frombytearray. static uint32_t load32(const uint8_t t[4]) { uint32_t tmp; - GFp_memcpy(&tmp, t, sizeof(tmp)); + OPENSSL_memcpy(&tmp, t, sizeof(tmp)); return tmp; } @@ -184,10 +184,11 @@ uint8_t key[16]; }; -OPENSSL_STATIC_ASSERT(sizeof(struct poly1305_state_st) <= sizeof(poly1305_state), - "poly1305_state isn't large enough to hold aligned poly1305_state_st"); +OPENSSL_STATIC_ASSERT( + sizeof(struct poly1305_state_st) + 63 <= sizeof(poly1305_state), + "poly1305_state isn't large enough to hold aligned poly1305_state_st."); -void GFp_poly1305_init_neon(poly1305_state *state, const uint8_t key[32]) { +void CRYPTO_poly1305_init_neon(poly1305_state *state, const uint8_t key[32]) { struct poly1305_state_st *st = (struct poly1305_state_st *)(state); fe1305x2 *const r = (fe1305x2 *)(st->data + (15 & (-(int)st->data))); fe1305x2 *const h = r + 1; @@ -207,12 +208,12 @@ addmulmod(precomp, r, r, &zero); // precompute r^2 addmulmod(precomp + 1, precomp, precomp, &zero); // precompute r^4 - GFp_memcpy(st->key, key + 16, 16); + OPENSSL_memcpy(st->key, key + 16, 16); st->buf_used = 0; } -void GFp_poly1305_update_neon(poly1305_state *state, const uint8_t *in, - size_t in_len) { +void CRYPTO_poly1305_update_neon(poly1305_state *state, const uint8_t *in, + size_t in_len) { struct poly1305_state_st *st = (struct poly1305_state_st *)(state); fe1305x2 *const r = (fe1305x2 *)(st->data + (15 & (-(int)st->data))); fe1305x2 *const h = r + 1; @@ -259,7 +260,7 @@ } } -void GFp_poly1305_finish_neon(poly1305_state *state, uint8_t mac[16]) { +void CRYPTO_poly1305_finish_neon(poly1305_state *state, uint8_t mac[16]) { struct poly1305_state_st *st = (struct poly1305_state_st *)(state); fe1305x2 *const r = (fe1305x2 *)(st->data + (15 & (-(int)st->data))); fe1305x2 *const h = r + 1; diff -Nru temporalio-1.3.0/vendor/ring/crypto/poly1305/poly1305.c temporalio-1.3.0/vendor/ring/crypto/poly1305/poly1305.c --- temporalio-1.3.0/vendor/ring/crypto/poly1305/poly1305.c 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/poly1305/poly1305.c 2023-10-30 19:40:00.000000000 +0000 @@ -16,7 +16,7 @@ // (https://github.com/floodyberry/poly1305-donna) and released as public // domain. -#include +#include #include "internal.h" #include "../internal.h" @@ -24,22 +24,11 @@ #if !defined(BORINGSSL_HAS_UINT128) || !defined(OPENSSL_X86_64) -#if defined(__GNUC__) +#if defined(__GNUC__) || defined(__clang__) #pragma GCC diagnostic ignored "-Wsign-conversion" #pragma GCC diagnostic ignored "-Wconversion" #endif -// We can assume little-endian. -static uint32_t U8TO32_LE(const uint8_t *m) { - uint32_t r; - GFp_memcpy(&r, m, sizeof(r)); - return r; -} - -static void U32TO8_LE(uint8_t *m, uint32_t v) { - GFp_memcpy(m, &v, sizeof(v)); -} - static uint64_t mul32x32_64(uint32_t a, uint32_t b) { return (uint64_t)a * b; } struct poly1305_state_st { @@ -51,8 +40,9 @@ uint8_t key[16]; }; -OPENSSL_STATIC_ASSERT(sizeof(struct poly1305_state_st) <= sizeof(poly1305_state), - "poly1305_state isn't large enough to hold aligned poly1305_state_st"); +OPENSSL_STATIC_ASSERT( + sizeof(struct poly1305_state_st) + 63 <= sizeof(poly1305_state), + "poly1305_state isn't large enough to hold aligned poly1305_state_st"); static inline struct poly1305_state_st *poly1305_aligned_state( poly1305_state *state) { @@ -77,10 +67,10 @@ } poly1305_donna_16bytes: - t0 = U8TO32_LE(in); - t1 = U8TO32_LE(in + 4); - t2 = U8TO32_LE(in + 8); - t3 = U8TO32_LE(in + 12); + t0 = CRYPTO_load_u32_le(in); + t1 = CRYPTO_load_u32_le(in + 4); + t2 = CRYPTO_load_u32_le(in + 8); + t3 = CRYPTO_load_u32_le(in + 12); in += 16; len -= 16; @@ -143,10 +133,10 @@ } len = 0; - t0 = U8TO32_LE(mp + 0); - t1 = U8TO32_LE(mp + 4); - t2 = U8TO32_LE(mp + 8); - t3 = U8TO32_LE(mp + 12); + t0 = CRYPTO_load_u32_le(mp + 0); + t1 = CRYPTO_load_u32_le(mp + 4); + t2 = CRYPTO_load_u32_le(mp + 8); + t3 = CRYPTO_load_u32_le(mp + 12); state->h0 += t0 & 0x3ffffff; state->h1 += ((((uint64_t)t1 << 32) | t0) >> 26) & 0x3ffffff; @@ -157,14 +147,14 @@ goto poly1305_donna_mul; } -void GFp_poly1305_init(poly1305_state *statep, const uint8_t key[32]) { +void CRYPTO_poly1305_init(poly1305_state *statep, const uint8_t key[32]) { struct poly1305_state_st *state = poly1305_aligned_state(statep); uint32_t t0, t1, t2, t3; - t0 = U8TO32_LE(key + 0); - t1 = U8TO32_LE(key + 4); - t2 = U8TO32_LE(key + 8); - t3 = U8TO32_LE(key + 12); + t0 = CRYPTO_load_u32_le(key + 0); + t1 = CRYPTO_load_u32_le(key + 4); + t2 = CRYPTO_load_u32_le(key + 8); + t3 = CRYPTO_load_u32_le(key + 12); // precompute multipliers state->r0 = t0 & 0x3ffffff; @@ -193,13 +183,18 @@ state->h4 = 0; state->buf_used = 0; - GFp_memcpy(state->key, key + 16, sizeof(state->key)); + OPENSSL_memcpy(state->key, key + 16, sizeof(state->key)); } -void GFp_poly1305_update(poly1305_state *statep, const uint8_t *in, - size_t in_len) { +void CRYPTO_poly1305_update(poly1305_state *statep, const uint8_t *in, + size_t in_len) { struct poly1305_state_st *state = poly1305_aligned_state(statep); + // Work around a C language bug. See https://crbug.com/1019588. + if (in_len == 0) { + return; + } + if (state->buf_used) { size_t todo = 16 - state->buf_used; if (todo > in_len) { @@ -233,9 +228,8 @@ } } -void GFp_poly1305_finish(poly1305_state *statep, uint8_t mac[16]) { +void CRYPTO_poly1305_finish(poly1305_state *statep, uint8_t mac[16]) { struct poly1305_state_st *state = poly1305_aligned_state(statep); - uint64_t f0, f1, f2, f3; uint32_t g0, g1, g2, g3, g4; uint32_t b, nb; @@ -281,21 +275,22 @@ state->h3 = (state->h3 & nb) | (g3 & b); state->h4 = (state->h4 & nb) | (g4 & b); - f0 = ((state->h0) | (state->h1 << 26)) + (uint64_t)U8TO32_LE(&state->key[0]); - f1 = ((state->h1 >> 6) | (state->h2 << 20)) + - (uint64_t)U8TO32_LE(&state->key[4]); - f2 = ((state->h2 >> 12) | (state->h3 << 14)) + - (uint64_t)U8TO32_LE(&state->key[8]); - f3 = ((state->h3 >> 18) | (state->h4 << 8)) + - (uint64_t)U8TO32_LE(&state->key[12]); + uint64_t f0 = ((state->h0) | (state->h1 << 26)) + + (uint64_t)CRYPTO_load_u32_le(&state->key[0]); + uint64_t f1 = ((state->h1 >> 6) | (state->h2 << 20)) + + (uint64_t)CRYPTO_load_u32_le(&state->key[4]); + uint64_t f2 = ((state->h2 >> 12) | (state->h3 << 14)) + + (uint64_t)CRYPTO_load_u32_le(&state->key[8]); + uint64_t f3 = ((state->h3 >> 18) | (state->h4 << 8)) + + (uint64_t)CRYPTO_load_u32_le(&state->key[12]); - U32TO8_LE(&mac[0], (uint32_t)f0); + CRYPTO_store_u32_le(&mac[0], (uint32_t)f0); f1 += (f0 >> 32); - U32TO8_LE(&mac[4], (uint32_t)f1); + CRYPTO_store_u32_le(&mac[4], (uint32_t)f1); f2 += (f1 >> 32); - U32TO8_LE(&mac[8], (uint32_t)f2); + CRYPTO_store_u32_le(&mac[8], (uint32_t)f2); f3 += (f2 >> 32); - U32TO8_LE(&mac[12], (uint32_t)f3); + CRYPTO_store_u32_le(&mac[12], (uint32_t)f3); } #endif // !BORINGSSL_HAS_UINT128 || !OPENSSL_X86_64 diff -Nru temporalio-1.3.0/vendor/ring/crypto/poly1305/poly1305_vec.c temporalio-1.3.0/vendor/ring/crypto/poly1305/poly1305_vec.c --- temporalio-1.3.0/vendor/ring/crypto/poly1305/poly1305_vec.c 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/crypto/poly1305/poly1305_vec.c 2023-10-30 19:40:00.000000000 +0000 @@ -18,7 +18,7 @@ // http://cr.yp.to/papers.html#neoncrypto. Unrolled to 2 powers, i.e. 64 byte // block size -#include +#include #include "internal.h" #include "../internal.h" @@ -31,22 +31,6 @@ #include -static uint32_t load_u32_le(const uint8_t in[4]) { - uint32_t ret; - GFp_memcpy(&ret, in, 4); - return ret; -} - -static uint64_t load_u64_le(const uint8_t in[8]) { - uint64_t ret; - GFp_memcpy(&ret, in, 8); - return ret; -} - -static void store_u64_le(uint8_t out[8], uint64_t v) { - GFp_memcpy(out, &v, 8); -} - typedef __m128i xmmi; static const alignas(16) uint32_t poly1305_x64_sse2_message_mask[4] = { @@ -96,8 +80,9 @@ } poly1305_state_internal; /* 448 bytes total + 63 bytes for alignment = 511 bytes raw */ -OPENSSL_STATIC_ASSERT(sizeof(poly1305_state_internal) <= sizeof(poly1305_state), - "poly1305_state isn't large enough to hold aligned poly1305_state_internal"); +OPENSSL_STATIC_ASSERT( + sizeof(struct poly1305_state_internal_t) + 63 <= sizeof(poly1305_state), + "poly1305_state isn't large enough to hold aligned poly1305_state_internal_t"); static inline poly1305_state_internal *poly1305_aligned_state( poly1305_state *state) { @@ -109,15 +94,15 @@ return (a < b) ? a : b; } -void GFp_poly1305_init(poly1305_state *state, const uint8_t key[32]) { +void CRYPTO_poly1305_init(poly1305_state *state, const uint8_t key[32]) { poly1305_state_internal *st = poly1305_aligned_state(state); poly1305_power *p; uint64_t r0, r1, r2; uint64_t t0, t1; // clamp key - t0 = load_u64_le(key + 0); - t1 = load_u64_le(key + 8); + t0 = CRYPTO_load_u64_le(key + 0); + t1 = CRYPTO_load_u64_le(key + 8); r0 = t0 & 0xffc0fffffff; t0 >>= 44; t0 |= t1 << 20; @@ -135,10 +120,10 @@ p->R22.d[3] = (uint32_t)(r2 >> 32); // store pad - p->R23.d[1] = load_u32_le(key + 16); - p->R23.d[3] = load_u32_le(key + 20); - p->R24.d[1] = load_u32_le(key + 24); - p->R24.d[3] = load_u32_le(key + 28); + p->R23.d[1] = CRYPTO_load_u32_le(key + 16); + p->R23.d[3] = CRYPTO_load_u32_le(key + 20); + p->R24.d[1] = CRYPTO_load_u32_le(key + 24); + p->R24.d[3] = CRYPTO_load_u32_le(key + 28); // H = 0 st->H[0] = _mm_setzero_si128(); @@ -677,8 +662,8 @@ return consumed; } -void GFp_poly1305_update(poly1305_state *state, const uint8_t *m, - size_t bytes) { +void CRYPTO_poly1305_update(poly1305_state *state, const uint8_t *m, + size_t bytes) { poly1305_state_internal *st = poly1305_aligned_state(state); size_t want; @@ -695,7 +680,7 @@ bytes -= 32; } else { want = poly1305_min(32 - st->leftover, bytes); - GFp_memcpy(st->buffer + st->leftover, m, want); + OPENSSL_memcpy(st->buffer + st->leftover, m, want); bytes -= want; m += want; st->leftover += want; @@ -711,7 +696,7 @@ // handle leftover if (st->leftover) { want = poly1305_min(64 - st->leftover, bytes); - GFp_memcpy(st->buffer + st->leftover, m, want); + OPENSSL_memcpy(st->buffer + st->leftover, m, want); bytes -= want; m += want; st->leftover += want; @@ -731,12 +716,12 @@ } if (bytes) { - GFp_memcpy(st->buffer + st->leftover, m, bytes); + OPENSSL_memcpy(st->buffer + st->leftover, m, bytes); st->leftover += bytes; } } -void GFp_poly1305_finish(poly1305_state *state, uint8_t mac[16]) { +void CRYPTO_poly1305_finish(poly1305_state *state, uint8_t mac[16]) { poly1305_state_internal *st = poly1305_aligned_state(state); size_t leftover = st->leftover; uint8_t *m = st->buffer; @@ -770,8 +755,8 @@ } poly1305_donna_atleast16bytes: - t0 = load_u64_le(m + 0); - t1 = load_u64_le(m + 8); + t0 = CRYPTO_load_u64_le(m + 0); + t1 = CRYPTO_load_u64_le(m + 8); h0 += t0 & 0xfffffffffff; t0 = shr128_pair(t1, t0, 44); h1 += t0 & 0xfffffffffff; @@ -807,11 +792,11 @@ } m[leftover++] = 1; - GFp_memset(m + leftover, 0, 16 - leftover); + OPENSSL_memset(m + leftover, 0, 16 - leftover); leftover = 16; - t0 = load_u64_le(m + 0); - t1 = load_u64_le(m + 8); + t0 = CRYPTO_load_u64_le(m + 0); + t1 = CRYPTO_load_u64_le(m + 8); h0 += t0 & 0xfffffffffff; t0 = shr128_pair(t1, t0, 44); h1 += t0 & 0xfffffffffff; @@ -857,8 +842,8 @@ t1 = (t1 >> 24); h2 += (t1)+c; - store_u64_le(mac + 0, ((h0) | (h1 << 44))); - store_u64_le(mac + 8, ((h1 >> 20) | (h2 << 24))); + CRYPTO_store_u64_le(mac + 0, ((h0) | (h1 << 44))); + CRYPTO_store_u64_le(mac + 8, ((h1 >> 20) | (h2 << 24))); } #endif // BORINGSSL_HAS_UINT128 && OPENSSL_X86_64 diff -Nru temporalio-1.3.0/vendor/ring/doc/link-to-readme.md temporalio-1.3.0/vendor/ring/doc/link-to-readme.md --- temporalio-1.3.0/vendor/ring/doc/link-to-readme.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/doc/link-to-readme.md 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -See https://github.com/briansmith/ring. diff -Nru temporalio-1.3.0/vendor/ring/include/GFp/aes.h temporalio-1.3.0/vendor/ring/include/GFp/aes.h --- temporalio-1.3.0/vendor/ring/include/GFp/aes.h 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/include/GFp/aes.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2002-2006 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== */ - -#ifndef OPENSSL_HEADER_AES_H -#define OPENSSL_HEADER_AES_H - -#include - -// Raw AES functions. - - -// AES_MAXNR is the maximum number of AES rounds. -#define AES_MAXNR 14 - -// aes_key_st should be an opaque type, but EVP requires that the size be -// known. -struct aes_key_st { - uint32_t rd_key[4 * (AES_MAXNR + 1)]; - unsigned rounds; -}; -typedef struct aes_key_st AES_KEY; - -#endif // OPENSSL_HEADER_AES_H diff -Nru temporalio-1.3.0/vendor/ring/include/GFp/arm_arch.h temporalio-1.3.0/vendor/ring/include/GFp/arm_arch.h --- temporalio-1.3.0/vendor/ring/include/GFp/arm_arch.h 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/include/GFp/arm_arch.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,177 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). */ - -#ifndef OPENSSL_HEADER_ARM_ARCH_H -#define OPENSSL_HEADER_ARM_ARCH_H - -#if !defined(__ARM_ARCH__) -# if defined(__CC_ARM) -# define __ARM_ARCH__ __TARGET_ARCH_ARM -# if defined(__BIG_ENDIAN) -# define __ARMEB__ -# else -# define __ARMEL__ -# endif -# elif defined(__GNUC__) -# if defined(__aarch64__) -# define __ARM_ARCH__ 8 -# if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ -# define __ARMEB__ -# else -# define __ARMEL__ -# endif - // Why doesn't gcc define __ARM_ARCH__? Instead it defines - // bunch of below macros. See all_architectires[] table in - // gcc/config/arm/arm.c. On a side note it defines - // __ARMEL__/__ARMEB__ for little-/big-endian. -# elif defined(__ARM_ARCH) -# define __ARM_ARCH__ __ARM_ARCH -# elif defined(__ARM_ARCH_8A__) -# define __ARM_ARCH__ 8 -# elif defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \ - defined(__ARM_ARCH_7R__)|| defined(__ARM_ARCH_7M__) || \ - defined(__ARM_ARCH_7EM__) -# define __ARM_ARCH__ 7 -# elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || \ - defined(__ARM_ARCH_6K__)|| defined(__ARM_ARCH_6M__) || \ - defined(__ARM_ARCH_6Z__)|| defined(__ARM_ARCH_6ZK__) || \ - defined(__ARM_ARCH_6T2__) -# define __ARM_ARCH__ 6 -# elif defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || \ - defined(__ARM_ARCH_5E__)|| defined(__ARM_ARCH_5TE__) || \ - defined(__ARM_ARCH_5TEJ__) -# define __ARM_ARCH__ 5 -# elif defined(__ARM_ARCH_4__) || defined(__ARM_ARCH_4T__) -# define __ARM_ARCH__ 4 -# else -# error "unsupported ARM architecture" -# endif -# endif -#endif - -// Even when building for 32-bit ARM, support for aarch64 crypto instructions -// will be included. -#if !defined(__ARM_MAX_ARCH__) -#define __ARM_MAX_ARCH__ 8 -#endif - -// ARMV7_NEON is true when a NEON unit is present in the current CPU. -#define ARMV7_NEON (1 << 0) - -// ARMV8_SHA256 indicates support for hardware SHA-256 instructions. -#define ARMV8_SHA256 (1 << 4) - -#if defined(__ASSEMBLER__) - -#if defined(__GNUC__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wundef" -#endif - -// Support macros for -// - Armv8.3-A Pointer Authentication and -// - Armv8.5-A Branch Target Identification -// features which require emitting a .note.gnu.property section with the -// appropriate architecture-dependent feature bits set. -// Read more: "ELF for the Arm® 64-bit Architecture" - -#if defined(__ARM_FEATURE_BTI_DEFAULT) && __ARM_FEATURE_BTI_DEFAULT == 1 -#define GNU_PROPERTY_AARCH64_BTI (1 << 0) // Has Branch Target Identification -#define AARCH64_VALID_CALL_TARGET hint #34 // BTI 'c' -#else -#define GNU_PROPERTY_AARCH64_BTI 0 // No Branch Target Identification -#define AARCH64_VALID_CALL_TARGET -#endif - -#if defined(__ARM_FEATURE_PAC_DEFAULT) && \ - (__ARM_FEATURE_PAC_DEFAULT & 1) == 1 // Signed with A-key -#define GNU_PROPERTY_AARCH64_POINTER_AUTH \ - (1 << 1) // Has Pointer Authentication -#define AARCH64_SIGN_LINK_REGISTER hint #25 // PACIASP -#define AARCH64_VALIDATE_LINK_REGISTER hint #29 // AUTIASP -#elif defined(__ARM_FEATURE_PAC_DEFAULT) && \ - (__ARM_FEATURE_PAC_DEFAULT & 2) == 2 // Signed with B-key -#define GNU_PROPERTY_AARCH64_POINTER_AUTH \ - (1 << 1) // Has Pointer Authentication -#define AARCH64_SIGN_LINK_REGISTER hint #27 // PACIBSP -#define AARCH64_VALIDATE_LINK_REGISTER hint #31 // AUTIBSP -#else -#define GNU_PROPERTY_AARCH64_POINTER_AUTH 0 // No Pointer Authentication -#if GNU_PROPERTY_AARCH64_BTI != 0 -#define AARCH64_SIGN_LINK_REGISTER AARCH64_VALID_CALL_TARGET -#else -#define AARCH64_SIGN_LINK_REGISTER -#endif -#define AARCH64_VALIDATE_LINK_REGISTER -#endif - -#if GNU_PROPERTY_AARCH64_POINTER_AUTH != 0 || GNU_PROPERTY_AARCH64_BTI != 0 -.pushsection .note.gnu.property, "a"; -.balign 8; -.long 4; -.long 0x10; -.long 0x5; -.asciz "GNU"; -.long 0xc0000000; /* GNU_PROPERTY_AARCH64_FEATURE_1_AND */ -.long 4; -.long (GNU_PROPERTY_AARCH64_POINTER_AUTH | GNU_PROPERTY_AARCH64_BTI); -.long 0; -.popsection; -#endif - -#if defined(__GNUC__) -#pragma GCC diagnostic pop -#endif - -#endif /* defined __ASSEMBLER__ */ - -#endif // OPENSSL_HEADER_ARM_ARCH_H diff -Nru temporalio-1.3.0/vendor/ring/include/GFp/base.h temporalio-1.3.0/vendor/ring/include/GFp/base.h --- temporalio-1.3.0/vendor/ring/include/GFp/base.h 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/include/GFp/base.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,121 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). */ - -#ifndef OPENSSL_HEADER_BASE_H -#define OPENSSL_HEADER_BASE_H - - -// This file should be the first included by all BoringSSL headers. - -#include - -#if defined(_MSC_VER) && !defined(__clang__) -#pragma warning(push, 3) -#endif - -#include -#include - -#if defined(_MSC_VER) && !defined(__clang__) -#pragma warning(pop) -#endif - -#if defined(__x86_64) || defined(_M_AMD64) || defined(_M_X64) -#define OPENSSL_64_BIT -#define OPENSSL_X86_64 -#elif defined(__x86) || defined(__i386) || defined(__i386__) || defined(_M_IX86) -#define OPENSSL_32_BIT -#define OPENSSL_X86 -#elif defined(__AARCH64EL__) || defined(_M_ARM64) -#define OPENSSL_64_BIT -#define OPENSSL_AARCH64 -#elif defined(__ARMEL__) || defined(_M_ARM) -#define OPENSSL_32_BIT -#define OPENSSL_ARM -#elif defined(__MIPSEL__) && !defined(__LP64__) -#define OPENSSL_32_BIT -#define OPENSSL_MIPS -#elif defined(__MIPSEL__) && defined(__LP64__) -#define OPENSSL_64_BIT -#define OPENSSL_MIPS64 -#elif defined(__wasm__) -#define OPENSSL_32_BIT -#else -// Note BoringSSL only supports standard 32-bit and 64-bit two's-complement, -// little-endian architectures. Functions will not produce the correct answer -// on other systems. Run the crypto_test binary, notably -// crypto/compiler_test.cc, before adding a new architecture. -#error "Unknown target CPU" -#endif - -#if defined(__APPLE__) -#define OPENSSL_APPLE -#endif - -#if defined(_WIN32) -#define OPENSSL_WINDOWS -#endif - -// *ring* doesn't support the `BORINGSSL_SHARED_LIBRARY` configuration, so -// the default (usually "hidden") visibility is always used, even for exported -// items. -#define OPENSSL_EXPORT - -// `ring::c` would need to be customized on any platform where these assertions -// fail. Keep in sync with `ring::c`. -OPENSSL_STATIC_ASSERT(sizeof(int32_t) == sizeof(int), "int isn't 32 bits."); -OPENSSL_STATIC_ASSERT(sizeof(uint32_t) == sizeof(unsigned int), "unsigned int isn't 32 bits."); -OPENSSL_STATIC_ASSERT(sizeof(size_t) == sizeof(uintptr_t), "uintptr_t and size_t differ."); -OPENSSL_STATIC_ASSERT(sizeof(size_t) <= sizeof(uint64_t), "size_t is larger than uint64_t."); -OPENSSL_STATIC_ASSERT(sizeof(size_t) >= sizeof(uint32_t), "size_t is smaller than uint32_t."); - -#endif // OPENSSL_HEADER_BASE_H diff -Nru temporalio-1.3.0/vendor/ring/include/GFp/check.h temporalio-1.3.0/vendor/ring/include/GFp/check.h --- temporalio-1.3.0/vendor/ring/include/GFp/check.h 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/include/GFp/check.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -// Copyright 2020 Brian Smith. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY -// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION -// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -#ifndef RING_CHECK_H -#define RING_CHECK_H - -// |debug_assert_nonsecret| is like |assert| and should be used (only) when the -// assertion does not have any potential to leak a secret. |NDEBUG| controls this -// exactly like |assert|. It is emulated when there is no assert.h to make -// cross-building easier. -// -// When reviewing uses of |debug_assert_nonsecret|, verify that the check -// really does not have potential to leak a secret. - -#if !defined(GFp_NOSTDLIBINC) -# include -# define debug_assert_nonsecret(x) assert(x) -#else -# if !defined(NDEBUG) -# define debug_assert_nonsecret(x) ((x) ? ((void)0) : __builtin_trap()) -# else -# define debug_assert_nonsecret(x) ((void)0) -# endif -#endif - -// |dev_assert_secret| is like |assert| and should be used (only) when the -// assertion operates on secret data in a way that has the potential to leak -// the secret. |dev_assert_secret| can only be enabled by changing the |#if 0| -// here to |#if 1| (or equivalent) when |NDEBUG| is not defined. This is not -// controlled only through |NDEBUG| so that such checks do not leak into debug -// builds that may make it into production use. -// -// When reviewing uses of |dev_assert_secret|, verify that the check really -// does have the potential to leak a secret. -#if 0 // DO NOT COMMIT CHANGES TO THIS LINE. -# define dev_assert_secret debug_assert_nonsecret -#else -# define dev_assert_secret(x) ((void)0) -#endif - -#endif // RING_CHECK_H diff -Nru temporalio-1.3.0/vendor/ring/include/GFp/cpu.h temporalio-1.3.0/vendor/ring/include/GFp/cpu.h --- temporalio-1.3.0/vendor/ring/include/GFp/cpu.h 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/include/GFp/cpu.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,92 +0,0 @@ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). */ - -#ifndef OPENSSL_HEADER_CPU_H -#define OPENSSL_HEADER_CPU_H - -#include - -// Runtime CPU feature support - - -#if defined(OPENSSL_X86) || defined(OPENSSL_X86_64) -// GFp_ia32cap_P contains the Intel CPUID bits when running on an x86 or -// x86-64 system. -// -// Index 0: -// EDX for CPUID where EAX = 1 -// Bit 20 is always zero -// Bit 28 is adjusted to reflect whether the data cache is shared between -// multiple logical cores -// Bit 30 is used to indicate an Intel CPU -// Index 1: -// ECX for CPUID where EAX = 1 -// Bit 11 is used to indicate AMD XOP support, not SDBG -// Index 2: -// EBX for CPUID where EAX = 7 -// Index 3: -// ECX for CPUID where EAX = 7 -// -// Note: the CPUID bits are pre-adjusted for the OSXSAVE bit and the YMM and XMM -// bits in XCR0, so it is not necessary to check those. -extern uint32_t GFp_ia32cap_P[4]; -#endif - -#endif // OPENSSL_HEADER_CPU_H diff -Nru temporalio-1.3.0/vendor/ring/include/GFp/mem.h temporalio-1.3.0/vendor/ring/include/GFp/mem.h --- temporalio-1.3.0/vendor/ring/include/GFp/mem.h 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/include/GFp/mem.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] */ - -#ifndef OPENSSL_HEADER_MEM_H -#define OPENSSL_HEADER_MEM_H - -#include - -// GFp_memcmp returns zero iff the |len| bytes at |a| and |b| are equal. It -// takes an amount of time dependent on |len|, but independent of the contents -// of |a| and |b|. Unlike memcmp, it cannot be used to put elements into a -// defined order as the return value when a != b is undefined, other than to be -// non-zero. -OPENSSL_EXPORT int GFp_memcmp(const uint8_t *a, const uint8_t *b, size_t len); - -#endif // OPENSSL_HEADER_MEM_H diff -Nru temporalio-1.3.0/vendor/ring/include/GFp/poly1305.h temporalio-1.3.0/vendor/ring/include/GFp/poly1305.h --- temporalio-1.3.0/vendor/ring/include/GFp/poly1305.h 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/include/GFp/poly1305.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -/* Copyright (c) 2014, Google Inc. - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ - -#ifndef OPENSSL_HEADER_POLY1305_H -#define OPENSSL_HEADER_POLY1305_H - -#include - -// Keep in sync with `poly1305_state` in poly1305.rs. -typedef uint8_t poly1305_state[512]; - -#endif // OPENSSL_HEADER_POLY1305_H diff -Nru temporalio-1.3.0/vendor/ring/include/GFp/type_check.h temporalio-1.3.0/vendor/ring/include/GFp/type_check.h --- temporalio-1.3.0/vendor/ring/include/GFp/type_check.h 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/include/GFp/type_check.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,75 +0,0 @@ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] */ - -#ifndef OPENSSL_HEADER_TYPE_CHECK_H -#define OPENSSL_HEADER_TYPE_CHECK_H - -#include - - -#if defined(__cplusplus) || (defined(_MSC_VER) && !defined(__clang__)) -// In C++ and non-clang MSVC, |static_assert| is a keyword. -#define OPENSSL_STATIC_ASSERT(cond, msg) static_assert(cond, msg) -#else -// C11 defines the |_Static_assert| keyword and the |static_assert| macro in -// assert.h. While the former is available at all versions in Clang and GCC, the -// later depends on libc and, in glibc, depends on being built in C11 mode. We -// do not require this, for now, so use |_Static_assert| directly. -#define OPENSSL_STATIC_ASSERT(cond, msg) _Static_assert(cond, msg) -#endif - - -#endif // OPENSSL_HEADER_TYPE_CHECK_H diff -Nru temporalio-1.3.0/vendor/ring/include/ring-core/aes.h temporalio-1.3.0/vendor/ring/include/ring-core/aes.h --- temporalio-1.3.0/vendor/ring/include/ring-core/aes.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/include/ring-core/aes.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,68 @@ +/* ==================================================================== + * Copyright (c) 2002-2006 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== */ + +#ifndef OPENSSL_HEADER_AES_H +#define OPENSSL_HEADER_AES_H + +#include + +// Raw AES functions. + + +// AES_MAXNR is the maximum number of AES rounds. +#define AES_MAXNR 14 + +// aes_key_st should be an opaque type, but EVP requires that the size be +// known. +struct aes_key_st { + uint32_t rd_key[4 * (AES_MAXNR + 1)]; + unsigned rounds; +}; +typedef struct aes_key_st AES_KEY; + +#endif // OPENSSL_HEADER_AES_H diff -Nru temporalio-1.3.0/vendor/ring/include/ring-core/arm_arch.h temporalio-1.3.0/vendor/ring/include/ring-core/arm_arch.h --- temporalio-1.3.0/vendor/ring/include/ring-core/arm_arch.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/include/ring-core/arm_arch.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,99 @@ +/* ==================================================================== + * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). */ + +#ifndef OPENSSL_HEADER_ARM_ARCH_H +#define OPENSSL_HEADER_ARM_ARCH_H + +#include + +// arm_arch.h contains symbols used by ARM assembly, and the C code that calls +// it. It is included as a public header to simplify the build, but is not +// intended for external use. + +#if defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64) + +// ARMV7_NEON is true when a NEON unit is present in the current CPU. +#define ARMV7_NEON (1 << 0) + +// ARMV8_SHA256 indicates support for hardware SHA-256 instructions. +#define ARMV8_SHA256 (1 << 4) + +// ARMV8_PMULL indicates support for carryless multiplication. +#define ARMV8_PMULL (1 << 5) + +// ARMV8_SHA512 indicates support for hardware SHA-512 instructions. +#define ARMV8_SHA512 (1 << 6) + +#if defined(__ASSEMBLER__) + +// We require the ARM assembler provide |__ARM_ARCH| from Arm C Language +// Extensions (ACLE). This is supported in GCC 4.8+ and Clang 3.2+. MSVC does +// not implement ACLE, but we require Clang's assembler on Windows. +#if !defined(__ARM_ARCH) +#error "ARM assembler must define __ARM_ARCH" +#endif + +// __ARM_ARCH__ is used by OpenSSL assembly to determine the minimum target ARM +// version. +// +// TODO(davidben): Switch the assembly to use |__ARM_ARCH| directly. +#define __ARM_ARCH__ __ARM_ARCH + +// Even when building for 32-bit ARM, support for aarch64 crypto instructions +// will be included. +#define __ARM_MAX_ARCH__ 8 + +#endif // __ASSEMBLER__ + +#endif // ARM || AARCH64 + +#endif // OPENSSL_HEADER_ARM_ARCH_H diff -Nru temporalio-1.3.0/vendor/ring/include/ring-core/asm_base.h temporalio-1.3.0/vendor/ring/include/ring-core/asm_base.h --- temporalio-1.3.0/vendor/ring/include/ring-core/asm_base.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/include/ring-core/asm_base.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,205 @@ +/* Copyright (c) 2023, Google Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ + +#ifndef OPENSSL_HEADER_ASM_BASE_H +#define OPENSSL_HEADER_ASM_BASE_H + +#include + + +// This header contains symbols and common sections used by assembly files. It +// is included as a public header to simplify the build, but is not intended for +// external use. +// +// Every assembly file must include this header. Some linker features require +// all object files to be tagged with some section metadata. This header file, +// when included in assembly, adds that metadata. It also makes defines like +// |OPENSSL_X86_64| available and includes the prefixing macros. +// +// Including this header in an assembly file imples: +// +// - The file does not require an executable stack. +// +// - The file, on aarch64, uses the macros defined below to be compatible with +// BTI and PAC. +// +// - The file, on x86_64, requires the program to be compatible with Intel IBT +// and SHSTK + +#if defined(__ASSEMBLER__) + +#include + +#if defined(__ELF__) +// Every ELF object file, even empty ones, should disable executable stacks. See +// https://www.airs.com/blog/archives/518. +.pushsection .note.GNU-stack, "", %progbits +.popsection +#endif + +#if defined(__CET__) && defined(OPENSSL_X86_64) +// Clang and GCC define __CET__ and provide when they support Intel's +// Indirect Branch Tracking. +// https://lpc.events/event/7/contributions/729/attachments/496/903/CET-LPC-2020.pdf +// +// cet.h defines _CET_ENDBR which is used to mark function entry points for IBT. +// and adds the assembly marker. The value of _CET_ENDBR is made dependant on if +// '-fcf-protection' is passed to the compiler. _CET_ENDBR is only required when +// the function is the target of an indirect jump, but BoringSSL chooses to mark +// all assembly entry points because it is easier, and allows BoringSSL's ABI +// tester to call the assembly entry points via an indirect jump. +#include +#else +#define _CET_ENDBR +#endif + +#if defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64) + +// We require the ARM assembler provide |__ARM_ARCH| from Arm C Language +// Extensions (ACLE). This is supported in GCC 4.8+ and Clang 3.2+. MSVC does +// not implement ACLE, but we require Clang's assembler on Windows. +#if !defined(__ARM_ARCH) +#error "ARM assembler must define __ARM_ARCH" +#endif + +// __ARM_ARCH__ is used by OpenSSL assembly to determine the minimum target ARM +// version. +// +// TODO(davidben): Switch the assembly to use |__ARM_ARCH| directly. +#define __ARM_ARCH__ __ARM_ARCH + +// Even when building for 32-bit ARM, support for aarch64 crypto instructions +// will be included. +#define __ARM_MAX_ARCH__ 8 + +// Support macros for +// - Armv8.3-A Pointer Authentication and +// - Armv8.5-A Branch Target Identification +// features which require emitting a .note.gnu.property section with the +// appropriate architecture-dependent feature bits set. +// +// |AARCH64_SIGN_LINK_REGISTER| and |AARCH64_VALIDATE_LINK_REGISTER| expand to +// PACIxSP and AUTIxSP, respectively. |AARCH64_SIGN_LINK_REGISTER| should be +// used immediately before saving the LR register (x30) to the stack. +// |AARCH64_VALIDATE_LINK_REGISTER| should be used immediately after restoring +// it. Note |AARCH64_SIGN_LINK_REGISTER|'s modifications to LR must be undone +// with |AARCH64_VALIDATE_LINK_REGISTER| before RET. The SP register must also +// have the same value at the two points. For example: +// +// .global f +// f: +// AARCH64_SIGN_LINK_REGISTER +// stp x29, x30, [sp, #-96]! +// mov x29, sp +// ... +// ldp x29, x30, [sp], #96 +// AARCH64_VALIDATE_LINK_REGISTER +// ret +// +// |AARCH64_VALID_CALL_TARGET| expands to BTI 'c'. Either it, or +// |AARCH64_SIGN_LINK_REGISTER|, must be used at every point that may be an +// indirect call target. In particular, all symbols exported from a file must +// begin with one of these macros. For example, a leaf function that does not +// save LR can instead use |AARCH64_VALID_CALL_TARGET|: +// +// .globl return_zero +// return_zero: +// AARCH64_VALID_CALL_TARGET +// mov x0, #0 +// ret +// +// A non-leaf function which does not immediately save LR may need both macros +// because |AARCH64_SIGN_LINK_REGISTER| appears late. For example, the function +// may jump to an alternate implementation before setting up the stack: +// +// .globl with_early_jump +// with_early_jump: +// AARCH64_VALID_CALL_TARGET +// cmp x0, #128 +// b.lt .Lwith_early_jump_128 +// AARCH64_SIGN_LINK_REGISTER +// stp x29, x30, [sp, #-96]! +// mov x29, sp +// ... +// ldp x29, x30, [sp], #96 +// AARCH64_VALIDATE_LINK_REGISTER +// ret +// +// .Lwith_early_jump_128: +// ... +// ret +// +// These annotations are only required with indirect calls. Private symbols that +// are only the target of direct calls do not require annotations. Also note +// that |AARCH64_VALID_CALL_TARGET| is only valid for indirect calls (BLR), not +// indirect jumps (BR). Indirect jumps in assembly are currently not supported +// and would require a macro for BTI 'j'. +// +// Although not necessary, it is safe to use these macros in 32-bit ARM +// assembly. This may be used to simplify dual 32-bit and 64-bit files. +// +// References: +// - "ELF for the Arm® 64-bit Architecture" +// https://github.com/ARM-software/abi-aa/blob/master/aaelf64/aaelf64.rst +// - "Providing protection for complex software" +// https://developer.arm.com/architectures/learn-the-architecture/providing-protection-for-complex-software + +#if defined(__ARM_FEATURE_BTI_DEFAULT) && __ARM_FEATURE_BTI_DEFAULT == 1 +#define GNU_PROPERTY_AARCH64_BTI (1 << 0) // Has Branch Target Identification +#define AARCH64_VALID_CALL_TARGET hint #34 // BTI 'c' +#else +#define GNU_PROPERTY_AARCH64_BTI 0 // No Branch Target Identification +#define AARCH64_VALID_CALL_TARGET +#endif + +#if defined(__ARM_FEATURE_PAC_DEFAULT) && \ + (__ARM_FEATURE_PAC_DEFAULT & 1) == 1 // Signed with A-key +#define GNU_PROPERTY_AARCH64_POINTER_AUTH \ + (1 << 1) // Has Pointer Authentication +#define AARCH64_SIGN_LINK_REGISTER hint #25 // PACIASP +#define AARCH64_VALIDATE_LINK_REGISTER hint #29 // AUTIASP +#elif defined(__ARM_FEATURE_PAC_DEFAULT) && \ + (__ARM_FEATURE_PAC_DEFAULT & 2) == 2 // Signed with B-key +#define GNU_PROPERTY_AARCH64_POINTER_AUTH \ + (1 << 1) // Has Pointer Authentication +#define AARCH64_SIGN_LINK_REGISTER hint #27 // PACIBSP +#define AARCH64_VALIDATE_LINK_REGISTER hint #31 // AUTIBSP +#else +#define GNU_PROPERTY_AARCH64_POINTER_AUTH 0 // No Pointer Authentication +#if GNU_PROPERTY_AARCH64_BTI != 0 +#define AARCH64_SIGN_LINK_REGISTER AARCH64_VALID_CALL_TARGET +#else +#define AARCH64_SIGN_LINK_REGISTER +#endif +#define AARCH64_VALIDATE_LINK_REGISTER +#endif + +#if GNU_PROPERTY_AARCH64_POINTER_AUTH != 0 || GNU_PROPERTY_AARCH64_BTI != 0 +.pushsection .note.gnu.property, "a"; +.balign 8; +.long 4; +.long 0x10; +.long 0x5; +.asciz "GNU"; +.long 0xc0000000; /* GNU_PROPERTY_AARCH64_FEATURE_1_AND */ +.long 4; +.long (GNU_PROPERTY_AARCH64_POINTER_AUTH | GNU_PROPERTY_AARCH64_BTI); +.long 0; +.popsection; +#endif +#endif // ARM || AARCH64 + +#endif // __ASSEMBLER__ + +#endif // OPENSSL_HEADER_ASM_BASE_H diff -Nru temporalio-1.3.0/vendor/ring/include/ring-core/base.h temporalio-1.3.0/vendor/ring/include/ring-core/base.h --- temporalio-1.3.0/vendor/ring/include/ring-core/base.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/include/ring-core/base.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,104 @@ +/* ==================================================================== + * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). */ + +#ifndef OPENSSL_HEADER_BASE_H +#define OPENSSL_HEADER_BASE_H + + +// This file should be the first included by all BoringSSL headers. + +#if defined(_MSC_VER) && !defined(__clang__) +#pragma warning(push, 3) +#endif + +#include +#include + +#if defined(_MSC_VER) && !defined(__clang__) +#pragma warning(pop) +#endif + +#if defined(__APPLE__) +#include +#endif + +#include // IWYU pragma: export + +#include + +#include + +#if defined(__APPLE__) +// Note |TARGET_OS_MAC| is set for all Apple OS variants. |TARGET_OS_OSX| +// targets macOS specifically. +#if defined(TARGET_OS_OSX) && TARGET_OS_OSX +#define OPENSSL_MACOS +#endif +#if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE +#define OPENSSL_IOS +#endif +#endif + +// *ring* doesn't support the `BORINGSSL_SHARED_LIBRARY` configuration, so +// the default (usually "hidden") visibility is always used, even for exported +// items. +#define OPENSSL_EXPORT + +// `ring::c` would need to be customized on any platform where these assertions +// fail. Keep in sync with `ring::c`. +OPENSSL_STATIC_ASSERT(sizeof(int32_t) == sizeof(int), "int isn't 32 bits."); +OPENSSL_STATIC_ASSERT(sizeof(uint32_t) == sizeof(unsigned int), "unsigned int isn't 32 bits."); +OPENSSL_STATIC_ASSERT(sizeof(size_t) == sizeof(uintptr_t), "uintptr_t and size_t differ."); +OPENSSL_STATIC_ASSERT(sizeof(size_t) <= sizeof(uint64_t), "size_t is larger than uint64_t."); +OPENSSL_STATIC_ASSERT(sizeof(size_t) >= sizeof(uint32_t), "size_t is smaller than uint32_t."); + +#endif // OPENSSL_HEADER_BASE_H diff -Nru temporalio-1.3.0/vendor/ring/include/ring-core/check.h temporalio-1.3.0/vendor/ring/include/ring-core/check.h --- temporalio-1.3.0/vendor/ring/include/ring-core/check.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/include/ring-core/check.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,52 @@ +// Copyright 2020 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +#ifndef RING_CHECK_H +#define RING_CHECK_H + +// |debug_assert_nonsecret| is like |assert| and should be used (only) when the +// assertion does not have any potential to leak a secret. |NDEBUG| controls this +// exactly like |assert|. It is emulated when there is no assert.h to make +// cross-building easier. +// +// When reviewing uses of |debug_assert_nonsecret|, verify that the check +// really does not have potential to leak a secret. + +#if !defined(RING_CORE_NOSTDLIBINC) +# include +# define debug_assert_nonsecret(x) assert(x) +#else +# if !defined(NDEBUG) +# define debug_assert_nonsecret(x) ((x) ? ((void)0) : __builtin_trap()) +# else +# define debug_assert_nonsecret(x) ((void)0) +# endif +#endif + +// |dev_assert_secret| is like |assert| and should be used (only) when the +// assertion operates on secret data in a way that has the potential to leak +// the secret. |dev_assert_secret| can only be enabled by changing the |#if 0| +// here to |#if 1| (or equivalent) when |NDEBUG| is not defined. This is not +// controlled only through |NDEBUG| so that such checks do not leak into debug +// builds that may make it into production use. +// +// When reviewing uses of |dev_assert_secret|, verify that the check really +// does have the potential to leak a secret. +#if 0 // DO NOT COMMIT CHANGES TO THIS LINE. +# define dev_assert_secret debug_assert_nonsecret +#else +# define dev_assert_secret(x) ((void)0) +#endif + +#endif // RING_CHECK_H diff -Nru temporalio-1.3.0/vendor/ring/include/ring-core/mem.h temporalio-1.3.0/vendor/ring/include/ring-core/mem.h --- temporalio-1.3.0/vendor/ring/include/ring-core/mem.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/include/ring-core/mem.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,69 @@ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] */ + +#ifndef OPENSSL_HEADER_MEM_H +#define OPENSSL_HEADER_MEM_H + +#include + +// CRYPTO_memcmp returns zero iff the |len| bytes at |a| and |b| are equal. It +// takes an amount of time dependent on |len|, but independent of the contents +// of |a| and |b|. Unlike memcmp, it cannot be used to put elements into a +// defined order as the return value when a != b is undefined, other than to be +// non-zero. +OPENSSL_EXPORT int CRYPTO_memcmp(const void *a, const void *b, size_t len); + +#endif // OPENSSL_HEADER_MEM_H diff -Nru temporalio-1.3.0/vendor/ring/include/ring-core/poly1305.h temporalio-1.3.0/vendor/ring/include/ring-core/poly1305.h --- temporalio-1.3.0/vendor/ring/include/ring-core/poly1305.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/include/ring-core/poly1305.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,23 @@ +/* Copyright (c) 2014, Google Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ + +#ifndef OPENSSL_HEADER_POLY1305_H +#define OPENSSL_HEADER_POLY1305_H + +#include + +// Keep in sync with `poly1305_state` in poly1305.rs. +typedef uint8_t poly1305_state[512]; + +#endif // OPENSSL_HEADER_POLY1305_H diff -Nru temporalio-1.3.0/vendor/ring/include/ring-core/target.h temporalio-1.3.0/vendor/ring/include/ring-core/target.h --- temporalio-1.3.0/vendor/ring/include/ring-core/target.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/include/ring-core/target.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,155 @@ +/* Copyright (c) 2023, Google Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ + +#ifndef OPENSSL_HEADER_TARGET_H +#define OPENSSL_HEADER_TARGET_H + +// Preprocessor symbols that define the target platform. +// +// This file may be included in C, C++, and assembler and must be compatible +// with each environment. It is separated out only to share code between +// and . Prefer to include those headers +// instead. + +#if defined(__x86_64) || defined(_M_AMD64) || defined(_M_X64) +#define OPENSSL_64_BIT +#define OPENSSL_X86_64 +#elif defined(__x86) || defined(__i386) || defined(__i386__) || defined(_M_IX86) +#define OPENSSL_32_BIT +#define OPENSSL_X86 +#elif defined(__AARCH64EL__) || defined(_M_ARM64) +#define OPENSSL_64_BIT +#define OPENSSL_AARCH64 +#elif defined(__ARMEL__) || defined(_M_ARM) +#define OPENSSL_32_BIT +#define OPENSSL_ARM +#elif defined(__loongarch_lp64) +#define OPENSSL_64_BIT +#define OPENSSL_LOONGARCH64 +#elif defined(__MIPSEL__) && !defined(__LP64__) +#define OPENSSL_32_BIT +#define OPENSSL_MIPS +#elif defined(__MIPSEL__) && defined(__LP64__) +#define OPENSSL_64_BIT +#define OPENSSL_MIPS64 +#elif defined(__PPC64__) || defined(__powerpc64__) +#define OPENSSL_64_BIT +#elif (defined(__PPC__) || defined(__powerpc__)) && defined(_BIG_ENDIAN) +#define OPENSSL_32_BIT +#elif defined(__riscv) && __SIZEOF_POINTER__ == 8 +#define OPENSSL_64_BIT +#define OPENSSL_RISCV64 +#elif defined(__s390x__) +#define OPENSSL_64_BIT +#define OPENSSL_S390X +#elif defined(__wasm__) +#define OPENSSL_32_BIT +#else +// Note BoringSSL only supports standard 32-bit and 64-bit two's-complement, +// little-endian architectures. Functions will not produce the correct answer +// on other systems. Run the crypto_test binary, notably +// crypto/compiler_test.cc, before adding a new architecture. +#error "Unknown target CPU" +#endif + +#if defined(__APPLE__) +#define OPENSSL_APPLE +#endif + +#if defined(_WIN32) +#define OPENSSL_WINDOWS +#endif + +// Trusty isn't Linux but currently defines __linux__. As a workaround, we +// exclude it here. +// TODO(b/169780122): Remove this workaround once Trusty no longer defines it. +#if defined(__linux__) && !defined(__TRUSTY__) +#define OPENSSL_LINUX +#endif + +#if defined(__Fuchsia__) +#define OPENSSL_FUCHSIA +#endif + +#if defined(__TRUSTY__) +#define OPENSSL_TRUSTY +#define OPENSSL_NO_POSIX_IO +#define OPENSSL_NO_SOCK +#define OPENSSL_NO_THREADS_CORRUPT_MEMORY_AND_LEAK_SECRETS_IF_THREADED +#endif + +#if defined(OPENSSL_NANOLIBC) +#define OPENSSL_NO_POSIX_IO +#define OPENSSL_NO_SOCK +#define OPENSSL_NO_THREADS_CORRUPT_MEMORY_AND_LEAK_SECRETS_IF_THREADED +#endif + +#if defined(__ANDROID_API__) +#define OPENSSL_ANDROID +#endif + +#if defined(__FreeBSD__) +#define OPENSSL_FREEBSD +#endif + +#if defined(__OpenBSD__) +#define OPENSSL_OPENBSD +#endif + +// BoringSSL requires platform's locking APIs to make internal global state +// thread-safe, including the PRNG. On some single-threaded embedded platforms, +// locking APIs may not exist, so this dependency may be disabled with the +// following build flag. +// +// IMPORTANT: Doing so means the consumer promises the library will never be +// used in any multi-threaded context. It causes BoringSSL to be globally +// thread-unsafe. Setting it inappropriately will subtly and unpredictably +// corrupt memory and leak secret keys. +// +// Do not set this flag on any platform where threads are possible. BoringSSL +// maintainers will not provide support for any consumers that do so. Changes +// which break such unsupported configurations will not be reverted. +#if !defined(OPENSSL_NO_THREADS_CORRUPT_MEMORY_AND_LEAK_SECRETS_IF_THREADED) +#define OPENSSL_THREADS +#endif + +#if defined(BORINGSSL_UNSAFE_FUZZER_MODE) && \ + !defined(BORINGSSL_UNSAFE_DETERMINISTIC_MODE) +#define BORINGSSL_UNSAFE_DETERMINISTIC_MODE +#endif + +#if defined(__has_feature) +#if __has_feature(address_sanitizer) +#define OPENSSL_ASAN +#endif +#if __has_feature(thread_sanitizer) +#define OPENSSL_TSAN +#endif +#if __has_feature(memory_sanitizer) +#define OPENSSL_MSAN +#define OPENSSL_ASM_INCOMPATIBLE +#endif +#if __has_feature(hwaddress_sanitizer) +#define OPENSSL_HWASAN +#endif +#endif + +#if defined(OPENSSL_ASM_INCOMPATIBLE) +#undef OPENSSL_ASM_INCOMPATIBLE +#if !defined(OPENSSL_NO_ASM) +#define OPENSSL_NO_ASM +#endif +#endif // OPENSSL_ASM_INCOMPATIBLE + +#endif // OPENSSL_HEADER_TARGET_H diff -Nru temporalio-1.3.0/vendor/ring/include/ring-core/type_check.h temporalio-1.3.0/vendor/ring/include/ring-core/type_check.h --- temporalio-1.3.0/vendor/ring/include/ring-core/type_check.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/include/ring-core/type_check.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,74 @@ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] */ + +#ifndef OPENSSL_HEADER_TYPE_CHECK_H +#define OPENSSL_HEADER_TYPE_CHECK_H + +#include + + +#if defined(__cplusplus) || (defined(_MSC_VER) && !defined(__clang__)) +// In C++ and non-clang MSVC, |static_assert| is a keyword. +#define OPENSSL_STATIC_ASSERT(cond, msg) static_assert(cond, msg) +#else +// C11 defines the |_Static_assert| keyword and the |static_assert| macro in +// assert.h. While the former is available at all versions in Clang and GCC, the +// later depends on libc and, in glibc, depends on being built in C11 mode. We +// do not require this, for now, so use |_Static_assert| directly. +#define OPENSSL_STATIC_ASSERT(cond, msg) _Static_assert(cond, msg) +#endif + +#endif // OPENSSL_HEADER_TYPE_CHECK_H diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/aesni-gcm-x86_64-elf.S temporalio-1.3.0/vendor/ring/pregenerated/aesni-gcm-x86_64-elf.S --- temporalio-1.3.0/vendor/ring/pregenerated/aesni-gcm-x86_64-elf.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/aesni-gcm-x86_64-elf.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,13 +1,9 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__ELF__) .text .type _aesni_ctr32_ghash_6x,@function @@ -218,7 +214,7 @@ movbeq 0(%r14),%r12 vaesenc %xmm1,%xmm14,%xmm14 vmovups 160-128(%rcx),%xmm1 - cmpl $11,%ebp + cmpl $11,%r10d jb .Lenc_tail vaesenc %xmm15,%xmm9,%xmm9 @@ -302,6 +298,9 @@ vpaddb %xmm2,%xmm1,%xmm0 movq %r13,112+8(%rsp) leaq 96(%rdi),%rdi + + prefetcht0 512(%rdi) + prefetcht0 576(%rdi) vaesenclast %xmm5,%xmm11,%xmm11 vpaddb %xmm2,%xmm0,%xmm5 movq %r12,120+8(%rsp) @@ -314,7 +313,7 @@ vaesenclast %xmm3,%xmm14,%xmm14 vpaddb %xmm2,%xmm7,%xmm3 - addq $0x60,%r10 + addq $0x60,%rax subq $0x6,%rdx jc .L6x_done @@ -337,50 +336,60 @@ vpxor 16+8(%rsp),%xmm8,%xmm8 vpxor %xmm4,%xmm8,%xmm8 - .byte 0xf3,0xc3 + ret .cfi_endproc .size _aesni_ctr32_ghash_6x,.-_aesni_ctr32_ghash_6x -.globl GFp_aesni_gcm_decrypt -.hidden GFp_aesni_gcm_decrypt -.type GFp_aesni_gcm_decrypt,@function +.globl aesni_gcm_decrypt +.hidden aesni_gcm_decrypt +.type aesni_gcm_decrypt,@function .align 32 -GFp_aesni_gcm_decrypt: +aesni_gcm_decrypt: .cfi_startproc - xorq %r10,%r10 + +_CET_ENDBR + xorq %rax,%rax cmpq $0x60,%rdx jb .Lgcm_dec_abort - leaq (%rsp),%rax -.cfi_def_cfa_register %rax - pushq %rbx -.cfi_offset %rbx,-16 pushq %rbp -.cfi_offset %rbp,-24 +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + + movq %rsp,%rbp +.cfi_def_cfa_register %rbp + pushq %rbx +.cfi_offset %rbx,-24 + pushq %r12 .cfi_offset %r12,-32 + pushq %r13 .cfi_offset %r13,-40 + pushq %r14 .cfi_offset %r14,-48 + pushq %r15 .cfi_offset %r15,-56 + vzeroupper + movq 16(%rbp),%r12 vmovdqu (%r8),%xmm1 addq $-128,%rsp movl 12(%r8),%ebx leaq .Lbswap_mask(%rip),%r11 leaq -128(%rcx),%r14 movq $0xf80,%r15 - vmovdqu (%r9),%xmm8 + vmovdqu (%r12),%xmm8 andq $-128,%rsp vmovdqu (%r11),%xmm0 leaq 128(%rcx),%rcx - leaq 32+32(%r9),%r9 - movl 240-128(%rcx),%ebp + leaq 32(%r9),%r9 + movl 240-128(%rcx),%r10d vpshufb %xmm0,%xmm8,%xmm8 andq %r15,%r14 @@ -393,7 +402,7 @@ .Ldec_no_key_aliasing: vmovdqu 80(%rdi),%xmm7 - leaq (%rdi),%r14 + movq %rdi,%r14 vmovdqu 64(%rdi),%xmm4 @@ -406,7 +415,7 @@ vmovdqu 48(%rdi),%xmm5 shrq $4,%rdx - xorq %r10,%r10 + xorq %rax,%rax vmovdqu 32(%rdi),%xmm6 vpshufb %xmm0,%xmm7,%xmm7 vmovdqu 16(%rdi),%xmm2 @@ -424,6 +433,7 @@ call _aesni_ctr32_ghash_6x + movq 16(%rbp),%r12 vmovups %xmm9,-96(%rsi) vmovups %xmm10,-80(%rsi) vmovups %xmm11,-64(%rsi) @@ -432,35 +442,41 @@ vmovups %xmm14,-16(%rsi) vpshufb (%r11),%xmm8,%xmm8 - vmovdqu %xmm8,-64(%r9) + vmovdqu %xmm8,(%r12) vzeroupper - movq -48(%rax),%r15 + leaq -40(%rbp),%rsp +.cfi_def_cfa %rsp, 0x38 + popq %r15 +.cfi_adjust_cfa_offset -8 .cfi_restore %r15 - movq -40(%rax),%r14 + popq %r14 +.cfi_adjust_cfa_offset -8 .cfi_restore %r14 - movq -32(%rax),%r13 + popq %r13 +.cfi_adjust_cfa_offset -8 .cfi_restore %r13 - movq -24(%rax),%r12 + popq %r12 +.cfi_adjust_cfa_offset -8 .cfi_restore %r12 - movq -16(%rax),%rbp -.cfi_restore %rbp - movq -8(%rax),%rbx + popq %rbx +.cfi_adjust_cfa_offset -8 .cfi_restore %rbx - leaq (%rax),%rsp -.cfi_def_cfa_register %rsp + popq %rbp +.cfi_adjust_cfa_offset -8 +.cfi_restore %rbp .Lgcm_dec_abort: - movq %r10,%rax - .byte 0xf3,0xc3 + ret + .cfi_endproc -.size GFp_aesni_gcm_decrypt,.-GFp_aesni_gcm_decrypt +.size aesni_gcm_decrypt,.-aesni_gcm_decrypt .type _aesni_ctr32_6x,@function .align 32 _aesni_ctr32_6x: .cfi_startproc vmovdqu 0-128(%rcx),%xmm4 vmovdqu 32(%r11),%xmm2 - leaq -1(%rbp),%r13 + leaq -1(%r10),%r13 vmovups 16-128(%rcx),%xmm15 leaq 32-128(%rcx),%r12 vpxor %xmm4,%xmm1,%xmm9 @@ -521,7 +537,7 @@ vmovups %xmm14,80(%rsi) leaq 96(%rsi),%rsi - .byte 0xf3,0xc3 + ret .align 32 .Lhandle_ctr32_2: vpshufb %xmm0,%xmm1,%xmm6 @@ -547,13 +563,20 @@ .cfi_endproc .size _aesni_ctr32_6x,.-_aesni_ctr32_6x -.globl GFp_aesni_gcm_encrypt -.hidden GFp_aesni_gcm_encrypt -.type GFp_aesni_gcm_encrypt,@function +.globl aesni_gcm_encrypt +.hidden aesni_gcm_encrypt +.type aesni_gcm_encrypt,@function .align 32 -GFp_aesni_gcm_encrypt: +aesni_gcm_encrypt: .cfi_startproc - xorq %r10,%r10 + +_CET_ENDBR +#ifdef BORINGSSL_DISPATCH_TEST +.extern BORINGSSL_function_hit +.hidden BORINGSSL_function_hit + movb $1,BORINGSSL_function_hit+2(%rip) +#endif + xorq %rax,%rax @@ -561,20 +584,27 @@ cmpq $288,%rdx jb .Lgcm_enc_abort - leaq (%rsp),%rax -.cfi_def_cfa_register %rax - pushq %rbx -.cfi_offset %rbx,-16 pushq %rbp -.cfi_offset %rbp,-24 +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + + movq %rsp,%rbp +.cfi_def_cfa_register %rbp + pushq %rbx +.cfi_offset %rbx,-24 + pushq %r12 .cfi_offset %r12,-32 + pushq %r13 .cfi_offset %r13,-40 + pushq %r14 .cfi_offset %r14,-48 + pushq %r15 .cfi_offset %r15,-56 + vzeroupper vmovdqu (%r8),%xmm1 @@ -586,7 +616,7 @@ leaq 128(%rcx),%rcx vmovdqu (%r11),%xmm0 andq $-128,%rsp - movl 240-128(%rcx),%ebp + movl 240-128(%rcx),%r10d andq %r15,%r14 andq %rsp,%r15 @@ -597,7 +627,7 @@ subq %r15,%rsp .Lenc_no_key_aliasing: - leaq (%rsi),%r14 + movq %rsi,%r14 @@ -625,10 +655,11 @@ call _aesni_ctr32_6x - vmovdqu (%r9),%xmm8 - leaq 32+32(%r9),%r9 + movq 16(%rbp),%r12 + leaq 32(%r9),%r9 + vmovdqu (%r12),%xmm8 subq $12,%rdx - movq $192,%r10 + movq $192,%rax vpshufb %xmm0,%xmm8,%xmm8 call _aesni_ctr32_ghash_6x @@ -804,29 +835,37 @@ vpclmulqdq $0x10,%xmm3,%xmm8,%xmm8 vpxor %xmm7,%xmm2,%xmm2 vpxor %xmm2,%xmm8,%xmm8 + movq 16(%rbp),%r12 vpshufb (%r11),%xmm8,%xmm8 - vmovdqu %xmm8,-64(%r9) + vmovdqu %xmm8,(%r12) vzeroupper - movq -48(%rax),%r15 + leaq -40(%rbp),%rsp +.cfi_def_cfa %rsp, 0x38 + popq %r15 +.cfi_adjust_cfa_offset -8 .cfi_restore %r15 - movq -40(%rax),%r14 + popq %r14 +.cfi_adjust_cfa_offset -8 .cfi_restore %r14 - movq -32(%rax),%r13 + popq %r13 +.cfi_adjust_cfa_offset -8 .cfi_restore %r13 - movq -24(%rax),%r12 + popq %r12 +.cfi_adjust_cfa_offset -8 .cfi_restore %r12 - movq -16(%rax),%rbp -.cfi_restore %rbp - movq -8(%rax),%rbx + popq %rbx +.cfi_adjust_cfa_offset -8 .cfi_restore %rbx - leaq (%rax),%rsp -.cfi_def_cfa_register %rsp + popq %rbp +.cfi_adjust_cfa_offset -8 +.cfi_restore %rbp .Lgcm_enc_abort: - movq %r10,%rax - .byte 0xf3,0xc3 + ret + .cfi_endproc -.size GFp_aesni_gcm_encrypt,.-GFp_aesni_gcm_encrypt +.size aesni_gcm_encrypt,.-aesni_gcm_encrypt +.section .rodata .align 64 .Lbswap_mask: .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -840,5 +879,5 @@ .byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .byte 65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108,101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 64 +.text #endif -.section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/aesni-gcm-x86_64-macosx.S temporalio-1.3.0/vendor/ring/pregenerated/aesni-gcm-x86_64-macosx.S --- temporalio-1.3.0/vendor/ring/pregenerated/aesni-gcm-x86_64-macosx.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/aesni-gcm-x86_64-macosx.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,13 +1,9 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__APPLE__) .text @@ -218,7 +214,7 @@ movbeq 0(%r14),%r12 vaesenc %xmm1,%xmm14,%xmm14 vmovups 160-128(%rcx),%xmm1 - cmpl $11,%ebp + cmpl $11,%r10d jb L$enc_tail vaesenc %xmm15,%xmm9,%xmm9 @@ -302,6 +298,9 @@ vpaddb %xmm2,%xmm1,%xmm0 movq %r13,112+8(%rsp) leaq 96(%rdi),%rdi + + prefetcht0 512(%rdi) + prefetcht0 576(%rdi) vaesenclast %xmm5,%xmm11,%xmm11 vpaddb %xmm2,%xmm0,%xmm5 movq %r12,120+8(%rsp) @@ -314,7 +313,7 @@ vaesenclast %xmm3,%xmm14,%xmm14 vpaddb %xmm2,%xmm7,%xmm3 - addq $0x60,%r10 + addq $0x60,%rax subq $0x6,%rdx jc L$6x_done @@ -337,50 +336,59 @@ vpxor 16+8(%rsp),%xmm8,%xmm8 vpxor %xmm4,%xmm8,%xmm8 - .byte 0xf3,0xc3 + ret -.globl _GFp_aesni_gcm_decrypt -.private_extern _GFp_aesni_gcm_decrypt +.globl _aesni_gcm_decrypt +.private_extern _aesni_gcm_decrypt .p2align 5 -_GFp_aesni_gcm_decrypt: +_aesni_gcm_decrypt: + - xorq %r10,%r10 +_CET_ENDBR + xorq %rax,%rax cmpq $0x60,%rdx jb L$gcm_dec_abort - leaq (%rsp),%rax + pushq %rbp + + + movq %rsp,%rbp pushq %rbx - pushq %rbp pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + vzeroupper + movq 16(%rbp),%r12 vmovdqu (%r8),%xmm1 addq $-128,%rsp movl 12(%r8),%ebx leaq L$bswap_mask(%rip),%r11 leaq -128(%rcx),%r14 movq $0xf80,%r15 - vmovdqu (%r9),%xmm8 + vmovdqu (%r12),%xmm8 andq $-128,%rsp vmovdqu (%r11),%xmm0 leaq 128(%rcx),%rcx - leaq 32+32(%r9),%r9 - movl 240-128(%rcx),%ebp + leaq 32(%r9),%r9 + movl 240-128(%rcx),%r10d vpshufb %xmm0,%xmm8,%xmm8 andq %r15,%r14 @@ -393,7 +401,7 @@ L$dec_no_key_aliasing: vmovdqu 80(%rdi),%xmm7 - leaq (%rdi),%r14 + movq %rdi,%r14 vmovdqu 64(%rdi),%xmm4 @@ -406,7 +414,7 @@ vmovdqu 48(%rdi),%xmm5 shrq $4,%rdx - xorq %r10,%r10 + xorq %rax,%rax vmovdqu 32(%rdi),%xmm6 vpshufb %xmm0,%xmm7,%xmm7 vmovdqu 16(%rdi),%xmm2 @@ -424,6 +432,7 @@ call _aesni_ctr32_ghash_6x + movq 16(%rbp),%r12 vmovups %xmm9,-96(%rsi) vmovups %xmm10,-80(%rsi) vmovups %xmm11,-64(%rsi) @@ -432,26 +441,26 @@ vmovups %xmm14,-16(%rsi) vpshufb (%r11),%xmm8,%xmm8 - vmovdqu %xmm8,-64(%r9) + vmovdqu %xmm8,(%r12) vzeroupper - movq -48(%rax),%r15 + leaq -40(%rbp),%rsp - movq -40(%rax),%r14 + popq %r15 - movq -32(%rax),%r13 + popq %r14 - movq -24(%rax),%r12 + popq %r13 - movq -16(%rax),%rbp + popq %r12 - movq -8(%rax),%rbx + popq %rbx - leaq (%rax),%rsp + popq %rbp L$gcm_dec_abort: - movq %r10,%rax - .byte 0xf3,0xc3 + ret + @@ -460,7 +469,7 @@ vmovdqu 0-128(%rcx),%xmm4 vmovdqu 32(%r11),%xmm2 - leaq -1(%rbp),%r13 + leaq -1(%r10),%r13 vmovups 16-128(%rcx),%xmm15 leaq 32-128(%rcx),%r12 vpxor %xmm4,%xmm1,%xmm9 @@ -521,7 +530,7 @@ vmovups %xmm14,80(%rsi) leaq 96(%rsi),%rsi - .byte 0xf3,0xc3 + ret .p2align 5 L$handle_ctr32_2: vpshufb %xmm0,%xmm1,%xmm6 @@ -547,13 +556,19 @@ -.globl _GFp_aesni_gcm_encrypt -.private_extern _GFp_aesni_gcm_encrypt +.globl _aesni_gcm_encrypt +.private_extern _aesni_gcm_encrypt .p2align 5 -_GFp_aesni_gcm_encrypt: +_aesni_gcm_encrypt: - xorq %r10,%r10 + +_CET_ENDBR +#ifdef BORINGSSL_DISPATCH_TEST + + movb $1,_BORINGSSL_function_hit+2(%rip) +#endif + xorq %rax,%rax @@ -561,20 +576,26 @@ cmpq $288,%rdx jb L$gcm_enc_abort - leaq (%rsp),%rax + pushq %rbp + + + movq %rsp,%rbp pushq %rbx - pushq %rbp pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + vzeroupper vmovdqu (%r8),%xmm1 @@ -586,7 +607,7 @@ leaq 128(%rcx),%rcx vmovdqu (%r11),%xmm0 andq $-128,%rsp - movl 240-128(%rcx),%ebp + movl 240-128(%rcx),%r10d andq %r15,%r14 andq %rsp,%r15 @@ -597,7 +618,7 @@ subq %r15,%rsp L$enc_no_key_aliasing: - leaq (%rsi),%r14 + movq %rsi,%r14 @@ -625,10 +646,11 @@ call _aesni_ctr32_6x - vmovdqu (%r9),%xmm8 - leaq 32+32(%r9),%r9 + movq 16(%rbp),%r12 + leaq 32(%r9),%r9 + vmovdqu (%r12),%xmm8 subq $12,%rdx - movq $192,%r10 + movq $192,%rax vpshufb %xmm0,%xmm8,%xmm8 call _aesni_ctr32_ghash_6x @@ -804,29 +826,31 @@ vpclmulqdq $0x10,%xmm3,%xmm8,%xmm8 vpxor %xmm7,%xmm2,%xmm2 vpxor %xmm2,%xmm8,%xmm8 + movq 16(%rbp),%r12 vpshufb (%r11),%xmm8,%xmm8 - vmovdqu %xmm8,-64(%r9) + vmovdqu %xmm8,(%r12) vzeroupper - movq -48(%rax),%r15 + leaq -40(%rbp),%rsp - movq -40(%rax),%r14 + popq %r15 - movq -32(%rax),%r13 + popq %r14 - movq -24(%rax),%r12 + popq %r13 - movq -16(%rax),%rbp + popq %r12 - movq -8(%rax),%rbx + popq %rbx - leaq (%rax),%rsp + popq %rbp L$gcm_enc_abort: - movq %r10,%rax - .byte 0xf3,0xc3 + ret + +.section __DATA,__const .p2align 6 L$bswap_mask: .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -840,4 +864,5 @@ .byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .byte 65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108,101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .p2align 6 +.text #endif Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/pregenerated/aesni-gcm-x86_64-nasm.obj and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/pregenerated/aesni-gcm-x86_64-nasm.obj differ diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86_64-elf.S temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86_64-elf.S --- temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86_64-elf.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86_64-elf.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,22 +1,24 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__ELF__) .text -.extern GFp_ia32cap_P -.hidden GFp_ia32cap_P -.globl GFp_aes_hw_encrypt -.hidden GFp_aes_hw_encrypt -.type GFp_aes_hw_encrypt,@function +.extern OPENSSL_ia32cap_P +.hidden OPENSSL_ia32cap_P +.globl aes_hw_encrypt +.hidden aes_hw_encrypt +.type aes_hw_encrypt,@function .align 16 -GFp_aes_hw_encrypt: +aes_hw_encrypt: .cfi_startproc +_CET_ENDBR +#ifdef BORINGSSL_DISPATCH_TEST +.extern BORINGSSL_function_hit +.hidden BORINGSSL_function_hit + movb $1,BORINGSSL_function_hit+1(%rip) +#endif movups (%rdi),%xmm2 movl 240(%rdx),%eax movups (%rdx),%xmm0 @@ -34,9 +36,9 @@ pxor %xmm1,%xmm1 movups %xmm2,(%rsi) pxor %xmm2,%xmm2 - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_aes_hw_encrypt,.-GFp_aes_hw_encrypt +.size aes_hw_encrypt,.-aes_hw_encrypt .type _aesni_encrypt2,@function .align 16 _aesni_encrypt2: @@ -65,7 +67,7 @@ .byte 102,15,56,220,217 .byte 102,15,56,221,208 .byte 102,15,56,221,216 - .byte 0xf3,0xc3 + ret .cfi_endproc .size _aesni_encrypt2,.-_aesni_encrypt2 .type _aesni_encrypt3,@function @@ -101,7 +103,7 @@ .byte 102,15,56,221,208 .byte 102,15,56,221,216 .byte 102,15,56,221,224 - .byte 0xf3,0xc3 + ret .cfi_endproc .size _aesni_encrypt3,.-_aesni_encrypt3 .type _aesni_encrypt4,@function @@ -143,7 +145,7 @@ .byte 102,15,56,221,216 .byte 102,15,56,221,224 .byte 102,15,56,221,232 - .byte 0xf3,0xc3 + ret .cfi_endproc .size _aesni_encrypt4,.-_aesni_encrypt4 .type _aesni_encrypt6,@function @@ -199,7 +201,7 @@ .byte 102,15,56,221,232 .byte 102,15,56,221,240 .byte 102,15,56,221,248 - .byte 0xf3,0xc3 + ret .cfi_endproc .size _aesni_encrypt6,.-_aesni_encrypt6 .type _aesni_encrypt8,@function @@ -265,15 +267,19 @@ .byte 102,15,56,221,248 .byte 102,68,15,56,221,192 .byte 102,68,15,56,221,200 - .byte 0xf3,0xc3 + ret .cfi_endproc .size _aesni_encrypt8,.-_aesni_encrypt8 -.globl GFp_aes_hw_ctr32_encrypt_blocks -.hidden GFp_aes_hw_ctr32_encrypt_blocks -.type GFp_aes_hw_ctr32_encrypt_blocks,@function +.globl aes_hw_ctr32_encrypt_blocks +.hidden aes_hw_ctr32_encrypt_blocks +.type aes_hw_ctr32_encrypt_blocks,@function .align 16 -GFp_aes_hw_ctr32_encrypt_blocks: +aes_hw_ctr32_encrypt_blocks: .cfi_startproc +_CET_ENDBR +#ifdef BORINGSSL_DISPATCH_TEST + movb $1,BORINGSSL_function_hit(%rip) +#endif cmpq $1,%rdx jne .Lctr32_bulk @@ -360,7 +366,7 @@ leaq 7(%r8),%r9 movl %r10d,96+12(%rsp) bswapl %r9d - leaq GFp_ia32cap_P(%rip),%r10 + leaq OPENSSL_ia32cap_P(%rip),%r10 movl 4(%r10),%r10d xorl %ebp,%r9d andl $71303168,%r10d @@ -649,6 +655,8 @@ pxor %xmm0,%xmm13 movdqu 80(%rdi),%xmm15 pxor %xmm0,%xmm14 + prefetcht0 448(%rdi) + prefetcht0 512(%rdi) pxor %xmm0,%xmm15 .byte 102,15,56,220,209 .byte 102,15,56,220,217 @@ -846,16 +854,20 @@ leaq (%r11),%rsp .cfi_def_cfa_register %rsp .Lctr32_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_aes_hw_ctr32_encrypt_blocks,.-GFp_aes_hw_ctr32_encrypt_blocks -.globl GFp_aes_hw_set_encrypt_key -.hidden GFp_aes_hw_set_encrypt_key -.type GFp_aes_hw_set_encrypt_key,@function +.size aes_hw_ctr32_encrypt_blocks,.-aes_hw_ctr32_encrypt_blocks +.globl aes_hw_set_encrypt_key +.hidden aes_hw_set_encrypt_key +.type aes_hw_set_encrypt_key,@function .align 16 -GFp_aes_hw_set_encrypt_key: +aes_hw_set_encrypt_key: __aesni_set_encrypt_key: .cfi_startproc +_CET_ENDBR +#ifdef BORINGSSL_DISPATCH_TEST + movb $1,BORINGSSL_function_hit+3(%rip) +#endif .byte 0x48,0x83,0xEC,0x08 .cfi_adjust_cfa_offset 8 movq $-1,%rax @@ -866,7 +878,7 @@ movups (%rdi),%xmm0 xorps %xmm4,%xmm4 - leaq GFp_ia32cap_P(%rip),%r10 + leaq OPENSSL_ia32cap_P(%rip),%r10 movl 4(%r10),%r10d andl $268437504,%r10d leaq 16(%rdx),%rax @@ -1083,9 +1095,9 @@ pxor %xmm5,%xmm5 addq $8,%rsp .cfi_adjust_cfa_offset -8 - .byte 0xf3,0xc3 + ret .cfi_endproc -.LSEH_end_GFp_set_encrypt_key: +.LSEH_end_set_encrypt_key: .align 16 .Lkey_expansion_128: @@ -1098,7 +1110,7 @@ xorps %xmm4,%xmm0 shufps $255,%xmm1,%xmm1 xorps %xmm1,%xmm0 - .byte 0xf3,0xc3 + ret .align 16 .Lkey_expansion_192a: @@ -1118,7 +1130,7 @@ pxor %xmm1,%xmm0 pshufd $255,%xmm0,%xmm3 pxor %xmm3,%xmm2 - .byte 0xf3,0xc3 + ret .align 16 .Lkey_expansion_192b: @@ -1141,7 +1153,7 @@ xorps %xmm4,%xmm0 shufps $255,%xmm1,%xmm1 xorps %xmm1,%xmm0 - .byte 0xf3,0xc3 + ret .align 16 .Lkey_expansion_256b: @@ -1154,9 +1166,10 @@ xorps %xmm4,%xmm2 shufps $170,%xmm1,%xmm1 xorps %xmm1,%xmm2 - .byte 0xf3,0xc3 -.size GFp_aes_hw_set_encrypt_key,.-GFp_aes_hw_set_encrypt_key + ret +.size aes_hw_set_encrypt_key,.-aes_hw_set_encrypt_key .size __aesni_set_encrypt_key,.-__aesni_set_encrypt_key +.section .rodata .align 64 .Lbswap_mask: .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -1177,5 +1190,5 @@ .byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 64 +.text #endif -.section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86_64-macosx.S temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86_64-macosx.S --- temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86_64-macosx.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86_64-macosx.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,21 +1,22 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__APPLE__) .text -.globl _GFp_aes_hw_encrypt -.private_extern _GFp_aes_hw_encrypt +.globl _aes_hw_encrypt +.private_extern _aes_hw_encrypt .p2align 4 -_GFp_aes_hw_encrypt: +_aes_hw_encrypt: +_CET_ENDBR +#ifdef BORINGSSL_DISPATCH_TEST + + movb $1,_BORINGSSL_function_hit+1(%rip) +#endif movups (%rdi),%xmm2 movl 240(%rdx),%eax movups (%rdx),%xmm0 @@ -33,7 +34,7 @@ pxor %xmm1,%xmm1 movups %xmm2,(%rsi) pxor %xmm2,%xmm2 - .byte 0xf3,0xc3 + ret @@ -64,7 +65,7 @@ .byte 102,15,56,220,217 .byte 102,15,56,221,208 .byte 102,15,56,221,216 - .byte 0xf3,0xc3 + ret @@ -100,7 +101,7 @@ .byte 102,15,56,221,208 .byte 102,15,56,221,216 .byte 102,15,56,221,224 - .byte 0xf3,0xc3 + ret @@ -142,7 +143,7 @@ .byte 102,15,56,221,216 .byte 102,15,56,221,224 .byte 102,15,56,221,232 - .byte 0xf3,0xc3 + ret @@ -198,7 +199,7 @@ .byte 102,15,56,221,232 .byte 102,15,56,221,240 .byte 102,15,56,221,248 - .byte 0xf3,0xc3 + ret @@ -264,15 +265,19 @@ .byte 102,15,56,221,248 .byte 102,68,15,56,221,192 .byte 102,68,15,56,221,200 - .byte 0xf3,0xc3 + ret -.globl _GFp_aes_hw_ctr32_encrypt_blocks -.private_extern _GFp_aes_hw_ctr32_encrypt_blocks +.globl _aes_hw_ctr32_encrypt_blocks +.private_extern _aes_hw_ctr32_encrypt_blocks .p2align 4 -_GFp_aes_hw_ctr32_encrypt_blocks: +_aes_hw_ctr32_encrypt_blocks: +_CET_ENDBR +#ifdef BORINGSSL_DISPATCH_TEST + movb $1,_BORINGSSL_function_hit(%rip) +#endif cmpq $1,%rdx jne L$ctr32_bulk @@ -359,7 +364,7 @@ leaq 7(%r8),%r9 movl %r10d,96+12(%rsp) bswapl %r9d - leaq _GFp_ia32cap_P(%rip),%r10 + leaq _OPENSSL_ia32cap_P(%rip),%r10 movl 4(%r10),%r10d xorl %ebp,%r9d andl $71303168,%r10d @@ -648,6 +653,8 @@ pxor %xmm0,%xmm13 movdqu 80(%rdi),%xmm15 pxor %xmm0,%xmm14 + prefetcht0 448(%rdi) + prefetcht0 512(%rdi) pxor %xmm0,%xmm15 .byte 102,15,56,220,209 .byte 102,15,56,220,217 @@ -845,16 +852,20 @@ leaq (%r11),%rsp L$ctr32_epilogue: - .byte 0xf3,0xc3 + ret -.globl _GFp_aes_hw_set_encrypt_key -.private_extern _GFp_aes_hw_set_encrypt_key +.globl _aes_hw_set_encrypt_key +.private_extern _aes_hw_set_encrypt_key .p2align 4 -_GFp_aes_hw_set_encrypt_key: +_aes_hw_set_encrypt_key: __aesni_set_encrypt_key: +_CET_ENDBR +#ifdef BORINGSSL_DISPATCH_TEST + movb $1,_BORINGSSL_function_hit+3(%rip) +#endif .byte 0x48,0x83,0xEC,0x08 movq $-1,%rax @@ -865,7 +876,7 @@ movups (%rdi),%xmm0 xorps %xmm4,%xmm4 - leaq _GFp_ia32cap_P(%rip),%r10 + leaq _OPENSSL_ia32cap_P(%rip),%r10 movl 4(%r10),%r10d andl $268437504,%r10d leaq 16(%rdx),%rax @@ -1082,9 +1093,9 @@ pxor %xmm5,%xmm5 addq $8,%rsp - .byte 0xf3,0xc3 + ret -L$SEH_end_GFp_set_encrypt_key: +L$SEH_end_set_encrypt_key: .p2align 4 L$key_expansion_128: @@ -1097,7 +1108,7 @@ xorps %xmm4,%xmm0 shufps $255,%xmm1,%xmm1 xorps %xmm1,%xmm0 - .byte 0xf3,0xc3 + ret .p2align 4 L$key_expansion_192a: @@ -1117,7 +1128,7 @@ pxor %xmm1,%xmm0 pshufd $255,%xmm0,%xmm3 pxor %xmm3,%xmm2 - .byte 0xf3,0xc3 + ret .p2align 4 L$key_expansion_192b: @@ -1140,7 +1151,7 @@ xorps %xmm4,%xmm0 shufps $255,%xmm1,%xmm1 xorps %xmm1,%xmm0 - .byte 0xf3,0xc3 + ret .p2align 4 L$key_expansion_256b: @@ -1153,9 +1164,10 @@ xorps %xmm4,%xmm2 shufps $170,%xmm1,%xmm1 xorps %xmm1,%xmm2 - .byte 0xf3,0xc3 + ret +.section __DATA,__const .p2align 6 L$bswap_mask: .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -1176,4 +1188,5 @@ .byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .p2align 6 +.text #endif Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86_64-nasm.obj and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86_64-nasm.obj differ diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86-elf.S temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86-elf.S --- temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86-elf.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86-elf.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,17 +1,30 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__i386__) -#if defined(BORINGSSL_PREFIX) -#include -#endif +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__) .text -.globl GFp_aes_hw_encrypt -.hidden GFp_aes_hw_encrypt -.type GFp_aes_hw_encrypt,@function -.align 16 -GFp_aes_hw_encrypt: -.L_GFp_aes_hw_encrypt_begin: +#ifdef BORINGSSL_DISPATCH_TEST +#endif +.globl aes_hw_encrypt +.hidden aes_hw_encrypt +.type aes_hw_encrypt,@function +.align 16 +aes_hw_encrypt: +.L_aes_hw_encrypt_begin: +#ifdef BORINGSSL_DISPATCH_TEST + pushl %ebx + pushl %edx + call .L000pic +.L000pic: + popl %ebx + leal BORINGSSL_function_hit+1-.L000pic(%ebx),%ebx + movl $1,%edx + movb %dl,(%ebx) + popl %edx + popl %ebx +#endif movl 4(%esp),%eax movl 12(%esp),%edx movups (%eax),%xmm2 @@ -21,19 +34,19 @@ movups 16(%edx),%xmm1 leal 32(%edx),%edx xorps %xmm0,%xmm2 -.L000enc1_loop_1: +.L001enc1_loop_1: .byte 102,15,56,220,209 decl %ecx movups (%edx),%xmm1 leal 16(%edx),%edx - jnz .L000enc1_loop_1 + jnz .L001enc1_loop_1 .byte 102,15,56,221,209 pxor %xmm0,%xmm0 pxor %xmm1,%xmm1 movups %xmm2,(%eax) pxor %xmm2,%xmm2 ret -.size GFp_aes_hw_encrypt,.-.L_GFp_aes_hw_encrypt_begin +.size aes_hw_encrypt,.-.L_aes_hw_encrypt_begin .hidden _aesni_encrypt2 .type _aesni_encrypt2,@function .align 16 @@ -47,7 +60,7 @@ leal 32(%edx,%ecx,1),%edx negl %ecx addl $16,%ecx -.L001enc2_loop: +.L002enc2_loop: .byte 102,15,56,220,209 .byte 102,15,56,220,217 movups (%edx,%ecx,1),%xmm1 @@ -55,7 +68,7 @@ .byte 102,15,56,220,208 .byte 102,15,56,220,216 movups -16(%edx,%ecx,1),%xmm0 - jnz .L001enc2_loop + jnz .L002enc2_loop .byte 102,15,56,220,209 .byte 102,15,56,220,217 .byte 102,15,56,221,208 @@ -76,7 +89,7 @@ leal 32(%edx,%ecx,1),%edx negl %ecx addl $16,%ecx -.L002enc3_loop: +.L003enc3_loop: .byte 102,15,56,220,209 .byte 102,15,56,220,217 .byte 102,15,56,220,225 @@ -86,7 +99,7 @@ .byte 102,15,56,220,216 .byte 102,15,56,220,224 movups -16(%edx,%ecx,1),%xmm0 - jnz .L002enc3_loop + jnz .L003enc3_loop .byte 102,15,56,220,209 .byte 102,15,56,220,217 .byte 102,15,56,220,225 @@ -111,7 +124,7 @@ negl %ecx .byte 15,31,64,0 addl $16,%ecx -.L003enc4_loop: +.L004enc4_loop: .byte 102,15,56,220,209 .byte 102,15,56,220,217 .byte 102,15,56,220,225 @@ -123,7 +136,7 @@ .byte 102,15,56,220,224 .byte 102,15,56,220,232 movups -16(%edx,%ecx,1),%xmm0 - jnz .L003enc4_loop + jnz .L004enc4_loop .byte 102,15,56,220,209 .byte 102,15,56,220,217 .byte 102,15,56,220,225 @@ -154,13 +167,13 @@ pxor %xmm0,%xmm7 movups (%edx,%ecx,1),%xmm0 addl $16,%ecx - jmp .L004_aesni_encrypt6_inner + jmp .L005_aesni_encrypt6_inner .align 16 -.L005enc6_loop: +.L006enc6_loop: .byte 102,15,56,220,209 .byte 102,15,56,220,217 .byte 102,15,56,220,225 -.L004_aesni_encrypt6_inner: +.L005_aesni_encrypt6_inner: .byte 102,15,56,220,233 .byte 102,15,56,220,241 .byte 102,15,56,220,249 @@ -174,7 +187,7 @@ .byte 102,15,56,220,240 .byte 102,15,56,220,248 movups -16(%edx,%ecx,1),%xmm0 - jnz .L005enc6_loop + jnz .L006enc6_loop .byte 102,15,56,220,209 .byte 102,15,56,220,217 .byte 102,15,56,220,225 @@ -189,16 +202,28 @@ .byte 102,15,56,221,248 ret .size _aesni_encrypt6,.-_aesni_encrypt6 -.globl GFp_aes_hw_ctr32_encrypt_blocks -.hidden GFp_aes_hw_ctr32_encrypt_blocks -.type GFp_aes_hw_ctr32_encrypt_blocks,@function +.globl aes_hw_ctr32_encrypt_blocks +.hidden aes_hw_ctr32_encrypt_blocks +.type aes_hw_ctr32_encrypt_blocks,@function .align 16 -GFp_aes_hw_ctr32_encrypt_blocks: -.L_GFp_aes_hw_ctr32_encrypt_blocks_begin: +aes_hw_ctr32_encrypt_blocks: +.L_aes_hw_ctr32_encrypt_blocks_begin: pushl %ebp pushl %ebx pushl %esi pushl %edi +#ifdef BORINGSSL_DISPATCH_TEST + pushl %ebx + pushl %edx + call .L007pic +.L007pic: + popl %ebx + leal BORINGSSL_function_hit+0-.L007pic(%ebx),%ebx + movl $1,%edx + movb %dl,(%ebx) + popl %edx + popl %ebx +#endif movl 20(%esp),%esi movl 24(%esp),%edi movl 28(%esp),%eax @@ -209,7 +234,7 @@ andl $-16,%esp movl %ebp,80(%esp) cmpl $1,%eax - je .L006ctr32_one_shortcut + je .L008ctr32_one_shortcut movdqu (%ebx),%xmm7 movl $202182159,(%esp) movl $134810123,4(%esp) @@ -247,7 +272,7 @@ pshufd $192,%xmm0,%xmm2 pshufd $128,%xmm0,%xmm3 cmpl $6,%eax - jb .L007ctr32_tail + jb .L009ctr32_tail pxor %xmm6,%xmm7 shll $4,%ecx movl $16,%ebx @@ -256,9 +281,9 @@ subl %ecx,%ebx leal 32(%edx,%ecx,1),%edx subl $6,%eax - jmp .L008ctr32_loop6 + jmp .L010ctr32_loop6 .align 16 -.L008ctr32_loop6: +.L010ctr32_loop6: pshufd $64,%xmm0,%xmm4 movdqa 32(%esp),%xmm0 pshufd $192,%xmm1,%xmm5 @@ -312,27 +337,27 @@ leal 96(%edi),%edi pshufd $128,%xmm0,%xmm3 subl $6,%eax - jnc .L008ctr32_loop6 + jnc .L010ctr32_loop6 addl $6,%eax - jz .L009ctr32_ret + jz .L011ctr32_ret movdqu (%ebp),%xmm7 movl %ebp,%edx pxor 32(%esp),%xmm7 movl 240(%ebp),%ecx -.L007ctr32_tail: +.L009ctr32_tail: por %xmm7,%xmm2 cmpl $2,%eax - jb .L010ctr32_one + jb .L012ctr32_one pshufd $64,%xmm0,%xmm4 por %xmm7,%xmm3 - je .L011ctr32_two + je .L013ctr32_two pshufd $192,%xmm1,%xmm5 por %xmm7,%xmm4 cmpl $4,%eax - jb .L012ctr32_three + jb .L014ctr32_three pshufd $128,%xmm1,%xmm6 por %xmm7,%xmm5 - je .L013ctr32_four + je .L015ctr32_four por %xmm7,%xmm6 call _aesni_encrypt6 movups (%esi),%xmm1 @@ -350,29 +375,29 @@ movups %xmm4,32(%edi) movups %xmm5,48(%edi) movups %xmm6,64(%edi) - jmp .L009ctr32_ret + jmp .L011ctr32_ret .align 16 -.L006ctr32_one_shortcut: +.L008ctr32_one_shortcut: movups (%ebx),%xmm2 movl 240(%edx),%ecx -.L010ctr32_one: +.L012ctr32_one: movups (%edx),%xmm0 movups 16(%edx),%xmm1 leal 32(%edx),%edx xorps %xmm0,%xmm2 -.L014enc1_loop_2: +.L016enc1_loop_2: .byte 102,15,56,220,209 decl %ecx movups (%edx),%xmm1 leal 16(%edx),%edx - jnz .L014enc1_loop_2 + jnz .L016enc1_loop_2 .byte 102,15,56,221,209 movups (%esi),%xmm6 xorps %xmm2,%xmm6 movups %xmm6,(%edi) - jmp .L009ctr32_ret + jmp .L011ctr32_ret .align 16 -.L011ctr32_two: +.L013ctr32_two: call _aesni_encrypt2 movups (%esi),%xmm5 movups 16(%esi),%xmm6 @@ -380,9 +405,9 @@ xorps %xmm6,%xmm3 movups %xmm2,(%edi) movups %xmm3,16(%edi) - jmp .L009ctr32_ret + jmp .L011ctr32_ret .align 16 -.L012ctr32_three: +.L014ctr32_three: call _aesni_encrypt3 movups (%esi),%xmm5 movups 16(%esi),%xmm6 @@ -393,9 +418,9 @@ xorps %xmm7,%xmm4 movups %xmm3,16(%edi) movups %xmm4,32(%edi) - jmp .L009ctr32_ret + jmp .L011ctr32_ret .align 16 -.L013ctr32_four: +.L015ctr32_four: call _aesni_encrypt4 movups (%esi),%xmm6 movups 16(%esi),%xmm7 @@ -409,7 +434,7 @@ xorps %xmm0,%xmm5 movups %xmm4,32(%edi) movups %xmm5,48(%edi) -.L009ctr32_ret: +.L011ctr32_ret: pxor %xmm0,%xmm0 pxor %xmm1,%xmm1 pxor %xmm2,%xmm2 @@ -427,7 +452,7 @@ popl %ebx popl %ebp ret -.size GFp_aes_hw_ctr32_encrypt_blocks,.-.L_GFp_aes_hw_ctr32_encrypt_blocks_begin +.size aes_hw_ctr32_encrypt_blocks,.-.L_aes_hw_ctr32_encrypt_blocks_begin .hidden _aesni_set_encrypt_key .type _aesni_set_encrypt_key,@function .align 16 @@ -435,57 +460,57 @@ pushl %ebp pushl %ebx testl %eax,%eax - jz .L015bad_pointer + jz .L017bad_pointer testl %edx,%edx - jz .L015bad_pointer - call .L016pic -.L016pic: + jz .L017bad_pointer + call .L018pic +.L018pic: popl %ebx - leal .Lkey_const-.L016pic(%ebx),%ebx - leal GFp_ia32cap_P-.Lkey_const(%ebx),%ebp + leal .Lkey_const-.L018pic(%ebx),%ebx + leal OPENSSL_ia32cap_P-.Lkey_const(%ebx),%ebp movups (%eax),%xmm0 xorps %xmm4,%xmm4 movl 4(%ebp),%ebp leal 16(%edx),%edx andl $268437504,%ebp cmpl $256,%ecx - je .L01714rounds + je .L01914rounds cmpl $128,%ecx - jne .L018bad_keybits + jne .L020bad_keybits .align 16 -.L01910rounds: +.L02110rounds: cmpl $268435456,%ebp - je .L02010rounds_alt + je .L02210rounds_alt movl $9,%ecx movups %xmm0,-16(%edx) .byte 102,15,58,223,200,1 - call .L021key_128_cold + call .L023key_128_cold .byte 102,15,58,223,200,2 - call .L022key_128 + call .L024key_128 .byte 102,15,58,223,200,4 - call .L022key_128 + call .L024key_128 .byte 102,15,58,223,200,8 - call .L022key_128 + call .L024key_128 .byte 102,15,58,223,200,16 - call .L022key_128 + call .L024key_128 .byte 102,15,58,223,200,32 - call .L022key_128 + call .L024key_128 .byte 102,15,58,223,200,64 - call .L022key_128 + call .L024key_128 .byte 102,15,58,223,200,128 - call .L022key_128 + call .L024key_128 .byte 102,15,58,223,200,27 - call .L022key_128 + call .L024key_128 .byte 102,15,58,223,200,54 - call .L022key_128 + call .L024key_128 movups %xmm0,(%edx) movl %ecx,80(%edx) - jmp .L023good_key + jmp .L025good_key .align 16 -.L022key_128: +.L024key_128: movups %xmm0,(%edx) leal 16(%edx),%edx -.L021key_128_cold: +.L023key_128_cold: shufps $16,%xmm0,%xmm4 xorps %xmm4,%xmm0 shufps $140,%xmm0,%xmm4 @@ -494,13 +519,13 @@ xorps %xmm1,%xmm0 ret .align 16 -.L02010rounds_alt: +.L02210rounds_alt: movdqa (%ebx),%xmm5 movl $8,%ecx movdqa 32(%ebx),%xmm4 movdqa %xmm0,%xmm2 movdqu %xmm0,-16(%edx) -.L024loop_key128: +.L026loop_key128: .byte 102,15,56,0,197 .byte 102,15,56,221,196 pslld $1,%xmm4 @@ -516,7 +541,7 @@ movdqu %xmm0,-16(%edx) movdqa %xmm0,%xmm2 decl %ecx - jnz .L024loop_key128 + jnz .L026loop_key128 movdqa 48(%ebx),%xmm4 .byte 102,15,56,0,197 .byte 102,15,56,221,196 @@ -544,51 +569,51 @@ movdqu %xmm0,16(%edx) movl $9,%ecx movl %ecx,96(%edx) - jmp .L023good_key + jmp .L025good_key .align 16 -.L01714rounds: +.L01914rounds: movups 16(%eax),%xmm2 leal 16(%edx),%edx cmpl $268435456,%ebp - je .L02514rounds_alt + je .L02714rounds_alt movl $13,%ecx movups %xmm0,-32(%edx) movups %xmm2,-16(%edx) .byte 102,15,58,223,202,1 - call .L026key_256a_cold + call .L028key_256a_cold .byte 102,15,58,223,200,1 - call .L027key_256b + call .L029key_256b .byte 102,15,58,223,202,2 - call .L028key_256a + call .L030key_256a .byte 102,15,58,223,200,2 - call .L027key_256b + call .L029key_256b .byte 102,15,58,223,202,4 - call .L028key_256a + call .L030key_256a .byte 102,15,58,223,200,4 - call .L027key_256b + call .L029key_256b .byte 102,15,58,223,202,8 - call .L028key_256a + call .L030key_256a .byte 102,15,58,223,200,8 - call .L027key_256b + call .L029key_256b .byte 102,15,58,223,202,16 - call .L028key_256a + call .L030key_256a .byte 102,15,58,223,200,16 - call .L027key_256b + call .L029key_256b .byte 102,15,58,223,202,32 - call .L028key_256a + call .L030key_256a .byte 102,15,58,223,200,32 - call .L027key_256b + call .L029key_256b .byte 102,15,58,223,202,64 - call .L028key_256a + call .L030key_256a movups %xmm0,(%edx) movl %ecx,16(%edx) xorl %eax,%eax - jmp .L023good_key + jmp .L025good_key .align 16 -.L028key_256a: +.L030key_256a: movups %xmm2,(%edx) leal 16(%edx),%edx -.L026key_256a_cold: +.L028key_256a_cold: shufps $16,%xmm0,%xmm4 xorps %xmm4,%xmm0 shufps $140,%xmm0,%xmm4 @@ -597,7 +622,7 @@ xorps %xmm1,%xmm0 ret .align 16 -.L027key_256b: +.L029key_256b: movups %xmm0,(%edx) leal 16(%edx),%edx shufps $16,%xmm2,%xmm4 @@ -608,14 +633,14 @@ xorps %xmm1,%xmm2 ret .align 16 -.L02514rounds_alt: +.L02714rounds_alt: movdqa (%ebx),%xmm5 movdqa 32(%ebx),%xmm4 movl $7,%ecx movdqu %xmm0,-32(%edx) movdqa %xmm2,%xmm1 movdqu %xmm2,-16(%edx) -.L029loop_key256: +.L031loop_key256: .byte 102,15,56,0,213 .byte 102,15,56,221,212 movdqa %xmm0,%xmm3 @@ -629,7 +654,7 @@ pxor %xmm2,%xmm0 movdqu %xmm0,(%edx) decl %ecx - jz .L030done_key256 + jz .L032done_key256 pshufd $255,%xmm0,%xmm2 pxor %xmm3,%xmm3 .byte 102,15,56,221,211 @@ -644,11 +669,11 @@ movdqu %xmm2,16(%edx) leal 32(%edx),%edx movdqa %xmm2,%xmm1 - jmp .L029loop_key256 -.L030done_key256: + jmp .L031loop_key256 +.L032done_key256: movl $13,%ecx movl %ecx,16(%edx) -.L023good_key: +.L025good_key: pxor %xmm0,%xmm0 pxor %xmm1,%xmm1 pxor %xmm2,%xmm2 @@ -660,31 +685,43 @@ popl %ebp ret .align 4 -.L015bad_pointer: +.L017bad_pointer: movl $-1,%eax popl %ebx popl %ebp ret .align 4 -.L018bad_keybits: +.L020bad_keybits: pxor %xmm0,%xmm0 movl $-2,%eax popl %ebx popl %ebp ret .size _aesni_set_encrypt_key,.-_aesni_set_encrypt_key -.globl GFp_aes_hw_set_encrypt_key -.hidden GFp_aes_hw_set_encrypt_key -.type GFp_aes_hw_set_encrypt_key,@function -.align 16 -GFp_aes_hw_set_encrypt_key: -.L_GFp_aes_hw_set_encrypt_key_begin: +.globl aes_hw_set_encrypt_key +.hidden aes_hw_set_encrypt_key +.type aes_hw_set_encrypt_key,@function +.align 16 +aes_hw_set_encrypt_key: +.L_aes_hw_set_encrypt_key_begin: +#ifdef BORINGSSL_DISPATCH_TEST + pushl %ebx + pushl %edx + call .L033pic +.L033pic: + popl %ebx + leal BORINGSSL_function_hit+3-.L033pic(%ebx),%ebx + movl $1,%edx + movb %dl,(%ebx) + popl %edx + popl %ebx +#endif movl 4(%esp),%eax movl 8(%esp),%ecx movl 12(%esp),%edx call _aesni_set_encrypt_key ret -.size GFp_aes_hw_set_encrypt_key,.-.L_GFp_aes_hw_set_encrypt_key_begin +.size aes_hw_set_encrypt_key,.-.L_aes_hw_set_encrypt_key_begin .align 64 .Lkey_const: .long 202313229,202313229,202313229,202313229 @@ -695,5 +732,4 @@ .byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 .byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 .byte 115,108,46,111,114,103,62,0 -#endif -.section .note.GNU-stack,"",@progbits +#endif // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86-macosx.S temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86-macosx.S --- temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86-macosx.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86-macosx.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,686 +0,0 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. - -#if defined(__i386__) -#if defined(BORINGSSL_PREFIX) -#include -#endif -.text -.globl _GFp_aes_hw_encrypt -.private_extern _GFp_aes_hw_encrypt -.align 4 -_GFp_aes_hw_encrypt: -L_GFp_aes_hw_encrypt_begin: - movl 4(%esp),%eax - movl 12(%esp),%edx - movups (%eax),%xmm2 - movl 240(%edx),%ecx - movl 8(%esp),%eax - movups (%edx),%xmm0 - movups 16(%edx),%xmm1 - leal 32(%edx),%edx - xorps %xmm0,%xmm2 -L000enc1_loop_1: -.byte 102,15,56,220,209 - decl %ecx - movups (%edx),%xmm1 - leal 16(%edx),%edx - jnz L000enc1_loop_1 -.byte 102,15,56,221,209 - pxor %xmm0,%xmm0 - pxor %xmm1,%xmm1 - movups %xmm2,(%eax) - pxor %xmm2,%xmm2 - ret -.private_extern __aesni_encrypt2 -.align 4 -__aesni_encrypt2: - movups (%edx),%xmm0 - shll $4,%ecx - movups 16(%edx),%xmm1 - xorps %xmm0,%xmm2 - pxor %xmm0,%xmm3 - movups 32(%edx),%xmm0 - leal 32(%edx,%ecx,1),%edx - negl %ecx - addl $16,%ecx -L001enc2_loop: -.byte 102,15,56,220,209 -.byte 102,15,56,220,217 - movups (%edx,%ecx,1),%xmm1 - addl $32,%ecx -.byte 102,15,56,220,208 -.byte 102,15,56,220,216 - movups -16(%edx,%ecx,1),%xmm0 - jnz L001enc2_loop -.byte 102,15,56,220,209 -.byte 102,15,56,220,217 -.byte 102,15,56,221,208 -.byte 102,15,56,221,216 - ret -.private_extern __aesni_encrypt3 -.align 4 -__aesni_encrypt3: - movups (%edx),%xmm0 - shll $4,%ecx - movups 16(%edx),%xmm1 - xorps %xmm0,%xmm2 - pxor %xmm0,%xmm3 - pxor %xmm0,%xmm4 - movups 32(%edx),%xmm0 - leal 32(%edx,%ecx,1),%edx - negl %ecx - addl $16,%ecx -L002enc3_loop: -.byte 102,15,56,220,209 -.byte 102,15,56,220,217 -.byte 102,15,56,220,225 - movups (%edx,%ecx,1),%xmm1 - addl $32,%ecx -.byte 102,15,56,220,208 -.byte 102,15,56,220,216 -.byte 102,15,56,220,224 - movups -16(%edx,%ecx,1),%xmm0 - jnz L002enc3_loop -.byte 102,15,56,220,209 -.byte 102,15,56,220,217 -.byte 102,15,56,220,225 -.byte 102,15,56,221,208 -.byte 102,15,56,221,216 -.byte 102,15,56,221,224 - ret -.private_extern __aesni_encrypt4 -.align 4 -__aesni_encrypt4: - movups (%edx),%xmm0 - movups 16(%edx),%xmm1 - shll $4,%ecx - xorps %xmm0,%xmm2 - pxor %xmm0,%xmm3 - pxor %xmm0,%xmm4 - pxor %xmm0,%xmm5 - movups 32(%edx),%xmm0 - leal 32(%edx,%ecx,1),%edx - negl %ecx -.byte 15,31,64,0 - addl $16,%ecx -L003enc4_loop: -.byte 102,15,56,220,209 -.byte 102,15,56,220,217 -.byte 102,15,56,220,225 -.byte 102,15,56,220,233 - movups (%edx,%ecx,1),%xmm1 - addl $32,%ecx -.byte 102,15,56,220,208 -.byte 102,15,56,220,216 -.byte 102,15,56,220,224 -.byte 102,15,56,220,232 - movups -16(%edx,%ecx,1),%xmm0 - jnz L003enc4_loop -.byte 102,15,56,220,209 -.byte 102,15,56,220,217 -.byte 102,15,56,220,225 -.byte 102,15,56,220,233 -.byte 102,15,56,221,208 -.byte 102,15,56,221,216 -.byte 102,15,56,221,224 -.byte 102,15,56,221,232 - ret -.private_extern __aesni_encrypt6 -.align 4 -__aesni_encrypt6: - movups (%edx),%xmm0 - shll $4,%ecx - movups 16(%edx),%xmm1 - xorps %xmm0,%xmm2 - pxor %xmm0,%xmm3 - pxor %xmm0,%xmm4 -.byte 102,15,56,220,209 - pxor %xmm0,%xmm5 - pxor %xmm0,%xmm6 -.byte 102,15,56,220,217 - leal 32(%edx,%ecx,1),%edx - negl %ecx -.byte 102,15,56,220,225 - pxor %xmm0,%xmm7 - movups (%edx,%ecx,1),%xmm0 - addl $16,%ecx - jmp L004_aesni_encrypt6_inner -.align 4,0x90 -L005enc6_loop: -.byte 102,15,56,220,209 -.byte 102,15,56,220,217 -.byte 102,15,56,220,225 -L004_aesni_encrypt6_inner: -.byte 102,15,56,220,233 -.byte 102,15,56,220,241 -.byte 102,15,56,220,249 -L_aesni_encrypt6_enter: - movups (%edx,%ecx,1),%xmm1 - addl $32,%ecx -.byte 102,15,56,220,208 -.byte 102,15,56,220,216 -.byte 102,15,56,220,224 -.byte 102,15,56,220,232 -.byte 102,15,56,220,240 -.byte 102,15,56,220,248 - movups -16(%edx,%ecx,1),%xmm0 - jnz L005enc6_loop -.byte 102,15,56,220,209 -.byte 102,15,56,220,217 -.byte 102,15,56,220,225 -.byte 102,15,56,220,233 -.byte 102,15,56,220,241 -.byte 102,15,56,220,249 -.byte 102,15,56,221,208 -.byte 102,15,56,221,216 -.byte 102,15,56,221,224 -.byte 102,15,56,221,232 -.byte 102,15,56,221,240 -.byte 102,15,56,221,248 - ret -.globl _GFp_aes_hw_ctr32_encrypt_blocks -.private_extern _GFp_aes_hw_ctr32_encrypt_blocks -.align 4 -_GFp_aes_hw_ctr32_encrypt_blocks: -L_GFp_aes_hw_ctr32_encrypt_blocks_begin: - pushl %ebp - pushl %ebx - pushl %esi - pushl %edi - movl 20(%esp),%esi - movl 24(%esp),%edi - movl 28(%esp),%eax - movl 32(%esp),%edx - movl 36(%esp),%ebx - movl %esp,%ebp - subl $88,%esp - andl $-16,%esp - movl %ebp,80(%esp) - cmpl $1,%eax - je L006ctr32_one_shortcut - movdqu (%ebx),%xmm7 - movl $202182159,(%esp) - movl $134810123,4(%esp) - movl $67438087,8(%esp) - movl $66051,12(%esp) - movl $6,%ecx - xorl %ebp,%ebp - movl %ecx,16(%esp) - movl %ecx,20(%esp) - movl %ecx,24(%esp) - movl %ebp,28(%esp) -.byte 102,15,58,22,251,3 -.byte 102,15,58,34,253,3 - movl 240(%edx),%ecx - bswap %ebx - pxor %xmm0,%xmm0 - pxor %xmm1,%xmm1 - movdqa (%esp),%xmm2 -.byte 102,15,58,34,195,0 - leal 3(%ebx),%ebp -.byte 102,15,58,34,205,0 - incl %ebx -.byte 102,15,58,34,195,1 - incl %ebp -.byte 102,15,58,34,205,1 - incl %ebx -.byte 102,15,58,34,195,2 - incl %ebp -.byte 102,15,58,34,205,2 - movdqa %xmm0,48(%esp) -.byte 102,15,56,0,194 - movdqu (%edx),%xmm6 - movdqa %xmm1,64(%esp) -.byte 102,15,56,0,202 - pshufd $192,%xmm0,%xmm2 - pshufd $128,%xmm0,%xmm3 - cmpl $6,%eax - jb L007ctr32_tail - pxor %xmm6,%xmm7 - shll $4,%ecx - movl $16,%ebx - movdqa %xmm7,32(%esp) - movl %edx,%ebp - subl %ecx,%ebx - leal 32(%edx,%ecx,1),%edx - subl $6,%eax - jmp L008ctr32_loop6 -.align 4,0x90 -L008ctr32_loop6: - pshufd $64,%xmm0,%xmm4 - movdqa 32(%esp),%xmm0 - pshufd $192,%xmm1,%xmm5 - pxor %xmm0,%xmm2 - pshufd $128,%xmm1,%xmm6 - pxor %xmm0,%xmm3 - pshufd $64,%xmm1,%xmm7 - movups 16(%ebp),%xmm1 - pxor %xmm0,%xmm4 - pxor %xmm0,%xmm5 -.byte 102,15,56,220,209 - pxor %xmm0,%xmm6 - pxor %xmm0,%xmm7 -.byte 102,15,56,220,217 - movups 32(%ebp),%xmm0 - movl %ebx,%ecx -.byte 102,15,56,220,225 -.byte 102,15,56,220,233 -.byte 102,15,56,220,241 -.byte 102,15,56,220,249 - call L_aesni_encrypt6_enter - movups (%esi),%xmm1 - movups 16(%esi),%xmm0 - xorps %xmm1,%xmm2 - movups 32(%esi),%xmm1 - xorps %xmm0,%xmm3 - movups %xmm2,(%edi) - movdqa 16(%esp),%xmm0 - xorps %xmm1,%xmm4 - movdqa 64(%esp),%xmm1 - movups %xmm3,16(%edi) - movups %xmm4,32(%edi) - paddd %xmm0,%xmm1 - paddd 48(%esp),%xmm0 - movdqa (%esp),%xmm2 - movups 48(%esi),%xmm3 - movups 64(%esi),%xmm4 - xorps %xmm3,%xmm5 - movups 80(%esi),%xmm3 - leal 96(%esi),%esi - movdqa %xmm0,48(%esp) -.byte 102,15,56,0,194 - xorps %xmm4,%xmm6 - movups %xmm5,48(%edi) - xorps %xmm3,%xmm7 - movdqa %xmm1,64(%esp) -.byte 102,15,56,0,202 - movups %xmm6,64(%edi) - pshufd $192,%xmm0,%xmm2 - movups %xmm7,80(%edi) - leal 96(%edi),%edi - pshufd $128,%xmm0,%xmm3 - subl $6,%eax - jnc L008ctr32_loop6 - addl $6,%eax - jz L009ctr32_ret - movdqu (%ebp),%xmm7 - movl %ebp,%edx - pxor 32(%esp),%xmm7 - movl 240(%ebp),%ecx -L007ctr32_tail: - por %xmm7,%xmm2 - cmpl $2,%eax - jb L010ctr32_one - pshufd $64,%xmm0,%xmm4 - por %xmm7,%xmm3 - je L011ctr32_two - pshufd $192,%xmm1,%xmm5 - por %xmm7,%xmm4 - cmpl $4,%eax - jb L012ctr32_three - pshufd $128,%xmm1,%xmm6 - por %xmm7,%xmm5 - je L013ctr32_four - por %xmm7,%xmm6 - call __aesni_encrypt6 - movups (%esi),%xmm1 - movups 16(%esi),%xmm0 - xorps %xmm1,%xmm2 - movups 32(%esi),%xmm1 - xorps %xmm0,%xmm3 - movups 48(%esi),%xmm0 - xorps %xmm1,%xmm4 - movups 64(%esi),%xmm1 - xorps %xmm0,%xmm5 - movups %xmm2,(%edi) - xorps %xmm1,%xmm6 - movups %xmm3,16(%edi) - movups %xmm4,32(%edi) - movups %xmm5,48(%edi) - movups %xmm6,64(%edi) - jmp L009ctr32_ret -.align 4,0x90 -L006ctr32_one_shortcut: - movups (%ebx),%xmm2 - movl 240(%edx),%ecx -L010ctr32_one: - movups (%edx),%xmm0 - movups 16(%edx),%xmm1 - leal 32(%edx),%edx - xorps %xmm0,%xmm2 -L014enc1_loop_2: -.byte 102,15,56,220,209 - decl %ecx - movups (%edx),%xmm1 - leal 16(%edx),%edx - jnz L014enc1_loop_2 -.byte 102,15,56,221,209 - movups (%esi),%xmm6 - xorps %xmm2,%xmm6 - movups %xmm6,(%edi) - jmp L009ctr32_ret -.align 4,0x90 -L011ctr32_two: - call __aesni_encrypt2 - movups (%esi),%xmm5 - movups 16(%esi),%xmm6 - xorps %xmm5,%xmm2 - xorps %xmm6,%xmm3 - movups %xmm2,(%edi) - movups %xmm3,16(%edi) - jmp L009ctr32_ret -.align 4,0x90 -L012ctr32_three: - call __aesni_encrypt3 - movups (%esi),%xmm5 - movups 16(%esi),%xmm6 - xorps %xmm5,%xmm2 - movups 32(%esi),%xmm7 - xorps %xmm6,%xmm3 - movups %xmm2,(%edi) - xorps %xmm7,%xmm4 - movups %xmm3,16(%edi) - movups %xmm4,32(%edi) - jmp L009ctr32_ret -.align 4,0x90 -L013ctr32_four: - call __aesni_encrypt4 - movups (%esi),%xmm6 - movups 16(%esi),%xmm7 - movups 32(%esi),%xmm1 - xorps %xmm6,%xmm2 - movups 48(%esi),%xmm0 - xorps %xmm7,%xmm3 - movups %xmm2,(%edi) - xorps %xmm1,%xmm4 - movups %xmm3,16(%edi) - xorps %xmm0,%xmm5 - movups %xmm4,32(%edi) - movups %xmm5,48(%edi) -L009ctr32_ret: - pxor %xmm0,%xmm0 - pxor %xmm1,%xmm1 - pxor %xmm2,%xmm2 - pxor %xmm3,%xmm3 - pxor %xmm4,%xmm4 - movdqa %xmm0,32(%esp) - pxor %xmm5,%xmm5 - movdqa %xmm0,48(%esp) - pxor %xmm6,%xmm6 - movdqa %xmm0,64(%esp) - pxor %xmm7,%xmm7 - movl 80(%esp),%esp - popl %edi - popl %esi - popl %ebx - popl %ebp - ret -.private_extern __aesni_set_encrypt_key -.align 4 -__aesni_set_encrypt_key: - pushl %ebp - pushl %ebx - testl %eax,%eax - jz L015bad_pointer - testl %edx,%edx - jz L015bad_pointer - call L016pic -L016pic: - popl %ebx - leal Lkey_const-L016pic(%ebx),%ebx - movl L_GFp_ia32cap_P$non_lazy_ptr-Lkey_const(%ebx),%ebp - movups (%eax),%xmm0 - xorps %xmm4,%xmm4 - movl 4(%ebp),%ebp - leal 16(%edx),%edx - andl $268437504,%ebp - cmpl $256,%ecx - je L01714rounds - cmpl $128,%ecx - jne L018bad_keybits -.align 4,0x90 -L01910rounds: - cmpl $268435456,%ebp - je L02010rounds_alt - movl $9,%ecx - movups %xmm0,-16(%edx) -.byte 102,15,58,223,200,1 - call L021key_128_cold -.byte 102,15,58,223,200,2 - call L022key_128 -.byte 102,15,58,223,200,4 - call L022key_128 -.byte 102,15,58,223,200,8 - call L022key_128 -.byte 102,15,58,223,200,16 - call L022key_128 -.byte 102,15,58,223,200,32 - call L022key_128 -.byte 102,15,58,223,200,64 - call L022key_128 -.byte 102,15,58,223,200,128 - call L022key_128 -.byte 102,15,58,223,200,27 - call L022key_128 -.byte 102,15,58,223,200,54 - call L022key_128 - movups %xmm0,(%edx) - movl %ecx,80(%edx) - jmp L023good_key -.align 4,0x90 -L022key_128: - movups %xmm0,(%edx) - leal 16(%edx),%edx -L021key_128_cold: - shufps $16,%xmm0,%xmm4 - xorps %xmm4,%xmm0 - shufps $140,%xmm0,%xmm4 - xorps %xmm4,%xmm0 - shufps $255,%xmm1,%xmm1 - xorps %xmm1,%xmm0 - ret -.align 4,0x90 -L02010rounds_alt: - movdqa (%ebx),%xmm5 - movl $8,%ecx - movdqa 32(%ebx),%xmm4 - movdqa %xmm0,%xmm2 - movdqu %xmm0,-16(%edx) -L024loop_key128: -.byte 102,15,56,0,197 -.byte 102,15,56,221,196 - pslld $1,%xmm4 - leal 16(%edx),%edx - movdqa %xmm2,%xmm3 - pslldq $4,%xmm2 - pxor %xmm2,%xmm3 - pslldq $4,%xmm2 - pxor %xmm2,%xmm3 - pslldq $4,%xmm2 - pxor %xmm3,%xmm2 - pxor %xmm2,%xmm0 - movdqu %xmm0,-16(%edx) - movdqa %xmm0,%xmm2 - decl %ecx - jnz L024loop_key128 - movdqa 48(%ebx),%xmm4 -.byte 102,15,56,0,197 -.byte 102,15,56,221,196 - pslld $1,%xmm4 - movdqa %xmm2,%xmm3 - pslldq $4,%xmm2 - pxor %xmm2,%xmm3 - pslldq $4,%xmm2 - pxor %xmm2,%xmm3 - pslldq $4,%xmm2 - pxor %xmm3,%xmm2 - pxor %xmm2,%xmm0 - movdqu %xmm0,(%edx) - movdqa %xmm0,%xmm2 -.byte 102,15,56,0,197 -.byte 102,15,56,221,196 - movdqa %xmm2,%xmm3 - pslldq $4,%xmm2 - pxor %xmm2,%xmm3 - pslldq $4,%xmm2 - pxor %xmm2,%xmm3 - pslldq $4,%xmm2 - pxor %xmm3,%xmm2 - pxor %xmm2,%xmm0 - movdqu %xmm0,16(%edx) - movl $9,%ecx - movl %ecx,96(%edx) - jmp L023good_key -.align 4,0x90 -L01714rounds: - movups 16(%eax),%xmm2 - leal 16(%edx),%edx - cmpl $268435456,%ebp - je L02514rounds_alt - movl $13,%ecx - movups %xmm0,-32(%edx) - movups %xmm2,-16(%edx) -.byte 102,15,58,223,202,1 - call L026key_256a_cold -.byte 102,15,58,223,200,1 - call L027key_256b -.byte 102,15,58,223,202,2 - call L028key_256a -.byte 102,15,58,223,200,2 - call L027key_256b -.byte 102,15,58,223,202,4 - call L028key_256a -.byte 102,15,58,223,200,4 - call L027key_256b -.byte 102,15,58,223,202,8 - call L028key_256a -.byte 102,15,58,223,200,8 - call L027key_256b -.byte 102,15,58,223,202,16 - call L028key_256a -.byte 102,15,58,223,200,16 - call L027key_256b -.byte 102,15,58,223,202,32 - call L028key_256a -.byte 102,15,58,223,200,32 - call L027key_256b -.byte 102,15,58,223,202,64 - call L028key_256a - movups %xmm0,(%edx) - movl %ecx,16(%edx) - xorl %eax,%eax - jmp L023good_key -.align 4,0x90 -L028key_256a: - movups %xmm2,(%edx) - leal 16(%edx),%edx -L026key_256a_cold: - shufps $16,%xmm0,%xmm4 - xorps %xmm4,%xmm0 - shufps $140,%xmm0,%xmm4 - xorps %xmm4,%xmm0 - shufps $255,%xmm1,%xmm1 - xorps %xmm1,%xmm0 - ret -.align 4,0x90 -L027key_256b: - movups %xmm0,(%edx) - leal 16(%edx),%edx - shufps $16,%xmm2,%xmm4 - xorps %xmm4,%xmm2 - shufps $140,%xmm2,%xmm4 - xorps %xmm4,%xmm2 - shufps $170,%xmm1,%xmm1 - xorps %xmm1,%xmm2 - ret -.align 4,0x90 -L02514rounds_alt: - movdqa (%ebx),%xmm5 - movdqa 32(%ebx),%xmm4 - movl $7,%ecx - movdqu %xmm0,-32(%edx) - movdqa %xmm2,%xmm1 - movdqu %xmm2,-16(%edx) -L029loop_key256: -.byte 102,15,56,0,213 -.byte 102,15,56,221,212 - movdqa %xmm0,%xmm3 - pslldq $4,%xmm0 - pxor %xmm0,%xmm3 - pslldq $4,%xmm0 - pxor %xmm0,%xmm3 - pslldq $4,%xmm0 - pxor %xmm3,%xmm0 - pslld $1,%xmm4 - pxor %xmm2,%xmm0 - movdqu %xmm0,(%edx) - decl %ecx - jz L030done_key256 - pshufd $255,%xmm0,%xmm2 - pxor %xmm3,%xmm3 -.byte 102,15,56,221,211 - movdqa %xmm1,%xmm3 - pslldq $4,%xmm1 - pxor %xmm1,%xmm3 - pslldq $4,%xmm1 - pxor %xmm1,%xmm3 - pslldq $4,%xmm1 - pxor %xmm3,%xmm1 - pxor %xmm1,%xmm2 - movdqu %xmm2,16(%edx) - leal 32(%edx),%edx - movdqa %xmm2,%xmm1 - jmp L029loop_key256 -L030done_key256: - movl $13,%ecx - movl %ecx,16(%edx) -L023good_key: - pxor %xmm0,%xmm0 - pxor %xmm1,%xmm1 - pxor %xmm2,%xmm2 - pxor %xmm3,%xmm3 - pxor %xmm4,%xmm4 - pxor %xmm5,%xmm5 - xorl %eax,%eax - popl %ebx - popl %ebp - ret -.align 2,0x90 -L015bad_pointer: - movl $-1,%eax - popl %ebx - popl %ebp - ret -.align 2,0x90 -L018bad_keybits: - pxor %xmm0,%xmm0 - movl $-2,%eax - popl %ebx - popl %ebp - ret -.globl _GFp_aes_hw_set_encrypt_key -.private_extern _GFp_aes_hw_set_encrypt_key -.align 4 -_GFp_aes_hw_set_encrypt_key: -L_GFp_aes_hw_set_encrypt_key_begin: - movl 4(%esp),%eax - movl 8(%esp),%ecx - movl 12(%esp),%edx - call __aesni_set_encrypt_key - ret -.align 6,0x90 -Lkey_const: -.long 202313229,202313229,202313229,202313229 -.long 67569157,67569157,67569157,67569157 -.long 1,1,1,1 -.long 27,27,27,27 -.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 -.byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 -.byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 -.byte 115,108,46,111,114,103,62,0 -.section __IMPORT,__pointers,non_lazy_symbol_pointers -L_GFp_ia32cap_P$non_lazy_ptr: -.indirect_symbol _GFp_ia32cap_P -.long 0 -#endif Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86-win32n.obj and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/pregenerated/aesni-x86-win32n.obj differ diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-ios32.S temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-ios32.S --- temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-ios32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-ios32.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,436 +0,0 @@ -// This file is generated from a similarly-named Perl script in the BoringSSL -// source tree. Do not edit by hand. - -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif - -#if !defined(OPENSSL_NO_ASM) -#include - -#if __ARM_MAX_ARCH__>=7 -.text - - -.code 32 -#undef __thumb2__ -.align 5 -Lrcon: -.long 0x01,0x01,0x01,0x01 -.long 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d @ rotate-n-splat -.long 0x1b,0x1b,0x1b,0x1b - -.text - -.globl _GFp_aes_hw_set_encrypt_key -.private_extern _GFp_aes_hw_set_encrypt_key -#ifdef __thumb2__ -.thumb_func _GFp_aes_hw_set_encrypt_key -#endif -.align 5 -_GFp_aes_hw_set_encrypt_key: -Lenc_key: - mov r3,#-1 - cmp r0,#0 - beq Lenc_key_abort - cmp r2,#0 - beq Lenc_key_abort - mov r3,#-2 - cmp r1,#128 - blt Lenc_key_abort - cmp r1,#256 - bgt Lenc_key_abort - tst r1,#0x3f - bne Lenc_key_abort - - adr r3,Lrcon - cmp r1,#192 - - veor q0,q0,q0 - vld1.8 {q3},[r0]! - mov r1,#8 @ reuse r1 - vld1.32 {q1,q2},[r3]! - - blt Loop128 - @ 192-bit key support was removed. - b L256 - -.align 4 -Loop128: - vtbl.8 d20,{q3},d4 - vtbl.8 d21,{q3},d5 - vext.8 q9,q0,q3,#12 - vst1.32 {q3},[r2]! -.byte 0x00,0x43,0xf0,0xf3 @ aese q10,q0 - subs r1,r1,#1 - - veor q3,q3,q9 - vext.8 q9,q0,q9,#12 - veor q3,q3,q9 - vext.8 q9,q0,q9,#12 - veor q10,q10,q1 - veor q3,q3,q9 - vshl.u8 q1,q1,#1 - veor q3,q3,q10 - bne Loop128 - - vld1.32 {q1},[r3] - - vtbl.8 d20,{q3},d4 - vtbl.8 d21,{q3},d5 - vext.8 q9,q0,q3,#12 - vst1.32 {q3},[r2]! -.byte 0x00,0x43,0xf0,0xf3 @ aese q10,q0 - - veor q3,q3,q9 - vext.8 q9,q0,q9,#12 - veor q3,q3,q9 - vext.8 q9,q0,q9,#12 - veor q10,q10,q1 - veor q3,q3,q9 - vshl.u8 q1,q1,#1 - veor q3,q3,q10 - - vtbl.8 d20,{q3},d4 - vtbl.8 d21,{q3},d5 - vext.8 q9,q0,q3,#12 - vst1.32 {q3},[r2]! -.byte 0x00,0x43,0xf0,0xf3 @ aese q10,q0 - - veor q3,q3,q9 - vext.8 q9,q0,q9,#12 - veor q3,q3,q9 - vext.8 q9,q0,q9,#12 - veor q10,q10,q1 - veor q3,q3,q9 - veor q3,q3,q10 - vst1.32 {q3},[r2] - add r2,r2,#0x50 - - mov r12,#10 - b Ldone - -@ 192-bit key support was removed. - -.align 4 -L256: - vld1.8 {q8},[r0] - mov r1,#7 - mov r12,#14 - vst1.32 {q3},[r2]! - -Loop256: - vtbl.8 d20,{q8},d4 - vtbl.8 d21,{q8},d5 - vext.8 q9,q0,q3,#12 - vst1.32 {q8},[r2]! -.byte 0x00,0x43,0xf0,0xf3 @ aese q10,q0 - subs r1,r1,#1 - - veor q3,q3,q9 - vext.8 q9,q0,q9,#12 - veor q3,q3,q9 - vext.8 q9,q0,q9,#12 - veor q10,q10,q1 - veor q3,q3,q9 - vshl.u8 q1,q1,#1 - veor q3,q3,q10 - vst1.32 {q3},[r2]! - beq Ldone - - vdup.32 q10,d7[1] - vext.8 q9,q0,q8,#12 -.byte 0x00,0x43,0xf0,0xf3 @ aese q10,q0 - - veor q8,q8,q9 - vext.8 q9,q0,q9,#12 - veor q8,q8,q9 - vext.8 q9,q0,q9,#12 - veor q8,q8,q9 - - veor q8,q8,q10 - b Loop256 - -Ldone: - str r12,[r2] - mov r3,#0 - -Lenc_key_abort: - mov r0,r3 @ return value - - bx lr - -.globl _GFp_aes_hw_encrypt -.private_extern _GFp_aes_hw_encrypt -#ifdef __thumb2__ -.thumb_func _GFp_aes_hw_encrypt -#endif -.align 5 -_GFp_aes_hw_encrypt: - AARCH64_VALID_CALL_TARGET - ldr r3,[r2,#240] - vld1.32 {q0},[r2]! - vld1.8 {q2},[r0] - sub r3,r3,#2 - vld1.32 {q1},[r2]! - -Loop_enc: -.byte 0x00,0x43,0xb0,0xf3 @ aese q2,q0 -.byte 0x84,0x43,0xb0,0xf3 @ aesmc q2,q2 - vld1.32 {q0},[r2]! - subs r3,r3,#2 -.byte 0x02,0x43,0xb0,0xf3 @ aese q2,q1 -.byte 0x84,0x43,0xb0,0xf3 @ aesmc q2,q2 - vld1.32 {q1},[r2]! - bgt Loop_enc - -.byte 0x00,0x43,0xb0,0xf3 @ aese q2,q0 -.byte 0x84,0x43,0xb0,0xf3 @ aesmc q2,q2 - vld1.32 {q0},[r2] -.byte 0x02,0x43,0xb0,0xf3 @ aese q2,q1 - veor q2,q2,q0 - - vst1.8 {q2},[r1] - bx lr - -.globl _GFp_aes_hw_decrypt -.private_extern _GFp_aes_hw_decrypt -#ifdef __thumb2__ -.thumb_func _GFp_aes_hw_decrypt -#endif -.align 5 -_GFp_aes_hw_decrypt: - AARCH64_VALID_CALL_TARGET - ldr r3,[r2,#240] - vld1.32 {q0},[r2]! - vld1.8 {q2},[r0] - sub r3,r3,#2 - vld1.32 {q1},[r2]! - -Loop_dec: -.byte 0x40,0x43,0xb0,0xf3 @ aesd q2,q0 -.byte 0xc4,0x43,0xb0,0xf3 @ aesimc q2,q2 - vld1.32 {q0},[r2]! - subs r3,r3,#2 -.byte 0x42,0x43,0xb0,0xf3 @ aesd q2,q1 -.byte 0xc4,0x43,0xb0,0xf3 @ aesimc q2,q2 - vld1.32 {q1},[r2]! - bgt Loop_dec - -.byte 0x40,0x43,0xb0,0xf3 @ aesd q2,q0 -.byte 0xc4,0x43,0xb0,0xf3 @ aesimc q2,q2 - vld1.32 {q0},[r2] -.byte 0x42,0x43,0xb0,0xf3 @ aesd q2,q1 - veor q2,q2,q0 - - vst1.8 {q2},[r1] - bx lr - -.globl _GFp_aes_hw_ctr32_encrypt_blocks -.private_extern _GFp_aes_hw_ctr32_encrypt_blocks -#ifdef __thumb2__ -.thumb_func _GFp_aes_hw_ctr32_encrypt_blocks -#endif -.align 5 -_GFp_aes_hw_ctr32_encrypt_blocks: - mov ip,sp - stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,lr} - vstmdb sp!,{d8,d9,d10,d11,d12,d13,d14,d15} @ ABI specification says so - ldr r4, [ip] @ load remaining arg - ldr r5,[r3,#240] - - ldr r8, [r4, #12] - vld1.32 {q0},[r4] - - vld1.32 {q8,q9},[r3] @ load key schedule... - sub r5,r5,#4 - mov r12,#16 - cmp r2,#2 - add r7,r3,r5,lsl#4 @ pointer to last 5 round keys - sub r5,r5,#2 - vld1.32 {q12,q13},[r7]! - vld1.32 {q14,q15},[r7]! - vld1.32 {q7},[r7] - add r7,r3,#32 - mov r6,r5 - movlo r12,#0 - - @ ARM Cortex-A57 and Cortex-A72 cores running in 32-bit mode are - @ affected by silicon errata #1742098 [0] and #1655431 [1], - @ respectively, where the second instruction of an aese/aesmc - @ instruction pair may execute twice if an interrupt is taken right - @ after the first instruction consumes an input register of which a - @ single 32-bit lane has been updated the last time it was modified. - @ - @ This function uses a counter in one 32-bit lane. The - @ could write to q1 and q10 directly, but that trips this bugs. - @ We write to q6 and copy to the final register as a workaround. - @ - @ [0] ARM-EPM-049219 v23 Cortex-A57 MPCore Software Developers Errata Notice - @ [1] ARM-EPM-012079 v11.0 Cortex-A72 MPCore Software Developers Errata Notice -#ifndef __ARMEB__ - rev r8, r8 -#endif - add r10, r8, #1 - vorr q6,q0,q0 - rev r10, r10 - vmov.32 d13[1],r10 - add r8, r8, #2 - vorr q1,q6,q6 - bls Lctr32_tail - rev r12, r8 - vmov.32 d13[1],r12 - sub r2,r2,#3 @ bias - vorr q10,q6,q6 - b Loop3x_ctr32 - -.align 4 -Loop3x_ctr32: -.byte 0x20,0x03,0xb0,0xf3 @ aese q0,q8 -.byte 0x80,0x03,0xb0,0xf3 @ aesmc q0,q0 -.byte 0x20,0x23,0xb0,0xf3 @ aese q1,q8 -.byte 0x82,0x23,0xb0,0xf3 @ aesmc q1,q1 -.byte 0x20,0x43,0xf0,0xf3 @ aese q10,q8 -.byte 0xa4,0x43,0xf0,0xf3 @ aesmc q10,q10 - vld1.32 {q8},[r7]! - subs r6,r6,#2 -.byte 0x22,0x03,0xb0,0xf3 @ aese q0,q9 -.byte 0x80,0x03,0xb0,0xf3 @ aesmc q0,q0 -.byte 0x22,0x23,0xb0,0xf3 @ aese q1,q9 -.byte 0x82,0x23,0xb0,0xf3 @ aesmc q1,q1 -.byte 0x22,0x43,0xf0,0xf3 @ aese q10,q9 -.byte 0xa4,0x43,0xf0,0xf3 @ aesmc q10,q10 - vld1.32 {q9},[r7]! - bgt Loop3x_ctr32 - -.byte 0x20,0x03,0xb0,0xf3 @ aese q0,q8 -.byte 0x80,0x83,0xb0,0xf3 @ aesmc q4,q0 -.byte 0x20,0x23,0xb0,0xf3 @ aese q1,q8 -.byte 0x82,0xa3,0xb0,0xf3 @ aesmc q5,q1 - vld1.8 {q2},[r0]! - add r9,r8,#1 -.byte 0x20,0x43,0xf0,0xf3 @ aese q10,q8 -.byte 0xa4,0x43,0xf0,0xf3 @ aesmc q10,q10 - vld1.8 {q3},[r0]! - rev r9,r9 -.byte 0x22,0x83,0xb0,0xf3 @ aese q4,q9 -.byte 0x88,0x83,0xb0,0xf3 @ aesmc q4,q4 -.byte 0x22,0xa3,0xb0,0xf3 @ aese q5,q9 -.byte 0x8a,0xa3,0xb0,0xf3 @ aesmc q5,q5 - vld1.8 {q11},[r0]! - mov r7,r3 -.byte 0x22,0x43,0xf0,0xf3 @ aese q10,q9 -.byte 0xa4,0x23,0xf0,0xf3 @ aesmc q9,q10 -.byte 0x28,0x83,0xb0,0xf3 @ aese q4,q12 -.byte 0x88,0x83,0xb0,0xf3 @ aesmc q4,q4 -.byte 0x28,0xa3,0xb0,0xf3 @ aese q5,q12 -.byte 0x8a,0xa3,0xb0,0xf3 @ aesmc q5,q5 - veor q2,q2,q7 - add r10,r8,#2 -.byte 0x28,0x23,0xf0,0xf3 @ aese q9,q12 -.byte 0xa2,0x23,0xf0,0xf3 @ aesmc q9,q9 - veor q3,q3,q7 - add r8,r8,#3 -.byte 0x2a,0x83,0xb0,0xf3 @ aese q4,q13 -.byte 0x88,0x83,0xb0,0xf3 @ aesmc q4,q4 -.byte 0x2a,0xa3,0xb0,0xf3 @ aese q5,q13 -.byte 0x8a,0xa3,0xb0,0xf3 @ aesmc q5,q5 - @ Note the logic to update q0, q1, and q1 is written to work - @ around a bug in ARM Cortex-A57 and Cortex-A72 cores running in - @ 32-bit mode. See the comment above. - veor q11,q11,q7 - vmov.32 d13[1], r9 -.byte 0x2a,0x23,0xf0,0xf3 @ aese q9,q13 -.byte 0xa2,0x23,0xf0,0xf3 @ aesmc q9,q9 - vorr q0,q6,q6 - rev r10,r10 -.byte 0x2c,0x83,0xb0,0xf3 @ aese q4,q14 -.byte 0x88,0x83,0xb0,0xf3 @ aesmc q4,q4 - vmov.32 d13[1], r10 - rev r12,r8 -.byte 0x2c,0xa3,0xb0,0xf3 @ aese q5,q14 -.byte 0x8a,0xa3,0xb0,0xf3 @ aesmc q5,q5 - vorr q1,q6,q6 - vmov.32 d13[1], r12 -.byte 0x2c,0x23,0xf0,0xf3 @ aese q9,q14 -.byte 0xa2,0x23,0xf0,0xf3 @ aesmc q9,q9 - vorr q10,q6,q6 - subs r2,r2,#3 -.byte 0x2e,0x83,0xb0,0xf3 @ aese q4,q15 -.byte 0x2e,0xa3,0xb0,0xf3 @ aese q5,q15 -.byte 0x2e,0x23,0xf0,0xf3 @ aese q9,q15 - - veor q2,q2,q4 - vld1.32 {q8},[r7]! @ re-pre-load rndkey[0] - vst1.8 {q2},[r1]! - veor q3,q3,q5 - mov r6,r5 - vst1.8 {q3},[r1]! - veor q11,q11,q9 - vld1.32 {q9},[r7]! @ re-pre-load rndkey[1] - vst1.8 {q11},[r1]! - bhs Loop3x_ctr32 - - adds r2,r2,#3 - beq Lctr32_done - cmp r2,#1 - mov r12,#16 - moveq r12,#0 - -Lctr32_tail: -.byte 0x20,0x03,0xb0,0xf3 @ aese q0,q8 -.byte 0x80,0x03,0xb0,0xf3 @ aesmc q0,q0 -.byte 0x20,0x23,0xb0,0xf3 @ aese q1,q8 -.byte 0x82,0x23,0xb0,0xf3 @ aesmc q1,q1 - vld1.32 {q8},[r7]! - subs r6,r6,#2 -.byte 0x22,0x03,0xb0,0xf3 @ aese q0,q9 -.byte 0x80,0x03,0xb0,0xf3 @ aesmc q0,q0 -.byte 0x22,0x23,0xb0,0xf3 @ aese q1,q9 -.byte 0x82,0x23,0xb0,0xf3 @ aesmc q1,q1 - vld1.32 {q9},[r7]! - bgt Lctr32_tail - -.byte 0x20,0x03,0xb0,0xf3 @ aese q0,q8 -.byte 0x80,0x03,0xb0,0xf3 @ aesmc q0,q0 -.byte 0x20,0x23,0xb0,0xf3 @ aese q1,q8 -.byte 0x82,0x23,0xb0,0xf3 @ aesmc q1,q1 -.byte 0x22,0x03,0xb0,0xf3 @ aese q0,q9 -.byte 0x80,0x03,0xb0,0xf3 @ aesmc q0,q0 -.byte 0x22,0x23,0xb0,0xf3 @ aese q1,q9 -.byte 0x82,0x23,0xb0,0xf3 @ aesmc q1,q1 - vld1.8 {q2},[r0],r12 -.byte 0x28,0x03,0xb0,0xf3 @ aese q0,q12 -.byte 0x80,0x03,0xb0,0xf3 @ aesmc q0,q0 -.byte 0x28,0x23,0xb0,0xf3 @ aese q1,q12 -.byte 0x82,0x23,0xb0,0xf3 @ aesmc q1,q1 - vld1.8 {q3},[r0] -.byte 0x2a,0x03,0xb0,0xf3 @ aese q0,q13 -.byte 0x80,0x03,0xb0,0xf3 @ aesmc q0,q0 -.byte 0x2a,0x23,0xb0,0xf3 @ aese q1,q13 -.byte 0x82,0x23,0xb0,0xf3 @ aesmc q1,q1 - veor q2,q2,q7 -.byte 0x2c,0x03,0xb0,0xf3 @ aese q0,q14 -.byte 0x80,0x03,0xb0,0xf3 @ aesmc q0,q0 -.byte 0x2c,0x23,0xb0,0xf3 @ aese q1,q14 -.byte 0x82,0x23,0xb0,0xf3 @ aesmc q1,q1 - veor q3,q3,q7 -.byte 0x2e,0x03,0xb0,0xf3 @ aese q0,q15 -.byte 0x2e,0x23,0xb0,0xf3 @ aese q1,q15 - - cmp r2,#1 - veor q2,q2,q0 - veor q3,q3,q1 - vst1.8 {q2},[r1]! - beq Lctr32_done - vst1.8 {q3},[r1] - -Lctr32_done: - vldmia sp!,{d8,d9,d10,d11,d12,d13,d14,d15} - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,pc} - -#endif -#endif // !OPENSSL_NO_ASM diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-ios64.S temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-ios64.S --- temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-ios64.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-ios64.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,15 +1,10 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#include +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__APPLE__) +#include #if __ARM_MAX_ARCH__>=7 .text @@ -23,11 +18,11 @@ .text -.globl _GFp_aes_hw_set_encrypt_key -.private_extern _GFp_aes_hw_set_encrypt_key +.globl _aes_hw_set_encrypt_key +.private_extern _aes_hw_set_encrypt_key .align 5 -_GFp_aes_hw_set_encrypt_key: +_aes_hw_set_encrypt_key: Lenc_key: // Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later. AARCH64_VALID_CALL_TARGET @@ -160,11 +155,11 @@ ldr x29,[sp],#16 ret -.globl _GFp_aes_hw_encrypt -.private_extern _GFp_aes_hw_encrypt +.globl _aes_hw_encrypt +.private_extern _aes_hw_encrypt .align 5 -_GFp_aes_hw_encrypt: +_aes_hw_encrypt: AARCH64_VALID_CALL_TARGET ldr w3,[x2,#240] ld1 {v0.4s},[x2],#16 @@ -191,42 +186,11 @@ st1 {v2.16b},[x1] ret -.globl _GFp_aes_hw_decrypt -.private_extern _GFp_aes_hw_decrypt - -.align 5 -_GFp_aes_hw_decrypt: - AARCH64_VALID_CALL_TARGET - ldr w3,[x2,#240] - ld1 {v0.4s},[x2],#16 - ld1 {v2.16b},[x0] - sub w3,w3,#2 - ld1 {v1.4s},[x2],#16 - -Loop_dec: - aesd v2.16b,v0.16b - aesimc v2.16b,v2.16b - ld1 {v0.4s},[x2],#16 - subs w3,w3,#2 - aesd v2.16b,v1.16b - aesimc v2.16b,v2.16b - ld1 {v1.4s},[x2],#16 - b.gt Loop_dec - - aesd v2.16b,v0.16b - aesimc v2.16b,v2.16b - ld1 {v0.4s},[x2] - aesd v2.16b,v1.16b - eor v2.16b,v2.16b,v0.16b - - st1 {v2.16b},[x1] - ret - -.globl _GFp_aes_hw_ctr32_encrypt_blocks -.private_extern _GFp_aes_hw_ctr32_encrypt_blocks +.globl _aes_hw_ctr32_encrypt_blocks +.private_extern _aes_hw_ctr32_encrypt_blocks .align 5 -_GFp_aes_hw_ctr32_encrypt_blocks: +_aes_hw_ctr32_encrypt_blocks: // Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later. AARCH64_VALID_CALL_TARGET stp x29,x30,[sp,#-16]! @@ -262,7 +226,7 @@ // // [0] ARM-EPM-049219 v23 Cortex-A57 MPCore Software Developers Errata Notice // [1] ARM-EPM-012079 v11.0 Cortex-A72 MPCore Software Developers Errata Notice -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w8, w8 #endif add w10, w8, #1 @@ -424,4 +388,4 @@ ret #endif -#endif // !OPENSSL_NO_ASM +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__APPLE__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-linux32.S temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-linux32.S --- temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-linux32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-linux32.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,16 +1,10 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#if defined(__arm__) -#include +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_ARM) && defined(__ELF__) +#include #if __ARM_MAX_ARCH__>=7 .text @@ -26,11 +20,11 @@ .text -.globl GFp_aes_hw_set_encrypt_key -.hidden GFp_aes_hw_set_encrypt_key -.type GFp_aes_hw_set_encrypt_key,%function +.globl aes_hw_set_encrypt_key +.hidden aes_hw_set_encrypt_key +.type aes_hw_set_encrypt_key,%function .align 5 -GFp_aes_hw_set_encrypt_key: +aes_hw_set_encrypt_key: .Lenc_key: mov r3,#-1 cmp r0,#0 @@ -161,12 +155,12 @@ mov r0,r3 @ return value bx lr -.size GFp_aes_hw_set_encrypt_key,.-GFp_aes_hw_set_encrypt_key -.globl GFp_aes_hw_encrypt -.hidden GFp_aes_hw_encrypt -.type GFp_aes_hw_encrypt,%function +.size aes_hw_set_encrypt_key,.-aes_hw_set_encrypt_key +.globl aes_hw_encrypt +.hidden aes_hw_encrypt +.type aes_hw_encrypt,%function .align 5 -GFp_aes_hw_encrypt: +aes_hw_encrypt: AARCH64_VALID_CALL_TARGET ldr r3,[r2,#240] vld1.32 {q0},[r2]! @@ -192,43 +186,12 @@ vst1.8 {q2},[r1] bx lr -.size GFp_aes_hw_encrypt,.-GFp_aes_hw_encrypt -.globl GFp_aes_hw_decrypt -.hidden GFp_aes_hw_decrypt -.type GFp_aes_hw_decrypt,%function -.align 5 -GFp_aes_hw_decrypt: - AARCH64_VALID_CALL_TARGET - ldr r3,[r2,#240] - vld1.32 {q0},[r2]! - vld1.8 {q2},[r0] - sub r3,r3,#2 - vld1.32 {q1},[r2]! - -.Loop_dec: -.byte 0x40,0x43,0xb0,0xf3 @ aesd q2,q0 -.byte 0xc4,0x43,0xb0,0xf3 @ aesimc q2,q2 - vld1.32 {q0},[r2]! - subs r3,r3,#2 -.byte 0x42,0x43,0xb0,0xf3 @ aesd q2,q1 -.byte 0xc4,0x43,0xb0,0xf3 @ aesimc q2,q2 - vld1.32 {q1},[r2]! - bgt .Loop_dec - -.byte 0x40,0x43,0xb0,0xf3 @ aesd q2,q0 -.byte 0xc4,0x43,0xb0,0xf3 @ aesimc q2,q2 - vld1.32 {q0},[r2] -.byte 0x42,0x43,0xb0,0xf3 @ aesd q2,q1 - veor q2,q2,q0 - - vst1.8 {q2},[r1] - bx lr -.size GFp_aes_hw_decrypt,.-GFp_aes_hw_decrypt -.globl GFp_aes_hw_ctr32_encrypt_blocks -.hidden GFp_aes_hw_ctr32_encrypt_blocks -.type GFp_aes_hw_ctr32_encrypt_blocks,%function +.size aes_hw_encrypt,.-aes_hw_encrypt +.globl aes_hw_ctr32_encrypt_blocks +.hidden aes_hw_ctr32_encrypt_blocks +.type aes_hw_ctr32_encrypt_blocks,%function .align 5 -GFp_aes_hw_ctr32_encrypt_blocks: +aes_hw_ctr32_encrypt_blocks: mov ip,sp stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,lr} vstmdb sp!,{d8,d9,d10,d11,d12,d13,d14,d15} @ ABI specification says so @@ -424,8 +387,6 @@ .Lctr32_done: vldmia sp!,{d8,d9,d10,d11,d12,d13,d14,d15} ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,pc} -.size GFp_aes_hw_ctr32_encrypt_blocks,.-GFp_aes_hw_ctr32_encrypt_blocks -#endif +.size aes_hw_ctr32_encrypt_blocks,.-aes_hw_ctr32_encrypt_blocks #endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_ARM) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-linux64.S temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-linux64.S --- temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-linux64.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-linux64.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,16 +1,10 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#if defined(__aarch64__) -#include +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__ELF__) +#include #if __ARM_MAX_ARCH__>=7 .text @@ -24,11 +18,11 @@ .text -.globl GFp_aes_hw_set_encrypt_key -.hidden GFp_aes_hw_set_encrypt_key -.type GFp_aes_hw_set_encrypt_key,%function +.globl aes_hw_set_encrypt_key +.hidden aes_hw_set_encrypt_key +.type aes_hw_set_encrypt_key,%function .align 5 -GFp_aes_hw_set_encrypt_key: +aes_hw_set_encrypt_key: .Lenc_key: // Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later. AARCH64_VALID_CALL_TARGET @@ -160,12 +154,12 @@ mov x0,x3 // return value ldr x29,[sp],#16 ret -.size GFp_aes_hw_set_encrypt_key,.-GFp_aes_hw_set_encrypt_key -.globl GFp_aes_hw_encrypt -.hidden GFp_aes_hw_encrypt -.type GFp_aes_hw_encrypt,%function +.size aes_hw_set_encrypt_key,.-aes_hw_set_encrypt_key +.globl aes_hw_encrypt +.hidden aes_hw_encrypt +.type aes_hw_encrypt,%function .align 5 -GFp_aes_hw_encrypt: +aes_hw_encrypt: AARCH64_VALID_CALL_TARGET ldr w3,[x2,#240] ld1 {v0.4s},[x2],#16 @@ -191,43 +185,12 @@ st1 {v2.16b},[x1] ret -.size GFp_aes_hw_encrypt,.-GFp_aes_hw_encrypt -.globl GFp_aes_hw_decrypt -.hidden GFp_aes_hw_decrypt -.type GFp_aes_hw_decrypt,%function -.align 5 -GFp_aes_hw_decrypt: - AARCH64_VALID_CALL_TARGET - ldr w3,[x2,#240] - ld1 {v0.4s},[x2],#16 - ld1 {v2.16b},[x0] - sub w3,w3,#2 - ld1 {v1.4s},[x2],#16 - -.Loop_dec: - aesd v2.16b,v0.16b - aesimc v2.16b,v2.16b - ld1 {v0.4s},[x2],#16 - subs w3,w3,#2 - aesd v2.16b,v1.16b - aesimc v2.16b,v2.16b - ld1 {v1.4s},[x2],#16 - b.gt .Loop_dec - - aesd v2.16b,v0.16b - aesimc v2.16b,v2.16b - ld1 {v0.4s},[x2] - aesd v2.16b,v1.16b - eor v2.16b,v2.16b,v0.16b - - st1 {v2.16b},[x1] - ret -.size GFp_aes_hw_decrypt,.-GFp_aes_hw_decrypt -.globl GFp_aes_hw_ctr32_encrypt_blocks -.hidden GFp_aes_hw_ctr32_encrypt_blocks -.type GFp_aes_hw_ctr32_encrypt_blocks,%function +.size aes_hw_encrypt,.-aes_hw_encrypt +.globl aes_hw_ctr32_encrypt_blocks +.hidden aes_hw_ctr32_encrypt_blocks +.type aes_hw_ctr32_encrypt_blocks,%function .align 5 -GFp_aes_hw_ctr32_encrypt_blocks: +aes_hw_ctr32_encrypt_blocks: // Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later. AARCH64_VALID_CALL_TARGET stp x29,x30,[sp,#-16]! @@ -263,7 +226,7 @@ // // [0] ARM-EPM-049219 v23 Cortex-A57 MPCore Software Developers Errata Notice // [1] ARM-EPM-012079 v11.0 Cortex-A72 MPCore Software Developers Errata Notice -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w8, w8 #endif add w10, w8, #1 @@ -423,8 +386,6 @@ .Lctr32_done: ldr x29,[sp],#16 ret -.size GFp_aes_hw_ctr32_encrypt_blocks,.-GFp_aes_hw_ctr32_encrypt_blocks -#endif +.size aes_hw_ctr32_encrypt_blocks,.-aes_hw_ctr32_encrypt_blocks #endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-win64.S temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-win64.S --- temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-win64.S 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/aesv8-armx-win64.S 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,397 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. + +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(_WIN32) +#include + +#if __ARM_MAX_ARCH__>=7 +.text +.arch armv8-a+crypto +.section .rodata +.align 5 +Lrcon: +.long 0x01,0x01,0x01,0x01 +.long 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d // rotate-n-splat +.long 0x1b,0x1b,0x1b,0x1b + +.text + +.globl aes_hw_set_encrypt_key + +.def aes_hw_set_encrypt_key + .type 32 +.endef +.align 5 +aes_hw_set_encrypt_key: +Lenc_key: + // Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later. + AARCH64_VALID_CALL_TARGET + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + mov x3,#-1 + cmp x0,#0 + b.eq Lenc_key_abort + cmp x2,#0 + b.eq Lenc_key_abort + mov x3,#-2 + cmp w1,#128 + b.lt Lenc_key_abort + cmp w1,#256 + b.gt Lenc_key_abort + tst w1,#0x3f + b.ne Lenc_key_abort + + adrp x3,Lrcon + add x3,x3,:lo12:Lrcon + cmp w1,#192 + + eor v0.16b,v0.16b,v0.16b + ld1 {v3.16b},[x0],#16 + mov w1,#8 // reuse w1 + ld1 {v1.4s,v2.4s},[x3],#32 + + b.lt Loop128 + // 192-bit key support was removed. + b L256 + +.align 4 +Loop128: + tbl v6.16b,{v3.16b},v2.16b + ext v5.16b,v0.16b,v3.16b,#12 + st1 {v3.4s},[x2],#16 + aese v6.16b,v0.16b + subs w1,w1,#1 + + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v6.16b,v6.16b,v1.16b + eor v3.16b,v3.16b,v5.16b + shl v1.16b,v1.16b,#1 + eor v3.16b,v3.16b,v6.16b + b.ne Loop128 + + ld1 {v1.4s},[x3] + + tbl v6.16b,{v3.16b},v2.16b + ext v5.16b,v0.16b,v3.16b,#12 + st1 {v3.4s},[x2],#16 + aese v6.16b,v0.16b + + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v6.16b,v6.16b,v1.16b + eor v3.16b,v3.16b,v5.16b + shl v1.16b,v1.16b,#1 + eor v3.16b,v3.16b,v6.16b + + tbl v6.16b,{v3.16b},v2.16b + ext v5.16b,v0.16b,v3.16b,#12 + st1 {v3.4s},[x2],#16 + aese v6.16b,v0.16b + + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v6.16b,v6.16b,v1.16b + eor v3.16b,v3.16b,v5.16b + eor v3.16b,v3.16b,v6.16b + st1 {v3.4s},[x2] + add x2,x2,#0x50 + + mov w12,#10 + b Ldone + +// 192-bit key support was removed. + +.align 4 +L256: + ld1 {v4.16b},[x0] + mov w1,#7 + mov w12,#14 + st1 {v3.4s},[x2],#16 + +Loop256: + tbl v6.16b,{v4.16b},v2.16b + ext v5.16b,v0.16b,v3.16b,#12 + st1 {v4.4s},[x2],#16 + aese v6.16b,v0.16b + subs w1,w1,#1 + + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v6.16b,v6.16b,v1.16b + eor v3.16b,v3.16b,v5.16b + shl v1.16b,v1.16b,#1 + eor v3.16b,v3.16b,v6.16b + st1 {v3.4s},[x2],#16 + b.eq Ldone + + dup v6.4s,v3.s[3] // just splat + ext v5.16b,v0.16b,v4.16b,#12 + aese v6.16b,v0.16b + + eor v4.16b,v4.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v4.16b,v4.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v4.16b,v4.16b,v5.16b + + eor v4.16b,v4.16b,v6.16b + b Loop256 + +Ldone: + str w12,[x2] + mov x3,#0 + +Lenc_key_abort: + mov x0,x3 // return value + ldr x29,[sp],#16 + ret + +.globl aes_hw_encrypt + +.def aes_hw_encrypt + .type 32 +.endef +.align 5 +aes_hw_encrypt: + AARCH64_VALID_CALL_TARGET + ldr w3,[x2,#240] + ld1 {v0.4s},[x2],#16 + ld1 {v2.16b},[x0] + sub w3,w3,#2 + ld1 {v1.4s},[x2],#16 + +Loop_enc: + aese v2.16b,v0.16b + aesmc v2.16b,v2.16b + ld1 {v0.4s},[x2],#16 + subs w3,w3,#2 + aese v2.16b,v1.16b + aesmc v2.16b,v2.16b + ld1 {v1.4s},[x2],#16 + b.gt Loop_enc + + aese v2.16b,v0.16b + aesmc v2.16b,v2.16b + ld1 {v0.4s},[x2] + aese v2.16b,v1.16b + eor v2.16b,v2.16b,v0.16b + + st1 {v2.16b},[x1] + ret + +.globl aes_hw_ctr32_encrypt_blocks + +.def aes_hw_ctr32_encrypt_blocks + .type 32 +.endef +.align 5 +aes_hw_ctr32_encrypt_blocks: + // Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later. + AARCH64_VALID_CALL_TARGET + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + ldr w5,[x3,#240] + + ldr w8, [x4, #12] + ld1 {v0.4s},[x4] + + ld1 {v16.4s,v17.4s},[x3] // load key schedule... + sub w5,w5,#4 + mov x12,#16 + cmp x2,#2 + add x7,x3,x5,lsl#4 // pointer to last 5 round keys + sub w5,w5,#2 + ld1 {v20.4s,v21.4s},[x7],#32 + ld1 {v22.4s,v23.4s},[x7],#32 + ld1 {v7.4s},[x7] + add x7,x3,#32 + mov w6,w5 + csel x12,xzr,x12,lo + + // ARM Cortex-A57 and Cortex-A72 cores running in 32-bit mode are + // affected by silicon errata #1742098 [0] and #1655431 [1], + // respectively, where the second instruction of an aese/aesmc + // instruction pair may execute twice if an interrupt is taken right + // after the first instruction consumes an input register of which a + // single 32-bit lane has been updated the last time it was modified. + // + // This function uses a counter in one 32-bit lane. The vmov lines + // could write to v1.16b and v18.16b directly, but that trips this bugs. + // We write to v6.16b and copy to the final register as a workaround. + // + // [0] ARM-EPM-049219 v23 Cortex-A57 MPCore Software Developers Errata Notice + // [1] ARM-EPM-012079 v11.0 Cortex-A72 MPCore Software Developers Errata Notice +#ifndef __AARCH64EB__ + rev w8, w8 +#endif + add w10, w8, #1 + orr v6.16b,v0.16b,v0.16b + rev w10, w10 + mov v6.s[3],w10 + add w8, w8, #2 + orr v1.16b,v6.16b,v6.16b + b.ls Lctr32_tail + rev w12, w8 + mov v6.s[3],w12 + sub x2,x2,#3 // bias + orr v18.16b,v6.16b,v6.16b + b Loop3x_ctr32 + +.align 4 +Loop3x_ctr32: + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + aese v1.16b,v16.16b + aesmc v1.16b,v1.16b + aese v18.16b,v16.16b + aesmc v18.16b,v18.16b + ld1 {v16.4s},[x7],#16 + subs w6,w6,#2 + aese v0.16b,v17.16b + aesmc v0.16b,v0.16b + aese v1.16b,v17.16b + aesmc v1.16b,v1.16b + aese v18.16b,v17.16b + aesmc v18.16b,v18.16b + ld1 {v17.4s},[x7],#16 + b.gt Loop3x_ctr32 + + aese v0.16b,v16.16b + aesmc v4.16b,v0.16b + aese v1.16b,v16.16b + aesmc v5.16b,v1.16b + ld1 {v2.16b},[x0],#16 + add w9,w8,#1 + aese v18.16b,v16.16b + aesmc v18.16b,v18.16b + ld1 {v3.16b},[x0],#16 + rev w9,w9 + aese v4.16b,v17.16b + aesmc v4.16b,v4.16b + aese v5.16b,v17.16b + aesmc v5.16b,v5.16b + ld1 {v19.16b},[x0],#16 + mov x7,x3 + aese v18.16b,v17.16b + aesmc v17.16b,v18.16b + aese v4.16b,v20.16b + aesmc v4.16b,v4.16b + aese v5.16b,v20.16b + aesmc v5.16b,v5.16b + eor v2.16b,v2.16b,v7.16b + add w10,w8,#2 + aese v17.16b,v20.16b + aesmc v17.16b,v17.16b + eor v3.16b,v3.16b,v7.16b + add w8,w8,#3 + aese v4.16b,v21.16b + aesmc v4.16b,v4.16b + aese v5.16b,v21.16b + aesmc v5.16b,v5.16b + // Note the logic to update v0.16b, v1.16b, and v1.16b is written to work + // around a bug in ARM Cortex-A57 and Cortex-A72 cores running in + // 32-bit mode. See the comment above. + eor v19.16b,v19.16b,v7.16b + mov v6.s[3], w9 + aese v17.16b,v21.16b + aesmc v17.16b,v17.16b + orr v0.16b,v6.16b,v6.16b + rev w10,w10 + aese v4.16b,v22.16b + aesmc v4.16b,v4.16b + mov v6.s[3], w10 + rev w12,w8 + aese v5.16b,v22.16b + aesmc v5.16b,v5.16b + orr v1.16b,v6.16b,v6.16b + mov v6.s[3], w12 + aese v17.16b,v22.16b + aesmc v17.16b,v17.16b + orr v18.16b,v6.16b,v6.16b + subs x2,x2,#3 + aese v4.16b,v23.16b + aese v5.16b,v23.16b + aese v17.16b,v23.16b + + eor v2.16b,v2.16b,v4.16b + ld1 {v16.4s},[x7],#16 // re-pre-load rndkey[0] + st1 {v2.16b},[x1],#16 + eor v3.16b,v3.16b,v5.16b + mov w6,w5 + st1 {v3.16b},[x1],#16 + eor v19.16b,v19.16b,v17.16b + ld1 {v17.4s},[x7],#16 // re-pre-load rndkey[1] + st1 {v19.16b},[x1],#16 + b.hs Loop3x_ctr32 + + adds x2,x2,#3 + b.eq Lctr32_done + cmp x2,#1 + mov x12,#16 + csel x12,xzr,x12,eq + +Lctr32_tail: + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + aese v1.16b,v16.16b + aesmc v1.16b,v1.16b + ld1 {v16.4s},[x7],#16 + subs w6,w6,#2 + aese v0.16b,v17.16b + aesmc v0.16b,v0.16b + aese v1.16b,v17.16b + aesmc v1.16b,v1.16b + ld1 {v17.4s},[x7],#16 + b.gt Lctr32_tail + + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + aese v1.16b,v16.16b + aesmc v1.16b,v1.16b + aese v0.16b,v17.16b + aesmc v0.16b,v0.16b + aese v1.16b,v17.16b + aesmc v1.16b,v1.16b + ld1 {v2.16b},[x0],x12 + aese v0.16b,v20.16b + aesmc v0.16b,v0.16b + aese v1.16b,v20.16b + aesmc v1.16b,v1.16b + ld1 {v3.16b},[x0] + aese v0.16b,v21.16b + aesmc v0.16b,v0.16b + aese v1.16b,v21.16b + aesmc v1.16b,v1.16b + eor v2.16b,v2.16b,v7.16b + aese v0.16b,v22.16b + aesmc v0.16b,v0.16b + aese v1.16b,v22.16b + aesmc v1.16b,v1.16b + eor v3.16b,v3.16b,v7.16b + aese v0.16b,v23.16b + aese v1.16b,v23.16b + + cmp x2,#1 + eor v2.16b,v2.16b,v0.16b + eor v3.16b,v3.16b,v1.16b + st1 {v2.16b},[x1],#16 + b.eq Lctr32_done + st1 {v3.16b},[x1] + +Lctr32_done: + ldr x29,[sp],#16 + ret + +#endif +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(_WIN32) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/armv4-mont-ios32.S temporalio-1.3.0/vendor/ring/pregenerated/armv4-mont-ios32.S --- temporalio-1.3.0/vendor/ring/pregenerated/armv4-mont-ios32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/armv4-mont-ios32.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,972 +0,0 @@ -// This file is generated from a similarly-named Perl script in the BoringSSL -// source tree. Do not edit by hand. - -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif - -#if !defined(OPENSSL_NO_ASM) -#include - -@ Silence ARMv8 deprecated IT instruction warnings. This file is used by both -@ ARMv7 and ARMv8 processors and does not use ARMv8 instructions. - - -.text -#if defined(__thumb2__) -.syntax unified -.thumb -#else -.code 32 -#endif - -#if __ARM_MAX_ARCH__>=7 - -.private_extern _GFp_armcap_P -.align 5 -LOPENSSL_armcap: -.word _GFp_armcap_P-Lbn_mul_mont -#endif - -.globl _GFp_bn_mul_mont -.private_extern _GFp_bn_mul_mont -#ifdef __thumb2__ -.thumb_func _GFp_bn_mul_mont -#endif - -.align 5 -_GFp_bn_mul_mont: -Lbn_mul_mont: - ldr ip,[sp,#4] @ load num - stmdb sp!,{r0,r2} @ sp points at argument block -#if __ARM_MAX_ARCH__>=7 - tst ip,#7 - bne Lialu - adr r0,Lbn_mul_mont - ldr r2,LOPENSSL_armcap - ldr r0,[r0,r2] -#ifdef __APPLE__ - ldr r0,[r0] -#endif - tst r0,#ARMV7_NEON @ NEON available? - ldmia sp, {r0,r2} - beq Lialu - add sp,sp,#8 - b bn_mul8x_mont_neon -.align 4 -Lialu: -#endif - cmp ip,#2 - mov r0,ip @ load num -#ifdef __thumb2__ - ittt lt -#endif - movlt r0,#0 - addlt sp,sp,#2*4 - blt Labrt - - stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} @ save 10 registers - - mov r0,r0,lsl#2 @ rescale r0 for byte count - sub sp,sp,r0 @ alloca(4*num) - sub sp,sp,#4 @ +extra dword - sub r0,r0,#4 @ "num=num-1" - add r4,r2,r0 @ &bp[num-1] - - add r0,sp,r0 @ r0 to point at &tp[num-1] - ldr r8,[r0,#14*4] @ &n0 - ldr r2,[r2] @ bp[0] - ldr r5,[r1],#4 @ ap[0],ap++ - ldr r6,[r3],#4 @ np[0],np++ - ldr r8,[r8] @ *n0 - str r4,[r0,#15*4] @ save &bp[num] - - umull r10,r11,r5,r2 @ ap[0]*bp[0] - str r8,[r0,#14*4] @ save n0 value - mul r8,r10,r8 @ "tp[0]"*n0 - mov r12,#0 - umlal r10,r12,r6,r8 @ np[0]*n0+"t[0]" - mov r4,sp - -L1st: - ldr r5,[r1],#4 @ ap[j],ap++ - mov r10,r11 - ldr r6,[r3],#4 @ np[j],np++ - mov r11,#0 - umlal r10,r11,r5,r2 @ ap[j]*bp[0] - mov r14,#0 - umlal r12,r14,r6,r8 @ np[j]*n0 - adds r12,r12,r10 - str r12,[r4],#4 @ tp[j-1]=,tp++ - adc r12,r14,#0 - cmp r4,r0 - bne L1st - - adds r12,r12,r11 - ldr r4,[r0,#13*4] @ restore bp - mov r14,#0 - ldr r8,[r0,#14*4] @ restore n0 - adc r14,r14,#0 - str r12,[r0] @ tp[num-1]= - mov r7,sp - str r14,[r0,#4] @ tp[num]= - -Louter: - sub r7,r0,r7 @ "original" r0-1 value - sub r1,r1,r7 @ "rewind" ap to &ap[1] - ldr r2,[r4,#4]! @ *(++bp) - sub r3,r3,r7 @ "rewind" np to &np[1] - ldr r5,[r1,#-4] @ ap[0] - ldr r10,[sp] @ tp[0] - ldr r6,[r3,#-4] @ np[0] - ldr r7,[sp,#4] @ tp[1] - - mov r11,#0 - umlal r10,r11,r5,r2 @ ap[0]*bp[i]+tp[0] - str r4,[r0,#13*4] @ save bp - mul r8,r10,r8 - mov r12,#0 - umlal r10,r12,r6,r8 @ np[0]*n0+"tp[0]" - mov r4,sp - -Linner: - ldr r5,[r1],#4 @ ap[j],ap++ - adds r10,r11,r7 @ +=tp[j] - ldr r6,[r3],#4 @ np[j],np++ - mov r11,#0 - umlal r10,r11,r5,r2 @ ap[j]*bp[i] - mov r14,#0 - umlal r12,r14,r6,r8 @ np[j]*n0 - adc r11,r11,#0 - ldr r7,[r4,#8] @ tp[j+1] - adds r12,r12,r10 - str r12,[r4],#4 @ tp[j-1]=,tp++ - adc r12,r14,#0 - cmp r4,r0 - bne Linner - - adds r12,r12,r11 - mov r14,#0 - ldr r4,[r0,#13*4] @ restore bp - adc r14,r14,#0 - ldr r8,[r0,#14*4] @ restore n0 - adds r12,r12,r7 - ldr r7,[r0,#15*4] @ restore &bp[num] - adc r14,r14,#0 - str r12,[r0] @ tp[num-1]= - str r14,[r0,#4] @ tp[num]= - - cmp r4,r7 -#ifdef __thumb2__ - itt ne -#endif - movne r7,sp - bne Louter - - ldr r2,[r0,#12*4] @ pull rp - mov r5,sp - add r0,r0,#4 @ r0 to point at &tp[num] - sub r5,r0,r5 @ "original" num value - mov r4,sp @ "rewind" r4 - mov r1,r4 @ "borrow" r1 - sub r3,r3,r5 @ "rewind" r3 to &np[0] - - subs r7,r7,r7 @ "clear" carry flag -Lsub: ldr r7,[r4],#4 - ldr r6,[r3],#4 - sbcs r7,r7,r6 @ tp[j]-np[j] - str r7,[r2],#4 @ rp[j]= - teq r4,r0 @ preserve carry - bne Lsub - sbcs r14,r14,#0 @ upmost carry - mov r4,sp @ "rewind" r4 - sub r2,r2,r5 @ "rewind" r2 - -Lcopy: ldr r7,[r4] @ conditional copy - ldr r5,[r2] - str sp,[r4],#4 @ zap tp -#ifdef __thumb2__ - it cc -#endif - movcc r5,r7 - str r5,[r2],#4 - teq r4,r0 @ preserve carry - bne Lcopy - - mov sp,r0 - add sp,sp,#4 @ skip over tp[num+1] - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} @ restore registers - add sp,sp,#2*4 @ skip over {r0,r2} - mov r0,#1 -Labrt: -#if __ARM_ARCH__>=5 - bx lr @ bx lr -#else - tst lr,#1 - moveq pc,lr @ be binary compatible with V4, yet -.word 0xe12fff1e @ interoperable with Thumb ISA:-) -#endif - -#if __ARM_MAX_ARCH__>=7 - - - -#ifdef __thumb2__ -.thumb_func bn_mul8x_mont_neon -#endif -.align 5 -bn_mul8x_mont_neon: - mov ip,sp - stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11} - vstmdb sp!,{d8,d9,d10,d11,d12,d13,d14,d15} @ ABI specification says so - ldmia ip,{r4,r5} @ load rest of parameter block - mov ip,sp - - cmp r5,#8 - bhi LNEON_8n - - @ special case for r5==8, everything is in register bank... - - vld1.32 {d28[0]}, [r2,:32]! - veor d8,d8,d8 - sub r7,sp,r5,lsl#4 - vld1.32 {d0,d1,d2,d3}, [r1]! @ can't specify :32 :-( - and r7,r7,#-64 - vld1.32 {d30[0]}, [r4,:32] - mov sp,r7 @ alloca - vzip.16 d28,d8 - - vmull.u32 q6,d28,d0[0] - vmull.u32 q7,d28,d0[1] - vmull.u32 q8,d28,d1[0] - vshl.i64 d29,d13,#16 - vmull.u32 q9,d28,d1[1] - - vadd.u64 d29,d29,d12 - veor d8,d8,d8 - vmul.u32 d29,d29,d30 - - vmull.u32 q10,d28,d2[0] - vld1.32 {d4,d5,d6,d7}, [r3]! - vmull.u32 q11,d28,d2[1] - vmull.u32 q12,d28,d3[0] - vzip.16 d29,d8 - vmull.u32 q13,d28,d3[1] - - vmlal.u32 q6,d29,d4[0] - sub r9,r5,#1 - vmlal.u32 q7,d29,d4[1] - vmlal.u32 q8,d29,d5[0] - vmlal.u32 q9,d29,d5[1] - - vmlal.u32 q10,d29,d6[0] - vmov q5,q6 - vmlal.u32 q11,d29,d6[1] - vmov q6,q7 - vmlal.u32 q12,d29,d7[0] - vmov q7,q8 - vmlal.u32 q13,d29,d7[1] - vmov q8,q9 - vmov q9,q10 - vshr.u64 d10,d10,#16 - vmov q10,q11 - vmov q11,q12 - vadd.u64 d10,d10,d11 - vmov q12,q13 - veor q13,q13 - vshr.u64 d10,d10,#16 - - b LNEON_outer8 - -.align 4 -LNEON_outer8: - vld1.32 {d28[0]}, [r2,:32]! - veor d8,d8,d8 - vzip.16 d28,d8 - vadd.u64 d12,d12,d10 - - vmlal.u32 q6,d28,d0[0] - vmlal.u32 q7,d28,d0[1] - vmlal.u32 q8,d28,d1[0] - vshl.i64 d29,d13,#16 - vmlal.u32 q9,d28,d1[1] - - vadd.u64 d29,d29,d12 - veor d8,d8,d8 - subs r9,r9,#1 - vmul.u32 d29,d29,d30 - - vmlal.u32 q10,d28,d2[0] - vmlal.u32 q11,d28,d2[1] - vmlal.u32 q12,d28,d3[0] - vzip.16 d29,d8 - vmlal.u32 q13,d28,d3[1] - - vmlal.u32 q6,d29,d4[0] - vmlal.u32 q7,d29,d4[1] - vmlal.u32 q8,d29,d5[0] - vmlal.u32 q9,d29,d5[1] - - vmlal.u32 q10,d29,d6[0] - vmov q5,q6 - vmlal.u32 q11,d29,d6[1] - vmov q6,q7 - vmlal.u32 q12,d29,d7[0] - vmov q7,q8 - vmlal.u32 q13,d29,d7[1] - vmov q8,q9 - vmov q9,q10 - vshr.u64 d10,d10,#16 - vmov q10,q11 - vmov q11,q12 - vadd.u64 d10,d10,d11 - vmov q12,q13 - veor q13,q13 - vshr.u64 d10,d10,#16 - - bne LNEON_outer8 - - vadd.u64 d12,d12,d10 - mov r7,sp - vshr.u64 d10,d12,#16 - mov r8,r5 - vadd.u64 d13,d13,d10 - add r6,sp,#96 - vshr.u64 d10,d13,#16 - vzip.16 d12,d13 - - b LNEON_tail_entry - -.align 4 -LNEON_8n: - veor q6,q6,q6 - sub r7,sp,#128 - veor q7,q7,q7 - sub r7,r7,r5,lsl#4 - veor q8,q8,q8 - and r7,r7,#-64 - veor q9,q9,q9 - mov sp,r7 @ alloca - veor q10,q10,q10 - add r7,r7,#256 - veor q11,q11,q11 - sub r8,r5,#8 - veor q12,q12,q12 - veor q13,q13,q13 - -LNEON_8n_init: - vst1.64 {q6,q7},[r7,:256]! - subs r8,r8,#8 - vst1.64 {q8,q9},[r7,:256]! - vst1.64 {q10,q11},[r7,:256]! - vst1.64 {q12,q13},[r7,:256]! - bne LNEON_8n_init - - add r6,sp,#256 - vld1.32 {d0,d1,d2,d3},[r1]! - add r10,sp,#8 - vld1.32 {d30[0]},[r4,:32] - mov r9,r5 - b LNEON_8n_outer - -.align 4 -LNEON_8n_outer: - vld1.32 {d28[0]},[r2,:32]! @ *b++ - veor d8,d8,d8 - vzip.16 d28,d8 - add r7,sp,#128 - vld1.32 {d4,d5,d6,d7},[r3]! - - vmlal.u32 q6,d28,d0[0] - vmlal.u32 q7,d28,d0[1] - veor d8,d8,d8 - vmlal.u32 q8,d28,d1[0] - vshl.i64 d29,d13,#16 - vmlal.u32 q9,d28,d1[1] - vadd.u64 d29,d29,d12 - vmlal.u32 q10,d28,d2[0] - vmul.u32 d29,d29,d30 - vmlal.u32 q11,d28,d2[1] - vst1.32 {d28},[sp,:64] @ put aside smashed b[8*i+0] - vmlal.u32 q12,d28,d3[0] - vzip.16 d29,d8 - vmlal.u32 q13,d28,d3[1] - vld1.32 {d28[0]},[r2,:32]! @ *b++ - vmlal.u32 q6,d29,d4[0] - veor d10,d10,d10 - vmlal.u32 q7,d29,d4[1] - vzip.16 d28,d10 - vmlal.u32 q8,d29,d5[0] - vshr.u64 d12,d12,#16 - vmlal.u32 q9,d29,d5[1] - vmlal.u32 q10,d29,d6[0] - vadd.u64 d12,d12,d13 - vmlal.u32 q11,d29,d6[1] - vshr.u64 d12,d12,#16 - vmlal.u32 q12,d29,d7[0] - vmlal.u32 q13,d29,d7[1] - vadd.u64 d14,d14,d12 - vst1.32 {d29},[r10,:64]! @ put aside smashed m[8*i+0] - vmlal.u32 q7,d28,d0[0] - vld1.64 {q6},[r6,:128]! - vmlal.u32 q8,d28,d0[1] - veor d8,d8,d8 - vmlal.u32 q9,d28,d1[0] - vshl.i64 d29,d15,#16 - vmlal.u32 q10,d28,d1[1] - vadd.u64 d29,d29,d14 - vmlal.u32 q11,d28,d2[0] - vmul.u32 d29,d29,d30 - vmlal.u32 q12,d28,d2[1] - vst1.32 {d28},[r10,:64]! @ put aside smashed b[8*i+1] - vmlal.u32 q13,d28,d3[0] - vzip.16 d29,d8 - vmlal.u32 q6,d28,d3[1] - vld1.32 {d28[0]},[r2,:32]! @ *b++ - vmlal.u32 q7,d29,d4[0] - veor d10,d10,d10 - vmlal.u32 q8,d29,d4[1] - vzip.16 d28,d10 - vmlal.u32 q9,d29,d5[0] - vshr.u64 d14,d14,#16 - vmlal.u32 q10,d29,d5[1] - vmlal.u32 q11,d29,d6[0] - vadd.u64 d14,d14,d15 - vmlal.u32 q12,d29,d6[1] - vshr.u64 d14,d14,#16 - vmlal.u32 q13,d29,d7[0] - vmlal.u32 q6,d29,d7[1] - vadd.u64 d16,d16,d14 - vst1.32 {d29},[r10,:64]! @ put aside smashed m[8*i+1] - vmlal.u32 q8,d28,d0[0] - vld1.64 {q7},[r6,:128]! - vmlal.u32 q9,d28,d0[1] - veor d8,d8,d8 - vmlal.u32 q10,d28,d1[0] - vshl.i64 d29,d17,#16 - vmlal.u32 q11,d28,d1[1] - vadd.u64 d29,d29,d16 - vmlal.u32 q12,d28,d2[0] - vmul.u32 d29,d29,d30 - vmlal.u32 q13,d28,d2[1] - vst1.32 {d28},[r10,:64]! @ put aside smashed b[8*i+2] - vmlal.u32 q6,d28,d3[0] - vzip.16 d29,d8 - vmlal.u32 q7,d28,d3[1] - vld1.32 {d28[0]},[r2,:32]! @ *b++ - vmlal.u32 q8,d29,d4[0] - veor d10,d10,d10 - vmlal.u32 q9,d29,d4[1] - vzip.16 d28,d10 - vmlal.u32 q10,d29,d5[0] - vshr.u64 d16,d16,#16 - vmlal.u32 q11,d29,d5[1] - vmlal.u32 q12,d29,d6[0] - vadd.u64 d16,d16,d17 - vmlal.u32 q13,d29,d6[1] - vshr.u64 d16,d16,#16 - vmlal.u32 q6,d29,d7[0] - vmlal.u32 q7,d29,d7[1] - vadd.u64 d18,d18,d16 - vst1.32 {d29},[r10,:64]! @ put aside smashed m[8*i+2] - vmlal.u32 q9,d28,d0[0] - vld1.64 {q8},[r6,:128]! - vmlal.u32 q10,d28,d0[1] - veor d8,d8,d8 - vmlal.u32 q11,d28,d1[0] - vshl.i64 d29,d19,#16 - vmlal.u32 q12,d28,d1[1] - vadd.u64 d29,d29,d18 - vmlal.u32 q13,d28,d2[0] - vmul.u32 d29,d29,d30 - vmlal.u32 q6,d28,d2[1] - vst1.32 {d28},[r10,:64]! @ put aside smashed b[8*i+3] - vmlal.u32 q7,d28,d3[0] - vzip.16 d29,d8 - vmlal.u32 q8,d28,d3[1] - vld1.32 {d28[0]},[r2,:32]! @ *b++ - vmlal.u32 q9,d29,d4[0] - veor d10,d10,d10 - vmlal.u32 q10,d29,d4[1] - vzip.16 d28,d10 - vmlal.u32 q11,d29,d5[0] - vshr.u64 d18,d18,#16 - vmlal.u32 q12,d29,d5[1] - vmlal.u32 q13,d29,d6[0] - vadd.u64 d18,d18,d19 - vmlal.u32 q6,d29,d6[1] - vshr.u64 d18,d18,#16 - vmlal.u32 q7,d29,d7[0] - vmlal.u32 q8,d29,d7[1] - vadd.u64 d20,d20,d18 - vst1.32 {d29},[r10,:64]! @ put aside smashed m[8*i+3] - vmlal.u32 q10,d28,d0[0] - vld1.64 {q9},[r6,:128]! - vmlal.u32 q11,d28,d0[1] - veor d8,d8,d8 - vmlal.u32 q12,d28,d1[0] - vshl.i64 d29,d21,#16 - vmlal.u32 q13,d28,d1[1] - vadd.u64 d29,d29,d20 - vmlal.u32 q6,d28,d2[0] - vmul.u32 d29,d29,d30 - vmlal.u32 q7,d28,d2[1] - vst1.32 {d28},[r10,:64]! @ put aside smashed b[8*i+4] - vmlal.u32 q8,d28,d3[0] - vzip.16 d29,d8 - vmlal.u32 q9,d28,d3[1] - vld1.32 {d28[0]},[r2,:32]! @ *b++ - vmlal.u32 q10,d29,d4[0] - veor d10,d10,d10 - vmlal.u32 q11,d29,d4[1] - vzip.16 d28,d10 - vmlal.u32 q12,d29,d5[0] - vshr.u64 d20,d20,#16 - vmlal.u32 q13,d29,d5[1] - vmlal.u32 q6,d29,d6[0] - vadd.u64 d20,d20,d21 - vmlal.u32 q7,d29,d6[1] - vshr.u64 d20,d20,#16 - vmlal.u32 q8,d29,d7[0] - vmlal.u32 q9,d29,d7[1] - vadd.u64 d22,d22,d20 - vst1.32 {d29},[r10,:64]! @ put aside smashed m[8*i+4] - vmlal.u32 q11,d28,d0[0] - vld1.64 {q10},[r6,:128]! - vmlal.u32 q12,d28,d0[1] - veor d8,d8,d8 - vmlal.u32 q13,d28,d1[0] - vshl.i64 d29,d23,#16 - vmlal.u32 q6,d28,d1[1] - vadd.u64 d29,d29,d22 - vmlal.u32 q7,d28,d2[0] - vmul.u32 d29,d29,d30 - vmlal.u32 q8,d28,d2[1] - vst1.32 {d28},[r10,:64]! @ put aside smashed b[8*i+5] - vmlal.u32 q9,d28,d3[0] - vzip.16 d29,d8 - vmlal.u32 q10,d28,d3[1] - vld1.32 {d28[0]},[r2,:32]! @ *b++ - vmlal.u32 q11,d29,d4[0] - veor d10,d10,d10 - vmlal.u32 q12,d29,d4[1] - vzip.16 d28,d10 - vmlal.u32 q13,d29,d5[0] - vshr.u64 d22,d22,#16 - vmlal.u32 q6,d29,d5[1] - vmlal.u32 q7,d29,d6[0] - vadd.u64 d22,d22,d23 - vmlal.u32 q8,d29,d6[1] - vshr.u64 d22,d22,#16 - vmlal.u32 q9,d29,d7[0] - vmlal.u32 q10,d29,d7[1] - vadd.u64 d24,d24,d22 - vst1.32 {d29},[r10,:64]! @ put aside smashed m[8*i+5] - vmlal.u32 q12,d28,d0[0] - vld1.64 {q11},[r6,:128]! - vmlal.u32 q13,d28,d0[1] - veor d8,d8,d8 - vmlal.u32 q6,d28,d1[0] - vshl.i64 d29,d25,#16 - vmlal.u32 q7,d28,d1[1] - vadd.u64 d29,d29,d24 - vmlal.u32 q8,d28,d2[0] - vmul.u32 d29,d29,d30 - vmlal.u32 q9,d28,d2[1] - vst1.32 {d28},[r10,:64]! @ put aside smashed b[8*i+6] - vmlal.u32 q10,d28,d3[0] - vzip.16 d29,d8 - vmlal.u32 q11,d28,d3[1] - vld1.32 {d28[0]},[r2,:32]! @ *b++ - vmlal.u32 q12,d29,d4[0] - veor d10,d10,d10 - vmlal.u32 q13,d29,d4[1] - vzip.16 d28,d10 - vmlal.u32 q6,d29,d5[0] - vshr.u64 d24,d24,#16 - vmlal.u32 q7,d29,d5[1] - vmlal.u32 q8,d29,d6[0] - vadd.u64 d24,d24,d25 - vmlal.u32 q9,d29,d6[1] - vshr.u64 d24,d24,#16 - vmlal.u32 q10,d29,d7[0] - vmlal.u32 q11,d29,d7[1] - vadd.u64 d26,d26,d24 - vst1.32 {d29},[r10,:64]! @ put aside smashed m[8*i+6] - vmlal.u32 q13,d28,d0[0] - vld1.64 {q12},[r6,:128]! - vmlal.u32 q6,d28,d0[1] - veor d8,d8,d8 - vmlal.u32 q7,d28,d1[0] - vshl.i64 d29,d27,#16 - vmlal.u32 q8,d28,d1[1] - vadd.u64 d29,d29,d26 - vmlal.u32 q9,d28,d2[0] - vmul.u32 d29,d29,d30 - vmlal.u32 q10,d28,d2[1] - vst1.32 {d28},[r10,:64]! @ put aside smashed b[8*i+7] - vmlal.u32 q11,d28,d3[0] - vzip.16 d29,d8 - vmlal.u32 q12,d28,d3[1] - vld1.32 {d28},[sp,:64] @ pull smashed b[8*i+0] - vmlal.u32 q13,d29,d4[0] - vld1.32 {d0,d1,d2,d3},[r1]! - vmlal.u32 q6,d29,d4[1] - vmlal.u32 q7,d29,d5[0] - vshr.u64 d26,d26,#16 - vmlal.u32 q8,d29,d5[1] - vmlal.u32 q9,d29,d6[0] - vadd.u64 d26,d26,d27 - vmlal.u32 q10,d29,d6[1] - vshr.u64 d26,d26,#16 - vmlal.u32 q11,d29,d7[0] - vmlal.u32 q12,d29,d7[1] - vadd.u64 d12,d12,d26 - vst1.32 {d29},[r10,:64] @ put aside smashed m[8*i+7] - add r10,sp,#8 @ rewind - sub r8,r5,#8 - b LNEON_8n_inner - -.align 4 -LNEON_8n_inner: - subs r8,r8,#8 - vmlal.u32 q6,d28,d0[0] - vld1.64 {q13},[r6,:128] - vmlal.u32 q7,d28,d0[1] - vld1.32 {d29},[r10,:64]! @ pull smashed m[8*i+0] - vmlal.u32 q8,d28,d1[0] - vld1.32 {d4,d5,d6,d7},[r3]! - vmlal.u32 q9,d28,d1[1] - it ne - addne r6,r6,#16 @ don't advance in last iteration - vmlal.u32 q10,d28,d2[0] - vmlal.u32 q11,d28,d2[1] - vmlal.u32 q12,d28,d3[0] - vmlal.u32 q13,d28,d3[1] - vld1.32 {d28},[r10,:64]! @ pull smashed b[8*i+1] - vmlal.u32 q6,d29,d4[0] - vmlal.u32 q7,d29,d4[1] - vmlal.u32 q8,d29,d5[0] - vmlal.u32 q9,d29,d5[1] - vmlal.u32 q10,d29,d6[0] - vmlal.u32 q11,d29,d6[1] - vmlal.u32 q12,d29,d7[0] - vmlal.u32 q13,d29,d7[1] - vst1.64 {q6},[r7,:128]! - vmlal.u32 q7,d28,d0[0] - vld1.64 {q6},[r6,:128] - vmlal.u32 q8,d28,d0[1] - vld1.32 {d29},[r10,:64]! @ pull smashed m[8*i+1] - vmlal.u32 q9,d28,d1[0] - it ne - addne r6,r6,#16 @ don't advance in last iteration - vmlal.u32 q10,d28,d1[1] - vmlal.u32 q11,d28,d2[0] - vmlal.u32 q12,d28,d2[1] - vmlal.u32 q13,d28,d3[0] - vmlal.u32 q6,d28,d3[1] - vld1.32 {d28},[r10,:64]! @ pull smashed b[8*i+2] - vmlal.u32 q7,d29,d4[0] - vmlal.u32 q8,d29,d4[1] - vmlal.u32 q9,d29,d5[0] - vmlal.u32 q10,d29,d5[1] - vmlal.u32 q11,d29,d6[0] - vmlal.u32 q12,d29,d6[1] - vmlal.u32 q13,d29,d7[0] - vmlal.u32 q6,d29,d7[1] - vst1.64 {q7},[r7,:128]! - vmlal.u32 q8,d28,d0[0] - vld1.64 {q7},[r6,:128] - vmlal.u32 q9,d28,d0[1] - vld1.32 {d29},[r10,:64]! @ pull smashed m[8*i+2] - vmlal.u32 q10,d28,d1[0] - it ne - addne r6,r6,#16 @ don't advance in last iteration - vmlal.u32 q11,d28,d1[1] - vmlal.u32 q12,d28,d2[0] - vmlal.u32 q13,d28,d2[1] - vmlal.u32 q6,d28,d3[0] - vmlal.u32 q7,d28,d3[1] - vld1.32 {d28},[r10,:64]! @ pull smashed b[8*i+3] - vmlal.u32 q8,d29,d4[0] - vmlal.u32 q9,d29,d4[1] - vmlal.u32 q10,d29,d5[0] - vmlal.u32 q11,d29,d5[1] - vmlal.u32 q12,d29,d6[0] - vmlal.u32 q13,d29,d6[1] - vmlal.u32 q6,d29,d7[0] - vmlal.u32 q7,d29,d7[1] - vst1.64 {q8},[r7,:128]! - vmlal.u32 q9,d28,d0[0] - vld1.64 {q8},[r6,:128] - vmlal.u32 q10,d28,d0[1] - vld1.32 {d29},[r10,:64]! @ pull smashed m[8*i+3] - vmlal.u32 q11,d28,d1[0] - it ne - addne r6,r6,#16 @ don't advance in last iteration - vmlal.u32 q12,d28,d1[1] - vmlal.u32 q13,d28,d2[0] - vmlal.u32 q6,d28,d2[1] - vmlal.u32 q7,d28,d3[0] - vmlal.u32 q8,d28,d3[1] - vld1.32 {d28},[r10,:64]! @ pull smashed b[8*i+4] - vmlal.u32 q9,d29,d4[0] - vmlal.u32 q10,d29,d4[1] - vmlal.u32 q11,d29,d5[0] - vmlal.u32 q12,d29,d5[1] - vmlal.u32 q13,d29,d6[0] - vmlal.u32 q6,d29,d6[1] - vmlal.u32 q7,d29,d7[0] - vmlal.u32 q8,d29,d7[1] - vst1.64 {q9},[r7,:128]! - vmlal.u32 q10,d28,d0[0] - vld1.64 {q9},[r6,:128] - vmlal.u32 q11,d28,d0[1] - vld1.32 {d29},[r10,:64]! @ pull smashed m[8*i+4] - vmlal.u32 q12,d28,d1[0] - it ne - addne r6,r6,#16 @ don't advance in last iteration - vmlal.u32 q13,d28,d1[1] - vmlal.u32 q6,d28,d2[0] - vmlal.u32 q7,d28,d2[1] - vmlal.u32 q8,d28,d3[0] - vmlal.u32 q9,d28,d3[1] - vld1.32 {d28},[r10,:64]! @ pull smashed b[8*i+5] - vmlal.u32 q10,d29,d4[0] - vmlal.u32 q11,d29,d4[1] - vmlal.u32 q12,d29,d5[0] - vmlal.u32 q13,d29,d5[1] - vmlal.u32 q6,d29,d6[0] - vmlal.u32 q7,d29,d6[1] - vmlal.u32 q8,d29,d7[0] - vmlal.u32 q9,d29,d7[1] - vst1.64 {q10},[r7,:128]! - vmlal.u32 q11,d28,d0[0] - vld1.64 {q10},[r6,:128] - vmlal.u32 q12,d28,d0[1] - vld1.32 {d29},[r10,:64]! @ pull smashed m[8*i+5] - vmlal.u32 q13,d28,d1[0] - it ne - addne r6,r6,#16 @ don't advance in last iteration - vmlal.u32 q6,d28,d1[1] - vmlal.u32 q7,d28,d2[0] - vmlal.u32 q8,d28,d2[1] - vmlal.u32 q9,d28,d3[0] - vmlal.u32 q10,d28,d3[1] - vld1.32 {d28},[r10,:64]! @ pull smashed b[8*i+6] - vmlal.u32 q11,d29,d4[0] - vmlal.u32 q12,d29,d4[1] - vmlal.u32 q13,d29,d5[0] - vmlal.u32 q6,d29,d5[1] - vmlal.u32 q7,d29,d6[0] - vmlal.u32 q8,d29,d6[1] - vmlal.u32 q9,d29,d7[0] - vmlal.u32 q10,d29,d7[1] - vst1.64 {q11},[r7,:128]! - vmlal.u32 q12,d28,d0[0] - vld1.64 {q11},[r6,:128] - vmlal.u32 q13,d28,d0[1] - vld1.32 {d29},[r10,:64]! @ pull smashed m[8*i+6] - vmlal.u32 q6,d28,d1[0] - it ne - addne r6,r6,#16 @ don't advance in last iteration - vmlal.u32 q7,d28,d1[1] - vmlal.u32 q8,d28,d2[0] - vmlal.u32 q9,d28,d2[1] - vmlal.u32 q10,d28,d3[0] - vmlal.u32 q11,d28,d3[1] - vld1.32 {d28},[r10,:64]! @ pull smashed b[8*i+7] - vmlal.u32 q12,d29,d4[0] - vmlal.u32 q13,d29,d4[1] - vmlal.u32 q6,d29,d5[0] - vmlal.u32 q7,d29,d5[1] - vmlal.u32 q8,d29,d6[0] - vmlal.u32 q9,d29,d6[1] - vmlal.u32 q10,d29,d7[0] - vmlal.u32 q11,d29,d7[1] - vst1.64 {q12},[r7,:128]! - vmlal.u32 q13,d28,d0[0] - vld1.64 {q12},[r6,:128] - vmlal.u32 q6,d28,d0[1] - vld1.32 {d29},[r10,:64]! @ pull smashed m[8*i+7] - vmlal.u32 q7,d28,d1[0] - it ne - addne r6,r6,#16 @ don't advance in last iteration - vmlal.u32 q8,d28,d1[1] - vmlal.u32 q9,d28,d2[0] - vmlal.u32 q10,d28,d2[1] - vmlal.u32 q11,d28,d3[0] - vmlal.u32 q12,d28,d3[1] - it eq - subeq r1,r1,r5,lsl#2 @ rewind - vmlal.u32 q13,d29,d4[0] - vld1.32 {d28},[sp,:64] @ pull smashed b[8*i+0] - vmlal.u32 q6,d29,d4[1] - vld1.32 {d0,d1,d2,d3},[r1]! - vmlal.u32 q7,d29,d5[0] - add r10,sp,#8 @ rewind - vmlal.u32 q8,d29,d5[1] - vmlal.u32 q9,d29,d6[0] - vmlal.u32 q10,d29,d6[1] - vmlal.u32 q11,d29,d7[0] - vst1.64 {q13},[r7,:128]! - vmlal.u32 q12,d29,d7[1] - - bne LNEON_8n_inner - add r6,sp,#128 - vst1.64 {q6,q7},[r7,:256]! - veor q2,q2,q2 @ d4-d5 - vst1.64 {q8,q9},[r7,:256]! - veor q3,q3,q3 @ d6-d7 - vst1.64 {q10,q11},[r7,:256]! - vst1.64 {q12},[r7,:128] - - subs r9,r9,#8 - vld1.64 {q6,q7},[r6,:256]! - vld1.64 {q8,q9},[r6,:256]! - vld1.64 {q10,q11},[r6,:256]! - vld1.64 {q12,q13},[r6,:256]! - - itt ne - subne r3,r3,r5,lsl#2 @ rewind - bne LNEON_8n_outer - - add r7,sp,#128 - vst1.64 {q2,q3}, [sp,:256]! @ start wiping stack frame - vshr.u64 d10,d12,#16 - vst1.64 {q2,q3},[sp,:256]! - vadd.u64 d13,d13,d10 - vst1.64 {q2,q3}, [sp,:256]! - vshr.u64 d10,d13,#16 - vst1.64 {q2,q3}, [sp,:256]! - vzip.16 d12,d13 - - mov r8,r5 - b LNEON_tail_entry - -.align 4 -LNEON_tail: - vadd.u64 d12,d12,d10 - vshr.u64 d10,d12,#16 - vld1.64 {q8,q9}, [r6, :256]! - vadd.u64 d13,d13,d10 - vld1.64 {q10,q11}, [r6, :256]! - vshr.u64 d10,d13,#16 - vld1.64 {q12,q13}, [r6, :256]! - vzip.16 d12,d13 - -LNEON_tail_entry: - vadd.u64 d14,d14,d10 - vst1.32 {d12[0]}, [r7, :32]! - vshr.u64 d10,d14,#16 - vadd.u64 d15,d15,d10 - vshr.u64 d10,d15,#16 - vzip.16 d14,d15 - vadd.u64 d16,d16,d10 - vst1.32 {d14[0]}, [r7, :32]! - vshr.u64 d10,d16,#16 - vadd.u64 d17,d17,d10 - vshr.u64 d10,d17,#16 - vzip.16 d16,d17 - vadd.u64 d18,d18,d10 - vst1.32 {d16[0]}, [r7, :32]! - vshr.u64 d10,d18,#16 - vadd.u64 d19,d19,d10 - vshr.u64 d10,d19,#16 - vzip.16 d18,d19 - vadd.u64 d20,d20,d10 - vst1.32 {d18[0]}, [r7, :32]! - vshr.u64 d10,d20,#16 - vadd.u64 d21,d21,d10 - vshr.u64 d10,d21,#16 - vzip.16 d20,d21 - vadd.u64 d22,d22,d10 - vst1.32 {d20[0]}, [r7, :32]! - vshr.u64 d10,d22,#16 - vadd.u64 d23,d23,d10 - vshr.u64 d10,d23,#16 - vzip.16 d22,d23 - vadd.u64 d24,d24,d10 - vst1.32 {d22[0]}, [r7, :32]! - vshr.u64 d10,d24,#16 - vadd.u64 d25,d25,d10 - vshr.u64 d10,d25,#16 - vzip.16 d24,d25 - vadd.u64 d26,d26,d10 - vst1.32 {d24[0]}, [r7, :32]! - vshr.u64 d10,d26,#16 - vadd.u64 d27,d27,d10 - vshr.u64 d10,d27,#16 - vzip.16 d26,d27 - vld1.64 {q6,q7}, [r6, :256]! - subs r8,r8,#8 - vst1.32 {d26[0]}, [r7, :32]! - bne LNEON_tail - - vst1.32 {d10[0]}, [r7, :32] @ top-most bit - sub r3,r3,r5,lsl#2 @ rewind r3 - subs r1,sp,#0 @ clear carry flag - add r2,sp,r5,lsl#2 - -LNEON_sub: - ldmia r1!, {r4,r5,r6,r7} - ldmia r3!, {r8,r9,r10,r11} - sbcs r8, r4,r8 - sbcs r9, r5,r9 - sbcs r10,r6,r10 - sbcs r11,r7,r11 - teq r1,r2 @ preserves carry - stmia r0!, {r8,r9,r10,r11} - bne LNEON_sub - - ldr r10, [r1] @ load top-most bit - mov r11,sp - veor q0,q0,q0 - sub r11,r2,r11 @ this is num*4 - veor q1,q1,q1 - mov r1,sp - sub r0,r0,r11 @ rewind r0 - mov r3,r2 @ second 3/4th of frame - sbcs r10,r10,#0 @ result is carry flag - -LNEON_copy_n_zap: - ldmia r1!, {r4,r5,r6,r7} - ldmia r0, {r8,r9,r10,r11} - it cc - movcc r8, r4 - vst1.64 {q0,q1}, [r3,:256]! @ wipe - itt cc - movcc r9, r5 - movcc r10,r6 - vst1.64 {q0,q1}, [r3,:256]! @ wipe - it cc - movcc r11,r7 - ldmia r1, {r4,r5,r6,r7} - stmia r0!, {r8,r9,r10,r11} - sub r1,r1,#16 - ldmia r0, {r8,r9,r10,r11} - it cc - movcc r8, r4 - vst1.64 {q0,q1}, [r1,:256]! @ wipe - itt cc - movcc r9, r5 - movcc r10,r6 - vst1.64 {q0,q1}, [r3,:256]! @ wipe - it cc - movcc r11,r7 - teq r1,r2 @ preserves carry - stmia r0!, {r8,r9,r10,r11} - bne LNEON_copy_n_zap - - mov sp,ip - vldmia sp!,{d8,d9,d10,d11,d12,d13,d14,d15} - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11} - bx lr @ bx lr - -#endif -.byte 77,111,110,116,103,111,109,101,114,121,32,109,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.align 2 -#endif // !OPENSSL_NO_ASM diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/armv4-mont-linux32.S temporalio-1.3.0/vendor/ring/pregenerated/armv4-mont-linux32.S --- temporalio-1.3.0/vendor/ring/pregenerated/armv4-mont-linux32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/armv4-mont-linux32.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,16 +1,10 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#if defined(__arm__) -#include +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_ARM) && defined(__ELF__) +#include @ Silence ARMv8 deprecated IT instruction warnings. This file is used by both @ ARMv7 and ARMv8 processors and does not use ARMv8 instructions. @@ -26,18 +20,18 @@ #if __ARM_MAX_ARCH__>=7 -.hidden GFp_armcap_P +.hidden OPENSSL_armcap_P .align 5 .LOPENSSL_armcap: -.word GFp_armcap_P-.Lbn_mul_mont +.word OPENSSL_armcap_P-.Lbn_mul_mont #endif -.globl GFp_bn_mul_mont -.hidden GFp_bn_mul_mont -.type GFp_bn_mul_mont,%function +.globl bn_mul_mont +.hidden bn_mul_mont +.type bn_mul_mont,%function .align 5 -GFp_bn_mul_mont: +bn_mul_mont: .Lbn_mul_mont: ldr ip,[sp,#4] @ load num stmdb sp!,{r0,r2} @ sp points at argument block @@ -208,7 +202,7 @@ moveq pc,lr @ be binary compatible with V4, yet .word 0xe12fff1e @ interoperable with Thumb ISA:-) #endif -.size GFp_bn_mul_mont,.-GFp_bn_mul_mont +.size bn_mul_mont,.-bn_mul_mont #if __ARM_MAX_ARCH__>=7 .arch armv7-a .fpu neon @@ -966,6 +960,4 @@ #endif .byte 77,111,110,116,103,111,109,101,114,121,32,109,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 2 -#endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_ARM) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/armv8-mont-ios64.S temporalio-1.3.0/vendor/ring/pregenerated/armv8-mont-ios64.S --- temporalio-1.3.0/vendor/ring/pregenerated/armv8-mont-ios64.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/armv8-mont-ios64.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,23 +1,18 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#include +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__APPLE__) +#include .text -.globl _GFp_bn_mul_mont -.private_extern _GFp_bn_mul_mont +.globl _bn_mul_mont +.private_extern _bn_mul_mont .align 5 -_GFp_bn_mul_mont: +_bn_mul_mont: AARCH64_SIGN_LINK_REGISTER tst x5,#7 b.eq __bn_sqr8x_mont @@ -1427,4 +1422,4 @@ .byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 2 .align 4 -#endif // !OPENSSL_NO_ASM +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__APPLE__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/armv8-mont-linux64.S temporalio-1.3.0/vendor/ring/pregenerated/armv8-mont-linux64.S --- temporalio-1.3.0/vendor/ring/pregenerated/armv8-mont-linux64.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/armv8-mont-linux64.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,24 +1,18 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif - -#if !defined(OPENSSL_NO_ASM) -#if defined(__aarch64__) -#include +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__ELF__) +#include .text -.globl GFp_bn_mul_mont -.hidden GFp_bn_mul_mont -.type GFp_bn_mul_mont,%function +.globl bn_mul_mont +.hidden bn_mul_mont +.type bn_mul_mont,%function .align 5 -GFp_bn_mul_mont: +bn_mul_mont: AARCH64_SIGN_LINK_REGISTER tst x5,#7 b.eq __bn_sqr8x_mont @@ -219,7 +213,7 @@ ldr x29,[sp],#64 AARCH64_VALIDATE_LINK_REGISTER ret -.size GFp_bn_mul_mont,.-GFp_bn_mul_mont +.size bn_mul_mont,.-bn_mul_mont .type __bn_sqr8x_mont,%function .align 5 __bn_sqr8x_mont: @@ -1428,6 +1422,4 @@ .byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 2 .align 4 -#endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/armv8-mont-win64.S temporalio-1.3.0/vendor/ring/pregenerated/armv8-mont-win64.S --- temporalio-1.3.0/vendor/ring/pregenerated/armv8-mont-win64.S 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/armv8-mont-win64.S 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1431 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. + +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(_WIN32) +#include + +.text + +.globl bn_mul_mont + +.def bn_mul_mont + .type 32 +.endef +.align 5 +bn_mul_mont: + AARCH64_SIGN_LINK_REGISTER + tst x5,#7 + b.eq __bn_sqr8x_mont + tst x5,#3 + b.eq __bn_mul4x_mont +Lmul_mont: + stp x29,x30,[sp,#-64]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + + ldr x9,[x2],#8 // bp[0] + sub x22,sp,x5,lsl#3 + ldp x7,x8,[x1],#16 // ap[0..1] + lsl x5,x5,#3 + ldr x4,[x4] // *n0 + and x22,x22,#-16 // ABI says so + ldp x13,x14,[x3],#16 // np[0..1] + + mul x6,x7,x9 // ap[0]*bp[0] + sub x21,x5,#16 // j=num-2 + umulh x7,x7,x9 + mul x10,x8,x9 // ap[1]*bp[0] + umulh x11,x8,x9 + + mul x15,x6,x4 // "tp[0]"*n0 + mov sp,x22 // alloca + + // (*) mul x12,x13,x15 // np[0]*m1 + umulh x13,x13,x15 + mul x16,x14,x15 // np[1]*m1 + // (*) adds x12,x12,x6 // discarded + // (*) As for removal of first multiplication and addition + // instructions. The outcome of first addition is + // guaranteed to be zero, which leaves two computationally + // significant outcomes: it either carries or not. Then + // question is when does it carry? Is there alternative + // way to deduce it? If you follow operations, you can + // observe that condition for carry is quite simple: + // x6 being non-zero. So that carry can be calculated + // by adding -1 to x6. That's what next instruction does. + subs xzr,x6,#1 // (*) + umulh x17,x14,x15 + adc x13,x13,xzr + cbz x21,L1st_skip + +L1st: + ldr x8,[x1],#8 + adds x6,x10,x7 + sub x21,x21,#8 // j-- + adc x7,x11,xzr + + ldr x14,[x3],#8 + adds x12,x16,x13 + mul x10,x8,x9 // ap[j]*bp[0] + adc x13,x17,xzr + umulh x11,x8,x9 + + adds x12,x12,x6 + mul x16,x14,x15 // np[j]*m1 + adc x13,x13,xzr + umulh x17,x14,x15 + str x12,[x22],#8 // tp[j-1] + cbnz x21,L1st + +L1st_skip: + adds x6,x10,x7 + sub x1,x1,x5 // rewind x1 + adc x7,x11,xzr + + adds x12,x16,x13 + sub x3,x3,x5 // rewind x3 + adc x13,x17,xzr + + adds x12,x12,x6 + sub x20,x5,#8 // i=num-1 + adcs x13,x13,x7 + + adc x19,xzr,xzr // upmost overflow bit + stp x12,x13,[x22] + +Louter: + ldr x9,[x2],#8 // bp[i] + ldp x7,x8,[x1],#16 + ldr x23,[sp] // tp[0] + add x22,sp,#8 + + mul x6,x7,x9 // ap[0]*bp[i] + sub x21,x5,#16 // j=num-2 + umulh x7,x7,x9 + ldp x13,x14,[x3],#16 + mul x10,x8,x9 // ap[1]*bp[i] + adds x6,x6,x23 + umulh x11,x8,x9 + adc x7,x7,xzr + + mul x15,x6,x4 + sub x20,x20,#8 // i-- + + // (*) mul x12,x13,x15 // np[0]*m1 + umulh x13,x13,x15 + mul x16,x14,x15 // np[1]*m1 + // (*) adds x12,x12,x6 + subs xzr,x6,#1 // (*) + umulh x17,x14,x15 + cbz x21,Linner_skip + +Linner: + ldr x8,[x1],#8 + adc x13,x13,xzr + ldr x23,[x22],#8 // tp[j] + adds x6,x10,x7 + sub x21,x21,#8 // j-- + adc x7,x11,xzr + + adds x12,x16,x13 + ldr x14,[x3],#8 + adc x13,x17,xzr + + mul x10,x8,x9 // ap[j]*bp[i] + adds x6,x6,x23 + umulh x11,x8,x9 + adc x7,x7,xzr + + mul x16,x14,x15 // np[j]*m1 + adds x12,x12,x6 + umulh x17,x14,x15 + str x12,[x22,#-16] // tp[j-1] + cbnz x21,Linner + +Linner_skip: + ldr x23,[x22],#8 // tp[j] + adc x13,x13,xzr + adds x6,x10,x7 + sub x1,x1,x5 // rewind x1 + adc x7,x11,xzr + + adds x12,x16,x13 + sub x3,x3,x5 // rewind x3 + adcs x13,x17,x19 + adc x19,xzr,xzr + + adds x6,x6,x23 + adc x7,x7,xzr + + adds x12,x12,x6 + adcs x13,x13,x7 + adc x19,x19,xzr // upmost overflow bit + stp x12,x13,[x22,#-16] + + cbnz x20,Louter + + // Final step. We see if result is larger than modulus, and + // if it is, subtract the modulus. But comparison implies + // subtraction. So we subtract modulus, see if it borrowed, + // and conditionally copy original value. + ldr x23,[sp] // tp[0] + add x22,sp,#8 + ldr x14,[x3],#8 // np[0] + subs x21,x5,#8 // j=num-1 and clear borrow + mov x1,x0 +Lsub: + sbcs x8,x23,x14 // tp[j]-np[j] + ldr x23,[x22],#8 + sub x21,x21,#8 // j-- + ldr x14,[x3],#8 + str x8,[x1],#8 // rp[j]=tp[j]-np[j] + cbnz x21,Lsub + + sbcs x8,x23,x14 + sbcs x19,x19,xzr // did it borrow? + str x8,[x1],#8 // rp[num-1] + + ldr x23,[sp] // tp[0] + add x22,sp,#8 + ldr x8,[x0],#8 // rp[0] + sub x5,x5,#8 // num-- + nop +Lcond_copy: + sub x5,x5,#8 // num-- + csel x14,x23,x8,lo // did it borrow? + ldr x23,[x22],#8 + ldr x8,[x0],#8 + str xzr,[x22,#-16] // wipe tp + str x14,[x0,#-16] + cbnz x5,Lcond_copy + + csel x14,x23,x8,lo + str xzr,[x22,#-8] // wipe tp + str x14,[x0,#-8] + + ldp x19,x20,[x29,#16] + mov sp,x29 + ldp x21,x22,[x29,#32] + mov x0,#1 + ldp x23,x24,[x29,#48] + ldr x29,[sp],#64 + AARCH64_VALIDATE_LINK_REGISTER + ret + +.def __bn_sqr8x_mont + .type 32 +.endef +.align 5 +__bn_sqr8x_mont: + // Not adding AARCH64_SIGN_LINK_REGISTER here because __bn_sqr8x_mont is jumped to + // only from bn_mul_mont which has already signed the return address. + cmp x1,x2 + b.ne __bn_mul4x_mont +Lsqr8x_mont: + stp x29,x30,[sp,#-128]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + stp x0,x3,[sp,#96] // offload rp and np + + ldp x6,x7,[x1,#8*0] + ldp x8,x9,[x1,#8*2] + ldp x10,x11,[x1,#8*4] + ldp x12,x13,[x1,#8*6] + + sub x2,sp,x5,lsl#4 + lsl x5,x5,#3 + ldr x4,[x4] // *n0 + mov sp,x2 // alloca + sub x27,x5,#8*8 + b Lsqr8x_zero_start + +Lsqr8x_zero: + sub x27,x27,#8*8 + stp xzr,xzr,[x2,#8*0] + stp xzr,xzr,[x2,#8*2] + stp xzr,xzr,[x2,#8*4] + stp xzr,xzr,[x2,#8*6] +Lsqr8x_zero_start: + stp xzr,xzr,[x2,#8*8] + stp xzr,xzr,[x2,#8*10] + stp xzr,xzr,[x2,#8*12] + stp xzr,xzr,[x2,#8*14] + add x2,x2,#8*16 + cbnz x27,Lsqr8x_zero + + add x3,x1,x5 + add x1,x1,#8*8 + mov x19,xzr + mov x20,xzr + mov x21,xzr + mov x22,xzr + mov x23,xzr + mov x24,xzr + mov x25,xzr + mov x26,xzr + mov x2,sp + str x4,[x29,#112] // offload n0 + + // Multiply everything but a[i]*a[i] +.align 4 +Lsqr8x_outer_loop: + // a[1]a[0] (i) + // a[2]a[0] + // a[3]a[0] + // a[4]a[0] + // a[5]a[0] + // a[6]a[0] + // a[7]a[0] + // a[2]a[1] (ii) + // a[3]a[1] + // a[4]a[1] + // a[5]a[1] + // a[6]a[1] + // a[7]a[1] + // a[3]a[2] (iii) + // a[4]a[2] + // a[5]a[2] + // a[6]a[2] + // a[7]a[2] + // a[4]a[3] (iv) + // a[5]a[3] + // a[6]a[3] + // a[7]a[3] + // a[5]a[4] (v) + // a[6]a[4] + // a[7]a[4] + // a[6]a[5] (vi) + // a[7]a[5] + // a[7]a[6] (vii) + + mul x14,x7,x6 // lo(a[1..7]*a[0]) (i) + mul x15,x8,x6 + mul x16,x9,x6 + mul x17,x10,x6 + adds x20,x20,x14 // t[1]+lo(a[1]*a[0]) + mul x14,x11,x6 + adcs x21,x21,x15 + mul x15,x12,x6 + adcs x22,x22,x16 + mul x16,x13,x6 + adcs x23,x23,x17 + umulh x17,x7,x6 // hi(a[1..7]*a[0]) + adcs x24,x24,x14 + umulh x14,x8,x6 + adcs x25,x25,x15 + umulh x15,x9,x6 + adcs x26,x26,x16 + umulh x16,x10,x6 + stp x19,x20,[x2],#8*2 // t[0..1] + adc x19,xzr,xzr // t[8] + adds x21,x21,x17 // t[2]+lo(a[1]*a[0]) + umulh x17,x11,x6 + adcs x22,x22,x14 + umulh x14,x12,x6 + adcs x23,x23,x15 + umulh x15,x13,x6 + adcs x24,x24,x16 + mul x16,x8,x7 // lo(a[2..7]*a[1]) (ii) + adcs x25,x25,x17 + mul x17,x9,x7 + adcs x26,x26,x14 + mul x14,x10,x7 + adc x19,x19,x15 + + mul x15,x11,x7 + adds x22,x22,x16 + mul x16,x12,x7 + adcs x23,x23,x17 + mul x17,x13,x7 + adcs x24,x24,x14 + umulh x14,x8,x7 // hi(a[2..7]*a[1]) + adcs x25,x25,x15 + umulh x15,x9,x7 + adcs x26,x26,x16 + umulh x16,x10,x7 + adcs x19,x19,x17 + umulh x17,x11,x7 + stp x21,x22,[x2],#8*2 // t[2..3] + adc x20,xzr,xzr // t[9] + adds x23,x23,x14 + umulh x14,x12,x7 + adcs x24,x24,x15 + umulh x15,x13,x7 + adcs x25,x25,x16 + mul x16,x9,x8 // lo(a[3..7]*a[2]) (iii) + adcs x26,x26,x17 + mul x17,x10,x8 + adcs x19,x19,x14 + mul x14,x11,x8 + adc x20,x20,x15 + + mul x15,x12,x8 + adds x24,x24,x16 + mul x16,x13,x8 + adcs x25,x25,x17 + umulh x17,x9,x8 // hi(a[3..7]*a[2]) + adcs x26,x26,x14 + umulh x14,x10,x8 + adcs x19,x19,x15 + umulh x15,x11,x8 + adcs x20,x20,x16 + umulh x16,x12,x8 + stp x23,x24,[x2],#8*2 // t[4..5] + adc x21,xzr,xzr // t[10] + adds x25,x25,x17 + umulh x17,x13,x8 + adcs x26,x26,x14 + mul x14,x10,x9 // lo(a[4..7]*a[3]) (iv) + adcs x19,x19,x15 + mul x15,x11,x9 + adcs x20,x20,x16 + mul x16,x12,x9 + adc x21,x21,x17 + + mul x17,x13,x9 + adds x26,x26,x14 + umulh x14,x10,x9 // hi(a[4..7]*a[3]) + adcs x19,x19,x15 + umulh x15,x11,x9 + adcs x20,x20,x16 + umulh x16,x12,x9 + adcs x21,x21,x17 + umulh x17,x13,x9 + stp x25,x26,[x2],#8*2 // t[6..7] + adc x22,xzr,xzr // t[11] + adds x19,x19,x14 + mul x14,x11,x10 // lo(a[5..7]*a[4]) (v) + adcs x20,x20,x15 + mul x15,x12,x10 + adcs x21,x21,x16 + mul x16,x13,x10 + adc x22,x22,x17 + + umulh x17,x11,x10 // hi(a[5..7]*a[4]) + adds x20,x20,x14 + umulh x14,x12,x10 + adcs x21,x21,x15 + umulh x15,x13,x10 + adcs x22,x22,x16 + mul x16,x12,x11 // lo(a[6..7]*a[5]) (vi) + adc x23,xzr,xzr // t[12] + adds x21,x21,x17 + mul x17,x13,x11 + adcs x22,x22,x14 + umulh x14,x12,x11 // hi(a[6..7]*a[5]) + adc x23,x23,x15 + + umulh x15,x13,x11 + adds x22,x22,x16 + mul x16,x13,x12 // lo(a[7]*a[6]) (vii) + adcs x23,x23,x17 + umulh x17,x13,x12 // hi(a[7]*a[6]) + adc x24,xzr,xzr // t[13] + adds x23,x23,x14 + sub x27,x3,x1 // done yet? + adc x24,x24,x15 + + adds x24,x24,x16 + sub x14,x3,x5 // rewinded ap + adc x25,xzr,xzr // t[14] + add x25,x25,x17 + + cbz x27,Lsqr8x_outer_break + + mov x4,x6 + ldp x6,x7,[x2,#8*0] + ldp x8,x9,[x2,#8*2] + ldp x10,x11,[x2,#8*4] + ldp x12,x13,[x2,#8*6] + adds x19,x19,x6 + adcs x20,x20,x7 + ldp x6,x7,[x1,#8*0] + adcs x21,x21,x8 + adcs x22,x22,x9 + ldp x8,x9,[x1,#8*2] + adcs x23,x23,x10 + adcs x24,x24,x11 + ldp x10,x11,[x1,#8*4] + adcs x25,x25,x12 + mov x0,x1 + adcs x26,xzr,x13 + ldp x12,x13,[x1,#8*6] + add x1,x1,#8*8 + //adc x28,xzr,xzr // moved below + mov x27,#-8*8 + + // a[8]a[0] + // a[9]a[0] + // a[a]a[0] + // a[b]a[0] + // a[c]a[0] + // a[d]a[0] + // a[e]a[0] + // a[f]a[0] + // a[8]a[1] + // a[f]a[1]........................ + // a[8]a[2] + // a[f]a[2]........................ + // a[8]a[3] + // a[f]a[3]........................ + // a[8]a[4] + // a[f]a[4]........................ + // a[8]a[5] + // a[f]a[5]........................ + // a[8]a[6] + // a[f]a[6]........................ + // a[8]a[7] + // a[f]a[7]........................ +Lsqr8x_mul: + mul x14,x6,x4 + adc x28,xzr,xzr // carry bit, modulo-scheduled + mul x15,x7,x4 + add x27,x27,#8 + mul x16,x8,x4 + mul x17,x9,x4 + adds x19,x19,x14 + mul x14,x10,x4 + adcs x20,x20,x15 + mul x15,x11,x4 + adcs x21,x21,x16 + mul x16,x12,x4 + adcs x22,x22,x17 + mul x17,x13,x4 + adcs x23,x23,x14 + umulh x14,x6,x4 + adcs x24,x24,x15 + umulh x15,x7,x4 + adcs x25,x25,x16 + umulh x16,x8,x4 + adcs x26,x26,x17 + umulh x17,x9,x4 + adc x28,x28,xzr + str x19,[x2],#8 + adds x19,x20,x14 + umulh x14,x10,x4 + adcs x20,x21,x15 + umulh x15,x11,x4 + adcs x21,x22,x16 + umulh x16,x12,x4 + adcs x22,x23,x17 + umulh x17,x13,x4 + ldr x4,[x0,x27] + adcs x23,x24,x14 + adcs x24,x25,x15 + adcs x25,x26,x16 + adcs x26,x28,x17 + //adc x28,xzr,xzr // moved above + cbnz x27,Lsqr8x_mul + // note that carry flag is guaranteed + // to be zero at this point + cmp x1,x3 // done yet? + b.eq Lsqr8x_break + + ldp x6,x7,[x2,#8*0] + ldp x8,x9,[x2,#8*2] + ldp x10,x11,[x2,#8*4] + ldp x12,x13,[x2,#8*6] + adds x19,x19,x6 + ldr x4,[x0,#-8*8] + adcs x20,x20,x7 + ldp x6,x7,[x1,#8*0] + adcs x21,x21,x8 + adcs x22,x22,x9 + ldp x8,x9,[x1,#8*2] + adcs x23,x23,x10 + adcs x24,x24,x11 + ldp x10,x11,[x1,#8*4] + adcs x25,x25,x12 + mov x27,#-8*8 + adcs x26,x26,x13 + ldp x12,x13,[x1,#8*6] + add x1,x1,#8*8 + //adc x28,xzr,xzr // moved above + b Lsqr8x_mul + +.align 4 +Lsqr8x_break: + ldp x6,x7,[x0,#8*0] + add x1,x0,#8*8 + ldp x8,x9,[x0,#8*2] + sub x14,x3,x1 // is it last iteration? + ldp x10,x11,[x0,#8*4] + sub x15,x2,x14 + ldp x12,x13,[x0,#8*6] + cbz x14,Lsqr8x_outer_loop + + stp x19,x20,[x2,#8*0] + ldp x19,x20,[x15,#8*0] + stp x21,x22,[x2,#8*2] + ldp x21,x22,[x15,#8*2] + stp x23,x24,[x2,#8*4] + ldp x23,x24,[x15,#8*4] + stp x25,x26,[x2,#8*6] + mov x2,x15 + ldp x25,x26,[x15,#8*6] + b Lsqr8x_outer_loop + +.align 4 +Lsqr8x_outer_break: + // Now multiply above result by 2 and add a[n-1]*a[n-1]|...|a[0]*a[0] + ldp x7,x9,[x14,#8*0] // recall that x14 is &a[0] + ldp x15,x16,[sp,#8*1] + ldp x11,x13,[x14,#8*2] + add x1,x14,#8*4 + ldp x17,x14,[sp,#8*3] + + stp x19,x20,[x2,#8*0] + mul x19,x7,x7 + stp x21,x22,[x2,#8*2] + umulh x7,x7,x7 + stp x23,x24,[x2,#8*4] + mul x8,x9,x9 + stp x25,x26,[x2,#8*6] + mov x2,sp + umulh x9,x9,x9 + adds x20,x7,x15,lsl#1 + extr x15,x16,x15,#63 + sub x27,x5,#8*4 + +Lsqr4x_shift_n_add: + adcs x21,x8,x15 + extr x16,x17,x16,#63 + sub x27,x27,#8*4 + adcs x22,x9,x16 + ldp x15,x16,[x2,#8*5] + mul x10,x11,x11 + ldp x7,x9,[x1],#8*2 + umulh x11,x11,x11 + mul x12,x13,x13 + umulh x13,x13,x13 + extr x17,x14,x17,#63 + stp x19,x20,[x2,#8*0] + adcs x23,x10,x17 + extr x14,x15,x14,#63 + stp x21,x22,[x2,#8*2] + adcs x24,x11,x14 + ldp x17,x14,[x2,#8*7] + extr x15,x16,x15,#63 + adcs x25,x12,x15 + extr x16,x17,x16,#63 + adcs x26,x13,x16 + ldp x15,x16,[x2,#8*9] + mul x6,x7,x7 + ldp x11,x13,[x1],#8*2 + umulh x7,x7,x7 + mul x8,x9,x9 + umulh x9,x9,x9 + stp x23,x24,[x2,#8*4] + extr x17,x14,x17,#63 + stp x25,x26,[x2,#8*6] + add x2,x2,#8*8 + adcs x19,x6,x17 + extr x14,x15,x14,#63 + adcs x20,x7,x14 + ldp x17,x14,[x2,#8*3] + extr x15,x16,x15,#63 + cbnz x27,Lsqr4x_shift_n_add + ldp x1,x4,[x29,#104] // pull np and n0 + + adcs x21,x8,x15 + extr x16,x17,x16,#63 + adcs x22,x9,x16 + ldp x15,x16,[x2,#8*5] + mul x10,x11,x11 + umulh x11,x11,x11 + stp x19,x20,[x2,#8*0] + mul x12,x13,x13 + umulh x13,x13,x13 + stp x21,x22,[x2,#8*2] + extr x17,x14,x17,#63 + adcs x23,x10,x17 + extr x14,x15,x14,#63 + ldp x19,x20,[sp,#8*0] + adcs x24,x11,x14 + extr x15,x16,x15,#63 + ldp x6,x7,[x1,#8*0] + adcs x25,x12,x15 + extr x16,xzr,x16,#63 + ldp x8,x9,[x1,#8*2] + adc x26,x13,x16 + ldp x10,x11,[x1,#8*4] + + // Reduce by 512 bits per iteration + mul x28,x4,x19 // t[0]*n0 + ldp x12,x13,[x1,#8*6] + add x3,x1,x5 + ldp x21,x22,[sp,#8*2] + stp x23,x24,[x2,#8*4] + ldp x23,x24,[sp,#8*4] + stp x25,x26,[x2,#8*6] + ldp x25,x26,[sp,#8*6] + add x1,x1,#8*8 + mov x30,xzr // initial top-most carry + mov x2,sp + mov x27,#8 + +Lsqr8x_reduction: + // (*) mul x14,x6,x28 // lo(n[0-7])*lo(t[0]*n0) + mul x15,x7,x28 + sub x27,x27,#1 + mul x16,x8,x28 + str x28,[x2],#8 // put aside t[0]*n0 for tail processing + mul x17,x9,x28 + // (*) adds xzr,x19,x14 + subs xzr,x19,#1 // (*) + mul x14,x10,x28 + adcs x19,x20,x15 + mul x15,x11,x28 + adcs x20,x21,x16 + mul x16,x12,x28 + adcs x21,x22,x17 + mul x17,x13,x28 + adcs x22,x23,x14 + umulh x14,x6,x28 // hi(n[0-7])*lo(t[0]*n0) + adcs x23,x24,x15 + umulh x15,x7,x28 + adcs x24,x25,x16 + umulh x16,x8,x28 + adcs x25,x26,x17 + umulh x17,x9,x28 + adc x26,xzr,xzr + adds x19,x19,x14 + umulh x14,x10,x28 + adcs x20,x20,x15 + umulh x15,x11,x28 + adcs x21,x21,x16 + umulh x16,x12,x28 + adcs x22,x22,x17 + umulh x17,x13,x28 + mul x28,x4,x19 // next t[0]*n0 + adcs x23,x23,x14 + adcs x24,x24,x15 + adcs x25,x25,x16 + adc x26,x26,x17 + cbnz x27,Lsqr8x_reduction + + ldp x14,x15,[x2,#8*0] + ldp x16,x17,[x2,#8*2] + mov x0,x2 + sub x27,x3,x1 // done yet? + adds x19,x19,x14 + adcs x20,x20,x15 + ldp x14,x15,[x2,#8*4] + adcs x21,x21,x16 + adcs x22,x22,x17 + ldp x16,x17,[x2,#8*6] + adcs x23,x23,x14 + adcs x24,x24,x15 + adcs x25,x25,x16 + adcs x26,x26,x17 + //adc x28,xzr,xzr // moved below + cbz x27,Lsqr8x8_post_condition + + ldr x4,[x2,#-8*8] + ldp x6,x7,[x1,#8*0] + ldp x8,x9,[x1,#8*2] + ldp x10,x11,[x1,#8*4] + mov x27,#-8*8 + ldp x12,x13,[x1,#8*6] + add x1,x1,#8*8 + +Lsqr8x_tail: + mul x14,x6,x4 + adc x28,xzr,xzr // carry bit, modulo-scheduled + mul x15,x7,x4 + add x27,x27,#8 + mul x16,x8,x4 + mul x17,x9,x4 + adds x19,x19,x14 + mul x14,x10,x4 + adcs x20,x20,x15 + mul x15,x11,x4 + adcs x21,x21,x16 + mul x16,x12,x4 + adcs x22,x22,x17 + mul x17,x13,x4 + adcs x23,x23,x14 + umulh x14,x6,x4 + adcs x24,x24,x15 + umulh x15,x7,x4 + adcs x25,x25,x16 + umulh x16,x8,x4 + adcs x26,x26,x17 + umulh x17,x9,x4 + adc x28,x28,xzr + str x19,[x2],#8 + adds x19,x20,x14 + umulh x14,x10,x4 + adcs x20,x21,x15 + umulh x15,x11,x4 + adcs x21,x22,x16 + umulh x16,x12,x4 + adcs x22,x23,x17 + umulh x17,x13,x4 + ldr x4,[x0,x27] + adcs x23,x24,x14 + adcs x24,x25,x15 + adcs x25,x26,x16 + adcs x26,x28,x17 + //adc x28,xzr,xzr // moved above + cbnz x27,Lsqr8x_tail + // note that carry flag is guaranteed + // to be zero at this point + ldp x6,x7,[x2,#8*0] + sub x27,x3,x1 // done yet? + sub x16,x3,x5 // rewinded np + ldp x8,x9,[x2,#8*2] + ldp x10,x11,[x2,#8*4] + ldp x12,x13,[x2,#8*6] + cbz x27,Lsqr8x_tail_break + + ldr x4,[x0,#-8*8] + adds x19,x19,x6 + adcs x20,x20,x7 + ldp x6,x7,[x1,#8*0] + adcs x21,x21,x8 + adcs x22,x22,x9 + ldp x8,x9,[x1,#8*2] + adcs x23,x23,x10 + adcs x24,x24,x11 + ldp x10,x11,[x1,#8*4] + adcs x25,x25,x12 + mov x27,#-8*8 + adcs x26,x26,x13 + ldp x12,x13,[x1,#8*6] + add x1,x1,#8*8 + //adc x28,xzr,xzr // moved above + b Lsqr8x_tail + +.align 4 +Lsqr8x_tail_break: + ldr x4,[x29,#112] // pull n0 + add x27,x2,#8*8 // end of current t[num] window + + subs xzr,x30,#1 // "move" top-most carry to carry bit + adcs x14,x19,x6 + adcs x15,x20,x7 + ldp x19,x20,[x0,#8*0] + adcs x21,x21,x8 + ldp x6,x7,[x16,#8*0] // recall that x16 is &n[0] + adcs x22,x22,x9 + ldp x8,x9,[x16,#8*2] + adcs x23,x23,x10 + adcs x24,x24,x11 + ldp x10,x11,[x16,#8*4] + adcs x25,x25,x12 + adcs x26,x26,x13 + ldp x12,x13,[x16,#8*6] + add x1,x16,#8*8 + adc x30,xzr,xzr // top-most carry + mul x28,x4,x19 + stp x14,x15,[x2,#8*0] + stp x21,x22,[x2,#8*2] + ldp x21,x22,[x0,#8*2] + stp x23,x24,[x2,#8*4] + ldp x23,x24,[x0,#8*4] + cmp x27,x29 // did we hit the bottom? + stp x25,x26,[x2,#8*6] + mov x2,x0 // slide the window + ldp x25,x26,[x0,#8*6] + mov x27,#8 + b.ne Lsqr8x_reduction + + // Final step. We see if result is larger than modulus, and + // if it is, subtract the modulus. But comparison implies + // subtraction. So we subtract modulus, see if it borrowed, + // and conditionally copy original value. + ldr x0,[x29,#96] // pull rp + add x2,x2,#8*8 + subs x14,x19,x6 + sbcs x15,x20,x7 + sub x27,x5,#8*8 + mov x3,x0 // x0 copy + +Lsqr8x_sub: + sbcs x16,x21,x8 + ldp x6,x7,[x1,#8*0] + sbcs x17,x22,x9 + stp x14,x15,[x0,#8*0] + sbcs x14,x23,x10 + ldp x8,x9,[x1,#8*2] + sbcs x15,x24,x11 + stp x16,x17,[x0,#8*2] + sbcs x16,x25,x12 + ldp x10,x11,[x1,#8*4] + sbcs x17,x26,x13 + ldp x12,x13,[x1,#8*6] + add x1,x1,#8*8 + ldp x19,x20,[x2,#8*0] + sub x27,x27,#8*8 + ldp x21,x22,[x2,#8*2] + ldp x23,x24,[x2,#8*4] + ldp x25,x26,[x2,#8*6] + add x2,x2,#8*8 + stp x14,x15,[x0,#8*4] + sbcs x14,x19,x6 + stp x16,x17,[x0,#8*6] + add x0,x0,#8*8 + sbcs x15,x20,x7 + cbnz x27,Lsqr8x_sub + + sbcs x16,x21,x8 + mov x2,sp + add x1,sp,x5 + ldp x6,x7,[x3,#8*0] + sbcs x17,x22,x9 + stp x14,x15,[x0,#8*0] + sbcs x14,x23,x10 + ldp x8,x9,[x3,#8*2] + sbcs x15,x24,x11 + stp x16,x17,[x0,#8*2] + sbcs x16,x25,x12 + ldp x19,x20,[x1,#8*0] + sbcs x17,x26,x13 + ldp x21,x22,[x1,#8*2] + sbcs xzr,x30,xzr // did it borrow? + ldr x30,[x29,#8] // pull return address + stp x14,x15,[x0,#8*4] + stp x16,x17,[x0,#8*6] + + sub x27,x5,#8*4 +Lsqr4x_cond_copy: + sub x27,x27,#8*4 + csel x14,x19,x6,lo + stp xzr,xzr,[x2,#8*0] + csel x15,x20,x7,lo + ldp x6,x7,[x3,#8*4] + ldp x19,x20,[x1,#8*4] + csel x16,x21,x8,lo + stp xzr,xzr,[x2,#8*2] + add x2,x2,#8*4 + csel x17,x22,x9,lo + ldp x8,x9,[x3,#8*6] + ldp x21,x22,[x1,#8*6] + add x1,x1,#8*4 + stp x14,x15,[x3,#8*0] + stp x16,x17,[x3,#8*2] + add x3,x3,#8*4 + stp xzr,xzr,[x1,#8*0] + stp xzr,xzr,[x1,#8*2] + cbnz x27,Lsqr4x_cond_copy + + csel x14,x19,x6,lo + stp xzr,xzr,[x2,#8*0] + csel x15,x20,x7,lo + stp xzr,xzr,[x2,#8*2] + csel x16,x21,x8,lo + csel x17,x22,x9,lo + stp x14,x15,[x3,#8*0] + stp x16,x17,[x3,#8*2] + + b Lsqr8x_done + +.align 4 +Lsqr8x8_post_condition: + adc x28,xzr,xzr + ldr x30,[x29,#8] // pull return address + // x19-7,x28 hold result, x6-7 hold modulus + subs x6,x19,x6 + ldr x1,[x29,#96] // pull rp + sbcs x7,x20,x7 + stp xzr,xzr,[sp,#8*0] + sbcs x8,x21,x8 + stp xzr,xzr,[sp,#8*2] + sbcs x9,x22,x9 + stp xzr,xzr,[sp,#8*4] + sbcs x10,x23,x10 + stp xzr,xzr,[sp,#8*6] + sbcs x11,x24,x11 + stp xzr,xzr,[sp,#8*8] + sbcs x12,x25,x12 + stp xzr,xzr,[sp,#8*10] + sbcs x13,x26,x13 + stp xzr,xzr,[sp,#8*12] + sbcs x28,x28,xzr // did it borrow? + stp xzr,xzr,[sp,#8*14] + + // x6-7 hold result-modulus + csel x6,x19,x6,lo + csel x7,x20,x7,lo + csel x8,x21,x8,lo + csel x9,x22,x9,lo + stp x6,x7,[x1,#8*0] + csel x10,x23,x10,lo + csel x11,x24,x11,lo + stp x8,x9,[x1,#8*2] + csel x12,x25,x12,lo + csel x13,x26,x13,lo + stp x10,x11,[x1,#8*4] + stp x12,x13,[x1,#8*6] + +Lsqr8x_done: + ldp x19,x20,[x29,#16] + mov sp,x29 + ldp x21,x22,[x29,#32] + mov x0,#1 + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldr x29,[sp],#128 + // x30 is popped earlier + AARCH64_VALIDATE_LINK_REGISTER + ret + +.def __bn_mul4x_mont + .type 32 +.endef +.align 5 +__bn_mul4x_mont: + // Not adding AARCH64_SIGN_LINK_REGISTER here because __bn_mul4x_mont is jumped to + // only from bn_mul_mont or __bn_mul8x_mont which have already signed the + // return address. + stp x29,x30,[sp,#-128]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + + sub x26,sp,x5,lsl#3 + lsl x5,x5,#3 + ldr x4,[x4] // *n0 + sub sp,x26,#8*4 // alloca + + add x10,x2,x5 + add x27,x1,x5 + stp x0,x10,[x29,#96] // offload rp and &b[num] + + ldr x24,[x2,#8*0] // b[0] + ldp x6,x7,[x1,#8*0] // a[0..3] + ldp x8,x9,[x1,#8*2] + add x1,x1,#8*4 + mov x19,xzr + mov x20,xzr + mov x21,xzr + mov x22,xzr + ldp x14,x15,[x3,#8*0] // n[0..3] + ldp x16,x17,[x3,#8*2] + adds x3,x3,#8*4 // clear carry bit + mov x0,xzr + mov x28,#0 + mov x26,sp + +Loop_mul4x_1st_reduction: + mul x10,x6,x24 // lo(a[0..3]*b[0]) + adc x0,x0,xzr // modulo-scheduled + mul x11,x7,x24 + add x28,x28,#8 + mul x12,x8,x24 + and x28,x28,#31 + mul x13,x9,x24 + adds x19,x19,x10 + umulh x10,x6,x24 // hi(a[0..3]*b[0]) + adcs x20,x20,x11 + mul x25,x19,x4 // t[0]*n0 + adcs x21,x21,x12 + umulh x11,x7,x24 + adcs x22,x22,x13 + umulh x12,x8,x24 + adc x23,xzr,xzr + umulh x13,x9,x24 + ldr x24,[x2,x28] // next b[i] (or b[0]) + adds x20,x20,x10 + // (*) mul x10,x14,x25 // lo(n[0..3]*t[0]*n0) + str x25,[x26],#8 // put aside t[0]*n0 for tail processing + adcs x21,x21,x11 + mul x11,x15,x25 + adcs x22,x22,x12 + mul x12,x16,x25 + adc x23,x23,x13 // can't overflow + mul x13,x17,x25 + // (*) adds xzr,x19,x10 + subs xzr,x19,#1 // (*) + umulh x10,x14,x25 // hi(n[0..3]*t[0]*n0) + adcs x19,x20,x11 + umulh x11,x15,x25 + adcs x20,x21,x12 + umulh x12,x16,x25 + adcs x21,x22,x13 + umulh x13,x17,x25 + adcs x22,x23,x0 + adc x0,xzr,xzr + adds x19,x19,x10 + sub x10,x27,x1 + adcs x20,x20,x11 + adcs x21,x21,x12 + adcs x22,x22,x13 + //adc x0,x0,xzr + cbnz x28,Loop_mul4x_1st_reduction + + cbz x10,Lmul4x4_post_condition + + ldp x6,x7,[x1,#8*0] // a[4..7] + ldp x8,x9,[x1,#8*2] + add x1,x1,#8*4 + ldr x25,[sp] // a[0]*n0 + ldp x14,x15,[x3,#8*0] // n[4..7] + ldp x16,x17,[x3,#8*2] + add x3,x3,#8*4 + +Loop_mul4x_1st_tail: + mul x10,x6,x24 // lo(a[4..7]*b[i]) + adc x0,x0,xzr // modulo-scheduled + mul x11,x7,x24 + add x28,x28,#8 + mul x12,x8,x24 + and x28,x28,#31 + mul x13,x9,x24 + adds x19,x19,x10 + umulh x10,x6,x24 // hi(a[4..7]*b[i]) + adcs x20,x20,x11 + umulh x11,x7,x24 + adcs x21,x21,x12 + umulh x12,x8,x24 + adcs x22,x22,x13 + umulh x13,x9,x24 + adc x23,xzr,xzr + ldr x24,[x2,x28] // next b[i] (or b[0]) + adds x20,x20,x10 + mul x10,x14,x25 // lo(n[4..7]*a[0]*n0) + adcs x21,x21,x11 + mul x11,x15,x25 + adcs x22,x22,x12 + mul x12,x16,x25 + adc x23,x23,x13 // can't overflow + mul x13,x17,x25 + adds x19,x19,x10 + umulh x10,x14,x25 // hi(n[4..7]*a[0]*n0) + adcs x20,x20,x11 + umulh x11,x15,x25 + adcs x21,x21,x12 + umulh x12,x16,x25 + adcs x22,x22,x13 + adcs x23,x23,x0 + umulh x13,x17,x25 + adc x0,xzr,xzr + ldr x25,[sp,x28] // next t[0]*n0 + str x19,[x26],#8 // result!!! + adds x19,x20,x10 + sub x10,x27,x1 // done yet? + adcs x20,x21,x11 + adcs x21,x22,x12 + adcs x22,x23,x13 + //adc x0,x0,xzr + cbnz x28,Loop_mul4x_1st_tail + + sub x11,x27,x5 // rewinded x1 + cbz x10,Lmul4x_proceed + + ldp x6,x7,[x1,#8*0] + ldp x8,x9,[x1,#8*2] + add x1,x1,#8*4 + ldp x14,x15,[x3,#8*0] + ldp x16,x17,[x3,#8*2] + add x3,x3,#8*4 + b Loop_mul4x_1st_tail + +.align 5 +Lmul4x_proceed: + ldr x24,[x2,#8*4]! // *++b + adc x30,x0,xzr + ldp x6,x7,[x11,#8*0] // a[0..3] + sub x3,x3,x5 // rewind np + ldp x8,x9,[x11,#8*2] + add x1,x11,#8*4 + + stp x19,x20,[x26,#8*0] // result!!! + ldp x19,x20,[sp,#8*4] // t[0..3] + stp x21,x22,[x26,#8*2] // result!!! + ldp x21,x22,[sp,#8*6] + + ldp x14,x15,[x3,#8*0] // n[0..3] + mov x26,sp + ldp x16,x17,[x3,#8*2] + adds x3,x3,#8*4 // clear carry bit + mov x0,xzr + +.align 4 +Loop_mul4x_reduction: + mul x10,x6,x24 // lo(a[0..3]*b[4]) + adc x0,x0,xzr // modulo-scheduled + mul x11,x7,x24 + add x28,x28,#8 + mul x12,x8,x24 + and x28,x28,#31 + mul x13,x9,x24 + adds x19,x19,x10 + umulh x10,x6,x24 // hi(a[0..3]*b[4]) + adcs x20,x20,x11 + mul x25,x19,x4 // t[0]*n0 + adcs x21,x21,x12 + umulh x11,x7,x24 + adcs x22,x22,x13 + umulh x12,x8,x24 + adc x23,xzr,xzr + umulh x13,x9,x24 + ldr x24,[x2,x28] // next b[i] + adds x20,x20,x10 + // (*) mul x10,x14,x25 + str x25,[x26],#8 // put aside t[0]*n0 for tail processing + adcs x21,x21,x11 + mul x11,x15,x25 // lo(n[0..3]*t[0]*n0 + adcs x22,x22,x12 + mul x12,x16,x25 + adc x23,x23,x13 // can't overflow + mul x13,x17,x25 + // (*) adds xzr,x19,x10 + subs xzr,x19,#1 // (*) + umulh x10,x14,x25 // hi(n[0..3]*t[0]*n0 + adcs x19,x20,x11 + umulh x11,x15,x25 + adcs x20,x21,x12 + umulh x12,x16,x25 + adcs x21,x22,x13 + umulh x13,x17,x25 + adcs x22,x23,x0 + adc x0,xzr,xzr + adds x19,x19,x10 + adcs x20,x20,x11 + adcs x21,x21,x12 + adcs x22,x22,x13 + //adc x0,x0,xzr + cbnz x28,Loop_mul4x_reduction + + adc x0,x0,xzr + ldp x10,x11,[x26,#8*4] // t[4..7] + ldp x12,x13,[x26,#8*6] + ldp x6,x7,[x1,#8*0] // a[4..7] + ldp x8,x9,[x1,#8*2] + add x1,x1,#8*4 + adds x19,x19,x10 + adcs x20,x20,x11 + adcs x21,x21,x12 + adcs x22,x22,x13 + //adc x0,x0,xzr + + ldr x25,[sp] // t[0]*n0 + ldp x14,x15,[x3,#8*0] // n[4..7] + ldp x16,x17,[x3,#8*2] + add x3,x3,#8*4 + +.align 4 +Loop_mul4x_tail: + mul x10,x6,x24 // lo(a[4..7]*b[4]) + adc x0,x0,xzr // modulo-scheduled + mul x11,x7,x24 + add x28,x28,#8 + mul x12,x8,x24 + and x28,x28,#31 + mul x13,x9,x24 + adds x19,x19,x10 + umulh x10,x6,x24 // hi(a[4..7]*b[4]) + adcs x20,x20,x11 + umulh x11,x7,x24 + adcs x21,x21,x12 + umulh x12,x8,x24 + adcs x22,x22,x13 + umulh x13,x9,x24 + adc x23,xzr,xzr + ldr x24,[x2,x28] // next b[i] + adds x20,x20,x10 + mul x10,x14,x25 // lo(n[4..7]*t[0]*n0) + adcs x21,x21,x11 + mul x11,x15,x25 + adcs x22,x22,x12 + mul x12,x16,x25 + adc x23,x23,x13 // can't overflow + mul x13,x17,x25 + adds x19,x19,x10 + umulh x10,x14,x25 // hi(n[4..7]*t[0]*n0) + adcs x20,x20,x11 + umulh x11,x15,x25 + adcs x21,x21,x12 + umulh x12,x16,x25 + adcs x22,x22,x13 + umulh x13,x17,x25 + adcs x23,x23,x0 + ldr x25,[sp,x28] // next a[0]*n0 + adc x0,xzr,xzr + str x19,[x26],#8 // result!!! + adds x19,x20,x10 + sub x10,x27,x1 // done yet? + adcs x20,x21,x11 + adcs x21,x22,x12 + adcs x22,x23,x13 + //adc x0,x0,xzr + cbnz x28,Loop_mul4x_tail + + sub x11,x3,x5 // rewinded np? + adc x0,x0,xzr + cbz x10,Loop_mul4x_break + + ldp x10,x11,[x26,#8*4] + ldp x12,x13,[x26,#8*6] + ldp x6,x7,[x1,#8*0] + ldp x8,x9,[x1,#8*2] + add x1,x1,#8*4 + adds x19,x19,x10 + adcs x20,x20,x11 + adcs x21,x21,x12 + adcs x22,x22,x13 + //adc x0,x0,xzr + ldp x14,x15,[x3,#8*0] + ldp x16,x17,[x3,#8*2] + add x3,x3,#8*4 + b Loop_mul4x_tail + +.align 4 +Loop_mul4x_break: + ldp x12,x13,[x29,#96] // pull rp and &b[num] + adds x19,x19,x30 + add x2,x2,#8*4 // bp++ + adcs x20,x20,xzr + sub x1,x1,x5 // rewind ap + adcs x21,x21,xzr + stp x19,x20,[x26,#8*0] // result!!! + adcs x22,x22,xzr + ldp x19,x20,[sp,#8*4] // t[0..3] + adc x30,x0,xzr + stp x21,x22,[x26,#8*2] // result!!! + cmp x2,x13 // done yet? + ldp x21,x22,[sp,#8*6] + ldp x14,x15,[x11,#8*0] // n[0..3] + ldp x16,x17,[x11,#8*2] + add x3,x11,#8*4 + b.eq Lmul4x_post + + ldr x24,[x2] + ldp x6,x7,[x1,#8*0] // a[0..3] + ldp x8,x9,[x1,#8*2] + adds x1,x1,#8*4 // clear carry bit + mov x0,xzr + mov x26,sp + b Loop_mul4x_reduction + +.align 4 +Lmul4x_post: + // Final step. We see if result is larger than modulus, and + // if it is, subtract the modulus. But comparison implies + // subtraction. So we subtract modulus, see if it borrowed, + // and conditionally copy original value. + mov x0,x12 + mov x27,x12 // x0 copy + subs x10,x19,x14 + add x26,sp,#8*8 + sbcs x11,x20,x15 + sub x28,x5,#8*4 + +Lmul4x_sub: + sbcs x12,x21,x16 + ldp x14,x15,[x3,#8*0] + sub x28,x28,#8*4 + ldp x19,x20,[x26,#8*0] + sbcs x13,x22,x17 + ldp x16,x17,[x3,#8*2] + add x3,x3,#8*4 + ldp x21,x22,[x26,#8*2] + add x26,x26,#8*4 + stp x10,x11,[x0,#8*0] + sbcs x10,x19,x14 + stp x12,x13,[x0,#8*2] + add x0,x0,#8*4 + sbcs x11,x20,x15 + cbnz x28,Lmul4x_sub + + sbcs x12,x21,x16 + mov x26,sp + add x1,sp,#8*4 + ldp x6,x7,[x27,#8*0] + sbcs x13,x22,x17 + stp x10,x11,[x0,#8*0] + ldp x8,x9,[x27,#8*2] + stp x12,x13,[x0,#8*2] + ldp x19,x20,[x1,#8*0] + ldp x21,x22,[x1,#8*2] + sbcs xzr,x30,xzr // did it borrow? + ldr x30,[x29,#8] // pull return address + + sub x28,x5,#8*4 +Lmul4x_cond_copy: + sub x28,x28,#8*4 + csel x10,x19,x6,lo + stp xzr,xzr,[x26,#8*0] + csel x11,x20,x7,lo + ldp x6,x7,[x27,#8*4] + ldp x19,x20,[x1,#8*4] + csel x12,x21,x8,lo + stp xzr,xzr,[x26,#8*2] + add x26,x26,#8*4 + csel x13,x22,x9,lo + ldp x8,x9,[x27,#8*6] + ldp x21,x22,[x1,#8*6] + add x1,x1,#8*4 + stp x10,x11,[x27,#8*0] + stp x12,x13,[x27,#8*2] + add x27,x27,#8*4 + cbnz x28,Lmul4x_cond_copy + + csel x10,x19,x6,lo + stp xzr,xzr,[x26,#8*0] + csel x11,x20,x7,lo + stp xzr,xzr,[x26,#8*2] + csel x12,x21,x8,lo + stp xzr,xzr,[x26,#8*3] + csel x13,x22,x9,lo + stp xzr,xzr,[x26,#8*4] + stp x10,x11,[x27,#8*0] + stp x12,x13,[x27,#8*2] + + b Lmul4x_done + +.align 4 +Lmul4x4_post_condition: + adc x0,x0,xzr + ldr x1,[x29,#96] // pull rp + // x19-3,x0 hold result, x14-7 hold modulus + subs x6,x19,x14 + ldr x30,[x29,#8] // pull return address + sbcs x7,x20,x15 + stp xzr,xzr,[sp,#8*0] + sbcs x8,x21,x16 + stp xzr,xzr,[sp,#8*2] + sbcs x9,x22,x17 + stp xzr,xzr,[sp,#8*4] + sbcs xzr,x0,xzr // did it borrow? + stp xzr,xzr,[sp,#8*6] + + // x6-3 hold result-modulus + csel x6,x19,x6,lo + csel x7,x20,x7,lo + csel x8,x21,x8,lo + csel x9,x22,x9,lo + stp x6,x7,[x1,#8*0] + stp x8,x9,[x1,#8*2] + +Lmul4x_done: + ldp x19,x20,[x29,#16] + mov sp,x29 + ldp x21,x22,[x29,#32] + mov x0,#1 + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldr x29,[sp],#128 + // x30 is popped earlier + AARCH64_VALIDATE_LINK_REGISTER + ret + +.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.align 4 +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(_WIN32) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/bsaes-armv7-ios32.S temporalio-1.3.0/vendor/ring/pregenerated/bsaes-armv7-ios32.S --- temporalio-1.3.0/vendor/ring/pregenerated/bsaes-armv7-ios32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/bsaes-armv7-ios32.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,805 +0,0 @@ -// This file is generated from a similarly-named Perl script in the BoringSSL -// source tree. Do not edit by hand. - -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif - -#if !defined(OPENSSL_NO_ASM) -@ Copyright 2012-2016 The OpenSSL Project Authors. All Rights Reserved. -@ -@ Licensed under the OpenSSL license (the "License"). You may not use -@ this file except in compliance with the License. You can obtain a copy -@ in the file LICENSE in the source distribution or at -@ https://www.openssl.org/source/license.html - - -@ ==================================================================== -@ Written by Andy Polyakov for the OpenSSL -@ project. The module is, however, dual licensed under OpenSSL and -@ CRYPTOGAMS licenses depending on where you obtain it. For further -@ details see http://www.openssl.org/~appro/cryptogams/. -@ -@ Specific modes and adaptation for Linux kernel by Ard Biesheuvel -@ of Linaro. Permission to use under GPL terms is granted. -@ ==================================================================== - -@ Bit-sliced AES for ARM NEON -@ -@ February 2012. -@ -@ This implementation is direct adaptation of bsaes-x86_64 module for -@ ARM NEON. Except that this module is endian-neutral [in sense that -@ it can be compiled for either endianness] by courtesy of vld1.8's -@ neutrality. Initial version doesn't implement interface to OpenSSL, -@ only low-level primitives and unsupported entry points, just enough -@ to collect performance results, which for Cortex-A8 core are: -@ -@ encrypt 19.5 cycles per byte processed with 128-bit key -@ decrypt 22.1 cycles per byte processed with 128-bit key -@ key conv. 440 cycles per 128-bit key/0.18 of 8x block -@ -@ Snapdragon S4 encrypts byte in 17.6 cycles and decrypts in 19.7, -@ which is [much] worse than anticipated (for further details see -@ http://www.openssl.org/~appro/Snapdragon-S4.html). -@ -@ Cortex-A15 manages in 14.2/16.1 cycles [when integer-only code -@ manages in 20.0 cycles]. -@ -@ When comparing to x86_64 results keep in mind that NEON unit is -@ [mostly] single-issue and thus can't [fully] benefit from -@ instruction-level parallelism. And when comparing to aes-armv4 -@ results keep in mind key schedule conversion overhead (see -@ bsaes-x86_64.pl for further details)... -@ -@ - -@ April-August 2013 -@ Add CBC, CTR and XTS subroutines and adapt for kernel use; courtesy of Ard. - -#ifndef __KERNEL__ -# include - -# define VFP_ABI_PUSH vstmdb sp!,{d8-d15} -# define VFP_ABI_POP vldmia sp!,{d8-d15} -# define VFP_ABI_FRAME 0x40 -#else -# define VFP_ABI_PUSH -# define VFP_ABI_POP -# define VFP_ABI_FRAME 0 -# define BSAES_ASM_EXTENDED_KEY -# define __ARM_ARCH__ __LINUX_ARM_ARCH__ -# define __ARM_MAX_ARCH__ 7 -#endif - -#ifdef __thumb__ -# define adrl adr -#endif - -#if __ARM_MAX_ARCH__>=7 - - - -.text -.syntax unified @ ARMv7-capable assembler is expected to handle this -#if defined(__thumb2__) && !defined(__APPLE__) -.thumb -#else -.code 32 -# undef __thumb2__ -#endif - - -.align 6 -_bsaes_const: -LM0ISR:@ InvShiftRows constants -.quad 0x0a0e0206070b0f03, 0x0004080c0d010509 -LISR: -.quad 0x0504070602010003, 0x0f0e0d0c080b0a09 -LISRM0: -.quad 0x01040b0e0205080f, 0x0306090c00070a0d -LM0SR:@ ShiftRows constants -.quad 0x0a0e02060f03070b, 0x0004080c05090d01 -LSR: -.quad 0x0504070600030201, 0x0f0e0d0c0a09080b -LSRM0: -.quad 0x0304090e00050a0f, 0x01060b0c0207080d -LM0: -.quad 0x02060a0e03070b0f, 0x0004080c0105090d -LREVM0SR: -.quad 0x090d01050c000408, 0x03070b0f060a0e02 -.byte 66,105,116,45,115,108,105,99,101,100,32,65,69,83,32,102,111,114,32,78,69,79,78,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.align 2 -.align 6 - - -#ifdef __thumb2__ -.thumb_func _bsaes_encrypt8 -#endif -.align 4 -_bsaes_encrypt8: - adr r6,. - vldmia r4!, {q9} @ round 0 key -#if defined(__thumb2__) || defined(__APPLE__) - adr r6,LM0SR -#else - sub r6,r6,#_bsaes_encrypt8-LM0SR -#endif - - vldmia r6!, {q8} @ LM0SR -_bsaes_encrypt8_alt: - veor q10, q0, q9 @ xor with round0 key - veor q11, q1, q9 - vtbl.8 d0, {q10}, d16 - vtbl.8 d1, {q10}, d17 - veor q12, q2, q9 - vtbl.8 d2, {q11}, d16 - vtbl.8 d3, {q11}, d17 - veor q13, q3, q9 - vtbl.8 d4, {q12}, d16 - vtbl.8 d5, {q12}, d17 - veor q14, q4, q9 - vtbl.8 d6, {q13}, d16 - vtbl.8 d7, {q13}, d17 - veor q15, q5, q9 - vtbl.8 d8, {q14}, d16 - vtbl.8 d9, {q14}, d17 - veor q10, q6, q9 - vtbl.8 d10, {q15}, d16 - vtbl.8 d11, {q15}, d17 - veor q11, q7, q9 - vtbl.8 d12, {q10}, d16 - vtbl.8 d13, {q10}, d17 - vtbl.8 d14, {q11}, d16 - vtbl.8 d15, {q11}, d17 -_bsaes_encrypt8_bitslice: - vmov.i8 q8,#0x55 @ compose LBS0 - vmov.i8 q9,#0x33 @ compose LBS1 - vshr.u64 q10, q6, #1 - vshr.u64 q11, q4, #1 - veor q10, q10, q7 - veor q11, q11, q5 - vand q10, q10, q8 - vand q11, q11, q8 - veor q7, q7, q10 - vshl.u64 q10, q10, #1 - veor q5, q5, q11 - vshl.u64 q11, q11, #1 - veor q6, q6, q10 - veor q4, q4, q11 - vshr.u64 q10, q2, #1 - vshr.u64 q11, q0, #1 - veor q10, q10, q3 - veor q11, q11, q1 - vand q10, q10, q8 - vand q11, q11, q8 - veor q3, q3, q10 - vshl.u64 q10, q10, #1 - veor q1, q1, q11 - vshl.u64 q11, q11, #1 - veor q2, q2, q10 - veor q0, q0, q11 - vmov.i8 q8,#0x0f @ compose LBS2 - vshr.u64 q10, q5, #2 - vshr.u64 q11, q4, #2 - veor q10, q10, q7 - veor q11, q11, q6 - vand q10, q10, q9 - vand q11, q11, q9 - veor q7, q7, q10 - vshl.u64 q10, q10, #2 - veor q6, q6, q11 - vshl.u64 q11, q11, #2 - veor q5, q5, q10 - veor q4, q4, q11 - vshr.u64 q10, q1, #2 - vshr.u64 q11, q0, #2 - veor q10, q10, q3 - veor q11, q11, q2 - vand q10, q10, q9 - vand q11, q11, q9 - veor q3, q3, q10 - vshl.u64 q10, q10, #2 - veor q2, q2, q11 - vshl.u64 q11, q11, #2 - veor q1, q1, q10 - veor q0, q0, q11 - vshr.u64 q10, q3, #4 - vshr.u64 q11, q2, #4 - veor q10, q10, q7 - veor q11, q11, q6 - vand q10, q10, q8 - vand q11, q11, q8 - veor q7, q7, q10 - vshl.u64 q10, q10, #4 - veor q6, q6, q11 - vshl.u64 q11, q11, #4 - veor q3, q3, q10 - veor q2, q2, q11 - vshr.u64 q10, q1, #4 - vshr.u64 q11, q0, #4 - veor q10, q10, q5 - veor q11, q11, q4 - vand q10, q10, q8 - vand q11, q11, q8 - veor q5, q5, q10 - vshl.u64 q10, q10, #4 - veor q4, q4, q11 - vshl.u64 q11, q11, #4 - veor q1, q1, q10 - veor q0, q0, q11 - sub r5,r5,#1 - b Lenc_sbox -.align 4 -Lenc_loop: - vldmia r4!, {q8,q9,q10,q11} - veor q8, q8, q0 - veor q9, q9, q1 - vtbl.8 d0, {q8}, d24 - vtbl.8 d1, {q8}, d25 - vldmia r4!, {q8} - veor q10, q10, q2 - vtbl.8 d2, {q9}, d24 - vtbl.8 d3, {q9}, d25 - vldmia r4!, {q9} - veor q11, q11, q3 - vtbl.8 d4, {q10}, d24 - vtbl.8 d5, {q10}, d25 - vldmia r4!, {q10} - vtbl.8 d6, {q11}, d24 - vtbl.8 d7, {q11}, d25 - vldmia r4!, {q11} - veor q8, q8, q4 - veor q9, q9, q5 - vtbl.8 d8, {q8}, d24 - vtbl.8 d9, {q8}, d25 - veor q10, q10, q6 - vtbl.8 d10, {q9}, d24 - vtbl.8 d11, {q9}, d25 - veor q11, q11, q7 - vtbl.8 d12, {q10}, d24 - vtbl.8 d13, {q10}, d25 - vtbl.8 d14, {q11}, d24 - vtbl.8 d15, {q11}, d25 -Lenc_sbox: - veor q2, q2, q1 - veor q5, q5, q6 - veor q3, q3, q0 - veor q6, q6, q2 - veor q5, q5, q0 - - veor q6, q6, q3 - veor q3, q3, q7 - veor q7, q7, q5 - veor q3, q3, q4 - veor q4, q4, q5 - - veor q2, q2, q7 - veor q3, q3, q1 - veor q1, q1, q5 - veor q11, q7, q4 - veor q10, q1, q2 - veor q9, q5, q3 - veor q13, q2, q4 - vmov q8, q10 - veor q12, q6, q0 - - vorr q10, q10, q9 - veor q15, q11, q8 - vand q14, q11, q12 - vorr q11, q11, q12 - veor q12, q12, q9 - vand q8, q8, q9 - veor q9, q3, q0 - vand q15, q15, q12 - vand q13, q13, q9 - veor q9, q7, q1 - veor q12, q5, q6 - veor q11, q11, q13 - veor q10, q10, q13 - vand q13, q9, q12 - vorr q9, q9, q12 - veor q11, q11, q15 - veor q8, q8, q13 - veor q10, q10, q14 - veor q9, q9, q15 - veor q8, q8, q14 - vand q12, q2, q3 - veor q9, q9, q14 - vand q13, q4, q0 - vand q14, q1, q5 - vorr q15, q7, q6 - veor q11, q11, q12 - veor q9, q9, q14 - veor q8, q8, q15 - veor q10, q10, q13 - - @ Inv_GF16 0, 1, 2, 3, s0, s1, s2, s3 - - @ new smaller inversion - - vand q14, q11, q9 - vmov q12, q8 - - veor q13, q10, q14 - veor q15, q8, q14 - veor q14, q8, q14 @ q14=q15 - - vbsl q13, q9, q8 - vbsl q15, q11, q10 - veor q11, q11, q10 - - vbsl q12, q13, q14 - vbsl q8, q14, q13 - - vand q14, q12, q15 - veor q9, q9, q8 - - veor q14, q14, q11 - veor q12, q6, q0 - veor q8, q5, q3 - veor q10, q15, q14 - vand q10, q10, q6 - veor q6, q6, q5 - vand q11, q5, q15 - vand q6, q6, q14 - veor q5, q11, q10 - veor q6, q6, q11 - veor q15, q15, q13 - veor q14, q14, q9 - veor q11, q15, q14 - veor q10, q13, q9 - vand q11, q11, q12 - vand q10, q10, q0 - veor q12, q12, q8 - veor q0, q0, q3 - vand q8, q8, q15 - vand q3, q3, q13 - vand q12, q12, q14 - vand q0, q0, q9 - veor q8, q8, q12 - veor q0, q0, q3 - veor q12, q12, q11 - veor q3, q3, q10 - veor q6, q6, q12 - veor q0, q0, q12 - veor q5, q5, q8 - veor q3, q3, q8 - - veor q12, q7, q4 - veor q8, q1, q2 - veor q11, q15, q14 - veor q10, q13, q9 - vand q11, q11, q12 - vand q10, q10, q4 - veor q12, q12, q8 - veor q4, q4, q2 - vand q8, q8, q15 - vand q2, q2, q13 - vand q12, q12, q14 - vand q4, q4, q9 - veor q8, q8, q12 - veor q4, q4, q2 - veor q12, q12, q11 - veor q2, q2, q10 - veor q15, q15, q13 - veor q14, q14, q9 - veor q10, q15, q14 - vand q10, q10, q7 - veor q7, q7, q1 - vand q11, q1, q15 - vand q7, q7, q14 - veor q1, q11, q10 - veor q7, q7, q11 - veor q7, q7, q12 - veor q4, q4, q12 - veor q1, q1, q8 - veor q2, q2, q8 - veor q7, q7, q0 - veor q1, q1, q6 - veor q6, q6, q0 - veor q4, q4, q7 - veor q0, q0, q1 - - veor q1, q1, q5 - veor q5, q5, q2 - veor q2, q2, q3 - veor q3, q3, q5 - veor q4, q4, q5 - - veor q6, q6, q3 - subs r5,r5,#1 - bcc Lenc_done - vext.8 q8, q0, q0, #12 @ x0 <<< 32 - vext.8 q9, q1, q1, #12 - veor q0, q0, q8 @ x0 ^ (x0 <<< 32) - vext.8 q10, q4, q4, #12 - veor q1, q1, q9 - vext.8 q11, q6, q6, #12 - veor q4, q4, q10 - vext.8 q12, q3, q3, #12 - veor q6, q6, q11 - vext.8 q13, q7, q7, #12 - veor q3, q3, q12 - vext.8 q14, q2, q2, #12 - veor q7, q7, q13 - vext.8 q15, q5, q5, #12 - veor q2, q2, q14 - - veor q9, q9, q0 - veor q5, q5, q15 - vext.8 q0, q0, q0, #8 @ (x0 ^ (x0 <<< 32)) <<< 64) - veor q10, q10, q1 - veor q8, q8, q5 - veor q9, q9, q5 - vext.8 q1, q1, q1, #8 - veor q13, q13, q3 - veor q0, q0, q8 - veor q14, q14, q7 - veor q1, q1, q9 - vext.8 q8, q3, q3, #8 - veor q12, q12, q6 - vext.8 q9, q7, q7, #8 - veor q15, q15, q2 - vext.8 q3, q6, q6, #8 - veor q11, q11, q4 - vext.8 q7, q5, q5, #8 - veor q12, q12, q5 - vext.8 q6, q2, q2, #8 - veor q11, q11, q5 - vext.8 q2, q4, q4, #8 - veor q5, q9, q13 - veor q4, q8, q12 - veor q3, q3, q11 - veor q7, q7, q15 - veor q6, q6, q14 - @ vmov q4, q8 - veor q2, q2, q10 - @ vmov q5, q9 - vldmia r6, {q12} @ LSR - ite eq @ Thumb2 thing, samity check in ARM - addeq r6,r6,#0x10 - bne Lenc_loop - vldmia r6, {q12} @ LSRM0 - b Lenc_loop -.align 4 -Lenc_done: - vmov.i8 q8,#0x55 @ compose LBS0 - vmov.i8 q9,#0x33 @ compose LBS1 - vshr.u64 q10, q2, #1 - vshr.u64 q11, q3, #1 - veor q10, q10, q5 - veor q11, q11, q7 - vand q10, q10, q8 - vand q11, q11, q8 - veor q5, q5, q10 - vshl.u64 q10, q10, #1 - veor q7, q7, q11 - vshl.u64 q11, q11, #1 - veor q2, q2, q10 - veor q3, q3, q11 - vshr.u64 q10, q4, #1 - vshr.u64 q11, q0, #1 - veor q10, q10, q6 - veor q11, q11, q1 - vand q10, q10, q8 - vand q11, q11, q8 - veor q6, q6, q10 - vshl.u64 q10, q10, #1 - veor q1, q1, q11 - vshl.u64 q11, q11, #1 - veor q4, q4, q10 - veor q0, q0, q11 - vmov.i8 q8,#0x0f @ compose LBS2 - vshr.u64 q10, q7, #2 - vshr.u64 q11, q3, #2 - veor q10, q10, q5 - veor q11, q11, q2 - vand q10, q10, q9 - vand q11, q11, q9 - veor q5, q5, q10 - vshl.u64 q10, q10, #2 - veor q2, q2, q11 - vshl.u64 q11, q11, #2 - veor q7, q7, q10 - veor q3, q3, q11 - vshr.u64 q10, q1, #2 - vshr.u64 q11, q0, #2 - veor q10, q10, q6 - veor q11, q11, q4 - vand q10, q10, q9 - vand q11, q11, q9 - veor q6, q6, q10 - vshl.u64 q10, q10, #2 - veor q4, q4, q11 - vshl.u64 q11, q11, #2 - veor q1, q1, q10 - veor q0, q0, q11 - vshr.u64 q10, q6, #4 - vshr.u64 q11, q4, #4 - veor q10, q10, q5 - veor q11, q11, q2 - vand q10, q10, q8 - vand q11, q11, q8 - veor q5, q5, q10 - vshl.u64 q10, q10, #4 - veor q2, q2, q11 - vshl.u64 q11, q11, #4 - veor q6, q6, q10 - veor q4, q4, q11 - vshr.u64 q10, q1, #4 - vshr.u64 q11, q0, #4 - veor q10, q10, q7 - veor q11, q11, q3 - vand q10, q10, q8 - vand q11, q11, q8 - veor q7, q7, q10 - vshl.u64 q10, q10, #4 - veor q3, q3, q11 - vshl.u64 q11, q11, #4 - veor q1, q1, q10 - veor q0, q0, q11 - vldmia r4, {q8} @ last round key - veor q4, q4, q8 - veor q6, q6, q8 - veor q3, q3, q8 - veor q7, q7, q8 - veor q2, q2, q8 - veor q5, q5, q8 - veor q0, q0, q8 - veor q1, q1, q8 - bx lr - -#ifdef __thumb2__ -.thumb_func _bsaes_key_convert -#endif -.align 4 -_bsaes_key_convert: - adr r6,. - vld1.8 {q7}, [r4]! @ load round 0 key -#if defined(__thumb2__) || defined(__APPLE__) - adr r6,LM0 -#else - sub r6,r6,#_bsaes_key_convert-LM0 -#endif - vld1.8 {q15}, [r4]! @ load round 1 key - - vmov.i8 q8, #0x01 @ bit masks - vmov.i8 q9, #0x02 - vmov.i8 q10, #0x04 - vmov.i8 q11, #0x08 - vmov.i8 q12, #0x10 - vmov.i8 q13, #0x20 - vldmia r6, {q14} @ LM0 - -#ifdef __ARMEL__ - vrev32.8 q7, q7 - vrev32.8 q15, q15 -#endif - sub r5,r5,#1 - vstmia r12!, {q7} @ save round 0 key - b Lkey_loop - -.align 4 -Lkey_loop: - vtbl.8 d14,{q15},d28 - vtbl.8 d15,{q15},d29 - vmov.i8 q6, #0x40 - vmov.i8 q15, #0x80 - - vtst.8 q0, q7, q8 - vtst.8 q1, q7, q9 - vtst.8 q2, q7, q10 - vtst.8 q3, q7, q11 - vtst.8 q4, q7, q12 - vtst.8 q5, q7, q13 - vtst.8 q6, q7, q6 - vtst.8 q7, q7, q15 - vld1.8 {q15}, [r4]! @ load next round key - vmvn q0, q0 @ "pnot" - vmvn q1, q1 - vmvn q5, q5 - vmvn q6, q6 -#ifdef __ARMEL__ - vrev32.8 q15, q15 -#endif - subs r5,r5,#1 - vstmia r12!,{q0,q1,q2,q3,q4,q5,q6,q7} @ write bit-sliced round key - bne Lkey_loop - - vmov.i8 q7,#0x63 @ compose L63 - @ don't save last round key - bx lr - -.globl _GFp_bsaes_ctr32_encrypt_blocks -.private_extern _GFp_bsaes_ctr32_encrypt_blocks -#ifdef __thumb2__ -.thumb_func _GFp_bsaes_ctr32_encrypt_blocks -#endif -.align 5 -_GFp_bsaes_ctr32_encrypt_blocks: - @ In OpenSSL, short inputs fall back to aes_nohw_* here. We patch this - @ out to retain a constant-time implementation. - mov ip, sp - stmdb sp!, {r4,r5,r6,r7,r8,r9,r10, lr} - VFP_ABI_PUSH - ldr r8, [ip] @ ctr is 1st arg on the stack - sub sp, sp, #0x10 @ scratch space to carry over the ctr - mov r9, sp @ save sp - - ldr r10, [r3, #240] @ get # of rounds -#ifndef BSAES_ASM_EXTENDED_KEY - @ allocate the key schedule on the stack - sub r12, sp, r10, lsl#7 @ 128 bytes per inner round key - add r12, #96 @ size of bit-sliced key schedule - - @ populate the key schedule - mov r4, r3 @ pass key - mov r5, r10 @ pass # of rounds - mov sp, r12 @ sp is sp - bl _bsaes_key_convert - veor q7,q7,q15 @ fix up last round key - vstmia r12, {q7} @ save last round key - - vld1.8 {q0}, [r8] @ load counter -#ifdef __APPLE__ - mov r8, #:lower16:(LREVM0SR-LM0) - add r8, r6, r8 -#else - add r8, r6, #LREVM0SR-LM0 @ borrow r8 -#endif - vldmia sp, {q4} @ load round0 key -#else - ldr r12, [r3, #244] - eors r12, #1 - beq 0f - - @ populate the key schedule - str r12, [r3, #244] - mov r4, r3 @ pass key - mov r5, r10 @ pass # of rounds - add r12, r3, #248 @ pass key schedule - bl _bsaes_key_convert - veor q7,q7,q15 @ fix up last round key - vstmia r12, {q7} @ save last round key - -.align 2 - add r12, r3, #248 - vld1.8 {q0}, [r8] @ load counter - adrl r8, LREVM0SR @ borrow r8 - vldmia r12, {q4} @ load round0 key - sub sp, #0x10 @ place for adjusted round0 key -#endif - - vmov.i32 q8,#1 @ compose 1<<96 - veor q9,q9,q9 - vrev32.8 q0,q0 - vext.8 q8,q9,q8,#4 - vrev32.8 q4,q4 - vadd.u32 q9,q8,q8 @ compose 2<<96 - vstmia sp, {q4} @ save adjusted round0 key - b Lctr_enc_loop - -.align 4 -Lctr_enc_loop: - vadd.u32 q10, q8, q9 @ compose 3<<96 - vadd.u32 q1, q0, q8 @ +1 - vadd.u32 q2, q0, q9 @ +2 - vadd.u32 q3, q0, q10 @ +3 - vadd.u32 q4, q1, q10 - vadd.u32 q5, q2, q10 - vadd.u32 q6, q3, q10 - vadd.u32 q7, q4, q10 - vadd.u32 q10, q5, q10 @ next counter - - @ Borrow prologue from _bsaes_encrypt8 to use the opportunity - @ to flip byte order in 32-bit counter - - vldmia sp, {q9} @ load round0 key -#ifndef BSAES_ASM_EXTENDED_KEY - add r4, sp, #0x10 @ pass next round key -#else - add r4, r3, #264 -#endif - vldmia r8, {q8} @ LREVM0SR - mov r5, r10 @ pass rounds - vstmia r9, {q10} @ save next counter -#ifdef __APPLE__ - mov r6, #:lower16:(LREVM0SR-LSR) - sub r6, r8, r6 -#else - sub r6, r8, #LREVM0SR-LSR @ pass constants -#endif - - bl _bsaes_encrypt8_alt - - subs r2, r2, #8 - blo Lctr_enc_loop_done - - vld1.8 {q8,q9}, [r0]! @ load input - vld1.8 {q10,q11}, [r0]! - veor q0, q8 - veor q1, q9 - vld1.8 {q12,q13}, [r0]! - veor q4, q10 - veor q6, q11 - vld1.8 {q14,q15}, [r0]! - veor q3, q12 - vst1.8 {q0,q1}, [r1]! @ write output - veor q7, q13 - veor q2, q14 - vst1.8 {q4}, [r1]! - veor q5, q15 - vst1.8 {q6}, [r1]! - vmov.i32 q8, #1 @ compose 1<<96 - vst1.8 {q3}, [r1]! - veor q9, q9, q9 - vst1.8 {q7}, [r1]! - vext.8 q8, q9, q8, #4 - vst1.8 {q2}, [r1]! - vadd.u32 q9,q8,q8 @ compose 2<<96 - vst1.8 {q5}, [r1]! - vldmia r9, {q0} @ load counter - - bne Lctr_enc_loop - b Lctr_enc_done - -.align 4 -Lctr_enc_loop_done: - add r2, r2, #8 - vld1.8 {q8}, [r0]! @ load input - veor q0, q8 - vst1.8 {q0}, [r1]! @ write output - cmp r2, #2 - blo Lctr_enc_done - vld1.8 {q9}, [r0]! - veor q1, q9 - vst1.8 {q1}, [r1]! - beq Lctr_enc_done - vld1.8 {q10}, [r0]! - veor q4, q10 - vst1.8 {q4}, [r1]! - cmp r2, #4 - blo Lctr_enc_done - vld1.8 {q11}, [r0]! - veor q6, q11 - vst1.8 {q6}, [r1]! - beq Lctr_enc_done - vld1.8 {q12}, [r0]! - veor q3, q12 - vst1.8 {q3}, [r1]! - cmp r2, #6 - blo Lctr_enc_done - vld1.8 {q13}, [r0]! - veor q7, q13 - vst1.8 {q7}, [r1]! - beq Lctr_enc_done - vld1.8 {q14}, [r0] - veor q2, q14 - vst1.8 {q2}, [r1]! - -Lctr_enc_done: - vmov.i32 q0, #0 - vmov.i32 q1, #0 -#ifndef BSAES_ASM_EXTENDED_KEY -Lctr_enc_bzero:@ wipe key schedule [if any] - vstmia sp!, {q0,q1} - cmp sp, r9 - bne Lctr_enc_bzero -#else - vstmia sp, {q0,q1} -#endif - - mov sp, r9 - add sp, #0x10 @ add sp,r9,#0x10 is no good for thumb - VFP_ABI_POP - ldmia sp!, {r4,r5,r6,r7,r8,r9,r10, pc} @ return - - @ OpenSSL contains aes_nohw_* fallback code here. We patch this - @ out to retain a constant-time implementation. - -#endif -#endif // !OPENSSL_NO_ASM diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/bsaes-armv7-linux32.S temporalio-1.3.0/vendor/ring/pregenerated/bsaes-armv7-linux32.S --- temporalio-1.3.0/vendor/ring/pregenerated/bsaes-armv7-linux32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/bsaes-armv7-linux32.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,15 +1,9 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#if defined(__arm__) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_ARM) && defined(__ELF__) @ Copyright 2012-2016 The OpenSSL Project Authors. All Rights Reserved. @ @ Licensed under the OpenSSL license (the "License"). You may not use @@ -62,7 +56,7 @@ @ Add CBC, CTR and XTS subroutines and adapt for kernel use; courtesy of Ard. #ifndef __KERNEL__ -# include +# include # define VFP_ABI_PUSH vstmdb sp!,{d8-d15} # define VFP_ABI_POP vldmia sp!,{d8-d15} @@ -611,11 +605,11 @@ @ don't save last round key bx lr .size _bsaes_key_convert,.-_bsaes_key_convert -.globl GFp_bsaes_ctr32_encrypt_blocks -.hidden GFp_bsaes_ctr32_encrypt_blocks -.type GFp_bsaes_ctr32_encrypt_blocks,%function +.globl bsaes_ctr32_encrypt_blocks +.hidden bsaes_ctr32_encrypt_blocks +.type bsaes_ctr32_encrypt_blocks,%function .align 5 -GFp_bsaes_ctr32_encrypt_blocks: +bsaes_ctr32_encrypt_blocks: @ In OpenSSL, short inputs fall back to aes_nohw_* here. We patch this @ out to retain a constant-time implementation. mov ip, sp @@ -795,8 +789,6 @@ @ OpenSSL contains aes_nohw_* fallback code here. We patch this @ out to retain a constant-time implementation. -.size GFp_bsaes_ctr32_encrypt_blocks,.-GFp_bsaes_ctr32_encrypt_blocks -#endif +.size bsaes_ctr32_encrypt_blocks,.-bsaes_ctr32_encrypt_blocks #endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_ARM) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_armv8-ios64.S temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_armv8-ios64.S --- temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_armv8-ios64.S 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_armv8-ios64.S 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,3009 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. + +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__APPLE__) +#include +.section __TEXT,__const + +.align 7 +Lchacha20_consts: +.byte 'e','x','p','a','n','d',' ','3','2','-','b','y','t','e',' ','k' +Linc: +.long 1,2,3,4 +Lrol8: +.byte 3,0,1,2, 7,4,5,6, 11,8,9,10, 15,12,13,14 +Lclamp: +.quad 0x0FFFFFFC0FFFFFFF, 0x0FFFFFFC0FFFFFFC + +.text + + +.align 6 +Lpoly_hash_ad_internal: +.cfi_startproc + cbnz x4, Lpoly_hash_intro + ret + +Lpoly_hash_intro: + cmp x4, #16 + b.lt Lpoly_hash_ad_tail + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + sub x4, x4, #16 + b Lpoly_hash_ad_internal + +Lpoly_hash_ad_tail: + cbz x4, Lpoly_hash_ad_ret + + eor v20.16b, v20.16b, v20.16b // Use T0 to load the AAD + sub x4, x4, #1 + +Lpoly_hash_tail_16_compose: + ext v20.16b, v20.16b, v20.16b, #15 + ldrb w11, [x3, x4] + mov v20.b[0], w11 + subs x4, x4, #1 + b.ge Lpoly_hash_tail_16_compose + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + +Lpoly_hash_ad_ret: + ret +.cfi_endproc + + +///////////////////////////////// +// +// void chacha20_poly1305_seal(uint8_t *pt, uint8_t *ct, size_t len_in, uint8_t *ad, size_t len_ad, union open_data *seal_data); +// +.globl _chacha20_poly1305_seal +.private_extern _chacha20_poly1305_seal + +.align 6 +_chacha20_poly1305_seal: + AARCH64_SIGN_LINK_REGISTER +.cfi_startproc + stp x29, x30, [sp, #-80]! +.cfi_def_cfa_offset 80 +.cfi_offset w30, -72 +.cfi_offset w29, -80 + mov x29, sp + // We probably could do .cfi_def_cfa w29, 80 at this point, but since + // we don't actually use the frame pointer like that, it's probably not + // worth bothering. + stp d8, d9, [sp, #16] + stp d10, d11, [sp, #32] + stp d12, d13, [sp, #48] + stp d14, d15, [sp, #64] +.cfi_offset b15, -8 +.cfi_offset b14, -16 +.cfi_offset b13, -24 +.cfi_offset b12, -32 +.cfi_offset b11, -40 +.cfi_offset b10, -48 +.cfi_offset b9, -56 +.cfi_offset b8, -64 + + adrp x11, Lchacha20_consts@PAGE + add x11, x11, Lchacha20_consts@PAGEOFF + + ld1 {v24.16b - v27.16b}, [x11] // Load the CONSTS, INC, ROL8 and CLAMP values + ld1 {v28.16b - v30.16b}, [x5] + + mov x15, #1 // Prepare the Poly1305 state + mov x8, #0 + mov x9, #0 + mov x10, #0 + + ldr x12, [x5, #56] // The total cipher text length includes extra_in_len + add x12, x12, x2 + mov v31.d[0], x4 // Store the input and aad lengths + mov v31.d[1], x12 + + cmp x2, #128 + b.le Lseal_128 // Optimization for smaller buffers + + // Initially we prepare 5 ChaCha20 blocks. Four to encrypt up to 4 blocks (256 bytes) of plaintext, + // and one for the Poly1305 R and S keys. The first four blocks (A0-A3..D0-D3) are computed vertically, + // the fifth block (A4-D4) horizontally. + ld4r {v0.4s,v1.4s,v2.4s,v3.4s}, [x11] + mov v4.16b, v24.16b + + ld4r {v5.4s,v6.4s,v7.4s,v8.4s}, [x5], #16 + mov v9.16b, v28.16b + + ld4r {v10.4s,v11.4s,v12.4s,v13.4s}, [x5], #16 + mov v14.16b, v29.16b + + ld4r {v15.4s,v16.4s,v17.4s,v18.4s}, [x5] + add v15.4s, v15.4s, v25.4s + mov v19.16b, v30.16b + + sub x5, x5, #32 + + mov x6, #10 + +.align 5 +Lseal_init_rounds: + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + add v3.4s, v3.4s, v8.4s + add v4.4s, v4.4s, v9.4s + + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + eor v18.16b, v18.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + rev32 v18.8h, v18.8h + rev32 v19.8h, v19.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + add v13.4s, v13.4s, v18.4s + add v14.4s, v14.4s, v19.4s + + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + eor v8.16b, v8.16b, v13.16b + eor v9.16b, v9.16b, v14.16b + + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + ushr v7.4s, v8.4s, #20 + sli v7.4s, v8.4s, #12 + ushr v8.4s, v9.4s, #20 + sli v8.4s, v9.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + add v3.4s, v3.4s, v7.4s + add v4.4s, v4.4s, v8.4s + + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + eor v18.16b, v18.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + tbl v18.16b, {v18.16b}, v26.16b + tbl v19.16b, {v19.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + add v13.4s, v13.4s, v18.4s + add v14.4s, v14.4s, v19.4s + + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + eor v7.16b, v7.16b, v13.16b + eor v8.16b, v8.16b, v14.16b + + ushr v9.4s, v8.4s, #25 + sli v9.4s, v8.4s, #7 + ushr v8.4s, v7.4s, #25 + sli v8.4s, v7.4s, #7 + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v9.16b, v9.16b, v9.16b, #4 + ext v14.16b, v14.16b, v14.16b, #8 + ext v19.16b, v19.16b, v19.16b, #12 + add v0.4s, v0.4s, v6.4s + add v1.4s, v1.4s, v7.4s + add v2.4s, v2.4s, v8.4s + add v3.4s, v3.4s, v5.4s + add v4.4s, v4.4s, v9.4s + + eor v18.16b, v18.16b, v0.16b + eor v15.16b, v15.16b, v1.16b + eor v16.16b, v16.16b, v2.16b + eor v17.16b, v17.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + rev32 v18.8h, v18.8h + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + rev32 v19.8h, v19.8h + + add v12.4s, v12.4s, v18.4s + add v13.4s, v13.4s, v15.4s + add v10.4s, v10.4s, v16.4s + add v11.4s, v11.4s, v17.4s + add v14.4s, v14.4s, v19.4s + + eor v6.16b, v6.16b, v12.16b + eor v7.16b, v7.16b, v13.16b + eor v8.16b, v8.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v9.16b, v9.16b, v14.16b + + ushr v20.4s, v6.4s, #20 + sli v20.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + ushr v7.4s, v8.4s, #20 + sli v7.4s, v8.4s, #12 + ushr v8.4s, v5.4s, #20 + sli v8.4s, v5.4s, #12 + ushr v5.4s, v9.4s, #20 + sli v5.4s, v9.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + add v3.4s, v3.4s, v8.4s + add v4.4s, v4.4s, v5.4s + + eor v18.16b, v18.16b, v0.16b + eor v15.16b, v15.16b, v1.16b + eor v16.16b, v16.16b, v2.16b + eor v17.16b, v17.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + tbl v18.16b, {v18.16b}, v26.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + tbl v19.16b, {v19.16b}, v26.16b + + add v12.4s, v12.4s, v18.4s + add v13.4s, v13.4s, v15.4s + add v10.4s, v10.4s, v16.4s + add v11.4s, v11.4s, v17.4s + add v14.4s, v14.4s, v19.4s + + eor v20.16b, v20.16b, v12.16b + eor v6.16b, v6.16b, v13.16b + eor v7.16b, v7.16b, v10.16b + eor v8.16b, v8.16b, v11.16b + eor v5.16b, v5.16b, v14.16b + + ushr v9.4s, v5.4s, #25 + sli v9.4s, v5.4s, #7 + ushr v5.4s, v8.4s, #25 + sli v5.4s, v8.4s, #7 + ushr v8.4s, v7.4s, #25 + sli v8.4s, v7.4s, #7 + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v20.4s, #25 + sli v6.4s, v20.4s, #7 + + ext v9.16b, v9.16b, v9.16b, #12 + ext v14.16b, v14.16b, v14.16b, #8 + ext v19.16b, v19.16b, v19.16b, #4 + subs x6, x6, #1 + b.hi Lseal_init_rounds + + add v15.4s, v15.4s, v25.4s + mov x11, #4 + dup v20.4s, w11 + add v25.4s, v25.4s, v20.4s + + zip1 v20.4s, v0.4s, v1.4s + zip2 v21.4s, v0.4s, v1.4s + zip1 v22.4s, v2.4s, v3.4s + zip2 v23.4s, v2.4s, v3.4s + + zip1 v0.2d, v20.2d, v22.2d + zip2 v1.2d, v20.2d, v22.2d + zip1 v2.2d, v21.2d, v23.2d + zip2 v3.2d, v21.2d, v23.2d + + zip1 v20.4s, v5.4s, v6.4s + zip2 v21.4s, v5.4s, v6.4s + zip1 v22.4s, v7.4s, v8.4s + zip2 v23.4s, v7.4s, v8.4s + + zip1 v5.2d, v20.2d, v22.2d + zip2 v6.2d, v20.2d, v22.2d + zip1 v7.2d, v21.2d, v23.2d + zip2 v8.2d, v21.2d, v23.2d + + zip1 v20.4s, v10.4s, v11.4s + zip2 v21.4s, v10.4s, v11.4s + zip1 v22.4s, v12.4s, v13.4s + zip2 v23.4s, v12.4s, v13.4s + + zip1 v10.2d, v20.2d, v22.2d + zip2 v11.2d, v20.2d, v22.2d + zip1 v12.2d, v21.2d, v23.2d + zip2 v13.2d, v21.2d, v23.2d + + zip1 v20.4s, v15.4s, v16.4s + zip2 v21.4s, v15.4s, v16.4s + zip1 v22.4s, v17.4s, v18.4s + zip2 v23.4s, v17.4s, v18.4s + + zip1 v15.2d, v20.2d, v22.2d + zip2 v16.2d, v20.2d, v22.2d + zip1 v17.2d, v21.2d, v23.2d + zip2 v18.2d, v21.2d, v23.2d + + add v4.4s, v4.4s, v24.4s + add v9.4s, v9.4s, v28.4s + and v4.16b, v4.16b, v27.16b + + add v0.4s, v0.4s, v24.4s + add v5.4s, v5.4s, v28.4s + add v10.4s, v10.4s, v29.4s + add v15.4s, v15.4s, v30.4s + + add v1.4s, v1.4s, v24.4s + add v6.4s, v6.4s, v28.4s + add v11.4s, v11.4s, v29.4s + add v16.4s, v16.4s, v30.4s + + add v2.4s, v2.4s, v24.4s + add v7.4s, v7.4s, v28.4s + add v12.4s, v12.4s, v29.4s + add v17.4s, v17.4s, v30.4s + + add v3.4s, v3.4s, v24.4s + add v8.4s, v8.4s, v28.4s + add v13.4s, v13.4s, v29.4s + add v18.4s, v18.4s, v30.4s + + mov x16, v4.d[0] // Move the R key to GPRs + mov x17, v4.d[1] + mov v27.16b, v9.16b // Store the S key + + bl Lpoly_hash_ad_internal + + mov x3, x0 + cmp x2, #256 + b.le Lseal_tail + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v0.16b + eor v21.16b, v21.16b, v5.16b + eor v22.16b, v22.16b, v10.16b + eor v23.16b, v23.16b, v15.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v1.16b + eor v21.16b, v21.16b, v6.16b + eor v22.16b, v22.16b, v11.16b + eor v23.16b, v23.16b, v16.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v2.16b + eor v21.16b, v21.16b, v7.16b + eor v22.16b, v22.16b, v12.16b + eor v23.16b, v23.16b, v17.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v3.16b + eor v21.16b, v21.16b, v8.16b + eor v22.16b, v22.16b, v13.16b + eor v23.16b, v23.16b, v18.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #256 + + mov x6, #4 // In the first run of the loop we need to hash 256 bytes, therefore we hash one block for the first 4 rounds + mov x7, #6 // and two blocks for the remaining 6, for a total of (1 * 4 + 2 * 6) * 16 = 256 + +Lseal_main_loop: + adrp x11, Lchacha20_consts@PAGE + add x11, x11, Lchacha20_consts@PAGEOFF + + ld4r {v0.4s,v1.4s,v2.4s,v3.4s}, [x11] + mov v4.16b, v24.16b + + ld4r {v5.4s,v6.4s,v7.4s,v8.4s}, [x5], #16 + mov v9.16b, v28.16b + + ld4r {v10.4s,v11.4s,v12.4s,v13.4s}, [x5], #16 + mov v14.16b, v29.16b + + ld4r {v15.4s,v16.4s,v17.4s,v18.4s}, [x5] + add v15.4s, v15.4s, v25.4s + mov v19.16b, v30.16b + + eor v20.16b, v20.16b, v20.16b //zero + not v21.16b, v20.16b // -1 + sub v21.4s, v25.4s, v21.4s // Add +1 + ext v20.16b, v21.16b, v20.16b, #12 // Get the last element (counter) + add v19.4s, v19.4s, v20.4s + + sub x5, x5, #32 +.align 5 +Lseal_main_loop_rounds: + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + add v3.4s, v3.4s, v8.4s + add v4.4s, v4.4s, v9.4s + + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + eor v18.16b, v18.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + rev32 v18.8h, v18.8h + rev32 v19.8h, v19.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + add v13.4s, v13.4s, v18.4s + add v14.4s, v14.4s, v19.4s + + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + eor v8.16b, v8.16b, v13.16b + eor v9.16b, v9.16b, v14.16b + + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + ushr v7.4s, v8.4s, #20 + sli v7.4s, v8.4s, #12 + ushr v8.4s, v9.4s, #20 + sli v8.4s, v9.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + add v3.4s, v3.4s, v7.4s + add v4.4s, v4.4s, v8.4s + + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + eor v18.16b, v18.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + tbl v18.16b, {v18.16b}, v26.16b + tbl v19.16b, {v19.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + add v13.4s, v13.4s, v18.4s + add v14.4s, v14.4s, v19.4s + + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + eor v7.16b, v7.16b, v13.16b + eor v8.16b, v8.16b, v14.16b + + ushr v9.4s, v8.4s, #25 + sli v9.4s, v8.4s, #7 + ushr v8.4s, v7.4s, #25 + sli v8.4s, v7.4s, #7 + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v9.16b, v9.16b, v9.16b, #4 + ext v14.16b, v14.16b, v14.16b, #8 + ext v19.16b, v19.16b, v19.16b, #12 + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + add v0.4s, v0.4s, v6.4s + add v1.4s, v1.4s, v7.4s + add v2.4s, v2.4s, v8.4s + add v3.4s, v3.4s, v5.4s + add v4.4s, v4.4s, v9.4s + + eor v18.16b, v18.16b, v0.16b + eor v15.16b, v15.16b, v1.16b + eor v16.16b, v16.16b, v2.16b + eor v17.16b, v17.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + rev32 v18.8h, v18.8h + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + rev32 v19.8h, v19.8h + + add v12.4s, v12.4s, v18.4s + add v13.4s, v13.4s, v15.4s + add v10.4s, v10.4s, v16.4s + add v11.4s, v11.4s, v17.4s + add v14.4s, v14.4s, v19.4s + + eor v6.16b, v6.16b, v12.16b + eor v7.16b, v7.16b, v13.16b + eor v8.16b, v8.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v9.16b, v9.16b, v14.16b + + ushr v20.4s, v6.4s, #20 + sli v20.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + ushr v7.4s, v8.4s, #20 + sli v7.4s, v8.4s, #12 + ushr v8.4s, v5.4s, #20 + sli v8.4s, v5.4s, #12 + ushr v5.4s, v9.4s, #20 + sli v5.4s, v9.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + add v3.4s, v3.4s, v8.4s + add v4.4s, v4.4s, v5.4s + + eor v18.16b, v18.16b, v0.16b + eor v15.16b, v15.16b, v1.16b + eor v16.16b, v16.16b, v2.16b + eor v17.16b, v17.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + tbl v18.16b, {v18.16b}, v26.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + tbl v19.16b, {v19.16b}, v26.16b + + add v12.4s, v12.4s, v18.4s + add v13.4s, v13.4s, v15.4s + add v10.4s, v10.4s, v16.4s + add v11.4s, v11.4s, v17.4s + add v14.4s, v14.4s, v19.4s + + eor v20.16b, v20.16b, v12.16b + eor v6.16b, v6.16b, v13.16b + eor v7.16b, v7.16b, v10.16b + eor v8.16b, v8.16b, v11.16b + eor v5.16b, v5.16b, v14.16b + + ushr v9.4s, v5.4s, #25 + sli v9.4s, v5.4s, #7 + ushr v5.4s, v8.4s, #25 + sli v5.4s, v8.4s, #7 + ushr v8.4s, v7.4s, #25 + sli v8.4s, v7.4s, #7 + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v20.4s, #25 + sli v6.4s, v20.4s, #7 + + ext v9.16b, v9.16b, v9.16b, #12 + ext v14.16b, v14.16b, v14.16b, #8 + ext v19.16b, v19.16b, v19.16b, #4 + subs x6, x6, #1 + b.ge Lseal_main_loop_rounds + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + subs x7, x7, #1 + b.gt Lseal_main_loop_rounds + + eor v20.16b, v20.16b, v20.16b //zero + not v21.16b, v20.16b // -1 + sub v21.4s, v25.4s, v21.4s // Add +1 + ext v20.16b, v21.16b, v20.16b, #12 // Get the last element (counter) + add v19.4s, v19.4s, v20.4s + + add v15.4s, v15.4s, v25.4s + mov x11, #5 + dup v20.4s, w11 + add v25.4s, v25.4s, v20.4s + + zip1 v20.4s, v0.4s, v1.4s + zip2 v21.4s, v0.4s, v1.4s + zip1 v22.4s, v2.4s, v3.4s + zip2 v23.4s, v2.4s, v3.4s + + zip1 v0.2d, v20.2d, v22.2d + zip2 v1.2d, v20.2d, v22.2d + zip1 v2.2d, v21.2d, v23.2d + zip2 v3.2d, v21.2d, v23.2d + + zip1 v20.4s, v5.4s, v6.4s + zip2 v21.4s, v5.4s, v6.4s + zip1 v22.4s, v7.4s, v8.4s + zip2 v23.4s, v7.4s, v8.4s + + zip1 v5.2d, v20.2d, v22.2d + zip2 v6.2d, v20.2d, v22.2d + zip1 v7.2d, v21.2d, v23.2d + zip2 v8.2d, v21.2d, v23.2d + + zip1 v20.4s, v10.4s, v11.4s + zip2 v21.4s, v10.4s, v11.4s + zip1 v22.4s, v12.4s, v13.4s + zip2 v23.4s, v12.4s, v13.4s + + zip1 v10.2d, v20.2d, v22.2d + zip2 v11.2d, v20.2d, v22.2d + zip1 v12.2d, v21.2d, v23.2d + zip2 v13.2d, v21.2d, v23.2d + + zip1 v20.4s, v15.4s, v16.4s + zip2 v21.4s, v15.4s, v16.4s + zip1 v22.4s, v17.4s, v18.4s + zip2 v23.4s, v17.4s, v18.4s + + zip1 v15.2d, v20.2d, v22.2d + zip2 v16.2d, v20.2d, v22.2d + zip1 v17.2d, v21.2d, v23.2d + zip2 v18.2d, v21.2d, v23.2d + + add v0.4s, v0.4s, v24.4s + add v5.4s, v5.4s, v28.4s + add v10.4s, v10.4s, v29.4s + add v15.4s, v15.4s, v30.4s + + add v1.4s, v1.4s, v24.4s + add v6.4s, v6.4s, v28.4s + add v11.4s, v11.4s, v29.4s + add v16.4s, v16.4s, v30.4s + + add v2.4s, v2.4s, v24.4s + add v7.4s, v7.4s, v28.4s + add v12.4s, v12.4s, v29.4s + add v17.4s, v17.4s, v30.4s + + add v3.4s, v3.4s, v24.4s + add v8.4s, v8.4s, v28.4s + add v13.4s, v13.4s, v29.4s + add v18.4s, v18.4s, v30.4s + + add v4.4s, v4.4s, v24.4s + add v9.4s, v9.4s, v28.4s + add v14.4s, v14.4s, v29.4s + add v19.4s, v19.4s, v30.4s + + cmp x2, #320 + b.le Lseal_tail + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v0.16b + eor v21.16b, v21.16b, v5.16b + eor v22.16b, v22.16b, v10.16b + eor v23.16b, v23.16b, v15.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v1.16b + eor v21.16b, v21.16b, v6.16b + eor v22.16b, v22.16b, v11.16b + eor v23.16b, v23.16b, v16.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v2.16b + eor v21.16b, v21.16b, v7.16b + eor v22.16b, v22.16b, v12.16b + eor v23.16b, v23.16b, v17.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v3.16b + eor v21.16b, v21.16b, v8.16b + eor v22.16b, v22.16b, v13.16b + eor v23.16b, v23.16b, v18.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v4.16b + eor v21.16b, v21.16b, v9.16b + eor v22.16b, v22.16b, v14.16b + eor v23.16b, v23.16b, v19.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #320 + + mov x6, #0 + mov x7, #10 // For the remainder of the loop we always hash and encrypt 320 bytes per iteration + + b Lseal_main_loop + +Lseal_tail: + // This part of the function handles the storage and authentication of the last [0,320) bytes + // We assume A0-A4 ... D0-D4 hold at least inl (320 max) bytes of the stream data. + cmp x2, #64 + b.lt Lseal_tail_64 + + // Store and authenticate 64B blocks per iteration + ld1 {v20.16b - v23.16b}, [x1], #64 + + eor v20.16b, v20.16b, v0.16b + eor v21.16b, v21.16b, v5.16b + eor v22.16b, v22.16b, v10.16b + eor v23.16b, v23.16b, v15.16b + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + mov x11, v21.d[0] + mov x12, v21.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + mov x11, v22.d[0] + mov x12, v22.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + mov x11, v23.d[0] + mov x12, v23.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + st1 {v20.16b - v23.16b}, [x0], #64 + sub x2, x2, #64 + + // Shift the state left by 64 bytes for the next iteration of the loop + mov v0.16b, v1.16b + mov v5.16b, v6.16b + mov v10.16b, v11.16b + mov v15.16b, v16.16b + + mov v1.16b, v2.16b + mov v6.16b, v7.16b + mov v11.16b, v12.16b + mov v16.16b, v17.16b + + mov v2.16b, v3.16b + mov v7.16b, v8.16b + mov v12.16b, v13.16b + mov v17.16b, v18.16b + + mov v3.16b, v4.16b + mov v8.16b, v9.16b + mov v13.16b, v14.16b + mov v18.16b, v19.16b + + b Lseal_tail + +Lseal_tail_64: + ldp x3, x4, [x5, #48] // extra_in_len and extra_in_ptr + + // Here we handle the last [0,64) bytes of plaintext + cmp x2, #16 + b.lt Lseal_tail_16 + // Each iteration encrypt and authenticate a 16B block + ld1 {v20.16b}, [x1], #16 + eor v20.16b, v20.16b, v0.16b + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + st1 {v20.16b}, [x0], #16 + + sub x2, x2, #16 + + // Shift the state left by 16 bytes for the next iteration of the loop + mov v0.16b, v5.16b + mov v5.16b, v10.16b + mov v10.16b, v15.16b + + b Lseal_tail_64 + +Lseal_tail_16: + // Here we handle the last [0,16) bytes of ciphertext that require a padded block + cbz x2, Lseal_hash_extra + + eor v20.16b, v20.16b, v20.16b // Use T0 to load the plaintext/extra in + eor v21.16b, v21.16b, v21.16b // Use T1 to generate an AND mask that will only mask the ciphertext bytes + not v22.16b, v20.16b + + mov x6, x2 + add x1, x1, x2 + + cbz x4, Lseal_tail_16_compose // No extra data to pad with, zero padding + + mov x7, #16 // We need to load some extra_in first for padding + sub x7, x7, x2 + cmp x4, x7 + csel x7, x4, x7, lt // Load the minimum of extra_in_len and the amount needed to fill the register + mov x12, x7 + add x3, x3, x7 + sub x4, x4, x7 + +Lseal_tail16_compose_extra_in: + ext v20.16b, v20.16b, v20.16b, #15 + ldrb w11, [x3, #-1]! + mov v20.b[0], w11 + subs x7, x7, #1 + b.gt Lseal_tail16_compose_extra_in + + add x3, x3, x12 + +Lseal_tail_16_compose: + ext v20.16b, v20.16b, v20.16b, #15 + ldrb w11, [x1, #-1]! + mov v20.b[0], w11 + ext v21.16b, v22.16b, v21.16b, #15 + subs x2, x2, #1 + b.gt Lseal_tail_16_compose + + and v0.16b, v0.16b, v21.16b + eor v20.16b, v20.16b, v0.16b + mov v21.16b, v20.16b + +Lseal_tail_16_store: + umov w11, v20.b[0] + strb w11, [x0], #1 + ext v20.16b, v20.16b, v20.16b, #1 + subs x6, x6, #1 + b.gt Lseal_tail_16_store + + // Hash in the final ct block concatenated with extra_in + mov x11, v21.d[0] + mov x12, v21.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + +Lseal_hash_extra: + cbz x4, Lseal_finalize + +Lseal_hash_extra_loop: + cmp x4, #16 + b.lt Lseal_hash_extra_tail + ld1 {v20.16b}, [x3], #16 + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + sub x4, x4, #16 + b Lseal_hash_extra_loop + +Lseal_hash_extra_tail: + cbz x4, Lseal_finalize + eor v20.16b, v20.16b, v20.16b // Use T0 to load the remaining extra ciphertext + add x3, x3, x4 + +Lseal_hash_extra_load: + ext v20.16b, v20.16b, v20.16b, #15 + ldrb w11, [x3, #-1]! + mov v20.b[0], w11 + subs x4, x4, #1 + b.gt Lseal_hash_extra_load + + // Hash in the final padded extra_in blcok + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + +Lseal_finalize: + mov x11, v31.d[0] + mov x12, v31.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + // Final reduction step + sub x12, xzr, x15 + orr x13, xzr, #3 + subs x11, x8, #-5 + sbcs x12, x9, x12 + sbcs x13, x10, x13 + csel x8, x11, x8, cs + csel x9, x12, x9, cs + csel x10, x13, x10, cs + mov x11, v27.d[0] + mov x12, v27.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + + stp x8, x9, [x5] + + ldp d8, d9, [sp, #16] + ldp d10, d11, [sp, #32] + ldp d12, d13, [sp, #48] + ldp d14, d15, [sp, #64] +.cfi_restore b15 +.cfi_restore b14 +.cfi_restore b13 +.cfi_restore b12 +.cfi_restore b11 +.cfi_restore b10 +.cfi_restore b9 +.cfi_restore b8 + ldp x29, x30, [sp], 80 +.cfi_restore w29 +.cfi_restore w30 +.cfi_def_cfa_offset 0 + AARCH64_VALIDATE_LINK_REGISTER + ret + +Lseal_128: + // On some architectures preparing 5 blocks for small buffers is wasteful + eor v25.16b, v25.16b, v25.16b + mov x11, #1 + mov v25.s[0], w11 + mov v0.16b, v24.16b + mov v1.16b, v24.16b + mov v2.16b, v24.16b + mov v5.16b, v28.16b + mov v6.16b, v28.16b + mov v7.16b, v28.16b + mov v10.16b, v29.16b + mov v11.16b, v29.16b + mov v12.16b, v29.16b + mov v17.16b, v30.16b + add v15.4s, v17.4s, v25.4s + add v16.4s, v15.4s, v25.4s + + mov x6, #10 + +Lseal_128_rounds: + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v5.16b, v5.16b, v5.16b, #4 + ext v6.16b, v6.16b, v6.16b, #4 + ext v7.16b, v7.16b, v7.16b, #4 + + ext v10.16b, v10.16b, v10.16b, #8 + ext v11.16b, v11.16b, v11.16b, #8 + ext v12.16b, v12.16b, v12.16b, #8 + + ext v15.16b, v15.16b, v15.16b, #12 + ext v16.16b, v16.16b, v16.16b, #12 + ext v17.16b, v17.16b, v17.16b, #12 + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v5.16b, v5.16b, v5.16b, #12 + ext v6.16b, v6.16b, v6.16b, #12 + ext v7.16b, v7.16b, v7.16b, #12 + + ext v10.16b, v10.16b, v10.16b, #8 + ext v11.16b, v11.16b, v11.16b, #8 + ext v12.16b, v12.16b, v12.16b, #8 + + ext v15.16b, v15.16b, v15.16b, #4 + ext v16.16b, v16.16b, v16.16b, #4 + ext v17.16b, v17.16b, v17.16b, #4 + subs x6, x6, #1 + b.hi Lseal_128_rounds + + add v0.4s, v0.4s, v24.4s + add v1.4s, v1.4s, v24.4s + add v2.4s, v2.4s, v24.4s + + add v5.4s, v5.4s, v28.4s + add v6.4s, v6.4s, v28.4s + add v7.4s, v7.4s, v28.4s + + // Only the first 32 bytes of the third block (counter = 0) are needed, + // so skip updating v12 and v17. + add v10.4s, v10.4s, v29.4s + add v11.4s, v11.4s, v29.4s + + add v30.4s, v30.4s, v25.4s + add v15.4s, v15.4s, v30.4s + add v30.4s, v30.4s, v25.4s + add v16.4s, v16.4s, v30.4s + + and v2.16b, v2.16b, v27.16b + mov x16, v2.d[0] // Move the R key to GPRs + mov x17, v2.d[1] + mov v27.16b, v7.16b // Store the S key + + bl Lpoly_hash_ad_internal + b Lseal_tail +.cfi_endproc + + +///////////////////////////////// +// +// void chacha20_poly1305_open(uint8_t *pt, uint8_t *ct, size_t len_in, uint8_t *ad, size_t len_ad, union open_data *aead_data); +// +.globl _chacha20_poly1305_open +.private_extern _chacha20_poly1305_open + +.align 6 +_chacha20_poly1305_open: + AARCH64_SIGN_LINK_REGISTER +.cfi_startproc + stp x29, x30, [sp, #-80]! +.cfi_def_cfa_offset 80 +.cfi_offset w30, -72 +.cfi_offset w29, -80 + mov x29, sp + // We probably could do .cfi_def_cfa w29, 80 at this point, but since + // we don't actually use the frame pointer like that, it's probably not + // worth bothering. + stp d8, d9, [sp, #16] + stp d10, d11, [sp, #32] + stp d12, d13, [sp, #48] + stp d14, d15, [sp, #64] +.cfi_offset b15, -8 +.cfi_offset b14, -16 +.cfi_offset b13, -24 +.cfi_offset b12, -32 +.cfi_offset b11, -40 +.cfi_offset b10, -48 +.cfi_offset b9, -56 +.cfi_offset b8, -64 + + adrp x11, Lchacha20_consts@PAGE + add x11, x11, Lchacha20_consts@PAGEOFF + + ld1 {v24.16b - v27.16b}, [x11] // Load the CONSTS, INC, ROL8 and CLAMP values + ld1 {v28.16b - v30.16b}, [x5] + + mov x15, #1 // Prepare the Poly1305 state + mov x8, #0 + mov x9, #0 + mov x10, #0 + + mov v31.d[0], x4 // Store the input and aad lengths + mov v31.d[1], x2 + + cmp x2, #128 + b.le Lopen_128 // Optimization for smaller buffers + + // Initially we prepare a single ChaCha20 block for the Poly1305 R and S keys + mov v0.16b, v24.16b + mov v5.16b, v28.16b + mov v10.16b, v29.16b + mov v15.16b, v30.16b + + mov x6, #10 + +.align 5 +Lopen_init_rounds: + add v0.4s, v0.4s, v5.4s + eor v15.16b, v15.16b, v0.16b + rev32 v15.8h, v15.8h + + add v10.4s, v10.4s, v15.4s + eor v5.16b, v5.16b, v10.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + add v0.4s, v0.4s, v20.4s + eor v15.16b, v15.16b, v0.16b + tbl v15.16b, {v15.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + eor v20.16b, v20.16b, v10.16b + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + ext v5.16b, v5.16b, v5.16b, #4 + ext v10.16b, v10.16b, v10.16b, #8 + ext v15.16b, v15.16b, v15.16b, #12 + add v0.4s, v0.4s, v5.4s + eor v15.16b, v15.16b, v0.16b + rev32 v15.8h, v15.8h + + add v10.4s, v10.4s, v15.4s + eor v5.16b, v5.16b, v10.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + add v0.4s, v0.4s, v20.4s + eor v15.16b, v15.16b, v0.16b + tbl v15.16b, {v15.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + eor v20.16b, v20.16b, v10.16b + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + ext v5.16b, v5.16b, v5.16b, #12 + ext v10.16b, v10.16b, v10.16b, #8 + ext v15.16b, v15.16b, v15.16b, #4 + subs x6, x6, #1 + b.hi Lopen_init_rounds + + add v0.4s, v0.4s, v24.4s + add v5.4s, v5.4s, v28.4s + + and v0.16b, v0.16b, v27.16b + mov x16, v0.d[0] // Move the R key to GPRs + mov x17, v0.d[1] + mov v27.16b, v5.16b // Store the S key + + bl Lpoly_hash_ad_internal + +Lopen_ad_done: + mov x3, x1 + +// Each iteration of the loop hash 320 bytes, and prepare stream for 320 bytes +Lopen_main_loop: + + cmp x2, #192 + b.lt Lopen_tail + + adrp x11, Lchacha20_consts@PAGE + add x11, x11, Lchacha20_consts@PAGEOFF + + ld4r {v0.4s,v1.4s,v2.4s,v3.4s}, [x11] + mov v4.16b, v24.16b + + ld4r {v5.4s,v6.4s,v7.4s,v8.4s}, [x5], #16 + mov v9.16b, v28.16b + + ld4r {v10.4s,v11.4s,v12.4s,v13.4s}, [x5], #16 + mov v14.16b, v29.16b + + ld4r {v15.4s,v16.4s,v17.4s,v18.4s}, [x5] + sub x5, x5, #32 + add v15.4s, v15.4s, v25.4s + mov v19.16b, v30.16b + + eor v20.16b, v20.16b, v20.16b //zero + not v21.16b, v20.16b // -1 + sub v21.4s, v25.4s, v21.4s // Add +1 + ext v20.16b, v21.16b, v20.16b, #12 // Get the last element (counter) + add v19.4s, v19.4s, v20.4s + + lsr x4, x2, #4 // How many whole blocks we have to hash, will always be at least 12 + sub x4, x4, #10 + + mov x7, #10 + subs x6, x7, x4 + subs x6, x7, x4 // itr1 can be negative if we have more than 320 bytes to hash + csel x7, x7, x4, le // if itr1 is zero or less, itr2 should be 10 to indicate all 10 rounds are full + + cbz x7, Lopen_main_loop_rounds_short + +.align 5 +Lopen_main_loop_rounds: + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most +Lopen_main_loop_rounds_short: + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + add v3.4s, v3.4s, v8.4s + add v4.4s, v4.4s, v9.4s + + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + eor v18.16b, v18.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + rev32 v18.8h, v18.8h + rev32 v19.8h, v19.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + add v13.4s, v13.4s, v18.4s + add v14.4s, v14.4s, v19.4s + + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + eor v8.16b, v8.16b, v13.16b + eor v9.16b, v9.16b, v14.16b + + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + ushr v7.4s, v8.4s, #20 + sli v7.4s, v8.4s, #12 + ushr v8.4s, v9.4s, #20 + sli v8.4s, v9.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + add v3.4s, v3.4s, v7.4s + add v4.4s, v4.4s, v8.4s + + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + eor v18.16b, v18.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + tbl v18.16b, {v18.16b}, v26.16b + tbl v19.16b, {v19.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + add v13.4s, v13.4s, v18.4s + add v14.4s, v14.4s, v19.4s + + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + eor v7.16b, v7.16b, v13.16b + eor v8.16b, v8.16b, v14.16b + + ushr v9.4s, v8.4s, #25 + sli v9.4s, v8.4s, #7 + ushr v8.4s, v7.4s, #25 + sli v8.4s, v7.4s, #7 + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v9.16b, v9.16b, v9.16b, #4 + ext v14.16b, v14.16b, v14.16b, #8 + ext v19.16b, v19.16b, v19.16b, #12 + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + add v0.4s, v0.4s, v6.4s + add v1.4s, v1.4s, v7.4s + add v2.4s, v2.4s, v8.4s + add v3.4s, v3.4s, v5.4s + add v4.4s, v4.4s, v9.4s + + eor v18.16b, v18.16b, v0.16b + eor v15.16b, v15.16b, v1.16b + eor v16.16b, v16.16b, v2.16b + eor v17.16b, v17.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + rev32 v18.8h, v18.8h + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + rev32 v19.8h, v19.8h + + add v12.4s, v12.4s, v18.4s + add v13.4s, v13.4s, v15.4s + add v10.4s, v10.4s, v16.4s + add v11.4s, v11.4s, v17.4s + add v14.4s, v14.4s, v19.4s + + eor v6.16b, v6.16b, v12.16b + eor v7.16b, v7.16b, v13.16b + eor v8.16b, v8.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v9.16b, v9.16b, v14.16b + + ushr v20.4s, v6.4s, #20 + sli v20.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + ushr v7.4s, v8.4s, #20 + sli v7.4s, v8.4s, #12 + ushr v8.4s, v5.4s, #20 + sli v8.4s, v5.4s, #12 + ushr v5.4s, v9.4s, #20 + sli v5.4s, v9.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + add v3.4s, v3.4s, v8.4s + add v4.4s, v4.4s, v5.4s + + eor v18.16b, v18.16b, v0.16b + eor v15.16b, v15.16b, v1.16b + eor v16.16b, v16.16b, v2.16b + eor v17.16b, v17.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + tbl v18.16b, {v18.16b}, v26.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + tbl v19.16b, {v19.16b}, v26.16b + + add v12.4s, v12.4s, v18.4s + add v13.4s, v13.4s, v15.4s + add v10.4s, v10.4s, v16.4s + add v11.4s, v11.4s, v17.4s + add v14.4s, v14.4s, v19.4s + + eor v20.16b, v20.16b, v12.16b + eor v6.16b, v6.16b, v13.16b + eor v7.16b, v7.16b, v10.16b + eor v8.16b, v8.16b, v11.16b + eor v5.16b, v5.16b, v14.16b + + ushr v9.4s, v5.4s, #25 + sli v9.4s, v5.4s, #7 + ushr v5.4s, v8.4s, #25 + sli v5.4s, v8.4s, #7 + ushr v8.4s, v7.4s, #25 + sli v8.4s, v7.4s, #7 + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v20.4s, #25 + sli v6.4s, v20.4s, #7 + + ext v9.16b, v9.16b, v9.16b, #12 + ext v14.16b, v14.16b, v14.16b, #8 + ext v19.16b, v19.16b, v19.16b, #4 + subs x7, x7, #1 + b.gt Lopen_main_loop_rounds + subs x6, x6, #1 + b.ge Lopen_main_loop_rounds_short + + eor v20.16b, v20.16b, v20.16b //zero + not v21.16b, v20.16b // -1 + sub v21.4s, v25.4s, v21.4s // Add +1 + ext v20.16b, v21.16b, v20.16b, #12 // Get the last element (counter) + add v19.4s, v19.4s, v20.4s + + add v15.4s, v15.4s, v25.4s + mov x11, #5 + dup v20.4s, w11 + add v25.4s, v25.4s, v20.4s + + zip1 v20.4s, v0.4s, v1.4s + zip2 v21.4s, v0.4s, v1.4s + zip1 v22.4s, v2.4s, v3.4s + zip2 v23.4s, v2.4s, v3.4s + + zip1 v0.2d, v20.2d, v22.2d + zip2 v1.2d, v20.2d, v22.2d + zip1 v2.2d, v21.2d, v23.2d + zip2 v3.2d, v21.2d, v23.2d + + zip1 v20.4s, v5.4s, v6.4s + zip2 v21.4s, v5.4s, v6.4s + zip1 v22.4s, v7.4s, v8.4s + zip2 v23.4s, v7.4s, v8.4s + + zip1 v5.2d, v20.2d, v22.2d + zip2 v6.2d, v20.2d, v22.2d + zip1 v7.2d, v21.2d, v23.2d + zip2 v8.2d, v21.2d, v23.2d + + zip1 v20.4s, v10.4s, v11.4s + zip2 v21.4s, v10.4s, v11.4s + zip1 v22.4s, v12.4s, v13.4s + zip2 v23.4s, v12.4s, v13.4s + + zip1 v10.2d, v20.2d, v22.2d + zip2 v11.2d, v20.2d, v22.2d + zip1 v12.2d, v21.2d, v23.2d + zip2 v13.2d, v21.2d, v23.2d + + zip1 v20.4s, v15.4s, v16.4s + zip2 v21.4s, v15.4s, v16.4s + zip1 v22.4s, v17.4s, v18.4s + zip2 v23.4s, v17.4s, v18.4s + + zip1 v15.2d, v20.2d, v22.2d + zip2 v16.2d, v20.2d, v22.2d + zip1 v17.2d, v21.2d, v23.2d + zip2 v18.2d, v21.2d, v23.2d + + add v0.4s, v0.4s, v24.4s + add v5.4s, v5.4s, v28.4s + add v10.4s, v10.4s, v29.4s + add v15.4s, v15.4s, v30.4s + + add v1.4s, v1.4s, v24.4s + add v6.4s, v6.4s, v28.4s + add v11.4s, v11.4s, v29.4s + add v16.4s, v16.4s, v30.4s + + add v2.4s, v2.4s, v24.4s + add v7.4s, v7.4s, v28.4s + add v12.4s, v12.4s, v29.4s + add v17.4s, v17.4s, v30.4s + + add v3.4s, v3.4s, v24.4s + add v8.4s, v8.4s, v28.4s + add v13.4s, v13.4s, v29.4s + add v18.4s, v18.4s, v30.4s + + add v4.4s, v4.4s, v24.4s + add v9.4s, v9.4s, v28.4s + add v14.4s, v14.4s, v29.4s + add v19.4s, v19.4s, v30.4s + + // We can always safely store 192 bytes + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v0.16b + eor v21.16b, v21.16b, v5.16b + eor v22.16b, v22.16b, v10.16b + eor v23.16b, v23.16b, v15.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v1.16b + eor v21.16b, v21.16b, v6.16b + eor v22.16b, v22.16b, v11.16b + eor v23.16b, v23.16b, v16.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v2.16b + eor v21.16b, v21.16b, v7.16b + eor v22.16b, v22.16b, v12.16b + eor v23.16b, v23.16b, v17.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #192 + + mov v0.16b, v3.16b + mov v5.16b, v8.16b + mov v10.16b, v13.16b + mov v15.16b, v18.16b + + cmp x2, #64 + b.lt Lopen_tail_64_store + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v3.16b + eor v21.16b, v21.16b, v8.16b + eor v22.16b, v22.16b, v13.16b + eor v23.16b, v23.16b, v18.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #64 + + mov v0.16b, v4.16b + mov v5.16b, v9.16b + mov v10.16b, v14.16b + mov v15.16b, v19.16b + + cmp x2, #64 + b.lt Lopen_tail_64_store + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v4.16b + eor v21.16b, v21.16b, v9.16b + eor v22.16b, v22.16b, v14.16b + eor v23.16b, v23.16b, v19.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #64 + b Lopen_main_loop + +Lopen_tail: + + cbz x2, Lopen_finalize + + lsr x4, x2, #4 // How many whole blocks we have to hash + + cmp x2, #64 + b.le Lopen_tail_64 + cmp x2, #128 + b.le Lopen_tail_128 + +Lopen_tail_192: + // We need three more blocks + mov v0.16b, v24.16b + mov v1.16b, v24.16b + mov v2.16b, v24.16b + mov v5.16b, v28.16b + mov v6.16b, v28.16b + mov v7.16b, v28.16b + mov v10.16b, v29.16b + mov v11.16b, v29.16b + mov v12.16b, v29.16b + mov v15.16b, v30.16b + mov v16.16b, v30.16b + mov v17.16b, v30.16b + eor v23.16b, v23.16b, v23.16b + eor v21.16b, v21.16b, v21.16b + ins v23.s[0], v25.s[0] + ins v21.d[0], x15 + + add v22.4s, v23.4s, v21.4s + add v21.4s, v22.4s, v21.4s + + add v15.4s, v15.4s, v21.4s + add v16.4s, v16.4s, v23.4s + add v17.4s, v17.4s, v22.4s + + mov x7, #10 + subs x6, x7, x4 // itr1 can be negative if we have more than 160 bytes to hash + csel x7, x7, x4, le // if itr1 is zero or less, itr2 should be 10 to indicate all 10 rounds are hashing + sub x4, x4, x7 + + cbz x7, Lopen_tail_192_rounds_no_hash + +Lopen_tail_192_rounds: + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most +Lopen_tail_192_rounds_no_hash: + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v5.16b, v5.16b, v5.16b, #4 + ext v6.16b, v6.16b, v6.16b, #4 + ext v7.16b, v7.16b, v7.16b, #4 + + ext v10.16b, v10.16b, v10.16b, #8 + ext v11.16b, v11.16b, v11.16b, #8 + ext v12.16b, v12.16b, v12.16b, #8 + + ext v15.16b, v15.16b, v15.16b, #12 + ext v16.16b, v16.16b, v16.16b, #12 + ext v17.16b, v17.16b, v17.16b, #12 + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v5.16b, v5.16b, v5.16b, #12 + ext v6.16b, v6.16b, v6.16b, #12 + ext v7.16b, v7.16b, v7.16b, #12 + + ext v10.16b, v10.16b, v10.16b, #8 + ext v11.16b, v11.16b, v11.16b, #8 + ext v12.16b, v12.16b, v12.16b, #8 + + ext v15.16b, v15.16b, v15.16b, #4 + ext v16.16b, v16.16b, v16.16b, #4 + ext v17.16b, v17.16b, v17.16b, #4 + subs x7, x7, #1 + b.gt Lopen_tail_192_rounds + subs x6, x6, #1 + b.ge Lopen_tail_192_rounds_no_hash + + // We hashed 160 bytes at most, may still have 32 bytes left +Lopen_tail_192_hash: + cbz x4, Lopen_tail_192_hash_done + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + sub x4, x4, #1 + b Lopen_tail_192_hash + +Lopen_tail_192_hash_done: + + add v0.4s, v0.4s, v24.4s + add v1.4s, v1.4s, v24.4s + add v2.4s, v2.4s, v24.4s + add v5.4s, v5.4s, v28.4s + add v6.4s, v6.4s, v28.4s + add v7.4s, v7.4s, v28.4s + add v10.4s, v10.4s, v29.4s + add v11.4s, v11.4s, v29.4s + add v12.4s, v12.4s, v29.4s + add v15.4s, v15.4s, v30.4s + add v16.4s, v16.4s, v30.4s + add v17.4s, v17.4s, v30.4s + + add v15.4s, v15.4s, v21.4s + add v16.4s, v16.4s, v23.4s + add v17.4s, v17.4s, v22.4s + + ld1 {v20.16b - v23.16b}, [x1], #64 + + eor v20.16b, v20.16b, v1.16b + eor v21.16b, v21.16b, v6.16b + eor v22.16b, v22.16b, v11.16b + eor v23.16b, v23.16b, v16.16b + + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + + eor v20.16b, v20.16b, v2.16b + eor v21.16b, v21.16b, v7.16b + eor v22.16b, v22.16b, v12.16b + eor v23.16b, v23.16b, v17.16b + + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #128 + b Lopen_tail_64_store + +Lopen_tail_128: + // We need two more blocks + mov v0.16b, v24.16b + mov v1.16b, v24.16b + mov v5.16b, v28.16b + mov v6.16b, v28.16b + mov v10.16b, v29.16b + mov v11.16b, v29.16b + mov v15.16b, v30.16b + mov v16.16b, v30.16b + eor v23.16b, v23.16b, v23.16b + eor v22.16b, v22.16b, v22.16b + ins v23.s[0], v25.s[0] + ins v22.d[0], x15 + add v22.4s, v22.4s, v23.4s + + add v15.4s, v15.4s, v22.4s + add v16.4s, v16.4s, v23.4s + + mov x6, #10 + sub x6, x6, x4 + +Lopen_tail_128_rounds: + add v0.4s, v0.4s, v5.4s + eor v15.16b, v15.16b, v0.16b + rev32 v15.8h, v15.8h + + add v10.4s, v10.4s, v15.4s + eor v5.16b, v5.16b, v10.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + add v0.4s, v0.4s, v20.4s + eor v15.16b, v15.16b, v0.16b + tbl v15.16b, {v15.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + eor v20.16b, v20.16b, v10.16b + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + ext v5.16b, v5.16b, v5.16b, #4 + ext v10.16b, v10.16b, v10.16b, #8 + ext v15.16b, v15.16b, v15.16b, #12 + add v1.4s, v1.4s, v6.4s + eor v16.16b, v16.16b, v1.16b + rev32 v16.8h, v16.8h + + add v11.4s, v11.4s, v16.4s + eor v6.16b, v6.16b, v11.16b + ushr v20.4s, v6.4s, #20 + sli v20.4s, v6.4s, #12 + add v1.4s, v1.4s, v20.4s + eor v16.16b, v16.16b, v1.16b + tbl v16.16b, {v16.16b}, v26.16b + + add v11.4s, v11.4s, v16.4s + eor v20.16b, v20.16b, v11.16b + ushr v6.4s, v20.4s, #25 + sli v6.4s, v20.4s, #7 + ext v6.16b, v6.16b, v6.16b, #4 + ext v11.16b, v11.16b, v11.16b, #8 + ext v16.16b, v16.16b, v16.16b, #12 + add v0.4s, v0.4s, v5.4s + eor v15.16b, v15.16b, v0.16b + rev32 v15.8h, v15.8h + + add v10.4s, v10.4s, v15.4s + eor v5.16b, v5.16b, v10.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + add v0.4s, v0.4s, v20.4s + eor v15.16b, v15.16b, v0.16b + tbl v15.16b, {v15.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + eor v20.16b, v20.16b, v10.16b + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + ext v5.16b, v5.16b, v5.16b, #12 + ext v10.16b, v10.16b, v10.16b, #8 + ext v15.16b, v15.16b, v15.16b, #4 + add v1.4s, v1.4s, v6.4s + eor v16.16b, v16.16b, v1.16b + rev32 v16.8h, v16.8h + + add v11.4s, v11.4s, v16.4s + eor v6.16b, v6.16b, v11.16b + ushr v20.4s, v6.4s, #20 + sli v20.4s, v6.4s, #12 + add v1.4s, v1.4s, v20.4s + eor v16.16b, v16.16b, v1.16b + tbl v16.16b, {v16.16b}, v26.16b + + add v11.4s, v11.4s, v16.4s + eor v20.16b, v20.16b, v11.16b + ushr v6.4s, v20.4s, #25 + sli v6.4s, v20.4s, #7 + ext v6.16b, v6.16b, v6.16b, #12 + ext v11.16b, v11.16b, v11.16b, #8 + ext v16.16b, v16.16b, v16.16b, #4 + subs x6, x6, #1 + b.gt Lopen_tail_128_rounds + cbz x4, Lopen_tail_128_rounds_done + subs x4, x4, #1 + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + b Lopen_tail_128_rounds + +Lopen_tail_128_rounds_done: + add v0.4s, v0.4s, v24.4s + add v1.4s, v1.4s, v24.4s + add v5.4s, v5.4s, v28.4s + add v6.4s, v6.4s, v28.4s + add v10.4s, v10.4s, v29.4s + add v11.4s, v11.4s, v29.4s + add v15.4s, v15.4s, v30.4s + add v16.4s, v16.4s, v30.4s + add v15.4s, v15.4s, v22.4s + add v16.4s, v16.4s, v23.4s + + ld1 {v20.16b - v23.16b}, [x1], #64 + + eor v20.16b, v20.16b, v1.16b + eor v21.16b, v21.16b, v6.16b + eor v22.16b, v22.16b, v11.16b + eor v23.16b, v23.16b, v16.16b + + st1 {v20.16b - v23.16b}, [x0], #64 + sub x2, x2, #64 + + b Lopen_tail_64_store + +Lopen_tail_64: + // We just need a single block + mov v0.16b, v24.16b + mov v5.16b, v28.16b + mov v10.16b, v29.16b + mov v15.16b, v30.16b + eor v23.16b, v23.16b, v23.16b + ins v23.s[0], v25.s[0] + add v15.4s, v15.4s, v23.4s + + mov x6, #10 + sub x6, x6, x4 + +Lopen_tail_64_rounds: + add v0.4s, v0.4s, v5.4s + eor v15.16b, v15.16b, v0.16b + rev32 v15.8h, v15.8h + + add v10.4s, v10.4s, v15.4s + eor v5.16b, v5.16b, v10.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + add v0.4s, v0.4s, v20.4s + eor v15.16b, v15.16b, v0.16b + tbl v15.16b, {v15.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + eor v20.16b, v20.16b, v10.16b + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + ext v5.16b, v5.16b, v5.16b, #4 + ext v10.16b, v10.16b, v10.16b, #8 + ext v15.16b, v15.16b, v15.16b, #12 + add v0.4s, v0.4s, v5.4s + eor v15.16b, v15.16b, v0.16b + rev32 v15.8h, v15.8h + + add v10.4s, v10.4s, v15.4s + eor v5.16b, v5.16b, v10.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + add v0.4s, v0.4s, v20.4s + eor v15.16b, v15.16b, v0.16b + tbl v15.16b, {v15.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + eor v20.16b, v20.16b, v10.16b + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + ext v5.16b, v5.16b, v5.16b, #12 + ext v10.16b, v10.16b, v10.16b, #8 + ext v15.16b, v15.16b, v15.16b, #4 + subs x6, x6, #1 + b.gt Lopen_tail_64_rounds + cbz x4, Lopen_tail_64_rounds_done + subs x4, x4, #1 + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + b Lopen_tail_64_rounds + +Lopen_tail_64_rounds_done: + add v0.4s, v0.4s, v24.4s + add v5.4s, v5.4s, v28.4s + add v10.4s, v10.4s, v29.4s + add v15.4s, v15.4s, v30.4s + add v15.4s, v15.4s, v23.4s + +Lopen_tail_64_store: + cmp x2, #16 + b.lt Lopen_tail_16 + + ld1 {v20.16b}, [x1], #16 + eor v20.16b, v20.16b, v0.16b + st1 {v20.16b}, [x0], #16 + mov v0.16b, v5.16b + mov v5.16b, v10.16b + mov v10.16b, v15.16b + sub x2, x2, #16 + b Lopen_tail_64_store + +Lopen_tail_16: + // Here we handle the last [0,16) bytes that require a padded block + cbz x2, Lopen_finalize + + eor v20.16b, v20.16b, v20.16b // Use T0 to load the ciphertext + eor v21.16b, v21.16b, v21.16b // Use T1 to generate an AND mask + not v22.16b, v20.16b + + add x7, x1, x2 + mov x6, x2 + +Lopen_tail_16_compose: + ext v20.16b, v20.16b, v20.16b, #15 + ldrb w11, [x7, #-1]! + mov v20.b[0], w11 + ext v21.16b, v22.16b, v21.16b, #15 + subs x2, x2, #1 + b.gt Lopen_tail_16_compose + + and v20.16b, v20.16b, v21.16b + // Hash in the final padded block + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + eor v20.16b, v20.16b, v0.16b + +Lopen_tail_16_store: + umov w11, v20.b[0] + strb w11, [x0], #1 + ext v20.16b, v20.16b, v20.16b, #1 + subs x6, x6, #1 + b.gt Lopen_tail_16_store + +Lopen_finalize: + mov x11, v31.d[0] + mov x12, v31.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + // Final reduction step + sub x12, xzr, x15 + orr x13, xzr, #3 + subs x11, x8, #-5 + sbcs x12, x9, x12 + sbcs x13, x10, x13 + csel x8, x11, x8, cs + csel x9, x12, x9, cs + csel x10, x13, x10, cs + mov x11, v27.d[0] + mov x12, v27.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + + stp x8, x9, [x5] + + ldp d8, d9, [sp, #16] + ldp d10, d11, [sp, #32] + ldp d12, d13, [sp, #48] + ldp d14, d15, [sp, #64] +.cfi_restore b15 +.cfi_restore b14 +.cfi_restore b13 +.cfi_restore b12 +.cfi_restore b11 +.cfi_restore b10 +.cfi_restore b9 +.cfi_restore b8 + ldp x29, x30, [sp], 80 +.cfi_restore w29 +.cfi_restore w30 +.cfi_def_cfa_offset 0 + AARCH64_VALIDATE_LINK_REGISTER + ret + +Lopen_128: + // On some architectures preparing 5 blocks for small buffers is wasteful + eor v25.16b, v25.16b, v25.16b + mov x11, #1 + mov v25.s[0], w11 + mov v0.16b, v24.16b + mov v1.16b, v24.16b + mov v2.16b, v24.16b + mov v5.16b, v28.16b + mov v6.16b, v28.16b + mov v7.16b, v28.16b + mov v10.16b, v29.16b + mov v11.16b, v29.16b + mov v12.16b, v29.16b + mov v17.16b, v30.16b + add v15.4s, v17.4s, v25.4s + add v16.4s, v15.4s, v25.4s + + mov x6, #10 + +Lopen_128_rounds: + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v5.16b, v5.16b, v5.16b, #4 + ext v6.16b, v6.16b, v6.16b, #4 + ext v7.16b, v7.16b, v7.16b, #4 + + ext v10.16b, v10.16b, v10.16b, #8 + ext v11.16b, v11.16b, v11.16b, #8 + ext v12.16b, v12.16b, v12.16b, #8 + + ext v15.16b, v15.16b, v15.16b, #12 + ext v16.16b, v16.16b, v16.16b, #12 + ext v17.16b, v17.16b, v17.16b, #12 + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v5.16b, v5.16b, v5.16b, #12 + ext v6.16b, v6.16b, v6.16b, #12 + ext v7.16b, v7.16b, v7.16b, #12 + + ext v10.16b, v10.16b, v10.16b, #8 + ext v11.16b, v11.16b, v11.16b, #8 + ext v12.16b, v12.16b, v12.16b, #8 + + ext v15.16b, v15.16b, v15.16b, #4 + ext v16.16b, v16.16b, v16.16b, #4 + ext v17.16b, v17.16b, v17.16b, #4 + subs x6, x6, #1 + b.hi Lopen_128_rounds + + add v0.4s, v0.4s, v24.4s + add v1.4s, v1.4s, v24.4s + add v2.4s, v2.4s, v24.4s + + add v5.4s, v5.4s, v28.4s + add v6.4s, v6.4s, v28.4s + add v7.4s, v7.4s, v28.4s + + add v10.4s, v10.4s, v29.4s + add v11.4s, v11.4s, v29.4s + + add v30.4s, v30.4s, v25.4s + add v15.4s, v15.4s, v30.4s + add v30.4s, v30.4s, v25.4s + add v16.4s, v16.4s, v30.4s + + and v2.16b, v2.16b, v27.16b + mov x16, v2.d[0] // Move the R key to GPRs + mov x17, v2.d[1] + mov v27.16b, v7.16b // Store the S key + + bl Lpoly_hash_ad_internal + +Lopen_128_store: + cmp x2, #64 + b.lt Lopen_128_store_64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + mov x11, v21.d[0] + mov x12, v21.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + mov x11, v22.d[0] + mov x12, v22.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + mov x11, v23.d[0] + mov x12, v23.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + + eor v20.16b, v20.16b, v0.16b + eor v21.16b, v21.16b, v5.16b + eor v22.16b, v22.16b, v10.16b + eor v23.16b, v23.16b, v15.16b + + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #64 + + mov v0.16b, v1.16b + mov v5.16b, v6.16b + mov v10.16b, v11.16b + mov v15.16b, v16.16b + +Lopen_128_store_64: + + lsr x4, x2, #4 + mov x3, x1 + +Lopen_128_hash_64: + cbz x4, Lopen_tail_64_store + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + sub x4, x4, #1 + b Lopen_128_hash_64 +.cfi_endproc + +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__APPLE__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_armv8-linux64.S temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_armv8-linux64.S --- temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_armv8-linux64.S 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_armv8-linux64.S 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,3009 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. + +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__ELF__) +#include +.section .rodata + +.align 7 +.Lchacha20_consts: +.byte 'e','x','p','a','n','d',' ','3','2','-','b','y','t','e',' ','k' +.Linc: +.long 1,2,3,4 +.Lrol8: +.byte 3,0,1,2, 7,4,5,6, 11,8,9,10, 15,12,13,14 +.Lclamp: +.quad 0x0FFFFFFC0FFFFFFF, 0x0FFFFFFC0FFFFFFC + +.text + +.type .Lpoly_hash_ad_internal,%function +.align 6 +.Lpoly_hash_ad_internal: +.cfi_startproc + cbnz x4, .Lpoly_hash_intro + ret + +.Lpoly_hash_intro: + cmp x4, #16 + b.lt .Lpoly_hash_ad_tail + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + sub x4, x4, #16 + b .Lpoly_hash_ad_internal + +.Lpoly_hash_ad_tail: + cbz x4, .Lpoly_hash_ad_ret + + eor v20.16b, v20.16b, v20.16b // Use T0 to load the AAD + sub x4, x4, #1 + +.Lpoly_hash_tail_16_compose: + ext v20.16b, v20.16b, v20.16b, #15 + ldrb w11, [x3, x4] + mov v20.b[0], w11 + subs x4, x4, #1 + b.ge .Lpoly_hash_tail_16_compose + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + +.Lpoly_hash_ad_ret: + ret +.cfi_endproc +.size .Lpoly_hash_ad_internal, .-.Lpoly_hash_ad_internal + +///////////////////////////////// +// +// void chacha20_poly1305_seal(uint8_t *pt, uint8_t *ct, size_t len_in, uint8_t *ad, size_t len_ad, union open_data *seal_data); +// +.globl chacha20_poly1305_seal +.hidden chacha20_poly1305_seal +.type chacha20_poly1305_seal,%function +.align 6 +chacha20_poly1305_seal: + AARCH64_SIGN_LINK_REGISTER +.cfi_startproc + stp x29, x30, [sp, #-80]! +.cfi_def_cfa_offset 80 +.cfi_offset w30, -72 +.cfi_offset w29, -80 + mov x29, sp + // We probably could do .cfi_def_cfa w29, 80 at this point, but since + // we don't actually use the frame pointer like that, it's probably not + // worth bothering. + stp d8, d9, [sp, #16] + stp d10, d11, [sp, #32] + stp d12, d13, [sp, #48] + stp d14, d15, [sp, #64] +.cfi_offset b15, -8 +.cfi_offset b14, -16 +.cfi_offset b13, -24 +.cfi_offset b12, -32 +.cfi_offset b11, -40 +.cfi_offset b10, -48 +.cfi_offset b9, -56 +.cfi_offset b8, -64 + + adrp x11, .Lchacha20_consts + add x11, x11, :lo12:.Lchacha20_consts + + ld1 {v24.16b - v27.16b}, [x11] // .Load the CONSTS, INC, ROL8 and CLAMP values + ld1 {v28.16b - v30.16b}, [x5] + + mov x15, #1 // Prepare the Poly1305 state + mov x8, #0 + mov x9, #0 + mov x10, #0 + + ldr x12, [x5, #56] // The total cipher text length includes extra_in_len + add x12, x12, x2 + mov v31.d[0], x4 // Store the input and aad lengths + mov v31.d[1], x12 + + cmp x2, #128 + b.le .Lseal_128 // Optimization for smaller buffers + + // Initially we prepare 5 ChaCha20 blocks. Four to encrypt up to 4 blocks (256 bytes) of plaintext, + // and one for the Poly1305 R and S keys. The first four blocks (A0-A3..D0-D3) are computed vertically, + // the fifth block (A4-D4) horizontally. + ld4r {v0.4s,v1.4s,v2.4s,v3.4s}, [x11] + mov v4.16b, v24.16b + + ld4r {v5.4s,v6.4s,v7.4s,v8.4s}, [x5], #16 + mov v9.16b, v28.16b + + ld4r {v10.4s,v11.4s,v12.4s,v13.4s}, [x5], #16 + mov v14.16b, v29.16b + + ld4r {v15.4s,v16.4s,v17.4s,v18.4s}, [x5] + add v15.4s, v15.4s, v25.4s + mov v19.16b, v30.16b + + sub x5, x5, #32 + + mov x6, #10 + +.align 5 +.Lseal_init_rounds: + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + add v3.4s, v3.4s, v8.4s + add v4.4s, v4.4s, v9.4s + + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + eor v18.16b, v18.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + rev32 v18.8h, v18.8h + rev32 v19.8h, v19.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + add v13.4s, v13.4s, v18.4s + add v14.4s, v14.4s, v19.4s + + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + eor v8.16b, v8.16b, v13.16b + eor v9.16b, v9.16b, v14.16b + + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + ushr v7.4s, v8.4s, #20 + sli v7.4s, v8.4s, #12 + ushr v8.4s, v9.4s, #20 + sli v8.4s, v9.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + add v3.4s, v3.4s, v7.4s + add v4.4s, v4.4s, v8.4s + + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + eor v18.16b, v18.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + tbl v18.16b, {v18.16b}, v26.16b + tbl v19.16b, {v19.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + add v13.4s, v13.4s, v18.4s + add v14.4s, v14.4s, v19.4s + + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + eor v7.16b, v7.16b, v13.16b + eor v8.16b, v8.16b, v14.16b + + ushr v9.4s, v8.4s, #25 + sli v9.4s, v8.4s, #7 + ushr v8.4s, v7.4s, #25 + sli v8.4s, v7.4s, #7 + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v9.16b, v9.16b, v9.16b, #4 + ext v14.16b, v14.16b, v14.16b, #8 + ext v19.16b, v19.16b, v19.16b, #12 + add v0.4s, v0.4s, v6.4s + add v1.4s, v1.4s, v7.4s + add v2.4s, v2.4s, v8.4s + add v3.4s, v3.4s, v5.4s + add v4.4s, v4.4s, v9.4s + + eor v18.16b, v18.16b, v0.16b + eor v15.16b, v15.16b, v1.16b + eor v16.16b, v16.16b, v2.16b + eor v17.16b, v17.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + rev32 v18.8h, v18.8h + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + rev32 v19.8h, v19.8h + + add v12.4s, v12.4s, v18.4s + add v13.4s, v13.4s, v15.4s + add v10.4s, v10.4s, v16.4s + add v11.4s, v11.4s, v17.4s + add v14.4s, v14.4s, v19.4s + + eor v6.16b, v6.16b, v12.16b + eor v7.16b, v7.16b, v13.16b + eor v8.16b, v8.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v9.16b, v9.16b, v14.16b + + ushr v20.4s, v6.4s, #20 + sli v20.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + ushr v7.4s, v8.4s, #20 + sli v7.4s, v8.4s, #12 + ushr v8.4s, v5.4s, #20 + sli v8.4s, v5.4s, #12 + ushr v5.4s, v9.4s, #20 + sli v5.4s, v9.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + add v3.4s, v3.4s, v8.4s + add v4.4s, v4.4s, v5.4s + + eor v18.16b, v18.16b, v0.16b + eor v15.16b, v15.16b, v1.16b + eor v16.16b, v16.16b, v2.16b + eor v17.16b, v17.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + tbl v18.16b, {v18.16b}, v26.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + tbl v19.16b, {v19.16b}, v26.16b + + add v12.4s, v12.4s, v18.4s + add v13.4s, v13.4s, v15.4s + add v10.4s, v10.4s, v16.4s + add v11.4s, v11.4s, v17.4s + add v14.4s, v14.4s, v19.4s + + eor v20.16b, v20.16b, v12.16b + eor v6.16b, v6.16b, v13.16b + eor v7.16b, v7.16b, v10.16b + eor v8.16b, v8.16b, v11.16b + eor v5.16b, v5.16b, v14.16b + + ushr v9.4s, v5.4s, #25 + sli v9.4s, v5.4s, #7 + ushr v5.4s, v8.4s, #25 + sli v5.4s, v8.4s, #7 + ushr v8.4s, v7.4s, #25 + sli v8.4s, v7.4s, #7 + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v20.4s, #25 + sli v6.4s, v20.4s, #7 + + ext v9.16b, v9.16b, v9.16b, #12 + ext v14.16b, v14.16b, v14.16b, #8 + ext v19.16b, v19.16b, v19.16b, #4 + subs x6, x6, #1 + b.hi .Lseal_init_rounds + + add v15.4s, v15.4s, v25.4s + mov x11, #4 + dup v20.4s, w11 + add v25.4s, v25.4s, v20.4s + + zip1 v20.4s, v0.4s, v1.4s + zip2 v21.4s, v0.4s, v1.4s + zip1 v22.4s, v2.4s, v3.4s + zip2 v23.4s, v2.4s, v3.4s + + zip1 v0.2d, v20.2d, v22.2d + zip2 v1.2d, v20.2d, v22.2d + zip1 v2.2d, v21.2d, v23.2d + zip2 v3.2d, v21.2d, v23.2d + + zip1 v20.4s, v5.4s, v6.4s + zip2 v21.4s, v5.4s, v6.4s + zip1 v22.4s, v7.4s, v8.4s + zip2 v23.4s, v7.4s, v8.4s + + zip1 v5.2d, v20.2d, v22.2d + zip2 v6.2d, v20.2d, v22.2d + zip1 v7.2d, v21.2d, v23.2d + zip2 v8.2d, v21.2d, v23.2d + + zip1 v20.4s, v10.4s, v11.4s + zip2 v21.4s, v10.4s, v11.4s + zip1 v22.4s, v12.4s, v13.4s + zip2 v23.4s, v12.4s, v13.4s + + zip1 v10.2d, v20.2d, v22.2d + zip2 v11.2d, v20.2d, v22.2d + zip1 v12.2d, v21.2d, v23.2d + zip2 v13.2d, v21.2d, v23.2d + + zip1 v20.4s, v15.4s, v16.4s + zip2 v21.4s, v15.4s, v16.4s + zip1 v22.4s, v17.4s, v18.4s + zip2 v23.4s, v17.4s, v18.4s + + zip1 v15.2d, v20.2d, v22.2d + zip2 v16.2d, v20.2d, v22.2d + zip1 v17.2d, v21.2d, v23.2d + zip2 v18.2d, v21.2d, v23.2d + + add v4.4s, v4.4s, v24.4s + add v9.4s, v9.4s, v28.4s + and v4.16b, v4.16b, v27.16b + + add v0.4s, v0.4s, v24.4s + add v5.4s, v5.4s, v28.4s + add v10.4s, v10.4s, v29.4s + add v15.4s, v15.4s, v30.4s + + add v1.4s, v1.4s, v24.4s + add v6.4s, v6.4s, v28.4s + add v11.4s, v11.4s, v29.4s + add v16.4s, v16.4s, v30.4s + + add v2.4s, v2.4s, v24.4s + add v7.4s, v7.4s, v28.4s + add v12.4s, v12.4s, v29.4s + add v17.4s, v17.4s, v30.4s + + add v3.4s, v3.4s, v24.4s + add v8.4s, v8.4s, v28.4s + add v13.4s, v13.4s, v29.4s + add v18.4s, v18.4s, v30.4s + + mov x16, v4.d[0] // Move the R key to GPRs + mov x17, v4.d[1] + mov v27.16b, v9.16b // Store the S key + + bl .Lpoly_hash_ad_internal + + mov x3, x0 + cmp x2, #256 + b.le .Lseal_tail + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v0.16b + eor v21.16b, v21.16b, v5.16b + eor v22.16b, v22.16b, v10.16b + eor v23.16b, v23.16b, v15.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v1.16b + eor v21.16b, v21.16b, v6.16b + eor v22.16b, v22.16b, v11.16b + eor v23.16b, v23.16b, v16.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v2.16b + eor v21.16b, v21.16b, v7.16b + eor v22.16b, v22.16b, v12.16b + eor v23.16b, v23.16b, v17.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v3.16b + eor v21.16b, v21.16b, v8.16b + eor v22.16b, v22.16b, v13.16b + eor v23.16b, v23.16b, v18.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #256 + + mov x6, #4 // In the first run of the loop we need to hash 256 bytes, therefore we hash one block for the first 4 rounds + mov x7, #6 // and two blocks for the remaining 6, for a total of (1 * 4 + 2 * 6) * 16 = 256 + +.Lseal_main_loop: + adrp x11, .Lchacha20_consts + add x11, x11, :lo12:.Lchacha20_consts + + ld4r {v0.4s,v1.4s,v2.4s,v3.4s}, [x11] + mov v4.16b, v24.16b + + ld4r {v5.4s,v6.4s,v7.4s,v8.4s}, [x5], #16 + mov v9.16b, v28.16b + + ld4r {v10.4s,v11.4s,v12.4s,v13.4s}, [x5], #16 + mov v14.16b, v29.16b + + ld4r {v15.4s,v16.4s,v17.4s,v18.4s}, [x5] + add v15.4s, v15.4s, v25.4s + mov v19.16b, v30.16b + + eor v20.16b, v20.16b, v20.16b //zero + not v21.16b, v20.16b // -1 + sub v21.4s, v25.4s, v21.4s // Add +1 + ext v20.16b, v21.16b, v20.16b, #12 // Get the last element (counter) + add v19.4s, v19.4s, v20.4s + + sub x5, x5, #32 +.align 5 +.Lseal_main_loop_rounds: + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + add v3.4s, v3.4s, v8.4s + add v4.4s, v4.4s, v9.4s + + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + eor v18.16b, v18.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + rev32 v18.8h, v18.8h + rev32 v19.8h, v19.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + add v13.4s, v13.4s, v18.4s + add v14.4s, v14.4s, v19.4s + + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + eor v8.16b, v8.16b, v13.16b + eor v9.16b, v9.16b, v14.16b + + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + ushr v7.4s, v8.4s, #20 + sli v7.4s, v8.4s, #12 + ushr v8.4s, v9.4s, #20 + sli v8.4s, v9.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + add v3.4s, v3.4s, v7.4s + add v4.4s, v4.4s, v8.4s + + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + eor v18.16b, v18.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + tbl v18.16b, {v18.16b}, v26.16b + tbl v19.16b, {v19.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + add v13.4s, v13.4s, v18.4s + add v14.4s, v14.4s, v19.4s + + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + eor v7.16b, v7.16b, v13.16b + eor v8.16b, v8.16b, v14.16b + + ushr v9.4s, v8.4s, #25 + sli v9.4s, v8.4s, #7 + ushr v8.4s, v7.4s, #25 + sli v8.4s, v7.4s, #7 + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v9.16b, v9.16b, v9.16b, #4 + ext v14.16b, v14.16b, v14.16b, #8 + ext v19.16b, v19.16b, v19.16b, #12 + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + add v0.4s, v0.4s, v6.4s + add v1.4s, v1.4s, v7.4s + add v2.4s, v2.4s, v8.4s + add v3.4s, v3.4s, v5.4s + add v4.4s, v4.4s, v9.4s + + eor v18.16b, v18.16b, v0.16b + eor v15.16b, v15.16b, v1.16b + eor v16.16b, v16.16b, v2.16b + eor v17.16b, v17.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + rev32 v18.8h, v18.8h + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + rev32 v19.8h, v19.8h + + add v12.4s, v12.4s, v18.4s + add v13.4s, v13.4s, v15.4s + add v10.4s, v10.4s, v16.4s + add v11.4s, v11.4s, v17.4s + add v14.4s, v14.4s, v19.4s + + eor v6.16b, v6.16b, v12.16b + eor v7.16b, v7.16b, v13.16b + eor v8.16b, v8.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v9.16b, v9.16b, v14.16b + + ushr v20.4s, v6.4s, #20 + sli v20.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + ushr v7.4s, v8.4s, #20 + sli v7.4s, v8.4s, #12 + ushr v8.4s, v5.4s, #20 + sli v8.4s, v5.4s, #12 + ushr v5.4s, v9.4s, #20 + sli v5.4s, v9.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + add v3.4s, v3.4s, v8.4s + add v4.4s, v4.4s, v5.4s + + eor v18.16b, v18.16b, v0.16b + eor v15.16b, v15.16b, v1.16b + eor v16.16b, v16.16b, v2.16b + eor v17.16b, v17.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + tbl v18.16b, {v18.16b}, v26.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + tbl v19.16b, {v19.16b}, v26.16b + + add v12.4s, v12.4s, v18.4s + add v13.4s, v13.4s, v15.4s + add v10.4s, v10.4s, v16.4s + add v11.4s, v11.4s, v17.4s + add v14.4s, v14.4s, v19.4s + + eor v20.16b, v20.16b, v12.16b + eor v6.16b, v6.16b, v13.16b + eor v7.16b, v7.16b, v10.16b + eor v8.16b, v8.16b, v11.16b + eor v5.16b, v5.16b, v14.16b + + ushr v9.4s, v5.4s, #25 + sli v9.4s, v5.4s, #7 + ushr v5.4s, v8.4s, #25 + sli v5.4s, v8.4s, #7 + ushr v8.4s, v7.4s, #25 + sli v8.4s, v7.4s, #7 + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v20.4s, #25 + sli v6.4s, v20.4s, #7 + + ext v9.16b, v9.16b, v9.16b, #12 + ext v14.16b, v14.16b, v14.16b, #8 + ext v19.16b, v19.16b, v19.16b, #4 + subs x6, x6, #1 + b.ge .Lseal_main_loop_rounds + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + subs x7, x7, #1 + b.gt .Lseal_main_loop_rounds + + eor v20.16b, v20.16b, v20.16b //zero + not v21.16b, v20.16b // -1 + sub v21.4s, v25.4s, v21.4s // Add +1 + ext v20.16b, v21.16b, v20.16b, #12 // Get the last element (counter) + add v19.4s, v19.4s, v20.4s + + add v15.4s, v15.4s, v25.4s + mov x11, #5 + dup v20.4s, w11 + add v25.4s, v25.4s, v20.4s + + zip1 v20.4s, v0.4s, v1.4s + zip2 v21.4s, v0.4s, v1.4s + zip1 v22.4s, v2.4s, v3.4s + zip2 v23.4s, v2.4s, v3.4s + + zip1 v0.2d, v20.2d, v22.2d + zip2 v1.2d, v20.2d, v22.2d + zip1 v2.2d, v21.2d, v23.2d + zip2 v3.2d, v21.2d, v23.2d + + zip1 v20.4s, v5.4s, v6.4s + zip2 v21.4s, v5.4s, v6.4s + zip1 v22.4s, v7.4s, v8.4s + zip2 v23.4s, v7.4s, v8.4s + + zip1 v5.2d, v20.2d, v22.2d + zip2 v6.2d, v20.2d, v22.2d + zip1 v7.2d, v21.2d, v23.2d + zip2 v8.2d, v21.2d, v23.2d + + zip1 v20.4s, v10.4s, v11.4s + zip2 v21.4s, v10.4s, v11.4s + zip1 v22.4s, v12.4s, v13.4s + zip2 v23.4s, v12.4s, v13.4s + + zip1 v10.2d, v20.2d, v22.2d + zip2 v11.2d, v20.2d, v22.2d + zip1 v12.2d, v21.2d, v23.2d + zip2 v13.2d, v21.2d, v23.2d + + zip1 v20.4s, v15.4s, v16.4s + zip2 v21.4s, v15.4s, v16.4s + zip1 v22.4s, v17.4s, v18.4s + zip2 v23.4s, v17.4s, v18.4s + + zip1 v15.2d, v20.2d, v22.2d + zip2 v16.2d, v20.2d, v22.2d + zip1 v17.2d, v21.2d, v23.2d + zip2 v18.2d, v21.2d, v23.2d + + add v0.4s, v0.4s, v24.4s + add v5.4s, v5.4s, v28.4s + add v10.4s, v10.4s, v29.4s + add v15.4s, v15.4s, v30.4s + + add v1.4s, v1.4s, v24.4s + add v6.4s, v6.4s, v28.4s + add v11.4s, v11.4s, v29.4s + add v16.4s, v16.4s, v30.4s + + add v2.4s, v2.4s, v24.4s + add v7.4s, v7.4s, v28.4s + add v12.4s, v12.4s, v29.4s + add v17.4s, v17.4s, v30.4s + + add v3.4s, v3.4s, v24.4s + add v8.4s, v8.4s, v28.4s + add v13.4s, v13.4s, v29.4s + add v18.4s, v18.4s, v30.4s + + add v4.4s, v4.4s, v24.4s + add v9.4s, v9.4s, v28.4s + add v14.4s, v14.4s, v29.4s + add v19.4s, v19.4s, v30.4s + + cmp x2, #320 + b.le .Lseal_tail + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v0.16b + eor v21.16b, v21.16b, v5.16b + eor v22.16b, v22.16b, v10.16b + eor v23.16b, v23.16b, v15.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v1.16b + eor v21.16b, v21.16b, v6.16b + eor v22.16b, v22.16b, v11.16b + eor v23.16b, v23.16b, v16.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v2.16b + eor v21.16b, v21.16b, v7.16b + eor v22.16b, v22.16b, v12.16b + eor v23.16b, v23.16b, v17.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v3.16b + eor v21.16b, v21.16b, v8.16b + eor v22.16b, v22.16b, v13.16b + eor v23.16b, v23.16b, v18.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v4.16b + eor v21.16b, v21.16b, v9.16b + eor v22.16b, v22.16b, v14.16b + eor v23.16b, v23.16b, v19.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #320 + + mov x6, #0 + mov x7, #10 // For the remainder of the loop we always hash and encrypt 320 bytes per iteration + + b .Lseal_main_loop + +.Lseal_tail: + // This part of the function handles the storage and authentication of the last [0,320) bytes + // We assume A0-A4 ... D0-D4 hold at least inl (320 max) bytes of the stream data. + cmp x2, #64 + b.lt .Lseal_tail_64 + + // Store and authenticate 64B blocks per iteration + ld1 {v20.16b - v23.16b}, [x1], #64 + + eor v20.16b, v20.16b, v0.16b + eor v21.16b, v21.16b, v5.16b + eor v22.16b, v22.16b, v10.16b + eor v23.16b, v23.16b, v15.16b + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + mov x11, v21.d[0] + mov x12, v21.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + mov x11, v22.d[0] + mov x12, v22.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + mov x11, v23.d[0] + mov x12, v23.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + st1 {v20.16b - v23.16b}, [x0], #64 + sub x2, x2, #64 + + // Shift the state left by 64 bytes for the next iteration of the loop + mov v0.16b, v1.16b + mov v5.16b, v6.16b + mov v10.16b, v11.16b + mov v15.16b, v16.16b + + mov v1.16b, v2.16b + mov v6.16b, v7.16b + mov v11.16b, v12.16b + mov v16.16b, v17.16b + + mov v2.16b, v3.16b + mov v7.16b, v8.16b + mov v12.16b, v13.16b + mov v17.16b, v18.16b + + mov v3.16b, v4.16b + mov v8.16b, v9.16b + mov v13.16b, v14.16b + mov v18.16b, v19.16b + + b .Lseal_tail + +.Lseal_tail_64: + ldp x3, x4, [x5, #48] // extra_in_len and extra_in_ptr + + // Here we handle the last [0,64) bytes of plaintext + cmp x2, #16 + b.lt .Lseal_tail_16 + // Each iteration encrypt and authenticate a 16B block + ld1 {v20.16b}, [x1], #16 + eor v20.16b, v20.16b, v0.16b + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + st1 {v20.16b}, [x0], #16 + + sub x2, x2, #16 + + // Shift the state left by 16 bytes for the next iteration of the loop + mov v0.16b, v5.16b + mov v5.16b, v10.16b + mov v10.16b, v15.16b + + b .Lseal_tail_64 + +.Lseal_tail_16: + // Here we handle the last [0,16) bytes of ciphertext that require a padded block + cbz x2, .Lseal_hash_extra + + eor v20.16b, v20.16b, v20.16b // Use T0 to load the plaintext/extra in + eor v21.16b, v21.16b, v21.16b // Use T1 to generate an AND mask that will only mask the ciphertext bytes + not v22.16b, v20.16b + + mov x6, x2 + add x1, x1, x2 + + cbz x4, .Lseal_tail_16_compose // No extra data to pad with, zero padding + + mov x7, #16 // We need to load some extra_in first for padding + sub x7, x7, x2 + cmp x4, x7 + csel x7, x4, x7, lt // .Load the minimum of extra_in_len and the amount needed to fill the register + mov x12, x7 + add x3, x3, x7 + sub x4, x4, x7 + +.Lseal_tail16_compose_extra_in: + ext v20.16b, v20.16b, v20.16b, #15 + ldrb w11, [x3, #-1]! + mov v20.b[0], w11 + subs x7, x7, #1 + b.gt .Lseal_tail16_compose_extra_in + + add x3, x3, x12 + +.Lseal_tail_16_compose: + ext v20.16b, v20.16b, v20.16b, #15 + ldrb w11, [x1, #-1]! + mov v20.b[0], w11 + ext v21.16b, v22.16b, v21.16b, #15 + subs x2, x2, #1 + b.gt .Lseal_tail_16_compose + + and v0.16b, v0.16b, v21.16b + eor v20.16b, v20.16b, v0.16b + mov v21.16b, v20.16b + +.Lseal_tail_16_store: + umov w11, v20.b[0] + strb w11, [x0], #1 + ext v20.16b, v20.16b, v20.16b, #1 + subs x6, x6, #1 + b.gt .Lseal_tail_16_store + + // Hash in the final ct block concatenated with extra_in + mov x11, v21.d[0] + mov x12, v21.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + +.Lseal_hash_extra: + cbz x4, .Lseal_finalize + +.Lseal_hash_extra_loop: + cmp x4, #16 + b.lt .Lseal_hash_extra_tail + ld1 {v20.16b}, [x3], #16 + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + sub x4, x4, #16 + b .Lseal_hash_extra_loop + +.Lseal_hash_extra_tail: + cbz x4, .Lseal_finalize + eor v20.16b, v20.16b, v20.16b // Use T0 to load the remaining extra ciphertext + add x3, x3, x4 + +.Lseal_hash_extra_load: + ext v20.16b, v20.16b, v20.16b, #15 + ldrb w11, [x3, #-1]! + mov v20.b[0], w11 + subs x4, x4, #1 + b.gt .Lseal_hash_extra_load + + // Hash in the final padded extra_in blcok + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + +.Lseal_finalize: + mov x11, v31.d[0] + mov x12, v31.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + // Final reduction step + sub x12, xzr, x15 + orr x13, xzr, #3 + subs x11, x8, #-5 + sbcs x12, x9, x12 + sbcs x13, x10, x13 + csel x8, x11, x8, cs + csel x9, x12, x9, cs + csel x10, x13, x10, cs + mov x11, v27.d[0] + mov x12, v27.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + + stp x8, x9, [x5] + + ldp d8, d9, [sp, #16] + ldp d10, d11, [sp, #32] + ldp d12, d13, [sp, #48] + ldp d14, d15, [sp, #64] +.cfi_restore b15 +.cfi_restore b14 +.cfi_restore b13 +.cfi_restore b12 +.cfi_restore b11 +.cfi_restore b10 +.cfi_restore b9 +.cfi_restore b8 + ldp x29, x30, [sp], 80 +.cfi_restore w29 +.cfi_restore w30 +.cfi_def_cfa_offset 0 + AARCH64_VALIDATE_LINK_REGISTER + ret + +.Lseal_128: + // On some architectures preparing 5 blocks for small buffers is wasteful + eor v25.16b, v25.16b, v25.16b + mov x11, #1 + mov v25.s[0], w11 + mov v0.16b, v24.16b + mov v1.16b, v24.16b + mov v2.16b, v24.16b + mov v5.16b, v28.16b + mov v6.16b, v28.16b + mov v7.16b, v28.16b + mov v10.16b, v29.16b + mov v11.16b, v29.16b + mov v12.16b, v29.16b + mov v17.16b, v30.16b + add v15.4s, v17.4s, v25.4s + add v16.4s, v15.4s, v25.4s + + mov x6, #10 + +.Lseal_128_rounds: + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v5.16b, v5.16b, v5.16b, #4 + ext v6.16b, v6.16b, v6.16b, #4 + ext v7.16b, v7.16b, v7.16b, #4 + + ext v10.16b, v10.16b, v10.16b, #8 + ext v11.16b, v11.16b, v11.16b, #8 + ext v12.16b, v12.16b, v12.16b, #8 + + ext v15.16b, v15.16b, v15.16b, #12 + ext v16.16b, v16.16b, v16.16b, #12 + ext v17.16b, v17.16b, v17.16b, #12 + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v5.16b, v5.16b, v5.16b, #12 + ext v6.16b, v6.16b, v6.16b, #12 + ext v7.16b, v7.16b, v7.16b, #12 + + ext v10.16b, v10.16b, v10.16b, #8 + ext v11.16b, v11.16b, v11.16b, #8 + ext v12.16b, v12.16b, v12.16b, #8 + + ext v15.16b, v15.16b, v15.16b, #4 + ext v16.16b, v16.16b, v16.16b, #4 + ext v17.16b, v17.16b, v17.16b, #4 + subs x6, x6, #1 + b.hi .Lseal_128_rounds + + add v0.4s, v0.4s, v24.4s + add v1.4s, v1.4s, v24.4s + add v2.4s, v2.4s, v24.4s + + add v5.4s, v5.4s, v28.4s + add v6.4s, v6.4s, v28.4s + add v7.4s, v7.4s, v28.4s + + // Only the first 32 bytes of the third block (counter = 0) are needed, + // so skip updating v12 and v17. + add v10.4s, v10.4s, v29.4s + add v11.4s, v11.4s, v29.4s + + add v30.4s, v30.4s, v25.4s + add v15.4s, v15.4s, v30.4s + add v30.4s, v30.4s, v25.4s + add v16.4s, v16.4s, v30.4s + + and v2.16b, v2.16b, v27.16b + mov x16, v2.d[0] // Move the R key to GPRs + mov x17, v2.d[1] + mov v27.16b, v7.16b // Store the S key + + bl .Lpoly_hash_ad_internal + b .Lseal_tail +.cfi_endproc +.size chacha20_poly1305_seal,.-chacha20_poly1305_seal + +///////////////////////////////// +// +// void chacha20_poly1305_open(uint8_t *pt, uint8_t *ct, size_t len_in, uint8_t *ad, size_t len_ad, union open_data *aead_data); +// +.globl chacha20_poly1305_open +.hidden chacha20_poly1305_open +.type chacha20_poly1305_open,%function +.align 6 +chacha20_poly1305_open: + AARCH64_SIGN_LINK_REGISTER +.cfi_startproc + stp x29, x30, [sp, #-80]! +.cfi_def_cfa_offset 80 +.cfi_offset w30, -72 +.cfi_offset w29, -80 + mov x29, sp + // We probably could do .cfi_def_cfa w29, 80 at this point, but since + // we don't actually use the frame pointer like that, it's probably not + // worth bothering. + stp d8, d9, [sp, #16] + stp d10, d11, [sp, #32] + stp d12, d13, [sp, #48] + stp d14, d15, [sp, #64] +.cfi_offset b15, -8 +.cfi_offset b14, -16 +.cfi_offset b13, -24 +.cfi_offset b12, -32 +.cfi_offset b11, -40 +.cfi_offset b10, -48 +.cfi_offset b9, -56 +.cfi_offset b8, -64 + + adrp x11, .Lchacha20_consts + add x11, x11, :lo12:.Lchacha20_consts + + ld1 {v24.16b - v27.16b}, [x11] // .Load the CONSTS, INC, ROL8 and CLAMP values + ld1 {v28.16b - v30.16b}, [x5] + + mov x15, #1 // Prepare the Poly1305 state + mov x8, #0 + mov x9, #0 + mov x10, #0 + + mov v31.d[0], x4 // Store the input and aad lengths + mov v31.d[1], x2 + + cmp x2, #128 + b.le .Lopen_128 // Optimization for smaller buffers + + // Initially we prepare a single ChaCha20 block for the Poly1305 R and S keys + mov v0.16b, v24.16b + mov v5.16b, v28.16b + mov v10.16b, v29.16b + mov v15.16b, v30.16b + + mov x6, #10 + +.align 5 +.Lopen_init_rounds: + add v0.4s, v0.4s, v5.4s + eor v15.16b, v15.16b, v0.16b + rev32 v15.8h, v15.8h + + add v10.4s, v10.4s, v15.4s + eor v5.16b, v5.16b, v10.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + add v0.4s, v0.4s, v20.4s + eor v15.16b, v15.16b, v0.16b + tbl v15.16b, {v15.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + eor v20.16b, v20.16b, v10.16b + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + ext v5.16b, v5.16b, v5.16b, #4 + ext v10.16b, v10.16b, v10.16b, #8 + ext v15.16b, v15.16b, v15.16b, #12 + add v0.4s, v0.4s, v5.4s + eor v15.16b, v15.16b, v0.16b + rev32 v15.8h, v15.8h + + add v10.4s, v10.4s, v15.4s + eor v5.16b, v5.16b, v10.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + add v0.4s, v0.4s, v20.4s + eor v15.16b, v15.16b, v0.16b + tbl v15.16b, {v15.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + eor v20.16b, v20.16b, v10.16b + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + ext v5.16b, v5.16b, v5.16b, #12 + ext v10.16b, v10.16b, v10.16b, #8 + ext v15.16b, v15.16b, v15.16b, #4 + subs x6, x6, #1 + b.hi .Lopen_init_rounds + + add v0.4s, v0.4s, v24.4s + add v5.4s, v5.4s, v28.4s + + and v0.16b, v0.16b, v27.16b + mov x16, v0.d[0] // Move the R key to GPRs + mov x17, v0.d[1] + mov v27.16b, v5.16b // Store the S key + + bl .Lpoly_hash_ad_internal + +.Lopen_ad_done: + mov x3, x1 + +// Each iteration of the loop hash 320 bytes, and prepare stream for 320 bytes +.Lopen_main_loop: + + cmp x2, #192 + b.lt .Lopen_tail + + adrp x11, .Lchacha20_consts + add x11, x11, :lo12:.Lchacha20_consts + + ld4r {v0.4s,v1.4s,v2.4s,v3.4s}, [x11] + mov v4.16b, v24.16b + + ld4r {v5.4s,v6.4s,v7.4s,v8.4s}, [x5], #16 + mov v9.16b, v28.16b + + ld4r {v10.4s,v11.4s,v12.4s,v13.4s}, [x5], #16 + mov v14.16b, v29.16b + + ld4r {v15.4s,v16.4s,v17.4s,v18.4s}, [x5] + sub x5, x5, #32 + add v15.4s, v15.4s, v25.4s + mov v19.16b, v30.16b + + eor v20.16b, v20.16b, v20.16b //zero + not v21.16b, v20.16b // -1 + sub v21.4s, v25.4s, v21.4s // Add +1 + ext v20.16b, v21.16b, v20.16b, #12 // Get the last element (counter) + add v19.4s, v19.4s, v20.4s + + lsr x4, x2, #4 // How many whole blocks we have to hash, will always be at least 12 + sub x4, x4, #10 + + mov x7, #10 + subs x6, x7, x4 + subs x6, x7, x4 // itr1 can be negative if we have more than 320 bytes to hash + csel x7, x7, x4, le // if itr1 is zero or less, itr2 should be 10 to indicate all 10 rounds are full + + cbz x7, .Lopen_main_loop_rounds_short + +.align 5 +.Lopen_main_loop_rounds: + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most +.Lopen_main_loop_rounds_short: + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + add v3.4s, v3.4s, v8.4s + add v4.4s, v4.4s, v9.4s + + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + eor v18.16b, v18.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + rev32 v18.8h, v18.8h + rev32 v19.8h, v19.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + add v13.4s, v13.4s, v18.4s + add v14.4s, v14.4s, v19.4s + + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + eor v8.16b, v8.16b, v13.16b + eor v9.16b, v9.16b, v14.16b + + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + ushr v7.4s, v8.4s, #20 + sli v7.4s, v8.4s, #12 + ushr v8.4s, v9.4s, #20 + sli v8.4s, v9.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + add v3.4s, v3.4s, v7.4s + add v4.4s, v4.4s, v8.4s + + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + eor v18.16b, v18.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + tbl v18.16b, {v18.16b}, v26.16b + tbl v19.16b, {v19.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + add v13.4s, v13.4s, v18.4s + add v14.4s, v14.4s, v19.4s + + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + eor v7.16b, v7.16b, v13.16b + eor v8.16b, v8.16b, v14.16b + + ushr v9.4s, v8.4s, #25 + sli v9.4s, v8.4s, #7 + ushr v8.4s, v7.4s, #25 + sli v8.4s, v7.4s, #7 + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v9.16b, v9.16b, v9.16b, #4 + ext v14.16b, v14.16b, v14.16b, #8 + ext v19.16b, v19.16b, v19.16b, #12 + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + add v0.4s, v0.4s, v6.4s + add v1.4s, v1.4s, v7.4s + add v2.4s, v2.4s, v8.4s + add v3.4s, v3.4s, v5.4s + add v4.4s, v4.4s, v9.4s + + eor v18.16b, v18.16b, v0.16b + eor v15.16b, v15.16b, v1.16b + eor v16.16b, v16.16b, v2.16b + eor v17.16b, v17.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + rev32 v18.8h, v18.8h + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + rev32 v19.8h, v19.8h + + add v12.4s, v12.4s, v18.4s + add v13.4s, v13.4s, v15.4s + add v10.4s, v10.4s, v16.4s + add v11.4s, v11.4s, v17.4s + add v14.4s, v14.4s, v19.4s + + eor v6.16b, v6.16b, v12.16b + eor v7.16b, v7.16b, v13.16b + eor v8.16b, v8.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v9.16b, v9.16b, v14.16b + + ushr v20.4s, v6.4s, #20 + sli v20.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + ushr v7.4s, v8.4s, #20 + sli v7.4s, v8.4s, #12 + ushr v8.4s, v5.4s, #20 + sli v8.4s, v5.4s, #12 + ushr v5.4s, v9.4s, #20 + sli v5.4s, v9.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + add v3.4s, v3.4s, v8.4s + add v4.4s, v4.4s, v5.4s + + eor v18.16b, v18.16b, v0.16b + eor v15.16b, v15.16b, v1.16b + eor v16.16b, v16.16b, v2.16b + eor v17.16b, v17.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + tbl v18.16b, {v18.16b}, v26.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + tbl v19.16b, {v19.16b}, v26.16b + + add v12.4s, v12.4s, v18.4s + add v13.4s, v13.4s, v15.4s + add v10.4s, v10.4s, v16.4s + add v11.4s, v11.4s, v17.4s + add v14.4s, v14.4s, v19.4s + + eor v20.16b, v20.16b, v12.16b + eor v6.16b, v6.16b, v13.16b + eor v7.16b, v7.16b, v10.16b + eor v8.16b, v8.16b, v11.16b + eor v5.16b, v5.16b, v14.16b + + ushr v9.4s, v5.4s, #25 + sli v9.4s, v5.4s, #7 + ushr v5.4s, v8.4s, #25 + sli v5.4s, v8.4s, #7 + ushr v8.4s, v7.4s, #25 + sli v8.4s, v7.4s, #7 + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v20.4s, #25 + sli v6.4s, v20.4s, #7 + + ext v9.16b, v9.16b, v9.16b, #12 + ext v14.16b, v14.16b, v14.16b, #8 + ext v19.16b, v19.16b, v19.16b, #4 + subs x7, x7, #1 + b.gt .Lopen_main_loop_rounds + subs x6, x6, #1 + b.ge .Lopen_main_loop_rounds_short + + eor v20.16b, v20.16b, v20.16b //zero + not v21.16b, v20.16b // -1 + sub v21.4s, v25.4s, v21.4s // Add +1 + ext v20.16b, v21.16b, v20.16b, #12 // Get the last element (counter) + add v19.4s, v19.4s, v20.4s + + add v15.4s, v15.4s, v25.4s + mov x11, #5 + dup v20.4s, w11 + add v25.4s, v25.4s, v20.4s + + zip1 v20.4s, v0.4s, v1.4s + zip2 v21.4s, v0.4s, v1.4s + zip1 v22.4s, v2.4s, v3.4s + zip2 v23.4s, v2.4s, v3.4s + + zip1 v0.2d, v20.2d, v22.2d + zip2 v1.2d, v20.2d, v22.2d + zip1 v2.2d, v21.2d, v23.2d + zip2 v3.2d, v21.2d, v23.2d + + zip1 v20.4s, v5.4s, v6.4s + zip2 v21.4s, v5.4s, v6.4s + zip1 v22.4s, v7.4s, v8.4s + zip2 v23.4s, v7.4s, v8.4s + + zip1 v5.2d, v20.2d, v22.2d + zip2 v6.2d, v20.2d, v22.2d + zip1 v7.2d, v21.2d, v23.2d + zip2 v8.2d, v21.2d, v23.2d + + zip1 v20.4s, v10.4s, v11.4s + zip2 v21.4s, v10.4s, v11.4s + zip1 v22.4s, v12.4s, v13.4s + zip2 v23.4s, v12.4s, v13.4s + + zip1 v10.2d, v20.2d, v22.2d + zip2 v11.2d, v20.2d, v22.2d + zip1 v12.2d, v21.2d, v23.2d + zip2 v13.2d, v21.2d, v23.2d + + zip1 v20.4s, v15.4s, v16.4s + zip2 v21.4s, v15.4s, v16.4s + zip1 v22.4s, v17.4s, v18.4s + zip2 v23.4s, v17.4s, v18.4s + + zip1 v15.2d, v20.2d, v22.2d + zip2 v16.2d, v20.2d, v22.2d + zip1 v17.2d, v21.2d, v23.2d + zip2 v18.2d, v21.2d, v23.2d + + add v0.4s, v0.4s, v24.4s + add v5.4s, v5.4s, v28.4s + add v10.4s, v10.4s, v29.4s + add v15.4s, v15.4s, v30.4s + + add v1.4s, v1.4s, v24.4s + add v6.4s, v6.4s, v28.4s + add v11.4s, v11.4s, v29.4s + add v16.4s, v16.4s, v30.4s + + add v2.4s, v2.4s, v24.4s + add v7.4s, v7.4s, v28.4s + add v12.4s, v12.4s, v29.4s + add v17.4s, v17.4s, v30.4s + + add v3.4s, v3.4s, v24.4s + add v8.4s, v8.4s, v28.4s + add v13.4s, v13.4s, v29.4s + add v18.4s, v18.4s, v30.4s + + add v4.4s, v4.4s, v24.4s + add v9.4s, v9.4s, v28.4s + add v14.4s, v14.4s, v29.4s + add v19.4s, v19.4s, v30.4s + + // We can always safely store 192 bytes + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v0.16b + eor v21.16b, v21.16b, v5.16b + eor v22.16b, v22.16b, v10.16b + eor v23.16b, v23.16b, v15.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v1.16b + eor v21.16b, v21.16b, v6.16b + eor v22.16b, v22.16b, v11.16b + eor v23.16b, v23.16b, v16.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v2.16b + eor v21.16b, v21.16b, v7.16b + eor v22.16b, v22.16b, v12.16b + eor v23.16b, v23.16b, v17.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #192 + + mov v0.16b, v3.16b + mov v5.16b, v8.16b + mov v10.16b, v13.16b + mov v15.16b, v18.16b + + cmp x2, #64 + b.lt .Lopen_tail_64_store + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v3.16b + eor v21.16b, v21.16b, v8.16b + eor v22.16b, v22.16b, v13.16b + eor v23.16b, v23.16b, v18.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #64 + + mov v0.16b, v4.16b + mov v5.16b, v9.16b + mov v10.16b, v14.16b + mov v15.16b, v19.16b + + cmp x2, #64 + b.lt .Lopen_tail_64_store + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v4.16b + eor v21.16b, v21.16b, v9.16b + eor v22.16b, v22.16b, v14.16b + eor v23.16b, v23.16b, v19.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #64 + b .Lopen_main_loop + +.Lopen_tail: + + cbz x2, .Lopen_finalize + + lsr x4, x2, #4 // How many whole blocks we have to hash + + cmp x2, #64 + b.le .Lopen_tail_64 + cmp x2, #128 + b.le .Lopen_tail_128 + +.Lopen_tail_192: + // We need three more blocks + mov v0.16b, v24.16b + mov v1.16b, v24.16b + mov v2.16b, v24.16b + mov v5.16b, v28.16b + mov v6.16b, v28.16b + mov v7.16b, v28.16b + mov v10.16b, v29.16b + mov v11.16b, v29.16b + mov v12.16b, v29.16b + mov v15.16b, v30.16b + mov v16.16b, v30.16b + mov v17.16b, v30.16b + eor v23.16b, v23.16b, v23.16b + eor v21.16b, v21.16b, v21.16b + ins v23.s[0], v25.s[0] + ins v21.d[0], x15 + + add v22.4s, v23.4s, v21.4s + add v21.4s, v22.4s, v21.4s + + add v15.4s, v15.4s, v21.4s + add v16.4s, v16.4s, v23.4s + add v17.4s, v17.4s, v22.4s + + mov x7, #10 + subs x6, x7, x4 // itr1 can be negative if we have more than 160 bytes to hash + csel x7, x7, x4, le // if itr1 is zero or less, itr2 should be 10 to indicate all 10 rounds are hashing + sub x4, x4, x7 + + cbz x7, .Lopen_tail_192_rounds_no_hash + +.Lopen_tail_192_rounds: + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most +.Lopen_tail_192_rounds_no_hash: + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v5.16b, v5.16b, v5.16b, #4 + ext v6.16b, v6.16b, v6.16b, #4 + ext v7.16b, v7.16b, v7.16b, #4 + + ext v10.16b, v10.16b, v10.16b, #8 + ext v11.16b, v11.16b, v11.16b, #8 + ext v12.16b, v12.16b, v12.16b, #8 + + ext v15.16b, v15.16b, v15.16b, #12 + ext v16.16b, v16.16b, v16.16b, #12 + ext v17.16b, v17.16b, v17.16b, #12 + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v5.16b, v5.16b, v5.16b, #12 + ext v6.16b, v6.16b, v6.16b, #12 + ext v7.16b, v7.16b, v7.16b, #12 + + ext v10.16b, v10.16b, v10.16b, #8 + ext v11.16b, v11.16b, v11.16b, #8 + ext v12.16b, v12.16b, v12.16b, #8 + + ext v15.16b, v15.16b, v15.16b, #4 + ext v16.16b, v16.16b, v16.16b, #4 + ext v17.16b, v17.16b, v17.16b, #4 + subs x7, x7, #1 + b.gt .Lopen_tail_192_rounds + subs x6, x6, #1 + b.ge .Lopen_tail_192_rounds_no_hash + + // We hashed 160 bytes at most, may still have 32 bytes left +.Lopen_tail_192_hash: + cbz x4, .Lopen_tail_192_hash_done + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + sub x4, x4, #1 + b .Lopen_tail_192_hash + +.Lopen_tail_192_hash_done: + + add v0.4s, v0.4s, v24.4s + add v1.4s, v1.4s, v24.4s + add v2.4s, v2.4s, v24.4s + add v5.4s, v5.4s, v28.4s + add v6.4s, v6.4s, v28.4s + add v7.4s, v7.4s, v28.4s + add v10.4s, v10.4s, v29.4s + add v11.4s, v11.4s, v29.4s + add v12.4s, v12.4s, v29.4s + add v15.4s, v15.4s, v30.4s + add v16.4s, v16.4s, v30.4s + add v17.4s, v17.4s, v30.4s + + add v15.4s, v15.4s, v21.4s + add v16.4s, v16.4s, v23.4s + add v17.4s, v17.4s, v22.4s + + ld1 {v20.16b - v23.16b}, [x1], #64 + + eor v20.16b, v20.16b, v1.16b + eor v21.16b, v21.16b, v6.16b + eor v22.16b, v22.16b, v11.16b + eor v23.16b, v23.16b, v16.16b + + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + + eor v20.16b, v20.16b, v2.16b + eor v21.16b, v21.16b, v7.16b + eor v22.16b, v22.16b, v12.16b + eor v23.16b, v23.16b, v17.16b + + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #128 + b .Lopen_tail_64_store + +.Lopen_tail_128: + // We need two more blocks + mov v0.16b, v24.16b + mov v1.16b, v24.16b + mov v5.16b, v28.16b + mov v6.16b, v28.16b + mov v10.16b, v29.16b + mov v11.16b, v29.16b + mov v15.16b, v30.16b + mov v16.16b, v30.16b + eor v23.16b, v23.16b, v23.16b + eor v22.16b, v22.16b, v22.16b + ins v23.s[0], v25.s[0] + ins v22.d[0], x15 + add v22.4s, v22.4s, v23.4s + + add v15.4s, v15.4s, v22.4s + add v16.4s, v16.4s, v23.4s + + mov x6, #10 + sub x6, x6, x4 + +.Lopen_tail_128_rounds: + add v0.4s, v0.4s, v5.4s + eor v15.16b, v15.16b, v0.16b + rev32 v15.8h, v15.8h + + add v10.4s, v10.4s, v15.4s + eor v5.16b, v5.16b, v10.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + add v0.4s, v0.4s, v20.4s + eor v15.16b, v15.16b, v0.16b + tbl v15.16b, {v15.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + eor v20.16b, v20.16b, v10.16b + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + ext v5.16b, v5.16b, v5.16b, #4 + ext v10.16b, v10.16b, v10.16b, #8 + ext v15.16b, v15.16b, v15.16b, #12 + add v1.4s, v1.4s, v6.4s + eor v16.16b, v16.16b, v1.16b + rev32 v16.8h, v16.8h + + add v11.4s, v11.4s, v16.4s + eor v6.16b, v6.16b, v11.16b + ushr v20.4s, v6.4s, #20 + sli v20.4s, v6.4s, #12 + add v1.4s, v1.4s, v20.4s + eor v16.16b, v16.16b, v1.16b + tbl v16.16b, {v16.16b}, v26.16b + + add v11.4s, v11.4s, v16.4s + eor v20.16b, v20.16b, v11.16b + ushr v6.4s, v20.4s, #25 + sli v6.4s, v20.4s, #7 + ext v6.16b, v6.16b, v6.16b, #4 + ext v11.16b, v11.16b, v11.16b, #8 + ext v16.16b, v16.16b, v16.16b, #12 + add v0.4s, v0.4s, v5.4s + eor v15.16b, v15.16b, v0.16b + rev32 v15.8h, v15.8h + + add v10.4s, v10.4s, v15.4s + eor v5.16b, v5.16b, v10.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + add v0.4s, v0.4s, v20.4s + eor v15.16b, v15.16b, v0.16b + tbl v15.16b, {v15.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + eor v20.16b, v20.16b, v10.16b + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + ext v5.16b, v5.16b, v5.16b, #12 + ext v10.16b, v10.16b, v10.16b, #8 + ext v15.16b, v15.16b, v15.16b, #4 + add v1.4s, v1.4s, v6.4s + eor v16.16b, v16.16b, v1.16b + rev32 v16.8h, v16.8h + + add v11.4s, v11.4s, v16.4s + eor v6.16b, v6.16b, v11.16b + ushr v20.4s, v6.4s, #20 + sli v20.4s, v6.4s, #12 + add v1.4s, v1.4s, v20.4s + eor v16.16b, v16.16b, v1.16b + tbl v16.16b, {v16.16b}, v26.16b + + add v11.4s, v11.4s, v16.4s + eor v20.16b, v20.16b, v11.16b + ushr v6.4s, v20.4s, #25 + sli v6.4s, v20.4s, #7 + ext v6.16b, v6.16b, v6.16b, #12 + ext v11.16b, v11.16b, v11.16b, #8 + ext v16.16b, v16.16b, v16.16b, #4 + subs x6, x6, #1 + b.gt .Lopen_tail_128_rounds + cbz x4, .Lopen_tail_128_rounds_done + subs x4, x4, #1 + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + b .Lopen_tail_128_rounds + +.Lopen_tail_128_rounds_done: + add v0.4s, v0.4s, v24.4s + add v1.4s, v1.4s, v24.4s + add v5.4s, v5.4s, v28.4s + add v6.4s, v6.4s, v28.4s + add v10.4s, v10.4s, v29.4s + add v11.4s, v11.4s, v29.4s + add v15.4s, v15.4s, v30.4s + add v16.4s, v16.4s, v30.4s + add v15.4s, v15.4s, v22.4s + add v16.4s, v16.4s, v23.4s + + ld1 {v20.16b - v23.16b}, [x1], #64 + + eor v20.16b, v20.16b, v1.16b + eor v21.16b, v21.16b, v6.16b + eor v22.16b, v22.16b, v11.16b + eor v23.16b, v23.16b, v16.16b + + st1 {v20.16b - v23.16b}, [x0], #64 + sub x2, x2, #64 + + b .Lopen_tail_64_store + +.Lopen_tail_64: + // We just need a single block + mov v0.16b, v24.16b + mov v5.16b, v28.16b + mov v10.16b, v29.16b + mov v15.16b, v30.16b + eor v23.16b, v23.16b, v23.16b + ins v23.s[0], v25.s[0] + add v15.4s, v15.4s, v23.4s + + mov x6, #10 + sub x6, x6, x4 + +.Lopen_tail_64_rounds: + add v0.4s, v0.4s, v5.4s + eor v15.16b, v15.16b, v0.16b + rev32 v15.8h, v15.8h + + add v10.4s, v10.4s, v15.4s + eor v5.16b, v5.16b, v10.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + add v0.4s, v0.4s, v20.4s + eor v15.16b, v15.16b, v0.16b + tbl v15.16b, {v15.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + eor v20.16b, v20.16b, v10.16b + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + ext v5.16b, v5.16b, v5.16b, #4 + ext v10.16b, v10.16b, v10.16b, #8 + ext v15.16b, v15.16b, v15.16b, #12 + add v0.4s, v0.4s, v5.4s + eor v15.16b, v15.16b, v0.16b + rev32 v15.8h, v15.8h + + add v10.4s, v10.4s, v15.4s + eor v5.16b, v5.16b, v10.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + add v0.4s, v0.4s, v20.4s + eor v15.16b, v15.16b, v0.16b + tbl v15.16b, {v15.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + eor v20.16b, v20.16b, v10.16b + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + ext v5.16b, v5.16b, v5.16b, #12 + ext v10.16b, v10.16b, v10.16b, #8 + ext v15.16b, v15.16b, v15.16b, #4 + subs x6, x6, #1 + b.gt .Lopen_tail_64_rounds + cbz x4, .Lopen_tail_64_rounds_done + subs x4, x4, #1 + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + b .Lopen_tail_64_rounds + +.Lopen_tail_64_rounds_done: + add v0.4s, v0.4s, v24.4s + add v5.4s, v5.4s, v28.4s + add v10.4s, v10.4s, v29.4s + add v15.4s, v15.4s, v30.4s + add v15.4s, v15.4s, v23.4s + +.Lopen_tail_64_store: + cmp x2, #16 + b.lt .Lopen_tail_16 + + ld1 {v20.16b}, [x1], #16 + eor v20.16b, v20.16b, v0.16b + st1 {v20.16b}, [x0], #16 + mov v0.16b, v5.16b + mov v5.16b, v10.16b + mov v10.16b, v15.16b + sub x2, x2, #16 + b .Lopen_tail_64_store + +.Lopen_tail_16: + // Here we handle the last [0,16) bytes that require a padded block + cbz x2, .Lopen_finalize + + eor v20.16b, v20.16b, v20.16b // Use T0 to load the ciphertext + eor v21.16b, v21.16b, v21.16b // Use T1 to generate an AND mask + not v22.16b, v20.16b + + add x7, x1, x2 + mov x6, x2 + +.Lopen_tail_16_compose: + ext v20.16b, v20.16b, v20.16b, #15 + ldrb w11, [x7, #-1]! + mov v20.b[0], w11 + ext v21.16b, v22.16b, v21.16b, #15 + subs x2, x2, #1 + b.gt .Lopen_tail_16_compose + + and v20.16b, v20.16b, v21.16b + // Hash in the final padded block + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + eor v20.16b, v20.16b, v0.16b + +.Lopen_tail_16_store: + umov w11, v20.b[0] + strb w11, [x0], #1 + ext v20.16b, v20.16b, v20.16b, #1 + subs x6, x6, #1 + b.gt .Lopen_tail_16_store + +.Lopen_finalize: + mov x11, v31.d[0] + mov x12, v31.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + // Final reduction step + sub x12, xzr, x15 + orr x13, xzr, #3 + subs x11, x8, #-5 + sbcs x12, x9, x12 + sbcs x13, x10, x13 + csel x8, x11, x8, cs + csel x9, x12, x9, cs + csel x10, x13, x10, cs + mov x11, v27.d[0] + mov x12, v27.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + + stp x8, x9, [x5] + + ldp d8, d9, [sp, #16] + ldp d10, d11, [sp, #32] + ldp d12, d13, [sp, #48] + ldp d14, d15, [sp, #64] +.cfi_restore b15 +.cfi_restore b14 +.cfi_restore b13 +.cfi_restore b12 +.cfi_restore b11 +.cfi_restore b10 +.cfi_restore b9 +.cfi_restore b8 + ldp x29, x30, [sp], 80 +.cfi_restore w29 +.cfi_restore w30 +.cfi_def_cfa_offset 0 + AARCH64_VALIDATE_LINK_REGISTER + ret + +.Lopen_128: + // On some architectures preparing 5 blocks for small buffers is wasteful + eor v25.16b, v25.16b, v25.16b + mov x11, #1 + mov v25.s[0], w11 + mov v0.16b, v24.16b + mov v1.16b, v24.16b + mov v2.16b, v24.16b + mov v5.16b, v28.16b + mov v6.16b, v28.16b + mov v7.16b, v28.16b + mov v10.16b, v29.16b + mov v11.16b, v29.16b + mov v12.16b, v29.16b + mov v17.16b, v30.16b + add v15.4s, v17.4s, v25.4s + add v16.4s, v15.4s, v25.4s + + mov x6, #10 + +.Lopen_128_rounds: + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v5.16b, v5.16b, v5.16b, #4 + ext v6.16b, v6.16b, v6.16b, #4 + ext v7.16b, v7.16b, v7.16b, #4 + + ext v10.16b, v10.16b, v10.16b, #8 + ext v11.16b, v11.16b, v11.16b, #8 + ext v12.16b, v12.16b, v12.16b, #8 + + ext v15.16b, v15.16b, v15.16b, #12 + ext v16.16b, v16.16b, v16.16b, #12 + ext v17.16b, v17.16b, v17.16b, #12 + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v5.16b, v5.16b, v5.16b, #12 + ext v6.16b, v6.16b, v6.16b, #12 + ext v7.16b, v7.16b, v7.16b, #12 + + ext v10.16b, v10.16b, v10.16b, #8 + ext v11.16b, v11.16b, v11.16b, #8 + ext v12.16b, v12.16b, v12.16b, #8 + + ext v15.16b, v15.16b, v15.16b, #4 + ext v16.16b, v16.16b, v16.16b, #4 + ext v17.16b, v17.16b, v17.16b, #4 + subs x6, x6, #1 + b.hi .Lopen_128_rounds + + add v0.4s, v0.4s, v24.4s + add v1.4s, v1.4s, v24.4s + add v2.4s, v2.4s, v24.4s + + add v5.4s, v5.4s, v28.4s + add v6.4s, v6.4s, v28.4s + add v7.4s, v7.4s, v28.4s + + add v10.4s, v10.4s, v29.4s + add v11.4s, v11.4s, v29.4s + + add v30.4s, v30.4s, v25.4s + add v15.4s, v15.4s, v30.4s + add v30.4s, v30.4s, v25.4s + add v16.4s, v16.4s, v30.4s + + and v2.16b, v2.16b, v27.16b + mov x16, v2.d[0] // Move the R key to GPRs + mov x17, v2.d[1] + mov v27.16b, v7.16b // Store the S key + + bl .Lpoly_hash_ad_internal + +.Lopen_128_store: + cmp x2, #64 + b.lt .Lopen_128_store_64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + mov x11, v21.d[0] + mov x12, v21.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + mov x11, v22.d[0] + mov x12, v22.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + mov x11, v23.d[0] + mov x12, v23.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + + eor v20.16b, v20.16b, v0.16b + eor v21.16b, v21.16b, v5.16b + eor v22.16b, v22.16b, v10.16b + eor v23.16b, v23.16b, v15.16b + + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #64 + + mov v0.16b, v1.16b + mov v5.16b, v6.16b + mov v10.16b, v11.16b + mov v15.16b, v16.16b + +.Lopen_128_store_64: + + lsr x4, x2, #4 + mov x3, x1 + +.Lopen_128_hash_64: + cbz x4, .Lopen_tail_64_store + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + sub x4, x4, #1 + b .Lopen_128_hash_64 +.cfi_endproc +.size chacha20_poly1305_open,.-chacha20_poly1305_open +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_armv8-win64.S temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_armv8-win64.S --- temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_armv8-win64.S 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_armv8-win64.S 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,3015 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. + +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(_WIN32) +#include +.section .rodata + +.align 7 +Lchacha20_consts: +.byte 'e','x','p','a','n','d',' ','3','2','-','b','y','t','e',' ','k' +Linc: +.long 1,2,3,4 +Lrol8: +.byte 3,0,1,2, 7,4,5,6, 11,8,9,10, 15,12,13,14 +Lclamp: +.quad 0x0FFFFFFC0FFFFFFF, 0x0FFFFFFC0FFFFFFC + +.text + +.def Lpoly_hash_ad_internal + .type 32 +.endef +.align 6 +Lpoly_hash_ad_internal: +.cfi_startproc + cbnz x4, Lpoly_hash_intro + ret + +Lpoly_hash_intro: + cmp x4, #16 + b.lt Lpoly_hash_ad_tail + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + sub x4, x4, #16 + b Lpoly_hash_ad_internal + +Lpoly_hash_ad_tail: + cbz x4, Lpoly_hash_ad_ret + + eor v20.16b, v20.16b, v20.16b // Use T0 to load the AAD + sub x4, x4, #1 + +Lpoly_hash_tail_16_compose: + ext v20.16b, v20.16b, v20.16b, #15 + ldrb w11, [x3, x4] + mov v20.b[0], w11 + subs x4, x4, #1 + b.ge Lpoly_hash_tail_16_compose + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + +Lpoly_hash_ad_ret: + ret +.cfi_endproc + + +///////////////////////////////// +// +// void chacha20_poly1305_seal(uint8_t *pt, uint8_t *ct, size_t len_in, uint8_t *ad, size_t len_ad, union open_data *seal_data); +// +.globl chacha20_poly1305_seal + +.def chacha20_poly1305_seal + .type 32 +.endef +.align 6 +chacha20_poly1305_seal: + AARCH64_SIGN_LINK_REGISTER +.cfi_startproc + stp x29, x30, [sp, #-80]! +.cfi_def_cfa_offset 80 +.cfi_offset w30, -72 +.cfi_offset w29, -80 + mov x29, sp + // We probably could do .cfi_def_cfa w29, 80 at this point, but since + // we don't actually use the frame pointer like that, it's probably not + // worth bothering. + stp d8, d9, [sp, #16] + stp d10, d11, [sp, #32] + stp d12, d13, [sp, #48] + stp d14, d15, [sp, #64] +.cfi_offset b15, -8 +.cfi_offset b14, -16 +.cfi_offset b13, -24 +.cfi_offset b12, -32 +.cfi_offset b11, -40 +.cfi_offset b10, -48 +.cfi_offset b9, -56 +.cfi_offset b8, -64 + + adrp x11, Lchacha20_consts + add x11, x11, :lo12:Lchacha20_consts + + ld1 {v24.16b - v27.16b}, [x11] // Load the CONSTS, INC, ROL8 and CLAMP values + ld1 {v28.16b - v30.16b}, [x5] + + mov x15, #1 // Prepare the Poly1305 state + mov x8, #0 + mov x9, #0 + mov x10, #0 + + ldr x12, [x5, #56] // The total cipher text length includes extra_in_len + add x12, x12, x2 + mov v31.d[0], x4 // Store the input and aad lengths + mov v31.d[1], x12 + + cmp x2, #128 + b.le Lseal_128 // Optimization for smaller buffers + + // Initially we prepare 5 ChaCha20 blocks. Four to encrypt up to 4 blocks (256 bytes) of plaintext, + // and one for the Poly1305 R and S keys. The first four blocks (A0-A3..D0-D3) are computed vertically, + // the fifth block (A4-D4) horizontally. + ld4r {v0.4s,v1.4s,v2.4s,v3.4s}, [x11] + mov v4.16b, v24.16b + + ld4r {v5.4s,v6.4s,v7.4s,v8.4s}, [x5], #16 + mov v9.16b, v28.16b + + ld4r {v10.4s,v11.4s,v12.4s,v13.4s}, [x5], #16 + mov v14.16b, v29.16b + + ld4r {v15.4s,v16.4s,v17.4s,v18.4s}, [x5] + add v15.4s, v15.4s, v25.4s + mov v19.16b, v30.16b + + sub x5, x5, #32 + + mov x6, #10 + +.align 5 +Lseal_init_rounds: + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + add v3.4s, v3.4s, v8.4s + add v4.4s, v4.4s, v9.4s + + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + eor v18.16b, v18.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + rev32 v18.8h, v18.8h + rev32 v19.8h, v19.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + add v13.4s, v13.4s, v18.4s + add v14.4s, v14.4s, v19.4s + + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + eor v8.16b, v8.16b, v13.16b + eor v9.16b, v9.16b, v14.16b + + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + ushr v7.4s, v8.4s, #20 + sli v7.4s, v8.4s, #12 + ushr v8.4s, v9.4s, #20 + sli v8.4s, v9.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + add v3.4s, v3.4s, v7.4s + add v4.4s, v4.4s, v8.4s + + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + eor v18.16b, v18.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + tbl v18.16b, {v18.16b}, v26.16b + tbl v19.16b, {v19.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + add v13.4s, v13.4s, v18.4s + add v14.4s, v14.4s, v19.4s + + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + eor v7.16b, v7.16b, v13.16b + eor v8.16b, v8.16b, v14.16b + + ushr v9.4s, v8.4s, #25 + sli v9.4s, v8.4s, #7 + ushr v8.4s, v7.4s, #25 + sli v8.4s, v7.4s, #7 + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v9.16b, v9.16b, v9.16b, #4 + ext v14.16b, v14.16b, v14.16b, #8 + ext v19.16b, v19.16b, v19.16b, #12 + add v0.4s, v0.4s, v6.4s + add v1.4s, v1.4s, v7.4s + add v2.4s, v2.4s, v8.4s + add v3.4s, v3.4s, v5.4s + add v4.4s, v4.4s, v9.4s + + eor v18.16b, v18.16b, v0.16b + eor v15.16b, v15.16b, v1.16b + eor v16.16b, v16.16b, v2.16b + eor v17.16b, v17.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + rev32 v18.8h, v18.8h + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + rev32 v19.8h, v19.8h + + add v12.4s, v12.4s, v18.4s + add v13.4s, v13.4s, v15.4s + add v10.4s, v10.4s, v16.4s + add v11.4s, v11.4s, v17.4s + add v14.4s, v14.4s, v19.4s + + eor v6.16b, v6.16b, v12.16b + eor v7.16b, v7.16b, v13.16b + eor v8.16b, v8.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v9.16b, v9.16b, v14.16b + + ushr v20.4s, v6.4s, #20 + sli v20.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + ushr v7.4s, v8.4s, #20 + sli v7.4s, v8.4s, #12 + ushr v8.4s, v5.4s, #20 + sli v8.4s, v5.4s, #12 + ushr v5.4s, v9.4s, #20 + sli v5.4s, v9.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + add v3.4s, v3.4s, v8.4s + add v4.4s, v4.4s, v5.4s + + eor v18.16b, v18.16b, v0.16b + eor v15.16b, v15.16b, v1.16b + eor v16.16b, v16.16b, v2.16b + eor v17.16b, v17.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + tbl v18.16b, {v18.16b}, v26.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + tbl v19.16b, {v19.16b}, v26.16b + + add v12.4s, v12.4s, v18.4s + add v13.4s, v13.4s, v15.4s + add v10.4s, v10.4s, v16.4s + add v11.4s, v11.4s, v17.4s + add v14.4s, v14.4s, v19.4s + + eor v20.16b, v20.16b, v12.16b + eor v6.16b, v6.16b, v13.16b + eor v7.16b, v7.16b, v10.16b + eor v8.16b, v8.16b, v11.16b + eor v5.16b, v5.16b, v14.16b + + ushr v9.4s, v5.4s, #25 + sli v9.4s, v5.4s, #7 + ushr v5.4s, v8.4s, #25 + sli v5.4s, v8.4s, #7 + ushr v8.4s, v7.4s, #25 + sli v8.4s, v7.4s, #7 + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v20.4s, #25 + sli v6.4s, v20.4s, #7 + + ext v9.16b, v9.16b, v9.16b, #12 + ext v14.16b, v14.16b, v14.16b, #8 + ext v19.16b, v19.16b, v19.16b, #4 + subs x6, x6, #1 + b.hi Lseal_init_rounds + + add v15.4s, v15.4s, v25.4s + mov x11, #4 + dup v20.4s, w11 + add v25.4s, v25.4s, v20.4s + + zip1 v20.4s, v0.4s, v1.4s + zip2 v21.4s, v0.4s, v1.4s + zip1 v22.4s, v2.4s, v3.4s + zip2 v23.4s, v2.4s, v3.4s + + zip1 v0.2d, v20.2d, v22.2d + zip2 v1.2d, v20.2d, v22.2d + zip1 v2.2d, v21.2d, v23.2d + zip2 v3.2d, v21.2d, v23.2d + + zip1 v20.4s, v5.4s, v6.4s + zip2 v21.4s, v5.4s, v6.4s + zip1 v22.4s, v7.4s, v8.4s + zip2 v23.4s, v7.4s, v8.4s + + zip1 v5.2d, v20.2d, v22.2d + zip2 v6.2d, v20.2d, v22.2d + zip1 v7.2d, v21.2d, v23.2d + zip2 v8.2d, v21.2d, v23.2d + + zip1 v20.4s, v10.4s, v11.4s + zip2 v21.4s, v10.4s, v11.4s + zip1 v22.4s, v12.4s, v13.4s + zip2 v23.4s, v12.4s, v13.4s + + zip1 v10.2d, v20.2d, v22.2d + zip2 v11.2d, v20.2d, v22.2d + zip1 v12.2d, v21.2d, v23.2d + zip2 v13.2d, v21.2d, v23.2d + + zip1 v20.4s, v15.4s, v16.4s + zip2 v21.4s, v15.4s, v16.4s + zip1 v22.4s, v17.4s, v18.4s + zip2 v23.4s, v17.4s, v18.4s + + zip1 v15.2d, v20.2d, v22.2d + zip2 v16.2d, v20.2d, v22.2d + zip1 v17.2d, v21.2d, v23.2d + zip2 v18.2d, v21.2d, v23.2d + + add v4.4s, v4.4s, v24.4s + add v9.4s, v9.4s, v28.4s + and v4.16b, v4.16b, v27.16b + + add v0.4s, v0.4s, v24.4s + add v5.4s, v5.4s, v28.4s + add v10.4s, v10.4s, v29.4s + add v15.4s, v15.4s, v30.4s + + add v1.4s, v1.4s, v24.4s + add v6.4s, v6.4s, v28.4s + add v11.4s, v11.4s, v29.4s + add v16.4s, v16.4s, v30.4s + + add v2.4s, v2.4s, v24.4s + add v7.4s, v7.4s, v28.4s + add v12.4s, v12.4s, v29.4s + add v17.4s, v17.4s, v30.4s + + add v3.4s, v3.4s, v24.4s + add v8.4s, v8.4s, v28.4s + add v13.4s, v13.4s, v29.4s + add v18.4s, v18.4s, v30.4s + + mov x16, v4.d[0] // Move the R key to GPRs + mov x17, v4.d[1] + mov v27.16b, v9.16b // Store the S key + + bl Lpoly_hash_ad_internal + + mov x3, x0 + cmp x2, #256 + b.le Lseal_tail + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v0.16b + eor v21.16b, v21.16b, v5.16b + eor v22.16b, v22.16b, v10.16b + eor v23.16b, v23.16b, v15.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v1.16b + eor v21.16b, v21.16b, v6.16b + eor v22.16b, v22.16b, v11.16b + eor v23.16b, v23.16b, v16.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v2.16b + eor v21.16b, v21.16b, v7.16b + eor v22.16b, v22.16b, v12.16b + eor v23.16b, v23.16b, v17.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v3.16b + eor v21.16b, v21.16b, v8.16b + eor v22.16b, v22.16b, v13.16b + eor v23.16b, v23.16b, v18.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #256 + + mov x6, #4 // In the first run of the loop we need to hash 256 bytes, therefore we hash one block for the first 4 rounds + mov x7, #6 // and two blocks for the remaining 6, for a total of (1 * 4 + 2 * 6) * 16 = 256 + +Lseal_main_loop: + adrp x11, Lchacha20_consts + add x11, x11, :lo12:Lchacha20_consts + + ld4r {v0.4s,v1.4s,v2.4s,v3.4s}, [x11] + mov v4.16b, v24.16b + + ld4r {v5.4s,v6.4s,v7.4s,v8.4s}, [x5], #16 + mov v9.16b, v28.16b + + ld4r {v10.4s,v11.4s,v12.4s,v13.4s}, [x5], #16 + mov v14.16b, v29.16b + + ld4r {v15.4s,v16.4s,v17.4s,v18.4s}, [x5] + add v15.4s, v15.4s, v25.4s + mov v19.16b, v30.16b + + eor v20.16b, v20.16b, v20.16b //zero + not v21.16b, v20.16b // -1 + sub v21.4s, v25.4s, v21.4s // Add +1 + ext v20.16b, v21.16b, v20.16b, #12 // Get the last element (counter) + add v19.4s, v19.4s, v20.4s + + sub x5, x5, #32 +.align 5 +Lseal_main_loop_rounds: + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + add v3.4s, v3.4s, v8.4s + add v4.4s, v4.4s, v9.4s + + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + eor v18.16b, v18.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + rev32 v18.8h, v18.8h + rev32 v19.8h, v19.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + add v13.4s, v13.4s, v18.4s + add v14.4s, v14.4s, v19.4s + + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + eor v8.16b, v8.16b, v13.16b + eor v9.16b, v9.16b, v14.16b + + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + ushr v7.4s, v8.4s, #20 + sli v7.4s, v8.4s, #12 + ushr v8.4s, v9.4s, #20 + sli v8.4s, v9.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + add v3.4s, v3.4s, v7.4s + add v4.4s, v4.4s, v8.4s + + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + eor v18.16b, v18.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + tbl v18.16b, {v18.16b}, v26.16b + tbl v19.16b, {v19.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + add v13.4s, v13.4s, v18.4s + add v14.4s, v14.4s, v19.4s + + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + eor v7.16b, v7.16b, v13.16b + eor v8.16b, v8.16b, v14.16b + + ushr v9.4s, v8.4s, #25 + sli v9.4s, v8.4s, #7 + ushr v8.4s, v7.4s, #25 + sli v8.4s, v7.4s, #7 + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v9.16b, v9.16b, v9.16b, #4 + ext v14.16b, v14.16b, v14.16b, #8 + ext v19.16b, v19.16b, v19.16b, #12 + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + add v0.4s, v0.4s, v6.4s + add v1.4s, v1.4s, v7.4s + add v2.4s, v2.4s, v8.4s + add v3.4s, v3.4s, v5.4s + add v4.4s, v4.4s, v9.4s + + eor v18.16b, v18.16b, v0.16b + eor v15.16b, v15.16b, v1.16b + eor v16.16b, v16.16b, v2.16b + eor v17.16b, v17.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + rev32 v18.8h, v18.8h + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + rev32 v19.8h, v19.8h + + add v12.4s, v12.4s, v18.4s + add v13.4s, v13.4s, v15.4s + add v10.4s, v10.4s, v16.4s + add v11.4s, v11.4s, v17.4s + add v14.4s, v14.4s, v19.4s + + eor v6.16b, v6.16b, v12.16b + eor v7.16b, v7.16b, v13.16b + eor v8.16b, v8.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v9.16b, v9.16b, v14.16b + + ushr v20.4s, v6.4s, #20 + sli v20.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + ushr v7.4s, v8.4s, #20 + sli v7.4s, v8.4s, #12 + ushr v8.4s, v5.4s, #20 + sli v8.4s, v5.4s, #12 + ushr v5.4s, v9.4s, #20 + sli v5.4s, v9.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + add v3.4s, v3.4s, v8.4s + add v4.4s, v4.4s, v5.4s + + eor v18.16b, v18.16b, v0.16b + eor v15.16b, v15.16b, v1.16b + eor v16.16b, v16.16b, v2.16b + eor v17.16b, v17.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + tbl v18.16b, {v18.16b}, v26.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + tbl v19.16b, {v19.16b}, v26.16b + + add v12.4s, v12.4s, v18.4s + add v13.4s, v13.4s, v15.4s + add v10.4s, v10.4s, v16.4s + add v11.4s, v11.4s, v17.4s + add v14.4s, v14.4s, v19.4s + + eor v20.16b, v20.16b, v12.16b + eor v6.16b, v6.16b, v13.16b + eor v7.16b, v7.16b, v10.16b + eor v8.16b, v8.16b, v11.16b + eor v5.16b, v5.16b, v14.16b + + ushr v9.4s, v5.4s, #25 + sli v9.4s, v5.4s, #7 + ushr v5.4s, v8.4s, #25 + sli v5.4s, v8.4s, #7 + ushr v8.4s, v7.4s, #25 + sli v8.4s, v7.4s, #7 + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v20.4s, #25 + sli v6.4s, v20.4s, #7 + + ext v9.16b, v9.16b, v9.16b, #12 + ext v14.16b, v14.16b, v14.16b, #8 + ext v19.16b, v19.16b, v19.16b, #4 + subs x6, x6, #1 + b.ge Lseal_main_loop_rounds + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + subs x7, x7, #1 + b.gt Lseal_main_loop_rounds + + eor v20.16b, v20.16b, v20.16b //zero + not v21.16b, v20.16b // -1 + sub v21.4s, v25.4s, v21.4s // Add +1 + ext v20.16b, v21.16b, v20.16b, #12 // Get the last element (counter) + add v19.4s, v19.4s, v20.4s + + add v15.4s, v15.4s, v25.4s + mov x11, #5 + dup v20.4s, w11 + add v25.4s, v25.4s, v20.4s + + zip1 v20.4s, v0.4s, v1.4s + zip2 v21.4s, v0.4s, v1.4s + zip1 v22.4s, v2.4s, v3.4s + zip2 v23.4s, v2.4s, v3.4s + + zip1 v0.2d, v20.2d, v22.2d + zip2 v1.2d, v20.2d, v22.2d + zip1 v2.2d, v21.2d, v23.2d + zip2 v3.2d, v21.2d, v23.2d + + zip1 v20.4s, v5.4s, v6.4s + zip2 v21.4s, v5.4s, v6.4s + zip1 v22.4s, v7.4s, v8.4s + zip2 v23.4s, v7.4s, v8.4s + + zip1 v5.2d, v20.2d, v22.2d + zip2 v6.2d, v20.2d, v22.2d + zip1 v7.2d, v21.2d, v23.2d + zip2 v8.2d, v21.2d, v23.2d + + zip1 v20.4s, v10.4s, v11.4s + zip2 v21.4s, v10.4s, v11.4s + zip1 v22.4s, v12.4s, v13.4s + zip2 v23.4s, v12.4s, v13.4s + + zip1 v10.2d, v20.2d, v22.2d + zip2 v11.2d, v20.2d, v22.2d + zip1 v12.2d, v21.2d, v23.2d + zip2 v13.2d, v21.2d, v23.2d + + zip1 v20.4s, v15.4s, v16.4s + zip2 v21.4s, v15.4s, v16.4s + zip1 v22.4s, v17.4s, v18.4s + zip2 v23.4s, v17.4s, v18.4s + + zip1 v15.2d, v20.2d, v22.2d + zip2 v16.2d, v20.2d, v22.2d + zip1 v17.2d, v21.2d, v23.2d + zip2 v18.2d, v21.2d, v23.2d + + add v0.4s, v0.4s, v24.4s + add v5.4s, v5.4s, v28.4s + add v10.4s, v10.4s, v29.4s + add v15.4s, v15.4s, v30.4s + + add v1.4s, v1.4s, v24.4s + add v6.4s, v6.4s, v28.4s + add v11.4s, v11.4s, v29.4s + add v16.4s, v16.4s, v30.4s + + add v2.4s, v2.4s, v24.4s + add v7.4s, v7.4s, v28.4s + add v12.4s, v12.4s, v29.4s + add v17.4s, v17.4s, v30.4s + + add v3.4s, v3.4s, v24.4s + add v8.4s, v8.4s, v28.4s + add v13.4s, v13.4s, v29.4s + add v18.4s, v18.4s, v30.4s + + add v4.4s, v4.4s, v24.4s + add v9.4s, v9.4s, v28.4s + add v14.4s, v14.4s, v29.4s + add v19.4s, v19.4s, v30.4s + + cmp x2, #320 + b.le Lseal_tail + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v0.16b + eor v21.16b, v21.16b, v5.16b + eor v22.16b, v22.16b, v10.16b + eor v23.16b, v23.16b, v15.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v1.16b + eor v21.16b, v21.16b, v6.16b + eor v22.16b, v22.16b, v11.16b + eor v23.16b, v23.16b, v16.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v2.16b + eor v21.16b, v21.16b, v7.16b + eor v22.16b, v22.16b, v12.16b + eor v23.16b, v23.16b, v17.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v3.16b + eor v21.16b, v21.16b, v8.16b + eor v22.16b, v22.16b, v13.16b + eor v23.16b, v23.16b, v18.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v4.16b + eor v21.16b, v21.16b, v9.16b + eor v22.16b, v22.16b, v14.16b + eor v23.16b, v23.16b, v19.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #320 + + mov x6, #0 + mov x7, #10 // For the remainder of the loop we always hash and encrypt 320 bytes per iteration + + b Lseal_main_loop + +Lseal_tail: + // This part of the function handles the storage and authentication of the last [0,320) bytes + // We assume A0-A4 ... D0-D4 hold at least inl (320 max) bytes of the stream data. + cmp x2, #64 + b.lt Lseal_tail_64 + + // Store and authenticate 64B blocks per iteration + ld1 {v20.16b - v23.16b}, [x1], #64 + + eor v20.16b, v20.16b, v0.16b + eor v21.16b, v21.16b, v5.16b + eor v22.16b, v22.16b, v10.16b + eor v23.16b, v23.16b, v15.16b + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + mov x11, v21.d[0] + mov x12, v21.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + mov x11, v22.d[0] + mov x12, v22.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + mov x11, v23.d[0] + mov x12, v23.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + st1 {v20.16b - v23.16b}, [x0], #64 + sub x2, x2, #64 + + // Shift the state left by 64 bytes for the next iteration of the loop + mov v0.16b, v1.16b + mov v5.16b, v6.16b + mov v10.16b, v11.16b + mov v15.16b, v16.16b + + mov v1.16b, v2.16b + mov v6.16b, v7.16b + mov v11.16b, v12.16b + mov v16.16b, v17.16b + + mov v2.16b, v3.16b + mov v7.16b, v8.16b + mov v12.16b, v13.16b + mov v17.16b, v18.16b + + mov v3.16b, v4.16b + mov v8.16b, v9.16b + mov v13.16b, v14.16b + mov v18.16b, v19.16b + + b Lseal_tail + +Lseal_tail_64: + ldp x3, x4, [x5, #48] // extra_in_len and extra_in_ptr + + // Here we handle the last [0,64) bytes of plaintext + cmp x2, #16 + b.lt Lseal_tail_16 + // Each iteration encrypt and authenticate a 16B block + ld1 {v20.16b}, [x1], #16 + eor v20.16b, v20.16b, v0.16b + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + st1 {v20.16b}, [x0], #16 + + sub x2, x2, #16 + + // Shift the state left by 16 bytes for the next iteration of the loop + mov v0.16b, v5.16b + mov v5.16b, v10.16b + mov v10.16b, v15.16b + + b Lseal_tail_64 + +Lseal_tail_16: + // Here we handle the last [0,16) bytes of ciphertext that require a padded block + cbz x2, Lseal_hash_extra + + eor v20.16b, v20.16b, v20.16b // Use T0 to load the plaintext/extra in + eor v21.16b, v21.16b, v21.16b // Use T1 to generate an AND mask that will only mask the ciphertext bytes + not v22.16b, v20.16b + + mov x6, x2 + add x1, x1, x2 + + cbz x4, Lseal_tail_16_compose // No extra data to pad with, zero padding + + mov x7, #16 // We need to load some extra_in first for padding + sub x7, x7, x2 + cmp x4, x7 + csel x7, x4, x7, lt // Load the minimum of extra_in_len and the amount needed to fill the register + mov x12, x7 + add x3, x3, x7 + sub x4, x4, x7 + +Lseal_tail16_compose_extra_in: + ext v20.16b, v20.16b, v20.16b, #15 + ldrb w11, [x3, #-1]! + mov v20.b[0], w11 + subs x7, x7, #1 + b.gt Lseal_tail16_compose_extra_in + + add x3, x3, x12 + +Lseal_tail_16_compose: + ext v20.16b, v20.16b, v20.16b, #15 + ldrb w11, [x1, #-1]! + mov v20.b[0], w11 + ext v21.16b, v22.16b, v21.16b, #15 + subs x2, x2, #1 + b.gt Lseal_tail_16_compose + + and v0.16b, v0.16b, v21.16b + eor v20.16b, v20.16b, v0.16b + mov v21.16b, v20.16b + +Lseal_tail_16_store: + umov w11, v20.b[0] + strb w11, [x0], #1 + ext v20.16b, v20.16b, v20.16b, #1 + subs x6, x6, #1 + b.gt Lseal_tail_16_store + + // Hash in the final ct block concatenated with extra_in + mov x11, v21.d[0] + mov x12, v21.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + +Lseal_hash_extra: + cbz x4, Lseal_finalize + +Lseal_hash_extra_loop: + cmp x4, #16 + b.lt Lseal_hash_extra_tail + ld1 {v20.16b}, [x3], #16 + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + sub x4, x4, #16 + b Lseal_hash_extra_loop + +Lseal_hash_extra_tail: + cbz x4, Lseal_finalize + eor v20.16b, v20.16b, v20.16b // Use T0 to load the remaining extra ciphertext + add x3, x3, x4 + +Lseal_hash_extra_load: + ext v20.16b, v20.16b, v20.16b, #15 + ldrb w11, [x3, #-1]! + mov v20.b[0], w11 + subs x4, x4, #1 + b.gt Lseal_hash_extra_load + + // Hash in the final padded extra_in blcok + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + +Lseal_finalize: + mov x11, v31.d[0] + mov x12, v31.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + // Final reduction step + sub x12, xzr, x15 + orr x13, xzr, #3 + subs x11, x8, #-5 + sbcs x12, x9, x12 + sbcs x13, x10, x13 + csel x8, x11, x8, cs + csel x9, x12, x9, cs + csel x10, x13, x10, cs + mov x11, v27.d[0] + mov x12, v27.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + + stp x8, x9, [x5] + + ldp d8, d9, [sp, #16] + ldp d10, d11, [sp, #32] + ldp d12, d13, [sp, #48] + ldp d14, d15, [sp, #64] +.cfi_restore b15 +.cfi_restore b14 +.cfi_restore b13 +.cfi_restore b12 +.cfi_restore b11 +.cfi_restore b10 +.cfi_restore b9 +.cfi_restore b8 + ldp x29, x30, [sp], 80 +.cfi_restore w29 +.cfi_restore w30 +.cfi_def_cfa_offset 0 + AARCH64_VALIDATE_LINK_REGISTER + ret + +Lseal_128: + // On some architectures preparing 5 blocks for small buffers is wasteful + eor v25.16b, v25.16b, v25.16b + mov x11, #1 + mov v25.s[0], w11 + mov v0.16b, v24.16b + mov v1.16b, v24.16b + mov v2.16b, v24.16b + mov v5.16b, v28.16b + mov v6.16b, v28.16b + mov v7.16b, v28.16b + mov v10.16b, v29.16b + mov v11.16b, v29.16b + mov v12.16b, v29.16b + mov v17.16b, v30.16b + add v15.4s, v17.4s, v25.4s + add v16.4s, v15.4s, v25.4s + + mov x6, #10 + +Lseal_128_rounds: + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v5.16b, v5.16b, v5.16b, #4 + ext v6.16b, v6.16b, v6.16b, #4 + ext v7.16b, v7.16b, v7.16b, #4 + + ext v10.16b, v10.16b, v10.16b, #8 + ext v11.16b, v11.16b, v11.16b, #8 + ext v12.16b, v12.16b, v12.16b, #8 + + ext v15.16b, v15.16b, v15.16b, #12 + ext v16.16b, v16.16b, v16.16b, #12 + ext v17.16b, v17.16b, v17.16b, #12 + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v5.16b, v5.16b, v5.16b, #12 + ext v6.16b, v6.16b, v6.16b, #12 + ext v7.16b, v7.16b, v7.16b, #12 + + ext v10.16b, v10.16b, v10.16b, #8 + ext v11.16b, v11.16b, v11.16b, #8 + ext v12.16b, v12.16b, v12.16b, #8 + + ext v15.16b, v15.16b, v15.16b, #4 + ext v16.16b, v16.16b, v16.16b, #4 + ext v17.16b, v17.16b, v17.16b, #4 + subs x6, x6, #1 + b.hi Lseal_128_rounds + + add v0.4s, v0.4s, v24.4s + add v1.4s, v1.4s, v24.4s + add v2.4s, v2.4s, v24.4s + + add v5.4s, v5.4s, v28.4s + add v6.4s, v6.4s, v28.4s + add v7.4s, v7.4s, v28.4s + + // Only the first 32 bytes of the third block (counter = 0) are needed, + // so skip updating v12 and v17. + add v10.4s, v10.4s, v29.4s + add v11.4s, v11.4s, v29.4s + + add v30.4s, v30.4s, v25.4s + add v15.4s, v15.4s, v30.4s + add v30.4s, v30.4s, v25.4s + add v16.4s, v16.4s, v30.4s + + and v2.16b, v2.16b, v27.16b + mov x16, v2.d[0] // Move the R key to GPRs + mov x17, v2.d[1] + mov v27.16b, v7.16b // Store the S key + + bl Lpoly_hash_ad_internal + b Lseal_tail +.cfi_endproc + + +///////////////////////////////// +// +// void chacha20_poly1305_open(uint8_t *pt, uint8_t *ct, size_t len_in, uint8_t *ad, size_t len_ad, union open_data *aead_data); +// +.globl chacha20_poly1305_open + +.def chacha20_poly1305_open + .type 32 +.endef +.align 6 +chacha20_poly1305_open: + AARCH64_SIGN_LINK_REGISTER +.cfi_startproc + stp x29, x30, [sp, #-80]! +.cfi_def_cfa_offset 80 +.cfi_offset w30, -72 +.cfi_offset w29, -80 + mov x29, sp + // We probably could do .cfi_def_cfa w29, 80 at this point, but since + // we don't actually use the frame pointer like that, it's probably not + // worth bothering. + stp d8, d9, [sp, #16] + stp d10, d11, [sp, #32] + stp d12, d13, [sp, #48] + stp d14, d15, [sp, #64] +.cfi_offset b15, -8 +.cfi_offset b14, -16 +.cfi_offset b13, -24 +.cfi_offset b12, -32 +.cfi_offset b11, -40 +.cfi_offset b10, -48 +.cfi_offset b9, -56 +.cfi_offset b8, -64 + + adrp x11, Lchacha20_consts + add x11, x11, :lo12:Lchacha20_consts + + ld1 {v24.16b - v27.16b}, [x11] // Load the CONSTS, INC, ROL8 and CLAMP values + ld1 {v28.16b - v30.16b}, [x5] + + mov x15, #1 // Prepare the Poly1305 state + mov x8, #0 + mov x9, #0 + mov x10, #0 + + mov v31.d[0], x4 // Store the input and aad lengths + mov v31.d[1], x2 + + cmp x2, #128 + b.le Lopen_128 // Optimization for smaller buffers + + // Initially we prepare a single ChaCha20 block for the Poly1305 R and S keys + mov v0.16b, v24.16b + mov v5.16b, v28.16b + mov v10.16b, v29.16b + mov v15.16b, v30.16b + + mov x6, #10 + +.align 5 +Lopen_init_rounds: + add v0.4s, v0.4s, v5.4s + eor v15.16b, v15.16b, v0.16b + rev32 v15.8h, v15.8h + + add v10.4s, v10.4s, v15.4s + eor v5.16b, v5.16b, v10.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + add v0.4s, v0.4s, v20.4s + eor v15.16b, v15.16b, v0.16b + tbl v15.16b, {v15.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + eor v20.16b, v20.16b, v10.16b + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + ext v5.16b, v5.16b, v5.16b, #4 + ext v10.16b, v10.16b, v10.16b, #8 + ext v15.16b, v15.16b, v15.16b, #12 + add v0.4s, v0.4s, v5.4s + eor v15.16b, v15.16b, v0.16b + rev32 v15.8h, v15.8h + + add v10.4s, v10.4s, v15.4s + eor v5.16b, v5.16b, v10.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + add v0.4s, v0.4s, v20.4s + eor v15.16b, v15.16b, v0.16b + tbl v15.16b, {v15.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + eor v20.16b, v20.16b, v10.16b + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + ext v5.16b, v5.16b, v5.16b, #12 + ext v10.16b, v10.16b, v10.16b, #8 + ext v15.16b, v15.16b, v15.16b, #4 + subs x6, x6, #1 + b.hi Lopen_init_rounds + + add v0.4s, v0.4s, v24.4s + add v5.4s, v5.4s, v28.4s + + and v0.16b, v0.16b, v27.16b + mov x16, v0.d[0] // Move the R key to GPRs + mov x17, v0.d[1] + mov v27.16b, v5.16b // Store the S key + + bl Lpoly_hash_ad_internal + +Lopen_ad_done: + mov x3, x1 + +// Each iteration of the loop hash 320 bytes, and prepare stream for 320 bytes +Lopen_main_loop: + + cmp x2, #192 + b.lt Lopen_tail + + adrp x11, Lchacha20_consts + add x11, x11, :lo12:Lchacha20_consts + + ld4r {v0.4s,v1.4s,v2.4s,v3.4s}, [x11] + mov v4.16b, v24.16b + + ld4r {v5.4s,v6.4s,v7.4s,v8.4s}, [x5], #16 + mov v9.16b, v28.16b + + ld4r {v10.4s,v11.4s,v12.4s,v13.4s}, [x5], #16 + mov v14.16b, v29.16b + + ld4r {v15.4s,v16.4s,v17.4s,v18.4s}, [x5] + sub x5, x5, #32 + add v15.4s, v15.4s, v25.4s + mov v19.16b, v30.16b + + eor v20.16b, v20.16b, v20.16b //zero + not v21.16b, v20.16b // -1 + sub v21.4s, v25.4s, v21.4s // Add +1 + ext v20.16b, v21.16b, v20.16b, #12 // Get the last element (counter) + add v19.4s, v19.4s, v20.4s + + lsr x4, x2, #4 // How many whole blocks we have to hash, will always be at least 12 + sub x4, x4, #10 + + mov x7, #10 + subs x6, x7, x4 + subs x6, x7, x4 // itr1 can be negative if we have more than 320 bytes to hash + csel x7, x7, x4, le // if itr1 is zero or less, itr2 should be 10 to indicate all 10 rounds are full + + cbz x7, Lopen_main_loop_rounds_short + +.align 5 +Lopen_main_loop_rounds: + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most +Lopen_main_loop_rounds_short: + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + add v3.4s, v3.4s, v8.4s + add v4.4s, v4.4s, v9.4s + + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + eor v18.16b, v18.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + rev32 v18.8h, v18.8h + rev32 v19.8h, v19.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + add v13.4s, v13.4s, v18.4s + add v14.4s, v14.4s, v19.4s + + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + eor v8.16b, v8.16b, v13.16b + eor v9.16b, v9.16b, v14.16b + + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + ushr v7.4s, v8.4s, #20 + sli v7.4s, v8.4s, #12 + ushr v8.4s, v9.4s, #20 + sli v8.4s, v9.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + add v3.4s, v3.4s, v7.4s + add v4.4s, v4.4s, v8.4s + + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + eor v18.16b, v18.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + tbl v18.16b, {v18.16b}, v26.16b + tbl v19.16b, {v19.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + add v13.4s, v13.4s, v18.4s + add v14.4s, v14.4s, v19.4s + + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + eor v7.16b, v7.16b, v13.16b + eor v8.16b, v8.16b, v14.16b + + ushr v9.4s, v8.4s, #25 + sli v9.4s, v8.4s, #7 + ushr v8.4s, v7.4s, #25 + sli v8.4s, v7.4s, #7 + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v9.16b, v9.16b, v9.16b, #4 + ext v14.16b, v14.16b, v14.16b, #8 + ext v19.16b, v19.16b, v19.16b, #12 + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + add v0.4s, v0.4s, v6.4s + add v1.4s, v1.4s, v7.4s + add v2.4s, v2.4s, v8.4s + add v3.4s, v3.4s, v5.4s + add v4.4s, v4.4s, v9.4s + + eor v18.16b, v18.16b, v0.16b + eor v15.16b, v15.16b, v1.16b + eor v16.16b, v16.16b, v2.16b + eor v17.16b, v17.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + rev32 v18.8h, v18.8h + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + rev32 v19.8h, v19.8h + + add v12.4s, v12.4s, v18.4s + add v13.4s, v13.4s, v15.4s + add v10.4s, v10.4s, v16.4s + add v11.4s, v11.4s, v17.4s + add v14.4s, v14.4s, v19.4s + + eor v6.16b, v6.16b, v12.16b + eor v7.16b, v7.16b, v13.16b + eor v8.16b, v8.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v9.16b, v9.16b, v14.16b + + ushr v20.4s, v6.4s, #20 + sli v20.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + ushr v7.4s, v8.4s, #20 + sli v7.4s, v8.4s, #12 + ushr v8.4s, v5.4s, #20 + sli v8.4s, v5.4s, #12 + ushr v5.4s, v9.4s, #20 + sli v5.4s, v9.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + add v3.4s, v3.4s, v8.4s + add v4.4s, v4.4s, v5.4s + + eor v18.16b, v18.16b, v0.16b + eor v15.16b, v15.16b, v1.16b + eor v16.16b, v16.16b, v2.16b + eor v17.16b, v17.16b, v3.16b + eor v19.16b, v19.16b, v4.16b + + tbl v18.16b, {v18.16b}, v26.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + tbl v19.16b, {v19.16b}, v26.16b + + add v12.4s, v12.4s, v18.4s + add v13.4s, v13.4s, v15.4s + add v10.4s, v10.4s, v16.4s + add v11.4s, v11.4s, v17.4s + add v14.4s, v14.4s, v19.4s + + eor v20.16b, v20.16b, v12.16b + eor v6.16b, v6.16b, v13.16b + eor v7.16b, v7.16b, v10.16b + eor v8.16b, v8.16b, v11.16b + eor v5.16b, v5.16b, v14.16b + + ushr v9.4s, v5.4s, #25 + sli v9.4s, v5.4s, #7 + ushr v5.4s, v8.4s, #25 + sli v5.4s, v8.4s, #7 + ushr v8.4s, v7.4s, #25 + sli v8.4s, v7.4s, #7 + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v20.4s, #25 + sli v6.4s, v20.4s, #7 + + ext v9.16b, v9.16b, v9.16b, #12 + ext v14.16b, v14.16b, v14.16b, #8 + ext v19.16b, v19.16b, v19.16b, #4 + subs x7, x7, #1 + b.gt Lopen_main_loop_rounds + subs x6, x6, #1 + b.ge Lopen_main_loop_rounds_short + + eor v20.16b, v20.16b, v20.16b //zero + not v21.16b, v20.16b // -1 + sub v21.4s, v25.4s, v21.4s // Add +1 + ext v20.16b, v21.16b, v20.16b, #12 // Get the last element (counter) + add v19.4s, v19.4s, v20.4s + + add v15.4s, v15.4s, v25.4s + mov x11, #5 + dup v20.4s, w11 + add v25.4s, v25.4s, v20.4s + + zip1 v20.4s, v0.4s, v1.4s + zip2 v21.4s, v0.4s, v1.4s + zip1 v22.4s, v2.4s, v3.4s + zip2 v23.4s, v2.4s, v3.4s + + zip1 v0.2d, v20.2d, v22.2d + zip2 v1.2d, v20.2d, v22.2d + zip1 v2.2d, v21.2d, v23.2d + zip2 v3.2d, v21.2d, v23.2d + + zip1 v20.4s, v5.4s, v6.4s + zip2 v21.4s, v5.4s, v6.4s + zip1 v22.4s, v7.4s, v8.4s + zip2 v23.4s, v7.4s, v8.4s + + zip1 v5.2d, v20.2d, v22.2d + zip2 v6.2d, v20.2d, v22.2d + zip1 v7.2d, v21.2d, v23.2d + zip2 v8.2d, v21.2d, v23.2d + + zip1 v20.4s, v10.4s, v11.4s + zip2 v21.4s, v10.4s, v11.4s + zip1 v22.4s, v12.4s, v13.4s + zip2 v23.4s, v12.4s, v13.4s + + zip1 v10.2d, v20.2d, v22.2d + zip2 v11.2d, v20.2d, v22.2d + zip1 v12.2d, v21.2d, v23.2d + zip2 v13.2d, v21.2d, v23.2d + + zip1 v20.4s, v15.4s, v16.4s + zip2 v21.4s, v15.4s, v16.4s + zip1 v22.4s, v17.4s, v18.4s + zip2 v23.4s, v17.4s, v18.4s + + zip1 v15.2d, v20.2d, v22.2d + zip2 v16.2d, v20.2d, v22.2d + zip1 v17.2d, v21.2d, v23.2d + zip2 v18.2d, v21.2d, v23.2d + + add v0.4s, v0.4s, v24.4s + add v5.4s, v5.4s, v28.4s + add v10.4s, v10.4s, v29.4s + add v15.4s, v15.4s, v30.4s + + add v1.4s, v1.4s, v24.4s + add v6.4s, v6.4s, v28.4s + add v11.4s, v11.4s, v29.4s + add v16.4s, v16.4s, v30.4s + + add v2.4s, v2.4s, v24.4s + add v7.4s, v7.4s, v28.4s + add v12.4s, v12.4s, v29.4s + add v17.4s, v17.4s, v30.4s + + add v3.4s, v3.4s, v24.4s + add v8.4s, v8.4s, v28.4s + add v13.4s, v13.4s, v29.4s + add v18.4s, v18.4s, v30.4s + + add v4.4s, v4.4s, v24.4s + add v9.4s, v9.4s, v28.4s + add v14.4s, v14.4s, v29.4s + add v19.4s, v19.4s, v30.4s + + // We can always safely store 192 bytes + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v0.16b + eor v21.16b, v21.16b, v5.16b + eor v22.16b, v22.16b, v10.16b + eor v23.16b, v23.16b, v15.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v1.16b + eor v21.16b, v21.16b, v6.16b + eor v22.16b, v22.16b, v11.16b + eor v23.16b, v23.16b, v16.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v2.16b + eor v21.16b, v21.16b, v7.16b + eor v22.16b, v22.16b, v12.16b + eor v23.16b, v23.16b, v17.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #192 + + mov v0.16b, v3.16b + mov v5.16b, v8.16b + mov v10.16b, v13.16b + mov v15.16b, v18.16b + + cmp x2, #64 + b.lt Lopen_tail_64_store + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v3.16b + eor v21.16b, v21.16b, v8.16b + eor v22.16b, v22.16b, v13.16b + eor v23.16b, v23.16b, v18.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #64 + + mov v0.16b, v4.16b + mov v5.16b, v9.16b + mov v10.16b, v14.16b + mov v15.16b, v19.16b + + cmp x2, #64 + b.lt Lopen_tail_64_store + + ld1 {v20.16b - v23.16b}, [x1], #64 + eor v20.16b, v20.16b, v4.16b + eor v21.16b, v21.16b, v9.16b + eor v22.16b, v22.16b, v14.16b + eor v23.16b, v23.16b, v19.16b + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #64 + b Lopen_main_loop + +Lopen_tail: + + cbz x2, Lopen_finalize + + lsr x4, x2, #4 // How many whole blocks we have to hash + + cmp x2, #64 + b.le Lopen_tail_64 + cmp x2, #128 + b.le Lopen_tail_128 + +Lopen_tail_192: + // We need three more blocks + mov v0.16b, v24.16b + mov v1.16b, v24.16b + mov v2.16b, v24.16b + mov v5.16b, v28.16b + mov v6.16b, v28.16b + mov v7.16b, v28.16b + mov v10.16b, v29.16b + mov v11.16b, v29.16b + mov v12.16b, v29.16b + mov v15.16b, v30.16b + mov v16.16b, v30.16b + mov v17.16b, v30.16b + eor v23.16b, v23.16b, v23.16b + eor v21.16b, v21.16b, v21.16b + ins v23.s[0], v25.s[0] + ins v21.d[0], x15 + + add v22.4s, v23.4s, v21.4s + add v21.4s, v22.4s, v21.4s + + add v15.4s, v15.4s, v21.4s + add v16.4s, v16.4s, v23.4s + add v17.4s, v17.4s, v22.4s + + mov x7, #10 + subs x6, x7, x4 // itr1 can be negative if we have more than 160 bytes to hash + csel x7, x7, x4, le // if itr1 is zero or less, itr2 should be 10 to indicate all 10 rounds are hashing + sub x4, x4, x7 + + cbz x7, Lopen_tail_192_rounds_no_hash + +Lopen_tail_192_rounds: + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most +Lopen_tail_192_rounds_no_hash: + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v5.16b, v5.16b, v5.16b, #4 + ext v6.16b, v6.16b, v6.16b, #4 + ext v7.16b, v7.16b, v7.16b, #4 + + ext v10.16b, v10.16b, v10.16b, #8 + ext v11.16b, v11.16b, v11.16b, #8 + ext v12.16b, v12.16b, v12.16b, #8 + + ext v15.16b, v15.16b, v15.16b, #12 + ext v16.16b, v16.16b, v16.16b, #12 + ext v17.16b, v17.16b, v17.16b, #12 + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v5.16b, v5.16b, v5.16b, #12 + ext v6.16b, v6.16b, v6.16b, #12 + ext v7.16b, v7.16b, v7.16b, #12 + + ext v10.16b, v10.16b, v10.16b, #8 + ext v11.16b, v11.16b, v11.16b, #8 + ext v12.16b, v12.16b, v12.16b, #8 + + ext v15.16b, v15.16b, v15.16b, #4 + ext v16.16b, v16.16b, v16.16b, #4 + ext v17.16b, v17.16b, v17.16b, #4 + subs x7, x7, #1 + b.gt Lopen_tail_192_rounds + subs x6, x6, #1 + b.ge Lopen_tail_192_rounds_no_hash + + // We hashed 160 bytes at most, may still have 32 bytes left +Lopen_tail_192_hash: + cbz x4, Lopen_tail_192_hash_done + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + sub x4, x4, #1 + b Lopen_tail_192_hash + +Lopen_tail_192_hash_done: + + add v0.4s, v0.4s, v24.4s + add v1.4s, v1.4s, v24.4s + add v2.4s, v2.4s, v24.4s + add v5.4s, v5.4s, v28.4s + add v6.4s, v6.4s, v28.4s + add v7.4s, v7.4s, v28.4s + add v10.4s, v10.4s, v29.4s + add v11.4s, v11.4s, v29.4s + add v12.4s, v12.4s, v29.4s + add v15.4s, v15.4s, v30.4s + add v16.4s, v16.4s, v30.4s + add v17.4s, v17.4s, v30.4s + + add v15.4s, v15.4s, v21.4s + add v16.4s, v16.4s, v23.4s + add v17.4s, v17.4s, v22.4s + + ld1 {v20.16b - v23.16b}, [x1], #64 + + eor v20.16b, v20.16b, v1.16b + eor v21.16b, v21.16b, v6.16b + eor v22.16b, v22.16b, v11.16b + eor v23.16b, v23.16b, v16.16b + + st1 {v20.16b - v23.16b}, [x0], #64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + + eor v20.16b, v20.16b, v2.16b + eor v21.16b, v21.16b, v7.16b + eor v22.16b, v22.16b, v12.16b + eor v23.16b, v23.16b, v17.16b + + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #128 + b Lopen_tail_64_store + +Lopen_tail_128: + // We need two more blocks + mov v0.16b, v24.16b + mov v1.16b, v24.16b + mov v5.16b, v28.16b + mov v6.16b, v28.16b + mov v10.16b, v29.16b + mov v11.16b, v29.16b + mov v15.16b, v30.16b + mov v16.16b, v30.16b + eor v23.16b, v23.16b, v23.16b + eor v22.16b, v22.16b, v22.16b + ins v23.s[0], v25.s[0] + ins v22.d[0], x15 + add v22.4s, v22.4s, v23.4s + + add v15.4s, v15.4s, v22.4s + add v16.4s, v16.4s, v23.4s + + mov x6, #10 + sub x6, x6, x4 + +Lopen_tail_128_rounds: + add v0.4s, v0.4s, v5.4s + eor v15.16b, v15.16b, v0.16b + rev32 v15.8h, v15.8h + + add v10.4s, v10.4s, v15.4s + eor v5.16b, v5.16b, v10.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + add v0.4s, v0.4s, v20.4s + eor v15.16b, v15.16b, v0.16b + tbl v15.16b, {v15.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + eor v20.16b, v20.16b, v10.16b + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + ext v5.16b, v5.16b, v5.16b, #4 + ext v10.16b, v10.16b, v10.16b, #8 + ext v15.16b, v15.16b, v15.16b, #12 + add v1.4s, v1.4s, v6.4s + eor v16.16b, v16.16b, v1.16b + rev32 v16.8h, v16.8h + + add v11.4s, v11.4s, v16.4s + eor v6.16b, v6.16b, v11.16b + ushr v20.4s, v6.4s, #20 + sli v20.4s, v6.4s, #12 + add v1.4s, v1.4s, v20.4s + eor v16.16b, v16.16b, v1.16b + tbl v16.16b, {v16.16b}, v26.16b + + add v11.4s, v11.4s, v16.4s + eor v20.16b, v20.16b, v11.16b + ushr v6.4s, v20.4s, #25 + sli v6.4s, v20.4s, #7 + ext v6.16b, v6.16b, v6.16b, #4 + ext v11.16b, v11.16b, v11.16b, #8 + ext v16.16b, v16.16b, v16.16b, #12 + add v0.4s, v0.4s, v5.4s + eor v15.16b, v15.16b, v0.16b + rev32 v15.8h, v15.8h + + add v10.4s, v10.4s, v15.4s + eor v5.16b, v5.16b, v10.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + add v0.4s, v0.4s, v20.4s + eor v15.16b, v15.16b, v0.16b + tbl v15.16b, {v15.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + eor v20.16b, v20.16b, v10.16b + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + ext v5.16b, v5.16b, v5.16b, #12 + ext v10.16b, v10.16b, v10.16b, #8 + ext v15.16b, v15.16b, v15.16b, #4 + add v1.4s, v1.4s, v6.4s + eor v16.16b, v16.16b, v1.16b + rev32 v16.8h, v16.8h + + add v11.4s, v11.4s, v16.4s + eor v6.16b, v6.16b, v11.16b + ushr v20.4s, v6.4s, #20 + sli v20.4s, v6.4s, #12 + add v1.4s, v1.4s, v20.4s + eor v16.16b, v16.16b, v1.16b + tbl v16.16b, {v16.16b}, v26.16b + + add v11.4s, v11.4s, v16.4s + eor v20.16b, v20.16b, v11.16b + ushr v6.4s, v20.4s, #25 + sli v6.4s, v20.4s, #7 + ext v6.16b, v6.16b, v6.16b, #12 + ext v11.16b, v11.16b, v11.16b, #8 + ext v16.16b, v16.16b, v16.16b, #4 + subs x6, x6, #1 + b.gt Lopen_tail_128_rounds + cbz x4, Lopen_tail_128_rounds_done + subs x4, x4, #1 + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + b Lopen_tail_128_rounds + +Lopen_tail_128_rounds_done: + add v0.4s, v0.4s, v24.4s + add v1.4s, v1.4s, v24.4s + add v5.4s, v5.4s, v28.4s + add v6.4s, v6.4s, v28.4s + add v10.4s, v10.4s, v29.4s + add v11.4s, v11.4s, v29.4s + add v15.4s, v15.4s, v30.4s + add v16.4s, v16.4s, v30.4s + add v15.4s, v15.4s, v22.4s + add v16.4s, v16.4s, v23.4s + + ld1 {v20.16b - v23.16b}, [x1], #64 + + eor v20.16b, v20.16b, v1.16b + eor v21.16b, v21.16b, v6.16b + eor v22.16b, v22.16b, v11.16b + eor v23.16b, v23.16b, v16.16b + + st1 {v20.16b - v23.16b}, [x0], #64 + sub x2, x2, #64 + + b Lopen_tail_64_store + +Lopen_tail_64: + // We just need a single block + mov v0.16b, v24.16b + mov v5.16b, v28.16b + mov v10.16b, v29.16b + mov v15.16b, v30.16b + eor v23.16b, v23.16b, v23.16b + ins v23.s[0], v25.s[0] + add v15.4s, v15.4s, v23.4s + + mov x6, #10 + sub x6, x6, x4 + +Lopen_tail_64_rounds: + add v0.4s, v0.4s, v5.4s + eor v15.16b, v15.16b, v0.16b + rev32 v15.8h, v15.8h + + add v10.4s, v10.4s, v15.4s + eor v5.16b, v5.16b, v10.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + add v0.4s, v0.4s, v20.4s + eor v15.16b, v15.16b, v0.16b + tbl v15.16b, {v15.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + eor v20.16b, v20.16b, v10.16b + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + ext v5.16b, v5.16b, v5.16b, #4 + ext v10.16b, v10.16b, v10.16b, #8 + ext v15.16b, v15.16b, v15.16b, #12 + add v0.4s, v0.4s, v5.4s + eor v15.16b, v15.16b, v0.16b + rev32 v15.8h, v15.8h + + add v10.4s, v10.4s, v15.4s + eor v5.16b, v5.16b, v10.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + add v0.4s, v0.4s, v20.4s + eor v15.16b, v15.16b, v0.16b + tbl v15.16b, {v15.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + eor v20.16b, v20.16b, v10.16b + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + ext v5.16b, v5.16b, v5.16b, #12 + ext v10.16b, v10.16b, v10.16b, #8 + ext v15.16b, v15.16b, v15.16b, #4 + subs x6, x6, #1 + b.gt Lopen_tail_64_rounds + cbz x4, Lopen_tail_64_rounds_done + subs x4, x4, #1 + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + b Lopen_tail_64_rounds + +Lopen_tail_64_rounds_done: + add v0.4s, v0.4s, v24.4s + add v5.4s, v5.4s, v28.4s + add v10.4s, v10.4s, v29.4s + add v15.4s, v15.4s, v30.4s + add v15.4s, v15.4s, v23.4s + +Lopen_tail_64_store: + cmp x2, #16 + b.lt Lopen_tail_16 + + ld1 {v20.16b}, [x1], #16 + eor v20.16b, v20.16b, v0.16b + st1 {v20.16b}, [x0], #16 + mov v0.16b, v5.16b + mov v5.16b, v10.16b + mov v10.16b, v15.16b + sub x2, x2, #16 + b Lopen_tail_64_store + +Lopen_tail_16: + // Here we handle the last [0,16) bytes that require a padded block + cbz x2, Lopen_finalize + + eor v20.16b, v20.16b, v20.16b // Use T0 to load the ciphertext + eor v21.16b, v21.16b, v21.16b // Use T1 to generate an AND mask + not v22.16b, v20.16b + + add x7, x1, x2 + mov x6, x2 + +Lopen_tail_16_compose: + ext v20.16b, v20.16b, v20.16b, #15 + ldrb w11, [x7, #-1]! + mov v20.b[0], w11 + ext v21.16b, v22.16b, v21.16b, #15 + subs x2, x2, #1 + b.gt Lopen_tail_16_compose + + and v20.16b, v20.16b, v21.16b + // Hash in the final padded block + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + eor v20.16b, v20.16b, v0.16b + +Lopen_tail_16_store: + umov w11, v20.b[0] + strb w11, [x0], #1 + ext v20.16b, v20.16b, v20.16b, #1 + subs x6, x6, #1 + b.gt Lopen_tail_16_store + +Lopen_finalize: + mov x11, v31.d[0] + mov x12, v31.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + // Final reduction step + sub x12, xzr, x15 + orr x13, xzr, #3 + subs x11, x8, #-5 + sbcs x12, x9, x12 + sbcs x13, x10, x13 + csel x8, x11, x8, cs + csel x9, x12, x9, cs + csel x10, x13, x10, cs + mov x11, v27.d[0] + mov x12, v27.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + + stp x8, x9, [x5] + + ldp d8, d9, [sp, #16] + ldp d10, d11, [sp, #32] + ldp d12, d13, [sp, #48] + ldp d14, d15, [sp, #64] +.cfi_restore b15 +.cfi_restore b14 +.cfi_restore b13 +.cfi_restore b12 +.cfi_restore b11 +.cfi_restore b10 +.cfi_restore b9 +.cfi_restore b8 + ldp x29, x30, [sp], 80 +.cfi_restore w29 +.cfi_restore w30 +.cfi_def_cfa_offset 0 + AARCH64_VALIDATE_LINK_REGISTER + ret + +Lopen_128: + // On some architectures preparing 5 blocks for small buffers is wasteful + eor v25.16b, v25.16b, v25.16b + mov x11, #1 + mov v25.s[0], w11 + mov v0.16b, v24.16b + mov v1.16b, v24.16b + mov v2.16b, v24.16b + mov v5.16b, v28.16b + mov v6.16b, v28.16b + mov v7.16b, v28.16b + mov v10.16b, v29.16b + mov v11.16b, v29.16b + mov v12.16b, v29.16b + mov v17.16b, v30.16b + add v15.4s, v17.4s, v25.4s + add v16.4s, v15.4s, v25.4s + + mov x6, #10 + +Lopen_128_rounds: + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v5.16b, v5.16b, v5.16b, #4 + ext v6.16b, v6.16b, v6.16b, #4 + ext v7.16b, v7.16b, v7.16b, #4 + + ext v10.16b, v10.16b, v10.16b, #8 + ext v11.16b, v11.16b, v11.16b, #8 + ext v12.16b, v12.16b, v12.16b, #8 + + ext v15.16b, v15.16b, v15.16b, #12 + ext v16.16b, v16.16b, v16.16b, #12 + ext v17.16b, v17.16b, v17.16b, #12 + add v0.4s, v0.4s, v5.4s + add v1.4s, v1.4s, v6.4s + add v2.4s, v2.4s, v7.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + rev32 v15.8h, v15.8h + rev32 v16.8h, v16.8h + rev32 v17.8h, v17.8h + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v5.16b, v5.16b, v10.16b + eor v6.16b, v6.16b, v11.16b + eor v7.16b, v7.16b, v12.16b + ushr v20.4s, v5.4s, #20 + sli v20.4s, v5.4s, #12 + ushr v5.4s, v6.4s, #20 + sli v5.4s, v6.4s, #12 + ushr v6.4s, v7.4s, #20 + sli v6.4s, v7.4s, #12 + + add v0.4s, v0.4s, v20.4s + add v1.4s, v1.4s, v5.4s + add v2.4s, v2.4s, v6.4s + eor v15.16b, v15.16b, v0.16b + eor v16.16b, v16.16b, v1.16b + eor v17.16b, v17.16b, v2.16b + tbl v15.16b, {v15.16b}, v26.16b + tbl v16.16b, {v16.16b}, v26.16b + tbl v17.16b, {v17.16b}, v26.16b + + add v10.4s, v10.4s, v15.4s + add v11.4s, v11.4s, v16.4s + add v12.4s, v12.4s, v17.4s + eor v20.16b, v20.16b, v10.16b + eor v5.16b, v5.16b, v11.16b + eor v6.16b, v6.16b, v12.16b + ushr v7.4s, v6.4s, #25 + sli v7.4s, v6.4s, #7 + ushr v6.4s, v5.4s, #25 + sli v6.4s, v5.4s, #7 + ushr v5.4s, v20.4s, #25 + sli v5.4s, v20.4s, #7 + + ext v5.16b, v5.16b, v5.16b, #12 + ext v6.16b, v6.16b, v6.16b, #12 + ext v7.16b, v7.16b, v7.16b, #12 + + ext v10.16b, v10.16b, v10.16b, #8 + ext v11.16b, v11.16b, v11.16b, #8 + ext v12.16b, v12.16b, v12.16b, #8 + + ext v15.16b, v15.16b, v15.16b, #4 + ext v16.16b, v16.16b, v16.16b, #4 + ext v17.16b, v17.16b, v17.16b, #4 + subs x6, x6, #1 + b.hi Lopen_128_rounds + + add v0.4s, v0.4s, v24.4s + add v1.4s, v1.4s, v24.4s + add v2.4s, v2.4s, v24.4s + + add v5.4s, v5.4s, v28.4s + add v6.4s, v6.4s, v28.4s + add v7.4s, v7.4s, v28.4s + + add v10.4s, v10.4s, v29.4s + add v11.4s, v11.4s, v29.4s + + add v30.4s, v30.4s, v25.4s + add v15.4s, v15.4s, v30.4s + add v30.4s, v30.4s, v25.4s + add v16.4s, v16.4s, v30.4s + + and v2.16b, v2.16b, v27.16b + mov x16, v2.d[0] // Move the R key to GPRs + mov x17, v2.d[1] + mov v27.16b, v7.16b // Store the S key + + bl Lpoly_hash_ad_internal + +Lopen_128_store: + cmp x2, #64 + b.lt Lopen_128_store_64 + + ld1 {v20.16b - v23.16b}, [x1], #64 + + mov x11, v20.d[0] + mov x12, v20.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + mov x11, v21.d[0] + mov x12, v21.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + mov x11, v22.d[0] + mov x12, v22.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + mov x11, v23.d[0] + mov x12, v23.d[1] + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + + eor v20.16b, v20.16b, v0.16b + eor v21.16b, v21.16b, v5.16b + eor v22.16b, v22.16b, v10.16b + eor v23.16b, v23.16b, v15.16b + + st1 {v20.16b - v23.16b}, [x0], #64 + + sub x2, x2, #64 + + mov v0.16b, v1.16b + mov v5.16b, v6.16b + mov v10.16b, v11.16b + mov v15.16b, v16.16b + +Lopen_128_store_64: + + lsr x4, x2, #4 + mov x3, x1 + +Lopen_128_hash_64: + cbz x4, Lopen_tail_64_store + ldp x11, x12, [x3], 16 + adds x8, x8, x11 + adcs x9, x9, x12 + adc x10, x10, x15 + mul x11, x8, x16 // [t2:t1:t0] = [acc2:acc1:acc0] * r0 + umulh x12, x8, x16 + mul x13, x9, x16 + umulh x14, x9, x16 + adds x12, x12, x13 + mul x13, x10, x16 + adc x13, x13, x14 + mul x14, x8, x17 // [t3:t2:t1:t0] = [acc2:acc1:acc0] * [r1:r0] + umulh x8, x8, x17 + adds x12, x12, x14 + mul x14, x9, x17 + umulh x9, x9, x17 + adcs x14, x14, x8 + mul x10, x10, x17 + adc x10, x10, x9 + adds x13, x13, x14 + adc x14, x10, xzr + and x10, x13, #3 // At this point acc2 is 2 bits at most (value of 3) + and x8, x13, #-4 + extr x13, x14, x13, #2 + adds x8, x8, x11 + lsr x11, x14, #2 + adc x9, x14, x11 // No carry out since t0 is 61 bits and t3 is 63 bits + adds x8, x8, x13 + adcs x9, x9, x12 + adc x10, x10, xzr // At this point acc2 has the value of 4 at most + sub x4, x4, #1 + b Lopen_128_hash_64 +.cfi_endproc + +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(_WIN32) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_x86_64-elf.S temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_x86_64-elf.S --- temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_x86_64-elf.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_x86_64-elf.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,19 +1,16 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__ELF__) .text -.extern GFp_ia32cap_P -.hidden GFp_ia32cap_P +.extern OPENSSL_ia32cap_P +.hidden OPENSSL_ia32cap_P chacha20_poly1305_constants: +.section .rodata .align 64 .Lchacha20_consts: .byte 'e','x','p','a','n','d',' ','3','2','-','b','y','t','e',' ','k' @@ -51,6 +48,7 @@ .byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00 .byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00 .byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff +.text .type poly_hash_ad_internal,@function .align 64 @@ -106,7 +104,7 @@ adcq %r9,%r11 adcq $0,%r12 - .byte 0xf3,0xc3 + ret .Lhash_ad_loop: cmpq $16,%r8 @@ -215,16 +213,17 @@ .Lhash_ad_done: - .byte 0xf3,0xc3 + ret .cfi_endproc .size poly_hash_ad_internal, .-poly_hash_ad_internal -.globl GFp_chacha20_poly1305_open -.hidden GFp_chacha20_poly1305_open -.type GFp_chacha20_poly1305_open,@function +.globl chacha20_poly1305_open +.hidden chacha20_poly1305_open +.type chacha20_poly1305_open,@function .align 64 -GFp_chacha20_poly1305_open: +chacha20_poly1305_open: .cfi_startproc +_CET_ENDBR pushq %rbp .cfi_adjust_cfa_offset 8 .cfi_offset %rbp,-16 @@ -258,7 +257,7 @@ movq %r8,0+0+32(%rbp) movq %rbx,8+0+32(%rbp) - movl GFp_ia32cap_P+8(%rip),%eax + movl OPENSSL_ia32cap_P+8(%rip),%eax andl $288,%eax xorl $288,%eax jz chacha20_poly1305_open_avx2 @@ -1863,7 +1862,7 @@ popq %rbp .cfi_adjust_cfa_offset -8 .cfi_restore %rbp - .byte 0xf3,0xc3 + ret .Lopen_sse_128: .cfi_restore_state @@ -2095,7 +2094,7 @@ movdqa %xmm10,%xmm6 movdqa %xmm14,%xmm10 jmp .Lopen_sse_128_xor_hash -.size GFp_chacha20_poly1305_open, .-GFp_chacha20_poly1305_open +.size chacha20_poly1305_open, .-chacha20_poly1305_open .cfi_endproc @@ -2103,12 +2102,14 @@ -.globl GFp_chacha20_poly1305_seal -.hidden GFp_chacha20_poly1305_seal -.type GFp_chacha20_poly1305_seal,@function + +.globl chacha20_poly1305_seal +.hidden chacha20_poly1305_seal +.type chacha20_poly1305_seal,@function .align 64 -GFp_chacha20_poly1305_seal: +chacha20_poly1305_seal: .cfi_startproc +_CET_ENDBR pushq %rbp .cfi_adjust_cfa_offset 8 .cfi_offset %rbp,-16 @@ -2143,7 +2144,7 @@ movq %rbx,8+0+32(%rbp) movq %rdx,%rbx - movl GFp_ia32cap_P+8(%rip),%eax + movl OPENSSL_ia32cap_P+8(%rip),%eax andl $288,%eax xorl $288,%eax jz chacha20_poly1305_seal_avx2 @@ -3927,7 +3928,7 @@ popq %rbp .cfi_adjust_cfa_offset -8 .cfi_restore %rbp - .byte 0xf3,0xc3 + ret .Lseal_sse_128: .cfi_restore_state @@ -4099,7 +4100,7 @@ movq %r8,%r8 call poly_hash_ad_internal jmp .Lseal_sse_128_tail_xor -.size GFp_chacha20_poly1305_seal, .-GFp_chacha20_poly1305_seal +.size chacha20_poly1305_seal, .-chacha20_poly1305_seal .cfi_endproc @@ -8915,4 +8916,3 @@ .cfi_endproc .size chacha20_poly1305_seal_avx2, .-chacha20_poly1305_seal_avx2 #endif -.section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_x86_64-macosx.S temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_x86_64-macosx.S --- temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_x86_64-macosx.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_x86_64-macosx.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,18 +1,15 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__APPLE__) .text chacha20_poly1305_constants: +.section __DATA,__const .p2align 6 L$chacha20_consts: .byte 'e','x','p','a','n','d',' ','3','2','-','b','y','t','e',' ','k' @@ -50,6 +47,7 @@ .byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00 .byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00 .byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff +.text .p2align 6 @@ -105,7 +103,7 @@ adcq %r9,%r11 adcq $0,%r12 - .byte 0xf3,0xc3 + ret L$hash_ad_loop: cmpq $16,%r8 @@ -214,16 +212,17 @@ L$hash_ad_done: - .byte 0xf3,0xc3 + ret -.globl _GFp_chacha20_poly1305_open -.private_extern _GFp_chacha20_poly1305_open +.globl _chacha20_poly1305_open +.private_extern _chacha20_poly1305_open .p2align 6 -_GFp_chacha20_poly1305_open: +_chacha20_poly1305_open: +_CET_ENDBR pushq %rbp pushq %rbx @@ -250,7 +249,7 @@ movq %r8,0+0+32(%rbp) movq %rbx,8+0+32(%rbp) - movl _GFp_ia32cap_P+8(%rip),%eax + movl _OPENSSL_ia32cap_P+8(%rip),%eax andl $288,%eax xorl $288,%eax jz chacha20_poly1305_open_avx2 @@ -1848,7 +1847,7 @@ popq %rbp - .byte 0xf3,0xc3 + ret L$open_sse_128: @@ -2088,12 +2087,14 @@ -.globl _GFp_chacha20_poly1305_seal -.private_extern _GFp_chacha20_poly1305_seal + +.globl _chacha20_poly1305_seal +.private_extern _chacha20_poly1305_seal .p2align 6 -_GFp_chacha20_poly1305_seal: +_chacha20_poly1305_seal: +_CET_ENDBR pushq %rbp pushq %rbx @@ -2121,7 +2122,7 @@ movq %rbx,8+0+32(%rbp) movq %rdx,%rbx - movl _GFp_ia32cap_P+8(%rip),%eax + movl _OPENSSL_ia32cap_P+8(%rip),%eax andl $288,%eax xorl $288,%eax jz chacha20_poly1305_seal_avx2 @@ -3898,7 +3899,7 @@ popq %rbp - .byte 0xf3,0xc3 + ret L$seal_sse_128: Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_x86_64-nasm.obj and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/pregenerated/chacha20_poly1305_x86_64-nasm.obj differ diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv4-ios32.S temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv4-ios32.S --- temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv4-ios32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv4-ios32.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,1492 +0,0 @@ -// This file is generated from a similarly-named Perl script in the BoringSSL -// source tree. Do not edit by hand. - -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif - -#if !defined(OPENSSL_NO_ASM) -#include - -@ Silence ARMv8 deprecated IT instruction warnings. This file is used by both -@ ARMv7 and ARMv8 processors and does not use ARMv8 instructions. - - -.text -#if defined(__thumb2__) || defined(__clang__) -.syntax unified -#endif -#if defined(__thumb2__) -.thumb -#else -.code 32 -#endif - -#if defined(__thumb2__) || defined(__clang__) -#define ldrhsb ldrbhs -#endif - -.align 5 -Lsigma: -.long 0x61707865,0x3320646e,0x79622d32,0x6b206574 @ endian-neutral -Lone: -.long 1,0,0,0 -#if __ARM_MAX_ARCH__>=7 - -.private_extern _GFp_armcap_P -LOPENSSL_armcap: -.word _GFp_armcap_P-LChaCha20_ctr32 -#else -.word -1 -#endif - -.globl _GFp_ChaCha20_ctr32 -.private_extern _GFp_ChaCha20_ctr32 -#ifdef __thumb2__ -.thumb_func _GFp_ChaCha20_ctr32 -#endif -.align 5 -_GFp_ChaCha20_ctr32: -LChaCha20_ctr32: - ldr r12,[sp,#0] @ pull pointer to counter and nonce - stmdb sp!,{r0,r1,r2,r4-r11,lr} -#if __ARM_ARCH__<7 && !defined(__thumb2__) - sub r14,pc,#16 @ ChaCha20_ctr32 -#else - adr r14,LChaCha20_ctr32 -#endif - cmp r2,#0 @ len==0? -#ifdef __thumb2__ - itt eq -#endif - addeq sp,sp,#4*3 - beq Lno_data -#if __ARM_MAX_ARCH__>=7 - cmp r2,#192 @ test len - bls Lshort - ldr r4,[r14,#-32] - ldr r4,[r14,r4] -# ifdef __APPLE__ - ldr r4,[r4] -# endif - tst r4,#ARMV7_NEON - bne LChaCha20_neon -Lshort: -#endif - ldmia r12,{r4,r5,r6,r7} @ load counter and nonce - sub sp,sp,#4*(16) @ off-load area - sub r14,r14,#64 @ Lsigma - stmdb sp!,{r4,r5,r6,r7} @ copy counter and nonce - ldmia r3,{r4,r5,r6,r7,r8,r9,r10,r11} @ load key - ldmia r14,{r0,r1,r2,r3} @ load sigma - stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11} @ copy key - stmdb sp!,{r0,r1,r2,r3} @ copy sigma - str r10,[sp,#4*(16+10)] @ off-load "rx" - str r11,[sp,#4*(16+11)] @ off-load "rx" - b Loop_outer_enter - -.align 4 -Loop_outer: - ldmia sp,{r0,r1,r2,r3,r4,r5,r6,r7,r8,r9} @ load key material - str r11,[sp,#4*(32+2)] @ save len - str r12, [sp,#4*(32+1)] @ save inp - str r14, [sp,#4*(32+0)] @ save out -Loop_outer_enter: - ldr r11, [sp,#4*(15)] - ldr r12,[sp,#4*(12)] @ modulo-scheduled load - ldr r10, [sp,#4*(13)] - ldr r14,[sp,#4*(14)] - str r11, [sp,#4*(16+15)] - mov r11,#10 - b Loop - -.align 4 -Loop: - subs r11,r11,#1 - add r0,r0,r4 - mov r12,r12,ror#16 - add r1,r1,r5 - mov r10,r10,ror#16 - eor r12,r12,r0,ror#16 - eor r10,r10,r1,ror#16 - add r8,r8,r12 - mov r4,r4,ror#20 - add r9,r9,r10 - mov r5,r5,ror#20 - eor r4,r4,r8,ror#20 - eor r5,r5,r9,ror#20 - add r0,r0,r4 - mov r12,r12,ror#24 - add r1,r1,r5 - mov r10,r10,ror#24 - eor r12,r12,r0,ror#24 - eor r10,r10,r1,ror#24 - add r8,r8,r12 - mov r4,r4,ror#25 - add r9,r9,r10 - mov r5,r5,ror#25 - str r10,[sp,#4*(16+13)] - ldr r10,[sp,#4*(16+15)] - eor r4,r4,r8,ror#25 - eor r5,r5,r9,ror#25 - str r8,[sp,#4*(16+8)] - ldr r8,[sp,#4*(16+10)] - add r2,r2,r6 - mov r14,r14,ror#16 - str r9,[sp,#4*(16+9)] - ldr r9,[sp,#4*(16+11)] - add r3,r3,r7 - mov r10,r10,ror#16 - eor r14,r14,r2,ror#16 - eor r10,r10,r3,ror#16 - add r8,r8,r14 - mov r6,r6,ror#20 - add r9,r9,r10 - mov r7,r7,ror#20 - eor r6,r6,r8,ror#20 - eor r7,r7,r9,ror#20 - add r2,r2,r6 - mov r14,r14,ror#24 - add r3,r3,r7 - mov r10,r10,ror#24 - eor r14,r14,r2,ror#24 - eor r10,r10,r3,ror#24 - add r8,r8,r14 - mov r6,r6,ror#25 - add r9,r9,r10 - mov r7,r7,ror#25 - eor r6,r6,r8,ror#25 - eor r7,r7,r9,ror#25 - add r0,r0,r5 - mov r10,r10,ror#16 - add r1,r1,r6 - mov r12,r12,ror#16 - eor r10,r10,r0,ror#16 - eor r12,r12,r1,ror#16 - add r8,r8,r10 - mov r5,r5,ror#20 - add r9,r9,r12 - mov r6,r6,ror#20 - eor r5,r5,r8,ror#20 - eor r6,r6,r9,ror#20 - add r0,r0,r5 - mov r10,r10,ror#24 - add r1,r1,r6 - mov r12,r12,ror#24 - eor r10,r10,r0,ror#24 - eor r12,r12,r1,ror#24 - add r8,r8,r10 - mov r5,r5,ror#25 - str r10,[sp,#4*(16+15)] - ldr r10,[sp,#4*(16+13)] - add r9,r9,r12 - mov r6,r6,ror#25 - eor r5,r5,r8,ror#25 - eor r6,r6,r9,ror#25 - str r8,[sp,#4*(16+10)] - ldr r8,[sp,#4*(16+8)] - add r2,r2,r7 - mov r10,r10,ror#16 - str r9,[sp,#4*(16+11)] - ldr r9,[sp,#4*(16+9)] - add r3,r3,r4 - mov r14,r14,ror#16 - eor r10,r10,r2,ror#16 - eor r14,r14,r3,ror#16 - add r8,r8,r10 - mov r7,r7,ror#20 - add r9,r9,r14 - mov r4,r4,ror#20 - eor r7,r7,r8,ror#20 - eor r4,r4,r9,ror#20 - add r2,r2,r7 - mov r10,r10,ror#24 - add r3,r3,r4 - mov r14,r14,ror#24 - eor r10,r10,r2,ror#24 - eor r14,r14,r3,ror#24 - add r8,r8,r10 - mov r7,r7,ror#25 - add r9,r9,r14 - mov r4,r4,ror#25 - eor r7,r7,r8,ror#25 - eor r4,r4,r9,ror#25 - bne Loop - - ldr r11,[sp,#4*(32+2)] @ load len - - str r8, [sp,#4*(16+8)] @ modulo-scheduled store - str r9, [sp,#4*(16+9)] - str r12,[sp,#4*(16+12)] - str r10, [sp,#4*(16+13)] - str r14,[sp,#4*(16+14)] - - @ at this point we have first half of 512-bit result in - @ rx and second half at sp+4*(16+8) - - cmp r11,#64 @ done yet? -#ifdef __thumb2__ - itete lo -#endif - addlo r12,sp,#4*(0) @ shortcut or ... - ldrhs r12,[sp,#4*(32+1)] @ ... load inp - addlo r14,sp,#4*(0) @ shortcut or ... - ldrhs r14,[sp,#4*(32+0)] @ ... load out - - ldr r8,[sp,#4*(0)] @ load key material - ldr r9,[sp,#4*(1)] - -#if __ARM_ARCH__>=6 || !defined(__ARMEB__) -# if __ARM_ARCH__<7 - orr r10,r12,r14 - tst r10,#3 @ are input and output aligned? - ldr r10,[sp,#4*(2)] - bne Lunaligned - cmp r11,#64 @ restore flags -# else - ldr r10,[sp,#4*(2)] -# endif - ldr r11,[sp,#4*(3)] - - add r0,r0,r8 @ accumulate key material - add r1,r1,r9 -# ifdef __thumb2__ - itt hs -# endif - ldrhs r8,[r12],#16 @ load input - ldrhs r9,[r12,#-12] - - add r2,r2,r10 - add r3,r3,r11 -# ifdef __thumb2__ - itt hs -# endif - ldrhs r10,[r12,#-8] - ldrhs r11,[r12,#-4] -# if __ARM_ARCH__>=6 && defined(__ARMEB__) - rev r0,r0 - rev r1,r1 - rev r2,r2 - rev r3,r3 -# endif -# ifdef __thumb2__ - itt hs -# endif - eorhs r0,r0,r8 @ xor with input - eorhs r1,r1,r9 - add r8,sp,#4*(4) - str r0,[r14],#16 @ store output -# ifdef __thumb2__ - itt hs -# endif - eorhs r2,r2,r10 - eorhs r3,r3,r11 - ldmia r8,{r8,r9,r10,r11} @ load key material - str r1,[r14,#-12] - str r2,[r14,#-8] - str r3,[r14,#-4] - - add r4,r4,r8 @ accumulate key material - add r5,r5,r9 -# ifdef __thumb2__ - itt hs -# endif - ldrhs r8,[r12],#16 @ load input - ldrhs r9,[r12,#-12] - add r6,r6,r10 - add r7,r7,r11 -# ifdef __thumb2__ - itt hs -# endif - ldrhs r10,[r12,#-8] - ldrhs r11,[r12,#-4] -# if __ARM_ARCH__>=6 && defined(__ARMEB__) - rev r4,r4 - rev r5,r5 - rev r6,r6 - rev r7,r7 -# endif -# ifdef __thumb2__ - itt hs -# endif - eorhs r4,r4,r8 - eorhs r5,r5,r9 - add r8,sp,#4*(8) - str r4,[r14],#16 @ store output -# ifdef __thumb2__ - itt hs -# endif - eorhs r6,r6,r10 - eorhs r7,r7,r11 - str r5,[r14,#-12] - ldmia r8,{r8,r9,r10,r11} @ load key material - str r6,[r14,#-8] - add r0,sp,#4*(16+8) - str r7,[r14,#-4] - - ldmia r0,{r0,r1,r2,r3,r4,r5,r6,r7} @ load second half - - add r0,r0,r8 @ accumulate key material - add r1,r1,r9 -# ifdef __thumb2__ - itt hs -# endif - ldrhs r8,[r12],#16 @ load input - ldrhs r9,[r12,#-12] -# ifdef __thumb2__ - itt hi -# endif - strhi r10,[sp,#4*(16+10)] @ copy "rx" while at it - strhi r11,[sp,#4*(16+11)] @ copy "rx" while at it - add r2,r2,r10 - add r3,r3,r11 -# ifdef __thumb2__ - itt hs -# endif - ldrhs r10,[r12,#-8] - ldrhs r11,[r12,#-4] -# if __ARM_ARCH__>=6 && defined(__ARMEB__) - rev r0,r0 - rev r1,r1 - rev r2,r2 - rev r3,r3 -# endif -# ifdef __thumb2__ - itt hs -# endif - eorhs r0,r0,r8 - eorhs r1,r1,r9 - add r8,sp,#4*(12) - str r0,[r14],#16 @ store output -# ifdef __thumb2__ - itt hs -# endif - eorhs r2,r2,r10 - eorhs r3,r3,r11 - str r1,[r14,#-12] - ldmia r8,{r8,r9,r10,r11} @ load key material - str r2,[r14,#-8] - str r3,[r14,#-4] - - add r4,r4,r8 @ accumulate key material - add r5,r5,r9 -# ifdef __thumb2__ - itt hi -# endif - addhi r8,r8,#1 @ next counter value - strhi r8,[sp,#4*(12)] @ save next counter value -# ifdef __thumb2__ - itt hs -# endif - ldrhs r8,[r12],#16 @ load input - ldrhs r9,[r12,#-12] - add r6,r6,r10 - add r7,r7,r11 -# ifdef __thumb2__ - itt hs -# endif - ldrhs r10,[r12,#-8] - ldrhs r11,[r12,#-4] -# if __ARM_ARCH__>=6 && defined(__ARMEB__) - rev r4,r4 - rev r5,r5 - rev r6,r6 - rev r7,r7 -# endif -# ifdef __thumb2__ - itt hs -# endif - eorhs r4,r4,r8 - eorhs r5,r5,r9 -# ifdef __thumb2__ - it ne -# endif - ldrne r8,[sp,#4*(32+2)] @ re-load len -# ifdef __thumb2__ - itt hs -# endif - eorhs r6,r6,r10 - eorhs r7,r7,r11 - str r4,[r14],#16 @ store output - str r5,[r14,#-12] -# ifdef __thumb2__ - it hs -# endif - subhs r11,r8,#64 @ len-=64 - str r6,[r14,#-8] - str r7,[r14,#-4] - bhi Loop_outer - - beq Ldone -# if __ARM_ARCH__<7 - b Ltail - -.align 4 -Lunaligned:@ unaligned endian-neutral path - cmp r11,#64 @ restore flags -# endif -#endif -#if __ARM_ARCH__<7 - ldr r11,[sp,#4*(3)] - add r0,r0,r8 @ accumulate key material - add r1,r1,r9 - add r2,r2,r10 -# ifdef __thumb2__ - itete lo -# endif - eorlo r8,r8,r8 @ zero or ... - ldrhsb r8,[r12],#16 @ ... load input - eorlo r9,r9,r9 - ldrhsb r9,[r12,#-12] - - add r3,r3,r11 -# ifdef __thumb2__ - itete lo -# endif - eorlo r10,r10,r10 - ldrhsb r10,[r12,#-8] - eorlo r11,r11,r11 - ldrhsb r11,[r12,#-4] - - eor r0,r8,r0 @ xor with input (or zero) - eor r1,r9,r1 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r8,[r12,#-15] @ load more input - ldrhsb r9,[r12,#-11] - eor r2,r10,r2 - strb r0,[r14],#16 @ store output - eor r3,r11,r3 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r10,[r12,#-7] - ldrhsb r11,[r12,#-3] - strb r1,[r14,#-12] - eor r0,r8,r0,lsr#8 - strb r2,[r14,#-8] - eor r1,r9,r1,lsr#8 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r8,[r12,#-14] @ load more input - ldrhsb r9,[r12,#-10] - strb r3,[r14,#-4] - eor r2,r10,r2,lsr#8 - strb r0,[r14,#-15] - eor r3,r11,r3,lsr#8 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r10,[r12,#-6] - ldrhsb r11,[r12,#-2] - strb r1,[r14,#-11] - eor r0,r8,r0,lsr#8 - strb r2,[r14,#-7] - eor r1,r9,r1,lsr#8 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r8,[r12,#-13] @ load more input - ldrhsb r9,[r12,#-9] - strb r3,[r14,#-3] - eor r2,r10,r2,lsr#8 - strb r0,[r14,#-14] - eor r3,r11,r3,lsr#8 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r10,[r12,#-5] - ldrhsb r11,[r12,#-1] - strb r1,[r14,#-10] - strb r2,[r14,#-6] - eor r0,r8,r0,lsr#8 - strb r3,[r14,#-2] - eor r1,r9,r1,lsr#8 - strb r0,[r14,#-13] - eor r2,r10,r2,lsr#8 - strb r1,[r14,#-9] - eor r3,r11,r3,lsr#8 - strb r2,[r14,#-5] - strb r3,[r14,#-1] - add r8,sp,#4*(4+0) - ldmia r8,{r8,r9,r10,r11} @ load key material - add r0,sp,#4*(16+8) - add r4,r4,r8 @ accumulate key material - add r5,r5,r9 - add r6,r6,r10 -# ifdef __thumb2__ - itete lo -# endif - eorlo r8,r8,r8 @ zero or ... - ldrhsb r8,[r12],#16 @ ... load input - eorlo r9,r9,r9 - ldrhsb r9,[r12,#-12] - - add r7,r7,r11 -# ifdef __thumb2__ - itete lo -# endif - eorlo r10,r10,r10 - ldrhsb r10,[r12,#-8] - eorlo r11,r11,r11 - ldrhsb r11,[r12,#-4] - - eor r4,r8,r4 @ xor with input (or zero) - eor r5,r9,r5 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r8,[r12,#-15] @ load more input - ldrhsb r9,[r12,#-11] - eor r6,r10,r6 - strb r4,[r14],#16 @ store output - eor r7,r11,r7 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r10,[r12,#-7] - ldrhsb r11,[r12,#-3] - strb r5,[r14,#-12] - eor r4,r8,r4,lsr#8 - strb r6,[r14,#-8] - eor r5,r9,r5,lsr#8 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r8,[r12,#-14] @ load more input - ldrhsb r9,[r12,#-10] - strb r7,[r14,#-4] - eor r6,r10,r6,lsr#8 - strb r4,[r14,#-15] - eor r7,r11,r7,lsr#8 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r10,[r12,#-6] - ldrhsb r11,[r12,#-2] - strb r5,[r14,#-11] - eor r4,r8,r4,lsr#8 - strb r6,[r14,#-7] - eor r5,r9,r5,lsr#8 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r8,[r12,#-13] @ load more input - ldrhsb r9,[r12,#-9] - strb r7,[r14,#-3] - eor r6,r10,r6,lsr#8 - strb r4,[r14,#-14] - eor r7,r11,r7,lsr#8 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r10,[r12,#-5] - ldrhsb r11,[r12,#-1] - strb r5,[r14,#-10] - strb r6,[r14,#-6] - eor r4,r8,r4,lsr#8 - strb r7,[r14,#-2] - eor r5,r9,r5,lsr#8 - strb r4,[r14,#-13] - eor r6,r10,r6,lsr#8 - strb r5,[r14,#-9] - eor r7,r11,r7,lsr#8 - strb r6,[r14,#-5] - strb r7,[r14,#-1] - add r8,sp,#4*(4+4) - ldmia r8,{r8,r9,r10,r11} @ load key material - ldmia r0,{r0,r1,r2,r3,r4,r5,r6,r7} @ load second half -# ifdef __thumb2__ - itt hi -# endif - strhi r10,[sp,#4*(16+10)] @ copy "rx" - strhi r11,[sp,#4*(16+11)] @ copy "rx" - add r0,r0,r8 @ accumulate key material - add r1,r1,r9 - add r2,r2,r10 -# ifdef __thumb2__ - itete lo -# endif - eorlo r8,r8,r8 @ zero or ... - ldrhsb r8,[r12],#16 @ ... load input - eorlo r9,r9,r9 - ldrhsb r9,[r12,#-12] - - add r3,r3,r11 -# ifdef __thumb2__ - itete lo -# endif - eorlo r10,r10,r10 - ldrhsb r10,[r12,#-8] - eorlo r11,r11,r11 - ldrhsb r11,[r12,#-4] - - eor r0,r8,r0 @ xor with input (or zero) - eor r1,r9,r1 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r8,[r12,#-15] @ load more input - ldrhsb r9,[r12,#-11] - eor r2,r10,r2 - strb r0,[r14],#16 @ store output - eor r3,r11,r3 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r10,[r12,#-7] - ldrhsb r11,[r12,#-3] - strb r1,[r14,#-12] - eor r0,r8,r0,lsr#8 - strb r2,[r14,#-8] - eor r1,r9,r1,lsr#8 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r8,[r12,#-14] @ load more input - ldrhsb r9,[r12,#-10] - strb r3,[r14,#-4] - eor r2,r10,r2,lsr#8 - strb r0,[r14,#-15] - eor r3,r11,r3,lsr#8 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r10,[r12,#-6] - ldrhsb r11,[r12,#-2] - strb r1,[r14,#-11] - eor r0,r8,r0,lsr#8 - strb r2,[r14,#-7] - eor r1,r9,r1,lsr#8 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r8,[r12,#-13] @ load more input - ldrhsb r9,[r12,#-9] - strb r3,[r14,#-3] - eor r2,r10,r2,lsr#8 - strb r0,[r14,#-14] - eor r3,r11,r3,lsr#8 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r10,[r12,#-5] - ldrhsb r11,[r12,#-1] - strb r1,[r14,#-10] - strb r2,[r14,#-6] - eor r0,r8,r0,lsr#8 - strb r3,[r14,#-2] - eor r1,r9,r1,lsr#8 - strb r0,[r14,#-13] - eor r2,r10,r2,lsr#8 - strb r1,[r14,#-9] - eor r3,r11,r3,lsr#8 - strb r2,[r14,#-5] - strb r3,[r14,#-1] - add r8,sp,#4*(4+8) - ldmia r8,{r8,r9,r10,r11} @ load key material - add r4,r4,r8 @ accumulate key material -# ifdef __thumb2__ - itt hi -# endif - addhi r8,r8,#1 @ next counter value - strhi r8,[sp,#4*(12)] @ save next counter value - add r5,r5,r9 - add r6,r6,r10 -# ifdef __thumb2__ - itete lo -# endif - eorlo r8,r8,r8 @ zero or ... - ldrhsb r8,[r12],#16 @ ... load input - eorlo r9,r9,r9 - ldrhsb r9,[r12,#-12] - - add r7,r7,r11 -# ifdef __thumb2__ - itete lo -# endif - eorlo r10,r10,r10 - ldrhsb r10,[r12,#-8] - eorlo r11,r11,r11 - ldrhsb r11,[r12,#-4] - - eor r4,r8,r4 @ xor with input (or zero) - eor r5,r9,r5 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r8,[r12,#-15] @ load more input - ldrhsb r9,[r12,#-11] - eor r6,r10,r6 - strb r4,[r14],#16 @ store output - eor r7,r11,r7 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r10,[r12,#-7] - ldrhsb r11,[r12,#-3] - strb r5,[r14,#-12] - eor r4,r8,r4,lsr#8 - strb r6,[r14,#-8] - eor r5,r9,r5,lsr#8 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r8,[r12,#-14] @ load more input - ldrhsb r9,[r12,#-10] - strb r7,[r14,#-4] - eor r6,r10,r6,lsr#8 - strb r4,[r14,#-15] - eor r7,r11,r7,lsr#8 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r10,[r12,#-6] - ldrhsb r11,[r12,#-2] - strb r5,[r14,#-11] - eor r4,r8,r4,lsr#8 - strb r6,[r14,#-7] - eor r5,r9,r5,lsr#8 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r8,[r12,#-13] @ load more input - ldrhsb r9,[r12,#-9] - strb r7,[r14,#-3] - eor r6,r10,r6,lsr#8 - strb r4,[r14,#-14] - eor r7,r11,r7,lsr#8 -# ifdef __thumb2__ - itt hs -# endif - ldrhsb r10,[r12,#-5] - ldrhsb r11,[r12,#-1] - strb r5,[r14,#-10] - strb r6,[r14,#-6] - eor r4,r8,r4,lsr#8 - strb r7,[r14,#-2] - eor r5,r9,r5,lsr#8 - strb r4,[r14,#-13] - eor r6,r10,r6,lsr#8 - strb r5,[r14,#-9] - eor r7,r11,r7,lsr#8 - strb r6,[r14,#-5] - strb r7,[r14,#-1] -# ifdef __thumb2__ - it ne -# endif - ldrne r8,[sp,#4*(32+2)] @ re-load len -# ifdef __thumb2__ - it hs -# endif - subhs r11,r8,#64 @ len-=64 - bhi Loop_outer - - beq Ldone -#endif - -Ltail: - ldr r12,[sp,#4*(32+1)] @ load inp - add r9,sp,#4*(0) - ldr r14,[sp,#4*(32+0)] @ load out - -Loop_tail: - ldrb r10,[r9],#1 @ read buffer on stack - ldrb r11,[r12],#1 @ read input - subs r8,r8,#1 - eor r11,r11,r10 - strb r11,[r14],#1 @ store output - bne Loop_tail - -Ldone: - add sp,sp,#4*(32+3) -Lno_data: - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,pc} - -#if __ARM_MAX_ARCH__>=7 - - - -#ifdef __thumb2__ -.thumb_func ChaCha20_neon -#endif -.align 5 -ChaCha20_neon: - ldr r12,[sp,#0] @ pull pointer to counter and nonce - stmdb sp!,{r0,r1,r2,r4-r11,lr} -LChaCha20_neon: - adr r14,Lsigma - vstmdb sp!,{d8,d9,d10,d11,d12,d13,d14,d15} @ ABI spec says so - stmdb sp!,{r0,r1,r2,r3} - - vld1.32 {q1,q2},[r3] @ load key - ldmia r3,{r4,r5,r6,r7,r8,r9,r10,r11} @ load key - - sub sp,sp,#4*(16+16) - vld1.32 {q3},[r12] @ load counter and nonce - add r12,sp,#4*8 - ldmia r14,{r0,r1,r2,r3} @ load sigma - vld1.32 {q0},[r14]! @ load sigma - vld1.32 {q12},[r14] @ one - vst1.32 {q2,q3},[r12] @ copy 1/2key|counter|nonce - vst1.32 {q0,q1},[sp] @ copy sigma|1/2key - - str r10,[sp,#4*(16+10)] @ off-load "rx" - str r11,[sp,#4*(16+11)] @ off-load "rx" - vshl.i32 d26,d24,#1 @ two - vstr d24,[sp,#4*(16+0)] - vshl.i32 d28,d24,#2 @ four - vstr d26,[sp,#4*(16+2)] - vmov q4,q0 - vstr d28,[sp,#4*(16+4)] - vmov q8,q0 - vmov q5,q1 - vmov q9,q1 - b Loop_neon_enter - -.align 4 -Loop_neon_outer: - ldmia sp,{r0,r1,r2,r3,r4,r5,r6,r7,r8,r9} @ load key material - cmp r11,#64*2 @ if len<=64*2 - bls Lbreak_neon @ switch to integer-only - vmov q4,q0 - str r11,[sp,#4*(32+2)] @ save len - vmov q8,q0 - str r12, [sp,#4*(32+1)] @ save inp - vmov q5,q1 - str r14, [sp,#4*(32+0)] @ save out - vmov q9,q1 -Loop_neon_enter: - ldr r11, [sp,#4*(15)] - vadd.i32 q7,q3,q12 @ counter+1 - ldr r12,[sp,#4*(12)] @ modulo-scheduled load - vmov q6,q2 - ldr r10, [sp,#4*(13)] - vmov q10,q2 - ldr r14,[sp,#4*(14)] - vadd.i32 q11,q7,q12 @ counter+2 - str r11, [sp,#4*(16+15)] - mov r11,#10 - add r12,r12,#3 @ counter+3 - b Loop_neon - -.align 4 -Loop_neon: - subs r11,r11,#1 - vadd.i32 q0,q0,q1 - add r0,r0,r4 - vadd.i32 q4,q4,q5 - mov r12,r12,ror#16 - vadd.i32 q8,q8,q9 - add r1,r1,r5 - veor q3,q3,q0 - mov r10,r10,ror#16 - veor q7,q7,q4 - eor r12,r12,r0,ror#16 - veor q11,q11,q8 - eor r10,r10,r1,ror#16 - vrev32.16 q3,q3 - add r8,r8,r12 - vrev32.16 q7,q7 - mov r4,r4,ror#20 - vrev32.16 q11,q11 - add r9,r9,r10 - vadd.i32 q2,q2,q3 - mov r5,r5,ror#20 - vadd.i32 q6,q6,q7 - eor r4,r4,r8,ror#20 - vadd.i32 q10,q10,q11 - eor r5,r5,r9,ror#20 - veor q12,q1,q2 - add r0,r0,r4 - veor q13,q5,q6 - mov r12,r12,ror#24 - veor q14,q9,q10 - add r1,r1,r5 - vshr.u32 q1,q12,#20 - mov r10,r10,ror#24 - vshr.u32 q5,q13,#20 - eor r12,r12,r0,ror#24 - vshr.u32 q9,q14,#20 - eor r10,r10,r1,ror#24 - vsli.32 q1,q12,#12 - add r8,r8,r12 - vsli.32 q5,q13,#12 - mov r4,r4,ror#25 - vsli.32 q9,q14,#12 - add r9,r9,r10 - vadd.i32 q0,q0,q1 - mov r5,r5,ror#25 - vadd.i32 q4,q4,q5 - str r10,[sp,#4*(16+13)] - vadd.i32 q8,q8,q9 - ldr r10,[sp,#4*(16+15)] - veor q12,q3,q0 - eor r4,r4,r8,ror#25 - veor q13,q7,q4 - eor r5,r5,r9,ror#25 - veor q14,q11,q8 - str r8,[sp,#4*(16+8)] - vshr.u32 q3,q12,#24 - ldr r8,[sp,#4*(16+10)] - vshr.u32 q7,q13,#24 - add r2,r2,r6 - vshr.u32 q11,q14,#24 - mov r14,r14,ror#16 - vsli.32 q3,q12,#8 - str r9,[sp,#4*(16+9)] - vsli.32 q7,q13,#8 - ldr r9,[sp,#4*(16+11)] - vsli.32 q11,q14,#8 - add r3,r3,r7 - vadd.i32 q2,q2,q3 - mov r10,r10,ror#16 - vadd.i32 q6,q6,q7 - eor r14,r14,r2,ror#16 - vadd.i32 q10,q10,q11 - eor r10,r10,r3,ror#16 - veor q12,q1,q2 - add r8,r8,r14 - veor q13,q5,q6 - mov r6,r6,ror#20 - veor q14,q9,q10 - add r9,r9,r10 - vshr.u32 q1,q12,#25 - mov r7,r7,ror#20 - vshr.u32 q5,q13,#25 - eor r6,r6,r8,ror#20 - vshr.u32 q9,q14,#25 - eor r7,r7,r9,ror#20 - vsli.32 q1,q12,#7 - add r2,r2,r6 - vsli.32 q5,q13,#7 - mov r14,r14,ror#24 - vsli.32 q9,q14,#7 - add r3,r3,r7 - vext.8 q2,q2,q2,#8 - mov r10,r10,ror#24 - vext.8 q6,q6,q6,#8 - eor r14,r14,r2,ror#24 - vext.8 q10,q10,q10,#8 - eor r10,r10,r3,ror#24 - vext.8 q1,q1,q1,#4 - add r8,r8,r14 - vext.8 q5,q5,q5,#4 - mov r6,r6,ror#25 - vext.8 q9,q9,q9,#4 - add r9,r9,r10 - vext.8 q3,q3,q3,#12 - mov r7,r7,ror#25 - vext.8 q7,q7,q7,#12 - eor r6,r6,r8,ror#25 - vext.8 q11,q11,q11,#12 - eor r7,r7,r9,ror#25 - vadd.i32 q0,q0,q1 - add r0,r0,r5 - vadd.i32 q4,q4,q5 - mov r10,r10,ror#16 - vadd.i32 q8,q8,q9 - add r1,r1,r6 - veor q3,q3,q0 - mov r12,r12,ror#16 - veor q7,q7,q4 - eor r10,r10,r0,ror#16 - veor q11,q11,q8 - eor r12,r12,r1,ror#16 - vrev32.16 q3,q3 - add r8,r8,r10 - vrev32.16 q7,q7 - mov r5,r5,ror#20 - vrev32.16 q11,q11 - add r9,r9,r12 - vadd.i32 q2,q2,q3 - mov r6,r6,ror#20 - vadd.i32 q6,q6,q7 - eor r5,r5,r8,ror#20 - vadd.i32 q10,q10,q11 - eor r6,r6,r9,ror#20 - veor q12,q1,q2 - add r0,r0,r5 - veor q13,q5,q6 - mov r10,r10,ror#24 - veor q14,q9,q10 - add r1,r1,r6 - vshr.u32 q1,q12,#20 - mov r12,r12,ror#24 - vshr.u32 q5,q13,#20 - eor r10,r10,r0,ror#24 - vshr.u32 q9,q14,#20 - eor r12,r12,r1,ror#24 - vsli.32 q1,q12,#12 - add r8,r8,r10 - vsli.32 q5,q13,#12 - mov r5,r5,ror#25 - vsli.32 q9,q14,#12 - str r10,[sp,#4*(16+15)] - vadd.i32 q0,q0,q1 - ldr r10,[sp,#4*(16+13)] - vadd.i32 q4,q4,q5 - add r9,r9,r12 - vadd.i32 q8,q8,q9 - mov r6,r6,ror#25 - veor q12,q3,q0 - eor r5,r5,r8,ror#25 - veor q13,q7,q4 - eor r6,r6,r9,ror#25 - veor q14,q11,q8 - str r8,[sp,#4*(16+10)] - vshr.u32 q3,q12,#24 - ldr r8,[sp,#4*(16+8)] - vshr.u32 q7,q13,#24 - add r2,r2,r7 - vshr.u32 q11,q14,#24 - mov r10,r10,ror#16 - vsli.32 q3,q12,#8 - str r9,[sp,#4*(16+11)] - vsli.32 q7,q13,#8 - ldr r9,[sp,#4*(16+9)] - vsli.32 q11,q14,#8 - add r3,r3,r4 - vadd.i32 q2,q2,q3 - mov r14,r14,ror#16 - vadd.i32 q6,q6,q7 - eor r10,r10,r2,ror#16 - vadd.i32 q10,q10,q11 - eor r14,r14,r3,ror#16 - veor q12,q1,q2 - add r8,r8,r10 - veor q13,q5,q6 - mov r7,r7,ror#20 - veor q14,q9,q10 - add r9,r9,r14 - vshr.u32 q1,q12,#25 - mov r4,r4,ror#20 - vshr.u32 q5,q13,#25 - eor r7,r7,r8,ror#20 - vshr.u32 q9,q14,#25 - eor r4,r4,r9,ror#20 - vsli.32 q1,q12,#7 - add r2,r2,r7 - vsli.32 q5,q13,#7 - mov r10,r10,ror#24 - vsli.32 q9,q14,#7 - add r3,r3,r4 - vext.8 q2,q2,q2,#8 - mov r14,r14,ror#24 - vext.8 q6,q6,q6,#8 - eor r10,r10,r2,ror#24 - vext.8 q10,q10,q10,#8 - eor r14,r14,r3,ror#24 - vext.8 q1,q1,q1,#12 - add r8,r8,r10 - vext.8 q5,q5,q5,#12 - mov r7,r7,ror#25 - vext.8 q9,q9,q9,#12 - add r9,r9,r14 - vext.8 q3,q3,q3,#4 - mov r4,r4,ror#25 - vext.8 q7,q7,q7,#4 - eor r7,r7,r8,ror#25 - vext.8 q11,q11,q11,#4 - eor r4,r4,r9,ror#25 - bne Loop_neon - - add r11,sp,#32 - vld1.32 {q12,q13},[sp] @ load key material - vld1.32 {q14,q15},[r11] - - ldr r11,[sp,#4*(32+2)] @ load len - - str r8, [sp,#4*(16+8)] @ modulo-scheduled store - str r9, [sp,#4*(16+9)] - str r12,[sp,#4*(16+12)] - str r10, [sp,#4*(16+13)] - str r14,[sp,#4*(16+14)] - - @ at this point we have first half of 512-bit result in - @ rx and second half at sp+4*(16+8) - - ldr r12,[sp,#4*(32+1)] @ load inp - ldr r14,[sp,#4*(32+0)] @ load out - - vadd.i32 q0,q0,q12 @ accumulate key material - vadd.i32 q4,q4,q12 - vadd.i32 q8,q8,q12 - vldr d24,[sp,#4*(16+0)] @ one - - vadd.i32 q1,q1,q13 - vadd.i32 q5,q5,q13 - vadd.i32 q9,q9,q13 - vldr d26,[sp,#4*(16+2)] @ two - - vadd.i32 q2,q2,q14 - vadd.i32 q6,q6,q14 - vadd.i32 q10,q10,q14 - vadd.i32 d14,d14,d24 @ counter+1 - vadd.i32 d22,d22,d26 @ counter+2 - - vadd.i32 q3,q3,q15 - vadd.i32 q7,q7,q15 - vadd.i32 q11,q11,q15 - - cmp r11,#64*4 - blo Ltail_neon - - vld1.8 {q12,q13},[r12]! @ load input - mov r11,sp - vld1.8 {q14,q15},[r12]! - veor q0,q0,q12 @ xor with input - veor q1,q1,q13 - vld1.8 {q12,q13},[r12]! - veor q2,q2,q14 - veor q3,q3,q15 - vld1.8 {q14,q15},[r12]! - - veor q4,q4,q12 - vst1.8 {q0,q1},[r14]! @ store output - veor q5,q5,q13 - vld1.8 {q12,q13},[r12]! - veor q6,q6,q14 - vst1.8 {q2,q3},[r14]! - veor q7,q7,q15 - vld1.8 {q14,q15},[r12]! - - veor q8,q8,q12 - vld1.32 {q0,q1},[r11]! @ load for next iteration - veor d25,d25,d25 - vldr d24,[sp,#4*(16+4)] @ four - veor q9,q9,q13 - vld1.32 {q2,q3},[r11] - veor q10,q10,q14 - vst1.8 {q4,q5},[r14]! - veor q11,q11,q15 - vst1.8 {q6,q7},[r14]! - - vadd.i32 d6,d6,d24 @ next counter value - vldr d24,[sp,#4*(16+0)] @ one - - ldmia sp,{r8,r9,r10,r11} @ load key material - add r0,r0,r8 @ accumulate key material - ldr r8,[r12],#16 @ load input - vst1.8 {q8,q9},[r14]! - add r1,r1,r9 - ldr r9,[r12,#-12] - vst1.8 {q10,q11},[r14]! - add r2,r2,r10 - ldr r10,[r12,#-8] - add r3,r3,r11 - ldr r11,[r12,#-4] -# ifdef __ARMEB__ - rev r0,r0 - rev r1,r1 - rev r2,r2 - rev r3,r3 -# endif - eor r0,r0,r8 @ xor with input - add r8,sp,#4*(4) - eor r1,r1,r9 - str r0,[r14],#16 @ store output - eor r2,r2,r10 - str r1,[r14,#-12] - eor r3,r3,r11 - ldmia r8,{r8,r9,r10,r11} @ load key material - str r2,[r14,#-8] - str r3,[r14,#-4] - - add r4,r4,r8 @ accumulate key material - ldr r8,[r12],#16 @ load input - add r5,r5,r9 - ldr r9,[r12,#-12] - add r6,r6,r10 - ldr r10,[r12,#-8] - add r7,r7,r11 - ldr r11,[r12,#-4] -# ifdef __ARMEB__ - rev r4,r4 - rev r5,r5 - rev r6,r6 - rev r7,r7 -# endif - eor r4,r4,r8 - add r8,sp,#4*(8) - eor r5,r5,r9 - str r4,[r14],#16 @ store output - eor r6,r6,r10 - str r5,[r14,#-12] - eor r7,r7,r11 - ldmia r8,{r8,r9,r10,r11} @ load key material - str r6,[r14,#-8] - add r0,sp,#4*(16+8) - str r7,[r14,#-4] - - ldmia r0,{r0,r1,r2,r3,r4,r5,r6,r7} @ load second half - - add r0,r0,r8 @ accumulate key material - ldr r8,[r12],#16 @ load input - add r1,r1,r9 - ldr r9,[r12,#-12] -# ifdef __thumb2__ - it hi -# endif - strhi r10,[sp,#4*(16+10)] @ copy "rx" while at it - add r2,r2,r10 - ldr r10,[r12,#-8] -# ifdef __thumb2__ - it hi -# endif - strhi r11,[sp,#4*(16+11)] @ copy "rx" while at it - add r3,r3,r11 - ldr r11,[r12,#-4] -# ifdef __ARMEB__ - rev r0,r0 - rev r1,r1 - rev r2,r2 - rev r3,r3 -# endif - eor r0,r0,r8 - add r8,sp,#4*(12) - eor r1,r1,r9 - str r0,[r14],#16 @ store output - eor r2,r2,r10 - str r1,[r14,#-12] - eor r3,r3,r11 - ldmia r8,{r8,r9,r10,r11} @ load key material - str r2,[r14,#-8] - str r3,[r14,#-4] - - add r4,r4,r8 @ accumulate key material - add r8,r8,#4 @ next counter value - add r5,r5,r9 - str r8,[sp,#4*(12)] @ save next counter value - ldr r8,[r12],#16 @ load input - add r6,r6,r10 - add r4,r4,#3 @ counter+3 - ldr r9,[r12,#-12] - add r7,r7,r11 - ldr r10,[r12,#-8] - ldr r11,[r12,#-4] -# ifdef __ARMEB__ - rev r4,r4 - rev r5,r5 - rev r6,r6 - rev r7,r7 -# endif - eor r4,r4,r8 -# ifdef __thumb2__ - it hi -# endif - ldrhi r8,[sp,#4*(32+2)] @ re-load len - eor r5,r5,r9 - eor r6,r6,r10 - str r4,[r14],#16 @ store output - eor r7,r7,r11 - str r5,[r14,#-12] - sub r11,r8,#64*4 @ len-=64*4 - str r6,[r14,#-8] - str r7,[r14,#-4] - bhi Loop_neon_outer - - b Ldone_neon - -.align 4 -Lbreak_neon: - @ harmonize NEON and integer-only stack frames: load data - @ from NEON frame, but save to integer-only one; distance - @ between the two is 4*(32+4+16-32)=4*(20). - - str r11, [sp,#4*(20+32+2)] @ save len - add r11,sp,#4*(32+4) - str r12, [sp,#4*(20+32+1)] @ save inp - str r14, [sp,#4*(20+32+0)] @ save out - - ldr r12,[sp,#4*(16+10)] - ldr r14,[sp,#4*(16+11)] - vldmia r11,{d8,d9,d10,d11,d12,d13,d14,d15} @ fulfill ABI requirement - str r12,[sp,#4*(20+16+10)] @ copy "rx" - str r14,[sp,#4*(20+16+11)] @ copy "rx" - - ldr r11, [sp,#4*(15)] - ldr r12,[sp,#4*(12)] @ modulo-scheduled load - ldr r10, [sp,#4*(13)] - ldr r14,[sp,#4*(14)] - str r11, [sp,#4*(20+16+15)] - add r11,sp,#4*(20) - vst1.32 {q0,q1},[r11]! @ copy key - add sp,sp,#4*(20) @ switch frame - vst1.32 {q2,q3},[r11] - mov r11,#10 - b Loop @ go integer-only - -.align 4 -Ltail_neon: - cmp r11,#64*3 - bhs L192_or_more_neon - cmp r11,#64*2 - bhs L128_or_more_neon - cmp r11,#64*1 - bhs L64_or_more_neon - - add r8,sp,#4*(8) - vst1.8 {q0,q1},[sp] - add r10,sp,#4*(0) - vst1.8 {q2,q3},[r8] - b Loop_tail_neon - -.align 4 -L64_or_more_neon: - vld1.8 {q12,q13},[r12]! - vld1.8 {q14,q15},[r12]! - veor q0,q0,q12 - veor q1,q1,q13 - veor q2,q2,q14 - veor q3,q3,q15 - vst1.8 {q0,q1},[r14]! - vst1.8 {q2,q3},[r14]! - - beq Ldone_neon - - add r8,sp,#4*(8) - vst1.8 {q4,q5},[sp] - add r10,sp,#4*(0) - vst1.8 {q6,q7},[r8] - sub r11,r11,#64*1 @ len-=64*1 - b Loop_tail_neon - -.align 4 -L128_or_more_neon: - vld1.8 {q12,q13},[r12]! - vld1.8 {q14,q15},[r12]! - veor q0,q0,q12 - veor q1,q1,q13 - vld1.8 {q12,q13},[r12]! - veor q2,q2,q14 - veor q3,q3,q15 - vld1.8 {q14,q15},[r12]! - - veor q4,q4,q12 - veor q5,q5,q13 - vst1.8 {q0,q1},[r14]! - veor q6,q6,q14 - vst1.8 {q2,q3},[r14]! - veor q7,q7,q15 - vst1.8 {q4,q5},[r14]! - vst1.8 {q6,q7},[r14]! - - beq Ldone_neon - - add r8,sp,#4*(8) - vst1.8 {q8,q9},[sp] - add r10,sp,#4*(0) - vst1.8 {q10,q11},[r8] - sub r11,r11,#64*2 @ len-=64*2 - b Loop_tail_neon - -.align 4 -L192_or_more_neon: - vld1.8 {q12,q13},[r12]! - vld1.8 {q14,q15},[r12]! - veor q0,q0,q12 - veor q1,q1,q13 - vld1.8 {q12,q13},[r12]! - veor q2,q2,q14 - veor q3,q3,q15 - vld1.8 {q14,q15},[r12]! - - veor q4,q4,q12 - veor q5,q5,q13 - vld1.8 {q12,q13},[r12]! - veor q6,q6,q14 - vst1.8 {q0,q1},[r14]! - veor q7,q7,q15 - vld1.8 {q14,q15},[r12]! - - veor q8,q8,q12 - vst1.8 {q2,q3},[r14]! - veor q9,q9,q13 - vst1.8 {q4,q5},[r14]! - veor q10,q10,q14 - vst1.8 {q6,q7},[r14]! - veor q11,q11,q15 - vst1.8 {q8,q9},[r14]! - vst1.8 {q10,q11},[r14]! - - beq Ldone_neon - - ldmia sp,{r8,r9,r10,r11} @ load key material - add r0,r0,r8 @ accumulate key material - add r8,sp,#4*(4) - add r1,r1,r9 - add r2,r2,r10 - add r3,r3,r11 - ldmia r8,{r8,r9,r10,r11} @ load key material - - add r4,r4,r8 @ accumulate key material - add r8,sp,#4*(8) - add r5,r5,r9 - add r6,r6,r10 - add r7,r7,r11 - ldmia r8,{r8,r9,r10,r11} @ load key material -# ifdef __ARMEB__ - rev r0,r0 - rev r1,r1 - rev r2,r2 - rev r3,r3 - rev r4,r4 - rev r5,r5 - rev r6,r6 - rev r7,r7 -# endif - stmia sp,{r0,r1,r2,r3,r4,r5,r6,r7} - add r0,sp,#4*(16+8) - - ldmia r0,{r0,r1,r2,r3,r4,r5,r6,r7} @ load second half - - add r0,r0,r8 @ accumulate key material - add r8,sp,#4*(12) - add r1,r1,r9 - add r2,r2,r10 - add r3,r3,r11 - ldmia r8,{r8,r9,r10,r11} @ load key material - - add r4,r4,r8 @ accumulate key material - add r8,sp,#4*(8) - add r5,r5,r9 - add r4,r4,#3 @ counter+3 - add r6,r6,r10 - add r7,r7,r11 - ldr r11,[sp,#4*(32+2)] @ re-load len -# ifdef __ARMEB__ - rev r0,r0 - rev r1,r1 - rev r2,r2 - rev r3,r3 - rev r4,r4 - rev r5,r5 - rev r6,r6 - rev r7,r7 -# endif - stmia r8,{r0,r1,r2,r3,r4,r5,r6,r7} - add r10,sp,#4*(0) - sub r11,r11,#64*3 @ len-=64*3 - -Loop_tail_neon: - ldrb r8,[r10],#1 @ read buffer on stack - ldrb r9,[r12],#1 @ read input - subs r11,r11,#1 - eor r8,r8,r9 - strb r8,[r14],#1 @ store output - bne Loop_tail_neon - -Ldone_neon: - add sp,sp,#4*(32+4) - vldmia sp,{d8,d9,d10,d11,d12,d13,d14,d15} - add sp,sp,#4*(16+3) - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,pc} - -#endif -#endif // !OPENSSL_NO_ASM diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv4-linux32.S temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv4-linux32.S --- temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv4-linux32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv4-linux32.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,16 +1,10 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#if defined(__arm__) -#include +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_ARM) && defined(__ELF__) +#include @ Silence ARMv8 deprecated IT instruction warnings. This file is used by both @ ARMv7 and ARMv8 processors and does not use ARMv8 instructions. @@ -37,18 +31,18 @@ .long 1,0,0,0 #if __ARM_MAX_ARCH__>=7 -.hidden GFp_armcap_P +.hidden OPENSSL_armcap_P .LOPENSSL_armcap: -.word GFp_armcap_P-.LChaCha20_ctr32 +.word OPENSSL_armcap_P-.LChaCha20_ctr32 #else .word -1 #endif -.globl GFp_ChaCha20_ctr32 -.hidden GFp_ChaCha20_ctr32 -.type GFp_ChaCha20_ctr32,%function +.globl ChaCha20_ctr32 +.hidden ChaCha20_ctr32 +.type ChaCha20_ctr32,%function .align 5 -GFp_ChaCha20_ctr32: +ChaCha20_ctr32: .LChaCha20_ctr32: ldr r12,[sp,#0] @ pull pointer to counter and nonce stmdb sp!,{r0,r1,r2,r4-r11,lr} @@ -806,7 +800,7 @@ add sp,sp,#4*(32+3) .Lno_data: ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,pc} -.size GFp_ChaCha20_ctr32,.-GFp_ChaCha20_ctr32 +.size ChaCha20_ctr32,.-ChaCha20_ctr32 #if __ARM_MAX_ARCH__>=7 .arch armv7-a .fpu neon @@ -1486,6 +1480,4 @@ ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,pc} .size ChaCha20_neon,.-ChaCha20_neon #endif -#endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_ARM) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv8-ios64.S temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv8-ios64.S --- temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv8-ios64.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv8-ios64.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,18 +1,13 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#include +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__APPLE__) +#include -.private_extern _GFp_armcap_P +.private_extern _OPENSSL_armcap_P .section __TEXT,__const @@ -26,21 +21,21 @@ .text -.globl _GFp_ChaCha20_ctr32 -.private_extern _GFp_ChaCha20_ctr32 +.globl _ChaCha20_ctr32 +.private_extern _ChaCha20_ctr32 .align 5 -_GFp_ChaCha20_ctr32: +_ChaCha20_ctr32: AARCH64_VALID_CALL_TARGET cbz x2,Labort -#if __has_feature(hwaddress_sanitizer) && __clang_major__ >= 10 - adrp x5,:pg_hi21_nc:_GFp_armcap_P +#if defined(OPENSSL_HWASAN) && __clang_major__ >= 10 + adrp x5,:pg_hi21_nc:_OPENSSL_armcap_P #else - adrp x5,_GFp_armcap_P@PAGE + adrp x5,_OPENSSL_armcap_P@PAGE #endif cmp x2,#192 b.lo Lshort - ldr w17,[x5,_GFp_armcap_P@PAGEOFF] + ldr w17,[x5,_OPENSSL_armcap_P@PAGEOFF] tst w17,#ARMV7_NEON b.ne ChaCha20_neon @@ -62,7 +57,7 @@ ldp x24,x25,[x3] // load key ldp x26,x27,[x3,#16] ldp x28,x30,[x4] // load counter -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ ror x24,x24,#32 ror x25,x25,#32 ror x26,x26,#32 @@ -223,7 +218,7 @@ add x20,x20,x21,lsl#32 ldp x19,x21,[x1,#48] add x1,x1,#64 -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev x5,x5 rev x7,x7 rev x9,x9 @@ -280,7 +275,7 @@ add x15,x15,x16,lsl#32 add x17,x17,x19,lsl#32 add x20,x20,x21,lsl#32 -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev x5,x5 rev x7,x7 rev x9,x9 @@ -346,7 +341,7 @@ ldp x28,x30,[x4] // load counter ld1 {v27.4s},[x4] ld1 {v31.4s},[x5] -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev64 v24.4s,v24.4s ror x24,x24,#32 ror x25,x25,#32 @@ -644,7 +639,7 @@ add x20,x20,x21,lsl#32 ldp x19,x21,[x1,#48] add x1,x1,#64 -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev x5,x5 rev x7,x7 rev x9,x9 @@ -724,7 +719,7 @@ add x20,x20,x21,lsl#32 ldp x19,x21,[x1,#48] add x1,x1,#64 -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev x5,x5 rev x7,x7 rev x9,x9 @@ -842,7 +837,7 @@ ldp x28,x30,[x4] // load counter ld1 {v27.4s},[x4] ld1 {v31.4s},[x5] -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev64 v24.4s,v24.4s ror x24,x24,#32 ror x25,x25,#32 @@ -1355,7 +1350,7 @@ add x20,x20,x21,lsl#32 ldp x19,x21,[x1,#48] add x1,x1,#64 -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev x5,x5 rev x7,x7 rev x9,x9 @@ -1869,7 +1864,7 @@ add x1,x1,#64 add v21.4s,v21.4s,v25.4s -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev x5,x5 rev x7,x7 rev x9,x9 @@ -1986,4 +1981,4 @@ AARCH64_VALIDATE_LINK_REGISTER ret -#endif // !OPENSSL_NO_ASM +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__APPLE__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv8-linux64.S temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv8-linux64.S --- temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv8-linux64.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv8-linux64.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,19 +1,13 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#if defined(__aarch64__) -#include +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__ELF__) +#include -.hidden GFp_armcap_P +.hidden OPENSSL_armcap_P .section .rodata @@ -27,21 +21,21 @@ .text -.globl GFp_ChaCha20_ctr32 -.hidden GFp_ChaCha20_ctr32 -.type GFp_ChaCha20_ctr32,%function +.globl ChaCha20_ctr32 +.hidden ChaCha20_ctr32 +.type ChaCha20_ctr32,%function .align 5 -GFp_ChaCha20_ctr32: +ChaCha20_ctr32: AARCH64_VALID_CALL_TARGET cbz x2,.Labort -#if __has_feature(hwaddress_sanitizer) && __clang_major__ >= 10 - adrp x5,:pg_hi21_nc:GFp_armcap_P +#if defined(OPENSSL_HWASAN) && __clang_major__ >= 10 + adrp x5,:pg_hi21_nc:OPENSSL_armcap_P #else - adrp x5,GFp_armcap_P + adrp x5,OPENSSL_armcap_P #endif cmp x2,#192 b.lo .Lshort - ldr w17,[x5,:lo12:GFp_armcap_P] + ldr w17,[x5,:lo12:OPENSSL_armcap_P] tst w17,#ARMV7_NEON b.ne ChaCha20_neon @@ -63,7 +57,7 @@ ldp x24,x25,[x3] // load key ldp x26,x27,[x3,#16] ldp x28,x30,[x4] // load counter -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ ror x24,x24,#32 ror x25,x25,#32 ror x26,x26,#32 @@ -224,7 +218,7 @@ add x20,x20,x21,lsl#32 ldp x19,x21,[x1,#48] add x1,x1,#64 -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev x5,x5 rev x7,x7 rev x9,x9 @@ -281,7 +275,7 @@ add x15,x15,x16,lsl#32 add x17,x17,x19,lsl#32 add x20,x20,x21,lsl#32 -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev x5,x5 rev x7,x7 rev x9,x9 @@ -318,7 +312,7 @@ ldp x29,x30,[sp],#96 AARCH64_VALIDATE_LINK_REGISTER ret -.size GFp_ChaCha20_ctr32,.-GFp_ChaCha20_ctr32 +.size ChaCha20_ctr32,.-ChaCha20_ctr32 .type ChaCha20_neon,%function .align 5 @@ -347,7 +341,7 @@ ldp x28,x30,[x4] // load counter ld1 {v27.4s},[x4] ld1 {v31.4s},[x5] -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev64 v24.4s,v24.4s ror x24,x24,#32 ror x25,x25,#32 @@ -645,7 +639,7 @@ add x20,x20,x21,lsl#32 ldp x19,x21,[x1,#48] add x1,x1,#64 -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev x5,x5 rev x7,x7 rev x9,x9 @@ -725,7 +719,7 @@ add x20,x20,x21,lsl#32 ldp x19,x21,[x1,#48] add x1,x1,#64 -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev x5,x5 rev x7,x7 rev x9,x9 @@ -843,7 +837,7 @@ ldp x28,x30,[x4] // load counter ld1 {v27.4s},[x4] ld1 {v31.4s},[x5] -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev64 v24.4s,v24.4s ror x24,x24,#32 ror x25,x25,#32 @@ -1356,7 +1350,7 @@ add x20,x20,x21,lsl#32 ldp x19,x21,[x1,#48] add x1,x1,#64 -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev x5,x5 rev x7,x7 rev x9,x9 @@ -1870,7 +1864,7 @@ add x1,x1,#64 add v21.4s,v21.4s,v25.4s -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ rev x5,x5 rev x7,x7 rev x9,x9 @@ -1987,6 +1981,4 @@ AARCH64_VALIDATE_LINK_REGISTER ret .size ChaCha20_512_neon,.-ChaCha20_512_neon -#endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv8-win64.S temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv8-win64.S --- temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv8-win64.S 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/chacha-armv8-win64.S 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1990 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. + +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(_WIN32) +#include + + + + +.section .rodata + +.align 5 +Lsigma: +.quad 0x3320646e61707865,0x6b20657479622d32 // endian-neutral +Lone: +.long 1,0,0,0 +.byte 67,104,97,67,104,97,50,48,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 + +.text + +.globl ChaCha20_ctr32 + +.def ChaCha20_ctr32 + .type 32 +.endef +.align 5 +ChaCha20_ctr32: + AARCH64_VALID_CALL_TARGET + cbz x2,Labort +#if defined(OPENSSL_HWASAN) && __clang_major__ >= 10 + adrp x5,:pg_hi21_nc:OPENSSL_armcap_P +#else + adrp x5,OPENSSL_armcap_P +#endif + cmp x2,#192 + b.lo Lshort + ldr w17,[x5,:lo12:OPENSSL_armcap_P] + tst w17,#ARMV7_NEON + b.ne ChaCha20_neon + +Lshort: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + + adrp x5,Lsigma + add x5,x5,:lo12:Lsigma + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#64 + + ldp x22,x23,[x5] // load sigma + ldp x24,x25,[x3] // load key + ldp x26,x27,[x3,#16] + ldp x28,x30,[x4] // load counter +#ifdef __AARCH64EB__ + ror x24,x24,#32 + ror x25,x25,#32 + ror x26,x26,#32 + ror x27,x27,#32 + ror x28,x28,#32 + ror x30,x30,#32 +#endif + +Loop_outer: + mov w5,w22 // unpack key block + lsr x6,x22,#32 + mov w7,w23 + lsr x8,x23,#32 + mov w9,w24 + lsr x10,x24,#32 + mov w11,w25 + lsr x12,x25,#32 + mov w13,w26 + lsr x14,x26,#32 + mov w15,w27 + lsr x16,x27,#32 + mov w17,w28 + lsr x19,x28,#32 + mov w20,w30 + lsr x21,x30,#32 + + mov x4,#10 + subs x2,x2,#64 +Loop: + sub x4,x4,#1 + add w5,w5,w9 + add w6,w6,w10 + add w7,w7,w11 + add w8,w8,w12 + eor w17,w17,w5 + eor w19,w19,w6 + eor w20,w20,w7 + eor w21,w21,w8 + ror w17,w17,#16 + ror w19,w19,#16 + ror w20,w20,#16 + ror w21,w21,#16 + add w13,w13,w17 + add w14,w14,w19 + add w15,w15,w20 + add w16,w16,w21 + eor w9,w9,w13 + eor w10,w10,w14 + eor w11,w11,w15 + eor w12,w12,w16 + ror w9,w9,#20 + ror w10,w10,#20 + ror w11,w11,#20 + ror w12,w12,#20 + add w5,w5,w9 + add w6,w6,w10 + add w7,w7,w11 + add w8,w8,w12 + eor w17,w17,w5 + eor w19,w19,w6 + eor w20,w20,w7 + eor w21,w21,w8 + ror w17,w17,#24 + ror w19,w19,#24 + ror w20,w20,#24 + ror w21,w21,#24 + add w13,w13,w17 + add w14,w14,w19 + add w15,w15,w20 + add w16,w16,w21 + eor w9,w9,w13 + eor w10,w10,w14 + eor w11,w11,w15 + eor w12,w12,w16 + ror w9,w9,#25 + ror w10,w10,#25 + ror w11,w11,#25 + ror w12,w12,#25 + add w5,w5,w10 + add w6,w6,w11 + add w7,w7,w12 + add w8,w8,w9 + eor w21,w21,w5 + eor w17,w17,w6 + eor w19,w19,w7 + eor w20,w20,w8 + ror w21,w21,#16 + ror w17,w17,#16 + ror w19,w19,#16 + ror w20,w20,#16 + add w15,w15,w21 + add w16,w16,w17 + add w13,w13,w19 + add w14,w14,w20 + eor w10,w10,w15 + eor w11,w11,w16 + eor w12,w12,w13 + eor w9,w9,w14 + ror w10,w10,#20 + ror w11,w11,#20 + ror w12,w12,#20 + ror w9,w9,#20 + add w5,w5,w10 + add w6,w6,w11 + add w7,w7,w12 + add w8,w8,w9 + eor w21,w21,w5 + eor w17,w17,w6 + eor w19,w19,w7 + eor w20,w20,w8 + ror w21,w21,#24 + ror w17,w17,#24 + ror w19,w19,#24 + ror w20,w20,#24 + add w15,w15,w21 + add w16,w16,w17 + add w13,w13,w19 + add w14,w14,w20 + eor w10,w10,w15 + eor w11,w11,w16 + eor w12,w12,w13 + eor w9,w9,w14 + ror w10,w10,#25 + ror w11,w11,#25 + ror w12,w12,#25 + ror w9,w9,#25 + cbnz x4,Loop + + add w5,w5,w22 // accumulate key block + add x6,x6,x22,lsr#32 + add w7,w7,w23 + add x8,x8,x23,lsr#32 + add w9,w9,w24 + add x10,x10,x24,lsr#32 + add w11,w11,w25 + add x12,x12,x25,lsr#32 + add w13,w13,w26 + add x14,x14,x26,lsr#32 + add w15,w15,w27 + add x16,x16,x27,lsr#32 + add w17,w17,w28 + add x19,x19,x28,lsr#32 + add w20,w20,w30 + add x21,x21,x30,lsr#32 + + b.lo Ltail + + add x5,x5,x6,lsl#32 // pack + add x7,x7,x8,lsl#32 + ldp x6,x8,[x1,#0] // load input + add x9,x9,x10,lsl#32 + add x11,x11,x12,lsl#32 + ldp x10,x12,[x1,#16] + add x13,x13,x14,lsl#32 + add x15,x15,x16,lsl#32 + ldp x14,x16,[x1,#32] + add x17,x17,x19,lsl#32 + add x20,x20,x21,lsl#32 + ldp x19,x21,[x1,#48] + add x1,x1,#64 +#ifdef __AARCH64EB__ + rev x5,x5 + rev x7,x7 + rev x9,x9 + rev x11,x11 + rev x13,x13 + rev x15,x15 + rev x17,x17 + rev x20,x20 +#endif + eor x5,x5,x6 + eor x7,x7,x8 + eor x9,x9,x10 + eor x11,x11,x12 + eor x13,x13,x14 + eor x15,x15,x16 + eor x17,x17,x19 + eor x20,x20,x21 + + stp x5,x7,[x0,#0] // store output + add x28,x28,#1 // increment counter + stp x9,x11,[x0,#16] + stp x13,x15,[x0,#32] + stp x17,x20,[x0,#48] + add x0,x0,#64 + + b.hi Loop_outer + + ldp x19,x20,[x29,#16] + add sp,sp,#64 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 + AARCH64_VALIDATE_LINK_REGISTER +Labort: + ret + +.align 4 +Ltail: + add x2,x2,#64 +Less_than_64: + sub x0,x0,#1 + add x1,x1,x2 + add x0,x0,x2 + add x4,sp,x2 + neg x2,x2 + + add x5,x5,x6,lsl#32 // pack + add x7,x7,x8,lsl#32 + add x9,x9,x10,lsl#32 + add x11,x11,x12,lsl#32 + add x13,x13,x14,lsl#32 + add x15,x15,x16,lsl#32 + add x17,x17,x19,lsl#32 + add x20,x20,x21,lsl#32 +#ifdef __AARCH64EB__ + rev x5,x5 + rev x7,x7 + rev x9,x9 + rev x11,x11 + rev x13,x13 + rev x15,x15 + rev x17,x17 + rev x20,x20 +#endif + stp x5,x7,[sp,#0] + stp x9,x11,[sp,#16] + stp x13,x15,[sp,#32] + stp x17,x20,[sp,#48] + +Loop_tail: + ldrb w10,[x1,x2] + ldrb w11,[x4,x2] + add x2,x2,#1 + eor w10,w10,w11 + strb w10,[x0,x2] + cbnz x2,Loop_tail + + stp xzr,xzr,[sp,#0] + stp xzr,xzr,[sp,#16] + stp xzr,xzr,[sp,#32] + stp xzr,xzr,[sp,#48] + + ldp x19,x20,[x29,#16] + add sp,sp,#64 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 + AARCH64_VALIDATE_LINK_REGISTER + ret + + +.def ChaCha20_neon + .type 32 +.endef +.align 5 +ChaCha20_neon: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + + adrp x5,Lsigma + add x5,x5,:lo12:Lsigma + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + cmp x2,#512 + b.hs L512_or_more_neon + + sub sp,sp,#64 + + ldp x22,x23,[x5] // load sigma + ld1 {v24.4s},[x5],#16 + ldp x24,x25,[x3] // load key + ldp x26,x27,[x3,#16] + ld1 {v25.4s,v26.4s},[x3] + ldp x28,x30,[x4] // load counter + ld1 {v27.4s},[x4] + ld1 {v31.4s},[x5] +#ifdef __AARCH64EB__ + rev64 v24.4s,v24.4s + ror x24,x24,#32 + ror x25,x25,#32 + ror x26,x26,#32 + ror x27,x27,#32 + ror x28,x28,#32 + ror x30,x30,#32 +#endif + add v27.4s,v27.4s,v31.4s // += 1 + add v28.4s,v27.4s,v31.4s + add v29.4s,v28.4s,v31.4s + shl v31.4s,v31.4s,#2 // 1 -> 4 + +Loop_outer_neon: + mov w5,w22 // unpack key block + lsr x6,x22,#32 + mov v0.16b,v24.16b + mov w7,w23 + lsr x8,x23,#32 + mov v4.16b,v24.16b + mov w9,w24 + lsr x10,x24,#32 + mov v16.16b,v24.16b + mov w11,w25 + mov v1.16b,v25.16b + lsr x12,x25,#32 + mov v5.16b,v25.16b + mov w13,w26 + mov v17.16b,v25.16b + lsr x14,x26,#32 + mov v3.16b,v27.16b + mov w15,w27 + mov v7.16b,v28.16b + lsr x16,x27,#32 + mov v19.16b,v29.16b + mov w17,w28 + mov v2.16b,v26.16b + lsr x19,x28,#32 + mov v6.16b,v26.16b + mov w20,w30 + mov v18.16b,v26.16b + lsr x21,x30,#32 + + mov x4,#10 + subs x2,x2,#256 +Loop_neon: + sub x4,x4,#1 + add v0.4s,v0.4s,v1.4s + add w5,w5,w9 + add v4.4s,v4.4s,v5.4s + add w6,w6,w10 + add v16.4s,v16.4s,v17.4s + add w7,w7,w11 + eor v3.16b,v3.16b,v0.16b + add w8,w8,w12 + eor v7.16b,v7.16b,v4.16b + eor w17,w17,w5 + eor v19.16b,v19.16b,v16.16b + eor w19,w19,w6 + rev32 v3.8h,v3.8h + eor w20,w20,w7 + rev32 v7.8h,v7.8h + eor w21,w21,w8 + rev32 v19.8h,v19.8h + ror w17,w17,#16 + add v2.4s,v2.4s,v3.4s + ror w19,w19,#16 + add v6.4s,v6.4s,v7.4s + ror w20,w20,#16 + add v18.4s,v18.4s,v19.4s + ror w21,w21,#16 + eor v20.16b,v1.16b,v2.16b + add w13,w13,w17 + eor v21.16b,v5.16b,v6.16b + add w14,w14,w19 + eor v22.16b,v17.16b,v18.16b + add w15,w15,w20 + ushr v1.4s,v20.4s,#20 + add w16,w16,w21 + ushr v5.4s,v21.4s,#20 + eor w9,w9,w13 + ushr v17.4s,v22.4s,#20 + eor w10,w10,w14 + sli v1.4s,v20.4s,#12 + eor w11,w11,w15 + sli v5.4s,v21.4s,#12 + eor w12,w12,w16 + sli v17.4s,v22.4s,#12 + ror w9,w9,#20 + add v0.4s,v0.4s,v1.4s + ror w10,w10,#20 + add v4.4s,v4.4s,v5.4s + ror w11,w11,#20 + add v16.4s,v16.4s,v17.4s + ror w12,w12,#20 + eor v20.16b,v3.16b,v0.16b + add w5,w5,w9 + eor v21.16b,v7.16b,v4.16b + add w6,w6,w10 + eor v22.16b,v19.16b,v16.16b + add w7,w7,w11 + ushr v3.4s,v20.4s,#24 + add w8,w8,w12 + ushr v7.4s,v21.4s,#24 + eor w17,w17,w5 + ushr v19.4s,v22.4s,#24 + eor w19,w19,w6 + sli v3.4s,v20.4s,#8 + eor w20,w20,w7 + sli v7.4s,v21.4s,#8 + eor w21,w21,w8 + sli v19.4s,v22.4s,#8 + ror w17,w17,#24 + add v2.4s,v2.4s,v3.4s + ror w19,w19,#24 + add v6.4s,v6.4s,v7.4s + ror w20,w20,#24 + add v18.4s,v18.4s,v19.4s + ror w21,w21,#24 + eor v20.16b,v1.16b,v2.16b + add w13,w13,w17 + eor v21.16b,v5.16b,v6.16b + add w14,w14,w19 + eor v22.16b,v17.16b,v18.16b + add w15,w15,w20 + ushr v1.4s,v20.4s,#25 + add w16,w16,w21 + ushr v5.4s,v21.4s,#25 + eor w9,w9,w13 + ushr v17.4s,v22.4s,#25 + eor w10,w10,w14 + sli v1.4s,v20.4s,#7 + eor w11,w11,w15 + sli v5.4s,v21.4s,#7 + eor w12,w12,w16 + sli v17.4s,v22.4s,#7 + ror w9,w9,#25 + ext v2.16b,v2.16b,v2.16b,#8 + ror w10,w10,#25 + ext v6.16b,v6.16b,v6.16b,#8 + ror w11,w11,#25 + ext v18.16b,v18.16b,v18.16b,#8 + ror w12,w12,#25 + ext v3.16b,v3.16b,v3.16b,#12 + ext v7.16b,v7.16b,v7.16b,#12 + ext v19.16b,v19.16b,v19.16b,#12 + ext v1.16b,v1.16b,v1.16b,#4 + ext v5.16b,v5.16b,v5.16b,#4 + ext v17.16b,v17.16b,v17.16b,#4 + add v0.4s,v0.4s,v1.4s + add w5,w5,w10 + add v4.4s,v4.4s,v5.4s + add w6,w6,w11 + add v16.4s,v16.4s,v17.4s + add w7,w7,w12 + eor v3.16b,v3.16b,v0.16b + add w8,w8,w9 + eor v7.16b,v7.16b,v4.16b + eor w21,w21,w5 + eor v19.16b,v19.16b,v16.16b + eor w17,w17,w6 + rev32 v3.8h,v3.8h + eor w19,w19,w7 + rev32 v7.8h,v7.8h + eor w20,w20,w8 + rev32 v19.8h,v19.8h + ror w21,w21,#16 + add v2.4s,v2.4s,v3.4s + ror w17,w17,#16 + add v6.4s,v6.4s,v7.4s + ror w19,w19,#16 + add v18.4s,v18.4s,v19.4s + ror w20,w20,#16 + eor v20.16b,v1.16b,v2.16b + add w15,w15,w21 + eor v21.16b,v5.16b,v6.16b + add w16,w16,w17 + eor v22.16b,v17.16b,v18.16b + add w13,w13,w19 + ushr v1.4s,v20.4s,#20 + add w14,w14,w20 + ushr v5.4s,v21.4s,#20 + eor w10,w10,w15 + ushr v17.4s,v22.4s,#20 + eor w11,w11,w16 + sli v1.4s,v20.4s,#12 + eor w12,w12,w13 + sli v5.4s,v21.4s,#12 + eor w9,w9,w14 + sli v17.4s,v22.4s,#12 + ror w10,w10,#20 + add v0.4s,v0.4s,v1.4s + ror w11,w11,#20 + add v4.4s,v4.4s,v5.4s + ror w12,w12,#20 + add v16.4s,v16.4s,v17.4s + ror w9,w9,#20 + eor v20.16b,v3.16b,v0.16b + add w5,w5,w10 + eor v21.16b,v7.16b,v4.16b + add w6,w6,w11 + eor v22.16b,v19.16b,v16.16b + add w7,w7,w12 + ushr v3.4s,v20.4s,#24 + add w8,w8,w9 + ushr v7.4s,v21.4s,#24 + eor w21,w21,w5 + ushr v19.4s,v22.4s,#24 + eor w17,w17,w6 + sli v3.4s,v20.4s,#8 + eor w19,w19,w7 + sli v7.4s,v21.4s,#8 + eor w20,w20,w8 + sli v19.4s,v22.4s,#8 + ror w21,w21,#24 + add v2.4s,v2.4s,v3.4s + ror w17,w17,#24 + add v6.4s,v6.4s,v7.4s + ror w19,w19,#24 + add v18.4s,v18.4s,v19.4s + ror w20,w20,#24 + eor v20.16b,v1.16b,v2.16b + add w15,w15,w21 + eor v21.16b,v5.16b,v6.16b + add w16,w16,w17 + eor v22.16b,v17.16b,v18.16b + add w13,w13,w19 + ushr v1.4s,v20.4s,#25 + add w14,w14,w20 + ushr v5.4s,v21.4s,#25 + eor w10,w10,w15 + ushr v17.4s,v22.4s,#25 + eor w11,w11,w16 + sli v1.4s,v20.4s,#7 + eor w12,w12,w13 + sli v5.4s,v21.4s,#7 + eor w9,w9,w14 + sli v17.4s,v22.4s,#7 + ror w10,w10,#25 + ext v2.16b,v2.16b,v2.16b,#8 + ror w11,w11,#25 + ext v6.16b,v6.16b,v6.16b,#8 + ror w12,w12,#25 + ext v18.16b,v18.16b,v18.16b,#8 + ror w9,w9,#25 + ext v3.16b,v3.16b,v3.16b,#4 + ext v7.16b,v7.16b,v7.16b,#4 + ext v19.16b,v19.16b,v19.16b,#4 + ext v1.16b,v1.16b,v1.16b,#12 + ext v5.16b,v5.16b,v5.16b,#12 + ext v17.16b,v17.16b,v17.16b,#12 + cbnz x4,Loop_neon + + add w5,w5,w22 // accumulate key block + add v0.4s,v0.4s,v24.4s + add x6,x6,x22,lsr#32 + add v4.4s,v4.4s,v24.4s + add w7,w7,w23 + add v16.4s,v16.4s,v24.4s + add x8,x8,x23,lsr#32 + add v2.4s,v2.4s,v26.4s + add w9,w9,w24 + add v6.4s,v6.4s,v26.4s + add x10,x10,x24,lsr#32 + add v18.4s,v18.4s,v26.4s + add w11,w11,w25 + add v3.4s,v3.4s,v27.4s + add x12,x12,x25,lsr#32 + add w13,w13,w26 + add v7.4s,v7.4s,v28.4s + add x14,x14,x26,lsr#32 + add w15,w15,w27 + add v19.4s,v19.4s,v29.4s + add x16,x16,x27,lsr#32 + add w17,w17,w28 + add v1.4s,v1.4s,v25.4s + add x19,x19,x28,lsr#32 + add w20,w20,w30 + add v5.4s,v5.4s,v25.4s + add x21,x21,x30,lsr#32 + add v17.4s,v17.4s,v25.4s + + b.lo Ltail_neon + + add x5,x5,x6,lsl#32 // pack + add x7,x7,x8,lsl#32 + ldp x6,x8,[x1,#0] // load input + add x9,x9,x10,lsl#32 + add x11,x11,x12,lsl#32 + ldp x10,x12,[x1,#16] + add x13,x13,x14,lsl#32 + add x15,x15,x16,lsl#32 + ldp x14,x16,[x1,#32] + add x17,x17,x19,lsl#32 + add x20,x20,x21,lsl#32 + ldp x19,x21,[x1,#48] + add x1,x1,#64 +#ifdef __AARCH64EB__ + rev x5,x5 + rev x7,x7 + rev x9,x9 + rev x11,x11 + rev x13,x13 + rev x15,x15 + rev x17,x17 + rev x20,x20 +#endif + ld1 {v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64 + eor x5,x5,x6 + eor x7,x7,x8 + eor x9,x9,x10 + eor x11,x11,x12 + eor x13,x13,x14 + eor v0.16b,v0.16b,v20.16b + eor x15,x15,x16 + eor v1.16b,v1.16b,v21.16b + eor x17,x17,x19 + eor v2.16b,v2.16b,v22.16b + eor x20,x20,x21 + eor v3.16b,v3.16b,v23.16b + ld1 {v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64 + + stp x5,x7,[x0,#0] // store output + add x28,x28,#4 // increment counter + stp x9,x11,[x0,#16] + add v27.4s,v27.4s,v31.4s // += 4 + stp x13,x15,[x0,#32] + add v28.4s,v28.4s,v31.4s + stp x17,x20,[x0,#48] + add v29.4s,v29.4s,v31.4s + add x0,x0,#64 + + st1 {v0.16b,v1.16b,v2.16b,v3.16b},[x0],#64 + ld1 {v0.16b,v1.16b,v2.16b,v3.16b},[x1],#64 + + eor v4.16b,v4.16b,v20.16b + eor v5.16b,v5.16b,v21.16b + eor v6.16b,v6.16b,v22.16b + eor v7.16b,v7.16b,v23.16b + st1 {v4.16b,v5.16b,v6.16b,v7.16b},[x0],#64 + + eor v16.16b,v16.16b,v0.16b + eor v17.16b,v17.16b,v1.16b + eor v18.16b,v18.16b,v2.16b + eor v19.16b,v19.16b,v3.16b + st1 {v16.16b,v17.16b,v18.16b,v19.16b},[x0],#64 + + b.hi Loop_outer_neon + + ldp x19,x20,[x29,#16] + add sp,sp,#64 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 + AARCH64_VALIDATE_LINK_REGISTER + ret + +Ltail_neon: + add x2,x2,#256 + cmp x2,#64 + b.lo Less_than_64 + + add x5,x5,x6,lsl#32 // pack + add x7,x7,x8,lsl#32 + ldp x6,x8,[x1,#0] // load input + add x9,x9,x10,lsl#32 + add x11,x11,x12,lsl#32 + ldp x10,x12,[x1,#16] + add x13,x13,x14,lsl#32 + add x15,x15,x16,lsl#32 + ldp x14,x16,[x1,#32] + add x17,x17,x19,lsl#32 + add x20,x20,x21,lsl#32 + ldp x19,x21,[x1,#48] + add x1,x1,#64 +#ifdef __AARCH64EB__ + rev x5,x5 + rev x7,x7 + rev x9,x9 + rev x11,x11 + rev x13,x13 + rev x15,x15 + rev x17,x17 + rev x20,x20 +#endif + eor x5,x5,x6 + eor x7,x7,x8 + eor x9,x9,x10 + eor x11,x11,x12 + eor x13,x13,x14 + eor x15,x15,x16 + eor x17,x17,x19 + eor x20,x20,x21 + + stp x5,x7,[x0,#0] // store output + add x28,x28,#4 // increment counter + stp x9,x11,[x0,#16] + stp x13,x15,[x0,#32] + stp x17,x20,[x0,#48] + add x0,x0,#64 + b.eq Ldone_neon + sub x2,x2,#64 + cmp x2,#64 + b.lo Less_than_128 + + ld1 {v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64 + eor v0.16b,v0.16b,v20.16b + eor v1.16b,v1.16b,v21.16b + eor v2.16b,v2.16b,v22.16b + eor v3.16b,v3.16b,v23.16b + st1 {v0.16b,v1.16b,v2.16b,v3.16b},[x0],#64 + b.eq Ldone_neon + sub x2,x2,#64 + cmp x2,#64 + b.lo Less_than_192 + + ld1 {v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64 + eor v4.16b,v4.16b,v20.16b + eor v5.16b,v5.16b,v21.16b + eor v6.16b,v6.16b,v22.16b + eor v7.16b,v7.16b,v23.16b + st1 {v4.16b,v5.16b,v6.16b,v7.16b},[x0],#64 + b.eq Ldone_neon + sub x2,x2,#64 + + st1 {v16.16b,v17.16b,v18.16b,v19.16b},[sp] + b Last_neon + +Less_than_128: + st1 {v0.16b,v1.16b,v2.16b,v3.16b},[sp] + b Last_neon +Less_than_192: + st1 {v4.16b,v5.16b,v6.16b,v7.16b},[sp] + b Last_neon + +.align 4 +Last_neon: + sub x0,x0,#1 + add x1,x1,x2 + add x0,x0,x2 + add x4,sp,x2 + neg x2,x2 + +Loop_tail_neon: + ldrb w10,[x1,x2] + ldrb w11,[x4,x2] + add x2,x2,#1 + eor w10,w10,w11 + strb w10,[x0,x2] + cbnz x2,Loop_tail_neon + + stp xzr,xzr,[sp,#0] + stp xzr,xzr,[sp,#16] + stp xzr,xzr,[sp,#32] + stp xzr,xzr,[sp,#48] + +Ldone_neon: + ldp x19,x20,[x29,#16] + add sp,sp,#64 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 + AARCH64_VALIDATE_LINK_REGISTER + ret + +.def ChaCha20_512_neon + .type 32 +.endef +.align 5 +ChaCha20_512_neon: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + + adrp x5,Lsigma + add x5,x5,:lo12:Lsigma + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + +L512_or_more_neon: + sub sp,sp,#128+64 + + ldp x22,x23,[x5] // load sigma + ld1 {v24.4s},[x5],#16 + ldp x24,x25,[x3] // load key + ldp x26,x27,[x3,#16] + ld1 {v25.4s,v26.4s},[x3] + ldp x28,x30,[x4] // load counter + ld1 {v27.4s},[x4] + ld1 {v31.4s},[x5] +#ifdef __AARCH64EB__ + rev64 v24.4s,v24.4s + ror x24,x24,#32 + ror x25,x25,#32 + ror x26,x26,#32 + ror x27,x27,#32 + ror x28,x28,#32 + ror x30,x30,#32 +#endif + add v27.4s,v27.4s,v31.4s // += 1 + stp q24,q25,[sp,#0] // off-load key block, invariant part + add v27.4s,v27.4s,v31.4s // not typo + str q26,[sp,#32] + add v28.4s,v27.4s,v31.4s + add v29.4s,v28.4s,v31.4s + add v30.4s,v29.4s,v31.4s + shl v31.4s,v31.4s,#2 // 1 -> 4 + + stp d8,d9,[sp,#128+0] // meet ABI requirements + stp d10,d11,[sp,#128+16] + stp d12,d13,[sp,#128+32] + stp d14,d15,[sp,#128+48] + + sub x2,x2,#512 // not typo + +Loop_outer_512_neon: + mov v0.16b,v24.16b + mov v4.16b,v24.16b + mov v8.16b,v24.16b + mov v12.16b,v24.16b + mov v16.16b,v24.16b + mov v20.16b,v24.16b + mov v1.16b,v25.16b + mov w5,w22 // unpack key block + mov v5.16b,v25.16b + lsr x6,x22,#32 + mov v9.16b,v25.16b + mov w7,w23 + mov v13.16b,v25.16b + lsr x8,x23,#32 + mov v17.16b,v25.16b + mov w9,w24 + mov v21.16b,v25.16b + lsr x10,x24,#32 + mov v3.16b,v27.16b + mov w11,w25 + mov v7.16b,v28.16b + lsr x12,x25,#32 + mov v11.16b,v29.16b + mov w13,w26 + mov v15.16b,v30.16b + lsr x14,x26,#32 + mov v2.16b,v26.16b + mov w15,w27 + mov v6.16b,v26.16b + lsr x16,x27,#32 + add v19.4s,v3.4s,v31.4s // +4 + mov w17,w28 + add v23.4s,v7.4s,v31.4s // +4 + lsr x19,x28,#32 + mov v10.16b,v26.16b + mov w20,w30 + mov v14.16b,v26.16b + lsr x21,x30,#32 + mov v18.16b,v26.16b + stp q27,q28,[sp,#48] // off-load key block, variable part + mov v22.16b,v26.16b + str q29,[sp,#80] + + mov x4,#5 + subs x2,x2,#512 +Loop_upper_neon: + sub x4,x4,#1 + add v0.4s,v0.4s,v1.4s + add w5,w5,w9 + add v4.4s,v4.4s,v5.4s + add w6,w6,w10 + add v8.4s,v8.4s,v9.4s + add w7,w7,w11 + add v12.4s,v12.4s,v13.4s + add w8,w8,w12 + add v16.4s,v16.4s,v17.4s + eor w17,w17,w5 + add v20.4s,v20.4s,v21.4s + eor w19,w19,w6 + eor v3.16b,v3.16b,v0.16b + eor w20,w20,w7 + eor v7.16b,v7.16b,v4.16b + eor w21,w21,w8 + eor v11.16b,v11.16b,v8.16b + ror w17,w17,#16 + eor v15.16b,v15.16b,v12.16b + ror w19,w19,#16 + eor v19.16b,v19.16b,v16.16b + ror w20,w20,#16 + eor v23.16b,v23.16b,v20.16b + ror w21,w21,#16 + rev32 v3.8h,v3.8h + add w13,w13,w17 + rev32 v7.8h,v7.8h + add w14,w14,w19 + rev32 v11.8h,v11.8h + add w15,w15,w20 + rev32 v15.8h,v15.8h + add w16,w16,w21 + rev32 v19.8h,v19.8h + eor w9,w9,w13 + rev32 v23.8h,v23.8h + eor w10,w10,w14 + add v2.4s,v2.4s,v3.4s + eor w11,w11,w15 + add v6.4s,v6.4s,v7.4s + eor w12,w12,w16 + add v10.4s,v10.4s,v11.4s + ror w9,w9,#20 + add v14.4s,v14.4s,v15.4s + ror w10,w10,#20 + add v18.4s,v18.4s,v19.4s + ror w11,w11,#20 + add v22.4s,v22.4s,v23.4s + ror w12,w12,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w9 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w10 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w11 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w12 + eor v28.16b,v17.16b,v18.16b + eor w17,w17,w5 + eor v29.16b,v21.16b,v22.16b + eor w19,w19,w6 + ushr v1.4s,v24.4s,#20 + eor w20,w20,w7 + ushr v5.4s,v25.4s,#20 + eor w21,w21,w8 + ushr v9.4s,v26.4s,#20 + ror w17,w17,#24 + ushr v13.4s,v27.4s,#20 + ror w19,w19,#24 + ushr v17.4s,v28.4s,#20 + ror w20,w20,#24 + ushr v21.4s,v29.4s,#20 + ror w21,w21,#24 + sli v1.4s,v24.4s,#12 + add w13,w13,w17 + sli v5.4s,v25.4s,#12 + add w14,w14,w19 + sli v9.4s,v26.4s,#12 + add w15,w15,w20 + sli v13.4s,v27.4s,#12 + add w16,w16,w21 + sli v17.4s,v28.4s,#12 + eor w9,w9,w13 + sli v21.4s,v29.4s,#12 + eor w10,w10,w14 + add v0.4s,v0.4s,v1.4s + eor w11,w11,w15 + add v4.4s,v4.4s,v5.4s + eor w12,w12,w16 + add v8.4s,v8.4s,v9.4s + ror w9,w9,#25 + add v12.4s,v12.4s,v13.4s + ror w10,w10,#25 + add v16.4s,v16.4s,v17.4s + ror w11,w11,#25 + add v20.4s,v20.4s,v21.4s + ror w12,w12,#25 + eor v24.16b,v3.16b,v0.16b + add w5,w5,w10 + eor v25.16b,v7.16b,v4.16b + add w6,w6,w11 + eor v26.16b,v11.16b,v8.16b + add w7,w7,w12 + eor v27.16b,v15.16b,v12.16b + add w8,w8,w9 + eor v28.16b,v19.16b,v16.16b + eor w21,w21,w5 + eor v29.16b,v23.16b,v20.16b + eor w17,w17,w6 + ushr v3.4s,v24.4s,#24 + eor w19,w19,w7 + ushr v7.4s,v25.4s,#24 + eor w20,w20,w8 + ushr v11.4s,v26.4s,#24 + ror w21,w21,#16 + ushr v15.4s,v27.4s,#24 + ror w17,w17,#16 + ushr v19.4s,v28.4s,#24 + ror w19,w19,#16 + ushr v23.4s,v29.4s,#24 + ror w20,w20,#16 + sli v3.4s,v24.4s,#8 + add w15,w15,w21 + sli v7.4s,v25.4s,#8 + add w16,w16,w17 + sli v11.4s,v26.4s,#8 + add w13,w13,w19 + sli v15.4s,v27.4s,#8 + add w14,w14,w20 + sli v19.4s,v28.4s,#8 + eor w10,w10,w15 + sli v23.4s,v29.4s,#8 + eor w11,w11,w16 + add v2.4s,v2.4s,v3.4s + eor w12,w12,w13 + add v6.4s,v6.4s,v7.4s + eor w9,w9,w14 + add v10.4s,v10.4s,v11.4s + ror w10,w10,#20 + add v14.4s,v14.4s,v15.4s + ror w11,w11,#20 + add v18.4s,v18.4s,v19.4s + ror w12,w12,#20 + add v22.4s,v22.4s,v23.4s + ror w9,w9,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w10 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w11 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w12 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w9 + eor v28.16b,v17.16b,v18.16b + eor w21,w21,w5 + eor v29.16b,v21.16b,v22.16b + eor w17,w17,w6 + ushr v1.4s,v24.4s,#25 + eor w19,w19,w7 + ushr v5.4s,v25.4s,#25 + eor w20,w20,w8 + ushr v9.4s,v26.4s,#25 + ror w21,w21,#24 + ushr v13.4s,v27.4s,#25 + ror w17,w17,#24 + ushr v17.4s,v28.4s,#25 + ror w19,w19,#24 + ushr v21.4s,v29.4s,#25 + ror w20,w20,#24 + sli v1.4s,v24.4s,#7 + add w15,w15,w21 + sli v5.4s,v25.4s,#7 + add w16,w16,w17 + sli v9.4s,v26.4s,#7 + add w13,w13,w19 + sli v13.4s,v27.4s,#7 + add w14,w14,w20 + sli v17.4s,v28.4s,#7 + eor w10,w10,w15 + sli v21.4s,v29.4s,#7 + eor w11,w11,w16 + ext v2.16b,v2.16b,v2.16b,#8 + eor w12,w12,w13 + ext v6.16b,v6.16b,v6.16b,#8 + eor w9,w9,w14 + ext v10.16b,v10.16b,v10.16b,#8 + ror w10,w10,#25 + ext v14.16b,v14.16b,v14.16b,#8 + ror w11,w11,#25 + ext v18.16b,v18.16b,v18.16b,#8 + ror w12,w12,#25 + ext v22.16b,v22.16b,v22.16b,#8 + ror w9,w9,#25 + ext v3.16b,v3.16b,v3.16b,#12 + ext v7.16b,v7.16b,v7.16b,#12 + ext v11.16b,v11.16b,v11.16b,#12 + ext v15.16b,v15.16b,v15.16b,#12 + ext v19.16b,v19.16b,v19.16b,#12 + ext v23.16b,v23.16b,v23.16b,#12 + ext v1.16b,v1.16b,v1.16b,#4 + ext v5.16b,v5.16b,v5.16b,#4 + ext v9.16b,v9.16b,v9.16b,#4 + ext v13.16b,v13.16b,v13.16b,#4 + ext v17.16b,v17.16b,v17.16b,#4 + ext v21.16b,v21.16b,v21.16b,#4 + add v0.4s,v0.4s,v1.4s + add w5,w5,w9 + add v4.4s,v4.4s,v5.4s + add w6,w6,w10 + add v8.4s,v8.4s,v9.4s + add w7,w7,w11 + add v12.4s,v12.4s,v13.4s + add w8,w8,w12 + add v16.4s,v16.4s,v17.4s + eor w17,w17,w5 + add v20.4s,v20.4s,v21.4s + eor w19,w19,w6 + eor v3.16b,v3.16b,v0.16b + eor w20,w20,w7 + eor v7.16b,v7.16b,v4.16b + eor w21,w21,w8 + eor v11.16b,v11.16b,v8.16b + ror w17,w17,#16 + eor v15.16b,v15.16b,v12.16b + ror w19,w19,#16 + eor v19.16b,v19.16b,v16.16b + ror w20,w20,#16 + eor v23.16b,v23.16b,v20.16b + ror w21,w21,#16 + rev32 v3.8h,v3.8h + add w13,w13,w17 + rev32 v7.8h,v7.8h + add w14,w14,w19 + rev32 v11.8h,v11.8h + add w15,w15,w20 + rev32 v15.8h,v15.8h + add w16,w16,w21 + rev32 v19.8h,v19.8h + eor w9,w9,w13 + rev32 v23.8h,v23.8h + eor w10,w10,w14 + add v2.4s,v2.4s,v3.4s + eor w11,w11,w15 + add v6.4s,v6.4s,v7.4s + eor w12,w12,w16 + add v10.4s,v10.4s,v11.4s + ror w9,w9,#20 + add v14.4s,v14.4s,v15.4s + ror w10,w10,#20 + add v18.4s,v18.4s,v19.4s + ror w11,w11,#20 + add v22.4s,v22.4s,v23.4s + ror w12,w12,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w9 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w10 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w11 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w12 + eor v28.16b,v17.16b,v18.16b + eor w17,w17,w5 + eor v29.16b,v21.16b,v22.16b + eor w19,w19,w6 + ushr v1.4s,v24.4s,#20 + eor w20,w20,w7 + ushr v5.4s,v25.4s,#20 + eor w21,w21,w8 + ushr v9.4s,v26.4s,#20 + ror w17,w17,#24 + ushr v13.4s,v27.4s,#20 + ror w19,w19,#24 + ushr v17.4s,v28.4s,#20 + ror w20,w20,#24 + ushr v21.4s,v29.4s,#20 + ror w21,w21,#24 + sli v1.4s,v24.4s,#12 + add w13,w13,w17 + sli v5.4s,v25.4s,#12 + add w14,w14,w19 + sli v9.4s,v26.4s,#12 + add w15,w15,w20 + sli v13.4s,v27.4s,#12 + add w16,w16,w21 + sli v17.4s,v28.4s,#12 + eor w9,w9,w13 + sli v21.4s,v29.4s,#12 + eor w10,w10,w14 + add v0.4s,v0.4s,v1.4s + eor w11,w11,w15 + add v4.4s,v4.4s,v5.4s + eor w12,w12,w16 + add v8.4s,v8.4s,v9.4s + ror w9,w9,#25 + add v12.4s,v12.4s,v13.4s + ror w10,w10,#25 + add v16.4s,v16.4s,v17.4s + ror w11,w11,#25 + add v20.4s,v20.4s,v21.4s + ror w12,w12,#25 + eor v24.16b,v3.16b,v0.16b + add w5,w5,w10 + eor v25.16b,v7.16b,v4.16b + add w6,w6,w11 + eor v26.16b,v11.16b,v8.16b + add w7,w7,w12 + eor v27.16b,v15.16b,v12.16b + add w8,w8,w9 + eor v28.16b,v19.16b,v16.16b + eor w21,w21,w5 + eor v29.16b,v23.16b,v20.16b + eor w17,w17,w6 + ushr v3.4s,v24.4s,#24 + eor w19,w19,w7 + ushr v7.4s,v25.4s,#24 + eor w20,w20,w8 + ushr v11.4s,v26.4s,#24 + ror w21,w21,#16 + ushr v15.4s,v27.4s,#24 + ror w17,w17,#16 + ushr v19.4s,v28.4s,#24 + ror w19,w19,#16 + ushr v23.4s,v29.4s,#24 + ror w20,w20,#16 + sli v3.4s,v24.4s,#8 + add w15,w15,w21 + sli v7.4s,v25.4s,#8 + add w16,w16,w17 + sli v11.4s,v26.4s,#8 + add w13,w13,w19 + sli v15.4s,v27.4s,#8 + add w14,w14,w20 + sli v19.4s,v28.4s,#8 + eor w10,w10,w15 + sli v23.4s,v29.4s,#8 + eor w11,w11,w16 + add v2.4s,v2.4s,v3.4s + eor w12,w12,w13 + add v6.4s,v6.4s,v7.4s + eor w9,w9,w14 + add v10.4s,v10.4s,v11.4s + ror w10,w10,#20 + add v14.4s,v14.4s,v15.4s + ror w11,w11,#20 + add v18.4s,v18.4s,v19.4s + ror w12,w12,#20 + add v22.4s,v22.4s,v23.4s + ror w9,w9,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w10 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w11 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w12 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w9 + eor v28.16b,v17.16b,v18.16b + eor w21,w21,w5 + eor v29.16b,v21.16b,v22.16b + eor w17,w17,w6 + ushr v1.4s,v24.4s,#25 + eor w19,w19,w7 + ushr v5.4s,v25.4s,#25 + eor w20,w20,w8 + ushr v9.4s,v26.4s,#25 + ror w21,w21,#24 + ushr v13.4s,v27.4s,#25 + ror w17,w17,#24 + ushr v17.4s,v28.4s,#25 + ror w19,w19,#24 + ushr v21.4s,v29.4s,#25 + ror w20,w20,#24 + sli v1.4s,v24.4s,#7 + add w15,w15,w21 + sli v5.4s,v25.4s,#7 + add w16,w16,w17 + sli v9.4s,v26.4s,#7 + add w13,w13,w19 + sli v13.4s,v27.4s,#7 + add w14,w14,w20 + sli v17.4s,v28.4s,#7 + eor w10,w10,w15 + sli v21.4s,v29.4s,#7 + eor w11,w11,w16 + ext v2.16b,v2.16b,v2.16b,#8 + eor w12,w12,w13 + ext v6.16b,v6.16b,v6.16b,#8 + eor w9,w9,w14 + ext v10.16b,v10.16b,v10.16b,#8 + ror w10,w10,#25 + ext v14.16b,v14.16b,v14.16b,#8 + ror w11,w11,#25 + ext v18.16b,v18.16b,v18.16b,#8 + ror w12,w12,#25 + ext v22.16b,v22.16b,v22.16b,#8 + ror w9,w9,#25 + ext v3.16b,v3.16b,v3.16b,#4 + ext v7.16b,v7.16b,v7.16b,#4 + ext v11.16b,v11.16b,v11.16b,#4 + ext v15.16b,v15.16b,v15.16b,#4 + ext v19.16b,v19.16b,v19.16b,#4 + ext v23.16b,v23.16b,v23.16b,#4 + ext v1.16b,v1.16b,v1.16b,#12 + ext v5.16b,v5.16b,v5.16b,#12 + ext v9.16b,v9.16b,v9.16b,#12 + ext v13.16b,v13.16b,v13.16b,#12 + ext v17.16b,v17.16b,v17.16b,#12 + ext v21.16b,v21.16b,v21.16b,#12 + cbnz x4,Loop_upper_neon + + add w5,w5,w22 // accumulate key block + add x6,x6,x22,lsr#32 + add w7,w7,w23 + add x8,x8,x23,lsr#32 + add w9,w9,w24 + add x10,x10,x24,lsr#32 + add w11,w11,w25 + add x12,x12,x25,lsr#32 + add w13,w13,w26 + add x14,x14,x26,lsr#32 + add w15,w15,w27 + add x16,x16,x27,lsr#32 + add w17,w17,w28 + add x19,x19,x28,lsr#32 + add w20,w20,w30 + add x21,x21,x30,lsr#32 + + add x5,x5,x6,lsl#32 // pack + add x7,x7,x8,lsl#32 + ldp x6,x8,[x1,#0] // load input + add x9,x9,x10,lsl#32 + add x11,x11,x12,lsl#32 + ldp x10,x12,[x1,#16] + add x13,x13,x14,lsl#32 + add x15,x15,x16,lsl#32 + ldp x14,x16,[x1,#32] + add x17,x17,x19,lsl#32 + add x20,x20,x21,lsl#32 + ldp x19,x21,[x1,#48] + add x1,x1,#64 +#ifdef __AARCH64EB__ + rev x5,x5 + rev x7,x7 + rev x9,x9 + rev x11,x11 + rev x13,x13 + rev x15,x15 + rev x17,x17 + rev x20,x20 +#endif + eor x5,x5,x6 + eor x7,x7,x8 + eor x9,x9,x10 + eor x11,x11,x12 + eor x13,x13,x14 + eor x15,x15,x16 + eor x17,x17,x19 + eor x20,x20,x21 + + stp x5,x7,[x0,#0] // store output + add x28,x28,#1 // increment counter + mov w5,w22 // unpack key block + lsr x6,x22,#32 + stp x9,x11,[x0,#16] + mov w7,w23 + lsr x8,x23,#32 + stp x13,x15,[x0,#32] + mov w9,w24 + lsr x10,x24,#32 + stp x17,x20,[x0,#48] + add x0,x0,#64 + mov w11,w25 + lsr x12,x25,#32 + mov w13,w26 + lsr x14,x26,#32 + mov w15,w27 + lsr x16,x27,#32 + mov w17,w28 + lsr x19,x28,#32 + mov w20,w30 + lsr x21,x30,#32 + + mov x4,#5 +Loop_lower_neon: + sub x4,x4,#1 + add v0.4s,v0.4s,v1.4s + add w5,w5,w9 + add v4.4s,v4.4s,v5.4s + add w6,w6,w10 + add v8.4s,v8.4s,v9.4s + add w7,w7,w11 + add v12.4s,v12.4s,v13.4s + add w8,w8,w12 + add v16.4s,v16.4s,v17.4s + eor w17,w17,w5 + add v20.4s,v20.4s,v21.4s + eor w19,w19,w6 + eor v3.16b,v3.16b,v0.16b + eor w20,w20,w7 + eor v7.16b,v7.16b,v4.16b + eor w21,w21,w8 + eor v11.16b,v11.16b,v8.16b + ror w17,w17,#16 + eor v15.16b,v15.16b,v12.16b + ror w19,w19,#16 + eor v19.16b,v19.16b,v16.16b + ror w20,w20,#16 + eor v23.16b,v23.16b,v20.16b + ror w21,w21,#16 + rev32 v3.8h,v3.8h + add w13,w13,w17 + rev32 v7.8h,v7.8h + add w14,w14,w19 + rev32 v11.8h,v11.8h + add w15,w15,w20 + rev32 v15.8h,v15.8h + add w16,w16,w21 + rev32 v19.8h,v19.8h + eor w9,w9,w13 + rev32 v23.8h,v23.8h + eor w10,w10,w14 + add v2.4s,v2.4s,v3.4s + eor w11,w11,w15 + add v6.4s,v6.4s,v7.4s + eor w12,w12,w16 + add v10.4s,v10.4s,v11.4s + ror w9,w9,#20 + add v14.4s,v14.4s,v15.4s + ror w10,w10,#20 + add v18.4s,v18.4s,v19.4s + ror w11,w11,#20 + add v22.4s,v22.4s,v23.4s + ror w12,w12,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w9 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w10 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w11 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w12 + eor v28.16b,v17.16b,v18.16b + eor w17,w17,w5 + eor v29.16b,v21.16b,v22.16b + eor w19,w19,w6 + ushr v1.4s,v24.4s,#20 + eor w20,w20,w7 + ushr v5.4s,v25.4s,#20 + eor w21,w21,w8 + ushr v9.4s,v26.4s,#20 + ror w17,w17,#24 + ushr v13.4s,v27.4s,#20 + ror w19,w19,#24 + ushr v17.4s,v28.4s,#20 + ror w20,w20,#24 + ushr v21.4s,v29.4s,#20 + ror w21,w21,#24 + sli v1.4s,v24.4s,#12 + add w13,w13,w17 + sli v5.4s,v25.4s,#12 + add w14,w14,w19 + sli v9.4s,v26.4s,#12 + add w15,w15,w20 + sli v13.4s,v27.4s,#12 + add w16,w16,w21 + sli v17.4s,v28.4s,#12 + eor w9,w9,w13 + sli v21.4s,v29.4s,#12 + eor w10,w10,w14 + add v0.4s,v0.4s,v1.4s + eor w11,w11,w15 + add v4.4s,v4.4s,v5.4s + eor w12,w12,w16 + add v8.4s,v8.4s,v9.4s + ror w9,w9,#25 + add v12.4s,v12.4s,v13.4s + ror w10,w10,#25 + add v16.4s,v16.4s,v17.4s + ror w11,w11,#25 + add v20.4s,v20.4s,v21.4s + ror w12,w12,#25 + eor v24.16b,v3.16b,v0.16b + add w5,w5,w10 + eor v25.16b,v7.16b,v4.16b + add w6,w6,w11 + eor v26.16b,v11.16b,v8.16b + add w7,w7,w12 + eor v27.16b,v15.16b,v12.16b + add w8,w8,w9 + eor v28.16b,v19.16b,v16.16b + eor w21,w21,w5 + eor v29.16b,v23.16b,v20.16b + eor w17,w17,w6 + ushr v3.4s,v24.4s,#24 + eor w19,w19,w7 + ushr v7.4s,v25.4s,#24 + eor w20,w20,w8 + ushr v11.4s,v26.4s,#24 + ror w21,w21,#16 + ushr v15.4s,v27.4s,#24 + ror w17,w17,#16 + ushr v19.4s,v28.4s,#24 + ror w19,w19,#16 + ushr v23.4s,v29.4s,#24 + ror w20,w20,#16 + sli v3.4s,v24.4s,#8 + add w15,w15,w21 + sli v7.4s,v25.4s,#8 + add w16,w16,w17 + sli v11.4s,v26.4s,#8 + add w13,w13,w19 + sli v15.4s,v27.4s,#8 + add w14,w14,w20 + sli v19.4s,v28.4s,#8 + eor w10,w10,w15 + sli v23.4s,v29.4s,#8 + eor w11,w11,w16 + add v2.4s,v2.4s,v3.4s + eor w12,w12,w13 + add v6.4s,v6.4s,v7.4s + eor w9,w9,w14 + add v10.4s,v10.4s,v11.4s + ror w10,w10,#20 + add v14.4s,v14.4s,v15.4s + ror w11,w11,#20 + add v18.4s,v18.4s,v19.4s + ror w12,w12,#20 + add v22.4s,v22.4s,v23.4s + ror w9,w9,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w10 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w11 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w12 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w9 + eor v28.16b,v17.16b,v18.16b + eor w21,w21,w5 + eor v29.16b,v21.16b,v22.16b + eor w17,w17,w6 + ushr v1.4s,v24.4s,#25 + eor w19,w19,w7 + ushr v5.4s,v25.4s,#25 + eor w20,w20,w8 + ushr v9.4s,v26.4s,#25 + ror w21,w21,#24 + ushr v13.4s,v27.4s,#25 + ror w17,w17,#24 + ushr v17.4s,v28.4s,#25 + ror w19,w19,#24 + ushr v21.4s,v29.4s,#25 + ror w20,w20,#24 + sli v1.4s,v24.4s,#7 + add w15,w15,w21 + sli v5.4s,v25.4s,#7 + add w16,w16,w17 + sli v9.4s,v26.4s,#7 + add w13,w13,w19 + sli v13.4s,v27.4s,#7 + add w14,w14,w20 + sli v17.4s,v28.4s,#7 + eor w10,w10,w15 + sli v21.4s,v29.4s,#7 + eor w11,w11,w16 + ext v2.16b,v2.16b,v2.16b,#8 + eor w12,w12,w13 + ext v6.16b,v6.16b,v6.16b,#8 + eor w9,w9,w14 + ext v10.16b,v10.16b,v10.16b,#8 + ror w10,w10,#25 + ext v14.16b,v14.16b,v14.16b,#8 + ror w11,w11,#25 + ext v18.16b,v18.16b,v18.16b,#8 + ror w12,w12,#25 + ext v22.16b,v22.16b,v22.16b,#8 + ror w9,w9,#25 + ext v3.16b,v3.16b,v3.16b,#12 + ext v7.16b,v7.16b,v7.16b,#12 + ext v11.16b,v11.16b,v11.16b,#12 + ext v15.16b,v15.16b,v15.16b,#12 + ext v19.16b,v19.16b,v19.16b,#12 + ext v23.16b,v23.16b,v23.16b,#12 + ext v1.16b,v1.16b,v1.16b,#4 + ext v5.16b,v5.16b,v5.16b,#4 + ext v9.16b,v9.16b,v9.16b,#4 + ext v13.16b,v13.16b,v13.16b,#4 + ext v17.16b,v17.16b,v17.16b,#4 + ext v21.16b,v21.16b,v21.16b,#4 + add v0.4s,v0.4s,v1.4s + add w5,w5,w9 + add v4.4s,v4.4s,v5.4s + add w6,w6,w10 + add v8.4s,v8.4s,v9.4s + add w7,w7,w11 + add v12.4s,v12.4s,v13.4s + add w8,w8,w12 + add v16.4s,v16.4s,v17.4s + eor w17,w17,w5 + add v20.4s,v20.4s,v21.4s + eor w19,w19,w6 + eor v3.16b,v3.16b,v0.16b + eor w20,w20,w7 + eor v7.16b,v7.16b,v4.16b + eor w21,w21,w8 + eor v11.16b,v11.16b,v8.16b + ror w17,w17,#16 + eor v15.16b,v15.16b,v12.16b + ror w19,w19,#16 + eor v19.16b,v19.16b,v16.16b + ror w20,w20,#16 + eor v23.16b,v23.16b,v20.16b + ror w21,w21,#16 + rev32 v3.8h,v3.8h + add w13,w13,w17 + rev32 v7.8h,v7.8h + add w14,w14,w19 + rev32 v11.8h,v11.8h + add w15,w15,w20 + rev32 v15.8h,v15.8h + add w16,w16,w21 + rev32 v19.8h,v19.8h + eor w9,w9,w13 + rev32 v23.8h,v23.8h + eor w10,w10,w14 + add v2.4s,v2.4s,v3.4s + eor w11,w11,w15 + add v6.4s,v6.4s,v7.4s + eor w12,w12,w16 + add v10.4s,v10.4s,v11.4s + ror w9,w9,#20 + add v14.4s,v14.4s,v15.4s + ror w10,w10,#20 + add v18.4s,v18.4s,v19.4s + ror w11,w11,#20 + add v22.4s,v22.4s,v23.4s + ror w12,w12,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w9 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w10 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w11 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w12 + eor v28.16b,v17.16b,v18.16b + eor w17,w17,w5 + eor v29.16b,v21.16b,v22.16b + eor w19,w19,w6 + ushr v1.4s,v24.4s,#20 + eor w20,w20,w7 + ushr v5.4s,v25.4s,#20 + eor w21,w21,w8 + ushr v9.4s,v26.4s,#20 + ror w17,w17,#24 + ushr v13.4s,v27.4s,#20 + ror w19,w19,#24 + ushr v17.4s,v28.4s,#20 + ror w20,w20,#24 + ushr v21.4s,v29.4s,#20 + ror w21,w21,#24 + sli v1.4s,v24.4s,#12 + add w13,w13,w17 + sli v5.4s,v25.4s,#12 + add w14,w14,w19 + sli v9.4s,v26.4s,#12 + add w15,w15,w20 + sli v13.4s,v27.4s,#12 + add w16,w16,w21 + sli v17.4s,v28.4s,#12 + eor w9,w9,w13 + sli v21.4s,v29.4s,#12 + eor w10,w10,w14 + add v0.4s,v0.4s,v1.4s + eor w11,w11,w15 + add v4.4s,v4.4s,v5.4s + eor w12,w12,w16 + add v8.4s,v8.4s,v9.4s + ror w9,w9,#25 + add v12.4s,v12.4s,v13.4s + ror w10,w10,#25 + add v16.4s,v16.4s,v17.4s + ror w11,w11,#25 + add v20.4s,v20.4s,v21.4s + ror w12,w12,#25 + eor v24.16b,v3.16b,v0.16b + add w5,w5,w10 + eor v25.16b,v7.16b,v4.16b + add w6,w6,w11 + eor v26.16b,v11.16b,v8.16b + add w7,w7,w12 + eor v27.16b,v15.16b,v12.16b + add w8,w8,w9 + eor v28.16b,v19.16b,v16.16b + eor w21,w21,w5 + eor v29.16b,v23.16b,v20.16b + eor w17,w17,w6 + ushr v3.4s,v24.4s,#24 + eor w19,w19,w7 + ushr v7.4s,v25.4s,#24 + eor w20,w20,w8 + ushr v11.4s,v26.4s,#24 + ror w21,w21,#16 + ushr v15.4s,v27.4s,#24 + ror w17,w17,#16 + ushr v19.4s,v28.4s,#24 + ror w19,w19,#16 + ushr v23.4s,v29.4s,#24 + ror w20,w20,#16 + sli v3.4s,v24.4s,#8 + add w15,w15,w21 + sli v7.4s,v25.4s,#8 + add w16,w16,w17 + sli v11.4s,v26.4s,#8 + add w13,w13,w19 + sli v15.4s,v27.4s,#8 + add w14,w14,w20 + sli v19.4s,v28.4s,#8 + eor w10,w10,w15 + sli v23.4s,v29.4s,#8 + eor w11,w11,w16 + add v2.4s,v2.4s,v3.4s + eor w12,w12,w13 + add v6.4s,v6.4s,v7.4s + eor w9,w9,w14 + add v10.4s,v10.4s,v11.4s + ror w10,w10,#20 + add v14.4s,v14.4s,v15.4s + ror w11,w11,#20 + add v18.4s,v18.4s,v19.4s + ror w12,w12,#20 + add v22.4s,v22.4s,v23.4s + ror w9,w9,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w10 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w11 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w12 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w9 + eor v28.16b,v17.16b,v18.16b + eor w21,w21,w5 + eor v29.16b,v21.16b,v22.16b + eor w17,w17,w6 + ushr v1.4s,v24.4s,#25 + eor w19,w19,w7 + ushr v5.4s,v25.4s,#25 + eor w20,w20,w8 + ushr v9.4s,v26.4s,#25 + ror w21,w21,#24 + ushr v13.4s,v27.4s,#25 + ror w17,w17,#24 + ushr v17.4s,v28.4s,#25 + ror w19,w19,#24 + ushr v21.4s,v29.4s,#25 + ror w20,w20,#24 + sli v1.4s,v24.4s,#7 + add w15,w15,w21 + sli v5.4s,v25.4s,#7 + add w16,w16,w17 + sli v9.4s,v26.4s,#7 + add w13,w13,w19 + sli v13.4s,v27.4s,#7 + add w14,w14,w20 + sli v17.4s,v28.4s,#7 + eor w10,w10,w15 + sli v21.4s,v29.4s,#7 + eor w11,w11,w16 + ext v2.16b,v2.16b,v2.16b,#8 + eor w12,w12,w13 + ext v6.16b,v6.16b,v6.16b,#8 + eor w9,w9,w14 + ext v10.16b,v10.16b,v10.16b,#8 + ror w10,w10,#25 + ext v14.16b,v14.16b,v14.16b,#8 + ror w11,w11,#25 + ext v18.16b,v18.16b,v18.16b,#8 + ror w12,w12,#25 + ext v22.16b,v22.16b,v22.16b,#8 + ror w9,w9,#25 + ext v3.16b,v3.16b,v3.16b,#4 + ext v7.16b,v7.16b,v7.16b,#4 + ext v11.16b,v11.16b,v11.16b,#4 + ext v15.16b,v15.16b,v15.16b,#4 + ext v19.16b,v19.16b,v19.16b,#4 + ext v23.16b,v23.16b,v23.16b,#4 + ext v1.16b,v1.16b,v1.16b,#12 + ext v5.16b,v5.16b,v5.16b,#12 + ext v9.16b,v9.16b,v9.16b,#12 + ext v13.16b,v13.16b,v13.16b,#12 + ext v17.16b,v17.16b,v17.16b,#12 + ext v21.16b,v21.16b,v21.16b,#12 + cbnz x4,Loop_lower_neon + + add w5,w5,w22 // accumulate key block + ldp q24,q25,[sp,#0] + add x6,x6,x22,lsr#32 + ldp q26,q27,[sp,#32] + add w7,w7,w23 + ldp q28,q29,[sp,#64] + add x8,x8,x23,lsr#32 + add v0.4s,v0.4s,v24.4s + add w9,w9,w24 + add v4.4s,v4.4s,v24.4s + add x10,x10,x24,lsr#32 + add v8.4s,v8.4s,v24.4s + add w11,w11,w25 + add v12.4s,v12.4s,v24.4s + add x12,x12,x25,lsr#32 + add v16.4s,v16.4s,v24.4s + add w13,w13,w26 + add v20.4s,v20.4s,v24.4s + add x14,x14,x26,lsr#32 + add v2.4s,v2.4s,v26.4s + add w15,w15,w27 + add v6.4s,v6.4s,v26.4s + add x16,x16,x27,lsr#32 + add v10.4s,v10.4s,v26.4s + add w17,w17,w28 + add v14.4s,v14.4s,v26.4s + add x19,x19,x28,lsr#32 + add v18.4s,v18.4s,v26.4s + add w20,w20,w30 + add v22.4s,v22.4s,v26.4s + add x21,x21,x30,lsr#32 + add v19.4s,v19.4s,v31.4s // +4 + add x5,x5,x6,lsl#32 // pack + add v23.4s,v23.4s,v31.4s // +4 + add x7,x7,x8,lsl#32 + add v3.4s,v3.4s,v27.4s + ldp x6,x8,[x1,#0] // load input + add v7.4s,v7.4s,v28.4s + add x9,x9,x10,lsl#32 + add v11.4s,v11.4s,v29.4s + add x11,x11,x12,lsl#32 + add v15.4s,v15.4s,v30.4s + ldp x10,x12,[x1,#16] + add v19.4s,v19.4s,v27.4s + add x13,x13,x14,lsl#32 + add v23.4s,v23.4s,v28.4s + add x15,x15,x16,lsl#32 + add v1.4s,v1.4s,v25.4s + ldp x14,x16,[x1,#32] + add v5.4s,v5.4s,v25.4s + add x17,x17,x19,lsl#32 + add v9.4s,v9.4s,v25.4s + add x20,x20,x21,lsl#32 + add v13.4s,v13.4s,v25.4s + ldp x19,x21,[x1,#48] + add v17.4s,v17.4s,v25.4s + add x1,x1,#64 + add v21.4s,v21.4s,v25.4s + +#ifdef __AARCH64EB__ + rev x5,x5 + rev x7,x7 + rev x9,x9 + rev x11,x11 + rev x13,x13 + rev x15,x15 + rev x17,x17 + rev x20,x20 +#endif + ld1 {v24.16b,v25.16b,v26.16b,v27.16b},[x1],#64 + eor x5,x5,x6 + eor x7,x7,x8 + eor x9,x9,x10 + eor x11,x11,x12 + eor x13,x13,x14 + eor v0.16b,v0.16b,v24.16b + eor x15,x15,x16 + eor v1.16b,v1.16b,v25.16b + eor x17,x17,x19 + eor v2.16b,v2.16b,v26.16b + eor x20,x20,x21 + eor v3.16b,v3.16b,v27.16b + ld1 {v24.16b,v25.16b,v26.16b,v27.16b},[x1],#64 + + stp x5,x7,[x0,#0] // store output + add x28,x28,#7 // increment counter + stp x9,x11,[x0,#16] + stp x13,x15,[x0,#32] + stp x17,x20,[x0,#48] + add x0,x0,#64 + st1 {v0.16b,v1.16b,v2.16b,v3.16b},[x0],#64 + + ld1 {v0.16b,v1.16b,v2.16b,v3.16b},[x1],#64 + eor v4.16b,v4.16b,v24.16b + eor v5.16b,v5.16b,v25.16b + eor v6.16b,v6.16b,v26.16b + eor v7.16b,v7.16b,v27.16b + st1 {v4.16b,v5.16b,v6.16b,v7.16b},[x0],#64 + + ld1 {v4.16b,v5.16b,v6.16b,v7.16b},[x1],#64 + eor v8.16b,v8.16b,v0.16b + ldp q24,q25,[sp,#0] + eor v9.16b,v9.16b,v1.16b + ldp q26,q27,[sp,#32] + eor v10.16b,v10.16b,v2.16b + eor v11.16b,v11.16b,v3.16b + st1 {v8.16b,v9.16b,v10.16b,v11.16b},[x0],#64 + + ld1 {v8.16b,v9.16b,v10.16b,v11.16b},[x1],#64 + eor v12.16b,v12.16b,v4.16b + eor v13.16b,v13.16b,v5.16b + eor v14.16b,v14.16b,v6.16b + eor v15.16b,v15.16b,v7.16b + st1 {v12.16b,v13.16b,v14.16b,v15.16b},[x0],#64 + + ld1 {v12.16b,v13.16b,v14.16b,v15.16b},[x1],#64 + eor v16.16b,v16.16b,v8.16b + eor v17.16b,v17.16b,v9.16b + eor v18.16b,v18.16b,v10.16b + eor v19.16b,v19.16b,v11.16b + st1 {v16.16b,v17.16b,v18.16b,v19.16b},[x0],#64 + + shl v0.4s,v31.4s,#1 // 4 -> 8 + eor v20.16b,v20.16b,v12.16b + eor v21.16b,v21.16b,v13.16b + eor v22.16b,v22.16b,v14.16b + eor v23.16b,v23.16b,v15.16b + st1 {v20.16b,v21.16b,v22.16b,v23.16b},[x0],#64 + + add v27.4s,v27.4s,v0.4s // += 8 + add v28.4s,v28.4s,v0.4s + add v29.4s,v29.4s,v0.4s + add v30.4s,v30.4s,v0.4s + + b.hs Loop_outer_512_neon + + adds x2,x2,#512 + ushr v0.4s,v31.4s,#2 // 4 -> 1 + + ldp d8,d9,[sp,#128+0] // meet ABI requirements + ldp d10,d11,[sp,#128+16] + ldp d12,d13,[sp,#128+32] + ldp d14,d15,[sp,#128+48] + + stp q24,q31,[sp,#0] // wipe off-load area + stp q24,q31,[sp,#32] + stp q24,q31,[sp,#64] + + b.eq Ldone_512_neon + + cmp x2,#192 + sub v27.4s,v27.4s,v0.4s // -= 1 + sub v28.4s,v28.4s,v0.4s + sub v29.4s,v29.4s,v0.4s + add sp,sp,#128 + b.hs Loop_outer_neon + + eor v25.16b,v25.16b,v25.16b + eor v26.16b,v26.16b,v26.16b + eor v27.16b,v27.16b,v27.16b + eor v28.16b,v28.16b,v28.16b + eor v29.16b,v29.16b,v29.16b + eor v30.16b,v30.16b,v30.16b + b Loop_outer + +Ldone_512_neon: + ldp x19,x20,[x29,#16] + add sp,sp,#128+64 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 + AARCH64_VALIDATE_LINK_REGISTER + ret + +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(_WIN32) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86_64-elf.S temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86_64-elf.S --- temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86_64-elf.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86_64-elf.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,18 +1,15 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__ELF__) .text -.extern GFp_ia32cap_P -.hidden GFp_ia32cap_P +.extern OPENSSL_ia32cap_P +.hidden OPENSSL_ia32cap_P +.section .rodata .align 64 .Lzero: .long 0,0,0,0 @@ -42,15 +39,17 @@ .Lsixteen: .long 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16 .byte 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.globl GFp_ChaCha20_ctr32 -.hidden GFp_ChaCha20_ctr32 -.type GFp_ChaCha20_ctr32,@function +.text +.globl ChaCha20_ctr32 +.hidden ChaCha20_ctr32 +.type ChaCha20_ctr32,@function .align 64 -GFp_ChaCha20_ctr32: +ChaCha20_ctr32: .cfi_startproc +_CET_ENDBR cmpq $0,%rdx je .Lno_data - movq GFp_ia32cap_P+4(%rip),%r10 + movq OPENSSL_ia32cap_P+4(%rip),%r10 testl $512,%r10d jnz .LChaCha20_ssse3 @@ -328,9 +327,9 @@ leaq (%rsi),%rsp .cfi_adjust_cfa_offset -136 .Lno_data: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_ChaCha20_ctr32,.-GFp_ChaCha20_ctr32 +.size ChaCha20_ctr32,.-ChaCha20_ctr32 .type ChaCha20_ssse3,@function .align 32 ChaCha20_ssse3: @@ -465,7 +464,7 @@ leaq (%r9),%rsp .cfi_def_cfa_register rsp .Lssse3_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc .size ChaCha20_ssse3,.-ChaCha20_ssse3 .type ChaCha20_4x,@function @@ -1017,7 +1016,7 @@ leaq (%r9),%rsp .cfi_def_cfa_register rsp .L4x_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc .size ChaCha20_4x,.-ChaCha20_4x .type ChaCha20_8x,@function @@ -1623,8 +1622,7 @@ leaq (%r9),%rsp .cfi_def_cfa_register rsp .L8x_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc .size ChaCha20_8x,.-ChaCha20_8x #endif -.section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86_64-macosx.S temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86_64-macosx.S --- temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86_64-macosx.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86_64-macosx.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,17 +1,14 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__APPLE__) .text +.section __DATA,__const .p2align 6 L$zero: .long 0,0,0,0 @@ -41,15 +38,17 @@ L$sixteen: .long 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16 .byte 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.globl _GFp_ChaCha20_ctr32 -.private_extern _GFp_ChaCha20_ctr32 +.text +.globl _ChaCha20_ctr32 +.private_extern _ChaCha20_ctr32 .p2align 6 -_GFp_ChaCha20_ctr32: +_ChaCha20_ctr32: +_CET_ENDBR cmpq $0,%rdx je L$no_data - movq _GFp_ia32cap_P+4(%rip),%r10 + movq _OPENSSL_ia32cap_P+4(%rip),%r10 testl $512,%r10d jnz L$ChaCha20_ssse3 @@ -321,7 +320,7 @@ leaq (%rsi),%rsp L$no_data: - .byte 0xf3,0xc3 + ret @@ -458,7 +457,7 @@ leaq (%r9),%rsp L$ssse3_epilogue: - .byte 0xf3,0xc3 + ret @@ -1010,7 +1009,7 @@ leaq (%r9),%rsp L$4x_epilogue: - .byte 0xf3,0xc3 + ret @@ -1616,7 +1615,7 @@ leaq (%r9),%rsp L$8x_epilogue: - .byte 0xf3,0xc3 + ret #endif Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86_64-nasm.obj and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86_64-nasm.obj differ diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86-elf.S temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86-elf.S --- temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86-elf.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86-elf.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,17 +1,16 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__i386__) -#if defined(BORINGSSL_PREFIX) -#include -#endif +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__) .text -.globl GFp_ChaCha20_ctr32 -.hidden GFp_ChaCha20_ctr32 -.type GFp_ChaCha20_ctr32,@function +.globl ChaCha20_ctr32 +.hidden ChaCha20_ctr32 +.type ChaCha20_ctr32,@function .align 16 -GFp_ChaCha20_ctr32: -.L_GFp_ChaCha20_ctr32_begin: +ChaCha20_ctr32: +.L_ChaCha20_ctr32_begin: pushl %ebp pushl %ebx pushl %esi @@ -22,7 +21,7 @@ call .Lpic_point .Lpic_point: popl %eax - leal GFp_ia32cap_P-.Lpic_point(%eax),%ebp + leal OPENSSL_ia32cap_P-.Lpic_point(%eax),%ebp testl $16777216,(%ebp) jz .L001x86 testl $512,4(%ebp) @@ -379,7 +378,7 @@ popl %ebx popl %ebp ret -.size GFp_ChaCha20_ctr32,.-.L_GFp_ChaCha20_ctr32_begin +.size ChaCha20_ctr32,.-.L_ChaCha20_ctr32_begin .hidden _ChaCha20_ssse3 .type _ChaCha20_ssse3,@function .align 16 @@ -969,5 +968,4 @@ .byte 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32 .byte 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 .byte 114,103,62,0 -#endif -.section .note.GNU-stack,"",@progbits +#endif // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86-macosx.S temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86-macosx.S --- temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86-macosx.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86-macosx.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,972 +0,0 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. - -#if defined(__i386__) -#if defined(BORINGSSL_PREFIX) -#include -#endif -.text -.globl _GFp_ChaCha20_ctr32 -.private_extern _GFp_ChaCha20_ctr32 -.align 4 -_GFp_ChaCha20_ctr32: -L_GFp_ChaCha20_ctr32_begin: - pushl %ebp - pushl %ebx - pushl %esi - pushl %edi - xorl %eax,%eax - cmpl 28(%esp),%eax - je L000no_data - call Lpic_point -Lpic_point: - popl %eax - movl L_GFp_ia32cap_P$non_lazy_ptr-Lpic_point(%eax),%ebp - testl $16777216,(%ebp) - jz L001x86 - testl $512,4(%ebp) - jz L001x86 - jmp Lssse3_shortcut -L001x86: - movl 32(%esp),%esi - movl 36(%esp),%edi - subl $132,%esp - movl (%esi),%eax - movl 4(%esi),%ebx - movl 8(%esi),%ecx - movl 12(%esi),%edx - movl %eax,80(%esp) - movl %ebx,84(%esp) - movl %ecx,88(%esp) - movl %edx,92(%esp) - movl 16(%esi),%eax - movl 20(%esi),%ebx - movl 24(%esi),%ecx - movl 28(%esi),%edx - movl %eax,96(%esp) - movl %ebx,100(%esp) - movl %ecx,104(%esp) - movl %edx,108(%esp) - movl (%edi),%eax - movl 4(%edi),%ebx - movl 8(%edi),%ecx - movl 12(%edi),%edx - subl $1,%eax - movl %eax,112(%esp) - movl %ebx,116(%esp) - movl %ecx,120(%esp) - movl %edx,124(%esp) - jmp L002entry -.align 4,0x90 -L003outer_loop: - movl %ebx,156(%esp) - movl %eax,152(%esp) - movl %ecx,160(%esp) -L002entry: - movl $1634760805,%eax - movl $857760878,4(%esp) - movl $2036477234,8(%esp) - movl $1797285236,12(%esp) - movl 84(%esp),%ebx - movl 88(%esp),%ebp - movl 104(%esp),%ecx - movl 108(%esp),%esi - movl 116(%esp),%edx - movl 120(%esp),%edi - movl %ebx,20(%esp) - movl %ebp,24(%esp) - movl %ecx,40(%esp) - movl %esi,44(%esp) - movl %edx,52(%esp) - movl %edi,56(%esp) - movl 92(%esp),%ebx - movl 124(%esp),%edi - movl 112(%esp),%edx - movl 80(%esp),%ebp - movl 96(%esp),%ecx - movl 100(%esp),%esi - addl $1,%edx - movl %ebx,28(%esp) - movl %edi,60(%esp) - movl %edx,112(%esp) - movl $10,%ebx - jmp L004loop -.align 4,0x90 -L004loop: - addl %ebp,%eax - movl %ebx,128(%esp) - movl %ebp,%ebx - xorl %eax,%edx - roll $16,%edx - addl %edx,%ecx - xorl %ecx,%ebx - movl 52(%esp),%edi - roll $12,%ebx - movl 20(%esp),%ebp - addl %ebx,%eax - xorl %eax,%edx - movl %eax,(%esp) - roll $8,%edx - movl 4(%esp),%eax - addl %edx,%ecx - movl %edx,48(%esp) - xorl %ecx,%ebx - addl %ebp,%eax - roll $7,%ebx - xorl %eax,%edi - movl %ecx,32(%esp) - roll $16,%edi - movl %ebx,16(%esp) - addl %edi,%esi - movl 40(%esp),%ecx - xorl %esi,%ebp - movl 56(%esp),%edx - roll $12,%ebp - movl 24(%esp),%ebx - addl %ebp,%eax - xorl %eax,%edi - movl %eax,4(%esp) - roll $8,%edi - movl 8(%esp),%eax - addl %edi,%esi - movl %edi,52(%esp) - xorl %esi,%ebp - addl %ebx,%eax - roll $7,%ebp - xorl %eax,%edx - movl %esi,36(%esp) - roll $16,%edx - movl %ebp,20(%esp) - addl %edx,%ecx - movl 44(%esp),%esi - xorl %ecx,%ebx - movl 60(%esp),%edi - roll $12,%ebx - movl 28(%esp),%ebp - addl %ebx,%eax - xorl %eax,%edx - movl %eax,8(%esp) - roll $8,%edx - movl 12(%esp),%eax - addl %edx,%ecx - movl %edx,56(%esp) - xorl %ecx,%ebx - addl %ebp,%eax - roll $7,%ebx - xorl %eax,%edi - roll $16,%edi - movl %ebx,24(%esp) - addl %edi,%esi - xorl %esi,%ebp - roll $12,%ebp - movl 20(%esp),%ebx - addl %ebp,%eax - xorl %eax,%edi - movl %eax,12(%esp) - roll $8,%edi - movl (%esp),%eax - addl %edi,%esi - movl %edi,%edx - xorl %esi,%ebp - addl %ebx,%eax - roll $7,%ebp - xorl %eax,%edx - roll $16,%edx - movl %ebp,28(%esp) - addl %edx,%ecx - xorl %ecx,%ebx - movl 48(%esp),%edi - roll $12,%ebx - movl 24(%esp),%ebp - addl %ebx,%eax - xorl %eax,%edx - movl %eax,(%esp) - roll $8,%edx - movl 4(%esp),%eax - addl %edx,%ecx - movl %edx,60(%esp) - xorl %ecx,%ebx - addl %ebp,%eax - roll $7,%ebx - xorl %eax,%edi - movl %ecx,40(%esp) - roll $16,%edi - movl %ebx,20(%esp) - addl %edi,%esi - movl 32(%esp),%ecx - xorl %esi,%ebp - movl 52(%esp),%edx - roll $12,%ebp - movl 28(%esp),%ebx - addl %ebp,%eax - xorl %eax,%edi - movl %eax,4(%esp) - roll $8,%edi - movl 8(%esp),%eax - addl %edi,%esi - movl %edi,48(%esp) - xorl %esi,%ebp - addl %ebx,%eax - roll $7,%ebp - xorl %eax,%edx - movl %esi,44(%esp) - roll $16,%edx - movl %ebp,24(%esp) - addl %edx,%ecx - movl 36(%esp),%esi - xorl %ecx,%ebx - movl 56(%esp),%edi - roll $12,%ebx - movl 16(%esp),%ebp - addl %ebx,%eax - xorl %eax,%edx - movl %eax,8(%esp) - roll $8,%edx - movl 12(%esp),%eax - addl %edx,%ecx - movl %edx,52(%esp) - xorl %ecx,%ebx - addl %ebp,%eax - roll $7,%ebx - xorl %eax,%edi - roll $16,%edi - movl %ebx,28(%esp) - addl %edi,%esi - xorl %esi,%ebp - movl 48(%esp),%edx - roll $12,%ebp - movl 128(%esp),%ebx - addl %ebp,%eax - xorl %eax,%edi - movl %eax,12(%esp) - roll $8,%edi - movl (%esp),%eax - addl %edi,%esi - movl %edi,56(%esp) - xorl %esi,%ebp - roll $7,%ebp - decl %ebx - jnz L004loop - movl 160(%esp),%ebx - addl $1634760805,%eax - addl 80(%esp),%ebp - addl 96(%esp),%ecx - addl 100(%esp),%esi - cmpl $64,%ebx - jb L005tail - movl 156(%esp),%ebx - addl 112(%esp),%edx - addl 120(%esp),%edi - xorl (%ebx),%eax - xorl 16(%ebx),%ebp - movl %eax,(%esp) - movl 152(%esp),%eax - xorl 32(%ebx),%ecx - xorl 36(%ebx),%esi - xorl 48(%ebx),%edx - xorl 56(%ebx),%edi - movl %ebp,16(%eax) - movl %ecx,32(%eax) - movl %esi,36(%eax) - movl %edx,48(%eax) - movl %edi,56(%eax) - movl 4(%esp),%ebp - movl 8(%esp),%ecx - movl 12(%esp),%esi - movl 20(%esp),%edx - movl 24(%esp),%edi - addl $857760878,%ebp - addl $2036477234,%ecx - addl $1797285236,%esi - addl 84(%esp),%edx - addl 88(%esp),%edi - xorl 4(%ebx),%ebp - xorl 8(%ebx),%ecx - xorl 12(%ebx),%esi - xorl 20(%ebx),%edx - xorl 24(%ebx),%edi - movl %ebp,4(%eax) - movl %ecx,8(%eax) - movl %esi,12(%eax) - movl %edx,20(%eax) - movl %edi,24(%eax) - movl 28(%esp),%ebp - movl 40(%esp),%ecx - movl 44(%esp),%esi - movl 52(%esp),%edx - movl 60(%esp),%edi - addl 92(%esp),%ebp - addl 104(%esp),%ecx - addl 108(%esp),%esi - addl 116(%esp),%edx - addl 124(%esp),%edi - xorl 28(%ebx),%ebp - xorl 40(%ebx),%ecx - xorl 44(%ebx),%esi - xorl 52(%ebx),%edx - xorl 60(%ebx),%edi - leal 64(%ebx),%ebx - movl %ebp,28(%eax) - movl (%esp),%ebp - movl %ecx,40(%eax) - movl 160(%esp),%ecx - movl %esi,44(%eax) - movl %edx,52(%eax) - movl %edi,60(%eax) - movl %ebp,(%eax) - leal 64(%eax),%eax - subl $64,%ecx - jnz L003outer_loop - jmp L006done -L005tail: - addl 112(%esp),%edx - addl 120(%esp),%edi - movl %eax,(%esp) - movl %ebp,16(%esp) - movl %ecx,32(%esp) - movl %esi,36(%esp) - movl %edx,48(%esp) - movl %edi,56(%esp) - movl 4(%esp),%ebp - movl 8(%esp),%ecx - movl 12(%esp),%esi - movl 20(%esp),%edx - movl 24(%esp),%edi - addl $857760878,%ebp - addl $2036477234,%ecx - addl $1797285236,%esi - addl 84(%esp),%edx - addl 88(%esp),%edi - movl %ebp,4(%esp) - movl %ecx,8(%esp) - movl %esi,12(%esp) - movl %edx,20(%esp) - movl %edi,24(%esp) - movl 28(%esp),%ebp - movl 40(%esp),%ecx - movl 44(%esp),%esi - movl 52(%esp),%edx - movl 60(%esp),%edi - addl 92(%esp),%ebp - addl 104(%esp),%ecx - addl 108(%esp),%esi - addl 116(%esp),%edx - addl 124(%esp),%edi - movl %ebp,28(%esp) - movl 156(%esp),%ebp - movl %ecx,40(%esp) - movl 152(%esp),%ecx - movl %esi,44(%esp) - xorl %esi,%esi - movl %edx,52(%esp) - movl %edi,60(%esp) - xorl %eax,%eax - xorl %edx,%edx -L007tail_loop: - movb (%esi,%ebp,1),%al - movb (%esp,%esi,1),%dl - leal 1(%esi),%esi - xorb %dl,%al - movb %al,-1(%ecx,%esi,1) - decl %ebx - jnz L007tail_loop -L006done: - addl $132,%esp -L000no_data: - popl %edi - popl %esi - popl %ebx - popl %ebp - ret -.private_extern __ChaCha20_ssse3 -.align 4 -__ChaCha20_ssse3: - pushl %ebp - pushl %ebx - pushl %esi - pushl %edi -Lssse3_shortcut: - movl 20(%esp),%edi - movl 24(%esp),%esi - movl 28(%esp),%ecx - movl 32(%esp),%edx - movl 36(%esp),%ebx - movl %esp,%ebp - subl $524,%esp - andl $-64,%esp - movl %ebp,512(%esp) - leal Lssse3_data-Lpic_point(%eax),%eax - movdqu (%ebx),%xmm3 - cmpl $256,%ecx - jb L0081x - movl %edx,516(%esp) - movl %ebx,520(%esp) - subl $256,%ecx - leal 384(%esp),%ebp - movdqu (%edx),%xmm7 - pshufd $0,%xmm3,%xmm0 - pshufd $85,%xmm3,%xmm1 - pshufd $170,%xmm3,%xmm2 - pshufd $255,%xmm3,%xmm3 - paddd 48(%eax),%xmm0 - pshufd $0,%xmm7,%xmm4 - pshufd $85,%xmm7,%xmm5 - psubd 64(%eax),%xmm0 - pshufd $170,%xmm7,%xmm6 - pshufd $255,%xmm7,%xmm7 - movdqa %xmm0,64(%ebp) - movdqa %xmm1,80(%ebp) - movdqa %xmm2,96(%ebp) - movdqa %xmm3,112(%ebp) - movdqu 16(%edx),%xmm3 - movdqa %xmm4,-64(%ebp) - movdqa %xmm5,-48(%ebp) - movdqa %xmm6,-32(%ebp) - movdqa %xmm7,-16(%ebp) - movdqa 32(%eax),%xmm7 - leal 128(%esp),%ebx - pshufd $0,%xmm3,%xmm0 - pshufd $85,%xmm3,%xmm1 - pshufd $170,%xmm3,%xmm2 - pshufd $255,%xmm3,%xmm3 - pshufd $0,%xmm7,%xmm4 - pshufd $85,%xmm7,%xmm5 - pshufd $170,%xmm7,%xmm6 - pshufd $255,%xmm7,%xmm7 - movdqa %xmm0,(%ebp) - movdqa %xmm1,16(%ebp) - movdqa %xmm2,32(%ebp) - movdqa %xmm3,48(%ebp) - movdqa %xmm4,-128(%ebp) - movdqa %xmm5,-112(%ebp) - movdqa %xmm6,-96(%ebp) - movdqa %xmm7,-80(%ebp) - leal 128(%esi),%esi - leal 128(%edi),%edi - jmp L009outer_loop -.align 4,0x90 -L009outer_loop: - movdqa -112(%ebp),%xmm1 - movdqa -96(%ebp),%xmm2 - movdqa -80(%ebp),%xmm3 - movdqa -48(%ebp),%xmm5 - movdqa -32(%ebp),%xmm6 - movdqa -16(%ebp),%xmm7 - movdqa %xmm1,-112(%ebx) - movdqa %xmm2,-96(%ebx) - movdqa %xmm3,-80(%ebx) - movdqa %xmm5,-48(%ebx) - movdqa %xmm6,-32(%ebx) - movdqa %xmm7,-16(%ebx) - movdqa 32(%ebp),%xmm2 - movdqa 48(%ebp),%xmm3 - movdqa 64(%ebp),%xmm4 - movdqa 80(%ebp),%xmm5 - movdqa 96(%ebp),%xmm6 - movdqa 112(%ebp),%xmm7 - paddd 64(%eax),%xmm4 - movdqa %xmm2,32(%ebx) - movdqa %xmm3,48(%ebx) - movdqa %xmm4,64(%ebx) - movdqa %xmm5,80(%ebx) - movdqa %xmm6,96(%ebx) - movdqa %xmm7,112(%ebx) - movdqa %xmm4,64(%ebp) - movdqa -128(%ebp),%xmm0 - movdqa %xmm4,%xmm6 - movdqa -64(%ebp),%xmm3 - movdqa (%ebp),%xmm4 - movdqa 16(%ebp),%xmm5 - movl $10,%edx - nop -.align 4,0x90 -L010loop: - paddd %xmm3,%xmm0 - movdqa %xmm3,%xmm2 - pxor %xmm0,%xmm6 - pshufb (%eax),%xmm6 - paddd %xmm6,%xmm4 - pxor %xmm4,%xmm2 - movdqa -48(%ebx),%xmm3 - movdqa %xmm2,%xmm1 - pslld $12,%xmm2 - psrld $20,%xmm1 - por %xmm1,%xmm2 - movdqa -112(%ebx),%xmm1 - paddd %xmm2,%xmm0 - movdqa 80(%ebx),%xmm7 - pxor %xmm0,%xmm6 - movdqa %xmm0,-128(%ebx) - pshufb 16(%eax),%xmm6 - paddd %xmm6,%xmm4 - movdqa %xmm6,64(%ebx) - pxor %xmm4,%xmm2 - paddd %xmm3,%xmm1 - movdqa %xmm2,%xmm0 - pslld $7,%xmm2 - psrld $25,%xmm0 - pxor %xmm1,%xmm7 - por %xmm0,%xmm2 - movdqa %xmm4,(%ebx) - pshufb (%eax),%xmm7 - movdqa %xmm2,-64(%ebx) - paddd %xmm7,%xmm5 - movdqa 32(%ebx),%xmm4 - pxor %xmm5,%xmm3 - movdqa -32(%ebx),%xmm2 - movdqa %xmm3,%xmm0 - pslld $12,%xmm3 - psrld $20,%xmm0 - por %xmm0,%xmm3 - movdqa -96(%ebx),%xmm0 - paddd %xmm3,%xmm1 - movdqa 96(%ebx),%xmm6 - pxor %xmm1,%xmm7 - movdqa %xmm1,-112(%ebx) - pshufb 16(%eax),%xmm7 - paddd %xmm7,%xmm5 - movdqa %xmm7,80(%ebx) - pxor %xmm5,%xmm3 - paddd %xmm2,%xmm0 - movdqa %xmm3,%xmm1 - pslld $7,%xmm3 - psrld $25,%xmm1 - pxor %xmm0,%xmm6 - por %xmm1,%xmm3 - movdqa %xmm5,16(%ebx) - pshufb (%eax),%xmm6 - movdqa %xmm3,-48(%ebx) - paddd %xmm6,%xmm4 - movdqa 48(%ebx),%xmm5 - pxor %xmm4,%xmm2 - movdqa -16(%ebx),%xmm3 - movdqa %xmm2,%xmm1 - pslld $12,%xmm2 - psrld $20,%xmm1 - por %xmm1,%xmm2 - movdqa -80(%ebx),%xmm1 - paddd %xmm2,%xmm0 - movdqa 112(%ebx),%xmm7 - pxor %xmm0,%xmm6 - movdqa %xmm0,-96(%ebx) - pshufb 16(%eax),%xmm6 - paddd %xmm6,%xmm4 - movdqa %xmm6,96(%ebx) - pxor %xmm4,%xmm2 - paddd %xmm3,%xmm1 - movdqa %xmm2,%xmm0 - pslld $7,%xmm2 - psrld $25,%xmm0 - pxor %xmm1,%xmm7 - por %xmm0,%xmm2 - pshufb (%eax),%xmm7 - movdqa %xmm2,-32(%ebx) - paddd %xmm7,%xmm5 - pxor %xmm5,%xmm3 - movdqa -48(%ebx),%xmm2 - movdqa %xmm3,%xmm0 - pslld $12,%xmm3 - psrld $20,%xmm0 - por %xmm0,%xmm3 - movdqa -128(%ebx),%xmm0 - paddd %xmm3,%xmm1 - pxor %xmm1,%xmm7 - movdqa %xmm1,-80(%ebx) - pshufb 16(%eax),%xmm7 - paddd %xmm7,%xmm5 - movdqa %xmm7,%xmm6 - pxor %xmm5,%xmm3 - paddd %xmm2,%xmm0 - movdqa %xmm3,%xmm1 - pslld $7,%xmm3 - psrld $25,%xmm1 - pxor %xmm0,%xmm6 - por %xmm1,%xmm3 - pshufb (%eax),%xmm6 - movdqa %xmm3,-16(%ebx) - paddd %xmm6,%xmm4 - pxor %xmm4,%xmm2 - movdqa -32(%ebx),%xmm3 - movdqa %xmm2,%xmm1 - pslld $12,%xmm2 - psrld $20,%xmm1 - por %xmm1,%xmm2 - movdqa -112(%ebx),%xmm1 - paddd %xmm2,%xmm0 - movdqa 64(%ebx),%xmm7 - pxor %xmm0,%xmm6 - movdqa %xmm0,-128(%ebx) - pshufb 16(%eax),%xmm6 - paddd %xmm6,%xmm4 - movdqa %xmm6,112(%ebx) - pxor %xmm4,%xmm2 - paddd %xmm3,%xmm1 - movdqa %xmm2,%xmm0 - pslld $7,%xmm2 - psrld $25,%xmm0 - pxor %xmm1,%xmm7 - por %xmm0,%xmm2 - movdqa %xmm4,32(%ebx) - pshufb (%eax),%xmm7 - movdqa %xmm2,-48(%ebx) - paddd %xmm7,%xmm5 - movdqa (%ebx),%xmm4 - pxor %xmm5,%xmm3 - movdqa -16(%ebx),%xmm2 - movdqa %xmm3,%xmm0 - pslld $12,%xmm3 - psrld $20,%xmm0 - por %xmm0,%xmm3 - movdqa -96(%ebx),%xmm0 - paddd %xmm3,%xmm1 - movdqa 80(%ebx),%xmm6 - pxor %xmm1,%xmm7 - movdqa %xmm1,-112(%ebx) - pshufb 16(%eax),%xmm7 - paddd %xmm7,%xmm5 - movdqa %xmm7,64(%ebx) - pxor %xmm5,%xmm3 - paddd %xmm2,%xmm0 - movdqa %xmm3,%xmm1 - pslld $7,%xmm3 - psrld $25,%xmm1 - pxor %xmm0,%xmm6 - por %xmm1,%xmm3 - movdqa %xmm5,48(%ebx) - pshufb (%eax),%xmm6 - movdqa %xmm3,-32(%ebx) - paddd %xmm6,%xmm4 - movdqa 16(%ebx),%xmm5 - pxor %xmm4,%xmm2 - movdqa -64(%ebx),%xmm3 - movdqa %xmm2,%xmm1 - pslld $12,%xmm2 - psrld $20,%xmm1 - por %xmm1,%xmm2 - movdqa -80(%ebx),%xmm1 - paddd %xmm2,%xmm0 - movdqa 96(%ebx),%xmm7 - pxor %xmm0,%xmm6 - movdqa %xmm0,-96(%ebx) - pshufb 16(%eax),%xmm6 - paddd %xmm6,%xmm4 - movdqa %xmm6,80(%ebx) - pxor %xmm4,%xmm2 - paddd %xmm3,%xmm1 - movdqa %xmm2,%xmm0 - pslld $7,%xmm2 - psrld $25,%xmm0 - pxor %xmm1,%xmm7 - por %xmm0,%xmm2 - pshufb (%eax),%xmm7 - movdqa %xmm2,-16(%ebx) - paddd %xmm7,%xmm5 - pxor %xmm5,%xmm3 - movdqa %xmm3,%xmm0 - pslld $12,%xmm3 - psrld $20,%xmm0 - por %xmm0,%xmm3 - movdqa -128(%ebx),%xmm0 - paddd %xmm3,%xmm1 - movdqa 64(%ebx),%xmm6 - pxor %xmm1,%xmm7 - movdqa %xmm1,-80(%ebx) - pshufb 16(%eax),%xmm7 - paddd %xmm7,%xmm5 - movdqa %xmm7,96(%ebx) - pxor %xmm5,%xmm3 - movdqa %xmm3,%xmm1 - pslld $7,%xmm3 - psrld $25,%xmm1 - por %xmm1,%xmm3 - decl %edx - jnz L010loop - movdqa %xmm3,-64(%ebx) - movdqa %xmm4,(%ebx) - movdqa %xmm5,16(%ebx) - movdqa %xmm6,64(%ebx) - movdqa %xmm7,96(%ebx) - movdqa -112(%ebx),%xmm1 - movdqa -96(%ebx),%xmm2 - movdqa -80(%ebx),%xmm3 - paddd -128(%ebp),%xmm0 - paddd -112(%ebp),%xmm1 - paddd -96(%ebp),%xmm2 - paddd -80(%ebp),%xmm3 - movdqa %xmm0,%xmm6 - punpckldq %xmm1,%xmm0 - movdqa %xmm2,%xmm7 - punpckldq %xmm3,%xmm2 - punpckhdq %xmm1,%xmm6 - punpckhdq %xmm3,%xmm7 - movdqa %xmm0,%xmm1 - punpcklqdq %xmm2,%xmm0 - movdqa %xmm6,%xmm3 - punpcklqdq %xmm7,%xmm6 - punpckhqdq %xmm2,%xmm1 - punpckhqdq %xmm7,%xmm3 - movdqu -128(%esi),%xmm4 - movdqu -64(%esi),%xmm5 - movdqu (%esi),%xmm2 - movdqu 64(%esi),%xmm7 - leal 16(%esi),%esi - pxor %xmm0,%xmm4 - movdqa -64(%ebx),%xmm0 - pxor %xmm1,%xmm5 - movdqa -48(%ebx),%xmm1 - pxor %xmm2,%xmm6 - movdqa -32(%ebx),%xmm2 - pxor %xmm3,%xmm7 - movdqa -16(%ebx),%xmm3 - movdqu %xmm4,-128(%edi) - movdqu %xmm5,-64(%edi) - movdqu %xmm6,(%edi) - movdqu %xmm7,64(%edi) - leal 16(%edi),%edi - paddd -64(%ebp),%xmm0 - paddd -48(%ebp),%xmm1 - paddd -32(%ebp),%xmm2 - paddd -16(%ebp),%xmm3 - movdqa %xmm0,%xmm6 - punpckldq %xmm1,%xmm0 - movdqa %xmm2,%xmm7 - punpckldq %xmm3,%xmm2 - punpckhdq %xmm1,%xmm6 - punpckhdq %xmm3,%xmm7 - movdqa %xmm0,%xmm1 - punpcklqdq %xmm2,%xmm0 - movdqa %xmm6,%xmm3 - punpcklqdq %xmm7,%xmm6 - punpckhqdq %xmm2,%xmm1 - punpckhqdq %xmm7,%xmm3 - movdqu -128(%esi),%xmm4 - movdqu -64(%esi),%xmm5 - movdqu (%esi),%xmm2 - movdqu 64(%esi),%xmm7 - leal 16(%esi),%esi - pxor %xmm0,%xmm4 - movdqa (%ebx),%xmm0 - pxor %xmm1,%xmm5 - movdqa 16(%ebx),%xmm1 - pxor %xmm2,%xmm6 - movdqa 32(%ebx),%xmm2 - pxor %xmm3,%xmm7 - movdqa 48(%ebx),%xmm3 - movdqu %xmm4,-128(%edi) - movdqu %xmm5,-64(%edi) - movdqu %xmm6,(%edi) - movdqu %xmm7,64(%edi) - leal 16(%edi),%edi - paddd (%ebp),%xmm0 - paddd 16(%ebp),%xmm1 - paddd 32(%ebp),%xmm2 - paddd 48(%ebp),%xmm3 - movdqa %xmm0,%xmm6 - punpckldq %xmm1,%xmm0 - movdqa %xmm2,%xmm7 - punpckldq %xmm3,%xmm2 - punpckhdq %xmm1,%xmm6 - punpckhdq %xmm3,%xmm7 - movdqa %xmm0,%xmm1 - punpcklqdq %xmm2,%xmm0 - movdqa %xmm6,%xmm3 - punpcklqdq %xmm7,%xmm6 - punpckhqdq %xmm2,%xmm1 - punpckhqdq %xmm7,%xmm3 - movdqu -128(%esi),%xmm4 - movdqu -64(%esi),%xmm5 - movdqu (%esi),%xmm2 - movdqu 64(%esi),%xmm7 - leal 16(%esi),%esi - pxor %xmm0,%xmm4 - movdqa 64(%ebx),%xmm0 - pxor %xmm1,%xmm5 - movdqa 80(%ebx),%xmm1 - pxor %xmm2,%xmm6 - movdqa 96(%ebx),%xmm2 - pxor %xmm3,%xmm7 - movdqa 112(%ebx),%xmm3 - movdqu %xmm4,-128(%edi) - movdqu %xmm5,-64(%edi) - movdqu %xmm6,(%edi) - movdqu %xmm7,64(%edi) - leal 16(%edi),%edi - paddd 64(%ebp),%xmm0 - paddd 80(%ebp),%xmm1 - paddd 96(%ebp),%xmm2 - paddd 112(%ebp),%xmm3 - movdqa %xmm0,%xmm6 - punpckldq %xmm1,%xmm0 - movdqa %xmm2,%xmm7 - punpckldq %xmm3,%xmm2 - punpckhdq %xmm1,%xmm6 - punpckhdq %xmm3,%xmm7 - movdqa %xmm0,%xmm1 - punpcklqdq %xmm2,%xmm0 - movdqa %xmm6,%xmm3 - punpcklqdq %xmm7,%xmm6 - punpckhqdq %xmm2,%xmm1 - punpckhqdq %xmm7,%xmm3 - movdqu -128(%esi),%xmm4 - movdqu -64(%esi),%xmm5 - movdqu (%esi),%xmm2 - movdqu 64(%esi),%xmm7 - leal 208(%esi),%esi - pxor %xmm0,%xmm4 - pxor %xmm1,%xmm5 - pxor %xmm2,%xmm6 - pxor %xmm3,%xmm7 - movdqu %xmm4,-128(%edi) - movdqu %xmm5,-64(%edi) - movdqu %xmm6,(%edi) - movdqu %xmm7,64(%edi) - leal 208(%edi),%edi - subl $256,%ecx - jnc L009outer_loop - addl $256,%ecx - jz L011done - movl 520(%esp),%ebx - leal -128(%esi),%esi - movl 516(%esp),%edx - leal -128(%edi),%edi - movd 64(%ebp),%xmm2 - movdqu (%ebx),%xmm3 - paddd 96(%eax),%xmm2 - pand 112(%eax),%xmm3 - por %xmm2,%xmm3 -L0081x: - movdqa 32(%eax),%xmm0 - movdqu (%edx),%xmm1 - movdqu 16(%edx),%xmm2 - movdqa (%eax),%xmm6 - movdqa 16(%eax),%xmm7 - movl %ebp,48(%esp) - movdqa %xmm0,(%esp) - movdqa %xmm1,16(%esp) - movdqa %xmm2,32(%esp) - movdqa %xmm3,48(%esp) - movl $10,%edx - jmp L012loop1x -.align 4,0x90 -L013outer1x: - movdqa 80(%eax),%xmm3 - movdqa (%esp),%xmm0 - movdqa 16(%esp),%xmm1 - movdqa 32(%esp),%xmm2 - paddd 48(%esp),%xmm3 - movl $10,%edx - movdqa %xmm3,48(%esp) - jmp L012loop1x -.align 4,0x90 -L012loop1x: - paddd %xmm1,%xmm0 - pxor %xmm0,%xmm3 -.byte 102,15,56,0,222 - paddd %xmm3,%xmm2 - pxor %xmm2,%xmm1 - movdqa %xmm1,%xmm4 - psrld $20,%xmm1 - pslld $12,%xmm4 - por %xmm4,%xmm1 - paddd %xmm1,%xmm0 - pxor %xmm0,%xmm3 -.byte 102,15,56,0,223 - paddd %xmm3,%xmm2 - pxor %xmm2,%xmm1 - movdqa %xmm1,%xmm4 - psrld $25,%xmm1 - pslld $7,%xmm4 - por %xmm4,%xmm1 - pshufd $78,%xmm2,%xmm2 - pshufd $57,%xmm1,%xmm1 - pshufd $147,%xmm3,%xmm3 - nop - paddd %xmm1,%xmm0 - pxor %xmm0,%xmm3 -.byte 102,15,56,0,222 - paddd %xmm3,%xmm2 - pxor %xmm2,%xmm1 - movdqa %xmm1,%xmm4 - psrld $20,%xmm1 - pslld $12,%xmm4 - por %xmm4,%xmm1 - paddd %xmm1,%xmm0 - pxor %xmm0,%xmm3 -.byte 102,15,56,0,223 - paddd %xmm3,%xmm2 - pxor %xmm2,%xmm1 - movdqa %xmm1,%xmm4 - psrld $25,%xmm1 - pslld $7,%xmm4 - por %xmm4,%xmm1 - pshufd $78,%xmm2,%xmm2 - pshufd $147,%xmm1,%xmm1 - pshufd $57,%xmm3,%xmm3 - decl %edx - jnz L012loop1x - paddd (%esp),%xmm0 - paddd 16(%esp),%xmm1 - paddd 32(%esp),%xmm2 - paddd 48(%esp),%xmm3 - cmpl $64,%ecx - jb L014tail - movdqu (%esi),%xmm4 - movdqu 16(%esi),%xmm5 - pxor %xmm4,%xmm0 - movdqu 32(%esi),%xmm4 - pxor %xmm5,%xmm1 - movdqu 48(%esi),%xmm5 - pxor %xmm4,%xmm2 - pxor %xmm5,%xmm3 - leal 64(%esi),%esi - movdqu %xmm0,(%edi) - movdqu %xmm1,16(%edi) - movdqu %xmm2,32(%edi) - movdqu %xmm3,48(%edi) - leal 64(%edi),%edi - subl $64,%ecx - jnz L013outer1x - jmp L011done -L014tail: - movdqa %xmm0,(%esp) - movdqa %xmm1,16(%esp) - movdqa %xmm2,32(%esp) - movdqa %xmm3,48(%esp) - xorl %eax,%eax - xorl %edx,%edx - xorl %ebp,%ebp -L015tail_loop: - movb (%esp,%ebp,1),%al - movb (%esi,%ebp,1),%dl - leal 1(%ebp),%ebp - xorb %dl,%al - movb %al,-1(%edi,%ebp,1) - decl %ecx - jnz L015tail_loop -L011done: - movl 512(%esp),%esp - popl %edi - popl %esi - popl %ebx - popl %ebp - ret -.align 6,0x90 -Lssse3_data: -.byte 2,3,0,1,6,7,4,5,10,11,8,9,14,15,12,13 -.byte 3,0,1,2,7,4,5,6,11,8,9,10,15,12,13,14 -.long 1634760805,857760878,2036477234,1797285236 -.long 0,1,2,3 -.long 4,4,4,4 -.long 1,0,0,0 -.long 4,0,0,0 -.long 0,-1,-1,-1 -.align 6,0x90 -.byte 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54 -.byte 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32 -.byte 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 -.byte 114,103,62,0 -.section __IMPORT,__pointers,non_lazy_symbol_pointers -L_GFp_ia32cap_P$non_lazy_ptr: -.indirect_symbol _GFp_ia32cap_P -.long 0 -#endif Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86-win32n.obj and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/pregenerated/chacha-x86-win32n.obj differ diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-armv4-ios32.S temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-armv4-ios32.S --- temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-armv4-ios32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-armv4-ios32.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,1114 +0,0 @@ -// This file is generated from a similarly-named Perl script in the BoringSSL -// source tree. Do not edit by hand. - -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif - -#if !defined(OPENSSL_NO_ASM) -#include - -.text -#if defined(__thumb2__) -.syntax unified -.thumb -#else -.code 32 -#endif - -.byte 69,67,80,95,78,73,83,84,90,50,53,54,32,102,111,114,32,65,82,77,118,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.align 2 -.align 6 -#ifdef __thumb2__ -.thumb_func __ecp_nistz256_mul_by_2 -#endif -.align 4 -__ecp_nistz256_mul_by_2: - ldr r4,[r1,#0] - ldr r5,[r1,#4] - ldr r6,[r1,#8] - adds r4,r4,r4 @ a[0:7]+=a[0:7], i.e. add with itself - ldr r7,[r1,#12] - adcs r5,r5,r5 - ldr r8,[r1,#16] - adcs r6,r6,r6 - ldr r9,[r1,#20] - adcs r7,r7,r7 - ldr r10,[r1,#24] - adcs r8,r8,r8 - ldr r11,[r1,#28] - adcs r9,r9,r9 - adcs r10,r10,r10 - mov r3,#0 - adcs r11,r11,r11 - adc r3,r3,#0 - - b Lreduce_by_sub - - -@ void GFp_nistz256_add(BN_ULONG r0[8],const BN_ULONG r1[8], -@ const BN_ULONG r2[8]); -.globl _GFp_nistz256_add -.private_extern _GFp_nistz256_add -#ifdef __thumb2__ -.thumb_func _GFp_nistz256_add -#endif -.align 4 -_GFp_nistz256_add: - stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - bl __ecp_nistz256_add -#if __ARM_ARCH__>=5 || !defined(__thumb__) - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} -#else - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - bx lr @ interoperable with Thumb ISA:-) -#endif - - -#ifdef __thumb2__ -.thumb_func __ecp_nistz256_add -#endif -.align 4 -__ecp_nistz256_add: - str lr,[sp,#-4]! @ push lr - - ldr r4,[r1,#0] - ldr r5,[r1,#4] - ldr r6,[r1,#8] - ldr r7,[r1,#12] - ldr r8,[r1,#16] - ldr r3,[r2,#0] - ldr r9,[r1,#20] - ldr r12,[r2,#4] - ldr r10,[r1,#24] - ldr r14,[r2,#8] - ldr r11,[r1,#28] - ldr r1,[r2,#12] - adds r4,r4,r3 - ldr r3,[r2,#16] - adcs r5,r5,r12 - ldr r12,[r2,#20] - adcs r6,r6,r14 - ldr r14,[r2,#24] - adcs r7,r7,r1 - ldr r1,[r2,#28] - adcs r8,r8,r3 - adcs r9,r9,r12 - adcs r10,r10,r14 - mov r3,#0 - adcs r11,r11,r1 - adc r3,r3,#0 - ldr lr,[sp],#4 @ pop lr - -Lreduce_by_sub: - - @ if a+b >= modulus, subtract modulus. - @ - @ But since comparison implies subtraction, we subtract - @ modulus and then add it back if subtraction borrowed. - - subs r4,r4,#-1 - sbcs r5,r5,#-1 - sbcs r6,r6,#-1 - sbcs r7,r7,#0 - sbcs r8,r8,#0 - sbcs r9,r9,#0 - sbcs r10,r10,#1 - sbcs r11,r11,#-1 - sbc r3,r3,#0 - - @ Note that because mod has special form, i.e. consists of - @ 0xffffffff, 1 and 0s, we can conditionally synthesize it by - @ using value of borrow as a whole or extracting single bit. - @ Follow r3 register... - - adds r4,r4,r3 @ add synthesized modulus - adcs r5,r5,r3 - str r4,[r0,#0] - adcs r6,r6,r3 - str r5,[r0,#4] - adcs r7,r7,#0 - str r6,[r0,#8] - adcs r8,r8,#0 - str r7,[r0,#12] - adcs r9,r9,#0 - str r8,[r0,#16] - adcs r10,r10,r3,lsr#31 - str r9,[r0,#20] - adcs r11,r11,r3 - str r10,[r0,#24] - str r11,[r0,#28] - - mov pc,lr - - -#ifdef __thumb2__ -.thumb_func __ecp_nistz256_mul_by_3 -#endif -.align 4 -__ecp_nistz256_mul_by_3: - str lr,[sp,#-4]! @ push lr - - @ As multiplication by 3 is performed as 2*n+n, below are inline - @ copies of __ecp_nistz256_mul_by_2 and __ecp_nistz256_add, see - @ corresponding subroutines for details. - - ldr r4,[r1,#0] - ldr r5,[r1,#4] - ldr r6,[r1,#8] - adds r4,r4,r4 @ a[0:7]+=a[0:7] - ldr r7,[r1,#12] - adcs r5,r5,r5 - ldr r8,[r1,#16] - adcs r6,r6,r6 - ldr r9,[r1,#20] - adcs r7,r7,r7 - ldr r10,[r1,#24] - adcs r8,r8,r8 - ldr r11,[r1,#28] - adcs r9,r9,r9 - adcs r10,r10,r10 - mov r3,#0 - adcs r11,r11,r11 - adc r3,r3,#0 - - subs r4,r4,#-1 @ Lreduce_by_sub but without stores - sbcs r5,r5,#-1 - sbcs r6,r6,#-1 - sbcs r7,r7,#0 - sbcs r8,r8,#0 - sbcs r9,r9,#0 - sbcs r10,r10,#1 - sbcs r11,r11,#-1 - sbc r3,r3,#0 - - adds r4,r4,r3 @ add synthesized modulus - adcs r5,r5,r3 - adcs r6,r6,r3 - adcs r7,r7,#0 - adcs r8,r8,#0 - ldr r2,[r1,#0] - adcs r9,r9,#0 - ldr r12,[r1,#4] - adcs r10,r10,r3,lsr#31 - ldr r14,[r1,#8] - adc r11,r11,r3 - - ldr r3,[r1,#12] - adds r4,r4,r2 @ 2*a[0:7]+=a[0:7] - ldr r2,[r1,#16] - adcs r5,r5,r12 - ldr r12,[r1,#20] - adcs r6,r6,r14 - ldr r14,[r1,#24] - adcs r7,r7,r3 - ldr r1,[r1,#28] - adcs r8,r8,r2 - adcs r9,r9,r12 - adcs r10,r10,r14 - mov r3,#0 - adcs r11,r11,r1 - adc r3,r3,#0 - ldr lr,[sp],#4 @ pop lr - - b Lreduce_by_sub - - -#ifdef __thumb2__ -.thumb_func __ecp_nistz256_div_by_2 -#endif -.align 4 -__ecp_nistz256_div_by_2: - @ ret = (a is odd ? a+mod : a) >> 1 - - ldr r4,[r1,#0] - ldr r5,[r1,#4] - ldr r6,[r1,#8] - mov r3,r4,lsl#31 @ place least significant bit to most - @ significant position, now arithmetic - @ right shift by 31 will produce -1 or - @ 0, while logical right shift 1 or 0, - @ this is how modulus is conditionally - @ synthesized in this case... - ldr r7,[r1,#12] - adds r4,r4,r3,asr#31 - ldr r8,[r1,#16] - adcs r5,r5,r3,asr#31 - ldr r9,[r1,#20] - adcs r6,r6,r3,asr#31 - ldr r10,[r1,#24] - adcs r7,r7,#0 - ldr r11,[r1,#28] - adcs r8,r8,#0 - mov r4,r4,lsr#1 @ a[0:7]>>=1, we can start early - @ because it doesn't affect flags - adcs r9,r9,#0 - orr r4,r4,r5,lsl#31 - adcs r10,r10,r3,lsr#31 - mov r2,#0 - adcs r11,r11,r3,asr#31 - mov r5,r5,lsr#1 - adc r2,r2,#0 @ top-most carry bit from addition - - orr r5,r5,r6,lsl#31 - mov r6,r6,lsr#1 - str r4,[r0,#0] - orr r6,r6,r7,lsl#31 - mov r7,r7,lsr#1 - str r5,[r0,#4] - orr r7,r7,r8,lsl#31 - mov r8,r8,lsr#1 - str r6,[r0,#8] - orr r8,r8,r9,lsl#31 - mov r9,r9,lsr#1 - str r7,[r0,#12] - orr r9,r9,r10,lsl#31 - mov r10,r10,lsr#1 - str r8,[r0,#16] - orr r10,r10,r11,lsl#31 - mov r11,r11,lsr#1 - str r9,[r0,#20] - orr r11,r11,r2,lsl#31 @ don't forget the top-most carry bit - str r10,[r0,#24] - str r11,[r0,#28] - - mov pc,lr - - -#ifdef __thumb2__ -.thumb_func __ecp_nistz256_sub -#endif -.align 4 -__ecp_nistz256_sub: - str lr,[sp,#-4]! @ push lr - - ldr r4,[r1,#0] - ldr r5,[r1,#4] - ldr r6,[r1,#8] - ldr r7,[r1,#12] - ldr r8,[r1,#16] - ldr r3,[r2,#0] - ldr r9,[r1,#20] - ldr r12,[r2,#4] - ldr r10,[r1,#24] - ldr r14,[r2,#8] - ldr r11,[r1,#28] - ldr r1,[r2,#12] - subs r4,r4,r3 - ldr r3,[r2,#16] - sbcs r5,r5,r12 - ldr r12,[r2,#20] - sbcs r6,r6,r14 - ldr r14,[r2,#24] - sbcs r7,r7,r1 - ldr r1,[r2,#28] - sbcs r8,r8,r3 - sbcs r9,r9,r12 - sbcs r10,r10,r14 - sbcs r11,r11,r1 - sbc r3,r3,r3 @ broadcast borrow bit - ldr lr,[sp],#4 @ pop lr - -Lreduce_by_add: - - @ if a-b borrows, add modulus. - @ - @ Note that because mod has special form, i.e. consists of - @ 0xffffffff, 1 and 0s, we can conditionally synthesize it by - @ broadcasting borrow bit to a register, r3, and using it as - @ a whole or extracting single bit. - - adds r4,r4,r3 @ add synthesized modulus - adcs r5,r5,r3 - str r4,[r0,#0] - adcs r6,r6,r3 - str r5,[r0,#4] - adcs r7,r7,#0 - str r6,[r0,#8] - adcs r8,r8,#0 - str r7,[r0,#12] - adcs r9,r9,#0 - str r8,[r0,#16] - adcs r10,r10,r3,lsr#31 - str r9,[r0,#20] - adcs r11,r11,r3 - str r10,[r0,#24] - str r11,[r0,#28] - - mov pc,lr - - -@ void GFp_nistz256_neg(BN_ULONG r0[8],const BN_ULONG r1[8]); -.globl _GFp_nistz256_neg -.private_extern _GFp_nistz256_neg -#ifdef __thumb2__ -.thumb_func _GFp_nistz256_neg -#endif -.align 4 -_GFp_nistz256_neg: - stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - bl __ecp_nistz256_neg -#if __ARM_ARCH__>=5 || !defined(__thumb__) - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} -#else - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - bx lr @ interoperable with Thumb ISA:-) -#endif - - -#ifdef __thumb2__ -.thumb_func __ecp_nistz256_neg -#endif -.align 4 -__ecp_nistz256_neg: - ldr r4,[r1,#0] - eor r3,r3,r3 - ldr r5,[r1,#4] - ldr r6,[r1,#8] - subs r4,r3,r4 - ldr r7,[r1,#12] - sbcs r5,r3,r5 - ldr r8,[r1,#16] - sbcs r6,r3,r6 - ldr r9,[r1,#20] - sbcs r7,r3,r7 - ldr r10,[r1,#24] - sbcs r8,r3,r8 - ldr r11,[r1,#28] - sbcs r9,r3,r9 - sbcs r10,r3,r10 - sbcs r11,r3,r11 - sbc r3,r3,r3 - - b Lreduce_by_add - -@ void GFp_nistz256_mul_mont(BN_ULONG r0[8],const BN_ULONG r1[8], -@ const BN_ULONG r2[8]); -.globl _GFp_nistz256_mul_mont -.private_extern _GFp_nistz256_mul_mont -#ifdef __thumb2__ -.thumb_func _GFp_nistz256_mul_mont -#endif -.align 4 -_GFp_nistz256_mul_mont: - stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - bl __ecp_nistz256_mul_mont -#if __ARM_ARCH__>=5 || !defined(__thumb__) - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} -#else - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - bx lr @ interoperable with Thumb ISA:-) -#endif - - -#ifdef __thumb2__ -.thumb_func __ecp_nistz256_mul_mont -#endif -.align 4 -__ecp_nistz256_mul_mont: - stmdb sp!,{r0,r1,r2,lr} @ make a copy of arguments too - - ldr r2,[r2,#0] @ b[0] - ldmia r1,{r4,r5,r6,r7,r8,r9,r10,r11} - - umull r3,r14,r4,r2 @ r[0]=a[0]*b[0] - stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11} @ copy a[0-7] to stack, so - @ that it can be addressed - @ without spending register - @ on address - umull r4,r0,r5,r2 @ r[1]=a[1]*b[0] - umull r5,r1,r6,r2 - adds r4,r4,r14 @ accumulate high part of mult - umull r6,r12,r7,r2 - adcs r5,r5,r0 - umull r7,r14,r8,r2 - adcs r6,r6,r1 - umull r8,r0,r9,r2 - adcs r7,r7,r12 - umull r9,r1,r10,r2 - adcs r8,r8,r14 - umull r10,r12,r11,r2 - adcs r9,r9,r0 - adcs r10,r10,r1 - eor r14,r14,r14 @ first overflow bit is zero - adc r11,r12,#0 - @ multiplication-less reduction 1 - adds r6,r6,r3 @ r[3]+=r[0] - ldr r2,[sp,#40] @ restore b_ptr - adcs r7,r7,#0 @ r[4]+=0 - adcs r8,r8,#0 @ r[5]+=0 - adcs r9,r9,r3 @ r[6]+=r[0] - ldr r1,[sp,#0] @ load a[0] - adcs r10,r10,#0 @ r[7]+=0 - ldr r2,[r2,#4*1] @ load b[i] - adcs r11,r11,r3 @ r[8]+=r[0] - eor r0,r0,r0 - adc r14,r14,#0 @ overflow bit - subs r10,r10,r3 @ r[7]-=r[0] - ldr r12,[sp,#4] @ a[1] - sbcs r11,r11,#0 @ r[8]-=0 - umlal r4,r0,r1,r2 @ "r[0]"+=a[0]*b[i] - eor r1,r1,r1 - sbc r3,r14,#0 @ overflow bit, keep in mind - @ that netto result is - @ addition of a value which - @ makes underflow impossible - - ldr r14,[sp,#8] @ a[2] - umlal r5,r1,r12,r2 @ "r[1]"+=a[1]*b[i] - str r3,[sp,#36] @ temporarily offload overflow - eor r12,r12,r12 - ldr r3,[sp,#12] @ a[3], r3 is alias r3 - umlal r6,r12,r14,r2 @ "r[2]"+=a[2]*b[i] - eor r14,r14,r14 - adds r5,r5,r0 @ accumulate high part of mult - ldr r0,[sp,#16] @ a[4] - umlal r7,r14,r3,r2 @ "r[3]"+=a[3]*b[i] - eor r3,r3,r3 - adcs r6,r6,r1 - ldr r1,[sp,#20] @ a[5] - umlal r8,r3,r0,r2 @ "r[4]"+=a[4]*b[i] - eor r0,r0,r0 - adcs r7,r7,r12 - ldr r12,[sp,#24] @ a[6] - umlal r9,r0,r1,r2 @ "r[5]"+=a[5]*b[i] - eor r1,r1,r1 - adcs r8,r8,r14 - ldr r14,[sp,#28] @ a[7] - umlal r10,r1,r12,r2 @ "r[6]"+=a[6]*b[i] - eor r12,r12,r12 - adcs r9,r9,r3 - ldr r3,[sp,#36] @ restore overflow bit - umlal r11,r12,r14,r2 @ "r[7]"+=a[7]*b[i] - eor r14,r14,r14 - adcs r10,r10,r0 - adcs r11,r11,r1 - adcs r3,r3,r12 - adc r14,r14,#0 @ new overflow bit - @ multiplication-less reduction 2 - adds r7,r7,r4 @ r[3]+=r[0] - ldr r2,[sp,#40] @ restore b_ptr - adcs r8,r8,#0 @ r[4]+=0 - adcs r9,r9,#0 @ r[5]+=0 - adcs r10,r10,r4 @ r[6]+=r[0] - ldr r1,[sp,#0] @ load a[0] - adcs r11,r11,#0 @ r[7]+=0 - ldr r2,[r2,#4*2] @ load b[i] - adcs r3,r3,r4 @ r[8]+=r[0] - eor r0,r0,r0 - adc r14,r14,#0 @ overflow bit - subs r11,r11,r4 @ r[7]-=r[0] - ldr r12,[sp,#4] @ a[1] - sbcs r3,r3,#0 @ r[8]-=0 - umlal r5,r0,r1,r2 @ "r[0]"+=a[0]*b[i] - eor r1,r1,r1 - sbc r4,r14,#0 @ overflow bit, keep in mind - @ that netto result is - @ addition of a value which - @ makes underflow impossible - - ldr r14,[sp,#8] @ a[2] - umlal r6,r1,r12,r2 @ "r[1]"+=a[1]*b[i] - str r4,[sp,#36] @ temporarily offload overflow - eor r12,r12,r12 - ldr r4,[sp,#12] @ a[3], r4 is alias r4 - umlal r7,r12,r14,r2 @ "r[2]"+=a[2]*b[i] - eor r14,r14,r14 - adds r6,r6,r0 @ accumulate high part of mult - ldr r0,[sp,#16] @ a[4] - umlal r8,r14,r4,r2 @ "r[3]"+=a[3]*b[i] - eor r4,r4,r4 - adcs r7,r7,r1 - ldr r1,[sp,#20] @ a[5] - umlal r9,r4,r0,r2 @ "r[4]"+=a[4]*b[i] - eor r0,r0,r0 - adcs r8,r8,r12 - ldr r12,[sp,#24] @ a[6] - umlal r10,r0,r1,r2 @ "r[5]"+=a[5]*b[i] - eor r1,r1,r1 - adcs r9,r9,r14 - ldr r14,[sp,#28] @ a[7] - umlal r11,r1,r12,r2 @ "r[6]"+=a[6]*b[i] - eor r12,r12,r12 - adcs r10,r10,r4 - ldr r4,[sp,#36] @ restore overflow bit - umlal r3,r12,r14,r2 @ "r[7]"+=a[7]*b[i] - eor r14,r14,r14 - adcs r11,r11,r0 - adcs r3,r3,r1 - adcs r4,r4,r12 - adc r14,r14,#0 @ new overflow bit - @ multiplication-less reduction 3 - adds r8,r8,r5 @ r[3]+=r[0] - ldr r2,[sp,#40] @ restore b_ptr - adcs r9,r9,#0 @ r[4]+=0 - adcs r10,r10,#0 @ r[5]+=0 - adcs r11,r11,r5 @ r[6]+=r[0] - ldr r1,[sp,#0] @ load a[0] - adcs r3,r3,#0 @ r[7]+=0 - ldr r2,[r2,#4*3] @ load b[i] - adcs r4,r4,r5 @ r[8]+=r[0] - eor r0,r0,r0 - adc r14,r14,#0 @ overflow bit - subs r3,r3,r5 @ r[7]-=r[0] - ldr r12,[sp,#4] @ a[1] - sbcs r4,r4,#0 @ r[8]-=0 - umlal r6,r0,r1,r2 @ "r[0]"+=a[0]*b[i] - eor r1,r1,r1 - sbc r5,r14,#0 @ overflow bit, keep in mind - @ that netto result is - @ addition of a value which - @ makes underflow impossible - - ldr r14,[sp,#8] @ a[2] - umlal r7,r1,r12,r2 @ "r[1]"+=a[1]*b[i] - str r5,[sp,#36] @ temporarily offload overflow - eor r12,r12,r12 - ldr r5,[sp,#12] @ a[3], r5 is alias r5 - umlal r8,r12,r14,r2 @ "r[2]"+=a[2]*b[i] - eor r14,r14,r14 - adds r7,r7,r0 @ accumulate high part of mult - ldr r0,[sp,#16] @ a[4] - umlal r9,r14,r5,r2 @ "r[3]"+=a[3]*b[i] - eor r5,r5,r5 - adcs r8,r8,r1 - ldr r1,[sp,#20] @ a[5] - umlal r10,r5,r0,r2 @ "r[4]"+=a[4]*b[i] - eor r0,r0,r0 - adcs r9,r9,r12 - ldr r12,[sp,#24] @ a[6] - umlal r11,r0,r1,r2 @ "r[5]"+=a[5]*b[i] - eor r1,r1,r1 - adcs r10,r10,r14 - ldr r14,[sp,#28] @ a[7] - umlal r3,r1,r12,r2 @ "r[6]"+=a[6]*b[i] - eor r12,r12,r12 - adcs r11,r11,r5 - ldr r5,[sp,#36] @ restore overflow bit - umlal r4,r12,r14,r2 @ "r[7]"+=a[7]*b[i] - eor r14,r14,r14 - adcs r3,r3,r0 - adcs r4,r4,r1 - adcs r5,r5,r12 - adc r14,r14,#0 @ new overflow bit - @ multiplication-less reduction 4 - adds r9,r9,r6 @ r[3]+=r[0] - ldr r2,[sp,#40] @ restore b_ptr - adcs r10,r10,#0 @ r[4]+=0 - adcs r11,r11,#0 @ r[5]+=0 - adcs r3,r3,r6 @ r[6]+=r[0] - ldr r1,[sp,#0] @ load a[0] - adcs r4,r4,#0 @ r[7]+=0 - ldr r2,[r2,#4*4] @ load b[i] - adcs r5,r5,r6 @ r[8]+=r[0] - eor r0,r0,r0 - adc r14,r14,#0 @ overflow bit - subs r4,r4,r6 @ r[7]-=r[0] - ldr r12,[sp,#4] @ a[1] - sbcs r5,r5,#0 @ r[8]-=0 - umlal r7,r0,r1,r2 @ "r[0]"+=a[0]*b[i] - eor r1,r1,r1 - sbc r6,r14,#0 @ overflow bit, keep in mind - @ that netto result is - @ addition of a value which - @ makes underflow impossible - - ldr r14,[sp,#8] @ a[2] - umlal r8,r1,r12,r2 @ "r[1]"+=a[1]*b[i] - str r6,[sp,#36] @ temporarily offload overflow - eor r12,r12,r12 - ldr r6,[sp,#12] @ a[3], r6 is alias r6 - umlal r9,r12,r14,r2 @ "r[2]"+=a[2]*b[i] - eor r14,r14,r14 - adds r8,r8,r0 @ accumulate high part of mult - ldr r0,[sp,#16] @ a[4] - umlal r10,r14,r6,r2 @ "r[3]"+=a[3]*b[i] - eor r6,r6,r6 - adcs r9,r9,r1 - ldr r1,[sp,#20] @ a[5] - umlal r11,r6,r0,r2 @ "r[4]"+=a[4]*b[i] - eor r0,r0,r0 - adcs r10,r10,r12 - ldr r12,[sp,#24] @ a[6] - umlal r3,r0,r1,r2 @ "r[5]"+=a[5]*b[i] - eor r1,r1,r1 - adcs r11,r11,r14 - ldr r14,[sp,#28] @ a[7] - umlal r4,r1,r12,r2 @ "r[6]"+=a[6]*b[i] - eor r12,r12,r12 - adcs r3,r3,r6 - ldr r6,[sp,#36] @ restore overflow bit - umlal r5,r12,r14,r2 @ "r[7]"+=a[7]*b[i] - eor r14,r14,r14 - adcs r4,r4,r0 - adcs r5,r5,r1 - adcs r6,r6,r12 - adc r14,r14,#0 @ new overflow bit - @ multiplication-less reduction 5 - adds r10,r10,r7 @ r[3]+=r[0] - ldr r2,[sp,#40] @ restore b_ptr - adcs r11,r11,#0 @ r[4]+=0 - adcs r3,r3,#0 @ r[5]+=0 - adcs r4,r4,r7 @ r[6]+=r[0] - ldr r1,[sp,#0] @ load a[0] - adcs r5,r5,#0 @ r[7]+=0 - ldr r2,[r2,#4*5] @ load b[i] - adcs r6,r6,r7 @ r[8]+=r[0] - eor r0,r0,r0 - adc r14,r14,#0 @ overflow bit - subs r5,r5,r7 @ r[7]-=r[0] - ldr r12,[sp,#4] @ a[1] - sbcs r6,r6,#0 @ r[8]-=0 - umlal r8,r0,r1,r2 @ "r[0]"+=a[0]*b[i] - eor r1,r1,r1 - sbc r7,r14,#0 @ overflow bit, keep in mind - @ that netto result is - @ addition of a value which - @ makes underflow impossible - - ldr r14,[sp,#8] @ a[2] - umlal r9,r1,r12,r2 @ "r[1]"+=a[1]*b[i] - str r7,[sp,#36] @ temporarily offload overflow - eor r12,r12,r12 - ldr r7,[sp,#12] @ a[3], r7 is alias r7 - umlal r10,r12,r14,r2 @ "r[2]"+=a[2]*b[i] - eor r14,r14,r14 - adds r9,r9,r0 @ accumulate high part of mult - ldr r0,[sp,#16] @ a[4] - umlal r11,r14,r7,r2 @ "r[3]"+=a[3]*b[i] - eor r7,r7,r7 - adcs r10,r10,r1 - ldr r1,[sp,#20] @ a[5] - umlal r3,r7,r0,r2 @ "r[4]"+=a[4]*b[i] - eor r0,r0,r0 - adcs r11,r11,r12 - ldr r12,[sp,#24] @ a[6] - umlal r4,r0,r1,r2 @ "r[5]"+=a[5]*b[i] - eor r1,r1,r1 - adcs r3,r3,r14 - ldr r14,[sp,#28] @ a[7] - umlal r5,r1,r12,r2 @ "r[6]"+=a[6]*b[i] - eor r12,r12,r12 - adcs r4,r4,r7 - ldr r7,[sp,#36] @ restore overflow bit - umlal r6,r12,r14,r2 @ "r[7]"+=a[7]*b[i] - eor r14,r14,r14 - adcs r5,r5,r0 - adcs r6,r6,r1 - adcs r7,r7,r12 - adc r14,r14,#0 @ new overflow bit - @ multiplication-less reduction 6 - adds r11,r11,r8 @ r[3]+=r[0] - ldr r2,[sp,#40] @ restore b_ptr - adcs r3,r3,#0 @ r[4]+=0 - adcs r4,r4,#0 @ r[5]+=0 - adcs r5,r5,r8 @ r[6]+=r[0] - ldr r1,[sp,#0] @ load a[0] - adcs r6,r6,#0 @ r[7]+=0 - ldr r2,[r2,#4*6] @ load b[i] - adcs r7,r7,r8 @ r[8]+=r[0] - eor r0,r0,r0 - adc r14,r14,#0 @ overflow bit - subs r6,r6,r8 @ r[7]-=r[0] - ldr r12,[sp,#4] @ a[1] - sbcs r7,r7,#0 @ r[8]-=0 - umlal r9,r0,r1,r2 @ "r[0]"+=a[0]*b[i] - eor r1,r1,r1 - sbc r8,r14,#0 @ overflow bit, keep in mind - @ that netto result is - @ addition of a value which - @ makes underflow impossible - - ldr r14,[sp,#8] @ a[2] - umlal r10,r1,r12,r2 @ "r[1]"+=a[1]*b[i] - str r8,[sp,#36] @ temporarily offload overflow - eor r12,r12,r12 - ldr r8,[sp,#12] @ a[3], r8 is alias r8 - umlal r11,r12,r14,r2 @ "r[2]"+=a[2]*b[i] - eor r14,r14,r14 - adds r10,r10,r0 @ accumulate high part of mult - ldr r0,[sp,#16] @ a[4] - umlal r3,r14,r8,r2 @ "r[3]"+=a[3]*b[i] - eor r8,r8,r8 - adcs r11,r11,r1 - ldr r1,[sp,#20] @ a[5] - umlal r4,r8,r0,r2 @ "r[4]"+=a[4]*b[i] - eor r0,r0,r0 - adcs r3,r3,r12 - ldr r12,[sp,#24] @ a[6] - umlal r5,r0,r1,r2 @ "r[5]"+=a[5]*b[i] - eor r1,r1,r1 - adcs r4,r4,r14 - ldr r14,[sp,#28] @ a[7] - umlal r6,r1,r12,r2 @ "r[6]"+=a[6]*b[i] - eor r12,r12,r12 - adcs r5,r5,r8 - ldr r8,[sp,#36] @ restore overflow bit - umlal r7,r12,r14,r2 @ "r[7]"+=a[7]*b[i] - eor r14,r14,r14 - adcs r6,r6,r0 - adcs r7,r7,r1 - adcs r8,r8,r12 - adc r14,r14,#0 @ new overflow bit - @ multiplication-less reduction 7 - adds r3,r3,r9 @ r[3]+=r[0] - ldr r2,[sp,#40] @ restore b_ptr - adcs r4,r4,#0 @ r[4]+=0 - adcs r5,r5,#0 @ r[5]+=0 - adcs r6,r6,r9 @ r[6]+=r[0] - ldr r1,[sp,#0] @ load a[0] - adcs r7,r7,#0 @ r[7]+=0 - ldr r2,[r2,#4*7] @ load b[i] - adcs r8,r8,r9 @ r[8]+=r[0] - eor r0,r0,r0 - adc r14,r14,#0 @ overflow bit - subs r7,r7,r9 @ r[7]-=r[0] - ldr r12,[sp,#4] @ a[1] - sbcs r8,r8,#0 @ r[8]-=0 - umlal r10,r0,r1,r2 @ "r[0]"+=a[0]*b[i] - eor r1,r1,r1 - sbc r9,r14,#0 @ overflow bit, keep in mind - @ that netto result is - @ addition of a value which - @ makes underflow impossible - - ldr r14,[sp,#8] @ a[2] - umlal r11,r1,r12,r2 @ "r[1]"+=a[1]*b[i] - str r9,[sp,#36] @ temporarily offload overflow - eor r12,r12,r12 - ldr r9,[sp,#12] @ a[3], r9 is alias r9 - umlal r3,r12,r14,r2 @ "r[2]"+=a[2]*b[i] - eor r14,r14,r14 - adds r11,r11,r0 @ accumulate high part of mult - ldr r0,[sp,#16] @ a[4] - umlal r4,r14,r9,r2 @ "r[3]"+=a[3]*b[i] - eor r9,r9,r9 - adcs r3,r3,r1 - ldr r1,[sp,#20] @ a[5] - umlal r5,r9,r0,r2 @ "r[4]"+=a[4]*b[i] - eor r0,r0,r0 - adcs r4,r4,r12 - ldr r12,[sp,#24] @ a[6] - umlal r6,r0,r1,r2 @ "r[5]"+=a[5]*b[i] - eor r1,r1,r1 - adcs r5,r5,r14 - ldr r14,[sp,#28] @ a[7] - umlal r7,r1,r12,r2 @ "r[6]"+=a[6]*b[i] - eor r12,r12,r12 - adcs r6,r6,r9 - ldr r9,[sp,#36] @ restore overflow bit - umlal r8,r12,r14,r2 @ "r[7]"+=a[7]*b[i] - eor r14,r14,r14 - adcs r7,r7,r0 - adcs r8,r8,r1 - adcs r9,r9,r12 - adc r14,r14,#0 @ new overflow bit - @ last multiplication-less reduction - adds r4,r4,r10 - ldr r0,[sp,#32] @ restore r_ptr - adcs r5,r5,#0 - adcs r6,r6,#0 - adcs r7,r7,r10 - adcs r8,r8,#0 - adcs r9,r9,r10 - adc r14,r14,#0 - subs r8,r8,r10 - sbcs r9,r9,#0 - sbc r10,r14,#0 @ overflow bit - - @ Final step is "if result > mod, subtract mod", but we do it - @ "other way around", namely subtract modulus from result - @ and if it borrowed, add modulus back. - - adds r11,r11,#1 @ subs r11,r11,#-1 - adcs r3,r3,#0 @ sbcs r3,r3,#-1 - adcs r4,r4,#0 @ sbcs r4,r4,#-1 - sbcs r5,r5,#0 - sbcs r6,r6,#0 - sbcs r7,r7,#0 - sbcs r8,r8,#1 - adcs r9,r9,#0 @ sbcs r9,r9,#-1 - ldr lr,[sp,#44] @ restore lr - sbc r10,r10,#0 @ broadcast borrow bit - add sp,sp,#48 - - @ Note that because mod has special form, i.e. consists of - @ 0xffffffff, 1 and 0s, we can conditionally synthesize it by - @ broadcasting borrow bit to a register, r10, and using it as - @ a whole or extracting single bit. - - adds r11,r11,r10 @ add modulus or zero - adcs r3,r3,r10 - str r11,[r0,#0] - adcs r4,r4,r10 - str r3,[r0,#4] - adcs r5,r5,#0 - str r4,[r0,#8] - adcs r6,r6,#0 - str r5,[r0,#12] - adcs r7,r7,#0 - str r6,[r0,#16] - adcs r8,r8,r10,lsr#31 - str r7,[r0,#20] - adc r9,r9,r10 - str r8,[r0,#24] - str r9,[r0,#28] - - mov pc,lr - -#ifdef __thumb2__ -.thumb_func __ecp_nistz256_sub_from -#endif -.align 5 -__ecp_nistz256_sub_from: - str lr,[sp,#-4]! @ push lr - - ldr r10,[r2,#0] - ldr r12,[r2,#4] - ldr r14,[r2,#8] - ldr r1,[r2,#12] - subs r11,r11,r10 - ldr r10,[r2,#16] - sbcs r3,r3,r12 - ldr r12,[r2,#20] - sbcs r4,r4,r14 - ldr r14,[r2,#24] - sbcs r5,r5,r1 - ldr r1,[r2,#28] - sbcs r6,r6,r10 - sbcs r7,r7,r12 - sbcs r8,r8,r14 - sbcs r9,r9,r1 - sbc r2,r2,r2 @ broadcast borrow bit - ldr lr,[sp],#4 @ pop lr - - adds r11,r11,r2 @ add synthesized modulus - adcs r3,r3,r2 - str r11,[r0,#0] - adcs r4,r4,r2 - str r3,[r0,#4] - adcs r5,r5,#0 - str r4,[r0,#8] - adcs r6,r6,#0 - str r5,[r0,#12] - adcs r7,r7,#0 - str r6,[r0,#16] - adcs r8,r8,r2,lsr#31 - str r7,[r0,#20] - adcs r9,r9,r2 - str r8,[r0,#24] - str r9,[r0,#28] - - mov pc,lr - - -#ifdef __thumb2__ -.thumb_func __ecp_nistz256_sub_morf -#endif -.align 5 -__ecp_nistz256_sub_morf: - str lr,[sp,#-4]! @ push lr - - ldr r10,[r2,#0] - ldr r12,[r2,#4] - ldr r14,[r2,#8] - ldr r1,[r2,#12] - subs r11,r10,r11 - ldr r10,[r2,#16] - sbcs r3,r12,r3 - ldr r12,[r2,#20] - sbcs r4,r14,r4 - ldr r14,[r2,#24] - sbcs r5,r1,r5 - ldr r1,[r2,#28] - sbcs r6,r10,r6 - sbcs r7,r12,r7 - sbcs r8,r14,r8 - sbcs r9,r1,r9 - sbc r2,r2,r2 @ broadcast borrow bit - ldr lr,[sp],#4 @ pop lr - - adds r11,r11,r2 @ add synthesized modulus - adcs r3,r3,r2 - str r11,[r0,#0] - adcs r4,r4,r2 - str r3,[r0,#4] - adcs r5,r5,#0 - str r4,[r0,#8] - adcs r6,r6,#0 - str r5,[r0,#12] - adcs r7,r7,#0 - str r6,[r0,#16] - adcs r8,r8,r2,lsr#31 - str r7,[r0,#20] - adcs r9,r9,r2 - str r8,[r0,#24] - str r9,[r0,#28] - - mov pc,lr - - -#ifdef __thumb2__ -.thumb_func __ecp_nistz256_add_self -#endif -.align 4 -__ecp_nistz256_add_self: - adds r11,r11,r11 @ a[0:7]+=a[0:7] - adcs r3,r3,r3 - adcs r4,r4,r4 - adcs r5,r5,r5 - adcs r6,r6,r6 - adcs r7,r7,r7 - adcs r8,r8,r8 - mov r2,#0 - adcs r9,r9,r9 - adc r2,r2,#0 - - @ if a+b >= modulus, subtract modulus. - @ - @ But since comparison implies subtraction, we subtract - @ modulus and then add it back if subtraction borrowed. - - subs r11,r11,#-1 - sbcs r3,r3,#-1 - sbcs r4,r4,#-1 - sbcs r5,r5,#0 - sbcs r6,r6,#0 - sbcs r7,r7,#0 - sbcs r8,r8,#1 - sbcs r9,r9,#-1 - sbc r2,r2,#0 - - @ Note that because mod has special form, i.e. consists of - @ 0xffffffff, 1 and 0s, we can conditionally synthesize it by - @ using value of borrow as a whole or extracting single bit. - @ Follow r2 register... - - adds r11,r11,r2 @ add synthesized modulus - adcs r3,r3,r2 - str r11,[r0,#0] - adcs r4,r4,r2 - str r3,[r0,#4] - adcs r5,r5,#0 - str r4,[r0,#8] - adcs r6,r6,#0 - str r5,[r0,#12] - adcs r7,r7,#0 - str r6,[r0,#16] - adcs r8,r8,r2,lsr#31 - str r7,[r0,#20] - adcs r9,r9,r2 - str r8,[r0,#24] - str r9,[r0,#28] - - mov pc,lr - - -.globl _GFp_nistz256_point_double -.private_extern _GFp_nistz256_point_double -#ifdef __thumb2__ -.thumb_func _GFp_nistz256_point_double -#endif -.align 5 -_GFp_nistz256_point_double: - stmdb sp!,{r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} @ push from r0, unusual, but intentional - sub sp,sp,#32*5 - -Lpoint_double_shortcut: - add r3,sp,#96 - ldmia r1!,{r4,r5,r6,r7,r8,r9,r10,r11} @ copy in_x - stmia r3,{r4,r5,r6,r7,r8,r9,r10,r11} - - add r0,sp,#0 - bl __ecp_nistz256_mul_by_2 @ p256_mul_by_2(S, in_y); - - add r2,r1,#32 - add r1,r1,#32 - add r0,sp,#64 - bl __ecp_nistz256_mul_mont @ p256_sqr_mont(Zsqr, in_z); - - add r1,sp,#0 - add r2,sp,#0 - add r0,sp,#0 - bl __ecp_nistz256_mul_mont @ p256_sqr_mont(S, S); - - ldr r2,[sp,#32*5+4] - add r1,r2,#32 - add r2,r2,#64 - add r0,sp,#128 - bl __ecp_nistz256_mul_mont @ p256_mul_mont(tmp0, in_z, in_y); - - ldr r0,[sp,#32*5] - add r0,r0,#64 - bl __ecp_nistz256_add_self @ p256_mul_by_2(res_z, tmp0); - - add r1,sp,#96 - add r2,sp,#64 - add r0,sp,#32 - bl __ecp_nistz256_add @ p256_add(M, in_x, Zsqr); - - add r1,sp,#96 - add r2,sp,#64 - add r0,sp,#64 - bl __ecp_nistz256_sub @ p256_sub(Zsqr, in_x, Zsqr); - - add r1,sp,#0 - add r2,sp,#0 - add r0,sp,#128 - bl __ecp_nistz256_mul_mont @ p256_sqr_mont(tmp0, S); - - add r1,sp,#64 - add r2,sp,#32 - add r0,sp,#32 - bl __ecp_nistz256_mul_mont @ p256_mul_mont(M, M, Zsqr); - - ldr r0,[sp,#32*5] - add r1,sp,#128 - add r0,r0,#32 - bl __ecp_nistz256_div_by_2 @ p256_div_by_2(res_y, tmp0); - - add r1,sp,#32 - add r0,sp,#32 - bl __ecp_nistz256_mul_by_3 @ p256_mul_by_3(M, M); - - add r1,sp,#96 - add r2,sp,#0 - add r0,sp,#0 - bl __ecp_nistz256_mul_mont @ p256_mul_mont(S, S, in_x); - - add r0,sp,#128 - bl __ecp_nistz256_add_self @ p256_mul_by_2(tmp0, S); - - ldr r0,[sp,#32*5] - add r1,sp,#32 - add r2,sp,#32 - bl __ecp_nistz256_mul_mont @ p256_sqr_mont(res_x, M); - - add r2,sp,#128 - bl __ecp_nistz256_sub_from @ p256_sub(res_x, res_x, tmp0); - - add r2,sp,#0 - add r0,sp,#0 - bl __ecp_nistz256_sub_morf @ p256_sub(S, S, res_x); - - add r1,sp,#32 - add r2,sp,#0 - bl __ecp_nistz256_mul_mont @ p256_mul_mont(S, S, M); - - ldr r0,[sp,#32*5] - add r2,r0,#32 - add r0,r0,#32 - bl __ecp_nistz256_sub_from @ p256_sub(res_y, S, res_y); - - add sp,sp,#32*5+16 @ +16 means "skip even over saved r0-r3" -#if __ARM_ARCH__>=5 || !defined(__thumb__) - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} -#else - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - bx lr @ interoperable with Thumb ISA:-) -#endif - -#endif // !OPENSSL_NO_ASM diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-armv4-linux32.S temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-armv4-linux32.S --- temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-armv4-linux32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-armv4-linux32.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,1089 +0,0 @@ -// This file is generated from a similarly-named Perl script in the BoringSSL -// source tree. Do not edit by hand. - -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif - -#if !defined(OPENSSL_NO_ASM) -#if defined(__arm__) -#include - -.text -#if defined(__thumb2__) -.syntax unified -.thumb -#else -.code 32 -#endif - -.byte 69,67,80,95,78,73,83,84,90,50,53,54,32,102,111,114,32,65,82,77,118,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.align 2 -.align 6 -.type __ecp_nistz256_mul_by_2,%function -.align 4 -__ecp_nistz256_mul_by_2: - ldr r4,[r1,#0] - ldr r5,[r1,#4] - ldr r6,[r1,#8] - adds r4,r4,r4 @ a[0:7]+=a[0:7], i.e. add with itself - ldr r7,[r1,#12] - adcs r5,r5,r5 - ldr r8,[r1,#16] - adcs r6,r6,r6 - ldr r9,[r1,#20] - adcs r7,r7,r7 - ldr r10,[r1,#24] - adcs r8,r8,r8 - ldr r11,[r1,#28] - adcs r9,r9,r9 - adcs r10,r10,r10 - mov r3,#0 - adcs r11,r11,r11 - adc r3,r3,#0 - - b .Lreduce_by_sub -.size __ecp_nistz256_mul_by_2,.-__ecp_nistz256_mul_by_2 - -@ void GFp_nistz256_add(BN_ULONG r0[8],const BN_ULONG r1[8], -@ const BN_ULONG r2[8]); -.globl GFp_nistz256_add -.hidden GFp_nistz256_add -.type GFp_nistz256_add,%function -.align 4 -GFp_nistz256_add: - stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - bl __ecp_nistz256_add -#if __ARM_ARCH__>=5 || !defined(__thumb__) - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} -#else - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - bx lr @ interoperable with Thumb ISA:-) -#endif -.size GFp_nistz256_add,.-GFp_nistz256_add - -.type __ecp_nistz256_add,%function -.align 4 -__ecp_nistz256_add: - str lr,[sp,#-4]! @ push lr - - ldr r4,[r1,#0] - ldr r5,[r1,#4] - ldr r6,[r1,#8] - ldr r7,[r1,#12] - ldr r8,[r1,#16] - ldr r3,[r2,#0] - ldr r9,[r1,#20] - ldr r12,[r2,#4] - ldr r10,[r1,#24] - ldr r14,[r2,#8] - ldr r11,[r1,#28] - ldr r1,[r2,#12] - adds r4,r4,r3 - ldr r3,[r2,#16] - adcs r5,r5,r12 - ldr r12,[r2,#20] - adcs r6,r6,r14 - ldr r14,[r2,#24] - adcs r7,r7,r1 - ldr r1,[r2,#28] - adcs r8,r8,r3 - adcs r9,r9,r12 - adcs r10,r10,r14 - mov r3,#0 - adcs r11,r11,r1 - adc r3,r3,#0 - ldr lr,[sp],#4 @ pop lr - -.Lreduce_by_sub: - - @ if a+b >= modulus, subtract modulus. - @ - @ But since comparison implies subtraction, we subtract - @ modulus and then add it back if subtraction borrowed. - - subs r4,r4,#-1 - sbcs r5,r5,#-1 - sbcs r6,r6,#-1 - sbcs r7,r7,#0 - sbcs r8,r8,#0 - sbcs r9,r9,#0 - sbcs r10,r10,#1 - sbcs r11,r11,#-1 - sbc r3,r3,#0 - - @ Note that because mod has special form, i.e. consists of - @ 0xffffffff, 1 and 0s, we can conditionally synthesize it by - @ using value of borrow as a whole or extracting single bit. - @ Follow r3 register... - - adds r4,r4,r3 @ add synthesized modulus - adcs r5,r5,r3 - str r4,[r0,#0] - adcs r6,r6,r3 - str r5,[r0,#4] - adcs r7,r7,#0 - str r6,[r0,#8] - adcs r8,r8,#0 - str r7,[r0,#12] - adcs r9,r9,#0 - str r8,[r0,#16] - adcs r10,r10,r3,lsr#31 - str r9,[r0,#20] - adcs r11,r11,r3 - str r10,[r0,#24] - str r11,[r0,#28] - - mov pc,lr -.size __ecp_nistz256_add,.-__ecp_nistz256_add - -.type __ecp_nistz256_mul_by_3,%function -.align 4 -__ecp_nistz256_mul_by_3: - str lr,[sp,#-4]! @ push lr - - @ As multiplication by 3 is performed as 2*n+n, below are inline - @ copies of __ecp_nistz256_mul_by_2 and __ecp_nistz256_add, see - @ corresponding subroutines for details. - - ldr r4,[r1,#0] - ldr r5,[r1,#4] - ldr r6,[r1,#8] - adds r4,r4,r4 @ a[0:7]+=a[0:7] - ldr r7,[r1,#12] - adcs r5,r5,r5 - ldr r8,[r1,#16] - adcs r6,r6,r6 - ldr r9,[r1,#20] - adcs r7,r7,r7 - ldr r10,[r1,#24] - adcs r8,r8,r8 - ldr r11,[r1,#28] - adcs r9,r9,r9 - adcs r10,r10,r10 - mov r3,#0 - adcs r11,r11,r11 - adc r3,r3,#0 - - subs r4,r4,#-1 @ .Lreduce_by_sub but without stores - sbcs r5,r5,#-1 - sbcs r6,r6,#-1 - sbcs r7,r7,#0 - sbcs r8,r8,#0 - sbcs r9,r9,#0 - sbcs r10,r10,#1 - sbcs r11,r11,#-1 - sbc r3,r3,#0 - - adds r4,r4,r3 @ add synthesized modulus - adcs r5,r5,r3 - adcs r6,r6,r3 - adcs r7,r7,#0 - adcs r8,r8,#0 - ldr r2,[r1,#0] - adcs r9,r9,#0 - ldr r12,[r1,#4] - adcs r10,r10,r3,lsr#31 - ldr r14,[r1,#8] - adc r11,r11,r3 - - ldr r3,[r1,#12] - adds r4,r4,r2 @ 2*a[0:7]+=a[0:7] - ldr r2,[r1,#16] - adcs r5,r5,r12 - ldr r12,[r1,#20] - adcs r6,r6,r14 - ldr r14,[r1,#24] - adcs r7,r7,r3 - ldr r1,[r1,#28] - adcs r8,r8,r2 - adcs r9,r9,r12 - adcs r10,r10,r14 - mov r3,#0 - adcs r11,r11,r1 - adc r3,r3,#0 - ldr lr,[sp],#4 @ pop lr - - b .Lreduce_by_sub -.size __ecp_nistz256_mul_by_3,.-__ecp_nistz256_mul_by_3 - -.type __ecp_nistz256_div_by_2,%function -.align 4 -__ecp_nistz256_div_by_2: - @ ret = (a is odd ? a+mod : a) >> 1 - - ldr r4,[r1,#0] - ldr r5,[r1,#4] - ldr r6,[r1,#8] - mov r3,r4,lsl#31 @ place least significant bit to most - @ significant position, now arithmetic - @ right shift by 31 will produce -1 or - @ 0, while logical right shift 1 or 0, - @ this is how modulus is conditionally - @ synthesized in this case... - ldr r7,[r1,#12] - adds r4,r4,r3,asr#31 - ldr r8,[r1,#16] - adcs r5,r5,r3,asr#31 - ldr r9,[r1,#20] - adcs r6,r6,r3,asr#31 - ldr r10,[r1,#24] - adcs r7,r7,#0 - ldr r11,[r1,#28] - adcs r8,r8,#0 - mov r4,r4,lsr#1 @ a[0:7]>>=1, we can start early - @ because it doesn't affect flags - adcs r9,r9,#0 - orr r4,r4,r5,lsl#31 - adcs r10,r10,r3,lsr#31 - mov r2,#0 - adcs r11,r11,r3,asr#31 - mov r5,r5,lsr#1 - adc r2,r2,#0 @ top-most carry bit from addition - - orr r5,r5,r6,lsl#31 - mov r6,r6,lsr#1 - str r4,[r0,#0] - orr r6,r6,r7,lsl#31 - mov r7,r7,lsr#1 - str r5,[r0,#4] - orr r7,r7,r8,lsl#31 - mov r8,r8,lsr#1 - str r6,[r0,#8] - orr r8,r8,r9,lsl#31 - mov r9,r9,lsr#1 - str r7,[r0,#12] - orr r9,r9,r10,lsl#31 - mov r10,r10,lsr#1 - str r8,[r0,#16] - orr r10,r10,r11,lsl#31 - mov r11,r11,lsr#1 - str r9,[r0,#20] - orr r11,r11,r2,lsl#31 @ don't forget the top-most carry bit - str r10,[r0,#24] - str r11,[r0,#28] - - mov pc,lr -.size __ecp_nistz256_div_by_2,.-__ecp_nistz256_div_by_2 - -.type __ecp_nistz256_sub,%function -.align 4 -__ecp_nistz256_sub: - str lr,[sp,#-4]! @ push lr - - ldr r4,[r1,#0] - ldr r5,[r1,#4] - ldr r6,[r1,#8] - ldr r7,[r1,#12] - ldr r8,[r1,#16] - ldr r3,[r2,#0] - ldr r9,[r1,#20] - ldr r12,[r2,#4] - ldr r10,[r1,#24] - ldr r14,[r2,#8] - ldr r11,[r1,#28] - ldr r1,[r2,#12] - subs r4,r4,r3 - ldr r3,[r2,#16] - sbcs r5,r5,r12 - ldr r12,[r2,#20] - sbcs r6,r6,r14 - ldr r14,[r2,#24] - sbcs r7,r7,r1 - ldr r1,[r2,#28] - sbcs r8,r8,r3 - sbcs r9,r9,r12 - sbcs r10,r10,r14 - sbcs r11,r11,r1 - sbc r3,r3,r3 @ broadcast borrow bit - ldr lr,[sp],#4 @ pop lr - -.Lreduce_by_add: - - @ if a-b borrows, add modulus. - @ - @ Note that because mod has special form, i.e. consists of - @ 0xffffffff, 1 and 0s, we can conditionally synthesize it by - @ broadcasting borrow bit to a register, r3, and using it as - @ a whole or extracting single bit. - - adds r4,r4,r3 @ add synthesized modulus - adcs r5,r5,r3 - str r4,[r0,#0] - adcs r6,r6,r3 - str r5,[r0,#4] - adcs r7,r7,#0 - str r6,[r0,#8] - adcs r8,r8,#0 - str r7,[r0,#12] - adcs r9,r9,#0 - str r8,[r0,#16] - adcs r10,r10,r3,lsr#31 - str r9,[r0,#20] - adcs r11,r11,r3 - str r10,[r0,#24] - str r11,[r0,#28] - - mov pc,lr -.size __ecp_nistz256_sub,.-__ecp_nistz256_sub - -@ void GFp_nistz256_neg(BN_ULONG r0[8],const BN_ULONG r1[8]); -.globl GFp_nistz256_neg -.hidden GFp_nistz256_neg -.type GFp_nistz256_neg,%function -.align 4 -GFp_nistz256_neg: - stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - bl __ecp_nistz256_neg -#if __ARM_ARCH__>=5 || !defined(__thumb__) - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} -#else - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - bx lr @ interoperable with Thumb ISA:-) -#endif -.size GFp_nistz256_neg,.-GFp_nistz256_neg - -.type __ecp_nistz256_neg,%function -.align 4 -__ecp_nistz256_neg: - ldr r4,[r1,#0] - eor r3,r3,r3 - ldr r5,[r1,#4] - ldr r6,[r1,#8] - subs r4,r3,r4 - ldr r7,[r1,#12] - sbcs r5,r3,r5 - ldr r8,[r1,#16] - sbcs r6,r3,r6 - ldr r9,[r1,#20] - sbcs r7,r3,r7 - ldr r10,[r1,#24] - sbcs r8,r3,r8 - ldr r11,[r1,#28] - sbcs r9,r3,r9 - sbcs r10,r3,r10 - sbcs r11,r3,r11 - sbc r3,r3,r3 - - b .Lreduce_by_add -.size __ecp_nistz256_neg,.-__ecp_nistz256_neg -@ void GFp_nistz256_mul_mont(BN_ULONG r0[8],const BN_ULONG r1[8], -@ const BN_ULONG r2[8]); -.globl GFp_nistz256_mul_mont -.hidden GFp_nistz256_mul_mont -.type GFp_nistz256_mul_mont,%function -.align 4 -GFp_nistz256_mul_mont: - stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - bl __ecp_nistz256_mul_mont -#if __ARM_ARCH__>=5 || !defined(__thumb__) - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} -#else - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - bx lr @ interoperable with Thumb ISA:-) -#endif -.size GFp_nistz256_mul_mont,.-GFp_nistz256_mul_mont - -.type __ecp_nistz256_mul_mont,%function -.align 4 -__ecp_nistz256_mul_mont: - stmdb sp!,{r0,r1,r2,lr} @ make a copy of arguments too - - ldr r2,[r2,#0] @ b[0] - ldmia r1,{r4,r5,r6,r7,r8,r9,r10,r11} - - umull r3,r14,r4,r2 @ r[0]=a[0]*b[0] - stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11} @ copy a[0-7] to stack, so - @ that it can be addressed - @ without spending register - @ on address - umull r4,r0,r5,r2 @ r[1]=a[1]*b[0] - umull r5,r1,r6,r2 - adds r4,r4,r14 @ accumulate high part of mult - umull r6,r12,r7,r2 - adcs r5,r5,r0 - umull r7,r14,r8,r2 - adcs r6,r6,r1 - umull r8,r0,r9,r2 - adcs r7,r7,r12 - umull r9,r1,r10,r2 - adcs r8,r8,r14 - umull r10,r12,r11,r2 - adcs r9,r9,r0 - adcs r10,r10,r1 - eor r14,r14,r14 @ first overflow bit is zero - adc r11,r12,#0 - @ multiplication-less reduction 1 - adds r6,r6,r3 @ r[3]+=r[0] - ldr r2,[sp,#40] @ restore b_ptr - adcs r7,r7,#0 @ r[4]+=0 - adcs r8,r8,#0 @ r[5]+=0 - adcs r9,r9,r3 @ r[6]+=r[0] - ldr r1,[sp,#0] @ load a[0] - adcs r10,r10,#0 @ r[7]+=0 - ldr r2,[r2,#4*1] @ load b[i] - adcs r11,r11,r3 @ r[8]+=r[0] - eor r0,r0,r0 - adc r14,r14,#0 @ overflow bit - subs r10,r10,r3 @ r[7]-=r[0] - ldr r12,[sp,#4] @ a[1] - sbcs r11,r11,#0 @ r[8]-=0 - umlal r4,r0,r1,r2 @ "r[0]"+=a[0]*b[i] - eor r1,r1,r1 - sbc r3,r14,#0 @ overflow bit, keep in mind - @ that netto result is - @ addition of a value which - @ makes underflow impossible - - ldr r14,[sp,#8] @ a[2] - umlal r5,r1,r12,r2 @ "r[1]"+=a[1]*b[i] - str r3,[sp,#36] @ temporarily offload overflow - eor r12,r12,r12 - ldr r3,[sp,#12] @ a[3], r3 is alias r3 - umlal r6,r12,r14,r2 @ "r[2]"+=a[2]*b[i] - eor r14,r14,r14 - adds r5,r5,r0 @ accumulate high part of mult - ldr r0,[sp,#16] @ a[4] - umlal r7,r14,r3,r2 @ "r[3]"+=a[3]*b[i] - eor r3,r3,r3 - adcs r6,r6,r1 - ldr r1,[sp,#20] @ a[5] - umlal r8,r3,r0,r2 @ "r[4]"+=a[4]*b[i] - eor r0,r0,r0 - adcs r7,r7,r12 - ldr r12,[sp,#24] @ a[6] - umlal r9,r0,r1,r2 @ "r[5]"+=a[5]*b[i] - eor r1,r1,r1 - adcs r8,r8,r14 - ldr r14,[sp,#28] @ a[7] - umlal r10,r1,r12,r2 @ "r[6]"+=a[6]*b[i] - eor r12,r12,r12 - adcs r9,r9,r3 - ldr r3,[sp,#36] @ restore overflow bit - umlal r11,r12,r14,r2 @ "r[7]"+=a[7]*b[i] - eor r14,r14,r14 - adcs r10,r10,r0 - adcs r11,r11,r1 - adcs r3,r3,r12 - adc r14,r14,#0 @ new overflow bit - @ multiplication-less reduction 2 - adds r7,r7,r4 @ r[3]+=r[0] - ldr r2,[sp,#40] @ restore b_ptr - adcs r8,r8,#0 @ r[4]+=0 - adcs r9,r9,#0 @ r[5]+=0 - adcs r10,r10,r4 @ r[6]+=r[0] - ldr r1,[sp,#0] @ load a[0] - adcs r11,r11,#0 @ r[7]+=0 - ldr r2,[r2,#4*2] @ load b[i] - adcs r3,r3,r4 @ r[8]+=r[0] - eor r0,r0,r0 - adc r14,r14,#0 @ overflow bit - subs r11,r11,r4 @ r[7]-=r[0] - ldr r12,[sp,#4] @ a[1] - sbcs r3,r3,#0 @ r[8]-=0 - umlal r5,r0,r1,r2 @ "r[0]"+=a[0]*b[i] - eor r1,r1,r1 - sbc r4,r14,#0 @ overflow bit, keep in mind - @ that netto result is - @ addition of a value which - @ makes underflow impossible - - ldr r14,[sp,#8] @ a[2] - umlal r6,r1,r12,r2 @ "r[1]"+=a[1]*b[i] - str r4,[sp,#36] @ temporarily offload overflow - eor r12,r12,r12 - ldr r4,[sp,#12] @ a[3], r4 is alias r4 - umlal r7,r12,r14,r2 @ "r[2]"+=a[2]*b[i] - eor r14,r14,r14 - adds r6,r6,r0 @ accumulate high part of mult - ldr r0,[sp,#16] @ a[4] - umlal r8,r14,r4,r2 @ "r[3]"+=a[3]*b[i] - eor r4,r4,r4 - adcs r7,r7,r1 - ldr r1,[sp,#20] @ a[5] - umlal r9,r4,r0,r2 @ "r[4]"+=a[4]*b[i] - eor r0,r0,r0 - adcs r8,r8,r12 - ldr r12,[sp,#24] @ a[6] - umlal r10,r0,r1,r2 @ "r[5]"+=a[5]*b[i] - eor r1,r1,r1 - adcs r9,r9,r14 - ldr r14,[sp,#28] @ a[7] - umlal r11,r1,r12,r2 @ "r[6]"+=a[6]*b[i] - eor r12,r12,r12 - adcs r10,r10,r4 - ldr r4,[sp,#36] @ restore overflow bit - umlal r3,r12,r14,r2 @ "r[7]"+=a[7]*b[i] - eor r14,r14,r14 - adcs r11,r11,r0 - adcs r3,r3,r1 - adcs r4,r4,r12 - adc r14,r14,#0 @ new overflow bit - @ multiplication-less reduction 3 - adds r8,r8,r5 @ r[3]+=r[0] - ldr r2,[sp,#40] @ restore b_ptr - adcs r9,r9,#0 @ r[4]+=0 - adcs r10,r10,#0 @ r[5]+=0 - adcs r11,r11,r5 @ r[6]+=r[0] - ldr r1,[sp,#0] @ load a[0] - adcs r3,r3,#0 @ r[7]+=0 - ldr r2,[r2,#4*3] @ load b[i] - adcs r4,r4,r5 @ r[8]+=r[0] - eor r0,r0,r0 - adc r14,r14,#0 @ overflow bit - subs r3,r3,r5 @ r[7]-=r[0] - ldr r12,[sp,#4] @ a[1] - sbcs r4,r4,#0 @ r[8]-=0 - umlal r6,r0,r1,r2 @ "r[0]"+=a[0]*b[i] - eor r1,r1,r1 - sbc r5,r14,#0 @ overflow bit, keep in mind - @ that netto result is - @ addition of a value which - @ makes underflow impossible - - ldr r14,[sp,#8] @ a[2] - umlal r7,r1,r12,r2 @ "r[1]"+=a[1]*b[i] - str r5,[sp,#36] @ temporarily offload overflow - eor r12,r12,r12 - ldr r5,[sp,#12] @ a[3], r5 is alias r5 - umlal r8,r12,r14,r2 @ "r[2]"+=a[2]*b[i] - eor r14,r14,r14 - adds r7,r7,r0 @ accumulate high part of mult - ldr r0,[sp,#16] @ a[4] - umlal r9,r14,r5,r2 @ "r[3]"+=a[3]*b[i] - eor r5,r5,r5 - adcs r8,r8,r1 - ldr r1,[sp,#20] @ a[5] - umlal r10,r5,r0,r2 @ "r[4]"+=a[4]*b[i] - eor r0,r0,r0 - adcs r9,r9,r12 - ldr r12,[sp,#24] @ a[6] - umlal r11,r0,r1,r2 @ "r[5]"+=a[5]*b[i] - eor r1,r1,r1 - adcs r10,r10,r14 - ldr r14,[sp,#28] @ a[7] - umlal r3,r1,r12,r2 @ "r[6]"+=a[6]*b[i] - eor r12,r12,r12 - adcs r11,r11,r5 - ldr r5,[sp,#36] @ restore overflow bit - umlal r4,r12,r14,r2 @ "r[7]"+=a[7]*b[i] - eor r14,r14,r14 - adcs r3,r3,r0 - adcs r4,r4,r1 - adcs r5,r5,r12 - adc r14,r14,#0 @ new overflow bit - @ multiplication-less reduction 4 - adds r9,r9,r6 @ r[3]+=r[0] - ldr r2,[sp,#40] @ restore b_ptr - adcs r10,r10,#0 @ r[4]+=0 - adcs r11,r11,#0 @ r[5]+=0 - adcs r3,r3,r6 @ r[6]+=r[0] - ldr r1,[sp,#0] @ load a[0] - adcs r4,r4,#0 @ r[7]+=0 - ldr r2,[r2,#4*4] @ load b[i] - adcs r5,r5,r6 @ r[8]+=r[0] - eor r0,r0,r0 - adc r14,r14,#0 @ overflow bit - subs r4,r4,r6 @ r[7]-=r[0] - ldr r12,[sp,#4] @ a[1] - sbcs r5,r5,#0 @ r[8]-=0 - umlal r7,r0,r1,r2 @ "r[0]"+=a[0]*b[i] - eor r1,r1,r1 - sbc r6,r14,#0 @ overflow bit, keep in mind - @ that netto result is - @ addition of a value which - @ makes underflow impossible - - ldr r14,[sp,#8] @ a[2] - umlal r8,r1,r12,r2 @ "r[1]"+=a[1]*b[i] - str r6,[sp,#36] @ temporarily offload overflow - eor r12,r12,r12 - ldr r6,[sp,#12] @ a[3], r6 is alias r6 - umlal r9,r12,r14,r2 @ "r[2]"+=a[2]*b[i] - eor r14,r14,r14 - adds r8,r8,r0 @ accumulate high part of mult - ldr r0,[sp,#16] @ a[4] - umlal r10,r14,r6,r2 @ "r[3]"+=a[3]*b[i] - eor r6,r6,r6 - adcs r9,r9,r1 - ldr r1,[sp,#20] @ a[5] - umlal r11,r6,r0,r2 @ "r[4]"+=a[4]*b[i] - eor r0,r0,r0 - adcs r10,r10,r12 - ldr r12,[sp,#24] @ a[6] - umlal r3,r0,r1,r2 @ "r[5]"+=a[5]*b[i] - eor r1,r1,r1 - adcs r11,r11,r14 - ldr r14,[sp,#28] @ a[7] - umlal r4,r1,r12,r2 @ "r[6]"+=a[6]*b[i] - eor r12,r12,r12 - adcs r3,r3,r6 - ldr r6,[sp,#36] @ restore overflow bit - umlal r5,r12,r14,r2 @ "r[7]"+=a[7]*b[i] - eor r14,r14,r14 - adcs r4,r4,r0 - adcs r5,r5,r1 - adcs r6,r6,r12 - adc r14,r14,#0 @ new overflow bit - @ multiplication-less reduction 5 - adds r10,r10,r7 @ r[3]+=r[0] - ldr r2,[sp,#40] @ restore b_ptr - adcs r11,r11,#0 @ r[4]+=0 - adcs r3,r3,#0 @ r[5]+=0 - adcs r4,r4,r7 @ r[6]+=r[0] - ldr r1,[sp,#0] @ load a[0] - adcs r5,r5,#0 @ r[7]+=0 - ldr r2,[r2,#4*5] @ load b[i] - adcs r6,r6,r7 @ r[8]+=r[0] - eor r0,r0,r0 - adc r14,r14,#0 @ overflow bit - subs r5,r5,r7 @ r[7]-=r[0] - ldr r12,[sp,#4] @ a[1] - sbcs r6,r6,#0 @ r[8]-=0 - umlal r8,r0,r1,r2 @ "r[0]"+=a[0]*b[i] - eor r1,r1,r1 - sbc r7,r14,#0 @ overflow bit, keep in mind - @ that netto result is - @ addition of a value which - @ makes underflow impossible - - ldr r14,[sp,#8] @ a[2] - umlal r9,r1,r12,r2 @ "r[1]"+=a[1]*b[i] - str r7,[sp,#36] @ temporarily offload overflow - eor r12,r12,r12 - ldr r7,[sp,#12] @ a[3], r7 is alias r7 - umlal r10,r12,r14,r2 @ "r[2]"+=a[2]*b[i] - eor r14,r14,r14 - adds r9,r9,r0 @ accumulate high part of mult - ldr r0,[sp,#16] @ a[4] - umlal r11,r14,r7,r2 @ "r[3]"+=a[3]*b[i] - eor r7,r7,r7 - adcs r10,r10,r1 - ldr r1,[sp,#20] @ a[5] - umlal r3,r7,r0,r2 @ "r[4]"+=a[4]*b[i] - eor r0,r0,r0 - adcs r11,r11,r12 - ldr r12,[sp,#24] @ a[6] - umlal r4,r0,r1,r2 @ "r[5]"+=a[5]*b[i] - eor r1,r1,r1 - adcs r3,r3,r14 - ldr r14,[sp,#28] @ a[7] - umlal r5,r1,r12,r2 @ "r[6]"+=a[6]*b[i] - eor r12,r12,r12 - adcs r4,r4,r7 - ldr r7,[sp,#36] @ restore overflow bit - umlal r6,r12,r14,r2 @ "r[7]"+=a[7]*b[i] - eor r14,r14,r14 - adcs r5,r5,r0 - adcs r6,r6,r1 - adcs r7,r7,r12 - adc r14,r14,#0 @ new overflow bit - @ multiplication-less reduction 6 - adds r11,r11,r8 @ r[3]+=r[0] - ldr r2,[sp,#40] @ restore b_ptr - adcs r3,r3,#0 @ r[4]+=0 - adcs r4,r4,#0 @ r[5]+=0 - adcs r5,r5,r8 @ r[6]+=r[0] - ldr r1,[sp,#0] @ load a[0] - adcs r6,r6,#0 @ r[7]+=0 - ldr r2,[r2,#4*6] @ load b[i] - adcs r7,r7,r8 @ r[8]+=r[0] - eor r0,r0,r0 - adc r14,r14,#0 @ overflow bit - subs r6,r6,r8 @ r[7]-=r[0] - ldr r12,[sp,#4] @ a[1] - sbcs r7,r7,#0 @ r[8]-=0 - umlal r9,r0,r1,r2 @ "r[0]"+=a[0]*b[i] - eor r1,r1,r1 - sbc r8,r14,#0 @ overflow bit, keep in mind - @ that netto result is - @ addition of a value which - @ makes underflow impossible - - ldr r14,[sp,#8] @ a[2] - umlal r10,r1,r12,r2 @ "r[1]"+=a[1]*b[i] - str r8,[sp,#36] @ temporarily offload overflow - eor r12,r12,r12 - ldr r8,[sp,#12] @ a[3], r8 is alias r8 - umlal r11,r12,r14,r2 @ "r[2]"+=a[2]*b[i] - eor r14,r14,r14 - adds r10,r10,r0 @ accumulate high part of mult - ldr r0,[sp,#16] @ a[4] - umlal r3,r14,r8,r2 @ "r[3]"+=a[3]*b[i] - eor r8,r8,r8 - adcs r11,r11,r1 - ldr r1,[sp,#20] @ a[5] - umlal r4,r8,r0,r2 @ "r[4]"+=a[4]*b[i] - eor r0,r0,r0 - adcs r3,r3,r12 - ldr r12,[sp,#24] @ a[6] - umlal r5,r0,r1,r2 @ "r[5]"+=a[5]*b[i] - eor r1,r1,r1 - adcs r4,r4,r14 - ldr r14,[sp,#28] @ a[7] - umlal r6,r1,r12,r2 @ "r[6]"+=a[6]*b[i] - eor r12,r12,r12 - adcs r5,r5,r8 - ldr r8,[sp,#36] @ restore overflow bit - umlal r7,r12,r14,r2 @ "r[7]"+=a[7]*b[i] - eor r14,r14,r14 - adcs r6,r6,r0 - adcs r7,r7,r1 - adcs r8,r8,r12 - adc r14,r14,#0 @ new overflow bit - @ multiplication-less reduction 7 - adds r3,r3,r9 @ r[3]+=r[0] - ldr r2,[sp,#40] @ restore b_ptr - adcs r4,r4,#0 @ r[4]+=0 - adcs r5,r5,#0 @ r[5]+=0 - adcs r6,r6,r9 @ r[6]+=r[0] - ldr r1,[sp,#0] @ load a[0] - adcs r7,r7,#0 @ r[7]+=0 - ldr r2,[r2,#4*7] @ load b[i] - adcs r8,r8,r9 @ r[8]+=r[0] - eor r0,r0,r0 - adc r14,r14,#0 @ overflow bit - subs r7,r7,r9 @ r[7]-=r[0] - ldr r12,[sp,#4] @ a[1] - sbcs r8,r8,#0 @ r[8]-=0 - umlal r10,r0,r1,r2 @ "r[0]"+=a[0]*b[i] - eor r1,r1,r1 - sbc r9,r14,#0 @ overflow bit, keep in mind - @ that netto result is - @ addition of a value which - @ makes underflow impossible - - ldr r14,[sp,#8] @ a[2] - umlal r11,r1,r12,r2 @ "r[1]"+=a[1]*b[i] - str r9,[sp,#36] @ temporarily offload overflow - eor r12,r12,r12 - ldr r9,[sp,#12] @ a[3], r9 is alias r9 - umlal r3,r12,r14,r2 @ "r[2]"+=a[2]*b[i] - eor r14,r14,r14 - adds r11,r11,r0 @ accumulate high part of mult - ldr r0,[sp,#16] @ a[4] - umlal r4,r14,r9,r2 @ "r[3]"+=a[3]*b[i] - eor r9,r9,r9 - adcs r3,r3,r1 - ldr r1,[sp,#20] @ a[5] - umlal r5,r9,r0,r2 @ "r[4]"+=a[4]*b[i] - eor r0,r0,r0 - adcs r4,r4,r12 - ldr r12,[sp,#24] @ a[6] - umlal r6,r0,r1,r2 @ "r[5]"+=a[5]*b[i] - eor r1,r1,r1 - adcs r5,r5,r14 - ldr r14,[sp,#28] @ a[7] - umlal r7,r1,r12,r2 @ "r[6]"+=a[6]*b[i] - eor r12,r12,r12 - adcs r6,r6,r9 - ldr r9,[sp,#36] @ restore overflow bit - umlal r8,r12,r14,r2 @ "r[7]"+=a[7]*b[i] - eor r14,r14,r14 - adcs r7,r7,r0 - adcs r8,r8,r1 - adcs r9,r9,r12 - adc r14,r14,#0 @ new overflow bit - @ last multiplication-less reduction - adds r4,r4,r10 - ldr r0,[sp,#32] @ restore r_ptr - adcs r5,r5,#0 - adcs r6,r6,#0 - adcs r7,r7,r10 - adcs r8,r8,#0 - adcs r9,r9,r10 - adc r14,r14,#0 - subs r8,r8,r10 - sbcs r9,r9,#0 - sbc r10,r14,#0 @ overflow bit - - @ Final step is "if result > mod, subtract mod", but we do it - @ "other way around", namely subtract modulus from result - @ and if it borrowed, add modulus back. - - adds r11,r11,#1 @ subs r11,r11,#-1 - adcs r3,r3,#0 @ sbcs r3,r3,#-1 - adcs r4,r4,#0 @ sbcs r4,r4,#-1 - sbcs r5,r5,#0 - sbcs r6,r6,#0 - sbcs r7,r7,#0 - sbcs r8,r8,#1 - adcs r9,r9,#0 @ sbcs r9,r9,#-1 - ldr lr,[sp,#44] @ restore lr - sbc r10,r10,#0 @ broadcast borrow bit - add sp,sp,#48 - - @ Note that because mod has special form, i.e. consists of - @ 0xffffffff, 1 and 0s, we can conditionally synthesize it by - @ broadcasting borrow bit to a register, r10, and using it as - @ a whole or extracting single bit. - - adds r11,r11,r10 @ add modulus or zero - adcs r3,r3,r10 - str r11,[r0,#0] - adcs r4,r4,r10 - str r3,[r0,#4] - adcs r5,r5,#0 - str r4,[r0,#8] - adcs r6,r6,#0 - str r5,[r0,#12] - adcs r7,r7,#0 - str r6,[r0,#16] - adcs r8,r8,r10,lsr#31 - str r7,[r0,#20] - adc r9,r9,r10 - str r8,[r0,#24] - str r9,[r0,#28] - - mov pc,lr -.size __ecp_nistz256_mul_mont,.-__ecp_nistz256_mul_mont -.type __ecp_nistz256_sub_from,%function -.align 5 -__ecp_nistz256_sub_from: - str lr,[sp,#-4]! @ push lr - - ldr r10,[r2,#0] - ldr r12,[r2,#4] - ldr r14,[r2,#8] - ldr r1,[r2,#12] - subs r11,r11,r10 - ldr r10,[r2,#16] - sbcs r3,r3,r12 - ldr r12,[r2,#20] - sbcs r4,r4,r14 - ldr r14,[r2,#24] - sbcs r5,r5,r1 - ldr r1,[r2,#28] - sbcs r6,r6,r10 - sbcs r7,r7,r12 - sbcs r8,r8,r14 - sbcs r9,r9,r1 - sbc r2,r2,r2 @ broadcast borrow bit - ldr lr,[sp],#4 @ pop lr - - adds r11,r11,r2 @ add synthesized modulus - adcs r3,r3,r2 - str r11,[r0,#0] - adcs r4,r4,r2 - str r3,[r0,#4] - adcs r5,r5,#0 - str r4,[r0,#8] - adcs r6,r6,#0 - str r5,[r0,#12] - adcs r7,r7,#0 - str r6,[r0,#16] - adcs r8,r8,r2,lsr#31 - str r7,[r0,#20] - adcs r9,r9,r2 - str r8,[r0,#24] - str r9,[r0,#28] - - mov pc,lr -.size __ecp_nistz256_sub_from,.-__ecp_nistz256_sub_from - -.type __ecp_nistz256_sub_morf,%function -.align 5 -__ecp_nistz256_sub_morf: - str lr,[sp,#-4]! @ push lr - - ldr r10,[r2,#0] - ldr r12,[r2,#4] - ldr r14,[r2,#8] - ldr r1,[r2,#12] - subs r11,r10,r11 - ldr r10,[r2,#16] - sbcs r3,r12,r3 - ldr r12,[r2,#20] - sbcs r4,r14,r4 - ldr r14,[r2,#24] - sbcs r5,r1,r5 - ldr r1,[r2,#28] - sbcs r6,r10,r6 - sbcs r7,r12,r7 - sbcs r8,r14,r8 - sbcs r9,r1,r9 - sbc r2,r2,r2 @ broadcast borrow bit - ldr lr,[sp],#4 @ pop lr - - adds r11,r11,r2 @ add synthesized modulus - adcs r3,r3,r2 - str r11,[r0,#0] - adcs r4,r4,r2 - str r3,[r0,#4] - adcs r5,r5,#0 - str r4,[r0,#8] - adcs r6,r6,#0 - str r5,[r0,#12] - adcs r7,r7,#0 - str r6,[r0,#16] - adcs r8,r8,r2,lsr#31 - str r7,[r0,#20] - adcs r9,r9,r2 - str r8,[r0,#24] - str r9,[r0,#28] - - mov pc,lr -.size __ecp_nistz256_sub_morf,.-__ecp_nistz256_sub_morf - -.type __ecp_nistz256_add_self,%function -.align 4 -__ecp_nistz256_add_self: - adds r11,r11,r11 @ a[0:7]+=a[0:7] - adcs r3,r3,r3 - adcs r4,r4,r4 - adcs r5,r5,r5 - adcs r6,r6,r6 - adcs r7,r7,r7 - adcs r8,r8,r8 - mov r2,#0 - adcs r9,r9,r9 - adc r2,r2,#0 - - @ if a+b >= modulus, subtract modulus. - @ - @ But since comparison implies subtraction, we subtract - @ modulus and then add it back if subtraction borrowed. - - subs r11,r11,#-1 - sbcs r3,r3,#-1 - sbcs r4,r4,#-1 - sbcs r5,r5,#0 - sbcs r6,r6,#0 - sbcs r7,r7,#0 - sbcs r8,r8,#1 - sbcs r9,r9,#-1 - sbc r2,r2,#0 - - @ Note that because mod has special form, i.e. consists of - @ 0xffffffff, 1 and 0s, we can conditionally synthesize it by - @ using value of borrow as a whole or extracting single bit. - @ Follow r2 register... - - adds r11,r11,r2 @ add synthesized modulus - adcs r3,r3,r2 - str r11,[r0,#0] - adcs r4,r4,r2 - str r3,[r0,#4] - adcs r5,r5,#0 - str r4,[r0,#8] - adcs r6,r6,#0 - str r5,[r0,#12] - adcs r7,r7,#0 - str r6,[r0,#16] - adcs r8,r8,r2,lsr#31 - str r7,[r0,#20] - adcs r9,r9,r2 - str r8,[r0,#24] - str r9,[r0,#28] - - mov pc,lr -.size __ecp_nistz256_add_self,.-__ecp_nistz256_add_self - -.globl GFp_nistz256_point_double -.hidden GFp_nistz256_point_double -.type GFp_nistz256_point_double,%function -.align 5 -GFp_nistz256_point_double: - stmdb sp!,{r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} @ push from r0, unusual, but intentional - sub sp,sp,#32*5 - -.Lpoint_double_shortcut: - add r3,sp,#96 - ldmia r1!,{r4,r5,r6,r7,r8,r9,r10,r11} @ copy in_x - stmia r3,{r4,r5,r6,r7,r8,r9,r10,r11} - - add r0,sp,#0 - bl __ecp_nistz256_mul_by_2 @ p256_mul_by_2(S, in_y); - - add r2,r1,#32 - add r1,r1,#32 - add r0,sp,#64 - bl __ecp_nistz256_mul_mont @ p256_sqr_mont(Zsqr, in_z); - - add r1,sp,#0 - add r2,sp,#0 - add r0,sp,#0 - bl __ecp_nistz256_mul_mont @ p256_sqr_mont(S, S); - - ldr r2,[sp,#32*5+4] - add r1,r2,#32 - add r2,r2,#64 - add r0,sp,#128 - bl __ecp_nistz256_mul_mont @ p256_mul_mont(tmp0, in_z, in_y); - - ldr r0,[sp,#32*5] - add r0,r0,#64 - bl __ecp_nistz256_add_self @ p256_mul_by_2(res_z, tmp0); - - add r1,sp,#96 - add r2,sp,#64 - add r0,sp,#32 - bl __ecp_nistz256_add @ p256_add(M, in_x, Zsqr); - - add r1,sp,#96 - add r2,sp,#64 - add r0,sp,#64 - bl __ecp_nistz256_sub @ p256_sub(Zsqr, in_x, Zsqr); - - add r1,sp,#0 - add r2,sp,#0 - add r0,sp,#128 - bl __ecp_nistz256_mul_mont @ p256_sqr_mont(tmp0, S); - - add r1,sp,#64 - add r2,sp,#32 - add r0,sp,#32 - bl __ecp_nistz256_mul_mont @ p256_mul_mont(M, M, Zsqr); - - ldr r0,[sp,#32*5] - add r1,sp,#128 - add r0,r0,#32 - bl __ecp_nistz256_div_by_2 @ p256_div_by_2(res_y, tmp0); - - add r1,sp,#32 - add r0,sp,#32 - bl __ecp_nistz256_mul_by_3 @ p256_mul_by_3(M, M); - - add r1,sp,#96 - add r2,sp,#0 - add r0,sp,#0 - bl __ecp_nistz256_mul_mont @ p256_mul_mont(S, S, in_x); - - add r0,sp,#128 - bl __ecp_nistz256_add_self @ p256_mul_by_2(tmp0, S); - - ldr r0,[sp,#32*5] - add r1,sp,#32 - add r2,sp,#32 - bl __ecp_nistz256_mul_mont @ p256_sqr_mont(res_x, M); - - add r2,sp,#128 - bl __ecp_nistz256_sub_from @ p256_sub(res_x, res_x, tmp0); - - add r2,sp,#0 - add r0,sp,#0 - bl __ecp_nistz256_sub_morf @ p256_sub(S, S, res_x); - - add r1,sp,#32 - add r2,sp,#0 - bl __ecp_nistz256_mul_mont @ p256_mul_mont(S, S, M); - - ldr r0,[sp,#32*5] - add r2,r0,#32 - add r0,r0,#32 - bl __ecp_nistz256_sub_from @ p256_sub(res_y, S, res_y); - - add sp,sp,#32*5+16 @ +16 means "skip even over saved r0-r3" -#if __ARM_ARCH__>=5 || !defined(__thumb__) - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} -#else - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - bx lr @ interoperable with Thumb ISA:-) -#endif -.size GFp_nistz256_point_double,.-GFp_nistz256_point_double -#endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-armv8-ios64.S temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-armv8-ios64.S --- temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-armv8-ios64.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-armv8-ios64.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,833 +0,0 @@ -// This file is generated from a similarly-named Perl script in the BoringSSL -// source tree. Do not edit by hand. - -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif - -#if !defined(OPENSSL_NO_ASM) -#include - -.text -.align 5 -Lpoly: -.quad 0xffffffffffffffff,0x00000000ffffffff,0x0000000000000000,0xffffffff00000001 -Lone_mont: -.quad 0x0000000000000001,0xffffffff00000000,0xffffffffffffffff,0x00000000fffffffe -Lone: -.quad 1,0,0,0 -.byte 69,67,80,95,78,73,83,84,90,50,53,54,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.align 2 - -// void GFp_nistz256_mul_mont(BN_ULONG x0[4],const BN_ULONG x1[4], -// const BN_ULONG x2[4]); -.globl _GFp_nistz256_mul_mont -.private_extern _GFp_nistz256_mul_mont - -.align 4 -_GFp_nistz256_mul_mont: - stp x29,x30,[sp,#-32]! - add x29,sp,#0 - stp x19,x20,[sp,#16] - - ldr x3,[x2] // bp[0] - ldp x4,x5,[x1] - ldp x6,x7,[x1,#16] - ldr x12,Lpoly+8 - ldr x13,Lpoly+24 - - bl __ecp_nistz256_mul_mont - - ldp x19,x20,[sp,#16] - ldp x29,x30,[sp],#32 - ret - - -// void GFp_nistz256_sqr_mont(BN_ULONG x0[4],const BN_ULONG x1[4]); -.globl _GFp_nistz256_sqr_mont -.private_extern _GFp_nistz256_sqr_mont - -.align 4 -_GFp_nistz256_sqr_mont: - stp x29,x30,[sp,#-32]! - add x29,sp,#0 - stp x19,x20,[sp,#16] - - ldp x4,x5,[x1] - ldp x6,x7,[x1,#16] - ldr x12,Lpoly+8 - ldr x13,Lpoly+24 - - bl __ecp_nistz256_sqr_mont - - ldp x19,x20,[sp,#16] - ldp x29,x30,[sp],#32 - ret - - -// void GFp_nistz256_add(BN_ULONG x0[4],const BN_ULONG x1[4], -// const BN_ULONG x2[4]); -.globl _GFp_nistz256_add -.private_extern _GFp_nistz256_add - -.align 4 -_GFp_nistz256_add: - stp x29,x30,[sp,#-16]! - add x29,sp,#0 - - ldp x14,x15,[x1] - ldp x8,x9,[x2] - ldp x16,x17,[x1,#16] - ldp x10,x11,[x2,#16] - ldr x12,Lpoly+8 - ldr x13,Lpoly+24 - - bl __ecp_nistz256_add - - ldp x29,x30,[sp],#16 - ret - - -// void GFp_nistz256_neg(BN_ULONG x0[4],const BN_ULONG x1[4]); -.globl _GFp_nistz256_neg -.private_extern _GFp_nistz256_neg - -.align 4 -_GFp_nistz256_neg: - stp x29,x30,[sp,#-16]! - add x29,sp,#0 - - mov x2,x1 - mov x14,xzr // a = 0 - mov x15,xzr - mov x16,xzr - mov x17,xzr - ldr x12,Lpoly+8 - ldr x13,Lpoly+24 - - bl __ecp_nistz256_sub_from - - ldp x29,x30,[sp],#16 - ret - - -// note that __ecp_nistz256_mul_mont expects a[0-3] input pre-loaded -// to x4-x7 and b[0] - to x3 - -.align 4 -__ecp_nistz256_mul_mont: - mul x14,x4,x3 // a[0]*b[0] - umulh x8,x4,x3 - - mul x15,x5,x3 // a[1]*b[0] - umulh x9,x5,x3 - - mul x16,x6,x3 // a[2]*b[0] - umulh x10,x6,x3 - - mul x17,x7,x3 // a[3]*b[0] - umulh x11,x7,x3 - ldr x3,[x2,#8] // b[1] - - adds x15,x15,x8 // accumulate high parts of multiplication - lsl x8,x14,#32 - adcs x16,x16,x9 - lsr x9,x14,#32 - adcs x17,x17,x10 - adc x19,xzr,x11 - mov x20,xzr - subs x10,x14,x8 // "*0xffff0001" - sbc x11,x14,x9 - adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] - mul x8,x4,x3 // lo(a[0]*b[i]) - adcs x15,x16,x9 - mul x9,x5,x3 // lo(a[1]*b[i]) - adcs x16,x17,x10 // +=acc[0]*0xffff0001 - mul x10,x6,x3 // lo(a[2]*b[i]) - adcs x17,x19,x11 - mul x11,x7,x3 // lo(a[3]*b[i]) - adc x19,x20,xzr - - adds x14,x14,x8 // accumulate low parts of multiplication - umulh x8,x4,x3 // hi(a[0]*b[i]) - adcs x15,x15,x9 - umulh x9,x5,x3 // hi(a[1]*b[i]) - adcs x16,x16,x10 - umulh x10,x6,x3 // hi(a[2]*b[i]) - adcs x17,x17,x11 - umulh x11,x7,x3 // hi(a[3]*b[i]) - adc x19,x19,xzr - ldr x3,[x2,#8*(1+1)] // b[1+1] - adds x15,x15,x8 // accumulate high parts of multiplication - lsl x8,x14,#32 - adcs x16,x16,x9 - lsr x9,x14,#32 - adcs x17,x17,x10 - adcs x19,x19,x11 - adc x20,xzr,xzr - subs x10,x14,x8 // "*0xffff0001" - sbc x11,x14,x9 - adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] - mul x8,x4,x3 // lo(a[0]*b[i]) - adcs x15,x16,x9 - mul x9,x5,x3 // lo(a[1]*b[i]) - adcs x16,x17,x10 // +=acc[0]*0xffff0001 - mul x10,x6,x3 // lo(a[2]*b[i]) - adcs x17,x19,x11 - mul x11,x7,x3 // lo(a[3]*b[i]) - adc x19,x20,xzr - - adds x14,x14,x8 // accumulate low parts of multiplication - umulh x8,x4,x3 // hi(a[0]*b[i]) - adcs x15,x15,x9 - umulh x9,x5,x3 // hi(a[1]*b[i]) - adcs x16,x16,x10 - umulh x10,x6,x3 // hi(a[2]*b[i]) - adcs x17,x17,x11 - umulh x11,x7,x3 // hi(a[3]*b[i]) - adc x19,x19,xzr - ldr x3,[x2,#8*(2+1)] // b[2+1] - adds x15,x15,x8 // accumulate high parts of multiplication - lsl x8,x14,#32 - adcs x16,x16,x9 - lsr x9,x14,#32 - adcs x17,x17,x10 - adcs x19,x19,x11 - adc x20,xzr,xzr - subs x10,x14,x8 // "*0xffff0001" - sbc x11,x14,x9 - adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] - mul x8,x4,x3 // lo(a[0]*b[i]) - adcs x15,x16,x9 - mul x9,x5,x3 // lo(a[1]*b[i]) - adcs x16,x17,x10 // +=acc[0]*0xffff0001 - mul x10,x6,x3 // lo(a[2]*b[i]) - adcs x17,x19,x11 - mul x11,x7,x3 // lo(a[3]*b[i]) - adc x19,x20,xzr - - adds x14,x14,x8 // accumulate low parts of multiplication - umulh x8,x4,x3 // hi(a[0]*b[i]) - adcs x15,x15,x9 - umulh x9,x5,x3 // hi(a[1]*b[i]) - adcs x16,x16,x10 - umulh x10,x6,x3 // hi(a[2]*b[i]) - adcs x17,x17,x11 - umulh x11,x7,x3 // hi(a[3]*b[i]) - adc x19,x19,xzr - adds x15,x15,x8 // accumulate high parts of multiplication - lsl x8,x14,#32 - adcs x16,x16,x9 - lsr x9,x14,#32 - adcs x17,x17,x10 - adcs x19,x19,x11 - adc x20,xzr,xzr - // last reduction - subs x10,x14,x8 // "*0xffff0001" - sbc x11,x14,x9 - adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] - adcs x15,x16,x9 - adcs x16,x17,x10 // +=acc[0]*0xffff0001 - adcs x17,x19,x11 - adc x19,x20,xzr - - adds x8,x14,#1 // subs x8,x14,#-1 // tmp = ret-modulus - sbcs x9,x15,x12 - sbcs x10,x16,xzr - sbcs x11,x17,x13 - sbcs xzr,x19,xzr // did it borrow? - - csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus - csel x15,x15,x9,lo - csel x16,x16,x10,lo - stp x14,x15,[x0] - csel x17,x17,x11,lo - stp x16,x17,[x0,#16] - - ret - - -// note that __ecp_nistz256_sqr_mont expects a[0-3] input pre-loaded -// to x4-x7 - -.align 4 -__ecp_nistz256_sqr_mont: - // | | | | | |a1*a0| | - // | | | | |a2*a0| | | - // | |a3*a2|a3*a0| | | | - // | | | |a2*a1| | | | - // | | |a3*a1| | | | | - // *| | | | | | | | 2| - // +|a3*a3|a2*a2|a1*a1|a0*a0| - // |--+--+--+--+--+--+--+--| - // |A7|A6|A5|A4|A3|A2|A1|A0|, where Ax is , i.e. follow - // - // "can't overflow" below mark carrying into high part of - // multiplication result, which can't overflow, because it - // can never be all ones. - - mul x15,x5,x4 // a[1]*a[0] - umulh x9,x5,x4 - mul x16,x6,x4 // a[2]*a[0] - umulh x10,x6,x4 - mul x17,x7,x4 // a[3]*a[0] - umulh x19,x7,x4 - - adds x16,x16,x9 // accumulate high parts of multiplication - mul x8,x6,x5 // a[2]*a[1] - umulh x9,x6,x5 - adcs x17,x17,x10 - mul x10,x7,x5 // a[3]*a[1] - umulh x11,x7,x5 - adc x19,x19,xzr // can't overflow - - mul x20,x7,x6 // a[3]*a[2] - umulh x1,x7,x6 - - adds x9,x9,x10 // accumulate high parts of multiplication - mul x14,x4,x4 // a[0]*a[0] - adc x10,x11,xzr // can't overflow - - adds x17,x17,x8 // accumulate low parts of multiplication - umulh x4,x4,x4 - adcs x19,x19,x9 - mul x9,x5,x5 // a[1]*a[1] - adcs x20,x20,x10 - umulh x5,x5,x5 - adc x1,x1,xzr // can't overflow - - adds x15,x15,x15 // acc[1-6]*=2 - mul x10,x6,x6 // a[2]*a[2] - adcs x16,x16,x16 - umulh x6,x6,x6 - adcs x17,x17,x17 - mul x11,x7,x7 // a[3]*a[3] - adcs x19,x19,x19 - umulh x7,x7,x7 - adcs x20,x20,x20 - adcs x1,x1,x1 - adc x2,xzr,xzr - - adds x15,x15,x4 // +a[i]*a[i] - adcs x16,x16,x9 - adcs x17,x17,x5 - adcs x19,x19,x10 - adcs x20,x20,x6 - lsl x8,x14,#32 - adcs x1,x1,x11 - lsr x9,x14,#32 - adc x2,x2,x7 - subs x10,x14,x8 // "*0xffff0001" - sbc x11,x14,x9 - adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] - adcs x15,x16,x9 - lsl x8,x14,#32 - adcs x16,x17,x10 // +=acc[0]*0xffff0001 - lsr x9,x14,#32 - adc x17,x11,xzr // can't overflow - subs x10,x14,x8 // "*0xffff0001" - sbc x11,x14,x9 - adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] - adcs x15,x16,x9 - lsl x8,x14,#32 - adcs x16,x17,x10 // +=acc[0]*0xffff0001 - lsr x9,x14,#32 - adc x17,x11,xzr // can't overflow - subs x10,x14,x8 // "*0xffff0001" - sbc x11,x14,x9 - adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] - adcs x15,x16,x9 - lsl x8,x14,#32 - adcs x16,x17,x10 // +=acc[0]*0xffff0001 - lsr x9,x14,#32 - adc x17,x11,xzr // can't overflow - subs x10,x14,x8 // "*0xffff0001" - sbc x11,x14,x9 - adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] - adcs x15,x16,x9 - adcs x16,x17,x10 // +=acc[0]*0xffff0001 - adc x17,x11,xzr // can't overflow - - adds x14,x14,x19 // accumulate upper half - adcs x15,x15,x20 - adcs x16,x16,x1 - adcs x17,x17,x2 - adc x19,xzr,xzr - - adds x8,x14,#1 // subs x8,x14,#-1 // tmp = ret-modulus - sbcs x9,x15,x12 - sbcs x10,x16,xzr - sbcs x11,x17,x13 - sbcs xzr,x19,xzr // did it borrow? - - csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus - csel x15,x15,x9,lo - csel x16,x16,x10,lo - stp x14,x15,[x0] - csel x17,x17,x11,lo - stp x16,x17,[x0,#16] - - ret - - -// Note that __ecp_nistz256_add expects both input vectors pre-loaded to -// x4-x7 and x8-x11. This is done because it's used in multiple -// contexts, e.g. in multiplication by 2 and 3... - -.align 4 -__ecp_nistz256_add: - adds x14,x14,x8 // ret = a+b - adcs x15,x15,x9 - adcs x16,x16,x10 - adcs x17,x17,x11 - adc x1,xzr,xzr // zap x1 - - adds x8,x14,#1 // subs x8,x4,#-1 // tmp = ret-modulus - sbcs x9,x15,x12 - sbcs x10,x16,xzr - sbcs x11,x17,x13 - sbcs xzr,x1,xzr // did subtraction borrow? - - csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus - csel x15,x15,x9,lo - csel x16,x16,x10,lo - stp x14,x15,[x0] - csel x17,x17,x11,lo - stp x16,x17,[x0,#16] - - ret - - - -.align 4 -__ecp_nistz256_sub_from: - ldp x8,x9,[x2] - ldp x10,x11,[x2,#16] - subs x14,x14,x8 // ret = a-b - sbcs x15,x15,x9 - sbcs x16,x16,x10 - sbcs x17,x17,x11 - sbc x1,xzr,xzr // zap x1 - - subs x8,x14,#1 // adds x8,x4,#-1 // tmp = ret+modulus - adcs x9,x15,x12 - adcs x10,x16,xzr - adc x11,x17,x13 - cmp x1,xzr // did subtraction borrow? - - csel x14,x14,x8,eq // ret = borrow ? ret+modulus : ret - csel x15,x15,x9,eq - csel x16,x16,x10,eq - stp x14,x15,[x0] - csel x17,x17,x11,eq - stp x16,x17,[x0,#16] - - ret - - - -.align 4 -__ecp_nistz256_sub_morf: - ldp x8,x9,[x2] - ldp x10,x11,[x2,#16] - subs x14,x8,x14 // ret = b-a - sbcs x15,x9,x15 - sbcs x16,x10,x16 - sbcs x17,x11,x17 - sbc x1,xzr,xzr // zap x1 - - subs x8,x14,#1 // adds x8,x4,#-1 // tmp = ret+modulus - adcs x9,x15,x12 - adcs x10,x16,xzr - adc x11,x17,x13 - cmp x1,xzr // did subtraction borrow? - - csel x14,x14,x8,eq // ret = borrow ? ret+modulus : ret - csel x15,x15,x9,eq - csel x16,x16,x10,eq - stp x14,x15,[x0] - csel x17,x17,x11,eq - stp x16,x17,[x0,#16] - - ret - - - -.align 4 -__ecp_nistz256_div_by_2: - subs x8,x14,#1 // adds x8,x4,#-1 // tmp = a+modulus - adcs x9,x15,x12 - adcs x10,x16,xzr - adcs x11,x17,x13 - adc x1,xzr,xzr // zap x1 - tst x14,#1 // is a even? - - csel x14,x14,x8,eq // ret = even ? a : a+modulus - csel x15,x15,x9,eq - csel x16,x16,x10,eq - csel x17,x17,x11,eq - csel x1,xzr,x1,eq - - lsr x14,x14,#1 // ret >>= 1 - orr x14,x14,x15,lsl#63 - lsr x15,x15,#1 - orr x15,x15,x16,lsl#63 - lsr x16,x16,#1 - orr x16,x16,x17,lsl#63 - lsr x17,x17,#1 - stp x14,x15,[x0] - orr x17,x17,x1,lsl#63 - stp x16,x17,[x0,#16] - - ret - -.globl _GFp_nistz256_point_double -.private_extern _GFp_nistz256_point_double - -.align 5 -_GFp_nistz256_point_double: - stp x29,x30,[sp,#-80]! - add x29,sp,#0 - stp x19,x20,[sp,#16] - stp x21,x22,[sp,#32] - sub sp,sp,#32*4 - -Ldouble_shortcut: - ldp x14,x15,[x1,#32] - mov x21,x0 - ldp x16,x17,[x1,#48] - mov x22,x1 - ldr x12,Lpoly+8 - mov x8,x14 - ldr x13,Lpoly+24 - mov x9,x15 - ldp x4,x5,[x22,#64] // forward load for p256_sqr_mont - mov x10,x16 - mov x11,x17 - ldp x6,x7,[x22,#64+16] - add x0,sp,#0 - bl __ecp_nistz256_add // p256_mul_by_2(S, in_y); - - add x0,sp,#64 - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Zsqr, in_z); - - ldp x8,x9,[x22] - ldp x10,x11,[x22,#16] - mov x4,x14 // put Zsqr aside for p256_sub - mov x5,x15 - mov x6,x16 - mov x7,x17 - add x0,sp,#32 - bl __ecp_nistz256_add // p256_add(M, Zsqr, in_x); - - add x2,x22,#0 - mov x14,x4 // restore Zsqr - mov x15,x5 - ldp x4,x5,[sp,#0] // forward load for p256_sqr_mont - mov x16,x6 - mov x17,x7 - ldp x6,x7,[sp,#0+16] - add x0,sp,#64 - bl __ecp_nistz256_sub_morf // p256_sub(Zsqr, in_x, Zsqr); - - add x0,sp,#0 - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(S, S); - - ldr x3,[x22,#32] - ldp x4,x5,[x22,#64] - ldp x6,x7,[x22,#64+16] - add x2,x22,#32 - add x0,sp,#96 - bl __ecp_nistz256_mul_mont // p256_mul_mont(tmp0, in_z, in_y); - - mov x8,x14 - mov x9,x15 - ldp x4,x5,[sp,#0] // forward load for p256_sqr_mont - mov x10,x16 - mov x11,x17 - ldp x6,x7,[sp,#0+16] - add x0,x21,#64 - bl __ecp_nistz256_add // p256_mul_by_2(res_z, tmp0); - - add x0,sp,#96 - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(tmp0, S); - - ldr x3,[sp,#64] // forward load for p256_mul_mont - ldp x4,x5,[sp,#32] - ldp x6,x7,[sp,#32+16] - add x0,x21,#32 - bl __ecp_nistz256_div_by_2 // p256_div_by_2(res_y, tmp0); - - add x2,sp,#64 - add x0,sp,#32 - bl __ecp_nistz256_mul_mont // p256_mul_mont(M, M, Zsqr); - - mov x8,x14 // duplicate M - mov x9,x15 - mov x10,x16 - mov x11,x17 - mov x4,x14 // put M aside - mov x5,x15 - mov x6,x16 - mov x7,x17 - add x0,sp,#32 - bl __ecp_nistz256_add - mov x8,x4 // restore M - mov x9,x5 - ldr x3,[x22] // forward load for p256_mul_mont - mov x10,x6 - ldp x4,x5,[sp,#0] - mov x11,x7 - ldp x6,x7,[sp,#0+16] - bl __ecp_nistz256_add // p256_mul_by_3(M, M); - - add x2,x22,#0 - add x0,sp,#0 - bl __ecp_nistz256_mul_mont // p256_mul_mont(S, S, in_x); - - mov x8,x14 - mov x9,x15 - ldp x4,x5,[sp,#32] // forward load for p256_sqr_mont - mov x10,x16 - mov x11,x17 - ldp x6,x7,[sp,#32+16] - add x0,sp,#96 - bl __ecp_nistz256_add // p256_mul_by_2(tmp0, S); - - add x0,x21,#0 - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(res_x, M); - - add x2,sp,#96 - bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, tmp0); - - add x2,sp,#0 - add x0,sp,#0 - bl __ecp_nistz256_sub_morf // p256_sub(S, S, res_x); - - ldr x3,[sp,#32] - mov x4,x14 // copy S - mov x5,x15 - mov x6,x16 - mov x7,x17 - add x2,sp,#32 - bl __ecp_nistz256_mul_mont // p256_mul_mont(S, S, M); - - add x2,x21,#32 - add x0,x21,#32 - bl __ecp_nistz256_sub_from // p256_sub(res_y, S, res_y); - - add sp,x29,#0 // destroy frame - ldp x19,x20,[x29,#16] - ldp x21,x22,[x29,#32] - ldp x29,x30,[sp],#80 - ret - -.globl _GFp_nistz256_point_add_affine -.private_extern _GFp_nistz256_point_add_affine - -.align 5 -_GFp_nistz256_point_add_affine: - stp x29,x30,[sp,#-80]! - add x29,sp,#0 - stp x19,x20,[sp,#16] - stp x21,x22,[sp,#32] - stp x23,x24,[sp,#48] - stp x25,x26,[sp,#64] - sub sp,sp,#32*10 - - mov x21,x0 - mov x22,x1 - mov x23,x2 - ldr x12,Lpoly+8 - ldr x13,Lpoly+24 - - ldp x4,x5,[x1,#64] // in1_z - ldp x6,x7,[x1,#64+16] - orr x8,x4,x5 - orr x10,x6,x7 - orr x24,x8,x10 - cmp x24,#0 - csetm x24,ne // !in1infty - - ldp x14,x15,[x2] // in2_x - ldp x16,x17,[x2,#16] - ldp x8,x9,[x2,#32] // in2_y - ldp x10,x11,[x2,#48] - orr x14,x14,x15 - orr x16,x16,x17 - orr x8,x8,x9 - orr x10,x10,x11 - orr x14,x14,x16 - orr x8,x8,x10 - orr x25,x14,x8 - cmp x25,#0 - csetm x25,ne // !in2infty - - add x0,sp,#128 - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); - - mov x4,x14 - mov x5,x15 - mov x6,x16 - mov x7,x17 - ldr x3,[x23] - add x2,x23,#0 - add x0,sp,#96 - bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, Z1sqr, in2_x); - - add x2,x22,#0 - ldr x3,[x22,#64] // forward load for p256_mul_mont - ldp x4,x5,[sp,#128] - ldp x6,x7,[sp,#128+16] - add x0,sp,#160 - bl __ecp_nistz256_sub_from // p256_sub(H, U2, in1_x); - - add x2,x22,#64 - add x0,sp,#128 - bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, Z1sqr, in1_z); - - ldr x3,[x22,#64] - ldp x4,x5,[sp,#160] - ldp x6,x7,[sp,#160+16] - add x2,x22,#64 - add x0,sp,#64 - bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, H, in1_z); - - ldr x3,[x23,#32] - ldp x4,x5,[sp,#128] - ldp x6,x7,[sp,#128+16] - add x2,x23,#32 - add x0,sp,#128 - bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S2, in2_y); - - add x2,x22,#32 - ldp x4,x5,[sp,#160] // forward load for p256_sqr_mont - ldp x6,x7,[sp,#160+16] - add x0,sp,#192 - bl __ecp_nistz256_sub_from // p256_sub(R, S2, in1_y); - - add x0,sp,#224 - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Hsqr, H); - - ldp x4,x5,[sp,#192] - ldp x6,x7,[sp,#192+16] - add x0,sp,#288 - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Rsqr, R); - - ldr x3,[sp,#160] - ldp x4,x5,[sp,#224] - ldp x6,x7,[sp,#224+16] - add x2,sp,#160 - add x0,sp,#256 - bl __ecp_nistz256_mul_mont // p256_mul_mont(Hcub, Hsqr, H); - - ldr x3,[x22] - ldp x4,x5,[sp,#224] - ldp x6,x7,[sp,#224+16] - add x2,x22,#0 - add x0,sp,#96 - bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, in1_x, Hsqr); - - mov x8,x14 - mov x9,x15 - mov x10,x16 - mov x11,x17 - add x0,sp,#224 - bl __ecp_nistz256_add // p256_mul_by_2(Hsqr, U2); - - add x2,sp,#288 - add x0,sp,#0 - bl __ecp_nistz256_sub_morf // p256_sub(res_x, Rsqr, Hsqr); - - add x2,sp,#256 - bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, Hcub); - - add x2,sp,#96 - ldr x3,[x22,#32] // forward load for p256_mul_mont - ldp x4,x5,[sp,#256] - ldp x6,x7,[sp,#256+16] - add x0,sp,#32 - bl __ecp_nistz256_sub_morf // p256_sub(res_y, U2, res_x); - - add x2,x22,#32 - add x0,sp,#128 - bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, in1_y, Hcub); - - ldr x3,[sp,#192] - ldp x4,x5,[sp,#32] - ldp x6,x7,[sp,#32+16] - add x2,sp,#192 - add x0,sp,#32 - bl __ecp_nistz256_mul_mont // p256_mul_mont(res_y, res_y, R); - - add x2,sp,#128 - bl __ecp_nistz256_sub_from // p256_sub(res_y, res_y, S2); - - ldp x4,x5,[sp,#0] // res - ldp x6,x7,[sp,#0+16] - ldp x8,x9,[x23] // in2 - ldp x10,x11,[x23,#16] - ldp x14,x15,[x22,#0] // in1 - cmp x24,#0 // !, remember? - ldp x16,x17,[x22,#0+16] - csel x8,x4,x8,ne - csel x9,x5,x9,ne - ldp x4,x5,[sp,#0+0+32] // res - csel x10,x6,x10,ne - csel x11,x7,x11,ne - cmp x25,#0 // !, remember? - ldp x6,x7,[sp,#0+0+48] - csel x14,x8,x14,ne - csel x15,x9,x15,ne - ldp x8,x9,[x23,#0+32] // in2 - csel x16,x10,x16,ne - csel x17,x11,x17,ne - ldp x10,x11,[x23,#0+48] - stp x14,x15,[x21,#0] - stp x16,x17,[x21,#0+16] - adr x23,Lone_mont-64 - ldp x14,x15,[x22,#32] // in1 - cmp x24,#0 // !, remember? - ldp x16,x17,[x22,#32+16] - csel x8,x4,x8,ne - csel x9,x5,x9,ne - ldp x4,x5,[sp,#0+32+32] // res - csel x10,x6,x10,ne - csel x11,x7,x11,ne - cmp x25,#0 // !, remember? - ldp x6,x7,[sp,#0+32+48] - csel x14,x8,x14,ne - csel x15,x9,x15,ne - ldp x8,x9,[x23,#32+32] // in2 - csel x16,x10,x16,ne - csel x17,x11,x17,ne - ldp x10,x11,[x23,#32+48] - stp x14,x15,[x21,#32] - stp x16,x17,[x21,#32+16] - ldp x14,x15,[x22,#64] // in1 - cmp x24,#0 // !, remember? - ldp x16,x17,[x22,#64+16] - csel x8,x4,x8,ne - csel x9,x5,x9,ne - csel x10,x6,x10,ne - csel x11,x7,x11,ne - cmp x25,#0 // !, remember? - csel x14,x8,x14,ne - csel x15,x9,x15,ne - csel x16,x10,x16,ne - csel x17,x11,x17,ne - stp x14,x15,[x21,#64] - stp x16,x17,[x21,#64+16] - - add sp,x29,#0 // destroy frame - ldp x19,x20,[x29,#16] - ldp x21,x22,[x29,#32] - ldp x23,x24,[x29,#48] - ldp x25,x26,[x29,#64] - ldp x29,x30,[sp],#80 - ret - -#endif // !OPENSSL_NO_ASM diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-armv8-linux64.S temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-armv8-linux64.S --- temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-armv8-linux64.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-armv8-linux64.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,836 +0,0 @@ -// This file is generated from a similarly-named Perl script in the BoringSSL -// source tree. Do not edit by hand. - -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif - -#if !defined(OPENSSL_NO_ASM) -#if defined(__aarch64__) -#include - -.text -.align 5 -.Lpoly: -.quad 0xffffffffffffffff,0x00000000ffffffff,0x0000000000000000,0xffffffff00000001 -.Lone_mont: -.quad 0x0000000000000001,0xffffffff00000000,0xffffffffffffffff,0x00000000fffffffe -.Lone: -.quad 1,0,0,0 -.byte 69,67,80,95,78,73,83,84,90,50,53,54,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.align 2 - -// void GFp_nistz256_mul_mont(BN_ULONG x0[4],const BN_ULONG x1[4], -// const BN_ULONG x2[4]); -.globl GFp_nistz256_mul_mont -.hidden GFp_nistz256_mul_mont -.type GFp_nistz256_mul_mont,%function -.align 4 -GFp_nistz256_mul_mont: - stp x29,x30,[sp,#-32]! - add x29,sp,#0 - stp x19,x20,[sp,#16] - - ldr x3,[x2] // bp[0] - ldp x4,x5,[x1] - ldp x6,x7,[x1,#16] - ldr x12,.Lpoly+8 - ldr x13,.Lpoly+24 - - bl __ecp_nistz256_mul_mont - - ldp x19,x20,[sp,#16] - ldp x29,x30,[sp],#32 - ret -.size GFp_nistz256_mul_mont,.-GFp_nistz256_mul_mont - -// void GFp_nistz256_sqr_mont(BN_ULONG x0[4],const BN_ULONG x1[4]); -.globl GFp_nistz256_sqr_mont -.hidden GFp_nistz256_sqr_mont -.type GFp_nistz256_sqr_mont,%function -.align 4 -GFp_nistz256_sqr_mont: - stp x29,x30,[sp,#-32]! - add x29,sp,#0 - stp x19,x20,[sp,#16] - - ldp x4,x5,[x1] - ldp x6,x7,[x1,#16] - ldr x12,.Lpoly+8 - ldr x13,.Lpoly+24 - - bl __ecp_nistz256_sqr_mont - - ldp x19,x20,[sp,#16] - ldp x29,x30,[sp],#32 - ret -.size GFp_nistz256_sqr_mont,.-GFp_nistz256_sqr_mont - -// void GFp_nistz256_add(BN_ULONG x0[4],const BN_ULONG x1[4], -// const BN_ULONG x2[4]); -.globl GFp_nistz256_add -.hidden GFp_nistz256_add -.type GFp_nistz256_add,%function -.align 4 -GFp_nistz256_add: - stp x29,x30,[sp,#-16]! - add x29,sp,#0 - - ldp x14,x15,[x1] - ldp x8,x9,[x2] - ldp x16,x17,[x1,#16] - ldp x10,x11,[x2,#16] - ldr x12,.Lpoly+8 - ldr x13,.Lpoly+24 - - bl __ecp_nistz256_add - - ldp x29,x30,[sp],#16 - ret -.size GFp_nistz256_add,.-GFp_nistz256_add - -// void GFp_nistz256_neg(BN_ULONG x0[4],const BN_ULONG x1[4]); -.globl GFp_nistz256_neg -.hidden GFp_nistz256_neg -.type GFp_nistz256_neg,%function -.align 4 -GFp_nistz256_neg: - stp x29,x30,[sp,#-16]! - add x29,sp,#0 - - mov x2,x1 - mov x14,xzr // a = 0 - mov x15,xzr - mov x16,xzr - mov x17,xzr - ldr x12,.Lpoly+8 - ldr x13,.Lpoly+24 - - bl __ecp_nistz256_sub_from - - ldp x29,x30,[sp],#16 - ret -.size GFp_nistz256_neg,.-GFp_nistz256_neg - -// note that __ecp_nistz256_mul_mont expects a[0-3] input pre-loaded -// to x4-x7 and b[0] - to x3 -.type __ecp_nistz256_mul_mont,%function -.align 4 -__ecp_nistz256_mul_mont: - mul x14,x4,x3 // a[0]*b[0] - umulh x8,x4,x3 - - mul x15,x5,x3 // a[1]*b[0] - umulh x9,x5,x3 - - mul x16,x6,x3 // a[2]*b[0] - umulh x10,x6,x3 - - mul x17,x7,x3 // a[3]*b[0] - umulh x11,x7,x3 - ldr x3,[x2,#8] // b[1] - - adds x15,x15,x8 // accumulate high parts of multiplication - lsl x8,x14,#32 - adcs x16,x16,x9 - lsr x9,x14,#32 - adcs x17,x17,x10 - adc x19,xzr,x11 - mov x20,xzr - subs x10,x14,x8 // "*0xffff0001" - sbc x11,x14,x9 - adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] - mul x8,x4,x3 // lo(a[0]*b[i]) - adcs x15,x16,x9 - mul x9,x5,x3 // lo(a[1]*b[i]) - adcs x16,x17,x10 // +=acc[0]*0xffff0001 - mul x10,x6,x3 // lo(a[2]*b[i]) - adcs x17,x19,x11 - mul x11,x7,x3 // lo(a[3]*b[i]) - adc x19,x20,xzr - - adds x14,x14,x8 // accumulate low parts of multiplication - umulh x8,x4,x3 // hi(a[0]*b[i]) - adcs x15,x15,x9 - umulh x9,x5,x3 // hi(a[1]*b[i]) - adcs x16,x16,x10 - umulh x10,x6,x3 // hi(a[2]*b[i]) - adcs x17,x17,x11 - umulh x11,x7,x3 // hi(a[3]*b[i]) - adc x19,x19,xzr - ldr x3,[x2,#8*(1+1)] // b[1+1] - adds x15,x15,x8 // accumulate high parts of multiplication - lsl x8,x14,#32 - adcs x16,x16,x9 - lsr x9,x14,#32 - adcs x17,x17,x10 - adcs x19,x19,x11 - adc x20,xzr,xzr - subs x10,x14,x8 // "*0xffff0001" - sbc x11,x14,x9 - adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] - mul x8,x4,x3 // lo(a[0]*b[i]) - adcs x15,x16,x9 - mul x9,x5,x3 // lo(a[1]*b[i]) - adcs x16,x17,x10 // +=acc[0]*0xffff0001 - mul x10,x6,x3 // lo(a[2]*b[i]) - adcs x17,x19,x11 - mul x11,x7,x3 // lo(a[3]*b[i]) - adc x19,x20,xzr - - adds x14,x14,x8 // accumulate low parts of multiplication - umulh x8,x4,x3 // hi(a[0]*b[i]) - adcs x15,x15,x9 - umulh x9,x5,x3 // hi(a[1]*b[i]) - adcs x16,x16,x10 - umulh x10,x6,x3 // hi(a[2]*b[i]) - adcs x17,x17,x11 - umulh x11,x7,x3 // hi(a[3]*b[i]) - adc x19,x19,xzr - ldr x3,[x2,#8*(2+1)] // b[2+1] - adds x15,x15,x8 // accumulate high parts of multiplication - lsl x8,x14,#32 - adcs x16,x16,x9 - lsr x9,x14,#32 - adcs x17,x17,x10 - adcs x19,x19,x11 - adc x20,xzr,xzr - subs x10,x14,x8 // "*0xffff0001" - sbc x11,x14,x9 - adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] - mul x8,x4,x3 // lo(a[0]*b[i]) - adcs x15,x16,x9 - mul x9,x5,x3 // lo(a[1]*b[i]) - adcs x16,x17,x10 // +=acc[0]*0xffff0001 - mul x10,x6,x3 // lo(a[2]*b[i]) - adcs x17,x19,x11 - mul x11,x7,x3 // lo(a[3]*b[i]) - adc x19,x20,xzr - - adds x14,x14,x8 // accumulate low parts of multiplication - umulh x8,x4,x3 // hi(a[0]*b[i]) - adcs x15,x15,x9 - umulh x9,x5,x3 // hi(a[1]*b[i]) - adcs x16,x16,x10 - umulh x10,x6,x3 // hi(a[2]*b[i]) - adcs x17,x17,x11 - umulh x11,x7,x3 // hi(a[3]*b[i]) - adc x19,x19,xzr - adds x15,x15,x8 // accumulate high parts of multiplication - lsl x8,x14,#32 - adcs x16,x16,x9 - lsr x9,x14,#32 - adcs x17,x17,x10 - adcs x19,x19,x11 - adc x20,xzr,xzr - // last reduction - subs x10,x14,x8 // "*0xffff0001" - sbc x11,x14,x9 - adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] - adcs x15,x16,x9 - adcs x16,x17,x10 // +=acc[0]*0xffff0001 - adcs x17,x19,x11 - adc x19,x20,xzr - - adds x8,x14,#1 // subs x8,x14,#-1 // tmp = ret-modulus - sbcs x9,x15,x12 - sbcs x10,x16,xzr - sbcs x11,x17,x13 - sbcs xzr,x19,xzr // did it borrow? - - csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus - csel x15,x15,x9,lo - csel x16,x16,x10,lo - stp x14,x15,[x0] - csel x17,x17,x11,lo - stp x16,x17,[x0,#16] - - ret -.size __ecp_nistz256_mul_mont,.-__ecp_nistz256_mul_mont - -// note that __ecp_nistz256_sqr_mont expects a[0-3] input pre-loaded -// to x4-x7 -.type __ecp_nistz256_sqr_mont,%function -.align 4 -__ecp_nistz256_sqr_mont: - // | | | | | |a1*a0| | - // | | | | |a2*a0| | | - // | |a3*a2|a3*a0| | | | - // | | | |a2*a1| | | | - // | | |a3*a1| | | | | - // *| | | | | | | | 2| - // +|a3*a3|a2*a2|a1*a1|a0*a0| - // |--+--+--+--+--+--+--+--| - // |A7|A6|A5|A4|A3|A2|A1|A0|, where Ax is , i.e. follow - // - // "can't overflow" below mark carrying into high part of - // multiplication result, which can't overflow, because it - // can never be all ones. - - mul x15,x5,x4 // a[1]*a[0] - umulh x9,x5,x4 - mul x16,x6,x4 // a[2]*a[0] - umulh x10,x6,x4 - mul x17,x7,x4 // a[3]*a[0] - umulh x19,x7,x4 - - adds x16,x16,x9 // accumulate high parts of multiplication - mul x8,x6,x5 // a[2]*a[1] - umulh x9,x6,x5 - adcs x17,x17,x10 - mul x10,x7,x5 // a[3]*a[1] - umulh x11,x7,x5 - adc x19,x19,xzr // can't overflow - - mul x20,x7,x6 // a[3]*a[2] - umulh x1,x7,x6 - - adds x9,x9,x10 // accumulate high parts of multiplication - mul x14,x4,x4 // a[0]*a[0] - adc x10,x11,xzr // can't overflow - - adds x17,x17,x8 // accumulate low parts of multiplication - umulh x4,x4,x4 - adcs x19,x19,x9 - mul x9,x5,x5 // a[1]*a[1] - adcs x20,x20,x10 - umulh x5,x5,x5 - adc x1,x1,xzr // can't overflow - - adds x15,x15,x15 // acc[1-6]*=2 - mul x10,x6,x6 // a[2]*a[2] - adcs x16,x16,x16 - umulh x6,x6,x6 - adcs x17,x17,x17 - mul x11,x7,x7 // a[3]*a[3] - adcs x19,x19,x19 - umulh x7,x7,x7 - adcs x20,x20,x20 - adcs x1,x1,x1 - adc x2,xzr,xzr - - adds x15,x15,x4 // +a[i]*a[i] - adcs x16,x16,x9 - adcs x17,x17,x5 - adcs x19,x19,x10 - adcs x20,x20,x6 - lsl x8,x14,#32 - adcs x1,x1,x11 - lsr x9,x14,#32 - adc x2,x2,x7 - subs x10,x14,x8 // "*0xffff0001" - sbc x11,x14,x9 - adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] - adcs x15,x16,x9 - lsl x8,x14,#32 - adcs x16,x17,x10 // +=acc[0]*0xffff0001 - lsr x9,x14,#32 - adc x17,x11,xzr // can't overflow - subs x10,x14,x8 // "*0xffff0001" - sbc x11,x14,x9 - adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] - adcs x15,x16,x9 - lsl x8,x14,#32 - adcs x16,x17,x10 // +=acc[0]*0xffff0001 - lsr x9,x14,#32 - adc x17,x11,xzr // can't overflow - subs x10,x14,x8 // "*0xffff0001" - sbc x11,x14,x9 - adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] - adcs x15,x16,x9 - lsl x8,x14,#32 - adcs x16,x17,x10 // +=acc[0]*0xffff0001 - lsr x9,x14,#32 - adc x17,x11,xzr // can't overflow - subs x10,x14,x8 // "*0xffff0001" - sbc x11,x14,x9 - adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] - adcs x15,x16,x9 - adcs x16,x17,x10 // +=acc[0]*0xffff0001 - adc x17,x11,xzr // can't overflow - - adds x14,x14,x19 // accumulate upper half - adcs x15,x15,x20 - adcs x16,x16,x1 - adcs x17,x17,x2 - adc x19,xzr,xzr - - adds x8,x14,#1 // subs x8,x14,#-1 // tmp = ret-modulus - sbcs x9,x15,x12 - sbcs x10,x16,xzr - sbcs x11,x17,x13 - sbcs xzr,x19,xzr // did it borrow? - - csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus - csel x15,x15,x9,lo - csel x16,x16,x10,lo - stp x14,x15,[x0] - csel x17,x17,x11,lo - stp x16,x17,[x0,#16] - - ret -.size __ecp_nistz256_sqr_mont,.-__ecp_nistz256_sqr_mont - -// Note that __ecp_nistz256_add expects both input vectors pre-loaded to -// x4-x7 and x8-x11. This is done because it's used in multiple -// contexts, e.g. in multiplication by 2 and 3... -.type __ecp_nistz256_add,%function -.align 4 -__ecp_nistz256_add: - adds x14,x14,x8 // ret = a+b - adcs x15,x15,x9 - adcs x16,x16,x10 - adcs x17,x17,x11 - adc x1,xzr,xzr // zap x1 - - adds x8,x14,#1 // subs x8,x4,#-1 // tmp = ret-modulus - sbcs x9,x15,x12 - sbcs x10,x16,xzr - sbcs x11,x17,x13 - sbcs xzr,x1,xzr // did subtraction borrow? - - csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus - csel x15,x15,x9,lo - csel x16,x16,x10,lo - stp x14,x15,[x0] - csel x17,x17,x11,lo - stp x16,x17,[x0,#16] - - ret -.size __ecp_nistz256_add,.-__ecp_nistz256_add - -.type __ecp_nistz256_sub_from,%function -.align 4 -__ecp_nistz256_sub_from: - ldp x8,x9,[x2] - ldp x10,x11,[x2,#16] - subs x14,x14,x8 // ret = a-b - sbcs x15,x15,x9 - sbcs x16,x16,x10 - sbcs x17,x17,x11 - sbc x1,xzr,xzr // zap x1 - - subs x8,x14,#1 // adds x8,x4,#-1 // tmp = ret+modulus - adcs x9,x15,x12 - adcs x10,x16,xzr - adc x11,x17,x13 - cmp x1,xzr // did subtraction borrow? - - csel x14,x14,x8,eq // ret = borrow ? ret+modulus : ret - csel x15,x15,x9,eq - csel x16,x16,x10,eq - stp x14,x15,[x0] - csel x17,x17,x11,eq - stp x16,x17,[x0,#16] - - ret -.size __ecp_nistz256_sub_from,.-__ecp_nistz256_sub_from - -.type __ecp_nistz256_sub_morf,%function -.align 4 -__ecp_nistz256_sub_morf: - ldp x8,x9,[x2] - ldp x10,x11,[x2,#16] - subs x14,x8,x14 // ret = b-a - sbcs x15,x9,x15 - sbcs x16,x10,x16 - sbcs x17,x11,x17 - sbc x1,xzr,xzr // zap x1 - - subs x8,x14,#1 // adds x8,x4,#-1 // tmp = ret+modulus - adcs x9,x15,x12 - adcs x10,x16,xzr - adc x11,x17,x13 - cmp x1,xzr // did subtraction borrow? - - csel x14,x14,x8,eq // ret = borrow ? ret+modulus : ret - csel x15,x15,x9,eq - csel x16,x16,x10,eq - stp x14,x15,[x0] - csel x17,x17,x11,eq - stp x16,x17,[x0,#16] - - ret -.size __ecp_nistz256_sub_morf,.-__ecp_nistz256_sub_morf - -.type __ecp_nistz256_div_by_2,%function -.align 4 -__ecp_nistz256_div_by_2: - subs x8,x14,#1 // adds x8,x4,#-1 // tmp = a+modulus - adcs x9,x15,x12 - adcs x10,x16,xzr - adcs x11,x17,x13 - adc x1,xzr,xzr // zap x1 - tst x14,#1 // is a even? - - csel x14,x14,x8,eq // ret = even ? a : a+modulus - csel x15,x15,x9,eq - csel x16,x16,x10,eq - csel x17,x17,x11,eq - csel x1,xzr,x1,eq - - lsr x14,x14,#1 // ret >>= 1 - orr x14,x14,x15,lsl#63 - lsr x15,x15,#1 - orr x15,x15,x16,lsl#63 - lsr x16,x16,#1 - orr x16,x16,x17,lsl#63 - lsr x17,x17,#1 - stp x14,x15,[x0] - orr x17,x17,x1,lsl#63 - stp x16,x17,[x0,#16] - - ret -.size __ecp_nistz256_div_by_2,.-__ecp_nistz256_div_by_2 -.globl GFp_nistz256_point_double -.hidden GFp_nistz256_point_double -.type GFp_nistz256_point_double,%function -.align 5 -GFp_nistz256_point_double: - stp x29,x30,[sp,#-80]! - add x29,sp,#0 - stp x19,x20,[sp,#16] - stp x21,x22,[sp,#32] - sub sp,sp,#32*4 - -.Ldouble_shortcut: - ldp x14,x15,[x1,#32] - mov x21,x0 - ldp x16,x17,[x1,#48] - mov x22,x1 - ldr x12,.Lpoly+8 - mov x8,x14 - ldr x13,.Lpoly+24 - mov x9,x15 - ldp x4,x5,[x22,#64] // forward load for p256_sqr_mont - mov x10,x16 - mov x11,x17 - ldp x6,x7,[x22,#64+16] - add x0,sp,#0 - bl __ecp_nistz256_add // p256_mul_by_2(S, in_y); - - add x0,sp,#64 - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Zsqr, in_z); - - ldp x8,x9,[x22] - ldp x10,x11,[x22,#16] - mov x4,x14 // put Zsqr aside for p256_sub - mov x5,x15 - mov x6,x16 - mov x7,x17 - add x0,sp,#32 - bl __ecp_nistz256_add // p256_add(M, Zsqr, in_x); - - add x2,x22,#0 - mov x14,x4 // restore Zsqr - mov x15,x5 - ldp x4,x5,[sp,#0] // forward load for p256_sqr_mont - mov x16,x6 - mov x17,x7 - ldp x6,x7,[sp,#0+16] - add x0,sp,#64 - bl __ecp_nistz256_sub_morf // p256_sub(Zsqr, in_x, Zsqr); - - add x0,sp,#0 - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(S, S); - - ldr x3,[x22,#32] - ldp x4,x5,[x22,#64] - ldp x6,x7,[x22,#64+16] - add x2,x22,#32 - add x0,sp,#96 - bl __ecp_nistz256_mul_mont // p256_mul_mont(tmp0, in_z, in_y); - - mov x8,x14 - mov x9,x15 - ldp x4,x5,[sp,#0] // forward load for p256_sqr_mont - mov x10,x16 - mov x11,x17 - ldp x6,x7,[sp,#0+16] - add x0,x21,#64 - bl __ecp_nistz256_add // p256_mul_by_2(res_z, tmp0); - - add x0,sp,#96 - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(tmp0, S); - - ldr x3,[sp,#64] // forward load for p256_mul_mont - ldp x4,x5,[sp,#32] - ldp x6,x7,[sp,#32+16] - add x0,x21,#32 - bl __ecp_nistz256_div_by_2 // p256_div_by_2(res_y, tmp0); - - add x2,sp,#64 - add x0,sp,#32 - bl __ecp_nistz256_mul_mont // p256_mul_mont(M, M, Zsqr); - - mov x8,x14 // duplicate M - mov x9,x15 - mov x10,x16 - mov x11,x17 - mov x4,x14 // put M aside - mov x5,x15 - mov x6,x16 - mov x7,x17 - add x0,sp,#32 - bl __ecp_nistz256_add - mov x8,x4 // restore M - mov x9,x5 - ldr x3,[x22] // forward load for p256_mul_mont - mov x10,x6 - ldp x4,x5,[sp,#0] - mov x11,x7 - ldp x6,x7,[sp,#0+16] - bl __ecp_nistz256_add // p256_mul_by_3(M, M); - - add x2,x22,#0 - add x0,sp,#0 - bl __ecp_nistz256_mul_mont // p256_mul_mont(S, S, in_x); - - mov x8,x14 - mov x9,x15 - ldp x4,x5,[sp,#32] // forward load for p256_sqr_mont - mov x10,x16 - mov x11,x17 - ldp x6,x7,[sp,#32+16] - add x0,sp,#96 - bl __ecp_nistz256_add // p256_mul_by_2(tmp0, S); - - add x0,x21,#0 - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(res_x, M); - - add x2,sp,#96 - bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, tmp0); - - add x2,sp,#0 - add x0,sp,#0 - bl __ecp_nistz256_sub_morf // p256_sub(S, S, res_x); - - ldr x3,[sp,#32] - mov x4,x14 // copy S - mov x5,x15 - mov x6,x16 - mov x7,x17 - add x2,sp,#32 - bl __ecp_nistz256_mul_mont // p256_mul_mont(S, S, M); - - add x2,x21,#32 - add x0,x21,#32 - bl __ecp_nistz256_sub_from // p256_sub(res_y, S, res_y); - - add sp,x29,#0 // destroy frame - ldp x19,x20,[x29,#16] - ldp x21,x22,[x29,#32] - ldp x29,x30,[sp],#80 - ret -.size GFp_nistz256_point_double,.-GFp_nistz256_point_double -.globl GFp_nistz256_point_add_affine -.hidden GFp_nistz256_point_add_affine -.type GFp_nistz256_point_add_affine,%function -.align 5 -GFp_nistz256_point_add_affine: - stp x29,x30,[sp,#-80]! - add x29,sp,#0 - stp x19,x20,[sp,#16] - stp x21,x22,[sp,#32] - stp x23,x24,[sp,#48] - stp x25,x26,[sp,#64] - sub sp,sp,#32*10 - - mov x21,x0 - mov x22,x1 - mov x23,x2 - ldr x12,.Lpoly+8 - ldr x13,.Lpoly+24 - - ldp x4,x5,[x1,#64] // in1_z - ldp x6,x7,[x1,#64+16] - orr x8,x4,x5 - orr x10,x6,x7 - orr x24,x8,x10 - cmp x24,#0 - csetm x24,ne // !in1infty - - ldp x14,x15,[x2] // in2_x - ldp x16,x17,[x2,#16] - ldp x8,x9,[x2,#32] // in2_y - ldp x10,x11,[x2,#48] - orr x14,x14,x15 - orr x16,x16,x17 - orr x8,x8,x9 - orr x10,x10,x11 - orr x14,x14,x16 - orr x8,x8,x10 - orr x25,x14,x8 - cmp x25,#0 - csetm x25,ne // !in2infty - - add x0,sp,#128 - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); - - mov x4,x14 - mov x5,x15 - mov x6,x16 - mov x7,x17 - ldr x3,[x23] - add x2,x23,#0 - add x0,sp,#96 - bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, Z1sqr, in2_x); - - add x2,x22,#0 - ldr x3,[x22,#64] // forward load for p256_mul_mont - ldp x4,x5,[sp,#128] - ldp x6,x7,[sp,#128+16] - add x0,sp,#160 - bl __ecp_nistz256_sub_from // p256_sub(H, U2, in1_x); - - add x2,x22,#64 - add x0,sp,#128 - bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, Z1sqr, in1_z); - - ldr x3,[x22,#64] - ldp x4,x5,[sp,#160] - ldp x6,x7,[sp,#160+16] - add x2,x22,#64 - add x0,sp,#64 - bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, H, in1_z); - - ldr x3,[x23,#32] - ldp x4,x5,[sp,#128] - ldp x6,x7,[sp,#128+16] - add x2,x23,#32 - add x0,sp,#128 - bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S2, in2_y); - - add x2,x22,#32 - ldp x4,x5,[sp,#160] // forward load for p256_sqr_mont - ldp x6,x7,[sp,#160+16] - add x0,sp,#192 - bl __ecp_nistz256_sub_from // p256_sub(R, S2, in1_y); - - add x0,sp,#224 - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Hsqr, H); - - ldp x4,x5,[sp,#192] - ldp x6,x7,[sp,#192+16] - add x0,sp,#288 - bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Rsqr, R); - - ldr x3,[sp,#160] - ldp x4,x5,[sp,#224] - ldp x6,x7,[sp,#224+16] - add x2,sp,#160 - add x0,sp,#256 - bl __ecp_nistz256_mul_mont // p256_mul_mont(Hcub, Hsqr, H); - - ldr x3,[x22] - ldp x4,x5,[sp,#224] - ldp x6,x7,[sp,#224+16] - add x2,x22,#0 - add x0,sp,#96 - bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, in1_x, Hsqr); - - mov x8,x14 - mov x9,x15 - mov x10,x16 - mov x11,x17 - add x0,sp,#224 - bl __ecp_nistz256_add // p256_mul_by_2(Hsqr, U2); - - add x2,sp,#288 - add x0,sp,#0 - bl __ecp_nistz256_sub_morf // p256_sub(res_x, Rsqr, Hsqr); - - add x2,sp,#256 - bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, Hcub); - - add x2,sp,#96 - ldr x3,[x22,#32] // forward load for p256_mul_mont - ldp x4,x5,[sp,#256] - ldp x6,x7,[sp,#256+16] - add x0,sp,#32 - bl __ecp_nistz256_sub_morf // p256_sub(res_y, U2, res_x); - - add x2,x22,#32 - add x0,sp,#128 - bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, in1_y, Hcub); - - ldr x3,[sp,#192] - ldp x4,x5,[sp,#32] - ldp x6,x7,[sp,#32+16] - add x2,sp,#192 - add x0,sp,#32 - bl __ecp_nistz256_mul_mont // p256_mul_mont(res_y, res_y, R); - - add x2,sp,#128 - bl __ecp_nistz256_sub_from // p256_sub(res_y, res_y, S2); - - ldp x4,x5,[sp,#0] // res - ldp x6,x7,[sp,#0+16] - ldp x8,x9,[x23] // in2 - ldp x10,x11,[x23,#16] - ldp x14,x15,[x22,#0] // in1 - cmp x24,#0 // !, remember? - ldp x16,x17,[x22,#0+16] - csel x8,x4,x8,ne - csel x9,x5,x9,ne - ldp x4,x5,[sp,#0+0+32] // res - csel x10,x6,x10,ne - csel x11,x7,x11,ne - cmp x25,#0 // !, remember? - ldp x6,x7,[sp,#0+0+48] - csel x14,x8,x14,ne - csel x15,x9,x15,ne - ldp x8,x9,[x23,#0+32] // in2 - csel x16,x10,x16,ne - csel x17,x11,x17,ne - ldp x10,x11,[x23,#0+48] - stp x14,x15,[x21,#0] - stp x16,x17,[x21,#0+16] - adr x23,.Lone_mont-64 - ldp x14,x15,[x22,#32] // in1 - cmp x24,#0 // !, remember? - ldp x16,x17,[x22,#32+16] - csel x8,x4,x8,ne - csel x9,x5,x9,ne - ldp x4,x5,[sp,#0+32+32] // res - csel x10,x6,x10,ne - csel x11,x7,x11,ne - cmp x25,#0 // !, remember? - ldp x6,x7,[sp,#0+32+48] - csel x14,x8,x14,ne - csel x15,x9,x15,ne - ldp x8,x9,[x23,#32+32] // in2 - csel x16,x10,x16,ne - csel x17,x11,x17,ne - ldp x10,x11,[x23,#32+48] - stp x14,x15,[x21,#32] - stp x16,x17,[x21,#32+16] - ldp x14,x15,[x22,#64] // in1 - cmp x24,#0 // !, remember? - ldp x16,x17,[x22,#64+16] - csel x8,x4,x8,ne - csel x9,x5,x9,ne - csel x10,x6,x10,ne - csel x11,x7,x11,ne - cmp x25,#0 // !, remember? - csel x14,x8,x14,ne - csel x15,x9,x15,ne - csel x16,x10,x16,ne - csel x17,x11,x17,ne - stp x14,x15,[x21,#64] - stp x16,x17,[x21,#64+16] - - add sp,x29,#0 // destroy frame - ldp x19,x20,[x29,#16] - ldp x21,x22,[x29,#32] - ldp x23,x24,[x29,#48] - ldp x25,x26,[x29,#64] - ldp x29,x30,[sp],#80 - ret -.size GFp_nistz256_point_add_affine,.-GFp_nistz256_point_add_affine -#endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-x86-elf.S temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-x86-elf.S --- temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-x86-elf.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-x86-elf.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,1128 +0,0 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. - -#if defined(__i386__) -#if defined(BORINGSSL_PREFIX) -#include -#endif -.text -.LONE_mont: -.long 1,0,0,-1,-1,-1,-2,0 -.hidden _ecp_nistz256_div_by_2 -.type _ecp_nistz256_div_by_2,@function -.align 16 -_ecp_nistz256_div_by_2: - movl (%esi),%ebp - xorl %edx,%edx - movl 4(%esi),%ebx - movl %ebp,%eax - andl $1,%ebp - movl 8(%esi),%ecx - subl %ebp,%edx - addl %edx,%eax - adcl %edx,%ebx - movl %eax,(%edi) - adcl %edx,%ecx - movl %ebx,4(%edi) - movl %ecx,8(%edi) - movl 12(%esi),%eax - movl 16(%esi),%ebx - adcl $0,%eax - movl 20(%esi),%ecx - adcl $0,%ebx - movl %eax,12(%edi) - adcl $0,%ecx - movl %ebx,16(%edi) - movl %ecx,20(%edi) - movl 24(%esi),%eax - movl 28(%esi),%ebx - adcl %ebp,%eax - adcl %edx,%ebx - movl %eax,24(%edi) - sbbl %esi,%esi - movl %ebx,28(%edi) - movl (%edi),%eax - movl 4(%edi),%ebx - movl 8(%edi),%ecx - movl 12(%edi),%edx - shrl $1,%eax - movl %ebx,%ebp - shll $31,%ebx - orl %ebx,%eax - shrl $1,%ebp - movl %ecx,%ebx - shll $31,%ecx - movl %eax,(%edi) - orl %ecx,%ebp - movl 16(%edi),%eax - shrl $1,%ebx - movl %edx,%ecx - shll $31,%edx - movl %ebp,4(%edi) - orl %edx,%ebx - movl 20(%edi),%ebp - shrl $1,%ecx - movl %eax,%edx - shll $31,%eax - movl %ebx,8(%edi) - orl %eax,%ecx - movl 24(%edi),%ebx - shrl $1,%edx - movl %ebp,%eax - shll $31,%ebp - movl %ecx,12(%edi) - orl %ebp,%edx - movl 28(%edi),%ecx - shrl $1,%eax - movl %ebx,%ebp - shll $31,%ebx - movl %edx,16(%edi) - orl %ebx,%eax - shrl $1,%ebp - movl %ecx,%ebx - shll $31,%ecx - movl %eax,20(%edi) - orl %ecx,%ebp - shrl $1,%ebx - shll $31,%esi - movl %ebp,24(%edi) - orl %esi,%ebx - movl %ebx,28(%edi) - ret -.size _ecp_nistz256_div_by_2,.-_ecp_nistz256_div_by_2 -.globl GFp_nistz256_add -.hidden GFp_nistz256_add -.type GFp_nistz256_add,@function -.align 16 -GFp_nistz256_add: -.L_GFp_nistz256_add_begin: - pushl %ebp - pushl %ebx - pushl %esi - pushl %edi - movl 24(%esp),%esi - movl 28(%esp),%ebp - movl 20(%esp),%edi - call _ecp_nistz256_add - popl %edi - popl %esi - popl %ebx - popl %ebp - ret -.size GFp_nistz256_add,.-.L_GFp_nistz256_add_begin -.hidden _ecp_nistz256_add -.type _ecp_nistz256_add,@function -.align 16 -_ecp_nistz256_add: - movl (%esi),%eax - movl 4(%esi),%ebx - movl 8(%esi),%ecx - addl (%ebp),%eax - movl 12(%esi),%edx - adcl 4(%ebp),%ebx - movl %eax,(%edi) - adcl 8(%ebp),%ecx - movl %ebx,4(%edi) - adcl 12(%ebp),%edx - movl %ecx,8(%edi) - movl %edx,12(%edi) - movl 16(%esi),%eax - movl 20(%esi),%ebx - movl 24(%esi),%ecx - adcl 16(%ebp),%eax - movl 28(%esi),%edx - adcl 20(%ebp),%ebx - movl %eax,16(%edi) - adcl 24(%ebp),%ecx - movl %ebx,20(%edi) - movl $0,%esi - adcl 28(%ebp),%edx - movl %ecx,24(%edi) - adcl $0,%esi - movl %edx,28(%edi) - movl (%edi),%eax - movl 4(%edi),%ebx - movl 8(%edi),%ecx - subl $-1,%eax - movl 12(%edi),%edx - sbbl $-1,%ebx - movl 16(%edi),%eax - sbbl $-1,%ecx - movl 20(%edi),%ebx - sbbl $0,%edx - movl 24(%edi),%ecx - sbbl $0,%eax - movl 28(%edi),%edx - sbbl $0,%ebx - sbbl $1,%ecx - sbbl $-1,%edx - sbbl $0,%esi - notl %esi - movl (%edi),%eax - movl %esi,%ebp - movl 4(%edi),%ebx - shrl $31,%ebp - movl 8(%edi),%ecx - subl %esi,%eax - movl 12(%edi),%edx - sbbl %esi,%ebx - movl %eax,(%edi) - sbbl %esi,%ecx - movl %ebx,4(%edi) - sbbl $0,%edx - movl %ecx,8(%edi) - movl %edx,12(%edi) - movl 16(%edi),%eax - movl 20(%edi),%ebx - movl 24(%edi),%ecx - sbbl $0,%eax - movl 28(%edi),%edx - sbbl $0,%ebx - movl %eax,16(%edi) - sbbl %ebp,%ecx - movl %ebx,20(%edi) - sbbl %esi,%edx - movl %ecx,24(%edi) - movl %edx,28(%edi) - ret -.size _ecp_nistz256_add,.-_ecp_nistz256_add -.hidden _ecp_nistz256_sub -.type _ecp_nistz256_sub,@function -.align 16 -_ecp_nistz256_sub: - movl (%esi),%eax - movl 4(%esi),%ebx - movl 8(%esi),%ecx - subl (%ebp),%eax - movl 12(%esi),%edx - sbbl 4(%ebp),%ebx - movl %eax,(%edi) - sbbl 8(%ebp),%ecx - movl %ebx,4(%edi) - sbbl 12(%ebp),%edx - movl %ecx,8(%edi) - movl %edx,12(%edi) - movl 16(%esi),%eax - movl 20(%esi),%ebx - movl 24(%esi),%ecx - sbbl 16(%ebp),%eax - movl 28(%esi),%edx - sbbl 20(%ebp),%ebx - sbbl 24(%ebp),%ecx - movl %eax,16(%edi) - sbbl 28(%ebp),%edx - movl %ebx,20(%edi) - sbbl %esi,%esi - movl %ecx,24(%edi) - movl %edx,28(%edi) - movl (%edi),%eax - movl %esi,%ebp - movl 4(%edi),%ebx - shrl $31,%ebp - movl 8(%edi),%ecx - addl %esi,%eax - movl 12(%edi),%edx - adcl %esi,%ebx - movl %eax,(%edi) - adcl %esi,%ecx - movl %ebx,4(%edi) - adcl $0,%edx - movl %ecx,8(%edi) - movl %edx,12(%edi) - movl 16(%edi),%eax - movl 20(%edi),%ebx - movl 24(%edi),%ecx - adcl $0,%eax - movl 28(%edi),%edx - adcl $0,%ebx - movl %eax,16(%edi) - adcl %ebp,%ecx - movl %ebx,20(%edi) - adcl %esi,%edx - movl %ecx,24(%edi) - movl %edx,28(%edi) - ret -.size _ecp_nistz256_sub,.-_ecp_nistz256_sub -.globl GFp_nistz256_neg -.hidden GFp_nistz256_neg -.type GFp_nistz256_neg,@function -.align 16 -GFp_nistz256_neg: -.L_GFp_nistz256_neg_begin: - pushl %ebp - pushl %ebx - pushl %esi - pushl %edi - movl 24(%esp),%ebp - movl 20(%esp),%edi - xorl %eax,%eax - subl $32,%esp - movl %eax,(%esp) - movl %esp,%esi - movl %eax,4(%esp) - movl %eax,8(%esp) - movl %eax,12(%esp) - movl %eax,16(%esp) - movl %eax,20(%esp) - movl %eax,24(%esp) - movl %eax,28(%esp) - call _ecp_nistz256_sub - addl $32,%esp - popl %edi - popl %esi - popl %ebx - popl %ebp - ret -.size GFp_nistz256_neg,.-.L_GFp_nistz256_neg_begin -.hidden _picup_eax -.type _picup_eax,@function -.align 16 -_picup_eax: - movl (%esp),%eax - ret -.size _picup_eax,.-_picup_eax -.globl GFp_nistz256_mul_mont -.hidden GFp_nistz256_mul_mont -.type GFp_nistz256_mul_mont,@function -.align 16 -GFp_nistz256_mul_mont: -.L_GFp_nistz256_mul_mont_begin: - pushl %ebp - pushl %ebx - pushl %esi - pushl %edi - movl 24(%esp),%esi - movl 28(%esp),%ebp - call _picup_eax -.L000pic: - leal GFp_ia32cap_P-.L000pic(%eax),%eax - movl (%eax),%eax - movl 20(%esp),%edi - call _ecp_nistz256_mul_mont - popl %edi - popl %esi - popl %ebx - popl %ebp - ret -.size GFp_nistz256_mul_mont,.-.L_GFp_nistz256_mul_mont_begin -.hidden _ecp_nistz256_mul_mont -.type _ecp_nistz256_mul_mont,@function -.align 16 -_ecp_nistz256_mul_mont: - movl %esp,%edx - subl $256,%esp - movd (%ebp),%xmm7 - leal 4(%ebp),%ebp - pcmpeqd %xmm6,%xmm6 - psrlq $48,%xmm6 - pshuflw $220,%xmm7,%xmm7 - andl $-64,%esp - pshufd $220,%xmm7,%xmm7 - leal 128(%esp),%ebx - movd (%esi),%xmm0 - pshufd $204,%xmm0,%xmm0 - movd 4(%esi),%xmm1 - movdqa %xmm0,(%ebx) - pmuludq %xmm7,%xmm0 - movd 8(%esi),%xmm2 - pshufd $204,%xmm1,%xmm1 - movdqa %xmm1,16(%ebx) - pmuludq %xmm7,%xmm1 - movq %xmm0,%xmm4 - pslldq $6,%xmm4 - paddq %xmm0,%xmm4 - movdqa %xmm4,%xmm5 - psrldq $10,%xmm4 - pand %xmm6,%xmm5 - movd 12(%esi),%xmm3 - pshufd $204,%xmm2,%xmm2 - movdqa %xmm2,32(%ebx) - pmuludq %xmm7,%xmm2 - paddq %xmm4,%xmm1 - movdqa %xmm1,(%esp) - movd 16(%esi),%xmm0 - pshufd $204,%xmm3,%xmm3 - movdqa %xmm3,48(%ebx) - pmuludq %xmm7,%xmm3 - movdqa %xmm2,16(%esp) - movd 20(%esi),%xmm1 - pshufd $204,%xmm0,%xmm0 - movdqa %xmm0,64(%ebx) - pmuludq %xmm7,%xmm0 - paddq %xmm5,%xmm3 - movdqa %xmm3,32(%esp) - movd 24(%esi),%xmm2 - pshufd $204,%xmm1,%xmm1 - movdqa %xmm1,80(%ebx) - pmuludq %xmm7,%xmm1 - movdqa %xmm0,48(%esp) - pshufd $177,%xmm5,%xmm4 - movd 28(%esi),%xmm3 - pshufd $204,%xmm2,%xmm2 - movdqa %xmm2,96(%ebx) - pmuludq %xmm7,%xmm2 - movdqa %xmm1,64(%esp) - psubq %xmm5,%xmm4 - movd (%ebp),%xmm0 - pshufd $204,%xmm3,%xmm3 - movdqa %xmm3,112(%ebx) - pmuludq %xmm7,%xmm3 - pshuflw $220,%xmm0,%xmm7 - movdqa (%ebx),%xmm0 - pshufd $220,%xmm7,%xmm7 - movl $6,%ecx - leal 4(%ebp),%ebp - jmp .L001madd_sse2 -.align 16 -.L001madd_sse2: - paddq %xmm5,%xmm2 - paddq %xmm4,%xmm3 - movdqa 16(%ebx),%xmm1 - pmuludq %xmm7,%xmm0 - movdqa %xmm2,80(%esp) - movdqa 32(%ebx),%xmm2 - pmuludq %xmm7,%xmm1 - movdqa %xmm3,96(%esp) - paddq (%esp),%xmm0 - movdqa 48(%ebx),%xmm3 - pmuludq %xmm7,%xmm2 - movq %xmm0,%xmm4 - pslldq $6,%xmm4 - paddq 16(%esp),%xmm1 - paddq %xmm0,%xmm4 - movdqa %xmm4,%xmm5 - psrldq $10,%xmm4 - movdqa 64(%ebx),%xmm0 - pmuludq %xmm7,%xmm3 - paddq %xmm4,%xmm1 - paddq 32(%esp),%xmm2 - movdqa %xmm1,(%esp) - movdqa 80(%ebx),%xmm1 - pmuludq %xmm7,%xmm0 - paddq 48(%esp),%xmm3 - movdqa %xmm2,16(%esp) - pand %xmm6,%xmm5 - movdqa 96(%ebx),%xmm2 - pmuludq %xmm7,%xmm1 - paddq %xmm5,%xmm3 - paddq 64(%esp),%xmm0 - movdqa %xmm3,32(%esp) - pshufd $177,%xmm5,%xmm4 - movdqa %xmm7,%xmm3 - pmuludq %xmm7,%xmm2 - movd (%ebp),%xmm7 - leal 4(%ebp),%ebp - paddq 80(%esp),%xmm1 - psubq %xmm5,%xmm4 - movdqa %xmm0,48(%esp) - pshuflw $220,%xmm7,%xmm7 - pmuludq 112(%ebx),%xmm3 - pshufd $220,%xmm7,%xmm7 - movdqa (%ebx),%xmm0 - movdqa %xmm1,64(%esp) - paddq 96(%esp),%xmm2 - decl %ecx - jnz .L001madd_sse2 - paddq %xmm5,%xmm2 - paddq %xmm4,%xmm3 - movdqa 16(%ebx),%xmm1 - pmuludq %xmm7,%xmm0 - movdqa %xmm2,80(%esp) - movdqa 32(%ebx),%xmm2 - pmuludq %xmm7,%xmm1 - movdqa %xmm3,96(%esp) - paddq (%esp),%xmm0 - movdqa 48(%ebx),%xmm3 - pmuludq %xmm7,%xmm2 - movq %xmm0,%xmm4 - pslldq $6,%xmm4 - paddq 16(%esp),%xmm1 - paddq %xmm0,%xmm4 - movdqa %xmm4,%xmm5 - psrldq $10,%xmm4 - movdqa 64(%ebx),%xmm0 - pmuludq %xmm7,%xmm3 - paddq %xmm4,%xmm1 - paddq 32(%esp),%xmm2 - movdqa %xmm1,(%esp) - movdqa 80(%ebx),%xmm1 - pmuludq %xmm7,%xmm0 - paddq 48(%esp),%xmm3 - movdqa %xmm2,16(%esp) - pand %xmm6,%xmm5 - movdqa 96(%ebx),%xmm2 - pmuludq %xmm7,%xmm1 - paddq %xmm5,%xmm3 - paddq 64(%esp),%xmm0 - movdqa %xmm3,32(%esp) - pshufd $177,%xmm5,%xmm4 - movdqa 112(%ebx),%xmm3 - pmuludq %xmm7,%xmm2 - paddq 80(%esp),%xmm1 - psubq %xmm5,%xmm4 - movdqa %xmm0,48(%esp) - pmuludq %xmm7,%xmm3 - pcmpeqd %xmm7,%xmm7 - movdqa (%esp),%xmm0 - pslldq $8,%xmm7 - movdqa %xmm1,64(%esp) - paddq 96(%esp),%xmm2 - paddq %xmm5,%xmm2 - paddq %xmm4,%xmm3 - movdqa %xmm2,80(%esp) - movdqa %xmm3,96(%esp) - movdqa 16(%esp),%xmm1 - movdqa 32(%esp),%xmm2 - movdqa 48(%esp),%xmm3 - movq %xmm0,%xmm4 - pand %xmm7,%xmm0 - xorl %ebp,%ebp - pslldq $6,%xmm4 - movq %xmm1,%xmm5 - paddq %xmm4,%xmm0 - pand %xmm7,%xmm1 - psrldq $6,%xmm0 - movd %xmm0,%eax - psrldq $4,%xmm0 - paddq %xmm0,%xmm5 - movdqa 64(%esp),%xmm0 - subl $-1,%eax - pslldq $6,%xmm5 - movq %xmm2,%xmm4 - paddq %xmm5,%xmm1 - pand %xmm7,%xmm2 - psrldq $6,%xmm1 - movl %eax,(%edi) - movd %xmm1,%eax - psrldq $4,%xmm1 - paddq %xmm1,%xmm4 - movdqa 80(%esp),%xmm1 - sbbl $-1,%eax - pslldq $6,%xmm4 - movq %xmm3,%xmm5 - paddq %xmm4,%xmm2 - pand %xmm7,%xmm3 - psrldq $6,%xmm2 - movl %eax,4(%edi) - movd %xmm2,%eax - psrldq $4,%xmm2 - paddq %xmm2,%xmm5 - movdqa 96(%esp),%xmm2 - sbbl $-1,%eax - pslldq $6,%xmm5 - movq %xmm0,%xmm4 - paddq %xmm5,%xmm3 - pand %xmm7,%xmm0 - psrldq $6,%xmm3 - movl %eax,8(%edi) - movd %xmm3,%eax - psrldq $4,%xmm3 - paddq %xmm3,%xmm4 - sbbl $0,%eax - pslldq $6,%xmm4 - movq %xmm1,%xmm5 - paddq %xmm4,%xmm0 - pand %xmm7,%xmm1 - psrldq $6,%xmm0 - movl %eax,12(%edi) - movd %xmm0,%eax - psrldq $4,%xmm0 - paddq %xmm0,%xmm5 - sbbl $0,%eax - pslldq $6,%xmm5 - movq %xmm2,%xmm4 - paddq %xmm5,%xmm1 - pand %xmm7,%xmm2 - psrldq $6,%xmm1 - movd %xmm1,%ebx - psrldq $4,%xmm1 - movl %edx,%esp - paddq %xmm1,%xmm4 - pslldq $6,%xmm4 - paddq %xmm4,%xmm2 - psrldq $6,%xmm2 - movd %xmm2,%ecx - psrldq $4,%xmm2 - sbbl $0,%ebx - movd %xmm2,%edx - pextrw $2,%xmm2,%esi - sbbl $1,%ecx - sbbl $-1,%edx - sbbl $0,%esi - subl %esi,%ebp - addl %esi,(%edi) - adcl %esi,4(%edi) - adcl %esi,8(%edi) - adcl $0,12(%edi) - adcl $0,%eax - adcl $0,%ebx - movl %eax,16(%edi) - adcl %ebp,%ecx - movl %ebx,20(%edi) - adcl %esi,%edx - movl %ecx,24(%edi) - movl %edx,28(%edi) - ret -.size _ecp_nistz256_mul_mont,.-_ecp_nistz256_mul_mont -.globl GFp_nistz256_point_double -.hidden GFp_nistz256_point_double -.type GFp_nistz256_point_double,@function -.align 16 -GFp_nistz256_point_double: -.L_GFp_nistz256_point_double_begin: - pushl %ebp - pushl %ebx - pushl %esi - pushl %edi - movl 24(%esp),%esi - subl $164,%esp - call _picup_eax -.L002pic: - leal GFp_ia32cap_P-.L002pic(%eax),%edx - movl (%edx),%ebp -.Lpoint_double_shortcut: - movl (%esi),%eax - movl 4(%esi),%ebx - movl 8(%esi),%ecx - movl 12(%esi),%edx - movl %eax,96(%esp) - movl %ebx,100(%esp) - movl %ecx,104(%esp) - movl %edx,108(%esp) - movl 16(%esi),%eax - movl 20(%esi),%ebx - movl 24(%esi),%ecx - movl 28(%esi),%edx - movl %eax,112(%esp) - movl %ebx,116(%esp) - movl %ecx,120(%esp) - movl %edx,124(%esp) - movl %ebp,160(%esp) - leal 32(%esi),%ebp - leal 32(%esi),%esi - leal (%esp),%edi - call _ecp_nistz256_add - movl 160(%esp),%eax - movl $64,%esi - addl 188(%esp),%esi - leal 64(%esp),%edi - movl %esi,%ebp - call _ecp_nistz256_mul_mont - movl 160(%esp),%eax - leal (%esp),%esi - leal (%esp),%ebp - leal (%esp),%edi - call _ecp_nistz256_mul_mont - movl 160(%esp),%eax - movl 188(%esp),%ebp - leal 32(%ebp),%esi - leal 64(%ebp),%ebp - leal 128(%esp),%edi - call _ecp_nistz256_mul_mont - leal 96(%esp),%esi - leal 64(%esp),%ebp - leal 32(%esp),%edi - call _ecp_nistz256_add - movl $64,%edi - leal 128(%esp),%esi - leal 128(%esp),%ebp - addl 184(%esp),%edi - call _ecp_nistz256_add - leal 96(%esp),%esi - leal 64(%esp),%ebp - leal 64(%esp),%edi - call _ecp_nistz256_sub - movl 160(%esp),%eax - leal (%esp),%esi - leal (%esp),%ebp - leal 128(%esp),%edi - call _ecp_nistz256_mul_mont - movl 160(%esp),%eax - leal 32(%esp),%esi - leal 64(%esp),%ebp - leal 32(%esp),%edi - call _ecp_nistz256_mul_mont - movl $32,%edi - leal 128(%esp),%esi - addl 184(%esp),%edi - call _ecp_nistz256_div_by_2 - leal 32(%esp),%esi - leal 32(%esp),%ebp - leal 128(%esp),%edi - call _ecp_nistz256_add - movl 160(%esp),%eax - leal 96(%esp),%esi - leal (%esp),%ebp - leal (%esp),%edi - call _ecp_nistz256_mul_mont - leal 128(%esp),%esi - leal 32(%esp),%ebp - leal 32(%esp),%edi - call _ecp_nistz256_add - leal (%esp),%esi - leal (%esp),%ebp - leal 128(%esp),%edi - call _ecp_nistz256_add - movl 160(%esp),%eax - leal 32(%esp),%esi - leal 32(%esp),%ebp - movl 184(%esp),%edi - call _ecp_nistz256_mul_mont - movl %edi,%esi - leal 128(%esp),%ebp - call _ecp_nistz256_sub - leal (%esp),%esi - movl %edi,%ebp - leal (%esp),%edi - call _ecp_nistz256_sub - movl 160(%esp),%eax - movl %edi,%esi - leal 32(%esp),%ebp - call _ecp_nistz256_mul_mont - movl $32,%ebp - leal (%esp),%esi - addl 184(%esp),%ebp - movl %ebp,%edi - call _ecp_nistz256_sub - addl $164,%esp - popl %edi - popl %esi - popl %ebx - popl %ebp - ret -.size GFp_nistz256_point_double,.-.L_GFp_nistz256_point_double_begin -.globl GFp_nistz256_point_add_affine -.hidden GFp_nistz256_point_add_affine -.type GFp_nistz256_point_add_affine,@function -.align 16 -GFp_nistz256_point_add_affine: -.L_GFp_nistz256_point_add_affine_begin: - pushl %ebp - pushl %ebx - pushl %esi - pushl %edi - movl 24(%esp),%esi - subl $492,%esp - call _picup_eax -.L003pic: - leal GFp_ia32cap_P-.L003pic(%eax),%edx - movl (%edx),%ebp - leal 96(%esp),%edi - movl (%esi),%eax - movl 4(%esi),%ebx - movl 8(%esi),%ecx - movl 12(%esi),%edx - movl %eax,(%edi) - movl %ebp,488(%esp) - movl %ebx,4(%edi) - movl %ecx,8(%edi) - movl %edx,12(%edi) - movl 16(%esi),%eax - movl 20(%esi),%ebx - movl 24(%esi),%ecx - movl 28(%esi),%edx - movl %eax,16(%edi) - movl %ebx,20(%edi) - movl %ecx,24(%edi) - movl %edx,28(%edi) - movl 32(%esi),%eax - movl 36(%esi),%ebx - movl 40(%esi),%ecx - movl 44(%esi),%edx - movl %eax,32(%edi) - movl %ebx,36(%edi) - movl %ecx,40(%edi) - movl %edx,44(%edi) - movl 48(%esi),%eax - movl 52(%esi),%ebx - movl 56(%esi),%ecx - movl 60(%esi),%edx - movl %eax,48(%edi) - movl %ebx,52(%edi) - movl %ecx,56(%edi) - movl %edx,60(%edi) - movl 64(%esi),%eax - movl 68(%esi),%ebx - movl 72(%esi),%ecx - movl 76(%esi),%edx - movl %eax,64(%edi) - movl %eax,%ebp - movl %ebx,68(%edi) - orl %ebx,%ebp - movl %ecx,72(%edi) - orl %ecx,%ebp - movl %edx,76(%edi) - orl %edx,%ebp - movl 80(%esi),%eax - movl 84(%esi),%ebx - movl 88(%esi),%ecx - movl 92(%esi),%edx - movl %eax,80(%edi) - orl %eax,%ebp - movl %ebx,84(%edi) - orl %ebx,%ebp - movl %ecx,88(%edi) - orl %ecx,%ebp - movl %edx,92(%edi) - orl %edx,%ebp - xorl %eax,%eax - movl 520(%esp),%esi - subl %ebp,%eax - orl %eax,%ebp - sarl $31,%ebp - movl %ebp,480(%esp) - leal 192(%esp),%edi - movl (%esi),%eax - movl 4(%esi),%ebx - movl 8(%esi),%ecx - movl 12(%esi),%edx - movl %eax,(%edi) - movl %eax,%ebp - movl %ebx,4(%edi) - orl %ebx,%ebp - movl %ecx,8(%edi) - orl %ecx,%ebp - movl %edx,12(%edi) - orl %edx,%ebp - movl 16(%esi),%eax - movl 20(%esi),%ebx - movl 24(%esi),%ecx - movl 28(%esi),%edx - movl %eax,16(%edi) - orl %eax,%ebp - movl %ebx,20(%edi) - orl %ebx,%ebp - movl %ecx,24(%edi) - orl %ecx,%ebp - movl %edx,28(%edi) - orl %edx,%ebp - movl 32(%esi),%eax - movl 36(%esi),%ebx - movl 40(%esi),%ecx - movl 44(%esi),%edx - movl %eax,32(%edi) - orl %eax,%ebp - movl %ebx,36(%edi) - orl %ebx,%ebp - movl %ecx,40(%edi) - orl %ecx,%ebp - movl %edx,44(%edi) - orl %edx,%ebp - movl 48(%esi),%eax - movl 52(%esi),%ebx - movl 56(%esi),%ecx - movl 60(%esi),%edx - movl %eax,48(%edi) - orl %eax,%ebp - movl %ebx,52(%edi) - orl %ebx,%ebp - movl %ecx,56(%edi) - orl %ecx,%ebp - movl %edx,60(%edi) - orl %edx,%ebp - xorl %ebx,%ebx - movl 488(%esp),%eax - subl %ebp,%ebx - leal 160(%esp),%esi - orl %ebp,%ebx - leal 160(%esp),%ebp - sarl $31,%ebx - leal 288(%esp),%edi - movl %ebx,484(%esp) - call _ecp_nistz256_mul_mont - movl 488(%esp),%eax - leal 192(%esp),%esi - movl %edi,%ebp - leal 256(%esp),%edi - call _ecp_nistz256_mul_mont - movl 488(%esp),%eax - leal 160(%esp),%esi - leal 288(%esp),%ebp - leal 288(%esp),%edi - call _ecp_nistz256_mul_mont - leal 256(%esp),%esi - leal 96(%esp),%ebp - leal 320(%esp),%edi - call _ecp_nistz256_sub - movl 488(%esp),%eax - leal 224(%esp),%esi - leal 288(%esp),%ebp - leal 288(%esp),%edi - call _ecp_nistz256_mul_mont - movl 488(%esp),%eax - leal 160(%esp),%esi - leal 320(%esp),%ebp - leal 64(%esp),%edi - call _ecp_nistz256_mul_mont - leal 288(%esp),%esi - leal 128(%esp),%ebp - leal 352(%esp),%edi - call _ecp_nistz256_sub - movl 488(%esp),%eax - leal 320(%esp),%esi - leal 320(%esp),%ebp - leal 384(%esp),%edi - call _ecp_nistz256_mul_mont - movl 488(%esp),%eax - leal 352(%esp),%esi - leal 352(%esp),%ebp - leal 448(%esp),%edi - call _ecp_nistz256_mul_mont - movl 488(%esp),%eax - leal 96(%esp),%esi - leal 384(%esp),%ebp - leal 256(%esp),%edi - call _ecp_nistz256_mul_mont - movl 488(%esp),%eax - leal 320(%esp),%esi - leal 384(%esp),%ebp - leal 416(%esp),%edi - call _ecp_nistz256_mul_mont - leal 256(%esp),%esi - leal 256(%esp),%ebp - leal 384(%esp),%edi - call _ecp_nistz256_add - leal 448(%esp),%esi - leal 384(%esp),%ebp - leal (%esp),%edi - call _ecp_nistz256_sub - leal (%esp),%esi - leal 416(%esp),%ebp - leal (%esp),%edi - call _ecp_nistz256_sub - leal 256(%esp),%esi - leal (%esp),%ebp - leal 32(%esp),%edi - call _ecp_nistz256_sub - movl 488(%esp),%eax - leal 416(%esp),%esi - leal 128(%esp),%ebp - leal 288(%esp),%edi - call _ecp_nistz256_mul_mont - movl 488(%esp),%eax - leal 352(%esp),%esi - leal 32(%esp),%ebp - leal 32(%esp),%edi - call _ecp_nistz256_mul_mont - leal 32(%esp),%esi - leal 288(%esp),%ebp - leal 32(%esp),%edi - call _ecp_nistz256_sub - movl 480(%esp),%ebp - movl 484(%esp),%esi - movl 512(%esp),%edi - movl %ebp,%edx - notl %ebp - andl %esi,%edx - andl %esi,%ebp - notl %esi - movl %edx,%eax - andl 64(%esp),%eax - movl %ebp,%ebx - andl $1,%ebx - movl %esi,%ecx - andl 160(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,64(%edi) - movl %edx,%eax - andl 68(%esp),%eax - movl %esi,%ecx - andl 164(%esp),%ecx - orl %ecx,%eax - movl %eax,68(%edi) - movl %edx,%eax - andl 72(%esp),%eax - movl %esi,%ecx - andl 168(%esp),%ecx - orl %ecx,%eax - movl %eax,72(%edi) - movl %edx,%eax - andl 76(%esp),%eax - movl %esi,%ecx - andl 172(%esp),%ecx - orl %ebp,%eax - orl %ecx,%eax - movl %eax,76(%edi) - movl %edx,%eax - andl 80(%esp),%eax - movl %esi,%ecx - andl 176(%esp),%ecx - orl %ebp,%eax - orl %ecx,%eax - movl %eax,80(%edi) - movl %edx,%eax - andl 84(%esp),%eax - movl %esi,%ecx - andl 180(%esp),%ecx - orl %ebp,%eax - orl %ecx,%eax - movl %eax,84(%edi) - movl %edx,%eax - andl 88(%esp),%eax - movl %ebp,%ebx - andl $-2,%ebx - movl %esi,%ecx - andl 184(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,88(%edi) - movl %edx,%eax - andl 92(%esp),%eax - movl %esi,%ecx - andl 188(%esp),%ecx - orl %ecx,%eax - movl %eax,92(%edi) - movl %edx,%eax - andl (%esp),%eax - movl %ebp,%ebx - andl 192(%esp),%ebx - movl %esi,%ecx - andl 96(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,(%edi) - movl %edx,%eax - andl 4(%esp),%eax - movl %ebp,%ebx - andl 196(%esp),%ebx - movl %esi,%ecx - andl 100(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,4(%edi) - movl %edx,%eax - andl 8(%esp),%eax - movl %ebp,%ebx - andl 200(%esp),%ebx - movl %esi,%ecx - andl 104(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,8(%edi) - movl %edx,%eax - andl 12(%esp),%eax - movl %ebp,%ebx - andl 204(%esp),%ebx - movl %esi,%ecx - andl 108(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,12(%edi) - movl %edx,%eax - andl 16(%esp),%eax - movl %ebp,%ebx - andl 208(%esp),%ebx - movl %esi,%ecx - andl 112(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,16(%edi) - movl %edx,%eax - andl 20(%esp),%eax - movl %ebp,%ebx - andl 212(%esp),%ebx - movl %esi,%ecx - andl 116(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,20(%edi) - movl %edx,%eax - andl 24(%esp),%eax - movl %ebp,%ebx - andl 216(%esp),%ebx - movl %esi,%ecx - andl 120(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,24(%edi) - movl %edx,%eax - andl 28(%esp),%eax - movl %ebp,%ebx - andl 220(%esp),%ebx - movl %esi,%ecx - andl 124(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,28(%edi) - movl %edx,%eax - andl 32(%esp),%eax - movl %ebp,%ebx - andl 224(%esp),%ebx - movl %esi,%ecx - andl 128(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,32(%edi) - movl %edx,%eax - andl 36(%esp),%eax - movl %ebp,%ebx - andl 228(%esp),%ebx - movl %esi,%ecx - andl 132(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,36(%edi) - movl %edx,%eax - andl 40(%esp),%eax - movl %ebp,%ebx - andl 232(%esp),%ebx - movl %esi,%ecx - andl 136(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,40(%edi) - movl %edx,%eax - andl 44(%esp),%eax - movl %ebp,%ebx - andl 236(%esp),%ebx - movl %esi,%ecx - andl 140(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,44(%edi) - movl %edx,%eax - andl 48(%esp),%eax - movl %ebp,%ebx - andl 240(%esp),%ebx - movl %esi,%ecx - andl 144(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,48(%edi) - movl %edx,%eax - andl 52(%esp),%eax - movl %ebp,%ebx - andl 244(%esp),%ebx - movl %esi,%ecx - andl 148(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,52(%edi) - movl %edx,%eax - andl 56(%esp),%eax - movl %ebp,%ebx - andl 248(%esp),%ebx - movl %esi,%ecx - andl 152(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,56(%edi) - movl %edx,%eax - andl 60(%esp),%eax - movl %ebp,%ebx - andl 252(%esp),%ebx - movl %esi,%ecx - andl 156(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,60(%edi) - addl $492,%esp - popl %edi - popl %esi - popl %ebx - popl %ebp - ret -.size GFp_nistz256_point_add_affine,.-.L_GFp_nistz256_point_add_affine_begin -#endif -.section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-x86-macosx.S temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-x86-macosx.S --- temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-x86-macosx.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-x86-macosx.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,1111 +0,0 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. - -#if defined(__i386__) -#if defined(BORINGSSL_PREFIX) -#include -#endif -.text -LONE_mont: -.long 1,0,0,-1,-1,-1,-2,0 -.private_extern __ecp_nistz256_div_by_2 -.align 4 -__ecp_nistz256_div_by_2: - movl (%esi),%ebp - xorl %edx,%edx - movl 4(%esi),%ebx - movl %ebp,%eax - andl $1,%ebp - movl 8(%esi),%ecx - subl %ebp,%edx - addl %edx,%eax - adcl %edx,%ebx - movl %eax,(%edi) - adcl %edx,%ecx - movl %ebx,4(%edi) - movl %ecx,8(%edi) - movl 12(%esi),%eax - movl 16(%esi),%ebx - adcl $0,%eax - movl 20(%esi),%ecx - adcl $0,%ebx - movl %eax,12(%edi) - adcl $0,%ecx - movl %ebx,16(%edi) - movl %ecx,20(%edi) - movl 24(%esi),%eax - movl 28(%esi),%ebx - adcl %ebp,%eax - adcl %edx,%ebx - movl %eax,24(%edi) - sbbl %esi,%esi - movl %ebx,28(%edi) - movl (%edi),%eax - movl 4(%edi),%ebx - movl 8(%edi),%ecx - movl 12(%edi),%edx - shrl $1,%eax - movl %ebx,%ebp - shll $31,%ebx - orl %ebx,%eax - shrl $1,%ebp - movl %ecx,%ebx - shll $31,%ecx - movl %eax,(%edi) - orl %ecx,%ebp - movl 16(%edi),%eax - shrl $1,%ebx - movl %edx,%ecx - shll $31,%edx - movl %ebp,4(%edi) - orl %edx,%ebx - movl 20(%edi),%ebp - shrl $1,%ecx - movl %eax,%edx - shll $31,%eax - movl %ebx,8(%edi) - orl %eax,%ecx - movl 24(%edi),%ebx - shrl $1,%edx - movl %ebp,%eax - shll $31,%ebp - movl %ecx,12(%edi) - orl %ebp,%edx - movl 28(%edi),%ecx - shrl $1,%eax - movl %ebx,%ebp - shll $31,%ebx - movl %edx,16(%edi) - orl %ebx,%eax - shrl $1,%ebp - movl %ecx,%ebx - shll $31,%ecx - movl %eax,20(%edi) - orl %ecx,%ebp - shrl $1,%ebx - shll $31,%esi - movl %ebp,24(%edi) - orl %esi,%ebx - movl %ebx,28(%edi) - ret -.globl _GFp_nistz256_add -.private_extern _GFp_nistz256_add -.align 4 -_GFp_nistz256_add: -L_GFp_nistz256_add_begin: - pushl %ebp - pushl %ebx - pushl %esi - pushl %edi - movl 24(%esp),%esi - movl 28(%esp),%ebp - movl 20(%esp),%edi - call __ecp_nistz256_add - popl %edi - popl %esi - popl %ebx - popl %ebp - ret -.private_extern __ecp_nistz256_add -.align 4 -__ecp_nistz256_add: - movl (%esi),%eax - movl 4(%esi),%ebx - movl 8(%esi),%ecx - addl (%ebp),%eax - movl 12(%esi),%edx - adcl 4(%ebp),%ebx - movl %eax,(%edi) - adcl 8(%ebp),%ecx - movl %ebx,4(%edi) - adcl 12(%ebp),%edx - movl %ecx,8(%edi) - movl %edx,12(%edi) - movl 16(%esi),%eax - movl 20(%esi),%ebx - movl 24(%esi),%ecx - adcl 16(%ebp),%eax - movl 28(%esi),%edx - adcl 20(%ebp),%ebx - movl %eax,16(%edi) - adcl 24(%ebp),%ecx - movl %ebx,20(%edi) - movl $0,%esi - adcl 28(%ebp),%edx - movl %ecx,24(%edi) - adcl $0,%esi - movl %edx,28(%edi) - movl (%edi),%eax - movl 4(%edi),%ebx - movl 8(%edi),%ecx - subl $-1,%eax - movl 12(%edi),%edx - sbbl $-1,%ebx - movl 16(%edi),%eax - sbbl $-1,%ecx - movl 20(%edi),%ebx - sbbl $0,%edx - movl 24(%edi),%ecx - sbbl $0,%eax - movl 28(%edi),%edx - sbbl $0,%ebx - sbbl $1,%ecx - sbbl $-1,%edx - sbbl $0,%esi - notl %esi - movl (%edi),%eax - movl %esi,%ebp - movl 4(%edi),%ebx - shrl $31,%ebp - movl 8(%edi),%ecx - subl %esi,%eax - movl 12(%edi),%edx - sbbl %esi,%ebx - movl %eax,(%edi) - sbbl %esi,%ecx - movl %ebx,4(%edi) - sbbl $0,%edx - movl %ecx,8(%edi) - movl %edx,12(%edi) - movl 16(%edi),%eax - movl 20(%edi),%ebx - movl 24(%edi),%ecx - sbbl $0,%eax - movl 28(%edi),%edx - sbbl $0,%ebx - movl %eax,16(%edi) - sbbl %ebp,%ecx - movl %ebx,20(%edi) - sbbl %esi,%edx - movl %ecx,24(%edi) - movl %edx,28(%edi) - ret -.private_extern __ecp_nistz256_sub -.align 4 -__ecp_nistz256_sub: - movl (%esi),%eax - movl 4(%esi),%ebx - movl 8(%esi),%ecx - subl (%ebp),%eax - movl 12(%esi),%edx - sbbl 4(%ebp),%ebx - movl %eax,(%edi) - sbbl 8(%ebp),%ecx - movl %ebx,4(%edi) - sbbl 12(%ebp),%edx - movl %ecx,8(%edi) - movl %edx,12(%edi) - movl 16(%esi),%eax - movl 20(%esi),%ebx - movl 24(%esi),%ecx - sbbl 16(%ebp),%eax - movl 28(%esi),%edx - sbbl 20(%ebp),%ebx - sbbl 24(%ebp),%ecx - movl %eax,16(%edi) - sbbl 28(%ebp),%edx - movl %ebx,20(%edi) - sbbl %esi,%esi - movl %ecx,24(%edi) - movl %edx,28(%edi) - movl (%edi),%eax - movl %esi,%ebp - movl 4(%edi),%ebx - shrl $31,%ebp - movl 8(%edi),%ecx - addl %esi,%eax - movl 12(%edi),%edx - adcl %esi,%ebx - movl %eax,(%edi) - adcl %esi,%ecx - movl %ebx,4(%edi) - adcl $0,%edx - movl %ecx,8(%edi) - movl %edx,12(%edi) - movl 16(%edi),%eax - movl 20(%edi),%ebx - movl 24(%edi),%ecx - adcl $0,%eax - movl 28(%edi),%edx - adcl $0,%ebx - movl %eax,16(%edi) - adcl %ebp,%ecx - movl %ebx,20(%edi) - adcl %esi,%edx - movl %ecx,24(%edi) - movl %edx,28(%edi) - ret -.globl _GFp_nistz256_neg -.private_extern _GFp_nistz256_neg -.align 4 -_GFp_nistz256_neg: -L_GFp_nistz256_neg_begin: - pushl %ebp - pushl %ebx - pushl %esi - pushl %edi - movl 24(%esp),%ebp - movl 20(%esp),%edi - xorl %eax,%eax - subl $32,%esp - movl %eax,(%esp) - movl %esp,%esi - movl %eax,4(%esp) - movl %eax,8(%esp) - movl %eax,12(%esp) - movl %eax,16(%esp) - movl %eax,20(%esp) - movl %eax,24(%esp) - movl %eax,28(%esp) - call __ecp_nistz256_sub - addl $32,%esp - popl %edi - popl %esi - popl %ebx - popl %ebp - ret -.private_extern __picup_eax -.align 4 -__picup_eax: - movl (%esp),%eax - ret -.globl _GFp_nistz256_mul_mont -.private_extern _GFp_nistz256_mul_mont -.align 4 -_GFp_nistz256_mul_mont: -L_GFp_nistz256_mul_mont_begin: - pushl %ebp - pushl %ebx - pushl %esi - pushl %edi - movl 24(%esp),%esi - movl 28(%esp),%ebp - call __picup_eax -L000pic: - movl L_GFp_ia32cap_P$non_lazy_ptr-L000pic(%eax),%eax - movl (%eax),%eax - movl 20(%esp),%edi - call __ecp_nistz256_mul_mont - popl %edi - popl %esi - popl %ebx - popl %ebp - ret -.private_extern __ecp_nistz256_mul_mont -.align 4 -__ecp_nistz256_mul_mont: - movl %esp,%edx - subl $256,%esp - movd (%ebp),%xmm7 - leal 4(%ebp),%ebp - pcmpeqd %xmm6,%xmm6 - psrlq $48,%xmm6 - pshuflw $220,%xmm7,%xmm7 - andl $-64,%esp - pshufd $220,%xmm7,%xmm7 - leal 128(%esp),%ebx - movd (%esi),%xmm0 - pshufd $204,%xmm0,%xmm0 - movd 4(%esi),%xmm1 - movdqa %xmm0,(%ebx) - pmuludq %xmm7,%xmm0 - movd 8(%esi),%xmm2 - pshufd $204,%xmm1,%xmm1 - movdqa %xmm1,16(%ebx) - pmuludq %xmm7,%xmm1 - movq %xmm0,%xmm4 - pslldq $6,%xmm4 - paddq %xmm0,%xmm4 - movdqa %xmm4,%xmm5 - psrldq $10,%xmm4 - pand %xmm6,%xmm5 - movd 12(%esi),%xmm3 - pshufd $204,%xmm2,%xmm2 - movdqa %xmm2,32(%ebx) - pmuludq %xmm7,%xmm2 - paddq %xmm4,%xmm1 - movdqa %xmm1,(%esp) - movd 16(%esi),%xmm0 - pshufd $204,%xmm3,%xmm3 - movdqa %xmm3,48(%ebx) - pmuludq %xmm7,%xmm3 - movdqa %xmm2,16(%esp) - movd 20(%esi),%xmm1 - pshufd $204,%xmm0,%xmm0 - movdqa %xmm0,64(%ebx) - pmuludq %xmm7,%xmm0 - paddq %xmm5,%xmm3 - movdqa %xmm3,32(%esp) - movd 24(%esi),%xmm2 - pshufd $204,%xmm1,%xmm1 - movdqa %xmm1,80(%ebx) - pmuludq %xmm7,%xmm1 - movdqa %xmm0,48(%esp) - pshufd $177,%xmm5,%xmm4 - movd 28(%esi),%xmm3 - pshufd $204,%xmm2,%xmm2 - movdqa %xmm2,96(%ebx) - pmuludq %xmm7,%xmm2 - movdqa %xmm1,64(%esp) - psubq %xmm5,%xmm4 - movd (%ebp),%xmm0 - pshufd $204,%xmm3,%xmm3 - movdqa %xmm3,112(%ebx) - pmuludq %xmm7,%xmm3 - pshuflw $220,%xmm0,%xmm7 - movdqa (%ebx),%xmm0 - pshufd $220,%xmm7,%xmm7 - movl $6,%ecx - leal 4(%ebp),%ebp - jmp L001madd_sse2 -.align 4,0x90 -L001madd_sse2: - paddq %xmm5,%xmm2 - paddq %xmm4,%xmm3 - movdqa 16(%ebx),%xmm1 - pmuludq %xmm7,%xmm0 - movdqa %xmm2,80(%esp) - movdqa 32(%ebx),%xmm2 - pmuludq %xmm7,%xmm1 - movdqa %xmm3,96(%esp) - paddq (%esp),%xmm0 - movdqa 48(%ebx),%xmm3 - pmuludq %xmm7,%xmm2 - movq %xmm0,%xmm4 - pslldq $6,%xmm4 - paddq 16(%esp),%xmm1 - paddq %xmm0,%xmm4 - movdqa %xmm4,%xmm5 - psrldq $10,%xmm4 - movdqa 64(%ebx),%xmm0 - pmuludq %xmm7,%xmm3 - paddq %xmm4,%xmm1 - paddq 32(%esp),%xmm2 - movdqa %xmm1,(%esp) - movdqa 80(%ebx),%xmm1 - pmuludq %xmm7,%xmm0 - paddq 48(%esp),%xmm3 - movdqa %xmm2,16(%esp) - pand %xmm6,%xmm5 - movdqa 96(%ebx),%xmm2 - pmuludq %xmm7,%xmm1 - paddq %xmm5,%xmm3 - paddq 64(%esp),%xmm0 - movdqa %xmm3,32(%esp) - pshufd $177,%xmm5,%xmm4 - movdqa %xmm7,%xmm3 - pmuludq %xmm7,%xmm2 - movd (%ebp),%xmm7 - leal 4(%ebp),%ebp - paddq 80(%esp),%xmm1 - psubq %xmm5,%xmm4 - movdqa %xmm0,48(%esp) - pshuflw $220,%xmm7,%xmm7 - pmuludq 112(%ebx),%xmm3 - pshufd $220,%xmm7,%xmm7 - movdqa (%ebx),%xmm0 - movdqa %xmm1,64(%esp) - paddq 96(%esp),%xmm2 - decl %ecx - jnz L001madd_sse2 - paddq %xmm5,%xmm2 - paddq %xmm4,%xmm3 - movdqa 16(%ebx),%xmm1 - pmuludq %xmm7,%xmm0 - movdqa %xmm2,80(%esp) - movdqa 32(%ebx),%xmm2 - pmuludq %xmm7,%xmm1 - movdqa %xmm3,96(%esp) - paddq (%esp),%xmm0 - movdqa 48(%ebx),%xmm3 - pmuludq %xmm7,%xmm2 - movq %xmm0,%xmm4 - pslldq $6,%xmm4 - paddq 16(%esp),%xmm1 - paddq %xmm0,%xmm4 - movdqa %xmm4,%xmm5 - psrldq $10,%xmm4 - movdqa 64(%ebx),%xmm0 - pmuludq %xmm7,%xmm3 - paddq %xmm4,%xmm1 - paddq 32(%esp),%xmm2 - movdqa %xmm1,(%esp) - movdqa 80(%ebx),%xmm1 - pmuludq %xmm7,%xmm0 - paddq 48(%esp),%xmm3 - movdqa %xmm2,16(%esp) - pand %xmm6,%xmm5 - movdqa 96(%ebx),%xmm2 - pmuludq %xmm7,%xmm1 - paddq %xmm5,%xmm3 - paddq 64(%esp),%xmm0 - movdqa %xmm3,32(%esp) - pshufd $177,%xmm5,%xmm4 - movdqa 112(%ebx),%xmm3 - pmuludq %xmm7,%xmm2 - paddq 80(%esp),%xmm1 - psubq %xmm5,%xmm4 - movdqa %xmm0,48(%esp) - pmuludq %xmm7,%xmm3 - pcmpeqd %xmm7,%xmm7 - movdqa (%esp),%xmm0 - pslldq $8,%xmm7 - movdqa %xmm1,64(%esp) - paddq 96(%esp),%xmm2 - paddq %xmm5,%xmm2 - paddq %xmm4,%xmm3 - movdqa %xmm2,80(%esp) - movdqa %xmm3,96(%esp) - movdqa 16(%esp),%xmm1 - movdqa 32(%esp),%xmm2 - movdqa 48(%esp),%xmm3 - movq %xmm0,%xmm4 - pand %xmm7,%xmm0 - xorl %ebp,%ebp - pslldq $6,%xmm4 - movq %xmm1,%xmm5 - paddq %xmm4,%xmm0 - pand %xmm7,%xmm1 - psrldq $6,%xmm0 - movd %xmm0,%eax - psrldq $4,%xmm0 - paddq %xmm0,%xmm5 - movdqa 64(%esp),%xmm0 - subl $-1,%eax - pslldq $6,%xmm5 - movq %xmm2,%xmm4 - paddq %xmm5,%xmm1 - pand %xmm7,%xmm2 - psrldq $6,%xmm1 - movl %eax,(%edi) - movd %xmm1,%eax - psrldq $4,%xmm1 - paddq %xmm1,%xmm4 - movdqa 80(%esp),%xmm1 - sbbl $-1,%eax - pslldq $6,%xmm4 - movq %xmm3,%xmm5 - paddq %xmm4,%xmm2 - pand %xmm7,%xmm3 - psrldq $6,%xmm2 - movl %eax,4(%edi) - movd %xmm2,%eax - psrldq $4,%xmm2 - paddq %xmm2,%xmm5 - movdqa 96(%esp),%xmm2 - sbbl $-1,%eax - pslldq $6,%xmm5 - movq %xmm0,%xmm4 - paddq %xmm5,%xmm3 - pand %xmm7,%xmm0 - psrldq $6,%xmm3 - movl %eax,8(%edi) - movd %xmm3,%eax - psrldq $4,%xmm3 - paddq %xmm3,%xmm4 - sbbl $0,%eax - pslldq $6,%xmm4 - movq %xmm1,%xmm5 - paddq %xmm4,%xmm0 - pand %xmm7,%xmm1 - psrldq $6,%xmm0 - movl %eax,12(%edi) - movd %xmm0,%eax - psrldq $4,%xmm0 - paddq %xmm0,%xmm5 - sbbl $0,%eax - pslldq $6,%xmm5 - movq %xmm2,%xmm4 - paddq %xmm5,%xmm1 - pand %xmm7,%xmm2 - psrldq $6,%xmm1 - movd %xmm1,%ebx - psrldq $4,%xmm1 - movl %edx,%esp - paddq %xmm1,%xmm4 - pslldq $6,%xmm4 - paddq %xmm4,%xmm2 - psrldq $6,%xmm2 - movd %xmm2,%ecx - psrldq $4,%xmm2 - sbbl $0,%ebx - movd %xmm2,%edx - pextrw $2,%xmm2,%esi - sbbl $1,%ecx - sbbl $-1,%edx - sbbl $0,%esi - subl %esi,%ebp - addl %esi,(%edi) - adcl %esi,4(%edi) - adcl %esi,8(%edi) - adcl $0,12(%edi) - adcl $0,%eax - adcl $0,%ebx - movl %eax,16(%edi) - adcl %ebp,%ecx - movl %ebx,20(%edi) - adcl %esi,%edx - movl %ecx,24(%edi) - movl %edx,28(%edi) - ret -.globl _GFp_nistz256_point_double -.private_extern _GFp_nistz256_point_double -.align 4 -_GFp_nistz256_point_double: -L_GFp_nistz256_point_double_begin: - pushl %ebp - pushl %ebx - pushl %esi - pushl %edi - movl 24(%esp),%esi - subl $164,%esp - call __picup_eax -L002pic: - movl L_GFp_ia32cap_P$non_lazy_ptr-L002pic(%eax),%edx - movl (%edx),%ebp -Lpoint_double_shortcut: - movl (%esi),%eax - movl 4(%esi),%ebx - movl 8(%esi),%ecx - movl 12(%esi),%edx - movl %eax,96(%esp) - movl %ebx,100(%esp) - movl %ecx,104(%esp) - movl %edx,108(%esp) - movl 16(%esi),%eax - movl 20(%esi),%ebx - movl 24(%esi),%ecx - movl 28(%esi),%edx - movl %eax,112(%esp) - movl %ebx,116(%esp) - movl %ecx,120(%esp) - movl %edx,124(%esp) - movl %ebp,160(%esp) - leal 32(%esi),%ebp - leal 32(%esi),%esi - leal (%esp),%edi - call __ecp_nistz256_add - movl 160(%esp),%eax - movl $64,%esi - addl 188(%esp),%esi - leal 64(%esp),%edi - movl %esi,%ebp - call __ecp_nistz256_mul_mont - movl 160(%esp),%eax - leal (%esp),%esi - leal (%esp),%ebp - leal (%esp),%edi - call __ecp_nistz256_mul_mont - movl 160(%esp),%eax - movl 188(%esp),%ebp - leal 32(%ebp),%esi - leal 64(%ebp),%ebp - leal 128(%esp),%edi - call __ecp_nistz256_mul_mont - leal 96(%esp),%esi - leal 64(%esp),%ebp - leal 32(%esp),%edi - call __ecp_nistz256_add - movl $64,%edi - leal 128(%esp),%esi - leal 128(%esp),%ebp - addl 184(%esp),%edi - call __ecp_nistz256_add - leal 96(%esp),%esi - leal 64(%esp),%ebp - leal 64(%esp),%edi - call __ecp_nistz256_sub - movl 160(%esp),%eax - leal (%esp),%esi - leal (%esp),%ebp - leal 128(%esp),%edi - call __ecp_nistz256_mul_mont - movl 160(%esp),%eax - leal 32(%esp),%esi - leal 64(%esp),%ebp - leal 32(%esp),%edi - call __ecp_nistz256_mul_mont - movl $32,%edi - leal 128(%esp),%esi - addl 184(%esp),%edi - call __ecp_nistz256_div_by_2 - leal 32(%esp),%esi - leal 32(%esp),%ebp - leal 128(%esp),%edi - call __ecp_nistz256_add - movl 160(%esp),%eax - leal 96(%esp),%esi - leal (%esp),%ebp - leal (%esp),%edi - call __ecp_nistz256_mul_mont - leal 128(%esp),%esi - leal 32(%esp),%ebp - leal 32(%esp),%edi - call __ecp_nistz256_add - leal (%esp),%esi - leal (%esp),%ebp - leal 128(%esp),%edi - call __ecp_nistz256_add - movl 160(%esp),%eax - leal 32(%esp),%esi - leal 32(%esp),%ebp - movl 184(%esp),%edi - call __ecp_nistz256_mul_mont - movl %edi,%esi - leal 128(%esp),%ebp - call __ecp_nistz256_sub - leal (%esp),%esi - movl %edi,%ebp - leal (%esp),%edi - call __ecp_nistz256_sub - movl 160(%esp),%eax - movl %edi,%esi - leal 32(%esp),%ebp - call __ecp_nistz256_mul_mont - movl $32,%ebp - leal (%esp),%esi - addl 184(%esp),%ebp - movl %ebp,%edi - call __ecp_nistz256_sub - addl $164,%esp - popl %edi - popl %esi - popl %ebx - popl %ebp - ret -.globl _GFp_nistz256_point_add_affine -.private_extern _GFp_nistz256_point_add_affine -.align 4 -_GFp_nistz256_point_add_affine: -L_GFp_nistz256_point_add_affine_begin: - pushl %ebp - pushl %ebx - pushl %esi - pushl %edi - movl 24(%esp),%esi - subl $492,%esp - call __picup_eax -L003pic: - movl L_GFp_ia32cap_P$non_lazy_ptr-L003pic(%eax),%edx - movl (%edx),%ebp - leal 96(%esp),%edi - movl (%esi),%eax - movl 4(%esi),%ebx - movl 8(%esi),%ecx - movl 12(%esi),%edx - movl %eax,(%edi) - movl %ebp,488(%esp) - movl %ebx,4(%edi) - movl %ecx,8(%edi) - movl %edx,12(%edi) - movl 16(%esi),%eax - movl 20(%esi),%ebx - movl 24(%esi),%ecx - movl 28(%esi),%edx - movl %eax,16(%edi) - movl %ebx,20(%edi) - movl %ecx,24(%edi) - movl %edx,28(%edi) - movl 32(%esi),%eax - movl 36(%esi),%ebx - movl 40(%esi),%ecx - movl 44(%esi),%edx - movl %eax,32(%edi) - movl %ebx,36(%edi) - movl %ecx,40(%edi) - movl %edx,44(%edi) - movl 48(%esi),%eax - movl 52(%esi),%ebx - movl 56(%esi),%ecx - movl 60(%esi),%edx - movl %eax,48(%edi) - movl %ebx,52(%edi) - movl %ecx,56(%edi) - movl %edx,60(%edi) - movl 64(%esi),%eax - movl 68(%esi),%ebx - movl 72(%esi),%ecx - movl 76(%esi),%edx - movl %eax,64(%edi) - movl %eax,%ebp - movl %ebx,68(%edi) - orl %ebx,%ebp - movl %ecx,72(%edi) - orl %ecx,%ebp - movl %edx,76(%edi) - orl %edx,%ebp - movl 80(%esi),%eax - movl 84(%esi),%ebx - movl 88(%esi),%ecx - movl 92(%esi),%edx - movl %eax,80(%edi) - orl %eax,%ebp - movl %ebx,84(%edi) - orl %ebx,%ebp - movl %ecx,88(%edi) - orl %ecx,%ebp - movl %edx,92(%edi) - orl %edx,%ebp - xorl %eax,%eax - movl 520(%esp),%esi - subl %ebp,%eax - orl %eax,%ebp - sarl $31,%ebp - movl %ebp,480(%esp) - leal 192(%esp),%edi - movl (%esi),%eax - movl 4(%esi),%ebx - movl 8(%esi),%ecx - movl 12(%esi),%edx - movl %eax,(%edi) - movl %eax,%ebp - movl %ebx,4(%edi) - orl %ebx,%ebp - movl %ecx,8(%edi) - orl %ecx,%ebp - movl %edx,12(%edi) - orl %edx,%ebp - movl 16(%esi),%eax - movl 20(%esi),%ebx - movl 24(%esi),%ecx - movl 28(%esi),%edx - movl %eax,16(%edi) - orl %eax,%ebp - movl %ebx,20(%edi) - orl %ebx,%ebp - movl %ecx,24(%edi) - orl %ecx,%ebp - movl %edx,28(%edi) - orl %edx,%ebp - movl 32(%esi),%eax - movl 36(%esi),%ebx - movl 40(%esi),%ecx - movl 44(%esi),%edx - movl %eax,32(%edi) - orl %eax,%ebp - movl %ebx,36(%edi) - orl %ebx,%ebp - movl %ecx,40(%edi) - orl %ecx,%ebp - movl %edx,44(%edi) - orl %edx,%ebp - movl 48(%esi),%eax - movl 52(%esi),%ebx - movl 56(%esi),%ecx - movl 60(%esi),%edx - movl %eax,48(%edi) - orl %eax,%ebp - movl %ebx,52(%edi) - orl %ebx,%ebp - movl %ecx,56(%edi) - orl %ecx,%ebp - movl %edx,60(%edi) - orl %edx,%ebp - xorl %ebx,%ebx - movl 488(%esp),%eax - subl %ebp,%ebx - leal 160(%esp),%esi - orl %ebp,%ebx - leal 160(%esp),%ebp - sarl $31,%ebx - leal 288(%esp),%edi - movl %ebx,484(%esp) - call __ecp_nistz256_mul_mont - movl 488(%esp),%eax - leal 192(%esp),%esi - movl %edi,%ebp - leal 256(%esp),%edi - call __ecp_nistz256_mul_mont - movl 488(%esp),%eax - leal 160(%esp),%esi - leal 288(%esp),%ebp - leal 288(%esp),%edi - call __ecp_nistz256_mul_mont - leal 256(%esp),%esi - leal 96(%esp),%ebp - leal 320(%esp),%edi - call __ecp_nistz256_sub - movl 488(%esp),%eax - leal 224(%esp),%esi - leal 288(%esp),%ebp - leal 288(%esp),%edi - call __ecp_nistz256_mul_mont - movl 488(%esp),%eax - leal 160(%esp),%esi - leal 320(%esp),%ebp - leal 64(%esp),%edi - call __ecp_nistz256_mul_mont - leal 288(%esp),%esi - leal 128(%esp),%ebp - leal 352(%esp),%edi - call __ecp_nistz256_sub - movl 488(%esp),%eax - leal 320(%esp),%esi - leal 320(%esp),%ebp - leal 384(%esp),%edi - call __ecp_nistz256_mul_mont - movl 488(%esp),%eax - leal 352(%esp),%esi - leal 352(%esp),%ebp - leal 448(%esp),%edi - call __ecp_nistz256_mul_mont - movl 488(%esp),%eax - leal 96(%esp),%esi - leal 384(%esp),%ebp - leal 256(%esp),%edi - call __ecp_nistz256_mul_mont - movl 488(%esp),%eax - leal 320(%esp),%esi - leal 384(%esp),%ebp - leal 416(%esp),%edi - call __ecp_nistz256_mul_mont - leal 256(%esp),%esi - leal 256(%esp),%ebp - leal 384(%esp),%edi - call __ecp_nistz256_add - leal 448(%esp),%esi - leal 384(%esp),%ebp - leal (%esp),%edi - call __ecp_nistz256_sub - leal (%esp),%esi - leal 416(%esp),%ebp - leal (%esp),%edi - call __ecp_nistz256_sub - leal 256(%esp),%esi - leal (%esp),%ebp - leal 32(%esp),%edi - call __ecp_nistz256_sub - movl 488(%esp),%eax - leal 416(%esp),%esi - leal 128(%esp),%ebp - leal 288(%esp),%edi - call __ecp_nistz256_mul_mont - movl 488(%esp),%eax - leal 352(%esp),%esi - leal 32(%esp),%ebp - leal 32(%esp),%edi - call __ecp_nistz256_mul_mont - leal 32(%esp),%esi - leal 288(%esp),%ebp - leal 32(%esp),%edi - call __ecp_nistz256_sub - movl 480(%esp),%ebp - movl 484(%esp),%esi - movl 512(%esp),%edi - movl %ebp,%edx - notl %ebp - andl %esi,%edx - andl %esi,%ebp - notl %esi - movl %edx,%eax - andl 64(%esp),%eax - movl %ebp,%ebx - andl $1,%ebx - movl %esi,%ecx - andl 160(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,64(%edi) - movl %edx,%eax - andl 68(%esp),%eax - movl %esi,%ecx - andl 164(%esp),%ecx - orl %ecx,%eax - movl %eax,68(%edi) - movl %edx,%eax - andl 72(%esp),%eax - movl %esi,%ecx - andl 168(%esp),%ecx - orl %ecx,%eax - movl %eax,72(%edi) - movl %edx,%eax - andl 76(%esp),%eax - movl %esi,%ecx - andl 172(%esp),%ecx - orl %ebp,%eax - orl %ecx,%eax - movl %eax,76(%edi) - movl %edx,%eax - andl 80(%esp),%eax - movl %esi,%ecx - andl 176(%esp),%ecx - orl %ebp,%eax - orl %ecx,%eax - movl %eax,80(%edi) - movl %edx,%eax - andl 84(%esp),%eax - movl %esi,%ecx - andl 180(%esp),%ecx - orl %ebp,%eax - orl %ecx,%eax - movl %eax,84(%edi) - movl %edx,%eax - andl 88(%esp),%eax - movl %ebp,%ebx - andl $-2,%ebx - movl %esi,%ecx - andl 184(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,88(%edi) - movl %edx,%eax - andl 92(%esp),%eax - movl %esi,%ecx - andl 188(%esp),%ecx - orl %ecx,%eax - movl %eax,92(%edi) - movl %edx,%eax - andl (%esp),%eax - movl %ebp,%ebx - andl 192(%esp),%ebx - movl %esi,%ecx - andl 96(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,(%edi) - movl %edx,%eax - andl 4(%esp),%eax - movl %ebp,%ebx - andl 196(%esp),%ebx - movl %esi,%ecx - andl 100(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,4(%edi) - movl %edx,%eax - andl 8(%esp),%eax - movl %ebp,%ebx - andl 200(%esp),%ebx - movl %esi,%ecx - andl 104(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,8(%edi) - movl %edx,%eax - andl 12(%esp),%eax - movl %ebp,%ebx - andl 204(%esp),%ebx - movl %esi,%ecx - andl 108(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,12(%edi) - movl %edx,%eax - andl 16(%esp),%eax - movl %ebp,%ebx - andl 208(%esp),%ebx - movl %esi,%ecx - andl 112(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,16(%edi) - movl %edx,%eax - andl 20(%esp),%eax - movl %ebp,%ebx - andl 212(%esp),%ebx - movl %esi,%ecx - andl 116(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,20(%edi) - movl %edx,%eax - andl 24(%esp),%eax - movl %ebp,%ebx - andl 216(%esp),%ebx - movl %esi,%ecx - andl 120(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,24(%edi) - movl %edx,%eax - andl 28(%esp),%eax - movl %ebp,%ebx - andl 220(%esp),%ebx - movl %esi,%ecx - andl 124(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,28(%edi) - movl %edx,%eax - andl 32(%esp),%eax - movl %ebp,%ebx - andl 224(%esp),%ebx - movl %esi,%ecx - andl 128(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,32(%edi) - movl %edx,%eax - andl 36(%esp),%eax - movl %ebp,%ebx - andl 228(%esp),%ebx - movl %esi,%ecx - andl 132(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,36(%edi) - movl %edx,%eax - andl 40(%esp),%eax - movl %ebp,%ebx - andl 232(%esp),%ebx - movl %esi,%ecx - andl 136(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,40(%edi) - movl %edx,%eax - andl 44(%esp),%eax - movl %ebp,%ebx - andl 236(%esp),%ebx - movl %esi,%ecx - andl 140(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,44(%edi) - movl %edx,%eax - andl 48(%esp),%eax - movl %ebp,%ebx - andl 240(%esp),%ebx - movl %esi,%ecx - andl 144(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,48(%edi) - movl %edx,%eax - andl 52(%esp),%eax - movl %ebp,%ebx - andl 244(%esp),%ebx - movl %esi,%ecx - andl 148(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,52(%edi) - movl %edx,%eax - andl 56(%esp),%eax - movl %ebp,%ebx - andl 248(%esp),%ebx - movl %esi,%ecx - andl 152(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,56(%edi) - movl %edx,%eax - andl 60(%esp),%eax - movl %ebp,%ebx - andl 252(%esp),%ebx - movl %esi,%ecx - andl 156(%esp),%ecx - orl %ebx,%eax - orl %ecx,%eax - movl %eax,60(%edi) - addl $492,%esp - popl %edi - popl %esi - popl %ebx - popl %ebp - ret -.section __IMPORT,__pointers,non_lazy_symbol_pointers -L_GFp_ia32cap_P$non_lazy_ptr: -.indirect_symbol _GFp_ia32cap_P -.long 0 -#endif Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-x86-win32n.obj and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/pregenerated/ecp_nistz256-x86-win32n.obj differ diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ghash-armv4-ios32.S temporalio-1.3.0/vendor/ring/pregenerated/ghash-armv4-ios32.S --- temporalio-1.3.0/vendor/ring/pregenerated/ghash-armv4-ios32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ghash-armv4-ios32.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,255 +0,0 @@ -// This file is generated from a similarly-named Perl script in the BoringSSL -// source tree. Do not edit by hand. - -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif - -#if !defined(OPENSSL_NO_ASM) -#include - -@ Silence ARMv8 deprecated IT instruction warnings. This file is used by both -@ ARMv7 and ARMv8 processors and does not use ARMv8 instructions. (ARMv8 PMULL -@ instructions are in aesv8-armx.pl.) - - -.text -#if defined(__thumb2__) || defined(__clang__) -.syntax unified -#define ldrplb ldrbpl -#define ldrneb ldrbne -#endif -#if defined(__thumb2__) -.thumb -#else -.code 32 -#endif -#if __ARM_MAX_ARCH__>=7 - - - -.globl _GFp_gcm_init_neon -.private_extern _GFp_gcm_init_neon -#ifdef __thumb2__ -.thumb_func _GFp_gcm_init_neon -#endif -.align 4 -_GFp_gcm_init_neon: - vld1.64 d7,[r1]! @ load H - vmov.i8 q8,#0xe1 - vld1.64 d6,[r1] - vshl.i64 d17,#57 - vshr.u64 d16,#63 @ t0=0xc2....01 - vdup.8 q9,d7[7] - vshr.u64 d26,d6,#63 - vshr.s8 q9,#7 @ broadcast carry bit - vshl.i64 q3,q3,#1 - vand q8,q8,q9 - vorr d7,d26 @ H<<<=1 - veor q3,q3,q8 @ twisted H - vstmia r0,{q3} - - bx lr @ bx lr - - -.globl _GFp_gcm_gmult_neon -.private_extern _GFp_gcm_gmult_neon -#ifdef __thumb2__ -.thumb_func _GFp_gcm_gmult_neon -#endif -.align 4 -_GFp_gcm_gmult_neon: - vld1.64 d7,[r0]! @ load Xi - vld1.64 d6,[r0]! - vmov.i64 d29,#0x0000ffffffffffff - vldmia r1,{d26,d27} @ load twisted H - vmov.i64 d30,#0x00000000ffffffff -#ifdef __ARMEL__ - vrev64.8 q3,q3 -#endif - vmov.i64 d31,#0x000000000000ffff - veor d28,d26,d27 @ Karatsuba pre-processing - mov r3,#16 - b Lgmult_neon - - -.globl _GFp_gcm_ghash_neon -.private_extern _GFp_gcm_ghash_neon -#ifdef __thumb2__ -.thumb_func _GFp_gcm_ghash_neon -#endif -.align 4 -_GFp_gcm_ghash_neon: - vld1.64 d1,[r0]! @ load Xi - vld1.64 d0,[r0]! - vmov.i64 d29,#0x0000ffffffffffff - vldmia r1,{d26,d27} @ load twisted H - vmov.i64 d30,#0x00000000ffffffff -#ifdef __ARMEL__ - vrev64.8 q0,q0 -#endif - vmov.i64 d31,#0x000000000000ffff - veor d28,d26,d27 @ Karatsuba pre-processing - -Loop_neon: - vld1.64 d7,[r2]! @ load inp - vld1.64 d6,[r2]! -#ifdef __ARMEL__ - vrev64.8 q3,q3 -#endif - veor q3,q0 @ inp^=Xi -Lgmult_neon: - vext.8 d16, d26, d26, #1 @ A1 - vmull.p8 q8, d16, d6 @ F = A1*B - vext.8 d0, d6, d6, #1 @ B1 - vmull.p8 q0, d26, d0 @ E = A*B1 - vext.8 d18, d26, d26, #2 @ A2 - vmull.p8 q9, d18, d6 @ H = A2*B - vext.8 d22, d6, d6, #2 @ B2 - vmull.p8 q11, d26, d22 @ G = A*B2 - vext.8 d20, d26, d26, #3 @ A3 - veor q8, q8, q0 @ L = E + F - vmull.p8 q10, d20, d6 @ J = A3*B - vext.8 d0, d6, d6, #3 @ B3 - veor q9, q9, q11 @ M = G + H - vmull.p8 q0, d26, d0 @ I = A*B3 - veor d16, d16, d17 @ t0 = (L) (P0 + P1) << 8 - vand d17, d17, d29 - vext.8 d22, d6, d6, #4 @ B4 - veor d18, d18, d19 @ t1 = (M) (P2 + P3) << 16 - vand d19, d19, d30 - vmull.p8 q11, d26, d22 @ K = A*B4 - veor q10, q10, q0 @ N = I + J - veor d16, d16, d17 - veor d18, d18, d19 - veor d20, d20, d21 @ t2 = (N) (P4 + P5) << 24 - vand d21, d21, d31 - vext.8 q8, q8, q8, #15 - veor d22, d22, d23 @ t3 = (K) (P6 + P7) << 32 - vmov.i64 d23, #0 - vext.8 q9, q9, q9, #14 - veor d20, d20, d21 - vmull.p8 q0, d26, d6 @ D = A*B - vext.8 q11, q11, q11, #12 - vext.8 q10, q10, q10, #13 - veor q8, q8, q9 - veor q10, q10, q11 - veor q0, q0, q8 - veor q0, q0, q10 - veor d6,d6,d7 @ Karatsuba pre-processing - vext.8 d16, d28, d28, #1 @ A1 - vmull.p8 q8, d16, d6 @ F = A1*B - vext.8 d2, d6, d6, #1 @ B1 - vmull.p8 q1, d28, d2 @ E = A*B1 - vext.8 d18, d28, d28, #2 @ A2 - vmull.p8 q9, d18, d6 @ H = A2*B - vext.8 d22, d6, d6, #2 @ B2 - vmull.p8 q11, d28, d22 @ G = A*B2 - vext.8 d20, d28, d28, #3 @ A3 - veor q8, q8, q1 @ L = E + F - vmull.p8 q10, d20, d6 @ J = A3*B - vext.8 d2, d6, d6, #3 @ B3 - veor q9, q9, q11 @ M = G + H - vmull.p8 q1, d28, d2 @ I = A*B3 - veor d16, d16, d17 @ t0 = (L) (P0 + P1) << 8 - vand d17, d17, d29 - vext.8 d22, d6, d6, #4 @ B4 - veor d18, d18, d19 @ t1 = (M) (P2 + P3) << 16 - vand d19, d19, d30 - vmull.p8 q11, d28, d22 @ K = A*B4 - veor q10, q10, q1 @ N = I + J - veor d16, d16, d17 - veor d18, d18, d19 - veor d20, d20, d21 @ t2 = (N) (P4 + P5) << 24 - vand d21, d21, d31 - vext.8 q8, q8, q8, #15 - veor d22, d22, d23 @ t3 = (K) (P6 + P7) << 32 - vmov.i64 d23, #0 - vext.8 q9, q9, q9, #14 - veor d20, d20, d21 - vmull.p8 q1, d28, d6 @ D = A*B - vext.8 q11, q11, q11, #12 - vext.8 q10, q10, q10, #13 - veor q8, q8, q9 - veor q10, q10, q11 - veor q1, q1, q8 - veor q1, q1, q10 - vext.8 d16, d27, d27, #1 @ A1 - vmull.p8 q8, d16, d7 @ F = A1*B - vext.8 d4, d7, d7, #1 @ B1 - vmull.p8 q2, d27, d4 @ E = A*B1 - vext.8 d18, d27, d27, #2 @ A2 - vmull.p8 q9, d18, d7 @ H = A2*B - vext.8 d22, d7, d7, #2 @ B2 - vmull.p8 q11, d27, d22 @ G = A*B2 - vext.8 d20, d27, d27, #3 @ A3 - veor q8, q8, q2 @ L = E + F - vmull.p8 q10, d20, d7 @ J = A3*B - vext.8 d4, d7, d7, #3 @ B3 - veor q9, q9, q11 @ M = G + H - vmull.p8 q2, d27, d4 @ I = A*B3 - veor d16, d16, d17 @ t0 = (L) (P0 + P1) << 8 - vand d17, d17, d29 - vext.8 d22, d7, d7, #4 @ B4 - veor d18, d18, d19 @ t1 = (M) (P2 + P3) << 16 - vand d19, d19, d30 - vmull.p8 q11, d27, d22 @ K = A*B4 - veor q10, q10, q2 @ N = I + J - veor d16, d16, d17 - veor d18, d18, d19 - veor d20, d20, d21 @ t2 = (N) (P4 + P5) << 24 - vand d21, d21, d31 - vext.8 q8, q8, q8, #15 - veor d22, d22, d23 @ t3 = (K) (P6 + P7) << 32 - vmov.i64 d23, #0 - vext.8 q9, q9, q9, #14 - veor d20, d20, d21 - vmull.p8 q2, d27, d7 @ D = A*B - vext.8 q11, q11, q11, #12 - vext.8 q10, q10, q10, #13 - veor q8, q8, q9 - veor q10, q10, q11 - veor q2, q2, q8 - veor q2, q2, q10 - veor q1,q1,q0 @ Karatsuba post-processing - veor q1,q1,q2 - veor d1,d1,d2 - veor d4,d4,d3 @ Xh|Xl - 256-bit result - - @ equivalent of reduction_avx from ghash-x86_64.pl - vshl.i64 q9,q0,#57 @ 1st phase - vshl.i64 q10,q0,#62 - veor q10,q10,q9 @ - vshl.i64 q9,q0,#63 - veor q10, q10, q9 @ - veor d1,d1,d20 @ - veor d4,d4,d21 - - vshr.u64 q10,q0,#1 @ 2nd phase - veor q2,q2,q0 - veor q0,q0,q10 @ - vshr.u64 q10,q10,#6 - vshr.u64 q0,q0,#1 @ - veor q0,q0,q2 @ - veor q0,q0,q10 @ - - subs r3,#16 - bne Loop_neon - -#ifdef __ARMEL__ - vrev64.8 q0,q0 -#endif - sub r0,#16 - vst1.64 d1,[r0]! @ write out Xi - vst1.64 d0,[r0] - - bx lr @ bx lr - -#endif -.byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.align 2 -.align 2 -#endif // !OPENSSL_NO_ASM diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ghash-armv4-linux32.S temporalio-1.3.0/vendor/ring/pregenerated/ghash-armv4-linux32.S --- temporalio-1.3.0/vendor/ring/pregenerated/ghash-armv4-linux32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ghash-armv4-linux32.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,16 +1,10 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#if defined(__arm__) -#include +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_ARM) && defined(__ELF__) +#include @ Silence ARMv8 deprecated IT instruction warnings. This file is used by both @ ARMv7 and ARMv8 processors and does not use ARMv8 instructions. (ARMv8 PMULL @@ -32,11 +26,11 @@ .arch armv7-a .fpu neon -.globl GFp_gcm_init_neon -.hidden GFp_gcm_init_neon -.type GFp_gcm_init_neon,%function +.globl gcm_init_neon +.hidden gcm_init_neon +.type gcm_init_neon,%function .align 4 -GFp_gcm_init_neon: +gcm_init_neon: vld1.64 d7,[r1]! @ load H vmov.i8 q8,#0xe1 vld1.64 d6,[r1] @@ -52,13 +46,13 @@ vstmia r0,{q3} bx lr @ bx lr -.size GFp_gcm_init_neon,.-GFp_gcm_init_neon +.size gcm_init_neon,.-gcm_init_neon -.globl GFp_gcm_gmult_neon -.hidden GFp_gcm_gmult_neon -.type GFp_gcm_gmult_neon,%function +.globl gcm_gmult_neon +.hidden gcm_gmult_neon +.type gcm_gmult_neon,%function .align 4 -GFp_gcm_gmult_neon: +gcm_gmult_neon: vld1.64 d7,[r0]! @ load Xi vld1.64 d6,[r0]! vmov.i64 d29,#0x0000ffffffffffff @@ -71,13 +65,13 @@ veor d28,d26,d27 @ Karatsuba pre-processing mov r3,#16 b .Lgmult_neon -.size GFp_gcm_gmult_neon,.-GFp_gcm_gmult_neon +.size gcm_gmult_neon,.-gcm_gmult_neon -.globl GFp_gcm_ghash_neon -.hidden GFp_gcm_ghash_neon -.type GFp_gcm_ghash_neon,%function +.globl gcm_ghash_neon +.hidden gcm_ghash_neon +.type gcm_ghash_neon,%function .align 4 -GFp_gcm_ghash_neon: +gcm_ghash_neon: vld1.64 d1,[r0]! @ load Xi vld1.64 d0,[r0]! vmov.i64 d29,#0x0000ffffffffffff @@ -242,11 +236,9 @@ vst1.64 d0,[r0] bx lr @ bx lr -.size GFp_gcm_ghash_neon,.-GFp_gcm_ghash_neon +.size gcm_ghash_neon,.-gcm_ghash_neon #endif .byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 2 .align 2 -#endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_ARM) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ghash-neon-armv8-ios64.S temporalio-1.3.0/vendor/ring/pregenerated/ghash-neon-armv8-ios64.S --- temporalio-1.3.0/vendor/ring/pregenerated/ghash-neon-armv8-ios64.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ghash-neon-armv8-ios64.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,23 +1,18 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#include +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__APPLE__) +#include .text -.globl _GFp_gcm_init_neon -.private_extern _GFp_gcm_init_neon +.globl _gcm_init_neon +.private_extern _gcm_init_neon .align 4 -_GFp_gcm_init_neon: +_gcm_init_neon: AARCH64_VALID_CALL_TARGET // This function is adapted from gcm_init_v8. xC2 is t3. ld1 {v17.2d}, [x1] // load H @@ -39,11 +34,11 @@ ret -.globl _GFp_gcm_gmult_neon -.private_extern _GFp_gcm_gmult_neon +.globl _gcm_gmult_neon +.private_extern _gcm_gmult_neon .align 4 -_GFp_gcm_gmult_neon: +_gcm_gmult_neon: AARCH64_VALID_CALL_TARGET ld1 {v3.16b}, [x0] // load Xi ld1 {v5.1d}, [x1], #8 // load twisted H @@ -59,11 +54,11 @@ b Lgmult_neon -.globl _GFp_gcm_ghash_neon -.private_extern _GFp_gcm_ghash_neon +.globl _gcm_ghash_neon +.private_extern _gcm_ghash_neon .align 4 -_GFp_gcm_ghash_neon: +_gcm_ghash_neon: AARCH64_VALID_CALL_TARGET ld1 {v0.16b}, [x0] // load Xi ld1 {v5.1d}, [x1], #8 // load twisted H @@ -337,4 +332,4 @@ .byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,56,44,32,100,101,114,105,118,101,100,32,102,114,111,109,32,65,82,77,118,52,32,118,101,114,115,105,111,110,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 2 .align 2 -#endif // !OPENSSL_NO_ASM +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__APPLE__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ghash-neon-armv8-linux64.S temporalio-1.3.0/vendor/ring/pregenerated/ghash-neon-armv8-linux64.S --- temporalio-1.3.0/vendor/ring/pregenerated/ghash-neon-armv8-linux64.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ghash-neon-armv8-linux64.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,24 +1,18 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif - -#if !defined(OPENSSL_NO_ASM) -#if defined(__aarch64__) -#include +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__ELF__) +#include .text -.globl GFp_gcm_init_neon -.hidden GFp_gcm_init_neon -.type GFp_gcm_init_neon,%function +.globl gcm_init_neon +.hidden gcm_init_neon +.type gcm_init_neon,%function .align 4 -GFp_gcm_init_neon: +gcm_init_neon: AARCH64_VALID_CALL_TARGET // This function is adapted from gcm_init_v8. xC2 is t3. ld1 {v17.2d}, [x1] // load H @@ -38,13 +32,13 @@ eor v5.16b, v3.16b, v16.16b // twisted H st1 {v5.2d}, [x0] // store Htable[0] ret -.size GFp_gcm_init_neon,.-GFp_gcm_init_neon +.size gcm_init_neon,.-gcm_init_neon -.globl GFp_gcm_gmult_neon -.hidden GFp_gcm_gmult_neon -.type GFp_gcm_gmult_neon,%function +.globl gcm_gmult_neon +.hidden gcm_gmult_neon +.type gcm_gmult_neon,%function .align 4 -GFp_gcm_gmult_neon: +gcm_gmult_neon: AARCH64_VALID_CALL_TARGET ld1 {v3.16b}, [x0] // load Xi ld1 {v5.1d}, [x1], #8 // load twisted H @@ -58,13 +52,13 @@ mov x3, #16 b .Lgmult_neon -.size GFp_gcm_gmult_neon,.-GFp_gcm_gmult_neon +.size gcm_gmult_neon,.-gcm_gmult_neon -.globl GFp_gcm_ghash_neon -.hidden GFp_gcm_ghash_neon -.type GFp_gcm_ghash_neon,%function +.globl gcm_ghash_neon +.hidden gcm_ghash_neon +.type gcm_ghash_neon,%function .align 4 -GFp_gcm_ghash_neon: +gcm_ghash_neon: AARCH64_VALID_CALL_TARGET ld1 {v0.16b}, [x0] // load Xi ld1 {v5.1d}, [x1], #8 // load twisted H @@ -326,7 +320,7 @@ st1 {v0.16b}, [x0] ret -.size GFp_gcm_ghash_neon,.-GFp_gcm_ghash_neon +.size gcm_ghash_neon,.-gcm_ghash_neon .section .rodata .align 4 @@ -338,6 +332,4 @@ .byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,56,44,32,100,101,114,105,118,101,100,32,102,114,111,109,32,65,82,77,118,52,32,118,101,114,115,105,111,110,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 2 .align 2 -#endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ghash-neon-armv8-win64.S temporalio-1.3.0/vendor/ring/pregenerated/ghash-neon-armv8-win64.S --- temporalio-1.3.0/vendor/ring/pregenerated/ghash-neon-armv8-win64.S 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ghash-neon-armv8-win64.S 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,341 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. + +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(_WIN32) +#include + +.text + +.globl gcm_init_neon + +.def gcm_init_neon + .type 32 +.endef +.align 4 +gcm_init_neon: + AARCH64_VALID_CALL_TARGET + // This function is adapted from gcm_init_v8. xC2 is t3. + ld1 {v17.2d}, [x1] // load H + movi v19.16b, #0xe1 + shl v19.2d, v19.2d, #57 // 0xc2.0 + ext v3.16b, v17.16b, v17.16b, #8 + ushr v18.2d, v19.2d, #63 + dup v17.4s, v17.s[1] + ext v16.16b, v18.16b, v19.16b, #8 // t0=0xc2....01 + ushr v18.2d, v3.2d, #63 + sshr v17.4s, v17.4s, #31 // broadcast carry bit + and v18.16b, v18.16b, v16.16b + shl v3.2d, v3.2d, #1 + ext v18.16b, v18.16b, v18.16b, #8 + and v16.16b, v16.16b, v17.16b + orr v3.16b, v3.16b, v18.16b // H<<<=1 + eor v5.16b, v3.16b, v16.16b // twisted H + st1 {v5.2d}, [x0] // store Htable[0] + ret + + +.globl gcm_gmult_neon + +.def gcm_gmult_neon + .type 32 +.endef +.align 4 +gcm_gmult_neon: + AARCH64_VALID_CALL_TARGET + ld1 {v3.16b}, [x0] // load Xi + ld1 {v5.1d}, [x1], #8 // load twisted H + ld1 {v6.1d}, [x1] + adrp x9, Lmasks // load constants + add x9, x9, :lo12:Lmasks + ld1 {v24.2d, v25.2d}, [x9] + rev64 v3.16b, v3.16b // byteswap Xi + ext v3.16b, v3.16b, v3.16b, #8 + eor v7.8b, v5.8b, v6.8b // Karatsuba pre-processing + + mov x3, #16 + b Lgmult_neon + + +.globl gcm_ghash_neon + +.def gcm_ghash_neon + .type 32 +.endef +.align 4 +gcm_ghash_neon: + AARCH64_VALID_CALL_TARGET + ld1 {v0.16b}, [x0] // load Xi + ld1 {v5.1d}, [x1], #8 // load twisted H + ld1 {v6.1d}, [x1] + adrp x9, Lmasks // load constants + add x9, x9, :lo12:Lmasks + ld1 {v24.2d, v25.2d}, [x9] + rev64 v0.16b, v0.16b // byteswap Xi + ext v0.16b, v0.16b, v0.16b, #8 + eor v7.8b, v5.8b, v6.8b // Karatsuba pre-processing + +Loop_neon: + ld1 {v3.16b}, [x2], #16 // load inp + rev64 v3.16b, v3.16b // byteswap inp + ext v3.16b, v3.16b, v3.16b, #8 + eor v3.16b, v3.16b, v0.16b // inp ^= Xi + +Lgmult_neon: + // Split the input into v3 and v4. (The upper halves are unused, + // so it is okay to leave them alone.) + ins v4.d[0], v3.d[1] + ext v16.8b, v5.8b, v5.8b, #1 // A1 + pmull v16.8h, v16.8b, v3.8b // F = A1*B + ext v0.8b, v3.8b, v3.8b, #1 // B1 + pmull v0.8h, v5.8b, v0.8b // E = A*B1 + ext v17.8b, v5.8b, v5.8b, #2 // A2 + pmull v17.8h, v17.8b, v3.8b // H = A2*B + ext v19.8b, v3.8b, v3.8b, #2 // B2 + pmull v19.8h, v5.8b, v19.8b // G = A*B2 + ext v18.8b, v5.8b, v5.8b, #3 // A3 + eor v16.16b, v16.16b, v0.16b // L = E + F + pmull v18.8h, v18.8b, v3.8b // J = A3*B + ext v0.8b, v3.8b, v3.8b, #3 // B3 + eor v17.16b, v17.16b, v19.16b // M = G + H + pmull v0.8h, v5.8b, v0.8b // I = A*B3 + + // Here we diverge from the 32-bit version. It computes the following + // (instructions reordered for clarity): + // + // veor $t0#lo, $t0#lo, $t0#hi @ t0 = P0 + P1 (L) + // vand $t0#hi, $t0#hi, $k48 + // veor $t0#lo, $t0#lo, $t0#hi + // + // veor $t1#lo, $t1#lo, $t1#hi @ t1 = P2 + P3 (M) + // vand $t1#hi, $t1#hi, $k32 + // veor $t1#lo, $t1#lo, $t1#hi + // + // veor $t2#lo, $t2#lo, $t2#hi @ t2 = P4 + P5 (N) + // vand $t2#hi, $t2#hi, $k16 + // veor $t2#lo, $t2#lo, $t2#hi + // + // veor $t3#lo, $t3#lo, $t3#hi @ t3 = P6 + P7 (K) + // vmov.i64 $t3#hi, #0 + // + // $kN is a mask with the bottom N bits set. AArch64 cannot compute on + // upper halves of SIMD registers, so we must split each half into + // separate registers. To compensate, we pair computations up and + // parallelize. + + ext v19.8b, v3.8b, v3.8b, #4 // B4 + eor v18.16b, v18.16b, v0.16b // N = I + J + pmull v19.8h, v5.8b, v19.8b // K = A*B4 + + // This can probably be scheduled more efficiently. For now, we just + // pair up independent instructions. + zip1 v20.2d, v16.2d, v17.2d + zip1 v22.2d, v18.2d, v19.2d + zip2 v21.2d, v16.2d, v17.2d + zip2 v23.2d, v18.2d, v19.2d + eor v20.16b, v20.16b, v21.16b + eor v22.16b, v22.16b, v23.16b + and v21.16b, v21.16b, v24.16b + and v23.16b, v23.16b, v25.16b + eor v20.16b, v20.16b, v21.16b + eor v22.16b, v22.16b, v23.16b + zip1 v16.2d, v20.2d, v21.2d + zip1 v18.2d, v22.2d, v23.2d + zip2 v17.2d, v20.2d, v21.2d + zip2 v19.2d, v22.2d, v23.2d + + ext v16.16b, v16.16b, v16.16b, #15 // t0 = t0 << 8 + ext v17.16b, v17.16b, v17.16b, #14 // t1 = t1 << 16 + pmull v0.8h, v5.8b, v3.8b // D = A*B + ext v19.16b, v19.16b, v19.16b, #12 // t3 = t3 << 32 + ext v18.16b, v18.16b, v18.16b, #13 // t2 = t2 << 24 + eor v16.16b, v16.16b, v17.16b + eor v18.16b, v18.16b, v19.16b + eor v0.16b, v0.16b, v16.16b + eor v0.16b, v0.16b, v18.16b + eor v3.8b, v3.8b, v4.8b // Karatsuba pre-processing + ext v16.8b, v7.8b, v7.8b, #1 // A1 + pmull v16.8h, v16.8b, v3.8b // F = A1*B + ext v1.8b, v3.8b, v3.8b, #1 // B1 + pmull v1.8h, v7.8b, v1.8b // E = A*B1 + ext v17.8b, v7.8b, v7.8b, #2 // A2 + pmull v17.8h, v17.8b, v3.8b // H = A2*B + ext v19.8b, v3.8b, v3.8b, #2 // B2 + pmull v19.8h, v7.8b, v19.8b // G = A*B2 + ext v18.8b, v7.8b, v7.8b, #3 // A3 + eor v16.16b, v16.16b, v1.16b // L = E + F + pmull v18.8h, v18.8b, v3.8b // J = A3*B + ext v1.8b, v3.8b, v3.8b, #3 // B3 + eor v17.16b, v17.16b, v19.16b // M = G + H + pmull v1.8h, v7.8b, v1.8b // I = A*B3 + + // Here we diverge from the 32-bit version. It computes the following + // (instructions reordered for clarity): + // + // veor $t0#lo, $t0#lo, $t0#hi @ t0 = P0 + P1 (L) + // vand $t0#hi, $t0#hi, $k48 + // veor $t0#lo, $t0#lo, $t0#hi + // + // veor $t1#lo, $t1#lo, $t1#hi @ t1 = P2 + P3 (M) + // vand $t1#hi, $t1#hi, $k32 + // veor $t1#lo, $t1#lo, $t1#hi + // + // veor $t2#lo, $t2#lo, $t2#hi @ t2 = P4 + P5 (N) + // vand $t2#hi, $t2#hi, $k16 + // veor $t2#lo, $t2#lo, $t2#hi + // + // veor $t3#lo, $t3#lo, $t3#hi @ t3 = P6 + P7 (K) + // vmov.i64 $t3#hi, #0 + // + // $kN is a mask with the bottom N bits set. AArch64 cannot compute on + // upper halves of SIMD registers, so we must split each half into + // separate registers. To compensate, we pair computations up and + // parallelize. + + ext v19.8b, v3.8b, v3.8b, #4 // B4 + eor v18.16b, v18.16b, v1.16b // N = I + J + pmull v19.8h, v7.8b, v19.8b // K = A*B4 + + // This can probably be scheduled more efficiently. For now, we just + // pair up independent instructions. + zip1 v20.2d, v16.2d, v17.2d + zip1 v22.2d, v18.2d, v19.2d + zip2 v21.2d, v16.2d, v17.2d + zip2 v23.2d, v18.2d, v19.2d + eor v20.16b, v20.16b, v21.16b + eor v22.16b, v22.16b, v23.16b + and v21.16b, v21.16b, v24.16b + and v23.16b, v23.16b, v25.16b + eor v20.16b, v20.16b, v21.16b + eor v22.16b, v22.16b, v23.16b + zip1 v16.2d, v20.2d, v21.2d + zip1 v18.2d, v22.2d, v23.2d + zip2 v17.2d, v20.2d, v21.2d + zip2 v19.2d, v22.2d, v23.2d + + ext v16.16b, v16.16b, v16.16b, #15 // t0 = t0 << 8 + ext v17.16b, v17.16b, v17.16b, #14 // t1 = t1 << 16 + pmull v1.8h, v7.8b, v3.8b // D = A*B + ext v19.16b, v19.16b, v19.16b, #12 // t3 = t3 << 32 + ext v18.16b, v18.16b, v18.16b, #13 // t2 = t2 << 24 + eor v16.16b, v16.16b, v17.16b + eor v18.16b, v18.16b, v19.16b + eor v1.16b, v1.16b, v16.16b + eor v1.16b, v1.16b, v18.16b + ext v16.8b, v6.8b, v6.8b, #1 // A1 + pmull v16.8h, v16.8b, v4.8b // F = A1*B + ext v2.8b, v4.8b, v4.8b, #1 // B1 + pmull v2.8h, v6.8b, v2.8b // E = A*B1 + ext v17.8b, v6.8b, v6.8b, #2 // A2 + pmull v17.8h, v17.8b, v4.8b // H = A2*B + ext v19.8b, v4.8b, v4.8b, #2 // B2 + pmull v19.8h, v6.8b, v19.8b // G = A*B2 + ext v18.8b, v6.8b, v6.8b, #3 // A3 + eor v16.16b, v16.16b, v2.16b // L = E + F + pmull v18.8h, v18.8b, v4.8b // J = A3*B + ext v2.8b, v4.8b, v4.8b, #3 // B3 + eor v17.16b, v17.16b, v19.16b // M = G + H + pmull v2.8h, v6.8b, v2.8b // I = A*B3 + + // Here we diverge from the 32-bit version. It computes the following + // (instructions reordered for clarity): + // + // veor $t0#lo, $t0#lo, $t0#hi @ t0 = P0 + P1 (L) + // vand $t0#hi, $t0#hi, $k48 + // veor $t0#lo, $t0#lo, $t0#hi + // + // veor $t1#lo, $t1#lo, $t1#hi @ t1 = P2 + P3 (M) + // vand $t1#hi, $t1#hi, $k32 + // veor $t1#lo, $t1#lo, $t1#hi + // + // veor $t2#lo, $t2#lo, $t2#hi @ t2 = P4 + P5 (N) + // vand $t2#hi, $t2#hi, $k16 + // veor $t2#lo, $t2#lo, $t2#hi + // + // veor $t3#lo, $t3#lo, $t3#hi @ t3 = P6 + P7 (K) + // vmov.i64 $t3#hi, #0 + // + // $kN is a mask with the bottom N bits set. AArch64 cannot compute on + // upper halves of SIMD registers, so we must split each half into + // separate registers. To compensate, we pair computations up and + // parallelize. + + ext v19.8b, v4.8b, v4.8b, #4 // B4 + eor v18.16b, v18.16b, v2.16b // N = I + J + pmull v19.8h, v6.8b, v19.8b // K = A*B4 + + // This can probably be scheduled more efficiently. For now, we just + // pair up independent instructions. + zip1 v20.2d, v16.2d, v17.2d + zip1 v22.2d, v18.2d, v19.2d + zip2 v21.2d, v16.2d, v17.2d + zip2 v23.2d, v18.2d, v19.2d + eor v20.16b, v20.16b, v21.16b + eor v22.16b, v22.16b, v23.16b + and v21.16b, v21.16b, v24.16b + and v23.16b, v23.16b, v25.16b + eor v20.16b, v20.16b, v21.16b + eor v22.16b, v22.16b, v23.16b + zip1 v16.2d, v20.2d, v21.2d + zip1 v18.2d, v22.2d, v23.2d + zip2 v17.2d, v20.2d, v21.2d + zip2 v19.2d, v22.2d, v23.2d + + ext v16.16b, v16.16b, v16.16b, #15 // t0 = t0 << 8 + ext v17.16b, v17.16b, v17.16b, #14 // t1 = t1 << 16 + pmull v2.8h, v6.8b, v4.8b // D = A*B + ext v19.16b, v19.16b, v19.16b, #12 // t3 = t3 << 32 + ext v18.16b, v18.16b, v18.16b, #13 // t2 = t2 << 24 + eor v16.16b, v16.16b, v17.16b + eor v18.16b, v18.16b, v19.16b + eor v2.16b, v2.16b, v16.16b + eor v2.16b, v2.16b, v18.16b + ext v16.16b, v0.16b, v2.16b, #8 + eor v1.16b, v1.16b, v0.16b // Karatsuba post-processing + eor v1.16b, v1.16b, v2.16b + eor v1.16b, v1.16b, v16.16b // Xm overlaps Xh.lo and Xl.hi + ins v0.d[1], v1.d[0] // Xh|Xl - 256-bit result + // This is a no-op due to the ins instruction below. + // ins v2.d[0], v1.d[1] + + // equivalent of reduction_avx from ghash-x86_64.pl + shl v17.2d, v0.2d, #57 // 1st phase + shl v18.2d, v0.2d, #62 + eor v18.16b, v18.16b, v17.16b // + shl v17.2d, v0.2d, #63 + eor v18.16b, v18.16b, v17.16b // + // Note Xm contains {Xl.d[1], Xh.d[0]}. + eor v18.16b, v18.16b, v1.16b + ins v0.d[1], v18.d[0] // Xl.d[1] ^= t2.d[0] + ins v2.d[0], v18.d[1] // Xh.d[0] ^= t2.d[1] + + ushr v18.2d, v0.2d, #1 // 2nd phase + eor v2.16b, v2.16b,v0.16b + eor v0.16b, v0.16b,v18.16b // + ushr v18.2d, v18.2d, #6 + ushr v0.2d, v0.2d, #1 // + eor v0.16b, v0.16b, v2.16b // + eor v0.16b, v0.16b, v18.16b // + + subs x3, x3, #16 + bne Loop_neon + + rev64 v0.16b, v0.16b // byteswap Xi and write + ext v0.16b, v0.16b, v0.16b, #8 + st1 {v0.16b}, [x0] + + ret + + +.section .rodata +.align 4 +Lmasks: +.quad 0x0000ffffffffffff // k48 +.quad 0x00000000ffffffff // k32 +.quad 0x000000000000ffff // k16 +.quad 0x0000000000000000 // k0 +.byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,56,44,32,100,101,114,105,118,101,100,32,102,114,111,109,32,65,82,77,118,52,32,118,101,114,115,105,111,110,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.align 2 +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(_WIN32) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-ios32.S temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-ios32.S --- temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-ios32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-ios32.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,256 +0,0 @@ -// This file is generated from a similarly-named Perl script in the BoringSSL -// source tree. Do not edit by hand. - -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif - -#if !defined(OPENSSL_NO_ASM) -#include - -.text - -.code 32 -#undef __thumb2__ -.globl _GFp_gcm_init_clmul -.private_extern _GFp_gcm_init_clmul -#ifdef __thumb2__ -.thumb_func _GFp_gcm_init_clmul -#endif -.align 4 -_GFp_gcm_init_clmul: - AARCH64_VALID_CALL_TARGET - vld1.64 {q9},[r1] @ load input H - vmov.i8 q11,#0xe1 - vshl.i64 q11,q11,#57 @ 0xc2.0 - vext.8 q3,q9,q9,#8 - vshr.u64 q10,q11,#63 - vdup.32 q9,d18[1] - vext.8 q8,q10,q11,#8 @ t0=0xc2....01 - vshr.u64 q10,q3,#63 - vshr.s32 q9,q9,#31 @ broadcast carry bit - vand q10,q10,q8 - vshl.i64 q3,q3,#1 - vext.8 q10,q10,q10,#8 - vand q8,q8,q9 - vorr q3,q3,q10 @ H<<<=1 - veor q12,q3,q8 @ twisted H - vst1.64 {q12},[r0]! @ store Htable[0] - - @ calculate H^2 - vext.8 q8,q12,q12,#8 @ Karatsuba pre-processing -.byte 0xa8,0x0e,0xa8,0xf2 @ pmull q0,q12,q12 - veor q8,q8,q12 -.byte 0xa9,0x4e,0xa9,0xf2 @ pmull2 q2,q12,q12 -.byte 0xa0,0x2e,0xa0,0xf2 @ pmull q1,q8,q8 - - vext.8 q9,q0,q2,#8 @ Karatsuba post-processing - veor q10,q0,q2 - veor q1,q1,q9 - veor q1,q1,q10 -.byte 0x26,0x4e,0xe0,0xf2 @ pmull q10,q0,q11 @ 1st phase - - vmov d4,d3 @ Xh|Xm - 256-bit result - vmov d3,d0 @ Xm is rotated Xl - veor q0,q1,q10 - - vext.8 q10,q0,q0,#8 @ 2nd phase -.byte 0x26,0x0e,0xa0,0xf2 @ pmull q0,q0,q11 - veor q10,q10,q2 - veor q14,q0,q10 - - vext.8 q9,q14,q14,#8 @ Karatsuba pre-processing - veor q9,q9,q14 - vext.8 q13,q8,q9,#8 @ pack Karatsuba pre-processed - vst1.64 {q13,q14},[r0] @ store Htable[1..2] - - bx lr - -.globl _GFp_gcm_gmult_clmul -.private_extern _GFp_gcm_gmult_clmul -#ifdef __thumb2__ -.thumb_func _GFp_gcm_gmult_clmul -#endif -.align 4 -_GFp_gcm_gmult_clmul: - AARCH64_VALID_CALL_TARGET - vld1.64 {q9},[r0] @ load Xi - vmov.i8 q11,#0xe1 - vld1.64 {q12,q13},[r1] @ load twisted H, ... - vshl.u64 q11,q11,#57 -#ifndef __ARMEB__ - vrev64.8 q9,q9 -#endif - vext.8 q3,q9,q9,#8 - -.byte 0x86,0x0e,0xa8,0xf2 @ pmull q0,q12,q3 @ H.lo·Xi.lo - veor q9,q9,q3 @ Karatsuba pre-processing -.byte 0x87,0x4e,0xa9,0xf2 @ pmull2 q2,q12,q3 @ H.hi·Xi.hi -.byte 0xa2,0x2e,0xaa,0xf2 @ pmull q1,q13,q9 @ (H.lo+H.hi)·(Xi.lo+Xi.hi) - - vext.8 q9,q0,q2,#8 @ Karatsuba post-processing - veor q10,q0,q2 - veor q1,q1,q9 - veor q1,q1,q10 -.byte 0x26,0x4e,0xe0,0xf2 @ pmull q10,q0,q11 @ 1st phase of reduction - - vmov d4,d3 @ Xh|Xm - 256-bit result - vmov d3,d0 @ Xm is rotated Xl - veor q0,q1,q10 - - vext.8 q10,q0,q0,#8 @ 2nd phase of reduction -.byte 0x26,0x0e,0xa0,0xf2 @ pmull q0,q0,q11 - veor q10,q10,q2 - veor q0,q0,q10 - -#ifndef __ARMEB__ - vrev64.8 q0,q0 -#endif - vext.8 q0,q0,q0,#8 - vst1.64 {q0},[r0] @ write out Xi - - bx lr - -.globl _GFp_gcm_ghash_clmul -.private_extern _GFp_gcm_ghash_clmul -#ifdef __thumb2__ -.thumb_func _GFp_gcm_ghash_clmul -#endif -.align 4 -_GFp_gcm_ghash_clmul: - AARCH64_VALID_CALL_TARGET - vstmdb sp!,{d8,d9,d10,d11,d12,d13,d14,d15} @ 32-bit ABI says so - vld1.64 {q0},[r0] @ load [rotated] Xi - @ "[rotated]" means that - @ loaded value would have - @ to be rotated in order to - @ make it appear as in - @ algorithm specification - subs r3,r3,#32 @ see if r3 is 32 or larger - mov r12,#16 @ r12 is used as post- - @ increment for input pointer; - @ as loop is modulo-scheduled - @ r12 is zeroed just in time - @ to preclude overstepping - @ inp[len], which means that - @ last block[s] are actually - @ loaded twice, but last - @ copy is not processed - vld1.64 {q12,q13},[r1]! @ load twisted H, ..., H^2 - vmov.i8 q11,#0xe1 - vld1.64 {q14},[r1] - moveq r12,#0 @ is it time to zero r12? - vext.8 q0,q0,q0,#8 @ rotate Xi - vld1.64 {q8},[r2]! @ load [rotated] I[0] - vshl.u64 q11,q11,#57 @ compose 0xc2.0 constant -#ifndef __ARMEB__ - vrev64.8 q8,q8 - vrev64.8 q0,q0 -#endif - vext.8 q3,q8,q8,#8 @ rotate I[0] - blo Lodd_tail_v8 @ r3 was less than 32 - vld1.64 {q9},[r2],r12 @ load [rotated] I[1] -#ifndef __ARMEB__ - vrev64.8 q9,q9 -#endif - vext.8 q7,q9,q9,#8 - veor q3,q3,q0 @ I[i]^=Xi -.byte 0x8e,0x8e,0xa8,0xf2 @ pmull q4,q12,q7 @ H·Ii+1 - veor q9,q9,q7 @ Karatsuba pre-processing -.byte 0x8f,0xce,0xa9,0xf2 @ pmull2 q6,q12,q7 - b Loop_mod2x_v8 - -.align 4 -Loop_mod2x_v8: - vext.8 q10,q3,q3,#8 - subs r3,r3,#32 @ is there more data? -.byte 0x86,0x0e,0xac,0xf2 @ pmull q0,q14,q3 @ H^2.lo·Xi.lo - movlo r12,#0 @ is it time to zero r12? - -.byte 0xa2,0xae,0xaa,0xf2 @ pmull q5,q13,q9 - veor q10,q10,q3 @ Karatsuba pre-processing -.byte 0x87,0x4e,0xad,0xf2 @ pmull2 q2,q14,q3 @ H^2.hi·Xi.hi - veor q0,q0,q4 @ accumulate -.byte 0xa5,0x2e,0xab,0xf2 @ pmull2 q1,q13,q10 @ (H^2.lo+H^2.hi)·(Xi.lo+Xi.hi) - vld1.64 {q8},[r2],r12 @ load [rotated] I[i+2] - - veor q2,q2,q6 - moveq r12,#0 @ is it time to zero r12? - veor q1,q1,q5 - - vext.8 q9,q0,q2,#8 @ Karatsuba post-processing - veor q10,q0,q2 - veor q1,q1,q9 - vld1.64 {q9},[r2],r12 @ load [rotated] I[i+3] -#ifndef __ARMEB__ - vrev64.8 q8,q8 -#endif - veor q1,q1,q10 -.byte 0x26,0x4e,0xe0,0xf2 @ pmull q10,q0,q11 @ 1st phase of reduction - -#ifndef __ARMEB__ - vrev64.8 q9,q9 -#endif - vmov d4,d3 @ Xh|Xm - 256-bit result - vmov d3,d0 @ Xm is rotated Xl - vext.8 q7,q9,q9,#8 - vext.8 q3,q8,q8,#8 - veor q0,q1,q10 -.byte 0x8e,0x8e,0xa8,0xf2 @ pmull q4,q12,q7 @ H·Ii+1 - veor q3,q3,q2 @ accumulate q3 early - - vext.8 q10,q0,q0,#8 @ 2nd phase of reduction -.byte 0x26,0x0e,0xa0,0xf2 @ pmull q0,q0,q11 - veor q3,q3,q10 - veor q9,q9,q7 @ Karatsuba pre-processing - veor q3,q3,q0 -.byte 0x8f,0xce,0xa9,0xf2 @ pmull2 q6,q12,q7 - bhs Loop_mod2x_v8 @ there was at least 32 more bytes - - veor q2,q2,q10 - vext.8 q3,q8,q8,#8 @ re-construct q3 - adds r3,r3,#32 @ re-construct r3 - veor q0,q0,q2 @ re-construct q0 - beq Ldone_v8 @ is r3 zero? -Lodd_tail_v8: - vext.8 q10,q0,q0,#8 - veor q3,q3,q0 @ inp^=Xi - veor q9,q8,q10 @ q9 is rotated inp^Xi - -.byte 0x86,0x0e,0xa8,0xf2 @ pmull q0,q12,q3 @ H.lo·Xi.lo - veor q9,q9,q3 @ Karatsuba pre-processing -.byte 0x87,0x4e,0xa9,0xf2 @ pmull2 q2,q12,q3 @ H.hi·Xi.hi -.byte 0xa2,0x2e,0xaa,0xf2 @ pmull q1,q13,q9 @ (H.lo+H.hi)·(Xi.lo+Xi.hi) - - vext.8 q9,q0,q2,#8 @ Karatsuba post-processing - veor q10,q0,q2 - veor q1,q1,q9 - veor q1,q1,q10 -.byte 0x26,0x4e,0xe0,0xf2 @ pmull q10,q0,q11 @ 1st phase of reduction - - vmov d4,d3 @ Xh|Xm - 256-bit result - vmov d3,d0 @ Xm is rotated Xl - veor q0,q1,q10 - - vext.8 q10,q0,q0,#8 @ 2nd phase of reduction -.byte 0x26,0x0e,0xa0,0xf2 @ pmull q0,q0,q11 - veor q10,q10,q2 - veor q0,q0,q10 - -Ldone_v8: -#ifndef __ARMEB__ - vrev64.8 q0,q0 -#endif - vext.8 q0,q0,q0,#8 - vst1.64 {q0},[r0] @ write out Xi - - vldmia sp!,{d8,d9,d10,d11,d12,d13,d14,d15} @ 32-bit ABI says so - bx lr - -.byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.align 2 -.align 2 -#endif // !OPENSSL_NO_ASM diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-ios64.S temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-ios64.S --- temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-ios64.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-ios64.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,23 +1,19 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#include +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__APPLE__) +#include +#if __ARM_MAX_ARCH__>=7 .text -.globl _GFp_gcm_init_clmul -.private_extern _GFp_gcm_init_clmul +.globl _gcm_init_clmul +.private_extern _gcm_init_clmul .align 4 -_GFp_gcm_init_clmul: +_gcm_init_clmul: AARCH64_VALID_CALL_TARGET ld1 {v17.2d},[x1] //load input H movi v19.16b,#0xe1 @@ -61,21 +57,61 @@ ext v17.16b,v22.16b,v22.16b,#8 //Karatsuba pre-processing eor v17.16b,v17.16b,v22.16b ext v21.16b,v16.16b,v17.16b,#8 //pack Karatsuba pre-processed - st1 {v21.2d,v22.2d},[x0] //store Htable[1..2] + st1 {v21.2d,v22.2d},[x0],#32 //store Htable[1..2] + //calculate H^3 and H^4 + pmull v0.1q,v20.1d, v22.1d + pmull v5.1q,v22.1d,v22.1d + pmull2 v2.1q,v20.2d, v22.2d + pmull2 v7.1q,v22.2d,v22.2d + pmull v1.1q,v16.1d,v17.1d + pmull v6.1q,v17.1d,v17.1d + + ext v16.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + ext v17.16b,v5.16b,v7.16b,#8 + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v16.16b + eor v4.16b,v5.16b,v7.16b + eor v6.16b,v6.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase + eor v6.16b,v6.16b,v4.16b + pmull v4.1q,v5.1d,v19.1d + + ins v2.d[0],v1.d[1] + ins v7.d[0],v6.d[1] + ins v1.d[1],v0.d[0] + ins v6.d[1],v5.d[0] + eor v0.16b,v1.16b,v18.16b + eor v5.16b,v6.16b,v4.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase + ext v4.16b,v5.16b,v5.16b,#8 + pmull v0.1q,v0.1d,v19.1d + pmull v5.1q,v5.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v4.16b,v4.16b,v7.16b + eor v20.16b, v0.16b,v18.16b //H^3 + eor v22.16b,v5.16b,v4.16b //H^4 + ext v16.16b,v20.16b, v20.16b,#8 //Karatsuba pre-processing + ext v17.16b,v22.16b,v22.16b,#8 + eor v16.16b,v16.16b,v20.16b + eor v17.16b,v17.16b,v22.16b + ext v21.16b,v16.16b,v17.16b,#8 //pack Karatsuba pre-processed + st1 {v20.2d,v21.2d,v22.2d},[x0] //store Htable[3..5] ret -.globl _GFp_gcm_gmult_clmul -.private_extern _GFp_gcm_gmult_clmul +.globl _gcm_gmult_clmul +.private_extern _gcm_gmult_clmul .align 4 -_GFp_gcm_gmult_clmul: +_gcm_gmult_clmul: AARCH64_VALID_CALL_TARGET ld1 {v17.2d},[x0] //load Xi movi v19.16b,#0xe1 ld1 {v20.2d,v21.2d},[x1] //load twisted H, ... shl v19.2d,v19.2d,#57 -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev64 v17.16b,v17.16b #endif ext v3.16b,v17.16b,v17.16b,#8 @@ -100,7 +136,7 @@ eor v18.16b,v18.16b,v2.16b eor v0.16b,v0.16b,v18.16b -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev64 v0.16b,v0.16b #endif ext v0.16b,v0.16b,v0.16b,#8 @@ -108,12 +144,14 @@ ret -.globl _GFp_gcm_ghash_clmul -.private_extern _GFp_gcm_ghash_clmul +.globl _gcm_ghash_clmul +.private_extern _gcm_ghash_clmul .align 4 -_GFp_gcm_ghash_clmul: +_gcm_ghash_clmul: AARCH64_VALID_CALL_TARGET + cmp x3,#64 + b.hs Lgcm_ghash_v8_4x ld1 {v0.2d},[x0] //load [rotated] Xi //"[rotated]" means that //loaded value would have @@ -137,14 +175,14 @@ ext v0.16b,v0.16b,v0.16b,#8 //rotate Xi ld1 {v16.2d},[x2],#16 //load [rotated] I[0] shl v19.2d,v19.2d,#57 //compose 0xc2.0 constant -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev64 v16.16b,v16.16b rev64 v0.16b,v0.16b #endif ext v3.16b,v16.16b,v16.16b,#8 //rotate I[0] b.lo Lodd_tail_v8 //x3 was less than 32 ld1 {v17.2d},[x2],x12 //load [rotated] I[1] -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev64 v17.16b,v17.16b #endif ext v7.16b,v17.16b,v17.16b,#8 @@ -176,13 +214,13 @@ eor v18.16b,v0.16b,v2.16b eor v1.16b,v1.16b,v17.16b ld1 {v17.2d},[x2],x12 //load [rotated] I[i+3] -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev64 v16.16b,v16.16b #endif eor v1.16b,v1.16b,v18.16b pmull v18.1q,v0.1d,v19.1d //1st phase of reduction -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev64 v17.16b,v17.16b #endif ins v2.d[0],v1.d[1] @@ -232,10 +270,290 @@ eor v0.16b,v0.16b,v18.16b Ldone_v8: -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ + rev64 v0.16b,v0.16b +#endif + ext v0.16b,v0.16b,v0.16b,#8 + st1 {v0.2d},[x0] //write out Xi + + ret + + +.align 4 +gcm_ghash_v8_4x: +Lgcm_ghash_v8_4x: + ld1 {v0.2d},[x0] //load [rotated] Xi + ld1 {v20.2d,v21.2d,v22.2d},[x1],#48 //load twisted H, ..., H^2 + movi v19.16b,#0xe1 + ld1 {v26.2d,v27.2d,v28.2d},[x1] //load twisted H^3, ..., H^4 + shl v19.2d,v19.2d,#57 //compose 0xc2.0 constant + + ld1 {v4.2d,v5.2d,v6.2d,v7.2d},[x2],#64 +#ifndef __AARCH64EB__ rev64 v0.16b,v0.16b + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v7.16b,v7.16b + rev64 v4.16b,v4.16b +#endif + ext v25.16b,v7.16b,v7.16b,#8 + ext v24.16b,v6.16b,v6.16b,#8 + ext v23.16b,v5.16b,v5.16b,#8 + + pmull v29.1q,v20.1d,v25.1d //H·Ii+3 + eor v7.16b,v7.16b,v25.16b + pmull2 v31.1q,v20.2d,v25.2d + pmull v30.1q,v21.1d,v7.1d + + pmull v16.1q,v22.1d,v24.1d //H^2·Ii+2 + eor v6.16b,v6.16b,v24.16b + pmull2 v24.1q,v22.2d,v24.2d + pmull2 v6.1q,v21.2d,v6.2d + + eor v29.16b,v29.16b,v16.16b + eor v31.16b,v31.16b,v24.16b + eor v30.16b,v30.16b,v6.16b + + pmull v7.1q,v26.1d,v23.1d //H^3·Ii+1 + eor v5.16b,v5.16b,v23.16b + pmull2 v23.1q,v26.2d,v23.2d + pmull v5.1q,v27.1d,v5.1d + + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + eor v30.16b,v30.16b,v5.16b + + subs x3,x3,#128 + b.lo Ltail4x + + b Loop4x + +.align 4 +Loop4x: + eor v16.16b,v4.16b,v0.16b + ld1 {v4.2d,v5.2d,v6.2d,v7.2d},[x2],#64 + ext v3.16b,v16.16b,v16.16b,#8 +#ifndef __AARCH64EB__ + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v7.16b,v7.16b + rev64 v4.16b,v4.16b +#endif + + pmull v0.1q,v28.1d,v3.1d //H^4·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v28.2d,v3.2d + ext v25.16b,v7.16b,v7.16b,#8 + pmull2 v1.1q,v27.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + ext v24.16b,v6.16b,v6.16b,#8 + eor v1.16b,v1.16b,v30.16b + ext v23.16b,v5.16b,v5.16b,#8 + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + pmull v29.1q,v20.1d,v25.1d //H·Ii+3 + eor v7.16b,v7.16b,v25.16b + eor v1.16b,v1.16b,v17.16b + pmull2 v31.1q,v20.2d,v25.2d + eor v1.16b,v1.16b,v18.16b + pmull v30.1q,v21.1d,v7.1d + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + pmull v16.1q,v22.1d,v24.1d //H^2·Ii+2 + eor v6.16b,v6.16b,v24.16b + pmull2 v24.1q,v22.2d,v24.2d + eor v0.16b,v1.16b,v18.16b + pmull2 v6.1q,v21.2d,v6.2d + + eor v29.16b,v29.16b,v16.16b + eor v31.16b,v31.16b,v24.16b + eor v30.16b,v30.16b,v6.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + pmull v7.1q,v26.1d,v23.1d //H^3·Ii+1 + eor v5.16b,v5.16b,v23.16b + eor v18.16b,v18.16b,v2.16b + pmull2 v23.1q,v26.2d,v23.2d + pmull v5.1q,v27.1d,v5.1d + + eor v0.16b,v0.16b,v18.16b + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + ext v0.16b,v0.16b,v0.16b,#8 + eor v30.16b,v30.16b,v5.16b + + subs x3,x3,#64 + b.hs Loop4x + +Ltail4x: + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull v0.1q,v28.1d,v3.1d //H^4·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v28.2d,v3.2d + pmull2 v1.1q,v27.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + + adds x3,x3,#64 + b.eq Ldone4x + + cmp x3,#32 + b.lo Lone + b.eq Ltwo +Lthree: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d,v5.2d,v6.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __AARCH64EB__ + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v24.16b,v6.16b,v6.16b,#8 + ext v23.16b,v5.16b,v5.16b,#8 + eor v0.16b,v1.16b,v18.16b + + pmull v29.1q,v20.1d,v24.1d //H·Ii+2 + eor v6.16b,v6.16b,v24.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + pmull2 v31.1q,v20.2d,v24.2d + pmull v30.1q,v21.1d,v6.1d + eor v0.16b,v0.16b,v18.16b + pmull v7.1q,v22.1d,v23.1d //H^2·Ii+1 + eor v5.16b,v5.16b,v23.16b + ext v0.16b,v0.16b,v0.16b,#8 + + pmull2 v23.1q,v22.2d,v23.2d + eor v16.16b,v4.16b,v0.16b + pmull2 v5.1q,v21.2d,v5.2d + ext v3.16b,v16.16b,v16.16b,#8 + + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + eor v30.16b,v30.16b,v5.16b + + pmull v0.1q,v26.1d,v3.1d //H^3·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v26.2d,v3.2d + pmull v1.1q,v27.1d,v16.1d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + b Ldone4x + +.align 4 +Ltwo: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d,v5.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __AARCH64EB__ + rev64 v5.16b,v5.16b + rev64 v4.16b,v4.16b #endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v23.16b,v5.16b,v5.16b,#8 + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b ext v0.16b,v0.16b,v0.16b,#8 + + pmull v29.1q,v20.1d,v23.1d //H·Ii+1 + eor v5.16b,v5.16b,v23.16b + + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull2 v31.1q,v20.2d,v23.2d + pmull v30.1q,v21.1d,v5.1d + + pmull v0.1q,v22.1d,v3.1d //H^2·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v22.2d,v3.2d + pmull2 v1.1q,v21.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + b Ldone4x + +.align 4 +Lone: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __AARCH64EB__ + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull v0.1q,v20.1d,v3.1d + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v20.2d,v3.2d + pmull v1.1q,v21.1d,v16.1d + +Ldone4x: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + +#ifndef __AARCH64EB__ + rev64 v0.16b,v0.16b +#endif st1 {v0.2d},[x0] //write out Xi ret @@ -243,4 +561,5 @@ .byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 2 .align 2 -#endif // !OPENSSL_NO_ASM +#endif +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__APPLE__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-linux32.S temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-linux32.S --- temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-linux32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-linux32.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,26 +1,21 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#if defined(__arm__) -#include +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_ARM) && defined(__ELF__) +#include +#if __ARM_MAX_ARCH__>=7 .text .fpu neon .code 32 #undef __thumb2__ -.globl GFp_gcm_init_clmul -.hidden GFp_gcm_init_clmul -.type GFp_gcm_init_clmul,%function +.globl gcm_init_clmul +.hidden gcm_init_clmul +.type gcm_init_clmul,%function .align 4 -GFp_gcm_init_clmul: +gcm_init_clmul: AARCH64_VALID_CALL_TARGET vld1.64 {q9},[r1] @ load input H vmov.i8 q11,#0xe1 @@ -64,15 +59,14 @@ vext.8 q9,q14,q14,#8 @ Karatsuba pre-processing veor q9,q9,q14 vext.8 q13,q8,q9,#8 @ pack Karatsuba pre-processed - vst1.64 {q13,q14},[r0] @ store Htable[1..2] - + vst1.64 {q13,q14},[r0]! @ store Htable[1..2] bx lr -.size GFp_gcm_init_clmul,.-GFp_gcm_init_clmul -.globl GFp_gcm_gmult_clmul -.hidden GFp_gcm_gmult_clmul -.type GFp_gcm_gmult_clmul,%function +.size gcm_init_clmul,.-gcm_init_clmul +.globl gcm_gmult_clmul +.hidden gcm_gmult_clmul +.type gcm_gmult_clmul,%function .align 4 -GFp_gcm_gmult_clmul: +gcm_gmult_clmul: AARCH64_VALID_CALL_TARGET vld1.64 {q9},[r0] @ load Xi vmov.i8 q11,#0xe1 @@ -110,12 +104,12 @@ vst1.64 {q0},[r0] @ write out Xi bx lr -.size GFp_gcm_gmult_clmul,.-GFp_gcm_gmult_clmul -.globl GFp_gcm_ghash_clmul -.hidden GFp_gcm_ghash_clmul -.type GFp_gcm_ghash_clmul,%function +.size gcm_gmult_clmul,.-gcm_gmult_clmul +.globl gcm_ghash_clmul +.hidden gcm_ghash_clmul +.type gcm_ghash_clmul,%function .align 4 -GFp_gcm_ghash_clmul: +gcm_ghash_clmul: AARCH64_VALID_CALL_TARGET vstmdb sp!,{d8,d9,d10,d11,d12,d13,d14,d15} @ 32-bit ABI says so vld1.64 {q0},[r0] @ load [rotated] Xi @@ -244,10 +238,9 @@ vldmia sp!,{d8,d9,d10,d11,d12,d13,d14,d15} @ 32-bit ABI says so bx lr -.size GFp_gcm_ghash_clmul,.-GFp_gcm_ghash_clmul +.size gcm_ghash_clmul,.-gcm_ghash_clmul .byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 2 .align 2 #endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_ARM) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-linux64.S temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-linux64.S --- temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-linux64.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-linux64.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,24 +1,19 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#if defined(__aarch64__) -#include +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__ELF__) +#include +#if __ARM_MAX_ARCH__>=7 .text .arch armv8-a+crypto -.globl GFp_gcm_init_clmul -.hidden GFp_gcm_init_clmul -.type GFp_gcm_init_clmul,%function +.globl gcm_init_clmul +.hidden gcm_init_clmul +.type gcm_init_clmul,%function .align 4 -GFp_gcm_init_clmul: +gcm_init_clmul: AARCH64_VALID_CALL_TARGET ld1 {v17.2d},[x1] //load input H movi v19.16b,#0xe1 @@ -62,21 +57,61 @@ ext v17.16b,v22.16b,v22.16b,#8 //Karatsuba pre-processing eor v17.16b,v17.16b,v22.16b ext v21.16b,v16.16b,v17.16b,#8 //pack Karatsuba pre-processed - st1 {v21.2d,v22.2d},[x0] //store Htable[1..2] + st1 {v21.2d,v22.2d},[x0],#32 //store Htable[1..2] + //calculate H^3 and H^4 + pmull v0.1q,v20.1d, v22.1d + pmull v5.1q,v22.1d,v22.1d + pmull2 v2.1q,v20.2d, v22.2d + pmull2 v7.1q,v22.2d,v22.2d + pmull v1.1q,v16.1d,v17.1d + pmull v6.1q,v17.1d,v17.1d + + ext v16.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + ext v17.16b,v5.16b,v7.16b,#8 + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v16.16b + eor v4.16b,v5.16b,v7.16b + eor v6.16b,v6.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase + eor v6.16b,v6.16b,v4.16b + pmull v4.1q,v5.1d,v19.1d + + ins v2.d[0],v1.d[1] + ins v7.d[0],v6.d[1] + ins v1.d[1],v0.d[0] + ins v6.d[1],v5.d[0] + eor v0.16b,v1.16b,v18.16b + eor v5.16b,v6.16b,v4.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase + ext v4.16b,v5.16b,v5.16b,#8 + pmull v0.1q,v0.1d,v19.1d + pmull v5.1q,v5.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v4.16b,v4.16b,v7.16b + eor v20.16b, v0.16b,v18.16b //H^3 + eor v22.16b,v5.16b,v4.16b //H^4 + ext v16.16b,v20.16b, v20.16b,#8 //Karatsuba pre-processing + ext v17.16b,v22.16b,v22.16b,#8 + eor v16.16b,v16.16b,v20.16b + eor v17.16b,v17.16b,v22.16b + ext v21.16b,v16.16b,v17.16b,#8 //pack Karatsuba pre-processed + st1 {v20.2d,v21.2d,v22.2d},[x0] //store Htable[3..5] ret -.size GFp_gcm_init_clmul,.-GFp_gcm_init_clmul -.globl GFp_gcm_gmult_clmul -.hidden GFp_gcm_gmult_clmul -.type GFp_gcm_gmult_clmul,%function +.size gcm_init_clmul,.-gcm_init_clmul +.globl gcm_gmult_clmul +.hidden gcm_gmult_clmul +.type gcm_gmult_clmul,%function .align 4 -GFp_gcm_gmult_clmul: +gcm_gmult_clmul: AARCH64_VALID_CALL_TARGET ld1 {v17.2d},[x0] //load Xi movi v19.16b,#0xe1 ld1 {v20.2d,v21.2d},[x1] //load twisted H, ... shl v19.2d,v19.2d,#57 -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev64 v17.16b,v17.16b #endif ext v3.16b,v17.16b,v17.16b,#8 @@ -101,20 +136,22 @@ eor v18.16b,v18.16b,v2.16b eor v0.16b,v0.16b,v18.16b -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev64 v0.16b,v0.16b #endif ext v0.16b,v0.16b,v0.16b,#8 st1 {v0.2d},[x0] //write out Xi ret -.size GFp_gcm_gmult_clmul,.-GFp_gcm_gmult_clmul -.globl GFp_gcm_ghash_clmul -.hidden GFp_gcm_ghash_clmul -.type GFp_gcm_ghash_clmul,%function +.size gcm_gmult_clmul,.-gcm_gmult_clmul +.globl gcm_ghash_clmul +.hidden gcm_ghash_clmul +.type gcm_ghash_clmul,%function .align 4 -GFp_gcm_ghash_clmul: +gcm_ghash_clmul: AARCH64_VALID_CALL_TARGET + cmp x3,#64 + b.hs .Lgcm_ghash_v8_4x ld1 {v0.2d},[x0] //load [rotated] Xi //"[rotated]" means that //loaded value would have @@ -138,14 +175,14 @@ ext v0.16b,v0.16b,v0.16b,#8 //rotate Xi ld1 {v16.2d},[x2],#16 //load [rotated] I[0] shl v19.2d,v19.2d,#57 //compose 0xc2.0 constant -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev64 v16.16b,v16.16b rev64 v0.16b,v0.16b #endif ext v3.16b,v16.16b,v16.16b,#8 //rotate I[0] b.lo .Lodd_tail_v8 //x3 was less than 32 ld1 {v17.2d},[x2],x12 //load [rotated] I[1] -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev64 v17.16b,v17.16b #endif ext v7.16b,v17.16b,v17.16b,#8 @@ -177,13 +214,13 @@ eor v18.16b,v0.16b,v2.16b eor v1.16b,v1.16b,v17.16b ld1 {v17.2d},[x2],x12 //load [rotated] I[i+3] -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev64 v16.16b,v16.16b #endif eor v1.16b,v1.16b,v18.16b pmull v18.1q,v0.1d,v19.1d //1st phase of reduction -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev64 v17.16b,v17.16b #endif ins v2.d[0],v1.d[1] @@ -233,17 +270,296 @@ eor v0.16b,v0.16b,v18.16b .Ldone_v8: -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev64 v0.16b,v0.16b #endif ext v0.16b,v0.16b,v0.16b,#8 st1 {v0.2d},[x0] //write out Xi ret -.size GFp_gcm_ghash_clmul,.-GFp_gcm_ghash_clmul +.size gcm_ghash_clmul,.-gcm_ghash_clmul +.type gcm_ghash_v8_4x,%function +.align 4 +gcm_ghash_v8_4x: +.Lgcm_ghash_v8_4x: + ld1 {v0.2d},[x0] //load [rotated] Xi + ld1 {v20.2d,v21.2d,v22.2d},[x1],#48 //load twisted H, ..., H^2 + movi v19.16b,#0xe1 + ld1 {v26.2d,v27.2d,v28.2d},[x1] //load twisted H^3, ..., H^4 + shl v19.2d,v19.2d,#57 //compose 0xc2.0 constant + + ld1 {v4.2d,v5.2d,v6.2d,v7.2d},[x2],#64 +#ifndef __AARCH64EB__ + rev64 v0.16b,v0.16b + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v7.16b,v7.16b + rev64 v4.16b,v4.16b +#endif + ext v25.16b,v7.16b,v7.16b,#8 + ext v24.16b,v6.16b,v6.16b,#8 + ext v23.16b,v5.16b,v5.16b,#8 + + pmull v29.1q,v20.1d,v25.1d //H·Ii+3 + eor v7.16b,v7.16b,v25.16b + pmull2 v31.1q,v20.2d,v25.2d + pmull v30.1q,v21.1d,v7.1d + + pmull v16.1q,v22.1d,v24.1d //H^2·Ii+2 + eor v6.16b,v6.16b,v24.16b + pmull2 v24.1q,v22.2d,v24.2d + pmull2 v6.1q,v21.2d,v6.2d + + eor v29.16b,v29.16b,v16.16b + eor v31.16b,v31.16b,v24.16b + eor v30.16b,v30.16b,v6.16b + + pmull v7.1q,v26.1d,v23.1d //H^3·Ii+1 + eor v5.16b,v5.16b,v23.16b + pmull2 v23.1q,v26.2d,v23.2d + pmull v5.1q,v27.1d,v5.1d + + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + eor v30.16b,v30.16b,v5.16b + + subs x3,x3,#128 + b.lo .Ltail4x + + b .Loop4x + +.align 4 +.Loop4x: + eor v16.16b,v4.16b,v0.16b + ld1 {v4.2d,v5.2d,v6.2d,v7.2d},[x2],#64 + ext v3.16b,v16.16b,v16.16b,#8 +#ifndef __AARCH64EB__ + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v7.16b,v7.16b + rev64 v4.16b,v4.16b +#endif + + pmull v0.1q,v28.1d,v3.1d //H^4·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v28.2d,v3.2d + ext v25.16b,v7.16b,v7.16b,#8 + pmull2 v1.1q,v27.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + ext v24.16b,v6.16b,v6.16b,#8 + eor v1.16b,v1.16b,v30.16b + ext v23.16b,v5.16b,v5.16b,#8 + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + pmull v29.1q,v20.1d,v25.1d //H·Ii+3 + eor v7.16b,v7.16b,v25.16b + eor v1.16b,v1.16b,v17.16b + pmull2 v31.1q,v20.2d,v25.2d + eor v1.16b,v1.16b,v18.16b + pmull v30.1q,v21.1d,v7.1d + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + pmull v16.1q,v22.1d,v24.1d //H^2·Ii+2 + eor v6.16b,v6.16b,v24.16b + pmull2 v24.1q,v22.2d,v24.2d + eor v0.16b,v1.16b,v18.16b + pmull2 v6.1q,v21.2d,v6.2d + + eor v29.16b,v29.16b,v16.16b + eor v31.16b,v31.16b,v24.16b + eor v30.16b,v30.16b,v6.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + pmull v7.1q,v26.1d,v23.1d //H^3·Ii+1 + eor v5.16b,v5.16b,v23.16b + eor v18.16b,v18.16b,v2.16b + pmull2 v23.1q,v26.2d,v23.2d + pmull v5.1q,v27.1d,v5.1d + + eor v0.16b,v0.16b,v18.16b + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + ext v0.16b,v0.16b,v0.16b,#8 + eor v30.16b,v30.16b,v5.16b + + subs x3,x3,#64 + b.hs .Loop4x + +.Ltail4x: + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull v0.1q,v28.1d,v3.1d //H^4·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v28.2d,v3.2d + pmull2 v1.1q,v27.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + + adds x3,x3,#64 + b.eq .Ldone4x + + cmp x3,#32 + b.lo .Lone + b.eq .Ltwo +.Lthree: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d,v5.2d,v6.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __AARCH64EB__ + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v24.16b,v6.16b,v6.16b,#8 + ext v23.16b,v5.16b,v5.16b,#8 + eor v0.16b,v1.16b,v18.16b + + pmull v29.1q,v20.1d,v24.1d //H·Ii+2 + eor v6.16b,v6.16b,v24.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + pmull2 v31.1q,v20.2d,v24.2d + pmull v30.1q,v21.1d,v6.1d + eor v0.16b,v0.16b,v18.16b + pmull v7.1q,v22.1d,v23.1d //H^2·Ii+1 + eor v5.16b,v5.16b,v23.16b + ext v0.16b,v0.16b,v0.16b,#8 + + pmull2 v23.1q,v22.2d,v23.2d + eor v16.16b,v4.16b,v0.16b + pmull2 v5.1q,v21.2d,v5.2d + ext v3.16b,v16.16b,v16.16b,#8 + + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + eor v30.16b,v30.16b,v5.16b + + pmull v0.1q,v26.1d,v3.1d //H^3·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v26.2d,v3.2d + pmull v1.1q,v27.1d,v16.1d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + b .Ldone4x + +.align 4 +.Ltwo: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d,v5.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __AARCH64EB__ + rev64 v5.16b,v5.16b + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v23.16b,v5.16b,v5.16b,#8 + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + + pmull v29.1q,v20.1d,v23.1d //H·Ii+1 + eor v5.16b,v5.16b,v23.16b + + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull2 v31.1q,v20.2d,v23.2d + pmull v30.1q,v21.1d,v5.1d + + pmull v0.1q,v22.1d,v3.1d //H^2·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v22.2d,v3.2d + pmull2 v1.1q,v21.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + b .Ldone4x + +.align 4 +.Lone: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __AARCH64EB__ + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull v0.1q,v20.1d,v3.1d + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v20.2d,v3.2d + pmull v1.1q,v21.1d,v16.1d + +.Ldone4x: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + +#ifndef __AARCH64EB__ + rev64 v0.16b,v0.16b +#endif + st1 {v0.2d},[x0] //write out Xi + + ret +.size gcm_ghash_v8_4x,.-gcm_ghash_v8_4x .byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 2 .align 2 #endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-win64.S temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-win64.S --- temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-win64.S 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ghashv8-armx-win64.S 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,573 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. + +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(_WIN32) +#include + +#if __ARM_MAX_ARCH__>=7 +.text +.arch armv8-a+crypto +.globl gcm_init_clmul + +.def gcm_init_clmul + .type 32 +.endef +.align 4 +gcm_init_clmul: + AARCH64_VALID_CALL_TARGET + ld1 {v17.2d},[x1] //load input H + movi v19.16b,#0xe1 + shl v19.2d,v19.2d,#57 //0xc2.0 + ext v3.16b,v17.16b,v17.16b,#8 + ushr v18.2d,v19.2d,#63 + dup v17.4s,v17.s[1] + ext v16.16b,v18.16b,v19.16b,#8 //t0=0xc2....01 + ushr v18.2d,v3.2d,#63 + sshr v17.4s,v17.4s,#31 //broadcast carry bit + and v18.16b,v18.16b,v16.16b + shl v3.2d,v3.2d,#1 + ext v18.16b,v18.16b,v18.16b,#8 + and v16.16b,v16.16b,v17.16b + orr v3.16b,v3.16b,v18.16b //H<<<=1 + eor v20.16b,v3.16b,v16.16b //twisted H + st1 {v20.2d},[x0],#16 //store Htable[0] + + //calculate H^2 + ext v16.16b,v20.16b,v20.16b,#8 //Karatsuba pre-processing + pmull v0.1q,v20.1d,v20.1d + eor v16.16b,v16.16b,v20.16b + pmull2 v2.1q,v20.2d,v20.2d + pmull v1.1q,v16.1d,v16.1d + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase + + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v22.16b,v0.16b,v18.16b + + ext v17.16b,v22.16b,v22.16b,#8 //Karatsuba pre-processing + eor v17.16b,v17.16b,v22.16b + ext v21.16b,v16.16b,v17.16b,#8 //pack Karatsuba pre-processed + st1 {v21.2d,v22.2d},[x0],#32 //store Htable[1..2] + //calculate H^3 and H^4 + pmull v0.1q,v20.1d, v22.1d + pmull v5.1q,v22.1d,v22.1d + pmull2 v2.1q,v20.2d, v22.2d + pmull2 v7.1q,v22.2d,v22.2d + pmull v1.1q,v16.1d,v17.1d + pmull v6.1q,v17.1d,v17.1d + + ext v16.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + ext v17.16b,v5.16b,v7.16b,#8 + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v16.16b + eor v4.16b,v5.16b,v7.16b + eor v6.16b,v6.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase + eor v6.16b,v6.16b,v4.16b + pmull v4.1q,v5.1d,v19.1d + + ins v2.d[0],v1.d[1] + ins v7.d[0],v6.d[1] + ins v1.d[1],v0.d[0] + ins v6.d[1],v5.d[0] + eor v0.16b,v1.16b,v18.16b + eor v5.16b,v6.16b,v4.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase + ext v4.16b,v5.16b,v5.16b,#8 + pmull v0.1q,v0.1d,v19.1d + pmull v5.1q,v5.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v4.16b,v4.16b,v7.16b + eor v20.16b, v0.16b,v18.16b //H^3 + eor v22.16b,v5.16b,v4.16b //H^4 + + ext v16.16b,v20.16b, v20.16b,#8 //Karatsuba pre-processing + ext v17.16b,v22.16b,v22.16b,#8 + eor v16.16b,v16.16b,v20.16b + eor v17.16b,v17.16b,v22.16b + ext v21.16b,v16.16b,v17.16b,#8 //pack Karatsuba pre-processed + st1 {v20.2d,v21.2d,v22.2d},[x0] //store Htable[3..5] + ret + +.globl gcm_gmult_clmul + +.def gcm_gmult_clmul + .type 32 +.endef +.align 4 +gcm_gmult_clmul: + AARCH64_VALID_CALL_TARGET + ld1 {v17.2d},[x0] //load Xi + movi v19.16b,#0xe1 + ld1 {v20.2d,v21.2d},[x1] //load twisted H, ... + shl v19.2d,v19.2d,#57 +#ifndef __AARCH64EB__ + rev64 v17.16b,v17.16b +#endif + ext v3.16b,v17.16b,v17.16b,#8 + + pmull v0.1q,v20.1d,v3.1d //H.lo·Xi.lo + eor v17.16b,v17.16b,v3.16b //Karatsuba pre-processing + pmull2 v2.1q,v20.2d,v3.2d //H.hi·Xi.hi + pmull v1.1q,v21.1d,v17.1d //(H.lo+H.hi)·(Xi.lo+Xi.hi) + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + +#ifndef __AARCH64EB__ + rev64 v0.16b,v0.16b +#endif + ext v0.16b,v0.16b,v0.16b,#8 + st1 {v0.2d},[x0] //write out Xi + + ret + +.globl gcm_ghash_clmul + +.def gcm_ghash_clmul + .type 32 +.endef +.align 4 +gcm_ghash_clmul: + AARCH64_VALID_CALL_TARGET + cmp x3,#64 + b.hs Lgcm_ghash_v8_4x + ld1 {v0.2d},[x0] //load [rotated] Xi + //"[rotated]" means that + //loaded value would have + //to be rotated in order to + //make it appear as in + //algorithm specification + subs x3,x3,#32 //see if x3 is 32 or larger + mov x12,#16 //x12 is used as post- + //increment for input pointer; + //as loop is modulo-scheduled + //x12 is zeroed just in time + //to preclude overstepping + //inp[len], which means that + //last block[s] are actually + //loaded twice, but last + //copy is not processed + ld1 {v20.2d,v21.2d},[x1],#32 //load twisted H, ..., H^2 + movi v19.16b,#0xe1 + ld1 {v22.2d},[x1] + csel x12,xzr,x12,eq //is it time to zero x12? + ext v0.16b,v0.16b,v0.16b,#8 //rotate Xi + ld1 {v16.2d},[x2],#16 //load [rotated] I[0] + shl v19.2d,v19.2d,#57 //compose 0xc2.0 constant +#ifndef __AARCH64EB__ + rev64 v16.16b,v16.16b + rev64 v0.16b,v0.16b +#endif + ext v3.16b,v16.16b,v16.16b,#8 //rotate I[0] + b.lo Lodd_tail_v8 //x3 was less than 32 + ld1 {v17.2d},[x2],x12 //load [rotated] I[1] +#ifndef __AARCH64EB__ + rev64 v17.16b,v17.16b +#endif + ext v7.16b,v17.16b,v17.16b,#8 + eor v3.16b,v3.16b,v0.16b //I[i]^=Xi + pmull v4.1q,v20.1d,v7.1d //H·Ii+1 + eor v17.16b,v17.16b,v7.16b //Karatsuba pre-processing + pmull2 v6.1q,v20.2d,v7.2d + b Loop_mod2x_v8 + +.align 4 +Loop_mod2x_v8: + ext v18.16b,v3.16b,v3.16b,#8 + subs x3,x3,#32 //is there more data? + pmull v0.1q,v22.1d,v3.1d //H^2.lo·Xi.lo + csel x12,xzr,x12,lo //is it time to zero x12? + + pmull v5.1q,v21.1d,v17.1d + eor v18.16b,v18.16b,v3.16b //Karatsuba pre-processing + pmull2 v2.1q,v22.2d,v3.2d //H^2.hi·Xi.hi + eor v0.16b,v0.16b,v4.16b //accumulate + pmull2 v1.1q,v21.2d,v18.2d //(H^2.lo+H^2.hi)·(Xi.lo+Xi.hi) + ld1 {v16.2d},[x2],x12 //load [rotated] I[i+2] + + eor v2.16b,v2.16b,v6.16b + csel x12,xzr,x12,eq //is it time to zero x12? + eor v1.16b,v1.16b,v5.16b + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v17.2d},[x2],x12 //load [rotated] I[i+3] +#ifndef __AARCH64EB__ + rev64 v16.16b,v16.16b +#endif + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + +#ifndef __AARCH64EB__ + rev64 v17.16b,v17.16b +#endif + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v7.16b,v17.16b,v17.16b,#8 + ext v3.16b,v16.16b,v16.16b,#8 + eor v0.16b,v1.16b,v18.16b + pmull v4.1q,v20.1d,v7.1d //H·Ii+1 + eor v3.16b,v3.16b,v2.16b //accumulate v3.16b early + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v3.16b,v3.16b,v18.16b + eor v17.16b,v17.16b,v7.16b //Karatsuba pre-processing + eor v3.16b,v3.16b,v0.16b + pmull2 v6.1q,v20.2d,v7.2d + b.hs Loop_mod2x_v8 //there was at least 32 more bytes + + eor v2.16b,v2.16b,v18.16b + ext v3.16b,v16.16b,v16.16b,#8 //re-construct v3.16b + adds x3,x3,#32 //re-construct x3 + eor v0.16b,v0.16b,v2.16b //re-construct v0.16b + b.eq Ldone_v8 //is x3 zero? +Lodd_tail_v8: + ext v18.16b,v0.16b,v0.16b,#8 + eor v3.16b,v3.16b,v0.16b //inp^=Xi + eor v17.16b,v16.16b,v18.16b //v17.16b is rotated inp^Xi + + pmull v0.1q,v20.1d,v3.1d //H.lo·Xi.lo + eor v17.16b,v17.16b,v3.16b //Karatsuba pre-processing + pmull2 v2.1q,v20.2d,v3.2d //H.hi·Xi.hi + pmull v1.1q,v21.1d,v17.1d //(H.lo+H.hi)·(Xi.lo+Xi.hi) + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + +Ldone_v8: +#ifndef __AARCH64EB__ + rev64 v0.16b,v0.16b +#endif + ext v0.16b,v0.16b,v0.16b,#8 + st1 {v0.2d},[x0] //write out Xi + + ret + +.def gcm_ghash_v8_4x + .type 32 +.endef +.align 4 +gcm_ghash_v8_4x: +Lgcm_ghash_v8_4x: + ld1 {v0.2d},[x0] //load [rotated] Xi + ld1 {v20.2d,v21.2d,v22.2d},[x1],#48 //load twisted H, ..., H^2 + movi v19.16b,#0xe1 + ld1 {v26.2d,v27.2d,v28.2d},[x1] //load twisted H^3, ..., H^4 + shl v19.2d,v19.2d,#57 //compose 0xc2.0 constant + + ld1 {v4.2d,v5.2d,v6.2d,v7.2d},[x2],#64 +#ifndef __AARCH64EB__ + rev64 v0.16b,v0.16b + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v7.16b,v7.16b + rev64 v4.16b,v4.16b +#endif + ext v25.16b,v7.16b,v7.16b,#8 + ext v24.16b,v6.16b,v6.16b,#8 + ext v23.16b,v5.16b,v5.16b,#8 + + pmull v29.1q,v20.1d,v25.1d //H·Ii+3 + eor v7.16b,v7.16b,v25.16b + pmull2 v31.1q,v20.2d,v25.2d + pmull v30.1q,v21.1d,v7.1d + + pmull v16.1q,v22.1d,v24.1d //H^2·Ii+2 + eor v6.16b,v6.16b,v24.16b + pmull2 v24.1q,v22.2d,v24.2d + pmull2 v6.1q,v21.2d,v6.2d + + eor v29.16b,v29.16b,v16.16b + eor v31.16b,v31.16b,v24.16b + eor v30.16b,v30.16b,v6.16b + + pmull v7.1q,v26.1d,v23.1d //H^3·Ii+1 + eor v5.16b,v5.16b,v23.16b + pmull2 v23.1q,v26.2d,v23.2d + pmull v5.1q,v27.1d,v5.1d + + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + eor v30.16b,v30.16b,v5.16b + + subs x3,x3,#128 + b.lo Ltail4x + + b Loop4x + +.align 4 +Loop4x: + eor v16.16b,v4.16b,v0.16b + ld1 {v4.2d,v5.2d,v6.2d,v7.2d},[x2],#64 + ext v3.16b,v16.16b,v16.16b,#8 +#ifndef __AARCH64EB__ + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v7.16b,v7.16b + rev64 v4.16b,v4.16b +#endif + + pmull v0.1q,v28.1d,v3.1d //H^4·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v28.2d,v3.2d + ext v25.16b,v7.16b,v7.16b,#8 + pmull2 v1.1q,v27.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + ext v24.16b,v6.16b,v6.16b,#8 + eor v1.16b,v1.16b,v30.16b + ext v23.16b,v5.16b,v5.16b,#8 + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + pmull v29.1q,v20.1d,v25.1d //H·Ii+3 + eor v7.16b,v7.16b,v25.16b + eor v1.16b,v1.16b,v17.16b + pmull2 v31.1q,v20.2d,v25.2d + eor v1.16b,v1.16b,v18.16b + pmull v30.1q,v21.1d,v7.1d + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + pmull v16.1q,v22.1d,v24.1d //H^2·Ii+2 + eor v6.16b,v6.16b,v24.16b + pmull2 v24.1q,v22.2d,v24.2d + eor v0.16b,v1.16b,v18.16b + pmull2 v6.1q,v21.2d,v6.2d + + eor v29.16b,v29.16b,v16.16b + eor v31.16b,v31.16b,v24.16b + eor v30.16b,v30.16b,v6.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + pmull v7.1q,v26.1d,v23.1d //H^3·Ii+1 + eor v5.16b,v5.16b,v23.16b + eor v18.16b,v18.16b,v2.16b + pmull2 v23.1q,v26.2d,v23.2d + pmull v5.1q,v27.1d,v5.1d + + eor v0.16b,v0.16b,v18.16b + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + ext v0.16b,v0.16b,v0.16b,#8 + eor v30.16b,v30.16b,v5.16b + + subs x3,x3,#64 + b.hs Loop4x + +Ltail4x: + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull v0.1q,v28.1d,v3.1d //H^4·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v28.2d,v3.2d + pmull2 v1.1q,v27.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + + adds x3,x3,#64 + b.eq Ldone4x + + cmp x3,#32 + b.lo Lone + b.eq Ltwo +Lthree: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d,v5.2d,v6.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __AARCH64EB__ + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v24.16b,v6.16b,v6.16b,#8 + ext v23.16b,v5.16b,v5.16b,#8 + eor v0.16b,v1.16b,v18.16b + + pmull v29.1q,v20.1d,v24.1d //H·Ii+2 + eor v6.16b,v6.16b,v24.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + pmull2 v31.1q,v20.2d,v24.2d + pmull v30.1q,v21.1d,v6.1d + eor v0.16b,v0.16b,v18.16b + pmull v7.1q,v22.1d,v23.1d //H^2·Ii+1 + eor v5.16b,v5.16b,v23.16b + ext v0.16b,v0.16b,v0.16b,#8 + + pmull2 v23.1q,v22.2d,v23.2d + eor v16.16b,v4.16b,v0.16b + pmull2 v5.1q,v21.2d,v5.2d + ext v3.16b,v16.16b,v16.16b,#8 + + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + eor v30.16b,v30.16b,v5.16b + + pmull v0.1q,v26.1d,v3.1d //H^3·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v26.2d,v3.2d + pmull v1.1q,v27.1d,v16.1d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + b Ldone4x + +.align 4 +Ltwo: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d,v5.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __AARCH64EB__ + rev64 v5.16b,v5.16b + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v23.16b,v5.16b,v5.16b,#8 + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + + pmull v29.1q,v20.1d,v23.1d //H·Ii+1 + eor v5.16b,v5.16b,v23.16b + + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull2 v31.1q,v20.2d,v23.2d + pmull v30.1q,v21.1d,v5.1d + + pmull v0.1q,v22.1d,v3.1d //H^2·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v22.2d,v3.2d + pmull2 v1.1q,v21.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + b Ldone4x + +.align 4 +Lone: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __AARCH64EB__ + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull v0.1q,v20.1d,v3.1d + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v20.2d,v3.2d + pmull v1.1q,v21.1d,v16.1d + +Ldone4x: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + +#ifndef __AARCH64EB__ + rev64 v0.16b,v0.16b +#endif + st1 {v0.2d},[x0] //write out Xi + + ret + +.byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.align 2 +#endif +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(_WIN32) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86_64-elf.S temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86_64-elf.S --- temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86_64-elf.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86_64-elf.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,22 +1,20 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__ELF__) .text -.extern GFp_ia32cap_P -.hidden GFp_ia32cap_P -.globl GFp_gcm_init_clmul -.hidden GFp_gcm_init_clmul -.type GFp_gcm_init_clmul,@function +.extern OPENSSL_ia32cap_P +.hidden OPENSSL_ia32cap_P +.globl gcm_init_clmul +.hidden gcm_init_clmul +.type gcm_init_clmul,@function .align 16 -GFp_gcm_init_clmul: +gcm_init_clmul: .cfi_startproc + +_CET_ENDBR .L_init_clmul: movdqu (%rsi),%xmm2 pshufd $78,%xmm2,%xmm2 @@ -167,15 +165,17 @@ movdqu %xmm0,64(%rdi) .byte 102,15,58,15,227,8 movdqu %xmm4,80(%rdi) - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_gcm_init_clmul,.-GFp_gcm_init_clmul -.globl GFp_gcm_gmult_clmul -.hidden GFp_gcm_gmult_clmul -.type GFp_gcm_gmult_clmul,@function + +.size gcm_init_clmul,.-gcm_init_clmul +.globl gcm_gmult_clmul +.hidden gcm_gmult_clmul +.type gcm_gmult_clmul,@function .align 16 -GFp_gcm_gmult_clmul: +gcm_gmult_clmul: .cfi_startproc +_CET_ENDBR .L_gmult_clmul: movdqu (%rdi),%xmm0 movdqa .Lbswap_mask(%rip),%xmm5 @@ -221,15 +221,17 @@ pxor %xmm1,%xmm0 .byte 102,15,56,0,197 movdqu %xmm0,(%rdi) - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_gcm_gmult_clmul,.-GFp_gcm_gmult_clmul -.globl GFp_gcm_ghash_clmul -.hidden GFp_gcm_ghash_clmul -.type GFp_gcm_ghash_clmul,@function +.size gcm_gmult_clmul,.-gcm_gmult_clmul +.globl gcm_ghash_clmul +.hidden gcm_ghash_clmul +.type gcm_ghash_clmul,@function .align 32 -GFp_gcm_ghash_clmul: +gcm_ghash_clmul: .cfi_startproc + +_CET_ENDBR .L_ghash_clmul: movdqa .Lbswap_mask(%rip),%xmm10 @@ -242,7 +244,7 @@ jz .Lodd_tail movdqu 16(%rsi),%xmm6 - leaq GFp_ia32cap_P(%rip),%rax + leaq OPENSSL_ia32cap_P(%rip),%rax movl 4(%rax),%eax cmpq $0x30,%rcx jb .Lskip4x @@ -608,15 +610,17 @@ .Ldone: .byte 102,65,15,56,0,194 movdqu %xmm0,(%rdi) - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_gcm_ghash_clmul,.-GFp_gcm_ghash_clmul -.globl GFp_gcm_init_avx -.hidden GFp_gcm_init_avx -.type GFp_gcm_init_avx,@function + +.size gcm_ghash_clmul,.-gcm_ghash_clmul +.globl gcm_init_avx +.hidden gcm_init_avx +.type gcm_init_avx,@function .align 32 -GFp_gcm_init_avx: +gcm_init_avx: .cfi_startproc +_CET_ENDBR vzeroupper vmovdqu (%rsi),%xmm2 @@ -718,15 +722,17 @@ vmovdqu %xmm5,-16(%rdi) vzeroupper - .byte 0xf3,0xc3 + ret + .cfi_endproc -.size GFp_gcm_init_avx,.-GFp_gcm_init_avx -.globl GFp_gcm_ghash_avx -.hidden GFp_gcm_ghash_avx -.type GFp_gcm_ghash_avx,@function +.size gcm_init_avx,.-gcm_init_avx +.globl gcm_ghash_avx +.hidden gcm_ghash_avx +.type gcm_ghash_avx,@function .align 32 -GFp_gcm_ghash_avx: +gcm_ghash_avx: .cfi_startproc +_CET_ENDBR vzeroupper vmovdqu (%rdi),%xmm10 @@ -1097,9 +1103,11 @@ vpshufb %xmm13,%xmm10,%xmm10 vmovdqu %xmm10,(%rdi) vzeroupper - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_gcm_ghash_avx,.-GFp_gcm_ghash_avx + +.size gcm_ghash_avx,.-gcm_ghash_avx +.section .rodata .align 64 .Lbswap_mask: .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -1111,5 +1119,5 @@ .byte 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 64 +.text #endif -.section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86_64-macosx.S temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86_64-macosx.S --- temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86_64-macosx.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86_64-macosx.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,21 +1,19 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__APPLE__) .text -.globl _GFp_gcm_init_clmul -.private_extern _GFp_gcm_init_clmul +.globl _gcm_init_clmul +.private_extern _gcm_init_clmul .p2align 4 -_GFp_gcm_init_clmul: +_gcm_init_clmul: + +_CET_ENDBR L$_init_clmul: movdqu (%rsi),%xmm2 pshufd $78,%xmm2,%xmm2 @@ -166,15 +164,17 @@ movdqu %xmm0,64(%rdi) .byte 102,15,58,15,227,8 movdqu %xmm4,80(%rdi) - .byte 0xf3,0xc3 + ret -.globl _GFp_gcm_gmult_clmul -.private_extern _GFp_gcm_gmult_clmul + +.globl _gcm_gmult_clmul +.private_extern _gcm_gmult_clmul .p2align 4 -_GFp_gcm_gmult_clmul: +_gcm_gmult_clmul: +_CET_ENDBR L$_gmult_clmul: movdqu (%rdi),%xmm0 movdqa L$bswap_mask(%rip),%xmm5 @@ -220,15 +220,17 @@ pxor %xmm1,%xmm0 .byte 102,15,56,0,197 movdqu %xmm0,(%rdi) - .byte 0xf3,0xc3 + ret -.globl _GFp_gcm_ghash_clmul -.private_extern _GFp_gcm_ghash_clmul +.globl _gcm_ghash_clmul +.private_extern _gcm_ghash_clmul .p2align 5 -_GFp_gcm_ghash_clmul: +_gcm_ghash_clmul: + +_CET_ENDBR L$_ghash_clmul: movdqa L$bswap_mask(%rip),%xmm10 @@ -241,7 +243,7 @@ jz L$odd_tail movdqu 16(%rsi),%xmm6 - leaq _GFp_ia32cap_P(%rip),%rax + leaq _OPENSSL_ia32cap_P(%rip),%rax movl 4(%rax),%eax cmpq $0x30,%rcx jb L$skip4x @@ -607,15 +609,17 @@ L$done: .byte 102,65,15,56,0,194 movdqu %xmm0,(%rdi) - .byte 0xf3,0xc3 + ret -.globl _GFp_gcm_init_avx -.private_extern _GFp_gcm_init_avx + +.globl _gcm_init_avx +.private_extern _gcm_init_avx .p2align 5 -_GFp_gcm_init_avx: +_gcm_init_avx: +_CET_ENDBR vzeroupper vmovdqu (%rsi),%xmm2 @@ -717,15 +721,17 @@ vmovdqu %xmm5,-16(%rdi) vzeroupper - .byte 0xf3,0xc3 + ret + -.globl _GFp_gcm_ghash_avx -.private_extern _GFp_gcm_ghash_avx +.globl _gcm_ghash_avx +.private_extern _gcm_ghash_avx .p2align 5 -_GFp_gcm_ghash_avx: +_gcm_ghash_avx: +_CET_ENDBR vzeroupper vmovdqu (%rdi),%xmm10 @@ -1096,9 +1102,11 @@ vpshufb %xmm13,%xmm10,%xmm10 vmovdqu %xmm10,(%rdi) vzeroupper - .byte 0xf3,0xc3 + ret + +.section __DATA,__const .p2align 6 L$bswap_mask: .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 @@ -1110,4 +1118,5 @@ .byte 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .p2align 6 +.text #endif Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86_64-nasm.obj and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86_64-nasm.obj differ diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86-elf.S temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86-elf.S --- temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86-elf.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86-elf.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,17 +1,16 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__i386__) -#if defined(BORINGSSL_PREFIX) -#include -#endif +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__) .text -.globl GFp_gcm_init_clmul -.hidden GFp_gcm_init_clmul -.type GFp_gcm_init_clmul,@function +.globl gcm_init_clmul +.hidden gcm_init_clmul +.type gcm_init_clmul,@function .align 16 -GFp_gcm_init_clmul: -.L_GFp_gcm_init_clmul_begin: +gcm_init_clmul: +.L_gcm_init_clmul_begin: movl 4(%esp),%edx movl 8(%esp),%eax call .L000pic @@ -75,13 +74,13 @@ .byte 102,15,58,15,227,8 movdqu %xmm4,32(%edx) ret -.size GFp_gcm_init_clmul,.-.L_GFp_gcm_init_clmul_begin -.globl GFp_gcm_gmult_clmul -.hidden GFp_gcm_gmult_clmul -.type GFp_gcm_gmult_clmul,@function +.size gcm_init_clmul,.-.L_gcm_init_clmul_begin +.globl gcm_gmult_clmul +.hidden gcm_gmult_clmul +.type gcm_gmult_clmul,@function .align 16 -GFp_gcm_gmult_clmul: -.L_GFp_gcm_gmult_clmul_begin: +gcm_gmult_clmul: +.L_gcm_gmult_clmul_begin: movl 4(%esp),%eax movl 8(%esp),%edx call .L001pic @@ -129,13 +128,13 @@ .byte 102,15,56,0,197 movdqu %xmm0,(%eax) ret -.size GFp_gcm_gmult_clmul,.-.L_GFp_gcm_gmult_clmul_begin -.globl GFp_gcm_ghash_clmul -.hidden GFp_gcm_ghash_clmul -.type GFp_gcm_ghash_clmul,@function +.size gcm_gmult_clmul,.-.L_gcm_gmult_clmul_begin +.globl gcm_ghash_clmul +.hidden gcm_ghash_clmul +.type gcm_ghash_clmul,@function .align 16 -GFp_gcm_ghash_clmul: -.L_GFp_gcm_ghash_clmul_begin: +gcm_ghash_clmul: +.L_gcm_ghash_clmul_begin: pushl %ebp pushl %ebx pushl %esi @@ -317,48 +316,13 @@ popl %ebx popl %ebp ret -.size GFp_gcm_ghash_clmul,.-.L_GFp_gcm_ghash_clmul_begin +.size gcm_ghash_clmul,.-.L_gcm_ghash_clmul_begin .align 64 .Lbswap: .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 .byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194 -.align 64 -.L007rem_8bit: -.value 0,450,900,582,1800,1738,1164,1358 -.value 3600,4050,3476,3158,2328,2266,2716,2910 -.value 7200,7650,8100,7782,6952,6890,6316,6510 -.value 4656,5106,4532,4214,5432,5370,5820,6014 -.value 14400,14722,15300,14854,16200,16010,15564,15630 -.value 13904,14226,13780,13334,12632,12442,13020,13086 -.value 9312,9634,10212,9766,9064,8874,8428,8494 -.value 10864,11186,10740,10294,11640,11450,12028,12094 -.value 28800,28994,29444,29382,30600,30282,29708,30158 -.value 32400,32594,32020,31958,31128,30810,31260,31710 -.value 27808,28002,28452,28390,27560,27242,26668,27118 -.value 25264,25458,24884,24822,26040,25722,26172,26622 -.value 18624,18690,19268,19078,20424,19978,19532,19854 -.value 18128,18194,17748,17558,16856,16410,16988,17310 -.value 21728,21794,22372,22182,21480,21034,20588,20910 -.value 23280,23346,22900,22710,24056,23610,24188,24510 -.value 57600,57538,57988,58182,58888,59338,58764,58446 -.value 61200,61138,60564,60758,59416,59866,60316,59998 -.value 64800,64738,65188,65382,64040,64490,63916,63598 -.value 62256,62194,61620,61814,62520,62970,63420,63102 -.value 55616,55426,56004,56070,56904,57226,56780,56334 -.value 55120,54930,54484,54550,53336,53658,54236,53790 -.value 50528,50338,50916,50982,49768,50090,49644,49198 -.value 52080,51890,51444,51510,52344,52666,53244,52798 -.value 37248,36930,37380,37830,38536,38730,38156,38094 -.value 40848,40530,39956,40406,39064,39258,39708,39646 -.value 36256,35938,36388,36838,35496,35690,35116,35054 -.value 33712,33394,32820,33270,33976,34170,34620,34558 -.value 43456,43010,43588,43910,44744,44810,44364,44174 -.value 42960,42514,42068,42390,41176,41242,41820,41630 -.value 46560,46114,46692,47014,45800,45866,45420,45230 -.value 48112,47666,47220,47542,48376,48442,49020,48830 .byte 71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67 .byte 82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112 .byte 112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62 .byte 0 -#endif -.section .note.GNU-stack,"",@progbits +#endif // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86-macosx.S temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86-macosx.S --- temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86-macosx.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86-macosx.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,357 +0,0 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. - -#if defined(__i386__) -#if defined(BORINGSSL_PREFIX) -#include -#endif -.text -.globl _GFp_gcm_init_clmul -.private_extern _GFp_gcm_init_clmul -.align 4 -_GFp_gcm_init_clmul: -L_GFp_gcm_init_clmul_begin: - movl 4(%esp),%edx - movl 8(%esp),%eax - call L000pic -L000pic: - popl %ecx - leal Lbswap-L000pic(%ecx),%ecx - movdqu (%eax),%xmm2 - pshufd $78,%xmm2,%xmm2 - pshufd $255,%xmm2,%xmm4 - movdqa %xmm2,%xmm3 - psllq $1,%xmm2 - pxor %xmm5,%xmm5 - psrlq $63,%xmm3 - pcmpgtd %xmm4,%xmm5 - pslldq $8,%xmm3 - por %xmm3,%xmm2 - pand 16(%ecx),%xmm5 - pxor %xmm5,%xmm2 - movdqa %xmm2,%xmm0 - movdqa %xmm0,%xmm1 - pshufd $78,%xmm0,%xmm3 - pshufd $78,%xmm2,%xmm4 - pxor %xmm0,%xmm3 - pxor %xmm2,%xmm4 -.byte 102,15,58,68,194,0 -.byte 102,15,58,68,202,17 -.byte 102,15,58,68,220,0 - xorps %xmm0,%xmm3 - xorps %xmm1,%xmm3 - movdqa %xmm3,%xmm4 - psrldq $8,%xmm3 - pslldq $8,%xmm4 - pxor %xmm3,%xmm1 - pxor %xmm4,%xmm0 - movdqa %xmm0,%xmm4 - movdqa %xmm0,%xmm3 - psllq $5,%xmm0 - pxor %xmm0,%xmm3 - psllq $1,%xmm0 - pxor %xmm3,%xmm0 - psllq $57,%xmm0 - movdqa %xmm0,%xmm3 - pslldq $8,%xmm0 - psrldq $8,%xmm3 - pxor %xmm4,%xmm0 - pxor %xmm3,%xmm1 - movdqa %xmm0,%xmm4 - psrlq $1,%xmm0 - pxor %xmm4,%xmm1 - pxor %xmm0,%xmm4 - psrlq $5,%xmm0 - pxor %xmm4,%xmm0 - psrlq $1,%xmm0 - pxor %xmm1,%xmm0 - pshufd $78,%xmm2,%xmm3 - pshufd $78,%xmm0,%xmm4 - pxor %xmm2,%xmm3 - movdqu %xmm2,(%edx) - pxor %xmm0,%xmm4 - movdqu %xmm0,16(%edx) -.byte 102,15,58,15,227,8 - movdqu %xmm4,32(%edx) - ret -.globl _GFp_gcm_gmult_clmul -.private_extern _GFp_gcm_gmult_clmul -.align 4 -_GFp_gcm_gmult_clmul: -L_GFp_gcm_gmult_clmul_begin: - movl 4(%esp),%eax - movl 8(%esp),%edx - call L001pic -L001pic: - popl %ecx - leal Lbswap-L001pic(%ecx),%ecx - movdqu (%eax),%xmm0 - movdqa (%ecx),%xmm5 - movups (%edx),%xmm2 -.byte 102,15,56,0,197 - movups 32(%edx),%xmm4 - movdqa %xmm0,%xmm1 - pshufd $78,%xmm0,%xmm3 - pxor %xmm0,%xmm3 -.byte 102,15,58,68,194,0 -.byte 102,15,58,68,202,17 -.byte 102,15,58,68,220,0 - xorps %xmm0,%xmm3 - xorps %xmm1,%xmm3 - movdqa %xmm3,%xmm4 - psrldq $8,%xmm3 - pslldq $8,%xmm4 - pxor %xmm3,%xmm1 - pxor %xmm4,%xmm0 - movdqa %xmm0,%xmm4 - movdqa %xmm0,%xmm3 - psllq $5,%xmm0 - pxor %xmm0,%xmm3 - psllq $1,%xmm0 - pxor %xmm3,%xmm0 - psllq $57,%xmm0 - movdqa %xmm0,%xmm3 - pslldq $8,%xmm0 - psrldq $8,%xmm3 - pxor %xmm4,%xmm0 - pxor %xmm3,%xmm1 - movdqa %xmm0,%xmm4 - psrlq $1,%xmm0 - pxor %xmm4,%xmm1 - pxor %xmm0,%xmm4 - psrlq $5,%xmm0 - pxor %xmm4,%xmm0 - psrlq $1,%xmm0 - pxor %xmm1,%xmm0 -.byte 102,15,56,0,197 - movdqu %xmm0,(%eax) - ret -.globl _GFp_gcm_ghash_clmul -.private_extern _GFp_gcm_ghash_clmul -.align 4 -_GFp_gcm_ghash_clmul: -L_GFp_gcm_ghash_clmul_begin: - pushl %ebp - pushl %ebx - pushl %esi - pushl %edi - movl 20(%esp),%eax - movl 24(%esp),%edx - movl 28(%esp),%esi - movl 32(%esp),%ebx - call L002pic -L002pic: - popl %ecx - leal Lbswap-L002pic(%ecx),%ecx - movdqu (%eax),%xmm0 - movdqa (%ecx),%xmm5 - movdqu (%edx),%xmm2 -.byte 102,15,56,0,197 - subl $16,%ebx - jz L003odd_tail - movdqu (%esi),%xmm3 - movdqu 16(%esi),%xmm6 -.byte 102,15,56,0,221 -.byte 102,15,56,0,245 - movdqu 32(%edx),%xmm5 - pxor %xmm3,%xmm0 - pshufd $78,%xmm6,%xmm3 - movdqa %xmm6,%xmm7 - pxor %xmm6,%xmm3 - leal 32(%esi),%esi -.byte 102,15,58,68,242,0 -.byte 102,15,58,68,250,17 -.byte 102,15,58,68,221,0 - movups 16(%edx),%xmm2 - nop - subl $32,%ebx - jbe L004even_tail - jmp L005mod_loop -.align 5,0x90 -L005mod_loop: - pshufd $78,%xmm0,%xmm4 - movdqa %xmm0,%xmm1 - pxor %xmm0,%xmm4 - nop -.byte 102,15,58,68,194,0 -.byte 102,15,58,68,202,17 -.byte 102,15,58,68,229,16 - movups (%edx),%xmm2 - xorps %xmm6,%xmm0 - movdqa (%ecx),%xmm5 - xorps %xmm7,%xmm1 - movdqu (%esi),%xmm7 - pxor %xmm0,%xmm3 - movdqu 16(%esi),%xmm6 - pxor %xmm1,%xmm3 -.byte 102,15,56,0,253 - pxor %xmm3,%xmm4 - movdqa %xmm4,%xmm3 - psrldq $8,%xmm4 - pslldq $8,%xmm3 - pxor %xmm4,%xmm1 - pxor %xmm3,%xmm0 -.byte 102,15,56,0,245 - pxor %xmm7,%xmm1 - movdqa %xmm6,%xmm7 - movdqa %xmm0,%xmm4 - movdqa %xmm0,%xmm3 - psllq $5,%xmm0 - pxor %xmm0,%xmm3 - psllq $1,%xmm0 - pxor %xmm3,%xmm0 -.byte 102,15,58,68,242,0 - movups 32(%edx),%xmm5 - psllq $57,%xmm0 - movdqa %xmm0,%xmm3 - pslldq $8,%xmm0 - psrldq $8,%xmm3 - pxor %xmm4,%xmm0 - pxor %xmm3,%xmm1 - pshufd $78,%xmm7,%xmm3 - movdqa %xmm0,%xmm4 - psrlq $1,%xmm0 - pxor %xmm7,%xmm3 - pxor %xmm4,%xmm1 -.byte 102,15,58,68,250,17 - movups 16(%edx),%xmm2 - pxor %xmm0,%xmm4 - psrlq $5,%xmm0 - pxor %xmm4,%xmm0 - psrlq $1,%xmm0 - pxor %xmm1,%xmm0 -.byte 102,15,58,68,221,0 - leal 32(%esi),%esi - subl $32,%ebx - ja L005mod_loop -L004even_tail: - pshufd $78,%xmm0,%xmm4 - movdqa %xmm0,%xmm1 - pxor %xmm0,%xmm4 -.byte 102,15,58,68,194,0 -.byte 102,15,58,68,202,17 -.byte 102,15,58,68,229,16 - movdqa (%ecx),%xmm5 - xorps %xmm6,%xmm0 - xorps %xmm7,%xmm1 - pxor %xmm0,%xmm3 - pxor %xmm1,%xmm3 - pxor %xmm3,%xmm4 - movdqa %xmm4,%xmm3 - psrldq $8,%xmm4 - pslldq $8,%xmm3 - pxor %xmm4,%xmm1 - pxor %xmm3,%xmm0 - movdqa %xmm0,%xmm4 - movdqa %xmm0,%xmm3 - psllq $5,%xmm0 - pxor %xmm0,%xmm3 - psllq $1,%xmm0 - pxor %xmm3,%xmm0 - psllq $57,%xmm0 - movdqa %xmm0,%xmm3 - pslldq $8,%xmm0 - psrldq $8,%xmm3 - pxor %xmm4,%xmm0 - pxor %xmm3,%xmm1 - movdqa %xmm0,%xmm4 - psrlq $1,%xmm0 - pxor %xmm4,%xmm1 - pxor %xmm0,%xmm4 - psrlq $5,%xmm0 - pxor %xmm4,%xmm0 - psrlq $1,%xmm0 - pxor %xmm1,%xmm0 - testl %ebx,%ebx - jnz L006done - movups (%edx),%xmm2 -L003odd_tail: - movdqu (%esi),%xmm3 -.byte 102,15,56,0,221 - pxor %xmm3,%xmm0 - movdqa %xmm0,%xmm1 - pshufd $78,%xmm0,%xmm3 - pshufd $78,%xmm2,%xmm4 - pxor %xmm0,%xmm3 - pxor %xmm2,%xmm4 -.byte 102,15,58,68,194,0 -.byte 102,15,58,68,202,17 -.byte 102,15,58,68,220,0 - xorps %xmm0,%xmm3 - xorps %xmm1,%xmm3 - movdqa %xmm3,%xmm4 - psrldq $8,%xmm3 - pslldq $8,%xmm4 - pxor %xmm3,%xmm1 - pxor %xmm4,%xmm0 - movdqa %xmm0,%xmm4 - movdqa %xmm0,%xmm3 - psllq $5,%xmm0 - pxor %xmm0,%xmm3 - psllq $1,%xmm0 - pxor %xmm3,%xmm0 - psllq $57,%xmm0 - movdqa %xmm0,%xmm3 - pslldq $8,%xmm0 - psrldq $8,%xmm3 - pxor %xmm4,%xmm0 - pxor %xmm3,%xmm1 - movdqa %xmm0,%xmm4 - psrlq $1,%xmm0 - pxor %xmm4,%xmm1 - pxor %xmm0,%xmm4 - psrlq $5,%xmm0 - pxor %xmm4,%xmm0 - psrlq $1,%xmm0 - pxor %xmm1,%xmm0 -L006done: -.byte 102,15,56,0,197 - movdqu %xmm0,(%eax) - popl %edi - popl %esi - popl %ebx - popl %ebp - ret -.align 6,0x90 -Lbswap: -.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 -.byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194 -.align 6,0x90 -L007rem_8bit: -.value 0,450,900,582,1800,1738,1164,1358 -.value 3600,4050,3476,3158,2328,2266,2716,2910 -.value 7200,7650,8100,7782,6952,6890,6316,6510 -.value 4656,5106,4532,4214,5432,5370,5820,6014 -.value 14400,14722,15300,14854,16200,16010,15564,15630 -.value 13904,14226,13780,13334,12632,12442,13020,13086 -.value 9312,9634,10212,9766,9064,8874,8428,8494 -.value 10864,11186,10740,10294,11640,11450,12028,12094 -.value 28800,28994,29444,29382,30600,30282,29708,30158 -.value 32400,32594,32020,31958,31128,30810,31260,31710 -.value 27808,28002,28452,28390,27560,27242,26668,27118 -.value 25264,25458,24884,24822,26040,25722,26172,26622 -.value 18624,18690,19268,19078,20424,19978,19532,19854 -.value 18128,18194,17748,17558,16856,16410,16988,17310 -.value 21728,21794,22372,22182,21480,21034,20588,20910 -.value 23280,23346,22900,22710,24056,23610,24188,24510 -.value 57600,57538,57988,58182,58888,59338,58764,58446 -.value 61200,61138,60564,60758,59416,59866,60316,59998 -.value 64800,64738,65188,65382,64040,64490,63916,63598 -.value 62256,62194,61620,61814,62520,62970,63420,63102 -.value 55616,55426,56004,56070,56904,57226,56780,56334 -.value 55120,54930,54484,54550,53336,53658,54236,53790 -.value 50528,50338,50916,50982,49768,50090,49644,49198 -.value 52080,51890,51444,51510,52344,52666,53244,52798 -.value 37248,36930,37380,37830,38536,38730,38156,38094 -.value 40848,40530,39956,40406,39064,39258,39708,39646 -.value 36256,35938,36388,36838,35496,35690,35116,35054 -.value 33712,33394,32820,33270,33976,34170,34620,34558 -.value 43456,43010,43588,43910,44744,44810,44364,44174 -.value 42960,42514,42068,42390,41176,41242,41820,41630 -.value 46560,46114,46692,47014,45800,45866,45420,45230 -.value 48112,47666,47220,47542,48376,48442,49020,48830 -.byte 71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67 -.byte 82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112 -.byte 112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62 -.byte 0 -#endif Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86-win32n.obj and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/pregenerated/ghash-x86-win32n.obj differ diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/p256-armv8-asm-ios64.S temporalio-1.3.0/vendor/ring/pregenerated/p256-armv8-asm-ios64.S --- temporalio-1.3.0/vendor/ring/pregenerated/p256-armv8-asm-ios64.S 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/p256-armv8-asm-ios64.S 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1610 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. + +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__APPLE__) +#include "ring-core/arm_arch.h" + +.section __TEXT,__const +.align 5 +Lpoly: +.quad 0xffffffffffffffff,0x00000000ffffffff,0x0000000000000000,0xffffffff00000001 +LRR: // 2^512 mod P precomputed for NIST P256 polynomial +.quad 0x0000000000000003,0xfffffffbffffffff,0xfffffffffffffffe,0x00000004fffffffd +Lone_mont: +.quad 0x0000000000000001,0xffffffff00000000,0xffffffffffffffff,0x00000000fffffffe +Lone: +.quad 1,0,0,0 +Lord: +.quad 0xf3b9cac2fc632551,0xbce6faada7179e84,0xffffffffffffffff,0xffffffff00000000 +LordK: +.quad 0xccd1c8aaee00bc4f +.byte 69,67,80,95,78,73,83,84,90,50,53,54,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.text + +// void ecp_nistz256_mul_mont(BN_ULONG x0[4],const BN_ULONG x1[4], +// const BN_ULONG x2[4]); +.globl _ecp_nistz256_mul_mont +.private_extern _ecp_nistz256_mul_mont + +.align 4 +_ecp_nistz256_mul_mont: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-32]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + + ldr x3,[x2] // bp[0] + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + adrp x13,Lpoly@PAGE + add x13,x13,Lpoly@PAGEOFF + ldr x12,[x13,#8] + ldr x13,[x13,#24] + + bl __ecp_nistz256_mul_mont + + ldp x19,x20,[sp,#16] + ldp x29,x30,[sp],#32 + AARCH64_VALIDATE_LINK_REGISTER + ret + + +// void ecp_nistz256_sqr_mont(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl _ecp_nistz256_sqr_mont +.private_extern _ecp_nistz256_sqr_mont + +.align 4 +_ecp_nistz256_sqr_mont: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-32]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + adrp x13,Lpoly@PAGE + add x13,x13,Lpoly@PAGEOFF + ldr x12,[x13,#8] + ldr x13,[x13,#24] + + bl __ecp_nistz256_sqr_mont + + ldp x19,x20,[sp,#16] + ldp x29,x30,[sp],#32 + AARCH64_VALIDATE_LINK_REGISTER + ret + + +// void ecp_nistz256_neg(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl _ecp_nistz256_neg +.private_extern _ecp_nistz256_neg + +.align 4 +_ecp_nistz256_neg: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + mov x2,x1 + mov x14,xzr // a = 0 + mov x15,xzr + mov x16,xzr + mov x17,xzr + adrp x13,Lpoly@PAGE + add x13,x13,Lpoly@PAGEOFF + ldr x12,[x13,#8] + ldr x13,[x13,#24] + + bl __ecp_nistz256_sub_from + + ldp x29,x30,[sp],#16 + AARCH64_VALIDATE_LINK_REGISTER + ret + + +// note that __ecp_nistz256_mul_mont expects a[0-3] input pre-loaded +// to x4-x7 and b[0] - to x3 + +.align 4 +__ecp_nistz256_mul_mont: + mul x14,x4,x3 // a[0]*b[0] + umulh x8,x4,x3 + + mul x15,x5,x3 // a[1]*b[0] + umulh x9,x5,x3 + + mul x16,x6,x3 // a[2]*b[0] + umulh x10,x6,x3 + + mul x17,x7,x3 // a[3]*b[0] + umulh x11,x7,x3 + ldr x3,[x2,#8] // b[1] + + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adc x19,xzr,x11 + mov x20,xzr + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + mul x8,x4,x3 // lo(a[0]*b[i]) + adcs x15,x16,x9 + mul x9,x5,x3 // lo(a[1]*b[i]) + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + mul x10,x6,x3 // lo(a[2]*b[i]) + adcs x17,x19,x11 + mul x11,x7,x3 // lo(a[3]*b[i]) + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts of multiplication + umulh x8,x4,x3 // hi(a[0]*b[i]) + adcs x15,x15,x9 + umulh x9,x5,x3 // hi(a[1]*b[i]) + adcs x16,x16,x10 + umulh x10,x6,x3 // hi(a[2]*b[i]) + adcs x17,x17,x11 + umulh x11,x7,x3 // hi(a[3]*b[i]) + adc x19,x19,xzr + ldr x3,[x2,#8*(1+1)] // b[1+1] + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + mul x8,x4,x3 // lo(a[0]*b[i]) + adcs x15,x16,x9 + mul x9,x5,x3 // lo(a[1]*b[i]) + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + mul x10,x6,x3 // lo(a[2]*b[i]) + adcs x17,x19,x11 + mul x11,x7,x3 // lo(a[3]*b[i]) + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts of multiplication + umulh x8,x4,x3 // hi(a[0]*b[i]) + adcs x15,x15,x9 + umulh x9,x5,x3 // hi(a[1]*b[i]) + adcs x16,x16,x10 + umulh x10,x6,x3 // hi(a[2]*b[i]) + adcs x17,x17,x11 + umulh x11,x7,x3 // hi(a[3]*b[i]) + adc x19,x19,xzr + ldr x3,[x2,#8*(2+1)] // b[2+1] + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + mul x8,x4,x3 // lo(a[0]*b[i]) + adcs x15,x16,x9 + mul x9,x5,x3 // lo(a[1]*b[i]) + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + mul x10,x6,x3 // lo(a[2]*b[i]) + adcs x17,x19,x11 + mul x11,x7,x3 // lo(a[3]*b[i]) + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts of multiplication + umulh x8,x4,x3 // hi(a[0]*b[i]) + adcs x15,x15,x9 + umulh x9,x5,x3 // hi(a[1]*b[i]) + adcs x16,x16,x10 + umulh x10,x6,x3 // hi(a[2]*b[i]) + adcs x17,x17,x11 + umulh x11,x7,x3 // hi(a[3]*b[i]) + adc x19,x19,xzr + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + // last reduction + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + adcs x17,x19,x11 + adc x19,x20,xzr + + adds x8,x14,#1 // subs x8,x14,#-1 // tmp = ret-modulus + sbcs x9,x15,x12 + sbcs x10,x16,xzr + sbcs x11,x17,x13 + sbcs xzr,x19,xzr // did it borrow? + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ret + + +// note that __ecp_nistz256_sqr_mont expects a[0-3] input pre-loaded +// to x4-x7 + +.align 4 +__ecp_nistz256_sqr_mont: + // | | | | | |a1*a0| | + // | | | | |a2*a0| | | + // | |a3*a2|a3*a0| | | | + // | | | |a2*a1| | | | + // | | |a3*a1| | | | | + // *| | | | | | | | 2| + // +|a3*a3|a2*a2|a1*a1|a0*a0| + // |--+--+--+--+--+--+--+--| + // |A7|A6|A5|A4|A3|A2|A1|A0|, where Ax is , i.e. follow + // + // "can't overflow" below mark carrying into high part of + // multiplication result, which can't overflow, because it + // can never be all ones. + + mul x15,x5,x4 // a[1]*a[0] + umulh x9,x5,x4 + mul x16,x6,x4 // a[2]*a[0] + umulh x10,x6,x4 + mul x17,x7,x4 // a[3]*a[0] + umulh x19,x7,x4 + + adds x16,x16,x9 // accumulate high parts of multiplication + mul x8,x6,x5 // a[2]*a[1] + umulh x9,x6,x5 + adcs x17,x17,x10 + mul x10,x7,x5 // a[3]*a[1] + umulh x11,x7,x5 + adc x19,x19,xzr // can't overflow + + mul x20,x7,x6 // a[3]*a[2] + umulh x1,x7,x6 + + adds x9,x9,x10 // accumulate high parts of multiplication + mul x14,x4,x4 // a[0]*a[0] + adc x10,x11,xzr // can't overflow + + adds x17,x17,x8 // accumulate low parts of multiplication + umulh x4,x4,x4 + adcs x19,x19,x9 + mul x9,x5,x5 // a[1]*a[1] + adcs x20,x20,x10 + umulh x5,x5,x5 + adc x1,x1,xzr // can't overflow + + adds x15,x15,x15 // acc[1-6]*=2 + mul x10,x6,x6 // a[2]*a[2] + adcs x16,x16,x16 + umulh x6,x6,x6 + adcs x17,x17,x17 + mul x11,x7,x7 // a[3]*a[3] + adcs x19,x19,x19 + umulh x7,x7,x7 + adcs x20,x20,x20 + adcs x1,x1,x1 + adc x2,xzr,xzr + + adds x15,x15,x4 // +a[i]*a[i] + adcs x16,x16,x9 + adcs x17,x17,x5 + adcs x19,x19,x10 + adcs x20,x20,x6 + lsl x8,x14,#32 + adcs x1,x1,x11 + lsr x9,x14,#32 + adc x2,x2,x7 + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + lsl x8,x14,#32 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + lsr x9,x14,#32 + adc x17,x11,xzr // can't overflow + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + lsl x8,x14,#32 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + lsr x9,x14,#32 + adc x17,x11,xzr // can't overflow + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + lsl x8,x14,#32 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + lsr x9,x14,#32 + adc x17,x11,xzr // can't overflow + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + adc x17,x11,xzr // can't overflow + + adds x14,x14,x19 // accumulate upper half + adcs x15,x15,x20 + adcs x16,x16,x1 + adcs x17,x17,x2 + adc x19,xzr,xzr + + adds x8,x14,#1 // subs x8,x14,#-1 // tmp = ret-modulus + sbcs x9,x15,x12 + sbcs x10,x16,xzr + sbcs x11,x17,x13 + sbcs xzr,x19,xzr // did it borrow? + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ret + + +// Note that __ecp_nistz256_add_to expects both input vectors pre-loaded to +// x4-x7 and x8-x11. This is done because it's used in multiple +// contexts, e.g. in multiplication by 2 and 3... + +.align 4 +__ecp_nistz256_add_to: + adds x14,x14,x8 // ret = a+b + adcs x15,x15,x9 + adcs x16,x16,x10 + adcs x17,x17,x11 + adc x1,xzr,xzr // zap x1 + + adds x8,x14,#1 // subs x8,x4,#-1 // tmp = ret-modulus + sbcs x9,x15,x12 + sbcs x10,x16,xzr + sbcs x11,x17,x13 + sbcs xzr,x1,xzr // did subtraction borrow? + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ret + + + +.align 4 +__ecp_nistz256_sub_from: + ldp x8,x9,[x2] + ldp x10,x11,[x2,#16] + subs x14,x14,x8 // ret = a-b + sbcs x15,x15,x9 + sbcs x16,x16,x10 + sbcs x17,x17,x11 + sbc x1,xzr,xzr // zap x1 + + subs x8,x14,#1 // adds x8,x4,#-1 // tmp = ret+modulus + adcs x9,x15,x12 + adcs x10,x16,xzr + adc x11,x17,x13 + cmp x1,xzr // did subtraction borrow? + + csel x14,x14,x8,eq // ret = borrow ? ret+modulus : ret + csel x15,x15,x9,eq + csel x16,x16,x10,eq + stp x14,x15,[x0] + csel x17,x17,x11,eq + stp x16,x17,[x0,#16] + + ret + + + +.align 4 +__ecp_nistz256_sub_morf: + ldp x8,x9,[x2] + ldp x10,x11,[x2,#16] + subs x14,x8,x14 // ret = b-a + sbcs x15,x9,x15 + sbcs x16,x10,x16 + sbcs x17,x11,x17 + sbc x1,xzr,xzr // zap x1 + + subs x8,x14,#1 // adds x8,x4,#-1 // tmp = ret+modulus + adcs x9,x15,x12 + adcs x10,x16,xzr + adc x11,x17,x13 + cmp x1,xzr // did subtraction borrow? + + csel x14,x14,x8,eq // ret = borrow ? ret+modulus : ret + csel x15,x15,x9,eq + csel x16,x16,x10,eq + stp x14,x15,[x0] + csel x17,x17,x11,eq + stp x16,x17,[x0,#16] + + ret + + + +.align 4 +__ecp_nistz256_div_by_2: + subs x8,x14,#1 // adds x8,x4,#-1 // tmp = a+modulus + adcs x9,x15,x12 + adcs x10,x16,xzr + adcs x11,x17,x13 + adc x1,xzr,xzr // zap x1 + tst x14,#1 // is a even? + + csel x14,x14,x8,eq // ret = even ? a : a+modulus + csel x15,x15,x9,eq + csel x16,x16,x10,eq + csel x17,x17,x11,eq + csel x1,xzr,x1,eq + + lsr x14,x14,#1 // ret >>= 1 + orr x14,x14,x15,lsl#63 + lsr x15,x15,#1 + orr x15,x15,x16,lsl#63 + lsr x16,x16,#1 + orr x16,x16,x17,lsl#63 + lsr x17,x17,#1 + stp x14,x15,[x0] + orr x17,x17,x1,lsl#63 + stp x16,x17,[x0,#16] + + ret + +.globl _ecp_nistz256_point_double +.private_extern _ecp_nistz256_point_double + +.align 5 +_ecp_nistz256_point_double: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + sub sp,sp,#32*4 + +Ldouble_shortcut: + ldp x14,x15,[x1,#32] + mov x21,x0 + ldp x16,x17,[x1,#48] + mov x22,x1 + adrp x13,Lpoly@PAGE + add x13,x13,Lpoly@PAGEOFF + ldr x12,[x13,#8] + mov x8,x14 + ldr x13,[x13,#24] + mov x9,x15 + ldp x4,x5,[x22,#64] // forward load for p256_sqr_mont + mov x10,x16 + mov x11,x17 + ldp x6,x7,[x22,#64+16] + add x0,sp,#0 + bl __ecp_nistz256_add_to // p256_mul_by_2(S, in_y); + + add x0,sp,#64 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Zsqr, in_z); + + ldp x8,x9,[x22] + ldp x10,x11,[x22,#16] + mov x4,x14 // put Zsqr aside for p256_sub + mov x5,x15 + mov x6,x16 + mov x7,x17 + add x0,sp,#32 + bl __ecp_nistz256_add_to // p256_add(M, Zsqr, in_x); + + add x2,x22,#0 + mov x14,x4 // restore Zsqr + mov x15,x5 + ldp x4,x5,[sp,#0] // forward load for p256_sqr_mont + mov x16,x6 + mov x17,x7 + ldp x6,x7,[sp,#0+16] + add x0,sp,#64 + bl __ecp_nistz256_sub_morf // p256_sub(Zsqr, in_x, Zsqr); + + add x0,sp,#0 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(S, S); + + ldr x3,[x22,#32] + ldp x4,x5,[x22,#64] + ldp x6,x7,[x22,#64+16] + add x2,x22,#32 + add x0,sp,#96 + bl __ecp_nistz256_mul_mont // p256_mul_mont(tmp0, in_z, in_y); + + mov x8,x14 + mov x9,x15 + ldp x4,x5,[sp,#0] // forward load for p256_sqr_mont + mov x10,x16 + mov x11,x17 + ldp x6,x7,[sp,#0+16] + add x0,x21,#64 + bl __ecp_nistz256_add_to // p256_mul_by_2(res_z, tmp0); + + add x0,sp,#96 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(tmp0, S); + + ldr x3,[sp,#64] // forward load for p256_mul_mont + ldp x4,x5,[sp,#32] + ldp x6,x7,[sp,#32+16] + add x0,x21,#32 + bl __ecp_nistz256_div_by_2 // p256_div_by_2(res_y, tmp0); + + add x2,sp,#64 + add x0,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(M, M, Zsqr); + + mov x8,x14 // duplicate M + mov x9,x15 + mov x10,x16 + mov x11,x17 + mov x4,x14 // put M aside + mov x5,x15 + mov x6,x16 + mov x7,x17 + add x0,sp,#32 + bl __ecp_nistz256_add_to + mov x8,x4 // restore M + mov x9,x5 + ldr x3,[x22] // forward load for p256_mul_mont + mov x10,x6 + ldp x4,x5,[sp,#0] + mov x11,x7 + ldp x6,x7,[sp,#0+16] + bl __ecp_nistz256_add_to // p256_mul_by_3(M, M); + + add x2,x22,#0 + add x0,sp,#0 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S, S, in_x); + + mov x8,x14 + mov x9,x15 + ldp x4,x5,[sp,#32] // forward load for p256_sqr_mont + mov x10,x16 + mov x11,x17 + ldp x6,x7,[sp,#32+16] + add x0,sp,#96 + bl __ecp_nistz256_add_to // p256_mul_by_2(tmp0, S); + + add x0,x21,#0 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(res_x, M); + + add x2,sp,#96 + bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, tmp0); + + add x2,sp,#0 + add x0,sp,#0 + bl __ecp_nistz256_sub_morf // p256_sub(S, S, res_x); + + ldr x3,[sp,#32] + mov x4,x14 // copy S + mov x5,x15 + mov x6,x16 + mov x7,x17 + add x2,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S, S, M); + + add x2,x21,#32 + add x0,x21,#32 + bl __ecp_nistz256_sub_from // p256_sub(res_y, S, res_y); + + add sp,x29,#0 // destroy frame + ldp x19,x20,[x29,#16] + ldp x21,x22,[x29,#32] + ldp x29,x30,[sp],#96 + AARCH64_VALIDATE_LINK_REGISTER + ret + +.globl _ecp_nistz256_point_add +.private_extern _ecp_nistz256_point_add + +.align 5 +_ecp_nistz256_point_add: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#32*12 + + ldp x4,x5,[x2,#64] // in2_z + ldp x6,x7,[x2,#64+16] + mov x21,x0 + mov x22,x1 + mov x23,x2 + adrp x13,Lpoly@PAGE + add x13,x13,Lpoly@PAGEOFF + ldr x12,[x13,#8] + ldr x13,[x13,#24] + orr x8,x4,x5 + orr x10,x6,x7 + orr x25,x8,x10 + cmp x25,#0 + csetm x25,ne // ~in2infty + add x0,sp,#192 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z2sqr, in2_z); + + ldp x4,x5,[x22,#64] // in1_z + ldp x6,x7,[x22,#64+16] + orr x8,x4,x5 + orr x10,x6,x7 + orr x24,x8,x10 + cmp x24,#0 + csetm x24,ne // ~in1infty + add x0,sp,#128 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); + + ldr x3,[x23,#64] + ldp x4,x5,[sp,#192] + ldp x6,x7,[sp,#192+16] + add x2,x23,#64 + add x0,sp,#320 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S1, Z2sqr, in2_z); + + ldr x3,[x22,#64] + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x2,x22,#64 + add x0,sp,#352 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, Z1sqr, in1_z); + + ldr x3,[x22,#32] + ldp x4,x5,[sp,#320] + ldp x6,x7,[sp,#320+16] + add x2,x22,#32 + add x0,sp,#320 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S1, S1, in1_y); + + ldr x3,[x23,#32] + ldp x4,x5,[sp,#352] + ldp x6,x7,[sp,#352+16] + add x2,x23,#32 + add x0,sp,#352 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S2, in2_y); + + add x2,sp,#320 + ldr x3,[sp,#192] // forward load for p256_mul_mont + ldp x4,x5,[x22] + ldp x6,x7,[x22,#16] + add x0,sp,#160 + bl __ecp_nistz256_sub_from // p256_sub(R, S2, S1); + + orr x14,x14,x15 // see if result is zero + orr x16,x16,x17 + orr x26,x14,x16 // ~is_equal(S1,S2) + + add x2,sp,#192 + add x0,sp,#256 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U1, in1_x, Z2sqr); + + ldr x3,[sp,#128] + ldp x4,x5,[x23] + ldp x6,x7,[x23,#16] + add x2,sp,#128 + add x0,sp,#288 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, in2_x, Z1sqr); + + add x2,sp,#256 + ldp x4,x5,[sp,#160] // forward load for p256_sqr_mont + ldp x6,x7,[sp,#160+16] + add x0,sp,#96 + bl __ecp_nistz256_sub_from // p256_sub(H, U2, U1); + + orr x14,x14,x15 // see if result is zero + orr x16,x16,x17 + orr x14,x14,x16 // ~is_equal(U1,U2) + + mvn x27,x24 // -1/0 -> 0/-1 + mvn x28,x25 // -1/0 -> 0/-1 + orr x14,x14,x27 + orr x14,x14,x28 + orr x14,x14,x26 + cbnz x14,Ladd_proceed // if(~is_equal(U1,U2) | in1infty | in2infty | ~is_equal(S1,S2)) + +Ladd_double: + mov x1,x22 + mov x0,x21 + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + add sp,sp,#256 // #256 is from #32*(12-4). difference in stack frames + b Ldouble_shortcut + +.align 4 +Ladd_proceed: + add x0,sp,#192 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Rsqr, R); + + ldr x3,[x22,#64] + ldp x4,x5,[sp,#96] + ldp x6,x7,[sp,#96+16] + add x2,x22,#64 + add x0,sp,#64 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, H, in1_z); + + ldp x4,x5,[sp,#96] + ldp x6,x7,[sp,#96+16] + add x0,sp,#128 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Hsqr, H); + + ldr x3,[x23,#64] + ldp x4,x5,[sp,#64] + ldp x6,x7,[sp,#64+16] + add x2,x23,#64 + add x0,sp,#64 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, res_z, in2_z); + + ldr x3,[sp,#96] + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x2,sp,#96 + add x0,sp,#224 + bl __ecp_nistz256_mul_mont // p256_mul_mont(Hcub, Hsqr, H); + + ldr x3,[sp,#128] + ldp x4,x5,[sp,#256] + ldp x6,x7,[sp,#256+16] + add x2,sp,#128 + add x0,sp,#288 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, U1, Hsqr); + + mov x8,x14 + mov x9,x15 + mov x10,x16 + mov x11,x17 + add x0,sp,#128 + bl __ecp_nistz256_add_to // p256_mul_by_2(Hsqr, U2); + + add x2,sp,#192 + add x0,sp,#0 + bl __ecp_nistz256_sub_morf // p256_sub(res_x, Rsqr, Hsqr); + + add x2,sp,#224 + bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, Hcub); + + add x2,sp,#288 + ldr x3,[sp,#224] // forward load for p256_mul_mont + ldp x4,x5,[sp,#320] + ldp x6,x7,[sp,#320+16] + add x0,sp,#32 + bl __ecp_nistz256_sub_morf // p256_sub(res_y, U2, res_x); + + add x2,sp,#224 + add x0,sp,#352 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S1, Hcub); + + ldr x3,[sp,#160] + ldp x4,x5,[sp,#32] + ldp x6,x7,[sp,#32+16] + add x2,sp,#160 + add x0,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_y, res_y, R); + + add x2,sp,#352 + bl __ecp_nistz256_sub_from // p256_sub(res_y, res_y, S2); + + ldp x4,x5,[sp,#0] // res + ldp x6,x7,[sp,#0+16] + ldp x8,x9,[x23] // in2 + ldp x10,x11,[x23,#16] + ldp x14,x15,[x22,#0] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#0+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+0+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+0+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#0+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#0+48] + stp x14,x15,[x21,#0] + stp x16,x17,[x21,#0+16] + ldp x14,x15,[x22,#32] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#32+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+32+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+32+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#32+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#32+48] + stp x14,x15,[x21,#32] + stp x16,x17,[x21,#32+16] + ldp x14,x15,[x22,#64] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#64+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + csel x14,x8,x14,ne + csel x15,x9,x15,ne + csel x16,x10,x16,ne + csel x17,x11,x17,ne + stp x14,x15,[x21,#64] + stp x16,x17,[x21,#64+16] + +Ladd_done: + add sp,x29,#0 // destroy frame + ldp x19,x20,[x29,#16] + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 + AARCH64_VALIDATE_LINK_REGISTER + ret + +.globl _ecp_nistz256_point_add_affine +.private_extern _ecp_nistz256_point_add_affine + +.align 5 +_ecp_nistz256_point_add_affine: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-80]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + sub sp,sp,#32*10 + + mov x21,x0 + mov x22,x1 + mov x23,x2 + adrp x13,Lpoly@PAGE + add x13,x13,Lpoly@PAGEOFF + ldr x12,[x13,#8] + ldr x13,[x13,#24] + + ldp x4,x5,[x1,#64] // in1_z + ldp x6,x7,[x1,#64+16] + orr x8,x4,x5 + orr x10,x6,x7 + orr x24,x8,x10 + cmp x24,#0 + csetm x24,ne // ~in1infty + + ldp x14,x15,[x2] // in2_x + ldp x16,x17,[x2,#16] + ldp x8,x9,[x2,#32] // in2_y + ldp x10,x11,[x2,#48] + orr x14,x14,x15 + orr x16,x16,x17 + orr x8,x8,x9 + orr x10,x10,x11 + orr x14,x14,x16 + orr x8,x8,x10 + orr x25,x14,x8 + cmp x25,#0 + csetm x25,ne // ~in2infty + + add x0,sp,#128 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); + + mov x4,x14 + mov x5,x15 + mov x6,x16 + mov x7,x17 + ldr x3,[x23] + add x2,x23,#0 + add x0,sp,#96 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, Z1sqr, in2_x); + + add x2,x22,#0 + ldr x3,[x22,#64] // forward load for p256_mul_mont + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x0,sp,#160 + bl __ecp_nistz256_sub_from // p256_sub(H, U2, in1_x); + + add x2,x22,#64 + add x0,sp,#128 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, Z1sqr, in1_z); + + ldr x3,[x22,#64] + ldp x4,x5,[sp,#160] + ldp x6,x7,[sp,#160+16] + add x2,x22,#64 + add x0,sp,#64 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, H, in1_z); + + ldr x3,[x23,#32] + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x2,x23,#32 + add x0,sp,#128 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S2, in2_y); + + add x2,x22,#32 + ldp x4,x5,[sp,#160] // forward load for p256_sqr_mont + ldp x6,x7,[sp,#160+16] + add x0,sp,#192 + bl __ecp_nistz256_sub_from // p256_sub(R, S2, in1_y); + + add x0,sp,#224 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Hsqr, H); + + ldp x4,x5,[sp,#192] + ldp x6,x7,[sp,#192+16] + add x0,sp,#288 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Rsqr, R); + + ldr x3,[sp,#160] + ldp x4,x5,[sp,#224] + ldp x6,x7,[sp,#224+16] + add x2,sp,#160 + add x0,sp,#256 + bl __ecp_nistz256_mul_mont // p256_mul_mont(Hcub, Hsqr, H); + + ldr x3,[x22] + ldp x4,x5,[sp,#224] + ldp x6,x7,[sp,#224+16] + add x2,x22,#0 + add x0,sp,#96 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, in1_x, Hsqr); + + mov x8,x14 + mov x9,x15 + mov x10,x16 + mov x11,x17 + add x0,sp,#224 + bl __ecp_nistz256_add_to // p256_mul_by_2(Hsqr, U2); + + add x2,sp,#288 + add x0,sp,#0 + bl __ecp_nistz256_sub_morf // p256_sub(res_x, Rsqr, Hsqr); + + add x2,sp,#256 + bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, Hcub); + + add x2,sp,#96 + ldr x3,[x22,#32] // forward load for p256_mul_mont + ldp x4,x5,[sp,#256] + ldp x6,x7,[sp,#256+16] + add x0,sp,#32 + bl __ecp_nistz256_sub_morf // p256_sub(res_y, U2, res_x); + + add x2,x22,#32 + add x0,sp,#128 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, in1_y, Hcub); + + ldr x3,[sp,#192] + ldp x4,x5,[sp,#32] + ldp x6,x7,[sp,#32+16] + add x2,sp,#192 + add x0,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_y, res_y, R); + + add x2,sp,#128 + bl __ecp_nistz256_sub_from // p256_sub(res_y, res_y, S2); + + ldp x4,x5,[sp,#0] // res + ldp x6,x7,[sp,#0+16] + ldp x8,x9,[x23] // in2 + ldp x10,x11,[x23,#16] + ldp x14,x15,[x22,#0] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#0+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+0+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+0+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#0+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#0+48] + stp x14,x15,[x21,#0] + stp x16,x17,[x21,#0+16] + adrp x23,Lone_mont@PAGE-64 + add x23,x23,Lone_mont@PAGEOFF-64 + ldp x14,x15,[x22,#32] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#32+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+32+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+32+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#32+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#32+48] + stp x14,x15,[x21,#32] + stp x16,x17,[x21,#32+16] + ldp x14,x15,[x22,#64] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#64+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + csel x14,x8,x14,ne + csel x15,x9,x15,ne + csel x16,x10,x16,ne + csel x17,x11,x17,ne + stp x14,x15,[x21,#64] + stp x16,x17,[x21,#64+16] + + add sp,x29,#0 // destroy frame + ldp x19,x20,[x29,#16] + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x29,x30,[sp],#80 + AARCH64_VALIDATE_LINK_REGISTER + ret + +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_ord_mul_mont(uint64_t res[4], uint64_t a[4], +// uint64_t b[4]); +.globl _ecp_nistz256_ord_mul_mont +.private_extern _ecp_nistz256_ord_mul_mont + +.align 4 +_ecp_nistz256_ord_mul_mont: + AARCH64_VALID_CALL_TARGET + // Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later. + stp x29,x30,[sp,#-64]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + + adrp x23,Lord@PAGE + add x23,x23,Lord@PAGEOFF + ldr x3,[x2] // bp[0] + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + + ldp x12,x13,[x23,#0] + ldp x21,x22,[x23,#16] + ldr x23,[x23,#32] + + mul x14,x4,x3 // a[0]*b[0] + umulh x8,x4,x3 + + mul x15,x5,x3 // a[1]*b[0] + umulh x9,x5,x3 + + mul x16,x6,x3 // a[2]*b[0] + umulh x10,x6,x3 + + mul x17,x7,x3 // a[3]*b[0] + umulh x19,x7,x3 + + mul x24,x14,x23 + + adds x15,x15,x8 // accumulate high parts of multiplication + adcs x16,x16,x9 + adcs x17,x17,x10 + adc x19,x19,xzr + mov x20,xzr + ldr x3,[x2,#8*1] // b[i] + + lsl x8,x24,#32 + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + mul x8,x4,x3 + adc x11,x11,xzr + mul x9,x5,x3 + + adds x14,x15,x10 + mul x10,x6,x3 + adcs x15,x16,x11 + mul x11,x7,x3 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts + umulh x8,x4,x3 + adcs x15,x15,x9 + umulh x9,x5,x3 + adcs x16,x16,x10 + umulh x10,x6,x3 + adcs x17,x17,x11 + umulh x11,x7,x3 + adc x19,x19,xzr + mul x24,x14,x23 + adds x15,x15,x8 // accumulate high parts + adcs x16,x16,x9 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + ldr x3,[x2,#8*2] // b[i] + + lsl x8,x24,#32 + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + mul x8,x4,x3 + adc x11,x11,xzr + mul x9,x5,x3 + + adds x14,x15,x10 + mul x10,x6,x3 + adcs x15,x16,x11 + mul x11,x7,x3 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts + umulh x8,x4,x3 + adcs x15,x15,x9 + umulh x9,x5,x3 + adcs x16,x16,x10 + umulh x10,x6,x3 + adcs x17,x17,x11 + umulh x11,x7,x3 + adc x19,x19,xzr + mul x24,x14,x23 + adds x15,x15,x8 // accumulate high parts + adcs x16,x16,x9 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + ldr x3,[x2,#8*3] // b[i] + + lsl x8,x24,#32 + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + mul x8,x4,x3 + adc x11,x11,xzr + mul x9,x5,x3 + + adds x14,x15,x10 + mul x10,x6,x3 + adcs x15,x16,x11 + mul x11,x7,x3 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts + umulh x8,x4,x3 + adcs x15,x15,x9 + umulh x9,x5,x3 + adcs x16,x16,x10 + umulh x10,x6,x3 + adcs x17,x17,x11 + umulh x11,x7,x3 + adc x19,x19,xzr + mul x24,x14,x23 + adds x15,x15,x8 // accumulate high parts + adcs x16,x16,x9 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + lsl x8,x24,#32 // last reduction + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + adc x11,x11,xzr + + adds x14,x15,x10 + adcs x15,x16,x11 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + subs x8,x14,x12 // ret -= modulus + sbcs x9,x15,x13 + sbcs x10,x16,x21 + sbcs x11,x17,x22 + sbcs xzr,x19,xzr + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ldp x19,x20,[sp,#16] + ldp x21,x22,[sp,#32] + ldp x23,x24,[sp,#48] + ldr x29,[sp],#64 + ret + + +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_ord_sqr_mont(uint64_t res[4], uint64_t a[4], +// uint64_t rep); +.globl _ecp_nistz256_ord_sqr_mont +.private_extern _ecp_nistz256_ord_sqr_mont + +.align 4 +_ecp_nistz256_ord_sqr_mont: + AARCH64_VALID_CALL_TARGET + // Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later. + stp x29,x30,[sp,#-64]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + + adrp x23,Lord@PAGE + add x23,x23,Lord@PAGEOFF + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + + ldp x12,x13,[x23,#0] + ldp x21,x22,[x23,#16] + ldr x23,[x23,#32] + b Loop_ord_sqr + +.align 4 +Loop_ord_sqr: + sub x2,x2,#1 + //////////////////////////////////////////////////////////////// + // | | | | | |a1*a0| | + // | | | | |a2*a0| | | + // | |a3*a2|a3*a0| | | | + // | | | |a2*a1| | | | + // | | |a3*a1| | | | | + // *| | | | | | | | 2| + // +|a3*a3|a2*a2|a1*a1|a0*a0| + // |--+--+--+--+--+--+--+--| + // |A7|A6|A5|A4|A3|A2|A1|A0|, where Ax is , i.e. follow + // + // "can't overflow" below mark carrying into high part of + // multiplication result, which can't overflow, because it + // can never be all ones. + + mul x15,x5,x4 // a[1]*a[0] + umulh x9,x5,x4 + mul x16,x6,x4 // a[2]*a[0] + umulh x10,x6,x4 + mul x17,x7,x4 // a[3]*a[0] + umulh x19,x7,x4 + + adds x16,x16,x9 // accumulate high parts of multiplication + mul x8,x6,x5 // a[2]*a[1] + umulh x9,x6,x5 + adcs x17,x17,x10 + mul x10,x7,x5 // a[3]*a[1] + umulh x11,x7,x5 + adc x19,x19,xzr // can't overflow + + mul x20,x7,x6 // a[3]*a[2] + umulh x1,x7,x6 + + adds x9,x9,x10 // accumulate high parts of multiplication + mul x14,x4,x4 // a[0]*a[0] + adc x10,x11,xzr // can't overflow + + adds x17,x17,x8 // accumulate low parts of multiplication + umulh x4,x4,x4 + adcs x19,x19,x9 + mul x9,x5,x5 // a[1]*a[1] + adcs x20,x20,x10 + umulh x5,x5,x5 + adc x1,x1,xzr // can't overflow + + adds x15,x15,x15 // acc[1-6]*=2 + mul x10,x6,x6 // a[2]*a[2] + adcs x16,x16,x16 + umulh x6,x6,x6 + adcs x17,x17,x17 + mul x11,x7,x7 // a[3]*a[3] + adcs x19,x19,x19 + umulh x7,x7,x7 + adcs x20,x20,x20 + adcs x1,x1,x1 + adc x3,xzr,xzr + + adds x15,x15,x4 // +a[i]*a[i] + mul x24,x14,x23 + adcs x16,x16,x9 + adcs x17,x17,x5 + adcs x19,x19,x10 + adcs x20,x20,x6 + adcs x1,x1,x11 + adc x3,x3,x7 + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + adc x11,x11,xzr + + adds x14,x15,x10 + adcs x15,x16,x11 + adcs x16,x17,x24 + adc x17,xzr,x24 // can't overflow + mul x11,x14,x23 + lsl x8,x24,#32 + subs x15,x15,x24 + lsr x9,x24,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + subs xzr,x14,#1 + umulh x9,x12,x11 + mul x10,x13,x11 + umulh x24,x13,x11 + + adcs x10,x10,x9 + adc x24,x24,xzr + + adds x14,x15,x10 + adcs x15,x16,x24 + adcs x16,x17,x11 + adc x17,xzr,x11 // can't overflow + mul x24,x14,x23 + lsl x8,x11,#32 + subs x15,x15,x11 + lsr x9,x11,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + adc x11,x11,xzr + + adds x14,x15,x10 + adcs x15,x16,x11 + adcs x16,x17,x24 + adc x17,xzr,x24 // can't overflow + mul x11,x14,x23 + lsl x8,x24,#32 + subs x15,x15,x24 + lsr x9,x24,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + subs xzr,x14,#1 + umulh x9,x12,x11 + mul x10,x13,x11 + umulh x24,x13,x11 + + adcs x10,x10,x9 + adc x24,x24,xzr + + adds x14,x15,x10 + adcs x15,x16,x24 + adcs x16,x17,x11 + adc x17,xzr,x11 // can't overflow + lsl x8,x11,#32 + subs x15,x15,x11 + lsr x9,x11,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + adds x14,x14,x19 // accumulate upper half + adcs x15,x15,x20 + adcs x16,x16,x1 + adcs x17,x17,x3 + adc x19,xzr,xzr + + subs x8,x14,x12 // ret -= modulus + sbcs x9,x15,x13 + sbcs x10,x16,x21 + sbcs x11,x17,x22 + sbcs xzr,x19,xzr + + csel x4,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x5,x15,x9,lo + csel x6,x16,x10,lo + csel x7,x17,x11,lo + + cbnz x2,Loop_ord_sqr + + stp x4,x5,[x0] + stp x6,x7,[x0,#16] + + ldp x19,x20,[sp,#16] + ldp x21,x22,[sp,#32] + ldp x23,x24,[sp,#48] + ldr x29,[sp],#64 + ret + +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_select_w5(uint64_t *val, uint64_t *in_t, int index); +.globl _ecp_nistz256_select_w5 +.private_extern _ecp_nistz256_select_w5 + +.align 4 +_ecp_nistz256_select_w5: + AARCH64_VALID_CALL_TARGET + + // x10 := x0 + // w9 := 0; loop counter and incremented internal index + mov x10, x0 + mov w9, #0 + + // [v16-v21] := 0 + movi v16.16b, #0 + movi v17.16b, #0 + movi v18.16b, #0 + movi v19.16b, #0 + movi v20.16b, #0 + movi v21.16b, #0 + +Lselect_w5_loop: + // Loop 16 times. + + // Increment index (loop counter); tested at the end of the loop + add w9, w9, #1 + + // [v22-v27] := Load a (3*256-bit = 6*128-bit) table entry starting at x1 + // and advance x1 to point to the next entry + ld1 {v22.2d, v23.2d, v24.2d, v25.2d}, [x1],#64 + + // x11 := (w9 == w2)? All 1s : All 0s + cmp w9, w2 + csetm x11, eq + + // continue loading ... + ld1 {v26.2d, v27.2d}, [x1],#32 + + // duplicate mask_64 into Mask (all 0s or all 1s) + dup v3.2d, x11 + + // [v16-v19] := (Mask == all 1s)? [v22-v25] : [v16-v19] + // i.e., values in output registers will remain the same if w9 != w2 + bit v16.16b, v22.16b, v3.16b + bit v17.16b, v23.16b, v3.16b + + bit v18.16b, v24.16b, v3.16b + bit v19.16b, v25.16b, v3.16b + + bit v20.16b, v26.16b, v3.16b + bit v21.16b, v27.16b, v3.16b + + // If bit #4 is not 0 (i.e. idx_ctr < 16) loop back + tbz w9, #4, Lselect_w5_loop + + // Write [v16-v21] to memory at the output pointer + st1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x10],#64 + st1 {v20.2d, v21.2d}, [x10] + + ret + + + +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_select_w7(uint64_t *val, uint64_t *in_t, int index); +.globl _ecp_nistz256_select_w7 +.private_extern _ecp_nistz256_select_w7 + +.align 4 +_ecp_nistz256_select_w7: + AARCH64_VALID_CALL_TARGET + + // w9 := 0; loop counter and incremented internal index + mov w9, #0 + + // [v16-v21] := 0 + movi v16.16b, #0 + movi v17.16b, #0 + movi v18.16b, #0 + movi v19.16b, #0 + +Lselect_w7_loop: + // Loop 64 times. + + // Increment index (loop counter); tested at the end of the loop + add w9, w9, #1 + + // [v22-v25] := Load a (2*256-bit = 4*128-bit) table entry starting at x1 + // and advance x1 to point to the next entry + ld1 {v22.2d, v23.2d, v24.2d, v25.2d}, [x1],#64 + + // x11 := (w9 == w2)? All 1s : All 0s + cmp w9, w2 + csetm x11, eq + + // duplicate mask_64 into Mask (all 0s or all 1s) + dup v3.2d, x11 + + // [v16-v19] := (Mask == all 1s)? [v22-v25] : [v16-v19] + // i.e., values in output registers will remain the same if w9 != w2 + bit v16.16b, v22.16b, v3.16b + bit v17.16b, v23.16b, v3.16b + + bit v18.16b, v24.16b, v3.16b + bit v19.16b, v25.16b, v3.16b + + // If bit #6 is not 0 (i.e. idx_ctr < 64) loop back + tbz w9, #6, Lselect_w7_loop + + // Write [v16-v19] to memory at the output pointer + st1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x0] + + ret + +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__APPLE__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/p256-armv8-asm-linux64.S temporalio-1.3.0/vendor/ring/pregenerated/p256-armv8-asm-linux64.S --- temporalio-1.3.0/vendor/ring/pregenerated/p256-armv8-asm-linux64.S 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/p256-armv8-asm-linux64.S 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1610 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. + +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__ELF__) +#include "ring-core/arm_arch.h" + +.section .rodata +.align 5 +.Lpoly: +.quad 0xffffffffffffffff,0x00000000ffffffff,0x0000000000000000,0xffffffff00000001 +.LRR: // 2^512 mod P precomputed for NIST P256 polynomial +.quad 0x0000000000000003,0xfffffffbffffffff,0xfffffffffffffffe,0x00000004fffffffd +.Lone_mont: +.quad 0x0000000000000001,0xffffffff00000000,0xffffffffffffffff,0x00000000fffffffe +.Lone: +.quad 1,0,0,0 +.Lord: +.quad 0xf3b9cac2fc632551,0xbce6faada7179e84,0xffffffffffffffff,0xffffffff00000000 +.LordK: +.quad 0xccd1c8aaee00bc4f +.byte 69,67,80,95,78,73,83,84,90,50,53,54,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.text + +// void ecp_nistz256_mul_mont(BN_ULONG x0[4],const BN_ULONG x1[4], +// const BN_ULONG x2[4]); +.globl ecp_nistz256_mul_mont +.hidden ecp_nistz256_mul_mont +.type ecp_nistz256_mul_mont,%function +.align 4 +ecp_nistz256_mul_mont: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-32]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + + ldr x3,[x2] // bp[0] + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + adrp x13,.Lpoly + add x13,x13,:lo12:.Lpoly + ldr x12,[x13,#8] + ldr x13,[x13,#24] + + bl __ecp_nistz256_mul_mont + + ldp x19,x20,[sp,#16] + ldp x29,x30,[sp],#32 + AARCH64_VALIDATE_LINK_REGISTER + ret +.size ecp_nistz256_mul_mont,.-ecp_nistz256_mul_mont + +// void ecp_nistz256_sqr_mont(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl ecp_nistz256_sqr_mont +.hidden ecp_nistz256_sqr_mont +.type ecp_nistz256_sqr_mont,%function +.align 4 +ecp_nistz256_sqr_mont: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-32]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + adrp x13,.Lpoly + add x13,x13,:lo12:.Lpoly + ldr x12,[x13,#8] + ldr x13,[x13,#24] + + bl __ecp_nistz256_sqr_mont + + ldp x19,x20,[sp,#16] + ldp x29,x30,[sp],#32 + AARCH64_VALIDATE_LINK_REGISTER + ret +.size ecp_nistz256_sqr_mont,.-ecp_nistz256_sqr_mont + +// void ecp_nistz256_neg(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl ecp_nistz256_neg +.hidden ecp_nistz256_neg +.type ecp_nistz256_neg,%function +.align 4 +ecp_nistz256_neg: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + mov x2,x1 + mov x14,xzr // a = 0 + mov x15,xzr + mov x16,xzr + mov x17,xzr + adrp x13,.Lpoly + add x13,x13,:lo12:.Lpoly + ldr x12,[x13,#8] + ldr x13,[x13,#24] + + bl __ecp_nistz256_sub_from + + ldp x29,x30,[sp],#16 + AARCH64_VALIDATE_LINK_REGISTER + ret +.size ecp_nistz256_neg,.-ecp_nistz256_neg + +// note that __ecp_nistz256_mul_mont expects a[0-3] input pre-loaded +// to x4-x7 and b[0] - to x3 +.type __ecp_nistz256_mul_mont,%function +.align 4 +__ecp_nistz256_mul_mont: + mul x14,x4,x3 // a[0]*b[0] + umulh x8,x4,x3 + + mul x15,x5,x3 // a[1]*b[0] + umulh x9,x5,x3 + + mul x16,x6,x3 // a[2]*b[0] + umulh x10,x6,x3 + + mul x17,x7,x3 // a[3]*b[0] + umulh x11,x7,x3 + ldr x3,[x2,#8] // b[1] + + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adc x19,xzr,x11 + mov x20,xzr + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + mul x8,x4,x3 // lo(a[0]*b[i]) + adcs x15,x16,x9 + mul x9,x5,x3 // lo(a[1]*b[i]) + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + mul x10,x6,x3 // lo(a[2]*b[i]) + adcs x17,x19,x11 + mul x11,x7,x3 // lo(a[3]*b[i]) + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts of multiplication + umulh x8,x4,x3 // hi(a[0]*b[i]) + adcs x15,x15,x9 + umulh x9,x5,x3 // hi(a[1]*b[i]) + adcs x16,x16,x10 + umulh x10,x6,x3 // hi(a[2]*b[i]) + adcs x17,x17,x11 + umulh x11,x7,x3 // hi(a[3]*b[i]) + adc x19,x19,xzr + ldr x3,[x2,#8*(1+1)] // b[1+1] + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + mul x8,x4,x3 // lo(a[0]*b[i]) + adcs x15,x16,x9 + mul x9,x5,x3 // lo(a[1]*b[i]) + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + mul x10,x6,x3 // lo(a[2]*b[i]) + adcs x17,x19,x11 + mul x11,x7,x3 // lo(a[3]*b[i]) + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts of multiplication + umulh x8,x4,x3 // hi(a[0]*b[i]) + adcs x15,x15,x9 + umulh x9,x5,x3 // hi(a[1]*b[i]) + adcs x16,x16,x10 + umulh x10,x6,x3 // hi(a[2]*b[i]) + adcs x17,x17,x11 + umulh x11,x7,x3 // hi(a[3]*b[i]) + adc x19,x19,xzr + ldr x3,[x2,#8*(2+1)] // b[2+1] + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + mul x8,x4,x3 // lo(a[0]*b[i]) + adcs x15,x16,x9 + mul x9,x5,x3 // lo(a[1]*b[i]) + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + mul x10,x6,x3 // lo(a[2]*b[i]) + adcs x17,x19,x11 + mul x11,x7,x3 // lo(a[3]*b[i]) + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts of multiplication + umulh x8,x4,x3 // hi(a[0]*b[i]) + adcs x15,x15,x9 + umulh x9,x5,x3 // hi(a[1]*b[i]) + adcs x16,x16,x10 + umulh x10,x6,x3 // hi(a[2]*b[i]) + adcs x17,x17,x11 + umulh x11,x7,x3 // hi(a[3]*b[i]) + adc x19,x19,xzr + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + // last reduction + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + adcs x17,x19,x11 + adc x19,x20,xzr + + adds x8,x14,#1 // subs x8,x14,#-1 // tmp = ret-modulus + sbcs x9,x15,x12 + sbcs x10,x16,xzr + sbcs x11,x17,x13 + sbcs xzr,x19,xzr // did it borrow? + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ret +.size __ecp_nistz256_mul_mont,.-__ecp_nistz256_mul_mont + +// note that __ecp_nistz256_sqr_mont expects a[0-3] input pre-loaded +// to x4-x7 +.type __ecp_nistz256_sqr_mont,%function +.align 4 +__ecp_nistz256_sqr_mont: + // | | | | | |a1*a0| | + // | | | | |a2*a0| | | + // | |a3*a2|a3*a0| | | | + // | | | |a2*a1| | | | + // | | |a3*a1| | | | | + // *| | | | | | | | 2| + // +|a3*a3|a2*a2|a1*a1|a0*a0| + // |--+--+--+--+--+--+--+--| + // |A7|A6|A5|A4|A3|A2|A1|A0|, where Ax is , i.e. follow + // + // "can't overflow" below mark carrying into high part of + // multiplication result, which can't overflow, because it + // can never be all ones. + + mul x15,x5,x4 // a[1]*a[0] + umulh x9,x5,x4 + mul x16,x6,x4 // a[2]*a[0] + umulh x10,x6,x4 + mul x17,x7,x4 // a[3]*a[0] + umulh x19,x7,x4 + + adds x16,x16,x9 // accumulate high parts of multiplication + mul x8,x6,x5 // a[2]*a[1] + umulh x9,x6,x5 + adcs x17,x17,x10 + mul x10,x7,x5 // a[3]*a[1] + umulh x11,x7,x5 + adc x19,x19,xzr // can't overflow + + mul x20,x7,x6 // a[3]*a[2] + umulh x1,x7,x6 + + adds x9,x9,x10 // accumulate high parts of multiplication + mul x14,x4,x4 // a[0]*a[0] + adc x10,x11,xzr // can't overflow + + adds x17,x17,x8 // accumulate low parts of multiplication + umulh x4,x4,x4 + adcs x19,x19,x9 + mul x9,x5,x5 // a[1]*a[1] + adcs x20,x20,x10 + umulh x5,x5,x5 + adc x1,x1,xzr // can't overflow + + adds x15,x15,x15 // acc[1-6]*=2 + mul x10,x6,x6 // a[2]*a[2] + adcs x16,x16,x16 + umulh x6,x6,x6 + adcs x17,x17,x17 + mul x11,x7,x7 // a[3]*a[3] + adcs x19,x19,x19 + umulh x7,x7,x7 + adcs x20,x20,x20 + adcs x1,x1,x1 + adc x2,xzr,xzr + + adds x15,x15,x4 // +a[i]*a[i] + adcs x16,x16,x9 + adcs x17,x17,x5 + adcs x19,x19,x10 + adcs x20,x20,x6 + lsl x8,x14,#32 + adcs x1,x1,x11 + lsr x9,x14,#32 + adc x2,x2,x7 + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + lsl x8,x14,#32 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + lsr x9,x14,#32 + adc x17,x11,xzr // can't overflow + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + lsl x8,x14,#32 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + lsr x9,x14,#32 + adc x17,x11,xzr // can't overflow + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + lsl x8,x14,#32 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + lsr x9,x14,#32 + adc x17,x11,xzr // can't overflow + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + adc x17,x11,xzr // can't overflow + + adds x14,x14,x19 // accumulate upper half + adcs x15,x15,x20 + adcs x16,x16,x1 + adcs x17,x17,x2 + adc x19,xzr,xzr + + adds x8,x14,#1 // subs x8,x14,#-1 // tmp = ret-modulus + sbcs x9,x15,x12 + sbcs x10,x16,xzr + sbcs x11,x17,x13 + sbcs xzr,x19,xzr // did it borrow? + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ret +.size __ecp_nistz256_sqr_mont,.-__ecp_nistz256_sqr_mont + +// Note that __ecp_nistz256_add_to expects both input vectors pre-loaded to +// x4-x7 and x8-x11. This is done because it's used in multiple +// contexts, e.g. in multiplication by 2 and 3... +.type __ecp_nistz256_add_to,%function +.align 4 +__ecp_nistz256_add_to: + adds x14,x14,x8 // ret = a+b + adcs x15,x15,x9 + adcs x16,x16,x10 + adcs x17,x17,x11 + adc x1,xzr,xzr // zap x1 + + adds x8,x14,#1 // subs x8,x4,#-1 // tmp = ret-modulus + sbcs x9,x15,x12 + sbcs x10,x16,xzr + sbcs x11,x17,x13 + sbcs xzr,x1,xzr // did subtraction borrow? + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ret +.size __ecp_nistz256_add_to,.-__ecp_nistz256_add_to + +.type __ecp_nistz256_sub_from,%function +.align 4 +__ecp_nistz256_sub_from: + ldp x8,x9,[x2] + ldp x10,x11,[x2,#16] + subs x14,x14,x8 // ret = a-b + sbcs x15,x15,x9 + sbcs x16,x16,x10 + sbcs x17,x17,x11 + sbc x1,xzr,xzr // zap x1 + + subs x8,x14,#1 // adds x8,x4,#-1 // tmp = ret+modulus + adcs x9,x15,x12 + adcs x10,x16,xzr + adc x11,x17,x13 + cmp x1,xzr // did subtraction borrow? + + csel x14,x14,x8,eq // ret = borrow ? ret+modulus : ret + csel x15,x15,x9,eq + csel x16,x16,x10,eq + stp x14,x15,[x0] + csel x17,x17,x11,eq + stp x16,x17,[x0,#16] + + ret +.size __ecp_nistz256_sub_from,.-__ecp_nistz256_sub_from + +.type __ecp_nistz256_sub_morf,%function +.align 4 +__ecp_nistz256_sub_morf: + ldp x8,x9,[x2] + ldp x10,x11,[x2,#16] + subs x14,x8,x14 // ret = b-a + sbcs x15,x9,x15 + sbcs x16,x10,x16 + sbcs x17,x11,x17 + sbc x1,xzr,xzr // zap x1 + + subs x8,x14,#1 // adds x8,x4,#-1 // tmp = ret+modulus + adcs x9,x15,x12 + adcs x10,x16,xzr + adc x11,x17,x13 + cmp x1,xzr // did subtraction borrow? + + csel x14,x14,x8,eq // ret = borrow ? ret+modulus : ret + csel x15,x15,x9,eq + csel x16,x16,x10,eq + stp x14,x15,[x0] + csel x17,x17,x11,eq + stp x16,x17,[x0,#16] + + ret +.size __ecp_nistz256_sub_morf,.-__ecp_nistz256_sub_morf + +.type __ecp_nistz256_div_by_2,%function +.align 4 +__ecp_nistz256_div_by_2: + subs x8,x14,#1 // adds x8,x4,#-1 // tmp = a+modulus + adcs x9,x15,x12 + adcs x10,x16,xzr + adcs x11,x17,x13 + adc x1,xzr,xzr // zap x1 + tst x14,#1 // is a even? + + csel x14,x14,x8,eq // ret = even ? a : a+modulus + csel x15,x15,x9,eq + csel x16,x16,x10,eq + csel x17,x17,x11,eq + csel x1,xzr,x1,eq + + lsr x14,x14,#1 // ret >>= 1 + orr x14,x14,x15,lsl#63 + lsr x15,x15,#1 + orr x15,x15,x16,lsl#63 + lsr x16,x16,#1 + orr x16,x16,x17,lsl#63 + lsr x17,x17,#1 + stp x14,x15,[x0] + orr x17,x17,x1,lsl#63 + stp x16,x17,[x0,#16] + + ret +.size __ecp_nistz256_div_by_2,.-__ecp_nistz256_div_by_2 +.globl ecp_nistz256_point_double +.hidden ecp_nistz256_point_double +.type ecp_nistz256_point_double,%function +.align 5 +ecp_nistz256_point_double: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + sub sp,sp,#32*4 + +.Ldouble_shortcut: + ldp x14,x15,[x1,#32] + mov x21,x0 + ldp x16,x17,[x1,#48] + mov x22,x1 + adrp x13,.Lpoly + add x13,x13,:lo12:.Lpoly + ldr x12,[x13,#8] + mov x8,x14 + ldr x13,[x13,#24] + mov x9,x15 + ldp x4,x5,[x22,#64] // forward load for p256_sqr_mont + mov x10,x16 + mov x11,x17 + ldp x6,x7,[x22,#64+16] + add x0,sp,#0 + bl __ecp_nistz256_add_to // p256_mul_by_2(S, in_y); + + add x0,sp,#64 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Zsqr, in_z); + + ldp x8,x9,[x22] + ldp x10,x11,[x22,#16] + mov x4,x14 // put Zsqr aside for p256_sub + mov x5,x15 + mov x6,x16 + mov x7,x17 + add x0,sp,#32 + bl __ecp_nistz256_add_to // p256_add(M, Zsqr, in_x); + + add x2,x22,#0 + mov x14,x4 // restore Zsqr + mov x15,x5 + ldp x4,x5,[sp,#0] // forward load for p256_sqr_mont + mov x16,x6 + mov x17,x7 + ldp x6,x7,[sp,#0+16] + add x0,sp,#64 + bl __ecp_nistz256_sub_morf // p256_sub(Zsqr, in_x, Zsqr); + + add x0,sp,#0 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(S, S); + + ldr x3,[x22,#32] + ldp x4,x5,[x22,#64] + ldp x6,x7,[x22,#64+16] + add x2,x22,#32 + add x0,sp,#96 + bl __ecp_nistz256_mul_mont // p256_mul_mont(tmp0, in_z, in_y); + + mov x8,x14 + mov x9,x15 + ldp x4,x5,[sp,#0] // forward load for p256_sqr_mont + mov x10,x16 + mov x11,x17 + ldp x6,x7,[sp,#0+16] + add x0,x21,#64 + bl __ecp_nistz256_add_to // p256_mul_by_2(res_z, tmp0); + + add x0,sp,#96 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(tmp0, S); + + ldr x3,[sp,#64] // forward load for p256_mul_mont + ldp x4,x5,[sp,#32] + ldp x6,x7,[sp,#32+16] + add x0,x21,#32 + bl __ecp_nistz256_div_by_2 // p256_div_by_2(res_y, tmp0); + + add x2,sp,#64 + add x0,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(M, M, Zsqr); + + mov x8,x14 // duplicate M + mov x9,x15 + mov x10,x16 + mov x11,x17 + mov x4,x14 // put M aside + mov x5,x15 + mov x6,x16 + mov x7,x17 + add x0,sp,#32 + bl __ecp_nistz256_add_to + mov x8,x4 // restore M + mov x9,x5 + ldr x3,[x22] // forward load for p256_mul_mont + mov x10,x6 + ldp x4,x5,[sp,#0] + mov x11,x7 + ldp x6,x7,[sp,#0+16] + bl __ecp_nistz256_add_to // p256_mul_by_3(M, M); + + add x2,x22,#0 + add x0,sp,#0 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S, S, in_x); + + mov x8,x14 + mov x9,x15 + ldp x4,x5,[sp,#32] // forward load for p256_sqr_mont + mov x10,x16 + mov x11,x17 + ldp x6,x7,[sp,#32+16] + add x0,sp,#96 + bl __ecp_nistz256_add_to // p256_mul_by_2(tmp0, S); + + add x0,x21,#0 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(res_x, M); + + add x2,sp,#96 + bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, tmp0); + + add x2,sp,#0 + add x0,sp,#0 + bl __ecp_nistz256_sub_morf // p256_sub(S, S, res_x); + + ldr x3,[sp,#32] + mov x4,x14 // copy S + mov x5,x15 + mov x6,x16 + mov x7,x17 + add x2,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S, S, M); + + add x2,x21,#32 + add x0,x21,#32 + bl __ecp_nistz256_sub_from // p256_sub(res_y, S, res_y); + + add sp,x29,#0 // destroy frame + ldp x19,x20,[x29,#16] + ldp x21,x22,[x29,#32] + ldp x29,x30,[sp],#96 + AARCH64_VALIDATE_LINK_REGISTER + ret +.size ecp_nistz256_point_double,.-ecp_nistz256_point_double +.globl ecp_nistz256_point_add +.hidden ecp_nistz256_point_add +.type ecp_nistz256_point_add,%function +.align 5 +ecp_nistz256_point_add: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#32*12 + + ldp x4,x5,[x2,#64] // in2_z + ldp x6,x7,[x2,#64+16] + mov x21,x0 + mov x22,x1 + mov x23,x2 + adrp x13,.Lpoly + add x13,x13,:lo12:.Lpoly + ldr x12,[x13,#8] + ldr x13,[x13,#24] + orr x8,x4,x5 + orr x10,x6,x7 + orr x25,x8,x10 + cmp x25,#0 + csetm x25,ne // ~in2infty + add x0,sp,#192 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z2sqr, in2_z); + + ldp x4,x5,[x22,#64] // in1_z + ldp x6,x7,[x22,#64+16] + orr x8,x4,x5 + orr x10,x6,x7 + orr x24,x8,x10 + cmp x24,#0 + csetm x24,ne // ~in1infty + add x0,sp,#128 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); + + ldr x3,[x23,#64] + ldp x4,x5,[sp,#192] + ldp x6,x7,[sp,#192+16] + add x2,x23,#64 + add x0,sp,#320 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S1, Z2sqr, in2_z); + + ldr x3,[x22,#64] + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x2,x22,#64 + add x0,sp,#352 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, Z1sqr, in1_z); + + ldr x3,[x22,#32] + ldp x4,x5,[sp,#320] + ldp x6,x7,[sp,#320+16] + add x2,x22,#32 + add x0,sp,#320 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S1, S1, in1_y); + + ldr x3,[x23,#32] + ldp x4,x5,[sp,#352] + ldp x6,x7,[sp,#352+16] + add x2,x23,#32 + add x0,sp,#352 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S2, in2_y); + + add x2,sp,#320 + ldr x3,[sp,#192] // forward load for p256_mul_mont + ldp x4,x5,[x22] + ldp x6,x7,[x22,#16] + add x0,sp,#160 + bl __ecp_nistz256_sub_from // p256_sub(R, S2, S1); + + orr x14,x14,x15 // see if result is zero + orr x16,x16,x17 + orr x26,x14,x16 // ~is_equal(S1,S2) + + add x2,sp,#192 + add x0,sp,#256 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U1, in1_x, Z2sqr); + + ldr x3,[sp,#128] + ldp x4,x5,[x23] + ldp x6,x7,[x23,#16] + add x2,sp,#128 + add x0,sp,#288 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, in2_x, Z1sqr); + + add x2,sp,#256 + ldp x4,x5,[sp,#160] // forward load for p256_sqr_mont + ldp x6,x7,[sp,#160+16] + add x0,sp,#96 + bl __ecp_nistz256_sub_from // p256_sub(H, U2, U1); + + orr x14,x14,x15 // see if result is zero + orr x16,x16,x17 + orr x14,x14,x16 // ~is_equal(U1,U2) + + mvn x27,x24 // -1/0 -> 0/-1 + mvn x28,x25 // -1/0 -> 0/-1 + orr x14,x14,x27 + orr x14,x14,x28 + orr x14,x14,x26 + cbnz x14,.Ladd_proceed // if(~is_equal(U1,U2) | in1infty | in2infty | ~is_equal(S1,S2)) + +.Ladd_double: + mov x1,x22 + mov x0,x21 + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + add sp,sp,#256 // #256 is from #32*(12-4). difference in stack frames + b .Ldouble_shortcut + +.align 4 +.Ladd_proceed: + add x0,sp,#192 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Rsqr, R); + + ldr x3,[x22,#64] + ldp x4,x5,[sp,#96] + ldp x6,x7,[sp,#96+16] + add x2,x22,#64 + add x0,sp,#64 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, H, in1_z); + + ldp x4,x5,[sp,#96] + ldp x6,x7,[sp,#96+16] + add x0,sp,#128 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Hsqr, H); + + ldr x3,[x23,#64] + ldp x4,x5,[sp,#64] + ldp x6,x7,[sp,#64+16] + add x2,x23,#64 + add x0,sp,#64 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, res_z, in2_z); + + ldr x3,[sp,#96] + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x2,sp,#96 + add x0,sp,#224 + bl __ecp_nistz256_mul_mont // p256_mul_mont(Hcub, Hsqr, H); + + ldr x3,[sp,#128] + ldp x4,x5,[sp,#256] + ldp x6,x7,[sp,#256+16] + add x2,sp,#128 + add x0,sp,#288 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, U1, Hsqr); + + mov x8,x14 + mov x9,x15 + mov x10,x16 + mov x11,x17 + add x0,sp,#128 + bl __ecp_nistz256_add_to // p256_mul_by_2(Hsqr, U2); + + add x2,sp,#192 + add x0,sp,#0 + bl __ecp_nistz256_sub_morf // p256_sub(res_x, Rsqr, Hsqr); + + add x2,sp,#224 + bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, Hcub); + + add x2,sp,#288 + ldr x3,[sp,#224] // forward load for p256_mul_mont + ldp x4,x5,[sp,#320] + ldp x6,x7,[sp,#320+16] + add x0,sp,#32 + bl __ecp_nistz256_sub_morf // p256_sub(res_y, U2, res_x); + + add x2,sp,#224 + add x0,sp,#352 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S1, Hcub); + + ldr x3,[sp,#160] + ldp x4,x5,[sp,#32] + ldp x6,x7,[sp,#32+16] + add x2,sp,#160 + add x0,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_y, res_y, R); + + add x2,sp,#352 + bl __ecp_nistz256_sub_from // p256_sub(res_y, res_y, S2); + + ldp x4,x5,[sp,#0] // res + ldp x6,x7,[sp,#0+16] + ldp x8,x9,[x23] // in2 + ldp x10,x11,[x23,#16] + ldp x14,x15,[x22,#0] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#0+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+0+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+0+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#0+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#0+48] + stp x14,x15,[x21,#0] + stp x16,x17,[x21,#0+16] + ldp x14,x15,[x22,#32] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#32+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+32+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+32+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#32+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#32+48] + stp x14,x15,[x21,#32] + stp x16,x17,[x21,#32+16] + ldp x14,x15,[x22,#64] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#64+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + csel x14,x8,x14,ne + csel x15,x9,x15,ne + csel x16,x10,x16,ne + csel x17,x11,x17,ne + stp x14,x15,[x21,#64] + stp x16,x17,[x21,#64+16] + +.Ladd_done: + add sp,x29,#0 // destroy frame + ldp x19,x20,[x29,#16] + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 + AARCH64_VALIDATE_LINK_REGISTER + ret +.size ecp_nistz256_point_add,.-ecp_nistz256_point_add +.globl ecp_nistz256_point_add_affine +.hidden ecp_nistz256_point_add_affine +.type ecp_nistz256_point_add_affine,%function +.align 5 +ecp_nistz256_point_add_affine: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-80]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + sub sp,sp,#32*10 + + mov x21,x0 + mov x22,x1 + mov x23,x2 + adrp x13,.Lpoly + add x13,x13,:lo12:.Lpoly + ldr x12,[x13,#8] + ldr x13,[x13,#24] + + ldp x4,x5,[x1,#64] // in1_z + ldp x6,x7,[x1,#64+16] + orr x8,x4,x5 + orr x10,x6,x7 + orr x24,x8,x10 + cmp x24,#0 + csetm x24,ne // ~in1infty + + ldp x14,x15,[x2] // in2_x + ldp x16,x17,[x2,#16] + ldp x8,x9,[x2,#32] // in2_y + ldp x10,x11,[x2,#48] + orr x14,x14,x15 + orr x16,x16,x17 + orr x8,x8,x9 + orr x10,x10,x11 + orr x14,x14,x16 + orr x8,x8,x10 + orr x25,x14,x8 + cmp x25,#0 + csetm x25,ne // ~in2infty + + add x0,sp,#128 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); + + mov x4,x14 + mov x5,x15 + mov x6,x16 + mov x7,x17 + ldr x3,[x23] + add x2,x23,#0 + add x0,sp,#96 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, Z1sqr, in2_x); + + add x2,x22,#0 + ldr x3,[x22,#64] // forward load for p256_mul_mont + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x0,sp,#160 + bl __ecp_nistz256_sub_from // p256_sub(H, U2, in1_x); + + add x2,x22,#64 + add x0,sp,#128 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, Z1sqr, in1_z); + + ldr x3,[x22,#64] + ldp x4,x5,[sp,#160] + ldp x6,x7,[sp,#160+16] + add x2,x22,#64 + add x0,sp,#64 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, H, in1_z); + + ldr x3,[x23,#32] + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x2,x23,#32 + add x0,sp,#128 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S2, in2_y); + + add x2,x22,#32 + ldp x4,x5,[sp,#160] // forward load for p256_sqr_mont + ldp x6,x7,[sp,#160+16] + add x0,sp,#192 + bl __ecp_nistz256_sub_from // p256_sub(R, S2, in1_y); + + add x0,sp,#224 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Hsqr, H); + + ldp x4,x5,[sp,#192] + ldp x6,x7,[sp,#192+16] + add x0,sp,#288 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Rsqr, R); + + ldr x3,[sp,#160] + ldp x4,x5,[sp,#224] + ldp x6,x7,[sp,#224+16] + add x2,sp,#160 + add x0,sp,#256 + bl __ecp_nistz256_mul_mont // p256_mul_mont(Hcub, Hsqr, H); + + ldr x3,[x22] + ldp x4,x5,[sp,#224] + ldp x6,x7,[sp,#224+16] + add x2,x22,#0 + add x0,sp,#96 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, in1_x, Hsqr); + + mov x8,x14 + mov x9,x15 + mov x10,x16 + mov x11,x17 + add x0,sp,#224 + bl __ecp_nistz256_add_to // p256_mul_by_2(Hsqr, U2); + + add x2,sp,#288 + add x0,sp,#0 + bl __ecp_nistz256_sub_morf // p256_sub(res_x, Rsqr, Hsqr); + + add x2,sp,#256 + bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, Hcub); + + add x2,sp,#96 + ldr x3,[x22,#32] // forward load for p256_mul_mont + ldp x4,x5,[sp,#256] + ldp x6,x7,[sp,#256+16] + add x0,sp,#32 + bl __ecp_nistz256_sub_morf // p256_sub(res_y, U2, res_x); + + add x2,x22,#32 + add x0,sp,#128 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, in1_y, Hcub); + + ldr x3,[sp,#192] + ldp x4,x5,[sp,#32] + ldp x6,x7,[sp,#32+16] + add x2,sp,#192 + add x0,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_y, res_y, R); + + add x2,sp,#128 + bl __ecp_nistz256_sub_from // p256_sub(res_y, res_y, S2); + + ldp x4,x5,[sp,#0] // res + ldp x6,x7,[sp,#0+16] + ldp x8,x9,[x23] // in2 + ldp x10,x11,[x23,#16] + ldp x14,x15,[x22,#0] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#0+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+0+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+0+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#0+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#0+48] + stp x14,x15,[x21,#0] + stp x16,x17,[x21,#0+16] + adrp x23,.Lone_mont-64 + add x23,x23,:lo12:.Lone_mont-64 + ldp x14,x15,[x22,#32] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#32+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+32+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+32+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#32+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#32+48] + stp x14,x15,[x21,#32] + stp x16,x17,[x21,#32+16] + ldp x14,x15,[x22,#64] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#64+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + csel x14,x8,x14,ne + csel x15,x9,x15,ne + csel x16,x10,x16,ne + csel x17,x11,x17,ne + stp x14,x15,[x21,#64] + stp x16,x17,[x21,#64+16] + + add sp,x29,#0 // destroy frame + ldp x19,x20,[x29,#16] + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x29,x30,[sp],#80 + AARCH64_VALIDATE_LINK_REGISTER + ret +.size ecp_nistz256_point_add_affine,.-ecp_nistz256_point_add_affine +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_ord_mul_mont(uint64_t res[4], uint64_t a[4], +// uint64_t b[4]); +.globl ecp_nistz256_ord_mul_mont +.hidden ecp_nistz256_ord_mul_mont +.type ecp_nistz256_ord_mul_mont,%function +.align 4 +ecp_nistz256_ord_mul_mont: + AARCH64_VALID_CALL_TARGET + // Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later. + stp x29,x30,[sp,#-64]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + + adrp x23,.Lord + add x23,x23,:lo12:.Lord + ldr x3,[x2] // bp[0] + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + + ldp x12,x13,[x23,#0] + ldp x21,x22,[x23,#16] + ldr x23,[x23,#32] + + mul x14,x4,x3 // a[0]*b[0] + umulh x8,x4,x3 + + mul x15,x5,x3 // a[1]*b[0] + umulh x9,x5,x3 + + mul x16,x6,x3 // a[2]*b[0] + umulh x10,x6,x3 + + mul x17,x7,x3 // a[3]*b[0] + umulh x19,x7,x3 + + mul x24,x14,x23 + + adds x15,x15,x8 // accumulate high parts of multiplication + adcs x16,x16,x9 + adcs x17,x17,x10 + adc x19,x19,xzr + mov x20,xzr + ldr x3,[x2,#8*1] // b[i] + + lsl x8,x24,#32 + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + mul x8,x4,x3 + adc x11,x11,xzr + mul x9,x5,x3 + + adds x14,x15,x10 + mul x10,x6,x3 + adcs x15,x16,x11 + mul x11,x7,x3 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts + umulh x8,x4,x3 + adcs x15,x15,x9 + umulh x9,x5,x3 + adcs x16,x16,x10 + umulh x10,x6,x3 + adcs x17,x17,x11 + umulh x11,x7,x3 + adc x19,x19,xzr + mul x24,x14,x23 + adds x15,x15,x8 // accumulate high parts + adcs x16,x16,x9 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + ldr x3,[x2,#8*2] // b[i] + + lsl x8,x24,#32 + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + mul x8,x4,x3 + adc x11,x11,xzr + mul x9,x5,x3 + + adds x14,x15,x10 + mul x10,x6,x3 + adcs x15,x16,x11 + mul x11,x7,x3 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts + umulh x8,x4,x3 + adcs x15,x15,x9 + umulh x9,x5,x3 + adcs x16,x16,x10 + umulh x10,x6,x3 + adcs x17,x17,x11 + umulh x11,x7,x3 + adc x19,x19,xzr + mul x24,x14,x23 + adds x15,x15,x8 // accumulate high parts + adcs x16,x16,x9 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + ldr x3,[x2,#8*3] // b[i] + + lsl x8,x24,#32 + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + mul x8,x4,x3 + adc x11,x11,xzr + mul x9,x5,x3 + + adds x14,x15,x10 + mul x10,x6,x3 + adcs x15,x16,x11 + mul x11,x7,x3 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts + umulh x8,x4,x3 + adcs x15,x15,x9 + umulh x9,x5,x3 + adcs x16,x16,x10 + umulh x10,x6,x3 + adcs x17,x17,x11 + umulh x11,x7,x3 + adc x19,x19,xzr + mul x24,x14,x23 + adds x15,x15,x8 // accumulate high parts + adcs x16,x16,x9 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + lsl x8,x24,#32 // last reduction + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + adc x11,x11,xzr + + adds x14,x15,x10 + adcs x15,x16,x11 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + subs x8,x14,x12 // ret -= modulus + sbcs x9,x15,x13 + sbcs x10,x16,x21 + sbcs x11,x17,x22 + sbcs xzr,x19,xzr + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ldp x19,x20,[sp,#16] + ldp x21,x22,[sp,#32] + ldp x23,x24,[sp,#48] + ldr x29,[sp],#64 + ret +.size ecp_nistz256_ord_mul_mont,.-ecp_nistz256_ord_mul_mont + +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_ord_sqr_mont(uint64_t res[4], uint64_t a[4], +// uint64_t rep); +.globl ecp_nistz256_ord_sqr_mont +.hidden ecp_nistz256_ord_sqr_mont +.type ecp_nistz256_ord_sqr_mont,%function +.align 4 +ecp_nistz256_ord_sqr_mont: + AARCH64_VALID_CALL_TARGET + // Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later. + stp x29,x30,[sp,#-64]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + + adrp x23,.Lord + add x23,x23,:lo12:.Lord + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + + ldp x12,x13,[x23,#0] + ldp x21,x22,[x23,#16] + ldr x23,[x23,#32] + b .Loop_ord_sqr + +.align 4 +.Loop_ord_sqr: + sub x2,x2,#1 + //////////////////////////////////////////////////////////////// + // | | | | | |a1*a0| | + // | | | | |a2*a0| | | + // | |a3*a2|a3*a0| | | | + // | | | |a2*a1| | | | + // | | |a3*a1| | | | | + // *| | | | | | | | 2| + // +|a3*a3|a2*a2|a1*a1|a0*a0| + // |--+--+--+--+--+--+--+--| + // |A7|A6|A5|A4|A3|A2|A1|A0|, where Ax is , i.e. follow + // + // "can't overflow" below mark carrying into high part of + // multiplication result, which can't overflow, because it + // can never be all ones. + + mul x15,x5,x4 // a[1]*a[0] + umulh x9,x5,x4 + mul x16,x6,x4 // a[2]*a[0] + umulh x10,x6,x4 + mul x17,x7,x4 // a[3]*a[0] + umulh x19,x7,x4 + + adds x16,x16,x9 // accumulate high parts of multiplication + mul x8,x6,x5 // a[2]*a[1] + umulh x9,x6,x5 + adcs x17,x17,x10 + mul x10,x7,x5 // a[3]*a[1] + umulh x11,x7,x5 + adc x19,x19,xzr // can't overflow + + mul x20,x7,x6 // a[3]*a[2] + umulh x1,x7,x6 + + adds x9,x9,x10 // accumulate high parts of multiplication + mul x14,x4,x4 // a[0]*a[0] + adc x10,x11,xzr // can't overflow + + adds x17,x17,x8 // accumulate low parts of multiplication + umulh x4,x4,x4 + adcs x19,x19,x9 + mul x9,x5,x5 // a[1]*a[1] + adcs x20,x20,x10 + umulh x5,x5,x5 + adc x1,x1,xzr // can't overflow + + adds x15,x15,x15 // acc[1-6]*=2 + mul x10,x6,x6 // a[2]*a[2] + adcs x16,x16,x16 + umulh x6,x6,x6 + adcs x17,x17,x17 + mul x11,x7,x7 // a[3]*a[3] + adcs x19,x19,x19 + umulh x7,x7,x7 + adcs x20,x20,x20 + adcs x1,x1,x1 + adc x3,xzr,xzr + + adds x15,x15,x4 // +a[i]*a[i] + mul x24,x14,x23 + adcs x16,x16,x9 + adcs x17,x17,x5 + adcs x19,x19,x10 + adcs x20,x20,x6 + adcs x1,x1,x11 + adc x3,x3,x7 + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + adc x11,x11,xzr + + adds x14,x15,x10 + adcs x15,x16,x11 + adcs x16,x17,x24 + adc x17,xzr,x24 // can't overflow + mul x11,x14,x23 + lsl x8,x24,#32 + subs x15,x15,x24 + lsr x9,x24,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + subs xzr,x14,#1 + umulh x9,x12,x11 + mul x10,x13,x11 + umulh x24,x13,x11 + + adcs x10,x10,x9 + adc x24,x24,xzr + + adds x14,x15,x10 + adcs x15,x16,x24 + adcs x16,x17,x11 + adc x17,xzr,x11 // can't overflow + mul x24,x14,x23 + lsl x8,x11,#32 + subs x15,x15,x11 + lsr x9,x11,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + adc x11,x11,xzr + + adds x14,x15,x10 + adcs x15,x16,x11 + adcs x16,x17,x24 + adc x17,xzr,x24 // can't overflow + mul x11,x14,x23 + lsl x8,x24,#32 + subs x15,x15,x24 + lsr x9,x24,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + subs xzr,x14,#1 + umulh x9,x12,x11 + mul x10,x13,x11 + umulh x24,x13,x11 + + adcs x10,x10,x9 + adc x24,x24,xzr + + adds x14,x15,x10 + adcs x15,x16,x24 + adcs x16,x17,x11 + adc x17,xzr,x11 // can't overflow + lsl x8,x11,#32 + subs x15,x15,x11 + lsr x9,x11,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + adds x14,x14,x19 // accumulate upper half + adcs x15,x15,x20 + adcs x16,x16,x1 + adcs x17,x17,x3 + adc x19,xzr,xzr + + subs x8,x14,x12 // ret -= modulus + sbcs x9,x15,x13 + sbcs x10,x16,x21 + sbcs x11,x17,x22 + sbcs xzr,x19,xzr + + csel x4,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x5,x15,x9,lo + csel x6,x16,x10,lo + csel x7,x17,x11,lo + + cbnz x2,.Loop_ord_sqr + + stp x4,x5,[x0] + stp x6,x7,[x0,#16] + + ldp x19,x20,[sp,#16] + ldp x21,x22,[sp,#32] + ldp x23,x24,[sp,#48] + ldr x29,[sp],#64 + ret +.size ecp_nistz256_ord_sqr_mont,.-ecp_nistz256_ord_sqr_mont +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_select_w5(uint64_t *val, uint64_t *in_t, int index); +.globl ecp_nistz256_select_w5 +.hidden ecp_nistz256_select_w5 +.type ecp_nistz256_select_w5,%function +.align 4 +ecp_nistz256_select_w5: + AARCH64_VALID_CALL_TARGET + + // x10 := x0 + // w9 := 0; loop counter and incremented internal index + mov x10, x0 + mov w9, #0 + + // [v16-v21] := 0 + movi v16.16b, #0 + movi v17.16b, #0 + movi v18.16b, #0 + movi v19.16b, #0 + movi v20.16b, #0 + movi v21.16b, #0 + +.Lselect_w5_loop: + // Loop 16 times. + + // Increment index (loop counter); tested at the end of the loop + add w9, w9, #1 + + // [v22-v27] := Load a (3*256-bit = 6*128-bit) table entry starting at x1 + // and advance x1 to point to the next entry + ld1 {v22.2d, v23.2d, v24.2d, v25.2d}, [x1],#64 + + // x11 := (w9 == w2)? All 1s : All 0s + cmp w9, w2 + csetm x11, eq + + // continue loading ... + ld1 {v26.2d, v27.2d}, [x1],#32 + + // duplicate mask_64 into Mask (all 0s or all 1s) + dup v3.2d, x11 + + // [v16-v19] := (Mask == all 1s)? [v22-v25] : [v16-v19] + // i.e., values in output registers will remain the same if w9 != w2 + bit v16.16b, v22.16b, v3.16b + bit v17.16b, v23.16b, v3.16b + + bit v18.16b, v24.16b, v3.16b + bit v19.16b, v25.16b, v3.16b + + bit v20.16b, v26.16b, v3.16b + bit v21.16b, v27.16b, v3.16b + + // If bit #4 is not 0 (i.e. idx_ctr < 16) loop back + tbz w9, #4, .Lselect_w5_loop + + // Write [v16-v21] to memory at the output pointer + st1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x10],#64 + st1 {v20.2d, v21.2d}, [x10] + + ret +.size ecp_nistz256_select_w5,.-ecp_nistz256_select_w5 + + +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_select_w7(uint64_t *val, uint64_t *in_t, int index); +.globl ecp_nistz256_select_w7 +.hidden ecp_nistz256_select_w7 +.type ecp_nistz256_select_w7,%function +.align 4 +ecp_nistz256_select_w7: + AARCH64_VALID_CALL_TARGET + + // w9 := 0; loop counter and incremented internal index + mov w9, #0 + + // [v16-v21] := 0 + movi v16.16b, #0 + movi v17.16b, #0 + movi v18.16b, #0 + movi v19.16b, #0 + +.Lselect_w7_loop: + // Loop 64 times. + + // Increment index (loop counter); tested at the end of the loop + add w9, w9, #1 + + // [v22-v25] := Load a (2*256-bit = 4*128-bit) table entry starting at x1 + // and advance x1 to point to the next entry + ld1 {v22.2d, v23.2d, v24.2d, v25.2d}, [x1],#64 + + // x11 := (w9 == w2)? All 1s : All 0s + cmp w9, w2 + csetm x11, eq + + // duplicate mask_64 into Mask (all 0s or all 1s) + dup v3.2d, x11 + + // [v16-v19] := (Mask == all 1s)? [v22-v25] : [v16-v19] + // i.e., values in output registers will remain the same if w9 != w2 + bit v16.16b, v22.16b, v3.16b + bit v17.16b, v23.16b, v3.16b + + bit v18.16b, v24.16b, v3.16b + bit v19.16b, v25.16b, v3.16b + + // If bit #6 is not 0 (i.e. idx_ctr < 64) loop back + tbz w9, #6, .Lselect_w7_loop + + // Write [v16-v19] to memory at the output pointer + st1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x0] + + ret +.size ecp_nistz256_select_w7,.-ecp_nistz256_select_w7 +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/p256-armv8-asm-win64.S temporalio-1.3.0/vendor/ring/pregenerated/p256-armv8-asm-win64.S --- temporalio-1.3.0/vendor/ring/pregenerated/p256-armv8-asm-win64.S 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/p256-armv8-asm-win64.S 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1642 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. + +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(_WIN32) +#include "ring-core/arm_arch.h" + +.section .rodata +.align 5 +Lpoly: +.quad 0xffffffffffffffff,0x00000000ffffffff,0x0000000000000000,0xffffffff00000001 +LRR: // 2^512 mod P precomputed for NIST P256 polynomial +.quad 0x0000000000000003,0xfffffffbffffffff,0xfffffffffffffffe,0x00000004fffffffd +Lone_mont: +.quad 0x0000000000000001,0xffffffff00000000,0xffffffffffffffff,0x00000000fffffffe +Lone: +.quad 1,0,0,0 +Lord: +.quad 0xf3b9cac2fc632551,0xbce6faada7179e84,0xffffffffffffffff,0xffffffff00000000 +LordK: +.quad 0xccd1c8aaee00bc4f +.byte 69,67,80,95,78,73,83,84,90,50,53,54,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.text + +// void ecp_nistz256_mul_mont(BN_ULONG x0[4],const BN_ULONG x1[4], +// const BN_ULONG x2[4]); +.globl ecp_nistz256_mul_mont + +.def ecp_nistz256_mul_mont + .type 32 +.endef +.align 4 +ecp_nistz256_mul_mont: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-32]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + + ldr x3,[x2] // bp[0] + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + adrp x13,Lpoly + add x13,x13,:lo12:Lpoly + ldr x12,[x13,#8] + ldr x13,[x13,#24] + + bl __ecp_nistz256_mul_mont + + ldp x19,x20,[sp,#16] + ldp x29,x30,[sp],#32 + AARCH64_VALIDATE_LINK_REGISTER + ret + + +// void ecp_nistz256_sqr_mont(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl ecp_nistz256_sqr_mont + +.def ecp_nistz256_sqr_mont + .type 32 +.endef +.align 4 +ecp_nistz256_sqr_mont: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-32]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + adrp x13,Lpoly + add x13,x13,:lo12:Lpoly + ldr x12,[x13,#8] + ldr x13,[x13,#24] + + bl __ecp_nistz256_sqr_mont + + ldp x19,x20,[sp,#16] + ldp x29,x30,[sp],#32 + AARCH64_VALIDATE_LINK_REGISTER + ret + + +// void ecp_nistz256_neg(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl ecp_nistz256_neg + +.def ecp_nistz256_neg + .type 32 +.endef +.align 4 +ecp_nistz256_neg: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + mov x2,x1 + mov x14,xzr // a = 0 + mov x15,xzr + mov x16,xzr + mov x17,xzr + adrp x13,Lpoly + add x13,x13,:lo12:Lpoly + ldr x12,[x13,#8] + ldr x13,[x13,#24] + + bl __ecp_nistz256_sub_from + + ldp x29,x30,[sp],#16 + AARCH64_VALIDATE_LINK_REGISTER + ret + + +// note that __ecp_nistz256_mul_mont expects a[0-3] input pre-loaded +// to x4-x7 and b[0] - to x3 +.def __ecp_nistz256_mul_mont + .type 32 +.endef +.align 4 +__ecp_nistz256_mul_mont: + mul x14,x4,x3 // a[0]*b[0] + umulh x8,x4,x3 + + mul x15,x5,x3 // a[1]*b[0] + umulh x9,x5,x3 + + mul x16,x6,x3 // a[2]*b[0] + umulh x10,x6,x3 + + mul x17,x7,x3 // a[3]*b[0] + umulh x11,x7,x3 + ldr x3,[x2,#8] // b[1] + + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adc x19,xzr,x11 + mov x20,xzr + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + mul x8,x4,x3 // lo(a[0]*b[i]) + adcs x15,x16,x9 + mul x9,x5,x3 // lo(a[1]*b[i]) + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + mul x10,x6,x3 // lo(a[2]*b[i]) + adcs x17,x19,x11 + mul x11,x7,x3 // lo(a[3]*b[i]) + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts of multiplication + umulh x8,x4,x3 // hi(a[0]*b[i]) + adcs x15,x15,x9 + umulh x9,x5,x3 // hi(a[1]*b[i]) + adcs x16,x16,x10 + umulh x10,x6,x3 // hi(a[2]*b[i]) + adcs x17,x17,x11 + umulh x11,x7,x3 // hi(a[3]*b[i]) + adc x19,x19,xzr + ldr x3,[x2,#8*(1+1)] // b[1+1] + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + mul x8,x4,x3 // lo(a[0]*b[i]) + adcs x15,x16,x9 + mul x9,x5,x3 // lo(a[1]*b[i]) + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + mul x10,x6,x3 // lo(a[2]*b[i]) + adcs x17,x19,x11 + mul x11,x7,x3 // lo(a[3]*b[i]) + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts of multiplication + umulh x8,x4,x3 // hi(a[0]*b[i]) + adcs x15,x15,x9 + umulh x9,x5,x3 // hi(a[1]*b[i]) + adcs x16,x16,x10 + umulh x10,x6,x3 // hi(a[2]*b[i]) + adcs x17,x17,x11 + umulh x11,x7,x3 // hi(a[3]*b[i]) + adc x19,x19,xzr + ldr x3,[x2,#8*(2+1)] // b[2+1] + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + mul x8,x4,x3 // lo(a[0]*b[i]) + adcs x15,x16,x9 + mul x9,x5,x3 // lo(a[1]*b[i]) + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + mul x10,x6,x3 // lo(a[2]*b[i]) + adcs x17,x19,x11 + mul x11,x7,x3 // lo(a[3]*b[i]) + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts of multiplication + umulh x8,x4,x3 // hi(a[0]*b[i]) + adcs x15,x15,x9 + umulh x9,x5,x3 // hi(a[1]*b[i]) + adcs x16,x16,x10 + umulh x10,x6,x3 // hi(a[2]*b[i]) + adcs x17,x17,x11 + umulh x11,x7,x3 // hi(a[3]*b[i]) + adc x19,x19,xzr + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + // last reduction + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + adcs x17,x19,x11 + adc x19,x20,xzr + + adds x8,x14,#1 // subs x8,x14,#-1 // tmp = ret-modulus + sbcs x9,x15,x12 + sbcs x10,x16,xzr + sbcs x11,x17,x13 + sbcs xzr,x19,xzr // did it borrow? + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ret + + +// note that __ecp_nistz256_sqr_mont expects a[0-3] input pre-loaded +// to x4-x7 +.def __ecp_nistz256_sqr_mont + .type 32 +.endef +.align 4 +__ecp_nistz256_sqr_mont: + // | | | | | |a1*a0| | + // | | | | |a2*a0| | | + // | |a3*a2|a3*a0| | | | + // | | | |a2*a1| | | | + // | | |a3*a1| | | | | + // *| | | | | | | | 2| + // +|a3*a3|a2*a2|a1*a1|a0*a0| + // |--+--+--+--+--+--+--+--| + // |A7|A6|A5|A4|A3|A2|A1|A0|, where Ax is , i.e. follow + // + // "can't overflow" below mark carrying into high part of + // multiplication result, which can't overflow, because it + // can never be all ones. + + mul x15,x5,x4 // a[1]*a[0] + umulh x9,x5,x4 + mul x16,x6,x4 // a[2]*a[0] + umulh x10,x6,x4 + mul x17,x7,x4 // a[3]*a[0] + umulh x19,x7,x4 + + adds x16,x16,x9 // accumulate high parts of multiplication + mul x8,x6,x5 // a[2]*a[1] + umulh x9,x6,x5 + adcs x17,x17,x10 + mul x10,x7,x5 // a[3]*a[1] + umulh x11,x7,x5 + adc x19,x19,xzr // can't overflow + + mul x20,x7,x6 // a[3]*a[2] + umulh x1,x7,x6 + + adds x9,x9,x10 // accumulate high parts of multiplication + mul x14,x4,x4 // a[0]*a[0] + adc x10,x11,xzr // can't overflow + + adds x17,x17,x8 // accumulate low parts of multiplication + umulh x4,x4,x4 + adcs x19,x19,x9 + mul x9,x5,x5 // a[1]*a[1] + adcs x20,x20,x10 + umulh x5,x5,x5 + adc x1,x1,xzr // can't overflow + + adds x15,x15,x15 // acc[1-6]*=2 + mul x10,x6,x6 // a[2]*a[2] + adcs x16,x16,x16 + umulh x6,x6,x6 + adcs x17,x17,x17 + mul x11,x7,x7 // a[3]*a[3] + adcs x19,x19,x19 + umulh x7,x7,x7 + adcs x20,x20,x20 + adcs x1,x1,x1 + adc x2,xzr,xzr + + adds x15,x15,x4 // +a[i]*a[i] + adcs x16,x16,x9 + adcs x17,x17,x5 + adcs x19,x19,x10 + adcs x20,x20,x6 + lsl x8,x14,#32 + adcs x1,x1,x11 + lsr x9,x14,#32 + adc x2,x2,x7 + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + lsl x8,x14,#32 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + lsr x9,x14,#32 + adc x17,x11,xzr // can't overflow + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + lsl x8,x14,#32 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + lsr x9,x14,#32 + adc x17,x11,xzr // can't overflow + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + lsl x8,x14,#32 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + lsr x9,x14,#32 + adc x17,x11,xzr // can't overflow + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + adc x17,x11,xzr // can't overflow + + adds x14,x14,x19 // accumulate upper half + adcs x15,x15,x20 + adcs x16,x16,x1 + adcs x17,x17,x2 + adc x19,xzr,xzr + + adds x8,x14,#1 // subs x8,x14,#-1 // tmp = ret-modulus + sbcs x9,x15,x12 + sbcs x10,x16,xzr + sbcs x11,x17,x13 + sbcs xzr,x19,xzr // did it borrow? + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ret + + +// Note that __ecp_nistz256_add_to expects both input vectors pre-loaded to +// x4-x7 and x8-x11. This is done because it's used in multiple +// contexts, e.g. in multiplication by 2 and 3... +.def __ecp_nistz256_add_to + .type 32 +.endef +.align 4 +__ecp_nistz256_add_to: + adds x14,x14,x8 // ret = a+b + adcs x15,x15,x9 + adcs x16,x16,x10 + adcs x17,x17,x11 + adc x1,xzr,xzr // zap x1 + + adds x8,x14,#1 // subs x8,x4,#-1 // tmp = ret-modulus + sbcs x9,x15,x12 + sbcs x10,x16,xzr + sbcs x11,x17,x13 + sbcs xzr,x1,xzr // did subtraction borrow? + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ret + + +.def __ecp_nistz256_sub_from + .type 32 +.endef +.align 4 +__ecp_nistz256_sub_from: + ldp x8,x9,[x2] + ldp x10,x11,[x2,#16] + subs x14,x14,x8 // ret = a-b + sbcs x15,x15,x9 + sbcs x16,x16,x10 + sbcs x17,x17,x11 + sbc x1,xzr,xzr // zap x1 + + subs x8,x14,#1 // adds x8,x4,#-1 // tmp = ret+modulus + adcs x9,x15,x12 + adcs x10,x16,xzr + adc x11,x17,x13 + cmp x1,xzr // did subtraction borrow? + + csel x14,x14,x8,eq // ret = borrow ? ret+modulus : ret + csel x15,x15,x9,eq + csel x16,x16,x10,eq + stp x14,x15,[x0] + csel x17,x17,x11,eq + stp x16,x17,[x0,#16] + + ret + + +.def __ecp_nistz256_sub_morf + .type 32 +.endef +.align 4 +__ecp_nistz256_sub_morf: + ldp x8,x9,[x2] + ldp x10,x11,[x2,#16] + subs x14,x8,x14 // ret = b-a + sbcs x15,x9,x15 + sbcs x16,x10,x16 + sbcs x17,x11,x17 + sbc x1,xzr,xzr // zap x1 + + subs x8,x14,#1 // adds x8,x4,#-1 // tmp = ret+modulus + adcs x9,x15,x12 + adcs x10,x16,xzr + adc x11,x17,x13 + cmp x1,xzr // did subtraction borrow? + + csel x14,x14,x8,eq // ret = borrow ? ret+modulus : ret + csel x15,x15,x9,eq + csel x16,x16,x10,eq + stp x14,x15,[x0] + csel x17,x17,x11,eq + stp x16,x17,[x0,#16] + + ret + + +.def __ecp_nistz256_div_by_2 + .type 32 +.endef +.align 4 +__ecp_nistz256_div_by_2: + subs x8,x14,#1 // adds x8,x4,#-1 // tmp = a+modulus + adcs x9,x15,x12 + adcs x10,x16,xzr + adcs x11,x17,x13 + adc x1,xzr,xzr // zap x1 + tst x14,#1 // is a even? + + csel x14,x14,x8,eq // ret = even ? a : a+modulus + csel x15,x15,x9,eq + csel x16,x16,x10,eq + csel x17,x17,x11,eq + csel x1,xzr,x1,eq + + lsr x14,x14,#1 // ret >>= 1 + orr x14,x14,x15,lsl#63 + lsr x15,x15,#1 + orr x15,x15,x16,lsl#63 + lsr x16,x16,#1 + orr x16,x16,x17,lsl#63 + lsr x17,x17,#1 + stp x14,x15,[x0] + orr x17,x17,x1,lsl#63 + stp x16,x17,[x0,#16] + + ret + +.globl ecp_nistz256_point_double + +.def ecp_nistz256_point_double + .type 32 +.endef +.align 5 +ecp_nistz256_point_double: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + sub sp,sp,#32*4 + +Ldouble_shortcut: + ldp x14,x15,[x1,#32] + mov x21,x0 + ldp x16,x17,[x1,#48] + mov x22,x1 + adrp x13,Lpoly + add x13,x13,:lo12:Lpoly + ldr x12,[x13,#8] + mov x8,x14 + ldr x13,[x13,#24] + mov x9,x15 + ldp x4,x5,[x22,#64] // forward load for p256_sqr_mont + mov x10,x16 + mov x11,x17 + ldp x6,x7,[x22,#64+16] + add x0,sp,#0 + bl __ecp_nistz256_add_to // p256_mul_by_2(S, in_y); + + add x0,sp,#64 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Zsqr, in_z); + + ldp x8,x9,[x22] + ldp x10,x11,[x22,#16] + mov x4,x14 // put Zsqr aside for p256_sub + mov x5,x15 + mov x6,x16 + mov x7,x17 + add x0,sp,#32 + bl __ecp_nistz256_add_to // p256_add(M, Zsqr, in_x); + + add x2,x22,#0 + mov x14,x4 // restore Zsqr + mov x15,x5 + ldp x4,x5,[sp,#0] // forward load for p256_sqr_mont + mov x16,x6 + mov x17,x7 + ldp x6,x7,[sp,#0+16] + add x0,sp,#64 + bl __ecp_nistz256_sub_morf // p256_sub(Zsqr, in_x, Zsqr); + + add x0,sp,#0 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(S, S); + + ldr x3,[x22,#32] + ldp x4,x5,[x22,#64] + ldp x6,x7,[x22,#64+16] + add x2,x22,#32 + add x0,sp,#96 + bl __ecp_nistz256_mul_mont // p256_mul_mont(tmp0, in_z, in_y); + + mov x8,x14 + mov x9,x15 + ldp x4,x5,[sp,#0] // forward load for p256_sqr_mont + mov x10,x16 + mov x11,x17 + ldp x6,x7,[sp,#0+16] + add x0,x21,#64 + bl __ecp_nistz256_add_to // p256_mul_by_2(res_z, tmp0); + + add x0,sp,#96 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(tmp0, S); + + ldr x3,[sp,#64] // forward load for p256_mul_mont + ldp x4,x5,[sp,#32] + ldp x6,x7,[sp,#32+16] + add x0,x21,#32 + bl __ecp_nistz256_div_by_2 // p256_div_by_2(res_y, tmp0); + + add x2,sp,#64 + add x0,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(M, M, Zsqr); + + mov x8,x14 // duplicate M + mov x9,x15 + mov x10,x16 + mov x11,x17 + mov x4,x14 // put M aside + mov x5,x15 + mov x6,x16 + mov x7,x17 + add x0,sp,#32 + bl __ecp_nistz256_add_to + mov x8,x4 // restore M + mov x9,x5 + ldr x3,[x22] // forward load for p256_mul_mont + mov x10,x6 + ldp x4,x5,[sp,#0] + mov x11,x7 + ldp x6,x7,[sp,#0+16] + bl __ecp_nistz256_add_to // p256_mul_by_3(M, M); + + add x2,x22,#0 + add x0,sp,#0 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S, S, in_x); + + mov x8,x14 + mov x9,x15 + ldp x4,x5,[sp,#32] // forward load for p256_sqr_mont + mov x10,x16 + mov x11,x17 + ldp x6,x7,[sp,#32+16] + add x0,sp,#96 + bl __ecp_nistz256_add_to // p256_mul_by_2(tmp0, S); + + add x0,x21,#0 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(res_x, M); + + add x2,sp,#96 + bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, tmp0); + + add x2,sp,#0 + add x0,sp,#0 + bl __ecp_nistz256_sub_morf // p256_sub(S, S, res_x); + + ldr x3,[sp,#32] + mov x4,x14 // copy S + mov x5,x15 + mov x6,x16 + mov x7,x17 + add x2,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S, S, M); + + add x2,x21,#32 + add x0,x21,#32 + bl __ecp_nistz256_sub_from // p256_sub(res_y, S, res_y); + + add sp,x29,#0 // destroy frame + ldp x19,x20,[x29,#16] + ldp x21,x22,[x29,#32] + ldp x29,x30,[sp],#96 + AARCH64_VALIDATE_LINK_REGISTER + ret + +.globl ecp_nistz256_point_add + +.def ecp_nistz256_point_add + .type 32 +.endef +.align 5 +ecp_nistz256_point_add: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#32*12 + + ldp x4,x5,[x2,#64] // in2_z + ldp x6,x7,[x2,#64+16] + mov x21,x0 + mov x22,x1 + mov x23,x2 + adrp x13,Lpoly + add x13,x13,:lo12:Lpoly + ldr x12,[x13,#8] + ldr x13,[x13,#24] + orr x8,x4,x5 + orr x10,x6,x7 + orr x25,x8,x10 + cmp x25,#0 + csetm x25,ne // ~in2infty + add x0,sp,#192 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z2sqr, in2_z); + + ldp x4,x5,[x22,#64] // in1_z + ldp x6,x7,[x22,#64+16] + orr x8,x4,x5 + orr x10,x6,x7 + orr x24,x8,x10 + cmp x24,#0 + csetm x24,ne // ~in1infty + add x0,sp,#128 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); + + ldr x3,[x23,#64] + ldp x4,x5,[sp,#192] + ldp x6,x7,[sp,#192+16] + add x2,x23,#64 + add x0,sp,#320 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S1, Z2sqr, in2_z); + + ldr x3,[x22,#64] + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x2,x22,#64 + add x0,sp,#352 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, Z1sqr, in1_z); + + ldr x3,[x22,#32] + ldp x4,x5,[sp,#320] + ldp x6,x7,[sp,#320+16] + add x2,x22,#32 + add x0,sp,#320 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S1, S1, in1_y); + + ldr x3,[x23,#32] + ldp x4,x5,[sp,#352] + ldp x6,x7,[sp,#352+16] + add x2,x23,#32 + add x0,sp,#352 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S2, in2_y); + + add x2,sp,#320 + ldr x3,[sp,#192] // forward load for p256_mul_mont + ldp x4,x5,[x22] + ldp x6,x7,[x22,#16] + add x0,sp,#160 + bl __ecp_nistz256_sub_from // p256_sub(R, S2, S1); + + orr x14,x14,x15 // see if result is zero + orr x16,x16,x17 + orr x26,x14,x16 // ~is_equal(S1,S2) + + add x2,sp,#192 + add x0,sp,#256 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U1, in1_x, Z2sqr); + + ldr x3,[sp,#128] + ldp x4,x5,[x23] + ldp x6,x7,[x23,#16] + add x2,sp,#128 + add x0,sp,#288 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, in2_x, Z1sqr); + + add x2,sp,#256 + ldp x4,x5,[sp,#160] // forward load for p256_sqr_mont + ldp x6,x7,[sp,#160+16] + add x0,sp,#96 + bl __ecp_nistz256_sub_from // p256_sub(H, U2, U1); + + orr x14,x14,x15 // see if result is zero + orr x16,x16,x17 + orr x14,x14,x16 // ~is_equal(U1,U2) + + mvn x27,x24 // -1/0 -> 0/-1 + mvn x28,x25 // -1/0 -> 0/-1 + orr x14,x14,x27 + orr x14,x14,x28 + orr x14,x14,x26 + cbnz x14,Ladd_proceed // if(~is_equal(U1,U2) | in1infty | in2infty | ~is_equal(S1,S2)) + +Ladd_double: + mov x1,x22 + mov x0,x21 + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + add sp,sp,#256 // #256 is from #32*(12-4). difference in stack frames + b Ldouble_shortcut + +.align 4 +Ladd_proceed: + add x0,sp,#192 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Rsqr, R); + + ldr x3,[x22,#64] + ldp x4,x5,[sp,#96] + ldp x6,x7,[sp,#96+16] + add x2,x22,#64 + add x0,sp,#64 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, H, in1_z); + + ldp x4,x5,[sp,#96] + ldp x6,x7,[sp,#96+16] + add x0,sp,#128 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Hsqr, H); + + ldr x3,[x23,#64] + ldp x4,x5,[sp,#64] + ldp x6,x7,[sp,#64+16] + add x2,x23,#64 + add x0,sp,#64 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, res_z, in2_z); + + ldr x3,[sp,#96] + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x2,sp,#96 + add x0,sp,#224 + bl __ecp_nistz256_mul_mont // p256_mul_mont(Hcub, Hsqr, H); + + ldr x3,[sp,#128] + ldp x4,x5,[sp,#256] + ldp x6,x7,[sp,#256+16] + add x2,sp,#128 + add x0,sp,#288 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, U1, Hsqr); + + mov x8,x14 + mov x9,x15 + mov x10,x16 + mov x11,x17 + add x0,sp,#128 + bl __ecp_nistz256_add_to // p256_mul_by_2(Hsqr, U2); + + add x2,sp,#192 + add x0,sp,#0 + bl __ecp_nistz256_sub_morf // p256_sub(res_x, Rsqr, Hsqr); + + add x2,sp,#224 + bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, Hcub); + + add x2,sp,#288 + ldr x3,[sp,#224] // forward load for p256_mul_mont + ldp x4,x5,[sp,#320] + ldp x6,x7,[sp,#320+16] + add x0,sp,#32 + bl __ecp_nistz256_sub_morf // p256_sub(res_y, U2, res_x); + + add x2,sp,#224 + add x0,sp,#352 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S1, Hcub); + + ldr x3,[sp,#160] + ldp x4,x5,[sp,#32] + ldp x6,x7,[sp,#32+16] + add x2,sp,#160 + add x0,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_y, res_y, R); + + add x2,sp,#352 + bl __ecp_nistz256_sub_from // p256_sub(res_y, res_y, S2); + + ldp x4,x5,[sp,#0] // res + ldp x6,x7,[sp,#0+16] + ldp x8,x9,[x23] // in2 + ldp x10,x11,[x23,#16] + ldp x14,x15,[x22,#0] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#0+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+0+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+0+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#0+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#0+48] + stp x14,x15,[x21,#0] + stp x16,x17,[x21,#0+16] + ldp x14,x15,[x22,#32] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#32+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+32+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+32+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#32+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#32+48] + stp x14,x15,[x21,#32] + stp x16,x17,[x21,#32+16] + ldp x14,x15,[x22,#64] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#64+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + csel x14,x8,x14,ne + csel x15,x9,x15,ne + csel x16,x10,x16,ne + csel x17,x11,x17,ne + stp x14,x15,[x21,#64] + stp x16,x17,[x21,#64+16] + +Ladd_done: + add sp,x29,#0 // destroy frame + ldp x19,x20,[x29,#16] + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 + AARCH64_VALIDATE_LINK_REGISTER + ret + +.globl ecp_nistz256_point_add_affine + +.def ecp_nistz256_point_add_affine + .type 32 +.endef +.align 5 +ecp_nistz256_point_add_affine: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-80]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + sub sp,sp,#32*10 + + mov x21,x0 + mov x22,x1 + mov x23,x2 + adrp x13,Lpoly + add x13,x13,:lo12:Lpoly + ldr x12,[x13,#8] + ldr x13,[x13,#24] + + ldp x4,x5,[x1,#64] // in1_z + ldp x6,x7,[x1,#64+16] + orr x8,x4,x5 + orr x10,x6,x7 + orr x24,x8,x10 + cmp x24,#0 + csetm x24,ne // ~in1infty + + ldp x14,x15,[x2] // in2_x + ldp x16,x17,[x2,#16] + ldp x8,x9,[x2,#32] // in2_y + ldp x10,x11,[x2,#48] + orr x14,x14,x15 + orr x16,x16,x17 + orr x8,x8,x9 + orr x10,x10,x11 + orr x14,x14,x16 + orr x8,x8,x10 + orr x25,x14,x8 + cmp x25,#0 + csetm x25,ne // ~in2infty + + add x0,sp,#128 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); + + mov x4,x14 + mov x5,x15 + mov x6,x16 + mov x7,x17 + ldr x3,[x23] + add x2,x23,#0 + add x0,sp,#96 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, Z1sqr, in2_x); + + add x2,x22,#0 + ldr x3,[x22,#64] // forward load for p256_mul_mont + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x0,sp,#160 + bl __ecp_nistz256_sub_from // p256_sub(H, U2, in1_x); + + add x2,x22,#64 + add x0,sp,#128 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, Z1sqr, in1_z); + + ldr x3,[x22,#64] + ldp x4,x5,[sp,#160] + ldp x6,x7,[sp,#160+16] + add x2,x22,#64 + add x0,sp,#64 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, H, in1_z); + + ldr x3,[x23,#32] + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x2,x23,#32 + add x0,sp,#128 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S2, in2_y); + + add x2,x22,#32 + ldp x4,x5,[sp,#160] // forward load for p256_sqr_mont + ldp x6,x7,[sp,#160+16] + add x0,sp,#192 + bl __ecp_nistz256_sub_from // p256_sub(R, S2, in1_y); + + add x0,sp,#224 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Hsqr, H); + + ldp x4,x5,[sp,#192] + ldp x6,x7,[sp,#192+16] + add x0,sp,#288 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Rsqr, R); + + ldr x3,[sp,#160] + ldp x4,x5,[sp,#224] + ldp x6,x7,[sp,#224+16] + add x2,sp,#160 + add x0,sp,#256 + bl __ecp_nistz256_mul_mont // p256_mul_mont(Hcub, Hsqr, H); + + ldr x3,[x22] + ldp x4,x5,[sp,#224] + ldp x6,x7,[sp,#224+16] + add x2,x22,#0 + add x0,sp,#96 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, in1_x, Hsqr); + + mov x8,x14 + mov x9,x15 + mov x10,x16 + mov x11,x17 + add x0,sp,#224 + bl __ecp_nistz256_add_to // p256_mul_by_2(Hsqr, U2); + + add x2,sp,#288 + add x0,sp,#0 + bl __ecp_nistz256_sub_morf // p256_sub(res_x, Rsqr, Hsqr); + + add x2,sp,#256 + bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, Hcub); + + add x2,sp,#96 + ldr x3,[x22,#32] // forward load for p256_mul_mont + ldp x4,x5,[sp,#256] + ldp x6,x7,[sp,#256+16] + add x0,sp,#32 + bl __ecp_nistz256_sub_morf // p256_sub(res_y, U2, res_x); + + add x2,x22,#32 + add x0,sp,#128 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, in1_y, Hcub); + + ldr x3,[sp,#192] + ldp x4,x5,[sp,#32] + ldp x6,x7,[sp,#32+16] + add x2,sp,#192 + add x0,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_y, res_y, R); + + add x2,sp,#128 + bl __ecp_nistz256_sub_from // p256_sub(res_y, res_y, S2); + + ldp x4,x5,[sp,#0] // res + ldp x6,x7,[sp,#0+16] + ldp x8,x9,[x23] // in2 + ldp x10,x11,[x23,#16] + ldp x14,x15,[x22,#0] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#0+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+0+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+0+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#0+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#0+48] + stp x14,x15,[x21,#0] + stp x16,x17,[x21,#0+16] + adrp x23,Lone_mont-64 + add x23,x23,:lo12:Lone_mont-64 + ldp x14,x15,[x22,#32] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#32+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+32+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+32+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#32+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#32+48] + stp x14,x15,[x21,#32] + stp x16,x17,[x21,#32+16] + ldp x14,x15,[x22,#64] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#64+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + csel x14,x8,x14,ne + csel x15,x9,x15,ne + csel x16,x10,x16,ne + csel x17,x11,x17,ne + stp x14,x15,[x21,#64] + stp x16,x17,[x21,#64+16] + + add sp,x29,#0 // destroy frame + ldp x19,x20,[x29,#16] + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x29,x30,[sp],#80 + AARCH64_VALIDATE_LINK_REGISTER + ret + +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_ord_mul_mont(uint64_t res[4], uint64_t a[4], +// uint64_t b[4]); +.globl ecp_nistz256_ord_mul_mont + +.def ecp_nistz256_ord_mul_mont + .type 32 +.endef +.align 4 +ecp_nistz256_ord_mul_mont: + AARCH64_VALID_CALL_TARGET + // Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later. + stp x29,x30,[sp,#-64]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + + adrp x23,Lord + add x23,x23,:lo12:Lord + ldr x3,[x2] // bp[0] + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + + ldp x12,x13,[x23,#0] + ldp x21,x22,[x23,#16] + ldr x23,[x23,#32] + + mul x14,x4,x3 // a[0]*b[0] + umulh x8,x4,x3 + + mul x15,x5,x3 // a[1]*b[0] + umulh x9,x5,x3 + + mul x16,x6,x3 // a[2]*b[0] + umulh x10,x6,x3 + + mul x17,x7,x3 // a[3]*b[0] + umulh x19,x7,x3 + + mul x24,x14,x23 + + adds x15,x15,x8 // accumulate high parts of multiplication + adcs x16,x16,x9 + adcs x17,x17,x10 + adc x19,x19,xzr + mov x20,xzr + ldr x3,[x2,#8*1] // b[i] + + lsl x8,x24,#32 + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + mul x8,x4,x3 + adc x11,x11,xzr + mul x9,x5,x3 + + adds x14,x15,x10 + mul x10,x6,x3 + adcs x15,x16,x11 + mul x11,x7,x3 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts + umulh x8,x4,x3 + adcs x15,x15,x9 + umulh x9,x5,x3 + adcs x16,x16,x10 + umulh x10,x6,x3 + adcs x17,x17,x11 + umulh x11,x7,x3 + adc x19,x19,xzr + mul x24,x14,x23 + adds x15,x15,x8 // accumulate high parts + adcs x16,x16,x9 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + ldr x3,[x2,#8*2] // b[i] + + lsl x8,x24,#32 + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + mul x8,x4,x3 + adc x11,x11,xzr + mul x9,x5,x3 + + adds x14,x15,x10 + mul x10,x6,x3 + adcs x15,x16,x11 + mul x11,x7,x3 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts + umulh x8,x4,x3 + adcs x15,x15,x9 + umulh x9,x5,x3 + adcs x16,x16,x10 + umulh x10,x6,x3 + adcs x17,x17,x11 + umulh x11,x7,x3 + adc x19,x19,xzr + mul x24,x14,x23 + adds x15,x15,x8 // accumulate high parts + adcs x16,x16,x9 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + ldr x3,[x2,#8*3] // b[i] + + lsl x8,x24,#32 + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + mul x8,x4,x3 + adc x11,x11,xzr + mul x9,x5,x3 + + adds x14,x15,x10 + mul x10,x6,x3 + adcs x15,x16,x11 + mul x11,x7,x3 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts + umulh x8,x4,x3 + adcs x15,x15,x9 + umulh x9,x5,x3 + adcs x16,x16,x10 + umulh x10,x6,x3 + adcs x17,x17,x11 + umulh x11,x7,x3 + adc x19,x19,xzr + mul x24,x14,x23 + adds x15,x15,x8 // accumulate high parts + adcs x16,x16,x9 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + lsl x8,x24,#32 // last reduction + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + adc x11,x11,xzr + + adds x14,x15,x10 + adcs x15,x16,x11 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + subs x8,x14,x12 // ret -= modulus + sbcs x9,x15,x13 + sbcs x10,x16,x21 + sbcs x11,x17,x22 + sbcs xzr,x19,xzr + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ldp x19,x20,[sp,#16] + ldp x21,x22,[sp,#32] + ldp x23,x24,[sp,#48] + ldr x29,[sp],#64 + ret + + +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_ord_sqr_mont(uint64_t res[4], uint64_t a[4], +// uint64_t rep); +.globl ecp_nistz256_ord_sqr_mont + +.def ecp_nistz256_ord_sqr_mont + .type 32 +.endef +.align 4 +ecp_nistz256_ord_sqr_mont: + AARCH64_VALID_CALL_TARGET + // Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later. + stp x29,x30,[sp,#-64]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + + adrp x23,Lord + add x23,x23,:lo12:Lord + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + + ldp x12,x13,[x23,#0] + ldp x21,x22,[x23,#16] + ldr x23,[x23,#32] + b Loop_ord_sqr + +.align 4 +Loop_ord_sqr: + sub x2,x2,#1 + //////////////////////////////////////////////////////////////// + // | | | | | |a1*a0| | + // | | | | |a2*a0| | | + // | |a3*a2|a3*a0| | | | + // | | | |a2*a1| | | | + // | | |a3*a1| | | | | + // *| | | | | | | | 2| + // +|a3*a3|a2*a2|a1*a1|a0*a0| + // |--+--+--+--+--+--+--+--| + // |A7|A6|A5|A4|A3|A2|A1|A0|, where Ax is , i.e. follow + // + // "can't overflow" below mark carrying into high part of + // multiplication result, which can't overflow, because it + // can never be all ones. + + mul x15,x5,x4 // a[1]*a[0] + umulh x9,x5,x4 + mul x16,x6,x4 // a[2]*a[0] + umulh x10,x6,x4 + mul x17,x7,x4 // a[3]*a[0] + umulh x19,x7,x4 + + adds x16,x16,x9 // accumulate high parts of multiplication + mul x8,x6,x5 // a[2]*a[1] + umulh x9,x6,x5 + adcs x17,x17,x10 + mul x10,x7,x5 // a[3]*a[1] + umulh x11,x7,x5 + adc x19,x19,xzr // can't overflow + + mul x20,x7,x6 // a[3]*a[2] + umulh x1,x7,x6 + + adds x9,x9,x10 // accumulate high parts of multiplication + mul x14,x4,x4 // a[0]*a[0] + adc x10,x11,xzr // can't overflow + + adds x17,x17,x8 // accumulate low parts of multiplication + umulh x4,x4,x4 + adcs x19,x19,x9 + mul x9,x5,x5 // a[1]*a[1] + adcs x20,x20,x10 + umulh x5,x5,x5 + adc x1,x1,xzr // can't overflow + + adds x15,x15,x15 // acc[1-6]*=2 + mul x10,x6,x6 // a[2]*a[2] + adcs x16,x16,x16 + umulh x6,x6,x6 + adcs x17,x17,x17 + mul x11,x7,x7 // a[3]*a[3] + adcs x19,x19,x19 + umulh x7,x7,x7 + adcs x20,x20,x20 + adcs x1,x1,x1 + adc x3,xzr,xzr + + adds x15,x15,x4 // +a[i]*a[i] + mul x24,x14,x23 + adcs x16,x16,x9 + adcs x17,x17,x5 + adcs x19,x19,x10 + adcs x20,x20,x6 + adcs x1,x1,x11 + adc x3,x3,x7 + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + adc x11,x11,xzr + + adds x14,x15,x10 + adcs x15,x16,x11 + adcs x16,x17,x24 + adc x17,xzr,x24 // can't overflow + mul x11,x14,x23 + lsl x8,x24,#32 + subs x15,x15,x24 + lsr x9,x24,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + subs xzr,x14,#1 + umulh x9,x12,x11 + mul x10,x13,x11 + umulh x24,x13,x11 + + adcs x10,x10,x9 + adc x24,x24,xzr + + adds x14,x15,x10 + adcs x15,x16,x24 + adcs x16,x17,x11 + adc x17,xzr,x11 // can't overflow + mul x24,x14,x23 + lsl x8,x11,#32 + subs x15,x15,x11 + lsr x9,x11,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + adc x11,x11,xzr + + adds x14,x15,x10 + adcs x15,x16,x11 + adcs x16,x17,x24 + adc x17,xzr,x24 // can't overflow + mul x11,x14,x23 + lsl x8,x24,#32 + subs x15,x15,x24 + lsr x9,x24,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + subs xzr,x14,#1 + umulh x9,x12,x11 + mul x10,x13,x11 + umulh x24,x13,x11 + + adcs x10,x10,x9 + adc x24,x24,xzr + + adds x14,x15,x10 + adcs x15,x16,x24 + adcs x16,x17,x11 + adc x17,xzr,x11 // can't overflow + lsl x8,x11,#32 + subs x15,x15,x11 + lsr x9,x11,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + adds x14,x14,x19 // accumulate upper half + adcs x15,x15,x20 + adcs x16,x16,x1 + adcs x17,x17,x3 + adc x19,xzr,xzr + + subs x8,x14,x12 // ret -= modulus + sbcs x9,x15,x13 + sbcs x10,x16,x21 + sbcs x11,x17,x22 + sbcs xzr,x19,xzr + + csel x4,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x5,x15,x9,lo + csel x6,x16,x10,lo + csel x7,x17,x11,lo + + cbnz x2,Loop_ord_sqr + + stp x4,x5,[x0] + stp x6,x7,[x0,#16] + + ldp x19,x20,[sp,#16] + ldp x21,x22,[sp,#32] + ldp x23,x24,[sp,#48] + ldr x29,[sp],#64 + ret + +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_select_w5(uint64_t *val, uint64_t *in_t, int index); +.globl ecp_nistz256_select_w5 + +.def ecp_nistz256_select_w5 + .type 32 +.endef +.align 4 +ecp_nistz256_select_w5: + AARCH64_VALID_CALL_TARGET + + // x10 := x0 + // w9 := 0; loop counter and incremented internal index + mov x10, x0 + mov w9, #0 + + // [v16-v21] := 0 + movi v16.16b, #0 + movi v17.16b, #0 + movi v18.16b, #0 + movi v19.16b, #0 + movi v20.16b, #0 + movi v21.16b, #0 + +Lselect_w5_loop: + // Loop 16 times. + + // Increment index (loop counter); tested at the end of the loop + add w9, w9, #1 + + // [v22-v27] := Load a (3*256-bit = 6*128-bit) table entry starting at x1 + // and advance x1 to point to the next entry + ld1 {v22.2d, v23.2d, v24.2d, v25.2d}, [x1],#64 + + // x11 := (w9 == w2)? All 1s : All 0s + cmp w9, w2 + csetm x11, eq + + // continue loading ... + ld1 {v26.2d, v27.2d}, [x1],#32 + + // duplicate mask_64 into Mask (all 0s or all 1s) + dup v3.2d, x11 + + // [v16-v19] := (Mask == all 1s)? [v22-v25] : [v16-v19] + // i.e., values in output registers will remain the same if w9 != w2 + bit v16.16b, v22.16b, v3.16b + bit v17.16b, v23.16b, v3.16b + + bit v18.16b, v24.16b, v3.16b + bit v19.16b, v25.16b, v3.16b + + bit v20.16b, v26.16b, v3.16b + bit v21.16b, v27.16b, v3.16b + + // If bit #4 is not 0 (i.e. idx_ctr < 16) loop back + tbz w9, #4, Lselect_w5_loop + + // Write [v16-v21] to memory at the output pointer + st1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x10],#64 + st1 {v20.2d, v21.2d}, [x10] + + ret + + + +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_select_w7(uint64_t *val, uint64_t *in_t, int index); +.globl ecp_nistz256_select_w7 + +.def ecp_nistz256_select_w7 + .type 32 +.endef +.align 4 +ecp_nistz256_select_w7: + AARCH64_VALID_CALL_TARGET + + // w9 := 0; loop counter and incremented internal index + mov w9, #0 + + // [v16-v21] := 0 + movi v16.16b, #0 + movi v17.16b, #0 + movi v18.16b, #0 + movi v19.16b, #0 + +Lselect_w7_loop: + // Loop 64 times. + + // Increment index (loop counter); tested at the end of the loop + add w9, w9, #1 + + // [v22-v25] := Load a (2*256-bit = 4*128-bit) table entry starting at x1 + // and advance x1 to point to the next entry + ld1 {v22.2d, v23.2d, v24.2d, v25.2d}, [x1],#64 + + // x11 := (w9 == w2)? All 1s : All 0s + cmp w9, w2 + csetm x11, eq + + // duplicate mask_64 into Mask (all 0s or all 1s) + dup v3.2d, x11 + + // [v16-v19] := (Mask == all 1s)? [v22-v25] : [v16-v19] + // i.e., values in output registers will remain the same if w9 != w2 + bit v16.16b, v22.16b, v3.16b + bit v17.16b, v23.16b, v3.16b + + bit v18.16b, v24.16b, v3.16b + bit v19.16b, v25.16b, v3.16b + + // If bit #6 is not 0 (i.e. idx_ctr < 64) loop back + tbz w9, #6, Lselect_w7_loop + + // Write [v16-v19] to memory at the output pointer + st1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x0] + + ret + +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(_WIN32) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/p256-x86_64-asm-elf.S temporalio-1.3.0/vendor/ring/pregenerated/p256-x86_64-asm-elf.S --- temporalio-1.3.0/vendor/ring/pregenerated/p256-x86_64-asm-elf.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/p256-x86_64-asm-elf.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,18 +1,15 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__ELF__) .text -.extern GFp_ia32cap_P -.hidden GFp_ia32cap_P +.extern OPENSSL_ia32cap_P +.hidden OPENSSL_ia32cap_P +.section .rodata .align 64 .Lpoly: .quad 0xffffffffffffffff, 0x00000000ffffffff, 0x0000000000000000, 0xffffffff00000001 @@ -31,62 +28,17 @@ .quad 0xf3b9cac2fc632551, 0xbce6faada7179e84, 0xffffffffffffffff, 0xffffffff00000000 .LordK: .quad 0xccd1c8aaee00bc4f +.text -.globl GFp_nistz256_add -.hidden GFp_nistz256_add -.type GFp_nistz256_add,@function -.align 32 -GFp_nistz256_add: - pushq %r12 - pushq %r13 - - movq 0(%rsi),%r8 - xorq %r13,%r13 - movq 8(%rsi),%r9 - movq 16(%rsi),%r10 - movq 24(%rsi),%r11 - leaq .Lpoly(%rip),%rsi - - addq 0(%rdx),%r8 - adcq 8(%rdx),%r9 - movq %r8,%rax - adcq 16(%rdx),%r10 - adcq 24(%rdx),%r11 - movq %r9,%rdx - adcq $0,%r13 - - subq 0(%rsi),%r8 - movq %r10,%rcx - sbbq 8(%rsi),%r9 - sbbq 16(%rsi),%r10 - movq %r11,%r12 - sbbq 24(%rsi),%r11 - sbbq $0,%r13 - - cmovcq %rax,%r8 - cmovcq %rdx,%r9 - movq %r8,0(%rdi) - cmovcq %rcx,%r10 - movq %r9,8(%rdi) - cmovcq %r12,%r11 - movq %r10,16(%rdi) - movq %r11,24(%rdi) - - popq %r13 - popq %r12 - .byte 0xf3,0xc3 -.size GFp_nistz256_add,.-GFp_nistz256_add - - - -.globl GFp_nistz256_neg -.hidden GFp_nistz256_neg -.type GFp_nistz256_neg,@function +.globl ecp_nistz256_neg +.hidden ecp_nistz256_neg +.type ecp_nistz256_neg,@function .align 32 -GFp_nistz256_neg: +ecp_nistz256_neg: .cfi_startproc +_CET_ENDBR pushq %r12 .cfi_adjust_cfa_offset 8 .cfi_offset %r12,-16 @@ -134,22 +86,23 @@ leaq 16(%rsp),%rsp .cfi_adjust_cfa_offset -16 .Lneg_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_nistz256_neg,.-GFp_nistz256_neg +.size ecp_nistz256_neg,.-ecp_nistz256_neg -.globl GFp_p256_scalar_mul_mont -.hidden GFp_p256_scalar_mul_mont -.type GFp_p256_scalar_mul_mont,@function +.globl ecp_nistz256_ord_mul_mont +.hidden ecp_nistz256_ord_mul_mont +.type ecp_nistz256_ord_mul_mont,@function .align 32 -GFp_p256_scalar_mul_mont: +ecp_nistz256_ord_mul_mont: .cfi_startproc - leaq GFp_ia32cap_P(%rip),%rcx +_CET_ENDBR + leaq OPENSSL_ia32cap_P(%rip),%rcx movq 8(%rcx),%rcx andl $0x80100,%ecx cmpl $0x80100,%ecx @@ -467,9 +420,9 @@ leaq 48(%rsp),%rsp .cfi_adjust_cfa_offset -48 .Lord_mul_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_p256_scalar_mul_mont,.-GFp_p256_scalar_mul_mont +.size ecp_nistz256_ord_mul_mont,.-ecp_nistz256_ord_mul_mont @@ -477,13 +430,14 @@ -.globl GFp_p256_scalar_sqr_rep_mont -.hidden GFp_p256_scalar_sqr_rep_mont -.type GFp_p256_scalar_sqr_rep_mont,@function +.globl ecp_nistz256_ord_sqr_mont +.hidden ecp_nistz256_ord_sqr_mont +.type ecp_nistz256_ord_sqr_mont,@function .align 32 -GFp_p256_scalar_sqr_rep_mont: +ecp_nistz256_ord_sqr_mont: .cfi_startproc - leaq GFp_ia32cap_P(%rip),%rcx +_CET_ENDBR + leaq OPENSSL_ia32cap_P(%rip),%rcx movq 8(%rcx),%rcx andl $0x80100,%ecx cmpl $0x80100,%ecx @@ -771,9 +725,9 @@ leaq 48(%rsp),%rsp .cfi_adjust_cfa_offset -48 .Lord_sqr_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_p256_scalar_sqr_rep_mont,.-GFp_p256_scalar_sqr_rep_mont +.size ecp_nistz256_ord_sqr_mont,.-ecp_nistz256_ord_sqr_mont .type ecp_nistz256_ord_mul_montx,@function .align 32 @@ -1013,7 +967,7 @@ leaq 48(%rsp),%rsp .cfi_adjust_cfa_offset -48 .Lord_mulx_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc .size ecp_nistz256_ord_mul_montx,.-ecp_nistz256_ord_mul_montx @@ -1227,7 +1181,7 @@ leaq 48(%rsp),%rsp .cfi_adjust_cfa_offset -48 .Lord_sqrx_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc .size ecp_nistz256_ord_sqr_montx,.-ecp_nistz256_ord_sqr_montx @@ -1236,13 +1190,14 @@ -.globl GFp_nistz256_mul_mont -.hidden GFp_nistz256_mul_mont -.type GFp_nistz256_mul_mont,@function +.globl ecp_nistz256_mul_mont +.hidden ecp_nistz256_mul_mont +.type ecp_nistz256_mul_mont,@function .align 32 -GFp_nistz256_mul_mont: +ecp_nistz256_mul_mont: .cfi_startproc - leaq GFp_ia32cap_P(%rip),%rcx +_CET_ENDBR + leaq OPENSSL_ia32cap_P(%rip),%rcx movq 8(%rcx),%rcx andl $0x80100,%ecx .Lmul_mont: @@ -1304,9 +1259,9 @@ leaq 48(%rsp),%rsp .cfi_adjust_cfa_offset -48 .Lmul_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_nistz256_mul_mont,.-GFp_nistz256_mul_mont +.size ecp_nistz256_mul_mont,.-ecp_nistz256_mul_mont .type __ecp_nistz256_mul_montq,@function .align 32 @@ -1522,7 +1477,7 @@ movq %r8,16(%rdi) movq %r9,24(%rdi) - .byte 0xf3,0xc3 + ret .cfi_endproc .size __ecp_nistz256_mul_montq,.-__ecp_nistz256_mul_montq @@ -1533,13 +1488,14 @@ -.globl GFp_nistz256_sqr_mont -.hidden GFp_nistz256_sqr_mont -.type GFp_nistz256_sqr_mont,@function +.globl ecp_nistz256_sqr_mont +.hidden ecp_nistz256_sqr_mont +.type ecp_nistz256_sqr_mont,@function .align 32 -GFp_nistz256_sqr_mont: +ecp_nistz256_sqr_mont: .cfi_startproc - leaq GFp_ia32cap_P(%rip),%rcx +_CET_ENDBR + leaq OPENSSL_ia32cap_P(%rip),%rcx movq 8(%rcx),%rcx andl $0x80100,%ecx pushq %rbp @@ -1596,9 +1552,9 @@ leaq 48(%rsp),%rsp .cfi_adjust_cfa_offset -48 .Lsqr_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_nistz256_sqr_mont,.-GFp_nistz256_sqr_mont +.size ecp_nistz256_sqr_mont,.-ecp_nistz256_sqr_mont .type __ecp_nistz256_sqr_montq,@function .align 32 @@ -1760,7 +1716,7 @@ movq %r14,16(%rdi) movq %r15,24(%rdi) - .byte 0xf3,0xc3 + ret .cfi_endproc .size __ecp_nistz256_sqr_montq,.-__ecp_nistz256_sqr_montq .type __ecp_nistz256_mul_montx,@function @@ -1928,7 +1884,7 @@ movq %r8,16(%rdi) movq %r9,24(%rdi) - .byte 0xf3,0xc3 + ret .cfi_endproc .size __ecp_nistz256_mul_montx,.-__ecp_nistz256_mul_montx @@ -2058,18 +2014,19 @@ movq %r14,16(%rdi) movq %r15,24(%rdi) - .byte 0xf3,0xc3 + ret .cfi_endproc .size __ecp_nistz256_sqr_montx,.-__ecp_nistz256_sqr_montx -.globl GFp_nistz256_select_w5 -.hidden GFp_nistz256_select_w5 -.type GFp_nistz256_select_w5,@function +.globl ecp_nistz256_select_w5 +.hidden ecp_nistz256_select_w5 +.type ecp_nistz256_select_w5,@function .align 32 -GFp_nistz256_select_w5: +ecp_nistz256_select_w5: .cfi_startproc - leaq GFp_ia32cap_P(%rip),%rax +_CET_ENDBR + leaq OPENSSL_ia32cap_P(%rip),%rax movq 8(%rax),%rax testl $32,%eax jnz .Lavx2_select_w5 @@ -2123,20 +2080,21 @@ movdqu %xmm5,48(%rdi) movdqu %xmm6,64(%rdi) movdqu %xmm7,80(%rdi) - .byte 0xf3,0xc3 + ret .cfi_endproc -.LSEH_end_GFp_nistz256_select_w5: -.size GFp_nistz256_select_w5,.-GFp_nistz256_select_w5 +.LSEH_end_ecp_nistz256_select_w5: +.size ecp_nistz256_select_w5,.-ecp_nistz256_select_w5 -.globl GFp_nistz256_select_w7 -.hidden GFp_nistz256_select_w7 -.type GFp_nistz256_select_w7,@function +.globl ecp_nistz256_select_w7 +.hidden ecp_nistz256_select_w7 +.type ecp_nistz256_select_w7,@function .align 32 -GFp_nistz256_select_w7: +ecp_nistz256_select_w7: .cfi_startproc - leaq GFp_ia32cap_P(%rip),%rax +_CET_ENDBR + leaq OPENSSL_ia32cap_P(%rip),%rax movq 8(%rax),%rax testl $32,%eax jnz .Lavx2_select_w7 @@ -2179,15 +2137,15 @@ movdqu %xmm3,16(%rdi) movdqu %xmm4,32(%rdi) movdqu %xmm5,48(%rdi) - .byte 0xf3,0xc3 + ret .cfi_endproc -.LSEH_end_GFp_nistz256_select_w7: -.size GFp_nistz256_select_w7,.-GFp_nistz256_select_w7 +.LSEH_end_ecp_nistz256_select_w7: +.size ecp_nistz256_select_w7,.-ecp_nistz256_select_w7 -.type GFp_nistz256_avx2_select_w5,@function +.type ecp_nistz256_avx2_select_w5,@function .align 32 -GFp_nistz256_avx2_select_w5: +ecp_nistz256_avx2_select_w5: .cfi_startproc .Lavx2_select_w5: vzeroupper @@ -2242,20 +2200,19 @@ vmovdqu %ymm3,32(%rdi) vmovdqu %ymm4,64(%rdi) vzeroupper - .byte 0xf3,0xc3 + ret .cfi_endproc -.LSEH_end_GFp_nistz256_avx2_select_w5: -.size GFp_nistz256_avx2_select_w5,.-GFp_nistz256_avx2_select_w5 +.LSEH_end_ecp_nistz256_avx2_select_w5: +.size ecp_nistz256_avx2_select_w5,.-ecp_nistz256_avx2_select_w5 -.globl GFp_nistz256_avx2_select_w7 -.hidden GFp_nistz256_avx2_select_w7 -.type GFp_nistz256_avx2_select_w7,@function +.type ecp_nistz256_avx2_select_w7,@function .align 32 -GFp_nistz256_avx2_select_w7: +ecp_nistz256_avx2_select_w7: .cfi_startproc .Lavx2_select_w7: +_CET_ENDBR vzeroupper vmovdqa .LThree(%rip),%ymm0 @@ -2323,10 +2280,10 @@ vmovdqu %ymm2,0(%rdi) vmovdqu %ymm3,32(%rdi) vzeroupper - .byte 0xf3,0xc3 + ret .cfi_endproc -.LSEH_end_GFp_nistz256_avx2_select_w7: -.size GFp_nistz256_avx2_select_w7,.-GFp_nistz256_avx2_select_w7 +.LSEH_end_ecp_nistz256_avx2_select_w7: +.size ecp_nistz256_avx2_select_w7,.-ecp_nistz256_avx2_select_w7 .type __ecp_nistz256_add_toq,@function .align 32 __ecp_nistz256_add_toq: @@ -2357,7 +2314,7 @@ movq %r8,16(%rdi) movq %r9,24(%rdi) - .byte 0xf3,0xc3 + ret .cfi_endproc .size __ecp_nistz256_add_toq,.-__ecp_nistz256_add_toq @@ -2390,7 +2347,7 @@ movq %r8,16(%rdi) movq %r9,24(%rdi) - .byte 0xf3,0xc3 + ret .cfi_endproc .size __ecp_nistz256_sub_fromq,.-__ecp_nistz256_sub_fromq @@ -2419,7 +2376,7 @@ cmovnzq %rcx,%r8 cmovnzq %r10,%r9 - .byte 0xf3,0xc3 + ret .cfi_endproc .size __ecp_nistz256_subq,.-__ecp_nistz256_subq @@ -2453,16 +2410,17 @@ movq %r8,16(%rdi) movq %r9,24(%rdi) - .byte 0xf3,0xc3 + ret .cfi_endproc .size __ecp_nistz256_mul_by_2q,.-__ecp_nistz256_mul_by_2q -.globl GFp_nistz256_point_double -.hidden GFp_nistz256_point_double -.type GFp_nistz256_point_double,@function +.globl ecp_nistz256_point_double +.hidden ecp_nistz256_point_double +.type ecp_nistz256_point_double,@function .align 32 -GFp_nistz256_point_double: +ecp_nistz256_point_double: .cfi_startproc - leaq GFp_ia32cap_P(%rip),%rcx +_CET_ENDBR + leaq OPENSSL_ia32cap_P(%rip),%rcx movq 8(%rcx),%rcx andl $0x80100,%ecx cmpl $0x80100,%ecx @@ -2687,16 +2645,17 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Lpoint_doubleq_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_nistz256_point_double,.-GFp_nistz256_point_double -.globl GFp_nistz256_point_add -.hidden GFp_nistz256_point_add -.type GFp_nistz256_point_add,@function +.size ecp_nistz256_point_double,.-ecp_nistz256_point_double +.globl ecp_nistz256_point_add +.hidden ecp_nistz256_point_add +.type ecp_nistz256_point_add,@function .align 32 -GFp_nistz256_point_add: +ecp_nistz256_point_add: .cfi_startproc - leaq GFp_ia32cap_P(%rip),%rcx +_CET_ENDBR + leaq OPENSSL_ia32cap_P(%rip),%rcx movq 8(%rcx),%rcx andl $0x80100,%ecx cmpl $0x80100,%ecx @@ -3124,16 +3083,17 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Lpoint_addq_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_nistz256_point_add,.-GFp_nistz256_point_add -.globl GFp_nistz256_point_add_affine -.hidden GFp_nistz256_point_add_affine -.type GFp_nistz256_point_add_affine,@function +.size ecp_nistz256_point_add,.-ecp_nistz256_point_add +.globl ecp_nistz256_point_add_affine +.hidden ecp_nistz256_point_add_affine +.type ecp_nistz256_point_add_affine,@function .align 32 -GFp_nistz256_point_add_affine: +ecp_nistz256_point_add_affine: .cfi_startproc - leaq GFp_ia32cap_P(%rip),%rcx +_CET_ENDBR + leaq OPENSSL_ia32cap_P(%rip),%rcx movq 8(%rcx),%rcx andl $0x80100,%ecx cmpl $0x80100,%ecx @@ -3458,9 +3418,9 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Ladd_affineq_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_nistz256_point_add_affine,.-GFp_nistz256_point_add_affine +.size ecp_nistz256_point_add_affine,.-ecp_nistz256_point_add_affine .type __ecp_nistz256_add_tox,@function .align 32 __ecp_nistz256_add_tox: @@ -3492,7 +3452,7 @@ movq %r8,16(%rdi) movq %r9,24(%rdi) - .byte 0xf3,0xc3 + ret .cfi_endproc .size __ecp_nistz256_add_tox,.-__ecp_nistz256_add_tox @@ -3527,7 +3487,7 @@ movq %r8,16(%rdi) movq %r9,24(%rdi) - .byte 0xf3,0xc3 + ret .cfi_endproc .size __ecp_nistz256_sub_fromx,.-__ecp_nistz256_sub_fromx @@ -3558,7 +3518,7 @@ cmovcq %rcx,%r8 cmovcq %r10,%r9 - .byte 0xf3,0xc3 + ret .cfi_endproc .size __ecp_nistz256_subx,.-__ecp_nistz256_subx @@ -3593,12 +3553,12 @@ movq %r8,16(%rdi) movq %r9,24(%rdi) - .byte 0xf3,0xc3 + ret .cfi_endproc .size __ecp_nistz256_mul_by_2x,.-__ecp_nistz256_mul_by_2x -.type GFp_nistz256_point_doublex,@function +.type ecp_nistz256_point_doublex,@function .align 32 -GFp_nistz256_point_doublex: +ecp_nistz256_point_doublex: .cfi_startproc .Lpoint_doublex: pushq %rbp @@ -3821,12 +3781,12 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Lpoint_doublex_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_nistz256_point_doublex,.-GFp_nistz256_point_doublex -.type GFp_nistz256_point_addx,@function +.size ecp_nistz256_point_doublex,.-ecp_nistz256_point_doublex +.type ecp_nistz256_point_addx,@function .align 32 -GFp_nistz256_point_addx: +ecp_nistz256_point_addx: .cfi_startproc .Lpoint_addx: pushq %rbp @@ -4252,12 +4212,12 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Lpoint_addx_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_nistz256_point_addx,.-GFp_nistz256_point_addx -.type GFp_nistz256_point_add_affinex,@function +.size ecp_nistz256_point_addx,.-ecp_nistz256_point_addx +.type ecp_nistz256_point_add_affinex,@function .align 32 -GFp_nistz256_point_add_affinex: +ecp_nistz256_point_add_affinex: .cfi_startproc .Lpoint_add_affinex: pushq %rbp @@ -4580,8 +4540,7 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Ladd_affinex_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_nistz256_point_add_affinex,.-GFp_nistz256_point_add_affinex +.size ecp_nistz256_point_add_affinex,.-ecp_nistz256_point_add_affinex #endif -.section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/p256-x86_64-asm-macosx.S temporalio-1.3.0/vendor/ring/pregenerated/p256-x86_64-asm-macosx.S --- temporalio-1.3.0/vendor/ring/pregenerated/p256-x86_64-asm-macosx.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/p256-x86_64-asm-macosx.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,17 +1,14 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__APPLE__) .text +.section __DATA,__const .p2align 6 L$poly: .quad 0xffffffffffffffff, 0x00000000ffffffff, 0x0000000000000000, 0xffffffff00000001 @@ -30,62 +27,17 @@ .quad 0xf3b9cac2fc632551, 0xbce6faada7179e84, 0xffffffffffffffff, 0xffffffff00000000 L$ordK: .quad 0xccd1c8aaee00bc4f +.text -.globl _GFp_nistz256_add -.private_extern _GFp_nistz256_add - -.p2align 5 -_GFp_nistz256_add: - pushq %r12 - pushq %r13 - - movq 0(%rsi),%r8 - xorq %r13,%r13 - movq 8(%rsi),%r9 - movq 16(%rsi),%r10 - movq 24(%rsi),%r11 - leaq L$poly(%rip),%rsi - - addq 0(%rdx),%r8 - adcq 8(%rdx),%r9 - movq %r8,%rax - adcq 16(%rdx),%r10 - adcq 24(%rdx),%r11 - movq %r9,%rdx - adcq $0,%r13 - - subq 0(%rsi),%r8 - movq %r10,%rcx - sbbq 8(%rsi),%r9 - sbbq 16(%rsi),%r10 - movq %r11,%r12 - sbbq 24(%rsi),%r11 - sbbq $0,%r13 - - cmovcq %rax,%r8 - cmovcq %rdx,%r9 - movq %r8,0(%rdi) - cmovcq %rcx,%r10 - movq %r9,8(%rdi) - cmovcq %r12,%r11 - movq %r10,16(%rdi) - movq %r11,24(%rdi) - - popq %r13 - popq %r12 - .byte 0xf3,0xc3 - - - - -.globl _GFp_nistz256_neg -.private_extern _GFp_nistz256_neg +.globl _ecp_nistz256_neg +.private_extern _ecp_nistz256_neg .p2align 5 -_GFp_nistz256_neg: +_ecp_nistz256_neg: +_CET_ENDBR pushq %r12 pushq %r13 @@ -131,7 +83,7 @@ leaq 16(%rsp),%rsp L$neg_epilogue: - .byte 0xf3,0xc3 + ret @@ -140,13 +92,14 @@ -.globl _GFp_p256_scalar_mul_mont -.private_extern _GFp_p256_scalar_mul_mont +.globl _ecp_nistz256_ord_mul_mont +.private_extern _ecp_nistz256_ord_mul_mont .p2align 5 -_GFp_p256_scalar_mul_mont: +_ecp_nistz256_ord_mul_mont: - leaq _GFp_ia32cap_P(%rip),%rcx +_CET_ENDBR + leaq _OPENSSL_ia32cap_P(%rip),%rcx movq 8(%rcx),%rcx andl $0x80100,%ecx cmpl $0x80100,%ecx @@ -458,7 +411,7 @@ leaq 48(%rsp),%rsp L$ord_mul_epilogue: - .byte 0xf3,0xc3 + ret @@ -468,13 +421,14 @@ -.globl _GFp_p256_scalar_sqr_rep_mont -.private_extern _GFp_p256_scalar_sqr_rep_mont +.globl _ecp_nistz256_ord_sqr_mont +.private_extern _ecp_nistz256_ord_sqr_mont .p2align 5 -_GFp_p256_scalar_sqr_rep_mont: +_ecp_nistz256_ord_sqr_mont: - leaq _GFp_ia32cap_P(%rip),%rcx +_CET_ENDBR + leaq _OPENSSL_ia32cap_P(%rip),%rcx movq 8(%rcx),%rcx andl $0x80100,%ecx cmpl $0x80100,%ecx @@ -756,7 +710,7 @@ leaq 48(%rsp),%rsp L$ord_sqr_epilogue: - .byte 0xf3,0xc3 + ret @@ -992,7 +946,7 @@ leaq 48(%rsp),%rsp L$ord_mulx_epilogue: - .byte 0xf3,0xc3 + ret @@ -1200,7 +1154,7 @@ leaq 48(%rsp),%rsp L$ord_sqrx_epilogue: - .byte 0xf3,0xc3 + ret @@ -1209,13 +1163,14 @@ -.globl _GFp_nistz256_mul_mont -.private_extern _GFp_nistz256_mul_mont +.globl _ecp_nistz256_mul_mont +.private_extern _ecp_nistz256_mul_mont .p2align 5 -_GFp_nistz256_mul_mont: +_ecp_nistz256_mul_mont: - leaq _GFp_ia32cap_P(%rip),%rcx +_CET_ENDBR + leaq _OPENSSL_ia32cap_P(%rip),%rcx movq 8(%rcx),%rcx andl $0x80100,%ecx L$mul_mont: @@ -1271,7 +1226,7 @@ leaq 48(%rsp),%rsp L$mul_epilogue: - .byte 0xf3,0xc3 + ret @@ -1489,7 +1444,7 @@ movq %r8,16(%rdi) movq %r9,24(%rdi) - .byte 0xf3,0xc3 + ret @@ -1500,13 +1455,14 @@ -.globl _GFp_nistz256_sqr_mont -.private_extern _GFp_nistz256_sqr_mont +.globl _ecp_nistz256_sqr_mont +.private_extern _ecp_nistz256_sqr_mont .p2align 5 -_GFp_nistz256_sqr_mont: +_ecp_nistz256_sqr_mont: - leaq _GFp_ia32cap_P(%rip),%rcx +_CET_ENDBR + leaq _OPENSSL_ia32cap_P(%rip),%rcx movq 8(%rcx),%rcx andl $0x80100,%ecx pushq %rbp @@ -1557,7 +1513,7 @@ leaq 48(%rsp),%rsp L$sqr_epilogue: - .byte 0xf3,0xc3 + ret @@ -1721,7 +1677,7 @@ movq %r14,16(%rdi) movq %r15,24(%rdi) - .byte 0xf3,0xc3 + ret @@ -1889,7 +1845,7 @@ movq %r8,16(%rdi) movq %r9,24(%rdi) - .byte 0xf3,0xc3 + ret @@ -2019,18 +1975,19 @@ movq %r14,16(%rdi) movq %r15,24(%rdi) - .byte 0xf3,0xc3 + ret -.globl _GFp_nistz256_select_w5 -.private_extern _GFp_nistz256_select_w5 +.globl _ecp_nistz256_select_w5 +.private_extern _ecp_nistz256_select_w5 .p2align 5 -_GFp_nistz256_select_w5: +_ecp_nistz256_select_w5: - leaq _GFp_ia32cap_P(%rip),%rax +_CET_ENDBR + leaq _OPENSSL_ia32cap_P(%rip),%rax movq 8(%rax),%rax testl $32,%eax jnz L$avx2_select_w5 @@ -2084,20 +2041,21 @@ movdqu %xmm5,48(%rdi) movdqu %xmm6,64(%rdi) movdqu %xmm7,80(%rdi) - .byte 0xf3,0xc3 + ret -L$SEH_end_GFp_nistz256_select_w5: +L$SEH_end_ecp_nistz256_select_w5: -.globl _GFp_nistz256_select_w7 -.private_extern _GFp_nistz256_select_w7 +.globl _ecp_nistz256_select_w7 +.private_extern _ecp_nistz256_select_w7 .p2align 5 -_GFp_nistz256_select_w7: +_ecp_nistz256_select_w7: - leaq _GFp_ia32cap_P(%rip),%rax +_CET_ENDBR + leaq _OPENSSL_ia32cap_P(%rip),%rax movq 8(%rax),%rax testl $32,%eax jnz L$avx2_select_w7 @@ -2140,15 +2098,15 @@ movdqu %xmm3,16(%rdi) movdqu %xmm4,32(%rdi) movdqu %xmm5,48(%rdi) - .byte 0xf3,0xc3 + ret -L$SEH_end_GFp_nistz256_select_w7: +L$SEH_end_ecp_nistz256_select_w7: .p2align 5 -GFp_nistz256_avx2_select_w5: +ecp_nistz256_avx2_select_w5: L$avx2_select_w5: vzeroupper @@ -2203,20 +2161,19 @@ vmovdqu %ymm3,32(%rdi) vmovdqu %ymm4,64(%rdi) vzeroupper - .byte 0xf3,0xc3 + ret -L$SEH_end_GFp_nistz256_avx2_select_w5: +L$SEH_end_ecp_nistz256_avx2_select_w5: -.globl _GFp_nistz256_avx2_select_w7 -.private_extern _GFp_nistz256_avx2_select_w7 .p2align 5 -_GFp_nistz256_avx2_select_w7: +ecp_nistz256_avx2_select_w7: L$avx2_select_w7: +_CET_ENDBR vzeroupper vmovdqa L$Three(%rip),%ymm0 @@ -2284,9 +2241,9 @@ vmovdqu %ymm2,0(%rdi) vmovdqu %ymm3,32(%rdi) vzeroupper - .byte 0xf3,0xc3 + ret -L$SEH_end_GFp_nistz256_avx2_select_w7: +L$SEH_end_ecp_nistz256_avx2_select_w7: .p2align 5 @@ -2318,7 +2275,7 @@ movq %r8,16(%rdi) movq %r9,24(%rdi) - .byte 0xf3,0xc3 + ret @@ -2351,7 +2308,7 @@ movq %r8,16(%rdi) movq %r9,24(%rdi) - .byte 0xf3,0xc3 + ret @@ -2380,7 +2337,7 @@ cmovnzq %rcx,%r8 cmovnzq %r10,%r9 - .byte 0xf3,0xc3 + ret @@ -2414,16 +2371,17 @@ movq %r8,16(%rdi) movq %r9,24(%rdi) - .byte 0xf3,0xc3 + ret -.globl _GFp_nistz256_point_double -.private_extern _GFp_nistz256_point_double +.globl _ecp_nistz256_point_double +.private_extern _ecp_nistz256_point_double .p2align 5 -_GFp_nistz256_point_double: +_ecp_nistz256_point_double: - leaq _GFp_ia32cap_P(%rip),%rcx +_CET_ENDBR + leaq _OPENSSL_ia32cap_P(%rip),%rcx movq 8(%rcx),%rcx andl $0x80100,%ecx cmpl $0x80100,%ecx @@ -2642,16 +2600,17 @@ leaq (%rsi),%rsp L$point_doubleq_epilogue: - .byte 0xf3,0xc3 + ret -.globl _GFp_nistz256_point_add -.private_extern _GFp_nistz256_point_add +.globl _ecp_nistz256_point_add +.private_extern _ecp_nistz256_point_add .p2align 5 -_GFp_nistz256_point_add: +_ecp_nistz256_point_add: - leaq _GFp_ia32cap_P(%rip),%rcx +_CET_ENDBR + leaq _OPENSSL_ia32cap_P(%rip),%rcx movq 8(%rcx),%rcx andl $0x80100,%ecx cmpl $0x80100,%ecx @@ -3073,16 +3032,17 @@ leaq (%rsi),%rsp L$point_addq_epilogue: - .byte 0xf3,0xc3 + ret -.globl _GFp_nistz256_point_add_affine -.private_extern _GFp_nistz256_point_add_affine +.globl _ecp_nistz256_point_add_affine +.private_extern _ecp_nistz256_point_add_affine .p2align 5 -_GFp_nistz256_point_add_affine: +_ecp_nistz256_point_add_affine: - leaq _GFp_ia32cap_P(%rip),%rcx +_CET_ENDBR + leaq _OPENSSL_ia32cap_P(%rip),%rcx movq 8(%rcx),%rcx andl $0x80100,%ecx cmpl $0x80100,%ecx @@ -3401,7 +3361,7 @@ leaq (%rsi),%rsp L$add_affineq_epilogue: - .byte 0xf3,0xc3 + ret @@ -3435,7 +3395,7 @@ movq %r8,16(%rdi) movq %r9,24(%rdi) - .byte 0xf3,0xc3 + ret @@ -3470,7 +3430,7 @@ movq %r8,16(%rdi) movq %r9,24(%rdi) - .byte 0xf3,0xc3 + ret @@ -3501,7 +3461,7 @@ cmovcq %rcx,%r8 cmovcq %r10,%r9 - .byte 0xf3,0xc3 + ret @@ -3536,12 +3496,12 @@ movq %r8,16(%rdi) movq %r9,24(%rdi) - .byte 0xf3,0xc3 + ret .p2align 5 -GFp_nistz256_point_doublex: +ecp_nistz256_point_doublex: L$point_doublex: pushq %rbp @@ -3758,12 +3718,12 @@ leaq (%rsi),%rsp L$point_doublex_epilogue: - .byte 0xf3,0xc3 + ret .p2align 5 -GFp_nistz256_point_addx: +ecp_nistz256_point_addx: L$point_addx: pushq %rbp @@ -4183,12 +4143,12 @@ leaq (%rsi),%rsp L$point_addx_epilogue: - .byte 0xf3,0xc3 + ret .p2align 5 -GFp_nistz256_point_add_affinex: +ecp_nistz256_point_add_affinex: L$point_add_affinex: pushq %rbp @@ -4505,7 +4465,7 @@ leaq (%rsi),%rsp L$add_affinex_epilogue: - .byte 0xf3,0xc3 + ret #endif Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/pregenerated/p256-x86_64-asm-nasm.obj and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/pregenerated/p256-x86_64-asm-nasm.obj differ diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv4-ios32.S temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv4-ios32.S --- temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv4-ios32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv4-ios32.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,2834 +0,0 @@ -// This file is generated from a similarly-named Perl script in the BoringSSL -// source tree. Do not edit by hand. - -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif - -#if !defined(OPENSSL_NO_ASM) -@ Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. -@ -@ Licensed under the OpenSSL license (the "License"). You may not use -@ this file except in compliance with the License. You can obtain a copy -@ in the file LICENSE in the source distribution or at -@ https://www.openssl.org/source/license.html - - -@ ==================================================================== -@ Written by Andy Polyakov for the OpenSSL -@ project. The module is, however, dual licensed under OpenSSL and -@ CRYPTOGAMS licenses depending on where you obtain it. For further -@ details see http://www.openssl.org/~appro/cryptogams/. -@ -@ Permission to use under GPL terms is granted. -@ ==================================================================== - -@ SHA256 block procedure for ARMv4. May 2007. - -@ Performance is ~2x better than gcc 3.4 generated code and in "abso- -@ lute" terms is ~2250 cycles per 64-byte block or ~35 cycles per -@ byte [on single-issue Xscale PXA250 core]. - -@ July 2010. -@ -@ Rescheduling for dual-issue pipeline resulted in 22% improvement on -@ Cortex A8 core and ~20 cycles per processed byte. - -@ February 2011. -@ -@ Profiler-assisted and platform-specific optimization resulted in 16% -@ improvement on Cortex A8 core and ~15.4 cycles per processed byte. - -@ September 2013. -@ -@ Add NEON implementation. On Cortex A8 it was measured to process one -@ byte in 12.5 cycles or 23% faster than integer-only code. Snapdragon -@ S4 does it in 12.5 cycles too, but it's 50% faster than integer-only -@ code (meaning that latter performs sub-optimally, nothing was done -@ about it). - -@ May 2014. -@ -@ Add ARMv8 code path performing at 2.0 cpb on Apple A7. - -#ifndef __KERNEL__ -# include -#else -# define __ARM_ARCH__ __LINUX_ARM_ARCH__ -# define __ARM_MAX_ARCH__ 7 -#endif - -@ Silence ARMv8 deprecated IT instruction warnings. This file is used by both -@ ARMv7 and ARMv8 processors. It does have ARMv8-only code, but those -@ instructions are manually-encoded. (See unsha256.) - - -.text -#if defined(__thumb2__) -.syntax unified -.thumb -#else -.code 32 -#endif - - -.align 5 -K256: -.word 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 -.word 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 -.word 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 -.word 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 -.word 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc -.word 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da -.word 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 -.word 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 -.word 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 -.word 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 -.word 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 -.word 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 -.word 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 -.word 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 -.word 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 -.word 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 - -.word 0 @ terminator -#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) - -.private_extern _GFp_armcap_P -LOPENSSL_armcap: -.word _GFp_armcap_P-Lsha256_block_data_order -#endif -.align 5 - -.globl _GFp_sha256_block_data_order -.private_extern _GFp_sha256_block_data_order -#ifdef __thumb2__ -.thumb_func _GFp_sha256_block_data_order -#endif -_GFp_sha256_block_data_order: -Lsha256_block_data_order: -#if __ARM_ARCH__<7 && !defined(__thumb2__) - sub r3,pc,#8 @ _GFp_sha256_block_data_order -#else - adr r3,Lsha256_block_data_order -#endif -#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) - ldr r12,LOPENSSL_armcap - ldr r12,[r3,r12] @ _GFp_armcap_P -#ifdef __APPLE__ - ldr r12,[r12] -#endif - tst r12,#ARMV8_SHA256 - bne LARMv8 - tst r12,#ARMV7_NEON - bne LNEON -#endif - add r2,r1,r2,lsl#6 @ len to point at the end of inp - stmdb sp!,{r0,r1,r2,r4-r11,lr} - ldmia r0,{r4,r5,r6,r7,r8,r9,r10,r11} - sub r14,r3,#256+32 @ K256 - sub sp,sp,#16*4 @ alloca(X[16]) -Loop: -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 -# else - ldrb r2,[r1,#3] -# endif - eor r3,r5,r6 @ magic - eor r12,r12,r12 -#if __ARM_ARCH__>=7 - @ ldr r2,[r1],#4 @ 0 -# if 0==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r8,r8,ror#5 - add r4,r4,r12 @ h+=Maj(a,b,c) from the past - eor r0,r0,r8,ror#19 @ Sigma1(e) -# ifndef __ARMEB__ - rev r2,r2 -# endif -#else - @ ldrb r2,[r1,#3] @ 0 - add r4,r4,r12 @ h+=Maj(a,b,c) from the past - ldrb r12,[r1,#2] - ldrb r0,[r1,#1] - orr r2,r2,r12,lsl#8 - ldrb r12,[r1],#4 - orr r2,r2,r0,lsl#16 -# if 0==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r8,r8,ror#5 - orr r2,r2,r12,lsl#24 - eor r0,r0,r8,ror#19 @ Sigma1(e) -#endif - ldr r12,[r14],#4 @ *K256++ - add r11,r11,r2 @ h+=X[i] - str r2,[sp,#0*4] - eor r2,r9,r10 - add r11,r11,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r8 - add r11,r11,r12 @ h+=K256[i] - eor r2,r2,r10 @ Ch(e,f,g) - eor r0,r4,r4,ror#11 - add r11,r11,r2 @ h+=Ch(e,f,g) -#if 0==31 - and r12,r12,#0xff - cmp r12,#0xf2 @ done? -#endif -#if 0<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r12,r4,r5 @ a^b, b^c in next round -#else - ldr r2,[sp,#2*4] @ from future BODY_16_xx - eor r12,r4,r5 @ a^b, b^c in next round - ldr r1,[sp,#15*4] @ from future BODY_16_xx -#endif - eor r0,r0,r4,ror#20 @ Sigma0(a) - and r3,r3,r12 @ (b^c)&=(a^b) - add r7,r7,r11 @ d+=h - eor r3,r3,r5 @ Maj(a,b,c) - add r11,r11,r0,ror#2 @ h+=Sigma0(a) - @ add r11,r11,r3 @ h+=Maj(a,b,c) -#if __ARM_ARCH__>=7 - @ ldr r2,[r1],#4 @ 1 -# if 1==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r7,r7,ror#5 - add r11,r11,r3 @ h+=Maj(a,b,c) from the past - eor r0,r0,r7,ror#19 @ Sigma1(e) -# ifndef __ARMEB__ - rev r2,r2 -# endif -#else - @ ldrb r2,[r1,#3] @ 1 - add r11,r11,r3 @ h+=Maj(a,b,c) from the past - ldrb r3,[r1,#2] - ldrb r0,[r1,#1] - orr r2,r2,r3,lsl#8 - ldrb r3,[r1],#4 - orr r2,r2,r0,lsl#16 -# if 1==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r7,r7,ror#5 - orr r2,r2,r3,lsl#24 - eor r0,r0,r7,ror#19 @ Sigma1(e) -#endif - ldr r3,[r14],#4 @ *K256++ - add r10,r10,r2 @ h+=X[i] - str r2,[sp,#1*4] - eor r2,r8,r9 - add r10,r10,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r7 - add r10,r10,r3 @ h+=K256[i] - eor r2,r2,r9 @ Ch(e,f,g) - eor r0,r11,r11,ror#11 - add r10,r10,r2 @ h+=Ch(e,f,g) -#if 1==31 - and r3,r3,#0xff - cmp r3,#0xf2 @ done? -#endif -#if 1<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r3,r11,r4 @ a^b, b^c in next round -#else - ldr r2,[sp,#3*4] @ from future BODY_16_xx - eor r3,r11,r4 @ a^b, b^c in next round - ldr r1,[sp,#0*4] @ from future BODY_16_xx -#endif - eor r0,r0,r11,ror#20 @ Sigma0(a) - and r12,r12,r3 @ (b^c)&=(a^b) - add r6,r6,r10 @ d+=h - eor r12,r12,r4 @ Maj(a,b,c) - add r10,r10,r0,ror#2 @ h+=Sigma0(a) - @ add r10,r10,r12 @ h+=Maj(a,b,c) -#if __ARM_ARCH__>=7 - @ ldr r2,[r1],#4 @ 2 -# if 2==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r6,r6,ror#5 - add r10,r10,r12 @ h+=Maj(a,b,c) from the past - eor r0,r0,r6,ror#19 @ Sigma1(e) -# ifndef __ARMEB__ - rev r2,r2 -# endif -#else - @ ldrb r2,[r1,#3] @ 2 - add r10,r10,r12 @ h+=Maj(a,b,c) from the past - ldrb r12,[r1,#2] - ldrb r0,[r1,#1] - orr r2,r2,r12,lsl#8 - ldrb r12,[r1],#4 - orr r2,r2,r0,lsl#16 -# if 2==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r6,r6,ror#5 - orr r2,r2,r12,lsl#24 - eor r0,r0,r6,ror#19 @ Sigma1(e) -#endif - ldr r12,[r14],#4 @ *K256++ - add r9,r9,r2 @ h+=X[i] - str r2,[sp,#2*4] - eor r2,r7,r8 - add r9,r9,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r6 - add r9,r9,r12 @ h+=K256[i] - eor r2,r2,r8 @ Ch(e,f,g) - eor r0,r10,r10,ror#11 - add r9,r9,r2 @ h+=Ch(e,f,g) -#if 2==31 - and r12,r12,#0xff - cmp r12,#0xf2 @ done? -#endif -#if 2<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r12,r10,r11 @ a^b, b^c in next round -#else - ldr r2,[sp,#4*4] @ from future BODY_16_xx - eor r12,r10,r11 @ a^b, b^c in next round - ldr r1,[sp,#1*4] @ from future BODY_16_xx -#endif - eor r0,r0,r10,ror#20 @ Sigma0(a) - and r3,r3,r12 @ (b^c)&=(a^b) - add r5,r5,r9 @ d+=h - eor r3,r3,r11 @ Maj(a,b,c) - add r9,r9,r0,ror#2 @ h+=Sigma0(a) - @ add r9,r9,r3 @ h+=Maj(a,b,c) -#if __ARM_ARCH__>=7 - @ ldr r2,[r1],#4 @ 3 -# if 3==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r5,r5,ror#5 - add r9,r9,r3 @ h+=Maj(a,b,c) from the past - eor r0,r0,r5,ror#19 @ Sigma1(e) -# ifndef __ARMEB__ - rev r2,r2 -# endif -#else - @ ldrb r2,[r1,#3] @ 3 - add r9,r9,r3 @ h+=Maj(a,b,c) from the past - ldrb r3,[r1,#2] - ldrb r0,[r1,#1] - orr r2,r2,r3,lsl#8 - ldrb r3,[r1],#4 - orr r2,r2,r0,lsl#16 -# if 3==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r5,r5,ror#5 - orr r2,r2,r3,lsl#24 - eor r0,r0,r5,ror#19 @ Sigma1(e) -#endif - ldr r3,[r14],#4 @ *K256++ - add r8,r8,r2 @ h+=X[i] - str r2,[sp,#3*4] - eor r2,r6,r7 - add r8,r8,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r5 - add r8,r8,r3 @ h+=K256[i] - eor r2,r2,r7 @ Ch(e,f,g) - eor r0,r9,r9,ror#11 - add r8,r8,r2 @ h+=Ch(e,f,g) -#if 3==31 - and r3,r3,#0xff - cmp r3,#0xf2 @ done? -#endif -#if 3<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r3,r9,r10 @ a^b, b^c in next round -#else - ldr r2,[sp,#5*4] @ from future BODY_16_xx - eor r3,r9,r10 @ a^b, b^c in next round - ldr r1,[sp,#2*4] @ from future BODY_16_xx -#endif - eor r0,r0,r9,ror#20 @ Sigma0(a) - and r12,r12,r3 @ (b^c)&=(a^b) - add r4,r4,r8 @ d+=h - eor r12,r12,r10 @ Maj(a,b,c) - add r8,r8,r0,ror#2 @ h+=Sigma0(a) - @ add r8,r8,r12 @ h+=Maj(a,b,c) -#if __ARM_ARCH__>=7 - @ ldr r2,[r1],#4 @ 4 -# if 4==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r4,r4,ror#5 - add r8,r8,r12 @ h+=Maj(a,b,c) from the past - eor r0,r0,r4,ror#19 @ Sigma1(e) -# ifndef __ARMEB__ - rev r2,r2 -# endif -#else - @ ldrb r2,[r1,#3] @ 4 - add r8,r8,r12 @ h+=Maj(a,b,c) from the past - ldrb r12,[r1,#2] - ldrb r0,[r1,#1] - orr r2,r2,r12,lsl#8 - ldrb r12,[r1],#4 - orr r2,r2,r0,lsl#16 -# if 4==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r4,r4,ror#5 - orr r2,r2,r12,lsl#24 - eor r0,r0,r4,ror#19 @ Sigma1(e) -#endif - ldr r12,[r14],#4 @ *K256++ - add r7,r7,r2 @ h+=X[i] - str r2,[sp,#4*4] - eor r2,r5,r6 - add r7,r7,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r4 - add r7,r7,r12 @ h+=K256[i] - eor r2,r2,r6 @ Ch(e,f,g) - eor r0,r8,r8,ror#11 - add r7,r7,r2 @ h+=Ch(e,f,g) -#if 4==31 - and r12,r12,#0xff - cmp r12,#0xf2 @ done? -#endif -#if 4<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r12,r8,r9 @ a^b, b^c in next round -#else - ldr r2,[sp,#6*4] @ from future BODY_16_xx - eor r12,r8,r9 @ a^b, b^c in next round - ldr r1,[sp,#3*4] @ from future BODY_16_xx -#endif - eor r0,r0,r8,ror#20 @ Sigma0(a) - and r3,r3,r12 @ (b^c)&=(a^b) - add r11,r11,r7 @ d+=h - eor r3,r3,r9 @ Maj(a,b,c) - add r7,r7,r0,ror#2 @ h+=Sigma0(a) - @ add r7,r7,r3 @ h+=Maj(a,b,c) -#if __ARM_ARCH__>=7 - @ ldr r2,[r1],#4 @ 5 -# if 5==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r11,r11,ror#5 - add r7,r7,r3 @ h+=Maj(a,b,c) from the past - eor r0,r0,r11,ror#19 @ Sigma1(e) -# ifndef __ARMEB__ - rev r2,r2 -# endif -#else - @ ldrb r2,[r1,#3] @ 5 - add r7,r7,r3 @ h+=Maj(a,b,c) from the past - ldrb r3,[r1,#2] - ldrb r0,[r1,#1] - orr r2,r2,r3,lsl#8 - ldrb r3,[r1],#4 - orr r2,r2,r0,lsl#16 -# if 5==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r11,r11,ror#5 - orr r2,r2,r3,lsl#24 - eor r0,r0,r11,ror#19 @ Sigma1(e) -#endif - ldr r3,[r14],#4 @ *K256++ - add r6,r6,r2 @ h+=X[i] - str r2,[sp,#5*4] - eor r2,r4,r5 - add r6,r6,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r11 - add r6,r6,r3 @ h+=K256[i] - eor r2,r2,r5 @ Ch(e,f,g) - eor r0,r7,r7,ror#11 - add r6,r6,r2 @ h+=Ch(e,f,g) -#if 5==31 - and r3,r3,#0xff - cmp r3,#0xf2 @ done? -#endif -#if 5<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r3,r7,r8 @ a^b, b^c in next round -#else - ldr r2,[sp,#7*4] @ from future BODY_16_xx - eor r3,r7,r8 @ a^b, b^c in next round - ldr r1,[sp,#4*4] @ from future BODY_16_xx -#endif - eor r0,r0,r7,ror#20 @ Sigma0(a) - and r12,r12,r3 @ (b^c)&=(a^b) - add r10,r10,r6 @ d+=h - eor r12,r12,r8 @ Maj(a,b,c) - add r6,r6,r0,ror#2 @ h+=Sigma0(a) - @ add r6,r6,r12 @ h+=Maj(a,b,c) -#if __ARM_ARCH__>=7 - @ ldr r2,[r1],#4 @ 6 -# if 6==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r10,r10,ror#5 - add r6,r6,r12 @ h+=Maj(a,b,c) from the past - eor r0,r0,r10,ror#19 @ Sigma1(e) -# ifndef __ARMEB__ - rev r2,r2 -# endif -#else - @ ldrb r2,[r1,#3] @ 6 - add r6,r6,r12 @ h+=Maj(a,b,c) from the past - ldrb r12,[r1,#2] - ldrb r0,[r1,#1] - orr r2,r2,r12,lsl#8 - ldrb r12,[r1],#4 - orr r2,r2,r0,lsl#16 -# if 6==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r10,r10,ror#5 - orr r2,r2,r12,lsl#24 - eor r0,r0,r10,ror#19 @ Sigma1(e) -#endif - ldr r12,[r14],#4 @ *K256++ - add r5,r5,r2 @ h+=X[i] - str r2,[sp,#6*4] - eor r2,r11,r4 - add r5,r5,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r10 - add r5,r5,r12 @ h+=K256[i] - eor r2,r2,r4 @ Ch(e,f,g) - eor r0,r6,r6,ror#11 - add r5,r5,r2 @ h+=Ch(e,f,g) -#if 6==31 - and r12,r12,#0xff - cmp r12,#0xf2 @ done? -#endif -#if 6<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r12,r6,r7 @ a^b, b^c in next round -#else - ldr r2,[sp,#8*4] @ from future BODY_16_xx - eor r12,r6,r7 @ a^b, b^c in next round - ldr r1,[sp,#5*4] @ from future BODY_16_xx -#endif - eor r0,r0,r6,ror#20 @ Sigma0(a) - and r3,r3,r12 @ (b^c)&=(a^b) - add r9,r9,r5 @ d+=h - eor r3,r3,r7 @ Maj(a,b,c) - add r5,r5,r0,ror#2 @ h+=Sigma0(a) - @ add r5,r5,r3 @ h+=Maj(a,b,c) -#if __ARM_ARCH__>=7 - @ ldr r2,[r1],#4 @ 7 -# if 7==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r9,r9,ror#5 - add r5,r5,r3 @ h+=Maj(a,b,c) from the past - eor r0,r0,r9,ror#19 @ Sigma1(e) -# ifndef __ARMEB__ - rev r2,r2 -# endif -#else - @ ldrb r2,[r1,#3] @ 7 - add r5,r5,r3 @ h+=Maj(a,b,c) from the past - ldrb r3,[r1,#2] - ldrb r0,[r1,#1] - orr r2,r2,r3,lsl#8 - ldrb r3,[r1],#4 - orr r2,r2,r0,lsl#16 -# if 7==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r9,r9,ror#5 - orr r2,r2,r3,lsl#24 - eor r0,r0,r9,ror#19 @ Sigma1(e) -#endif - ldr r3,[r14],#4 @ *K256++ - add r4,r4,r2 @ h+=X[i] - str r2,[sp,#7*4] - eor r2,r10,r11 - add r4,r4,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r9 - add r4,r4,r3 @ h+=K256[i] - eor r2,r2,r11 @ Ch(e,f,g) - eor r0,r5,r5,ror#11 - add r4,r4,r2 @ h+=Ch(e,f,g) -#if 7==31 - and r3,r3,#0xff - cmp r3,#0xf2 @ done? -#endif -#if 7<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r3,r5,r6 @ a^b, b^c in next round -#else - ldr r2,[sp,#9*4] @ from future BODY_16_xx - eor r3,r5,r6 @ a^b, b^c in next round - ldr r1,[sp,#6*4] @ from future BODY_16_xx -#endif - eor r0,r0,r5,ror#20 @ Sigma0(a) - and r12,r12,r3 @ (b^c)&=(a^b) - add r8,r8,r4 @ d+=h - eor r12,r12,r6 @ Maj(a,b,c) - add r4,r4,r0,ror#2 @ h+=Sigma0(a) - @ add r4,r4,r12 @ h+=Maj(a,b,c) -#if __ARM_ARCH__>=7 - @ ldr r2,[r1],#4 @ 8 -# if 8==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r8,r8,ror#5 - add r4,r4,r12 @ h+=Maj(a,b,c) from the past - eor r0,r0,r8,ror#19 @ Sigma1(e) -# ifndef __ARMEB__ - rev r2,r2 -# endif -#else - @ ldrb r2,[r1,#3] @ 8 - add r4,r4,r12 @ h+=Maj(a,b,c) from the past - ldrb r12,[r1,#2] - ldrb r0,[r1,#1] - orr r2,r2,r12,lsl#8 - ldrb r12,[r1],#4 - orr r2,r2,r0,lsl#16 -# if 8==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r8,r8,ror#5 - orr r2,r2,r12,lsl#24 - eor r0,r0,r8,ror#19 @ Sigma1(e) -#endif - ldr r12,[r14],#4 @ *K256++ - add r11,r11,r2 @ h+=X[i] - str r2,[sp,#8*4] - eor r2,r9,r10 - add r11,r11,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r8 - add r11,r11,r12 @ h+=K256[i] - eor r2,r2,r10 @ Ch(e,f,g) - eor r0,r4,r4,ror#11 - add r11,r11,r2 @ h+=Ch(e,f,g) -#if 8==31 - and r12,r12,#0xff - cmp r12,#0xf2 @ done? -#endif -#if 8<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r12,r4,r5 @ a^b, b^c in next round -#else - ldr r2,[sp,#10*4] @ from future BODY_16_xx - eor r12,r4,r5 @ a^b, b^c in next round - ldr r1,[sp,#7*4] @ from future BODY_16_xx -#endif - eor r0,r0,r4,ror#20 @ Sigma0(a) - and r3,r3,r12 @ (b^c)&=(a^b) - add r7,r7,r11 @ d+=h - eor r3,r3,r5 @ Maj(a,b,c) - add r11,r11,r0,ror#2 @ h+=Sigma0(a) - @ add r11,r11,r3 @ h+=Maj(a,b,c) -#if __ARM_ARCH__>=7 - @ ldr r2,[r1],#4 @ 9 -# if 9==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r7,r7,ror#5 - add r11,r11,r3 @ h+=Maj(a,b,c) from the past - eor r0,r0,r7,ror#19 @ Sigma1(e) -# ifndef __ARMEB__ - rev r2,r2 -# endif -#else - @ ldrb r2,[r1,#3] @ 9 - add r11,r11,r3 @ h+=Maj(a,b,c) from the past - ldrb r3,[r1,#2] - ldrb r0,[r1,#1] - orr r2,r2,r3,lsl#8 - ldrb r3,[r1],#4 - orr r2,r2,r0,lsl#16 -# if 9==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r7,r7,ror#5 - orr r2,r2,r3,lsl#24 - eor r0,r0,r7,ror#19 @ Sigma1(e) -#endif - ldr r3,[r14],#4 @ *K256++ - add r10,r10,r2 @ h+=X[i] - str r2,[sp,#9*4] - eor r2,r8,r9 - add r10,r10,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r7 - add r10,r10,r3 @ h+=K256[i] - eor r2,r2,r9 @ Ch(e,f,g) - eor r0,r11,r11,ror#11 - add r10,r10,r2 @ h+=Ch(e,f,g) -#if 9==31 - and r3,r3,#0xff - cmp r3,#0xf2 @ done? -#endif -#if 9<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r3,r11,r4 @ a^b, b^c in next round -#else - ldr r2,[sp,#11*4] @ from future BODY_16_xx - eor r3,r11,r4 @ a^b, b^c in next round - ldr r1,[sp,#8*4] @ from future BODY_16_xx -#endif - eor r0,r0,r11,ror#20 @ Sigma0(a) - and r12,r12,r3 @ (b^c)&=(a^b) - add r6,r6,r10 @ d+=h - eor r12,r12,r4 @ Maj(a,b,c) - add r10,r10,r0,ror#2 @ h+=Sigma0(a) - @ add r10,r10,r12 @ h+=Maj(a,b,c) -#if __ARM_ARCH__>=7 - @ ldr r2,[r1],#4 @ 10 -# if 10==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r6,r6,ror#5 - add r10,r10,r12 @ h+=Maj(a,b,c) from the past - eor r0,r0,r6,ror#19 @ Sigma1(e) -# ifndef __ARMEB__ - rev r2,r2 -# endif -#else - @ ldrb r2,[r1,#3] @ 10 - add r10,r10,r12 @ h+=Maj(a,b,c) from the past - ldrb r12,[r1,#2] - ldrb r0,[r1,#1] - orr r2,r2,r12,lsl#8 - ldrb r12,[r1],#4 - orr r2,r2,r0,lsl#16 -# if 10==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r6,r6,ror#5 - orr r2,r2,r12,lsl#24 - eor r0,r0,r6,ror#19 @ Sigma1(e) -#endif - ldr r12,[r14],#4 @ *K256++ - add r9,r9,r2 @ h+=X[i] - str r2,[sp,#10*4] - eor r2,r7,r8 - add r9,r9,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r6 - add r9,r9,r12 @ h+=K256[i] - eor r2,r2,r8 @ Ch(e,f,g) - eor r0,r10,r10,ror#11 - add r9,r9,r2 @ h+=Ch(e,f,g) -#if 10==31 - and r12,r12,#0xff - cmp r12,#0xf2 @ done? -#endif -#if 10<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r12,r10,r11 @ a^b, b^c in next round -#else - ldr r2,[sp,#12*4] @ from future BODY_16_xx - eor r12,r10,r11 @ a^b, b^c in next round - ldr r1,[sp,#9*4] @ from future BODY_16_xx -#endif - eor r0,r0,r10,ror#20 @ Sigma0(a) - and r3,r3,r12 @ (b^c)&=(a^b) - add r5,r5,r9 @ d+=h - eor r3,r3,r11 @ Maj(a,b,c) - add r9,r9,r0,ror#2 @ h+=Sigma0(a) - @ add r9,r9,r3 @ h+=Maj(a,b,c) -#if __ARM_ARCH__>=7 - @ ldr r2,[r1],#4 @ 11 -# if 11==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r5,r5,ror#5 - add r9,r9,r3 @ h+=Maj(a,b,c) from the past - eor r0,r0,r5,ror#19 @ Sigma1(e) -# ifndef __ARMEB__ - rev r2,r2 -# endif -#else - @ ldrb r2,[r1,#3] @ 11 - add r9,r9,r3 @ h+=Maj(a,b,c) from the past - ldrb r3,[r1,#2] - ldrb r0,[r1,#1] - orr r2,r2,r3,lsl#8 - ldrb r3,[r1],#4 - orr r2,r2,r0,lsl#16 -# if 11==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r5,r5,ror#5 - orr r2,r2,r3,lsl#24 - eor r0,r0,r5,ror#19 @ Sigma1(e) -#endif - ldr r3,[r14],#4 @ *K256++ - add r8,r8,r2 @ h+=X[i] - str r2,[sp,#11*4] - eor r2,r6,r7 - add r8,r8,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r5 - add r8,r8,r3 @ h+=K256[i] - eor r2,r2,r7 @ Ch(e,f,g) - eor r0,r9,r9,ror#11 - add r8,r8,r2 @ h+=Ch(e,f,g) -#if 11==31 - and r3,r3,#0xff - cmp r3,#0xf2 @ done? -#endif -#if 11<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r3,r9,r10 @ a^b, b^c in next round -#else - ldr r2,[sp,#13*4] @ from future BODY_16_xx - eor r3,r9,r10 @ a^b, b^c in next round - ldr r1,[sp,#10*4] @ from future BODY_16_xx -#endif - eor r0,r0,r9,ror#20 @ Sigma0(a) - and r12,r12,r3 @ (b^c)&=(a^b) - add r4,r4,r8 @ d+=h - eor r12,r12,r10 @ Maj(a,b,c) - add r8,r8,r0,ror#2 @ h+=Sigma0(a) - @ add r8,r8,r12 @ h+=Maj(a,b,c) -#if __ARM_ARCH__>=7 - @ ldr r2,[r1],#4 @ 12 -# if 12==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r4,r4,ror#5 - add r8,r8,r12 @ h+=Maj(a,b,c) from the past - eor r0,r0,r4,ror#19 @ Sigma1(e) -# ifndef __ARMEB__ - rev r2,r2 -# endif -#else - @ ldrb r2,[r1,#3] @ 12 - add r8,r8,r12 @ h+=Maj(a,b,c) from the past - ldrb r12,[r1,#2] - ldrb r0,[r1,#1] - orr r2,r2,r12,lsl#8 - ldrb r12,[r1],#4 - orr r2,r2,r0,lsl#16 -# if 12==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r4,r4,ror#5 - orr r2,r2,r12,lsl#24 - eor r0,r0,r4,ror#19 @ Sigma1(e) -#endif - ldr r12,[r14],#4 @ *K256++ - add r7,r7,r2 @ h+=X[i] - str r2,[sp,#12*4] - eor r2,r5,r6 - add r7,r7,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r4 - add r7,r7,r12 @ h+=K256[i] - eor r2,r2,r6 @ Ch(e,f,g) - eor r0,r8,r8,ror#11 - add r7,r7,r2 @ h+=Ch(e,f,g) -#if 12==31 - and r12,r12,#0xff - cmp r12,#0xf2 @ done? -#endif -#if 12<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r12,r8,r9 @ a^b, b^c in next round -#else - ldr r2,[sp,#14*4] @ from future BODY_16_xx - eor r12,r8,r9 @ a^b, b^c in next round - ldr r1,[sp,#11*4] @ from future BODY_16_xx -#endif - eor r0,r0,r8,ror#20 @ Sigma0(a) - and r3,r3,r12 @ (b^c)&=(a^b) - add r11,r11,r7 @ d+=h - eor r3,r3,r9 @ Maj(a,b,c) - add r7,r7,r0,ror#2 @ h+=Sigma0(a) - @ add r7,r7,r3 @ h+=Maj(a,b,c) -#if __ARM_ARCH__>=7 - @ ldr r2,[r1],#4 @ 13 -# if 13==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r11,r11,ror#5 - add r7,r7,r3 @ h+=Maj(a,b,c) from the past - eor r0,r0,r11,ror#19 @ Sigma1(e) -# ifndef __ARMEB__ - rev r2,r2 -# endif -#else - @ ldrb r2,[r1,#3] @ 13 - add r7,r7,r3 @ h+=Maj(a,b,c) from the past - ldrb r3,[r1,#2] - ldrb r0,[r1,#1] - orr r2,r2,r3,lsl#8 - ldrb r3,[r1],#4 - orr r2,r2,r0,lsl#16 -# if 13==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r11,r11,ror#5 - orr r2,r2,r3,lsl#24 - eor r0,r0,r11,ror#19 @ Sigma1(e) -#endif - ldr r3,[r14],#4 @ *K256++ - add r6,r6,r2 @ h+=X[i] - str r2,[sp,#13*4] - eor r2,r4,r5 - add r6,r6,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r11 - add r6,r6,r3 @ h+=K256[i] - eor r2,r2,r5 @ Ch(e,f,g) - eor r0,r7,r7,ror#11 - add r6,r6,r2 @ h+=Ch(e,f,g) -#if 13==31 - and r3,r3,#0xff - cmp r3,#0xf2 @ done? -#endif -#if 13<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r3,r7,r8 @ a^b, b^c in next round -#else - ldr r2,[sp,#15*4] @ from future BODY_16_xx - eor r3,r7,r8 @ a^b, b^c in next round - ldr r1,[sp,#12*4] @ from future BODY_16_xx -#endif - eor r0,r0,r7,ror#20 @ Sigma0(a) - and r12,r12,r3 @ (b^c)&=(a^b) - add r10,r10,r6 @ d+=h - eor r12,r12,r8 @ Maj(a,b,c) - add r6,r6,r0,ror#2 @ h+=Sigma0(a) - @ add r6,r6,r12 @ h+=Maj(a,b,c) -#if __ARM_ARCH__>=7 - @ ldr r2,[r1],#4 @ 14 -# if 14==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r10,r10,ror#5 - add r6,r6,r12 @ h+=Maj(a,b,c) from the past - eor r0,r0,r10,ror#19 @ Sigma1(e) -# ifndef __ARMEB__ - rev r2,r2 -# endif -#else - @ ldrb r2,[r1,#3] @ 14 - add r6,r6,r12 @ h+=Maj(a,b,c) from the past - ldrb r12,[r1,#2] - ldrb r0,[r1,#1] - orr r2,r2,r12,lsl#8 - ldrb r12,[r1],#4 - orr r2,r2,r0,lsl#16 -# if 14==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r10,r10,ror#5 - orr r2,r2,r12,lsl#24 - eor r0,r0,r10,ror#19 @ Sigma1(e) -#endif - ldr r12,[r14],#4 @ *K256++ - add r5,r5,r2 @ h+=X[i] - str r2,[sp,#14*4] - eor r2,r11,r4 - add r5,r5,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r10 - add r5,r5,r12 @ h+=K256[i] - eor r2,r2,r4 @ Ch(e,f,g) - eor r0,r6,r6,ror#11 - add r5,r5,r2 @ h+=Ch(e,f,g) -#if 14==31 - and r12,r12,#0xff - cmp r12,#0xf2 @ done? -#endif -#if 14<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r12,r6,r7 @ a^b, b^c in next round -#else - ldr r2,[sp,#0*4] @ from future BODY_16_xx - eor r12,r6,r7 @ a^b, b^c in next round - ldr r1,[sp,#13*4] @ from future BODY_16_xx -#endif - eor r0,r0,r6,ror#20 @ Sigma0(a) - and r3,r3,r12 @ (b^c)&=(a^b) - add r9,r9,r5 @ d+=h - eor r3,r3,r7 @ Maj(a,b,c) - add r5,r5,r0,ror#2 @ h+=Sigma0(a) - @ add r5,r5,r3 @ h+=Maj(a,b,c) -#if __ARM_ARCH__>=7 - @ ldr r2,[r1],#4 @ 15 -# if 15==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r9,r9,ror#5 - add r5,r5,r3 @ h+=Maj(a,b,c) from the past - eor r0,r0,r9,ror#19 @ Sigma1(e) -# ifndef __ARMEB__ - rev r2,r2 -# endif -#else - @ ldrb r2,[r1,#3] @ 15 - add r5,r5,r3 @ h+=Maj(a,b,c) from the past - ldrb r3,[r1,#2] - ldrb r0,[r1,#1] - orr r2,r2,r3,lsl#8 - ldrb r3,[r1],#4 - orr r2,r2,r0,lsl#16 -# if 15==15 - str r1,[sp,#17*4] @ make room for r1 -# endif - eor r0,r9,r9,ror#5 - orr r2,r2,r3,lsl#24 - eor r0,r0,r9,ror#19 @ Sigma1(e) -#endif - ldr r3,[r14],#4 @ *K256++ - add r4,r4,r2 @ h+=X[i] - str r2,[sp,#15*4] - eor r2,r10,r11 - add r4,r4,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r9 - add r4,r4,r3 @ h+=K256[i] - eor r2,r2,r11 @ Ch(e,f,g) - eor r0,r5,r5,ror#11 - add r4,r4,r2 @ h+=Ch(e,f,g) -#if 15==31 - and r3,r3,#0xff - cmp r3,#0xf2 @ done? -#endif -#if 15<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r3,r5,r6 @ a^b, b^c in next round -#else - ldr r2,[sp,#1*4] @ from future BODY_16_xx - eor r3,r5,r6 @ a^b, b^c in next round - ldr r1,[sp,#14*4] @ from future BODY_16_xx -#endif - eor r0,r0,r5,ror#20 @ Sigma0(a) - and r12,r12,r3 @ (b^c)&=(a^b) - add r8,r8,r4 @ d+=h - eor r12,r12,r6 @ Maj(a,b,c) - add r4,r4,r0,ror#2 @ h+=Sigma0(a) - @ add r4,r4,r12 @ h+=Maj(a,b,c) -Lrounds_16_xx: - @ ldr r2,[sp,#1*4] @ 16 - @ ldr r1,[sp,#14*4] - mov r0,r2,ror#7 - add r4,r4,r12 @ h+=Maj(a,b,c) from the past - mov r12,r1,ror#17 - eor r0,r0,r2,ror#18 - eor r12,r12,r1,ror#19 - eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) - ldr r2,[sp,#0*4] - eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) - ldr r1,[sp,#9*4] - - add r12,r12,r0 - eor r0,r8,r8,ror#5 @ from BODY_00_15 - add r2,r2,r12 - eor r0,r0,r8,ror#19 @ Sigma1(e) - add r2,r2,r1 @ X[i] - ldr r12,[r14],#4 @ *K256++ - add r11,r11,r2 @ h+=X[i] - str r2,[sp,#0*4] - eor r2,r9,r10 - add r11,r11,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r8 - add r11,r11,r12 @ h+=K256[i] - eor r2,r2,r10 @ Ch(e,f,g) - eor r0,r4,r4,ror#11 - add r11,r11,r2 @ h+=Ch(e,f,g) -#if 16==31 - and r12,r12,#0xff - cmp r12,#0xf2 @ done? -#endif -#if 16<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r12,r4,r5 @ a^b, b^c in next round -#else - ldr r2,[sp,#2*4] @ from future BODY_16_xx - eor r12,r4,r5 @ a^b, b^c in next round - ldr r1,[sp,#15*4] @ from future BODY_16_xx -#endif - eor r0,r0,r4,ror#20 @ Sigma0(a) - and r3,r3,r12 @ (b^c)&=(a^b) - add r7,r7,r11 @ d+=h - eor r3,r3,r5 @ Maj(a,b,c) - add r11,r11,r0,ror#2 @ h+=Sigma0(a) - @ add r11,r11,r3 @ h+=Maj(a,b,c) - @ ldr r2,[sp,#2*4] @ 17 - @ ldr r1,[sp,#15*4] - mov r0,r2,ror#7 - add r11,r11,r3 @ h+=Maj(a,b,c) from the past - mov r3,r1,ror#17 - eor r0,r0,r2,ror#18 - eor r3,r3,r1,ror#19 - eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) - ldr r2,[sp,#1*4] - eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) - ldr r1,[sp,#10*4] - - add r3,r3,r0 - eor r0,r7,r7,ror#5 @ from BODY_00_15 - add r2,r2,r3 - eor r0,r0,r7,ror#19 @ Sigma1(e) - add r2,r2,r1 @ X[i] - ldr r3,[r14],#4 @ *K256++ - add r10,r10,r2 @ h+=X[i] - str r2,[sp,#1*4] - eor r2,r8,r9 - add r10,r10,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r7 - add r10,r10,r3 @ h+=K256[i] - eor r2,r2,r9 @ Ch(e,f,g) - eor r0,r11,r11,ror#11 - add r10,r10,r2 @ h+=Ch(e,f,g) -#if 17==31 - and r3,r3,#0xff - cmp r3,#0xf2 @ done? -#endif -#if 17<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r3,r11,r4 @ a^b, b^c in next round -#else - ldr r2,[sp,#3*4] @ from future BODY_16_xx - eor r3,r11,r4 @ a^b, b^c in next round - ldr r1,[sp,#0*4] @ from future BODY_16_xx -#endif - eor r0,r0,r11,ror#20 @ Sigma0(a) - and r12,r12,r3 @ (b^c)&=(a^b) - add r6,r6,r10 @ d+=h - eor r12,r12,r4 @ Maj(a,b,c) - add r10,r10,r0,ror#2 @ h+=Sigma0(a) - @ add r10,r10,r12 @ h+=Maj(a,b,c) - @ ldr r2,[sp,#3*4] @ 18 - @ ldr r1,[sp,#0*4] - mov r0,r2,ror#7 - add r10,r10,r12 @ h+=Maj(a,b,c) from the past - mov r12,r1,ror#17 - eor r0,r0,r2,ror#18 - eor r12,r12,r1,ror#19 - eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) - ldr r2,[sp,#2*4] - eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) - ldr r1,[sp,#11*4] - - add r12,r12,r0 - eor r0,r6,r6,ror#5 @ from BODY_00_15 - add r2,r2,r12 - eor r0,r0,r6,ror#19 @ Sigma1(e) - add r2,r2,r1 @ X[i] - ldr r12,[r14],#4 @ *K256++ - add r9,r9,r2 @ h+=X[i] - str r2,[sp,#2*4] - eor r2,r7,r8 - add r9,r9,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r6 - add r9,r9,r12 @ h+=K256[i] - eor r2,r2,r8 @ Ch(e,f,g) - eor r0,r10,r10,ror#11 - add r9,r9,r2 @ h+=Ch(e,f,g) -#if 18==31 - and r12,r12,#0xff - cmp r12,#0xf2 @ done? -#endif -#if 18<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r12,r10,r11 @ a^b, b^c in next round -#else - ldr r2,[sp,#4*4] @ from future BODY_16_xx - eor r12,r10,r11 @ a^b, b^c in next round - ldr r1,[sp,#1*4] @ from future BODY_16_xx -#endif - eor r0,r0,r10,ror#20 @ Sigma0(a) - and r3,r3,r12 @ (b^c)&=(a^b) - add r5,r5,r9 @ d+=h - eor r3,r3,r11 @ Maj(a,b,c) - add r9,r9,r0,ror#2 @ h+=Sigma0(a) - @ add r9,r9,r3 @ h+=Maj(a,b,c) - @ ldr r2,[sp,#4*4] @ 19 - @ ldr r1,[sp,#1*4] - mov r0,r2,ror#7 - add r9,r9,r3 @ h+=Maj(a,b,c) from the past - mov r3,r1,ror#17 - eor r0,r0,r2,ror#18 - eor r3,r3,r1,ror#19 - eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) - ldr r2,[sp,#3*4] - eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) - ldr r1,[sp,#12*4] - - add r3,r3,r0 - eor r0,r5,r5,ror#5 @ from BODY_00_15 - add r2,r2,r3 - eor r0,r0,r5,ror#19 @ Sigma1(e) - add r2,r2,r1 @ X[i] - ldr r3,[r14],#4 @ *K256++ - add r8,r8,r2 @ h+=X[i] - str r2,[sp,#3*4] - eor r2,r6,r7 - add r8,r8,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r5 - add r8,r8,r3 @ h+=K256[i] - eor r2,r2,r7 @ Ch(e,f,g) - eor r0,r9,r9,ror#11 - add r8,r8,r2 @ h+=Ch(e,f,g) -#if 19==31 - and r3,r3,#0xff - cmp r3,#0xf2 @ done? -#endif -#if 19<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r3,r9,r10 @ a^b, b^c in next round -#else - ldr r2,[sp,#5*4] @ from future BODY_16_xx - eor r3,r9,r10 @ a^b, b^c in next round - ldr r1,[sp,#2*4] @ from future BODY_16_xx -#endif - eor r0,r0,r9,ror#20 @ Sigma0(a) - and r12,r12,r3 @ (b^c)&=(a^b) - add r4,r4,r8 @ d+=h - eor r12,r12,r10 @ Maj(a,b,c) - add r8,r8,r0,ror#2 @ h+=Sigma0(a) - @ add r8,r8,r12 @ h+=Maj(a,b,c) - @ ldr r2,[sp,#5*4] @ 20 - @ ldr r1,[sp,#2*4] - mov r0,r2,ror#7 - add r8,r8,r12 @ h+=Maj(a,b,c) from the past - mov r12,r1,ror#17 - eor r0,r0,r2,ror#18 - eor r12,r12,r1,ror#19 - eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) - ldr r2,[sp,#4*4] - eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) - ldr r1,[sp,#13*4] - - add r12,r12,r0 - eor r0,r4,r4,ror#5 @ from BODY_00_15 - add r2,r2,r12 - eor r0,r0,r4,ror#19 @ Sigma1(e) - add r2,r2,r1 @ X[i] - ldr r12,[r14],#4 @ *K256++ - add r7,r7,r2 @ h+=X[i] - str r2,[sp,#4*4] - eor r2,r5,r6 - add r7,r7,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r4 - add r7,r7,r12 @ h+=K256[i] - eor r2,r2,r6 @ Ch(e,f,g) - eor r0,r8,r8,ror#11 - add r7,r7,r2 @ h+=Ch(e,f,g) -#if 20==31 - and r12,r12,#0xff - cmp r12,#0xf2 @ done? -#endif -#if 20<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r12,r8,r9 @ a^b, b^c in next round -#else - ldr r2,[sp,#6*4] @ from future BODY_16_xx - eor r12,r8,r9 @ a^b, b^c in next round - ldr r1,[sp,#3*4] @ from future BODY_16_xx -#endif - eor r0,r0,r8,ror#20 @ Sigma0(a) - and r3,r3,r12 @ (b^c)&=(a^b) - add r11,r11,r7 @ d+=h - eor r3,r3,r9 @ Maj(a,b,c) - add r7,r7,r0,ror#2 @ h+=Sigma0(a) - @ add r7,r7,r3 @ h+=Maj(a,b,c) - @ ldr r2,[sp,#6*4] @ 21 - @ ldr r1,[sp,#3*4] - mov r0,r2,ror#7 - add r7,r7,r3 @ h+=Maj(a,b,c) from the past - mov r3,r1,ror#17 - eor r0,r0,r2,ror#18 - eor r3,r3,r1,ror#19 - eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) - ldr r2,[sp,#5*4] - eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) - ldr r1,[sp,#14*4] - - add r3,r3,r0 - eor r0,r11,r11,ror#5 @ from BODY_00_15 - add r2,r2,r3 - eor r0,r0,r11,ror#19 @ Sigma1(e) - add r2,r2,r1 @ X[i] - ldr r3,[r14],#4 @ *K256++ - add r6,r6,r2 @ h+=X[i] - str r2,[sp,#5*4] - eor r2,r4,r5 - add r6,r6,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r11 - add r6,r6,r3 @ h+=K256[i] - eor r2,r2,r5 @ Ch(e,f,g) - eor r0,r7,r7,ror#11 - add r6,r6,r2 @ h+=Ch(e,f,g) -#if 21==31 - and r3,r3,#0xff - cmp r3,#0xf2 @ done? -#endif -#if 21<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r3,r7,r8 @ a^b, b^c in next round -#else - ldr r2,[sp,#7*4] @ from future BODY_16_xx - eor r3,r7,r8 @ a^b, b^c in next round - ldr r1,[sp,#4*4] @ from future BODY_16_xx -#endif - eor r0,r0,r7,ror#20 @ Sigma0(a) - and r12,r12,r3 @ (b^c)&=(a^b) - add r10,r10,r6 @ d+=h - eor r12,r12,r8 @ Maj(a,b,c) - add r6,r6,r0,ror#2 @ h+=Sigma0(a) - @ add r6,r6,r12 @ h+=Maj(a,b,c) - @ ldr r2,[sp,#7*4] @ 22 - @ ldr r1,[sp,#4*4] - mov r0,r2,ror#7 - add r6,r6,r12 @ h+=Maj(a,b,c) from the past - mov r12,r1,ror#17 - eor r0,r0,r2,ror#18 - eor r12,r12,r1,ror#19 - eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) - ldr r2,[sp,#6*4] - eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) - ldr r1,[sp,#15*4] - - add r12,r12,r0 - eor r0,r10,r10,ror#5 @ from BODY_00_15 - add r2,r2,r12 - eor r0,r0,r10,ror#19 @ Sigma1(e) - add r2,r2,r1 @ X[i] - ldr r12,[r14],#4 @ *K256++ - add r5,r5,r2 @ h+=X[i] - str r2,[sp,#6*4] - eor r2,r11,r4 - add r5,r5,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r10 - add r5,r5,r12 @ h+=K256[i] - eor r2,r2,r4 @ Ch(e,f,g) - eor r0,r6,r6,ror#11 - add r5,r5,r2 @ h+=Ch(e,f,g) -#if 22==31 - and r12,r12,#0xff - cmp r12,#0xf2 @ done? -#endif -#if 22<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r12,r6,r7 @ a^b, b^c in next round -#else - ldr r2,[sp,#8*4] @ from future BODY_16_xx - eor r12,r6,r7 @ a^b, b^c in next round - ldr r1,[sp,#5*4] @ from future BODY_16_xx -#endif - eor r0,r0,r6,ror#20 @ Sigma0(a) - and r3,r3,r12 @ (b^c)&=(a^b) - add r9,r9,r5 @ d+=h - eor r3,r3,r7 @ Maj(a,b,c) - add r5,r5,r0,ror#2 @ h+=Sigma0(a) - @ add r5,r5,r3 @ h+=Maj(a,b,c) - @ ldr r2,[sp,#8*4] @ 23 - @ ldr r1,[sp,#5*4] - mov r0,r2,ror#7 - add r5,r5,r3 @ h+=Maj(a,b,c) from the past - mov r3,r1,ror#17 - eor r0,r0,r2,ror#18 - eor r3,r3,r1,ror#19 - eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) - ldr r2,[sp,#7*4] - eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) - ldr r1,[sp,#0*4] - - add r3,r3,r0 - eor r0,r9,r9,ror#5 @ from BODY_00_15 - add r2,r2,r3 - eor r0,r0,r9,ror#19 @ Sigma1(e) - add r2,r2,r1 @ X[i] - ldr r3,[r14],#4 @ *K256++ - add r4,r4,r2 @ h+=X[i] - str r2,[sp,#7*4] - eor r2,r10,r11 - add r4,r4,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r9 - add r4,r4,r3 @ h+=K256[i] - eor r2,r2,r11 @ Ch(e,f,g) - eor r0,r5,r5,ror#11 - add r4,r4,r2 @ h+=Ch(e,f,g) -#if 23==31 - and r3,r3,#0xff - cmp r3,#0xf2 @ done? -#endif -#if 23<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r3,r5,r6 @ a^b, b^c in next round -#else - ldr r2,[sp,#9*4] @ from future BODY_16_xx - eor r3,r5,r6 @ a^b, b^c in next round - ldr r1,[sp,#6*4] @ from future BODY_16_xx -#endif - eor r0,r0,r5,ror#20 @ Sigma0(a) - and r12,r12,r3 @ (b^c)&=(a^b) - add r8,r8,r4 @ d+=h - eor r12,r12,r6 @ Maj(a,b,c) - add r4,r4,r0,ror#2 @ h+=Sigma0(a) - @ add r4,r4,r12 @ h+=Maj(a,b,c) - @ ldr r2,[sp,#9*4] @ 24 - @ ldr r1,[sp,#6*4] - mov r0,r2,ror#7 - add r4,r4,r12 @ h+=Maj(a,b,c) from the past - mov r12,r1,ror#17 - eor r0,r0,r2,ror#18 - eor r12,r12,r1,ror#19 - eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) - ldr r2,[sp,#8*4] - eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) - ldr r1,[sp,#1*4] - - add r12,r12,r0 - eor r0,r8,r8,ror#5 @ from BODY_00_15 - add r2,r2,r12 - eor r0,r0,r8,ror#19 @ Sigma1(e) - add r2,r2,r1 @ X[i] - ldr r12,[r14],#4 @ *K256++ - add r11,r11,r2 @ h+=X[i] - str r2,[sp,#8*4] - eor r2,r9,r10 - add r11,r11,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r8 - add r11,r11,r12 @ h+=K256[i] - eor r2,r2,r10 @ Ch(e,f,g) - eor r0,r4,r4,ror#11 - add r11,r11,r2 @ h+=Ch(e,f,g) -#if 24==31 - and r12,r12,#0xff - cmp r12,#0xf2 @ done? -#endif -#if 24<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r12,r4,r5 @ a^b, b^c in next round -#else - ldr r2,[sp,#10*4] @ from future BODY_16_xx - eor r12,r4,r5 @ a^b, b^c in next round - ldr r1,[sp,#7*4] @ from future BODY_16_xx -#endif - eor r0,r0,r4,ror#20 @ Sigma0(a) - and r3,r3,r12 @ (b^c)&=(a^b) - add r7,r7,r11 @ d+=h - eor r3,r3,r5 @ Maj(a,b,c) - add r11,r11,r0,ror#2 @ h+=Sigma0(a) - @ add r11,r11,r3 @ h+=Maj(a,b,c) - @ ldr r2,[sp,#10*4] @ 25 - @ ldr r1,[sp,#7*4] - mov r0,r2,ror#7 - add r11,r11,r3 @ h+=Maj(a,b,c) from the past - mov r3,r1,ror#17 - eor r0,r0,r2,ror#18 - eor r3,r3,r1,ror#19 - eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) - ldr r2,[sp,#9*4] - eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) - ldr r1,[sp,#2*4] - - add r3,r3,r0 - eor r0,r7,r7,ror#5 @ from BODY_00_15 - add r2,r2,r3 - eor r0,r0,r7,ror#19 @ Sigma1(e) - add r2,r2,r1 @ X[i] - ldr r3,[r14],#4 @ *K256++ - add r10,r10,r2 @ h+=X[i] - str r2,[sp,#9*4] - eor r2,r8,r9 - add r10,r10,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r7 - add r10,r10,r3 @ h+=K256[i] - eor r2,r2,r9 @ Ch(e,f,g) - eor r0,r11,r11,ror#11 - add r10,r10,r2 @ h+=Ch(e,f,g) -#if 25==31 - and r3,r3,#0xff - cmp r3,#0xf2 @ done? -#endif -#if 25<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r3,r11,r4 @ a^b, b^c in next round -#else - ldr r2,[sp,#11*4] @ from future BODY_16_xx - eor r3,r11,r4 @ a^b, b^c in next round - ldr r1,[sp,#8*4] @ from future BODY_16_xx -#endif - eor r0,r0,r11,ror#20 @ Sigma0(a) - and r12,r12,r3 @ (b^c)&=(a^b) - add r6,r6,r10 @ d+=h - eor r12,r12,r4 @ Maj(a,b,c) - add r10,r10,r0,ror#2 @ h+=Sigma0(a) - @ add r10,r10,r12 @ h+=Maj(a,b,c) - @ ldr r2,[sp,#11*4] @ 26 - @ ldr r1,[sp,#8*4] - mov r0,r2,ror#7 - add r10,r10,r12 @ h+=Maj(a,b,c) from the past - mov r12,r1,ror#17 - eor r0,r0,r2,ror#18 - eor r12,r12,r1,ror#19 - eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) - ldr r2,[sp,#10*4] - eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) - ldr r1,[sp,#3*4] - - add r12,r12,r0 - eor r0,r6,r6,ror#5 @ from BODY_00_15 - add r2,r2,r12 - eor r0,r0,r6,ror#19 @ Sigma1(e) - add r2,r2,r1 @ X[i] - ldr r12,[r14],#4 @ *K256++ - add r9,r9,r2 @ h+=X[i] - str r2,[sp,#10*4] - eor r2,r7,r8 - add r9,r9,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r6 - add r9,r9,r12 @ h+=K256[i] - eor r2,r2,r8 @ Ch(e,f,g) - eor r0,r10,r10,ror#11 - add r9,r9,r2 @ h+=Ch(e,f,g) -#if 26==31 - and r12,r12,#0xff - cmp r12,#0xf2 @ done? -#endif -#if 26<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r12,r10,r11 @ a^b, b^c in next round -#else - ldr r2,[sp,#12*4] @ from future BODY_16_xx - eor r12,r10,r11 @ a^b, b^c in next round - ldr r1,[sp,#9*4] @ from future BODY_16_xx -#endif - eor r0,r0,r10,ror#20 @ Sigma0(a) - and r3,r3,r12 @ (b^c)&=(a^b) - add r5,r5,r9 @ d+=h - eor r3,r3,r11 @ Maj(a,b,c) - add r9,r9,r0,ror#2 @ h+=Sigma0(a) - @ add r9,r9,r3 @ h+=Maj(a,b,c) - @ ldr r2,[sp,#12*4] @ 27 - @ ldr r1,[sp,#9*4] - mov r0,r2,ror#7 - add r9,r9,r3 @ h+=Maj(a,b,c) from the past - mov r3,r1,ror#17 - eor r0,r0,r2,ror#18 - eor r3,r3,r1,ror#19 - eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) - ldr r2,[sp,#11*4] - eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) - ldr r1,[sp,#4*4] - - add r3,r3,r0 - eor r0,r5,r5,ror#5 @ from BODY_00_15 - add r2,r2,r3 - eor r0,r0,r5,ror#19 @ Sigma1(e) - add r2,r2,r1 @ X[i] - ldr r3,[r14],#4 @ *K256++ - add r8,r8,r2 @ h+=X[i] - str r2,[sp,#11*4] - eor r2,r6,r7 - add r8,r8,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r5 - add r8,r8,r3 @ h+=K256[i] - eor r2,r2,r7 @ Ch(e,f,g) - eor r0,r9,r9,ror#11 - add r8,r8,r2 @ h+=Ch(e,f,g) -#if 27==31 - and r3,r3,#0xff - cmp r3,#0xf2 @ done? -#endif -#if 27<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r3,r9,r10 @ a^b, b^c in next round -#else - ldr r2,[sp,#13*4] @ from future BODY_16_xx - eor r3,r9,r10 @ a^b, b^c in next round - ldr r1,[sp,#10*4] @ from future BODY_16_xx -#endif - eor r0,r0,r9,ror#20 @ Sigma0(a) - and r12,r12,r3 @ (b^c)&=(a^b) - add r4,r4,r8 @ d+=h - eor r12,r12,r10 @ Maj(a,b,c) - add r8,r8,r0,ror#2 @ h+=Sigma0(a) - @ add r8,r8,r12 @ h+=Maj(a,b,c) - @ ldr r2,[sp,#13*4] @ 28 - @ ldr r1,[sp,#10*4] - mov r0,r2,ror#7 - add r8,r8,r12 @ h+=Maj(a,b,c) from the past - mov r12,r1,ror#17 - eor r0,r0,r2,ror#18 - eor r12,r12,r1,ror#19 - eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) - ldr r2,[sp,#12*4] - eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) - ldr r1,[sp,#5*4] - - add r12,r12,r0 - eor r0,r4,r4,ror#5 @ from BODY_00_15 - add r2,r2,r12 - eor r0,r0,r4,ror#19 @ Sigma1(e) - add r2,r2,r1 @ X[i] - ldr r12,[r14],#4 @ *K256++ - add r7,r7,r2 @ h+=X[i] - str r2,[sp,#12*4] - eor r2,r5,r6 - add r7,r7,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r4 - add r7,r7,r12 @ h+=K256[i] - eor r2,r2,r6 @ Ch(e,f,g) - eor r0,r8,r8,ror#11 - add r7,r7,r2 @ h+=Ch(e,f,g) -#if 28==31 - and r12,r12,#0xff - cmp r12,#0xf2 @ done? -#endif -#if 28<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r12,r8,r9 @ a^b, b^c in next round -#else - ldr r2,[sp,#14*4] @ from future BODY_16_xx - eor r12,r8,r9 @ a^b, b^c in next round - ldr r1,[sp,#11*4] @ from future BODY_16_xx -#endif - eor r0,r0,r8,ror#20 @ Sigma0(a) - and r3,r3,r12 @ (b^c)&=(a^b) - add r11,r11,r7 @ d+=h - eor r3,r3,r9 @ Maj(a,b,c) - add r7,r7,r0,ror#2 @ h+=Sigma0(a) - @ add r7,r7,r3 @ h+=Maj(a,b,c) - @ ldr r2,[sp,#14*4] @ 29 - @ ldr r1,[sp,#11*4] - mov r0,r2,ror#7 - add r7,r7,r3 @ h+=Maj(a,b,c) from the past - mov r3,r1,ror#17 - eor r0,r0,r2,ror#18 - eor r3,r3,r1,ror#19 - eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) - ldr r2,[sp,#13*4] - eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) - ldr r1,[sp,#6*4] - - add r3,r3,r0 - eor r0,r11,r11,ror#5 @ from BODY_00_15 - add r2,r2,r3 - eor r0,r0,r11,ror#19 @ Sigma1(e) - add r2,r2,r1 @ X[i] - ldr r3,[r14],#4 @ *K256++ - add r6,r6,r2 @ h+=X[i] - str r2,[sp,#13*4] - eor r2,r4,r5 - add r6,r6,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r11 - add r6,r6,r3 @ h+=K256[i] - eor r2,r2,r5 @ Ch(e,f,g) - eor r0,r7,r7,ror#11 - add r6,r6,r2 @ h+=Ch(e,f,g) -#if 29==31 - and r3,r3,#0xff - cmp r3,#0xf2 @ done? -#endif -#if 29<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r3,r7,r8 @ a^b, b^c in next round -#else - ldr r2,[sp,#15*4] @ from future BODY_16_xx - eor r3,r7,r8 @ a^b, b^c in next round - ldr r1,[sp,#12*4] @ from future BODY_16_xx -#endif - eor r0,r0,r7,ror#20 @ Sigma0(a) - and r12,r12,r3 @ (b^c)&=(a^b) - add r10,r10,r6 @ d+=h - eor r12,r12,r8 @ Maj(a,b,c) - add r6,r6,r0,ror#2 @ h+=Sigma0(a) - @ add r6,r6,r12 @ h+=Maj(a,b,c) - @ ldr r2,[sp,#15*4] @ 30 - @ ldr r1,[sp,#12*4] - mov r0,r2,ror#7 - add r6,r6,r12 @ h+=Maj(a,b,c) from the past - mov r12,r1,ror#17 - eor r0,r0,r2,ror#18 - eor r12,r12,r1,ror#19 - eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) - ldr r2,[sp,#14*4] - eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) - ldr r1,[sp,#7*4] - - add r12,r12,r0 - eor r0,r10,r10,ror#5 @ from BODY_00_15 - add r2,r2,r12 - eor r0,r0,r10,ror#19 @ Sigma1(e) - add r2,r2,r1 @ X[i] - ldr r12,[r14],#4 @ *K256++ - add r5,r5,r2 @ h+=X[i] - str r2,[sp,#14*4] - eor r2,r11,r4 - add r5,r5,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r10 - add r5,r5,r12 @ h+=K256[i] - eor r2,r2,r4 @ Ch(e,f,g) - eor r0,r6,r6,ror#11 - add r5,r5,r2 @ h+=Ch(e,f,g) -#if 30==31 - and r12,r12,#0xff - cmp r12,#0xf2 @ done? -#endif -#if 30<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r12,r6,r7 @ a^b, b^c in next round -#else - ldr r2,[sp,#0*4] @ from future BODY_16_xx - eor r12,r6,r7 @ a^b, b^c in next round - ldr r1,[sp,#13*4] @ from future BODY_16_xx -#endif - eor r0,r0,r6,ror#20 @ Sigma0(a) - and r3,r3,r12 @ (b^c)&=(a^b) - add r9,r9,r5 @ d+=h - eor r3,r3,r7 @ Maj(a,b,c) - add r5,r5,r0,ror#2 @ h+=Sigma0(a) - @ add r5,r5,r3 @ h+=Maj(a,b,c) - @ ldr r2,[sp,#0*4] @ 31 - @ ldr r1,[sp,#13*4] - mov r0,r2,ror#7 - add r5,r5,r3 @ h+=Maj(a,b,c) from the past - mov r3,r1,ror#17 - eor r0,r0,r2,ror#18 - eor r3,r3,r1,ror#19 - eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) - ldr r2,[sp,#15*4] - eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) - ldr r1,[sp,#8*4] - - add r3,r3,r0 - eor r0,r9,r9,ror#5 @ from BODY_00_15 - add r2,r2,r3 - eor r0,r0,r9,ror#19 @ Sigma1(e) - add r2,r2,r1 @ X[i] - ldr r3,[r14],#4 @ *K256++ - add r4,r4,r2 @ h+=X[i] - str r2,[sp,#15*4] - eor r2,r10,r11 - add r4,r4,r0,ror#6 @ h+=Sigma1(e) - and r2,r2,r9 - add r4,r4,r3 @ h+=K256[i] - eor r2,r2,r11 @ Ch(e,f,g) - eor r0,r5,r5,ror#11 - add r4,r4,r2 @ h+=Ch(e,f,g) -#if 31==31 - and r3,r3,#0xff - cmp r3,#0xf2 @ done? -#endif -#if 31<15 -# if __ARM_ARCH__>=7 - ldr r2,[r1],#4 @ prefetch -# else - ldrb r2,[r1,#3] -# endif - eor r3,r5,r6 @ a^b, b^c in next round -#else - ldr r2,[sp,#1*4] @ from future BODY_16_xx - eor r3,r5,r6 @ a^b, b^c in next round - ldr r1,[sp,#14*4] @ from future BODY_16_xx -#endif - eor r0,r0,r5,ror#20 @ Sigma0(a) - and r12,r12,r3 @ (b^c)&=(a^b) - add r8,r8,r4 @ d+=h - eor r12,r12,r6 @ Maj(a,b,c) - add r4,r4,r0,ror#2 @ h+=Sigma0(a) - @ add r4,r4,r12 @ h+=Maj(a,b,c) -#if __ARM_ARCH__>=7 - ite eq @ Thumb2 thing, sanity check in ARM -#endif - ldreq r3,[sp,#16*4] @ pull ctx - bne Lrounds_16_xx - - add r4,r4,r12 @ h+=Maj(a,b,c) from the past - ldr r0,[r3,#0] - ldr r2,[r3,#4] - ldr r12,[r3,#8] - add r4,r4,r0 - ldr r0,[r3,#12] - add r5,r5,r2 - ldr r2,[r3,#16] - add r6,r6,r12 - ldr r12,[r3,#20] - add r7,r7,r0 - ldr r0,[r3,#24] - add r8,r8,r2 - ldr r2,[r3,#28] - add r9,r9,r12 - ldr r1,[sp,#17*4] @ pull inp - ldr r12,[sp,#18*4] @ pull inp+len - add r10,r10,r0 - add r11,r11,r2 - stmia r3,{r4,r5,r6,r7,r8,r9,r10,r11} - cmp r1,r12 - sub r14,r14,#256 @ rewind Ktbl - bne Loop - - add sp,sp,#19*4 @ destroy frame -#if __ARM_ARCH__>=5 - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,pc} -#else - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,lr} - tst lr,#1 - moveq pc,lr @ be binary compatible with V4, yet -.word 0xe12fff1e @ interoperable with Thumb ISA:-) -#endif - -#if __ARM_MAX_ARCH__>=7 - - - -#ifdef __thumb2__ -.thumb_func sha256_block_data_order_neon -#endif -.align 5 -.skip 16 -sha256_block_data_order_neon: -LNEON: - stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - - sub r11,sp,#16*4+16 - adr r14,K256 - bic r11,r11,#15 @ align for 128-bit stores - mov r12,sp - mov sp,r11 @ alloca - add r2,r1,r2,lsl#6 @ len to point at the end of inp - - vld1.8 {q0},[r1]! - vld1.8 {q1},[r1]! - vld1.8 {q2},[r1]! - vld1.8 {q3},[r1]! - vld1.32 {q8},[r14,:128]! - vld1.32 {q9},[r14,:128]! - vld1.32 {q10},[r14,:128]! - vld1.32 {q11},[r14,:128]! - vrev32.8 q0,q0 @ yes, even on - str r0,[sp,#64] - vrev32.8 q1,q1 @ big-endian - str r1,[sp,#68] - mov r1,sp - vrev32.8 q2,q2 - str r2,[sp,#72] - vrev32.8 q3,q3 - str r12,[sp,#76] @ save original sp - vadd.i32 q8,q8,q0 - vadd.i32 q9,q9,q1 - vst1.32 {q8},[r1,:128]! - vadd.i32 q10,q10,q2 - vst1.32 {q9},[r1,:128]! - vadd.i32 q11,q11,q3 - vst1.32 {q10},[r1,:128]! - vst1.32 {q11},[r1,:128]! - - ldmia r0,{r4,r5,r6,r7,r8,r9,r10,r11} - sub r1,r1,#64 - ldr r2,[sp,#0] - eor r12,r12,r12 - eor r3,r5,r6 - b L_00_48 - -.align 4 -L_00_48: - vext.8 q8,q0,q1,#4 - add r11,r11,r2 - eor r2,r9,r10 - eor r0,r8,r8,ror#5 - vext.8 q9,q2,q3,#4 - add r4,r4,r12 - and r2,r2,r8 - eor r12,r0,r8,ror#19 - vshr.u32 q10,q8,#7 - eor r0,r4,r4,ror#11 - eor r2,r2,r10 - vadd.i32 q0,q0,q9 - add r11,r11,r12,ror#6 - eor r12,r4,r5 - vshr.u32 q9,q8,#3 - eor r0,r0,r4,ror#20 - add r11,r11,r2 - vsli.32 q10,q8,#25 - ldr r2,[sp,#4] - and r3,r3,r12 - vshr.u32 q11,q8,#18 - add r7,r7,r11 - add r11,r11,r0,ror#2 - eor r3,r3,r5 - veor q9,q9,q10 - add r10,r10,r2 - vsli.32 q11,q8,#14 - eor r2,r8,r9 - eor r0,r7,r7,ror#5 - vshr.u32 d24,d7,#17 - add r11,r11,r3 - and r2,r2,r7 - veor q9,q9,q11 - eor r3,r0,r7,ror#19 - eor r0,r11,r11,ror#11 - vsli.32 d24,d7,#15 - eor r2,r2,r9 - add r10,r10,r3,ror#6 - vshr.u32 d25,d7,#10 - eor r3,r11,r4 - eor r0,r0,r11,ror#20 - vadd.i32 q0,q0,q9 - add r10,r10,r2 - ldr r2,[sp,#8] - veor d25,d25,d24 - and r12,r12,r3 - add r6,r6,r10 - vshr.u32 d24,d7,#19 - add r10,r10,r0,ror#2 - eor r12,r12,r4 - vsli.32 d24,d7,#13 - add r9,r9,r2 - eor r2,r7,r8 - veor d25,d25,d24 - eor r0,r6,r6,ror#5 - add r10,r10,r12 - vadd.i32 d0,d0,d25 - and r2,r2,r6 - eor r12,r0,r6,ror#19 - vshr.u32 d24,d0,#17 - eor r0,r10,r10,ror#11 - eor r2,r2,r8 - vsli.32 d24,d0,#15 - add r9,r9,r12,ror#6 - eor r12,r10,r11 - vshr.u32 d25,d0,#10 - eor r0,r0,r10,ror#20 - add r9,r9,r2 - veor d25,d25,d24 - ldr r2,[sp,#12] - and r3,r3,r12 - vshr.u32 d24,d0,#19 - add r5,r5,r9 - add r9,r9,r0,ror#2 - eor r3,r3,r11 - vld1.32 {q8},[r14,:128]! - add r8,r8,r2 - vsli.32 d24,d0,#13 - eor r2,r6,r7 - eor r0,r5,r5,ror#5 - veor d25,d25,d24 - add r9,r9,r3 - and r2,r2,r5 - vadd.i32 d1,d1,d25 - eor r3,r0,r5,ror#19 - eor r0,r9,r9,ror#11 - vadd.i32 q8,q8,q0 - eor r2,r2,r7 - add r8,r8,r3,ror#6 - eor r3,r9,r10 - eor r0,r0,r9,ror#20 - add r8,r8,r2 - ldr r2,[sp,#16] - and r12,r12,r3 - add r4,r4,r8 - vst1.32 {q8},[r1,:128]! - add r8,r8,r0,ror#2 - eor r12,r12,r10 - vext.8 q8,q1,q2,#4 - add r7,r7,r2 - eor r2,r5,r6 - eor r0,r4,r4,ror#5 - vext.8 q9,q3,q0,#4 - add r8,r8,r12 - and r2,r2,r4 - eor r12,r0,r4,ror#19 - vshr.u32 q10,q8,#7 - eor r0,r8,r8,ror#11 - eor r2,r2,r6 - vadd.i32 q1,q1,q9 - add r7,r7,r12,ror#6 - eor r12,r8,r9 - vshr.u32 q9,q8,#3 - eor r0,r0,r8,ror#20 - add r7,r7,r2 - vsli.32 q10,q8,#25 - ldr r2,[sp,#20] - and r3,r3,r12 - vshr.u32 q11,q8,#18 - add r11,r11,r7 - add r7,r7,r0,ror#2 - eor r3,r3,r9 - veor q9,q9,q10 - add r6,r6,r2 - vsli.32 q11,q8,#14 - eor r2,r4,r5 - eor r0,r11,r11,ror#5 - vshr.u32 d24,d1,#17 - add r7,r7,r3 - and r2,r2,r11 - veor q9,q9,q11 - eor r3,r0,r11,ror#19 - eor r0,r7,r7,ror#11 - vsli.32 d24,d1,#15 - eor r2,r2,r5 - add r6,r6,r3,ror#6 - vshr.u32 d25,d1,#10 - eor r3,r7,r8 - eor r0,r0,r7,ror#20 - vadd.i32 q1,q1,q9 - add r6,r6,r2 - ldr r2,[sp,#24] - veor d25,d25,d24 - and r12,r12,r3 - add r10,r10,r6 - vshr.u32 d24,d1,#19 - add r6,r6,r0,ror#2 - eor r12,r12,r8 - vsli.32 d24,d1,#13 - add r5,r5,r2 - eor r2,r11,r4 - veor d25,d25,d24 - eor r0,r10,r10,ror#5 - add r6,r6,r12 - vadd.i32 d2,d2,d25 - and r2,r2,r10 - eor r12,r0,r10,ror#19 - vshr.u32 d24,d2,#17 - eor r0,r6,r6,ror#11 - eor r2,r2,r4 - vsli.32 d24,d2,#15 - add r5,r5,r12,ror#6 - eor r12,r6,r7 - vshr.u32 d25,d2,#10 - eor r0,r0,r6,ror#20 - add r5,r5,r2 - veor d25,d25,d24 - ldr r2,[sp,#28] - and r3,r3,r12 - vshr.u32 d24,d2,#19 - add r9,r9,r5 - add r5,r5,r0,ror#2 - eor r3,r3,r7 - vld1.32 {q8},[r14,:128]! - add r4,r4,r2 - vsli.32 d24,d2,#13 - eor r2,r10,r11 - eor r0,r9,r9,ror#5 - veor d25,d25,d24 - add r5,r5,r3 - and r2,r2,r9 - vadd.i32 d3,d3,d25 - eor r3,r0,r9,ror#19 - eor r0,r5,r5,ror#11 - vadd.i32 q8,q8,q1 - eor r2,r2,r11 - add r4,r4,r3,ror#6 - eor r3,r5,r6 - eor r0,r0,r5,ror#20 - add r4,r4,r2 - ldr r2,[sp,#32] - and r12,r12,r3 - add r8,r8,r4 - vst1.32 {q8},[r1,:128]! - add r4,r4,r0,ror#2 - eor r12,r12,r6 - vext.8 q8,q2,q3,#4 - add r11,r11,r2 - eor r2,r9,r10 - eor r0,r8,r8,ror#5 - vext.8 q9,q0,q1,#4 - add r4,r4,r12 - and r2,r2,r8 - eor r12,r0,r8,ror#19 - vshr.u32 q10,q8,#7 - eor r0,r4,r4,ror#11 - eor r2,r2,r10 - vadd.i32 q2,q2,q9 - add r11,r11,r12,ror#6 - eor r12,r4,r5 - vshr.u32 q9,q8,#3 - eor r0,r0,r4,ror#20 - add r11,r11,r2 - vsli.32 q10,q8,#25 - ldr r2,[sp,#36] - and r3,r3,r12 - vshr.u32 q11,q8,#18 - add r7,r7,r11 - add r11,r11,r0,ror#2 - eor r3,r3,r5 - veor q9,q9,q10 - add r10,r10,r2 - vsli.32 q11,q8,#14 - eor r2,r8,r9 - eor r0,r7,r7,ror#5 - vshr.u32 d24,d3,#17 - add r11,r11,r3 - and r2,r2,r7 - veor q9,q9,q11 - eor r3,r0,r7,ror#19 - eor r0,r11,r11,ror#11 - vsli.32 d24,d3,#15 - eor r2,r2,r9 - add r10,r10,r3,ror#6 - vshr.u32 d25,d3,#10 - eor r3,r11,r4 - eor r0,r0,r11,ror#20 - vadd.i32 q2,q2,q9 - add r10,r10,r2 - ldr r2,[sp,#40] - veor d25,d25,d24 - and r12,r12,r3 - add r6,r6,r10 - vshr.u32 d24,d3,#19 - add r10,r10,r0,ror#2 - eor r12,r12,r4 - vsli.32 d24,d3,#13 - add r9,r9,r2 - eor r2,r7,r8 - veor d25,d25,d24 - eor r0,r6,r6,ror#5 - add r10,r10,r12 - vadd.i32 d4,d4,d25 - and r2,r2,r6 - eor r12,r0,r6,ror#19 - vshr.u32 d24,d4,#17 - eor r0,r10,r10,ror#11 - eor r2,r2,r8 - vsli.32 d24,d4,#15 - add r9,r9,r12,ror#6 - eor r12,r10,r11 - vshr.u32 d25,d4,#10 - eor r0,r0,r10,ror#20 - add r9,r9,r2 - veor d25,d25,d24 - ldr r2,[sp,#44] - and r3,r3,r12 - vshr.u32 d24,d4,#19 - add r5,r5,r9 - add r9,r9,r0,ror#2 - eor r3,r3,r11 - vld1.32 {q8},[r14,:128]! - add r8,r8,r2 - vsli.32 d24,d4,#13 - eor r2,r6,r7 - eor r0,r5,r5,ror#5 - veor d25,d25,d24 - add r9,r9,r3 - and r2,r2,r5 - vadd.i32 d5,d5,d25 - eor r3,r0,r5,ror#19 - eor r0,r9,r9,ror#11 - vadd.i32 q8,q8,q2 - eor r2,r2,r7 - add r8,r8,r3,ror#6 - eor r3,r9,r10 - eor r0,r0,r9,ror#20 - add r8,r8,r2 - ldr r2,[sp,#48] - and r12,r12,r3 - add r4,r4,r8 - vst1.32 {q8},[r1,:128]! - add r8,r8,r0,ror#2 - eor r12,r12,r10 - vext.8 q8,q3,q0,#4 - add r7,r7,r2 - eor r2,r5,r6 - eor r0,r4,r4,ror#5 - vext.8 q9,q1,q2,#4 - add r8,r8,r12 - and r2,r2,r4 - eor r12,r0,r4,ror#19 - vshr.u32 q10,q8,#7 - eor r0,r8,r8,ror#11 - eor r2,r2,r6 - vadd.i32 q3,q3,q9 - add r7,r7,r12,ror#6 - eor r12,r8,r9 - vshr.u32 q9,q8,#3 - eor r0,r0,r8,ror#20 - add r7,r7,r2 - vsli.32 q10,q8,#25 - ldr r2,[sp,#52] - and r3,r3,r12 - vshr.u32 q11,q8,#18 - add r11,r11,r7 - add r7,r7,r0,ror#2 - eor r3,r3,r9 - veor q9,q9,q10 - add r6,r6,r2 - vsli.32 q11,q8,#14 - eor r2,r4,r5 - eor r0,r11,r11,ror#5 - vshr.u32 d24,d5,#17 - add r7,r7,r3 - and r2,r2,r11 - veor q9,q9,q11 - eor r3,r0,r11,ror#19 - eor r0,r7,r7,ror#11 - vsli.32 d24,d5,#15 - eor r2,r2,r5 - add r6,r6,r3,ror#6 - vshr.u32 d25,d5,#10 - eor r3,r7,r8 - eor r0,r0,r7,ror#20 - vadd.i32 q3,q3,q9 - add r6,r6,r2 - ldr r2,[sp,#56] - veor d25,d25,d24 - and r12,r12,r3 - add r10,r10,r6 - vshr.u32 d24,d5,#19 - add r6,r6,r0,ror#2 - eor r12,r12,r8 - vsli.32 d24,d5,#13 - add r5,r5,r2 - eor r2,r11,r4 - veor d25,d25,d24 - eor r0,r10,r10,ror#5 - add r6,r6,r12 - vadd.i32 d6,d6,d25 - and r2,r2,r10 - eor r12,r0,r10,ror#19 - vshr.u32 d24,d6,#17 - eor r0,r6,r6,ror#11 - eor r2,r2,r4 - vsli.32 d24,d6,#15 - add r5,r5,r12,ror#6 - eor r12,r6,r7 - vshr.u32 d25,d6,#10 - eor r0,r0,r6,ror#20 - add r5,r5,r2 - veor d25,d25,d24 - ldr r2,[sp,#60] - and r3,r3,r12 - vshr.u32 d24,d6,#19 - add r9,r9,r5 - add r5,r5,r0,ror#2 - eor r3,r3,r7 - vld1.32 {q8},[r14,:128]! - add r4,r4,r2 - vsli.32 d24,d6,#13 - eor r2,r10,r11 - eor r0,r9,r9,ror#5 - veor d25,d25,d24 - add r5,r5,r3 - and r2,r2,r9 - vadd.i32 d7,d7,d25 - eor r3,r0,r9,ror#19 - eor r0,r5,r5,ror#11 - vadd.i32 q8,q8,q3 - eor r2,r2,r11 - add r4,r4,r3,ror#6 - eor r3,r5,r6 - eor r0,r0,r5,ror#20 - add r4,r4,r2 - ldr r2,[r14] - and r12,r12,r3 - add r8,r8,r4 - vst1.32 {q8},[r1,:128]! - add r4,r4,r0,ror#2 - eor r12,r12,r6 - teq r2,#0 @ check for K256 terminator - ldr r2,[sp,#0] - sub r1,r1,#64 - bne L_00_48 - - ldr r1,[sp,#68] - ldr r0,[sp,#72] - sub r14,r14,#256 @ rewind r14 - teq r1,r0 - it eq - subeq r1,r1,#64 @ avoid SEGV - vld1.8 {q0},[r1]! @ load next input block - vld1.8 {q1},[r1]! - vld1.8 {q2},[r1]! - vld1.8 {q3},[r1]! - it ne - strne r1,[sp,#68] - mov r1,sp - add r11,r11,r2 - eor r2,r9,r10 - eor r0,r8,r8,ror#5 - add r4,r4,r12 - vld1.32 {q8},[r14,:128]! - and r2,r2,r8 - eor r12,r0,r8,ror#19 - eor r0,r4,r4,ror#11 - eor r2,r2,r10 - vrev32.8 q0,q0 - add r11,r11,r12,ror#6 - eor r12,r4,r5 - eor r0,r0,r4,ror#20 - add r11,r11,r2 - vadd.i32 q8,q8,q0 - ldr r2,[sp,#4] - and r3,r3,r12 - add r7,r7,r11 - add r11,r11,r0,ror#2 - eor r3,r3,r5 - add r10,r10,r2 - eor r2,r8,r9 - eor r0,r7,r7,ror#5 - add r11,r11,r3 - and r2,r2,r7 - eor r3,r0,r7,ror#19 - eor r0,r11,r11,ror#11 - eor r2,r2,r9 - add r10,r10,r3,ror#6 - eor r3,r11,r4 - eor r0,r0,r11,ror#20 - add r10,r10,r2 - ldr r2,[sp,#8] - and r12,r12,r3 - add r6,r6,r10 - add r10,r10,r0,ror#2 - eor r12,r12,r4 - add r9,r9,r2 - eor r2,r7,r8 - eor r0,r6,r6,ror#5 - add r10,r10,r12 - and r2,r2,r6 - eor r12,r0,r6,ror#19 - eor r0,r10,r10,ror#11 - eor r2,r2,r8 - add r9,r9,r12,ror#6 - eor r12,r10,r11 - eor r0,r0,r10,ror#20 - add r9,r9,r2 - ldr r2,[sp,#12] - and r3,r3,r12 - add r5,r5,r9 - add r9,r9,r0,ror#2 - eor r3,r3,r11 - add r8,r8,r2 - eor r2,r6,r7 - eor r0,r5,r5,ror#5 - add r9,r9,r3 - and r2,r2,r5 - eor r3,r0,r5,ror#19 - eor r0,r9,r9,ror#11 - eor r2,r2,r7 - add r8,r8,r3,ror#6 - eor r3,r9,r10 - eor r0,r0,r9,ror#20 - add r8,r8,r2 - ldr r2,[sp,#16] - and r12,r12,r3 - add r4,r4,r8 - add r8,r8,r0,ror#2 - eor r12,r12,r10 - vst1.32 {q8},[r1,:128]! - add r7,r7,r2 - eor r2,r5,r6 - eor r0,r4,r4,ror#5 - add r8,r8,r12 - vld1.32 {q8},[r14,:128]! - and r2,r2,r4 - eor r12,r0,r4,ror#19 - eor r0,r8,r8,ror#11 - eor r2,r2,r6 - vrev32.8 q1,q1 - add r7,r7,r12,ror#6 - eor r12,r8,r9 - eor r0,r0,r8,ror#20 - add r7,r7,r2 - vadd.i32 q8,q8,q1 - ldr r2,[sp,#20] - and r3,r3,r12 - add r11,r11,r7 - add r7,r7,r0,ror#2 - eor r3,r3,r9 - add r6,r6,r2 - eor r2,r4,r5 - eor r0,r11,r11,ror#5 - add r7,r7,r3 - and r2,r2,r11 - eor r3,r0,r11,ror#19 - eor r0,r7,r7,ror#11 - eor r2,r2,r5 - add r6,r6,r3,ror#6 - eor r3,r7,r8 - eor r0,r0,r7,ror#20 - add r6,r6,r2 - ldr r2,[sp,#24] - and r12,r12,r3 - add r10,r10,r6 - add r6,r6,r0,ror#2 - eor r12,r12,r8 - add r5,r5,r2 - eor r2,r11,r4 - eor r0,r10,r10,ror#5 - add r6,r6,r12 - and r2,r2,r10 - eor r12,r0,r10,ror#19 - eor r0,r6,r6,ror#11 - eor r2,r2,r4 - add r5,r5,r12,ror#6 - eor r12,r6,r7 - eor r0,r0,r6,ror#20 - add r5,r5,r2 - ldr r2,[sp,#28] - and r3,r3,r12 - add r9,r9,r5 - add r5,r5,r0,ror#2 - eor r3,r3,r7 - add r4,r4,r2 - eor r2,r10,r11 - eor r0,r9,r9,ror#5 - add r5,r5,r3 - and r2,r2,r9 - eor r3,r0,r9,ror#19 - eor r0,r5,r5,ror#11 - eor r2,r2,r11 - add r4,r4,r3,ror#6 - eor r3,r5,r6 - eor r0,r0,r5,ror#20 - add r4,r4,r2 - ldr r2,[sp,#32] - and r12,r12,r3 - add r8,r8,r4 - add r4,r4,r0,ror#2 - eor r12,r12,r6 - vst1.32 {q8},[r1,:128]! - add r11,r11,r2 - eor r2,r9,r10 - eor r0,r8,r8,ror#5 - add r4,r4,r12 - vld1.32 {q8},[r14,:128]! - and r2,r2,r8 - eor r12,r0,r8,ror#19 - eor r0,r4,r4,ror#11 - eor r2,r2,r10 - vrev32.8 q2,q2 - add r11,r11,r12,ror#6 - eor r12,r4,r5 - eor r0,r0,r4,ror#20 - add r11,r11,r2 - vadd.i32 q8,q8,q2 - ldr r2,[sp,#36] - and r3,r3,r12 - add r7,r7,r11 - add r11,r11,r0,ror#2 - eor r3,r3,r5 - add r10,r10,r2 - eor r2,r8,r9 - eor r0,r7,r7,ror#5 - add r11,r11,r3 - and r2,r2,r7 - eor r3,r0,r7,ror#19 - eor r0,r11,r11,ror#11 - eor r2,r2,r9 - add r10,r10,r3,ror#6 - eor r3,r11,r4 - eor r0,r0,r11,ror#20 - add r10,r10,r2 - ldr r2,[sp,#40] - and r12,r12,r3 - add r6,r6,r10 - add r10,r10,r0,ror#2 - eor r12,r12,r4 - add r9,r9,r2 - eor r2,r7,r8 - eor r0,r6,r6,ror#5 - add r10,r10,r12 - and r2,r2,r6 - eor r12,r0,r6,ror#19 - eor r0,r10,r10,ror#11 - eor r2,r2,r8 - add r9,r9,r12,ror#6 - eor r12,r10,r11 - eor r0,r0,r10,ror#20 - add r9,r9,r2 - ldr r2,[sp,#44] - and r3,r3,r12 - add r5,r5,r9 - add r9,r9,r0,ror#2 - eor r3,r3,r11 - add r8,r8,r2 - eor r2,r6,r7 - eor r0,r5,r5,ror#5 - add r9,r9,r3 - and r2,r2,r5 - eor r3,r0,r5,ror#19 - eor r0,r9,r9,ror#11 - eor r2,r2,r7 - add r8,r8,r3,ror#6 - eor r3,r9,r10 - eor r0,r0,r9,ror#20 - add r8,r8,r2 - ldr r2,[sp,#48] - and r12,r12,r3 - add r4,r4,r8 - add r8,r8,r0,ror#2 - eor r12,r12,r10 - vst1.32 {q8},[r1,:128]! - add r7,r7,r2 - eor r2,r5,r6 - eor r0,r4,r4,ror#5 - add r8,r8,r12 - vld1.32 {q8},[r14,:128]! - and r2,r2,r4 - eor r12,r0,r4,ror#19 - eor r0,r8,r8,ror#11 - eor r2,r2,r6 - vrev32.8 q3,q3 - add r7,r7,r12,ror#6 - eor r12,r8,r9 - eor r0,r0,r8,ror#20 - add r7,r7,r2 - vadd.i32 q8,q8,q3 - ldr r2,[sp,#52] - and r3,r3,r12 - add r11,r11,r7 - add r7,r7,r0,ror#2 - eor r3,r3,r9 - add r6,r6,r2 - eor r2,r4,r5 - eor r0,r11,r11,ror#5 - add r7,r7,r3 - and r2,r2,r11 - eor r3,r0,r11,ror#19 - eor r0,r7,r7,ror#11 - eor r2,r2,r5 - add r6,r6,r3,ror#6 - eor r3,r7,r8 - eor r0,r0,r7,ror#20 - add r6,r6,r2 - ldr r2,[sp,#56] - and r12,r12,r3 - add r10,r10,r6 - add r6,r6,r0,ror#2 - eor r12,r12,r8 - add r5,r5,r2 - eor r2,r11,r4 - eor r0,r10,r10,ror#5 - add r6,r6,r12 - and r2,r2,r10 - eor r12,r0,r10,ror#19 - eor r0,r6,r6,ror#11 - eor r2,r2,r4 - add r5,r5,r12,ror#6 - eor r12,r6,r7 - eor r0,r0,r6,ror#20 - add r5,r5,r2 - ldr r2,[sp,#60] - and r3,r3,r12 - add r9,r9,r5 - add r5,r5,r0,ror#2 - eor r3,r3,r7 - add r4,r4,r2 - eor r2,r10,r11 - eor r0,r9,r9,ror#5 - add r5,r5,r3 - and r2,r2,r9 - eor r3,r0,r9,ror#19 - eor r0,r5,r5,ror#11 - eor r2,r2,r11 - add r4,r4,r3,ror#6 - eor r3,r5,r6 - eor r0,r0,r5,ror#20 - add r4,r4,r2 - ldr r2,[sp,#64] - and r12,r12,r3 - add r8,r8,r4 - add r4,r4,r0,ror#2 - eor r12,r12,r6 - vst1.32 {q8},[r1,:128]! - ldr r0,[r2,#0] - add r4,r4,r12 @ h+=Maj(a,b,c) from the past - ldr r12,[r2,#4] - ldr r3,[r2,#8] - ldr r1,[r2,#12] - add r4,r4,r0 @ accumulate - ldr r0,[r2,#16] - add r5,r5,r12 - ldr r12,[r2,#20] - add r6,r6,r3 - ldr r3,[r2,#24] - add r7,r7,r1 - ldr r1,[r2,#28] - add r8,r8,r0 - str r4,[r2],#4 - add r9,r9,r12 - str r5,[r2],#4 - add r10,r10,r3 - str r6,[r2],#4 - add r11,r11,r1 - str r7,[r2],#4 - stmia r2,{r8,r9,r10,r11} - - ittte ne - movne r1,sp - ldrne r2,[sp,#0] - eorne r12,r12,r12 - ldreq sp,[sp,#76] @ restore original sp - itt ne - eorne r3,r5,r6 - bne L_00_48 - - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} - -#endif -#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) - -# if defined(__thumb2__) -# define INST(a,b,c,d) .byte c,d|0xc,a,b -# else -# define INST(a,b,c,d) .byte a,b,c,d -# endif - -#ifdef __thumb2__ -.thumb_func sha256_block_data_order_armv8 -#endif -.align 5 -sha256_block_data_order_armv8: -LARMv8: - vld1.32 {q0,q1},[r0] - sub r3,r3,#256+32 - add r2,r1,r2,lsl#6 @ len to point at the end of inp - b Loop_v8 - -.align 4 -Loop_v8: - vld1.8 {q8,q9},[r1]! - vld1.8 {q10,q11},[r1]! - vld1.32 {q12},[r3]! - vrev32.8 q8,q8 - vrev32.8 q9,q9 - vrev32.8 q10,q10 - vrev32.8 q11,q11 - vmov q14,q0 @ offload - vmov q15,q1 - teq r1,r2 - vld1.32 {q13},[r3]! - vadd.i32 q12,q12,q8 - INST(0xe2,0x03,0xfa,0xf3) @ sha256su0 q8,q9 - vmov q2,q0 - INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12 - INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12 - INST(0xe6,0x0c,0x64,0xf3) @ sha256su1 q8,q10,q11 - vld1.32 {q12},[r3]! - vadd.i32 q13,q13,q9 - INST(0xe4,0x23,0xfa,0xf3) @ sha256su0 q9,q10 - vmov q2,q0 - INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13 - INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13 - INST(0xe0,0x2c,0x66,0xf3) @ sha256su1 q9,q11,q8 - vld1.32 {q13},[r3]! - vadd.i32 q12,q12,q10 - INST(0xe6,0x43,0xfa,0xf3) @ sha256su0 q10,q11 - vmov q2,q0 - INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12 - INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12 - INST(0xe2,0x4c,0x60,0xf3) @ sha256su1 q10,q8,q9 - vld1.32 {q12},[r3]! - vadd.i32 q13,q13,q11 - INST(0xe0,0x63,0xfa,0xf3) @ sha256su0 q11,q8 - vmov q2,q0 - INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13 - INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13 - INST(0xe4,0x6c,0x62,0xf3) @ sha256su1 q11,q9,q10 - vld1.32 {q13},[r3]! - vadd.i32 q12,q12,q8 - INST(0xe2,0x03,0xfa,0xf3) @ sha256su0 q8,q9 - vmov q2,q0 - INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12 - INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12 - INST(0xe6,0x0c,0x64,0xf3) @ sha256su1 q8,q10,q11 - vld1.32 {q12},[r3]! - vadd.i32 q13,q13,q9 - INST(0xe4,0x23,0xfa,0xf3) @ sha256su0 q9,q10 - vmov q2,q0 - INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13 - INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13 - INST(0xe0,0x2c,0x66,0xf3) @ sha256su1 q9,q11,q8 - vld1.32 {q13},[r3]! - vadd.i32 q12,q12,q10 - INST(0xe6,0x43,0xfa,0xf3) @ sha256su0 q10,q11 - vmov q2,q0 - INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12 - INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12 - INST(0xe2,0x4c,0x60,0xf3) @ sha256su1 q10,q8,q9 - vld1.32 {q12},[r3]! - vadd.i32 q13,q13,q11 - INST(0xe0,0x63,0xfa,0xf3) @ sha256su0 q11,q8 - vmov q2,q0 - INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13 - INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13 - INST(0xe4,0x6c,0x62,0xf3) @ sha256su1 q11,q9,q10 - vld1.32 {q13},[r3]! - vadd.i32 q12,q12,q8 - INST(0xe2,0x03,0xfa,0xf3) @ sha256su0 q8,q9 - vmov q2,q0 - INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12 - INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12 - INST(0xe6,0x0c,0x64,0xf3) @ sha256su1 q8,q10,q11 - vld1.32 {q12},[r3]! - vadd.i32 q13,q13,q9 - INST(0xe4,0x23,0xfa,0xf3) @ sha256su0 q9,q10 - vmov q2,q0 - INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13 - INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13 - INST(0xe0,0x2c,0x66,0xf3) @ sha256su1 q9,q11,q8 - vld1.32 {q13},[r3]! - vadd.i32 q12,q12,q10 - INST(0xe6,0x43,0xfa,0xf3) @ sha256su0 q10,q11 - vmov q2,q0 - INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12 - INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12 - INST(0xe2,0x4c,0x60,0xf3) @ sha256su1 q10,q8,q9 - vld1.32 {q12},[r3]! - vadd.i32 q13,q13,q11 - INST(0xe0,0x63,0xfa,0xf3) @ sha256su0 q11,q8 - vmov q2,q0 - INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13 - INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13 - INST(0xe4,0x6c,0x62,0xf3) @ sha256su1 q11,q9,q10 - vld1.32 {q13},[r3]! - vadd.i32 q12,q12,q8 - vmov q2,q0 - INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12 - INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12 - - vld1.32 {q12},[r3]! - vadd.i32 q13,q13,q9 - vmov q2,q0 - INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13 - INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13 - - vld1.32 {q13},[r3] - vadd.i32 q12,q12,q10 - sub r3,r3,#256-16 @ rewind - vmov q2,q0 - INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12 - INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12 - - vadd.i32 q13,q13,q11 - vmov q2,q0 - INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13 - INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13 - - vadd.i32 q0,q0,q14 - vadd.i32 q1,q1,q15 - it ne - bne Loop_v8 - - vst1.32 {q0,q1},[r0] - - bx lr @ bx lr - -#endif -.byte 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,47,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.align 2 -#endif // !OPENSSL_NO_ASM diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv4-linux32.S temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv4-linux32.S --- temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv4-linux32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv4-linux32.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,15 +1,9 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#if defined(__arm__) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_ARM) && defined(__ELF__) @ Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. @ @ Licensed under the OpenSSL license (the "License"). You may not use @@ -56,7 +50,7 @@ @ Add ARMv8 code path performing at 2.0 cpb on Apple A7. #ifndef __KERNEL__ -# include +# include #else # define __ARM_ARCH__ __LINUX_ARM_ARCH__ # define __ARM_MAX_ARCH__ 7 @@ -98,25 +92,25 @@ .word 0 @ terminator #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) -.hidden GFp_armcap_P +.hidden OPENSSL_armcap_P .LOPENSSL_armcap: -.word GFp_armcap_P-.Lsha256_block_data_order +.word OPENSSL_armcap_P-.Lsha256_block_data_order #endif .align 5 -.globl GFp_sha256_block_data_order -.hidden GFp_sha256_block_data_order -.type GFp_sha256_block_data_order,%function -GFp_sha256_block_data_order: +.globl sha256_block_data_order +.hidden sha256_block_data_order +.type sha256_block_data_order,%function +sha256_block_data_order: .Lsha256_block_data_order: #if __ARM_ARCH__<7 && !defined(__thumb2__) - sub r3,pc,#8 @ GFp_sha256_block_data_order + sub r3,pc,#8 @ sha256_block_data_order #else adr r3,.Lsha256_block_data_order #endif #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) ldr r12,.LOPENSSL_armcap - ldr r12,[r3,r12] @ GFp_armcap_P + ldr r12,[r3,r12] @ OPENSSL_armcap_P #ifdef __APPLE__ ldr r12,[r12] #endif @@ -1890,7 +1884,7 @@ moveq pc,lr @ be binary compatible with V4, yet .word 0xe12fff1e @ interoperable with Thumb ISA:-) #endif -.size GFp_sha256_block_data_order,.-GFp_sha256_block_data_order +.size sha256_block_data_order,.-sha256_block_data_order #if __ARM_MAX_ARCH__>=7 .arch armv7-a .fpu neon @@ -2826,6 +2820,4 @@ #endif .byte 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,47,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 2 -#endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_ARM) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv8-ios64.S temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv8-ios64.S --- temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv8-ios64.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv8-ios64.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,15 +1,10 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -// Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__APPLE__) +// Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. // // Licensed under the OpenSSL license (the "License"). You may not use // this file except in compliance with the License. You can obtain a copy @@ -37,6 +32,7 @@ // Denver 2.01 10.5 (+26%) 6.70 (+8%) // X-Gene 20.0 (+100%) 12.8 (+300%(***)) // Mongoose 2.36 13.0 (+50%) 8.36 (+33%) +// Kryo 1.92 17.4 (+30%) 11.2 (+8%) // // (*) Software SHA256 results are of lesser relevance, presented // mostly for informational purposes. @@ -45,30 +41,30 @@ // on Cortex-A53 (or by 4 cycles per round). // (***) Super-impressive coefficients over gcc-generated code are // indication of some compiler "pathology", most notably code -// generated with -mgeneral-regs-only is significanty faster +// generated with -mgeneral-regs-only is significantly faster // and the gap is only 40-90%. #ifndef __KERNEL__ -# include +# include #endif .text -.private_extern _GFp_armcap_P -.globl _GFp_sha256_block_data_order -.private_extern _GFp_sha256_block_data_order +.private_extern _OPENSSL_armcap_P +.globl _sha256_block_data_order +.private_extern _sha256_block_data_order .align 6 -_GFp_sha256_block_data_order: +_sha256_block_data_order: AARCH64_VALID_CALL_TARGET #ifndef __KERNEL__ -#if __has_feature(hwaddress_sanitizer) && __clang_major__ >= 10 - adrp x16,:pg_hi21_nc:_GFp_armcap_P +#if defined(OPENSSL_HWASAN) && __clang_major__ >= 10 + adrp x16,:pg_hi21_nc:_OPENSSL_armcap_P #else - adrp x16,_GFp_armcap_P@PAGE + adrp x16,_OPENSSL_armcap_P@PAGE #endif - ldr w16,[x16,_GFp_armcap_P@PAGEOFF] + ldr w16,[x16,_OPENSSL_armcap_P@PAGEOFF] tst w16,#ARMV8_SHA256 b.ne Lv8_entry #endif @@ -97,7 +93,7 @@ ldr w19,[x30],#4 // *K++ eor w28,w21,w22 // magic seed str x1,[x29,#112] -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w3,w3 // 0 #endif ror w16,w24,#6 @@ -120,7 +116,7 @@ add w27,w27,w28 // h+=Maj(a,b,c) ldr w28,[x30],#4 // *K++, w19 in next round //add w27,w27,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w4,w4 // 1 #endif ldp w5,w6,[x1],#2*4 @@ -145,7 +141,7 @@ add w26,w26,w19 // h+=Maj(a,b,c) ldr w19,[x30],#4 // *K++, w28 in next round //add w26,w26,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w5,w5 // 2 #endif add w26,w26,w17 // h+=Sigma0(a) @@ -169,7 +165,7 @@ add w25,w25,w28 // h+=Maj(a,b,c) ldr w28,[x30],#4 // *K++, w19 in next round //add w25,w25,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w6,w6 // 3 #endif ldp w7,w8,[x1],#2*4 @@ -194,7 +190,7 @@ add w24,w24,w19 // h+=Maj(a,b,c) ldr w19,[x30],#4 // *K++, w28 in next round //add w24,w24,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w7,w7 // 4 #endif add w24,w24,w17 // h+=Sigma0(a) @@ -218,7 +214,7 @@ add w23,w23,w28 // h+=Maj(a,b,c) ldr w28,[x30],#4 // *K++, w19 in next round //add w23,w23,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w8,w8 // 5 #endif ldp w9,w10,[x1],#2*4 @@ -243,7 +239,7 @@ add w22,w22,w19 // h+=Maj(a,b,c) ldr w19,[x30],#4 // *K++, w28 in next round //add w22,w22,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w9,w9 // 6 #endif add w22,w22,w17 // h+=Sigma0(a) @@ -267,7 +263,7 @@ add w21,w21,w28 // h+=Maj(a,b,c) ldr w28,[x30],#4 // *K++, w19 in next round //add w21,w21,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w10,w10 // 7 #endif ldp w11,w12,[x1],#2*4 @@ -292,7 +288,7 @@ add w20,w20,w19 // h+=Maj(a,b,c) ldr w19,[x30],#4 // *K++, w28 in next round //add w20,w20,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w11,w11 // 8 #endif add w20,w20,w17 // h+=Sigma0(a) @@ -316,7 +312,7 @@ add w27,w27,w28 // h+=Maj(a,b,c) ldr w28,[x30],#4 // *K++, w19 in next round //add w27,w27,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w12,w12 // 9 #endif ldp w13,w14,[x1],#2*4 @@ -341,7 +337,7 @@ add w26,w26,w19 // h+=Maj(a,b,c) ldr w19,[x30],#4 // *K++, w28 in next round //add w26,w26,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w13,w13 // 10 #endif add w26,w26,w17 // h+=Sigma0(a) @@ -365,7 +361,7 @@ add w25,w25,w28 // h+=Maj(a,b,c) ldr w28,[x30],#4 // *K++, w19 in next round //add w25,w25,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w14,w14 // 11 #endif ldp w15,w0,[x1],#2*4 @@ -391,7 +387,7 @@ add w24,w24,w19 // h+=Maj(a,b,c) ldr w19,[x30],#4 // *K++, w28 in next round //add w24,w24,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w15,w15 // 12 #endif add w24,w24,w17 // h+=Sigma0(a) @@ -416,7 +412,7 @@ add w23,w23,w28 // h+=Maj(a,b,c) ldr w28,[x30],#4 // *K++, w19 in next round //add w23,w23,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w0,w0 // 13 #endif ldp w1,w2,[x1] @@ -442,7 +438,7 @@ add w22,w22,w19 // h+=Maj(a,b,c) ldr w19,[x30],#4 // *K++, w28 in next round //add w22,w22,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w1,w1 // 14 #endif ldr w6,[sp,#12] @@ -468,7 +464,7 @@ add w21,w21,w28 // h+=Maj(a,b,c) ldr w28,[x30],#4 // *K++, w19 in next round //add w21,w21,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w2,w2 // 15 #endif ldr w7,[sp,#0] @@ -1205,4 +1201,4 @@ ret #endif -#endif // !OPENSSL_NO_ASM +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__APPLE__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv8-linux64.S temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv8-linux64.S --- temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv8-linux64.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv8-linux64.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,16 +1,10 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#if defined(__aarch64__) -// Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__ELF__) +// Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. // // Licensed under the OpenSSL license (the "License"). You may not use // this file except in compliance with the License. You can obtain a copy @@ -38,6 +32,7 @@ // Denver 2.01 10.5 (+26%) 6.70 (+8%) // X-Gene 20.0 (+100%) 12.8 (+300%(***)) // Mongoose 2.36 13.0 (+50%) 8.36 (+33%) +// Kryo 1.92 17.4 (+30%) 11.2 (+8%) // // (*) Software SHA256 results are of lesser relevance, presented // mostly for informational purposes. @@ -46,30 +41,30 @@ // on Cortex-A53 (or by 4 cycles per round). // (***) Super-impressive coefficients over gcc-generated code are // indication of some compiler "pathology", most notably code -// generated with -mgeneral-regs-only is significanty faster +// generated with -mgeneral-regs-only is significantly faster // and the gap is only 40-90%. #ifndef __KERNEL__ -# include +# include #endif .text -.hidden GFp_armcap_P -.globl GFp_sha256_block_data_order -.hidden GFp_sha256_block_data_order -.type GFp_sha256_block_data_order,%function +.hidden OPENSSL_armcap_P +.globl sha256_block_data_order +.hidden sha256_block_data_order +.type sha256_block_data_order,%function .align 6 -GFp_sha256_block_data_order: +sha256_block_data_order: AARCH64_VALID_CALL_TARGET #ifndef __KERNEL__ -#if __has_feature(hwaddress_sanitizer) && __clang_major__ >= 10 - adrp x16,:pg_hi21_nc:GFp_armcap_P +#if defined(OPENSSL_HWASAN) && __clang_major__ >= 10 + adrp x16,:pg_hi21_nc:OPENSSL_armcap_P #else - adrp x16,GFp_armcap_P + adrp x16,OPENSSL_armcap_P #endif - ldr w16,[x16,:lo12:GFp_armcap_P] + ldr w16,[x16,:lo12:OPENSSL_armcap_P] tst w16,#ARMV8_SHA256 b.ne .Lv8_entry #endif @@ -98,7 +93,7 @@ ldr w19,[x30],#4 // *K++ eor w28,w21,w22 // magic seed str x1,[x29,#112] -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w3,w3 // 0 #endif ror w16,w24,#6 @@ -121,7 +116,7 @@ add w27,w27,w28 // h+=Maj(a,b,c) ldr w28,[x30],#4 // *K++, w19 in next round //add w27,w27,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w4,w4 // 1 #endif ldp w5,w6,[x1],#2*4 @@ -146,7 +141,7 @@ add w26,w26,w19 // h+=Maj(a,b,c) ldr w19,[x30],#4 // *K++, w28 in next round //add w26,w26,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w5,w5 // 2 #endif add w26,w26,w17 // h+=Sigma0(a) @@ -170,7 +165,7 @@ add w25,w25,w28 // h+=Maj(a,b,c) ldr w28,[x30],#4 // *K++, w19 in next round //add w25,w25,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w6,w6 // 3 #endif ldp w7,w8,[x1],#2*4 @@ -195,7 +190,7 @@ add w24,w24,w19 // h+=Maj(a,b,c) ldr w19,[x30],#4 // *K++, w28 in next round //add w24,w24,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w7,w7 // 4 #endif add w24,w24,w17 // h+=Sigma0(a) @@ -219,7 +214,7 @@ add w23,w23,w28 // h+=Maj(a,b,c) ldr w28,[x30],#4 // *K++, w19 in next round //add w23,w23,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w8,w8 // 5 #endif ldp w9,w10,[x1],#2*4 @@ -244,7 +239,7 @@ add w22,w22,w19 // h+=Maj(a,b,c) ldr w19,[x30],#4 // *K++, w28 in next round //add w22,w22,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w9,w9 // 6 #endif add w22,w22,w17 // h+=Sigma0(a) @@ -268,7 +263,7 @@ add w21,w21,w28 // h+=Maj(a,b,c) ldr w28,[x30],#4 // *K++, w19 in next round //add w21,w21,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w10,w10 // 7 #endif ldp w11,w12,[x1],#2*4 @@ -293,7 +288,7 @@ add w20,w20,w19 // h+=Maj(a,b,c) ldr w19,[x30],#4 // *K++, w28 in next round //add w20,w20,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w11,w11 // 8 #endif add w20,w20,w17 // h+=Sigma0(a) @@ -317,7 +312,7 @@ add w27,w27,w28 // h+=Maj(a,b,c) ldr w28,[x30],#4 // *K++, w19 in next round //add w27,w27,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w12,w12 // 9 #endif ldp w13,w14,[x1],#2*4 @@ -342,7 +337,7 @@ add w26,w26,w19 // h+=Maj(a,b,c) ldr w19,[x30],#4 // *K++, w28 in next round //add w26,w26,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w13,w13 // 10 #endif add w26,w26,w17 // h+=Sigma0(a) @@ -366,7 +361,7 @@ add w25,w25,w28 // h+=Maj(a,b,c) ldr w28,[x30],#4 // *K++, w19 in next round //add w25,w25,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w14,w14 // 11 #endif ldp w15,w0,[x1],#2*4 @@ -392,7 +387,7 @@ add w24,w24,w19 // h+=Maj(a,b,c) ldr w19,[x30],#4 // *K++, w28 in next round //add w24,w24,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w15,w15 // 12 #endif add w24,w24,w17 // h+=Sigma0(a) @@ -417,7 +412,7 @@ add w23,w23,w28 // h+=Maj(a,b,c) ldr w28,[x30],#4 // *K++, w19 in next round //add w23,w23,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w0,w0 // 13 #endif ldp w1,w2,[x1] @@ -443,7 +438,7 @@ add w22,w22,w19 // h+=Maj(a,b,c) ldr w19,[x30],#4 // *K++, w28 in next round //add w22,w22,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w1,w1 // 14 #endif ldr w6,[sp,#12] @@ -469,7 +464,7 @@ add w21,w21,w28 // h+=Maj(a,b,c) ldr w28,[x30],#4 // *K++, w19 in next round //add w21,w21,w17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev w2,w2 // 15 #endif ldr w7,[sp,#0] @@ -1036,7 +1031,7 @@ ldp x29,x30,[sp],#128 AARCH64_VALIDATE_LINK_REGISTER ret -.size GFp_sha256_block_data_order,.-GFp_sha256_block_data_order +.size sha256_block_data_order,.-sha256_block_data_order .section .rodata .align 6 @@ -1206,6 +1201,4 @@ ret .size sha256_block_armv8,.-sha256_block_armv8 #endif -#endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv8-win64.S temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv8-win64.S --- temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv8-win64.S 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/sha256-armv8-win64.S 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1208 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. + +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(_WIN32) +// Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. +// +// Licensed under the OpenSSL license (the "License"). You may not use +// this file except in compliance with the License. You can obtain a copy +// in the file LICENSE in the source distribution or at +// https://www.openssl.org/source/license.html + +// ==================================================================== +// Written by Andy Polyakov for the OpenSSL +// project. The module is, however, dual licensed under OpenSSL and +// CRYPTOGAMS licenses depending on where you obtain it. For further +// details see http://www.openssl.org/~appro/cryptogams/. +// +// Permission to use under GPLv2 terms is granted. +// ==================================================================== +// +// SHA256/512 for ARMv8. +// +// Performance in cycles per processed byte and improvement coefficient +// over code generated with "default" compiler: +// +// SHA256-hw SHA256(*) SHA512 +// Apple A7 1.97 10.5 (+33%) 6.73 (-1%(**)) +// Cortex-A53 2.38 15.5 (+115%) 10.0 (+150%(***)) +// Cortex-A57 2.31 11.6 (+86%) 7.51 (+260%(***)) +// Denver 2.01 10.5 (+26%) 6.70 (+8%) +// X-Gene 20.0 (+100%) 12.8 (+300%(***)) +// Mongoose 2.36 13.0 (+50%) 8.36 (+33%) +// Kryo 1.92 17.4 (+30%) 11.2 (+8%) +// +// (*) Software SHA256 results are of lesser relevance, presented +// mostly for informational purposes. +// (**) The result is a trade-off: it's possible to improve it by +// 10% (or by 1 cycle per round), but at the cost of 20% loss +// on Cortex-A53 (or by 4 cycles per round). +// (***) Super-impressive coefficients over gcc-generated code are +// indication of some compiler "pathology", most notably code +// generated with -mgeneral-regs-only is significantly faster +// and the gap is only 40-90%. + +#ifndef __KERNEL__ +# include +#endif + +.text + + + +.globl sha256_block_data_order + +.def sha256_block_data_order + .type 32 +.endef +.align 6 +sha256_block_data_order: + AARCH64_VALID_CALL_TARGET +#ifndef __KERNEL__ +#if defined(OPENSSL_HWASAN) && __clang_major__ >= 10 + adrp x16,:pg_hi21_nc:OPENSSL_armcap_P +#else + adrp x16,OPENSSL_armcap_P +#endif + ldr w16,[x16,:lo12:OPENSSL_armcap_P] + tst w16,#ARMV8_SHA256 + b.ne Lv8_entry +#endif + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-128]! + add x29,sp,#0 + + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#4*4 + + ldp w20,w21,[x0] // load context + ldp w22,w23,[x0,#2*4] + ldp w24,w25,[x0,#4*4] + add x2,x1,x2,lsl#6 // end of input + ldp w26,w27,[x0,#6*4] + adrp x30,LK256 + add x30,x30,:lo12:LK256 + stp x0,x2,[x29,#96] + +Loop: + ldp w3,w4,[x1],#2*4 + ldr w19,[x30],#4 // *K++ + eor w28,w21,w22 // magic seed + str x1,[x29,#112] +#ifndef __AARCH64EB__ + rev w3,w3 // 0 +#endif + ror w16,w24,#6 + add w27,w27,w19 // h+=K[i] + eor w6,w24,w24,ror#14 + and w17,w25,w24 + bic w19,w26,w24 + add w27,w27,w3 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w20,w21 // a^b, b^c in next round + eor w16,w16,w6,ror#11 // Sigma1(e) + ror w6,w20,#2 + add w27,w27,w17 // h+=Ch(e,f,g) + eor w17,w20,w20,ror#9 + add w27,w27,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w23,w23,w27 // d+=h + eor w28,w28,w21 // Maj(a,b,c) + eor w17,w6,w17,ror#13 // Sigma0(a) + add w27,w27,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w27,w27,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w4,w4 // 1 +#endif + ldp w5,w6,[x1],#2*4 + add w27,w27,w17 // h+=Sigma0(a) + ror w16,w23,#6 + add w26,w26,w28 // h+=K[i] + eor w7,w23,w23,ror#14 + and w17,w24,w23 + bic w28,w25,w23 + add w26,w26,w4 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w27,w20 // a^b, b^c in next round + eor w16,w16,w7,ror#11 // Sigma1(e) + ror w7,w27,#2 + add w26,w26,w17 // h+=Ch(e,f,g) + eor w17,w27,w27,ror#9 + add w26,w26,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w22,w22,w26 // d+=h + eor w19,w19,w20 // Maj(a,b,c) + eor w17,w7,w17,ror#13 // Sigma0(a) + add w26,w26,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w26,w26,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w5,w5 // 2 +#endif + add w26,w26,w17 // h+=Sigma0(a) + ror w16,w22,#6 + add w25,w25,w19 // h+=K[i] + eor w8,w22,w22,ror#14 + and w17,w23,w22 + bic w19,w24,w22 + add w25,w25,w5 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w26,w27 // a^b, b^c in next round + eor w16,w16,w8,ror#11 // Sigma1(e) + ror w8,w26,#2 + add w25,w25,w17 // h+=Ch(e,f,g) + eor w17,w26,w26,ror#9 + add w25,w25,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w21,w21,w25 // d+=h + eor w28,w28,w27 // Maj(a,b,c) + eor w17,w8,w17,ror#13 // Sigma0(a) + add w25,w25,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w25,w25,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w6,w6 // 3 +#endif + ldp w7,w8,[x1],#2*4 + add w25,w25,w17 // h+=Sigma0(a) + ror w16,w21,#6 + add w24,w24,w28 // h+=K[i] + eor w9,w21,w21,ror#14 + and w17,w22,w21 + bic w28,w23,w21 + add w24,w24,w6 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w25,w26 // a^b, b^c in next round + eor w16,w16,w9,ror#11 // Sigma1(e) + ror w9,w25,#2 + add w24,w24,w17 // h+=Ch(e,f,g) + eor w17,w25,w25,ror#9 + add w24,w24,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w20,w20,w24 // d+=h + eor w19,w19,w26 // Maj(a,b,c) + eor w17,w9,w17,ror#13 // Sigma0(a) + add w24,w24,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w24,w24,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w7,w7 // 4 +#endif + add w24,w24,w17 // h+=Sigma0(a) + ror w16,w20,#6 + add w23,w23,w19 // h+=K[i] + eor w10,w20,w20,ror#14 + and w17,w21,w20 + bic w19,w22,w20 + add w23,w23,w7 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w24,w25 // a^b, b^c in next round + eor w16,w16,w10,ror#11 // Sigma1(e) + ror w10,w24,#2 + add w23,w23,w17 // h+=Ch(e,f,g) + eor w17,w24,w24,ror#9 + add w23,w23,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w27,w27,w23 // d+=h + eor w28,w28,w25 // Maj(a,b,c) + eor w17,w10,w17,ror#13 // Sigma0(a) + add w23,w23,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w23,w23,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w8,w8 // 5 +#endif + ldp w9,w10,[x1],#2*4 + add w23,w23,w17 // h+=Sigma0(a) + ror w16,w27,#6 + add w22,w22,w28 // h+=K[i] + eor w11,w27,w27,ror#14 + and w17,w20,w27 + bic w28,w21,w27 + add w22,w22,w8 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w23,w24 // a^b, b^c in next round + eor w16,w16,w11,ror#11 // Sigma1(e) + ror w11,w23,#2 + add w22,w22,w17 // h+=Ch(e,f,g) + eor w17,w23,w23,ror#9 + add w22,w22,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w26,w26,w22 // d+=h + eor w19,w19,w24 // Maj(a,b,c) + eor w17,w11,w17,ror#13 // Sigma0(a) + add w22,w22,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w22,w22,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w9,w9 // 6 +#endif + add w22,w22,w17 // h+=Sigma0(a) + ror w16,w26,#6 + add w21,w21,w19 // h+=K[i] + eor w12,w26,w26,ror#14 + and w17,w27,w26 + bic w19,w20,w26 + add w21,w21,w9 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w22,w23 // a^b, b^c in next round + eor w16,w16,w12,ror#11 // Sigma1(e) + ror w12,w22,#2 + add w21,w21,w17 // h+=Ch(e,f,g) + eor w17,w22,w22,ror#9 + add w21,w21,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w25,w25,w21 // d+=h + eor w28,w28,w23 // Maj(a,b,c) + eor w17,w12,w17,ror#13 // Sigma0(a) + add w21,w21,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w21,w21,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w10,w10 // 7 +#endif + ldp w11,w12,[x1],#2*4 + add w21,w21,w17 // h+=Sigma0(a) + ror w16,w25,#6 + add w20,w20,w28 // h+=K[i] + eor w13,w25,w25,ror#14 + and w17,w26,w25 + bic w28,w27,w25 + add w20,w20,w10 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w21,w22 // a^b, b^c in next round + eor w16,w16,w13,ror#11 // Sigma1(e) + ror w13,w21,#2 + add w20,w20,w17 // h+=Ch(e,f,g) + eor w17,w21,w21,ror#9 + add w20,w20,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w24,w24,w20 // d+=h + eor w19,w19,w22 // Maj(a,b,c) + eor w17,w13,w17,ror#13 // Sigma0(a) + add w20,w20,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w20,w20,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w11,w11 // 8 +#endif + add w20,w20,w17 // h+=Sigma0(a) + ror w16,w24,#6 + add w27,w27,w19 // h+=K[i] + eor w14,w24,w24,ror#14 + and w17,w25,w24 + bic w19,w26,w24 + add w27,w27,w11 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w20,w21 // a^b, b^c in next round + eor w16,w16,w14,ror#11 // Sigma1(e) + ror w14,w20,#2 + add w27,w27,w17 // h+=Ch(e,f,g) + eor w17,w20,w20,ror#9 + add w27,w27,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w23,w23,w27 // d+=h + eor w28,w28,w21 // Maj(a,b,c) + eor w17,w14,w17,ror#13 // Sigma0(a) + add w27,w27,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w27,w27,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w12,w12 // 9 +#endif + ldp w13,w14,[x1],#2*4 + add w27,w27,w17 // h+=Sigma0(a) + ror w16,w23,#6 + add w26,w26,w28 // h+=K[i] + eor w15,w23,w23,ror#14 + and w17,w24,w23 + bic w28,w25,w23 + add w26,w26,w12 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w27,w20 // a^b, b^c in next round + eor w16,w16,w15,ror#11 // Sigma1(e) + ror w15,w27,#2 + add w26,w26,w17 // h+=Ch(e,f,g) + eor w17,w27,w27,ror#9 + add w26,w26,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w22,w22,w26 // d+=h + eor w19,w19,w20 // Maj(a,b,c) + eor w17,w15,w17,ror#13 // Sigma0(a) + add w26,w26,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w26,w26,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w13,w13 // 10 +#endif + add w26,w26,w17 // h+=Sigma0(a) + ror w16,w22,#6 + add w25,w25,w19 // h+=K[i] + eor w0,w22,w22,ror#14 + and w17,w23,w22 + bic w19,w24,w22 + add w25,w25,w13 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w26,w27 // a^b, b^c in next round + eor w16,w16,w0,ror#11 // Sigma1(e) + ror w0,w26,#2 + add w25,w25,w17 // h+=Ch(e,f,g) + eor w17,w26,w26,ror#9 + add w25,w25,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w21,w21,w25 // d+=h + eor w28,w28,w27 // Maj(a,b,c) + eor w17,w0,w17,ror#13 // Sigma0(a) + add w25,w25,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w25,w25,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w14,w14 // 11 +#endif + ldp w15,w0,[x1],#2*4 + add w25,w25,w17 // h+=Sigma0(a) + str w6,[sp,#12] + ror w16,w21,#6 + add w24,w24,w28 // h+=K[i] + eor w6,w21,w21,ror#14 + and w17,w22,w21 + bic w28,w23,w21 + add w24,w24,w14 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w25,w26 // a^b, b^c in next round + eor w16,w16,w6,ror#11 // Sigma1(e) + ror w6,w25,#2 + add w24,w24,w17 // h+=Ch(e,f,g) + eor w17,w25,w25,ror#9 + add w24,w24,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w20,w20,w24 // d+=h + eor w19,w19,w26 // Maj(a,b,c) + eor w17,w6,w17,ror#13 // Sigma0(a) + add w24,w24,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w24,w24,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w15,w15 // 12 +#endif + add w24,w24,w17 // h+=Sigma0(a) + str w7,[sp,#0] + ror w16,w20,#6 + add w23,w23,w19 // h+=K[i] + eor w7,w20,w20,ror#14 + and w17,w21,w20 + bic w19,w22,w20 + add w23,w23,w15 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w24,w25 // a^b, b^c in next round + eor w16,w16,w7,ror#11 // Sigma1(e) + ror w7,w24,#2 + add w23,w23,w17 // h+=Ch(e,f,g) + eor w17,w24,w24,ror#9 + add w23,w23,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w27,w27,w23 // d+=h + eor w28,w28,w25 // Maj(a,b,c) + eor w17,w7,w17,ror#13 // Sigma0(a) + add w23,w23,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w23,w23,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w0,w0 // 13 +#endif + ldp w1,w2,[x1] + add w23,w23,w17 // h+=Sigma0(a) + str w8,[sp,#4] + ror w16,w27,#6 + add w22,w22,w28 // h+=K[i] + eor w8,w27,w27,ror#14 + and w17,w20,w27 + bic w28,w21,w27 + add w22,w22,w0 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w23,w24 // a^b, b^c in next round + eor w16,w16,w8,ror#11 // Sigma1(e) + ror w8,w23,#2 + add w22,w22,w17 // h+=Ch(e,f,g) + eor w17,w23,w23,ror#9 + add w22,w22,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w26,w26,w22 // d+=h + eor w19,w19,w24 // Maj(a,b,c) + eor w17,w8,w17,ror#13 // Sigma0(a) + add w22,w22,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w22,w22,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w1,w1 // 14 +#endif + ldr w6,[sp,#12] + add w22,w22,w17 // h+=Sigma0(a) + str w9,[sp,#8] + ror w16,w26,#6 + add w21,w21,w19 // h+=K[i] + eor w9,w26,w26,ror#14 + and w17,w27,w26 + bic w19,w20,w26 + add w21,w21,w1 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w22,w23 // a^b, b^c in next round + eor w16,w16,w9,ror#11 // Sigma1(e) + ror w9,w22,#2 + add w21,w21,w17 // h+=Ch(e,f,g) + eor w17,w22,w22,ror#9 + add w21,w21,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w25,w25,w21 // d+=h + eor w28,w28,w23 // Maj(a,b,c) + eor w17,w9,w17,ror#13 // Sigma0(a) + add w21,w21,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w21,w21,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w2,w2 // 15 +#endif + ldr w7,[sp,#0] + add w21,w21,w17 // h+=Sigma0(a) + str w10,[sp,#12] + ror w16,w25,#6 + add w20,w20,w28 // h+=K[i] + ror w9,w4,#7 + and w17,w26,w25 + ror w8,w1,#17 + bic w28,w27,w25 + ror w10,w21,#2 + add w20,w20,w2 // h+=X[i] + eor w16,w16,w25,ror#11 + eor w9,w9,w4,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w21,w22 // a^b, b^c in next round + eor w16,w16,w25,ror#25 // Sigma1(e) + eor w10,w10,w21,ror#13 + add w20,w20,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w8,w8,w1,ror#19 + eor w9,w9,w4,lsr#3 // sigma0(X[i+1]) + add w20,w20,w16 // h+=Sigma1(e) + eor w19,w19,w22 // Maj(a,b,c) + eor w17,w10,w21,ror#22 // Sigma0(a) + eor w8,w8,w1,lsr#10 // sigma1(X[i+14]) + add w3,w3,w12 + add w24,w24,w20 // d+=h + add w20,w20,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w3,w3,w9 + add w20,w20,w17 // h+=Sigma0(a) + add w3,w3,w8 +Loop_16_xx: + ldr w8,[sp,#4] + str w11,[sp,#0] + ror w16,w24,#6 + add w27,w27,w19 // h+=K[i] + ror w10,w5,#7 + and w17,w25,w24 + ror w9,w2,#17 + bic w19,w26,w24 + ror w11,w20,#2 + add w27,w27,w3 // h+=X[i] + eor w16,w16,w24,ror#11 + eor w10,w10,w5,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w20,w21 // a^b, b^c in next round + eor w16,w16,w24,ror#25 // Sigma1(e) + eor w11,w11,w20,ror#13 + add w27,w27,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w9,w9,w2,ror#19 + eor w10,w10,w5,lsr#3 // sigma0(X[i+1]) + add w27,w27,w16 // h+=Sigma1(e) + eor w28,w28,w21 // Maj(a,b,c) + eor w17,w11,w20,ror#22 // Sigma0(a) + eor w9,w9,w2,lsr#10 // sigma1(X[i+14]) + add w4,w4,w13 + add w23,w23,w27 // d+=h + add w27,w27,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w4,w4,w10 + add w27,w27,w17 // h+=Sigma0(a) + add w4,w4,w9 + ldr w9,[sp,#8] + str w12,[sp,#4] + ror w16,w23,#6 + add w26,w26,w28 // h+=K[i] + ror w11,w6,#7 + and w17,w24,w23 + ror w10,w3,#17 + bic w28,w25,w23 + ror w12,w27,#2 + add w26,w26,w4 // h+=X[i] + eor w16,w16,w23,ror#11 + eor w11,w11,w6,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w27,w20 // a^b, b^c in next round + eor w16,w16,w23,ror#25 // Sigma1(e) + eor w12,w12,w27,ror#13 + add w26,w26,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w10,w10,w3,ror#19 + eor w11,w11,w6,lsr#3 // sigma0(X[i+1]) + add w26,w26,w16 // h+=Sigma1(e) + eor w19,w19,w20 // Maj(a,b,c) + eor w17,w12,w27,ror#22 // Sigma0(a) + eor w10,w10,w3,lsr#10 // sigma1(X[i+14]) + add w5,w5,w14 + add w22,w22,w26 // d+=h + add w26,w26,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w5,w5,w11 + add w26,w26,w17 // h+=Sigma0(a) + add w5,w5,w10 + ldr w10,[sp,#12] + str w13,[sp,#8] + ror w16,w22,#6 + add w25,w25,w19 // h+=K[i] + ror w12,w7,#7 + and w17,w23,w22 + ror w11,w4,#17 + bic w19,w24,w22 + ror w13,w26,#2 + add w25,w25,w5 // h+=X[i] + eor w16,w16,w22,ror#11 + eor w12,w12,w7,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w26,w27 // a^b, b^c in next round + eor w16,w16,w22,ror#25 // Sigma1(e) + eor w13,w13,w26,ror#13 + add w25,w25,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w11,w11,w4,ror#19 + eor w12,w12,w7,lsr#3 // sigma0(X[i+1]) + add w25,w25,w16 // h+=Sigma1(e) + eor w28,w28,w27 // Maj(a,b,c) + eor w17,w13,w26,ror#22 // Sigma0(a) + eor w11,w11,w4,lsr#10 // sigma1(X[i+14]) + add w6,w6,w15 + add w21,w21,w25 // d+=h + add w25,w25,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w6,w6,w12 + add w25,w25,w17 // h+=Sigma0(a) + add w6,w6,w11 + ldr w11,[sp,#0] + str w14,[sp,#12] + ror w16,w21,#6 + add w24,w24,w28 // h+=K[i] + ror w13,w8,#7 + and w17,w22,w21 + ror w12,w5,#17 + bic w28,w23,w21 + ror w14,w25,#2 + add w24,w24,w6 // h+=X[i] + eor w16,w16,w21,ror#11 + eor w13,w13,w8,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w25,w26 // a^b, b^c in next round + eor w16,w16,w21,ror#25 // Sigma1(e) + eor w14,w14,w25,ror#13 + add w24,w24,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w12,w12,w5,ror#19 + eor w13,w13,w8,lsr#3 // sigma0(X[i+1]) + add w24,w24,w16 // h+=Sigma1(e) + eor w19,w19,w26 // Maj(a,b,c) + eor w17,w14,w25,ror#22 // Sigma0(a) + eor w12,w12,w5,lsr#10 // sigma1(X[i+14]) + add w7,w7,w0 + add w20,w20,w24 // d+=h + add w24,w24,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w7,w7,w13 + add w24,w24,w17 // h+=Sigma0(a) + add w7,w7,w12 + ldr w12,[sp,#4] + str w15,[sp,#0] + ror w16,w20,#6 + add w23,w23,w19 // h+=K[i] + ror w14,w9,#7 + and w17,w21,w20 + ror w13,w6,#17 + bic w19,w22,w20 + ror w15,w24,#2 + add w23,w23,w7 // h+=X[i] + eor w16,w16,w20,ror#11 + eor w14,w14,w9,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w24,w25 // a^b, b^c in next round + eor w16,w16,w20,ror#25 // Sigma1(e) + eor w15,w15,w24,ror#13 + add w23,w23,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w13,w13,w6,ror#19 + eor w14,w14,w9,lsr#3 // sigma0(X[i+1]) + add w23,w23,w16 // h+=Sigma1(e) + eor w28,w28,w25 // Maj(a,b,c) + eor w17,w15,w24,ror#22 // Sigma0(a) + eor w13,w13,w6,lsr#10 // sigma1(X[i+14]) + add w8,w8,w1 + add w27,w27,w23 // d+=h + add w23,w23,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w8,w8,w14 + add w23,w23,w17 // h+=Sigma0(a) + add w8,w8,w13 + ldr w13,[sp,#8] + str w0,[sp,#4] + ror w16,w27,#6 + add w22,w22,w28 // h+=K[i] + ror w15,w10,#7 + and w17,w20,w27 + ror w14,w7,#17 + bic w28,w21,w27 + ror w0,w23,#2 + add w22,w22,w8 // h+=X[i] + eor w16,w16,w27,ror#11 + eor w15,w15,w10,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w23,w24 // a^b, b^c in next round + eor w16,w16,w27,ror#25 // Sigma1(e) + eor w0,w0,w23,ror#13 + add w22,w22,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w14,w14,w7,ror#19 + eor w15,w15,w10,lsr#3 // sigma0(X[i+1]) + add w22,w22,w16 // h+=Sigma1(e) + eor w19,w19,w24 // Maj(a,b,c) + eor w17,w0,w23,ror#22 // Sigma0(a) + eor w14,w14,w7,lsr#10 // sigma1(X[i+14]) + add w9,w9,w2 + add w26,w26,w22 // d+=h + add w22,w22,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w9,w9,w15 + add w22,w22,w17 // h+=Sigma0(a) + add w9,w9,w14 + ldr w14,[sp,#12] + str w1,[sp,#8] + ror w16,w26,#6 + add w21,w21,w19 // h+=K[i] + ror w0,w11,#7 + and w17,w27,w26 + ror w15,w8,#17 + bic w19,w20,w26 + ror w1,w22,#2 + add w21,w21,w9 // h+=X[i] + eor w16,w16,w26,ror#11 + eor w0,w0,w11,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w22,w23 // a^b, b^c in next round + eor w16,w16,w26,ror#25 // Sigma1(e) + eor w1,w1,w22,ror#13 + add w21,w21,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w15,w15,w8,ror#19 + eor w0,w0,w11,lsr#3 // sigma0(X[i+1]) + add w21,w21,w16 // h+=Sigma1(e) + eor w28,w28,w23 // Maj(a,b,c) + eor w17,w1,w22,ror#22 // Sigma0(a) + eor w15,w15,w8,lsr#10 // sigma1(X[i+14]) + add w10,w10,w3 + add w25,w25,w21 // d+=h + add w21,w21,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w10,w10,w0 + add w21,w21,w17 // h+=Sigma0(a) + add w10,w10,w15 + ldr w15,[sp,#0] + str w2,[sp,#12] + ror w16,w25,#6 + add w20,w20,w28 // h+=K[i] + ror w1,w12,#7 + and w17,w26,w25 + ror w0,w9,#17 + bic w28,w27,w25 + ror w2,w21,#2 + add w20,w20,w10 // h+=X[i] + eor w16,w16,w25,ror#11 + eor w1,w1,w12,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w21,w22 // a^b, b^c in next round + eor w16,w16,w25,ror#25 // Sigma1(e) + eor w2,w2,w21,ror#13 + add w20,w20,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w0,w0,w9,ror#19 + eor w1,w1,w12,lsr#3 // sigma0(X[i+1]) + add w20,w20,w16 // h+=Sigma1(e) + eor w19,w19,w22 // Maj(a,b,c) + eor w17,w2,w21,ror#22 // Sigma0(a) + eor w0,w0,w9,lsr#10 // sigma1(X[i+14]) + add w11,w11,w4 + add w24,w24,w20 // d+=h + add w20,w20,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w11,w11,w1 + add w20,w20,w17 // h+=Sigma0(a) + add w11,w11,w0 + ldr w0,[sp,#4] + str w3,[sp,#0] + ror w16,w24,#6 + add w27,w27,w19 // h+=K[i] + ror w2,w13,#7 + and w17,w25,w24 + ror w1,w10,#17 + bic w19,w26,w24 + ror w3,w20,#2 + add w27,w27,w11 // h+=X[i] + eor w16,w16,w24,ror#11 + eor w2,w2,w13,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w20,w21 // a^b, b^c in next round + eor w16,w16,w24,ror#25 // Sigma1(e) + eor w3,w3,w20,ror#13 + add w27,w27,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w1,w1,w10,ror#19 + eor w2,w2,w13,lsr#3 // sigma0(X[i+1]) + add w27,w27,w16 // h+=Sigma1(e) + eor w28,w28,w21 // Maj(a,b,c) + eor w17,w3,w20,ror#22 // Sigma0(a) + eor w1,w1,w10,lsr#10 // sigma1(X[i+14]) + add w12,w12,w5 + add w23,w23,w27 // d+=h + add w27,w27,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w12,w12,w2 + add w27,w27,w17 // h+=Sigma0(a) + add w12,w12,w1 + ldr w1,[sp,#8] + str w4,[sp,#4] + ror w16,w23,#6 + add w26,w26,w28 // h+=K[i] + ror w3,w14,#7 + and w17,w24,w23 + ror w2,w11,#17 + bic w28,w25,w23 + ror w4,w27,#2 + add w26,w26,w12 // h+=X[i] + eor w16,w16,w23,ror#11 + eor w3,w3,w14,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w27,w20 // a^b, b^c in next round + eor w16,w16,w23,ror#25 // Sigma1(e) + eor w4,w4,w27,ror#13 + add w26,w26,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w2,w2,w11,ror#19 + eor w3,w3,w14,lsr#3 // sigma0(X[i+1]) + add w26,w26,w16 // h+=Sigma1(e) + eor w19,w19,w20 // Maj(a,b,c) + eor w17,w4,w27,ror#22 // Sigma0(a) + eor w2,w2,w11,lsr#10 // sigma1(X[i+14]) + add w13,w13,w6 + add w22,w22,w26 // d+=h + add w26,w26,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w13,w13,w3 + add w26,w26,w17 // h+=Sigma0(a) + add w13,w13,w2 + ldr w2,[sp,#12] + str w5,[sp,#8] + ror w16,w22,#6 + add w25,w25,w19 // h+=K[i] + ror w4,w15,#7 + and w17,w23,w22 + ror w3,w12,#17 + bic w19,w24,w22 + ror w5,w26,#2 + add w25,w25,w13 // h+=X[i] + eor w16,w16,w22,ror#11 + eor w4,w4,w15,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w26,w27 // a^b, b^c in next round + eor w16,w16,w22,ror#25 // Sigma1(e) + eor w5,w5,w26,ror#13 + add w25,w25,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w3,w3,w12,ror#19 + eor w4,w4,w15,lsr#3 // sigma0(X[i+1]) + add w25,w25,w16 // h+=Sigma1(e) + eor w28,w28,w27 // Maj(a,b,c) + eor w17,w5,w26,ror#22 // Sigma0(a) + eor w3,w3,w12,lsr#10 // sigma1(X[i+14]) + add w14,w14,w7 + add w21,w21,w25 // d+=h + add w25,w25,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w14,w14,w4 + add w25,w25,w17 // h+=Sigma0(a) + add w14,w14,w3 + ldr w3,[sp,#0] + str w6,[sp,#12] + ror w16,w21,#6 + add w24,w24,w28 // h+=K[i] + ror w5,w0,#7 + and w17,w22,w21 + ror w4,w13,#17 + bic w28,w23,w21 + ror w6,w25,#2 + add w24,w24,w14 // h+=X[i] + eor w16,w16,w21,ror#11 + eor w5,w5,w0,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w25,w26 // a^b, b^c in next round + eor w16,w16,w21,ror#25 // Sigma1(e) + eor w6,w6,w25,ror#13 + add w24,w24,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w4,w4,w13,ror#19 + eor w5,w5,w0,lsr#3 // sigma0(X[i+1]) + add w24,w24,w16 // h+=Sigma1(e) + eor w19,w19,w26 // Maj(a,b,c) + eor w17,w6,w25,ror#22 // Sigma0(a) + eor w4,w4,w13,lsr#10 // sigma1(X[i+14]) + add w15,w15,w8 + add w20,w20,w24 // d+=h + add w24,w24,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w15,w15,w5 + add w24,w24,w17 // h+=Sigma0(a) + add w15,w15,w4 + ldr w4,[sp,#4] + str w7,[sp,#0] + ror w16,w20,#6 + add w23,w23,w19 // h+=K[i] + ror w6,w1,#7 + and w17,w21,w20 + ror w5,w14,#17 + bic w19,w22,w20 + ror w7,w24,#2 + add w23,w23,w15 // h+=X[i] + eor w16,w16,w20,ror#11 + eor w6,w6,w1,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w24,w25 // a^b, b^c in next round + eor w16,w16,w20,ror#25 // Sigma1(e) + eor w7,w7,w24,ror#13 + add w23,w23,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w5,w5,w14,ror#19 + eor w6,w6,w1,lsr#3 // sigma0(X[i+1]) + add w23,w23,w16 // h+=Sigma1(e) + eor w28,w28,w25 // Maj(a,b,c) + eor w17,w7,w24,ror#22 // Sigma0(a) + eor w5,w5,w14,lsr#10 // sigma1(X[i+14]) + add w0,w0,w9 + add w27,w27,w23 // d+=h + add w23,w23,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w0,w0,w6 + add w23,w23,w17 // h+=Sigma0(a) + add w0,w0,w5 + ldr w5,[sp,#8] + str w8,[sp,#4] + ror w16,w27,#6 + add w22,w22,w28 // h+=K[i] + ror w7,w2,#7 + and w17,w20,w27 + ror w6,w15,#17 + bic w28,w21,w27 + ror w8,w23,#2 + add w22,w22,w0 // h+=X[i] + eor w16,w16,w27,ror#11 + eor w7,w7,w2,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w23,w24 // a^b, b^c in next round + eor w16,w16,w27,ror#25 // Sigma1(e) + eor w8,w8,w23,ror#13 + add w22,w22,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w6,w6,w15,ror#19 + eor w7,w7,w2,lsr#3 // sigma0(X[i+1]) + add w22,w22,w16 // h+=Sigma1(e) + eor w19,w19,w24 // Maj(a,b,c) + eor w17,w8,w23,ror#22 // Sigma0(a) + eor w6,w6,w15,lsr#10 // sigma1(X[i+14]) + add w1,w1,w10 + add w26,w26,w22 // d+=h + add w22,w22,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w1,w1,w7 + add w22,w22,w17 // h+=Sigma0(a) + add w1,w1,w6 + ldr w6,[sp,#12] + str w9,[sp,#8] + ror w16,w26,#6 + add w21,w21,w19 // h+=K[i] + ror w8,w3,#7 + and w17,w27,w26 + ror w7,w0,#17 + bic w19,w20,w26 + ror w9,w22,#2 + add w21,w21,w1 // h+=X[i] + eor w16,w16,w26,ror#11 + eor w8,w8,w3,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w22,w23 // a^b, b^c in next round + eor w16,w16,w26,ror#25 // Sigma1(e) + eor w9,w9,w22,ror#13 + add w21,w21,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w7,w7,w0,ror#19 + eor w8,w8,w3,lsr#3 // sigma0(X[i+1]) + add w21,w21,w16 // h+=Sigma1(e) + eor w28,w28,w23 // Maj(a,b,c) + eor w17,w9,w22,ror#22 // Sigma0(a) + eor w7,w7,w0,lsr#10 // sigma1(X[i+14]) + add w2,w2,w11 + add w25,w25,w21 // d+=h + add w21,w21,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w2,w2,w8 + add w21,w21,w17 // h+=Sigma0(a) + add w2,w2,w7 + ldr w7,[sp,#0] + str w10,[sp,#12] + ror w16,w25,#6 + add w20,w20,w28 // h+=K[i] + ror w9,w4,#7 + and w17,w26,w25 + ror w8,w1,#17 + bic w28,w27,w25 + ror w10,w21,#2 + add w20,w20,w2 // h+=X[i] + eor w16,w16,w25,ror#11 + eor w9,w9,w4,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w21,w22 // a^b, b^c in next round + eor w16,w16,w25,ror#25 // Sigma1(e) + eor w10,w10,w21,ror#13 + add w20,w20,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w8,w8,w1,ror#19 + eor w9,w9,w4,lsr#3 // sigma0(X[i+1]) + add w20,w20,w16 // h+=Sigma1(e) + eor w19,w19,w22 // Maj(a,b,c) + eor w17,w10,w21,ror#22 // Sigma0(a) + eor w8,w8,w1,lsr#10 // sigma1(X[i+14]) + add w3,w3,w12 + add w24,w24,w20 // d+=h + add w20,w20,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w3,w3,w9 + add w20,w20,w17 // h+=Sigma0(a) + add w3,w3,w8 + cbnz w19,Loop_16_xx + + ldp x0,x2,[x29,#96] + ldr x1,[x29,#112] + sub x30,x30,#260 // rewind + + ldp w3,w4,[x0] + ldp w5,w6,[x0,#2*4] + add x1,x1,#14*4 // advance input pointer + ldp w7,w8,[x0,#4*4] + add w20,w20,w3 + ldp w9,w10,[x0,#6*4] + add w21,w21,w4 + add w22,w22,w5 + add w23,w23,w6 + stp w20,w21,[x0] + add w24,w24,w7 + add w25,w25,w8 + stp w22,w23,[x0,#2*4] + add w26,w26,w9 + add w27,w27,w10 + cmp x1,x2 + stp w24,w25,[x0,#4*4] + stp w26,w27,[x0,#6*4] + b.ne Loop + + ldp x19,x20,[x29,#16] + add sp,sp,#4*4 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#128 + AARCH64_VALIDATE_LINK_REGISTER + ret + + +.section .rodata +.align 6 + +LK256: +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 +.long 0 //terminator + +.byte 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.align 2 +.text +#ifndef __KERNEL__ +.def sha256_block_armv8 + .type 32 +.endef +.align 6 +sha256_block_armv8: +Lv8_entry: + // Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later. + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ld1 {v0.4s,v1.4s},[x0] + adrp x3,LK256 + add x3,x3,:lo12:LK256 + +Loop_hw: + ld1 {v4.16b,v5.16b,v6.16b,v7.16b},[x1],#64 + sub x2,x2,#1 + ld1 {v16.4s},[x3],#16 + rev32 v4.16b,v4.16b + rev32 v5.16b,v5.16b + rev32 v6.16b,v6.16b + rev32 v7.16b,v7.16b + orr v18.16b,v0.16b,v0.16b // offload + orr v19.16b,v1.16b,v1.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v4.4s +.long 0x5e2828a4 //sha256su0 v4.16b,v5.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.long 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s +.long 0x5e0760c4 //sha256su1 v4.16b,v6.16b,v7.16b + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v5.4s +.long 0x5e2828c5 //sha256su0 v5.16b,v6.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.long 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s +.long 0x5e0460e5 //sha256su1 v5.16b,v7.16b,v4.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v6.4s +.long 0x5e2828e6 //sha256su0 v6.16b,v7.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.long 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s +.long 0x5e056086 //sha256su1 v6.16b,v4.16b,v5.16b + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v7.4s +.long 0x5e282887 //sha256su0 v7.16b,v4.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.long 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s +.long 0x5e0660a7 //sha256su1 v7.16b,v5.16b,v6.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v4.4s +.long 0x5e2828a4 //sha256su0 v4.16b,v5.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.long 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s +.long 0x5e0760c4 //sha256su1 v4.16b,v6.16b,v7.16b + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v5.4s +.long 0x5e2828c5 //sha256su0 v5.16b,v6.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.long 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s +.long 0x5e0460e5 //sha256su1 v5.16b,v7.16b,v4.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v6.4s +.long 0x5e2828e6 //sha256su0 v6.16b,v7.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.long 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s +.long 0x5e056086 //sha256su1 v6.16b,v4.16b,v5.16b + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v7.4s +.long 0x5e282887 //sha256su0 v7.16b,v4.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.long 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s +.long 0x5e0660a7 //sha256su1 v7.16b,v5.16b,v6.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v4.4s +.long 0x5e2828a4 //sha256su0 v4.16b,v5.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.long 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s +.long 0x5e0760c4 //sha256su1 v4.16b,v6.16b,v7.16b + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v5.4s +.long 0x5e2828c5 //sha256su0 v5.16b,v6.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.long 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s +.long 0x5e0460e5 //sha256su1 v5.16b,v7.16b,v4.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v6.4s +.long 0x5e2828e6 //sha256su0 v6.16b,v7.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.long 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s +.long 0x5e056086 //sha256su1 v6.16b,v4.16b,v5.16b + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v7.4s +.long 0x5e282887 //sha256su0 v7.16b,v4.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.long 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s +.long 0x5e0660a7 //sha256su1 v7.16b,v5.16b,v6.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v4.4s + orr v2.16b,v0.16b,v0.16b +.long 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.long 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s + + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v5.4s + orr v2.16b,v0.16b,v0.16b +.long 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.long 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s + + ld1 {v17.4s},[x3] + add v16.4s,v16.4s,v6.4s + sub x3,x3,#64*4-16 // rewind + orr v2.16b,v0.16b,v0.16b +.long 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.long 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s + + add v17.4s,v17.4s,v7.4s + orr v2.16b,v0.16b,v0.16b +.long 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.long 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s + + add v0.4s,v0.4s,v18.4s + add v1.4s,v1.4s,v19.4s + + cbnz x2,Loop_hw + + st1 {v0.4s,v1.4s},[x0] + + ldr x29,[sp],#16 + ret + +#endif +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(_WIN32) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/sha256-x86_64-elf.S temporalio-1.3.0/vendor/ring/pregenerated/sha256-x86_64-elf.S --- temporalio-1.3.0/vendor/ring/pregenerated/sha256-x86_64-elf.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/sha256-x86_64-elf.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,27 +1,26 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__ELF__) .text -.extern GFp_ia32cap_P -.hidden GFp_ia32cap_P -.globl GFp_sha256_block_data_order -.hidden GFp_sha256_block_data_order -.type GFp_sha256_block_data_order,@function +.extern OPENSSL_ia32cap_P +.hidden OPENSSL_ia32cap_P +.globl sha256_block_data_order +.hidden sha256_block_data_order +.type sha256_block_data_order,@function .align 16 -GFp_sha256_block_data_order: +sha256_block_data_order: .cfi_startproc - leaq GFp_ia32cap_P(%rip),%r11 +_CET_ENDBR + leaq OPENSSL_ia32cap_P(%rip),%r11 movl 0(%r11),%r9d movl 4(%r11),%r10d movl 8(%r11),%r11d + testl $536870912,%r11d + jnz .Lshaext_shortcut andl $1073741824,%r9d andl $268435968,%r10d orl %r9d,%r10d @@ -1732,9 +1731,10 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Lepilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_sha256_block_data_order,.-GFp_sha256_block_data_order +.size sha256_block_data_order,.-sha256_block_data_order +.section .rodata .align 64 .type K256,@object K256: @@ -1778,9 +1778,219 @@ .long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 .long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 .byte 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.type GFp_sha256_block_data_order_ssse3,@function +.text +.type sha256_block_data_order_shaext,@function +.align 64 +sha256_block_data_order_shaext: +.cfi_startproc +.Lshaext_shortcut: + leaq K256+128(%rip),%rcx + movdqu (%rdi),%xmm1 + movdqu 16(%rdi),%xmm2 + movdqa 512-128(%rcx),%xmm7 + + pshufd $0x1b,%xmm1,%xmm0 + pshufd $0xb1,%xmm1,%xmm1 + pshufd $0x1b,%xmm2,%xmm2 + movdqa %xmm7,%xmm8 +.byte 102,15,58,15,202,8 + punpcklqdq %xmm0,%xmm2 + jmp .Loop_shaext + +.align 16 +.Loop_shaext: + movdqu (%rsi),%xmm3 + movdqu 16(%rsi),%xmm4 + movdqu 32(%rsi),%xmm5 +.byte 102,15,56,0,223 + movdqu 48(%rsi),%xmm6 + + movdqa 0-128(%rcx),%xmm0 + paddd %xmm3,%xmm0 +.byte 102,15,56,0,231 + movdqa %xmm2,%xmm10 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + nop + movdqa %xmm1,%xmm9 +.byte 15,56,203,202 + + movdqa 32-128(%rcx),%xmm0 + paddd %xmm4,%xmm0 +.byte 102,15,56,0,239 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + leaq 64(%rsi),%rsi +.byte 15,56,204,220 +.byte 15,56,203,202 + + movdqa 64-128(%rcx),%xmm0 + paddd %xmm5,%xmm0 +.byte 102,15,56,0,247 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm6,%xmm7 +.byte 102,15,58,15,253,4 + nop + paddd %xmm7,%xmm3 +.byte 15,56,204,229 +.byte 15,56,203,202 + + movdqa 96-128(%rcx),%xmm0 + paddd %xmm6,%xmm0 +.byte 15,56,205,222 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm3,%xmm7 +.byte 102,15,58,15,254,4 + nop + paddd %xmm7,%xmm4 +.byte 15,56,204,238 +.byte 15,56,203,202 + movdqa 128-128(%rcx),%xmm0 + paddd %xmm3,%xmm0 +.byte 15,56,205,227 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm4,%xmm7 +.byte 102,15,58,15,251,4 + nop + paddd %xmm7,%xmm5 +.byte 15,56,204,243 +.byte 15,56,203,202 + movdqa 160-128(%rcx),%xmm0 + paddd %xmm4,%xmm0 +.byte 15,56,205,236 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm5,%xmm7 +.byte 102,15,58,15,252,4 + nop + paddd %xmm7,%xmm6 +.byte 15,56,204,220 +.byte 15,56,203,202 + movdqa 192-128(%rcx),%xmm0 + paddd %xmm5,%xmm0 +.byte 15,56,205,245 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm6,%xmm7 +.byte 102,15,58,15,253,4 + nop + paddd %xmm7,%xmm3 +.byte 15,56,204,229 +.byte 15,56,203,202 + movdqa 224-128(%rcx),%xmm0 + paddd %xmm6,%xmm0 +.byte 15,56,205,222 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm3,%xmm7 +.byte 102,15,58,15,254,4 + nop + paddd %xmm7,%xmm4 +.byte 15,56,204,238 +.byte 15,56,203,202 + movdqa 256-128(%rcx),%xmm0 + paddd %xmm3,%xmm0 +.byte 15,56,205,227 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm4,%xmm7 +.byte 102,15,58,15,251,4 + nop + paddd %xmm7,%xmm5 +.byte 15,56,204,243 +.byte 15,56,203,202 + movdqa 288-128(%rcx),%xmm0 + paddd %xmm4,%xmm0 +.byte 15,56,205,236 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm5,%xmm7 +.byte 102,15,58,15,252,4 + nop + paddd %xmm7,%xmm6 +.byte 15,56,204,220 +.byte 15,56,203,202 + movdqa 320-128(%rcx),%xmm0 + paddd %xmm5,%xmm0 +.byte 15,56,205,245 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm6,%xmm7 +.byte 102,15,58,15,253,4 + nop + paddd %xmm7,%xmm3 +.byte 15,56,204,229 +.byte 15,56,203,202 + movdqa 352-128(%rcx),%xmm0 + paddd %xmm6,%xmm0 +.byte 15,56,205,222 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm3,%xmm7 +.byte 102,15,58,15,254,4 + nop + paddd %xmm7,%xmm4 +.byte 15,56,204,238 +.byte 15,56,203,202 + movdqa 384-128(%rcx),%xmm0 + paddd %xmm3,%xmm0 +.byte 15,56,205,227 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm4,%xmm7 +.byte 102,15,58,15,251,4 + nop + paddd %xmm7,%xmm5 +.byte 15,56,204,243 +.byte 15,56,203,202 + movdqa 416-128(%rcx),%xmm0 + paddd %xmm4,%xmm0 +.byte 15,56,205,236 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm5,%xmm7 +.byte 102,15,58,15,252,4 +.byte 15,56,203,202 + paddd %xmm7,%xmm6 + + movdqa 448-128(%rcx),%xmm0 + paddd %xmm5,%xmm0 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 +.byte 15,56,205,245 + movdqa %xmm8,%xmm7 +.byte 15,56,203,202 + + movdqa 480-128(%rcx),%xmm0 + paddd %xmm6,%xmm0 + nop +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + decq %rdx + nop +.byte 15,56,203,202 + + paddd %xmm10,%xmm2 + paddd %xmm9,%xmm1 + jnz .Loop_shaext + + pshufd $0xb1,%xmm2,%xmm2 + pshufd $0x1b,%xmm1,%xmm7 + pshufd $0xb1,%xmm1,%xmm1 + punpckhqdq %xmm2,%xmm1 +.byte 102,15,58,15,215,8 + + movdqu %xmm1,(%rdi) + movdqu %xmm2,16(%rdi) + ret +.cfi_endproc +.size sha256_block_data_order_shaext,.-sha256_block_data_order_shaext +.type sha256_block_data_order_ssse3,@function .align 64 -GFp_sha256_block_data_order_ssse3: +sha256_block_data_order_ssse3: .cfi_startproc .Lssse3_shortcut: movq %rsp,%rax @@ -2888,12 +3098,12 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Lepilogue_ssse3: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_sha256_block_data_order_ssse3,.-GFp_sha256_block_data_order_ssse3 -.type GFp_sha256_block_data_order_avx,@function +.size sha256_block_data_order_ssse3,.-sha256_block_data_order_ssse3 +.type sha256_block_data_order_avx,@function .align 64 -GFp_sha256_block_data_order_avx: +sha256_block_data_order_avx: .cfi_startproc .Lavx_shortcut: movq %rsp,%rax @@ -3963,8 +4173,7 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Lepilogue_avx: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_sha256_block_data_order_avx,.-GFp_sha256_block_data_order_avx +.size sha256_block_data_order_avx,.-sha256_block_data_order_avx #endif -.section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/sha256-x86_64-macosx.S temporalio-1.3.0/vendor/ring/pregenerated/sha256-x86_64-macosx.S --- temporalio-1.3.0/vendor/ring/pregenerated/sha256-x86_64-macosx.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/sha256-x86_64-macosx.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,26 +1,25 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__APPLE__) .text -.globl _GFp_sha256_block_data_order -.private_extern _GFp_sha256_block_data_order +.globl _sha256_block_data_order +.private_extern _sha256_block_data_order .p2align 4 -_GFp_sha256_block_data_order: +_sha256_block_data_order: - leaq _GFp_ia32cap_P(%rip),%r11 +_CET_ENDBR + leaq _OPENSSL_ia32cap_P(%rip),%r11 movl 0(%r11),%r9d movl 4(%r11),%r10d movl 8(%r11),%r11d + testl $536870912,%r11d + jnz L$shaext_shortcut andl $1073741824,%r9d andl $268435968,%r10d orl %r9d,%r10d @@ -1731,9 +1730,10 @@ leaq (%rsi),%rsp L$epilogue: - .byte 0xf3,0xc3 + ret +.section __DATA,__const .p2align 6 K256: @@ -1777,9 +1777,219 @@ .long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 .long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 .byte 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.text + +.p2align 6 +sha256_block_data_order_shaext: + +L$shaext_shortcut: + leaq K256+128(%rip),%rcx + movdqu (%rdi),%xmm1 + movdqu 16(%rdi),%xmm2 + movdqa 512-128(%rcx),%xmm7 + + pshufd $0x1b,%xmm1,%xmm0 + pshufd $0xb1,%xmm1,%xmm1 + pshufd $0x1b,%xmm2,%xmm2 + movdqa %xmm7,%xmm8 +.byte 102,15,58,15,202,8 + punpcklqdq %xmm0,%xmm2 + jmp L$oop_shaext + +.p2align 4 +L$oop_shaext: + movdqu (%rsi),%xmm3 + movdqu 16(%rsi),%xmm4 + movdqu 32(%rsi),%xmm5 +.byte 102,15,56,0,223 + movdqu 48(%rsi),%xmm6 + + movdqa 0-128(%rcx),%xmm0 + paddd %xmm3,%xmm0 +.byte 102,15,56,0,231 + movdqa %xmm2,%xmm10 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + nop + movdqa %xmm1,%xmm9 +.byte 15,56,203,202 + + movdqa 32-128(%rcx),%xmm0 + paddd %xmm4,%xmm0 +.byte 102,15,56,0,239 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + leaq 64(%rsi),%rsi +.byte 15,56,204,220 +.byte 15,56,203,202 + + movdqa 64-128(%rcx),%xmm0 + paddd %xmm5,%xmm0 +.byte 102,15,56,0,247 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm6,%xmm7 +.byte 102,15,58,15,253,4 + nop + paddd %xmm7,%xmm3 +.byte 15,56,204,229 +.byte 15,56,203,202 + + movdqa 96-128(%rcx),%xmm0 + paddd %xmm6,%xmm0 +.byte 15,56,205,222 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm3,%xmm7 +.byte 102,15,58,15,254,4 + nop + paddd %xmm7,%xmm4 +.byte 15,56,204,238 +.byte 15,56,203,202 + movdqa 128-128(%rcx),%xmm0 + paddd %xmm3,%xmm0 +.byte 15,56,205,227 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm4,%xmm7 +.byte 102,15,58,15,251,4 + nop + paddd %xmm7,%xmm5 +.byte 15,56,204,243 +.byte 15,56,203,202 + movdqa 160-128(%rcx),%xmm0 + paddd %xmm4,%xmm0 +.byte 15,56,205,236 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm5,%xmm7 +.byte 102,15,58,15,252,4 + nop + paddd %xmm7,%xmm6 +.byte 15,56,204,220 +.byte 15,56,203,202 + movdqa 192-128(%rcx),%xmm0 + paddd %xmm5,%xmm0 +.byte 15,56,205,245 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm6,%xmm7 +.byte 102,15,58,15,253,4 + nop + paddd %xmm7,%xmm3 +.byte 15,56,204,229 +.byte 15,56,203,202 + movdqa 224-128(%rcx),%xmm0 + paddd %xmm6,%xmm0 +.byte 15,56,205,222 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm3,%xmm7 +.byte 102,15,58,15,254,4 + nop + paddd %xmm7,%xmm4 +.byte 15,56,204,238 +.byte 15,56,203,202 + movdqa 256-128(%rcx),%xmm0 + paddd %xmm3,%xmm0 +.byte 15,56,205,227 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm4,%xmm7 +.byte 102,15,58,15,251,4 + nop + paddd %xmm7,%xmm5 +.byte 15,56,204,243 +.byte 15,56,203,202 + movdqa 288-128(%rcx),%xmm0 + paddd %xmm4,%xmm0 +.byte 15,56,205,236 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm5,%xmm7 +.byte 102,15,58,15,252,4 + nop + paddd %xmm7,%xmm6 +.byte 15,56,204,220 +.byte 15,56,203,202 + movdqa 320-128(%rcx),%xmm0 + paddd %xmm5,%xmm0 +.byte 15,56,205,245 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm6,%xmm7 +.byte 102,15,58,15,253,4 + nop + paddd %xmm7,%xmm3 +.byte 15,56,204,229 +.byte 15,56,203,202 + movdqa 352-128(%rcx),%xmm0 + paddd %xmm6,%xmm0 +.byte 15,56,205,222 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm3,%xmm7 +.byte 102,15,58,15,254,4 + nop + paddd %xmm7,%xmm4 +.byte 15,56,204,238 +.byte 15,56,203,202 + movdqa 384-128(%rcx),%xmm0 + paddd %xmm3,%xmm0 +.byte 15,56,205,227 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm4,%xmm7 +.byte 102,15,58,15,251,4 + nop + paddd %xmm7,%xmm5 +.byte 15,56,204,243 +.byte 15,56,203,202 + movdqa 416-128(%rcx),%xmm0 + paddd %xmm4,%xmm0 +.byte 15,56,205,236 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm5,%xmm7 +.byte 102,15,58,15,252,4 +.byte 15,56,203,202 + paddd %xmm7,%xmm6 + + movdqa 448-128(%rcx),%xmm0 + paddd %xmm5,%xmm0 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 +.byte 15,56,205,245 + movdqa %xmm8,%xmm7 +.byte 15,56,203,202 + + movdqa 480-128(%rcx),%xmm0 + paddd %xmm6,%xmm0 + nop +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + decq %rdx + nop +.byte 15,56,203,202 + + paddd %xmm10,%xmm2 + paddd %xmm9,%xmm1 + jnz L$oop_shaext + + pshufd $0xb1,%xmm2,%xmm2 + pshufd $0x1b,%xmm1,%xmm7 + pshufd $0xb1,%xmm1,%xmm1 + punpckhqdq %xmm2,%xmm1 +.byte 102,15,58,15,215,8 + + movdqu %xmm1,(%rdi) + movdqu %xmm2,16(%rdi) + ret + + .p2align 6 -GFp_sha256_block_data_order_ssse3: +sha256_block_data_order_ssse3: L$ssse3_shortcut: movq %rsp,%rax @@ -2887,12 +3097,12 @@ leaq (%rsi),%rsp L$epilogue_ssse3: - .byte 0xf3,0xc3 + ret .p2align 6 -GFp_sha256_block_data_order_avx: +sha256_block_data_order_avx: L$avx_shortcut: movq %rsp,%rax @@ -3962,7 +4172,7 @@ leaq (%rsi),%rsp L$epilogue_avx: - .byte 0xf3,0xc3 + ret #endif Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/pregenerated/sha256-x86_64-nasm.obj and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/pregenerated/sha256-x86_64-nasm.obj differ diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv4-ios32.S temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv4-ios32.S --- temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv4-ios32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv4-ios32.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,1887 +0,0 @@ -// This file is generated from a similarly-named Perl script in the BoringSSL -// source tree. Do not edit by hand. - -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif - -#if !defined(OPENSSL_NO_ASM) -@ Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. -@ -@ Licensed under the OpenSSL license (the "License"). You may not use -@ this file except in compliance with the License. You can obtain a copy -@ in the file LICENSE in the source distribution or at -@ https://www.openssl.org/source/license.html - - -@ ==================================================================== -@ Written by Andy Polyakov for the OpenSSL -@ project. The module is, however, dual licensed under OpenSSL and -@ CRYPTOGAMS licenses depending on where you obtain it. For further -@ details see http://www.openssl.org/~appro/cryptogams/. -@ -@ Permission to use under GPL terms is granted. -@ ==================================================================== - -@ SHA512 block procedure for ARMv4. September 2007. - -@ This code is ~4.5 (four and a half) times faster than code generated -@ by gcc 3.4 and it spends ~72 clock cycles per byte [on single-issue -@ Xscale PXA250 core]. -@ -@ July 2010. -@ -@ Rescheduling for dual-issue pipeline resulted in 6% improvement on -@ Cortex A8 core and ~40 cycles per processed byte. - -@ February 2011. -@ -@ Profiler-assisted and platform-specific optimization resulted in 7% -@ improvement on Coxtex A8 core and ~38 cycles per byte. - -@ March 2011. -@ -@ Add NEON implementation. On Cortex A8 it was measured to process -@ one byte in 23.3 cycles or ~60% faster than integer-only code. - -@ August 2012. -@ -@ Improve NEON performance by 12% on Snapdragon S4. In absolute -@ terms it's 22.6 cycles per byte, which is disappointing result. -@ Technical writers asserted that 3-way S4 pipeline can sustain -@ multiple NEON instructions per cycle, but dual NEON issue could -@ not be observed, see http://www.openssl.org/~appro/Snapdragon-S4.html -@ for further details. On side note Cortex-A15 processes one byte in -@ 16 cycles. - -@ Byte order [in]dependence. ========================================= -@ -@ Originally caller was expected to maintain specific *dword* order in -@ h[0-7], namely with most significant dword at *lower* address, which -@ was reflected in below two parameters as 0 and 4. Now caller is -@ expected to maintain native byte order for whole 64-bit values. -#ifndef __KERNEL__ -# include -# define VFP_ABI_PUSH vstmdb sp!,{d8-d15} -# define VFP_ABI_POP vldmia sp!,{d8-d15} -#else -# define __ARM_ARCH__ __LINUX_ARM_ARCH__ -# define __ARM_MAX_ARCH__ 7 -# define VFP_ABI_PUSH -# define VFP_ABI_POP -#endif - -@ Silence ARMv8 deprecated IT instruction warnings. This file is used by both -@ ARMv7 and ARMv8 processors and does not use ARMv8 instructions. - - -#ifdef __ARMEL__ -# define LO 0 -# define HI 4 -# define WORD64(hi0,lo0,hi1,lo1) .word lo0,hi0, lo1,hi1 -#else -# define HI 0 -# define LO 4 -# define WORD64(hi0,lo0,hi1,lo1) .word hi0,lo0, hi1,lo1 -#endif - -.text -#if defined(__thumb2__) -.syntax unified -.thumb -# define adrl adr -#else -.code 32 -#endif - - -.align 5 -K512: - WORD64(0x428a2f98,0xd728ae22, 0x71374491,0x23ef65cd) - WORD64(0xb5c0fbcf,0xec4d3b2f, 0xe9b5dba5,0x8189dbbc) - WORD64(0x3956c25b,0xf348b538, 0x59f111f1,0xb605d019) - WORD64(0x923f82a4,0xaf194f9b, 0xab1c5ed5,0xda6d8118) - WORD64(0xd807aa98,0xa3030242, 0x12835b01,0x45706fbe) - WORD64(0x243185be,0x4ee4b28c, 0x550c7dc3,0xd5ffb4e2) - WORD64(0x72be5d74,0xf27b896f, 0x80deb1fe,0x3b1696b1) - WORD64(0x9bdc06a7,0x25c71235, 0xc19bf174,0xcf692694) - WORD64(0xe49b69c1,0x9ef14ad2, 0xefbe4786,0x384f25e3) - WORD64(0x0fc19dc6,0x8b8cd5b5, 0x240ca1cc,0x77ac9c65) - WORD64(0x2de92c6f,0x592b0275, 0x4a7484aa,0x6ea6e483) - WORD64(0x5cb0a9dc,0xbd41fbd4, 0x76f988da,0x831153b5) - WORD64(0x983e5152,0xee66dfab, 0xa831c66d,0x2db43210) - WORD64(0xb00327c8,0x98fb213f, 0xbf597fc7,0xbeef0ee4) - WORD64(0xc6e00bf3,0x3da88fc2, 0xd5a79147,0x930aa725) - WORD64(0x06ca6351,0xe003826f, 0x14292967,0x0a0e6e70) - WORD64(0x27b70a85,0x46d22ffc, 0x2e1b2138,0x5c26c926) - WORD64(0x4d2c6dfc,0x5ac42aed, 0x53380d13,0x9d95b3df) - WORD64(0x650a7354,0x8baf63de, 0x766a0abb,0x3c77b2a8) - WORD64(0x81c2c92e,0x47edaee6, 0x92722c85,0x1482353b) - WORD64(0xa2bfe8a1,0x4cf10364, 0xa81a664b,0xbc423001) - WORD64(0xc24b8b70,0xd0f89791, 0xc76c51a3,0x0654be30) - WORD64(0xd192e819,0xd6ef5218, 0xd6990624,0x5565a910) - WORD64(0xf40e3585,0x5771202a, 0x106aa070,0x32bbd1b8) - WORD64(0x19a4c116,0xb8d2d0c8, 0x1e376c08,0x5141ab53) - WORD64(0x2748774c,0xdf8eeb99, 0x34b0bcb5,0xe19b48a8) - WORD64(0x391c0cb3,0xc5c95a63, 0x4ed8aa4a,0xe3418acb) - WORD64(0x5b9cca4f,0x7763e373, 0x682e6ff3,0xd6b2b8a3) - WORD64(0x748f82ee,0x5defb2fc, 0x78a5636f,0x43172f60) - WORD64(0x84c87814,0xa1f0ab72, 0x8cc70208,0x1a6439ec) - WORD64(0x90befffa,0x23631e28, 0xa4506ceb,0xde82bde9) - WORD64(0xbef9a3f7,0xb2c67915, 0xc67178f2,0xe372532b) - WORD64(0xca273ece,0xea26619c, 0xd186b8c7,0x21c0c207) - WORD64(0xeada7dd6,0xcde0eb1e, 0xf57d4f7f,0xee6ed178) - WORD64(0x06f067aa,0x72176fba, 0x0a637dc5,0xa2c898a6) - WORD64(0x113f9804,0xbef90dae, 0x1b710b35,0x131c471b) - WORD64(0x28db77f5,0x23047d84, 0x32caab7b,0x40c72493) - WORD64(0x3c9ebe0a,0x15c9bebc, 0x431d67c4,0x9c100d4c) - WORD64(0x4cc5d4be,0xcb3e42b6, 0x597f299c,0xfc657e2a) - WORD64(0x5fcb6fab,0x3ad6faec, 0x6c44198c,0x4a475817) - -#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) - -.private_extern _GFp_armcap_P -LOPENSSL_armcap: -.word _GFp_armcap_P-Lsha512_block_data_order -.skip 32-4 -#else -.skip 32 -#endif - -.globl _GFp_sha512_block_data_order -.private_extern _GFp_sha512_block_data_order -#ifdef __thumb2__ -.thumb_func _GFp_sha512_block_data_order -#endif -_GFp_sha512_block_data_order: -Lsha512_block_data_order: -#if __ARM_ARCH__<7 && !defined(__thumb2__) - sub r3,pc,#8 @ _GFp_sha512_block_data_order -#else - adr r3,Lsha512_block_data_order -#endif -#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) - ldr r12,LOPENSSL_armcap - ldr r12,[r3,r12] @ _GFp_armcap_P -#ifdef __APPLE__ - ldr r12,[r12] -#endif - tst r12,#ARMV7_NEON - bne LNEON -#endif - add r2,r1,r2,lsl#7 @ len to point at the end of inp - stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - sub r14,r3,#672 @ K512 - sub sp,sp,#9*8 - - ldr r7,[r0,#32+LO] - ldr r8,[r0,#32+HI] - ldr r9, [r0,#48+LO] - ldr r10, [r0,#48+HI] - ldr r11, [r0,#56+LO] - ldr r12, [r0,#56+HI] -Loop: - str r9, [sp,#48+0] - str r10, [sp,#48+4] - str r11, [sp,#56+0] - str r12, [sp,#56+4] - ldr r5,[r0,#0+LO] - ldr r6,[r0,#0+HI] - ldr r3,[r0,#8+LO] - ldr r4,[r0,#8+HI] - ldr r9, [r0,#16+LO] - ldr r10, [r0,#16+HI] - ldr r11, [r0,#24+LO] - ldr r12, [r0,#24+HI] - str r3,[sp,#8+0] - str r4,[sp,#8+4] - str r9, [sp,#16+0] - str r10, [sp,#16+4] - str r11, [sp,#24+0] - str r12, [sp,#24+4] - ldr r3,[r0,#40+LO] - ldr r4,[r0,#40+HI] - str r3,[sp,#40+0] - str r4,[sp,#40+4] - -L00_15: -#if __ARM_ARCH__<7 - ldrb r3,[r1,#7] - ldrb r9, [r1,#6] - ldrb r10, [r1,#5] - ldrb r11, [r1,#4] - ldrb r4,[r1,#3] - ldrb r12, [r1,#2] - orr r3,r3,r9,lsl#8 - ldrb r9, [r1,#1] - orr r3,r3,r10,lsl#16 - ldrb r10, [r1],#8 - orr r3,r3,r11,lsl#24 - orr r4,r4,r12,lsl#8 - orr r4,r4,r9,lsl#16 - orr r4,r4,r10,lsl#24 -#else - ldr r3,[r1,#4] - ldr r4,[r1],#8 -#ifdef __ARMEL__ - rev r3,r3 - rev r4,r4 -#endif -#endif - @ Sigma1(x) (ROTR((x),14) ^ ROTR((x),18) ^ ROTR((x),41)) - @ LO lo>>14^hi<<18 ^ lo>>18^hi<<14 ^ hi>>9^lo<<23 - @ HI hi>>14^lo<<18 ^ hi>>18^lo<<14 ^ lo>>9^hi<<23 - mov r9,r7,lsr#14 - str r3,[sp,#64+0] - mov r10,r8,lsr#14 - str r4,[sp,#64+4] - eor r9,r9,r8,lsl#18 - ldr r11,[sp,#56+0] @ h.lo - eor r10,r10,r7,lsl#18 - ldr r12,[sp,#56+4] @ h.hi - eor r9,r9,r7,lsr#18 - eor r10,r10,r8,lsr#18 - eor r9,r9,r8,lsl#14 - eor r10,r10,r7,lsl#14 - eor r9,r9,r8,lsr#9 - eor r10,r10,r7,lsr#9 - eor r9,r9,r7,lsl#23 - eor r10,r10,r8,lsl#23 @ Sigma1(e) - adds r3,r3,r9 - ldr r9,[sp,#40+0] @ f.lo - adc r4,r4,r10 @ T += Sigma1(e) - ldr r10,[sp,#40+4] @ f.hi - adds r3,r3,r11 - ldr r11,[sp,#48+0] @ g.lo - adc r4,r4,r12 @ T += h - ldr r12,[sp,#48+4] @ g.hi - - eor r9,r9,r11 - str r7,[sp,#32+0] - eor r10,r10,r12 - str r8,[sp,#32+4] - and r9,r9,r7 - str r5,[sp,#0+0] - and r10,r10,r8 - str r6,[sp,#0+4] - eor r9,r9,r11 - ldr r11,[r14,#LO] @ K[i].lo - eor r10,r10,r12 @ Ch(e,f,g) - ldr r12,[r14,#HI] @ K[i].hi - - adds r3,r3,r9 - ldr r7,[sp,#24+0] @ d.lo - adc r4,r4,r10 @ T += Ch(e,f,g) - ldr r8,[sp,#24+4] @ d.hi - adds r3,r3,r11 - and r9,r11,#0xff - adc r4,r4,r12 @ T += K[i] - adds r7,r7,r3 - ldr r11,[sp,#8+0] @ b.lo - adc r8,r8,r4 @ d += T - teq r9,#148 - - ldr r12,[sp,#16+0] @ c.lo -#if __ARM_ARCH__>=7 - it eq @ Thumb2 thing, sanity check in ARM -#endif - orreq r14,r14,#1 - @ Sigma0(x) (ROTR((x),28) ^ ROTR((x),34) ^ ROTR((x),39)) - @ LO lo>>28^hi<<4 ^ hi>>2^lo<<30 ^ hi>>7^lo<<25 - @ HI hi>>28^lo<<4 ^ lo>>2^hi<<30 ^ lo>>7^hi<<25 - mov r9,r5,lsr#28 - mov r10,r6,lsr#28 - eor r9,r9,r6,lsl#4 - eor r10,r10,r5,lsl#4 - eor r9,r9,r6,lsr#2 - eor r10,r10,r5,lsr#2 - eor r9,r9,r5,lsl#30 - eor r10,r10,r6,lsl#30 - eor r9,r9,r6,lsr#7 - eor r10,r10,r5,lsr#7 - eor r9,r9,r5,lsl#25 - eor r10,r10,r6,lsl#25 @ Sigma0(a) - adds r3,r3,r9 - and r9,r5,r11 - adc r4,r4,r10 @ T += Sigma0(a) - - ldr r10,[sp,#8+4] @ b.hi - orr r5,r5,r11 - ldr r11,[sp,#16+4] @ c.hi - and r5,r5,r12 - and r12,r6,r10 - orr r6,r6,r10 - orr r5,r5,r9 @ Maj(a,b,c).lo - and r6,r6,r11 - adds r5,r5,r3 - orr r6,r6,r12 @ Maj(a,b,c).hi - sub sp,sp,#8 - adc r6,r6,r4 @ h += T - tst r14,#1 - add r14,r14,#8 - tst r14,#1 - beq L00_15 - ldr r9,[sp,#184+0] - ldr r10,[sp,#184+4] - bic r14,r14,#1 -L16_79: - @ sigma0(x) (ROTR((x),1) ^ ROTR((x),8) ^ ((x)>>7)) - @ LO lo>>1^hi<<31 ^ lo>>8^hi<<24 ^ lo>>7^hi<<25 - @ HI hi>>1^lo<<31 ^ hi>>8^lo<<24 ^ hi>>7 - mov r3,r9,lsr#1 - ldr r11,[sp,#80+0] - mov r4,r10,lsr#1 - ldr r12,[sp,#80+4] - eor r3,r3,r10,lsl#31 - eor r4,r4,r9,lsl#31 - eor r3,r3,r9,lsr#8 - eor r4,r4,r10,lsr#8 - eor r3,r3,r10,lsl#24 - eor r4,r4,r9,lsl#24 - eor r3,r3,r9,lsr#7 - eor r4,r4,r10,lsr#7 - eor r3,r3,r10,lsl#25 - - @ sigma1(x) (ROTR((x),19) ^ ROTR((x),61) ^ ((x)>>6)) - @ LO lo>>19^hi<<13 ^ hi>>29^lo<<3 ^ lo>>6^hi<<26 - @ HI hi>>19^lo<<13 ^ lo>>29^hi<<3 ^ hi>>6 - mov r9,r11,lsr#19 - mov r10,r12,lsr#19 - eor r9,r9,r12,lsl#13 - eor r10,r10,r11,lsl#13 - eor r9,r9,r12,lsr#29 - eor r10,r10,r11,lsr#29 - eor r9,r9,r11,lsl#3 - eor r10,r10,r12,lsl#3 - eor r9,r9,r11,lsr#6 - eor r10,r10,r12,lsr#6 - ldr r11,[sp,#120+0] - eor r9,r9,r12,lsl#26 - - ldr r12,[sp,#120+4] - adds r3,r3,r9 - ldr r9,[sp,#192+0] - adc r4,r4,r10 - - ldr r10,[sp,#192+4] - adds r3,r3,r11 - adc r4,r4,r12 - adds r3,r3,r9 - adc r4,r4,r10 - @ Sigma1(x) (ROTR((x),14) ^ ROTR((x),18) ^ ROTR((x),41)) - @ LO lo>>14^hi<<18 ^ lo>>18^hi<<14 ^ hi>>9^lo<<23 - @ HI hi>>14^lo<<18 ^ hi>>18^lo<<14 ^ lo>>9^hi<<23 - mov r9,r7,lsr#14 - str r3,[sp,#64+0] - mov r10,r8,lsr#14 - str r4,[sp,#64+4] - eor r9,r9,r8,lsl#18 - ldr r11,[sp,#56+0] @ h.lo - eor r10,r10,r7,lsl#18 - ldr r12,[sp,#56+4] @ h.hi - eor r9,r9,r7,lsr#18 - eor r10,r10,r8,lsr#18 - eor r9,r9,r8,lsl#14 - eor r10,r10,r7,lsl#14 - eor r9,r9,r8,lsr#9 - eor r10,r10,r7,lsr#9 - eor r9,r9,r7,lsl#23 - eor r10,r10,r8,lsl#23 @ Sigma1(e) - adds r3,r3,r9 - ldr r9,[sp,#40+0] @ f.lo - adc r4,r4,r10 @ T += Sigma1(e) - ldr r10,[sp,#40+4] @ f.hi - adds r3,r3,r11 - ldr r11,[sp,#48+0] @ g.lo - adc r4,r4,r12 @ T += h - ldr r12,[sp,#48+4] @ g.hi - - eor r9,r9,r11 - str r7,[sp,#32+0] - eor r10,r10,r12 - str r8,[sp,#32+4] - and r9,r9,r7 - str r5,[sp,#0+0] - and r10,r10,r8 - str r6,[sp,#0+4] - eor r9,r9,r11 - ldr r11,[r14,#LO] @ K[i].lo - eor r10,r10,r12 @ Ch(e,f,g) - ldr r12,[r14,#HI] @ K[i].hi - - adds r3,r3,r9 - ldr r7,[sp,#24+0] @ d.lo - adc r4,r4,r10 @ T += Ch(e,f,g) - ldr r8,[sp,#24+4] @ d.hi - adds r3,r3,r11 - and r9,r11,#0xff - adc r4,r4,r12 @ T += K[i] - adds r7,r7,r3 - ldr r11,[sp,#8+0] @ b.lo - adc r8,r8,r4 @ d += T - teq r9,#23 - - ldr r12,[sp,#16+0] @ c.lo -#if __ARM_ARCH__>=7 - it eq @ Thumb2 thing, sanity check in ARM -#endif - orreq r14,r14,#1 - @ Sigma0(x) (ROTR((x),28) ^ ROTR((x),34) ^ ROTR((x),39)) - @ LO lo>>28^hi<<4 ^ hi>>2^lo<<30 ^ hi>>7^lo<<25 - @ HI hi>>28^lo<<4 ^ lo>>2^hi<<30 ^ lo>>7^hi<<25 - mov r9,r5,lsr#28 - mov r10,r6,lsr#28 - eor r9,r9,r6,lsl#4 - eor r10,r10,r5,lsl#4 - eor r9,r9,r6,lsr#2 - eor r10,r10,r5,lsr#2 - eor r9,r9,r5,lsl#30 - eor r10,r10,r6,lsl#30 - eor r9,r9,r6,lsr#7 - eor r10,r10,r5,lsr#7 - eor r9,r9,r5,lsl#25 - eor r10,r10,r6,lsl#25 @ Sigma0(a) - adds r3,r3,r9 - and r9,r5,r11 - adc r4,r4,r10 @ T += Sigma0(a) - - ldr r10,[sp,#8+4] @ b.hi - orr r5,r5,r11 - ldr r11,[sp,#16+4] @ c.hi - and r5,r5,r12 - and r12,r6,r10 - orr r6,r6,r10 - orr r5,r5,r9 @ Maj(a,b,c).lo - and r6,r6,r11 - adds r5,r5,r3 - orr r6,r6,r12 @ Maj(a,b,c).hi - sub sp,sp,#8 - adc r6,r6,r4 @ h += T - tst r14,#1 - add r14,r14,#8 -#if __ARM_ARCH__>=7 - ittt eq @ Thumb2 thing, sanity check in ARM -#endif - ldreq r9,[sp,#184+0] - ldreq r10,[sp,#184+4] - beq L16_79 - bic r14,r14,#1 - - ldr r3,[sp,#8+0] - ldr r4,[sp,#8+4] - ldr r9, [r0,#0+LO] - ldr r10, [r0,#0+HI] - ldr r11, [r0,#8+LO] - ldr r12, [r0,#8+HI] - adds r9,r5,r9 - str r9, [r0,#0+LO] - adc r10,r6,r10 - str r10, [r0,#0+HI] - adds r11,r3,r11 - str r11, [r0,#8+LO] - adc r12,r4,r12 - str r12, [r0,#8+HI] - - ldr r5,[sp,#16+0] - ldr r6,[sp,#16+4] - ldr r3,[sp,#24+0] - ldr r4,[sp,#24+4] - ldr r9, [r0,#16+LO] - ldr r10, [r0,#16+HI] - ldr r11, [r0,#24+LO] - ldr r12, [r0,#24+HI] - adds r9,r5,r9 - str r9, [r0,#16+LO] - adc r10,r6,r10 - str r10, [r0,#16+HI] - adds r11,r3,r11 - str r11, [r0,#24+LO] - adc r12,r4,r12 - str r12, [r0,#24+HI] - - ldr r3,[sp,#40+0] - ldr r4,[sp,#40+4] - ldr r9, [r0,#32+LO] - ldr r10, [r0,#32+HI] - ldr r11, [r0,#40+LO] - ldr r12, [r0,#40+HI] - adds r7,r7,r9 - str r7,[r0,#32+LO] - adc r8,r8,r10 - str r8,[r0,#32+HI] - adds r11,r3,r11 - str r11, [r0,#40+LO] - adc r12,r4,r12 - str r12, [r0,#40+HI] - - ldr r5,[sp,#48+0] - ldr r6,[sp,#48+4] - ldr r3,[sp,#56+0] - ldr r4,[sp,#56+4] - ldr r9, [r0,#48+LO] - ldr r10, [r0,#48+HI] - ldr r11, [r0,#56+LO] - ldr r12, [r0,#56+HI] - adds r9,r5,r9 - str r9, [r0,#48+LO] - adc r10,r6,r10 - str r10, [r0,#48+HI] - adds r11,r3,r11 - str r11, [r0,#56+LO] - adc r12,r4,r12 - str r12, [r0,#56+HI] - - add sp,sp,#640 - sub r14,r14,#640 - - teq r1,r2 - bne Loop - - add sp,sp,#8*9 @ destroy frame -#if __ARM_ARCH__>=5 - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} -#else - ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} - tst lr,#1 - moveq pc,lr @ be binary compatible with V4, yet -.word 0xe12fff1e @ interoperable with Thumb ISA:-) -#endif - -#if __ARM_MAX_ARCH__>=7 - - - -#ifdef __thumb2__ -.thumb_func sha512_block_data_order_neon -#endif -.align 4 -sha512_block_data_order_neon: -LNEON: - dmb @ errata #451034 on early Cortex A8 - add r2,r1,r2,lsl#7 @ len to point at the end of inp - adr r3,K512 - VFP_ABI_PUSH - vldmia r0,{d16,d17,d18,d19,d20,d21,d22,d23} @ load context -Loop_neon: - vshr.u64 d24,d20,#14 @ 0 -#if 0<16 - vld1.64 {d0},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d20,#18 -#if 0>0 - vadd.i64 d16,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d20,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d20,#50 - vsli.64 d25,d20,#46 - vmov d29,d20 - vsli.64 d26,d20,#23 -#if 0<16 && defined(__ARMEL__) - vrev64.8 d0,d0 -#endif - veor d25,d24 - vbsl d29,d21,d22 @ Ch(e,f,g) - vshr.u64 d24,d16,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d23 - vshr.u64 d25,d16,#34 - vsli.64 d24,d16,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d16,#39 - vadd.i64 d28,d0 - vsli.64 d25,d16,#30 - veor d30,d16,d17 - vsli.64 d26,d16,#25 - veor d23,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d18,d17 @ Maj(a,b,c) - veor d23,d26 @ Sigma0(a) - vadd.i64 d19,d27 - vadd.i64 d30,d27 - @ vadd.i64 d23,d30 - vshr.u64 d24,d19,#14 @ 1 -#if 1<16 - vld1.64 {d1},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d19,#18 -#if 1>0 - vadd.i64 d23,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d19,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d19,#50 - vsli.64 d25,d19,#46 - vmov d29,d19 - vsli.64 d26,d19,#23 -#if 1<16 && defined(__ARMEL__) - vrev64.8 d1,d1 -#endif - veor d25,d24 - vbsl d29,d20,d21 @ Ch(e,f,g) - vshr.u64 d24,d23,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d22 - vshr.u64 d25,d23,#34 - vsli.64 d24,d23,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d23,#39 - vadd.i64 d28,d1 - vsli.64 d25,d23,#30 - veor d30,d23,d16 - vsli.64 d26,d23,#25 - veor d22,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d17,d16 @ Maj(a,b,c) - veor d22,d26 @ Sigma0(a) - vadd.i64 d18,d27 - vadd.i64 d30,d27 - @ vadd.i64 d22,d30 - vshr.u64 d24,d18,#14 @ 2 -#if 2<16 - vld1.64 {d2},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d18,#18 -#if 2>0 - vadd.i64 d22,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d18,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d18,#50 - vsli.64 d25,d18,#46 - vmov d29,d18 - vsli.64 d26,d18,#23 -#if 2<16 && defined(__ARMEL__) - vrev64.8 d2,d2 -#endif - veor d25,d24 - vbsl d29,d19,d20 @ Ch(e,f,g) - vshr.u64 d24,d22,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d21 - vshr.u64 d25,d22,#34 - vsli.64 d24,d22,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d22,#39 - vadd.i64 d28,d2 - vsli.64 d25,d22,#30 - veor d30,d22,d23 - vsli.64 d26,d22,#25 - veor d21,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d16,d23 @ Maj(a,b,c) - veor d21,d26 @ Sigma0(a) - vadd.i64 d17,d27 - vadd.i64 d30,d27 - @ vadd.i64 d21,d30 - vshr.u64 d24,d17,#14 @ 3 -#if 3<16 - vld1.64 {d3},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d17,#18 -#if 3>0 - vadd.i64 d21,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d17,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d17,#50 - vsli.64 d25,d17,#46 - vmov d29,d17 - vsli.64 d26,d17,#23 -#if 3<16 && defined(__ARMEL__) - vrev64.8 d3,d3 -#endif - veor d25,d24 - vbsl d29,d18,d19 @ Ch(e,f,g) - vshr.u64 d24,d21,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d20 - vshr.u64 d25,d21,#34 - vsli.64 d24,d21,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d21,#39 - vadd.i64 d28,d3 - vsli.64 d25,d21,#30 - veor d30,d21,d22 - vsli.64 d26,d21,#25 - veor d20,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d23,d22 @ Maj(a,b,c) - veor d20,d26 @ Sigma0(a) - vadd.i64 d16,d27 - vadd.i64 d30,d27 - @ vadd.i64 d20,d30 - vshr.u64 d24,d16,#14 @ 4 -#if 4<16 - vld1.64 {d4},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d16,#18 -#if 4>0 - vadd.i64 d20,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d16,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d16,#50 - vsli.64 d25,d16,#46 - vmov d29,d16 - vsli.64 d26,d16,#23 -#if 4<16 && defined(__ARMEL__) - vrev64.8 d4,d4 -#endif - veor d25,d24 - vbsl d29,d17,d18 @ Ch(e,f,g) - vshr.u64 d24,d20,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d19 - vshr.u64 d25,d20,#34 - vsli.64 d24,d20,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d20,#39 - vadd.i64 d28,d4 - vsli.64 d25,d20,#30 - veor d30,d20,d21 - vsli.64 d26,d20,#25 - veor d19,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d22,d21 @ Maj(a,b,c) - veor d19,d26 @ Sigma0(a) - vadd.i64 d23,d27 - vadd.i64 d30,d27 - @ vadd.i64 d19,d30 - vshr.u64 d24,d23,#14 @ 5 -#if 5<16 - vld1.64 {d5},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d23,#18 -#if 5>0 - vadd.i64 d19,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d23,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d23,#50 - vsli.64 d25,d23,#46 - vmov d29,d23 - vsli.64 d26,d23,#23 -#if 5<16 && defined(__ARMEL__) - vrev64.8 d5,d5 -#endif - veor d25,d24 - vbsl d29,d16,d17 @ Ch(e,f,g) - vshr.u64 d24,d19,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d18 - vshr.u64 d25,d19,#34 - vsli.64 d24,d19,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d19,#39 - vadd.i64 d28,d5 - vsli.64 d25,d19,#30 - veor d30,d19,d20 - vsli.64 d26,d19,#25 - veor d18,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d21,d20 @ Maj(a,b,c) - veor d18,d26 @ Sigma0(a) - vadd.i64 d22,d27 - vadd.i64 d30,d27 - @ vadd.i64 d18,d30 - vshr.u64 d24,d22,#14 @ 6 -#if 6<16 - vld1.64 {d6},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d22,#18 -#if 6>0 - vadd.i64 d18,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d22,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d22,#50 - vsli.64 d25,d22,#46 - vmov d29,d22 - vsli.64 d26,d22,#23 -#if 6<16 && defined(__ARMEL__) - vrev64.8 d6,d6 -#endif - veor d25,d24 - vbsl d29,d23,d16 @ Ch(e,f,g) - vshr.u64 d24,d18,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d17 - vshr.u64 d25,d18,#34 - vsli.64 d24,d18,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d18,#39 - vadd.i64 d28,d6 - vsli.64 d25,d18,#30 - veor d30,d18,d19 - vsli.64 d26,d18,#25 - veor d17,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d20,d19 @ Maj(a,b,c) - veor d17,d26 @ Sigma0(a) - vadd.i64 d21,d27 - vadd.i64 d30,d27 - @ vadd.i64 d17,d30 - vshr.u64 d24,d21,#14 @ 7 -#if 7<16 - vld1.64 {d7},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d21,#18 -#if 7>0 - vadd.i64 d17,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d21,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d21,#50 - vsli.64 d25,d21,#46 - vmov d29,d21 - vsli.64 d26,d21,#23 -#if 7<16 && defined(__ARMEL__) - vrev64.8 d7,d7 -#endif - veor d25,d24 - vbsl d29,d22,d23 @ Ch(e,f,g) - vshr.u64 d24,d17,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d16 - vshr.u64 d25,d17,#34 - vsli.64 d24,d17,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d17,#39 - vadd.i64 d28,d7 - vsli.64 d25,d17,#30 - veor d30,d17,d18 - vsli.64 d26,d17,#25 - veor d16,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d19,d18 @ Maj(a,b,c) - veor d16,d26 @ Sigma0(a) - vadd.i64 d20,d27 - vadd.i64 d30,d27 - @ vadd.i64 d16,d30 - vshr.u64 d24,d20,#14 @ 8 -#if 8<16 - vld1.64 {d8},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d20,#18 -#if 8>0 - vadd.i64 d16,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d20,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d20,#50 - vsli.64 d25,d20,#46 - vmov d29,d20 - vsli.64 d26,d20,#23 -#if 8<16 && defined(__ARMEL__) - vrev64.8 d8,d8 -#endif - veor d25,d24 - vbsl d29,d21,d22 @ Ch(e,f,g) - vshr.u64 d24,d16,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d23 - vshr.u64 d25,d16,#34 - vsli.64 d24,d16,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d16,#39 - vadd.i64 d28,d8 - vsli.64 d25,d16,#30 - veor d30,d16,d17 - vsli.64 d26,d16,#25 - veor d23,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d18,d17 @ Maj(a,b,c) - veor d23,d26 @ Sigma0(a) - vadd.i64 d19,d27 - vadd.i64 d30,d27 - @ vadd.i64 d23,d30 - vshr.u64 d24,d19,#14 @ 9 -#if 9<16 - vld1.64 {d9},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d19,#18 -#if 9>0 - vadd.i64 d23,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d19,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d19,#50 - vsli.64 d25,d19,#46 - vmov d29,d19 - vsli.64 d26,d19,#23 -#if 9<16 && defined(__ARMEL__) - vrev64.8 d9,d9 -#endif - veor d25,d24 - vbsl d29,d20,d21 @ Ch(e,f,g) - vshr.u64 d24,d23,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d22 - vshr.u64 d25,d23,#34 - vsli.64 d24,d23,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d23,#39 - vadd.i64 d28,d9 - vsli.64 d25,d23,#30 - veor d30,d23,d16 - vsli.64 d26,d23,#25 - veor d22,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d17,d16 @ Maj(a,b,c) - veor d22,d26 @ Sigma0(a) - vadd.i64 d18,d27 - vadd.i64 d30,d27 - @ vadd.i64 d22,d30 - vshr.u64 d24,d18,#14 @ 10 -#if 10<16 - vld1.64 {d10},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d18,#18 -#if 10>0 - vadd.i64 d22,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d18,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d18,#50 - vsli.64 d25,d18,#46 - vmov d29,d18 - vsli.64 d26,d18,#23 -#if 10<16 && defined(__ARMEL__) - vrev64.8 d10,d10 -#endif - veor d25,d24 - vbsl d29,d19,d20 @ Ch(e,f,g) - vshr.u64 d24,d22,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d21 - vshr.u64 d25,d22,#34 - vsli.64 d24,d22,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d22,#39 - vadd.i64 d28,d10 - vsli.64 d25,d22,#30 - veor d30,d22,d23 - vsli.64 d26,d22,#25 - veor d21,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d16,d23 @ Maj(a,b,c) - veor d21,d26 @ Sigma0(a) - vadd.i64 d17,d27 - vadd.i64 d30,d27 - @ vadd.i64 d21,d30 - vshr.u64 d24,d17,#14 @ 11 -#if 11<16 - vld1.64 {d11},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d17,#18 -#if 11>0 - vadd.i64 d21,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d17,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d17,#50 - vsli.64 d25,d17,#46 - vmov d29,d17 - vsli.64 d26,d17,#23 -#if 11<16 && defined(__ARMEL__) - vrev64.8 d11,d11 -#endif - veor d25,d24 - vbsl d29,d18,d19 @ Ch(e,f,g) - vshr.u64 d24,d21,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d20 - vshr.u64 d25,d21,#34 - vsli.64 d24,d21,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d21,#39 - vadd.i64 d28,d11 - vsli.64 d25,d21,#30 - veor d30,d21,d22 - vsli.64 d26,d21,#25 - veor d20,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d23,d22 @ Maj(a,b,c) - veor d20,d26 @ Sigma0(a) - vadd.i64 d16,d27 - vadd.i64 d30,d27 - @ vadd.i64 d20,d30 - vshr.u64 d24,d16,#14 @ 12 -#if 12<16 - vld1.64 {d12},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d16,#18 -#if 12>0 - vadd.i64 d20,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d16,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d16,#50 - vsli.64 d25,d16,#46 - vmov d29,d16 - vsli.64 d26,d16,#23 -#if 12<16 && defined(__ARMEL__) - vrev64.8 d12,d12 -#endif - veor d25,d24 - vbsl d29,d17,d18 @ Ch(e,f,g) - vshr.u64 d24,d20,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d19 - vshr.u64 d25,d20,#34 - vsli.64 d24,d20,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d20,#39 - vadd.i64 d28,d12 - vsli.64 d25,d20,#30 - veor d30,d20,d21 - vsli.64 d26,d20,#25 - veor d19,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d22,d21 @ Maj(a,b,c) - veor d19,d26 @ Sigma0(a) - vadd.i64 d23,d27 - vadd.i64 d30,d27 - @ vadd.i64 d19,d30 - vshr.u64 d24,d23,#14 @ 13 -#if 13<16 - vld1.64 {d13},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d23,#18 -#if 13>0 - vadd.i64 d19,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d23,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d23,#50 - vsli.64 d25,d23,#46 - vmov d29,d23 - vsli.64 d26,d23,#23 -#if 13<16 && defined(__ARMEL__) - vrev64.8 d13,d13 -#endif - veor d25,d24 - vbsl d29,d16,d17 @ Ch(e,f,g) - vshr.u64 d24,d19,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d18 - vshr.u64 d25,d19,#34 - vsli.64 d24,d19,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d19,#39 - vadd.i64 d28,d13 - vsli.64 d25,d19,#30 - veor d30,d19,d20 - vsli.64 d26,d19,#25 - veor d18,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d21,d20 @ Maj(a,b,c) - veor d18,d26 @ Sigma0(a) - vadd.i64 d22,d27 - vadd.i64 d30,d27 - @ vadd.i64 d18,d30 - vshr.u64 d24,d22,#14 @ 14 -#if 14<16 - vld1.64 {d14},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d22,#18 -#if 14>0 - vadd.i64 d18,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d22,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d22,#50 - vsli.64 d25,d22,#46 - vmov d29,d22 - vsli.64 d26,d22,#23 -#if 14<16 && defined(__ARMEL__) - vrev64.8 d14,d14 -#endif - veor d25,d24 - vbsl d29,d23,d16 @ Ch(e,f,g) - vshr.u64 d24,d18,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d17 - vshr.u64 d25,d18,#34 - vsli.64 d24,d18,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d18,#39 - vadd.i64 d28,d14 - vsli.64 d25,d18,#30 - veor d30,d18,d19 - vsli.64 d26,d18,#25 - veor d17,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d20,d19 @ Maj(a,b,c) - veor d17,d26 @ Sigma0(a) - vadd.i64 d21,d27 - vadd.i64 d30,d27 - @ vadd.i64 d17,d30 - vshr.u64 d24,d21,#14 @ 15 -#if 15<16 - vld1.64 {d15},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d21,#18 -#if 15>0 - vadd.i64 d17,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d21,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d21,#50 - vsli.64 d25,d21,#46 - vmov d29,d21 - vsli.64 d26,d21,#23 -#if 15<16 && defined(__ARMEL__) - vrev64.8 d15,d15 -#endif - veor d25,d24 - vbsl d29,d22,d23 @ Ch(e,f,g) - vshr.u64 d24,d17,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d16 - vshr.u64 d25,d17,#34 - vsli.64 d24,d17,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d17,#39 - vadd.i64 d28,d15 - vsli.64 d25,d17,#30 - veor d30,d17,d18 - vsli.64 d26,d17,#25 - veor d16,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d19,d18 @ Maj(a,b,c) - veor d16,d26 @ Sigma0(a) - vadd.i64 d20,d27 - vadd.i64 d30,d27 - @ vadd.i64 d16,d30 - mov r12,#4 -L16_79_neon: - subs r12,#1 - vshr.u64 q12,q7,#19 - vshr.u64 q13,q7,#61 - vadd.i64 d16,d30 @ h+=Maj from the past - vshr.u64 q15,q7,#6 - vsli.64 q12,q7,#45 - vext.8 q14,q0,q1,#8 @ X[i+1] - vsli.64 q13,q7,#3 - veor q15,q12 - vshr.u64 q12,q14,#1 - veor q15,q13 @ sigma1(X[i+14]) - vshr.u64 q13,q14,#8 - vadd.i64 q0,q15 - vshr.u64 q15,q14,#7 - vsli.64 q12,q14,#63 - vsli.64 q13,q14,#56 - vext.8 q14,q4,q5,#8 @ X[i+9] - veor q15,q12 - vshr.u64 d24,d20,#14 @ from NEON_00_15 - vadd.i64 q0,q14 - vshr.u64 d25,d20,#18 @ from NEON_00_15 - veor q15,q13 @ sigma0(X[i+1]) - vshr.u64 d26,d20,#41 @ from NEON_00_15 - vadd.i64 q0,q15 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d20,#50 - vsli.64 d25,d20,#46 - vmov d29,d20 - vsli.64 d26,d20,#23 -#if 16<16 && defined(__ARMEL__) - vrev64.8 , -#endif - veor d25,d24 - vbsl d29,d21,d22 @ Ch(e,f,g) - vshr.u64 d24,d16,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d23 - vshr.u64 d25,d16,#34 - vsli.64 d24,d16,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d16,#39 - vadd.i64 d28,d0 - vsli.64 d25,d16,#30 - veor d30,d16,d17 - vsli.64 d26,d16,#25 - veor d23,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d18,d17 @ Maj(a,b,c) - veor d23,d26 @ Sigma0(a) - vadd.i64 d19,d27 - vadd.i64 d30,d27 - @ vadd.i64 d23,d30 - vshr.u64 d24,d19,#14 @ 17 -#if 17<16 - vld1.64 {d1},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d19,#18 -#if 17>0 - vadd.i64 d23,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d19,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d19,#50 - vsli.64 d25,d19,#46 - vmov d29,d19 - vsli.64 d26,d19,#23 -#if 17<16 && defined(__ARMEL__) - vrev64.8 , -#endif - veor d25,d24 - vbsl d29,d20,d21 @ Ch(e,f,g) - vshr.u64 d24,d23,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d22 - vshr.u64 d25,d23,#34 - vsli.64 d24,d23,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d23,#39 - vadd.i64 d28,d1 - vsli.64 d25,d23,#30 - veor d30,d23,d16 - vsli.64 d26,d23,#25 - veor d22,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d17,d16 @ Maj(a,b,c) - veor d22,d26 @ Sigma0(a) - vadd.i64 d18,d27 - vadd.i64 d30,d27 - @ vadd.i64 d22,d30 - vshr.u64 q12,q0,#19 - vshr.u64 q13,q0,#61 - vadd.i64 d22,d30 @ h+=Maj from the past - vshr.u64 q15,q0,#6 - vsli.64 q12,q0,#45 - vext.8 q14,q1,q2,#8 @ X[i+1] - vsli.64 q13,q0,#3 - veor q15,q12 - vshr.u64 q12,q14,#1 - veor q15,q13 @ sigma1(X[i+14]) - vshr.u64 q13,q14,#8 - vadd.i64 q1,q15 - vshr.u64 q15,q14,#7 - vsli.64 q12,q14,#63 - vsli.64 q13,q14,#56 - vext.8 q14,q5,q6,#8 @ X[i+9] - veor q15,q12 - vshr.u64 d24,d18,#14 @ from NEON_00_15 - vadd.i64 q1,q14 - vshr.u64 d25,d18,#18 @ from NEON_00_15 - veor q15,q13 @ sigma0(X[i+1]) - vshr.u64 d26,d18,#41 @ from NEON_00_15 - vadd.i64 q1,q15 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d18,#50 - vsli.64 d25,d18,#46 - vmov d29,d18 - vsli.64 d26,d18,#23 -#if 18<16 && defined(__ARMEL__) - vrev64.8 , -#endif - veor d25,d24 - vbsl d29,d19,d20 @ Ch(e,f,g) - vshr.u64 d24,d22,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d21 - vshr.u64 d25,d22,#34 - vsli.64 d24,d22,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d22,#39 - vadd.i64 d28,d2 - vsli.64 d25,d22,#30 - veor d30,d22,d23 - vsli.64 d26,d22,#25 - veor d21,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d16,d23 @ Maj(a,b,c) - veor d21,d26 @ Sigma0(a) - vadd.i64 d17,d27 - vadd.i64 d30,d27 - @ vadd.i64 d21,d30 - vshr.u64 d24,d17,#14 @ 19 -#if 19<16 - vld1.64 {d3},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d17,#18 -#if 19>0 - vadd.i64 d21,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d17,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d17,#50 - vsli.64 d25,d17,#46 - vmov d29,d17 - vsli.64 d26,d17,#23 -#if 19<16 && defined(__ARMEL__) - vrev64.8 , -#endif - veor d25,d24 - vbsl d29,d18,d19 @ Ch(e,f,g) - vshr.u64 d24,d21,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d20 - vshr.u64 d25,d21,#34 - vsli.64 d24,d21,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d21,#39 - vadd.i64 d28,d3 - vsli.64 d25,d21,#30 - veor d30,d21,d22 - vsli.64 d26,d21,#25 - veor d20,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d23,d22 @ Maj(a,b,c) - veor d20,d26 @ Sigma0(a) - vadd.i64 d16,d27 - vadd.i64 d30,d27 - @ vadd.i64 d20,d30 - vshr.u64 q12,q1,#19 - vshr.u64 q13,q1,#61 - vadd.i64 d20,d30 @ h+=Maj from the past - vshr.u64 q15,q1,#6 - vsli.64 q12,q1,#45 - vext.8 q14,q2,q3,#8 @ X[i+1] - vsli.64 q13,q1,#3 - veor q15,q12 - vshr.u64 q12,q14,#1 - veor q15,q13 @ sigma1(X[i+14]) - vshr.u64 q13,q14,#8 - vadd.i64 q2,q15 - vshr.u64 q15,q14,#7 - vsli.64 q12,q14,#63 - vsli.64 q13,q14,#56 - vext.8 q14,q6,q7,#8 @ X[i+9] - veor q15,q12 - vshr.u64 d24,d16,#14 @ from NEON_00_15 - vadd.i64 q2,q14 - vshr.u64 d25,d16,#18 @ from NEON_00_15 - veor q15,q13 @ sigma0(X[i+1]) - vshr.u64 d26,d16,#41 @ from NEON_00_15 - vadd.i64 q2,q15 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d16,#50 - vsli.64 d25,d16,#46 - vmov d29,d16 - vsli.64 d26,d16,#23 -#if 20<16 && defined(__ARMEL__) - vrev64.8 , -#endif - veor d25,d24 - vbsl d29,d17,d18 @ Ch(e,f,g) - vshr.u64 d24,d20,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d19 - vshr.u64 d25,d20,#34 - vsli.64 d24,d20,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d20,#39 - vadd.i64 d28,d4 - vsli.64 d25,d20,#30 - veor d30,d20,d21 - vsli.64 d26,d20,#25 - veor d19,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d22,d21 @ Maj(a,b,c) - veor d19,d26 @ Sigma0(a) - vadd.i64 d23,d27 - vadd.i64 d30,d27 - @ vadd.i64 d19,d30 - vshr.u64 d24,d23,#14 @ 21 -#if 21<16 - vld1.64 {d5},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d23,#18 -#if 21>0 - vadd.i64 d19,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d23,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d23,#50 - vsli.64 d25,d23,#46 - vmov d29,d23 - vsli.64 d26,d23,#23 -#if 21<16 && defined(__ARMEL__) - vrev64.8 , -#endif - veor d25,d24 - vbsl d29,d16,d17 @ Ch(e,f,g) - vshr.u64 d24,d19,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d18 - vshr.u64 d25,d19,#34 - vsli.64 d24,d19,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d19,#39 - vadd.i64 d28,d5 - vsli.64 d25,d19,#30 - veor d30,d19,d20 - vsli.64 d26,d19,#25 - veor d18,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d21,d20 @ Maj(a,b,c) - veor d18,d26 @ Sigma0(a) - vadd.i64 d22,d27 - vadd.i64 d30,d27 - @ vadd.i64 d18,d30 - vshr.u64 q12,q2,#19 - vshr.u64 q13,q2,#61 - vadd.i64 d18,d30 @ h+=Maj from the past - vshr.u64 q15,q2,#6 - vsli.64 q12,q2,#45 - vext.8 q14,q3,q4,#8 @ X[i+1] - vsli.64 q13,q2,#3 - veor q15,q12 - vshr.u64 q12,q14,#1 - veor q15,q13 @ sigma1(X[i+14]) - vshr.u64 q13,q14,#8 - vadd.i64 q3,q15 - vshr.u64 q15,q14,#7 - vsli.64 q12,q14,#63 - vsli.64 q13,q14,#56 - vext.8 q14,q7,q0,#8 @ X[i+9] - veor q15,q12 - vshr.u64 d24,d22,#14 @ from NEON_00_15 - vadd.i64 q3,q14 - vshr.u64 d25,d22,#18 @ from NEON_00_15 - veor q15,q13 @ sigma0(X[i+1]) - vshr.u64 d26,d22,#41 @ from NEON_00_15 - vadd.i64 q3,q15 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d22,#50 - vsli.64 d25,d22,#46 - vmov d29,d22 - vsli.64 d26,d22,#23 -#if 22<16 && defined(__ARMEL__) - vrev64.8 , -#endif - veor d25,d24 - vbsl d29,d23,d16 @ Ch(e,f,g) - vshr.u64 d24,d18,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d17 - vshr.u64 d25,d18,#34 - vsli.64 d24,d18,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d18,#39 - vadd.i64 d28,d6 - vsli.64 d25,d18,#30 - veor d30,d18,d19 - vsli.64 d26,d18,#25 - veor d17,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d20,d19 @ Maj(a,b,c) - veor d17,d26 @ Sigma0(a) - vadd.i64 d21,d27 - vadd.i64 d30,d27 - @ vadd.i64 d17,d30 - vshr.u64 d24,d21,#14 @ 23 -#if 23<16 - vld1.64 {d7},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d21,#18 -#if 23>0 - vadd.i64 d17,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d21,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d21,#50 - vsli.64 d25,d21,#46 - vmov d29,d21 - vsli.64 d26,d21,#23 -#if 23<16 && defined(__ARMEL__) - vrev64.8 , -#endif - veor d25,d24 - vbsl d29,d22,d23 @ Ch(e,f,g) - vshr.u64 d24,d17,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d16 - vshr.u64 d25,d17,#34 - vsli.64 d24,d17,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d17,#39 - vadd.i64 d28,d7 - vsli.64 d25,d17,#30 - veor d30,d17,d18 - vsli.64 d26,d17,#25 - veor d16,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d19,d18 @ Maj(a,b,c) - veor d16,d26 @ Sigma0(a) - vadd.i64 d20,d27 - vadd.i64 d30,d27 - @ vadd.i64 d16,d30 - vshr.u64 q12,q3,#19 - vshr.u64 q13,q3,#61 - vadd.i64 d16,d30 @ h+=Maj from the past - vshr.u64 q15,q3,#6 - vsli.64 q12,q3,#45 - vext.8 q14,q4,q5,#8 @ X[i+1] - vsli.64 q13,q3,#3 - veor q15,q12 - vshr.u64 q12,q14,#1 - veor q15,q13 @ sigma1(X[i+14]) - vshr.u64 q13,q14,#8 - vadd.i64 q4,q15 - vshr.u64 q15,q14,#7 - vsli.64 q12,q14,#63 - vsli.64 q13,q14,#56 - vext.8 q14,q0,q1,#8 @ X[i+9] - veor q15,q12 - vshr.u64 d24,d20,#14 @ from NEON_00_15 - vadd.i64 q4,q14 - vshr.u64 d25,d20,#18 @ from NEON_00_15 - veor q15,q13 @ sigma0(X[i+1]) - vshr.u64 d26,d20,#41 @ from NEON_00_15 - vadd.i64 q4,q15 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d20,#50 - vsli.64 d25,d20,#46 - vmov d29,d20 - vsli.64 d26,d20,#23 -#if 24<16 && defined(__ARMEL__) - vrev64.8 , -#endif - veor d25,d24 - vbsl d29,d21,d22 @ Ch(e,f,g) - vshr.u64 d24,d16,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d23 - vshr.u64 d25,d16,#34 - vsli.64 d24,d16,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d16,#39 - vadd.i64 d28,d8 - vsli.64 d25,d16,#30 - veor d30,d16,d17 - vsli.64 d26,d16,#25 - veor d23,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d18,d17 @ Maj(a,b,c) - veor d23,d26 @ Sigma0(a) - vadd.i64 d19,d27 - vadd.i64 d30,d27 - @ vadd.i64 d23,d30 - vshr.u64 d24,d19,#14 @ 25 -#if 25<16 - vld1.64 {d9},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d19,#18 -#if 25>0 - vadd.i64 d23,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d19,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d19,#50 - vsli.64 d25,d19,#46 - vmov d29,d19 - vsli.64 d26,d19,#23 -#if 25<16 && defined(__ARMEL__) - vrev64.8 , -#endif - veor d25,d24 - vbsl d29,d20,d21 @ Ch(e,f,g) - vshr.u64 d24,d23,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d22 - vshr.u64 d25,d23,#34 - vsli.64 d24,d23,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d23,#39 - vadd.i64 d28,d9 - vsli.64 d25,d23,#30 - veor d30,d23,d16 - vsli.64 d26,d23,#25 - veor d22,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d17,d16 @ Maj(a,b,c) - veor d22,d26 @ Sigma0(a) - vadd.i64 d18,d27 - vadd.i64 d30,d27 - @ vadd.i64 d22,d30 - vshr.u64 q12,q4,#19 - vshr.u64 q13,q4,#61 - vadd.i64 d22,d30 @ h+=Maj from the past - vshr.u64 q15,q4,#6 - vsli.64 q12,q4,#45 - vext.8 q14,q5,q6,#8 @ X[i+1] - vsli.64 q13,q4,#3 - veor q15,q12 - vshr.u64 q12,q14,#1 - veor q15,q13 @ sigma1(X[i+14]) - vshr.u64 q13,q14,#8 - vadd.i64 q5,q15 - vshr.u64 q15,q14,#7 - vsli.64 q12,q14,#63 - vsli.64 q13,q14,#56 - vext.8 q14,q1,q2,#8 @ X[i+9] - veor q15,q12 - vshr.u64 d24,d18,#14 @ from NEON_00_15 - vadd.i64 q5,q14 - vshr.u64 d25,d18,#18 @ from NEON_00_15 - veor q15,q13 @ sigma0(X[i+1]) - vshr.u64 d26,d18,#41 @ from NEON_00_15 - vadd.i64 q5,q15 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d18,#50 - vsli.64 d25,d18,#46 - vmov d29,d18 - vsli.64 d26,d18,#23 -#if 26<16 && defined(__ARMEL__) - vrev64.8 , -#endif - veor d25,d24 - vbsl d29,d19,d20 @ Ch(e,f,g) - vshr.u64 d24,d22,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d21 - vshr.u64 d25,d22,#34 - vsli.64 d24,d22,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d22,#39 - vadd.i64 d28,d10 - vsli.64 d25,d22,#30 - veor d30,d22,d23 - vsli.64 d26,d22,#25 - veor d21,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d16,d23 @ Maj(a,b,c) - veor d21,d26 @ Sigma0(a) - vadd.i64 d17,d27 - vadd.i64 d30,d27 - @ vadd.i64 d21,d30 - vshr.u64 d24,d17,#14 @ 27 -#if 27<16 - vld1.64 {d11},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d17,#18 -#if 27>0 - vadd.i64 d21,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d17,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d17,#50 - vsli.64 d25,d17,#46 - vmov d29,d17 - vsli.64 d26,d17,#23 -#if 27<16 && defined(__ARMEL__) - vrev64.8 , -#endif - veor d25,d24 - vbsl d29,d18,d19 @ Ch(e,f,g) - vshr.u64 d24,d21,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d20 - vshr.u64 d25,d21,#34 - vsli.64 d24,d21,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d21,#39 - vadd.i64 d28,d11 - vsli.64 d25,d21,#30 - veor d30,d21,d22 - vsli.64 d26,d21,#25 - veor d20,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d23,d22 @ Maj(a,b,c) - veor d20,d26 @ Sigma0(a) - vadd.i64 d16,d27 - vadd.i64 d30,d27 - @ vadd.i64 d20,d30 - vshr.u64 q12,q5,#19 - vshr.u64 q13,q5,#61 - vadd.i64 d20,d30 @ h+=Maj from the past - vshr.u64 q15,q5,#6 - vsli.64 q12,q5,#45 - vext.8 q14,q6,q7,#8 @ X[i+1] - vsli.64 q13,q5,#3 - veor q15,q12 - vshr.u64 q12,q14,#1 - veor q15,q13 @ sigma1(X[i+14]) - vshr.u64 q13,q14,#8 - vadd.i64 q6,q15 - vshr.u64 q15,q14,#7 - vsli.64 q12,q14,#63 - vsli.64 q13,q14,#56 - vext.8 q14,q2,q3,#8 @ X[i+9] - veor q15,q12 - vshr.u64 d24,d16,#14 @ from NEON_00_15 - vadd.i64 q6,q14 - vshr.u64 d25,d16,#18 @ from NEON_00_15 - veor q15,q13 @ sigma0(X[i+1]) - vshr.u64 d26,d16,#41 @ from NEON_00_15 - vadd.i64 q6,q15 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d16,#50 - vsli.64 d25,d16,#46 - vmov d29,d16 - vsli.64 d26,d16,#23 -#if 28<16 && defined(__ARMEL__) - vrev64.8 , -#endif - veor d25,d24 - vbsl d29,d17,d18 @ Ch(e,f,g) - vshr.u64 d24,d20,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d19 - vshr.u64 d25,d20,#34 - vsli.64 d24,d20,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d20,#39 - vadd.i64 d28,d12 - vsli.64 d25,d20,#30 - veor d30,d20,d21 - vsli.64 d26,d20,#25 - veor d19,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d22,d21 @ Maj(a,b,c) - veor d19,d26 @ Sigma0(a) - vadd.i64 d23,d27 - vadd.i64 d30,d27 - @ vadd.i64 d19,d30 - vshr.u64 d24,d23,#14 @ 29 -#if 29<16 - vld1.64 {d13},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d23,#18 -#if 29>0 - vadd.i64 d19,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d23,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d23,#50 - vsli.64 d25,d23,#46 - vmov d29,d23 - vsli.64 d26,d23,#23 -#if 29<16 && defined(__ARMEL__) - vrev64.8 , -#endif - veor d25,d24 - vbsl d29,d16,d17 @ Ch(e,f,g) - vshr.u64 d24,d19,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d18 - vshr.u64 d25,d19,#34 - vsli.64 d24,d19,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d19,#39 - vadd.i64 d28,d13 - vsli.64 d25,d19,#30 - veor d30,d19,d20 - vsli.64 d26,d19,#25 - veor d18,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d21,d20 @ Maj(a,b,c) - veor d18,d26 @ Sigma0(a) - vadd.i64 d22,d27 - vadd.i64 d30,d27 - @ vadd.i64 d18,d30 - vshr.u64 q12,q6,#19 - vshr.u64 q13,q6,#61 - vadd.i64 d18,d30 @ h+=Maj from the past - vshr.u64 q15,q6,#6 - vsli.64 q12,q6,#45 - vext.8 q14,q7,q0,#8 @ X[i+1] - vsli.64 q13,q6,#3 - veor q15,q12 - vshr.u64 q12,q14,#1 - veor q15,q13 @ sigma1(X[i+14]) - vshr.u64 q13,q14,#8 - vadd.i64 q7,q15 - vshr.u64 q15,q14,#7 - vsli.64 q12,q14,#63 - vsli.64 q13,q14,#56 - vext.8 q14,q3,q4,#8 @ X[i+9] - veor q15,q12 - vshr.u64 d24,d22,#14 @ from NEON_00_15 - vadd.i64 q7,q14 - vshr.u64 d25,d22,#18 @ from NEON_00_15 - veor q15,q13 @ sigma0(X[i+1]) - vshr.u64 d26,d22,#41 @ from NEON_00_15 - vadd.i64 q7,q15 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d22,#50 - vsli.64 d25,d22,#46 - vmov d29,d22 - vsli.64 d26,d22,#23 -#if 30<16 && defined(__ARMEL__) - vrev64.8 , -#endif - veor d25,d24 - vbsl d29,d23,d16 @ Ch(e,f,g) - vshr.u64 d24,d18,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d17 - vshr.u64 d25,d18,#34 - vsli.64 d24,d18,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d18,#39 - vadd.i64 d28,d14 - vsli.64 d25,d18,#30 - veor d30,d18,d19 - vsli.64 d26,d18,#25 - veor d17,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d20,d19 @ Maj(a,b,c) - veor d17,d26 @ Sigma0(a) - vadd.i64 d21,d27 - vadd.i64 d30,d27 - @ vadd.i64 d17,d30 - vshr.u64 d24,d21,#14 @ 31 -#if 31<16 - vld1.64 {d15},[r1]! @ handles unaligned -#endif - vshr.u64 d25,d21,#18 -#if 31>0 - vadd.i64 d17,d30 @ h+=Maj from the past -#endif - vshr.u64 d26,d21,#41 - vld1.64 {d28},[r3,:64]! @ K[i++] - vsli.64 d24,d21,#50 - vsli.64 d25,d21,#46 - vmov d29,d21 - vsli.64 d26,d21,#23 -#if 31<16 && defined(__ARMEL__) - vrev64.8 , -#endif - veor d25,d24 - vbsl d29,d22,d23 @ Ch(e,f,g) - vshr.u64 d24,d17,#28 - veor d26,d25 @ Sigma1(e) - vadd.i64 d27,d29,d16 - vshr.u64 d25,d17,#34 - vsli.64 d24,d17,#36 - vadd.i64 d27,d26 - vshr.u64 d26,d17,#39 - vadd.i64 d28,d15 - vsli.64 d25,d17,#30 - veor d30,d17,d18 - vsli.64 d26,d17,#25 - veor d16,d24,d25 - vadd.i64 d27,d28 - vbsl d30,d19,d18 @ Maj(a,b,c) - veor d16,d26 @ Sigma0(a) - vadd.i64 d20,d27 - vadd.i64 d30,d27 - @ vadd.i64 d16,d30 - bne L16_79_neon - - vadd.i64 d16,d30 @ h+=Maj from the past - vldmia r0,{d24,d25,d26,d27,d28,d29,d30,d31} @ load context to temp - vadd.i64 q8,q12 @ vectorized accumulate - vadd.i64 q9,q13 - vadd.i64 q10,q14 - vadd.i64 q11,q15 - vstmia r0,{d16,d17,d18,d19,d20,d21,d22,d23} @ save context - teq r1,r2 - sub r3,#640 @ rewind K512 - bne Loop_neon - - VFP_ABI_POP - bx lr @ .word 0xe12fff1e - -#endif -.byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.align 2 -#endif // !OPENSSL_NO_ASM diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv4-linux32.S temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv4-linux32.S --- temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv4-linux32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv4-linux32.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,15 +1,9 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#if defined(__arm__) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_ARM) && defined(__ELF__) @ Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. @ @ Licensed under the OpenSSL license (the "License"). You may not use @@ -65,7 +59,7 @@ @ was reflected in below two parameters as 0 and 4. Now caller is @ expected to maintain native byte order for whole 64-bit values. #ifndef __KERNEL__ -# include +# include # define VFP_ABI_PUSH vstmdb sp!,{d8-d15} # define VFP_ABI_POP vldmia sp!,{d8-d15} #else @@ -144,27 +138,27 @@ .size K512,.-K512 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) -.hidden GFp_armcap_P +.hidden OPENSSL_armcap_P .LOPENSSL_armcap: -.word GFp_armcap_P-.Lsha512_block_data_order +.word OPENSSL_armcap_P-.Lsha512_block_data_order .skip 32-4 #else .skip 32 #endif -.globl GFp_sha512_block_data_order -.hidden GFp_sha512_block_data_order -.type GFp_sha512_block_data_order,%function -GFp_sha512_block_data_order: +.globl sha512_block_data_order +.hidden sha512_block_data_order +.type sha512_block_data_order,%function +sha512_block_data_order: .Lsha512_block_data_order: #if __ARM_ARCH__<7 && !defined(__thumb2__) - sub r3,pc,#8 @ GFp_sha512_block_data_order + sub r3,pc,#8 @ sha512_block_data_order #else adr r3,.Lsha512_block_data_order #endif #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) ldr r12,.LOPENSSL_armcap - ldr r12,[r3,r12] @ GFp_armcap_P + ldr r12,[r3,r12] @ OPENSSL_armcap_P #ifdef __APPLE__ ldr r12,[r12] #endif @@ -548,7 +542,7 @@ moveq pc,lr @ be binary compatible with V4, yet .word 0xe12fff1e @ interoperable with Thumb ISA:-) #endif -.size GFp_sha512_block_data_order,.-GFp_sha512_block_data_order +.size sha512_block_data_order,.-sha512_block_data_order #if __ARM_MAX_ARCH__>=7 .arch armv7-a .fpu neon @@ -1881,6 +1875,4 @@ #endif .byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 2 -#endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_ARM) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv8-ios64.S temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv8-ios64.S --- temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv8-ios64.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv8-ios64.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,15 +1,10 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -// Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__APPLE__) +// Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. // // Licensed under the OpenSSL license (the "License"). You may not use // this file except in compliance with the License. You can obtain a copy @@ -37,6 +32,7 @@ // Denver 2.01 10.5 (+26%) 6.70 (+8%) // X-Gene 20.0 (+100%) 12.8 (+300%(***)) // Mongoose 2.36 13.0 (+50%) 8.36 (+33%) +// Kryo 1.92 17.4 (+30%) 11.2 (+8%) // // (*) Software SHA256 results are of lesser relevance, presented // mostly for informational purposes. @@ -45,22 +41,33 @@ // on Cortex-A53 (or by 4 cycles per round). // (***) Super-impressive coefficients over gcc-generated code are // indication of some compiler "pathology", most notably code -// generated with -mgeneral-regs-only is significanty faster +// generated with -mgeneral-regs-only is significantly faster // and the gap is only 40-90%. #ifndef __KERNEL__ -# include +# include #endif .text -.private_extern _GFp_armcap_P -.globl _GFp_sha512_block_data_order -.private_extern _GFp_sha512_block_data_order +.private_extern _OPENSSL_armcap_P +.globl _sha512_block_data_order +.private_extern _sha512_block_data_order .align 6 -_GFp_sha512_block_data_order: +_sha512_block_data_order: + AARCH64_VALID_CALL_TARGET +#ifndef __KERNEL__ +#if defined(OPENSSL_HWASAN) && __clang_major__ >= 10 + adrp x16,:pg_hi21_nc:_OPENSSL_armcap_P +#else + adrp x16,_OPENSSL_armcap_P@PAGE +#endif + ldr w16,[x16,_OPENSSL_armcap_P@PAGEOFF] + tst w16,#ARMV8_SHA512 + b.ne Lv8_entry +#endif AARCH64_SIGN_LINK_REGISTER stp x29,x30,[sp,#-128]! add x29,sp,#0 @@ -86,7 +93,7 @@ ldr x19,[x30],#8 // *K++ eor x28,x21,x22 // magic seed str x1,[x29,#112] -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x3,x3 // 0 #endif ror x16,x24,#14 @@ -109,7 +116,7 @@ add x27,x27,x28 // h+=Maj(a,b,c) ldr x28,[x30],#8 // *K++, x19 in next round //add x27,x27,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x4,x4 // 1 #endif ldp x5,x6,[x1],#2*8 @@ -134,7 +141,7 @@ add x26,x26,x19 // h+=Maj(a,b,c) ldr x19,[x30],#8 // *K++, x28 in next round //add x26,x26,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x5,x5 // 2 #endif add x26,x26,x17 // h+=Sigma0(a) @@ -158,7 +165,7 @@ add x25,x25,x28 // h+=Maj(a,b,c) ldr x28,[x30],#8 // *K++, x19 in next round //add x25,x25,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x6,x6 // 3 #endif ldp x7,x8,[x1],#2*8 @@ -183,7 +190,7 @@ add x24,x24,x19 // h+=Maj(a,b,c) ldr x19,[x30],#8 // *K++, x28 in next round //add x24,x24,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x7,x7 // 4 #endif add x24,x24,x17 // h+=Sigma0(a) @@ -207,7 +214,7 @@ add x23,x23,x28 // h+=Maj(a,b,c) ldr x28,[x30],#8 // *K++, x19 in next round //add x23,x23,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x8,x8 // 5 #endif ldp x9,x10,[x1],#2*8 @@ -232,7 +239,7 @@ add x22,x22,x19 // h+=Maj(a,b,c) ldr x19,[x30],#8 // *K++, x28 in next round //add x22,x22,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x9,x9 // 6 #endif add x22,x22,x17 // h+=Sigma0(a) @@ -256,7 +263,7 @@ add x21,x21,x28 // h+=Maj(a,b,c) ldr x28,[x30],#8 // *K++, x19 in next round //add x21,x21,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x10,x10 // 7 #endif ldp x11,x12,[x1],#2*8 @@ -281,7 +288,7 @@ add x20,x20,x19 // h+=Maj(a,b,c) ldr x19,[x30],#8 // *K++, x28 in next round //add x20,x20,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x11,x11 // 8 #endif add x20,x20,x17 // h+=Sigma0(a) @@ -305,7 +312,7 @@ add x27,x27,x28 // h+=Maj(a,b,c) ldr x28,[x30],#8 // *K++, x19 in next round //add x27,x27,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x12,x12 // 9 #endif ldp x13,x14,[x1],#2*8 @@ -330,7 +337,7 @@ add x26,x26,x19 // h+=Maj(a,b,c) ldr x19,[x30],#8 // *K++, x28 in next round //add x26,x26,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x13,x13 // 10 #endif add x26,x26,x17 // h+=Sigma0(a) @@ -354,7 +361,7 @@ add x25,x25,x28 // h+=Maj(a,b,c) ldr x28,[x30],#8 // *K++, x19 in next round //add x25,x25,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x14,x14 // 11 #endif ldp x15,x0,[x1],#2*8 @@ -380,7 +387,7 @@ add x24,x24,x19 // h+=Maj(a,b,c) ldr x19,[x30],#8 // *K++, x28 in next round //add x24,x24,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x15,x15 // 12 #endif add x24,x24,x17 // h+=Sigma0(a) @@ -405,7 +412,7 @@ add x23,x23,x28 // h+=Maj(a,b,c) ldr x28,[x30],#8 // *K++, x19 in next round //add x23,x23,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x0,x0 // 13 #endif ldp x1,x2,[x1] @@ -431,7 +438,7 @@ add x22,x22,x19 // h+=Maj(a,b,c) ldr x19,[x30],#8 // *K++, x28 in next round //add x22,x22,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x1,x1 // 14 #endif ldr x6,[sp,#24] @@ -457,7 +464,7 @@ add x21,x21,x28 // h+=Maj(a,b,c) ldr x28,[x30],#8 // *K++, x19 in next round //add x21,x21,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x2,x2 // 15 #endif ldr x7,[sp,#0] @@ -1075,4 +1082,525 @@ .byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 2 .align 2 -#endif // !OPENSSL_NO_ASM +.text +#ifndef __KERNEL__ + +.align 6 +sha512_block_armv8: +Lv8_entry: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ld1 {v16.16b,v17.16b,v18.16b,v19.16b},[x1],#64 // load input + ld1 {v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64 + + ld1 {v0.2d,v1.2d,v2.2d,v3.2d},[x0] // load context + adrp x3,LK512@PAGE + add x3,x3,LK512@PAGEOFF + + rev64 v16.16b,v16.16b + rev64 v17.16b,v17.16b + rev64 v18.16b,v18.16b + rev64 v19.16b,v19.16b + rev64 v20.16b,v20.16b + rev64 v21.16b,v21.16b + rev64 v22.16b,v22.16b + rev64 v23.16b,v23.16b + b Loop_hw + +.align 4 +Loop_hw: + ld1 {v24.2d},[x3],#16 + subs x2,x2,#1 + sub x4,x1,#128 + orr v26.16b,v0.16b,v0.16b // offload + orr v27.16b,v1.16b,v1.16b + orr v28.16b,v2.16b,v2.16b + orr v29.16b,v3.16b,v3.16b + csel x1,x1,x4,ne // conditional rewind + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.long 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.long 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.long 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.long 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.long 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.long 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.long 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.long 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.long 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.long 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.long 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.long 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.long 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.long 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.long 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.long 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.long 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.long 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v16.2d + ld1 {v16.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b + rev64 v16.16b,v16.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + ld1 {v24.2d},[x3],#16 + add v25.2d,v25.2d,v17.2d + ld1 {v17.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b + rev64 v17.16b,v17.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v18.2d + ld1 {v18.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b + rev64 v18.16b,v18.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + ld1 {v24.2d},[x3],#16 + add v25.2d,v25.2d,v19.2d + ld1 {v19.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b + rev64 v19.16b,v19.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v20.2d + ld1 {v20.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b + rev64 v20.16b,v20.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + ld1 {v24.2d},[x3],#16 + add v25.2d,v25.2d,v21.2d + ld1 {v21.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b + rev64 v21.16b,v21.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v22.2d + ld1 {v22.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b + rev64 v22.16b,v22.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + sub x3,x3,#80*8 // rewind + add v25.2d,v25.2d,v23.2d + ld1 {v23.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b + rev64 v23.16b,v23.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v0.2d,v0.2d,v26.2d // accumulate + add v1.2d,v1.2d,v27.2d + add v2.2d,v2.2d,v28.2d + add v3.2d,v3.2d,v29.2d + + cbnz x2,Loop_hw + + st1 {v0.2d,v1.2d,v2.2d,v3.2d},[x0] // store context + + ldr x29,[sp],#16 + ret + +#endif +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__APPLE__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv8-linux64.S temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv8-linux64.S --- temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv8-linux64.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv8-linux64.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,16 +1,10 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#if defined(__aarch64__) -// Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__ELF__) +// Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. // // Licensed under the OpenSSL license (the "License"). You may not use // this file except in compliance with the License. You can obtain a copy @@ -38,6 +32,7 @@ // Denver 2.01 10.5 (+26%) 6.70 (+8%) // X-Gene 20.0 (+100%) 12.8 (+300%(***)) // Mongoose 2.36 13.0 (+50%) 8.36 (+33%) +// Kryo 1.92 17.4 (+30%) 11.2 (+8%) // // (*) Software SHA256 results are of lesser relevance, presented // mostly for informational purposes. @@ -46,22 +41,33 @@ // on Cortex-A53 (or by 4 cycles per round). // (***) Super-impressive coefficients over gcc-generated code are // indication of some compiler "pathology", most notably code -// generated with -mgeneral-regs-only is significanty faster +// generated with -mgeneral-regs-only is significantly faster // and the gap is only 40-90%. #ifndef __KERNEL__ -# include +# include #endif .text -.hidden GFp_armcap_P -.globl GFp_sha512_block_data_order -.hidden GFp_sha512_block_data_order -.type GFp_sha512_block_data_order,%function +.hidden OPENSSL_armcap_P +.globl sha512_block_data_order +.hidden sha512_block_data_order +.type sha512_block_data_order,%function .align 6 -GFp_sha512_block_data_order: +sha512_block_data_order: + AARCH64_VALID_CALL_TARGET +#ifndef __KERNEL__ +#if defined(OPENSSL_HWASAN) && __clang_major__ >= 10 + adrp x16,:pg_hi21_nc:OPENSSL_armcap_P +#else + adrp x16,OPENSSL_armcap_P +#endif + ldr w16,[x16,:lo12:OPENSSL_armcap_P] + tst w16,#ARMV8_SHA512 + b.ne .Lv8_entry +#endif AARCH64_SIGN_LINK_REGISTER stp x29,x30,[sp,#-128]! add x29,sp,#0 @@ -87,7 +93,7 @@ ldr x19,[x30],#8 // *K++ eor x28,x21,x22 // magic seed str x1,[x29,#112] -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x3,x3 // 0 #endif ror x16,x24,#14 @@ -110,7 +116,7 @@ add x27,x27,x28 // h+=Maj(a,b,c) ldr x28,[x30],#8 // *K++, x19 in next round //add x27,x27,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x4,x4 // 1 #endif ldp x5,x6,[x1],#2*8 @@ -135,7 +141,7 @@ add x26,x26,x19 // h+=Maj(a,b,c) ldr x19,[x30],#8 // *K++, x28 in next round //add x26,x26,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x5,x5 // 2 #endif add x26,x26,x17 // h+=Sigma0(a) @@ -159,7 +165,7 @@ add x25,x25,x28 // h+=Maj(a,b,c) ldr x28,[x30],#8 // *K++, x19 in next round //add x25,x25,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x6,x6 // 3 #endif ldp x7,x8,[x1],#2*8 @@ -184,7 +190,7 @@ add x24,x24,x19 // h+=Maj(a,b,c) ldr x19,[x30],#8 // *K++, x28 in next round //add x24,x24,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x7,x7 // 4 #endif add x24,x24,x17 // h+=Sigma0(a) @@ -208,7 +214,7 @@ add x23,x23,x28 // h+=Maj(a,b,c) ldr x28,[x30],#8 // *K++, x19 in next round //add x23,x23,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x8,x8 // 5 #endif ldp x9,x10,[x1],#2*8 @@ -233,7 +239,7 @@ add x22,x22,x19 // h+=Maj(a,b,c) ldr x19,[x30],#8 // *K++, x28 in next round //add x22,x22,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x9,x9 // 6 #endif add x22,x22,x17 // h+=Sigma0(a) @@ -257,7 +263,7 @@ add x21,x21,x28 // h+=Maj(a,b,c) ldr x28,[x30],#8 // *K++, x19 in next round //add x21,x21,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x10,x10 // 7 #endif ldp x11,x12,[x1],#2*8 @@ -282,7 +288,7 @@ add x20,x20,x19 // h+=Maj(a,b,c) ldr x19,[x30],#8 // *K++, x28 in next round //add x20,x20,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x11,x11 // 8 #endif add x20,x20,x17 // h+=Sigma0(a) @@ -306,7 +312,7 @@ add x27,x27,x28 // h+=Maj(a,b,c) ldr x28,[x30],#8 // *K++, x19 in next round //add x27,x27,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x12,x12 // 9 #endif ldp x13,x14,[x1],#2*8 @@ -331,7 +337,7 @@ add x26,x26,x19 // h+=Maj(a,b,c) ldr x19,[x30],#8 // *K++, x28 in next round //add x26,x26,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x13,x13 // 10 #endif add x26,x26,x17 // h+=Sigma0(a) @@ -355,7 +361,7 @@ add x25,x25,x28 // h+=Maj(a,b,c) ldr x28,[x30],#8 // *K++, x19 in next round //add x25,x25,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x14,x14 // 11 #endif ldp x15,x0,[x1],#2*8 @@ -381,7 +387,7 @@ add x24,x24,x19 // h+=Maj(a,b,c) ldr x19,[x30],#8 // *K++, x28 in next round //add x24,x24,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x15,x15 // 12 #endif add x24,x24,x17 // h+=Sigma0(a) @@ -406,7 +412,7 @@ add x23,x23,x28 // h+=Maj(a,b,c) ldr x28,[x30],#8 // *K++, x19 in next round //add x23,x23,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x0,x0 // 13 #endif ldp x1,x2,[x1] @@ -432,7 +438,7 @@ add x22,x22,x19 // h+=Maj(a,b,c) ldr x19,[x30],#8 // *K++, x28 in next round //add x22,x22,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x1,x1 // 14 #endif ldr x6,[sp,#24] @@ -458,7 +464,7 @@ add x21,x21,x28 // h+=Maj(a,b,c) ldr x28,[x30],#8 // *K++, x19 in next round //add x21,x21,x17 // h+=Sigma0(a) -#ifndef __ARMEB__ +#ifndef __AARCH64EB__ rev x2,x2 // 15 #endif ldr x7,[sp,#0] @@ -1025,7 +1031,7 @@ ldp x29,x30,[sp],#128 AARCH64_VALIDATE_LINK_REGISTER ret -.size GFp_sha512_block_data_order,.-GFp_sha512_block_data_order +.size sha512_block_data_order,.-sha512_block_data_order .section .rodata .align 6 @@ -1076,6 +1082,525 @@ .byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 2 .align 2 +.text +#ifndef __KERNEL__ +.type sha512_block_armv8,%function +.align 6 +sha512_block_armv8: +.Lv8_entry: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ld1 {v16.16b,v17.16b,v18.16b,v19.16b},[x1],#64 // load input + ld1 {v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64 + + ld1 {v0.2d,v1.2d,v2.2d,v3.2d},[x0] // load context + adrp x3,.LK512 + add x3,x3,:lo12:.LK512 + + rev64 v16.16b,v16.16b + rev64 v17.16b,v17.16b + rev64 v18.16b,v18.16b + rev64 v19.16b,v19.16b + rev64 v20.16b,v20.16b + rev64 v21.16b,v21.16b + rev64 v22.16b,v22.16b + rev64 v23.16b,v23.16b + b .Loop_hw + +.align 4 +.Loop_hw: + ld1 {v24.2d},[x3],#16 + subs x2,x2,#1 + sub x4,x1,#128 + orr v26.16b,v0.16b,v0.16b // offload + orr v27.16b,v1.16b,v1.16b + orr v28.16b,v2.16b,v2.16b + orr v29.16b,v3.16b,v3.16b + csel x1,x1,x4,ne // conditional rewind + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.inst 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.inst 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.inst 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.inst 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.inst 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.inst 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.inst 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.inst 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.inst 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.inst 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.inst 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.inst 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.inst 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.inst 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.inst 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.inst 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.inst 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.inst 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.inst 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.inst 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.inst 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.inst 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.inst 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.inst 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.inst 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.inst 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.inst 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.inst 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.inst 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.inst 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.inst 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.inst 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.inst 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.inst 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.inst 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.inst 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.inst 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.inst 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.inst 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.inst 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.inst 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.inst 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.inst 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.inst 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.inst 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.inst 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.inst 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.inst 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.inst 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.inst 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.inst 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.inst 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.inst 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.inst 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.inst 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.inst 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.inst 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.inst 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.inst 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.inst 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.inst 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.inst 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.inst 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.inst 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v16.2d + ld1 {v16.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b + rev64 v16.16b,v16.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.inst 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + ld1 {v24.2d},[x3],#16 + add v25.2d,v25.2d,v17.2d + ld1 {v17.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b + rev64 v17.16b,v17.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.inst 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v18.2d + ld1 {v18.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b + rev64 v18.16b,v18.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.inst 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + ld1 {v24.2d},[x3],#16 + add v25.2d,v25.2d,v19.2d + ld1 {v19.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b + rev64 v19.16b,v19.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.inst 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v20.2d + ld1 {v20.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b + rev64 v20.16b,v20.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.inst 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + ld1 {v24.2d},[x3],#16 + add v25.2d,v25.2d,v21.2d + ld1 {v21.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b + rev64 v21.16b,v21.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.inst 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v22.2d + ld1 {v22.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b + rev64 v22.16b,v22.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.inst 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + sub x3,x3,#80*8 // rewind + add v25.2d,v25.2d,v23.2d + ld1 {v23.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b + rev64 v23.16b,v23.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.inst 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v0.2d,v0.2d,v26.2d // accumulate + add v1.2d,v1.2d,v27.2d + add v2.2d,v2.2d,v28.2d + add v3.2d,v3.2d,v29.2d + + cbnz x2,.Loop_hw + + st1 {v0.2d,v1.2d,v2.2d,v3.2d},[x0] // store context + + ldr x29,[sp],#16 + ret +.size sha512_block_armv8,.-sha512_block_armv8 #endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv8-win64.S temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv8-win64.S --- temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv8-win64.S 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/sha512-armv8-win64.S 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1610 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. + +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(_WIN32) +// Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. +// +// Licensed under the OpenSSL license (the "License"). You may not use +// this file except in compliance with the License. You can obtain a copy +// in the file LICENSE in the source distribution or at +// https://www.openssl.org/source/license.html + +// ==================================================================== +// Written by Andy Polyakov for the OpenSSL +// project. The module is, however, dual licensed under OpenSSL and +// CRYPTOGAMS licenses depending on where you obtain it. For further +// details see http://www.openssl.org/~appro/cryptogams/. +// +// Permission to use under GPLv2 terms is granted. +// ==================================================================== +// +// SHA256/512 for ARMv8. +// +// Performance in cycles per processed byte and improvement coefficient +// over code generated with "default" compiler: +// +// SHA256-hw SHA256(*) SHA512 +// Apple A7 1.97 10.5 (+33%) 6.73 (-1%(**)) +// Cortex-A53 2.38 15.5 (+115%) 10.0 (+150%(***)) +// Cortex-A57 2.31 11.6 (+86%) 7.51 (+260%(***)) +// Denver 2.01 10.5 (+26%) 6.70 (+8%) +// X-Gene 20.0 (+100%) 12.8 (+300%(***)) +// Mongoose 2.36 13.0 (+50%) 8.36 (+33%) +// Kryo 1.92 17.4 (+30%) 11.2 (+8%) +// +// (*) Software SHA256 results are of lesser relevance, presented +// mostly for informational purposes. +// (**) The result is a trade-off: it's possible to improve it by +// 10% (or by 1 cycle per round), but at the cost of 20% loss +// on Cortex-A53 (or by 4 cycles per round). +// (***) Super-impressive coefficients over gcc-generated code are +// indication of some compiler "pathology", most notably code +// generated with -mgeneral-regs-only is significantly faster +// and the gap is only 40-90%. + +#ifndef __KERNEL__ +# include +#endif + +.text + + + +.globl sha512_block_data_order + +.def sha512_block_data_order + .type 32 +.endef +.align 6 +sha512_block_data_order: + AARCH64_VALID_CALL_TARGET +#ifndef __KERNEL__ +#if defined(OPENSSL_HWASAN) && __clang_major__ >= 10 + adrp x16,:pg_hi21_nc:OPENSSL_armcap_P +#else + adrp x16,OPENSSL_armcap_P +#endif + ldr w16,[x16,:lo12:OPENSSL_armcap_P] + tst w16,#ARMV8_SHA512 + b.ne Lv8_entry +#endif + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-128]! + add x29,sp,#0 + + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#4*8 + + ldp x20,x21,[x0] // load context + ldp x22,x23,[x0,#2*8] + ldp x24,x25,[x0,#4*8] + add x2,x1,x2,lsl#7 // end of input + ldp x26,x27,[x0,#6*8] + adrp x30,LK512 + add x30,x30,:lo12:LK512 + stp x0,x2,[x29,#96] + +Loop: + ldp x3,x4,[x1],#2*8 + ldr x19,[x30],#8 // *K++ + eor x28,x21,x22 // magic seed + str x1,[x29,#112] +#ifndef __AARCH64EB__ + rev x3,x3 // 0 +#endif + ror x16,x24,#14 + add x27,x27,x19 // h+=K[i] + eor x6,x24,x24,ror#23 + and x17,x25,x24 + bic x19,x26,x24 + add x27,x27,x3 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x20,x21 // a^b, b^c in next round + eor x16,x16,x6,ror#18 // Sigma1(e) + ror x6,x20,#28 + add x27,x27,x17 // h+=Ch(e,f,g) + eor x17,x20,x20,ror#5 + add x27,x27,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x23,x23,x27 // d+=h + eor x28,x28,x21 // Maj(a,b,c) + eor x17,x6,x17,ror#34 // Sigma0(a) + add x27,x27,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x27,x27,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x4,x4 // 1 +#endif + ldp x5,x6,[x1],#2*8 + add x27,x27,x17 // h+=Sigma0(a) + ror x16,x23,#14 + add x26,x26,x28 // h+=K[i] + eor x7,x23,x23,ror#23 + and x17,x24,x23 + bic x28,x25,x23 + add x26,x26,x4 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x27,x20 // a^b, b^c in next round + eor x16,x16,x7,ror#18 // Sigma1(e) + ror x7,x27,#28 + add x26,x26,x17 // h+=Ch(e,f,g) + eor x17,x27,x27,ror#5 + add x26,x26,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x22,x22,x26 // d+=h + eor x19,x19,x20 // Maj(a,b,c) + eor x17,x7,x17,ror#34 // Sigma0(a) + add x26,x26,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x26,x26,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x5,x5 // 2 +#endif + add x26,x26,x17 // h+=Sigma0(a) + ror x16,x22,#14 + add x25,x25,x19 // h+=K[i] + eor x8,x22,x22,ror#23 + and x17,x23,x22 + bic x19,x24,x22 + add x25,x25,x5 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x26,x27 // a^b, b^c in next round + eor x16,x16,x8,ror#18 // Sigma1(e) + ror x8,x26,#28 + add x25,x25,x17 // h+=Ch(e,f,g) + eor x17,x26,x26,ror#5 + add x25,x25,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x21,x21,x25 // d+=h + eor x28,x28,x27 // Maj(a,b,c) + eor x17,x8,x17,ror#34 // Sigma0(a) + add x25,x25,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x25,x25,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x6,x6 // 3 +#endif + ldp x7,x8,[x1],#2*8 + add x25,x25,x17 // h+=Sigma0(a) + ror x16,x21,#14 + add x24,x24,x28 // h+=K[i] + eor x9,x21,x21,ror#23 + and x17,x22,x21 + bic x28,x23,x21 + add x24,x24,x6 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x25,x26 // a^b, b^c in next round + eor x16,x16,x9,ror#18 // Sigma1(e) + ror x9,x25,#28 + add x24,x24,x17 // h+=Ch(e,f,g) + eor x17,x25,x25,ror#5 + add x24,x24,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x20,x20,x24 // d+=h + eor x19,x19,x26 // Maj(a,b,c) + eor x17,x9,x17,ror#34 // Sigma0(a) + add x24,x24,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x24,x24,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x7,x7 // 4 +#endif + add x24,x24,x17 // h+=Sigma0(a) + ror x16,x20,#14 + add x23,x23,x19 // h+=K[i] + eor x10,x20,x20,ror#23 + and x17,x21,x20 + bic x19,x22,x20 + add x23,x23,x7 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x24,x25 // a^b, b^c in next round + eor x16,x16,x10,ror#18 // Sigma1(e) + ror x10,x24,#28 + add x23,x23,x17 // h+=Ch(e,f,g) + eor x17,x24,x24,ror#5 + add x23,x23,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x27,x27,x23 // d+=h + eor x28,x28,x25 // Maj(a,b,c) + eor x17,x10,x17,ror#34 // Sigma0(a) + add x23,x23,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x23,x23,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x8,x8 // 5 +#endif + ldp x9,x10,[x1],#2*8 + add x23,x23,x17 // h+=Sigma0(a) + ror x16,x27,#14 + add x22,x22,x28 // h+=K[i] + eor x11,x27,x27,ror#23 + and x17,x20,x27 + bic x28,x21,x27 + add x22,x22,x8 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x23,x24 // a^b, b^c in next round + eor x16,x16,x11,ror#18 // Sigma1(e) + ror x11,x23,#28 + add x22,x22,x17 // h+=Ch(e,f,g) + eor x17,x23,x23,ror#5 + add x22,x22,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x26,x26,x22 // d+=h + eor x19,x19,x24 // Maj(a,b,c) + eor x17,x11,x17,ror#34 // Sigma0(a) + add x22,x22,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x22,x22,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x9,x9 // 6 +#endif + add x22,x22,x17 // h+=Sigma0(a) + ror x16,x26,#14 + add x21,x21,x19 // h+=K[i] + eor x12,x26,x26,ror#23 + and x17,x27,x26 + bic x19,x20,x26 + add x21,x21,x9 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x22,x23 // a^b, b^c in next round + eor x16,x16,x12,ror#18 // Sigma1(e) + ror x12,x22,#28 + add x21,x21,x17 // h+=Ch(e,f,g) + eor x17,x22,x22,ror#5 + add x21,x21,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x25,x25,x21 // d+=h + eor x28,x28,x23 // Maj(a,b,c) + eor x17,x12,x17,ror#34 // Sigma0(a) + add x21,x21,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x21,x21,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x10,x10 // 7 +#endif + ldp x11,x12,[x1],#2*8 + add x21,x21,x17 // h+=Sigma0(a) + ror x16,x25,#14 + add x20,x20,x28 // h+=K[i] + eor x13,x25,x25,ror#23 + and x17,x26,x25 + bic x28,x27,x25 + add x20,x20,x10 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x21,x22 // a^b, b^c in next round + eor x16,x16,x13,ror#18 // Sigma1(e) + ror x13,x21,#28 + add x20,x20,x17 // h+=Ch(e,f,g) + eor x17,x21,x21,ror#5 + add x20,x20,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x24,x24,x20 // d+=h + eor x19,x19,x22 // Maj(a,b,c) + eor x17,x13,x17,ror#34 // Sigma0(a) + add x20,x20,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x20,x20,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x11,x11 // 8 +#endif + add x20,x20,x17 // h+=Sigma0(a) + ror x16,x24,#14 + add x27,x27,x19 // h+=K[i] + eor x14,x24,x24,ror#23 + and x17,x25,x24 + bic x19,x26,x24 + add x27,x27,x11 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x20,x21 // a^b, b^c in next round + eor x16,x16,x14,ror#18 // Sigma1(e) + ror x14,x20,#28 + add x27,x27,x17 // h+=Ch(e,f,g) + eor x17,x20,x20,ror#5 + add x27,x27,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x23,x23,x27 // d+=h + eor x28,x28,x21 // Maj(a,b,c) + eor x17,x14,x17,ror#34 // Sigma0(a) + add x27,x27,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x27,x27,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x12,x12 // 9 +#endif + ldp x13,x14,[x1],#2*8 + add x27,x27,x17 // h+=Sigma0(a) + ror x16,x23,#14 + add x26,x26,x28 // h+=K[i] + eor x15,x23,x23,ror#23 + and x17,x24,x23 + bic x28,x25,x23 + add x26,x26,x12 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x27,x20 // a^b, b^c in next round + eor x16,x16,x15,ror#18 // Sigma1(e) + ror x15,x27,#28 + add x26,x26,x17 // h+=Ch(e,f,g) + eor x17,x27,x27,ror#5 + add x26,x26,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x22,x22,x26 // d+=h + eor x19,x19,x20 // Maj(a,b,c) + eor x17,x15,x17,ror#34 // Sigma0(a) + add x26,x26,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x26,x26,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x13,x13 // 10 +#endif + add x26,x26,x17 // h+=Sigma0(a) + ror x16,x22,#14 + add x25,x25,x19 // h+=K[i] + eor x0,x22,x22,ror#23 + and x17,x23,x22 + bic x19,x24,x22 + add x25,x25,x13 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x26,x27 // a^b, b^c in next round + eor x16,x16,x0,ror#18 // Sigma1(e) + ror x0,x26,#28 + add x25,x25,x17 // h+=Ch(e,f,g) + eor x17,x26,x26,ror#5 + add x25,x25,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x21,x21,x25 // d+=h + eor x28,x28,x27 // Maj(a,b,c) + eor x17,x0,x17,ror#34 // Sigma0(a) + add x25,x25,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x25,x25,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x14,x14 // 11 +#endif + ldp x15,x0,[x1],#2*8 + add x25,x25,x17 // h+=Sigma0(a) + str x6,[sp,#24] + ror x16,x21,#14 + add x24,x24,x28 // h+=K[i] + eor x6,x21,x21,ror#23 + and x17,x22,x21 + bic x28,x23,x21 + add x24,x24,x14 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x25,x26 // a^b, b^c in next round + eor x16,x16,x6,ror#18 // Sigma1(e) + ror x6,x25,#28 + add x24,x24,x17 // h+=Ch(e,f,g) + eor x17,x25,x25,ror#5 + add x24,x24,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x20,x20,x24 // d+=h + eor x19,x19,x26 // Maj(a,b,c) + eor x17,x6,x17,ror#34 // Sigma0(a) + add x24,x24,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x24,x24,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x15,x15 // 12 +#endif + add x24,x24,x17 // h+=Sigma0(a) + str x7,[sp,#0] + ror x16,x20,#14 + add x23,x23,x19 // h+=K[i] + eor x7,x20,x20,ror#23 + and x17,x21,x20 + bic x19,x22,x20 + add x23,x23,x15 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x24,x25 // a^b, b^c in next round + eor x16,x16,x7,ror#18 // Sigma1(e) + ror x7,x24,#28 + add x23,x23,x17 // h+=Ch(e,f,g) + eor x17,x24,x24,ror#5 + add x23,x23,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x27,x27,x23 // d+=h + eor x28,x28,x25 // Maj(a,b,c) + eor x17,x7,x17,ror#34 // Sigma0(a) + add x23,x23,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x23,x23,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x0,x0 // 13 +#endif + ldp x1,x2,[x1] + add x23,x23,x17 // h+=Sigma0(a) + str x8,[sp,#8] + ror x16,x27,#14 + add x22,x22,x28 // h+=K[i] + eor x8,x27,x27,ror#23 + and x17,x20,x27 + bic x28,x21,x27 + add x22,x22,x0 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x23,x24 // a^b, b^c in next round + eor x16,x16,x8,ror#18 // Sigma1(e) + ror x8,x23,#28 + add x22,x22,x17 // h+=Ch(e,f,g) + eor x17,x23,x23,ror#5 + add x22,x22,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x26,x26,x22 // d+=h + eor x19,x19,x24 // Maj(a,b,c) + eor x17,x8,x17,ror#34 // Sigma0(a) + add x22,x22,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x22,x22,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x1,x1 // 14 +#endif + ldr x6,[sp,#24] + add x22,x22,x17 // h+=Sigma0(a) + str x9,[sp,#16] + ror x16,x26,#14 + add x21,x21,x19 // h+=K[i] + eor x9,x26,x26,ror#23 + and x17,x27,x26 + bic x19,x20,x26 + add x21,x21,x1 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x22,x23 // a^b, b^c in next round + eor x16,x16,x9,ror#18 // Sigma1(e) + ror x9,x22,#28 + add x21,x21,x17 // h+=Ch(e,f,g) + eor x17,x22,x22,ror#5 + add x21,x21,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x25,x25,x21 // d+=h + eor x28,x28,x23 // Maj(a,b,c) + eor x17,x9,x17,ror#34 // Sigma0(a) + add x21,x21,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x21,x21,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x2,x2 // 15 +#endif + ldr x7,[sp,#0] + add x21,x21,x17 // h+=Sigma0(a) + str x10,[sp,#24] + ror x16,x25,#14 + add x20,x20,x28 // h+=K[i] + ror x9,x4,#1 + and x17,x26,x25 + ror x8,x1,#19 + bic x28,x27,x25 + ror x10,x21,#28 + add x20,x20,x2 // h+=X[i] + eor x16,x16,x25,ror#18 + eor x9,x9,x4,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x21,x22 // a^b, b^c in next round + eor x16,x16,x25,ror#41 // Sigma1(e) + eor x10,x10,x21,ror#34 + add x20,x20,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x8,x8,x1,ror#61 + eor x9,x9,x4,lsr#7 // sigma0(X[i+1]) + add x20,x20,x16 // h+=Sigma1(e) + eor x19,x19,x22 // Maj(a,b,c) + eor x17,x10,x21,ror#39 // Sigma0(a) + eor x8,x8,x1,lsr#6 // sigma1(X[i+14]) + add x3,x3,x12 + add x24,x24,x20 // d+=h + add x20,x20,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x3,x3,x9 + add x20,x20,x17 // h+=Sigma0(a) + add x3,x3,x8 +Loop_16_xx: + ldr x8,[sp,#8] + str x11,[sp,#0] + ror x16,x24,#14 + add x27,x27,x19 // h+=K[i] + ror x10,x5,#1 + and x17,x25,x24 + ror x9,x2,#19 + bic x19,x26,x24 + ror x11,x20,#28 + add x27,x27,x3 // h+=X[i] + eor x16,x16,x24,ror#18 + eor x10,x10,x5,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x20,x21 // a^b, b^c in next round + eor x16,x16,x24,ror#41 // Sigma1(e) + eor x11,x11,x20,ror#34 + add x27,x27,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x9,x9,x2,ror#61 + eor x10,x10,x5,lsr#7 // sigma0(X[i+1]) + add x27,x27,x16 // h+=Sigma1(e) + eor x28,x28,x21 // Maj(a,b,c) + eor x17,x11,x20,ror#39 // Sigma0(a) + eor x9,x9,x2,lsr#6 // sigma1(X[i+14]) + add x4,x4,x13 + add x23,x23,x27 // d+=h + add x27,x27,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x4,x4,x10 + add x27,x27,x17 // h+=Sigma0(a) + add x4,x4,x9 + ldr x9,[sp,#16] + str x12,[sp,#8] + ror x16,x23,#14 + add x26,x26,x28 // h+=K[i] + ror x11,x6,#1 + and x17,x24,x23 + ror x10,x3,#19 + bic x28,x25,x23 + ror x12,x27,#28 + add x26,x26,x4 // h+=X[i] + eor x16,x16,x23,ror#18 + eor x11,x11,x6,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x27,x20 // a^b, b^c in next round + eor x16,x16,x23,ror#41 // Sigma1(e) + eor x12,x12,x27,ror#34 + add x26,x26,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x10,x10,x3,ror#61 + eor x11,x11,x6,lsr#7 // sigma0(X[i+1]) + add x26,x26,x16 // h+=Sigma1(e) + eor x19,x19,x20 // Maj(a,b,c) + eor x17,x12,x27,ror#39 // Sigma0(a) + eor x10,x10,x3,lsr#6 // sigma1(X[i+14]) + add x5,x5,x14 + add x22,x22,x26 // d+=h + add x26,x26,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x5,x5,x11 + add x26,x26,x17 // h+=Sigma0(a) + add x5,x5,x10 + ldr x10,[sp,#24] + str x13,[sp,#16] + ror x16,x22,#14 + add x25,x25,x19 // h+=K[i] + ror x12,x7,#1 + and x17,x23,x22 + ror x11,x4,#19 + bic x19,x24,x22 + ror x13,x26,#28 + add x25,x25,x5 // h+=X[i] + eor x16,x16,x22,ror#18 + eor x12,x12,x7,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x26,x27 // a^b, b^c in next round + eor x16,x16,x22,ror#41 // Sigma1(e) + eor x13,x13,x26,ror#34 + add x25,x25,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x11,x11,x4,ror#61 + eor x12,x12,x7,lsr#7 // sigma0(X[i+1]) + add x25,x25,x16 // h+=Sigma1(e) + eor x28,x28,x27 // Maj(a,b,c) + eor x17,x13,x26,ror#39 // Sigma0(a) + eor x11,x11,x4,lsr#6 // sigma1(X[i+14]) + add x6,x6,x15 + add x21,x21,x25 // d+=h + add x25,x25,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x6,x6,x12 + add x25,x25,x17 // h+=Sigma0(a) + add x6,x6,x11 + ldr x11,[sp,#0] + str x14,[sp,#24] + ror x16,x21,#14 + add x24,x24,x28 // h+=K[i] + ror x13,x8,#1 + and x17,x22,x21 + ror x12,x5,#19 + bic x28,x23,x21 + ror x14,x25,#28 + add x24,x24,x6 // h+=X[i] + eor x16,x16,x21,ror#18 + eor x13,x13,x8,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x25,x26 // a^b, b^c in next round + eor x16,x16,x21,ror#41 // Sigma1(e) + eor x14,x14,x25,ror#34 + add x24,x24,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x12,x12,x5,ror#61 + eor x13,x13,x8,lsr#7 // sigma0(X[i+1]) + add x24,x24,x16 // h+=Sigma1(e) + eor x19,x19,x26 // Maj(a,b,c) + eor x17,x14,x25,ror#39 // Sigma0(a) + eor x12,x12,x5,lsr#6 // sigma1(X[i+14]) + add x7,x7,x0 + add x20,x20,x24 // d+=h + add x24,x24,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x7,x7,x13 + add x24,x24,x17 // h+=Sigma0(a) + add x7,x7,x12 + ldr x12,[sp,#8] + str x15,[sp,#0] + ror x16,x20,#14 + add x23,x23,x19 // h+=K[i] + ror x14,x9,#1 + and x17,x21,x20 + ror x13,x6,#19 + bic x19,x22,x20 + ror x15,x24,#28 + add x23,x23,x7 // h+=X[i] + eor x16,x16,x20,ror#18 + eor x14,x14,x9,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x24,x25 // a^b, b^c in next round + eor x16,x16,x20,ror#41 // Sigma1(e) + eor x15,x15,x24,ror#34 + add x23,x23,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x13,x13,x6,ror#61 + eor x14,x14,x9,lsr#7 // sigma0(X[i+1]) + add x23,x23,x16 // h+=Sigma1(e) + eor x28,x28,x25 // Maj(a,b,c) + eor x17,x15,x24,ror#39 // Sigma0(a) + eor x13,x13,x6,lsr#6 // sigma1(X[i+14]) + add x8,x8,x1 + add x27,x27,x23 // d+=h + add x23,x23,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x8,x8,x14 + add x23,x23,x17 // h+=Sigma0(a) + add x8,x8,x13 + ldr x13,[sp,#16] + str x0,[sp,#8] + ror x16,x27,#14 + add x22,x22,x28 // h+=K[i] + ror x15,x10,#1 + and x17,x20,x27 + ror x14,x7,#19 + bic x28,x21,x27 + ror x0,x23,#28 + add x22,x22,x8 // h+=X[i] + eor x16,x16,x27,ror#18 + eor x15,x15,x10,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x23,x24 // a^b, b^c in next round + eor x16,x16,x27,ror#41 // Sigma1(e) + eor x0,x0,x23,ror#34 + add x22,x22,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x14,x14,x7,ror#61 + eor x15,x15,x10,lsr#7 // sigma0(X[i+1]) + add x22,x22,x16 // h+=Sigma1(e) + eor x19,x19,x24 // Maj(a,b,c) + eor x17,x0,x23,ror#39 // Sigma0(a) + eor x14,x14,x7,lsr#6 // sigma1(X[i+14]) + add x9,x9,x2 + add x26,x26,x22 // d+=h + add x22,x22,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x9,x9,x15 + add x22,x22,x17 // h+=Sigma0(a) + add x9,x9,x14 + ldr x14,[sp,#24] + str x1,[sp,#16] + ror x16,x26,#14 + add x21,x21,x19 // h+=K[i] + ror x0,x11,#1 + and x17,x27,x26 + ror x15,x8,#19 + bic x19,x20,x26 + ror x1,x22,#28 + add x21,x21,x9 // h+=X[i] + eor x16,x16,x26,ror#18 + eor x0,x0,x11,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x22,x23 // a^b, b^c in next round + eor x16,x16,x26,ror#41 // Sigma1(e) + eor x1,x1,x22,ror#34 + add x21,x21,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x15,x15,x8,ror#61 + eor x0,x0,x11,lsr#7 // sigma0(X[i+1]) + add x21,x21,x16 // h+=Sigma1(e) + eor x28,x28,x23 // Maj(a,b,c) + eor x17,x1,x22,ror#39 // Sigma0(a) + eor x15,x15,x8,lsr#6 // sigma1(X[i+14]) + add x10,x10,x3 + add x25,x25,x21 // d+=h + add x21,x21,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x10,x10,x0 + add x21,x21,x17 // h+=Sigma0(a) + add x10,x10,x15 + ldr x15,[sp,#0] + str x2,[sp,#24] + ror x16,x25,#14 + add x20,x20,x28 // h+=K[i] + ror x1,x12,#1 + and x17,x26,x25 + ror x0,x9,#19 + bic x28,x27,x25 + ror x2,x21,#28 + add x20,x20,x10 // h+=X[i] + eor x16,x16,x25,ror#18 + eor x1,x1,x12,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x21,x22 // a^b, b^c in next round + eor x16,x16,x25,ror#41 // Sigma1(e) + eor x2,x2,x21,ror#34 + add x20,x20,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x0,x0,x9,ror#61 + eor x1,x1,x12,lsr#7 // sigma0(X[i+1]) + add x20,x20,x16 // h+=Sigma1(e) + eor x19,x19,x22 // Maj(a,b,c) + eor x17,x2,x21,ror#39 // Sigma0(a) + eor x0,x0,x9,lsr#6 // sigma1(X[i+14]) + add x11,x11,x4 + add x24,x24,x20 // d+=h + add x20,x20,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x11,x11,x1 + add x20,x20,x17 // h+=Sigma0(a) + add x11,x11,x0 + ldr x0,[sp,#8] + str x3,[sp,#0] + ror x16,x24,#14 + add x27,x27,x19 // h+=K[i] + ror x2,x13,#1 + and x17,x25,x24 + ror x1,x10,#19 + bic x19,x26,x24 + ror x3,x20,#28 + add x27,x27,x11 // h+=X[i] + eor x16,x16,x24,ror#18 + eor x2,x2,x13,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x20,x21 // a^b, b^c in next round + eor x16,x16,x24,ror#41 // Sigma1(e) + eor x3,x3,x20,ror#34 + add x27,x27,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x1,x1,x10,ror#61 + eor x2,x2,x13,lsr#7 // sigma0(X[i+1]) + add x27,x27,x16 // h+=Sigma1(e) + eor x28,x28,x21 // Maj(a,b,c) + eor x17,x3,x20,ror#39 // Sigma0(a) + eor x1,x1,x10,lsr#6 // sigma1(X[i+14]) + add x12,x12,x5 + add x23,x23,x27 // d+=h + add x27,x27,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x12,x12,x2 + add x27,x27,x17 // h+=Sigma0(a) + add x12,x12,x1 + ldr x1,[sp,#16] + str x4,[sp,#8] + ror x16,x23,#14 + add x26,x26,x28 // h+=K[i] + ror x3,x14,#1 + and x17,x24,x23 + ror x2,x11,#19 + bic x28,x25,x23 + ror x4,x27,#28 + add x26,x26,x12 // h+=X[i] + eor x16,x16,x23,ror#18 + eor x3,x3,x14,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x27,x20 // a^b, b^c in next round + eor x16,x16,x23,ror#41 // Sigma1(e) + eor x4,x4,x27,ror#34 + add x26,x26,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x2,x2,x11,ror#61 + eor x3,x3,x14,lsr#7 // sigma0(X[i+1]) + add x26,x26,x16 // h+=Sigma1(e) + eor x19,x19,x20 // Maj(a,b,c) + eor x17,x4,x27,ror#39 // Sigma0(a) + eor x2,x2,x11,lsr#6 // sigma1(X[i+14]) + add x13,x13,x6 + add x22,x22,x26 // d+=h + add x26,x26,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x13,x13,x3 + add x26,x26,x17 // h+=Sigma0(a) + add x13,x13,x2 + ldr x2,[sp,#24] + str x5,[sp,#16] + ror x16,x22,#14 + add x25,x25,x19 // h+=K[i] + ror x4,x15,#1 + and x17,x23,x22 + ror x3,x12,#19 + bic x19,x24,x22 + ror x5,x26,#28 + add x25,x25,x13 // h+=X[i] + eor x16,x16,x22,ror#18 + eor x4,x4,x15,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x26,x27 // a^b, b^c in next round + eor x16,x16,x22,ror#41 // Sigma1(e) + eor x5,x5,x26,ror#34 + add x25,x25,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x3,x3,x12,ror#61 + eor x4,x4,x15,lsr#7 // sigma0(X[i+1]) + add x25,x25,x16 // h+=Sigma1(e) + eor x28,x28,x27 // Maj(a,b,c) + eor x17,x5,x26,ror#39 // Sigma0(a) + eor x3,x3,x12,lsr#6 // sigma1(X[i+14]) + add x14,x14,x7 + add x21,x21,x25 // d+=h + add x25,x25,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x14,x14,x4 + add x25,x25,x17 // h+=Sigma0(a) + add x14,x14,x3 + ldr x3,[sp,#0] + str x6,[sp,#24] + ror x16,x21,#14 + add x24,x24,x28 // h+=K[i] + ror x5,x0,#1 + and x17,x22,x21 + ror x4,x13,#19 + bic x28,x23,x21 + ror x6,x25,#28 + add x24,x24,x14 // h+=X[i] + eor x16,x16,x21,ror#18 + eor x5,x5,x0,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x25,x26 // a^b, b^c in next round + eor x16,x16,x21,ror#41 // Sigma1(e) + eor x6,x6,x25,ror#34 + add x24,x24,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x4,x4,x13,ror#61 + eor x5,x5,x0,lsr#7 // sigma0(X[i+1]) + add x24,x24,x16 // h+=Sigma1(e) + eor x19,x19,x26 // Maj(a,b,c) + eor x17,x6,x25,ror#39 // Sigma0(a) + eor x4,x4,x13,lsr#6 // sigma1(X[i+14]) + add x15,x15,x8 + add x20,x20,x24 // d+=h + add x24,x24,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x15,x15,x5 + add x24,x24,x17 // h+=Sigma0(a) + add x15,x15,x4 + ldr x4,[sp,#8] + str x7,[sp,#0] + ror x16,x20,#14 + add x23,x23,x19 // h+=K[i] + ror x6,x1,#1 + and x17,x21,x20 + ror x5,x14,#19 + bic x19,x22,x20 + ror x7,x24,#28 + add x23,x23,x15 // h+=X[i] + eor x16,x16,x20,ror#18 + eor x6,x6,x1,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x24,x25 // a^b, b^c in next round + eor x16,x16,x20,ror#41 // Sigma1(e) + eor x7,x7,x24,ror#34 + add x23,x23,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x5,x5,x14,ror#61 + eor x6,x6,x1,lsr#7 // sigma0(X[i+1]) + add x23,x23,x16 // h+=Sigma1(e) + eor x28,x28,x25 // Maj(a,b,c) + eor x17,x7,x24,ror#39 // Sigma0(a) + eor x5,x5,x14,lsr#6 // sigma1(X[i+14]) + add x0,x0,x9 + add x27,x27,x23 // d+=h + add x23,x23,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x0,x0,x6 + add x23,x23,x17 // h+=Sigma0(a) + add x0,x0,x5 + ldr x5,[sp,#16] + str x8,[sp,#8] + ror x16,x27,#14 + add x22,x22,x28 // h+=K[i] + ror x7,x2,#1 + and x17,x20,x27 + ror x6,x15,#19 + bic x28,x21,x27 + ror x8,x23,#28 + add x22,x22,x0 // h+=X[i] + eor x16,x16,x27,ror#18 + eor x7,x7,x2,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x23,x24 // a^b, b^c in next round + eor x16,x16,x27,ror#41 // Sigma1(e) + eor x8,x8,x23,ror#34 + add x22,x22,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x6,x6,x15,ror#61 + eor x7,x7,x2,lsr#7 // sigma0(X[i+1]) + add x22,x22,x16 // h+=Sigma1(e) + eor x19,x19,x24 // Maj(a,b,c) + eor x17,x8,x23,ror#39 // Sigma0(a) + eor x6,x6,x15,lsr#6 // sigma1(X[i+14]) + add x1,x1,x10 + add x26,x26,x22 // d+=h + add x22,x22,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x1,x1,x7 + add x22,x22,x17 // h+=Sigma0(a) + add x1,x1,x6 + ldr x6,[sp,#24] + str x9,[sp,#16] + ror x16,x26,#14 + add x21,x21,x19 // h+=K[i] + ror x8,x3,#1 + and x17,x27,x26 + ror x7,x0,#19 + bic x19,x20,x26 + ror x9,x22,#28 + add x21,x21,x1 // h+=X[i] + eor x16,x16,x26,ror#18 + eor x8,x8,x3,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x22,x23 // a^b, b^c in next round + eor x16,x16,x26,ror#41 // Sigma1(e) + eor x9,x9,x22,ror#34 + add x21,x21,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x7,x7,x0,ror#61 + eor x8,x8,x3,lsr#7 // sigma0(X[i+1]) + add x21,x21,x16 // h+=Sigma1(e) + eor x28,x28,x23 // Maj(a,b,c) + eor x17,x9,x22,ror#39 // Sigma0(a) + eor x7,x7,x0,lsr#6 // sigma1(X[i+14]) + add x2,x2,x11 + add x25,x25,x21 // d+=h + add x21,x21,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x2,x2,x8 + add x21,x21,x17 // h+=Sigma0(a) + add x2,x2,x7 + ldr x7,[sp,#0] + str x10,[sp,#24] + ror x16,x25,#14 + add x20,x20,x28 // h+=K[i] + ror x9,x4,#1 + and x17,x26,x25 + ror x8,x1,#19 + bic x28,x27,x25 + ror x10,x21,#28 + add x20,x20,x2 // h+=X[i] + eor x16,x16,x25,ror#18 + eor x9,x9,x4,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x21,x22 // a^b, b^c in next round + eor x16,x16,x25,ror#41 // Sigma1(e) + eor x10,x10,x21,ror#34 + add x20,x20,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x8,x8,x1,ror#61 + eor x9,x9,x4,lsr#7 // sigma0(X[i+1]) + add x20,x20,x16 // h+=Sigma1(e) + eor x19,x19,x22 // Maj(a,b,c) + eor x17,x10,x21,ror#39 // Sigma0(a) + eor x8,x8,x1,lsr#6 // sigma1(X[i+14]) + add x3,x3,x12 + add x24,x24,x20 // d+=h + add x20,x20,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x3,x3,x9 + add x20,x20,x17 // h+=Sigma0(a) + add x3,x3,x8 + cbnz x19,Loop_16_xx + + ldp x0,x2,[x29,#96] + ldr x1,[x29,#112] + sub x30,x30,#648 // rewind + + ldp x3,x4,[x0] + ldp x5,x6,[x0,#2*8] + add x1,x1,#14*8 // advance input pointer + ldp x7,x8,[x0,#4*8] + add x20,x20,x3 + ldp x9,x10,[x0,#6*8] + add x21,x21,x4 + add x22,x22,x5 + add x23,x23,x6 + stp x20,x21,[x0] + add x24,x24,x7 + add x25,x25,x8 + stp x22,x23,[x0,#2*8] + add x26,x26,x9 + add x27,x27,x10 + cmp x1,x2 + stp x24,x25,[x0,#4*8] + stp x26,x27,[x0,#6*8] + b.ne Loop + + ldp x19,x20,[x29,#16] + add sp,sp,#4*8 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#128 + AARCH64_VALIDATE_LINK_REGISTER + ret + + +.section .rodata +.align 6 + +LK512: +.quad 0x428a2f98d728ae22,0x7137449123ef65cd +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc +.quad 0x3956c25bf348b538,0x59f111f1b605d019 +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 +.quad 0xd807aa98a3030242,0x12835b0145706fbe +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 +.quad 0x9bdc06a725c71235,0xc19bf174cf692694 +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 +.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65 +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 +.quad 0x983e5152ee66dfab,0xa831c66d2db43210 +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 +.quad 0x06ca6351e003826f,0x142929670a0e6e70 +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8 +.quad 0x81c2c92e47edaee6,0x92722c851482353b +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30 +.quad 0xd192e819d6ef5218,0xd69906245565a910 +.quad 0xf40e35855771202a,0x106aa07032bbd1b8 +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60 +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec +.quad 0x90befffa23631e28,0xa4506cebde82bde9 +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b +.quad 0xca273eceea26619c,0xd186b8c721c0c207 +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 +.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6 +.quad 0x113f9804bef90dae,0x1b710b35131c471b +.quad 0x28db77f523047d84,0x32caab7b40c72493 +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 +.quad 0 // terminator + +.byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.align 2 +.text +#ifndef __KERNEL__ +.def sha512_block_armv8 + .type 32 +.endef +.align 6 +sha512_block_armv8: +Lv8_entry: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ld1 {v16.16b,v17.16b,v18.16b,v19.16b},[x1],#64 // load input + ld1 {v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64 + + ld1 {v0.2d,v1.2d,v2.2d,v3.2d},[x0] // load context + adrp x3,LK512 + add x3,x3,:lo12:LK512 + + rev64 v16.16b,v16.16b + rev64 v17.16b,v17.16b + rev64 v18.16b,v18.16b + rev64 v19.16b,v19.16b + rev64 v20.16b,v20.16b + rev64 v21.16b,v21.16b + rev64 v22.16b,v22.16b + rev64 v23.16b,v23.16b + b Loop_hw + +.align 4 +Loop_hw: + ld1 {v24.2d},[x3],#16 + subs x2,x2,#1 + sub x4,x1,#128 + orr v26.16b,v0.16b,v0.16b // offload + orr v27.16b,v1.16b,v1.16b + orr v28.16b,v2.16b,v2.16b + orr v29.16b,v3.16b,v3.16b + csel x1,x1,x4,ne // conditional rewind + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.long 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.long 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.long 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.long 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.long 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.long 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.long 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.long 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.long 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.long 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.long 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.long 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.long 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.long 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.long 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.long 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.long 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.long 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v16.2d + ld1 {v16.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b + rev64 v16.16b,v16.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + ld1 {v24.2d},[x3],#16 + add v25.2d,v25.2d,v17.2d + ld1 {v17.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b + rev64 v17.16b,v17.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v18.2d + ld1 {v18.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b + rev64 v18.16b,v18.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + ld1 {v24.2d},[x3],#16 + add v25.2d,v25.2d,v19.2d + ld1 {v19.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b + rev64 v19.16b,v19.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v20.2d + ld1 {v20.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b + rev64 v20.16b,v20.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + ld1 {v24.2d},[x3],#16 + add v25.2d,v25.2d,v21.2d + ld1 {v21.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b + rev64 v21.16b,v21.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v22.2d + ld1 {v22.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b + rev64 v22.16b,v22.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + sub x3,x3,#80*8 // rewind + add v25.2d,v25.2d,v23.2d + ld1 {v23.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b + rev64 v23.16b,v23.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v0.2d,v0.2d,v26.2d // accumulate + add v1.2d,v1.2d,v27.2d + add v2.2d,v2.2d,v28.2d + add v3.2d,v3.2d,v29.2d + + cbnz x2,Loop_hw + + st1 {v0.2d,v1.2d,v2.2d,v3.2d},[x0] // store context + + ldr x29,[sp],#16 + ret + +#endif +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(_WIN32) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/sha512-x86_64-elf.S temporalio-1.3.0/vendor/ring/pregenerated/sha512-x86_64-elf.S --- temporalio-1.3.0/vendor/ring/pregenerated/sha512-x86_64-elf.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/sha512-x86_64-elf.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,24 +1,21 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__ELF__) .text -.extern GFp_ia32cap_P -.hidden GFp_ia32cap_P -.globl GFp_sha512_block_data_order -.hidden GFp_sha512_block_data_order -.type GFp_sha512_block_data_order,@function +.extern OPENSSL_ia32cap_P +.hidden OPENSSL_ia32cap_P +.globl sha512_block_data_order +.hidden sha512_block_data_order +.type sha512_block_data_order,@function .align 16 -GFp_sha512_block_data_order: +sha512_block_data_order: .cfi_startproc - leaq GFp_ia32cap_P(%rip),%r11 +_CET_ENDBR + leaq OPENSSL_ia32cap_P(%rip),%r11 movl 0(%r11),%r9d movl 4(%r11),%r10d movl 8(%r11),%r11d @@ -1730,9 +1727,10 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Lepilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_sha512_block_data_order,.-GFp_sha512_block_data_order +.size sha512_block_data_order,.-sha512_block_data_order +.section .rodata .align 64 .type K512,@object K512: @@ -1820,9 +1818,10 @@ .quad 0x0001020304050607,0x08090a0b0c0d0e0f .quad 0x0001020304050607,0x08090a0b0c0d0e0f .byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.type GFp_sha512_block_data_order_avx,@function +.text +.type sha512_block_data_order_avx,@function .align 64 -GFp_sha512_block_data_order_avx: +sha512_block_data_order_avx: .cfi_startproc .Lavx_shortcut: movq %rsp,%rax @@ -2982,8 +2981,7 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Lepilogue_avx: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_sha512_block_data_order_avx,.-GFp_sha512_block_data_order_avx +.size sha512_block_data_order_avx,.-sha512_block_data_order_avx #endif -.section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/sha512-x86_64-macosx.S temporalio-1.3.0/vendor/ring/pregenerated/sha512-x86_64-macosx.S --- temporalio-1.3.0/vendor/ring/pregenerated/sha512-x86_64-macosx.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/sha512-x86_64-macosx.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,23 +1,20 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__APPLE__) .text -.globl _GFp_sha512_block_data_order -.private_extern _GFp_sha512_block_data_order +.globl _sha512_block_data_order +.private_extern _sha512_block_data_order .p2align 4 -_GFp_sha512_block_data_order: +_sha512_block_data_order: - leaq _GFp_ia32cap_P(%rip),%r11 +_CET_ENDBR + leaq _OPENSSL_ia32cap_P(%rip),%r11 movl 0(%r11),%r9d movl 4(%r11),%r10d movl 8(%r11),%r11d @@ -1729,9 +1726,10 @@ leaq (%rsi),%rsp L$epilogue: - .byte 0xf3,0xc3 + ret +.section __DATA,__const .p2align 6 K512: @@ -1819,9 +1817,10 @@ .quad 0x0001020304050607,0x08090a0b0c0d0e0f .quad 0x0001020304050607,0x08090a0b0c0d0e0f .byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.text .p2align 6 -GFp_sha512_block_data_order_avx: +sha512_block_data_order_avx: L$avx_shortcut: movq %rsp,%rax @@ -2981,7 +2980,7 @@ leaq (%rsi),%rsp L$epilogue_avx: - .byte 0xf3,0xc3 + ret #endif Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/pregenerated/sha512-x86_64-nasm.obj and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/pregenerated/sha512-x86_64-nasm.obj differ diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/aesni-gcm-x86_64-nasm.asm temporalio-1.3.0/vendor/ring/pregenerated/tmp/aesni-gcm-x86_64-nasm.asm --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/aesni-gcm-x86_64-nasm.asm 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/aesni-gcm-x86_64-nasm.asm 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,14 @@ ; This file is generated from a similarly-named Perl script in the BoringSSL ; source tree. Do not edit by hand. +%ifidn __OUTPUT_FORMAT__, win64 default rel %define XMMWORD %define YMMWORD %define ZMMWORD +%define _CET_ENDBR + +%include "ring_core_generated/prefix_symbols_nasm.inc" section .text code align=64 @@ -13,9 +17,9 @@ _aesni_ctr32_ghash_6x: vmovdqu xmm2,XMMWORD[32+r11] - sub rdx,6 + sub r8,6 vpxor xmm4,xmm4,xmm4 - vmovdqu xmm15,XMMWORD[((0-128))+rcx] + vmovdqu xmm15,XMMWORD[((0-128))+r9] vpaddb xmm10,xmm1,xmm2 vpaddb xmm11,xmm10,xmm2 vpaddb xmm12,xmm11,xmm2 @@ -29,16 +33,16 @@ $L$oop6x: add ebx,100663296 jc NEAR $L$handle_ctr32 - vmovdqu xmm3,XMMWORD[((0-32))+r9] + vmovdqu xmm3,XMMWORD[((0-32))+rsi] vpaddb xmm1,xmm14,xmm2 vpxor xmm10,xmm10,xmm15 vpxor xmm11,xmm11,xmm15 $L$resume_ctr32: - vmovdqu XMMWORD[r8],xmm1 + vmovdqu XMMWORD[rdi],xmm1 vpclmulqdq xmm5,xmm7,xmm3,0x10 vpxor xmm12,xmm12,xmm15 - vmovups xmm2,XMMWORD[((16-128))+rcx] + vmovups xmm2,XMMWORD[((16-128))+r9] vpclmulqdq xmm6,xmm7,xmm3,0x01 @@ -69,7 +73,7 @@ setnc r12b vpclmulqdq xmm7,xmm7,xmm3,0x11 vaesenc xmm11,xmm11,xmm2 - vmovdqu xmm3,XMMWORD[((16-32))+r9] + vmovdqu xmm3,XMMWORD[((16-32))+rsi] neg r12 vaesenc xmm12,xmm12,xmm2 vpxor xmm6,xmm6,xmm5 @@ -78,7 +82,7 @@ vaesenc xmm13,xmm13,xmm2 vpxor xmm4,xmm1,xmm5 and r12,0x60 - vmovups xmm15,XMMWORD[((32-128))+rcx] + vmovups xmm15,XMMWORD[((32-128))+r9] vpclmulqdq xmm1,xmm0,xmm3,0x10 vaesenc xmm14,xmm14,xmm2 @@ -96,10 +100,10 @@ mov QWORD[((32+8))+rsp],r13 vaesenc xmm13,xmm13,xmm15 mov QWORD[((40+8))+rsp],r12 - vmovdqu xmm5,XMMWORD[((48-32))+r9] + vmovdqu xmm5,XMMWORD[((48-32))+rsi] vaesenc xmm14,xmm14,xmm15 - vmovups xmm15,XMMWORD[((48-128))+rcx] + vmovups xmm15,XMMWORD[((48-128))+r9] vpxor xmm6,xmm6,xmm1 vpclmulqdq xmm1,xmm0,xmm5,0x00 vaesenc xmm9,xmm9,xmm15 @@ -114,10 +118,10 @@ vaesenc xmm12,xmm12,xmm15 vaesenc xmm13,xmm13,xmm15 vpxor xmm4,xmm4,xmm1 - vmovdqu xmm1,XMMWORD[((64-32))+r9] + vmovdqu xmm1,XMMWORD[((64-32))+rsi] vaesenc xmm14,xmm14,xmm15 - vmovups xmm15,XMMWORD[((64-128))+rcx] + vmovups xmm15,XMMWORD[((64-128))+r9] vpxor xmm6,xmm6,xmm2 vpclmulqdq xmm2,xmm0,xmm1,0x00 vaesenc xmm9,xmm9,xmm15 @@ -136,10 +140,10 @@ vaesenc xmm13,xmm13,xmm15 mov QWORD[((56+8))+rsp],r12 vpxor xmm4,xmm4,xmm2 - vmovdqu xmm2,XMMWORD[((96-32))+r9] + vmovdqu xmm2,XMMWORD[((96-32))+rsi] vaesenc xmm14,xmm14,xmm15 - vmovups xmm15,XMMWORD[((80-128))+rcx] + vmovups xmm15,XMMWORD[((80-128))+r9] vpxor xmm6,xmm6,xmm3 vpclmulqdq xmm3,xmm0,xmm2,0x00 vaesenc xmm9,xmm9,xmm15 @@ -158,10 +162,10 @@ vaesenc xmm13,xmm13,xmm15 mov QWORD[((72+8))+rsp],r12 vpxor xmm4,xmm4,xmm3 - vmovdqu xmm3,XMMWORD[((112-32))+r9] + vmovdqu xmm3,XMMWORD[((112-32))+rsi] vaesenc xmm14,xmm14,xmm15 - vmovups xmm15,XMMWORD[((96-128))+rcx] + vmovups xmm15,XMMWORD[((96-128))+r9] vpxor xmm6,xmm6,xmm5 vpclmulqdq xmm5,xmm8,xmm3,0x10 vaesenc xmm9,xmm9,xmm15 @@ -182,7 +186,7 @@ vaesenc xmm14,xmm14,xmm15 vpxor xmm6,xmm6,xmm1 - vmovups xmm15,XMMWORD[((112-128))+rcx] + vmovups xmm15,XMMWORD[((112-128))+r9] vpslldq xmm5,xmm6,8 vpxor xmm4,xmm4,xmm2 vmovdqu xmm3,XMMWORD[16+r11] @@ -200,11 +204,11 @@ vaesenc xmm12,xmm12,xmm15 mov QWORD[((104+8))+rsp],r12 vaesenc xmm13,xmm13,xmm15 - vmovups xmm1,XMMWORD[((128-128))+rcx] + vmovups xmm1,XMMWORD[((128-128))+r9] vaesenc xmm14,xmm14,xmm15 vaesenc xmm9,xmm9,xmm1 - vmovups xmm15,XMMWORD[((144-128))+rcx] + vmovups xmm15,XMMWORD[((144-128))+r9] vaesenc xmm10,xmm10,xmm1 vpsrldq xmm6,xmm6,8 vaesenc xmm11,xmm11,xmm1 @@ -215,8 +219,8 @@ vaesenc xmm13,xmm13,xmm1 movbe r12,QWORD[r14] vaesenc xmm14,xmm14,xmm1 - vmovups xmm1,XMMWORD[((160-128))+rcx] - cmp ebp,11 + vmovups xmm1,XMMWORD[((160-128))+r9] + cmp r10d,11 jb NEAR $L$enc_tail vaesenc xmm9,xmm9,xmm15 @@ -231,9 +235,9 @@ vaesenc xmm11,xmm11,xmm1 vaesenc xmm12,xmm12,xmm1 vaesenc xmm13,xmm13,xmm1 - vmovups xmm15,XMMWORD[((176-128))+rcx] + vmovups xmm15,XMMWORD[((176-128))+r9] vaesenc xmm14,xmm14,xmm1 - vmovups xmm1,XMMWORD[((192-128))+rcx] + vmovups xmm1,XMMWORD[((192-128))+r9] vaesenc xmm9,xmm9,xmm15 @@ -248,9 +252,9 @@ vaesenc xmm11,xmm11,xmm1 vaesenc xmm12,xmm12,xmm1 vaesenc xmm13,xmm13,xmm1 - vmovups xmm15,XMMWORD[((208-128))+rcx] + vmovups xmm15,XMMWORD[((208-128))+r9] vaesenc xmm14,xmm14,xmm1 - vmovups xmm1,XMMWORD[((224-128))+rcx] + vmovups xmm1,XMMWORD[((224-128))+r9] jmp NEAR $L$enc_tail ALIGN 32 @@ -260,7 +264,7 @@ vmovdqu xmm5,XMMWORD[48+r11] vpaddd xmm10,xmm6,XMMWORD[64+r11] vpaddd xmm11,xmm6,xmm5 - vmovdqu xmm3,XMMWORD[((0-32))+r9] + vmovdqu xmm3,XMMWORD[((0-32))+rsi] vpaddd xmm12,xmm10,xmm5 vpshufb xmm10,xmm10,xmm0 vpaddd xmm13,xmm11,xmm5 @@ -282,29 +286,32 @@ vpalignr xmm8,xmm4,xmm4,8 vaesenc xmm10,xmm10,xmm15 vpclmulqdq xmm4,xmm4,xmm3,0x10 - vpxor xmm2,xmm1,XMMWORD[rdi] + vpxor xmm2,xmm1,XMMWORD[rcx] vaesenc xmm11,xmm11,xmm15 - vpxor xmm0,xmm1,XMMWORD[16+rdi] + vpxor xmm0,xmm1,XMMWORD[16+rcx] vaesenc xmm12,xmm12,xmm15 - vpxor xmm5,xmm1,XMMWORD[32+rdi] + vpxor xmm5,xmm1,XMMWORD[32+rcx] vaesenc xmm13,xmm13,xmm15 - vpxor xmm6,xmm1,XMMWORD[48+rdi] + vpxor xmm6,xmm1,XMMWORD[48+rcx] vaesenc xmm14,xmm14,xmm15 - vpxor xmm7,xmm1,XMMWORD[64+rdi] - vpxor xmm3,xmm1,XMMWORD[80+rdi] - vmovdqu xmm1,XMMWORD[r8] + vpxor xmm7,xmm1,XMMWORD[64+rcx] + vpxor xmm3,xmm1,XMMWORD[80+rcx] + vmovdqu xmm1,XMMWORD[rdi] vaesenclast xmm9,xmm9,xmm2 vmovdqu xmm2,XMMWORD[32+r11] vaesenclast xmm10,xmm10,xmm0 vpaddb xmm0,xmm1,xmm2 mov QWORD[((112+8))+rsp],r13 - lea rdi,[96+rdi] + lea rcx,[96+rcx] + + prefetcht0 [512+rcx] + prefetcht0 [576+rcx] vaesenclast xmm11,xmm11,xmm5 vpaddb xmm5,xmm0,xmm2 mov QWORD[((120+8))+rsp],r12 - lea rsi,[96+rsi] - vmovdqu xmm15,XMMWORD[((0-128))+rcx] + lea rdx,[96+rdx] + vmovdqu xmm15,XMMWORD[((0-128))+r9] vaesenclast xmm12,xmm12,xmm6 vpaddb xmm6,xmm5,xmm2 vaesenclast xmm13,xmm13,xmm7 @@ -312,21 +319,21 @@ vaesenclast xmm14,xmm14,xmm3 vpaddb xmm3,xmm7,xmm2 - add r10,0x60 - sub rdx,0x6 + add rax,0x60 + sub r8,0x6 jc NEAR $L$6x_done - vmovups XMMWORD[(-96)+rsi],xmm9 + vmovups XMMWORD[(-96)+rdx],xmm9 vpxor xmm9,xmm1,xmm15 - vmovups XMMWORD[(-80)+rsi],xmm10 + vmovups XMMWORD[(-80)+rdx],xmm10 vmovdqa xmm10,xmm0 - vmovups XMMWORD[(-64)+rsi],xmm11 + vmovups XMMWORD[(-64)+rdx],xmm11 vmovdqa xmm11,xmm5 - vmovups XMMWORD[(-48)+rsi],xmm12 + vmovups XMMWORD[(-48)+rdx],xmm12 vmovdqa xmm12,xmm6 - vmovups XMMWORD[(-32)+rsi],xmm13 + vmovups XMMWORD[(-32)+rdx],xmm13 vmovdqa xmm13,xmm7 - vmovups XMMWORD[(-16)+rsi],xmm14 + vmovups XMMWORD[(-16)+rdx],xmm14 vmovdqa xmm14,xmm3 vmovdqu xmm7,XMMWORD[((32+8))+rsp] jmp NEAR $L$oop6x @@ -335,73 +342,91 @@ vpxor xmm8,xmm8,XMMWORD[((16+8))+rsp] vpxor xmm8,xmm8,xmm4 - DB 0F3h,0C3h ;repret + ret -global GFp_aesni_gcm_decrypt +global aesni_gcm_decrypt ALIGN 32 -GFp_aesni_gcm_decrypt: - mov QWORD[8+rsp],rdi ;WIN64 prologue - mov QWORD[16+rsp],rsi - mov rax,rsp -$L$SEH_begin_GFp_aesni_gcm_decrypt: - mov rdi,rcx - mov rsi,rdx - mov rdx,r8 - mov rcx,r9 - mov r8,QWORD[40+rsp] - mov r9,QWORD[48+rsp] - - +aesni_gcm_decrypt: - xor r10,r10 +$L$SEH_begin_aesni_gcm_decrypt_1: +_CET_ENDBR + xor rax,rax - cmp rdx,0x60 + cmp r8,0x60 jb NEAR $L$gcm_dec_abort - lea rax,[rsp] + push rbp - push rbx +$L$SEH_prolog_aesni_gcm_decrypt_2: + mov rbp,rsp - push rbp + push rbx +$L$SEH_prolog_aesni_gcm_decrypt_3: push r12 +$L$SEH_prolog_aesni_gcm_decrypt_4: push r13 +$L$SEH_prolog_aesni_gcm_decrypt_5: push r14 +$L$SEH_prolog_aesni_gcm_decrypt_6: push r15 +$L$SEH_prolog_aesni_gcm_decrypt_7: lea rsp,[((-168))+rsp] - movaps XMMWORD[(-216)+rax],xmm6 - movaps XMMWORD[(-200)+rax],xmm7 - movaps XMMWORD[(-184)+rax],xmm8 - movaps XMMWORD[(-168)+rax],xmm9 - movaps XMMWORD[(-152)+rax],xmm10 - movaps XMMWORD[(-136)+rax],xmm11 - movaps XMMWORD[(-120)+rax],xmm12 - movaps XMMWORD[(-104)+rax],xmm13 - movaps XMMWORD[(-88)+rax],xmm14 - movaps XMMWORD[(-72)+rax],xmm15 -$L$gcm_dec_body: +$L$SEH_prolog_aesni_gcm_decrypt_8: +$L$SEH_prolog_aesni_gcm_decrypt_9: + + + + mov QWORD[16+rbp],rdi +$L$SEH_prolog_aesni_gcm_decrypt_10: + mov QWORD[24+rbp],rsi +$L$SEH_prolog_aesni_gcm_decrypt_11: + mov rdi,QWORD[48+rbp] + mov rsi,QWORD[56+rbp] + + movaps XMMWORD[(-208)+rbp],xmm6 +$L$SEH_prolog_aesni_gcm_decrypt_12: + movaps XMMWORD[(-192)+rbp],xmm7 +$L$SEH_prolog_aesni_gcm_decrypt_13: + movaps XMMWORD[(-176)+rbp],xmm8 +$L$SEH_prolog_aesni_gcm_decrypt_14: + movaps XMMWORD[(-160)+rbp],xmm9 +$L$SEH_prolog_aesni_gcm_decrypt_15: + movaps XMMWORD[(-144)+rbp],xmm10 +$L$SEH_prolog_aesni_gcm_decrypt_16: + movaps XMMWORD[(-128)+rbp],xmm11 +$L$SEH_prolog_aesni_gcm_decrypt_17: + movaps XMMWORD[(-112)+rbp],xmm12 +$L$SEH_prolog_aesni_gcm_decrypt_18: + movaps XMMWORD[(-96)+rbp],xmm13 +$L$SEH_prolog_aesni_gcm_decrypt_19: + movaps XMMWORD[(-80)+rbp],xmm14 +$L$SEH_prolog_aesni_gcm_decrypt_20: + movaps XMMWORD[(-64)+rbp],xmm15 +$L$SEH_prolog_aesni_gcm_decrypt_21: vzeroupper - vmovdqu xmm1,XMMWORD[r8] + mov r12,QWORD[64+rbp] + vmovdqu xmm1,XMMWORD[rdi] add rsp,-128 - mov ebx,DWORD[12+r8] + mov ebx,DWORD[12+rdi] lea r11,[$L$bswap_mask] - lea r14,[((-128))+rcx] + lea r14,[((-128))+r9] mov r15,0xf80 - vmovdqu xmm8,XMMWORD[r9] + vmovdqu xmm8,XMMWORD[r12] and rsp,-128 vmovdqu xmm0,XMMWORD[r11] - lea rcx,[128+rcx] - lea r9,[((32+32))+r9] - mov ebp,DWORD[((240-128))+rcx] + lea r9,[128+r9] + lea rsi,[32+rsi] + mov r10d,DWORD[((240-128))+r9] vpshufb xmm8,xmm8,xmm0 and r14,r15 @@ -413,9 +438,9 @@ sub rsp,r15 $L$dec_no_key_aliasing: - vmovdqu xmm7,XMMWORD[80+rdi] - lea r14,[rdi] - vmovdqu xmm4,XMMWORD[64+rdi] + vmovdqu xmm7,XMMWORD[80+rcx] + mov r14,rcx + vmovdqu xmm4,XMMWORD[64+rcx] @@ -423,16 +448,16 @@ - lea r15,[((-192))+rdx*1+rdi] + lea r15,[((-192))+r8*1+rcx] - vmovdqu xmm5,XMMWORD[48+rdi] - shr rdx,4 - xor r10,r10 - vmovdqu xmm6,XMMWORD[32+rdi] + vmovdqu xmm5,XMMWORD[48+rcx] + shr r8,4 + xor rax,rax + vmovdqu xmm6,XMMWORD[32+rcx] vpshufb xmm7,xmm7,xmm0 - vmovdqu xmm2,XMMWORD[16+rdi] + vmovdqu xmm2,XMMWORD[16+rcx] vpshufb xmm4,xmm4,xmm0 - vmovdqu xmm3,XMMWORD[rdi] + vmovdqu xmm3,XMMWORD[rcx] vpshufb xmm5,xmm5,xmm0 vmovdqu XMMWORD[48+rsp],xmm4 vpshufb xmm6,xmm6,xmm0 @@ -445,57 +470,58 @@ call _aesni_ctr32_ghash_6x - vmovups XMMWORD[(-96)+rsi],xmm9 - vmovups XMMWORD[(-80)+rsi],xmm10 - vmovups XMMWORD[(-64)+rsi],xmm11 - vmovups XMMWORD[(-48)+rsi],xmm12 - vmovups XMMWORD[(-32)+rsi],xmm13 - vmovups XMMWORD[(-16)+rsi],xmm14 + mov r12,QWORD[64+rbp] + vmovups XMMWORD[(-96)+rdx],xmm9 + vmovups XMMWORD[(-80)+rdx],xmm10 + vmovups XMMWORD[(-64)+rdx],xmm11 + vmovups XMMWORD[(-48)+rdx],xmm12 + vmovups XMMWORD[(-32)+rdx],xmm13 + vmovups XMMWORD[(-16)+rdx],xmm14 vpshufb xmm8,xmm8,XMMWORD[r11] - vmovdqu XMMWORD[(-64)+r9],xmm8 + vmovdqu XMMWORD[r12],xmm8 vzeroupper - movaps xmm6,XMMWORD[((-216))+rax] - movaps xmm7,XMMWORD[((-200))+rax] - movaps xmm8,XMMWORD[((-184))+rax] - movaps xmm9,XMMWORD[((-168))+rax] - movaps xmm10,XMMWORD[((-152))+rax] - movaps xmm11,XMMWORD[((-136))+rax] - movaps xmm12,XMMWORD[((-120))+rax] - movaps xmm13,XMMWORD[((-104))+rax] - movaps xmm14,XMMWORD[((-88))+rax] - movaps xmm15,XMMWORD[((-72))+rax] - mov r15,QWORD[((-48))+rax] + movaps xmm6,XMMWORD[((-208))+rbp] + movaps xmm7,XMMWORD[((-192))+rbp] + movaps xmm8,XMMWORD[((-176))+rbp] + movaps xmm9,XMMWORD[((-160))+rbp] + movaps xmm10,XMMWORD[((-144))+rbp] + movaps xmm11,XMMWORD[((-128))+rbp] + movaps xmm12,XMMWORD[((-112))+rbp] + movaps xmm13,XMMWORD[((-96))+rbp] + movaps xmm14,XMMWORD[((-80))+rbp] + movaps xmm15,XMMWORD[((-64))+rbp] + mov rdi,QWORD[16+rbp] + mov rsi,QWORD[24+rbp] + lea rsp,[((-40))+rbp] - mov r14,QWORD[((-40))+rax] + pop r15 - mov r13,QWORD[((-32))+rax] + pop r14 - mov r12,QWORD[((-24))+rax] + pop r13 - mov rbp,QWORD[((-16))+rax] + pop r12 - mov rbx,QWORD[((-8))+rax] + pop rbx - lea rsp,[rax] + pop rbp $L$gcm_dec_abort: - mov rax,r10 - mov rdi,QWORD[8+rsp] ;WIN64 epilogue - mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret +$L$SEH_end_aesni_gcm_decrypt_22: + -$L$SEH_end_GFp_aesni_gcm_decrypt: ALIGN 32 _aesni_ctr32_6x: - vmovdqu xmm4,XMMWORD[((0-128))+rcx] + vmovdqu xmm4,XMMWORD[((0-128))+r9] vmovdqu xmm2,XMMWORD[32+r11] - lea r13,[((-1))+rbp] - vmovups xmm15,XMMWORD[((16-128))+rcx] - lea r12,[((32-128))+rcx] + lea r13,[((-1))+r10] + vmovups xmm15,XMMWORD[((16-128))+r9] + lea r12,[((32-128))+r9] vpxor xmm9,xmm1,xmm4 add ebx,100663296 jc NEAR $L$handle_ctr32_2 @@ -527,18 +553,18 @@ vmovdqu xmm3,XMMWORD[r12] vaesenc xmm9,xmm9,xmm15 - vpxor xmm4,xmm3,XMMWORD[rdi] + vpxor xmm4,xmm3,XMMWORD[rcx] vaesenc xmm10,xmm10,xmm15 - vpxor xmm5,xmm3,XMMWORD[16+rdi] + vpxor xmm5,xmm3,XMMWORD[16+rcx] vaesenc xmm11,xmm11,xmm15 - vpxor xmm6,xmm3,XMMWORD[32+rdi] + vpxor xmm6,xmm3,XMMWORD[32+rcx] vaesenc xmm12,xmm12,xmm15 - vpxor xmm8,xmm3,XMMWORD[48+rdi] + vpxor xmm8,xmm3,XMMWORD[48+rcx] vaesenc xmm13,xmm13,xmm15 - vpxor xmm2,xmm3,XMMWORD[64+rdi] + vpxor xmm2,xmm3,XMMWORD[64+rcx] vaesenc xmm14,xmm14,xmm15 - vpxor xmm3,xmm3,XMMWORD[80+rdi] - lea rdi,[96+rdi] + vpxor xmm3,xmm3,XMMWORD[80+rcx] + lea rcx,[96+rcx] vaesenclast xmm9,xmm9,xmm4 vaesenclast xmm10,xmm10,xmm5 @@ -546,15 +572,15 @@ vaesenclast xmm12,xmm12,xmm8 vaesenclast xmm13,xmm13,xmm2 vaesenclast xmm14,xmm14,xmm3 - vmovups XMMWORD[rsi],xmm9 - vmovups XMMWORD[16+rsi],xmm10 - vmovups XMMWORD[32+rsi],xmm11 - vmovups XMMWORD[48+rsi],xmm12 - vmovups XMMWORD[64+rsi],xmm13 - vmovups XMMWORD[80+rsi],xmm14 - lea rsi,[96+rsi] + vmovups XMMWORD[rdx],xmm9 + vmovups XMMWORD[16+rdx],xmm10 + vmovups XMMWORD[32+rdx],xmm11 + vmovups XMMWORD[48+rdx],xmm12 + vmovups XMMWORD[64+rdx],xmm13 + vmovups XMMWORD[80+rdx],xmm14 + lea rdx,[96+rdx] - DB 0F3h,0C3h ;repret + ret ALIGN 32 $L$handle_ctr32_2: vpshufb xmm6,xmm1,xmm0 @@ -580,69 +606,90 @@ -global GFp_aesni_gcm_encrypt +global aesni_gcm_encrypt ALIGN 32 -GFp_aesni_gcm_encrypt: - mov QWORD[8+rsp],rdi ;WIN64 prologue - mov QWORD[16+rsp],rsi - mov rax,rsp -$L$SEH_begin_GFp_aesni_gcm_encrypt: - mov rdi,rcx - mov rsi,rdx - mov rdx,r8 - mov rcx,r9 - mov r8,QWORD[40+rsp] - mov r9,QWORD[48+rsp] +aesni_gcm_encrypt: +$L$SEH_begin_aesni_gcm_encrypt_1: +_CET_ENDBR +%ifdef BORINGSSL_DISPATCH_TEST +EXTERN BORINGSSL_function_hit + mov BYTE[((BORINGSSL_function_hit+2))],1 +%endif + xor rax,rax - xor r10,r10 - - - cmp rdx,0x60*3 + cmp r8,0x60*3 jb NEAR $L$gcm_enc_abort - lea rax,[rsp] + push rbp + +$L$SEH_prolog_aesni_gcm_encrypt_2: + mov rbp,rsp push rbx - push rbp - +$L$SEH_prolog_aesni_gcm_encrypt_3: push r12 +$L$SEH_prolog_aesni_gcm_encrypt_4: push r13 +$L$SEH_prolog_aesni_gcm_encrypt_5: push r14 +$L$SEH_prolog_aesni_gcm_encrypt_6: push r15 +$L$SEH_prolog_aesni_gcm_encrypt_7: lea rsp,[((-168))+rsp] - movaps XMMWORD[(-216)+rax],xmm6 - movaps XMMWORD[(-200)+rax],xmm7 - movaps XMMWORD[(-184)+rax],xmm8 - movaps XMMWORD[(-168)+rax],xmm9 - movaps XMMWORD[(-152)+rax],xmm10 - movaps XMMWORD[(-136)+rax],xmm11 - movaps XMMWORD[(-120)+rax],xmm12 - movaps XMMWORD[(-104)+rax],xmm13 - movaps XMMWORD[(-88)+rax],xmm14 - movaps XMMWORD[(-72)+rax],xmm15 -$L$gcm_enc_body: +$L$SEH_prolog_aesni_gcm_encrypt_8: +$L$SEH_prolog_aesni_gcm_encrypt_9: + + + + mov QWORD[16+rbp],rdi +$L$SEH_prolog_aesni_gcm_encrypt_10: + mov QWORD[24+rbp],rsi +$L$SEH_prolog_aesni_gcm_encrypt_11: + mov rdi,QWORD[48+rbp] + mov rsi,QWORD[56+rbp] + + movaps XMMWORD[(-208)+rbp],xmm6 +$L$SEH_prolog_aesni_gcm_encrypt_12: + movaps XMMWORD[(-192)+rbp],xmm7 +$L$SEH_prolog_aesni_gcm_encrypt_13: + movaps XMMWORD[(-176)+rbp],xmm8 +$L$SEH_prolog_aesni_gcm_encrypt_14: + movaps XMMWORD[(-160)+rbp],xmm9 +$L$SEH_prolog_aesni_gcm_encrypt_15: + movaps XMMWORD[(-144)+rbp],xmm10 +$L$SEH_prolog_aesni_gcm_encrypt_16: + movaps XMMWORD[(-128)+rbp],xmm11 +$L$SEH_prolog_aesni_gcm_encrypt_17: + movaps XMMWORD[(-112)+rbp],xmm12 +$L$SEH_prolog_aesni_gcm_encrypt_18: + movaps XMMWORD[(-96)+rbp],xmm13 +$L$SEH_prolog_aesni_gcm_encrypt_19: + movaps XMMWORD[(-80)+rbp],xmm14 +$L$SEH_prolog_aesni_gcm_encrypt_20: + movaps XMMWORD[(-64)+rbp],xmm15 +$L$SEH_prolog_aesni_gcm_encrypt_21: vzeroupper - vmovdqu xmm1,XMMWORD[r8] + vmovdqu xmm1,XMMWORD[rdi] add rsp,-128 - mov ebx,DWORD[12+r8] + mov ebx,DWORD[12+rdi] lea r11,[$L$bswap_mask] - lea r14,[((-128))+rcx] + lea r14,[((-128))+r9] mov r15,0xf80 - lea rcx,[128+rcx] + lea r9,[128+r9] vmovdqu xmm0,XMMWORD[r11] and rsp,-128 - mov ebp,DWORD[((240-128))+rcx] + mov r10d,DWORD[((240-128))+r9] and r14,r15 and r15,rsp @@ -653,7 +700,7 @@ sub rsp,r15 $L$enc_no_key_aliasing: - lea r14,[rsi] + mov r14,rdx @@ -662,9 +709,9 @@ - lea r15,[((-192))+rdx*1+rsi] + lea r15,[((-192))+r8*1+rdx] - shr rdx,4 + shr r8,4 call _aesni_ctr32_6x vpshufb xmm8,xmm9,xmm0 @@ -681,34 +728,35 @@ call _aesni_ctr32_6x - vmovdqu xmm8,XMMWORD[r9] - lea r9,[((32+32))+r9] - sub rdx,12 - mov r10,0x60*2 + mov r12,QWORD[64+rbp] + lea rsi,[32+rsi] + vmovdqu xmm8,XMMWORD[r12] + sub r8,12 + mov rax,0x60*2 vpshufb xmm8,xmm8,xmm0 call _aesni_ctr32_ghash_6x vmovdqu xmm7,XMMWORD[32+rsp] vmovdqu xmm0,XMMWORD[r11] - vmovdqu xmm3,XMMWORD[((0-32))+r9] + vmovdqu xmm3,XMMWORD[((0-32))+rsi] vpunpckhqdq xmm1,xmm7,xmm7 - vmovdqu xmm15,XMMWORD[((32-32))+r9] - vmovups XMMWORD[(-96)+rsi],xmm9 + vmovdqu xmm15,XMMWORD[((32-32))+rsi] + vmovups XMMWORD[(-96)+rdx],xmm9 vpshufb xmm9,xmm9,xmm0 vpxor xmm1,xmm1,xmm7 - vmovups XMMWORD[(-80)+rsi],xmm10 + vmovups XMMWORD[(-80)+rdx],xmm10 vpshufb xmm10,xmm10,xmm0 - vmovups XMMWORD[(-64)+rsi],xmm11 + vmovups XMMWORD[(-64)+rdx],xmm11 vpshufb xmm11,xmm11,xmm0 - vmovups XMMWORD[(-48)+rsi],xmm12 + vmovups XMMWORD[(-48)+rdx],xmm12 vpshufb xmm12,xmm12,xmm0 - vmovups XMMWORD[(-32)+rsi],xmm13 + vmovups XMMWORD[(-32)+rdx],xmm13 vpshufb xmm13,xmm13,xmm0 - vmovups XMMWORD[(-16)+rsi],xmm14 + vmovups XMMWORD[(-16)+rdx],xmm14 vpshufb xmm14,xmm14,xmm0 vmovdqu XMMWORD[16+rsp],xmm9 vmovdqu xmm6,XMMWORD[48+rsp] - vmovdqu xmm0,XMMWORD[((16-32))+r9] + vmovdqu xmm0,XMMWORD[((16-32))+rsi] vpunpckhqdq xmm2,xmm6,xmm6 vpclmulqdq xmm5,xmm7,xmm3,0x00 vpxor xmm2,xmm2,xmm6 @@ -717,19 +765,19 @@ vmovdqu xmm9,XMMWORD[64+rsp] vpclmulqdq xmm4,xmm6,xmm0,0x00 - vmovdqu xmm3,XMMWORD[((48-32))+r9] + vmovdqu xmm3,XMMWORD[((48-32))+rsi] vpxor xmm4,xmm4,xmm5 vpunpckhqdq xmm5,xmm9,xmm9 vpclmulqdq xmm6,xmm6,xmm0,0x11 vpxor xmm5,xmm5,xmm9 vpxor xmm6,xmm6,xmm7 vpclmulqdq xmm2,xmm2,xmm15,0x10 - vmovdqu xmm15,XMMWORD[((80-32))+r9] + vmovdqu xmm15,XMMWORD[((80-32))+rsi] vpxor xmm2,xmm2,xmm1 vmovdqu xmm1,XMMWORD[80+rsp] vpclmulqdq xmm7,xmm9,xmm3,0x00 - vmovdqu xmm0,XMMWORD[((64-32))+r9] + vmovdqu xmm0,XMMWORD[((64-32))+rsi] vpxor xmm7,xmm7,xmm4 vpunpckhqdq xmm4,xmm1,xmm1 vpclmulqdq xmm9,xmm9,xmm3,0x11 @@ -740,19 +788,19 @@ vmovdqu xmm2,XMMWORD[96+rsp] vpclmulqdq xmm6,xmm1,xmm0,0x00 - vmovdqu xmm3,XMMWORD[((96-32))+r9] + vmovdqu xmm3,XMMWORD[((96-32))+rsi] vpxor xmm6,xmm6,xmm7 vpunpckhqdq xmm7,xmm2,xmm2 vpclmulqdq xmm1,xmm1,xmm0,0x11 vpxor xmm7,xmm7,xmm2 vpxor xmm1,xmm1,xmm9 vpclmulqdq xmm4,xmm4,xmm15,0x10 - vmovdqu xmm15,XMMWORD[((128-32))+r9] + vmovdqu xmm15,XMMWORD[((128-32))+rsi] vpxor xmm4,xmm4,xmm5 vpxor xmm8,xmm8,XMMWORD[112+rsp] vpclmulqdq xmm5,xmm2,xmm3,0x00 - vmovdqu xmm0,XMMWORD[((112-32))+r9] + vmovdqu xmm0,XMMWORD[((112-32))+rsi] vpunpckhqdq xmm9,xmm8,xmm8 vpxor xmm5,xmm5,xmm6 vpclmulqdq xmm2,xmm2,xmm3,0x11 @@ -762,17 +810,17 @@ vpxor xmm4,xmm7,xmm4 vpclmulqdq xmm6,xmm8,xmm0,0x00 - vmovdqu xmm3,XMMWORD[((0-32))+r9] + vmovdqu xmm3,XMMWORD[((0-32))+rsi] vpunpckhqdq xmm1,xmm14,xmm14 vpclmulqdq xmm8,xmm8,xmm0,0x11 vpxor xmm1,xmm1,xmm14 vpxor xmm5,xmm6,xmm5 vpclmulqdq xmm9,xmm9,xmm15,0x10 - vmovdqu xmm15,XMMWORD[((32-32))+r9] + vmovdqu xmm15,XMMWORD[((32-32))+rsi] vpxor xmm7,xmm8,xmm2 vpxor xmm6,xmm9,xmm4 - vmovdqu xmm0,XMMWORD[((16-32))+r9] + vmovdqu xmm0,XMMWORD[((16-32))+rsi] vpxor xmm9,xmm7,xmm5 vpclmulqdq xmm4,xmm14,xmm3,0x00 vpxor xmm6,xmm6,xmm9 @@ -786,7 +834,7 @@ vpxor xmm7,xmm7,xmm6 vpclmulqdq xmm5,xmm13,xmm0,0x00 - vmovdqu xmm3,XMMWORD[((48-32))+r9] + vmovdqu xmm3,XMMWORD[((48-32))+rsi] vpxor xmm5,xmm5,xmm4 vpunpckhqdq xmm9,xmm12,xmm12 vpclmulqdq xmm13,xmm13,xmm0,0x11 @@ -794,11 +842,11 @@ vpxor xmm13,xmm13,xmm14 vpalignr xmm14,xmm8,xmm8,8 vpclmulqdq xmm2,xmm2,xmm15,0x10 - vmovdqu xmm15,XMMWORD[((80-32))+r9] + vmovdqu xmm15,XMMWORD[((80-32))+rsi] vpxor xmm2,xmm2,xmm1 vpclmulqdq xmm4,xmm12,xmm3,0x00 - vmovdqu xmm0,XMMWORD[((64-32))+r9] + vmovdqu xmm0,XMMWORD[((64-32))+rsi] vpxor xmm4,xmm4,xmm5 vpunpckhqdq xmm1,xmm11,xmm11 vpclmulqdq xmm12,xmm12,xmm3,0x11 @@ -812,7 +860,7 @@ vxorps xmm8,xmm8,xmm14 vpclmulqdq xmm5,xmm11,xmm0,0x00 - vmovdqu xmm3,XMMWORD[((96-32))+r9] + vmovdqu xmm3,XMMWORD[((96-32))+rsi] vpxor xmm5,xmm5,xmm4 vpunpckhqdq xmm2,xmm10,xmm10 vpclmulqdq xmm11,xmm11,xmm0,0x11 @@ -820,7 +868,7 @@ vpalignr xmm14,xmm8,xmm8,8 vpxor xmm11,xmm11,xmm12 vpclmulqdq xmm1,xmm1,xmm15,0x10 - vmovdqu xmm15,XMMWORD[((128-32))+r9] + vmovdqu xmm15,XMMWORD[((128-32))+rsi] vpxor xmm1,xmm1,xmm9 vxorps xmm14,xmm14,xmm7 @@ -828,7 +876,7 @@ vxorps xmm8,xmm8,xmm14 vpclmulqdq xmm4,xmm10,xmm3,0x00 - vmovdqu xmm0,XMMWORD[((112-32))+r9] + vmovdqu xmm0,XMMWORD[((112-32))+rsi] vpxor xmm4,xmm4,xmm5 vpunpckhqdq xmm9,xmm8,xmm8 vpclmulqdq xmm10,xmm10,xmm3,0x11 @@ -860,166 +908,192 @@ vpclmulqdq xmm8,xmm8,xmm3,0x10 vpxor xmm2,xmm2,xmm7 vpxor xmm8,xmm8,xmm2 + mov r12,QWORD[64+rbp] vpshufb xmm8,xmm8,XMMWORD[r11] - vmovdqu XMMWORD[(-64)+r9],xmm8 + vmovdqu XMMWORD[r12],xmm8 vzeroupper - movaps xmm6,XMMWORD[((-216))+rax] - movaps xmm7,XMMWORD[((-200))+rax] - movaps xmm8,XMMWORD[((-184))+rax] - movaps xmm9,XMMWORD[((-168))+rax] - movaps xmm10,XMMWORD[((-152))+rax] - movaps xmm11,XMMWORD[((-136))+rax] - movaps xmm12,XMMWORD[((-120))+rax] - movaps xmm13,XMMWORD[((-104))+rax] - movaps xmm14,XMMWORD[((-88))+rax] - movaps xmm15,XMMWORD[((-72))+rax] - mov r15,QWORD[((-48))+rax] + movaps xmm6,XMMWORD[((-208))+rbp] + movaps xmm7,XMMWORD[((-192))+rbp] + movaps xmm8,XMMWORD[((-176))+rbp] + movaps xmm9,XMMWORD[((-160))+rbp] + movaps xmm10,XMMWORD[((-144))+rbp] + movaps xmm11,XMMWORD[((-128))+rbp] + movaps xmm12,XMMWORD[((-112))+rbp] + movaps xmm13,XMMWORD[((-96))+rbp] + movaps xmm14,XMMWORD[((-80))+rbp] + movaps xmm15,XMMWORD[((-64))+rbp] + mov rdi,QWORD[16+rbp] + mov rsi,QWORD[24+rbp] + lea rsp,[((-40))+rbp] - mov r14,QWORD[((-40))+rax] + pop r15 - mov r13,QWORD[((-32))+rax] + pop r14 - mov r12,QWORD[((-24))+rax] + pop r13 - mov rbp,QWORD[((-16))+rax] + pop r12 - mov rbx,QWORD[((-8))+rax] + pop rbx - lea rsp,[rax] + pop rbp $L$gcm_enc_abort: - mov rax,r10 - mov rdi,QWORD[8+rsp] ;WIN64 epilogue - mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret +$L$SEH_end_aesni_gcm_encrypt_22: + -$L$SEH_end_GFp_aesni_gcm_encrypt: +section .rdata rdata align=8 ALIGN 64 $L$bswap_mask: -DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 + DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 $L$poly: -DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2 + DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2 $L$one_msb: -DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 + DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 $L$two_lsb: -DB 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + DB 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 $L$one_lsb: -DB 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -DB 65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108 -DB 101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82 -DB 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112 -DB 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 + DB 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + DB 65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108 + DB 101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82 + DB 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112 + DB 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 ALIGN 64 -EXTERN __imp_RtlVirtualUnwind - -ALIGN 16 -gcm_se_handler: - push rsi - push rdi - push rbx - push rbp - push r12 - push r13 - push r14 - push r15 - pushfq - sub rsp,64 - - mov rax,QWORD[120+r8] - mov rbx,QWORD[248+r8] - - mov rsi,QWORD[8+r9] - mov r11,QWORD[56+r9] - - mov r10d,DWORD[r11] - lea r10,[r10*1+rsi] - cmp rbx,r10 - jb NEAR $L$common_seh_tail - - mov rax,QWORD[152+r8] - - mov r10d,DWORD[4+r11] - lea r10,[r10*1+rsi] - cmp rbx,r10 - jae NEAR $L$common_seh_tail - - mov rax,QWORD[120+r8] - - mov r15,QWORD[((-48))+rax] - mov r14,QWORD[((-40))+rax] - mov r13,QWORD[((-32))+rax] - mov r12,QWORD[((-24))+rax] - mov rbp,QWORD[((-16))+rax] - mov rbx,QWORD[((-8))+rax] - mov QWORD[240+r8],r15 - mov QWORD[232+r8],r14 - mov QWORD[224+r8],r13 - mov QWORD[216+r8],r12 - mov QWORD[160+r8],rbp - mov QWORD[144+r8],rbx - - lea rsi,[((-216))+rax] - lea rdi,[512+r8] - mov ecx,20 - DD 0xa548f3fc - -$L$common_seh_tail: - mov rdi,QWORD[8+rax] - mov rsi,QWORD[16+rax] - mov QWORD[152+r8],rax - mov QWORD[168+r8],rsi - mov QWORD[176+r8],rdi - - mov rdi,QWORD[40+r9] - mov rsi,r8 - mov ecx,154 - DD 0xa548f3fc - - mov rsi,r9 - xor rcx,rcx - mov rdx,QWORD[8+rsi] - mov r8,QWORD[rsi] - mov r9,QWORD[16+rsi] - mov r10,QWORD[40+rsi] - lea r11,[56+rsi] - lea r12,[24+rsi] - mov QWORD[32+rsp],r10 - mov QWORD[40+rsp],r11 - mov QWORD[48+rsp],r12 - mov QWORD[56+rsp],rcx - call QWORD[__imp_RtlVirtualUnwind] - - mov eax,1 - add rsp,64 - popfq - pop r15 - pop r14 - pop r13 - pop r12 - pop rbp - pop rbx - pop rdi - pop rsi - DB 0F3h,0C3h ;repret - +section .text section .pdata rdata align=4 ALIGN 4 - DD $L$SEH_begin_GFp_aesni_gcm_decrypt wrt ..imagebase - DD $L$SEH_end_GFp_aesni_gcm_decrypt wrt ..imagebase - DD $L$SEH_gcm_dec_info wrt ..imagebase - - DD $L$SEH_begin_GFp_aesni_gcm_encrypt wrt ..imagebase - DD $L$SEH_end_GFp_aesni_gcm_encrypt wrt ..imagebase - DD $L$SEH_GFp_gcm_enc_info wrt ..imagebase + DD $L$SEH_begin_aesni_gcm_decrypt_1 wrt ..imagebase + DD $L$SEH_end_aesni_gcm_decrypt_22 wrt ..imagebase + DD $L$SEH_info_aesni_gcm_decrypt_0 wrt ..imagebase + + DD $L$SEH_begin_aesni_gcm_encrypt_1 wrt ..imagebase + DD $L$SEH_end_aesni_gcm_encrypt_22 wrt ..imagebase + DD $L$SEH_info_aesni_gcm_encrypt_0 wrt ..imagebase + + section .xdata rdata align=8 -ALIGN 8 -$L$SEH_gcm_dec_info: -DB 9,0,0,0 - DD gcm_se_handler wrt ..imagebase - DD $L$gcm_dec_body wrt ..imagebase,$L$gcm_dec_abort wrt ..imagebase -$L$SEH_GFp_gcm_enc_info: -DB 9,0,0,0 - DD gcm_se_handler wrt ..imagebase - DD $L$gcm_enc_body wrt ..imagebase,$L$gcm_enc_abort wrt ..imagebase +ALIGN 4 +$L$SEH_info_aesni_gcm_decrypt_0: + DB 1 + DB $L$SEH_prolog_aesni_gcm_decrypt_21-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 33 + DB 213 + DB $L$SEH_prolog_aesni_gcm_decrypt_21-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 248 + DW 9 + DB $L$SEH_prolog_aesni_gcm_decrypt_20-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 232 + DW 8 + DB $L$SEH_prolog_aesni_gcm_decrypt_19-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 216 + DW 7 + DB $L$SEH_prolog_aesni_gcm_decrypt_18-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 200 + DW 6 + DB $L$SEH_prolog_aesni_gcm_decrypt_17-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 184 + DW 5 + DB $L$SEH_prolog_aesni_gcm_decrypt_16-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 168 + DW 4 + DB $L$SEH_prolog_aesni_gcm_decrypt_15-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 152 + DW 3 + DB $L$SEH_prolog_aesni_gcm_decrypt_14-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 136 + DW 2 + DB $L$SEH_prolog_aesni_gcm_decrypt_13-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 120 + DW 1 + DB $L$SEH_prolog_aesni_gcm_decrypt_12-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 104 + DW 0 + DB $L$SEH_prolog_aesni_gcm_decrypt_11-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 100 + DW 29 + DB $L$SEH_prolog_aesni_gcm_decrypt_10-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 116 + DW 28 + DB $L$SEH_prolog_aesni_gcm_decrypt_9-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 3 + DB $L$SEH_prolog_aesni_gcm_decrypt_8-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 1 + DW 21 + DB $L$SEH_prolog_aesni_gcm_decrypt_7-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 240 + DB $L$SEH_prolog_aesni_gcm_decrypt_6-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 224 + DB $L$SEH_prolog_aesni_gcm_decrypt_5-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 208 + DB $L$SEH_prolog_aesni_gcm_decrypt_4-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 192 + DB $L$SEH_prolog_aesni_gcm_decrypt_3-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 48 + DB $L$SEH_prolog_aesni_gcm_decrypt_2-$L$SEH_begin_aesni_gcm_decrypt_1 + DB 80 + +$L$SEH_info_aesni_gcm_encrypt_0: + DB 1 + DB $L$SEH_prolog_aesni_gcm_encrypt_21-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 33 + DB 213 + DB $L$SEH_prolog_aesni_gcm_encrypt_21-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 248 + DW 9 + DB $L$SEH_prolog_aesni_gcm_encrypt_20-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 232 + DW 8 + DB $L$SEH_prolog_aesni_gcm_encrypt_19-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 216 + DW 7 + DB $L$SEH_prolog_aesni_gcm_encrypt_18-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 200 + DW 6 + DB $L$SEH_prolog_aesni_gcm_encrypt_17-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 184 + DW 5 + DB $L$SEH_prolog_aesni_gcm_encrypt_16-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 168 + DW 4 + DB $L$SEH_prolog_aesni_gcm_encrypt_15-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 152 + DW 3 + DB $L$SEH_prolog_aesni_gcm_encrypt_14-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 136 + DW 2 + DB $L$SEH_prolog_aesni_gcm_encrypt_13-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 120 + DW 1 + DB $L$SEH_prolog_aesni_gcm_encrypt_12-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 104 + DW 0 + DB $L$SEH_prolog_aesni_gcm_encrypt_11-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 100 + DW 29 + DB $L$SEH_prolog_aesni_gcm_encrypt_10-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 116 + DW 28 + DB $L$SEH_prolog_aesni_gcm_encrypt_9-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 3 + DB $L$SEH_prolog_aesni_gcm_encrypt_8-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 1 + DW 21 + DB $L$SEH_prolog_aesni_gcm_encrypt_7-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 240 + DB $L$SEH_prolog_aesni_gcm_encrypt_6-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 224 + DB $L$SEH_prolog_aesni_gcm_encrypt_5-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 208 + DB $L$SEH_prolog_aesni_gcm_encrypt_4-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 192 + DB $L$SEH_prolog_aesni_gcm_encrypt_3-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 48 + DB $L$SEH_prolog_aesni_gcm_encrypt_2-$L$SEH_begin_aesni_gcm_encrypt_1 + DB 80 +%else +; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 +ret +%endif diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/aesni-x86_64-nasm.asm temporalio-1.3.0/vendor/ring/pregenerated/tmp/aesni-x86_64-nasm.asm --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/aesni-x86_64-nasm.asm 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/aesni-x86_64-nasm.asm 2023-10-30 19:40:00.000000000 +0000 @@ -1,18 +1,27 @@ ; This file is generated from a similarly-named Perl script in the BoringSSL ; source tree. Do not edit by hand. +%ifidn __OUTPUT_FORMAT__, win64 default rel %define XMMWORD %define YMMWORD %define ZMMWORD +%define _CET_ENDBR + +%include "ring_core_generated/prefix_symbols_nasm.inc" section .text code align=64 -EXTERN GFp_ia32cap_P -global GFp_aes_hw_encrypt +EXTERN OPENSSL_ia32cap_P +global aes_hw_encrypt ALIGN 16 -GFp_aes_hw_encrypt: +aes_hw_encrypt: +_CET_ENDBR +%ifdef BORINGSSL_DISPATCH_TEST +EXTERN BORINGSSL_function_hit + mov BYTE[((BORINGSSL_function_hit+1))],1 +%endif movups xmm2,XMMWORD[rcx] mov eax,DWORD[240+r8] movups xmm0,XMMWORD[r8] @@ -20,17 +29,17 @@ lea r8,[32+r8] xorps xmm2,xmm0 $L$oop_enc1_1: -DB 102,15,56,220,209 + DB 102,15,56,220,209 dec eax movups xmm1,XMMWORD[r8] lea r8,[16+r8] jnz NEAR $L$oop_enc1_1 -DB 102,15,56,221,209 + DB 102,15,56,221,209 pxor xmm0,xmm0 pxor xmm1,xmm1 movups XMMWORD[rdx],xmm2 pxor xmm2,xmm2 - DB 0F3h,0C3h ;repret + ret @@ -48,20 +57,20 @@ add rax,16 $L$enc_loop2: -DB 102,15,56,220,209 -DB 102,15,56,220,217 + DB 102,15,56,220,209 + DB 102,15,56,220,217 movups xmm1,XMMWORD[rax*1+rcx] add rax,32 -DB 102,15,56,220,208 -DB 102,15,56,220,216 + DB 102,15,56,220,208 + DB 102,15,56,220,216 movups xmm0,XMMWORD[((-16))+rax*1+rcx] jnz NEAR $L$enc_loop2 -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,221,208 -DB 102,15,56,221,216 - DB 0F3h,0C3h ;repret + DB 102,15,56,220,209 + DB 102,15,56,220,217 + DB 102,15,56,221,208 + DB 102,15,56,221,216 + ret @@ -80,24 +89,24 @@ add rax,16 $L$enc_loop3: -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,220,225 + DB 102,15,56,220,209 + DB 102,15,56,220,217 + DB 102,15,56,220,225 movups xmm1,XMMWORD[rax*1+rcx] add rax,32 -DB 102,15,56,220,208 -DB 102,15,56,220,216 -DB 102,15,56,220,224 + DB 102,15,56,220,208 + DB 102,15,56,220,216 + DB 102,15,56,220,224 movups xmm0,XMMWORD[((-16))+rax*1+rcx] jnz NEAR $L$enc_loop3 -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,220,225 -DB 102,15,56,221,208 -DB 102,15,56,221,216 -DB 102,15,56,221,224 - DB 0F3h,0C3h ;repret + DB 102,15,56,220,209 + DB 102,15,56,220,217 + DB 102,15,56,220,225 + DB 102,15,56,221,208 + DB 102,15,56,221,216 + DB 102,15,56,221,224 + ret @@ -114,32 +123,32 @@ movups xmm0,XMMWORD[32+rcx] lea rcx,[32+rax*1+rcx] neg rax -DB 0x0f,0x1f,0x00 + DB 0x0f,0x1f,0x00 add rax,16 $L$enc_loop4: -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,220,225 -DB 102,15,56,220,233 + DB 102,15,56,220,209 + DB 102,15,56,220,217 + DB 102,15,56,220,225 + DB 102,15,56,220,233 movups xmm1,XMMWORD[rax*1+rcx] add rax,32 -DB 102,15,56,220,208 -DB 102,15,56,220,216 -DB 102,15,56,220,224 -DB 102,15,56,220,232 + DB 102,15,56,220,208 + DB 102,15,56,220,216 + DB 102,15,56,220,224 + DB 102,15,56,220,232 movups xmm0,XMMWORD[((-16))+rax*1+rcx] jnz NEAR $L$enc_loop4 -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,220,225 -DB 102,15,56,220,233 -DB 102,15,56,221,208 -DB 102,15,56,221,216 -DB 102,15,56,221,224 -DB 102,15,56,221,232 - DB 0F3h,0C3h ;repret + DB 102,15,56,220,209 + DB 102,15,56,220,217 + DB 102,15,56,220,225 + DB 102,15,56,220,233 + DB 102,15,56,221,208 + DB 102,15,56,221,216 + DB 102,15,56,221,224 + DB 102,15,56,221,232 + ret @@ -152,50 +161,50 @@ xorps xmm2,xmm0 pxor xmm3,xmm0 pxor xmm4,xmm0 -DB 102,15,56,220,209 + DB 102,15,56,220,209 lea rcx,[32+rax*1+rcx] neg rax -DB 102,15,56,220,217 + DB 102,15,56,220,217 pxor xmm5,xmm0 pxor xmm6,xmm0 -DB 102,15,56,220,225 + DB 102,15,56,220,225 pxor xmm7,xmm0 movups xmm0,XMMWORD[rax*1+rcx] add rax,16 jmp NEAR $L$enc_loop6_enter ALIGN 16 $L$enc_loop6: -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,220,225 + DB 102,15,56,220,209 + DB 102,15,56,220,217 + DB 102,15,56,220,225 $L$enc_loop6_enter: -DB 102,15,56,220,233 -DB 102,15,56,220,241 -DB 102,15,56,220,249 + DB 102,15,56,220,233 + DB 102,15,56,220,241 + DB 102,15,56,220,249 movups xmm1,XMMWORD[rax*1+rcx] add rax,32 -DB 102,15,56,220,208 -DB 102,15,56,220,216 -DB 102,15,56,220,224 -DB 102,15,56,220,232 -DB 102,15,56,220,240 -DB 102,15,56,220,248 + DB 102,15,56,220,208 + DB 102,15,56,220,216 + DB 102,15,56,220,224 + DB 102,15,56,220,232 + DB 102,15,56,220,240 + DB 102,15,56,220,248 movups xmm0,XMMWORD[((-16))+rax*1+rcx] jnz NEAR $L$enc_loop6 -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,220,225 -DB 102,15,56,220,233 -DB 102,15,56,220,241 -DB 102,15,56,220,249 -DB 102,15,56,221,208 -DB 102,15,56,221,216 -DB 102,15,56,221,224 -DB 102,15,56,221,232 -DB 102,15,56,221,240 -DB 102,15,56,221,248 - DB 0F3h,0C3h ;repret + DB 102,15,56,220,209 + DB 102,15,56,220,217 + DB 102,15,56,220,225 + DB 102,15,56,220,233 + DB 102,15,56,220,241 + DB 102,15,56,220,249 + DB 102,15,56,221,208 + DB 102,15,56,221,216 + DB 102,15,56,221,224 + DB 102,15,56,221,232 + DB 102,15,56,221,240 + DB 102,15,56,221,248 + ret @@ -212,66 +221,66 @@ pxor xmm6,xmm0 lea rcx,[32+rax*1+rcx] neg rax -DB 102,15,56,220,209 + DB 102,15,56,220,209 pxor xmm7,xmm0 pxor xmm8,xmm0 -DB 102,15,56,220,217 + DB 102,15,56,220,217 pxor xmm9,xmm0 movups xmm0,XMMWORD[rax*1+rcx] add rax,16 jmp NEAR $L$enc_loop8_inner ALIGN 16 $L$enc_loop8: -DB 102,15,56,220,209 -DB 102,15,56,220,217 + DB 102,15,56,220,209 + DB 102,15,56,220,217 $L$enc_loop8_inner: -DB 102,15,56,220,225 -DB 102,15,56,220,233 -DB 102,15,56,220,241 -DB 102,15,56,220,249 -DB 102,68,15,56,220,193 -DB 102,68,15,56,220,201 + DB 102,15,56,220,225 + DB 102,15,56,220,233 + DB 102,15,56,220,241 + DB 102,15,56,220,249 + DB 102,68,15,56,220,193 + DB 102,68,15,56,220,201 $L$enc_loop8_enter: movups xmm1,XMMWORD[rax*1+rcx] add rax,32 -DB 102,15,56,220,208 -DB 102,15,56,220,216 -DB 102,15,56,220,224 -DB 102,15,56,220,232 -DB 102,15,56,220,240 -DB 102,15,56,220,248 -DB 102,68,15,56,220,192 -DB 102,68,15,56,220,200 + DB 102,15,56,220,208 + DB 102,15,56,220,216 + DB 102,15,56,220,224 + DB 102,15,56,220,232 + DB 102,15,56,220,240 + DB 102,15,56,220,248 + DB 102,68,15,56,220,192 + DB 102,68,15,56,220,200 movups xmm0,XMMWORD[((-16))+rax*1+rcx] jnz NEAR $L$enc_loop8 -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,220,225 -DB 102,15,56,220,233 -DB 102,15,56,220,241 -DB 102,15,56,220,249 -DB 102,68,15,56,220,193 -DB 102,68,15,56,220,201 -DB 102,15,56,221,208 -DB 102,15,56,221,216 -DB 102,15,56,221,224 -DB 102,15,56,221,232 -DB 102,15,56,221,240 -DB 102,15,56,221,248 -DB 102,68,15,56,221,192 -DB 102,68,15,56,221,200 - DB 0F3h,0C3h ;repret + DB 102,15,56,220,209 + DB 102,15,56,220,217 + DB 102,15,56,220,225 + DB 102,15,56,220,233 + DB 102,15,56,220,241 + DB 102,15,56,220,249 + DB 102,68,15,56,220,193 + DB 102,68,15,56,220,201 + DB 102,15,56,221,208 + DB 102,15,56,221,216 + DB 102,15,56,221,224 + DB 102,15,56,221,232 + DB 102,15,56,221,240 + DB 102,15,56,221,248 + DB 102,68,15,56,221,192 + DB 102,68,15,56,221,200 + ret -global GFp_aes_hw_ctr32_encrypt_blocks +global aes_hw_ctr32_encrypt_blocks ALIGN 16 -GFp_aes_hw_ctr32_encrypt_blocks: +aes_hw_ctr32_encrypt_blocks: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_aes_hw_ctr32_encrypt_blocks: +$L$SEH_begin_aes_hw_ctr32_encrypt_blocks: mov rdi,rcx mov rsi,rdx mov rdx,r8 @@ -280,6 +289,10 @@ +_CET_ENDBR +%ifdef BORINGSSL_DISPATCH_TEST + mov BYTE[BORINGSSL_function_hit],1 +%endif cmp rdx,1 jne NEAR $L$ctr32_bulk @@ -293,12 +306,12 @@ lea rcx,[32+rcx] xorps xmm2,xmm0 $L$oop_enc1_2: -DB 102,15,56,220,209 + DB 102,15,56,220,209 dec edx movups xmm1,XMMWORD[rcx] lea rcx,[16+rcx] jnz NEAR $L$oop_enc1_2 -DB 102,15,56,221,209 + DB 102,15,56,221,209 pxor xmm0,xmm0 pxor xmm1,xmm1 xorps xmm2,xmm3 @@ -377,7 +390,7 @@ lea r9,[7+r8] mov DWORD[((96+12))+rsp],r10d bswap r9d - lea r10,[GFp_ia32cap_P] + lea r10,[OPENSSL_ia32cap_P] mov r10d,DWORD[4+r10] xor r9d,ebp and r10d,71303168 @@ -412,39 +425,39 @@ $L$ctr32_loop6: add r8d,6 movups xmm0,XMMWORD[((-48))+r10*1+rcx] -DB 102,15,56,220,209 + DB 102,15,56,220,209 mov eax,r8d xor eax,ebp -DB 102,15,56,220,217 -DB 0x0f,0x38,0xf1,0x44,0x24,12 + DB 102,15,56,220,217 + DB 0x0f,0x38,0xf1,0x44,0x24,12 lea eax,[1+r8] -DB 102,15,56,220,225 + DB 102,15,56,220,225 xor eax,ebp -DB 0x0f,0x38,0xf1,0x44,0x24,28 -DB 102,15,56,220,233 + DB 0x0f,0x38,0xf1,0x44,0x24,28 + DB 102,15,56,220,233 lea eax,[2+r8] xor eax,ebp -DB 102,15,56,220,241 -DB 0x0f,0x38,0xf1,0x44,0x24,44 + DB 102,15,56,220,241 + DB 0x0f,0x38,0xf1,0x44,0x24,44 lea eax,[3+r8] -DB 102,15,56,220,249 + DB 102,15,56,220,249 movups xmm1,XMMWORD[((-32))+r10*1+rcx] xor eax,ebp -DB 102,15,56,220,208 -DB 0x0f,0x38,0xf1,0x44,0x24,60 + DB 102,15,56,220,208 + DB 0x0f,0x38,0xf1,0x44,0x24,60 lea eax,[4+r8] -DB 102,15,56,220,216 + DB 102,15,56,220,216 xor eax,ebp -DB 0x0f,0x38,0xf1,0x44,0x24,76 -DB 102,15,56,220,224 + DB 0x0f,0x38,0xf1,0x44,0x24,76 + DB 102,15,56,220,224 lea eax,[5+r8] xor eax,ebp -DB 102,15,56,220,232 -DB 0x0f,0x38,0xf1,0x44,0x24,92 + DB 102,15,56,220,232 + DB 0x0f,0x38,0xf1,0x44,0x24,92 mov rax,r10 -DB 102,15,56,220,240 -DB 102,15,56,220,248 + DB 102,15,56,220,240 + DB 102,15,56,220,248 movups xmm0,XMMWORD[((-16))+r10*1+rcx] call $L$enc_loop6 @@ -493,164 +506,164 @@ $L$ctr32_loop8: add r8d,8 movdqa xmm8,XMMWORD[96+rsp] -DB 102,15,56,220,209 + DB 102,15,56,220,209 mov r9d,r8d movdqa xmm9,XMMWORD[112+rsp] -DB 102,15,56,220,217 + DB 102,15,56,220,217 bswap r9d movups xmm0,XMMWORD[((32-128))+rcx] -DB 102,15,56,220,225 + DB 102,15,56,220,225 xor r9d,ebp nop -DB 102,15,56,220,233 + DB 102,15,56,220,233 mov DWORD[((0+12))+rsp],r9d lea r9,[1+r8] -DB 102,15,56,220,241 -DB 102,15,56,220,249 -DB 102,68,15,56,220,193 -DB 102,68,15,56,220,201 + DB 102,15,56,220,241 + DB 102,15,56,220,249 + DB 102,68,15,56,220,193 + DB 102,68,15,56,220,201 movups xmm1,XMMWORD[((48-128))+rcx] bswap r9d -DB 102,15,56,220,208 -DB 102,15,56,220,216 + DB 102,15,56,220,208 + DB 102,15,56,220,216 xor r9d,ebp -DB 0x66,0x90 -DB 102,15,56,220,224 -DB 102,15,56,220,232 + DB 0x66,0x90 + DB 102,15,56,220,224 + DB 102,15,56,220,232 mov DWORD[((16+12))+rsp],r9d lea r9,[2+r8] -DB 102,15,56,220,240 -DB 102,15,56,220,248 -DB 102,68,15,56,220,192 -DB 102,68,15,56,220,200 + DB 102,15,56,220,240 + DB 102,15,56,220,248 + DB 102,68,15,56,220,192 + DB 102,68,15,56,220,200 movups xmm0,XMMWORD[((64-128))+rcx] bswap r9d -DB 102,15,56,220,209 -DB 102,15,56,220,217 + DB 102,15,56,220,209 + DB 102,15,56,220,217 xor r9d,ebp -DB 0x66,0x90 -DB 102,15,56,220,225 -DB 102,15,56,220,233 + DB 0x66,0x90 + DB 102,15,56,220,225 + DB 102,15,56,220,233 mov DWORD[((32+12))+rsp],r9d lea r9,[3+r8] -DB 102,15,56,220,241 -DB 102,15,56,220,249 -DB 102,68,15,56,220,193 -DB 102,68,15,56,220,201 + DB 102,15,56,220,241 + DB 102,15,56,220,249 + DB 102,68,15,56,220,193 + DB 102,68,15,56,220,201 movups xmm1,XMMWORD[((80-128))+rcx] bswap r9d -DB 102,15,56,220,208 -DB 102,15,56,220,216 + DB 102,15,56,220,208 + DB 102,15,56,220,216 xor r9d,ebp -DB 0x66,0x90 -DB 102,15,56,220,224 -DB 102,15,56,220,232 + DB 0x66,0x90 + DB 102,15,56,220,224 + DB 102,15,56,220,232 mov DWORD[((48+12))+rsp],r9d lea r9,[4+r8] -DB 102,15,56,220,240 -DB 102,15,56,220,248 -DB 102,68,15,56,220,192 -DB 102,68,15,56,220,200 + DB 102,15,56,220,240 + DB 102,15,56,220,248 + DB 102,68,15,56,220,192 + DB 102,68,15,56,220,200 movups xmm0,XMMWORD[((96-128))+rcx] bswap r9d -DB 102,15,56,220,209 -DB 102,15,56,220,217 + DB 102,15,56,220,209 + DB 102,15,56,220,217 xor r9d,ebp -DB 0x66,0x90 -DB 102,15,56,220,225 -DB 102,15,56,220,233 + DB 0x66,0x90 + DB 102,15,56,220,225 + DB 102,15,56,220,233 mov DWORD[((64+12))+rsp],r9d lea r9,[5+r8] -DB 102,15,56,220,241 -DB 102,15,56,220,249 -DB 102,68,15,56,220,193 -DB 102,68,15,56,220,201 + DB 102,15,56,220,241 + DB 102,15,56,220,249 + DB 102,68,15,56,220,193 + DB 102,68,15,56,220,201 movups xmm1,XMMWORD[((112-128))+rcx] bswap r9d -DB 102,15,56,220,208 -DB 102,15,56,220,216 + DB 102,15,56,220,208 + DB 102,15,56,220,216 xor r9d,ebp -DB 0x66,0x90 -DB 102,15,56,220,224 -DB 102,15,56,220,232 + DB 0x66,0x90 + DB 102,15,56,220,224 + DB 102,15,56,220,232 mov DWORD[((80+12))+rsp],r9d lea r9,[6+r8] -DB 102,15,56,220,240 -DB 102,15,56,220,248 -DB 102,68,15,56,220,192 -DB 102,68,15,56,220,200 + DB 102,15,56,220,240 + DB 102,15,56,220,248 + DB 102,68,15,56,220,192 + DB 102,68,15,56,220,200 movups xmm0,XMMWORD[((128-128))+rcx] bswap r9d -DB 102,15,56,220,209 -DB 102,15,56,220,217 + DB 102,15,56,220,209 + DB 102,15,56,220,217 xor r9d,ebp -DB 0x66,0x90 -DB 102,15,56,220,225 -DB 102,15,56,220,233 + DB 0x66,0x90 + DB 102,15,56,220,225 + DB 102,15,56,220,233 mov DWORD[((96+12))+rsp],r9d lea r9,[7+r8] -DB 102,15,56,220,241 -DB 102,15,56,220,249 -DB 102,68,15,56,220,193 -DB 102,68,15,56,220,201 + DB 102,15,56,220,241 + DB 102,15,56,220,249 + DB 102,68,15,56,220,193 + DB 102,68,15,56,220,201 movups xmm1,XMMWORD[((144-128))+rcx] bswap r9d -DB 102,15,56,220,208 -DB 102,15,56,220,216 -DB 102,15,56,220,224 + DB 102,15,56,220,208 + DB 102,15,56,220,216 + DB 102,15,56,220,224 xor r9d,ebp movdqu xmm10,XMMWORD[rdi] -DB 102,15,56,220,232 + DB 102,15,56,220,232 mov DWORD[((112+12))+rsp],r9d cmp eax,11 -DB 102,15,56,220,240 -DB 102,15,56,220,248 -DB 102,68,15,56,220,192 -DB 102,68,15,56,220,200 + DB 102,15,56,220,240 + DB 102,15,56,220,248 + DB 102,68,15,56,220,192 + DB 102,68,15,56,220,200 movups xmm0,XMMWORD[((160-128))+rcx] jb NEAR $L$ctr32_enc_done -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,220,225 -DB 102,15,56,220,233 -DB 102,15,56,220,241 -DB 102,15,56,220,249 -DB 102,68,15,56,220,193 -DB 102,68,15,56,220,201 + DB 102,15,56,220,209 + DB 102,15,56,220,217 + DB 102,15,56,220,225 + DB 102,15,56,220,233 + DB 102,15,56,220,241 + DB 102,15,56,220,249 + DB 102,68,15,56,220,193 + DB 102,68,15,56,220,201 movups xmm1,XMMWORD[((176-128))+rcx] -DB 102,15,56,220,208 -DB 102,15,56,220,216 -DB 102,15,56,220,224 -DB 102,15,56,220,232 -DB 102,15,56,220,240 -DB 102,15,56,220,248 -DB 102,68,15,56,220,192 -DB 102,68,15,56,220,200 + DB 102,15,56,220,208 + DB 102,15,56,220,216 + DB 102,15,56,220,224 + DB 102,15,56,220,232 + DB 102,15,56,220,240 + DB 102,15,56,220,248 + DB 102,68,15,56,220,192 + DB 102,68,15,56,220,200 movups xmm0,XMMWORD[((192-128))+rcx] -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,220,225 -DB 102,15,56,220,233 -DB 102,15,56,220,241 -DB 102,15,56,220,249 -DB 102,68,15,56,220,193 -DB 102,68,15,56,220,201 + DB 102,15,56,220,209 + DB 102,15,56,220,217 + DB 102,15,56,220,225 + DB 102,15,56,220,233 + DB 102,15,56,220,241 + DB 102,15,56,220,249 + DB 102,68,15,56,220,193 + DB 102,68,15,56,220,201 movups xmm1,XMMWORD[((208-128))+rcx] -DB 102,15,56,220,208 -DB 102,15,56,220,216 -DB 102,15,56,220,224 -DB 102,15,56,220,232 -DB 102,15,56,220,240 -DB 102,15,56,220,248 -DB 102,68,15,56,220,192 -DB 102,68,15,56,220,200 + DB 102,15,56,220,208 + DB 102,15,56,220,216 + DB 102,15,56,220,224 + DB 102,15,56,220,232 + DB 102,15,56,220,240 + DB 102,15,56,220,248 + DB 102,68,15,56,220,192 + DB 102,68,15,56,220,200 movups xmm0,XMMWORD[((224-128))+rcx] jmp NEAR $L$ctr32_enc_done @@ -666,36 +679,38 @@ pxor xmm13,xmm0 movdqu xmm15,XMMWORD[80+rdi] pxor xmm14,xmm0 + prefetcht0 [448+rdi] + prefetcht0 [512+rdi] pxor xmm15,xmm0 -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,220,225 -DB 102,15,56,220,233 -DB 102,15,56,220,241 -DB 102,15,56,220,249 -DB 102,68,15,56,220,193 -DB 102,68,15,56,220,201 + DB 102,15,56,220,209 + DB 102,15,56,220,217 + DB 102,15,56,220,225 + DB 102,15,56,220,233 + DB 102,15,56,220,241 + DB 102,15,56,220,249 + DB 102,68,15,56,220,193 + DB 102,68,15,56,220,201 movdqu xmm1,XMMWORD[96+rdi] lea rdi,[128+rdi] -DB 102,65,15,56,221,210 + DB 102,65,15,56,221,210 pxor xmm1,xmm0 movdqu xmm10,XMMWORD[((112-128))+rdi] -DB 102,65,15,56,221,219 + DB 102,65,15,56,221,219 pxor xmm10,xmm0 movdqa xmm11,XMMWORD[rsp] -DB 102,65,15,56,221,228 -DB 102,65,15,56,221,237 + DB 102,65,15,56,221,228 + DB 102,65,15,56,221,237 movdqa xmm12,XMMWORD[16+rsp] movdqa xmm13,XMMWORD[32+rsp] -DB 102,65,15,56,221,246 -DB 102,65,15,56,221,255 + DB 102,65,15,56,221,246 + DB 102,65,15,56,221,255 movdqa xmm14,XMMWORD[48+rsp] movdqa xmm15,XMMWORD[64+rsp] -DB 102,68,15,56,221,193 + DB 102,68,15,56,221,193 movdqa xmm0,XMMWORD[80+rsp] movups xmm1,XMMWORD[((16-128))+rcx] -DB 102,69,15,56,221,202 + DB 102,69,15,56,221,202 movups XMMWORD[rsi],xmm2 movdqa xmm2,xmm11 @@ -734,19 +749,19 @@ pxor xmm9,xmm9 movups xmm0,XMMWORD[16+rcx] -DB 102,15,56,220,209 -DB 102,15,56,220,217 + DB 102,15,56,220,209 + DB 102,15,56,220,217 lea rcx,[((32-16))+rax*1+rcx] neg rax -DB 102,15,56,220,225 + DB 102,15,56,220,225 add rax,16 movups xmm10,XMMWORD[rdi] -DB 102,15,56,220,233 -DB 102,15,56,220,241 + DB 102,15,56,220,233 + DB 102,15,56,220,241 movups xmm11,XMMWORD[16+rdi] movups xmm12,XMMWORD[32+rdi] -DB 102,15,56,220,249 -DB 102,68,15,56,220,193 + DB 102,15,56,220,249 + DB 102,68,15,56,220,193 call $L$enc_loop8_enter @@ -777,20 +792,20 @@ ALIGN 32 $L$ctr32_loop4: -DB 102,15,56,220,209 + DB 102,15,56,220,209 lea rcx,[16+rcx] dec eax -DB 102,15,56,220,217 -DB 102,15,56,220,225 -DB 102,15,56,220,233 + DB 102,15,56,220,217 + DB 102,15,56,220,225 + DB 102,15,56,220,233 movups xmm1,XMMWORD[rcx] jnz NEAR $L$ctr32_loop4 -DB 102,15,56,221,209 -DB 102,15,56,221,217 + DB 102,15,56,221,209 + DB 102,15,56,221,217 movups xmm10,XMMWORD[rdi] movups xmm11,XMMWORD[16+rdi] -DB 102,15,56,221,225 -DB 102,15,56,221,233 + DB 102,15,56,221,225 + DB 102,15,56,221,233 movups xmm12,XMMWORD[32+rdi] movups xmm13,XMMWORD[48+rdi] @@ -806,16 +821,16 @@ ALIGN 32 $L$ctr32_loop3: -DB 102,15,56,220,209 + DB 102,15,56,220,209 lea rcx,[16+rcx] dec eax -DB 102,15,56,220,217 -DB 102,15,56,220,225 + DB 102,15,56,220,217 + DB 102,15,56,220,225 movups xmm1,XMMWORD[rcx] jnz NEAR $L$ctr32_loop3 -DB 102,15,56,221,209 -DB 102,15,56,221,217 -DB 102,15,56,221,225 + DB 102,15,56,221,209 + DB 102,15,56,221,217 + DB 102,15,56,221,225 movups xmm10,XMMWORD[rdi] xorps xmm2,xmm10 @@ -875,16 +890,20 @@ $L$ctr32_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_aes_hw_ctr32_encrypt_blocks: -global GFp_aes_hw_set_encrypt_key +$L$SEH_end_aes_hw_ctr32_encrypt_blocks: +global aes_hw_set_encrypt_key ALIGN 16 -GFp_aes_hw_set_encrypt_key: +aes_hw_set_encrypt_key: __aesni_set_encrypt_key: -DB 0x48,0x83,0xEC,0x08 +_CET_ENDBR +%ifdef BORINGSSL_DISPATCH_TEST + mov BYTE[((BORINGSSL_function_hit+3))],1 +%endif + DB 0x48,0x83,0xEC,0x08 mov rax,-1 test rcx,rcx @@ -894,7 +913,7 @@ movups xmm0,XMMWORD[rcx] xorps xmm4,xmm4 - lea r10,[GFp_ia32cap_P] + lea r10,[OPENSSL_ia32cap_P] mov r10d,DWORD[4+r10] and r10d,268437504 lea rax,[16+r8] @@ -910,25 +929,25 @@ je NEAR $L$10rounds_alt movups XMMWORD[r8],xmm0 -DB 102,15,58,223,200,1 + DB 102,15,58,223,200,1 call $L$key_expansion_128_cold -DB 102,15,58,223,200,2 + DB 102,15,58,223,200,2 call $L$key_expansion_128 -DB 102,15,58,223,200,4 + DB 102,15,58,223,200,4 call $L$key_expansion_128 -DB 102,15,58,223,200,8 + DB 102,15,58,223,200,8 call $L$key_expansion_128 -DB 102,15,58,223,200,16 + DB 102,15,58,223,200,16 call $L$key_expansion_128 -DB 102,15,58,223,200,32 + DB 102,15,58,223,200,32 call $L$key_expansion_128 -DB 102,15,58,223,200,64 + DB 102,15,58,223,200,64 call $L$key_expansion_128 -DB 102,15,58,223,200,128 + DB 102,15,58,223,200,128 call $L$key_expansion_128 -DB 102,15,58,223,200,27 + DB 102,15,58,223,200,27 call $L$key_expansion_128 -DB 102,15,58,223,200,54 + DB 102,15,58,223,200,54 call $L$key_expansion_128 movups XMMWORD[rax],xmm0 mov DWORD[80+rax],edx @@ -947,7 +966,7 @@ ALIGN 16 $L$oop_key128: DB 102,15,56,0,197 -DB 102,15,56,221,196 + DB 102,15,56,221,196 pslld xmm4,1 lea rax,[16+rax] @@ -969,7 +988,7 @@ movdqa xmm4,XMMWORD[$L$key_rcon1b] DB 102,15,56,0,197 -DB 102,15,56,221,196 + DB 102,15,56,221,196 pslld xmm4,1 movdqa xmm3,xmm2 @@ -985,7 +1004,7 @@ movdqa xmm2,xmm0 DB 102,15,56,0,197 -DB 102,15,56,221,196 + DB 102,15,56,221,196 movdqa xmm3,xmm2 pslldq xmm2,4 @@ -1014,31 +1033,31 @@ movups XMMWORD[r8],xmm0 movups XMMWORD[16+r8],xmm2 -DB 102,15,58,223,202,1 + DB 102,15,58,223,202,1 call $L$key_expansion_256a_cold -DB 102,15,58,223,200,1 + DB 102,15,58,223,200,1 call $L$key_expansion_256b -DB 102,15,58,223,202,2 + DB 102,15,58,223,202,2 call $L$key_expansion_256a -DB 102,15,58,223,200,2 + DB 102,15,58,223,200,2 call $L$key_expansion_256b -DB 102,15,58,223,202,4 + DB 102,15,58,223,202,4 call $L$key_expansion_256a -DB 102,15,58,223,200,4 + DB 102,15,58,223,200,4 call $L$key_expansion_256b -DB 102,15,58,223,202,8 + DB 102,15,58,223,202,8 call $L$key_expansion_256a -DB 102,15,58,223,200,8 + DB 102,15,58,223,200,8 call $L$key_expansion_256b -DB 102,15,58,223,202,16 + DB 102,15,58,223,202,16 call $L$key_expansion_256a -DB 102,15,58,223,200,16 + DB 102,15,58,223,200,16 call $L$key_expansion_256b -DB 102,15,58,223,202,32 + DB 102,15,58,223,202,32 call $L$key_expansion_256a -DB 102,15,58,223,200,32 + DB 102,15,58,223,200,32 call $L$key_expansion_256b -DB 102,15,58,223,202,64 + DB 102,15,58,223,202,64 call $L$key_expansion_256a movups XMMWORD[rax],xmm0 mov DWORD[16+rax],edx @@ -1058,7 +1077,7 @@ ALIGN 16 $L$oop_key256: DB 102,15,56,0,213 -DB 102,15,56,221,212 + DB 102,15,56,221,212 movdqa xmm3,xmm0 pslldq xmm0,4 @@ -1077,7 +1096,7 @@ pshufd xmm2,xmm0,0xff pxor xmm3,xmm3 -DB 102,15,56,221,211 + DB 102,15,56,221,211 movdqa xmm3,xmm1 pslldq xmm1,4 @@ -1111,9 +1130,9 @@ pxor xmm5,xmm5 add rsp,8 - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_set_encrypt_key: +$L$SEH_end_set_encrypt_key: ALIGN 16 $L$key_expansion_128: @@ -1126,7 +1145,7 @@ xorps xmm0,xmm4 shufps xmm1,xmm1,255 xorps xmm0,xmm1 - DB 0F3h,0C3h ;repret + ret ALIGN 16 $L$key_expansion_192a: @@ -1146,7 +1165,7 @@ pxor xmm0,xmm1 pshufd xmm3,xmm0,255 pxor xmm2,xmm3 - DB 0F3h,0C3h ;repret + ret ALIGN 16 $L$key_expansion_192b: @@ -1169,7 +1188,7 @@ xorps xmm0,xmm4 shufps xmm1,xmm1,255 xorps xmm0,xmm1 - DB 0F3h,0C3h ;repret + ret ALIGN 16 $L$key_expansion_256b: @@ -1182,18 +1201,19 @@ xorps xmm2,xmm4 shufps xmm1,xmm1,170 xorps xmm2,xmm1 - DB 0F3h,0C3h ;repret + ret +section .rdata rdata align=8 ALIGN 64 $L$bswap_mask: -DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 + DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 $L$increment32: DD 6,6,6,0 $L$increment64: DD 1,0,0,0 $L$increment1: -DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 + DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 $L$key_rotate: DD 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d $L$key_rotate192: @@ -1203,11 +1223,13 @@ $L$key_rcon1b: DD 0x1b,0x1b,0x1b,0x1b -DB 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 -DB 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 -DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 -DB 115,108,46,111,114,103,62,0 + DB 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 + DB 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 + DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 + DB 115,108,46,111,114,103,62,0 ALIGN 64 +section .text + EXTERN __imp_RtlVirtualUnwind ALIGN 16 @@ -1289,23 +1311,27 @@ pop rbx pop rdi pop rsi - DB 0F3h,0C3h ;repret + ret section .pdata rdata align=4 ALIGN 4 - DD $L$SEH_begin_GFp_aes_hw_ctr32_encrypt_blocks wrt ..imagebase - DD $L$SEH_end_GFp_aes_hw_ctr32_encrypt_blocks wrt ..imagebase - DD $L$SEH_info_GFp_ctr32 wrt ..imagebase - DD GFp_aes_hw_set_encrypt_key wrt ..imagebase - DD $L$SEH_end_GFp_set_encrypt_key wrt ..imagebase - DD $L$SEH_info_GFp_key wrt ..imagebase + DD $L$SEH_begin_aes_hw_ctr32_encrypt_blocks wrt ..imagebase + DD $L$SEH_end_aes_hw_ctr32_encrypt_blocks wrt ..imagebase + DD $L$SEH_info_ctr32 wrt ..imagebase + DD aes_hw_set_encrypt_key wrt ..imagebase + DD $L$SEH_end_set_encrypt_key wrt ..imagebase + DD $L$SEH_info_key wrt ..imagebase section .xdata rdata align=8 ALIGN 8 -$L$SEH_info_GFp_ctr32: -DB 9,0,0,0 +$L$SEH_info_ctr32: + DB 9,0,0,0 DD ctr_xts_se_handler wrt ..imagebase DD $L$ctr32_body wrt ..imagebase,$L$ctr32_epilogue wrt ..imagebase -$L$SEH_info_GFp_key: -DB 0x01,0x04,0x01,0x00 -DB 0x04,0x02,0x00,0x00 +$L$SEH_info_key: + DB 0x01,0x04,0x01,0x00 + DB 0x04,0x02,0x00,0x00 +%else +; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 +ret +%endif diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/aesni-x86-win32n.asm temporalio-1.3.0/vendor/ring/pregenerated/tmp/aesni-x86-win32n.asm --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/aesni-x86-win32n.asm 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/aesni-x86-win32n.asm 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,8 @@ ; This file is generated from a similarly-named Perl script in the BoringSSL ; source tree. Do not edit by hand. -%ifdef BORINGSSL_PREFIX -%include "boringssl_prefix_symbols_nasm.inc" -%endif +%include "ring_core_generated/prefix_symbols_nasm.inc" +%ifidn __OUTPUT_FORMAT__, win32 %ifidn __OUTPUT_FORMAT__,obj section code use32 class=code align=64 %elifidn __OUTPUT_FORMAT__,win32 @@ -12,11 +11,26 @@ %else section .text code %endif -;extern _GFp_ia32cap_P -global _GFp_aes_hw_encrypt +;extern _OPENSSL_ia32cap_P +%ifdef BORINGSSL_DISPATCH_TEST +extern _BORINGSSL_function_hit +%endif +global _aes_hw_encrypt align 16 -_GFp_aes_hw_encrypt: -L$_GFp_aes_hw_encrypt_begin: +_aes_hw_encrypt: +L$_aes_hw_encrypt_begin: +%ifdef BORINGSSL_DISPATCH_TEST + push ebx + push edx + call L$000pic +L$000pic: + pop ebx + lea ebx,[(_BORINGSSL_function_hit+1-L$000pic)+ebx] + mov edx,1 + mov BYTE [ebx],dl + pop edx + pop ebx +%endif mov eax,DWORD [4+esp] mov edx,DWORD [12+esp] movups xmm2,[eax] @@ -26,12 +40,12 @@ movups xmm1,[16+edx] lea edx,[32+edx] xorps xmm2,xmm0 -L$000enc1_loop_1: +L$001enc1_loop_1: db 102,15,56,220,209 dec ecx movups xmm1,[edx] lea edx,[16+edx] - jnz NEAR L$000enc1_loop_1 + jnz NEAR L$001enc1_loop_1 db 102,15,56,221,209 pxor xmm0,xmm0 pxor xmm1,xmm1 @@ -49,7 +63,7 @@ lea edx,[32+ecx*1+edx] neg ecx add ecx,16 -L$001enc2_loop: +L$002enc2_loop: db 102,15,56,220,209 db 102,15,56,220,217 movups xmm1,[ecx*1+edx] @@ -57,7 +71,7 @@ db 102,15,56,220,208 db 102,15,56,220,216 movups xmm0,[ecx*1+edx-16] - jnz NEAR L$001enc2_loop + jnz NEAR L$002enc2_loop db 102,15,56,220,209 db 102,15,56,220,217 db 102,15,56,221,208 @@ -75,7 +89,7 @@ lea edx,[32+ecx*1+edx] neg ecx add ecx,16 -L$002enc3_loop: +L$003enc3_loop: db 102,15,56,220,209 db 102,15,56,220,217 db 102,15,56,220,225 @@ -85,7 +99,7 @@ db 102,15,56,220,216 db 102,15,56,220,224 movups xmm0,[ecx*1+edx-16] - jnz NEAR L$002enc3_loop + jnz NEAR L$003enc3_loop db 102,15,56,220,209 db 102,15,56,220,217 db 102,15,56,220,225 @@ -107,7 +121,7 @@ neg ecx db 15,31,64,0 add ecx,16 -L$003enc4_loop: +L$004enc4_loop: db 102,15,56,220,209 db 102,15,56,220,217 db 102,15,56,220,225 @@ -119,7 +133,7 @@ db 102,15,56,220,224 db 102,15,56,220,232 movups xmm0,[ecx*1+edx-16] - jnz NEAR L$003enc4_loop + jnz NEAR L$004enc4_loop db 102,15,56,220,209 db 102,15,56,220,217 db 102,15,56,220,225 @@ -147,13 +161,13 @@ pxor xmm7,xmm0 movups xmm0,[ecx*1+edx] add ecx,16 - jmp NEAR L$004_aesni_encrypt6_inner + jmp NEAR L$005_aesni_encrypt6_inner align 16 -L$005enc6_loop: +L$006enc6_loop: db 102,15,56,220,209 db 102,15,56,220,217 db 102,15,56,220,225 -L$004_aesni_encrypt6_inner: +L$005_aesni_encrypt6_inner: db 102,15,56,220,233 db 102,15,56,220,241 db 102,15,56,220,249 @@ -167,7 +181,7 @@ db 102,15,56,220,240 db 102,15,56,220,248 movups xmm0,[ecx*1+edx-16] - jnz NEAR L$005enc6_loop + jnz NEAR L$006enc6_loop db 102,15,56,220,209 db 102,15,56,220,217 db 102,15,56,220,225 @@ -181,14 +195,26 @@ db 102,15,56,221,240 db 102,15,56,221,248 ret -global _GFp_aes_hw_ctr32_encrypt_blocks +global _aes_hw_ctr32_encrypt_blocks align 16 -_GFp_aes_hw_ctr32_encrypt_blocks: -L$_GFp_aes_hw_ctr32_encrypt_blocks_begin: +_aes_hw_ctr32_encrypt_blocks: +L$_aes_hw_ctr32_encrypt_blocks_begin: push ebp push ebx push esi push edi +%ifdef BORINGSSL_DISPATCH_TEST + push ebx + push edx + call L$007pic +L$007pic: + pop ebx + lea ebx,[(_BORINGSSL_function_hit+0-L$007pic)+ebx] + mov edx,1 + mov BYTE [ebx],dl + pop edx + pop ebx +%endif mov esi,DWORD [20+esp] mov edi,DWORD [24+esp] mov eax,DWORD [28+esp] @@ -199,7 +225,7 @@ and esp,-16 mov DWORD [80+esp],ebp cmp eax,1 - je NEAR L$006ctr32_one_shortcut + je NEAR L$008ctr32_one_shortcut movdqu xmm7,[ebx] mov DWORD [esp],202182159 mov DWORD [4+esp],134810123 @@ -237,7 +263,7 @@ pshufd xmm2,xmm0,192 pshufd xmm3,xmm0,128 cmp eax,6 - jb NEAR L$007ctr32_tail + jb NEAR L$009ctr32_tail pxor xmm7,xmm6 shl ecx,4 mov ebx,16 @@ -246,9 +272,9 @@ sub ebx,ecx lea edx,[32+ecx*1+edx] sub eax,6 - jmp NEAR L$008ctr32_loop6 + jmp NEAR L$010ctr32_loop6 align 16 -L$008ctr32_loop6: +L$010ctr32_loop6: pshufd xmm4,xmm0,64 movdqa xmm0,[32+esp] pshufd xmm5,xmm1,192 @@ -302,27 +328,27 @@ lea edi,[96+edi] pshufd xmm3,xmm0,128 sub eax,6 - jnc NEAR L$008ctr32_loop6 + jnc NEAR L$010ctr32_loop6 add eax,6 - jz NEAR L$009ctr32_ret + jz NEAR L$011ctr32_ret movdqu xmm7,[ebp] mov edx,ebp pxor xmm7,[32+esp] mov ecx,DWORD [240+ebp] -L$007ctr32_tail: +L$009ctr32_tail: por xmm2,xmm7 cmp eax,2 - jb NEAR L$010ctr32_one + jb NEAR L$012ctr32_one pshufd xmm4,xmm0,64 por xmm3,xmm7 - je NEAR L$011ctr32_two + je NEAR L$013ctr32_two pshufd xmm5,xmm1,192 por xmm4,xmm7 cmp eax,4 - jb NEAR L$012ctr32_three + jb NEAR L$014ctr32_three pshufd xmm6,xmm1,128 por xmm5,xmm7 - je NEAR L$013ctr32_four + je NEAR L$015ctr32_four por xmm6,xmm7 call __aesni_encrypt6 movups xmm1,[esi] @@ -340,29 +366,29 @@ movups [32+edi],xmm4 movups [48+edi],xmm5 movups [64+edi],xmm6 - jmp NEAR L$009ctr32_ret + jmp NEAR L$011ctr32_ret align 16 -L$006ctr32_one_shortcut: +L$008ctr32_one_shortcut: movups xmm2,[ebx] mov ecx,DWORD [240+edx] -L$010ctr32_one: +L$012ctr32_one: movups xmm0,[edx] movups xmm1,[16+edx] lea edx,[32+edx] xorps xmm2,xmm0 -L$014enc1_loop_2: +L$016enc1_loop_2: db 102,15,56,220,209 dec ecx movups xmm1,[edx] lea edx,[16+edx] - jnz NEAR L$014enc1_loop_2 + jnz NEAR L$016enc1_loop_2 db 102,15,56,221,209 movups xmm6,[esi] xorps xmm6,xmm2 movups [edi],xmm6 - jmp NEAR L$009ctr32_ret + jmp NEAR L$011ctr32_ret align 16 -L$011ctr32_two: +L$013ctr32_two: call __aesni_encrypt2 movups xmm5,[esi] movups xmm6,[16+esi] @@ -370,9 +396,9 @@ xorps xmm3,xmm6 movups [edi],xmm2 movups [16+edi],xmm3 - jmp NEAR L$009ctr32_ret + jmp NEAR L$011ctr32_ret align 16 -L$012ctr32_three: +L$014ctr32_three: call __aesni_encrypt3 movups xmm5,[esi] movups xmm6,[16+esi] @@ -383,9 +409,9 @@ xorps xmm4,xmm7 movups [16+edi],xmm3 movups [32+edi],xmm4 - jmp NEAR L$009ctr32_ret + jmp NEAR L$011ctr32_ret align 16 -L$013ctr32_four: +L$015ctr32_four: call __aesni_encrypt4 movups xmm6,[esi] movups xmm7,[16+esi] @@ -399,7 +425,7 @@ xorps xmm5,xmm0 movups [32+edi],xmm4 movups [48+edi],xmm5 -L$009ctr32_ret: +L$011ctr32_ret: pxor xmm0,xmm0 pxor xmm1,xmm1 pxor xmm2,xmm2 @@ -422,57 +448,57 @@ push ebp push ebx test eax,eax - jz NEAR L$015bad_pointer + jz NEAR L$017bad_pointer test edx,edx - jz NEAR L$015bad_pointer - call L$016pic -L$016pic: + jz NEAR L$017bad_pointer + call L$018pic +L$018pic: pop ebx - lea ebx,[(L$key_const-L$016pic)+ebx] - lea ebp,[_GFp_ia32cap_P] + lea ebx,[(L$key_const-L$018pic)+ebx] + lea ebp,[_OPENSSL_ia32cap_P] movups xmm0,[eax] xorps xmm4,xmm4 mov ebp,DWORD [4+ebp] lea edx,[16+edx] and ebp,268437504 cmp ecx,256 - je NEAR L$01714rounds + je NEAR L$01914rounds cmp ecx,128 - jne NEAR L$018bad_keybits + jne NEAR L$020bad_keybits align 16 -L$01910rounds: +L$02110rounds: cmp ebp,268435456 - je NEAR L$02010rounds_alt + je NEAR L$02210rounds_alt mov ecx,9 movups [edx-16],xmm0 db 102,15,58,223,200,1 - call L$021key_128_cold + call L$023key_128_cold db 102,15,58,223,200,2 - call L$022key_128 + call L$024key_128 db 102,15,58,223,200,4 - call L$022key_128 + call L$024key_128 db 102,15,58,223,200,8 - call L$022key_128 + call L$024key_128 db 102,15,58,223,200,16 - call L$022key_128 + call L$024key_128 db 102,15,58,223,200,32 - call L$022key_128 + call L$024key_128 db 102,15,58,223,200,64 - call L$022key_128 + call L$024key_128 db 102,15,58,223,200,128 - call L$022key_128 + call L$024key_128 db 102,15,58,223,200,27 - call L$022key_128 + call L$024key_128 db 102,15,58,223,200,54 - call L$022key_128 + call L$024key_128 movups [edx],xmm0 mov DWORD [80+edx],ecx - jmp NEAR L$023good_key + jmp NEAR L$025good_key align 16 -L$022key_128: +L$024key_128: movups [edx],xmm0 lea edx,[16+edx] -L$021key_128_cold: +L$023key_128_cold: shufps xmm4,xmm0,16 xorps xmm0,xmm4 shufps xmm4,xmm0,140 @@ -481,13 +507,13 @@ xorps xmm0,xmm1 ret align 16 -L$02010rounds_alt: +L$02210rounds_alt: movdqa xmm5,[ebx] mov ecx,8 movdqa xmm4,[32+ebx] movdqa xmm2,xmm0 movdqu [edx-16],xmm0 -L$024loop_key128: +L$026loop_key128: db 102,15,56,0,197 db 102,15,56,221,196 pslld xmm4,1 @@ -503,7 +529,7 @@ movdqu [edx-16],xmm0 movdqa xmm2,xmm0 dec ecx - jnz NEAR L$024loop_key128 + jnz NEAR L$026loop_key128 movdqa xmm4,[48+ebx] db 102,15,56,0,197 db 102,15,56,221,196 @@ -531,51 +557,51 @@ movdqu [16+edx],xmm0 mov ecx,9 mov DWORD [96+edx],ecx - jmp NEAR L$023good_key + jmp NEAR L$025good_key align 16 -L$01714rounds: +L$01914rounds: movups xmm2,[16+eax] lea edx,[16+edx] cmp ebp,268435456 - je NEAR L$02514rounds_alt + je NEAR L$02714rounds_alt mov ecx,13 movups [edx-32],xmm0 movups [edx-16],xmm2 db 102,15,58,223,202,1 - call L$026key_256a_cold + call L$028key_256a_cold db 102,15,58,223,200,1 - call L$027key_256b + call L$029key_256b db 102,15,58,223,202,2 - call L$028key_256a + call L$030key_256a db 102,15,58,223,200,2 - call L$027key_256b + call L$029key_256b db 102,15,58,223,202,4 - call L$028key_256a + call L$030key_256a db 102,15,58,223,200,4 - call L$027key_256b + call L$029key_256b db 102,15,58,223,202,8 - call L$028key_256a + call L$030key_256a db 102,15,58,223,200,8 - call L$027key_256b + call L$029key_256b db 102,15,58,223,202,16 - call L$028key_256a + call L$030key_256a db 102,15,58,223,200,16 - call L$027key_256b + call L$029key_256b db 102,15,58,223,202,32 - call L$028key_256a + call L$030key_256a db 102,15,58,223,200,32 - call L$027key_256b + call L$029key_256b db 102,15,58,223,202,64 - call L$028key_256a + call L$030key_256a movups [edx],xmm0 mov DWORD [16+edx],ecx xor eax,eax - jmp NEAR L$023good_key + jmp NEAR L$025good_key align 16 -L$028key_256a: +L$030key_256a: movups [edx],xmm2 lea edx,[16+edx] -L$026key_256a_cold: +L$028key_256a_cold: shufps xmm4,xmm0,16 xorps xmm0,xmm4 shufps xmm4,xmm0,140 @@ -584,7 +610,7 @@ xorps xmm0,xmm1 ret align 16 -L$027key_256b: +L$029key_256b: movups [edx],xmm0 lea edx,[16+edx] shufps xmm4,xmm2,16 @@ -595,14 +621,14 @@ xorps xmm2,xmm1 ret align 16 -L$02514rounds_alt: +L$02714rounds_alt: movdqa xmm5,[ebx] movdqa xmm4,[32+ebx] mov ecx,7 movdqu [edx-32],xmm0 movdqa xmm1,xmm2 movdqu [edx-16],xmm2 -L$029loop_key256: +L$031loop_key256: db 102,15,56,0,213 db 102,15,56,221,212 movdqa xmm3,xmm0 @@ -616,7 +642,7 @@ pxor xmm0,xmm2 movdqu [edx],xmm0 dec ecx - jz NEAR L$030done_key256 + jz NEAR L$032done_key256 pshufd xmm2,xmm0,255 pxor xmm3,xmm3 db 102,15,56,221,211 @@ -631,11 +657,11 @@ movdqu [16+edx],xmm2 lea edx,[32+edx] movdqa xmm1,xmm2 - jmp NEAR L$029loop_key256 -L$030done_key256: + jmp NEAR L$031loop_key256 +L$032done_key256: mov ecx,13 mov DWORD [16+edx],ecx -L$023good_key: +L$025good_key: pxor xmm0,xmm0 pxor xmm1,xmm1 pxor xmm2,xmm2 @@ -647,22 +673,34 @@ pop ebp ret align 4 -L$015bad_pointer: +L$017bad_pointer: mov eax,-1 pop ebx pop ebp ret align 4 -L$018bad_keybits: +L$020bad_keybits: pxor xmm0,xmm0 mov eax,-2 pop ebx pop ebp ret -global _GFp_aes_hw_set_encrypt_key +global _aes_hw_set_encrypt_key align 16 -_GFp_aes_hw_set_encrypt_key: -L$_GFp_aes_hw_set_encrypt_key_begin: +_aes_hw_set_encrypt_key: +L$_aes_hw_set_encrypt_key_begin: +%ifdef BORINGSSL_DISPATCH_TEST + push ebx + push edx + call L$033pic +L$033pic: + pop ebx + lea ebx,[(_BORINGSSL_function_hit+3-L$033pic)+ebx] + mov edx,1 + mov BYTE [ebx],dl + pop edx + pop ebx +%endif mov eax,DWORD [4+esp] mov ecx,DWORD [8+esp] mov edx,DWORD [12+esp] @@ -679,4 +717,8 @@ db 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 db 115,108,46,111,114,103,62,0 segment .bss -common _GFp_ia32cap_P 16 +common _OPENSSL_ia32cap_P 16 +%else +; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 +ret +%endif diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/chacha20_poly1305_x86_64-nasm.asm temporalio-1.3.0/vendor/ring/pregenerated/tmp/chacha20_poly1305_x86_64-nasm.asm --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/chacha20_poly1305_x86_64-nasm.asm 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/chacha20_poly1305_x86_64-nasm.asm 2023-10-30 19:40:00.000000000 +0000 @@ -1,26 +1,31 @@ ; This file is generated from a similarly-named Perl script in the BoringSSL ; source tree. Do not edit by hand. +%ifidn __OUTPUT_FORMAT__, win64 default rel %define XMMWORD %define YMMWORD %define ZMMWORD +%define _CET_ENDBR + +%include "ring_core_generated/prefix_symbols_nasm.inc" section .text code align=64 -EXTERN GFp_ia32cap_P +EXTERN OPENSSL_ia32cap_P chacha20_poly1305_constants: +section .rdata rdata align=8 ALIGN 64 $L$chacha20_consts: -DB 'e','x','p','a','n','d',' ','3','2','-','b','y','t','e',' ','k' -DB 'e','x','p','a','n','d',' ','3','2','-','b','y','t','e',' ','k' + DB 'e','x','p','a','n','d',' ','3','2','-','b','y','t','e',' ','k' + DB 'e','x','p','a','n','d',' ','3','2','-','b','y','t','e',' ','k' $L$rol8: -DB 3,0,1,2,7,4,5,6,11,8,9,10,15,12,13,14 -DB 3,0,1,2,7,4,5,6,11,8,9,10,15,12,13,14 + DB 3,0,1,2,7,4,5,6,11,8,9,10,15,12,13,14 + DB 3,0,1,2,7,4,5,6,11,8,9,10,15,12,13,14 $L$rol16: -DB 2,3,0,1,6,7,4,5,10,11,8,9,14,15,12,13 -DB 2,3,0,1,6,7,4,5,10,11,8,9,14,15,12,13 + DB 2,3,0,1,6,7,4,5,10,11,8,9,14,15,12,13 + DB 2,3,0,1,6,7,4,5,10,11,8,9,14,15,12,13 $L$avx2_init: DD 0,0,0,0 $L$sse_inc: @@ -32,22 +37,24 @@ DQ 0xFFFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFFFF ALIGN 16 $L$and_masks: -DB 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -DB 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -DB 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -DB 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -DB 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -DB 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00 -DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00 -DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00 -DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00 -DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00 -DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00 -DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff + DB 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + DB 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + DB 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + DB 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + DB 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + DB 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00 + DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00 + DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00 + DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00 + DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00 + DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00 + DB 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff +section .text + ALIGN 64 @@ -103,7 +110,7 @@ adc r11,r9 adc r12,0 - DB 0F3h,0C3h ;repret + ret $L$hash_ad_loop: cmp r8,16 @@ -212,18 +219,18 @@ $L$hash_ad_done: - DB 0F3h,0C3h ;repret + ret -global GFp_chacha20_poly1305_open +global chacha20_poly1305_open ALIGN 64 -GFp_chacha20_poly1305_open: +chacha20_poly1305_open: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_chacha20_poly1305_open: +$L$SEH_begin_chacha20_poly1305_open: mov rdi,rcx mov rsi,rdx mov rdx,r8 @@ -233,6 +240,7 @@ +_CET_ENDBR push rbp push rbx @@ -270,7 +278,7 @@ mov QWORD[((0+160+32))+rbp],r8 mov QWORD[((8+160+32))+rbp],rbx - mov eax,DWORD[((GFp_ia32cap_P+8))] + mov eax,DWORD[((OPENSSL_ia32cap_P+8))] and eax,288 xor eax,288 jz NEAR chacha20_poly1305_open_avx2 @@ -1881,7 +1889,7 @@ mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret $L$open_sse_128: @@ -2113,7 +2121,8 @@ movdqa xmm6,xmm10 movdqa xmm10,xmm14 jmp NEAR $L$open_sse_128_xor_hash -$L$SEH_end_GFp_chacha20_poly1305_open: +$L$SEH_end_chacha20_poly1305_open: + @@ -2121,14 +2130,14 @@ -global GFp_chacha20_poly1305_seal +global chacha20_poly1305_seal ALIGN 64 -GFp_chacha20_poly1305_seal: +chacha20_poly1305_seal: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_chacha20_poly1305_seal: +$L$SEH_begin_chacha20_poly1305_seal: mov rdi,rcx mov rsi,rdx mov rdx,r8 @@ -2138,6 +2147,7 @@ +_CET_ENDBR push rbp push rbx @@ -2176,7 +2186,7 @@ mov QWORD[((8+160+32))+rbp],rbx mov rbx,rdx - mov eax,DWORD[((GFp_ia32cap_P+8))] + mov eax,DWORD[((OPENSSL_ia32cap_P+8))] and eax,288 xor eax,288 jz NEAR chacha20_poly1305_seal_avx2 @@ -3966,7 +3976,7 @@ mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret $L$seal_sse_128: @@ -4138,7 +4148,7 @@ mov r8,r8 call poly_hash_ad_internal jmp NEAR $L$seal_sse_128_tail_xor -$L$SEH_end_GFp_chacha20_poly1305_seal: +$L$SEH_end_chacha20_poly1305_seal: @@ -8939,3 +8949,7 @@ jmp NEAR $L$seal_sse_tail_16 +%else +; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 +ret +%endif diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/chacha-x86_64-nasm.asm temporalio-1.3.0/vendor/ring/pregenerated/tmp/chacha-x86_64-nasm.asm --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/chacha-x86_64-nasm.asm 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/chacha-x86_64-nasm.asm 2023-10-30 19:40:00.000000000 +0000 @@ -1,15 +1,20 @@ ; This file is generated from a similarly-named Perl script in the BoringSSL ; source tree. Do not edit by hand. +%ifidn __OUTPUT_FORMAT__, win64 default rel %define XMMWORD %define YMMWORD %define ZMMWORD +%define _CET_ENDBR + +%include "ring_core_generated/prefix_symbols_nasm.inc" section .text code align=64 -EXTERN GFp_ia32cap_P +EXTERN OPENSSL_ia32cap_P +section .rdata rdata align=8 ALIGN 64 $L$zero: DD 0,0,0,0 @@ -24,12 +29,12 @@ $L$eight: DD 8,8,8,8,8,8,8,8 $L$rot16: -DB 0x2,0x3,0x0,0x1,0x6,0x7,0x4,0x5,0xa,0xb,0x8,0x9,0xe,0xf,0xc,0xd + DB 0x2,0x3,0x0,0x1,0x6,0x7,0x4,0x5,0xa,0xb,0x8,0x9,0xe,0xf,0xc,0xd $L$rot24: -DB 0x3,0x0,0x1,0x2,0x7,0x4,0x5,0x6,0xb,0x8,0x9,0xa,0xf,0xc,0xd,0xe + DB 0x3,0x0,0x1,0x2,0x7,0x4,0x5,0x6,0xb,0x8,0x9,0xa,0xf,0xc,0xd,0xe $L$sigma: -DB 101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107 -DB 0 + DB 101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107 + DB 0 ALIGN 64 $L$zeroz: DD 0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0 @@ -39,18 +44,20 @@ DD 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 $L$sixteen: DD 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16 -DB 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54 -DB 95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32 -DB 98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115 -DB 108,46,111,114,103,62,0 -global GFp_ChaCha20_ctr32 + DB 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54 + DB 95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32 + DB 98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115 + DB 108,46,111,114,103,62,0 +section .text + +global ChaCha20_ctr32 ALIGN 64 -GFp_ChaCha20_ctr32: +ChaCha20_ctr32: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_ChaCha20_ctr32: +$L$SEH_begin_ChaCha20_ctr32: mov rdi,rcx mov rsi,rdx mov rdx,r8 @@ -59,9 +66,10 @@ +_CET_ENDBR cmp rdx,0 je NEAR $L$no_data - mov r10,QWORD[((GFp_ia32cap_P+4))] + mov r10,QWORD[((OPENSSL_ia32cap_P+4))] test r10d,512 jnz NEAR $L$ChaCha20_ssse3 @@ -335,9 +343,9 @@ $L$no_data: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_ChaCha20_ctr32: +$L$SEH_end_ChaCha20_ctr32: ALIGN 32 ChaCha20_ssse3: @@ -490,7 +498,7 @@ $L$ssse3_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret $L$SEH_end_ChaCha20_ssse3: @@ -1076,7 +1084,7 @@ $L$4x_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret $L$SEH_end_ChaCha20_4x: @@ -1716,7 +1724,7 @@ $L$8x_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret $L$SEH_end_ChaCha20_8x: EXTERN __imp_RtlVirtualUnwind @@ -1802,7 +1810,7 @@ pop rbx pop rdi pop rsi - DB 0F3h,0C3h ;repret + ret @@ -1887,9 +1895,9 @@ section .pdata rdata align=4 ALIGN 4 - DD $L$SEH_begin_GFp_ChaCha20_ctr32 wrt ..imagebase - DD $L$SEH_end_GFp_ChaCha20_ctr32 wrt ..imagebase - DD $L$SEH_info_GFp_ChaCha20_ctr32 wrt ..imagebase + DD $L$SEH_begin_ChaCha20_ctr32 wrt ..imagebase + DD $L$SEH_end_ChaCha20_ctr32 wrt ..imagebase + DD $L$SEH_info_ChaCha20_ctr32 wrt ..imagebase DD $L$SEH_begin_ChaCha20_ssse3 wrt ..imagebase DD $L$SEH_end_ChaCha20_ssse3 wrt ..imagebase @@ -1903,20 +1911,24 @@ DD $L$SEH_info_ChaCha20_8x wrt ..imagebase section .xdata rdata align=8 ALIGN 8 -$L$SEH_info_GFp_ChaCha20_ctr32: -DB 9,0,0,0 +$L$SEH_info_ChaCha20_ctr32: + DB 9,0,0,0 DD se_handler wrt ..imagebase $L$SEH_info_ChaCha20_ssse3: -DB 9,0,0,0 + DB 9,0,0,0 DD ssse3_handler wrt ..imagebase DD $L$ssse3_body wrt ..imagebase,$L$ssse3_epilogue wrt ..imagebase $L$SEH_info_ChaCha20_4x: -DB 9,0,0,0 + DB 9,0,0,0 DD full_handler wrt ..imagebase DD $L$4x_body wrt ..imagebase,$L$4x_epilogue wrt ..imagebase $L$SEH_info_ChaCha20_8x: -DB 9,0,0,0 + DB 9,0,0,0 DD full_handler wrt ..imagebase DD $L$8x_body wrt ..imagebase,$L$8x_epilogue wrt ..imagebase +%else +; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 +ret +%endif diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/chacha-x86-win32n.asm temporalio-1.3.0/vendor/ring/pregenerated/tmp/chacha-x86-win32n.asm --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/chacha-x86-win32n.asm 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/chacha-x86-win32n.asm 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,8 @@ ; This file is generated from a similarly-named Perl script in the BoringSSL ; source tree. Do not edit by hand. -%ifdef BORINGSSL_PREFIX -%include "boringssl_prefix_symbols_nasm.inc" -%endif +%include "ring_core_generated/prefix_symbols_nasm.inc" +%ifidn __OUTPUT_FORMAT__, win32 %ifidn __OUTPUT_FORMAT__,obj section code use32 class=code align=64 %elifidn __OUTPUT_FORMAT__,win32 @@ -12,10 +11,10 @@ %else section .text code %endif -global _GFp_ChaCha20_ctr32 +global _ChaCha20_ctr32 align 16 -_GFp_ChaCha20_ctr32: -L$_GFp_ChaCha20_ctr32_begin: +_ChaCha20_ctr32: +L$_ChaCha20_ctr32_begin: push ebp push ebx push esi @@ -26,7 +25,7 @@ call L$pic_point L$pic_point: pop eax - lea ebp,[_GFp_ia32cap_P] + lea ebp,[_OPENSSL_ia32cap_P] test DWORD [ebp],16777216 jz NEAR L$001x86 test DWORD [4+ebp],512 @@ -970,4 +969,8 @@ db 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 db 114,103,62,0 segment .bss -common _GFp_ia32cap_P 16 +common _OPENSSL_ia32cap_P 16 +%else +; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 +ret +%endif diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/ecp_nistz256-x86-win32n.asm temporalio-1.3.0/vendor/ring/pregenerated/tmp/ecp_nistz256-x86-win32n.asm --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/ecp_nistz256-x86-win32n.asm 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/ecp_nistz256-x86-win32n.asm 1970-01-01 00:00:00.000000000 +0000 @@ -1,1105 +0,0 @@ -; This file is generated from a similarly-named Perl script in the BoringSSL -; source tree. Do not edit by hand. - -%ifdef BORINGSSL_PREFIX -%include "boringssl_prefix_symbols_nasm.inc" -%endif -%ifidn __OUTPUT_FORMAT__,obj -section code use32 class=code align=64 -%elifidn __OUTPUT_FORMAT__,win32 -$@feat.00 equ 1 -section .text code align=64 -%else -section .text code -%endif -;extern _GFp_ia32cap_P -L$ONE_mont: -dd 1,0,0,-1,-1,-1,-2,0 -align 16 -__ecp_nistz256_div_by_2: - mov ebp,DWORD [esi] - xor edx,edx - mov ebx,DWORD [4+esi] - mov eax,ebp - and ebp,1 - mov ecx,DWORD [8+esi] - sub edx,ebp - add eax,edx - adc ebx,edx - mov DWORD [edi],eax - adc ecx,edx - mov DWORD [4+edi],ebx - mov DWORD [8+edi],ecx - mov eax,DWORD [12+esi] - mov ebx,DWORD [16+esi] - adc eax,0 - mov ecx,DWORD [20+esi] - adc ebx,0 - mov DWORD [12+edi],eax - adc ecx,0 - mov DWORD [16+edi],ebx - mov DWORD [20+edi],ecx - mov eax,DWORD [24+esi] - mov ebx,DWORD [28+esi] - adc eax,ebp - adc ebx,edx - mov DWORD [24+edi],eax - sbb esi,esi - mov DWORD [28+edi],ebx - mov eax,DWORD [edi] - mov ebx,DWORD [4+edi] - mov ecx,DWORD [8+edi] - mov edx,DWORD [12+edi] - shr eax,1 - mov ebp,ebx - shl ebx,31 - or eax,ebx - shr ebp,1 - mov ebx,ecx - shl ecx,31 - mov DWORD [edi],eax - or ebp,ecx - mov eax,DWORD [16+edi] - shr ebx,1 - mov ecx,edx - shl edx,31 - mov DWORD [4+edi],ebp - or ebx,edx - mov ebp,DWORD [20+edi] - shr ecx,1 - mov edx,eax - shl eax,31 - mov DWORD [8+edi],ebx - or ecx,eax - mov ebx,DWORD [24+edi] - shr edx,1 - mov eax,ebp - shl ebp,31 - mov DWORD [12+edi],ecx - or edx,ebp - mov ecx,DWORD [28+edi] - shr eax,1 - mov ebp,ebx - shl ebx,31 - mov DWORD [16+edi],edx - or eax,ebx - shr ebp,1 - mov ebx,ecx - shl ecx,31 - mov DWORD [20+edi],eax - or ebp,ecx - shr ebx,1 - shl esi,31 - mov DWORD [24+edi],ebp - or ebx,esi - mov DWORD [28+edi],ebx - ret -global _GFp_nistz256_add -align 16 -_GFp_nistz256_add: -L$_GFp_nistz256_add_begin: - push ebp - push ebx - push esi - push edi - mov esi,DWORD [24+esp] - mov ebp,DWORD [28+esp] - mov edi,DWORD [20+esp] - call __ecp_nistz256_add - pop edi - pop esi - pop ebx - pop ebp - ret -align 16 -__ecp_nistz256_add: - mov eax,DWORD [esi] - mov ebx,DWORD [4+esi] - mov ecx,DWORD [8+esi] - add eax,DWORD [ebp] - mov edx,DWORD [12+esi] - adc ebx,DWORD [4+ebp] - mov DWORD [edi],eax - adc ecx,DWORD [8+ebp] - mov DWORD [4+edi],ebx - adc edx,DWORD [12+ebp] - mov DWORD [8+edi],ecx - mov DWORD [12+edi],edx - mov eax,DWORD [16+esi] - mov ebx,DWORD [20+esi] - mov ecx,DWORD [24+esi] - adc eax,DWORD [16+ebp] - mov edx,DWORD [28+esi] - adc ebx,DWORD [20+ebp] - mov DWORD [16+edi],eax - adc ecx,DWORD [24+ebp] - mov DWORD [20+edi],ebx - mov esi,0 - adc edx,DWORD [28+ebp] - mov DWORD [24+edi],ecx - adc esi,0 - mov DWORD [28+edi],edx - mov eax,DWORD [edi] - mov ebx,DWORD [4+edi] - mov ecx,DWORD [8+edi] - sub eax,-1 - mov edx,DWORD [12+edi] - sbb ebx,-1 - mov eax,DWORD [16+edi] - sbb ecx,-1 - mov ebx,DWORD [20+edi] - sbb edx,0 - mov ecx,DWORD [24+edi] - sbb eax,0 - mov edx,DWORD [28+edi] - sbb ebx,0 - sbb ecx,1 - sbb edx,-1 - sbb esi,0 - not esi - mov eax,DWORD [edi] - mov ebp,esi - mov ebx,DWORD [4+edi] - shr ebp,31 - mov ecx,DWORD [8+edi] - sub eax,esi - mov edx,DWORD [12+edi] - sbb ebx,esi - mov DWORD [edi],eax - sbb ecx,esi - mov DWORD [4+edi],ebx - sbb edx,0 - mov DWORD [8+edi],ecx - mov DWORD [12+edi],edx - mov eax,DWORD [16+edi] - mov ebx,DWORD [20+edi] - mov ecx,DWORD [24+edi] - sbb eax,0 - mov edx,DWORD [28+edi] - sbb ebx,0 - mov DWORD [16+edi],eax - sbb ecx,ebp - mov DWORD [20+edi],ebx - sbb edx,esi - mov DWORD [24+edi],ecx - mov DWORD [28+edi],edx - ret -align 16 -__ecp_nistz256_sub: - mov eax,DWORD [esi] - mov ebx,DWORD [4+esi] - mov ecx,DWORD [8+esi] - sub eax,DWORD [ebp] - mov edx,DWORD [12+esi] - sbb ebx,DWORD [4+ebp] - mov DWORD [edi],eax - sbb ecx,DWORD [8+ebp] - mov DWORD [4+edi],ebx - sbb edx,DWORD [12+ebp] - mov DWORD [8+edi],ecx - mov DWORD [12+edi],edx - mov eax,DWORD [16+esi] - mov ebx,DWORD [20+esi] - mov ecx,DWORD [24+esi] - sbb eax,DWORD [16+ebp] - mov edx,DWORD [28+esi] - sbb ebx,DWORD [20+ebp] - sbb ecx,DWORD [24+ebp] - mov DWORD [16+edi],eax - sbb edx,DWORD [28+ebp] - mov DWORD [20+edi],ebx - sbb esi,esi - mov DWORD [24+edi],ecx - mov DWORD [28+edi],edx - mov eax,DWORD [edi] - mov ebp,esi - mov ebx,DWORD [4+edi] - shr ebp,31 - mov ecx,DWORD [8+edi] - add eax,esi - mov edx,DWORD [12+edi] - adc ebx,esi - mov DWORD [edi],eax - adc ecx,esi - mov DWORD [4+edi],ebx - adc edx,0 - mov DWORD [8+edi],ecx - mov DWORD [12+edi],edx - mov eax,DWORD [16+edi] - mov ebx,DWORD [20+edi] - mov ecx,DWORD [24+edi] - adc eax,0 - mov edx,DWORD [28+edi] - adc ebx,0 - mov DWORD [16+edi],eax - adc ecx,ebp - mov DWORD [20+edi],ebx - adc edx,esi - mov DWORD [24+edi],ecx - mov DWORD [28+edi],edx - ret -global _GFp_nistz256_neg -align 16 -_GFp_nistz256_neg: -L$_GFp_nistz256_neg_begin: - push ebp - push ebx - push esi - push edi - mov ebp,DWORD [24+esp] - mov edi,DWORD [20+esp] - xor eax,eax - sub esp,32 - mov DWORD [esp],eax - mov esi,esp - mov DWORD [4+esp],eax - mov DWORD [8+esp],eax - mov DWORD [12+esp],eax - mov DWORD [16+esp],eax - mov DWORD [20+esp],eax - mov DWORD [24+esp],eax - mov DWORD [28+esp],eax - call __ecp_nistz256_sub - add esp,32 - pop edi - pop esi - pop ebx - pop ebp - ret -align 16 -__picup_eax: - mov eax,DWORD [esp] - ret -global _GFp_nistz256_mul_mont -align 16 -_GFp_nistz256_mul_mont: -L$_GFp_nistz256_mul_mont_begin: - push ebp - push ebx - push esi - push edi - mov esi,DWORD [24+esp] - mov ebp,DWORD [28+esp] - call __picup_eax -L$000pic: - lea eax,[_GFp_ia32cap_P] - mov eax,DWORD [eax] - mov edi,DWORD [20+esp] - call __ecp_nistz256_mul_mont - pop edi - pop esi - pop ebx - pop ebp - ret -align 16 -__ecp_nistz256_mul_mont: - mov edx,esp - sub esp,256 - movd xmm7,DWORD [ebp] - lea ebp,[4+ebp] - pcmpeqd xmm6,xmm6 - psrlq xmm6,48 - pshuflw xmm7,xmm7,220 - and esp,-64 - pshufd xmm7,xmm7,220 - lea ebx,[128+esp] - movd xmm0,DWORD [esi] - pshufd xmm0,xmm0,204 - movd xmm1,DWORD [4+esi] - movdqa [ebx],xmm0 - pmuludq xmm0,xmm7 - movd xmm2,DWORD [8+esi] - pshufd xmm1,xmm1,204 - movdqa [16+ebx],xmm1 - pmuludq xmm1,xmm7 - movq xmm4,xmm0 - pslldq xmm4,6 - paddq xmm4,xmm0 - movdqa xmm5,xmm4 - psrldq xmm4,10 - pand xmm5,xmm6 - movd xmm3,DWORD [12+esi] - pshufd xmm2,xmm2,204 - movdqa [32+ebx],xmm2 - pmuludq xmm2,xmm7 - paddq xmm1,xmm4 - movdqa [esp],xmm1 - movd xmm0,DWORD [16+esi] - pshufd xmm3,xmm3,204 - movdqa [48+ebx],xmm3 - pmuludq xmm3,xmm7 - movdqa [16+esp],xmm2 - movd xmm1,DWORD [20+esi] - pshufd xmm0,xmm0,204 - movdqa [64+ebx],xmm0 - pmuludq xmm0,xmm7 - paddq xmm3,xmm5 - movdqa [32+esp],xmm3 - movd xmm2,DWORD [24+esi] - pshufd xmm1,xmm1,204 - movdqa [80+ebx],xmm1 - pmuludq xmm1,xmm7 - movdqa [48+esp],xmm0 - pshufd xmm4,xmm5,177 - movd xmm3,DWORD [28+esi] - pshufd xmm2,xmm2,204 - movdqa [96+ebx],xmm2 - pmuludq xmm2,xmm7 - movdqa [64+esp],xmm1 - psubq xmm4,xmm5 - movd xmm0,DWORD [ebp] - pshufd xmm3,xmm3,204 - movdqa [112+ebx],xmm3 - pmuludq xmm3,xmm7 - pshuflw xmm7,xmm0,220 - movdqa xmm0,[ebx] - pshufd xmm7,xmm7,220 - mov ecx,6 - lea ebp,[4+ebp] - jmp NEAR L$001madd_sse2 -align 16 -L$001madd_sse2: - paddq xmm2,xmm5 - paddq xmm3,xmm4 - movdqa xmm1,[16+ebx] - pmuludq xmm0,xmm7 - movdqa [80+esp],xmm2 - movdqa xmm2,[32+ebx] - pmuludq xmm1,xmm7 - movdqa [96+esp],xmm3 - paddq xmm0,[esp] - movdqa xmm3,[48+ebx] - pmuludq xmm2,xmm7 - movq xmm4,xmm0 - pslldq xmm4,6 - paddq xmm1,[16+esp] - paddq xmm4,xmm0 - movdqa xmm5,xmm4 - psrldq xmm4,10 - movdqa xmm0,[64+ebx] - pmuludq xmm3,xmm7 - paddq xmm1,xmm4 - paddq xmm2,[32+esp] - movdqa [esp],xmm1 - movdqa xmm1,[80+ebx] - pmuludq xmm0,xmm7 - paddq xmm3,[48+esp] - movdqa [16+esp],xmm2 - pand xmm5,xmm6 - movdqa xmm2,[96+ebx] - pmuludq xmm1,xmm7 - paddq xmm3,xmm5 - paddq xmm0,[64+esp] - movdqa [32+esp],xmm3 - pshufd xmm4,xmm5,177 - movdqa xmm3,xmm7 - pmuludq xmm2,xmm7 - movd xmm7,DWORD [ebp] - lea ebp,[4+ebp] - paddq xmm1,[80+esp] - psubq xmm4,xmm5 - movdqa [48+esp],xmm0 - pshuflw xmm7,xmm7,220 - pmuludq xmm3,[112+ebx] - pshufd xmm7,xmm7,220 - movdqa xmm0,[ebx] - movdqa [64+esp],xmm1 - paddq xmm2,[96+esp] - dec ecx - jnz NEAR L$001madd_sse2 - paddq xmm2,xmm5 - paddq xmm3,xmm4 - movdqa xmm1,[16+ebx] - pmuludq xmm0,xmm7 - movdqa [80+esp],xmm2 - movdqa xmm2,[32+ebx] - pmuludq xmm1,xmm7 - movdqa [96+esp],xmm3 - paddq xmm0,[esp] - movdqa xmm3,[48+ebx] - pmuludq xmm2,xmm7 - movq xmm4,xmm0 - pslldq xmm4,6 - paddq xmm1,[16+esp] - paddq xmm4,xmm0 - movdqa xmm5,xmm4 - psrldq xmm4,10 - movdqa xmm0,[64+ebx] - pmuludq xmm3,xmm7 - paddq xmm1,xmm4 - paddq xmm2,[32+esp] - movdqa [esp],xmm1 - movdqa xmm1,[80+ebx] - pmuludq xmm0,xmm7 - paddq xmm3,[48+esp] - movdqa [16+esp],xmm2 - pand xmm5,xmm6 - movdqa xmm2,[96+ebx] - pmuludq xmm1,xmm7 - paddq xmm3,xmm5 - paddq xmm0,[64+esp] - movdqa [32+esp],xmm3 - pshufd xmm4,xmm5,177 - movdqa xmm3,[112+ebx] - pmuludq xmm2,xmm7 - paddq xmm1,[80+esp] - psubq xmm4,xmm5 - movdqa [48+esp],xmm0 - pmuludq xmm3,xmm7 - pcmpeqd xmm7,xmm7 - movdqa xmm0,[esp] - pslldq xmm7,8 - movdqa [64+esp],xmm1 - paddq xmm2,[96+esp] - paddq xmm2,xmm5 - paddq xmm3,xmm4 - movdqa [80+esp],xmm2 - movdqa [96+esp],xmm3 - movdqa xmm1,[16+esp] - movdqa xmm2,[32+esp] - movdqa xmm3,[48+esp] - movq xmm4,xmm0 - pand xmm0,xmm7 - xor ebp,ebp - pslldq xmm4,6 - movq xmm5,xmm1 - paddq xmm0,xmm4 - pand xmm1,xmm7 - psrldq xmm0,6 - movd eax,xmm0 - psrldq xmm0,4 - paddq xmm5,xmm0 - movdqa xmm0,[64+esp] - sub eax,-1 - pslldq xmm5,6 - movq xmm4,xmm2 - paddq xmm1,xmm5 - pand xmm2,xmm7 - psrldq xmm1,6 - mov DWORD [edi],eax - movd eax,xmm1 - psrldq xmm1,4 - paddq xmm4,xmm1 - movdqa xmm1,[80+esp] - sbb eax,-1 - pslldq xmm4,6 - movq xmm5,xmm3 - paddq xmm2,xmm4 - pand xmm3,xmm7 - psrldq xmm2,6 - mov DWORD [4+edi],eax - movd eax,xmm2 - psrldq xmm2,4 - paddq xmm5,xmm2 - movdqa xmm2,[96+esp] - sbb eax,-1 - pslldq xmm5,6 - movq xmm4,xmm0 - paddq xmm3,xmm5 - pand xmm0,xmm7 - psrldq xmm3,6 - mov DWORD [8+edi],eax - movd eax,xmm3 - psrldq xmm3,4 - paddq xmm4,xmm3 - sbb eax,0 - pslldq xmm4,6 - movq xmm5,xmm1 - paddq xmm0,xmm4 - pand xmm1,xmm7 - psrldq xmm0,6 - mov DWORD [12+edi],eax - movd eax,xmm0 - psrldq xmm0,4 - paddq xmm5,xmm0 - sbb eax,0 - pslldq xmm5,6 - movq xmm4,xmm2 - paddq xmm1,xmm5 - pand xmm2,xmm7 - psrldq xmm1,6 - movd ebx,xmm1 - psrldq xmm1,4 - mov esp,edx - paddq xmm4,xmm1 - pslldq xmm4,6 - paddq xmm2,xmm4 - psrldq xmm2,6 - movd ecx,xmm2 - psrldq xmm2,4 - sbb ebx,0 - movd edx,xmm2 - pextrw esi,xmm2,2 - sbb ecx,1 - sbb edx,-1 - sbb esi,0 - sub ebp,esi - add DWORD [edi],esi - adc DWORD [4+edi],esi - adc DWORD [8+edi],esi - adc DWORD [12+edi],0 - adc eax,0 - adc ebx,0 - mov DWORD [16+edi],eax - adc ecx,ebp - mov DWORD [20+edi],ebx - adc edx,esi - mov DWORD [24+edi],ecx - mov DWORD [28+edi],edx - ret -global _GFp_nistz256_point_double -align 16 -_GFp_nistz256_point_double: -L$_GFp_nistz256_point_double_begin: - push ebp - push ebx - push esi - push edi - mov esi,DWORD [24+esp] - sub esp,164 - call __picup_eax -L$002pic: - lea edx,[_GFp_ia32cap_P] - mov ebp,DWORD [edx] -L$point_double_shortcut: - mov eax,DWORD [esi] - mov ebx,DWORD [4+esi] - mov ecx,DWORD [8+esi] - mov edx,DWORD [12+esi] - mov DWORD [96+esp],eax - mov DWORD [100+esp],ebx - mov DWORD [104+esp],ecx - mov DWORD [108+esp],edx - mov eax,DWORD [16+esi] - mov ebx,DWORD [20+esi] - mov ecx,DWORD [24+esi] - mov edx,DWORD [28+esi] - mov DWORD [112+esp],eax - mov DWORD [116+esp],ebx - mov DWORD [120+esp],ecx - mov DWORD [124+esp],edx - mov DWORD [160+esp],ebp - lea ebp,[32+esi] - lea esi,[32+esi] - lea edi,[esp] - call __ecp_nistz256_add - mov eax,DWORD [160+esp] - mov esi,64 - add esi,DWORD [188+esp] - lea edi,[64+esp] - mov ebp,esi - call __ecp_nistz256_mul_mont - mov eax,DWORD [160+esp] - lea esi,[esp] - lea ebp,[esp] - lea edi,[esp] - call __ecp_nistz256_mul_mont - mov eax,DWORD [160+esp] - mov ebp,DWORD [188+esp] - lea esi,[32+ebp] - lea ebp,[64+ebp] - lea edi,[128+esp] - call __ecp_nistz256_mul_mont - lea esi,[96+esp] - lea ebp,[64+esp] - lea edi,[32+esp] - call __ecp_nistz256_add - mov edi,64 - lea esi,[128+esp] - lea ebp,[128+esp] - add edi,DWORD [184+esp] - call __ecp_nistz256_add - lea esi,[96+esp] - lea ebp,[64+esp] - lea edi,[64+esp] - call __ecp_nistz256_sub - mov eax,DWORD [160+esp] - lea esi,[esp] - lea ebp,[esp] - lea edi,[128+esp] - call __ecp_nistz256_mul_mont - mov eax,DWORD [160+esp] - lea esi,[32+esp] - lea ebp,[64+esp] - lea edi,[32+esp] - call __ecp_nistz256_mul_mont - mov edi,32 - lea esi,[128+esp] - add edi,DWORD [184+esp] - call __ecp_nistz256_div_by_2 - lea esi,[32+esp] - lea ebp,[32+esp] - lea edi,[128+esp] - call __ecp_nistz256_add - mov eax,DWORD [160+esp] - lea esi,[96+esp] - lea ebp,[esp] - lea edi,[esp] - call __ecp_nistz256_mul_mont - lea esi,[128+esp] - lea ebp,[32+esp] - lea edi,[32+esp] - call __ecp_nistz256_add - lea esi,[esp] - lea ebp,[esp] - lea edi,[128+esp] - call __ecp_nistz256_add - mov eax,DWORD [160+esp] - lea esi,[32+esp] - lea ebp,[32+esp] - mov edi,DWORD [184+esp] - call __ecp_nistz256_mul_mont - mov esi,edi - lea ebp,[128+esp] - call __ecp_nistz256_sub - lea esi,[esp] - mov ebp,edi - lea edi,[esp] - call __ecp_nistz256_sub - mov eax,DWORD [160+esp] - mov esi,edi - lea ebp,[32+esp] - call __ecp_nistz256_mul_mont - mov ebp,32 - lea esi,[esp] - add ebp,DWORD [184+esp] - mov edi,ebp - call __ecp_nistz256_sub - add esp,164 - pop edi - pop esi - pop ebx - pop ebp - ret -global _GFp_nistz256_point_add_affine -align 16 -_GFp_nistz256_point_add_affine: -L$_GFp_nistz256_point_add_affine_begin: - push ebp - push ebx - push esi - push edi - mov esi,DWORD [24+esp] - sub esp,492 - call __picup_eax -L$003pic: - lea edx,[_GFp_ia32cap_P] - mov ebp,DWORD [edx] - lea edi,[96+esp] - mov eax,DWORD [esi] - mov ebx,DWORD [4+esi] - mov ecx,DWORD [8+esi] - mov edx,DWORD [12+esi] - mov DWORD [edi],eax - mov DWORD [488+esp],ebp - mov DWORD [4+edi],ebx - mov DWORD [8+edi],ecx - mov DWORD [12+edi],edx - mov eax,DWORD [16+esi] - mov ebx,DWORD [20+esi] - mov ecx,DWORD [24+esi] - mov edx,DWORD [28+esi] - mov DWORD [16+edi],eax - mov DWORD [20+edi],ebx - mov DWORD [24+edi],ecx - mov DWORD [28+edi],edx - mov eax,DWORD [32+esi] - mov ebx,DWORD [36+esi] - mov ecx,DWORD [40+esi] - mov edx,DWORD [44+esi] - mov DWORD [32+edi],eax - mov DWORD [36+edi],ebx - mov DWORD [40+edi],ecx - mov DWORD [44+edi],edx - mov eax,DWORD [48+esi] - mov ebx,DWORD [52+esi] - mov ecx,DWORD [56+esi] - mov edx,DWORD [60+esi] - mov DWORD [48+edi],eax - mov DWORD [52+edi],ebx - mov DWORD [56+edi],ecx - mov DWORD [60+edi],edx - mov eax,DWORD [64+esi] - mov ebx,DWORD [68+esi] - mov ecx,DWORD [72+esi] - mov edx,DWORD [76+esi] - mov DWORD [64+edi],eax - mov ebp,eax - mov DWORD [68+edi],ebx - or ebp,ebx - mov DWORD [72+edi],ecx - or ebp,ecx - mov DWORD [76+edi],edx - or ebp,edx - mov eax,DWORD [80+esi] - mov ebx,DWORD [84+esi] - mov ecx,DWORD [88+esi] - mov edx,DWORD [92+esi] - mov DWORD [80+edi],eax - or ebp,eax - mov DWORD [84+edi],ebx - or ebp,ebx - mov DWORD [88+edi],ecx - or ebp,ecx - mov DWORD [92+edi],edx - or ebp,edx - xor eax,eax - mov esi,DWORD [520+esp] - sub eax,ebp - or ebp,eax - sar ebp,31 - mov DWORD [480+esp],ebp - lea edi,[192+esp] - mov eax,DWORD [esi] - mov ebx,DWORD [4+esi] - mov ecx,DWORD [8+esi] - mov edx,DWORD [12+esi] - mov DWORD [edi],eax - mov ebp,eax - mov DWORD [4+edi],ebx - or ebp,ebx - mov DWORD [8+edi],ecx - or ebp,ecx - mov DWORD [12+edi],edx - or ebp,edx - mov eax,DWORD [16+esi] - mov ebx,DWORD [20+esi] - mov ecx,DWORD [24+esi] - mov edx,DWORD [28+esi] - mov DWORD [16+edi],eax - or ebp,eax - mov DWORD [20+edi],ebx - or ebp,ebx - mov DWORD [24+edi],ecx - or ebp,ecx - mov DWORD [28+edi],edx - or ebp,edx - mov eax,DWORD [32+esi] - mov ebx,DWORD [36+esi] - mov ecx,DWORD [40+esi] - mov edx,DWORD [44+esi] - mov DWORD [32+edi],eax - or ebp,eax - mov DWORD [36+edi],ebx - or ebp,ebx - mov DWORD [40+edi],ecx - or ebp,ecx - mov DWORD [44+edi],edx - or ebp,edx - mov eax,DWORD [48+esi] - mov ebx,DWORD [52+esi] - mov ecx,DWORD [56+esi] - mov edx,DWORD [60+esi] - mov DWORD [48+edi],eax - or ebp,eax - mov DWORD [52+edi],ebx - or ebp,ebx - mov DWORD [56+edi],ecx - or ebp,ecx - mov DWORD [60+edi],edx - or ebp,edx - xor ebx,ebx - mov eax,DWORD [488+esp] - sub ebx,ebp - lea esi,[160+esp] - or ebx,ebp - lea ebp,[160+esp] - sar ebx,31 - lea edi,[288+esp] - mov DWORD [484+esp],ebx - call __ecp_nistz256_mul_mont - mov eax,DWORD [488+esp] - lea esi,[192+esp] - mov ebp,edi - lea edi,[256+esp] - call __ecp_nistz256_mul_mont - mov eax,DWORD [488+esp] - lea esi,[160+esp] - lea ebp,[288+esp] - lea edi,[288+esp] - call __ecp_nistz256_mul_mont - lea esi,[256+esp] - lea ebp,[96+esp] - lea edi,[320+esp] - call __ecp_nistz256_sub - mov eax,DWORD [488+esp] - lea esi,[224+esp] - lea ebp,[288+esp] - lea edi,[288+esp] - call __ecp_nistz256_mul_mont - mov eax,DWORD [488+esp] - lea esi,[160+esp] - lea ebp,[320+esp] - lea edi,[64+esp] - call __ecp_nistz256_mul_mont - lea esi,[288+esp] - lea ebp,[128+esp] - lea edi,[352+esp] - call __ecp_nistz256_sub - mov eax,DWORD [488+esp] - lea esi,[320+esp] - lea ebp,[320+esp] - lea edi,[384+esp] - call __ecp_nistz256_mul_mont - mov eax,DWORD [488+esp] - lea esi,[352+esp] - lea ebp,[352+esp] - lea edi,[448+esp] - call __ecp_nistz256_mul_mont - mov eax,DWORD [488+esp] - lea esi,[96+esp] - lea ebp,[384+esp] - lea edi,[256+esp] - call __ecp_nistz256_mul_mont - mov eax,DWORD [488+esp] - lea esi,[320+esp] - lea ebp,[384+esp] - lea edi,[416+esp] - call __ecp_nistz256_mul_mont - lea esi,[256+esp] - lea ebp,[256+esp] - lea edi,[384+esp] - call __ecp_nistz256_add - lea esi,[448+esp] - lea ebp,[384+esp] - lea edi,[esp] - call __ecp_nistz256_sub - lea esi,[esp] - lea ebp,[416+esp] - lea edi,[esp] - call __ecp_nistz256_sub - lea esi,[256+esp] - lea ebp,[esp] - lea edi,[32+esp] - call __ecp_nistz256_sub - mov eax,DWORD [488+esp] - lea esi,[416+esp] - lea ebp,[128+esp] - lea edi,[288+esp] - call __ecp_nistz256_mul_mont - mov eax,DWORD [488+esp] - lea esi,[352+esp] - lea ebp,[32+esp] - lea edi,[32+esp] - call __ecp_nistz256_mul_mont - lea esi,[32+esp] - lea ebp,[288+esp] - lea edi,[32+esp] - call __ecp_nistz256_sub - mov ebp,DWORD [480+esp] - mov esi,DWORD [484+esp] - mov edi,DWORD [512+esp] - mov edx,ebp - not ebp - and edx,esi - and ebp,esi - not esi - mov eax,edx - and eax,DWORD [64+esp] - mov ebx,ebp - and ebx,1 - mov ecx,esi - and ecx,DWORD [160+esp] - or eax,ebx - or eax,ecx - mov DWORD [64+edi],eax - mov eax,edx - and eax,DWORD [68+esp] - mov ecx,esi - and ecx,DWORD [164+esp] - or eax,ecx - mov DWORD [68+edi],eax - mov eax,edx - and eax,DWORD [72+esp] - mov ecx,esi - and ecx,DWORD [168+esp] - or eax,ecx - mov DWORD [72+edi],eax - mov eax,edx - and eax,DWORD [76+esp] - mov ecx,esi - and ecx,DWORD [172+esp] - or eax,ebp - or eax,ecx - mov DWORD [76+edi],eax - mov eax,edx - and eax,DWORD [80+esp] - mov ecx,esi - and ecx,DWORD [176+esp] - or eax,ebp - or eax,ecx - mov DWORD [80+edi],eax - mov eax,edx - and eax,DWORD [84+esp] - mov ecx,esi - and ecx,DWORD [180+esp] - or eax,ebp - or eax,ecx - mov DWORD [84+edi],eax - mov eax,edx - and eax,DWORD [88+esp] - mov ebx,ebp - and ebx,-2 - mov ecx,esi - and ecx,DWORD [184+esp] - or eax,ebx - or eax,ecx - mov DWORD [88+edi],eax - mov eax,edx - and eax,DWORD [92+esp] - mov ecx,esi - and ecx,DWORD [188+esp] - or eax,ecx - mov DWORD [92+edi],eax - mov eax,edx - and eax,DWORD [esp] - mov ebx,ebp - and ebx,DWORD [192+esp] - mov ecx,esi - and ecx,DWORD [96+esp] - or eax,ebx - or eax,ecx - mov DWORD [edi],eax - mov eax,edx - and eax,DWORD [4+esp] - mov ebx,ebp - and ebx,DWORD [196+esp] - mov ecx,esi - and ecx,DWORD [100+esp] - or eax,ebx - or eax,ecx - mov DWORD [4+edi],eax - mov eax,edx - and eax,DWORD [8+esp] - mov ebx,ebp - and ebx,DWORD [200+esp] - mov ecx,esi - and ecx,DWORD [104+esp] - or eax,ebx - or eax,ecx - mov DWORD [8+edi],eax - mov eax,edx - and eax,DWORD [12+esp] - mov ebx,ebp - and ebx,DWORD [204+esp] - mov ecx,esi - and ecx,DWORD [108+esp] - or eax,ebx - or eax,ecx - mov DWORD [12+edi],eax - mov eax,edx - and eax,DWORD [16+esp] - mov ebx,ebp - and ebx,DWORD [208+esp] - mov ecx,esi - and ecx,DWORD [112+esp] - or eax,ebx - or eax,ecx - mov DWORD [16+edi],eax - mov eax,edx - and eax,DWORD [20+esp] - mov ebx,ebp - and ebx,DWORD [212+esp] - mov ecx,esi - and ecx,DWORD [116+esp] - or eax,ebx - or eax,ecx - mov DWORD [20+edi],eax - mov eax,edx - and eax,DWORD [24+esp] - mov ebx,ebp - and ebx,DWORD [216+esp] - mov ecx,esi - and ecx,DWORD [120+esp] - or eax,ebx - or eax,ecx - mov DWORD [24+edi],eax - mov eax,edx - and eax,DWORD [28+esp] - mov ebx,ebp - and ebx,DWORD [220+esp] - mov ecx,esi - and ecx,DWORD [124+esp] - or eax,ebx - or eax,ecx - mov DWORD [28+edi],eax - mov eax,edx - and eax,DWORD [32+esp] - mov ebx,ebp - and ebx,DWORD [224+esp] - mov ecx,esi - and ecx,DWORD [128+esp] - or eax,ebx - or eax,ecx - mov DWORD [32+edi],eax - mov eax,edx - and eax,DWORD [36+esp] - mov ebx,ebp - and ebx,DWORD [228+esp] - mov ecx,esi - and ecx,DWORD [132+esp] - or eax,ebx - or eax,ecx - mov DWORD [36+edi],eax - mov eax,edx - and eax,DWORD [40+esp] - mov ebx,ebp - and ebx,DWORD [232+esp] - mov ecx,esi - and ecx,DWORD [136+esp] - or eax,ebx - or eax,ecx - mov DWORD [40+edi],eax - mov eax,edx - and eax,DWORD [44+esp] - mov ebx,ebp - and ebx,DWORD [236+esp] - mov ecx,esi - and ecx,DWORD [140+esp] - or eax,ebx - or eax,ecx - mov DWORD [44+edi],eax - mov eax,edx - and eax,DWORD [48+esp] - mov ebx,ebp - and ebx,DWORD [240+esp] - mov ecx,esi - and ecx,DWORD [144+esp] - or eax,ebx - or eax,ecx - mov DWORD [48+edi],eax - mov eax,edx - and eax,DWORD [52+esp] - mov ebx,ebp - and ebx,DWORD [244+esp] - mov ecx,esi - and ecx,DWORD [148+esp] - or eax,ebx - or eax,ecx - mov DWORD [52+edi],eax - mov eax,edx - and eax,DWORD [56+esp] - mov ebx,ebp - and ebx,DWORD [248+esp] - mov ecx,esi - and ecx,DWORD [152+esp] - or eax,ebx - or eax,ecx - mov DWORD [56+edi],eax - mov eax,edx - and eax,DWORD [60+esp] - mov ebx,ebp - and ebx,DWORD [252+esp] - mov ecx,esi - and ecx,DWORD [156+esp] - or eax,ebx - or eax,ecx - mov DWORD [60+edi],eax - add esp,492 - pop edi - pop esi - pop ebx - pop ebp - ret -segment .bss -common _GFp_ia32cap_P 16 diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/ghash-x86_64-nasm.asm temporalio-1.3.0/vendor/ring/pregenerated/tmp/ghash-x86_64-nasm.asm --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/ghash-x86_64-nasm.asm 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/ghash-x86_64-nasm.asm 2023-10-30 19:40:00.000000000 +0000 @@ -1,23 +1,29 @@ ; This file is generated from a similarly-named Perl script in the BoringSSL ; source tree. Do not edit by hand. +%ifidn __OUTPUT_FORMAT__, win64 default rel %define XMMWORD %define YMMWORD %define ZMMWORD +%define _CET_ENDBR + +%include "ring_core_generated/prefix_symbols_nasm.inc" section .text code align=64 -EXTERN GFp_ia32cap_P -global GFp_gcm_init_clmul +EXTERN OPENSSL_ia32cap_P +global gcm_init_clmul ALIGN 16 -GFp_gcm_init_clmul: +gcm_init_clmul: +$L$SEH_begin_gcm_init_clmul_1: +_CET_ENDBR $L$_init_clmul: -$L$SEH_begin_GFp_gcm_init_clmul: - -DB 0x48,0x83,0xec,0x18 -DB 0x0f,0x29,0x34,0x24 + sub rsp,0x18 +$L$SEH_prolog_gcm_init_clmul_2: + movaps XMMWORD[rsp],xmm6 +$L$SEH_prolog_gcm_init_clmul_3: movdqu xmm2,XMMWORD[rdx] pshufd xmm2,xmm2,78 @@ -169,15 +175,16 @@ movdqu XMMWORD[80+rcx],xmm4 movaps xmm6,XMMWORD[rsp] lea rsp,[24+rsp] -$L$SEH_end_GFp_gcm_init_clmul: - DB 0F3h,0C3h ;repret + ret +$L$SEH_end_gcm_init_clmul_4: -global GFp_gcm_gmult_clmul +global gcm_gmult_clmul ALIGN 16 -GFp_gcm_gmult_clmul: +gcm_gmult_clmul: +_CET_ENDBR $L$_gmult_clmul: movdqu xmm0,XMMWORD[rcx] movdqa xmm5,XMMWORD[$L$bswap_mask] @@ -223,29 +230,40 @@ pxor xmm0,xmm1 DB 102,15,56,0,197 movdqu XMMWORD[rcx],xmm0 - DB 0F3h,0C3h ;repret + ret -global GFp_gcm_ghash_clmul +global gcm_ghash_clmul ALIGN 32 -GFp_gcm_ghash_clmul: +gcm_ghash_clmul: +$L$SEH_begin_gcm_ghash_clmul_1: +_CET_ENDBR $L$_ghash_clmul: lea rax,[((-136))+rsp] -$L$SEH_begin_GFp_gcm_ghash_clmul: - -DB 0x48,0x8d,0x60,0xe0 -DB 0x0f,0x29,0x70,0xe0 -DB 0x0f,0x29,0x78,0xf0 -DB 0x44,0x0f,0x29,0x00 -DB 0x44,0x0f,0x29,0x48,0x10 -DB 0x44,0x0f,0x29,0x50,0x20 -DB 0x44,0x0f,0x29,0x58,0x30 -DB 0x44,0x0f,0x29,0x60,0x40 -DB 0x44,0x0f,0x29,0x68,0x50 -DB 0x44,0x0f,0x29,0x70,0x60 -DB 0x44,0x0f,0x29,0x78,0x70 + lea rsp,[((-32))+rax] +$L$SEH_prolog_gcm_ghash_clmul_2: + movaps XMMWORD[(-32)+rax],xmm6 +$L$SEH_prolog_gcm_ghash_clmul_3: + movaps XMMWORD[(-16)+rax],xmm7 +$L$SEH_prolog_gcm_ghash_clmul_4: + movaps XMMWORD[rax],xmm8 +$L$SEH_prolog_gcm_ghash_clmul_5: + movaps XMMWORD[16+rax],xmm9 +$L$SEH_prolog_gcm_ghash_clmul_6: + movaps XMMWORD[32+rax],xmm10 +$L$SEH_prolog_gcm_ghash_clmul_7: + movaps XMMWORD[48+rax],xmm11 +$L$SEH_prolog_gcm_ghash_clmul_8: + movaps XMMWORD[64+rax],xmm12 +$L$SEH_prolog_gcm_ghash_clmul_9: + movaps XMMWORD[80+rax],xmm13 +$L$SEH_prolog_gcm_ghash_clmul_10: + movaps XMMWORD[96+rax],xmm14 +$L$SEH_prolog_gcm_ghash_clmul_11: + movaps XMMWORD[112+rax],xmm15 +$L$SEH_prolog_gcm_ghash_clmul_12: movdqa xmm10,XMMWORD[$L$bswap_mask] movdqu xmm0,XMMWORD[rcx] @@ -257,7 +275,7 @@ jz NEAR $L$odd_tail movdqu xmm6,XMMWORD[16+rdx] - lea rax,[GFp_ia32cap_P] + lea rax,[OPENSSL_ia32cap_P] mov eax,DWORD[4+rax] cmp r9,0x30 jb NEAR $L$skip4x @@ -634,19 +652,21 @@ movaps xmm14,XMMWORD[128+rsp] movaps xmm15,XMMWORD[144+rsp] lea rsp,[168+rsp] -$L$SEH_end_GFp_gcm_ghash_clmul: - DB 0F3h,0C3h ;repret + ret +$L$SEH_end_gcm_ghash_clmul_13: -global GFp_gcm_init_avx +global gcm_init_avx ALIGN 32 -GFp_gcm_init_avx: +gcm_init_avx: -$L$SEH_begin_GFp_gcm_init_avx: - -DB 0x48,0x83,0xec,0x18 -DB 0x0f,0x29,0x34,0x24 +_CET_ENDBR +$L$SEH_begin_gcm_init_avx_1: + sub rsp,0x18 +$L$SEH_prolog_gcm_init_avx_2: + movaps XMMWORD[rsp],xmm6 +$L$SEH_prolog_gcm_init_avx_3: vzeroupper vmovdqu xmm2,XMMWORD[rdx] @@ -750,29 +770,40 @@ vzeroupper movaps xmm6,XMMWORD[rsp] lea rsp,[24+rsp] -$L$SEH_end_GFp_gcm_init_avx: - DB 0F3h,0C3h ;repret + ret +$L$SEH_end_gcm_init_avx_4: -global GFp_gcm_ghash_avx +global gcm_ghash_avx ALIGN 32 -GFp_gcm_ghash_avx: +gcm_ghash_avx: +_CET_ENDBR +$L$SEH_begin_gcm_ghash_avx_1: lea rax,[((-136))+rsp] -$L$SEH_begin_GFp_gcm_ghash_avx: - -DB 0x48,0x8d,0x60,0xe0 -DB 0x0f,0x29,0x70,0xe0 -DB 0x0f,0x29,0x78,0xf0 -DB 0x44,0x0f,0x29,0x00 -DB 0x44,0x0f,0x29,0x48,0x10 -DB 0x44,0x0f,0x29,0x50,0x20 -DB 0x44,0x0f,0x29,0x58,0x30 -DB 0x44,0x0f,0x29,0x60,0x40 -DB 0x44,0x0f,0x29,0x68,0x50 -DB 0x44,0x0f,0x29,0x70,0x60 -DB 0x44,0x0f,0x29,0x78,0x70 + lea rsp,[((-32))+rax] +$L$SEH_prolog_gcm_ghash_avx_2: + movaps XMMWORD[(-32)+rax],xmm6 +$L$SEH_prolog_gcm_ghash_avx_3: + movaps XMMWORD[(-16)+rax],xmm7 +$L$SEH_prolog_gcm_ghash_avx_4: + movaps XMMWORD[rax],xmm8 +$L$SEH_prolog_gcm_ghash_avx_5: + movaps XMMWORD[16+rax],xmm9 +$L$SEH_prolog_gcm_ghash_avx_6: + movaps XMMWORD[32+rax],xmm10 +$L$SEH_prolog_gcm_ghash_avx_7: + movaps XMMWORD[48+rax],xmm11 +$L$SEH_prolog_gcm_ghash_avx_8: + movaps XMMWORD[64+rax],xmm12 +$L$SEH_prolog_gcm_ghash_avx_9: + movaps XMMWORD[80+rax],xmm13 +$L$SEH_prolog_gcm_ghash_avx_10: + movaps XMMWORD[96+rax],xmm14 +$L$SEH_prolog_gcm_ghash_avx_11: + movaps XMMWORD[112+rax],xmm15 +$L$SEH_prolog_gcm_ghash_avx_12: vzeroupper vmovdqu xmm10,XMMWORD[rcx] @@ -1154,56 +1185,148 @@ movaps xmm14,XMMWORD[128+rsp] movaps xmm15,XMMWORD[144+rsp] lea rsp,[168+rsp] -$L$SEH_end_GFp_gcm_ghash_avx: - DB 0F3h,0C3h ;repret + ret +$L$SEH_end_gcm_ghash_avx_13: +section .rdata rdata align=8 ALIGN 64 $L$bswap_mask: -DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 + DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 $L$0x1c2_polynomial: -DB 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2 + DB 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2 $L$7_mask: DD 7,0,7,0 ALIGN 64 -DB 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52 -DB 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32 -DB 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 -DB 114,103,62,0 + DB 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52 + DB 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32 + DB 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 + DB 114,103,62,0 ALIGN 64 +section .text + section .pdata rdata align=4 ALIGN 4 - DD $L$SEH_begin_GFp_gcm_init_clmul wrt ..imagebase - DD $L$SEH_end_GFp_gcm_init_clmul wrt ..imagebase - DD $L$SEH_info_GFp_gcm_init_clmul wrt ..imagebase - - DD $L$SEH_begin_GFp_gcm_ghash_clmul wrt ..imagebase - DD $L$SEH_end_GFp_gcm_ghash_clmul wrt ..imagebase - DD $L$SEH_info_GFp_gcm_ghash_clmul wrt ..imagebase - DD $L$SEH_begin_GFp_gcm_init_avx wrt ..imagebase - DD $L$SEH_end_GFp_gcm_init_avx wrt ..imagebase - DD $L$SEH_info_GFp_gcm_init_clmul wrt ..imagebase - - DD $L$SEH_begin_GFp_gcm_ghash_avx wrt ..imagebase - DD $L$SEH_end_GFp_gcm_ghash_avx wrt ..imagebase - DD $L$SEH_info_GFp_gcm_ghash_clmul wrt ..imagebase + DD $L$SEH_begin_gcm_init_clmul_1 wrt ..imagebase + DD $L$SEH_end_gcm_init_clmul_4 wrt ..imagebase + DD $L$SEH_info_gcm_init_clmul_0 wrt ..imagebase + + DD $L$SEH_begin_gcm_ghash_clmul_1 wrt ..imagebase + DD $L$SEH_end_gcm_ghash_clmul_13 wrt ..imagebase + DD $L$SEH_info_gcm_ghash_clmul_0 wrt ..imagebase + + DD $L$SEH_begin_gcm_init_avx_1 wrt ..imagebase + DD $L$SEH_end_gcm_init_avx_4 wrt ..imagebase + DD $L$SEH_info_gcm_init_avx_0 wrt ..imagebase + + DD $L$SEH_begin_gcm_ghash_avx_1 wrt ..imagebase + DD $L$SEH_end_gcm_ghash_avx_13 wrt ..imagebase + DD $L$SEH_info_gcm_ghash_avx_0 wrt ..imagebase + + section .xdata rdata align=8 -ALIGN 8 -$L$SEH_info_GFp_gcm_init_clmul: -DB 0x01,0x08,0x03,0x00 -DB 0x08,0x68,0x00,0x00 -DB 0x04,0x22,0x00,0x00 -$L$SEH_info_GFp_gcm_ghash_clmul: -DB 0x01,0x33,0x16,0x00 -DB 0x33,0xf8,0x09,0x00 -DB 0x2e,0xe8,0x08,0x00 -DB 0x29,0xd8,0x07,0x00 -DB 0x24,0xc8,0x06,0x00 -DB 0x1f,0xb8,0x05,0x00 -DB 0x1a,0xa8,0x04,0x00 -DB 0x15,0x98,0x03,0x00 -DB 0x10,0x88,0x02,0x00 -DB 0x0c,0x78,0x01,0x00 -DB 0x08,0x68,0x00,0x00 -DB 0x04,0x01,0x15,0x00 +ALIGN 4 +$L$SEH_info_gcm_init_clmul_0: + DB 1 + DB $L$SEH_prolog_gcm_init_clmul_3-$L$SEH_begin_gcm_init_clmul_1 + DB 3 + DB 0 + DB $L$SEH_prolog_gcm_init_clmul_3-$L$SEH_begin_gcm_init_clmul_1 + DB 104 + DW 0 + DB $L$SEH_prolog_gcm_init_clmul_2-$L$SEH_begin_gcm_init_clmul_1 + DB 34 + +$L$SEH_info_gcm_ghash_clmul_0: + DB 1 + DB $L$SEH_prolog_gcm_ghash_clmul_12-$L$SEH_begin_gcm_ghash_clmul_1 + DB 22 + DB 0 + DB $L$SEH_prolog_gcm_ghash_clmul_12-$L$SEH_begin_gcm_ghash_clmul_1 + DB 248 + DW 9 + DB $L$SEH_prolog_gcm_ghash_clmul_11-$L$SEH_begin_gcm_ghash_clmul_1 + DB 232 + DW 8 + DB $L$SEH_prolog_gcm_ghash_clmul_10-$L$SEH_begin_gcm_ghash_clmul_1 + DB 216 + DW 7 + DB $L$SEH_prolog_gcm_ghash_clmul_9-$L$SEH_begin_gcm_ghash_clmul_1 + DB 200 + DW 6 + DB $L$SEH_prolog_gcm_ghash_clmul_8-$L$SEH_begin_gcm_ghash_clmul_1 + DB 184 + DW 5 + DB $L$SEH_prolog_gcm_ghash_clmul_7-$L$SEH_begin_gcm_ghash_clmul_1 + DB 168 + DW 4 + DB $L$SEH_prolog_gcm_ghash_clmul_6-$L$SEH_begin_gcm_ghash_clmul_1 + DB 152 + DW 3 + DB $L$SEH_prolog_gcm_ghash_clmul_5-$L$SEH_begin_gcm_ghash_clmul_1 + DB 136 + DW 2 + DB $L$SEH_prolog_gcm_ghash_clmul_4-$L$SEH_begin_gcm_ghash_clmul_1 + DB 120 + DW 1 + DB $L$SEH_prolog_gcm_ghash_clmul_3-$L$SEH_begin_gcm_ghash_clmul_1 + DB 104 + DW 0 + DB $L$SEH_prolog_gcm_ghash_clmul_2-$L$SEH_begin_gcm_ghash_clmul_1 + DB 1 + DW 21 + +$L$SEH_info_gcm_init_avx_0: + DB 1 + DB $L$SEH_prolog_gcm_init_avx_3-$L$SEH_begin_gcm_init_avx_1 + DB 3 + DB 0 + DB $L$SEH_prolog_gcm_init_avx_3-$L$SEH_begin_gcm_init_avx_1 + DB 104 + DW 0 + DB $L$SEH_prolog_gcm_init_avx_2-$L$SEH_begin_gcm_init_avx_1 + DB 34 + +$L$SEH_info_gcm_ghash_avx_0: + DB 1 + DB $L$SEH_prolog_gcm_ghash_avx_12-$L$SEH_begin_gcm_ghash_avx_1 + DB 22 + DB 0 + DB $L$SEH_prolog_gcm_ghash_avx_12-$L$SEH_begin_gcm_ghash_avx_1 + DB 248 + DW 9 + DB $L$SEH_prolog_gcm_ghash_avx_11-$L$SEH_begin_gcm_ghash_avx_1 + DB 232 + DW 8 + DB $L$SEH_prolog_gcm_ghash_avx_10-$L$SEH_begin_gcm_ghash_avx_1 + DB 216 + DW 7 + DB $L$SEH_prolog_gcm_ghash_avx_9-$L$SEH_begin_gcm_ghash_avx_1 + DB 200 + DW 6 + DB $L$SEH_prolog_gcm_ghash_avx_8-$L$SEH_begin_gcm_ghash_avx_1 + DB 184 + DW 5 + DB $L$SEH_prolog_gcm_ghash_avx_7-$L$SEH_begin_gcm_ghash_avx_1 + DB 168 + DW 4 + DB $L$SEH_prolog_gcm_ghash_avx_6-$L$SEH_begin_gcm_ghash_avx_1 + DB 152 + DW 3 + DB $L$SEH_prolog_gcm_ghash_avx_5-$L$SEH_begin_gcm_ghash_avx_1 + DB 136 + DW 2 + DB $L$SEH_prolog_gcm_ghash_avx_4-$L$SEH_begin_gcm_ghash_avx_1 + DB 120 + DW 1 + DB $L$SEH_prolog_gcm_ghash_avx_3-$L$SEH_begin_gcm_ghash_avx_1 + DB 104 + DW 0 + DB $L$SEH_prolog_gcm_ghash_avx_2-$L$SEH_begin_gcm_ghash_avx_1 + DB 1 + DW 21 +%else +; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 +ret +%endif diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/ghash-x86-win32n.asm temporalio-1.3.0/vendor/ring/pregenerated/tmp/ghash-x86-win32n.asm --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/ghash-x86-win32n.asm 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/ghash-x86-win32n.asm 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,8 @@ ; This file is generated from a similarly-named Perl script in the BoringSSL ; source tree. Do not edit by hand. -%ifdef BORINGSSL_PREFIX -%include "boringssl_prefix_symbols_nasm.inc" -%endif +%include "ring_core_generated/prefix_symbols_nasm.inc" +%ifidn __OUTPUT_FORMAT__, win32 %ifidn __OUTPUT_FORMAT__,obj section code use32 class=code align=64 %elifidn __OUTPUT_FORMAT__,win32 @@ -12,10 +11,10 @@ %else section .text code %endif -global _GFp_gcm_init_clmul +global _gcm_init_clmul align 16 -_GFp_gcm_init_clmul: -L$_GFp_gcm_init_clmul_begin: +_gcm_init_clmul: +L$_gcm_init_clmul_begin: mov edx,DWORD [4+esp] mov eax,DWORD [8+esp] call L$000pic @@ -79,10 +78,10 @@ db 102,15,58,15,227,8 movdqu [32+edx],xmm4 ret -global _GFp_gcm_gmult_clmul +global _gcm_gmult_clmul align 16 -_GFp_gcm_gmult_clmul: -L$_GFp_gcm_gmult_clmul_begin: +_gcm_gmult_clmul: +L$_gcm_gmult_clmul_begin: mov eax,DWORD [4+esp] mov edx,DWORD [8+esp] call L$001pic @@ -130,10 +129,10 @@ db 102,15,56,0,197 movdqu [eax],xmm0 ret -global _GFp_gcm_ghash_clmul +global _gcm_ghash_clmul align 16 -_GFp_gcm_ghash_clmul: -L$_GFp_gcm_ghash_clmul_begin: +_gcm_ghash_clmul: +L$_gcm_ghash_clmul_begin: push ebp push ebx push esi @@ -319,41 +318,11 @@ L$bswap: db 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194 -align 64 -L$007rem_8bit: -dw 0,450,900,582,1800,1738,1164,1358 -dw 3600,4050,3476,3158,2328,2266,2716,2910 -dw 7200,7650,8100,7782,6952,6890,6316,6510 -dw 4656,5106,4532,4214,5432,5370,5820,6014 -dw 14400,14722,15300,14854,16200,16010,15564,15630 -dw 13904,14226,13780,13334,12632,12442,13020,13086 -dw 9312,9634,10212,9766,9064,8874,8428,8494 -dw 10864,11186,10740,10294,11640,11450,12028,12094 -dw 28800,28994,29444,29382,30600,30282,29708,30158 -dw 32400,32594,32020,31958,31128,30810,31260,31710 -dw 27808,28002,28452,28390,27560,27242,26668,27118 -dw 25264,25458,24884,24822,26040,25722,26172,26622 -dw 18624,18690,19268,19078,20424,19978,19532,19854 -dw 18128,18194,17748,17558,16856,16410,16988,17310 -dw 21728,21794,22372,22182,21480,21034,20588,20910 -dw 23280,23346,22900,22710,24056,23610,24188,24510 -dw 57600,57538,57988,58182,58888,59338,58764,58446 -dw 61200,61138,60564,60758,59416,59866,60316,59998 -dw 64800,64738,65188,65382,64040,64490,63916,63598 -dw 62256,62194,61620,61814,62520,62970,63420,63102 -dw 55616,55426,56004,56070,56904,57226,56780,56334 -dw 55120,54930,54484,54550,53336,53658,54236,53790 -dw 50528,50338,50916,50982,49768,50090,49644,49198 -dw 52080,51890,51444,51510,52344,52666,53244,52798 -dw 37248,36930,37380,37830,38536,38730,38156,38094 -dw 40848,40530,39956,40406,39064,39258,39708,39646 -dw 36256,35938,36388,36838,35496,35690,35116,35054 -dw 33712,33394,32820,33270,33976,34170,34620,34558 -dw 43456,43010,43588,43910,44744,44810,44364,44174 -dw 42960,42514,42068,42390,41176,41242,41820,41630 -dw 46560,46114,46692,47014,45800,45866,45420,45230 -dw 48112,47666,47220,47542,48376,48442,49020,48830 db 71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67 db 82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112 db 112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62 db 0 +%else +; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 +ret +%endif diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/p256-x86_64-asm-nasm.asm temporalio-1.3.0/vendor/ring/pregenerated/tmp/p256-x86_64-asm-nasm.asm --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/p256-x86_64-asm-nasm.asm 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/p256-x86_64-asm-nasm.asm 2023-10-30 19:40:00.000000000 +0000 @@ -1,15 +1,20 @@ ; This file is generated from a similarly-named Perl script in the BoringSSL ; source tree. Do not edit by hand. +%ifidn __OUTPUT_FORMAT__, win64 default rel %define XMMWORD %define YMMWORD %define ZMMWORD +%define _CET_ENDBR + +%include "ring_core_generated/prefix_symbols_nasm.inc" section .text code align=64 -EXTERN GFp_ia32cap_P +EXTERN OPENSSL_ia32cap_P +section .rdata rdata align=8 ALIGN 64 $L$poly: DQ 0xffffffffffffffff,0x00000000ffffffff,0x0000000000000000,0xffffffff00000001 @@ -28,79 +33,25 @@ DQ 0xf3b9cac2fc632551,0xbce6faada7179e84,0xffffffffffffffff,0xffffffff00000000 $L$ordK: DQ 0xccd1c8aaee00bc4f +section .text -global GFp_nistz256_add - -ALIGN 32 -GFp_nistz256_add: - mov QWORD[8+rsp],rdi ;WIN64 prologue - mov QWORD[16+rsp],rsi - mov rax,rsp -$L$SEH_begin_GFp_nistz256_add: - mov rdi,rcx - mov rsi,rdx - mov rdx,r8 - - - push r12 - push r13 - - mov r8,QWORD[rsi] - xor r13,r13 - mov r9,QWORD[8+rsi] - mov r10,QWORD[16+rsi] - mov r11,QWORD[24+rsi] - lea rsi,[$L$poly] - - add r8,QWORD[rdx] - adc r9,QWORD[8+rdx] - mov rax,r8 - adc r10,QWORD[16+rdx] - adc r11,QWORD[24+rdx] - mov rdx,r9 - adc r13,0 - - sub r8,QWORD[rsi] - mov rcx,r10 - sbb r9,QWORD[8+rsi] - sbb r10,QWORD[16+rsi] - mov r12,r11 - sbb r11,QWORD[24+rsi] - sbb r13,0 - - cmovc r8,rax - cmovc r9,rdx - mov QWORD[rdi],r8 - cmovc r10,rcx - mov QWORD[8+rdi],r9 - cmovc r11,r12 - mov QWORD[16+rdi],r10 - mov QWORD[24+rdi],r11 - - pop r13 - pop r12 - mov rdi,QWORD[8+rsp] ;WIN64 epilogue - mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret -$L$SEH_end_GFp_nistz256_add: - - -global GFp_nistz256_neg +global ecp_nistz256_neg ALIGN 32 -GFp_nistz256_neg: +ecp_nistz256_neg: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_nistz256_neg: +$L$SEH_begin_ecp_nistz256_neg: mov rdi,rcx mov rsi,rdx +_CET_ENDBR push r12 push r13 @@ -148,30 +99,31 @@ $L$neg_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_nistz256_neg: +$L$SEH_end_ecp_nistz256_neg: -global GFp_p256_scalar_mul_mont +global ecp_nistz256_ord_mul_mont ALIGN 32 -GFp_p256_scalar_mul_mont: +ecp_nistz256_ord_mul_mont: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_p256_scalar_mul_mont: +$L$SEH_begin_ecp_nistz256_ord_mul_mont: mov rdi,rcx mov rsi,rdx mov rdx,r8 - lea rcx,[GFp_ia32cap_P] +_CET_ENDBR + lea rcx,[OPENSSL_ia32cap_P] mov rcx,QWORD[8+rcx] and ecx,0x80100 cmp ecx,0x80100 @@ -485,9 +437,9 @@ $L$ord_mul_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_p256_scalar_mul_mont: +$L$SEH_end_ecp_nistz256_ord_mul_mont: @@ -495,21 +447,22 @@ -global GFp_p256_scalar_sqr_rep_mont +global ecp_nistz256_ord_sqr_mont ALIGN 32 -GFp_p256_scalar_sqr_rep_mont: +ecp_nistz256_ord_sqr_mont: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_p256_scalar_sqr_rep_mont: +$L$SEH_begin_ecp_nistz256_ord_sqr_mont: mov rdi,rcx mov rsi,rdx mov rdx,r8 - lea rcx,[GFp_ia32cap_P] +_CET_ENDBR + lea rcx,[OPENSSL_ia32cap_P] mov rcx,QWORD[8+rcx] and ecx,0x80100 cmp ecx,0x80100 @@ -793,9 +746,9 @@ $L$ord_sqr_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_p256_scalar_sqr_rep_mont: +$L$SEH_end_ecp_nistz256_ord_sqr_mont: ALIGN 32 @@ -1040,7 +993,7 @@ $L$ord_mulx_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret $L$SEH_end_ecp_nistz256_ord_mul_montx: @@ -1125,7 +1078,7 @@ adox r10,rcx adcx r14,r14 mulx rbp,rcx,rdx -DB 0x67 + DB 0x67 DB 102,72,15,126,218 adox r11,rax adcx r15,r15 @@ -1259,7 +1212,7 @@ $L$ord_sqrx_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret $L$SEH_end_ecp_nistz256_ord_sqr_montx: @@ -1268,21 +1221,22 @@ -global GFp_nistz256_mul_mont +global ecp_nistz256_mul_mont ALIGN 32 -GFp_nistz256_mul_mont: +ecp_nistz256_mul_mont: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_nistz256_mul_mont: +$L$SEH_begin_ecp_nistz256_mul_mont: mov rdi,rcx mov rsi,rdx mov rdx,r8 - lea rcx,[GFp_ia32cap_P] +_CET_ENDBR + lea rcx,[OPENSSL_ia32cap_P] mov rcx,QWORD[8+rcx] and ecx,0x80100 $L$mul_mont: @@ -1340,9 +1294,9 @@ $L$mul_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_nistz256_mul_mont: +$L$SEH_end_ecp_nistz256_mul_mont: ALIGN 32 @@ -1558,7 +1512,7 @@ mov QWORD[16+rdi],r8 mov QWORD[24+rdi],r9 - DB 0F3h,0C3h ;repret + ret @@ -1569,20 +1523,21 @@ -global GFp_nistz256_sqr_mont +global ecp_nistz256_sqr_mont ALIGN 32 -GFp_nistz256_sqr_mont: +ecp_nistz256_sqr_mont: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_nistz256_sqr_mont: +$L$SEH_begin_ecp_nistz256_sqr_mont: mov rdi,rcx mov rsi,rdx - lea rcx,[GFp_ia32cap_P] +_CET_ENDBR + lea rcx,[OPENSSL_ia32cap_P] mov rcx,QWORD[8+rcx] and ecx,0x80100 push rbp @@ -1635,9 +1590,9 @@ $L$sqr_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_nistz256_sqr_mont: +$L$SEH_end_ecp_nistz256_sqr_mont: ALIGN 32 @@ -1799,7 +1754,7 @@ mov QWORD[16+rdi],r14 mov QWORD[24+rdi],r15 - DB 0F3h,0C3h ;repret + ret @@ -1967,7 +1922,7 @@ mov QWORD[16+rdi],r8 mov QWORD[24+rdi],r9 - DB 0F3h,0C3h ;repret + ret @@ -2015,7 +1970,7 @@ adcx r13,r13 adox r10,rcx adcx r14,r14 -DB 0x67 + DB 0x67 mulx rbp,rcx,rdx mov rdx,QWORD[((24+128))+rsi] adox r11,rax @@ -2023,7 +1978,7 @@ adox r12,rcx mov rsi,32 adox r13,rbp -DB 0x67,0x67 + DB 0x67,0x67 mulx rax,rcx,rdx mov rdx,QWORD[(($L$poly+24))] adox r14,rcx @@ -2097,33 +2052,34 @@ mov QWORD[16+rdi],r14 mov QWORD[24+rdi],r15 - DB 0F3h,0C3h ;repret + ret -global GFp_nistz256_select_w5 +global ecp_nistz256_select_w5 ALIGN 32 -GFp_nistz256_select_w5: +ecp_nistz256_select_w5: - lea rax,[GFp_ia32cap_P] +_CET_ENDBR + lea rax,[OPENSSL_ia32cap_P] mov rax,QWORD[8+rax] test eax,32 jnz NEAR $L$avx2_select_w5 lea rax,[((-136))+rsp] -$L$SEH_begin_GFp_nistz256_select_w5: -DB 0x48,0x8d,0x60,0xe0 -DB 0x0f,0x29,0x70,0xe0 -DB 0x0f,0x29,0x78,0xf0 -DB 0x44,0x0f,0x29,0x00 -DB 0x44,0x0f,0x29,0x48,0x10 -DB 0x44,0x0f,0x29,0x50,0x20 -DB 0x44,0x0f,0x29,0x58,0x30 -DB 0x44,0x0f,0x29,0x60,0x40 -DB 0x44,0x0f,0x29,0x68,0x50 -DB 0x44,0x0f,0x29,0x70,0x60 -DB 0x44,0x0f,0x29,0x78,0x70 +$L$SEH_begin_ecp_nistz256_select_w5: + DB 0x48,0x8d,0x60,0xe0 + DB 0x0f,0x29,0x70,0xe0 + DB 0x0f,0x29,0x78,0xf0 + DB 0x44,0x0f,0x29,0x00 + DB 0x44,0x0f,0x29,0x48,0x10 + DB 0x44,0x0f,0x29,0x50,0x20 + DB 0x44,0x0f,0x29,0x58,0x30 + DB 0x44,0x0f,0x29,0x60,0x40 + DB 0x44,0x0f,0x29,0x68,0x50 + DB 0x44,0x0f,0x29,0x70,0x60 + DB 0x44,0x0f,0x29,0x78,0x70 movdqa xmm0,XMMWORD[$L$One] movd xmm1,r8d @@ -2185,35 +2141,36 @@ movaps xmm14,XMMWORD[128+rsp] movaps xmm15,XMMWORD[144+rsp] lea rsp,[168+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_nistz256_select_w5: +$L$SEH_end_ecp_nistz256_select_w5: -global GFp_nistz256_select_w7 +global ecp_nistz256_select_w7 ALIGN 32 -GFp_nistz256_select_w7: +ecp_nistz256_select_w7: - lea rax,[GFp_ia32cap_P] +_CET_ENDBR + lea rax,[OPENSSL_ia32cap_P] mov rax,QWORD[8+rax] test eax,32 jnz NEAR $L$avx2_select_w7 lea rax,[((-136))+rsp] -$L$SEH_begin_GFp_nistz256_select_w7: -DB 0x48,0x8d,0x60,0xe0 -DB 0x0f,0x29,0x70,0xe0 -DB 0x0f,0x29,0x78,0xf0 -DB 0x44,0x0f,0x29,0x00 -DB 0x44,0x0f,0x29,0x48,0x10 -DB 0x44,0x0f,0x29,0x50,0x20 -DB 0x44,0x0f,0x29,0x58,0x30 -DB 0x44,0x0f,0x29,0x60,0x40 -DB 0x44,0x0f,0x29,0x68,0x50 -DB 0x44,0x0f,0x29,0x70,0x60 -DB 0x44,0x0f,0x29,0x78,0x70 +$L$SEH_begin_ecp_nistz256_select_w7: + DB 0x48,0x8d,0x60,0xe0 + DB 0x0f,0x29,0x70,0xe0 + DB 0x0f,0x29,0x78,0xf0 + DB 0x44,0x0f,0x29,0x00 + DB 0x44,0x0f,0x29,0x48,0x10 + DB 0x44,0x0f,0x29,0x50,0x20 + DB 0x44,0x0f,0x29,0x58,0x30 + DB 0x44,0x0f,0x29,0x60,0x40 + DB 0x44,0x0f,0x29,0x68,0x50 + DB 0x44,0x0f,0x29,0x70,0x60 + DB 0x44,0x0f,0x29,0x78,0x70 movdqa xmm8,XMMWORD[$L$One] movd xmm1,r8d @@ -2264,32 +2221,32 @@ movaps xmm14,XMMWORD[128+rsp] movaps xmm15,XMMWORD[144+rsp] lea rsp,[168+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_nistz256_select_w7: +$L$SEH_end_ecp_nistz256_select_w7: ALIGN 32 -GFp_nistz256_avx2_select_w5: +ecp_nistz256_avx2_select_w5: $L$avx2_select_w5: vzeroupper lea rax,[((-136))+rsp] mov r11,rsp -$L$SEH_begin_GFp_nistz256_avx2_select_w5: -DB 0x48,0x8d,0x60,0xe0 -DB 0xc5,0xf8,0x29,0x70,0xe0 -DB 0xc5,0xf8,0x29,0x78,0xf0 -DB 0xc5,0x78,0x29,0x40,0x00 -DB 0xc5,0x78,0x29,0x48,0x10 -DB 0xc5,0x78,0x29,0x50,0x20 -DB 0xc5,0x78,0x29,0x58,0x30 -DB 0xc5,0x78,0x29,0x60,0x40 -DB 0xc5,0x78,0x29,0x68,0x50 -DB 0xc5,0x78,0x29,0x70,0x60 -DB 0xc5,0x78,0x29,0x78,0x70 +$L$SEH_begin_ecp_nistz256_avx2_select_w5: + DB 0x48,0x8d,0x60,0xe0 + DB 0xc5,0xf8,0x29,0x70,0xe0 + DB 0xc5,0xf8,0x29,0x78,0xf0 + DB 0xc5,0x78,0x29,0x40,0x00 + DB 0xc5,0x78,0x29,0x48,0x10 + DB 0xc5,0x78,0x29,0x50,0x20 + DB 0xc5,0x78,0x29,0x58,0x30 + DB 0xc5,0x78,0x29,0x60,0x40 + DB 0xc5,0x78,0x29,0x68,0x50 + DB 0xc5,0x78,0x29,0x70,0x60 + DB 0xc5,0x78,0x29,0x78,0x70 vmovdqa ymm0,YMMWORD[$L$Two] vpxor ymm2,ymm2,ymm2 @@ -2352,34 +2309,34 @@ movaps xmm14,XMMWORD[128+rsp] movaps xmm15,XMMWORD[144+rsp] lea rsp,[r11] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_nistz256_avx2_select_w5: +$L$SEH_end_ecp_nistz256_avx2_select_w5: -global GFp_nistz256_avx2_select_w7 ALIGN 32 -GFp_nistz256_avx2_select_w7: +ecp_nistz256_avx2_select_w7: $L$avx2_select_w7: +_CET_ENDBR vzeroupper mov r11,rsp lea rax,[((-136))+rsp] -$L$SEH_begin_GFp_nistz256_avx2_select_w7: -DB 0x48,0x8d,0x60,0xe0 -DB 0xc5,0xf8,0x29,0x70,0xe0 -DB 0xc5,0xf8,0x29,0x78,0xf0 -DB 0xc5,0x78,0x29,0x40,0x00 -DB 0xc5,0x78,0x29,0x48,0x10 -DB 0xc5,0x78,0x29,0x50,0x20 -DB 0xc5,0x78,0x29,0x58,0x30 -DB 0xc5,0x78,0x29,0x60,0x40 -DB 0xc5,0x78,0x29,0x68,0x50 -DB 0xc5,0x78,0x29,0x70,0x60 -DB 0xc5,0x78,0x29,0x78,0x70 +$L$SEH_begin_ecp_nistz256_avx2_select_w7: + DB 0x48,0x8d,0x60,0xe0 + DB 0xc5,0xf8,0x29,0x70,0xe0 + DB 0xc5,0xf8,0x29,0x78,0xf0 + DB 0xc5,0x78,0x29,0x40,0x00 + DB 0xc5,0x78,0x29,0x48,0x10 + DB 0xc5,0x78,0x29,0x50,0x20 + DB 0xc5,0x78,0x29,0x58,0x30 + DB 0xc5,0x78,0x29,0x60,0x40 + DB 0xc5,0x78,0x29,0x68,0x50 + DB 0xc5,0x78,0x29,0x70,0x60 + DB 0xc5,0x78,0x29,0x78,0x70 vmovdqa ymm0,YMMWORD[$L$Three] vpxor ymm2,ymm2,ymm2 @@ -2457,9 +2414,9 @@ movaps xmm14,XMMWORD[128+rsp] movaps xmm15,XMMWORD[144+rsp] lea rsp,[r11] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_nistz256_avx2_select_w7: +$L$SEH_end_ecp_nistz256_avx2_select_w7: ALIGN 32 @@ -2491,7 +2448,7 @@ mov QWORD[16+rdi],r8 mov QWORD[24+rdi],r9 - DB 0F3h,0C3h ;repret + ret @@ -2524,7 +2481,7 @@ mov QWORD[16+rdi],r8 mov QWORD[24+rdi],r9 - DB 0F3h,0C3h ;repret + ret @@ -2553,7 +2510,7 @@ cmovnz r8,rcx cmovnz r9,r10 - DB 0F3h,0C3h ;repret + ret @@ -2587,23 +2544,24 @@ mov QWORD[16+rdi],r8 mov QWORD[24+rdi],r9 - DB 0F3h,0C3h ;repret + ret -global GFp_nistz256_point_double +global ecp_nistz256_point_double ALIGN 32 -GFp_nistz256_point_double: +ecp_nistz256_point_double: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_nistz256_point_double: +$L$SEH_begin_ecp_nistz256_point_double: mov rdi,rcx mov rsi,rdx - lea rcx,[GFp_ia32cap_P] +_CET_ENDBR + lea rcx,[OPENSSL_ia32cap_P] mov rcx,QWORD[8+rcx] and ecx,0x80100 cmp ecx,0x80100 @@ -2824,24 +2782,25 @@ $L$point_doubleq_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_nistz256_point_double: -global GFp_nistz256_point_add +$L$SEH_end_ecp_nistz256_point_double: +global ecp_nistz256_point_add ALIGN 32 -GFp_nistz256_point_add: +ecp_nistz256_point_add: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_nistz256_point_add: +$L$SEH_begin_ecp_nistz256_point_add: mov rdi,rcx mov rsi,rdx mov rdx,r8 - lea rcx,[GFp_ia32cap_P] +_CET_ENDBR + lea rcx,[OPENSSL_ia32cap_P] mov rcx,QWORD[8+rcx] and ecx,0x80100 cmp ecx,0x80100 @@ -3009,7 +2968,7 @@ DB 102,73,15,126,208 DB 102,73,15,126,217 or r12,r8 -DB 0x3e + DB 0x3e jnz NEAR $L$add_proceedq @@ -3265,24 +3224,25 @@ $L$point_addq_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_nistz256_point_add: -global GFp_nistz256_point_add_affine +$L$SEH_end_ecp_nistz256_point_add: +global ecp_nistz256_point_add_affine ALIGN 32 -GFp_nistz256_point_add_affine: +ecp_nistz256_point_add_affine: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_nistz256_point_add_affine: +$L$SEH_begin_ecp_nistz256_point_add_affine: mov rdi,rcx mov rsi,rdx mov rdx,r8 - lea rcx,[GFp_ia32cap_P] +_CET_ENDBR + lea rcx,[OPENSSL_ia32cap_P] mov rcx,QWORD[8+rcx] and ecx,0x80100 cmp ecx,0x80100 @@ -3603,9 +3563,9 @@ $L$add_affineq_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_nistz256_point_add_affine: +$L$SEH_end_ecp_nistz256_point_add_affine: ALIGN 32 __ecp_nistz256_add_tox: @@ -3637,7 +3597,7 @@ mov QWORD[16+rdi],r8 mov QWORD[24+rdi],r9 - DB 0F3h,0C3h ;repret + ret @@ -3672,7 +3632,7 @@ mov QWORD[16+rdi],r8 mov QWORD[24+rdi],r9 - DB 0F3h,0C3h ;repret + ret @@ -3703,7 +3663,7 @@ cmovc r8,rcx cmovc r9,r10 - DB 0F3h,0C3h ;repret + ret @@ -3738,16 +3698,16 @@ mov QWORD[16+rdi],r8 mov QWORD[24+rdi],r9 - DB 0F3h,0C3h ;repret + ret ALIGN 32 -GFp_nistz256_point_doublex: +ecp_nistz256_point_doublex: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_nistz256_point_doublex: +$L$SEH_begin_ecp_nistz256_point_doublex: mov rdi,rcx mov rsi,rdx @@ -3970,16 +3930,16 @@ $L$point_doublex_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_nistz256_point_doublex: +$L$SEH_end_ecp_nistz256_point_doublex: ALIGN 32 -GFp_nistz256_point_addx: +ecp_nistz256_point_addx: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_nistz256_point_addx: +$L$SEH_begin_ecp_nistz256_point_addx: mov rdi,rcx mov rsi,rdx mov rdx,r8 @@ -4150,7 +4110,7 @@ DB 102,73,15,126,208 DB 102,73,15,126,217 or r12,r8 -DB 0x3e + DB 0x3e jnz NEAR $L$add_proceedx @@ -4406,16 +4366,16 @@ $L$point_addx_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_nistz256_point_addx: +$L$SEH_end_ecp_nistz256_point_addx: ALIGN 32 -GFp_nistz256_point_add_affinex: +ecp_nistz256_point_add_affinex: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_nistz256_point_add_affinex: +$L$SEH_begin_ecp_nistz256_point_add_affinex: mov rdi,rcx mov rsi,rdx mov rdx,r8 @@ -4739,9 +4699,9 @@ $L$add_affinex_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_nistz256_point_add_affinex: +$L$SEH_end_ecp_nistz256_point_add_affinex: EXTERN __imp_RtlVirtualUnwind @@ -4871,22 +4831,22 @@ pop rbx pop rdi pop rsi - DB 0F3h,0C3h ;repret + ret section .pdata rdata align=4 ALIGN 4 - DD $L$SEH_begin_GFp_nistz256_neg wrt ..imagebase - DD $L$SEH_end_GFp_nistz256_neg wrt ..imagebase - DD $L$SEH_info_GFp_nistz256_neg wrt ..imagebase - - DD $L$SEH_begin_GFp_p256_scalar_mul_mont wrt ..imagebase - DD $L$SEH_end_GFp_p256_scalar_mul_mont wrt ..imagebase - DD $L$SEH_info_GFp_p256_scalar_mul_mont wrt ..imagebase - - DD $L$SEH_begin_GFp_p256_scalar_sqr_rep_mont wrt ..imagebase - DD $L$SEH_end_GFp_p256_scalar_sqr_rep_mont wrt ..imagebase - DD $L$SEH_info_GFp_p256_scalar_sqr_rep_mont wrt ..imagebase + DD $L$SEH_begin_ecp_nistz256_neg wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_neg wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_neg wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_ord_mul_mont wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_ord_mul_mont wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_ord_mul_mont wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_ord_sqr_mont wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_ord_sqr_mont wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_ord_sqr_mont wrt ..imagebase DD $L$SEH_begin_ecp_nistz256_ord_mul_montx wrt ..imagebase DD $L$SEH_end_ecp_nistz256_ord_mul_montx wrt ..imagebase DD $L$SEH_info_ecp_nistz256_ord_mul_montx wrt ..imagebase @@ -4894,144 +4854,148 @@ DD $L$SEH_begin_ecp_nistz256_ord_sqr_montx wrt ..imagebase DD $L$SEH_end_ecp_nistz256_ord_sqr_montx wrt ..imagebase DD $L$SEH_info_ecp_nistz256_ord_sqr_montx wrt ..imagebase - DD $L$SEH_begin_GFp_nistz256_mul_mont wrt ..imagebase - DD $L$SEH_end_GFp_nistz256_mul_mont wrt ..imagebase - DD $L$SEH_info_GFp_nistz256_mul_mont wrt ..imagebase - - DD $L$SEH_begin_GFp_nistz256_sqr_mont wrt ..imagebase - DD $L$SEH_end_GFp_nistz256_sqr_mont wrt ..imagebase - DD $L$SEH_info_GFp_nistz256_sqr_mont wrt ..imagebase - - DD $L$SEH_begin_GFp_nistz256_select_w5 wrt ..imagebase - DD $L$SEH_end_GFp_nistz256_select_w5 wrt ..imagebase - DD $L$SEH_info_GFp_nistz256_select_wX wrt ..imagebase - - DD $L$SEH_begin_GFp_nistz256_select_w7 wrt ..imagebase - DD $L$SEH_end_GFp_nistz256_select_w7 wrt ..imagebase - DD $L$SEH_info_GFp_nistz256_select_wX wrt ..imagebase - DD $L$SEH_begin_GFp_nistz256_avx2_select_w5 wrt ..imagebase - DD $L$SEH_end_GFp_nistz256_avx2_select_w5 wrt ..imagebase - DD $L$SEH_info_GFp_nistz256_avx2_select_wX wrt ..imagebase - - DD $L$SEH_begin_GFp_nistz256_avx2_select_w7 wrt ..imagebase - DD $L$SEH_end_GFp_nistz256_avx2_select_w7 wrt ..imagebase - DD $L$SEH_info_GFp_nistz256_avx2_select_wX wrt ..imagebase - DD $L$SEH_begin_GFp_nistz256_point_double wrt ..imagebase - DD $L$SEH_end_GFp_nistz256_point_double wrt ..imagebase - DD $L$SEH_info_GFp_nistz256_point_double wrt ..imagebase - - DD $L$SEH_begin_GFp_nistz256_point_add wrt ..imagebase - DD $L$SEH_end_GFp_nistz256_point_add wrt ..imagebase - DD $L$SEH_info_GFp_nistz256_point_add wrt ..imagebase - - DD $L$SEH_begin_GFp_nistz256_point_add_affine wrt ..imagebase - DD $L$SEH_end_GFp_nistz256_point_add_affine wrt ..imagebase - DD $L$SEH_info_GFp_nistz256_point_add_affine wrt ..imagebase - DD $L$SEH_begin_GFp_nistz256_point_doublex wrt ..imagebase - DD $L$SEH_end_GFp_nistz256_point_doublex wrt ..imagebase - DD $L$SEH_info_GFp_nistz256_point_doublex wrt ..imagebase - - DD $L$SEH_begin_GFp_nistz256_point_addx wrt ..imagebase - DD $L$SEH_end_GFp_nistz256_point_addx wrt ..imagebase - DD $L$SEH_info_GFp_nistz256_point_addx wrt ..imagebase - - DD $L$SEH_begin_GFp_nistz256_point_add_affinex wrt ..imagebase - DD $L$SEH_end_GFp_nistz256_point_add_affinex wrt ..imagebase - DD $L$SEH_info_GFp_nistz256_point_add_affinex wrt ..imagebase + DD $L$SEH_begin_ecp_nistz256_mul_mont wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_mul_mont wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_mul_mont wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_sqr_mont wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_sqr_mont wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_sqr_mont wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_select_w5 wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_select_w5 wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_select_wX wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_select_w7 wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_select_w7 wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_select_wX wrt ..imagebase + DD $L$SEH_begin_ecp_nistz256_avx2_select_w5 wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_avx2_select_w5 wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_avx2_select_wX wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_avx2_select_w7 wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_avx2_select_w7 wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_avx2_select_wX wrt ..imagebase + DD $L$SEH_begin_ecp_nistz256_point_double wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_point_double wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_point_double wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_point_add wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_point_add wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_point_add wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_point_add_affine wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_point_add_affine wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_point_add_affine wrt ..imagebase + DD $L$SEH_begin_ecp_nistz256_point_doublex wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_point_doublex wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_point_doublex wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_point_addx wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_point_addx wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_point_addx wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_point_add_affinex wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_point_add_affinex wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_point_add_affinex wrt ..imagebase section .xdata rdata align=8 ALIGN 8 -$L$SEH_info_GFp_nistz256_neg: -DB 9,0,0,0 +$L$SEH_info_ecp_nistz256_neg: + DB 9,0,0,0 DD short_handler wrt ..imagebase DD $L$neg_body wrt ..imagebase,$L$neg_epilogue wrt ..imagebase -$L$SEH_info_GFp_p256_scalar_mul_mont: -DB 9,0,0,0 +$L$SEH_info_ecp_nistz256_ord_mul_mont: + DB 9,0,0,0 DD full_handler wrt ..imagebase DD $L$ord_mul_body wrt ..imagebase,$L$ord_mul_epilogue wrt ..imagebase DD 48,0 -$L$SEH_info_GFp_p256_scalar_sqr_rep_mont: -DB 9,0,0,0 +$L$SEH_info_ecp_nistz256_ord_sqr_mont: + DB 9,0,0,0 DD full_handler wrt ..imagebase DD $L$ord_sqr_body wrt ..imagebase,$L$ord_sqr_epilogue wrt ..imagebase DD 48,0 $L$SEH_info_ecp_nistz256_ord_mul_montx: -DB 9,0,0,0 + DB 9,0,0,0 DD full_handler wrt ..imagebase DD $L$ord_mulx_body wrt ..imagebase,$L$ord_mulx_epilogue wrt ..imagebase DD 48,0 $L$SEH_info_ecp_nistz256_ord_sqr_montx: -DB 9,0,0,0 + DB 9,0,0,0 DD full_handler wrt ..imagebase DD $L$ord_sqrx_body wrt ..imagebase,$L$ord_sqrx_epilogue wrt ..imagebase DD 48,0 -$L$SEH_info_GFp_nistz256_mul_mont: -DB 9,0,0,0 +$L$SEH_info_ecp_nistz256_mul_mont: + DB 9,0,0,0 DD full_handler wrt ..imagebase DD $L$mul_body wrt ..imagebase,$L$mul_epilogue wrt ..imagebase DD 48,0 -$L$SEH_info_GFp_nistz256_sqr_mont: -DB 9,0,0,0 +$L$SEH_info_ecp_nistz256_sqr_mont: + DB 9,0,0,0 DD full_handler wrt ..imagebase DD $L$sqr_body wrt ..imagebase,$L$sqr_epilogue wrt ..imagebase DD 48,0 -$L$SEH_info_GFp_nistz256_select_wX: -DB 0x01,0x33,0x16,0x00 -DB 0x33,0xf8,0x09,0x00 -DB 0x2e,0xe8,0x08,0x00 -DB 0x29,0xd8,0x07,0x00 -DB 0x24,0xc8,0x06,0x00 -DB 0x1f,0xb8,0x05,0x00 -DB 0x1a,0xa8,0x04,0x00 -DB 0x15,0x98,0x03,0x00 -DB 0x10,0x88,0x02,0x00 -DB 0x0c,0x78,0x01,0x00 -DB 0x08,0x68,0x00,0x00 -DB 0x04,0x01,0x15,0x00 +$L$SEH_info_ecp_nistz256_select_wX: + DB 0x01,0x33,0x16,0x00 + DB 0x33,0xf8,0x09,0x00 + DB 0x2e,0xe8,0x08,0x00 + DB 0x29,0xd8,0x07,0x00 + DB 0x24,0xc8,0x06,0x00 + DB 0x1f,0xb8,0x05,0x00 + DB 0x1a,0xa8,0x04,0x00 + DB 0x15,0x98,0x03,0x00 + DB 0x10,0x88,0x02,0x00 + DB 0x0c,0x78,0x01,0x00 + DB 0x08,0x68,0x00,0x00 + DB 0x04,0x01,0x15,0x00 ALIGN 8 -$L$SEH_info_GFp_nistz256_avx2_select_wX: -DB 0x01,0x36,0x17,0x0b -DB 0x36,0xf8,0x09,0x00 -DB 0x31,0xe8,0x08,0x00 -DB 0x2c,0xd8,0x07,0x00 -DB 0x27,0xc8,0x06,0x00 -DB 0x22,0xb8,0x05,0x00 -DB 0x1d,0xa8,0x04,0x00 -DB 0x18,0x98,0x03,0x00 -DB 0x13,0x88,0x02,0x00 -DB 0x0e,0x78,0x01,0x00 -DB 0x09,0x68,0x00,0x00 -DB 0x04,0x01,0x15,0x00 -DB 0x00,0xb3,0x00,0x00 +$L$SEH_info_ecp_nistz256_avx2_select_wX: + DB 0x01,0x36,0x17,0x0b + DB 0x36,0xf8,0x09,0x00 + DB 0x31,0xe8,0x08,0x00 + DB 0x2c,0xd8,0x07,0x00 + DB 0x27,0xc8,0x06,0x00 + DB 0x22,0xb8,0x05,0x00 + DB 0x1d,0xa8,0x04,0x00 + DB 0x18,0x98,0x03,0x00 + DB 0x13,0x88,0x02,0x00 + DB 0x0e,0x78,0x01,0x00 + DB 0x09,0x68,0x00,0x00 + DB 0x04,0x01,0x15,0x00 + DB 0x00,0xb3,0x00,0x00 ALIGN 8 -$L$SEH_info_GFp_nistz256_point_double: -DB 9,0,0,0 +$L$SEH_info_ecp_nistz256_point_double: + DB 9,0,0,0 DD full_handler wrt ..imagebase DD $L$point_doubleq_body wrt ..imagebase,$L$point_doubleq_epilogue wrt ..imagebase DD 32*5+56,0 -$L$SEH_info_GFp_nistz256_point_add: -DB 9,0,0,0 +$L$SEH_info_ecp_nistz256_point_add: + DB 9,0,0,0 DD full_handler wrt ..imagebase DD $L$point_addq_body wrt ..imagebase,$L$point_addq_epilogue wrt ..imagebase DD 32*18+56,0 -$L$SEH_info_GFp_nistz256_point_add_affine: -DB 9,0,0,0 +$L$SEH_info_ecp_nistz256_point_add_affine: + DB 9,0,0,0 DD full_handler wrt ..imagebase DD $L$add_affineq_body wrt ..imagebase,$L$add_affineq_epilogue wrt ..imagebase DD 32*15+56,0 ALIGN 8 -$L$SEH_info_GFp_nistz256_point_doublex: -DB 9,0,0,0 +$L$SEH_info_ecp_nistz256_point_doublex: + DB 9,0,0,0 DD full_handler wrt ..imagebase DD $L$point_doublex_body wrt ..imagebase,$L$point_doublex_epilogue wrt ..imagebase DD 32*5+56,0 -$L$SEH_info_GFp_nistz256_point_addx: -DB 9,0,0,0 +$L$SEH_info_ecp_nistz256_point_addx: + DB 9,0,0,0 DD full_handler wrt ..imagebase DD $L$point_addx_body wrt ..imagebase,$L$point_addx_epilogue wrt ..imagebase DD 32*18+56,0 -$L$SEH_info_GFp_nistz256_point_add_affinex: -DB 9,0,0,0 +$L$SEH_info_ecp_nistz256_point_add_affinex: + DB 9,0,0,0 DD full_handler wrt ..imagebase DD $L$add_affinex_body wrt ..imagebase,$L$add_affinex_epilogue wrt ..imagebase DD 32*15+56,0 +%else +; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 +ret +%endif diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/ring_core_generated/prefix_symbols_asm.h temporalio-1.3.0/vendor/ring/pregenerated/tmp/ring_core_generated/prefix_symbols_asm.h --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/ring_core_generated/prefix_symbols_asm.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/ring_core_generated/prefix_symbols_asm.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,234 @@ + +#ifndef ring_core_generated_PREFIX_SYMBOLS_ASM_H +#define ring_core_generated_PREFIX_SYMBOLS_ASM_H + +#if defined(__APPLE__) +#define _ecp_nistz256_point_double _p256_point_double +#define _ecp_nistz256_point_add _p256_point_add +#define _ecp_nistz256_point_add_affine _p256_point_add_affine +#define _ecp_nistz256_ord_mul_mont _p256_scalar_mul_mont +#define _ecp_nistz256_ord_sqr_mont _p256_scalar_sqr_rep_mont +#define _ecp_nistz256_mul_mont _p256_mul_mont +#define _ecp_nistz256_sqr_mont _p256_sqr_mont +#define _CRYPTO_memcmp _ring_core_0_17_3_CRYPTO_memcmp +#define _CRYPTO_poly1305_finish _ring_core_0_17_3_CRYPTO_poly1305_finish +#define _CRYPTO_poly1305_finish_neon _ring_core_0_17_3_CRYPTO_poly1305_finish_neon +#define _CRYPTO_poly1305_init _ring_core_0_17_3_CRYPTO_poly1305_init +#define _CRYPTO_poly1305_init_neon _ring_core_0_17_3_CRYPTO_poly1305_init_neon +#define _CRYPTO_poly1305_update _ring_core_0_17_3_CRYPTO_poly1305_update +#define _CRYPTO_poly1305_update_neon _ring_core_0_17_3_CRYPTO_poly1305_update_neon +#define _ChaCha20_ctr32 _ring_core_0_17_3_ChaCha20_ctr32 +#define _LIMBS_add_mod _ring_core_0_17_3_LIMBS_add_mod +#define _LIMBS_are_even _ring_core_0_17_3_LIMBS_are_even +#define _LIMBS_are_zero _ring_core_0_17_3_LIMBS_are_zero +#define _LIMBS_equal _ring_core_0_17_3_LIMBS_equal +#define _LIMBS_equal_limb _ring_core_0_17_3_LIMBS_equal_limb +#define _LIMBS_less_than _ring_core_0_17_3_LIMBS_less_than +#define _LIMBS_less_than_limb _ring_core_0_17_3_LIMBS_less_than_limb +#define _LIMBS_reduce_once _ring_core_0_17_3_LIMBS_reduce_once +#define _LIMBS_select_512_32 _ring_core_0_17_3_LIMBS_select_512_32 +#define _LIMBS_shl_mod _ring_core_0_17_3_LIMBS_shl_mod +#define _LIMBS_sub_mod _ring_core_0_17_3_LIMBS_sub_mod +#define _LIMBS_window5_split_window _ring_core_0_17_3_LIMBS_window5_split_window +#define _LIMBS_window5_unsplit_window _ring_core_0_17_3_LIMBS_window5_unsplit_window +#define _LIMB_shr _ring_core_0_17_3_LIMB_shr +#define _OPENSSL_armcap_P _ring_core_0_17_3_OPENSSL_armcap_P +#define _OPENSSL_cpuid_setup _ring_core_0_17_3_OPENSSL_cpuid_setup +#define _OPENSSL_ia32cap_P _ring_core_0_17_3_OPENSSL_ia32cap_P +#define _aes_hw_ctr32_encrypt_blocks _ring_core_0_17_3_aes_hw_ctr32_encrypt_blocks +#define _aes_hw_encrypt _ring_core_0_17_3_aes_hw_encrypt +#define _aes_hw_set_encrypt_key _ring_core_0_17_3_aes_hw_set_encrypt_key +#define _aes_nohw_ctr32_encrypt_blocks _ring_core_0_17_3_aes_nohw_ctr32_encrypt_blocks +#define _aes_nohw_encrypt _ring_core_0_17_3_aes_nohw_encrypt +#define _aes_nohw_set_encrypt_key _ring_core_0_17_3_aes_nohw_set_encrypt_key +#define _aesni_gcm_decrypt _ring_core_0_17_3_aesni_gcm_decrypt +#define _aesni_gcm_encrypt _ring_core_0_17_3_aesni_gcm_encrypt +#define _bn_from_montgomery_in_place _ring_core_0_17_3_bn_from_montgomery_in_place +#define _bn_gather5 _ring_core_0_17_3_bn_gather5 +#define _bn_mul_mont _ring_core_0_17_3_bn_mul_mont +#define _bn_mul_mont_gather5 _ring_core_0_17_3_bn_mul_mont_gather5 +#define _bn_neg_inv_mod_r_u64 _ring_core_0_17_3_bn_neg_inv_mod_r_u64 +#define _bn_power5 _ring_core_0_17_3_bn_power5 +#define _bn_scatter5 _ring_core_0_17_3_bn_scatter5 +#define _bn_sqr8x_internal _ring_core_0_17_3_bn_sqr8x_internal +#define _bn_sqrx8x_internal _ring_core_0_17_3_bn_sqrx8x_internal +#define _bsaes_ctr32_encrypt_blocks _ring_core_0_17_3_bsaes_ctr32_encrypt_blocks +#define _bssl_constant_time_test_conditional_memcpy _ring_core_0_17_3_bssl_constant_time_test_conditional_memcpy +#define _bssl_constant_time_test_conditional_memxor _ring_core_0_17_3_bssl_constant_time_test_conditional_memxor +#define _bssl_constant_time_test_main _ring_core_0_17_3_bssl_constant_time_test_main +#define _chacha20_poly1305_open _ring_core_0_17_3_chacha20_poly1305_open +#define _chacha20_poly1305_seal _ring_core_0_17_3_chacha20_poly1305_seal +#define _fiat_curve25519_adx_mul _ring_core_0_17_3_fiat_curve25519_adx_mul +#define _fiat_curve25519_adx_square _ring_core_0_17_3_fiat_curve25519_adx_square +#define _gcm_ghash_avx _ring_core_0_17_3_gcm_ghash_avx +#define _gcm_ghash_clmul _ring_core_0_17_3_gcm_ghash_clmul +#define _gcm_ghash_neon _ring_core_0_17_3_gcm_ghash_neon +#define _gcm_gmult_clmul _ring_core_0_17_3_gcm_gmult_clmul +#define _gcm_gmult_neon _ring_core_0_17_3_gcm_gmult_neon +#define _gcm_init_avx _ring_core_0_17_3_gcm_init_avx +#define _gcm_init_clmul _ring_core_0_17_3_gcm_init_clmul +#define _gcm_init_neon _ring_core_0_17_3_gcm_init_neon +#define _k25519Precomp _ring_core_0_17_3_k25519Precomp +#define _limbs_mul_add_limb _ring_core_0_17_3_limbs_mul_add_limb +#define _little_endian_bytes_from_scalar _ring_core_0_17_3_little_endian_bytes_from_scalar +#define _ecp_nistz256_neg _ring_core_0_17_3_ecp_nistz256_neg +#define _ecp_nistz256_select_w5 _ring_core_0_17_3_ecp_nistz256_select_w5 +#define _ecp_nistz256_select_w7 _ring_core_0_17_3_ecp_nistz256_select_w7 +#define _nistz384_point_add _ring_core_0_17_3_nistz384_point_add +#define _nistz384_point_double _ring_core_0_17_3_nistz384_point_double +#define _nistz384_point_mul _ring_core_0_17_3_nistz384_point_mul +#define _p256_mul_mont _ring_core_0_17_3_p256_mul_mont +#define _p256_point_add _ring_core_0_17_3_p256_point_add +#define _p256_point_add_affine _ring_core_0_17_3_p256_point_add_affine +#define _p256_point_double _ring_core_0_17_3_p256_point_double +#define _p256_point_mul _ring_core_0_17_3_p256_point_mul +#define _p256_point_mul_base _ring_core_0_17_3_p256_point_mul_base +#define _p256_scalar_mul_mont _ring_core_0_17_3_p256_scalar_mul_mont +#define _p256_scalar_sqr_rep_mont _ring_core_0_17_3_p256_scalar_sqr_rep_mont +#define _p256_sqr_mont _ring_core_0_17_3_p256_sqr_mont +#define _p384_elem_div_by_2 _ring_core_0_17_3_p384_elem_div_by_2 +#define _p384_elem_mul_mont _ring_core_0_17_3_p384_elem_mul_mont +#define _p384_elem_neg _ring_core_0_17_3_p384_elem_neg +#define _p384_elem_sub _ring_core_0_17_3_p384_elem_sub +#define _p384_scalar_mul_mont _ring_core_0_17_3_p384_scalar_mul_mont +#define _openssl_poly1305_neon2_addmulmod _ring_core_0_17_3_openssl_poly1305_neon2_addmulmod +#define _openssl_poly1305_neon2_blocks _ring_core_0_17_3_openssl_poly1305_neon2_blocks +#define _sha256_block_data_order _ring_core_0_17_3_sha256_block_data_order +#define _sha512_block_data_order _ring_core_0_17_3_sha512_block_data_order +#define _vpaes_ctr32_encrypt_blocks _ring_core_0_17_3_vpaes_ctr32_encrypt_blocks +#define _vpaes_encrypt _ring_core_0_17_3_vpaes_encrypt +#define _vpaes_encrypt_key_to_bsaes _ring_core_0_17_3_vpaes_encrypt_key_to_bsaes +#define _vpaes_set_encrypt_key _ring_core_0_17_3_vpaes_set_encrypt_key +#define _x25519_NEON _ring_core_0_17_3_x25519_NEON +#define _x25519_fe_invert _ring_core_0_17_3_x25519_fe_invert +#define _x25519_fe_isnegative _ring_core_0_17_3_x25519_fe_isnegative +#define _x25519_fe_mul_ttt _ring_core_0_17_3_x25519_fe_mul_ttt +#define _x25519_fe_neg _ring_core_0_17_3_x25519_fe_neg +#define _x25519_fe_tobytes _ring_core_0_17_3_x25519_fe_tobytes +#define _x25519_ge_double_scalarmult_vartime _ring_core_0_17_3_x25519_ge_double_scalarmult_vartime +#define _x25519_ge_frombytes_vartime _ring_core_0_17_3_x25519_ge_frombytes_vartime +#define _x25519_ge_scalarmult_base _ring_core_0_17_3_x25519_ge_scalarmult_base +#define _x25519_ge_scalarmult_base_adx _ring_core_0_17_3_x25519_ge_scalarmult_base_adx +#define _x25519_public_from_private_generic_masked _ring_core_0_17_3_x25519_public_from_private_generic_masked +#define _x25519_sc_mask _ring_core_0_17_3_x25519_sc_mask +#define _x25519_sc_muladd _ring_core_0_17_3_x25519_sc_muladd +#define _x25519_sc_reduce _ring_core_0_17_3_x25519_sc_reduce +#define _x25519_scalar_mult_adx _ring_core_0_17_3_x25519_scalar_mult_adx +#define _x25519_scalar_mult_generic_masked _ring_core_0_17_3_x25519_scalar_mult_generic_masked + +#else +#define ecp_nistz256_point_double p256_point_double +#define ecp_nistz256_point_add p256_point_add +#define ecp_nistz256_point_add_affine p256_point_add_affine +#define ecp_nistz256_ord_mul_mont p256_scalar_mul_mont +#define ecp_nistz256_ord_sqr_mont p256_scalar_sqr_rep_mont +#define ecp_nistz256_mul_mont p256_mul_mont +#define ecp_nistz256_sqr_mont p256_sqr_mont +#define CRYPTO_memcmp ring_core_0_17_3_CRYPTO_memcmp +#define CRYPTO_poly1305_finish ring_core_0_17_3_CRYPTO_poly1305_finish +#define CRYPTO_poly1305_finish_neon ring_core_0_17_3_CRYPTO_poly1305_finish_neon +#define CRYPTO_poly1305_init ring_core_0_17_3_CRYPTO_poly1305_init +#define CRYPTO_poly1305_init_neon ring_core_0_17_3_CRYPTO_poly1305_init_neon +#define CRYPTO_poly1305_update ring_core_0_17_3_CRYPTO_poly1305_update +#define CRYPTO_poly1305_update_neon ring_core_0_17_3_CRYPTO_poly1305_update_neon +#define ChaCha20_ctr32 ring_core_0_17_3_ChaCha20_ctr32 +#define LIMBS_add_mod ring_core_0_17_3_LIMBS_add_mod +#define LIMBS_are_even ring_core_0_17_3_LIMBS_are_even +#define LIMBS_are_zero ring_core_0_17_3_LIMBS_are_zero +#define LIMBS_equal ring_core_0_17_3_LIMBS_equal +#define LIMBS_equal_limb ring_core_0_17_3_LIMBS_equal_limb +#define LIMBS_less_than ring_core_0_17_3_LIMBS_less_than +#define LIMBS_less_than_limb ring_core_0_17_3_LIMBS_less_than_limb +#define LIMBS_reduce_once ring_core_0_17_3_LIMBS_reduce_once +#define LIMBS_select_512_32 ring_core_0_17_3_LIMBS_select_512_32 +#define LIMBS_shl_mod ring_core_0_17_3_LIMBS_shl_mod +#define LIMBS_sub_mod ring_core_0_17_3_LIMBS_sub_mod +#define LIMBS_window5_split_window ring_core_0_17_3_LIMBS_window5_split_window +#define LIMBS_window5_unsplit_window ring_core_0_17_3_LIMBS_window5_unsplit_window +#define LIMB_shr ring_core_0_17_3_LIMB_shr +#define OPENSSL_armcap_P ring_core_0_17_3_OPENSSL_armcap_P +#define OPENSSL_cpuid_setup ring_core_0_17_3_OPENSSL_cpuid_setup +#define OPENSSL_ia32cap_P ring_core_0_17_3_OPENSSL_ia32cap_P +#define aes_hw_ctr32_encrypt_blocks ring_core_0_17_3_aes_hw_ctr32_encrypt_blocks +#define aes_hw_encrypt ring_core_0_17_3_aes_hw_encrypt +#define aes_hw_set_encrypt_key ring_core_0_17_3_aes_hw_set_encrypt_key +#define aes_nohw_ctr32_encrypt_blocks ring_core_0_17_3_aes_nohw_ctr32_encrypt_blocks +#define aes_nohw_encrypt ring_core_0_17_3_aes_nohw_encrypt +#define aes_nohw_set_encrypt_key ring_core_0_17_3_aes_nohw_set_encrypt_key +#define aesni_gcm_decrypt ring_core_0_17_3_aesni_gcm_decrypt +#define aesni_gcm_encrypt ring_core_0_17_3_aesni_gcm_encrypt +#define bn_from_montgomery_in_place ring_core_0_17_3_bn_from_montgomery_in_place +#define bn_gather5 ring_core_0_17_3_bn_gather5 +#define bn_mul_mont ring_core_0_17_3_bn_mul_mont +#define bn_mul_mont_gather5 ring_core_0_17_3_bn_mul_mont_gather5 +#define bn_neg_inv_mod_r_u64 ring_core_0_17_3_bn_neg_inv_mod_r_u64 +#define bn_power5 ring_core_0_17_3_bn_power5 +#define bn_scatter5 ring_core_0_17_3_bn_scatter5 +#define bn_sqr8x_internal ring_core_0_17_3_bn_sqr8x_internal +#define bn_sqrx8x_internal ring_core_0_17_3_bn_sqrx8x_internal +#define bsaes_ctr32_encrypt_blocks ring_core_0_17_3_bsaes_ctr32_encrypt_blocks +#define bssl_constant_time_test_conditional_memcpy ring_core_0_17_3_bssl_constant_time_test_conditional_memcpy +#define bssl_constant_time_test_conditional_memxor ring_core_0_17_3_bssl_constant_time_test_conditional_memxor +#define bssl_constant_time_test_main ring_core_0_17_3_bssl_constant_time_test_main +#define chacha20_poly1305_open ring_core_0_17_3_chacha20_poly1305_open +#define chacha20_poly1305_seal ring_core_0_17_3_chacha20_poly1305_seal +#define fiat_curve25519_adx_mul ring_core_0_17_3_fiat_curve25519_adx_mul +#define fiat_curve25519_adx_square ring_core_0_17_3_fiat_curve25519_adx_square +#define gcm_ghash_avx ring_core_0_17_3_gcm_ghash_avx +#define gcm_ghash_clmul ring_core_0_17_3_gcm_ghash_clmul +#define gcm_ghash_neon ring_core_0_17_3_gcm_ghash_neon +#define gcm_gmult_clmul ring_core_0_17_3_gcm_gmult_clmul +#define gcm_gmult_neon ring_core_0_17_3_gcm_gmult_neon +#define gcm_init_avx ring_core_0_17_3_gcm_init_avx +#define gcm_init_clmul ring_core_0_17_3_gcm_init_clmul +#define gcm_init_neon ring_core_0_17_3_gcm_init_neon +#define k25519Precomp ring_core_0_17_3_k25519Precomp +#define limbs_mul_add_limb ring_core_0_17_3_limbs_mul_add_limb +#define little_endian_bytes_from_scalar ring_core_0_17_3_little_endian_bytes_from_scalar +#define ecp_nistz256_neg ring_core_0_17_3_ecp_nistz256_neg +#define ecp_nistz256_select_w5 ring_core_0_17_3_ecp_nistz256_select_w5 +#define ecp_nistz256_select_w7 ring_core_0_17_3_ecp_nistz256_select_w7 +#define nistz384_point_add ring_core_0_17_3_nistz384_point_add +#define nistz384_point_double ring_core_0_17_3_nistz384_point_double +#define nistz384_point_mul ring_core_0_17_3_nistz384_point_mul +#define p256_mul_mont ring_core_0_17_3_p256_mul_mont +#define p256_point_add ring_core_0_17_3_p256_point_add +#define p256_point_add_affine ring_core_0_17_3_p256_point_add_affine +#define p256_point_double ring_core_0_17_3_p256_point_double +#define p256_point_mul ring_core_0_17_3_p256_point_mul +#define p256_point_mul_base ring_core_0_17_3_p256_point_mul_base +#define p256_scalar_mul_mont ring_core_0_17_3_p256_scalar_mul_mont +#define p256_scalar_sqr_rep_mont ring_core_0_17_3_p256_scalar_sqr_rep_mont +#define p256_sqr_mont ring_core_0_17_3_p256_sqr_mont +#define p384_elem_div_by_2 ring_core_0_17_3_p384_elem_div_by_2 +#define p384_elem_mul_mont ring_core_0_17_3_p384_elem_mul_mont +#define p384_elem_neg ring_core_0_17_3_p384_elem_neg +#define p384_elem_sub ring_core_0_17_3_p384_elem_sub +#define p384_scalar_mul_mont ring_core_0_17_3_p384_scalar_mul_mont +#define openssl_poly1305_neon2_addmulmod ring_core_0_17_3_openssl_poly1305_neon2_addmulmod +#define openssl_poly1305_neon2_blocks ring_core_0_17_3_openssl_poly1305_neon2_blocks +#define sha256_block_data_order ring_core_0_17_3_sha256_block_data_order +#define sha512_block_data_order ring_core_0_17_3_sha512_block_data_order +#define vpaes_ctr32_encrypt_blocks ring_core_0_17_3_vpaes_ctr32_encrypt_blocks +#define vpaes_encrypt ring_core_0_17_3_vpaes_encrypt +#define vpaes_encrypt_key_to_bsaes ring_core_0_17_3_vpaes_encrypt_key_to_bsaes +#define vpaes_set_encrypt_key ring_core_0_17_3_vpaes_set_encrypt_key +#define x25519_NEON ring_core_0_17_3_x25519_NEON +#define x25519_fe_invert ring_core_0_17_3_x25519_fe_invert +#define x25519_fe_isnegative ring_core_0_17_3_x25519_fe_isnegative +#define x25519_fe_mul_ttt ring_core_0_17_3_x25519_fe_mul_ttt +#define x25519_fe_neg ring_core_0_17_3_x25519_fe_neg +#define x25519_fe_tobytes ring_core_0_17_3_x25519_fe_tobytes +#define x25519_ge_double_scalarmult_vartime ring_core_0_17_3_x25519_ge_double_scalarmult_vartime +#define x25519_ge_frombytes_vartime ring_core_0_17_3_x25519_ge_frombytes_vartime +#define x25519_ge_scalarmult_base ring_core_0_17_3_x25519_ge_scalarmult_base +#define x25519_ge_scalarmult_base_adx ring_core_0_17_3_x25519_ge_scalarmult_base_adx +#define x25519_public_from_private_generic_masked ring_core_0_17_3_x25519_public_from_private_generic_masked +#define x25519_sc_mask ring_core_0_17_3_x25519_sc_mask +#define x25519_sc_muladd ring_core_0_17_3_x25519_sc_muladd +#define x25519_sc_reduce ring_core_0_17_3_x25519_sc_reduce +#define x25519_scalar_mult_adx ring_core_0_17_3_x25519_scalar_mult_adx +#define x25519_scalar_mult_generic_masked ring_core_0_17_3_x25519_scalar_mult_generic_masked + +#endif +#endif diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/ring_core_generated/prefix_symbols_nasm.inc temporalio-1.3.0/vendor/ring/pregenerated/tmp/ring_core_generated/prefix_symbols_nasm.inc --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/ring_core_generated/prefix_symbols_nasm.inc 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/ring_core_generated/prefix_symbols_nasm.inc 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,234 @@ + +%ifndef ring_core_generated_PREFIX_SYMBOLS_NASM_INC +%define ring_core_generated_PREFIX_SYMBOLS_NASM_INC + +%ifidn __OUTPUT_FORMAT__,win32 +%define _ecp_nistz256_point_double _p256_point_double +%define _ecp_nistz256_point_add _p256_point_add +%define _ecp_nistz256_point_add_affine _p256_point_add_affine +%define _ecp_nistz256_ord_mul_mont _p256_scalar_mul_mont +%define _ecp_nistz256_ord_sqr_mont _p256_scalar_sqr_rep_mont +%define _ecp_nistz256_mul_mont _p256_mul_mont +%define _ecp_nistz256_sqr_mont _p256_sqr_mont +%define _CRYPTO_memcmp _ring_core_0_17_3_CRYPTO_memcmp +%define _CRYPTO_poly1305_finish _ring_core_0_17_3_CRYPTO_poly1305_finish +%define _CRYPTO_poly1305_finish_neon _ring_core_0_17_3_CRYPTO_poly1305_finish_neon +%define _CRYPTO_poly1305_init _ring_core_0_17_3_CRYPTO_poly1305_init +%define _CRYPTO_poly1305_init_neon _ring_core_0_17_3_CRYPTO_poly1305_init_neon +%define _CRYPTO_poly1305_update _ring_core_0_17_3_CRYPTO_poly1305_update +%define _CRYPTO_poly1305_update_neon _ring_core_0_17_3_CRYPTO_poly1305_update_neon +%define _ChaCha20_ctr32 _ring_core_0_17_3_ChaCha20_ctr32 +%define _LIMBS_add_mod _ring_core_0_17_3_LIMBS_add_mod +%define _LIMBS_are_even _ring_core_0_17_3_LIMBS_are_even +%define _LIMBS_are_zero _ring_core_0_17_3_LIMBS_are_zero +%define _LIMBS_equal _ring_core_0_17_3_LIMBS_equal +%define _LIMBS_equal_limb _ring_core_0_17_3_LIMBS_equal_limb +%define _LIMBS_less_than _ring_core_0_17_3_LIMBS_less_than +%define _LIMBS_less_than_limb _ring_core_0_17_3_LIMBS_less_than_limb +%define _LIMBS_reduce_once _ring_core_0_17_3_LIMBS_reduce_once +%define _LIMBS_select_512_32 _ring_core_0_17_3_LIMBS_select_512_32 +%define _LIMBS_shl_mod _ring_core_0_17_3_LIMBS_shl_mod +%define _LIMBS_sub_mod _ring_core_0_17_3_LIMBS_sub_mod +%define _LIMBS_window5_split_window _ring_core_0_17_3_LIMBS_window5_split_window +%define _LIMBS_window5_unsplit_window _ring_core_0_17_3_LIMBS_window5_unsplit_window +%define _LIMB_shr _ring_core_0_17_3_LIMB_shr +%define _OPENSSL_armcap_P _ring_core_0_17_3_OPENSSL_armcap_P +%define _OPENSSL_cpuid_setup _ring_core_0_17_3_OPENSSL_cpuid_setup +%define _OPENSSL_ia32cap_P _ring_core_0_17_3_OPENSSL_ia32cap_P +%define _aes_hw_ctr32_encrypt_blocks _ring_core_0_17_3_aes_hw_ctr32_encrypt_blocks +%define _aes_hw_encrypt _ring_core_0_17_3_aes_hw_encrypt +%define _aes_hw_set_encrypt_key _ring_core_0_17_3_aes_hw_set_encrypt_key +%define _aes_nohw_ctr32_encrypt_blocks _ring_core_0_17_3_aes_nohw_ctr32_encrypt_blocks +%define _aes_nohw_encrypt _ring_core_0_17_3_aes_nohw_encrypt +%define _aes_nohw_set_encrypt_key _ring_core_0_17_3_aes_nohw_set_encrypt_key +%define _aesni_gcm_decrypt _ring_core_0_17_3_aesni_gcm_decrypt +%define _aesni_gcm_encrypt _ring_core_0_17_3_aesni_gcm_encrypt +%define _bn_from_montgomery_in_place _ring_core_0_17_3_bn_from_montgomery_in_place +%define _bn_gather5 _ring_core_0_17_3_bn_gather5 +%define _bn_mul_mont _ring_core_0_17_3_bn_mul_mont +%define _bn_mul_mont_gather5 _ring_core_0_17_3_bn_mul_mont_gather5 +%define _bn_neg_inv_mod_r_u64 _ring_core_0_17_3_bn_neg_inv_mod_r_u64 +%define _bn_power5 _ring_core_0_17_3_bn_power5 +%define _bn_scatter5 _ring_core_0_17_3_bn_scatter5 +%define _bn_sqr8x_internal _ring_core_0_17_3_bn_sqr8x_internal +%define _bn_sqrx8x_internal _ring_core_0_17_3_bn_sqrx8x_internal +%define _bsaes_ctr32_encrypt_blocks _ring_core_0_17_3_bsaes_ctr32_encrypt_blocks +%define _bssl_constant_time_test_conditional_memcpy _ring_core_0_17_3_bssl_constant_time_test_conditional_memcpy +%define _bssl_constant_time_test_conditional_memxor _ring_core_0_17_3_bssl_constant_time_test_conditional_memxor +%define _bssl_constant_time_test_main _ring_core_0_17_3_bssl_constant_time_test_main +%define _chacha20_poly1305_open _ring_core_0_17_3_chacha20_poly1305_open +%define _chacha20_poly1305_seal _ring_core_0_17_3_chacha20_poly1305_seal +%define _fiat_curve25519_adx_mul _ring_core_0_17_3_fiat_curve25519_adx_mul +%define _fiat_curve25519_adx_square _ring_core_0_17_3_fiat_curve25519_adx_square +%define _gcm_ghash_avx _ring_core_0_17_3_gcm_ghash_avx +%define _gcm_ghash_clmul _ring_core_0_17_3_gcm_ghash_clmul +%define _gcm_ghash_neon _ring_core_0_17_3_gcm_ghash_neon +%define _gcm_gmult_clmul _ring_core_0_17_3_gcm_gmult_clmul +%define _gcm_gmult_neon _ring_core_0_17_3_gcm_gmult_neon +%define _gcm_init_avx _ring_core_0_17_3_gcm_init_avx +%define _gcm_init_clmul _ring_core_0_17_3_gcm_init_clmul +%define _gcm_init_neon _ring_core_0_17_3_gcm_init_neon +%define _k25519Precomp _ring_core_0_17_3_k25519Precomp +%define _limbs_mul_add_limb _ring_core_0_17_3_limbs_mul_add_limb +%define _little_endian_bytes_from_scalar _ring_core_0_17_3_little_endian_bytes_from_scalar +%define _ecp_nistz256_neg _ring_core_0_17_3_ecp_nistz256_neg +%define _ecp_nistz256_select_w5 _ring_core_0_17_3_ecp_nistz256_select_w5 +%define _ecp_nistz256_select_w7 _ring_core_0_17_3_ecp_nistz256_select_w7 +%define _nistz384_point_add _ring_core_0_17_3_nistz384_point_add +%define _nistz384_point_double _ring_core_0_17_3_nistz384_point_double +%define _nistz384_point_mul _ring_core_0_17_3_nistz384_point_mul +%define _p256_mul_mont _ring_core_0_17_3_p256_mul_mont +%define _p256_point_add _ring_core_0_17_3_p256_point_add +%define _p256_point_add_affine _ring_core_0_17_3_p256_point_add_affine +%define _p256_point_double _ring_core_0_17_3_p256_point_double +%define _p256_point_mul _ring_core_0_17_3_p256_point_mul +%define _p256_point_mul_base _ring_core_0_17_3_p256_point_mul_base +%define _p256_scalar_mul_mont _ring_core_0_17_3_p256_scalar_mul_mont +%define _p256_scalar_sqr_rep_mont _ring_core_0_17_3_p256_scalar_sqr_rep_mont +%define _p256_sqr_mont _ring_core_0_17_3_p256_sqr_mont +%define _p384_elem_div_by_2 _ring_core_0_17_3_p384_elem_div_by_2 +%define _p384_elem_mul_mont _ring_core_0_17_3_p384_elem_mul_mont +%define _p384_elem_neg _ring_core_0_17_3_p384_elem_neg +%define _p384_elem_sub _ring_core_0_17_3_p384_elem_sub +%define _p384_scalar_mul_mont _ring_core_0_17_3_p384_scalar_mul_mont +%define _openssl_poly1305_neon2_addmulmod _ring_core_0_17_3_openssl_poly1305_neon2_addmulmod +%define _openssl_poly1305_neon2_blocks _ring_core_0_17_3_openssl_poly1305_neon2_blocks +%define _sha256_block_data_order _ring_core_0_17_3_sha256_block_data_order +%define _sha512_block_data_order _ring_core_0_17_3_sha512_block_data_order +%define _vpaes_ctr32_encrypt_blocks _ring_core_0_17_3_vpaes_ctr32_encrypt_blocks +%define _vpaes_encrypt _ring_core_0_17_3_vpaes_encrypt +%define _vpaes_encrypt_key_to_bsaes _ring_core_0_17_3_vpaes_encrypt_key_to_bsaes +%define _vpaes_set_encrypt_key _ring_core_0_17_3_vpaes_set_encrypt_key +%define _x25519_NEON _ring_core_0_17_3_x25519_NEON +%define _x25519_fe_invert _ring_core_0_17_3_x25519_fe_invert +%define _x25519_fe_isnegative _ring_core_0_17_3_x25519_fe_isnegative +%define _x25519_fe_mul_ttt _ring_core_0_17_3_x25519_fe_mul_ttt +%define _x25519_fe_neg _ring_core_0_17_3_x25519_fe_neg +%define _x25519_fe_tobytes _ring_core_0_17_3_x25519_fe_tobytes +%define _x25519_ge_double_scalarmult_vartime _ring_core_0_17_3_x25519_ge_double_scalarmult_vartime +%define _x25519_ge_frombytes_vartime _ring_core_0_17_3_x25519_ge_frombytes_vartime +%define _x25519_ge_scalarmult_base _ring_core_0_17_3_x25519_ge_scalarmult_base +%define _x25519_ge_scalarmult_base_adx _ring_core_0_17_3_x25519_ge_scalarmult_base_adx +%define _x25519_public_from_private_generic_masked _ring_core_0_17_3_x25519_public_from_private_generic_masked +%define _x25519_sc_mask _ring_core_0_17_3_x25519_sc_mask +%define _x25519_sc_muladd _ring_core_0_17_3_x25519_sc_muladd +%define _x25519_sc_reduce _ring_core_0_17_3_x25519_sc_reduce +%define _x25519_scalar_mult_adx _ring_core_0_17_3_x25519_scalar_mult_adx +%define _x25519_scalar_mult_generic_masked _ring_core_0_17_3_x25519_scalar_mult_generic_masked + +%else +%define ecp_nistz256_point_double p256_point_double +%define ecp_nistz256_point_add p256_point_add +%define ecp_nistz256_point_add_affine p256_point_add_affine +%define ecp_nistz256_ord_mul_mont p256_scalar_mul_mont +%define ecp_nistz256_ord_sqr_mont p256_scalar_sqr_rep_mont +%define ecp_nistz256_mul_mont p256_mul_mont +%define ecp_nistz256_sqr_mont p256_sqr_mont +%define CRYPTO_memcmp ring_core_0_17_3_CRYPTO_memcmp +%define CRYPTO_poly1305_finish ring_core_0_17_3_CRYPTO_poly1305_finish +%define CRYPTO_poly1305_finish_neon ring_core_0_17_3_CRYPTO_poly1305_finish_neon +%define CRYPTO_poly1305_init ring_core_0_17_3_CRYPTO_poly1305_init +%define CRYPTO_poly1305_init_neon ring_core_0_17_3_CRYPTO_poly1305_init_neon +%define CRYPTO_poly1305_update ring_core_0_17_3_CRYPTO_poly1305_update +%define CRYPTO_poly1305_update_neon ring_core_0_17_3_CRYPTO_poly1305_update_neon +%define ChaCha20_ctr32 ring_core_0_17_3_ChaCha20_ctr32 +%define LIMBS_add_mod ring_core_0_17_3_LIMBS_add_mod +%define LIMBS_are_even ring_core_0_17_3_LIMBS_are_even +%define LIMBS_are_zero ring_core_0_17_3_LIMBS_are_zero +%define LIMBS_equal ring_core_0_17_3_LIMBS_equal +%define LIMBS_equal_limb ring_core_0_17_3_LIMBS_equal_limb +%define LIMBS_less_than ring_core_0_17_3_LIMBS_less_than +%define LIMBS_less_than_limb ring_core_0_17_3_LIMBS_less_than_limb +%define LIMBS_reduce_once ring_core_0_17_3_LIMBS_reduce_once +%define LIMBS_select_512_32 ring_core_0_17_3_LIMBS_select_512_32 +%define LIMBS_shl_mod ring_core_0_17_3_LIMBS_shl_mod +%define LIMBS_sub_mod ring_core_0_17_3_LIMBS_sub_mod +%define LIMBS_window5_split_window ring_core_0_17_3_LIMBS_window5_split_window +%define LIMBS_window5_unsplit_window ring_core_0_17_3_LIMBS_window5_unsplit_window +%define LIMB_shr ring_core_0_17_3_LIMB_shr +%define OPENSSL_armcap_P ring_core_0_17_3_OPENSSL_armcap_P +%define OPENSSL_cpuid_setup ring_core_0_17_3_OPENSSL_cpuid_setup +%define OPENSSL_ia32cap_P ring_core_0_17_3_OPENSSL_ia32cap_P +%define aes_hw_ctr32_encrypt_blocks ring_core_0_17_3_aes_hw_ctr32_encrypt_blocks +%define aes_hw_encrypt ring_core_0_17_3_aes_hw_encrypt +%define aes_hw_set_encrypt_key ring_core_0_17_3_aes_hw_set_encrypt_key +%define aes_nohw_ctr32_encrypt_blocks ring_core_0_17_3_aes_nohw_ctr32_encrypt_blocks +%define aes_nohw_encrypt ring_core_0_17_3_aes_nohw_encrypt +%define aes_nohw_set_encrypt_key ring_core_0_17_3_aes_nohw_set_encrypt_key +%define aesni_gcm_decrypt ring_core_0_17_3_aesni_gcm_decrypt +%define aesni_gcm_encrypt ring_core_0_17_3_aesni_gcm_encrypt +%define bn_from_montgomery_in_place ring_core_0_17_3_bn_from_montgomery_in_place +%define bn_gather5 ring_core_0_17_3_bn_gather5 +%define bn_mul_mont ring_core_0_17_3_bn_mul_mont +%define bn_mul_mont_gather5 ring_core_0_17_3_bn_mul_mont_gather5 +%define bn_neg_inv_mod_r_u64 ring_core_0_17_3_bn_neg_inv_mod_r_u64 +%define bn_power5 ring_core_0_17_3_bn_power5 +%define bn_scatter5 ring_core_0_17_3_bn_scatter5 +%define bn_sqr8x_internal ring_core_0_17_3_bn_sqr8x_internal +%define bn_sqrx8x_internal ring_core_0_17_3_bn_sqrx8x_internal +%define bsaes_ctr32_encrypt_blocks ring_core_0_17_3_bsaes_ctr32_encrypt_blocks +%define bssl_constant_time_test_conditional_memcpy ring_core_0_17_3_bssl_constant_time_test_conditional_memcpy +%define bssl_constant_time_test_conditional_memxor ring_core_0_17_3_bssl_constant_time_test_conditional_memxor +%define bssl_constant_time_test_main ring_core_0_17_3_bssl_constant_time_test_main +%define chacha20_poly1305_open ring_core_0_17_3_chacha20_poly1305_open +%define chacha20_poly1305_seal ring_core_0_17_3_chacha20_poly1305_seal +%define fiat_curve25519_adx_mul ring_core_0_17_3_fiat_curve25519_adx_mul +%define fiat_curve25519_adx_square ring_core_0_17_3_fiat_curve25519_adx_square +%define gcm_ghash_avx ring_core_0_17_3_gcm_ghash_avx +%define gcm_ghash_clmul ring_core_0_17_3_gcm_ghash_clmul +%define gcm_ghash_neon ring_core_0_17_3_gcm_ghash_neon +%define gcm_gmult_clmul ring_core_0_17_3_gcm_gmult_clmul +%define gcm_gmult_neon ring_core_0_17_3_gcm_gmult_neon +%define gcm_init_avx ring_core_0_17_3_gcm_init_avx +%define gcm_init_clmul ring_core_0_17_3_gcm_init_clmul +%define gcm_init_neon ring_core_0_17_3_gcm_init_neon +%define k25519Precomp ring_core_0_17_3_k25519Precomp +%define limbs_mul_add_limb ring_core_0_17_3_limbs_mul_add_limb +%define little_endian_bytes_from_scalar ring_core_0_17_3_little_endian_bytes_from_scalar +%define ecp_nistz256_neg ring_core_0_17_3_ecp_nistz256_neg +%define ecp_nistz256_select_w5 ring_core_0_17_3_ecp_nistz256_select_w5 +%define ecp_nistz256_select_w7 ring_core_0_17_3_ecp_nistz256_select_w7 +%define nistz384_point_add ring_core_0_17_3_nistz384_point_add +%define nistz384_point_double ring_core_0_17_3_nistz384_point_double +%define nistz384_point_mul ring_core_0_17_3_nistz384_point_mul +%define p256_mul_mont ring_core_0_17_3_p256_mul_mont +%define p256_point_add ring_core_0_17_3_p256_point_add +%define p256_point_add_affine ring_core_0_17_3_p256_point_add_affine +%define p256_point_double ring_core_0_17_3_p256_point_double +%define p256_point_mul ring_core_0_17_3_p256_point_mul +%define p256_point_mul_base ring_core_0_17_3_p256_point_mul_base +%define p256_scalar_mul_mont ring_core_0_17_3_p256_scalar_mul_mont +%define p256_scalar_sqr_rep_mont ring_core_0_17_3_p256_scalar_sqr_rep_mont +%define p256_sqr_mont ring_core_0_17_3_p256_sqr_mont +%define p384_elem_div_by_2 ring_core_0_17_3_p384_elem_div_by_2 +%define p384_elem_mul_mont ring_core_0_17_3_p384_elem_mul_mont +%define p384_elem_neg ring_core_0_17_3_p384_elem_neg +%define p384_elem_sub ring_core_0_17_3_p384_elem_sub +%define p384_scalar_mul_mont ring_core_0_17_3_p384_scalar_mul_mont +%define openssl_poly1305_neon2_addmulmod ring_core_0_17_3_openssl_poly1305_neon2_addmulmod +%define openssl_poly1305_neon2_blocks ring_core_0_17_3_openssl_poly1305_neon2_blocks +%define sha256_block_data_order ring_core_0_17_3_sha256_block_data_order +%define sha512_block_data_order ring_core_0_17_3_sha512_block_data_order +%define vpaes_ctr32_encrypt_blocks ring_core_0_17_3_vpaes_ctr32_encrypt_blocks +%define vpaes_encrypt ring_core_0_17_3_vpaes_encrypt +%define vpaes_encrypt_key_to_bsaes ring_core_0_17_3_vpaes_encrypt_key_to_bsaes +%define vpaes_set_encrypt_key ring_core_0_17_3_vpaes_set_encrypt_key +%define x25519_NEON ring_core_0_17_3_x25519_NEON +%define x25519_fe_invert ring_core_0_17_3_x25519_fe_invert +%define x25519_fe_isnegative ring_core_0_17_3_x25519_fe_isnegative +%define x25519_fe_mul_ttt ring_core_0_17_3_x25519_fe_mul_ttt +%define x25519_fe_neg ring_core_0_17_3_x25519_fe_neg +%define x25519_fe_tobytes ring_core_0_17_3_x25519_fe_tobytes +%define x25519_ge_double_scalarmult_vartime ring_core_0_17_3_x25519_ge_double_scalarmult_vartime +%define x25519_ge_frombytes_vartime ring_core_0_17_3_x25519_ge_frombytes_vartime +%define x25519_ge_scalarmult_base ring_core_0_17_3_x25519_ge_scalarmult_base +%define x25519_ge_scalarmult_base_adx ring_core_0_17_3_x25519_ge_scalarmult_base_adx +%define x25519_public_from_private_generic_masked ring_core_0_17_3_x25519_public_from_private_generic_masked +%define x25519_sc_mask ring_core_0_17_3_x25519_sc_mask +%define x25519_sc_muladd ring_core_0_17_3_x25519_sc_muladd +%define x25519_sc_reduce ring_core_0_17_3_x25519_sc_reduce +%define x25519_scalar_mult_adx ring_core_0_17_3_x25519_scalar_mult_adx +%define x25519_scalar_mult_generic_masked ring_core_0_17_3_x25519_scalar_mult_generic_masked + +%endif +%endif diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/sha256-x86_64-nasm.asm temporalio-1.3.0/vendor/ring/pregenerated/tmp/sha256-x86_64-nasm.asm --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/sha256-x86_64-nasm.asm 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/sha256-x86_64-nasm.asm 2023-10-30 19:40:00.000000000 +0000 @@ -1,32 +1,39 @@ ; This file is generated from a similarly-named Perl script in the BoringSSL ; source tree. Do not edit by hand. +%ifidn __OUTPUT_FORMAT__, win64 default rel %define XMMWORD %define YMMWORD %define ZMMWORD +%define _CET_ENDBR + +%include "ring_core_generated/prefix_symbols_nasm.inc" section .text code align=64 -EXTERN GFp_ia32cap_P -global GFp_sha256_block_data_order +EXTERN OPENSSL_ia32cap_P +global sha256_block_data_order ALIGN 16 -GFp_sha256_block_data_order: +sha256_block_data_order: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_sha256_block_data_order: +$L$SEH_begin_sha256_block_data_order: mov rdi,rcx mov rsi,rdx mov rdx,r8 - lea r11,[GFp_ia32cap_P] +_CET_ENDBR + lea r11,[OPENSSL_ia32cap_P] mov r9d,DWORD[r11] mov r10d,DWORD[4+r11] mov r11d,DWORD[8+r11] + test r11d,536870912 + jnz NEAR $L$shaext_shortcut and r9d,1073741824 and r10d,268435968 or r10d,r9d @@ -1739,9 +1746,10 @@ $L$epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_sha256_block_data_order: +$L$SEH_end_sha256_block_data_order: +section .rdata rdata align=8 ALIGN 64 K256: @@ -1784,18 +1792,254 @@ DD 0x03020100,0x0b0a0908,0xffffffff,0xffffffff DD 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 DD 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 -DB 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97 -DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54 -DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 -DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 -DB 111,114,103,62,0 + DB 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97 + DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54 + DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 + DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 + DB 111,114,103,62,0 +section .text + ALIGN 64 -GFp_sha256_block_data_order_ssse3: +sha256_block_data_order_shaext: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_sha256_block_data_order_ssse3: +$L$SEH_begin_sha256_block_data_order_shaext: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +$L$shaext_shortcut: + lea rsp,[((-88))+rsp] + movaps XMMWORD[(-8-80)+rax],xmm6 + movaps XMMWORD[(-8-64)+rax],xmm7 + movaps XMMWORD[(-8-48)+rax],xmm8 + movaps XMMWORD[(-8-32)+rax],xmm9 + movaps XMMWORD[(-8-16)+rax],xmm10 +$L$prologue_shaext: + lea rcx,[((K256+128))] + movdqu xmm1,XMMWORD[rdi] + movdqu xmm2,XMMWORD[16+rdi] + movdqa xmm7,XMMWORD[((512-128))+rcx] + + pshufd xmm0,xmm1,0x1b + pshufd xmm1,xmm1,0xb1 + pshufd xmm2,xmm2,0x1b + movdqa xmm8,xmm7 +DB 102,15,58,15,202,8 + punpcklqdq xmm2,xmm0 + jmp NEAR $L$oop_shaext + +ALIGN 16 +$L$oop_shaext: + movdqu xmm3,XMMWORD[rsi] + movdqu xmm4,XMMWORD[16+rsi] + movdqu xmm5,XMMWORD[32+rsi] +DB 102,15,56,0,223 + movdqu xmm6,XMMWORD[48+rsi] + + movdqa xmm0,XMMWORD[((0-128))+rcx] + paddd xmm0,xmm3 +DB 102,15,56,0,231 + movdqa xmm10,xmm2 + DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + nop + movdqa xmm9,xmm1 + DB 15,56,203,202 + + movdqa xmm0,XMMWORD[((32-128))+rcx] + paddd xmm0,xmm4 +DB 102,15,56,0,239 + DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + lea rsi,[64+rsi] + DB 15,56,204,220 + DB 15,56,203,202 + + movdqa xmm0,XMMWORD[((64-128))+rcx] + paddd xmm0,xmm5 +DB 102,15,56,0,247 + DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm6 +DB 102,15,58,15,253,4 + nop + paddd xmm3,xmm7 + DB 15,56,204,229 + DB 15,56,203,202 + + movdqa xmm0,XMMWORD[((96-128))+rcx] + paddd xmm0,xmm6 + DB 15,56,205,222 + DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm3 +DB 102,15,58,15,254,4 + nop + paddd xmm4,xmm7 + DB 15,56,204,238 + DB 15,56,203,202 + movdqa xmm0,XMMWORD[((128-128))+rcx] + paddd xmm0,xmm3 + DB 15,56,205,227 + DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm4 +DB 102,15,58,15,251,4 + nop + paddd xmm5,xmm7 + DB 15,56,204,243 + DB 15,56,203,202 + movdqa xmm0,XMMWORD[((160-128))+rcx] + paddd xmm0,xmm4 + DB 15,56,205,236 + DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm5 +DB 102,15,58,15,252,4 + nop + paddd xmm6,xmm7 + DB 15,56,204,220 + DB 15,56,203,202 + movdqa xmm0,XMMWORD[((192-128))+rcx] + paddd xmm0,xmm5 + DB 15,56,205,245 + DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm6 +DB 102,15,58,15,253,4 + nop + paddd xmm3,xmm7 + DB 15,56,204,229 + DB 15,56,203,202 + movdqa xmm0,XMMWORD[((224-128))+rcx] + paddd xmm0,xmm6 + DB 15,56,205,222 + DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm3 +DB 102,15,58,15,254,4 + nop + paddd xmm4,xmm7 + DB 15,56,204,238 + DB 15,56,203,202 + movdqa xmm0,XMMWORD[((256-128))+rcx] + paddd xmm0,xmm3 + DB 15,56,205,227 + DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm4 +DB 102,15,58,15,251,4 + nop + paddd xmm5,xmm7 + DB 15,56,204,243 + DB 15,56,203,202 + movdqa xmm0,XMMWORD[((288-128))+rcx] + paddd xmm0,xmm4 + DB 15,56,205,236 + DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm5 +DB 102,15,58,15,252,4 + nop + paddd xmm6,xmm7 + DB 15,56,204,220 + DB 15,56,203,202 + movdqa xmm0,XMMWORD[((320-128))+rcx] + paddd xmm0,xmm5 + DB 15,56,205,245 + DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm6 +DB 102,15,58,15,253,4 + nop + paddd xmm3,xmm7 + DB 15,56,204,229 + DB 15,56,203,202 + movdqa xmm0,XMMWORD[((352-128))+rcx] + paddd xmm0,xmm6 + DB 15,56,205,222 + DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm3 +DB 102,15,58,15,254,4 + nop + paddd xmm4,xmm7 + DB 15,56,204,238 + DB 15,56,203,202 + movdqa xmm0,XMMWORD[((384-128))+rcx] + paddd xmm0,xmm3 + DB 15,56,205,227 + DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm4 +DB 102,15,58,15,251,4 + nop + paddd xmm5,xmm7 + DB 15,56,204,243 + DB 15,56,203,202 + movdqa xmm0,XMMWORD[((416-128))+rcx] + paddd xmm0,xmm4 + DB 15,56,205,236 + DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm5 +DB 102,15,58,15,252,4 + DB 15,56,203,202 + paddd xmm6,xmm7 + + movdqa xmm0,XMMWORD[((448-128))+rcx] + paddd xmm0,xmm5 + DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + DB 15,56,205,245 + movdqa xmm7,xmm8 + DB 15,56,203,202 + + movdqa xmm0,XMMWORD[((480-128))+rcx] + paddd xmm0,xmm6 + nop + DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + dec rdx + nop + DB 15,56,203,202 + + paddd xmm2,xmm10 + paddd xmm1,xmm9 + jnz NEAR $L$oop_shaext + + pshufd xmm2,xmm2,0xb1 + pshufd xmm7,xmm1,0x1b + pshufd xmm1,xmm1,0xb1 + punpckhqdq xmm1,xmm2 +DB 102,15,58,15,215,8 + + movdqu XMMWORD[rdi],xmm1 + movdqu XMMWORD[16+rdi],xmm2 + movaps xmm6,XMMWORD[((-8-80))+rax] + movaps xmm7,XMMWORD[((-8-64))+rax] + movaps xmm8,XMMWORD[((-8-48))+rax] + movaps xmm9,XMMWORD[((-8-32))+rax] + movaps xmm10,XMMWORD[((-8-16))+rax] + mov rsp,rax +$L$epilogue_shaext: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + ret + +$L$SEH_end_sha256_block_data_order_shaext: + +ALIGN 64 +sha256_block_data_order_ssse3: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha256_block_data_order_ssse3: mov rdi,rcx mov rsi,rdx mov rdx,r8 @@ -2918,16 +3162,16 @@ $L$epilogue_ssse3: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_sha256_block_data_order_ssse3: +$L$SEH_end_sha256_block_data_order_ssse3: ALIGN 64 -GFp_sha256_block_data_order_avx: +sha256_block_data_order_avx: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_sha256_block_data_order_avx: +$L$SEH_begin_sha256_block_data_order_avx: mov rdi,rcx mov rsi,rdx mov rdx,r8 @@ -4012,9 +4256,9 @@ $L$epilogue_avx: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_sha256_block_data_order_avx: +$L$SEH_end_sha256_block_data_order_avx: EXTERN __imp_RtlVirtualUnwind ALIGN 16 @@ -4109,30 +4353,72 @@ pop rbx pop rdi pop rsi - DB 0F3h,0C3h ;repret + ret + + +ALIGN 16 +shaext_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + lea r10,[$L$prologue_shaext] + cmp rbx,r10 + jb NEAR $L$in_prologue + + lea r10,[$L$epilogue_shaext] + cmp rbx,r10 + jae NEAR $L$in_prologue + + lea rsi,[((-8-80))+rax] + lea rdi,[512+r8] + mov ecx,10 + DD 0xa548f3fc + + jmp NEAR $L$in_prologue section .pdata rdata align=4 ALIGN 4 - DD $L$SEH_begin_GFp_sha256_block_data_order wrt ..imagebase - DD $L$SEH_end_GFp_sha256_block_data_order wrt ..imagebase - DD $L$SEH_info_GFp_sha256_block_data_order wrt ..imagebase - DD $L$SEH_begin_GFp_sha256_block_data_order_ssse3 wrt ..imagebase - DD $L$SEH_end_GFp_sha256_block_data_order_ssse3 wrt ..imagebase - DD $L$SEH_info_GFp_sha256_block_data_order_ssse3 wrt ..imagebase - DD $L$SEH_begin_GFp_sha256_block_data_order_avx wrt ..imagebase - DD $L$SEH_end_GFp_sha256_block_data_order_avx wrt ..imagebase - DD $L$SEH_info_GFp_sha256_block_data_order_avx wrt ..imagebase + DD $L$SEH_begin_sha256_block_data_order wrt ..imagebase + DD $L$SEH_end_sha256_block_data_order wrt ..imagebase + DD $L$SEH_info_sha256_block_data_order wrt ..imagebase + DD $L$SEH_begin_sha256_block_data_order_shaext wrt ..imagebase + DD $L$SEH_end_sha256_block_data_order_shaext wrt ..imagebase + DD $L$SEH_info_sha256_block_data_order_shaext wrt ..imagebase + DD $L$SEH_begin_sha256_block_data_order_ssse3 wrt ..imagebase + DD $L$SEH_end_sha256_block_data_order_ssse3 wrt ..imagebase + DD $L$SEH_info_sha256_block_data_order_ssse3 wrt ..imagebase + DD $L$SEH_begin_sha256_block_data_order_avx wrt ..imagebase + DD $L$SEH_end_sha256_block_data_order_avx wrt ..imagebase + DD $L$SEH_info_sha256_block_data_order_avx wrt ..imagebase section .xdata rdata align=8 ALIGN 8 -$L$SEH_info_GFp_sha256_block_data_order: -DB 9,0,0,0 +$L$SEH_info_sha256_block_data_order: + DB 9,0,0,0 DD se_handler wrt ..imagebase DD $L$prologue wrt ..imagebase,$L$epilogue wrt ..imagebase -$L$SEH_info_GFp_sha256_block_data_order_ssse3: -DB 9,0,0,0 +$L$SEH_info_sha256_block_data_order_shaext: + DB 9,0,0,0 + DD shaext_handler wrt ..imagebase +$L$SEH_info_sha256_block_data_order_ssse3: + DB 9,0,0,0 DD se_handler wrt ..imagebase DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase -$L$SEH_info_GFp_sha256_block_data_order_avx: -DB 9,0,0,0 +$L$SEH_info_sha256_block_data_order_avx: + DB 9,0,0,0 DD se_handler wrt ..imagebase DD $L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase +%else +; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 +ret +%endif diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/sha512-x86_64-nasm.asm temporalio-1.3.0/vendor/ring/pregenerated/tmp/sha512-x86_64-nasm.asm --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/sha512-x86_64-nasm.asm 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/sha512-x86_64-nasm.asm 2023-10-30 19:40:00.000000000 +0000 @@ -1,29 +1,34 @@ ; This file is generated from a similarly-named Perl script in the BoringSSL ; source tree. Do not edit by hand. +%ifidn __OUTPUT_FORMAT__, win64 default rel %define XMMWORD %define YMMWORD %define ZMMWORD +%define _CET_ENDBR + +%include "ring_core_generated/prefix_symbols_nasm.inc" section .text code align=64 -EXTERN GFp_ia32cap_P -global GFp_sha512_block_data_order +EXTERN OPENSSL_ia32cap_P +global sha512_block_data_order ALIGN 16 -GFp_sha512_block_data_order: +sha512_block_data_order: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_sha512_block_data_order: +$L$SEH_begin_sha512_block_data_order: mov rdi,rcx mov rsi,rdx mov rdx,r8 - lea r11,[GFp_ia32cap_P] +_CET_ENDBR + lea r11,[OPENSSL_ia32cap_P] mov r9d,DWORD[r11] mov r10d,DWORD[4+r11] mov r11d,DWORD[8+r11] @@ -1737,9 +1742,10 @@ $L$epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_sha512_block_data_order: +$L$SEH_end_sha512_block_data_order: +section .rdata rdata align=8 ALIGN 64 K512: @@ -1826,18 +1832,20 @@ DQ 0x0001020304050607,0x08090a0b0c0d0e0f DQ 0x0001020304050607,0x08090a0b0c0d0e0f -DB 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97 -DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54 -DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 -DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 -DB 111,114,103,62,0 + DB 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97 + DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54 + DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 + DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 + DB 111,114,103,62,0 +section .text + ALIGN 64 -GFp_sha512_block_data_order_avx: +sha512_block_data_order_avx: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_sha512_block_data_order_avx: +$L$SEH_begin_sha512_block_data_order_avx: mov rdi,rcx mov rsi,rdx mov rdx,r8 @@ -3016,9 +3024,9 @@ $L$epilogue_avx: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_sha512_block_data_order_avx: +$L$SEH_end_sha512_block_data_order_avx: EXTERN __imp_RtlVirtualUnwind ALIGN 16 @@ -3113,23 +3121,27 @@ pop rbx pop rdi pop rsi - DB 0F3h,0C3h ;repret + ret section .pdata rdata align=4 ALIGN 4 - DD $L$SEH_begin_GFp_sha512_block_data_order wrt ..imagebase - DD $L$SEH_end_GFp_sha512_block_data_order wrt ..imagebase - DD $L$SEH_info_GFp_sha512_block_data_order wrt ..imagebase - DD $L$SEH_begin_GFp_sha512_block_data_order_avx wrt ..imagebase - DD $L$SEH_end_GFp_sha512_block_data_order_avx wrt ..imagebase - DD $L$SEH_info_GFp_sha512_block_data_order_avx wrt ..imagebase + DD $L$SEH_begin_sha512_block_data_order wrt ..imagebase + DD $L$SEH_end_sha512_block_data_order wrt ..imagebase + DD $L$SEH_info_sha512_block_data_order wrt ..imagebase + DD $L$SEH_begin_sha512_block_data_order_avx wrt ..imagebase + DD $L$SEH_end_sha512_block_data_order_avx wrt ..imagebase + DD $L$SEH_info_sha512_block_data_order_avx wrt ..imagebase section .xdata rdata align=8 ALIGN 8 -$L$SEH_info_GFp_sha512_block_data_order: -DB 9,0,0,0 +$L$SEH_info_sha512_block_data_order: + DB 9,0,0,0 DD se_handler wrt ..imagebase DD $L$prologue wrt ..imagebase,$L$epilogue wrt ..imagebase -$L$SEH_info_GFp_sha512_block_data_order_avx: -DB 9,0,0,0 +$L$SEH_info_sha512_block_data_order_avx: + DB 9,0,0,0 DD se_handler wrt ..imagebase DD $L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase +%else +; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 +ret +%endif diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/vpaes-x86_64-nasm.asm temporalio-1.3.0/vendor/ring/pregenerated/tmp/vpaes-x86_64-nasm.asm --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/vpaes-x86_64-nasm.asm 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/vpaes-x86_64-nasm.asm 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,14 @@ ; This file is generated from a similarly-named Perl script in the BoringSSL ; source tree. Do not edit by hand. +%ifidn __OUTPUT_FORMAT__, win64 default rel %define XMMWORD %define YMMWORD %define ZMMWORD +%define _CET_ENDBR + +%include "ring_core_generated/prefix_symbols_nasm.inc" section .text code align=64 @@ -106,7 +110,7 @@ movdqa xmm1,XMMWORD[64+r10*1+r11] pxor xmm0,xmm4 DB 102,15,56,0,193 - DB 0F3h,0C3h ;repret + ret @@ -281,7 +285,7 @@ pxor xmm6,xmm12 DB 102,15,56,0,193 DB 102,15,56,0,241 - DB 0F3h,0C3h ;repret + ret @@ -410,7 +414,7 @@ pxor xmm5,xmm5 pxor xmm6,xmm6 pxor xmm7,xmm7 - DB 0F3h,0C3h ;repret + ret @@ -488,7 +492,7 @@ pxor xmm0,xmm7 movdqa xmm7,xmm0 - DB 0F3h,0C3h ;repret + ret @@ -514,7 +518,7 @@ movdqa xmm0,XMMWORD[16+r11] DB 102,15,56,0,193 pxor xmm0,xmm2 - DB 0F3h,0C3h ;repret + ret @@ -564,27 +568,28 @@ add r8,-16 and r8,0x30 movdqu XMMWORD[rdx],xmm3 - DB 0F3h,0C3h ;repret + ret -global GFp_vpaes_set_encrypt_key +global vpaes_set_encrypt_key ALIGN 16 -GFp_vpaes_set_encrypt_key: +vpaes_set_encrypt_key: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_vpaes_set_encrypt_key: +$L$SEH_begin_vpaes_set_encrypt_key: mov rdi,rcx mov rsi,rdx mov rdx,r8 +_CET_ENDBR %ifdef BORINGSSL_DISPATCH_TEST EXTERN BORINGSSL_function_hit mov BYTE[((BORINGSSL_function_hit+5))],1 @@ -625,24 +630,29 @@ xor eax,eax mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_vpaes_set_encrypt_key: +$L$SEH_end_vpaes_set_encrypt_key: -global GFp_vpaes_encrypt +global vpaes_encrypt ALIGN 16 -GFp_vpaes_encrypt: +vpaes_encrypt: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_vpaes_encrypt: +$L$SEH_begin_vpaes_encrypt: mov rdi,rcx mov rsi,rdx mov rdx,r8 +_CET_ENDBR +%ifdef BORINGSSL_DISPATCH_TEST +EXTERN BORINGSSL_function_hit + mov BYTE[((BORINGSSL_function_hit+4))],1 +%endif lea rsp,[((-184))+rsp] movaps XMMWORD[16+rsp],xmm6 movaps XMMWORD[32+rsp],xmm7 @@ -673,17 +683,17 @@ $L$enc_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_vpaes_encrypt: -global GFp_vpaes_ctr32_encrypt_blocks +$L$SEH_end_vpaes_encrypt: +global vpaes_ctr32_encrypt_blocks ALIGN 16 -GFp_vpaes_ctr32_encrypt_blocks: +vpaes_ctr32_encrypt_blocks: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_vpaes_ctr32_encrypt_blocks: +$L$SEH_begin_vpaes_ctr32_encrypt_blocks: mov rdi,rcx mov rsi,rdx mov rdx,r8 @@ -692,6 +702,7 @@ +_CET_ENDBR xchg rdx,rcx test rcx,rcx @@ -772,9 +783,9 @@ $L$ctr32_abort: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_vpaes_ctr32_encrypt_blocks: +$L$SEH_end_vpaes_ctr32_encrypt_blocks: @@ -793,7 +804,7 @@ movdqa xmm12,XMMWORD[64+r10] movdqa xmm15,XMMWORD[80+r10] movdqa xmm14,XMMWORD[96+r10] - DB 0F3h,0C3h ;repret + ret @@ -802,6 +813,7 @@ +section .rdata rdata align=8 ALIGN 64 _vpaes_consts: $L$k_inv: @@ -867,13 +879,15 @@ $L$ctr_add_two: DQ 0x0000000000000000,0x0000000200000000 -DB 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 -DB 111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54 -DB 52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97 -DB 109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32 -DB 85,110,105,118,101,114,115,105,116,121,41,0 + DB 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 + DB 111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54 + DB 52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97 + DB 109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32 + DB 85,110,105,118,101,114,115,105,116,121,41,0 ALIGN 64 +section .text + EXTERN __imp_RtlVirtualUnwind ALIGN 16 @@ -950,33 +964,37 @@ pop rbx pop rdi pop rsi - DB 0F3h,0C3h ;repret + ret section .pdata rdata align=4 ALIGN 4 - DD $L$SEH_begin_GFp_vpaes_set_encrypt_key wrt ..imagebase - DD $L$SEH_end_GFp_vpaes_set_encrypt_key wrt ..imagebase - DD $L$SEH_info_GFp_vpaes_set_encrypt_key wrt ..imagebase - - DD $L$SEH_begin_GFp_vpaes_encrypt wrt ..imagebase - DD $L$SEH_end_GFp_vpaes_encrypt wrt ..imagebase - DD $L$SEH_info_GFp_vpaes_encrypt wrt ..imagebase - DD $L$SEH_begin_GFp_vpaes_ctr32_encrypt_blocks wrt ..imagebase - DD $L$SEH_end_GFp_vpaes_ctr32_encrypt_blocks wrt ..imagebase - DD $L$SEH_info_GFp_vpaes_ctr32_encrypt_blocks wrt ..imagebase + DD $L$SEH_begin_vpaes_set_encrypt_key wrt ..imagebase + DD $L$SEH_end_vpaes_set_encrypt_key wrt ..imagebase + DD $L$SEH_info_vpaes_set_encrypt_key wrt ..imagebase + + DD $L$SEH_begin_vpaes_encrypt wrt ..imagebase + DD $L$SEH_end_vpaes_encrypt wrt ..imagebase + DD $L$SEH_info_vpaes_encrypt wrt ..imagebase + DD $L$SEH_begin_vpaes_ctr32_encrypt_blocks wrt ..imagebase + DD $L$SEH_end_vpaes_ctr32_encrypt_blocks wrt ..imagebase + DD $L$SEH_info_vpaes_ctr32_encrypt_blocks wrt ..imagebase section .xdata rdata align=8 ALIGN 8 -$L$SEH_info_GFp_vpaes_set_encrypt_key: -DB 9,0,0,0 +$L$SEH_info_vpaes_set_encrypt_key: + DB 9,0,0,0 DD se_handler wrt ..imagebase DD $L$enc_key_body wrt ..imagebase,$L$enc_key_epilogue wrt ..imagebase -$L$SEH_info_GFp_vpaes_encrypt: -DB 9,0,0,0 +$L$SEH_info_vpaes_encrypt: + DB 9,0,0,0 DD se_handler wrt ..imagebase DD $L$enc_body wrt ..imagebase,$L$enc_epilogue wrt ..imagebase -$L$SEH_info_GFp_vpaes_ctr32_encrypt_blocks: -DB 9,0,0,0 +$L$SEH_info_vpaes_ctr32_encrypt_blocks: + DB 9,0,0,0 DD se_handler wrt ..imagebase DD $L$ctr32_body wrt ..imagebase,$L$ctr32_epilogue wrt ..imagebase +%else +; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 +ret +%endif diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/vpaes-x86-win32n.asm temporalio-1.3.0/vendor/ring/pregenerated/tmp/vpaes-x86-win32n.asm --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/vpaes-x86-win32n.asm 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/vpaes-x86-win32n.asm 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,8 @@ ; This file is generated from a similarly-named Perl script in the BoringSSL ; source tree. Do not edit by hand. -%ifdef BORINGSSL_PREFIX -%include "boringssl_prefix_symbols_nasm.inc" -%endif +%include "ring_core_generated/prefix_symbols_nasm.inc" +%ifidn __OUTPUT_FORMAT__, win32 %ifidn __OUTPUT_FORMAT__,obj section code use32 class=code align=64 %elifidn __OUTPUT_FORMAT__,win32 @@ -12,6 +11,9 @@ %else section .text code %endif +%ifdef BORINGSSL_DISPATCH_TEST +extern _BORINGSSL_function_hit +%endif align 64 L$_vpaes_consts: dd 218628480,235210255,168496130,67568393 @@ -318,14 +320,26 @@ and ecx,48 movdqu [edx],xmm3 ret -global _GFp_vpaes_set_encrypt_key +global _vpaes_set_encrypt_key align 16 -_GFp_vpaes_set_encrypt_key: -L$_GFp_vpaes_set_encrypt_key_begin: +_vpaes_set_encrypt_key: +L$_vpaes_set_encrypt_key_begin: push ebp push ebx push esi push edi +%ifdef BORINGSSL_DISPATCH_TEST + push ebx + push edx + call L$012pic +L$012pic: + pop ebx + lea ebx,[(_BORINGSSL_function_hit+5-L$012pic)+ebx] + mov edx,1 + mov BYTE [ebx],dl + pop edx + pop ebx +%endif mov esi,DWORD [20+esp] lea ebx,[esp-56] mov eax,DWORD [24+esp] @@ -339,9 +353,9 @@ mov DWORD [240+edx],ebx mov ecx,48 mov edi,0 - lea ebp,[(L$_vpaes_consts+0x30-L$012pic_point)] + lea ebp,[(L$_vpaes_consts+0x30-L$013pic_point)] call __vpaes_schedule_core -L$012pic_point: +L$013pic_point: mov esp,DWORD [48+esp] xor eax,eax pop edi @@ -349,17 +363,29 @@ pop ebx pop ebp ret -global _GFp_vpaes_encrypt +global _vpaes_encrypt align 16 -_GFp_vpaes_encrypt: -L$_GFp_vpaes_encrypt_begin: +_vpaes_encrypt: +L$_vpaes_encrypt_begin: push ebp push ebx push esi push edi - lea ebp,[(L$_vpaes_consts+0x30-L$013pic_point)] +%ifdef BORINGSSL_DISPATCH_TEST + push ebx + push edx + call L$014pic +L$014pic: + pop ebx + lea ebx,[(_BORINGSSL_function_hit+4-L$014pic)+ebx] + mov edx,1 + mov BYTE [ebx],dl + pop edx + pop ebx +%endif + lea ebp,[(L$_vpaes_consts+0x30-L$015pic_point)] call __vpaes_preheat -L$013pic_point: +L$015pic_point: mov esi,DWORD [20+esp] lea ebx,[esp-56] mov edi,DWORD [24+esp] @@ -376,3 +402,7 @@ pop ebx pop ebp ret +%else +; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 +ret +%endif diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/x86_64-mont5-nasm.asm temporalio-1.3.0/vendor/ring/pregenerated/tmp/x86_64-mont5-nasm.asm --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/x86_64-mont5-nasm.asm 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/x86_64-mont5-nasm.asm 2023-10-30 19:40:00.000000000 +0000 @@ -1,23 +1,27 @@ ; This file is generated from a similarly-named Perl script in the BoringSSL ; source tree. Do not edit by hand. +%ifidn __OUTPUT_FORMAT__, win64 default rel %define XMMWORD %define YMMWORD %define ZMMWORD +%define _CET_ENDBR + +%include "ring_core_generated/prefix_symbols_nasm.inc" section .text code align=64 -EXTERN GFp_ia32cap_P +EXTERN OPENSSL_ia32cap_P -global GFp_bn_mul_mont_gather5 +global bn_mul_mont_gather5 ALIGN 64 -GFp_bn_mul_mont_gather5: +bn_mul_mont_gather5: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_bn_mul_mont_gather5: +$L$SEH_begin_bn_mul_mont_gather5: mov rdi,rcx mov rsi,rdx mov rdx,r8 @@ -27,12 +31,13 @@ +_CET_ENDBR mov r9d,r9d mov rax,rsp test r9d,7 jnz NEAR $L$mul_enter - lea r11,[GFp_ia32cap_P] + lea r11,[OPENSSL_ia32cap_P] mov r11d,DWORD[8+r11] jmp NEAR $L$mul4x_enter @@ -97,7 +102,7 @@ movdqa xmm2,xmm1 paddd xmm1,xmm0 pcmpeqd xmm0,xmm5 -DB 0x67 + DB 0x67 movdqa xmm3,xmm4 paddd xmm2,xmm1 pcmpeqd xmm1,xmm5 @@ -161,7 +166,7 @@ movdqa XMMWORD[304+r10],xmm0 paddd xmm3,xmm2 -DB 0x67 + DB 0x67 pcmpeqd xmm2,xmm5 movdqa XMMWORD[320+r10],xmm1 @@ -212,6 +217,7 @@ por xmm0,xmm2 por xmm1,xmm3 por xmm0,xmm1 + pshufd xmm1,xmm0,0x4e por xmm0,xmm1 lea r12,[256+r12] @@ -335,6 +341,7 @@ por xmm4,xmm2 por xmm5,xmm3 por xmm4,xmm5 + pshufd xmm0,xmm4,0x4e por xmm0,xmm4 lea r12,[256+r12] @@ -461,9 +468,9 @@ $L$mul_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_bn_mul_mont_gather5: +$L$SEH_end_bn_mul_mont_gather5: ALIGN 32 bn_mul4x_mont_gather5: @@ -480,7 +487,7 @@ -DB 0x67 + DB 0x67 mov rax,rsp $L$mul4x_enter: @@ -501,7 +508,7 @@ $L$mul4x_prologue: -DB 0x67 + DB 0x67 shl r9d,3 lea r10,[r9*2+r9] neg r9 @@ -580,7 +587,7 @@ $L$mul4x_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret $L$SEH_end_bn_mul4x_mont_gather5: @@ -600,11 +607,11 @@ pshufd xmm5,xmm5,0 movdqa xmm4,xmm1 -DB 0x67,0x67 + DB 0x67,0x67 movdqa xmm2,xmm1 paddd xmm1,xmm0 pcmpeqd xmm0,xmm5 -DB 0x67 + DB 0x67 movdqa xmm3,xmm4 paddd xmm2,xmm1 pcmpeqd xmm1,xmm5 @@ -668,7 +675,7 @@ movdqa XMMWORD[304+r10],xmm0 paddd xmm3,xmm2 -DB 0x67 + DB 0x67 pcmpeqd xmm2,xmm5 movdqa XMMWORD[320+r10],xmm1 @@ -719,6 +726,7 @@ por xmm0,xmm2 por xmm1,xmm3 por xmm0,xmm1 + pshufd xmm1,xmm0,0x4e por xmm0,xmm1 lea r12,[256+r12] @@ -926,6 +934,7 @@ por xmm4,xmm2 por xmm5,xmm3 por xmm4,xmm5 + pshufd xmm0,xmm4,0x4e por xmm0,xmm4 lea r12,[256+r12] @@ -1111,14 +1120,14 @@ jmp NEAR $L$sqr4x_sub_entry -global GFp_bn_power5 +global bn_power5 ALIGN 32 -GFp_bn_power5: +bn_power5: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_bn_power5: +$L$SEH_begin_bn_power5: mov rdi,rcx mov rsi,rdx mov rdx,r8 @@ -1128,9 +1137,10 @@ +_CET_ENDBR mov rax,rsp - lea r11,[GFp_ia32cap_P] + lea r11,[OPENSSL_ia32cap_P] mov r11d,DWORD[8+r11] and r11d,0x80108 cmp r11d,0x80108 @@ -1257,17 +1267,18 @@ $L$power5_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_bn_power5: +$L$SEH_end_bn_power5: -global GFp_bn_sqr8x_internal +global bn_sqr8x_internal ALIGN 32 -GFp_bn_sqr8x_internal: +bn_sqr8x_internal: __bn_sqr8x_internal: +_CET_ENDBR @@ -1529,7 +1540,7 @@ add r13,QWORD[rcx*1+rdi] adc r12,0 -DB 0x67 + DB 0x67 mul r14 add r11,rax mov rax,rbx @@ -1561,7 +1572,7 @@ cmp rcx,0 jne NEAR $L$sqr4x_inner -DB 0x67 + DB 0x67 mul r15 add r13,rax adc rdx,0 @@ -1754,7 +1765,7 @@ jnz NEAR $L$sqr4x_shift_n_add lea r12,[r10*2+r14] -DB 0x67 + DB 0x67 shr r10,63 lea r13,[r11*2+rcx] shr r11,63 @@ -1796,7 +1807,7 @@ ALIGN 32 $L$8x_reduction_loop: lea rdi,[r9*1+rdi] -DB 0x66 + DB 0x66 mov rbx,QWORD[rdi] mov r9,QWORD[8+rdi] mov r10,QWORD[16+rdi] @@ -1808,7 +1819,7 @@ mov QWORD[rdx],rax lea rdi,[64+rdi] -DB 0x67 + DB 0x67 mov r8,rbx imul rbx,QWORD[((32+8))+rsp] mov rax,QWORD[rbp] @@ -1892,7 +1903,7 @@ cmp rbp,QWORD[((0+8))+rsp] jae NEAR $L$8x_no_tail -DB 0x66 + DB 0x66 add r8,QWORD[rdi] adc r9,QWORD[8+rdi] adc r10,QWORD[16+rdi] @@ -2041,7 +2052,7 @@ cmp rdi,rdx jb NEAR $L$8x_reduction_loop - DB 0F3h,0C3h ;repret + ret @@ -2097,204 +2108,10 @@ mov r10,r9 neg r9 - DB 0F3h,0C3h ;repret - - -global GFp_bn_from_montgomery - -ALIGN 32 -GFp_bn_from_montgomery: - - test DWORD[48+rsp],7 - jz NEAR bn_from_mont8x - xor eax,eax - DB 0F3h,0C3h ;repret - - - - -ALIGN 32 -bn_from_mont8x: - mov QWORD[8+rsp],rdi ;WIN64 prologue - mov QWORD[16+rsp],rsi - mov rax,rsp -$L$SEH_begin_bn_from_mont8x: - mov rdi,rcx - mov rsi,rdx - mov rdx,r8 - mov rcx,r9 - mov r8,QWORD[40+rsp] - mov r9,QWORD[48+rsp] - - - -DB 0x67 - mov rax,rsp - - push rbx - - push rbp - - push r12 - - push r13 - - push r14 - - push r15 - -$L$from_prologue: - - shl r9d,3 - lea r10,[r9*2+r9] - neg r9 - mov r8,QWORD[r8] - - - - - - - - - lea r11,[((-320))+r9*2+rsp] - mov rbp,rsp - sub r11,rdi - and r11,4095 - cmp r10,r11 - jb NEAR $L$from_sp_alt - sub rbp,r11 - lea rbp,[((-320))+r9*2+rbp] - jmp NEAR $L$from_sp_done - -ALIGN 32 -$L$from_sp_alt: - lea r10,[((4096-320))+r9*2] - lea rbp,[((-320))+r9*2+rbp] - sub r11,r10 - mov r10,0 - cmovc r11,r10 - sub rbp,r11 -$L$from_sp_done: - and rbp,-64 - mov r11,rsp - sub r11,rbp - and r11,-4096 - lea rsp,[rbp*1+r11] - mov r10,QWORD[rsp] - cmp rsp,rbp - ja NEAR $L$from_page_walk - jmp NEAR $L$from_page_walk_done - -$L$from_page_walk: - lea rsp,[((-4096))+rsp] - mov r10,QWORD[rsp] - cmp rsp,rbp - ja NEAR $L$from_page_walk -$L$from_page_walk_done: - - mov r10,r9 - neg r9 - - - + ret - - - - - mov QWORD[32+rsp],r8 - mov QWORD[40+rsp],rax - -$L$from_body: - mov r11,r9 - lea rax,[48+rsp] - pxor xmm0,xmm0 - jmp NEAR $L$mul_by_1 - -ALIGN 32 -$L$mul_by_1: - movdqu xmm1,XMMWORD[rsi] - movdqu xmm2,XMMWORD[16+rsi] - movdqu xmm3,XMMWORD[32+rsi] - movdqa XMMWORD[r9*1+rax],xmm0 - movdqu xmm4,XMMWORD[48+rsi] - movdqa XMMWORD[16+r9*1+rax],xmm0 -DB 0x48,0x8d,0xb6,0x40,0x00,0x00,0x00 - movdqa XMMWORD[rax],xmm1 - movdqa XMMWORD[32+r9*1+rax],xmm0 - movdqa XMMWORD[16+rax],xmm2 - movdqa XMMWORD[48+r9*1+rax],xmm0 - movdqa XMMWORD[32+rax],xmm3 - movdqa XMMWORD[48+rax],xmm4 - lea rax,[64+rax] - sub r11,64 - jnz NEAR $L$mul_by_1 - -DB 102,72,15,110,207 -DB 102,72,15,110,209 -DB 0x67 - mov rbp,rcx -DB 102,73,15,110,218 - lea r11,[GFp_ia32cap_P] - mov r11d,DWORD[8+r11] - and r11d,0x80108 - cmp r11d,0x80108 - jne NEAR $L$from_mont_nox - - lea rdi,[r9*1+rax] - call __bn_sqrx8x_reduction - call __bn_postx4x_internal - - pxor xmm0,xmm0 - lea rax,[48+rsp] - jmp NEAR $L$from_mont_zero - -ALIGN 32 -$L$from_mont_nox: - call __bn_sqr8x_reduction - call __bn_post4x_internal - - pxor xmm0,xmm0 - lea rax,[48+rsp] - jmp NEAR $L$from_mont_zero - -ALIGN 32 -$L$from_mont_zero: - mov rsi,QWORD[40+rsp] - - movdqa XMMWORD[rax],xmm0 - movdqa XMMWORD[16+rax],xmm0 - movdqa XMMWORD[32+rax],xmm0 - movdqa XMMWORD[48+rax],xmm0 - lea rax,[64+rax] - sub r9,32 - jnz NEAR $L$from_mont_zero - - mov rax,1 - mov r15,QWORD[((-48))+rsi] - - mov r14,QWORD[((-40))+rsi] - - mov r13,QWORD[((-32))+rsi] - - mov r12,QWORD[((-24))+rsi] - - mov rbp,QWORD[((-16))+rsi] - - mov rbx,QWORD[((-8))+rsi] - - lea rsp,[rsi] - -$L$from_epilogue: - mov rdi,QWORD[8+rsp] ;WIN64 epilogue - mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret - -$L$SEH_end_bn_from_mont8x: - ALIGN 32 bn_mulx4x_mont_gather5: mov QWORD[8+rsp],rdi ;WIN64 prologue @@ -2415,7 +2232,7 @@ $L$mulx4x_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret $L$SEH_end_bn_mulx4x_mont_gather5: @@ -2443,9 +2260,9 @@ pshufd xmm5,xmm5,0 movdqa xmm4,xmm1 -DB 0x67 + DB 0x67 movdqa xmm2,xmm1 -DB 0x67 + DB 0x67 paddd xmm1,xmm0 pcmpeqd xmm0,xmm5 movdqa xmm3,xmm4 @@ -2506,7 +2323,7 @@ pcmpeqd xmm0,xmm5 movdqa XMMWORD[288+r10],xmm3 movdqa xmm3,xmm4 -DB 0x67 + DB 0x67 paddd xmm2,xmm1 pcmpeqd xmm1,xmm5 movdqa XMMWORD[304+r10],xmm0 @@ -2562,6 +2379,7 @@ por xmm0,xmm2 por xmm1,xmm3 pxor xmm0,xmm1 + pshufd xmm1,xmm0,0x4e por xmm0,xmm1 lea rdi,[256+rdi] @@ -2618,7 +2436,7 @@ mulx rax,r12,QWORD[16+rsi] adcx r12,r14 mulx r14,r13,QWORD[24+rsi] -DB 0x67,0x67 + DB 0x67,0x67 mov rdx,r8 adcx r13,rax adcx r14,rbp @@ -2661,7 +2479,7 @@ $L$mulx4x_outer: lea r10,[((16-256))+rbx] pxor xmm4,xmm4 -DB 0x67,0x67 + DB 0x67,0x67 pxor xmm5,xmm5 movdqa xmm0,XMMWORD[((-128))+rdi] movdqa xmm1,XMMWORD[((-112))+rdi] @@ -2712,6 +2530,7 @@ por xmm4,xmm2 por xmm5,xmm3 por xmm4,xmm5 + pshufd xmm0,xmm4,0x4e por xmm0,xmm4 lea rdi,[256+rdi] @@ -2988,16 +2807,18 @@ $L$powerx5_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret $L$SEH_end_bn_powerx5: -global GFp_bn_sqrx8x_internal +global bn_sqrx8x_internal + ALIGN 32 -GFp_bn_sqrx8x_internal: +bn_sqrx8x_internal: __bn_sqrx8x_internal: +_CET_ENDBR @@ -3045,9 +2866,9 @@ jmp NEAR $L$sqr8x_zero_start ALIGN 32 -DB 0x66,0x66,0x66,0x2e,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00 + DB 0x66,0x66,0x66,0x2e,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00 $L$sqrx8x_zero: -DB 0x3e + DB 0x3e movdqa XMMWORD[rdi],xmm0 movdqa XMMWORD[16+rdi],xmm0 movdqa XMMWORD[32+rdi],xmm0 @@ -3081,10 +2902,10 @@ mulx rax,r9,QWORD[16+rsi] adcx r9,r10 adox r11,rax -DB 0xc4,0xe2,0xab,0xf6,0x86,0x18,0x00,0x00,0x00 + DB 0xc4,0xe2,0xab,0xf6,0x86,0x18,0x00,0x00,0x00 adcx r10,r11 adox r12,rax -DB 0xc4,0xe2,0xa3,0xf6,0x86,0x20,0x00,0x00,0x00 + DB 0xc4,0xe2,0xa3,0xf6,0x86,0x20,0x00,0x00,0x00 adcx r11,r12 adox r13,rax mulx rax,r12,QWORD[40+rsi] @@ -3111,13 +2932,13 @@ mulx rbx,r10,QWORD[32+rsi] adcx r9,r11 adox r10,rax -DB 0xc4,0xe2,0xa3,0xf6,0x86,0x28,0x00,0x00,0x00 + DB 0xc4,0xe2,0xa3,0xf6,0x86,0x28,0x00,0x00,0x00 adcx r10,r12 adox r11,rbx -DB 0xc4,0xe2,0x9b,0xf6,0x9e,0x30,0x00,0x00,0x00 + DB 0xc4,0xe2,0x9b,0xf6,0x9e,0x30,0x00,0x00,0x00 adcx r11,r13 adox r12,r14 -DB 0xc4,0x62,0x93,0xf6,0xb6,0x38,0x00,0x00,0x00 + DB 0xc4,0x62,0x93,0xf6,0xb6,0x38,0x00,0x00,0x00 mov rdx,QWORD[16+rsi] adcx r12,rax adox r13,rbx @@ -3135,11 +2956,11 @@ mulx rbx,r10,QWORD[40+rsi] adcx r9,r11 adox r10,rax -DB 0xc4,0xe2,0xa3,0xf6,0x86,0x30,0x00,0x00,0x00 + DB 0xc4,0xe2,0xa3,0xf6,0x86,0x30,0x00,0x00,0x00 adcx r10,r12 adox r11,r13 -DB 0xc4,0x62,0x9b,0xf6,0xae,0x38,0x00,0x00,0x00 -DB 0x3e + DB 0xc4,0x62,0x9b,0xf6,0xae,0x38,0x00,0x00,0x00 + DB 0x3e mov rdx,QWORD[24+rsi] adcx r11,rbx adox r12,rax @@ -3191,7 +3012,7 @@ adcx r12,rax adox r13,rbp -DB 0x67,0x67 + DB 0x67,0x67 mulx r14,r8,r8 adcx r13,r8 adcx r14,rbp @@ -3241,7 +3062,7 @@ adcx r10,rax adox r11,r12 -DB 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x00 + DB 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x00 adcx r11,rax adox r12,r13 @@ -3255,13 +3076,13 @@ adcx r13,rax adox r14,r15 -DB 0xc4,0x62,0xfb,0xf6,0xbd,0x38,0x00,0x00,0x00 + DB 0xc4,0x62,0xfb,0xf6,0xbd,0x38,0x00,0x00,0x00 mov rdx,QWORD[8+rcx*8+rsi] adcx r14,rax adox r15,rbx adcx r15,rbx -DB 0x67 + DB 0x67 inc rcx jnz NEAR $L$sqrx8x_loop @@ -3271,7 +3092,7 @@ je NEAR $L$sqrx8x_break sub rbx,QWORD[((16+8))+rsp] -DB 0x66 + DB 0x66 mov rdx,QWORD[((-64))+rsi] adcx r8,QWORD[rdi] adcx r9,QWORD[8+rdi] @@ -3282,7 +3103,7 @@ adc r14,QWORD[48+rdi] adc r15,QWORD[56+rdi] lea rdi,[64+rdi] -DB 0x67 + DB 0x67 sbb rax,rax xor ebx,ebx mov QWORD[((16+8))+rsp],rax @@ -3348,8 +3169,8 @@ mulx rbx,rax,rdx adox r12,r12 adcx rax,r10 -DB 0x48,0x8b,0x94,0x0e,0x08,0x00,0x00,0x00 -DB 0x4c,0x8b,0x97,0x20,0x00,0x00,0x00 + DB 0x48,0x8b,0x94,0x0e,0x08,0x00,0x00,0x00 + DB 0x4c,0x8b,0x97,0x20,0x00,0x00,0x00 adox r13,r13 adcx rbx,r11 mov r11,QWORD[40+rdi] @@ -3383,7 +3204,7 @@ adox r10,r10 adcx rax,r12 jrcxz $L$sqrx4x_shift_n_add_break -DB 0x48,0x8b,0x94,0x0e,0x00,0x00,0x00,0x00 + DB 0x48,0x8b,0x94,0x0e,0x00,0x00,0x00,0x00 adox r11,r11 adcx rbx,r13 mov r12,QWORD[80+rdi] @@ -3450,7 +3271,7 @@ adcx r10,rbx adox r11,r12 -DB 0xc4,0x62,0xe3,0xf6,0xa5,0x20,0x00,0x00,0x00 + DB 0xc4,0x62,0xe3,0xf6,0xa5,0x20,0x00,0x00,0x00 mov rax,rdx mov rdx,r8 adcx r11,rbx @@ -3474,7 +3295,7 @@ adox r15,rsi adcx r15,rsi -DB 0x67,0x67,0x67 + DB 0x67,0x67,0x67 inc rcx jnz NEAR $L$sqrx8x_reduce @@ -3519,7 +3340,7 @@ adcx r10,rax adox r11,r12 -DB 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x00 + DB 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x00 adcx r11,rax adox r12,r13 @@ -3608,7 +3429,7 @@ lea rdi,[64+rcx*1+rdi] cmp r8,QWORD[((8+8))+rsp] jb NEAR $L$sqrx8x_reduction_loop - DB 0F3h,0C3h ;repret + ret ALIGN 32 @@ -3661,16 +3482,26 @@ neg r9 - DB 0F3h,0C3h ;repret + ret -global GFp_bn_scatter5 +global bn_scatter5 ALIGN 16 -GFp_bn_scatter5: +bn_scatter5: +_CET_ENDBR cmp edx,0 jz NEAR $L$scatter_epilogue + + + + + + + + + lea r8,[r9*8+r8] $L$scatter: mov rax,QWORD[rcx] @@ -3680,20 +3511,21 @@ sub edx,1 jnz NEAR $L$scatter $L$scatter_epilogue: - DB 0F3h,0C3h ;repret + ret -global GFp_bn_gather5 +global bn_gather5 ALIGN 32 -GFp_bn_gather5: +bn_gather5: -$L$SEH_begin_GFp_bn_gather5: +$L$SEH_begin_bn_gather5: +_CET_ENDBR -DB 0x4c,0x8d,0x14,0x24 + DB 0x4c,0x8d,0x14,0x24 -DB 0x48,0x81,0xec,0x08,0x01,0x00,0x00 + DB 0x48,0x81,0xec,0x08,0x01,0x00,0x00 lea rax,[$L$inc] and rsp,-16 @@ -3838,6 +3670,7 @@ por xmm5,xmm3 por xmm4,xmm5 lea r11,[256+r11] + pshufd xmm0,xmm4,0x4e por xmm0,xmm4 movq QWORD[rcx],xmm0 @@ -3847,20 +3680,23 @@ lea rsp,[r10] - DB 0F3h,0C3h ;repret -$L$SEH_end_GFp_bn_gather5: + ret +$L$SEH_end_bn_gather5: +section .rdata rdata align=8 ALIGN 64 $L$inc: DD 0,0,1,1 DD 2,2,2,2 -DB 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 -DB 112,108,105,99,97,116,105,111,110,32,119,105,116,104,32,115 -DB 99,97,116,116,101,114,47,103,97,116,104,101,114,32,102,111 -DB 114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79 -DB 71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111 -DB 112,101,110,115,115,108,46,111,114,103,62,0 + DB 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 + DB 112,108,105,99,97,116,105,111,110,32,119,105,116,104,32,115 + DB 99,97,116,116,101,114,47,103,97,116,104,101,114,32,102,111 + DB 114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79 + DB 71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111 + DB 112,101,110,115,115,108,46,111,114,103,62,0 +section .text + EXTERN __imp_RtlVirtualUnwind ALIGN 16 @@ -3961,71 +3797,66 @@ pop rbx pop rdi pop rsi - DB 0F3h,0C3h ;repret + ret section .pdata rdata align=4 ALIGN 4 - DD $L$SEH_begin_GFp_bn_mul_mont_gather5 wrt ..imagebase - DD $L$SEH_end_GFp_bn_mul_mont_gather5 wrt ..imagebase - DD $L$SEH_info_GFp_bn_mul_mont_gather5 wrt ..imagebase + DD $L$SEH_begin_bn_mul_mont_gather5 wrt ..imagebase + DD $L$SEH_end_bn_mul_mont_gather5 wrt ..imagebase + DD $L$SEH_info_bn_mul_mont_gather5 wrt ..imagebase DD $L$SEH_begin_bn_mul4x_mont_gather5 wrt ..imagebase DD $L$SEH_end_bn_mul4x_mont_gather5 wrt ..imagebase DD $L$SEH_info_bn_mul4x_mont_gather5 wrt ..imagebase - DD $L$SEH_begin_GFp_bn_power5 wrt ..imagebase - DD $L$SEH_end_GFp_bn_power5 wrt ..imagebase - DD $L$SEH_info_GFp_bn_power5 wrt ..imagebase - - DD $L$SEH_begin_bn_from_mont8x wrt ..imagebase - DD $L$SEH_end_bn_from_mont8x wrt ..imagebase - DD $L$SEH_info_bn_from_mont8x wrt ..imagebase + DD $L$SEH_begin_bn_power5 wrt ..imagebase + DD $L$SEH_end_bn_power5 wrt ..imagebase + DD $L$SEH_info_bn_power5 wrt ..imagebase DD $L$SEH_begin_bn_mulx4x_mont_gather5 wrt ..imagebase DD $L$SEH_end_bn_mulx4x_mont_gather5 wrt ..imagebase DD $L$SEH_info_bn_mulx4x_mont_gather5 wrt ..imagebase DD $L$SEH_begin_bn_powerx5 wrt ..imagebase DD $L$SEH_end_bn_powerx5 wrt ..imagebase - DD $L$SEH_info_GFp_bn_powerx5 wrt ..imagebase - DD $L$SEH_begin_GFp_bn_gather5 wrt ..imagebase - DD $L$SEH_end_GFp_bn_gather5 wrt ..imagebase - DD $L$SEH_info_GFp_bn_gather5 wrt ..imagebase + DD $L$SEH_info_bn_powerx5 wrt ..imagebase + DD $L$SEH_begin_bn_gather5 wrt ..imagebase + DD $L$SEH_end_bn_gather5 wrt ..imagebase + DD $L$SEH_info_bn_gather5 wrt ..imagebase section .xdata rdata align=8 ALIGN 8 -$L$SEH_info_GFp_bn_mul_mont_gather5: -DB 9,0,0,0 +$L$SEH_info_bn_mul_mont_gather5: + DB 9,0,0,0 DD mul_handler wrt ..imagebase DD $L$mul_body wrt ..imagebase,$L$mul_body wrt ..imagebase,$L$mul_epilogue wrt ..imagebase ALIGN 8 $L$SEH_info_bn_mul4x_mont_gather5: -DB 9,0,0,0 + DB 9,0,0,0 DD mul_handler wrt ..imagebase DD $L$mul4x_prologue wrt ..imagebase,$L$mul4x_body wrt ..imagebase,$L$mul4x_epilogue wrt ..imagebase ALIGN 8 -$L$SEH_info_GFp_bn_power5: -DB 9,0,0,0 +$L$SEH_info_bn_power5: + DB 9,0,0,0 DD mul_handler wrt ..imagebase DD $L$power5_prologue wrt ..imagebase,$L$power5_body wrt ..imagebase,$L$power5_epilogue wrt ..imagebase ALIGN 8 -$L$SEH_info_bn_from_mont8x: -DB 9,0,0,0 - DD mul_handler wrt ..imagebase - DD $L$from_prologue wrt ..imagebase,$L$from_body wrt ..imagebase,$L$from_epilogue wrt ..imagebase -ALIGN 8 $L$SEH_info_bn_mulx4x_mont_gather5: -DB 9,0,0,0 + DB 9,0,0,0 DD mul_handler wrt ..imagebase DD $L$mulx4x_prologue wrt ..imagebase,$L$mulx4x_body wrt ..imagebase,$L$mulx4x_epilogue wrt ..imagebase ALIGN 8 -$L$SEH_info_GFp_bn_powerx5: -DB 9,0,0,0 +$L$SEH_info_bn_powerx5: + DB 9,0,0,0 DD mul_handler wrt ..imagebase DD $L$powerx5_prologue wrt ..imagebase,$L$powerx5_body wrt ..imagebase,$L$powerx5_epilogue wrt ..imagebase ALIGN 8 -$L$SEH_info_GFp_bn_gather5: -DB 0x01,0x0b,0x03,0x0a -DB 0x0b,0x01,0x21,0x00 -DB 0x04,0xa3,0x00,0x00 +$L$SEH_info_bn_gather5: + DB 0x01,0x0b,0x03,0x0a + DB 0x0b,0x01,0x21,0x00 + DB 0x04,0xa3,0x00,0x00 ALIGN 8 +%else +; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 +ret +%endif diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/x86_64-mont-nasm.asm temporalio-1.3.0/vendor/ring/pregenerated/tmp/x86_64-mont-nasm.asm --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/x86_64-mont-nasm.asm 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/x86_64-mont-nasm.asm 2023-10-30 19:40:00.000000000 +0000 @@ -1,23 +1,27 @@ ; This file is generated from a similarly-named Perl script in the BoringSSL ; source tree. Do not edit by hand. +%ifidn __OUTPUT_FORMAT__, win64 default rel %define XMMWORD %define YMMWORD %define ZMMWORD +%define _CET_ENDBR + +%include "ring_core_generated/prefix_symbols_nasm.inc" section .text code align=64 -EXTERN GFp_ia32cap_P +EXTERN OPENSSL_ia32cap_P -global GFp_bn_mul_mont +global bn_mul_mont ALIGN 16 -GFp_bn_mul_mont: +bn_mul_mont: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_GFp_bn_mul_mont: +$L$SEH_begin_bn_mul_mont: mov rdi,rcx mov rsi,rdx mov rdx,r8 @@ -27,6 +31,7 @@ +_CET_ENDBR mov r9d,r9d mov rax,rsp @@ -34,7 +39,8 @@ jnz NEAR $L$mul_enter cmp r9d,8 jb NEAR $L$mul_enter - mov r11d,DWORD[((GFp_ia32cap_P+8))] + lea r11,[OPENSSL_ia32cap_P] + mov r11d,DWORD[8+r11] cmp rdx,rsi jne NEAR $L$mul4x_enter test r9d,7 @@ -274,9 +280,9 @@ $L$mul_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret -$L$SEH_end_GFp_bn_mul_mont: +$L$SEH_end_bn_mul_mont: ALIGN 16 bn_mul4x_mont: @@ -722,11 +728,11 @@ $L$mul4x_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret $L$SEH_end_bn_mul4x_mont: -EXTERN GFp_bn_sqrx8x_internal -EXTERN GFp_bn_sqr8x_internal +EXTERN bn_sqrx8x_internal +EXTERN bn_sqr8x_internal ALIGN 32 @@ -821,12 +827,13 @@ pxor xmm0,xmm0 DB 102,72,15,110,207 DB 102,73,15,110,218 - mov eax,DWORD[((GFp_ia32cap_P+8))] + lea rax,[OPENSSL_ia32cap_P] + mov eax,DWORD[8+rax] and eax,0x80100 cmp eax,0x80100 jne NEAR $L$sqr8x_nox - call GFp_bn_sqrx8x_internal + call bn_sqrx8x_internal @@ -840,7 +847,7 @@ ALIGN 32 $L$sqr8x_nox: - call GFp_bn_sqr8x_internal + call bn_sqr8x_internal @@ -926,7 +933,7 @@ $L$sqr8x_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret $L$SEH_end_bn_sqr8x_mont: @@ -1040,7 +1047,7 @@ mulx r11,rax,QWORD[8+rcx] adcx r10,rax adox r11,r12 -DB 0xc4,0x62,0xfb,0xf6,0xa1,0x10,0x00,0x00,0x00 + DB 0xc4,0x62,0xfb,0xf6,0xa1,0x10,0x00,0x00,0x00 mov rdi,QWORD[48+rsp] mov QWORD[((-32))+rbx],r10 adcx r11,rax @@ -1065,7 +1072,7 @@ mulx rax,r12,QWORD[16+rsi] adcx r12,r14 mulx r14,r13,QWORD[24+rsi] -DB 0x67,0x67 + DB 0x67,0x67 mov rdx,r8 adcx r13,rax adcx r14,rbp @@ -1296,14 +1303,14 @@ $L$mulx4x_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret + ret $L$SEH_end_bn_mulx4x_mont: -DB 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 -DB 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56 -DB 54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83 -DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 -DB 115,108,46,111,114,103,62,0 + DB 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 + DB 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56 + DB 54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83 + DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 + DB 115,108,46,111,114,103,62,0 ALIGN 16 EXTERN __imp_RtlVirtualUnwind @@ -1434,14 +1441,14 @@ pop rbx pop rdi pop rsi - DB 0F3h,0C3h ;repret + ret section .pdata rdata align=4 ALIGN 4 - DD $L$SEH_begin_GFp_bn_mul_mont wrt ..imagebase - DD $L$SEH_end_GFp_bn_mul_mont wrt ..imagebase - DD $L$SEH_info_GFp_bn_mul_mont wrt ..imagebase + DD $L$SEH_begin_bn_mul_mont wrt ..imagebase + DD $L$SEH_end_bn_mul_mont wrt ..imagebase + DD $L$SEH_info_bn_mul_mont wrt ..imagebase DD $L$SEH_begin_bn_mul4x_mont wrt ..imagebase DD $L$SEH_end_bn_mul4x_mont wrt ..imagebase @@ -1455,21 +1462,25 @@ DD $L$SEH_info_bn_mulx4x_mont wrt ..imagebase section .xdata rdata align=8 ALIGN 8 -$L$SEH_info_GFp_bn_mul_mont: -DB 9,0,0,0 +$L$SEH_info_bn_mul_mont: + DB 9,0,0,0 DD mul_handler wrt ..imagebase DD $L$mul_body wrt ..imagebase,$L$mul_epilogue wrt ..imagebase $L$SEH_info_bn_mul4x_mont: -DB 9,0,0,0 + DB 9,0,0,0 DD mul_handler wrt ..imagebase DD $L$mul4x_body wrt ..imagebase,$L$mul4x_epilogue wrt ..imagebase $L$SEH_info_bn_sqr8x_mont: -DB 9,0,0,0 + DB 9,0,0,0 DD sqr_handler wrt ..imagebase DD $L$sqr8x_prologue wrt ..imagebase,$L$sqr8x_body wrt ..imagebase,$L$sqr8x_epilogue wrt ..imagebase ALIGN 8 $L$SEH_info_bn_mulx4x_mont: -DB 9,0,0,0 + DB 9,0,0,0 DD sqr_handler wrt ..imagebase DD $L$mulx4x_prologue wrt ..imagebase,$L$mulx4x_body wrt ..imagebase,$L$mulx4x_epilogue wrt ..imagebase ALIGN 8 +%else +; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 +ret +%endif diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/tmp/x86-mont-win32n.asm temporalio-1.3.0/vendor/ring/pregenerated/tmp/x86-mont-win32n.asm --- temporalio-1.3.0/vendor/ring/pregenerated/tmp/x86-mont-win32n.asm 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/tmp/x86-mont-win32n.asm 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,8 @@ ; This file is generated from a similarly-named Perl script in the BoringSSL ; source tree. Do not edit by hand. -%ifdef BORINGSSL_PREFIX -%include "boringssl_prefix_symbols_nasm.inc" -%endif +%include "ring_core_generated/prefix_symbols_nasm.inc" +%ifidn __OUTPUT_FORMAT__, win32 %ifidn __OUTPUT_FORMAT__,obj section code use32 class=code align=64 %elifidn __OUTPUT_FORMAT__,win32 @@ -12,11 +11,11 @@ %else section .text code %endif -;extern _GFp_ia32cap_P -global _GFp_bn_mul_mont +;extern _OPENSSL_ia32cap_P +global _bn_mul_mont align 16 -_GFp_bn_mul_mont: -L$_GFp_bn_mul_mont_begin: +_bn_mul_mont: +L$_bn_mul_mont_begin: push ebp push ebx push esi @@ -67,7 +66,7 @@ mov DWORD [20+esp],esi lea ebx,[edi-3] mov DWORD [24+esp],edx - lea eax,[_GFp_ia32cap_P] + lea eax,[_OPENSSL_ia32cap_P] bt DWORD [eax],26 mov eax,-1 movd mm7,eax @@ -224,4 +223,8 @@ db 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 db 111,114,103,62,0 segment .bss -common _GFp_ia32cap_P 16 +common _OPENSSL_ia32cap_P 16 +%else +; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 +ret +%endif diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv7-ios32.S temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv7-ios32.S --- temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv7-ios32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv7-ios32.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,769 +0,0 @@ -// This file is generated from a similarly-named Perl script in the BoringSSL -// source tree. Do not edit by hand. - -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif - -#if !defined(OPENSSL_NO_ASM) -.syntax unified - - - - -#if defined(__thumb2__) -.thumb -#else -.code 32 -#endif - -.text - - -.align 7 @ totally strategic alignment -_vpaes_consts: -Lk_mc_forward:@ mc_forward -.quad 0x0407060500030201, 0x0C0F0E0D080B0A09 -.quad 0x080B0A0904070605, 0x000302010C0F0E0D -.quad 0x0C0F0E0D080B0A09, 0x0407060500030201 -.quad 0x000302010C0F0E0D, 0x080B0A0904070605 -Lk_mc_backward:@ mc_backward -.quad 0x0605040702010003, 0x0E0D0C0F0A09080B -.quad 0x020100030E0D0C0F, 0x0A09080B06050407 -.quad 0x0E0D0C0F0A09080B, 0x0605040702010003 -.quad 0x0A09080B06050407, 0x020100030E0D0C0F -Lk_sr:@ sr -.quad 0x0706050403020100, 0x0F0E0D0C0B0A0908 -.quad 0x030E09040F0A0500, 0x0B06010C07020D08 -.quad 0x0F060D040B020900, 0x070E050C030A0108 -.quad 0x0B0E0104070A0D00, 0x0306090C0F020508 - -@ -@ "Hot" constants -@ -Lk_inv:@ inv, inva -.quad 0x0E05060F0D080180, 0x040703090A0B0C02 -.quad 0x01040A060F0B0780, 0x030D0E0C02050809 -Lk_ipt:@ input transform (lo, hi) -.quad 0xC2B2E8985A2A7000, 0xCABAE09052227808 -.quad 0x4C01307D317C4D00, 0xCD80B1FCB0FDCC81 -Lk_sbo:@ sbou, sbot -.quad 0xD0D26D176FBDC700, 0x15AABF7AC502A878 -.quad 0xCFE474A55FBB6A00, 0x8E1E90D1412B35FA -Lk_sb1:@ sb1u, sb1t -.quad 0x3618D415FAE22300, 0x3BF7CCC10D2ED9EF -.quad 0xB19BE18FCB503E00, 0xA5DF7A6E142AF544 -Lk_sb2:@ sb2u, sb2t -.quad 0x69EB88400AE12900, 0xC2A163C8AB82234A -.quad 0xE27A93C60B712400, 0x5EB7E955BC982FCD - -.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,65,82,77,118,55,32,78,69,79,78,44,32,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0 -.align 2 - -.align 6 -@@ -@@ _aes_preheat -@@ -@@ Fills q9-q15 as specified below. -@@ -#ifdef __thumb2__ -.thumb_func _vpaes_preheat -#endif -.align 4 -_vpaes_preheat: - adr r10, Lk_inv - vmov.i8 q9, #0x0f @ Lk_s0F - vld1.64 {q10,q11}, [r10]! @ Lk_inv - add r10, r10, #64 @ Skip Lk_ipt, Lk_sbo - vld1.64 {q12,q13}, [r10]! @ Lk_sb1 - vld1.64 {q14,q15}, [r10] @ Lk_sb2 - bx lr - -@@ -@@ _aes_encrypt_core -@@ -@@ AES-encrypt q0. -@@ -@@ Inputs: -@@ q0 = input -@@ q9-q15 as in _vpaes_preheat -@@ [r2] = scheduled keys -@@ -@@ Output in q0 -@@ Clobbers q1-q5, r8-r11 -@@ Preserves q6-q8 so you get some local vectors -@@ -@@ -#ifdef __thumb2__ -.thumb_func _vpaes_encrypt_core -#endif -.align 4 -_vpaes_encrypt_core: - mov r9, r2 - ldr r8, [r2,#240] @ pull rounds - adr r11, Lk_ipt - @ vmovdqa .Lk_ipt(%rip), %xmm2 # iptlo - @ vmovdqa .Lk_ipt+16(%rip), %xmm3 # ipthi - vld1.64 {q2, q3}, [r11] - adr r11, Lk_mc_forward+16 - vld1.64 {q5}, [r9]! @ vmovdqu (%r9), %xmm5 # round0 key - vand q1, q0, q9 @ vpand %xmm9, %xmm0, %xmm1 - vshr.u8 q0, q0, #4 @ vpsrlb $4, %xmm0, %xmm0 - vtbl.8 d2, {q2}, d2 @ vpshufb %xmm1, %xmm2, %xmm1 - vtbl.8 d3, {q2}, d3 - vtbl.8 d4, {q3}, d0 @ vpshufb %xmm0, %xmm3, %xmm2 - vtbl.8 d5, {q3}, d1 - veor q0, q1, q5 @ vpxor %xmm5, %xmm1, %xmm0 - veor q0, q0, q2 @ vpxor %xmm2, %xmm0, %xmm0 - - @ .Lenc_entry ends with a bnz instruction which is normally paired with - @ subs in .Lenc_loop. - tst r8, r8 - b Lenc_entry - -.align 4 -Lenc_loop: - @ middle of middle round - add r10, r11, #0x40 - vtbl.8 d8, {q13}, d4 @ vpshufb %xmm2, %xmm13, %xmm4 # 4 = sb1u - vtbl.8 d9, {q13}, d5 - vld1.64 {q1}, [r11]! @ vmovdqa -0x40(%r11,%r10), %xmm1 # Lk_mc_forward[] - vtbl.8 d0, {q12}, d6 @ vpshufb %xmm3, %xmm12, %xmm0 # 0 = sb1t - vtbl.8 d1, {q12}, d7 - veor q4, q4, q5 @ vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k - vtbl.8 d10, {q15}, d4 @ vpshufb %xmm2, %xmm15, %xmm5 # 4 = sb2u - vtbl.8 d11, {q15}, d5 - veor q0, q0, q4 @ vpxor %xmm4, %xmm0, %xmm0 # 0 = A - vtbl.8 d4, {q14}, d6 @ vpshufb %xmm3, %xmm14, %xmm2 # 2 = sb2t - vtbl.8 d5, {q14}, d7 - vld1.64 {q4}, [r10] @ vmovdqa (%r11,%r10), %xmm4 # Lk_mc_backward[] - vtbl.8 d6, {q0}, d2 @ vpshufb %xmm1, %xmm0, %xmm3 # 0 = B - vtbl.8 d7, {q0}, d3 - veor q2, q2, q5 @ vpxor %xmm5, %xmm2, %xmm2 # 2 = 2A - @ Write to q5 instead of q0, so the table and destination registers do - @ not overlap. - vtbl.8 d10, {q0}, d8 @ vpshufb %xmm4, %xmm0, %xmm0 # 3 = D - vtbl.8 d11, {q0}, d9 - veor q3, q3, q2 @ vpxor %xmm2, %xmm3, %xmm3 # 0 = 2A+B - vtbl.8 d8, {q3}, d2 @ vpshufb %xmm1, %xmm3, %xmm4 # 0 = 2B+C - vtbl.8 d9, {q3}, d3 - @ Here we restore the original q0/q5 usage. - veor q0, q5, q3 @ vpxor %xmm3, %xmm0, %xmm0 # 3 = 2A+B+D - and r11, r11, #~(1<<6) @ and $0x30, %r11 # ... mod 4 - veor q0, q0, q4 @ vpxor %xmm4, %xmm0, %xmm0 # 0 = 2A+3B+C+D - subs r8, r8, #1 @ nr-- - -Lenc_entry: - @ top of round - vand q1, q0, q9 @ vpand %xmm0, %xmm9, %xmm1 # 0 = k - vshr.u8 q0, q0, #4 @ vpsrlb $4, %xmm0, %xmm0 # 1 = i - vtbl.8 d10, {q11}, d2 @ vpshufb %xmm1, %xmm11, %xmm5 # 2 = a/k - vtbl.8 d11, {q11}, d3 - veor q1, q1, q0 @ vpxor %xmm0, %xmm1, %xmm1 # 0 = j - vtbl.8 d6, {q10}, d0 @ vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i - vtbl.8 d7, {q10}, d1 - vtbl.8 d8, {q10}, d2 @ vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j - vtbl.8 d9, {q10}, d3 - veor q3, q3, q5 @ vpxor %xmm5, %xmm3, %xmm3 # 3 = iak = 1/i + a/k - veor q4, q4, q5 @ vpxor %xmm5, %xmm4, %xmm4 # 4 = jak = 1/j + a/k - vtbl.8 d4, {q10}, d6 @ vpshufb %xmm3, %xmm10, %xmm2 # 2 = 1/iak - vtbl.8 d5, {q10}, d7 - vtbl.8 d6, {q10}, d8 @ vpshufb %xmm4, %xmm10, %xmm3 # 3 = 1/jak - vtbl.8 d7, {q10}, d9 - veor q2, q2, q1 @ vpxor %xmm1, %xmm2, %xmm2 # 2 = io - veor q3, q3, q0 @ vpxor %xmm0, %xmm3, %xmm3 # 3 = jo - vld1.64 {q5}, [r9]! @ vmovdqu (%r9), %xmm5 - bne Lenc_loop - - @ middle of last round - add r10, r11, #0x80 - - adr r11, Lk_sbo - @ Read to q1 instead of q4, so the vtbl.8 instruction below does not - @ overlap table and destination registers. - vld1.64 {q1}, [r11]! @ vmovdqa -0x60(%r10), %xmm4 # 3 : sbou - vld1.64 {q0}, [r11] @ vmovdqa -0x50(%r10), %xmm0 # 0 : sbot Lk_sbo+16 - vtbl.8 d8, {q1}, d4 @ vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbou - vtbl.8 d9, {q1}, d5 - vld1.64 {q1}, [r10] @ vmovdqa 0x40(%r11,%r10), %xmm1 # Lk_sr[] - @ Write to q2 instead of q0 below, to avoid overlapping table and - @ destination registers. - vtbl.8 d4, {q0}, d6 @ vpshufb %xmm3, %xmm0, %xmm0 # 0 = sb1t - vtbl.8 d5, {q0}, d7 - veor q4, q4, q5 @ vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k - veor q2, q2, q4 @ vpxor %xmm4, %xmm0, %xmm0 # 0 = A - @ Here we restore the original q0/q2 usage. - vtbl.8 d0, {q2}, d2 @ vpshufb %xmm1, %xmm0, %xmm0 - vtbl.8 d1, {q2}, d3 - bx lr - - -.globl _GFp_vpaes_encrypt -.private_extern _GFp_vpaes_encrypt -#ifdef __thumb2__ -.thumb_func _GFp_vpaes_encrypt -#endif -.align 4 -_GFp_vpaes_encrypt: - @ _vpaes_encrypt_core uses r8-r11. Round up to r7-r11 to maintain stack - @ alignment. - stmdb sp!, {r7,r8,r9,r10,r11,lr} - @ _vpaes_encrypt_core uses q4-q5 (d8-d11), which are callee-saved. - vstmdb sp!, {d8,d9,d10,d11} - - vld1.64 {q0}, [r0] - bl _vpaes_preheat - bl _vpaes_encrypt_core - vst1.64 {q0}, [r1] - - vldmia sp!, {d8,d9,d10,d11} - ldmia sp!, {r7,r8,r9,r10,r11, pc} @ return - -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -@@ @@ -@@ AES key schedule @@ -@@ @@ -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - -@ This function diverges from both x86_64 and armv7 in which constants are -@ pinned. x86_64 has a common preheat function for all operations. aarch64 -@ separates them because it has enough registers to pin nearly all constants. -@ armv7 does not have enough registers, but needing explicit loads and stores -@ also complicates using x86_64's register allocation directly. -@ -@ We pin some constants for convenience and leave q14 and q15 free to load -@ others on demand. - -@ -@ Key schedule constants -@ - -.align 4 -_vpaes_key_consts: -Lk_rcon:@ rcon -.quad 0x1F8391B9AF9DEEB6, 0x702A98084D7C7D81 - -Lk_opt:@ output transform -.quad 0xFF9F4929D6B66000, 0xF7974121DEBE6808 -.quad 0x01EDBD5150BCEC00, 0xE10D5DB1B05C0CE0 -Lk_deskew:@ deskew tables: inverts the sbox's "skew" -.quad 0x07E4A34047A4E300, 0x1DFEB95A5DBEF91A -.quad 0x5F36B5DC83EA6900, 0x2841C2ABF49D1E77 - - -#ifdef __thumb2__ -.thumb_func _vpaes_key_preheat -#endif -.align 4 -_vpaes_key_preheat: - adr r11, Lk_rcon - vmov.i8 q12, #0x5b @ Lk_s63 - adr r10, Lk_inv @ Must be aligned to 8 mod 16. - vmov.i8 q9, #0x0f @ Lk_s0F - vld1.64 {q10,q11}, [r10] @ Lk_inv - vld1.64 {q8}, [r11] @ Lk_rcon - bx lr - - -#ifdef __thumb2__ -.thumb_func _vpaes_schedule_core -#endif -.align 4 -_vpaes_schedule_core: - @ We only need to save lr, but ARM requires an 8-byte stack alignment, - @ so save an extra register. - stmdb sp!, {r3,lr} - - bl _vpaes_key_preheat @ load the tables - - adr r11, Lk_ipt @ Must be aligned to 8 mod 16. - vld1.64 {q0}, [r0]! @ vmovdqu (%rdi), %xmm0 # load key (unaligned) - - @ input transform - @ Use q4 here rather than q3 so .Lschedule_am_decrypting does not - @ overlap table and destination. - vmov q4, q0 @ vmovdqa %xmm0, %xmm3 - bl _vpaes_schedule_transform - adr r10, Lk_sr @ Must be aligned to 8 mod 16. - vmov q7, q0 @ vmovdqa %xmm0, %xmm7 - - add r8, r8, r10 - - @ encrypting, output zeroth round key after transform - vst1.64 {q0}, [r2] @ vmovdqu %xmm0, (%rdx) - - @ *ring*: Decryption removed. - -Lschedule_go: - cmp r1, #192 @ cmp $192, %esi - bhi Lschedule_256 - @ 128: fall though - -@@ -@@ .schedule_128 -@@ -@@ 128-bit specific part of key schedule. -@@ -@@ This schedule is really simple, because all its parts -@@ are accomplished by the subroutines. -@@ -Lschedule_128: - mov r0, #10 @ mov $10, %esi - -Loop_schedule_128: - bl _vpaes_schedule_round - subs r0, r0, #1 @ dec %esi - beq Lschedule_mangle_last - bl _vpaes_schedule_mangle @ write output - b Loop_schedule_128 - -@@ -@@ .aes_schedule_256 -@@ -@@ 256-bit specific part of key schedule. -@@ -@@ The structure here is very similar to the 128-bit -@@ schedule, but with an additional "low side" in -@@ q6. The low side's rounds are the same as the -@@ high side's, except no rcon and no rotation. -@@ -.align 4 -Lschedule_256: - vld1.64 {q0}, [r0] @ vmovdqu 16(%rdi),%xmm0 # load key part 2 (unaligned) - bl _vpaes_schedule_transform @ input transform - mov r0, #7 @ mov $7, %esi - -Loop_schedule_256: - bl _vpaes_schedule_mangle @ output low result - vmov q6, q0 @ vmovdqa %xmm0, %xmm6 # save cur_lo in xmm6 - - @ high round - bl _vpaes_schedule_round - subs r0, r0, #1 @ dec %esi - beq Lschedule_mangle_last - bl _vpaes_schedule_mangle - - @ low round. swap xmm7 and xmm6 - vdup.32 q0, d1[1] @ vpshufd $0xFF, %xmm0, %xmm0 - vmov.i8 q4, #0 - vmov q5, q7 @ vmovdqa %xmm7, %xmm5 - vmov q7, q6 @ vmovdqa %xmm6, %xmm7 - bl _vpaes_schedule_low_round - vmov q7, q5 @ vmovdqa %xmm5, %xmm7 - - b Loop_schedule_256 - -@@ -@@ .aes_schedule_mangle_last -@@ -@@ Mangler for last round of key schedule -@@ Mangles q0 -@@ when encrypting, outputs out(q0) ^ 63 -@@ when decrypting, outputs unskew(q0) -@@ -@@ Always called right before return... jumps to cleanup and exits -@@ -.align 4 -Lschedule_mangle_last: - @ schedule last round key from xmm0 - adr r11, Lk_deskew @ lea Lk_deskew(%rip),%r11 # prepare to deskew - - @ encrypting - vld1.64 {q1}, [r8] @ vmovdqa (%r8,%r10),%xmm1 - adr r11, Lk_opt @ lea Lk_opt(%rip), %r11 # prepare to output transform - add r2, r2, #32 @ add $32, %rdx - vmov q2, q0 - vtbl.8 d0, {q2}, d2 @ vpshufb %xmm1, %xmm0, %xmm0 # output permute - vtbl.8 d1, {q2}, d3 - -Lschedule_mangle_last_dec: - sub r2, r2, #16 @ add $-16, %rdx - veor q0, q0, q12 @ vpxor Lk_s63(%rip), %xmm0, %xmm0 - bl _vpaes_schedule_transform @ output transform - vst1.64 {q0}, [r2] @ vmovdqu %xmm0, (%rdx) # save last key - - @ cleanup - veor q0, q0, q0 @ vpxor %xmm0, %xmm0, %xmm0 - veor q1, q1, q1 @ vpxor %xmm1, %xmm1, %xmm1 - veor q2, q2, q2 @ vpxor %xmm2, %xmm2, %xmm2 - veor q3, q3, q3 @ vpxor %xmm3, %xmm3, %xmm3 - veor q4, q4, q4 @ vpxor %xmm4, %xmm4, %xmm4 - veor q5, q5, q5 @ vpxor %xmm5, %xmm5, %xmm5 - veor q6, q6, q6 @ vpxor %xmm6, %xmm6, %xmm6 - veor q7, q7, q7 @ vpxor %xmm7, %xmm7, %xmm7 - ldmia sp!, {r3,pc} @ return - - -@@ -@@ .aes_schedule_round -@@ -@@ Runs one main round of the key schedule on q0, q7 -@@ -@@ Specifically, runs subbytes on the high dword of q0 -@@ then rotates it by one byte and xors into the low dword of -@@ q7. -@@ -@@ Adds rcon from low byte of q8, then rotates q8 for -@@ next rcon. -@@ -@@ Smears the dwords of q7 by xoring the low into the -@@ second low, result into third, result into highest. -@@ -@@ Returns results in q7 = q0. -@@ Clobbers q1-q4, r11. -@@ -#ifdef __thumb2__ -.thumb_func _vpaes_schedule_round -#endif -.align 4 -_vpaes_schedule_round: - @ extract rcon from xmm8 - vmov.i8 q4, #0 @ vpxor %xmm4, %xmm4, %xmm4 - vext.8 q1, q8, q4, #15 @ vpalignr $15, %xmm8, %xmm4, %xmm1 - vext.8 q8, q8, q8, #15 @ vpalignr $15, %xmm8, %xmm8, %xmm8 - veor q7, q7, q1 @ vpxor %xmm1, %xmm7, %xmm7 - - @ rotate - vdup.32 q0, d1[1] @ vpshufd $0xFF, %xmm0, %xmm0 - vext.8 q0, q0, q0, #1 @ vpalignr $1, %xmm0, %xmm0, %xmm0 - - @ fall through... - - @ low round: same as high round, but no rotation and no rcon. -_vpaes_schedule_low_round: - @ The x86_64 version pins .Lk_sb1 in %xmm13 and .Lk_sb1+16 in %xmm12. - @ We pin other values in _vpaes_key_preheat, so load them now. - adr r11, Lk_sb1 - vld1.64 {q14,q15}, [r11] - - @ smear xmm7 - vext.8 q1, q4, q7, #12 @ vpslldq $4, %xmm7, %xmm1 - veor q7, q7, q1 @ vpxor %xmm1, %xmm7, %xmm7 - vext.8 q4, q4, q7, #8 @ vpslldq $8, %xmm7, %xmm4 - - @ subbytes - vand q1, q0, q9 @ vpand %xmm9, %xmm0, %xmm1 # 0 = k - vshr.u8 q0, q0, #4 @ vpsrlb $4, %xmm0, %xmm0 # 1 = i - veor q7, q7, q4 @ vpxor %xmm4, %xmm7, %xmm7 - vtbl.8 d4, {q11}, d2 @ vpshufb %xmm1, %xmm11, %xmm2 # 2 = a/k - vtbl.8 d5, {q11}, d3 - veor q1, q1, q0 @ vpxor %xmm0, %xmm1, %xmm1 # 0 = j - vtbl.8 d6, {q10}, d0 @ vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i - vtbl.8 d7, {q10}, d1 - veor q3, q3, q2 @ vpxor %xmm2, %xmm3, %xmm3 # 3 = iak = 1/i + a/k - vtbl.8 d8, {q10}, d2 @ vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j - vtbl.8 d9, {q10}, d3 - veor q7, q7, q12 @ vpxor Lk_s63(%rip), %xmm7, %xmm7 - vtbl.8 d6, {q10}, d6 @ vpshufb %xmm3, %xmm10, %xmm3 # 2 = 1/iak - vtbl.8 d7, {q10}, d7 - veor q4, q4, q2 @ vpxor %xmm2, %xmm4, %xmm4 # 4 = jak = 1/j + a/k - vtbl.8 d4, {q10}, d8 @ vpshufb %xmm4, %xmm10, %xmm2 # 3 = 1/jak - vtbl.8 d5, {q10}, d9 - veor q3, q3, q1 @ vpxor %xmm1, %xmm3, %xmm3 # 2 = io - veor q2, q2, q0 @ vpxor %xmm0, %xmm2, %xmm2 # 3 = jo - vtbl.8 d8, {q15}, d6 @ vpshufb %xmm3, %xmm13, %xmm4 # 4 = sbou - vtbl.8 d9, {q15}, d7 - vtbl.8 d2, {q14}, d4 @ vpshufb %xmm2, %xmm12, %xmm1 # 0 = sb1t - vtbl.8 d3, {q14}, d5 - veor q1, q1, q4 @ vpxor %xmm4, %xmm1, %xmm1 # 0 = sbox output - - @ add in smeared stuff - veor q0, q1, q7 @ vpxor %xmm7, %xmm1, %xmm0 - veor q7, q1, q7 @ vmovdqa %xmm0, %xmm7 - bx lr - - -@@ -@@ .aes_schedule_transform -@@ -@@ Linear-transform q0 according to tables at [r11] -@@ -@@ Requires that q9 = 0x0F0F... as in preheat -@@ Output in q0 -@@ Clobbers q1, q2, q14, q15 -@@ -#ifdef __thumb2__ -.thumb_func _vpaes_schedule_transform -#endif -.align 4 -_vpaes_schedule_transform: - vld1.64 {q14,q15}, [r11] @ vmovdqa (%r11), %xmm2 # lo - @ vmovdqa 16(%r11), %xmm1 # hi - vand q1, q0, q9 @ vpand %xmm9, %xmm0, %xmm1 - vshr.u8 q0, q0, #4 @ vpsrlb $4, %xmm0, %xmm0 - vtbl.8 d4, {q14}, d2 @ vpshufb %xmm1, %xmm2, %xmm2 - vtbl.8 d5, {q14}, d3 - vtbl.8 d0, {q15}, d0 @ vpshufb %xmm0, %xmm1, %xmm0 - vtbl.8 d1, {q15}, d1 - veor q0, q0, q2 @ vpxor %xmm2, %xmm0, %xmm0 - bx lr - - -@@ -@@ .aes_schedule_mangle -@@ -@@ Mangles q0 from (basis-transformed) standard version -@@ to our version. -@@ -@@ On encrypt, -@@ xor with 0x63 -@@ multiply by circulant 0,1,1,1 -@@ apply shiftrows transform -@@ -@@ On decrypt, -@@ xor with 0x63 -@@ multiply by "inverse mixcolumns" circulant E,B,D,9 -@@ deskew -@@ apply shiftrows transform -@@ -@@ -@@ Writes out to [r2], and increments or decrements it -@@ Keeps track of round number mod 4 in r8 -@@ Preserves q0 -@@ Clobbers q1-q5 -@@ -#ifdef __thumb2__ -.thumb_func _vpaes_schedule_mangle -#endif -.align 4 -_vpaes_schedule_mangle: - tst r3, r3 - vmov q4, q0 @ vmovdqa %xmm0, %xmm4 # save xmm0 for later - adr r11, Lk_mc_forward @ Must be aligned to 8 mod 16. - vld1.64 {q5}, [r11] @ vmovdqa Lk_mc_forward(%rip),%xmm5 - - @ encrypting - @ Write to q2 so we do not overlap table and destination below. - veor q2, q0, q12 @ vpxor Lk_s63(%rip), %xmm0, %xmm4 - add r2, r2, #16 @ add $16, %rdx - vtbl.8 d8, {q2}, d10 @ vpshufb %xmm5, %xmm4, %xmm4 - vtbl.8 d9, {q2}, d11 - vtbl.8 d2, {q4}, d10 @ vpshufb %xmm5, %xmm4, %xmm1 - vtbl.8 d3, {q4}, d11 - vtbl.8 d6, {q1}, d10 @ vpshufb %xmm5, %xmm1, %xmm3 - vtbl.8 d7, {q1}, d11 - veor q4, q4, q1 @ vpxor %xmm1, %xmm4, %xmm4 - vld1.64 {q1}, [r8] @ vmovdqa (%r8,%r10), %xmm1 - veor q3, q3, q4 @ vpxor %xmm4, %xmm3, %xmm3 - -Lschedule_mangle_both: - @ Write to q2 so table and destination do not overlap. - vtbl.8 d4, {q3}, d2 @ vpshufb %xmm1, %xmm3, %xmm3 - vtbl.8 d5, {q3}, d3 - add r8, r8, #64-16 @ add $-16, %r8 - and r8, r8, #~(1<<6) @ and $0x30, %r8 - vst1.64 {q2}, [r2] @ vmovdqu %xmm3, (%rdx) - bx lr - - -.globl _GFp_vpaes_set_encrypt_key -.private_extern _GFp_vpaes_set_encrypt_key -#ifdef __thumb2__ -.thumb_func _GFp_vpaes_set_encrypt_key -#endif -.align 4 -_GFp_vpaes_set_encrypt_key: - stmdb sp!, {r7,r8,r9,r10,r11, lr} - vstmdb sp!, {d8,d9,d10,d11,d12,d13,d14,d15} - - lsr r9, r1, #5 @ shr $5,%eax - add r9, r9, #5 @ $5,%eax - str r9, [r2,#240] @ mov %eax,240(%rdx) # AES_KEY->rounds = nbits/32+5; - - mov r3, #0 @ mov $0,%ecx - mov r8, #0x30 @ mov $0x30,%r8d - bl _vpaes_schedule_core - eor r0, r0, r0 - - vldmia sp!, {d8,d9,d10,d11,d12,d13,d14,d15} - ldmia sp!, {r7,r8,r9,r10,r11, pc} @ return - - -@ Additional constants for converting to bsaes. - -.align 4 -_vpaes_convert_consts: -@ .Lk_opt_then_skew applies skew(opt(x)) XOR 0x63, where skew is the linear -@ transform in the AES S-box. 0x63 is incorporated into the low half of the -@ table. This was computed with the following script: -@ -@ def u64s_to_u128(x, y): -@ return x | (y << 64) -@ def u128_to_u64s(w): -@ return w & ((1<<64)-1), w >> 64 -@ def get_byte(w, i): -@ return (w >> (i*8)) & 0xff -@ def apply_table(table, b): -@ lo = b & 0xf -@ hi = b >> 4 -@ return get_byte(table[0], lo) ^ get_byte(table[1], hi) -@ def opt(b): -@ table = [ -@ u64s_to_u128(0xFF9F4929D6B66000, 0xF7974121DEBE6808), -@ u64s_to_u128(0x01EDBD5150BCEC00, 0xE10D5DB1B05C0CE0), -@ ] -@ return apply_table(table, b) -@ def rot_byte(b, n): -@ return 0xff & ((b << n) | (b >> (8-n))) -@ def skew(x): -@ return (x ^ rot_byte(x, 1) ^ rot_byte(x, 2) ^ rot_byte(x, 3) ^ -@ rot_byte(x, 4)) -@ table = [0, 0] -@ for i in range(16): -@ table[0] |= (skew(opt(i)) ^ 0x63) << (i*8) -@ table[1] |= skew(opt(i<<4)) << (i*8) -@ print(" .quad 0x%016x, 0x%016x" % u128_to_u64s(table[0])) -@ print(" .quad 0x%016x, 0x%016x" % u128_to_u64s(table[1])) -Lk_opt_then_skew: -.quad 0x9cb8436798bc4763, 0x6440bb9f6044bf9b -.quad 0x1f30062936192f00, 0xb49bad829db284ab - -@ void GFp_vpaes_encrypt_key_to_bsaes(AES_KEY *bsaes, const AES_KEY *vpaes); -.globl _GFp_vpaes_encrypt_key_to_bsaes -.private_extern _GFp_vpaes_encrypt_key_to_bsaes -#ifdef __thumb2__ -.thumb_func _GFp_vpaes_encrypt_key_to_bsaes -#endif -.align 4 -_GFp_vpaes_encrypt_key_to_bsaes: - stmdb sp!, {r11, lr} - - @ See _vpaes_schedule_core for the key schedule logic. In particular, - @ _vpaes_schedule_transform(.Lk_ipt) (section 2.2 of the paper), - @ _vpaes_schedule_mangle (section 4.3), and .Lschedule_mangle_last - @ contain the transformations not in the bsaes representation. This - @ function inverts those transforms. - @ - @ Note also that bsaes-armv7.pl expects aes-armv4.pl's key - @ representation, which does not match the other aes_nohw_* - @ implementations. The ARM aes_nohw_* stores each 32-bit word - @ byteswapped, as a convenience for (unsupported) big-endian ARM, at the - @ cost of extra REV and VREV32 operations in little-endian ARM. - - vmov.i8 q9, #0x0f @ Required by _vpaes_schedule_transform - adr r2, Lk_mc_forward @ Must be aligned to 8 mod 16. - add r3, r2, 0x90 @ Lk_sr+0x10-Lk_mc_forward = 0x90 (Apple's toolchain doesn't support the expression) - - vld1.64 {q12}, [r2] - vmov.i8 q10, #0x5b @ Lk_s63 from vpaes-x86_64 - adr r11, Lk_opt @ Must be aligned to 8 mod 16. - vmov.i8 q11, #0x63 @ LK_s63 without Lk_ipt applied - - @ vpaes stores one fewer round count than bsaes, but the number of keys - @ is the same. - ldr r2, [r1,#240] - add r2, r2, #1 - str r2, [r0,#240] - - @ The first key is transformed with _vpaes_schedule_transform(.Lk_ipt). - @ Invert this with .Lk_opt. - vld1.64 {q0}, [r1]! - bl _vpaes_schedule_transform - vrev32.8 q0, q0 - vst1.64 {q0}, [r0]! - - @ The middle keys have _vpaes_schedule_transform(.Lk_ipt) applied, - @ followed by _vpaes_schedule_mangle. _vpaes_schedule_mangle XORs 0x63, - @ multiplies by the circulant 0,1,1,1, then applies ShiftRows. -Loop_enc_key_to_bsaes: - vld1.64 {q0}, [r1]! - - @ Invert the ShiftRows step (see .Lschedule_mangle_both). Note we cycle - @ r3 in the opposite direction and start at .Lk_sr+0x10 instead of 0x30. - @ We use r3 rather than r8 to avoid a callee-saved register. - vld1.64 {q1}, [r3] - vtbl.8 d4, {q0}, d2 - vtbl.8 d5, {q0}, d3 - add r3, r3, #16 - and r3, r3, #~(1<<6) - vmov q0, q2 - - @ Handle the last key differently. - subs r2, r2, #1 - beq Loop_enc_key_to_bsaes_last - - @ Multiply by the circulant. This is its own inverse. - vtbl.8 d2, {q0}, d24 - vtbl.8 d3, {q0}, d25 - vmov q0, q1 - vtbl.8 d4, {q1}, d24 - vtbl.8 d5, {q1}, d25 - veor q0, q0, q2 - vtbl.8 d2, {q2}, d24 - vtbl.8 d3, {q2}, d25 - veor q0, q0, q1 - - @ XOR and finish. - veor q0, q0, q10 - bl _vpaes_schedule_transform - vrev32.8 q0, q0 - vst1.64 {q0}, [r0]! - b Loop_enc_key_to_bsaes - -Loop_enc_key_to_bsaes_last: - @ The final key does not have a basis transform (note - @ .Lschedule_mangle_last inverts the original transform). It only XORs - @ 0x63 and applies ShiftRows. The latter was already inverted in the - @ loop. Note that, because we act on the original representation, we use - @ q11, not q10. - veor q0, q0, q11 - vrev32.8 q0, q0 - vst1.64 {q0}, [r0] - - @ Wipe registers which contained key material. - veor q0, q0, q0 - veor q1, q1, q1 - veor q2, q2, q2 - - ldmia sp!, {r11, pc} @ return - -.globl _GFp_vpaes_ctr32_encrypt_blocks -.private_extern _GFp_vpaes_ctr32_encrypt_blocks -#ifdef __thumb2__ -.thumb_func _GFp_vpaes_ctr32_encrypt_blocks -#endif -.align 4 -_GFp_vpaes_ctr32_encrypt_blocks: - mov ip, sp - stmdb sp!, {r7,r8,r9,r10,r11, lr} - @ This function uses q4-q7 (d8-d15), which are callee-saved. - vstmdb sp!, {d8,d9,d10,d11,d12,d13,d14,d15} - - cmp r2, #0 - @ r8 is passed on the stack. - ldr r8, [ip] - beq Lctr32_done - - @ _vpaes_encrypt_core expects the key in r2, so swap r2 and r3. - mov r9, r3 - mov r3, r2 - mov r2, r9 - - @ Load the IV and counter portion. - ldr r7, [r8, #12] - vld1.8 {q7}, [r8] - - bl _vpaes_preheat - rev r7, r7 @ The counter is big-endian. - -Lctr32_loop: - vmov q0, q7 - vld1.8 {q6}, [r0]! @ Load input ahead of time - bl _vpaes_encrypt_core - veor q0, q0, q6 @ XOR input and result - vst1.8 {q0}, [r1]! - subs r3, r3, #1 - @ Update the counter. - add r7, r7, #1 - rev r9, r7 - vmov.32 d15[1], r9 - bne Lctr32_loop - -Lctr32_done: - vldmia sp!, {d8,d9,d10,d11,d12,d13,d14,d15} - ldmia sp!, {r7,r8,r9,r10,r11, pc} @ return - -#endif // !OPENSSL_NO_ASM diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv7-linux32.S temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv7-linux32.S --- temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv7-linux32.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv7-linux32.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,15 +1,9 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#if defined(__arm__) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_ARM) && defined(__ELF__) .syntax unified .arch armv7-a @@ -198,11 +192,11 @@ bx lr .size _vpaes_encrypt_core,.-_vpaes_encrypt_core -.globl GFp_vpaes_encrypt -.hidden GFp_vpaes_encrypt -.type GFp_vpaes_encrypt,%function +.globl vpaes_encrypt +.hidden vpaes_encrypt +.type vpaes_encrypt,%function .align 4 -GFp_vpaes_encrypt: +vpaes_encrypt: @ _vpaes_encrypt_core uses r8-r11. Round up to r7-r11 to maintain stack @ alignment. stmdb sp!, {r7,r8,r9,r10,r11,lr} @@ -216,7 +210,7 @@ vldmia sp!, {d8,d9,d10,d11} ldmia sp!, {r7,r8,r9,r10,r11, pc} @ return -.size GFp_vpaes_encrypt,.-GFp_vpaes_encrypt +.size vpaes_encrypt,.-vpaes_encrypt @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ @@ @@ AES key schedule @@ @@ -544,11 +538,11 @@ bx lr .size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle -.globl GFp_vpaes_set_encrypt_key -.hidden GFp_vpaes_set_encrypt_key -.type GFp_vpaes_set_encrypt_key,%function +.globl vpaes_set_encrypt_key +.hidden vpaes_set_encrypt_key +.type vpaes_set_encrypt_key,%function .align 4 -GFp_vpaes_set_encrypt_key: +vpaes_set_encrypt_key: stmdb sp!, {r7,r8,r9,r10,r11, lr} vstmdb sp!, {d8,d9,d10,d11,d12,d13,d14,d15} @@ -563,7 +557,7 @@ vldmia sp!, {d8,d9,d10,d11,d12,d13,d14,d15} ldmia sp!, {r7,r8,r9,r10,r11, pc} @ return -.size GFp_vpaes_set_encrypt_key,.-GFp_vpaes_set_encrypt_key +.size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key @ Additional constants for converting to bsaes. .type _vpaes_convert_consts,%object @@ -604,12 +598,12 @@ .quad 0x9cb8436798bc4763, 0x6440bb9f6044bf9b .quad 0x1f30062936192f00, 0xb49bad829db284ab -@ void GFp_vpaes_encrypt_key_to_bsaes(AES_KEY *bsaes, const AES_KEY *vpaes); -.globl GFp_vpaes_encrypt_key_to_bsaes -.hidden GFp_vpaes_encrypt_key_to_bsaes -.type GFp_vpaes_encrypt_key_to_bsaes,%function +@ void vpaes_encrypt_key_to_bsaes(AES_KEY *bsaes, const AES_KEY *vpaes); +.globl vpaes_encrypt_key_to_bsaes +.hidden vpaes_encrypt_key_to_bsaes +.type vpaes_encrypt_key_to_bsaes,%function .align 4 -GFp_vpaes_encrypt_key_to_bsaes: +vpaes_encrypt_key_to_bsaes: stmdb sp!, {r11, lr} @ See _vpaes_schedule_core for the key schedule logic. In particular, @@ -700,12 +694,12 @@ veor q2, q2, q2 ldmia sp!, {r11, pc} @ return -.size GFp_vpaes_encrypt_key_to_bsaes,.-GFp_vpaes_encrypt_key_to_bsaes -.globl GFp_vpaes_ctr32_encrypt_blocks -.hidden GFp_vpaes_ctr32_encrypt_blocks -.type GFp_vpaes_ctr32_encrypt_blocks,%function +.size vpaes_encrypt_key_to_bsaes,.-vpaes_encrypt_key_to_bsaes +.globl vpaes_ctr32_encrypt_blocks +.hidden vpaes_ctr32_encrypt_blocks +.type vpaes_ctr32_encrypt_blocks,%function .align 4 -GFp_vpaes_ctr32_encrypt_blocks: +vpaes_ctr32_encrypt_blocks: mov ip, sp stmdb sp!, {r7,r8,r9,r10,r11, lr} @ This function uses q4-q7 (d8-d15), which are callee-saved. @@ -744,7 +738,5 @@ .Lctr32_done: vldmia sp!, {d8,d9,d10,d11,d12,d13,d14,d15} ldmia sp!, {r7,r8,r9,r10,r11, pc} @ return -.size GFp_vpaes_ctr32_encrypt_blocks,.-GFp_vpaes_ctr32_encrypt_blocks -#endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits +.size vpaes_ctr32_encrypt_blocks,.-vpaes_ctr32_encrypt_blocks +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_ARM) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv8-ios64.S temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv8-ios64.S --- temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv8-ios64.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv8-ios64.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,15 +1,10 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif +#include -#if !defined(OPENSSL_NO_ASM) -#include +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__APPLE__) +#include .section __TEXT,__const @@ -186,11 +181,11 @@ ret -.globl _GFp_vpaes_encrypt -.private_extern _GFp_vpaes_encrypt +.globl _vpaes_encrypt +.private_extern _vpaes_encrypt .align 4 -_GFp_vpaes_encrypt: +_vpaes_encrypt: AARCH64_SIGN_LINK_REGISTER stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -661,17 +656,17 @@ Lschedule_mangle_both: tbl v3.16b, {v3.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm3 - add x8, x8, #64-16 // add $-16, %r8 + add x8, x8, #48 // add $-16, %r8 and x8, x8, #~(1<<6) // and $0x30, %r8 st1 {v3.2d}, [x2] // vmovdqu %xmm3, (%rdx) ret -.globl _GFp_vpaes_set_encrypt_key -.private_extern _GFp_vpaes_set_encrypt_key +.globl _vpaes_set_encrypt_key +.private_extern _vpaes_set_encrypt_key .align 4 -_GFp_vpaes_set_encrypt_key: +_vpaes_set_encrypt_key: AARCH64_SIGN_LINK_REGISTER stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -691,11 +686,11 @@ AARCH64_VALIDATE_LINK_REGISTER ret -.globl _GFp_vpaes_ctr32_encrypt_blocks -.private_extern _GFp_vpaes_ctr32_encrypt_blocks +.globl _vpaes_ctr32_encrypt_blocks +.private_extern _vpaes_ctr32_encrypt_blocks .align 4 -_GFp_vpaes_ctr32_encrypt_blocks: +_vpaes_ctr32_encrypt_blocks: AARCH64_SIGN_LINK_REGISTER stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -767,4 +762,4 @@ AARCH64_VALIDATE_LINK_REGISTER ret -#endif // !OPENSSL_NO_ASM +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__APPLE__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv8-linux64.S temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv8-linux64.S --- temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv8-linux64.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv8-linux64.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,16 +1,10 @@ // This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. -#if !defined(__has_feature) -#define __has_feature(x) 0 -#endif -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif - -#if !defined(OPENSSL_NO_ASM) -#if defined(__aarch64__) -#include +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__ELF__) +#include .section .rodata @@ -187,11 +181,11 @@ ret .size _vpaes_encrypt_core,.-_vpaes_encrypt_core -.globl GFp_vpaes_encrypt -.hidden GFp_vpaes_encrypt -.type GFp_vpaes_encrypt,%function +.globl vpaes_encrypt +.hidden vpaes_encrypt +.type vpaes_encrypt,%function .align 4 -GFp_vpaes_encrypt: +vpaes_encrypt: AARCH64_SIGN_LINK_REGISTER stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -204,7 +198,7 @@ ldp x29,x30,[sp],#16 AARCH64_VALIDATE_LINK_REGISTER ret -.size GFp_vpaes_encrypt,.-GFp_vpaes_encrypt +.size vpaes_encrypt,.-vpaes_encrypt .type _vpaes_encrypt_2x,%function .align 4 @@ -662,17 +656,17 @@ .Lschedule_mangle_both: tbl v3.16b, {v3.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm3 - add x8, x8, #64-16 // add $-16, %r8 + add x8, x8, #48 // add $-16, %r8 and x8, x8, #~(1<<6) // and $0x30, %r8 st1 {v3.2d}, [x2] // vmovdqu %xmm3, (%rdx) ret .size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle -.globl GFp_vpaes_set_encrypt_key -.hidden GFp_vpaes_set_encrypt_key -.type GFp_vpaes_set_encrypt_key,%function +.globl vpaes_set_encrypt_key +.hidden vpaes_set_encrypt_key +.type vpaes_set_encrypt_key,%function .align 4 -GFp_vpaes_set_encrypt_key: +vpaes_set_encrypt_key: AARCH64_SIGN_LINK_REGISTER stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -691,12 +685,12 @@ ldp x29,x30,[sp],#16 AARCH64_VALIDATE_LINK_REGISTER ret -.size GFp_vpaes_set_encrypt_key,.-GFp_vpaes_set_encrypt_key -.globl GFp_vpaes_ctr32_encrypt_blocks -.hidden GFp_vpaes_ctr32_encrypt_blocks -.type GFp_vpaes_ctr32_encrypt_blocks,%function +.size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key +.globl vpaes_ctr32_encrypt_blocks +.hidden vpaes_ctr32_encrypt_blocks +.type vpaes_ctr32_encrypt_blocks,%function .align 4 -GFp_vpaes_ctr32_encrypt_blocks: +vpaes_ctr32_encrypt_blocks: AARCH64_SIGN_LINK_REGISTER stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -767,7 +761,5 @@ ldp x29,x30,[sp],#16 AARCH64_VALIDATE_LINK_REGISTER ret -.size GFp_vpaes_ctr32_encrypt_blocks,.-GFp_vpaes_ctr32_encrypt_blocks -#endif -#endif // !OPENSSL_NO_ASM -.section .note.GNU-stack,"",%progbits +.size vpaes_ctr32_encrypt_blocks,.-vpaes_ctr32_encrypt_blocks +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv8-win64.S temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv8-win64.S --- temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv8-win64.S 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/vpaes-armv8-win64.S 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,789 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. + +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(_WIN32) +#include + +.section .rodata + + +.align 7 // totally strategic alignment +_vpaes_consts: +Lk_mc_forward: // mc_forward +.quad 0x0407060500030201, 0x0C0F0E0D080B0A09 +.quad 0x080B0A0904070605, 0x000302010C0F0E0D +.quad 0x0C0F0E0D080B0A09, 0x0407060500030201 +.quad 0x000302010C0F0E0D, 0x080B0A0904070605 +Lk_mc_backward: // mc_backward +.quad 0x0605040702010003, 0x0E0D0C0F0A09080B +.quad 0x020100030E0D0C0F, 0x0A09080B06050407 +.quad 0x0E0D0C0F0A09080B, 0x0605040702010003 +.quad 0x0A09080B06050407, 0x020100030E0D0C0F +Lk_sr: // sr +.quad 0x0706050403020100, 0x0F0E0D0C0B0A0908 +.quad 0x030E09040F0A0500, 0x0B06010C07020D08 +.quad 0x0F060D040B020900, 0x070E050C030A0108 +.quad 0x0B0E0104070A0D00, 0x0306090C0F020508 + +// +// "Hot" constants +// +Lk_inv: // inv, inva +.quad 0x0E05060F0D080180, 0x040703090A0B0C02 +.quad 0x01040A060F0B0780, 0x030D0E0C02050809 +Lk_ipt: // input transform (lo, hi) +.quad 0xC2B2E8985A2A7000, 0xCABAE09052227808 +.quad 0x4C01307D317C4D00, 0xCD80B1FCB0FDCC81 +Lk_sbo: // sbou, sbot +.quad 0xD0D26D176FBDC700, 0x15AABF7AC502A878 +.quad 0xCFE474A55FBB6A00, 0x8E1E90D1412B35FA +Lk_sb1: // sb1u, sb1t +.quad 0x3618D415FAE22300, 0x3BF7CCC10D2ED9EF +.quad 0xB19BE18FCB503E00, 0xA5DF7A6E142AF544 +Lk_sb2: // sb2u, sb2t +.quad 0x69EB88400AE12900, 0xC2A163C8AB82234A +.quad 0xE27A93C60B712400, 0x5EB7E955BC982FCD + +// +// Key schedule constants +// +Lk_dksd: // decryption key schedule: invskew x*D +.quad 0xFEB91A5DA3E44700, 0x0740E3A45A1DBEF9 +.quad 0x41C277F4B5368300, 0x5FDC69EAAB289D1E +Lk_dksb: // decryption key schedule: invskew x*B +.quad 0x9A4FCA1F8550D500, 0x03D653861CC94C99 +.quad 0x115BEDA7B6FC4A00, 0xD993256F7E3482C8 +Lk_dkse: // decryption key schedule: invskew x*E + 0x63 +.quad 0xD5031CCA1FC9D600, 0x53859A4C994F5086 +.quad 0xA23196054FDC7BE8, 0xCD5EF96A20B31487 +Lk_dks9: // decryption key schedule: invskew x*9 +.quad 0xB6116FC87ED9A700, 0x4AED933482255BFC +.quad 0x4576516227143300, 0x8BB89FACE9DAFDCE + +Lk_rcon: // rcon +.quad 0x1F8391B9AF9DEEB6, 0x702A98084D7C7D81 + +Lk_opt: // output transform +.quad 0xFF9F4929D6B66000, 0xF7974121DEBE6808 +.quad 0x01EDBD5150BCEC00, 0xE10D5DB1B05C0CE0 +Lk_deskew: // deskew tables: inverts the sbox's "skew" +.quad 0x07E4A34047A4E300, 0x1DFEB95A5DBEF91A +.quad 0x5F36B5DC83EA6900, 0x2841C2ABF49D1E77 + +.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,65,82,77,118,56,44,32,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0 +.align 2 + +.align 6 + +.text +## +## _aes_preheat +## +## Fills register %r10 -> .aes_consts (so you can -fPIC) +## and %xmm9-%xmm15 as specified below. +## +.def _vpaes_encrypt_preheat + .type 32 +.endef +.align 4 +_vpaes_encrypt_preheat: + adrp x10, Lk_inv + add x10, x10, :lo12:Lk_inv + movi v17.16b, #0x0f + ld1 {v18.2d,v19.2d}, [x10],#32 // Lk_inv + ld1 {v20.2d,v21.2d,v22.2d,v23.2d}, [x10],#64 // Lk_ipt, Lk_sbo + ld1 {v24.2d,v25.2d,v26.2d,v27.2d}, [x10] // Lk_sb1, Lk_sb2 + ret + + +## +## _aes_encrypt_core +## +## AES-encrypt %xmm0. +## +## Inputs: +## %xmm0 = input +## %xmm9-%xmm15 as in _vpaes_preheat +## (%rdx) = scheduled keys +## +## Output in %xmm0 +## Clobbers %xmm1-%xmm5, %r9, %r10, %r11, %rax +## Preserves %xmm6 - %xmm8 so you get some local vectors +## +## +.def _vpaes_encrypt_core + .type 32 +.endef +.align 4 +_vpaes_encrypt_core: + mov x9, x2 + ldr w8, [x2,#240] // pull rounds + adrp x11, Lk_mc_forward+16 + add x11, x11, :lo12:Lk_mc_forward+16 + // vmovdqa .Lk_ipt(%rip), %xmm2 # iptlo + ld1 {v16.2d}, [x9], #16 // vmovdqu (%r9), %xmm5 # round0 key + and v1.16b, v7.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 + ushr v0.16b, v7.16b, #4 // vpsrlb $4, %xmm0, %xmm0 + tbl v1.16b, {v20.16b}, v1.16b // vpshufb %xmm1, %xmm2, %xmm1 + // vmovdqa .Lk_ipt+16(%rip), %xmm3 # ipthi + tbl v2.16b, {v21.16b}, v0.16b // vpshufb %xmm0, %xmm3, %xmm2 + eor v0.16b, v1.16b, v16.16b // vpxor %xmm5, %xmm1, %xmm0 + eor v0.16b, v0.16b, v2.16b // vpxor %xmm2, %xmm0, %xmm0 + b Lenc_entry + +.align 4 +Lenc_loop: + // middle of middle round + add x10, x11, #0x40 + tbl v4.16b, {v25.16b}, v2.16b // vpshufb %xmm2, %xmm13, %xmm4 # 4 = sb1u + ld1 {v1.2d}, [x11], #16 // vmovdqa -0x40(%r11,%r10), %xmm1 # Lk_mc_forward[] + tbl v0.16b, {v24.16b}, v3.16b // vpshufb %xmm3, %xmm12, %xmm0 # 0 = sb1t + eor v4.16b, v4.16b, v16.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k + tbl v5.16b, {v27.16b}, v2.16b // vpshufb %xmm2, %xmm15, %xmm5 # 4 = sb2u + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = A + tbl v2.16b, {v26.16b}, v3.16b // vpshufb %xmm3, %xmm14, %xmm2 # 2 = sb2t + ld1 {v4.2d}, [x10] // vmovdqa (%r11,%r10), %xmm4 # Lk_mc_backward[] + tbl v3.16b, {v0.16b}, v1.16b // vpshufb %xmm1, %xmm0, %xmm3 # 0 = B + eor v2.16b, v2.16b, v5.16b // vpxor %xmm5, %xmm2, %xmm2 # 2 = 2A + tbl v0.16b, {v0.16b}, v4.16b // vpshufb %xmm4, %xmm0, %xmm0 # 3 = D + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 # 0 = 2A+B + tbl v4.16b, {v3.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm4 # 0 = 2B+C + eor v0.16b, v0.16b, v3.16b // vpxor %xmm3, %xmm0, %xmm0 # 3 = 2A+B+D + and x11, x11, #~(1<<6) // and $0x30, %r11 # ... mod 4 + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = 2A+3B+C+D + sub w8, w8, #1 // nr-- + +Lenc_entry: + // top of round + and v1.16b, v0.16b, v17.16b // vpand %xmm0, %xmm9, %xmm1 # 0 = k + ushr v0.16b, v0.16b, #4 // vpsrlb $4, %xmm0, %xmm0 # 1 = i + tbl v5.16b, {v19.16b}, v1.16b // vpshufb %xmm1, %xmm11, %xmm5 # 2 = a/k + eor v1.16b, v1.16b, v0.16b // vpxor %xmm0, %xmm1, %xmm1 # 0 = j + tbl v3.16b, {v18.16b}, v0.16b // vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i + tbl v4.16b, {v18.16b}, v1.16b // vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j + eor v3.16b, v3.16b, v5.16b // vpxor %xmm5, %xmm3, %xmm3 # 3 = iak = 1/i + a/k + eor v4.16b, v4.16b, v5.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = jak = 1/j + a/k + tbl v2.16b, {v18.16b}, v3.16b // vpshufb %xmm3, %xmm10, %xmm2 # 2 = 1/iak + tbl v3.16b, {v18.16b}, v4.16b // vpshufb %xmm4, %xmm10, %xmm3 # 3 = 1/jak + eor v2.16b, v2.16b, v1.16b // vpxor %xmm1, %xmm2, %xmm2 # 2 = io + eor v3.16b, v3.16b, v0.16b // vpxor %xmm0, %xmm3, %xmm3 # 3 = jo + ld1 {v16.2d}, [x9],#16 // vmovdqu (%r9), %xmm5 + cbnz w8, Lenc_loop + + // middle of last round + add x10, x11, #0x80 + // vmovdqa -0x60(%r10), %xmm4 # 3 : sbou .Lk_sbo + // vmovdqa -0x50(%r10), %xmm0 # 0 : sbot .Lk_sbo+16 + tbl v4.16b, {v22.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbou + ld1 {v1.2d}, [x10] // vmovdqa 0x40(%r11,%r10), %xmm1 # Lk_sr[] + tbl v0.16b, {v23.16b}, v3.16b // vpshufb %xmm3, %xmm0, %xmm0 # 0 = sb1t + eor v4.16b, v4.16b, v16.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = A + tbl v0.16b, {v0.16b}, v1.16b // vpshufb %xmm1, %xmm0, %xmm0 + ret + + +.globl vpaes_encrypt + +.def vpaes_encrypt + .type 32 +.endef +.align 4 +vpaes_encrypt: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ld1 {v7.16b}, [x0] + bl _vpaes_encrypt_preheat + bl _vpaes_encrypt_core + st1 {v0.16b}, [x1] + + ldp x29,x30,[sp],#16 + AARCH64_VALIDATE_LINK_REGISTER + ret + + +.def _vpaes_encrypt_2x + .type 32 +.endef +.align 4 +_vpaes_encrypt_2x: + mov x9, x2 + ldr w8, [x2,#240] // pull rounds + adrp x11, Lk_mc_forward+16 + add x11, x11, :lo12:Lk_mc_forward+16 + // vmovdqa .Lk_ipt(%rip), %xmm2 # iptlo + ld1 {v16.2d}, [x9], #16 // vmovdqu (%r9), %xmm5 # round0 key + and v1.16b, v14.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 + ushr v0.16b, v14.16b, #4 // vpsrlb $4, %xmm0, %xmm0 + and v9.16b, v15.16b, v17.16b + ushr v8.16b, v15.16b, #4 + tbl v1.16b, {v20.16b}, v1.16b // vpshufb %xmm1, %xmm2, %xmm1 + tbl v9.16b, {v20.16b}, v9.16b + // vmovdqa .Lk_ipt+16(%rip), %xmm3 # ipthi + tbl v2.16b, {v21.16b}, v0.16b // vpshufb %xmm0, %xmm3, %xmm2 + tbl v10.16b, {v21.16b}, v8.16b + eor v0.16b, v1.16b, v16.16b // vpxor %xmm5, %xmm1, %xmm0 + eor v8.16b, v9.16b, v16.16b + eor v0.16b, v0.16b, v2.16b // vpxor %xmm2, %xmm0, %xmm0 + eor v8.16b, v8.16b, v10.16b + b Lenc_2x_entry + +.align 4 +Lenc_2x_loop: + // middle of middle round + add x10, x11, #0x40 + tbl v4.16b, {v25.16b}, v2.16b // vpshufb %xmm2, %xmm13, %xmm4 # 4 = sb1u + tbl v12.16b, {v25.16b}, v10.16b + ld1 {v1.2d}, [x11], #16 // vmovdqa -0x40(%r11,%r10), %xmm1 # Lk_mc_forward[] + tbl v0.16b, {v24.16b}, v3.16b // vpshufb %xmm3, %xmm12, %xmm0 # 0 = sb1t + tbl v8.16b, {v24.16b}, v11.16b + eor v4.16b, v4.16b, v16.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k + eor v12.16b, v12.16b, v16.16b + tbl v5.16b, {v27.16b}, v2.16b // vpshufb %xmm2, %xmm15, %xmm5 # 4 = sb2u + tbl v13.16b, {v27.16b}, v10.16b + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = A + eor v8.16b, v8.16b, v12.16b + tbl v2.16b, {v26.16b}, v3.16b // vpshufb %xmm3, %xmm14, %xmm2 # 2 = sb2t + tbl v10.16b, {v26.16b}, v11.16b + ld1 {v4.2d}, [x10] // vmovdqa (%r11,%r10), %xmm4 # Lk_mc_backward[] + tbl v3.16b, {v0.16b}, v1.16b // vpshufb %xmm1, %xmm0, %xmm3 # 0 = B + tbl v11.16b, {v8.16b}, v1.16b + eor v2.16b, v2.16b, v5.16b // vpxor %xmm5, %xmm2, %xmm2 # 2 = 2A + eor v10.16b, v10.16b, v13.16b + tbl v0.16b, {v0.16b}, v4.16b // vpshufb %xmm4, %xmm0, %xmm0 # 3 = D + tbl v8.16b, {v8.16b}, v4.16b + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 # 0 = 2A+B + eor v11.16b, v11.16b, v10.16b + tbl v4.16b, {v3.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm4 # 0 = 2B+C + tbl v12.16b, {v11.16b},v1.16b + eor v0.16b, v0.16b, v3.16b // vpxor %xmm3, %xmm0, %xmm0 # 3 = 2A+B+D + eor v8.16b, v8.16b, v11.16b + and x11, x11, #~(1<<6) // and $0x30, %r11 # ... mod 4 + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = 2A+3B+C+D + eor v8.16b, v8.16b, v12.16b + sub w8, w8, #1 // nr-- + +Lenc_2x_entry: + // top of round + and v1.16b, v0.16b, v17.16b // vpand %xmm0, %xmm9, %xmm1 # 0 = k + ushr v0.16b, v0.16b, #4 // vpsrlb $4, %xmm0, %xmm0 # 1 = i + and v9.16b, v8.16b, v17.16b + ushr v8.16b, v8.16b, #4 + tbl v5.16b, {v19.16b},v1.16b // vpshufb %xmm1, %xmm11, %xmm5 # 2 = a/k + tbl v13.16b, {v19.16b},v9.16b + eor v1.16b, v1.16b, v0.16b // vpxor %xmm0, %xmm1, %xmm1 # 0 = j + eor v9.16b, v9.16b, v8.16b + tbl v3.16b, {v18.16b},v0.16b // vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i + tbl v11.16b, {v18.16b},v8.16b + tbl v4.16b, {v18.16b},v1.16b // vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j + tbl v12.16b, {v18.16b},v9.16b + eor v3.16b, v3.16b, v5.16b // vpxor %xmm5, %xmm3, %xmm3 # 3 = iak = 1/i + a/k + eor v11.16b, v11.16b, v13.16b + eor v4.16b, v4.16b, v5.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = jak = 1/j + a/k + eor v12.16b, v12.16b, v13.16b + tbl v2.16b, {v18.16b},v3.16b // vpshufb %xmm3, %xmm10, %xmm2 # 2 = 1/iak + tbl v10.16b, {v18.16b},v11.16b + tbl v3.16b, {v18.16b},v4.16b // vpshufb %xmm4, %xmm10, %xmm3 # 3 = 1/jak + tbl v11.16b, {v18.16b},v12.16b + eor v2.16b, v2.16b, v1.16b // vpxor %xmm1, %xmm2, %xmm2 # 2 = io + eor v10.16b, v10.16b, v9.16b + eor v3.16b, v3.16b, v0.16b // vpxor %xmm0, %xmm3, %xmm3 # 3 = jo + eor v11.16b, v11.16b, v8.16b + ld1 {v16.2d}, [x9],#16 // vmovdqu (%r9), %xmm5 + cbnz w8, Lenc_2x_loop + + // middle of last round + add x10, x11, #0x80 + // vmovdqa -0x60(%r10), %xmm4 # 3 : sbou .Lk_sbo + // vmovdqa -0x50(%r10), %xmm0 # 0 : sbot .Lk_sbo+16 + tbl v4.16b, {v22.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbou + tbl v12.16b, {v22.16b}, v10.16b + ld1 {v1.2d}, [x10] // vmovdqa 0x40(%r11,%r10), %xmm1 # Lk_sr[] + tbl v0.16b, {v23.16b}, v3.16b // vpshufb %xmm3, %xmm0, %xmm0 # 0 = sb1t + tbl v8.16b, {v23.16b}, v11.16b + eor v4.16b, v4.16b, v16.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k + eor v12.16b, v12.16b, v16.16b + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = A + eor v8.16b, v8.16b, v12.16b + tbl v0.16b, {v0.16b},v1.16b // vpshufb %xmm1, %xmm0, %xmm0 + tbl v1.16b, {v8.16b},v1.16b + ret + +######################################################## +## ## +## AES key schedule ## +## ## +######################################################## +.def _vpaes_key_preheat + .type 32 +.endef +.align 4 +_vpaes_key_preheat: + adrp x10, Lk_inv + add x10, x10, :lo12:Lk_inv + movi v16.16b, #0x5b // Lk_s63 + adrp x11, Lk_sb1 + add x11, x11, :lo12:Lk_sb1 + movi v17.16b, #0x0f // Lk_s0F + ld1 {v18.2d,v19.2d,v20.2d,v21.2d}, [x10] // Lk_inv, Lk_ipt + adrp x10, Lk_dksd + add x10, x10, :lo12:Lk_dksd + ld1 {v22.2d,v23.2d}, [x11] // Lk_sb1 + adrp x11, Lk_mc_forward + add x11, x11, :lo12:Lk_mc_forward + ld1 {v24.2d,v25.2d,v26.2d,v27.2d}, [x10],#64 // Lk_dksd, Lk_dksb + ld1 {v28.2d,v29.2d,v30.2d,v31.2d}, [x10],#64 // Lk_dkse, Lk_dks9 + ld1 {v8.2d}, [x10] // Lk_rcon + ld1 {v9.2d}, [x11] // Lk_mc_forward[0] + ret + + +.def _vpaes_schedule_core + .type 32 +.endef +.align 4 +_vpaes_schedule_core: + AARCH64_SIGN_LINK_REGISTER + stp x29, x30, [sp,#-16]! + add x29,sp,#0 + + bl _vpaes_key_preheat // load the tables + + ld1 {v0.16b}, [x0],#16 // vmovdqu (%rdi), %xmm0 # load key (unaligned) + + // input transform + mov v3.16b, v0.16b // vmovdqa %xmm0, %xmm3 + bl _vpaes_schedule_transform + mov v7.16b, v0.16b // vmovdqa %xmm0, %xmm7 + + adrp x10, Lk_sr // lea Lk_sr(%rip),%r10 + add x10, x10, :lo12:Lk_sr + + add x8, x8, x10 + + // encrypting, output zeroth round key after transform + st1 {v0.2d}, [x2] // vmovdqu %xmm0, (%rdx) + + cmp w1, #192 // cmp $192, %esi + b.hi Lschedule_256 + b.eq Lschedule_192 + // 128: fall though + +## +## .schedule_128 +## +## 128-bit specific part of key schedule. +## +## This schedule is really simple, because all its parts +## are accomplished by the subroutines. +## +Lschedule_128: + mov x0, #10 // mov $10, %esi + +Loop_schedule_128: + sub x0, x0, #1 // dec %esi + bl _vpaes_schedule_round + cbz x0, Lschedule_mangle_last + bl _vpaes_schedule_mangle // write output + b Loop_schedule_128 + +## +## .aes_schedule_192 +## +## 192-bit specific part of key schedule. +## +## The main body of this schedule is the same as the 128-bit +## schedule, but with more smearing. The long, high side is +## stored in %xmm7 as before, and the short, low side is in +## the high bits of %xmm6. +## +## This schedule is somewhat nastier, however, because each +## round produces 192 bits of key material, or 1.5 round keys. +## Therefore, on each cycle we do 2 rounds and produce 3 round +## keys. +## +.align 4 +Lschedule_192: + sub x0, x0, #8 + ld1 {v0.16b}, [x0] // vmovdqu 8(%rdi),%xmm0 # load key part 2 (very unaligned) + bl _vpaes_schedule_transform // input transform + mov v6.16b, v0.16b // vmovdqa %xmm0, %xmm6 # save short part + eor v4.16b, v4.16b, v4.16b // vpxor %xmm4, %xmm4, %xmm4 # clear 4 + ins v6.d[0], v4.d[0] // vmovhlps %xmm4, %xmm6, %xmm6 # clobber low side with zeros + mov x0, #4 // mov $4, %esi + +Loop_schedule_192: + sub x0, x0, #1 // dec %esi + bl _vpaes_schedule_round + ext v0.16b, v6.16b, v0.16b, #8 // vpalignr $8,%xmm6,%xmm0,%xmm0 + bl _vpaes_schedule_mangle // save key n + bl _vpaes_schedule_192_smear + bl _vpaes_schedule_mangle // save key n+1 + bl _vpaes_schedule_round + cbz x0, Lschedule_mangle_last + bl _vpaes_schedule_mangle // save key n+2 + bl _vpaes_schedule_192_smear + b Loop_schedule_192 + +## +## .aes_schedule_256 +## +## 256-bit specific part of key schedule. +## +## The structure here is very similar to the 128-bit +## schedule, but with an additional "low side" in +## %xmm6. The low side's rounds are the same as the +## high side's, except no rcon and no rotation. +## +.align 4 +Lschedule_256: + ld1 {v0.16b}, [x0] // vmovdqu 16(%rdi),%xmm0 # load key part 2 (unaligned) + bl _vpaes_schedule_transform // input transform + mov x0, #7 // mov $7, %esi + +Loop_schedule_256: + sub x0, x0, #1 // dec %esi + bl _vpaes_schedule_mangle // output low result + mov v6.16b, v0.16b // vmovdqa %xmm0, %xmm6 # save cur_lo in xmm6 + + // high round + bl _vpaes_schedule_round + cbz x0, Lschedule_mangle_last + bl _vpaes_schedule_mangle + + // low round. swap xmm7 and xmm6 + dup v0.4s, v0.s[3] // vpshufd $0xFF, %xmm0, %xmm0 + movi v4.16b, #0 + mov v5.16b, v7.16b // vmovdqa %xmm7, %xmm5 + mov v7.16b, v6.16b // vmovdqa %xmm6, %xmm7 + bl _vpaes_schedule_low_round + mov v7.16b, v5.16b // vmovdqa %xmm5, %xmm7 + + b Loop_schedule_256 + +## +## .aes_schedule_mangle_last +## +## Mangler for last round of key schedule +## Mangles %xmm0 +## when encrypting, outputs out(%xmm0) ^ 63 +## when decrypting, outputs unskew(%xmm0) +## +## Always called right before return... jumps to cleanup and exits +## +.align 4 +Lschedule_mangle_last: + // schedule last round key from xmm0 + adrp x11, Lk_deskew // lea Lk_deskew(%rip),%r11 # prepare to deskew + add x11, x11, :lo12:Lk_deskew + + cbnz w3, Lschedule_mangle_last_dec + + // encrypting + ld1 {v1.2d}, [x8] // vmovdqa (%r8,%r10),%xmm1 + adrp x11, Lk_opt // lea Lk_opt(%rip), %r11 # prepare to output transform + add x11, x11, :lo12:Lk_opt + add x2, x2, #32 // add $32, %rdx + tbl v0.16b, {v0.16b}, v1.16b // vpshufb %xmm1, %xmm0, %xmm0 # output permute + +Lschedule_mangle_last_dec: + ld1 {v20.2d,v21.2d}, [x11] // reload constants + sub x2, x2, #16 // add $-16, %rdx + eor v0.16b, v0.16b, v16.16b // vpxor Lk_s63(%rip), %xmm0, %xmm0 + bl _vpaes_schedule_transform // output transform + st1 {v0.2d}, [x2] // vmovdqu %xmm0, (%rdx) # save last key + + // cleanup + eor v0.16b, v0.16b, v0.16b // vpxor %xmm0, %xmm0, %xmm0 + eor v1.16b, v1.16b, v1.16b // vpxor %xmm1, %xmm1, %xmm1 + eor v2.16b, v2.16b, v2.16b // vpxor %xmm2, %xmm2, %xmm2 + eor v3.16b, v3.16b, v3.16b // vpxor %xmm3, %xmm3, %xmm3 + eor v4.16b, v4.16b, v4.16b // vpxor %xmm4, %xmm4, %xmm4 + eor v5.16b, v5.16b, v5.16b // vpxor %xmm5, %xmm5, %xmm5 + eor v6.16b, v6.16b, v6.16b // vpxor %xmm6, %xmm6, %xmm6 + eor v7.16b, v7.16b, v7.16b // vpxor %xmm7, %xmm7, %xmm7 + ldp x29, x30, [sp],#16 + AARCH64_VALIDATE_LINK_REGISTER + ret + + +## +## .aes_schedule_192_smear +## +## Smear the short, low side in the 192-bit key schedule. +## +## Inputs: +## %xmm7: high side, b a x y +## %xmm6: low side, d c 0 0 +## %xmm13: 0 +## +## Outputs: +## %xmm6: b+c+d b+c 0 0 +## %xmm0: b+c+d b+c b a +## +.def _vpaes_schedule_192_smear + .type 32 +.endef +.align 4 +_vpaes_schedule_192_smear: + movi v1.16b, #0 + dup v0.4s, v7.s[3] + ins v1.s[3], v6.s[2] // vpshufd $0x80, %xmm6, %xmm1 # d c 0 0 -> c 0 0 0 + ins v0.s[0], v7.s[2] // vpshufd $0xFE, %xmm7, %xmm0 # b a _ _ -> b b b a + eor v6.16b, v6.16b, v1.16b // vpxor %xmm1, %xmm6, %xmm6 # -> c+d c 0 0 + eor v1.16b, v1.16b, v1.16b // vpxor %xmm1, %xmm1, %xmm1 + eor v6.16b, v6.16b, v0.16b // vpxor %xmm0, %xmm6, %xmm6 # -> b+c+d b+c b a + mov v0.16b, v6.16b // vmovdqa %xmm6, %xmm0 + ins v6.d[0], v1.d[0] // vmovhlps %xmm1, %xmm6, %xmm6 # clobber low side with zeros + ret + + +## +## .aes_schedule_round +## +## Runs one main round of the key schedule on %xmm0, %xmm7 +## +## Specifically, runs subbytes on the high dword of %xmm0 +## then rotates it by one byte and xors into the low dword of +## %xmm7. +## +## Adds rcon from low byte of %xmm8, then rotates %xmm8 for +## next rcon. +## +## Smears the dwords of %xmm7 by xoring the low into the +## second low, result into third, result into highest. +## +## Returns results in %xmm7 = %xmm0. +## Clobbers %xmm1-%xmm4, %r11. +## +.def _vpaes_schedule_round + .type 32 +.endef +.align 4 +_vpaes_schedule_round: + // extract rcon from xmm8 + movi v4.16b, #0 // vpxor %xmm4, %xmm4, %xmm4 + ext v1.16b, v8.16b, v4.16b, #15 // vpalignr $15, %xmm8, %xmm4, %xmm1 + ext v8.16b, v8.16b, v8.16b, #15 // vpalignr $15, %xmm8, %xmm8, %xmm8 + eor v7.16b, v7.16b, v1.16b // vpxor %xmm1, %xmm7, %xmm7 + + // rotate + dup v0.4s, v0.s[3] // vpshufd $0xFF, %xmm0, %xmm0 + ext v0.16b, v0.16b, v0.16b, #1 // vpalignr $1, %xmm0, %xmm0, %xmm0 + + // fall through... + + // low round: same as high round, but no rotation and no rcon. +_vpaes_schedule_low_round: + // smear xmm7 + ext v1.16b, v4.16b, v7.16b, #12 // vpslldq $4, %xmm7, %xmm1 + eor v7.16b, v7.16b, v1.16b // vpxor %xmm1, %xmm7, %xmm7 + ext v4.16b, v4.16b, v7.16b, #8 // vpslldq $8, %xmm7, %xmm4 + + // subbytes + and v1.16b, v0.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 # 0 = k + ushr v0.16b, v0.16b, #4 // vpsrlb $4, %xmm0, %xmm0 # 1 = i + eor v7.16b, v7.16b, v4.16b // vpxor %xmm4, %xmm7, %xmm7 + tbl v2.16b, {v19.16b}, v1.16b // vpshufb %xmm1, %xmm11, %xmm2 # 2 = a/k + eor v1.16b, v1.16b, v0.16b // vpxor %xmm0, %xmm1, %xmm1 # 0 = j + tbl v3.16b, {v18.16b}, v0.16b // vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 # 3 = iak = 1/i + a/k + tbl v4.16b, {v18.16b}, v1.16b // vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j + eor v7.16b, v7.16b, v16.16b // vpxor Lk_s63(%rip), %xmm7, %xmm7 + tbl v3.16b, {v18.16b}, v3.16b // vpshufb %xmm3, %xmm10, %xmm3 # 2 = 1/iak + eor v4.16b, v4.16b, v2.16b // vpxor %xmm2, %xmm4, %xmm4 # 4 = jak = 1/j + a/k + tbl v2.16b, {v18.16b}, v4.16b // vpshufb %xmm4, %xmm10, %xmm2 # 3 = 1/jak + eor v3.16b, v3.16b, v1.16b // vpxor %xmm1, %xmm3, %xmm3 # 2 = io + eor v2.16b, v2.16b, v0.16b // vpxor %xmm0, %xmm2, %xmm2 # 3 = jo + tbl v4.16b, {v23.16b}, v3.16b // vpshufb %xmm3, %xmm13, %xmm4 # 4 = sbou + tbl v1.16b, {v22.16b}, v2.16b // vpshufb %xmm2, %xmm12, %xmm1 # 0 = sb1t + eor v1.16b, v1.16b, v4.16b // vpxor %xmm4, %xmm1, %xmm1 # 0 = sbox output + + // add in smeared stuff + eor v0.16b, v1.16b, v7.16b // vpxor %xmm7, %xmm1, %xmm0 + eor v7.16b, v1.16b, v7.16b // vmovdqa %xmm0, %xmm7 + ret + + +## +## .aes_schedule_transform +## +## Linear-transform %xmm0 according to tables at (%r11) +## +## Requires that %xmm9 = 0x0F0F... as in preheat +## Output in %xmm0 +## Clobbers %xmm1, %xmm2 +## +.def _vpaes_schedule_transform + .type 32 +.endef +.align 4 +_vpaes_schedule_transform: + and v1.16b, v0.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 + ushr v0.16b, v0.16b, #4 // vpsrlb $4, %xmm0, %xmm0 + // vmovdqa (%r11), %xmm2 # lo + tbl v2.16b, {v20.16b}, v1.16b // vpshufb %xmm1, %xmm2, %xmm2 + // vmovdqa 16(%r11), %xmm1 # hi + tbl v0.16b, {v21.16b}, v0.16b // vpshufb %xmm0, %xmm1, %xmm0 + eor v0.16b, v0.16b, v2.16b // vpxor %xmm2, %xmm0, %xmm0 + ret + + +## +## .aes_schedule_mangle +## +## Mangle xmm0 from (basis-transformed) standard version +## to our version. +## +## On encrypt, +## xor with 0x63 +## multiply by circulant 0,1,1,1 +## apply shiftrows transform +## +## On decrypt, +## xor with 0x63 +## multiply by "inverse mixcolumns" circulant E,B,D,9 +## deskew +## apply shiftrows transform +## +## +## Writes out to (%rdx), and increments or decrements it +## Keeps track of round number mod 4 in %r8 +## Preserves xmm0 +## Clobbers xmm1-xmm5 +## +.def _vpaes_schedule_mangle + .type 32 +.endef +.align 4 +_vpaes_schedule_mangle: + mov v4.16b, v0.16b // vmovdqa %xmm0, %xmm4 # save xmm0 for later + // vmovdqa .Lk_mc_forward(%rip),%xmm5 + + // encrypting + eor v4.16b, v0.16b, v16.16b // vpxor Lk_s63(%rip), %xmm0, %xmm4 + add x2, x2, #16 // add $16, %rdx + tbl v4.16b, {v4.16b}, v9.16b // vpshufb %xmm5, %xmm4, %xmm4 + tbl v1.16b, {v4.16b}, v9.16b // vpshufb %xmm5, %xmm4, %xmm1 + tbl v3.16b, {v1.16b}, v9.16b // vpshufb %xmm5, %xmm1, %xmm3 + eor v4.16b, v4.16b, v1.16b // vpxor %xmm1, %xmm4, %xmm4 + ld1 {v1.2d}, [x8] // vmovdqa (%r8,%r10), %xmm1 + eor v3.16b, v3.16b, v4.16b // vpxor %xmm4, %xmm3, %xmm3 + +Lschedule_mangle_both: + tbl v3.16b, {v3.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm3 + add x8, x8, #48 // add $-16, %r8 + and x8, x8, #~(1<<6) // and $0x30, %r8 + st1 {v3.2d}, [x2] // vmovdqu %xmm3, (%rdx) + ret + + +.globl vpaes_set_encrypt_key + +.def vpaes_set_encrypt_key + .type 32 +.endef +.align 4 +vpaes_set_encrypt_key: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + stp d8,d9,[sp,#-16]! // ABI spec says so + + lsr w9, w1, #5 // shr $5,%eax + add w9, w9, #5 // $5,%eax + str w9, [x2,#240] // mov %eax,240(%rdx) # AES_KEY->rounds = nbits/32+5; + + mov w3, #0 // mov $0,%ecx + mov x8, #0x30 // mov $0x30,%r8d + bl _vpaes_schedule_core + eor x0, x0, x0 + + ldp d8,d9,[sp],#16 + ldp x29,x30,[sp],#16 + AARCH64_VALIDATE_LINK_REGISTER + ret + +.globl vpaes_ctr32_encrypt_blocks + +.def vpaes_ctr32_encrypt_blocks + .type 32 +.endef +.align 4 +vpaes_ctr32_encrypt_blocks: + AARCH64_SIGN_LINK_REGISTER + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + stp d8,d9,[sp,#-16]! // ABI spec says so + stp d10,d11,[sp,#-16]! + stp d12,d13,[sp,#-16]! + stp d14,d15,[sp,#-16]! + + cbz x2, Lctr32_done + + // Note, unlike the other functions, x2 here is measured in blocks, + // not bytes. + mov x17, x2 + mov x2, x3 + + // Load the IV and counter portion. + ldr w6, [x4, #12] + ld1 {v7.16b}, [x4] + + bl _vpaes_encrypt_preheat + tst x17, #1 + rev w6, w6 // The counter is big-endian. + b.eq Lctr32_prep_loop + + // Handle one block so the remaining block count is even for + // _vpaes_encrypt_2x. + ld1 {v6.16b}, [x0], #16 // Load input ahead of time + bl _vpaes_encrypt_core + eor v0.16b, v0.16b, v6.16b // XOR input and result + st1 {v0.16b}, [x1], #16 + subs x17, x17, #1 + // Update the counter. + add w6, w6, #1 + rev w7, w6 + mov v7.s[3], w7 + b.ls Lctr32_done + +Lctr32_prep_loop: + // _vpaes_encrypt_core takes its input from v7, while _vpaes_encrypt_2x + // uses v14 and v15. + mov v15.16b, v7.16b + mov v14.16b, v7.16b + add w6, w6, #1 + rev w7, w6 + mov v15.s[3], w7 + +Lctr32_loop: + ld1 {v6.16b,v7.16b}, [x0], #32 // Load input ahead of time + bl _vpaes_encrypt_2x + eor v0.16b, v0.16b, v6.16b // XOR input and result + eor v1.16b, v1.16b, v7.16b // XOR input and result (#2) + st1 {v0.16b,v1.16b}, [x1], #32 + subs x17, x17, #2 + // Update the counter. + add w7, w6, #1 + add w6, w6, #2 + rev w7, w7 + mov v14.s[3], w7 + rev w7, w6 + mov v15.s[3], w7 + b.hi Lctr32_loop + +Lctr32_done: + ldp d14,d15,[sp],#16 + ldp d12,d13,[sp],#16 + ldp d10,d11,[sp],#16 + ldp d8,d9,[sp],#16 + ldp x29,x30,[sp],#16 + AARCH64_VALIDATE_LINK_REGISTER + ret + +#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(_WIN32) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86_64-elf.S temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86_64-elf.S --- temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86_64-elf.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86_64-elf.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,13 +1,9 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__ELF__) .text @@ -108,7 +104,7 @@ movdqa 64(%r11,%r10,1),%xmm1 pxor %xmm4,%xmm0 .byte 102,15,56,0,193 - .byte 0xf3,0xc3 + ret .cfi_endproc .size _vpaes_encrypt_core,.-_vpaes_encrypt_core @@ -283,7 +279,7 @@ pxor %xmm12,%xmm6 .byte 102,15,56,0,193 .byte 102,15,56,0,241 - .byte 0xf3,0xc3 + ret .cfi_endproc .size _vpaes_encrypt_core_2x,.-_vpaes_encrypt_core_2x @@ -412,7 +408,7 @@ pxor %xmm5,%xmm5 pxor %xmm6,%xmm6 pxor %xmm7,%xmm7 - .byte 0xf3,0xc3 + ret .cfi_endproc .size _vpaes_schedule_core,.-_vpaes_schedule_core @@ -490,7 +486,7 @@ pxor %xmm7,%xmm0 movdqa %xmm0,%xmm7 - .byte 0xf3,0xc3 + ret .cfi_endproc .size _vpaes_schedule_round,.-_vpaes_schedule_round @@ -516,7 +512,7 @@ movdqa 16(%r11),%xmm0 .byte 102,15,56,0,193 pxor %xmm2,%xmm0 - .byte 0xf3,0xc3 + ret .cfi_endproc .size _vpaes_schedule_transform,.-_vpaes_schedule_transform @@ -566,19 +562,20 @@ addq $-16,%r8 andq $0x30,%r8 movdqu %xmm3,(%rdx) - .byte 0xf3,0xc3 + ret .cfi_endproc .size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle -.globl GFp_vpaes_set_encrypt_key -.hidden GFp_vpaes_set_encrypt_key -.type GFp_vpaes_set_encrypt_key,@function +.globl vpaes_set_encrypt_key +.hidden vpaes_set_encrypt_key +.type vpaes_set_encrypt_key,@function .align 16 -GFp_vpaes_set_encrypt_key: +vpaes_set_encrypt_key: .cfi_startproc +_CET_ENDBR #ifdef BORINGSSL_DISPATCH_TEST .extern BORINGSSL_function_hit .hidden BORINGSSL_function_hit @@ -594,29 +591,36 @@ movl $0x30,%r8d call _vpaes_schedule_core xorl %eax,%eax - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_vpaes_set_encrypt_key,.-GFp_vpaes_set_encrypt_key +.size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key -.globl GFp_vpaes_encrypt -.hidden GFp_vpaes_encrypt -.type GFp_vpaes_encrypt,@function +.globl vpaes_encrypt +.hidden vpaes_encrypt +.type vpaes_encrypt,@function .align 16 -GFp_vpaes_encrypt: +vpaes_encrypt: .cfi_startproc +_CET_ENDBR +#ifdef BORINGSSL_DISPATCH_TEST +.extern BORINGSSL_function_hit +.hidden BORINGSSL_function_hit + movb $1,BORINGSSL_function_hit+4(%rip) +#endif movdqu (%rdi),%xmm0 call _vpaes_preheat call _vpaes_encrypt_core movdqu %xmm0,(%rsi) - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_vpaes_encrypt,.-GFp_vpaes_encrypt -.globl GFp_vpaes_ctr32_encrypt_blocks -.hidden GFp_vpaes_ctr32_encrypt_blocks -.type GFp_vpaes_ctr32_encrypt_blocks,@function +.size vpaes_encrypt,.-vpaes_encrypt +.globl vpaes_ctr32_encrypt_blocks +.hidden vpaes_ctr32_encrypt_blocks +.type vpaes_ctr32_encrypt_blocks,@function .align 16 -GFp_vpaes_ctr32_encrypt_blocks: +vpaes_ctr32_encrypt_blocks: .cfi_startproc +_CET_ENDBR xchgq %rcx,%rdx testq %rcx,%rcx @@ -671,9 +675,9 @@ .Lctr32_done: .Lctr32_abort: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_vpaes_ctr32_encrypt_blocks,.-GFp_vpaes_ctr32_encrypt_blocks +.size vpaes_ctr32_encrypt_blocks,.-vpaes_ctr32_encrypt_blocks @@ -692,7 +696,7 @@ movdqa 64(%r10),%xmm12 movdqa 80(%r10),%xmm15 movdqa 96(%r10),%xmm14 - .byte 0xf3,0xc3 + ret .cfi_endproc .size _vpaes_preheat,.-_vpaes_preheat @@ -701,6 +705,7 @@ .type _vpaes_consts,@object +.section .rodata .align 64 _vpaes_consts: .Lk_inv: @@ -769,5 +774,5 @@ .byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0 .align 64 .size _vpaes_consts,.-_vpaes_consts +.text #endif -.section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86_64-macosx.S temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86_64-macosx.S --- temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86_64-macosx.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86_64-macosx.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,13 +1,9 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__APPLE__) .text @@ -108,7 +104,7 @@ movdqa 64(%r11,%r10,1),%xmm1 pxor %xmm4,%xmm0 .byte 102,15,56,0,193 - .byte 0xf3,0xc3 + ret @@ -283,7 +279,7 @@ pxor %xmm12,%xmm6 .byte 102,15,56,0,193 .byte 102,15,56,0,241 - .byte 0xf3,0xc3 + ret @@ -412,7 +408,7 @@ pxor %xmm5,%xmm5 pxor %xmm6,%xmm6 pxor %xmm7,%xmm7 - .byte 0xf3,0xc3 + ret @@ -490,7 +486,7 @@ pxor %xmm7,%xmm0 movdqa %xmm0,%xmm7 - .byte 0xf3,0xc3 + ret @@ -516,7 +512,7 @@ movdqa 16(%r11),%xmm0 .byte 102,15,56,0,193 pxor %xmm2,%xmm0 - .byte 0xf3,0xc3 + ret @@ -566,19 +562,20 @@ addq $-16,%r8 andq $0x30,%r8 movdqu %xmm3,(%rdx) - .byte 0xf3,0xc3 + ret -.globl _GFp_vpaes_set_encrypt_key -.private_extern _GFp_vpaes_set_encrypt_key +.globl _vpaes_set_encrypt_key +.private_extern _vpaes_set_encrypt_key .p2align 4 -_GFp_vpaes_set_encrypt_key: +_vpaes_set_encrypt_key: +_CET_ENDBR #ifdef BORINGSSL_DISPATCH_TEST movb $1,_BORINGSSL_function_hit+5(%rip) @@ -593,29 +590,35 @@ movl $0x30,%r8d call _vpaes_schedule_core xorl %eax,%eax - .byte 0xf3,0xc3 + ret -.globl _GFp_vpaes_encrypt -.private_extern _GFp_vpaes_encrypt +.globl _vpaes_encrypt +.private_extern _vpaes_encrypt .p2align 4 -_GFp_vpaes_encrypt: +_vpaes_encrypt: + +_CET_ENDBR +#ifdef BORINGSSL_DISPATCH_TEST + movb $1,_BORINGSSL_function_hit+4(%rip) +#endif movdqu (%rdi),%xmm0 call _vpaes_preheat call _vpaes_encrypt_core movdqu %xmm0,(%rsi) - .byte 0xf3,0xc3 + ret -.globl _GFp_vpaes_ctr32_encrypt_blocks -.private_extern _GFp_vpaes_ctr32_encrypt_blocks +.globl _vpaes_ctr32_encrypt_blocks +.private_extern _vpaes_ctr32_encrypt_blocks .p2align 4 -_GFp_vpaes_ctr32_encrypt_blocks: +_vpaes_ctr32_encrypt_blocks: +_CET_ENDBR xchgq %rcx,%rdx testq %rcx,%rcx @@ -670,7 +673,7 @@ L$ctr32_done: L$ctr32_abort: - .byte 0xf3,0xc3 + ret @@ -691,7 +694,7 @@ movdqa 64(%r10),%xmm12 movdqa 80(%r10),%xmm15 movdqa 96(%r10),%xmm14 - .byte 0xf3,0xc3 + ret @@ -700,6 +703,7 @@ +.section __DATA,__const .p2align 6 _vpaes_consts: L$k_inv: @@ -768,4 +772,5 @@ .byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0 .p2align 6 +.text #endif Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86_64-nasm.obj and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86_64-nasm.obj differ diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86-elf.S temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86-elf.S --- temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86-elf.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86-elf.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,11 +1,12 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__i386__) -#if defined(BORINGSSL_PREFIX) -#include -#endif +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__) .text +#ifdef BORINGSSL_DISPATCH_TEST +#endif .align 64 .L_vpaes_consts: .long 218628480,235210255,168496130,67568393 @@ -330,16 +331,28 @@ movdqu %xmm3,(%edx) ret .size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle -.globl GFp_vpaes_set_encrypt_key -.hidden GFp_vpaes_set_encrypt_key -.type GFp_vpaes_set_encrypt_key,@function +.globl vpaes_set_encrypt_key +.hidden vpaes_set_encrypt_key +.type vpaes_set_encrypt_key,@function .align 16 -GFp_vpaes_set_encrypt_key: -.L_GFp_vpaes_set_encrypt_key_begin: +vpaes_set_encrypt_key: +.L_vpaes_set_encrypt_key_begin: pushl %ebp pushl %ebx pushl %esi pushl %edi +#ifdef BORINGSSL_DISPATCH_TEST + pushl %ebx + pushl %edx + call .L012pic +.L012pic: + popl %ebx + leal BORINGSSL_function_hit+5-.L012pic(%ebx),%ebx + movl $1,%edx + movb %dl,(%ebx) + popl %edx + popl %ebx +#endif movl 20(%esp),%esi leal -56(%esp),%ebx movl 24(%esp),%eax @@ -353,9 +366,9 @@ movl %ebx,240(%edx) movl $48,%ecx movl $0,%edi - leal .L_vpaes_consts+0x30-.L012pic_point,%ebp + leal .L_vpaes_consts+0x30-.L013pic_point,%ebp call _vpaes_schedule_core -.L012pic_point: +.L013pic_point: movl 48(%esp),%esp xorl %eax,%eax popl %edi @@ -363,20 +376,32 @@ popl %ebx popl %ebp ret -.size GFp_vpaes_set_encrypt_key,.-.L_GFp_vpaes_set_encrypt_key_begin -.globl GFp_vpaes_encrypt -.hidden GFp_vpaes_encrypt -.type GFp_vpaes_encrypt,@function +.size vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin +.globl vpaes_encrypt +.hidden vpaes_encrypt +.type vpaes_encrypt,@function .align 16 -GFp_vpaes_encrypt: -.L_GFp_vpaes_encrypt_begin: +vpaes_encrypt: +.L_vpaes_encrypt_begin: pushl %ebp pushl %ebx pushl %esi pushl %edi - leal .L_vpaes_consts+0x30-.L013pic_point,%ebp +#ifdef BORINGSSL_DISPATCH_TEST + pushl %ebx + pushl %edx + call .L014pic +.L014pic: + popl %ebx + leal BORINGSSL_function_hit+4-.L014pic(%ebx),%ebx + movl $1,%edx + movb %dl,(%ebx) + popl %edx + popl %ebx +#endif + leal .L_vpaes_consts+0x30-.L015pic_point,%ebp call _vpaes_preheat -.L013pic_point: +.L015pic_point: movl 20(%esp),%esi leal -56(%esp),%ebx movl 24(%esp),%edi @@ -393,6 +418,5 @@ popl %ebx popl %ebp ret -.size GFp_vpaes_encrypt,.-.L_GFp_vpaes_encrypt_begin -#endif -.section .note.GNU-stack,"",@progbits +.size vpaes_encrypt,.-.L_vpaes_encrypt_begin +#endif // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86-macosx.S temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86-macosx.S --- temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86-macosx.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86-macosx.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,381 +0,0 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. - -#if defined(__i386__) -#if defined(BORINGSSL_PREFIX) -#include -#endif -.text -.align 6,0x90 -L_vpaes_consts: -.long 218628480,235210255,168496130,67568393 -.long 252381056,17041926,33884169,51187212 -.long 252645135,252645135,252645135,252645135 -.long 1512730624,3266504856,1377990664,3401244816 -.long 830229760,1275146365,2969422977,3447763452 -.long 3411033600,2979783055,338359620,2782886510 -.long 4209124096,907596821,221174255,1006095553 -.long 191964160,3799684038,3164090317,1589111125 -.long 182528256,1777043520,2877432650,3265356744 -.long 1874708224,3503451415,3305285752,363511674 -.long 1606117888,3487855781,1093350906,2384367825 -.long 197121,67569157,134941193,202313229 -.long 67569157,134941193,202313229,197121 -.long 134941193,202313229,197121,67569157 -.long 202313229,197121,67569157,134941193 -.long 33619971,100992007,168364043,235736079 -.long 235736079,33619971,100992007,168364043 -.long 168364043,235736079,33619971,100992007 -.long 100992007,168364043,235736079,33619971 -.long 50462976,117835012,185207048,252579084 -.long 252314880,51251460,117574920,184942860 -.long 184682752,252054788,50987272,118359308 -.long 118099200,185467140,251790600,50727180 -.long 2946363062,528716217,1300004225,1881839624 -.long 1532713819,1532713819,1532713819,1532713819 -.long 3602276352,4288629033,3737020424,4153884961 -.long 1354558464,32357713,2958822624,3775749553 -.long 1201988352,132424512,1572796698,503232858 -.long 2213177600,1597421020,4103937655,675398315 -.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 -.byte 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83 -.byte 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117 -.byte 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105 -.byte 118,101,114,115,105,116,121,41,0 -.align 6,0x90 -.private_extern __vpaes_preheat -.align 4 -__vpaes_preheat: - addl (%esp),%ebp - movdqa -48(%ebp),%xmm7 - movdqa -16(%ebp),%xmm6 - ret -.private_extern __vpaes_encrypt_core -.align 4 -__vpaes_encrypt_core: - movl $16,%ecx - movl 240(%edx),%eax - movdqa %xmm6,%xmm1 - movdqa (%ebp),%xmm2 - pandn %xmm0,%xmm1 - pand %xmm6,%xmm0 - movdqu (%edx),%xmm5 -.byte 102,15,56,0,208 - movdqa 16(%ebp),%xmm0 - pxor %xmm5,%xmm2 - psrld $4,%xmm1 - addl $16,%edx -.byte 102,15,56,0,193 - leal 192(%ebp),%ebx - pxor %xmm2,%xmm0 - jmp L000enc_entry -.align 4,0x90 -L001enc_loop: - movdqa 32(%ebp),%xmm4 - movdqa 48(%ebp),%xmm0 -.byte 102,15,56,0,226 -.byte 102,15,56,0,195 - pxor %xmm5,%xmm4 - movdqa 64(%ebp),%xmm5 - pxor %xmm4,%xmm0 - movdqa -64(%ebx,%ecx,1),%xmm1 -.byte 102,15,56,0,234 - movdqa 80(%ebp),%xmm2 - movdqa (%ebx,%ecx,1),%xmm4 -.byte 102,15,56,0,211 - movdqa %xmm0,%xmm3 - pxor %xmm5,%xmm2 -.byte 102,15,56,0,193 - addl $16,%edx - pxor %xmm2,%xmm0 -.byte 102,15,56,0,220 - addl $16,%ecx - pxor %xmm0,%xmm3 -.byte 102,15,56,0,193 - andl $48,%ecx - subl $1,%eax - pxor %xmm3,%xmm0 -L000enc_entry: - movdqa %xmm6,%xmm1 - movdqa -32(%ebp),%xmm5 - pandn %xmm0,%xmm1 - psrld $4,%xmm1 - pand %xmm6,%xmm0 -.byte 102,15,56,0,232 - movdqa %xmm7,%xmm3 - pxor %xmm1,%xmm0 -.byte 102,15,56,0,217 - movdqa %xmm7,%xmm4 - pxor %xmm5,%xmm3 -.byte 102,15,56,0,224 - movdqa %xmm7,%xmm2 - pxor %xmm5,%xmm4 -.byte 102,15,56,0,211 - movdqa %xmm7,%xmm3 - pxor %xmm0,%xmm2 -.byte 102,15,56,0,220 - movdqu (%edx),%xmm5 - pxor %xmm1,%xmm3 - jnz L001enc_loop - movdqa 96(%ebp),%xmm4 - movdqa 112(%ebp),%xmm0 -.byte 102,15,56,0,226 - pxor %xmm5,%xmm4 -.byte 102,15,56,0,195 - movdqa 64(%ebx,%ecx,1),%xmm1 - pxor %xmm4,%xmm0 -.byte 102,15,56,0,193 - ret -.private_extern __vpaes_schedule_core -.align 4 -__vpaes_schedule_core: - addl (%esp),%ebp - movdqu (%esi),%xmm0 - movdqa 320(%ebp),%xmm2 - movdqa %xmm0,%xmm3 - leal (%ebp),%ebx - movdqa %xmm2,4(%esp) - call __vpaes_schedule_transform - movdqa %xmm0,%xmm7 - testl %edi,%edi - jnz L002schedule_am_decrypting - movdqu %xmm0,(%edx) - jmp L003schedule_go -L002schedule_am_decrypting: - movdqa 256(%ebp,%ecx,1),%xmm1 -.byte 102,15,56,0,217 - movdqu %xmm3,(%edx) - xorl $48,%ecx -L003schedule_go: - cmpl $192,%eax - ja L004schedule_256 -L005schedule_128: - movl $10,%eax -L006loop_schedule_128: - call __vpaes_schedule_round - decl %eax - jz L007schedule_mangle_last - call __vpaes_schedule_mangle - jmp L006loop_schedule_128 -.align 4,0x90 -L004schedule_256: - movdqu 16(%esi),%xmm0 - call __vpaes_schedule_transform - movl $7,%eax -L008loop_schedule_256: - call __vpaes_schedule_mangle - movdqa %xmm0,%xmm6 - call __vpaes_schedule_round - decl %eax - jz L007schedule_mangle_last - call __vpaes_schedule_mangle - pshufd $255,%xmm0,%xmm0 - movdqa %xmm7,20(%esp) - movdqa %xmm6,%xmm7 - call L_vpaes_schedule_low_round - movdqa 20(%esp),%xmm7 - jmp L008loop_schedule_256 -.align 4,0x90 -L007schedule_mangle_last: - leal 384(%ebp),%ebx - testl %edi,%edi - jnz L009schedule_mangle_last_dec - movdqa 256(%ebp,%ecx,1),%xmm1 -.byte 102,15,56,0,193 - leal 352(%ebp),%ebx - addl $32,%edx -L009schedule_mangle_last_dec: - addl $-16,%edx - pxor 336(%ebp),%xmm0 - call __vpaes_schedule_transform - movdqu %xmm0,(%edx) - pxor %xmm0,%xmm0 - pxor %xmm1,%xmm1 - pxor %xmm2,%xmm2 - pxor %xmm3,%xmm3 - pxor %xmm4,%xmm4 - pxor %xmm5,%xmm5 - pxor %xmm6,%xmm6 - pxor %xmm7,%xmm7 - ret -.private_extern __vpaes_schedule_round -.align 4 -__vpaes_schedule_round: - movdqa 8(%esp),%xmm2 - pxor %xmm1,%xmm1 -.byte 102,15,58,15,202,15 -.byte 102,15,58,15,210,15 - pxor %xmm1,%xmm7 - pshufd $255,%xmm0,%xmm0 -.byte 102,15,58,15,192,1 - movdqa %xmm2,8(%esp) -L_vpaes_schedule_low_round: - movdqa %xmm7,%xmm1 - pslldq $4,%xmm7 - pxor %xmm1,%xmm7 - movdqa %xmm7,%xmm1 - pslldq $8,%xmm7 - pxor %xmm1,%xmm7 - pxor 336(%ebp),%xmm7 - movdqa -16(%ebp),%xmm4 - movdqa -48(%ebp),%xmm5 - movdqa %xmm4,%xmm1 - pandn %xmm0,%xmm1 - psrld $4,%xmm1 - pand %xmm4,%xmm0 - movdqa -32(%ebp),%xmm2 -.byte 102,15,56,0,208 - pxor %xmm1,%xmm0 - movdqa %xmm5,%xmm3 -.byte 102,15,56,0,217 - pxor %xmm2,%xmm3 - movdqa %xmm5,%xmm4 -.byte 102,15,56,0,224 - pxor %xmm2,%xmm4 - movdqa %xmm5,%xmm2 -.byte 102,15,56,0,211 - pxor %xmm0,%xmm2 - movdqa %xmm5,%xmm3 -.byte 102,15,56,0,220 - pxor %xmm1,%xmm3 - movdqa 32(%ebp),%xmm4 -.byte 102,15,56,0,226 - movdqa 48(%ebp),%xmm0 -.byte 102,15,56,0,195 - pxor %xmm4,%xmm0 - pxor %xmm7,%xmm0 - movdqa %xmm0,%xmm7 - ret -.private_extern __vpaes_schedule_transform -.align 4 -__vpaes_schedule_transform: - movdqa -16(%ebp),%xmm2 - movdqa %xmm2,%xmm1 - pandn %xmm0,%xmm1 - psrld $4,%xmm1 - pand %xmm2,%xmm0 - movdqa (%ebx),%xmm2 -.byte 102,15,56,0,208 - movdqa 16(%ebx),%xmm0 -.byte 102,15,56,0,193 - pxor %xmm2,%xmm0 - ret -.private_extern __vpaes_schedule_mangle -.align 4 -__vpaes_schedule_mangle: - movdqa %xmm0,%xmm4 - movdqa 128(%ebp),%xmm5 - testl %edi,%edi - jnz L010schedule_mangle_dec - addl $16,%edx - pxor 336(%ebp),%xmm4 -.byte 102,15,56,0,229 - movdqa %xmm4,%xmm3 -.byte 102,15,56,0,229 - pxor %xmm4,%xmm3 -.byte 102,15,56,0,229 - pxor %xmm4,%xmm3 - jmp L011schedule_mangle_both -.align 4,0x90 -L010schedule_mangle_dec: - movdqa -16(%ebp),%xmm2 - leal (%ebp),%esi - movdqa %xmm2,%xmm1 - pandn %xmm4,%xmm1 - psrld $4,%xmm1 - pand %xmm2,%xmm4 - movdqa (%esi),%xmm2 -.byte 102,15,56,0,212 - movdqa 16(%esi),%xmm3 -.byte 102,15,56,0,217 - pxor %xmm2,%xmm3 -.byte 102,15,56,0,221 - movdqa 32(%esi),%xmm2 -.byte 102,15,56,0,212 - pxor %xmm3,%xmm2 - movdqa 48(%esi),%xmm3 -.byte 102,15,56,0,217 - pxor %xmm2,%xmm3 -.byte 102,15,56,0,221 - movdqa 64(%esi),%xmm2 -.byte 102,15,56,0,212 - pxor %xmm3,%xmm2 - movdqa 80(%esi),%xmm3 -.byte 102,15,56,0,217 - pxor %xmm2,%xmm3 -.byte 102,15,56,0,221 - movdqa 96(%esi),%xmm2 -.byte 102,15,56,0,212 - pxor %xmm3,%xmm2 - movdqa 112(%esi),%xmm3 -.byte 102,15,56,0,217 - pxor %xmm2,%xmm3 - addl $-16,%edx -L011schedule_mangle_both: - movdqa 256(%ebp,%ecx,1),%xmm1 -.byte 102,15,56,0,217 - addl $-16,%ecx - andl $48,%ecx - movdqu %xmm3,(%edx) - ret -.globl _GFp_vpaes_set_encrypt_key -.private_extern _GFp_vpaes_set_encrypt_key -.align 4 -_GFp_vpaes_set_encrypt_key: -L_GFp_vpaes_set_encrypt_key_begin: - pushl %ebp - pushl %ebx - pushl %esi - pushl %edi - movl 20(%esp),%esi - leal -56(%esp),%ebx - movl 24(%esp),%eax - andl $-16,%ebx - movl 28(%esp),%edx - xchgl %esp,%ebx - movl %ebx,48(%esp) - movl %eax,%ebx - shrl $5,%ebx - addl $5,%ebx - movl %ebx,240(%edx) - movl $48,%ecx - movl $0,%edi - leal L_vpaes_consts+0x30-L012pic_point,%ebp - call __vpaes_schedule_core -L012pic_point: - movl 48(%esp),%esp - xorl %eax,%eax - popl %edi - popl %esi - popl %ebx - popl %ebp - ret -.globl _GFp_vpaes_encrypt -.private_extern _GFp_vpaes_encrypt -.align 4 -_GFp_vpaes_encrypt: -L_GFp_vpaes_encrypt_begin: - pushl %ebp - pushl %ebx - pushl %esi - pushl %edi - leal L_vpaes_consts+0x30-L013pic_point,%ebp - call __vpaes_preheat -L013pic_point: - movl 20(%esp),%esi - leal -56(%esp),%ebx - movl 24(%esp),%edi - andl $-16,%ebx - movl 28(%esp),%edx - xchgl %esp,%ebx - movl %ebx,48(%esp) - movdqu (%esi),%xmm0 - call __vpaes_encrypt_core - movdqu %xmm0,(%edi) - movl 48(%esp),%esp - popl %edi - popl %esi - popl %ebx - popl %ebp - ret -#endif Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86-win32n.obj and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/pregenerated/vpaes-x86-win32n.obj differ diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont5-elf.S temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont5-elf.S --- temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont5-elf.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont5-elf.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,30 +1,27 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__ELF__) .text -.extern GFp_ia32cap_P -.hidden GFp_ia32cap_P +.extern OPENSSL_ia32cap_P +.hidden OPENSSL_ia32cap_P -.globl GFp_bn_mul_mont_gather5 -.hidden GFp_bn_mul_mont_gather5 -.type GFp_bn_mul_mont_gather5,@function +.globl bn_mul_mont_gather5 +.hidden bn_mul_mont_gather5 +.type bn_mul_mont_gather5,@function .align 64 -GFp_bn_mul_mont_gather5: +bn_mul_mont_gather5: .cfi_startproc +_CET_ENDBR movl %r9d,%r9d movq %rsp,%rax .cfi_def_cfa_register %rax testl $7,%r9d jnz .Lmul_enter - leaq GFp_ia32cap_P(%rip),%r11 + leaq OPENSSL_ia32cap_P(%rip),%r11 movl 8(%r11),%r11d jmp .Lmul4x_enter @@ -204,6 +201,7 @@ por %xmm2,%xmm0 por %xmm3,%xmm1 por %xmm1,%xmm0 + pshufd $0x4e,%xmm0,%xmm1 por %xmm1,%xmm0 leaq 256(%r12),%r12 @@ -327,6 +325,7 @@ por %xmm2,%xmm4 por %xmm3,%xmm5 por %xmm5,%xmm4 + pshufd $0x4e,%xmm4,%xmm0 por %xmm4,%xmm0 leaq 256(%r12),%r12 @@ -451,9 +450,9 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Lmul_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_bn_mul_mont_gather5,.-GFp_bn_mul_mont_gather5 +.size bn_mul_mont_gather5,.-bn_mul_mont_gather5 .type bn_mul4x_mont_gather5,@function .align 32 bn_mul4x_mont_gather5: @@ -556,7 +555,7 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Lmul4x_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc .size bn_mul4x_mont_gather5,.-bn_mul4x_mont_gather5 @@ -695,6 +694,7 @@ por %xmm2,%xmm0 por %xmm3,%xmm1 por %xmm1,%xmm0 + pshufd $0x4e,%xmm0,%xmm1 por %xmm1,%xmm0 leaq 256(%r12),%r12 @@ -902,6 +902,7 @@ por %xmm2,%xmm4 por %xmm3,%xmm5 por %xmm5,%xmm4 + pshufd $0x4e,%xmm4,%xmm0 por %xmm4,%xmm0 leaq 256(%r12),%r12 @@ -1087,15 +1088,16 @@ jmp .Lsqr4x_sub_entry .cfi_endproc .size mul4x_internal,.-mul4x_internal -.globl GFp_bn_power5 -.hidden GFp_bn_power5 -.type GFp_bn_power5,@function +.globl bn_power5 +.hidden bn_power5 +.type bn_power5,@function .align 32 -GFp_bn_power5: +bn_power5: .cfi_startproc +_CET_ENDBR movq %rsp,%rax .cfi_def_cfa_register %rax - leaq GFp_ia32cap_P(%rip),%r11 + leaq OPENSSL_ia32cap_P(%rip),%r11 movl 8(%r11),%r11d andl $0x80108,%r11d cmpl $0x80108,%r11d @@ -1220,18 +1222,19 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Lpower5_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_bn_power5,.-GFp_bn_power5 +.size bn_power5,.-bn_power5 -.globl GFp_bn_sqr8x_internal -.hidden GFp_bn_sqr8x_internal -.hidden GFp_bn_sqr8x_internal -.type GFp_bn_sqr8x_internal,@function +.globl bn_sqr8x_internal +.hidden bn_sqr8x_internal +.hidden bn_sqr8x_internal +.type bn_sqr8x_internal,@function .align 32 -GFp_bn_sqr8x_internal: +bn_sqr8x_internal: __bn_sqr8x_internal: .cfi_startproc +_CET_ENDBR @@ -2005,9 +2008,9 @@ cmpq %rdx,%rdi jb .L8x_reduction_loop - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_bn_sqr8x_internal,.-GFp_bn_sqr8x_internal +.size bn_sqr8x_internal,.-bn_sqr8x_internal .type __bn_post4x_internal,@function .align 32 __bn_post4x_internal: @@ -2061,190 +2064,9 @@ movq %r9,%r10 negq %r9 - .byte 0xf3,0xc3 + ret .cfi_endproc .size __bn_post4x_internal,.-__bn_post4x_internal -.globl GFp_bn_from_montgomery -.hidden GFp_bn_from_montgomery -.type GFp_bn_from_montgomery,@function -.align 32 -GFp_bn_from_montgomery: -.cfi_startproc - testl $7,%r9d - jz bn_from_mont8x - xorl %eax,%eax - .byte 0xf3,0xc3 -.cfi_endproc -.size GFp_bn_from_montgomery,.-GFp_bn_from_montgomery - -.type bn_from_mont8x,@function -.align 32 -bn_from_mont8x: -.cfi_startproc -.byte 0x67 - movq %rsp,%rax -.cfi_def_cfa_register %rax - pushq %rbx -.cfi_offset %rbx,-16 - pushq %rbp -.cfi_offset %rbp,-24 - pushq %r12 -.cfi_offset %r12,-32 - pushq %r13 -.cfi_offset %r13,-40 - pushq %r14 -.cfi_offset %r14,-48 - pushq %r15 -.cfi_offset %r15,-56 -.Lfrom_prologue: - - shll $3,%r9d - leaq (%r9,%r9,2),%r10 - negq %r9 - movq (%r8),%r8 - - - - - - - - - leaq -320(%rsp,%r9,2),%r11 - movq %rsp,%rbp - subq %rdi,%r11 - andq $4095,%r11 - cmpq %r11,%r10 - jb .Lfrom_sp_alt - subq %r11,%rbp - leaq -320(%rbp,%r9,2),%rbp - jmp .Lfrom_sp_done - -.align 32 -.Lfrom_sp_alt: - leaq 4096-320(,%r9,2),%r10 - leaq -320(%rbp,%r9,2),%rbp - subq %r10,%r11 - movq $0,%r10 - cmovcq %r10,%r11 - subq %r11,%rbp -.Lfrom_sp_done: - andq $-64,%rbp - movq %rsp,%r11 - subq %rbp,%r11 - andq $-4096,%r11 - leaq (%r11,%rbp,1),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja .Lfrom_page_walk - jmp .Lfrom_page_walk_done - -.Lfrom_page_walk: - leaq -4096(%rsp),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja .Lfrom_page_walk -.Lfrom_page_walk_done: - - movq %r9,%r10 - negq %r9 - - - - - - - - - - - movq %r8,32(%rsp) - movq %rax,40(%rsp) -.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x08 -.Lfrom_body: - movq %r9,%r11 - leaq 48(%rsp),%rax - pxor %xmm0,%xmm0 - jmp .Lmul_by_1 - -.align 32 -.Lmul_by_1: - movdqu (%rsi),%xmm1 - movdqu 16(%rsi),%xmm2 - movdqu 32(%rsi),%xmm3 - movdqa %xmm0,(%rax,%r9,1) - movdqu 48(%rsi),%xmm4 - movdqa %xmm0,16(%rax,%r9,1) -.byte 0x48,0x8d,0xb6,0x40,0x00,0x00,0x00 - movdqa %xmm1,(%rax) - movdqa %xmm0,32(%rax,%r9,1) - movdqa %xmm2,16(%rax) - movdqa %xmm0,48(%rax,%r9,1) - movdqa %xmm3,32(%rax) - movdqa %xmm4,48(%rax) - leaq 64(%rax),%rax - subq $64,%r11 - jnz .Lmul_by_1 - -.byte 102,72,15,110,207 -.byte 102,72,15,110,209 -.byte 0x67 - movq %rcx,%rbp -.byte 102,73,15,110,218 - leaq GFp_ia32cap_P(%rip),%r11 - movl 8(%r11),%r11d - andl $0x80108,%r11d - cmpl $0x80108,%r11d - jne .Lfrom_mont_nox - - leaq (%rax,%r9,1),%rdi - call __bn_sqrx8x_reduction - call __bn_postx4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp .Lfrom_mont_zero - -.align 32 -.Lfrom_mont_nox: - call __bn_sqr8x_reduction - call __bn_post4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp .Lfrom_mont_zero - -.align 32 -.Lfrom_mont_zero: - movq 40(%rsp),%rsi -.cfi_def_cfa %rsi,8 - movdqa %xmm0,0(%rax) - movdqa %xmm0,16(%rax) - movdqa %xmm0,32(%rax) - movdqa %xmm0,48(%rax) - leaq 64(%rax),%rax - subq $32,%r9 - jnz .Lfrom_mont_zero - - movq $1,%rax - movq -48(%rsi),%r15 -.cfi_restore %r15 - movq -40(%rsi),%r14 -.cfi_restore %r14 - movq -32(%rsi),%r13 -.cfi_restore %r13 - movq -24(%rsi),%r12 -.cfi_restore %r12 - movq -16(%rsi),%rbp -.cfi_restore %rbp - movq -8(%rsi),%rbx -.cfi_restore %rbx - leaq (%rsi),%rsp -.cfi_def_cfa_register %rsp -.Lfrom_epilogue: - .byte 0xf3,0xc3 -.cfi_endproc -.size bn_from_mont8x,.-bn_from_mont8x .type bn_mulx4x_mont_gather5,@function .align 32 bn_mulx4x_mont_gather5: @@ -2352,7 +2174,7 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Lmulx4x_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc .size bn_mulx4x_mont_gather5,.-bn_mulx4x_mont_gather5 @@ -2499,6 +2321,7 @@ por %xmm2,%xmm0 por %xmm3,%xmm1 pxor %xmm1,%xmm0 + pshufd $0x4e,%xmm0,%xmm1 por %xmm1,%xmm0 leaq 256(%rdi),%rdi @@ -2649,6 +2472,7 @@ por %xmm2,%xmm4 por %xmm3,%xmm5 por %xmm5,%xmm4 + pshufd $0x4e,%xmm4,%xmm0 por %xmm4,%xmm0 leaq 256(%rdi),%rdi @@ -2911,17 +2735,19 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Lpowerx5_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc .size bn_powerx5,.-bn_powerx5 -.globl GFp_bn_sqrx8x_internal -.hidden GFp_bn_sqrx8x_internal -.type GFp_bn_sqrx8x_internal,@function +.globl bn_sqrx8x_internal +.hidden bn_sqrx8x_internal +.hidden bn_sqrx8x_internal +.type bn_sqrx8x_internal,@function .align 32 -GFp_bn_sqrx8x_internal: +bn_sqrx8x_internal: __bn_sqrx8x_internal: .cfi_startproc +_CET_ENDBR @@ -3532,9 +3358,9 @@ leaq 64(%rdi,%rcx,1),%rdi cmpq 8+8(%rsp),%r8 jb .Lsqrx8x_reduction_loop - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_bn_sqrx8x_internal,.-GFp_bn_sqrx8x_internal +.size bn_sqrx8x_internal,.-bn_sqrx8x_internal .align 32 .type __bn_postx4x_internal,@function __bn_postx4x_internal: @@ -3585,17 +3411,27 @@ negq %r9 - .byte 0xf3,0xc3 + ret .cfi_endproc .size __bn_postx4x_internal,.-__bn_postx4x_internal -.globl GFp_bn_scatter5 -.hidden GFp_bn_scatter5 -.type GFp_bn_scatter5,@function +.globl bn_scatter5 +.hidden bn_scatter5 +.type bn_scatter5,@function .align 16 -GFp_bn_scatter5: +bn_scatter5: .cfi_startproc +_CET_ENDBR cmpl $0,%esi jz .Lscatter_epilogue + + + + + + + + + leaq (%rdx,%rcx,8),%rdx .Lscatter: movq (%rdi),%rax @@ -3605,17 +3441,18 @@ subl $1,%esi jnz .Lscatter .Lscatter_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_bn_scatter5,.-GFp_bn_scatter5 +.size bn_scatter5,.-bn_scatter5 -.globl GFp_bn_gather5 -.hidden GFp_bn_gather5 -.type GFp_bn_gather5,@function +.globl bn_gather5 +.hidden bn_gather5 +.type bn_gather5,@function .align 32 -GFp_bn_gather5: +bn_gather5: .cfi_startproc -.LSEH_begin_GFp_bn_gather5: +.LSEH_begin_bn_gather5: +_CET_ENDBR .byte 0x4c,0x8d,0x14,0x24 .cfi_def_cfa_register %r10 @@ -3764,6 +3601,7 @@ por %xmm3,%xmm5 por %xmm5,%xmm4 leaq 256(%r11),%r11 + pshufd $0x4e,%xmm4,%xmm0 por %xmm4,%xmm0 movq %xmm0,(%rdi) @@ -3773,14 +3611,15 @@ leaq (%r10),%rsp .cfi_def_cfa_register %rsp - .byte 0xf3,0xc3 -.LSEH_end_GFp_bn_gather5: + ret +.LSEH_end_bn_gather5: .cfi_endproc -.size GFp_bn_gather5,.-GFp_bn_gather5 +.size bn_gather5,.-bn_gather5 +.section .rodata .align 64 .Linc: .long 0,0, 1,1 .long 2,2, 2,2 .byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,119,105,116,104,32,115,99,97,116,116,101,114,47,103,97,116,104,101,114,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.text #endif -.section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont5-macosx.S temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont5-macosx.S --- temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont5-macosx.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont5-macosx.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,29 +1,26 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__APPLE__) .text -.globl _GFp_bn_mul_mont_gather5 -.private_extern _GFp_bn_mul_mont_gather5 +.globl _bn_mul_mont_gather5 +.private_extern _bn_mul_mont_gather5 .p2align 6 -_GFp_bn_mul_mont_gather5: +_bn_mul_mont_gather5: +_CET_ENDBR movl %r9d,%r9d movq %rsp,%rax testl $7,%r9d jnz L$mul_enter - leaq _GFp_ia32cap_P(%rip),%r11 + leaq _OPENSSL_ia32cap_P(%rip),%r11 movl 8(%r11),%r11d jmp L$mul4x_enter @@ -203,6 +200,7 @@ por %xmm2,%xmm0 por %xmm3,%xmm1 por %xmm1,%xmm0 + pshufd $0x4e,%xmm0,%xmm1 por %xmm1,%xmm0 leaq 256(%r12),%r12 @@ -326,6 +324,7 @@ por %xmm2,%xmm4 por %xmm3,%xmm5 por %xmm5,%xmm4 + pshufd $0x4e,%xmm4,%xmm0 por %xmm4,%xmm0 leaq 256(%r12),%r12 @@ -450,7 +449,7 @@ leaq (%rsi),%rsp L$mul_epilogue: - .byte 0xf3,0xc3 + ret @@ -555,7 +554,7 @@ leaq (%rsi),%rsp L$mul4x_epilogue: - .byte 0xf3,0xc3 + ret @@ -694,6 +693,7 @@ por %xmm2,%xmm0 por %xmm3,%xmm1 por %xmm1,%xmm0 + pshufd $0x4e,%xmm0,%xmm1 por %xmm1,%xmm0 leaq 256(%r12),%r12 @@ -901,6 +901,7 @@ por %xmm2,%xmm4 por %xmm3,%xmm5 por %xmm5,%xmm4 + pshufd $0x4e,%xmm4,%xmm0 por %xmm4,%xmm0 leaq 256(%r12),%r12 @@ -1086,15 +1087,16 @@ jmp L$sqr4x_sub_entry -.globl _GFp_bn_power5 -.private_extern _GFp_bn_power5 +.globl _bn_power5 +.private_extern _bn_power5 .p2align 5 -_GFp_bn_power5: +_bn_power5: +_CET_ENDBR movq %rsp,%rax - leaq _GFp_ia32cap_P(%rip),%r11 + leaq _OPENSSL_ia32cap_P(%rip),%r11 movl 8(%r11),%r11d andl $0x80108,%r11d cmpl $0x80108,%r11d @@ -1219,18 +1221,19 @@ leaq (%rsi),%rsp L$power5_epilogue: - .byte 0xf3,0xc3 + ret -.globl _GFp_bn_sqr8x_internal -.private_extern _GFp_bn_sqr8x_internal -.private_extern _GFp_bn_sqr8x_internal +.globl _bn_sqr8x_internal +.private_extern _bn_sqr8x_internal +.private_extern _bn_sqr8x_internal .p2align 5 -_GFp_bn_sqr8x_internal: +_bn_sqr8x_internal: __bn_sqr8x_internal: +_CET_ENDBR @@ -2004,7 +2007,7 @@ cmpq %rdx,%rdi jb L$8x_reduction_loop - .byte 0xf3,0xc3 + ret @@ -2060,188 +2063,7 @@ movq %r9,%r10 negq %r9 - .byte 0xf3,0xc3 - - -.globl _GFp_bn_from_montgomery -.private_extern _GFp_bn_from_montgomery - -.p2align 5 -_GFp_bn_from_montgomery: - - testl $7,%r9d - jz bn_from_mont8x - xorl %eax,%eax - .byte 0xf3,0xc3 - - - - -.p2align 5 -bn_from_mont8x: - -.byte 0x67 - movq %rsp,%rax - - pushq %rbx - - pushq %rbp - - pushq %r12 - - pushq %r13 - - pushq %r14 - - pushq %r15 - -L$from_prologue: - - shll $3,%r9d - leaq (%r9,%r9,2),%r10 - negq %r9 - movq (%r8),%r8 - - - - - - - - - leaq -320(%rsp,%r9,2),%r11 - movq %rsp,%rbp - subq %rdi,%r11 - andq $4095,%r11 - cmpq %r11,%r10 - jb L$from_sp_alt - subq %r11,%rbp - leaq -320(%rbp,%r9,2),%rbp - jmp L$from_sp_done - -.p2align 5 -L$from_sp_alt: - leaq 4096-320(,%r9,2),%r10 - leaq -320(%rbp,%r9,2),%rbp - subq %r10,%r11 - movq $0,%r10 - cmovcq %r10,%r11 - subq %r11,%rbp -L$from_sp_done: - andq $-64,%rbp - movq %rsp,%r11 - subq %rbp,%r11 - andq $-4096,%r11 - leaq (%r11,%rbp,1),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja L$from_page_walk - jmp L$from_page_walk_done - -L$from_page_walk: - leaq -4096(%rsp),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja L$from_page_walk -L$from_page_walk_done: - - movq %r9,%r10 - negq %r9 - - - - - - - - - - - movq %r8,32(%rsp) - movq %rax,40(%rsp) - -L$from_body: - movq %r9,%r11 - leaq 48(%rsp),%rax - pxor %xmm0,%xmm0 - jmp L$mul_by_1 - -.p2align 5 -L$mul_by_1: - movdqu (%rsi),%xmm1 - movdqu 16(%rsi),%xmm2 - movdqu 32(%rsi),%xmm3 - movdqa %xmm0,(%rax,%r9,1) - movdqu 48(%rsi),%xmm4 - movdqa %xmm0,16(%rax,%r9,1) -.byte 0x48,0x8d,0xb6,0x40,0x00,0x00,0x00 - movdqa %xmm1,(%rax) - movdqa %xmm0,32(%rax,%r9,1) - movdqa %xmm2,16(%rax) - movdqa %xmm0,48(%rax,%r9,1) - movdqa %xmm3,32(%rax) - movdqa %xmm4,48(%rax) - leaq 64(%rax),%rax - subq $64,%r11 - jnz L$mul_by_1 - -.byte 102,72,15,110,207 -.byte 102,72,15,110,209 -.byte 0x67 - movq %rcx,%rbp -.byte 102,73,15,110,218 - leaq _GFp_ia32cap_P(%rip),%r11 - movl 8(%r11),%r11d - andl $0x80108,%r11d - cmpl $0x80108,%r11d - jne L$from_mont_nox - - leaq (%rax,%r9,1),%rdi - call __bn_sqrx8x_reduction - call __bn_postx4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp L$from_mont_zero - -.p2align 5 -L$from_mont_nox: - call __bn_sqr8x_reduction - call __bn_post4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp L$from_mont_zero - -.p2align 5 -L$from_mont_zero: - movq 40(%rsp),%rsi - - movdqa %xmm0,0(%rax) - movdqa %xmm0,16(%rax) - movdqa %xmm0,32(%rax) - movdqa %xmm0,48(%rax) - leaq 64(%rax),%rax - subq $32,%r9 - jnz L$from_mont_zero - - movq $1,%rax - movq -48(%rsi),%r15 - - movq -40(%rsi),%r14 - - movq -32(%rsi),%r13 - - movq -24(%rsi),%r12 - - movq -16(%rsi),%rbp - - movq -8(%rsi),%rbx - - leaq (%rsi),%rsp - -L$from_epilogue: - .byte 0xf3,0xc3 + ret @@ -2351,7 +2173,7 @@ leaq (%rsi),%rsp L$mulx4x_epilogue: - .byte 0xf3,0xc3 + ret @@ -2498,6 +2320,7 @@ por %xmm2,%xmm0 por %xmm3,%xmm1 pxor %xmm1,%xmm0 + pshufd $0x4e,%xmm0,%xmm1 por %xmm1,%xmm0 leaq 256(%rdi),%rdi @@ -2648,6 +2471,7 @@ por %xmm2,%xmm4 por %xmm3,%xmm5 por %xmm5,%xmm4 + pshufd $0x4e,%xmm4,%xmm0 por %xmm4,%xmm0 leaq 256(%rdi),%rdi @@ -2910,17 +2734,19 @@ leaq (%rsi),%rsp L$powerx5_epilogue: - .byte 0xf3,0xc3 + ret -.globl _GFp_bn_sqrx8x_internal -.private_extern _GFp_bn_sqrx8x_internal +.globl _bn_sqrx8x_internal +.private_extern _bn_sqrx8x_internal +.private_extern _bn_sqrx8x_internal .p2align 5 -_GFp_bn_sqrx8x_internal: +_bn_sqrx8x_internal: __bn_sqrx8x_internal: +_CET_ENDBR @@ -3531,7 +3357,7 @@ leaq 64(%rdi,%rcx,1),%rdi cmpq 8+8(%rsp),%r8 jb L$sqrx8x_reduction_loop - .byte 0xf3,0xc3 + ret .p2align 5 @@ -3584,17 +3410,27 @@ negq %r9 - .byte 0xf3,0xc3 + ret -.globl _GFp_bn_scatter5 -.private_extern _GFp_bn_scatter5 +.globl _bn_scatter5 +.private_extern _bn_scatter5 .p2align 4 -_GFp_bn_scatter5: +_bn_scatter5: +_CET_ENDBR cmpl $0,%esi jz L$scatter_epilogue + + + + + + + + + leaq (%rdx,%rcx,8),%rdx L$scatter: movq (%rdi),%rax @@ -3604,17 +3440,18 @@ subl $1,%esi jnz L$scatter L$scatter_epilogue: - .byte 0xf3,0xc3 + ret -.globl _GFp_bn_gather5 -.private_extern _GFp_bn_gather5 +.globl _bn_gather5 +.private_extern _bn_gather5 .p2align 5 -_GFp_bn_gather5: +_bn_gather5: -L$SEH_begin_GFp_bn_gather5: +L$SEH_begin_bn_gather5: +_CET_ENDBR .byte 0x4c,0x8d,0x14,0x24 @@ -3763,6 +3600,7 @@ por %xmm3,%xmm5 por %xmm5,%xmm4 leaq 256(%r11),%r11 + pshufd $0x4e,%xmm4,%xmm0 por %xmm4,%xmm0 movq %xmm0,(%rdi) @@ -3772,13 +3610,15 @@ leaq (%r10),%rsp - .byte 0xf3,0xc3 -L$SEH_end_GFp_bn_gather5: + ret +L$SEH_end_bn_gather5: +.section __DATA,__const .p2align 6 L$inc: .long 0,0, 1,1 .long 2,2, 2,2 .byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,119,105,116,104,32,115,99,97,116,116,101,114,47,103,97,116,104,101,114,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.text #endif Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont5-nasm.obj and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont5-nasm.obj differ diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont-elf.S temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont-elf.S --- temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont-elf.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont-elf.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,24 +1,21 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__ELF__) .text -.extern GFp_ia32cap_P -.hidden GFp_ia32cap_P +.extern OPENSSL_ia32cap_P +.hidden OPENSSL_ia32cap_P -.globl GFp_bn_mul_mont -.hidden GFp_bn_mul_mont -.type GFp_bn_mul_mont,@function +.globl bn_mul_mont +.hidden bn_mul_mont +.type bn_mul_mont,@function .align 16 -GFp_bn_mul_mont: +bn_mul_mont: .cfi_startproc +_CET_ENDBR movl %r9d,%r9d movq %rsp,%rax .cfi_def_cfa_register %rax @@ -26,7 +23,8 @@ jnz .Lmul_enter cmpl $8,%r9d jb .Lmul_enter - movl GFp_ia32cap_P+8(%rip),%r11d + leaq OPENSSL_ia32cap_P(%rip),%r11 + movl 8(%r11),%r11d cmpq %rsi,%rdx jne .Lmul4x_enter testl $7,%r9d @@ -264,9 +262,9 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Lmul_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc -.size GFp_bn_mul_mont,.-GFp_bn_mul_mont +.size bn_mul_mont,.-bn_mul_mont .type bn_mul4x_mont,@function .align 16 bn_mul4x_mont: @@ -698,13 +696,13 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Lmul4x_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc .size bn_mul4x_mont,.-bn_mul4x_mont -.extern GFp_bn_sqrx8x_internal -.hidden GFp_bn_sqrx8x_internal -.extern GFp_bn_sqr8x_internal -.hidden GFp_bn_sqr8x_internal +.extern bn_sqrx8x_internal +.hidden bn_sqrx8x_internal +.extern bn_sqr8x_internal +.hidden bn_sqr8x_internal .type bn_sqr8x_mont,@function .align 32 @@ -787,12 +785,13 @@ pxor %xmm0,%xmm0 .byte 102,72,15,110,207 .byte 102,73,15,110,218 - movl GFp_ia32cap_P+8(%rip),%eax + leaq OPENSSL_ia32cap_P(%rip),%rax + movl 8(%rax),%eax andl $0x80100,%eax cmpl $0x80100,%eax jne .Lsqr8x_nox - call GFp_bn_sqrx8x_internal + call bn_sqrx8x_internal @@ -806,7 +805,7 @@ .align 32 .Lsqr8x_nox: - call GFp_bn_sqr8x_internal + call bn_sqr8x_internal @@ -890,7 +889,7 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Lsqr8x_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc .size bn_sqr8x_mont,.-bn_sqr8x_mont .type bn_mulx4x_mont,@function @@ -1246,10 +1245,9 @@ leaq (%rsi),%rsp .cfi_def_cfa_register %rsp .Lmulx4x_epilogue: - .byte 0xf3,0xc3 + ret .cfi_endproc .size bn_mulx4x_mont,.-bn_mulx4x_mont .byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 16 #endif -.section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont-macosx.S temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont-macosx.S --- temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont-macosx.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont-macosx.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,23 +1,20 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -#define OPENSSL_NO_ASM -#endif -#endif +#include -#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__APPLE__) .text -.globl _GFp_bn_mul_mont -.private_extern _GFp_bn_mul_mont +.globl _bn_mul_mont +.private_extern _bn_mul_mont .p2align 4 -_GFp_bn_mul_mont: +_bn_mul_mont: +_CET_ENDBR movl %r9d,%r9d movq %rsp,%rax @@ -25,7 +22,8 @@ jnz L$mul_enter cmpl $8,%r9d jb L$mul_enter - movl _GFp_ia32cap_P+8(%rip),%r11d + leaq _OPENSSL_ia32cap_P(%rip),%r11 + movl 8(%r11),%r11d cmpq %rsi,%rdx jne L$mul4x_enter testl $7,%r9d @@ -263,7 +261,7 @@ leaq (%rsi),%rsp L$mul_epilogue: - .byte 0xf3,0xc3 + ret @@ -697,7 +695,7 @@ leaq (%rsi),%rsp L$mul4x_epilogue: - .byte 0xf3,0xc3 + ret @@ -784,12 +782,13 @@ pxor %xmm0,%xmm0 .byte 102,72,15,110,207 .byte 102,73,15,110,218 - movl _GFp_ia32cap_P+8(%rip),%eax + leaq _OPENSSL_ia32cap_P(%rip),%rax + movl 8(%rax),%eax andl $0x80100,%eax cmpl $0x80100,%eax jne L$sqr8x_nox - call _GFp_bn_sqrx8x_internal + call _bn_sqrx8x_internal @@ -803,7 +802,7 @@ .p2align 5 L$sqr8x_nox: - call _GFp_bn_sqr8x_internal + call _bn_sqr8x_internal @@ -887,7 +886,7 @@ leaq (%rsi),%rsp L$sqr8x_epilogue: - .byte 0xf3,0xc3 + ret @@ -1243,7 +1242,7 @@ leaq (%rsi),%rsp L$mulx4x_epilogue: - .byte 0xf3,0xc3 + ret .byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont-nasm.obj and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/pregenerated/x86_64-mont-nasm.obj differ diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/x86-mont-elf.S temporalio-1.3.0/vendor/ring/pregenerated/x86-mont-elf.S --- temporalio-1.3.0/vendor/ring/pregenerated/x86-mont-elf.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/x86-mont-elf.S 2023-10-30 19:40:00.000000000 +0000 @@ -1,17 +1,16 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. -#if defined(__i386__) -#if defined(BORINGSSL_PREFIX) -#include -#endif +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__) .text -.globl GFp_bn_mul_mont -.hidden GFp_bn_mul_mont -.type GFp_bn_mul_mont,@function +.globl bn_mul_mont +.hidden bn_mul_mont +.type bn_mul_mont,@function .align 16 -GFp_bn_mul_mont: -.L_GFp_bn_mul_mont_begin: +bn_mul_mont: +.L_bn_mul_mont_begin: pushl %ebp pushl %ebx pushl %esi @@ -65,7 +64,7 @@ call .L002PIC_me_up .L002PIC_me_up: popl %eax - leal GFp_ia32cap_P-.L002PIC_me_up(%eax),%eax + leal OPENSSL_ia32cap_P-.L002PIC_me_up(%eax),%eax btl $26,(%eax) movl $-1,%eax movd %eax,%mm7 @@ -216,11 +215,10 @@ popl %ebx popl %ebp ret -.size GFp_bn_mul_mont,.-.L_GFp_bn_mul_mont_begin +.size bn_mul_mont,.-.L_bn_mul_mont_begin .byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 .byte 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56 .byte 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 .byte 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 .byte 111,114,103,62,0 -#endif -.section .note.GNU-stack,"",@progbits +#endif // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__) diff -Nru temporalio-1.3.0/vendor/ring/pregenerated/x86-mont-macosx.S temporalio-1.3.0/vendor/ring/pregenerated/x86-mont-macosx.S --- temporalio-1.3.0/vendor/ring/pregenerated/x86-mont-macosx.S 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/pregenerated/x86-mont-macosx.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,227 +0,0 @@ -# This file is generated from a similarly-named Perl script in the BoringSSL -# source tree. Do not edit by hand. - -#if defined(__i386__) -#if defined(BORINGSSL_PREFIX) -#include -#endif -.text -.globl _GFp_bn_mul_mont -.private_extern _GFp_bn_mul_mont -.align 4 -_GFp_bn_mul_mont: -L_GFp_bn_mul_mont_begin: - pushl %ebp - pushl %ebx - pushl %esi - pushl %edi - xorl %eax,%eax - movl 40(%esp),%edi - leal 20(%esp),%esi - leal 24(%esp),%edx - addl $2,%edi - negl %edi - leal -32(%esp,%edi,4),%ebp - negl %edi - movl %ebp,%eax - subl %edx,%eax - andl $2047,%eax - subl %eax,%ebp - xorl %ebp,%edx - andl $2048,%edx - xorl $2048,%edx - subl %edx,%ebp - andl $-64,%ebp - movl %esp,%eax - subl %ebp,%eax - andl $-4096,%eax - movl %esp,%edx - leal (%ebp,%eax,1),%esp - movl (%esp),%eax - cmpl %ebp,%esp - ja L000page_walk - jmp L001page_walk_done -.align 4,0x90 -L000page_walk: - leal -4096(%esp),%esp - movl (%esp),%eax - cmpl %ebp,%esp - ja L000page_walk -L001page_walk_done: - movl (%esi),%eax - movl 4(%esi),%ebx - movl 8(%esi),%ecx - movl 12(%esi),%ebp - movl 16(%esi),%esi - movl (%esi),%esi - movl %eax,4(%esp) - movl %ebx,8(%esp) - movl %ecx,12(%esp) - movl %ebp,16(%esp) - movl %esi,20(%esp) - leal -3(%edi),%ebx - movl %edx,24(%esp) - call L002PIC_me_up -L002PIC_me_up: - popl %eax - movl L_GFp_ia32cap_P$non_lazy_ptr-L002PIC_me_up(%eax),%eax - btl $26,(%eax) - movl $-1,%eax - movd %eax,%mm7 - movl 8(%esp),%esi - movl 12(%esp),%edi - movl 16(%esp),%ebp - xorl %edx,%edx - xorl %ecx,%ecx - movd (%edi),%mm4 - movd (%esi),%mm5 - movd (%ebp),%mm3 - pmuludq %mm4,%mm5 - movq %mm5,%mm2 - movq %mm5,%mm0 - pand %mm7,%mm0 - pmuludq 20(%esp),%mm5 - pmuludq %mm5,%mm3 - paddq %mm0,%mm3 - movd 4(%ebp),%mm1 - movd 4(%esi),%mm0 - psrlq $32,%mm2 - psrlq $32,%mm3 - incl %ecx -.align 4,0x90 -L0031st: - pmuludq %mm4,%mm0 - pmuludq %mm5,%mm1 - paddq %mm0,%mm2 - paddq %mm1,%mm3 - movq %mm2,%mm0 - pand %mm7,%mm0 - movd 4(%ebp,%ecx,4),%mm1 - paddq %mm0,%mm3 - movd 4(%esi,%ecx,4),%mm0 - psrlq $32,%mm2 - movd %mm3,28(%esp,%ecx,4) - psrlq $32,%mm3 - leal 1(%ecx),%ecx - cmpl %ebx,%ecx - jl L0031st - pmuludq %mm4,%mm0 - pmuludq %mm5,%mm1 - paddq %mm0,%mm2 - paddq %mm1,%mm3 - movq %mm2,%mm0 - pand %mm7,%mm0 - paddq %mm0,%mm3 - movd %mm3,28(%esp,%ecx,4) - psrlq $32,%mm2 - psrlq $32,%mm3 - paddq %mm2,%mm3 - movq %mm3,32(%esp,%ebx,4) - incl %edx -L004outer: - xorl %ecx,%ecx - movd (%edi,%edx,4),%mm4 - movd (%esi),%mm5 - movd 32(%esp),%mm6 - movd (%ebp),%mm3 - pmuludq %mm4,%mm5 - paddq %mm6,%mm5 - movq %mm5,%mm0 - movq %mm5,%mm2 - pand %mm7,%mm0 - pmuludq 20(%esp),%mm5 - pmuludq %mm5,%mm3 - paddq %mm0,%mm3 - movd 36(%esp),%mm6 - movd 4(%ebp),%mm1 - movd 4(%esi),%mm0 - psrlq $32,%mm2 - psrlq $32,%mm3 - paddq %mm6,%mm2 - incl %ecx - decl %ebx -L005inner: - pmuludq %mm4,%mm0 - pmuludq %mm5,%mm1 - paddq %mm0,%mm2 - paddq %mm1,%mm3 - movq %mm2,%mm0 - movd 36(%esp,%ecx,4),%mm6 - pand %mm7,%mm0 - movd 4(%ebp,%ecx,4),%mm1 - paddq %mm0,%mm3 - movd 4(%esi,%ecx,4),%mm0 - psrlq $32,%mm2 - movd %mm3,28(%esp,%ecx,4) - psrlq $32,%mm3 - paddq %mm6,%mm2 - decl %ebx - leal 1(%ecx),%ecx - jnz L005inner - movl %ecx,%ebx - pmuludq %mm4,%mm0 - pmuludq %mm5,%mm1 - paddq %mm0,%mm2 - paddq %mm1,%mm3 - movq %mm2,%mm0 - pand %mm7,%mm0 - paddq %mm0,%mm3 - movd %mm3,28(%esp,%ecx,4) - psrlq $32,%mm2 - psrlq $32,%mm3 - movd 36(%esp,%ebx,4),%mm6 - paddq %mm2,%mm3 - paddq %mm6,%mm3 - movq %mm3,32(%esp,%ebx,4) - leal 1(%edx),%edx - cmpl %ebx,%edx - jle L004outer - emms -.align 4,0x90 -L006common_tail: - movl 16(%esp),%ebp - movl 4(%esp),%edi - leal 32(%esp),%esi - movl (%esi),%eax - movl %ebx,%ecx - xorl %edx,%edx -.align 4,0x90 -L007sub: - sbbl (%ebp,%edx,4),%eax - movl %eax,(%edi,%edx,4) - decl %ecx - movl 4(%esi,%edx,4),%eax - leal 1(%edx),%edx - jge L007sub - sbbl $0,%eax - movl $-1,%edx - xorl %eax,%edx - jmp L008copy -.align 4,0x90 -L008copy: - movl 32(%esp,%ebx,4),%esi - movl (%edi,%ebx,4),%ebp - movl %ecx,32(%esp,%ebx,4) - andl %eax,%esi - andl %edx,%ebp - orl %esi,%ebp - movl %ebp,(%edi,%ebx,4) - decl %ebx - jge L008copy - movl 24(%esp),%esp - movl $1,%eax - popl %edi - popl %esi - popl %ebx - popl %ebp - ret -.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 -.byte 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56 -.byte 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 -.byte 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 -.byte 111,114,103,62,0 -.section __IMPORT,__pointers,non_lazy_symbol_pointers -L_GFp_ia32cap_P$non_lazy_ptr: -.indirect_symbol _GFp_ia32cap_P -.long 0 -#endif Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/pregenerated/x86-mont-win32n.obj and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/pregenerated/x86-mont-win32n.obj differ diff -Nru temporalio-1.3.0/vendor/ring/src/aead/aes_gcm.rs temporalio-1.3.0/vendor/ring/src/aead/aes_gcm.rs --- temporalio-1.3.0/vendor/ring/src/aead/aes_gcm.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/aes_gcm.rs 2023-10-30 19:40:00.000000000 +0000 @@ -14,9 +14,11 @@ use super::{ aes::{self, Counter}, - gcm, shift, Aad, Block, Direction, Nonce, Tag, BLOCK_LEN, + block::{Block, BLOCK_LEN}, + gcm, shift, Aad, Nonce, Tag, }; -use crate::{aead, cpu, endian::*, error, polyfill}; +use crate::{aead, cpu, error, polyfill}; +use core::ops::RangeFrom; /// AES-128 in GCM mode with 128-bit tags and 96 bit nonces. pub static AES_128_GCM: aead::Algorithm = aead::Algorithm { @@ -38,6 +40,7 @@ max_input_len: AES_GCM_MAX_INPUT_LEN, }; +#[derive(Clone)] pub struct Key { gcm_key: gcm::Key, // First because it has a large alignment requirement. aes_key: aes::Key, @@ -58,49 +61,90 @@ ) -> Result { let aes_key = aes::Key::new(key, variant, cpu_features)?; let gcm_key = gcm::Key::new(aes_key.encrypt_block(Block::zero()), cpu_features); - Ok(aead::KeyInner::AesGcm(Key { aes_key, gcm_key })) + Ok(aead::KeyInner::AesGcm(Key { gcm_key, aes_key })) } const CHUNK_BLOCKS: usize = 3 * 1024 / 16; -fn aes_gcm_seal( - key: &aead::KeyInner, - nonce: Nonce, - aad: Aad<&[u8]>, - in_out: &mut [u8], - cpu_features: cpu::Features, -) -> Tag { - aead(key, nonce, aad, in_out, Direction::Sealing, cpu_features) -} +fn aes_gcm_seal(key: &aead::KeyInner, nonce: Nonce, aad: Aad<&[u8]>, in_out: &mut [u8]) -> Tag { + let Key { gcm_key, aes_key } = match key { + aead::KeyInner::AesGcm(key) => key, + _ => unreachable!(), + }; -fn aes_gcm_open( - key: &aead::KeyInner, - nonce: Nonce, - aad: Aad<&[u8]>, - in_prefix_len: usize, - in_out: &mut [u8], - cpu_features: cpu::Features, -) -> Tag { - aead( - key, - nonce, - aad, - in_out, - Direction::Opening { in_prefix_len }, - cpu_features, - ) + let mut ctr = Counter::one(nonce); + let tag_iv = ctr.increment(); + + let total_in_out_len = in_out.len(); + let aad_len = aad.0.len(); + let mut auth = gcm::Context::new(gcm_key, aad); + + #[cfg(target_arch = "x86_64")] + let in_out = { + if !aes_key.is_aes_hw() || !auth.is_avx2() { + in_out + } else { + use crate::c; + let (htable, xi) = auth.inner(); + prefixed_extern! { + // `HTable` and `Xi` should be 128-bit aligned. TODO: Can we shrink `HTable`? The + // assembly says it needs just nine values in that array. + fn aesni_gcm_encrypt( + input: *const u8, + output: *mut u8, + len: c::size_t, + key: &aes::AES_KEY, + ivec: &mut Counter, + Htable: &gcm::HTable, + Xi: &mut gcm::Xi) -> c::size_t; + } + let processed = unsafe { + aesni_gcm_encrypt( + in_out.as_ptr(), + in_out.as_mut_ptr(), + in_out.len(), + aes_key.inner_less_safe(), + &mut ctr, + htable, + xi, + ) + }; + + &mut in_out[processed..] + } + }; + + let (whole, remainder) = { + let in_out_len = in_out.len(); + let whole_len = in_out_len - (in_out_len % BLOCK_LEN); + in_out.split_at_mut(whole_len) + }; + + for chunk in whole.chunks_mut(CHUNK_BLOCKS * BLOCK_LEN) { + aes_key.ctr32_encrypt_within(chunk, 0.., &mut ctr); + auth.update_blocks(chunk); + } + + if !remainder.is_empty() { + let mut input = Block::zero(); + input.overwrite_part_at(0, remainder); + let mut output = aes_key.encrypt_iv_xor_block(ctr.into(), input); + output.zero_from(remainder.len()); + auth.update_block(output); + remainder.copy_from_slice(&output.as_ref()[..remainder.len()]); + } + + finish(aes_key, auth, tag_iv, aad_len, total_in_out_len) } -#[inline(always)] // Avoid branching on `direction`. -fn aead( +fn aes_gcm_open( key: &aead::KeyInner, nonce: Nonce, aad: Aad<&[u8]>, in_out: &mut [u8], - direction: Direction, - cpu_features: cpu::Features, + src: RangeFrom, ) -> Tag { - let Key { aes_key, gcm_key } = match key { + let Key { gcm_key, aes_key } = match key { aead::KeyInner::AesGcm(key) => key, _ => unreachable!(), }; @@ -109,27 +153,51 @@ let tag_iv = ctr.increment(); let aad_len = aad.0.len(); - let mut gcm_ctx = gcm::Context::new(gcm_key, aad, cpu_features); + let mut auth = gcm::Context::new(gcm_key, aad); - let in_prefix_len = match direction { - Direction::Opening { in_prefix_len } => in_prefix_len, - Direction::Sealing => 0, - }; + let in_prefix_len = src.start; let total_in_out_len = in_out.len() - in_prefix_len; - let in_out = integrated_aes_gcm( - aes_key, - &mut gcm_ctx, - in_out, - &mut ctr, - direction, - cpu_features, - ); - let in_out_len = in_out.len() - in_prefix_len; + #[cfg(target_arch = "x86_64")] + let in_out = { + if !aes_key.is_aes_hw() || !auth.is_avx2() { + in_out + } else { + use crate::c; + let (htable, xi) = auth.inner(); + prefixed_extern! { + // `HTable` and `Xi` should be 128-bit aligned. TODO: Can we shrink `HTable`? The + // assembly says it needs just nine values in that array. + fn aesni_gcm_decrypt( + input: *const u8, + output: *mut u8, + len: c::size_t, + key: &aes::AES_KEY, + ivec: &mut Counter, + Htable: &gcm::HTable, + Xi: &mut gcm::Xi) -> c::size_t; + } - // Process any (remaining) whole blocks. - let whole_len = in_out_len - (in_out_len % BLOCK_LEN); + let processed = unsafe { + aesni_gcm_decrypt( + in_out[src.clone()].as_ptr(), + in_out.as_mut_ptr(), + in_out.len() - src.start, + aes_key.inner_less_safe(), + &mut ctr, + htable, + xi, + ) + }; + &mut in_out[processed..] + } + }; + + let whole_len = { + let in_out_len = in_out.len() - in_prefix_len; + in_out_len - (in_out_len % BLOCK_LEN) + }; { let mut chunk_len = CHUNK_BLOCKS * BLOCK_LEN; let mut output = 0; @@ -142,138 +210,48 @@ break; } - if let Direction::Opening { .. } = direction { - gcm_ctx.update_blocks(&in_out[input..][..chunk_len]); - } - - aes_key.ctr32_encrypt_blocks( + auth.update_blocks(&in_out[input..][..chunk_len]); + aes_key.ctr32_encrypt_within( &mut in_out[output..][..(chunk_len + in_prefix_len)], - direction, + in_prefix_len.., &mut ctr, ); - - if let Direction::Sealing = direction { - gcm_ctx.update_blocks(&in_out[output..][..chunk_len]); - } - output += chunk_len; input += chunk_len; } } - // Process any remaining partial block. let remainder = &mut in_out[whole_len..]; shift::shift_partial((in_prefix_len, remainder), |remainder| { let mut input = Block::zero(); input.overwrite_part_at(0, remainder); - if let Direction::Opening { .. } = direction { - gcm_ctx.update_block(input); - } - let mut output = aes_key.encrypt_iv_xor_block(ctr.into(), input); - if let Direction::Sealing = direction { - output.zero_from(remainder.len()); - gcm_ctx.update_block(output); - } - output + auth.update_block(input); + aes_key.encrypt_iv_xor_block(ctr.into(), input) }); + finish(aes_key, auth, tag_iv, aad_len, total_in_out_len) +} + +fn finish( + aes_key: &aes::Key, + mut gcm_ctx: gcm::Context, + tag_iv: aes::Iv, + aad_len: usize, + in_out_len: usize, +) -> Tag { // Authenticate the final block containing the input lengths. let aad_bits = polyfill::u64_from_usize(aad_len) << 3; - let ciphertext_bits = polyfill::u64_from_usize(total_in_out_len) << 3; - gcm_ctx.update_block(Block::from_u64_be( - BigEndian::from(aad_bits), - BigEndian::from(ciphertext_bits), - )); + let ciphertext_bits = polyfill::u64_from_usize(in_out_len) << 3; + gcm_ctx.update_block(Block::from([aad_bits, ciphertext_bits])); // Finalize the tag and return it. gcm_ctx.pre_finish(|pre_tag| { - let bytes = tag_iv.into_bytes_less_safe(); - let mut tag = aes_key.encrypt_block(Block::from(&bytes)); - tag.bitxor_assign(pre_tag.into()); + let encrypted_iv = aes_key.encrypt_block(Block::from(tag_iv.as_bytes_less_safe())); + let tag = pre_tag ^ encrypted_iv; Tag(*tag.as_ref()) }) } -// Returns the data that wasn't processed. -#[cfg(target_arch = "x86_64")] -#[inline] // Optimize out the match on `direction`. -fn integrated_aes_gcm<'a>( - aes_key: &aes::Key, - gcm_ctx: &mut gcm::Context, - in_out: &'a mut [u8], - ctr: &mut Counter, - direction: Direction, - cpu_features: cpu::Features, -) -> &'a mut [u8] { - use crate::c; - - if !aes_key.is_aes_hw() || !gcm_ctx.is_avx2(cpu_features) { - return in_out; - } - - let processed = match direction { - Direction::Opening { in_prefix_len } => { - extern "C" { - fn GFp_aesni_gcm_decrypt( - input: *const u8, - output: *mut u8, - len: c::size_t, - key: &aes::AES_KEY, - ivec: &mut Counter, - gcm: &mut gcm::ContextInner, - ) -> c::size_t; - } - unsafe { - GFp_aesni_gcm_decrypt( - in_out[in_prefix_len..].as_ptr(), - in_out.as_mut_ptr(), - in_out.len() - in_prefix_len, - aes_key.inner_less_safe(), - ctr, - gcm_ctx.inner(), - ) - } - } - Direction::Sealing => { - extern "C" { - fn GFp_aesni_gcm_encrypt( - input: *const u8, - output: *mut u8, - len: c::size_t, - key: &aes::AES_KEY, - ivec: &mut Counter, - gcm: &mut gcm::ContextInner, - ) -> c::size_t; - } - unsafe { - GFp_aesni_gcm_encrypt( - in_out.as_ptr(), - in_out.as_mut_ptr(), - in_out.len(), - aes_key.inner_less_safe(), - ctr, - gcm_ctx.inner(), - ) - } - } - }; - - &mut in_out[processed..] -} - -#[cfg(not(target_arch = "x86_64"))] -#[inline] -fn integrated_aes_gcm<'a>( - _: &aes::Key, - _: &mut gcm::Context, - in_out: &'a mut [u8], - _: &mut Counter, - _: Direction, - _: cpu::Features, -) -> &'a mut [u8] { - in_out // This doesn't process any of the input so it all remains. -} - const AES_GCM_MAX_INPUT_LEN: u64 = super::max_input_len(BLOCK_LEN, 2); #[cfg(test)] diff -Nru temporalio-1.3.0/vendor/ring/src/aead/aes.rs temporalio-1.3.0/vendor/ring/src/aead/aes.rs --- temporalio-1.3.0/vendor/ring/src/aead/aes.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/aes.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,17 +12,29 @@ // OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -use super::{counter, iv::Iv, quic::Sample, Block, Direction, BLOCK_LEN}; -use crate::{bits::BitLength, c, cpu, endian::*, error, polyfill}; +use super::{ + block::{Block, BLOCK_LEN}, + nonce::Nonce, + quic::Sample, +}; +use crate::{ + bits::BitLength, + c, cpu, + endian::{ArrayEncoding, BigEndian}, + error, + polyfill::{self, ChunksFixed}, +}; +use core::ops::RangeFrom; -pub(crate) struct Key { +#[derive(Clone)] +pub(super) struct Key { inner: AES_KEY, cpu_features: cpu::Features, } macro_rules! set_encrypt_key { ( $name:ident, $bytes:expr, $key_bits:expr, $key:expr ) => {{ - extern "C" { + prefixed_extern! { fn $name(user_key: *const u8, bits: c::uint, key: &mut AES_KEY) -> c::int; } set_encrypt_key($name, $bytes, $key_bits, $key) @@ -46,7 +58,7 @@ macro_rules! encrypt_block { ($name:ident, $block:expr, $key:expr) => {{ - extern "C" { + prefixed_extern! { fn $name(a: &Block, r: *mut Block, key: &AES_KEY); } encrypt_block_($name, $block, $key) @@ -67,46 +79,46 @@ } macro_rules! ctr32_encrypt_blocks { - ($name:ident, $in_out:expr, $in_prefix_len:expr, $key:expr, $ivec:expr ) => {{ - extern "C" { + ($name:ident, $in_out:expr, $src:expr, $key:expr, $ivec:expr ) => {{ + prefixed_extern! { fn $name( - input: *const u8, - output: *mut u8, + input: *const [u8; BLOCK_LEN], + output: *mut [u8; BLOCK_LEN], blocks: c::size_t, key: &AES_KEY, ivec: &Counter, ); } - ctr32_encrypt_blocks_($name, $in_out, $in_prefix_len, $key, $ivec) + ctr32_encrypt_blocks_($name, $in_out, $src, $key, $ivec) }}; } #[inline] fn ctr32_encrypt_blocks_( f: unsafe extern "C" fn( - input: *const u8, - output: *mut u8, + input: *const [u8; BLOCK_LEN], + output: *mut [u8; BLOCK_LEN], blocks: c::size_t, key: &AES_KEY, ivec: &Counter, ), in_out: &mut [u8], - in_prefix_len: usize, + src: RangeFrom, key: &AES_KEY, ctr: &mut Counter, ) { - let in_out_len = in_out.len().checked_sub(in_prefix_len).unwrap(); + let in_out_len = in_out[src.clone()].len(); assert_eq!(in_out_len % BLOCK_LEN, 0); let blocks = in_out_len / BLOCK_LEN; let blocks_u32 = blocks as u32; assert_eq!(blocks, polyfill::usize_from_u32(blocks_u32)); - let input = in_out[in_prefix_len..].as_ptr(); - let output = in_out.as_mut_ptr(); + let input = in_out[src].as_ptr() as *const [u8; BLOCK_LEN]; + let output = in_out.as_mut_ptr() as *mut [u8; BLOCK_LEN]; unsafe { - f(input, output, blocks, &key, ctr); + f(input, output, blocks, key, ctr); } ctr.increment_by_less_safe(blocks_u32); } @@ -139,7 +151,7 @@ target_arch = "x86" ))] Implementation::HWAES => { - set_encrypt_key!(GFp_aes_hw_set_encrypt_key, bytes, key_bits, &mut key)? + set_encrypt_key!(aes_hw_set_encrypt_key, bytes, key_bits, &mut key)? } #[cfg(any( @@ -149,12 +161,12 @@ target_arch = "x86" ))] Implementation::VPAES_BSAES => { - set_encrypt_key!(GFp_vpaes_set_encrypt_key, bytes, key_bits, &mut key)? + set_encrypt_key!(vpaes_set_encrypt_key, bytes, key_bits, &mut key)? } #[cfg(not(target_arch = "aarch64"))] Implementation::NOHW => { - set_encrypt_key!(GFp_aes_nohw_set_encrypt_key, bytes, key_bits, &mut key)? + set_encrypt_key!(aes_nohw_set_encrypt_key, bytes, key_bits, &mut key)? } }; @@ -173,7 +185,7 @@ target_arch = "x86_64", target_arch = "x86" ))] - Implementation::HWAES => encrypt_block!(GFp_aes_hw_encrypt, a, self), + Implementation::HWAES => encrypt_block!(aes_hw_encrypt, a, self), #[cfg(any( target_arch = "aarch64", @@ -181,33 +193,27 @@ target_arch = "x86_64", target_arch = "x86" ))] - Implementation::VPAES_BSAES => encrypt_block!(GFp_vpaes_encrypt, a, self), + Implementation::VPAES_BSAES => encrypt_block!(vpaes_encrypt, a, self), #[cfg(not(target_arch = "aarch64"))] - Implementation::NOHW => encrypt_block!(GFp_aes_nohw_encrypt, a, self), + Implementation::NOHW => encrypt_block!(aes_nohw_encrypt, a, self), } } #[inline] pub fn encrypt_iv_xor_block(&self, iv: Iv, input: Block) -> Block { - let mut output = self.encrypt_block(Block::from(&iv.into_bytes_less_safe())); - output.bitxor_assign(input); - output + let encrypted_iv = self.encrypt_block(Block::from(iv.as_bytes_less_safe())); + encrypted_iv ^ input } #[inline] - pub(super) fn ctr32_encrypt_blocks( + pub(super) fn ctr32_encrypt_within( &self, in_out: &mut [u8], - direction: Direction, + src: RangeFrom, ctr: &mut Counter, ) { - let in_prefix_len = match direction { - Direction::Opening { in_prefix_len } => in_prefix_len, - Direction::Sealing => 0, - }; - - let in_out_len = in_out.len().checked_sub(in_prefix_len).unwrap(); + let in_out_len = in_out[src.clone()].len(); assert_eq!(in_out_len % BLOCK_LEN, 0); @@ -218,13 +224,9 @@ target_arch = "x86_64", target_arch = "x86" ))] - Implementation::HWAES => ctr32_encrypt_blocks!( - GFp_aes_hw_ctr32_encrypt_blocks, - in_out, - in_prefix_len, - &self.inner, - ctr - ), + Implementation::HWAES => { + ctr32_encrypt_blocks!(aes_hw_ctr32_encrypt_blocks, in_out, src, &self.inner, ctr) + } #[cfg(any(target_arch = "aarch64", target_arch = "arm", target_arch = "x86_64"))] Implementation::VPAES_BSAES => { @@ -242,19 +244,16 @@ rd_key: [0u32; 4 * (MAX_ROUNDS + 1)], rounds: 0, }; - extern "C" { - fn GFp_vpaes_encrypt_key_to_bsaes( - bsaes_key: &mut AES_KEY, - vpaes_key: &AES_KEY, - ); + prefixed_extern! { + fn vpaes_encrypt_key_to_bsaes(bsaes_key: &mut AES_KEY, vpaes_key: &AES_KEY); } unsafe { - GFp_vpaes_encrypt_key_to_bsaes(&mut bsaes_key, &self.inner); + vpaes_encrypt_key_to_bsaes(&mut bsaes_key, &self.inner); } ctr32_encrypt_blocks!( - GFp_bsaes_ctr32_encrypt_blocks, - &mut in_out[..(bsaes_in_out_len + in_prefix_len)], - in_prefix_len, + bsaes_ctr32_encrypt_blocks, + &mut in_out[..(src.start + bsaes_in_out_len)], + src.clone(), &bsaes_key, ctr ); @@ -264,30 +263,20 @@ in_out }; - ctr32_encrypt_blocks!( - GFp_vpaes_ctr32_encrypt_blocks, - in_out, - in_prefix_len, - &self.inner, - ctr - ) + ctr32_encrypt_blocks!(vpaes_ctr32_encrypt_blocks, in_out, src, &self.inner, ctr) } - #[cfg(any(target_arch = "x86"))] + #[cfg(target_arch = "x86")] Implementation::VPAES_BSAES => { - super::shift::shift_full_blocks(in_out, in_prefix_len, |input| { + super::shift::shift_full_blocks(in_out, src, |input| { self.encrypt_iv_xor_block(ctr.increment(), Block::from(input)) }); } #[cfg(not(target_arch = "aarch64"))] - Implementation::NOHW => ctr32_encrypt_blocks!( - GFp_aes_nohw_ctr32_encrypt_blocks, - in_out, - in_prefix_len, - &self.inner, - ctr - ), + Implementation::NOHW => { + ctr32_encrypt_blocks!(aes_nohw_ctr32_encrypt_blocks, in_out, src, &self.inner, ctr) + } } } @@ -300,17 +289,13 @@ out } - // TODO: use `matches!` when MSRV increases to 1.42.0 and remove this - // `#[allow(...)]` - #[allow(clippy::unknown_clippy_lints)] - #[allow(clippy::match_like_matches_macro)] #[cfg(target_arch = "x86_64")] #[must_use] pub fn is_aes_hw(&self) -> bool { - match detect_implementation(self.cpu_features) { - Implementation::HWAES => true, - _ => false, - } + matches!( + detect_implementation(self.cpu_features), + Implementation::HWAES + ) } #[cfg(target_arch = "x86_64")] @@ -322,6 +307,7 @@ // Keep this in sync with AES_KEY in aes.h. #[repr(C)] +#[derive(Clone)] pub(super) struct AES_KEY { pub rd_key: [u32; 4 * (MAX_ROUNDS + 1)], pub rounds: c::uint, @@ -335,7 +321,44 @@ AES_256, } -pub type Counter = counter::Counter>; +/// Nonce || Counter, all big-endian. +#[repr(transparent)] +pub(super) struct Counter([BigEndian; 4]); + +impl Counter { + pub fn one(nonce: Nonce) -> Self { + let nonce = nonce.as_ref().chunks_fixed(); + Self([nonce[0].into(), nonce[1].into(), nonce[2].into(), 1.into()]) + } + + pub fn increment(&mut self) -> Iv { + let iv = Iv(self.0); + self.increment_by_less_safe(1); + iv + } + + fn increment_by_less_safe(&mut self, increment_by: u32) { + let old_value: u32 = self.0[3].into(); + self.0[3] = (old_value + increment_by).into(); + } +} + +/// The IV for a single block encryption. +/// +/// Intentionally not `Clone` to ensure each is used only once. +pub struct Iv([BigEndian; 4]); + +impl From for Iv { + fn from(counter: Counter) -> Self { + Self(counter.0) + } +} + +impl Iv { + pub(super) fn as_bytes_less_safe(&self) -> &[u8; 16] { + self.0.as_byte_array() + } +} #[repr(C)] // Only so `Key` can be `#[repr(C)]` #[derive(Clone, Copy)] @@ -410,9 +433,8 @@ #[cfg(test)] mod tests { - use super::{super::BLOCK_LEN, *}; + use super::*; use crate::test; - use core::convert::TryInto; #[test] pub fn test_aes() { diff -Nru temporalio-1.3.0/vendor/ring/src/aead/aes_tests.txt temporalio-1.3.0/vendor/ring/src/aead/aes_tests.txt --- temporalio-1.3.0/vendor/ring/src/aead/aes_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/aes_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -Key = 000102030405060708090a0b0c0d0e0f -Input = 00112233445566778899aabbccddeeff -Output = 69c4e0d86a7b0430d8cdb78070b4c55a - -Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f -Input = 00112233445566778899aabbccddeeff -Output = 8ea2b7ca516745bfeafc49904b496089 diff -Nru temporalio-1.3.0/vendor/ring/src/aead/block.rs temporalio-1.3.0/vendor/ring/src/aead/block.rs --- temporalio-1.3.0/vendor/ring/src/aead/block.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/block.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,49 +12,19 @@ // OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -use crate::{endian::*, polyfill}; +use crate::endian::*; +use core::ops::{BitXor, BitXorAssign}; -/// An array of 16 bytes that can (in the x86_64 and AAarch64 ABIs, at least) -/// be efficiently passed by value and returned by value (i.e. in registers), -/// and which meets the alignment requirements of `u32` and `u64` (at least) -/// for the target. -#[repr(C)] +#[repr(transparent)] #[derive(Copy, Clone)] -pub struct Block { - subblocks: [u64; 2], -} +pub struct Block([BigEndian; 2]); pub const BLOCK_LEN: usize = 16; impl Block { #[inline] pub fn zero() -> Self { - Self { subblocks: [0, 0] } - } - - // TODO: Remove this. - #[inline] - pub fn from_u64_le(first: LittleEndian, second: LittleEndian) -> Self { - #[allow(deprecated)] - Self { - subblocks: [first.into_raw_value(), second.into_raw_value()], - } - } - - // TODO: Remove this. - #[inline] - pub fn from_u64_be(first: BigEndian, second: BigEndian) -> Self { - #[allow(deprecated)] - Self { - subblocks: [first.into_raw_value(), second.into_raw_value()], - } - } - - pub fn u64s_be_to_native(&self) -> [u64; 2] { - [ - u64::from_be(self.subblocks[0]), - u64::from_be(self.subblocks[1]), - ] + Self([Encoding::ZERO; 2]) } #[inline] @@ -67,56 +37,55 @@ #[inline] pub fn zero_from(&mut self, index: usize) { let mut tmp: [u8; BLOCK_LEN] = *self.as_ref(); - polyfill::slice::fill(&mut tmp[index..], 0); + tmp[index..].fill(0); *self = Self::from(&tmp) } +} +impl From<[u64; 2]> for Block { #[inline] - pub fn bitxor_assign(&mut self, a: Block) { - for (r, a) in self.subblocks.iter_mut().zip(a.subblocks.iter()) { + fn from(other: [u64; 2]) -> Self { + Self([other[0].into(), other[1].into()]) + } +} + +impl From for [u64; 2] { + #[inline] + fn from(Block(components): Block) -> Self { + components.map(Into::into) + } +} + +impl BitXorAssign for Block { + #[inline] + fn bitxor_assign(&mut self, a: Self) { + for (r, a) in self.0.iter_mut().zip(a.0.iter()) { *r ^= *a; } } } +impl BitXor for Block { + type Output = Self; + + #[inline] + fn bitxor(self, a: Self) -> Self { + let mut r = self; + r.bitxor_assign(a); + r + } +} + impl From<&'_ [u8; BLOCK_LEN]> for Block { #[inline] fn from(bytes: &[u8; BLOCK_LEN]) -> Self { - unsafe { core::mem::transmute_copy(bytes) } + Self(FromByteArray::from_byte_array(bytes)) } } impl AsRef<[u8; BLOCK_LEN]> for Block { - #[allow(clippy::transmute_ptr_to_ptr)] #[inline] fn as_ref(&self) -> &[u8; BLOCK_LEN] { - unsafe { core::mem::transmute(self) } - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_bitxor_assign() { - const ONES: u64 = -1i64 as u64; - const TEST_CASES: &[([u64; 2], [u64; 2], [u64; 2])] = &[ - ([0, 0], [0, 0], [0, 0]), - ([0, 0], [ONES, ONES], [ONES, ONES]), - ([0, ONES], [ONES, 0], [ONES, ONES]), - ([ONES, 0], [0, ONES], [ONES, ONES]), - ([ONES, ONES], [ONES, ONES], [0, 0]), - ]; - for (expected_result, a, b) in TEST_CASES { - let mut r = Block::from_u64_le(a[0].into(), a[1].into()); - r.bitxor_assign(Block::from_u64_le(b[0].into(), b[1].into())); - assert_eq!(*expected_result, r.subblocks); - - // XOR is symmetric. - let mut r = Block::from_u64_le(b[0].into(), b[1].into()); - r.bitxor_assign(Block::from_u64_le(a[0].into(), a[1].into())); - assert_eq!(*expected_result, r.subblocks); - } + self.0.as_byte_array() } } diff -Nru temporalio-1.3.0/vendor/ring/src/aead/chacha/fallback.rs temporalio-1.3.0/vendor/ring/src/aead/chacha/fallback.rs --- temporalio-1.3.0/vendor/ring/src/aead/chacha/fallback.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/chacha/fallback.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,103 @@ +// Copyright 2021 Brian Smith. +// Portions Copyright (c) 2014, Google Inc. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +// Adapted from the public domain, estream code by D. Bernstein. +// Adapted from the BoringSSL crypto/chacha/chacha.c. + +use super::{Counter, Key, BLOCK_LEN}; +use crate::polyfill::ChunksFixedMut; +use core::ops::RangeFrom; + +pub(super) fn ChaCha20_ctr32( + key: &Key, + counter: Counter, + in_out: &mut [u8], + src: RangeFrom, +) { + const SIGMA: [u32; 4] = [ + u32::from_le_bytes(*b"expa"), + u32::from_le_bytes(*b"nd 3"), + u32::from_le_bytes(*b"2-by"), + u32::from_le_bytes(*b"te k"), + ]; + + let key = key.words_less_safe(); + let counter = counter.into_words_less_safe(); + + let mut state = [ + SIGMA[0], SIGMA[1], SIGMA[2], SIGMA[3], key[0], key[1], key[2], key[3], key[4], key[5], + key[6], key[7], counter[0], counter[1], counter[2], counter[3], + ]; + + let mut in_out_len = in_out.len().checked_sub(src.start).unwrap(); + let mut input = in_out[src].as_ptr(); + let mut output = in_out.as_mut_ptr(); + + let mut buf = [0u8; BLOCK_LEN]; + while in_out_len > 0 { + chacha_core(&mut buf, &state); + state[12] += 1; + + let todo = core::cmp::min(BLOCK_LEN, in_out_len); + for (i, &b) in buf[..todo].iter().enumerate() { + let input = unsafe { *input.add(i) }; + let b = input ^ b; + unsafe { *output.add(i) = b }; + } + + in_out_len -= todo; + input = unsafe { input.add(todo) }; + output = unsafe { output.add(todo) }; + } +} + +// Performs 20 rounds of ChaCha on `input`, storing the result in `output`. +#[inline(always)] +fn chacha_core(output: &mut [u8; BLOCK_LEN], input: &State) { + let mut x = *input; + + for _ in (0..20).step_by(2) { + quarterround(&mut x, 0, 4, 8, 12); + quarterround(&mut x, 1, 5, 9, 13); + quarterround(&mut x, 2, 6, 10, 14); + quarterround(&mut x, 3, 7, 11, 15); + quarterround(&mut x, 0, 5, 10, 15); + quarterround(&mut x, 1, 6, 11, 12); + quarterround(&mut x, 2, 7, 8, 13); + quarterround(&mut x, 3, 4, 9, 14); + } + + for (x, input) in x.iter_mut().zip(input.iter()) { + *x = x.wrapping_add(*input); + } + + for (output, &x) in ChunksFixedMut::<[u8; 4]>::chunks_fixed_mut(output).zip(x.iter()) { + *output = u32::to_le_bytes(x) + } +} + +#[inline(always)] +fn quarterround(x: &mut State, a: usize, b: usize, c: usize, d: usize) { + #[inline(always)] + fn step(x: &mut State, a: usize, b: usize, c: usize, rotation: u32) { + x[a] = x[a].wrapping_add(x[b]); + x[c] = (x[c] ^ x[a]).rotate_left(rotation); + } + step(x, a, b, d, 16); + step(x, c, d, b, 12); + step(x, a, b, d, 8); + step(x, c, d, b, 7); +} + +type State = [u32; BLOCK_LEN / 4]; diff -Nru temporalio-1.3.0/vendor/ring/src/aead/chacha20_poly1305_openssh.rs temporalio-1.3.0/vendor/ring/src/aead/chacha20_poly1305_openssh.rs --- temporalio-1.3.0/vendor/ring/src/aead/chacha20_poly1305_openssh.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/chacha20_poly1305_openssh.rs 2023-10-30 19:40:00.000000000 +0000 @@ -32,10 +32,11 @@ use super::{ chacha::{self, *}, chacha20_poly1305::derive_poly1305_key, - cpu, poly1305, Nonce, Tag, + cpu, poly1305, + polyfill::ChunksFixed, + Nonce, Tag, }; use crate::{constant_time, endian::*, error}; -use core::convert::TryInto; /// A key for sealing packets. pub struct SealingKey { @@ -44,8 +45,8 @@ impl SealingKey { /// Constructs a new `SealingKey`. - pub fn new(key_material: &[u8; KEY_LEN]) -> SealingKey { - SealingKey { + pub fn new(key_material: &[u8; KEY_LEN]) -> Self { + Self { key: Key::new(key_material, cpu::features()), } } @@ -64,8 +65,7 @@ tag_out: &mut [u8; TAG_LEN], ) { let mut counter = make_counter(sequence_number); - let poly_key = - derive_poly1305_key(&self.key.k_2, counter.increment(), self.key.cpu_features); + let poly_key = derive_poly1305_key(&self.key.k_2, counter.increment()); { let (len_in_out, data_and_padding_in_out) = @@ -91,8 +91,8 @@ impl OpeningKey { /// Constructs a new `OpeningKey`. - pub fn new(key_material: &[u8; KEY_LEN]) -> OpeningKey { - OpeningKey { + pub fn new(key_material: &[u8; KEY_LEN]) -> Self { + Self { key: Key::new(key_material, cpu::features()), } } @@ -132,8 +132,7 @@ // We must verify the tag before decrypting so that // `ciphertext_in_plaintext_out` is unmodified if verification fails. // This is beyond what we guarantee. - let poly_key = - derive_poly1305_key(&self.key.k_2, counter.increment(), self.key.cpu_features); + let poly_key = derive_poly1305_key(&self.key.k_2, counter.increment()); verify(poly_key, ciphertext_in_plaintext_out, tag)?; let plaintext_in_ciphertext_out = &mut ciphertext_in_plaintext_out[PACKET_LENGTH_LEN..]; @@ -148,19 +147,15 @@ struct Key { k_1: chacha::Key, k_2: chacha::Key, - cpu_features: cpu::Features, } impl Key { - fn new(key_material: &[u8; KEY_LEN], cpu_features: cpu::Features) -> Key { + fn new(key_material: &[u8; KEY_LEN], cpu_features: cpu::Features) -> Self { // The first half becomes K_2 and the second half becomes K_1. - let (k_2, k_1) = key_material.split_at(chacha::KEY_LEN); - let k_1: [u8; chacha::KEY_LEN] = k_1.try_into().unwrap(); - let k_2: [u8; chacha::KEY_LEN] = k_2.try_into().unwrap(); - Key { - k_1: chacha::Key::from(k_1), - k_2: chacha::Key::from(k_2), - cpu_features, + let &[k_2, k_1]: &[[u8; chacha::KEY_LEN]; 2] = key_material.chunks_fixed(); + Self { + k_1: chacha::Key::new(k_1, cpu_features), + k_2: chacha::Key::new(k_2, cpu_features), } } } @@ -181,7 +176,7 @@ pub const PACKET_LENGTH_LEN: usize = 4; // 32 bits /// The length in bytes of an authentication tag. -pub const TAG_LEN: usize = super::BLOCK_LEN; +pub const TAG_LEN: usize = super::TAG_LEN; fn verify(key: poly1305::Key, msg: &[u8], tag: &[u8; TAG_LEN]) -> Result<(), error::Unspecified> { let Tag(calculated_tag) = poly1305::sign(key, msg); diff -Nru temporalio-1.3.0/vendor/ring/src/aead/chacha20_poly1305.rs temporalio-1.3.0/vendor/ring/src/aead/chacha20_poly1305.rs --- temporalio-1.3.0/vendor/ring/src/aead/chacha20_poly1305.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/chacha20_poly1305.rs 2023-10-30 19:40:00.000000000 +0000 @@ -13,18 +13,17 @@ // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. use super::{ - chacha::{self, Counter}, - iv::Iv, - poly1305, Aad, Block, Direction, Nonce, Tag, BLOCK_LEN, + chacha::{self, Counter, Iv}, + poly1305, Aad, Nonce, Tag, }; use crate::{aead, cpu, endian::*, error, polyfill}; -use core::convert::TryInto; +use core::ops::RangeFrom; -/// ChaCha20-Poly1305 as described in [RFC 7539]. +/// ChaCha20-Poly1305 as described in [RFC 8439]. /// /// The keys are 256 bits long and the nonces are 96 bits long. /// -/// [RFC 7539]: https://tools.ietf.org/html/rfc7539 +/// [RFC 8439]: https://tools.ietf.org/html/rfc8439 pub static CHACHA20_POLY1305: aead::Algorithm = aead::Algorithm { key_len: chacha::KEY_LEN, init: chacha20_poly1305_init, @@ -37,10 +36,13 @@ /// Copies |key| into |ctx_buf|. fn chacha20_poly1305_init( key: &[u8], - _todo: cpu::Features, + cpu_features: cpu::Features, ) -> Result { let key: [u8; chacha::KEY_LEN] = key.try_into()?; - Ok(aead::KeyInner::ChaCha20Poly1305(chacha::Key::from(key))) + Ok(aead::KeyInner::ChaCha20Poly1305(chacha::Key::new( + key, + cpu_features, + ))) } fn chacha20_poly1305_seal( @@ -48,16 +50,17 @@ nonce: Nonce, aad: Aad<&[u8]>, in_out: &mut [u8], - cpu_features: cpu::Features, ) -> Tag { - let key = match key { + let chacha20_key = match key { aead::KeyInner::ChaCha20Poly1305(key) => key, _ => unreachable!(), }; - #[cfg(target_arch = "x86_64")] + #[cfg(any(target_arch = "aarch64", target_arch = "x86_64"))] { - if cpu::intel::SSE41.available(cpu_features) { + if cpu::intel::SSE41.available(chacha20_key.cpu_features()) + || cpu::arm::NEON.available(chacha20_key.cpu_features()) + { // XXX: BoringSSL uses `alignas(16)` on `key` instead of on the // structure, but Rust can't do that yet; see // https://github.com/rust-lang/rust/issues/73557. @@ -67,7 +70,7 @@ #[repr(align(16), C)] #[derive(Clone, Copy)] struct seal_data_in { - key: [u8; chacha::KEY_LEN], + key: [u32; chacha::KEY_LEN / 4], counter: u32, nonce: [u8; super::NONCE_LEN], extra_ciphertext: *const u8, @@ -76,7 +79,7 @@ let mut data = InOut { input: seal_data_in { - key: *key.words_less_safe().as_byte_array(), + key: *chacha20_key.words_less_safe(), counter: 0, nonce: *nonce.as_ref(), extra_ciphertext: core::ptr::null(), @@ -85,8 +88,8 @@ }; // Encrypts `plaintext_len` bytes from `plaintext` and writes them to `out_ciphertext`. - extern "C" { - fn GFp_chacha20_poly1305_seal( + prefixed_extern! { + fn chacha20_poly1305_seal( out_ciphertext: *mut u8, plaintext: *const u8, plaintext_len: usize, @@ -97,7 +100,7 @@ } let out = unsafe { - GFp_chacha20_poly1305_seal( + chacha20_poly1305_seal( in_out.as_mut_ptr(), in_out.as_ptr(), in_out.len(), @@ -112,25 +115,35 @@ } } - aead(key, nonce, aad, in_out, Direction::Sealing, cpu_features) + let mut counter = Counter::zero(nonce); + let mut auth = { + let key = derive_poly1305_key(chacha20_key, counter.increment()); + poly1305::Context::from_key(key) + }; + + poly1305_update_padded_16(&mut auth, aad.as_ref()); + chacha20_key.encrypt_in_place(counter, in_out); + poly1305_update_padded_16(&mut auth, in_out); + finish(auth, aad.as_ref().len(), in_out.len()) } fn chacha20_poly1305_open( key: &aead::KeyInner, nonce: Nonce, aad: Aad<&[u8]>, - in_prefix_len: usize, in_out: &mut [u8], - cpu_features: cpu::Features, + src: RangeFrom, ) -> Tag { - let key = match key { + let chacha20_key = match key { aead::KeyInner::ChaCha20Poly1305(key) => key, _ => unreachable!(), }; - #[cfg(target_arch = "x86_64")] + #[cfg(any(target_arch = "aarch64", target_arch = "x86_64"))] { - if cpu::intel::SSE41.available(cpu_features) { + if cpu::intel::SSE41.available(chacha20_key.cpu_features()) + || cpu::arm::NEON.available(chacha20_key.cpu_features()) + { // XXX: BoringSSL uses `alignas(16)` on `key` instead of on the // structure, but Rust can't do that yet; see // https://github.com/rust-lang/rust/issues/73557. @@ -140,22 +153,22 @@ #[derive(Copy, Clone)] #[repr(align(16), C)] struct open_data_in { - key: [u8; chacha::KEY_LEN], + key: [u32; chacha::KEY_LEN / 4], counter: u32, nonce: [u8; super::NONCE_LEN], } let mut data = InOut { input: open_data_in { - key: *key.words_less_safe().as_byte_array(), + key: *chacha20_key.words_less_safe(), counter: 0, nonce: *nonce.as_ref(), }, }; // Decrypts `plaintext_len` bytes from `ciphertext` and writes them to `out_plaintext`. - extern "C" { - fn GFp_chacha20_poly1305_open( + prefixed_extern! { + fn chacha20_poly1305_open( out_plaintext: *mut u8, ciphertext: *const u8, plaintext_len: usize, @@ -166,10 +179,10 @@ } let out = unsafe { - GFp_chacha20_poly1305_open( + chacha20_poly1305_open( in_out.as_mut_ptr(), - in_out.as_ptr().add(in_prefix_len), - in_out.len() - in_prefix_len, + in_out.as_ptr().add(src.start), + in_out.len() - src.start, aad.as_ref().as_ptr(), aad.as_ref().len(), &mut data, @@ -181,14 +194,27 @@ } } - aead( - key, - nonce, - aad, - in_out, - Direction::Opening { in_prefix_len }, - cpu_features, - ) + let mut counter = Counter::zero(nonce); + let mut auth = { + let key = derive_poly1305_key(chacha20_key, counter.increment()); + poly1305::Context::from_key(key) + }; + + poly1305_update_padded_16(&mut auth, aad.as_ref()); + poly1305_update_padded_16(&mut auth, &in_out[src.clone()]); + chacha20_key.encrypt_within(counter, in_out, src.clone()); + finish(auth, aad.as_ref().len(), in_out[src].len()) +} + +fn finish(mut auth: poly1305::Context, aad_len: usize, in_out_len: usize) -> Tag { + auth.update( + [ + LittleEndian::from(polyfill::u64_from_usize(aad_len)), + LittleEndian::from(polyfill::u64_from_usize(in_out_len)), + ] + .as_byte_array(), + ); + auth.finish() } pub type Key = chacha::Key; @@ -196,7 +222,7 @@ // Keep in sync with BoringSSL's `chacha20_poly1305_open_data` and // `chacha20_poly1305_seal_data`. #[repr(C)] -#[cfg(target_arch = "x86_64")] +#[cfg(any(target_arch = "aarch64", target_arch = "x86_64"))] union InOut where T: Copy, @@ -209,83 +235,37 @@ // 16-byte aligned. In practice it will always be 16-byte aligned because it // is embedded in a union where the other member of the union is 16-byte // aligned. -#[cfg(target_arch = "x86_64")] +#[cfg(any(target_arch = "aarch64", target_arch = "x86_64"))] #[derive(Clone, Copy)] #[repr(align(16), C)] struct Out { tag: [u8; super::TAG_LEN], } -#[inline(always)] // Statically eliminate branches on `direction`. -fn aead( - chacha20_key: &Key, - nonce: Nonce, - Aad(aad): Aad<&[u8]>, - in_out: &mut [u8], - direction: Direction, - cpu_features: cpu::Features, -) -> Tag { - let mut counter = Counter::zero(nonce); - let mut ctx = { - let key = derive_poly1305_key(chacha20_key, counter.increment(), cpu_features); - poly1305::Context::from_key(key) - }; - - poly1305_update_padded_16(&mut ctx, aad); - - let in_out_len = match direction { - Direction::Opening { in_prefix_len } => { - poly1305_update_padded_16(&mut ctx, &in_out[in_prefix_len..]); - chacha20_key.encrypt_overlapping(counter, in_out, in_prefix_len); - in_out.len() - in_prefix_len - } - Direction::Sealing => { - chacha20_key.encrypt_in_place(counter, in_out); - poly1305_update_padded_16(&mut ctx, in_out); - in_out.len() - } - }; - - ctx.update( - Block::from_u64_le( - LittleEndian::from(polyfill::u64_from_usize(aad.len())), - LittleEndian::from(polyfill::u64_from_usize(in_out_len)), - ) - .as_ref(), - ); - ctx.finish() -} - #[inline] fn poly1305_update_padded_16(ctx: &mut poly1305::Context, input: &[u8]) { - let remainder_len = input.len() % BLOCK_LEN; - let whole_len = input.len() - remainder_len; - if whole_len > 0 { - ctx.update(&input[..whole_len]); - } - if remainder_len > 0 { - let mut block = Block::zero(); - block.overwrite_part_at(0, &input[whole_len..]); - ctx.update(block.as_ref()) + if !input.is_empty() { + ctx.update(input); + let remainder_len = input.len() % poly1305::BLOCK_LEN; + if remainder_len != 0 { + const ZEROES: [u8; poly1305::BLOCK_LEN] = [0; poly1305::BLOCK_LEN]; + ctx.update(&ZEROES[..(poly1305::BLOCK_LEN - remainder_len)]) + } } } // Also used by chacha20_poly1305_openssh. -pub(super) fn derive_poly1305_key( - chacha_key: &chacha::Key, - iv: Iv, - cpu_features: cpu::Features, -) -> poly1305::Key { - let mut key_bytes = [0u8; 2 * BLOCK_LEN]; - chacha_key.encrypt_iv_xor_blocks_in_place(iv, &mut key_bytes); - poly1305::Key::new(key_bytes, cpu_features) +pub(super) fn derive_poly1305_key(chacha_key: &chacha::Key, iv: Iv) -> poly1305::Key { + let mut key_bytes = [0u8; poly1305::KEY_LEN]; + chacha_key.encrypt_iv_xor_in_place(iv, &mut key_bytes); + poly1305::Key::new(key_bytes, chacha_key.cpu_features()) } #[cfg(test)] mod tests { #[test] fn max_input_len_test() { - // Errata 4858 at https://www.rfc-editor.org/errata_search.php?rfc=7539. + // https://tools.ietf.org/html/rfc8439#section-2.8 assert_eq!(super::CHACHA20_POLY1305.max_input_len, 274_877_906_880u64); } } diff -Nru temporalio-1.3.0/vendor/ring/src/aead/chacha.rs temporalio-1.3.0/vendor/ring/src/aead/chacha.rs --- temporalio-1.3.0/vendor/ring/src/aead/chacha.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/chacha.rs 2023-10-30 19:40:00.000000000 +0000 @@ -13,42 +13,54 @@ // OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -use super::{counter, iv::Iv, quic::Sample, BLOCK_LEN}; -use crate::{c, endian::*}; +use super::{quic::Sample, Nonce}; +use crate::{cpu, polyfill::ChunksFixed}; -#[repr(transparent)] -pub struct Key([LittleEndian; KEY_LEN / 4]); +#[cfg(any( + test, + not(any( + target_arch = "aarch64", + target_arch = "arm", + target_arch = "x86", + target_arch = "x86_64" + )) +))] +mod fallback; + +use core::ops::RangeFrom; + +#[derive(Clone)] +pub struct Key { + words: [u32; KEY_LEN / 4], + cpu_features: cpu::Features, +} -impl From<[u8; KEY_LEN]> for Key { - #[inline] - fn from(value: [u8; KEY_LEN]) -> Self { - Self(FromByteArray::from_byte_array(&value)) +impl Key { + pub(super) fn new(value: [u8; KEY_LEN], cpu_features: cpu::Features) -> Self { + let value: &[[u8; 4]; KEY_LEN / 4] = value.chunks_fixed(); + Self { + words: value.map(u32::from_le_bytes), + cpu_features, + } + } + + pub(super) fn cpu_features(&self) -> cpu::Features { + self.cpu_features } } impl Key { - #[inline] // Optimize away match on `counter`. + #[inline] pub fn encrypt_in_place(&self, counter: Counter, in_out: &mut [u8]) { - unsafe { - self.encrypt( - CounterOrIv::Counter(counter), - in_out.as_ptr(), - in_out.len(), - in_out.as_mut_ptr(), - ); - } + self.encrypt_less_safe(counter, in_out, 0..); } - #[inline] // Optimize away match on `iv` and length check. - pub fn encrypt_iv_xor_blocks_in_place(&self, iv: Iv, in_out: &mut [u8; 2 * BLOCK_LEN]) { - unsafe { - self.encrypt( - CounterOrIv::Iv(iv), - in_out.as_ptr(), - in_out.len(), - in_out.as_mut_ptr(), - ); - } + #[inline] + pub fn encrypt_iv_xor_in_place(&self, iv: Iv, in_out: &mut [u8; 32]) { + // It is safe to use `into_counter_for_single_block_less_safe()` + // because `in_out` is exactly one block long. + debug_assert!(in_out.len() <= BLOCK_LEN); + self.encrypt_less_safe(iv.into_counter_for_single_block_less_safe(), in_out, 0..); } #[inline] @@ -56,135 +68,225 @@ let mut out: [u8; 5] = [0; 5]; let iv = Iv::assume_unique_for_key(sample); - unsafe { - self.encrypt( - CounterOrIv::Iv(iv), - out.as_ptr(), - out.len(), - out.as_mut_ptr(), - ); - } + debug_assert!(out.len() <= BLOCK_LEN); + self.encrypt_less_safe(iv.into_counter_for_single_block_less_safe(), &mut out, 0..); out } - pub fn encrypt_overlapping(&self, counter: Counter, in_out: &mut [u8], in_prefix_len: usize) { + /// Analogous to `slice::copy_within()`. + pub fn encrypt_within(&self, counter: Counter, in_out: &mut [u8], src: RangeFrom) { // XXX: The x86 and at least one branch of the ARM assembly language // code doesn't allow overlapping input and output unless they are // exactly overlapping. TODO: Figure out which branch of the ARM code // has this limitation and come up with a better solution. // // https://rt.openssl.org/Ticket/Display.html?id=4362 - let len = in_out.len() - in_prefix_len; - if cfg!(any(target_arch = "arm", target_arch = "x86")) && in_prefix_len != 0 { - in_out.copy_within(in_prefix_len.., 0); + if cfg!(any(target_arch = "arm", target_arch = "x86")) && src.start != 0 { + let len = in_out.len() - src.start; + in_out.copy_within(src, 0); self.encrypt_in_place(counter, &mut in_out[..len]); } else { + self.encrypt_less_safe(counter, in_out, src); + } + } + + /// This is "less safe" because it skips the important check that `encrypt_within` does. + /// Only call this with `src` equal to `0..` or from `encrypt_within`. + #[inline] + fn encrypt_less_safe(&self, counter: Counter, in_out: &mut [u8], src: RangeFrom) { + #[cfg(any( + target_arch = "aarch64", + target_arch = "arm", + target_arch = "x86", + target_arch = "x86_64" + ))] + #[inline(always)] + pub(super) fn ChaCha20_ctr32( + key: &Key, + counter: Counter, + in_out: &mut [u8], + src: RangeFrom, + ) { + let in_out_len = in_out.len().checked_sub(src.start).unwrap(); + + // There's no need to worry if `counter` is incremented because it is + // owned here and we drop immediately after the call. + prefixed_extern! { + fn ChaCha20_ctr32( + out: *mut u8, + in_: *const u8, + in_len: crate::c::size_t, + key: &[u32; KEY_LEN / 4], + counter: &Counter, + ); + } unsafe { - self.encrypt( - CounterOrIv::Counter(counter), - in_out[in_prefix_len..].as_ptr(), - len, + ChaCha20_ctr32( in_out.as_mut_ptr(), - ); + in_out[src].as_ptr(), + in_out_len, + key.words_less_safe(), + &counter, + ) } } + + #[cfg(not(any( + target_arch = "aarch64", + target_arch = "arm", + target_arch = "x86", + target_arch = "x86_64" + )))] + use fallback::ChaCha20_ctr32; + + ChaCha20_ctr32(self, counter, in_out, src); } - #[inline] // Optimize away match on `counter.` - unsafe fn encrypt( - &self, - counter: CounterOrIv, - input: *const u8, - in_out_len: usize, - output: *mut u8, - ) { - let iv = match counter { - CounterOrIv::Counter(counter) => counter.into(), - CounterOrIv::Iv(iv) => { - assert!(in_out_len <= 32); - iv - } - }; + #[inline] + pub(super) fn words_less_safe(&self) -> &[u32; KEY_LEN / 4] { + &self.words + } +} - /// XXX: Although this takes an `Iv`, this actually uses it like a - /// `Counter`. - extern "C" { - fn GFp_ChaCha20_ctr32( - out: *mut u8, - in_: *const u8, - in_len: c::size_t, - key: &Key, - first_iv: &Iv, - ); - } +/// Counter || Nonce, all native endian. +#[repr(transparent)] +pub struct Counter([u32; 4]); - GFp_ChaCha20_ctr32(output, input, in_out_len, self, &iv); +impl Counter { + pub fn zero(nonce: Nonce) -> Self { + Self::from_nonce_and_ctr(nonce, 0) } - #[cfg(target_arch = "x86_64")] - #[inline] - pub(super) fn words_less_safe(&self) -> &[LittleEndian; KEY_LEN / 4] { - &self.0 + fn from_nonce_and_ctr(nonce: Nonce, ctr: u32) -> Self { + let nonce = nonce.as_ref().chunks_fixed(); + Self([ + ctr, + u32::from_le_bytes(nonce[0]), + u32::from_le_bytes(nonce[1]), + u32::from_le_bytes(nonce[2]), + ]) + } + + pub fn increment(&mut self) -> Iv { + let iv = Iv(self.0); + self.0[0] += 1; + iv + } + + /// This is "less safe" because it hands off management of the counter to + /// the caller. + #[cfg(any( + test, + not(any( + target_arch = "aarch64", + target_arch = "arm", + target_arch = "x86", + target_arch = "x86_64" + )) + ))] + fn into_words_less_safe(self) -> [u32; 4] { + self.0 } } -pub type Counter = counter::Counter>; +/// The IV for a single block encryption. +/// +/// Intentionally not `Clone` to ensure each is used only once. +pub struct Iv([u32; 4]); + +impl Iv { + fn assume_unique_for_key(value: [u8; 16]) -> Self { + let value: &[[u8; 4]; 4] = value.chunks_fixed(); + Self(value.map(u32::from_le_bytes)) + } -enum CounterOrIv { - Counter(Counter), - Iv(Iv), + fn into_counter_for_single_block_less_safe(self) -> Counter { + Counter(self.0) + } } -const KEY_BLOCKS: usize = 2; -pub const KEY_LEN: usize = KEY_BLOCKS * BLOCK_LEN; +pub const KEY_LEN: usize = 32; + +const BLOCK_LEN: usize = 64; #[cfg(test)] mod tests { + extern crate alloc; + use super::*; use crate::test; use alloc::vec; - use core::convert::TryInto; - // This verifies the encryption functionality provided by ChaCha20_ctr32 - // is successful when either computed on disjoint input/output buffers, - // or on overlapping input/output buffers. On some branches of the 32-bit - // x86 and ARM code the in-place operation fails in some situations where - // the input/output buffers are not exactly overlapping. Such failures are - // dependent not only on the degree of overlapping but also the length of - // the data. `open()` works around that by moving the input data to the - // output location so that the buffers exactly overlap, for those targets. - // This test exists largely as a canary for detecting if/when that type of - // problem spreads to other platforms. + const MAX_ALIGNMENT_AND_OFFSET: (usize, usize) = (15, 259); + const MAX_ALIGNMENT_AND_OFFSET_SUBSET: (usize, usize) = + if cfg!(any(debug_assertions = "false", feature = "slow_tests")) { + MAX_ALIGNMENT_AND_OFFSET + } else { + (0, 0) + }; + + #[test] + fn chacha20_test_default() { + // Always use `MAX_OFFSET` if we hav assembly code. + let max_offset = if cfg!(any( + target_arch = "aarch64", + target_arch = "arm", + target_arch = "x86", + target_arch = "x86_64" + )) { + MAX_ALIGNMENT_AND_OFFSET + } else { + MAX_ALIGNMENT_AND_OFFSET_SUBSET + }; + chacha20_test(max_offset, Key::encrypt_within); + } + + // Smoketest the fallback implementation. #[test] - pub fn chacha20_tests() { - test::run(test_file!("chacha_tests.txt"), |section, test_case| { + fn chacha20_test_fallback() { + chacha20_test(MAX_ALIGNMENT_AND_OFFSET_SUBSET, fallback::ChaCha20_ctr32); + } + + // Verifies the encryption is successful when done on overlapping buffers. + // + // On some branches of the 32-bit x86 and ARM assembly code the in-place + // operation fails in some situations where the input/output buffers are + // not exactly overlapping. Such failures are dependent not only on the + // degree of overlapping but also the length of the data. `encrypt_within` + // works around that. + fn chacha20_test( + max_alignment_and_offset: (usize, usize), + f: impl for<'k, 'i> Fn(&'k Key, Counter, &'i mut [u8], RangeFrom), + ) { + // Reuse a buffer to avoid slowing down the tests with allocations. + let mut buf = vec![0u8; 1300]; + + test::run(test_file!("chacha_tests.txt"), move |section, test_case| { assert_eq!(section, ""); let key = test_case.consume_bytes("Key"); let key: &[u8; KEY_LEN] = key.as_slice().try_into()?; - let key = Key::from(*key); + let key = Key::new(*key, cpu::features()); let ctr = test_case.consume_usize("Ctr"); let nonce = test_case.consume_bytes("Nonce"); let input = test_case.consume_bytes("Input"); let output = test_case.consume_bytes("Output"); - // Pre-allocate buffer for use in test_cases. - let mut in_out_buf = vec![0u8; input.len() + 276]; - // Run the test case over all prefixes of the input because the // behavior of ChaCha20 implementation changes dependent on the // length of the input. - for len in 0..(input.len() + 1) { + for len in 0..=input.len() { chacha20_test_case_inner( &key, &nonce, ctr as u32, &input[..len], &output[..len], - len, - &mut in_out_buf, + &mut buf, + max_alignment_and_offset, + &f, ); } @@ -198,37 +300,27 @@ ctr: u32, input: &[u8], expected: &[u8], - len: usize, - in_out_buf: &mut [u8], + buf: &mut [u8], + (max_alignment, max_offset): (usize, usize), + f: &impl for<'k, 'i> Fn(&'k Key, Counter, &'i mut [u8], RangeFrom), ) { - // Straightforward encryption into disjoint buffers is computed - // correctly. - unsafe { - key.encrypt( - CounterOrIv::Counter(Counter::from_test_vector(nonce, ctr)), - input[..len].as_ptr(), - len, - in_out_buf.as_mut_ptr(), - ); - } - assert_eq!(&in_out_buf[..len], expected); + const ARBITRARY: u8 = 123; - // Do not test offset buffers for x86 and ARM architectures (see above - // for rationale). - let max_offset = if cfg!(any(target_arch = "x86", target_arch = "arm")) { - 0 - } else { - 259 - }; - - // Check that in-place encryption works successfully when the pointers - // to the input/output buffers are (partially) overlapping. - for alignment in 0..16 { - for offset in 0..(max_offset + 1) { - in_out_buf[alignment + offset..][..len].copy_from_slice(input); - let ctr = Counter::from_test_vector(nonce, ctr); - key.encrypt_overlapping(ctr, &mut in_out_buf[alignment..], offset); - assert_eq!(&in_out_buf[alignment..][..len], expected); + for alignment in 0..=max_alignment { + buf[..alignment].fill(ARBITRARY); + let buf = &mut buf[alignment..]; + for offset in 0..=max_offset { + let buf = &mut buf[..(offset + input.len())]; + buf[..offset].fill(ARBITRARY); + let src = offset..; + buf[src.clone()].copy_from_slice(input); + + let ctr = Counter::from_nonce_and_ctr( + Nonce::try_assume_unique_for_key(nonce).unwrap(), + ctr, + ); + f(key, ctr, buf, src); + assert_eq!(&buf[..input.len()], expected) } } } diff -Nru temporalio-1.3.0/vendor/ring/src/aead/chacha_tests.txt temporalio-1.3.0/vendor/ring/src/aead/chacha_tests.txt --- temporalio-1.3.0/vendor/ring/src/aead/chacha_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/chacha_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -Key = 98bef1469be7269837a45bfbc92a5a6ac762507cf96443bf33b96b1bd4c6f8f6 -Ctr = 42 -Nonce = 44e792d63335abb1582e9253 -Input = 5828d530362c605529f8e18cae151526f23a73a0f312a3885f2b74233dc90523c654491e448814d9da3715dcb7e423b39d7e166835fc026dcc8ae5dd5fe4d2566f129c9c7d6a3848bddfd9ac1ba24dc543043cd799e1a7139c51c26df9cf073be4bf93a3a9b4c5f01ae48d5fc6c47c697ade1ac1c9cfc24e7a252c32e917ba68f1375d628446f5807f1a71f7be724bb81cfe3ebdae0d730d874a31c33d466fb3d76be3b870178e7a6a0ebfa8bc2bdbfa4fb62620ee63f06d26ac6a18376e5981d160e640d56d68ba8b654af9f1ae56248fe38ee77e6fcf92dfa9753ad62e1caff2d68b39add25dfbd7df05570df7f68f2d14b04e1a3c7704cd3c5c5852106fcf5c03c85f852b058260dacccdd688bfc010b36f545442bc4b77214dee8745064c6038d27e1d306c55f038801cde3dea683ef63e59cf0d08ae8c020bc1726ab46df3f7b3ef3ab106f2f4d6697b3ea216313179b633a9ca8aa8bef3e93828d1e13b4e2e4735a461141e422c4955eae3b3ce39d3b3ef4a4d7849bdf67c0a2cd326cbd96aad6393a72992dc1faf61828074b29c4a867350d8d1ffee1ae2dda261bd10c35f679f29e4d370e5673ad22000cc251596544585ed82883b9f3bc304d423b10ddcc8269d28b3254d52e533f3ed2cb81acfc352b42fc77996147d72277285ea6d41a022136d0683a4dd0f69d201cdc6b8645c2c79d1c7d331db2cffdad06931ad835fed6a97e40043b02e97ae005f5cb9e8398010ca0cfaf0b5cdaa271160d9218693919f2d1a8ede0bb5cb052430454d1175fde5a0a94e3a8c3b525a3718054a7a096ae6d5a9a671474c50e13e8a212b4f0ee3cb72c5283e5a33ec48922ea12457090f01853b34397ec79062e2dc5d0a2c5126953a9592a5398f0c830b9d38ab982ac401c40d7713cbcaf128315275272cf00486c8f33df29d8f5552403faa227fe7693bee4409deffb0693aae74e99d33ae8b6d6004ff533f88e9639bb16d2c22155a15d9e5cb03783cca598cc8c286ffd279d6c6ec5bbba0ae0120092e385dda5de0594ee58b848fb6e0569f21a1cfb20f2c93f8cf37c19f3298216552666ed3719855b9469f1a35c4476962704b779ee421e6325a2605ba5753d79b553cbb5379609cc84df7f51d540291680eaaca5a780c289ac3ac49c0f485ee59767e284ef15c63f7ce0e2c21a058e901fdebd1afe6ef93b3955160a2744015e5f40aca6d9a37424d5a58490fe902fc77d859deddad4b992e6473ad422ff32c0d49e42e6ca47375181485bb64b4a1b06e01c0cf179cc528c32d6c172a3d065cf3b44975ad1769d4ca65ae4471a5f60d0f8e37c743ce6b08e9d134488fc9fcf35d2dec62d3f0b3fe2e40557654c7b46116cc7c1c1924e64dd4c377671f3c7479a1f885881d6fa47e2c219f49f5aa4ef34afa9dbef6cedab5ab39bd1641a94aac0901ca -Output = 54306a13da596b6d5949c8c5ab26d48aadc03daf14b915b8cadf17a703d3c50601ef21dda30b9e48b85e0b879f9523688569d25daf57e927113d49faf108cc15ec1d1916129bc8661ffa2c93f4991127310ed8464740117001cae85bc591c83adcaaf34b80e5bc03d08972bcce2a760cf5da4c10063541b1e6b4aa7aeff0624ac59f2cafb82fd9d1017a362f3e83a5eb8170a0571746ea9ecb0e74d344571d4006f8b7cb5ff479bd1119d6eef8b0aadd0062ad3b889a885b1b07c9ae9ea694e555db4523b92ccd29d354c3881e5f52f2090026261aedf5c2a97df9215aaf6dab8e168496b54fcf1ea3af089f7986c3be0c70cb8ff3c5f8e84b217d18a9ed8bfb6b5a6f260b56047cfe0e1ec13f82c573bd530cf0e2c9f33d1b6dba70c16db60028e1c4786204da2386c3da743d7cd67629b2272eb235426082cf302c59e4e3d0741f58e8da4745731c0593ae75be1f81d8b7b3fffc8b529eed8b379fe0b8a266e16ac51f1df0de3f3db028f3aa4e4d31b026792b080fe92f79b3c8dda789a8a81d590e4f1e931f707f4e7efeb8ca63e0a605ccd7de2a4931785c5f44b29b91991429630912dd02d97be9f51207d0e7e6e8dddaa473c48ebd7bb7bbcb832f43f61c50ae9b2e52801885a823527a6af74236ca915a3d2aa0357d70fc4c187c5772cf9b29d6d0b4d7e6897069225e45094d4987845f8a5fe415d3e372afb2309cc1ff8e6d2a769e08037ee0c3c297066b332b08e3d50bd832676110ed6bed50efd71c1be06da16419342fe4e854bf840edf0e8bd8dd7796b854abf295590d0d0a156e01f224aba0d8df38ea97587688beaf45e3564f68e84be72b22189682892534d1dd08ea7e21ef575543f7faca1cde992e8bd8c3cf894dfc3b7d4ac999c431b67aaef849b246c1600575f33df2c984a4b98a872a875c0abc517d9af5c9242d5ee6c6e3cd7ee4af8a6c0004c8d7a5adfab2084a269b7cd0c613b1b9653f7030f9989d879957713eb1c324f0a6a2609d66d25faee39487ead1ea0d2a77ef31ccebf90cdc9c1280bbb08eab9a04cd4b954f7a0b537c16cc0eb17310ddaa769490d98b664131ed8c7d74c433fac3438d10bc844d0e9532df17436dd25e12b9ed33d9976f4acdc3cd8134be7ea2d0a7915d90f65e4a250fcc24ebe1e4626c8f4536975dda202b86008c94a96a69b2e9bb828e4195b4b7f15552303948b32582a9102789b5e51fab723c7008cee661bf19c8902b29303eb84c33f0f0152eb725ca994b6f4b4150ee5699cf2ba4c47c5ca6d467045c5d5f269e0fe258684c30cdef46db376fbbc480ca8a545d719d0ce8b82c109044a4883fbc153cd2ca0ec3e46eefb0cbfd617c27f225ea716df7499c8127f06133cf5568d373a4ed35652af23ecf9098546d956a0c9c240eb4b79b8d6e1cbceb171086da916d894cebf5508f40cf4a diff -Nru temporalio-1.3.0/vendor/ring/src/aead/counter.rs temporalio-1.3.0/vendor/ring/src/aead/counter.rs --- temporalio-1.3.0/vendor/ring/src/aead/counter.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/counter.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,105 +0,0 @@ -// Copyright 2018 Brian Smith. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY -// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION -// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -use super::{ - iv::{Iv, IV_LEN}, - Nonce, -}; -use crate::endian::*; -use core::convert::TryInto; - -/// A generator of a monotonically increasing series of `Iv`s. -/// -/// Intentionally not `Clone` to ensure counters aren't forked. -#[repr(C)] -pub struct Counter { - u32s: [U32; COUNTER_LEN], -} - -const COUNTER_LEN: usize = 4; - -impl Counter -where - U32: Copy, - U32: Encoding, - U32: From<[u8; 4]>, - U32: Layout, - [U32; 4]: ArrayEncoding<[u8; IV_LEN]>, -{ - pub fn zero(nonce: Nonce) -> Self { - Self::new(nonce, 0) - } - pub fn one(nonce: Nonce) -> Self { - Self::new(nonce, 1) - } - - #[cfg(test)] - pub fn from_test_vector(nonce: &[u8], initial_counter: u32) -> Self { - Self::new( - Nonce::try_assume_unique_for_key(nonce).unwrap(), - initial_counter, - ) - } - - fn new(nonce: Nonce, initial_counter: u32) -> Self { - let mut r = Self { - u32s: [U32::ZERO; COUNTER_LEN], - }; - let nonce_index = (U32::COUNTER_INDEX + 1) % COUNTER_LEN; - (&mut r.u32s[nonce_index..][..3]) - .iter_mut() - .zip(nonce.as_ref().chunks_exact(4)) - .for_each(|(initial, nonce)| { - let nonce: &[u8; 4] = nonce.try_into().unwrap(); - *initial = U32::from(*nonce); - }); - r.u32s[U32::COUNTER_INDEX] = U32::from(initial_counter); - r - } - - #[inline] - pub fn increment(&mut self) -> Iv { - let current = Self { u32s: self.u32s }; - self.increment_by_less_safe(1); - current.into() - } - - #[inline] - pub fn increment_by_less_safe(&mut self, increment_by: u32) { - let counter = &mut self.u32s[U32::COUNTER_INDEX]; - let old_value: u32 = (*counter).into(); - *counter = U32::from(old_value + increment_by); - } -} - -pub trait Layout { - const COUNTER_INDEX: usize; -} - -impl Layout for BigEndian { - const COUNTER_INDEX: usize = 3; -} - -impl Layout for LittleEndian { - const COUNTER_INDEX: usize = 0; -} - -impl Into for Counter -where - [U32; 4]: ArrayEncoding<[u8; IV_LEN]>, -{ - fn into(self) -> Iv { - Iv::assume_unique_for_key(*self.u32s.as_byte_array()) - } -} diff -Nru temporalio-1.3.0/vendor/ring/src/aead/gcm/gcm_nohw.rs temporalio-1.3.0/vendor/ring/src/aead/gcm/gcm_nohw.rs --- temporalio-1.3.0/vendor/ring/src/aead/gcm/gcm_nohw.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/gcm/gcm_nohw.rs 2023-10-30 19:40:00.000000000 +0000 @@ -22,9 +22,8 @@ // // Unlike the BearSSL notes, we use u128 in the 64-bit implementation. -use super::{super::Block, Xi}; -use crate::endian::BigEndian; -use core::convert::TryInto; +use super::{Block, Xi, BLOCK_LEN}; +use crate::polyfill::ChunksFixed; #[cfg(target_pointer_width = "64")] fn gcm_mul64_nohw(a: u64, b: u64) -> (u64, u64) { @@ -139,7 +138,7 @@ } pub(super) fn init(xi: [u64; 2]) -> super::u128 { - // We implement GHASH in terms of POLYVAL, as described in RFC8452. This + // We implement GHASH in terms of POLYVAL, as described in RFC 8452. This // avoids a shift by 1 in the multiplication, needed to account for bit // reversal losing a bit after multiplication, that is, // rev128(X) * rev128(Y) = rev255(X*Y). @@ -165,7 +164,7 @@ hi ^= carry & 0xc200000000000000; // This implementation does not use the rest of |Htable|. - super::u128 { lo, hi } + super::u128 { hi, lo } } fn gcm_polyval_nohw(xi: &mut [u64; 2], h: super::u128) { @@ -223,11 +222,12 @@ }) } -pub(super) fn ghash(xi: &mut Xi, h: super::u128, input: &[u8]) { +pub(super) fn ghash(xi: &mut Xi, h: super::u128, input: &[[u8; BLOCK_LEN]]) { with_swapped_xi(xi, |swapped| { - input.chunks_exact(16).for_each(|inp| { - swapped[0] ^= u64::from_be_bytes(inp[8..].try_into().unwrap()); - swapped[1] ^= u64::from_be_bytes(inp[..8].try_into().unwrap()); + input.iter().for_each(|input| { + let input: &[[u8; 8]; 2] = input.chunks_fixed(); + swapped[0] ^= u64::from_be_bytes(input[1]); + swapped[1] ^= u64::from_be_bytes(input[0]); gcm_polyval_nohw(swapped, h); }); }); @@ -235,8 +235,8 @@ #[inline] fn with_swapped_xi(Xi(xi): &mut Xi, f: impl FnOnce(&mut [u64; 2])) { - let unswapped = xi.u64s_be_to_native(); + let unswapped: [u64; 2] = (*xi).into(); let mut swapped: [u64; 2] = [unswapped[1], unswapped[0]]; f(&mut swapped); - *xi = Block::from_u64_be(BigEndian::from(swapped[1]), BigEndian::from(swapped[0])) + *xi = Block::from([swapped[1], swapped[0]]) } diff -Nru temporalio-1.3.0/vendor/ring/src/aead/gcm.rs temporalio-1.3.0/vendor/ring/src/aead/gcm.rs --- temporalio-1.3.0/vendor/ring/src/aead/gcm.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/gcm.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,31 +12,42 @@ // OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -use super::{Aad, Block, BLOCK_LEN}; +use super::{ + block::{Block, BLOCK_LEN}, + Aad, +}; use crate::cpu; +use core::ops::BitXorAssign; #[cfg(not(target_arch = "aarch64"))] mod gcm_nohw; -pub struct Key(HTable); +#[derive(Clone)] +pub struct Key { + h_table: HTable, + cpu_features: cpu::Features, +} impl Key { pub(super) fn new(h_be: Block, cpu_features: cpu::Features) -> Self { - let h = h_be.u64s_be_to_native(); + let h: [u64; 2] = h_be.into(); - let mut key = Self(HTable { - Htable: [u128 { hi: 0, lo: 0 }; HTABLE_LEN], - }); - let h_table = &mut key.0; + let mut key = Self { + h_table: HTable { + Htable: [u128 { hi: 0, lo: 0 }; HTABLE_LEN], + }, + cpu_features, + }; + let h_table = &mut key.h_table; match detect_implementation(cpu_features) { #[cfg(target_arch = "x86_64")] Implementation::CLMUL if has_avx_movbe(cpu_features) => { - extern "C" { - fn GFp_gcm_init_avx(HTable: &mut HTable, h: &[u64; 2]); + prefixed_extern! { + fn gcm_init_avx(HTable: &mut HTable, h: &[u64; 2]); } unsafe { - GFp_gcm_init_avx(h_table, &h); + gcm_init_avx(h_table, &h); } } @@ -47,21 +58,21 @@ target_arch = "x86" ))] Implementation::CLMUL => { - extern "C" { - fn GFp_gcm_init_clmul(Htable: &mut HTable, h: &[u64; 2]); + prefixed_extern! { + fn gcm_init_clmul(Htable: &mut HTable, h: &[u64; 2]); } unsafe { - GFp_gcm_init_clmul(h_table, &h); + gcm_init_clmul(h_table, &h); } } #[cfg(any(target_arch = "aarch64", target_arch = "arm"))] Implementation::NEON => { - extern "C" { - fn GFp_gcm_init_neon(Htable: &mut HTable, h: &[u64; 2]); + prefixed_extern! { + fn gcm_init_neon(Htable: &mut HTable, h: &[u64; 2]); } unsafe { - GFp_gcm_init_neon(h_table, &h); + gcm_init_neon(h_table, &h); } } @@ -81,14 +92,13 @@ } impl Context { - pub(crate) fn new(key: &Key, aad: Aad<&[u8]>, cpu_features: cpu::Features) -> Self { - let mut ctx = Context { + pub(crate) fn new(key: &Key, aad: Aad<&[u8]>) -> Self { + let mut ctx = Self { inner: ContextInner { Xi: Xi(Block::zero()), - _unused: Block::zero(), - Htable: key.0.clone(), + Htable: key.h_table.clone(), }, - cpu_features, + cpu_features: key.cpu_features, }; for ad in aad.0.chunks(BLOCK_LEN) { @@ -103,33 +113,42 @@ /// Access to `inner` for the integrated AES-GCM implementations only. #[cfg(target_arch = "x86_64")] #[inline] - pub(super) fn inner(&mut self) -> &mut ContextInner { - &mut self.inner + pub(super) fn inner(&mut self) -> (&HTable, &mut Xi) { + (&self.inner.Htable, &mut self.inner.Xi) } pub fn update_blocks(&mut self, input: &[u8]) { - debug_assert!(input.len() > 0); - debug_assert_eq!(input.len() % BLOCK_LEN, 0); + // Th assembly functions take the input length in bytes, not blocks. + let input_bytes = input.len(); + + debug_assert_eq!(input_bytes % BLOCK_LEN, 0); + debug_assert!(input_bytes > 0); + + let input = input.as_ptr() as *const [u8; BLOCK_LEN]; + // SAFETY: + // - `[[u8; BLOCK_LEN]]` has the same bit validity as `[u8]`. + // - `[[u8; BLOCK_LEN]]` has the same alignment requirement as `[u8]`. + // - `input_bytes / BLOCK_LEN` ensures that the total length in bytes of + // the new `[[u8; BLOCK_LEN]]` will not be longer than the original + // `[u8]`. + let input = unsafe { core::slice::from_raw_parts(input, input_bytes / BLOCK_LEN) }; - // Although these functions take `Xi` and `h_table` as separate - // parameters, one or more of them might assume that they are part of - // the same `ContextInner` structure. let xi = &mut self.inner.Xi; let h_table = &self.inner.Htable; match detect_implementation(self.cpu_features) { #[cfg(target_arch = "x86_64")] Implementation::CLMUL if has_avx_movbe(self.cpu_features) => { - extern "C" { - fn GFp_gcm_ghash_avx( + prefixed_extern! { + fn gcm_ghash_avx( xi: &mut Xi, Htable: &HTable, - inp: *const u8, + inp: *const [u8; BLOCK_LEN], len: crate::c::size_t, ); } unsafe { - GFp_gcm_ghash_avx(xi, h_table, input.as_ptr(), input.len()); + gcm_ghash_avx(xi, h_table, input.as_ptr(), input_bytes); } } @@ -140,31 +159,31 @@ target_arch = "x86" ))] Implementation::CLMUL => { - extern "C" { - fn GFp_gcm_ghash_clmul( + prefixed_extern! { + fn gcm_ghash_clmul( xi: &mut Xi, Htable: &HTable, - inp: *const u8, + inp: *const [u8; BLOCK_LEN], len: crate::c::size_t, ); } unsafe { - GFp_gcm_ghash_clmul(xi, h_table, input.as_ptr(), input.len()); + gcm_ghash_clmul(xi, h_table, input.as_ptr(), input_bytes); } } #[cfg(any(target_arch = "aarch64", target_arch = "arm"))] Implementation::NEON => { - extern "C" { - fn GFp_gcm_ghash_neon( + prefixed_extern! { + fn gcm_ghash_neon( xi: &mut Xi, Htable: &HTable, - inp: *const u8, + inp: *const [u8; BLOCK_LEN], len: crate::c::size_t, ); } unsafe { - GFp_gcm_ghash_neon(xi, h_table, input.as_ptr(), input.len()); + gcm_ghash_neon(xi, h_table, input.as_ptr(), input_bytes); } } @@ -192,21 +211,21 @@ target_arch = "x86" ))] Implementation::CLMUL => { - extern "C" { - fn GFp_gcm_gmult_clmul(xi: &mut Xi, Htable: &HTable); + prefixed_extern! { + fn gcm_gmult_clmul(xi: &mut Xi, Htable: &HTable); } unsafe { - GFp_gcm_gmult_clmul(xi, h_table); + gcm_gmult_clmul(xi, h_table); } } #[cfg(any(target_arch = "aarch64", target_arch = "arm"))] Implementation::NEON => { - extern "C" { - fn GFp_gcm_gmult_neon(xi: &mut Xi, Htable: &HTable); + prefixed_extern! { + fn gcm_gmult_neon(xi: &mut Xi, Htable: &HTable); } unsafe { - GFp_gcm_gmult_neon(xi, h_table); + gcm_gmult_neon(xi, h_table); } } @@ -219,14 +238,14 @@ pub(super) fn pre_finish(self, f: F) -> super::Tag where - F: FnOnce(Xi) -> super::Tag, + F: FnOnce(Block) -> super::Tag, { - f(self.inner.Xi) + f(self.inner.Xi.0) } #[cfg(target_arch = "x86_64")] - pub(super) fn is_avx2(&self, cpu_features: cpu::Features) -> bool { - match detect_implementation(cpu_features) { + pub(super) fn is_avx2(&self) -> bool { + match detect_implementation(self.cpu_features) { Implementation::CLMUL => has_avx_movbe(self.cpu_features), _ => false, } @@ -236,7 +255,7 @@ // The alignment is required by non-Rust code that uses `GCM128_CONTEXT`. #[derive(Clone)] #[repr(C, align(16))] -struct HTable { +pub(super) struct HTable { Htable: [u128; HTABLE_LEN], } @@ -252,10 +271,10 @@ #[repr(transparent)] pub struct Xi(Block); -impl Xi { +impl BitXorAssign for Xi { #[inline] fn bitxor_assign(&mut self, a: Block) { - self.0.bitxor_assign(a) + self.0 ^= a; } } @@ -270,9 +289,8 @@ // Some assembly language code, in particular the MOVEBE+AVX2 X86-64 // implementation, requires this exact layout. #[repr(C, align(16))] -pub(super) struct ContextInner { +struct ContextInner { Xi: Xi, - _unused: Block, Htable: HTable, } diff -Nru temporalio-1.3.0/vendor/ring/src/aead/iv.rs temporalio-1.3.0/vendor/ring/src/aead/iv.rs --- temporalio-1.3.0/vendor/ring/src/aead/iv.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/iv.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -// Copyright 2018 Brian Smith. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY -// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION -// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -/// The IV for a single block encryption. -/// -/// Intentionally not `Clone` to ensure each is used only once. -#[repr(C)] -pub struct Iv([u8; IV_LEN]); - -pub const IV_LEN: usize = 16; - -impl Iv { - #[inline] - pub fn assume_unique_for_key(a: [u8; IV_LEN]) -> Self { - Self(a) - } - - #[inline] - pub fn into_bytes_less_safe(self) -> [u8; IV_LEN] { - self.0 - } -} diff -Nru temporalio-1.3.0/vendor/ring/src/aead/less_safe_key.rs temporalio-1.3.0/vendor/ring/src/aead/less_safe_key.rs --- temporalio-1.3.0/vendor/ring/src/aead/less_safe_key.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/less_safe_key.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,215 @@ +// Copyright 2015-2021 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +use super::{Aad, Algorithm, KeyInner, Nonce, Tag, UnboundKey, TAG_LEN}; +use crate::{constant_time, cpu, error, polyfill}; +use core::ops::RangeFrom; + +/// Immutable keys for use in situations where `OpeningKey`/`SealingKey` and +/// `NonceSequence` cannot reasonably be used. +/// +/// Prefer to use `OpeningKey`/`SealingKey` and `NonceSequence` when practical. +#[derive(Clone)] +pub struct LessSafeKey { + inner: KeyInner, + algorithm: &'static Algorithm, +} + +impl LessSafeKey { + /// Constructs a `LessSafeKey`. + #[inline] + pub fn new(key: UnboundKey) -> Self { + key.into_inner() + } + + pub(super) fn new_( + algorithm: &'static Algorithm, + key_bytes: &[u8], + ) -> Result { + let cpu_features = cpu::features(); + Ok(Self { + inner: (algorithm.init)(key_bytes, cpu_features)?, + algorithm, + }) + } + + /// Like [open_in_place](Self::open_in_place), except the authentication tag is + /// passed separately. + #[inline] + pub fn open_in_place_separate_tag<'in_out, A>( + &self, + nonce: Nonce, + aad: Aad
, + tag: Tag, + in_out: &'in_out mut [u8], + ciphertext: RangeFrom, + ) -> Result<&'in_out mut [u8], error::Unspecified> + where + A: AsRef<[u8]>, + { + let aad = Aad::from(aad.as_ref()); + open_within_(self, nonce, aad, tag, in_out, ciphertext) + } + + /// Like [`super::OpeningKey::open_in_place()`], except it accepts an + /// arbitrary nonce. + /// + /// `nonce` must be unique for every use of the key to open data. + #[inline] + pub fn open_in_place<'in_out, A>( + &self, + nonce: Nonce, + aad: Aad, + in_out: &'in_out mut [u8], + ) -> Result<&'in_out mut [u8], error::Unspecified> + where + A: AsRef<[u8]>, + { + self.open_within(nonce, aad, in_out, 0..) + } + + /// Like [`super::OpeningKey::open_within()`], except it accepts an + /// arbitrary nonce. + /// + /// `nonce` must be unique for every use of the key to open data. + #[inline] + pub fn open_within<'in_out, A>( + &self, + nonce: Nonce, + aad: Aad, + in_out: &'in_out mut [u8], + ciphertext_and_tag: RangeFrom, + ) -> Result<&'in_out mut [u8], error::Unspecified> + where + A: AsRef<[u8]>, + { + let tag_offset = in_out + .len() + .checked_sub(TAG_LEN) + .ok_or(error::Unspecified)?; + + // Split the tag off the end of `in_out`. + let (in_out, received_tag) = in_out.split_at_mut(tag_offset); + let received_tag = (*received_tag).try_into()?; + let ciphertext = ciphertext_and_tag; + + self.open_in_place_separate_tag(nonce, aad, received_tag, in_out, ciphertext) + } + + /// Like [`super::SealingKey::seal_in_place_append_tag()`], except it + /// accepts an arbitrary nonce. + /// + /// `nonce` must be unique for every use of the key to seal data. + #[inline] + pub fn seal_in_place_append_tag( + &self, + nonce: Nonce, + aad: Aad, + in_out: &mut InOut, + ) -> Result<(), error::Unspecified> + where + A: AsRef<[u8]>, + InOut: AsMut<[u8]> + for<'in_out> Extend<&'in_out u8>, + { + self.seal_in_place_separate_tag(nonce, aad, in_out.as_mut()) + .map(|tag| in_out.extend(tag.as_ref())) + } + + /// Like `super::SealingKey::seal_in_place_separate_tag()`, except it + /// accepts an arbitrary nonce. + /// + /// `nonce` must be unique for every use of the key to seal data. + #[inline] + pub fn seal_in_place_separate_tag( + &self, + nonce: Nonce, + aad: Aad, + in_out: &mut [u8], + ) -> Result + where + A: AsRef<[u8]>, + { + seal_in_place_separate_tag_(self, nonce, Aad::from(aad.as_ref()), in_out) + } + + /// The key's AEAD algorithm. + #[inline] + pub fn algorithm(&self) -> &'static Algorithm { + self.algorithm + } + + pub(super) fn fmt_debug( + &self, + type_name: &'static str, + f: &mut core::fmt::Formatter, + ) -> Result<(), core::fmt::Error> { + f.debug_struct(type_name) + .field("algorithm", &self.algorithm()) + .finish() + } +} + +fn open_within_<'in_out>( + key: &LessSafeKey, + nonce: Nonce, + aad: Aad<&[u8]>, + received_tag: Tag, + in_out: &'in_out mut [u8], + src: RangeFrom, +) -> Result<&'in_out mut [u8], error::Unspecified> { + let ciphertext_len = in_out.get(src.clone()).ok_or(error::Unspecified)?.len(); + check_per_nonce_max_bytes(key.algorithm, ciphertext_len)?; + + let Tag(calculated_tag) = (key.algorithm.open)(&key.inner, nonce, aad, in_out, src); + + if constant_time::verify_slices_are_equal(calculated_tag.as_ref(), received_tag.as_ref()) + .is_err() + { + // Zero out the plaintext so that it isn't accidentally leaked or used + // after verification fails. It would be safest if we could check the + // tag before decrypting, but some `open` implementations interleave + // authentication with decryption for performance. + for b in &mut in_out[..ciphertext_len] { + *b = 0; + } + return Err(error::Unspecified); + } + + // `ciphertext_len` is also the plaintext length. + Ok(&mut in_out[..ciphertext_len]) +} + +#[inline] +pub(super) fn seal_in_place_separate_tag_( + key: &LessSafeKey, + nonce: Nonce, + aad: Aad<&[u8]>, + in_out: &mut [u8], +) -> Result { + check_per_nonce_max_bytes(key.algorithm(), in_out.len())?; + Ok((key.algorithm.seal)(&key.inner, nonce, aad, in_out)) +} + +fn check_per_nonce_max_bytes(alg: &Algorithm, in_out_len: usize) -> Result<(), error::Unspecified> { + if polyfill::u64_from_usize(in_out_len) > alg.max_input_len { + return Err(error::Unspecified); + } + Ok(()) +} + +impl core::fmt::Debug for LessSafeKey { + fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> { + self.fmt_debug("LessSafeKey", f) + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/aead/nonce.rs temporalio-1.3.0/vendor/ring/src/aead/nonce.rs --- temporalio-1.3.0/vendor/ring/src/aead/nonce.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/nonce.rs 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,6 @@ // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. use crate::error; -use core::convert::TryInto; /// A nonce for a single AEAD opening or sealing operation. /// diff -Nru temporalio-1.3.0/vendor/ring/src/aead/opening_key.rs temporalio-1.3.0/vendor/ring/src/aead/opening_key.rs --- temporalio-1.3.0/vendor/ring/src/aead/opening_key.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/opening_key.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,143 @@ +// Copyright 2015-2021 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +//! Authenticated Encryption with Associated Data (AEAD). +//! +//! See [Authenticated encryption: relations among notions and analysis of the +//! generic composition paradigm][AEAD] for an introduction to the concept of +//! AEADs. +//! +//! [AEAD]: https://eprint.iacr.org/2000/025.pdf +//! [`crypto.cipher.AEAD`]: https://golang.org/pkg/crypto/cipher/#AEAD + +use super::{Aad, Algorithm, BoundKey, LessSafeKey, NonceSequence, UnboundKey}; +use crate::error; +use core::ops::RangeFrom; + +/// An AEAD key for authenticating and decrypting ("opening"), bound to a nonce +/// sequence. +/// +/// Intentionally not `Clone` or `Copy` since cloning would allow duplication +/// of the nonce sequence. +pub struct OpeningKey { + key: LessSafeKey, + nonce_sequence: N, +} + +impl BoundKey for OpeningKey { + fn new(key: UnboundKey, nonce_sequence: N) -> Self { + Self { + key: key.into_inner(), + nonce_sequence, + } + } + + #[inline] + fn algorithm(&self) -> &'static Algorithm { + self.key.algorithm() + } +} + +impl core::fmt::Debug for OpeningKey { + fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> { + self.key.fmt_debug("OpeningKey", f) + } +} + +impl OpeningKey { + /// Authenticates and decrypts (“opensâ€) data in place. + /// + /// `aad` is the additional authenticated data (AAD), if any. + /// + /// On input, `in_out` must be the ciphertext followed by the tag. When + /// `open_in_place()` returns `Ok(plaintext)`, the input ciphertext + /// has been overwritten by the plaintext; `plaintext` will refer to the + /// plaintext without the tag. + /// + /// When `open_in_place()` returns `Err(..)`, `in_out` may have been + /// overwritten in an unspecified way. + #[inline] + pub fn open_in_place<'in_out, A>( + &mut self, + aad: Aad, + in_out: &'in_out mut [u8], + ) -> Result<&'in_out mut [u8], error::Unspecified> + where + A: AsRef<[u8]>, + { + self.key + .open_in_place(self.nonce_sequence.advance()?, aad, in_out) + } + + /// Authenticates and decrypts (“opensâ€) data in place, with a shift. + /// + /// `aad` is the additional authenticated data (AAD), if any. + /// + /// On input, `in_out[ciphertext_and_tag]` must be the ciphertext followed + /// by the tag. When `open_within()` returns `Ok(plaintext)`, the plaintext + /// will be at `in_out[0..plaintext.len()]`. In other words, the following + /// two code fragments are equivalent for valid values of + /// `ciphertext_and_tag`, except `open_within` will often be more efficient: + /// + /// + /// ```skip + /// let plaintext = key.open_within(aad, in_out, cipertext_and_tag)?; + /// ``` + /// + /// ```skip + /// let ciphertext_and_tag_len = in_out[ciphertext_and_tag].len(); + /// in_out.copy_within(ciphertext_and_tag, 0); + /// let plaintext = key.open_in_place(aad, &mut in_out[..ciphertext_and_tag_len])?; + /// ``` + /// + /// Similarly, `key.open_within(aad, in_out, 0..)` is equivalent to + /// `key.open_in_place(aad, in_out)`. + /// + /// When `open_in_place()` returns `Err(..)`, `in_out` may have been + /// overwritten in an unspecified way. + /// + /// The shifting feature is useful in the case where multiple packets are + /// being reassembled in place. Consider this example where the peer has + /// sent the message “Split stream reassembled in place†split into + /// three sealed packets: + /// + /// ```ascii-art + /// Packet 1 Packet 2 Packet 3 + /// Input: [Header][Ciphertext][Tag][Header][Ciphertext][Tag][Header][Ciphertext][Tag] + /// | +--------------+ | + /// +------+ +-----+ +----------------------------------+ + /// v v v + /// Output: [Plaintext][Plaintext][Plaintext] + /// “Split stream reassembled in place†+ /// ``` + /// + /// This reassembly can be accomplished with three calls to `open_within()`. + #[inline] + pub fn open_within<'in_out, A>( + &mut self, + aad: Aad, + in_out: &'in_out mut [u8], + ciphertext_and_tag: RangeFrom, + ) -> Result<&'in_out mut [u8], error::Unspecified> + where + A: AsRef<[u8]>, + { + self.key.open_within( + self.nonce_sequence.advance()?, + aad, + in_out, + ciphertext_and_tag, + ) + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/aead/poly1305.rs temporalio-1.3.0/vendor/ring/src/aead/poly1305.rs --- temporalio-1.3.0/vendor/ring/src/aead/poly1305.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/poly1305.rs 2023-10-30 19:40:00.000000000 +0000 @@ -15,7 +15,7 @@ // TODO: enforce maximum input length. -use super::{block::BLOCK_LEN, Tag, TAG_LEN}; +use super::{Tag, TAG_LEN}; use crate::{c, cpu}; /// A Poly1305 key. @@ -24,7 +24,8 @@ cpu_features: cpu::Features, } -const KEY_LEN: usize = 2 * BLOCK_LEN; +pub(super) const BLOCK_LEN: usize = 16; +pub(super) const KEY_LEN: usize = 2 * BLOCK_LEN; impl Key { #[inline] @@ -42,7 +43,7 @@ cpu_features: cpu::Features, } -// Keep in sync with `poly1305_state` in GFp/poly1305.h. +// Keep in sync with `poly1305_state` in ring-core/poly1305.h. // // The C code, in particular the way the `poly1305_aligned_state` functions // are used, is only correct when the state buffer is 64-byte aligned. @@ -61,13 +62,13 @@ // Apple's 32-bit ARM ABI is incompatible with the assembly code. #[cfg(all(target_arch = "arm", not(target_vendor = "apple")))] () if cpu::arm::NEON.available($features) => { - extern "C" { + prefixed_extern! { fn $neon_f( $( $p : $t ),+ ); } unsafe { $neon_f( $( $a ),+ ) } } () => { - extern "C" { + prefixed_extern! { fn $f( $( $p : $t ),+ ); } unsafe { $f( $( $a ),+ ) } @@ -91,7 +92,7 @@ dispatch!( cpu_features => - (GFp_poly1305_init | GFp_poly1305_init_neon) + (CRYPTO_poly1305_init | CRYPTO_poly1305_init_neon) (statep: &mut poly1305_state, key: &[u8; KEY_LEN]) (&mut ctx.state, &key_and_nonce)); @@ -102,7 +103,7 @@ pub fn update(&mut self, input: &[u8]) { dispatch!( self.cpu_features => - (GFp_poly1305_update | GFp_poly1305_update_neon) + (CRYPTO_poly1305_update | CRYPTO_poly1305_update_neon) (statep: &mut poly1305_state, input: *const u8, in_len: c::size_t) (&mut self.state, input.as_ptr(), input.len())); } @@ -111,7 +112,7 @@ let mut tag = Tag([0u8; TAG_LEN]); dispatch!( self.cpu_features => - (GFp_poly1305_finish | GFp_poly1305_finish_neon) + (CRYPTO_poly1305_finish | CRYPTO_poly1305_finish_neon) (statep: &mut poly1305_state, mac: &mut [u8; TAG_LEN]) (&mut self.state, &mut tag.0)); tag @@ -132,7 +133,6 @@ mod tests { use super::*; use crate::test; - use core::convert::TryInto; // Adapted from BoringSSL's crypto/poly1305/poly1305_test.cc. #[test] @@ -141,7 +141,7 @@ test::run(test_file!("poly1305_test.txt"), |section, test_case| { assert_eq!(section, ""); let key = test_case.consume_bytes("Key"); - let key: &[u8; BLOCK_LEN * 2] = key.as_slice().try_into().unwrap(); + let key: &[u8; KEY_LEN] = key.as_slice().try_into().unwrap(); let input = test_case.consume_bytes("Input"); let expected_mac = test_case.consume_bytes("MAC"); let key = Key::new(*key, cpu_features); diff -Nru temporalio-1.3.0/vendor/ring/src/aead/poly1305_test.txt temporalio-1.3.0/vendor/ring/src/aead/poly1305_test.txt --- temporalio-1.3.0/vendor/ring/src/aead/poly1305_test.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/poly1305_test.txt 2023-10-30 19:40:00.000000000 +0000 @@ -9,14 +9,14 @@ MAC = 2637408fe13086ea73f971e3425e2820 -# RFC 7539, section 2.5.2. +# RFC 8439, section 2.5.2. Key = 85d6be7857556d337f4452fe42d506a80103808afb0db2fd4abff6af4149f51b Input = "Cryptographic Forum Research Group" MAC = a8061dc1305136c6c22b8baf0c0127a9 -# RFC 7539, section A.3. +# RFC 8439, section A.3. Key = 0000000000000000000000000000000000000000000000000000000000000000 Input = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff -Nru temporalio-1.3.0/vendor/ring/src/aead/quic.rs temporalio-1.3.0/vendor/ring/src/aead/quic.rs --- temporalio-1.3.0/vendor/ring/src/aead/quic.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/quic.rs 2023-10-30 19:40:00.000000000 +0000 @@ -20,7 +20,6 @@ aead::{aes, chacha}, cpu, error, hkdf, }; -use core::convert::{TryFrom, TryInto}; /// A key for generating QUIC Header Protection masks. pub struct HeaderProtectionKey { @@ -171,9 +170,12 @@ id: AlgorithmID::CHACHA20, }; -fn chacha20_init(key: &[u8], _todo: cpu::Features) -> Result { +fn chacha20_init(key: &[u8], cpu_features: cpu::Features) -> Result { let chacha20_key: [u8; chacha::KEY_LEN] = key.try_into()?; - Ok(KeyInner::ChaCha20(chacha::Key::from(chacha20_key))) + Ok(KeyInner::ChaCha20(chacha::Key::new( + chacha20_key, + cpu_features, + ))) } fn chacha20_new_mask(key: &KeyInner, sample: Sample) -> [u8; 5] { diff -Nru temporalio-1.3.0/vendor/ring/src/aead/sealing_key.rs temporalio-1.3.0/vendor/ring/src/aead/sealing_key.rs --- temporalio-1.3.0/vendor/ring/src/aead/sealing_key.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/sealing_key.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,104 @@ +// Copyright 2015-2021 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +//! Authenticated Encryption with Associated Data (AEAD). +//! +//! See [Authenticated encryption: relations among notions and analysis of the +//! generic composition paradigm][AEAD] for an introduction to the concept of +//! AEADs. +//! +//! [AEAD]: https://eprint.iacr.org/2000/025.pdf +//! [`crypto.cipher.AEAD`]: https://golang.org/pkg/crypto/cipher/#AEAD + +use super::{Aad, Algorithm, BoundKey, LessSafeKey, NonceSequence, Tag, UnboundKey}; +use crate::error; + +/// An AEAD key for encrypting and signing ("sealing"), bound to a nonce +/// sequence. +/// +/// Intentionally not `Clone` or `Copy` since cloning would allow duplication +/// of the nonce sequence. +pub struct SealingKey { + key: LessSafeKey, + nonce_sequence: N, +} + +impl BoundKey for SealingKey { + fn new(key: UnboundKey, nonce_sequence: N) -> Self { + Self { + key: key.into_inner(), + nonce_sequence, + } + } + + #[inline] + fn algorithm(&self) -> &'static Algorithm { + self.key.algorithm() + } +} + +impl core::fmt::Debug for SealingKey { + fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> { + self.key.fmt_debug("SealingKey", f) + } +} + +impl SealingKey { + /// Encrypts and signs (“sealsâ€) data in place, appending the tag to the + /// resulting ciphertext. + /// + /// `key.seal_in_place_append_tag(aad, in_out)` is equivalent to: + /// + /// ```skip + /// key.seal_in_place_separate_tag(aad, in_out.as_mut()) + /// .map(|tag| in_out.extend(tag.as_ref())) + /// ``` + #[inline] + pub fn seal_in_place_append_tag( + &mut self, + aad: Aad, + in_out: &mut InOut, + ) -> Result<(), error::Unspecified> + where + A: AsRef<[u8]>, + InOut: AsMut<[u8]> + for<'in_out> Extend<&'in_out u8>, + { + self.key + .seal_in_place_append_tag(self.nonce_sequence.advance()?, aad, in_out) + } + + /// Encrypts and signs (“sealsâ€) data in place. + /// + /// `aad` is the additional authenticated data (AAD), if any. This is + /// authenticated but not encrypted. The type `A` could be a byte slice + /// `&[u8]`, a byte array `[u8; N]` for some constant `N`, `Vec`, etc. + /// If there is no AAD then use `Aad::empty()`. + /// + /// The plaintext is given as the input value of `in_out`. `seal_in_place()` + /// will overwrite the plaintext with the ciphertext and return the tag. + /// For most protocols, the caller must append the tag to the ciphertext. + /// The tag will be `self.algorithm.tag_len()` bytes long. + #[inline] + pub fn seal_in_place_separate_tag( + &mut self, + aad: Aad, + in_out: &mut [u8], + ) -> Result + where + A: AsRef<[u8]>, + { + self.key + .seal_in_place_separate_tag(self.nonce_sequence.advance()?, aad, in_out) + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/aead/shift.rs temporalio-1.3.0/vendor/ring/src/aead/shift.rs --- temporalio-1.3.0/vendor/ring/src/aead/shift.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/shift.rs 2023-10-30 19:40:00.000000000 +0000 @@ -15,18 +15,16 @@ use super::block::{Block, BLOCK_LEN}; #[cfg(target_arch = "x86")] -pub fn shift_full_blocks(in_out: &mut [u8], in_prefix_len: usize, mut transform: F) +pub fn shift_full_blocks(in_out: &mut [u8], src: core::ops::RangeFrom, mut transform: F) where F: FnMut(&[u8; BLOCK_LEN]) -> Block, { - use core::convert::TryFrom; - - let in_out_len = in_out.len().checked_sub(in_prefix_len).unwrap(); + let in_out_len = in_out[src.clone()].len(); for i in (0..in_out_len).step_by(BLOCK_LEN) { let block = { let input = - <&[u8; BLOCK_LEN]>::try_from(&in_out[(in_prefix_len + i)..][..BLOCK_LEN]).unwrap(); + <&[u8; BLOCK_LEN]>::try_from(&in_out[(src.start + i)..][..BLOCK_LEN]).unwrap(); transform(input) }; let output = <&mut [u8; BLOCK_LEN]>::try_from(&mut in_out[i..][..BLOCK_LEN]).unwrap(); diff -Nru temporalio-1.3.0/vendor/ring/src/aead/unbound_key.rs temporalio-1.3.0/vendor/ring/src/aead/unbound_key.rs --- temporalio-1.3.0/vendor/ring/src/aead/unbound_key.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead/unbound_key.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,74 @@ +// Copyright 2015-2021 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +//! Authenticated Encryption with Associated Data (AEAD). +//! +//! See [Authenticated encryption: relations among notions and analysis of the +//! generic composition paradigm][AEAD] for an introduction to the concept of +//! AEADs. +//! +//! [AEAD]: https://eprint.iacr.org/2000/025.pdf +//! [`crypto.cipher.AEAD`]: https://golang.org/pkg/crypto/cipher/#AEAD + +use super::{Algorithm, LessSafeKey, MAX_KEY_LEN}; +use crate::{error, hkdf}; + +/// An AEAD key without a designated role or nonce sequence. +pub struct UnboundKey { + inner: LessSafeKey, +} + +impl UnboundKey { + /// Constructs a `UnboundKey`. + /// + /// Fails if `key_bytes.len() != algorithm.key_len()`. + #[inline] + pub fn new( + algorithm: &'static Algorithm, + key_bytes: &[u8], + ) -> Result { + Ok(Self { + inner: LessSafeKey::new_(algorithm, key_bytes)?, + }) + } + + /// The key's AEAD algorithm. + #[inline] + pub fn algorithm(&self) -> &'static Algorithm { + self.inner.algorithm() + } + + #[inline] + pub(super) fn into_inner(self) -> LessSafeKey { + self.inner + } +} + +impl core::fmt::Debug for UnboundKey { + fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> { + self.inner.fmt_debug("UnboundKey", f) + } +} + +impl From> for UnboundKey { + fn from(okm: hkdf::Okm<&'static Algorithm>) -> Self { + let mut key_bytes = [0; MAX_KEY_LEN]; + let key_bytes = &mut key_bytes[..okm.len().key_len]; + let algorithm = *okm.len(); + okm.fill(key_bytes).unwrap(); + Self { + inner: LessSafeKey::new_(algorithm, key_bytes).unwrap(), + } + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/aead.rs temporalio-1.3.0/vendor/ring/src/aead.rs --- temporalio-1.3.0/vendor/ring/src/aead.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/aead.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -// Copyright 2015-2016 Brian Smith. +// Copyright 2015-2021 Brian Smith. // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above @@ -18,17 +18,20 @@ //! generic composition paradigm][AEAD] for an introduction to the concept of //! AEADs. //! -//! [AEAD]: http://www-cse.ucsd.edu/~mihir/papers/oem.html +//! [AEAD]: https://eprint.iacr.org/2000/025.pdf //! [`crypto.cipher.AEAD`]: https://golang.org/pkg/crypto/cipher/#AEAD -use self::block::{Block, BLOCK_LEN}; -use crate::{constant_time, cpu, error, hkdf, polyfill}; +use crate::{cpu, error, hkdf, polyfill}; use core::ops::RangeFrom; pub use self::{ aes_gcm::{AES_128_GCM, AES_256_GCM}, chacha20_poly1305::CHACHA20_POLY1305, + less_safe_key::LessSafeKey, nonce::{Nonce, NONCE_LEN}, + opening_key::OpeningKey, + sealing_key::SealingKey, + unbound_key::UnboundKey, }; /// A sequences of unique nonces. @@ -60,310 +63,19 @@ fn algorithm(&self) -> &'static Algorithm; } -/// An AEAD key for authenticating and decrypting ("opening"), bound to a nonce -/// sequence. -/// -/// Intentionally not `Clone` or `Copy` since cloning would allow duplication -/// of the nonce sequence. -pub struct OpeningKey { - key: UnboundKey, - nonce_sequence: N, -} - -impl BoundKey for OpeningKey { - fn new(key: UnboundKey, nonce_sequence: N) -> Self { - Self { - key, - nonce_sequence, - } - } - - #[inline] - fn algorithm(&self) -> &'static Algorithm { - self.key.algorithm - } -} - -impl core::fmt::Debug for OpeningKey { - fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> { - f.debug_struct("OpeningKey") - .field("algorithm", &self.algorithm()) - .finish() - } -} - -impl OpeningKey { - /// Authenticates and decrypts (“opensâ€) data in place. - /// - /// `aad` is the additional authenticated data (AAD), if any. - /// - /// On input, `in_out` must be the ciphertext followed by the tag. When - /// `open_in_place()` returns `Ok(plaintext)`, the input ciphertext - /// has been overwritten by the plaintext; `plaintext` will refer to the - /// plaintext without the tag. - /// - /// When `open_in_place()` returns `Err(..)`, `in_out` may have been - /// overwritten in an unspecified way. - #[inline] - pub fn open_in_place<'in_out, A>( - &mut self, - aad: Aad, - in_out: &'in_out mut [u8], - ) -> Result<&'in_out mut [u8], error::Unspecified> - where - A: AsRef<[u8]>, - { - self.open_within(aad, in_out, 0..) - } - - /// Authenticates and decrypts (“opensâ€) data in place, with a shift. - /// - /// `aad` is the additional authenticated data (AAD), if any. - /// - /// On input, `in_out[ciphertext_and_tag]` must be the ciphertext followed - /// by the tag. When `open_within()` returns `Ok(plaintext)`, the plaintext - /// will be at `in_out[0..plaintext.len()]`. In other words, the following - /// two code fragments are equivalent for valid values of - /// `ciphertext_and_tag`, except `open_within` will often be more efficient: - /// - /// - /// ```skip - /// let plaintext = key.open_within(aad, in_out, cipertext_and_tag)?; - /// ``` - /// - /// ```skip - /// let ciphertext_and_tag_len = in_out[ciphertext_and_tag].len(); - /// in_out.copy_within(ciphertext_and_tag, 0); - /// let plaintext = key.open_in_place(aad, &mut in_out[..ciphertext_and_tag_len])?; - /// ``` - /// - /// Similarly, `key.open_within(aad, in_out, 0..)` is equivalent to - /// `key.open_in_place(aad, in_out)`. - /// - /// When `open_in_place()` returns `Err(..)`, `in_out` may have been - /// overwritten in an unspecified way. - /// - /// The shifting feature is useful in the case where multiple packets are - /// being reassembled in place. Consider this example where the peer has - /// sent the message “Split stream reassembled in place†split into - /// three sealed packets: - /// - /// ```ascii-art - /// Packet 1 Packet 2 Packet 3 - /// Input: [Header][Ciphertext][Tag][Header][Ciphertext][Tag][Header][Ciphertext][Tag] - /// | +--------------+ | - /// +------+ +-----+ +----------------------------------+ - /// v v v - /// Output: [Plaintext][Plaintext][Plaintext] - /// “Split stream reassembled in place†- /// ``` - /// - /// This reassembly be accomplished with three calls to `open_within()`. - #[inline] - pub fn open_within<'in_out, A>( - &mut self, - aad: Aad, - in_out: &'in_out mut [u8], - ciphertext_and_tag: RangeFrom, - ) -> Result<&'in_out mut [u8], error::Unspecified> - where - A: AsRef<[u8]>, - { - open_within_( - &self.key, - self.nonce_sequence.advance()?, - aad, - in_out, - ciphertext_and_tag, - ) - } -} - -#[inline] -fn open_within_<'in_out, A: AsRef<[u8]>>( - key: &UnboundKey, - nonce: Nonce, - Aad(aad): Aad, - in_out: &'in_out mut [u8], - ciphertext_and_tag: RangeFrom, -) -> Result<&'in_out mut [u8], error::Unspecified> { - fn open_within<'in_out>( - key: &UnboundKey, - nonce: Nonce, - aad: Aad<&[u8]>, - in_out: &'in_out mut [u8], - ciphertext_and_tag: RangeFrom, - ) -> Result<&'in_out mut [u8], error::Unspecified> { - let in_prefix_len = ciphertext_and_tag.start; - let ciphertext_and_tag_len = in_out - .len() - .checked_sub(in_prefix_len) - .ok_or(error::Unspecified)?; - let ciphertext_len = ciphertext_and_tag_len - .checked_sub(TAG_LEN) - .ok_or(error::Unspecified)?; - check_per_nonce_max_bytes(key.algorithm, ciphertext_len)?; - let (in_out, received_tag) = in_out.split_at_mut(in_prefix_len + ciphertext_len); - let Tag(calculated_tag) = (key.algorithm.open)( - &key.inner, - nonce, - aad, - in_prefix_len, - in_out, - key.cpu_features, - ); - if constant_time::verify_slices_are_equal(calculated_tag.as_ref(), received_tag).is_err() { - // Zero out the plaintext so that it isn't accidentally leaked or used - // after verification fails. It would be safest if we could check the - // tag before decrypting, but some `open` implementations interleave - // authentication with decryption for performance. - for b in &mut in_out[..ciphertext_len] { - *b = 0; - } - return Err(error::Unspecified); - } - // `ciphertext_len` is also the plaintext length. - Ok(&mut in_out[..ciphertext_len]) - } - - open_within( - key, - nonce, - Aad::from(aad.as_ref()), - in_out, - ciphertext_and_tag, - ) -} - -/// An AEAD key for encrypting and signing ("sealing"), bound to a nonce -/// sequence. -/// -/// Intentionally not `Clone` or `Copy` since cloning would allow duplication -/// of the nonce sequence. -pub struct SealingKey { - key: UnboundKey, - nonce_sequence: N, -} - -impl BoundKey for SealingKey { - fn new(key: UnboundKey, nonce_sequence: N) -> Self { - Self { - key, - nonce_sequence, - } - } - - #[inline] - fn algorithm(&self) -> &'static Algorithm { - self.key.algorithm - } -} - -impl core::fmt::Debug for SealingKey { - fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> { - f.debug_struct("SealingKey") - .field("algorithm", &self.algorithm()) - .finish() - } -} - -impl SealingKey { - /// Deprecated. Renamed to `seal_in_place_append_tag()`. - #[deprecated(note = "Renamed to `seal_in_place_append_tag`.")] - #[inline] - pub fn seal_in_place( - &mut self, - aad: Aad, - in_out: &mut InOut, - ) -> Result<(), error::Unspecified> - where - A: AsRef<[u8]>, - InOut: AsMut<[u8]> + for<'in_out> Extend<&'in_out u8>, - { - self.seal_in_place_append_tag(aad, in_out) - } - - /// Encrypts and signs (“sealsâ€) data in place, appending the tag to the - /// resulting ciphertext. - /// - /// `key.seal_in_place_append_tag(aad, in_out)` is equivalent to: - /// - /// ```skip - /// key.seal_in_place_separate_tag(aad, in_out.as_mut()) - /// .map(|tag| in_out.extend(tag.as_ref())) - /// ``` - #[inline] - pub fn seal_in_place_append_tag( - &mut self, - aad: Aad, - in_out: &mut InOut, - ) -> Result<(), error::Unspecified> - where - A: AsRef<[u8]>, - InOut: AsMut<[u8]> + for<'in_out> Extend<&'in_out u8>, - { - self.seal_in_place_separate_tag(aad, in_out.as_mut()) - .map(|tag| in_out.extend(tag.as_ref())) - } - - /// Encrypts and signs (“sealsâ€) data in place. - /// - /// `aad` is the additional authenticated data (AAD), if any. This is - /// authenticated but not encrypted. The type `A` could be a byte slice - /// `&[u8]`, a byte array `[u8; N]` for some constant `N`, `Vec`, etc. - /// If there is no AAD then use `Aad::empty()`. - /// - /// The plaintext is given as the input value of `in_out`. `seal_in_place()` - /// will overwrite the plaintext with the ciphertext and return the tag. - /// For most protocols, the caller must append the tag to the ciphertext. - /// The tag will be `self.algorithm.tag_len()` bytes long. - #[inline] - pub fn seal_in_place_separate_tag( - &mut self, - aad: Aad, - in_out: &mut [u8], - ) -> Result - where - A: AsRef<[u8]>, - { - seal_in_place_separate_tag_( - &self.key, - self.nonce_sequence.advance()?, - Aad::from(aad.as_ref()), - in_out, - ) - } -} - -#[inline] -fn seal_in_place_separate_tag_( - key: &UnboundKey, - nonce: Nonce, - aad: Aad<&[u8]>, - in_out: &mut [u8], -) -> Result { - check_per_nonce_max_bytes(key.algorithm, in_out.len())?; - Ok((key.algorithm.seal)( - &key.inner, - nonce, - aad, - in_out, - key.cpu_features, - )) -} - /// The additionally authenticated data (AAD) for an opening or sealing /// operation. This data is authenticated but is **not** encrypted. /// /// The type `A` could be a byte slice `&[u8]`, a byte array `[u8; N]` /// for some constant `N`, `Vec`, etc. -pub struct Aad>(A); +#[derive(Clone, Copy)] +pub struct Aad(A); impl> Aad { /// Construct the `Aad` from the given bytes. #[inline] pub fn from(aad: A) -> Self { - Aad(aad) + Self(aad) } } @@ -383,60 +95,34 @@ } } -/// An AEAD key without a designated role or nonce sequence. -pub struct UnboundKey { - inner: KeyInner, - algorithm: &'static Algorithm, - cpu_features: cpu::Features, +impl core::fmt::Debug for Aad +where + A: core::fmt::Debug, +{ + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + f.debug_tuple("Aad").field(&self.0).finish() + } } -impl core::fmt::Debug for UnboundKey { - fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> { - f.debug_struct("UnboundKey") - .field("algorithm", &self.algorithm) - .finish() +impl PartialEq for Aad +where + A: PartialEq, +{ + #[inline] + fn eq(&self, other: &Self) -> bool { + self.0.eq(&other.0) } } +impl Eq for Aad where A: Eq {} + #[allow(clippy::large_enum_variant, variant_size_differences)] +#[derive(Clone)] enum KeyInner { AesGcm(aes_gcm::Key), ChaCha20Poly1305(chacha20_poly1305::Key), } -impl UnboundKey { - /// Constructs an `UnboundKey`. - /// - /// Fails if `key_bytes.len() != algorithm.key_len()`. - pub fn new( - algorithm: &'static Algorithm, - key_bytes: &[u8], - ) -> Result { - let cpu_features = cpu::features(); - Ok(Self { - inner: (algorithm.init)(key_bytes, cpu_features)?, - algorithm, - cpu_features, - }) - } - - /// The key's AEAD algorithm. - #[inline] - pub fn algorithm(&self) -> &'static Algorithm { - self.algorithm - } -} - -impl From> for UnboundKey { - fn from(okm: hkdf::Okm<&'static Algorithm>) -> Self { - let mut key_bytes = [0; MAX_KEY_LEN]; - let key_bytes = &mut key_bytes[..okm.len().key_len]; - let algorithm = *okm.len(); - okm.fill(key_bytes).unwrap(); - Self::new(algorithm, key_bytes).unwrap() - } -} - impl hkdf::KeyType for &'static Algorithm { #[inline] fn len(&self) -> usize { @@ -444,138 +130,17 @@ } } -/// Immutable keys for use in situations where `OpeningKey`/`SealingKey` and -/// `NonceSequence` cannot reasonably be used. -/// -/// Prefer to use `OpeningKey`/`SealingKey` and `NonceSequence` when practical. -pub struct LessSafeKey { - key: UnboundKey, -} - -impl LessSafeKey { - /// Constructs a `LessSafeKey` from an `UnboundKey`. - pub fn new(key: UnboundKey) -> Self { - Self { key } - } - - /// Like [`OpeningKey::open_in_place()`], except it accepts an arbitrary nonce. - /// - /// `nonce` must be unique for every use of the key to open data. - #[inline] - pub fn open_in_place<'in_out, A>( - &self, - nonce: Nonce, - aad: Aad, - in_out: &'in_out mut [u8], - ) -> Result<&'in_out mut [u8], error::Unspecified> - where - A: AsRef<[u8]>, - { - self.open_within(nonce, aad, in_out, 0..) - } - - /// Like [`OpeningKey::open_within()`], except it accepts an arbitrary nonce. - /// - /// `nonce` must be unique for every use of the key to open data. - #[inline] - pub fn open_within<'in_out, A>( - &self, - nonce: Nonce, - aad: Aad, - in_out: &'in_out mut [u8], - ciphertext_and_tag: RangeFrom, - ) -> Result<&'in_out mut [u8], error::Unspecified> - where - A: AsRef<[u8]>, - { - open_within_(&self.key, nonce, aad, in_out, ciphertext_and_tag) - } - - /// Deprecated. Renamed to `seal_in_place_append_tag()`. - #[deprecated(note = "Renamed to `seal_in_place_append_tag`.")] - #[inline] - pub fn seal_in_place( - &self, - nonce: Nonce, - aad: Aad, - in_out: &mut InOut, - ) -> Result<(), error::Unspecified> - where - A: AsRef<[u8]>, - InOut: AsMut<[u8]> + for<'in_out> Extend<&'in_out u8>, - { - self.seal_in_place_append_tag(nonce, aad, in_out) - } - - /// Like [`SealingKey::seal_in_place_append_tag()`], except it accepts an - /// arbitrary nonce. - /// - /// `nonce` must be unique for every use of the key to seal data. - #[inline] - pub fn seal_in_place_append_tag( - &self, - nonce: Nonce, - aad: Aad, - in_out: &mut InOut, - ) -> Result<(), error::Unspecified> - where - A: AsRef<[u8]>, - InOut: AsMut<[u8]> + for<'in_out> Extend<&'in_out u8>, - { - self.seal_in_place_separate_tag(nonce, aad, in_out.as_mut()) - .map(|tag| in_out.extend(tag.as_ref())) - } - - /// Like `SealingKey::seal_in_place_separate_tag()`, except it accepts an - /// arbitrary nonce. - /// - /// `nonce` must be unique for every use of the key to seal data. - #[inline] - pub fn seal_in_place_separate_tag( - &self, - nonce: Nonce, - aad: Aad, - in_out: &mut [u8], - ) -> Result - where - A: AsRef<[u8]>, - { - seal_in_place_separate_tag_(&self.key, nonce, Aad::from(aad.as_ref()), in_out) - } - - /// The key's AEAD algorithm. - #[inline] - pub fn algorithm(&self) -> &'static Algorithm { - &self.key.algorithm - } -} - -impl core::fmt::Debug for LessSafeKey { - fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> { - f.debug_struct("LessSafeKey") - .field("algorithm", self.algorithm()) - .finish() - } -} - /// An AEAD Algorithm. pub struct Algorithm { init: fn(key: &[u8], cpu_features: cpu::Features) -> Result, - seal: fn( - key: &KeyInner, - nonce: Nonce, - aad: Aad<&[u8]>, - in_out: &mut [u8], - cpu_features: cpu::Features, - ) -> Tag, + seal: fn(key: &KeyInner, nonce: Nonce, aad: Aad<&[u8]>, in_out: &mut [u8]) -> Tag, open: fn( key: &KeyInner, nonce: Nonce, aad: Aad<&[u8]>, - in_prefix_len: usize, in_out: &mut [u8], - cpu_features: cpu::Features, + src: RangeFrom, ) -> Tag, key_len: usize, @@ -632,9 +197,10 @@ impl Eq for Algorithm {} -/// An authentication tag. +/// A possibly valid authentication tag. #[must_use] #[repr(C)] +#[derive(Clone, Copy)] pub struct Tag([u8; TAG_LEN]); impl AsRef<[u8]> for Tag { @@ -643,37 +209,42 @@ } } +impl TryFrom<&[u8]> for Tag { + type Error = error::Unspecified; + + fn try_from(value: &[u8]) -> Result { + let raw_tag: [u8; TAG_LEN] = value.try_into().map_err(|_| error::Unspecified)?; + Ok(Self::from(raw_tag)) + } +} + +impl From<[u8; TAG_LEN]> for Tag { + #[inline] + fn from(value: [u8; TAG_LEN]) -> Self { + Self(value) + } +} + const MAX_KEY_LEN: usize = 32; // All the AEADs we support use 128-bit tags. -const TAG_LEN: usize = BLOCK_LEN; +const TAG_LEN: usize = 16; /// The maximum length of a tag for the algorithms in this module. pub const MAX_TAG_LEN: usize = TAG_LEN; -fn check_per_nonce_max_bytes(alg: &Algorithm, in_out_len: usize) -> Result<(), error::Unspecified> { - if polyfill::u64_from_usize(in_out_len) > alg.max_input_len { - return Err(error::Unspecified); - } - Ok(()) -} - -#[derive(Clone, Copy)] -enum Direction { - Opening { in_prefix_len: usize }, - Sealing, -} - mod aes; mod aes_gcm; mod block; mod chacha; mod chacha20_poly1305; pub mod chacha20_poly1305_openssh; -mod counter; mod gcm; -mod iv; +mod less_safe_key; mod nonce; +mod opening_key; mod poly1305; pub mod quic; +mod sealing_key; mod shift; +mod unbound_key; diff -Nru temporalio-1.3.0/vendor/ring/src/agreement.rs temporalio-1.3.0/vendor/ring/src/agreement.rs --- temporalio-1.3.0/vendor/ring/src/agreement.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/agreement.rs 2023-10-30 19:40:00.000000000 +0000 @@ -47,12 +47,10 @@ //! agreement::agree_ephemeral( //! my_private_key, //! &peer_public_key, -//! ring::error::Unspecified, //! |_key_material| { //! // In a real application, we'd apply a KDF to the key material and the //! // public keys (as recommended in RFC 7748) and then derive session //! // keys from the result. We omit all that here. -//! Ok(()) //! }, //! )?; //! @@ -83,7 +81,7 @@ impl Eq for Algorithm {} impl PartialEq for Algorithm { - fn eq(&self, other: &Algorithm) -> bool { + fn eq(&self, other: &Self) -> bool { self.curve.id == other.curve.id } } @@ -114,7 +112,7 @@ // // This only handles the key generation part of step 1. The rest of // step one is done by `compute_public_key()`. - let private_key = ec::Seed::generate(&alg.curve, rng, cpu_features)?; + let private_key = ec::Seed::generate(alg.curve, rng, cpu_features)?; Ok(Self { private_key, algorithm: alg, @@ -180,22 +178,18 @@ } /// An unparsed, possibly malformed, public key for key agreement. -pub struct UnparsedPublicKey> { +#[derive(Clone, Copy)] +pub struct UnparsedPublicKey { algorithm: &'static Algorithm, bytes: B, } -impl Copy for UnparsedPublicKey where B: AsRef<[u8]> {} - -impl Clone for UnparsedPublicKey +impl AsRef<[u8]> for UnparsedPublicKey where B: AsRef<[u8]>, { - fn clone(&self) -> Self { - Self { - algorithm: self.algorithm, - bytes: self.bytes.clone(), - } + fn as_ref(&self) -> &[u8] { + self.bytes.as_ref() } } @@ -211,13 +205,13 @@ } } -impl> UnparsedPublicKey { +impl UnparsedPublicKey { /// Constructs a new `UnparsedPublicKey`. pub fn new(algorithm: &'static Algorithm, bytes: B) -> Self { Self { algorithm, bytes } } - /// TODO: doc + /// The algorithm for the public key. #[inline] pub fn algorithm(&self) -> &'static Algorithm { self.algorithm @@ -244,46 +238,34 @@ /// details on how keys are to be encoded and what constitutes a valid key for /// that algorithm. /// -/// `error_value` is the value to return if an error occurs before `kdf` is -/// called, e.g. when decoding of the peer's public key fails or when the public -/// key is otherwise invalid. -/// /// After the key agreement is done, `agree_ephemeral` calls `kdf` with the raw /// key material from the key agreement operation and then returns what `kdf` /// returns. #[inline] -pub fn agree_ephemeral, F, R, E>( +pub fn agree_ephemeral, R>( my_private_key: EphemeralPrivateKey, peer_public_key: &UnparsedPublicKey, - error_value: E, - kdf: F, -) -> Result -where - F: FnOnce(&[u8]) -> Result, -{ + kdf: impl FnOnce(&[u8]) -> R, +) -> Result { let peer_public_key = UnparsedPublicKey { algorithm: peer_public_key.algorithm, bytes: peer_public_key.bytes.as_ref(), }; - agree_ephemeral_(my_private_key, peer_public_key, error_value, kdf) + agree_ephemeral_(my_private_key, peer_public_key, kdf) } -fn agree_ephemeral_( +fn agree_ephemeral_( my_private_key: EphemeralPrivateKey, peer_public_key: UnparsedPublicKey<&[u8]>, - error_value: E, - kdf: F, -) -> Result -where - F: FnOnce(&[u8]) -> Result, -{ + kdf: impl FnOnce(&[u8]) -> R, +) -> Result { // NSA Guide Prerequisite 1. // // The domain parameters are hard-coded. This check verifies that the // peer's public key's domain parameters match the domain parameters of // this private key. if peer_public_key.algorithm != my_private_key.algorithm { - return Err(error_value); + return Err(error::Unspecified); } let alg = &my_private_key.algorithm; @@ -309,12 +291,11 @@ shared_key, &my_private_key.private_key, untrusted::Input::from(peer_public_key.bytes), - ) - .map_err(|_| error_value)?; + )?; // NSA Guide Steps 5 and 6. // // Again, we have a pretty liberal interpretation of the NIST's spec's // "Destroy" that doesn't meet the NSA requirement to "zeroize." - kdf(shared_key) + Ok(kdf(shared_key)) } diff -Nru temporalio-1.3.0/vendor/ring/src/arithmetic/bigint/boxed_limbs.rs temporalio-1.3.0/vendor/ring/src/arithmetic/bigint/boxed_limbs.rs --- temporalio-1.3.0/vendor/ring/src/arithmetic/bigint/boxed_limbs.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/arithmetic/bigint/boxed_limbs.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,130 @@ +// Copyright 2015-2023 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +use super::{Modulus, Width}; +use crate::{ + error, + limb::{self, Limb, LimbMask, LIMB_BYTES}, +}; +use alloc::{borrow::ToOwned, boxed::Box, vec}; +use core::{ + marker::PhantomData, + ops::{Deref, DerefMut}, +}; + +/// All `BoxedLimbs` are stored in the same number of limbs. +pub(super) struct BoxedLimbs { + limbs: Box<[Limb]>, + + /// The modulus *m* that determines the size of `limbx`. + m: PhantomData, +} + +impl Deref for BoxedLimbs { + type Target = [Limb]; + #[inline] + fn deref(&self) -> &Self::Target { + &self.limbs + } +} + +impl DerefMut for BoxedLimbs { + #[inline] + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.limbs + } +} + +// TODO: `derive(Clone)` after https://github.com/rust-lang/rust/issues/26925 +// is resolved or restrict `M: Clone`. +impl Clone for BoxedLimbs { + fn clone(&self) -> Self { + Self { + limbs: self.limbs.clone(), + m: self.m, + } + } +} + +impl BoxedLimbs { + // The caller must ensure that `limbs.len()` is the same width as the + // modulus. + pub(super) fn new_unchecked(limbs: Box<[Limb]>) -> Self { + Self { + limbs, + m: PhantomData, + } + } + + pub(super) fn positive_minimal_width_from_be_bytes( + input: untrusted::Input, + ) -> Result { + // Reject leading zeros. Also reject the value zero ([0]) because zero + // isn't positive. + if untrusted::Reader::new(input).peek(0) { + return Err(error::KeyRejected::invalid_encoding()); + } + let num_limbs = (input.len() + LIMB_BYTES - 1) / LIMB_BYTES; + let mut r = Self::zero(Width { + num_limbs, + m: PhantomData, + }); + limb::parse_big_endian_and_pad_consttime(input, &mut r) + .map_err(|error::Unspecified| error::KeyRejected::unexpected_error())?; + Ok(r) + } + + pub(super) fn minimal_width_from_unpadded(limbs: &[Limb]) -> Self { + debug_assert_ne!(limbs.last(), Some(&0)); + Self { + limbs: limbs.to_owned().into_boxed_slice(), + m: PhantomData, + } + } + + pub(super) fn from_be_bytes_padded_less_than( + input: untrusted::Input, + m: &Modulus, + ) -> Result { + let mut r = Self::zero(m.width()); + limb::parse_big_endian_and_pad_consttime(input, &mut r)?; + if limb::limbs_less_than_limbs_consttime(&r, m.limbs()) != LimbMask::True { + return Err(error::Unspecified); + } + Ok(r) + } + + #[inline] + pub(super) fn is_zero(&self) -> bool { + limb::limbs_are_zero_constant_time(&self.limbs) == LimbMask::True + } + + pub(super) fn zero(width: Width) -> Self { + Self { + limbs: vec![0; width.num_limbs].into_boxed_slice(), + m: PhantomData, + } + } + + pub(super) fn width(&self) -> Width { + Width { + num_limbs: self.limbs.len(), + m: PhantomData, + } + } + + pub(super) fn into_limbs(self) -> Box<[Limb]> { + self.limbs + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/arithmetic/bigint/modulus.rs temporalio-1.3.0/vendor/ring/src/arithmetic/bigint/modulus.rs --- temporalio-1.3.0/vendor/ring/src/arithmetic/bigint/modulus.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/arithmetic/bigint/modulus.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,298 @@ +// Copyright 2015-2023 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +use super::{ + super::{ + montgomery::{Unencoded, R, RR}, + n0::N0, + }, + BoxedLimbs, Elem, Nonnegative, One, PublicModulus, SlightlySmallerModulus, SmallerModulus, + Width, +}; +use crate::{ + bits, cpu, error, + limb::{self, Limb, LimbMask, LIMB_BITS}, + polyfill::LeadingZerosStripped, +}; +use core::marker::PhantomData; + +/// The x86 implementation of `bn_mul_mont`, at least, requires at least 4 +/// limbs. For a long time we have required 4 limbs for all targets, though +/// this may be unnecessary. TODO: Replace this with +/// `n.len() < 256 / LIMB_BITS` so that 32-bit and 64-bit platforms behave the +/// same. +pub const MODULUS_MIN_LIMBS: usize = 4; + +pub const MODULUS_MAX_LIMBS: usize = super::super::BIGINT_MODULUS_MAX_LIMBS; + +/// The modulus *m* for a ring ℤ/mℤ, along with the precomputed values needed +/// for efficient Montgomery multiplication modulo *m*. The value must be odd +/// and larger than 2. The larger-than-1 requirement is imposed, at least, by +/// the modular inversion code. +pub struct Modulus { + limbs: BoxedLimbs, // Also `value >= 3`. + + // n0 * N == -1 (mod r). + // + // r == 2**(N0::LIMBS_USED * LIMB_BITS) and LG_LITTLE_R == lg(r). This + // ensures that we can do integer division by |r| by simply ignoring + // `N0::LIMBS_USED` limbs. Similarly, we can calculate values modulo `r` by + // just looking at the lowest `N0::LIMBS_USED` limbs. This is what makes + // Montgomery multiplication efficient. + // + // As shown in Algorithm 1 of "Fast Prime Field Elliptic Curve Cryptography + // with 256 Bit Primes" by Shay Gueron and Vlad Krasnov, in the loop of a + // multi-limb Montgomery multiplication of a * b (mod n), given the + // unreduced product t == a * b, we repeatedly calculate: + // + // t1 := t % r |t1| is |t|'s lowest limb (see previous paragraph). + // t2 := t1*n0*n + // t3 := t + t2 + // t := t3 / r copy all limbs of |t3| except the lowest to |t|. + // + // In the last step, it would only make sense to ignore the lowest limb of + // |t3| if it were zero. The middle steps ensure that this is the case: + // + // t3 == 0 (mod r) + // t + t2 == 0 (mod r) + // t + t1*n0*n == 0 (mod r) + // t1*n0*n == -t (mod r) + // t*n0*n == -t (mod r) + // n0*n == -1 (mod r) + // n0 == -1/n (mod r) + // + // Thus, in each iteration of the loop, we multiply by the constant factor + // n0, the negative inverse of n (mod r). + // + // TODO(perf): Not all 32-bit platforms actually make use of n0[1]. For the + // ones that don't, we could use a shorter `R` value and use faster `Limb` + // calculations instead of double-precision `u64` calculations. + n0: N0, + + oneRR: One, + + cpu_features: cpu::Features, +} + +impl Clone for Modulus { + fn clone(&self) -> Self { + Self { + limbs: self.limbs.clone(), + n0: self.n0.clone(), + oneRR: self.oneRR.clone(), + cpu_features: self.cpu_features, + } + } +} + +impl core::fmt::Debug for Modulus { + fn fmt(&self, fmt: &mut ::core::fmt::Formatter) -> Result<(), ::core::fmt::Error> { + fmt.debug_struct("Modulus") + // TODO: Print modulus value. + .finish() + } +} + +impl Modulus { + pub(crate) fn from_be_bytes_with_bit_length( + input: untrusted::Input, + cpu_features: cpu::Features, + ) -> Result<(Self, bits::BitLength), error::KeyRejected> { + let limbs = BoxedLimbs::positive_minimal_width_from_be_bytes(input)?; + Self::from_boxed_limbs(limbs, cpu_features) + } + + pub(crate) fn from_nonnegative_with_bit_length( + n: Nonnegative, + cpu_features: cpu::Features, + ) -> Result<(Self, bits::BitLength), error::KeyRejected> { + let limbs = BoxedLimbs::new_unchecked(n.into_limbs()); + Self::from_boxed_limbs(limbs, cpu_features) + } + + pub(crate) fn from_elem( + elem: Elem, + cpu_features: cpu::Features, + ) -> Result + where + M: SlightlySmallerModulus, + { + let (m, _bits) = Self::from_boxed_limbs( + BoxedLimbs::minimal_width_from_unpadded(&elem.limbs), + cpu_features, + )?; + Ok(m) + } + + fn from_boxed_limbs( + n: BoxedLimbs, + cpu_features: cpu::Features, + ) -> Result<(Self, bits::BitLength), error::KeyRejected> { + if n.len() > MODULUS_MAX_LIMBS { + return Err(error::KeyRejected::too_large()); + } + if n.len() < MODULUS_MIN_LIMBS { + return Err(error::KeyRejected::unexpected_error()); + } + if limb::limbs_are_even_constant_time(&n) != LimbMask::False { + return Err(error::KeyRejected::invalid_component()); + } + if limb::limbs_less_than_limb_constant_time(&n, 3) != LimbMask::False { + return Err(error::KeyRejected::unexpected_error()); + } + + // n_mod_r = n % r. As explained in the documentation for `n0`, this is + // done by taking the lowest `N0::LIMBS_USED` limbs of `n`. + #[allow(clippy::useless_conversion)] + let n0 = { + prefixed_extern! { + fn bn_neg_inv_mod_r_u64(n: u64) -> u64; + } + + // XXX: u64::from isn't guaranteed to be constant time. + let mut n_mod_r: u64 = u64::from(n[0]); + + if N0::LIMBS_USED == 2 { + // XXX: If we use `<< LIMB_BITS` here then 64-bit builds + // fail to compile because of `deny(exceeding_bitshifts)`. + debug_assert_eq!(LIMB_BITS, 32); + n_mod_r |= u64::from(n[1]) << 32; + } + N0::from(unsafe { bn_neg_inv_mod_r_u64(n_mod_r) }) + }; + + let bits = limb::limbs_minimal_bits(&n); + let oneRR = { + let partial = PartialModulus { + limbs: &n, + n0: n0.clone(), + m: PhantomData, + cpu_features, + }; + + One::newRR(&partial, bits) + }; + + Ok(( + Self { + limbs: n, + n0, + oneRR, + cpu_features, + }, + bits, + )) + } + + #[inline] + pub(super) fn cpu_features(&self) -> cpu::Features { + self.cpu_features + } + + #[inline] + pub(super) fn limbs(&self) -> &[Limb] { + &self.limbs + } + + #[inline] + pub(super) fn n0(&self) -> &N0 { + &self.n0 + } + + #[inline] + pub(super) fn width(&self) -> Width { + self.limbs.width() + } + + pub(super) fn zero(&self) -> Elem { + Elem { + limbs: BoxedLimbs::zero(self.width()), + encoding: PhantomData, + } + } + + // TODO: Get rid of this + pub(super) fn one(&self) -> Elem { + let mut r = self.zero(); + r.limbs[0] = 1; + r + } + + pub fn oneRR(&self) -> &One { + &self.oneRR + } + + pub fn to_elem(&self, l: &Modulus) -> Elem + where + M: SmallerModulus, + { + // TODO: Encode this assertion into the `where` above. + assert_eq!(self.width().num_limbs, l.width().num_limbs); + Elem { + limbs: BoxedLimbs::new_unchecked(self.limbs.clone().into_limbs()), + encoding: PhantomData, + } + } + + pub(crate) fn as_partial(&self) -> PartialModulus { + PartialModulus { + limbs: &self.limbs, + n0: self.n0.clone(), + m: PhantomData, + cpu_features: self.cpu_features, + } + } +} + +impl Modulus { + pub fn be_bytes(&self) -> LeadingZerosStripped + Clone + '_> { + LeadingZerosStripped::new(limb::unstripped_be_bytes(&self.limbs)) + } +} + +pub(crate) struct PartialModulus<'a, M> { + limbs: &'a [Limb], + n0: N0, + m: PhantomData, + cpu_features: cpu::Features, +} + +impl PartialModulus<'_, M> { + // TODO: XXX Avoid duplication with `Modulus`. + pub(super) fn zero(&self) -> Elem { + let width = Width { + num_limbs: self.limbs.len(), + m: PhantomData, + }; + Elem { + limbs: BoxedLimbs::zero(width), + encoding: PhantomData, + } + } + + #[inline] + pub(super) fn limbs(&self) -> &[Limb] { + self.limbs + } + + #[inline] + pub(super) fn n0(&self) -> &N0 { + &self.n0 + } + + #[inline] + pub fn cpu_features(&self) -> cpu::Features { + self.cpu_features + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/arithmetic/bigint/private_exponent.rs temporalio-1.3.0/vendor/ring/src/arithmetic/bigint/private_exponent.rs --- temporalio-1.3.0/vendor/ring/src/arithmetic/bigint/private_exponent.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/arithmetic/bigint/private_exponent.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,78 @@ +// Copyright 2015-2023 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +use super::{elem_add, elem_sub, limb, BoxedLimbs, Limb, LimbMask, Modulus, Prime}; +use crate::error; +use alloc::boxed::Box; + +pub struct PrivateExponent { + limbs: Box<[Limb]>, +} + +impl PrivateExponent { + // `p` is the modulus for which the exponent is in the interval [1, `p` - 1). + pub fn from_be_bytes_padded( + input: untrusted::Input, + p: &Modulus, + ) -> Result { + let dP = BoxedLimbs::from_be_bytes_padded_less_than(input, p)?; + + // Proof that `dP < p - 1`: + // + // If `dP < p` then either `dP == p - 1` or `dP < p - 1`. Since `p` is + // odd, `p - 1` is even. `d` is odd, and an odd number modulo an even + // number is odd. Therefore `dP` must be odd. But then it cannot be + // `p - 1` and so we know `dP < p - 1`. + // + // Further we know `dP != 0` because `dP` is not even. + if limb::limbs_are_even_constant_time(&dP) != LimbMask::False { + return Err(error::Unspecified); + } + + Ok(Self { + limbs: dP.into_limbs(), + }) + } + + #[cfg(test)] + pub fn from_be_bytes_for_test_only( + input: untrusted::Input, + p: &Modulus, + ) -> Result { + // Do exactly what `from_be_bytes_padded` does for any inputs it accepts. + if let r @ Ok(_) = Self::from_be_bytes_padded(input, p) { + return r; + } + + let dP = BoxedLimbs::::positive_minimal_width_from_be_bytes(input)?; + + Ok(Self { + limbs: dP.into_limbs(), + }) + } + + #[inline] + pub(super) fn limbs(&self) -> &[Limb] { + &self.limbs + } + + // Returns `p - 2`. + pub(super) fn for_flt(p: &Modulus

) -> Self { + let two = elem_add(p.one(), p.one(), p); + let p_minus_2 = elem_sub(p.zero(), &two, p); + Self { + limbs: p_minus_2.limbs.into_limbs(), + } + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_exp_consttime_tests.txt temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_exp_consttime_tests.txt --- temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_exp_consttime_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_exp_consttime_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,123 +0,0 @@ -# ModExp tests. -# -# -# These test vectors satisfy A ^ E = ModExp (mod M) and 0 <= ModExp < M. -# Additionally, and unlike BoringSSL, these test vectors satisify: -# -# * A != 0. Test vectors where A == 0 (mod M) were removed. -# * 0 < A < M. Values of A that were negative or larger than M were reduced -# (mod M) to be in range. -# * M requires at least 4 (64-bit) words to represent. - -ModExp = bbad67352704a6321809f742826bf3d1c31c0ad057bf81432abeb30dc9913c896c03e69eb1cde6b78ffcb320c4625bd38ef23a08d6c64dc86aec951b72d74b097e209ce63092959894614e3865a6153ec0ff6fda639e44071a33763f6b18edc1c22094c3f844f04a86d414c4cb618e9812991c61289360c7ba60f190f75038d0 -A = 855144760f2be2f2038d8ff628f03a902ae2e07736f2695ec980f84a1781665ab65e2b4e53d31856f431a32fd58d8a7727acee54cc54a62161b035c0293714ca294e2161ea4a48660bf084b885f504ad23ea338030460310bd19186be9030ab5136f09fe6a9223962bce385aaaf9c39fe6ed6d005fa96163fe15cdfa08fc914d -E = bb552be12c02ae8b9e90c8beb5689ffefe3378d2c30f12a6d14496250ecce30317c642857535a741642c3df689a8d71a276d247ed482b07b50135357da6143ac2f5c74f6c739c5ff6ada21e1ab35439f6445a1019d6b607950bffb0357c6009a2bfc88cd7f4f883dc591d4eb45b1d787e85aba5c10ee4fe05ea47bf556aec94d -M = dcc24236a1bb94c71d9ec162a6aa4697b932717e82b667cad08b6bd1bbcbddf7cd167b7458de2b0b780486b39574e749d6405f9ede774a021d6b547271523e9e84a6fdd3a98315607ccf93356f54daa9c75e1e311e1672d0dc163be13f9ed6762f7dd301f5b0a1bb2398b608f40ac357ae34fc8a87d4fef3b961cbdb806d9061 - -ModExp = 24eaead5b57883c2f454928f8edd470a344bfe07a953194f7d635d705ef13ddfc64140c8ad6f363d4c828e7c7891a6b6d4df37335de4552c319dafd1c06d1f743240082a3535df4da1475d3eea3fead20e40815fd5a0876c881c162ab65a1eda494280c258901ca953d1d039a998bf0e9aa09273bbef4865f3054663b72d75ff -A = a31618b4532f53729ba22efb2221432fab1dbb70853d6a1159b42fd19fc949965c709b209de106a652aa422d88922ce51dae47f7f6deaf0055202e13db79ee84fc3d3c6f4c003ef96597c49d6895fa53c22ac9e4819f7048146b5272f6279424fdb389819a0b251c823c76f4bebf4f1246de455aafe82a0d34454f5039e90839 -E = 9f43dcb641f3ecf4dbc97450f2bdf3b7ec6a2f3e8e96bb1df2bf34b8d2d78e1a9018d04d960ffd0e932cfc60d3b9b923e3f9f29b3f3d61cae3a9f7245078143475c7fcb896ff200f7d94c4f2708bb42750e37c185a31c876814e4f06a00771707654e1da2fb69c16b6500b16385e3b933e2276ad3569977473f699b1c7926c3b -M = cd607549668469b792f495c141e500871880b0611c8004293a561ec7f9ab6561f8a9b90872742386adafb5cd1890e8204ae12aec529cca0a9e382c96439137f09de9973b12c8492c62847e107deabb7dd946ffbb9d0ac73b462c481092bd65326a17f21d8d6527c47a5dba50aaa20c7048b8788a49eb3ea5f29bd5cfce24eb3b - -# Craft inputs whose Montgomery representation is 1, i.e., shorter than M, in - -# order to test the const time precomputation scattering/gathering. - -ModExp = 9442d2eca2905ad796383947b14ddfcc341f5be8fec079135c36f6f0d9b8b2212f43e08bf29c46167ff0fe16b247cd365df4417d96cc31c94db1cf44b73b0ee3ebcc4920d9b0d003b68e49c1df91e61bc7758a8a1d2d6192ff4e1590b1a792f8be3a1b83db3ad9667d14398d873faf5d885ec3a2bef955026fae6dbf64daea2b -A = 3a4b4c57e62c5e9d1a9065191f8268fed9d5f6f424d071acef66f0662b8210f4c029ed991512e40c9c912043c816d2c4c5b53fa0e5c253e16808aad4225130dafbbb89fd4f30cdfc1c2f2179b636a7ddc4be579795820b4b9377637bd8a21a0ef5a90d0e0f865321eee23d9be2a3b7320b4012d02941b892df2c40bdc85c1898 -E = a2c56ea1362511cac0301918e15a9afe7d37edd438a5c3538d258ea01f0a6df758de07111e868b3ad8fc89b629b4955d78a1b3af902be1806410ddde25ccc6a196ba5949395c1ad5d8725b18815dc1cd5ac1c7dd17773f571e3f2e628255af14476e0494be23a4a4dfd18e23142f33d7a59c236fec61660e360d9676a747c69f -M = ede35a3a7afac817d413373a2032abbc067b1493f709ae6e1282ee5469743391d891b904938857168802b7872d3cd7ac18ab249a9e540a86f970b1d0f310a4cc29df1cc9d4063d98c554f1a32f4ca5eba3523cdfb142e0fc609907c7a92bb0187009d97ec471db3545f42dd5fd29c07b7816085d09477ba31fcf90084660116d - -ModExp = c15ae334455d9f4d1030cd33e734726a27c63624c2afc576238cce5e0498298a4a0c93090a0d19568b41290303c4b558f3d9dd74f9cde8798710f68569ea0d6fd971ce67ec5b54495031de3d8842b8b49288725bee5c9f72b99054d64986ccd4e18d70d5f33943f08cd694eff538f84438ea993ebaba0910c95b3a694f213510 -A = def633b955a917569df3ba8517455eef0655e7a35985edda27097a063e0d82c7c3a76dc36c5d8a71ba9d540790ddd0ea514aaed98925f9a1808eb288d387aaf9605a9ef8a333ebee7ad7057bca012efd619d5867f02266f65976ef4b16da17468426ac4f99b3e8921707e01b4de20f6f9a068e6a19d872079a27f3a44449db83 -E = a465c47b0d15d48e01bb8b1d8e3b3253e11515f6874dbed6c25818adf1a8fd927124d5593beb367f685c11e46f18415be73ccdf16fa2e93a600b728163d21d232849e5278c3749d903edad3f1c4535a2f55a2ab65e7ebc64888bd2a0527e876ecf38cec3ab1980d08138709fad8eb88ae65d960adc3f0f8e92f784fe96fcb693 -M = e43cb9ac1446154356cdc31ec771c79b0e461e22d95185bbe1a279c0945e3af07903a0cb54d553380716fcdcafb4b7cf5dc6da481dc74a8c583d75ff6c1f8e429182d200246ebc473bb56e173787987c1b7fb2dd23f5b2e438a97bc4a1df628bc044fdd1e80c0cf37030adb7b04784dab827d0dcd64f0dbf37c980612570ce11 - -# RSAZ 512-bit. - -# - -# These are regression tests for code which historically reached the RSAZ-512 - -# code. That has since been removed, but the test vectors remain. Note that the - -# lengths of the inputs, especially the *bit* length of |M|, matter a lot. - -# Control: No relationship between A and M except that A < M and they're the -# same number of limbs. - -ModExp = 7f34c1cd63377bc3abf2bb5b2d1bf5f06454e1e8040fe19a72245ce9731cbee1bf9e84532300776c8021ed4f3a8de508d85b4cf320bd82065a013754857b50c4 -A = 8e4e67da6ff890643d0599387955996ef6f0c2045eb9944576ddb965ca64cdb6247727ce128ef178d4a84e5a56d2e67eb0fe389ecbf691f9244ae80f4c11b364 -E = 0be99d8f0650e540b9b191e9cf96f74881b902e32ed169ffd8a1776c3f3e80f0ac765aa14615713e1549f250a20fe4ee48c4e0c6176162fc7842a0dd64d640d1 -M = f12f2c19ee1ecf2c999b87bdafde60eace3790faad8f9adec13b14c6dfb69f8795a1d0fe65494250b59534014b918453042012952ae6f5786342999600725491 - -# Same as above except A was negative. - -ModExp = 71fa6a4c8ae75368eda8cc6282c26afa69e2af12a97fb9444f16b7dd6c99e0a5d6034cab4248cae4357346b211039f4a2bc4c5a20a297372094162417af703cd -A = 62e0c43f7e263ec85c95ee853688c77bd746cef64ed606994a5d5b611551d1d1712aa93052ba50d7e0ece5a6f4be9dd45321d9f65ef0637f3ef7b186b460a12d -E = 0be99d8f0650e540b9b191e9cf96f74881b902e32ed169ffd8a1776c3f3e80f0ac765aa14615713e1549f250a20fe4ee48c4e0c6176162fc7842a0dd64d640d1 -M = f12f2c19ee1ecf2c999b87bdafde60eace3790faad8f9adec13b14c6dfb69f8795a1d0fe65494250b59534014b918453042012952ae6f5786342999600725491 - -# A == M - 1 == -1 (mod M) and the exponent is odd so A ^ E (mod M) == A. - -ModExp = f12f2c19ee1ecf2c999b87bdafde60eace3790faad8f9adec13b14c6dfb69f8795a1d0fe65494250b59534014b918453042012952ae6f5786342999600725490 -A = f12f2c19ee1ecf2c999b87bdafde60eace3790faad8f9adec13b14c6dfb69f8795a1d0fe65494250b59534014b918453042012952ae6f5786342999600725490 -E = 0be99d8f0650e540b9b191e9cf96f74881b902e32ed169ffd8a1776c3f3e80f0ac765aa14615713e1549f250a20fe4ee48c4e0c6176162fc7842a0dd64d640d1 -M = f12f2c19ee1ecf2c999b87bdafde60eace3790faad8f9adec13b14c6dfb69f8795a1d0fe65494250b59534014b918453042012952ae6f5786342999600725491 - -# Same inputs as above except A was negative. Note that A mod M with a "correct -# top" isn't the right length for RSAZ. - -ModExp = 01 -A = 01 -E = 0be99d8f0650e540b9b191e9cf96f74881b902e32ed169ffd8a1776c3f3e80f0ac765aa14615713e1549f250a20fe4ee48c4e0c6176162fc7842a0dd64d640d1 -M = f12f2c19ee1ecf2c999b87bdafde60eace3790faad8f9adec13b14c6dfb69f8795a1d0fe65494250b59534014b918453042012952ae6f5786342999600725491 - -# A was negative, and A (mod M) is the right length for RSAZ. - -ModExp = 8d76eb0f8c7bc3160cc8bb0e0c3590fbed26c5932f5f525b48045c0bd46dda287ba5483f97c851fb7c12c2e858ee7a4a4d1af745cbfb3eb311fa54bea12cde25 -A = 712f2c19ee1ecf2c999b87bdafde60eace3790faad8f9adec13b14c6dfb69f8795a1d0fe65494250b59534014b918453042012952ae6f5786342999600725491 -E = 0be99d8f0650e540b9b191e9cf96f74881b902e32ed169ffd8a1776c3f3e80f0ac765aa14615713e1549f250a20fe4ee48c4e0c6176162fc7842a0dd64d640d1 -M = f12f2c19ee1ecf2c999b87bdafde60eace3790faad8f9adec13b14c6dfb69f8795a1d0fe65494250b59534014b918453042012952ae6f5786342999600725491 - -# RSAZ 1024-bit. - -# Note that the lengths of the inputs, especially the *bit* length of |M|, -# matter a lot. - -# Control: No relationship between A and M except that A < M and they're the -# same number of limbs. - -ModExp = 8984f8c16044f9c0ad7bd72347af90f58e6e003acda92b76e3c7c4a56ea8e918409d8e9b34884d4c89d0b17cb40fe898f2627c084a0f1698e46beccbf6f48eecc281e11ea9e5135adba460ddae157f2c655b5f589ce29b254d43a960a71cede8a08dbb86be4dac22458da232fb1ec2470856827302ed772c9ddafa408c931aa7 -A = 21158da5fe20356825e72b3f5384ec57720d22f727b27ce2f945c8ee311db781add73bf8fae96b775c909bd22fca75c44c2b0584284a5bb1c07f8eefcd6b0a44047a02b185df34f897f11d4fb9a86c9eb841b4cb8d0383441fdc5af3ef385b5e8380f605d73ed41bb42eb2c2a5704d6034b3ad058dafffce83dbbfb6295daaf8 -E = ecdebd112b3b5788669449dcddbd479a203ee9ab72a9bb9c406b97623513bf0ab9a22f1f23634d269e16bfd6d3b64202b71fc355057411967b6ac70f8d9cef0a4e06819a9a18cc06bbe438243fa9759303d98be8a65dc1cb13595ee9b99f138554425d50f6fbc025d8ffa3eaea828d6f3b82a3584146bafde34da257995f0575 -M = ff3a3e023db3bba929ca4ededbace13d0d1264387b5ef62734e177eaf47a78af56b58aacc8ac5d46f5b066bafb95d93d4442bb948653613eec76837b4ffb7991cb080b6c8b403fb09bc817d026e283ee47ab2fc9af274b12f626eda2fe02004a8e27b9ed7d3b614e8955c7e7c2c0700edd079455237c4475fbd41857e206e4b7 - -# Same as above except A was negative. - -ModExp = 75b54540dd6ec1e87c4e77bb93fd50477ea463fdadb5cab05119b34585d18f971617fc1194240ffa6bdfb53e4785f0a451e03f8c3c444aa6080a96af5906eaa508862a4de15b2c55c023b6f278cd04c1e24fd0711244afeda8e3444256e51261ed99fe66beedb52c43c825b4c7a1adc7d4b111e2208ecd495df91e175573ca10 -A = de24b05c3f93864103e3239f8827f4e59b05414153ac79443b9baefcc35cc12da8de4eb3cdc2f1cf991fcae8cbcb6378f817b6105e09058d2bf6f48b82906f4dc68e08bb05610ab803d6fa806d3a174f8f697afe2223c7ced64a92af0ec9a4ec0aa6c3e7a5fc8d32d52715251d5022aea853e74f95cc44a777f858a1b8a939bf -E = ecdebd112b3b5788669449dcddbd479a203ee9ab72a9bb9c406b97623513bf0ab9a22f1f23634d269e16bfd6d3b64202b71fc355057411967b6ac70f8d9cef0a4e06819a9a18cc06bbe438243fa9759303d98be8a65dc1cb13595ee9b99f138554425d50f6fbc025d8ffa3eaea828d6f3b82a3584146bafde34da257995f0575 -M = ff3a3e023db3bba929ca4ededbace13d0d1264387b5ef62734e177eaf47a78af56b58aacc8ac5d46f5b066bafb95d93d4442bb948653613eec76837b4ffb7991cb080b6c8b403fb09bc817d026e283ee47ab2fc9af274b12f626eda2fe02004a8e27b9ed7d3b614e8955c7e7c2c0700edd079455237c4475fbd41857e206e4b7 - -# A == M - 1 == -1 (mod M) and the exponent is odd so A ^ E (mod M) == A. - -ModExp = b5d257b2c50b050d42f0852eff5cfa2571157c500cd0bd9aa0b2ccdd89c531c9609d520eb81d928fb52b06da25dc713561aa0bd365ee56db9e62ac6787a85936990f44438363560f7af9e0c16f378e5b83f658252390d849401817624da97ec613a1b855fd901847352f434a777e4e32af0cb4033c7547fb6437d067fcd3d964 -A = b5d257b2c50b050d42f0852eff5cfa2571157c500cd0bd9aa0b2ccdd89c531c9609d520eb81d928fb52b06da25dc713561aa0bd365ee56db9e62ac6787a85936990f44438363560f7af9e0c16f378e5b83f658252390d849401817624da97ec613a1b855fd901847352f434a777e4e32af0cb4033c7547fb6437d067fcd3d964 -E = 61803d4973ae68cfb2ba6770dbed70d36760fa42c01a16d1482eacf0d01adf7a917bc86ece58a73b920295c1291b90f49167ef856ecad149330e1fd49ec71392fb62d47270b53e6d4f3c8f044b80a5736753364896932abc6d872c4c5e135d1edb200597a93ceb262ff6c99079177cd10808b9ed20c8cd7352d80ac7f6963103 -M = b5d257b2c50b050d42f0852eff5cfa2571157c500cd0bd9aa0b2ccdd89c531c9609d520eb81d928fb52b06da25dc713561aa0bd365ee56db9e62ac6787a85936990f44438363560f7af9e0c16f378e5b83f658252390d849401817624da97ec613a1b855fd901847352f434a777e4e32af0cb4033c7547fb6437d067fcd3d965 - -# Same inputs as above except A was negative. Note that A mod M with a "correct -# top" isn't the right length for RSAZ. - -ModExp = 01 -A = 01 -E = 61803d4973ae68cfb2ba6770dbed70d36760fa42c01a16d1482eacf0d01adf7a917bc86ece58a73b920295c1291b90f49167ef856ecad149330e1fd49ec71392fb62d47270b53e6d4f3c8f044b80a5736753364896932abc6d872c4c5e135d1edb200597a93ceb262ff6c99079177cd10808b9ed20c8cd7352d80ac7f6963103 -M = b5d257b2c50b050d42f0852eff5cfa2571157c500cd0bd9aa0b2ccdd89c531c9609d520eb81d928fb52b06da25dc713561aa0bd365ee56db9e62ac6787a85936990f44438363560f7af9e0c16f378e5b83f658252390d849401817624da97ec613a1b855fd901847352f434a777e4e32af0cb4033c7547fb6437d067fcd3d965 - -# A was negative, and A (mod M) is the right length for RSAZ. - -ModExp = 9cf810b9e89d5cbc4b79ae64e123ea06d92965e2bab077df97a1b906dc2e1ddcf96a9c4ed14e2cd96309b829ea9cc2a74a7d4b43c5f34d792a7c583201427754b8f78b783608070a84b61f18913e3ced7f7f530972de7764667c54e29d756eea38a93cd1703c676a4587231b0ebfeadddf908e2877a7a84b5bfc370ecf0d158d -A = 35d257b2c50b050d42f0852eff5cfa2571157c500cd0bd9aa0b2ccdd89c531c9609d520eb81d928fb52b06da25dc713561aa0bd365ee56db9e62ac6787a85936990f44438363560f7af9e0c16f378e5b83f658252390d849401817624da97ec613a1b855fd901847352f434a777e4e32af0cb4033c7547fb6437d067fcd3d965 -E = 61803d4973ae68cfb2ba6770dbed70d36760fa42c01a16d1482eacf0d01adf7a917bc86ece58a73b920295c1291b90f49167ef856ecad149330e1fd49ec71392fb62d47270b53e6d4f3c8f044b80a5736753364896932abc6d872c4c5e135d1edb200597a93ceb262ff6c99079177cd10808b9ed20c8cd7352d80ac7f6963103 -M = b5d257b2c50b050d42f0852eff5cfa2571157c500cd0bd9aa0b2ccdd89c531c9609d520eb81d928fb52b06da25dc713561aa0bd365ee56db9e62ac6787a85936990f44438363560f7af9e0c16f378e5b83f658252390d849401817624da97ec613a1b855fd901847352f434a777e4e32af0cb4033c7547fb6437d067fcd3d965 diff -Nru temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_exp_vartime_tests.txt temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_exp_vartime_tests.txt --- temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_exp_vartime_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_exp_vartime_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -# ModExp tests. -# -# These test vectors satisfy A ^ E = ModExp (mod M) and 0 <= ModExp < M. -# Additionally, These test vectors satisfy the following constraints: -# -# * 0 <= A < M. -# * E is odd, and the number of bits in E is in [2, 33]. -# * M requires at least 4 (64-bit) words to represent. -# -# XXX: Unfortunately, the above criteria exclude all BoringSSL test vectors; -# i.e. none of the BoringSSL test vectors were suitable for testing the -# variable-time exponentiation used in RSA verification in *ring*. TODO: Make -# new test vectors. diff -Nru temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_mul_tests.txt temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_mul_tests.txt --- temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_mul_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_mul_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,782 +0,0 @@ -# ModMul tests. -# -# These test vectors satisfy A * B = ModMul (mod M) and 0 <= ModMul < M. These -# are the subset of test vectors from BoringSSL where the modulus is at least -# 4 64-bit words long. - -# These test vectors satisfy A * B = ModMul (mod M) and 0 <= ModMul < M. -# Further, unlike in BoringSSL's set, these vectors satisfy 0 <= A, B < M. Any -# A and B values not in range (negative and/or too large) in BoringSSL's set -# were reduced mod M. - -ModMul = 09fcf6a47addfa336557749821a88ccd2573a5ce2c3094a17d9a29b33e043bea165499e89fd2c939f17a670694aff05e9af46836b62c96e597c83681092d63ab9d6e22751aa8fd4b9ea94a90a373876ef0f6514304a495edb5ca1795c9ade7965c70f9aa92f8ea460ccb670e9a62c81e9c -A = 071b93fbad39b1c2755f2051ff7d532d59c985756410d58aed3947d6ae737ace5aadc35e7e0d29c684b9d4bec9c0fa277996bb30230f70431cb7b905 -B = 0167be8381a3392dd4df62e150025e13b388bf366922ba8632614928922cc290772135857d1b5234d51c27862cb1a055c1b86260b6ec -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 8e2ba940fc5165c6c5f7f4cb55cd89d1d5f59e90e78730bd66fb120a814514784879dc43ad4f355030ddb3486a59bc34b601474978a94ddbceafdc0ee23cb18708bdbd824d37cc32577802ac6057fef29a71f168e816309fc80cc46f251e7289c6a57fd222d5868263360af63dd73e7c8b1dd6b3f3b6939849580b9231940a4d -A = 1220ac4bde4feca135268550ddc79d8b05ff72f483b39f77436f348c4f5360c22c598f7dfb76697bf6d2ae86c68e90748b8b729b25f932b2e5fd33f3b5 -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9907b5bac6168216cc456c082ec793bafddf883bebc38372fc842b01cc47fa9cc16a8f07069b1314f77f20f33130cee31ca9b4cfddd79c45 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 8e2ba940fc5165c6c5f7bcac0e449b64801e75134a390f120acc58cbee43888f50d07f7aa6dc2b33643c025cf745434d20eb1aeda8fcee5fa3fa5baf10d67c21390297857aa50bbcc4a29a6b10885f97fea60f1b88fc72512c111b938142ee8d67545efe386622162e8fd50418b09769b8c22efe54fdacd652580d609f0528bf -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f4253911356f785368d3bb46a073963c8beeb9739df5b75cd3ecd3b6b228a6757a7444b7e06442c1cdb66aa4c900722e807ae756e1c21c172947c289ee5a295 -B = 74147c93e729707111d0d531b1c135453f3e59f63a7e082b43dceb8b16cc5debdb6d7c0ce0c00ec9b5ca51e7673e411c3cab34938124db6a -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 043c47d7e319c32a758360dd726a1d91e2cf5c57f73cdf9ad2040e61a9c282a2962d96d300e04288461eb1ed37df19e6b88f104a250f9885898740f6487b081515314e0a217df2d4345d3cf81eabb2bfb346b634b9c251624748f6e9407cb677aff4c53fcf42cc027de267e6ec011e14bc7f3bc6666f693d21 -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4d5c014b0eb5d5b5c839a5d5b7572ac8329de6665a5a87fd00e438d2441d47dcf1b19b535b18d53296dcac91075597851013912155313915e06865901ce22d68 -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c623c36607369964fb48dd46fe84d9dacfae837c588fe9a6bab47cdb7d1219fc57a5f62d44da48f835937d1a60c9d7f1ff5b4e909c4fef5dcf7c00 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 768293c84c431b9c8dc6e538ca3f856c60ae5e1aaf42325865418b7bed16c7fc2589968319cf41cb370657c8edc7b969de10e0566b64ec796470b630e22477e7aafb38e99b6012f100c9d23d5517d486e3cab1fc60c1568c0228c9b55d2d77d23b1351fe37ad4fbf9c07f29330a539de4a32709d043dfc9e21aa1a -A = 06bbaeec78b6a41818b7eec42fa3be7d639dfd86fbace2bc14e0369dba6dd3f04ede8b808743d809f43f70f1146dfdb1d649546441919e27f1f7a9760da4a3b152 -B = 1199dc2f52868a0cf440f6666b576541c7aec1e9cee14c1d22010ab0f53fe8bbf3029c639ff78d89dce82de85fd8eda4e67395d435df60158623c5 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 8e2b90afbdafa02ce68d537ae807b4e7f3e05a66b20b84cff309941fc3150f99d083841ddaf6f19f5a76886ad5d853c73051a0457e95eeb0fe3776a084a027ee77d14f3825713a59622ea163a679cff904db33bf6ab23b06eb4b31f4e34fb122c8c170321164439db783e7bec1c265eed33f33bd9cb6d1611c00aa18a9b4b90d -A = 1c4821515167f7073d4b7cfa318ead1da1131499c12497447846caa84176a9d4af576fe549fd8b0f77bf8dbebf6c395f84dffd40400101bf28b1dda0bbdcc5da255e -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf557465589a08cecc3c6c45f7d537ddde56f33de3ac83426348c53cdb3f78d4dfbf23f8902b8839ee1bcc5ff6faa180a5dba95522a4ffd354f07491cbc2 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 33e8e8e193b4b99d8bb382c29c1fc5403190d7654f43cd77e28d1bf77bc3a728dde9de9a89c6522ebc7222d25f46833fd1753a44275b04485c77b675d816090280b3541ca61bfa33921a79f7286830131d6eba13acc46cc2c449b3a359f1cb49d67a4d0cc1245f3f8b59b1684aa0c3ff1c928b8e880a3375ed811dffc991fd1d -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6dcf2f4d4e43e42756582fc51bafaafa1032ec1edeaa1ef606bb49906b5053a72b7a1e379587d75eec2c84cdaab7a419d60ec6b4fbb0bc45fc4ef8dcdfb5771cddbe1c8f -B = 049ff858c7081392defc3ba12ea8869fd61188ff15d9339be72657b00530b851de53b1fcbe16034816e73251fe1ec97bcecd8bccc470373974287ca328af -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 2c88dc40414969e8b614bf8db05fbc38fb2b7ce144d7e707f9f8eca40ae2309c1fc67e713a8da5fbb20e808ad20aeb369cb72a77fd285e38a7895ec0fc795ade4ef1f1680f3a3b3cee4569cc9d5e699984daab3385815d2e515ba5d67d21dd1defc12ca81bc8ea645f8f8d103b4a0a9cdc92eb50690c07a037df274bbd5217e4 -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3e06321ee2696a19ec7b419af70b234534841284d8b2775789ca6e8ebfd01171ae8a064df04a074fe1003967eba4f81c805fcdd2d665a0fb1f6d58c20411cb5fd820f0aec9 -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f20c758c506fa6efeb577db1da2f76a34fdc71c83882bd63ab72e7727590a1135337032b5b2538d79f6894be4a4561f8056c95410047b7b2b5b68ebad20159e -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 0674885ca3ef617a53eaedb9564cf96bcde131760ac541a81f4b25c174a6fe1444c2c206f7171e343e1bb43f81610162994c497419e75aaa25b664c122ed2b27640b45bf646fc5da1703fbf1cc66e10a3c306eb69ae5f937081a1a18dfc8db376ea18f4c1c499109b0cf8806eb32cb1f28985da790047bd7b32c1f67bffb9761 -A = 0413cbcbbb5851a4ae12555801f7f80ccd888bb82ef1b5c31b99e1901d7e0ab91ee489c84044bc21fa2010f11aac21d0531fac09feb482fda579cb9f224c3149dd6249b0225a -B = 01b6bfea70f1d80350eeb45f9a5cebda954d72cf5cd27a299ef5a42e1ed0b50a541d1657b70e50b0cab69b22e31d0944fd735957b1ff764865d9385af302bb802b -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 8d74ba5fdc67733ced4d468f6eb6ec4c1ebd79c97682c1d4daa06105788ed9c5144992e555d903804d7ed0dd9b29ef2648568ab7ff462a03e0bceb5482485afc3b91448fcfeba435dc587db6f3a022428d37fa0e85392d0e48e7d4ed6b21253084e653da8175587b3b709e28426cddfec8d9dc582d4ac2f3d540305c0fe17327 -A = 17c0b7f0e2cdf316e4d32f040e26d41dbde1e6689d98f0652da1c380daf5dfeb6a511b72d82f1b32d3852e9aa2f594be10776a8fc89a8a35c160e8e41b42a06a342fa1c309fd82 -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e20210fd8419b49f890a1a7ceb4118b85670e3ab9a5410a9c26f852de0edfefb003e303e4d06c2398d730641a5849ac5cf7984febf3a6465387c6cdcc348d237dbaea13 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 57e60f79b4e156ccec4c253e70df8d86e4aef326150d612a5ac4dc285761e88ede412d28d9dfa5a6f5c073d3c91a65ba9c86067d81f296935f0d0ebd2af82e7f6b5b336422429cc3b8427fd8d3f5a6fe936f4208362632093bdd3cec1aa8f4b176d260f605caf4a12cc011f3d1b76135ac2507346674e41673eb16c0f55d8010 -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7ae0e0f17d667641f443e6a865e9d2597d7f2ae957fdc4c1f68bf280d032bbb325a2fcc156b9c3063546008180884fdfb712ae15feeb185252500fc928116539fdb8e9a0b24ae6b39a -B = 723db98a78f42aa45496f31cf78695583526d25e167da48ec310e447ad3540be2636813a2c2f7b8c622795ac451992e91bb8e43e5737f0dd95623282e729d815b08ed8 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 0237eb5726e2c628a515104bafd44348dbf099569815784eca5d6a415d3c12421c8c70fee23d6d82f7b5b136b70ffed3b6d9e98cb47854e79239d96c26f2ec955e4ea8dabc29a1b0765c9b7af6ef09ca673d1ee21c680e4b8cfebf47bbc74c993d017ead6cb6f3319ce4de9e9765cdb3ed8fcc57a1b153327e1a6a965e5dfa89 -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763ad7e109313b9830bbdadbec27cbbc9b3d25b0f0882bed6846d14770e56874eb5068533b8ff5988dff7d9748d2ed04b670390ead5ad7a060e77c29f040969a229308a27f5e2e33ee9f90a -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3b821bb5db6fee060cb22e5bbc7d2f950d181f1f39642acbebca9b295a63272bc3d7dd2f560ae637ca4db44b323e303d3fe20f2c71091e71aa64ec4c3980ffdebd83192136 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 2f1d500443fc4f4b86e7ec93e4d0dfd3faabda35a6dd31445021928373be14c37fec369ce80ebcb77aff2151b7ea94d21592da1823ebfa0af196f286d7a69ea54799573bdcd4d09ca4f33b8a3a93b35de5ff7f65099d59367914f1c79440b471ced6773b0802bd8ca99cf531b62892eb1e78d67f8210592208859b0aa1754b14 -A = 0572de2984fe2ed0d5ebb5bc3f62b197fd592795d91cb16b48a0c898991ee3e884e5870b92405f248036ef9b3898c5ee6100a09ede5a48bf7edf3a067e4fc77e7e6bf6a6e3d4f538e3d66f -B = 12c379402b18a34dc8b80c0dcd25be16c99d6f76d5d64b6050b90910cce594bc022794640735710c7ded857ebd44fe5b2e51574a2296f7d7a61b59c0123051bf2ba4a168cf8f -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 4001c734e1391a88640007893f167eb79ef61e4717d5eb14b8d80c25ed59c753be63fc8e54bdaded22c9c7d3e49753eb49efa010439807dba0d90ec4f9b498aa97f109af542bb41922936223213ddedac4d0fad8f1446498f4228b758aafdf1d9692f59029c76ca2832125ba50e811cb95f2b982a7a4d87b4726e6dd8b1963fe -A = 16792909716b581a936287d0a8550a1f3e840935f0f3ddca75aa32e3489269b078fd19a16f8d6b2326eebaf46da76e90890c0ead3b35689bfda8c1ead17a4f672588f982cfd3da2c2b9bdad9 -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2f60af132627de89a4bda1ecb8d38fb8f26e5501e4d7d4b7f98a7af2c8ef53ed37ecf8ff31150e4bb9be0e520ee1a212a1e3a81dba46e4f469fa8f2cd9754beb63f7c1af6cabd001 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 1bfad44b58d3f8bc987116d4cc7ac98f89f838a8712d81d726189e9e1469cf46fe04675dc0b82e6e556b02c350ef4e30ec6203c7f1df937ea80f435af7c10f48538fe7755ba78993f304e64ca0d783b0f46f61bd14fd3fd30768f233c59018ce911a94b495f58eb96438e416ca3c7eba5b1bca9dea5a770c1d2d9f2f62f821e5 -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d1b500bcc03a4bb2951f3738cf8019af41f326f1cb11a4b994a0d6bc78d8f901434b6ff1a30e498a2a826f80c91608b12b6de650dbfff61ebae61265ae25da83e67ac5bbba6c95e9e70b9370d81c -B = 04920f870cf9f371050e64a419ebe07ac92dd3525b41e8ecf6939a267e1ba853d54862dfc95dd21b3526eb0a0a7a7f8fb67df2e9472dbec81e15cb13266257177c5f2b92fced4cea5d -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 6b0b84505907a5ca37abeff9a5ba169975792c69b5751d9845c0f09dea833fb679c8dfbf3895bc470529e0cc736c9b4a0d08b75d709a1d04525ae583c5ba082d3bca1355055c7bb674aa1b92689cfdec4dbac84a96e81c855280e417f60e7e4931ef4f428420c0b85d2cd11c1030a47788d6ee6af0a76b5364fcf23b270e9d4f -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd3033f8e55637ffe56fdfc4cb8360a8733ad2dffe3369c98477e6277e7b303093df796dd63be8d650acc21b259787097a4ffaa8c997da01f2fadd78535cefe9bf6aa9684dc36d05722f4a080f9cad2899b -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da76389a6557af54b3487afde915c649b73b87e3c33d79883c54f73b623fbde12516b52fa84bc2fb0361c09580a1fb7482db75d5718afd8918522ea0f83d62f95527e4154ba016856c10c2ed8 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 6bce40524278ce242b0b5292d27751a3dc414f962d9c1cacb45fa3ee693ac6890d2ff1647abe578c40ea8d4b326a2e0e2fa7cdec28fe2da089338b5fed91c4277cc5be37537eec2f17edbf48a45fbe38f15c58c3e733d408d001262dbd40c9d246c323e7978df4fb7207aa9270a12921743cee2a483e7e71b221b09a6b2c667a -A = 0402671b0cfe14655bc650bd35dd0c36ce7f65de274a0cc4b708c6f6c3e84c2125ab2430e702421904950b29aa8a03b049910305127890457cd0cc97a3e05df67f29d28b0452969986959df02f59d207 -B = 01648c29205f19fe4c646eb62e8ae9b65260c2cb8424a526423c6bc04ed55870cefef9b8ba808f8ed2e1ab170e2e411f68b934abb1a22776969f79f9420f8bcbef28417582942e26646af60a -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 40db38dcdc201648da555f1062bbbb92c632c29b66902eabf90d98dec69ab3f3b28e60cad1571e7246f4c9e6aa62ad26a6d0bc08598c7a8571fa830cae4c2875c5c95a59f3295f998681edba7749b7e38cbece8887a7823b4752165e1a897e638836d408f439f009d0fb6c196e83e83ca3289d2bd0f0eb36b721331e4f9f80fd -A = 14361ace8ec5223bf0165b78913b77ef921b7089bb5e28891d120bd3db6513ddc90404a4e6cd027f9b51fbc02e80d376d59e1f2b043954199ef8218bf26cacdc5e749f668ad3b4ab35cd796f94c06307e6 -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22555c011f02ef45c8d3f764b2426d4782881936d561ea99fc32451431712a0abfa195b32546c1a749b14ec8f78bbde852f3a1da097fbdf1bc6dec05a2cdc3e020c6b960a3ad6cbcba146103aab -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 4b085796665458b798f824d1c1a88c23ecca456fb88713b433228ca8735141a616633ccec4bc53ea4f6e0c74e4aab6fece2e4cc4c4efb479638cf54caf55d4addf75908076f5fb487ed00d540e5b984acb8f81cae3ef51db926a06382a288092b352793de721c23c371fd0ce7a789486b2e8b867d35f47b5daac2d339d22dbde -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac7127ebd9ddfbcf524d3b79f6b9a32ff89b0df3a496eb286f4f2e2497a75ef26f04c3d9e8a1f461e1c9be3a8d16b8b75617e60104c4970761de1d6a56a5a4281f14c74e7eef2371b8da83767388108f5c0da0ca7 -B = 4f22597947638b9a9e9b9b7c2a8d37f77259f1bb1c7db65003b6e1a1c807469c84c89a75b80bbe0324fc3aeefaedc6ad9c0d9e470dac9c30bc48f6abbbdce9547ad7624f0ce9ff3cb6be23e47bc7 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 2b90a57349ea94ea818207fe15c164f9d3530c7cdffcae178557274552f79c4ab56acd78033a570bd6c3e45789704ef0b0ef586594fe4cae3ccfbf9ceef46e769589b084adcee3ef8345375b7103232465b991273df724964248737d5eccbac558e35e4190112571d3e7c291baa7aa8b1800121bd573b8419f627c0091e1bba8 -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac5a2037055e9c8e076e6cdc81847fbbd11f10059d46cc9521b1684f848f706002520ebdd60a8fc545f51a08eaa60872d6afed2226a6f182d9ee7d4314232de1382fa77f5b4ff7a72483cc039c26891df60ca5ae6 -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd2ff66f81a2fbb2016b210df612743b1dbdd8ddb2a931bc785a7a6b7d723e9de746f31c260467bd955616176b327bae3aedae613a1827713a2397325259fdfae0947fcee980a13902653a818ba43f1f2d4 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 4cd4da762c7576d582572d3427abc4b4297f740705fc14a32b46347541b152d0d1e3a11f27213badcea1e2009e34a63350c7a59e4d43654b28298d2757d6b54c4d82f580e98de4230cd119ba350416452cd4b8adff29b9f35ae0c533f666cfed716838e2b91941dfbea8d6a978a369d5f27554ef411f15e5a89850655d7f3f5a -A = 04f4a28af27b926d8ac347503d6ac0bfec388a6c0b38a577501c3ca4aa709c69601824ddeb5eba4d9e437a97f3e4477e1487d5ce7b4a35b90fb863657a5b2d901bb8c3c838db40b89b495ee9875e8eee607d7b8013 -B = 13ca192603bc8b2da29dae67159e4f8d32f351a503434ed9e4e24f74abb5908ef7da80781c71b1a5ce64fefd13a16cc1eab05a370bfba2a97e6cf90cfe98d3a487ba72dde0762c36c10e1da175f1c1b5fc -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 3812e9e835ae355fdf328b29ed8b86dc3f6895e379b8b5d65a5de41eab5fb20ad3e2290c8ca69f9500248ff883d9715f59d0db6257d13c5cd612211bb1fb99867161daffc77968bdffc1fe48bcde0fcce02ca93975b3cd9e93b56974ab4beb59582c3d0ef2a65957f701549f8bf858de0c5bc98af3e5722f1450de391876a2d9 -A = 14ca6101af00d67139b985ac9f149accc260336237dd2dee802b5cc6e506e217b74c1a007ec10c20012f071ddad34e7407012669109ec1f385566ff04cf1a1ab7562353c0af1ba1be0baaef920a188c60db27970f64d -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac7123b1c800e638fc5c56e2bcabb6f12b962b37367d8ab77e87894395ba23a6a525b72f2a4d6f12efd8f24298377e640b5158443241dbad589ef8dfb1f6d36a934e020b303920f2f2eb662429df171f4e3a2ac50 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 5ad7411cef0581b2e675d03b0ecb9969102a283eba5e779bdcbb7646d94e843083a07269c932d18b973b57abe54eaaad0aa76cf7b61f30505a263bc95aa063efb264ae829eb1d1d5f7d380a0b4db59839de9ae6230ba51901e71b3e3d59e8c34a79678e751c8b7ab139123bdb2f04d90a18ed81d2046ae86da1a73c8dae4fc4f -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed40c31b8fb13cde21f2e86870cdda0b4542efd681542a3c38343f5e00d14c174f5ea06b1d018edd9c82d587144eecefca6db5b6e70cadca1ad5ffee9f4a993270e5caa9ca71ed39146901611688a79aff0293477bd6f9ed5 -B = 04a0d48e31cb8c24a3b2c9c95fd19edbe46823032ef4c97fe65d0a30d5c2cad7a4fbbe89e0ebc9940ed9f9ccb8ab18bac269759a9740a7985809d0f38259e680f0703febe7fa012d1ded47f0cace4a133f59a721 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 2b2953981db406ebc544c39dfeb08a8b089064533221536c7fa2bf2a7a0d3a1192859b7dc0ea5036eeab5aa371e3e0070c3980433adb3e3a5202ff257bb546bcb9550423201a35501fd717ed4c0016eb3a675ed399340bac7f058a04e69c1774590fe747ffb9c27e78ba50fcee30ce533a1659fc49dc080a60f21357a6265d24 -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05db1f0b382d2e76a22a2788439b6a2d571b49836383c68b45393ae5d6e6f2d73babda499420de469ac6bab7222ce957adeab7aebd3ddafb75189705d73cba31a54d9e2b46391bf9cd23e5258d9ee1730d577d5b789dc9997b1 -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d0e72f8ec8f5d254a7147b2241390bcdf201835e1e89d2963112fcdde1902faa8b45232feb7d9c88d8879b234b61429c7ad79b1b60b254287d38d8ed174257621220bd8c1f3d2387721c5f735a7edc8c0f03a207fb60 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 02104dfef151526e072c09a4a277eb981a035379de3b1a55a88cb060681706f26131c388f5572c5646826b119c85ed450207f32733487e3c4e1e9d701a65058c4b4ef0cd1db090495643038229ed177b54695ac32110619038f1c1cece14faa693d88476e3d70329b0084d0ba5d547bbaa5b59ba1ce1fad5aa2f1c11a75bc7c0 -A = 07b79e6f1330fefffaf8521089c3348593e40ab7e8d4da3d4346571b43b12740958336580afd13619be3dc2d42eefd9e30599405da3e32e7f3a5655ece8b77a367059668021aa092460de75e627526da08e6206b0f8f539ef40e -B = 0156e234931907c0c0970c1fe6bd4b24225ed94d5f5b1be4693c8e141e9a6032425b4a47b6eac6265afbeb9d796eb230efa707d5ac4a73808225181cf814b319142e9d175ac461c75e6d479bb6bea53954bb981062eb16 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 2a392c5fc96c29df2f5ae9eaf76e7d981dc1e2f3b47b43a98eaf556a9465ae8727c622188123c64658053ec50c25e54ac5c6c8bc279b134d326e911f14c873357647866eccb4f9038ed0cef5082c2058ebd71e1619f7c8f8f2fb80871ebbca3fbfb7845bd855d307d2efd853f1bfd467fbe030862f165e53a9cfa633d0d3fa23 -A = 1e0430e7cf15173d00592037e83e717c90d7dab4f54a5b2f0f5772762fb5f56bc0b2a53ec1bc3b960afc35e7b043f9d85d0af6c29288486af3e186e52bae6300b58917647231b40a12648cc8c020a797683a9bd7ff34eb6d41b928 -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ec64a99eaffabe42c22517c8492c63f6fdfb82bffd693a451d62fece2f56a5606fccd9f3e86e2718417bad2c1df9502f2f0214e12261a060a6934c0ea8483894224e4367246b4727606274037b4f05d5767177f9d4e5e00a8 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 2608f68632ef14dc3979725c8cf1a0db10a1651f17d91247edfae9935b53f6364d233b030eb99871a87b7bd876ab2cfd5a643387a7af9d337e81770db04a14f4f8dbda2cff604838c9af9a31e8dccf9277d453176589ba33abf77855b9501e63370b2e6cd22831e1e70ff1815302c0a026c70042957d08e74dfaff940a91a7b9 -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a18674c977d9484d2fbefd9b54d9b955d05a6965f522ec56a647bef486f85f59e7cb3bee2a3af6100fdb6e2c17ab1526267db3004084c78770682f4be127263141867fb04692e6feecc8d342b0fee5b9a6eea64f58276ae6ef809c1cc748 -B = 47f81f65ea1af04f702757c02a175a299b23cd8ad551fdb67020c50cbb4110b5371dc5790b12484e9ce647eeb24c0220a5e62aaec3461a9dcdaf1a22814b6f22d66372cc5ee31944bef33469f905458c172ec7871d9dc9c301 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 5735109bd21d31b5f54e9221bbed78c54cf387e39c13d31557e8173e173f786b2d2f1acf3966c3bf4552fe9bc802d0868a5a7632404cb91609a7a45fe0fb83fea8d83b0319666c1b0ac520169c15be708343359447f2fd37960c1e96d32799ac9394e839b391f59dd347acfb79bcc4e34e76490880d163ac97ee69e3a0a6e68f -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a011d0eb96be3284170951a6faaa10836f1196f53ee084d42a0c9d92dbb378d080c9f7c0ca8e015f323e3e64859a2f9fecc27a3f4ae87fecb8568c0ac2f5380ddb984bc23f574d8b56cf1250a0f06b90af2914e55a68cbdb7084ababad0b -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fc35df5e7c50ffc2283069f8a00ce91e5d561b5d6b06c81dc66e6c50ee1af260eda95de46017effa03234ebd6204e18a009ed2a53c76f76ed621aa6606abd91c0805f324d628b90e4c2c44a0a505911c7b0c097e001fac29efeba5 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 3b4ad19b75e1301d19b57ba9b68e0666c28c7c5c99df1d5fbbe0685dc1d3489ff39c919222719c5d8b7ce2d7ff967730d776a02b36a86064ed66a02011bab82eb575390f85f0104715f6e4954a1bb28518450182a8ef58af35d00e2fe417f07ba25dd9c85e00c3451082becd22e3aa0c9bcedaa96e6423c7df6c375b4c799c65 -A = 058e1ce4a9b512eb0632b02cf1207936d6707b802140540fbcbbdd712e5ac1426b4f36e74a9a9ddc812e572855d4fe4fca8a0de6644226f5698fb46a5f2a479dfc8b588aa8e02ddb15acdc79ed3d17143e290f1317274f425b869df54a4807 -B = 14e341cbb5f5a7f3b4dd864172b82ceed2887fcf20aae7d0598b3d8afafd2f10c27bc7456c1488abb570be3df04f43d892dc6a8dbe7621f55bccb0ee3acb1ade989a510b4e0cbe29b6b93968f323f0016d87944c908824d249769f8b -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 7fe0bbbccad6032069b1a335b3f2dac16089051cd9321f903181fad23be6853e2d209958e8c48e008be94a62c6206b34b4e994ca08b8f24a2df0e6394ea65b3b7aadb3bc43d04dc9d35a77e673c4476dedefd4568b4ade5d16f9d89486f3d5ed0566b1eb428cb0b688f10fe3901037744f278385754fca481f937cb630f60308 -A = 1cc0e3ed58090db55063c9ba11401636f89262d6ec096d361f448496e05181c5f7f2604333f26d511c13534618e90637adc807d622097f7eabfc03266135cb626e1bad20997e72da71bf2b3f65a4973dc27d2a594b1fd96b7bf7ec14b9e4b983 -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a0ff4ae3c00601161a9d435c2a6850c89867009c3dbd9b10fb1f640dd698880aebba08c2220358050e51a3a667184b29d8e76c8855527aef2dd86698f91d4b6595db25644529f9cd8daca93fdd773a001a9022c7f825e7e9e54ac770b9f9 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 35d7ac5cbc7e6c262ffa41be168b02a3bde9e112c512d1f68421d705ea34461ce3e0dafde67f44d44cf31d91b38d4d5f2fbf8c6c6a44ec3ed0298dd58f3d45c04346c11e57229dc3d2cdfea02c802732d9a811d7be5e81094d72172cd04caaa3c9d55a951c09f454f42add6e89e2d8a98e124aac86379df377606e7af9bc6baa -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f654d28e889079e28a54bbe330be57c70d6af97c5000e019a3c3e29bef35379584ce4e39dcf53f81f1dae04e2b97e815f4b6be7d2261c1fafe17113651e9a107ac7704a505c55194196e5220178c3d3337bb072a3b53ecf0dabf4fba203df9c29154 -B = 072dc8973f7af7122a05c90df190bbf1e39abca908c197590dc7ac41fd0712f48f838ca62a72a177a293ee6b2afa7a10c21e7993347c3df4f161a5641ff62ba123999bf1eabef29ec0d33ed0919818f4b7c35b5f41e654759fc9abdc0f80e7 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 5d83a9b34631dd6c63c05a0c012adf97b4d0f20f61907e1c2145330211e9a7e38128517b058e0a85e993c385068d1cec768deb814bea1323dbd333de091ad2cad72431f20c1e70ff7e1b119768ba44e14292c38b88dae7e55ac9e10ff98e9bcd5f0ac05af499196b4be0c6222d1a63227ee895fa6a8221a4a182a1323183cd7f -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff28887b65a61118c8bc013ad24480a8f95b4e695fe5ddc014ff85bda86629d4b36c066383f76f18d5962474674a62646e7d30bce6b05edd6d8dd389eef93648a230615fa9459bfa8f3f9637b2629900e7b73feb6fa7b51eda0445f348f3658897b6997489 -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a38c040ae26eb02ce1dbac7096bf004a4b48fb3ca9a1c117535f261d0aecb063712caade24be40e2605a8e204d0da58bd95d36c86669b917a483330b812af4528dc0a070aebed4a9d2aa09d10d5b3c3c171b5acebd87a3bbbfaa2c16cd7245f411 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 7fc1c65eade94d9de7440eb8dfaecf1004905135efd4f98257c3295b1e76ccf1e2ab6808d158d360b7419c6210c50efe960610973d9ae855c72ec0e81d423e5863c80b542ad455700d2d0dee5fc403dc01eab460c24687401cf6a3179642e59f2a30268df95fa80dcdac230702352bbf6b60acb9ff5d45c5b09a3403b954d173 -A = 07906bd8d3bebb1303c1df1fea0b2503b0abe9c69b4f4f5bd01eec9e314788cb7d44b93428adbcef570477e8ecac2a64822e481bdf520fc381e1bb0b2cdae2fe94e484cef5236dd524e4dc364b72f4c06d57f29dd3c5079e532b1ab1e71dd6a65b3362df -B = 01479ef2807b9c23c094d0416f513894cc92e023b134f44a5333360dbbe98b8161ab899302f4fa11b470b97dca0c4e8ab7ae47e5fd0962834e6cc1763618193f4ee027f667368da580c623080de137b5869c3081128e6081b9d5e2dbafd791773242 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 730c04094b1ce944588e8291f7e6cf763c70b79cf362dc8a1bc63bb8790cd4cfe4eb51cf15a45a8464d69ddc3e1b9383cfbfd643f317108cd9ca6a6eaaea177c5c8b6747bbf40108cbc0437eb8f11bd2a0939da59b70c0c6129e2c249823897f2ee536b0427bc45035f121d2cbe7441c175899b97c490e6c3ca01539bcd05848 -A = 102cf23cc3b81785c73ac3613c816de47fd585c7d5f175185818dbb4bf0bd47d0dda9702bce97b29d66e48bfaae0fd07b47b40be2b48ed702ef21c54b10bb927f9d6b43604bec4f4b2796b44aa6b4e83f8bcd00f2fa3871dd901570e1a32888d8691454c40 -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff287d316f18074f0628caf7e230c5ecc2200108b30485917287ed9cc704afd58fa98a44ef04e39c6760fccfb16d9da1b5e6101a38fb24e6970b65e1546cd6f8c87d8233be4dba90ac05725252ec7b8d407c5fb05ce7e18561281019054935f1439dd3142a -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 1cfe1842a53d00e4619265e2fce7cb566ffbd912c9213925d01408a956af304eacb85e29fb6edb812a95e90769bf1c3d62b0cf6cd5bb8f8992391d2ad70f38a14fb9d1d1eb522aa7b7fd9f1b52790beebfc887193882377b7ce567d317d8432e1d9a908d6ccfe8d2de7de497d77b023b3959cc042ae30aefcc0229617fd2a146 -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f12c2038c450fc51fab9029d91eed64b9ed4ce05fa1c99da1acf103668541efcafe7bc7d6afb392b2471d699203a7feffe5471d883f8b1939b6cb3b80fb5ab8f8f51d382237a7954578d2caf5728678ad3b3011392f2d1e4f95d3e40826e5e3c45763ef941b01 -B = 675d9d2a05288b438ddcb330acbd59e4639375f3f14ac2d0e9e8b72de6ffc1d217ce62f997577f7eaddbe4603541b132cd41f2f2740363d9c331ef22df92029d143fc8495ed0152b918aed7ff22f564c7cd94fd3fe4178c90365ace43def8fe30ab05c0e -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 83ed1948276d689bb7fde814e67fcea72c4e3509c48873c3e7349a8fa1c08ae11ea4d814d8deb1021eb8b8ceec342cba5002a2ca45d5f340ae1aa500af4c7db120d0402c6cc8a840404be7221bbc46ffa10236043e5ce4415d3ef1355bde26d2d26eb7127326d4b8d671bb96a08e38a2c1dcc281830ac77202903a5e4777ff02 -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d1d0e8176011cf118575177fee3174fa27b8a90e74bb861627460da83e4d7d6099a9c6f89cabc953ccf0e86b78834b1e60571722abb4185bc42fbe61ec2112cf4d1be7c82d73d3b97c6902712c48b3fc3af8b5cb033435ae832d1d34f91191d4db0d84afef943dcf -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6bad22ea470bfe7098ec697270333ca4e149fdf57e32c9ea8a35849d394b41c3d2d62feffec5a9ea8543927d475bf5f2e9093879de6d599f6be17e67916a60f05711f2655bd8555881a01e0d230c8e11b9a6f157d72f826f4a6f66697eeac3e5dc6d53f117cf -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 0402525e19b6b68942253d1a51fd9b2ca36fc84cf938d80b3d52fd4302de142b9d93d1663e89340fff10c2b5efc8cd47fc3b5cc5ccd49a6ea3038ead6454bf190b7f88f52c56bcf00c6ad5b0f5dfb7615915ee8af137dd99cd3d21172ab772f36d291a6856a8e7912750139c09aa024b930a0a6b9eccc83c2c5c0ee2473ea32c -A = 065e5db532ecae639bd56dd63045bca39b33b4d70b2db82ca3d0ee8ca436e671828cde80217b48eae7487fe110830589ab1be889f1e1463f3b0757d529b2f0cdd2ac92c35e8ec141885bbefb6040a3b5e00e64a541913a38fe05824a929f8c5a2c46568c61989c3ca7 -B = 1d9c73eef8373cbb1e8393feb26d55c33a245c33d7031c234abffb2f06a1601f7f3a79ef1e8664c51ce5dba5f5aaf3b9a9e42470d381219b4616ae93c7f6e64792d23bae523b6a224c1f714ebc82a11f9be42618922b8d2eb7b55e4d45572e68a19fb0ba72228b -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 7a9cdb5dcdfb6e04351057d731fddb9e85f41eb432f01c0d980673d294d05ba9b0180133a89930e74cfce78ed54991b494a19e7f80f310b85904784cebc5639bbc631e80751807868e7fe16719e8ffcd1f2cbd1b9f303c3ed488b647670be3080668b5fa0e53b6342c33c87f0ca1efe1ddb1c877bfe2556aeb61805b06f41343 -A = 1e412c3d66aea2c503f3aa5dbad368a61d969a2951c0094f9da32d2794e47f3bf4c481ae23636baabdebdcf0753d431426b1865e62de8eae7238a9245d62820ad7f17b5380d701f5db776cd4e1ddbdfd542901731ffcea5bcdc247fa9c83f7e08a9389e5a76d38be21bd -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c88023b951080528d09f2da8c2fb8ed7cc736044d8e086f55c89dabd2d1a0ad2221e9ed664636e0c285375266486981175410951c1690ead03896dff707b60b41f3d9d7588379c93a6e602e3b56f15c017eabb3e12ff4942901cd927fe6b1bb93280fff775cb0f18292a -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 712580a1ffde78c8cf98ba71843c8130e835fee3afbb45e372d04c04cc388e403c9efac742611d7974bbae982c3aadfd1893f5da280afe0c1db1d81a9ed73b6ed9b7f05a20ce828316103259112d7754560d66733041e9470ae0d4dc95fd0484bfd56d66739f38ead7efa4051187ea41f7bea8fe5d958a29af41328246e2bc35 -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651052030b76e95256709f642442e56d07be9c4f098ba79856b80eb6de39868758869ffd34925ab6a807b64fca9cca893aa44538585a76a35bbdd7fe09df9c553d8c17be4764662316e3dbf0f401d31418c4340fd3414fe4c599b8536b71d51d430d94430ea2e555860a69495e -B = 05bda68c0a64218d3609d75eb4832d5468298f19498507d7d515f4c410f04dee535947571a5e75f1af7f94a5b3b05fb742fde23e7cf3f8b3dbee0a569e5a36d7a3d31a26c4a48a299044fd72339d2cee1a68966c851e76b93ae34130b75f4abe4f2260207d2254d23f56 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 4a1a514aa4d1ada84fa841d0b668930c904783fac521377a7d622201867d773ad23dbb667e0d4181616358f3cb088cd157c8e72bcd03db64647b37aa1813f870cbb0318ae0a3667f8e6c19f6e0706217646ce633f0cc8bf4e8f0f4d7329a8647252ca6d376416d545e73cb9a3cba40f8f9465d85d57c2481b84b6d95dd42d50a -A = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687633a0deaa80fa8b7717e7f26dd7834679d52e58de4905c032e7fbc427b4ec183e2287b2131071fd68a043c279e7cf1cc047723c6ecdf1bec72c54926c3cd6229b4bc15afebb90530b5008a8ba858f98c247bbcec545dd495b72768107cc98672f7d04fd8f0a7142d47b38462ab -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651064f6675d36585a5f9d7264f3b9f9dcc09c4911928783af66bfaabfa2bc7f530dd03ae6da1cea24776877c409f550267d02e13105880a4dd9ba76fd026d0d5de495d4c74b8021bc08d9014d6fe01589c7f757513090dac2d8eaee630381a912ecf9bab775fc740f1905ed68 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 3fe24e66e381eca525b24cf767215837019f44ed4fac6ab118d02cdbd658066505ee5b0feb7af51859992ecb97d727121e38873f748a61d70201cc43228a7732156a80dbe399e05764be19e37dc1b93222bcdcbc45b1a4817460f7021dcf1d70e632bc6a306628790201222bb522f4cc80adcc907463a539b02f74004d42adff -A = 0773454a43f495959dd55b8a064d70b1b1ffe45c084f5f9553582e24fb402b564de68e5379a8d9d02af101594e717a6c6db2e7173e557a64d2f28fd45c4e06041deda040705d99acacf8086830af19c7ab5e27f91738ffbd937dc27e5b7869bb6caa12c2d7930366ff75eadc570a -B = 013d884a2396268f1a8186748a15722156a172a56dd3d8c77b9cb7001b6ee06720653507eba9bb9918f2f699cb37f3b5ae514f5180108a704647f19b0fc075826153edda66dc1105c1008ea8ec6f8c10057f8e8e479e1a1274edfed9ef719b30827a30f26da78820c3696d01aa -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 715bab8708e53f76d2ef2afbb845bdaaf978b54ce25f84dbbf9074f16d30a18733a02a4ba5d7b092fa6c25d3b9b0d8243c743910f1b7b785d9cb02343fc6d59eb0817bcff05646030ce4fbb2b9ff76781cb1af66b46553d365d02c61e677ae97defe92d057d4378dadf8cba9824b0022c086e0d78b5442bf3d3263ba22c643f7 -A = 168186208c734383d472374fbedc2d5d430e85690a4881b740008623120a4f7f83b2cdf85dc28bfaae5870abcd7ff1bc782ef11c78a75c99d41f8aacb52fceeb5f10266dc65eb00b0868937340146d8850887686d54218badb97647a6d82c0c6650ca1f9078d73fc6222aab95c2967 -B = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab67df3f23e8f1b6e4395bca9102e09a76464a81036886a8f33e4f75af3adb74cc993cfdb32c84315ddb22bc1f52a8c04f728dca7f207ef3ba232cbd06b2c1bb63f0f89f2d72d59bb287bd5b164e2ce1bc18466876f9ce944d3be34706158f037d3b63b40546d720406da0401b9615c -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 2714b99dcde70d6c3be8b671d78abc155793f13105fd4b7c5d760a4c68ae89987311dabf2a9238d18299f983b8aca69a9ce398fdf2c9775d90b11b3dba17bcd8edf661efb6e9c50b4e37553cbecb54eb214fed1d0847287732810e550a4c86b51d4e5da1cb7722ce4317e69644620ad806d6d1c94e1e3fb4d87de6178a997453 -A = 8e2ba940fc5165c6c5f7f4cb56a6fde285936891917bce3c4bc572858192433a88a5d77e63bbf31cdcbea067e71dae417109d3ec4a96c9ea4e22a0b88cb25404e003c22ca6ab49083b8bba437c6cd501c5f268fb4a1defc685eb8fcd5d23385501056eb8d77afa5c628989bc33e9d7743d69125f1e77c40854aa72e58ea6f313 -B = 5aadfe65df0e5b877fe45d42d7ca02882cb6c686d486374da5ece6f87771675153c84d74b6f40df1db567b7e1e3c60c41d21816f958f5576fd2ce2f84a8c3be4749dfc7e5561266b7c9698c7581292d0d813cb77955458d63bf94ce87472924c4ca79504d1ae9d5f025c7a2504156f -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 6613b1c8ccac0cb8fe2f59e76fef4dd05acf1f1b2bfc20aa3f193622ce3e9d4c7824ad544477553bc68f05f0b546e7c1ee87301e111af7929d1f40525291b88e211db7175f4e5c0953141914fcb4fb951dbf77442e7cb28fde495704f1b5141de1e50fbd0e359d0d86ad709c8f564c84dac81c7602717c269219ab1cf12e809c -A = 8e2ba940fc5165c6c5f7f4cb56a6fc26f72d0c623eac124cf0cf551b1c6934cb1882967f9ebdb5b36cfd6d1fde5559f584db39a0ce8461dffbc0d35ceecba29e71605a6024f2049603bec70181c2af20b27e308910747b11efeec8a65d2ca886df718062fbec60bc322c6829801e3c3b5b62d50a2dde0c0075eb335097a9d9b6 -B = 8e2ba940fc5165c6c5f7f4cb56a6fddf2592e9a694e5eb8353684eb05b940d5f643ace64314e1b29324f2f4a06bde7f6e4e84680eed276f8eeb02fe242dc47be6bf5eaec2edf36d4320db0cd22e95cfa5ee71c86d3f78d43d9a865c3a6a7a007afb98052c033d7eb32a0650810b3deeb9a07f2413df201b4741ae0fe1019f3cf -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 3a7fc5680aae875b9241200b9f4112a82cd624ffd9044138ae3cd65200631ee9d7b918fbffadcad7e598791a9f0bef3e23005d6bc0048ba92461283492df3bce74c66e417b082ee052fd8f808d71f3ab18f9ffc40f8fb51ebbb936d09c26a3514bf868141f7cf238c1abb3d88e5d50dfc188902254f07d63fb8cb611ef8e4149 -A = 04a30f32d467b29dc83b40bca2fc4ccee5f08a64069cb87f20e63387b2219b12aa312400c4ca59608f50a71d2535cde40a6d248290793fe01693ca40b93a5cded2dcfbc9aeb36e187c9d650782d12bea917daadbc6525f266e074037803e4b2f300778ca8dcb304658cdb502c93c94a16c6261 -B = 1ca5e5218dade077fecb81d579e1c9290431b34df5ec84aefaaf233d68f17dcf60ee010db26320685af13a821b6daa9d73d8f3a30826c3ae7b2bc5e219cadcff826283cd7dddd04cea7a5e0585d6e7c9f23b27f14ff815fe53bcd75fe700b1b91671bddaba737fb43bfecd2a77e5b752a206 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 768d312175ce7d2601f30bb38339f046e4c2ba5c19ae5f7ca5a562cc2462c579fce9985e9e8afe2578db542c8d9e7693e0c74ba161334b249ce720d568e9c18f09c87cd701e6f2080b752362f2fe6252a1d0caaaf1fa18199776e4c6078d89d520b9c63db159d5fba7e0838811e68794b1413c248f3f7173ef29eff28f15b656 -A = 149353e91bdb70cdca8f06648388508511a64d05221305cad7187ea40d9ccef91fe17ceb1e79667bf66e8e6b7a57faa90a83bad119c02984a8f860bc1f23ffd33d4ad84896610301cd2e8e80a5ca7e8d3ee63e7dfa459793c9dbaef3569eb4f8a021c6a3d032a9c94d3f6b8278274d0088a98228 -B = 8e2ba940fc5165c6c5f7f4cb55ff32279073391a0e6c975206452902a8c522f8e8a014bcc239720c346bbf7df93506eb95ef2f322138dba8b5df6db51c3a381fb2c2ef9875f5cbefba72732dff4da6144c8f3564e5385f277be7a637252a880bfea80ce2230b88491c40db00f1138a8b08f830a673ce4a7cc1d9f38d35b283b7 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 0763912f4b16549e6ccd60eaf7a0a1f64d9c3bc83e4a9b87e209a3959ba3cf609cf47183bc543f08e346b6e12b8bdd5d1c07c603f74b286ad432d58d7001299ec7a4dcdb56ca875dfc7ee5c75bcfe2aaba14959bf3facaebf8df92bc12937cfd4a4865b3dd74b243ff62ba256d110b01b4089730cf48efdc66fe272f9241014e -A = 8e2ba940fc5165c6c5f7f47d631d62a2259a038a455598cf900c13317339e33a90c42906c2f9cab8056b5137a3a5220062c0c6b3bb88ffee3b4ab453b8134e976a8e7c3785bd223c31c96f46ff59705e688a427b8bc6e985c755963ab731d779bdd1aa54ea223b62f5b707c12efde079d98187f7d7edb00bbfc0010f889709ce -B = 0450eff382e73f2f38bc3a4abecd5f8de478f80a6b99fb6252173c90d7099629afe859442bb1f796855ee9a2940f21d1f9dc44f462edd74b479e1f2926ff6faefeb55adbc6152b5c97967b1dc8c44dfb85b5e02e870d2920b75422c8a427e99e35e2a4be92cb0ddc04cb7f4044f716be97b36f045a -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 56ef57d56c6d1b94cf0fcdedd3611a8ee444c2e25522b9ad175587619598da341916b183be03b1e73be300f9969120d8f3a23750cd8c4ffdb87124a2139e8ff2c15d8dc944bc3c3a066aa16dbe6dba4a74925e16acdb2b2e83cd7fd5cedade6a7f7409a509c00dadc182b2860609cc9a375cb8bbdcc350bcb2c0df9b3bff882e -A = 8e2ba940fc5165c6c5f6b1005d11466abfa370afbb80500e54891dcf47754289eb6dee4eb33b8f37749ad543fc8a178a3f580832b977d8aaab2ad01c57e937fbe73efe0aa2ed20c938766a5571eeff14415d1a954d3f26d7ed1063eb01ddc0ee2e29e6dba9ce9c9d4df20eb92b0535857020cbf05c56113ad072c3a167c34056 -B = 8e2ba940fc5165c6c5f7c4a55ca1388ad3f286db5f7286c8ff8877b65dca8d7802812c6d30da7b2d743eaae7570493cc8d40c8ea51f418261e84880dac7ccf0fd1b338a61c576eb456cd47b4ec89a3ad6c689f58db3b3668938c66f850754ec3bbdcf95346dbb440bc08d1b98ea6e4e4f7dc2a9ee93a836587d6973c4121d326 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 42f363c34c20c443c1ea7a1c54f98c6977b6671164a80308000533b2404a7f280adb1f3b98101cba25249131288f7ac68b0ae2572c7777e7381c1f4d05fd82188c4b1ed5636652e0bfca4d096bbf4189a9358b79f6b6333b99e5c4b7a940c2f7d1413bf9f47a2ef66b620b5e220b2c3dd7267452eb1b9d8d9cfb17bbfcdb6abb -A = 0499d05de867bda3118a8cb82b80ac91fc505e0fbc6c7dac5fb61713cb6e715f56a31ae8af4b400461d7ad1687a2631faecd90d7829f67d1b9e36ed7d55704b3f2aea65eac061172d698384daea710ed92cf1140cd4da427174bebd173c2ff1675b2407a84649b0a318602f33105006fe4d5ed8d0e015b99 -B = 017a426a12a0175bb46bf7a7e727eb5238af383cee6f4d5e2bd82b0d29b9fed35f3d8ec95cfdfcac49bee47b25d3b5f375a3340fa83f8dd9330a593a974d208debb7e567e59dbb7251b54e42dab2cd50fc63aab050a41bd88282373f8195c94c35f61bb48aa921f574cb4ff0984ccedc070efea8c46e5cf8 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 2f03374e9596cb56cbbd89794090ca7a4b437f4c05fa38a09db60e5ca900b208fb85b52f71c29fd35e62c9f9529d7ffe46fcc54607ccb07f6f8e13fdd4ff1185033ba4fcefb1ed4bfc42c3ea9f05276767d8dc9b7b4aea4c8bc0ce84951d1f590cec0751f73667db19060e2bff64da30fc048a1f5700fe3f489920675cc3540a -A = 1073531f678877ba854fd1e7f857659614c526847ffbe8ed131dc9f2ccf69e1f1e917bb44a7b905f7ff758f61c06dd59ee09567d9f0df2550fcb98b776ed1381ce052988aa08fc5153e31c621c6a51ca61b386e3a9163a5cd69608b3e200476a8ada35d906c41d044bafe71ef5c6f732935f15b53bf36f7ef8 -B = 8e2ba940fc5165b8e2a1bba60f58a9da18716f19b8a69f9e6dd8a39c39ad4afba8caaf2ee532d61955674e56751994d9c656debfd5b8fbf448362f09feee6bb9df2c31983cdf1907dd8340ecd309ac805b9beff1d5d9755e2b07d1a21c7dd093691b9b2b52ddbfcae977b04b6842c6d8770bb890183b60e33cb1c9425f43c312 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 01aa22f9013bc1cdebbdfecedf710c1bcaa41c696a3d7dfc1c8c601fcfcc1c85c8cc24be7df2cf3c7311b3b17a4ef2dbce545dc467d2a92d371e02a196a9977cb9042b236acf99d8c0d34a1c4dd8792d3497cffbc87c397ccee5d01fc2c89ef051324a7061e423720d0a3821a36739797393bdf7a45b5fc600824a17043312bc -A = 8e2ba940fc511613e1fa122a9053ed96f339c11f7407938866cc974c11575b3b8a0b7ab2ef456a6d2db6e40073d145c52ad2b706836eeab58d595a0e0c39c6c91de40d0c1bcd6a9e6a630b510ccc1b2ca0f1bf1b3ebb3934140ca50f92d522a253af48272d89b40e2111e88b0f69a848871c0ddb492c3d7ed919d5dab8f6c777 -B = 63702537a07971e399aa9a1a0795db052d6c8185c79107216babe11d6d8d472b61e604cecf9eaa6d44a2fcdd1ef0b6b52226ea0c6902d929b09e16576e6d1a6921765b2134c5d23c69ed61f36ea9a5552e5819350366240693558fac7a9d09ecd3702076c8c758a4bf6843fa843dfd688bef3f73515db31bfc26 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 6acb23ea695d4b60cce53079390da3cb3a4bc3a6486c238c421f3bf6c93c027a0475f656c3e5435f0211e90458ae81772aa956ef284093020f7b58ccd9373f3fdd39fdf4adb8dd64590f4a7fc05238ba20017bdad07f5f9a6f076b71554a7741bdd8c98ec68f8fee88396cb1f47c64d6da4c228caa3dfc7a9a1c032a9ba4fedc -A = 8e2ba940fa9f1c57ccce38642664647812a75f9e54c688d91189eedb1990fafa2cd1fb7554906bf54ac082e5d490e800b2af5c5d3025d5e17214f3dc85905f9625c9fdb98e666b19ff940f1f8c892274c026a99c3b2e86878d459a40a706f3865eaccba6f04fe78d91dc407b8481873487c42f8fbd4a97a1c6fadb821ed06e86 -B = 8e2ba940f9cdcca65b1572be300153d71cf1f72d9a38ab77d742bbb505e138e1110501f9f7459e46e10c2913bcd189d9795ef2790a669f78c892ff4e8dbda75e86c90a2153b2963338d8575a8c64859ffdadb7069eec250a126f1eff83c0f89283ee408330f5acfbc6e1e0b9f90abb37d11e5d0b07d27670848846bbed6f7851 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 0c012c4d17ea4c95a360218adfc3363f6d89f5aa524aec70049ef94c2c05e59a66ce01e25588e164bf2412f9517b7740de53d037e71ec3a1d426f05b18b128c41a878da75421e8c8ef3ebd5effd40735c00818eeb1ec63182b44e817403c9f1f6c1a0155334be63a3a15109be6d45ac0d1b1ef5cc99e9b284b00c487d91e5472 -A = 0796fba6276fb7129eef2d1572b305f63d7b8c49371cfb3b2c67b141071e66ccdb5e321fa2c1bcf624c77317e2aa135e1137dfa46a34c3ffefa2fa3e316be81f45614d422bf86fe4518c2fdb7e416bec199de033cb5fef7f193a80c0f0e6ee924a12c8f705f5ed3793ab770914924b45cf2578bdd09c701169f0a881e6 -B = 12cf934763127284e642ddc232b1c889cd86617307b6ad72a9fe0d48befd7c5c5370a0062dfbde2add256dc0af850813b22320ceeaeed347eb9319bf22320b2fcadeb51c4bb26a160f7459fc172c27a91d367d5a232d00cf7bb778fba83afb744177bf1ddf45446baa035fcd0065f9b493d92eda37e9138f4fecf3ec55 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 3de123bbd50c35805b943e76e97b7e664eb9feb99860750bf97e275029e836217375cc1910c13269ffbd0bd72bb82ca445ccc4b693742a96d19d3dc23f78e5ccbba46d9ff5975f239551c36403ad5fe86997536456c4a5ce54807c24e3b5317b1c7b2a1661aad85b63859d427f0703b460cf72b9acd3f87e2e69d7f8f15e972d -A = 1d0433d84f1de082d2058475e0168ceb369013a67aa9417f066c29c28272a0b3f8be5ac7190ab78591ae72a1dc8ce628c683281a9ad563e134387b9258b9c96d2df288fc118a8cff068ee49d635343772c2fcc252facdfc93112358414e1734d6948b909b53e46263e9a0cbffa141ef77bc98e7fae8ae2bd85bd875aa7c1 -B = 8e2b0626a5045573c013757b969a2f422cbe330fa813135c43734c1834d45c61214a6edbb164530131b81a0db29ff27f8a670a93331bde04c9fc884d805e49456b2b03f111696d5a310c588a0c9b51f2fbf4b248bf1bda761fd061a7a234eb33ca90aced1f6fa567dbcb7f5a7a3b3df1546b0bd5e15a0bb1a051884523853ad8 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 770f0c3104c0f3395fabeb75ddfa2c21a111d23438463941239f7c63e4b6e6832b84508ebf3cde1d90cff0a2801beee05cd5118f9a726a987eb58def6780be899b473ea71c697557ff63a4c6db894e9438595acdd98abfb529d75bdf3c1d619d6165a9edb6aaab8ada50b61a3a84de654706a9aedb7321b0523558e8f18116fd -A = 8dcbf983b2c404b826ce3140fa3ad7b7894f577b26d17971cc741a6b9854b853e293878136828beecc7053214fb1596000fb4314712a5e38619ee38ed88068a14baea580080050f16e32c65a5cde87f7a14ce58403385055c3b4837853a77aa23793c8fe14140ba5c424f9707080752a01e4acc1ee916c950afb505015311b4a -B = 0552155ef110c126afcb87dd20251220c7a43bd0215ecd22249a21c93583e120ba6f046c6fe03086ef3c97311c4d520110a450470a473d8633e3560d2cb44c25559af07516aff50d6d176e8782c06cd9aadd3354cc695c4ea8dbf85e01dad479c8e8438154351fd5fcc6fc7e9d2162ce2f0179247f756f0b9b34b54be74821c5 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 2e9ed66317734668c4c354d720a011fc65bb67439b2ac9203dca65a8f567682be40cbad4f55a83e836f1fc135596b624e4327acb085a61b6398237fef5a6e6560b488d4a673b5ae7d734b896d9647d71087621cc81e94d58e01fc2cc2dc775f9ab1b6031840a672fb715b77bd636e3d87b4949ec7bd60721bec8f9907b7c072f -A = 03d2b4ec637124206318b20e6ebe82bbb0b3b90e6fa82a13e95dfa1150f0c42b9d8bbe49a674b18dafa71477336a03f4084338fe670df97f25eff08b4299926c4081e112e5a95f48663108d02906730d5cd798c1055b0c3ddbb001cad8b4e56792d526b6b18d6460a8fd4c52a3f541650332afa575ab73ad0209feb67c071763 -B = 57e1c76664d6bc3df10a85c7e0ebc9e0f8a40a4a8c2954e648fd657a2caef53233e8375ed863819bfcbc08dc36e72f88af3835c70cc983dd82958aebe3cc85ffa40391e312e6302da870ae0d862f0554df2d4cd18004d983b38f2b5a1235776a35fb1ada3483b406efe006b448a7ccc51af9ac2646d6fd9781e07313b2415242 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 6455ff7c12bf3bc37120fe3f1302a9916a6ffdae6ee6a37fc23ca2f3a7ad910dc0e1027d4dc304a8eb4eccbcf3c87cf52a13dde472c07e2df2420c1d36bdd5e88c3d76e774ccd2ecaf6a0ef55b8c60231b1348a738f812a4fd9d0c158fd5a9fb19cc7cf9f000860d4cb6509271c8e43ae4193843324db02a029beb58ec2955ad -A = 5cd8b7c0da2092108c3717a3fd14da2ffceb9f40a1bf944c4016ae338fb17d932d7ba3347c3dd4be4ba1ae79620e68d20a59efe1ff1a2843544109d9a189809ea872a69d31708d2ae9955e8719257dcc293fe9ab3f57cb7329cd26ae5e87c93fa0fdb1a3436d24b547afc66caf029a88cd020344b3210077af84a044548864fa -B = 5d99d7a7c2500c33b40676365607fa94efd8edee4bf352346c7269791271acef3edbd04aa15fb909ff20381c49b8c3fc2b56bb57f5066dc4dee5482abf50e57e31ffbc09f7fa837d6c45ab1829710aa0827d8ad38186cd12d4ae931c5367ead9830dbd5a8765963ec0464d6aa6c392ba54d1c3448feda0a5af10e33a9abdcd07 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 64104f6c06e563ec66de4442d35d88117f2535edf9e012897f44daab5a1b8a8696f84db7a68d64ae24a394debb993bf6734c9df542c7e473b2e497396ce39a064789d5d7b339b65766b002a18096e7fb9f312ea5997c2a85463fbd6fc18f25769ac2a2123ccb0e72f14b0608c4c22add72bda138b83f986e78d5c9da31b15b9d -A = 832633b728946b3d84faf290c00d9472a8d190fcdab924afaad5e17f6362ba6791e9c1ccdb06d611d3bcf91deab8a59610ecf0c128393ad7d85c01de485fadcb249b7144c628976c7218f5ac4065392ea01da1d68c5ebf91a49bdfc32530b969c4350f76ed7880766ac67dd864da6b6358c1bdd67844b5bc61eb72d38212ac61 -B = 415e6e6744df0741a8806c80f13bc66fa2dbb15e4df697cb199ca122cfa1b3654bb16db15fe56a750352c41b58e25dd7870cd2f90eed089fe62babb8e39e8448010d861ae606b7d595970dd52a526183a2f8b7bfe761ffb3a32a026c5647e09e83dce75dfe5b697a1d92102f5679b8f337d95b3a69c8305a1fad61dad2737c26 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 11913c40d577f70a5346ff1cfdca492ff52b640eaf257510d311872c8df7ba9756973da5b9206c6e5254bcbbb4bcfdad5fc4594e41ee44e77f168e2d20a4b228480a9908b102dafddd039ba7f7619eed7057e8af3a72ee491a61dd049bd947e5b09a94ef94d5f336945f47104fddb8493ef22fb648ff5376b68e96c0555d74ca -A = 08c4b48ed89e8e8dd9cedaea845bc8fe09ab8391134a7300224a9b127e8dd620e0a83600f2d15c449fb64c1f07da51e12521f726caecdff70e928664ea6d2c40f8771d45448479764c12efd179a39def63b887738b2b282cdf8f2cc2845d2d4726abce29d7034ffcdf40cc632386c476cba9ef65b1d8de1711070b9af78271ce -B = 23261f6f36e21c2512fbe4e2512e4da39665f8f4060f085a2a86a580f46b4997c961e11919b6e7505d0da61128d86b99c37486c4919de5e2040c845b829b913eeb022ab0170367392a9598b51138ef0c00af91948e4bf08e64a1532278b99877f23c750b7fe6741ac2b48300d7d0234474314fadeb740e1e04a00676fa2922f7 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 42f420adf5c6b32ce53fe23af4e392517e37013b8c3a7d035a93f6ff45142b0b0bd5525cde85f9b7bd9ce219bd3514617e89ef4d9279cb9a3e89e44f1994d72febd23ffbdb0a4f19cb76448199b31c5cc6d7ec1e46fdb67be1211c0ccd93c123d56ac0d9cd2ad11f0c58c713165003495b75b60665047ef80f6a393474cb727f -A = 67026f46f89b5ffb44960e3229a4e81e2c5884028ecfb34a329c113b1125a35717740d5fdeaafac5967c4a9928e6497017b0c0b29429d3fb71301eed8b3cafccedddacfd428d4be8910d5b694ebd14c506f1631b45341f2729cbbb2b7caf02b28573be48fc6bf3c8a5835a424ab79a3bf2e62c7c2dd8d9601635bf7a28786c6b -B = 6144c9c7a2bdc1d882ca1bcfed3e1ca1e4f89e6678cc04940433d415ca74784cf57b465d1288b18e5ca5924ca769bda3aaa1dd6bfee13f46c985786d2405378f400ab65425267856e54ef4bdb2e91507cdd023517f87a94e349c625ca79e57f6bf025a770a5654039834b96814af80a47d4deae220afc9ae7be470e8986c62ca -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 2239459025b257fd0b6659f54b8874f93f07f4d6240f8ad761c9da288cf1537d8bd001eced284bddf78edd611c7f28f1393c6fb879aab6e7df8eefd347d63628b1ae086148f488b01272f67ca19db71a2b284eb17e17aaf1e3e8f23ea253595de474d5cf47c16aecfae360eab7855868b8af361491f6ad96f893f9d3eb66d07d -A = 38e10202997872f9eafd13a4382f579a6abd4394e69a7fe34f2e17dc3d855fca8cea470ef550b6c2005b141665f7d054b052f82c7a66b40680e1f0264eaa9f6735847f654b948fdd127d9f3b91fb33aaf7271723af0b51932596e6dda8ff0c5dc45b8a283d3682c6cb554ebe283512b3e086879dae357fcb8364baf75af712e7 -B = 355a943b90003754968202c6a98a983ced7f66da5a89175e95b6b5ce57d87a8ab31b33d52a1c54dbe7a52ea2ae6ddc91ffee1f498d1e210f243d5336c7f0453553971b962e94a94f1d4358106908c736d929f3c139a26098fe14522427c615a206f4c223d809a93c310387a438d439ecb0b9abf38a32d5246dbd0d6700144144 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 7650985e7c6e5461268867dfa9782cd8154bd6a4bb5857d6555e9d9746ee79b37e44638940bf8d5e974911327f0e53bbcfda0739056bae2248015c35839f35e7e359e93d3a339e7af38c0cb43eac5b41e1406e34cdd4afd458a5d126f70b5d683415b490e0ad61269ffe7ea8972eda6addd447d97e60891e5099ee920e18f233 -A = 62c18b51ed61c3850fe76d89266e5a947cca047796f29967a6eca0ec23c8b9813709df26c896c6e8defad39527ace9c5efe319d0ac98fc796ce3ef0ee12aaeb13f9bf75490f7a4630332105589ab646aa05c18537820a1806cd5e4fc8abe18fd612fc22f22e0eb1af386d011595fc27529b5c4136c15c1aa5732fa93259742d7 -B = 89f6646504ad95294658ae769e1a79f7de32ababdf36d0ab67469d0c1a69ffeb3eb251558226153bcbb436a5c1358e9b3e6eb7ee540ccff6ad186b20a2f0ef2c730ef19727f1d33f9ad17353a71d7d46faa385a3bae2c44f7ad6db3ab43ba3ae9c10e9f2f2d911466d823ebd4317328c904dc464864fdf563a8445409d53ecee -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 35d48c3e43070a10dac0e256afb83b219aacc0036f554bd998b9092ce3bf87bb5d3b00947f2c86fd4e7ab830502d15fb2d4e47ead087f5c779a9ba56e272ea86116e2c81345d379dda6b581e9c8f4df8ea56c78f04d4f7412d245e00ac645847af6ae97d5d2ab27e48cc878d8b510c2dc753f6ceb1b9e7bdd923e0e065a6c11e -A = 179be517743dcd4e06e8f7a217f2a4726c8b3461c0c1da9fc0f2c96b924c1d588d3e54b1b0c970b3851b1dceeee6089247a28f029eedc3959b4b1aefa44e2c3fe370ffb4542523e65629cbd07190dbde3c5a8ed4e45c07143d06ce880fb15d0b1439714ea48271a8cfdddefcba01eb9f1cb4fb825577363c19be4a0c6cb1c2d0 -B = 1c46d2fc55b249973d2dc30d0385423f987999980e528b1918c8d080a59f2790a59e21cc855a76ba6438071c9f6204836666aec5888cd32ceb765263b37919a6b34bc3b1da853ab8955468aecc5c09997777f34ff82453538488523a420824e3835d87b2cd631d07262f436e808ddc64579dc452afbaead9e5b068363c1d9d72 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 445039f359b55eec647296fbff4f22beac09cad32cae79c13d591e314fafc2b77839816aa4f641250938865b0a2c30a10e23da71a6dff5985ebf3df4429fe64c327557b12d987ad9e9971f7c7b1e4ad01c94e1e5322dbcbc4707a959a401624619029558fd6f5b14564469b13146f9a2555916491e4d77caa70f51716b299135 -A = 452129b508a60de52c82622985b9bfa12b5a4a91604017b675fde339a1527389dea5c126ce6d8a18a84bef68e10d9944ca9fab4f7e305ec20fe70397539c3f0b75048d4ec45445fd081341d6e7483a4993e0a20a74f10727f89f326edb3884544a87e6d4860ef23b3f9619f0fc24a6f2aebd0aef503aeda46faaedd5d847d703 -B = 39cea0a78df8bdc3413fc2cff3d15d81e33ce494fa2ae94ece6969bd9a0658fcc687b1e5c31d10ac484791152fc012a59b954eaca0ce6da84b69475753308864299350f52bd65f8e50f2076794163e01195b94daba7f6a2a8f0a60ae49e46ae2c949f62a1cb78d49a1006f0efcc51ae81b0f1566b50b5363025ffa795af9d1b3 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 6727c0d0ecb4a375d0fd1bc52146da1242099d445ed9e87b1fad4daf8369fbeeec49027d88bd98efb425c1e3f73e412fb327680068ae57d4a53992f3759af0ac1b96a92f56c2cf552e6682d1fa90c3910bbc5c0b1754862ee13c5ebd62d5b98bfe8dbbf9bf53bf9ed0b967f3c9da24d4334b9f3f75314b429b05b8e27142623c -A = 0f4eea56b810bd1a0869d3cad0bb3dc823f9ae47d81a1cfb8e872bab2c1cdc49cfcc5f6b970ef7762c1f8803e469b1cd772909f5c3f0c1f342cef54b47cd7bcaa19c0d15d98cbde8f596a0c5e27c04136b581b351dd855f1c8e04216027a454933d0f5de0f43a1a758e696856d2929eaf02c281617e05fb3f41e1da33fb54a7b -B = 785a1e5aedc264203f899ff52bf6a1ccda3b9ac6ea29ab867bf2af9605ea088f5de20e172f3b5b2a3d1de676ab203ffaf07c45f32dd82df33b080647b3d7c0fed9b66d24f4a5af1369d63718e896443749f55f9fdd2f5d9008185b086022f5cc65150f2e9d8462234c5ef57118c2b92cec80efb2a853123c157a34ec2363a188 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 6e9947beae4d934253e481d27e854a59c4047eeee4fdc7df7e174a8f045776109c148ba3721685195b8fb59263def88891c5953b5a0ae85fcdbf02abc76f4d3c0f5d9496327d063ce8b3ba875b4f119dcd8beefb3ac884c25955af61c35a69d0670c3c349564e5b84f7df4252d6d3b29d9a75f09e9ef79f0fa9f797bf75b8ccb -A = 4493bb04deffc492cf31f39878767cc29e3b7421904a730e1345a6280d600c2f90e298fa5ca14da726579413b520c26a1b98eafb05f7c9cbf0191254837cee14f1d28d8f16d099792430e4a89636006cee4b26e5bcebaed25bb7f12f3e409218775dd7b91b5f4f18f6173035cdf8c040115af4f1a539f684c33e6491e331c1c6 -B = 0f31d7128ca48d0ccfb0b44d8dcb492b26278863797bec9d705e90274a01fceeeb94f2d87ebd1be1e27766d50d3ccdb489bd7ff37209bbe8a553aefc6ee6064439d56ae12b0b3309c29216aa5620f81482d452a42175b466e123dd33b8f0e6c287fb4a05c346f261598c2d1a596ec2b6b6d6868a8803ba311f91fda60577cc47 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 3f4a8d90017dbe8e77205e65fa7a0875a1ace6f3f215c2974e47dbac779804143da3dbce92db391c2614c078997c7d1a15439ffb51a5787f5bbaf98a4dcef576a6317b9b92dd8141a8fadc05d3be7c150630668e620a4e07b4b00519f34e422610a160de112f1ab8adf09a9169ba95b60242c89196ac6e155021dd84b3054511 -A = 07aa39d8bbbecb27551eedfc95fcb4d2e16a546b9370714638a57d0a0aae7b828ee7f406c53719c1aceb08f24420fff3c48c5c3ad55ac58b8d771b26d46208f0f2ca4b9a529592e77e72a79d245c0df66b4eb98db345719104b1bb402171a76c31ec6c1fb4a89a1ddbdc0cdfdf63ec1668a6aa67d4f059ebbfffd34d81733955 -B = 3fb86ebc3d9871c0ee555c8b58171f5b902890cddfd56af10363ab6501f905ff71b956a8fe05a5aab30e754985cf89e0b57b584b19baaf13de6033b90de7e981a5c0481e5395c722574ad38710a09467c78a4af758314ace4b916b66b77254d5cf3651c604e2db74d52a7f7d6a0d6330521130a7d3d3f4abf1188ca05a94c625 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 8a7f3cde3230af1f1fc25e0c0e9ebeb69161d3864fa5a03e5d7f8c82d9940ded285df35c008f61cc151b4578e2677b2f2cff3236935de5bb1d113597eee448496fe29bb18343687f6e9f1c783863e949a0954de2993d47a03607423b458bfd18c844ab57e9e2a43930df159ce8564edb5a2a37a06425626502e3ff9363b73c79 -A = 4f61db5497413668948f9dca639fa0b8c309827d09ba1bee51c9b9cb6e2505e1080e9f37b7ced0429108d2865be341d28a8dc113d2fb0c54701ba26b447537fc4ae4e9b663e431c21114edb04bfe80ca5ac6c8ae544db2a03cb886a47cc3d02895c12e358501e4bc0b78f11dd0a9e0b5cbeb93ca26af464a4f941a04d96caa43 -B = 07012f2a22b4feed36e3c42564d8e522d636854fd67d0cee672752a49d7d662d3a402c462b44e55d4cc9f528e8ecf5192d823606ea064ecb07cbeff7f3f8981f0c98d6936f78b856e55087fdc349c41f178732c63c86441a9e50f7540a200ac5ef0bc456818ea6bce8449493f78376247a6ac5ceeb987ca6d593b042970500cb -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 76f8b44df8d8547f8b3d8537393d2805c699eb37d19bd115bd5539adb6b6a00d004def3b7793d5c71e0ccd2b7e9fb87103c1a5f56a8f18ede1bfe1607a346297166596aa78dc584c7c32832e11b72fb4f2d40ae1591f341919bc0157080ee8febb7fee5461a918d2178fa407c37a8243e24206ce2c19c3addcc2b7c3c1912b6e -A = 7d77c556f07bf2a064615d8fb92797ef10a47ee09b6a0570bab9c0a75f6c974af941c0616a3dfde8207b2e5e521b1ce0d3df0d472b2fc2525afc382ead0fbbc93b4b3e94ee5092fc803ce3044a4177023c44f1ad593610f6738471543d9038915786abf1e80b3f88245f1fbd28c7c9831a99a286f63feccbd4cea9cd35998be9 -B = 0edf46c2f7d7ca2c0104347292bb7c2593b3e2fa771407925d2390564d3002b11092b735c0df368eed29b09c0b173d1d438a0f80c53311751c0c0e8fb489dcf6ec9113ec9598027fba1d7512d00d3c6819095e654f530e58f7e290b6fc6d08e383a6d6eb72c9e1bfc7da13cc9329568357207f127db545de6283682a81aef02f -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 0f580f9d2438b22700c3ebb23d1dc296f3d33deae2d32dea51c7ed3a0ce7b06af11046bc1cc279bb744bc31e7f822c17ffcc5dcbbdabe213bf97bb85c7e19ee71a513bf59b25b3b5787e42e9f3ef6aa1acb8705d69924a107b4f88e0cf9276c2c7c47fa4bf56c4900b557aa5587418f0ddd899630ad3ff678b5b907c07247b2b -A = 559a8425772b6bae495d89502ec0b0f612ce05901a75f5b123b9b739e83ba7288bf50d9f1d60a35e0231bd55415eb627547811f9e1d116fd42fbe05b55ecc65580df3274f04216e5b8112fe355c616eedab5b884df886f8a68268665779d317e8106a91965df837fa7cd8e243d86ea8735250ff6e52e9dbca9eb4fc081367218 -B = 27d368393d97aa7053f13fd6d289c8dc75e95ed80902023fd4bc5d451dc9f6f80a1c9c9093764c7fa8712834bc57ee79146332ffec2f99b4f53ac916c4fc42cd19c6bde275bb6a1086ae30ea83782728383dcab31727182fb6e3f080309b5e2b64681c57b0b94d9b22f6f6f7de7f1c0f6a41d15506ee0a180d4ffff0a41b3d80 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 0be05efeee19cc91e30a9277a6551aaea63aa3861b63f6061efbb0b92296e09f4709529eb849d9f40406fc59c526a4697144cef9661b556040458940ffd6a87ed56cb073d2ee0e6d1f05936fddd1b9a8974a3088577847ddde6bbdfb3d69158d5b3899c13ec78fb5cb6aa7204efe308bbe0b52f18381fe838536707a8a27ba0d -A = 2c8d9eb4e2a58670184fb9c00ffa47029868b84ac0142f439a79e45f81440d56961f9a141d7c93ec675cc8f919ea78c94a811521c96275e3c37ea3b0802464243f6ef8ad4bc80592d260ed1db89d1943148eb3fc7af6b8637502a39bd1a0f96abfb0b8bdf190a4219b316df401fd89b6cd62a005168e9bbbe4ee212aaf6d6597 -B = 0b62c2b93aa90eaf11bdec69c71db10c98634b260bc38ba8b99f5196163eaab0ebe5f5d8a8b270ff0da4ff4d1455230db7b10a3c91b4112d7cbd9d7e9a11978764524769956e869d4c74085ad7db55b519cabc90d3b8ceebe16b6f79ca4cff4372eb4785075f850fa0b39d187bf78470bebab071130ee81b84a4b2d428cd09d6 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 705bf20b7d92e68a69019cfd721b27373c7ff22f911066907f556321371fba70dbcb9774d3a26ca43e44ab20c586a3c1546fc3152ce011be66e04a59c6631bc8bde18efb7bf1743b9ed75a7a6c5bf5a4117368b81b112a3cd4e1c44a621f534a11c426451ea5fde880939ee5bb28d9843730e284520a976cd9f60c94751050ec -A = 80f8ccda42d67c71e2b300cf66dd8004796910249f21b2dae58fe8a2dd397c2e097eeb590095b7441fd99c2f8be6782dd31d1278bf2dc04cdee056591084ce99750b1c00f8adb53790cedc30304243bc6f745df5063fae339b17d47ddfb5acc84371e1788e589627c30c90d03f1cb83ed6c2b318f14ae7ea362531e19ff73834 -B = 2949c6fee310778299a7239f3972d7901a434328400440bf455c59ac1befb910af7e66460467880b85566e6645b284c0ff489f81c93fc4bb09384c294fe0a5bc9dca8d471aa5e3af2d59895fe80471171c294fa3033789bb171b7e9c5d6f4d402babce5a598b516c64669cb66440b5757022b40a27a1aa5ece6c3e496287c8ec -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 7306e3172929c00c29ca1db360eb4ce82066f237e9cf6aae368d1f531620e9b61eb64f5b3e2b735a3b565587d7e955d052df94a20e4aaabe493dba2c18e85fcfb65df166cc48733632d165129b112598bf5e4c58dff662e558e5f71b25f36708d3ab6536b1cbdb5aa2ee56d9e019a9c3629185b188af909831629ffceab634fc -A = 5cbde68abeff0a10330ffd04371c3dfc3027a2388812cb2b5586927d200ef3a4571960ba68b4fd8afdaee122424dc12f411d3d199537692e4cbccfb87fda40a50fcc2928e5bae460f10752119f46041e3377ca072f28a994826e459a5081fb923011ca94dbc635e4d16c144731ab0a90be090d3425ce59fd48f2bc73e3d56b45 -B = 3d680b0583f51341126fc355c7f65186b77e9a239eee80ea88e397612d1bf8e8f50ad7175b27fb7dceb6d93ac46efb41154b2fea43118261fa7ded03e72e48a6f20610cf7adeaa308cbb987576de3d7f0bf7f8d6836d62eaa36c59fc7defdbe23cf9687038c3f2108581ed86c0071fd67d36082a7d50de10ba891830cee92171 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 361ce44d153f4d251952c0b90681a19b7d2d8df7a6c5d459691a80c06107b2e818f93f30f8dad352d2dd87b01530d51fd1c67cede9b1a6167697098e41bdc5dc5e7a3c310116aed0c7b5fd99dfcdb3517c13daaba6ad10879f600eab846cdc110d392d9bdc0e8ab34b317840a725a7a12ceb48c75e8dfeffe2947aa85b2a5158 -A = 0cd89a84f0db9a32187b94818f89a93f19ce1f85181b88b2d657fed5e4fa85403a59f05a2e8fdbf4db8147c5d4a2b8ac33558a1195b51bc7460cdc6f393c4136235a1d4bd14edf4fdc74f4224ae57334e28c45cd7fa5abfee294a4b9d3d86c2b1cf1ce6211447e15d15102fbb95d16c812f583af13b7244da2a72147e0f7b3b1 -B = 2739adb776f387626bf0e1534d5f0ca0947d633d357af4238c906cb097acd033a224f12bad014827985a976dc93ec8ce625e62ed3e035295e0f50f757f52e1f00f240c3f422d319495921c590902e9f15a57731d3810b7e319d57b18d99be2750af6b475e1b8ed2d788a2dcae1736dbbb66c97f61502b8721a38c4e0c0081151 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 3aeb3ff6e797d271fd2271499a740a91569f300d7392a7b5898084012a3c5ad379a57d5169e43089cd58fc7210314758d5368dabca2f0ec5cf6786801bc99b45cd60403c732d9f98936aed76da724bd3e7d4b622dc690778f11fb0310fd4cd980b220627f7a864e107f93a6259081c6581e5dddba4890508af8057c1af29a745 -A = 3c01ac611a38dd8753dc7f9412d7cfaafc28e0f8f3259c692570d9340e443bde62045ce708f12931c365df1a63100c51279ffaf5eb9cd5fbe4a0d5e9d361978590541c4136aa0102d83eb3fba92c6b4b7b56fbd7161628aeebbbb6317a99f4752f13ab189b944f4423706ec58dbc4f3b601905f5125fdb82e8d5ab32c01cca44 -B = 87dd023be26dfda2cf0f97f7643feb6e066afb10e143e4497ecd813a4403cef4f00dab4c4fb45d6e2f7d11e43159b2791598acacd3accf342603409ca0a8a5b6a9d7e95e08d6af4e08fc438ce60ad022ca042e49940141f83db841b6f9386fd4aae6139e921d45f11f8b0e55fad6736d77f6d0805d4b77bd7eff96121f489d0c -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 734a429c91f5b0f06fd47725ded06222c0193dd407e9daf136696f203e153c9bf6df59016849284cef93fbd35edef2cd31c9b956fbe562d2a22100f177254144718ac7d22c99783fd523b642984794bd7beb0d0b363e28d3f3469ee332ee364faaafef25c1d4a11b5e517e44a412ba717a113ea9e1e8f2d6db8fad6f10d06950 -A = 1905086d5baeb48978c09bef95673d3164a6593338c921cb80436fb6cf623a7692de245ecaf0b77621441a81478c08b833110c2e8ed60d2e386977e14815a79c78d6238f952c26cede7d30601411b23e337f12e9dcb38754072bc2780dc083ef234e3e41efd91e77e9467d901b1818d718dfaf29ee1ef758a41d74fcd96f1382 -B = 6e52f31eb94cd75b1a5985454f87b07d2449479299c9767d0b2e8e91b183027d2eaff0039b60de6be980a2556197a1e5e268f3149041690d47e93ad82ee48802ee045f455cf35b265e0268e905defc63df179a11d6d28e0451eccf24a478b2a696e17d5ee2cc194b2805d3ef25318a0401dc6662ecf43822f31916947e0a1da8 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 427609751f28edb62c717bd98ddf999cfcf65128b652be1b5aac0dfe1bc0f7687c580ec70c8290455a9448c69dcb550c0cfdd109af561ece2ec8707c1d02e8097e780f32ddd932e706f81f68711acda0e7610f4dd0fd55f6ac7ca3a3184f655b0b29d2d62974739b43ded96b413b9e3f0033ca1edace24b6bb610bf06b5d940a -A = 39f9d6a8602f69d9caa78a6680e86232afb933f8087bfee6197706aaad1b5d986e01a23ab0e68a5d48615f3e95d1cdf3bedea4a36e9404b55061b11c7595e550e871dabeeb2f77aec6db0c62d1d1f4b1541c65d5fdf54d309e1f1b419f98ad657a9bf12de0204243887de1efbb3283c3db069ad3288be1c31b6bd8261f1f7f90 -B = 3bb5fef79b7f3c7a1abc9854fa661a55418659771168f02ce505255619658517385147e32abdbd4b1570320041deb73fd3756c46bacb4ce19eef7d6620fa20947e5d7e4fb97a90d1d9ada857b55a1775fe1a51a8744ba504f562930f116623b0e01bc264a292c0215cb6e4f1709e952e9e37bd2c22243eb218fef8ad1e277dfd -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 533d6d8d7384e6e65569ba0daae0a8cffbec1d20e417a6edb42d401a59de0a91a7e6854db081ce33b76faa63f6d866993c245e69ddbe6c86d339f7107a4807856cbca23cee2bf5496388ae8fd8d7c78767d0775acd7bd6202dd75451b424034e2766185969b5663b638d539f718e50a9f752f406c224c000bf1ae1fdd60a2a82 -A = 7d8a8c8f86383c51df46aae55a1b2125db3fd05a10113b977bf8c6c217d558501a50cbdd66a7faa6d3869f760d39f5f83eca0d2b550843819c716c69b9ba5c80c171d8a5e2f6445d53d1dfc0775d28b26b78175e27571af7643d45495806a890a8ac24a7749b6c2869ccf2641d2dc51d3a2a2400b4b94870c8b34934c8f0260d -B = 151f9170ef6b8731f80be191eeef40887a11a9614a370aaec248e37dd1e281662d2f36b6fb9980feb42f7946079b6255134033be7e5a63737c0c2f035aefab18af0ae0f00f597c1ba60d2c1a77dcc33cd660934c3640b0bbd31239fbb9f3a7ec0fb3385c70582bf75bce7ce4f35c3f59429b5ac8759cbbc091d7e17aa10cc905 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 33960d7ceac73f342d46275e04fed56563decf2fa4c0e9307c90288e911ac8782f8e1354fb051a9da8e2db83d7c710b5d2b611495e72ed42259ce783a7e7a8f601c07061ec749481d39a082f29dda1f9c7f444a33ae1c1055d37a677b848af371cd3bd41c851d31a07e144d7add66df39576b8200a8b918201630b3da8e664c3 -A = 063815fc3637712e3dbccc140f837a689488bc3585f8df9b5f6dddc6379f65b9029b5e5fe228c257575001b257e4612bb3c3884ac0ec5e9b40b1ff9024022e55f49c9ee2519681d4d9969e97f78418555bdad61db7d99784227774d06769a906584bbaa02d8c4adde53c37cb2c9c63a4390f39f87e76606a5f889446586b5214 -B = 61a95ac8d7450c1e84c4f878cf578a36a75f9eacbb2fa19ffb6452bfa8b326a703f48e09cf56f95f67cce9d5df6813be4d29c9021111a3c30d8454494a3d4e89302bc1912ad9de486066059bd0374e55edbb5ef90f380d799b4ab5ed0d57bcbbda3741aad1b3bb7702891ba4deb2ef2c76f2e9603331565a96b085f2aefc05ff -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 3a1ea3fccd6f336e6d444d68af1753b83145131954c20f1e3c433a89eeb7e267425a34d91f67fd65191dce85769ece2fc7ab12d032f3e30f8509095ecc05148e47a85391b21a18257c338a6a3ca9816987abc8143fe443342b34afd8a52fff00dda2e42b1b39322bd38c6a1f711051f791d6cad2a47ebd423a9b933485fd5861 -A = 8cd0fd6e7d3c80dd431bcaea37c32a7f49af6fe2b5cb40b3b7b137971e321b7fed8c83a9e3288882509f0c862389c5d8af892b799613f621fc03470d8a0505156933f7dc3b2b813a813892067371499a316e63bd9f94681b18ef35ec046c2f430e54d239fb4ae3daf110c1654da8142e9ddc0f9f3a6c98a1d46cef2f259e8ccb -B = 73123b70cf137a3c0d3bbff4d81547dd884bbe6309234be5d7185a8a3de97172b7e302237d0b8300cfde75957ec4225b2cc3264cbd73125c172cad54bd0f99b327a98761ae4d15521323f14a3727bdcce3da113ea2f26089bb4c775eb540c4527da96531330db60fe72db6a4a43f7d4ceb21a06d2f73652c5a23bcdc89056029 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 4331f18a94c169cf0253136bc4eb7480c9fa4401c18db1194371dd53e5f7b75f07ec2e1e1c4116a5d2a8b2cded4b22925b67a88af9b8479c6e821d58cec7ed9f780a4c41e729982cb33f69b87d01c11cb9a8f7952db1920b6eb2124fd5d820555a99327117d7e8e26d18e748fea3ebc17e1d07161fda57a21a70c7f4e251612c -A = 167c0966a64416255c97f30185c67f3b1c39b4e1cec80da6fcecbd56639590ef0916121df9d8b872be7365d78db36b7d995d7a422340355c03c5b8e8c735422bc5fac038434c56ab278995fb206b8b01e95580d95de6ae87b4fa885eca58f86dddef351aacc9832b87daea0d29ea8f75c414980c354516302b64030ceb2a58c0 -B = 75a596c8c1d90226fdbdd0872ab3f6f68dd2614465790bd318141844000fb78d01c4de3edde912256298aa806bf076bae134d2bb46954aa7b11ecba23ee42adf0c49b19eccd4a37c919d5424b7ab7148a8d5a16d429d409903e399ae078b4c6854c872caa949d2118e5aac44c58dddf88da3e613b92d1a93f92ce658f9eb5aca -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 2468cdb1a26eaee34db3d2724e37f023c8a1788526b3dca99321b574685cc8303c609c85401a58fe6da181daf4111fe8c6d4b7428b1cd301cdb9bf8cb6f33140756c8b490d3b2e538ff294fd6471c4d17b9d9e4adeae0df088cb9daee18e825a368be57af4a096056b9e76b94c8d3b911b6a074ed41082926773a585007752ce -A = 1dba6d3450c6aeaf768b5f22560d53808be49609dd7909e3291a684326ab94108d019735883d7b2e2746a1349376084d362d9fcd233eae998c4c4e1298e040e7195e4eb18c0e8235482e9df34fb7ead4d97e07ed298cbb6dc1f6cd9b43ac0a3c4bb5602f72d1cf4ec969200e541da69f29055959afbf09568b5f058eb00f5b71 -B = 1256752129bc0749fbf301a7515b7da2b3b02e4867ea38ffb8d182102a0560de5afd088820faa5fabfa891ebf81646476e914faeb94ffc0f1b8857ba737b03004c49726f098adf08fdc079926ad127b04f9cfd108b85dce48985491668a8fdcff33e73c09ed7ead2b10e3ffd7e3018771f48f5dfaab6cd613eeeb00db9e2c5fd -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 2909d3aef7a21244efc9b5b16626e260907ac11f3d00647f2170ba37197e47b9767030195c2f6d5eda717a83a152141bffed2e26777417ecd8e27aed8666698c2e85a414dddd52b07b52b0da7e08b3217fa6a331f84820d21086a4424974e1e8cfed3501eb054242a9f8bf0803a94981b7b81776eca6d07cd50c050dddf81d68 -A = 1fe3344276193338b148d24a283da1232a79e3c4511c515cbc656d51765639791d33149435ddd0203b022ad6792da6db6d747fbab3b8f621e396f270a8cea2ceae20d2fe35075f26899665a530aa885120dee3ad0ceae78fc90a4ab8b24768bad013a3583cabf5f887d32eb9d7b653869e8f1d02e64d007fd2bb3a1ddf1dc0ab -B = 771b74a9409159b2390b2e2356fa4d234e010703634c41a0aaa3c0bf1f86aeaddb225f6f1c00ef02022ef365e6893060927502aacc1764c742939e52bd0713708c9f537b9377fe6fdedba1c7b6932fd5d9554d4e4728cde31311fe4a597f6855a134c805a1a61491e9413ef6aa639e0943a8d03a6f4a04ba23ca83133322d581 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 22407e4fe280ff5a10eaf46d8e1f5a1e77a07410cba4106466d703b11764c60124fa355733b47327e952a12869476306926cabbd797fc80b4a6dedfbec0b7718ee754d447825cc405a98b85f1e09ebb9294c4a4636aebfc61af4545b921cbe759d3f389beece3f29c2c7c07691a4c46a1a72ce418a239fdec80df48732627866 -A = 7a2d6098d57699d749c4586436bc7f4a2a1813c5584e315cfd268ed87e1798f5e86297e0c35e5ec7e2923613325831d10a8f38c64a48d9a21c15736ec3b32dbd9a2dd6c6e8aeba8280ce7d13d0ec83335ac6e4b7949973f711dff25d8a206db602368fdea2fa68d5b29f8bcd923462bff0bad141ebea067d64168b81586efb27 -B = 44b1244138b185fe57267e68dc127801b7772d9c98cb9edad0103a7f9278407b8a6278a72084eb0df065019678e53e55a47591ef4871272b5a55eb643a300ae080bedec742dc8fca1cce92b54113c19cb5feab2801f26f87694de2351e056260716671771f843c67bc60398ae66631e0658a892fd408b955aa9467e89255fd7e -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 385ba217033463cd9cb882fe30373c2d8e8475dee54aba1ca9713a709f40844905c2544ad792784cc8eafbb412dd68de6f98522dfca1c3de8e3bf4cbd09bee4656c4341153b17c98f9ac09411d16ec9880835cae772bdd8eee51eaba7c02ca6a1034c2c5d2d48e7ae3eb0e22f59bf69537ab6f1e49e58a71c64b8934113eb069 -A = 7d3ffacbc5b44ef4e8b876bda0aaf996ce8468a2bc9c90eea56ad07b459667b226c7f4913e8a26c76d7897e8416728255bedca9d3699342e542424b6ab31247015b87aa73caf13762ff7f4982e9d5ec47a731aeb5237bd0007ccdec785ab3d36893b3fe95222bdc80027ac067d92e1e0c2528e29856287704a767a83e9e8a10b -B = 2db682f1ed91a8f6aab4711a43374f7ddce626e2203844943923327a75560b9358caf635a6a0367a871adb52cf1d69d2ac16e029f1386eb24e69662a3211498c13134007f53b24e8cc19dc8579187a44f71c39692ddb63c97db6b495f2a477874556f598de1654addf4d2acc640925e8d6dcb0cf8aa505ea94bc6d32c68b6ffe -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 7865f718cb30026837ca006f5cd997c5b917726ac6d9bd8c3fb9eabda0854d528d6cfc10e4cd3f93f6848582690c6a83955072daefc6959d33192fcf42a111650e50776ba9ae43d3d26e0ef2c6b60c3871aec33eda8c56353903e7ae96592fbf350b88d2f56e03f7f327022a2aa9b7c484a000135b85bbaba6f8836cbfc81901 -A = 7c2990afcd18e3caa1fd69d3d34012df8f224b31834c6caa18fe955c9358aa1e5baa5d5e55fd8575e8b4842d0ebe1d085f5d0b265d85e1c410fb56250e5bbb53ea1c877a01508199960da3baeccbd789bc18cec6f5e11468429131d4ce6ba21ed1d3282acc79f1c712c9e100701649076c6619ce63687a584999be1fc36c637a -B = 2da8f89ea6ed4852352fa7134218a60afe222a13350865dcc5386fa0dbddb31104447d85e747d4e03c14249b914ee0e33810c26a0c9642412cfc87b7bca63cc5474ce3a080a9944a9ecb01687d47c2007e3304ceec2d2c3fb62288d707f12c36a2a3a4d7d4788d5e02e7e6933484fcd0a13ea34ddbbbc23c43c987b29e6a6566 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 2d3dfd14e7ec60f842d1db83e29a0f6b052990fe8900887dc44476ed3948870c57e72e91e1941c476baa6aa86f76dd8ab6e6ea41707242c46d39b54215bebdb1f28e59d719fde18bea9994610214ea68ad9f2da24e1ad8a06f8bc698f8e76379ff332a2745af472d52a4b8e57d60280e19f93d5be669e0832824321e9ad8e76b -A = 7acf033f16023d08fd1ce59bf509b356780e3a3f67d8e51d113acd842a2e631f78939c7ccfb759c2c23d1f6551df12a37152d310ea3c87944000d693b80a8348d4e2d8deb20afa2b680d60d175885793a356909e9f30c0fbb86416387b6fccd5c283ab24c2f25975d03f4f63ead50677d4f36d4abc6a587e24f4f84f5a479d40 -B = 8d9fed484222a3b0feae346149e97d6d426484a23109dedf713f796f2ac4869c48052619a0c6dd93f83a2000ad2e17ba5d07b03499f780795777b60e8a6e029b4192cd951aeb96110c2e7f9b222e222ea1b3b0f6915ce082cf89bc9eda3b093a6d6e6073558d639e36b338d39ee1071aea397af849776ddfd3b0fbae1bd22c7e -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 3f66970f600a9d09d73fd1ff813e977f539d69fe1784b8a2f99506d868418e4b47338ee0cbceed555f88824f98ffed39befb69e8907a5822ef7cd2a9950a070aec8fe4db9d68e1c0620f9eab4ab529c7e69466e325fe1c6c011bf7ab62bfd1a136597d7d5c47e8eb161ea048477bedc88fa30e4f7ddab2cfeec3fd0bb3fb61a3 -A = 5fa80de456bbca574fa714911b9ca94af1173eb72b070c02ef2d9d309bc9a2280da161737520d188f7773713b49609d0f464b7f9ee4e6f543d7b4afe587f5528e48dfc5d0f57e2f80854d19b1a79014d7810307738f8ee9c95ebd7a14f57dabd1a65306ad9490402cd5197b4b875edb11c7a8c8a2d84ff18c90374986736ae30 -B = 2b8d6d657673207af8dc9736ae4403cbe18cf5a7342db3a642cd64cfee3c7169626d964a11f0d729f50bf4f1d168ddd25925122513f212b22d469246a5d29139dca4b672c05f5f0fbba8f3ebb155b50827222509fac81a29569d3afb54637a23521297424b038c7d494cd17f034cb3f4391618f9be7b83ef9eb0b9291204cd8f -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 54e95e86e87bc220c8f53f8485402327885be34e34063a1b81e52a23fc3056758cea1c039ac4e513f70ed9d394f5806fb771dca8e342368184e674e6296b9a705c6380bdaf11550cffc73f9f55b9385c85fb648f105f11138a3e1f9dc0a39a0f9755f8328701484d45784e3e4b2ebddb32c9d9132867c6513201116428b791cf -A = 0b173f5024117f01e232da94030550f07a8238d9bf01f724556b8c9f2b9844eca40739099b26dd07d8e7f987cc990c4219fd6b85928caa5ad34ceb345768a3edce117ae13f8c24a0fb1bdc7a447f17a545801518e4672699461b90b49fd063d1e9a9282b92a145df17abfab8984a08b12cf99fc89669b84672f2541860fdce26 -B = 63ccb7ff8fb3f8b0b81d40ca99315bfd75a59b7094b349bab7964707e13d45c5adaca7384f9528e327bd7e581ee626e99afb854ca310bc712f63cd54071d22944a20d722bfa2dee0b1df774b36fcb22e383120122e34d1cf03d89e61ce08d1a2b3429926a6485450c810edfa32e93b798d1d21b2837de2dda41ce43ea92b9f6b -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 6e0160eaac8e1c31cd3cb6c5fb91ba086d033b4b69e41dfffce7569e61770f6629f23e12f0074c47c46653bbba94701ca798e1a242f7c4e25708d3acb5af6ea307b95cfa220f8879cb4cfff96b843d6eeed2b15c8f1bb21bb2b511cefbad0618d49d9ba33cade6da6ab3b846a6a24e35fb36d41201d3b85be831522b9bf509e0 -A = 0a1b0cde1403c856bf5060fb62659d4d77168dbdd0555e143f913e4e3e59a85c2f5acb33183efe10451011bf55b5349b580cc4c77b0c2e4e43c3701a47ed77861bdd1cfc72815648f9e4cebd0ff5de14569c9e2fb4f28fe5353b6c02c29e5d59cdd85ffb4d7b00cc838fe94efddbb0add5961eec10a305d8717c746640779cd0 -B = 4adb59a7382dd54a507e5c43540edf84b787096c678eebcbd518b92bd18201bbe08bee538061036df61e7b776d719bded24abb5d9da435d9c5a6d65a8adf98298ac1940e92f92ce8c998858860efeb80e094ab12cbb762d1c08ab67dc417d52cf875f111bd296a5c116fa622a8d55c46791022f3e6c232b351be54509c472450 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 8dd91f390c1f85f153f332de17e5de82979755d835398cdf3dbda1ee73c68f8e7565a964ae33fd5b1f1060572bb3af67eec79c4c3e2eb4de118d471f74351b80a5dcafc682bc3cfde642e611ac1d5bc2c49b308c30985b1161c4d78cf7621b503e2dfaceed886befc004f3a729b4a9bcbb8f13791d973bf38fb8101d6b7a4d4d -A = 842b8a197700ac4ae9ced798cae3568d338559d8d3f26f413efe95ebc71217d5d2d5a7a8bfc9cfda8f9df82aec12dd16b8ea1ec87f32445e4e69965399894c5c3eedbbf5125fc105f43987d88a9635047918cdd8fcaa66cce9b8feacbdb378894f80eebd9854cd0f8fee40977b0a460cd3d6de2913d3cd5c4b18f9b0d20fcf35 -B = 76c704cc65ddbe15e475a9d2010cb4830ebdfbe0db44e2b1c8238c1e01c3dde1f7efeb872b1d3b248c1c60d2be99f998b07d4fa31766764e020f02582c6740163d1d4f65351415cd0d5f51b4777c9c3e7c53691043e4fce0f70347940723ea5ed38a0ba978dc6c9010c0c16a64175346b619fa523927bf5b0a3a96e489f1322d -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 2b591d2c57f6a5484b43cd7ca247c48a1b38319e843257331c8807d499c7763de4eefed529e70d4c144e5e843ac00ee8d106d0d82163cfb7afe528a7daad8e7ed105942d1128a67e38d59325cffc0c3dab9185247e0082e3ccca82a900d917c9bd0f892d4b518a752f8e9d38eab2acaf3b3b59f15b0fe4cb9a3dabe6e0191493 -A = 4d424d97df47db6bdf0f0ce58e0fc09db1455b7aeed444c9e099a344a8622cba9f20efd478bd1f542ba7a33bb7da8460f0b6b0489b410865e879a490df70bb417db6f0646761dfa1898a032372e06c15cbe34d176567f2e4f921733a8190603dbd6d3dab47de0b14031d98ce53679c390231197553971d0d315b2fed8f6506bb -B = 0f6d57ed815e0238a33f7028e552e40172546b96996dca7fe407f297164b5047d57c0b927db499abd6617199b62c3b307c9300ce4a1c8f03160d41004d2ad54a94402d6fc17521f1f4ceb3eda248d58de6d1660f803c45d210ea11f56c07c6bd975e533834c80f535e2d5afefa54857b3aea1381674c94d7484c7955459e8aaf -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 2f53bdd643b5b22445e2af3667a93de52f8bc7bc151e196c0ab0bf3b4e4dc0e5dae9e507508711a9e3de52e2aeece6aff7fc8a1db65588de3272839390a35a847e29204d3b9b70e10352c88a10c86cd33e067fb530d20a3a5ffe67938c5a7a9218f1164f36a73324adef64da64d5fa5540d29a76a87ce010fb7d73a59b109280 -A = 20d5bd41685173e10f25a46f4f276cb6b99e5cc361b4ea50e119c872ea538585d3255a005b4263fd86c5e51e75d83a7b923fbfc631d2b1759517e7983e6fec7035620839de347e43a814da4895c515c23b3dcb8829ee4920a6ffd2d7f8b3cc08b1390867c9de0d03f1adb06bb22b18c956026377f79322f78b28edac65823bf9 -B = c24e1143b337bb49c2a51d4546d45b24a754d2df0ef7b1c424a2224377c0bc560742ae8c9101ddf0ade3a0f5bc74f6c2354f9918baf48ec5c5395cf7368a0c933730742687e82f71da221f72dd7a8136d4bf38a608d266fe663aebac855ea7ec7f61c5546cef55d629b5a60744ef06feb1e8d29643c3f7792bec897915d88e -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 32d16f7ae2632b5cec2e90c34d191599acd9a1b5f97845595988c1d0d4ceb9acfafbc4aeee9924ce55e109ec88c57610fddc664316e0f9a5e3ed56ea447111c0383ecdf117ab42351b80e72720a4b1d98d4c73f5235507c5b4f7849d5e9b527d054858c0436ac3d2de2704c4bc25de4cc702f5880d5ae34094766938bee555c8 -A = 7a7a8caa1ca12e3eab5b6c974852f45f53b697db1ecdd17b04c5de36a4b4c90984e68a3c331c363a2b0c7d8e2c5886a49fc8f433c0e641801da54c4f40cc6f2cebe9bdd531524c8d3a19d232b40793e7b568c30b07488f939a8a2893b8bfdfa63f26cde242466b82d8d5567387c836b2c402255adbbacc23914ba234078d3531 -B = 8193b601cddaedefee05758ef0a550142eaa2b1fda6ad1e20a5a0e0d546315e8562781faddfe3c8271187a0d363673f817b3b3eff03a78064bd1c038297cb0cd749531c5acbafb87fa7a251e45291473d2709392a0dd29cc881a7d352bd93fe8272898ff57789aff3152f101afb73cc93047471cf52cd4f66f30d0d3015ecb47 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 20877c7f53fca97f8e484ba31f23dcf51ac0f4fe4c5121eec576e043c6ec5492725f1b9f9ecfa64195f71909500a69fab2e591377cc2120bd5f60d3fb3812f9e80b2f6c787e0081c1439dbea76b819ab44bf6bffe87dffd771a870e4f5502609249c5260f91175fb217a9eece4166540be877d564049389306e0d6b313706297 -A = 2ecd5ffd075fc75b53d8e43a57b0d3a4846ecad5ec51cd3648aa734ce2ac560ac098efeb6d29ead3d58d8d90ad3051a800dde6637b2cebee2aa2d35b659c1f8952546baf3519a860b6cddfa17a0cdab71f80239b749fbc904a1422f0253453f63edf45ef4416b7f90dc07054afca84b3766716fe32f4747fecb1a290fcd4b5ac -B = 565ce4bdc7eca8d5bd99cd99ff6fb8ee8d47f717a0d2a58c30bed1b4faa46a4071a7aab50095af5fddf9fdbdbf2bdcdcfdc01b5300c07c078800d9ad2dcffaff29b762eafd00851fa6f7b4bac7dcac547f4d7a11ee5a4bf3de51f2cfc55cd592cca37c67d43f2f12a691b8aaff2ccb90fa34d17cacecdf27f132bca026ce6d83 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 24823628d4fe9540103ce5f611f8a6ccf18788120280179a40c2636f30a13e5076503e8a4b6b6ffca21da5b0f9f0d85feb2ce10b51292ed069f35289ebf5130972d720d20dfb8e6ee80c3ac598570d38e57ba33dbd75f1b03eab7847d865c3e8e471ccaf302461a6136dd13b8d31c9f163799a3c24c7284b8826608a9543816d -A = 2e930c17984ed30e28ffab9684c369fa37ca2f39f6d03e2f7f7714c9a7d8afd41c64277fc5777f5be047e78b06c294e6f13cc25651be8f02b49cff58091de0b6137b7c5fcb9045be33a250895db9bbf1436f8fdfbe5721f281f0d1bc689c07fbd6199ae567c35587b51561d9ee3e0fb650d85c825f63ec11c1ef043588abfd0a -B = 4e5a846cbd6e04d987c003d84d4c62db6c3130fc019b76d8798d1d0f0f01b104e91e86a4c71ff86f059a49b5c4fdebddb77bc3f79a584e94939414481def37ec40f04f5ddc425044f4b13b5eba12f670da79663d89877e35e3f501e496a412ba99316bbfbfab65339acaaa85c01563792abeddb8a3262bb6589cdef770a775ce -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 02c4bc23d0b4b1f79141be9149ee20cc9f1b58ee0a76d5f4205e0862492c18daa20171285d6ff0b600c358be487e78cb5450d151efcff8d53004eece94c5a37f49a15fb2b5f62a79568382cf0a4232407b139e1ec5a9595bee8435b4f138dd72fdc2946b03817e49864812b7b61f179bdd8389791178a95bb6311df0a5c60db2 -A = 34a806fb93c97f5a660926cdb21d66f8fb65f3585980c9157929226a48a9cf933f4dbfc8d5642f3a1cdb71f3e0f3d34a886093d1550e7a834797cf0a2765ec71bc40c0f6d1180e09c21d91be88057232fa9d0d321d6029eb65e8220963dc497edcd2688ec3350cb8d205000aa0ef0c7f03e5b9e310693f0f1e0c114ef3ceebc2 -B = 5dbdd8f9e6a63c183f3307d1678402953e333b19b5de0f637c4a5cec2e087b00eb389b2be8807332843f62696f9cdd1393777bcfa98edbad0a6cb677044e0e3733c15742d7561ea119f0f7a387341cfe1b7e4cf54616f27a487a34fb761f741c588c60f9d3a4e28ecb7b1cdbc0292bbfbf00baa44bc7c06da9a00ae0318400c3 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 36e1e0b44e5afc35d1e19e88e75f030569eb99d326721ced9bd7416ea7367a98305354eeafd204f1f8a652a8442eb0823d2e6644e6320933ac481a3709777381dce8a7c165b23aebf31b2ea2745ce5b352acdf0707234c824da9e1af98bbedf80e940fba00c229539f310838bd625f1fc103f267265ac1243855622c5df72c17 -A = 737962a54816deb28edbe9f7b92ced834b5ae03e65b7af3c70e218f9343f8a0a6a67bfbb163d8af18d40012111a5eaf873f48bacb730bdfa12991939ae0171a0758e101393fc65d3f58c636f900f6d68b7d3f45d05e21fe7271f477bc0551995018da1010dc74d548cdc576eda728492386086ccb225e80561b3217354d696ce -B = 2f01dfad0b016691167e2db9392554cbb502d8e6018c8d95e5c9d830368ed80358387529df98b420423c08122852ef7969a5ca11c73b24910685c683fa3f0a08efdd4da6a06ef89336d32c0704851d361bbabd0163bff2b8680b5e86157a2ffa94c559291852520c1c94e65a59e2e3c26ac9c4deddf9029780d702e96e9129da -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 77eb3cb5277ced02b72368e41f04a35796c2c6cc1273f109336fdfa745aba7c755b6ff3833e9b124d9c78584f6bfda1c94273522f020371107870c288592b7c23964320729d2308bac8813586e72078119852e1d7706d8e15c195486b8d94358736869b15d59c037ba4dc8032ceaa31eac3a9e3dc51ee17706a6956cff8537b8 -A = 7c780aaaeaa1c54e74efb2e896b3ea0fb8be1dc263c73d0934024b28c932d5abf960a3a2bcf5d6befb8ad1f7a8c0a463b08638cf04dc2a65d8c69772299f7210445aad11a31dac561dfdad8fbd608567c9e872e07074ad13a47e2d153332b12074f4165a013134a79c6ba6020999c3c5efb7d01354db50bae7a4e4270d17a133 -B = 302f31190e24f25cf3bd902c25fb1ce7463da9239df24e9da7c362d977bc5932aa39455417328185394301d5510a404707bc70304fe357c090eec66202b42dd871e1d37b3b75d563dc54395af212dacfbbac501bcaf5b0f3dc83ba88b362950400f977790346a9f7f27277272731693960eefefcc82f507077b5b63d48016d94 -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 660a1f378a23fc3b47f693a347d90640fef43add9729d74546933f4b78a26968cc9a70ad6fe8d85bf28164881bf7a99e8b96683c6f4fb54162c144f99a27e3feb736f0d382d7e5b934cfa835c723191e5692b7672cf6918c4a7a93b24af00b1beaf1b80320b14cf2d1539e3376779872542406a5df961f765e59f3480e1cd40b -A = 518a4f172c7dede92821376b9da08aef36716b3d4744b1583ef82a18bb2429b22620b27b7470a3a038c588019f6c4ebc6010f2c18441a0f2f50f4172b7c4b8ab3f178e6e4a60e38b5c928817f62a4561fbe517c705622f4c48e4ba788ceb1077d1e0c9c13c90ad34c113056fff45f8b1fbaf3c3bd7c1e3c543848e75f8116a73 -B = 41de4428d0ee5534e1c77590dbddc8b86460561d2d9834a50a32cda9d5d210fa0ec5dd0cf0c4c3013b7eca2ffd48196c24a5fe08dbfe2694ee391bb950745ee67b32194688ff41af5886b616f8f109050bec544737d5ed8c00149b90cb8dda4f708d8e3f67141dc9ae34cddec5531e1090441114ba5b8e6af3338071c03e856a -M = 8e2ba940fc5165c6c5f7f4cb56a6fde2fab687651099c880d38f6eff2889f6a3b2a3a186d1fee05ed452d11ac712cfd30340d22da763af7b2ff65a3f6e202e8b4f42cf5652c625fd9913b4a032ea9448591b9a839b8c25d2323cc2d0d3bf7a6d15896aa85237b6ac4c9c9a854a23449e30e6a2b7c4a2aee199bc20d30af280fb - -ModMul = 872164b92b9426b237858c4cdafe1694f96b0e0e4c19e894a0 -A = 0c3255cb24a813e27c3dc410f0 -B = 0b144f39e7c2d33605ba7bee16 -M = f3639f4dfb782f3107eb402fabb5fc878903acb5e02e129077 - -ModMul = a8b3fc0b53df3b92753edecd6fbcc5f4840dad3a44da704e34 -A = 0b36249e259b303e453757721c -B = 0f0c1db50670d92abd93bdc84b -M = b05cf978bf2dc7e093d7d164e46d547219c480382df32b33d9 - -ModMul = 76ff291a02715fc87ebfb3e99153c04e53358dbd7beae43478 -A = 0997c4a7b537d9500d73a205a4 -B = 0c679ce666af284a459ae5a26e -M = d0d0fd4922953941acad8beb65c00603b19eb44fb8ca51e3c9 - -ModMul = 8f4b8a585415adff3a7bc35fa88891ba31e4a82672c664fb14 -A = 09a2b56a54bd0727ab4be57ff2 -B = 0edf1781b4296567990773005a -M = c5a7c3b97ba00d6f174a019c6d37eda52036c528f351bef0f1 - -ModMul = 7f8447dd983b113f04c6288f9539e53a2e9cddbca8b2fefcc0 -A = 0f67636b03821c8f13f21217a5 -B = 08473a29f4ae33f36a0d2c6dc0 -M = b829af37b557c3ddbb5257c8b19144b90708a45a274d6655f5 - -ModMul = 9fef1c18778a8691c5e71c0b5208e82778e9bfb632da0b7e28 -A = 0bd162c90bed25e84dd5b6b77c -B = 0d887ee03020c5df356f091db6 -M = a2c2d45fe9decd93a0ca3edab8fee46d27ba23fad9b5294d5f - -ModMul = 69b2dfb3f1d8dbb13e9e479f38edcc427d5968acb7751a226a -A = 08019266c548982a520ab48eff -B = 0d33c3e3b13576dcdb3ffaa796 -M = e6255103732475604df7c6f7ef7e6b49a8ef9e2b0c717925a1 - -ModMul = 88b4d86b2c1e1bd780e8d2499c2221e05fab4f9b7047c2a044 -A = 0a38eceb9c551f0e69a544072c -B = 0d5f8e7c2d534b2b8985bfd213 -M = ff81809b84fb8eed3508ad891d3d8208249d8a902a12d6acf7 - -ModMul = bc5f0076a8c2f6cc8f4e61540d2d6f6d6b13b775b363dcd71c -A = 0c170eaddca5295d6ec6272dc2 -B = 0f94a5685ced7661df2efbd34e -M = fa6bc46aa05033af72aa42793e9174af2e3ba38992f33572fd - -ModMul = 697238dbe3d395e81f20c9fcc8db30c234a1f75f3b2bc27438 -A = 0930b04224bc097ac1d8bae8be -B = 0b79496a80e45212c4663e5b64 -M = 8ff7e19d967d317c255380411898d73e3786269f09079f19f1 - -ModMul = 8ce1e17972f1a9d2e9437d0c5219354728a5f31337808d7650 -A = 090e5d18b017118177ffb080da -B = 0f8e7e09032574f6c66e623ec8 -M = da795e6ef63ff7dc4baef5c327022ccf65d44e3c4e24823f11 - -ModMul = 61d0ee0786963906a028a1df01f836841ab6d39d88ca2717c0 -A = 08e57680f213d088ff1a1e7db3 -B = 0afebecc9943b0093f87022940 -M = b6201f68a45265d7e9183c3255feb4c110c05dadbcb13881bb - -ModMul = 861e7ef401866f815b983ba18a612913ecc20a67016d79cfac -A = 0fc41a9ce06e882942f751be7a -B = 0881c05a51d1ba8134d126a48e -M = b12200b39526c33b70e8aa23ebc400dea0d4d8fe42be103d5f - -ModMul = 814030123025d287aaa8b826792999d72f2d589e0c7f7f3dbf -A = 0c3b33f391e78bee97ceddf313 -B = 0a9136f3af450fdeb245eff425 -M = b6aa9c517eaecb70781e597b907583bbb569e970d229235a35 - -ModMul = 8b16b82f064f471983c7154abc9f9ba355111bacb90400372a -A = 0acff8da571e1c96810bf95707 -B = 0cdd23e5504cc26d0c34a62b06 -M = f38902a99190ae0b5ef26849a6e943d651925666fea271fee7 - -ModMul = a31401dfa761bbe82b66b5f094151865b18a4ba75bb9b3dedf -A = 0e6f48c027284856aaf3b96425 -B = 0b4c326f72a6a22fd4b93ba5b3 -M = e57d9608ac6e5b129b2c014958bfc59137f63838b1ba88a4ab - -ModMul = 4a8573dd8dc50a4fa39f3579d3869745eb8c1153ca508deefd -A = 0855f941d085305725da617f5d -B = 08f09b7d2c36e0340523da5421 -M = fd8caa05edeaa81beefa01957eed97a981ab34bdeb6d8c704b - -ModMul = 81df390c9e51b30bd639db15adb464c7cb1d011cb5e260be58 -A = 0c237eb242c40960861c938c08 -B = 0ab2f481f0d768eebd90d2574b -M = 8697d7a28a5f42c9a7b31949b8b568f861142f44fe66c6cd3f - -ModMul = 0761438baf5b02dc095b7040e082da7b167c2b9ace956284ed -A = 0fd91701ed2151f8e994bf4ee1 -B = 088b66e735b76972bccd9db182 -M = 8008b2d1274456aa68dc627b1ec3e1762c6ed2d660c64a1a55 - -ModMul = 6e99aa5b8107399848cf24fbd88ed6350efb68d737e505b466 -A = 0ca6c51ba2f410d09bf71d60fe -B = 08bdfa8fe5ef3b2ad02bc63c4d -M = 84daecf412b8c50ad6dfdb546c3eb783dcc6f32003eda914bb - -ModMul = 0536175913582e73c1002083cb0cfce5471d4193a5b717881e60abfe927c829d -A = 0161d774df9a787bb5861d45ff4933ced42254532e799233793c81fad319c566 -B = 047c09252d9efed9086fb2fb1fed44d7157a48e642a056824790d6e81b4c1f2e -M = 05efaeebe212752b28b5441a5d0b2600190504467c6359e9ab26320ee72cffcb - -ModMul = 06161cceee2b74e7965a926fdf5344ddf8cc41994d72154a8b6014c18cf71634 -A = 05f37c973d1aadc7e8a15a6cc3d2c7b20d2c1e30fbeb7554dfb4cb93334edbb2 -B = 06d98b39fc484fadc8eecd32c5d1652c3dca69343f07337e9d25618b3fe1b36b -M = 07c3e3b8b1a6110da82674aaf88c288cef4cfddf22e7c9b75640fd67fa5fad59 - -ModMul = 2acd55bdcccd55882eff0bb262bb62f78bff8e932aefc9d32f54d5d4e9b8bd76 -A = 17ef930743334d382bf1f66d37add6e8ee819545997ea6a5c58e833acf159045 -B = 28af21f28b148683ad053aa552db604236f03d61d398f29995b9e091460b7888 -M = 43760c71742e9cf22cae6fc262c008b7f1b97a78c8063957b74aa4cd370c1eeb - -ModMul = 504c11e38284a30e3647c1ddfaed94503d833bcecdff05e749422ad1d9442540 -A = 9231bd46ae8543102fb06042e019c9411c5a3b67f540d730f359e9e77f1f4645 -B = 1c46a398183f9a162b211d4487ede53d4ddfe0a35661fa87c9b5884cd67f5df8 -M = d79fab3eb31189268b2a0689cafdaa0826f07d432591e8aa8bd3c7cdce1470a7 - -ModMul = 13a6431c57ddf0ed3979412ba8454a0dd9a2694a0dd76453aae63366c46e41db -A = 0aa2149ea0f02dfd92841cc2c44164bfa6d4c06f2bc8df7b2e027a2b82a60336 -B = 16b9ed5257ac10c4727e467b3bd012f6ab3cb59b666e6f287bbe49e3c4a0f92a -M = 182572149b860615dd853f37f7d51a35e85f5e4a4249a60fde58dc68e0dd7401 - -ModMul = 0145a44566bd75103083b7556a822ea6008ed3a6a1bf135b68fcf87a294c09b4 -A = 10bf9cf97ae92b444afb3f94b355175560f9edc033f9635f29d97ae10e434427 -B = 29509e418f2dd8a84ebb52ef1112df765987f1036149f6baf7be82c96a11bfe9 -M = 29b060ee2aef7e43e02163d279ce49259127198adf462d13aa195c7dccf573a1 - -ModMul = b00740cef7791692d45f5a7110f3eeb260638f19f87c9245436fc0422de90658 -A = 8f82b047f3e2a9bce8699d4ca12ce4662b04239cb817bb36ca4ab5ed460bac59 -B = 3caa56f9c57ec4862263e6cc2b422b3d8e98517771f8f7b95c87b44a7a202818 -M = f975a94fa62b4c0e68df5c3ac5917d18927c0a6d9cf39c26f6ed97a81cedf227 - -ModMul = 0dc04b6ba2eb1e34ea8942a50d1d0c5479dd22109895796ffdc9cd32b53d4764 -A = 1abd1fbaac8fc366dc669f2abf2b5cf4c710823f6c57d0fce95f34079c9fa291 -B = 1fb2f5fc58e3802dd9cf0a72a99d0f9641acc9f1815f0face7cae83ef1a81792 -M = 22e2856f4c2b6c01448d4aef74aaaee3a14e9660b5b277200f2e67464ecadfab - -ModMul = 19299c9e960ce15087e9fbd66f95cafe82546431b92d70db1de87c3425c1bef2 -A = 6e30e65129c92bf2b24a6ce45592045db370f9411153de793e2af9cc0fcc0f78 -B = 9fcd13fb2e81666f168bb764bca62894aeb6a1630bb07940708e6b1f374e8b57 -M = ab6b4e3d3909512f5d1d62a30c1ab8dd5e584cadbce9dffd12fe203f8936ee93 - -ModMul = 4f88ad4e30e6e8e38cba0452d98d4a3547c680f16308692e33e5577772658764 -A = 04a4f1814509cb369bc9f20d641848fa4358217818381d0f8aa4debd43d0ec4e -B = 9b6ec67a72b0868053f926be4177def0e8bef7915ab48d239e6ca9aea4207147 -M = 9ba20dd78923d8ef82897ac46a509cf22c9b7986a4facf42e5416bfe3576a735 - -ModMul = 0985a4d2a7431e09fcad03e6a3f926582dbc0aedc588f17aa5db40c2d3566233 -A = bc1795a68aa5236a8c1d93aa4720717d4d77e19bffa34d5126a0c3d97f5ccd68 -B = 60aac3751c58eef00fa2ee3fe096bd7060d05974175bfeb6a3f444010d789514 -M = c66842e0a11ed6ad1e8f192ea97f5f244536cfc5234c7fdae1ff905123c72793 - -ModMul = 0133d7b31537b627da2c042217cd28625437c28c3e06258427d9a4384046a1f4 -A = 037f8b1280f927ea374c105b87489355be4f9bd26cda85c1d76af4c6fe38eb14 -B = 03ce98c25f69f6301590b3d163b462239f42e0202af1f692663b40d59bfd0982 -M = 03eae4f0d6c7e1fb9de1a4c160404a8767783c7f839fe27a543f5c389c679d47 - -ModMul = 7f4576a315bad5c7fbb1616e8b26c5b34ca6f701b9b1adf0485fec181c41dee9 -A = 281bebabe6be0c8dbc84f47725180a673c6bc3c8f49159665f5749d6ac1efcd8 -B = 48affb05091c691dc0c6ae2f0fe497be1824d2a33a87bed6b29cef431555f5c1 -M = 9975d8e7f2a4d9d1ff8d442b93ff269a83fee43a18bbfa8c2ccd7ca5fac3a8d3 - -ModMul = 57ebfb39605d4fa6ef5fd03bd8e4fd685664297c29b7ad75a40b133e15fc5ae9 -A = 6080c661828ae2be3bc23874b6f6b23a125ba03db461382bbb79a8619e8c0845 -B = 39e1fcfd15db0040413690d12683bbd68ed496c5d51769fd3a6ad78016de0677 -M = 7704390c4b1da86d51ff817003e5451d601a5352296e339e5da219ec5a330479 - -ModMul = 040b6b0d44cf8a5ca7f4fd03dd6e1e2a11f74f3911dcd8727e57db8d65cd490d -A = 3a9479beb52316aa872fa1d97646419987d7ebc3b1f5009a58afb4d0126cbd04 -B = 3538929797e8f26ff071e734a3f61aa99d36150b8feac5eb605fbd6c03fd9823 -M = 5c0781a87b84ecb4362b09c623d511de53c085671dd4f08e9a551685b55ddfd1 - -ModMul = 6b778ae9822221e6a8376379e0032d7edb14d7b5e32a7310897b54d1d5626113 -A = 21dea2aee0302de380cd990954b4a18e1d52b5f30a0cb70f06c40290c9d3c6c9 -B = 6e1afa44d3135a7dcb416031297c91b1d4193490573b4050f9c77613579f73d7 -M = 7f5978c0c066132a9bdcb00727bb802b72777b9e8e4265f76b80cfdc3a788817 - -ModMul = 5c717e5dd25abe60f761d6f9326ed056416add4c1384682d87b7ff12e112f855 -A = 51f5a2f115ff6fbb007c54a677dc2049f9bd99e1fa1b88989962106cc3d2f53d -B = 7e120151b055335cecbe78f2d5f129e034fc6b30ee463feb50cf95d016b1db99 -M = a6c789884c66c7f028099e0367b3ed86871277bf070c541ee12fc02fcb6181d7 - -ModMul = 04452688244f542125168853f1d444f96ab0f82903bb12a97e59f0db633edfd6 -A = 136aaaec4b34d7878effa8057d78012c897d1757a5ff2fa251cf673b793afa81 -B = 19447559b08dced853b2359d15e098d70a3d04328a0177f471617d5231925088 -M = 2c245d407a78903ef2b279ddbe32106e6333b6f44cabf87b8641b047c79ea06b - -ModMul = 375f8474ee47df6b9a038512002e56cddd374d69c69719d8d369232c64a839e2 -A = 0aa566b24fd87925fe8f9690f62586e4afb979c65419d7b11dac582fa0ba050c -B = 2e0b85b7f590a1a8e8d0e3575ffd5fe12196b7fd066d430944181720e5134096 -M = 4f506313a4f49873a405f2e5a6e9cfae9cd5e9f67b5ef900153366570e28a955 - -ModMul = 036fb0733a26902f0f8f11625305a3c94fcdfffe294eb6ccba110aa628a314df -A = 09a8939689b47fb66ac3ad543034302046a47c8ac325ee4d18155e2cafcb8de8 -B = 09b568319788264cfc18d36fd50c1375a43f2e524fa44fbc65fe12c96e2d7990 -M = 09d7c334aa33634f9f313b71b42476a3b627a6c5bb8ac1d07a8d732d5c087bd9 - -ModMul = 4a377267508eb045e00cea66a417112dac07545304bbeac6315625275b7cbfad -A = a29e606ad0e4926a3458b5853ce04196edf42dcd88f49936a90655019b633ed4 -B = b119f89e0b3ef234456b0421778e42f086498a2ec67bb32ab43bc8e0012f3141 -M = ea0477e7f1a02cb6c21171066f3dab69d4e24429043b0f049de660fc80e51937 - -ModMul = 7952dfdb91252658430e365adeefd9093740de92cfc9dd3d92294f2dab6ca0b6 -A = 9e1693d9e37c1135acef80e49ae1a74e9b244a36179a2984f5c4fce69b1dde2b -B = 5adb9fc6429f638912159f876356ff09157e7bff1073ef8318a1397cc81f89c1 -M = aa46853682af960824140c35d145a6dcff6283b2c59994b30ecf9b8def41a025 - -ModMul = 1aacec7f7e66b0cf4eb2dfda9d8d3fbf4eb8e928cbbc967d13e3e38612f0346d -A = 514599c8c352c6fc850809c6dddebcdd61c6a66edde608e5b88661120c54a44b -B = 059dbf4bea3fb19fbe0ded8c4b0c97fe7b2009fad54775c46d4ceb5f674e11a2 -M = ac4f0a2b22df691331ded955a5d0e7d1910d7920a59d4a87636b2635397b7335 - -ModMul = 2c25d180156fa7d2fc20c9bd6d9ff0b111c9ad76ada0784e2f8fa0bd06413f66 -A = 15dbf10ef83b811d7ef146856243b071f11b25ccca14e62e4b7b4894d91a44ec -B = 556803f5718085a69926a0b4216f6d17b78e1da6db3ff343b34a338a5ffebf0b -M = 65c9d79a09a820adbc9beb152bef387c1439147ed50cef872d36a69f1c7d5fe1 - -ModMul = 56ec8624fc199e7b4e68358f88f1a99f1d4d02577b8c6f7e28e4ccfdd981f995 -A = 57ffc478a3080928ed66505778554e38b40c0f47904fde89191c9c6a3453e82e -B = 4b11a10e8160e6e4dbc4ccf3075daa86943f90322dcbc0ad63f6a9afc9d94772 -M = 73882376ca850c125ce9f20c291e550ee48f0eb0d571109ab08c22d6719496e9 - -ModMul = acceebe131aa34ff21b3235f045bccc8a8f762dca20c1dd1ef6eb461ea971c6c -A = 74ecd7b4f7e0425b4934e0f15949af3ee0f1205227874fb536df33ba6b16a955 -B = 958ad144e29c894d6346d514d1e52eb0c561473615c61377f0f2c8f7cdd7cf9a -M = c52ae49e1a4b21ec392b76844ad559653b7b9f67a58b3bba6c2ce250017eab09 - -ModMul = 62b5b04dc84bb4ee04934c03ef361bc6e59b42144dc117b9f7771525c67c3688 -A = 0c518f9c8afea0eefaf1c57283e5034b2b32fd5f64dc69f4baaf3c38bd337de0 -B = 2e8cd7003baae3fc40353d2e9abacaaf4482a85014363393850e0593fd538ea1 -M = f73398c32191b436d14a0b76c6069b1d61395568753c832dd0c707780a232dc9 - -ModMul = 5613c8fb0721bd3f605089def48fb2c38a4862bb387886c1edc1bc37d10f0e15 -A = 1c685e64660dec256a9e80822e029bfd90c556453a0b80311d6c1895adc6916b -B = 34674001cd0977d54e600640c4d07510bcc0b69f6bf7c991e8a49351880348f6 -M = df8344fa848d1066afe4f8d985cff65441751677dcf3a4e99b40365fc3c978e9 - -ModMul = 30325f7ccbc2c69e11d739ad7132a947c53377aa902ec70b152f3a75e050c244 -A = 94d84fbeb43247cceed9743c5bb60afa789c674ef02423b0c21da2c4a059cb -B = 176be45cf53003f3885361d9f4a1146acbf11926e7640dc79abc0f1c84918a7e -M = 43d57108eb0ab9bebaa8ce137628ea825951c6accb9acb7f1e991c93b8563897 - -ModMul = 1975db7b72434ad32c9aee412645f6670b7f4af1f8a424a5031c559d3e18dce6 -A = 1d135f8832d2730000bb6489e74bf27990b464f2a0df66daee2b80445b3aeab0 -B = 27792d4be70d7f7f3e6900ef689a474edd84a2eacea94ce6384289ced66ddf12 -M = 39d57af763eabe569dac1a103e169e6e3b4375168e41e5c3b961b6e743915923 - -ModMul = 3bbb5bde9e3e240694326571360090e1fc0a4ea7b2311c1e0bd3961f6c159385 -A = e769a7536b8df131ace032cd184a2e40812d83276635a5592e97a201d8770e59 -B = 87adc45fe2433e78d6ac5d6f1678186a1daf336bed3c03ed6c993349e40f7d8e -M = f3b9833a303eb540cf8b6cbc3cf16394b1634ef517be57684e42d364d8bec3e5 - -ModMul = 2d8174211f0367233b3a8df7c5bf0066d6aa792be7cdc5e850a477454d5c829f -A = 2e8b2ffb36d54495286df23d1a5c8d230c23da069106830c829c7e3170ddcddb -B = 71105099df4e2dbe198631aef3475c60ac10828c7beec4cd8d027324ec531fe9 -M = 7eacffe21f88413af94155a2a8e37f70a431a59653738afda04a1bec72d0d9ed - -# Regression tests for CVE-2016-7055. - -ModMul = ccd6f75b5f24b7c5ce2ce755fa89c2450c6a7d96ce8c8791e659eab84577a7695e3b2caa7c980fb23f60634233e9798499c28b0338c1f1a326d0ca89fd41f2fd88b759f317889832966b551a950043ec7a4b6152d3e2cbfb40e88458e70ab783b96f12d271f828d5b39e198ccaf8665411d85026282dbead5d24cd01b6c8a8e9 -A = 7878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878 -B = 095d72c08c097ba488c5e439c655a192eafb6380073d8c2664668eddb4060744e16e57fb4edb9ae10a0cefcdc28a894f689a128379db279d48a2e20849d685939b7803bcf46cebf5c533fb0dd35b080593de5472e3fe5db951b8bff9b4cb8f039cc638a5ee8cdd703719f8000e6a9f63beed5f2fcd52ff293ea05a251bb4ab81 -M = d78af684e71db0c39cff4e64fb9db567132cb9c50cc98009feb820b26f2ded9b91b9b5e2b83ae0ae4eb4e0523ca726bfbe969b89fd754f674ce99118c3f2d1c5d81fdc7c54e02b60262b241d53c040e99e45826eca37a804668e690e1afc1ca42c9a15d84d4954425f0b7642fc0bd9d7b24e2618d2dcc9b729d944badacfddaf - -ModMul = ccd6f75b5f24b7c5ce2ce755fa89c2450c6a7d96ce8c8791e659eab84577a7695e3b2caa7c980fb23f60634233e9798499c28b0338c1f1a326d0ca89fd41f2fd88b759f317889832966b551a950043ec7a4b6152d3e2cbfb40e88458e70ab783b96f12d271f828d5b39e198ccaf8665411d85026282dbead5d24cd01b6c8a8e9 -A = 095d72c08c097ba488c5e439c655a192eafb6380073d8c2664668eddb4060744e16e57fb4edb9ae10a0cefcdc28a894f689a128379db279d48a2e20849d685939b7803bcf46cebf5c533fb0dd35b080593de5472e3fe5db951b8bff9b4cb8f039cc638a5ee8cdd703719f8000e6a9f63beed5f2fcd52ff293ea05a251bb4ab81 -B = 7878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878 -M = d78af684e71db0c39cff4e64fb9db567132cb9c50cc98009feb820b26f2ded9b91b9b5e2b83ae0ae4eb4e0523ca726bfbe969b89fd754f674ce99118c3f2d1c5d81fdc7c54e02b60262b241d53c040e99e45826eca37a804668e690e1afc1ca42c9a15d84d4954425f0b7642fc0bd9d7b24e2618d2dcc9b729d944badacfddaf diff -Nru temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_reduced_once_tests.txt temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_reduced_once_tests.txt --- temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_reduced_once_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_reduced_once_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ -# 2**1024 - 105 is the largest 1024-bit prime. -# Q == 2**1023 + 1155 is the smallest 1024-bit prime. -# -# import Math.NumberTheory.Prime; -# -# main = mapM_ (putStrLn . show) [prevPrime (2^1024), nextPrime (2^1023)] -# -# cabal install HaskellForMaths -# ghc -O2 prime.hs - -# N = P * Q -# P == 2**1024 - 105 -# Q == 2**1023 + 1155 -# QQ = Q**2 -# A == N - 1 > QQ -R = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9cb3b -A = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe2644 -QQ = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000145b09 -N = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe2645 - -# N = P * Q -# P == 2**1024 - 105 -# Q == 2**1023 + 1155 -# QQ = Q**2 -# A == QQ + 1 > QQ -R = 01 -A = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000145b0a -QQ = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000145b09 -N = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe2645 - -# N = P * Q -# P == 2**1024 - 105 -# Q == 2**1023 + 1155 -# QQ = Q**2 -# A == QQ -R = 00 -A = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000145b09 -QQ = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000145b09 -N = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe2645 diff -Nru temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_reduced_tests.txt temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_reduced_tests.txt --- temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_reduced_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_reduced_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,171 +0,0 @@ -# R = A % M where 0 <= A < M**2. - -# A == 0 -R = 00 -A = 00 -M = 813bc46ee19ffeab364073a89f96913f340d43ee72129ea9edac1beb4ebe1336450d2eabc7b26e51c400cec60d6ee459033b - -# A == M -R = 00 -A = 813bc46ee19ffeab364073a89f96913f340d43ee72129ea9edac1beb4ebe1336450d2eabc7b26e51c400cec60d6ee459033b -M = 813bc46ee19ffeab364073a89f96913f340d43ee72129ea9edac1beb4ebe1336450d2eabc7b26e51c400cec60d6ee459033b - -# A == M - 1 -R = 813bc46ee19ffeab364073a89f96913f340d43ee72129ea9edac1beb4ebe1336450d2eabc7b26e51c400cec60d6ee459033a -A = 813bc46ee19ffeab364073a89f96913f340d43ee72129ea9edac1beb4ebe1336450d2eabc7b26e51c400cec60d6ee459033a -M = 813bc46ee19ffeab364073a89f96913f340d43ee72129ea9edac1beb4ebe1336450d2eabc7b26e51c400cec60d6ee459033b - -# A == M**2 - 1. -R = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe -A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000000000000000000 -M = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff - -# Test vector adapted from the regression test for CVE-2015-3193, A is the -# square of the original test vector's A. -R = 19324b647d967d644b3219 -A = 19324b647d967d644b3219 -M = 414141414141414141414127414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 - -# Test vector adapted from the regression test for CVE-2017-3732. A is the -# square of the original test vector's A. -R = fffffffdfffffd01000009000002f6fffdf403000312000402f3fff5f602fe080a0005fdfafffa00010001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000002000002fefffff7fffffd07000109fdfffef3fffdfd06000405ff00fdfbfffe00010001 -A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000001fffffffe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffffe00000002000000fffffffe00000200fffffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000003fffffffdfffffe00000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffffe000000000000010000000000000000 -M = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff - - -# These vectors were adapted from BoringSSL's "Quotient" BIGNUM tests in the -# following ways: -# -# * The quotient in each vector was removed (*ring* only calculates -# remainders, never quotients). -# * B was renamed to M and Remainder was renamed to R. -# * Only the test vectors with positive inputs were imported. -# * Only the test vectors with odd moduli were imported. -# * A < M**2; any larger values of A were split up into multiple reduction -# steps. The first step uses the initial A and the smallest power of the -# original M that makes A < M**2 true, the subsequent steps have smaller -# powers of M using the result R from the previous step as A, and where the -# last step has the initial value of M. -# * Only test vectors with moduli that require at least 4 64-bit words to -# represent are included (*ring*'s modular multiplication has this lower -# bound, and modular multiplication is used as part of reduction). - -# Step 1 -R = 04 -A = 0813bc46ee19ffeab364073a89f96913f340d43ee72129ea9edac1beb4ebe1336450d2eabc7b26e51c400cec60d6ee459033b4 -M = 813bc46ee19ffeab364073a89f96913f340d43ee72129ea9edac1beb4ebe1336450d2eabc7b26e51c400cec60d6ee459033b - -# Step 1 -R = 18 -A = 966df62c26acab2d3d1dbe729e48d0181c68e9f5eba45f6caefa38d60e34057d09fe620abb8640cec8cac755957aaad7c6fd000018 -M = 966df62c26acab2d3d1dbe729e48d0181c68e9f5eba45f6caefa38d60e34057d09fe620abb8640cec8cac755957aaad7c6fd - -# Step 1 -R = 20 -A = 89a2f1792afc54467955839eddc9ef2e37d391ce7a1a4a205291220c1f49f59ee31fc7a7a7f7706c199bf5c8c951a0d0743d00000020 -M = 89a2f1792afc54467955839eddc9ef2e37d391ce7a1a4a205291220c1f49f59ee31fc7a7a7f7706c199bf5c8c951a0d0743d - -# Step 1 -R = 24 -A = 0877f1caf75e7166ef18484d0718947893fd1ec016984387debc55c19e378a487a5ddbb03a80a88316f6fca16ae148933e719000000024 -M = 877f1caf75e7166ef18484d0718947893fd1ec016984387debc55c19e378a487a5ddbb03a80a88316f6fca16ae148933e719 - -# Step 1 -R = 2c -A = 087bd03a64d9c56fe340137065ba36bd07b556119546dd1fc3ae087ead32bc79ca7efb5c7230ea7bfb00ad419096d9279fbe10000000002c -M = 87bd03a64d9c56fe340137065ba36bd07b556119546dd1fc3ae087ead32bc79ca7efb5c7230ea7bfb00ad419096d9279fbe1 - -# Step 1 -R = 30 -A = d00fec043edadc093673e5f5abef0c6bacdf1f3faa49a831a645bf80db7539d657f69403b122a5c6f879eb8e63be54d35ed7000000000030 -M = d00fec043edadc093673e5f5abef0c6bacdf1f3faa49a831a645bf80db7539d657f69403b122a5c6f879eb8e63be54d35ed7 - -# Step 1 -R = 458f5c63c063b09790a28c6cbd9afc98ded6d6c1d12c8e4e081e4f6a5638a5319a548fe711b3142d6d32827f415a41d457048783c3 -A = 01280d26263c574f655ea63006f2930666fbaa4de1b09a11ab0e47dbe0054711aab90a05b1185454dcf046745436391a673426000000000031 -M = 4e5d7ec324e42afb2d8b381c6d07869985cd3b3de3cbc06853a387c076e6525fd93c3b6de887f31a7580bafb0546f45b785c4e5199 - -# Step 2 -R = 029abc8898d5ef85f87323c2a6fa36ab6e1bdbcc0ca742b1a2347e -A = 458f5c63c063b09790a28c6cbd9afc98ded6d6c1d12c8e4e081e4f6a5638a5319a548fe711b3142d6d32827f415a41d457048783c3 -M = 08da37bc9c7c9bdc62f49cadcd40e156e776b7f4c8f7ad543f463b - -# Step 1 -R = 2000f9c8569d20abce69ced0d66a44ae47a9516205732183408c6ab6c135cd172880f0c0d160862d49a0003656276f3884e88a3c9664d45f -A = 01280d26263c574f655ea63006f2930666fbaa4de1b09a11ab0e47dbe0054711aab90a05b1185454dcf046745436391a673426000000000031 -M = 8406162ef2dd175cc81e309b0e1460dc5a007e3fd5937813e6ddb894a208a249c8448a782379e757d3533a0ef008d597579ebae1b4cd95e9 - -# Step 2 -R = 6c9e547a77c98eaba1b021777dbd98ea88f7fd37c95a2b182f2b9067 -A = 2000f9c8569d20abce69ced0d66a44ae47a9516205732183408c6ab6c135cd172880f0c0d160862d49a0003656276f3884e88a3c9664d45f -M = b7d7b1f95f4fe2f267af88b81af88fbdf603e54ab6de73ccd000c32d - -# Step 1 -R = 0bbfaf15a90e744dc4a1caceda3cb339e5491e4507a1118613c5e9739f976b -A = 01280d26263c574f655ea63006f2930666fbaa4de1b09a11ab0e47dbe0054711aab90a05b1185454dcf046745436391a673426000000000031 -M = 82ae783b8a13e2e65d52dd3a6d6b057163347872f4d72245ff364dbf2421ff - -# Step 1 -R = 82e3fb3f7252dd87b5370d26d9e8b9e98c7d333701f0ce8a05c337054c7aeb343d04d7e342 -A = 01280d26263c574f655ea63006f2930666fbaa4de1b09a11ab0e47dbe0054711aab90a05b1185454dcf046745436391a673426000000000031 -M = 8faf8c0a3ef94ab1069394998e5412a7d84f44aff97edf63abc46d96f897172c38faa0b13f - -# Step 1 -R = 65bf2ef1c2f8e94d98060aa305f85e6cb869c74eabad99877010d30654aa2e578ef6aa3c5f1122e3 -A = 01280d26263c574f655ea63006f2930666fbaa4de1b09a11ab0e47dbe0054711aab90a05b1185454dcf046745436391a673426000000000031 -M = 83cfc25e90a61cf8686e3d5857b2f958674d478622c54cf8427275ca5e9312ed24e44ed4a1b5e413 - -# Step 1 -R = 02c89373720b834d718ff3df985ae47c3a7cde0e0309f682f5fd48dc97a1ff3d69fa0dcaa1245e956445 -A = 01280d26263c574f655ea63006f2930666fbaa4de1b09a11ab0e47dbe0054711aab90a05b1185454dcf046745436391a673426000000000031 -M = 0d6721300e877a8145d05f4f3d8085697c2ca5f34a5357fed0bdb7169f83b6f8d855232eeea594846b79 - -# Step 1 -R = 1b02a7b97f9ac1f6306aa00fff0e59f55fce463ffdc640364a950df29474e08b67cdfcec0628e973d42fa1e4f98e988ec4c47e4915651a1731b71d5e36a10a0d1b3420427dbb79ba7d52 -A = ea87c57f6cdbfd4f836431be3e9950c90ee8ecc291eb4efb881617512fd62e2d86caefce713cfd8a20f4b4925bfc7dba1fcbe99c72932725b5d11eccefde4c5e505952754891e9ded499ec453a1c01a82152c8933f7db4f2b4b19e97baac322eb483cd661a43e458774ef27a29a19c3562ba466381056a3b92c35d9b8b71372b -M = 3f74cafe9ab0c1b307cd7571fd442665fa3205fb2f45b3811b92d1d38b096a2025b8170663a29c52ca84da102e62048e583fba96a594c0b23952fec587814857c25221ff2cd0533cba6d - -# Step 1 -R = 13849ef93cbc77460c3c496e8f31f7e01a98c21cdfcd6877547161f9601680665b394933d3a0824f0d32854508c89f0e4a0873280c779c7ca636cd89cf6ee5d42a917b4f382be3b9654039f623c11b43164827f870fa0f0781 -A = ea87c57f6cdbfd4f836431be3e9950c90ee8ecc291eb4efb881617512fd62e2d86caefce713cfd8a20f4b4925bfc7dba1fcbe99c72932725b5d11eccefde4c5e505952754891e9ded499ec453a1c01a82152c8933f7db4f2b4b19e97baac322eb483cd661a43e458774ef27a29a19c3562ba466381056a3b92c35d9b8b71372b -M = 23ab6042240a7709d43de7ee17332a9710bd0d913c42b3591341527bf48d5bc30abb962482292d45a15cb03c9457cc8d78d1e00aaa63358427b000e59e4260bfe1e2cc603e175d7fcf02bd9f61fae3740cb8e10a510ea3d1d5 - -# Step 1 -R = 0d8c77134a75584ecd5ab29e97a909ec139464901f9cfcb1d3d9e29a63d204615b6845d466c8710873980f107c40ab54eca9f8933ef6d726f9bd0f3e9e97eade5eb1a9bcaa7b01b6ad51ff3ecf67d6e4d345f128e990494a2db434fcd3ab -A = ea87c57f6cdbfd4f836431be3e9950c90ee8ecc291eb4efb881617512fd62e2d86caefce713cfd8a20f4b4925bfc7dba1fcbe99c72932725b5d11eccefde4c5e505952754891e9ded499ec453a1c01a82152c8933f7db4f2b4b19e97baac322eb483cd661a43e458774ef27a29a19c3562ba466381056a3b92c35d9b8b71372b -M = 3e7dd961be36c0c286eb9e78bf3b33e6f9bdf2c2137a0c660f1d21dea31ac9a044e526bf47ec8190e137a60f1f55e947046b9cd04a2485679e48cac80a1bb064a915208889289d63a6e338cf7069ad799861c31ec6eafe02a4ef2c2641c9 - -# Step 1 -R = 0a1a70f674cb141a896c4adace0dc58cdcbe2503fd0ad36ce348dc5b8afc96d0f2f8c65bbbadabf2920012798b7ccaedbe8d896dd2674082ad3cc75b54c5c190ad56ff34e8cb5dd29c031656497d48571295d6da396d5f4cdb652732d874a79a674d06a1d7b979f5 -A = ea87c57f6cdbfd4f836431be3e9950c90ee8ecc291eb4efb881617512fd62e2d86caefce713cfd8a20f4b4925bfc7dba1fcbe99c72932725b5d11eccefde4c5e505952754891e9ded499ec453a1c01a82152c8933f7db4f2b4b19e97baac322eb483cd661a43e458774ef27a29a19c3562ba466381056a3b92c35d9b8b71372b -M = 21917f48bb8e65646c618068fd9069c06e22ce8c679a845f9c4ec843849010abeee12e2d3c61fb963297abca30813c446f2ae82e909ca6ac7839fb58974fa65f3b5d91fb8b3f99d948519ed56653d50026d694060208cf48e3c757f64885b4ed4328c6f071e9f5d5 - -# Step 1 -R = 252d055186ec896cb3142c9e4e49c441e2ddad365b86ad21ae4ef1c522d3306c2834d6993a5e1f8c64a1ed582bad8ab746f7e773fc004b1c47814f73560db72f7237ef6e2f671d3b19a8777be2e4c662a76db87ea64f32c48ea371b1ffb15df26726854a417e18afcf49054c6d2e0e337e71 -A = ea87c57f6cdbfd4f836431be3e9950c90ee8ecc291eb4efb881617512fd62e2d86caefce713cfd8a20f4b4925bfc7dba1fcbe99c72932725b5d11eccefde4c5e505952754891e9ded499ec453a1c01a82152c8933f7db4f2b4b19e97baac322eb483cd661a43e458774ef27a29a19c3562ba466381056a3b92c35d9b8b71372b -M = 2b6eb2caa3ca650be02fa199e9ea6c48646a76434e268713753a547e49571f9817ad396f2cb7b16d307801fc8892f0af3e7f93ce08f7955a8acfbc0b56add4b4c7ef7351f60e402b9a8ef7fe02ccdcb4b00b7ffe78c7009268dbcf1d606c3a1b5307d9a8ee6121c6a635a742b8bf36b56cc7 - -# Step 1 -R = ea87c57f6cdbfd4f836431be3e9950c90ee8ecc291eb4efb881617512fd62e2d86caefce713cfd8a20f4b4925bfc7dba1fcbe99c72932725b5d11eccefde4c5e505952754891e9ded499ec453a1c01a82152c8933f7db4f2b4b19e97baac322eb483cd661a43e458774ef27a29a19c3562ba466381056a3b92c35d9b8b71372b -A = ea87c57f6cdbfd4f836431be3e9950c90ee8ecc291eb4efb881617512fd62e2d86caefce713cfd8a20f4b4925bfc7dba1fcbe99c72932725b5d11eccefde4c5e505952754891e9ded499ec453a1c01a82152c8933f7db4f2b4b19e97baac322eb483cd661a43e458774ef27a29a19c3562ba466381056a3b92c35d9b8b71372b -M = 3a8682d0e5a4efa985dfa8bbddc2c0d72a4400b8b070a8cf7450aa8f831d8a91c9ae3542641b7a4ad793e232a0d301b82664fe2c7f20bd9bf8275828a2a20027d6056b211638b9b0220fa4252d058bb485dd3c4622b1eac97d54b9634b558ff1bd5bd11085d4f3d288f7965af52beaa922b23ac0207d5763c24c085076128e0ef7370eeaa19d - -# Step 1 -R = ea87c57f6cdbfd4f836431be3e9950c90ee8ecc291eb4efb881617512fd62e2d86caefce713cfd8a20f4b4925bfc7dba1fcbe99c72932725b5d11eccefde4c5e505952754891e9ded499ec453a1c01a82152c8933f7db4f2b4b19e97baac322eb483cd661a43e458774ef27a29a19c3562ba466381056a3b92c35d9b8b71372b -A = ea87c57f6cdbfd4f836431be3e9950c90ee8ecc291eb4efb881617512fd62e2d86caefce713cfd8a20f4b4925bfc7dba1fcbe99c72932725b5d11eccefde4c5e505952754891e9ded499ec453a1c01a82152c8933f7db4f2b4b19e97baac322eb483cd661a43e458774ef27a29a19c3562ba466381056a3b92c35d9b8b71372b -M = 33aeafda3cfc20710f0b4a3d9ace4817eed80ca57ce6c82dc2e7946058a40983c9204ac95a1399fa633bc96cb10af3ddeee3ad2337c64391a42dc7794fca629e3e1e4e03a2ae24a000e7113b91c1b6230cce9592e45b6ee7984680b45aa0aabd7f56cab1a64ec310cefe5211821a75deef2e0c8e43eb467dea79dc8c03d2d523734498d079d5493c904a2ebfd8a3a9bd - -# Step 1 -R = ea87c57f6cdbfd4f836431be3e9950c90ee8ecc291eb4efb881617512fd62e2d86caefce713cfd8a20f4b4925bfc7dba1fcbe99c72932725b5d11eccefde4c5e505952754891e9ded499ec453a1c01a82152c8933f7db4f2b4b19e97baac322eb483cd661a43e458774ef27a29a19c3562ba466381056a3b92c35d9b8b71372b -A = ea87c57f6cdbfd4f836431be3e9950c90ee8ecc291eb4efb881617512fd62e2d86caefce713cfd8a20f4b4925bfc7dba1fcbe99c72932725b5d11eccefde4c5e505952754891e9ded499ec453a1c01a82152c8933f7db4f2b4b19e97baac322eb483cd661a43e458774ef27a29a19c3562ba466381056a3b92c35d9b8b71372b -M = 3083421e375f0722b9397e156de47f77635d62ba1d51794469371b473b71c02e3722841bca2ca06b5d1cf1492bbacfa0abfe394dfdaa7bb8787550ddbd953540e9c97631d9a1efe0c8f8e14f395c82d20245cec6d8021f8564b4d66e7779c3245734c56fb74481172f4e349d9a113cd0ee5263c69ebf746c5285cd4c0fa91d9531f769fea3610c2972ccfe9a22c00aa62ebf52b3a4c6135f3069 - -# Step 1 -R = ea87c57f6cdbfd4f836431be3e9950c90ee8ecc291eb4efb881617512fd62e2d86caefce713cfd8a20f4b4925bfc7dba1fcbe99c72932725b5d11eccefde4c5e505952754891e9ded499ec453a1c01a82152c8933f7db4f2b4b19e97baac322eb483cd661a43e458774ef27a29a19c3562ba466381056a3b92c35d9b8b71372b -A = ea87c57f6cdbfd4f836431be3e9950c90ee8ecc291eb4efb881617512fd62e2d86caefce713cfd8a20f4b4925bfc7dba1fcbe99c72932725b5d11eccefde4c5e505952754891e9ded499ec453a1c01a82152c8933f7db4f2b4b19e97baac322eb483cd661a43e458774ef27a29a19c3562ba466381056a3b92c35d9b8b71372b -M = 2f26e156b3b1117f7cec542b20fcc06ca66cec03a19b6f5eeebf22b4c0fc265df5ff06fc9dcac569735135bdc142b526b295225711efb71577b10aacda2fa446f5208487c725407c2188b3185237740c813e4455a6f1dde4f62916237f23164a3471aac0fcfe24ad1ce1dd81a6144f5861ad0cf22dc337abe10fc4a88b36116dc4929602ab48eb971fdd7a5ff747d6b9e0b2bff75c59621550991966a0a19f - -# Step 1 -R = ea87c57f6cdbfd4f836431be3e9950c90ee8ecc291eb4efb881617512fd62e2d86caefce713cfd8a20f4b4925bfc7dba1fcbe99c72932725b5d11eccefde4c5e505952754891e9ded499ec453a1c01a82152c8933f7db4f2b4b19e97baac322eb483cd661a43e458774ef27a29a19c3562ba466381056a3b92c35d9b8b71372b -A = ea87c57f6cdbfd4f836431be3e9950c90ee8ecc291eb4efb881617512fd62e2d86caefce713cfd8a20f4b4925bfc7dba1fcbe99c72932725b5d11eccefde4c5e505952754891e9ded499ec453a1c01a82152c8933f7db4f2b4b19e97baac322eb483cd661a43e458774ef27a29a19c3562ba466381056a3b92c35d9b8b71372b -M = 2a8f2c530342bb6ce683a760540e956a1155c0fe065476e400caec59861ca97ca71e51a11b3213b2baea1a41a29449998778e0f533fcc181698d293f05e28bff2750ef4095170de98a19a36ddcf59a65f3789a3808ead51680245070262c9544e446f23652eba47065a2bc4701c55378bd49733619ed2c213f8ed12a4a317c465f37efe07ff2df8e88fc33d3eb42cde9408dda28215702bfa607030839285a8bbf89b5e8842fa7d7f50d83fd4ab5 diff -Nru temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_squared_tests.txt temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_squared_tests.txt --- temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_squared_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/arithmetic/bigint_elem_squared_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -# ModSquare tests. -# -# These test vectors satisfy A * A = ModSquare (mod M) and 0 <= ModSquare < M. - -# Regression test for CVE-2015-3193 (carry propagation bug in sqr8x_reduction). -# XXX: It's pretty unclear if this is actually exercising the code that had the -# bug. In fact it seems like it almost definitely isn't. This is here mostly -# because it is convenient to add the test, and also to track the issue of the -# lack of a real regression test. TODO: Fix this. -ModSquare = 19324b647d967d644b3219 -A = 050505050505 -M = 414141414141414141414127414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 - -# Regression test for CVE-2017-3732. -ModSquare = fffffffdfffffd01000009000002f6fffdf403000312000402f3fff5f602fe080a0005fdfafffa00010001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000002000002fefffff7fffffd07000109fdfffef3fffdfd06000405ff00fdfbfffe00010001 -A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff00000000 -M = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff - -ModSquare = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000145b09 -A = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000483 -M = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe2645 - -# Regression test for CVE-2017-3736 -ModSquare = fe06fe0b06160c09 -A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8f8f8f800000000000010000000006c000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffff8f8f8f800000000000010000000006c000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffff00fcfdfc -M = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8f8f8f800000000000010000000006c000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffff8f8f8f800000000000010000000006c000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffff diff -Nru temporalio-1.3.0/vendor/ring/src/arithmetic/bigint.rs temporalio-1.3.0/vendor/ring/src/arithmetic/bigint.rs --- temporalio-1.3.0/vendor/ring/src/arithmetic/bigint.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/arithmetic/bigint.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -// Copyright 2015-2016 Brian Smith. +// Copyright 2015-2023 Brian Smith. // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above @@ -36,17 +36,36 @@ //! [Static checking of units in Servo]: //! https://blog.mozilla.org/research/2014/06/23/static-checking-of-units-in-servo/ +use self::boxed_limbs::BoxedLimbs; +pub(crate) use self::{ + modulus::{Modulus, PartialModulus, MODULUS_MAX_LIMBS}, + private_exponent::PrivateExponent, +}; +use super::n0::N0; +pub(crate) use super::nonnegative::Nonnegative; use crate::{ arithmetic::montgomery::*, - bits, bssl, c, error, - limb::{self, Limb, LimbMask, LIMB_BITS, LIMB_BYTES}, -}; -use alloc::{borrow::ToOwned as _, boxed::Box, vec, vec::Vec}; -use core::{ - marker::PhantomData, - ops::{Deref, DerefMut}, + bits, c, cpu, error, + limb::{self, Limb, LimbMask, LIMB_BITS}, + polyfill::u64_from_usize, }; +use alloc::vec; +use core::{marker::PhantomData, num::NonZeroU64}; +mod boxed_limbs; +mod modulus; +mod private_exponent; + +/// A prime modulus. +/// +/// # Safety +/// +/// Some logic may assume a `Prime` number is non-zero, and thus a non-empty +/// array of limbs, or make similar assumptions. TODO: Any such logic should +/// be encapsulated here, or this trait should be made non-`unsafe`. TODO: +/// non-zero-ness and non-empty-ness should be factored out into a separate +/// trait. (In retrospect, this shouldn't have been made an `unsafe` trait +/// preemptively.) pub unsafe trait Prime {} struct Width { @@ -56,319 +75,44 @@ m: PhantomData, } -/// All `BoxedLimbs` are stored in the same number of limbs. -struct BoxedLimbs { - limbs: Box<[Limb]>, - - /// The modulus *m* that determines the size of `limbx`. - m: PhantomData, -} - -impl Deref for BoxedLimbs { - type Target = [Limb]; - #[inline] - fn deref(&self) -> &Self::Target { - &self.limbs - } -} - -impl DerefMut for BoxedLimbs { - #[inline] - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.limbs - } -} - -// TODO: `derive(Clone)` after https://github.com/rust-lang/rust/issues/26925 -// is resolved or restrict `M: Clone`. -impl Clone for BoxedLimbs { - fn clone(&self) -> Self { - Self { - limbs: self.limbs.clone(), - m: self.m, - } - } -} - -impl BoxedLimbs { - fn positive_minimal_width_from_be_bytes( - input: untrusted::Input, - ) -> Result { - // Reject leading zeros. Also reject the value zero ([0]) because zero - // isn't positive. - if untrusted::Reader::new(input).peek(0) { - return Err(error::KeyRejected::invalid_encoding()); - } - let num_limbs = (input.len() + LIMB_BYTES - 1) / LIMB_BYTES; - let mut r = Self::zero(Width { - num_limbs, - m: PhantomData, - }); - limb::parse_big_endian_and_pad_consttime(input, &mut r) - .map_err(|error::Unspecified| error::KeyRejected::unexpected_error())?; - Ok(r) - } - - fn minimal_width_from_unpadded(limbs: &[Limb]) -> Self { - debug_assert_ne!(limbs.last(), Some(&0)); - Self { - limbs: limbs.to_owned().into_boxed_slice(), - m: PhantomData, - } - } - - fn from_be_bytes_padded_less_than( - input: untrusted::Input, - m: &Modulus, - ) -> Result { - let mut r = Self::zero(m.width()); - limb::parse_big_endian_and_pad_consttime(input, &mut r)?; - if limb::limbs_less_than_limbs_consttime(&r, &m.limbs) != LimbMask::True { - return Err(error::Unspecified); - } - Ok(r) - } - - #[inline] - fn is_zero(&self) -> bool { - limb::limbs_are_zero_constant_time(&self.limbs) == LimbMask::True - } - - fn zero(width: Width) -> Self { - Self { - limbs: vec![0; width.num_limbs].into_boxed_slice(), - m: PhantomData, - } - } - - fn width(&self) -> Width { - Width { - num_limbs: self.limbs.len(), - m: PhantomData, - } - } -} - /// A modulus *s* that is smaller than another modulus *l* so every element of /// ℤ/sℤ is also an element of ℤ/lℤ. +/// +/// # Safety +/// +/// Some logic may assume that the invariant holds when accessing limbs within +/// a value, e.g. by assuming the larger modulus has at least as many limbs. +/// TODO: Any such logic should be encapsulated here, or this trait should be +/// made non-`unsafe`. (In retrospect, this shouldn't have been made an `unsafe` +/// trait preemptively.) pub unsafe trait SmallerModulus {} /// A modulus *s* where s < l < 2*s for the given larger modulus *l*. This is /// the precondition for reduction by conditional subtraction, /// `elem_reduce_once()`. +/// +/// # Safety +/// +/// Some logic may assume that the invariant holds when accessing limbs within +/// a value, e.g. by assuming that the smaller modulus is at most one limb +/// smaller than the larger modulus. TODO: Any such logic should be +/// encapsulated here, or this trait should be made non-`unsafe`. (In retrospect, +/// this shouldn't have been made an `unsafe` trait preemptively.) pub unsafe trait SlightlySmallerModulus: SmallerModulus {} /// A modulus *s* where √l <= s < l for the given larger modulus *l*. This is /// the precondition for the more general Montgomery reduction from ℤ/lℤ to /// ℤ/sℤ. +/// +/// # Safety +/// +/// Some logic may assume that the invariant holds when accessing limbs within +/// a value. TODO: Any such logic should be encapsulated here, or this trait +/// should be made non-`unsafe`. (In retrospect, this shouldn't have been made +/// an `unsafe` trait preemptively.) pub unsafe trait NotMuchSmallerModulus: SmallerModulus {} -pub unsafe trait PublicModulus {} - -/// The x86 implementation of `GFp_bn_mul_mont`, at least, requires at least 4 -/// limbs. For a long time we have required 4 limbs for all targets, though -/// this may be unnecessary. TODO: Replace this with -/// `n.len() < 256 / LIMB_BITS` so that 32-bit and 64-bit platforms behave the -/// same. -pub const MODULUS_MIN_LIMBS: usize = 4; - -pub const MODULUS_MAX_LIMBS: usize = 8192 / LIMB_BITS; - -/// The modulus *m* for a ring ℤ/mℤ, along with the precomputed values needed -/// for efficient Montgomery multiplication modulo *m*. The value must be odd -/// and larger than 2. The larger-than-1 requirement is imposed, at least, by -/// the modular inversion code. -pub struct Modulus { - limbs: BoxedLimbs, // Also `value >= 3`. - - // n0 * N == -1 (mod r). - // - // r == 2**(N0_LIMBS_USED * LIMB_BITS) and LG_LITTLE_R == lg(r). This - // ensures that we can do integer division by |r| by simply ignoring - // `N0_LIMBS_USED` limbs. Similarly, we can calculate values modulo `r` by - // just looking at the lowest `N0_LIMBS_USED` limbs. This is what makes - // Montgomery multiplication efficient. - // - // As shown in Algorithm 1 of "Fast Prime Field Elliptic Curve Cryptography - // with 256 Bit Primes" by Shay Gueron and Vlad Krasnov, in the loop of a - // multi-limb Montgomery multiplication of a * b (mod n), given the - // unreduced product t == a * b, we repeatedly calculate: - // - // t1 := t % r |t1| is |t|'s lowest limb (see previous paragraph). - // t2 := t1*n0*n - // t3 := t + t2 - // t := t3 / r copy all limbs of |t3| except the lowest to |t|. - // - // In the last step, it would only make sense to ignore the lowest limb of - // |t3| if it were zero. The middle steps ensure that this is the case: - // - // t3 == 0 (mod r) - // t + t2 == 0 (mod r) - // t + t1*n0*n == 0 (mod r) - // t1*n0*n == -t (mod r) - // t*n0*n == -t (mod r) - // n0*n == -1 (mod r) - // n0 == -1/n (mod r) - // - // Thus, in each iteration of the loop, we multiply by the constant factor - // n0, the negative inverse of n (mod r). - // - // TODO(perf): Not all 32-bit platforms actually make use of n0[1]. For the - // ones that don't, we could use a shorter `R` value and use faster `Limb` - // calculations instead of double-precision `u64` calculations. - n0: N0, - - oneRR: One, -} - -impl core::fmt::Debug for Modulus { - fn fmt(&self, fmt: &mut ::core::fmt::Formatter) -> Result<(), ::core::fmt::Error> { - fmt.debug_struct("Modulus") - // TODO: Print modulus value. - .finish() - } -} - -impl Modulus { - pub fn from_be_bytes_with_bit_length( - input: untrusted::Input, - ) -> Result<(Self, bits::BitLength), error::KeyRejected> { - let limbs = BoxedLimbs::positive_minimal_width_from_be_bytes(input)?; - Self::from_boxed_limbs(limbs) - } - - pub fn from_nonnegative_with_bit_length( - n: Nonnegative, - ) -> Result<(Self, bits::BitLength), error::KeyRejected> { - let limbs = BoxedLimbs { - limbs: n.limbs.into_boxed_slice(), - m: PhantomData, - }; - Self::from_boxed_limbs(limbs) - } - - fn from_boxed_limbs(n: BoxedLimbs) -> Result<(Self, bits::BitLength), error::KeyRejected> { - if n.len() > MODULUS_MAX_LIMBS { - return Err(error::KeyRejected::too_large()); - } - if n.len() < MODULUS_MIN_LIMBS { - return Err(error::KeyRejected::unexpected_error()); - } - if limb::limbs_are_even_constant_time(&n) != LimbMask::False { - return Err(error::KeyRejected::invalid_component()); - } - if limb::limbs_less_than_limb_constant_time(&n, 3) != LimbMask::False { - return Err(error::KeyRejected::unexpected_error()); - } - - // n_mod_r = n % r. As explained in the documentation for `n0`, this is - // done by taking the lowest `N0_LIMBS_USED` limbs of `n`. - #[allow(clippy::useless_conversion)] - let n0 = { - extern "C" { - fn GFp_bn_neg_inv_mod_r_u64(n: u64) -> u64; - } - - // XXX: u64::from isn't guaranteed to be constant time. - let mut n_mod_r: u64 = u64::from(n[0]); - - if N0_LIMBS_USED == 2 { - // XXX: If we use `<< LIMB_BITS` here then 64-bit builds - // fail to compile because of `deny(exceeding_bitshifts)`. - debug_assert_eq!(LIMB_BITS, 32); - n_mod_r |= u64::from(n[1]) << 32; - } - N0::from(unsafe { GFp_bn_neg_inv_mod_r_u64(n_mod_r) }) - }; - - let bits = limb::limbs_minimal_bits(&n.limbs); - let oneRR = { - let partial = PartialModulus { - limbs: &n.limbs, - n0: n0.clone(), - m: PhantomData, - }; - - One::newRR(&partial, bits) - }; - - Ok(( - Self { - limbs: n, - n0, - oneRR, - }, - bits, - )) - } - - #[inline] - fn width(&self) -> Width { - self.limbs.width() - } - - fn zero(&self) -> Elem { - Elem { - limbs: BoxedLimbs::zero(self.width()), - encoding: PhantomData, - } - } - - // TODO: Get rid of this - fn one(&self) -> Elem { - let mut r = self.zero(); - r.limbs[0] = 1; - r - } - - pub fn oneRR(&self) -> &One { - &self.oneRR - } - - pub fn to_elem(&self, l: &Modulus) -> Elem - where - M: SmallerModulus, - { - // TODO: Encode this assertion into the `where` above. - assert_eq!(self.width().num_limbs, l.width().num_limbs); - let limbs = self.limbs.clone(); - Elem { - limbs: BoxedLimbs { - limbs: limbs.limbs, - m: PhantomData, - }, - encoding: PhantomData, - } - } - - fn as_partial(&self) -> PartialModulus { - PartialModulus { - limbs: &self.limbs, - n0: self.n0.clone(), - m: PhantomData, - } - } -} - -struct PartialModulus<'a, M> { - limbs: &'a [Limb], - n0: N0, - m: PhantomData, -} - -impl PartialModulus<'_, M> { - // TODO: XXX Avoid duplication with `Modulus`. - fn zero(&self) -> Elem { - let width = Width { - num_limbs: self.limbs.len(), - m: PhantomData, - }; - Elem { - limbs: BoxedLimbs::zero(width), - encoding: PhantomData, - } - } -} +pub trait PublicModulus {} /// Elements of ℤ/mℤ for some modulus *m*. // @@ -401,29 +145,28 @@ } } -impl Elem { - fn decode_once(self, m: &Modulus) -> Elem::Output> { - // A multiplication isn't required since we're multiplying by the - // unencoded value one (1); only a Montgomery reduction is needed. - // However the only non-multiplication Montgomery reduction function we - // have requires the input to be large, so we avoid using it here. - let mut limbs = self.limbs; - let num_limbs = m.width().num_limbs; - let mut one = [0; MODULUS_MAX_LIMBS]; - one[0] = 1; - let one = &one[..num_limbs]; // assert!(num_limbs <= MODULUS_MAX_LIMBS); - limbs_mont_mul(&mut limbs, &one, &m.limbs, &m.n0); - Elem { - limbs, - encoding: PhantomData, - } +/// Does a Montgomery reduction on `limbs` assuming they are Montgomery-encoded ('R') and assuming +/// they are the same size as `m`, but perhaps not reduced mod `m`. The result will be +/// fully reduced mod `m`. +fn from_montgomery_amm(limbs: BoxedLimbs, m: &Modulus) -> Elem { + debug_assert_eq!(limbs.len(), m.limbs().len()); + + let mut limbs = limbs; + let num_limbs = m.width().num_limbs; + let mut one = [0; MODULUS_MAX_LIMBS]; + one[0] = 1; + let one = &one[..num_limbs]; // assert!(num_limbs <= MODULUS_MAX_LIMBS); + limbs_mont_mul(&mut limbs, one, m.limbs(), m.n0(), m.cpu_features()); + Elem { + limbs, + encoding: PhantomData, } } impl Elem { #[inline] pub fn into_unencoded(self, m: &Modulus) -> Elem { - self.decode_once(m) + from_montgomery_amm(self.limbs, m) } } @@ -432,7 +175,7 @@ input: untrusted::Input, m: &Modulus, ) -> Result { - Ok(Elem { + Ok(Self { limbs: BoxedLimbs::from_be_bytes_padded_less_than(input, m)?, encoding: PhantomData, }) @@ -444,12 +187,6 @@ limb::big_endian_from_limbs(&self.limbs, out) } - pub fn into_modulus(self) -> Result, error::KeyRejected> { - let (m, _bits) = - Modulus::from_boxed_limbs(BoxedLimbs::minimal_width_from_unpadded(&self.limbs))?; - Ok(m) - } - fn is_one(&self) -> bool { limb::limbs_equal_limb_constant_time(&self.limbs, 1) == LimbMask::True } @@ -474,7 +211,7 @@ where (AF, BF): ProductEncoding, { - limbs_mont_mul(&mut b.limbs, &a.limbs, &m.limbs, &m.n0); + limbs_mont_mul(&mut b.limbs, &a.limbs, m.limbs(), m.n0(), m.cpu_features()); Elem { limbs: b.limbs, encoding: PhantomData, @@ -482,15 +219,15 @@ } fn elem_mul_by_2(a: &mut Elem, m: &PartialModulus) { - extern "C" { + prefixed_extern! { fn LIMBS_shl_mod(r: *mut Limb, a: *const Limb, m: *const Limb, num_limbs: c::size_t); } unsafe { LIMBS_shl_mod( a.limbs.as_mut_ptr(), a.limbs.as_ptr(), - m.limbs.as_ptr(), - m.limbs.len(), + m.limbs().as_ptr(), + m.limbs().len(), ); } } @@ -500,13 +237,10 @@ m: &Modulus, ) -> Elem { let mut r = a.limbs.clone(); - assert!(r.len() <= m.limbs.len()); - limb::limbs_reduce_once_constant_time(&mut r, &m.limbs); + assert!(r.len() <= m.limbs().len()); + limb::limbs_reduce_once_constant_time(&mut r, m.limbs()); Elem { - limbs: BoxedLimbs { - limbs: r.limbs, - m: PhantomData, - }, + limbs: BoxedLimbs::new_unchecked(r.into_limbs()), encoding: PhantomData, } } @@ -521,7 +255,7 @@ tmp.copy_from_slice(&a.limbs); let mut r = m.zero(); - limbs_from_mont_in_place(&mut r.limbs, tmp, &m.limbs, &m.n0); + limbs_from_mont_in_place(&mut r.limbs, tmp, m.limbs(), m.n0()); r } @@ -532,7 +266,7 @@ where (E, E): ProductEncoding, { - limbs_mont_square(&mut a.limbs, &m.limbs, &m.n0); + limbs_mont_square(&mut a.limbs, m.limbs(), m.n0(), m.cpu_features()); Elem { limbs: a.limbs, encoding: PhantomData, @@ -550,31 +284,13 @@ // TODO: Document why this works for all Montgomery factors. pub fn elem_add(mut a: Elem, b: Elem, m: &Modulus) -> Elem { - extern "C" { - // `r` and `a` may alias. - fn LIMBS_add_mod( - r: *mut Limb, - a: *const Limb, - b: *const Limb, - m: *const Limb, - num_limbs: c::size_t, - ); - } - unsafe { - LIMBS_add_mod( - a.limbs.as_mut_ptr(), - a.limbs.as_ptr(), - b.limbs.as_ptr(), - m.limbs.as_ptr(), - m.limbs.len(), - ) - } + limb::limbs_add_assign_mod(&mut a.limbs, &b.limbs, m.limbs()); a } // TODO: Document why this works for all Montgomery factors. pub fn elem_sub(mut a: Elem, b: &Elem, m: &Modulus) -> Elem { - extern "C" { + prefixed_extern! { // `r` and `a` may alias. fn LIMBS_sub_mod( r: *mut Limb, @@ -589,8 +305,8 @@ a.limbs.as_mut_ptr(), a.limbs.as_ptr(), b.limbs.as_ptr(), - m.limbs.as_ptr(), - m.limbs.len(), + m.limbs().as_ptr(), + m.limbs().len(), ); } a @@ -604,9 +320,9 @@ // 2**LIMB_BITS such that R > m. // // Even though the assembly on some 32-bit platforms works with 64-bit - // values, using `LIMB_BITS` here, rather than `N0_LIMBS_USED * LIMB_BITS`, + // values, using `LIMB_BITS` here, rather than `N0::LIMBS_USED * LIMB_BITS`, // is correct because R**2 will still be a multiple of the latter as - // `N0_LIMBS_USED` is either one or two. + // `N0::LIMBS_USED` is either one or two. fn newRR(m: &PartialModulus, m_bits: bits::BitLength) -> Self { let m_bits = m_bits.as_usize_bits(); let r = (m_bits + (LIMB_BITS - 1)) / LIMB_BITS * LIMB_BITS; @@ -622,22 +338,33 @@ // concerned about the performance of those. // // Then double `base` again so that base == 2*R (mod n), i.e. `2` in - // Montgomery form (`elem_exp_vartime_()` requires the base to be in + // Montgomery form (`elem_exp_vartime()` requires the base to be in // Montgomery form). Then compute // RR = R**2 == base**r == R**r == (2**r)**r (mod n). // // Take advantage of the fact that `elem_mul_by_2` is faster than // `elem_squared` by replacing some of the early squarings with shifts. // TODO: Benchmark shift vs. squaring performance to determine the - // optimal value of `lg_base`. - let lg_base = 2usize; // Shifts vs. squaring trade-off. - debug_assert_eq!(lg_base.count_ones(), 1); // Must 2**n for n >= 0. - let shifts = r - bit + lg_base; - let exponent = (r / lg_base) as u64; + // optimal value of `LG_BASE`. + const LG_BASE: usize = 2; // Shifts vs. squaring trade-off. + debug_assert_eq!(LG_BASE.count_ones(), 1); // Must be 2**n for n >= 0. + let shifts = r - bit + LG_BASE; + // `m_bits >= LG_BASE` (for the currently chosen value of `LG_BASE`) + // since we require the modulus to have at least `MODULUS_MIN_LIMBS` + // limbs. `r >= m_bits` as seen above. So `r >= LG_BASE` and thus + // `r / LG_BASE` is non-zero. + // + // The maximum value of `r` is determined by + // `MODULUS_MAX_LIMBS * LIMB_BITS`. Further `r` is a multiple of + // `LIMB_BITS` so the maximum Hamming Weight is bounded by + // `MODULUS_MAX_LIMBS`. For the common case of {2048, 4096, 8192}-bit + // moduli the Hamming weight is 1. For the other common case of 3072 + // the Hamming weight is 2. + let exponent = NonZeroU64::new(u64_from_usize(r / LG_BASE)).unwrap(); for _ in 0..shifts { elem_mul_by_2(&mut base, m) } - let RR = elem_exp_vartime_(base, exponent, m); + let RR = elem_exp_vartime(base, exponent, m); Self(Elem { limbs: RR.limbs, @@ -652,108 +379,44 @@ } } -/// A non-secret odd positive value in the range -/// [3, PUBLIC_EXPONENT_MAX_VALUE]. -#[derive(Clone, Copy, Debug)] -pub struct PublicExponent(u64); - -impl PublicExponent { - pub fn from_be_bytes( - input: untrusted::Input, - min_value: u64, - ) -> Result { - if input.len() > 5 { - return Err(error::KeyRejected::too_large()); - } - let value = input.read_all(error::KeyRejected::invalid_encoding(), |input| { - // The exponent can't be zero and it can't be prefixed with - // zero-valued bytes. - if input.peek(0) { - return Err(error::KeyRejected::invalid_encoding()); - } - let mut value = 0u64; - loop { - let byte = input - .read_byte() - .map_err(|untrusted::EndOfInput| error::KeyRejected::invalid_encoding())?; - value = (value << 8) | u64::from(byte); - if input.at_end() { - return Ok(value); - } - } - })?; - - // Step 2 / Step b. NIST SP800-89 defers to FIPS 186-3, which requires - // `e >= 65537`. We enforce this when signing, but are more flexible in - // verification, for compatibility. Only small public exponents are - // supported. - if value & 1 != 1 { - return Err(error::KeyRejected::invalid_component()); - } - debug_assert!(min_value & 1 == 1); - debug_assert!(min_value <= PUBLIC_EXPONENT_MAX_VALUE); - if min_value < 3 { - return Err(error::KeyRejected::invalid_component()); - } - if value < min_value { - return Err(error::KeyRejected::too_small()); - } - if value > PUBLIC_EXPONENT_MAX_VALUE { - return Err(error::KeyRejected::too_large()); - } - - Ok(Self(value)) +impl Clone for One { + fn clone(&self) -> Self { + Self(self.0.clone()) } } -// This limit was chosen to bound the performance of the simple -// exponentiation-by-squaring implementation in `elem_exp_vartime`. In -// particular, it helps mitigate theoretical resource exhaustion attacks. 33 -// bits was chosen as the limit based on the recommendations in [1] and -// [2]. Windows CryptoAPI (at least older versions) doesn't support values -// larger than 32 bits [3], so it is unlikely that exponents larger than 32 -// bits are being used for anything Windows commonly does. -// -// [1] https://www.imperialviolet.org/2012/03/16/rsae.html -// [2] https://www.imperialviolet.org/2012/03/17/rsados.html -// [3] https://msdn.microsoft.com/en-us/library/aa387685(VS.85).aspx -const PUBLIC_EXPONENT_MAX_VALUE: u64 = (1u64 << 33) - 1; - /// Calculates base**exponent (mod m). +/// +/// The run time is a function of the number of limbs in `m` and the bit +/// length and Hamming Weight of `exponent`. The bounds on `m` are pretty +/// obvious but the bounds on `exponent` are less obvious. Callers should +/// document the bounds they place on the maximum value and maximum Hamming +/// weight of `exponent`. // TODO: The test coverage needs to be expanded, e.g. test with the largest // accepted exponent and with the most common values of 65537 and 3. -pub fn elem_exp_vartime( - base: Elem, - PublicExponent(exponent): PublicExponent, - m: &Modulus, +pub(crate) fn elem_exp_vartime( + base: Elem, + exponent: NonZeroU64, + m: &PartialModulus, ) -> Elem { - let base = elem_mul(m.oneRR().as_ref(), base, &m); - elem_exp_vartime_(base, exponent, &m.as_partial()) -} - -/// Calculates base**exponent (mod m). -fn elem_exp_vartime_(base: Elem, exponent: u64, m: &PartialModulus) -> Elem { // Use what [Knuth] calls the "S-and-X binary method", i.e. variable-time // square-and-multiply that scans the exponent from the most significant // bit to the least significant bit (left-to-right). Left-to-right requires // less storage compared to right-to-left scanning, at the cost of needing // to compute `exponent.leading_zeros()`, which we assume to be cheap. // - // During RSA public key operations the exponent is almost always either 65537 - // (0b10000000000000001) or 3 (0b11), both of which have a Hamming weight - // of 2. During Montgomery setup the exponent is almost always a power of two, - // with Hamming weight 1. As explained in [Knuth], exponentiation by squaring - // is the most efficient algorithm when the Hamming weight is 2 or less. It - // isn't the most efficient for all other, uncommon, exponent values but any - // suboptimality is bounded by `PUBLIC_EXPONENT_MAX_VALUE`. + // As explained in [Knuth], exponentiation by squaring is the most + // efficient algorithm when the Hamming weight is 2 or less. It isn't the + // most efficient for all other, uncommon, exponent values but any + // suboptimality is bounded at least by the small bit length of `exponent` + // as enforced by its type. // // This implementation is slightly simplified by taking advantage of the // fact that we require the exponent to be a positive integer. // // [Knuth]: The Art of Computer Programming, Volume 2: Seminumerical // Algorithms (3rd Edition), Section 4.6.3. - assert!(exponent >= 1); - assert!(exponent <= PUBLIC_EXPONENT_MAX_VALUE); + let exponent = exponent.get(); let mut acc = base.clone(); let mut bit = 1 << (64 - 1 - exponent.leading_zeros()); debug_assert!((exponent & bit) != 0); @@ -767,63 +430,31 @@ acc } -// `M` represents the prime modulus for which the exponent is in the interval -// [1, `m` - 1). -pub struct PrivateExponent { - limbs: BoxedLimbs, -} - -impl PrivateExponent { - pub fn from_be_bytes_padded( - input: untrusted::Input, - p: &Modulus, - ) -> Result { - let dP = BoxedLimbs::from_be_bytes_padded_less_than(input, p)?; - - // Proof that `dP < p - 1`: - // - // If `dP < p` then either `dP == p - 1` or `dP < p - 1`. Since `p` is - // odd, `p - 1` is even. `d` is odd, and an odd number modulo an even - // number is odd. Therefore `dP` must be odd. But then it cannot be - // `p - 1` and so we know `dP < p - 1`. - // - // Further we know `dP != 0` because `dP` is not even. - if limb::limbs_are_even_constant_time(&dP) != LimbMask::False { - return Err(error::Unspecified); - } - - Ok(Self { limbs: dP }) - } -} - -impl PrivateExponent { - // Returns `p - 2`. - fn for_flt(p: &Modulus) -> Self { - let two = elem_add(p.one(), p.one(), p); - let p_minus_2 = elem_sub(p.zero(), &two, p); - Self { - limbs: p_minus_2.limbs, - } - } +/// Uses Fermat's Little Theorem to calculate modular inverse in constant time. +pub fn elem_inverse_consttime( + a: Elem, + m: &Modulus, +) -> Result, error::Unspecified> { + elem_exp_consttime(a, &PrivateExponent::for_flt(m), m) } #[cfg(not(target_arch = "x86_64"))] pub fn elem_exp_consttime( base: Elem, - exponent: &PrivateExponent, + exponent: &PrivateExponent, m: &Modulus, ) -> Result, error::Unspecified> { - use crate::limb::Window; + use crate::{bssl, limb::Window}; const WINDOW_BITS: usize = 5; const TABLE_ENTRIES: usize = 1 << WINDOW_BITS; - let num_limbs = m.limbs.len(); + let num_limbs = m.limbs().len(); let mut table = vec![0; TABLE_ENTRIES * num_limbs]; fn gather(table: &[Limb], i: Window, r: &mut Elem) { - extern "C" { + prefixed_extern! { fn LIMBS_select_512_32( r: *mut Limb, table: *const Limb, @@ -861,7 +492,6 @@ fn entry_mut(table: &mut [Limb], i: usize, num_limbs: usize) -> &mut [Limb] { &mut table[(i * num_limbs)..][..num_limbs] } - let num_limbs = m.limbs.len(); entry_mut(&mut table, 0, num_limbs).copy_from_slice(&tmp.limbs); entry_mut(&mut table, 1, num_limbs).copy_from_slice(&base.limbs); for i in 2..TABLE_ENTRIES { @@ -874,11 +504,11 @@ let src1 = entry(previous, src1, num_limbs); let src2 = entry(previous, src2, num_limbs); let dst = entry_mut(rest, 0, num_limbs); - limbs_mont_product(dst, src1, src2, &m.limbs, &m.n0); + limbs_mont_product(dst, src1, src2, m.limbs(), m.n0(), m.cpu_features()); } let (r, _) = limb::fold_5_bit_windows( - &exponent.limbs, + exponent.limbs(), |initial_window| { let mut r = Elem { limbs: base.limbs, @@ -895,35 +525,32 @@ Ok(r) } -/// Uses Fermat's Little Theorem to calculate modular inverse in constant time. -pub fn elem_inverse_consttime( - a: Elem, - m: &Modulus, -) -> Result, error::Unspecified> { - elem_exp_consttime(a, &PrivateExponent::for_flt(&m), m) -} - #[cfg(target_arch = "x86_64")] pub fn elem_exp_consttime( base: Elem, - exponent: &PrivateExponent, + exponent: &PrivateExponent, m: &Modulus, ) -> Result, error::Unspecified> { + use crate::limb::LIMB_BYTES; + + // Pretty much all the math here requires CPU feature detection to have + // been done. `cpu_features` isn't threaded through all the internal + // functions, so just make it clear that it has been done at this point. + let cpu_features = m.cpu_features(); + // The x86_64 assembly was written under the assumption that the input data - // is aligned to `MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH` bytes, which was/is - // 64 in OpenSSL. Similarly, OpenSSL uses the x86_64 assembly functions by - // giving it only inputs `tmp`, `am`, and `np` that immediately follow the - // table. The code seems to "work" even when the inputs aren't exactly - // like that but the side channel defenses might not be as effective. All - // the awkwardness here stems from trying to use the assembly code like - // OpenSSL does. + // is aligned to `MOD_EXP_CTIME_ALIGN` bytes, which was/is 64 in OpenSSL. + // Similarly, OpenSSL uses the x86_64 assembly functions by giving it only + // inputs `tmp`, `am`, and `np` that immediately follow the table. All the + // awkwardness here stems from trying to use the assembly code like OpenSSL + // does. use crate::limb::Window; const WINDOW_BITS: usize = 5; const TABLE_ENTRIES: usize = 1 << WINDOW_BITS; - let num_limbs = m.limbs.len(); + let num_limbs = m.limbs().len(); const ALIGNMENT: usize = 64; assert_eq!(ALIGNMENT % LIMB_BYTES, 0); @@ -947,14 +574,14 @@ const M: usize = BASE + 1; // `np` in OpenSSL entry_mut(state, BASE, num_limbs).copy_from_slice(&base.limbs); - entry_mut(state, M, num_limbs).copy_from_slice(&m.limbs); + entry_mut(state, M, num_limbs).copy_from_slice(m.limbs()); fn scatter(table: &mut [Limb], state: &[Limb], i: Window, num_limbs: usize) { - extern "C" { - fn GFp_bn_scatter5(a: *const Limb, a_len: c::size_t, table: *mut Limb, i: Window); + prefixed_extern! { + fn bn_scatter5(a: *const Limb, a_len: c::size_t, table: *mut Limb, i: Window); } unsafe { - GFp_bn_scatter5( + bn_scatter5( entry(state, ACC, num_limbs).as_ptr(), num_limbs, table.as_mut_ptr(), @@ -964,11 +591,11 @@ } fn gather(table: &[Limb], state: &mut [Limb], i: Window, num_limbs: usize) { - extern "C" { - fn GFp_bn_gather5(r: *mut Limb, a_len: c::size_t, table: *const Limb, i: Window); + prefixed_extern! { + fn bn_gather5(r: *mut Limb, a_len: c::size_t, table: *const Limb, i: Window); } unsafe { - GFp_bn_gather5( + bn_gather5( entry_mut(state, ACC, num_limbs).as_mut_ptr(), num_limbs, table.as_ptr(), @@ -977,17 +604,30 @@ } } - fn gather_square(table: &[Limb], state: &mut [Limb], n0: &N0, i: Window, num_limbs: usize) { + fn gather_square( + table: &[Limb], + state: &mut [Limb], + n0: &N0, + i: Window, + num_limbs: usize, + cpu_features: cpu::Features, + ) { gather(table, state, i, num_limbs); assert_eq!(ACC, 0); let (acc, rest) = state.split_at_mut(num_limbs); let m = entry(rest, M - 1, num_limbs); - limbs_mont_square(acc, m, n0); + limbs_mont_square(acc, m, n0, cpu_features); } - fn gather_mul_base(table: &[Limb], state: &mut [Limb], n0: &N0, i: Window, num_limbs: usize) { - extern "C" { - fn GFp_bn_mul_mont_gather5( + fn gather_mul_base_amm( + table: &[Limb], + state: &mut [Limb], + n0: &N0, + i: Window, + num_limbs: usize, + ) { + prefixed_extern! { + fn bn_mul_mont_gather5( rp: *mut Limb, ap: *const Limb, table: *const Limb, @@ -998,7 +638,7 @@ ); } unsafe { - GFp_bn_mul_mont_gather5( + bn_mul_mont_gather5( entry_mut(state, ACC, num_limbs).as_mut_ptr(), entry(state, BASE, num_limbs).as_ptr(), table.as_ptr(), @@ -1010,9 +650,9 @@ } } - fn power(table: &[Limb], state: &mut [Limb], n0: &N0, i: Window, num_limbs: usize) { - extern "C" { - fn GFp_bn_power5( + fn power_amm(table: &[Limb], state: &mut [Limb], n0: &N0, i: Window, num_limbs: usize) { + prefixed_extern! { + fn bn_power5( r: *mut Limb, a: *const Limb, table: *const Limb, @@ -1023,7 +663,7 @@ ); } unsafe { - GFp_bn_power5( + bn_power5( entry_mut(state, ACC, num_limbs).as_mut_ptr(), entry_mut(state, ACC, num_limbs).as_mut_ptr(), table.as_ptr(), @@ -1039,7 +679,7 @@ { let acc = entry_mut(state, ACC, num_limbs); acc[0] = 1; - limbs_mont_mul(acc, &m.oneRR.0.limbs, &m.limbs, &m.n0); + limbs_mont_mul(acc, &m.oneRR().0.limbs, m.limbs(), m.n0(), cpu_features); } scatter(table, state, 0, num_limbs); @@ -1050,51 +690,29 @@ for i in 2..(TABLE_ENTRIES as Window) { if i % 2 == 0 { // TODO: Optimize this to avoid gathering - gather_square(table, state, &m.n0, i / 2, num_limbs); + gather_square(table, state, m.n0(), i / 2, num_limbs, cpu_features); } else { - gather_mul_base(table, state, &m.n0, i - 1, num_limbs) + gather_mul_base_amm(table, state, m.n0(), i - 1, num_limbs) }; scatter(table, state, i, num_limbs); } let state = limb::fold_5_bit_windows( - &exponent.limbs, + exponent.limbs(), |initial_window| { gather(table, state, initial_window, num_limbs); state }, |state, window| { - power(table, state, &m.n0, window, num_limbs); + power_amm(table, state, m.n0(), window, num_limbs); state }, ); - extern "C" { - fn GFp_bn_from_montgomery( - r: *mut Limb, - a: *const Limb, - not_used: *const Limb, - n: *const Limb, - n0: &N0, - num: c::size_t, - ) -> bssl::Result; - } - Result::from(unsafe { - GFp_bn_from_montgomery( - entry_mut(state, ACC, num_limbs).as_mut_ptr(), - entry(state, ACC, num_limbs).as_ptr(), - core::ptr::null(), - entry(state, M, num_limbs).as_ptr(), - &m.n0, - num_limbs, - ) - })?; - let mut r = Elem { - limbs: base.limbs, - encoding: PhantomData, - }; - r.limbs.copy_from_slice(entry(state, ACC, num_limbs)); - Ok(r) + let mut r_amm = base.limbs; + r_amm.copy_from_slice(entry(state, ACC, num_limbs)); + + Ok(from_montgomery_amm(r_amm, m)) } /// Verified a == b**-1 (mod m), i.e. a**-1 == b (mod m). @@ -1122,50 +740,21 @@ } } -/// Nonnegative integers. -pub struct Nonnegative { - limbs: Vec, -} - +// TODO: Move these methods from `Nonnegative` to `Modulus`. impl Nonnegative { - pub fn from_be_bytes_with_bit_length( - input: untrusted::Input, - ) -> Result<(Self, bits::BitLength), error::Unspecified> { - let mut limbs = vec![0; (input.len() + LIMB_BYTES - 1) / LIMB_BYTES]; - // Rejects empty inputs. - limb::parse_big_endian_and_pad_consttime(input, &mut limbs)?; - while limbs.last() == Some(&0) { - let _ = limbs.pop(); - } - let r_bits = limb::limbs_minimal_bits(&limbs); - Ok((Self { limbs }, r_bits)) - } - - #[inline] - pub fn is_odd(&self) -> bool { - limb::limbs_are_even_constant_time(&self.limbs) != LimbMask::True - } - - pub fn verify_less_than(&self, other: &Self) -> Result<(), error::Unspecified> { - if !greater_than(other, self) { - return Err(error::Unspecified); - } - Ok(()) - } - pub fn to_elem(&self, m: &Modulus) -> Result, error::Unspecified> { - self.verify_less_than_modulus(&m)?; + self.verify_less_than_modulus(m)?; let mut r = m.zero(); - r.limbs[0..self.limbs.len()].copy_from_slice(&self.limbs); + r.limbs[0..self.limbs().len()].copy_from_slice(self.limbs()); Ok(r) } pub fn verify_less_than_modulus(&self, m: &Modulus) -> Result<(), error::Unspecified> { - if self.limbs.len() > m.limbs.len() { + if self.limbs().len() > m.limbs().len() { return Err(error::Unspecified); } - if self.limbs.len() == m.limbs.len() { - if limb::limbs_less_than_limbs_consttime(&self.limbs, &m.limbs) != LimbMask::True { + if self.limbs().len() == m.limbs().len() { + if limb::limbs_less_than_limbs_consttime(self.limbs(), m.limbs()) != LimbMask::True { return Err(error::Unspecified); } } @@ -1173,49 +762,12 @@ } } -// Returns a > b. -fn greater_than(a: &Nonnegative, b: &Nonnegative) -> bool { - if a.limbs.len() == b.limbs.len() { - limb::limbs_less_than_limbs_vartime(&b.limbs, &a.limbs) - } else { - a.limbs.len() > b.limbs.len() - } -} - -#[derive(Clone)] -#[repr(transparent)] -struct N0([Limb; 2]); - -const N0_LIMBS_USED: usize = 64 / LIMB_BITS; - -impl From for N0 { - #[inline] - fn from(n0: u64) -> Self { - #[cfg(target_pointer_width = "64")] - { - Self([n0, 0]) - } - - #[cfg(target_pointer_width = "32")] - { - Self([n0 as Limb, (n0 >> LIMB_BITS) as Limb]) - } - } -} - /// r *= a -fn limbs_mont_mul(r: &mut [Limb], a: &[Limb], m: &[Limb], n0: &N0) { +fn limbs_mont_mul(r: &mut [Limb], a: &[Limb], m: &[Limb], n0: &N0, _cpu_features: cpu::Features) { debug_assert_eq!(r.len(), m.len()); debug_assert_eq!(a.len(), m.len()); - - #[cfg(any( - target_arch = "aarch64", - target_arch = "arm", - target_arch = "x86_64", - target_arch = "x86" - ))] unsafe { - GFp_bn_mul_mont( + bn_mul_mont( r.as_mut_ptr(), r.as_ptr(), a.as_ptr(), @@ -1224,86 +776,24 @@ r.len(), ) } - - #[cfg(not(any( - target_arch = "aarch64", - target_arch = "arm", - target_arch = "x86_64", - target_arch = "x86" - )))] - { - let mut tmp = [0; 2 * MODULUS_MAX_LIMBS]; - let tmp = &mut tmp[..(2 * a.len())]; - limbs_mul(tmp, r, a); - limbs_from_mont_in_place(r, tmp, m, n0); - } -} - -fn limbs_from_mont_in_place(r: &mut [Limb], tmp: &mut [Limb], m: &[Limb], n0: &N0) { - extern "C" { - fn GFp_bn_from_montgomery_in_place( - r: *mut Limb, - num_r: c::size_t, - a: *mut Limb, - num_a: c::size_t, - n: *const Limb, - num_n: c::size_t, - n0: &N0, - ) -> bssl::Result; - } - Result::from(unsafe { - GFp_bn_from_montgomery_in_place( - r.as_mut_ptr(), - r.len(), - tmp.as_mut_ptr(), - tmp.len(), - m.as_ptr(), - m.len(), - &n0, - ) - }) - .unwrap() -} - -#[cfg(not(any( - target_arch = "aarch64", - target_arch = "arm", - target_arch = "x86_64", - target_arch = "x86" -)))] -fn limbs_mul(r: &mut [Limb], a: &[Limb], b: &[Limb]) { - debug_assert_eq!(r.len(), 2 * a.len()); - debug_assert_eq!(a.len(), b.len()); - let ab_len = a.len(); - - crate::polyfill::slice::fill(&mut r[..ab_len], 0); - for (i, &b_limb) in b.iter().enumerate() { - r[ab_len + i] = unsafe { - GFp_limbs_mul_add_limb( - (&mut r[i..][..ab_len]).as_mut_ptr(), - a.as_ptr(), - b_limb, - ab_len, - ) - }; - } } /// r = a * b #[cfg(not(target_arch = "x86_64"))] -fn limbs_mont_product(r: &mut [Limb], a: &[Limb], b: &[Limb], m: &[Limb], n0: &N0) { +fn limbs_mont_product( + r: &mut [Limb], + a: &[Limb], + b: &[Limb], + m: &[Limb], + n0: &N0, + _cpu_features: cpu::Features, +) { debug_assert_eq!(r.len(), m.len()); debug_assert_eq!(a.len(), m.len()); debug_assert_eq!(b.len(), m.len()); - #[cfg(any( - target_arch = "aarch64", - target_arch = "arm", - target_arch = "x86_64", - target_arch = "x86" - ))] unsafe { - GFp_bn_mul_mont( + bn_mul_mont( r.as_mut_ptr(), a.as_ptr(), b.as_ptr(), @@ -1312,32 +802,13 @@ r.len(), ) } - - #[cfg(not(any( - target_arch = "aarch64", - target_arch = "arm", - target_arch = "x86_64", - target_arch = "x86" - )))] - { - let mut tmp = [0; 2 * MODULUS_MAX_LIMBS]; - let tmp = &mut tmp[..(2 * a.len())]; - limbs_mul(tmp, a, b); - limbs_from_mont_in_place(r, tmp, m, n0) - } } /// r = r**2 -fn limbs_mont_square(r: &mut [Limb], m: &[Limb], n0: &N0) { +fn limbs_mont_square(r: &mut [Limb], m: &[Limb], n0: &N0, _cpu_features: cpu::Features) { debug_assert_eq!(r.len(), m.len()); - #[cfg(any( - target_arch = "aarch64", - target_arch = "arm", - target_arch = "x86_64", - target_arch = "x86" - ))] unsafe { - GFp_bn_mul_mont( + bn_mul_mont( r.as_mut_ptr(), r.as_ptr(), r.as_ptr(), @@ -1346,30 +817,11 @@ r.len(), ) } - - #[cfg(not(any( - target_arch = "aarch64", - target_arch = "arm", - target_arch = "x86_64", - target_arch = "x86" - )))] - { - let mut tmp = [0; 2 * MODULUS_MAX_LIMBS]; - let tmp = &mut tmp[..(2 * r.len())]; - limbs_mul(tmp, r, r); - limbs_from_mont_in_place(r, tmp, m, n0) - } } -extern "C" { - #[cfg(any( - target_arch = "aarch64", - target_arch = "arm", - target_arch = "x86_64", - target_arch = "x86" - ))] +prefixed_extern! { // `r` and/or 'a' and/or 'b' may alias. - fn GFp_bn_mul_mont( + fn bn_mul_mont( r: *mut Limb, a: *const Limb, b: *const Limb, @@ -1377,45 +829,33 @@ n0: &N0, num_limbs: c::size_t, ); - - // `r` must not alias `a` - #[cfg(any( - test, - not(any( - target_arch = "aarch64", - target_arch = "arm", - target_arch = "x86_64", - target_arch = "x86" - )) - ))] - #[must_use] - fn GFp_limbs_mul_add_limb(r: *mut Limb, a: *const Limb, b: Limb, num_limbs: c::size_t) -> Limb; } #[cfg(test)] mod tests { - use super::*; - use crate::test; + use super::{modulus::MODULUS_MIN_LIMBS, *}; + use crate::{limb::LIMB_BYTES, test}; use alloc::format; // Type-level representation of an arbitrary modulus. struct M {} - unsafe impl PublicModulus for M {} + impl PublicModulus for M {} #[test] fn test_elem_exp_consttime() { + let cpu_features = cpu::features(); test::run( - test_file!("bigint_elem_exp_consttime_tests.txt"), + test_file!("../../crypto/fipsmodule/bn/test/mod_exp_tests.txt"), |section, test_case| { assert_eq!(section, ""); - let m = consume_modulus::(test_case, "M"); + let m = consume_modulus::(test_case, "M", cpu_features); let expected_result = consume_elem(test_case, "ModExp", &m); let base = consume_elem(test_case, "A", &m); let e = { let bytes = test_case.consume_bytes("E"); - PrivateExponent::from_be_bytes_padded(untrusted::Input::from(&bytes), &m) + PrivateExponent::from_be_bytes_for_test_only(untrusted::Input::from(&bytes), &m) .expect("valid exponent") }; let base = into_encoded(base, &m); @@ -1433,12 +873,13 @@ // verification and signing tests. #[test] fn test_elem_mul() { + let cpu_features = cpu::features(); test::run( - test_file!("bigint_elem_mul_tests.txt"), + test_file!("../../crypto/fipsmodule/bn/test/mod_mul_tests.txt"), |section, test_case| { assert_eq!(section, ""); - let m = consume_modulus::(test_case, "M"); + let m = consume_modulus::(test_case, "M", cpu_features); let expected_result = consume_elem(test_case, "ModMul", &m); let a = consume_elem(test_case, "A", &m); let b = consume_elem(test_case, "B", &m); @@ -1456,12 +897,13 @@ #[test] fn test_elem_squared() { + let cpu_features = cpu::features(); test::run( test_file!("bigint_elem_squared_tests.txt"), |section, test_case| { assert_eq!(section, ""); - let m = consume_modulus::(test_case, "M"); + let m = consume_modulus::(test_case, "M", cpu_features); let expected_result = consume_elem(test_case, "ModSquare", &m); let a = consume_elem(test_case, "A", &m); @@ -1477,6 +919,7 @@ #[test] fn test_elem_reduced() { + let cpu_features = cpu::features(); test::run( test_file!("bigint_elem_reduced_tests.txt"), |section, test_case| { @@ -1486,7 +929,7 @@ unsafe impl SmallerModulus for M {} unsafe impl NotMuchSmallerModulus for M {} - let m = consume_modulus::(test_case, "M"); + let m = consume_modulus::(test_case, "M", cpu_features); let expected_result = consume_elem(test_case, "R", &m); let a = consume_elem_unchecked::(test_case, "A", expected_result.limbs.len() * 2); @@ -1503,6 +946,7 @@ #[test] fn test_elem_reduced_once() { + let cpu_features = cpu::features(); test::run( test_file!("bigint_elem_reduced_once_tests.txt"), |section, test_case| { @@ -1513,9 +957,9 @@ unsafe impl SmallerModulus for QQ {} unsafe impl SlightlySmallerModulus for QQ {} - let qq = consume_modulus::(test_case, "QQ"); + let qq = consume_modulus::(test_case, "QQ", cpu_features); let expected_result = consume_elem::(test_case, "R", &qq); - let n = consume_modulus::(test_case, "N"); + let n = consume_modulus::(test_case, "N", cpu_features); let a = consume_elem::(test_case, "A", &n); let actual_result = elem_reduced_once(&a, &qq); @@ -1528,21 +972,14 @@ #[test] fn test_modulus_debug() { - let (modulus, _) = Modulus::::from_be_bytes_with_bit_length(untrusted::Input::from( - &[0xff; LIMB_BYTES * MODULUS_MIN_LIMBS], - )) + let (modulus, _) = Modulus::::from_be_bytes_with_bit_length( + untrusted::Input::from(&[0xff; LIMB_BYTES * MODULUS_MIN_LIMBS]), + cpu::features(), + ) .unwrap(); assert_eq!("Modulus", format!("{:?}", modulus)); } - #[test] - fn test_public_exponent_debug() { - let exponent = - PublicExponent::from_be_bytes(untrusted::Input::from(&[0x1, 0x00, 0x01]), 65537) - .unwrap(); - assert_eq!("PublicExponent(65537)", format!("{:?}", exponent)); - } - fn consume_elem( test_case: &mut test::TestCase, name: &str, @@ -1562,17 +999,22 @@ num_limbs, m: PhantomData, }); - limbs[0..value.limbs.len()].copy_from_slice(&value.limbs); + limbs[0..value.limbs().len()].copy_from_slice(value.limbs()); Elem { limbs, encoding: PhantomData, } } - fn consume_modulus(test_case: &mut test::TestCase, name: &str) -> Modulus { + fn consume_modulus( + test_case: &mut test::TestCase, + name: &str, + cpu_features: cpu::Features, + ) -> Modulus { let value = test_case.consume_bytes(name); let (value, _) = - Modulus::from_be_bytes_with_bit_length(untrusted::Input::from(&value)).unwrap(); + Modulus::from_be_bytes_with_bit_length(untrusted::Input::from(&value), cpu_features) + .unwrap(); value } @@ -1584,7 +1026,7 @@ } fn assert_elem_eq(a: &Elem, b: &Elem) { - if elem_verify_equal_consttime(&a, b).is_err() { + if elem_verify_equal_consttime(a, b).is_err() { panic!("{:x?} != {:x?}", &*a.limbs, &*b.limbs); } } @@ -1592,36 +1034,4 @@ fn into_encoded(a: Elem, m: &Modulus) -> Elem { elem_mul(m.oneRR().as_ref(), a, m) } - - #[test] - // TODO: wasm - fn test_mul_add_words() { - const ZERO: Limb = 0; - const MAX: Limb = ZERO.wrapping_sub(1); - static TEST_CASES: &[(&[Limb], &[Limb], Limb, Limb, &[Limb])] = &[ - (&[0], &[0], 0, 0, &[0]), - (&[MAX], &[0], MAX, 0, &[MAX]), - (&[0], &[MAX], MAX, MAX - 1, &[1]), - (&[MAX], &[MAX], MAX, MAX, &[0]), - (&[0, 0], &[MAX, MAX], MAX, MAX - 1, &[1, MAX]), - (&[1, 0], &[MAX, MAX], MAX, MAX - 1, &[2, MAX]), - (&[MAX, 0], &[MAX, MAX], MAX, MAX, &[0, 0]), - (&[0, 1], &[MAX, MAX], MAX, MAX, &[1, 0]), - (&[MAX, MAX], &[MAX, MAX], MAX, MAX, &[0, MAX]), - ]; - - for (i, (r_input, a, w, expected_retval, expected_r)) in TEST_CASES.iter().enumerate() { - extern crate std; - let mut r = std::vec::Vec::from(*r_input); - assert_eq!(r.len(), a.len()); // Sanity check - let actual_retval = - unsafe { GFp_limbs_mul_add_limb(r.as_mut_ptr(), a.as_ptr(), *w, a.len()) }; - assert_eq!(&r, expected_r, "{}: {:x?} != {:x?}", i, &r[..], expected_r); - assert_eq!( - actual_retval, *expected_retval, - "{}: {:x?} != {:x?}", - i, actual_retval, *expected_retval - ); - } - } } diff -Nru temporalio-1.3.0/vendor/ring/src/arithmetic/montgomery.rs temporalio-1.3.0/vendor/ring/src/arithmetic/montgomery.rs --- temporalio-1.3.0/vendor/ring/src/arithmetic/montgomery.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/arithmetic/montgomery.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -// Copyright 2017 Brian Smith. +// Copyright 2017-2023 Brian Smith. // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above @@ -86,3 +86,161 @@ impl ProductEncoding for (RR, RInverse) { type Output = <(RInverse, RR) as ProductEncoding>::Output; } + +#[allow(unused_imports)] +use { + super::n0::N0, + crate::{bssl, c, limb::Limb}, +}; + +#[cfg(not(any( + target_arch = "aarch64", + target_arch = "arm", + target_arch = "x86", + target_arch = "x86_64" +)))] +prefixed_export! { + unsafe fn bn_mul_mont( + r: *mut Limb, + a: *const Limb, + b: *const Limb, + n: *const Limb, + n0: &N0, + num_limbs: c::size_t, + ) { + // The mutable pointer `r` may alias `a` and/or `b`, so the lifetimes of + // any slices for `a` or `b` must not overlap with the lifetime of any + // mutable for `r`. + + // Nothing aliases `n` + let n = unsafe { core::slice::from_raw_parts(n, num_limbs) }; + + let mut tmp = [0; 2 * super::BIGINT_MODULUS_MAX_LIMBS]; + let tmp = &mut tmp[..(2 * num_limbs)]; + { + let a: &[Limb] = unsafe { core::slice::from_raw_parts(a, num_limbs) }; + let b: &[Limb] = unsafe { core::slice::from_raw_parts(b, num_limbs) }; + limbs_mul(tmp, a, b); + } + let r: &mut [Limb] = unsafe { core::slice::from_raw_parts_mut(r, num_limbs) }; + limbs_from_mont_in_place(r, tmp, n, n0); + } +} + +// `bigint` needs then when the `alloc` feature is enabled. `bn_mul_mont` above needs this when +// we are using the platforms for which we don't have `bn_mul_mont` in assembly. +#[cfg(any( + feature = "alloc", + not(any( + target_arch = "aarch64", + target_arch = "arm", + target_arch = "x86", + target_arch = "x86_64" + )) +))] +pub(super) fn limbs_from_mont_in_place(r: &mut [Limb], tmp: &mut [Limb], m: &[Limb], n0: &N0) { + prefixed_extern! { + fn bn_from_montgomery_in_place( + r: *mut Limb, + num_r: c::size_t, + a: *mut Limb, + num_a: c::size_t, + n: *const Limb, + num_n: c::size_t, + n0: &N0, + ) -> bssl::Result; + } + Result::from(unsafe { + bn_from_montgomery_in_place( + r.as_mut_ptr(), + r.len(), + tmp.as_mut_ptr(), + tmp.len(), + m.as_ptr(), + m.len(), + n0, + ) + }) + .unwrap() +} + +#[cfg(not(any( + target_arch = "aarch64", + target_arch = "arm", + target_arch = "x86", + target_arch = "x86_64" +)))] +fn limbs_mul(r: &mut [Limb], a: &[Limb], b: &[Limb]) { + debug_assert_eq!(r.len(), 2 * a.len()); + debug_assert_eq!(a.len(), b.len()); + let ab_len = a.len(); + + r[..ab_len].fill(0); + for (i, &b_limb) in b.iter().enumerate() { + r[ab_len + i] = unsafe { + limbs_mul_add_limb( + (&mut r[i..][..ab_len]).as_mut_ptr(), + a.as_ptr(), + b_limb, + ab_len, + ) + }; + } +} + +#[cfg(any( + test, + not(any( + target_arch = "aarch64", + target_arch = "arm", + target_arch = "x86_64", + target_arch = "x86" + )) +))] +prefixed_extern! { + // `r` must not alias `a` + #[must_use] + fn limbs_mul_add_limb(r: *mut Limb, a: *const Limb, b: Limb, num_limbs: c::size_t) -> Limb; +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::limb::Limb; + + #[test] + // TODO: wasm + fn test_mul_add_words() { + const ZERO: Limb = 0; + const MAX: Limb = ZERO.wrapping_sub(1); + static TEST_CASES: &[(&[Limb], &[Limb], Limb, Limb, &[Limb])] = &[ + (&[0], &[0], 0, 0, &[0]), + (&[MAX], &[0], MAX, 0, &[MAX]), + (&[0], &[MAX], MAX, MAX - 1, &[1]), + (&[MAX], &[MAX], MAX, MAX, &[0]), + (&[0, 0], &[MAX, MAX], MAX, MAX - 1, &[1, MAX]), + (&[1, 0], &[MAX, MAX], MAX, MAX - 1, &[2, MAX]), + (&[MAX, 0], &[MAX, MAX], MAX, MAX, &[0, 0]), + (&[0, 1], &[MAX, MAX], MAX, MAX, &[1, 0]), + (&[MAX, MAX], &[MAX, MAX], MAX, MAX, &[0, MAX]), + ]; + + for (i, (r_input, a, w, expected_retval, expected_r)) in TEST_CASES.iter().enumerate() { + let mut r = [0; super::super::BIGINT_MODULUS_MAX_LIMBS]; + let r = { + let r = &mut r[..r_input.len()]; + r.copy_from_slice(r_input); + r + }; + assert_eq!(r.len(), a.len()); // Sanity check + let actual_retval = + unsafe { limbs_mul_add_limb(r.as_mut_ptr(), a.as_ptr(), *w, a.len()) }; + assert_eq!(&r, expected_r, "{}: {:x?} != {:x?}", i, r, expected_r); + assert_eq!( + actual_retval, *expected_retval, + "{}: {:x?} != {:x?}", + i, actual_retval, *expected_retval + ); + } + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/arithmetic/n0.rs temporalio-1.3.0/vendor/ring/src/arithmetic/n0.rs --- temporalio-1.3.0/vendor/ring/src/arithmetic/n0.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/arithmetic/n0.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,39 @@ +// Copyright 2015-2022 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +use crate::limb::Limb; + +#[derive(Clone)] +#[repr(transparent)] +pub(in super::super) struct N0([Limb; 2]); + +impl N0 { + #[cfg(feature = "alloc")] + pub(super) const LIMBS_USED: usize = 64 / crate::limb::LIMB_BITS; +} + +impl From for N0 { + #[inline] + fn from(n0: u64) -> Self { + #[cfg(target_pointer_width = "64")] + { + Self([n0, 0]) + } + + #[cfg(target_pointer_width = "32")] + { + Self([n0 as Limb, (n0 >> crate::limb::LIMB_BITS) as Limb]) + } + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/arithmetic/nonnegative.rs temporalio-1.3.0/vendor/ring/src/arithmetic/nonnegative.rs --- temporalio-1.3.0/vendor/ring/src/arithmetic/nonnegative.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/arithmetic/nonnegative.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,70 @@ +// Copyright 2015-2023 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +use crate::{ + bits, error, + limb::{self, Limb, LimbMask, LIMB_BYTES}, +}; +use alloc::{boxed::Box, vec, vec::Vec}; + +/// Nonnegative integers. +pub(crate) struct Nonnegative { + limbs: Vec, +} + +impl Nonnegative { + pub fn from_be_bytes_with_bit_length( + input: untrusted::Input, + ) -> Result<(Self, bits::BitLength), error::Unspecified> { + let mut limbs = vec![0; (input.len() + LIMB_BYTES - 1) / LIMB_BYTES]; + // Rejects empty inputs. + limb::parse_big_endian_and_pad_consttime(input, &mut limbs)?; + while limbs.last() == Some(&0) { + let _ = limbs.pop(); + } + let r_bits = limb::limbs_minimal_bits(&limbs); + Ok((Self { limbs }, r_bits)) + } + + #[inline] + pub fn is_odd(&self) -> bool { + limb::limbs_are_even_constant_time(&self.limbs) != LimbMask::True + } + + pub fn verify_less_than(&self, other: &Self) -> Result<(), error::Unspecified> { + if !greater_than(other, self) { + return Err(error::Unspecified); + } + Ok(()) + } + + #[inline] + pub fn limbs(&self) -> &[Limb] { + &self.limbs + } + + #[inline] + pub fn into_limbs(self) -> Box<[Limb]> { + self.limbs.into_boxed_slice() + } +} + +// Returns a > b. +fn greater_than(a: &Nonnegative, b: &Nonnegative) -> bool { + if a.limbs.len() == b.limbs.len() { + limb::limbs_less_than_limbs_vartime(&b.limbs, &a.limbs) + } else { + a.limbs.len() > b.limbs.len() + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/arithmetic.rs temporalio-1.3.0/vendor/ring/src/arithmetic.rs --- temporalio-1.3.0/vendor/ring/src/arithmetic.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/arithmetic.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -// Copyright 2017 Brian Smith. +// Copyright 2017-2023 Brian Smith. // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above @@ -19,3 +19,10 @@ pub mod bigint; pub mod montgomery; +mod n0; + +#[cfg(feature = "alloc")] +mod nonnegative; + +#[allow(dead_code)] +const BIGINT_MODULUS_MAX_LIMBS: usize = 8192 / crate::limb::LIMB_BITS; diff -Nru temporalio-1.3.0/vendor/ring/src/bits.rs temporalio-1.3.0/vendor/ring/src/bits.rs --- temporalio-1.3.0/vendor/ring/src/bits.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/bits.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,19 +12,28 @@ // OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +//! Bit lengths. + use crate::error; +/// The length of something, in bits. +/// +/// This can represent a bit length that isn't a whole number of bytes. #[derive(Clone, Copy, Debug, Eq, PartialEq, PartialOrd)] pub struct BitLength(usize); // Lengths measured in bits, where all arithmetic is guaranteed not to // overflow. impl BitLength { + /// Constructs a `BitLength` from the given length in bits. #[inline] pub const fn from_usize_bits(bits: usize) -> Self { Self(bits) } + /// Constructs a `BitLength` from the given length in bytes. + /// + /// Fails if `bytes * 8` is too large for a `usize`. #[inline] pub fn from_usize_bytes(bytes: usize) -> Result { let bits = bytes.checked_mul(8).ok_or(error::Unspecified)?; @@ -33,16 +42,18 @@ #[cfg(feature = "alloc")] #[inline] - pub fn half_rounded_up(&self) -> Self { + pub(crate) fn half_rounded_up(&self) -> Self { let round_up = self.0 & 1; Self((self.0 / 2) + round_up) } + /// The number of bits this bit length represents, as a `usize`. #[inline] pub fn as_usize_bits(&self) -> usize { self.0 } + /// The bit length, rounded up to a whole number of bytes. #[cfg(feature = "alloc")] #[inline] pub fn as_usize_bytes_rounded_up(&self) -> usize { @@ -57,8 +68,8 @@ #[cfg(feature = "alloc")] #[inline] - pub fn try_sub_1(self) -> Result { + pub(crate) fn try_sub_1(self) -> Result { let sum = self.0.checked_sub(1).ok_or(error::Unspecified)?; - Ok(BitLength(sum)) + Ok(Self(sum)) } } diff -Nru temporalio-1.3.0/vendor/ring/src/constant_time.rs temporalio-1.3.0/vendor/ring/src/constant_time.rs --- temporalio-1.3.0/vendor/ring/src/constant_time.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/constant_time.rs 2023-10-30 19:40:00.000000000 +0000 @@ -24,26 +24,96 @@ if a.len() != b.len() { return Err(error::Unspecified); } - let result = unsafe { GFp_memcmp(a.as_ptr(), b.as_ptr(), a.len()) }; + let result = unsafe { CRYPTO_memcmp(a.as_ptr(), b.as_ptr(), a.len()) }; match result { 0 => Ok(()), _ => Err(error::Unspecified), } } -extern "C" { - fn GFp_memcmp(a: *const u8, b: *const u8, len: c::size_t) -> c::int; +prefixed_extern! { + fn CRYPTO_memcmp(a: *const u8, b: *const u8, len: c::size_t) -> c::int; } #[cfg(test)] mod tests { - use crate::{bssl, error}; + use crate::limb::LimbMask; + use crate::{bssl, error, rand}; #[test] fn test_constant_time() -> Result<(), error::Unspecified> { - extern "C" { + prefixed_extern! { fn bssl_constant_time_test_main() -> bssl::Result; } Result::from(unsafe { bssl_constant_time_test_main() }) } + + #[test] + fn constant_time_conditional_memcpy() -> Result<(), error::Unspecified> { + let rng = rand::SystemRandom::new(); + for _ in 0..100 { + let mut out = rand::generate::<[u8; 256]>(&rng)?.expose(); + let input = rand::generate::<[u8; 256]>(&rng)?.expose(); + + // Mask to 16 bits to make zero more likely than it would otherwise be. + let b = (rand::generate::<[u8; 1]>(&rng)?.expose()[0] & 0x0f) == 0; + + let ref_in = input; + let ref_out = if b { input } else { out }; + + prefixed_extern! { + fn bssl_constant_time_test_conditional_memcpy(dst: &mut [u8; 256], src: &[u8; 256], b: LimbMask); + } + unsafe { + bssl_constant_time_test_conditional_memcpy( + &mut out, + &input, + if b { LimbMask::True } else { LimbMask::False }, + ) + } + assert_eq!(ref_in, input); + assert_eq!(ref_out, out); + } + + Ok(()) + } + + #[test] + fn constant_time_conditional_memxor() -> Result<(), error::Unspecified> { + let rng = rand::SystemRandom::new(); + for _ in 0..256 { + let mut out = rand::generate::<[u8; 256]>(&rng)?.expose(); + let input = rand::generate::<[u8; 256]>(&rng)?.expose(); + + // Mask to 16 bits to make zero more likely than it would otherwise be. + let b = (rand::generate::<[u8; 1]>(&rng)?.expose()[0] & 0x0f) != 0; + + let ref_in = input; + let mut ref_out = out; + if b { + ref_out + .iter_mut() + .zip(ref_in.iter()) + .for_each(|(out, input)| { + *out ^= input; + }); + } + + prefixed_extern! { + fn bssl_constant_time_test_conditional_memxor(dst: &mut [u8; 256], src: &[u8; 256], b: LimbMask); + } + unsafe { + bssl_constant_time_test_conditional_memxor( + &mut out, + &input, + if b { LimbMask::True } else { LimbMask::False }, + ); + } + + assert_eq!(ref_in, input); + assert_eq!(ref_out, out); + } + + Ok(()) + } } diff -Nru temporalio-1.3.0/vendor/ring/src/cpu/arm.rs temporalio-1.3.0/vendor/ring/src/cpu/arm.rs --- temporalio-1.3.0/vendor/ring/src/cpu/arm.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/cpu/arm.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,351 @@ +// Copyright 2016-2021 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +#![cfg_attr( + not(any(target_arch = "aarch64", target_arch = "arm")), + allow(dead_code) +)] + +#[cfg(all( + any(target_os = "android", target_os = "linux"), + any(target_arch = "aarch64", target_arch = "arm") +))] +fn detect_features() -> u32 { + use libc::c_ulong; + + // XXX: The `libc` crate doesn't provide `libc::getauxval` consistently + // across all Android/Linux targets, e.g. musl. + extern "C" { + fn getauxval(type_: c_ulong) -> c_ulong; + } + + const AT_HWCAP: c_ulong = 16; + + #[cfg(target_arch = "aarch64")] + const HWCAP_NEON: c_ulong = 1 << 1; + + #[cfg(target_arch = "arm")] + const HWCAP_NEON: c_ulong = 1 << 12; + + let caps = unsafe { getauxval(AT_HWCAP) }; + + // We assume NEON is available on AARCH64 because it is a required + // feature. + #[cfg(target_arch = "aarch64")] + debug_assert!(caps & HWCAP_NEON == HWCAP_NEON); + + let mut features = 0; + + // OpenSSL and BoringSSL don't enable any other features if NEON isn't + // available. + if caps & HWCAP_NEON == HWCAP_NEON { + features = NEON.mask; + + #[cfg(target_arch = "aarch64")] + const OFFSET: c_ulong = 3; + + #[cfg(target_arch = "arm")] + const OFFSET: c_ulong = 0; + + #[cfg(target_arch = "arm")] + let caps = { + const AT_HWCAP2: c_ulong = 26; + unsafe { getauxval(AT_HWCAP2) } + }; + + const HWCAP_AES: c_ulong = 1 << 0 + OFFSET; + const HWCAP_PMULL: c_ulong = 1 << 1 + OFFSET; + const HWCAP_SHA2: c_ulong = 1 << 3 + OFFSET; + + if caps & HWCAP_AES == HWCAP_AES { + features |= AES.mask; + } + if caps & HWCAP_PMULL == HWCAP_PMULL { + features |= PMULL.mask; + } + if caps & HWCAP_SHA2 == HWCAP_SHA2 { + features |= SHA256.mask; + } + } + + features +} + +#[cfg(all(target_os = "fuchsia", target_arch = "aarch64"))] +fn detect_features() -> u32 { + type zx_status_t = i32; + + #[link(name = "zircon")] + extern "C" { + fn zx_system_get_features(kind: u32, features: *mut u32) -> zx_status_t; + } + + const ZX_OK: i32 = 0; + const ZX_FEATURE_KIND_CPU: u32 = 0; + const ZX_ARM64_FEATURE_ISA_ASIMD: u32 = 1 << 2; + const ZX_ARM64_FEATURE_ISA_AES: u32 = 1 << 3; + const ZX_ARM64_FEATURE_ISA_PMULL: u32 = 1 << 4; + const ZX_ARM64_FEATURE_ISA_SHA2: u32 = 1 << 6; + + let mut caps = 0; + let rc = unsafe { zx_system_get_features(ZX_FEATURE_KIND_CPU, &mut caps) }; + + let mut features = 0; + + // OpenSSL and BoringSSL don't enable any other features if NEON isn't + // available. + if rc == ZX_OK && (caps & ZX_ARM64_FEATURE_ISA_ASIMD == ZX_ARM64_FEATURE_ISA_ASIMD) { + features = NEON.mask; + + if caps & ZX_ARM64_FEATURE_ISA_AES == ZX_ARM64_FEATURE_ISA_AES { + features |= AES.mask; + } + if caps & ZX_ARM64_FEATURE_ISA_PMULL == ZX_ARM64_FEATURE_ISA_PMULL { + features |= PMULL.mask; + } + if caps & ZX_ARM64_FEATURE_ISA_SHA2 == ZX_ARM64_FEATURE_ISA_SHA2 { + features |= 1 << 4; + } + } + + features +} + +#[cfg(all(target_os = "windows", target_arch = "aarch64"))] +fn detect_features() -> u32 { + // We do not need to check for the presence of NEON, as Armv8-A always has it + const _ASSERT_NEON_DETECTED: () = assert!((ARMCAP_STATIC & NEON.mask) == NEON.mask); + let mut features = ARMCAP_STATIC; + + let result = unsafe { + windows_sys::Win32::System::Threading::IsProcessorFeaturePresent( + windows_sys::Win32::System::Threading::PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE, + ) + }; + + if result != 0 { + // These are all covered by one call in Windows + features |= AES.mask; + features |= PMULL.mask; + features |= SHA256.mask; + } + + features +} + +macro_rules! features { + { + $( + $target_feature_name:expr => $name:ident { + mask: $mask:expr, + } + ),+ + , // trailing comma is required. + } => { + $( + #[allow(dead_code)] + pub(crate) const $name: Feature = Feature { + mask: $mask, + }; + )+ + + const ARMCAP_STATIC: u32 = 0 + $( + | ( + if cfg!(all(any(target_arch = "aarch64", target_arch = "arm"), + target_feature = $target_feature_name)) { + $name.mask + } else { + 0 + } + ) + )+; + + #[cfg(all(test, any(target_arch = "arm", target_arch = "aarch64")))] + const ALL_FEATURES: [Feature; 4] = [ + $( + $name + ),+ + ]; + } +} + +pub(crate) struct Feature { + mask: u32, +} + +impl Feature { + #[inline(always)] + pub fn available(&self, _: super::Features) -> bool { + if self.mask == self.mask & ARMCAP_STATIC { + return true; + } + + #[cfg(all( + any( + target_os = "android", + target_os = "fuchsia", + target_os = "linux", + target_os = "windows" + ), + any(target_arch = "arm", target_arch = "aarch64") + ))] + { + // SAFETY: See `OPENSSL_armcap_P`'s safety documentation. + if self.mask == self.mask & unsafe { OPENSSL_armcap_P } { + return true; + } + } + + false + } +} + +// Assumes all target feature names are the same for ARM and AAarch64. +features! { + // Keep in sync with `ARMV7_NEON`. + "neon" => NEON { + mask: 1 << 0, + }, + + // Keep in sync with `ARMV8_AES`. + "aes" => AES { + mask: 1 << 2, + }, + + // Keep in sync with `ARMV8_SHA256`. + "sha2" => SHA256 { + mask: 1 << 4, + }, + + // Keep in sync with `ARMV8_PMULL`. + // + // TODO(MSRV): There is no "pmull" feature listed from + // `rustc --print cfg --target=aarch64-apple-darwin`. Originally ARMv8 tied + // PMULL detection into AES detection, but later versions split it; see + // https://developer.arm.com/downloads/-/exploration-tools/feature-names-for-a-profile + // "Features introduced prior to 2020." Change this to use "pmull" when + // that is supported. + "aes" => PMULL { + mask: 1 << 5, + }, +} + +// SAFETY: +// - This may only be called from within `cpu::features()` and only while it is initializing its +// `INIT`. +// - See the safety invariants of `OPENSSL_armcap_P` below. +#[cfg(all( + any(target_arch = "aarch64", target_arch = "arm"), + any( + target_os = "android", + target_os = "fuchsia", + target_os = "linux", + target_os = "windows" + ) +))] +pub unsafe fn initialize_OPENSSL_armcap_P() { + let detected = detect_features(); + let filtered = (if cfg!(feature = "unstable-testing-arm-no-hw") { + AES.mask | SHA256.mask | PMULL.mask + } else { + 0 + }) | (if cfg!(feature = "unstable-testing-arm-no-neon") { + NEON.mask + } else { + 0 + }); + let detected = detected & !filtered; + OPENSSL_armcap_P = ARMCAP_STATIC | detected; +} + +// Some non-Rust code still checks this even when it is statically known +// the given feature is available, so we have to ensure that this is +// initialized properly. Keep this in sync with the initialization in +// BoringSSL's crypto.c. +// +// TODO: This should have "hidden" visibility but we don't have a way of +// controlling that yet: https://github.com/rust-lang/rust/issues/73958. +// +// SAFETY: +// - Rust code only accesses this through `cpu::Features`, which acts as a witness that +// `cpu::features()` was called to initialize this. +// - Some assembly language functions access `OPENSSL_armcap_P` directly. Callers of those functions +// must obtain a `cpu::Features` before calling them. +// - An instance of `cpu::Features` is a witness that this was initialized. +// - The initialization of the `INIT` in `cpu::features()` initializes this, and that `OnceCell` +// implements acquire/release semantics that allow all the otherwise-apparently-unsynchronized +// access. +// - `OPENSSL_armcap_P` must always be a superset of `ARMCAP_STATIC`. +// TODO: Remove all the direct accesses of this from assembly language code, and then replace this +// with a `OnceCell` that will provide all the necessary safety guarantees. +#[cfg(any(target_arch = "arm", target_arch = "aarch64"))] +prefixed_export! { + #[allow(non_upper_case_globals)] + static mut OPENSSL_armcap_P: u32 = ARMCAP_STATIC; +} + +// MSRV: Enforce 1.61.0 on some aarch64-* targets (aarch64-apple-*, in particular) prior to. Earlier +// versions of Rust before did not report the AAarch64 CPU features correctly for these targets. +// Cargo.toml specifies `rust-version` but versions before Rust 1.56 don't know about it. +// +// ``` +// $ rustc +1.61.0 --print cfg --target=aarch64-apple-ios | grep -E "neon|aes|sha|pmull" +// target_feature="aes" +// target_feature="neon" +// target_feature="sha2" +// $ rustc +1.61.0 --print cfg --target=aarch64-apple-darwin | grep -E "neon|aes|sha|pmull" +// target_feature="aes" +// target_feature="neon" +// target_feature="sha2" +// target_feature="sha3" +// ``` +#[allow(clippy::assertions_on_constants)] +const _AARCH64_HAS_NEON: () = + assert!(((ARMCAP_STATIC & NEON.mask) == NEON.mask) || !cfg!(target_arch = "aarch64")); +#[allow(clippy::assertions_on_constants)] +const _AARCH64_APPLE_FEATURES: u32 = NEON.mask | AES.mask | SHA256.mask | PMULL.mask; +#[allow(clippy::assertions_on_constants)] +const _AARCH64_APPLE_TARGETS_EXPECTED_FEATURES: () = assert!( + ((ARMCAP_STATIC & _AARCH64_APPLE_FEATURES) == _AARCH64_APPLE_FEATURES) + || !cfg!(all(target_arch = "aarch64", target_vendor = "apple")) +); + +#[cfg(all(test, any(target_arch = "arm", target_arch = "aarch64")))] +mod tests { + use super::*; + + #[test] + fn test_mask_abi() { + assert_eq!(NEON.mask, 1); + assert_eq!(AES.mask, 4); + assert_eq!(SHA256.mask, 16); + assert_eq!(PMULL.mask, 32); + } + + #[test] + fn test_armcap_static_is_subset_of_armcap_dynamic() { + // Ensure `OPENSSL_armcap_P` is initialized. + let cpu = crate::cpu::features(); + + let armcap_dynamic = unsafe { OPENSSL_armcap_P }; + assert_eq!(armcap_dynamic & ARMCAP_STATIC, ARMCAP_STATIC); + + ALL_FEATURES.iter().for_each(|feature| { + if (ARMCAP_STATIC & feature.mask) != 0 { + assert!(feature.available(cpu)); + } + }) + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/cpu/intel.rs temporalio-1.3.0/vendor/ring/src/cpu/intel.rs --- temporalio-1.3.0/vendor/ring/src/cpu/intel.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/cpu/intel.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,105 @@ +// Copyright 2016-2021 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +#![cfg_attr( + not(any(target_arch = "x86", target_arch = "x86_64")), + allow(dead_code) +)] + +pub(crate) struct Feature { + word: usize, + mask: u32, +} + +impl Feature { + #[allow(clippy::needless_return)] + #[inline(always)] + pub fn available(&self, _: super::Features) -> bool { + #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] + { + prefixed_extern! { + static mut OPENSSL_ia32cap_P: [u32; 4]; + } + return self.mask == self.mask & unsafe { OPENSSL_ia32cap_P[self.word] }; + } + + #[cfg(not(any(target_arch = "x86", target_arch = "x86_64")))] + { + return false; + } + } +} + +pub(crate) const ADX: Feature = Feature { + word: 2, + mask: 1 << 19, +}; + +pub(crate) const BMI1: Feature = Feature { + word: 2, + mask: 1 << 3, +}; + +pub(crate) const BMI2: Feature = Feature { + word: 2, + mask: 1 << 8, +}; + +pub(crate) const FXSR: Feature = Feature { + word: 0, + mask: 1 << 24, +}; + +pub(crate) const PCLMULQDQ: Feature = Feature { + word: 1, + mask: 1 << 1, +}; + +pub(crate) const SSSE3: Feature = Feature { + word: 1, + mask: 1 << 9, +}; + +pub(crate) const SSE41: Feature = Feature { + word: 1, + mask: 1 << 19, +}; + +#[cfg(target_arch = "x86_64")] +pub(crate) const MOVBE: Feature = Feature { + word: 1, + mask: 1 << 22, +}; + +pub(crate) const AES: Feature = Feature { + word: 1, + mask: 1 << 25, +}; + +#[cfg(target_arch = "x86_64")] +pub(crate) const AVX: Feature = Feature { + word: 1, + mask: 1 << 28, +}; + +#[cfg(all(target_arch = "x86_64", test))] +mod x86_64_tests { + use super::*; + + #[test] + fn test_avx_movbe_mask() { + // This is the OpenSSL style of testing these bits. + assert_eq!((AVX.mask | MOVBE.mask) >> 22, 0x41); + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/cpu.rs temporalio-1.3.0/vendor/ring/src/cpu.rs --- temporalio-1.3.0/vendor/ring/src/cpu.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/cpu.rs 2023-10-30 19:40:00.000000000 +0000 @@ -31,7 +31,12 @@ target_arch = "x86_64", all( any(target_arch = "aarch64", target_arch = "arm"), - any(target_os = "android", target_os = "fuchsia", target_os = "linux") + any( + target_os = "android", + target_os = "fuchsia", + target_os = "linux", + target_os = "windows" + ) ) ))] { @@ -39,20 +44,25 @@ let () = INIT.call_once(|| { #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] { - extern "C" { - fn GFp_cpuid_setup(); + prefixed_extern! { + fn OPENSSL_cpuid_setup(); } unsafe { - GFp_cpuid_setup(); + OPENSSL_cpuid_setup(); } } #[cfg(all( any(target_arch = "aarch64", target_arch = "arm"), - any(target_os = "android", target_os = "fuchsia", target_os = "linux") + any( + target_os = "android", + target_os = "fuchsia", + target_os = "linux", + target_os = "windows" + ) ))] { - arm::setup(); + unsafe { arm::initialize_OPENSSL_armcap_P() } } }); } @@ -60,319 +70,5 @@ Features(()) } -pub(crate) mod arm { - #[cfg(all( - any(target_os = "android", target_os = "linux"), - any(target_arch = "aarch64", target_arch = "arm") - ))] - pub fn setup() { - use libc::c_ulong; - - // XXX: The `libc` crate doesn't provide `libc::getauxval` consistently - // across all Android/Linux targets, e.g. musl. - extern "C" { - fn getauxval(type_: c_ulong) -> c_ulong; - } - - const AT_HWCAP: c_ulong = 16; - - #[cfg(target_arch = "aarch64")] - const HWCAP_NEON: c_ulong = 1 << 1; - - #[cfg(target_arch = "arm")] - const HWCAP_NEON: c_ulong = 1 << 12; - - let caps = unsafe { getauxval(AT_HWCAP) }; - - // We assume NEON is available on AARCH64 because it is a required - // feature. - #[cfg(target_arch = "aarch64")] - debug_assert!(caps & HWCAP_NEON == HWCAP_NEON); - - // OpenSSL and BoringSSL don't enable any other features if NEON isn't - // available. - if caps & HWCAP_NEON == HWCAP_NEON { - let mut features = NEON.mask; - - #[cfg(target_arch = "aarch64")] - const OFFSET: c_ulong = 3; - - #[cfg(target_arch = "arm")] - const OFFSET: c_ulong = 0; - - #[cfg(target_arch = "arm")] - let caps = { - const AT_HWCAP2: c_ulong = 26; - unsafe { getauxval(AT_HWCAP2) } - }; - - const HWCAP_AES: c_ulong = 1 << 0 + OFFSET; - const HWCAP_PMULL: c_ulong = 1 << 1 + OFFSET; - const HWCAP_SHA2: c_ulong = 1 << 3 + OFFSET; - - if caps & HWCAP_AES == HWCAP_AES { - features |= AES.mask; - } - if caps & HWCAP_PMULL == HWCAP_PMULL { - features |= PMULL.mask; - } - if caps & HWCAP_SHA2 == HWCAP_SHA2 { - features |= SHA256.mask; - } - - unsafe { GFp_armcap_P = features }; - } - } - - #[cfg(all(target_os = "fuchsia", target_arch = "aarch64"))] - pub fn setup() { - type zx_status_t = i32; - - #[link(name = "zircon")] - extern "C" { - fn zx_system_get_features(kind: u32, features: *mut u32) -> zx_status_t; - } - - const ZX_OK: i32 = 0; - const ZX_FEATURE_KIND_CPU: u32 = 0; - const ZX_ARM64_FEATURE_ISA_ASIMD: u32 = 1 << 2; - const ZX_ARM64_FEATURE_ISA_AES: u32 = 1 << 3; - const ZX_ARM64_FEATURE_ISA_PMULL: u32 = 1 << 4; - const ZX_ARM64_FEATURE_ISA_SHA2: u32 = 1 << 6; - - let mut caps = 0; - let rc = unsafe { zx_system_get_features(ZX_FEATURE_KIND_CPU, &mut caps) }; - - // OpenSSL and BoringSSL don't enable any other features if NEON isn't - // available. - if rc == ZX_OK && (caps & ZX_ARM64_FEATURE_ISA_ASIMD == ZX_ARM64_FEATURE_ISA_ASIMD) { - let mut features = NEON.mask; - - if caps & ZX_ARM64_FEATURE_ISA_AES == ZX_ARM64_FEATURE_ISA_AES { - features |= AES.mask; - } - if caps & ZX_ARM64_FEATURE_ISA_PMULL == ZX_ARM64_FEATURE_ISA_PMULL { - features |= PMULL.mask; - } - if caps & ZX_ARM64_FEATURE_ISA_SHA2 == ZX_ARM64_FEATURE_ISA_SHA2 { - features |= 1 << 4; - } - - unsafe { GFp_armcap_P = features }; - } - } - - macro_rules! features { - { - $( - $name:ident { - mask: $mask:expr, - - /// Should we assume that the feature is always available - /// for aarch64-apple-* targets? The first AArch64 iOS - /// device used the Apple A7 chip. - // TODO: When we can use `if` in const expressions: - // ``` - // aarch64_apple: $aarch64_apple, - // ``` - aarch64_apple: true, - } - ),+ - , // trailing comma is required. - } => { - $( - #[allow(dead_code)] - pub(crate) const $name: Feature = Feature { - mask: $mask, - }; - )+ - - // TODO: When we can use `if` in const expressions, do this: - // ``` - // const ARMCAP_STATIC: u32 = 0 - // $( - // | ( if $aarch64_apple && - // cfg!(all(target_arch = "aarch64", - // target_vendor = "apple")) { - // $name.mask - // } else { - // 0 - // } - // ) - // )+; - // ``` - // - // TODO: Add static feature detection to other targets. - // TODO: Combine static feature detection with runtime feature - // detection. - #[cfg(all(target_arch = "aarch64", target_vendor = "apple"))] - const ARMCAP_STATIC: u32 = 0 - $( | $name.mask - )+; - #[cfg(not(all(target_arch = "aarch64", target_vendor = "apple")))] - const ARMCAP_STATIC: u32 = 0; - - #[cfg(all(target_arch = "aarch64", target_vendor = "apple"))] - #[test] - fn test_armcap_static_available() { - let features = crate::cpu::features(); - $( - assert!($name.available(features)); - )+ - } - } - } - - #[allow(dead_code)] - pub(crate) struct Feature { - mask: u32, - } - - impl Feature { - #[allow(dead_code)] - #[inline(always)] - pub fn available(&self, _: super::Features) -> bool { - if self.mask == self.mask & ARMCAP_STATIC { - return true; - } - - #[cfg(all( - any(target_os = "android", target_os = "fuchsia", target_os = "linux"), - any(target_arch = "arm", target_arch = "aarch64") - ))] - { - if self.mask == self.mask & unsafe { GFp_armcap_P } { - return true; - } - } - - false - } - } - - features! { - // Keep in sync with `ARMV7_NEON`. - NEON { - mask: 1 << 0, - aarch64_apple: true, - }, - - // Keep in sync with `ARMV8_AES`. - AES { - mask: 1 << 2, - aarch64_apple: true, - }, - - // Keep in sync with `ARMV8_SHA256`. - SHA256 { - mask: 1 << 4, - aarch64_apple: true, - }, - - // Keep in sync with `ARMV8_PMULL`. - PMULL { - mask: 1 << 5, - aarch64_apple: true, - }, - } - - // Some non-Rust code still checks this even when it is statically known - // the given feature is available, so we have to ensure that this is - // initialized properly. Keep this in sync with the initialization in - // BoringSSL's crypto.c. - // - // TODO: This should have "hidden" visibility but we don't have a way of - // controlling that yet: https://github.com/rust-lang/rust/issues/73958. - #[cfg(any(target_arch = "arm", target_arch = "aarch64"))] - #[no_mangle] - static mut GFp_armcap_P: u32 = ARMCAP_STATIC; - - #[cfg(all( - any(target_arch = "arm", target_arch = "aarch64"), - target_vendor = "apple" - ))] - #[test] - fn test_armcap_static_matches_armcap_dynamic() { - assert_eq!(ARMCAP_STATIC, 1 | 4 | 16 | 32); - assert_eq!(ARMCAP_STATIC, unsafe { GFp_armcap_P }); - } -} - -#[cfg_attr( - not(any(target_arch = "x86", target_arch = "x86_64")), - allow(dead_code) -)] -pub(crate) mod intel { - pub(crate) struct Feature { - word: usize, - mask: u32, - } - - impl Feature { - #[allow(clippy::needless_return)] - #[inline(always)] - pub fn available(&self, _: super::Features) -> bool { - #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] - { - extern "C" { - static mut GFp_ia32cap_P: [u32; 4]; - } - return self.mask == self.mask & unsafe { GFp_ia32cap_P[self.word] }; - } - - #[cfg(not(any(target_arch = "x86", target_arch = "x86_64")))] - { - return false; - } - } - } - - pub(crate) const FXSR: Feature = Feature { - word: 0, - mask: 1 << 24, - }; - - pub(crate) const PCLMULQDQ: Feature = Feature { - word: 1, - mask: 1 << 1, - }; - - pub(crate) const SSSE3: Feature = Feature { - word: 1, - mask: 1 << 9, - }; - - #[cfg(target_arch = "x86_64")] - pub(crate) const SSE41: Feature = Feature { - word: 1, - mask: 1 << 19, - }; - - #[cfg(target_arch = "x86_64")] - pub(crate) const MOVBE: Feature = Feature { - word: 1, - mask: 1 << 22, - }; - - pub(crate) const AES: Feature = Feature { - word: 1, - mask: 1 << 25, - }; - - #[cfg(target_arch = "x86_64")] - pub(crate) const AVX: Feature = Feature { - word: 1, - mask: 1 << 28, - }; - - #[cfg(all(target_arch = "x86_64", test))] - mod x86_64_tests { - use super::*; - - #[test] - fn test_avx_movbe_mask() { - // This is the OpenSSL style of testing these bits. - assert_eq!((AVX.mask | MOVBE.mask) >> 22, 0x41); - } - } -} +pub mod arm; +pub mod intel; diff -Nru temporalio-1.3.0/vendor/ring/src/c.rs temporalio-1.3.0/vendor/ring/src/c.rs --- temporalio-1.3.0/vendor/ring/src/c.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/c.rs 2023-10-30 19:40:00.000000000 +0000 @@ -19,6 +19,9 @@ //! are all uniformly defined on the platforms we care about. This will //! probably change if/when we support 16-bit platforms or platforms where //! `usize` and `uintptr_t` are different sizes. +//! +//! TODO(MSRV-1.64): Use `core::ffi::{c_int, c_uint}`, remove the libc +//! compatibility testing, and remove the libc dev-dependency. // Keep in sync with the checks in base.h that verify these assumptions. diff -Nru temporalio-1.3.0/vendor/ring/src/digest/sha1.rs temporalio-1.3.0/vendor/ring/src/digest/sha1.rs --- temporalio-1.3.0/vendor/ring/src/digest/sha1.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/digest/sha1.rs 2023-10-30 19:40:00.000000000 +0000 @@ -14,8 +14,8 @@ // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. use super::sha2::{ch, maj, Word}; -use crate::c; -use core::{convert::TryInto, num::Wrapping}; +use crate::{c, polyfill::ChunksFixed}; +use core::num::Wrapping; pub const BLOCK_LEN: usize = 512 / 8; pub const CHAINING_LEN: usize = 160 / 8; @@ -60,17 +60,14 @@ } // FIPS 180-4 6.1.2 Step 2 - let a = H[0]; - let b = H[1]; - let c = H[2]; - let d = H[3]; - let e = H[4]; + let [a, b, c, d, e] = H; // FIPS 180-4 6.1.2 Step 3 with constants and functions from FIPS 180-4 {4.1.1, 4.2.1} - let (a, b, c, d, e) = step3(a, b, c, d, e, W[ 0..20].try_into().unwrap(), Wrapping(0x5a827999), ch); - let (a, b, c, d, e) = step3(a, b, c, d, e, W[20..40].try_into().unwrap(), Wrapping(0x6ed9eba1), parity); - let (a, b, c, d, e) = step3(a, b, c, d, e, W[40..60].try_into().unwrap(), Wrapping(0x8f1bbcdc), maj); - let (a, b, c, d, e) = step3(a, b, c, d, e, W[60..80].try_into().unwrap(), Wrapping(0xca62c1d6), parity); + let W: &[[W32; 20]; 4] = W.chunks_fixed(); + let (a, b, c, d, e) = step3(a, b, c, d, e, W[0], Wrapping(0x5a827999), ch); + let (a, b, c, d, e) = step3(a, b, c, d, e, W[1], Wrapping(0x6ed9eba1), parity); + let (a, b, c, d, e) = step3(a, b, c, d, e, W[2], Wrapping(0x8f1bbcdc), maj); + let (a, b, c, d, e) = step3(a, b, c, d, e, W[3], Wrapping(0xca62c1d6), parity); // FIPS 180-4 6.1.2 Step 4 H[0] += a; diff -Nru temporalio-1.3.0/vendor/ring/src/digest/sha2.rs temporalio-1.3.0/vendor/ring/src/digest/sha2.rs --- temporalio-1.3.0/vendor/ring/src/digest/sha2.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/digest/sha2.rs 2023-10-30 19:40:00.000000000 +0000 @@ -19,7 +19,7 @@ }; #[cfg(not(any(target_arch = "aarch64", target_arch = "arm", target_arch = "x86_64")))] -pub(super) extern "C" fn GFp_sha256_block_data_order( +pub(super) extern "C" fn sha256_block_data_order( state: &mut super::State, data: *const u8, num: c::size_t, @@ -29,7 +29,7 @@ } #[cfg(not(any(target_arch = "aarch64", target_arch = "arm", target_arch = "x86_64")))] -pub(super) extern "C" fn GFp_sha512_block_data_order( +pub(super) extern "C" fn sha512_block_data_order( state: &mut super::State, data: *const u8, num: c::size_t, @@ -71,14 +71,7 @@ }; // FIPS 180-4 {6.2.2, 6.4.2} Step 2 - let mut a = H[0]; - let mut b = H[1]; - let mut c = H[2]; - let mut d = H[3]; - let mut e = H[4]; - let mut f = H[5]; - let mut g = H[6]; - let mut h = H[7]; + let [mut a, mut b, mut c, mut d, mut e, mut f, mut g, mut h] = H; // FIPS 180-4 {6.2.2, 6.4.2} Step 3 for (Kt, Wt) in S::K.iter().zip(W.iter()) { @@ -178,17 +171,17 @@ pub(super) const CHAINING_WORDS: usize = 8; impl Word for Wrapping { - const ZERO: Self = Wrapping(0); + const ZERO: Self = Self(0); type InputBytes = [u8; 4]; #[inline(always)] fn from_be_bytes(input: Self::InputBytes) -> Self { - Wrapping(u32::from_be_bytes(input)) + Self(u32::from_be_bytes(input)) } #[inline(always)] fn rotr(self, count: u32) -> Self { - Wrapping(self.0.rotate_right(count)) + Self(self.0.rotate_right(count)) } } @@ -270,17 +263,17 @@ } impl Word for Wrapping { - const ZERO: Self = Wrapping(0); + const ZERO: Self = Self(0); type InputBytes = [u8; 8]; #[inline(always)] fn from_be_bytes(input: Self::InputBytes) -> Self { - Wrapping(u64::from_be_bytes(input)) + Self(u64::from_be_bytes(input)) } #[inline(always)] fn rotr(self, count: u32) -> Self { - Wrapping(self.0.rotate_right(count)) + Self(self.0.rotate_right(count)) } } @@ -378,13 +371,13 @@ } #[cfg(any(target_arch = "aarch64", target_arch = "arm", target_arch = "x86_64"))] -extern "C" { - pub(super) fn GFp_sha256_block_data_order( +prefixed_extern! { + pub(super) fn sha256_block_data_order( state: &mut super::State, data: *const u8, num: c::size_t, ); - pub(super) fn GFp_sha512_block_data_order( + pub(super) fn sha512_block_data_order( state: &mut super::State, data: *const u8, num: c::size_t, diff -Nru temporalio-1.3.0/vendor/ring/src/digest.rs temporalio-1.3.0/vendor/ring/src/digest.rs --- temporalio-1.3.0/vendor/ring/src/digest.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/digest.rs 2023-10-30 19:40:00.000000000 +0000 @@ -26,7 +26,7 @@ use crate::{ c, cpu, debug, - endian::{self, BigEndian}, + endian::{ArrayEncoding, BigEndian}, polyfill, }; use core::num::Wrapping; @@ -63,7 +63,9 @@ pub(crate) fn update(&mut self, input: &[u8]) { let num_blocks = input.len() / self.algorithm.block_len; assert_eq!(num_blocks * self.algorithm.block_len, input.len()); + if num_blocks > 0 { + let _cpu_features = self.cpu_features; unsafe { (self.algorithm.block_data_order)(&mut self.state, input.as_ptr(), num_blocks); } @@ -84,7 +86,7 @@ padding_pos += 1; if padding_pos > block_len - self.algorithm.len_len { - polyfill::slice::fill(&mut pending[padding_pos..block_len], 0); + pending[padding_pos..block_len].fill(0); unsafe { (self.algorithm.block_data_order)(&mut self.state, pending.as_ptr(), 1); } @@ -93,7 +95,7 @@ padding_pos = 0; } - polyfill::slice::fill(&mut pending[padding_pos..(block_len - 8)], 0); + pending[padding_pos..(block_len - 8)].fill(0); // Output the length, in bits, in big endian order. let completed_data_bits = self @@ -160,9 +162,7 @@ } } - /// Updates the digest with all the data in `data`. `update` may be called - /// zero or more times until `finish` is called. It must not be called - /// after `finish` has been called. + /// Updates the digest with all the data in `data`. pub fn update(&mut self, data: &[u8]) { let block_len = self.block.algorithm.block_len; if data.len() < block_len - self.num_pending { @@ -190,9 +190,10 @@ } } - /// Finalizes the digest calculation and returns the digest value. `finish` - /// consumes the context so it cannot be (mis-)used after `finish` has been - /// called. + /// Finalizes the digest calculation and returns the digest value. + /// + /// `finish` consumes the context so it cannot be (mis-)used after `finish` + /// has been called. pub fn finish(mut self) -> Digest { let block_len = self.block.algorithm.block_len; self.block @@ -229,7 +230,7 @@ /// A calculated digest value. /// -/// Use `as_ref` to get the value as a `&[u8]`. +/// Use [`Self::as_ref`] to get the value as a `&[u8]`. #[derive(Clone, Copy)] pub struct Digest { value: Output, @@ -248,7 +249,7 @@ #[inline(always)] fn as_ref(&self) -> &[u8] { let as64 = unsafe { &self.value.as64 }; - &endian::as_byte_slice(as64)[..self.algorithm.output_len] + &as64.as_byte_array()[..self.algorithm.output_len] } } @@ -261,19 +262,9 @@ /// A digest algorithm. pub struct Algorithm { - /// The length of a finalized digest. - pub output_len: usize, - - /// The size of the chaining value of the digest function, in bytes. For - /// non-truncated algorithms (SHA-1, SHA-256, SHA-512), this is equal to - /// `output_len`. For truncated algorithms (e.g. SHA-384, SHA-512/256), - /// this is equal to the length before truncation. This is mostly helpful - /// for determining the size of an HMAC key that is appropriate for the - /// digest algorithm. - pub chaining_len: usize, - - /// The internal block length. - pub block_len: usize, + output_len: usize, + chaining_len: usize, + block_len: usize, /// The length of the length in the padding. len_len: usize, @@ -305,6 +296,29 @@ derive_debug_via_id!(Algorithm); +impl Algorithm { + /// The internal block length. + pub fn block_len(&self) -> usize { + self.block_len + } + + /// The size of the chaining value of the digest function, in bytes. + /// + /// For non-truncated algorithms (SHA-1, SHA-256, SHA-512), this is equal + /// to [`Self::output_len()`]. For truncated algorithms (e.g. SHA-384, + /// SHA-512/256), this is equal to the length before truncation. This is + /// mostly helpful for determining the size of an HMAC key that is + /// appropriate for the digest algorithm. + pub fn chaining_len(&self) -> usize { + self.chaining_len + } + + /// The length of a finalized digest. + pub fn output_len(&self) -> usize { + self.output_len + } +} + /// SHA-1 as specified in [FIPS 180-4]. Deprecated. /// /// [FIPS 180-4]: http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf @@ -338,7 +352,7 @@ chaining_len: SHA256_OUTPUT_LEN, block_len: 512 / 8, len_len: 64 / 8, - block_data_order: sha2::GFp_sha256_block_data_order, + block_data_order: sha2::sha256_block_data_order, format_output: sha256_format_output, initial_state: State { as32: [ @@ -363,7 +377,7 @@ chaining_len: SHA512_OUTPUT_LEN, block_len: SHA512_BLOCK_LEN, len_len: SHA512_LEN_LEN, - block_data_order: sha2::GFp_sha512_block_data_order, + block_data_order: sha2::sha512_block_data_order, format_output: sha512_format_output, initial_state: State { as64: [ @@ -388,7 +402,7 @@ chaining_len: SHA512_OUTPUT_LEN, block_len: SHA512_BLOCK_LEN, len_len: SHA512_LEN_LEN, - block_data_order: sha2::GFp_sha512_block_data_order, + block_data_order: sha2::sha512_block_data_order, format_output: sha512_format_output, initial_state: State { as64: [ @@ -417,7 +431,7 @@ chaining_len: SHA512_OUTPUT_LEN, block_len: SHA512_BLOCK_LEN, len_len: SHA512_LEN_LEN, - block_data_order: sha2::GFp_sha512_block_data_order, + block_data_order: sha2::sha512_block_data_order, format_output: sha512_format_output, initial_state: State { as64: [ @@ -448,47 +462,29 @@ as32: [BigEndian; 256 / 8 / core::mem::size_of::>()], } -/// The maximum block length (`Algorithm::block_len`) of all the algorithms in -/// this module. +/// The maximum block length ([`Algorithm::block_len()`]) of all the algorithms +/// in this module. pub const MAX_BLOCK_LEN: usize = 1024 / 8; -/// The maximum output length (`Algorithm::output_len`) of all the algorithms -/// in this module. +/// The maximum output length ([`Algorithm::output_len()`]) of all the +/// algorithms in this module. pub const MAX_OUTPUT_LEN: usize = 512 / 8; -/// The maximum chaining length (`Algorithm::chaining_len`) of all the +/// The maximum chaining length ([`Algorithm::chaining_len()`]) of all the /// algorithms in this module. pub const MAX_CHAINING_LEN: usize = MAX_OUTPUT_LEN; fn sha256_format_output(input: State) -> Output { let input = unsafe { &input.as32 }; Output { - as32: [ - BigEndian::from(input[0]), - BigEndian::from(input[1]), - BigEndian::from(input[2]), - BigEndian::from(input[3]), - BigEndian::from(input[4]), - BigEndian::from(input[5]), - BigEndian::from(input[6]), - BigEndian::from(input[7]), - ], + as32: input.map(BigEndian::from), } } fn sha512_format_output(input: State) -> Output { let input = unsafe { &input.as64 }; Output { - as64: [ - BigEndian::from(input[0]), - BigEndian::from(input[1]), - BigEndian::from(input[2]), - BigEndian::from(input[3]), - BigEndian::from(input[4]), - BigEndian::from(input[5]), - BigEndian::from(input[6]), - BigEndian::from(input[7]), - ], + as64: input.map(BigEndian::from), } } @@ -515,8 +511,8 @@ #[cfg(test)] mod tests { - mod max_input { + extern crate alloc; use super::super::super::digest; use crate::polyfill; use alloc::vec; Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/src/ec/curve25519/ed25519/ed25519_pkcs8_v2_template.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/src/ec/curve25519/ed25519/ed25519_pkcs8_v2_template.der differ diff -Nru temporalio-1.3.0/vendor/ring/src/ec/curve25519/ed25519/signing.rs temporalio-1.3.0/vendor/ring/src/ec/curve25519/ed25519/signing.rs --- temporalio-1.3.0/vendor/ring/src/ec/curve25519/ed25519/signing.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/curve25519/ed25519/signing.rs 2023-10-30 19:40:00.000000000 +0000 @@ -16,12 +16,11 @@ use super::{super::ops::*, eddsa_digest, ED25519_PUBLIC_KEY_LEN}; use crate::{ - digest, error, + cpu, digest, error, io::der, pkcs8, rand, signature::{self, KeyPair as SigningKeyPair}, }; -use core::convert::TryInto; /// An Ed25519 key pair, for signing. pub struct Ed25519KeyPair { @@ -71,11 +70,18 @@ /// verify that the public key and the private key are consistent with each /// other. /// + /// Some early implementations of PKCS#8 v2, including earlier versions of + /// *ring* and other implementations, wrapped the public key in the wrong + /// ASN.1 tags. Both that incorrect form and the standardized form are + /// accepted. + /// /// If you need to parse PKCS#8 v1 files (without the public key) then use /// `Ed25519KeyPair::from_pkcs8_maybe_unchecked()` instead. pub fn from_pkcs8(pkcs8: &[u8]) -> Result { - let (seed, public_key) = - unwrap_pkcs8(pkcs8::Version::V2Only, untrusted::Input::from(pkcs8))?; + let version = pkcs8::Version::V2Only(pkcs8::PublicKeyOptions { + accept_legacy_ed25519_public_key_tag: true, + }); + let (seed, public_key) = unwrap_pkcs8(version, untrusted::Input::from(pkcs8))?; Self::from_seed_and_public_key( seed.as_slice_less_safe(), public_key.unwrap().as_slice_less_safe(), @@ -95,10 +101,17 @@ /// computed from the private key, and there will be no consistency check /// between the public key and the private key. /// + /// Some early implementations of PKCS#8 v2, including earlier versions of + /// *ring* and other implementations, wrapped the public key in the wrong + /// ASN.1 tags. Both that incorrect form and the standardized form are + /// accepted. + /// /// PKCS#8 v2 files are parsed exactly like `Ed25519KeyPair::from_pkcs8()`. pub fn from_pkcs8_maybe_unchecked(pkcs8: &[u8]) -> Result { - let (seed, public_key) = - unwrap_pkcs8(pkcs8::Version::V1OrV2, untrusted::Input::from(pkcs8))?; + let version = pkcs8::Version::V1OrV2(pkcs8::PublicKeyOptions { + accept_legacy_ed25519_public_key_tag: true, + }); + let (seed, public_key) = unwrap_pkcs8(version, untrusted::Input::from(pkcs8))?; if let Some(public_key) = public_key { Self::from_seed_and_public_key( seed.as_slice_less_safe(), @@ -163,10 +176,7 @@ let private_scalar = MaskedScalar::from_bytes_masked(private_scalar.try_into().unwrap()).into(); - let mut a = ExtPoint::new_at_infinity(); - unsafe { - GFp_x25519_ge_scalarmult_base(&mut a, &private_scalar); - } + let a = ExtPoint::from_scalarmult_base_consttime(&private_scalar, cpu::features()); Self { private_scalar, @@ -178,8 +188,8 @@ /// Returns the signature of the message `msg`. pub fn sign(&self, msg: &[u8]) -> signature::Signature { signature::Signature::new(|signature_bytes| { - extern "C" { - fn GFp_x25519_sc_muladd( + prefixed_extern! { + fn x25519_sc_muladd( s: &mut [u8; SCALAR_LEN], a: &Scalar, b: &Scalar, @@ -197,15 +207,12 @@ }; let nonce = Scalar::from_sha512_digest_reduced(nonce); - let mut r = ExtPoint::new_at_infinity(); - unsafe { - GFp_x25519_ge_scalarmult_base(&mut r, &nonce); - } + let r = ExtPoint::from_scalarmult_base_consttime(&nonce, cpu::features()); signature_r.copy_from_slice(&r.into_encoded_point()); - let hram_digest = eddsa_digest(signature_r, &self.public_key.as_ref(), msg); + let hram_digest = eddsa_digest(signature_r, self.public_key.as_ref(), msg); let hram = Scalar::from_sha512_digest_reduced(hram_digest); unsafe { - GFp_x25519_sc_muladd( + x25519_sc_muladd( signature_s.try_into().unwrap(), &hram, &self.private_scalar, @@ -250,10 +257,6 @@ Ok((private_key, public_key)) } -extern "C" { - fn GFp_x25519_ge_scalarmult_base(h: &mut ExtPoint, a: &Scalar); -} - type Prefix = [u8; PREFIX_LEN]; const PREFIX_LEN: usize = digest::SHA512_OUTPUT_LEN - SCALAR_LEN; diff -Nru temporalio-1.3.0/vendor/ring/src/ec/curve25519/ed25519/verification.rs temporalio-1.3.0/vendor/ring/src/ec/curve25519/ed25519/verification.rs --- temporalio-1.3.0/vendor/ring/src/ec/curve25519/ed25519/verification.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/curve25519/ed25519/verification.rs 2023-10-30 19:40:00.000000000 +0000 @@ -16,7 +16,6 @@ use super::{super::ops::*, eddsa_digest}; use crate::{error, sealed, signature}; -use core::convert::TryInto; /// Parameters for EdDSA signing and verification. pub struct EdDSAParameters; @@ -63,7 +62,7 @@ let h = Scalar::from_sha512_digest_reduced(h_digest); let mut r = Point::new_at_infinity(); - unsafe { GFp_x25519_ge_double_scalarmult_vartime(&mut r, &h, &a, &signature_s) }; + unsafe { x25519_ge_double_scalarmult_vartime(&mut r, &h, &a, &signature_s) }; let r_check = r.into_encoded_point(); if *signature_r != r_check { return Err(error::Unspecified); @@ -74,8 +73,8 @@ impl sealed::Sealed for EdDSAParameters {} -extern "C" { - fn GFp_x25519_ge_double_scalarmult_vartime( +prefixed_extern! { + fn x25519_ge_double_scalarmult_vartime( r: &mut Point, a_coeff: &Scalar, a: &ExtPoint, diff -Nru temporalio-1.3.0/vendor/ring/src/ec/curve25519/ops.rs temporalio-1.3.0/vendor/ring/src/ec/curve25519/ops.rs --- temporalio-1.3.0/vendor/ring/src/ec/curve25519/ops.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/curve25519/ops.rs 2023-10-30 19:40:00.000000000 +0000 @@ -17,7 +17,7 @@ pub use super::scalar::{MaskedScalar, Scalar, SCALAR_LEN}; use crate::{ - bssl, error, + bssl, c, cpu, error, limb::{Limb, LIMB_BITS}, }; use core::marker::PhantomData; @@ -49,7 +49,7 @@ impl Elem { fn negate(&mut self) { unsafe { - GFp_x25519_fe_neg(self); + x25519_fe_neg(self); } } } @@ -73,20 +73,32 @@ } impl ExtPoint { - pub fn new_at_infinity() -> Self { - Self { + // Returns the result of multiplying the base point by the scalar in constant time. + pub(super) fn from_scalarmult_base_consttime(scalar: &Scalar, cpu: cpu::Features) -> Self { + let mut r = Self { x: Elem::zero(), y: Elem::zero(), z: Elem::zero(), t: Elem::zero(), + }; + prefixed_extern! { + fn x25519_ge_scalarmult_base(h: &mut ExtPoint, a: &Scalar, has_fe25519_adx: c::int); } + unsafe { + x25519_ge_scalarmult_base(&mut r, scalar, has_fe25519_adx(cpu).into()); + } + r } pub fn from_encoded_point_vartime(encoded: &EncodedPoint) -> Result { - let mut point = Self::new_at_infinity(); + let mut point = Self { + x: Elem::zero(), + y: Elem::zero(), + z: Elem::zero(), + t: Elem::zero(), + }; - Result::from(unsafe { GFp_x25519_ge_frombytes_vartime(&mut point, encoded) }) - .map(|()| point) + Result::from(unsafe { x25519_ge_frombytes_vartime(&mut point, encoded) }).map(|()| point) } pub fn into_encoded_point(self) -> EncodedPoint { @@ -126,16 +138,16 @@ let sign_bit: u8 = unsafe { let mut recip = Elem::zero(); - GFp_x25519_fe_invert(&mut recip, &z); + x25519_fe_invert(&mut recip, &z); let mut x_over_z = Elem::zero(); - GFp_x25519_fe_mul_ttt(&mut x_over_z, &x, &recip); + x25519_fe_mul_ttt(&mut x_over_z, &x, &recip); let mut y_over_z = Elem::zero(); - GFp_x25519_fe_mul_ttt(&mut y_over_z, &y, &recip); - GFp_x25519_fe_tobytes(&mut bytes, &y_over_z); + x25519_fe_mul_ttt(&mut y_over_z, &y, &recip); + x25519_fe_tobytes(&mut bytes, &y_over_z); - GFp_x25519_fe_isnegative(&x_over_z) + x25519_fe_isnegative(&x_over_z) }; // The preceding computations must execute in constant time, but this @@ -145,11 +157,19 @@ bytes } -extern "C" { - fn GFp_x25519_fe_invert(out: &mut Elem, z: &Elem); - fn GFp_x25519_fe_isnegative(elem: &Elem) -> u8; - fn GFp_x25519_fe_mul_ttt(h: &mut Elem, f: &Elem, g: &Elem); - fn GFp_x25519_fe_neg(f: &mut Elem); - fn GFp_x25519_fe_tobytes(bytes: &mut EncodedPoint, elem: &Elem); - fn GFp_x25519_ge_frombytes_vartime(h: &mut ExtPoint, s: &EncodedPoint) -> bssl::Result; +#[inline] +pub(super) fn has_fe25519_adx(cpu: cpu::Features) -> bool { + cfg!(all(target_arch = "x86_64", not(target_os = "windows"))) + && cpu::intel::ADX.available(cpu) + && cpu::intel::BMI1.available(cpu) + && cpu::intel::BMI2.available(cpu) +} + +prefixed_extern! { + fn x25519_fe_invert(out: &mut Elem, z: &Elem); + fn x25519_fe_isnegative(elem: &Elem) -> u8; + fn x25519_fe_mul_ttt(h: &mut Elem, f: &Elem, g: &Elem); + fn x25519_fe_neg(f: &mut Elem); + fn x25519_fe_tobytes(bytes: &mut EncodedPoint, elem: &Elem); + fn x25519_ge_frombytes_vartime(h: &mut ExtPoint, s: &EncodedPoint) -> bssl::Result; } diff -Nru temporalio-1.3.0/vendor/ring/src/ec/curve25519/scalar.rs temporalio-1.3.0/vendor/ring/src/ec/curve25519/scalar.rs --- temporalio-1.3.0/vendor/ring/src/ec/curve25519/scalar.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/curve25519/scalar.rs 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,6 @@ // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. use crate::{digest, error, limb}; -use core::convert::TryInto; #[repr(transparent)] pub struct Scalar([u8; SCALAR_LEN]); @@ -44,12 +43,12 @@ // Constructs a `Scalar` from `digest` reduced modulo n. pub fn from_sha512_digest_reduced(digest: digest::Digest) -> Self { - extern "C" { - fn GFp_x25519_sc_reduce(s: &mut UnreducedScalar); + prefixed_extern! { + fn x25519_sc_reduce(s: &mut UnreducedScalar); } let mut unreduced = [0u8; digest::SHA512_OUTPUT_LEN]; unreduced.copy_from_slice(digest.as_ref()); - unsafe { GFp_x25519_sc_reduce(&mut unreduced) }; + unsafe { x25519_sc_reduce(&mut unreduced) }; Self((&unreduced[..SCALAR_LEN]).try_into().unwrap()) } } @@ -59,11 +58,11 @@ impl MaskedScalar { pub fn from_bytes_masked(bytes: [u8; SCALAR_LEN]) -> Self { - extern "C" { - fn GFp_x25519_sc_mask(a: &mut [u8; SCALAR_LEN]); + prefixed_extern! { + fn x25519_sc_mask(a: &mut [u8; SCALAR_LEN]); } let mut r = Self(bytes); - unsafe { GFp_x25519_sc_mask(&mut r.0) }; + unsafe { x25519_sc_mask(&mut r.0) }; r } } diff -Nru temporalio-1.3.0/vendor/ring/src/ec/curve25519/x25519.rs temporalio-1.3.0/vendor/ring/src/ec/curve25519/x25519.rs --- temporalio-1.3.0/vendor/ring/src/ec/curve25519/x25519.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/curve25519/x25519.rs 2023-10-30 19:40:00.000000000 +0000 @@ -15,8 +15,7 @@ //! X25519 Key agreement. use super::{ops, scalar::SCALAR_LEN}; -use crate::{agreement, constant_time, cpu, ec, error, rand}; -use core::convert::TryInto; +use crate::{agreement, c, constant_time, cpu, ec, error, rand}; static CURVE25519: ec::Curve = ec::Curve { public_key_len: PUBLIC_KEY_LEN, @@ -40,6 +39,7 @@ ecdh: x25519_ecdh, }; +#[allow(clippy::unnecessary_wraps)] fn x25519_check_private_key_bytes(bytes: &[u8]) -> Result<(), error::Unspecified> { debug_assert_eq!(bytes.len(), PRIVATE_KEY_LEN); Ok(()) @@ -58,7 +58,6 @@ ) -> Result<(), error::Unspecified> { let public_out = public_out.try_into()?; - #[cfg(target_arch = "arm")] let cpu_features = private_key.cpu_features; let private_key: &[u8; SCALAR_LEN] = private_key.bytes_less_safe().try_into()?; @@ -76,14 +75,19 @@ } } - extern "C" { - fn GFp_x25519_public_from_private_generic_masked( + prefixed_extern! { + fn x25519_public_from_private_generic_masked( public_key_out: &mut PublicKey, private_key: &PrivateKey, + use_adx: c::int, ); } unsafe { - GFp_x25519_public_from_private_generic_masked(public_out, &private_key); + x25519_public_from_private_generic_masked( + public_out, + &private_key, + ops::has_fe25519_adx(cpu_features).into(), + ); } Ok(()) @@ -99,15 +103,11 @@ let my_private_key = ops::MaskedScalar::from_bytes_masked(*my_private_key); let peer_public_key: &[u8; PUBLIC_KEY_LEN] = peer_public_key.as_slice_less_safe().try_into()?; - #[cfg_attr( - not(all(not(target_os = "ios"), target_arch = "arm")), - allow(unused_variables) - )] fn scalar_mult( out: &mut ops::EncodedPoint, scalar: &ops::MaskedScalar, point: &ops::EncodedPoint, - cpu_features: cpu::Features, + #[allow(unused_variables)] cpu_features: cpu::Features, ) { #[cfg(all(not(target_os = "ios"), target_arch = "arm"))] { @@ -116,15 +116,29 @@ } } - extern "C" { - fn GFp_x25519_scalar_mult_generic_masked( + #[cfg(all(target_arch = "x86_64", not(target_os = "windows")))] + { + if ops::has_fe25519_adx(cpu_features) { + prefixed_extern! { + fn x25519_scalar_mult_adx( + out: &mut ops::EncodedPoint, + scalar: &ops::MaskedScalar, + point: &ops::EncodedPoint, + ); + } + return unsafe { x25519_scalar_mult_adx(out, scalar, point) }; + } + } + + prefixed_extern! { + fn x25519_scalar_mult_generic_masked( out: &mut ops::EncodedPoint, scalar: &ops::MaskedScalar, point: &ops::EncodedPoint, ); } unsafe { - GFp_x25519_scalar_mult_generic_masked(out, scalar, point); + x25519_scalar_mult_generic_masked(out, scalar, point); } } @@ -146,14 +160,14 @@ #[cfg(all(not(target_os = "ios"), target_arch = "arm"))] fn x25519_neon(out: &mut ops::EncodedPoint, scalar: &ops::MaskedScalar, point: &ops::EncodedPoint) { - extern "C" { - fn GFp_x25519_NEON( + prefixed_extern! { + fn x25519_NEON( out: &mut ops::EncodedPoint, scalar: &ops::MaskedScalar, point: &ops::EncodedPoint, ); } - unsafe { GFp_x25519_NEON(out, scalar, point) } + unsafe { x25519_NEON(out, scalar, point) } } const ELEM_AND_SCALAR_LEN: usize = ops::ELEM_LEN; @@ -168,3 +182,53 @@ // An X25519 shared secret as an encoded Curve25519 point. type SharedSecret = [u8; SHARED_SECRET_LEN]; const SHARED_SECRET_LEN: usize = ELEM_AND_SCALAR_LEN; + +#[cfg(test)] +mod tests { + use super::*; + use crate::ec; + use untrusted::Input; + + #[test] + fn test_x25519_public_from_private() { + struct TestVector { + private: [u8; 32], + public: [u8; 32], + } + static TEST_CASES: &[TestVector] = &[ + TestVector { + private: [ + 0x77, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, 0x7d, 0x3c, 0x16, 0xc1, 0x72, 0x51, + 0xb2, 0x66, 0x45, 0xdf, 0x4c, 0x2f, 0x87, 0xeb, 0xc0, 0x99, 0x2a, 0xb1, 0x77, + 0xfb, 0xa5, 0x1d, 0xb9, 0x2c, 0x2a, + ], + public: [ + 0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 0x74, 0x8b, 0x7d, 0xdc, 0xb4, + 0x3e, 0xf7, 0x5a, 0x0d, 0xbf, 0x3a, 0x0d, 0x26, 0x38, 0x1a, 0xf4, 0xeb, 0xa4, + 0xa9, 0x8e, 0xaa, 0x9b, 0x4e, 0x6a, + ], + }, + TestVector { + private: [ + 0x5d, 0xab, 0x08, 0x7e, 0x62, 0x4a, 0x8a, 0x4b, 0x79, 0xe1, 0x7f, 0x8b, 0x83, + 0x80, 0x0e, 0xe6, 0x6f, 0x3b, 0xb1, 0x29, 0x26, 0x18, 0xb6, 0xfd, 0x1c, 0x2f, + 0x8b, 0x27, 0xff, 0x88, 0xe0, 0xeb, + ], + public: [ + 0xde, 0x9e, 0xdb, 0x7d, 0x7b, 0x7d, 0xc1, 0xb4, 0xd3, 0x5b, 0x61, 0xc2, 0xec, + 0xe4, 0x35, 0x37, 0x3f, 0x83, 0x43, 0xc8, 0x5b, 0x78, 0x67, 0x4d, 0xad, 0xfc, + 0x7e, 0x14, 0x6f, 0x88, 0x2b, 0x4f, + ], + }, + ]; + let cpu_features = cpu::features(); + for test_case in TEST_CASES { + let seed = + ec::Seed::from_bytes(&CURVE25519, Input::from(&test_case.private), cpu_features) + .unwrap(); + let mut output = [0u8; 32]; + x25519_public_from_private(&mut output, &seed).unwrap(); + assert_eq!(output, test_case.public); + } + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/ec/curve25519.rs temporalio-1.3.0/vendor/ring/src/ec/curve25519.rs --- temporalio-1.3.0/vendor/ring/src/ec/curve25519.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/curve25519.rs 2023-10-30 19:40:00.000000000 +0000 @@ -15,6 +15,8 @@ //! Elliptic curve operations and schemes using Curve25519. pub mod ed25519; + +#[cfg(not(target_arch = "wasm32"))] pub mod x25519; mod ops; diff -Nru temporalio-1.3.0/vendor/ring/src/ec/keys.rs temporalio-1.3.0/vendor/ring/src/ec/keys.rs --- temporalio-1.3.0/vendor/ring/src/ec/keys.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/keys.rs 2023-10-30 19:40:00.000000000 +0000 @@ -23,6 +23,7 @@ pub struct Seed { bytes: [u8; SEED_MAX_BYTES], curve: &'static Curve, + #[cfg_attr(target_arch = "wasm32", allow(dead_code))] pub(crate) cpu_features: cpu::Features, } @@ -45,7 +46,7 @@ curve: &'static Curve, bytes: untrusted::Input, cpu_features: cpu::Features, - ) -> Result { + ) -> Result { let bytes = bytes.as_slice_less_safe(); if curve.elem_scalar_seed_len != bytes.len() { return Err(error::Unspecified); diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdh.rs temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdh.rs --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdh.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdh.rs 2023-10-30 19:40:00.000000000 +0000 @@ -200,7 +200,7 @@ bytes: n_minus_1_bytes, }; let key = agreement::EphemeralPrivateKey::generate(alg, &rng).unwrap(); - assert_eq!(&n_minus_1_bytes[..], key.bytes()); + assert_eq!(n_minus_1_bytes, key.bytes()); } // Test that n + 1 also fails. diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/digest_scalar.rs temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/digest_scalar.rs --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/digest_scalar.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/digest_scalar.rs 2023-10-30 19:40:00.000000000 +0000 @@ -107,7 +107,7 @@ }; let num_limbs = ops.public_key_ops.common.num_limbs; - assert_eq!(input.len(), digest_alg.output_len); + assert_eq!(input.len(), digest_alg.output_len()); assert_eq!( output.len(), ops.public_key_ops.common.num_limbs * LIMB_BYTES diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/ecdsa_digest_scalar_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/ecdsa_digest_scalar_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/ecdsa_digest_scalar_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/ecdsa_digest_scalar_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ -# Test vectors for the conversion of digest values to scalars. - -# Minimum Digest Values. - -Curve = P-256 -Digest = SHA256 -Input = 0000000000000000000000000000000000000000000000000000000000000000 -Output = 0000000000000000000000000000000000000000000000000000000000000000 - -Curve = P-256 -Digest = SHA384 -Input = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Output = 0000000000000000000000000000000000000000000000000000000000000000 - -Curve = P-384 -Digest = SHA256 -Input = 0000000000000000000000000000000000000000000000000000000000000000 -Output = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -Curve = P-384 -Digest = SHA384 -Input = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Output = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -# The truncated digest value is equal to n - 1 (not possible when digest is -# shorter than the curve's scalars). - -Curve = P-256 -Digest = SHA256 -Input = FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632550 -Output = FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632550 - -Curve = P-256 -Digest = SHA384 -Input = FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC63255000000000000000000000000000000000 -Output = FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632550 - -Curve = P-384 -Digest = SHA384 -Input = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52972 -Output = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52972 - -# The truncated digest value is equal to n (not possible when digest is shorter -# than the curve's scalars). - -Curve = P-256 -Digest = SHA256 -Input = FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551 -Output = 0000000000000000000000000000000000000000000000000000000000000000 - -Curve = P-256 -Digest = SHA384 -Input = FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC63255100000000000000000000000000000000 -Output = 0000000000000000000000000000000000000000000000000000000000000000 - -Curve = P-384 -Digest = SHA384 -Input = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973 -Output = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - - -# Maximum digest values. - -Curve = P-256 -Digest = SHA256 -Input = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -Output = 00000000FFFFFFFF00000000000000004319055258E8617B0C46353D039CDAAE - -Curve = P-256 -Digest = SHA384 -Input = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -Output = 00000000FFFFFFFF00000000000000004319055258E8617B0C46353D039CDAAE - -Curve = P-384 -Digest = SHA256 -Input = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -Output = 00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - -Curve = P-384 -Digest = SHA384 -Input = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -Output = 000000000000000000000000000000000000000000000000389CB27E0BC8D220A7E5F24DB74F58851313E695333AD68C diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/ecdsa_sign_asn1_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/ecdsa_sign_asn1_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/ecdsa_sign_asn1_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/ecdsa_sign_asn1_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -# Tests from NIST CAVP 186-4 ECDSA2VS Test Vectors, Signature Generation Test -# http://csrc.nist.gov/groups/STM/cavp/documents/dss/186-3ecdsatestvectors.zip -# -# CAVS 11.2 -# "SigVer" information for "ecdsa_values" -# Curves/SHAs selected: P-224,SHA-224 P-224,SHA-256 P-224,SHA-384 P-224,SHA-512 P-256,SHA-224 P-256,SHA-256 P-256,SHA-384 P-256,SHA-512 P-384,SHA-224 P-384,SHA-256 P-384,SHA-384 P-384,SHA-512 P-521,SHA-224 P-521,SHA-256 P-521,SHA-384 P-521,SHA-512 K-233,SHA-224 K-233,SHA-256 K-233,SHA-384 K-233,SHA-512 K-283,SHA-224 K-283,SHA-256 K-283,SHA-384 K-283,SHA-512 K-409,SHA-224 K-409,SHA-256 K-409,SHA-384 K-409,SHA-512 K-571,SHA-224 K-571,SHA-256 K-571,SHA-384 K-571,SHA-512 B-233,SHA-224 B-233,SHA-256 B-233,SHA-384 B-233,SHA-512 B-283,SHA-224 B-283,SHA-256 B-283,SHA-384 B-283,SHA-512 B-409,SHA-224 B-409,SHA-256 B-409,SHA-384 B-409,SHA-512 BB-571,SHA-224 B-571,SHA-256 B-571,SHA-384 B-571,SHA-512 -# Generated on Tue Aug 16 15:27:42 2011 - -# [P-256,SHA-256] - -Curve = P-256 -Digest = SHA256 -Msg = 5905238877c77421f73e43ee3da6f2d9e2ccad5fc942dcec0cbd25482935faaf416983fe165b1a045ee2bcd2e6dca3bdf46c4310a7461f9a37960ca672d3feb5473e253605fb1ddfd28065b53cb5858a8ad28175bf9bd386a5e471ea7a65c17cc934a9d791e91491eb3754d03799790fe2d308d16146d5c9b0d0debd97d79ce8 -d = 519b423d715f8b581f4fa8ee59f4771a5b44c8130b4e3eacca54a56dda72b464 -Q = 041ccbe91c075fc7f4f033bfa248db8fccd3565de94bbfb12f3c59ff46c271bf83ce4014c68811f9a21a1fdb2c0e6113e06db7ca93b7404e78dc7ccd5ca89a4ca9 -k = 94a1bbb14b906a61a280f245f9e93c7f3b4a6247824f5d33b9670787642a68de -Sig = 3046022100f3ac8061b514795b8843e3d6629527ed2afd6b1f6a555a7acabb5e6f79c8c2ac0221008bf77819ca05a6b2786c76262bf7371cef97b218e96f175a3ccdda2acc058903 - diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/ecdsa_sign_fixed_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/ecdsa_sign_fixed_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/ecdsa_sign_fixed_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/ecdsa_sign_fixed_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,251 +0,0 @@ -# Tests from NIST CAVP 186-4 ECDSA2VS Test Vectors, Signature Generation Test -# http://csrc.nist.gov/groups/STM/cavp/documents/dss/186-3ecdsatestvectors.zip -# -# CAVS 11.2 -# "SigVer" information for "ecdsa_values" -# Curves/SHAs selected: P-224,SHA-224 P-224,SHA-256 P-224,SHA-384 P-224,SHA-512 P-256,SHA-224 P-256,SHA-256 P-256,SHA-384 P-256,SHA-512 P-384,SHA-224 P-384,SHA-256 P-384,SHA-384 P-384,SHA-512 P-521,SHA-224 P-521,SHA-256 P-521,SHA-384 P-521,SHA-512 K-233,SHA-224 K-233,SHA-256 K-233,SHA-384 K-233,SHA-512 K-283,SHA-224 K-283,SHA-256 K-283,SHA-384 K-283,SHA-512 K-409,SHA-224 K-409,SHA-256 K-409,SHA-384 K-409,SHA-512 K-571,SHA-224 K-571,SHA-256 K-571,SHA-384 K-571,SHA-512 B-233,SHA-224 B-233,SHA-256 B-233,SHA-384 B-233,SHA-512 B-283,SHA-224 B-283,SHA-256 B-283,SHA-384 B-283,SHA-512 B-409,SHA-224 B-409,SHA-256 B-409,SHA-384 B-409,SHA-512 BB-571,SHA-224 B-571,SHA-256 B-571,SHA-384 B-571,SHA-512 -# Generated on Tue Aug 16 15:27:42 2011 - -# [P-256,SHA-256] - -Curve = P-256 -Digest = SHA256 -Msg = 5905238877c77421f73e43ee3da6f2d9e2ccad5fc942dcec0cbd25482935faaf416983fe165b1a045ee2bcd2e6dca3bdf46c4310a7461f9a37960ca672d3feb5473e253605fb1ddfd28065b53cb5858a8ad28175bf9bd386a5e471ea7a65c17cc934a9d791e91491eb3754d03799790fe2d308d16146d5c9b0d0debd97d79ce8 -d = 519b423d715f8b581f4fa8ee59f4771a5b44c8130b4e3eacca54a56dda72b464 -Q = 041ccbe91c075fc7f4f033bfa248db8fccd3565de94bbfb12f3c59ff46c271bf83ce4014c68811f9a21a1fdb2c0e6113e06db7ca93b7404e78dc7ccd5ca89a4ca9 -k = 94a1bbb14b906a61a280f245f9e93c7f3b4a6247824f5d33b9670787642a68de -Sig = f3ac8061b514795b8843e3d6629527ed2afd6b1f6a555a7acabb5e6f79c8c2ac8bf77819ca05a6b2786c76262bf7371cef97b218e96f175a3ccdda2acc058903 - -Curve = P-256 -Digest = SHA256 -Msg = c35e2f092553c55772926bdbe87c9796827d17024dbb9233a545366e2e5987dd344deb72df987144b8c6c43bc41b654b94cc856e16b96d7a821c8ec039b503e3d86728c494a967d83011a0e090b5d54cd47f4e366c0912bc808fbb2ea96efac88fb3ebec9342738e225f7c7c2b011ce375b56621a20642b4d36e060db4524af1 -d = 0f56db78ca460b055c500064824bed999a25aaf48ebb519ac201537b85479813 -Q = 04e266ddfdc12668db30d4ca3e8f7749432c416044f2d2b8c10bf3d4012aeffa8abfa86404a2e9ffe67d47c587ef7a97a7f456b863b4d02cfc6928973ab5b1cb39 -k = 6d3e71882c3b83b156bb14e0ab184aa9fb728068d3ae9fac421187ae0b2f34c6 -Sig = 976d3a4e9d23326dc0baa9fa560b7c4e53f42864f508483a6473b6a11079b2db1b766e9ceb71ba6c01dcd46e0af462cd4cfa652ae5017d4555b8eeefe36e1932 - -Curve = P-256 -Digest = SHA256 -Msg = 3c054e333a94259c36af09ab5b4ff9beb3492f8d5b4282d16801daccb29f70fe61a0b37ffef5c04cd1b70e85b1f549a1c4dc672985e50f43ea037efa9964f096b5f62f7ffdf8d6bfb2cc859558f5a393cb949dbd48f269343b5263dcdb9c556eca074f2e98e6d94c2c29a677afaf806edf79b15a3fcd46e7067b7669f83188ee -d = e283871239837e13b95f789e6e1af63bf61c918c992e62bca040d64cad1fc2ef -Q = 0474ccd8a62fba0e667c50929a53f78c21b8ff0c3c737b0b40b1750b2302b0bde829074e21f3a0ef88b9efdf10d06aa4c295cc1671f758ca0e4cd108803d0f2614 -k = ad5e887eb2b380b8d8280ad6e5ff8a60f4d26243e0124c2f31a297b5d0835de2 -Sig = 35fb60f5ca0f3ca08542fb3cc641c8263a2cab7a90ee6a5e1583fac2bb6f6bd1ee59d81bc9db1055cc0ed97b159d8784af04e98511d0a9a407b99bb292572e96 - -Curve = P-256 -Digest = SHA256 -Msg = 0989122410d522af64ceb07da2c865219046b4c3d9d99b01278c07ff63eaf1039cb787ae9e2dd46436cc0415f280c562bebb83a23e639e476a02ec8cff7ea06cd12c86dcc3adefbf1a9e9a9b6646c7599ec631b0da9a60debeb9b3e19324977f3b4f36892c8a38671c8e1cc8e50fcd50f9e51deaf98272f9266fc702e4e57c30 -d = a3d2d3b7596f6592ce98b4bfe10d41837f10027a90d7bb75349490018cf72d07 -Q = 04322f80371bf6e044bc49391d97c1714ab87f990b949bc178cb7c43b7c22d89e13c15d54a5cc6b9f09de8457e873eb3deb1fceb54b0b295da6050294fae7fd999 -k = 24fc90e1da13f17ef9fe84cc96b9471ed1aaac17e3a4bae33a115df4e5834f18 -Sig = d7c562370af617b581c84a2468cc8bd50bb1cbf322de41b7887ce07c0e5884cab46d9f2d8c4bf83546ff178f1d78937c008d64e8ecc5cbb825cb21d94d670d89 - -Curve = P-256 -Digest = SHA256 -Msg = dc66e39f9bbfd9865318531ffe9207f934fa615a5b285708a5e9c46b7775150e818d7f24d2a123df3672fff2094e3fd3df6fbe259e3989dd5edfcccbe7d45e26a775a5c4329a084f057c42c13f3248e3fd6f0c76678f890f513c32292dd306eaa84a59abe34b16cb5e38d0e885525d10336ca443e1682aa04a7af832b0eee4e7 -d = 53a0e8a8fe93db01e7ae94e1a9882a102ebd079b3a535827d583626c272d280d -Q = 041bcec4570e1ec2436596b8ded58f60c3b1ebc6a403bc5543040ba829630572448af62a4c683f096b28558320737bf83b9959a46ad2521004ef74cf85e67494e1 -k = 5d833e8d24cc7a402d7ee7ec852a3587cddeb48358cea71b0bedb8fabe84e0c4 -Sig = 18caaf7b663507a8bcd992b836dec9dc5703c080af5e51dfa3a9a7c38718260477c68928ac3b88d985fb43fb615fb7ff45c18ba5c81af796c613dfa98352d29c - -Curve = P-256 -Digest = SHA256 -Msg = 600974e7d8c5508e2c1aab0783ad0d7c4494ab2b4da265c2fe496421c4df238b0be25f25659157c8a225fb03953607f7df996acfd402f147e37aee2f1693e3bf1c35eab3ae360a2bd91d04622ea47f83d863d2dfecb618e8b8bdc39e17d15d672eee03bb4ce2cc5cf6b217e5faf3f336fdd87d972d3a8b8a593ba85955cc9d71 -d = 4af107e8e2194c830ffb712a65511bc9186a133007855b49ab4b3833aefc4a1d -Q = 04a32e50be3dae2c8ba3f5e4bdae14cf7645420d425ead94036c22dd6c4fc59e00d623bf641160c289d6742c6257ae6ba574446dd1d0e74db3aaa80900b78d4ae9 -k = e18f96f84dfa2fd3cdfaec9159d4c338cd54ad314134f0b31e20591fc238d0ab -Sig = 8524c5024e2d9a73bde8c72d9129f57873bbad0ed05215a372a84fdbc78f2e68d18c2caf3b1072f87064ec5e8953f51301cada03469c640244760328eb5a05cb - -Curve = P-256 -Digest = SHA256 -Msg = dfa6cb9b39adda6c74cc8b2a8b53a12c499ab9dee01b4123642b4f11af336a91a5c9ce0520eb2395a6190ecbf6169c4cba81941de8e76c9c908eb843b98ce95e0da29c5d4388040264e05e07030a577cc5d176387154eabae2af52a83e85c61c7c61da930c9b19e45d7e34c8516dc3c238fddd6e450a77455d534c48a152010b -d = 78dfaa09f1076850b3e206e477494cddcfb822aaa0128475053592c48ebaf4ab -Q = 048bcfe2a721ca6d753968f564ec4315be4857e28bef1908f61a366b1f03c974790f67576a30b8e20d4232d8530b52fb4c89cbc589ede291e499ddd15fe870ab96 -k = 295544dbb2da3da170741c9b2c6551d40af7ed4e891445f11a02b66a5c258a77 -Sig = c5a186d72df452015480f7f338970bfe825087f05c0088d95305f87aacc9b25484a58f9e9d9e735344b316b1aa1ab5185665b85147dc82d92e969d7bee31ca30 - -Curve = P-256 -Digest = SHA256 -Msg = 51d2547cbff92431174aa7fc7302139519d98071c755ff1c92e4694b58587ea560f72f32fc6dd4dee7d22bb7387381d0256e2862d0644cdf2c277c5d740fa089830eb52bf79d1e75b8596ecf0ea58a0b9df61e0c9754bfcd62efab6ea1bd216bf181c5593da79f10135a9bc6e164f1854bc8859734341aad237ba29a81a3fc8b -d = 80e692e3eb9fcd8c7d44e7de9f7a5952686407f90025a1d87e52c7096a62618a -Q = 04a88bc8430279c8c0400a77d751f26c0abc93e5de4ad9a4166357952fe041e7672d365a1eef25ead579cc9a069b6abc1b16b81c35f18785ce26a10ba6d1381185 -k = 7c80fd66d62cc076cef2d030c17c0a69c99611549cb32c4ff662475adbe84b22 -Sig = 9d0c6afb6df3bced455b459cc21387e14929392664bb8741a3693a1795ca6902d7f9ddd191f1f412869429209ee3814c75c72fa46a9cccf804a2f5cc0b7e739f - -Curve = P-256 -Digest = SHA256 -Msg = 558c2ac13026402bad4a0a83ebc9468e50f7ffab06d6f981e5db1d082098065bcff6f21a7a74558b1e8612914b8b5a0aa28ed5b574c36ac4ea5868432a62bb8ef0695d27c1e3ceaf75c7b251c65ddb268696f07c16d2767973d85beb443f211e6445e7fe5d46f0dce70d58a4cd9fe70688c035688ea8c6baec65a5fc7e2c93e8 -d = 5e666c0db0214c3b627a8e48541cc84a8b6fd15f300da4dff5d18aec6c55b881 -Q = 041bc487570f040dc94196c9befe8ab2b6de77208b1f38bdaae28f9645c4d2bc3aec81602abd8345e71867c8210313737865b8aa186851e1b48eaca140320f5d8f -k = 2e7625a48874d86c9e467f890aaa7cd6ebdf71c0102bfdcfa24565d6af3fdce9 -Sig = 2f9e2b4e9f747c657f705bffd124ee178bbc5391c86d056717b140c153570fd9f5413bfd85949da8d83de83ab0d19b2986613e224d1901d76919de23ccd03199 - -Curve = P-256 -Digest = SHA256 -Msg = 4d55c99ef6bd54621662c3d110c3cb627c03d6311393b264ab97b90a4b15214a5593ba2510a53d63fb34be251facb697c973e11b665cb7920f1684b0031b4dd370cb927ca7168b0bf8ad285e05e9e31e34bc24024739fdc10b78586f29eff94412034e3b606ed850ec2c1900e8e68151fc4aee5adebb066eb6da4eaa5681378e -d = f73f455271c877c4d5334627e37c278f68d143014b0a05aa62f308b2101c5308 -Q = 04b8188bd68701fc396dab53125d4d28ea33a91daf6d21485f4770f6ea8c565dde423f058810f277f8fe076f6db56e9285a1bf2c2a1dae145095edd9c04970bc4a -k = 62f8665fd6e26b3fa069e85281777a9b1f0dfd2c0b9f54a086d0c109ff9fd615 -Sig = 1cc628533d0004b2b20e7f4baad0b8bb5e0673db159bbccf92491aef61fc9620880e0bbf82a8cf818ed46ba03cf0fc6c898e36fca36cc7fdb1d2db7503634430 - -Curve = P-256 -Digest = SHA256 -Msg = f8248ad47d97c18c984f1f5c10950dc1404713c56b6ea397e01e6dd925e903b4fadfe2c9e877169e71ce3c7fe5ce70ee4255d9cdc26f6943bf48687874de64f6cf30a012512e787b88059bbf561162bdcc23a3742c835ac144cc14167b1bd6727e940540a9c99f3cbb41fb1dcb00d76dda04995847c657f4c19d303eb09eb48a -d = b20d705d9bd7c2b8dc60393a5357f632990e599a0975573ac67fd89b49187906 -Q = 0451f99d2d52d4a6e734484a018b7ca2f895c2929b6754a3a03224d07ae61166ce4737da963c6ef7247fb88d19f9b0c667cac7fe12837fdab88c66f10d3c14cad1 -k = 72b656f6b35b9ccbc712c9f1f3b1a14cbbebaec41c4bca8da18f492a062d6f6f -Sig = 9886ae46c1415c3bc959e82b760ad760aab66885a84e620aa339fdf102465c422bf3a80bc04faa35ebecc0f4864ac02d349f6f126e0f988501b8d3075409a26c - -Curve = P-256 -Digest = SHA256 -Msg = 3b6ee2425940b3d240d35b97b6dcd61ed3423d8e71a0ada35d47b322d17b35ea0472f35edd1d252f87b8b65ef4b716669fc9ac28b00d34a9d66ad118c9d94e7f46d0b4f6c2b2d339fd6bcd351241a387cc82609057048c12c4ec3d85c661975c45b300cb96930d89370a327c98b67defaa89497aa8ef994c77f1130f752f94a4 -d = d4234bebfbc821050341a37e1240efe5e33763cbbb2ef76a1c79e24724e5a5e7 -Q = 048fb287f0202ad57ae841aea35f29b2e1d53e196d0ddd9aec24813d64c0922fb71f6daff1aa2dd2d6d3741623eecb5e7b612997a1039aab2e5cf2de969cfea573 -k = d926fe10f1bfd9855610f4f5a3d666b1a149344057e35537373372ead8b1a778 -Sig = 490efd106be11fc365c7467eb89b8d39e15d65175356775deab211163c2504cb644300fc0da4d40fb8c6ead510d14f0bd4e1321a469e9c0a581464c7186b7aa7 - -Curve = P-256 -Digest = SHA256 -Msg = c5204b81ec0a4df5b7e9fda3dc245f98082ae7f4efe81998dcaa286bd4507ca840a53d21b01e904f55e38f78c3757d5a5a4a44b1d5d4e480be3afb5b394a5d2840af42b1b4083d40afbfe22d702f370d32dbfd392e128ea4724d66a3701da41ae2f03bb4d91bb946c7969404cb544f71eb7a49eb4c4ec55799bda1eb545143a7 -d = b58f5211dff440626bb56d0ad483193d606cf21f36d9830543327292f4d25d8c -Q = 0468229b48c2fe19d3db034e4c15077eb7471a66031f28a980821873915298ba76303e8ee3742a893f78b810991da697083dd8f11128c47651c27a56740a80c24c -k = e158bf4a2d19a99149d9cdb879294ccb7aaeae03d75ddd616ef8ae51a6dc1071 -Sig = e67a9717ccf96841489d6541f4f6adb12d17b59a6bef847b6183b8fcf16a32eb9ae6ba6d637706849a6a9fc388cf0232d85c26ea0d1fe7437adb48de58364333 - -Curve = P-256 -Digest = SHA256 -Msg = 72e81fe221fb402148d8b7ab03549f1180bcc03d41ca59d7653801f0ba853add1f6d29edd7f9abc621b2d548f8dbf8979bd16608d2d8fc3260b4ebc0dd42482481d548c7075711b5759649c41f439fad69954956c9326841ea6492956829f9e0dc789f73633b40f6ac77bcae6dfc7930cfe89e526d1684365c5b0be2437fdb01 -d = 54c066711cdb061eda07e5275f7e95a9962c6764b84f6f1f3ab5a588e0a2afb1 -Q = 040a7dbb8bf50cb605eb2268b081f26d6b08e012f952c4b70a5a1e6e7d46af98bbf26dd7d799930062480849962ccf5004edcfd307c044f4e8f667c9baa834eeae -k = 646fe933e96c3b8f9f507498e907fdd201f08478d0202c752a7c2cfebf4d061a -Sig = b53ce4da1aa7c0dc77a1896ab716b921499aed78df725b1504aba1597ba0c64bd7c246dc7ad0e67700c373edcfdd1c0a0495fc954549ad579df6ed1438840851 - -Curve = P-256 -Digest = SHA256 -Msg = 21188c3edd5de088dacc1076b9e1bcecd79de1003c2414c3866173054dc82dde85169baa77993adb20c269f60a5226111828578bcc7c29e6e8d2dae81806152c8ba0c6ada1986a1983ebeec1473a73a04795b6319d48662d40881c1723a706f516fe75300f92408aa1dc6ae4288d2046f23c1aa2e54b7fb6448a0da922bd7f34 -d = 34fa4682bf6cb5b16783adcd18f0e6879b92185f76d7c920409f904f522db4b1 -Q = 04105d22d9c626520faca13e7ced382dcbe93498315f00cc0ac39c4821d0d737376c47f3cbbfa97dfcebe16270b8c7d5d3a5900b888c42520d751e8faf3b401ef4 -k = a6f463ee72c9492bc792fe98163112837aebd07bab7a84aaed05be64db3086f4 -Sig = 542c40a18140a6266d6f0286e24e9a7bad7650e72ef0e2131e629c076d9626634f7f65305e24a6bbb5cff714ba8f5a2cee5bdc89ba8d75dcbf21966ce38eb66f - -# [P-384,SHA-384] - -Curve = P-384 -Digest = SHA384 -Msg = 6b45d88037392e1371d9fd1cd174e9c1838d11c3d6133dc17e65fa0c485dcca9f52d41b60161246039e42ec784d49400bffdb51459f5de654091301a09378f93464d52118b48d44b30d781eb1dbed09da11fb4c818dbd442d161aba4b9edc79f05e4b7e401651395b53bd8b5bd3f2aaa6a00877fa9b45cadb8e648550b4c6cbe -d = 201b432d8df14324182d6261db3e4b3f46a8284482d52e370da41e6cbdf45ec2952f5db7ccbce3bc29449f4fb080ac97 -Q = 04c2b47944fb5de342d03285880177ca5f7d0f2fcad7678cce4229d6e1932fcac11bfc3c3e97d942a3c56bf34123013dbf37257906a8223866eda0743c519616a76a758ae58aee81c5fd35fbf3a855b7754a36d4a0672df95d6c44a81cf7620c2d -k = dcedabf85978e090f733c6e16646fa34df9ded6e5ce28c6676a00f58a25283db8885e16ce5bf97f917c81e1f25c9c771 -Sig = 50835a9251bad008106177ef004b091a1e4235cd0da84fff54542b0ed755c1d6f251609d14ecf18f9e1ddfe69b946e320475f3d30c6463b646e8d3bf2455830314611cbde404be518b14464fdb195fdcc92eb222e61f426a4a592c00a6a89721 - -Curve = P-384 -Digest = SHA384 -Msg = d768f41e6e8ec2125d6cf5786d1ba96668ac6566c5cdbbe407f7f2051f3ad6b1acdbfe13edf0d0a86fa110f405406b69085219b5a234ebdb93153241f785d45811b3540d1c37424cc7194424787a51b79679266484c787fb1ded6d1a26b9567d5ea68f04be416caf3be9bd2cafa208fe2a9e234d3ae557c65d3fe6da4cb48da4 -d = 23d9f4ea6d87b7d6163d64256e3449255db14786401a51daa7847161bf56d494325ad2ac8ba928394e01061d882c3528 -Q = 045d42d6301c54a438f65970bae2a098cbc567e98840006e356221966c86d82e8eca515bca850eaa3cd41f175f03a0cbfd4aef5a0ceece95d382bd70ab5ce1cb77408bae42b51a08816d5e5e1d3da8c18fcc95564a752730b0aabea983ccea4e2e -k = 67ba379366049008593eac124f59ab017358892ee0c063d38f3758bb849fd25d867c3561563cac1532a323b228dc0890 -Sig = fb318f4cb1276282bb43f733a7fb7c567ce94f4d02924fc758635ab2d1107108bf159b85db080cdc3b30fbb5400016f3588e3d7af5da03eae255ecb1813100d95edc243476b724b22db8e85377660d7645ddc1c2c2ee4eaea8b683dbe22f86ca - -Curve = P-384 -Digest = SHA384 -Msg = 6af6652e92a17b7898e40b6776fabaf0d74cf88d8f0ebfa6088309cbe09fac472eeac2aa8ea96b8c12e993d14c93f8ef4e8b547afe7ae5e4f3973170b35deb3239898918c70c1056332c3f894cd643d2d9b93c2561aac069577bbab45803250a31cd62226cab94d8cba7261dce9fe88c210c212b54329d76a273522c8ba91ddf -d = b5f670e98d8befc46f6f51fb2997069550c2a52ebfb4e5e25dd905352d9ef89eed5c2ecd16521853aadb1b52b8c42ae6 -Q = 0444ffb2a3a95e12d87c72b5ea0a8a7cb89f56b3bd46342b2303608d7216301c21b5d2921d80b6628dc512ccb84e2fc278e4c1002f1828abaec768cadcb7cf42fbf93b1709ccae6df5b134c41fae2b9a188bfbe1eccff0bd348517d7227f2071a6 -k = 229e67638f712f57bea4c2b02279d5ccad1e7c9e201c77f6f01aeb81ea90e62b44b2d2107fd66d35e56608fff65e28e4 -Sig = b11db592e4ebc75b6472b879b1d8ce57452c615aef20f67a280f8bca9b11a30ad4ac9d69541258c7dd5d0b4ab8dd7d494eb51db8004e46d438359abf060a9444616cb46b4f99c9a05b53ba6df02e914c9c0b6cc3a9791d804d2e4c0984dab1cc - -Curve = P-384 -Digest = SHA384 -Msg = b96d74b2265dd895d94e25092fb9262dc4f2f7a328a3c0c3da134b2d0a4e2058ca994e3445c5ff4f812738e1b0c0f7a126486942a12e674a21f22d0886d68df2375f41685d694d487a718024933a7c4306f33f1a4267d469c530b0fed4e7dea520a19dd68bf0203cc87cad652260ed43b7b23f6ed140d3085875190191a0381a -d = de5975d8932533f092e76295ed6b23f10fc5fba48bfb82c6cc714826baf0126813247f8bd51d5738503654ab22459976 -Q = 04f1fabafc01fec7e96d982528d9ef3a2a18b7fe8ae0fa0673977341c7ae4ae8d8d3d67420343d013a984f5f61da29ae381a31cf902c46343d01b2ebb614bc789c313b5f91f9302ad9418e9c797563e2fa3d44500f47b4e26ad8fdec1a816d1dcf -k = fc5940e661542436f9265c34bce407eff6364bd471aa79b90c906d923e15c9ed96eea4e86f3238ea86161d13b7d9359d -Sig = c2fbdd6a56789024082173725d797ef9fd6accb6ae664b7260f9e83cb8ab2490428c8b9c52e153612295432fec4d59cd8056c5bb57f41f73082888b234fcda320a33250b5da012ba1fdb4924355ae679012d81d2c08fc0f8634c708a4833232f - -Curve = P-384 -Digest = SHA384 -Msg = 7cec7480a037ff40c232c1d2d6e8cd4c080bbeecdaf3886fccc9f129bb6d202c316eca76c8ad4e76079afe622f833a16f4907e817260c1fa68b10c7a151a37eb8c036b057ed4652c353db4b4a34b37c9a2b300fb5f5fcfb8aa8adae13db359160f70a9241546140e550af0073468683377e6771b6508327408c245d78911c2cc -d = 11e0d470dc31fab0f5722f87b74a6c8d7414115e58ceb38bfcdced367beac3adbf1fe9ba5a04f72e978b1eb54597eabc -Q = 041950166989164cbfd97968c7e8adb6fbca1873ebef811ea259eb48b7d584627f0e6d6c64defe23cbc95236505a252aa141ef424b5cb076d4e32accd9250ea75fcf4ffd81814040c050d58c0a29b06be11edf67c911b403e418b7277417e52906 -k = e56904028226eb04f8d071e3f9cefec91075a81ca0fa87b44cae148fe1ce9827b5d1910db2336d0eb9813ddba3e4d7b5 -Sig = c38ef30f55624e8935680c29f8c24824877cf48ffc0ef015e62de1068893353030d1193bf9d34237d7ce6ba92c98b0fe651b8c3d5c9d5b936d300802a06d82ad54f7b1ba4327b2f031c0c5b0cb215ad4354edc7f932d934e877dfa1cf51b13fe - -Curve = P-384 -Digest = SHA384 -Msg = 00ce978603229710345c9ad7c1c2dba3596b196528eea25bd822d43ca8f76a024e29217703dd0652c8a615284fc3edcc1c5ad1c8d5a8521c8e104c016a24e50c2e25066dcb56596f913b872767e3627aa3e55ec812e9fdac7c2f1beade83aef093e24c9c953982adf431a776880ae4583be158e11cdab1cbca3ad3a66900213d -d = 5c6bbf9fbcbb7b97c9535f57b431ed1ccae1945b7e8a4f1b032016b07810bd24a9e20055c0e9306650df59ef7e2cd8c2 -Q = 042e01c5b59e619e00b79060a1e8ef695472e23bf9a511fc3d5ed77a334a242557098e40972713732c5291c97adf9cf2cf563e3fe4ad807e803b9e961b08da4dde4cea8925649da0d93221ce4cdceabc6a1db7612180a8c6bef3579c65539b97e9 -k = 03d23f1277b949cb6380211ad9d338e6f76c3eedac95989b91d0243cfb734a54b19bca45a5d13d6a4b9f815d919eea77 -Sig = abab65308f0b79c4f3a9ff28dd490acb0c320434094cef93e75adfe17e5820dc1f77544cfaaacdc8cf9ac8b38e174bef11b783d879a6de054b316af7d56e526c3dce96c85289122e3ad927cfa77bfc50b4a96c97f85b1b8221be2df083ff58fb - -Curve = P-384 -Digest = SHA384 -Msg = 54a255c18692c6162a46add176a0ae8361dcb8948f092d8d7bac83e160431794d3b9812849bf1994bcdcfba56e8540c8a9ee5b93414548f2a653191b6bb28bda8dc70d45cc1b92a489f58a2d54f85766cb3c90de7dd88e690d8ebc9a79987eee1989df35af5e35522f83d85c48dda89863171c8b0bf4853ae28c2ac45c764416 -d = ffc7dedeff8343721f72046bc3c126626c177b0e48e247f44fd61f8469d4d5f0a74147fabaa334495cc1f986ebc5f0b1 -Q = 0451c78c979452edd53b563f63eb3e854a5b23e87f1b2103942b65f77d024471f75c8ce1cc0dfef83292b368112aa5126e313e6aaf09caa3ba30f13072b2134878f14a4a01ee86326cccbff3d079b4df097dc57985e8c8c834a10cb9d766169366 -k = c3de91dbe4f777698773da70dd610ef1a7efe4dc00d734399c7dd100728006a502822a5a7ff9129ffd8adf6c1fc1211a -Sig = f4f477855819ad8b1763f53691b76afbc4a31a638b1e08c293f9bcd55decf797f9913ca128d4b45b2e2ea3e82c6cf5657c26be29569ef95480a6d0c1af49dc10a51a0a8931345e48c0c39498bfb94d62962980b56143a7b41a2fddc8794c1b7f - -Curve = P-384 -Digest = SHA384 -Msg = 692a78f90d4f9d5aee5da536314a78d68c1feabbfe5d1ccea7f6059a66c4b310f8051c411c409ccf6e19a0cbd8b8e100c48317fe8c6d4f8a638b9551ce7ee178020f04f7da3001a0e6855225fb3c9b375e4ed964588a1a41a095f3f476c42d52ffd23ce1702c93b56d4425d3befcf75d0951b6fd5c05b05455bdaf205fe70ca2 -d = adca364ef144a21df64b163615e8349cf74ee9dbf728104215c532073a7f74e2f67385779f7f74ab344cc3c7da061cf6 -Q = 04ef948daae68242330a7358ef73f23b56c07e37126266db3fa6eea233a04a9b3e4915233dd6754427cd4b71b75854077d009453ef1828eaff9e17c856d4fc1895ab60051312c3e1db1e3766566438b2990cbf9945c2545619e3e0145bc6a79004 -k = a2da3fae2e6da3cf11b49861afb34fba357fea89f54b35ce5ed7434ae09103fe53e2be75b93fc579fedf919f6d5e407e -Sig = dda994b9c428b57e9f8bbaebba0d682e3aac6ed828e3a1e99a7fc4c804bff8df151137f539c7389d80e23d9f3ee497bfa0d6b10ceffd0e1b29cf784476f9173ba6ecd2cfc7929725f2d6e24e0db5a4721683640eaa2bbe151fb57560f9ce594b - -Curve = P-384 -Digest = SHA384 -Msg = 3b309bb912ab2a51681451ed18ad79e95d968abc35423a67036a02af92f575a0c89f1b668afe22c7037ad1199e757a8f06b281c33e9a40bab69c9874e0bb680b905d909b9dc24a9fe89bb3d7f7d47082b25093c59754f8c19d1f81f30334a8cdd50a3cb72f96d4b3c305e60a439a7e93aeb640dd3c8de37d63c60fb469c2d3ed -d = 39bea008ec8a217866dcbdb1b93da34d1d3e851d011df9ef44b7828b3453a54aa70f1df9932170804eacd207e4f7e91d -Q = 045709ec4305a9c3271c304face6c148142490b827a73a4c17affcfd01fffd7eaa65d2fdedfa2419fc64ed910823513fafb083cda1cf3be6371b6c06e729ea6299213428db57119347247ec1fcd44204386cc0bca3f452d9d864b39efbfc89d6b2 -k = 3c90cc7b6984056f570542a51cbe497ce4c11aeae8fc35e8fd6a0d9adeb650e8644f9d1d5e4341b5adc81e27f284c08f -Sig = d13646895afb1bfd1953551bb922809c95ad65d6abe94eb3719c899aa1f6dba6b01222c7f283900fe98628b7597b6ea64a9a38afda04c0a6b0058943b679bd02205b14d0f3d49b8f31aac289129780cdb1c555def8c3f9106b478729e0c7efaa - -Curve = P-384 -Digest = SHA384 -Msg = f072b72b8783289463da118613c43824d11441dba364c289de03ff5fab3a6f60e85957d8ff211f1cb62fa90216fb727106f692e5ae0844b11b710e5a12c69df3ed895b94e8769ecd15ff433762d6e8e94d8e6a72645b213b0231344e2c968056766c5dd6b5a5df41971858b85e99afbf859400f839b42cd129068efabeea4a26 -d = e849cf948b241362e3e20c458b52df044f2a72deb0f41c1bb0673e7c04cdd70811215059032b5ca3cc69c345dcce4cf7 -Q = 0406c037a0cbf43fdf335dff33de06d34348405353f9fdf2ce1361efba30fb204aea9dbd2e30da0a10fd2d876188371be6360d38f3940e34679204b98fbf70b8a4d97f25443e46d0807ab634ed5891ad864dd7703557aa933cd380e26eea662a43 -k = 32386b2593c85e877b70e5e5495936f65dc49553caef1aa6cc14d9cd370c442a0ccfab4c0da9ec311b67913b1b575a9d -Sig = 5886078d3495767e330c7507b7ca0fa07a50e59912a416d89f0ab1aa4e88153d6eaf00882d1b4aa64153153352d853b52cc10023bf1bf8ccfd14b06b82cc2114449a352389c8ff9f6f78cdc4e32bde69f3869da0e17f691b329682ae7a36e1aa - -Curve = P-384 -Digest = SHA384 -Msg = cf4945350be8133b575c4ad6c9585e0b83ff1ed17989b6cd6c71b41b5264e828b4e115995b1ae77528e7e9002ac1b5669064442645929f9d7dd70927cb93f95edeb73e8624f4bc897ec4c2c7581cb626916f29b2d6e6c2fba8c59a71e30754b459d81b912a12798182bcff4019c7bdfe929cc769bcc2414befe7d2906add4271 -d = d89607475d509ef23dc9f476eae4280c986de741b63560670fa2bd605f5049f1972792c0413a5b3b4b34e7a38b70b7ca -Q = 0449a1c631f31cf5c45b2676b1f130cbf9be683d0a50dffae0d147c1e9913ab1090c6529a84f47ddc7cf025921b771355a1e207eece62f2bcc6bdabc1113158145170be97469a2904eaaa93aad85b86a19719207f3e423051f5b9cbbe2754eefcb -k = 78613c570c8d33b7dd1bd1561d87e36282e8cf4843e7c344a2b2bb6a0da94756d670eeaffe434f7ae7c780f7cf05ca08 -Sig = 66f92b39aa3f4aeb9e2dc03ac3855406fa3ebbab0a6c88a78d7a03482f0c9868d7b78bc081ede0947c7f37bf193074bae5c64ed98d7f3701193f25dd237d59c91c0da6e26215e0889d82e6d3e416693f8d58843cf30ab10ab8d0edd9170b53ad - -Curve = P-384 -Digest = SHA384 -Msg = d9b5cf0b50416573ff3c63133275a18394dd4326be2041e8d97e6e4e3855a4a177e9d26dfd223fe8aa74564edb49bd72de19916fb6f001f44530d5c18e2c332bce1b7415df5927ece5f3824f34d174b963136b53aef1fb78fb0c06a201a40b2db38e4d8216fc1e392a798c8ab4b3a314496b7f1087804ebfa89bf96e9cdb80c0 -d = 083e7152734adf342520ae377087a223688de2899b10cfcb34a0b36bca500a4dfa530e2343e6a39da7ae1eb0862b4a0d -Q = 0470a0f16b6c61172659b027ed19b18fd8f57bd28dc0501f207bd6b0bb065b5671cf3dd1ed13d388dcf6ccc766597aa6044f845bf01c3c3f6126a7368c3454f51425801ee0b72e63fb6799b4420bfdebe3e37c7246db627cc82c09654979c700bb -k = 28096ababe29a075fbdf894709a20d0fdedb01ed3eeacb642a33a0da6aed726e13caf6cf206792ec359f0c9f9b567552 -Sig = ee2923f9b9999ea05b5e57f505bed5c6ba0420def42c6fa90eef7a6ef770786525546de27cdeb2f8586f8f29fb4ee67c50ef923fb217c4cf65a48b94412fda430fac685f0da7bd574557c6c50f5b22e0c8354d99f2c2f2c2691f252f93c7d84a - -Curve = P-384 -Digest = SHA384 -Msg = 9e4042d8438a405475b7dab1cd783eb6ce1d1bffa46ac9dfda622b23ac31057b922eced8e2ed7b3241efeafd7c9ab372bf16230f7134647f2956fb793989d3c885a5ae064e85ed971b64f5f561e7ddb79d49aa6ebe727c671c67879b794554c04de0e05d68264855745ef3c9567bd646d5c5f8728b797c181b6b6a876e167663 -d = 63578d416215aff2cc78f9b926d4c7740a77c142944e104aa7422b19a616898262d46a8a942d5e8d5db135ee8b09a368 -Q = 04cadbacef4406099316db2ce3206adc636c2bb0a835847ed7941efb02862472f3150338f13f4860d47f39b7e098f0a390752ad0f22c9c264336cde11bbc95d1816ed4d1b1500db6b8dce259a42832e613c31178c2c7995206a62e201ba108f570 -k = 7b69c5d5b4d05c9950dc94c27d58403b4c52c004b80a80418ad3a89aabc5d34f21926729e76afd280cc8ee88c9805a2a -Sig = db054addb6161ee49c6ce2e4d646d7670754747b6737ca8516e9d1e87859937c3ef9b1d2663e10d7e4bd00ec85b7a97afcc504e0f00ef29587e4bc22faada4db30e2cb1ac552680a65785ae87beb666c792513f2be7a3180fc544296841a0e27 - -Curve = P-384 -Digest = SHA384 -Msg = 0b14a7484a40b68a3ce1273b8a48b8fdb65ba900d98541c4bbd07b97e31bcc4c85545a03e9deab3c563f47a036ff60d0361684ba241b5aa68bb46f440da22181ee328a011de98eff34ba235ec10612b07bdfa6b3dc4ccc5e82d3a8d057e1862fef3def5a1804696f84699fda2ec4175a54a4d08bcb4f0406fdac4eddadf5e29b -d = ed4df19971658b74868800b3b81bc877807743b25c65740f1d6377542afe2c6427612c840ada31a8eb794718f37c7283 -Q = 0433093a0568757e8b58df5b72ea5fe5bf26e6f7aeb541b4c6a8c189c93721749bcaceccf2982a2f0702586a9f812fc66febe320d09e1f0662189d50b85a20403b821ac0d000afdbf66a0a33f304726c69e354d81c50b94ba3a5250efc31319cd1 -k = d9b4cd1bdfa83e608289634dbfcee643f07315baf743fc91922880b55a2feda3b38ddf6040d3ba10985cd1285fc690d5 -Sig = 009c74063e206a4259b53decff5445683a03f44fa67252b76bd3581081c714f882f882df915e97dbeab061fa8b3cc4e7d40e09d3468b46699948007e8f59845766dbf694b9c62066890dd055c0cb9a0caf0aa611fb9f466ad0bbb00dbe29d7eb - -Curve = P-384 -Digest = SHA384 -Msg = 0e646c6c3cc0f9fdedef934b7195fe3837836a9f6f263968af95ef84cd035750f3cdb649de745c874a6ef66b3dd83b66068b4335bc0a97184182e3965c722b3b1aee488c3620adb835a8140e199f4fc83a88b02881816b366a09316e25685217f9221157fc05b2d8d2bc855372183da7af3f0a14148a09def37a332f8eb40dc9 -d = e9c7e9a79618d6ff3274da1abd0ff3ed0ec1ae3b54c3a4fd8d68d98fb04326b7633fc637e0b195228d0edba6bb1468fb -Q = 04a39ac353ca787982c577aff1e8601ce192aa90fd0de4c0ed627f66a8b6f02ae51315543f72ffc1c48a7269b25e7c289a9064a507b66b340b6e0e0d5ffaa67dd20e6dafc0ea6a6faee1635177af256f9108a22e9edf736ab4ae8e96dc207b1fa9 -k = b094cb3a5c1440cfab9dc56d0ec2eff00f2110dea203654c70757254aa5912a7e73972e607459b1f4861e0b08a5cc763 -Sig = ee82c0f90501136eb0dc0e459ad17bf3be1b1c8b8d05c60068a9306a346326ff7344776a95f1f7e2e2cf9477130e735caf10b90f203af23b7500e070536e64629ba19245d6ef39aab57fcdb1b73c4c6bf7070c6263544633d3d358c12a178138 diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/signing.rs temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/signing.rs --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/signing.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/signing.rs 2023-10-30 19:40:00.000000000 +0000 @@ -86,7 +86,7 @@ let private_key = ec::Seed::generate(alg.curve, rng, cpu::features())?; let public_key = private_key.compute_public_key()?; Ok(pkcs8::wrap_key( - &alg.pkcs8_template, + alg.pkcs8_template, private_key.bytes_less_safe(), public_key.as_ref(), )) @@ -105,6 +105,7 @@ pub fn from_pkcs8( alg: &'static EcdsaSigningAlgorithm, pkcs8: &[u8], + rng: &dyn rand::SecureRandom, ) -> Result { let key_pair = ec::suite_b::key_pair_from_pkcs8( alg.curve, @@ -112,8 +113,7 @@ untrusted::Input::from(pkcs8), cpu::features(), )?; - let rng = rand::SystemRandom::new(); // TODO: make this a parameter. - Self::new(alg, key_pair, &rng) + Self::new(alg, key_pair, rng) } /// Constructs an ECDSA key pair from the private key and public key bytes @@ -136,6 +136,7 @@ alg: &'static EcdsaSigningAlgorithm, private_key: &[u8], public_key: &[u8], + rng: &dyn rand::SecureRandom, ) -> Result { let key_pair = ec::suite_b::key_pair_from_bytes( alg.curve, @@ -143,8 +144,7 @@ untrusted::Input::from(public_key), cpu::features(), )?; - let rng = rand::SystemRandom::new(); // TODO: make this a parameter. - Self::new(alg, key_pair, &rng) + Self::new(alg, key_pair, rng) } fn new( @@ -168,8 +168,7 @@ }) } - /// Deprecated. Returns the signature of the `message` using a random nonce - /// generated by `rng`. + /// Returns the signature of the `message` using a random nonce generated by `rng`. pub fn sign( &self, rng: &dyn rand::SecureRandom, @@ -315,10 +314,10 @@ // The random value is digested between the key and the message so that // the key and the message are not directly digested in the same digest // block. - assert!(key.len() <= digest_alg.block_len / 2); + assert!(key.len() <= digest_alg.block_len() / 2); { let mut rand = [0u8; digest::MAX_BLOCK_LEN]; - let rand = &mut rand[..digest_alg.block_len - key.len()]; + let rand = &mut rand[..digest_alg.block_len() - key.len()]; assert!(rand.len() >= dest.len()); self.rng.fill(rand)?; ctx.update(rand); @@ -358,7 +357,7 @@ let mut ctx = digest::Context::new(alg.digest_alg); ctx.update(rand); ctx.update(seed.bytes_less_safe()); - Ok(NonceRandomKey(ctx.finish())) + Ok(Self(ctx.finish())) } } @@ -422,7 +421,7 @@ assert!(value.len() < 128); out[1] = value.len() as u8; - out[2..][..value.len()].copy_from_slice(&value); + out[2..][..value.len()].copy_from_slice(value); 2 + value.len() } @@ -515,10 +514,12 @@ #[cfg(test)] mod tests { - use crate::{signature, test}; + use crate::{rand, signature, test}; #[test] fn signature_ecdsa_sign_fixed_test() { + let rng = rand::SystemRandom::new(); + test::run( test_file!("ecdsa_sign_fixed_tests.txt"), |section, test_case| { @@ -542,7 +543,8 @@ }; let private_key = - signature::EcdsaKeyPair::from_private_key_and_public_key(alg, &d, &q).unwrap(); + signature::EcdsaKeyPair::from_private_key_and_public_key(alg, &d, &q, &rng) + .unwrap(); let rng = test::rand::FixedSliceRandom { bytes: &k }; let actual_result = private_key @@ -558,6 +560,8 @@ #[test] fn signature_ecdsa_sign_asn1_test() { + let rng = rand::SystemRandom::new(); + test::run( test_file!("ecdsa_sign_asn1_tests.txt"), |section, test_case| { @@ -581,7 +585,8 @@ }; let private_key = - signature::EcdsaKeyPair::from_private_key_and_public_key(alg, &d, &q).unwrap(); + signature::EcdsaKeyPair::from_private_key_and_public_key(alg, &d, &q, &rng) + .unwrap(); let rng = test::rand::FixedSliceRandom { bytes: &k }; let actual_result = private_key diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/verification.rs temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/verification.rs --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/verification.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ecdsa/verification.rs 2023-10-30 19:40:00.000000000 +0000 @@ -150,15 +150,18 @@ let cops = ops.public_key_ops.common; let r_jacobian = cops.elem_product(z2, r); let x = cops.elem_unencoded(x); - ops.elem_equals(&r_jacobian, &x) + ops.elem_equals_vartime(&r_jacobian, &x) } - let r = self.ops.scalar_as_elem(&r); + let mut r = self.ops.scalar_as_elem(&r); if sig_r_equals_x(self.ops, &r, &x, &z2) { return Ok(()); } if self.ops.elem_less_than(&r, &self.ops.q_minus_n) { - let r_plus_n = self.ops.elem_sum(&r, &public_key_ops.common.n); - if sig_r_equals_x(self.ops, &r_plus_n, &x, &z2) { + self.ops + .private_key_ops + .common + .elem_add(&mut r, &public_key_ops.common.n); + if sig_r_equals_x(self.ops, &r, &x, &z2) { return Ok(()); } } @@ -286,9 +289,10 @@ #[cfg(test)] mod tests { + extern crate alloc; use super::*; use crate::test; - use alloc::vec::Vec; + use alloc::{vec, vec::Vec}; #[test] fn test_digest_based_test_vectors() { @@ -300,8 +304,7 @@ let curve_name = test_case.consume_string("Curve"); let public_key = { - let mut public_key = Vec::new(); - public_key.push(0x04); + let mut public_key = vec![0x04]; public_key.extend(&test_case.consume_bytes("X")); public_key.extend(&test_case.consume_bytes("Y")); public_key @@ -327,7 +330,7 @@ }; let digest = super::super::digest_scalar::digest_bytes_scalar( - &alg.ops.scalar_ops, + alg.ops.scalar_ops, &digest[..], ); let actual_result = alg.verify_digest( diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_elem_mul_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_elem_mul_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_elem_mul_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_elem_mul_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ - -a = 00 -b = 00 -r = 00 - -a = 00 -b = ffffffff00000001000000000000000000000000fffffffffffffffffffffffe -r = 00 - -a = 01 -b = ffffffff00000001000000000000000000000000fffffffffffffffffffffffe -r = fffffffd00000002fffffffdffffffff00000001fffffffcffffffff - -a = 02 -b = ffffffff00000001000000000000000000000000fffffffffffffffffffffffe -r = 01fffffffa00000005fffffffbfffffffe00000003fffffff9fffffffe - -a = 03 -b = ffffffff00000001000000000000000000000000fffffffffffffffffffffffe -r = 02fffffff700000008fffffff9fffffffd00000005fffffff6fffffffd - -a = 7fffffff800000008000000000000000000000007fffffffffffffffffffffff -b = 02 -r = fffffffd00000002fffffffdffffffff00000001fffffffcffffffff - -a = 7fffffff80000000800000000000000000000000800000000000000000000000 -b = 02 -r = fffffffe00000003fffffffd0000000200000001fffffffe0000000300000000 - -a = 8000000000000000000000000000000000000000000000000000000000000000 -b = 02 -r = 01 diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_elem_neg_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_elem_neg_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_elem_neg_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_elem_neg_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ - -a = 00 -b = 00 - -a = 01 -b = ffffffff00000001000000000000000000000000fffffffffffffffffffffffe - -a = 02 -b = ffffffff00000001000000000000000000000000fffffffffffffffffffffffd - -a = 03 -b = ffffffff00000001000000000000000000000000fffffffffffffffffffffffc - -a = ffffffff00000001000000000000000000000000fffffffffffffffffffffffe -b = 01 - -a = 7fffffff800000008000000000000000000000007fffffffffffffffffffffff -b = 7fffffff80000000800000000000000000000000800000000000000000000000 - -a = 7fffffff80000000800000000000000000000000800000000000000000000000 -b = 7fffffff800000008000000000000000000000007fffffffffffffffffffffff - -a = 8000000000000000000000000000000000000000000000000000000000000000 -b = 7fffffff00000001000000000000000000000000ffffffffffffffffffffffff diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_elem_sum_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_elem_sum_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_elem_sum_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_elem_sum_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,1048 +0,0 @@ -# Montgomery Arithmetic; values are in the range [0, q). - - -a = 00 -b = 00 -r = 00 - -a = 00 -b = 01 -r = 01 - -a = 00 -b = ffffffff00000001000000000000000000000000fffffffffffffffffffffffe -r = ffffffff00000001000000000000000000000000fffffffffffffffffffffffe - -a = 01 -b = ffffffff00000001000000000000000000000000fffffffffffffffffffffffe -r = 00 - -a = 02 -b = ffffffff00000001000000000000000000000000fffffffffffffffffffffffe -r = 01 - -a = 03 -b = ffffffff00000001000000000000000000000000fffffffffffffffffffffffe -r = 02 - -a = 7fffffff800000008000000000000000000000007fffffffffffffffffffffff -b = 7fffffff80000000800000000000000000000000800000000000000000000000 -r = 00 - -a = 7fffffff80000000800000000000000000000000800000000000000000000000 -b = 7fffffff80000000800000000000000000000000800000000000000000000000 -r = 01 - -a = 8000000000000000000000000000000000000000000000000000000000000000 -b = 8000000000000000000000000000000000000000000000000000000000000000 -r = fffffffeffffffffffffffffffffffff000000000000000000000001 - -a = 8000000000000000000000000000000000000000000000000000000000000000 -b = 8000000000000000000000000000000000000000000000000000000000000000 -r = fffffffeffffffffffffffffffffffff000000000000000000000001 - -a = 800000007fffffff7fffffffffffffffffffffff800000000000000000000001 -b = 7fffffff800000008000000000000000000000007fffffffffffffffffffffff -r = fffffffeffffffffffffffffffffffff000000000000000000000001 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 8000000000000000000000000000000000000000000000000000000000000000 -r = fffffffeffffffffffffffffffffffff000000000000000000000000 - -a = 800000007fffffff7fffffffffffffffffffffff800000000000000000000000 -b = 7fffffff800000008000000000000000000000007fffffffffffffffffffffff -r = fffffffeffffffffffffffffffffffff000000000000000000000000 - -# Carry Propagation. - -a = ff -b = 01 -r = 0100 - -a = 01ff -b = 01 -r = 0200 - -a = 03ff -b = 01 -r = 0400 - -a = 07ff -b = 01 -r = 0800 - -a = 0fff -b = 01 -r = 1000 - -a = 1fff -b = 01 -r = 2000 - -a = 3fff -b = 01 -r = 4000 - -a = 7fff -b = 01 -r = 8000 - -a = ffff -b = 01 -r = 010000 - -a = 01ffff -b = 01 -r = 020000 - -a = 03ffff -b = 01 -r = 040000 - -a = 07ffff -b = 01 -r = 080000 - -a = 0fffff -b = 01 -r = 100000 - -a = 1fffff -b = 01 -r = 200000 - -a = 3fffff -b = 01 -r = 400000 - -a = 7fffff -b = 01 -r = 800000 - -a = ffffff -b = 01 -r = 01000000 - -a = 01ffffff -b = 01 -r = 02000000 - -a = 03ffffff -b = 01 -r = 04000000 - -a = 07ffffff -b = 01 -r = 08000000 - -a = 0fffffff -b = 01 -r = 10000000 - -a = 1fffffff -b = 01 -r = 20000000 - -a = 3fffffff -b = 01 -r = 40000000 - -a = 7fffffff -b = 01 -r = 80000000 - -a = ffffffff -b = 01 -r = 0100000000 - -a = 01ffffffff -b = 01 -r = 0200000000 - -a = 03ffffffff -b = 01 -r = 0400000000 - -a = 07ffffffff -b = 01 -r = 0800000000 - -a = 0fffffffff -b = 01 -r = 1000000000 - -a = 1fffffffff -b = 01 -r = 2000000000 - -a = 3fffffffff -b = 01 -r = 4000000000 - -a = 7fffffffff -b = 01 -r = 8000000000 - -a = ffffffffff -b = 01 -r = 010000000000 - -a = 01ffffffffff -b = 01 -r = 020000000000 - -a = 03ffffffffff -b = 01 -r = 040000000000 - -a = 07ffffffffff -b = 01 -r = 080000000000 - -a = 0fffffffffff -b = 01 -r = 100000000000 - -a = 1fffffffffff -b = 01 -r = 200000000000 - -a = 3fffffffffff -b = 01 -r = 400000000000 - -a = 7fffffffffff -b = 01 -r = 800000000000 - -a = ffffffffffff -b = 01 -r = 01000000000000 - -a = 01ffffffffffff -b = 01 -r = 02000000000000 - -a = 03ffffffffffff -b = 01 -r = 04000000000000 - -a = 07ffffffffffff -b = 01 -r = 08000000000000 - -a = 0fffffffffffff -b = 01 -r = 10000000000000 - -a = 1fffffffffffff -b = 01 -r = 20000000000000 - -a = 3fffffffffffff -b = 01 -r = 40000000000000 - -a = 7fffffffffffff -b = 01 -r = 80000000000000 - -a = ffffffffffffff -b = 01 -r = 0100000000000000 - -a = 01ffffffffffffff -b = 01 -r = 0200000000000000 - -a = 03ffffffffffffff -b = 01 -r = 0400000000000000 - -a = 07ffffffffffffff -b = 01 -r = 0800000000000000 - -a = 0fffffffffffffff -b = 01 -r = 1000000000000000 - -a = 1fffffffffffffff -b = 01 -r = 2000000000000000 - -a = 3fffffffffffffff -b = 01 -r = 4000000000000000 - -a = 7fffffffffffffff -b = 01 -r = 8000000000000000 - -a = ffffffffffffffff -b = 01 -r = 010000000000000000 - -a = 01ffffffffffffffff -b = 01 -r = 020000000000000000 - -a = 03ffffffffffffffff -b = 01 -r = 040000000000000000 - -a = 07ffffffffffffffff -b = 01 -r = 080000000000000000 - -a = 0fffffffffffffffff -b = 01 -r = 100000000000000000 - -a = 1fffffffffffffffff -b = 01 -r = 200000000000000000 - -a = 3fffffffffffffffff -b = 01 -r = 400000000000000000 - -a = 7fffffffffffffffff -b = 01 -r = 800000000000000000 - -a = ffffffffffffffffff -b = 01 -r = 01000000000000000000 - -a = 01ffffffffffffffffff -b = 01 -r = 02000000000000000000 - -a = 03ffffffffffffffffff -b = 01 -r = 04000000000000000000 - -a = 07ffffffffffffffffff -b = 01 -r = 08000000000000000000 - -a = 0fffffffffffffffffff -b = 01 -r = 10000000000000000000 - -a = 1fffffffffffffffffff -b = 01 -r = 20000000000000000000 - -a = 3fffffffffffffffffff -b = 01 -r = 40000000000000000000 - -a = 7fffffffffffffffffff -b = 01 -r = 80000000000000000000 - -a = ffffffffffffffffffff -b = 01 -r = 0100000000000000000000 - -a = 01ffffffffffffffffffff -b = 01 -r = 0200000000000000000000 - -a = 03ffffffffffffffffffff -b = 01 -r = 0400000000000000000000 - -a = 07ffffffffffffffffffff -b = 01 -r = 0800000000000000000000 - -a = 0fffffffffffffffffffff -b = 01 -r = 1000000000000000000000 - -a = 1fffffffffffffffffffff -b = 01 -r = 2000000000000000000000 - -a = 3fffffffffffffffffffff -b = 01 -r = 4000000000000000000000 - -a = 7fffffffffffffffffffff -b = 01 -r = 8000000000000000000000 - -a = ffffffffffffffffffffff -b = 01 -r = 010000000000000000000000 - -a = 01ffffffffffffffffffffff -b = 01 -r = 020000000000000000000000 - -a = 03ffffffffffffffffffffff -b = 01 -r = 040000000000000000000000 - -a = 07ffffffffffffffffffffff -b = 01 -r = 080000000000000000000000 - -a = 0fffffffffffffffffffffff -b = 01 -r = 100000000000000000000000 - -a = 1fffffffffffffffffffffff -b = 01 -r = 200000000000000000000000 - -a = 3fffffffffffffffffffffff -b = 01 -r = 400000000000000000000000 - -a = 7fffffffffffffffffffffff -b = 01 -r = 800000000000000000000000 - -a = ffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000 - -a = 01ffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000 - -a = 03ffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000 - -a = 07ffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000 - -a = 0fffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000 - -a = 1fffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000 - -a = 3fffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000 - -a = 7fffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000 - -a = ffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000 - -a = 01ffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000 - -a = 03ffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000 - -a = 07ffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000 - -a = 0fffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000 - -a = 1fffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000 - -a = 3fffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000 - -a = 7fffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000 - -a = ffffffffffffffffffffffffffff -b = 01 -r = 010000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffff -b = 01 -r = 020000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffff -b = 01 -r = 040000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffff -b = 01 -r = 080000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffff -b = 01 -r = 100000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffff -b = 01 -r = 200000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffff -b = 01 -r = 400000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffff -b = 01 -r = 800000000000000000000000000000 - -a = ffffffffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffff -b = 01 -r = 010000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffff -b = 01 -r = 020000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffff -b = 01 -r = 040000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffff -b = 01 -r = 080000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffff -b = 01 -r = 100000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffff -b = 01 -r = 200000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffff -b = 01 -r = 400000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffff -b = 01 -r = 800000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 010000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 020000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 040000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 080000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 100000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 200000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 400000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 800000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 010000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 020000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 040000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 080000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 100000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 200000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 400000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 800000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 010000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 020000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 040000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 080000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 100000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 200000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 400000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 800000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 010000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 020000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 040000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 080000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 100000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 200000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 400000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 800000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000000000000000000000000000000000000000 diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_double_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_double_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_double_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_double_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ - -# G doubled once. -a = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -r = f6bb32e43dcf3a3b732205038d1490d9aa6ae3c1a433827d850046d410ddd64d, 78c577510a5b8a3b19a8fb0e92042dbe152cd7cbeb236ff82f3648d361bee1a5 - -# Point at infinity doubled. This uses the (0, 0, 0) representation of -# the point at infinity instead of the classic (1, 1, 0) -# representation. -a = 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 -r = inf - -# Point at infinity doubled. This form is the result of multiplying -# n * G (affine), which is more interesting than the above case -# because only the Z coordinate is zero. -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 0000000000000000000000000000000000000000000000000000000000000000 -r = inf - -# (n - 1) * G doubled. -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -r = f6bb32e43dcf3a3b732205038d1490d9aa6ae3c1a433827d850046d410ddd64d, 873a88adf5a475c5e65704f16dfbd241ead3283514dc9007d0c9b72c9e411e5a diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_mul_base_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_mul_base_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_mul_base_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_mul_base_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,1280 +0,0 @@ - -g_scalar = 00 -r = inf - -g_scalar = 01 -r = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a - -g_scalar = 02 -r = f6bb32e43dcf3a3b732205038d1490d9aa6ae3c1a433827d850046d410ddd64d, 78c577510a5b8a3b19a8fb0e92042dbe152cd7cbeb236ff82f3648d361bee1a5 - -g_scalar = 03 -r = 26936a3fb6ff747e66ad77dd87cbbc98b027f84a087d81fbffac3f904eebc127, d5f06a29e587cc07788208311a2ee98e583e47ad0861fe1ab04c5c1fc983a7eb - -g_scalar = 04 -r = 577362f541b0176b0cdaacace8100af24650a6edc623c17374b0b50d46918dcc, 84b14c394c5ab8636b6c36dee5ddd22e17628471fad6f4472d96f24ce4cbaba6 - -g_scalar = 05 -r = c9079605890523c8941cb5aad076c20c90ec649a94b9537dbe1b8aaec45c61f5, 73a076bb2dd1e9163540a9877e7a1f6873c568efe5eb882beb309b4ae7ba4f10 - -g_scalar = 06 -r = 13074b5954213673d50a961a5b17a3ad55ae744f346cee3e403947373e77664a, a4c9916d4a07f75ff424d44cef639f11299c2b53adff14b593d36220d377e44b - -g_scalar = 07 -r = 13ba5119c3123e03f43eaab50c23bb082bd20213d23c00f70746354ea0173b4f, eaedd9156e240867ef933bdc77c941956742f2f25da67bdd2847d0303f5b9d4d - -g_scalar = 08 -r = b763891eb265230d8f90f02af02cfc6b462ab5c56f9b345527f14cd19499a78f, 56ec12f27706df76123c7b84be60bbf021e3327dcf9eba15f59da3a9532d4977 - -g_scalar = 09 -r = e05b3080f0c4e16b2cc09c0444c8eb00abe6bfed59a7a84175c96e8f264e20e8, 086659cdfd835f9b2b6e019a88b12f1a56af7bedce5d45e31eb7777aa45f3314 - -g_scalar = 0a -r = cc61c94724b3428f737d2cd648250b4998f9868a0fcf81392c18dbd19dc21ec8, 78719a54eb3b4ab55f7d2d65779be5d2c43a8991383fbe080c2b407880dd9e76 - -g_scalar = 0b -r = 3e7090f1649c90731ff3a4158dac1ab59de407956e7fdfe0ea7d260a6245e404, 68930023e125b88e0c0daa891ead643d250f939ee57f61c81a7685612b944e88 - -g_scalar = 0c -r = 4ee1df77cb83e1562409d29dee37385eabdedef5ca345a3304b71aa7d2697768, 7ff57c9553238aca28228cfa8ade6d66170ed2f6ca8956370cac12d91cbb5b43 - -g_scalar = 0d -r = 738477ac5395b759bcbcd43f559e98110e356769856fd30dccc425634b2ed709, fbc08769c9e7b7977cd06422bd1f5bc168748390742ed2e335752b90c00ee17f - -g_scalar = 0e -r = faae7332fd12c72e1717bf54c6832660126e48f77f9707e3a242a35bb0cf664a, 152706dc2eaa1bbbe8e4193e2a65e7dbbe29569e832237c227b52db7995d586b - -g_scalar = 0f -r = e2aa0e430ad3da09ee337424e481937003cc23ee56e27e4b72bcd8b7bc60055b, 2042170a7079adf464efa6de778a4797d766355442a41b2540b8524f6383c45d - -g_scalar = 10 -r = 54d63c809103b723d5ef2f7c2c83f5495882e0753ffe2e6b808b0b650bc6fb80, 64edf7b201efe22055c4623bb1580e9e3670c3194b0b6587f2f11bd652a23f9b - -g_scalar = 11 -r = c1a35c0a6c7a574eb0f139752cfe2dfff17624b6ac0a177b97091dcbd53c5c9d, ebd512263274c3d02f4e247f0d1883bb0575bf30e89cb80e227d314693e79987 - -g_scalar = 12 -r = 675abd1b6f80ebdaa6f247ab412e29794afc964d8f8b403e5f3e51c856ada97a, 6c6fc7d90502394d2626927f1b847bba4b2a5caf8f4f0b3c66a2bd725e485a1d - -g_scalar = 13 -r = fe545c282897c3fcb8842277752c41ac68363aba25e1a16efea912baa5659ae8, f720ee256d12597b85665e9be39508c15806244afba977c52d36e9e7dc4c696b - -g_scalar = 14 -r = e2d1eeb6fe5bfb4e048099d95dd283ba5916868f0f862bdc8a979129d2337a31, 5ee104e1c5fee0d09161c53f8aa95e66a2d4ec17ffffcbae82ef1c417884005d - -g_scalar = 15 -r = ecead9f4c16762fc6d2a506c5a3f3b3074e1b2654783f47d562e4cecc135b208, c086d5f1c9477fa37a75023e7fac29a41b0fadc083bb3c61f29dd4b2e286e5b9 - -g_scalar = 16 -r = fdc777e8e93358a46a0b0685d2f8ba3dc99ffa23e3912a9a0fc611352f6f3076, 793e8d075d5cd0749de917da153a35b5640c2d6a4d23fea494a787bb35415f04 - -g_scalar = 17 -r = af2cea7c1727bf42d0825fa2a358406937c7a7e89e2e1f6ef4f876532de45068, 83d0687b9077666f48068e1371ac2f71e5fda49c27299f4a0360a4fb9e4785a9 - -g_scalar = 18 -r = f97b232f2efc311561d7cbf91d2b469f6d0d755040dd9a356d3883b215d02819, 595dc55eca737b8a7669f03193cb750111ea494988a1e356a551d750b24bcbc7 - -g_scalar = 19 -r = 966742eb65432a2ee395993332f1f3af6fc1b49eed6b67b0a4a319acd837879f, 7b948dc356f7996812068859c9b731ee96cc631243f439504b8dc9feb4966228 - -g_scalar = 1a -r = 994baaa855f2fb101ac7c5eb857ff6fbe6c9267ad8b1753861e4ad32ed1f8008, ed178030d12e5ac714fde97b5fa944f55a39898b628ac50884cf14e11d248018 - -g_scalar = 1b -r = 9f8aa54b2ef7c76a49d2c9eb084ffdd7d36a42d7aebf7313042c2af497e2feb4, 2d431068d84bde312d97d10878eb4cbb3bd0c66fddb7fb589200b7ba09895e70 - -g_scalar = 1c -r = e97f6b6af2aadb9797082ec0cfe153eb7323cb2830a6a8924b523eb7172ccd1f, a9b4cc5f405852784a688b482d0cb71ea6a7f9c7804b2a681d3d393ed1a83da1 - -g_scalar = 1d -r = e266f95948603d48944a70270317b9e2f1be963a0d9258805e5db46acb66e132, 3798142a2a3be21b8a966939777c619f90472447a2fb18a398db66735c208899 - -g_scalar = 1e -r = d0288cb552b6fc3cc5f4d6cd3ac77acda3a14e49b44f65a1b4241cb13298b343, 460d45ce51601f72d667da379b3aa441b675511e06bf9b4ad5cc8c2f1c040abc - -g_scalar = 1f -r = 948dc4f8b1fc87b48ef5689d3cf7600ddd3cf7e7473017e6e2f73c696755ff89, f38ae8914d7b4745faecedfd0c9803fc2d921ca298eb6028d9e9fe814ea53299 - -g_scalar = 20 -r = 39227077695532a4bc6d6a58fead0197befd904c4079dfbfd8c5fccfc5e3a3d8, 6231d7929591c2a47b969c1aad9a2e407e449b64480a990809e23e6ddbef42f5 - -g_scalar = 21 -r = 33ec6868f044b10cac09c4ae65578ab985ceae7c4b68f103871514560f664534, b16c4303c32f63c4f909604f763f15745509d1285847d5ef6ac4832b3a8ec1f1 - -g_scalar = 22 -r = c982ddd4dd303e645b0673a375678d94caa7a5c6a391849db6ab20147ca23cd3, a159100c570d74f8c77332a33c569426bba2cb1f6f876f92fd7b000b5db6f971 - -g_scalar = 23 -r = ca640b8642a3e5210b8e4134efc2b4c8742ee464233e76b7fd16847fdec67ef5, 2ba901628bb47af824e4ab126b237af7313c300c547852d5653a01908ceb6aa9 - -g_scalar = 24 -r = 3569656cd54a3dc30ae4cb10d257576ec691d0bd1b06c57f3d5e58d6a8219bb7, 480b9e11dd6da526450ac0bae251a0c6934e82d3162bfe13e5ebaebd94cda03a - -g_scalar = 25 -r = 2763a387dfa394ebc5748baea677d806b636458c7f178d5500467bc58cce08b5, 58b36143620088a8f63ebce51558462ce7adda3e6f20d850a12b448a7d3cebb6 - -g_scalar = 26 -r = adf0c7dc7c603d6c7463fd85222ef33b512331170fe948ce8a2cc3ca4d63c0ee, d9a4c2809c80c34dbdaa84d68e59319cccaab359bf3804090ec32d3bfe7765e5 - -g_scalar = 27 -r = 5853e4c4363186ac068f237d16fb36646f5ae714ff0b9346a9d89488a059c142, 0c0bc0e56919240847b864fae14e7b1c2ec4a76681828876e2d87d2363c52f98 - -g_scalar = 28 -r = 462d7b0075f732278909984c66f2728083200f0bdf25e13ce4d7681db82e9f3e, 03466612d1aa702fab256ea35ef5435974c6e18c36ab1c34d90ba188f2651798 - -g_scalar = 29 -r = 98100a4fdb01614feeca111539ce22716fdfe0b56f072822624d60492ed22e91, f70bfeec03884a7bc67732591d57d9ceb6f94d2ec87e9a47b6b0daa2a35c628f - -g_scalar = 2a -r = 649c89ce5bfafe43c2e2594c30a92f8fa155cbe31da6a5c75fb35ccfed2bad01, f3a8cfe389bc7d3d4b00b20b906014cf9b359611f32c50aed158667de9ff257a - -g_scalar = 2b -r = 179c85db3db01994b7d9ad900574598180c5bfb4878873fa4ff23ffd248a7d06, 47795f4f95b2dda09e91cd3ba5e6a3184d82d052eadce5a8ba41b06261a6966c - -g_scalar = 2c -r = 5f3425f6a98dd2915f0e2046e381d3b0009194abb29110fbecfd7c1fd55a897c, eb629f90387ba42a397a247dd69d34170423446c4b083b7fbfa06687730d50da - -g_scalar = 2d -r = e94f7d346d8232781b1e8ae057477f580032940b946c6e181ee426ccd5cd79bf, d73acbfe2cd9e6b5772ef6dec7f80c81c5254469f72b33a5c747cb96782ba21a - -g_scalar = 2e -r = cec684c3a42931dca1030d5babf825e0785c339aa06e9eba4075b5b149ee90d9, 033da338c1b7f86557c8b2c055f7835d45431d665ab43f2b42ab62c9c1586e63 - -g_scalar = 2f -r = 4b969974eba78bfd6b20afec715af2c70a624fa936c83906283c7513caa76097, 9bbff86e6dddfd2704819d515ded93d49b944e107baeca13220755ccd921d60e - -g_scalar = 30 -r = c8403902470343ad1a1baaa76d8805bda7496529bbd803a06b34413077adc612, 85efc7e941325cc2a875f5ce529d75e30b26d7fbb7d8c5b739f59f66175adff1 - -g_scalar = 31 -r = abdbe6084fb7db2bff4cd0b228766127ffe7048453dc690921950b421ff6acd3, d394077ef247fa364d78f592f7818ed826147d27f4645b5a837c92285e1109e8 - -g_scalar = 32 -r = 0dceb8db2b7eaba7edfbe268d5b1fa6aa78bfbaa136852780fb9c2d0488c171a, d7d34194c3628c1343b7716bcc143a46efde7ae6a4449c96bf9e80899ae2b710 - -g_scalar = 33 -r = d20ebe0d5c3fa443da1deb852f4318d4e20bc0ba1e5edf3f508cec1c3b3f64c9, d731e383a2f54c2d99a5e23d82681c6261f1511c5e1a5f65370b4ea773241ea3 - -g_scalar = 34 -r = 88f77f34d0e5e542905a3201c67528b72e0ec469af45f9c02692f36e83445904, 7ef2f2269c0f0f8d5c27014b9bbec39e23b92eae22df3562f67a8d295864687c - -g_scalar = 35 -r = ec3a318d306634b0912e8beda8c8acd95f9c3fc492f2467997359638546c4d8d, fba1da5943465283b155bcd2dcafe1973db82f6f522113f280167f41c31cb264 - -g_scalar = 36 -r = bb8a0feaee26c851c1286ff925c4d56c4f2e512ef8557c5fa0425b8eb212cf53, 1a556e3fea9595eb3df277a41d1936b17ee0c444e76265aac28f70d2e7d6107e - -g_scalar = 37 -r = 5cee8449a7b730dd0deb0e4a46c814c131eea5bf07ef5be6258bbbf9e7305683, 25e8013ff14cf3f4c2cf6a6880e518caee759f879e27a6b4eab495c5a0182bde - -g_scalar = 38 -r = ba3f0c4a7451ae636a84438514600044bb1ff3ca9556f36a8fc441407e8d7a14, 83927681026c2c084e9a5bc2a4b596ac01e0db86b1f2214bdfcac25b1f9af32a - -g_scalar = 39 -r = c13298306acf8ccc068212e3fd1eaf381bfeea57c7385b293ec832e77acaca28, da44c6c600017626c5ab2632c79b7a015748060db661782ab909f2db2aac9e59 - -g_scalar = 3a -r = 305f725f648d02cdd66fe3b67ed78be199cac80de4299aaff26c00e8a7ea82f0, 063749945667474117ab562dbe5ffb3efa70533e7a6319ad33ed1bc4623fb21b - -g_scalar = 3b -r = 4c2bab1b8add53b7cb9727eaa2d17c362100d5d3a8d063d169d44ed65c46aa8e, a062499846fb7a8b6651f7017ce477f8778afcd3a837ebeaa084e90c15426704 - -g_scalar = 3c -r = d40c4ccdbc6f9915026f8fe2671c39bc33fc23364189d9c7dc1e6828ed8a6e19, 04820109bbe4e832c40a04bd4f51ad9612c651a022adff2cafa135bbf80e75ca - -g_scalar = 3d -r = 994a44a69b8335fa71cdf6537eceb50a59556621a9404f843667eb1a7f4c04cc, 0d1bc780872bdbf3b6658466da44bba2473c5680eed4350dd7faf819dbeb9b69 - -g_scalar = 3e -r = 0dbcb03ae539b413177aa4c02089a2336ed7e061ed58f5a7e535f175a1962f91, 6b60cfff35ace009dd47ff98814be9ee6472e5ef6806701ee3dc424ebb32e38e - -g_scalar = 3f -r = 0763a43482fc568d95c376329182cb26039c4800f0518eedb8d3d9319ff91fe5, 90876a0140959b7092bf7c8f91230de0ac98b930824e8197707c04d5383e76ba - -g_scalar = 40 -r = 95fb8394569b38c77da70b83c2c61e01380a0913089f73b9db6d96f305968b80, 296720440e8449708010a4a078424bf88f726bb98faeaf829a3c651280edfe2f - -g_scalar = 41 -r = 01628c4706b6090abf639ed67765765e79527db7ba66f4b9dc2306ebfcdbb2b2, 7d096ac42f1747502c90d98cf3e055d633cb7691ba659f4666eb62f1b957b4a1 - -g_scalar = 42 -r = 78ed4fe6e3a7de485a7e384de42f8cb2a3cfa7fd44b81977c7c6e4d1c4ce250f, b12347993e909dfb9c03344b75554fad55912064d0f5bb2aa9231c8ce9e571ca - -g_scalar = 43 -r = e8218ad07de96a54fc88362a891ea186c16d0c52a48a4ddd86f04d3b51f9c391, fd59d7eb9a8f62d9de3ec728c30a96a005af456a06620ae82c735ac12f33af7a - -g_scalar = 44 -r = 031195d5bb4a44b9b2cdb039f99c55fec35d34e70dd71fab8732d5cd6a93954d, f66904b1400c9463440dec9ece0f8c32bb7047347b57df81baa37f5d08a660c8 - -g_scalar = 45 -r = 49d3ad05548efa2ac856868891e9ae0987986a54361bfe259e5da11cc5e79347, 6d37b1fa546fbecc2126ac553a8dd1269bea0d0f2655d14f987b0687f4eb5cf6 - -g_scalar = 46 -r = 100392dc78c04937681d690f2b3a8c597263de1539f76b817c5a2a14f58a379a, c6793ad2e6e2f3b19cc6e22a27c9a2ead11ae42dad0182e407e5e8e85bef953a - -g_scalar = 47 -r = dd421b5d4a210364f94aa89b40750d0149c7cb94fc05804bf19f382e92aa7864, 574cc7b29378679111f947e696cd0572030a119fdd4af1ec56cd001e39df3672 - -g_scalar = 48 -r = c3b025a015b15144eb5d0c75f38fae9cb1ee4879a360fb557331369679c1e3b1, 6fcd0cbb809a06f20368eb1f2e4283e11ba0cb8c9c5d2e6a33ad53540dc40604 - -g_scalar = 49 -r = b2dacdf66ef82fce794922ef17e29b1a2b34a7dc096fb852ae8f8fe1eeb03d1a, c39725521af82878a66d92525e82d5b3b871ba63e405ca09db8dcc81f42911ee - -g_scalar = 4a -r = d176448e35b23e27b00eea8a5d34f708294b12e1ca1b04e046ce85a9e25a441e, 0a48558f2fa1bd2f77c52d75519978d10c45e52db3bfffc85ce885392bb80ef9 - -g_scalar = 4b -r = a22f8fbea42fd1f6f123716223af72e0cfa8ca0e2a7aa6ab616d2c02fb760095, 24a1bde1d0c2302de79807a770456a7e7be19f0ded4437a85072758b78f3d040 - -g_scalar = 4c -r = 1558fe4c7ef5b48a7c703717cd1823b4285bed3c21848f49cd331464c89bdd46, 9b3b040493b83e45ee4826a9937e1ba33fc6e661d47fa3cb19c6602050eaed5f - -g_scalar = 4d -r = db15e4963d5baeb19c30c6422b2f9c49719a87be5a0ec9ce0a2193bfc266f85c, 854dc9d595105f9e2b4f0c7877eb94ea4788522b2e9fdbb283c3139be0d37321 - -g_scalar = 4e -r = c0e78a3897536f3f711f8b7f7b5065a47e96610365013b3aade6af11a6ab1ecf, f8bdf2ea8474d0c8ea2240ccef96b473407bffa1b201137148b4389c464423d3 - -g_scalar = 4f -r = 5ed556aae89327fc58f6428165f89e14dd306e2a05176f8ba40206d330ff0e92, b75df5ec191a421fd07370c450128375097a54ff99227b16c2b1870af8321bb8 - -g_scalar = 50 -r = c0bfffc45263832a2074213db27de57335ff9aa8b5f86a2c492bdc0752b3e584, 2995919ca4cd266052b6a1739220f4281b037d75b320ebfb2429c22a1d49c605 - -g_scalar = 51 -r = e0beeb1aebff18d3b097c711165c6e4c8e9d0af402ba3183d3a5d81fc63d5e79, 7acf4419e85bc145cbdbfdb9cf290d1fa02dbc426fe5b29dfe657f130801937b - -g_scalar = 52 -r = 8d97fd53554fa366b932d0c17527465559d18be925a81aef80ee662fad29cf9c, 18f61f3cdef3f99d4976126318fb05ae41a471e4e93046f2ad5cb247cd789d17 - -g_scalar = 53 -r = cf3086e87a243ca4f87abebf2ab80485125d4714ec67199a2c9ee62dc3363a22, 97f0013247b64be50536a39db19c61265e9b16125625aad75c52b051c64e09dd - -g_scalar = 54 -r = 2f83a889ca881f6c10b429a2811a47eb2cd0bab9941a27e9b7f1695a43020eec, 4cb3c135b6f36034df4741a71b99ec5f67f9ba802e45cbb12563c590f683e890 - -g_scalar = 55 -r = abfc8457b5e11eff36bf2f65ea65641aef617e0025af76773646b0dd7e1ee314, 159751e2e1cbaebebb0066ae1f282369ce91ee270142811b998dfac18f1192b6 - -g_scalar = 56 -r = a9ea1b80f80e4b9023fb74270b4af06e783b9ba6744a6528dd5c2b8142a18dc1, e6c93b31cefdb61d9a9f04f0e8aeaf7d4a2b5ed57defe51b559759f6edca6f38 - -g_scalar = 57 -r = 2bd0204360826caa041252997f6b0670b856664a2d4b409b516329ff7b4d8b2c, af490825d5cff157a8f439ab06e58e3ecd07bc34c235d56c010e522661ddbcb1 - -g_scalar = 58 -r = 948fb3f76932e6311707165bb939f40fabeee3e9369a60677d81fd488418cae4, d8d37d942785971ded5cf82dc911847cbdf176108c7f9dba005a1dffeabd468e - -g_scalar = 59 -r = bd88aca74765b8053ea123446310eb5a62d51e29fd54487dc1ee6264a7eabe67, 7150f87e7211e4457ab49dd209f98f9a640388f83b9fffefb7b284be14fb691a - -g_scalar = 5a -r = 8307d5cb55648a4cf3df44ded7ee64b747305b7483e904469af9d782de992e6e, e485b90d49c0b6a1ad3294fb1c309a59abff56b525d3fdee5376b018e277280a - -g_scalar = 5b -r = 0211de8fd56927054a39f02bbedd4f4727113bb4ae6a94b8d81ad9386982f865, 4a70abf75c554ed3fa8a5b9b0b46a59f2354719f6237fc68d587138c63c92f69 - -g_scalar = 5c -r = aee309e543ae4336e4c8417839093801a8a38bc31487c5269d7127d76294ba47, d15428592faab2944a72075d7f73442a9929ad4e8f48bb12d4b127399359250d - -g_scalar = 5d -r = 0581b4711fdf24984a278686e16396070aeaca9afd36b1af64cfdc70d9453d29, 435ac466954ffbb3ff6c1a78f9a2852f20b021c3df219dc582290e253d61f6d2 - -g_scalar = 5e -r = bf87ea83037278d9c87bdb8203d41796955ef205d59848ebc82a7aefd2df5e7a, 1001f8d7dd85aa7bf8ea79eadfa99607c00286d964135771c5825a638719aea8 - -g_scalar = 5f -r = 76a8f9fea974291f9a127f2bcaa12d0d6684ad762b346fd2263e039bb308cc40, 3f293fda2cd6f439ee1b1cb5344455a165499c990c5dbba0c802049b68aa19e4 - -g_scalar = 60 -r = 11eddf7fd0a0da0d14f356cc6abc354d6d490a4b19dd329b802b8d2333e12b70, 3f2a78b3241a2b7103b48cc47c29bca2fd2f4f8cfd0258131e208328d87fd1d8 - -g_scalar = 61 -r = f1ae5380578181c7ee848e1d2566805eda8cdb78397e43f4dc90323bafceb64d, 1fbd470f53cf3e6984577f1f3260b76785f4d9c45b68b7e72dc7b8e69c70c77c - -g_scalar = 62 -r = a6eecf308794885e74b44206ee3751becc8715abbc82a095d5192c88589b69ff, e9f04cd324c2e3116b5df55fe390da5ba3f98377daa4c864a05a7aa8dd0ce3b4 - -g_scalar = 63 -r = bc438ae1a4e65b07650522fd4a9a3b17b1f1abb66a7b43712d037bf83f9432b4, 4a673fe054fcd65a03a3c2c7b98ff4b37ab58a3f75503e4631b57ea284693c04 - -g_scalar = 64 -r = 55401274eb1385f3f7ac46733fe90a2ffe49233161c52cf8b9a17db9bf61fec5, 63be9e64a17154226aa068c230548cf4adb9e9b685bac6b7a5db852c23fd068f - -g_scalar = 65 -r = e9b1c23914da499e6a610374c569a602bbe914d3b99cd026b7a96e0a4ea6fdf7, 94ce9e0adba8bfc75a8a14644be77793731251826f21687cb5f6f0feadc19a99 - -g_scalar = 66 -r = 0fcaec0ffecf6fedce33e49cdd3dac5cf5284782e9f60f1841a6fe768f9b4748, a2776d9f8417c98ff3d348f820fe78e36445fbcd5bc92aa3ca1ce130a54edfc4 - -g_scalar = 67 -r = f51ec8724c3c386f57670e41bf619241d0a875e919f7f72c564bdda6c71f8d02, 1429b1f8ae1d3ed8a6fae60930a4f9245df79360286166f300aec19ee8bf7d17 - -g_scalar = 68 -r = 1d6de36b734fc1b835d2293fc7ac3efa90ee46554c2a623582d0020682c4bd6a, 6ba92bcade5a0cc175aef88a77b9d084ffccf5e161217dee946ac3bfcff75858 - -g_scalar = 69 -r = 680d5abf65e03a86c08ec1602b1d28fdcb11125c02a9ba44de6ddcb77b371390, d3d6d111ee9e512f4e346db071cbfc97c87057ca3bce7fe5d5ec7bbbf5327839 - -g_scalar = 6a -r = 7145405dff1765ecb81f9fb1279df6ff750c11bbc098aefac4c398cc1e628b51, 262f03eb0757aaea5cbb069b03fe8fac137218257bc27ef73c3d861d83aae16f - -g_scalar = 6b -r = ee206023efce1a7028f9cdebe9f6e8773571e4d1592ce3342ca0ba9c3796f4c7, ccd7e9418ea700c1e008039e02de2ff12754e4260a7f687cb2159e08b76369dc - -g_scalar = 6c -r = 9d873705000a079bd1a8678742e1cbf414d147984d7df1ff2871263f72371e17, 0d66cfc94b5d416d08e545f1b13e2b493633966c70094e6a3a7f4ad5e01ffe00 - -g_scalar = 6d -r = 3720b2475548de20e7b092174df861f4fd4f61e491ae8d13aec63acbdd10edd0, 5fdaee391cab12c70cd622baeb879899e7229d8956cd660daf419847ebf3df78 - -g_scalar = 6e -r = e7009ee6652405a945ae78ba39dcab99b1fc8c8c23fbbe6e76fbedb5a463fbad, 798ca99e4ef37e3c270c706c6e4840f15761490f7f000956b9a8fc5f8c0531e8 - -g_scalar = 6f -r = 0cf804d77a9b6a20098f37bb0832c416327dac318072f08dd87f4ae086653aa8, f9af0acd904d4731270adcc57148b1351cc0d4cea23afa674b9c5438a67e2173 - -g_scalar = 70 -r = 71704d008938c16745ab5a4d7832ba0c94e258f604a428f26a9505760a99cbca, 65000c24c7973a41e70352687d367d8056feb92ec00eb207db97ab0ef88b8b70 - -g_scalar = 71 -r = 734e0d078a2b0d3acc3a5ecb983538693289e86e10ec0d40a125e6c1b7ebcb88, 61d8209d49f3a53dd13cca90747f19ecfa6bcdb1786076b9e0d92e9a51933360 - -g_scalar = 72 -r = 08e2f429f216dc997afec8bb9b4e920c18849f8ebc30d62c751e03f0216f7c55, bc0eec86924dd15496b984140a9f867197b596a14d7bf8475e5ddf821d6cc33e - -g_scalar = 73 -r = 7c3ff661d8ecca6e8a2627c4851b5bc7f15b920fa8dfce56ad19e039119f6cab, e95dd9d8889821b2dc8df855fe2f493756b76c57baa43b27b9dd2bf2d5f5b5bf - -g_scalar = 74 -r = d8f1fc5f6a92b9aac9f08a5659cb1b6e4b3de89bb2f5f79c87f9793bc9826344, a9c8a4b42b9157daf06c2c8c70549a5753c30bbe65b80f1686357f9eb412595e - -g_scalar = 75 -r = bbdbec7d79af29b17890e8d54796883355a3bb1ad9699e9208e4c4901b620dc4, 2cdf7f854480ffe39dc33392fa67285c50cf6d11ad91a35092750de73e51e1bc - -g_scalar = 76 -r = 4977379654d7a19e24869d65bb07ad54f8f1d8415512ec1c24c00de93f5f68a6, c9c4d63998e59b626cf96715c527a656741bf80a03bc88e604f357d1f061cede - -g_scalar = 77 -r = 6ed0b988157b7f562be22ba0f3a49fb4062afb7c1e314dde87af199e6cc47305, fedf1014fe6ee703d7e814380f67b51417d29c64877b74978162cf502d653fd9 - -g_scalar = 78 -r = 9c7ea21245a2473fb62aaf7c37e7454e094e7ddf4f6ab73a6ebdb7bcd0303ba4, d007ec78a47a715248cd158b2c1eb5419a278a9daaa03497ca76e7549488d036 - -g_scalar = 79 -r = e1a8d418f77f10e127d2bf4f683b30d1d71602d5b0e5fe2014d7251a8c03e3f4, ae839cd80e99505caaf4d4e193394872ff318484da0a4996a4941a1e76a0ead7 - -g_scalar = 7a -r = 62280f9a573fbfa8bf357e0c9358983ad183a961caf64cbd536eeea92f4ff97a, 7aa3b3ccb2a104b24c6b9954bd51f9056ea945bdb1901d3d001da1b77e9176b3 - -g_scalar = 7b -r = 2d7ca4d8f1e354871783d1b6917e47255a71497198a5ea8c62ea859803b58b02, aeb9041c69e788c55870726c16e3e02ada04cc898e17ff543f69b4d49b4d4324 - -g_scalar = 7c -r = d8c0472156db126649b1dfca7f1412750a10ed1576d7996d10f264bc85fc00a2, 8448ecae901289fe9b94c4ad4c99e43958d85051e4dd905a43dfabf3cd768437 - -g_scalar = 7d -r = a9fe2396bb85b9cb04b76d2d1ed32559f72dab6d225733faaab54cfc93740130, b16d6af8c3febbc151dc5fac145ff0d52292393b579f3ce2128b0d24bf2219f0 - -g_scalar = 7e -r = 6941195b752838c39a7d703660ab52e9519a47b4807a9d289c9635be52bf127a, 91a4ea6d215215f65f153f56aa36de2d8459f5705276171860ffbe2e70da613f - -g_scalar = 7f -r = 15fe6a86904a36cf6072a061ae619f2870e9016cdddfd92836e84bb6dee35b41, 76759223abe3c14bd0a8879244f403f2fd1c4a970ad602d09ab6968bf6005965 - -g_scalar = 80 -r = ad311f2c46d5a6173749bba4b3ad9db57ef2b6b9ac62ff5463c5cb817a2ad62a, fa38d320ec008188f8aa266d75d6b138b46feaf3367834ffb77a8087c2ff3b6d - -g_scalar = 0200000000000000000000000000000000000000000000000000000000000000 -r = 135dc5395b54827dd161d2cacf780900bcef72873566cc63b2330fef4e4ca463, 8b0c573826152c8fe973586d6d3321da10a224f007dfa06c638f052e27bf1bc6 - -g_scalar = 0400000000000000000000000000000000000000000000000000000000000000 -r = 15b4488b29fd9fd06e1da8c39a33c6771fe19e357fe4364e9910ba6b23a5d896, f2c4f79cb6ec839b3fd1b24907e5658e920a8a70ab8163e81f4392541a1f22bf - -g_scalar = 0600000000000000000000000000000000000000000000000000000000000000 -r = e78c2ec0fc61206741311f8a38038a5d8f860c7943ef881c84cea0691416a6a5, 35beef7a9e36c39eff558aecf3612cbab4cc9e0059604097494d2e815ad73581 - -g_scalar = 0800000000000000000000000000000000000000000000000000000000000000 -r = 0bdec21162bc679298204cb64fcf68e15d2b0ac6c717370e8b5c619c76497ee8, 037248e9d2d4fcb45efb693e3d0e0c8bf9e3fa97e0de1ac56973ccefa63b1011 - -g_scalar = 0a00000000000000000000000000000000000000000000000000000000000000 -r = fe2bc235e52800a089fa443d07d3e75e96e9793ed510053ccf57fca29849e95b, ee52747dc960b0e1217e4005e541e592b5852a49e72222631c208b8c0ac7e740 - -g_scalar = 0c00000000000000000000000000000000000000000000000000000000000000 -r = 69aada7f6d6180a56183291b6ed77d1c62699718e770b20dd3694e2ab20364e4, d53e48d228dc87eed6a2308a7fb96d8dfd7e84567870107751f9054bf185509b - -g_scalar = 0e00000000000000000000000000000000000000000000000000000000000000 -r = 1280aafbed23f0d182293299cdf809af94589aac6656bbe13e858c2ffceac518, 9bfafcccca58cca2d5cb00b340f02322e010a39acfaec17fdeab0c677306e2a4 - -g_scalar = 1000000000000000000000000000000000000000000000000000000000000000 -r = 7be5ed0dc475c1293f06d66c530cb4f3d8772d353381060380802dc91ec34f9e, 0aec44147285bbcab92118c692a1b45ec63d2857c9ff6b4ccb9e3c1931e82b10 - -g_scalar = 1200000000000000000000000000000000000000000000000000000000000000 -r = f82412db37333f2074feaff5e72c2666cb98c3ea2233117dba89095174f9fd77, 4aee7f5ee5034187ca7413a653e62c9f81a497847abb71aacdc3f3af9d271ca0 - -g_scalar = 1400000000000000000000000000000000000000000000000000000000000000 -r = 5ec40582c9a82fa78d5d177c64ff8578982be4fd46700b8b37071afbe8316c45, ad4b4f6fc0c14de6312f39604bbbb74c24e809f49f0312845518e37bcfa86678 - -g_scalar = 1600000000000000000000000000000000000000000000000000000000000000 -r = 2a1ef7d7822e8cc963aa5cca4fd924a2b44de63e08ae4169cf62c250869027b8, 80a30ac6ffd127228c82e7333a87f1ef82842bc04b8636ebe41b37c66eb35f3c - -g_scalar = 1800000000000000000000000000000000000000000000000000000000000000 -r = f3b4962f5f3e6c3e028a81514f3cf2dc6415834bac4ab3aba3d6f4868eb6e843, 1b77791d06871332c31cdd6b9b149ed6437a6d8ae10bce559119ae90987dd2f2 - -g_scalar = 1a00000000000000000000000000000000000000000000000000000000000000 -r = d9025fff8a8af1c635761c8ee1f6176d54c439b0391fa36e2f41e643356317fd, 6babe94f55e3b77f7aedb7c7f54a2ba4bb48dd1395a4745b8c826f3cf7cc4474 - -g_scalar = 1c00000000000000000000000000000000000000000000000000000000000000 -r = 1eb6a9688f95277ca3fd22fbcea3f029965a774094e746409c34b650e16e05e9, 12109c4aacef5cbdea92c1669b840d48ad917201f58f2fee2520a63d7bad84f6 - -g_scalar = 1e00000000000000000000000000000000000000000000000000000000000000 -r = 870ae6bdc2754097035ebe4addc4f080ed400a2232cdc71aee20415c2245134a, 4f6d77b2755de5a2e959fe3e5cfa8ca6f57f1956e4f55982a192e684c048d72d - -g_scalar = 2000000000000000000000000000000000000000000000000000000000000000 -r = b7a23f34b68e19f8d0107914ceaae10ecbe906f04c93302efc189ae71e29a3ef, 3cf0bbf83d44303865591bf64da1711303198c6efcadc9c8e9d875c2efd2119d - -g_scalar = 2200000000000000000000000000000000000000000000000000000000000000 -r = 68a9969c8e2256288644ef1cdfceb8ab862ae25e2ece8f72d32d7cec0094e84c, 79f2826cc85b9705cbd09a659bf0cdb6308a6e1882ba242bdf209e27b3117876 - -g_scalar = 2400000000000000000000000000000000000000000000000000000000000000 -r = ada4cfdd7ecfa8408c94a21ab972da90598d0bf8849be4b7ab293027aad991c1, af9346e9eb8562e0900424eb6a652a557ca617a203219a3493d4b9c0fbcec63a - -g_scalar = 2600000000000000000000000000000000000000000000000000000000000000 -r = f6e29e442433b4c681d700b2c6fa654a9edd11a6b7a82bb80ef6a240c793c0cd, d5dde3b07207c7a0154da1d18488497a8863e0e1ac1d5f51aadd3d5899f01b1d - -g_scalar = 2800000000000000000000000000000000000000000000000000000000000000 -r = 54476778acd2f1b6c92becfa390b3ef2b1643ab5911bc478c3e04d7902381461, bb04730090b0790aee182910b5a13ac32bc1287b2c21c65a8daa0c4d66bf3aaf - -g_scalar = 2a00000000000000000000000000000000000000000000000000000000000000 -r = 574fc2b081704bde30651575aab5306d953939f44ead0fd9d6d8bbd2f2338d2a, f2d45a7b49c99a13ed542a652c51e949e72b8a05eb63f38f3402081f4132f2f0 - -g_scalar = 2c00000000000000000000000000000000000000000000000000000000000000 -r = 17f904ba45b0995e765a50db1a6fd0ffc5772beefdc3a47b83766947d17d4e0b, c8fa426a142fd4d56738d94f46cb1fd9f56db7f3c270aaedcee643832883487e - -g_scalar = 2e00000000000000000000000000000000000000000000000000000000000000 -r = 5090d91f0b80bcb946d480d77119c60ed7799b31b313c052bfe48a8ff43daf9d, 3fdaf62162e1d85a769be02bb1d5928c16e69b4f9915aa0ac94c4c1e873bd7bf - -g_scalar = 3000000000000000000000000000000000000000000000000000000000000000 -r = 389caef34ec5b10982159d07de7d6f2c945353e1b2d4c63aae485bb72b724759, 73429bb9c14208a3816fa3ed83f2405f2dc2cb7edd99de434a8ebb53db65ef14 - -g_scalar = 3200000000000000000000000000000000000000000000000000000000000000 -r = f5aa74e43a64439e577793fce12c68ab07de7ab35133e5a2768978afed08d68c, a2577185ed42cc08a611d41c8ef20f302003ddd41d4459026457d90c4505e9f4 - -g_scalar = 3400000000000000000000000000000000000000000000000000000000000000 -r = 58c8a77ac0d58abd9947c636a9b6e05a8d98277b4a837f6908ed8febd56daf06, fbe185ec38e1eb47ecbd1958e3fb0c5d16cd67c71076d3d3f45496a45f121e4f - -g_scalar = 3600000000000000000000000000000000000000000000000000000000000000 -r = 9bc6c2af18eaf22cf81a4b3e0fd97269d8f158f5d6df29e581ea0bc89b6956e1, 63b4b278d7075e1c4339549d8f2f593c03bbfa0f9251ed45c1d3ce5e6d62552b - -g_scalar = 3800000000000000000000000000000000000000000000000000000000000000 -r = 98fe1c61f5b61d31fd025001b905b499dd4d06aff39e7832b7ef9760ff79d2ee, 08e213122c3832dfa322b09f514eb16d376e3b783009cd9aa9f83980c5f12805 - -g_scalar = 3a00000000000000000000000000000000000000000000000000000000000000 -r = d7d80165dd6861d485715b2edb2589d37b0b8307280d1be142c772b68b61c205, 458ae65ccb0f3654205e28984256ddbb1095adfa3b8abd756235746580870184 - -g_scalar = 3c00000000000000000000000000000000000000000000000000000000000000 -r = beeb3ea58c37888ea76697bd602e90655dc516824ddbc0b6aea68626dc4ad4f4, 6ca1346292cc09fd9fb560949ae44df2e48b820ca35f44841ec4a2f214569113 - -g_scalar = 3e00000000000000000000000000000000000000000000000000000000000000 -r = 782b816e9f5238b55631049161a549b25d485fac31ca379550e1b82c5de1691e, 1b102a8b5984701daecf22dedfce0da0a9ffada33f2952a013f2b973463d034f - -g_scalar = 4000000000000000000000000000000000000000000000000000000000000000 -r = 412c9e1e9fa403a4d1b299b504aea4a9047e2ccde180b2dcb618d590b01e6e27, 178851bc75122b973a1b6fcce668de1949c50136f332b8e388d28a3679407552 - -g_scalar = 4200000000000000000000000000000000000000000000000000000000000000 -r = 4b782ecabc2251e29f1ee33c0910e35e65854fd78777a63d723ee82acb8c9fb4, 838a3cf0c1e978c538fefe60d32301bcf5f641d622da95345a06824d45f07856 - -g_scalar = 4400000000000000000000000000000000000000000000000000000000000000 -r = 720d5901fc5cb4c4f2876026ea269465bee5f33e85425bfe3d16740409d9735d, 59af953a94d4d6172b30b9649be40d5479e30056938b9bc5410357864dac8c11 - -g_scalar = 4600000000000000000000000000000000000000000000000000000000000000 -r = a4fe196b936adcd72b999e56f814d996687afcc16c6ac81b2bba2fcb7bd03b00, e547a7310d5e981fd5dd716dc07c21d2111d82a22d9ab330d7165c2a897d9f1b - -g_scalar = 4800000000000000000000000000000000000000000000000000000000000000 -r = 47f93e8f0d2f339d2df4486ef3b4e2e0fca35bdae5182b8d7f4b55864f6dcecb, 203de9a1f28da96eca2b45f4462b7cf03e07e2bb1c09ae9c471dbd283e36c4f7 - -g_scalar = 4a00000000000000000000000000000000000000000000000000000000000000 -r = 4b5a7b2307c5f1098b5c3d0371c68991750aa51875c77f94fb78df45414657c3, b30352343b2825bbdfd9248609e5e644ff564852517f1beb482484863e7fbdee - -g_scalar = 4c00000000000000000000000000000000000000000000000000000000000000 -r = ffab5705044464f22bac283b351571b3b88e7c47d8d42a028b002254c72340d5, 6616e62a9c8552a942e384cb8242f342e40ef31b1a8c8ca89700dd41addda21f - -g_scalar = 4e00000000000000000000000000000000000000000000000000000000000000 -r = 5ea74c730418d46d3da600eade1864dfc4ae8bbb8b383d060471cf0dac517b4b, bbddf0fe206581d430920bec53ccf2f3729794bcde6e83aed2935c8dbdd0739f - -g_scalar = 5000000000000000000000000000000000000000000000000000000000000000 -r = a35aa23fbf846bbbd43da670d2f74daed61257ce383c8ce9b1e13752fb85fa4c, 50d05aab9bc6d22e34d7f52a3c4aa158f6df8ee0c363473b5e74235d4421fc83 - -g_scalar = 5200000000000000000000000000000000000000000000000000000000000000 -r = 4644b8fb9aa64d9150c9f363b5117831ef6feacd1584fb54adb84fb6c1127e87, a50d957e7a2eedd563de80073a74db77bf746812f4dbe25c7520cb714df7be07 - -g_scalar = 5400000000000000000000000000000000000000000000000000000000000000 -r = 91c3a88a5b6e8c279d0a1f05fd8884e9f1539d9e4c076aa9d334b37c4b8e12cb, 43c450343061cf41d5e6b70871e075d933836e740b98d179b92ea188ba7aa4a1 - -g_scalar = 5600000000000000000000000000000000000000000000000000000000000000 -r = 5e76ec2fd83f56287099228335b50df42b516dd73422c5c118d919e2ba9fa405, 215b92835941e6391d53cef079e691830ee524a532dd167c1b779bf89d2c8ce5 - -g_scalar = 5800000000000000000000000000000000000000000000000000000000000000 -r = 3ff4444fd2ad3a96e5d755618de929cdad07e3c765ba422be4db7c0067eb93d4, 3c1172ef4a9b38d8590a7aa07ef7fa514ebb46fca5534cb835d53ebc71f14e5d - -g_scalar = 5a00000000000000000000000000000000000000000000000000000000000000 -r = abe32380275a9ef53b7cd6098dc0954228abf7b7a9c7d8a5ec69d5a37aed7fc2, 2760436fe662ce524908b1c152c98e5cb143e958be997ffec824b1faa68f9d75 - -g_scalar = 5c00000000000000000000000000000000000000000000000000000000000000 -r = deb035fcce7723a22ca3e0a1d449c1004ff211619adcd4bb4fc56a1be50edb52, e3b01067868e00e93da1a02a95b3c970d15d3b601d9c35c606a90a818855d505 - -g_scalar = 5e00000000000000000000000000000000000000000000000000000000000000 -r = 7c0fd64417a177b5010b2e0df05981da66d63eab9af46f4588f0367ae686a10d, 9cc89067fc5544e084859663ef2c83e10670c8e054a309b866ce10045a78b655 - -g_scalar = 6000000000000000000000000000000000000000000000000000000000000000 -r = 50235a0fdc91927053b2bb803ee35067bc56637b5f29cd078c56e735a64785f4, 8881065b5ec0f80f80400ba5f0f805bac34758318396023b191ab6d8f2c4aa65 - -g_scalar = 6200000000000000000000000000000000000000000000000000000000000000 -r = 2dc1b8bb6885309fb1e70bcfd44571115df7fee1116cd289c547a21465944d7c, a5b5defe5200f553f4e9d93004744d802eb3d19473d8a4193827dfec742dc4f7 - -g_scalar = 6400000000000000000000000000000000000000000000000000000000000000 -r = f1445d07414974411c75d37565dfd734bddc1fd9d5a52b5d45ab2440e4c3c19f, a3ff3123e96dfbb148d9cbd09098f9e90ef785a5b32643dc3fb416769d45f137 - -g_scalar = 6600000000000000000000000000000000000000000000000000000000000000 -r = d1609bf2cd28c8fdc8b4a3a98a9fed30e6959e40b4a07fa19ffe9f1de32e3a6c, b5e1f94bc9fbe1d5d2b32c22031428bbeceec1c7af4b3cb2d046e723b9329392 - -g_scalar = 6800000000000000000000000000000000000000000000000000000000000000 -r = 237c88057388378848d61dc507b6f556b2c6a5f201dbed52cb4f805a3e4e7d6c, daf7d5011bb307bfeb90b445e5c9c0d939feab8df098fe30cdf1b1838fa60a0b - -g_scalar = 6a00000000000000000000000000000000000000000000000000000000000000 -r = 845a882c8859bbc2e883d25ff51993083258a70ad731721eddbead4a788e09c4, 6ab31c3ff968c9f8f6655a5e3471a59f7a47d44bc5145873ff614cc9b13bd412 - -g_scalar = 6c00000000000000000000000000000000000000000000000000000000000000 -r = 4d6eec323a1f89e99267af0a5dee21c6d56850cf6466696a53c474abad6c4e7b, 3d620c8a7f89f8d167d3a4762229b54cc7d35c308d9c659e56dbf513573b08ba - -g_scalar = 6e00000000000000000000000000000000000000000000000000000000000000 -r = d28527c6a3824aa9d34030745566465654a149071f100d40b1b006aebc0d6863, 30a82b3f8ae892685b221411648e40d3abe5a927d3815d8acea8ea167d1daa26 - -g_scalar = 7000000000000000000000000000000000000000000000000000000000000000 -r = 8f12502ee0138997ad364df067b256dfde2d4ad1860b8bfbc370e522cc1b5e83, 03511dcdcba5dba53f89b744d3064ba6e80014adc0bc866a503fa0dc7783920a - -g_scalar = 7200000000000000000000000000000000000000000000000000000000000000 -r = 88a0df625c0cd66e4523b7dcd2c772806d46968e6a3bd9ad34f365ff3405157d, 65ff8cd309c966cc43c7fda55ba4408f83a5028dceda14e831f390f0c4591506 - -g_scalar = 7400000000000000000000000000000000000000000000000000000000000000 -r = 350fed185a914c72b1ead64104f9670908dcf2b70004539e0f58cec54e27d357, aacc0f0d9e66d9a362c306869a449d5145f8b46f46d04ac744f43523c5147854 - -g_scalar = 7600000000000000000000000000000000000000000000000000000000000000 -r = 721595eece728342af86c88034fb313add3f191127a10139823002854cd4d5e2, 60c44e259fe4b513848a5b75cda0ac98bbc4b1385076ae4c561a4d050d3f67ba - -g_scalar = 7800000000000000000000000000000000000000000000000000000000000000 -r = 394c3ca1652f359aa37951abff9f5089563ed687c3db1e5fec79a10fae256721, 4efb24bea05c73001333ccc2feb45e46102c640f0a492130b6ae4cdc253f146d - -g_scalar = 7a00000000000000000000000000000000000000000000000000000000000000 -r = 829bec8ffbbc8adbcaa9b2f496d71f842e0d323fc98fb2ed918ad277a25ed969, d7e993dd450011b77fd50ed4dcc2db1d573f92160504d1ccc5b2d540b0a840c2 - -g_scalar = 7c00000000000000000000000000000000000000000000000000000000000000 -r = 114608474b9883e7e6183976a85cf4eaabd1eb6c8fbb831a86d4cd28294b04f8, 686c24f9f2e55be24ce0258ea8f8753a0cfb6c61aa4f3ea4a3185fe73caef54d - -g_scalar = 7e00000000000000000000000000000000000000000000000000000000000000 -r = 8ccebd9296f0b3dbe251932fabb53deb5f020d8cd37bc364b63fd5141593f8c0, cb327c1a879a9b22e65a7ae03cb0f93933358298acb501e46d0790bb64930db2 - -g_scalar = 8000000000000000000000000000000000000000000000000000000000000000 -r = 9211e489de7f4f8a426eca29484c2ece9c4e7ad63c6341fb197dd46d95a7b1a2, 25f92e470f60e01817286a6e1c3eede82b2c09100657458614997f6ec78ef1f4 - -g_scalar = 8200000000000000000000000000000000000000000000000000000000000000 -r = 0695d25fcba9327ba26e5822d699d95b7a6c1acdf37b2836203a31d5a56c98ef, 0aa018cb90f6f3a69438e11059ada186448060e1e6b21a4055ddc74148431893 - -g_scalar = 8400000000000000000000000000000000000000000000000000000000000000 -r = 95e360666c4165c8b8e2959954327c6554009f1e6d947506e4cf728185967fad, 587c76421d9ba792e3221ff31f0e5f79505f09934933a10d39bf3074a3b3f527 - -g_scalar = 8600000000000000000000000000000000000000000000000000000000000000 -r = 3805f4e7a74465b996976624e2d6122797e8092e1a7c6add2ab55f653e360df9, efa55067d6b676840d99ae5a033531efc006b014a204ed4161223dea0a456eb9 - -g_scalar = 8800000000000000000000000000000000000000000000000000000000000000 -r = c48d07aad919b53f72bfcbbf25a2f91f7112f4122205eb70be6dd7fc6b7733ae, 4e873d9c7d35199d38f52714422d39da24504c146efec5713ea468c126a1f691 - -g_scalar = 8a00000000000000000000000000000000000000000000000000000000000000 -r = ef1117f3334d256570ec0990a1bb0900c512ae94e04e361fbd7055ffbd4132b6, e1ea4cb9efc6827777c9f2d8e753987a771143afc0313b2a53d94be882a88c45 - -g_scalar = 8c00000000000000000000000000000000000000000000000000000000000000 -r = b36ddb5a551266fc72a174550b384fab97c8f9d8b94fdd362441c4c0ca8f86c8, f4d28e65ef714ddc20760054070a8a1f3c306bd0f975bd668ce8a71234127c81 - -g_scalar = 8e00000000000000000000000000000000000000000000000000000000000000 -r = 1f07fd1a9ee01d68891d265bb9f79dc8d31da5b74b957a08455930bfd7425424, eef295c42eee7336a82c0ca3bdc0a6fd2cc99c24d290dccab10911c75da30291 - -g_scalar = 9000000000000000000000000000000000000000000000000000000000000000 -r = e0e5daeb54dd3739389f747caf3c3030703ef60057feea5b805c564631890a36, 4a1bd7b5f95a8c3b37183de2af20bf297e4bf176b5393962fe24a4c3c9c9f155 - -g_scalar = 9200000000000000000000000000000000000000000000000000000000000000 -r = 11a4ff0222e558e644144f890e8ff816669d7b57254db82633e0f086aef314c5, 5abafbd19e0e870c6e29235b0555dacdf757c2592e540c0bc8e5326f243efbe6 - -g_scalar = 9400000000000000000000000000000000000000000000000000000000000000 -r = ac45249aec82d6d8a5e1d3c6e19adb253f01996cbb97d0320130abf38cb5ab31, dacb1586f624faf0efb81538eba8bf94fd211c65b681d483c276ef2e5cfbfdf6 - -g_scalar = 9600000000000000000000000000000000000000000000000000000000000000 -r = c738cbcb5a8e43bad9f6002307a003ad81351ce14ffa84fabe1b922b396fae20, c9d2de063135f1936737fe3e62b46bfbf10047a165d1817db5465ec8c9defa53 - -g_scalar = 9800000000000000000000000000000000000000000000000000000000000000 -r = d723ad15da12d3f14aa86124ac83299759198011fda9f625e8ffb637410eaba3, e8d872c4801b2b3a921c79f249602f98ad3084c9edba98ac55ddc53f2da6810c - -g_scalar = 9a00000000000000000000000000000000000000000000000000000000000000 -r = 5bddf84d01fb6ab7717df9c3adcedc68fbe6587456a7fbaf7cc7479be15036a4, 159078eac888fcc8901b2bf9c90c29bb7b7efae9324861aac330a36e5c6c7f9e - -g_scalar = 9c00000000000000000000000000000000000000000000000000000000000000 -r = 0617a8dfe008a218c2700de3e39cfdf9d6b37e5eadb39a5c5e6afed1778930bb, 4b39280254b5248bbf2813099a8fa83410bffb7b65fe50a73e994417ebf1e6ae - -g_scalar = 9e00000000000000000000000000000000000000000000000000000000000000 -r = e19854ec7a29e8cf8765ed78b03c224b072454d8cf4f0b1b746bf4ffcd5eb860, 6869db2586f038ea0c2bf32a39d92c4f42598a6fd2621444499a1924aae5d08d - -g_scalar = a000000000000000000000000000000000000000000000000000000000000000 -r = 6372def79b2bafe8b18e2c1354107588281fc8dd7b87f257a83b969946191d3d, e3bcefafe42700aa1eace32d84310cf43f2dd4b756167a3fdaf4bb480d8972ca - -g_scalar = a200000000000000000000000000000000000000000000000000000000000000 -r = 9e15ebed69c53ab58cb605eda605ea2cb0766c76159bb5814ecfd1490d4d367e, f704a6321f2c0b3344ed22ea847dcbed8da47d36c3dd99d1f5b16de3f0516372 - -g_scalar = a400000000000000000000000000000000000000000000000000000000000000 -r = 3b082784ac9daa213e9231dde959e9257f81bfeceb104d11989cd51d81ffd706, d3bb418ca5f9a35c8e72fb72f2813e703d3f6638c14faed9e28e02ff027f1a57 - -g_scalar = a600000000000000000000000000000000000000000000000000000000000000 -r = ed37bac889c8cd093feb1494b52fe95b30df23d4bf8ad1baab45ff2f3b264155, 1d59a9bc917e7b53af4db00969712c98aa54ea60a5eb3223d4cc02f4e78aebca - -g_scalar = a800000000000000000000000000000000000000000000000000000000000000 -r = 3eb44ebaa26cfda9ec294f9bd82e3b0c7adcdc636cfec330698970dcc1c88910, 6702ce3ff233fd7ae6b382ff1868400da4d780cd8c7d34ed2f488c9ca79ee104 - -g_scalar = aa00000000000000000000000000000000000000000000000000000000000000 -r = 6fd044f86e7c58d93fc322e9763408262abc70bfac2a8c9eacd17f62a70bedca, e351f3762a24e6bf71049b174d8d3a774afa5a849cb3f817584c4855c17a97d3 - -g_scalar = ac00000000000000000000000000000000000000000000000000000000000000 -r = 03e6e884142b953fcf6e45c2f0b7938f042782b6c788822f7caff2a8dd7f4788, 63fc02447f948e02f548a883d347cc7b1e5b425236cb6b7ac6b32c2f748f7fbc - -g_scalar = ae00000000000000000000000000000000000000000000000000000000000000 -r = 541f1c670f8d83510a4f0dce10075d18a773c212de55a51ab85d636205e61d13, e7d652a370ffcdc3de32e541a473b58679b8353f2d2041f627ce3096f0c12a9a - -g_scalar = b000000000000000000000000000000000000000000000000000000000000000 -r = 35e8048ee03c366502e23d41dfc6514aa5db5ab62ea604675fe5691ed785e73d, 1343d185dbd0e40fe8cacc6e2c6646b828ec3b4584ce1a5a3f8b118f1adaa0f8 - -g_scalar = b200000000000000000000000000000000000000000000000000000000000000 -r = d8e96623f2e1ed0f96c490c17b199bba4831540870192a511fd78414f227c4a5, ce0bae6ef7736b606a626da351e5f48aa91730a91e569bed63cc47ecde7e0cf3 - -g_scalar = b400000000000000000000000000000000000000000000000000000000000000 -r = ed1b755f2815d3cf2138d71106187ec35898b1930650dd7ce81907220b4ebbfe, 4c7fa9337d3ab5d5aa78724c853652b08a7c8ab93a11682f54155e144f394514 - -g_scalar = b600000000000000000000000000000000000000000000000000000000000000 -r = fb909a74cc54235e35059c6f94d6bfbf9aa5d2c1bd5a35267217348749af1daf, b0be2db59a9947bcf853ecbfbae332d526883fe01b998b9831bfe5d7f389e929 - -g_scalar = b800000000000000000000000000000000000000000000000000000000000000 -r = 12128b2fd412db03d45acfecc1c397c7110ef147732ebbe02e605d97ce76aebb, d05746ae395ac2650a9295d2a0cb6962eba2732db2236813027ef0992a4d35e4 - -g_scalar = ba00000000000000000000000000000000000000000000000000000000000000 -r = df8df34707ba78f463d2778a91308c54034c07d0eaef09eb0d13b0393524a32e, c7de1146399c30471b4eaa5f7343cb8bb17f477a56f9244daadb189f64900000 - -g_scalar = bc00000000000000000000000000000000000000000000000000000000000000 -r = 570f50b9ade5e185d379afd6bbac1e92f1ca3c3639b1290c6b3eda297e866baa, 3f62e47b7d386fb0a919e766cfad95ba9a8729d3a8c1ab808daf3d6fff88f997 - -g_scalar = be00000000000000000000000000000000000000000000000000000000000000 -r = d9b588174709218a1980177d765796027ca43bcb2bc83e9c14dd8c3678ffb696, f904a4e4e73a0a3b5964a6a9a7f6f77a5becb8a8987c8bc5829b009167c19b38 - -g_scalar = c000000000000000000000000000000000000000000000000000000000000000 -r = b37b515f042eeec8d64cd42d9c875d9a1a1db7e49924182ae5d7f844caaa358c, 55a481c08236ca007dee410259b7e17efc322ed9e206eff34d4dd4097b165fbe - -g_scalar = c200000000000000000000000000000000000000000000000000000000000000 -r = 1e6f624584d42c5a9fd11c23e1b2374586dd7cdb056b372c9a7bfb76f3086c58, 0c3468b965d25df2d1f1563829563068d8d156ab799b8fa8b0efc8b0f47a92b2 - -g_scalar = c400000000000000000000000000000000000000000000000000000000000000 -r = def3204ff622e0f51e7dfc2f11b5036e56aceaa0609c4809389ca9c3b1d2d491, 9eb080e2c4003d74e3667bbc9d705924eaa2dc67b712a88a4e2efa93d2feb754 - -g_scalar = c600000000000000000000000000000000000000000000000000000000000000 -r = ac2244a68510d43ed03eb697c84cbed4e8e7b7e5495fac838defc208af8cb7e5, 748620b2ee30108ffaa231090d98ee944ae45533797fe8e4bf2d0c017b291e8a - -g_scalar = c800000000000000000000000000000000000000000000000000000000000000 -r = 3b2b115548841c4bac23208fd26485e9f65a3640454ef41ff86d13f9e149e73f, 55867cb65a7240c065e50b02fd8a798096500e3972b44b056e922c0653e1fa12 - -g_scalar = ca00000000000000000000000000000000000000000000000000000000000000 -r = fbede0865908334ae1e330f9c70cbc1a87382d6f40abd3c3eb3a10b1e94b9d1f, 3dd4bd39d7699c15f1271203bb2ddcdeae155b4e9f004328e4550b34ddfd4514 - -g_scalar = cc00000000000000000000000000000000000000000000000000000000000000 -r = db88c71bbeaf13bc07a69a30ef6276ed02b0c293cb37d658dc2d1be24becfdb6, 7802d95d4f739cddb7061f336fcffe88c2e36dce9c8cd8d7d4386ef5c97ffe33 - -g_scalar = ce00000000000000000000000000000000000000000000000000000000000000 -r = af06ff2bd95601e3e6b95f2fdee3d5596a0d1bea32ab6a5c6b768e347d563eb6, 89fc97a1a530cf2eb04215b861ba7a5be0c5018bd089f8f22cef2c735f8a91b2 - -g_scalar = d000000000000000000000000000000000000000000000000000000000000000 -r = 956b31e003c45e52a078868ef78edd391571580605d6297b8c885312c23fc975, 8b37b6344c14a975419227b47e2f2598c8d5dc3a0c7e673f470275d5ff7b33a6 - -g_scalar = d200000000000000000000000000000000000000000000000000000000000000 -r = f7ae11128858d4bd081e8fb419b8ae87f8b465db160c6066244bf1db2540eb02, 622f8ffb2a8430a2b4db4ec54ae887dda6c90d66a15f5e44945a36fa107b1802 - -g_scalar = d400000000000000000000000000000000000000000000000000000000000000 -r = 7e8caa24bbb577974f1bfe0fde5e42def5eae8c7f89acdaff3022fb6e646703a, 1c51897148de3dd703c995b69226c8fd51e066afd52bf3e445eb9c742c570f45 - -g_scalar = d600000000000000000000000000000000000000000000000000000000000000 -r = 726cd1b8f826237f899ae92398f41b6f681817c7c9c515ff302c3cfad169508a, 9bef669a5f57c92a2fca18c156cdf1c5f848d43a7aceee1628cc5ca8b512b56a - -g_scalar = d800000000000000000000000000000000000000000000000000000000000000 -r = 2cd615404fa3c57214f08f32b806bbb3c97bf51d0ffac3078f75eab499646d05, 474c7d9f869b581877f70bfb6411ef40835934552e3fdb09f80d50762a913b60 - -g_scalar = da00000000000000000000000000000000000000000000000000000000000000 -r = 44e6235a685fa8c247bd7309a9de5fa66db2fee880a40b64c0b8debf4aa4d144, f7cc4793a3e6270753724b3609098e94764b9d140c4f3dcb35155aa0affeb7d9 - -g_scalar = dc00000000000000000000000000000000000000000000000000000000000000 -r = 3027a162030cd7c2ba74f8354822722008faee4e603bb73e4565f9a834ddc625, ef1b14b212342d60ebf809f9d37f37579b8ee17af351af8448c6c7ecf72ca3a3 - -g_scalar = de00000000000000000000000000000000000000000000000000000000000000 -r = fe35f5c66e9d40a301eee42e3d4f9f3ec28f13ad81f4f013096bb45b738230f3, e46ffbebbabc0d7430ec627d406e1bbdb1843e7fae23b141e72c7d734e0177a1 - -g_scalar = e000000000000000000000000000000000000000000000000000000000000000 -r = 9f40ac3bae92032334e5d0dcb987a24a5e0e8c3e803e25dcd0667ed68b11888c, 7ef1ec27c47bde35491ccd7cda64f1b7a128bf926b6328f95463de9534e0f63a - -g_scalar = e200000000000000000000000000000000000000000000000000000000000000 -r = b9c9c244af407478c96adb0c950359af1d0243f09da21539499d4934d78d5664, 9a9f02b9c6f6ac05800b3daa30d0ea90d96d68a41e822ee4d77655971b5fe2fa - -g_scalar = e400000000000000000000000000000000000000000000000000000000000000 -r = bca14b180256394e833badcb026fbed49d4cac5be7b7f4d976fdb4d8d72905a3, ec67af7ed909d15e2699e6ab07111f87b3ebaeeb6de16ae709eb7554d2dfa217 - -g_scalar = e600000000000000000000000000000000000000000000000000000000000000 -r = 9e84b1429d952dea1a5702fde822c43a6440a71137d7a6d5b1a124a2e982371a, 40f7881d6809e7a532e57be2f72c9bb32b9547bdf3b8c6b3f9a25a6e707ef853 - -g_scalar = e800000000000000000000000000000000000000000000000000000000000000 -r = 5774d975adf3dd428b24580ccbb8bfc2082ec7feeac69a05a84eadc3c6f859bb, a4f85e5d69dddf30f442b4315724f6090a8b1fdeb62b2057f302f1c1fb18545c - -g_scalar = ea00000000000000000000000000000000000000000000000000000000000000 -r = 18b7629228d8a479ef8c3fc19f7258a24084cd681c0bfed585b4a7b6c5b52828, aedaaaf8428b0efa574f47076250e4f54fae49a87cab5893d7a01feafbe6fc5f - -g_scalar = ec00000000000000000000000000000000000000000000000000000000000000 -r = a9269757ad6c71aecd89a9d614befaa9c670d56c86853eddeff93c2d3edf7a05, a4f07fcdd7acca82ab3fd51b72ae50a26d356b17b15f40fa3be313ca58770e90 - -g_scalar = ee00000000000000000000000000000000000000000000000000000000000000 -r = b5ed7a9125881c7719ff07a13ee17b6081df350185faadc70c267dd0ae0c2b14, d40ec72633c833eacaede52ecf0b134aa9c47e6a2dc783cc117d3230ba9c4cab - -g_scalar = f000000000000000000000000000000000000000000000000000000000000000 -r = 80f1a439c929319d7a3a6453d4fb689735dc136663621bc1a857240fa36a2737, 50d7c67d372ab09cfb0d49241e01d0efb0b537668078c5ebfc18274bf8cb0ba0 - -g_scalar = f200000000000000000000000000000000000000000000000000000000000000 -r = 728fc5136ff083f3eb5c80bd85a5f16d33075ddccce277ec4182e4aa4bf75924, 20458e590c1c99290a8dffd60ac0fea619539bd3c1195aeca3c78e8fbf7992ab - -g_scalar = f400000000000000000000000000000000000000000000000000000000000000 -r = c02fe1c417b27af67e00049f9ab0deefd6ef61aff90e37bb06c9f96c6e75e767, e3d3f45da588df43db9829701886b5db90f3e6f2dad02337c82cf700840ef4dc - -g_scalar = f600000000000000000000000000000000000000000000000000000000000000 -r = a883f42917abdea70042d1b7833a576b51a3fb710ce3673f85d05386724c3c80, 5e930c0875653ecc219a96afb9fae1b9eeed99c9b88a535b4b07e8b02f551714 - -g_scalar = f800000000000000000000000000000000000000000000000000000000000000 -r = 5f2f286449c33aa7ac7d0e1c1fb049783f46e326ce433bc6dfffa17e057a3df0, e52d864891f945f1ac7e4c217bc5dc88eb665d859a96d81e40b2e8e311715d42 - -g_scalar = fa00000000000000000000000000000000000000000000000000000000000000 -r = a8b7e8a7068a16707ae69dc317ec34c204b86de7b0a0125589502abd170b0b8e, b5ab8a1239d9ffbb7093e3672489a8e4ccf0516c9ea9316ef31c6e9512a2b866 - -g_scalar = fc00000000000000000000000000000000000000000000000000000000000000 -r = 7d6dbe6556c0f8f08208e6ce3c650c05791a0732e423b40f16ff861277c713f8, c8f21b5d95a05c5219d877e66d0740e53df5baaec2d1bdfb50fdc2c38cd2bcf1 - -g_scalar = fe00000000000000000000000000000000000000000000000000000000000000 -r = 8ec353c2064ebf7c5df16fb0f8867456296c7b9e57af9e532eabd53494b13f3e, 849f2f20957c715f0b11793fbb0250eabf97c7146277a093361518688f5b87db - -# g_scalar = n - 128 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d1 -r = ad311f2c46d5a6173749bba4b3ad9db57ef2b6b9ac62ff5463c5cb817a2ad62a, 05c72cde13ff7e780755d9928a294ec74b90150dc987cb0048857f783d00c492 - -# g_scalar = n - 127 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d2 -r = 15fe6a86904a36cf6072a061ae619f2870e9016cdddfd92836e84bb6dee35b41, 898a6ddb541c3eb52f57786dbb0bfc0d02e3b569f529fd2f6549697409ffa69a - -# g_scalar = n - 126 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d3 -r = 6941195b752838c39a7d703660ab52e9519a47b4807a9d289c9635be52bf127a, 6e5b1591deadea0aa0eac0a955c921d27ba60a90ad89e8e79f0041d18f259ec0 - -# g_scalar = n - 125 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d4 -r = a9fe2396bb85b9cb04b76d2d1ed32559f72dab6d225733faaab54cfc93740130, 4e9295063c01443fae23a053eba00f2add6dc6c5a860c31ded74f2db40dde60f - -# g_scalar = n - 124 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d5 -r = d8c0472156db126649b1dfca7f1412750a10ed1576d7996d10f264bc85fc00a2, 7bb713506fed7602646b3b52b3661bc6a727afaf1b226fa5bc20540c32897bc8 - -# g_scalar = n - 123 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d6 -r = 2d7ca4d8f1e354871783d1b6917e47255a71497198a5ea8c62ea859803b58b02, 5146fbe29618773ba78f8d93e91c1fd525fb337771e800abc0964b2b64b2bcdb - -# g_scalar = n - 122 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d7 -r = 62280f9a573fbfa8bf357e0c9358983ad183a961caf64cbd536eeea92f4ff97a, 855c4c324d5efb4eb39466ab42ae06fa9156ba434e6fe2c2ffe25e48816e894c - -# g_scalar = n - 121 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d8 -r = e1a8d418f77f10e127d2bf4f683b30d1d71602d5b0e5fe2014d7251a8c03e3f4, 517c6326f166afa4550b2b1e6cc6b78d00ce7b7c25f5b6695b6be5e1895f1528 - -# g_scalar = n - 120 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d9 -r = 9c7ea21245a2473fb62aaf7c37e7454e094e7ddf4f6ab73a6ebdb7bcd0303ba4, 2ff813865b858eaeb732ea74d3e14abe65d87563555fcb68358918ab6b772fc9 - -# g_scalar = n - 119 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324da -r = 6ed0b988157b7f562be22ba0f3a49fb4062afb7c1e314dde87af199e6cc47305, 0120efea019118fd2817ebc7f0984aebe82d639c78848b687e9d30afd29ac026 - -# g_scalar = n - 118 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324db -r = 4977379654d7a19e24869d65bb07ad54f8f1d8415512ec1c24c00de93f5f68a6, 363b29c5671a649e930698ea3ad859a98be407f6fc437719fb0ca82e0f9e3121 - -# g_scalar = n - 117 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324dc -r = bbdbec7d79af29b17890e8d54796883355a3bb1ad9699e9208e4c4901b620dc4, d3208079bb7f001d623ccc6d0598d7a3af3092ef526e5caf6d8af218c1ae1e43 - -# g_scalar = n - 116 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324dd -r = d8f1fc5f6a92b9aac9f08a5659cb1b6e4b3de89bb2f5f79c87f9793bc9826344, 56375b4ad46ea8260f93d3738fab65a8ac3cf4429a47f0e979ca80614beda6a1 - -# g_scalar = n - 115 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324de -r = 7c3ff661d8ecca6e8a2627c4851b5bc7f15b920fa8dfce56ad19e039119f6cab, 16a226267767de4e237207aa01d0b6c8a94893a9455bc4d84622d40d2a0a4a40 - -# g_scalar = n - 114 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324df -r = 08e2f429f216dc997afec8bb9b4e920c18849f8ebc30d62c751e03f0216f7c55, 43f113786db22eac69467bebf560798e684a695fb28407b8a1a2207de2933cc1 - -# g_scalar = n - 113 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e0 -r = 734e0d078a2b0d3acc3a5ecb983538693289e86e10ec0d40a125e6c1b7ebcb88, 9e27df61b60c5ac32ec3356f8b80e6130594324f879f89461f26d165ae6ccc9f - -# g_scalar = n - 112 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e1 -r = 71704d008938c16745ab5a4d7832ba0c94e258f604a428f26a9505760a99cbca, 9afff3da3868c5bf18fcad9782c9827fa90146d23ff14df8246854f10774748f - -# g_scalar = n - 111 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e2 -r = 0cf804d77a9b6a20098f37bb0832c416327dac318072f08dd87f4ae086653aa8, 0650f5316fb2b8cfd8f5233a8eb74ecae33f2b325dc50598b463abc75981de8c - -# g_scalar = n - 110 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e3 -r = e7009ee6652405a945ae78ba39dcab99b1fc8c8c23fbbe6e76fbedb5a463fbad, 86735660b10c81c4d8f38f9391b7bf0ea89eb6f180fff6a9465703a073face17 - -# g_scalar = n - 109 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e4 -r = 3720b2475548de20e7b092174df861f4fd4f61e491ae8d13aec63acbdd10edd0, a02511c5e354ed39f329dd451478676618dd6277a93299f250be67b8140c2087 - -# g_scalar = n - 108 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e5 -r = 9d873705000a079bd1a8678742e1cbf414d147984d7df1ff2871263f72371e17, f2993035b4a2be93f71aba0e4ec1d4b6c9cc69948ff6b195c580b52a1fe001ff - -# g_scalar = n - 107 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e6 -r = ee206023efce1a7028f9cdebe9f6e8773571e4d1592ce3342ca0ba9c3796f4c7, 332816bd7158ff3f1ff7fc61fd21d00ed8ab1bdaf58097834dea61f7489c9623 - -# g_scalar = n - 106 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e7 -r = 7145405dff1765ecb81f9fb1279df6ff750c11bbc098aefac4c398cc1e628b51, d9d0fc13f8a85516a344f964fc017053ec8de7db843d8108c3c279e27c551e90 - -# g_scalar = n - 105 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e8 -r = 680d5abf65e03a86c08ec1602b1d28fdcb11125c02a9ba44de6ddcb77b371390, 2c292eed1161aed1b1cb924f8e340368378fa836c431801a2a1384440acd87c6 - -# g_scalar = n - 104 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e9 -r = 1d6de36b734fc1b835d2293fc7ac3efa90ee46554c2a623582d0020682c4bd6a, 9456d43421a5f33f8a51077588462f7b00330a1f9ede82116b953c403008a7a7 - -# g_scalar = n - 103 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324ea -r = f51ec8724c3c386f57670e41bf619241d0a875e919f7f72c564bdda6c71f8d02, ebd64e0651e2c128590519f6cf5b06dba2086ca0d79e990cff513e61174082e8 - -# g_scalar = n - 102 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324eb -r = 0fcaec0ffecf6fedce33e49cdd3dac5cf5284782e9f60f1841a6fe768f9b4748, 5d88925f7be836710c2cb707df01871c9bba0433a436d55c35e31ecf5ab1203b - -# g_scalar = n - 101 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324ec -r = e9b1c23914da499e6a610374c569a602bbe914d3b99cd026b7a96e0a4ea6fdf7, 6b3161f424574039a575eb9bb418886c8cedae7e90de97834a090f01523e6566 - -# g_scalar = n - 100 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324ed -r = 55401274eb1385f3f7ac46733fe90a2ffe49233161c52cf8b9a17db9bf61fec5, 9c41619a5e8eabde955f973dcfab730b5246164a7a4539485a247ad3dc02f970 - -# g_scalar = n - 99 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324ee -r = bc438ae1a4e65b07650522fd4a9a3b17b1f1abb66a7b43712d037bf83f9432b4, b598c01eab0329a6fc5c3d3846700b4c854a75c18aafc1b9ce4a815d7b96c3fb - -# g_scalar = n - 98 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324ef -r = a6eecf308794885e74b44206ee3751becc8715abbc82a095d5192c88589b69ff, 160fb32bdb3d1cef94a20aa01c6f25a45c067c89255b379b5fa5855722f31c4b - -# g_scalar = n - 97 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f0 -r = f1ae5380578181c7ee848e1d2566805eda8cdb78397e43f4dc90323bafceb64d, e042b8efac30c1977ba880e0cd9f48987a0b263ca4974818d2384719638f3883 - -# g_scalar = n - 96 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f1 -r = 11eddf7fd0a0da0d14f356cc6abc354d6d490a4b19dd329b802b8d2333e12b70, c0d5874bdbe5d48ffc4b733b83d6435d02d0b07402fda7ece1df7cd727802e27 - -# g_scalar = n - 95 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f2 -r = 76a8f9fea974291f9a127f2bcaa12d0d6684ad762b346fd2263e039bb308cc40, c0d6c024d3290bc711e4e34acbbbaa5e9ab66367f3a2445f37fdfb649755e61b - -# g_scalar = n - 94 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f3 -r = bf87ea83037278d9c87bdb8203d41796955ef205d59848ebc82a7aefd2df5e7a, effe0727227a558507158615205669f83ffd79279beca88e3a7da59c78e65157 - -# g_scalar = n - 93 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f4 -r = 0581b4711fdf24984a278686e16396070aeaca9afd36b1af64cfdc70d9453d29, bca53b986ab0044d0093e587065d7ad0df4fde3d20de623a7dd6f1dac29e092d - -# g_scalar = n - 92 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f5 -r = aee309e543ae4336e4c8417839093801a8a38bc31487c5269d7127d76294ba47, 2eabd7a5d0554d6cb58df8a2808cbbd566d652b270b744ed2b4ed8c66ca6daf2 - -# g_scalar = n - 91 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f6 -r = 0211de8fd56927054a39f02bbedd4f4727113bb4ae6a94b8d81ad9386982f865, b58f5407a3aab12d0575a464f4b95a60dcab8e619dc803972a78ec739c36d096 - -# g_scalar = n - 90 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f7 -r = 8307d5cb55648a4cf3df44ded7ee64b747305b7483e904469af9d782de992e6e, 1b7a46f1b63f495f52cd6b04e3cf65a65400a94bda2c0211ac894fe71d88d7f5 - -# g_scalar = n - 89 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f8 -r = bd88aca74765b8053ea123446310eb5a62d51e29fd54487dc1ee6264a7eabe67, 8eaf07808dee1bbb854b622df60670659bfc7708c4600010484d7b41eb0496e5 - -# g_scalar = n - 88 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f9 -r = 948fb3f76932e6311707165bb939f40fabeee3e9369a60677d81fd488418cae4, 272c826ad87a68e312a307d236ee7b83420e89f073806245ffa5e2001542b971 - -# g_scalar = n - 87 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324fa -r = 2bd0204360826caa041252997f6b0670b856664a2d4b409b516329ff7b4d8b2c, 50b6f7d92a300ea9570bc654f91a71c132f843cc3dca2a93fef1add99e22434e - -# g_scalar = n - 86 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324fb -r = a9ea1b80f80e4b9023fb74270b4af06e783b9ba6744a6528dd5c2b8142a18dc1, 1936c4cd310249e36560fb0f17515082b5d4a12b82101ae4aa68a609123590c7 - -# g_scalar = n - 85 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324fc -r = abfc8457b5e11eff36bf2f65ea65641aef617e0025af76773646b0dd7e1ee314, ea68ae1c1e34514244ff9951e0d7dc96316e11d9febd7ee46672053e70ee6d49 - -# g_scalar = n - 84 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324fd -r = 2f83a889ca881f6c10b429a2811a47eb2cd0bab9941a27e9b7f1695a43020eec, b34c3ec9490c9fcc20b8be58e46613a098064580d1ba344eda9c3a6f097c176f - -# g_scalar = n - 83 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324fe -r = cf3086e87a243ca4f87abebf2ab80485125d4714ec67199a2c9ee62dc3363a22, 680ffeccb849b41bfac95c624e639ed9a164e9eea9da5528a3ad4fae39b1f622 - -# g_scalar = n - 82 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324ff -r = 8d97fd53554fa366b932d0c17527465559d18be925a81aef80ee662fad29cf9c, e709e0c2210c0663b689ed9ce704fa51be5b8e1c16cfb90d52a34db8328762e8 - -# g_scalar = n - 81 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632500 -r = e0beeb1aebff18d3b097c711165c6e4c8e9d0af402ba3183d3a5d81fc63d5e79, 8530bbe517a43ebb3424024630d6f2e05fd243be901a4d62019a80ecf7fe6c84 - -# g_scalar = n - 80 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632501 -r = c0bfffc45263832a2074213db27de57335ff9aa8b5f86a2c492bdc0752b3e584, d66a6e625b32d9a0ad495e8c6ddf0bd7e4fc828b4cdf1404dbd63dd5e2b639fa - -# g_scalar = n - 79 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632502 -r = 5ed556aae89327fc58f6428165f89e14dd306e2a05176f8ba40206d330ff0e92, 48a20a12e6e5bde12f8c8f3bafed7c8af685ab0166dd84e93d4e78f507cde447 - -# g_scalar = n - 78 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632503 -r = c0e78a3897536f3f711f8b7f7b5065a47e96610365013b3aade6af11a6ab1ecf, 07420d147b8b2f3815ddbf3310694b8cbf84005f4dfeec8eb74bc763b9bbdc2c - -# g_scalar = n - 77 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632504 -r = db15e4963d5baeb19c30c6422b2f9c49719a87be5a0ec9ce0a2193bfc266f85c, 7ab236296aefa062d4b0f38788146b15b877add5d160244d7c3cec641f2c8cde - -# g_scalar = n - 76 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632505 -r = 1558fe4c7ef5b48a7c703717cd1823b4285bed3c21848f49cd331464c89bdd46, 64c4fbfa6c47c1bb11b7d9566c81e45cc039199f2b805c34e6399fdfaf1512a0 - -# g_scalar = n - 75 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632506 -r = a22f8fbea42fd1f6f123716223af72e0cfa8ca0e2a7aa6ab616d2c02fb760095, db5e421d2f3dcfd31867f8588fba9581841e60f312bbc857af8d8a74870c2fbf - -# g_scalar = n - 74 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632507 -r = d176448e35b23e27b00eea8a5d34f708294b12e1ca1b04e046ce85a9e25a441e, f5b7aa6fd05e42d1883ad28aae66872ef3ba1ad34c400037a3177ac6d447f106 - -# g_scalar = n - 73 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632508 -r = b2dacdf66ef82fce794922ef17e29b1a2b34a7dc096fb852ae8f8fe1eeb03d1a, 3c68daace507d78859926dada17d2a4c478e459d1bfa35f62472337e0bd6ee11 - -# g_scalar = n - 72 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632509 -r = c3b025a015b15144eb5d0c75f38fae9cb1ee4879a360fb557331369679c1e3b1, 9032f3437f65f90efc9714e0d1bd7c1ee45f347463a2d195cc52acabf23bf9fb - -# g_scalar = n - 71 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63250a -r = dd421b5d4a210364f94aa89b40750d0149c7cb94fc05804bf19f382e92aa7864, a8b3384c6c87986fee06b8196932fa8dfcf5ee6122b50e13a932ffe1c620c98d - -# g_scalar = n - 70 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63250b -r = 100392dc78c04937681d690f2b3a8c597263de1539f76b817c5a2a14f58a379a, 3986c52c191d0c4f63391dd5d8365d152ee51bd352fe7d1bf81a1717a4106ac5 - -# g_scalar = n - 69 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63250c -r = 49d3ad05548efa2ac856868891e9ae0987986a54361bfe259e5da11cc5e79347, 92c84e04ab904134ded953aac5722ed96415f2f1d9aa2eb06784f9780b14a309 - -# g_scalar = n - 68 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63250d -r = 031195d5bb4a44b9b2cdb039f99c55fec35d34e70dd71fab8732d5cd6a93954d, 0996fb4dbff36b9dbbf2136131f073cd448fb8cc84a8207e455c80a2f7599f37 - -# g_scalar = n - 67 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63250e -r = e8218ad07de96a54fc88362a891ea186c16d0c52a48a4ddd86f04d3b51f9c391, 02a6281365709d2721c138d73cf5695ffa50ba96f99df517d38ca53ed0cc5085 - -# g_scalar = n - 66 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63250f -r = 78ed4fe6e3a7de485a7e384de42f8cb2a3cfa7fd44b81977c7c6e4d1c4ce250f, 4edcb865c16f620563fccbb48aaab052aa6edf9c2f0a44d556dce373161a8e35 - -# g_scalar = n - 65 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632510 -r = 01628c4706b6090abf639ed67765765e79527db7ba66f4b9dc2306ebfcdbb2b2, 82f6953ad0e8b8b0d36f26730c1faa29cc34896f459a60b999149d0e46a84b5e - -# g_scalar = n - 64 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632511 -r = 95fb8394569b38c77da70b83c2c61e01380a0913089f73b9db6d96f305968b80, d698dfbaf17bb6907fef5b5f87bdb407708d94477051507d65c39aed7f1201d0 - -# g_scalar = n - 63 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632512 -r = 0763a43482fc568d95c376329182cb26039c4800f0518eedb8d3d9319ff91fe5, 6f7895fdbf6a64906d4083706edcf21f536746d07db17e688f83fb2ac7c18945 - -# g_scalar = n - 62 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632513 -r = 0dbcb03ae539b413177aa4c02089a2336ed7e061ed58f5a7e535f175a1962f91, 949f2fffca531ff722b800677eb416119b8d1a1197f98fe11c23bdb144cd1c71 - -# g_scalar = n - 61 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632514 -r = 994a44a69b8335fa71cdf6537eceb50a59556621a9404f843667eb1a7f4c04cc, f2e4387e78d4240d499a7b9925bb445db8c3a980112bcaf2280507e624146496 - -# g_scalar = n - 60 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632515 -r = d40c4ccdbc6f9915026f8fe2671c39bc33fc23364189d9c7dc1e6828ed8a6e19, fb7dfef5441b17ce3bf5fb42b0ae5269ed39ae60dd5200d3505eca4407f18a35 - -# g_scalar = n - 59 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632516 -r = 4c2bab1b8add53b7cb9727eaa2d17c362100d5d3a8d063d169d44ed65c46aa8e, 5f9db666b904857599ae08fe831b88078875032d57c814155f7b16f3eabd98fb - -# g_scalar = n - 58 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632517 -r = 305f725f648d02cdd66fe3b67ed78be199cac80de4299aaff26c00e8a7ea82f0, f9c8b66aa998b8bfe854a9d241a004c1058facc2859ce652cc12e43b9dc04de4 - -# g_scalar = n - 57 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632518 -r = c13298306acf8ccc068212e3fd1eaf381bfeea57c7385b293ec832e77acaca28, 25bb3938fffe89da3a54d9cd386485fea8b7f9f3499e87d546f60d24d55361a6 - -# g_scalar = n - 56 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632519 -r = ba3f0c4a7451ae636a84438514600044bb1ff3ca9556f36a8fc441407e8d7a14, 7c6d897dfd93d3f8b165a43d5b4a6953fe1f247a4e0ddeb420353da4e0650cd5 - -# g_scalar = n - 55 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63251a -r = 5cee8449a7b730dd0deb0e4a46c814c131eea5bf07ef5be6258bbbf9e7305683, da17febf0eb30c0c3d3095977f1ae735118a607961d8594b154b6a3a5fe7d421 - -# g_scalar = n - 54 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63251b -r = bb8a0feaee26c851c1286ff925c4d56c4f2e512ef8557c5fa0425b8eb212cf53, e5aa91bf156a6a15c20d885be2e6c94e811f3bbc189d9a553d708f2d1829ef81 - -# g_scalar = n - 53 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63251c -r = ec3a318d306634b0912e8beda8c8acd95f9c3fc492f2467997359638546c4d8d, 045e25a5bcb9ad7d4eaa432d23501e68c247d091addeec0d7fe980be3ce34d9b - -# g_scalar = n - 52 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63251d -r = 88f77f34d0e5e542905a3201c67528b72e0ec469af45f9c02692f36e83445904, 810d0dd863f0f073a3d8feb464413c61dc46d152dd20ca9d098572d6a79b9783 - -# g_scalar = n - 51 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63251e -r = d20ebe0d5c3fa443da1deb852f4318d4e20bc0ba1e5edf3f508cec1c3b3f64c9, 28ce1c7b5d0ab3d3665a1dc27d97e39d9e0eaee4a1e5a09ac8f4b1588cdbe15c - -# g_scalar = n - 50 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63251f -r = 0dceb8db2b7eaba7edfbe268d5b1fa6aa78bfbaa136852780fb9c2d0488c171a, 282cbe6a3c9d73edbc488e9433ebc5b91021851a5bbb636940617f76651d48ef - -# g_scalar = n - 49 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632520 -r = abdbe6084fb7db2bff4cd0b228766127ffe7048453dc690921950b421ff6acd3, 2c6bf8800db805cab2870a6d087e7127d9eb82d90b9ba4a57c836dd7a1eef617 - -# g_scalar = n - 48 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632521 -r = c8403902470343ad1a1baaa76d8805bda7496529bbd803a06b34413077adc612, 7a103815becda33e578a0a31ad628a1cf4d9280548273a48c60a6099e8a5200e - -# g_scalar = n - 47 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632522 -r = 4b969974eba78bfd6b20afec715af2c70a624fa936c83906283c7513caa76097, 64400790922202d9fb7e62aea2126c2b646bb1f0845135ecddf8aa3326de29f1 - -# g_scalar = n - 46 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632523 -r = cec684c3a42931dca1030d5babf825e0785c339aa06e9eba4075b5b149ee90d9, fcc25cc63e48079ba8374d3faa087ca2babce29aa54bc0d4bd549d363ea7919c - -# g_scalar = n - 45 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632524 -r = e94f7d346d8232781b1e8ae057477f580032940b946c6e181ee426ccd5cd79bf, 28c53400d326194b88d109213807f37e3adabb9708d4cc5a38b8346987d45de5 - -# g_scalar = n - 44 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632525 -r = 5f3425f6a98dd2915f0e2046e381d3b0009194abb29110fbecfd7c1fd55a897c, 149d606ec7845bd6c685db822962cbe8fbdcbb94b4f7c480405f99788cf2af25 - -# g_scalar = n - 43 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632526 -r = 179c85db3db01994b7d9ad900574598180c5bfb4878873fa4ff23ffd248a7d06, b886a0af6a4d2260616e32c45a195ce7b27d2fae15231a5745be4f9d9e596993 - -# g_scalar = n - 42 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632527 -r = 649c89ce5bfafe43c2e2594c30a92f8fa155cbe31da6a5c75fb35ccfed2bad01, 0c57301b764382c3b4ff4df46f9feb3064ca69ef0cd3af512ea799821600da85 - -# g_scalar = n - 41 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632528 -r = 98100a4fdb01614feeca111539ce22716fdfe0b56f072822624d60492ed22e91, 08f40112fc77b5853988cda6e2a826314906b2d2378165b8494f255d5ca39d70 - -# g_scalar = n - 40 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632529 -r = 462d7b0075f732278909984c66f2728083200f0bdf25e13ce4d7681db82e9f3e, fcb999ec2e558fd154da915ca10abca68b391e74c954e3cb26f45e770d9ae867 - -# g_scalar = n - 39 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63252a -r = 5853e4c4363186ac068f237d16fb36646f5ae714ff0b9346a9d89488a059c142, f3f43f1996e6dbf8b8479b051eb184e3d13b589a7e7d77891d2782dc9c3ad067 - -# g_scalar = n - 38 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63252b -r = adf0c7dc7c603d6c7463fd85222ef33b512331170fe948ce8a2cc3ca4d63c0ee, 265b3d7e637f3cb342557b2971a6ce6333554ca740c7fbf6f13cd2c401889a1a - -# g_scalar = n - 37 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63252c -r = 2763a387dfa394ebc5748baea677d806b636458c7f178d5500467bc58cce08b5, a74c9ebb9dff775809c1431aeaa7b9d3185225c290df27af5ed4bb7582c31449 - -# g_scalar = n - 36 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63252d -r = 3569656cd54a3dc30ae4cb10d257576ec691d0bd1b06c57f3d5e58d6a8219bb7, b7f461ed22925adabaf53f451dae5f396cb17d2de9d401ec1a1451426b325fc5 - -# g_scalar = n - 35 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63252e -r = ca640b8642a3e5210b8e4134efc2b4c8742ee464233e76b7fd16847fdec67ef5, d456fe9c744b8508db1b54ed94dc8508cec3cff4ab87ad2a9ac5fe6f73149556 - -# g_scalar = n - 34 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63252f -r = c982ddd4dd303e645b0673a375678d94caa7a5c6a391849db6ab20147ca23cd3, 5ea6eff2a8f28b08388ccd5cc3a96bd9445d34e19078906d0284fff4a249068e - -# g_scalar = n - 33 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632530 -r = 33ec6868f044b10cac09c4ae65578ab985ceae7c4b68f103871514560f664534, 4e93bcfb3cd09c3c06f69fb089c0ea8baaf62ed8a7b82a10953b7cd4c5713e0e - -# g_scalar = n - 32 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632531 -r = 39227077695532a4bc6d6a58fead0197befd904c4079dfbfd8c5fccfc5e3a3d8, 9dce286c6a6e3d5c846963e55265d1bf81bb649cb7f566f7f61dc1922410bd0a - -# g_scalar = n - 31 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632532 -r = 948dc4f8b1fc87b48ef5689d3cf7600ddd3cf7e7473017e6e2f73c696755ff89, 0c75176db284b8bb05131202f367fc03d26de35e67149fd72616017eb15acd66 - -# g_scalar = n - 30 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632533 -r = d0288cb552b6fc3cc5f4d6cd3ac77acda3a14e49b44f65a1b4241cb13298b343, b9f2ba30ae9fe08e299825c864c55bbe498aaee2f94064b52a3373d0e3fbf543 - -# g_scalar = n - 29 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632534 -r = e266f95948603d48944a70270317b9e2f1be963a0d9258805e5db46acb66e132, c867ebd4d5c41de5756996c688839e606fb8dbb95d04e75c6724998ca3df7766 - -# g_scalar = n - 28 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632535 -r = e97f6b6af2aadb9797082ec0cfe153eb7323cb2830a6a8924b523eb7172ccd1f, 564b339fbfa7ad88b59774b7d2f348e1595806397fb4d597e2c2c6c12e57c25e - -# g_scalar = n - 27 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632536 -r = 9f8aa54b2ef7c76a49d2c9eb084ffdd7d36a42d7aebf7313042c2af497e2feb4, d2bcef9627b421cfd2682ef78714b344c42f3991224804a76dff4845f676a18f - -# g_scalar = n - 26 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632537 -r = 994baaa855f2fb101ac7c5eb857ff6fbe6c9267ad8b1753861e4ad32ed1f8008, 12e87fce2ed1a539eb021684a056bb0aa5c676759d753af77b30eb1ee2db7fe7 - -# g_scalar = n - 25 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632538 -r = 966742eb65432a2ee395993332f1f3af6fc1b49eed6b67b0a4a319acd837879f, 846b723ba9086698edf977a63648ce1169339ceebc0bc6afb47236014b699dd7 - -# g_scalar = n - 24 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632539 -r = f97b232f2efc311561d7cbf91d2b469f6d0d755040dd9a356d3883b215d02819, a6a23aa0358c847689960fce6c348afeee15b6b7775e1ca95aae28af4db43438 - -# g_scalar = n - 23 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63253a -r = af2cea7c1727bf42d0825fa2a358406937c7a7e89e2e1f6ef4f876532de45068, 7c2f97836f889991b7f971ec8e53d08e1a025b64d8d660b5fc9f5b0461b87a56 - -# g_scalar = n - 22 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63253b -r = fdc777e8e93358a46a0b0685d2f8ba3dc99ffa23e3912a9a0fc611352f6f3076, 86c172f7a2a32f8c6216e825eac5ca4a9bf3d296b2dc015b6b587844cabea0fb - -# g_scalar = n - 21 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63253c -r = ecead9f4c16762fc6d2a506c5a3f3b3074e1b2654783f47d562e4cecc135b208, 3f792a0d36b8805d858afdc18053d65be4f052407c44c39e0d622b4d1d791a46 - -# g_scalar = n - 20 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63253d -r = e2d1eeb6fe5bfb4e048099d95dd283ba5916868f0f862bdc8a979129d2337a31, a11efb1d3a011f306e9e3ac07556a1995d2b13e9000034517d10e3be877bffa2 - -# g_scalar = n - 19 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63253e -r = fe545c282897c3fcb8842277752c41ac68363aba25e1a16efea912baa5659ae8, 08df11d992eda6857a99a1641c6af73ea7f9dbb60456883ad2c9161823b39694 - -# g_scalar = n - 18 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63253f -r = 675abd1b6f80ebdaa6f247ab412e29794afc964d8f8b403e5f3e51c856ada97a, 93903825fafdc6b3d9d96d80e47b8445b4d5a35170b0f4c3995d428da1b7a5e2 - -# g_scalar = n - 17 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632540 -r = c1a35c0a6c7a574eb0f139752cfe2dfff17624b6ac0a177b97091dcbd53c5c9d, 142aedd8cd8b3c30d0b1db80f2e77c44fa8a40d0176347f1dd82ceb96c186678 - -# g_scalar = n - 16 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632541 -r = 54d63c809103b723d5ef2f7c2c83f5495882e0753ffe2e6b808b0b650bc6fb80, 9b12084cfe101de0aa3b9dc44ea7f161c98f3ce7b4f49a780d0ee429ad5dc064 - -# g_scalar = n - 15 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632542 -r = e2aa0e430ad3da09ee337424e481937003cc23ee56e27e4b72bcd8b7bc60055b, dfbde8f48f86520c9b1059218875b8682899caacbd5be4dabf47adb09c7c3ba2 - -# g_scalar = n - 14 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632543 -r = faae7332fd12c72e1717bf54c6832660126e48f77f9707e3a242a35bb0cf664a, ead8f922d155e445171be6c1d59a182441d6a9627cddc83dd84ad24866a2a794 - -# g_scalar = n - 13 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632544 -r = 738477ac5395b759bcbcd43f559e98110e356769856fd30dccc425634b2ed709, 043f789536184869832f9bdd42e0a43e978b7c708bd12d1cca8ad46f3ff11e80 - -# g_scalar = n - 12 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632545 -r = 4ee1df77cb83e1562409d29dee37385eabdedef5ca345a3304b71aa7d2697768, 800a8369acdc7536d7dd730575219299e8f12d0a3576a9c8f353ed26e344a4bc - -# g_scalar = n - 11 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632546 -r = 3e7090f1649c90731ff3a4158dac1ab59de407956e7fdfe0ea7d260a6245e404, 976cffdb1eda4772f3f25576e1529bc2daf06c621a809e37e5897a9ed46bb177 - -# g_scalar = n - 10 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632547 -r = cc61c94724b3428f737d2cd648250b4998f9868a0fcf81392c18dbd19dc21ec8, 878e65aa14c4b54ba082d29a88641a2d3bc5766fc7c041f7f3d4bf877f226189 - -# g_scalar = n - 9 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632548 -r = e05b3080f0c4e16b2cc09c0444c8eb00abe6bfed59a7a84175c96e8f264e20e8, f799a631027ca065d491fe65774ed0e5a950841331a2ba1ce14888855ba0cceb - -# g_scalar = n - 8 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632549 -r = b763891eb265230d8f90f02af02cfc6b462ab5c56f9b345527f14cd19499a78f, a913ed0c88f9208aedc3847b419f440fde1ccd83306145ea0a625c56acd2b688 - -# g_scalar = n - 7 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254a -r = 13ba5119c3123e03f43eaab50c23bb082bd20213d23c00f70746354ea0173b4f, 151226e991dbf799106cc4238836be6a98bd0d0ea2598422d7b82fcfc0a462b2 - -# g_scalar = n - 6 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254b -r = 13074b5954213673d50a961a5b17a3ad55ae744f346cee3e403947373e77664a, 5b366e91b5f808a10bdb2bb3109c60eed663d4ad5200eb4a6c2c9ddf2c881bb4 - -# g_scalar = n - 5 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254c -r = c9079605890523c8941cb5aad076c20c90ec649a94b9537dbe1b8aaec45c61f5, 8c5f8943d22e16eacabf56788185e0978c3a97111a1477d414cf64b51845b0ef - -# g_scalar = n - 4 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254d -r = 577362f541b0176b0cdaacace8100af24650a6edc623c17374b0b50d46918dcc, 7b4eb3c5b3a5479d9493c9211a222dd1e89d7b8f05290bb8d2690db31b345459 - -# g_scalar = n - 3 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e -r = 26936a3fb6ff747e66ad77dd87cbbc98b027f84a087d81fbffac3f904eebc127, 2a0f95d51a7833f9877df7cee5d11671a7c1b853f79e01e54fb3a3e0367c5814 - -# g_scalar = n - 2 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f -r = f6bb32e43dcf3a3b732205038d1490d9aa6ae3c1a433827d850046d410ddd64d, 873a88adf5a475c5e65704f16dfbd241ead3283514dc9007d0c9b72c9e411e5a - -# g_scalar = n - 1 -g_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550 -r = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_mul_serialized_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_mul_serialized_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_mul_serialized_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_mul_serialized_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -# Similar to p256_point_mul_tests.txt, but tests point decoding and point -# encoding too. In particular, the inputs coordinates here are not Montgomery -# encoded, but the inputs in p256_point_mul_tests.txt are. - -# Regression Test from https://github.com/golang/go/issues/20040 - -p_scalar = 2a265f8bcbdcaf94d58519141e578124cb40d64a501fba9c11847b28965bc737 -p = 04023819813ac969847059028ea88a1f30dfbcde03fc791d3a252c6b41211882eaf93e4ae433cc12cf2a43fc0ef26400c0e125508224cdb649380f25479148a4ad -r = 044d4de80f1534850d261075997e3049321a0864082d24a917863366c0724f5ae3a22d2b7f7818a3563e0f7a76c9bf0921ac55e06e2e4d11795b233824b1db8cc0 - -p_scalar = 313f72ff9fe811bf573176231b286a3bdb6f1b14e05c40146590727a71c3bccd -p = 04cc11887b2d66cbae8f4d306627192522932146b42f01d3c6f92bd5c8ba739b06a2f08a029cd06b46183085bae9248b0ed15b70280c7ef13a457f5af382426031 -r = 04831c3f6b5f762d2f461901577af41354ac5f228c2591f84f8a6e51e2e3f1799193f90934cd0ef2c698cc471c60a93524e87ab31ca2412252337f364513e43684 diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_mul_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_mul_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_mul_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_mul_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,1665 +0,0 @@ -# Scalar Bit Pattern Coverage tests - -p_scalar = 00 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = inf - -p_scalar = 01 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 - -p_scalar = 02 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = f6bb32e43dcf3a3b732205038d1490d9aa6ae3c1a433827d850046d410ddd64d, 873a88adf5a475c5e65704f16dfbd241ead3283514dc9007d0c9b72c9e411e5a - -p_scalar = 03 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 26936a3fb6ff747e66ad77dd87cbbc98b027f84a087d81fbffac3f904eebc127, 2a0f95d51a7833f9877df7cee5d11671a7c1b853f79e01e54fb3a3e0367c5814 - -p_scalar = 04 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 577362f541b0176b0cdaacace8100af24650a6edc623c17374b0b50d46918dcc, 7b4eb3c5b3a5479d9493c9211a222dd1e89d7b8f05290bb8d2690db31b345459 - -p_scalar = 05 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c9079605890523c8941cb5aad076c20c90ec649a94b9537dbe1b8aaec45c61f5, 8c5f8943d22e16eacabf56788185e0978c3a97111a1477d414cf64b51845b0ef - -p_scalar = 06 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 13074b5954213673d50a961a5b17a3ad55ae744f346cee3e403947373e77664a, 5b366e91b5f808a10bdb2bb3109c60eed663d4ad5200eb4a6c2c9ddf2c881bb4 - -p_scalar = 07 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 13ba5119c3123e03f43eaab50c23bb082bd20213d23c00f70746354ea0173b4f, 151226e991dbf799106cc4238836be6a98bd0d0ea2598422d7b82fcfc0a462b2 - -p_scalar = 08 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = b763891eb265230d8f90f02af02cfc6b462ab5c56f9b345527f14cd19499a78f, a913ed0c88f9208aedc3847b419f440fde1ccd83306145ea0a625c56acd2b688 - -p_scalar = 09 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e05b3080f0c4e16b2cc09c0444c8eb00abe6bfed59a7a84175c96e8f264e20e8, f799a631027ca065d491fe65774ed0e5a950841331a2ba1ce14888855ba0cceb - -p_scalar = 0a -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = cc61c94724b3428f737d2cd648250b4998f9868a0fcf81392c18dbd19dc21ec8, 878e65aa14c4b54ba082d29a88641a2d3bc5766fc7c041f7f3d4bf877f226189 - -p_scalar = 0b -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 3e7090f1649c90731ff3a4158dac1ab59de407956e7fdfe0ea7d260a6245e404, 976cffdb1eda4772f3f25576e1529bc2daf06c621a809e37e5897a9ed46bb177 - -p_scalar = 0c -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 4ee1df77cb83e1562409d29dee37385eabdedef5ca345a3304b71aa7d2697768, 800a8369acdc7536d7dd730575219299e8f12d0a3576a9c8f353ed26e344a4bc - -p_scalar = 0d -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 738477ac5395b759bcbcd43f559e98110e356769856fd30dccc425634b2ed709, 043f789536184869832f9bdd42e0a43e978b7c708bd12d1cca8ad46f3ff11e80 - -p_scalar = 0e -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = faae7332fd12c72e1717bf54c6832660126e48f77f9707e3a242a35bb0cf664a, ead8f922d155e445171be6c1d59a182441d6a9627cddc83dd84ad24866a2a794 - -p_scalar = 0f -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e2aa0e430ad3da09ee337424e481937003cc23ee56e27e4b72bcd8b7bc60055b, dfbde8f48f86520c9b1059218875b8682899caacbd5be4dabf47adb09c7c3ba2 - -p_scalar = 10 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 54d63c809103b723d5ef2f7c2c83f5495882e0753ffe2e6b808b0b650bc6fb80, 9b12084cfe101de0aa3b9dc44ea7f161c98f3ce7b4f49a780d0ee429ad5dc064 - -p_scalar = 11 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c1a35c0a6c7a574eb0f139752cfe2dfff17624b6ac0a177b97091dcbd53c5c9d, 142aedd8cd8b3c30d0b1db80f2e77c44fa8a40d0176347f1dd82ceb96c186678 - -p_scalar = 12 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 675abd1b6f80ebdaa6f247ab412e29794afc964d8f8b403e5f3e51c856ada97a, 93903825fafdc6b3d9d96d80e47b8445b4d5a35170b0f4c3995d428da1b7a5e2 - -p_scalar = 13 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = fe545c282897c3fcb8842277752c41ac68363aba25e1a16efea912baa5659ae8, 08df11d992eda6857a99a1641c6af73ea7f9dbb60456883ad2c9161823b39694 - -p_scalar = 14 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e2d1eeb6fe5bfb4e048099d95dd283ba5916868f0f862bdc8a979129d2337a31, a11efb1d3a011f306e9e3ac07556a1995d2b13e9000034517d10e3be877bffa2 - -p_scalar = 15 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ecead9f4c16762fc6d2a506c5a3f3b3074e1b2654783f47d562e4cecc135b208, 3f792a0d36b8805d858afdc18053d65be4f052407c44c39e0d622b4d1d791a46 - -p_scalar = 16 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = fdc777e8e93358a46a0b0685d2f8ba3dc99ffa23e3912a9a0fc611352f6f3076, 86c172f7a2a32f8c6216e825eac5ca4a9bf3d296b2dc015b6b587844cabea0fb - -p_scalar = 17 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = af2cea7c1727bf42d0825fa2a358406937c7a7e89e2e1f6ef4f876532de45068, 7c2f97836f889991b7f971ec8e53d08e1a025b64d8d660b5fc9f5b0461b87a56 - -p_scalar = 18 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = f97b232f2efc311561d7cbf91d2b469f6d0d755040dd9a356d3883b215d02819, a6a23aa0358c847689960fce6c348afeee15b6b7775e1ca95aae28af4db43438 - -p_scalar = 19 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 966742eb65432a2ee395993332f1f3af6fc1b49eed6b67b0a4a319acd837879f, 846b723ba9086698edf977a63648ce1169339ceebc0bc6afb47236014b699dd7 - -p_scalar = 1a -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 994baaa855f2fb101ac7c5eb857ff6fbe6c9267ad8b1753861e4ad32ed1f8008, 12e87fce2ed1a539eb021684a056bb0aa5c676759d753af77b30eb1ee2db7fe7 - -p_scalar = 1b -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 9f8aa54b2ef7c76a49d2c9eb084ffdd7d36a42d7aebf7313042c2af497e2feb4, d2bcef9627b421cfd2682ef78714b344c42f3991224804a76dff4845f676a18f - -p_scalar = 1c -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e97f6b6af2aadb9797082ec0cfe153eb7323cb2830a6a8924b523eb7172ccd1f, 564b339fbfa7ad88b59774b7d2f348e1595806397fb4d597e2c2c6c12e57c25e - -p_scalar = 1d -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e266f95948603d48944a70270317b9e2f1be963a0d9258805e5db46acb66e132, c867ebd4d5c41de5756996c688839e606fb8dbb95d04e75c6724998ca3df7766 - -p_scalar = 1e -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d0288cb552b6fc3cc5f4d6cd3ac77acda3a14e49b44f65a1b4241cb13298b343, b9f2ba30ae9fe08e299825c864c55bbe498aaee2f94064b52a3373d0e3fbf543 - -p_scalar = 1f -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 948dc4f8b1fc87b48ef5689d3cf7600ddd3cf7e7473017e6e2f73c696755ff89, 0c75176db284b8bb05131202f367fc03d26de35e67149fd72616017eb15acd66 - -p_scalar = 20 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 39227077695532a4bc6d6a58fead0197befd904c4079dfbfd8c5fccfc5e3a3d8, 9dce286c6a6e3d5c846963e55265d1bf81bb649cb7f566f7f61dc1922410bd0a - -p_scalar = 21 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 33ec6868f044b10cac09c4ae65578ab985ceae7c4b68f103871514560f664534, 4e93bcfb3cd09c3c06f69fb089c0ea8baaf62ed8a7b82a10953b7cd4c5713e0e - -p_scalar = 22 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c982ddd4dd303e645b0673a375678d94caa7a5c6a391849db6ab20147ca23cd3, 5ea6eff2a8f28b08388ccd5cc3a96bd9445d34e19078906d0284fff4a249068e - -p_scalar = 23 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ca640b8642a3e5210b8e4134efc2b4c8742ee464233e76b7fd16847fdec67ef5, d456fe9c744b8508db1b54ed94dc8508cec3cff4ab87ad2a9ac5fe6f73149556 - -p_scalar = 24 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 3569656cd54a3dc30ae4cb10d257576ec691d0bd1b06c57f3d5e58d6a8219bb7, b7f461ed22925adabaf53f451dae5f396cb17d2de9d401ec1a1451426b325fc5 - -p_scalar = 25 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 2763a387dfa394ebc5748baea677d806b636458c7f178d5500467bc58cce08b5, a74c9ebb9dff775809c1431aeaa7b9d3185225c290df27af5ed4bb7582c31449 - -p_scalar = 26 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = adf0c7dc7c603d6c7463fd85222ef33b512331170fe948ce8a2cc3ca4d63c0ee, 265b3d7e637f3cb342557b2971a6ce6333554ca740c7fbf6f13cd2c401889a1a - -p_scalar = 27 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 5853e4c4363186ac068f237d16fb36646f5ae714ff0b9346a9d89488a059c142, f3f43f1996e6dbf8b8479b051eb184e3d13b589a7e7d77891d2782dc9c3ad067 - -p_scalar = 28 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 462d7b0075f732278909984c66f2728083200f0bdf25e13ce4d7681db82e9f3e, fcb999ec2e558fd154da915ca10abca68b391e74c954e3cb26f45e770d9ae867 - -p_scalar = 29 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 98100a4fdb01614feeca111539ce22716fdfe0b56f072822624d60492ed22e91, 08f40112fc77b5853988cda6e2a826314906b2d2378165b8494f255d5ca39d70 - -p_scalar = 2a -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 649c89ce5bfafe43c2e2594c30a92f8fa155cbe31da6a5c75fb35ccfed2bad01, 0c57301b764382c3b4ff4df46f9feb3064ca69ef0cd3af512ea799821600da85 - -p_scalar = 2b -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 179c85db3db01994b7d9ad900574598180c5bfb4878873fa4ff23ffd248a7d06, b886a0af6a4d2260616e32c45a195ce7b27d2fae15231a5745be4f9d9e596993 - -p_scalar = 2c -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 5f3425f6a98dd2915f0e2046e381d3b0009194abb29110fbecfd7c1fd55a897c, 149d606ec7845bd6c685db822962cbe8fbdcbb94b4f7c480405f99788cf2af25 - -p_scalar = 2d -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e94f7d346d8232781b1e8ae057477f580032940b946c6e181ee426ccd5cd79bf, 28c53400d326194b88d109213807f37e3adabb9708d4cc5a38b8346987d45de5 - -p_scalar = 2e -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = cec684c3a42931dca1030d5babf825e0785c339aa06e9eba4075b5b149ee90d9, fcc25cc63e48079ba8374d3faa087ca2babce29aa54bc0d4bd549d363ea7919c - -p_scalar = 2f -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 4b969974eba78bfd6b20afec715af2c70a624fa936c83906283c7513caa76097, 64400790922202d9fb7e62aea2126c2b646bb1f0845135ecddf8aa3326de29f1 - -p_scalar = 30 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c8403902470343ad1a1baaa76d8805bda7496529bbd803a06b34413077adc612, 7a103815becda33e578a0a31ad628a1cf4d9280548273a48c60a6099e8a5200e - -p_scalar = 31 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = abdbe6084fb7db2bff4cd0b228766127ffe7048453dc690921950b421ff6acd3, 2c6bf8800db805cab2870a6d087e7127d9eb82d90b9ba4a57c836dd7a1eef617 - -p_scalar = 32 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 0dceb8db2b7eaba7edfbe268d5b1fa6aa78bfbaa136852780fb9c2d0488c171a, 282cbe6a3c9d73edbc488e9433ebc5b91021851a5bbb636940617f76651d48ef - -p_scalar = 33 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d20ebe0d5c3fa443da1deb852f4318d4e20bc0ba1e5edf3f508cec1c3b3f64c9, 28ce1c7b5d0ab3d3665a1dc27d97e39d9e0eaee4a1e5a09ac8f4b1588cdbe15c - -p_scalar = 34 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 88f77f34d0e5e542905a3201c67528b72e0ec469af45f9c02692f36e83445904, 810d0dd863f0f073a3d8feb464413c61dc46d152dd20ca9d098572d6a79b9783 - -p_scalar = 35 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ec3a318d306634b0912e8beda8c8acd95f9c3fc492f2467997359638546c4d8d, 045e25a5bcb9ad7d4eaa432d23501e68c247d091addeec0d7fe980be3ce34d9b - -p_scalar = 36 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = bb8a0feaee26c851c1286ff925c4d56c4f2e512ef8557c5fa0425b8eb212cf53, e5aa91bf156a6a15c20d885be2e6c94e811f3bbc189d9a553d708f2d1829ef81 - -p_scalar = 37 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 5cee8449a7b730dd0deb0e4a46c814c131eea5bf07ef5be6258bbbf9e7305683, da17febf0eb30c0c3d3095977f1ae735118a607961d8594b154b6a3a5fe7d421 - -p_scalar = 38 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ba3f0c4a7451ae636a84438514600044bb1ff3ca9556f36a8fc441407e8d7a14, 7c6d897dfd93d3f8b165a43d5b4a6953fe1f247a4e0ddeb420353da4e0650cd5 - -p_scalar = 39 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c13298306acf8ccc068212e3fd1eaf381bfeea57c7385b293ec832e77acaca28, 25bb3938fffe89da3a54d9cd386485fea8b7f9f3499e87d546f60d24d55361a6 - -p_scalar = 3a -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 305f725f648d02cdd66fe3b67ed78be199cac80de4299aaff26c00e8a7ea82f0, f9c8b66aa998b8bfe854a9d241a004c1058facc2859ce652cc12e43b9dc04de4 - -p_scalar = 3b -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 4c2bab1b8add53b7cb9727eaa2d17c362100d5d3a8d063d169d44ed65c46aa8e, 5f9db666b904857599ae08fe831b88078875032d57c814155f7b16f3eabd98fb - -p_scalar = 3c -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d40c4ccdbc6f9915026f8fe2671c39bc33fc23364189d9c7dc1e6828ed8a6e19, fb7dfef5441b17ce3bf5fb42b0ae5269ed39ae60dd5200d3505eca4407f18a35 - -p_scalar = 3d -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 994a44a69b8335fa71cdf6537eceb50a59556621a9404f843667eb1a7f4c04cc, f2e4387e78d4240d499a7b9925bb445db8c3a980112bcaf2280507e624146496 - -p_scalar = 3e -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 0dbcb03ae539b413177aa4c02089a2336ed7e061ed58f5a7e535f175a1962f91, 949f2fffca531ff722b800677eb416119b8d1a1197f98fe11c23bdb144cd1c71 - -p_scalar = 3f -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 0763a43482fc568d95c376329182cb26039c4800f0518eedb8d3d9319ff91fe5, 6f7895fdbf6a64906d4083706edcf21f536746d07db17e688f83fb2ac7c18945 - -p_scalar = 40 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 95fb8394569b38c77da70b83c2c61e01380a0913089f73b9db6d96f305968b80, d698dfbaf17bb6907fef5b5f87bdb407708d94477051507d65c39aed7f1201d0 - -p_scalar = 41 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 01628c4706b6090abf639ed67765765e79527db7ba66f4b9dc2306ebfcdbb2b2, 82f6953ad0e8b8b0d36f26730c1faa29cc34896f459a60b999149d0e46a84b5e - -p_scalar = 42 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 78ed4fe6e3a7de485a7e384de42f8cb2a3cfa7fd44b81977c7c6e4d1c4ce250f, 4edcb865c16f620563fccbb48aaab052aa6edf9c2f0a44d556dce373161a8e35 - -p_scalar = 43 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e8218ad07de96a54fc88362a891ea186c16d0c52a48a4ddd86f04d3b51f9c391, 02a6281365709d2721c138d73cf5695ffa50ba96f99df517d38ca53ed0cc5085 - -p_scalar = 44 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 031195d5bb4a44b9b2cdb039f99c55fec35d34e70dd71fab8732d5cd6a93954d, 0996fb4dbff36b9dbbf2136131f073cd448fb8cc84a8207e455c80a2f7599f37 - -p_scalar = 45 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 49d3ad05548efa2ac856868891e9ae0987986a54361bfe259e5da11cc5e79347, 92c84e04ab904134ded953aac5722ed96415f2f1d9aa2eb06784f9780b14a309 - -p_scalar = 46 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 100392dc78c04937681d690f2b3a8c597263de1539f76b817c5a2a14f58a379a, 3986c52c191d0c4f63391dd5d8365d152ee51bd352fe7d1bf81a1717a4106ac5 - -p_scalar = 47 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = dd421b5d4a210364f94aa89b40750d0149c7cb94fc05804bf19f382e92aa7864, a8b3384c6c87986fee06b8196932fa8dfcf5ee6122b50e13a932ffe1c620c98d - -p_scalar = 48 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c3b025a015b15144eb5d0c75f38fae9cb1ee4879a360fb557331369679c1e3b1, 9032f3437f65f90efc9714e0d1bd7c1ee45f347463a2d195cc52acabf23bf9fb - -p_scalar = 49 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = b2dacdf66ef82fce794922ef17e29b1a2b34a7dc096fb852ae8f8fe1eeb03d1a, 3c68daace507d78859926dada17d2a4c478e459d1bfa35f62472337e0bd6ee11 - -p_scalar = 4a -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d176448e35b23e27b00eea8a5d34f708294b12e1ca1b04e046ce85a9e25a441e, f5b7aa6fd05e42d1883ad28aae66872ef3ba1ad34c400037a3177ac6d447f106 - -p_scalar = 4b -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = a22f8fbea42fd1f6f123716223af72e0cfa8ca0e2a7aa6ab616d2c02fb760095, db5e421d2f3dcfd31867f8588fba9581841e60f312bbc857af8d8a74870c2fbf - -p_scalar = 4c -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 1558fe4c7ef5b48a7c703717cd1823b4285bed3c21848f49cd331464c89bdd46, 64c4fbfa6c47c1bb11b7d9566c81e45cc039199f2b805c34e6399fdfaf1512a0 - -p_scalar = 4d -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = db15e4963d5baeb19c30c6422b2f9c49719a87be5a0ec9ce0a2193bfc266f85c, 7ab236296aefa062d4b0f38788146b15b877add5d160244d7c3cec641f2c8cde - -p_scalar = 4e -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c0e78a3897536f3f711f8b7f7b5065a47e96610365013b3aade6af11a6ab1ecf, 07420d147b8b2f3815ddbf3310694b8cbf84005f4dfeec8eb74bc763b9bbdc2c - -p_scalar = 4f -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 5ed556aae89327fc58f6428165f89e14dd306e2a05176f8ba40206d330ff0e92, 48a20a12e6e5bde12f8c8f3bafed7c8af685ab0166dd84e93d4e78f507cde447 - -p_scalar = 50 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c0bfffc45263832a2074213db27de57335ff9aa8b5f86a2c492bdc0752b3e584, d66a6e625b32d9a0ad495e8c6ddf0bd7e4fc828b4cdf1404dbd63dd5e2b639fa - -p_scalar = 51 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e0beeb1aebff18d3b097c711165c6e4c8e9d0af402ba3183d3a5d81fc63d5e79, 8530bbe517a43ebb3424024630d6f2e05fd243be901a4d62019a80ecf7fe6c84 - -p_scalar = 52 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 8d97fd53554fa366b932d0c17527465559d18be925a81aef80ee662fad29cf9c, e709e0c2210c0663b689ed9ce704fa51be5b8e1c16cfb90d52a34db8328762e8 - -p_scalar = 53 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = cf3086e87a243ca4f87abebf2ab80485125d4714ec67199a2c9ee62dc3363a22, 680ffeccb849b41bfac95c624e639ed9a164e9eea9da5528a3ad4fae39b1f622 - -p_scalar = 54 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 2f83a889ca881f6c10b429a2811a47eb2cd0bab9941a27e9b7f1695a43020eec, b34c3ec9490c9fcc20b8be58e46613a098064580d1ba344eda9c3a6f097c176f - -p_scalar = 55 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = abfc8457b5e11eff36bf2f65ea65641aef617e0025af76773646b0dd7e1ee314, ea68ae1c1e34514244ff9951e0d7dc96316e11d9febd7ee46672053e70ee6d49 - -p_scalar = 56 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = a9ea1b80f80e4b9023fb74270b4af06e783b9ba6744a6528dd5c2b8142a18dc1, 1936c4cd310249e36560fb0f17515082b5d4a12b82101ae4aa68a609123590c7 - -p_scalar = 57 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 2bd0204360826caa041252997f6b0670b856664a2d4b409b516329ff7b4d8b2c, 50b6f7d92a300ea9570bc654f91a71c132f843cc3dca2a93fef1add99e22434e - -p_scalar = 58 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 948fb3f76932e6311707165bb939f40fabeee3e9369a60677d81fd488418cae4, 272c826ad87a68e312a307d236ee7b83420e89f073806245ffa5e2001542b971 - -p_scalar = 59 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = bd88aca74765b8053ea123446310eb5a62d51e29fd54487dc1ee6264a7eabe67, 8eaf07808dee1bbb854b622df60670659bfc7708c4600010484d7b41eb0496e5 - -p_scalar = 5a -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 8307d5cb55648a4cf3df44ded7ee64b747305b7483e904469af9d782de992e6e, 1b7a46f1b63f495f52cd6b04e3cf65a65400a94bda2c0211ac894fe71d88d7f5 - -p_scalar = 5b -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 0211de8fd56927054a39f02bbedd4f4727113bb4ae6a94b8d81ad9386982f865, b58f5407a3aab12d0575a464f4b95a60dcab8e619dc803972a78ec739c36d096 - -p_scalar = 5c -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = aee309e543ae4336e4c8417839093801a8a38bc31487c5269d7127d76294ba47, 2eabd7a5d0554d6cb58df8a2808cbbd566d652b270b744ed2b4ed8c66ca6daf2 - -p_scalar = 5d -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 0581b4711fdf24984a278686e16396070aeaca9afd36b1af64cfdc70d9453d29, bca53b986ab0044d0093e587065d7ad0df4fde3d20de623a7dd6f1dac29e092d - -p_scalar = 5e -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = bf87ea83037278d9c87bdb8203d41796955ef205d59848ebc82a7aefd2df5e7a, effe0727227a558507158615205669f83ffd79279beca88e3a7da59c78e65157 - -p_scalar = 5f -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 76a8f9fea974291f9a127f2bcaa12d0d6684ad762b346fd2263e039bb308cc40, c0d6c024d3290bc711e4e34acbbbaa5e9ab66367f3a2445f37fdfb649755e61b - -p_scalar = 60 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 11eddf7fd0a0da0d14f356cc6abc354d6d490a4b19dd329b802b8d2333e12b70, c0d5874bdbe5d48ffc4b733b83d6435d02d0b07402fda7ece1df7cd727802e27 - -p_scalar = 61 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = f1ae5380578181c7ee848e1d2566805eda8cdb78397e43f4dc90323bafceb64d, e042b8efac30c1977ba880e0cd9f48987a0b263ca4974818d2384719638f3883 - -p_scalar = 62 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = a6eecf308794885e74b44206ee3751becc8715abbc82a095d5192c88589b69ff, 160fb32bdb3d1cef94a20aa01c6f25a45c067c89255b379b5fa5855722f31c4b - -p_scalar = 63 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = bc438ae1a4e65b07650522fd4a9a3b17b1f1abb66a7b43712d037bf83f9432b4, b598c01eab0329a6fc5c3d3846700b4c854a75c18aafc1b9ce4a815d7b96c3fb - -p_scalar = 64 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 55401274eb1385f3f7ac46733fe90a2ffe49233161c52cf8b9a17db9bf61fec5, 9c41619a5e8eabde955f973dcfab730b5246164a7a4539485a247ad3dc02f970 - -p_scalar = 65 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e9b1c23914da499e6a610374c569a602bbe914d3b99cd026b7a96e0a4ea6fdf7, 6b3161f424574039a575eb9bb418886c8cedae7e90de97834a090f01523e6566 - -p_scalar = 66 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 0fcaec0ffecf6fedce33e49cdd3dac5cf5284782e9f60f1841a6fe768f9b4748, 5d88925f7be836710c2cb707df01871c9bba0433a436d55c35e31ecf5ab1203b - -p_scalar = 67 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = f51ec8724c3c386f57670e41bf619241d0a875e919f7f72c564bdda6c71f8d02, ebd64e0651e2c128590519f6cf5b06dba2086ca0d79e990cff513e61174082e8 - -p_scalar = 68 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 1d6de36b734fc1b835d2293fc7ac3efa90ee46554c2a623582d0020682c4bd6a, 9456d43421a5f33f8a51077588462f7b00330a1f9ede82116b953c403008a7a7 - -p_scalar = 69 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 680d5abf65e03a86c08ec1602b1d28fdcb11125c02a9ba44de6ddcb77b371390, 2c292eed1161aed1b1cb924f8e340368378fa836c431801a2a1384440acd87c6 - -p_scalar = 6a -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 7145405dff1765ecb81f9fb1279df6ff750c11bbc098aefac4c398cc1e628b51, d9d0fc13f8a85516a344f964fc017053ec8de7db843d8108c3c279e27c551e90 - -p_scalar = 6b -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ee206023efce1a7028f9cdebe9f6e8773571e4d1592ce3342ca0ba9c3796f4c7, 332816bd7158ff3f1ff7fc61fd21d00ed8ab1bdaf58097834dea61f7489c9623 - -p_scalar = 6c -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 9d873705000a079bd1a8678742e1cbf414d147984d7df1ff2871263f72371e17, f2993035b4a2be93f71aba0e4ec1d4b6c9cc69948ff6b195c580b52a1fe001ff - -p_scalar = 6d -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 3720b2475548de20e7b092174df861f4fd4f61e491ae8d13aec63acbdd10edd0, a02511c5e354ed39f329dd451478676618dd6277a93299f250be67b8140c2087 - -p_scalar = 6e -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e7009ee6652405a945ae78ba39dcab99b1fc8c8c23fbbe6e76fbedb5a463fbad, 86735660b10c81c4d8f38f9391b7bf0ea89eb6f180fff6a9465703a073face17 - -p_scalar = 6f -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 0cf804d77a9b6a20098f37bb0832c416327dac318072f08dd87f4ae086653aa8, 0650f5316fb2b8cfd8f5233a8eb74ecae33f2b325dc50598b463abc75981de8c - -p_scalar = 70 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 71704d008938c16745ab5a4d7832ba0c94e258f604a428f26a9505760a99cbca, 9afff3da3868c5bf18fcad9782c9827fa90146d23ff14df8246854f10774748f - -p_scalar = 71 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 734e0d078a2b0d3acc3a5ecb983538693289e86e10ec0d40a125e6c1b7ebcb88, 9e27df61b60c5ac32ec3356f8b80e6130594324f879f89461f26d165ae6ccc9f - -p_scalar = 72 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 08e2f429f216dc997afec8bb9b4e920c18849f8ebc30d62c751e03f0216f7c55, 43f113786db22eac69467bebf560798e684a695fb28407b8a1a2207de2933cc1 - -p_scalar = 73 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 7c3ff661d8ecca6e8a2627c4851b5bc7f15b920fa8dfce56ad19e039119f6cab, 16a226267767de4e237207aa01d0b6c8a94893a9455bc4d84622d40d2a0a4a40 - -p_scalar = 74 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d8f1fc5f6a92b9aac9f08a5659cb1b6e4b3de89bb2f5f79c87f9793bc9826344, 56375b4ad46ea8260f93d3738fab65a8ac3cf4429a47f0e979ca80614beda6a1 - -p_scalar = 75 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = bbdbec7d79af29b17890e8d54796883355a3bb1ad9699e9208e4c4901b620dc4, d3208079bb7f001d623ccc6d0598d7a3af3092ef526e5caf6d8af218c1ae1e43 - -p_scalar = 76 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 4977379654d7a19e24869d65bb07ad54f8f1d8415512ec1c24c00de93f5f68a6, 363b29c5671a649e930698ea3ad859a98be407f6fc437719fb0ca82e0f9e3121 - -p_scalar = 77 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 6ed0b988157b7f562be22ba0f3a49fb4062afb7c1e314dde87af199e6cc47305, 0120efea019118fd2817ebc7f0984aebe82d639c78848b687e9d30afd29ac026 - -p_scalar = 78 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 9c7ea21245a2473fb62aaf7c37e7454e094e7ddf4f6ab73a6ebdb7bcd0303ba4, 2ff813865b858eaeb732ea74d3e14abe65d87563555fcb68358918ab6b772fc9 - -p_scalar = 79 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e1a8d418f77f10e127d2bf4f683b30d1d71602d5b0e5fe2014d7251a8c03e3f4, 517c6326f166afa4550b2b1e6cc6b78d00ce7b7c25f5b6695b6be5e1895f1528 - -p_scalar = 7a -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 62280f9a573fbfa8bf357e0c9358983ad183a961caf64cbd536eeea92f4ff97a, 855c4c324d5efb4eb39466ab42ae06fa9156ba434e6fe2c2ffe25e48816e894c - -p_scalar = 7b -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 2d7ca4d8f1e354871783d1b6917e47255a71497198a5ea8c62ea859803b58b02, 5146fbe29618773ba78f8d93e91c1fd525fb337771e800abc0964b2b64b2bcdb - -p_scalar = 7c -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d8c0472156db126649b1dfca7f1412750a10ed1576d7996d10f264bc85fc00a2, 7bb713506fed7602646b3b52b3661bc6a727afaf1b226fa5bc20540c32897bc8 - -p_scalar = 7d -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = a9fe2396bb85b9cb04b76d2d1ed32559f72dab6d225733faaab54cfc93740130, 4e9295063c01443fae23a053eba00f2add6dc6c5a860c31ded74f2db40dde60f - -p_scalar = 7e -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 6941195b752838c39a7d703660ab52e9519a47b4807a9d289c9635be52bf127a, 6e5b1591deadea0aa0eac0a955c921d27ba60a90ad89e8e79f0041d18f259ec0 - -p_scalar = 7f -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 15fe6a86904a36cf6072a061ae619f2870e9016cdddfd92836e84bb6dee35b41, 898a6ddb541c3eb52f57786dbb0bfc0d02e3b569f529fd2f6549697409ffa69a - -p_scalar = 80 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ad311f2c46d5a6173749bba4b3ad9db57ef2b6b9ac62ff5463c5cb817a2ad62a, 05c72cde13ff7e780755d9928a294ec74b90150dc987cb0048857f783d00c492 - -p_scalar = 0200000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 135dc5395b54827dd161d2cacf780900bcef72873566cc63b2330fef4e4ca463, 74f3a8c6d9ead371168ca79292ccde25ef5ddb10f8205f939c70fad1d840e439 - -p_scalar = 0400000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 15b4488b29fd9fd06e1da8c39a33c6771fe19e357fe4364e9910ba6b23a5d896, 0d3b086249137c65c02e4db6f81a9a716df57590547e9c17e0bc6dabe5e0dd40 - -p_scalar = 0600000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e78c2ec0fc61206741311f8a38038a5d8f860c7943ef881c84cea0691416a6a5, ca41108461c93c6200aa75130c9ed3454b336200a69fbf68b6b2d17ea528ca7e - -p_scalar = 0800000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 0bdec21162bc679298204cb64fcf68e15d2b0ac6c717370e8b5c619c76497ee8, fc8db7152d2b034ca10496c1c2f1f374061c05691f21e53a968c331059c4efee - -p_scalar = 0a00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = fe2bc235e52800a089fa443d07d3e75e96e9793ed510053ccf57fca29849e95b, 11ad8b81369f4f1fde81bffa1abe1a6d4a7ad5b718dddd9ce3df7473f53818bf - -p_scalar = 0c00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 69aada7f6d6180a56183291b6ed77d1c62699718e770b20dd3694e2ab20364e4, 2ac1b72cd7237812295dcf758046927202817baa878fef88ae06fab40e7aaf64 - -p_scalar = 0e00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 1280aafbed23f0d182293299cdf809af94589aac6656bbe13e858c2ffceac518, 6405033235a7335e2a34ff4cbf0fdcdd1fef5c6630513e802154f3988cf91d5b - -p_scalar = 1000000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 7be5ed0dc475c1293f06d66c530cb4f3d8772d353381060380802dc91ec34f9e, f513bbea8d7a443646dee7396d5e4ba139c2d7a9360094b33461c3e6ce17d4ef - -p_scalar = 1200000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = f82412db37333f2074feaff5e72c2666cb98c3ea2233117dba89095174f9fd77, b51180a01afcbe79358bec59ac19d3607e5b687c85448e55323c0c5062d8e35f - -p_scalar = 1400000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 5ec40582c9a82fa78d5d177c64ff8578982be4fd46700b8b37071afbe8316c45, 52b4b08f3f3eb21aced0c69fb44448b3db17f60c60fced7baae71c8430579987 - -p_scalar = 1600000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 2a1ef7d7822e8cc963aa5cca4fd924a2b44de63e08ae4169cf62c250869027b8, 7f5cf538002ed8de737d18ccc5780e107d7bd440b479c9141be4c839914ca0c3 - -p_scalar = 1800000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = f3b4962f5f3e6c3e028a81514f3cf2dc6415834bac4ab3aba3d6f4868eb6e843, e48886e1f978ecce3ce3229464eb6129bc8592761ef431aa6ee6516f67822d0d - -p_scalar = 1a00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d9025fff8a8af1c635761c8ee1f6176d54c439b0391fa36e2f41e643356317fd, 945416afaa1c4881851248380ab5d45b44b722ed6a5b8ba4737d90c30833bb8b - -p_scalar = 1c00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 1eb6a9688f95277ca3fd22fbcea3f029965a774094e746409c34b650e16e05e9, edef63b45310a343156d3e99647bf2b7526e8dff0a70d011dadf59c284527b09 - -p_scalar = 1e00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 870ae6bdc2754097035ebe4addc4f080ed400a2232cdc71aee20415c2245134a, b092884c8aa21a5e16a601c1a30573590a80e6aa1b0aa67d5e6d197b3fb728d2 - -p_scalar = 2000000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = b7a23f34b68e19f8d0107914ceaae10ecbe906f04c93302efc189ae71e29a3ef, c30f4406c2bbcfc89aa6e409b25e8eecfce673920352363716278a3d102dee62 - -p_scalar = 2200000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 68a9969c8e2256288644ef1cdfceb8ab862ae25e2ece8f72d32d7cec0094e84c, 860d7d9237a468fb342f659a640f3249cf7591e87d45dbd420df61d84cee8789 - -p_scalar = 2400000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ada4cfdd7ecfa8408c94a21ab972da90598d0bf8849be4b7ab293027aad991c1, 506cb915147a9d206ffbdb14959ad5aa8359e85efcde65cb6c2b463f043139c5 - -p_scalar = 2600000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = f6e29e442433b4c681d700b2c6fa654a9edd11a6b7a82bb80ef6a240c793c0cd, 2a221c4e8df83860eab25e2e7b77b685779c1f1f53e2a0ae5522c2a7660fe4e2 - -p_scalar = 2800000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 54476778acd2f1b6c92becfa390b3ef2b1643ab5911bc478c3e04d7902381461, 44fb8cfe6f4f86f611e7d6ef4a5ec53cd43ed785d3de39a57255f3b29940c550 - -p_scalar = 2a00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 574fc2b081704bde30651575aab5306d953939f44ead0fd9d6d8bbd2f2338d2a, 0d2ba583b63665ed12abd59ad3ae16b618d475fb149c0c70cbfdf7e0becd0d0f - -p_scalar = 2c00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 17f904ba45b0995e765a50db1a6fd0ffc5772beefdc3a47b83766947d17d4e0b, 3705bd94ebd02b2b98c726b0b934e0260a92480d3d8f55123119bc7cd77cb781 - -p_scalar = 2e00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 5090d91f0b80bcb946d480d77119c60ed7799b31b313c052bfe48a8ff43daf9d, c02509dd9d1e27a689641fd44e2a6d73e91964b166ea55f536b3b3e178c42840 - -p_scalar = 3000000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 389caef34ec5b10982159d07de7d6f2c945353e1b2d4c63aae485bb72b724759, 8cbd64453ebdf75d7e905c127c0dbfa0d23d3482226621bcb57144ac249a10eb - -p_scalar = 3200000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = f5aa74e43a64439e577793fce12c68ab07de7ab35133e5a2768978afed08d68c, 5da88e7912bd33f859ee2be3710df0cfdffc222ce2bba6fd9ba826f3bafa160b - -p_scalar = 3400000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 58c8a77ac0d58abd9947c636a9b6e05a8d98277b4a837f6908ed8febd56daf06, 041e7a12c71e14b91342e6a71c04f3a2e9329839ef892c2c0bab695ba0ede1b0 - -p_scalar = 3600000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 9bc6c2af18eaf22cf81a4b3e0fd97269d8f158f5d6df29e581ea0bc89b6956e1, 9c4b4d8628f8a1e4bcc6ab6270d0a6c3fc4405f16dae12ba3e2c31a1929daad4 - -p_scalar = 3800000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 98fe1c61f5b61d31fd025001b905b499dd4d06aff39e7832b7ef9760ff79d2ee, f71dececd3c7cd215cdd4f60aeb14e92c891c488cff632655607c67f3a0ed7fa - -p_scalar = 3a00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d7d80165dd6861d485715b2edb2589d37b0b8307280d1be142c772b68b61c205, ba7519a234f0c9acdfa1d767bda92244ef6a5206c475428a9dca8b9a7f78fe7b - -p_scalar = 3c00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = beeb3ea58c37888ea76697bd602e90655dc516824ddbc0b6aea68626dc4ad4f4, 935ecb9c6d33f603604a9f6b651bb20d1b747df45ca0bb7be13b5d0deba96eec - -p_scalar = 3e00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 782b816e9f5238b55631049161a549b25d485fac31ca379550e1b82c5de1691e, e4efd573a67b8fe35130dd212031f25f5600525dc0d6ad5fec0d468cb9c2fcb0 - -p_scalar = 4000000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 412c9e1e9fa403a4d1b299b504aea4a9047e2ccde180b2dcb618d590b01e6e27, e877ae428aedd469c5e49033199721e6b63afeca0ccd471c772d75c986bf8aad - -p_scalar = 4200000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 4b782ecabc2251e29f1ee33c0910e35e65854fd78777a63d723ee82acb8c9fb4, 7c75c30e3e16873bc701019f2cdcfe430a09be2add256acba5f97db2ba0f87a9 - -p_scalar = 4400000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 720d5901fc5cb4c4f2876026ea269465bee5f33e85425bfe3d16740409d9735d, a6506ac46b2b29e9d4cf469b641bf2ab861cffaa6c74643abefca879b25373ee - -p_scalar = 4600000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = a4fe196b936adcd72b999e56f814d996687afcc16c6ac81b2bba2fcb7bd03b00, 1ab858cdf2a167e12a228e923f83de2deee27d5ed2654ccf28e9a3d5768260e4 - -p_scalar = 4800000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 47f93e8f0d2f339d2df4486ef3b4e2e0fca35bdae5182b8d7f4b55864f6dcecb, dfc2165d0d72569235d4ba0bb9d4830fc1f81d45e3f65163b8e242d7c1c93b08 - -p_scalar = 4a00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 4b5a7b2307c5f1098b5c3d0371c68991750aa51875c77f94fb78df45414657c3, 4cfcadcac4d7da452026db79f61a19bb00a9b7aeae80e414b7db7b79c1804211 - -p_scalar = 4c00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ffab5705044464f22bac283b351571b3b88e7c47d8d42a028b002254c72340d5, 99e919d4637aad57bd1c7b347dbd0cbd1bf10ce5e573735768ff22be52225de0 - -p_scalar = 4e00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 5ea74c730418d46d3da600eade1864dfc4ae8bbb8b383d060471cf0dac517b4b, 44220f00df9a7e2ccf6df413ac330d0c8d686b4421917c512d6ca372422f8c60 - -p_scalar = 5000000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = a35aa23fbf846bbbd43da670d2f74daed61257ce383c8ce9b1e13752fb85fa4c, af2fa55364392dd2cb280ad5c3b55ea7092071203c9cb8c4a18bdca2bbde037c - -p_scalar = 5200000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 4644b8fb9aa64d9150c9f363b5117831ef6feacd1584fb54adb84fb6c1127e87, 5af26a8085d1122b9c217ff8c58b2488408b97ee0b241da38adf348eb20841f8 - -p_scalar = 5400000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 91c3a88a5b6e8c279d0a1f05fd8884e9f1539d9e4c076aa9d334b37c4b8e12cb, bc3bafcacf9e30bf2a1948f78e1f8a26cc7c918cf4672e8646d15e7745855b5e - -p_scalar = 5600000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 5e76ec2fd83f56287099228335b50df42b516dd73422c5c118d919e2ba9fa405, dea46d7ba6be19c7e2ac310f86196e7cf11adb5bcd22e983e488640762d3731a - -p_scalar = 5800000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 3ff4444fd2ad3a96e5d755618de929cdad07e3c765ba422be4db7c0067eb93d4, c3ee8d0fb564c728a6f5855f810805aeb144b9045aacb347ca2ac1438e0eb1a2 - -p_scalar = 5a00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = abe32380275a9ef53b7cd6098dc0954228abf7b7a9c7d8a5ec69d5a37aed7fc2, d89fbc8f199d31aeb6f74e3ead3671a34ebc16a84166800137db4e055970628a - -p_scalar = 5c00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = deb035fcce7723a22ca3e0a1d449c1004ff211619adcd4bb4fc56a1be50edb52, 1c4fef977971ff17c25e5fd56a4c368f2ea2c4a0e263ca39f956f57e77aa2afa - -p_scalar = 5e00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 7c0fd64417a177b5010b2e0df05981da66d63eab9af46f4588f0367ae686a10d, 63376f9703aabb207b7a699c10d37c1ef98f3720ab5cf6479931effba58749aa - -p_scalar = 6000000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 50235a0fdc91927053b2bb803ee35067bc56637b5f29cd078c56e735a64785f4, 777ef9a3a13f07f17fbff45a0f07fa453cb8a7cf7c69fdc4e6e549270d3b559a - -p_scalar = 6200000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 2dc1b8bb6885309fb1e70bcfd44571115df7fee1116cd289c547a21465944d7c, 5a4a2100adff0aad0b1626cffb8bb27fd14c2e6c8c275be6c7d820138bd23b08 - -p_scalar = 6400000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = f1445d07414974411c75d37565dfd734bddc1fd9d5a52b5d45ab2440e4c3c19f, 5c00cedb1692044fb726342f6f670616f1087a5b4cd9bc23c04be98962ba0ec8 - -p_scalar = 6600000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d1609bf2cd28c8fdc8b4a3a98a9fed30e6959e40b4a07fa19ffe9f1de32e3a6c, 4a1e06b336041e2b2d4cd3ddfcebd74413113e3950b4c34d2fb918dc46cd6c6d - -p_scalar = 6800000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 237c88057388378848d61dc507b6f556b2c6a5f201dbed52cb4f805a3e4e7d6c, 25082afde44cf841146f4bba1a363f26c60154730f6701cf320e4e7c7059f5f4 - -p_scalar = 6a00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 845a882c8859bbc2e883d25ff51993083258a70ad731721eddbead4a788e09c4, 954ce3bf06973608099aa5a1cb8e5a6085b82bb53aeba78c009eb3364ec42bed - -p_scalar = 6c00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 4d6eec323a1f89e99267af0a5dee21c6d56850cf6466696a53c474abad6c4e7b, c29df3748076072f982c5b89ddd64ab3382ca3d072639a61a9240aeca8c4f745 - -p_scalar = 6e00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d28527c6a3824aa9d34030745566465654a149071f100d40b1b006aebc0d6863, cf57d4bf75176d98a4ddebee9b71bf2c541a56d92c7ea275315715e982e255d9 - -p_scalar = 7000000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 8f12502ee0138997ad364df067b256dfde2d4ad1860b8bfbc370e522cc1b5e83, fcaee231345a245bc07648bb2cf9b45917ffeb533f437995afc05f23887c6df5 - -p_scalar = 7200000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 88a0df625c0cd66e4523b7dcd2c772806d46968e6a3bd9ad34f365ff3405157d, 9a00732bf6369934bc38025aa45bbf707c5afd733125eb17ce0c6f0f3ba6eaf9 - -p_scalar = 7400000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 350fed185a914c72b1ead64104f9670908dcf2b70004539e0f58cec54e27d357, 5533f0f16199265d9d3cf97965bb62aeba074b91b92fb538bb0bcadc3aeb87ab - -p_scalar = 7600000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 721595eece728342af86c88034fb313add3f191127a10139823002854cd4d5e2, 9f3bb1d9601b4aed7b75a48a325f5367443b4ec8af8951b3a9e5b2faf2c09845 - -p_scalar = 7800000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 394c3ca1652f359aa37951abff9f5089563ed687c3db1e5fec79a10fae256721, b104db405fa38d00eccc333d014ba1b9efd39bf1f5b6decf4951b323dac0eb92 - -p_scalar = 7a00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 829bec8ffbbc8adbcaa9b2f496d71f842e0d323fc98fb2ed918ad277a25ed969, 28166c21baffee49802af12b233d24e2a8c06deafafb2e333a4d2abf4f57bf3d - -p_scalar = 7c00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 114608474b9883e7e6183976a85cf4eaabd1eb6c8fbb831a86d4cd28294b04f8, 9793db050d1aa41eb31fda7157078ac5f304939f55b0c15b5ce7a018c3510ab2 - -p_scalar = 7e00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 8ccebd9296f0b3dbe251932fabb53deb5f020d8cd37bc364b63fd5141593f8c0, 34cd83e4786564de19a5851fc34f06c6ccca7d68534afe1b92f86f449b6cf24d - -p_scalar = 8000000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 9211e489de7f4f8a426eca29484c2ece9c4e7ad63c6341fb197dd46d95a7b1a2, da06d1b7f09f1fe8e8d79591e3c11217d4d3f6f0f9a8ba79eb66809138710e0b - -p_scalar = 8200000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 0695d25fcba9327ba26e5822d699d95b7a6c1acdf37b2836203a31d5a56c98ef, f55fe7336f090c5a6bc71eefa6525e79bb7f9f1f194de5bfaa2238beb7bce76c - -p_scalar = 8400000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 95e360666c4165c8b8e2959954327c6554009f1e6d947506e4cf728185967fad, a78389bce264586e1cdde00ce0f1a086afa0f66db6cc5ef2c640cf8b5c4c0ad8 - -p_scalar = 8600000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 3805f4e7a74465b996976624e2d6122797e8092e1a7c6add2ab55f653e360df9, 105aaf972949897cf26651a5fccace103ff94fec5dfb12be9eddc215f5ba9146 - -p_scalar = 8800000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c48d07aad919b53f72bfcbbf25a2f91f7112f4122205eb70be6dd7fc6b7733ae, b178c26282cae663c70ad8ebbdd2c625dbafb3ec91013a8ec15b973ed95e096e - -p_scalar = 8a00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ef1117f3334d256570ec0990a1bb0900c512ae94e04e361fbd7055ffbd4132b6, 1e15b34510397d8988360d2718ac678588eebc513fcec4d5ac26b4177d5773ba - -p_scalar = 8c00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = b36ddb5a551266fc72a174550b384fab97c8f9d8b94fdd362441c4c0ca8f86c8, 0b2d7199108eb224df89ffabf8f575e0c3cf9430068a4299731758edcbed837e - -p_scalar = 8e00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 1f07fd1a9ee01d68891d265bb9f79dc8d31da5b74b957a08455930bfd7425424, 110d6a3ad1118cca57d3f35c423f5902d33663dc2d6f23354ef6ee38a25cfd6e - -p_scalar = 9000000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e0e5daeb54dd3739389f747caf3c3030703ef60057feea5b805c564631890a36, b5e4284906a573c5c8e7c21d50df40d681b40e8a4ac6c69d01db5b3c36360eaa - -p_scalar = 9200000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 11a4ff0222e558e644144f890e8ff816669d7b57254db82633e0f086aef314c5, a545042d61f178f491d6dca4faaa253208a83da7d1abf3f4371acd90dbc10419 - -p_scalar = 9400000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ac45249aec82d6d8a5e1d3c6e19adb253f01996cbb97d0320130abf38cb5ab31, 2534ea7809db05101047eac71457406b02dee39b497e2b7c3d8910d1a3040209 - -p_scalar = 9600000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c738cbcb5a8e43bad9f6002307a003ad81351ce14ffa84fabe1b922b396fae20, 362d21f8ceca0e6d98c801c19d4b94040effb85f9a2e7e824ab9a137362105ac - -p_scalar = 9800000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d723ad15da12d3f14aa86124ac83299759198011fda9f625e8ffb637410eaba3, 17278d3a7fe4d4c66de3860db69fd06752cf7b3712456753aa223ac0d2597ef3 - -p_scalar = 9a00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 5bddf84d01fb6ab7717df9c3adcedc68fbe6587456a7fbaf7cc7479be15036a4, ea6f8714377703386fe4d40636f3d64484810517cdb79e553ccf5c91a3938061 - -p_scalar = 9c00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 0617a8dfe008a218c2700de3e39cfdf9d6b37e5eadb39a5c5e6afed1778930bb, b4c6d7fcab4adb7540d7ecf6657057cbef4004859a01af58c166bbe8140e1951 - -p_scalar = 9e00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e19854ec7a29e8cf8765ed78b03c224b072454d8cf4f0b1b746bf4ffcd5eb860, 979624d9790fc716f3d40cd5c626d3b0bda675912d9debbbb665e6db551a2f72 - -p_scalar = a000000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 6372def79b2bafe8b18e2c1354107588281fc8dd7b87f257a83b969946191d3d, 1c43104f1bd8ff56e1531cd27bcef30bc0d22b49a9e985c0250b44b7f2768d35 - -p_scalar = a200000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 9e15ebed69c53ab58cb605eda605ea2cb0766c76159bb5814ecfd1490d4d367e, 08fb59cce0d3f4cdbb12dd157b823412725b82ca3c22662e0a4e921c0fae9c8d - -p_scalar = a400000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 3b082784ac9daa213e9231dde959e9257f81bfeceb104d11989cd51d81ffd706, 2c44be725a065ca4718d048d0d7ec18fc2c099c83eb051261d71fd00fd80e5a8 - -p_scalar = a600000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ed37bac889c8cd093feb1494b52fe95b30df23d4bf8ad1baab45ff2f3b264155, e2a656426e8184ad50b24ff6968ed36755ab15a05a14cddc2b33fd0b18751435 - -p_scalar = a800000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 3eb44ebaa26cfda9ec294f9bd82e3b0c7adcdc636cfec330698970dcc1c88910, 98fd31bf0dcc0286194c7d00e797bff25b287f337382cb12d0b7736358611efb - -p_scalar = aa00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 6fd044f86e7c58d93fc322e9763408262abc70bfac2a8c9eacd17f62a70bedca, 1cae0c88d5db19418efb64e8b272c588b505a57c634c07e8a7b3b7aa3e85682c - -p_scalar = ac00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 03e6e884142b953fcf6e45c2f0b7938f042782b6c788822f7caff2a8dd7f4788, 9c03fdba806b71fe0ab7577c2cb83384e1a4bdaec9349485394cd3d08b708043 - -p_scalar = ae00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 541f1c670f8d83510a4f0dce10075d18a773c212de55a51ab85d636205e61d13, 1829ad5b8f00323d21cd1abe5b8c4a798647cac1d2dfbe09d831cf690f3ed565 - -p_scalar = b000000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 35e8048ee03c366502e23d41dfc6514aa5db5ab62ea604675fe5691ed785e73d, ecbc2e79242f1bf117353391d399b947d713c4bb7b31e5a5c074ee70e5255f07 - -p_scalar = b200000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d8e96623f2e1ed0f96c490c17b199bba4831540870192a511fd78414f227c4a5, 31f45190088c94a0959d925cae1a0b7556e8cf57e1a964129c33b8132181f30c - -p_scalar = b400000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ed1b755f2815d3cf2138d71106187ec35898b1930650dd7ce81907220b4ebbfe, b38056cb82c54a2b55878db37ac9ad4f75837547c5ee97d0abeaa1ebb0c6baeb - -p_scalar = b600000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = fb909a74cc54235e35059c6f94d6bfbf9aa5d2c1bd5a35267217348749af1daf, 4f41d2496566b84407ac1340451ccd2ad977c020e4667467ce401a280c7616d6 - -p_scalar = b800000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 12128b2fd412db03d45acfecc1c397c7110ef147732ebbe02e605d97ce76aebb, 2fa8b950c6a53d9bf56d6a2d5f34969d145d8cd34ddc97ecfd810f66d5b2ca1b - -p_scalar = ba00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = df8df34707ba78f463d2778a91308c54034c07d0eaef09eb0d13b0393524a32e, 3821eeb8c663cfb9e4b155a08cbc34744e80b886a906dbb25524e7609b6fffff - -p_scalar = bc00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 570f50b9ade5e185d379afd6bbac1e92f1ca3c3639b1290c6b3eda297e866baa, c09d1b8382c7905056e6189930526a456578d62d573e547f7250c29000770668 - -p_scalar = be00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d9b588174709218a1980177d765796027ca43bcb2bc83e9c14dd8c3678ffb696, 06fb5b1a18c5f5c5a69b595658090885a41347586783743a7d64ff6e983e64c7 - -p_scalar = c000000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = b37b515f042eeec8d64cd42d9c875d9a1a1db7e49924182ae5d7f844caaa358c, aa5b7e3e7dc936008211befda6481e8103cdd1271df9100cb2b22bf684e9a041 - -p_scalar = c200000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 1e6f624584d42c5a9fd11c23e1b2374586dd7cdb056b372c9a7bfb76f3086c58, f3cb97459a2da20e2e0ea9c7d6a9cf97272ea955866470574f10374f0b856d4d - -p_scalar = c400000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = def3204ff622e0f51e7dfc2f11b5036e56aceaa0609c4809389ca9c3b1d2d491, 614f7f1c3bffc28c1c998443628fa6db155d239948ed5775b1d1056c2d0148ab - -p_scalar = c600000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ac2244a68510d43ed03eb697c84cbed4e8e7b7e5495fac838defc208af8cb7e5, 8b79df4c11cfef71055dcef6f267116bb51baacd8680171b40d2f3fe84d6e175 - -p_scalar = c800000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 3b2b115548841c4bac23208fd26485e9f65a3640454ef41ff86d13f9e149e73f, aa798348a58dbf409a1af4fd0275867f69aff1c78d4bb4fa916dd3f9ac1e05ed - -p_scalar = ca00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = fbede0865908334ae1e330f9c70cbc1a87382d6f40abd3c3eb3a10b1e94b9d1f, c22b42c5289663eb0ed8edfc44d2232151eaa4b260ffbcd71baaf4cb2202baeb - -p_scalar = cc00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = db88c71bbeaf13bc07a69a30ef6276ed02b0c293cb37d658dc2d1be24becfdb6, 87fd26a1b08c632348f9e0cc903001773d1c9232637327282bc7910a368001cc - -p_scalar = ce00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = af06ff2bd95601e3e6b95f2fdee3d5596a0d1bea32ab6a5c6b768e347d563eb6, 7603685d5acf30d24fbdea479e4585a41f3afe752f76070dd310d38ca0756e4d - -p_scalar = d000000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 956b31e003c45e52a078868ef78edd391571580605d6297b8c885312c23fc975, 74c849cab3eb568bbe6dd84b81d0da67372a23c6f38198c0b8fd8a2a0084cc59 - -p_scalar = d200000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = f7ae11128858d4bd081e8fb419b8ae87f8b465db160c6066244bf1db2540eb02, 9dd07003d57bcf5e4b24b13ab51778225936f29a5ea0a1bb6ba5c905ef84e7fd - -p_scalar = d400000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 7e8caa24bbb577974f1bfe0fde5e42def5eae8c7f89acdaff3022fb6e646703a, e3ae768db721c229fc366a496dd93702ae1f99512ad40c1bba14638bd3a8f0ba - -p_scalar = d600000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 726cd1b8f826237f899ae92398f41b6f681817c7c9c515ff302c3cfad169508a, 64109964a0a836d6d035e73ea9320e3a07b72bc6853111e9d733a3574aed4a95 - -p_scalar = d800000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 2cd615404fa3c57214f08f32b806bbb3c97bf51d0ffac3078f75eab499646d05, b8b3825f7964a7e88808f4049bee10bf7ca6cbabd1c024f607f2af89d56ec49f - -p_scalar = da00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 44e6235a685fa8c247bd7309a9de5fa66db2fee880a40b64c0b8debf4aa4d144, 0833b86b5c19d8f9ac8db4c9f6f6716b89b462ecf3b0c234caeaa55f50014826 - -p_scalar = dc00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 3027a162030cd7c2ba74f8354822722008faee4e603bb73e4565f9a834ddc625, 10e4eb4cedcbd2a01407f6062c80c8a864711e860cae507bb739381308d35c5c - -p_scalar = de00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = fe35f5c66e9d40a301eee42e3d4f9f3ec28f13ad81f4f013096bb45b738230f3, 1b9004134543f28ccf139d82bf91e4424e7bc18151dc4ebe18d3828cb1fe885e - -p_scalar = e000000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 9f40ac3bae92032334e5d0dcb987a24a5e0e8c3e803e25dcd0667ed68b11888c, 810e13d73b8421cbb6e33283259b0e485ed7406e949cd706ab9c216acb1f09c5 - -p_scalar = e200000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = b9c9c244af407478c96adb0c950359af1d0243f09da21539499d4934d78d5664, 6560fd45390953fb7ff4c255cf2f156f2692975ce17dd11b2889aa68e4a01d05 - -p_scalar = e400000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = bca14b180256394e833badcb026fbed49d4cac5be7b7f4d976fdb4d8d72905a3, 1398508026f62ea2d9661954f8eee0784c145115921e9518f6148aab2d205de8 - -p_scalar = e600000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 9e84b1429d952dea1a5702fde822c43a6440a71137d7a6d5b1a124a2e982371a, bf0877e197f6185bcd1a841d08d3644cd46ab8430c47394c065da5918f8107ac - -p_scalar = e800000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 5774d975adf3dd428b24580ccbb8bfc2082ec7feeac69a05a84eadc3c6f859bb, 5b07a1a1962220d00bbd4bcea8db09f6f574e02249d4dfa80cfd0e3e04e7aba3 - -p_scalar = ea00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 18b7629228d8a479ef8c3fc19f7258a24084cd681c0bfed585b4a7b6c5b52828, 51255506bd74f106a8b0b8f89daf1b0ab051b6588354a76c285fe015041903a0 - -p_scalar = ec00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = a9269757ad6c71aecd89a9d614befaa9c670d56c86853eddeff93c2d3edf7a05, 5b0f80312853357e54c02ae48d51af5d92ca94e94ea0bf05c41cec35a788f16f - -p_scalar = ee00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = b5ed7a9125881c7719ff07a13ee17b6081df350185faadc70c267dd0ae0c2b14, 2bf138d8cc37cc1635121ad130f4ecb5563b8196d2387c33ee82cdcf4563b354 - -p_scalar = f000000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 80f1a439c929319d7a3a6453d4fb689735dc136663621bc1a857240fa36a2737, af283981c8d54f6404f2b6dbe1fe2f104f4ac89a7f873a1403e7d8b40734f45f - -p_scalar = f200000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 728fc5136ff083f3eb5c80bd85a5f16d33075ddccce277ec4182e4aa4bf75924, dfba71a5f3e366d7f5720029f53f0159e6ac642d3ee6a5135c38717040866d54 - -p_scalar = f400000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c02fe1c417b27af67e00049f9ab0deefd6ef61aff90e37bb06c9f96c6e75e767, 1c2c0ba15a7720bd2467d68fe7794a246f0c190e252fdcc837d308ff7bf10b23 - -p_scalar = f600000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = a883f42917abdea70042d1b7833a576b51a3fb710ce3673f85d05386724c3c80, a16cf3f68a9ac134de65695046051e46111266374775aca4b4f8174fd0aae8eb - -p_scalar = f800000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 5f2f286449c33aa7ac7d0e1c1fb049783f46e326ce433bc6dfffa17e057a3df0, 1ad279b66e06ba0f5381b3de843a23771499a27b656927e1bf4d171cee8ea2bd - -p_scalar = fa00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = a8b7e8a7068a16707ae69dc317ec34c204b86de7b0a0125589502abd170b0b8e, 4a5475ecc62600458f6c1c98db76571b330fae946156ce910ce3916aed5d4799 - -p_scalar = fc00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 7d6dbe6556c0f8f08208e6ce3c650c05791a0732e423b40f16ff861277c713f8, 370de4a16a5fa3aee627881992f8bf1ac20a45523d2e4204af023d3c732d430e - -p_scalar = fe00000000000000000000000000000000000000000000000000000000000000 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 8ec353c2064ebf7c5df16fb0f8867456296c7b9e57af9e532eabd53494b13f3e, 7b60d0de6a838ea1f4ee86c044fdaf15406838ec9d885f6cc9eae79770a47824 - -# p_scalar = n - 128 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d1 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ad311f2c46d5a6173749bba4b3ad9db57ef2b6b9ac62ff5463c5cb817a2ad62a, fa38d320ec008188f8aa266d75d6b138b46feaf3367834ffb77a8087c2ff3b6d - -# p_scalar = n - 127 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d2 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 15fe6a86904a36cf6072a061ae619f2870e9016cdddfd92836e84bb6dee35b41, 76759223abe3c14bd0a8879244f403f2fd1c4a970ad602d09ab6968bf6005965 - -# p_scalar = n - 126 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d3 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 6941195b752838c39a7d703660ab52e9519a47b4807a9d289c9635be52bf127a, 91a4ea6d215215f65f153f56aa36de2d8459f5705276171860ffbe2e70da613f - -# p_scalar = n - 125 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d4 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = a9fe2396bb85b9cb04b76d2d1ed32559f72dab6d225733faaab54cfc93740130, b16d6af8c3febbc151dc5fac145ff0d52292393b579f3ce2128b0d24bf2219f0 - -# p_scalar = n - 124 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d5 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d8c0472156db126649b1dfca7f1412750a10ed1576d7996d10f264bc85fc00a2, 8448ecae901289fe9b94c4ad4c99e43958d85051e4dd905a43dfabf3cd768437 - -# p_scalar = n - 123 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d6 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 2d7ca4d8f1e354871783d1b6917e47255a71497198a5ea8c62ea859803b58b02, aeb9041c69e788c55870726c16e3e02ada04cc898e17ff543f69b4d49b4d4324 - -# p_scalar = n - 122 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d7 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 62280f9a573fbfa8bf357e0c9358983ad183a961caf64cbd536eeea92f4ff97a, 7aa3b3ccb2a104b24c6b9954bd51f9056ea945bdb1901d3d001da1b77e9176b3 - -# p_scalar = n - 121 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d8 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e1a8d418f77f10e127d2bf4f683b30d1d71602d5b0e5fe2014d7251a8c03e3f4, ae839cd80e99505caaf4d4e193394872ff318484da0a4996a4941a1e76a0ead7 - -# p_scalar = n - 120 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324d9 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 9c7ea21245a2473fb62aaf7c37e7454e094e7ddf4f6ab73a6ebdb7bcd0303ba4, d007ec78a47a715248cd158b2c1eb5419a278a9daaa03497ca76e7549488d036 - -# p_scalar = n - 119 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324da -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 6ed0b988157b7f562be22ba0f3a49fb4062afb7c1e314dde87af199e6cc47305, fedf1014fe6ee703d7e814380f67b51417d29c64877b74978162cf502d653fd9 - -# p_scalar = n - 118 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324db -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 4977379654d7a19e24869d65bb07ad54f8f1d8415512ec1c24c00de93f5f68a6, c9c4d63998e59b626cf96715c527a656741bf80a03bc88e604f357d1f061cede - -# p_scalar = n - 117 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324dc -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = bbdbec7d79af29b17890e8d54796883355a3bb1ad9699e9208e4c4901b620dc4, 2cdf7f854480ffe39dc33392fa67285c50cf6d11ad91a35092750de73e51e1bc - -# p_scalar = n - 116 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324dd -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d8f1fc5f6a92b9aac9f08a5659cb1b6e4b3de89bb2f5f79c87f9793bc9826344, a9c8a4b42b9157daf06c2c8c70549a5753c30bbe65b80f1686357f9eb412595e - -# p_scalar = n - 115 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324de -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 7c3ff661d8ecca6e8a2627c4851b5bc7f15b920fa8dfce56ad19e039119f6cab, e95dd9d8889821b2dc8df855fe2f493756b76c57baa43b27b9dd2bf2d5f5b5bf - -# p_scalar = n - 114 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324df -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 08e2f429f216dc997afec8bb9b4e920c18849f8ebc30d62c751e03f0216f7c55, bc0eec86924dd15496b984140a9f867197b596a14d7bf8475e5ddf821d6cc33e - -# p_scalar = n - 113 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e0 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 734e0d078a2b0d3acc3a5ecb983538693289e86e10ec0d40a125e6c1b7ebcb88, 61d8209d49f3a53dd13cca90747f19ecfa6bcdb1786076b9e0d92e9a51933360 - -# p_scalar = n - 112 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e1 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 71704d008938c16745ab5a4d7832ba0c94e258f604a428f26a9505760a99cbca, 65000c24c7973a41e70352687d367d8056feb92ec00eb207db97ab0ef88b8b70 - -# p_scalar = n - 111 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e2 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 0cf804d77a9b6a20098f37bb0832c416327dac318072f08dd87f4ae086653aa8, f9af0acd904d4731270adcc57148b1351cc0d4cea23afa674b9c5438a67e2173 - -# p_scalar = n - 110 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e3 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e7009ee6652405a945ae78ba39dcab99b1fc8c8c23fbbe6e76fbedb5a463fbad, 798ca99e4ef37e3c270c706c6e4840f15761490f7f000956b9a8fc5f8c0531e8 - -# p_scalar = n - 109 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e4 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 3720b2475548de20e7b092174df861f4fd4f61e491ae8d13aec63acbdd10edd0, 5fdaee391cab12c70cd622baeb879899e7229d8956cd660daf419847ebf3df78 - -# p_scalar = n - 108 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e5 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 9d873705000a079bd1a8678742e1cbf414d147984d7df1ff2871263f72371e17, 0d66cfc94b5d416d08e545f1b13e2b493633966c70094e6a3a7f4ad5e01ffe00 - -# p_scalar = n - 107 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e6 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ee206023efce1a7028f9cdebe9f6e8773571e4d1592ce3342ca0ba9c3796f4c7, ccd7e9418ea700c1e008039e02de2ff12754e4260a7f687cb2159e08b76369dc - -# p_scalar = n - 106 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e7 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 7145405dff1765ecb81f9fb1279df6ff750c11bbc098aefac4c398cc1e628b51, 262f03eb0757aaea5cbb069b03fe8fac137218257bc27ef73c3d861d83aae16f - -# p_scalar = n - 105 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e8 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 680d5abf65e03a86c08ec1602b1d28fdcb11125c02a9ba44de6ddcb77b371390, d3d6d111ee9e512f4e346db071cbfc97c87057ca3bce7fe5d5ec7bbbf5327839 - -# p_scalar = n - 104 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324e9 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 1d6de36b734fc1b835d2293fc7ac3efa90ee46554c2a623582d0020682c4bd6a, 6ba92bcade5a0cc175aef88a77b9d084ffccf5e161217dee946ac3bfcff75858 - -# p_scalar = n - 103 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324ea -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = f51ec8724c3c386f57670e41bf619241d0a875e919f7f72c564bdda6c71f8d02, 1429b1f8ae1d3ed8a6fae60930a4f9245df79360286166f300aec19ee8bf7d17 - -# p_scalar = n - 102 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324eb -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 0fcaec0ffecf6fedce33e49cdd3dac5cf5284782e9f60f1841a6fe768f9b4748, a2776d9f8417c98ff3d348f820fe78e36445fbcd5bc92aa3ca1ce130a54edfc4 - -# p_scalar = n - 101 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324ec -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e9b1c23914da499e6a610374c569a602bbe914d3b99cd026b7a96e0a4ea6fdf7, 94ce9e0adba8bfc75a8a14644be77793731251826f21687cb5f6f0feadc19a99 - -# p_scalar = n - 100 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324ed -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 55401274eb1385f3f7ac46733fe90a2ffe49233161c52cf8b9a17db9bf61fec5, 63be9e64a17154226aa068c230548cf4adb9e9b685bac6b7a5db852c23fd068f - -# p_scalar = n - 99 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324ee -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = bc438ae1a4e65b07650522fd4a9a3b17b1f1abb66a7b43712d037bf83f9432b4, 4a673fe054fcd65a03a3c2c7b98ff4b37ab58a3f75503e4631b57ea284693c04 - -# p_scalar = n - 98 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324ef -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = a6eecf308794885e74b44206ee3751becc8715abbc82a095d5192c88589b69ff, e9f04cd324c2e3116b5df55fe390da5ba3f98377daa4c864a05a7aa8dd0ce3b4 - -# p_scalar = n - 97 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f0 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = f1ae5380578181c7ee848e1d2566805eda8cdb78397e43f4dc90323bafceb64d, 1fbd470f53cf3e6984577f1f3260b76785f4d9c45b68b7e72dc7b8e69c70c77c - -# p_scalar = n - 96 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f1 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 11eddf7fd0a0da0d14f356cc6abc354d6d490a4b19dd329b802b8d2333e12b70, 3f2a78b3241a2b7103b48cc47c29bca2fd2f4f8cfd0258131e208328d87fd1d8 - -# p_scalar = n - 95 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f2 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 76a8f9fea974291f9a127f2bcaa12d0d6684ad762b346fd2263e039bb308cc40, 3f293fda2cd6f439ee1b1cb5344455a165499c990c5dbba0c802049b68aa19e4 - -# p_scalar = n - 94 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f3 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = bf87ea83037278d9c87bdb8203d41796955ef205d59848ebc82a7aefd2df5e7a, 1001f8d7dd85aa7bf8ea79eadfa99607c00286d964135771c5825a638719aea8 - -# p_scalar = n - 93 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f4 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 0581b4711fdf24984a278686e16396070aeaca9afd36b1af64cfdc70d9453d29, 435ac466954ffbb3ff6c1a78f9a2852f20b021c3df219dc582290e253d61f6d2 - -# p_scalar = n - 92 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f5 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = aee309e543ae4336e4c8417839093801a8a38bc31487c5269d7127d76294ba47, d15428592faab2944a72075d7f73442a9929ad4e8f48bb12d4b127399359250d - -# p_scalar = n - 91 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f6 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 0211de8fd56927054a39f02bbedd4f4727113bb4ae6a94b8d81ad9386982f865, 4a70abf75c554ed3fa8a5b9b0b46a59f2354719f6237fc68d587138c63c92f69 - -# p_scalar = n - 90 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f7 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 8307d5cb55648a4cf3df44ded7ee64b747305b7483e904469af9d782de992e6e, e485b90d49c0b6a1ad3294fb1c309a59abff56b525d3fdee5376b018e277280a - -# p_scalar = n - 89 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f8 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = bd88aca74765b8053ea123446310eb5a62d51e29fd54487dc1ee6264a7eabe67, 7150f87e7211e4457ab49dd209f98f9a640388f83b9fffefb7b284be14fb691a - -# p_scalar = n - 88 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f9 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 948fb3f76932e6311707165bb939f40fabeee3e9369a60677d81fd488418cae4, d8d37d942785971ded5cf82dc911847cbdf176108c7f9dba005a1dffeabd468e - -# p_scalar = n - 87 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324fa -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 2bd0204360826caa041252997f6b0670b856664a2d4b409b516329ff7b4d8b2c, af490825d5cff157a8f439ab06e58e3ecd07bc34c235d56c010e522661ddbcb1 - -# p_scalar = n - 86 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324fb -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = a9ea1b80f80e4b9023fb74270b4af06e783b9ba6744a6528dd5c2b8142a18dc1, e6c93b31cefdb61d9a9f04f0e8aeaf7d4a2b5ed57defe51b559759f6edca6f38 - -# p_scalar = n - 85 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324fc -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = abfc8457b5e11eff36bf2f65ea65641aef617e0025af76773646b0dd7e1ee314, 159751e2e1cbaebebb0066ae1f282369ce91ee270142811b998dfac18f1192b6 - -# p_scalar = n - 84 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324fd -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 2f83a889ca881f6c10b429a2811a47eb2cd0bab9941a27e9b7f1695a43020eec, 4cb3c135b6f36034df4741a71b99ec5f67f9ba802e45cbb12563c590f683e890 - -# p_scalar = n - 83 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324fe -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = cf3086e87a243ca4f87abebf2ab80485125d4714ec67199a2c9ee62dc3363a22, 97f0013247b64be50536a39db19c61265e9b16125625aad75c52b051c64e09dd - -# p_scalar = n - 82 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324ff -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 8d97fd53554fa366b932d0c17527465559d18be925a81aef80ee662fad29cf9c, 18f61f3cdef3f99d4976126318fb05ae41a471e4e93046f2ad5cb247cd789d17 - -# p_scalar = n - 81 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632500 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e0beeb1aebff18d3b097c711165c6e4c8e9d0af402ba3183d3a5d81fc63d5e79, 7acf4419e85bc145cbdbfdb9cf290d1fa02dbc426fe5b29dfe657f130801937b - -# p_scalar = n - 80 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632501 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c0bfffc45263832a2074213db27de57335ff9aa8b5f86a2c492bdc0752b3e584, 2995919ca4cd266052b6a1739220f4281b037d75b320ebfb2429c22a1d49c605 - -# p_scalar = n - 79 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632502 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 5ed556aae89327fc58f6428165f89e14dd306e2a05176f8ba40206d330ff0e92, b75df5ec191a421fd07370c450128375097a54ff99227b16c2b1870af8321bb8 - -# p_scalar = n - 78 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632503 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c0e78a3897536f3f711f8b7f7b5065a47e96610365013b3aade6af11a6ab1ecf, f8bdf2ea8474d0c8ea2240ccef96b473407bffa1b201137148b4389c464423d3 - -# p_scalar = n - 77 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632504 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = db15e4963d5baeb19c30c6422b2f9c49719a87be5a0ec9ce0a2193bfc266f85c, 854dc9d595105f9e2b4f0c7877eb94ea4788522b2e9fdbb283c3139be0d37321 - -# p_scalar = n - 76 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632505 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 1558fe4c7ef5b48a7c703717cd1823b4285bed3c21848f49cd331464c89bdd46, 9b3b040493b83e45ee4826a9937e1ba33fc6e661d47fa3cb19c6602050eaed5f - -# p_scalar = n - 75 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632506 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = a22f8fbea42fd1f6f123716223af72e0cfa8ca0e2a7aa6ab616d2c02fb760095, 24a1bde1d0c2302de79807a770456a7e7be19f0ded4437a85072758b78f3d040 - -# p_scalar = n - 74 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632507 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d176448e35b23e27b00eea8a5d34f708294b12e1ca1b04e046ce85a9e25a441e, 0a48558f2fa1bd2f77c52d75519978d10c45e52db3bfffc85ce885392bb80ef9 - -# p_scalar = n - 73 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632508 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = b2dacdf66ef82fce794922ef17e29b1a2b34a7dc096fb852ae8f8fe1eeb03d1a, c39725521af82878a66d92525e82d5b3b871ba63e405ca09db8dcc81f42911ee - -# p_scalar = n - 72 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632509 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c3b025a015b15144eb5d0c75f38fae9cb1ee4879a360fb557331369679c1e3b1, 6fcd0cbb809a06f20368eb1f2e4283e11ba0cb8c9c5d2e6a33ad53540dc40604 - -# p_scalar = n - 71 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63250a -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = dd421b5d4a210364f94aa89b40750d0149c7cb94fc05804bf19f382e92aa7864, 574cc7b29378679111f947e696cd0572030a119fdd4af1ec56cd001e39df3672 - -# p_scalar = n - 70 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63250b -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 100392dc78c04937681d690f2b3a8c597263de1539f76b817c5a2a14f58a379a, c6793ad2e6e2f3b19cc6e22a27c9a2ead11ae42dad0182e407e5e8e85bef953a - -# p_scalar = n - 69 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63250c -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 49d3ad05548efa2ac856868891e9ae0987986a54361bfe259e5da11cc5e79347, 6d37b1fa546fbecc2126ac553a8dd1269bea0d0f2655d14f987b0687f4eb5cf6 - -# p_scalar = n - 68 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63250d -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 031195d5bb4a44b9b2cdb039f99c55fec35d34e70dd71fab8732d5cd6a93954d, f66904b1400c9463440dec9ece0f8c32bb7047347b57df81baa37f5d08a660c8 - -# p_scalar = n - 67 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63250e -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e8218ad07de96a54fc88362a891ea186c16d0c52a48a4ddd86f04d3b51f9c391, fd59d7eb9a8f62d9de3ec728c30a96a005af456a06620ae82c735ac12f33af7a - -# p_scalar = n - 66 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63250f -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 78ed4fe6e3a7de485a7e384de42f8cb2a3cfa7fd44b81977c7c6e4d1c4ce250f, b12347993e909dfb9c03344b75554fad55912064d0f5bb2aa9231c8ce9e571ca - -# p_scalar = n - 65 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632510 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 01628c4706b6090abf639ed67765765e79527db7ba66f4b9dc2306ebfcdbb2b2, 7d096ac42f1747502c90d98cf3e055d633cb7691ba659f4666eb62f1b957b4a1 - -# p_scalar = n - 64 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632511 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 95fb8394569b38c77da70b83c2c61e01380a0913089f73b9db6d96f305968b80, 296720440e8449708010a4a078424bf88f726bb98faeaf829a3c651280edfe2f - -# p_scalar = n - 63 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632512 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 0763a43482fc568d95c376329182cb26039c4800f0518eedb8d3d9319ff91fe5, 90876a0140959b7092bf7c8f91230de0ac98b930824e8197707c04d5383e76ba - -# p_scalar = n - 62 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632513 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 0dbcb03ae539b413177aa4c02089a2336ed7e061ed58f5a7e535f175a1962f91, 6b60cfff35ace009dd47ff98814be9ee6472e5ef6806701ee3dc424ebb32e38e - -# p_scalar = n - 61 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632514 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 994a44a69b8335fa71cdf6537eceb50a59556621a9404f843667eb1a7f4c04cc, 0d1bc780872bdbf3b6658466da44bba2473c5680eed4350dd7faf819dbeb9b69 - -# p_scalar = n - 60 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632515 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d40c4ccdbc6f9915026f8fe2671c39bc33fc23364189d9c7dc1e6828ed8a6e19, 04820109bbe4e832c40a04bd4f51ad9612c651a022adff2cafa135bbf80e75ca - -# p_scalar = n - 59 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632516 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 4c2bab1b8add53b7cb9727eaa2d17c362100d5d3a8d063d169d44ed65c46aa8e, a062499846fb7a8b6651f7017ce477f8778afcd3a837ebeaa084e90c15426704 - -# p_scalar = n - 58 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632517 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 305f725f648d02cdd66fe3b67ed78be199cac80de4299aaff26c00e8a7ea82f0, 063749945667474117ab562dbe5ffb3efa70533e7a6319ad33ed1bc4623fb21b - -# p_scalar = n - 57 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632518 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c13298306acf8ccc068212e3fd1eaf381bfeea57c7385b293ec832e77acaca28, da44c6c600017626c5ab2632c79b7a015748060db661782ab909f2db2aac9e59 - -# p_scalar = n - 56 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632519 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ba3f0c4a7451ae636a84438514600044bb1ff3ca9556f36a8fc441407e8d7a14, 83927681026c2c084e9a5bc2a4b596ac01e0db86b1f2214bdfcac25b1f9af32a - -# p_scalar = n - 55 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63251a -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 5cee8449a7b730dd0deb0e4a46c814c131eea5bf07ef5be6258bbbf9e7305683, 25e8013ff14cf3f4c2cf6a6880e518caee759f879e27a6b4eab495c5a0182bde - -# p_scalar = n - 54 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63251b -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = bb8a0feaee26c851c1286ff925c4d56c4f2e512ef8557c5fa0425b8eb212cf53, 1a556e3fea9595eb3df277a41d1936b17ee0c444e76265aac28f70d2e7d6107e - -# p_scalar = n - 53 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63251c -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ec3a318d306634b0912e8beda8c8acd95f9c3fc492f2467997359638546c4d8d, fba1da5943465283b155bcd2dcafe1973db82f6f522113f280167f41c31cb264 - -# p_scalar = n - 52 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63251d -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 88f77f34d0e5e542905a3201c67528b72e0ec469af45f9c02692f36e83445904, 7ef2f2269c0f0f8d5c27014b9bbec39e23b92eae22df3562f67a8d295864687c - -# p_scalar = n - 51 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63251e -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d20ebe0d5c3fa443da1deb852f4318d4e20bc0ba1e5edf3f508cec1c3b3f64c9, d731e383a2f54c2d99a5e23d82681c6261f1511c5e1a5f65370b4ea773241ea3 - -# p_scalar = n - 50 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63251f -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 0dceb8db2b7eaba7edfbe268d5b1fa6aa78bfbaa136852780fb9c2d0488c171a, d7d34194c3628c1343b7716bcc143a46efde7ae6a4449c96bf9e80899ae2b710 - -# p_scalar = n - 49 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632520 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = abdbe6084fb7db2bff4cd0b228766127ffe7048453dc690921950b421ff6acd3, d394077ef247fa364d78f592f7818ed826147d27f4645b5a837c92285e1109e8 - -# p_scalar = n - 48 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632521 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c8403902470343ad1a1baaa76d8805bda7496529bbd803a06b34413077adc612, 85efc7e941325cc2a875f5ce529d75e30b26d7fbb7d8c5b739f59f66175adff1 - -# p_scalar = n - 47 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632522 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 4b969974eba78bfd6b20afec715af2c70a624fa936c83906283c7513caa76097, 9bbff86e6dddfd2704819d515ded93d49b944e107baeca13220755ccd921d60e - -# p_scalar = n - 46 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632523 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = cec684c3a42931dca1030d5babf825e0785c339aa06e9eba4075b5b149ee90d9, 033da338c1b7f86557c8b2c055f7835d45431d665ab43f2b42ab62c9c1586e63 - -# p_scalar = n - 45 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632524 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e94f7d346d8232781b1e8ae057477f580032940b946c6e181ee426ccd5cd79bf, d73acbfe2cd9e6b5772ef6dec7f80c81c5254469f72b33a5c747cb96782ba21a - -# p_scalar = n - 44 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632525 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 5f3425f6a98dd2915f0e2046e381d3b0009194abb29110fbecfd7c1fd55a897c, eb629f90387ba42a397a247dd69d34170423446c4b083b7fbfa06687730d50da - -# p_scalar = n - 43 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632526 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 179c85db3db01994b7d9ad900574598180c5bfb4878873fa4ff23ffd248a7d06, 47795f4f95b2dda09e91cd3ba5e6a3184d82d052eadce5a8ba41b06261a6966c - -# p_scalar = n - 42 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632527 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 649c89ce5bfafe43c2e2594c30a92f8fa155cbe31da6a5c75fb35ccfed2bad01, f3a8cfe389bc7d3d4b00b20b906014cf9b359611f32c50aed158667de9ff257a - -# p_scalar = n - 41 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632528 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 98100a4fdb01614feeca111539ce22716fdfe0b56f072822624d60492ed22e91, f70bfeec03884a7bc67732591d57d9ceb6f94d2ec87e9a47b6b0daa2a35c628f - -# p_scalar = n - 40 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632529 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 462d7b0075f732278909984c66f2728083200f0bdf25e13ce4d7681db82e9f3e, 03466612d1aa702fab256ea35ef5435974c6e18c36ab1c34d90ba188f2651798 - -# p_scalar = n - 39 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63252a -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 5853e4c4363186ac068f237d16fb36646f5ae714ff0b9346a9d89488a059c142, 0c0bc0e56919240847b864fae14e7b1c2ec4a76681828876e2d87d2363c52f98 - -# p_scalar = n - 38 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63252b -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = adf0c7dc7c603d6c7463fd85222ef33b512331170fe948ce8a2cc3ca4d63c0ee, d9a4c2809c80c34dbdaa84d68e59319cccaab359bf3804090ec32d3bfe7765e5 - -# p_scalar = n - 37 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63252c -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 2763a387dfa394ebc5748baea677d806b636458c7f178d5500467bc58cce08b5, 58b36143620088a8f63ebce51558462ce7adda3e6f20d850a12b448a7d3cebb6 - -# p_scalar = n - 36 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63252d -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 3569656cd54a3dc30ae4cb10d257576ec691d0bd1b06c57f3d5e58d6a8219bb7, 480b9e11dd6da526450ac0bae251a0c6934e82d3162bfe13e5ebaebd94cda03a - -# p_scalar = n - 35 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63252e -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ca640b8642a3e5210b8e4134efc2b4c8742ee464233e76b7fd16847fdec67ef5, 2ba901628bb47af824e4ab126b237af7313c300c547852d5653a01908ceb6aa9 - -# p_scalar = n - 34 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63252f -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c982ddd4dd303e645b0673a375678d94caa7a5c6a391849db6ab20147ca23cd3, a159100c570d74f8c77332a33c569426bba2cb1f6f876f92fd7b000b5db6f971 - -# p_scalar = n - 33 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632530 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 33ec6868f044b10cac09c4ae65578ab985ceae7c4b68f103871514560f664534, b16c4303c32f63c4f909604f763f15745509d1285847d5ef6ac4832b3a8ec1f1 - -# p_scalar = n - 32 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632531 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 39227077695532a4bc6d6a58fead0197befd904c4079dfbfd8c5fccfc5e3a3d8, 6231d7929591c2a47b969c1aad9a2e407e449b64480a990809e23e6ddbef42f5 - -# p_scalar = n - 31 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632532 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 948dc4f8b1fc87b48ef5689d3cf7600ddd3cf7e7473017e6e2f73c696755ff89, f38ae8914d7b4745faecedfd0c9803fc2d921ca298eb6028d9e9fe814ea53299 - -# p_scalar = n - 30 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632533 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = d0288cb552b6fc3cc5f4d6cd3ac77acda3a14e49b44f65a1b4241cb13298b343, 460d45ce51601f72d667da379b3aa441b675511e06bf9b4ad5cc8c2f1c040abc - -# p_scalar = n - 29 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632534 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e266f95948603d48944a70270317b9e2f1be963a0d9258805e5db46acb66e132, 3798142a2a3be21b8a966939777c619f90472447a2fb18a398db66735c208899 - -# p_scalar = n - 28 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632535 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e97f6b6af2aadb9797082ec0cfe153eb7323cb2830a6a8924b523eb7172ccd1f, a9b4cc5f405852784a688b482d0cb71ea6a7f9c7804b2a681d3d393ed1a83da1 - -# p_scalar = n - 27 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632536 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 9f8aa54b2ef7c76a49d2c9eb084ffdd7d36a42d7aebf7313042c2af497e2feb4, 2d431068d84bde312d97d10878eb4cbb3bd0c66fddb7fb589200b7ba09895e70 - -# p_scalar = n - 26 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632537 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 994baaa855f2fb101ac7c5eb857ff6fbe6c9267ad8b1753861e4ad32ed1f8008, ed178030d12e5ac714fde97b5fa944f55a39898b628ac50884cf14e11d248018 - -# p_scalar = n - 25 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632538 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 966742eb65432a2ee395993332f1f3af6fc1b49eed6b67b0a4a319acd837879f, 7b948dc356f7996812068859c9b731ee96cc631243f439504b8dc9feb4966228 - -# p_scalar = n - 24 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632539 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = f97b232f2efc311561d7cbf91d2b469f6d0d755040dd9a356d3883b215d02819, 595dc55eca737b8a7669f03193cb750111ea494988a1e356a551d750b24bcbc7 - -# p_scalar = n - 23 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63253a -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = af2cea7c1727bf42d0825fa2a358406937c7a7e89e2e1f6ef4f876532de45068, 83d0687b9077666f48068e1371ac2f71e5fda49c27299f4a0360a4fb9e4785a9 - -# p_scalar = n - 22 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63253b -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = fdc777e8e93358a46a0b0685d2f8ba3dc99ffa23e3912a9a0fc611352f6f3076, 793e8d075d5cd0749de917da153a35b5640c2d6a4d23fea494a787bb35415f04 - -# p_scalar = n - 21 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63253c -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = ecead9f4c16762fc6d2a506c5a3f3b3074e1b2654783f47d562e4cecc135b208, c086d5f1c9477fa37a75023e7fac29a41b0fadc083bb3c61f29dd4b2e286e5b9 - -# p_scalar = n - 20 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63253d -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e2d1eeb6fe5bfb4e048099d95dd283ba5916868f0f862bdc8a979129d2337a31, 5ee104e1c5fee0d09161c53f8aa95e66a2d4ec17ffffcbae82ef1c417884005d - -# p_scalar = n - 19 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63253e -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = fe545c282897c3fcb8842277752c41ac68363aba25e1a16efea912baa5659ae8, f720ee256d12597b85665e9be39508c15806244afba977c52d36e9e7dc4c696b - -# p_scalar = n - 18 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63253f -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 675abd1b6f80ebdaa6f247ab412e29794afc964d8f8b403e5f3e51c856ada97a, 6c6fc7d90502394d2626927f1b847bba4b2a5caf8f4f0b3c66a2bd725e485a1d - -# p_scalar = n - 17 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632540 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c1a35c0a6c7a574eb0f139752cfe2dfff17624b6ac0a177b97091dcbd53c5c9d, ebd512263274c3d02f4e247f0d1883bb0575bf30e89cb80e227d314693e79987 - -# p_scalar = n - 16 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632541 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 54d63c809103b723d5ef2f7c2c83f5495882e0753ffe2e6b808b0b650bc6fb80, 64edf7b201efe22055c4623bb1580e9e3670c3194b0b6587f2f11bd652a23f9b - -# p_scalar = n - 15 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632542 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e2aa0e430ad3da09ee337424e481937003cc23ee56e27e4b72bcd8b7bc60055b, 2042170a7079adf464efa6de778a4797d766355442a41b2540b8524f6383c45d - -# p_scalar = n - 14 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632543 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = faae7332fd12c72e1717bf54c6832660126e48f77f9707e3a242a35bb0cf664a, 152706dc2eaa1bbbe8e4193e2a65e7dbbe29569e832237c227b52db7995d586b - -# p_scalar = n - 13 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632544 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 738477ac5395b759bcbcd43f559e98110e356769856fd30dccc425634b2ed709, fbc08769c9e7b7977cd06422bd1f5bc168748390742ed2e335752b90c00ee17f - -# p_scalar = n - 12 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632545 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 4ee1df77cb83e1562409d29dee37385eabdedef5ca345a3304b71aa7d2697768, 7ff57c9553238aca28228cfa8ade6d66170ed2f6ca8956370cac12d91cbb5b43 - -# p_scalar = n - 11 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632546 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 3e7090f1649c90731ff3a4158dac1ab59de407956e7fdfe0ea7d260a6245e404, 68930023e125b88e0c0daa891ead643d250f939ee57f61c81a7685612b944e88 - -# p_scalar = n - 10 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632547 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = cc61c94724b3428f737d2cd648250b4998f9868a0fcf81392c18dbd19dc21ec8, 78719a54eb3b4ab55f7d2d65779be5d2c43a8991383fbe080c2b407880dd9e76 - -# p_scalar = n - 9 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632548 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = e05b3080f0c4e16b2cc09c0444c8eb00abe6bfed59a7a84175c96e8f264e20e8, 086659cdfd835f9b2b6e019a88b12f1a56af7bedce5d45e31eb7777aa45f3314 - -# p_scalar = n - 8 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632549 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = b763891eb265230d8f90f02af02cfc6b462ab5c56f9b345527f14cd19499a78f, 56ec12f27706df76123c7b84be60bbf021e3327dcf9eba15f59da3a9532d4977 - -# p_scalar = n - 7 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254a -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 13ba5119c3123e03f43eaab50c23bb082bd20213d23c00f70746354ea0173b4f, eaedd9156e240867ef933bdc77c941956742f2f25da67bdd2847d0303f5b9d4d - -# p_scalar = n - 6 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254b -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 13074b5954213673d50a961a5b17a3ad55ae744f346cee3e403947373e77664a, a4c9916d4a07f75ff424d44cef639f11299c2b53adff14b593d36220d377e44b - -# p_scalar = n - 5 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254c -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = c9079605890523c8941cb5aad076c20c90ec649a94b9537dbe1b8aaec45c61f5, 73a076bb2dd1e9163540a9877e7a1f6873c568efe5eb882beb309b4ae7ba4f10 - -# p_scalar = n - 4 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254d -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 577362f541b0176b0cdaacace8100af24650a6edc623c17374b0b50d46918dcc, 84b14c394c5ab8636b6c36dee5ddd22e17628471fad6f4472d96f24ce4cbaba6 - -# p_scalar = n - 3 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254e -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 26936a3fb6ff747e66ad77dd87cbbc98b027f84a087d81fbffac3f904eebc127, d5f06a29e587cc07788208311a2ee98e583e47ad0861fe1ab04c5c1fc983a7eb - -# p_scalar = n - 2 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = f6bb32e43dcf3a3b732205038d1490d9aa6ae3c1a433827d850046d410ddd64d, 78c577510a5b8a3b19a8fb0e92042dbe152cd7cbeb236ff82f3648d361bee1a5 - -# p_scalar = n - 1 -p_scalar = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550 -p = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_sum_mixed_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_sum_mixed_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_sum_mixed_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_sum_mixed_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,80 +0,0 @@ - -# inf + inf == 2 * inf == inf -a = 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 -b = 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 -r = inf - -# inf (n*G) + inf (n*G) == 2 * inf == inf -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 0000000000000000000000000000000000000000000000000000000000000000 -b = 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 -r = inf - -# inf (n*G) + inf == 2 * inf == inf -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 0000000000000000000000000000000000000000000000000000000000000000 -b = 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 -r = inf - -# inf + inf (n*G) == 2 * inf == inf -a = 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 -b = 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 -r = inf - -# G + inf == G -a = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -b = 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 -r = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a - -# G + inf (n*G) == G -a = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -b = 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 -r = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a - -# inf + G == G -a = 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a -r = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a - -# inf (n*G) + G == G -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 0000000000000000000000000000000000000000000000000000000000000000 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a -r = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a - -# G + (n-1)*G == inf; note that -G is (n-1)*G -a = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = inf - -# (n-1)*G + -(n-1)*G == inf -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a -r = inf - -# -(n-1)*G + (n-1)*G == inf -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 92ccc25ad1cf08ffedba49d7efea212eb1f0eff79718a75e493c3f7c503eb15f, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = inf - -# -(n-1)*G (affine) + (n-1)*G == inf -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 92ccc25ad1cf08ffedba49d7efea212eb1f0eff79718a75e493c3f7c503eb15f, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = inf - -# -(n-1)*G + -G == inf; note that -G is (n-1)*G (affine) -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 92ccc25ad1cf08ffedba49d7efea212eb1f0eff79718a75e493c3f7c503eb15f, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = inf - -# -G + -(n-1)*G == inf; note that -G is (n-1)*G (affine) -a = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a -r = inf - -# -G + G == inf; note that -G is (n-1)*G (affine) -a = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a -r = inf - -# G + -G == inf; note that -G is (n-1)*G (affine) -a = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5 -r = inf diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_sum_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_sum_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_sum_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_point_sum_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,120 +0,0 @@ - -# inf + inf == 2 * inf == inf -a = 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 -b = 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 -r = inf - -# inf (n*G) + inf (n*G) == 2 * inf == inf -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 0000000000000000000000000000000000000000000000000000000000000000 -b = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 0000000000000000000000000000000000000000000000000000000000000000 -r = inf - -# inf (n*G) + inf == 2 * inf == inf -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 0000000000000000000000000000000000000000000000000000000000000000 -b = 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 -r = inf - -# inf + inf (n*G) == 2 * inf == inf -a = 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 -b = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 0000000000000000000000000000000000000000000000000000000000000000 -r = inf - -# G + inf == G -a = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -b = 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 -r = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a - -# G + inf (n*G) == G -a = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -b = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 0000000000000000000000000000000000000000000000000000000000000000 -r = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a - -# inf + G == G -a = 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -r = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a - -# inf (n*G) + G == G -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 0000000000000000000000000000000000000000000000000000000000000000 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -r = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a - -# G + G == 2*G -a = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -r = f6bb32e43dcf3a3b732205038d1490d9aa6ae3c1a433827d850046d410ddd64d, 78c577510a5b8a3b19a8fb0e92042dbe152cd7cbeb236ff82f3648d361bee1a5 - -# (n-1)*G + G == inf; note that -G is (n-1)*G -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -r = inf - -# G + (n-1)*G == inf; note that -G is (n-1)*G -a = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -b = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -r = inf - -# (n-1)*G + (n-1)*G == 2*(n-1)*G -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -b = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -r = f6bb32e43dcf3a3b732205038d1490d9aa6ae3c1a433827d850046d410ddd64d, 873a88adf5a475c5e65704f16dfbd241ead3283514dc9007d0c9b72c9e411e5a - -# (n-1)*G (affine) + (n-1)*G == 2*(n-1)*G -a = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -b = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -r = f6bb32e43dcf3a3b732205038d1490d9aa6ae3c1a433827d850046d410ddd64d, 873a88adf5a475c5e65704f16dfbd241ead3283514dc9007d0c9b72c9e411e5a - -# (n-1)*G + -(n-1)*G == inf -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -b = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 92ccc25ad1cf08ffedba49d7efea212eb1f0eff79718a75e493c3f7c503eb15f, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -r = inf - -# -(n-1)*G + (n-1)*G == inf -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 92ccc25ad1cf08ffedba49d7efea212eb1f0eff79718a75e493c3f7c503eb15f, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -b = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -r = inf - -# -(n-1)*G (affine) + (n-1)*G == inf -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 92ccc25ad1cf08ffedba49d7efea212eb1f0eff79718a75e493c3f7c503eb15f, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -b = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -r = inf - -# -(n-1)*G + -G == inf; note that -G is (n-1)*G (affine) -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 92ccc25ad1cf08ffedba49d7efea212eb1f0eff79718a75e493c3f7c503eb15f, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -r = inf - -# -G + -(n-1)*G == inf; note that -G is (n-1)*G (affine) -a = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -b = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 92ccc25ad1cf08ffedba49d7efea212eb1f0eff79718a75e493c3f7c503eb15f, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -r = inf - -# (n-1)*G + -G; == -2*G; note that -G == (n-1)*G (affine) -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -r = f6bb32e43dcf3a3b732205038d1490d9aa6ae3c1a433827d850046d410ddd64d, 873a88adf5a475c5e65704f16dfbd241ead3283514dc9007d0c9b72c9e411e5a - -# -G + (n-1)*G == -2*G; note that -G is (n-1)*G (affine) -a = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -b = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -r = f6bb32e43dcf3a3b732205038d1490d9aa6ae3c1a433827d850046d410ddd64d, 873a88adf5a475c5e65704f16dfbd241ead3283514dc9007d0c9b72c9e411e5a - -# (n-1)*G + -G == -2*G; note that -G is (n-1)*G (affine) -a = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -r = f6bb32e43dcf3a3b732205038d1490d9aa6ae3c1a433827d850046d410ddd64d, 873a88adf5a475c5e65704f16dfbd241ead3283514dc9007d0c9b72c9e411e5a - -# -G + (n-1)*G == -2*G; note that -G = (n-1)*G -a = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -b = 2b11cb945c8cf152ffa4c9c2b1c965b019b35d0b7626919ef0ae6cb9d232f8af, 6d333da42e30f7011245b6281015ded14e0f100968e758a1b6c3c083afc14ea0, 3c396f06c1dc69e4f4b2dce51cd660f761064a4ab098ef61ba3868961f0ef178 -r = f6bb32e43dcf3a3b732205038d1490d9aa6ae3c1a433827d850046d410ddd64d, 873a88adf5a475c5e65704f16dfbd241ead3283514dc9007d0c9b72c9e411e5a - -# -G + G == inf; note that -G is (n-1)*G (affine) -a = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -r = inf - -# G + -G == inf; note that -G is (n-1)*G (affine) -a = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 8571ff1825885d85d2e88688dd21f3258b4ab8e4ba19e45cddf25357ce95560a, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -b = 18905f76a53755c679fb732b7762251075ba95fc5fedb60179e730d418a9143c, 7a8e00e6da77a27b2d17797722de0cda74b5471c45e61ba3220daca8316aa9f5, 00000000fffffffeffffffffffffffffffffffff000000000000000000000001 -r = inf diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256.rs temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256.rs --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256.rs 2023-10-30 19:40:00.000000000 +0000 @@ -64,18 +64,17 @@ encoding: PhantomData, // R }, - elem_add_impl: GFp_nistz256_add, - elem_mul_mont: GFp_nistz256_mul_mont, - elem_sqr_mont: GFp_nistz256_sqr_mont, + elem_mul_mont: p256_mul_mont, + elem_sqr_mont: p256_sqr_mont, - point_add_jacobian_impl: GFp_nistz256_point_add, + point_add_jacobian_impl: p256_point_add, }; pub static PRIVATE_KEY_OPS: PrivateKeyOps = PrivateKeyOps { common: &COMMON_OPS, elem_inv_squared: p256_elem_inv_squared, point_mul_base_impl: p256_point_mul_base_impl, - point_mul_impl: GFp_nistz256_point_mul, + point_mul_impl: p256_point_mul, }; fn p256_elem_inv_squared(a: &Elem) -> Elem { @@ -124,56 +123,17 @@ } fn p256_point_mul_base_impl(g_scalar: &Scalar) -> Point { - let mut r = Point::new_at_infinity(); - - // Keep this in sync with the logic for defining `GFp_USE_LARGE_TABLE` and - // with the logic for deciding whether to test `GFp_nistz256_point_add_affine` - // in suite_b/ops.rs. - - #[cfg(any(target_arch = "aarch64", target_arch = "x86", target_arch = "x86_64"))] - { - extern "C" { - fn GFp_nistz256_point_mul_base( - r: *mut Limb, // [3][COMMON_OPS.num_limbs] - g_scalar: *const Limb, // [COMMON_OPS.num_limbs] - ); - } - unsafe { - GFp_nistz256_point_mul_base(r.xyz.as_mut_ptr(), g_scalar.limbs.as_ptr()); - } - } - - #[cfg(not(any(target_arch = "aarch64", target_arch = "x86", target_arch = "x86_64")))] - { - static GENERATOR: (Elem, Elem) = ( - Elem { - limbs: p256_limbs![ - 0x18a9143c, 0x79e730d4, 0x5fedb601, 0x75ba95fc, 0x77622510, 0x79fb732b, - 0xa53755c6, 0x18905f76 - ], - m: PhantomData, - encoding: PhantomData, - }, - Elem { - limbs: p256_limbs![ - 0xce95560a, 0xddf25357, 0xba19e45c, 0x8b4ab8e4, 0xdd21f325, 0xd2e88688, - 0x25885d85, 0x8571ff18 - ], - m: PhantomData, - encoding: PhantomData, - }, + prefixed_extern! { + fn p256_point_mul_base( + r: *mut Limb, // [3][COMMON_OPS.num_limbs] + g_scalar: *const Limb, // [COMMON_OPS.num_limbs] ); - - unsafe { - GFp_nistz256_point_mul( - r.xyz.as_mut_ptr(), - g_scalar.limbs.as_ptr(), - GENERATOR.0.limbs.as_ptr(), - GENERATOR.1.limbs.as_ptr(), - ); - } } + let mut r = Point::new_at_infinity(); + unsafe { + p256_point_mul_base(r.xyz.as_mut_ptr(), g_scalar.limbs.as_ptr()); + } r } @@ -184,7 +144,7 @@ pub static SCALAR_OPS: ScalarOps = ScalarOps { common: &COMMON_OPS, scalar_inv_to_mont_impl: p256_scalar_inv_to_mont, - scalar_mul_mont: GFp_p256_scalar_mul_mont, + scalar_mul_mont: p256_scalar_mul_mont, }; pub static PUBLIC_SCALAR_OPS: PublicScalarOps = PublicScalarOps { @@ -224,29 +184,29 @@ #[inline] fn mul(a: &Scalar, b: &Scalar) -> Scalar { - binary_op(GFp_p256_scalar_mul_mont, a, b) + binary_op(p256_scalar_mul_mont, a, b) } #[inline] fn sqr(a: &Scalar) -> Scalar { - unary_op(GFp_p256_scalar_sqr_mont, a) + let mut tmp = Scalar::zero(); + unsafe { p256_scalar_sqr_rep_mont(tmp.limbs.as_mut_ptr(), a.limbs.as_ptr(), 1) } + tmp } // Returns (`a` squared `squarings` times) * `b`. fn sqr_mul(a: &Scalar, squarings: Limb, b: &Scalar) -> Scalar { debug_assert!(squarings >= 1); let mut tmp = Scalar::zero(); - unsafe { GFp_p256_scalar_sqr_rep_mont(tmp.limbs.as_mut_ptr(), a.limbs.as_ptr(), squarings) } + unsafe { p256_scalar_sqr_rep_mont(tmp.limbs.as_mut_ptr(), a.limbs.as_ptr(), squarings) } mul(&tmp, b) } // Sets `acc` = (`acc` squared `squarings` times) * `b`. fn sqr_mul_acc(acc: &mut Scalar, squarings: Limb, b: &Scalar) { debug_assert!(squarings >= 1); - unsafe { - GFp_p256_scalar_sqr_rep_mont(acc.limbs.as_mut_ptr(), acc.limbs.as_ptr(), squarings) - } - binary_op_assign(GFp_p256_scalar_mul_mont, acc, b); + unsafe { p256_scalar_sqr_rep_mont(acc.limbs.as_mut_ptr(), acc.limbs.as_ptr(), squarings) } + binary_op_assign(p256_scalar_mul_mont, acc, b); } fn to_mont(a: &Scalar) -> Scalar { @@ -258,7 +218,7 @@ m: PhantomData, encoding: PhantomData, }; - binary_op(GFp_p256_scalar_mul_mont, a, &N_RR) + binary_op(p256_scalar_mul_mont, a, &N_RR) } // Indexes into `d`. @@ -337,44 +297,35 @@ acc } -extern "C" { - fn GFp_nistz256_add( +prefixed_extern! { + pub(super) fn p256_mul_mont( r: *mut Limb, // [COMMON_OPS.num_limbs] a: *const Limb, // [COMMON_OPS.num_limbs] b: *const Limb, // [COMMON_OPS.num_limbs] ); - fn GFp_nistz256_mul_mont( - r: *mut Limb, // [COMMON_OPS.num_limbs] - a: *const Limb, // [COMMON_OPS.num_limbs] - b: *const Limb, // [COMMON_OPS.num_limbs] - ); - fn GFp_nistz256_sqr_mont( + pub(super) fn p256_sqr_mont( r: *mut Limb, // [COMMON_OPS.num_limbs] a: *const Limb, // [COMMON_OPS.num_limbs] ); - fn GFp_nistz256_point_add( + fn p256_point_add( r: *mut Limb, // [3][COMMON_OPS.num_limbs] a: *const Limb, // [3][COMMON_OPS.num_limbs] b: *const Limb, // [3][COMMON_OPS.num_limbs] ); - fn GFp_nistz256_point_mul( + fn p256_point_mul( r: *mut Limb, // [3][COMMON_OPS.num_limbs] p_scalar: *const Limb, // [COMMON_OPS.num_limbs] p_x: *const Limb, // [COMMON_OPS.num_limbs] p_y: *const Limb, // [COMMON_OPS.num_limbs] ); - fn GFp_p256_scalar_mul_mont( + fn p256_scalar_mul_mont( r: *mut Limb, // [COMMON_OPS.num_limbs] a: *const Limb, // [COMMON_OPS.num_limbs] b: *const Limb, // [COMMON_OPS.num_limbs] ); - fn GFp_p256_scalar_sqr_mont( - r: *mut Limb, // [COMMON_OPS.num_limbs] - a: *const Limb, // [COMMON_OPS.num_limbs] - ); - fn GFp_p256_scalar_sqr_rep_mont( + fn p256_scalar_sqr_rep_mont( r: *mut Limb, // [COMMON_OPS.num_limbs] a: *const Limb, // [COMMON_OPS.num_limbs] rep: Limb, diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_scalar_mul_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_scalar_mul_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_scalar_mul_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_scalar_mul_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,86 +0,0 @@ - -a = 00 -b = 00 -r = 00 - -a = 00 -b = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550 -r = 00 - -a = 01 -b = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550 -r = 9f2f99cbb6fa3e17f80749fbe19f88da020806cb63c12ed5259e01cb6049a8d8 - -a = 02 -b = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550 -r = 3e5f33986df47c2ef00e93f7c33f11b4472912e9206abf25578238d3c4302c5f - -a = 03 -b = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550 -r = dd8ecd6424eeba46e815ddf3a4de9a8e493119b4842bedfa7d203a9f2479d537 - -a = 7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8 -b = 02 -r = 9f2f99cbb6fa3e17f80749fbe19f88da020806cb63c12ed5259e01cb6049a8d8 - -a = 7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a9 -b = 02 -r = 60d066334905c1e907f8b6041e607725badef3e243566fafce1bc8f79c197c79 - -a = 8000000000000000000000000000000000000000000000000000000000000000 -b = 02 -r = 01 - -# From BoringSSL - -a = 0000000000000000000000000000000000000000000000000000000000000000 -b = b4e9b0aea84aa5ed86964a22881a4d0e58f88e9225f30990c18751e7d4b9ec95 -r = 0000000000000000000000000000000000000000000000000000000000000000 - -a = 00000000ffffffff00000000000000004319055258e8617b0c46353d039cdaaf -b = 5d24e62244973fbd829573d5a579b4e89a6512933a2c3d255bbdbc1c89028323 -r = 5d24e62244973fbd829573d5a579b4e89a6512933a2c3d255bbdbc1c89028323 - -a = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550 -b = abafdc695e4c2c850f8fc60f1efdbf7406a3cd2c6c59bb7e608985723896c187 -r = 917b1214c7b31a7ee7e53be0b41a139e435ff576b51ec6af1e1a944412bea38b - -a = cf0f01b83670a1c79154ea16f3574ca2d4c688a3c3b6017795cbe54854418904 -b = c5ec4d3b00fb2e11fb3b1aa09e60f7d187f7c515977d1343dab9745961fcbb43 -r = 7aaddcee32e3b340af5ad06f854284cbbce5a1ab919e9b7771c3b0e937093438 - -a = 50023f9913879ac4020bc45a89a0ea89082db6265b96b851af29969dd8a9661c -b = 7c165b1cba80808db114441563aa0fbfba41b9e8acff77312a2dd2138b74ef89 -r = 3d2ca1705d8d38cbc76a5409c6535044733cafcb95d12654af1d14de177978b5 - -a = 4d5341ea735e53d2e4f2934755642adee209bd0e5a1506206513227f3c48b270 -b = 6e48f2b60eb8fb86760134abaf3d61692557862924069c599ceb31309ea18704 -r = 37cde3e35c814d4287bd345b910d687983929907b7a08afa2acd8596832ea86c - -a = 33d06c3f5a595a41a6f9c4356f8ab2b8c550d4c64b806eab5560af247c5fa9ed -b = 0e52f34adf5754343bcf3529d652620da3c05b5dd9cdcddfb08b674a1ad21a09 -r = 9dc64d7b4c1bc33b930e0daee2a24fc41f770378659ee71b846d2239b0fea8ea - -a = 8f211780cce4f93b7193b9378e6f83e1147fb3602b052eef782de8cc833e54ab -b = e1e4f7f1feb15be64292cff86b47cd9730bcb15b133340022b824d591a660cdf -r = dfa2b683b1ae23027c7c109e0abb40a1366eda027ad2cad1a09061a57bee391f - -a = 803c279c7e4c11a5568290c0a5789ceab6860f51a942bf646501a45e1ec0a6bf -b = c0a1145a12037129c571f5f939bf16ea0b8b480f08ec774c045d059841f7d5ed -r = ab48fa3b4aa692a7c077cc55ee3c3fff895118a23728c2fa5f361b30730d955a - -a = 0e5c95158297d75dbf0b02c3090730f65bf14704495b14837dd907af569407f1 -b = 5a03e3787c8772b2fb7ab07d7fe7fe653a58bdae7fde3174c6ed305e524f5728 -r = 71296d305dcf9ce39010ea4f4bbf9f7c1064a413597bdc7574c13dea3fa514dc - -a = 366299be07886f7846fc74231db624b169360e3c8f60196a1afc9f2101e03922 -b = d6d7c830a6edb6861868b964519a6b68f6f24f7c09d66003f3f88eadd1e00158 -r = 0b89596bf5054ebe95a39dab6e975b58190160610b09b2a4f93331ecc0e79fd3 - -a = 8f36f0ef275a72192c3b7388e84df2b8acf66fc53aaf556e3be05c76b3f782c0 -b = 704e519363d44e8df8d91f5f347eb61e8d3e85c8fc1b82980c370a379b2bc81c -r = b70a392e3ce5e85b5efbbded9b8c16a3068ba9b93b4cbed9a9a71dffaad6b58a - -a = bf4466ef4dea9f06f0f3b4f14e01140a774262c7e0706584f4d7dac19be46d58 -b = 4af12d528b2cef0f6714961bca2ab682f8abaa97600ea8181f71563d56f8a9f5 -r = 7b6827c0881b9846e32499e13277efb07917cf4b8c8c72bfb3daa8c1786a8e15 diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_scalar_square_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_scalar_square_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_scalar_square_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p256_scalar_square_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,65 +0,0 @@ - -a = 00 -r = 00 - -a = 00 -r = 00 - -a = 01 -r = 60d066334905c1e907f8b6041e607725badef3e243566fafce1bc8f79c197c79 - -a = 02 -r = 834198ce241707a31fe2d8107981dc972e94d4db6642203a44b5591b7402cc93 - -a = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550 -r = 60d066334905c1e907f8b6041e607725badef3e243566fafce1bc8f79c197c79 - -a = ffffffff80000000600000002fffffff -r = 965f4779ac1ddbac28a14bd1e0c28dcb091d48820b4116d22afbc3f00f90f476 - -a = ffffffff800000006000000030000000 -r = 9e07cb5cdf45939f41541805d2c24625e1cb1719e37a89efc755b5e58e585515 - -a = 8000000000000000000000000000000000000000000000000000000000000000 -r = 4000000000000000000000000000000000000000000000000000000000000000 - -# From BoringSSL - -a = 0000000000000000000000000000000000000000000000000000000000000000 -r = 0000000000000000000000000000000000000000000000000000000000000000 - -a = 00000000ffffffff00000000000000004319055258e8617b0c46353d039cdaaf -r = 00000000ffffffff00000000000000004319055258e8617b0c46353d039cdaaf - -a = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550 -r = 60d066334905c1e907f8b6041e607725badef3e243566fafce1bc8f79c197c79 - -a = da43b8dd7fe8830a4fe8980ec585ccbe903a2965a695cdff398200b74b2ede41 -r = 5ec68604412205b380e26ee4e4081eccc10ac7d1417b09cd534f8517b0de81ec - -a = a82a2b8bdbf8a37dc7cb5799691494a8c9fbf649686a4d250dc30697feb0fa47 -r = 552c094a8841621d6cc26b3b54ce5da5664283888445196a6433d3cfdcad3aee - -a = d785006e250410d9dcc6d7740795a7374c25b00b9c9a37b8285694a07307eacd -r = 971aaa9e70ad082cf43725f2e65bc73f4bf762459cee13167545072ec7bdcaf8 - -a = 69d6d9f5417e87d603a3fb6acafa0d1f974abf94ca57ce58d718a0ad5d02a496 -r = eb3284e5799fbe93171f08e6de9f792cd17f036b3a17671b0310e49b48e589b3 - -a = 1c28f742c3e26e74901d0425f2eb4d5272524668d2405875b32cf6433f212900 -r = 74f70a95399b7ad061a2200fa50528d68eee4654341c8158101e1e3f8f16e642 - -a = 026b2f69f0259d221920b2f358b378a79826f0332ee36afa257765043e3d6732 -r = e1e9cfa4724995bb50971ca22f3c028cd31cb51fbef8a37c31f10fd1d468f13b - -a = 376ed4fadcc1c6c4160a0c9c2ab7c62260367968b08d304d47c65f25625d7d60 -r = b9ccb67f377e1278f1d2eeda26e5eed76f32406c9deed9764fc0aa346d91e02b - -a = 50f66867d0a4ef389678d760d2a4db886583b4c068d0e240f7ddf3472c871304 -r = 82c3467bc5f7ca8b45f4ee61546745e2f53755a02e87f65f572418d60e471c8b - -a = 5b8bd82b37206d2b727f19ad2d02f63773470074dde7d43d2a77c448ddf2f978 -r = dbf3c2fc67a0688c3b5ff12cab1739d50b6093c5d98943d388652b1207e4a0f2 - -a = bed7b3a4dada0e16984eb59ee239005ab212e5b1772cdd5d240c8ee268f65c81 -r = 9232aa2759ca9c5efbaefb0cf45cc6bc9c89def8c25e5c169fe623f30787df36 diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_elem_div_by_2_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_elem_div_by_2_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_elem_div_by_2_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_elem_div_by_2_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ - -a = 00 -r = 00 - -a = 00 -r = 00 - -a = 01 -r = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffff800000000000000080000000 - -a = 02 -r = 01 - -a = 03 -r = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffff800000000000000080000001 - -a = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffe -r = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffff80000000000000007fffffff - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffff80000000000000007fffffff -r = bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff4000000000000000bfffffff - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffff800000000000000080000000 -r = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfffffffc00000000000000040000000 - -a = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_elem_mul_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_elem_mul_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_elem_mul_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_elem_mul_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ - -a = 00 -b = 00 -r = 00 - -a = 00 -b = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffe -r = 00 - -a = 01 -b = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffe -r = ffffffebffffffebfffffff3fffffffd0000000300000005000000040000000100000013000000270000001ffffffff9 - -a = 02 -b = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffe -r = ffffffd7ffffffd7ffffffe7fffffffa000000060000000a0000000800000003000000270000004e0000003efffffff3 - -a = 03 -b = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffe -r = ffffffc3ffffffc3ffffffdbfffffff7000000090000000f0000000c000000050000003b000000750000005dffffffed - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffff80000000000000007fffffff -b = 02 -r = ffffffebffffffebfffffff3fffffffd0000000300000005000000040000000100000013000000270000001ffffffff9 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffff800000000000000080000000 -b = 02 -r = 14000000140000000c00000002fffffffcfffffffafffffffbfffffffdffffffebffffffd8ffffffe100000006 - -a = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -b = 02 -r = 01 diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_elem_neg_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_elem_neg_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_elem_neg_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_elem_neg_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ - -a = 00 -b = 00 - -a = 01 -b = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffe - -a = 02 -b = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffd - -a = 03 -b = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc - -a = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffe -b = 01 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffff80000000000000007fffffff -b = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffff800000000000000080000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffff800000000000000080000000 -b = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffff80000000000000007fffffff - -a = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -b = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_elem_sum_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_elem_sum_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_elem_sum_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_elem_sum_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,1559 +0,0 @@ -# Montgomery Arithmetic; values are in the range [0, q). - -a = 00 -b = 00 -r = 00 - -a = 00 -b = 01 -r = 01 - -a = 00 -b = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffe -r = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffe - -a = 01 -b = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffe -r = 00 - -a = 02 -b = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffe -r = 01 - -a = 03 -b = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffe -r = 02 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffff80000000000000007fffffff -b = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffff800000000000000080000000 -r = 00 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffff800000000000000080000000 -b = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffff800000000000000080000000 -r = 01 - -a = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -b = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 0100000000ffffffffffffffff00000001 - -a = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -b = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 0100000000ffffffffffffffff00000001 - -a = 8000000000000000000000000000000000000000000000000000000000000000800000007fffffffffffffff80000001 -b = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffff80000000000000007fffffff -r = 0100000000ffffffffffffffff00000001 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 0100000000ffffffffffffffff00000000 - -a = 8000000000000000000000000000000000000000000000000000000000000000800000007fffffffffffffff80000000 -b = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffff80000000000000007fffffff -r = 0100000000ffffffffffffffff00000000 - -# Carry Propagation. - -a = ff -b = 01 -r = 0100 - -a = 01ff -b = 01 -r = 0200 - -a = 03ff -b = 01 -r = 0400 - -a = 07ff -b = 01 -r = 0800 - -a = 0fff -b = 01 -r = 1000 - -a = 1fff -b = 01 -r = 2000 - -a = 3fff -b = 01 -r = 4000 - -a = 7fff -b = 01 -r = 8000 - -a = ffff -b = 01 -r = 010000 - -a = 01ffff -b = 01 -r = 020000 - -a = 03ffff -b = 01 -r = 040000 - -a = 07ffff -b = 01 -r = 080000 - -a = 0fffff -b = 01 -r = 100000 - -a = 1fffff -b = 01 -r = 200000 - -a = 3fffff -b = 01 -r = 400000 - -a = 7fffff -b = 01 -r = 800000 - -a = ffffff -b = 01 -r = 01000000 - -a = 01ffffff -b = 01 -r = 02000000 - -a = 03ffffff -b = 01 -r = 04000000 - -a = 07ffffff -b = 01 -r = 08000000 - -a = 0fffffff -b = 01 -r = 10000000 - -a = 1fffffff -b = 01 -r = 20000000 - -a = 3fffffff -b = 01 -r = 40000000 - -a = 7fffffff -b = 01 -r = 80000000 - -a = ffffffff -b = 01 -r = 0100000000 - -a = 01ffffffff -b = 01 -r = 0200000000 - -a = 03ffffffff -b = 01 -r = 0400000000 - -a = 07ffffffff -b = 01 -r = 0800000000 - -a = 0fffffffff -b = 01 -r = 1000000000 - -a = 1fffffffff -b = 01 -r = 2000000000 - -a = 3fffffffff -b = 01 -r = 4000000000 - -a = 7fffffffff -b = 01 -r = 8000000000 - -a = ffffffffff -b = 01 -r = 010000000000 - -a = 01ffffffffff -b = 01 -r = 020000000000 - -a = 03ffffffffff -b = 01 -r = 040000000000 - -a = 07ffffffffff -b = 01 -r = 080000000000 - -a = 0fffffffffff -b = 01 -r = 100000000000 - -a = 1fffffffffff -b = 01 -r = 200000000000 - -a = 3fffffffffff -b = 01 -r = 400000000000 - -a = 7fffffffffff -b = 01 -r = 800000000000 - -a = ffffffffffff -b = 01 -r = 01000000000000 - -a = 01ffffffffffff -b = 01 -r = 02000000000000 - -a = 03ffffffffffff -b = 01 -r = 04000000000000 - -a = 07ffffffffffff -b = 01 -r = 08000000000000 - -a = 0fffffffffffff -b = 01 -r = 10000000000000 - -a = 1fffffffffffff -b = 01 -r = 20000000000000 - -a = 3fffffffffffff -b = 01 -r = 40000000000000 - -a = 7fffffffffffff -b = 01 -r = 80000000000000 - -a = ffffffffffffff -b = 01 -r = 0100000000000000 - -a = 01ffffffffffffff -b = 01 -r = 0200000000000000 - -a = 03ffffffffffffff -b = 01 -r = 0400000000000000 - -a = 07ffffffffffffff -b = 01 -r = 0800000000000000 - -a = 0fffffffffffffff -b = 01 -r = 1000000000000000 - -a = 1fffffffffffffff -b = 01 -r = 2000000000000000 - -a = 3fffffffffffffff -b = 01 -r = 4000000000000000 - -a = 7fffffffffffffff -b = 01 -r = 8000000000000000 - -a = ffffffffffffffff -b = 01 -r = 010000000000000000 - -a = 01ffffffffffffffff -b = 01 -r = 020000000000000000 - -a = 03ffffffffffffffff -b = 01 -r = 040000000000000000 - -a = 07ffffffffffffffff -b = 01 -r = 080000000000000000 - -a = 0fffffffffffffffff -b = 01 -r = 100000000000000000 - -a = 1fffffffffffffffff -b = 01 -r = 200000000000000000 - -a = 3fffffffffffffffff -b = 01 -r = 400000000000000000 - -a = 7fffffffffffffffff -b = 01 -r = 800000000000000000 - -a = ffffffffffffffffff -b = 01 -r = 01000000000000000000 - -a = 01ffffffffffffffffff -b = 01 -r = 02000000000000000000 - -a = 03ffffffffffffffffff -b = 01 -r = 04000000000000000000 - -a = 07ffffffffffffffffff -b = 01 -r = 08000000000000000000 - -a = 0fffffffffffffffffff -b = 01 -r = 10000000000000000000 - -a = 1fffffffffffffffffff -b = 01 -r = 20000000000000000000 - -a = 3fffffffffffffffffff -b = 01 -r = 40000000000000000000 - -a = 7fffffffffffffffffff -b = 01 -r = 80000000000000000000 - -a = ffffffffffffffffffff -b = 01 -r = 0100000000000000000000 - -a = 01ffffffffffffffffffff -b = 01 -r = 0200000000000000000000 - -a = 03ffffffffffffffffffff -b = 01 -r = 0400000000000000000000 - -a = 07ffffffffffffffffffff -b = 01 -r = 0800000000000000000000 - -a = 0fffffffffffffffffffff -b = 01 -r = 1000000000000000000000 - -a = 1fffffffffffffffffffff -b = 01 -r = 2000000000000000000000 - -a = 3fffffffffffffffffffff -b = 01 -r = 4000000000000000000000 - -a = 7fffffffffffffffffffff -b = 01 -r = 8000000000000000000000 - -a = ffffffffffffffffffffff -b = 01 -r = 010000000000000000000000 - -a = 01ffffffffffffffffffffff -b = 01 -r = 020000000000000000000000 - -a = 03ffffffffffffffffffffff -b = 01 -r = 040000000000000000000000 - -a = 07ffffffffffffffffffffff -b = 01 -r = 080000000000000000000000 - -a = 0fffffffffffffffffffffff -b = 01 -r = 100000000000000000000000 - -a = 1fffffffffffffffffffffff -b = 01 -r = 200000000000000000000000 - -a = 3fffffffffffffffffffffff -b = 01 -r = 400000000000000000000000 - -a = 7fffffffffffffffffffffff -b = 01 -r = 800000000000000000000000 - -a = ffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000 - -a = 01ffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000 - -a = 03ffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000 - -a = 07ffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000 - -a = 0fffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000 - -a = 1fffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000 - -a = 3fffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000 - -a = 7fffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000 - -a = ffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000 - -a = 01ffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000 - -a = 03ffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000 - -a = 07ffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000 - -a = 0fffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000 - -a = 1fffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000 - -a = 3fffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000 - -a = 7fffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000 - -a = ffffffffffffffffffffffffffff -b = 01 -r = 010000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffff -b = 01 -r = 020000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffff -b = 01 -r = 040000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffff -b = 01 -r = 080000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffff -b = 01 -r = 100000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffff -b = 01 -r = 200000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffff -b = 01 -r = 400000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffff -b = 01 -r = 800000000000000000000000000000 - -a = ffffffffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffff -b = 01 -r = 010000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffff -b = 01 -r = 020000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffff -b = 01 -r = 040000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffff -b = 01 -r = 080000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffff -b = 01 -r = 100000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffff -b = 01 -r = 200000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffff -b = 01 -r = 400000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffff -b = 01 -r = 800000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 010000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 020000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 040000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 080000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 100000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 200000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 400000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 800000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 010000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 020000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 040000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 080000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 100000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 200000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 400000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 800000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 010000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 020000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 040000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 080000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 100000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 200000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 400000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 800000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 010000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 020000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 040000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 080000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 100000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 200000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 400000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 800000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 010000000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 020000000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 040000000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 080000000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 100000000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 200000000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 400000000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 800000000000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 010000000000000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 020000000000000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 040000000000000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 080000000000000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 100000000000000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 200000000000000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 400000000000000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 800000000000000000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 010000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 020000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 040000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 080000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 100000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 200000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 400000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 800000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 010000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 020000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 040000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 080000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -b = 01 -r = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_point_double_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_point_double_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_point_double_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_point_double_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ - -# G doubled once. -a = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, 2b78abc25a15c5e9dd8002263969a840c6c3521968f4ffd98bade7562e83b050a1bfa8bf7bb4a9ac23043dad4b03a4fe, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -r = db93b776427460c39c90a4fd2de4b506da821495f0687f503504e6f0ff9d48a18e6c8f2e022b53f0c8229e55783dde91, e34947f7123df0c2070d430900b0e68409f1fe415172bad915e4f18bdc588258e8e8e4a8c2aaccd842ea84633140bfda - -# Point at infinity doubled. This uses the (0, 0, 0) representation of -# the point at infinity instead of the classic (1, 1, 0) -# representation. -a = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = inf - -# Point at infinity doubled. This form is the result of multiplying -# n * G (affine), which is more interesting than the above case -# because only the Z coordinate is zero. -a = 4a0fd63f894499928e4b2b72aced45cfc589976f4ff86f78c904d59da9379a62b702d968c1184834c11db28c7356ceb6, be113b04484cd4bc215a9f2a33a674c3764c38ca4de135dd50ce8dcf3c85d55a5aad0e171860bdb6c58201e6212d9ac5, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = inf - -# (n - 1) * G doubled. -a = f3ee335326d22614d01b5d7cd0be73f1bfdd75982c9c273f72d0abfeecbca0431601a1bcafcdeb07e21ecf4d91c7b520, 57b82ca1527c5a01b78bc8ccb9febe74178b04b7c6fde1c1c4ef9a220c4320bb560cb078542256a3900df61c107de6c5, 53b3adc887551c0e17c07ecb42d1a5ec105aeec6b0f040a936ed4f756e83939226232b4e11191b3eb1d841c650682ca0 -r = db93b776427460c39c90a4fd2de4b506da821495f0687f503504e6f0ff9d48a18e6c8f2e022b53f0c8229e55783dde91, 1cb6b808edc20f3df8f2bcf6ff4f197bf60e01beae8d4526ea1b0e7423a77da617171b563d553327bd157b9dcebf4025 diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_point_mul_base_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_point_mul_base_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_point_mul_base_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_point_mul_base_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,1280 +0,0 @@ - -g_scalar = 00 -r = inf - -g_scalar = 01 -r = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, 2b78abc25a15c5e9dd8002263969a840c6c3521968f4ffd98bade7562e83b050a1bfa8bf7bb4a9ac23043dad4b03a4fe - -g_scalar = 02 -r = db93b776427460c39c90a4fd2de4b506da821495f0687f503504e6f0ff9d48a18e6c8f2e022b53f0c8229e55783dde91, e34947f7123df0c2070d430900b0e68409f1fe415172bad915e4f18bdc588258e8e8e4a8c2aaccd842ea84633140bfda - -g_scalar = 03 -r = d283fe68e7c1c3ace36f7e2d263aa4703a48d732d51c6c3e6b2034e9a170ccf0c54ea9fff04f779c05e4dbe6c1dc4073, 465465fc983292aff6db68b15102b33968012d5ad2e1d0b4132663c04ef6744692d789a77ae0e36d7e284821c04ee157 - -g_scalar = 04 -r = cfeee6dd34179228fb40f647d685d979078358d4736400ad2e4f153b0aecac4630594ccbee0421e30aae8477ebb68f2c, 50946875303df319e607b9e33820017d147162d30418c6938e3e61a34c542ad1e74bb7f17bfec97e54f3e8e79b3a03b2 - -g_scalar = 05 -r = e1bb26b11d178ffbc676b987e2e8e4c660db2cf5aacc05e67f1eb1b5293c703bc185c0cbcc873466bb595eba68f1f0df, 4db1c9d6e209e4a3e6c5944024de236d4b237faf982c041180b61b3101c35b9922c16e2e72f345662b694ba07073fa21 - -g_scalar = 06 -r = c482e189f0430c404f0f6a962b02d33b2a33f6661bdf6015ec52930f580d57f2cb2454b339d3413a7eb5c9317d56dad8, c9962152af2a9eba586d8ededf21559a93c9e5f61b546f058bd4bffcb79e33b0739ac69d5b3d4dce3f62b16ea7b08203 - -g_scalar = 07 -r = 932c9f811c89025bf893db589db2df555f4215d1659753ed731edcf8211faa954ce6415f874774b1df13b9d17d69222b, d90a16b6af6c9b3ef57f238e693b07060ff37c0401fff78065aad76f50130844135349d5a8641c790996b2207706a61e - -g_scalar = 08 -r = 5db4f184349cd9b11c7b5fe116b664231d9aebd64f3ddb371c5c2e7193d7e30f9e336de5ae9b587a23f60a05dd9bcbba, 3c0c6dd70d27ef617008d943c48ecf0ee9923263a42dbba2701754bf7d8686e4836dbb36b7e55e870d2cfe83e6655a44 - -g_scalar = 09 -r = 5cab1d1d53636c6a26d464c6dad54d6adc351dc13cbfff3f26094833a96d745de35d87293fd7e4f92f5d200e2353b92f, e770633431e8f5c67d9429f4ee69a754a6ecaccc68ead0d827f061c7033ca7c23777e270d742aa2ff2813072b18ec0b0 - -g_scalar = 0a -r = a91a5280db1c212ec2f646025c4845ec54a612d7eb32cabee9f6368eab225fa32a15a9a6e58d6787845539d3c8d99c02, 6eb995bec80174e83e03370a47a9b8aa81961b8ccfd7fd1d592ac0ba794eabfd03a530eb13b9e85cbb971f78e67b5fce - -g_scalar = 0b -r = 9c19e9fc7ba9c437f8d89885f0561d7901b8bf56147b66020dcc67706cdad64f4532077c44377abac7708b19b68b8c7d, 9aa62f9f3533f91841821d0c3a53287a2e070f36fe9e682e3ce813298a77e780604fe46bac144b83764eb146bdc4ba25 - -g_scalar = 0c -r = 627b415f9c35b26d523c40dbcf9ab45cf67eb42235d77d8303aced26c8edfee1d4258cc55d9704203db8477270313de0, 0c6e430ef9c4af3d0329eab1f7942f0e40c64a4e66bed5af8c79848fd0e102ac80d60af627aa651afacc45e48be55ed8 - -g_scalar = 0d -r = b51c56e18cf23c94d2657265ed22df97db5203a8d9c1bd568a7a8e4633b7d4aeb25e28c5f6749a959b7aeb7e75ccbdfb, 4617adb7cc6979e181fdbd1c3b490ec3b7feac2dfec38d60789a2a48cf4d0fe3d8e88f1a87cae0c2f4d394596c3d812d - -g_scalar = 0e -r = 46d227c432f6b1ba8058994c5710c0c944ce05ff88957166ca6b1af8b1f85c2ad02225fb01ec909f5865e5018f75244c, 4429839ddefbadf5647d24db13690a7472445345d9c3b6911ecc8585e11dbbbf540b8b82730a99d1be4b4a9003cb68e5 - -g_scalar = 0f -r = fb62d26f4903026b0fc01fd4eb08599359500917789b307583ccf19550e07b342b7210e2ec3dabd8446ad8884709f4a9, 5a68c6fed0bc27168733fc41400c5797dddc2866d898f4704b23d3a0de06610c61609cbd144bd5862309cc9d6fe989bb - -g_scalar = 10 -r = a10896aa435abaa137065f5313bdc3fa317b63ea2887d5ff37cf65517917652a992afb5b0ecdd2d8da6e8a7f7c33ed91, 659db48181ef251351c305c6a72d1967b333bdfbc88ee148914871dc154d410feb07ddea230cf00d9b21615fefabca26 - -g_scalar = 11 -r = 524f166ee475ce709f6928555330455e7be3737d524ffefce6fc3f2af655a10d3ea4ea4c8ff1f43e8903e1304b4a3cd0, ac37986f55b164c925eb5df1b3c2677af87d6d854a54504a49ce6993336bf1834e23b6ffd5b9c0da3fcc69cd6c12f055 - -g_scalar = 12 -r = 57505d8d6749703068a232435567169355a96a6879909f083bd1c8f62edb0dbd198fd3f0f38f66625dfee73ce5b82700, 91700b247eb1be639bdd6a092945a7576ffcfc7ca4cfd9bbc266eb844112985854b867b7f78aa7de8a60717f75c64513 - -g_scalar = 13 -r = fa0f1f450390d706b3b6639c539802ae23891298fc38538eca109c3b154aad5e22c4cc5f41a8c91282a2ed4abaa84c08, a1d47b23e957776415d1dc778264b6723f5a799bb67f30c39170b3786ff2f643a8c72d3cc3da2eac46b78e5db0dc21d0 - -g_scalar = 14 -r = 1d1cdf7b5f22346598ca8dd42d96c936f78cff0cd467f03a713466708cbaffc7cd96f20591e71d16ad610a2d94a70ec1, ab9dd81052ebfb015e01b72b4718bbc7422da643ffe6132b9933fb25dccd4df325f546ab321828ffe27a189460d4db60 - -g_scalar = 15 -r = ab16c626dac012b51b1a0f6c5df0e5372e59ab62bd9ebe6930128aa06177f75d88e0d496dd2f9e2108265e510422ce2f, 21824f411353ccba266ad15aacea5817b454111e8527cd59262ebb498a149098aa740a9e38f17bea8014214b008c5de7 - -g_scalar = 16 -r = e082882d69059095fd7a8b13f0681fcac382472ebe0e1fdbccd57831927ed783981b788d16f325b84f595351262bb775, 671d69c98fcd841850fc847215809cddc764edf840d0fcf77b1ab489cbf837b7f9d62fd9c9576c694d1c3049faa71fdc - -g_scalar = 17 -r = 80826a69eea8f22461e4ca2b905432f01c75b8ab2a351783b9d3dd25429c0a18990ed20b569b8ef6d1b4e74d12e3683b, 9dfccb0de2212559282d2437566718c1f0138950eaf22c7e7ad8a132a527cebe0bcca3f0a65e48137fc33a6bec52abad - -g_scalar = 18 -r = 4f13f901fc55723f38076e8fca77d74f563361909bd5c2f7540c045a409c930b20c1b8e0d809afcd259f272cfab816a7, 150808e625a302c91395a87966a4e904e8277439a0f9ad3adf5579fa4bea82dd98d82ad1da247ec8890932d7bd3d10c3 - -g_scalar = 19 -r = c29c6e2ca5bb73313809ab50de2480249bd51b99208abe1e57d0f3d2e2be174abb280dfa3cb3fb361e93722758ce3b83, 1fe6fb42e97809dcda3e1a3d4cebc96ed6a2f51dea8e434401628f059424a3cc83ccbc4e9009e3919944fd2e61124f05 - -g_scalar = 1a -r = 37a45bdb091cbb80f14b309f03fa90f2808497b7b0bba4a76efedb8023bf0b90b0391b37897b93f56423197d2afd473d, 47d98a9df092241cbf2c0862697c08fd5d512df99d42a72725c7b9146f5f24c7db3f422d95e16d6eedda4ae48a8f5dcb - -g_scalar = 1b -r = e8ca780e373e5aec2f7e8d509c6a58fe7228e2d5d18f14d08e0d4168482396f9cf1912934d78291da04482d2467d66e4, 17820a0bc5134ed767e67195d44d3cdf7d26540638c85a85d779adfe31da1bea58a6d7f569e2f8f442aad1d61b68e9f8 - -g_scalar = 1c -r = 55be5764d37da1a2d8232f8b4e492aa88fb0c597a4da3e15550e0bee8ff22c6f4169b4117b3c1220c76afaa373b64643, 05cdca3fe7988176792377fbf8eb8319c48ee6f3b033c112184bd4733ad6983a9ff769c4875fee0ff1bc89b628e77f9e - -g_scalar = 1d -r = c8b00ae8187cea1f2065b7cba7df26e43dc22d490e3feb0fce3c15ed55c9764725846b66780443d6019d6ac5d3021470, 1d2a1c015977f16cf6f57e7190c820338e6db10b404505fbab178d26cce851b3293c164920c83de21a5284a0865dded3 - -g_scalar = 1e -r = 92cea8f4c4360dd87002990485ba414315f9abe1feb6b100519b9fd50a18323276aad8b8131263886a7a3464d0cbcea0, 941292e500f88cb2f569446a2755569296c21b29f6a167f23117dd04d47a41dc1846eefcdd3eb156dc6c5d1dc12748a1 - -g_scalar = 1f -r = 6c07c4040a3305d11afb51a3e3ba8285d42f7dc953c149652ecf8340f0df4fe6b6e7ecdd9e821ee6a39c89317c8906a4, 475a3e756398a19d5b3d0d6d36beecc4d7dd464f045a7a1c402a9bab42eb20ddbc0a699b374c4b08dab83288127fc1da - -g_scalar = 20 -r = 5dd2a4a0626b3d793a9865baa631cfb0ba8953d612e8dc871896b9fcc651b1dd0d784cf208f779d5ad852b878c0a64a4, c510ad93aabca99f73b42725b35b4ff04bcb06f00a2377b677315f9e9448fd08a372dfc2f2a52bfd1148bc72687c20bb - -g_scalar = 21 -r = cc9e97a46c833e9d68af622641d5c400da631fc160f09efbbbc7c7ee955ef3afdf330d9d5b943c8661333a382fb3ba63, a7fd2b619057dad76fcc93a1b8c310728a416eb9bb6f0aba08467cea48b90b9113bf6124c209e55e7fd73e8e3a625e76 - -g_scalar = 22 -r = cdb55e6ba07b7cae7ec2bc1cd50b3e6d9d6ac102b4e2520145700722abb9102f0648c2cd2d668c4180b309dd2ada5bf4, a964eefbfdadd24e03c050a06152072602d00cfb8a76b2d69e1418a4554557c3470ddc68f8a57f48ebcbda0786da3943 - -g_scalar = 23 -r = d6149f75e9417bc6832bd8e34fc7852365f16273a02583fd4a508620dde6bd0abb3800d52d7c2fb458a5b5433720ec9b, b13a8ad830e23f26ac8a877f52ccd35c22f19fab28f35eee50018998988092a20ce18088a55e0956feb026e93deeb52a - -g_scalar = 24 -r = 1608643883061d376f01faee26946e789f82b7fbab52606ca39180d45c2c7ce14a13260770b1b757f216aa2531238ed0, f699887b806085b7df33eed7b73401b16a3258ec33f5567510209418c167fd201d11bc5ed6e28138597edf370fb077bc - -g_scalar = 25 -r = 1eba28f3defc58b59261ede87ef27114acb60a7597482b86a129e2dff5b54a5d4027704bb5630ef20202d57de44f61a3, fa0e07b7fe85bf85284fcbb5638ca337b50649a894047d1f2ea912435d2ca0342f1643d514594bee6c91c0c98be5589e - -g_scalar = 26 -r = 47ba96091da7b1476b464412bc9a48c7479ecf018173fb32f3d752f5ad6cbeac018843c01c0d77024703cd85891f8ffe, 1f466694520618f2129be314974320a4f300e1c648347f9adae2479844956b9387c183c3e1a0e06c91af26eaabc13488 - -g_scalar = 27 -r = 587df4d6b89b1fc2c9985040b76c066536a1cd6dde9b62306d7edf642b7f006fd984244a8e3d2c467d894f80506e0e42, 2d7bc128074968fb1a95355f1cd60340b646e453436d9fe2345c553ab53153b87b2b0ab3e82947474c0638476a71ae7a - -g_scalar = 28 -r = 51c4b1b36a4d6e813b021cf316d7a9adae78bc3a3134216c86fcfe4760be3ebc43a53ff21beb359e6048c6949399c38a, dfd92b6da914bb01dbb22c9ddeb46e6c63a00a0a60e0aa2a98ff87f7370eb7441df8cc84a69ea3a354b9cd8db593d816 - -g_scalar = 29 -r = 8764cd2cda92245de3bc778895fd71ae89746c8d852ca03573a82933a80d68f341dfd24d456a201ead148e87bca6d14c, 82ea702eeb18f1c5679952c7d193272ebdc9d6c34f9f589a57860ce121646f315ac762e00f3c9d6ea2fe2c4782eb23e2 - -g_scalar = 2a -r = 7438b4933c1e593ce983e169ffff96c73fd72a308f234c864b21c4f3eb6c7e6231b22efc5df46c6618ef56cd5d76b881, db6829c2f002bb6e50029568472a7175e739fb61eaa6776325d0caaeda1eadf40d959ba9796d9129863a23a3a553e8e3 - -g_scalar = 2b -r = 35178bad22dab3935cf095a901fefb567314f5f0416dbd86dad9f5b239c4943d09112fc50578bc8c37fa935500846d44, 8f3f1f63c9632b78a974b09415cbf948aaf8e0f6bd0628dfbce78aa9ede314bb1b7ee42d749e5498cf79fc1b36baf1a7 - -g_scalar = 2c -r = 9c7e7754a320d35204ce2a21986c5ce6d50a288981ea36c2767b4ad7f8f99b51ae97af8bf240b30a1c5f0e5b36a400d3, 5fb28e322a1dd73bade6096d02e543ae47678afb27dda8e5c680176505c7ad6c7cc82a4df1698fb2c3336331bbad8346 - -g_scalar = 2d -r = 9c94c858b2ac340599e1c0c61f2bb599b0040c0e8d6fcf13ffe8e0bb39eb8f59d4af65c673ad9112d4c411564fddda5b, 42eb2979db83a48517477722bd2af19e16f96676b7234e93eb3b44a9e5b5691862b2f54351fcca3f8f8878d76eeed85d - -g_scalar = 2e -r = 374aa9069481ed0dd9c79db8005412579266634957719f5460976b01b472d7899f24fba649ddd10ea618d7479fc4f435, fc539eb3e259c7dbc82d5998ec090d0619ab802314eb4ab9d7a198a4185a849ca1590c30ecf5864360efb1147fdc2d7a - -g_scalar = 2f -r = ea5b37c5da233371504f21b1570cf950780abff7d878acd0bfb185125f5b07a065c788785f0dc66c6f888f7df0c668ca, ac9dfec7dfa72a8beef006912e20fc23dfeea1a265e0fc91f86562a898fb34ff9c701758249cf9b7487ae8bd22437ed1 - -g_scalar = 30 -r = 66e4794bae7d740062e5c5d3e73a1bc940d01ff53a7d2f3c4f504e06ea52bef92d368d48e7f30c2b3ccf806ab35bf6cf, 271e42a12624a58348eab00eb5c9462c2605ca009da2a2ca5c3ca10d04bab9854580609da766ddf13d30625e5ffef312 - -g_scalar = 31 -r = 0b470bb250e4ea9e1197832bcea03f5647c56c115b6e3386a669156542e365a48ea5af63a5ea6fb8fa5c3aef697136c6, 2d1cc518e28b2bdb771e64415b57be2f2487edd57f82bdd3fc4486ee49c9ebe88d6c174ed2497d483113c74313b25712 - -g_scalar = 32 -r = a820e8303a5d50d19cbf755b46f97ac7beabb91ac3c90051510bd675cb2ec3f1172cfe4ecb5af900a96763d2fba32d1f, 6f58fa8b7181c2a16f7bfa7e13a4f7d6c1b444139333e4056124642f0f32b151df7dc7053048461a83a9f17e308c4545 - -g_scalar = 33 -r = 16634a504f35cb3c3dba16e9daaabc27464ae8d241a84de7a5e0fb598c5a78d91947c0caec4a22b82c4ccac72070ac8d, 518b047dcbaa0d97c69489e2373f1a0d0b2240003c887d36daeac0c3570543f0324d067e7359dd35adc18bf9b16ec84f - -g_scalar = 34 -r = 4b820d9b31d83660252b48f5cd8d7d770bedaa85e5377c005687d1dca6ccfd358a944b316b3262328f6468656f9201b9, c5cc339dcba1fd4b222465866e5ede7690e2aead7f78aaf86d0a166ced3c3b7a0a8930fc1208b9faa9e5af3ccae07f15 - -g_scalar = 35 -r = a8ba8f10e0f383ea642ec4e615c3aae2cf485c74a7c54b160b0110610f0422a2daed7c268a0915cc3b1bddc6fbde49ef, edf2e3eb7ecc9485adc93d9a481765e2d2c71ad1390699635786a19a4e2fa83eebec6442089efa8b2a2054b495618501 - -g_scalar = 36 -r = 4576a6497cb8944248c075daaadd6150075134ebabd64a6acff00bd23c9b5a41ab2f15202175fbf411853add834e6c54, 420eb673906a29496e9e86bb7b1eb77a1ae1dd97d13444bb0bf879d693b44ea68dbb571c77fcd1f4340a767034adeda3 - -g_scalar = 37 -r = b3fcd5d1690cd408fa5cbfda60f4554f6078d8bf085faeb3a4fb7867e3a142d6fd6622bc1718ec3cbcab5f60069f3367, 7460257314ceeed46a91e73997d0fa0617c6b5cbbe2334f88de3107c3d079f6182af23aa180a63a74ebdee7d281f7884 - -g_scalar = 38 -r = 7772a913e6436cc1e9981ea6820da79f2629ba4fd1deca258b6fc785e692fdd2d4215b4fc7a8baa1483350a5ebb8cdad, 31ff648e0f88b82d56fefff326f349ce05826192490bb572b623a1aeeb8cc21c28179e6cc852f64bd141235c553fb41d - -g_scalar = 39 -r = 814d7fa07a78c189c052f3eb1c99ceef1e9dd1509bf446e0a14967dfac4bbf6273bae4c1694b8b0db14ba61cf97f865c, 0a823b9a4b26df63d2e130552952c1fc8f427bc473c81d5b0d60bab7e809a13c7788c258a1737b65a101a483ab74b05d - -g_scalar = 3a -r = 104cec0666ac72e09e9520bf57acc87aa58db4ea4f96af4fdab9dc0015b0fa13341cf9d9c46785af941c5c257d0be180, 2b51995f794da901c08595e35548fbeae11699e909fa58a1b5f157aa569b57d8b8b4ac9ffa80380a9f3f7baa1929e675 - -g_scalar = 3b -r = 9ba039679267b6463703435b0de64db996a917cf1ed0e31564473b595c322738dfca6897f929974caf467ce227bf64c9, ff336f12504655c196d9ba0bd9e3ca196fb34b3028463cceaccf2edd7b05970341bdb741b335eff0df0c2aae3a522fbe - -g_scalar = 3c -r = 95bb80cece47968c61bba736a55b527784b7c2fed74cccd40402d5c4eb809f85a61fada6fb4f60e8c711d5d1c425543e, 8dd21bf0b4ea4f5129fc3b284892e676bb45a51f948a8375acd70b86ad2a20fcf0e0f4f7e682aa2909f92adc16eb7b95 - -g_scalar = 3d -r = c93ea049ef6ba0062366467300fe51fd5ff77ff2332982d06035e34f772ae08054fb5a34222241e848da1fd3fc60a6e0, c4cc11451fc69829b0a6c77201466d230dda19ffe5275767e6a7885370d303eb394d32cd6ae9f4ac6640f1177d381266 - -g_scalar = 3e -r = cb4c0a54561fedf2d194b7054b14d11703b9f1cebfec21da0c7d749907dbb9af1e659730c1fb476e49a04dc0f5acf772, 0902cc23149446b8cac324ec82c4faa73d2508922ba9239b65609e59d9ff0aba5f5e9b1fd630c145af623d3f21da4d42 - -g_scalar = 3f -r = 1c9bf0b0f1e52d1ef6159e519a049f7acd7e35f76e2b71aa7a50f7458c949f8f6ce8ead6149a1896c5c0e6d7aaed89c0, 52bb3712a0a689e8f5af7b8e3735df22dc89bd4997d4048d3bb034e888d17f198d3a5f621ecd7b1a3bb6c1f518202c80 - -g_scalar = 40 -r = 4f5d5ab6d1b30e5cfc8e87cf3be44d56a309199dca57b7bde04b3d30f8a0580d957c980f297a9a37ed4de4f88e89b258, 888b708b9404ca513ee127895ecd3fe86d97cabc301fe259fe51bbbf1090fede0fd1c52df091bc01b213c6a030a9325b - -g_scalar = 41 -r = b84c3a6a5fd4266f8b0350b2650b22534597ec8abdd5f002cf9edc15edb63c80becda43b0d1d279f8e469454839b9679, ea6f2528a55bb1c9a2866c24c8f9f08719763d6d889d66ddab784b2cde2bc266b6a487833ad995d30e16d83d30fc79f9 - -g_scalar = 42 -r = 3418c841ef19aa6cab34164b3870beb7acd0361f5decad089983c10a492b899ae22c691d99c0b909b60fb64e52990b5c, b287be9507f55d0492b480eed70d6c3a6fd331a3b0d5aea54ed3fd192a684508a580d040c2c889076cf203a6209b336d - -g_scalar = 43 -r = e462ca48e153035af9af3e4d90909d25556e637e6ef3d8f765d75edaa55d6185eac7dd3b0b634f686efc5cbc8b1772ca, 8322cb8aac794994096a6bf01362c5f95990b746c6ebc0031a7e35ed3f59e4bc104ab1a642785d0652763b7b0a109ed1 - -g_scalar = 44 -r = f6a8130b3a7741e35508c2b38bdb088aee34bd1706035fdea4160def7fe6923a2fd77b5ae6018776af78aa17286ac2fb, d467b0e82fc4663ed9c5d61f09f68f4c29b049577e0fca014277e8927030cc9a59a9e6886b1e723fc02ed662797cc7d4 - -g_scalar = 45 -r = 59d65d78a3f735f42c86ee164fdd3ccad4bcc8b125abfd65cc66c8aa0f19981b5ccb2859a1115e28f8d3df74670c2752, fbcd0100271dbd7a6f2c9e8b73167a320aceee4882ed66bcd13ae4892bd423a457769d6245d3994d035ade287c0c55ce - -g_scalar = 46 -r = 2bd44119aa9079b7d8436f83a2ce4101a4c793741489a3c09c2e8aec0cdf6d91edfdd44e94cf7a32bcef0b6a37548a32, 443df50ac7469f4a5c599917d3a76debc4077657cfcdb6b7cc8ad6658c725a7ce2a2b0996761e5389f0415bd9bff2a34 - -g_scalar = 47 -r = 0b4faa5a537ecd702b123738fe255dda27bbde143508ac5493ba15cfe58d0a92bf5731b3abb11441c42ece45effefcb1, f9a7ea28732ad01cbdb924ee071395662144daf1ce64373a154f285025b3e31986793c4d0801523d6a44d084ddec83c6 - -g_scalar = 48 -r = 0966d45a6517888e2ac250f6058daca83b7debe494eaf32810757e2e3f599369f4445a249b234eff668240536434688c, 312c1d2f36824d3ab010acdc097afa217854f8bcc3f0ad3ac7b43619ab96774699cd9dc9d77437097555cc79e7693b1e - -g_scalar = 49 -r = b89d83e72bf4673cb08db04de8caa7d29029a9252d3731c25b8d230bdf8b9b24a9c2a9b11de8963b43385c32d851a702, 6f65af3b7c98a1620b15740387b8637304e21e0392265a59af9fc87b4f1d216e9f89b6d6e1e8d616a8fd39bfe1f24424 - -g_scalar = 4a -r = ca50bae743ca3e45a0dd8e3cc10c4f6c40d420cb5c36dc4c02ae1f9150f6a5cc7f3bc516e1b24b64126d4cde13dcbd9f, ac30d6dc35b9ab9eb9dd7248bd7085c75aa7e563ca19ed0f2458c9ef13cf22bc35dd6dcf7125d169f074bee9efdd2b40 - -g_scalar = 4b -r = a1e0ae0fe6ca7a154a7ee23df367b5c85d4631b4392f8f665b28cf8991549a96c8cbc40a420ab7ef6b5d4014867303de, fd42d862417d6562d7870042957fe44564e239e3f0402e1d6762ab69430aed71a531c2c450fab9012a655ee1139fa27c - -g_scalar = 4c -r = e677b97c61007b808b8d434e90bfa219a7253817daee85404552fc68956bce558c547a520c8d74e1fb2f775e4230e336, e7871c313937b80f64172dc31901ee2241bba1911ba3dd06a7a69a24e4f855bf96eb8cb3603263f9bfeae6f2f71abc74 - -g_scalar = 4d -r = 63d23607fa5c9816742e060b28a126270ca930b998ce78a327ccb6c0212a6125114a9b40334793a79f2134c12a501a3f, d44b1075302cfd2ece61c3e5572941a6dd03950030c9cfb21500850e49fd3c3d34cd7e2ef34d1d23774dcba4ec1f91dc - -g_scalar = 4e -r = 02781ecd4db639eea1560f9775dae55bd35175d9a506191dd3338ff4b743bdfc47842147688c1ced3c80145ddb9f0b60, 3e795421ae8fbd6cd47a03074e3c8f2c84238e64c4a7a4fbc4870c9dbce600336c62bff32c45eaac993a302d23dce536 - -g_scalar = 4f -r = 23b245a5d53912dab3cc818a7069cb7c491c312dd15d01f0e58901a204ca55712cdac248c3b74585ca11d9d4e9a6c224, 4b9728f81d7ab255941c66c9f30281f9617b301b08632eb3403243e9eeb95ec1a052eb3e3277555230f7838ba6b0b163 - -g_scalar = 50 -r = 1e8568cca446324620fe8c27a715ace6dd2ec6d351fea1dc49066428b121360923e5c6b90e42d1f9194924b4ad0a415d, 530abb420614a6f9b960b5efeecd8ae42413063a1378e68fbc7a903c6484641d98e97f1cd923637700c213bbfcce7e6a - -g_scalar = 51 -r = 0984c2e37cdf344f11238a859f436faff2c3118feaf138afd8cb3560e07b1bfbde45473e86c087853cbdd3cbdb06f682, 9dd7b7609745b87e5de38d63ae2706a701047a5ee5dd278d56add2f018f2637d959a14d4736fa240e1083c17c382584f - -g_scalar = 52 -r = e6db24057f12bea3dfc6d038305bfc7c87e75dfbed69216bd6021049cbfbd0c2e8c09f59ec5cc866783cc5bb88f82a12, 6009a59ebcd30d2869eb7bd2feee7fe5ed736fffa734994fe40d04ef6068512884fa39d54bb007bb6469e146b7a3a2d2 - -g_scalar = 53 -r = a075b16ac03d7805c25baa03520a8926eeb88ca1c7a4aab58487aa0d4a6694eb44cf847ed2f05eb48e61f0bf44e94071, 773dfeda69ce1cf9b72a7cd0563c78e40aa262ba2251bcdacf21a95749e604294e3c13706009643ec357a48a13d970c3 - -g_scalar = 54 -r = 00eb5c040d16b7fcb048b60e740c04a52686cba73934e93664a8bdc7c791db8094b80b8f691e858b3c712c3c6323cd05, 3e5c6ffb3adfb941dc98abd94341fd4987e3e34d8d8145a014e572f21cce9e0d9ffcb850d7c9b5b080c0d8914ddc8276 - -g_scalar = 55 -r = c835025446e64d4db0a08fe1114e6f01d953aaff73256a577bbdcadd053153d82148bbb88207255a935d2cdf9b06762d, 6c218d92c993f213a231839fe2895195c3d455d22caf52f27422a72a0bebe314392aae0271fbe969e7cfbad800dbc157 - -g_scalar = 56 -r = 94dc48fab7e8cfcde61e6c2984cb7e449e30229d0a06f838361494cc0b162b571234181c1dbb4629c7364268d94ab449, 43d6196f8de4857a143c6e832c92df61a32f70e6a0c3e1a57a9910d501c47967a4fe5f5fab20b37f0d7e44f289b66806 - -g_scalar = 57 -r = 1c1b3417a500bb22c4840320387b6b2ef30a928d9a3c3af1df0ec1ba8b80919559424730109677754f11a02e4aa0372e, 9f046faee996fe68bdac81880e7b4db731944175e7559f09dedf2454f984a88f18246d74a7909681690ee6c7bf3266f2 - -g_scalar = 58 -r = 9398236759e97922f158f85541bb965c782840d1edd794907774056232329baff0041e2423786267db52eb03d1db891d, c41a6fd431583d521af2a631ee1859834284651c3e6724b407f97c1df8ba4302a6f5384c2f5ccd104b40ccb8e384778c - -g_scalar = 59 -r = d0d105de164b7361d63dd29d19e0e2b667d3644ac8e55b7b463df30b0096721f18a49fdc4bf163e00c62094b2d71d4ac, 01c7e939b8df37f31d28243540b962d9147701090b4de4c065ccf0512daa253c7861b71b2093cf7ee5865c4e0217188e - -g_scalar = 5a -r = 4347b760969bd7f7b560d7e63dc77e7bb34f09fbd045d31e28bd6aae6e6e8e57672649def3c36ba79b35cdf7a7871029, 9fce477feb7d3671effe5f50722fecaedeeb339129c4724952f2cabe13d6dbeb23ceae28feaced8d2f161a085e5496e5 - -g_scalar = 5b -r = eb0f52348bf223b0e7e7382759dc3eb7b04b977d42d74f5fa4f6e534bbc2618a35c2421b14ae3f635dea409c9cba0858, 47cac703f116c6e20b09b3bd9ab88478cb78e0c863a2cba009d0b3319236343dd012811a3fde2c6d991c51670fc75158 - -g_scalar = 5c -r = 1031cbfcdef715d74efeec75e724f56cb8a88d32c7b6b5a626905570df79b6048f97bc3df1b9f55b91b6e58f1036e450, 3e080b351a206fe25e43c16b90f38d1d3deda082a8a691f9a4d6871d472ad231cee9644726ca94dcaaead60f2dcb2306 - -g_scalar = 5d -r = 813355b3430aa2d72df91689cfd151547a3545de7cfdb00e1c634764b16142cd1b1cc24f5380675eebd14d71e32d80af, c071f38f66bf9d09c71b395490a268e5572a425b71670dcbfe7ca8103cb06698d9e303f7e03abb7916dce2c985f2ca7e - -g_scalar = 5e -r = ed9602dc7912de8d89dabf40cf9eed19f4db0ad3ad1bd1192e2bfb0c25998b5d4259f70ee435a0deb134a04174225251, 843c41be9c6cecdf6010c639db73da1103f4f9dcebcddc087d15f243cdcbcaf878632b48408989ef585b6d18c19f9213 - -g_scalar = 5f -r = b8f42fe52fead1e4257b0bb5ad7f23e10be90befa27d2b794a607b9d0ef989779f74ca169bc0cbb10fc0f2630dbc3c91, bb6d4ba542df286e65364ded55ab93f98c0f64e83bc7b59145cc3f14dd99f9fb505fe7ebfd79617dde78e4315f93b592 - -g_scalar = 60 -r = 8bf3dccc39c18b96cb4aa43c9741eb4226de4c6581998af2ee21597e52ce08f68fd61e31148840d4dc5293851d15bba7, b257fb6c5a4434a4cee0842f5d5680b8f9d19ea0c831254b8545396f305ee4f0507e24057dd87c3966e1d5dad872984e - -g_scalar = 61 -r = 8c081acd170d807f87b1e51bac06961610241ed16fef9d9d8f273e3065278f98c1f0db004a49492c7cd2035d7f5c54e2, 83c6b78ec4f030064c3e2491c4f56964cb47e4ed7889a39ed7d24ef430e05dd3e4eb5512d6865bf4005051ea1c73b598 - -g_scalar = 62 -r = 458ac76d0f40ec396e6880f15c434085ca861b4d97740fcab1bcd42525fc2c50f05e0ddedb37f6ddd2872262b0a9e00d, a77104bcffe021f349c17dbc262820737b96a6edffb612df003c91f554ee9d59d70204dd7088d2da5fd094ff848ae412 - -g_scalar = 63 -r = 648c5f00bb28223ad49cae0982d9d6bdb9b2e6b479c8f8bd1b41177c708ba469bb4f9e0f41aa174e6e3835a9b05f84a1, 03e1698b322d63bd1f7493b176190d98d6f759d8d1a0ea086675138f708247e1fe3096dd81a0a38d04f485765d8cc4a5 - -g_scalar = 64 -r = d884d30b2f03f287419f4d2eab386382b0e595a155fac50e100134e2338c10e0f9d9c4dbaf282e57a350c4fc01834066, edc690c903e2fcb28a8aecc74afdb92910fe926075034f722a4dd35433dac6b48a14723f4922997f4a7e5936f6075163 - -g_scalar = 65 -r = 7e2392bf7bc814db9cdd943547a18710d73b1fad8b8b5cfc73ddcd2c2eccfb1ab539f5fe50c66d708e66c6f69b8adeac, 73872d361702e1de909b656f420ec104a73e1d9af53e80541fef41850ad68693ffeddc211d67c04d914193c06c8f74e8 - -g_scalar = 66 -r = 180783fc39489b2827c614bfddbdd7a57befff1cb90a319f1c0f6241bb2863c829591fcce7274c8803802ee80fa4f860, 60a4d22a26f6a5df4c6c8fc838175105a47fbda3bed5e5259e8d5e0bba3a023a5464baea1b373ba72a89af6579ae9e06 - -g_scalar = 67 -r = 590da88e64671048113a7902e3da530d1ad95a94f23d84fcd3f0d14329c21de1ddcbb10eafd402bdd24cabaa21355d5f, 0c9e71377273dbedd6e2d5a62de40552601bd1c358fad1c397ebbb4ed86f4dfd1a52e4e7e62e6e0bf4a58282925bf0da - -g_scalar = 68 -r = 7117756e39dcddad381f4f06f473127497d1e75fd9f408b53dd4f91683002cf1cfd364cca03bfa6367126ced901410ec, ed306706377f04cfb06434324e2c7f76f5f40731eb8fedc1f3513c3b9c9e5f9ca3b9dd6e230c2f53e206f13b96d88ae7 - -g_scalar = 69 -r = d0ab3e3a99ebd09c022c75441a806542862ef39c275075e3077f30e5dd2c23bec367d6aea6e201bce6e91985e5802845, cc3ae72c6d8973a5cebaf145152f1923d3d57a9547202560372c23a9a91fff8ca5cf364fa9ad136b7d67ef60d99028b8 - -g_scalar = 6a -r = b380f170bff65e1c2633179cfa6a8ac6442e0f1f36905deda01780587776c7fea1295b179d724fdf3d303c72138de192, f1c69141971d1d5bb5a31d6abf10c960069f47e10aed184b1e0b982b4632f0a407c34b8181b17d37af66ced6d590155d - -g_scalar = 6b -r = 77964d793f740b4850994c4960a91622ccd4f456753f40d027c6ec25a0075d4673c21e204f761490d718e8e1f4363f23, 5182a7172afcedf2e1d99f78c7438e3995d6ad45b8659463488374d1a27f3f9f844fc79ae4193d79f4c955e2f647ed02 - -g_scalar = 6c -r = 2a532f0ac16a417882f24a114cb0b8671b23e3f7afef0b5d589f30567bb8dad3d81b74529a67044fa26631ef443c7161, 629a90bf9aee303f7499b3191ed0dde33c58b5e63c40024984d81e8e66d45390a985daa26e4abce9276d170f40383ceb - -g_scalar = 6d -r = 6e3c27bbf13f24033cd18c33b9cff887a911a58af0d93abb5841c5f8a8dcbdc89c7d35833cc1184b0efc2e27b2deb1fa, f4c46c56198c770587e19a4e7f7c756875ad33caf5a1411d2db57fb4f560daf435cdd90b54294c055b391712ea533ae6 - -g_scalar = 6e -r = 26956a5b83e5bd0bfa63d67feafb4dc8bdc1c92475053732ce481ae68d2624c8a4ba394e85d138d693f846d4906ef776, c59ff978106e08bfb775af8769e4422061d7272e75c0564abf9c791c76e941515426eb05ff14810bfac270f270cae3a5 - -g_scalar = 6f -r = a158aabcb9bdef14c3907b518b02667f27552012c727be036744720b50447fd908e0805000765fab8db3b74805be74b8, 09ca776808279da9c64b47b82300d9feccf8e1f94aeb2685a2ff54bc93c326191095bee4e305fb96aaddfa03f49cc56f - -g_scalar = 70 -r = b4a6714762f45dce83f2fd2cd8296a52fb25e37c9710b70b2b5609d5504c81290d20370a5d66455a2e20654839d6e2af, f82bb94445ed204db9a19eb57c182141473e6877caa846883e7ee43a2ec76a1716a71ccc0b6c4c64a818b9bea15c6a6c - -g_scalar = 71 -r = 869fcd17ff86a9864a5bdb048d7fa0c2e9815b09139b7fc5e72215ef852bd27fd2c616d1bbe33572f85b86b79b0bda12, a10b3df255f7944b3d0ed17c31b87757bf7fded9fc31bb676998722ae7b12029b9c007f1d6664d043278521791daf6be - -g_scalar = 72 -r = f80f423bb48af0e8e53bd76b6e4b3bc543c2a97d5743877a559b40a286dcfd8831ec9ab137796cdcebbc6b4cac6a280f, 0cc71a320bc4646e499467386204acd06ca075224dc4a5e8da508de78539d530f4a727682b1c4f45390696a8d488cc7a - -g_scalar = 73 -r = 274c69657350982d84442a4123c50746a97accf432406bfd33e868f326a488269120f7b3a043456daa4e673b34498f56, c0c5bdf6cf5a11db75029e32cf121f03df9a343af6312ec600dc39b8848a5b863ebf1db1ec7ae2413106b7fb95dc9eaa - -g_scalar = 74 -r = a40dbba76a0c98442700a45b812fab5c2e56dde7119ced404060d22edb6e808b6d812dba7e29445309e7d232ccd1c14b, c0ad2701581c66c57d04f5b9c910c402fe084c3f269a8382819b165ec127165cb49514f0e988e2f90a1c7cbe9cb66303 - -g_scalar = 75 -r = f26774cd7823568b517a6bae23acba53ad9e749a9aea738d613e5294fe8579619532b30ea229d070fdcce7a80723559a, 70509ab082b097737a546582bff1585ba6729b8db27984816d99c05f06aef600c6cb3a4beb8c057b940767a1ae53114d - -g_scalar = 76 -r = b8027be64a5eed689d19bd63befa48da4496f5a023133af12541da528e6a2448d1f2d42a406775a028f0ab7a080bfca5, ab9386aa4a3ef7e79966399f963aee20f35524d0b44501ccac13b8149df3fd7307819492dd5cde2308c7d5a296b0684f - -g_scalar = 77 -r = d2fc5c57998b057713167fb8ec9cf4cda4630ba1875fab27cd55e7b421cf9dde59f9078dab73bcc4732595ac7329d8d1, b16536288a40a5cd9a1bb1ac9221b7a3eb9ecabc9109b7e5d677a64899dc8f46b2db96f206cf9ceb761360c15ff51b6f - -g_scalar = 78 -r = f392f9632f3b0feda03a6787986794dbcd411e349499fe4eaf07a03eb8994b40d3259f2810248af41b3ea621f3c6f15a, 539875879a1da4c861bf593f532e0ecc3c967a464c37dda4ccbe6fba3778c83889e73d9a54d7c388f37166f8c08a1237 - -g_scalar = 79 -r = 79cd3f1e3891db8165df3c959329f7e0c29afbd47772778a6c33d5d6ba6744e48c9a16e3a896ab1e5198ba40189dfa8d, 11aeeda1c64d0916473d0df9f8265b7e9c1d39a8b716f21b95507a54ae4d8985f5404f6be9028e62caaa8f0bd784019b - -g_scalar = 7a -r = d109b62984083890da5fddab7e28aceae3da87e136a2812ddfffe0dd4cbeecde89a9a5422a1a0fad53b912fb21a3720b, 14411c67bfb77d57f6b8dd99613a733b02b77ffc1077afc76ce67450eb4d4ce0f0ef6939293f99667744095c728d3ee1 - -g_scalar = 7b -r = 8e4a4f6321dc82a6d4d6fd78550418d24b3d05ee4295440514a9c3ebea80907b46b07d4a2a1018fe151198480c4c0b80, 74c462ed1a798add03babcecc25ccf338a86ab0f498f447b5a82af3e9f30f7e883c6ba0470788c9f1be4d7f7a178b9d9 - -g_scalar = 7c -r = b4bb1133ad9267aa51cb20d25f083167238df4864cb95a00bdb4385fa6f8277692f3dbfda1435507f9e5ed57d99f5989, 49a89c9cf7a12be9b9e99d533cfb098b9544dbb2d4eb6e31045ce25c5e93210c55a4951bc8a66567bf4d13ab4f115bfc - -g_scalar = 7d -r = 03b2dab245cf48ae7ad6ebad036703ac9436a8cf3450356d50ea65aa46f614e270f25677719d6ada9612b8bc3cfb44bb, 8933bff572f35ccb7cd5a74bb0095802551f41bc219187aaecf53641e119ab8edf3fb730ed4f55a421953d2a4117061e - -g_scalar = 7e -r = ee82cb5d4c686f3145940572b53625a29c14d45c4d73654245b97c7577b60ca7135cfd8fd9f0f5f0ee101c5ade346cdf, 07b33602c5e1ecacbdf3a4d1afba7f8cf99d6754e04af855f9732cbb4f41b9c31525eb38bfca96d3aa1136b6b0c47624 - -g_scalar = 7f -r = bbe34e740f395db4a92bb11bd6e0f09d96fde63874231e0feef28f34522c62792aacfa4c569604aff7753246eca101ec, c7e92a61e3948069f3d6832e367b2f949e29e339ad180b0e88d22a44a467c5195698bdbe018ad5aaaa6e59ddbf943cf9 - -g_scalar = 80 -r = a6661cc4c241720a0336aab8777a16d2f313389118eb5195c0dd449e7c1c39840f4fa5eff21af80ae484fd9f8258030f, 239dcab2a277ac5b2657eedda5791ce3b01f1e0434a02a6b5d85a0e4a022c7a4228968656461e382678db970a7efacd0 - -g_scalar = 020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 4ee443f91860144e0b7f54eb7e4cf44aa177ad14077777efcdc4753ba05068eacfc4718769f60e03c84f917203bdf6d6, ecff7dd78d65f38ac5bd6cde7b2c6d8ebc4f93f4a0c7614aebc958fab8cdb6ce511137d7436c1b541279ed4d42bb6a93 - -g_scalar = 040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = bab3aa8c60a8a7a71cd9c342e31644be358bbd6e8948b6e231811365ee61bc954043079cd23ad193ffec6674f65de0f5, 813054feed0991144eb2e364b2aee6d7c96a040173750d6e8957c03b8517ae8af7d0b0414439990ce065519fa375beb6 - -g_scalar = 060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 304eaea00e786d5f4d6a091dfab87b368618aa02c421c69415aaed42cca2f15037ba0db6f0f49278ffe3104b684456b1, 57580c615f46086e7f7fca496dcf60205928791809de860f6094823b7a70d421f57e3a19ad387a8d0be977472c114074 - -g_scalar = 080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = bd6066681a87cd4a06737e54f91d813ef972804fbd39a2bc6be6abe3b91f14827be330a822fbbe61bb39a17a7c34f095, 5d0bc923f9671d8a9d7f416d067e2c198853cdf6ac0511b07a93aedfa58af042b8206a8134afd68fbf88b2e5f538d56e - -g_scalar = 0a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = f20e5b8a6c7e9f94c3bf31d408595dea5caacb6256583c442822598ac5d6878a19eda013c543171e9468777a2b389b27, d0afdf5b9d883c58b8c0d1352cbdaf23481a5a2f7cdc0d7c2bd47584bd688e0173ae5d0d2939aa75254897370ba8a1c8 - -g_scalar = 0c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = dc74d638c785f1439114cdd012def474f016adf1c094b38cbf75bb57da4d6ac4f60262b5dbbb9e4cf3b6fd79dd3532a7, 5b843830271041ee8c601615cb08f34f381dfc0c636ea6b6552685b79ddee1f51f141878cbcd0d4cdea060d6a8d90bbb - -g_scalar = 0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 7b81ecddcfc2ca46b9e0718a467f042b49a6481891dc89ff535ee486e03c0851ae3ecda2761b94ba2d268da9b28bdac2, 89104b6e85bbff54b98c3dc02b382474382e3fee338270c7e4dbf739c7625e9bd44a2420aebbab8f3ae95ed0c166648d - -g_scalar = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = a24c76d1da73b71a2ce33c2eee858bc3f02750715adf71d715f1ddc63eb317f94f1d082ed0e418512e7d0a16204be028, 6cad67cc0a4582e182cfaac2a2ea7b24d11122a1a47019739f5bf5a67502de64efcf170505cf96129ef6a70a6c70c483 - -g_scalar = 120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = d061fcb5f69a732f7c30fc84cca23e9d1671eeea9772efc6276d435bd2141b0ade8b59ae0034465b3055ed97444bde46, 3fb7d83ca8bb65857e9a06f182c8cf961078a2a0431e5293f3053a22002f5f90cec08d256e800eda8fc734fb6f5b4f20 - -g_scalar = 140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 3ec851d706c4d48507b3e8b9191a320efce43e873cbb2b3faa299008a84ace074399615939ffcb3b139d9fef6bfc08e4, 4c71b7aa4df8a1b2ccb178a0b29be48cdd6f8b5134f6613758b79d01c439ab23b6a5dcb213c31d5c03d8a672a4bb8477 - -g_scalar = 160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 0c80134604501d21436c61161861628a33b080bbc3350983e151f53b35fce45855b20bc8b9ca1f6d3d7718adaf4b5201, ec4885df66cf4d6d8a2448a43cd92f7582229794b6cc154c6976b0bcfb7c8e36d3962457332d7fc38597180f63cefa64 - -g_scalar = 180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = b82c99d2e7c3018092587306f37f0bed46d4729f1771c5d3f05086ec827e6cf877253434ae2c30f292bf8c4508359896, a7a413318961204ecfed795f2736bce61a1ad3eea5d782045c583347165c238c7fa984be994ddaf5ee0141dcb1684841 - -g_scalar = 1a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = e9ba9558a68b98f9bd1e67afadc744e38aa99096770fda49bc4bcd77827b62965a01e68261e78db2d859799609f11ae9, 008e70995c29ccb22189ee16407df414d5b2734288f2a5c00483e97c5cecb4b5689baec35f0d88b25c9d3225ca4c3082 - -g_scalar = 1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 2f6fb08031e6e76933cf684789a9d8aee4b51dd0c9f579443a5902cee85717c53aace28e3573ecf687451ca71400851d, 5ef2562d0c8012a4b8c457c3bc17d1fca2c932c9a2098f4684d76151965109ab2d73fef4e78096384bf3da323b78dad1 - -g_scalar = 1e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 79512b8991d197c27b814ed800fe704761c1b06eee7c1e8878b310ee8b5624461fad39ee9819618481657860b1637988, 5a3de830cc8f5386617e5957c5ed0a036f1e2e87d76bc70004873d713a22660b174b640c477bb5af60433526dae6f367 - -g_scalar = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 4ebd334b35f68229c85eb23d57d002931fad8b304521d7e612449c4fbe35109c72913696e37f500696a1e74f51e4de5e, aed4dbde0ef567dc72a6af75bbba88c0eaab81be3a1c866b067b0456757cd570c2b4da6e5463de2e7c5b86682df5acf1 - -g_scalar = 220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = c51c0559814f7d9f39d71b35a50c71074a2d6ca29d6b6d55e462100285a8942994ee3cc9bc3e8cc1ef3a7281fad592da, 7bbce68c1760111324e69af34577cf0c4a034b36f131cc26ee5a08fa45c69c446885625d46719d58a883c21a5339bcde - -g_scalar = 240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 381e5b521d3f2ddd9386a35d4868dbb2031febb3374661eaaed46bbc35052bd18fb9294a8cf4e306085e33cd9273818a, 8dc0511f267d5c14042707ffa7443354bae262ae490c1969f446dfa92b9dacbcb0fc99f49dc95af1a938a3a5179617ed - -g_scalar = 260000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 0dc856f4656e00edffe544b3f3263dfa315acfccee43b8b5e10e7ed2dae76c71a9f177e1273679c8fc9aea79a04464ab, 8c225452496c1d6d54cbbd4056a4924725cfc139b1fe79ec5554a1ebe10252a4f0c735fb63a36ab88cd1ac907cfad555 - -g_scalar = 280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = b4315ab11afe8540cf6ba7db0f63dc797ad61b8ca57dbcbc1f719f7036fb5a4ed86e85a483e43c268f0e1908fac2674d, c158a2710b6dbd459b70bc8c60d2a62455867b5645149689ce98589b9eab87def51969ef8838a51d0448e852425c4df3 - -g_scalar = 2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 7c18a7a8fa5753e85b6fd841f76a7b01cf6220d49d0216138213e04ad04e93359c03aa457c714b9ac4645ddfc70e9172, 30528343eb43d78d4a8b8cbf5174f2929c3cf0cac7402d75b75ebc0c35720ce2f197059e22168ffdd8747f67b6e9d715 - -g_scalar = 2c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 0005bca678d1c0ec1a7c4af600d31e7ff4a4f3afab047cdb8ce2db1f4645152c64ba3bc73d501e010b262f808f1915f2, f7468e8a92d281c71494c6050dc3c22c105b9dd2fc657b724fa387e5fccb58f5a299b1002ea9abdff5ed135f6fe5ebb0 - -g_scalar = 2e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 8f21250473e722c5d76624e1c9fe92200eb5e4ff0b57513b30bb969b7a4289a53dc876ac1ac8a2fc9d420780b42108d0, d07bda4ec5c1a49a8ee95aaec496d9c8e643e936e9ef5a002a6ab465048c03d103c089de722b382dece006c9e640a463 - -g_scalar = 300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = af51c5bbf42e0e7c92f031be99275c32ce5ab665d8d544e60b06aff65c27f5f6264a09f3f9288555597a26ffb4dc8600, 5adb28dd9a2acc9bb8c8a6df334d4f57fcd999a86e2ccad9e73fd299f93fb7dc583fba6a8473543a5bb28b061e37b36d - -g_scalar = 320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = f2038e9fe8e9ad7b08d7d0b167b00a8b732a3b217f4e0b07fa70e3732c9139e3c6dcbc31b570e7e381eedabc8f38b7cb, 17f1e19d8f8d4f1ae3a56e099e87e8a5a3933d71e9581abf1cc21ab87f56595e01b54b247251e090c30dd7d38fcbe329 - -g_scalar = 340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 308b37a8d48b9574d1ef46340be2d8415267ded09aa9a5c005037f26de2f444ac6d97d37e7a97f33c760823646dd14f3, f99e952f24f8bd3b126505999bff252f71bfb8bc0b80f3bb2d8adde62c39c75a1d5169d938b7c1ef102f7878487bad5b - -g_scalar = 360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 4ab1773e6c85c123d67aed02d15b1f9de20b10f1f1021adf76cbc49717204f9387590cedf4db6d03c3db1f37120b62d4, 3255a34b29d1067d2cc2f92027d52c47d442a634f9ac58d3dd42c53bc0459adfe2d7f9695073039a5c4e64b578618661 - -g_scalar = 380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = e9ecf6ce198c99f00f6c5993c82e2013e2f87d5e2973be1d4200e00670744f159fc75c0aec6afe4324496a8b7a8a6d47, 8f02df83bcfcb9304f24ba23f3d93d73e4273a124bcffc618e962ffbd0fbb134bef4b8c8325d1d93cbdf72058b37d828 - -g_scalar = 3a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 4a7788de2d65774a2c8a2246a3e93b3391e674f5503557f209fd4dea45f979bba7f9f7519579f6d40c595629484cba20, 892fb605ef305ffae4751a325d1088af129a351bedd41f381d7f2c58f5f882beae702203863b049a9594c59414690f4a - -g_scalar = 3c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 30568303868326be1f28862ef23931d5623d44b9e4a0bb425bdd4382a7b62effca4ca7cd5a03c014985c8f4b0614348a, 6d990c16f6f5c9a42f50395d155eae927b32249baf3f0dbb62b74879b1e70a9af4dc02330ac4a153850d2a0d82e76f04 - -g_scalar = 3e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 37eea04d226c0de31df6b241f5ad41bb711e5b378c68c6d120f84bcbc82761b390c700aaa28b9162a408aa1b48819870, 09145c9f5e82ee78456f2ff137a46fe0c8f8bb0822ed1ddc6b1c960e7130079f628ad18ef2cd3f99c2b06d8b44c41c2b - -g_scalar = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 7fcf0ecc91251b6e64f27976d5d7412b1a6ea51a2a883b7f340c8ee3ba4a3301ecf10abc47bb619e3afdee277d221ab6, 89325d7a7f96e023d373931e8e7d712bf08398d5d542676dde3b73d6ad61b2cb38e48b96e2e13e585f3f8f41365b18b7 - -g_scalar = 420000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 7e3e4b94ddaca7970a21251f7cc002a4391e974f262a7c900fa492995a642da315257c37b24074d0000d342aee928391, 53b272171804202c5c1d316ad8ab1a429fdffc17c7f4d0572b214816ad88cd68bbdeef04e8c08e47c80c4510743e1114 - -g_scalar = 440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 63102e93ff029787e2a938890afc827f951f92186359cf06536c999ce295c45100614bf206b7e166eb2e48c10bf4e94d, e6aa9eabae2ae9e3487ce890e10ee83736b7e9711cc2f3b4c0934ca6c86043047354df74928742bfab297c7d2ac89645 - -g_scalar = 460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 5508188555d35077eab1751b07c4cf3c9cd6be7b2601743ac8eeeb6ad5b89ac7e6a752c4783e3da875218ff22509a1df, 807893527f1ce4ef7f53fe8406c6a5ce4cb21d96e11e734910ca143b1285e27ff265d0abf1e40048e315baa104764080 - -g_scalar = 480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 3838356a53264b8a5239b5c4109797d6ae7b59c5fbe10a477fd7fd8eb3c2eff77db868f3a950dfa26e7a578340517347, 25ca45046cdbe5fede6af0ff83282fbd3df64ef5a06f3cf3fe1aad846241a50a67c86ef46958fa2c8df8454c320a8c5a - -g_scalar = 4a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = f27d64f3900000b28c140f1444bee3bf74ae1bb86f57ac995957f390ab2f9f38b6c4ad7e6725e6bcf7d0024dbbf692e0, 36c1f5a7f9f706f442cdc68447ffa0369a7b2a986150dfa43b5de0af2e50ca8f1c6441f777dcc42105df256b72fdc686 - -g_scalar = 4c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 1969eca437dd1341ca98c4364aaf2f73c0c88af6aec23cd24bea31ad623e7e55101f055acb1b1cd5a319340d6e6c0deb, c0213ec56844da05a7e5670079911cf9c3d1069474f262e9199ec0e93d6ea9c4afdc99532eaf5b086b03989f97866dc3 - -g_scalar = 4e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 2117cae94f663d08e5bd0119ed5225f74fed82fbb2d8dbdf78482d89dae531a4ad937387f2e050ade0732f6de3a1e252, 72b9ff99a67a5bac399ae62b881be3145d5e71b8e9b5b6a3296b1335bf341f2c589e22809e86c55a99b47ee3ea1f9b78 - -g_scalar = 500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = b942add81ef8465b860578cf416ccf69f307823e718c8aa3f9fbce33a82d37361c77a3054f1e0d095adf3d9a111792b9, cc7a9ceb854fe9da6bf6694891a626321f521c2dcbf3ccb8f99b9a8dc09da90be6792eefb01528a89ee0cf97cd9472e1 - -g_scalar = 520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 5f3fe3e3209d9fc047f02c4abc4c0e4ed15761fea5957703efaa521a05781b37a23f342d40f5ab43c72957c2b56c62ad, 8ea834b98cbc794316670382932d4183c743947400bf71245577e542aeac3cb5fcab0ca1117138ab1c1598df561b137b - -g_scalar = 540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 84422ba89c2d7eb037b11137f15f0cd229b0341dafb73ad113fe0588ba057fe284c5d6a71a50c560fc9660a3c8808373, c88f0cf685c54d31535e8540116e2db870cdeb0c9f242a42908895a9e02d77fcd7a8303f08b37a840b595ac52554ef7f - -g_scalar = 560000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = d2fcedcd2a1986bab43adf697bfedda152ae359080ec87ec825104bc4ec82e0f6dbc484f2356b6a44dbfa5831af13e99, ad9e025b3e6da3e05f33f11ebbe4c690f088dfdeac7b2f9ce25dcfaec32d5809f74d9267c6fe4f5734951159045ad785 - -g_scalar = 580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 0c5be4a1ab204fb0ab8802bab8da8e68be6bd7b92c078aa8716574c5e9ae3da03d081c0d7f15c9e3f534f145e2290eba, ab2bc89575ba5c996b532891e6550d3c855367c4924ec2d29c6e2ce0bb5cd2fd3929d0d78fc9b7a5ad25c5ee0d3f12b3 - -g_scalar = 5a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 58ec20b5fa1aa22b08285f05e94af0d0e9245a047205187c5d74a59ee05637183b0b3ca6276cf8c41cecc6cd72c1dbda, b0e13fd36ad9560fb749ceaad9da4802cc74af38ff812ae36757a5c06d40592d0bfefe8d9b5c84757d367150c1220085 - -g_scalar = 5c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 71d663c80482a61b9e9c222607f4b670c77375da47644b079d86bcac8b5c43fccfa41da6f89ce836b56b035e2a0349ad, 46115292ae0c97d38a2bd7fed4dd03de9b463559631b985009e0cb2a7ca7548bf1cedf7e48832b5bb423e739ef237431 - -g_scalar = 5e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 1ddaad3e57a8a6ce086cf9d3c08d007d4980b91eae21ee2813a6eab45a5f233af7bd1613d7e0ea774be55e045320c643, c16aaed957e5a62c33587da0f82147cb54941191f098f87980dda6bc17c4e9dc4da655da00cc3d4107d0c19db8c6b532 - -g_scalar = 600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 5016c8533573235fb1fae2fbf363100ac12df68cce52defb1004254501c4e17190cab0eb9d74e3f6e44e3f864b3759cf, c1da40d31f5867b241c7611ff54e48765abfa961308772e9324985835a4e118e8a20d42317f84ef28d4deb661d922e9b - -g_scalar = 620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 976a426e7e387e5c86346adfc17b570aa537fb6be3a14ebf219a097cca4d32e7607683d6d30481954490d42249f884ab, 622cc08030b6aefc8bf4b8321496b6541a6d9ccb5e20adea3407694184546e81f870516b4b009441cdd13f0664fa241b - -g_scalar = 640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 972877d5c351148008e952e365e5ebabea435fa0e9ceaf442a773270df98069e7dea27ea124874854df02a7d3088aebc, 7d5f05a3faa1be224b72a1e6193547517d9878e811c89153bbb792e2c3225f20e50abe68b8c7c796ef5685f859a04cd0 - -g_scalar = 660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 9c3eb2bcc338e60ca5e4a81611e943ceea32131487917fb3ff4d80e7182e7578122d7b16cd1909a4a9c5286d78c8e4f7, 3a8745f4519dcddaf346b75a9538fb01980f87c8f605c9584c9ef41d9b15d60be1c92fb8b5217ea220e58adc72476919 - -g_scalar = 680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 762b3406c6577d810accb4a7922d3b253a998cdcc8995cace659cbd6ace07e138540213ea7a3f2f761dd7692f27eed54, c27d13df98b867b536815de2c724284ab6d72f7ce6490808080a522673b98cd37f78e02d8cc9bc5fa09db4f57e043740 - -g_scalar = 6a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 8df49d947bc531c51cc8fa418508b201bd7dd40b7a34781499b5020891035d21e8d66a73fbc1180d5f29d3aaa7d9e25d, 8db14a1dba6f378f3cebe7e079393df73fb41991aebc0e3b56c448174ae09d13854dba16f2f6917f572cc562f0c8665e - -g_scalar = 6c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 490753350b7e4afcb041ec67cf575de55f49ef880115b9a54771281390833f18b5e8876c499a1455bfeffd5356adb6e4, 868d06baff60e943fdf76899c1e4f8b433ee16e27993eed6a84431a6e6ed51989dbb181edafad9a5ad4dc4a15f0b9f24 - -g_scalar = 6e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = d93bd14b4b11ac38c8de9fdf7506b004184b98d7ebbb8c4dc3c2cba3492a416a313c0cbcbb713c2501b7f6985f7f481b, e8ffeec6163e34a582b65a57276cefd26331de3919b3882df3a5bacc08ece1b892bdd75b9f6e7821471119db51bb7d4b - -g_scalar = 700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = ada548c3b46f1e376b9fd3f7f19df4bc7f7009d735b193cfd8e497fff172c7cfa80a8c0d2771235b46303171491ccb92, fedd3a7011a6a30f33803a10b77840dc29a6d5d779b8f5cc2a121042539eab95ef2245d6ae78ef9987c6eaa9c7a20270 - -g_scalar = 720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 2d56966a409303d605de72b7f70a3994bbaeed33041120a96122ec75d132b62c870346945bf287ec264b3d9d11eeb9e1, 42b1ee108ec7069ffcc4a5271566115518cceb0e66f4debfa90f02531e45559aaa2c0e009a84256bb5d2a629e73a0b47 - -g_scalar = 740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 24ad6b0ca28c80673f16d1ed3b5fe8d68ec00d9fc04d8cd5937a15f52a67b12bc1413da46682c7795d782a0778664144, dcd9e4e8120b38813770e54d16bd75b2d686eb7239384e157d863f5b2ac0c23862c4c2beab2fa785dd1eecc532732b19 - -g_scalar = 760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 326448a0597de5b3e6361a339e0e1c54fc3e322c7496d0809030804ef95021bcd40b4963d24a2b6eb9f1b4ae3e29ef63, 0252a9b99e9793e560cbc4f2287857e213731c2735ba183196af3f106cc7ef543613bcad0c6218776b95c41a2c74527e - -g_scalar = 780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 20b358444182aa555d43a4a6191cc808919081881990c13c49b13eb95acc557287bc4d75b1baaa7ce3052838df5147e1, 14101ec7326c4d3885b6c505470fbe135db7d06920f68ec58d130b3900c5ae9ec6e6e061722e91e770d49a4a670b1fd1 - -g_scalar = 7a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = f04df323cee02f61cd5a7a956b1f77beee55d9e0594c44ac013ec26cee34c1dc43011b315c10da9bcbd0f599c8e64d24, c4409631dc14adb19dfe638a11b9f3e7cf019abdd3531546a029482b423ca901b3c436c152ec76c9cd4026d1d96e851a - -g_scalar = 7c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 010865380377ba8f43a195425fed884fd7323e01a856ae6b6c8e22676e97f5af75921e487576c3ddeef03450e10e8018, 210d6016e25a2073ddf723ec0a11fb830c8d328bdd918524ae098b7f9e67bed0c6fce58bf0fd42817cdbd06ac82a8f67 - -g_scalar = 7e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = eebb047e6d7c9413a7235359a60a123952d9264a3ba048ebbfb45e7b89486d643ee8c19f0b66d8180150d085890f1e7a, 7ae63ab9d214faedcd833fa6420136d7dda482d4320786f171e24d58264265e0cc43f5763d6f21692afe72ea99eff33e - -g_scalar = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 60ad991e4e4eac458e5c12139ee4718f77b9b6dd6816b0099aca885c1a0d58e235414174e52691403c90a59f85adde98, 5e9bfc5c290405122e7b49c76f7a882f5f99092d42a87e32cba1ffc75eaf3eaaacbf4eb25bc5fd2ac00c35694d71f624 - -g_scalar = 820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 1f1b6cc936184c1f444217e60b4b3953db3e9066d9772914d5968b29ac900f4c39dd0be4c1125a63782903630deecb3f, 95f412236ee17cb99ca45b884179b279df74bc7c4b15781d9c94aca42b2ad238d4d435352c5b300f016170c37e873b7a - -g_scalar = 840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 9db0ee0b907f2cfdf5b944c9040b7ad4d4447c1b20eefa54e8804ab3329a0b9a9713a5e04894f486a31d3524b295958d, 1e7a7fca9b447bd44f952109f1172bcd2b47ca0622d4deefe0663b5ab29c3cff3137241ea83517640b1a1f3a5384a999 - -g_scalar = 860000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 2f6bdb104cbbe283f9c8e74d26b173fb5cd20671daeb6361192707699fd1661b8ad7721233e84ecf88f2de40a7b3fe4a, 247805475c8c8aa5a9c90bdfa1886bae3417f527a3ff3a510c10b90efbd02188b3df0b25e67e3852f8c33386d8796519 - -g_scalar = 880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 6847c20de211c90eed3a6508ea56be90d9b625dcf9ce0cde6459720f8eeefff520d0c4740dcd66f6c9898355ecf2a473, 6c7c065add370f7749cedc634470e754cac8f277d145b8313155874750209b4d9222eab23023d16e36d86bed71a73cee - -g_scalar = 8a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = b1516b4697bf25d1c1c0468307a8949bdf7187596ece704b26adc1564300df17ec96212c96174bf6bb114c0747f74319, dcb074825d92d8f2c13d11c350c7aed054be86810945e3b8c23ea6101f426a499d93d21a6664d9609d83fa5148b60820 - -g_scalar = 8c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 02a37213fac8a477162aaad842f412c5aff5505f1070737afb8a08285bb5202d1ff2549ec4c9347646a95735f8171804, d7aa1d2378d82f9aa2006f207e6ee867e657e8c782d04913373a9039db1e5a409be6a0b29fc6678705ff9238932f08e2 - -g_scalar = 8e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 80e70362a61f6b8e5b9d91d31e8f6424ebba130bb3663e1b6a9f149f55dcae398360743ca827378dfa8cd197722395eb, 0e1d6bd572a38c9c5f50d1af56f0674602d7f0008e445809a7e00178e83b6101d09f7ae147cd387c0f569fe2df0d96c1 - -g_scalar = 900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 3a34819d7eceec8835d9fafccf45b75b22bbd01853e14183e09f04e6223a0ce868ff316015c6f7f5fa070e22142403d1, 335c8d36b7784e7c19e12d0565e800aa8e77d9f05f7edc6a0c8005659eb2a79a431036d5841d1505d9cf7568d33262d2 - -g_scalar = 920000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = e70634860b99a9811d923a955e2994097a0a8df4a85fab6ec4a354244dc0e8bcd1b7191b3cfdbab92ca47e98ac1b85fd, 41cf4463651dd58c61df35a2872fb3389054ff7cf92744f7ce7b2c34274700c5382c5952a9ddc0372d6a573bc4066501 - -g_scalar = 940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = a6e5585e996d20338e857069e462cfa8f60ce5d991f1d4875c240cefa3ef520288322d8bc225ce6edcac39d87c1d9f4d, 1bb28be140089be5f8cb9c26a5325b8c74b14432148922915343a0a2a3231eeccd90c140f907ebf0709675a556281e6a - -g_scalar = 960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 0a14f23eb0470188da64bf1e5628f2863ba37c232de1294438d28dcfa9312a5e224f404933c384e47b7bd39f39e00e98, c42dc328091678ee839334b1f7b077cd7f81c9f49d1206a69ce1716ab4aaec2b9c8dbe79044c3f2b2546b252c1e279ef - -g_scalar = 980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 6189f5e41a991ea2da296dacfe7d778f186d3d934f810d8fbac785aeac0939e3c7c9e5f1d27d1f312bb6e7ec3092d0b2, 6f670479e22efa03720cd3908d1363fda447a31ed83044a609d718487196dfa804aaf59a88a4dcca098f794e9634363e - -g_scalar = 9a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 1dcb9da2e49ff45c55a12128a50853d180f745e27f7209ce78b59db06f2c572163a394e1404b5b23cbb76478b52110e1, 2fb48e2c66241e371d10aeb29d2f0d8c854417e329d324feb5951f413db491f31c2d9362850112c8ca76464c896fba5f - -g_scalar = 9c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 9bace7adf8a7c0bacccb784f77921ca4d56ec8f223a1656e16ddefa50589fd01f3dc472a8e2c58e9aa452e81cdf60f9a, 5a446de871ba27a5c828fcc77a21add6033647c392a209513599817883ce8674a70c0579c34e7cb5c94ef3ef51f052e2 - -g_scalar = 9e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 7a51381b1772fc22ca98304759d16a8b665870899d73fb3bfb3339ee5b1cd14117a70200b441bfd0f943b61f038af8d1, 69177896bbe85f1969ae68d02e13af263f388dd5b8607a50b75759eb4663d9a45d1ad5200cc384a85231f7e02c6dd801 - -g_scalar = a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 282358aa2ff95cfe76ed6fe718bd01b79f67567fe0a7ad0b990e3425ca7b8369b69e308bf8ae956575cba9d530a3ada1, 54d845b93d962c14b89f3ae81dcd916454f8664c26330782969bb272b6a7b8f989d1533fccd67c8128d2ea41410f8841 - -g_scalar = a20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 6d7604cffe8d69d781c5409e908e92f8e7dd1034ac8f1eb78fee1bd6e78c1828a32243ccb026239500cce541ad148e09, 904505603fc9a558c5f565033265f4f50922057669559f2d83dc4cd6bb887bd193403956a36123ec210830de2eb271bc - -g_scalar = a40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 30369ea0ee12356a6aed101a5295e728e964dc9c9aabc3fc885253779336b2b939b1a9c697b17ee608ba5b61fde4ca03, aca079354468e4199e528623e854d7cfd16c7a85a1a5e5043b2f7aab5590750c3a769ef0df9f47c0e081e022c8e80e5e - -g_scalar = a60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 6f261a720ebf3f5d30519b089ab91b5eea5b069985bbf511bd196739a548a22078cf85c78720ea377868bbc67f777fd8, f6f0e6c179d0e8c66d82e4b6a56ba80bdc94cf7759426145238dd0a4ee913d94d5c64a5e614695e2776b7343033e612e - -g_scalar = a80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 33a95de702001e8cafbf32372a69ad0d093c3dc2769de89117779f5e7bbc58fef517c925b79aa0ebee521c0af93098bf, f259795816fa1b16e5cd9c39cab3387104f0bb334fca052ff1c069251604a646b379a3f425bc7d9a3b30afc73410a2b0 - -g_scalar = aa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 35edc49ca54239bd0adc36938b9046147f82050a305601877ee84419f5dfa296664ca68b46f5d9044033ece91c1f582e, ee2fe77309f54b6071c9dd5cb2a538e9b04cb2d370c923cfb180f8055004fd5934513baccad673e88e0ca3ac10854021 - -g_scalar = ac0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = a1cae78c7b491c4d752d98f6018d7c6455d40c1b2eb7f0fd55f7680599440d4bb16ca18bd8e94e49291d65c801189d9a, 7f87b4412a9a02720deaa373e92656f4583b336aa5683ef8b8f9498dfaa9451fbb48956a3ceecd27898fc8c78f66b8d3 - -g_scalar = ae0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 3c9e1bb5534739e879ab7a5bc5b76b4fbe21ff8d02a855fc4fd1fd2cde268c8c809a6b6cc5a362e31ee1b6033b28bcbd, 9f8101706c09daffbc05ccc588e874af045f5abf2690cf6c3ac1c2d3f29402a2c2a2b45d85a211d06ba4d9a7a58bbd09 - -g_scalar = b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = f1d5b458dc7dd67fd6f1b8df647cad2f805b4048e097047f15b28ac7b871c3f3ee702764a35d24ea8b2fc4e96484fd40, 5f6ec65d882935e193ad20e74cbebf1a283ed89d28f284f4af14751e95148b55f6185ebe21274faf324c529c25148803 - -g_scalar = b20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = fce39cd1e1a9d1708bc1da4093b5b983b727f6a0f7728c1ae7f34f712b796613950ef6a86c660602cc862ba801631411, bf09816bd0a0afef4270cd9a7eec7bbb142fefb1e4319697c10e9f0a2c74217759ba530e18d34abbf19e723e9493357a - -g_scalar = b40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = f08cbfe771c4d06186628102bdf579e6675f12cca4fa74a94ebfbda7cf3dab12907e4f38199c51764b0c7d0c69c284cb, 83c09192eb103fe01c071597924baeb18d978a8110d1e8817cad28c370c0b7bfb6d0d48b4c7279159dde390e03bc1cb9 - -g_scalar = b60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 0e1f061a92f572f08000fb5849e023a3884a0bfdef058b6faa278acb01a177dc1c919775c21b9dde3169bc090cc65977, 189092064329b28b4e5917c682138a439f26e75ef93913dc44f8c04af09a402421e6a59d820d7e6d2cc96f2fdbe0247f - -g_scalar = b80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = e4c35c2244ab2fcc5bd45adcdc6938b91588c4712a3f012d38a1ec5ce16b874de239b1d404b6fc45494dbd2665925506, 56eb022838caa90104616318263ea256caf679765bb0fddf3a0e55c7982a492892a9c3b2144fd3ee87cbd9ff887108a2 - -g_scalar = ba0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 2d2542568fd9f423f6d41b65310fafd4a5591868498f151f764ab40ace8713c9023872c88f2d14ff40fd181041ad343d, aa4016646be126ec39dbfed5502f7fcf94945e512d32ca7a20bda998e6d6f6e5538bb2f6e19b255d35a163172fa4ee80 - -g_scalar = bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = fd96bd168940c7665927968beb0f6ca5717c302a766b69dad2d9da967e155bd5323bd638835a4edf2f7de141a48da000, d35a825190e43169a836a6ad53b7e6e988f31e162314c0ce7e639523a3d57aa84ba9cd8bd870954ff89f7539a334fd71 - -g_scalar = be0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = eb7c7b187673dfc835238e9ac5d8b3ccc2493d3db86726814381646777c6b7eab211af35bed7aea0a101c2f02838469f, 8a072506b9ede54cf5d581b34cfff8097502808145cd4df20fa690f0143b29885304cd1869ee2b769a08446474ea8788 - -g_scalar = c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 024cdcfd74a513932dcc51180f94f4d767ef024eb3dbe034f4ac2b677dec20d2f9fa4483d8b4d6bcb3984b176c0f3509, 053113221defbe00a0c0fe6040411c15eccb0521817bc8d1b00ce5567062cb0bffc18f81d3a7414ff1c0fead20e7abcb - -g_scalar = c20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 217e60f334f621e52a4d3ec6d979444c99758103696866db3ee3d96da9de154c65382a2312055ff2a6730cb7311cc98a, 2acf783576e3dd6ef3d9c0864cd087f3366b49a4ac4b2b6c5e9c62063177abd6d7856a5d5d3a2fbfe62886616bc56f0c - -g_scalar = c40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = ab3ae700d1a378c565bd03584590bf03605e7a32d2e2bcf1d69b7c83177305ff6f206002d878a97a74faca8a6af7e742, 7708617f1989244e1e704c3bd7924df112c6d168e67756b182a18f03492b01d483625ae0a7c451c6037e79028a929b0d - -g_scalar = c60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = ed111a7a3bd0c935557d173489ac563e8476e71696aae3352dbb2f572373797325d250419c736f9a583dccc1918722ca, 58d3857219e15bd18b377061a65f4b1c2dc9e0349fb5102e473a13397c60ed02ea17b3b814dd3ec3a47ccef10b0615f1 - -g_scalar = c80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = d363e435d58d42d2d9f3982e3ec5f7ff162cf27f36ba3ceb1ceee947c3f392126a55edf1c354f4334c98c61d097bde48, 0a4f9c10525dbccf89d23e8b6de529945010582e923c1acd61d94ed8d7c27fe7d916df56ebfbf51c2ee90d7bad36681d - -g_scalar = ca0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = bc61bbaba368819180d7ec75226d534da72e9ae08144a60f51e4475e9f97151bc404defedbaf8b42178b590f1c477d9d, 730cd43523c6c257e43c1ebdaefc387258eaff8bc9a218f7f088ec4816bdea361c74b961c5a091ddd01aa30fea2aea81 - -g_scalar = cc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 218e7fb1b71a25a46888444f98a9add79be8a33f67d61b2ed78ecebfec57d967a4af7a2d749862107778fad7e65573e2, 68fefc83f624665a29c25cc3fe3bdeee3a37965f71fe847b23692f85fc6837ca2f8610ad11a52cd9f75a6b795f46323b - -g_scalar = ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = bba8c7b11cc64bb5a6581582454dc4f3d92b8ac4d708451051375d6af7acf0bcdad4e4b8dd0ee7526c79a60950a78a78, 9497fb38430bdab3d55200ec8918e0d0587a6ce79d8b271c6459e58b6aad83062af531adaa50ba8b6b8c42c89a52527b - -g_scalar = d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = ced5e4cf2b4313900490c970f5aa2fc4547bd050b48bdd872e0bf749e05b18e763ad235fec1ceb74e222eba4a4dcefe9, 925a8e7c11b85640d8ee724f8d890a9855f7905e50510da6a4ada2305037fce844b72442083b57d407d8270451d2898e - -g_scalar = d20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 5526e694909f969fbc6d93d12b1ecf5da54322ea0b5c08c1d151433074d7b4608b7e7552cfc6aa6e17f7e937cdf7bd50, e8d38ff491dff6592d1f6672746949222745021fbc62869644b0df3d2132566a477480ecaec1966d7195a9a4726c431a - -g_scalar = d40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = f79e2d39b2e8fac1bf3cd96c034d021b15245ac616c11ef494035a1f0c82ab81c749a6a77709a52b8357d8bb460e77b2, 6cfe44c63f488c2e89d0c4c5da7830b316f34bdd553a8e68b2584aabdda9acf2341f9b53b3143bf7387015194b6cf1bd - -g_scalar = d60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 7bd84d4848a7403bb88ee110d4c2aca40e7ca13cdcc93ab719e453d26360d0b1160eeaa784e7e36db3ca02e33c34e954, 77eafee6b4388e98009e51eb2912e1776d2a36102ea95493d118e90b7413e79a631998ddb8d0fdfc2e8d3d031ca838f8 - -g_scalar = d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 058ff1904c89c9a87b6e3e4d1f54ef38a901f2551406ec90b28f476b59a7eb995ea6a57c699397bfee536a26d4bcaa59, b33ea619b01958523e1957812ce0f9693ebe84466964b9ae6181fa1675362f5dfe98793145e142685690fa10fca546cc - -g_scalar = da0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = b5f1a6c4605f84ccade63185d292887e6000e8b97de5f75dacdf3c75960857e5a56359b898797f27f6666dbd1e720925, c44f3da9c30ac7611159b5ed472b66acfe60d8144ec4fa790f0977b76c70738cc26cfc824b2f4be14c77f69461c7e0e4 - -g_scalar = dc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 13db3201919c187099c2ff0b948ac53b031fc087255e8c5eab4bb08268cc66781f72c1f8911316f6eef402410ec537ac, 2221798b9f4337d5e08e4213817ea56033a9fe40bd21effe748d2e93d97167e2bdffa226ff7a44cbdec81fd312057a3c - -g_scalar = de0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = cfc013b68f5c17418ca6fcc4789fbee8efe3a068daa3ed3a85ce557932132eca1c048aa58f30fb6a7912ca4e168fecd6, 68c1cbe20070491721f97889d9a0fb29499a28ed6765f23262c2ddb7115a89d837d96dd573be5978d1986f75e6ce6f9b - -g_scalar = e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = f58b321ed1f9bce830bf1ee34f114abc72483dc5b3e1d84f0eed233cc25c696a5e9abf67d640c2a1da828fe556467257, f0d0ced355035432d8afda341fa2f06decf5649dfeef88629da43ceb72a982dddc2f105e1e453229cb26564c97524f33 - -g_scalar = e20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = aaf3726a32ec147e505f5eb8a58e699214f3ee55fc5144da5629e0626bc5035c0a3de8f6666dcfb1695089a73532e60d, 1732ab634996103eea5a145d3af12f79b86e5b4bc6884f242e81ff821a1d8e28f49ce51b7ea1eec7496fef2e71eb7799 - -g_scalar = e40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 7f517c9c01f3f401b21e275d8b991b2903c6831675f0f13991217a6be34fe2e0e4d168e75b0b727bec22bb32205a5301, 8f1fd1bd5716ed9b08647a158d2ab0ba242cb06bbfd24bacb88be15c7cc1367dc5470808504514b1bbe95d19e55e49fa - -g_scalar = e60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 8aed67b865bac360c6dce3bb1fd8ee17442ae6052b0dbd5d807d8c25d5126552b050787598a85112aad13b2f80f89c8f, 5762947321262e1fdcfdd945855bd37a8b89bba354066b5b6859bc5ad6787215a698c82256f8a4889641c91279038efe - -g_scalar = e80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 1690687e164c44ba8b5101310dd4e1d4b120589021649255e7d94f4697b97d7c243622f9e8a47507e787054518ba5236, 9d3eaa58c5b0f8e74d2cda1c81cca7deccaddeaf391ad03d2aa11707c463a975fffffee70a684c3d65bb4d8cf100fef5 - -g_scalar = ea0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 152fe43844ecf2464c549c0e5375bafd29a9b8a5787c26f8979564774ff41b268a370b2f4897efbcaf2c49c193eeaaeb, 90ef55d72e7302ed5e5b65408484a45a931392d01e03117874a6973313129d1a10a3f1f5b62aa404b45da2103332ff90 - -g_scalar = ec0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = d4b25ed3883ebf03e1ee7508c3ff73564f4576a12c9c77446bdf53fc46c1f31b3024ce311a7194613d92ecc18f8802df, c7edb5db6c742e1b6960312ff19fa66aeb82b33740ed314336e175265e9693f5376ebbfa11ecefa91dc46052420c3ac9 - -g_scalar = ee0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 1a0ab3fe3e1aa3b2da05dfc0faf576dcb6743901254cca1a54fe2ed1821745a31e6d2cc15044f8e3aed505fefec299b5, 5c070feddbad43935b066cdebe027cd079d50a1f256ddbe05e3587f3fa6333404dca34fadee620c74dfdf356b6434dc7 - -g_scalar = f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = edcff8331d6dc79d7cfa71e1cf1cb8b3c11c95a22527c1ade6f0ad9bc0579c3e593f085a6dcf56bf5bfa10cd1ca459ed, 79d53dad0091bc903fb148b8d721d034ed555e37e2606ec054c38b71be3a107bbf620096144e11a0581c4bbe432521c9 - -g_scalar = f20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 91d26e18089b6194c58fed0143bfa89695f4f8a7c76e93579b34ffa032e7bad15a5e1b61f59698d9f12d87d33dad94a4, 8e5cfd1643f60ce9edc913822c32d8d857d63f10b73137d07b6bc3fafff00c4321b9d7a0a897a35ac218da26d62bdedf - -g_scalar = f40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 4a95f7f3ad4777a41ee7797f6590d0ecbc2c3b8d7a81382003d42e96afc190c3887071bbcac96dab4b98cb69c5c8a182, df206f19be8f2e7e1b00fb28a2171c8b759fee1c8b53025af9874bf6974c0a8e7f8c6751ad78dab67a36de4e2a8d2736 - -g_scalar = f60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 92fc21e8098c5b74dcce4b866dcc347a56485fc5055a1e76d2413d03360766ac3a0699eb49cb60f46fe114183c5d5268, c600f4375b6eb0c0b53e970c73c2308a8a45d99a9028c820b1cafe29b04194d9960ea3a5924cf515e18ee91f68707ae9 - -g_scalar = f80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 0b2d3d2ee01df4e90f17d421a6542ac0bbf2d5477007f2e9840210ee61ff9d1e7734dc91f8fe7a42e6bbcf0bf8ed6302, 633a2ac888531d81eef1c6710b09ffe22dfa176cc44153bbdcfc96ae6e50d8368362f7b1431106b7520e4fbb84f3703f - -g_scalar = fa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 051860f8db9d37b374ddf359c387adeacbea730d7b0b1b3dc9ef099a6d40b18658ec13e188173f1b430f3082d997bb97, 0879ac02fd3f45cb6abb20c30a400fcb8be482395c7d44222798b7f0a1acb1c52dd2fd248977979ad65443bd231491a9 - -g_scalar = fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 977b4bce597694b4780ec65de871b7928025224f7ad39d9aa441e5035bcf0e19dc504f01d3ce296729262b6d7636a78d, 37e9158235c16a0f6f7f2fc47d31bf61f5da63e0f8f90368b669c1d60c34153a1cff87ac9748b10ee05eaeb87fe3ef11 - -g_scalar = fe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 75c5b10bcac05c018d3e2eea122e7ff2b2f9d05f3cccc6b797a1f8404db70676b7b8f12986a52261b0428d6baa542b1f, 741623d5932bbc56910fe7424a0eaa765b464e18535a5866c6b4571c54a598e1c51a6f08e6edbbcfcd80f0d9b5def90a - -# g_scalar = n - 128 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528f3 -r = a6661cc4c241720a0336aab8777a16d2f313389118eb5195c0dd449e7c1c39840f4fa5eff21af80ae484fd9f8258030f, dc62354d5d8853a4d9a811225a86e31c4fe0e1fbcb5fd594a27a5f1b5fdd385add7697999b9e1c7d987246905810532f - -# g_scalar = n - 127 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528f4 -r = bbe34e740f395db4a92bb11bd6e0f09d96fde63874231e0feef28f34522c62792aacfa4c569604aff7753246eca101ec, 3816d59e1c6b7f960c297cd1c984d06b61d61cc652e7f4f1772dd5bb5b983ae5a9674240fe752a555591a623406bc306 - -# g_scalar = n - 126 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528f5 -r = ee82cb5d4c686f3145940572b53625a29c14d45c4d73654245b97c7577b60ca7135cfd8fd9f0f5f0ee101c5ade346cdf, f84cc9fd3a1e1353420c5b2e50458073066298ab1fb507aa068cd344b0be463beada14c64035692c55eec94a4f3b89db - -# g_scalar = n - 125 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528f6 -r = 03b2dab245cf48ae7ad6ebad036703ac9436a8cf3450356d50ea65aa46f614e270f25677719d6ada9612b8bc3cfb44bb, 76cc400a8d0ca334832a58b44ff6a7fdaae0be43de6e7855130ac9be1ee6547020c048ce12b0aa5bde6ac2d6bee8f9e1 - -# g_scalar = n - 124 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528f7 -r = b4bb1133ad9267aa51cb20d25f083167238df4864cb95a00bdb4385fa6f8277692f3dbfda1435507f9e5ed57d99f5989, b6576363085ed416461662acc304f6746abb244d2b1491cefba31da3a16cdef2aa5b6ae337599a9840b2ec55b0eea403 - -# g_scalar = n - 123 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528f8 -r = 8e4a4f6321dc82a6d4d6fd78550418d24b3d05ee4295440514a9c3ebea80907b46b07d4a2a1018fe151198480c4c0b80, 8b3b9d12e5867522fc4543133da330cc757954f0b670bb84a57d50c160cf08167c3945fa8f877360e41b28095e874626 - -# g_scalar = n - 122 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528f9 -r = d109b62984083890da5fddab7e28aceae3da87e136a2812ddfffe0dd4cbeecde89a9a5422a1a0fad53b912fb21a3720b, ebbee398404882a8094722669ec58cc4fd488003ef88503893198baf14b2b31e0f1096c5d6c0669988bbf6a48d72c11e - -# g_scalar = n - 121 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528fa -r = 79cd3f1e3891db8165df3c959329f7e0c29afbd47772778a6c33d5d6ba6744e48c9a16e3a896ab1e5198ba40189dfa8d, ee51125e39b2f6e9b8c2f20607d9a48163e2c65748e90de46aaf85ab51b276790abfb09316fd719d355570f5287bfe64 - -# g_scalar = n - 120 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528fb -r = f392f9632f3b0feda03a6787986794dbcd411e349499fe4eaf07a03eb8994b40d3259f2810248af41b3ea621f3c6f15a, ac678a7865e25b379e40a6c0acd1f133c36985b9b3c8225b33419045c88737c67618c264ab283c770c8e99083f75edc8 - -# g_scalar = n - 119 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528fc -r = d2fc5c57998b057713167fb8ec9cf4cda4630ba1875fab27cd55e7b421cf9dde59f9078dab73bcc4732595ac7329d8d1, 4e9ac9d775bf5a3265e44e536dde485c146135436ef6481a298859b7662370b84d24690cf930631489ec9f3fa00ae490 - -# g_scalar = n - 118 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528fd -r = b8027be64a5eed689d19bd63befa48da4496f5a023133af12541da528e6a2448d1f2d42a406775a028f0ab7a080bfca5, 546c7955b5c108186699c66069c511df0caadb2f4bbafe3353ec47eb620c028bf87e6b6c22a321dcf7382a5e694f97b0 - -# g_scalar = n - 117 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528fe -r = f26774cd7823568b517a6bae23acba53ad9e749a9aea738d613e5294fe8579619532b30ea229d070fdcce7a80723559a, 8faf654f7d4f688c85ab9a7d400ea7a4598d64724d867b7e92663fa0f95109fe3934c5b31473fa846bf8985f51aceeb2 - -# g_scalar = n - 116 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528ff -r = a40dbba76a0c98442700a45b812fab5c2e56dde7119ced404060d22edb6e808b6d812dba7e29445309e7d232ccd1c14b, 3f52d8fea7e3993a82fb0a4636ef3bfd01f7b3c0d9657c7d7e64e9a13ed8e9a24b6aeb0e16771d06f5e3834263499cfc - -# g_scalar = n - 115 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52900 -r = 274c69657350982d84442a4123c50746a97accf432406bfd33e868f326a488269120f7b3a043456daa4e673b34498f56, 3f3a420930a5ee248afd61cd30ede0fc2065cbc509ced139ff23c6477b75a478c140e24d13851dbecef948056a236155 - -# g_scalar = n - 114 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52901 -r = f80f423bb48af0e8e53bd76b6e4b3bc543c2a97d5743877a559b40a286dcfd8831ec9ab137796cdcebbc6b4cac6a280f, f338e5cdf43b9b91b66b98c79dfb532f935f8addb23b5a1725af72187ac62ace0b58d896d4e3b0bac6f969582b773385 - -# g_scalar = n - 113 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52902 -r = 869fcd17ff86a9864a5bdb048d7fa0c2e9815b09139b7fc5e72215ef852bd27fd2c616d1bbe33572f85b86b79b0bda12, 5ef4c20daa086bb4c2f12e83ce4788a84080212603ce449896678dd5184edfd5463ff80d2999b2fbcd87ade96e250941 - -# g_scalar = n - 112 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52903 -r = b4a6714762f45dce83f2fd2cd8296a52fb25e37c9710b70b2b5609d5504c81290d20370a5d66455a2e20654839d6e2af, 07d446bbba12dfb2465e614a83e7debeb8c197883557b977c1811bc5d13895e7e958e332f493b39b57e746425ea39593 - -# g_scalar = n - 111 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52904 -r = a158aabcb9bdef14c3907b518b02667f27552012c727be036744720b50447fd908e0805000765fab8db3b74805be74b8, f6358897f7d8625639b4b847dcff260133071e06b514d97a5d00ab436c3cd9e5ef6a411a1cfa0469552205fd0b633a90 - -# g_scalar = n - 110 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52905 -r = 26956a5b83e5bd0bfa63d67feafb4dc8bdc1c92475053732ce481ae68d2624c8a4ba394e85d138d693f846d4906ef776, 3a600687ef91f740488a5078961bbddf9e28d8d18a3fa9b5406386e38916beadabd914f900eb7ef4053d8f0e8f351c5a - -# g_scalar = n - 109 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52906 -r = 6e3c27bbf13f24033cd18c33b9cff887a911a58af0d93abb5841c5f8a8dcbdc89c7d35833cc1184b0efc2e27b2deb1fa, 0b3b93a9e67388fa781e65b180838a978a52cc350a5ebee2d24a804b0a9f250aca3226f3abd6b3faa4c6e8ee15acc519 - -# g_scalar = n - 108 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52907 -r = 2a532f0ac16a417882f24a114cb0b8671b23e3f7afef0b5d589f30567bb8dad3d81b74529a67044fa26631ef443c7161, 9d656f406511cfc08b664ce6e12f221cc3a74a19c3bffdb67b27e171992bac6e567a255c91b54316d892e8f1bfc7c314 - -# g_scalar = n - 107 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52908 -r = 77964d793f740b4850994c4960a91622ccd4f456753f40d027c6ec25a0075d4673c21e204f761490d718e8e1f4363f23, ae7d58e8d503120d1e26608738bc71c66a2952ba479a6b9cb77c8b2e5d80c05f7bb038641be6c2860b36aa1e09b812fd - -# g_scalar = n - 106 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52909 -r = b380f170bff65e1c2633179cfa6a8ac6442e0f1f36905deda01780587776c7fea1295b179d724fdf3d303c72138de192, 0e396ebe68e2e2a44a5ce29540ef369ff960b81ef512e7b4e1f467d4b9cd0f5af83cb47d7e4e82c85099312a2a6feaa2 - -# g_scalar = n - 105 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5290a -r = d0ab3e3a99ebd09c022c75441a806542862ef39c275075e3077f30e5dd2c23bec367d6aea6e201bce6e91985e5802845, 33c518d392768c5a31450ebaead0e6dc2c2a856ab8dfda9fc8d3dc5656e000725a30c9af5652ec94829810a0266fd747 - -# g_scalar = n - 104 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5290b -r = 7117756e39dcddad381f4f06f473127497d1e75fd9f408b53dd4f91683002cf1cfd364cca03bfa6367126ced901410ec, 12cf98f9c880fb304f9bcbcdb1d380890a0bf8ce1470123e0caec3c46361a0625c462290dcf3d0ac1df90ec569277518 - -# g_scalar = n - 103 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5290c -r = 590da88e64671048113a7902e3da530d1ad95a94f23d84fcd3f0d14329c21de1ddcbb10eafd402bdd24cabaa21355d5f, f3618ec88d8c2412291d2a59d21bfaad9fe42e3ca7052e3c681444b12790b201e5ad1b1719d191f40b5a7d7e6da40f25 - -# g_scalar = n - 102 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5290d -r = 180783fc39489b2827c614bfddbdd7a57befff1cb90a319f1c0f6241bb2863c829591fcce7274c8803802ee80fa4f860, 9f5b2dd5d9095a20b3937037c7e8aefa5b80425c412a1ada6172a1f445c5fdc4ab9b4514e4c8c458d576509b865161f9 - -# g_scalar = n - 101 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5290e -r = 7e2392bf7bc814db9cdd943547a18710d73b1fad8b8b5cfc73ddcd2c2eccfb1ab539f5fe50c66d708e66c6f69b8adeac, 8c78d2c9e8fd1e216f649a90bdf13efb58c1e2650ac17fabe010be7af529796b001223dde2983fb26ebe6c4093708b17 - -# g_scalar = n - 100 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5290f -r = d884d30b2f03f287419f4d2eab386382b0e595a155fac50e100134e2338c10e0f9d9c4dbaf282e57a350c4fc01834066, 12396f36fc1d034d75751338b50246d6ef016d9f8afcb08dd5b22cabcc25394a75eb8dbfb6dd6680b581a6ca09f8ae9c - -# g_scalar = n - 99 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52910 -r = 648c5f00bb28223ad49cae0982d9d6bdb9b2e6b479c8f8bd1b41177c708ba469bb4f9e0f41aa174e6e3835a9b05f84a1, fc1e9674cdd29c42e08b6c4e89e6f2672908a6272e5f15f7998aec708f7db81d01cf69217e5f5c72fb0b7a8aa2733b5a - -# g_scalar = n - 98 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52911 -r = 458ac76d0f40ec396e6880f15c434085ca861b4d97740fcab1bcd42525fc2c50f05e0ddedb37f6ddd2872262b0a9e00d, 588efb43001fde0cb63e8243d9d7df8c846959120049ed20ffc36e0aab1162a528fdfb218f772d25a02f6b017b751bed - -# g_scalar = n - 97 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52912 -r = 8c081acd170d807f87b1e51bac06961610241ed16fef9d9d8f273e3065278f98c1f0db004a49492c7cd2035d7f5c54e2, 7c3948713b0fcff9b3c1db6e3b0a969b34b81b1287765c61282db10bcf1fa22b1b14aaec2979a40bffafae16e38c4a67 - -# g_scalar = n - 96 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52913 -r = 8bf3dccc39c18b96cb4aa43c9741eb4226de4c6581998af2ee21597e52ce08f68fd61e31148840d4dc5293851d15bba7, 4da80493a5bbcb5b311f7bd0a2a97f47062e615f37cedab47abac690cfa11b0eaf81dbf9822783c6991e2a26278d67b1 - -# g_scalar = n - 95 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52914 -r = b8f42fe52fead1e4257b0bb5ad7f23e10be90befa27d2b794a607b9d0ef989779f74ca169bc0cbb10fc0f2630dbc3c91, 4492b45abd20d7919ac9b212aa546c0673f09b17c4384a6eba33c0eb22660603afa0181302869e8221871bcfa06c4a6d - -# g_scalar = n - 94 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52915 -r = ed9602dc7912de8d89dabf40cf9eed19f4db0ad3ad1bd1192e2bfb0c25998b5d4259f70ee435a0deb134a04174225251, 7bc3be41639313209fef39c6248c25eefc0b0623143223f782ea0dbc32343506879cd4b6bf767610a7a492e83e606dec - -# g_scalar = n - 93 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52916 -r = 813355b3430aa2d72df91689cfd151547a3545de7cfdb00e1c634764b16142cd1b1cc24f5380675eebd14d71e32d80af, 3f8e0c70994062f638e4c6ab6f5d971aa8d5bda48e98f234018357efc34f9966261cfc071fc54486e9231d377a0d3581 - -# g_scalar = n - 92 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52917 -r = 1031cbfcdef715d74efeec75e724f56cb8a88d32c7b6b5a626905570df79b6048f97bc3df1b9f55b91b6e58f1036e450, c1f7f4cae5df901da1bc3e946f0c72e2c2125f7d57596e065b2978e2b8d52dcd31169bb7d9356b23551529f1d234dcf9 - -# g_scalar = n - 91 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52918 -r = eb0f52348bf223b0e7e7382759dc3eb7b04b977d42d74f5fa4f6e534bbc2618a35c2421b14ae3f635dea409c9cba0858, b83538fc0ee9391df4f64c4265477b8734871f379c5d345ff62f4cce6dc9cbc12fed7ee4c021d39266e3ae99f038aea7 - -# g_scalar = n - 90 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52919 -r = 4347b760969bd7f7b560d7e63dc77e7bb34f09fbd045d31e28bd6aae6e6e8e57672649def3c36ba79b35cdf7a7871029, 6031b8801482c98e1001a0af8dd013512114cc6ed63b8db6ad0d3541ec292413dc3151d601531272d0e9e5f8a1ab691a - -# g_scalar = n - 89 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5291a -r = d0d105de164b7361d63dd29d19e0e2b667d3644ac8e55b7b463df30b0096721f18a49fdc4bf163e00c62094b2d71d4ac, fe3816c64720c80ce2d7dbcabf469d26eb88fef6f4b21b3f9a330faed255dac2879e48e3df6c30811a79a3b2fde8e771 - -# g_scalar = n - 88 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5291b -r = 9398236759e97922f158f85541bb965c782840d1edd794907774056232329baff0041e2423786267db52eb03d1db891d, 3be5902bcea7c2ade50d59ce11e7a67cbd7b9ae3c198db4bf80683e20745bcfc590ac7b2d0a332efb4bf33481c7b8873 - -# g_scalar = n - 87 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5291c -r = 1c1b3417a500bb22c4840320387b6b2ef30a928d9a3c3af1df0ec1ba8b80919559424730109677754f11a02e4aa0372e, 60fb90511669019742537e77f184b248ce6bbe8a18aa60f62120dbab067b576fe7db928a586f697e96f1193940cd990d - -# g_scalar = n - 86 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5291d -r = 94dc48fab7e8cfcde61e6c2984cb7e449e30229d0a06f838361494cc0b162b571234181c1dbb4629c7364268d94ab449, bc29e690721b7a85ebc3917cd36d209e5cd08f195f3c1e5a8566ef2afe3b86975b01a09f54df4c80f281bb0e764997f9 - -# g_scalar = n - 85 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5291e -r = c835025446e64d4db0a08fe1114e6f01d953aaff73256a577bbdcadd053153d82148bbb88207255a935d2cdf9b06762d, 93de726d366c0dec5dce7c601d76ae6a3c2baa2dd350ad0d8bdd58d5f4141ceac6d551fc8e04169618304528ff243ea8 - -# g_scalar = n - 84 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5291f -r = 00eb5c040d16b7fcb048b60e740c04a52686cba73934e93664a8bdc7c791db8094b80b8f691e858b3c712c3c6323cd05, c1a39004c52046be23675426bcbe02b6781c1cb2727eba5feb1a8d0de33161f1600347ae28364a4f7f3f276fb2237d89 - -# g_scalar = n - 83 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52920 -r = a075b16ac03d7805c25baa03520a8926eeb88ca1c7a4aab58487aa0d4a6694eb44cf847ed2f05eb48e61f0bf44e94071, 88c201259631e30648d5832fa9c3871bf55d9d45ddae432530de56a8b619fbd5b1c3ec8e9ff69bc13ca85b76ec268f3c - -# g_scalar = n - 82 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52921 -r = e6db24057f12bea3dfc6d038305bfc7c87e75dfbed69216bd6021049cbfbd0c2e8c09f59ec5cc866783cc5bb88f82a12, 9ff65a61432cf2d79614842d0111801a128c900058cb66b01bf2fb109f97aed67b05c629b44ff8449b961eba485c5d2d - -# g_scalar = n - 81 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52922 -r = 0984c2e37cdf344f11238a859f436faff2c3118feaf138afd8cb3560e07b1bfbde45473e86c087853cbdd3cbdb06f682, 6228489f68ba4781a21c729c51d8f958fefb85a11a22d872a9522d0fe70d9c816a65eb2a8c905dbf1ef7c3e93c7da7b0 - -# g_scalar = n - 80 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52923 -r = 1e8568cca446324620fe8c27a715ace6dd2ec6d351fea1dc49066428b121360923e5c6b90e42d1f9194924b4ad0a415d, acf544bdf9eb5906469f4a101132751bdbecf9c5ec87197043856fc39b7b9be1671680e226dc9c88ff3dec4503318195 - -# g_scalar = n - 79 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52924 -r = 23b245a5d53912dab3cc818a7069cb7c491c312dd15d01f0e58901a204ca55712cdac248c3b74585ca11d9d4e9a6c224, b468d707e2854daa6be399360cfd7e069e84cfe4f79cd14cbfcdbc161146a13d5fad14c0cd88aaadcf087c75594f4e9c - -# g_scalar = n - 78 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52925 -r = 02781ecd4db639eea1560f9775dae55bd35175d9a506191dd3338ff4b743bdfc47842147688c1ced3c80145ddb9f0b60, c186abde517042932b85fcf8b1c370d37bdc719b3b585b043b78f3624319ffcb939d400bd3ba155366c5cfd3dc231ac9 - -# g_scalar = n - 77 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52926 -r = 63d23607fa5c9816742e060b28a126270ca930b998ce78a327ccb6c0212a6125114a9b40334793a79f2134c12a501a3f, 2bb4ef8acfd302d1319e3c1aa8d6be5922fc6affcf36304deaff7af1b602c3c1cb3281d00cb2e2dc88b2345c13e06e23 - -# g_scalar = n - 76 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52927 -r = e677b97c61007b808b8d434e90bfa219a7253817daee85404552fc68956bce558c547a520c8d74e1fb2f775e4230e336, 1878e3cec6c847f09be8d23ce6fe11ddbe445e6ee45c22f9585965db1b07aa3f6914734b9fcd9c064015190e08e5438b - -# g_scalar = n - 75 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52928 -r = a1e0ae0fe6ca7a154a7ee23df367b5c85d4631b4392f8f665b28cf8991549a96c8cbc40a420ab7ef6b5d4014867303de, 02bd279dbe829a9d2878ffbd6a801bba9b1dc61c0fbfd1e2989d5496bcf5128d5ace3d3aaf0546fed59aa11fec605d83 - -# g_scalar = n - 74 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52929 -r = ca50bae743ca3e45a0dd8e3cc10c4f6c40d420cb5c36dc4c02ae1f9150f6a5cc7f3bc516e1b24b64126d4cde13dcbd9f, 53cf2923ca46546146228db7428f7a38a5581a9c35e612f0dba73610ec30dd42ca22922f8eda2e960f8b41171022d4bf - -# g_scalar = n - 73 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5292a -r = b89d83e72bf4673cb08db04de8caa7d29029a9252d3731c25b8d230bdf8b9b24a9c2a9b11de8963b43385c32d851a702, 909a50c483675e9df4ea8bfc78479c8cfb1de1fc6dd9a5a650603784b0e2de90607649281e1729e95702c6411e0dbbdb - -# g_scalar = n - 72 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5292b -r = 0966d45a6517888e2ac250f6058daca83b7debe494eaf32810757e2e3f599369f4445a249b234eff668240536434688c, ced3e2d0c97db2c54fef5323f68505de87ab07433c0f52c5384bc9e6546988b866326235288bc8f68aaa33871896c4e1 - -# g_scalar = n - 71 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5292c -r = 0b4faa5a537ecd702b123738fe255dda27bbde143508ac5493ba15cfe58d0a92bf5731b3abb11441c42ece45effefcb1, 065815d78cd52fe34246db11f8ec6a99debb250e319bc8c5eab0d7afda4c1ce57986c3b1f7feadc295bb2f7c22137c39 - -# g_scalar = n - 70 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5292d -r = 2bd44119aa9079b7d8436f83a2ce4101a4c793741489a3c09c2e8aec0cdf6d91edfdd44e94cf7a32bcef0b6a37548a32, bbc20af538b960b5a3a666e82c5892143bf889a8303249483375299a738da5821d5d4f65989e1ac760fbea436400d5cb - -# g_scalar = n - 69 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5292e -r = 59d65d78a3f735f42c86ee164fdd3ccad4bcc8b125abfd65cc66c8aa0f19981b5ccb2859a1115e28f8d3df74670c2752, 0432feffd8e2428590d361748ce985cdf53111b77d1299432ec51b76d42bdc5aa889629cba2c66b2fca521d883f3aa31 - -# g_scalar = n - 68 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5292f -r = f6a8130b3a7741e35508c2b38bdb088aee34bd1706035fdea4160def7fe6923a2fd77b5ae6018776af78aa17286ac2fb, 2b984f17d03b99c1263a29e0f60970b3d64fb6a881f035febd88176d8fcf3364a656197694e18dc03fd1299e8683382b - -# g_scalar = n - 67 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52930 -r = e462ca48e153035af9af3e4d90909d25556e637e6ef3d8f765d75edaa55d6185eac7dd3b0b634f686efc5cbc8b1772ca, 7cdd34755386b66bf695940fec9d3a06a66f48b939143ffce581ca12c0a61b42efb54e58bd87a2f9ad89c485f5ef612e - -# g_scalar = n - 66 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52931 -r = 3418c841ef19aa6cab34164b3870beb7acd0361f5decad089983c10a492b899ae22c691d99c0b909b60fb64e52990b5c, 4d78416af80aa2fb6d4b7f1128f293c5902cce5c4f2a515ab12c02e6d597baf65a7f2fbe3d3776f8930dfc5adf64cc92 - -# g_scalar = n - 65 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52932 -r = b84c3a6a5fd4266f8b0350b2650b22534597ec8abdd5f002cf9edc15edb63c80becda43b0d1d279f8e469454839b9679, 1590dad75aa44e365d7993db37060f78e689c292776299225487b4d321d43d98495b787bc5266a2cf1e927c3cf038606 - -# g_scalar = n - 64 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52933 -r = 4f5d5ab6d1b30e5cfc8e87cf3be44d56a309199dca57b7bde04b3d30f8a0580d957c980f297a9a37ed4de4f88e89b258, 77748f746bfb35aec11ed876a132c01792683543cfe01da601ae4440ef6f0120f02e3ad10f6e43fe4dec3960cf56cda4 - -# g_scalar = n - 63 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52934 -r = 1c9bf0b0f1e52d1ef6159e519a049f7acd7e35f76e2b71aa7a50f7458c949f8f6ce8ead6149a1896c5c0e6d7aaed89c0, ad44c8ed5f5976170a508471c8ca20dd237642b6682bfb72c44fcb17772e80e572c5a09ce13284e5c4493e0be7dfd37f - -# g_scalar = n - 62 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52935 -r = cb4c0a54561fedf2d194b7054b14d11703b9f1cebfec21da0c7d749907dbb9af1e659730c1fb476e49a04dc0f5acf772, f6fd33dceb6bb947353cdb137d3b0558c2daf76dd456dc649a9f61a62600f544a0a164df29cf3eba509dc2c1de25b2bd - -# g_scalar = n - 61 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52936 -r = c93ea049ef6ba0062366467300fe51fd5ff77ff2332982d06035e34f772ae08054fb5a34222241e848da1fd3fc60a6e0, 3b33eebae03967d64f59388dfeb992dcf225e6001ad8a898195877ac8f2cfc13c6b2cd3195160b5399bf0ee982c7ed99 - -# g_scalar = n - 60 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52937 -r = 95bb80cece47968c61bba736a55b527784b7c2fed74cccd40402d5c4eb809f85a61fada6fb4f60e8c711d5d1c425543e, 722de40f4b15b0aed603c4d7b76d198944ba5ae06b757c8a5328f47952d5df020f1f0b07197d55d6f606d524e914846a - -# g_scalar = n - 59 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52938 -r = 9ba039679267b6463703435b0de64db996a917cf1ed0e31564473b595c322738dfca6897f929974caf467ce227bf64c9, 00cc90edafb9aa3e692645f4261c35e6904cb4cfd7b9c3315330d12284fa68fbbe4248bd4cca100f20f3d552c5add041 - -# g_scalar = n - 58 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52939 -r = 104cec0666ac72e09e9520bf57acc87aa58db4ea4f96af4fdab9dc0015b0fa13341cf9d9c46785af941c5c257d0be180, d4ae66a086b256fe3f7a6a1caab704151ee96616f605a75e4a0ea855a964a826474b535f057fc7f560c08456e6d6198a - -# g_scalar = n - 57 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5293a -r = 814d7fa07a78c189c052f3eb1c99ceef1e9dd1509bf446e0a14967dfac4bbf6273bae4c1694b8b0db14ba61cf97f865c, f57dc465b4d9209c2d1ecfaad6ad3e0370bd843b8c37e2a4f29f454817f65ec288773da65e8c849a5efe5b7d548b4fa2 - -# g_scalar = n - 56 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5293b -r = 7772a913e6436cc1e9981ea6820da79f2629ba4fd1deca258b6fc785e692fdd2d4215b4fc7a8baa1483350a5ebb8cdad, ce009b71f07747d2a901000cd90cb631fa7d9e6db6f44a8d49dc5e5114733de2d7e8619237ad09b42ebedca4aac04be2 - -# g_scalar = n - 55 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5293c -r = b3fcd5d1690cd408fa5cbfda60f4554f6078d8bf085faeb3a4fb7867e3a142d6fd6622bc1718ec3cbcab5f60069f3367, 8b9fda8ceb31112b956e18c6682f05f9e8394a3441dccb07721cef83c2f8609d7d50dc54e7f59c58b1421183d7e0877b - -# g_scalar = n - 54 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5293d -r = 4576a6497cb8944248c075daaadd6150075134ebabd64a6acff00bd23c9b5a41ab2f15202175fbf411853add834e6c54, bdf1498c6f95d6b69161794484e14885e51e22682ecbbb44f40786296c4bb1587244a8e288032e0bcbf58990cb52125c - -# g_scalar = n - 53 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5293e -r = a8ba8f10e0f383ea642ec4e615c3aae2cf485c74a7c54b160b0110610f0422a2daed7c268a0915cc3b1bddc6fbde49ef, 120d1c1481336b7a5236c265b7e89a1d2d38e52ec6f9669ca8795e65b1d057c014139bbcf7610574d5dfab4c6a9e7afe - -# g_scalar = n - 52 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5293f -r = 4b820d9b31d83660252b48f5cd8d7d770bedaa85e5377c005687d1dca6ccfd358a944b316b3262328f6468656f9201b9, 3a33cc62345e02b4dddb9a7991a121896f1d51528087550792f5e99312c3c484f576cf02edf74605561a50c4351f80ea - -# g_scalar = n - 51 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52940 -r = 16634a504f35cb3c3dba16e9daaabc27464ae8d241a84de7a5e0fb598c5a78d91947c0caec4a22b82c4ccac72070ac8d, ae74fb823455f268396b761dc8c0e5f2f4ddbfffc37782c925153f3ca8fabc0ecdb2f9808ca622ca523e74074e9137b0 - -# g_scalar = n - 50 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52941 -r = a820e8303a5d50d19cbf755b46f97ac7beabb91ac3c90051510bd675cb2ec3f1172cfe4ecb5af900a96763d2fba32d1f, 90a705748e7e3d5e90840581ec5b08293e4bbbec6ccc1bfa9edb9bd0f0cd4ead208238f9cfb7b9e57c560e82cf73baba - -# g_scalar = n - 49 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52942 -r = 0b470bb250e4ea9e1197832bcea03f5647c56c115b6e3386a669156542e365a48ea5af63a5ea6fb8fa5c3aef697136c6, d2e33ae71d74d42488e19bbea4a841d0db78122a807d422c03bb7911b63614167293e8b02db682b7ceec38bdec4da8ed - -# g_scalar = n - 48 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52943 -r = 66e4794bae7d740062e5c5d3e73a1bc940d01ff53a7d2f3c4f504e06ea52bef92d368d48e7f30c2b3ccf806ab35bf6cf, d8e1bd5ed9db5a7cb7154ff14a36b9d3d9fa35ff625d5d35a3c35ef2fb454679ba7f9f615899220ec2cf9da2a0010ced - -# g_scalar = n - 47 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52944 -r = ea5b37c5da233371504f21b1570cf950780abff7d878acd0bfb185125f5b07a065c788785f0dc66c6f888f7df0c668ca, 536201382058d574110ff96ed1df03dc20115e5d9a1f036e079a9d576704caff638fe8a6db630648b7851743ddbc812e - -# g_scalar = n - 46 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52945 -r = 374aa9069481ed0dd9c79db8005412579266634957719f5460976b01b472d7899f24fba649ddd10ea618d7479fc4f435, 03ac614c1da6382437d2a66713f6f2f9e6547fdceb14b546285e675be7a57b625ea6f3ce130a79bc9f104eec8023d285 - -# g_scalar = n - 45 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52946 -r = 9c94c858b2ac340599e1c0c61f2bb599b0040c0e8d6fcf13ffe8e0bb39eb8f59d4af65c673ad9112d4c411564fddda5b, bd14d686247c5b7ae8b888dd42d50e61e906998948dcb16c14c4bb561a4a96e69d4d0abbae0335c070778729911127a2 - -# g_scalar = n - 44 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52947 -r = 9c7e7754a320d35204ce2a21986c5ce6d50a288981ea36c2767b4ad7f8f99b51ae97af8bf240b30a1c5f0e5b36a400d3, a04d71cdd5e228c45219f692fd1abc51b8987504d822571a397fe89afa3852928337d5b10e96704d3ccc9ccf44527cb9 - -# g_scalar = n - 43 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52948 -r = 35178bad22dab3935cf095a901fefb567314f5f0416dbd86dad9f5b239c4943d09112fc50578bc8c37fa935500846d44, 70c0e09c369cd487568b4f6bea3406b755071f0942f9d72043187556121ceb43e4811bd18b61ab67308603e5c9450e58 - -# g_scalar = n - 42 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52949 -r = 7438b4933c1e593ce983e169ffff96c73fd72a308f234c864b21c4f3eb6c7e6231b22efc5df46c6618ef56cd5d76b881, 2497d63d0ffd4491affd6a97b8d58e8a18c6049e1559889cda2f355125e1520af26a645586926ed679c5dc5d5aac171c - -# g_scalar = n - 41 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5294a -r = 8764cd2cda92245de3bc778895fd71ae89746c8d852ca03573a82933a80d68f341dfd24d456a201ead148e87bca6d14c, 7d158fd114e70e3a9866ad382e6cd8d14236293cb060a765a879f31ede9b90cda5389d1ef0c362915d01d3b97d14dc1d - -# g_scalar = n - 40 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5294b -r = 51c4b1b36a4d6e813b021cf316d7a9adae78bc3a3134216c86fcfe4760be3ebc43a53ff21beb359e6048c6949399c38a, 2026d49256eb44fe244dd362214b91939c5ff5f59f1f55d567007808c8f148bae207337a59615c5cab4632734a6c27e9 - -# g_scalar = n - 39 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5294c -r = 587df4d6b89b1fc2c9985040b76c066536a1cd6dde9b62306d7edf642b7f006fd984244a8e3d2c467d894f80506e0e42, d2843ed7f8b69704e56acaa0e329fcbf49b91bacbc92601dcba3aac54aceac4684d4f54b17d6b8b8b3f9c7b9958e5185 - -# g_scalar = n - 38 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5294d -r = 47ba96091da7b1476b464412bc9a48c7479ecf018173fb32f3d752f5ad6cbeac018843c01c0d77024703cd85891f8ffe, e0b9996badf9e70ded641ceb68bcdf5b0cff1e39b7cb8065251db867bb6a946b783e7c3b1e5f1f936e50d916543ecb77 - -# g_scalar = n - 37 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5294e -r = 1eba28f3defc58b59261ede87ef27114acb60a7597482b86a129e2dff5b54a5d4027704bb5630ef20202d57de44f61a3, 05f1f848017a407ad7b0344a9c735cc84af9b6576bfb82e0d156edbca2d35fcad0e9bc29eba6b411936e3f37741aa761 - -# g_scalar = n - 36 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5294f -r = 1608643883061d376f01faee26946e789f82b7fbab52606ca39180d45c2c7ce14a13260770b1b757f216aa2531238ed0, 096677847f9f7a4820cc112848cbfe4e95cda713cc0aa98aefdf6be73e9802dee2ee43a0291d7ec7a68120c9f04f8843 - -# g_scalar = n - 35 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52950 -r = d6149f75e9417bc6832bd8e34fc7852365f16273a02583fd4a508620dde6bd0abb3800d52d7c2fb458a5b5433720ec9b, 4ec57527cf1dc0d953757880ad332ca3dd0e6054d70ca111affe7667677f6d5cf31e7f765aa1f6a9014fd917c2114ad5 - -# g_scalar = n - 34 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52951 -r = cdb55e6ba07b7cae7ec2bc1cd50b3e6d9d6ac102b4e2520145700722abb9102f0648c2cd2d668c4180b309dd2ada5bf4, 569b110402522db1fc3faf5f9eadf8d9fd2ff30475894d2961ebe75baabaa83bb8f22396075a80b7143425f97925c6bc - -# g_scalar = n - 33 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52952 -r = cc9e97a46c833e9d68af622641d5c400da631fc160f09efbbbc7c7ee955ef3afdf330d9d5b943c8661333a382fb3ba63, 5802d49e6fa8252890336c5e473cef8d75be91464490f545f7b98315b746f46dec409eda3df61aa18028c172c59da189 - -# g_scalar = n - 32 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52953 -r = 5dd2a4a0626b3d793a9865baa631cfb0ba8953d612e8dc871896b9fcc651b1dd0d784cf208f779d5ad852b878c0a64a4, 3aef526c554356608c4bd8da4ca4b00fb434f90ff5dc884988cea0616bb702f65c8d203c0d5ad402eeb7438e9783df44 - -# g_scalar = n - 31 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52954 -r = 6c07c4040a3305d11afb51a3e3ba8285d42f7dc953c149652ecf8340f0df4fe6b6e7ecdd9e821ee6a39c89317c8906a4, b8a5c18a9c675e62a4c2f292c941133b2822b9b0fba585e3bfd56454bd14df2143f59663c8b3b4f72547cd78ed803e25 - -# g_scalar = n - 30 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52955 -r = 92cea8f4c4360dd87002990485ba414315f9abe1feb6b100519b9fd50a18323276aad8b8131263886a7a3464d0cbcea0, 6bed6d1aff07734d0a96bb95d8aaa96d693de4d6095e980dcee822fb2b85be22e7b9110222c14ea92393a2e33ed8b75e - -# g_scalar = n - 29 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52956 -r = c8b00ae8187cea1f2065b7cba7df26e43dc22d490e3feb0fce3c15ed55c9764725846b66780443d6019d6ac5d3021470, e2d5e3fea6880e93090a818e6f37dfcc71924ef4bfbafa0454e872d93317ae4bd6c3e9b5df37c21de5ad7b6079a2212c - -# g_scalar = n - 28 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52957 -r = 55be5764d37da1a2d8232f8b4e492aa88fb0c597a4da3e15550e0bee8ff22c6f4169b4117b3c1220c76afaa373b64643, fa3235c018677e8986dc880407147ce63b71190c4fcc3eede7b42b8cc52967c46008963a78a011f00e43764ad7188061 - -# g_scalar = n - 27 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52958 -r = e8ca780e373e5aec2f7e8d509c6a58fe7228e2d5d18f14d08e0d4168482396f9cf1912934d78291da04482d2467d66e4, e87df5f43aecb12898198e6a2bb2c32082d9abf9c737a57a28865201ce25e414a7592809961d070bbd552e2ae4971607 - -# g_scalar = n - 26 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52959 -r = 37a45bdb091cbb80f14b309f03fa90f2808497b7b0bba4a76efedb8023bf0b90b0391b37897b93f56423197d2afd473d, b82675620f6ddbe340d3f79d9683f702a2aed20662bd58d8da3846eb90a0db3724c0bdd16a1e92911225b51c7570a234 - -# g_scalar = n - 25 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5295a -r = c29c6e2ca5bb73313809ab50de2480249bd51b99208abe1e57d0f3d2e2be174abb280dfa3cb3fb361e93722758ce3b83, e01904bd1687f62325c1e5c2b3143691295d0ae21571bcbbfe9d70fa6bdb5c327c3343b06ff61c6e66bb02d29eedb0fa - -# g_scalar = n - 24 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5295b -r = 4f13f901fc55723f38076e8fca77d74f563361909bd5c2f7540c045a409c930b20c1b8e0d809afcd259f272cfab816a7, eaf7f719da5cfd36ec6a5786995b16fb17d88bc65f0652c520aa8605b4157d216727d52d25db813776f6cd2942c2ef3c - -# g_scalar = n - 23 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5295c -r = 80826a69eea8f22461e4ca2b905432f01c75b8ab2a351783b9d3dd25429c0a18990ed20b569b8ef6d1b4e74d12e3683b, 620334f21ddedaa6d7d2dbc8a998e73e0fec76af150dd38185275ecd5ad83140f4335c0e59a1b7ec803cc59513ad5452 - -# g_scalar = n - 22 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5295d -r = e082882d69059095fd7a8b13f0681fcac382472ebe0e1fdbccd57831927ed783981b788d16f325b84f595351262bb775, 98e2963670327be7af037b8dea7f6322389b1207bf2f030884e54b763407c8470629d02536a89396b2e3cfb70558e023 - -# g_scalar = n - 21 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5295e -r = ab16c626dac012b51b1a0f6c5df0e5372e59ab62bd9ebe6930128aa06177f75d88e0d496dd2f9e2108265e510422ce2f, de7db0beecac3345d9952ea55315a7e84babeee17ad832a6d9d144b675eb6f66558bf560c70e84157febdeb5ff73a218 - -# g_scalar = n - 20 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5295f -r = 1d1cdf7b5f22346598ca8dd42d96c936f78cff0cd467f03a713466708cbaffc7cd96f20591e71d16ad610a2d94a70ec1, 546227efad1404fea1fe48d4b8e74438bdd259bc0019ecd466cc04da2332b20bda0ab953cde7d7001d85e76c9f2b249f - -# g_scalar = n - 19 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52960 -r = fa0f1f450390d706b3b6639c539802ae23891298fc38538eca109c3b154aad5e22c4cc5f41a8c91282a2ed4abaa84c08, 5e2b84dc16a8889bea2e23887d9b498dc0a586644980cf3c6e8f4c87900d09bb5738d2c23c25d153b94871a34f23de2f - -# g_scalar = n - 18 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52961 -r = 57505d8d6749703068a232435567169355a96a6879909f083bd1c8f62edb0dbd198fd3f0f38f66625dfee73ce5b82700, 6e8ff4db814e419c642295f6d6ba58a8900303835b3026443d99147bbeed67a6ab47984708755821759f8e818a39baec - -# g_scalar = n - 17 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52962 -r = 524f166ee475ce709f6928555330455e7be3737d524ffefce6fc3f2af655a10d3ea4ea4c8ff1f43e8903e1304b4a3cd0, 53c86790aa4e9b36da14a20e4c3d98850782927ab5abafb5b631966ccc940e7bb1dc48ff2a463f25c033963393ed0faa - -# g_scalar = n - 16 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52963 -r = a10896aa435abaa137065f5313bdc3fa317b63ea2887d5ff37cf65517917652a992afb5b0ecdd2d8da6e8a7f7c33ed91, 9a624b7e7e10daecae3cfa3958d2e6984ccc420437711eb76eb78e23eab2beef14f82214dcf30ff264de9ea1105435d9 - -# g_scalar = n - 15 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52964 -r = fb62d26f4903026b0fc01fd4eb08599359500917789b307583ccf19550e07b342b7210e2ec3dabd8446ad8884709f4a9, a59739012f43d8e978cc03bebff3a8682223d79927670b8fb4dc2c5f21f99ef29e9f6341ebb42a79dcf6336390167644 - -# g_scalar = n - 14 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52965 -r = 46d227c432f6b1ba8058994c5710c0c944ce05ff88957166ca6b1af8b1f85c2ad02225fb01ec909f5865e5018f75244c, bbd67c622104520a9b82db24ec96f58b8dbbacba263c496ee1337a7a1ee2443fabf4747c8cf5662e41b4b570fc34971a - -# g_scalar = n - 13 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52966 -r = b51c56e18cf23c94d2657265ed22df97db5203a8d9c1bd568a7a8e4633b7d4aeb25e28c5f6749a959b7aeb7e75ccbdfb, b9e852483396861e7e0242e3c4b6f13c480153d2013c729f8765d5b730b2f01b271770e478351f3d0b2c6ba793c27ed2 - -# g_scalar = n - 12 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52967 -r = 627b415f9c35b26d523c40dbcf9ab45cf67eb42235d77d8303aced26c8edfee1d4258cc55d9704203db8477270313de0, f391bcf1063b50c2fcd6154e086bd0f1bf39b5b199412a5073867b702f1efd527f29f508d8559ae50533ba1c741aa127 - -# g_scalar = n - 11 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52968 -r = 9c19e9fc7ba9c437f8d89885f0561d7901b8bf56147b66020dcc67706cdad64f4532077c44377abac7708b19b68b8c7d, 6559d060cacc06e7be7de2f3c5acd785d1f8f0c9016197d1c317ecd67588187e9fb01b9353ebb47c89b14eba423b45da - -# g_scalar = n - 10 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52969 -r = a91a5280db1c212ec2f646025c4845ec54a612d7eb32cabee9f6368eab225fa32a15a9a6e58d6787845539d3c8d99c02, 91466a4137fe8b17c1fcc8f5b85647557e69e473302802e2a6d53f4586b15401fc5acf13ec4617a34468e0881984a031 - -# g_scalar = n - 9 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5296a -r = 5cab1d1d53636c6a26d464c6dad54d6adc351dc13cbfff3f26094833a96d745de35d87293fd7e4f92f5d200e2353b92f, 188f9ccbce170a39826bd60b119658ab5913533397152f27d80f9e38fcc3583cc8881d8e28bd55d00d7ecf8e4e713f4f - -# g_scalar = n - 8 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5296b -r = 5db4f184349cd9b11c7b5fe116b664231d9aebd64f3ddb371c5c2e7193d7e30f9e336de5ae9b587a23f60a05dd9bcbba, c3f39228f2d8109e8ff726bc3b7130f1166dcd9c5bd2445d8fe8ab408279791a7c9244c8481aa178f2d3017d199aa5bb - -# g_scalar = n - 7 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5296c -r = 932c9f811c89025bf893db589db2df555f4215d1659753ed731edcf8211faa954ce6415f874774b1df13b9d17d69222b, 26f5e949509364c10a80dc7196c4f8f9f00c83fbfe00087f9a552890afecf7baecacb629579be386f6694de088f959e1 - -# g_scalar = n - 6 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5296d -r = c482e189f0430c404f0f6a962b02d33b2a33f6661bdf6015ec52930f580d57f2cb2454b339d3413a7eb5c9317d56dad8, 3669dead50d56145a792712120deaa656c361a09e4ab90fa742b40034861cc4e8c653961a4c2b231c09d4e92584f7dfc - -# g_scalar = n - 5 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5296e -r = e1bb26b11d178ffbc676b987e2e8e4c660db2cf5aacc05e67f1eb1b5293c703bc185c0cbcc873466bb595eba68f1f0df, b24e36291df61b5c193a6bbfdb21dc92b4dc805067d3fbee7f49e4cefe3ca465dd3e91d08d0cba99d496b4608f8c05de - -# g_scalar = n - 4 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5296f -r = cfeee6dd34179228fb40f647d685d979078358d4736400ad2e4f153b0aecac4630594ccbee0421e30aae8477ebb68f2c, af6b978acfc20ce619f8461cc7dffe82eb8e9d2cfbe7396c71c19e5cb3abd52d18b4480d84013681ab0c171964c5fc4d - -# g_scalar = n - 3 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52970 -r = d283fe68e7c1c3ace36f7e2d263aa4703a48d732d51c6c3e6b2034e9a170ccf0c54ea9fff04f779c05e4dbe6c1dc4073, b9ab9a0367cd6d500924974eaefd4cc697fed2a52d1e2f4becd99c3fb1098bb86d287657851f1c9281d7b7df3fb11ea8 - -# g_scalar = n - 2 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52971 -r = db93b776427460c39c90a4fd2de4b506da821495f0687f503504e6f0ff9d48a18e6c8f2e022b53f0c8229e55783dde91, 1cb6b808edc20f3df8f2bcf6ff4f197bf60e01beae8d4526ea1b0e7423a77da617171b563d553327bd157b9dcebf4025 - -# g_scalar = n - 1 -g_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52972 -r = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_point_mul_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_point_mul_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_point_mul_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_point_mul_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,1664 +0,0 @@ - -p_scalar = 00 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = inf - -p_scalar = 01 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 - -p_scalar = 02 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = db93b776427460c39c90a4fd2de4b506da821495f0687f503504e6f0ff9d48a18e6c8f2e022b53f0c8229e55783dde91, 1cb6b808edc20f3df8f2bcf6ff4f197bf60e01beae8d4526ea1b0e7423a77da617171b563d553327bd157b9dcebf4025 - -p_scalar = 03 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d283fe68e7c1c3ace36f7e2d263aa4703a48d732d51c6c3e6b2034e9a170ccf0c54ea9fff04f779c05e4dbe6c1dc4073, b9ab9a0367cd6d500924974eaefd4cc697fed2a52d1e2f4becd99c3fb1098bb86d287657851f1c9281d7b7df3fb11ea8 - -p_scalar = 04 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = cfeee6dd34179228fb40f647d685d979078358d4736400ad2e4f153b0aecac4630594ccbee0421e30aae8477ebb68f2c, af6b978acfc20ce619f8461cc7dffe82eb8e9d2cfbe7396c71c19e5cb3abd52d18b4480d84013681ab0c171964c5fc4d - -p_scalar = 05 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = e1bb26b11d178ffbc676b987e2e8e4c660db2cf5aacc05e67f1eb1b5293c703bc185c0cbcc873466bb595eba68f1f0df, b24e36291df61b5c193a6bbfdb21dc92b4dc805067d3fbee7f49e4cefe3ca465dd3e91d08d0cba99d496b4608f8c05de - -p_scalar = 06 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = c482e189f0430c404f0f6a962b02d33b2a33f6661bdf6015ec52930f580d57f2cb2454b339d3413a7eb5c9317d56dad8, 3669dead50d56145a792712120deaa656c361a09e4ab90fa742b40034861cc4e8c653961a4c2b231c09d4e92584f7dfc - -p_scalar = 07 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 932c9f811c89025bf893db589db2df555f4215d1659753ed731edcf8211faa954ce6415f874774b1df13b9d17d69222b, 26f5e949509364c10a80dc7196c4f8f9f00c83fbfe00087f9a552890afecf7baecacb629579be386f6694de088f959e1 - -p_scalar = 08 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 5db4f184349cd9b11c7b5fe116b664231d9aebd64f3ddb371c5c2e7193d7e30f9e336de5ae9b587a23f60a05dd9bcbba, c3f39228f2d8109e8ff726bc3b7130f1166dcd9c5bd2445d8fe8ab408279791a7c9244c8481aa178f2d3017d199aa5bb - -p_scalar = 09 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 5cab1d1d53636c6a26d464c6dad54d6adc351dc13cbfff3f26094833a96d745de35d87293fd7e4f92f5d200e2353b92f, 188f9ccbce170a39826bd60b119658ab5913533397152f27d80f9e38fcc3583cc8881d8e28bd55d00d7ecf8e4e713f4f - -p_scalar = 0a -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a91a5280db1c212ec2f646025c4845ec54a612d7eb32cabee9f6368eab225fa32a15a9a6e58d6787845539d3c8d99c02, 91466a4137fe8b17c1fcc8f5b85647557e69e473302802e2a6d53f4586b15401fc5acf13ec4617a34468e0881984a031 - -p_scalar = 0b -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 9c19e9fc7ba9c437f8d89885f0561d7901b8bf56147b66020dcc67706cdad64f4532077c44377abac7708b19b68b8c7d, 6559d060cacc06e7be7de2f3c5acd785d1f8f0c9016197d1c317ecd67588187e9fb01b9353ebb47c89b14eba423b45da - -p_scalar = 0c -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 627b415f9c35b26d523c40dbcf9ab45cf67eb42235d77d8303aced26c8edfee1d4258cc55d9704203db8477270313de0, f391bcf1063b50c2fcd6154e086bd0f1bf39b5b199412a5073867b702f1efd527f29f508d8559ae50533ba1c741aa127 - -p_scalar = 0d -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b51c56e18cf23c94d2657265ed22df97db5203a8d9c1bd568a7a8e4633b7d4aeb25e28c5f6749a959b7aeb7e75ccbdfb, b9e852483396861e7e0242e3c4b6f13c480153d2013c729f8765d5b730b2f01b271770e478351f3d0b2c6ba793c27ed2 - -p_scalar = 0e -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 46d227c432f6b1ba8058994c5710c0c944ce05ff88957166ca6b1af8b1f85c2ad02225fb01ec909f5865e5018f75244c, bbd67c622104520a9b82db24ec96f58b8dbbacba263c496ee1337a7a1ee2443fabf4747c8cf5662e41b4b570fc34971a - -p_scalar = 0f -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = fb62d26f4903026b0fc01fd4eb08599359500917789b307583ccf19550e07b342b7210e2ec3dabd8446ad8884709f4a9, a59739012f43d8e978cc03bebff3a8682223d79927670b8fb4dc2c5f21f99ef29e9f6341ebb42a79dcf6336390167644 - -p_scalar = 10 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a10896aa435abaa137065f5313bdc3fa317b63ea2887d5ff37cf65517917652a992afb5b0ecdd2d8da6e8a7f7c33ed91, 9a624b7e7e10daecae3cfa3958d2e6984ccc420437711eb76eb78e23eab2beef14f82214dcf30ff264de9ea1105435d9 - -p_scalar = 11 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 524f166ee475ce709f6928555330455e7be3737d524ffefce6fc3f2af655a10d3ea4ea4c8ff1f43e8903e1304b4a3cd0, 53c86790aa4e9b36da14a20e4c3d98850782927ab5abafb5b631966ccc940e7bb1dc48ff2a463f25c033963393ed0faa - -p_scalar = 12 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 57505d8d6749703068a232435567169355a96a6879909f083bd1c8f62edb0dbd198fd3f0f38f66625dfee73ce5b82700, 6e8ff4db814e419c642295f6d6ba58a8900303835b3026443d99147bbeed67a6ab47984708755821759f8e818a39baec - -p_scalar = 13 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = fa0f1f450390d706b3b6639c539802ae23891298fc38538eca109c3b154aad5e22c4cc5f41a8c91282a2ed4abaa84c08, 5e2b84dc16a8889bea2e23887d9b498dc0a586644980cf3c6e8f4c87900d09bb5738d2c23c25d153b94871a34f23de2f - -p_scalar = 14 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1d1cdf7b5f22346598ca8dd42d96c936f78cff0cd467f03a713466708cbaffc7cd96f20591e71d16ad610a2d94a70ec1, 546227efad1404fea1fe48d4b8e74438bdd259bc0019ecd466cc04da2332b20bda0ab953cde7d7001d85e76c9f2b249f - -p_scalar = 15 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = ab16c626dac012b51b1a0f6c5df0e5372e59ab62bd9ebe6930128aa06177f75d88e0d496dd2f9e2108265e510422ce2f, de7db0beecac3345d9952ea55315a7e84babeee17ad832a6d9d144b675eb6f66558bf560c70e84157febdeb5ff73a218 - -p_scalar = 16 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = e082882d69059095fd7a8b13f0681fcac382472ebe0e1fdbccd57831927ed783981b788d16f325b84f595351262bb775, 98e2963670327be7af037b8dea7f6322389b1207bf2f030884e54b763407c8470629d02536a89396b2e3cfb70558e023 - -p_scalar = 17 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 80826a69eea8f22461e4ca2b905432f01c75b8ab2a351783b9d3dd25429c0a18990ed20b569b8ef6d1b4e74d12e3683b, 620334f21ddedaa6d7d2dbc8a998e73e0fec76af150dd38185275ecd5ad83140f4335c0e59a1b7ec803cc59513ad5452 - -p_scalar = 18 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 4f13f901fc55723f38076e8fca77d74f563361909bd5c2f7540c045a409c930b20c1b8e0d809afcd259f272cfab816a7, eaf7f719da5cfd36ec6a5786995b16fb17d88bc65f0652c520aa8605b4157d216727d52d25db813776f6cd2942c2ef3c - -p_scalar = 19 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = c29c6e2ca5bb73313809ab50de2480249bd51b99208abe1e57d0f3d2e2be174abb280dfa3cb3fb361e93722758ce3b83, e01904bd1687f62325c1e5c2b3143691295d0ae21571bcbbfe9d70fa6bdb5c327c3343b06ff61c6e66bb02d29eedb0fa - -p_scalar = 1a -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 37a45bdb091cbb80f14b309f03fa90f2808497b7b0bba4a76efedb8023bf0b90b0391b37897b93f56423197d2afd473d, b82675620f6ddbe340d3f79d9683f702a2aed20662bd58d8da3846eb90a0db3724c0bdd16a1e92911225b51c7570a234 - -p_scalar = 1b -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = e8ca780e373e5aec2f7e8d509c6a58fe7228e2d5d18f14d08e0d4168482396f9cf1912934d78291da04482d2467d66e4, e87df5f43aecb12898198e6a2bb2c32082d9abf9c737a57a28865201ce25e414a7592809961d070bbd552e2ae4971607 - -p_scalar = 1c -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 55be5764d37da1a2d8232f8b4e492aa88fb0c597a4da3e15550e0bee8ff22c6f4169b4117b3c1220c76afaa373b64643, fa3235c018677e8986dc880407147ce63b71190c4fcc3eede7b42b8cc52967c46008963a78a011f00e43764ad7188061 - -p_scalar = 1d -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = c8b00ae8187cea1f2065b7cba7df26e43dc22d490e3feb0fce3c15ed55c9764725846b66780443d6019d6ac5d3021470, e2d5e3fea6880e93090a818e6f37dfcc71924ef4bfbafa0454e872d93317ae4bd6c3e9b5df37c21de5ad7b6079a2212c - -p_scalar = 1e -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 92cea8f4c4360dd87002990485ba414315f9abe1feb6b100519b9fd50a18323276aad8b8131263886a7a3464d0cbcea0, 6bed6d1aff07734d0a96bb95d8aaa96d693de4d6095e980dcee822fb2b85be22e7b9110222c14ea92393a2e33ed8b75e - -p_scalar = 1f -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 6c07c4040a3305d11afb51a3e3ba8285d42f7dc953c149652ecf8340f0df4fe6b6e7ecdd9e821ee6a39c89317c8906a4, b8a5c18a9c675e62a4c2f292c941133b2822b9b0fba585e3bfd56454bd14df2143f59663c8b3b4f72547cd78ed803e25 - -p_scalar = 20 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 5dd2a4a0626b3d793a9865baa631cfb0ba8953d612e8dc871896b9fcc651b1dd0d784cf208f779d5ad852b878c0a64a4, 3aef526c554356608c4bd8da4ca4b00fb434f90ff5dc884988cea0616bb702f65c8d203c0d5ad402eeb7438e9783df44 - -p_scalar = 21 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = cc9e97a46c833e9d68af622641d5c400da631fc160f09efbbbc7c7ee955ef3afdf330d9d5b943c8661333a382fb3ba63, 5802d49e6fa8252890336c5e473cef8d75be91464490f545f7b98315b746f46dec409eda3df61aa18028c172c59da189 - -p_scalar = 22 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = cdb55e6ba07b7cae7ec2bc1cd50b3e6d9d6ac102b4e2520145700722abb9102f0648c2cd2d668c4180b309dd2ada5bf4, 569b110402522db1fc3faf5f9eadf8d9fd2ff30475894d2961ebe75baabaa83bb8f22396075a80b7143425f97925c6bc - -p_scalar = 23 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d6149f75e9417bc6832bd8e34fc7852365f16273a02583fd4a508620dde6bd0abb3800d52d7c2fb458a5b5433720ec9b, 4ec57527cf1dc0d953757880ad332ca3dd0e6054d70ca111affe7667677f6d5cf31e7f765aa1f6a9014fd917c2114ad5 - -p_scalar = 24 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1608643883061d376f01faee26946e789f82b7fbab52606ca39180d45c2c7ce14a13260770b1b757f216aa2531238ed0, 096677847f9f7a4820cc112848cbfe4e95cda713cc0aa98aefdf6be73e9802dee2ee43a0291d7ec7a68120c9f04f8843 - -p_scalar = 25 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1eba28f3defc58b59261ede87ef27114acb60a7597482b86a129e2dff5b54a5d4027704bb5630ef20202d57de44f61a3, 05f1f848017a407ad7b0344a9c735cc84af9b6576bfb82e0d156edbca2d35fcad0e9bc29eba6b411936e3f37741aa761 - -p_scalar = 26 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 47ba96091da7b1476b464412bc9a48c7479ecf018173fb32f3d752f5ad6cbeac018843c01c0d77024703cd85891f8ffe, e0b9996badf9e70ded641ceb68bcdf5b0cff1e39b7cb8065251db867bb6a946b783e7c3b1e5f1f936e50d916543ecb77 - -p_scalar = 27 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 587df4d6b89b1fc2c9985040b76c066536a1cd6dde9b62306d7edf642b7f006fd984244a8e3d2c467d894f80506e0e42, d2843ed7f8b69704e56acaa0e329fcbf49b91bacbc92601dcba3aac54aceac4684d4f54b17d6b8b8b3f9c7b9958e5185 - -p_scalar = 28 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 51c4b1b36a4d6e813b021cf316d7a9adae78bc3a3134216c86fcfe4760be3ebc43a53ff21beb359e6048c6949399c38a, 2026d49256eb44fe244dd362214b91939c5ff5f59f1f55d567007808c8f148bae207337a59615c5cab4632734a6c27e9 - -p_scalar = 29 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 8764cd2cda92245de3bc778895fd71ae89746c8d852ca03573a82933a80d68f341dfd24d456a201ead148e87bca6d14c, 7d158fd114e70e3a9866ad382e6cd8d14236293cb060a765a879f31ede9b90cda5389d1ef0c362915d01d3b97d14dc1d - -p_scalar = 2a -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 7438b4933c1e593ce983e169ffff96c73fd72a308f234c864b21c4f3eb6c7e6231b22efc5df46c6618ef56cd5d76b881, 2497d63d0ffd4491affd6a97b8d58e8a18c6049e1559889cda2f355125e1520af26a645586926ed679c5dc5d5aac171c - -p_scalar = 2b -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 35178bad22dab3935cf095a901fefb567314f5f0416dbd86dad9f5b239c4943d09112fc50578bc8c37fa935500846d44, 70c0e09c369cd487568b4f6bea3406b755071f0942f9d72043187556121ceb43e4811bd18b61ab67308603e5c9450e58 - -p_scalar = 2c -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 9c7e7754a320d35204ce2a21986c5ce6d50a288981ea36c2767b4ad7f8f99b51ae97af8bf240b30a1c5f0e5b36a400d3, a04d71cdd5e228c45219f692fd1abc51b8987504d822571a397fe89afa3852928337d5b10e96704d3ccc9ccf44527cb9 - -p_scalar = 2d -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 9c94c858b2ac340599e1c0c61f2bb599b0040c0e8d6fcf13ffe8e0bb39eb8f59d4af65c673ad9112d4c411564fddda5b, bd14d686247c5b7ae8b888dd42d50e61e906998948dcb16c14c4bb561a4a96e69d4d0abbae0335c070778729911127a2 - -p_scalar = 2e -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 374aa9069481ed0dd9c79db8005412579266634957719f5460976b01b472d7899f24fba649ddd10ea618d7479fc4f435, 03ac614c1da6382437d2a66713f6f2f9e6547fdceb14b546285e675be7a57b625ea6f3ce130a79bc9f104eec8023d285 - -p_scalar = 2f -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = ea5b37c5da233371504f21b1570cf950780abff7d878acd0bfb185125f5b07a065c788785f0dc66c6f888f7df0c668ca, 536201382058d574110ff96ed1df03dc20115e5d9a1f036e079a9d576704caff638fe8a6db630648b7851743ddbc812e - -p_scalar = 30 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 66e4794bae7d740062e5c5d3e73a1bc940d01ff53a7d2f3c4f504e06ea52bef92d368d48e7f30c2b3ccf806ab35bf6cf, d8e1bd5ed9db5a7cb7154ff14a36b9d3d9fa35ff625d5d35a3c35ef2fb454679ba7f9f615899220ec2cf9da2a0010ced - -p_scalar = 31 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 0b470bb250e4ea9e1197832bcea03f5647c56c115b6e3386a669156542e365a48ea5af63a5ea6fb8fa5c3aef697136c6, d2e33ae71d74d42488e19bbea4a841d0db78122a807d422c03bb7911b63614167293e8b02db682b7ceec38bdec4da8ed - -p_scalar = 32 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a820e8303a5d50d19cbf755b46f97ac7beabb91ac3c90051510bd675cb2ec3f1172cfe4ecb5af900a96763d2fba32d1f, 90a705748e7e3d5e90840581ec5b08293e4bbbec6ccc1bfa9edb9bd0f0cd4ead208238f9cfb7b9e57c560e82cf73baba - -p_scalar = 33 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 16634a504f35cb3c3dba16e9daaabc27464ae8d241a84de7a5e0fb598c5a78d91947c0caec4a22b82c4ccac72070ac8d, ae74fb823455f268396b761dc8c0e5f2f4ddbfffc37782c925153f3ca8fabc0ecdb2f9808ca622ca523e74074e9137b0 - -p_scalar = 34 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 4b820d9b31d83660252b48f5cd8d7d770bedaa85e5377c005687d1dca6ccfd358a944b316b3262328f6468656f9201b9, 3a33cc62345e02b4dddb9a7991a121896f1d51528087550792f5e99312c3c484f576cf02edf74605561a50c4351f80ea - -p_scalar = 35 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a8ba8f10e0f383ea642ec4e615c3aae2cf485c74a7c54b160b0110610f0422a2daed7c268a0915cc3b1bddc6fbde49ef, 120d1c1481336b7a5236c265b7e89a1d2d38e52ec6f9669ca8795e65b1d057c014139bbcf7610574d5dfab4c6a9e7afe - -p_scalar = 36 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 4576a6497cb8944248c075daaadd6150075134ebabd64a6acff00bd23c9b5a41ab2f15202175fbf411853add834e6c54, bdf1498c6f95d6b69161794484e14885e51e22682ecbbb44f40786296c4bb1587244a8e288032e0bcbf58990cb52125c - -p_scalar = 37 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b3fcd5d1690cd408fa5cbfda60f4554f6078d8bf085faeb3a4fb7867e3a142d6fd6622bc1718ec3cbcab5f60069f3367, 8b9fda8ceb31112b956e18c6682f05f9e8394a3441dccb07721cef83c2f8609d7d50dc54e7f59c58b1421183d7e0877b - -p_scalar = 38 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 7772a913e6436cc1e9981ea6820da79f2629ba4fd1deca258b6fc785e692fdd2d4215b4fc7a8baa1483350a5ebb8cdad, ce009b71f07747d2a901000cd90cb631fa7d9e6db6f44a8d49dc5e5114733de2d7e8619237ad09b42ebedca4aac04be2 - -p_scalar = 39 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 814d7fa07a78c189c052f3eb1c99ceef1e9dd1509bf446e0a14967dfac4bbf6273bae4c1694b8b0db14ba61cf97f865c, f57dc465b4d9209c2d1ecfaad6ad3e0370bd843b8c37e2a4f29f454817f65ec288773da65e8c849a5efe5b7d548b4fa2 - -p_scalar = 3a -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 104cec0666ac72e09e9520bf57acc87aa58db4ea4f96af4fdab9dc0015b0fa13341cf9d9c46785af941c5c257d0be180, d4ae66a086b256fe3f7a6a1caab704151ee96616f605a75e4a0ea855a964a826474b535f057fc7f560c08456e6d6198a - -p_scalar = 3b -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 9ba039679267b6463703435b0de64db996a917cf1ed0e31564473b595c322738dfca6897f929974caf467ce227bf64c9, 00cc90edafb9aa3e692645f4261c35e6904cb4cfd7b9c3315330d12284fa68fbbe4248bd4cca100f20f3d552c5add041 - -p_scalar = 3c -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 95bb80cece47968c61bba736a55b527784b7c2fed74cccd40402d5c4eb809f85a61fada6fb4f60e8c711d5d1c425543e, 722de40f4b15b0aed603c4d7b76d198944ba5ae06b757c8a5328f47952d5df020f1f0b07197d55d6f606d524e914846a - -p_scalar = 3d -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = c93ea049ef6ba0062366467300fe51fd5ff77ff2332982d06035e34f772ae08054fb5a34222241e848da1fd3fc60a6e0, 3b33eebae03967d64f59388dfeb992dcf225e6001ad8a898195877ac8f2cfc13c6b2cd3195160b5399bf0ee982c7ed99 - -p_scalar = 3e -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = cb4c0a54561fedf2d194b7054b14d11703b9f1cebfec21da0c7d749907dbb9af1e659730c1fb476e49a04dc0f5acf772, f6fd33dceb6bb947353cdb137d3b0558c2daf76dd456dc649a9f61a62600f544a0a164df29cf3eba509dc2c1de25b2bd - -p_scalar = 3f -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1c9bf0b0f1e52d1ef6159e519a049f7acd7e35f76e2b71aa7a50f7458c949f8f6ce8ead6149a1896c5c0e6d7aaed89c0, ad44c8ed5f5976170a508471c8ca20dd237642b6682bfb72c44fcb17772e80e572c5a09ce13284e5c4493e0be7dfd37f - -p_scalar = 40 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 4f5d5ab6d1b30e5cfc8e87cf3be44d56a309199dca57b7bde04b3d30f8a0580d957c980f297a9a37ed4de4f88e89b258, 77748f746bfb35aec11ed876a132c01792683543cfe01da601ae4440ef6f0120f02e3ad10f6e43fe4dec3960cf56cda4 - -p_scalar = 41 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b84c3a6a5fd4266f8b0350b2650b22534597ec8abdd5f002cf9edc15edb63c80becda43b0d1d279f8e469454839b9679, 1590dad75aa44e365d7993db37060f78e689c292776299225487b4d321d43d98495b787bc5266a2cf1e927c3cf038606 - -p_scalar = 42 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 3418c841ef19aa6cab34164b3870beb7acd0361f5decad089983c10a492b899ae22c691d99c0b909b60fb64e52990b5c, 4d78416af80aa2fb6d4b7f1128f293c5902cce5c4f2a515ab12c02e6d597baf65a7f2fbe3d3776f8930dfc5adf64cc92 - -p_scalar = 43 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = e462ca48e153035af9af3e4d90909d25556e637e6ef3d8f765d75edaa55d6185eac7dd3b0b634f686efc5cbc8b1772ca, 7cdd34755386b66bf695940fec9d3a06a66f48b939143ffce581ca12c0a61b42efb54e58bd87a2f9ad89c485f5ef612e - -p_scalar = 44 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = f6a8130b3a7741e35508c2b38bdb088aee34bd1706035fdea4160def7fe6923a2fd77b5ae6018776af78aa17286ac2fb, 2b984f17d03b99c1263a29e0f60970b3d64fb6a881f035febd88176d8fcf3364a656197694e18dc03fd1299e8683382b - -p_scalar = 45 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 59d65d78a3f735f42c86ee164fdd3ccad4bcc8b125abfd65cc66c8aa0f19981b5ccb2859a1115e28f8d3df74670c2752, 0432feffd8e2428590d361748ce985cdf53111b77d1299432ec51b76d42bdc5aa889629cba2c66b2fca521d883f3aa31 - -p_scalar = 46 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 2bd44119aa9079b7d8436f83a2ce4101a4c793741489a3c09c2e8aec0cdf6d91edfdd44e94cf7a32bcef0b6a37548a32, bbc20af538b960b5a3a666e82c5892143bf889a8303249483375299a738da5821d5d4f65989e1ac760fbea436400d5cb - -p_scalar = 47 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 0b4faa5a537ecd702b123738fe255dda27bbde143508ac5493ba15cfe58d0a92bf5731b3abb11441c42ece45effefcb1, 065815d78cd52fe34246db11f8ec6a99debb250e319bc8c5eab0d7afda4c1ce57986c3b1f7feadc295bb2f7c22137c39 - -p_scalar = 48 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 0966d45a6517888e2ac250f6058daca83b7debe494eaf32810757e2e3f599369f4445a249b234eff668240536434688c, ced3e2d0c97db2c54fef5323f68505de87ab07433c0f52c5384bc9e6546988b866326235288bc8f68aaa33871896c4e1 - -p_scalar = 49 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b89d83e72bf4673cb08db04de8caa7d29029a9252d3731c25b8d230bdf8b9b24a9c2a9b11de8963b43385c32d851a702, 909a50c483675e9df4ea8bfc78479c8cfb1de1fc6dd9a5a650603784b0e2de90607649281e1729e95702c6411e0dbbdb - -p_scalar = 4a -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = ca50bae743ca3e45a0dd8e3cc10c4f6c40d420cb5c36dc4c02ae1f9150f6a5cc7f3bc516e1b24b64126d4cde13dcbd9f, 53cf2923ca46546146228db7428f7a38a5581a9c35e612f0dba73610ec30dd42ca22922f8eda2e960f8b41171022d4bf - -p_scalar = 4b -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a1e0ae0fe6ca7a154a7ee23df367b5c85d4631b4392f8f665b28cf8991549a96c8cbc40a420ab7ef6b5d4014867303de, 02bd279dbe829a9d2878ffbd6a801bba9b1dc61c0fbfd1e2989d5496bcf5128d5ace3d3aaf0546fed59aa11fec605d83 - -p_scalar = 4c -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = e677b97c61007b808b8d434e90bfa219a7253817daee85404552fc68956bce558c547a520c8d74e1fb2f775e4230e336, 1878e3cec6c847f09be8d23ce6fe11ddbe445e6ee45c22f9585965db1b07aa3f6914734b9fcd9c064015190e08e5438b - -p_scalar = 4d -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 63d23607fa5c9816742e060b28a126270ca930b998ce78a327ccb6c0212a6125114a9b40334793a79f2134c12a501a3f, 2bb4ef8acfd302d1319e3c1aa8d6be5922fc6affcf36304deaff7af1b602c3c1cb3281d00cb2e2dc88b2345c13e06e23 - -p_scalar = 4e -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 02781ecd4db639eea1560f9775dae55bd35175d9a506191dd3338ff4b743bdfc47842147688c1ced3c80145ddb9f0b60, c186abde517042932b85fcf8b1c370d37bdc719b3b585b043b78f3624319ffcb939d400bd3ba155366c5cfd3dc231ac9 - -p_scalar = 4f -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 23b245a5d53912dab3cc818a7069cb7c491c312dd15d01f0e58901a204ca55712cdac248c3b74585ca11d9d4e9a6c224, b468d707e2854daa6be399360cfd7e069e84cfe4f79cd14cbfcdbc161146a13d5fad14c0cd88aaadcf087c75594f4e9c - -p_scalar = 50 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1e8568cca446324620fe8c27a715ace6dd2ec6d351fea1dc49066428b121360923e5c6b90e42d1f9194924b4ad0a415d, acf544bdf9eb5906469f4a101132751bdbecf9c5ec87197043856fc39b7b9be1671680e226dc9c88ff3dec4503318195 - -p_scalar = 51 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 0984c2e37cdf344f11238a859f436faff2c3118feaf138afd8cb3560e07b1bfbde45473e86c087853cbdd3cbdb06f682, 6228489f68ba4781a21c729c51d8f958fefb85a11a22d872a9522d0fe70d9c816a65eb2a8c905dbf1ef7c3e93c7da7b0 - -p_scalar = 52 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = e6db24057f12bea3dfc6d038305bfc7c87e75dfbed69216bd6021049cbfbd0c2e8c09f59ec5cc866783cc5bb88f82a12, 9ff65a61432cf2d79614842d0111801a128c900058cb66b01bf2fb109f97aed67b05c629b44ff8449b961eba485c5d2d - -p_scalar = 53 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a075b16ac03d7805c25baa03520a8926eeb88ca1c7a4aab58487aa0d4a6694eb44cf847ed2f05eb48e61f0bf44e94071, 88c201259631e30648d5832fa9c3871bf55d9d45ddae432530de56a8b619fbd5b1c3ec8e9ff69bc13ca85b76ec268f3c - -p_scalar = 54 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 00eb5c040d16b7fcb048b60e740c04a52686cba73934e93664a8bdc7c791db8094b80b8f691e858b3c712c3c6323cd05, c1a39004c52046be23675426bcbe02b6781c1cb2727eba5feb1a8d0de33161f1600347ae28364a4f7f3f276fb2237d89 - -p_scalar = 55 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = c835025446e64d4db0a08fe1114e6f01d953aaff73256a577bbdcadd053153d82148bbb88207255a935d2cdf9b06762d, 93de726d366c0dec5dce7c601d76ae6a3c2baa2dd350ad0d8bdd58d5f4141ceac6d551fc8e04169618304528ff243ea8 - -p_scalar = 56 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 94dc48fab7e8cfcde61e6c2984cb7e449e30229d0a06f838361494cc0b162b571234181c1dbb4629c7364268d94ab449, bc29e690721b7a85ebc3917cd36d209e5cd08f195f3c1e5a8566ef2afe3b86975b01a09f54df4c80f281bb0e764997f9 - -p_scalar = 57 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1c1b3417a500bb22c4840320387b6b2ef30a928d9a3c3af1df0ec1ba8b80919559424730109677754f11a02e4aa0372e, 60fb90511669019742537e77f184b248ce6bbe8a18aa60f62120dbab067b576fe7db928a586f697e96f1193940cd990d - -p_scalar = 58 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 9398236759e97922f158f85541bb965c782840d1edd794907774056232329baff0041e2423786267db52eb03d1db891d, 3be5902bcea7c2ade50d59ce11e7a67cbd7b9ae3c198db4bf80683e20745bcfc590ac7b2d0a332efb4bf33481c7b8873 - -p_scalar = 59 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d0d105de164b7361d63dd29d19e0e2b667d3644ac8e55b7b463df30b0096721f18a49fdc4bf163e00c62094b2d71d4ac, fe3816c64720c80ce2d7dbcabf469d26eb88fef6f4b21b3f9a330faed255dac2879e48e3df6c30811a79a3b2fde8e771 - -p_scalar = 5a -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 4347b760969bd7f7b560d7e63dc77e7bb34f09fbd045d31e28bd6aae6e6e8e57672649def3c36ba79b35cdf7a7871029, 6031b8801482c98e1001a0af8dd013512114cc6ed63b8db6ad0d3541ec292413dc3151d601531272d0e9e5f8a1ab691a - -p_scalar = 5b -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = eb0f52348bf223b0e7e7382759dc3eb7b04b977d42d74f5fa4f6e534bbc2618a35c2421b14ae3f635dea409c9cba0858, b83538fc0ee9391df4f64c4265477b8734871f379c5d345ff62f4cce6dc9cbc12fed7ee4c021d39266e3ae99f038aea7 - -p_scalar = 5c -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1031cbfcdef715d74efeec75e724f56cb8a88d32c7b6b5a626905570df79b6048f97bc3df1b9f55b91b6e58f1036e450, c1f7f4cae5df901da1bc3e946f0c72e2c2125f7d57596e065b2978e2b8d52dcd31169bb7d9356b23551529f1d234dcf9 - -p_scalar = 5d -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 813355b3430aa2d72df91689cfd151547a3545de7cfdb00e1c634764b16142cd1b1cc24f5380675eebd14d71e32d80af, 3f8e0c70994062f638e4c6ab6f5d971aa8d5bda48e98f234018357efc34f9966261cfc071fc54486e9231d377a0d3581 - -p_scalar = 5e -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = ed9602dc7912de8d89dabf40cf9eed19f4db0ad3ad1bd1192e2bfb0c25998b5d4259f70ee435a0deb134a04174225251, 7bc3be41639313209fef39c6248c25eefc0b0623143223f782ea0dbc32343506879cd4b6bf767610a7a492e83e606dec - -p_scalar = 5f -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b8f42fe52fead1e4257b0bb5ad7f23e10be90befa27d2b794a607b9d0ef989779f74ca169bc0cbb10fc0f2630dbc3c91, 4492b45abd20d7919ac9b212aa546c0673f09b17c4384a6eba33c0eb22660603afa0181302869e8221871bcfa06c4a6d - -p_scalar = 60 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 8bf3dccc39c18b96cb4aa43c9741eb4226de4c6581998af2ee21597e52ce08f68fd61e31148840d4dc5293851d15bba7, 4da80493a5bbcb5b311f7bd0a2a97f47062e615f37cedab47abac690cfa11b0eaf81dbf9822783c6991e2a26278d67b1 - -p_scalar = 61 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 8c081acd170d807f87b1e51bac06961610241ed16fef9d9d8f273e3065278f98c1f0db004a49492c7cd2035d7f5c54e2, 7c3948713b0fcff9b3c1db6e3b0a969b34b81b1287765c61282db10bcf1fa22b1b14aaec2979a40bffafae16e38c4a67 - -p_scalar = 62 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 458ac76d0f40ec396e6880f15c434085ca861b4d97740fcab1bcd42525fc2c50f05e0ddedb37f6ddd2872262b0a9e00d, 588efb43001fde0cb63e8243d9d7df8c846959120049ed20ffc36e0aab1162a528fdfb218f772d25a02f6b017b751bed - -p_scalar = 63 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 648c5f00bb28223ad49cae0982d9d6bdb9b2e6b479c8f8bd1b41177c708ba469bb4f9e0f41aa174e6e3835a9b05f84a1, fc1e9674cdd29c42e08b6c4e89e6f2672908a6272e5f15f7998aec708f7db81d01cf69217e5f5c72fb0b7a8aa2733b5a - -p_scalar = 64 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d884d30b2f03f287419f4d2eab386382b0e595a155fac50e100134e2338c10e0f9d9c4dbaf282e57a350c4fc01834066, 12396f36fc1d034d75751338b50246d6ef016d9f8afcb08dd5b22cabcc25394a75eb8dbfb6dd6680b581a6ca09f8ae9c - -p_scalar = 65 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 7e2392bf7bc814db9cdd943547a18710d73b1fad8b8b5cfc73ddcd2c2eccfb1ab539f5fe50c66d708e66c6f69b8adeac, 8c78d2c9e8fd1e216f649a90bdf13efb58c1e2650ac17fabe010be7af529796b001223dde2983fb26ebe6c4093708b17 - -p_scalar = 66 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 180783fc39489b2827c614bfddbdd7a57befff1cb90a319f1c0f6241bb2863c829591fcce7274c8803802ee80fa4f860, 9f5b2dd5d9095a20b3937037c7e8aefa5b80425c412a1ada6172a1f445c5fdc4ab9b4514e4c8c458d576509b865161f9 - -p_scalar = 67 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 590da88e64671048113a7902e3da530d1ad95a94f23d84fcd3f0d14329c21de1ddcbb10eafd402bdd24cabaa21355d5f, f3618ec88d8c2412291d2a59d21bfaad9fe42e3ca7052e3c681444b12790b201e5ad1b1719d191f40b5a7d7e6da40f25 - -p_scalar = 68 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 7117756e39dcddad381f4f06f473127497d1e75fd9f408b53dd4f91683002cf1cfd364cca03bfa6367126ced901410ec, 12cf98f9c880fb304f9bcbcdb1d380890a0bf8ce1470123e0caec3c46361a0625c462290dcf3d0ac1df90ec569277518 - -p_scalar = 69 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d0ab3e3a99ebd09c022c75441a806542862ef39c275075e3077f30e5dd2c23bec367d6aea6e201bce6e91985e5802845, 33c518d392768c5a31450ebaead0e6dc2c2a856ab8dfda9fc8d3dc5656e000725a30c9af5652ec94829810a0266fd747 - -p_scalar = 6a -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b380f170bff65e1c2633179cfa6a8ac6442e0f1f36905deda01780587776c7fea1295b179d724fdf3d303c72138de192, 0e396ebe68e2e2a44a5ce29540ef369ff960b81ef512e7b4e1f467d4b9cd0f5af83cb47d7e4e82c85099312a2a6feaa2 - -p_scalar = 6b -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 77964d793f740b4850994c4960a91622ccd4f456753f40d027c6ec25a0075d4673c21e204f761490d718e8e1f4363f23, ae7d58e8d503120d1e26608738bc71c66a2952ba479a6b9cb77c8b2e5d80c05f7bb038641be6c2860b36aa1e09b812fd - -p_scalar = 6c -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 2a532f0ac16a417882f24a114cb0b8671b23e3f7afef0b5d589f30567bb8dad3d81b74529a67044fa26631ef443c7161, 9d656f406511cfc08b664ce6e12f221cc3a74a19c3bffdb67b27e171992bac6e567a255c91b54316d892e8f1bfc7c314 - -p_scalar = 6d -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 6e3c27bbf13f24033cd18c33b9cff887a911a58af0d93abb5841c5f8a8dcbdc89c7d35833cc1184b0efc2e27b2deb1fa, 0b3b93a9e67388fa781e65b180838a978a52cc350a5ebee2d24a804b0a9f250aca3226f3abd6b3faa4c6e8ee15acc519 - -p_scalar = 6e -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 26956a5b83e5bd0bfa63d67feafb4dc8bdc1c92475053732ce481ae68d2624c8a4ba394e85d138d693f846d4906ef776, 3a600687ef91f740488a5078961bbddf9e28d8d18a3fa9b5406386e38916beadabd914f900eb7ef4053d8f0e8f351c5a - -p_scalar = 6f -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a158aabcb9bdef14c3907b518b02667f27552012c727be036744720b50447fd908e0805000765fab8db3b74805be74b8, f6358897f7d8625639b4b847dcff260133071e06b514d97a5d00ab436c3cd9e5ef6a411a1cfa0469552205fd0b633a90 - -p_scalar = 70 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b4a6714762f45dce83f2fd2cd8296a52fb25e37c9710b70b2b5609d5504c81290d20370a5d66455a2e20654839d6e2af, 07d446bbba12dfb2465e614a83e7debeb8c197883557b977c1811bc5d13895e7e958e332f493b39b57e746425ea39593 - -p_scalar = 71 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 869fcd17ff86a9864a5bdb048d7fa0c2e9815b09139b7fc5e72215ef852bd27fd2c616d1bbe33572f85b86b79b0bda12, 5ef4c20daa086bb4c2f12e83ce4788a84080212603ce449896678dd5184edfd5463ff80d2999b2fbcd87ade96e250941 - -p_scalar = 72 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = f80f423bb48af0e8e53bd76b6e4b3bc543c2a97d5743877a559b40a286dcfd8831ec9ab137796cdcebbc6b4cac6a280f, f338e5cdf43b9b91b66b98c79dfb532f935f8addb23b5a1725af72187ac62ace0b58d896d4e3b0bac6f969582b773385 - -p_scalar = 73 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 274c69657350982d84442a4123c50746a97accf432406bfd33e868f326a488269120f7b3a043456daa4e673b34498f56, 3f3a420930a5ee248afd61cd30ede0fc2065cbc509ced139ff23c6477b75a478c140e24d13851dbecef948056a236155 - -p_scalar = 74 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a40dbba76a0c98442700a45b812fab5c2e56dde7119ced404060d22edb6e808b6d812dba7e29445309e7d232ccd1c14b, 3f52d8fea7e3993a82fb0a4636ef3bfd01f7b3c0d9657c7d7e64e9a13ed8e9a24b6aeb0e16771d06f5e3834263499cfc - -p_scalar = 75 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = f26774cd7823568b517a6bae23acba53ad9e749a9aea738d613e5294fe8579619532b30ea229d070fdcce7a80723559a, 8faf654f7d4f688c85ab9a7d400ea7a4598d64724d867b7e92663fa0f95109fe3934c5b31473fa846bf8985f51aceeb2 - -p_scalar = 76 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b8027be64a5eed689d19bd63befa48da4496f5a023133af12541da528e6a2448d1f2d42a406775a028f0ab7a080bfca5, 546c7955b5c108186699c66069c511df0caadb2f4bbafe3353ec47eb620c028bf87e6b6c22a321dcf7382a5e694f97b0 - -p_scalar = 77 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d2fc5c57998b057713167fb8ec9cf4cda4630ba1875fab27cd55e7b421cf9dde59f9078dab73bcc4732595ac7329d8d1, 4e9ac9d775bf5a3265e44e536dde485c146135436ef6481a298859b7662370b84d24690cf930631489ec9f3fa00ae490 - -p_scalar = 78 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = f392f9632f3b0feda03a6787986794dbcd411e349499fe4eaf07a03eb8994b40d3259f2810248af41b3ea621f3c6f15a, ac678a7865e25b379e40a6c0acd1f133c36985b9b3c8225b33419045c88737c67618c264ab283c770c8e99083f75edc8 - -p_scalar = 79 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 79cd3f1e3891db8165df3c959329f7e0c29afbd47772778a6c33d5d6ba6744e48c9a16e3a896ab1e5198ba40189dfa8d, ee51125e39b2f6e9b8c2f20607d9a48163e2c65748e90de46aaf85ab51b276790abfb09316fd719d355570f5287bfe64 - -p_scalar = 7a -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d109b62984083890da5fddab7e28aceae3da87e136a2812ddfffe0dd4cbeecde89a9a5422a1a0fad53b912fb21a3720b, ebbee398404882a8094722669ec58cc4fd488003ef88503893198baf14b2b31e0f1096c5d6c0669988bbf6a48d72c11e - -p_scalar = 7b -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 8e4a4f6321dc82a6d4d6fd78550418d24b3d05ee4295440514a9c3ebea80907b46b07d4a2a1018fe151198480c4c0b80, 8b3b9d12e5867522fc4543133da330cc757954f0b670bb84a57d50c160cf08167c3945fa8f877360e41b28095e874626 - -p_scalar = 7c -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b4bb1133ad9267aa51cb20d25f083167238df4864cb95a00bdb4385fa6f8277692f3dbfda1435507f9e5ed57d99f5989, b6576363085ed416461662acc304f6746abb244d2b1491cefba31da3a16cdef2aa5b6ae337599a9840b2ec55b0eea403 - -p_scalar = 7d -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 03b2dab245cf48ae7ad6ebad036703ac9436a8cf3450356d50ea65aa46f614e270f25677719d6ada9612b8bc3cfb44bb, 76cc400a8d0ca334832a58b44ff6a7fdaae0be43de6e7855130ac9be1ee6547020c048ce12b0aa5bde6ac2d6bee8f9e1 - -p_scalar = 7e -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = ee82cb5d4c686f3145940572b53625a29c14d45c4d73654245b97c7577b60ca7135cfd8fd9f0f5f0ee101c5ade346cdf, f84cc9fd3a1e1353420c5b2e50458073066298ab1fb507aa068cd344b0be463beada14c64035692c55eec94a4f3b89db - -p_scalar = 7f -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = bbe34e740f395db4a92bb11bd6e0f09d96fde63874231e0feef28f34522c62792aacfa4c569604aff7753246eca101ec, 3816d59e1c6b7f960c297cd1c984d06b61d61cc652e7f4f1772dd5bb5b983ae5a9674240fe752a555591a623406bc306 - -p_scalar = 80 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a6661cc4c241720a0336aab8777a16d2f313389118eb5195c0dd449e7c1c39840f4fa5eff21af80ae484fd9f8258030f, dc62354d5d8853a4d9a811225a86e31c4fe0e1fbcb5fd594a27a5f1b5fdd385add7697999b9e1c7d987246905810532f - -p_scalar = 020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 4ee443f91860144e0b7f54eb7e4cf44aa177ad14077777efcdc4753ba05068eacfc4718769f60e03c84f917203bdf6d6, 13008228729a0c753a42932184d3927143b06c0b5f389eb51436a70547324930aeeec827bc93e4abed8612b3bd44956c - -p_scalar = 040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = bab3aa8c60a8a7a71cd9c342e31644be358bbd6e8948b6e231811365ee61bc954043079cd23ad193ffec6674f65de0f5, 7ecfab0112f66eebb14d1c9b4d5119283695fbfe8c8af29176a83fc47ae85174082f4fbdbbc666f31f9aae615c8a4149 - -p_scalar = 060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 304eaea00e786d5f4d6a091dfab87b368618aa02c421c69415aaed42cca2f15037ba0db6f0f49278ffe3104b684456b1, a8a7f39ea0b9f791808035b692309fdfa6d786e7f62179f09f6b7dc4858f2bdd0a81c5e552c78572f41688b9d3eebf8b - -p_scalar = 080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = bd6066681a87cd4a06737e54f91d813ef972804fbd39a2bc6be6abe3b91f14827be330a822fbbe61bb39a17a7c34f095, a2f436dc0698e2756280be92f981d3e677ac320953faee4f856c51205a750fbc47df957dcb50297040774d1b0ac72a91 - -p_scalar = 0a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = f20e5b8a6c7e9f94c3bf31d408595dea5caacb6256583c442822598ac5d6878a19eda013c543171e9468777a2b389b27, 2f5020a46277c3a7473f2ecad34250dcb7e5a5d08323f283d42b8a7b429771fd8c51a2f1d6c6558adab768c9f4575e37 - -p_scalar = 0c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = dc74d638c785f1439114cdd012def474f016adf1c094b38cbf75bb57da4d6ac4f60262b5dbbb9e4cf3b6fd79dd3532a7, a47bc7cfd8efbe11739fe9ea34f70cb0c7e203f39c915949aad97a4862211e09e0ebe7863432f2b3215f9f2a5726f444 - -p_scalar = 0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 7b81ecddcfc2ca46b9e0718a467f042b49a6481891dc89ff535ee486e03c0851ae3ecda2761b94ba2d268da9b28bdac2, 76efb4917a4400ab4673c23fd4c7db8bc7d1c011cc7d8f381b2408c6389da1632bb5dbde51445470c516a1303e999b72 - -p_scalar = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a24c76d1da73b71a2ce33c2eee858bc3f02750715adf71d715f1ddc63eb317f94f1d082ed0e418512e7d0a16204be028, 93529833f5ba7d1e7d30553d5d1584db2eeedd5e5b8fe68c60a40a598afd219a1030e8f9fa3069ed610958f6938f3b7c - -p_scalar = 120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d061fcb5f69a732f7c30fc84cca23e9d1671eeea9772efc6276d435bd2141b0ade8b59ae0034465b3055ed97444bde46, c04827c357449a7a8165f90e7d373069ef875d5fbce1ad6c0cfac5ddffd0a06e313f72d9917ff1257038cb0590a4b0df - -p_scalar = 140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 3ec851d706c4d48507b3e8b9191a320efce43e873cbb2b3faa299008a84ace074399615939ffcb3b139d9fef6bfc08e4, b38e4855b2075e4d334e875f4d641b73229074aecb099ec8a74862fe3bc654db495a234cec3ce2a3fc27598e5b447b88 - -p_scalar = 160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 0c80134604501d21436c61161861628a33b080bbc3350983e151f53b35fce45855b20bc8b9ca1f6d3d7718adaf4b5201, 13b77a209930b29275dbb75bc326d08a7ddd686b4933eab396894f43048371c82c69dba7ccd2803c7a68e7f19c31059b - -p_scalar = 180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b82c99d2e7c3018092587306f37f0bed46d4729f1771c5d3f05086ec827e6cf877253434ae2c30f292bf8c4508359896, 585becce769edfb1301286a0d8c94319e5e52c115a287dfba3a7ccb8e9a3dc7280567b4066b2250a11febe244e97b7be - -p_scalar = 1a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = e9ba9558a68b98f9bd1e67afadc744e38aa99096770fda49bc4bcd77827b62965a01e68261e78db2d859799609f11ae9, ff718f66a3d6334dde7611e9bf820beb2a4d8cbd770d5a3ffb7c1683a3134b499764513ba0f2774da362cddb35b3cf7d - -p_scalar = 1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 2f6fb08031e6e76933cf684789a9d8aee4b51dd0c9f579443a5902cee85717c53aace28e3573ecf687451ca71400851d, a10da9d2f37fed5b473ba83c43e82e035d36cd365df670b97b289eae69aef653d28c010a187f69c7b40c25cec487252e - -p_scalar = 1e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 79512b8991d197c27b814ed800fe704761c1b06eee7c1e8878b310ee8b5624461fad39ee9819618481657860b1637988, a5c217cf3370ac799e81a6a83a12f5fc90e1d178289438fffb78c28ec5dd99f3e8b49bf2b8844a509fbccada25190c98 - -p_scalar = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 4ebd334b35f68229c85eb23d57d002931fad8b304521d7e612449c4fbe35109c72913696e37f500696a1e74f51e4de5e, 512b2421f10a98238d59508a4445773f15547e41c5e37994f984fba98a832a8e3d4b2590ab9c21d183a47998d20a530e - -p_scalar = 220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = c51c0559814f7d9f39d71b35a50c71074a2d6ca29d6b6d55e462100285a8942994ee3cc9bc3e8cc1ef3a7281fad592da, 84431973e89feeecdb19650cba8830f3b5fcb4c90ece33d911a5f705ba3963ba977a9da1b98e62a7577c3de6acc64321 - -p_scalar = 240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 381e5b521d3f2ddd9386a35d4868dbb2031febb3374661eaaed46bbc35052bd18fb9294a8cf4e306085e33cd9273818a, 723faee0d982a3ebfbd8f80058bbccab451d9d51b6f3e6960bb92056d46253424f03660a6236a50e56c75c5be869e812 - -p_scalar = 260000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 0dc856f4656e00edffe544b3f3263dfa315acfccee43b8b5e10e7ed2dae76c71a9f177e1273679c8fc9aea79a04464ab, 73ddabadb693e292ab3442bfa95b6db8da303ec64e018613aaab5e141efdad5a0f38ca039c5c9547732e537083052aaa - -p_scalar = 280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b4315ab11afe8540cf6ba7db0f63dc797ad61b8ca57dbcbc1f719f7036fb5a4ed86e85a483e43c268f0e1908fac2674d, 3ea75d8ef49242ba648f43739f2d59dbaa7984a9baeb69763167a764615478200ae6960f77c75ae2fbb717aebda3b20c - -p_scalar = 2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 7c18a7a8fa5753e85b6fd841f76a7b01cf6220d49d0216138213e04ad04e93359c03aa457c714b9ac4645ddfc70e9172, cfad7cbc14bc2872b5747340ae8b0d6d63c30f3538bfd28a48a143f3ca8df31c0e68fa60dde97002278b8099491628ea - -p_scalar = 2c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 0005bca678d1c0ec1a7c4af600d31e7ff4a4f3afab047cdb8ce2db1f4645152c64ba3bc73d501e010b262f808f1915f2, 08b971756d2d7e38eb6b39faf23c3dd3efa4622d039a848db05c781a0334a7095d664efed15654200a12eca1901a144f - -p_scalar = 2e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 8f21250473e722c5d76624e1c9fe92200eb5e4ff0b57513b30bb969b7a4289a53dc876ac1ac8a2fc9d420780b42108d0, 2f8425b13a3e5b657116a5513b69263719bc16c91610a5ffd5954b9afb73fc2dfc3f76208dd4c7d2131ff93719bf5b9c - -p_scalar = 300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = af51c5bbf42e0e7c92f031be99275c32ce5ab665d8d544e60b06aff65c27f5f6264a09f3f9288555597a26ffb4dc8600, a524d72265d5336447375920ccb2b0a80326665791d3352618c02d6606c04822a7c045947b8cabc5a44d74fae1c84c92 - -p_scalar = 320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = f2038e9fe8e9ad7b08d7d0b167b00a8b732a3b217f4e0b07fa70e3732c9139e3c6dcbc31b570e7e381eedabc8f38b7cb, e80e1e627072b0e51c5a91f66178175a5c6cc28e16a7e540e33de54780a9a6a0fe4ab4da8dae1f6f3cf2282d70341cd6 - -p_scalar = 340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 308b37a8d48b9574d1ef46340be2d8415267ded09aa9a5c005037f26de2f444ac6d97d37e7a97f33c760823646dd14f3, 06616ad0db0742c4ed9afa666400dad08e404743f47f0c44d2752219d3c638a4e2ae9625c7483e10efd08788b78452a4 - -p_scalar = 360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 4ab1773e6c85c123d67aed02d15b1f9de20b10f1f1021adf76cbc49717204f9387590cedf4db6d03c3db1f37120b62d4, cdaa5cb4d62ef982d33d06dfd82ad3b82bbd59cb0653a72c22bd3ac43fba651f1d280695af8cfc65a3b19b4b879e799e - -p_scalar = 380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = e9ecf6ce198c99f00f6c5993c82e2013e2f87d5e2973be1d4200e00670744f159fc75c0aec6afe4324496a8b7a8a6d47, 70fd207c430346cfb0db45dc0c26c28c1bd8c5edb430039e7169d0042f044eca410b4736cda2e26c34208dfb74c827d7 - -p_scalar = 3a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 4a7788de2d65774a2c8a2246a3e93b3391e674f5503557f209fd4dea45f979bba7f9f7519579f6d40c595629484cba20, 76d049fa10cfa0051b8ae5cda2ef7750ed65cae4122be0c7e280d3a70a077d40518fddfb79c4fb656a6b3a6ceb96f0b5 - -p_scalar = 3c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 30568303868326be1f28862ef23931d5623d44b9e4a0bb425bdd4382a7b62effca4ca7cd5a03c014985c8f4b0614348a, 9266f3e9090a365bd0afc6a2eaa1516d84cddb6450c0f2449d48b7864e18f5640b23fdcbf53b5eac7af2d5f37d1890fb - -p_scalar = 3e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 37eea04d226c0de31df6b241f5ad41bb711e5b378c68c6d120f84bcbc82761b390c700aaa28b9162a408aa1b48819870, f6eba360a17d1187ba90d00ec85b901f370744f7dd12e22394e369f18ecff85f9d752e700d32c0663d4f9275bb3be3d4 - -p_scalar = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 7fcf0ecc91251b6e64f27976d5d7412b1a6ea51a2a883b7f340c8ee3ba4a3301ecf10abc47bb619e3afdee277d221ab6, 76cda28580691fdc2c8c6ce171828ed40f7c672a2abd989221c48c29529e4d33c71b74681d1ec1a7a0c070bfc9a4e748 - -p_scalar = 420000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 7e3e4b94ddaca7970a21251f7cc002a4391e974f262a7c900fa492995a642da315257c37b24074d0000d342aee928391, ac4d8de8e7fbdfd3a3e2ce952754e5bd602003e8380b2fa8d4deb7e952773296442110fa173f71b837f3baf08bc1eeeb - -p_scalar = 440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 63102e93ff029787e2a938890afc827f951f92186359cf06536c999ce295c45100614bf206b7e166eb2e48c10bf4e94d, 1955615451d5161cb783176f1ef117c8c948168ee33d0c4b3f6cb359379fbcfa8cab208a6d78bd4054d68383d53769ba - -p_scalar = 460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 5508188555d35077eab1751b07c4cf3c9cd6be7b2601743ac8eeeb6ad5b89ac7e6a752c4783e3da875218ff22509a1df, 7f876cad80e31b1080ac017bf9395a31b34de2691ee18cb6ef35ebc4ed7a1d7f0d9a2f530e1bffb71cea455ffb89bf7f - -p_scalar = 480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 3838356a53264b8a5239b5c4109797d6ae7b59c5fbe10a477fd7fd8eb3c2eff77db868f3a950dfa26e7a578340517347, da35bafb93241a0121950f007cd7d042c209b10a5f90c30c01e5527b9dbe5af49837910a96a705d37207bab4cdf573a5 - -p_scalar = 4a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = f27d64f3900000b28c140f1444bee3bf74ae1bb86f57ac995957f390ab2f9f38b6c4ad7e6725e6bcf7d0024dbbf692e0, c93e0a580608f90bbd32397bb8005fc96584d5679eaf205bc4a21f50d1af356fe39bbe0788233bdefa20da958d023979 - -p_scalar = 4c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1969eca437dd1341ca98c4364aaf2f73c0c88af6aec23cd24bea31ad623e7e55101f055acb1b1cd5a319340d6e6c0deb, 3fdec13a97bb25fa581a98ff866ee3063c2ef96b8b0d9d16e6613f16c291563a502366abd150a4f794fc67616879923c - -p_scalar = 4e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 2117cae94f663d08e5bd0119ed5225f74fed82fbb2d8dbdf78482d89dae531a4ad937387f2e050ade0732f6de3a1e252, 8d4600665985a453c66519d477e41ceba2a18e47164a495cd694ecca40cbe0d2a761dd7e61793aa5664b811d15e06487 - -p_scalar = 500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b942add81ef8465b860578cf416ccf69f307823e718c8aa3f9fbce33a82d37361c77a3054f1e0d095adf3d9a111792b9, 338563147ab01625940996b76e59d9cde0ade3d2340c3347066465723f6256f31986d10f4fead757611f3069326b8d1e - -p_scalar = 520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 5f3fe3e3209d9fc047f02c4abc4c0e4ed15761fea5957703efaa521a05781b37a23f342d40f5ab43c72957c2b56c62ad, 7157cb46734386bce998fc7d6cd2be7c38bc6b8bff408edbaa881abd5153c3490354f35dee8ec754e3ea6721a9e4ec84 - -p_scalar = 540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 84422ba89c2d7eb037b11137f15f0cd229b0341dafb73ad113fe0588ba057fe284c5d6a71a50c560fc9660a3c8808373, 3770f3097a3ab2ceaca17abfee91d2478f3214f360dbd5bd6f776a561fd288022857cfbff74c857bf4a6a53bdaab1080 - -p_scalar = 560000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d2fcedcd2a1986bab43adf697bfedda152ae359080ec87ec825104bc4ec82e0f6dbc484f2356b6a44dbfa5831af13e99, 5261fda4c1925c1fa0cc0ee1441b396f0f7720215384d0631da230513cd2a7f508b26d973901b0a8cb6aeea7fba5287a - -p_scalar = 580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 0c5be4a1ab204fb0ab8802bab8da8e68be6bd7b92c078aa8716574c5e9ae3da03d081c0d7f15c9e3f534f145e2290eba, 54d4376a8a45a36694acd76e19aaf2c37aac983b6db13d2d6391d31f44a32d01c6d62f277036485a52da3a12f2c0ed4c - -p_scalar = 5a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 58ec20b5fa1aa22b08285f05e94af0d0e9245a047205187c5d74a59ee05637183b0b3ca6276cf8c41cecc6cd72c1dbda, 4f1ec02c9526a9f048b631552625b7fd338b50c7007ed51c98a85a3f92bfa6d1f401017164a37b8a82c98eb03eddff7a - -p_scalar = 5c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 71d663c80482a61b9e9c222607f4b670c77375da47644b079d86bcac8b5c43fccfa41da6f89ce836b56b035e2a0349ad, b9eead6d51f3682c75d428012b22fc2164b9caa69ce467aff61f34d58358ab730e312080b77cd4a44bdc18c710dc8bce - -p_scalar = 5e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1ddaad3e57a8a6ce086cf9d3c08d007d4980b91eae21ee2813a6eab45a5f233af7bd1613d7e0ea774be55e045320c643, 3e955126a81a59d3cca7825f07deb834ab6bee6e0f6707867f225943e83b1622b259aa24ff33c2bef82f3e6347394acd - -p_scalar = 600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 5016c8533573235fb1fae2fbf363100ac12df68cce52defb1004254501c4e17190cab0eb9d74e3f6e44e3f864b3759cf, 3e25bf2ce0a7984dbe389ee00ab1b789a540569ecf788d16cdb67a7ca5b1ee7075df2bdbe807b10d72b2149ae26dd164 - -p_scalar = 620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 976a426e7e387e5c86346adfc17b570aa537fb6be3a14ebf219a097cca4d32e7607683d6d30481954490d42249f884ab, 9dd33f7fcf495103740b47cdeb6949abe5926334a1df5215cbf896be7bab917d078fae93b4ff6bbe322ec0fa9b05dbe4 - -p_scalar = 640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 972877d5c351148008e952e365e5ebabea435fa0e9ceaf442a773270df98069e7dea27ea124874854df02a7d3088aebc, 82a0fa5c055e41ddb48d5e19e6cab8ae82678717ee376eac44486d1d3cdda0de1af541964738386910a97a08a65fb32f - -p_scalar = 660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 9c3eb2bcc338e60ca5e4a81611e943ceea32131487917fb3ff4d80e7182e7578122d7b16cd1909a4a9c5286d78c8e4f7, c578ba0bae6232250cb948a56ac704fe67f0783709fa36a7b3610be264ea29f31e36d0464ade815ddf1a75248db896e6 - -p_scalar = 680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 762b3406c6577d810accb4a7922d3b253a998cdcc8995cace659cbd6ace07e138540213ea7a3f2f761dd7692f27eed54, 3d82ec206747984ac97ea21d38dbd7b54928d08319b6f7f7f7f5add98c46732b80871fd1733643a05f624b0b81fbc8bf - -p_scalar = 6a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 8df49d947bc531c51cc8fa418508b201bd7dd40b7a34781499b5020891035d21e8d66a73fbc1180d5f29d3aaa7d9e25d, 724eb5e24590c870c314181f86c6c208c04be66e5143f1c4a93bb7e8b51f62eb7ab245e80d096e80a8d33a9e0f3799a1 - -p_scalar = 6c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 490753350b7e4afcb041ec67cf575de55f49ef880115b9a54771281390833f18b5e8876c499a1455bfeffd5356adb6e4, 7972f945009f16bc020897663e1b074bcc11e91d866c112957bbce591912ae666244e7e02505265a52b23b5fa0f460db - -p_scalar = 6e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d93bd14b4b11ac38c8de9fdf7506b004184b98d7ebbb8c4dc3c2cba3492a416a313c0cbcbb713c2501b7f6985f7f481b, 17001139e9c1cb5a7d49a5a8d893102d9cce21c6e64c77d20c5a4533f7131e466d4228a3609187deb8eee625ae4482b4 - -p_scalar = 700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = ada548c3b46f1e376b9fd3f7f19df4bc7f7009d735b193cfd8e497fff172c7cfa80a8c0d2771235b46303171491ccb92, 0122c58fee595cf0cc7fc5ef4887bf23d6592a2886470a33d5edefbdac61546910ddba285187106678391557385dfd8f - -p_scalar = 720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 2d56966a409303d605de72b7f70a3994bbaeed33041120a96122ec75d132b62c870346945bf287ec264b3d9d11eeb9e1, bd4e11ef7138f960033b5ad8ea99eeaae73314f1990b214056f0fdace1baaa6455d3f1fe657bda944a2d59d718c5f4b8 - -p_scalar = 740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 24ad6b0ca28c80673f16d1ed3b5fe8d68ec00d9fc04d8cd5937a15f52a67b12bc1413da46682c7795d782a0778664144, 23261b17edf4c77ec88f1ab2e9428a4d2979148dc6c7b1ea8279c0a4d53f3dc69d3b3d4054d0587a22e1133bcd8cd4e6 - -p_scalar = 760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 326448a0597de5b3e6361a339e0e1c54fc3e322c7496d0809030804ef95021bcd40b4963d24a2b6eb9f1b4ae3e29ef63, fdad564661686c1a9f343b0dd787a81dec8ce3d8ca45e7ce6950c0ef933810aac9ec4351f39de788946a3be6d38bad81 - -p_scalar = 780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 20b358444182aa555d43a4a6191cc808919081881990c13c49b13eb95acc557287bc4d75b1baaa7ce3052838df5147e1, ebefe138cd93b2c77a493afab8f041eca2482f96df09713a72ecf4c6ff3a516039191f9d8dd16e188f2b65b698f4e02e - -p_scalar = 7a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = f04df323cee02f61cd5a7a956b1f77beee55d9e0594c44ac013ec26cee34c1dc43011b315c10da9bcbd0f599c8e64d24, 3bbf69ce23eb524e62019c75ee460c1830fe65422caceab95fd6b7d4bdc356fd4c3bc93dad13893632bfd92f26917ae5 - -p_scalar = 7c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 010865380377ba8f43a195425fed884fd7323e01a856ae6b6c8e22676e97f5af75921e487576c3ddeef03450e10e8018, def29fe91da5df8c2208dc13f5ee047cf372cd74226e7adb51f674806198412e39031a730f02bd7e83242f9637d57098 - -p_scalar = 7e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = eebb047e6d7c9413a7235359a60a123952d9264a3ba048ebbfb45e7b89486d643ee8c19f0b66d8180150d085890f1e7a, 8519c5462deb0512327cc059bdfec928225b7d2bcdf8790e8e1db2a7d9bd9a1e33bc0a88c290de96d5018d1666100cc1 - -p_scalar = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 60ad991e4e4eac458e5c12139ee4718f77b9b6dd6816b0099aca885c1a0d58e235414174e52691403c90a59f85adde98, a16403a3d6fbfaedd184b638908577d0a066f6d2bd5781cd345e0038a150c1545340b14ca43a02d53ff3ca97b28e09db - -p_scalar = 820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1f1b6cc936184c1f444217e60b4b3953db3e9066d9772914d5968b29ac900f4c39dd0be4c1125a63782903630deecb3f, 6a0beddc911e8346635ba477be864d86208b4383b4ea87e2636b535bd4d52dc62b2bcac9d3a4cff0fe9e8f3d8178c485 - -p_scalar = 840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 9db0ee0b907f2cfdf5b944c9040b7ad4d4447c1b20eefa54e8804ab3329a0b9a9713a5e04894f486a31d3524b295958d, e185803564bb842bb06adef60ee8d432d4b835f9dd2b21101f99c4a54d63c2ffcec8dbe057cae89bf4e5e0c6ac7b5666 - -p_scalar = 860000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 2f6bdb104cbbe283f9c8e74d26b173fb5cd20671daeb6361192707699fd1661b8ad7721233e84ecf88f2de40a7b3fe4a, db87fab8a373755a5636f4205e779451cbe80ad85c00c5aef3ef46f1042fde764c20f4d91981c7ad073ccc7a27869ae6 - -p_scalar = 880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 6847c20de211c90eed3a6508ea56be90d9b625dcf9ce0cde6459720f8eeefff520d0c4740dcd66f6c9898355ecf2a473, 9383f9a522c8f088b631239cbb8f18ab35370d882eba47ceceaa78b8afdf64b16ddd154ccfdc2e91c92794138e58c311 - -p_scalar = 8a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b1516b4697bf25d1c1c0468307a8949bdf7187596ece704b26adc1564300df17ec96212c96174bf6bb114c0747f74319, 234f8b7da26d270d3ec2ee3caf38512fab41797ef6ba1c473dc159efe0bd95b5626c2de4999b269f627c05afb749f7df - -p_scalar = 8c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 02a37213fac8a477162aaad842f412c5aff5505f1070737afb8a08285bb5202d1ff2549ec4c9347646a95735f8171804, 2855e2dc8727d0655dff90df8191179819a817387d2fb6ecc8c56fc624e1a5be64195f4c60399878fa006dc86cd0f71d - -p_scalar = 8e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 80e70362a61f6b8e5b9d91d31e8f6424ebba130bb3663e1b6a9f149f55dcae398360743ca827378dfa8cd197722395eb, f1e2942a8d5c7363a0af2e50a90f98b9fd280fff71bba7f6581ffe8717c49efd2f60851db832c783f0a9601e20f2693e - -p_scalar = 900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 3a34819d7eceec8835d9fafccf45b75b22bbd01853e14183e09f04e6223a0ce868ff316015c6f7f5fa070e22142403d1, cca372c94887b183e61ed2fa9a17ff557188260fa0812395f37ffa9a614d5864bcefc9297be2eafa26308a982ccd9d2d - -p_scalar = 920000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = e70634860b99a9811d923a955e2994097a0a8df4a85fab6ec4a354244dc0e8bcd1b7191b3cfdbab92ca47e98ac1b85fd, be30bb9c9ae22a739e20ca5d78d04cc76fab008306d8bb083184d3cbd8b8ff39c7d3a6ac56223fc8d295a8c53bf99afe - -p_scalar = 940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a6e5585e996d20338e857069e462cfa8f60ce5d991f1d4875c240cefa3ef520288322d8bc225ce6edcac39d87c1d9f4d, e44d741ebff7641a073463d95acda4738b4ebbcdeb76dd6eacbc5f5d5cdce112326f3ebe06f8140f8f698a5ba9d7e195 - -p_scalar = 960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 0a14f23eb0470188da64bf1e5628f2863ba37c232de1294438d28dcfa9312a5e224f404933c384e47b7bd39f39e00e98, 3bd23cd7f6e987117c6ccb4e084f8832807e360b62edf959631e8e954b5513d363724185fbb3c0d4dab94dae3e1d8610 - -p_scalar = 980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 6189f5e41a991ea2da296dacfe7d778f186d3d934f810d8fbac785aeac0939e3c7c9e5f1d27d1f312bb6e7ec3092d0b2, 9098fb861dd105fc8df32c6f72ec9c025bb85ce127cfbb59f628e7b78e692056fb550a64775b2335f67086b269cbc9c1 - -p_scalar = 9a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1dcb9da2e49ff45c55a12128a50853d180f745e27f7209ce78b59db06f2c572163a394e1404b5b23cbb76478b52110e1, d04b71d399dbe1c8e2ef514d62d0f2737abbe81cd62cdb014a6ae0bec24b6e0be3d26c9c7afeed373589b9b4769045a0 - -p_scalar = 9c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 9bace7adf8a7c0bacccb784f77921ca4d56ec8f223a1656e16ddefa50589fd01f3dc472a8e2c58e9aa452e81cdf60f9a, a5bb92178e45d85a37d7033885de5229fcc9b83c6d5df6aeca667e877c31798a58f3fa853cb1834a36b10c11ae0fad1d - -p_scalar = 9e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 7a51381b1772fc22ca98304759d16a8b665870899d73fb3bfb3339ee5b1cd14117a70200b441bfd0f943b61f038af8d1, 96e887694417a0e69651972fd1ec50d9c0c7722a479f85af48a8a614b99c265aa2e52adef33c7b57adce0820d39227fe - -p_scalar = a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 282358aa2ff95cfe76ed6fe718bd01b79f67567fe0a7ad0b990e3425ca7b8369b69e308bf8ae956575cba9d530a3ada1, ab27ba46c269d3eb4760c517e2326e9bab0799b3d9ccf87d69644d8d49584705762eacbf3329837ed72d15bfbef077be - -p_scalar = a20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 6d7604cffe8d69d781c5409e908e92f8e7dd1034ac8f1eb78fee1bd6e78c1828a32243ccb026239500cce541ad148e09, 6fbafa9fc0365aa73a0a9afccd9a0b0af6ddfa8996aa60d27c23b3294477842d6cbfc6a85c9edc13def7cf22d14d8e43 - -p_scalar = a40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 30369ea0ee12356a6aed101a5295e728e964dc9c9aabc3fc885253779336b2b939b1a9c697b17ee608ba5b61fde4ca03, 535f86cabb971be661ad79dc17ab28302e93857a5e5a1afbc4d08554aa6f8af2c589610e2060b83f1f7e1fde3717f1a1 - -p_scalar = a60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 6f261a720ebf3f5d30519b089ab91b5eea5b069985bbf511bd196739a548a22078cf85c78720ea377868bbc67f777fd8, 090f193e862f1739927d1b495a9457f4236b3088a6bd9ebadc722f5b116ec26a2a39b5a09eb96a1d88948cbdfcc19ed1 - -p_scalar = a80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 33a95de702001e8cafbf32372a69ad0d093c3dc2769de89117779f5e7bbc58fef517c925b79aa0ebee521c0af93098bf, 0da686a7e905e4e91a3263c6354cc78efb0f44ccb035fad00e3f96dae9fb59b84c865c0ada438265c4cf5039cbef5d4f - -p_scalar = aa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 35edc49ca54239bd0adc36938b9046147f82050a305601877ee84419f5dfa296664ca68b46f5d9044033ece91c1f582e, 11d0188cf60ab49f8e3622a34d5ac7164fb34d2c8f36dc304e7f07faaffb02a5cbaec45235298c1771f35c54ef7abfde - -p_scalar = ac0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a1cae78c7b491c4d752d98f6018d7c6455d40c1b2eb7f0fd55f7680599440d4bb16ca18bd8e94e49291d65c801189d9a, 80784bbed565fd8df2155c8c16d9a90ba7c4cc955a97c1074706b6720556badf44b76a94c31132d8767037397099472c - -p_scalar = ae0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 3c9e1bb5534739e879ab7a5bc5b76b4fbe21ff8d02a855fc4fd1fd2cde268c8c809a6b6cc5a362e31ee1b6033b28bcbd, 607efe8f93f6250043fa333a77178b50fba0a540d96f3093c53e3d2c0d6bfd5c3d5d4ba17a5dee2f945b26595a7442f6 - -p_scalar = b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = f1d5b458dc7dd67fd6f1b8df647cad2f805b4048e097047f15b28ac7b871c3f3ee702764a35d24ea8b2fc4e96484fd40, a09139a277d6ca1e6c52df18b34140e5d7c12762d70d7b0b50eb8ae16aeb74a909e7a140ded8b050cdb3ad64daeb77fc - -p_scalar = b20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = fce39cd1e1a9d1708bc1da4093b5b983b727f6a0f7728c1ae7f34f712b796613950ef6a86c660602cc862ba801631411, 40f67e942f5f5010bd8f326581138444ebd0104e1bce69683ef160f5d38bde87a645acf0e72cb5440e618dc26b6cca85 - -p_scalar = b40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = f08cbfe771c4d06186628102bdf579e6675f12cca4fa74a94ebfbda7cf3dab12907e4f38199c51764b0c7d0c69c284cb, 7c3f6e6d14efc01fe3f8ea686db4514e7268757eef2e177e8352d73c8f3f483f492f2b73b38d86ea6221c6f2fc43e346 - -p_scalar = b60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 0e1f061a92f572f08000fb5849e023a3884a0bfdef058b6faa278acb01a177dc1c919775c21b9dde3169bc090cc65977, e76f6df9bcd64d74b1a6e8397dec75bc60d918a106c6ec23bb073fb50f65bfdade195a617df28192d33690d1241fdb80 - -p_scalar = b80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = e4c35c2244ab2fcc5bd45adcdc6938b91588c4712a3f012d38a1ec5ce16b874de239b1d404b6fc45494dbd2665925506, a914fdd7c73556fefb9e9ce7d9c15da935098689a44f0220c5f1aa3867d5b6d66d563c4cebb02c1178342601778ef75d - -p_scalar = ba0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 2d2542568fd9f423f6d41b65310fafd4a5591868498f151f764ab40ace8713c9023872c88f2d14ff40fd181041ad343d, 55bfe99b941ed913c624012aafd080306b6ba1aed2cd3585df42566719290919ac744d081e64daa2ca5e9ce9d05b117f - -p_scalar = bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = fd96bd168940c7665927968beb0f6ca5717c302a766b69dad2d9da967e155bd5323bd638835a4edf2f7de141a48da000, 2ca57dae6f1bce9657c95952ac481916770ce1e9dceb3f31819c6adc5c2a8556b4563273278f6ab007608ac75ccb028e - -p_scalar = be0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = eb7c7b187673dfc835238e9ac5d8b3ccc2493d3db86726814381646777c6b7eab211af35bed7aea0a101c2f02838469f, 75f8daf946121ab30a2a7e4cb30007f68afd7f7eba32b20df0596f0febc4d676acfb32e69611d48965f7bb9c8b157877 - -p_scalar = c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 024cdcfd74a513932dcc51180f94f4d767ef024eb3dbe034f4ac2b677dec20d2f9fa4483d8b4d6bcb3984b176c0f3509, faceecdde21041ff5f3f019fbfbee3ea1334fade7e84372e4ff31aa98f9d34f3003e707d2c58beb00e3f0153df185434 - -p_scalar = c20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 217e60f334f621e52a4d3ec6d979444c99758103696866db3ee3d96da9de154c65382a2312055ff2a6730cb7311cc98a, d53087ca891c22910c263f79b32f780cc994b65b53b4d493a1639df9ce885428287a95a1a2c5d04019d7799f943a90f3 - -p_scalar = c40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = ab3ae700d1a378c565bd03584590bf03605e7a32d2e2bcf1d69b7c83177305ff6f206002d878a97a74faca8a6af7e742, 88f79e80e676dbb1e18fb3c4286db20eed392e971988a94e7d5e70fcb6d4fe2a7c9da51e583bae39fc8186fe756d64f2 - -p_scalar = c60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = ed111a7a3bd0c935557d173489ac563e8476e71696aae3352dbb2f572373797325d250419c736f9a583dccc1918722ca, a72c7a8de61ea42e74c88f9e59a0b4e3d2361fcb604aefd1b8c5ecc6839f12fc15e84c46eb22c13c5b83310ff4f9ea0e - -p_scalar = c80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d363e435d58d42d2d9f3982e3ec5f7ff162cf27f36ba3ceb1ceee947c3f392126a55edf1c354f4334c98c61d097bde48, f5b063efada24330762dc174921ad66bafefa7d16dc3e5329e26b127283d801726e920a814040ae3d116f28552c997e2 - -p_scalar = ca0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = bc61bbaba368819180d7ec75226d534da72e9ae08144a60f51e4475e9f97151bc404defedbaf8b42178b590f1c477d9d, 8cf32bcadc393da81bc3e1425103c78da7150074365de7080f7713b7e94215c8e38b469d3a5f6e222fe55cf115d5157e - -p_scalar = cc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 218e7fb1b71a25a46888444f98a9add79be8a33f67d61b2ed78ecebfec57d967a4af7a2d749862107778fad7e65573e2, 9701037c09db99a5d63da33c01c42111c5c869a08e017b84dc96d07a0397c834d079ef51ee5ad32608a59487a0b9cdc4 - -p_scalar = ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = bba8c7b11cc64bb5a6581582454dc4f3d92b8ac4d708451051375d6af7acf0bcdad4e4b8dd0ee7526c79a60950a78a78, 6b6804c7bcf4254c2aadff1376e71f2fa78593186274d8e39ba61a7495527cf8d50ace5155af45749473bd3865adad84 - -p_scalar = d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = ced5e4cf2b4313900490c970f5aa2fc4547bd050b48bdd872e0bf749e05b18e763ad235fec1ceb74e222eba4a4dcefe9, 6da57183ee47a9bf27118db07276f567aa086fa1afaef2595b525dcfafc80316bb48dbbcf7c4a82bf827d8fcae2d7671 - -p_scalar = d20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 5526e694909f969fbc6d93d12b1ecf5da54322ea0b5c08c1d151433074d7b4608b7e7552cfc6aa6e17f7e937cdf7bd50, 172c700b6e2009a6d2e0998d8b96b6ddd8bafde0439d7969bb4f20c2decda994b88b7f12513e69928e6a565c8d93bce5 - -p_scalar = d40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = f79e2d39b2e8fac1bf3cd96c034d021b15245ac616c11ef494035a1f0c82ab81c749a6a77709a52b8357d8bb460e77b2, 9301bb39c0b773d1762f3b3a2587cf4ce90cb422aac571974da7b5542256530ccbe064ab4cebc408c78feae7b4930e42 - -p_scalar = d60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 7bd84d4848a7403bb88ee110d4c2aca40e7ca13cdcc93ab719e453d26360d0b1160eeaa784e7e36db3ca02e33c34e954, 881501194bc77167ff61ae14d6ed1e8892d5c9efd156ab6c2ee716f48bec18649ce66721472f0203d172c2fde357c707 - -p_scalar = d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 058ff1904c89c9a87b6e3e4d1f54ef38a901f2551406ec90b28f476b59a7eb995ea6a57c699397bfee536a26d4bcaa59, 4cc159e64fe6a7adc1e6a87ed31f0696c1417bb9969b46519e7e05e98ac9d0a1016786cdba1ebd97a96f05f0035ab933 - -p_scalar = da0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b5f1a6c4605f84ccade63185d292887e6000e8b97de5f75dacdf3c75960857e5a56359b898797f27f6666dbd1e720925, 3bb0c2563cf5389eeea64a12b8d49953019f27ebb13b0586f0f68848938f8c723d93037cb4d0b41eb388096c9e381f1b - -p_scalar = dc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 13db3201919c187099c2ff0b948ac53b031fc087255e8c5eab4bb08268cc66781f72c1f8911316f6eef402410ec537ac, ddde867460bcc82a1f71bdec7e815a9fcc5601bf42de10018b72d16c268e981c42005dd80085bb342137e02dedfa85c3 - -p_scalar = de0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = cfc013b68f5c17418ca6fcc4789fbee8efe3a068daa3ed3a85ce557932132eca1c048aa58f30fb6a7912ca4e168fecd6, 973e341dff8fb6e8de068776265f04d6b665d712989a0dcd9d3d2248eea57626c82692298c41a6872e67908b19319064 - -p_scalar = e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = f58b321ed1f9bce830bf1ee34f114abc72483dc5b3e1d84f0eed233cc25c696a5e9abf67d640c2a1da828fe556467257, 0f2f312caafcabcd275025cbe05d0f92130a9b620110779d625bc3148d567d2123d0efa0e1bacdd634d9a9b468adb0cc - -p_scalar = e20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = aaf3726a32ec147e505f5eb8a58e699214f3ee55fc5144da5629e0626bc5035c0a3de8f6666dcfb1695089a73532e60d, e8cd549cb669efc115a5eba2c50ed0864791a4b43977b0dbd17e007de5e271d60b631ae3815e1138b69010d28e148866 - -p_scalar = e40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 7f517c9c01f3f401b21e275d8b991b2903c6831675f0f13991217a6be34fe2e0e4d168e75b0b727bec22bb32205a5301, 70e02e42a8e91264f79b85ea72d54f45dbd34f94402db45347741ea3833ec9813ab8f7f6afbaeb4e4416a2e71aa1b605 - -p_scalar = e60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 8aed67b865bac360c6dce3bb1fd8ee17442ae6052b0dbd5d807d8c25d5126552b050787598a85112aad13b2f80f89c8f, a89d6b8cded9d1e0230226ba7aa42c857476445cabf994a497a643a529878de9596737dca9075b7769be36ee86fc7101 - -p_scalar = e80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1690687e164c44ba8b5101310dd4e1d4b120589021649255e7d94f4697b97d7c243622f9e8a47507e787054518ba5236, 62c155a73a4f0718b2d325e37e33582133522150c6e52fc2d55ee8f83b9c568900000117f597b3c29a44b2740eff010a - -p_scalar = ea0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 152fe43844ecf2464c549c0e5375bafd29a9b8a5787c26f8979564774ff41b268a370b2f4897efbcaf2c49c193eeaaeb, 6f10aa28d18cfd12a1a49abf7b7b5ba56cec6d2fe1fcee878b5968cceced62e4ef5c0e0949d55bfb4ba25df0cccd006f - -p_scalar = ec0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d4b25ed3883ebf03e1ee7508c3ff73564f4576a12c9c77446bdf53fc46c1f31b3024ce311a7194613d92ecc18f8802df, 38124a24938bd1e4969fced00e605995147d4cc8bf12cebcc91e8ad9a1696c09c8914404ee131056e23b9faebdf3c536 - -p_scalar = ee0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1a0ab3fe3e1aa3b2da05dfc0faf576dcb6743901254cca1a54fe2ed1821745a31e6d2cc15044f8e3aed505fefec299b5, a3f8f0122452bc6ca4f9932141fd832f862af5e0da92241fa1ca780c059cccbeb235cb042119df38b2020caa49bcb238 - -p_scalar = f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = edcff8331d6dc79d7cfa71e1cf1cb8b3c11c95a22527c1ade6f0ad9bc0579c3e593f085a6dcf56bf5bfa10cd1ca459ed, 862ac252ff6e436fc04eb74728de2fcb12aaa1c81d9f913fab3c748e41c5ef83409dff68ebb1ee5fa7e3b442bcdade36 - -p_scalar = f20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 91d26e18089b6194c58fed0143bfa89695f4f8a7c76e93579b34ffa032e7bad15a5e1b61f59698d9f12d87d33dad94a4, 71a302e9bc09f3161236ec7dd3cd2727a829c0ef48cec82f84943c05000ff3bbde46285e57685ca53de725da29d42120 - -p_scalar = f40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 4a95f7f3ad4777a41ee7797f6590d0ecbc2c3b8d7a81382003d42e96afc190c3887071bbcac96dab4b98cb69c5c8a182, 20df90e64170d181e4ff04d75de8e3748a6011e374acfda50678b40968b3f570807398ad5287254985c921b2d572d8c9 - -p_scalar = f60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 92fc21e8098c5b74dcce4b866dcc347a56485fc5055a1e76d2413d03360766ac3a0699eb49cb60f46fe114183c5d5268, 39ff0bc8a4914f3f4ac168f38c3dcf7575ba26656fd737df4e3501d64fbe6b2569f15c596db30aea1e7116e1978f8516 - -p_scalar = f80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 0b2d3d2ee01df4e90f17d421a6542ac0bbf2d5477007f2e9840210ee61ff9d1e7734dc91f8fe7a42e6bbcf0bf8ed6302, 9cc5d53777ace27e110e398ef4f6001dd205e8933bbeac442303695191af27c87c9d084dbceef948adf1b0457b0c8fc0 - -p_scalar = fa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 051860f8db9d37b374ddf359c387adeacbea730d7b0b1b3dc9ef099a6d40b18658ec13e188173f1b430f3082d997bb97, f78653fd02c0ba349544df3cf5bff034741b7dc6a382bbddd867480f5e534e39d22d02da7688686529abbc43dceb6e56 - -p_scalar = fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 977b4bce597694b4780ec65de871b7928025224f7ad39d9aa441e5035bcf0e19dc504f01d3ce296729262b6d7636a78d, c816ea7dca3e95f09080d03b82ce409e0a259c1f0706fc9749963e29f3cbeac4e300785268b74ef11fa15148801c10ee - -p_scalar = fe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 75c5b10bcac05c018d3e2eea122e7ff2b2f9d05f3cccc6b797a1f8404db70676b7b8f12986a52261b0428d6baa542b1f, 8be9dc2a6cd443a96ef018bdb5f15589a4b9b1e7aca5a799394ba8e3ab5a671d3ae590f619124430327f0f274a2106f5 - -# p_scalar = n - 128 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528f3 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a6661cc4c241720a0336aab8777a16d2f313389118eb5195c0dd449e7c1c39840f4fa5eff21af80ae484fd9f8258030f, 239dcab2a277ac5b2657eedda5791ce3b01f1e0434a02a6b5d85a0e4a022c7a4228968656461e382678db970a7efacd0 - -# p_scalar = n - 127 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528f4 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = bbe34e740f395db4a92bb11bd6e0f09d96fde63874231e0feef28f34522c62792aacfa4c569604aff7753246eca101ec, c7e92a61e3948069f3d6832e367b2f949e29e339ad180b0e88d22a44a467c5195698bdbe018ad5aaaa6e59ddbf943cf9 - -# p_scalar = n - 126 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528f5 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = ee82cb5d4c686f3145940572b53625a29c14d45c4d73654245b97c7577b60ca7135cfd8fd9f0f5f0ee101c5ade346cdf, 07b33602c5e1ecacbdf3a4d1afba7f8cf99d6754e04af855f9732cbb4f41b9c31525eb38bfca96d3aa1136b6b0c47624 - -# p_scalar = n - 125 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528f6 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 03b2dab245cf48ae7ad6ebad036703ac9436a8cf3450356d50ea65aa46f614e270f25677719d6ada9612b8bc3cfb44bb, 8933bff572f35ccb7cd5a74bb0095802551f41bc219187aaecf53641e119ab8edf3fb730ed4f55a421953d2a4117061e - -# p_scalar = n - 124 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528f7 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b4bb1133ad9267aa51cb20d25f083167238df4864cb95a00bdb4385fa6f8277692f3dbfda1435507f9e5ed57d99f5989, 49a89c9cf7a12be9b9e99d533cfb098b9544dbb2d4eb6e31045ce25c5e93210c55a4951bc8a66567bf4d13ab4f115bfc - -# p_scalar = n - 123 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528f8 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 8e4a4f6321dc82a6d4d6fd78550418d24b3d05ee4295440514a9c3ebea80907b46b07d4a2a1018fe151198480c4c0b80, 74c462ed1a798add03babcecc25ccf338a86ab0f498f447b5a82af3e9f30f7e883c6ba0470788c9f1be4d7f7a178b9d9 - -# p_scalar = n - 122 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528f9 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d109b62984083890da5fddab7e28aceae3da87e136a2812ddfffe0dd4cbeecde89a9a5422a1a0fad53b912fb21a3720b, 14411c67bfb77d57f6b8dd99613a733b02b77ffc1077afc76ce67450eb4d4ce0f0ef6939293f99667744095c728d3ee1 - -# p_scalar = n - 121 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528fa -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 79cd3f1e3891db8165df3c959329f7e0c29afbd47772778a6c33d5d6ba6744e48c9a16e3a896ab1e5198ba40189dfa8d, 11aeeda1c64d0916473d0df9f8265b7e9c1d39a8b716f21b95507a54ae4d8985f5404f6be9028e62caaa8f0bd784019b - -# p_scalar = n - 120 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528fb -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = f392f9632f3b0feda03a6787986794dbcd411e349499fe4eaf07a03eb8994b40d3259f2810248af41b3ea621f3c6f15a, 539875879a1da4c861bf593f532e0ecc3c967a464c37dda4ccbe6fba3778c83889e73d9a54d7c388f37166f8c08a1237 - -# p_scalar = n - 119 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528fc -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d2fc5c57998b057713167fb8ec9cf4cda4630ba1875fab27cd55e7b421cf9dde59f9078dab73bcc4732595ac7329d8d1, b16536288a40a5cd9a1bb1ac9221b7a3eb9ecabc9109b7e5d677a64899dc8f46b2db96f206cf9ceb761360c15ff51b6f - -# p_scalar = n - 118 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528fd -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b8027be64a5eed689d19bd63befa48da4496f5a023133af12541da528e6a2448d1f2d42a406775a028f0ab7a080bfca5, ab9386aa4a3ef7e79966399f963aee20f35524d0b44501ccac13b8149df3fd7307819492dd5cde2308c7d5a296b0684f - -# p_scalar = n - 117 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528fe -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = f26774cd7823568b517a6bae23acba53ad9e749a9aea738d613e5294fe8579619532b30ea229d070fdcce7a80723559a, 70509ab082b097737a546582bff1585ba6729b8db27984816d99c05f06aef600c6cb3a4beb8c057b940767a1ae53114d - -# p_scalar = n - 116 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc528ff -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a40dbba76a0c98442700a45b812fab5c2e56dde7119ced404060d22edb6e808b6d812dba7e29445309e7d232ccd1c14b, c0ad2701581c66c57d04f5b9c910c402fe084c3f269a8382819b165ec127165cb49514f0e988e2f90a1c7cbe9cb66303 - -# p_scalar = n - 115 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52900 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 274c69657350982d84442a4123c50746a97accf432406bfd33e868f326a488269120f7b3a043456daa4e673b34498f56, c0c5bdf6cf5a11db75029e32cf121f03df9a343af6312ec600dc39b8848a5b863ebf1db1ec7ae2413106b7fb95dc9eaa - -# p_scalar = n - 114 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52901 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = f80f423bb48af0e8e53bd76b6e4b3bc543c2a97d5743877a559b40a286dcfd8831ec9ab137796cdcebbc6b4cac6a280f, 0cc71a320bc4646e499467386204acd06ca075224dc4a5e8da508de78539d530f4a727682b1c4f45390696a8d488cc7a - -# p_scalar = n - 113 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52902 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 869fcd17ff86a9864a5bdb048d7fa0c2e9815b09139b7fc5e72215ef852bd27fd2c616d1bbe33572f85b86b79b0bda12, a10b3df255f7944b3d0ed17c31b87757bf7fded9fc31bb676998722ae7b12029b9c007f1d6664d043278521791daf6be - -# p_scalar = n - 112 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52903 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b4a6714762f45dce83f2fd2cd8296a52fb25e37c9710b70b2b5609d5504c81290d20370a5d66455a2e20654839d6e2af, f82bb94445ed204db9a19eb57c182141473e6877caa846883e7ee43a2ec76a1716a71ccc0b6c4c64a818b9bea15c6a6c - -# p_scalar = n - 111 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52904 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a158aabcb9bdef14c3907b518b02667f27552012c727be036744720b50447fd908e0805000765fab8db3b74805be74b8, 09ca776808279da9c64b47b82300d9feccf8e1f94aeb2685a2ff54bc93c326191095bee4e305fb96aaddfa03f49cc56f - -# p_scalar = n - 110 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52905 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 26956a5b83e5bd0bfa63d67feafb4dc8bdc1c92475053732ce481ae68d2624c8a4ba394e85d138d693f846d4906ef776, c59ff978106e08bfb775af8769e4422061d7272e75c0564abf9c791c76e941515426eb05ff14810bfac270f270cae3a5 - -# p_scalar = n - 109 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52906 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 6e3c27bbf13f24033cd18c33b9cff887a911a58af0d93abb5841c5f8a8dcbdc89c7d35833cc1184b0efc2e27b2deb1fa, f4c46c56198c770587e19a4e7f7c756875ad33caf5a1411d2db57fb4f560daf435cdd90b54294c055b391712ea533ae6 - -# p_scalar = n - 108 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52907 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 2a532f0ac16a417882f24a114cb0b8671b23e3f7afef0b5d589f30567bb8dad3d81b74529a67044fa26631ef443c7161, 629a90bf9aee303f7499b3191ed0dde33c58b5e63c40024984d81e8e66d45390a985daa26e4abce9276d170f40383ceb - -# p_scalar = n - 107 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52908 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 77964d793f740b4850994c4960a91622ccd4f456753f40d027c6ec25a0075d4673c21e204f761490d718e8e1f4363f23, 5182a7172afcedf2e1d99f78c7438e3995d6ad45b8659463488374d1a27f3f9f844fc79ae4193d79f4c955e2f647ed02 - -# p_scalar = n - 106 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52909 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b380f170bff65e1c2633179cfa6a8ac6442e0f1f36905deda01780587776c7fea1295b179d724fdf3d303c72138de192, f1c69141971d1d5bb5a31d6abf10c960069f47e10aed184b1e0b982b4632f0a407c34b8181b17d37af66ced6d590155d - -# p_scalar = n - 105 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5290a -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d0ab3e3a99ebd09c022c75441a806542862ef39c275075e3077f30e5dd2c23bec367d6aea6e201bce6e91985e5802845, cc3ae72c6d8973a5cebaf145152f1923d3d57a9547202560372c23a9a91fff8ca5cf364fa9ad136b7d67ef60d99028b8 - -# p_scalar = n - 104 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5290b -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 7117756e39dcddad381f4f06f473127497d1e75fd9f408b53dd4f91683002cf1cfd364cca03bfa6367126ced901410ec, ed306706377f04cfb06434324e2c7f76f5f40731eb8fedc1f3513c3b9c9e5f9ca3b9dd6e230c2f53e206f13b96d88ae7 - -# p_scalar = n - 103 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5290c -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 590da88e64671048113a7902e3da530d1ad95a94f23d84fcd3f0d14329c21de1ddcbb10eafd402bdd24cabaa21355d5f, 0c9e71377273dbedd6e2d5a62de40552601bd1c358fad1c397ebbb4ed86f4dfd1a52e4e7e62e6e0bf4a58282925bf0da - -# p_scalar = n - 102 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5290d -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 180783fc39489b2827c614bfddbdd7a57befff1cb90a319f1c0f6241bb2863c829591fcce7274c8803802ee80fa4f860, 60a4d22a26f6a5df4c6c8fc838175105a47fbda3bed5e5259e8d5e0bba3a023a5464baea1b373ba72a89af6579ae9e06 - -# p_scalar = n - 101 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5290e -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 7e2392bf7bc814db9cdd943547a18710d73b1fad8b8b5cfc73ddcd2c2eccfb1ab539f5fe50c66d708e66c6f69b8adeac, 73872d361702e1de909b656f420ec104a73e1d9af53e80541fef41850ad68693ffeddc211d67c04d914193c06c8f74e8 - -# p_scalar = n - 100 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5290f -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d884d30b2f03f287419f4d2eab386382b0e595a155fac50e100134e2338c10e0f9d9c4dbaf282e57a350c4fc01834066, edc690c903e2fcb28a8aecc74afdb92910fe926075034f722a4dd35433dac6b48a14723f4922997f4a7e5936f6075163 - -# p_scalar = n - 99 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52910 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 648c5f00bb28223ad49cae0982d9d6bdb9b2e6b479c8f8bd1b41177c708ba469bb4f9e0f41aa174e6e3835a9b05f84a1, 03e1698b322d63bd1f7493b176190d98d6f759d8d1a0ea086675138f708247e1fe3096dd81a0a38d04f485765d8cc4a5 - -# p_scalar = n - 98 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52911 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 458ac76d0f40ec396e6880f15c434085ca861b4d97740fcab1bcd42525fc2c50f05e0ddedb37f6ddd2872262b0a9e00d, a77104bcffe021f349c17dbc262820737b96a6edffb612df003c91f554ee9d59d70204dd7088d2da5fd094ff848ae412 - -# p_scalar = n - 97 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52912 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 8c081acd170d807f87b1e51bac06961610241ed16fef9d9d8f273e3065278f98c1f0db004a49492c7cd2035d7f5c54e2, 83c6b78ec4f030064c3e2491c4f56964cb47e4ed7889a39ed7d24ef430e05dd3e4eb5512d6865bf4005051ea1c73b598 - -# p_scalar = n - 96 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52913 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 8bf3dccc39c18b96cb4aa43c9741eb4226de4c6581998af2ee21597e52ce08f68fd61e31148840d4dc5293851d15bba7, b257fb6c5a4434a4cee0842f5d5680b8f9d19ea0c831254b8545396f305ee4f0507e24057dd87c3966e1d5dad872984e - -# p_scalar = n - 95 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52914 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b8f42fe52fead1e4257b0bb5ad7f23e10be90befa27d2b794a607b9d0ef989779f74ca169bc0cbb10fc0f2630dbc3c91, bb6d4ba542df286e65364ded55ab93f98c0f64e83bc7b59145cc3f14dd99f9fb505fe7ebfd79617dde78e4315f93b592 - -# p_scalar = n - 94 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52915 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = ed9602dc7912de8d89dabf40cf9eed19f4db0ad3ad1bd1192e2bfb0c25998b5d4259f70ee435a0deb134a04174225251, 843c41be9c6cecdf6010c639db73da1103f4f9dcebcddc087d15f243cdcbcaf878632b48408989ef585b6d18c19f9213 - -# p_scalar = n - 93 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52916 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 813355b3430aa2d72df91689cfd151547a3545de7cfdb00e1c634764b16142cd1b1cc24f5380675eebd14d71e32d80af, c071f38f66bf9d09c71b395490a268e5572a425b71670dcbfe7ca8103cb06698d9e303f7e03abb7916dce2c985f2ca7e - -# p_scalar = n - 92 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52917 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1031cbfcdef715d74efeec75e724f56cb8a88d32c7b6b5a626905570df79b6048f97bc3df1b9f55b91b6e58f1036e450, 3e080b351a206fe25e43c16b90f38d1d3deda082a8a691f9a4d6871d472ad231cee9644726ca94dcaaead60f2dcb2306 - -# p_scalar = n - 91 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52918 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = eb0f52348bf223b0e7e7382759dc3eb7b04b977d42d74f5fa4f6e534bbc2618a35c2421b14ae3f635dea409c9cba0858, 47cac703f116c6e20b09b3bd9ab88478cb78e0c863a2cba009d0b3319236343dd012811a3fde2c6d991c51670fc75158 - -# p_scalar = n - 90 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52919 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 4347b760969bd7f7b560d7e63dc77e7bb34f09fbd045d31e28bd6aae6e6e8e57672649def3c36ba79b35cdf7a7871029, 9fce477feb7d3671effe5f50722fecaedeeb339129c4724952f2cabe13d6dbeb23ceae28feaced8d2f161a085e5496e5 - -# p_scalar = n - 89 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5291a -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d0d105de164b7361d63dd29d19e0e2b667d3644ac8e55b7b463df30b0096721f18a49fdc4bf163e00c62094b2d71d4ac, 01c7e939b8df37f31d28243540b962d9147701090b4de4c065ccf0512daa253c7861b71b2093cf7ee5865c4e0217188e - -# p_scalar = n - 88 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5291b -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 9398236759e97922f158f85541bb965c782840d1edd794907774056232329baff0041e2423786267db52eb03d1db891d, c41a6fd431583d521af2a631ee1859834284651c3e6724b407f97c1df8ba4302a6f5384c2f5ccd104b40ccb8e384778c - -# p_scalar = n - 87 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5291c -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1c1b3417a500bb22c4840320387b6b2ef30a928d9a3c3af1df0ec1ba8b80919559424730109677754f11a02e4aa0372e, 9f046faee996fe68bdac81880e7b4db731944175e7559f09dedf2454f984a88f18246d74a7909681690ee6c7bf3266f2 - -# p_scalar = n - 86 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5291d -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 94dc48fab7e8cfcde61e6c2984cb7e449e30229d0a06f838361494cc0b162b571234181c1dbb4629c7364268d94ab449, 43d6196f8de4857a143c6e832c92df61a32f70e6a0c3e1a57a9910d501c47967a4fe5f5fab20b37f0d7e44f289b66806 - -# p_scalar = n - 85 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5291e -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = c835025446e64d4db0a08fe1114e6f01d953aaff73256a577bbdcadd053153d82148bbb88207255a935d2cdf9b06762d, 6c218d92c993f213a231839fe2895195c3d455d22caf52f27422a72a0bebe314392aae0271fbe969e7cfbad800dbc157 - -# p_scalar = n - 84 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5291f -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 00eb5c040d16b7fcb048b60e740c04a52686cba73934e93664a8bdc7c791db8094b80b8f691e858b3c712c3c6323cd05, 3e5c6ffb3adfb941dc98abd94341fd4987e3e34d8d8145a014e572f21cce9e0d9ffcb850d7c9b5b080c0d8914ddc8276 - -# p_scalar = n - 83 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52920 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a075b16ac03d7805c25baa03520a8926eeb88ca1c7a4aab58487aa0d4a6694eb44cf847ed2f05eb48e61f0bf44e94071, 773dfeda69ce1cf9b72a7cd0563c78e40aa262ba2251bcdacf21a95749e604294e3c13706009643ec357a48a13d970c3 - -# p_scalar = n - 82 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52921 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = e6db24057f12bea3dfc6d038305bfc7c87e75dfbed69216bd6021049cbfbd0c2e8c09f59ec5cc866783cc5bb88f82a12, 6009a59ebcd30d2869eb7bd2feee7fe5ed736fffa734994fe40d04ef6068512884fa39d54bb007bb6469e146b7a3a2d2 - -# p_scalar = n - 81 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52922 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 0984c2e37cdf344f11238a859f436faff2c3118feaf138afd8cb3560e07b1bfbde45473e86c087853cbdd3cbdb06f682, 9dd7b7609745b87e5de38d63ae2706a701047a5ee5dd278d56add2f018f2637d959a14d4736fa240e1083c17c382584f - -# p_scalar = n - 80 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52923 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1e8568cca446324620fe8c27a715ace6dd2ec6d351fea1dc49066428b121360923e5c6b90e42d1f9194924b4ad0a415d, 530abb420614a6f9b960b5efeecd8ae42413063a1378e68fbc7a903c6484641d98e97f1cd923637700c213bbfcce7e6a - -# p_scalar = n - 79 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52924 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 23b245a5d53912dab3cc818a7069cb7c491c312dd15d01f0e58901a204ca55712cdac248c3b74585ca11d9d4e9a6c224, 4b9728f81d7ab255941c66c9f30281f9617b301b08632eb3403243e9eeb95ec1a052eb3e3277555230f7838ba6b0b163 - -# p_scalar = n - 78 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52925 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 02781ecd4db639eea1560f9775dae55bd35175d9a506191dd3338ff4b743bdfc47842147688c1ced3c80145ddb9f0b60, 3e795421ae8fbd6cd47a03074e3c8f2c84238e64c4a7a4fbc4870c9dbce600336c62bff32c45eaac993a302d23dce536 - -# p_scalar = n - 77 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52926 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 63d23607fa5c9816742e060b28a126270ca930b998ce78a327ccb6c0212a6125114a9b40334793a79f2134c12a501a3f, d44b1075302cfd2ece61c3e5572941a6dd03950030c9cfb21500850e49fd3c3d34cd7e2ef34d1d23774dcba4ec1f91dc - -# p_scalar = n - 76 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52927 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = e677b97c61007b808b8d434e90bfa219a7253817daee85404552fc68956bce558c547a520c8d74e1fb2f775e4230e336, e7871c313937b80f64172dc31901ee2241bba1911ba3dd06a7a69a24e4f855bf96eb8cb3603263f9bfeae6f2f71abc74 - -# p_scalar = n - 75 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52928 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a1e0ae0fe6ca7a154a7ee23df367b5c85d4631b4392f8f665b28cf8991549a96c8cbc40a420ab7ef6b5d4014867303de, fd42d862417d6562d7870042957fe44564e239e3f0402e1d6762ab69430aed71a531c2c450fab9012a655ee1139fa27c - -# p_scalar = n - 74 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52929 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = ca50bae743ca3e45a0dd8e3cc10c4f6c40d420cb5c36dc4c02ae1f9150f6a5cc7f3bc516e1b24b64126d4cde13dcbd9f, ac30d6dc35b9ab9eb9dd7248bd7085c75aa7e563ca19ed0f2458c9ef13cf22bc35dd6dcf7125d169f074bee9efdd2b40 - -# p_scalar = n - 73 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5292a -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b89d83e72bf4673cb08db04de8caa7d29029a9252d3731c25b8d230bdf8b9b24a9c2a9b11de8963b43385c32d851a702, 6f65af3b7c98a1620b15740387b8637304e21e0392265a59af9fc87b4f1d216e9f89b6d6e1e8d616a8fd39bfe1f24424 - -# p_scalar = n - 72 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5292b -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 0966d45a6517888e2ac250f6058daca83b7debe494eaf32810757e2e3f599369f4445a249b234eff668240536434688c, 312c1d2f36824d3ab010acdc097afa217854f8bcc3f0ad3ac7b43619ab96774699cd9dc9d77437097555cc79e7693b1e - -# p_scalar = n - 71 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5292c -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 0b4faa5a537ecd702b123738fe255dda27bbde143508ac5493ba15cfe58d0a92bf5731b3abb11441c42ece45effefcb1, f9a7ea28732ad01cbdb924ee071395662144daf1ce64373a154f285025b3e31986793c4d0801523d6a44d084ddec83c6 - -# p_scalar = n - 70 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5292d -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 2bd44119aa9079b7d8436f83a2ce4101a4c793741489a3c09c2e8aec0cdf6d91edfdd44e94cf7a32bcef0b6a37548a32, 443df50ac7469f4a5c599917d3a76debc4077657cfcdb6b7cc8ad6658c725a7ce2a2b0996761e5389f0415bd9bff2a34 - -# p_scalar = n - 69 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5292e -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 59d65d78a3f735f42c86ee164fdd3ccad4bcc8b125abfd65cc66c8aa0f19981b5ccb2859a1115e28f8d3df74670c2752, fbcd0100271dbd7a6f2c9e8b73167a320aceee4882ed66bcd13ae4892bd423a457769d6245d3994d035ade287c0c55ce - -# p_scalar = n - 68 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5292f -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = f6a8130b3a7741e35508c2b38bdb088aee34bd1706035fdea4160def7fe6923a2fd77b5ae6018776af78aa17286ac2fb, d467b0e82fc4663ed9c5d61f09f68f4c29b049577e0fca014277e8927030cc9a59a9e6886b1e723fc02ed662797cc7d4 - -# p_scalar = n - 67 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52930 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = e462ca48e153035af9af3e4d90909d25556e637e6ef3d8f765d75edaa55d6185eac7dd3b0b634f686efc5cbc8b1772ca, 8322cb8aac794994096a6bf01362c5f95990b746c6ebc0031a7e35ed3f59e4bc104ab1a642785d0652763b7b0a109ed1 - -# p_scalar = n - 66 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52931 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 3418c841ef19aa6cab34164b3870beb7acd0361f5decad089983c10a492b899ae22c691d99c0b909b60fb64e52990b5c, b287be9507f55d0492b480eed70d6c3a6fd331a3b0d5aea54ed3fd192a684508a580d040c2c889076cf203a6209b336d - -# p_scalar = n - 65 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52932 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b84c3a6a5fd4266f8b0350b2650b22534597ec8abdd5f002cf9edc15edb63c80becda43b0d1d279f8e469454839b9679, ea6f2528a55bb1c9a2866c24c8f9f08719763d6d889d66ddab784b2cde2bc266b6a487833ad995d30e16d83d30fc79f9 - -# p_scalar = n - 64 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52933 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 4f5d5ab6d1b30e5cfc8e87cf3be44d56a309199dca57b7bde04b3d30f8a0580d957c980f297a9a37ed4de4f88e89b258, 888b708b9404ca513ee127895ecd3fe86d97cabc301fe259fe51bbbf1090fede0fd1c52df091bc01b213c6a030a9325b - -# p_scalar = n - 63 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52934 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1c9bf0b0f1e52d1ef6159e519a049f7acd7e35f76e2b71aa7a50f7458c949f8f6ce8ead6149a1896c5c0e6d7aaed89c0, 52bb3712a0a689e8f5af7b8e3735df22dc89bd4997d4048d3bb034e888d17f198d3a5f621ecd7b1a3bb6c1f518202c80 - -# p_scalar = n - 62 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52935 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = cb4c0a54561fedf2d194b7054b14d11703b9f1cebfec21da0c7d749907dbb9af1e659730c1fb476e49a04dc0f5acf772, 0902cc23149446b8cac324ec82c4faa73d2508922ba9239b65609e59d9ff0aba5f5e9b1fd630c145af623d3f21da4d42 - -# p_scalar = n - 61 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52936 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = c93ea049ef6ba0062366467300fe51fd5ff77ff2332982d06035e34f772ae08054fb5a34222241e848da1fd3fc60a6e0, c4cc11451fc69829b0a6c77201466d230dda19ffe5275767e6a7885370d303eb394d32cd6ae9f4ac6640f1177d381266 - -# p_scalar = n - 60 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52937 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 95bb80cece47968c61bba736a55b527784b7c2fed74cccd40402d5c4eb809f85a61fada6fb4f60e8c711d5d1c425543e, 8dd21bf0b4ea4f5129fc3b284892e676bb45a51f948a8375acd70b86ad2a20fcf0e0f4f7e682aa2909f92adc16eb7b95 - -# p_scalar = n - 59 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52938 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 9ba039679267b6463703435b0de64db996a917cf1ed0e31564473b595c322738dfca6897f929974caf467ce227bf64c9, ff336f12504655c196d9ba0bd9e3ca196fb34b3028463cceaccf2edd7b05970341bdb741b335eff0df0c2aae3a522fbe - -# p_scalar = n - 58 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52939 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 104cec0666ac72e09e9520bf57acc87aa58db4ea4f96af4fdab9dc0015b0fa13341cf9d9c46785af941c5c257d0be180, 2b51995f794da901c08595e35548fbeae11699e909fa58a1b5f157aa569b57d8b8b4ac9ffa80380a9f3f7baa1929e675 - -# p_scalar = n - 57 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5293a -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 814d7fa07a78c189c052f3eb1c99ceef1e9dd1509bf446e0a14967dfac4bbf6273bae4c1694b8b0db14ba61cf97f865c, 0a823b9a4b26df63d2e130552952c1fc8f427bc473c81d5b0d60bab7e809a13c7788c258a1737b65a101a483ab74b05d - -# p_scalar = n - 56 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5293b -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 7772a913e6436cc1e9981ea6820da79f2629ba4fd1deca258b6fc785e692fdd2d4215b4fc7a8baa1483350a5ebb8cdad, 31ff648e0f88b82d56fefff326f349ce05826192490bb572b623a1aeeb8cc21c28179e6cc852f64bd141235c553fb41d - -# p_scalar = n - 55 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5293c -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b3fcd5d1690cd408fa5cbfda60f4554f6078d8bf085faeb3a4fb7867e3a142d6fd6622bc1718ec3cbcab5f60069f3367, 7460257314ceeed46a91e73997d0fa0617c6b5cbbe2334f88de3107c3d079f6182af23aa180a63a74ebdee7d281f7884 - -# p_scalar = n - 54 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5293d -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 4576a6497cb8944248c075daaadd6150075134ebabd64a6acff00bd23c9b5a41ab2f15202175fbf411853add834e6c54, 420eb673906a29496e9e86bb7b1eb77a1ae1dd97d13444bb0bf879d693b44ea68dbb571c77fcd1f4340a767034adeda3 - -# p_scalar = n - 53 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5293e -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a8ba8f10e0f383ea642ec4e615c3aae2cf485c74a7c54b160b0110610f0422a2daed7c268a0915cc3b1bddc6fbde49ef, edf2e3eb7ecc9485adc93d9a481765e2d2c71ad1390699635786a19a4e2fa83eebec6442089efa8b2a2054b495618501 - -# p_scalar = n - 52 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5293f -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 4b820d9b31d83660252b48f5cd8d7d770bedaa85e5377c005687d1dca6ccfd358a944b316b3262328f6468656f9201b9, c5cc339dcba1fd4b222465866e5ede7690e2aead7f78aaf86d0a166ced3c3b7a0a8930fc1208b9faa9e5af3ccae07f15 - -# p_scalar = n - 51 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52940 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 16634a504f35cb3c3dba16e9daaabc27464ae8d241a84de7a5e0fb598c5a78d91947c0caec4a22b82c4ccac72070ac8d, 518b047dcbaa0d97c69489e2373f1a0d0b2240003c887d36daeac0c3570543f0324d067e7359dd35adc18bf9b16ec84f - -# p_scalar = n - 50 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52941 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a820e8303a5d50d19cbf755b46f97ac7beabb91ac3c90051510bd675cb2ec3f1172cfe4ecb5af900a96763d2fba32d1f, 6f58fa8b7181c2a16f7bfa7e13a4f7d6c1b444139333e4056124642f0f32b151df7dc7053048461a83a9f17e308c4545 - -# p_scalar = n - 49 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52942 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 0b470bb250e4ea9e1197832bcea03f5647c56c115b6e3386a669156542e365a48ea5af63a5ea6fb8fa5c3aef697136c6, 2d1cc518e28b2bdb771e64415b57be2f2487edd57f82bdd3fc4486ee49c9ebe88d6c174ed2497d483113c74313b25712 - -# p_scalar = n - 48 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52943 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 66e4794bae7d740062e5c5d3e73a1bc940d01ff53a7d2f3c4f504e06ea52bef92d368d48e7f30c2b3ccf806ab35bf6cf, 271e42a12624a58348eab00eb5c9462c2605ca009da2a2ca5c3ca10d04bab9854580609da766ddf13d30625e5ffef312 - -# p_scalar = n - 47 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52944 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = ea5b37c5da233371504f21b1570cf950780abff7d878acd0bfb185125f5b07a065c788785f0dc66c6f888f7df0c668ca, ac9dfec7dfa72a8beef006912e20fc23dfeea1a265e0fc91f86562a898fb34ff9c701758249cf9b7487ae8bd22437ed1 - -# p_scalar = n - 46 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52945 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 374aa9069481ed0dd9c79db8005412579266634957719f5460976b01b472d7899f24fba649ddd10ea618d7479fc4f435, fc539eb3e259c7dbc82d5998ec090d0619ab802314eb4ab9d7a198a4185a849ca1590c30ecf5864360efb1147fdc2d7a - -# p_scalar = n - 45 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52946 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 9c94c858b2ac340599e1c0c61f2bb599b0040c0e8d6fcf13ffe8e0bb39eb8f59d4af65c673ad9112d4c411564fddda5b, 42eb2979db83a48517477722bd2af19e16f96676b7234e93eb3b44a9e5b5691862b2f54351fcca3f8f8878d76eeed85d - -# p_scalar = n - 44 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52947 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 9c7e7754a320d35204ce2a21986c5ce6d50a288981ea36c2767b4ad7f8f99b51ae97af8bf240b30a1c5f0e5b36a400d3, 5fb28e322a1dd73bade6096d02e543ae47678afb27dda8e5c680176505c7ad6c7cc82a4df1698fb2c3336331bbad8346 - -# p_scalar = n - 43 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52948 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 35178bad22dab3935cf095a901fefb567314f5f0416dbd86dad9f5b239c4943d09112fc50578bc8c37fa935500846d44, 8f3f1f63c9632b78a974b09415cbf948aaf8e0f6bd0628dfbce78aa9ede314bb1b7ee42d749e5498cf79fc1b36baf1a7 - -# p_scalar = n - 42 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52949 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 7438b4933c1e593ce983e169ffff96c73fd72a308f234c864b21c4f3eb6c7e6231b22efc5df46c6618ef56cd5d76b881, db6829c2f002bb6e50029568472a7175e739fb61eaa6776325d0caaeda1eadf40d959ba9796d9129863a23a3a553e8e3 - -# p_scalar = n - 41 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5294a -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 8764cd2cda92245de3bc778895fd71ae89746c8d852ca03573a82933a80d68f341dfd24d456a201ead148e87bca6d14c, 82ea702eeb18f1c5679952c7d193272ebdc9d6c34f9f589a57860ce121646f315ac762e00f3c9d6ea2fe2c4782eb23e2 - -# p_scalar = n - 40 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5294b -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 51c4b1b36a4d6e813b021cf316d7a9adae78bc3a3134216c86fcfe4760be3ebc43a53ff21beb359e6048c6949399c38a, dfd92b6da914bb01dbb22c9ddeb46e6c63a00a0a60e0aa2a98ff87f7370eb7441df8cc84a69ea3a354b9cd8db593d816 - -# p_scalar = n - 39 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5294c -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 587df4d6b89b1fc2c9985040b76c066536a1cd6dde9b62306d7edf642b7f006fd984244a8e3d2c467d894f80506e0e42, 2d7bc128074968fb1a95355f1cd60340b646e453436d9fe2345c553ab53153b87b2b0ab3e82947474c0638476a71ae7a - -# p_scalar = n - 38 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5294d -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 47ba96091da7b1476b464412bc9a48c7479ecf018173fb32f3d752f5ad6cbeac018843c01c0d77024703cd85891f8ffe, 1f466694520618f2129be314974320a4f300e1c648347f9adae2479844956b9387c183c3e1a0e06c91af26eaabc13488 - -# p_scalar = n - 37 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5294e -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1eba28f3defc58b59261ede87ef27114acb60a7597482b86a129e2dff5b54a5d4027704bb5630ef20202d57de44f61a3, fa0e07b7fe85bf85284fcbb5638ca337b50649a894047d1f2ea912435d2ca0342f1643d514594bee6c91c0c98be5589e - -# p_scalar = n - 36 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5294f -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1608643883061d376f01faee26946e789f82b7fbab52606ca39180d45c2c7ce14a13260770b1b757f216aa2531238ed0, f699887b806085b7df33eed7b73401b16a3258ec33f5567510209418c167fd201d11bc5ed6e28138597edf370fb077bc - -# p_scalar = n - 35 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52950 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d6149f75e9417bc6832bd8e34fc7852365f16273a02583fd4a508620dde6bd0abb3800d52d7c2fb458a5b5433720ec9b, b13a8ad830e23f26ac8a877f52ccd35c22f19fab28f35eee50018998988092a20ce18088a55e0956feb026e93deeb52a - -# p_scalar = n - 34 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52951 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = cdb55e6ba07b7cae7ec2bc1cd50b3e6d9d6ac102b4e2520145700722abb9102f0648c2cd2d668c4180b309dd2ada5bf4, a964eefbfdadd24e03c050a06152072602d00cfb8a76b2d69e1418a4554557c3470ddc68f8a57f48ebcbda0786da3943 - -# p_scalar = n - 33 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52952 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = cc9e97a46c833e9d68af622641d5c400da631fc160f09efbbbc7c7ee955ef3afdf330d9d5b943c8661333a382fb3ba63, a7fd2b619057dad76fcc93a1b8c310728a416eb9bb6f0aba08467cea48b90b9113bf6124c209e55e7fd73e8e3a625e76 - -# p_scalar = n - 32 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52953 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 5dd2a4a0626b3d793a9865baa631cfb0ba8953d612e8dc871896b9fcc651b1dd0d784cf208f779d5ad852b878c0a64a4, c510ad93aabca99f73b42725b35b4ff04bcb06f00a2377b677315f9e9448fd08a372dfc2f2a52bfd1148bc72687c20bb - -# p_scalar = n - 31 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52954 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 6c07c4040a3305d11afb51a3e3ba8285d42f7dc953c149652ecf8340f0df4fe6b6e7ecdd9e821ee6a39c89317c8906a4, 475a3e756398a19d5b3d0d6d36beecc4d7dd464f045a7a1c402a9bab42eb20ddbc0a699b374c4b08dab83288127fc1da - -# p_scalar = n - 30 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52955 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 92cea8f4c4360dd87002990485ba414315f9abe1feb6b100519b9fd50a18323276aad8b8131263886a7a3464d0cbcea0, 941292e500f88cb2f569446a2755569296c21b29f6a167f23117dd04d47a41dc1846eefcdd3eb156dc6c5d1dc12748a1 - -# p_scalar = n - 29 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52956 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = c8b00ae8187cea1f2065b7cba7df26e43dc22d490e3feb0fce3c15ed55c9764725846b66780443d6019d6ac5d3021470, 1d2a1c015977f16cf6f57e7190c820338e6db10b404505fbab178d26cce851b3293c164920c83de21a5284a0865dded3 - -# p_scalar = n - 28 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52957 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 55be5764d37da1a2d8232f8b4e492aa88fb0c597a4da3e15550e0bee8ff22c6f4169b4117b3c1220c76afaa373b64643, 05cdca3fe7988176792377fbf8eb8319c48ee6f3b033c112184bd4733ad6983a9ff769c4875fee0ff1bc89b628e77f9e - -# p_scalar = n - 27 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52958 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = e8ca780e373e5aec2f7e8d509c6a58fe7228e2d5d18f14d08e0d4168482396f9cf1912934d78291da04482d2467d66e4, 17820a0bc5134ed767e67195d44d3cdf7d26540638c85a85d779adfe31da1bea58a6d7f569e2f8f442aad1d61b68e9f8 - -# p_scalar = n - 26 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52959 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 37a45bdb091cbb80f14b309f03fa90f2808497b7b0bba4a76efedb8023bf0b90b0391b37897b93f56423197d2afd473d, 47d98a9df092241cbf2c0862697c08fd5d512df99d42a72725c7b9146f5f24c7db3f422d95e16d6eedda4ae48a8f5dcb - -# p_scalar = n - 25 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5295a -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = c29c6e2ca5bb73313809ab50de2480249bd51b99208abe1e57d0f3d2e2be174abb280dfa3cb3fb361e93722758ce3b83, 1fe6fb42e97809dcda3e1a3d4cebc96ed6a2f51dea8e434401628f059424a3cc83ccbc4e9009e3919944fd2e61124f05 - -# p_scalar = n - 24 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5295b -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 4f13f901fc55723f38076e8fca77d74f563361909bd5c2f7540c045a409c930b20c1b8e0d809afcd259f272cfab816a7, 150808e625a302c91395a87966a4e904e8277439a0f9ad3adf5579fa4bea82dd98d82ad1da247ec8890932d7bd3d10c3 - -# p_scalar = n - 23 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5295c -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 80826a69eea8f22461e4ca2b905432f01c75b8ab2a351783b9d3dd25429c0a18990ed20b569b8ef6d1b4e74d12e3683b, 9dfccb0de2212559282d2437566718c1f0138950eaf22c7e7ad8a132a527cebe0bcca3f0a65e48137fc33a6bec52abad - -# p_scalar = n - 22 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5295d -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = e082882d69059095fd7a8b13f0681fcac382472ebe0e1fdbccd57831927ed783981b788d16f325b84f595351262bb775, 671d69c98fcd841850fc847215809cddc764edf840d0fcf77b1ab489cbf837b7f9d62fd9c9576c694d1c3049faa71fdc - -# p_scalar = n - 21 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5295e -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = ab16c626dac012b51b1a0f6c5df0e5372e59ab62bd9ebe6930128aa06177f75d88e0d496dd2f9e2108265e510422ce2f, 21824f411353ccba266ad15aacea5817b454111e8527cd59262ebb498a149098aa740a9e38f17bea8014214b008c5de7 - -# p_scalar = n - 20 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5295f -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 1d1cdf7b5f22346598ca8dd42d96c936f78cff0cd467f03a713466708cbaffc7cd96f20591e71d16ad610a2d94a70ec1, ab9dd81052ebfb015e01b72b4718bbc7422da643ffe6132b9933fb25dccd4df325f546ab321828ffe27a189460d4db60 - -# p_scalar = n - 19 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52960 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = fa0f1f450390d706b3b6639c539802ae23891298fc38538eca109c3b154aad5e22c4cc5f41a8c91282a2ed4abaa84c08, a1d47b23e957776415d1dc778264b6723f5a799bb67f30c39170b3786ff2f643a8c72d3cc3da2eac46b78e5db0dc21d0 - -# p_scalar = n - 18 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52961 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 57505d8d6749703068a232435567169355a96a6879909f083bd1c8f62edb0dbd198fd3f0f38f66625dfee73ce5b82700, 91700b247eb1be639bdd6a092945a7576ffcfc7ca4cfd9bbc266eb844112985854b867b7f78aa7de8a60717f75c64513 - -# p_scalar = n - 17 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52962 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 524f166ee475ce709f6928555330455e7be3737d524ffefce6fc3f2af655a10d3ea4ea4c8ff1f43e8903e1304b4a3cd0, ac37986f55b164c925eb5df1b3c2677af87d6d854a54504a49ce6993336bf1834e23b6ffd5b9c0da3fcc69cd6c12f055 - -# p_scalar = n - 16 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52963 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a10896aa435abaa137065f5313bdc3fa317b63ea2887d5ff37cf65517917652a992afb5b0ecdd2d8da6e8a7f7c33ed91, 659db48181ef251351c305c6a72d1967b333bdfbc88ee148914871dc154d410feb07ddea230cf00d9b21615fefabca26 - -# p_scalar = n - 15 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52964 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = fb62d26f4903026b0fc01fd4eb08599359500917789b307583ccf19550e07b342b7210e2ec3dabd8446ad8884709f4a9, 5a68c6fed0bc27168733fc41400c5797dddc2866d898f4704b23d3a0de06610c61609cbd144bd5862309cc9d6fe989bb - -# p_scalar = n - 14 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52965 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 46d227c432f6b1ba8058994c5710c0c944ce05ff88957166ca6b1af8b1f85c2ad02225fb01ec909f5865e5018f75244c, 4429839ddefbadf5647d24db13690a7472445345d9c3b6911ecc8585e11dbbbf540b8b82730a99d1be4b4a9003cb68e5 - -# p_scalar = n - 13 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52966 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = b51c56e18cf23c94d2657265ed22df97db5203a8d9c1bd568a7a8e4633b7d4aeb25e28c5f6749a959b7aeb7e75ccbdfb, 4617adb7cc6979e181fdbd1c3b490ec3b7feac2dfec38d60789a2a48cf4d0fe3d8e88f1a87cae0c2f4d394596c3d812d - -# p_scalar = n - 12 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52967 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 627b415f9c35b26d523c40dbcf9ab45cf67eb42235d77d8303aced26c8edfee1d4258cc55d9704203db8477270313de0, 0c6e430ef9c4af3d0329eab1f7942f0e40c64a4e66bed5af8c79848fd0e102ac80d60af627aa651afacc45e48be55ed8 - -# p_scalar = n - 11 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52968 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 9c19e9fc7ba9c437f8d89885f0561d7901b8bf56147b66020dcc67706cdad64f4532077c44377abac7708b19b68b8c7d, 9aa62f9f3533f91841821d0c3a53287a2e070f36fe9e682e3ce813298a77e780604fe46bac144b83764eb146bdc4ba25 - -# p_scalar = n - 10 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52969 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = a91a5280db1c212ec2f646025c4845ec54a612d7eb32cabee9f6368eab225fa32a15a9a6e58d6787845539d3c8d99c02, 6eb995bec80174e83e03370a47a9b8aa81961b8ccfd7fd1d592ac0ba794eabfd03a530eb13b9e85cbb971f78e67b5fce - -# p_scalar = n - 9 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5296a -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 5cab1d1d53636c6a26d464c6dad54d6adc351dc13cbfff3f26094833a96d745de35d87293fd7e4f92f5d200e2353b92f, e770633431e8f5c67d9429f4ee69a754a6ecaccc68ead0d827f061c7033ca7c23777e270d742aa2ff2813072b18ec0b0 - -# p_scalar = n - 8 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5296b -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 5db4f184349cd9b11c7b5fe116b664231d9aebd64f3ddb371c5c2e7193d7e30f9e336de5ae9b587a23f60a05dd9bcbba, 3c0c6dd70d27ef617008d943c48ecf0ee9923263a42dbba2701754bf7d8686e4836dbb36b7e55e870d2cfe83e6655a44 - -# p_scalar = n - 7 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5296c -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 932c9f811c89025bf893db589db2df555f4215d1659753ed731edcf8211faa954ce6415f874774b1df13b9d17d69222b, d90a16b6af6c9b3ef57f238e693b07060ff37c0401fff78065aad76f50130844135349d5a8641c790996b2207706a61e - -# p_scalar = n - 6 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5296d -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = c482e189f0430c404f0f6a962b02d33b2a33f6661bdf6015ec52930f580d57f2cb2454b339d3413a7eb5c9317d56dad8, c9962152af2a9eba586d8ededf21559a93c9e5f61b546f058bd4bffcb79e33b0739ac69d5b3d4dce3f62b16ea7b08203 - -# p_scalar = n - 5 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5296e -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = e1bb26b11d178ffbc676b987e2e8e4c660db2cf5aacc05e67f1eb1b5293c703bc185c0cbcc873466bb595eba68f1f0df, 4db1c9d6e209e4a3e6c5944024de236d4b237faf982c041180b61b3101c35b9922c16e2e72f345662b694ba07073fa21 - -# p_scalar = n - 4 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5296f -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = cfeee6dd34179228fb40f647d685d979078358d4736400ad2e4f153b0aecac4630594ccbee0421e30aae8477ebb68f2c, 50946875303df319e607b9e33820017d147162d30418c6938e3e61a34c542ad1e74bb7f17bfec97e54f3e8e79b3a03b2 - -# p_scalar = n - 3 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52970 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = d283fe68e7c1c3ace36f7e2d263aa4703a48d732d51c6c3e6b2034e9a170ccf0c54ea9fff04f779c05e4dbe6c1dc4073, 465465fc983292aff6db68b15102b33968012d5ad2e1d0b4132663c04ef6744692d789a77ae0e36d7e284821c04ee157 - -# p_scalar = n - 2 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52971 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = db93b776427460c39c90a4fd2de4b506da821495f0687f503504e6f0ff9d48a18e6c8f2e022b53f0c8229e55783dde91, e34947f7123df0c2070d430900b0e68409f1fe415172bad915e4f18bdc588258e8e8e4a8c2aaccd842ea84633140bfda - -# p_scalar = n - 1 -p_scalar = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52972 -p = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01 -r = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, 2b78abc25a15c5e9dd8002263969a840c6c3521968f4ffd98bade7562e83b050a1bfa8bf7bb4a9ac23043dad4b03a4fe diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_point_sum_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_point_sum_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_point_sum_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_point_sum_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,120 +0,0 @@ - -# inf + inf == 2 * inf == inf -a = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -b = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = inf - -# inf (n*G) + inf (n*G) == 2 * inf == inf -a = 4a0fd63f894499928e4b2b72aced45cfc589976f4ff86f78c904d59da9379a62b702d968c1184834c11db28c7356ceb6, be113b04484cd4bc215a9f2a33a674c3764c38ca4de135dd50ce8dcf3c85d55a5aad0e171860bdb6c58201e6212d9ac5, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -b = 4a0fd63f894499928e4b2b72aced45cfc589976f4ff86f78c904d59da9379a62b702d968c1184834c11db28c7356ceb6, be113b04484cd4bc215a9f2a33a674c3764c38ca4de135dd50ce8dcf3c85d55a5aad0e171860bdb6c58201e6212d9ac5, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = inf - -# inf (n*G) + inf == 2 * inf == inf -a = 4a0fd63f894499928e4b2b72aced45cfc589976f4ff86f78c904d59da9379a62b702d968c1184834c11db28c7356ceb6, be113b04484cd4bc215a9f2a33a674c3764c38ca4de135dd50ce8dcf3c85d55a5aad0e171860bdb6c58201e6212d9ac5, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -b = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = inf - -# inf + inf (n*G) == 2 * inf == inf -a = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -b = 4a0fd63f894499928e4b2b72aced45cfc589976f4ff86f78c904d59da9379a62b702d968c1184834c11db28c7356ceb6, be113b04484cd4bc215a9f2a33a674c3764c38ca4de135dd50ce8dcf3c85d55a5aad0e171860bdb6c58201e6212d9ac5, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = inf - -# G + inf == G -a = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, 2b78abc25a15c5e9dd8002263969a840c6c3521968f4ffd98bade7562e83b050a1bfa8bf7bb4a9ac23043dad4b03a4fe, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -b = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, 2b78abc25a15c5e9dd8002263969a840c6c3521968f4ffd98bade7562e83b050a1bfa8bf7bb4a9ac23043dad4b03a4fe - -# G + inf (n*G) == G -a = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, 2b78abc25a15c5e9dd8002263969a840c6c3521968f4ffd98bade7562e83b050a1bfa8bf7bb4a9ac23043dad4b03a4fe, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -b = 4a0fd63f894499928e4b2b72aced45cfc589976f4ff86f78c904d59da9379a62b702d968c1184834c11db28c7356ceb6, be113b04484cd4bc215a9f2a33a674c3764c38ca4de135dd50ce8dcf3c85d55a5aad0e171860bdb6c58201e6212d9ac5, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -r = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, 2b78abc25a15c5e9dd8002263969a840c6c3521968f4ffd98bade7562e83b050a1bfa8bf7bb4a9ac23043dad4b03a4fe - -# inf + G == G -a = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -b = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, 2b78abc25a15c5e9dd8002263969a840c6c3521968f4ffd98bade7562e83b050a1bfa8bf7bb4a9ac23043dad4b03a4fe, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -r = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, 2b78abc25a15c5e9dd8002263969a840c6c3521968f4ffd98bade7562e83b050a1bfa8bf7bb4a9ac23043dad4b03a4fe - -# inf (n*G) + G == G -a = 4a0fd63f894499928e4b2b72aced45cfc589976f4ff86f78c904d59da9379a62b702d968c1184834c11db28c7356ceb6, be113b04484cd4bc215a9f2a33a674c3764c38ca4de135dd50ce8dcf3c85d55a5aad0e171860bdb6c58201e6212d9ac5, 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -b = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, 2b78abc25a15c5e9dd8002263969a840c6c3521968f4ffd98bade7562e83b050a1bfa8bf7bb4a9ac23043dad4b03a4fe, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -r = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, 2b78abc25a15c5e9dd8002263969a840c6c3521968f4ffd98bade7562e83b050a1bfa8bf7bb4a9ac23043dad4b03a4fe - -# G + G == 2*G -a = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, 2b78abc25a15c5e9dd8002263969a840c6c3521968f4ffd98bade7562e83b050a1bfa8bf7bb4a9ac23043dad4b03a4fe, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -b = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, 2b78abc25a15c5e9dd8002263969a840c6c3521968f4ffd98bade7562e83b050a1bfa8bf7bb4a9ac23043dad4b03a4fe, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -r = db93b776427460c39c90a4fd2de4b506da821495f0687f503504e6f0ff9d48a18e6c8f2e022b53f0c8229e55783dde91, e34947f7123df0c2070d430900b0e68409f1fe415172bad915e4f18bdc588258e8e8e4a8c2aaccd842ea84633140bfda - -# (n-1)*G + G == inf; note that -G is (n-1)*G -a = f3ee335326d22614d01b5d7cd0be73f1bfdd75982c9c273f72d0abfeecbca0431601a1bcafcdeb07e21ecf4d91c7b520, 57b82ca1527c5a01b78bc8ccb9febe74178b04b7c6fde1c1c4ef9a220c4320bb560cb078542256a3900df61c107de6c5, 53b3adc887551c0e17c07ecb42d1a5ec105aeec6b0f040a936ed4f756e83939226232b4e11191b3eb1d841c650682ca0 -b = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, 2b78abc25a15c5e9dd8002263969a840c6c3521968f4ffd98bade7562e83b050a1bfa8bf7bb4a9ac23043dad4b03a4fe, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -r = inf - -# G + (n-1)*G == inf; note that -G is (n-1)*G -a = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, 2b78abc25a15c5e9dd8002263969a840c6c3521968f4ffd98bade7562e83b050a1bfa8bf7bb4a9ac23043dad4b03a4fe, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -b = f3ee335326d22614d01b5d7cd0be73f1bfdd75982c9c273f72d0abfeecbca0431601a1bcafcdeb07e21ecf4d91c7b520, 57b82ca1527c5a01b78bc8ccb9febe74178b04b7c6fde1c1c4ef9a220c4320bb560cb078542256a3900df61c107de6c5, 53b3adc887551c0e17c07ecb42d1a5ec105aeec6b0f040a936ed4f756e83939226232b4e11191b3eb1d841c650682ca0 -r = inf - -# (n-1)*G + (n-1)*G == 2*(n-1)*G -a = f3ee335326d22614d01b5d7cd0be73f1bfdd75982c9c273f72d0abfeecbca0431601a1bcafcdeb07e21ecf4d91c7b520, 57b82ca1527c5a01b78bc8ccb9febe74178b04b7c6fde1c1c4ef9a220c4320bb560cb078542256a3900df61c107de6c5, 53b3adc887551c0e17c07ecb42d1a5ec105aeec6b0f040a936ed4f756e83939226232b4e11191b3eb1d841c650682ca0 -b = f3ee335326d22614d01b5d7cd0be73f1bfdd75982c9c273f72d0abfeecbca0431601a1bcafcdeb07e21ecf4d91c7b520, 57b82ca1527c5a01b78bc8ccb9febe74178b04b7c6fde1c1c4ef9a220c4320bb560cb078542256a3900df61c107de6c5, 53b3adc887551c0e17c07ecb42d1a5ec105aeec6b0f040a936ed4f756e83939226232b4e11191b3eb1d841c650682ca0 -r = db93b776427460c39c90a4fd2de4b506da821495f0687f503504e6f0ff9d48a18e6c8f2e022b53f0c8229e55783dde91, 1cb6b808edc20f3df8f2bcf6ff4f197bf60e01beae8d4526ea1b0e7423a77da617171b563d553327bd157b9dcebf4025 - -# (n-1)*G (affine) + (n-1)*G == 2*(n-1)*G -a = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -b = f3ee335326d22614d01b5d7cd0be73f1bfdd75982c9c273f72d0abfeecbca0431601a1bcafcdeb07e21ecf4d91c7b520, 57b82ca1527c5a01b78bc8ccb9febe74178b04b7c6fde1c1c4ef9a220c4320bb560cb078542256a3900df61c107de6c5, 53b3adc887551c0e17c07ecb42d1a5ec105aeec6b0f040a936ed4f756e83939226232b4e11191b3eb1d841c650682ca0 -r = db93b776427460c39c90a4fd2de4b506da821495f0687f503504e6f0ff9d48a18e6c8f2e022b53f0c8229e55783dde91, 1cb6b808edc20f3df8f2bcf6ff4f197bf60e01beae8d4526ea1b0e7423a77da617171b563d553327bd157b9dcebf4025 - -# (n-1)*G + -(n-1)*G == inf -a = f3ee335326d22614d01b5d7cd0be73f1bfdd75982c9c273f72d0abfeecbca0431601a1bcafcdeb07e21ecf4d91c7b520, 57b82ca1527c5a01b78bc8ccb9febe74178b04b7c6fde1c1c4ef9a220c4320bb560cb078542256a3900df61c107de6c5, 53b3adc887551c0e17c07ecb42d1a5ec105aeec6b0f040a936ed4f756e83939226232b4e11191b3eb1d841c650682ca0 -b = f3ee335326d22614d01b5d7cd0be73f1bfdd75982c9c273f72d0abfeecbca0431601a1bcafcdeb07e21ecf4d91c7b520, a847d35ead83a5fe487437334601418be874fb4839021e3e3b1065ddf3bcdf43a9f34f86abdda95c6ff209e4ef82193a, 53b3adc887551c0e17c07ecb42d1a5ec105aeec6b0f040a936ed4f756e83939226232b4e11191b3eb1d841c650682ca0 -r = inf - -# -(n-1)*G + (n-1)*G == inf -a = f3ee335326d22614d01b5d7cd0be73f1bfdd75982c9c273f72d0abfeecbca0431601a1bcafcdeb07e21ecf4d91c7b520, a847d35ead83a5fe487437334601418be874fb4839021e3e3b1065ddf3bcdf43a9f34f86abdda95c6ff209e4ef82193a, 53b3adc887551c0e17c07ecb42d1a5ec105aeec6b0f040a936ed4f756e83939226232b4e11191b3eb1d841c650682ca0 -b = f3ee335326d22614d01b5d7cd0be73f1bfdd75982c9c273f72d0abfeecbca0431601a1bcafcdeb07e21ecf4d91c7b520, 57b82ca1527c5a01b78bc8ccb9febe74178b04b7c6fde1c1c4ef9a220c4320bb560cb078542256a3900df61c107de6c5, 53b3adc887551c0e17c07ecb42d1a5ec105aeec6b0f040a936ed4f756e83939226232b4e11191b3eb1d841c650682ca0 -r = inf - -# -(n-1)*G (affine) + (n-1)*G == inf -a = f3ee335326d22614d01b5d7cd0be73f1bfdd75982c9c273f72d0abfeecbca0431601a1bcafcdeb07e21ecf4d91c7b520, a847d35ead83a5fe487437334601418be874fb4839021e3e3b1065ddf3bcdf43a9f34f86abdda95c6ff209e4ef82193a, 53b3adc887551c0e17c07ecb42d1a5ec105aeec6b0f040a936ed4f756e83939226232b4e11191b3eb1d841c650682ca0 -b = f3ee335326d22614d01b5d7cd0be73f1bfdd75982c9c273f72d0abfeecbca0431601a1bcafcdeb07e21ecf4d91c7b520, 57b82ca1527c5a01b78bc8ccb9febe74178b04b7c6fde1c1c4ef9a220c4320bb560cb078542256a3900df61c107de6c5, 53b3adc887551c0e17c07ecb42d1a5ec105aeec6b0f040a936ed4f756e83939226232b4e11191b3eb1d841c650682ca0 -r = inf - -# -(n-1)*G + -G == inf; note that -G is (n-1)*G (affine) -a = f3ee335326d22614d01b5d7cd0be73f1bfdd75982c9c273f72d0abfeecbca0431601a1bcafcdeb07e21ecf4d91c7b520, a847d35ead83a5fe487437334601418be874fb4839021e3e3b1065ddf3bcdf43a9f34f86abdda95c6ff209e4ef82193a, 53b3adc887551c0e17c07ecb42d1a5ec105aeec6b0f040a936ed4f756e83939226232b4e11191b3eb1d841c650682ca0 -b = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -r = inf - -# -G + -(n-1)*G == inf; note that -G is (n-1)*G (affine) -a = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -b = f3ee335326d22614d01b5d7cd0be73f1bfdd75982c9c273f72d0abfeecbca0431601a1bcafcdeb07e21ecf4d91c7b520, a847d35ead83a5fe487437334601418be874fb4839021e3e3b1065ddf3bcdf43a9f34f86abdda95c6ff209e4ef82193a, 53b3adc887551c0e17c07ecb42d1a5ec105aeec6b0f040a936ed4f756e83939226232b4e11191b3eb1d841c650682ca0 -r = inf - -# (n-1)*G + -G; == -2*G; note that -G == (n-1)*G (affine) -a = f3ee335326d22614d01b5d7cd0be73f1bfdd75982c9c273f72d0abfeecbca0431601a1bcafcdeb07e21ecf4d91c7b520, 57b82ca1527c5a01b78bc8ccb9febe74178b04b7c6fde1c1c4ef9a220c4320bb560cb078542256a3900df61c107de6c5, 53b3adc887551c0e17c07ecb42d1a5ec105aeec6b0f040a936ed4f756e83939226232b4e11191b3eb1d841c650682ca0 -b = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -r = db93b776427460c39c90a4fd2de4b506da821495f0687f503504e6f0ff9d48a18e6c8f2e022b53f0c8229e55783dde91, 1cb6b808edc20f3df8f2bcf6ff4f197bf60e01beae8d4526ea1b0e7423a77da617171b563d553327bd157b9dcebf4025 - -# -G + (n-1)*G == -2*G; note that -G is (n-1)*G (affine) -a = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -b = f3ee335326d22614d01b5d7cd0be73f1bfdd75982c9c273f72d0abfeecbca0431601a1bcafcdeb07e21ecf4d91c7b520, 57b82ca1527c5a01b78bc8ccb9febe74178b04b7c6fde1c1c4ef9a220c4320bb560cb078542256a3900df61c107de6c5, 53b3adc887551c0e17c07ecb42d1a5ec105aeec6b0f040a936ed4f756e83939226232b4e11191b3eb1d841c650682ca0 -r = db93b776427460c39c90a4fd2de4b506da821495f0687f503504e6f0ff9d48a18e6c8f2e022b53f0c8229e55783dde91, 1cb6b808edc20f3df8f2bcf6ff4f197bf60e01beae8d4526ea1b0e7423a77da617171b563d553327bd157b9dcebf4025 - -# (n-1)*G + -G == -2*G; note that -G is (n-1)*G (affine) -a = f3ee335326d22614d01b5d7cd0be73f1bfdd75982c9c273f72d0abfeecbca0431601a1bcafcdeb07e21ecf4d91c7b520, 57b82ca1527c5a01b78bc8ccb9febe74178b04b7c6fde1c1c4ef9a220c4320bb560cb078542256a3900df61c107de6c5, 53b3adc887551c0e17c07ecb42d1a5ec105aeec6b0f040a936ed4f756e83939226232b4e11191b3eb1d841c650682ca0 -b = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -r = db93b776427460c39c90a4fd2de4b506da821495f0687f503504e6f0ff9d48a18e6c8f2e022b53f0c8229e55783dde91, 1cb6b808edc20f3df8f2bcf6ff4f197bf60e01beae8d4526ea1b0e7423a77da617171b563d553327bd157b9dcebf4025 - -# -G + (n-1)*G == -2*G; note that -G = (n-1)*G -a = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -b = f3ee335326d22614d01b5d7cd0be73f1bfdd75982c9c273f72d0abfeecbca0431601a1bcafcdeb07e21ecf4d91c7b520, 57b82ca1527c5a01b78bc8ccb9febe74178b04b7c6fde1c1c4ef9a220c4320bb560cb078542256a3900df61c107de6c5, 53b3adc887551c0e17c07ecb42d1a5ec105aeec6b0f040a936ed4f756e83939226232b4e11191b3eb1d841c650682ca0 -r = db93b776427460c39c90a4fd2de4b506da821495f0687f503504e6f0ff9d48a18e6c8f2e022b53f0c8229e55783dde91, 1cb6b808edc20f3df8f2bcf6ff4f197bf60e01beae8d4526ea1b0e7423a77da617171b563d553327bd157b9dcebf4025 - -# -G + G == inf; note that -G is (n-1)*G (affine) -a = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -b = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, 2b78abc25a15c5e9dd8002263969a840c6c3521968f4ffd98bade7562e83b050a1bfa8bf7bb4a9ac23043dad4b03a4fe, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -r = inf - -# G + -G == inf; note that -G is (n-1)*G (affine) -a = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, 2b78abc25a15c5e9dd8002263969a840c6c3521968f4ffd98bade7562e83b050a1bfa8bf7bb4a9ac23043dad4b03a4fe, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -b = 4d3aadc2299e1513812ff723614ede2b6454868459a30eff879c3afc541b4d6e20e378e2a0d6ce383dd0756649c0b528, d487543da5ea3a16227ffdd9c69657bf393cade6970b0026745218a9d17c4fae5e40573f844b5653dcfbc253b4fc5b01, 000000000000000000000000000000000000000000000000000000000000000100000000ffffffffffffffff00000001 -r = inf diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384.rs temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384.rs --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384.rs 2023-10-30 19:40:00.000000000 +0000 @@ -60,18 +60,17 @@ encoding: PhantomData, // Unreduced }, - elem_add_impl: GFp_p384_elem_add, - elem_mul_mont: GFp_p384_elem_mul_mont, - elem_sqr_mont: GFp_p384_elem_sqr_mont, + elem_mul_mont: p384_elem_mul_mont, + elem_sqr_mont: p384_elem_sqr_mont, - point_add_jacobian_impl: GFp_nistz384_point_add, + point_add_jacobian_impl: nistz384_point_add, }; pub static PRIVATE_KEY_OPS: PrivateKeyOps = PrivateKeyOps { common: &COMMON_OPS, elem_inv_squared: p384_elem_inv_squared, point_mul_base_impl: p384_point_mul_base_impl, - point_mul_impl: GFp_nistz384_point_mul, + point_mul_impl: nistz384_point_mul, }; fn p384_elem_inv_squared(a: &Elem) -> Elem { @@ -161,7 +160,7 @@ pub static SCALAR_OPS: ScalarOps = ScalarOps { common: &COMMON_OPS, scalar_inv_to_mont_impl: p384_scalar_inv_to_mont, - scalar_mul_mont: GFp_p384_scalar_mul_mont, + scalar_mul_mont: p384_scalar_mul_mont, }; pub static PUBLIC_SCALAR_OPS: PublicScalarOps = PublicScalarOps { @@ -202,15 +201,15 @@ // 581a0db248b0a77aecec196accc52971. fn mul(a: &Scalar, b: &Scalar) -> Scalar { - binary_op(GFp_p384_scalar_mul_mont, a, b) + binary_op(p384_scalar_mul_mont, a, b) } fn sqr(a: &Scalar) -> Scalar { - binary_op(GFp_p384_scalar_mul_mont, a, a) + binary_op(p384_scalar_mul_mont, a, a) } fn sqr_mut(a: &mut Scalar) { - unary_op_from_binary_op_assign(GFp_p384_scalar_mul_mont, a); + unary_op_from_binary_op_assign(p384_scalar_mul_mont, a); } // Returns (`a` squared `squarings` times) * `b`. @@ -229,7 +228,7 @@ for _ in 0..squarings { sqr_mut(acc); } - binary_op_assign(GFp_p384_scalar_mul_mont, acc, b) + binary_op_assign(p384_scalar_mul_mont, acc, b) } fn to_mont(a: &Scalar) -> Scalar { @@ -238,7 +237,7 @@ m: PhantomData, encoding: PhantomData, }; - binary_op(GFp_p384_scalar_mul_mont, a, &N_RR) + binary_op(p384_scalar_mul_mont, a, &N_RR) } // Indexes into `d`. @@ -325,12 +324,12 @@ acc } -unsafe extern "C" fn GFp_p384_elem_sqr_mont( +unsafe extern "C" fn p384_elem_sqr_mont( r: *mut Limb, // [COMMON_OPS.num_limbs] a: *const Limb, // [COMMON_OPS.num_limbs] ) { // XXX: Inefficient. TODO: Make a dedicated squaring routine. - GFp_p384_elem_mul_mont(r, a, a); + p384_elem_mul_mont(r, a, a); } const N_RR_LIMBS: [Limb; MAX_LIMBS] = p384_limbs![ @@ -338,31 +337,26 @@ 0x28266895, 0x3fb05b7a, 0x2b39bf21, 0x0c84ee01 ]; -extern "C" { - fn GFp_p384_elem_add( - r: *mut Limb, // [COMMON_OPS.num_limbs] - a: *const Limb, // [COMMON_OPS.num_limbs] - b: *const Limb, // [COMMON_OPS.num_limbs] - ); - fn GFp_p384_elem_mul_mont( +prefixed_extern! { + fn p384_elem_mul_mont( r: *mut Limb, // [COMMON_OPS.num_limbs] a: *const Limb, // [COMMON_OPS.num_limbs] b: *const Limb, // [COMMON_OPS.num_limbs] ); - fn GFp_nistz384_point_add( + fn nistz384_point_add( r: *mut Limb, // [3][COMMON_OPS.num_limbs] a: *const Limb, // [3][COMMON_OPS.num_limbs] b: *const Limb, // [3][COMMON_OPS.num_limbs] ); - fn GFp_nistz384_point_mul( + fn nistz384_point_mul( r: *mut Limb, // [3][COMMON_OPS.num_limbs] p_scalar: *const Limb, // [COMMON_OPS.num_limbs] p_x: *const Limb, // [COMMON_OPS.num_limbs] p_y: *const Limb, // [COMMON_OPS.num_limbs] ); - fn GFp_p384_scalar_mul_mont( + fn p384_scalar_mul_mont( r: *mut Limb, // [COMMON_OPS.num_limbs] a: *const Limb, // [COMMON_OPS.num_limbs] b: *const Limb, // [COMMON_OPS.num_limbs] diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_scalar_mul_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_scalar_mul_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_scalar_mul_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops/p384_scalar_mul_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ - -a = 00 -b = 00 -r = 00 - -a = 00 -b = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52972 -r = 00 - -a = 01 -b = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52972 -r = caa357821c6244e05eafdf931b0e6b53872b45a79929e877e4c3adcae9998bc585acc2c6a24bb9ca8be13114da045062 - -a = 02 -b = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52972 -r = 9546af0438c489c0bd5fbf26361cd6a70e568b4f3253d0f002240e13defbe9abb33f77dafbe6cc1a2ad648bee7437751 - -a = 03 -b = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52972 -r = 5fea06865526cea11c0f9eb9512b41fa9581d0f6cb7db9681f846e5cd45e4791e0d22cef5581de69c9cb6068f4829e40 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffe3b1a6c0fa1b96efac0d06d9245853bd76760cb5666294b9 -b = 02 -r = caa357821c6244e05eafdf931b0e6b53872b45a79929e877e4c3adcae9998bc585acc2c6a24bb9ca8be13114da045062 - -a = 7fffffffffffffffffffffffffffffffffffffffffffffffe3b1a6c0fa1b96efac0d06d9245853bd76760cb5666294ba -b = 02 -r = 355ca87de39dbb1fa150206ce4f194ac78d4ba5866d61787e29f9fb70a9da219d26d4aeba664edb0610ae855f2c0d911 - -a = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -b = 02 -r = 01 diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops.rs temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops.rs --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/ops.rs 2023-10-30 19:40:00.000000000 +0000 @@ -38,13 +38,13 @@ // `ops.num_limbs` elements are the X coordinate, the next // `ops.num_limbs` elements are the Y coordinate, and the next // `ops.num_limbs` elements are the Z coordinate. This layout is dictated - // by the requirements of the GFp_nistz256 code. + // by the requirements of the nistz256 code. xyz: [Limb; 3 * MAX_LIMBS], } impl Point { - pub fn new_at_infinity() -> Point { - Point { + pub fn new_at_infinity() -> Self { + Self { xyz: [0; 3 * MAX_LIMBS], } } @@ -66,7 +66,6 @@ pub b: Elem, // In all cases, `r`, `a`, and `b` may all alias each other. - elem_add_impl: unsafe extern "C" fn(r: *mut Limb, a: *const Limb, b: *const Limb), elem_mul_mont: unsafe extern "C" fn(r: *mut Limb, a: *const Limb, b: *const Limb), elem_sqr_mont: unsafe extern "C" fn(r: *mut Limb, a: *const Limb), @@ -76,7 +75,12 @@ impl CommonOps { #[inline] pub fn elem_add(&self, a: &mut Elem, b: &Elem) { - binary_op_assign(self.elem_add_impl, a, b) + let num_limbs = self.num_limbs; + limbs_add_assign_mod( + &mut a.limbs[..num_limbs], + &b.limbs[..num_limbs], + &self.q.p[..num_limbs], + ); } #[inline] @@ -287,24 +291,15 @@ } } - pub fn elem_equals(&self, a: &Elem, b: &Elem) -> bool { - for i in 0..self.public_key_ops.common.num_limbs { - if a.limbs[i] != b.limbs[i] { - return false; - } - } - true + pub fn elem_equals_vartime(&self, a: &Elem, b: &Elem) -> bool { + a.limbs[..self.public_key_ops.common.num_limbs] + == b.limbs[..self.public_key_ops.common.num_limbs] } pub fn elem_less_than(&self, a: &Elem, b: &Elem) -> bool { let num_limbs = self.public_key_ops.common.num_limbs; limbs_less_than_limbs_vartime(&a.limbs[..num_limbs], &b.limbs[..num_limbs]) } - - #[inline] - pub fn elem_sum(&self, a: &Elem, b: &Elem) -> Elem { - binary_op(self.public_key_ops.common.elem_add_impl, a, b) - } } #[allow(non_snake_case)] @@ -425,7 +420,7 @@ Ok(r) } -extern "C" { +prefixed_extern! { fn LIMBS_add_mod( r: *mut Limb, a: *const Limb, @@ -437,6 +432,7 @@ #[cfg(test)] mod tests { + extern crate alloc; use super::*; use crate::test; use alloc::{format, vec, vec::Vec}; @@ -501,17 +497,17 @@ }) } - // XXX: There's no `GFp_nistz256_sub` in *ring*; it's logic is inlined into + // XXX: There's no `p256_sub` in *ring*; it's logic is inlined into // the point arithmetic functions. Thus, we can't test it. #[test] fn p384_elem_sub_test() { - extern "C" { - fn GFp_p384_elem_sub(r: *mut Limb, a: *const Limb, b: *const Limb); + prefixed_extern! { + fn p384_elem_sub(r: *mut Limb, a: *const Limb, b: *const Limb); } elem_sub_test( &p384::COMMON_OPS, - GFp_p384_elem_sub, + p384_elem_sub, test_file!("ops/p384_elem_sum_tests.txt"), ); } @@ -552,17 +548,17 @@ }) } - // XXX: There's no `GFp_nistz256_div_by_2` in *ring*; it's logic is inlined + // XXX: There's no `p256_div_by_2` in *ring*; it's logic is inlined // into the point arithmetic functions. Thus, we can't test it. #[test] fn p384_elem_div_by_2_test() { - extern "C" { - fn GFp_p384_elem_div_by_2(r: *mut Limb, a: *const Limb); + prefixed_extern! { + fn p384_elem_div_by_2(r: *mut Limb, a: *const Limb); } elem_div_by_2_test( &p384::COMMON_OPS, - GFp_p384_elem_div_by_2, + p384_elem_div_by_2, test_file!("ops/p384_elem_div_by_2_tests.txt"), ); } @@ -588,27 +584,28 @@ }) } - // TODO: Add test vectors that test the range of values above `q`. + // There is no `ecp_nistz256_neg` on other targets. + #[cfg(target_arch = "x86_64")] #[test] fn p256_elem_neg_test() { - extern "C" { - fn GFp_nistz256_neg(r: *mut Limb, a: *const Limb); + prefixed_extern! { + fn ecp_nistz256_neg(r: *mut Limb, a: *const Limb); } elem_neg_test( &p256::COMMON_OPS, - GFp_nistz256_neg, + ecp_nistz256_neg, test_file!("ops/p256_elem_neg_tests.txt"), ); } #[test] fn p384_elem_neg_test() { - extern "C" { - fn GFp_p384_elem_neg(r: *mut Limb, a: *const Limb); + prefixed_extern! { + fn p384_elem_neg(r: *mut Limb, a: *const Limb); } elem_neg_test( &p384::COMMON_OPS, - GFp_p384_elem_neg, + p384_elem_neg, test_file!("ops/p384_elem_neg_tests.txt"), ); } @@ -702,18 +699,18 @@ #[test] fn p256_scalar_square_test() { - extern "C" { - fn GFp_p256_scalar_sqr_rep_mont(r: *mut Limb, a: *const Limb, rep: Limb); + prefixed_extern! { + fn p256_scalar_sqr_rep_mont(r: *mut Limb, a: *const Limb, rep: Limb); } scalar_square_test( &p256::SCALAR_OPS, - GFp_p256_scalar_sqr_rep_mont, + p256_scalar_sqr_rep_mont, test_file!("ops/p256_scalar_square_tests.txt"), ); } // XXX: There's no `p384_scalar_square_test()` because there's no dedicated - // `GFp_p384_scalar_sqr_rep_mont()`. + // `p384_scalar_sqr_rep_mont()`. fn scalar_square_test( ops: &ScalarOps, @@ -790,14 +787,10 @@ }); } - // Keep this in sync with the logic for defining `GFp_USE_LARGE_TABLE` and - // with the corresponding code in p256.rs that decides which base point - // multiplication to use. - #[cfg(any(target_arch = "aarch64", target_arch = "x86", target_arch = "x86_64"))] #[test] fn p256_point_sum_mixed_test() { - extern "C" { - fn GFp_nistz256_point_add_affine( + prefixed_extern! { + fn p256_point_add_affine( r: *mut Limb, // [p256::COMMON_OPS.num_limbs*3] a: *const Limb, // [p256::COMMON_OPS.num_limbs*3] b: *const Limb, // [p256::COMMON_OPS.num_limbs*2] @@ -805,14 +798,13 @@ } point_sum_mixed_test( &p256::PRIVATE_KEY_OPS, - GFp_nistz256_point_add_affine, + p256_point_add_affine, test_file!("ops/p256_point_sum_mixed_tests.txt"), ); } - // XXX: There is no `GFp_nistz384_point_add_affine()`. + // XXX: There is no `nistz384_point_add_affine()`. - #[cfg(any(target_arch = "aarch64", target_arch = "x86", target_arch = "x86_64"))] fn point_sum_mixed_test( ops: &PrivateKeyOps, point_add_affine: unsafe extern "C" fn( @@ -842,30 +834,30 @@ #[test] fn p256_point_double_test() { - extern "C" { - fn GFp_nistz256_point_double( + prefixed_extern! { + fn p256_point_double( r: *mut Limb, // [p256::COMMON_OPS.num_limbs*3] a: *const Limb, // [p256::COMMON_OPS.num_limbs*3] ); } point_double_test( &p256::PRIVATE_KEY_OPS, - GFp_nistz256_point_double, + p256_point_double, test_file!("ops/p256_point_double_tests.txt"), ); } #[test] fn p384_point_double_test() { - extern "C" { - fn GFp_nistz384_point_double( + prefixed_extern! { + fn nistz384_point_double( r: *mut Limb, // [p384::COMMON_OPS.num_limbs*3] a: *const Limb, // [p384::COMMON_OPS.num_limbs*3] ); } point_double_test( &p384::PRIVATE_KEY_OPS, - GFp_nistz384_point_double, + nistz384_point_double, test_file!("ops/p384_point_double_tests.txt"), ); } @@ -1010,25 +1002,25 @@ expected_point: &TestPoint, ) { let cops = ops.common; - let actual_x = &cops.point_x(&actual_point); - let actual_y = &cops.point_y(&actual_point); - let actual_z = &cops.point_z(&actual_point); + let actual_x = &cops.point_x(actual_point); + let actual_y = &cops.point_y(actual_point); + let actual_z = &cops.point_z(actual_point); match expected_point { TestPoint::Infinity => { let zero = Elem::zero(); - assert_elems_are_equal(cops, &actual_z, &zero); + assert_elems_are_equal(cops, actual_z, &zero); } TestPoint::Affine(expected_x, expected_y) => { - let zz_inv = ops.elem_inverse_squared(&actual_z); - let x_aff = cops.elem_product(&actual_x, &zz_inv); + let zz_inv = ops.elem_inverse_squared(actual_z); + let x_aff = cops.elem_product(actual_x, &zz_inv); let y_aff = { let zzzz_inv = cops.elem_squared(&zz_inv); - let zzz_inv = cops.elem_product(&actual_z, &zzzz_inv); - cops.elem_product(&actual_y, &zzz_inv) + let zzz_inv = cops.elem_product(actual_z, &zzzz_inv); + cops.elem_product(actual_y, &zzz_inv) }; - assert_elems_are_equal(cops, &x_aff, &expected_x); - assert_elems_are_equal(cops, &y_aff, &expected_y); + assert_elems_are_equal(cops, &x_aff, expected_x); + assert_elems_are_equal(cops, &y_aff, expected_y); } } } @@ -1048,12 +1040,10 @@ p } - #[cfg(any(target_arch = "aarch64", target_arch = "x86", target_arch = "x86_64"))] struct AffinePoint { xy: [Limb; 2 * MAX_LIMBS], } - #[cfg(any(target_arch = "aarch64", target_arch = "x86", target_arch = "x86_64"))] fn consume_affine_point( ops: &PrivateKeyOps, test_case: &mut test::TestCase, @@ -1118,15 +1108,19 @@ actual: &[Limb; MAX_LIMBS], expected: &[Limb; MAX_LIMBS], ) { - for i in 0..ops.num_limbs { - if actual[i] != expected[i] { - let mut s = alloc::string::String::new(); - for j in 0..ops.num_limbs { - let formatted = format!("{:016x}", actual[ops.num_limbs - j - 1]); - s.push_str(&formatted); - } - panic!("Actual != Expected,\nActual = {}", s); + if actual[..ops.num_limbs] != expected[..ops.num_limbs] { + let mut actual_s = alloc::string::String::new(); + let mut expected_s = alloc::string::String::new(); + for j in 0..ops.num_limbs { + let formatted = format!("{:016x}", actual[ops.num_limbs - j - 1]); + actual_s.push_str(&formatted); + let formatted = format!("{:016x}", expected[ops.num_limbs - j - 1]); + expected_s.push_str(&formatted); } + panic!( + "Actual != Expected,\nActual = {}, Expected = {}", + actual_s, expected_s + ); } } diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/private_key.rs temporalio-1.3.0/vendor/ring/src/ec/suite_b/private_key.rs --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/private_key.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/private_key.rs 2023-10-30 19:40:00.000000000 +0000 @@ -44,8 +44,8 @@ // [NSA Suite B Implementer's Guide to NIST SP 800-56A] Appendix B.2, // "Key Pair Generation by Testing Candidates". // - // [NSA Suite B Implementer's Guide to ECDSA]: doc/ecdsa.pdf. - // [NSA Suite B Implementer's Guide to NIST SP 800-56A]: doc/ecdh.pdf. + // [NSA Suite B Implementer's Guide to ECDSA]: doc/ecdsa.pdf + // [NSA Suite B Implementer's Guide to NIST SP 800-56A]: doc/ecdh.pdf // TODO: The NSA guide also suggests, in appendix B.1, another mechanism // that would avoid the need to use `rng.fill()` more than once. It works @@ -116,8 +116,8 @@ // [NSA Suite B Implementer's Guide to NIST SP 800-56A] Appendix B.2, // "Key Pair Generation by Testing Candidates". // - // [NSA Suite B Implementer's Guide to ECDSA]: doc/ecdsa.pdf. - // [NSA Suite B Implementer's Guide to NIST SP 800-56A]: doc/ecdh.pdf. + // [NSA Suite B Implementer's Guide to ECDSA]: doc/ecdsa.pdf + // [NSA Suite B Implementer's Guide to NIST SP 800-56A]: doc/ecdh.pdf // // Steps 5, 6, and 7. // @@ -140,7 +140,7 @@ let my_private_key = private_key_as_scalar(ops, my_private_key); let my_public_key = ops.point_mul_base(&my_private_key); public_out[0] = 4; // Uncompressed encoding. - let (x_out, y_out) = (&mut public_out[1..]).split_at_mut(elem_and_scalar_bytes); + let (x_out, y_out) = public_out[1..].split_at_mut(elem_and_scalar_bytes); // `big_endian_affine_from_jacobian` verifies that the point is not at // infinity and is on the curve. diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b/suite_b_public_key_tests.txt temporalio-1.3.0/vendor/ring/src/ec/suite_b/suite_b_public_key_tests.txt --- temporalio-1.3.0/vendor/ring/src/ec/suite_b/suite_b_public_key_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b/suite_b_public_key_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,233 +0,0 @@ -# Test vectors for public key validation. - -# Invalid Curve Attack from -# https://web-in-security.blogspot.ca/2015/09/practical-invalid-curve-attacks.html -# https://www.nds.rub.de/media/nds/veroeffentlichungen/2015/09/14/main-full.pdf -Curve = P-256 -Q = 04b70bf043c144935756f8f4578c369cf960ee510a5a0f90e93a373a21f0d1397f4a2e0ded57a5156bb82eb4314c37fd4155395a7e51988af289cce531b9c17192 -Result = F - - -# Test vectors for Public Key Point Validation. -# -# These test vectors were generated by applying the patch in -# util/generate-tests.patch to BoringSSL, and then running -# `bssl generate-tests ecc-public-key`. -# - -# X == 0, decompressed with y_bit == 0. This verifies that the -# implementation doesn't reject zero-valued field elements (they -# aren't scalars). -Curve = P-256 -Q = 04000000000000000000000000000000000000000000000000000000000000000066485c780e2f83d72433bd5d84a06bb6541c2af31dae871728bf856a174f93f4 -Result = P - -# X == q. This is invalid because q isn't a valid field element. Some -# broken implementations might accept this if they reduce X mod q -# since q mod q == 0 and the Y coordinate matches the one from the -# x == 0 test case above. -Curve = P-256 -Q = 04ffffffff00000001000000000000000000000000ffffffffffffffffffffffff66485c780e2f83d72433bd5d84a06bb6541c2af31dae871728bf856a174f93f4 -Result = F (X is out of range) - -# X == 0, decompressed with y_bit == 1. -Curve = P-256 -Q = 04000000000000000000000000000000000000000000000000000000000000000099b7a386f1d07c29dbcc42a27b5f9449abe3d50de25178e8d7407a95e8b06c0b -Result = P - -# X == q, decompressed with y_bit == 1. See the previous X == q test -# case. -Curve = P-256 -Q = 04ffffffff00000001000000000000000000000000ffffffffffffffffffffffff99b7a386f1d07c29dbcc42a27b5f9449abe3d50de25178e8d7407a95e8b06c0b -Result = F (X is out of range) - -# The largest valid X coordinate, decompressed with y_bit == 0. This -# helps ensure that the upper bound on coordinate values is not too -# low. -Curve = P-256 -Q = 04ffffffff00000001000000000000000000000000fffffffffffffffffffffffce68e641309515ec1da369202838e0adda2b37040614a5f5460c616e871aa3ede -Result = P - -# X == 0, decompressed with y_bit == 0. This verifies that the -# implementation doesn't reject zero-valued field elements (they -# aren't scalars). -Curve = P-384 -Q = 040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003cf99ef04f51a5ea630ba3f9f960dd593a14c9be39fd2bd215d3b4b08aaaf86bbf927f2c46e52ab06fb742b8850e521e -Result = P - -# X == q. This is invalid because q isn't a valid field element. Some -# broken implementations might accept this if they reduce X mod q -# since q mod q == 0 and the Y coordinate matches the one from the -# x == 0 test case above. -Curve = P-384 -Q = 04fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff3cf99ef04f51a5ea630ba3f9f960dd593a14c9be39fd2bd215d3b4b08aaaf86bbf927f2c46e52ab06fb742b8850e521e -Result = F (X is out of range) - -# X == 0, decompressed with y_bit == 1. -Curve = P-384 -Q = 04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c306610fb0ae5a159cf45c06069f22a6c5eb3641c602d42dea2c4b4f75550793406d80d2b91ad54f9048bd487af1ade1 -Result = P - -# X == q, decompressed with y_bit == 1. See the previous X == q test -# case. -Curve = P-384 -Q = 04fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffffc306610fb0ae5a159cf45c06069f22a6c5eb3641c602d42dea2c4b4f75550793406d80d2b91ad54f9048bd487af1ade1 -Result = F (X is out of range) - -# The largest valid X coordinate, decompressed with y_bit == 0. This -# helps ensure that the upper bound on coordinate values is not too -# low. -Curve = P-384 -Q = 04fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffe8cdeadbbd04911a3c1931e26df3fa6439dca9c7eb286fbd46fc319f0e2bb780232baf57825fc0c1912ada2fefe84024c -Result = P - - -# RFC 5903 (IKE and IKEv2 ECDH) Test Vectors -# Q is (grx, gry) in uncompressed encoding. - -Curve = P-256 -Q = 04D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF6356FBF3CA366CC23E8157854C13C58D6AAC23F046ADA30F8353E74F33039872AB -Result = P - -Curve = P-384 -Q = 04E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571DCFBEC7AACF3196472169E838430367F66EEBE3C6E70C416DD5F0C68759DD1FFF83FA40142209DFF5EAAD96DB9E6386C -Result = P - -# Tweaks of the RFC 5903 vectors for testing malformed (syntactically) public -# keys - -Curve = P-256 -Q = "" -Result = F (Peer public key is empty.) - -Curve = P-384 -Q = "" -Result = F (Peer public key is empty.) - -Curve = P-256 -Q = 00 -Result = F (Peer public key is the special encoding of the point at infinity.) - -Curve = P-384 -Q = 00 -Result = F (Peer public key is the special encoding of the point at infinity.) - -Curve = P-256 -Q = 01 -Result = F (Peer public key consists of (only) an invalid encoding indicator.) - -Curve = P-384 -Q = 01 -Result = F (Peer public key consists of (only) an invalid encoding indicator.) - -Curve = P-256 -Q = 02 -Result = F (Peer public key consists of (only) a compressed encoding indicator (0x02).) - -Curve = P-384 -Q = 02 -Result = F (Peer public key consists of (only) a compressed encoding indicator (0x02).) - -Curve = P-256 -Q = 03 -Result = F (Peer public key consists of (only) a compressed encoding indicator (0x03).) - -Curve = P-384 -Q = 03 -Result = F (Peer public key consists of (only) a compressed encoding indicator (0x03).) - -Curve = P-256 -Q = 04 -Result = F (Peer public key consists of (only) a uncompressed encoding indicator.) - -Curve = P-384 -Q = 04 -Result = F (Peer public key consists of (only) a compressed encoding indicator.) - -Curve = P-256 -Q = 04 -Result = F (Peer public key consists of (only) an invalid encoding indicator (0x05).) - -Curve = P-384 -Q = 04 -Result = F (Peer public key consists of (only) an invalid encoding indicator (0x05).) - -Curve = P-256 -Q = 01D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF6356FBF3CA366CC23E8157854C13C58D6AAC23F046ADA30F8353E74F33039872AB -Result = F (Peer public key starts with a completely invalid encoding indicator byte (0x01).) - -Curve = P-384 -Q = 01E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571DCFBEC7AACF3196472169E838430367F66EEBE3C6E70C416DD5F0C68759DD1FFF83FA40142209DFF5EAAD96DB9E6386C -Result = F (Peer public key starts with a completely invalid encoding indicator byte (0x01).) - -Curve = P-256 -Q = 02D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF6356FBF3CA366CC23E8157854C13C58D6AAC23F046ADA30F8353E74F33039872AB -Result = F (Peer public key encoding's first byte is 0x02, should be 0x04.) - -Curve = P-384 -Q = 02E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571DCFBEC7AACF3196472169E838430367F66EEBE3C6E70C416DD5F0C68759DD1FFF83FA40142209DFF5EAAD96DB9E6386C -Result = F (Peer public key encoding's first byte is 0x02, should be 0x04.) - -Curve = P-256 -Q = 03D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF6356FBF3CA366CC23E8157854C13C58D6AAC23F046ADA30F8353E74F33039872AB -Result = F (Peer public key encoding's first byte is 0x03, should be 0x04.) - -Curve = P-384 -Q = 03E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571DCFBEC7AACF3196472169E838430367F66EEBE3C6E70C416DD5F0C68759DD1FFF83FA40142209DFF5EAAD96DB9E6386C -Result = F (Peer public key encoding's first byte is 0x03, should be 0x04.) - -Curve = P-256 -Q = 05D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF6356FBF3CA366CC23E8157854C13C58D6AAC23F046ADA30F8353E74F33039872AB -Result = F (Peer public key starts with a completely invalid encoding indicator byte (0x05).) - -Curve = P-384 -Q = 05E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571DCFBEC7AACF3196472169E838430367F66EEBE3C6E70C416DD5F0C68759DD1FFF83FA40142209DFF5EAAD96DB9E6386C -Result = F (Peer public key starts with a completely invalid encoding indicator byte (0x05).) - -Curve = P-256 -Q = FFD12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF6356FBF3CA366CC23E8157854C13C58D6AAC23F046ADA30F8353E74F33039872AB -Result = F (Peer public key starts with a completely invalid encoding indicator byte (0xff).) - -Curve = P-384 -Q = FFE558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571DCFBEC7AACF3196472169E838430367F66EEBE3C6E70C416DD5F0C68759DD1FFF83FA40142209DFF5EAAD96DB9E6386C -Result = F (Peer public key starts with a completely invalid encoding indicator byte (0xff).) - -Curve = P-256 -Q = D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF6356FBF3CA366CC23E8157854C13C58D6AAC23F046ADA30F8353E74F33039872AB -Result = F (Peer public key is missing the encoding indicator byte.) - -Curve = P-384 -Q = E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571DCFBEC7AACF3196472169E838430367F66EEBE3C6E70C416DD5F0C68759DD1FFF83FA40142209DFF5EAAD96DB9E6386C -Result = F (Peer public key is missing the encoding indicator byte.) - -Curve = P-256 -Q = 04D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF6356FBF3CA366CC23E8157854C13C58D6AAC23F046ADA30F8353E74F33039872 -Result = F (Peer public key has the last byte truncated.) - -Curve = P-384 -Q = 04E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571DCFBEC7AACF3196472169E838430367F66EEBE3C6E70C416DD5F0C68759DD1FFF83FA40142209DFF5EAAD96DB9E638 -Result = F (Peer public key has the last byte truncated.) - -Curve = P-256 -Q = 04D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF63 -Result = F (Peer public key is missing the Y coordinate completely.) - -Curve = P-384 -Q = 04E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571 -Result = F (Peer public key is missing the Y coordinate completely.) - -Curve = P-256 -Q = 02D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF63 -Result = F (Peer public key is in compressed form (0x02).) - -Curve = P-384 -Q = 02E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571 -Result = F (Peer public key is in compressed form (0x02).) - -Curve = P-256 -Q = 03D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF63 -Result = F (Peer public key is in compressed form (0x03).) - -Curve = P-384 -Q = 03E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571 -Result = F (Peer public key is in compressed form (0x03).) diff -Nru temporalio-1.3.0/vendor/ring/src/ec/suite_b.rs temporalio-1.3.0/vendor/ring/src/ec/suite_b.rs --- temporalio-1.3.0/vendor/ring/src/ec/suite_b.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec/suite_b.rs 2023-10-30 19:40:00.000000000 +0000 @@ -191,7 +191,7 @@ let actual_alg_id = der::expect_tag_and_get_value(input, der::Tag::ContextSpecificConstructed0) .map_err(|error::Unspecified| error::KeyRejected::invalid_encoding())?; - if actual_alg_id != template.curve_oid() { + if actual_alg_id.as_slice_less_safe() != template.curve_oid().as_slice_less_safe() { return Err(error::KeyRejected::wrong_algorithm()); } } @@ -220,7 +220,7 @@ let r = ec::KeyPair::derive(seed) .map_err(|error::Unspecified| error::KeyRejected::unexpected_error())?; - if public_key_bytes != *r.public_key().as_ref() { + if public_key_bytes.as_slice_less_safe() != r.public_key().as_ref() { return Err(error::KeyRejected::inconsistent_components()); } @@ -228,7 +228,10 @@ } pub mod curve; + +#[cfg(not(target_arch = "wasm32"))] pub mod ecdh; + pub mod ecdsa; mod ops; diff -Nru temporalio-1.3.0/vendor/ring/src/ec.rs temporalio-1.3.0/vendor/ring/src/ec.rs --- temporalio-1.3.0/vendor/ring/src/ec.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/ec.rs 2023-10-30 19:40:00.000000000 +0000 @@ -36,6 +36,7 @@ #[derive(Clone, Copy, Debug, PartialEq)] pub enum CurveID { + #[cfg(not(target_arch = "wasm32"))] Curve25519, P256, P384, diff -Nru temporalio-1.3.0/vendor/ring/src/endian.rs temporalio-1.3.0/vendor/ring/src/endian.rs --- temporalio-1.3.0/vendor/ring/src/endian.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/endian.rs 2023-10-30 19:40:00.000000000 +0000 @@ -11,13 +11,6 @@ const ZERO: Self; } -/// Allow access to a slice of of `Encoding` as a slice of bytes. -pub fn as_byte_slice, T>(x: &[E]) -> &[u8] { - unsafe { - core::slice::from_raw_parts(x.as_ptr() as *const u8, x.len() * core::mem::size_of::()) - } -} - /// Work around the inability to implement `AsRef` for arrays of `Encoding`s /// due to the coherence rules. pub trait ArrayEncoding { @@ -32,24 +25,17 @@ macro_rules! define_endian { ($endian:ident) => { + #[derive(Clone, Copy)] #[repr(transparent)] pub struct $endian(T); - impl $endian { - #[deprecated] - pub fn into_raw_value(self) -> T { - self.0 - } - } - - impl Copy for $endian where T: Copy {} - - impl Clone for $endian + impl core::ops::BitXorAssign for $endian where - T: Clone, + T: core::ops::BitXorAssign, { - fn clone(&self) -> Self { - Self(self.0.clone()) + #[inline(always)] + fn bitxor_assign(&mut self, a: Self) { + self.0 ^= a.0; } } }; @@ -60,6 +46,7 @@ impl FromByteArray<[u8; $elems * core::mem::size_of::<$base>()]> for [$endian<$base>; $elems] { + #[inline] fn from_byte_array(a: &[u8; $elems * core::mem::size_of::<$base>()]) -> Self { unsafe { core::mem::transmute_copy(a) } } @@ -72,10 +59,8 @@ impl ArrayEncoding<[u8; $elems * core::mem::size_of::<$base>()]> for [$endian<$base>; $elems] { + #[inline] fn as_byte_array(&self) -> &[u8; $elems * core::mem::size_of::<$base>()] { - // TODO: When we can require Rust 1.47.0 or later we could avoid - // `as` and `unsafe` here using - // `as_byte_slice(self).try_into().unwrap()`. let as_bytes_ptr = self.as_ptr() as *const [u8; $elems * core::mem::size_of::<$base>()]; unsafe { &*as_bytes_ptr } diff -Nru temporalio-1.3.0/vendor/ring/src/error.rs temporalio-1.3.0/vendor/ring/src/error.rs --- temporalio-1.3.0/vendor/ring/src/error.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/error.rs 2023-10-30 19:40:00.000000000 +0000 @@ -76,49 +76,34 @@ #[derive(Clone, Copy, Debug, PartialEq)] pub struct Unspecified; -impl Unspecified { - fn description_() -> &'static str { - "ring::error::Unspecified" - } -} - // This is required for the implementation of `std::error::Error`. impl core::fmt::Display for Unspecified { fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { - f.write_str(Self::description_()) + f.write_str("ring::error::Unspecified") } } #[cfg(feature = "std")] -impl std::error::Error for Unspecified { - #[inline] - fn cause(&self) -> Option<&dyn std::error::Error> { - None - } - - fn description(&self) -> &str { - Self::description_() - } -} +impl std::error::Error for Unspecified {} impl From for Unspecified { fn from(_: untrusted::EndOfInput) -> Self { - Unspecified + Self } } impl From for Unspecified { fn from(_: core::array::TryFromSliceError) -> Self { - Unspecified + Self } } /// An error parsing or validating a key. /// -/// The `Display` implementation and `::description()` -/// will return a string that will help you better understand why a key was -/// rejected change which errors are reported in which situations while -/// minimizing the likelihood that any applications will be broken. +/// The `Display` implementation will return a string that will help you better +/// understand why a key was rejected change which errors are reported in which +/// situations while minimizing the likelihood that any applications will be +/// broken. /// /// Here is an incomplete list of reasons a key may be unsupported: /// @@ -147,80 +132,67 @@ pub struct KeyRejected(&'static str); impl KeyRejected { - /// The value returned from ::description() - pub fn description_(&self) -> &'static str { - self.0 - } - pub(crate) fn inconsistent_components() -> Self { - KeyRejected("InconsistentComponents") + Self("InconsistentComponents") } pub(crate) fn invalid_component() -> Self { - KeyRejected("InvalidComponent") + Self("InvalidComponent") } #[inline] pub(crate) fn invalid_encoding() -> Self { - KeyRejected("InvalidEncoding") + Self("InvalidEncoding") } // XXX: See the comment at the call site. pub(crate) fn rng_failed() -> Self { - KeyRejected("RNG failed") + Self("RNG failed") } pub(crate) fn public_key_is_missing() -> Self { - KeyRejected("PublicKeyIsMissing") + Self("PublicKeyIsMissing") } #[cfg(feature = "alloc")] pub(crate) fn too_small() -> Self { - KeyRejected("TooSmall") + Self("TooSmall") } #[cfg(feature = "alloc")] pub(crate) fn too_large() -> Self { - KeyRejected("TooLarge") + Self("TooLarge") } pub(crate) fn version_not_supported() -> Self { - KeyRejected("VersionNotSupported") + Self("VersionNotSupported") } pub(crate) fn wrong_algorithm() -> Self { - KeyRejected("WrongAlgorithm") + Self("WrongAlgorithm") } #[cfg(feature = "alloc")] pub(crate) fn private_modulus_len_not_multiple_of_512_bits() -> Self { - KeyRejected("PrivateModulusLenNotMultipleOf512Bits") + Self("PrivateModulusLenNotMultipleOf512Bits") } pub(crate) fn unexpected_error() -> Self { - KeyRejected("UnexpectedError") + Self("UnexpectedError") } } #[cfg(feature = "std")] -impl std::error::Error for KeyRejected { - fn cause(&self) -> Option<&dyn std::error::Error> { - None - } - - fn description(&self) -> &str { - self.description_() - } -} +impl std::error::Error for KeyRejected {} impl core::fmt::Display for KeyRejected { fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { - f.write_str(self.description_()) + f.write_str(self.0) } } impl From for Unspecified { fn from(_: KeyRejected) -> Self { - Unspecified + Self } } diff -Nru temporalio-1.3.0/vendor/ring/src/hkdf.rs temporalio-1.3.0/vendor/ring/src/hkdf.rs --- temporalio-1.3.0/vendor/ring/src/hkdf.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/hkdf.rs 2023-10-30 19:40:00.000000000 +0000 @@ -47,7 +47,7 @@ impl KeyType for Algorithm { fn len(&self) -> usize { - self.0.digest_algorithm().output_len + self.0.digest_algorithm().output_len() } } @@ -62,7 +62,7 @@ /// Constructing a `Salt` is relatively expensive so it is good to reuse a /// `Salt` object instead of re-constructing `Salt`s with the same value. pub fn new(algorithm: Algorithm, value: &[u8]) -> Self { - Salt(hmac::Key::new(algorithm.0, value)) + Self(hmac::Key::new(algorithm.0, value)) } /// The [HKDF-Extract] operation. @@ -130,7 +130,7 @@ len: L, ) -> Result, error::Unspecified> { let len_cached = len.len(); - if len_cached > 255 * self.0.algorithm().digest_algorithm().output_len { + if len_cached > 255 * self.0.algorithm().digest_algorithm().output_len() { return Err(error::Unspecified); } Ok(Okm { @@ -196,7 +196,7 @@ } let digest_alg = prk.0.algorithm().digest_algorithm(); - assert!(digest_alg.block_len >= digest_alg.output_len); + assert!(digest_alg.block_len() >= digest_alg.output_len()); let mut ctx = hmac::Context::with_key(&prk.0); @@ -212,12 +212,12 @@ let t = t.as_ref(); // Append `t` to the output. - out = if out.len() < digest_alg.output_len { + out = if out.len() < digest_alg.output_len() { let len = out.len(); out.copy_from_slice(&t[..len]); &mut [] } else { - let (this_chunk, rest) = out.split_at_mut(digest_alg.output_len); + let (this_chunk, rest) = out.split_at_mut(digest_alg.output_len()); this_chunk.copy_from_slice(t); rest }; diff -Nru temporalio-1.3.0/vendor/ring/src/hmac_generate_serializable_tests.txt temporalio-1.3.0/vendor/ring/src/hmac_generate_serializable_tests.txt --- temporalio-1.3.0/vendor/ring/src/hmac_generate_serializable_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/hmac_generate_serializable_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -HMAC = SHA1 -Key = 000102030405060708090a0b0c0d0e0f10111213 - -HMAC = SHA256 -Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f - -HMAC = SHA384 -Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f - -HMAC = SHA512 -Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f diff -Nru temporalio-1.3.0/vendor/ring/src/hmac.rs temporalio-1.3.0/vendor/ring/src/hmac.rs --- temporalio-1.3.0/vendor/ring/src/hmac.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/hmac.rs 2023-10-30 19:40:00.000000000 +0000 @@ -135,10 +135,6 @@ /// HMAC using SHA-512. pub static HMAC_SHA512: Algorithm = Algorithm(&digest::SHA512); -/// A deprecated alias for `Tag`. -#[deprecated(note = "`Signature` was renamed to `Tag`. This alias will be removed soon.")] -pub type Signature = Tag; - /// An HMAC tag. /// /// For a given tag `t`, use `t.as_ref()` to get the tag value as a byte slice. @@ -159,16 +155,6 @@ outer: digest::BlockContext, } -/// `hmac::SigningKey` was renamed to `hmac::Key`. -#[deprecated(note = "Renamed to `hmac::Key`.")] -pub type SigningKey = Key; - -/// `hmac::VerificationKey` was merged into `hmac::Key`. -#[deprecated( - note = "The distinction between verification & signing keys was removed. Use `hmac::Key`." -)] -pub type VerificationKey = Key; - impl core::fmt::Debug for Key { fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> { f.debug_struct("Key") @@ -197,7 +183,7 @@ F: FnOnce(&mut [u8]) -> Result<(), error::Unspecified>, { let mut key_bytes = [0; digest::MAX_OUTPUT_LEN]; - let key_bytes = &mut key_bytes[..algorithm.0.output_len]; + let key_bytes = &mut key_bytes[..algorithm.0.output_len()]; fill(key_bytes)?; Ok(Self::new(algorithm, key_bytes)) } @@ -212,8 +198,8 @@ /// `key_value` shouldn't be a password. /// /// As specified in RFC 2104, if `key_value` is shorter than the digest - /// algorithm's block length (as returned by `digest::Algorithm::block_len`, - /// not the digest length returned by `digest::Algorithm::output_len`) then + /// algorithm's block length (as returned by `digest::Algorithm::block_len()`, + /// not the digest length returned by `digest::Algorithm::output_len()`) then /// it will be padded with zeros. Similarly, if it is longer than the block /// length then it will be compressed using the digest algorithm. /// @@ -228,8 +214,10 @@ outer: digest::BlockContext::new(digest_alg), }; + let block_len = digest_alg.block_len(); + let key_hash; - let key_value = if key_value.len() <= digest_alg.block_len { + let key_value = if key_value.len() <= block_len { key_value } else { key_hash = digest::digest(digest_alg, key_value); @@ -239,7 +227,7 @@ const IPAD: u8 = 0x36; let mut padded_key = [IPAD; digest::MAX_BLOCK_LEN]; - let padded_key = &mut padded_key[..digest_alg.block_len]; + let padded_key = &mut padded_key[..block_len]; // If the key is shorter than one block then we're supposed to act like // it is padded with zero bytes up to the block length. `x ^ 0 == x` so @@ -247,7 +235,7 @@ for (padded_key, key_value) in padded_key.iter_mut().zip(key_value.iter()) { *padded_key ^= *key_value; } - key.inner.update(&padded_key); + key.inner.update(padded_key); const OPAD: u8 = 0x5C; @@ -256,7 +244,7 @@ for b in padded_key.iter_mut() { *b ^= IPAD ^ OPAD; } - key.outer.update(&padded_key); + key.outer.update(padded_key); key } @@ -270,13 +258,13 @@ impl hkdf::KeyType for Algorithm { fn len(&self) -> usize { - self.digest_algorithm().output_len + self.digest_algorithm().output_len() } } impl From> for Key { fn from(okm: hkdf::Okm) -> Self { - Key::construct(*okm.len(), |buf| okm.fill(buf)).unwrap() + Self::construct(*okm.len(), |buf| okm.fill(buf)).unwrap() } } @@ -289,10 +277,6 @@ outer: digest::BlockContext, } -/// `hmac::SigningContext` was renamed to `hmac::Context`. -#[deprecated(note = "Renamed to `hmac::Context`.")] -pub type SigningContext = Context; - impl core::fmt::Debug for Context { fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> { f.debug_struct("Context") @@ -327,8 +311,8 @@ pub fn sign(self) -> Tag { let algorithm = self.inner.algorithm(); let mut pending = [0u8; digest::MAX_BLOCK_LEN]; - let pending = &mut pending[..algorithm.block_len]; - let num_pending = algorithm.output_len; + let pending = &mut pending[..algorithm.block_len()]; + let num_pending = algorithm.output_len(); pending[..num_pending].copy_from_slice(self.inner.finish().as_ref()); Tag(self.outer.finish(pending, num_pending)) } diff -Nru temporalio-1.3.0/vendor/ring/src/io/der.rs temporalio-1.3.0/vendor/ring/src/io/der.rs --- temporalio-1.3.0/vendor/ring/src/io/der.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/io/der.rs 2023-10-30 19:40:00.000000000 +0000 @@ -35,6 +35,8 @@ UTCTime = 0x17, GeneralizedTime = 0x18, + ContextSpecific1 = CONTEXT_SPECIFIC | 1, + ContextSpecificConstructed0 = CONTEXT_SPECIFIC | CONSTRUCTED | 0, ContextSpecificConstructed1 = CONTEXT_SPECIFIC | CONSTRUCTED | 1, ContextSpecificConstructed3 = CONTEXT_SPECIFIC | CONSTRUCTED | 3, @@ -101,10 +103,18 @@ Ok((tag, inner)) } +#[inline] pub fn bit_string_with_no_unused_bits<'a>( input: &mut untrusted::Reader<'a>, ) -> Result, error::Unspecified> { - nested(input, Tag::BitString, error::Unspecified, |value| { + bit_string_tagged_with_no_unused_bits(Tag::BitString, input) +} + +pub(crate) fn bit_string_tagged_with_no_unused_bits<'a>( + tag: Tag, + input: &mut untrusted::Reader<'a>, +) -> Result, error::Unspecified> { + nested(input, tag, error::Unspecified, |value| { let unused_bits_at_end = value.read_byte().map_err(|_| error::Unspecified)?; if unused_bits_at_end != 0 { return Err(error::Unspecified); @@ -128,73 +138,42 @@ inner.read_all(error, decoder) } -fn nonnegative_integer<'a>( +pub(crate) fn nonnegative_integer<'a>( input: &mut untrusted::Reader<'a>, - min_value: u8, ) -> Result, error::Unspecified> { - // Verify that |input|, which has had any leading zero stripped off, is the - // encoding of a value of at least |min_value|. - fn check_minimum(input: untrusted::Input, min_value: u8) -> Result<(), error::Unspecified> { - input.read_all(error::Unspecified, |input| { - let first_byte = input.read_byte()?; - if input.at_end() && first_byte < min_value { - return Err(error::Unspecified); - } - let _ = input.read_bytes_to_end(); - Ok(()) - }) - } - let value = expect_tag_and_get_value(input, Tag::Integer)?; - - value.read_all(error::Unspecified, |input| { - // Empty encodings are not allowed. - let first_byte = input.read_byte()?; - - if first_byte == 0 { - if input.at_end() { - // |value| is the legal encoding of zero. - if min_value > 0 { - return Err(error::Unspecified); - } - return Ok(value); + match value + .as_slice_less_safe() + .split_first() + .ok_or(error::Unspecified)? + { + // Zero or leading zero. + (0, rest) => { + match rest.first() { + // Zero. + None => Ok(value), + // Necessary leading zero. + Some(&second) if second & 0x80 == 0x80 => Ok(untrusted::Input::from(rest)), + // Unnecessary leading zero. + _ => Err(error::Unspecified), } - - let r = input.read_bytes_to_end(); - r.read_all(error::Unspecified, |input| { - let second_byte = input.read_byte()?; - if (second_byte & 0x80) == 0 { - // A leading zero is only allowed when the value's high bit - // is set. - return Err(error::Unspecified); - } - let _ = input.read_bytes_to_end(); - Ok(()) - })?; - check_minimum(r, min_value)?; - return Ok(r); - } - - // Negative values are not allowed. - if (first_byte & 0x80) != 0 { - return Err(error::Unspecified); } - - let _ = input.read_bytes_to_end(); - check_minimum(value, min_value)?; - Ok(value) - }) + // Positive value with no leading zero. + (first, _) if first & 0x80 == 0 => Ok(value), + // Negative value. + (_, _) => Err(error::Unspecified), + } } /// Parse as integer with a value in the in the range [0, 255], returning its /// numeric value. This is typically used for parsing version numbers. #[inline] pub fn small_nonnegative_integer(input: &mut untrusted::Reader) -> Result { - let value = nonnegative_integer(input, 0)?; - value.read_all(error::Unspecified, |input| { - let r = input.read_byte()?; - Ok(r) - }) + let value = nonnegative_integer(input)?; + match *value.as_slice_less_safe() { + [b] => Ok(b), + _ => Err(error::Unspecified), + } } /// Parses a positive DER integer, returning the big-endian-encoded value, @@ -202,9 +181,8 @@ pub fn positive_integer<'a>( input: &mut untrusted::Reader<'a>, ) -> Result, error::Unspecified> { - Ok(Positive::new_non_empty_without_leading_zeros( - nonnegative_integer(input, 1)?, - )) + let value = nonnegative_integer(input)?; + Positive::from_be_bytes(value) } #[cfg(test)] @@ -212,25 +190,16 @@ use super::*; use crate::error; - fn with_good_i(value: &[u8], f: F) - where - F: FnOnce(&mut untrusted::Reader) -> Result, - { - let r = untrusted::Input::from(value).read_all(error::Unspecified, f); - assert!(r.is_ok()); - } - - fn with_bad_i(value: &[u8], f: F) + fn with_i<'a, F, R>(value: &'a [u8], f: F) -> Result where - F: FnOnce(&mut untrusted::Reader) -> Result, + F: FnOnce(&mut untrusted::Reader<'a>) -> Result, { - let r = untrusted::Input::from(value).read_all(error::Unspecified, f); - assert!(r.is_err()); + untrusted::Input::from(value).read_all(error::Unspecified, f) } static ZERO_INTEGER: &[u8] = &[0x02, 0x01, 0x00]; - static GOOD_POSITIVE_INTEGERS: &[(&[u8], u8)] = &[ + static GOOD_POSITIVE_INTEGERS_SMALL: &[(&[u8], u8)] = &[ (&[0x02, 0x01, 0x01], 0x01), (&[0x02, 0x01, 0x02], 0x02), (&[0x02, 0x01, 0x7e], 0x7e), @@ -243,6 +212,19 @@ (&[0x02, 0x02, 0x00, 0xff], 0xff), ]; + static GOOD_POSITIVE_INTEGERS_LARGE: &[(&[u8], &[u8])] = &[ + (&[0x02, 0x02, 0x01, 0x00], &[0x01, 0x00]), + (&[0x02, 0x02, 0x02, 0x01], &[0x02, 0x01]), + (&[0x02, 0x02, 0x7e, 0xfe], &[0x7e, 0xfe]), + (&[0x02, 0x02, 0x7f, 0xff], &[0x7f, 0xff]), + // Values that need to have an 0x00 prefix to disambiguate them from + // them from negative values. + (&[0x02, 0x03, 0x00, 0x80, 0x00], &[0x80, 0x00]), + (&[0x02, 0x03, 0x00, 0x81, 0x01], &[0x81, 0x01]), + (&[0x02, 0x03, 0x00, 0xfe, 0xfe], &[0xfe, 0xfe]), + (&[0x02, 0x03, 0x00, 0xff, 0xff], &[0xff, 0xff]), + ]; + static BAD_NONNEGATIVE_INTEGERS: &[&[u8]] = &[ &[], // At end of input &[0x02], // Tag only @@ -250,11 +232,13 @@ // Length mismatch &[0x02, 0x00, 0x01], &[0x02, 0x01], + // Would be valid if leading zero is ignored when comparing length. &[0x02, 0x01, 0x00, 0x01], &[0x02, 0x01, 0x01, 0x00], // Would be valid if last byte is ignored. &[0x02, 0x02, 0x01], - // Negative values + // Values that are missing a necessary leading 0x00 &[0x02, 0x01, 0x80], + &[0x02, 0x01, 0x81], &[0x02, 0x01, 0xfe], &[0x02, 0x01, 0xff], // Values that have an unnecessary leading 0x00 @@ -267,45 +251,44 @@ #[test] fn test_small_nonnegative_integer() { - with_good_i(ZERO_INTEGER, |input| { - assert_eq!(small_nonnegative_integer(input)?, 0x00); - Ok(()) - }); - for &(test_in, test_out) in GOOD_POSITIVE_INTEGERS.iter() { - with_good_i(test_in, |input| { + let zero = (ZERO_INTEGER, 0x00); + for &(test_in, test_out) in + core::iter::once(&zero).chain(GOOD_POSITIVE_INTEGERS_SMALL.iter()) + { + let result = with_i(test_in, |input| { assert_eq!(small_nonnegative_integer(input)?, test_out); Ok(()) }); + assert_eq!(result, Ok(())); } - for &test_in in BAD_NONNEGATIVE_INTEGERS.iter() { - with_bad_i(test_in, |input| { - let _ = small_nonnegative_integer(input)?; - Ok(()) - }); + for &test_in in BAD_NONNEGATIVE_INTEGERS + .iter() + .chain(GOOD_POSITIVE_INTEGERS_LARGE.iter().map(|(input, _)| input)) + { + let result = with_i(test_in, small_nonnegative_integer); + assert_eq!(result, Err(error::Unspecified)); } } #[test] fn test_positive_integer() { - with_bad_i(ZERO_INTEGER, |input| { - let _ = positive_integer(input)?; - Ok(()) - }); - for &(test_in, test_out) in GOOD_POSITIVE_INTEGERS.iter() { - with_good_i(test_in, |input| { - let test_out = [test_out]; + for (test_in, test_out) in GOOD_POSITIVE_INTEGERS_SMALL + .iter() + .map(|(test_in, test_out)| (*test_in, core::slice::from_ref(test_out))) + .chain(GOOD_POSITIVE_INTEGERS_LARGE.iter().copied()) + { + let result = with_i(test_in, |input| { assert_eq!( - positive_integer(input)?.big_endian_without_leading_zero_as_input(), - untrusted::Input::from(&test_out[..]) + positive_integer(input)?.big_endian_without_leading_zero(), + test_out ); Ok(()) }); + assert_eq!(result, Ok(())) } - for &test_in in BAD_NONNEGATIVE_INTEGERS.iter() { - with_bad_i(test_in, |input| { - let _ = positive_integer(input)?; - Ok(()) - }); + for &test_in in core::iter::once(&ZERO_INTEGER).chain(BAD_NONNEGATIVE_INTEGERS.iter()) { + let result = with_i(test_in, positive_integer); + assert!(matches!(result, Err(error::Unspecified))); } } } diff -Nru temporalio-1.3.0/vendor/ring/src/io/positive.rs temporalio-1.3.0/vendor/ring/src/io/positive.rs --- temporalio-1.3.0/vendor/ring/src/io/positive.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/io/positive.rs 2023-10-30 19:40:00.000000000 +0000 @@ -14,16 +14,25 @@ //! Serialization and deserialization. +use crate::error; + /// A serialized positive integer. #[derive(Copy, Clone)] pub struct Positive<'a>(untrusted::Input<'a>); impl<'a> Positive<'a> { #[inline] - pub(crate) fn new_non_empty_without_leading_zeros(input: untrusted::Input<'a>) -> Self { - debug_assert!(!input.is_empty()); - debug_assert!(input.len() == 1 || input.as_slice_less_safe()[0] != 0); - Self(input) + pub(crate) fn from_be_bytes(input: untrusted::Input<'a>) -> Result { + // Empty inputs are not allowed. + let &first_byte = input + .as_slice_less_safe() + .first() + .ok_or(error::Unspecified)?; + // Zero isn't allowed and leading zeros aren't allowed. + if first_byte == 0 { + return Err(error::Unspecified); + } + Ok(Self(input)) } /// Returns the value, ordered from significant byte to least significant @@ -51,3 +60,39 @@ self.0.as_slice_less_safe()[0] } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_from_be_bytes() { + static TEST_CASES: &[(&[u8], Result<&[u8], error::Unspecified>)] = &[ + // An empty input isn't a number. + (&[], Err(error::Unspecified)), + // Zero is not positive. + (&[0x00], Err(error::Unspecified)), + // Minimum value. No leading zero required or allowed. + (&[0x00, 0x01], Err(error::Unspecified)), + (&[0x01], Ok(&[0x01])), + // Maximum first byte. No leading zero required or allowed. + (&[0xff], Ok(&[0xff])), + (&[0x00, 0xff], Err(error::Unspecified)), + // The last byte can be zero. + (&[0x01, 0x00], Ok(&[0x01, 0x00])), + (&[0x01, 0x00, 0x00], Ok(&[0x01, 0x00, 0x00])), + // Having no zero bytes are also allowed. + (&[0x01, 0x01], Ok(&[0x01, 0x01])), + // A middle byte can be zero. + (&[0x01, 0x00, 0x01], Ok(&[0x01, 0x00, 0x01])), + (&[0x01, 0x01, 0x01], Ok(&[0x01, 0x01, 0x01])), + ]; + for &(input, result) in TEST_CASES { + let input = untrusted::Input::from(input); + assert_eq!( + Positive::from_be_bytes(input).map(|p| p.big_endian_without_leading_zero()), + result + ); + } + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/io/writer.rs temporalio-1.3.0/vendor/ring/src/io/writer.rs --- temporalio-1.3.0/vendor/ring/src/io/writer.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/io/writer.rs 2023-10-30 19:40:00.000000000 +0000 @@ -23,9 +23,9 @@ len: usize, } -impl Into for LengthMeasurement { - fn into(self) -> usize { - self.len +impl From for usize { + fn from(len: LengthMeasurement) -> usize { + len.len } } @@ -58,10 +58,10 @@ } } -impl Into> for Writer { - fn into(self) -> Box<[u8]> { - assert_eq!(self.requested_capacity, self.bytes.len()); - self.bytes.into_boxed_slice() +impl From for Box<[u8]> { + fn from(writer: Writer) -> Self { + assert_eq!(writer.requested_capacity, writer.bytes.len()); + writer.bytes.into_boxed_slice() } } diff -Nru temporalio-1.3.0/vendor/ring/src/lib.rs temporalio-1.3.0/vendor/ring/src/lib.rs --- temporalio-1.3.0/vendor/ring/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -22,45 +22,20 @@ //! Description //! alloc (default) //! Enable features that require use of the heap, RSA in particular. -//! dev_urandom_fallback (default) -//! This is only applicable to Linux. On Linux, by default, -//! ring::rand::SystemRandom will fall back to reading -//! from /dev/urandom if the getrandom() -//! syscall isn't supported at runtime. When the -//! dev_urandom_fallback feature is disabled, such -//! fallbacks will not occur. See the documentation for -//! rand::SystemRandom for more details. //! std //! Enable features that use libstd, in particular //! std::error::Error integration. Implies `alloc`. -//! wasm32_c -//! Enables features that require a C compiler on wasm32 targets, such as -//! the constant_time module, HMAC verification, and PBKDF2 -//! verification. Without this feature, only a subset of functionality -//! is provided to wasm32 targets so that a C compiler isn't needed. A -//! typical invocation would be: -//! TARGET_CC=clang-10 TARGET_AR=llvm-ar-10 cargo test --target=wasm32-unknown-unknown --features=wasm32_c -//! with llvm-ar-10 and clang-10 in $PATH. -//! (Going forward more functionality should be enabled by default, without -//! requiring these hacks, and without requiring a C compiler.) +//! wasm32_unknown_unknown_js +//! When this feature is enabled, for the wasm32-unknown-unknown target, +//! Web APIs will be used to implement features like `ring::rand` that +//! require an operating environment of some kind. This has no effect +//! for any other target. This enables the `getrandom` crate's `js` +//! feature. //! -#![doc(html_root_url = "https://briansmith.org/rustdoc/")] +// When running mk/package.sh, don't actually build any code. +#![cfg(not(pregenerate_asm_only))] #![allow( - clippy::collapsible_if, - clippy::identity_op, - clippy::len_without_is_empty, - clippy::len_zero, - clippy::let_unit_value, - clippy::many_single_char_names, - clippy::needless_range_loop, - clippy::new_without_default, - clippy::neg_cmp_op_on_partial_ord, - clippy::range_plus_one, - clippy::too_many_arguments, - clippy::trivially_copy_pass_by_ref, - clippy::type_complexity, - clippy::unreadable_literal, missing_copy_implementations, missing_debug_implementations, non_camel_case_types, @@ -80,6 +55,9 @@ mod debug; #[macro_use] +mod prefixed; + +#[macro_use] pub mod test; #[macro_use] @@ -92,6 +70,8 @@ mod polyfill; pub mod aead; + +#[cfg(not(target_arch = "wasm32"))] pub mod agreement; mod bits; @@ -114,7 +94,7 @@ pub mod rand; #[cfg(feature = "alloc")] -mod rsa; +pub mod rsa; pub mod signature; diff -Nru temporalio-1.3.0/vendor/ring/src/limb.rs temporalio-1.3.0/vendor/ring/src/limb.rs --- temporalio-1.3.0/vendor/ring/src/limb.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/limb.rs 2023-10-30 19:40:00.000000000 +0000 @@ -18,9 +18,9 @@ //! Limbs ordered least-significant-limb to most-significant-limb. The bits //! limbs use the native endianness. -use crate::{c, error}; +use crate::{c, error, polyfill::ArrayFlatMap}; -#[cfg(feature = "alloc")] +#[cfg(any(test, feature = "alloc"))] use crate::bits; #[cfg(feature = "alloc")] @@ -56,7 +56,7 @@ #[inline] pub fn limbs_equal_limbs_consttime(a: &[Limb], b: &[Limb]) -> LimbMask { - extern "C" { + prefixed_extern! { fn LIMBS_equal(a: *const Limb, b: *const Limb, num_limbs: c::size_t) -> LimbMask; } @@ -86,13 +86,13 @@ unsafe { LIMBS_are_zero(limbs.as_ptr(), limbs.len()) } } -#[cfg(feature = "alloc")] +#[cfg(any(test, feature = "alloc"))] #[inline] pub fn limbs_are_even_constant_time(limbs: &[Limb]) -> LimbMask { unsafe { LIMBS_are_even(limbs.as_ptr(), limbs.len()) } } -#[cfg(feature = "alloc")] +#[cfg(any(test, feature = "alloc"))] #[inline] pub fn limbs_equal_limb_constant_time(a: &[Limb], b: Limb) -> LimbMask { unsafe { LIMBS_equal_limb(a.as_ptr(), b, a.len()) } @@ -105,7 +105,7 @@ // with respect to `a.len()` or the value of the result or the value of the // most significant bit (It's 1, unless the input is zero, in which case it's // zero.) -#[cfg(feature = "alloc")] +#[cfg(any(test, feature = "alloc"))] pub fn limbs_minimal_bits(a: &[Limb]) -> bits::BitLength { for num_limbs in (1..=a.len()).rev() { let high_limb = a[num_limbs - 1]; @@ -156,7 +156,7 @@ parse_big_endian_and_pad_consttime(input, result)?; limbs_reduce_once_constant_time(result, m); if allow_zero != AllowZero::Yes { - if limbs_are_zero_constant_time(&result) != LimbMask::False { + if limbs_are_zero_constant_time(result) != LimbMask::False { return Err(error::Unspecified); } } @@ -178,11 +178,11 @@ result: &mut [Limb], ) -> Result<(), error::Unspecified> { parse_big_endian_and_pad_consttime(input, result)?; - if limbs_less_than_limbs_consttime(&result, max_exclusive) != LimbMask::True { + if limbs_less_than_limbs_consttime(result, max_exclusive) != LimbMask::True { return Err(error::Unspecified); } if allow_zero != AllowZero::Yes { - if limbs_are_zero_constant_time(&result) != LimbMask::False { + if limbs_are_zero_constant_time(result) != LimbMask::False { return Err(error::Unspecified); } } @@ -218,9 +218,7 @@ return Err(error::Unspecified); } - for r in &mut result[..] { - *r = 0; - } + result.fill(0); // XXX: Questionable as far as constant-timedness is concerned. // TODO: Improve this. @@ -239,16 +237,20 @@ } pub fn big_endian_from_limbs(limbs: &[Limb], out: &mut [u8]) { - let num_limbs = limbs.len(); - let out_len = out.len(); - assert_eq!(out_len, num_limbs * LIMB_BYTES); - for i in 0..num_limbs { - let mut limb = limbs[i]; - for j in 0..LIMB_BYTES { - out[((num_limbs - i - 1) * LIMB_BYTES) + (LIMB_BYTES - j - 1)] = (limb & 0xff) as u8; - limb >>= 8; - } - } + let be_bytes = unstripped_be_bytes(limbs); + assert_eq!(out.len(), be_bytes.len()); + out.iter_mut().zip(be_bytes).for_each(|(o, i)| { + *o = i; + }); +} + +/// Returns an iterator of the big-endian encoding of `limbs`. +/// +/// The number of bytes returned will be a multiple of `LIMB_BYTES` +/// and thus may be padded with leading zeros. +pub fn unstripped_be_bytes(limbs: &[Limb]) -> impl ExactSizeIterator + Clone + '_ { + // The unwrap is safe because a slice can never be larger than `usize` bytes. + ArrayFlatMap::new(limbs.iter().rev().copied(), Limb::to_be_bytes).unwrap() } #[cfg(feature = "alloc")] @@ -278,7 +280,7 @@ const WINDOW_BITS: Wrapping = Wrapping(5); - extern "C" { + prefixed_extern! { fn LIMBS_window5_split_window( lower_limb: Limb, higher_limb: Limb, @@ -331,21 +333,41 @@ }) } -extern "C" { - #[cfg(feature = "alloc")] - fn LIMB_shr(a: Limb, shift: c::size_t) -> Limb; +#[inline] +pub(crate) fn limbs_add_assign_mod(a: &mut [Limb], b: &[Limb], m: &[Limb]) { + debug_assert_eq!(a.len(), m.len()); + debug_assert_eq!(b.len(), m.len()); + prefixed_extern! { + // `r` and `a` may alias. + fn LIMBS_add_mod( + r: *mut Limb, + a: *const Limb, + b: *const Limb, + m: *const Limb, + num_limbs: c::size_t, + ); + } + unsafe { LIMBS_add_mod(a.as_mut_ptr(), a.as_ptr(), b.as_ptr(), m.as_ptr(), m.len()) } +} - #[cfg(feature = "alloc")] - fn LIMBS_are_even(a: *const Limb, num_limbs: c::size_t) -> LimbMask; +prefixed_extern! { fn LIMBS_are_zero(a: *const Limb, num_limbs: c::size_t) -> LimbMask; - #[cfg(feature = "alloc")] - fn LIMBS_equal_limb(a: *const Limb, b: Limb, num_limbs: c::size_t) -> LimbMask; fn LIMBS_less_than(a: *const Limb, b: *const Limb, num_limbs: c::size_t) -> LimbMask; - #[cfg(feature = "alloc")] - fn LIMBS_less_than_limb(a: *const Limb, b: Limb, num_limbs: c::size_t) -> LimbMask; fn LIMBS_reduce_once(r: *mut Limb, m: *const Limb, num_limbs: c::size_t); } +#[cfg(any(test, feature = "alloc"))] +prefixed_extern! { + fn LIMB_shr(a: Limb, shift: c::size_t) -> Limb; + fn LIMBS_are_even(a: *const Limb, num_limbs: c::size_t) -> LimbMask; + fn LIMBS_equal_limb(a: *const Limb, b: Limb, num_limbs: c::size_t) -> LimbMask; +} + +#[cfg(feature = "alloc")] +prefixed_extern! { + fn LIMBS_less_than_limb(a: *const Limb, b: Limb, num_limbs: c::size_t) -> LimbMask; +} + #[cfg(test)] mod tests { use super::*; diff -Nru temporalio-1.3.0/vendor/ring/src/pbkdf2.rs temporalio-1.3.0/vendor/ring/src/pbkdf2.rs --- temporalio-1.3.0/vendor/ring/src/pbkdf2.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/pbkdf2.rs 2023-10-30 19:40:00.000000000 +0000 @@ -112,7 +112,7 @@ //! assert!(db.verify_password("alice", "@74d7]404j|W}6u").is_ok()); //! } -use crate::{constant_time, digest, error, hmac, polyfill}; +use crate::{constant_time, digest, error, hmac}; use core::num::NonZeroU32; /// A PBKDF2 algorithm. @@ -160,7 +160,7 @@ out: &mut [u8], ) { let digest_alg = algorithm.0.digest_algorithm(); - let output_len = digest_alg.output_len; + let output_len = digest_alg.output_len(); // This implementation's performance is asymptotically optimal as described // in https://jbp.io/2015/08/11/pbkdf2-performance-matters/. However, it @@ -170,7 +170,7 @@ let secret = hmac::Key::new(algorithm.0, secret); // Clear |out|. - polyfill::slice::fill(out, 0); + out.fill(0); let mut idx: u32 = 0; @@ -189,9 +189,7 @@ let mut remaining: u32 = iterations.into(); loop { - for i in 0..out.len() { - out[i] ^= u.as_ref()[i]; - } + out.iter_mut().zip(u.as_ref()).for_each(|(o, u)| *o ^= *u); if remaining == 1 { break; @@ -237,7 +235,7 @@ let mut derived_buf = [0u8; digest::MAX_OUTPUT_LEN]; - let output_len = digest_alg.output_len; + let output_len = digest_alg.output_len(); let secret = hmac::Key::new(algorithm.0, secret); let mut idx: u32 = 0; @@ -247,11 +245,12 @@ idx = idx.checked_add(1).expect("derived key too long"); let derived_chunk = &mut derived_buf[..previously_derived_chunk.len()]; - polyfill::slice::fill(derived_chunk, 0); + derived_chunk.fill(0); derive_block(&secret, iterations, salt, idx, derived_chunk); // XXX: This isn't fully constant-time-safe. TODO: Fix that. + #[allow(clippy::bool_to_int_with_if)] let current_block_matches = if constant_time::verify_slices_are_equal(derived_chunk, previously_derived_chunk) .is_ok() diff -Nru temporalio-1.3.0/vendor/ring/src/pkcs8.rs temporalio-1.3.0/vendor/ring/src/pkcs8.rs --- temporalio-1.3.0/vendor/ring/src/pkcs8.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/pkcs8.rs 2023-10-30 19:40:00.000000000 +0000 @@ -14,14 +14,20 @@ //! PKCS#8 is specified in [RFC 5958]. //! -//! [RFC 5958]: https://tools.ietf.org/html/rfc5958. +//! [RFC 5958]: https://tools.ietf.org/html/rfc5958 use crate::{ec, error, io::der}; +pub(crate) struct PublicKeyOptions { + /// Should the wrong public key ASN.1 tagging used by early implementations + /// of PKCS#8 v2 (including earlier versions of *ring*) be accepted? + pub accept_legacy_ed25519_public_key_tag: bool, +} + pub(crate) enum Version { V1Only, - V1OrV2, - V2Only, + V1OrV2(PublicKeyOptions), + V2Only(PublicKeyOptions), } /// A template for constructing PKCS#8 documents. @@ -66,7 +72,7 @@ /// /// PKCS#8 is specified in [RFC 5958]. /// -/// [RFC 5958]: https://tools.ietf.org/html/rfc5958. +/// [RFC 5958]: https://tools.ietf.org/html/rfc5958 pub(crate) fn unwrap_key<'a>( template: &Template, version: Version, @@ -84,7 +90,7 @@ /// /// PKCS#8 is specified in [RFC 5958]. /// -/// [RFC 5958]: https://tools.ietf.org/html/rfc5958. +/// [RFC 5958]: https://tools.ietf.org/html/rfc5958 pub(crate) fn unwrap_key_<'a>( alg_id: untrusted::Input, version: Version, @@ -119,14 +125,14 @@ let actual_alg_id = der::expect_tag_and_get_value(input, der::Tag::Sequence) .map_err(|error::Unspecified| error::KeyRejected::invalid_encoding())?; - if actual_alg_id != alg_id { + if actual_alg_id.as_slice_less_safe() != alg_id.as_slice_less_safe() { return Err(error::KeyRejected::wrong_algorithm()); } - let require_public_key = match (actual_version, version) { - (0, Version::V1Only) => false, - (0, Version::V1OrV2) => false, - (1, Version::V1OrV2) | (1, Version::V2Only) => true, + let public_key_options = match (actual_version, version) { + (0, Version::V1Only) => None, + (0, Version::V1OrV2(_)) => None, + (1, Version::V1OrV2(options)) | (1, Version::V2Only(options)) => Some(options), _ => { return Err(error::KeyRejected::version_not_supported()); } @@ -141,17 +147,25 @@ .map_err(|error::Unspecified| error::KeyRejected::invalid_encoding())?; } - let public_key = if require_public_key { + let public_key = if let Some(options) = public_key_options { if input.at_end() { return Err(error::KeyRejected::public_key_is_missing()); } - let public_key = der::nested( - input, - der::Tag::ContextSpecificConstructed1, - error::Unspecified, - der::bit_string_with_no_unused_bits, - ) - .map_err(|error::Unspecified| error::KeyRejected::invalid_encoding())?; + + const INCORRECT_LEGACY: der::Tag = der::Tag::ContextSpecificConstructed1; + let result = + if options.accept_legacy_ed25519_public_key_tag && input.peek(INCORRECT_LEGACY as u8) { + der::nested( + input, + INCORRECT_LEGACY, + error::Unspecified, + der::bit_string_with_no_unused_bits, + ) + } else { + der::bit_string_tagged_with_no_unused_bits(der::Tag::ContextSpecific1, input) + }; + let public_key = + result.map_err(|error::Unspecified| error::KeyRejected::invalid_encoding())?; Some(public_key) } else { None @@ -194,7 +208,7 @@ template.bytes.split_at(template.private_key_index); let private_key_end_index = template.private_key_index + private_key.len(); bytes[..template.private_key_index].copy_from_slice(before_private_key); - bytes[template.private_key_index..private_key_end_index].copy_from_slice(&private_key); + bytes[template.private_key_index..private_key_end_index].copy_from_slice(private_key); bytes[private_key_end_index..(private_key_end_index + after_private_key.len())] .copy_from_slice(after_private_key); bytes[(private_key_end_index + after_private_key.len())..].copy_from_slice(public_key); diff -Nru temporalio-1.3.0/vendor/ring/src/polyfill/array_flat_map.rs temporalio-1.3.0/vendor/ring/src/polyfill/array_flat_map.rs --- temporalio-1.3.0/vendor/ring/src/polyfill/array_flat_map.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/polyfill/array_flat_map.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,126 @@ +use core::iter::FlatMap; + +/// A specialized version of `core::iter::FlatMap` for mapping over exact-sized +/// iterators with a function that returns an array. +/// +/// `ArrayFlatMap` differs from `FlatMap` in that `ArrayFlatMap` implements +/// `ExactSizeIterator`. Since the result of `F` always has `LEN` elements, if +/// `I` is an exact-sized iterator of length `inner_len` then we know the +/// length of the flat-mapped result is `inner_len * LEN`. (The constructor +/// verifies that this multiplication doesn't overflow `usize`.) +#[derive(Clone)] +pub struct ArrayFlatMap { + inner: FlatMap, + remaining: usize, +} + +impl ArrayFlatMap +where + I: ExactSizeIterator, + F: FnMut(I::Item) -> [Item; LEN], +{ + /// Constructs an `ArrayFlatMap` wrapping the given iterator, using the + /// given function + pub fn new(inner: I, f: F) -> Option { + let remaining = inner.len().checked_mul(LEN)?; + let inner = inner.flat_map(f); + Some(Self { inner, remaining }) + } +} + +impl Iterator for ArrayFlatMap +where + I: Iterator, + F: FnMut(I::Item) -> [Item; LEN], +{ + type Item = Item; + + fn next(&mut self) -> Option { + let result = self.inner.next(); + if result.is_some() { + self.remaining -= 1; + } + result + } + + /// Required for implementing `ExactSizeIterator`. + fn size_hint(&self) -> (usize, Option) { + (self.remaining, Some(self.remaining)) + } +} + +impl ExactSizeIterator for ArrayFlatMap +where + I: Iterator, + F: FnMut(I::Item) -> [Item; LEN], +{ +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_array_flat_map() { + static TEST_CASES: &[(&[u16], fn(u16) -> [u8; 2], &[u8])] = &[ + // Empty input + (&[], u16::to_be_bytes, &[]), + // Non-empty input. + ( + &[0x0102, 0x0304, 0x0506], + u16::to_be_bytes, + &[1, 2, 3, 4, 5, 6], + ), + // Test with a different mapping function. + ( + &[0x0102, 0x0304, 0x0506], + u16::to_le_bytes, + &[2, 1, 4, 3, 6, 5], + ), + ]; + TEST_CASES.iter().copied().for_each(|(input, f, expected)| { + let mapped = ArrayFlatMap::new(input.iter().copied(), f).unwrap(); + super::super::test::assert_iterator(mapped, expected); + }); + } + + // Does ArrayFlatMap::new() handle overflow correctly? + #[test] + fn test_array_flat_map_len_overflow() { + struct DownwardCounter { + remaining: usize, + } + impl Iterator for DownwardCounter { + type Item = usize; + + fn next(&mut self) -> Option { + if self.remaining > 0 { + let result = self.remaining; + self.remaining -= 1; + Some(result) + } else { + None + } + } + + fn size_hint(&self) -> (usize, Option) { + (self.remaining, Some(self.remaining)) + } + } + impl ExactSizeIterator for DownwardCounter {} + + const MAX: usize = usize::MAX / core::mem::size_of::(); + + static TEST_CASES: &[(usize, bool)] = &[(MAX, true), (MAX + 1, false)]; + TEST_CASES.iter().copied().for_each(|(input_len, is_some)| { + let inner = DownwardCounter { + remaining: input_len, + }; + let mapped = ArrayFlatMap::new(inner, usize::to_be_bytes); + assert_eq!(mapped.is_some(), is_some); + if let Some(mapped) = mapped { + assert_eq!(mapped.len(), input_len * core::mem::size_of::()); + } + }); + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/polyfill/chunks_fixed.rs temporalio-1.3.0/vendor/ring/src/polyfill/chunks_fixed.rs --- temporalio-1.3.0/vendor/ring/src/polyfill/chunks_fixed.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/polyfill/chunks_fixed.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,68 @@ +/// Allows splitting a reference to an array type into fixed-length chunks. +pub trait ChunksFixed<'a, Chunks> +where + Chunks: 'a, +{ + fn chunks_fixed(self) -> Chunks; +} + +/// Allows iterating over a mutable array in fixed-length chunks. +/// +/// The design of this is different than that for `ChunksFixed` because it +/// isn't clear that we can legally (according to Rust's rules) convert create +/// a mutable reference to the chunked type from a mutable reference. +/// +/// TODO: Get clarification on the rules and refactor this tp be more like +/// `ChunksFixed`. +pub trait ChunksFixedMut<'a, Chunk> +where + Chunk: 'a, +{ + type MutIterator: Iterator; + + fn chunks_fixed_mut(self) -> Self::MutIterator; +} + +/// `$unchuncked_len` must be divisible by `$chunk_len`. +macro_rules! define_chunks_fixed { + ( $unchuncked_len:expr, $chunk_len:expr ) => { + define_chunks_fixed!($unchuncked_len, $chunk_len, $unchuncked_len / $chunk_len); + }; + + ( $unchuncked_len:expr, $chunk_len:expr, $chunked_len:expr ) => { + impl<'a, T> ChunksFixed<'a, &'a [[T; $chunk_len]; $chunked_len]> + for &'a [T; $unchuncked_len] + { + #[inline(always)] + fn chunks_fixed(self) -> &'a [[T; $chunk_len]; $chunked_len] { + let as_ptr: *const [T; $chunk_len] = self.as_ptr() as *const [T; $chunk_len]; + let as_ptr = as_ptr as *const [[T; $chunk_len]; $chunked_len]; + unsafe { &*as_ptr } + } + } + + impl<'a, T> ChunksFixedMut<'a, [T; $chunk_len]> for &'a mut [T; $unchuncked_len] { + type MutIterator = core::iter::Map< + core::slice::ChunksExactMut<'a, T>, + fn(&'a mut [T]) -> &'a mut [T; $chunk_len], + >; + + #[inline(always)] + fn chunks_fixed_mut(self) -> Self::MutIterator { + // There will be no remainder because `$unchuncked_len` must be divisible by + // `$chunk_len`. The `unwrap()` will not fail for the same reason. + self.chunks_exact_mut($chunk_len) + .map(|slice| slice.try_into().unwrap()) + } + } + }; +} + +// Sorted by the first value, then the second value. +define_chunks_fixed!(12, 4); +define_chunks_fixed!(16, 4); +define_chunks_fixed!(16, 8); +define_chunks_fixed!(32, 4); +define_chunks_fixed!(64, 4); +define_chunks_fixed!(64, 32); +define_chunks_fixed!(80, 20); diff -Nru temporalio-1.3.0/vendor/ring/src/polyfill/leading_zeros_skipped.rs temporalio-1.3.0/vendor/ring/src/polyfill/leading_zeros_skipped.rs --- temporalio-1.3.0/vendor/ring/src/polyfill/leading_zeros_skipped.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/polyfill/leading_zeros_skipped.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,78 @@ +use core::iter::Peekable; + +/// An iterator that skips all leading zeros. +/// +/// When the wrapped iterator is all zeros, then the last item is retained. +pub struct LeadingZerosStripped +where + I: Iterator, +{ + inner: Peekable, +} + +impl Clone for LeadingZerosStripped +where + I: Iterator, + Peekable: Clone, +{ + fn clone(&self) -> Self { + Self { + inner: self.inner.clone(), + } + } +} + +impl LeadingZerosStripped +where + I: ExactSizeIterator, +{ + pub fn new(inner: I) -> Self { + let mut len = inner.len(); + let mut inner = inner.peekable(); + // Strip all leading zeroes, but don't strip the last byte if all bytes + // were zero. + while len > 1 && inner.next_if_eq(&0).is_some() { + len -= 1; + } + Self { inner } + } +} + +impl Iterator for LeadingZerosStripped +where + I: Iterator, +{ + type Item = I::Item; + + fn next(&mut self) -> Option { + self.inner.next() + } + + fn size_hint(&self) -> (usize, Option) { + self.inner.size_hint() + } +} + +impl ExactSizeIterator for LeadingZerosStripped where I: ExactSizeIterator {} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_leading_zeroes_stripped() { + static TEST_CASES: &[(&[u8], &[u8])] = &[ + (&[], &[]), + (&[0], &[0]), + (&[0, 1], &[1]), + (&[0, 0, 1], &[1]), + (&[0, 0, 0, 1], &[1]), + (&[1, 0], &[1, 0]), + (&[0, 1, 0], &[1, 0]), + ]; + TEST_CASES.iter().copied().for_each(|(input, expected)| { + let stripped = LeadingZerosStripped::new(input.iter().copied()); + super::super::test::assert_iterator(stripped, expected); + }); + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/polyfill/test.rs temporalio-1.3.0/vendor/ring/src/polyfill/test.rs --- temporalio-1.3.0/vendor/ring/src/polyfill/test.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/polyfill/test.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,29 @@ +pub fn assert_iterator(it: impl ExactSizeIterator + Clone, expected: &[T]) +where + T: Copy + core::fmt::Debug + PartialEq, +{ + // Assert that the cloned iterator is correct. + assert_exact_size_iterator(it.clone(), expected); + // Assert that the original iterator is correct. + assert_exact_size_iterator(it, expected); +} + +/// Asserts that `it` adheres to the `ExactSizeIterator` contract. +fn assert_exact_size_iterator(mut it: impl ExactSizeIterator, expected: &[T]) +where + T: Copy + core::fmt::Debug + PartialEq, +{ + assert_eq!(it.len(), expected.len()); + assert_eq!(it.size_hint(), expected.iter().size_hint()); + + for i in 0..expected.len() { + let len = it.len(); + assert_eq!(len, expected.len() - i); + assert_eq!(it.size_hint(), (len, Some(len))); + assert_eq!(it.next(), Some(expected[i])); + } + + assert_eq!(it.len(), 0); + assert_eq!(it.size_hint(), (0, Some(0))); + assert_eq!(it.next(), None); +} diff -Nru temporalio-1.3.0/vendor/ring/src/polyfill/unwrap_const.rs temporalio-1.3.0/vendor/ring/src/polyfill/unwrap_const.rs --- temporalio-1.3.0/vendor/ring/src/polyfill/unwrap_const.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/polyfill/unwrap_const.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,15 @@ +/// Polyfill for `Option::unwrap()` as a const fn; feature `const_option`. +/// https://github.com/rust-lang/rust/issues/67441. +/// TODO(MSRV): Replace this with `x.unwrap()`. +/// +/// `T: Copy` avoids "constant functions cannot evaluate destructors." +pub const fn unwrap_const(x: Option) -> T +where + T: Copy, +{ + if let Some(x) = x { + x + } else { + panic!("unwrap_const on `None`"); + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/polyfill.rs temporalio-1.3.0/vendor/ring/src/polyfill.rs --- temporalio-1.3.0/vendor/ring/src/polyfill.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/polyfill.rs 2023-10-30 19:40:00.000000000 +0000 @@ -24,16 +24,20 @@ x as usize } -pub mod slice { - // https://github.com/rust-lang/rust/issues/27750 - // https://internals.rust-lang.org/t/stabilizing-basic-functions-on-arrays-and-slices/2868 - #[inline(always)] - pub fn fill(dest: &mut [T], value: T) - where - T: Copy, - { - for d in dest { - *d = value; - } - } -} +#[macro_use] +mod chunks_fixed; + +mod array_flat_map; + +#[cfg(feature = "alloc")] +mod leading_zeros_skipped; + +#[cfg(test)] +mod test; + +mod unwrap_const; + +pub use self::{array_flat_map::ArrayFlatMap, chunks_fixed::*, unwrap_const::unwrap_const}; + +#[cfg(feature = "alloc")] +pub use leading_zeros_skipped::LeadingZerosStripped; diff -Nru temporalio-1.3.0/vendor/ring/src/prefixed.rs temporalio-1.3.0/vendor/ring/src/prefixed.rs --- temporalio-1.3.0/vendor/ring/src/prefixed.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/prefixed.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,101 @@ +macro_rules! prefixed_extern { + // Functions. + { + $( + $( #[$meta:meta] )* + $vis:vis fn $name:ident ( $( $arg_pat:ident : $arg_ty:ty ),* $(,)? ) + $( -> $ret_ty:ty )?; + )+ + } => { + extern "C" { + $( + prefixed_item! { + link_name + $name + { + $( #[$meta] )* + $vis fn $name ( $( $arg_pat : $arg_ty ),* ) $( -> $ret_ty )?; + } + + } + )+ + } + }; + + // A global variable. + { + $( #[$meta:meta] )* + $vis:vis static mut $name:ident: $typ:ty; + } => { + extern "C" { + prefixed_item! { + link_name + $name + { + $( #[$meta] )* + $vis static mut $name: $typ; + } + } + } + }; +} + +#[cfg(not(any(target_arch = "x86", target_arch = "x86_64")))] +macro_rules! prefixed_export { + // A function. + { + $( #[$meta:meta] )* + $vis:vis unsafe fn $name:ident ( $( $arg_pat:ident : $arg_ty:ty ),* $(,)? ) $body:block + } => { + prefixed_item! { + export_name + $name + { + $( #[$meta] )* + $vis unsafe fn $name ( $( $arg_pat : $arg_ty ),* ) $body + } + } + }; + + // A global variable. + { + $( #[$meta:meta] )* + $vis:vis static mut $name:ident: $typ:ty = $initial_value:expr; + } => { + prefixed_item! { + export_name + $name + { + $( #[$meta] )* + $vis static mut $name: $typ = $initial_value; + } + } + }; +} + +macro_rules! prefixed_item { + // Calculate the prefixed name in a separate layer of macro expansion + // because rustc won't currently accept a non-literal expression as + // the value for `#[link_name = value]`. + { + $attr:ident + $name:ident + { $( $item:tt )+ } + } => { + prefixed_item! { + $attr + { concat!(env!("RING_CORE_PREFIX"), stringify!($name)) } + { $( $item )+ } + } + }; + + // Output the item. + { + $attr:ident + { $prefixed_name:expr } + { $( $item:tt )+ } + } => { + #[$attr = $prefixed_name] + $( $item )+ + }; +} diff -Nru temporalio-1.3.0/vendor/ring/src/rand.rs temporalio-1.3.0/vendor/ring/src/rand.rs --- temporalio-1.3.0/vendor/ring/src/rand.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/rand.rs 2023-10-30 19:40:00.000000000 +0000 @@ -14,16 +14,8 @@ //! Cryptographic pseudo-random number generation. //! -//! An application should create a single `SystemRandom` and then use it for -//! all randomness generation. Functions that generate random bytes should take -//! a `&dyn SecureRandom` parameter instead of instantiating their own. Besides -//! being more efficient, this also helps document where non-deterministic -//! (random) outputs occur. Taking a reference to a `SecureRandom` also helps -//! with testing techniques like fuzzing, where it is useful to use a -//! (non-secure) deterministic implementation of `SecureRandom` so that results -//! can be replayed. Following this pattern also may help with sandboxing -//! (seccomp filters on Linux in particular). See `SystemRandom`'s -//! documentation for more details. +//! *ring* functions that generate random bytes take a `&dyn SecureRandom` +//! parameter to make it clear which functions are non-deterministic. use crate::error; @@ -83,21 +75,17 @@ fn as_mut_bytes(&mut self) -> &mut [u8]; // `AsMut<[u8]>::as_mut` } - macro_rules! impl_random_arrays { - [ $($len:expr)+ ] => { - $( - impl RandomlyConstructable for [u8; $len] { - #[inline] - fn zero() -> Self { [0; $len] } - - #[inline] - fn as_mut_bytes(&mut self) -> &mut [u8] { &mut self[..] } - } - )+ + impl RandomlyConstructable for [u8; N] { + #[inline] + fn zero() -> Self { + [0; N] } - } - impl_random_arrays![4 8 16 32 48 64 128 256]; + #[inline] + fn as_mut_bytes(&mut self) -> &mut [u8] { + &mut self[..] + } + } } /// A type that can be returned by `ring::rand::generate()`. @@ -107,6 +95,11 @@ /// A secure random number generator where the random values come directly /// from the operating system. /// +/// "Directly from the operating system" here presently means "whatever the +/// `getrandom` crate does" but that may change in the future. That roughly +/// means calling libc's `getrandom` function or whatever is analogous to that; +/// see the `getrandom` crate's documentation for more info. +/// /// A single `SystemRandom` may be shared across multiple threads safely. /// /// `new()` is guaranteed to always succeed and to have low latency; it won't @@ -115,34 +108,6 @@ /// initialization is deferred to it. Therefore, it may be a good idea to call /// `fill()` once at a non-latency-sensitive time to minimize latency for /// future calls. -/// -/// On Linux (including Android), `fill()` will use the [`getrandom`] syscall. -/// If the kernel is too old to support `getrandom` then by default `fill()` -/// falls back to reading from `/dev/urandom`. This decision is made the first -/// time `fill` *succeeds*. The fallback to `/dev/urandom` can be disabled by -/// disabling the `dev_urandom_fallback` default feature; this should be done -/// whenever the target system is known to support `getrandom`. When -/// `/dev/urandom` is used, a file handle for `/dev/urandom` won't be opened -/// until `fill` is called; `SystemRandom::new()` will not open `/dev/urandom` -/// or do other potentially-high-latency things. The file handle will never be -/// closed, until the operating system closes it at process shutdown. All -/// instances of `SystemRandom` will share a single file handle. To properly -/// implement seccomp filtering when the `dev_urandom_fallback` default feature -/// is disabled, allow `getrandom` through. When the fallback is enabled, allow -/// file opening, `getrandom`, and `read` up until the first call to `fill()` -/// succeeds; after that, allow `getrandom` and `read`. -/// -/// On macOS and iOS, `fill()` is implemented using `SecRandomCopyBytes`. -/// -/// On wasm32-unknown-unknown (non-WASI), `fill()` is implemented using -/// `window.crypto.getRandomValues()`. It must be used in a context where the -/// global object is a `Window`; i.e. it must not be used in a Worker or a -/// non-browser context. -/// -/// On Windows, `fill` is implemented using the platform's API for secure -/// random number generation. -/// -/// [`getrandom`]: http://man7.org/linux/man-pages/man2/getrandom.2.html #[derive(Clone, Debug)] pub struct SystemRandom(()); @@ -154,280 +119,36 @@ } } -impl sealed::SecureRandom for SystemRandom { - #[inline(always)] - fn fill_impl(&self, dest: &mut [u8]) -> Result<(), error::Unspecified> { - fill_impl(dest) - } -} - impl crate::sealed::Sealed for SystemRandom {} +// Use the `getrandom` crate whenever it is using the environment's (operating +// system's) CSPRNG. Avoid using it on targets where it uses the `rdrand` +// implementation. #[cfg(any( - all( - any(target_os = "android", target_os = "linux"), - not(feature = "dev_urandom_fallback") - ), - target_arch = "wasm32", - windows -))] -use self::sysrand::fill as fill_impl; - -#[cfg(all( - any(target_os = "android", target_os = "linux"), - feature = "dev_urandom_fallback" -))] -use self::sysrand_or_urandom::fill as fill_impl; - -#[cfg(any( + target_os = "android", target_os = "dragonfly", target_os = "freebsd", + target_os = "haiku", target_os = "illumos", + target_os = "ios", + target_os = "tvos", + target_os = "linux", + target_os = "macos", target_os = "netbsd", target_os = "openbsd", + target_os = "redox", target_os = "solaris", -))] -use self::urandom::fill as fill_impl; - -#[cfg(any(target_os = "macos", target_os = "ios"))] -use self::darwin::fill as fill_impl; - -#[cfg(any(target_os = "fuchsia"))] -use self::fuchsia::fill as fill_impl; - -#[cfg(any(target_os = "android", target_os = "linux"))] -mod sysrand_chunk { - use crate::{c, error}; - - #[inline] - pub fn chunk(dest: &mut [u8]) -> Result { - use libc::c_long; - - // See `SYS_getrandom` in #include . - - #[cfg(target_arch = "aarch64")] - const SYS_GETRANDOM: c_long = 278; - - #[cfg(target_arch = "arm")] - const SYS_GETRANDOM: c_long = 384; - - #[cfg(target_arch = "x86")] - const SYS_GETRANDOM: c_long = 355; - - #[cfg(target_arch = "x86_64")] - const SYS_GETRANDOM: c_long = 318; - - let chunk_len: c::size_t = dest.len(); - let r = unsafe { libc::syscall(SYS_GETRANDOM, dest.as_mut_ptr(), chunk_len, 0) }; - if r < 0 { - let errno; - - #[cfg(target_os = "linux")] - { - errno = unsafe { *libc::__errno_location() }; - } - - #[cfg(target_os = "android")] - { - errno = unsafe { *libc::__errno() }; - } - - if errno == libc::EINTR { - // If an interrupt occurs while getrandom() is blocking to wait - // for the entropy pool, then EINTR is returned. Returning 0 - // will cause the caller to try again. - return Ok(0); - } - return Err(error::Unspecified); - } - Ok(r as usize) - } -} - -#[cfg(all( - target_arch = "wasm32", - target_vendor = "unknown", - target_os = "unknown", - target_env = "", -))] -mod sysrand_chunk { - use crate::error; - - pub fn chunk(mut dest: &mut [u8]) -> Result { - // This limit is specified in - // https://www.w3.org/TR/WebCryptoAPI/#Crypto-method-getRandomValues. - const MAX_LEN: usize = 65_536; - if dest.len() > MAX_LEN { - dest = &mut dest[..MAX_LEN]; - }; - - let _ = web_sys::window() - .ok_or(error::Unspecified)? - .crypto() - .map_err(|_| error::Unspecified)? - .get_random_values_with_u8_array(dest) - .map_err(|_| error::Unspecified)?; - - Ok(dest.len()) - } -} - -#[cfg(windows)] -mod sysrand_chunk { - use crate::{error, polyfill}; - - #[inline] - pub fn chunk(dest: &mut [u8]) -> Result { - use winapi::shared::wtypesbase::ULONG; - - assert!(core::mem::size_of::() >= core::mem::size_of::()); - let len = core::cmp::min(dest.len(), polyfill::usize_from_u32(ULONG::max_value())); - let result = unsafe { - winapi::um::ntsecapi::RtlGenRandom( - dest.as_mut_ptr() as *mut winapi::ctypes::c_void, - len as ULONG, - ) - }; - if result == 0 { - return Err(error::Unspecified); - } - - Ok(len) - } -} - -#[cfg(any( - target_os = "android", - target_os = "linux", - target_arch = "wasm32", - windows -))] -mod sysrand { - use super::sysrand_chunk::chunk; - use crate::error; - - pub fn fill(dest: &mut [u8]) -> Result<(), error::Unspecified> { - let mut read_len = 0; - while read_len < dest.len() { - let chunk_len = chunk(&mut dest[read_len..])?; - read_len += chunk_len; - } - Ok(()) - } -} - -// Keep the `cfg` conditions in sync with the conditions in lib.rs. -#[cfg(all( - any(target_os = "android", target_os = "linux"), - feature = "dev_urandom_fallback" -))] -mod sysrand_or_urandom { - use crate::error; - - enum Mechanism { - Sysrand, - DevURandom, - } - - #[inline] - pub fn fill(dest: &mut [u8]) -> Result<(), error::Unspecified> { - use once_cell::sync::Lazy; - static MECHANISM: Lazy = Lazy::new(|| { - let mut dummy = [0u8; 1]; - if super::sysrand_chunk::chunk(&mut dummy[..]).is_err() { - Mechanism::DevURandom - } else { - Mechanism::Sysrand - } - }); - - match *MECHANISM { - Mechanism::Sysrand => super::sysrand::fill(dest), - Mechanism::DevURandom => super::urandom::fill(dest), - } - } -} - -#[cfg(any( + target_os = "windows", + target_os = "vita", all( - any(target_os = "android", target_os = "linux"), - feature = "dev_urandom_fallback" + feature = "wasm32_unknown_unknown_js", + target_arch = "wasm32", + target_os = "unknown", ), - target_os = "dragonfly", - target_os = "freebsd", - target_os = "netbsd", - target_os = "openbsd", - target_os = "solaris", - target_os = "illumos" ))] -mod urandom { - use crate::error; - - #[cfg_attr(any(target_os = "android", target_os = "linux"), cold, inline(never))] - pub fn fill(dest: &mut [u8]) -> Result<(), error::Unspecified> { - extern crate std; - - use once_cell::sync::Lazy; - - static FILE: Lazy> = - Lazy::new(|| std::fs::File::open("/dev/urandom")); - - match *FILE { - Ok(ref file) => { - use std::io::Read; - (&*file).read_exact(dest).map_err(|_| error::Unspecified) - } - Err(_) => Err(error::Unspecified), - } - } -} - -#[cfg(any(target_os = "macos", target_os = "ios"))] -mod darwin { - use crate::{c, error}; - - pub fn fill(dest: &mut [u8]) -> Result<(), error::Unspecified> { - let r = unsafe { SecRandomCopyBytes(kSecRandomDefault, dest.len(), dest.as_mut_ptr()) }; - match r { - 0 => Ok(()), - _ => Err(error::Unspecified), - } - } - - // XXX: This is emulating an opaque type with a non-opaque type. TODO: Fix - // this when - // https://github.com/rust-lang/rfcs/pull/1861#issuecomment-274613536 is - // resolved. - #[repr(C)] - struct SecRandomRef([u8; 0]); - - #[link(name = "Security", kind = "framework")] - extern "C" { - static kSecRandomDefault: &'static SecRandomRef; - - // For now `rnd` must be `kSecRandomDefault`. - #[must_use] - fn SecRandomCopyBytes( - rnd: &'static SecRandomRef, - count: c::size_t, - bytes: *mut u8, - ) -> c::int; - } -} - -#[cfg(any(target_os = "fuchsia"))] -mod fuchsia { - use crate::error; - - pub fn fill(dest: &mut [u8]) -> Result<(), error::Unspecified> { - unsafe { - zx_cprng_draw(dest.as_mut_ptr(), dest.len()); - } - Ok(()) - } - - #[link(name = "zircon")] - extern "C" { - fn zx_cprng_draw(buffer: *mut u8, length: usize); +impl sealed::SecureRandom for SystemRandom { + #[inline(always)] + fn fill_impl(&self, dest: &mut [u8]) -> Result<(), error::Unspecified> { + getrandom::getrandom(dest).map_err(|_| error::Unspecified) } } diff -Nru temporalio-1.3.0/vendor/ring/src/rsa/convert_nist_rsa_test_vectors.py temporalio-1.3.0/vendor/ring/src/rsa/convert_nist_rsa_test_vectors.py --- temporalio-1.3.0/vendor/ring/src/rsa/convert_nist_rsa_test_vectors.py 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/rsa/convert_nist_rsa_test_vectors.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,246 +0,0 @@ -#!/usr/bin/env python2 -# -# Copyright 2016 Dirkjan Ochtman. -# -# Permission to use, copy, modify, and/or distribute this software for any -# purpose with or without fee is hereby granted, provided that the above -# copyright notice and this permission notice appear in all copies. -# -# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY -# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION -# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -''' -Script to generate *ring* test file for RSA PKCS1 v1.5 signing test vectors -from the NIST FIPS 186-4 test vectors. Takes as single argument on the -command-line the path to the test vector file (tested with SigGen15_186-3.txt). - -Requires the cryptography library from pyca. -''' - -from cryptography.hazmat.backends import default_backend -from cryptography.hazmat.primitives import serialization, hashes -from cryptography.hazmat.primitives.asymmetric import rsa, padding -import hashlib -import sys, copy -import codecs - -DIGEST_OUTPUT_LENGTHS = { - 'SHA1': 80, - 'SHA256': 128, - 'SHA384': 192, - 'SHA512': 256 -} - -# Prints reasons for skipping tests -DEBUG = False - -def debug(str, flag): - if flag: - sys.stderr.write(str + "\n") - sys.stderr.flush() - -def decode_hex(s): - decoder = codecs.getdecoder("hex_codec") - return decoder(s)[0] - -# Some fields in the input files are encoded without a leading "0", but -# `decode_hex` requires every byte to be encoded with two hex digits. -def from_hex(hex): - return decode_hex(hex if len(hex) % 2 == 0 else "0" + hex) - -def to_hex(bytes): - return ''.join('{:02x}'.format(b) for b in bytes) - -# Some fields in the input files are encoded without a leading "0", but the -# *ring* test framework requires every byte to be encoded with two hex digits. -def reformat_hex(hex): - return to_hex(from_hex(hex)) - -def parse(fn, last_field): - '''Parse input test vector file, leaving out comments and empty lines, and - returns a list of self-contained test cases. Depends on the last_field - being the last value in each test case.''' - cases = [] - with open(fn) as f: - cur = {} - for ln in f: - if not ln.strip(): - continue - if ln[0] in {'#', '['}: - continue - name, val = ln.split('=', 1) - cur[name.strip()] = val.strip() - if name.strip() == last_field: - cases.append(cur) - cur = copy.copy(cur) - return cases - -def print_sign_test(case, n, e, d, padding_alg): - # Recover the prime factors and CRT numbers. - p, q = rsa.rsa_recover_prime_factors(n, e, d) - # cryptography returns p, q with p < q by default. *ring* requires - # p > q, so swap them here. - p, q = max(p, q), min(p, q) - dmp1 = rsa.rsa_crt_dmp1(d, p) - dmq1 = rsa.rsa_crt_dmq1(d, q) - iqmp = rsa.rsa_crt_iqmp(p, q) - - # Create a private key instance. - pub = rsa.RSAPublicNumbers(e, n) - - priv = rsa.RSAPrivateNumbers(p, q, d, dmp1, dmq1, iqmp, pub) - key = priv.private_key(default_backend()) - - msg = decode_hex(case['Msg']) - - # Recalculate and compare the signature to validate our processing. - if padding_alg == 'PKCS#1 1.5': - sig = key.sign(msg, padding.PKCS1v15(), - getattr(hashes, case['SHAAlg'])()) - hex_sig = to_hex(sig) - assert hex_sig == case['S'] - elif padding_alg == "PSS": - # PSS is randomised, can't recompute this way - pass - else: - print("Invalid padding algorithm") - quit() - - # Serialize the private key in DER format. - der = key.private_bytes(serialization.Encoding.DER, - serialization.PrivateFormat.TraditionalOpenSSL, - serialization.NoEncryption()) - - # Print the test case data in the format used by *ring* test files. - print('Digest = %s' % case['SHAAlg']) - print('Key = %s' % to_hex(der)) - print('Msg = %s' % reformat_hex(case['Msg'])) - - if padding_alg == "PSS": - print('Salt = %s' % reformat_hex(case['SaltVal'])) - - print('Sig = %s' % reformat_hex(case['S'])) - print('Result = Pass') - print('') - -def print_verify_test(case, n, e): - # Create a private key instance. - pub = rsa.RSAPublicNumbers(e, n) - key = pub.public_key(default_backend()) - - der = key.public_bytes(serialization.Encoding.DER, - serialization.PublicFormat.PKCS1) - - # Print the test case data in the format used by *ring* test files. - print('Digest = %s' % case['SHAAlg']) - print('Key = %s' % to_hex(der)) - print('Msg = %s' % reformat_hex(case['Msg'])) - print('Sig = %s' % reformat_hex(case['S'])) - print('Result = %s' % case['Result']) - print('') - -def main(fn, test_type, padding_alg): - input_file_digest = hashlib.sha384(open(fn, 'rb').read()).hexdigest() - # File header - print("# RSA %(padding_alg)s Test Vectors for FIPS 186-4 from %(fn)s in" % \ - { "fn": fn, "padding_alg": padding_alg }) - print("# http://csrc.nist.gov/groups/STM/cavp/documents/dss/186-3rsatestvectors.zip") - print("# accessible from") - print("# http://csrc.nist.gov/groups/STM/cavp/digital-signatures.html#test-vectors") - print("# with SHA-384 digest %s" % (input_file_digest)) - print("# filtered and reformatted using %s." % __file__) - print("#") - print("# Digest = SHAAlg.") - if test_type == "verify": - print("# Key is (n, e) encoded in an ASN.1 (DER) sequence.") - elif test_type == "sign": - print("# Key is an ASN.1 (DER) RSAPrivateKey.") - else: - print("Invalid test_type: %s" % test_type) - quit() - - print("# Sig = S.") - print() - - num_cases = 0 - - # Each test type has a different field as the last entry per case - # For verify tests,PKCS "Result" is always the last field. - # Otherwise, for signing tests, it is dependent on the padding used. - if test_type == "verify": - last_field = "Result" - else: - if padding_alg == "PSS": - last_field = "SaltVal" - else: - last_field = "S" - - for case in parse(fn, last_field): - if case['SHAAlg'] == 'SHA224': - # SHA224 not supported in *ring*. - debug("Skipping due to use of SHA224", DEBUG) - continue - - if padding_alg == "PSS": - if case['SHAAlg'] == 'SHA1': - # SHA-1 with PSS not supported in *ring*. - debug("Skipping due to use of SHA1 and PSS.", DEBUG) - continue - - # *ring* only supports PSS where the salt length is equal to the - # output length of the hash algorithm. - if len(case['SaltVal']) * 2 != DIGEST_OUTPUT_LENGTHS[case['SHAAlg']]: - debug("Skipping due to unsupported salt length.", DEBUG) - continue - - # Read private key components. - n = int(case['n'], 16) - e = int(case['e'], 16) - d = int(case['d'], 16) - - if test_type == 'sign': - if n.bit_length() // 8 < 2048 // 8: - debug("Skipping due to modulus length (too small).", DEBUG) - continue - if n.bit_length() > 4096: - debug("Skipping due to modulus length (too large).", DEBUG) - continue - - print_sign_test(case, n, e, d, padding_alg) - else: - legacy = case['SHAAlg'] in ["SHA1", "SHA256", "SHA512"] - if (n.bit_length() // 8 < 2048 // 8 and not legacy) or n.bit_length() // 8 < 1024 // 8: - debug("Skipping due to modulus length (too small).", DEBUG) - continue - print_verify_test(case, n, e) - - num_cases += 1 - - debug("%d test cases output." % num_cases, True) - -if __name__ == '__main__': - if len(sys.argv) != 2: - print("Usage:\n python %s " % sys.argv[0]) - else: - fn = sys.argv[1] - if 'PSS' in fn: - pad_alg = 'PSS' - elif '15' in fn: - pad_alg = 'PKCS#1 1.5' - else: - print("Could not determine padding algorithm,") - quit() - - if 'Gen' in fn: - test_type = 'sign' - elif 'Ver' in fn: - test_type = 'verify' - else: - print("Could not determine test type.") - quit() - - main(sys.argv[1], test_type, pad_alg) diff -Nru temporalio-1.3.0/vendor/ring/src/rsa/keypair_components.rs temporalio-1.3.0/vendor/ring/src/rsa/keypair_components.rs --- temporalio-1.3.0/vendor/ring/src/rsa/keypair_components.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/rsa/keypair_components.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,38 @@ +use super::PublicKeyComponents; + +/// RSA key pair components. +#[derive(Clone, Copy)] +pub struct KeyPairComponents { + /// The public key components. + pub public_key: PublicKeyComponents, + + /// The private exponent. + pub d: Private, + + /// The first prime factor of `d`. + pub p: Private, + + /// The second prime factor of `d`. + pub q: Private, + + /// `p`'s public Chinese Remainder Theorem exponent. + pub dP: Private, + + /// `q`'s public Chinese Remainder Theorem exponent. + pub dQ: Private, + + /// `q**-1 mod p`. + pub qInv: Private, +} + +impl core::fmt::Debug for KeyPairComponents +where + PublicKeyComponents: core::fmt::Debug, +{ + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> Result<(), core::fmt::Error> { + // Non-public components are intentionally skipped + f.debug_struct("KeyPairComponents") + .field("public_key", &self.public_key) + .finish() + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/rsa/keypair.rs temporalio-1.3.0/vendor/ring/src/rsa/keypair.rs --- temporalio-1.3.0/vendor/ring/src/rsa/keypair.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/rsa/keypair.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,659 @@ +// Copyright 2015-2016 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +use super::{ + padding::RsaEncoding, KeyPairComponents, PublicExponent, PublicKey, PublicKeyComponents, N, +}; + +/// RSA PKCS#1 1.5 signatures. +use crate::{ + arithmetic::{ + bigint::{self, Prime}, + montgomery::R, + }, + bits, cpu, digest, + error::{self, KeyRejected}, + io::der, + pkcs8, rand, signature, +}; + +/// An RSA key pair, used for signing. +pub struct KeyPair { + p: PrivatePrime

, + q: PrivatePrime, + qInv: bigint::Elem, + qq: bigint::Modulus, + q_mod_n: bigint::Elem, + public: PublicKey, +} + +derive_debug_via_field!(KeyPair, stringify!(RsaKeyPair), public); + +impl KeyPair { + /// Parses an unencrypted PKCS#8-encoded RSA private key. + /// + /// This will generate a 2048-bit RSA private key of the correct form using + /// OpenSSL's command line tool: + /// + /// ```sh + /// openssl genpkey -algorithm RSA \ + /// -pkeyopt rsa_keygen_bits:2048 \ + /// -pkeyopt rsa_keygen_pubexp:65537 | \ + /// openssl pkcs8 -topk8 -nocrypt -outform der > rsa-2048-private-key.pk8 + /// ``` + /// + /// This will generate a 3072-bit RSA private key of the correct form: + /// + /// ```sh + /// openssl genpkey -algorithm RSA \ + /// -pkeyopt rsa_keygen_bits:3072 \ + /// -pkeyopt rsa_keygen_pubexp:65537 | \ + /// openssl pkcs8 -topk8 -nocrypt -outform der > rsa-3072-private-key.pk8 + /// ``` + /// + /// Often, keys generated for use in OpenSSL-based software are stored in + /// the Base64 “PEM†format without the PKCS#8 wrapper. Such keys can be + /// converted to binary PKCS#8 form using the OpenSSL command line tool like + /// this: + /// + /// ```sh + /// openssl pkcs8 -topk8 -nocrypt -outform der \ + /// -in rsa-2048-private-key.pem > rsa-2048-private-key.pk8 + /// ``` + /// + /// Base64 (“PEMâ€) PKCS#8-encoded keys can be converted to the binary PKCS#8 + /// form like this: + /// + /// ```sh + /// openssl pkcs8 -nocrypt -outform der \ + /// -in rsa-2048-private-key.pem > rsa-2048-private-key.pk8 + /// ``` + /// + /// See [`Self::from_components`] for more details on how the input is + /// validated. + /// + /// See [RFC 5958] and [RFC 3447 Appendix A.1.2] for more details of the + /// encoding of the key. + /// + /// [NIST SP-800-56B rev. 1]: + /// http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Br1.pdf + /// + /// [RFC 3447 Appendix A.1.2]: + /// https://tools.ietf.org/html/rfc3447#appendix-A.1.2 + /// + /// [RFC 5958]: + /// https://tools.ietf.org/html/rfc5958 + pub fn from_pkcs8(pkcs8: &[u8]) -> Result { + const RSA_ENCRYPTION: &[u8] = include_bytes!("../data/alg-rsa-encryption.der"); + let (der, _) = pkcs8::unwrap_key_( + untrusted::Input::from(RSA_ENCRYPTION), + pkcs8::Version::V1Only, + untrusted::Input::from(pkcs8), + )?; + Self::from_der(der.as_slice_less_safe()) + } + + /// Parses an RSA private key that is not inside a PKCS#8 wrapper. + /// + /// The private key must be encoded as a binary DER-encoded ASN.1 + /// `RSAPrivateKey` as described in [RFC 3447 Appendix A.1.2]). In all other + /// respects, this is just like `from_pkcs8()`. See the documentation for + /// `from_pkcs8()` for more details. + /// + /// It is recommended to use `from_pkcs8()` (with a PKCS#8-encoded key) + /// instead. + /// + /// See [`Self::from_components()`] for more details on how the input is + /// validated. + /// + /// [RFC 3447 Appendix A.1.2]: + /// https://tools.ietf.org/html/rfc3447#appendix-A.1.2 + /// + /// [NIST SP-800-56B rev. 1]: + /// http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Br1.pdf + pub fn from_der(input: &[u8]) -> Result { + untrusted::Input::from(input).read_all(KeyRejected::invalid_encoding(), |input| { + der::nested( + input, + der::Tag::Sequence, + error::KeyRejected::invalid_encoding(), + Self::from_der_reader, + ) + }) + } + + fn from_der_reader(input: &mut untrusted::Reader) -> Result { + let version = der::small_nonnegative_integer(input) + .map_err(|error::Unspecified| KeyRejected::invalid_encoding())?; + if version != 0 { + return Err(KeyRejected::version_not_supported()); + } + + fn nonnegative_integer<'a>( + input: &mut untrusted::Reader<'a>, + ) -> Result<&'a [u8], KeyRejected> { + der::nonnegative_integer(input) + .map(|input| input.as_slice_less_safe()) + .map_err(|error::Unspecified| KeyRejected::invalid_encoding()) + } + + let n = nonnegative_integer(input)?; + let e = nonnegative_integer(input)?; + let d = nonnegative_integer(input)?; + let p = nonnegative_integer(input)?; + let q = nonnegative_integer(input)?; + let dP = nonnegative_integer(input)?; + let dQ = nonnegative_integer(input)?; + let qInv = nonnegative_integer(input)?; + + let components = KeyPairComponents { + public_key: PublicKeyComponents { n, e }, + d, + p, + q, + dP, + dQ, + qInv, + }; + + Self::from_components(&components) + } + + /// Constructs an RSA private key from its big-endian-encoded components. + /// + /// Only two-prime (not multi-prime) keys are supported. The public modulus + /// (n) must be at least 2047 bits. The public modulus must be no larger + /// than 4096 bits. It is recommended that the public modulus be exactly + /// 2048 or 3072 bits. The public exponent must be at least 65537 and must + /// be no more than 33 bits long. + /// + /// The private key is validated according to [NIST SP-800-56B rev. 1] + /// section 6.4.1.4.3, crt_pkv (Intended Exponent-Creation Method Unknown), + /// with the following exceptions: + /// + /// * Section 6.4.1.2.1, Step 1: Neither a target security level nor an + /// expected modulus length is provided as a parameter, so checks + /// regarding these expectations are not done. + /// * Section 6.4.1.2.1, Step 3: Since neither the public key nor the + /// expected modulus length is provided as a parameter, the consistency + /// check between these values and the private key's value of n isn't + /// done. + /// * Section 6.4.1.2.1, Step 5: No primality tests are done, both for + /// performance reasons and to avoid any side channels that such tests + /// would provide. + /// * Section 6.4.1.2.1, Step 6, and 6.4.1.4.3, Step 7: + /// * *ring* has a slightly looser lower bound for the values of `p` + /// and `q` than what the NIST document specifies. This looser lower + /// bound matches what most other crypto libraries do. The check might + /// be tightened to meet NIST's requirements in the future. Similarly, + /// the check that `p` and `q` are not too close together is skipped + /// currently, but may be added in the future. + /// - The validity of the mathematical relationship of `dP`, `dQ`, `e` + /// and `n` is verified only during signing. Some size checks of `d`, + /// `dP` and `dQ` are performed at construction, but some NIST checks + /// are skipped because they would be expensive and/or they would leak + /// information through side channels. If a preemptive check of the + /// consistency of `dP`, `dQ`, `e` and `n` with each other is + /// necessary, that can be done by signing any message with the key + /// pair. + /// + /// * `d` is not fully validated, neither at construction nor during + /// signing. This is OK as far as *ring*'s usage of the key is + /// concerned because *ring* never uses the value of `d` (*ring* always + /// uses `p`, `q`, `dP` and `dQ` via the Chinese Remainder Theorem, + /// instead). However, *ring*'s checks would not be sufficient for + /// validating a key pair for use by some other system; that other + /// system must check the value of `d` itself if `d` is to be used. + pub fn from_components( + components: &KeyPairComponents, + ) -> Result + where + Public: AsRef<[u8]>, + Private: AsRef<[u8]>, + { + let components = KeyPairComponents { + public_key: PublicKeyComponents { + n: components.public_key.n.as_ref(), + e: components.public_key.e.as_ref(), + }, + d: components.d.as_ref(), + p: components.p.as_ref(), + q: components.q.as_ref(), + dP: components.dP.as_ref(), + dQ: components.dQ.as_ref(), + qInv: components.qInv.as_ref(), + }; + Self::from_components_(&components, cpu::features()) + } + + fn from_components_( + &KeyPairComponents { + public_key, + d, + p, + q, + dP, + dQ, + qInv, + }: &KeyPairComponents<&[u8]>, + cpu_features: cpu::Features, + ) -> Result { + let d = untrusted::Input::from(d); + let p = untrusted::Input::from(p); + let q = untrusted::Input::from(q); + let dP = untrusted::Input::from(dP); + let dQ = untrusted::Input::from(dQ); + let qInv = untrusted::Input::from(qInv); + + let (p, p_bits) = bigint::Nonnegative::from_be_bytes_with_bit_length(p) + .map_err(|error::Unspecified| KeyRejected::invalid_encoding())?; + let (q, q_bits) = bigint::Nonnegative::from_be_bytes_with_bit_length(q) + .map_err(|error::Unspecified| KeyRejected::invalid_encoding())?; + + // Our implementation of CRT-based modular exponentiation used requires + // that `p > q` so swap them if `p < q`. If swapped, `qInv` is + // recalculated below. `p != q` is verified implicitly below, e.g. when + // `q_mod_p` is constructed. + let ((p, p_bits, dP), (q, q_bits, dQ, qInv)) = match q.verify_less_than(&p) { + Ok(_) => ((p, p_bits, dP), (q, q_bits, dQ, Some(qInv))), + Err(error::Unspecified) => { + // TODO: verify `q` and `qInv` are inverses (mod p). + ((q, q_bits, dQ), (p, p_bits, dP, None)) + } + }; + + // XXX: Some steps are done out of order, but the NIST steps are worded + // in such a way that it is clear that NIST intends for them to be done + // in order. TODO: Does this matter at all? + + // 6.4.1.4.3/6.4.1.2.1 - Step 1. + + // Step 1.a is omitted, as explained above. + + // Step 1.b is omitted per above. Instead, we check that the public + // modulus is 2048 to `PRIVATE_KEY_PUBLIC_MODULUS_MAX_BITS` bits. + // XXX: The maximum limit of 4096 bits is primarily due to lack of + // testing of larger key sizes; see, in particular, + // https://www.mail-archive.com/openssl-dev@openssl.org/msg44586.html + // and + // https://www.mail-archive.com/openssl-dev@openssl.org/msg44759.html. + // Also, this limit might help with memory management decisions later. + + // Step 1.c. We validate e >= 65537. + let n = untrusted::Input::from(public_key.n); + let e = untrusted::Input::from(public_key.e); + let public_key = PublicKey::from_modulus_and_exponent( + n, + e, + bits::BitLength::from_usize_bits(2048), + super::PRIVATE_KEY_PUBLIC_MODULUS_MAX_BITS, + PublicExponent::_65537, + cpu_features, + )?; + + let n = public_key.n().value(); + + // 6.4.1.4.3 says to skip 6.4.1.2.1 Step 2. + + // 6.4.1.4.3 Step 3. + + // Step 3.a is done below, out of order. + // Step 3.b is unneeded since `n_bits` is derived here from `n`. + + // 6.4.1.4.3 says to skip 6.4.1.2.1 Step 4. (We don't need to recover + // the prime factors since they are already given.) + + // 6.4.1.4.3 - Step 5. + + // Steps 5.a and 5.b are omitted, as explained above. + + // Step 5.c. + // + // TODO: First, stop if `p < (√2) * 2**((nBits/2) - 1)`. + // + // Second, stop if `p > 2**(nBits/2) - 1`. + let half_n_bits = public_key.n().len_bits().half_rounded_up(); + if p_bits != half_n_bits { + return Err(KeyRejected::inconsistent_components()); + } + + // TODO: Step 5.d: Verify GCD(p - 1, e) == 1. + + // Steps 5.e and 5.f are omitted as explained above. + + // Step 5.g. + // + // TODO: First, stop if `q < (√2) * 2**((nBits/2) - 1)`. + // + // Second, stop if `q > 2**(nBits/2) - 1`. + if p_bits != q_bits { + return Err(KeyRejected::inconsistent_components()); + } + + // TODO: Step 5.h: Verify GCD(p - 1, e) == 1. + + let q_mod_n_decoded = q + .to_elem(n) + .map_err(|error::Unspecified| KeyRejected::inconsistent_components())?; + + // TODO: Step 5.i + // + // 3.b is unneeded since `n_bits` is derived here from `n`. + + // 6.4.1.4.3 - Step 3.a (out of order). + // + // Verify that p * q == n. We restrict ourselves to modular + // multiplication. We rely on the fact that we've verified + // 0 < q < p < n. We check that q and p are close to sqrt(n) and then + // assume that these preconditions are enough to let us assume that + // checking p * q == 0 (mod n) is equivalent to checking p * q == n. + let q_mod_n = bigint::elem_mul(n.oneRR().as_ref(), q_mod_n_decoded.clone(), n); + let p_mod_n = p + .to_elem(n) + .map_err(|error::Unspecified| KeyRejected::inconsistent_components())?; + let pq_mod_n = bigint::elem_mul(&q_mod_n, p_mod_n, n); + if !pq_mod_n.is_zero() { + return Err(KeyRejected::inconsistent_components()); + } + + // 6.4.1.4.3/6.4.1.2.1 - Step 6. + + // Step 6.a, partial. + // + // First, validate `2**half_n_bits < d`. Since 2**half_n_bits has a bit + // length of half_n_bits + 1, this check gives us 2**half_n_bits <= d, + // and knowing d is odd makes the inequality strict. + let (d, d_bits) = bigint::Nonnegative::from_be_bytes_with_bit_length(d) + .map_err(|_| error::KeyRejected::invalid_encoding())?; + if !(half_n_bits < d_bits) { + return Err(KeyRejected::inconsistent_components()); + } + // XXX: This check should be `d < LCM(p - 1, q - 1)`, but we don't have + // a good way of calculating LCM, so it is omitted, as explained above. + d.verify_less_than_modulus(n) + .map_err(|error::Unspecified| KeyRejected::inconsistent_components())?; + if !d.is_odd() { + return Err(KeyRejected::invalid_component()); + } + + // Step 6.b is omitted as explained above. + + // 6.4.1.4.3 - Step 7. + + // Step 7.a. + let p = PrivatePrime::new(p, dP, cpu_features)?; + + // Step 7.b. + let q = PrivatePrime::new(q, dQ, cpu_features)?; + + let q_mod_p = q.modulus.to_elem(&p.modulus); + + // Step 7.c. + let qInv = if let Some(qInv) = qInv { + bigint::Elem::from_be_bytes_padded(qInv, &p.modulus) + .map_err(|error::Unspecified| KeyRejected::invalid_component())? + } else { + // We swapped `p` and `q` above, so we need to calculate `qInv`. + // Step 7.f below will verify `qInv` is correct. + let q_mod_p = bigint::elem_mul(p.modulus.oneRR().as_ref(), q_mod_p.clone(), &p.modulus); + bigint::elem_inverse_consttime(q_mod_p, &p.modulus) + .map_err(|error::Unspecified| KeyRejected::unexpected_error())? + }; + + // Steps 7.d and 7.e are omitted per the documentation above, and + // because we don't (in the long term) have a good way to do modulo + // with an even modulus. + + // Step 7.f. + let qInv = bigint::elem_mul(p.modulus.oneRR().as_ref(), qInv, &p.modulus); + bigint::verify_inverses_consttime(&qInv, q_mod_p, &p.modulus) + .map_err(|error::Unspecified| KeyRejected::inconsistent_components())?; + + let qq = bigint::Modulus::from_elem( + bigint::elem_mul(&q_mod_n, q_mod_n_decoded, n), + cpu_features, + )?; + + // This should never fail since `n` and `e` were validated above. + + Ok(Self { + p, + q, + qInv, + q_mod_n, + qq, + public: public_key, + }) + } + + /// Returns a reference to the public key. + pub fn public(&self) -> &PublicKey { + &self.public + } + + /// Returns the length in bytes of the key pair's public modulus. + /// + /// A signature has the same length as the public modulus. + #[deprecated = "Use `public().modulus_len()`"] + #[inline] + pub fn public_modulus_len(&self) -> usize { + self.public().modulus_len() + } +} + +impl signature::KeyPair for KeyPair { + type PublicKey = PublicKey; + + fn public_key(&self) -> &Self::PublicKey { + self.public() + } +} + +struct PrivatePrime { + modulus: bigint::Modulus, + exponent: bigint::PrivateExponent, +} + +impl PrivatePrime { + /// Constructs a `PrivatePrime` from the private prime `p` and `dP` where + /// dP == d % (p - 1). + fn new( + p: bigint::Nonnegative, + dP: untrusted::Input, + cpu_features: cpu::Features, + ) -> Result { + let (p, p_bits) = bigint::Modulus::from_nonnegative_with_bit_length(p, cpu_features)?; + if p_bits.as_usize_bits() % 512 != 0 { + return Err(error::KeyRejected::private_modulus_len_not_multiple_of_512_bits()); + } + + // [NIST SP-800-56B rev. 1] 6.4.1.4.3 - Steps 7.a & 7.b. + let dP = bigint::PrivateExponent::from_be_bytes_padded(dP, &p) + .map_err(|error::Unspecified| KeyRejected::inconsistent_components())?; + + // XXX: Steps 7.d and 7.e are omitted. We don't check that + // `dP == d % (p - 1)` because we don't (in the long term) have a good + // way to do modulo with an even modulus. Instead we just check that + // `1 <= dP < p - 1`. We'll check it, to some unknown extent, when we + // do the private key operation, since we verify that the result of the + // private key operation using the CRT parameters is consistent with `n` + // and `e`. TODO: Either prove that what we do is sufficient, or make + // it so. + + Ok(Self { + modulus: p, + exponent: dP, + }) + } +} + +fn elem_exp_consttime( + c: &bigint::Elem, + p: &PrivatePrime, +) -> Result, error::Unspecified> +where + M: bigint::NotMuchSmallerModulus, + M: Prime, +{ + let c_mod_m = bigint::elem_reduced(c, &p.modulus); + // We could precompute `oneRRR = elem_squared(&p.oneRR`) as mentioned + // in the Smooth CRT-RSA paper. + let c_mod_m = bigint::elem_mul(p.modulus.oneRR().as_ref(), c_mod_m, &p.modulus); + let c_mod_m = bigint::elem_mul(p.modulus.oneRR().as_ref(), c_mod_m, &p.modulus); + bigint::elem_exp_consttime(c_mod_m, &p.exponent, &p.modulus) +} + +// Type-level representations of the different moduli used in RSA signing, in +// addition to `super::N`. See `super::bigint`'s modulue-level documentation. + +#[derive(Copy, Clone)] +enum P {} +unsafe impl Prime for P {} +unsafe impl bigint::SmallerModulus for P {} +unsafe impl bigint::NotMuchSmallerModulus for P {} + +#[derive(Copy, Clone)] +enum QQ {} +unsafe impl bigint::SmallerModulus for QQ {} +unsafe impl bigint::NotMuchSmallerModulus for QQ {} + +// `q < p < 2*q` since `q` is slightly smaller than `p` (see below). Thus: +// +// q < p < 2*q +// q*q < p*q < 2*q*q. +// q**2 < n < 2*(q**2). +unsafe impl bigint::SlightlySmallerModulus for QQ {} + +#[derive(Copy, Clone)] +enum Q {} +unsafe impl Prime for Q {} +unsafe impl bigint::SmallerModulus for Q {} +unsafe impl bigint::SmallerModulus

for Q {} + +// q < p && `p.bit_length() == q.bit_length()` implies `q < p < 2*q`. +unsafe impl bigint::SlightlySmallerModulus

for Q {} + +unsafe impl bigint::SmallerModulus for Q {} +unsafe impl bigint::NotMuchSmallerModulus for Q {} + +impl KeyPair { + /// Computes the signature of `msg` and writes it into `signature`. + /// + /// `msg` is digested using the digest algorithm from `padding_alg` and the + /// digest is then padded using the padding algorithm from `padding_alg`. + /// + /// The signature it written into `signature`; `signature`'s length must be + /// exactly the length returned by `self::public().modulus_len()` or else + /// an error will be returned. On failure, `signature` may contain + /// intermediate results, but won't contain anything that would endanger the + /// private key. + /// + /// `rng` may be used to randomize the padding (e.g. for PSS). + /// + /// Many other crypto libraries have signing functions that takes a + /// precomputed digest as input, instead of the message to digest. This + /// function does *not* take a precomputed digest; instead, `sign` + /// calculates the digest itself. + pub fn sign( + &self, + padding_alg: &'static dyn RsaEncoding, + rng: &dyn rand::SecureRandom, + msg: &[u8], + signature: &mut [u8], + ) -> Result<(), error::Unspecified> { + if signature.len() != self.public().modulus_len() { + return Err(error::Unspecified); + } + + let m_hash = digest::digest(padding_alg.digest_alg(), msg); + + // Use the output buffer as the scratch space for the signature to + // reduce the required stack space. + padding_alg.encode(m_hash, signature, self.public().n().len_bits(), rng)?; + + // RFC 8017 Section 5.1.2: RSADP, using the Chinese Remainder Theorem + // with Garner's algorithm. + + // Steps 1 and 2. + let m = self.private_exponentiate(signature)?; + + // Step 3. + m.fill_be_bytes(signature); + + Ok(()) + } + + /// Returns base**d (mod n). + /// + /// This does not return or write any intermediate results into any buffers + /// that are provided by the caller so that no intermediate state will be + /// leaked that would endanger the private key. + /// + /// Panics if `in_out` is not `self.public().modulus_len()`. + fn private_exponentiate(&self, base: &[u8]) -> Result, error::Unspecified> { + assert_eq!(base.len(), self.public().modulus_len()); + + // RFC 8017 Section 5.1.2: RSADP, using the Chinese Remainder Theorem + // with Garner's algorithm. + + let n = self.public.n().value(); + + // Step 1. The value zero is also rejected. + let base = bigint::Elem::from_be_bytes_padded(untrusted::Input::from(base), n)?; + + // Step 2 + let c = base; + + // Step 2.b.i. + let m_1 = elem_exp_consttime(&c, &self.p)?; + let c_mod_qq = bigint::elem_reduced_once(&c, &self.qq); + let m_2 = elem_exp_consttime(&c_mod_qq, &self.q)?; + + // Step 2.b.ii isn't needed since there are only two primes. + + // Step 2.b.iii. + let p = &self.p.modulus; + let m_2 = bigint::elem_widen(m_2, p); + let m_1_minus_m_2 = bigint::elem_sub(m_1, &m_2, p); + let h = bigint::elem_mul(&self.qInv, m_1_minus_m_2, p); + + // Step 2.b.iv. The reduction in the modular multiplication isn't + // necessary because `h < p` and `p * q == n` implies `h * q < n`. + // Modular arithmetic is used simply to avoid implementing + // non-modular arithmetic. + let h = bigint::elem_widen(h, n); + let q_times_h = bigint::elem_mul(&self.q_mod_n, h, n); + let m_2 = bigint::elem_widen(m_2, n); + let m = bigint::elem_add(m_2, q_times_h, n); + + // Step 2.b.v isn't needed since there are only two primes. + + // Verify the result to protect against fault attacks as described + // in "On the Importance of Checking Cryptographic Protocols for + // Faults" by Dan Boneh, Richard A. DeMillo, and Richard J. Lipton. + // This check is cheap assuming `e` is small, which is ensured during + // `KeyPair` construction. Note that this is the only validation of `e` + // that is done other than basic checks on its size, oddness, and + // minimum value, since the relationship of `e` to `d`, `p`, and `q` is + // not verified during `KeyPair` construction. + { + let verify = self.public.exponentiate_elem(m.clone()); + bigint::elem_verify_equal_consttime(&verify, &c)?; + } + + // Step 3 will be done by the caller. + + Ok(m) + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/rsa/padding/pkcs1.rs temporalio-1.3.0/vendor/ring/src/rsa/padding/pkcs1.rs --- temporalio-1.3.0/vendor/ring/src/rsa/padding/pkcs1.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/rsa/padding/pkcs1.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,177 @@ +// Copyright 2015-2016 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +use super::{super::PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN, Padding, RsaEncoding, Verification}; +use crate::{bits, digest, error, io::der, rand}; + +/// PKCS#1 1.5 padding as described in [RFC 3447 Section 8.2]. +/// +/// See "`RSA_PSS_*` Details\" in `ring::signature`'s module-level +/// documentation for more details. +/// +/// [RFC 3447 Section 8.2]: https://tools.ietf.org/html/rfc3447#section-8.2 +#[derive(Debug)] +pub struct PKCS1 { + digest_alg: &'static digest::Algorithm, + digestinfo_prefix: &'static [u8], +} + +impl crate::sealed::Sealed for PKCS1 {} + +impl Padding for PKCS1 { + fn digest_alg(&self) -> &'static digest::Algorithm { + self.digest_alg + } +} + +impl RsaEncoding for PKCS1 { + fn encode( + &self, + m_hash: digest::Digest, + m_out: &mut [u8], + _mod_bits: bits::BitLength, + _rng: &dyn rand::SecureRandom, + ) -> Result<(), error::Unspecified> { + pkcs1_encode(self, m_hash, m_out); + Ok(()) + } +} + +impl Verification for PKCS1 { + fn verify( + &self, + m_hash: digest::Digest, + m: &mut untrusted::Reader, + mod_bits: bits::BitLength, + ) -> Result<(), error::Unspecified> { + // `mod_bits.as_usize_bytes_rounded_up() <= + // PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN` is ensured by `verify_rsa_()`. + let mut calculated = [0u8; PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN]; + let calculated = &mut calculated[..mod_bits.as_usize_bytes_rounded_up()]; + pkcs1_encode(self, m_hash, calculated); + if m.read_bytes_to_end().as_slice_less_safe() != calculated { + return Err(error::Unspecified); + } + Ok(()) + } +} + +// Implement padding procedure per EMSA-PKCS1-v1_5, +// https://tools.ietf.org/html/rfc3447#section-9.2. This is used by both +// verification and signing so it needs to be able to handle moduli of the +// minimum and maximum sizes for both operations. +fn pkcs1_encode(pkcs1: &PKCS1, m_hash: digest::Digest, m_out: &mut [u8]) { + let em = m_out; + + let digest_len = pkcs1.digestinfo_prefix.len() + pkcs1.digest_alg.output_len(); + + // The specification requires at least 8 bytes of padding. Since we + // disallow keys smaller than 1024 bits, this should always be true. + assert!(em.len() >= digest_len + 11); + let pad_len = em.len() - digest_len - 3; + em[0] = 0; + em[1] = 1; + for i in 0..pad_len { + em[2 + i] = 0xff; + } + em[2 + pad_len] = 0; + + let (digest_prefix, digest_dst) = em[3 + pad_len..].split_at_mut(pkcs1.digestinfo_prefix.len()); + digest_prefix.copy_from_slice(pkcs1.digestinfo_prefix); + digest_dst.copy_from_slice(m_hash.as_ref()); +} + +macro_rules! rsa_pkcs1_padding { + ( $vis:vis $PADDING_ALGORITHM:ident, $digest_alg:expr, $digestinfo_prefix:expr, + $doc_str:expr ) => { + #[doc=$doc_str] + $vis static $PADDING_ALGORITHM: PKCS1 = PKCS1 { + digest_alg: $digest_alg, + digestinfo_prefix: $digestinfo_prefix, + }; + }; +} + +// Intentionally not exposed except internally for signature verification. At a +// minimum, we'd need to create test vectors for signing with it, which we +// don't currently have. But, it's a bad idea to use SHA-1 anyway, so perhaps +// we just won't ever expose it. +rsa_pkcs1_padding!( + pub(in super::super) RSA_PKCS1_SHA1_FOR_LEGACY_USE_ONLY, + &digest::SHA1_FOR_LEGACY_USE_ONLY, + &SHA1_PKCS1_DIGESTINFO_PREFIX, + "PKCS#1 1.5 padding using SHA-1 for RSA signatures." +); + +rsa_pkcs1_padding!( + pub RSA_PKCS1_SHA256, + &digest::SHA256, + &SHA256_PKCS1_DIGESTINFO_PREFIX, + "PKCS#1 1.5 padding using SHA-256 for RSA signatures." +); + +rsa_pkcs1_padding!( + pub RSA_PKCS1_SHA384, + &digest::SHA384, + &SHA384_PKCS1_DIGESTINFO_PREFIX, + "PKCS#1 1.5 padding using SHA-384 for RSA signatures." +); + +rsa_pkcs1_padding!( + pub RSA_PKCS1_SHA512, + &digest::SHA512, + &SHA512_PKCS1_DIGESTINFO_PREFIX, + "PKCS#1 1.5 padding using SHA-512 for RSA signatures." +); + +macro_rules! pkcs1_digestinfo_prefix { + ( $name:ident, $digest_len:expr, $digest_oid_len:expr, + [ $( $digest_oid:expr ),* ] ) => { + static $name: [u8; 2 + 8 + $digest_oid_len] = [ + der::Tag::Sequence as u8, 8 + $digest_oid_len + $digest_len, + der::Tag::Sequence as u8, 2 + $digest_oid_len + 2, + der::Tag::OID as u8, $digest_oid_len, $( $digest_oid ),*, + der::Tag::Null as u8, 0, + der::Tag::OctetString as u8, $digest_len, + ]; + } +} + +pkcs1_digestinfo_prefix!( + SHA1_PKCS1_DIGESTINFO_PREFIX, + 20, + 5, + [0x2b, 0x0e, 0x03, 0x02, 0x1a] +); + +pkcs1_digestinfo_prefix!( + SHA256_PKCS1_DIGESTINFO_PREFIX, + 32, + 9, + [0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01] +); + +pkcs1_digestinfo_prefix!( + SHA384_PKCS1_DIGESTINFO_PREFIX, + 48, + 9, + [0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02] +); + +pkcs1_digestinfo_prefix!( + SHA512_PKCS1_DIGESTINFO_PREFIX, + 64, + 9, + [0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03] +); diff -Nru temporalio-1.3.0/vendor/ring/src/rsa/padding/pss.rs temporalio-1.3.0/vendor/ring/src/rsa/padding/pss.rs --- temporalio-1.3.0/vendor/ring/src/rsa/padding/pss.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/rsa/padding/pss.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,288 @@ +// Copyright 2015-2016 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +use super::{super::PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN, mgf1, Padding, RsaEncoding, Verification}; +use crate::{bits, digest, error, rand}; + +/// RSA PSS padding as described in [RFC 3447 Section 8.1]. +/// +/// See "`RSA_PSS_*` Details\" in `ring::signature`'s module-level +/// documentation for more details. +/// +/// [RFC 3447 Section 8.1]: https://tools.ietf.org/html/rfc3447#section-8.1 +#[derive(Debug)] +pub struct PSS { + digest_alg: &'static digest::Algorithm, +} + +impl crate::sealed::Sealed for PSS {} + +impl Padding for PSS { + fn digest_alg(&self) -> &'static digest::Algorithm { + self.digest_alg + } +} + +impl RsaEncoding for PSS { + // Implement padding procedure per EMSA-PSS, + // https://tools.ietf.org/html/rfc3447#section-9.1. + fn encode( + &self, + m_hash: digest::Digest, + m_out: &mut [u8], + mod_bits: bits::BitLength, + rng: &dyn rand::SecureRandom, + ) -> Result<(), error::Unspecified> { + let metrics = PSSMetrics::new(self.digest_alg, mod_bits)?; + + // The `m_out` this function fills is the big-endian-encoded value of `m` + // from the specification, padded to `k` bytes, where `k` is the length + // in bytes of the public modulus. The spec says "Note that emLen will + // be one less than k if modBits - 1 is divisible by 8 and equal to k + // otherwise." In other words we might need to prefix `em` with a + // leading zero byte to form a correct value of `m`. + let em = if metrics.top_byte_mask == 0xff { + m_out[0] = 0; + &mut m_out[1..] + } else { + m_out + }; + assert_eq!(em.len(), metrics.em_len); + + // Steps 1 and 2 are done by the caller to produce `m_hash`. + + // Step 3 is done by `PSSMetrics::new()` above. + + let (db, digest_terminator) = em.split_at_mut(metrics.db_len); + + let separator_pos = db.len() - 1 - metrics.s_len; + + // Step 4. + let salt: &[u8] = { + let salt = &mut db[(separator_pos + 1)..]; + rng.fill(salt)?; // salt + salt + }; + + // Steps 5 and 6. + let h = pss_digest(self.digest_alg, m_hash, salt); + + // Step 7. + db[..separator_pos].fill(0); // ps + + // Step 8. + db[separator_pos] = 0x01; + + // Steps 9 and 10. + mgf1(self.digest_alg, h.as_ref(), db); + + // Step 11. + db[0] &= metrics.top_byte_mask; + + // Step 12. + digest_terminator[..metrics.h_len].copy_from_slice(h.as_ref()); + digest_terminator[metrics.h_len] = 0xbc; + + Ok(()) + } +} + +impl Verification for PSS { + // RSASSA-PSS-VERIFY from https://tools.ietf.org/html/rfc3447#section-8.1.2 + // where steps 1, 2(a), and 2(b) have been done for us. + fn verify( + &self, + m_hash: digest::Digest, + m: &mut untrusted::Reader, + mod_bits: bits::BitLength, + ) -> Result<(), error::Unspecified> { + let metrics = PSSMetrics::new(self.digest_alg, mod_bits)?; + + // RSASSA-PSS-VERIFY Step 2(c). The `m` this function is given is the + // big-endian-encoded value of `m` from the specification, padded to + // `k` bytes, where `k` is the length in bytes of the public modulus. + // The spec. says "Note that emLen will be one less than k if + // modBits - 1 is divisible by 8 and equal to k otherwise," where `k` + // is the length in octets of the RSA public modulus `n`. In other + // words, `em` might have an extra leading zero byte that we need to + // strip before we start the PSS decoding steps which is an artifact of + // the `Verification` interface. + if metrics.top_byte_mask == 0xff { + if m.read_byte()? != 0 { + return Err(error::Unspecified); + } + }; + let em = m; + + // The rest of this function is EMSA-PSS-VERIFY from + // https://tools.ietf.org/html/rfc3447#section-9.1.2. + + // Steps 1 and 2 are done by the caller to produce `m_hash`. + + // Step 3 is done by `PSSMetrics::new()` above. + + // Step 5, out of order. + let masked_db = em.read_bytes(metrics.db_len)?; + let h_hash = em.read_bytes(metrics.h_len)?; + + // Step 4. + if em.read_byte()? != 0xbc { + return Err(error::Unspecified); + } + + // Step 7. + let mut db = [0u8; PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN]; + let db = &mut db[..metrics.db_len]; + + mgf1(self.digest_alg, h_hash.as_slice_less_safe(), db); + + masked_db.read_all(error::Unspecified, |masked_bytes| { + // Step 6. Check the top bits of first byte are zero. + let b = masked_bytes.read_byte()?; + if b & !metrics.top_byte_mask != 0 { + return Err(error::Unspecified); + } + db[0] ^= b; + + // Step 8. + for db in db[1..].iter_mut() { + *db ^= masked_bytes.read_byte()?; + } + Ok(()) + })?; + + // Step 9. + db[0] &= metrics.top_byte_mask; + + // Step 10. + let ps_len = metrics.ps_len; + if db[0..ps_len].iter().any(|&db| db != 0) { + return Err(error::Unspecified); + } + if db[metrics.ps_len] != 1 { + return Err(error::Unspecified); + } + + // Step 11. + let salt = &db[(db.len() - metrics.s_len)..]; + + // Step 12 and 13. + let h_prime = pss_digest(self.digest_alg, m_hash, salt); + + // Step 14. + if h_hash.as_slice_less_safe() != h_prime.as_ref() { + return Err(error::Unspecified); + } + + Ok(()) + } +} + +struct PSSMetrics { + #[cfg_attr(not(feature = "alloc"), allow(dead_code))] + em_len: usize, + db_len: usize, + ps_len: usize, + s_len: usize, + h_len: usize, + top_byte_mask: u8, +} + +impl PSSMetrics { + fn new( + digest_alg: &'static digest::Algorithm, + mod_bits: bits::BitLength, + ) -> Result { + let em_bits = mod_bits.try_sub_1()?; + let em_len = em_bits.as_usize_bytes_rounded_up(); + let leading_zero_bits = (8 * em_len) - em_bits.as_usize_bits(); + debug_assert!(leading_zero_bits < 8); + let top_byte_mask = 0xffu8 >> leading_zero_bits; + + let h_len = digest_alg.output_len(); + + // We require the salt length to be equal to the digest length. + let s_len = h_len; + + // Step 3 of both `EMSA-PSS-ENCODE` is `EMSA-PSS-VERIFY` requires that + // we reject inputs where "emLen < hLen + sLen + 2". The definition of + // `emBits` in RFC 3447 Sections 9.1.1 and 9.1.2 says `emBits` must be + // "at least 8hLen + 8sLen + 9". Since 9 bits requires two bytes, these + // two conditions are equivalent. 9 bits are required as the 0x01 + // before the salt requires 1 bit and the 0xbc after the digest + // requires 8 bits. + let db_len = em_len.checked_sub(1 + s_len).ok_or(error::Unspecified)?; + let ps_len = db_len.checked_sub(h_len + 1).ok_or(error::Unspecified)?; + + debug_assert!(em_bits.as_usize_bits() >= (8 * h_len) + (8 * s_len) + 9); + + Ok(Self { + em_len, + db_len, + ps_len, + s_len, + h_len, + top_byte_mask, + }) + } +} + +fn pss_digest( + digest_alg: &'static digest::Algorithm, + m_hash: digest::Digest, + salt: &[u8], +) -> digest::Digest { + // Fixed prefix. + const PREFIX_ZEROS: [u8; 8] = [0u8; 8]; + + // Encoding step 5 and 6, Verification step 12 and 13. + let mut ctx = digest::Context::new(digest_alg); + ctx.update(&PREFIX_ZEROS); + ctx.update(m_hash.as_ref()); + ctx.update(salt); + ctx.finish() +} + +macro_rules! rsa_pss_padding { + ( $vis:vis $PADDING_ALGORITHM:ident, $digest_alg:expr, $doc_str:expr ) => { + #[doc=$doc_str] + $vis static $PADDING_ALGORITHM: PSS = PSS { + digest_alg: $digest_alg, + }; + }; +} + +rsa_pss_padding!( + pub RSA_PSS_SHA256, + &digest::SHA256, + "RSA PSS padding using SHA-256 for RSA signatures.\n\nSee + \"`RSA_PSS_*` Details\" in `ring::signature`'s module-level + documentation for more details." +); + +rsa_pss_padding!( + pub RSA_PSS_SHA384, + &digest::SHA384, + "RSA PSS padding using SHA-384 for RSA signatures.\n\nSee + \"`RSA_PSS_*` Details\" in `ring::signature`'s module-level + documentation for more details." +); + +rsa_pss_padding!( + pub RSA_PSS_SHA512, + &digest::SHA512, + "RSA PSS padding using SHA-512 for RSA signatures.\n\nSee + \"`RSA_PSS_*` Details\" in `ring::signature`'s module-level + documentation for more details." +); diff -Nru temporalio-1.3.0/vendor/ring/src/rsa/padding.rs temporalio-1.3.0/vendor/ring/src/rsa/padding.rs --- temporalio-1.3.0/vendor/ring/src/rsa/padding.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/rsa/padding.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,11 +12,16 @@ // OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -use super::PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN; -use crate::{bits, digest, error, io::der}; +use crate::{bits, digest, error, rand}; -#[cfg(feature = "alloc")] -use crate::rand; +mod pkcs1; +mod pss; + +pub use self::{ + pkcs1::{PKCS1, RSA_PKCS1_SHA256, RSA_PKCS1_SHA384, RSA_PKCS1_SHA512}, + pss::{PSS, RSA_PSS_SHA256, RSA_PSS_SHA384, RSA_PSS_SHA512}, +}; +pub(super) use pkcs1::RSA_PKCS1_SHA1_FOR_LEGACY_USE_ONLY; /// Common features of both RSA padding encoding and RSA padding verification. pub trait Padding: 'static + Sync + crate::sealed::Sealed + core::fmt::Debug { @@ -33,7 +38,7 @@ #[doc(hidden)] fn encode( &self, - m_hash: &digest::Digest, + m_hash: digest::Digest, m_out: &mut [u8], mod_bits: bits::BitLength, rng: &dyn rand::SecureRandom, @@ -47,475 +52,33 @@ pub trait Verification: Padding { fn verify( &self, - m_hash: &digest::Digest, + m_hash: digest::Digest, m: &mut untrusted::Reader, mod_bits: bits::BitLength, ) -> Result<(), error::Unspecified>; } -/// PKCS#1 1.5 padding as described in [RFC 3447 Section 8.2]. -/// -/// See "`RSA_PSS_*` Details\" in `ring::signature`'s module-level -/// documentation for more details. -/// -/// [RFC 3447 Section 8.2]: https://tools.ietf.org/html/rfc3447#section-8.2 -#[derive(Debug)] -pub struct PKCS1 { - digest_alg: &'static digest::Algorithm, - digestinfo_prefix: &'static [u8], -} - -impl crate::sealed::Sealed for PKCS1 {} - -impl Padding for PKCS1 { - fn digest_alg(&self) -> &'static digest::Algorithm { - self.digest_alg - } -} - -#[cfg(feature = "alloc")] -impl RsaEncoding for PKCS1 { - fn encode( - &self, - m_hash: &digest::Digest, - m_out: &mut [u8], - _mod_bits: bits::BitLength, - _rng: &dyn rand::SecureRandom, - ) -> Result<(), error::Unspecified> { - pkcs1_encode(&self, m_hash, m_out); - Ok(()) - } -} - -impl Verification for PKCS1 { - fn verify( - &self, - m_hash: &digest::Digest, - m: &mut untrusted::Reader, - mod_bits: bits::BitLength, - ) -> Result<(), error::Unspecified> { - // `mod_bits.as_usize_bytes_rounded_up() <= - // PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN` is ensured by `verify_rsa_()`. - let mut calculated = [0u8; PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN]; - let calculated = &mut calculated[..mod_bits.as_usize_bytes_rounded_up()]; - pkcs1_encode(&self, m_hash, calculated); - if m.read_bytes_to_end() != *calculated { - return Err(error::Unspecified); - } - Ok(()) - } -} - -// Implement padding procedure per EMSA-PKCS1-v1_5, -// https://tools.ietf.org/html/rfc3447#section-9.2. This is used by both -// verification and signing so it needs to be able to handle moduli of the -// minimum and maximum sizes for both operations. -fn pkcs1_encode(pkcs1: &PKCS1, m_hash: &digest::Digest, m_out: &mut [u8]) { - let em = m_out; - - let digest_len = pkcs1.digestinfo_prefix.len() + pkcs1.digest_alg.output_len; - - // The specification requires at least 8 bytes of padding. Since we - // disallow keys smaller than 1024 bits, this should always be true. - assert!(em.len() >= digest_len + 11); - let pad_len = em.len() - digest_len - 3; - em[0] = 0; - em[1] = 1; - for i in 0..pad_len { - em[2 + i] = 0xff; - } - em[2 + pad_len] = 0; - - let (digest_prefix, digest_dst) = em[3 + pad_len..].split_at_mut(pkcs1.digestinfo_prefix.len()); - digest_prefix.copy_from_slice(pkcs1.digestinfo_prefix); - digest_dst.copy_from_slice(m_hash.as_ref()); -} - -macro_rules! rsa_pkcs1_padding { - ( $PADDING_ALGORITHM:ident, $digest_alg:expr, $digestinfo_prefix:expr, - $doc_str:expr ) => { - #[doc=$doc_str] - pub static $PADDING_ALGORITHM: PKCS1 = PKCS1 { - digest_alg: $digest_alg, - digestinfo_prefix: $digestinfo_prefix, - }; - }; -} - -rsa_pkcs1_padding!( - RSA_PKCS1_SHA1_FOR_LEGACY_USE_ONLY, - &digest::SHA1_FOR_LEGACY_USE_ONLY, - &SHA1_PKCS1_DIGESTINFO_PREFIX, - "PKCS#1 1.5 padding using SHA-1 for RSA signatures." -); -rsa_pkcs1_padding!( - RSA_PKCS1_SHA256, - &digest::SHA256, - &SHA256_PKCS1_DIGESTINFO_PREFIX, - "PKCS#1 1.5 padding using SHA-256 for RSA signatures." -); -rsa_pkcs1_padding!( - RSA_PKCS1_SHA384, - &digest::SHA384, - &SHA384_PKCS1_DIGESTINFO_PREFIX, - "PKCS#1 1.5 padding using SHA-384 for RSA signatures." -); -rsa_pkcs1_padding!( - RSA_PKCS1_SHA512, - &digest::SHA512, - &SHA512_PKCS1_DIGESTINFO_PREFIX, - "PKCS#1 1.5 padding using SHA-512 for RSA signatures." -); - -macro_rules! pkcs1_digestinfo_prefix { - ( $name:ident, $digest_len:expr, $digest_oid_len:expr, - [ $( $digest_oid:expr ),* ] ) => { - static $name: [u8; 2 + 8 + $digest_oid_len] = [ - der::Tag::Sequence as u8, 8 + $digest_oid_len + $digest_len, - der::Tag::Sequence as u8, 2 + $digest_oid_len + 2, - der::Tag::OID as u8, $digest_oid_len, $( $digest_oid ),*, - der::Tag::Null as u8, 0, - der::Tag::OctetString as u8, $digest_len, - ]; - } -} - -pkcs1_digestinfo_prefix!( - SHA1_PKCS1_DIGESTINFO_PREFIX, - 20, - 5, - [0x2b, 0x0e, 0x03, 0x02, 0x1a] -); - -pkcs1_digestinfo_prefix!( - SHA256_PKCS1_DIGESTINFO_PREFIX, - 32, - 9, - [0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01] -); - -pkcs1_digestinfo_prefix!( - SHA384_PKCS1_DIGESTINFO_PREFIX, - 48, - 9, - [0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02] -); - -pkcs1_digestinfo_prefix!( - SHA512_PKCS1_DIGESTINFO_PREFIX, - 64, - 9, - [0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03] -); - -/// RSA PSS padding as described in [RFC 3447 Section 8.1]. -/// -/// See "`RSA_PSS_*` Details\" in `ring::signature`'s module-level -/// documentation for more details. -/// -/// [RFC 3447 Section 8.1]: https://tools.ietf.org/html/rfc3447#section-8.1 -#[derive(Debug)] -pub struct PSS { - digest_alg: &'static digest::Algorithm, -} - -impl crate::sealed::Sealed for PSS {} - -// Maximum supported length of the salt in bytes. -// In practice, this is constrained by the maximum digest length. -const MAX_SALT_LEN: usize = digest::MAX_OUTPUT_LEN; - -impl Padding for PSS { - fn digest_alg(&self) -> &'static digest::Algorithm { - self.digest_alg - } -} - -impl RsaEncoding for PSS { - // Implement padding procedure per EMSA-PSS, - // https://tools.ietf.org/html/rfc3447#section-9.1. - fn encode( - &self, - m_hash: &digest::Digest, - m_out: &mut [u8], - mod_bits: bits::BitLength, - rng: &dyn rand::SecureRandom, - ) -> Result<(), error::Unspecified> { - let metrics = PSSMetrics::new(self.digest_alg, mod_bits)?; - - // The `m_out` this function fills is the big-endian-encoded value of `m` - // from the specification, padded to `k` bytes, where `k` is the length - // in bytes of the public modulus. The spec says "Note that emLen will - // be one less than k if modBits - 1 is divisible by 8 and equal to k - // otherwise." In other words we might need to prefix `em` with a - // leading zero byte to form a correct value of `m`. - let em = if metrics.top_byte_mask == 0xff { - m_out[0] = 0; - &mut m_out[1..] - } else { - m_out - }; - assert_eq!(em.len(), metrics.em_len); - - // Steps 1 and 2 are done by the caller to produce `m_hash`. - - // Step 3 is done by `PSSMetrics::new()` above. - - // Step 4. - let mut salt = [0u8; MAX_SALT_LEN]; - let salt = &mut salt[..metrics.s_len]; - rng.fill(salt)?; - - // Step 5 and 6. - let h_hash = pss_digest(self.digest_alg, m_hash, salt); - - // Re-order steps 7, 8, 9 and 10 so that we first output the db mask - // into `em`, and then XOR the value of db. - - // Step 9. First output the mask into the out buffer. - let (mut masked_db, digest_terminator) = em.split_at_mut(metrics.db_len); - mgf1(self.digest_alg, h_hash.as_ref(), &mut masked_db)?; - - { - // Steps 7. - let masked_db = masked_db.iter_mut(); - // `PS` is all zero bytes, so skipping `ps_len` bytes is equivalent - // to XORing `PS` onto `db`. - let mut masked_db = masked_db.skip(metrics.ps_len); - - // Step 8. - *(masked_db.next().ok_or(error::Unspecified)?) ^= 0x01; - - // Step 10. - for (masked_db_b, salt_b) in masked_db.zip(salt) { - *masked_db_b ^= *salt_b; - } - } - - // Step 11. - masked_db[0] &= metrics.top_byte_mask; - - // Step 12. - digest_terminator[..metrics.h_len].copy_from_slice(h_hash.as_ref()); - digest_terminator[metrics.h_len] = 0xbc; - - Ok(()) - } -} - -impl Verification for PSS { - // RSASSA-PSS-VERIFY from https://tools.ietf.org/html/rfc3447#section-8.1.2 - // where steps 1, 2(a), and 2(b) have been done for us. - fn verify( - &self, - m_hash: &digest::Digest, - m: &mut untrusted::Reader, - mod_bits: bits::BitLength, - ) -> Result<(), error::Unspecified> { - let metrics = PSSMetrics::new(self.digest_alg, mod_bits)?; - - // RSASSA-PSS-VERIFY Step 2(c). The `m` this function is given is the - // big-endian-encoded value of `m` from the specification, padded to - // `k` bytes, where `k` is the length in bytes of the public modulus. - // The spec. says "Note that emLen will be one less than k if - // modBits - 1 is divisible by 8 and equal to k otherwise," where `k` - // is the length in octets of the RSA public modulus `n`. In other - // words, `em` might have an extra leading zero byte that we need to - // strip before we start the PSS decoding steps which is an artifact of - // the `Verification` interface. - if metrics.top_byte_mask == 0xff { - if m.read_byte()? != 0 { - return Err(error::Unspecified); - } - }; - let em = m; - - // The rest of this function is EMSA-PSS-VERIFY from - // https://tools.ietf.org/html/rfc3447#section-9.1.2. - - // Steps 1 and 2 are done by the caller to produce `m_hash`. - - // Step 3 is done by `PSSMetrics::new()` above. - - // Step 5, out of order. - let masked_db = em.read_bytes(metrics.db_len)?; - let h_hash = em.read_bytes(metrics.h_len)?; - - // Step 4. - if em.read_byte()? != 0xbc { - return Err(error::Unspecified); - } - - // Step 7. - let mut db = [0u8; PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN]; - let db = &mut db[..metrics.db_len]; - - mgf1(self.digest_alg, h_hash.as_slice_less_safe(), db)?; - - masked_db.read_all(error::Unspecified, |masked_bytes| { - // Step 6. Check the top bits of first byte are zero. - let b = masked_bytes.read_byte()?; - if b & !metrics.top_byte_mask != 0 { - return Err(error::Unspecified); - } - db[0] ^= b; - - // Step 8. - for i in 1..db.len() { - db[i] ^= masked_bytes.read_byte()?; - } - Ok(()) - })?; - - // Step 9. - db[0] &= metrics.top_byte_mask; - - // Step 10. - let ps_len = metrics.ps_len; - for i in 0..ps_len { - if db[i] != 0 { - return Err(error::Unspecified); - } - } - if db[metrics.ps_len] != 1 { - return Err(error::Unspecified); - } - - // Step 11. - let salt = &db[(db.len() - metrics.s_len)..]; - - // Step 12 and 13. - let h_prime = pss_digest(self.digest_alg, m_hash, salt); - - // Step 14. - if h_hash != *h_prime.as_ref() { - return Err(error::Unspecified); - } - - Ok(()) - } -} - -struct PSSMetrics { - #[cfg_attr(not(feature = "alloc"), allow(dead_code))] - em_len: usize, - db_len: usize, - ps_len: usize, - s_len: usize, - h_len: usize, - top_byte_mask: u8, -} - -impl PSSMetrics { - fn new( - digest_alg: &'static digest::Algorithm, - mod_bits: bits::BitLength, - ) -> Result { - let em_bits = mod_bits.try_sub_1()?; - let em_len = em_bits.as_usize_bytes_rounded_up(); - let leading_zero_bits = (8 * em_len) - em_bits.as_usize_bits(); - debug_assert!(leading_zero_bits < 8); - let top_byte_mask = 0xffu8 >> leading_zero_bits; - - let h_len = digest_alg.output_len; - - // We require the salt length to be equal to the digest length. - let s_len = h_len; - - // Step 3 of both `EMSA-PSS-ENCODE` is `EMSA-PSS-VERIFY` requires that - // we reject inputs where "emLen < hLen + sLen + 2". The definition of - // `emBits` in RFC 3447 Sections 9.1.1 and 9.1.2 says `emBits` must be - // "at least 8hLen + 8sLen + 9". Since 9 bits requires two bytes, these - // two conditions are equivalent. 9 bits are required as the 0x01 - // before the salt requires 1 bit and the 0xbc after the digest - // requires 8 bits. - let db_len = em_len.checked_sub(1 + s_len).ok_or(error::Unspecified)?; - let ps_len = db_len.checked_sub(h_len + 1).ok_or(error::Unspecified)?; - - debug_assert!(em_bits.as_usize_bits() >= (8 * h_len) + (8 * s_len) + 9); - - Ok(PSSMetrics { - em_len, - db_len, - ps_len, - s_len, - h_len, - top_byte_mask, - }) - } -} - -// Mask-generating function MGF1 as described in -// https://tools.ietf.org/html/rfc3447#appendix-B.2.1. -fn mgf1( - digest_alg: &'static digest::Algorithm, - seed: &[u8], - mask: &mut [u8], -) -> Result<(), error::Unspecified> { - let digest_len = digest_alg.output_len; +// Masks `out` with the output of the mask-generating function MGF1 as +// described in https://tools.ietf.org/html/rfc3447#appendix-B.2.1. +fn mgf1(digest_alg: &'static digest::Algorithm, seed: &[u8], out: &mut [u8]) { + let digest_len = digest_alg.output_len(); // Maximum counter value is the value of (mask_len / digest_len) rounded up. - let ctr_max = (mask.len() - 1) / digest_len; - assert!(ctr_max <= u32::max_value() as usize); - for (i, mask_chunk) in mask.chunks_mut(digest_len).enumerate() { + for (i, out) in out.chunks_mut(digest_len).enumerate() { let mut ctx = digest::Context::new(digest_alg); ctx.update(seed); - ctx.update(&u32::to_be_bytes(i as u32)); + // The counter will always fit in a `u32` because we reject absurdly + // long inputs very early. + ctx.update(&u32::to_be_bytes(i.try_into().unwrap())); let digest = ctx.finish(); - let mask_chunk_len = mask_chunk.len(); - mask_chunk.copy_from_slice(&digest.as_ref()[..mask_chunk_len]); + // `zip` does the right thing as the the last chunk may legitimately be + // shorter than `digest`, and `digest` will never be shorter than `out`. + for (m, &d) in out.iter_mut().zip(digest.as_ref().iter()) { + *m ^= d; + } } - - Ok(()) } -fn pss_digest( - digest_alg: &'static digest::Algorithm, - m_hash: &digest::Digest, - salt: &[u8], -) -> digest::Digest { - // Fixed prefix. - const PREFIX_ZEROS: [u8; 8] = [0u8; 8]; - - // Encoding step 5 and 6, Verification step 12 and 13. - let mut ctx = digest::Context::new(digest_alg); - ctx.update(&PREFIX_ZEROS); - ctx.update(m_hash.as_ref()); - ctx.update(salt); - ctx.finish() -} - -macro_rules! rsa_pss_padding { - ( $PADDING_ALGORITHM:ident, $digest_alg:expr, $doc_str:expr ) => { - #[doc=$doc_str] - pub static $PADDING_ALGORITHM: PSS = PSS { - digest_alg: $digest_alg, - }; - }; -} - -rsa_pss_padding!( - RSA_PSS_SHA256, - &digest::SHA256, - "RSA PSS padding using SHA-256 for RSA signatures.\n\nSee - \"`RSA_PSS_*` Details\" in `ring::signature`'s module-level - documentation for more details." -); -rsa_pss_padding!( - RSA_PSS_SHA384, - &digest::SHA384, - "RSA PSS padding using SHA-384 for RSA signatures.\n\nSee - \"`RSA_PSS_*` Details\" in `ring::signature`'s module-level - documentation for more details." -); -rsa_pss_padding!( - RSA_PSS_SHA512, - &digest::SHA512, - "RSA PSS padding using SHA-512 for RSA signatures.\n\nSee - \"`RSA_PSS_*` Details\" in `ring::signature`'s module-level - documentation for more details." -); - #[cfg(test)] mod test { use super::*; @@ -551,7 +114,7 @@ let is_valid = test_case.consume_string("Result") == "P"; let actual_result = - encoded.read_all(error::Unspecified, |m| alg.verify(&m_hash, m, bit_len)); + encoded.read_all(error::Unspecified, |m| alg.verify(m_hash, m, bit_len)); assert_eq!(actual_result.is_ok(), is_valid); Ok(()) @@ -591,7 +154,7 @@ let mut m_out = vec![0u8; bit_len.as_usize_bytes_rounded_up()]; let digest = digest::digest(alg.digest_alg(), &msg); - alg.encode(&digest, &mut m_out, bit_len, &rng).unwrap(); + alg.encode(digest, &mut m_out, bit_len, &rng).unwrap(); assert_eq!(m_out, encoded); Ok(()) diff -Nru temporalio-1.3.0/vendor/ring/src/rsa/public_exponent.rs temporalio-1.3.0/vendor/ring/src/rsa/public_exponent.rs --- temporalio-1.3.0/vendor/ring/src/rsa/public_exponent.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/rsa/public_exponent.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,104 @@ +use crate::error; +use crate::polyfill::{unwrap_const, ArrayFlatMap, LeadingZerosStripped}; +use core::num::NonZeroU64; + +/// The exponent `e` of an RSA public key. +#[derive(Clone, Copy)] +pub struct PublicExponent(NonZeroU64); + +impl PublicExponent { + #[cfg(test)] + const ALL_CONSTANTS: [Self; 3] = [Self::_3, Self::_65537, Self::MAX]; + + pub(super) const _3: Self = Self(unwrap_const(NonZeroU64::new(3))); + pub(super) const _65537: Self = Self(unwrap_const(NonZeroU64::new(65537))); + + // This limit was chosen to bound the performance of the simple + // exponentiation-by-squaring implementation in `elem_exp_vartime`. In + // particular, it helps mitigate theoretical resource exhaustion attacks. 33 + // bits was chosen as the limit based on the recommendations in [1] and + // [2]. Windows CryptoAPI (at least older versions) doesn't support values + // larger than 32 bits [3], so it is unlikely that exponents larger than 32 + // bits are being used for anything Windows commonly does. + // + // [1] https://www.imperialviolet.org/2012/03/16/rsae.html + // [2] https://www.imperialviolet.org/2012/03/17/rsados.html + // [3] https://msdn.microsoft.com/en-us/library/aa387685(VS.85).aspx + const MAX: Self = Self(unwrap_const(NonZeroU64::new((1u64 << 33) - 1))); + + pub(super) fn from_be_bytes( + input: untrusted::Input, + min_value: Self, + ) -> Result { + // See `PublicKey::from_modulus_and_exponent` for background on the step + // numbering. + + if input.len() > 5 { + return Err(error::KeyRejected::too_large()); + } + let value = input.read_all(error::KeyRejected::invalid_encoding(), |input| { + // The exponent can't be zero and it can't be prefixed with + // zero-valued bytes. + if input.peek(0) { + return Err(error::KeyRejected::invalid_encoding()); + } + let mut value = 0u64; + loop { + let byte = input + .read_byte() + .map_err(|untrusted::EndOfInput| error::KeyRejected::invalid_encoding())?; + value = (value << 8) | u64::from(byte); + if input.at_end() { + return Ok(value); + } + } + })?; + + // Step 2 / Step b. NIST SP800-89 defers to FIPS 186-3, which requires + // `e >= 65537`. We enforce this when signing, but are more flexible in + // verification, for compatibility. Only small public exponents are + // supported. + let value = NonZeroU64::new(value).ok_or_else(error::KeyRejected::too_small)?; + if value < min_value.0 { + return Err(error::KeyRejected::too_small()); + } + if value > Self::MAX.0 { + return Err(error::KeyRejected::too_large()); + } + + // Step 3 / Step c. + if value.get() & 1 != 1 { + return Err(error::KeyRejected::invalid_component()); + } + + Ok(Self(value)) + } + + /// The big-endian encoding of the exponent. + /// + /// There are no leading zeros. + pub fn be_bytes(&self) -> impl ExactSizeIterator + Clone + '_ { + // The `unwrap()` won't fail as `self.0` is only a few bytes long. + let bytes = ArrayFlatMap::new(core::iter::once(self.0.get()), u64::to_be_bytes).unwrap(); + LeadingZerosStripped::new(bytes) + } + + pub(super) fn value(self) -> NonZeroU64 { + self.0 + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_public_exponent_constants() { + for value in PublicExponent::ALL_CONSTANTS.iter() { + let value: u64 = value.0.into(); + assert_eq!(value & 1, 1); + assert!(value >= PublicExponent::_3.0.into()); // The absolute minimum. + assert!(value <= PublicExponent::MAX.0.into()); + } + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/rsa/public_key_components.rs temporalio-1.3.0/vendor/ring/src/rsa/public_key_components.rs --- temporalio-1.3.0/vendor/ring/src/rsa/public_key_components.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/rsa/public_key_components.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,52 @@ +// Copyright 2015-2021 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +use super::PublicKey; +use core::iter::FromIterator; + +/// RSA public key components. +/// +/// `B` must implement `AsRef<[u8]>` like `&[u8]` or `Vec`. +#[derive(Clone, Copy)] +pub struct PublicKeyComponents { + /// The public modulus, encoded in big-endian bytes without leading zeros. + pub n: B, + + /// The public exponent, encoded in big-endian bytes without leading zeros. + pub e: B, +} + +impl core::fmt::Debug for PublicKeyComponents +where + B: core::fmt::Debug, +{ + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> Result<(), core::fmt::Error> { + f.debug_struct("PublicKeyComponents") + .field("n", &self.n) + .field("e", &self.e) + .finish() + } +} + +impl From<&PublicKey> for PublicKeyComponents +where + B: FromIterator, +{ + fn from(public_key: &PublicKey) -> Self { + Self { + n: public_key.n().be_bytes().collect(), + e: public_key.e().be_bytes().collect(), + } + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/rsa/public_key.rs temporalio-1.3.0/vendor/ring/src/rsa/public_key.rs --- temporalio-1.3.0/vendor/ring/src/rsa/public_key.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/rsa/public_key.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,175 @@ +// Copyright 2015-2021 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +use super::{PublicExponent, PublicModulus, N, PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN}; +use crate::{ + arithmetic::bigint, + bits, cpu, error, + io::{self, der, der_writer}, + limb::LIMB_BYTES, +}; +use alloc::boxed::Box; + +/// An RSA Public Key. +#[derive(Clone)] +pub struct PublicKey { + n: PublicModulus, + e: PublicExponent, + serialized: Box<[u8]>, +} + +derive_debug_self_as_ref_hex_bytes!(PublicKey); + +impl PublicKey { + pub(super) fn from_modulus_and_exponent( + n: untrusted::Input, + e: untrusted::Input, + n_min_bits: bits::BitLength, + n_max_bits: bits::BitLength, + e_min_value: PublicExponent, + cpu_features: cpu::Features, + ) -> Result { + let n_bytes = n; + let e_bytes = e; + + // This is an incomplete implementation of NIST SP800-56Br1 Section + // 6.4.2.2, "Partial Public-Key Validation for RSA." That spec defers + // to NIST SP800-89 Section 5.3.3, "(Explicit) Partial Public Key + // Validation for RSA," "with the caveat that the length of the modulus + // shall be a length that is specified in this Recommendation." In + // SP800-89, two different sets of steps are given, one set numbered, + // and one set lettered. TODO: Document this in the end-user + // documentation for RSA keys. + + let n = PublicModulus::from_be_bytes(n, n_min_bits..=n_max_bits, cpu_features)?; + + let e = PublicExponent::from_be_bytes(e, e_min_value)?; + + // If `n` is less than `e` then somebody has probably accidentally swapped + // them. The largest acceptable `e` is smaller than the smallest acceptable + // `n`, so no additional checks need to be done. + + // XXX: Steps 4 & 5 / Steps d, e, & f are not implemented. This is also the + // case in most other commonly-used crypto libraries. + + // TODO: Remove this re-parsing, and stop allocating this here. + // Instead we should serialize on demand without allocation, from + // `Modulus::be_bytes()` and `Exponent::be_bytes()`. + let n_bytes = io::Positive::from_be_bytes(n_bytes) + .map_err(|_: error::Unspecified| error::KeyRejected::unexpected_error())?; + let e_bytes = io::Positive::from_be_bytes(e_bytes) + .map_err(|_: error::Unspecified| error::KeyRejected::unexpected_error())?; + let serialized = der_writer::write_all(der::Tag::Sequence, &|output| { + der_writer::write_positive_integer(output, &n_bytes); + der_writer::write_positive_integer(output, &e_bytes); + }); + + Ok(Self { n, e, serialized }) + } + + /// The length, in bytes, of the public modulus. + /// + /// The modulus length is rounded up to a whole number of bytes if its + /// bit length isn't a multiple of 8. + pub fn modulus_len(&self) -> usize { + self.n().len_bits().as_usize_bytes_rounded_up() + } + + /// The public modulus. + #[inline] + pub(super) fn n(&self) -> &PublicModulus { + &self.n + } + + /// The public exponent. + #[inline] + pub(super) fn e(&self) -> PublicExponent { + self.e + } + + /// Calculates base**e (mod n), filling the first part of `out_buffer` with + /// the result. + /// + /// This is constant-time with respect to the value in `base` (only). + /// + /// The result will be a slice of the encoded bytes of the result within + /// `out_buffer`, if successful. + pub(super) fn exponentiate<'out>( + &self, + base: untrusted::Input, + out_buffer: &'out mut [u8; PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN], + ) -> Result<&'out [u8], error::Unspecified> { + let n = &self.n.value(); + + // The encoded value of the base must be the same length as the modulus, + // in bytes. + if base.len() != self.n.len_bits().as_usize_bytes_rounded_up() { + return Err(error::Unspecified); + } + + // RFC 8017 Section 5.2.2: RSAVP1. + + // Step 1. + let s = bigint::Elem::from_be_bytes_padded(base, n)?; + if s.is_zero() { + return Err(error::Unspecified); + } + + // Step 2. + let m = self.exponentiate_elem(s); + + // Step 3. + Ok(fill_be_bytes_n(m, self.n.len_bits(), out_buffer)) + } + + /// Calculates base**e (mod n). + /// + /// This is constant-time with respect to `base` only. + pub(super) fn exponentiate_elem(&self, base: bigint::Elem) -> bigint::Elem { + let n = self.n.value(); + + let base = bigint::elem_mul(n.oneRR().as_ref(), base, n); + // During RSA public key operations the exponent is almost always either + // 65537 (0b10000000000000001) or 3 (0b11), both of which have a Hamming + // weight of 2. The maximum bit length and maximum Hamming weight of the + // exponent is bounded by the value of `PublicExponent::MAX`. + bigint::elem_exp_vartime(base, self.e.value(), &n.as_partial()).into_unencoded(n) + } +} + +// XXX: Refactor `signature::KeyPair` to get rid of this. +impl AsRef<[u8]> for PublicKey { + fn as_ref(&self) -> &[u8] { + &self.serialized + } +} + +/// Returns the big-endian representation of `elem` that is +/// the same length as the minimal-length big-endian representation of +/// the modulus `n`. +/// +/// `n_bits` must be the bit length of the public modulus `n`. +fn fill_be_bytes_n( + elem: bigint::Elem, + n_bits: bits::BitLength, + out: &mut [u8; PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN], +) -> &[u8] { + let n_bytes = n_bits.as_usize_bytes_rounded_up(); + let n_bytes_padded = ((n_bytes + (LIMB_BYTES - 1)) / LIMB_BYTES) * LIMB_BYTES; + let out = &mut out[..n_bytes_padded]; + elem.fill_be_bytes(out); + let (padding, out) = out.split_at(n_bytes_padded - n_bytes); + assert!(padding.iter().all(|&b| b == 0)); + out +} diff -Nru temporalio-1.3.0/vendor/ring/src/rsa/public_modulus.rs temporalio-1.3.0/vendor/ring/src/rsa/public_modulus.rs --- temporalio-1.3.0/vendor/ring/src/rsa/public_modulus.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/rsa/public_modulus.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,69 @@ +use crate::{arithmetic::bigint, bits, cpu, error, rsa::N}; +use core::ops::RangeInclusive; + +/// The modulus (n) of an RSA public key. +#[derive(Clone)] +pub struct PublicModulus { + value: bigint::Modulus, + bits: bits::BitLength, +} + +/* +impl core::fmt::Debug for PublicModulus { + fn fmt(&self, fmt: &mut ::core::fmt::Formatter) -> Result<(), ::core::fmt::Error> { + self.value.fmt(fmt) + } +}*/ + +impl PublicModulus { + pub(super) fn from_be_bytes( + n: untrusted::Input, + allowed_bit_lengths: RangeInclusive, + cpu_features: cpu::Features, + ) -> Result { + // See `PublicKey::from_modulus_and_exponent` for background on the step + // numbering. + + let min_bits = *allowed_bit_lengths.start(); + let max_bits = *allowed_bit_lengths.end(); + + // `pkcs1_encode` depends on this not being small. Otherwise, + // `pkcs1_encode` would generate padding that is invalid (too few 0xFF + // bytes) for very small keys. + const MIN_BITS: bits::BitLength = bits::BitLength::from_usize_bits(1024); + + // Step 3 / Step c for `n` (out of order). + let (value, bits) = bigint::Modulus::from_be_bytes_with_bit_length(n, cpu_features)?; + + // Step 1 / Step a. XXX: SP800-56Br1 and SP800-89 require the length of + // the public modulus to be exactly 2048 or 3072 bits, but we are more + // flexible to be compatible with other commonly-used crypto libraries. + assert!(min_bits >= MIN_BITS); + let bits_rounded_up = + bits::BitLength::from_usize_bytes(bits.as_usize_bytes_rounded_up()).unwrap(); // TODO: safe? + if bits_rounded_up < min_bits { + return Err(error::KeyRejected::too_small()); + } + if bits > max_bits { + return Err(error::KeyRejected::too_large()); + } + + Ok(Self { value, bits }) + } + + /// The big-endian encoding of the modulus. + /// + /// There are no leading zeros. + pub fn be_bytes(&self) -> impl ExactSizeIterator + Clone + '_ { + self.value.be_bytes() + } + + /// The length of the modulus in bits. + pub fn len_bits(&self) -> bits::BitLength { + self.bits + } + + pub(super) fn value(&self) -> &bigint::Modulus { + &self.value + } +} diff -Nru temporalio-1.3.0/vendor/ring/src/rsa/rsa_pss_padding_tests.txt temporalio-1.3.0/vendor/ring/src/rsa/rsa_pss_padding_tests.txt --- temporalio-1.3.0/vendor/ring/src/rsa/rsa_pss_padding_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/rsa/rsa_pss_padding_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,745 +0,0 @@ -# Test vectors for RSA-PSS padding verification -# Including multiple modulus lengths and failing verification cases. -# -# Digest = SHAAlg. -# Len gives the public modulus length in bits. -# -# The salt is the fixed byte string 0xf0 repeated to be the same length as the -# hash digest. -# - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86b2018199c2557363663979c3c92aee2f83567d393efd19ce1a51e5c62f580aa5d330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 2048 -Result = P - -Digest = SHA384 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 137a60205de7c9f40c29d65a035bd96da8ec95a909f129a8f7c0be2b3ecf539f62667e51db71b8685da2cb3a727651e8fa399715262c9a4ab88bff1d8514ee299a196c75a09fbfd6b069bbc5c2d1fce2107e68fa4605086160b803a13d221d47e68c8dfd94e6cf54175588c363f5ba311a77c056c45d90fc9a60ba36ac8f07e319baf84003d2af51d313d6209aaa5ae8a3308cacaa35577a01742ea42e5cdcd65de51efc2d1947879c42e9a3dbf5986063c821f99e5ba6daead8d6e0c50f0754fbc5122978334914d12303ab1313a9c29889474c5b1dea85c5ec55cc2d5ad5d6776b2d234b96e2e80ed049c3cfc645967f5d5efb1d5c707585e8fa8bbb5653bc -Len = 2048 -Result = P - -Digest = SHA512 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 485255700ee4e6964ba0a867b650f5d3cac3380b59ec58c72a5d44156f7273f7ccf88edb48a3c7f6c07dfd03b9f8a907f0e7d98e38ee174edf9fe79159cddebafe1cbd586fdaf192d347d56867b3a3eb756ee3c51afbb9f4b1ccb00059abcfa51ef3facd58af14362db77c6c8bb387a5228d105388ff31b21c0b30d90e44949d4ddd6eebe14dc6dd94110e791abed1251eb798e7b559a7d37f9b3e47b83b1c44a9ecf9c591d6cfd21b5f3d9639174289c677b567a24c703f1757bee874c3405a2413f759483bf8b4d9956f463798028cfc5695d8cee89506eb5b4a61cd63cbb5b7738cfee0edd94be6ffa6f7c57f258f816015e9f20daeb061150e698596c3bc -Len = 2048 -Result = P - -Digest = SHA256 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0b5546c0e8bf9966ac52887133aa89150a5fe745492fe94790b6e8c06b5f091c147bf46a88b96b4e1ff39b6d8ddd999cc7271718763df7e885e53817d0d607f53aac52eec202d7183c04caa17f975c8eae3d78ac3da5c881b864ed438adaae827036756cd9df4f8fa24ef85aec221b35740c65e252880422ebf7ddf3e52b87346f8d8ed92f459fb76e866e8bf631a5b7e6d86968e5f7f64d499db7d0143ad40770c158039a3ed1205ba7ce959e837a4c23249cfec9ec56f02602c6d98cb844514920b1123c69f35cc6fda327b632218e575eafff76b23cb0b7e5e3a1b6ac6b84d00ae842b10f54bcb018216001f446f680e7167b3553706c1641d9b8ef5253bc -Len = 2048 -Result = P - -Digest = SHA384 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 65b562e2aa341868b4aa78ff86c220330e7159bb0871f8939aed509b4e5bcb2c4ecb2cbf4c85f8a11cb3f1c9efa748225f0d944c983dd86e6faadcf3cf7cff781653300d3f826cb1dfde256c056fff1772dbbe0715c2c85615a47d07a944449f4cad63dc06cf1b0a0ed799bdccd93078888e39beacde047625fd9cfe74c2098c701ff5e6436d2d845883cb8cf8aa134a57023226bbfccbe078e356eac19b34204ef123291bc8cdd39177be702e5fa6ad3f759155cee55dc6fbdc10472ffe5d10d619a15ab22f369c49621e5966429f9f6fc1a02d20dab5c900706608a19028d4a283939d2d16a495ae184bda4fdb488229e0f64334c15daf197dbc6dd213a0bc -Len = 2048 -Result = P - -Digest = SHA512 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 563a1aafa96215f6ff698694f59fe97523399f214683f450f3024e6bb2523c7407ccd7024284522b957dc42aff3ef2a5738daaa88b38092880fc42b98ecdd3e09677db0c189c105f0777981d7620c0fb014c57a3e080cb5afc9ad4c0e47a0e46157ef96b01453a9aa7c99ef80976d425ccafcce990425969a30b5ce55b3fe3eafa595c1a7b272a9c427e73a4a32d392d6384bf33d4137d3a95c6199c692e66af77d56fe6411728c1e47ef2c70610305a1258807f6053d7b06259dba586ea40a6320af4d65c4ab46dd1277a6995eb127f0aaa207dc3ee0d4c65d1224ac96da10d15ba220d096e8cc25c5f0ae0886dd76e0f3d08efb9c5fc0190d81f12261c5bbc -Len = 2048 -Result = P - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0023e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86b2018199c2557363663979c3c92aee2f83567d393efd19ce1a51e5c62f580aa5d330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 2049 -Result = P - -Digest = SHA384 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 00937a60205de7c9f40c29d65a035bd96da8ec95a909f129a8f7c0be2b3ecf539f62667e51db71b8685da2cb3a727651e8fa399715262c9a4ab88bff1d8514ee299a196c75a09fbfd6b069bbc5c2d1fce2107e68fa4605086160b803a13d221d47e68c8dfd94e6cf54175588c363f5ba311a77c056c45d90fc9a60ba36ac8f07e319baf84003d2af51d313d6209aaa5ae8a3308cacaa35577a01742ea42e5cdcd65de51efc2d1947879c42e9a3dbf5986063c821f99e5ba6daead8d6e0c50f0754fbc5122978334914d12303ab1313a9c29889474c5b1dea85c5ec55cc2d5ad5d6776b2d234b96e2e80ed049c3cfc645967f5d5efb1d5c707585e8fa8bbb5653bc -Len = 2049 -Result = P - -Digest = SHA512 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 00485255700ee4e6964ba0a867b650f5d3cac3380b59ec58c72a5d44156f7273f7ccf88edb48a3c7f6c07dfd03b9f8a907f0e7d98e38ee174edf9fe79159cddebafe1cbd586fdaf192d347d56867b3a3eb756ee3c51afbb9f4b1ccb00059abcfa51ef3facd58af14362db77c6c8bb387a5228d105388ff31b21c0b30d90e44949d4ddd6eebe14dc6dd94110e791abed1251eb798e7b559a7d37f9b3e47b83b1c44a9ecf9c591d6cfd21b5f3d9639174289c677b567a24c703f1757bee874c3405a2413f759483bf8b4d9956f463798028cfc5695d8cee89506eb5b4a61cd63cbb5b7738cfee0edd94be6ffa6f7c57f258f816015e9f20daeb061150e698596c3bc -Len = 2049 -Result = P - -Digest = SHA256 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 008b5546c0e8bf9966ac52887133aa89150a5fe745492fe94790b6e8c06b5f091c147bf46a88b96b4e1ff39b6d8ddd999cc7271718763df7e885e53817d0d607f53aac52eec202d7183c04caa17f975c8eae3d78ac3da5c881b864ed438adaae827036756cd9df4f8fa24ef85aec221b35740c65e252880422ebf7ddf3e52b87346f8d8ed92f459fb76e866e8bf631a5b7e6d86968e5f7f64d499db7d0143ad40770c158039a3ed1205ba7ce959e837a4c23249cfec9ec56f02602c6d98cb844514920b1123c69f35cc6fda327b632218e575eafff76b23cb0b7e5e3a1b6ac6b84d00ae842b10f54bcb018216001f446f680e7167b3553706c1641d9b8ef5253bc -Len = 2049 -Result = P - -Digest = SHA384 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 00e5b562e2aa341868b4aa78ff86c220330e7159bb0871f8939aed509b4e5bcb2c4ecb2cbf4c85f8a11cb3f1c9efa748225f0d944c983dd86e6faadcf3cf7cff781653300d3f826cb1dfde256c056fff1772dbbe0715c2c85615a47d07a944449f4cad63dc06cf1b0a0ed799bdccd93078888e39beacde047625fd9cfe74c2098c701ff5e6436d2d845883cb8cf8aa134a57023226bbfccbe078e356eac19b34204ef123291bc8cdd39177be702e5fa6ad3f759155cee55dc6fbdc10472ffe5d10d619a15ab22f369c49621e5966429f9f6fc1a02d20dab5c900706608a19028d4a283939d2d16a495ae184bda4fdb488229e0f64334c15daf197dbc6dd213a0bc -Len = 2049 -Result = P - -Digest = SHA512 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 00d63a1aafa96215f6ff698694f59fe97523399f214683f450f3024e6bb2523c7407ccd7024284522b957dc42aff3ef2a5738daaa88b38092880fc42b98ecdd3e09677db0c189c105f0777981d7620c0fb014c57a3e080cb5afc9ad4c0e47a0e46157ef96b01453a9aa7c99ef80976d425ccafcce990425969a30b5ce55b3fe3eafa595c1a7b272a9c427e73a4a32d392d6384bf33d4137d3a95c6199c692e66af77d56fe6411728c1e47ef2c70610305a1258807f6053d7b06259dba586ea40a6320af4d65c4ab46dd1277a6995eb127f0aaa207dc3ee0d4c65d1224ac96da10d15ba220d096e8cc25c5f0ae0886dd76e0f3d08efb9c5fc0190d81f12261c5bbc -Len = 2049 -Result = P - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86ad118199c2557363663979c3c92aee2f83567d393efd19ce1a51e5c62f580aa5d73330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 2055 -Result = P - -Digest = SHA384 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 137a60205de7c9f40c29d65a035bd96da8ec95a909f129a8f7c0be2b3ecf539f62667e51db71b8685da2cb3a727651e8fa399715262c9a4ab88bff1d8514ee299a196c75a09fbfd6b069bbc5c2d1fce2107e68fa4605086160b803a13d221d47e68c8dfd94e6cf54175588c363f5ba311a77c056c45d90fc9a60ba36ac8f07e319baf84003d2af51d313d6209aaa5ae8a3308cacaa35577a01742ea42e5cdd275de51efc2d1947879c42e9a3dbf5986063c821f99e5ba6daead8d6e0c50f0754fbc5122978334914d12303ab1313a923c29889474c5b1dea85c5ec55cc2d5ad5d6776b2d234b96e2e80ed049c3cfc645967f5d5efb1d5c707585e8fa8bbb5653bc -Len = 2055 -Result = P - -Digest = SHA512 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 085255700ee4e6964ba0a867b650f5d3cac3380b59ec58c72a5d44156f7273f7ccf88edb48a3c7f6c07dfd03b9f8a907f0e7d98e38ee174edf9fe79159cddebafe1cbd586fdaf192d347d56867b3a3eb756ee3c51afbb9f4b1ccb00059abcfa51ef3facd58af14362db77c6c8bb387a5228d105388ff31b21c0b30d90e44956c4ddd6eebe14dc6dd94110e791abed1251eb798e7b559a7d37f9b3e47b83b1c44a9ecf9c591d6cfd21b5f3d9639174289c677b567a24c703f1757bee874c3408d5a2413f759483bf8b4d9956f463798028cfc5695d8cee89506eb5b4a61cd63cbb5b7738cfee0edd94be6ffa6f7c57f258f816015e9f20daeb061150e698596c3bc -Len = 2055 -Result = P - -Digest = SHA256 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0b5546c0e8bf9966ac52887133aa89150a5fe745492fe94790b6e8c06b5f091c147bf46a88b96b4e1ff39b6d8ddd999cc7271718763df7e885e53817d0d607f53aac52eec202d7183c04caa17f975c8eae3d78ac3da5c881b864ed438adaae827036756cd9df4f8fa24ef85aec221b35740c65e252880422ebf7ddf3e52b87346f8d8ed92f459fb76e866e8bf631a5b7e6d86968e5f7f64d499db7d0143ad40770c158039a3ed1205ba7ce959e837a4c23249cfec9ec56f02602c6d98cb845a04920b1123c69f35cc6fda327b632218e575eafff76b23cb0b7e5e3a1b6ac6b0e84d00ae842b10f54bcb018216001f446f680e7167b3553706c1641d9b8ef5253bc -Len = 2055 -Result = P - -Digest = SHA384 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 25b562e2aa341868b4aa78ff86c220330e7159bb0871f8939aed509b4e5bcb2c4ecb2cbf4c85f8a11cb3f1c9efa748225f0d944c983dd86e6faadcf3cf7cff781653300d3f826cb1dfde256c056fff1772dbbe0715c2c85615a47d07a944449f4cad63dc06cf1b0a0ed799bdccd93078888e39beacde047625fd9cfe74c2098c701ff5e6436d2d845883cb8cf8aa134a57023226bbfccbe078e356eac19b35d14ef123291bc8cdd39177be702e5fa6ad3f759155cee55dc6fbdc10472ffe5d10d619a15ab22f369c49621e5966429fa69f6fc1a02d20dab5c900706608a19028d4a283939d2d16a495ae184bda4fdb488229e0f64334c15daf197dbc6dd213a0bc -Len = 2055 -Result = P - -Digest = SHA512 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 163a1aafa96215f6ff698694f59fe97523399f214683f450f3024e6bb2523c7407ccd7024284522b957dc42aff3ef2a5738daaa88b38092880fc42b98ecdd3e09677db0c189c105f0777981d7620c0fb014c57a3e080cb5afc9ad4c0e47a0e46157ef96b01453a9aa7c99ef80976d425ccafcce990425969a30b5ce55b3fe21bfa595c1a7b272a9c427e73a4a32d392d6384bf33d4137d3a95c6199c692e66af77d56fe6411728c1e47ef2c70610305a1258807f6053d7b06259dba586ea4051a6320af4d65c4ab46dd1277a6995eb127f0aaa207dc3ee0d4c65d1224ac96da10d15ba220d096e8cc25c5f0ae0886dd76e0f3d08efb9c5fc0190d81f12261c5bbc -Len = 2055 -Result = P - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86ad118199c2557363663979c3c92aee2f83567d393efd19ce1a51e5c62f580aa5d73330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 2056 -Result = P - -Digest = SHA384 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 137a60205de7c9f40c29d65a035bd96da8ec95a909f129a8f7c0be2b3ecf539f62667e51db71b8685da2cb3a727651e8fa399715262c9a4ab88bff1d8514ee299a196c75a09fbfd6b069bbc5c2d1fce2107e68fa4605086160b803a13d221d47e68c8dfd94e6cf54175588c363f5ba311a77c056c45d90fc9a60ba36ac8f07e319baf84003d2af51d313d6209aaa5ae8a3308cacaa35577a01742ea42e5cdd275de51efc2d1947879c42e9a3dbf5986063c821f99e5ba6daead8d6e0c50f0754fbc5122978334914d12303ab1313a923c29889474c5b1dea85c5ec55cc2d5ad5d6776b2d234b96e2e80ed049c3cfc645967f5d5efb1d5c707585e8fa8bbb5653bc -Len = 2056 -Result = P - -Digest = SHA512 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 485255700ee4e6964ba0a867b650f5d3cac3380b59ec58c72a5d44156f7273f7ccf88edb48a3c7f6c07dfd03b9f8a907f0e7d98e38ee174edf9fe79159cddebafe1cbd586fdaf192d347d56867b3a3eb756ee3c51afbb9f4b1ccb00059abcfa51ef3facd58af14362db77c6c8bb387a5228d105388ff31b21c0b30d90e44956c4ddd6eebe14dc6dd94110e791abed1251eb798e7b559a7d37f9b3e47b83b1c44a9ecf9c591d6cfd21b5f3d9639174289c677b567a24c703f1757bee874c3408d5a2413f759483bf8b4d9956f463798028cfc5695d8cee89506eb5b4a61cd63cbb5b7738cfee0edd94be6ffa6f7c57f258f816015e9f20daeb061150e698596c3bc -Len = 2056 -Result = P - -Digest = SHA256 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0b5546c0e8bf9966ac52887133aa89150a5fe745492fe94790b6e8c06b5f091c147bf46a88b96b4e1ff39b6d8ddd999cc7271718763df7e885e53817d0d607f53aac52eec202d7183c04caa17f975c8eae3d78ac3da5c881b864ed438adaae827036756cd9df4f8fa24ef85aec221b35740c65e252880422ebf7ddf3e52b87346f8d8ed92f459fb76e866e8bf631a5b7e6d86968e5f7f64d499db7d0143ad40770c158039a3ed1205ba7ce959e837a4c23249cfec9ec56f02602c6d98cb845a04920b1123c69f35cc6fda327b632218e575eafff76b23cb0b7e5e3a1b6ac6b0e84d00ae842b10f54bcb018216001f446f680e7167b3553706c1641d9b8ef5253bc -Len = 2056 -Result = P - -Digest = SHA384 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 65b562e2aa341868b4aa78ff86c220330e7159bb0871f8939aed509b4e5bcb2c4ecb2cbf4c85f8a11cb3f1c9efa748225f0d944c983dd86e6faadcf3cf7cff781653300d3f826cb1dfde256c056fff1772dbbe0715c2c85615a47d07a944449f4cad63dc06cf1b0a0ed799bdccd93078888e39beacde047625fd9cfe74c2098c701ff5e6436d2d845883cb8cf8aa134a57023226bbfccbe078e356eac19b35d14ef123291bc8cdd39177be702e5fa6ad3f759155cee55dc6fbdc10472ffe5d10d619a15ab22f369c49621e5966429fa69f6fc1a02d20dab5c900706608a19028d4a283939d2d16a495ae184bda4fdb488229e0f64334c15daf197dbc6dd213a0bc -Len = 2056 -Result = P - -Digest = SHA512 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 563a1aafa96215f6ff698694f59fe97523399f214683f450f3024e6bb2523c7407ccd7024284522b957dc42aff3ef2a5738daaa88b38092880fc42b98ecdd3e09677db0c189c105f0777981d7620c0fb014c57a3e080cb5afc9ad4c0e47a0e46157ef96b01453a9aa7c99ef80976d425ccafcce990425969a30b5ce55b3fe21bfa595c1a7b272a9c427e73a4a32d392d6384bf33d4137d3a95c6199c692e66af77d56fe6411728c1e47ef2c70610305a1258807f6053d7b06259dba586ea4051a6320af4d65c4ab46dd1277a6995eb127f0aaa207dc3ee0d4c65d1224ac96da10d15ba220d096e8cc25c5f0ae0886dd76e0f3d08efb9c5fc0190d81f12261c5bbc -Len = 2056 -Result = P - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0023e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86ad118199c2557363663979c3c92aee2f83567d393efd19ce1a51e5c62f580aa5d73330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 2057 -Result = P - -Digest = SHA384 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 00937a60205de7c9f40c29d65a035bd96da8ec95a909f129a8f7c0be2b3ecf539f62667e51db71b8685da2cb3a727651e8fa399715262c9a4ab88bff1d8514ee299a196c75a09fbfd6b069bbc5c2d1fce2107e68fa4605086160b803a13d221d47e68c8dfd94e6cf54175588c363f5ba311a77c056c45d90fc9a60ba36ac8f07e319baf84003d2af51d313d6209aaa5ae8a3308cacaa35577a01742ea42e5cdd275de51efc2d1947879c42e9a3dbf5986063c821f99e5ba6daead8d6e0c50f0754fbc5122978334914d12303ab1313a923c29889474c5b1dea85c5ec55cc2d5ad5d6776b2d234b96e2e80ed049c3cfc645967f5d5efb1d5c707585e8fa8bbb5653bc -Len = 2057 -Result = P - -Digest = SHA512 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 00485255700ee4e6964ba0a867b650f5d3cac3380b59ec58c72a5d44156f7273f7ccf88edb48a3c7f6c07dfd03b9f8a907f0e7d98e38ee174edf9fe79159cddebafe1cbd586fdaf192d347d56867b3a3eb756ee3c51afbb9f4b1ccb00059abcfa51ef3facd58af14362db77c6c8bb387a5228d105388ff31b21c0b30d90e44956c4ddd6eebe14dc6dd94110e791abed1251eb798e7b559a7d37f9b3e47b83b1c44a9ecf9c591d6cfd21b5f3d9639174289c677b567a24c703f1757bee874c3408d5a2413f759483bf8b4d9956f463798028cfc5695d8cee89506eb5b4a61cd63cbb5b7738cfee0edd94be6ffa6f7c57f258f816015e9f20daeb061150e698596c3bc -Len = 2057 -Result = P - -Digest = SHA256 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 008b5546c0e8bf9966ac52887133aa89150a5fe745492fe94790b6e8c06b5f091c147bf46a88b96b4e1ff39b6d8ddd999cc7271718763df7e885e53817d0d607f53aac52eec202d7183c04caa17f975c8eae3d78ac3da5c881b864ed438adaae827036756cd9df4f8fa24ef85aec221b35740c65e252880422ebf7ddf3e52b87346f8d8ed92f459fb76e866e8bf631a5b7e6d86968e5f7f64d499db7d0143ad40770c158039a3ed1205ba7ce959e837a4c23249cfec9ec56f02602c6d98cb845a04920b1123c69f35cc6fda327b632218e575eafff76b23cb0b7e5e3a1b6ac6b0e84d00ae842b10f54bcb018216001f446f680e7167b3553706c1641d9b8ef5253bc -Len = 2057 -Result = P - -Digest = SHA384 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 00e5b562e2aa341868b4aa78ff86c220330e7159bb0871f8939aed509b4e5bcb2c4ecb2cbf4c85f8a11cb3f1c9efa748225f0d944c983dd86e6faadcf3cf7cff781653300d3f826cb1dfde256c056fff1772dbbe0715c2c85615a47d07a944449f4cad63dc06cf1b0a0ed799bdccd93078888e39beacde047625fd9cfe74c2098c701ff5e6436d2d845883cb8cf8aa134a57023226bbfccbe078e356eac19b35d14ef123291bc8cdd39177be702e5fa6ad3f759155cee55dc6fbdc10472ffe5d10d619a15ab22f369c49621e5966429fa69f6fc1a02d20dab5c900706608a19028d4a283939d2d16a495ae184bda4fdb488229e0f64334c15daf197dbc6dd213a0bc -Len = 2057 -Result = P - -Digest = SHA512 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 00d63a1aafa96215f6ff698694f59fe97523399f214683f450f3024e6bb2523c7407ccd7024284522b957dc42aff3ef2a5738daaa88b38092880fc42b98ecdd3e09677db0c189c105f0777981d7620c0fb014c57a3e080cb5afc9ad4c0e47a0e46157ef96b01453a9aa7c99ef80976d425ccafcce990425969a30b5ce55b3fe21bfa595c1a7b272a9c427e73a4a32d392d6384bf33d4137d3a95c6199c692e66af77d56fe6411728c1e47ef2c70610305a1258807f6053d7b06259dba586ea4051a6320af4d65c4ab46dd1277a6995eb127f0aaa207dc3ee0d4c65d1224ac96da10d15ba220d096e8cc25c5f0ae0886dd76e0f3d08efb9c5fc0190d81f12261c5bbc -Len = 2057 -Result = P - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86ad0e8e96cd5a7c6c693676ccc625e1208c59723631f216c1155eeac9205705aad83b01a11926d8ca477d047449d3fa2068660cdc61bef02439aea352bd32da7d2e5cf2ddaccdcd6a6eb7492f3b5af9a0bdf93427ef99218bef4d72588f943bd9b8f2a404ba061feb1d48c8430b3f2fe5de5c4fe9af5a48359bd91fa5d93a4d83d96b27177769f91e1d1cb1959790e607f9d30ee44339bc4da863eb6fe8b7457b533c5e22e0bc4855a20229c7ecd193e917cb695b26a84d721f4707dac53e9485234ebeed7bb505f0fa1393aff820462bdd1e26c14c541e551ab6ffb9d7b7e280e33f7b2ec30eb14f4d635a57fb568bf9c420f197673a5cb4d8b15f9e8c743af983232796e8de52887a9f5f194ba589332fbc9de824d33c05de9d1b71fe7e5e628330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 4095 -Result = P - -Digest = SHA384 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 137a60205de7c9f40c29d65a035bd96da8ec95a909f129a8f7c0be2b3ecf539f62667e51db71b8685da2cb3a727651e8fa399715262c9a4ab88bff1d8514ee299a196c75a09fbfd6b069bbc5c2d1fce2107e68fa4605086160b803a13d221d47e68c8dfd94e6cf54175588c363f5ba311a77c056c45d90fc9a60ba36ac8f07e319baf84003d2af51d313d6209aaa5ae8a3308cacaa35577a01742ea42e5cdd26ad15ee0cdde9b7776cb219532b0568909338d1096eab562a1a28261035fff7a40b35e2d988c3b9e421d3f35be3e359d325a25ce856a9077fa884fe96a287ce32eb28f5ce4a854f00575fad8fb53b5b8e405fbb3273d14eeda5141971d34d19cd50620a4ac5041c0622e43224e49df105dec2a4bd93536dfc470b363f0464ffda82ca5dfb7e2620fe210ccbc42344b85d937c6937f40ad69a5db1dc2b5b4d930cb8036d0b95644e792661f872cbe47b65f62c1fcd884c2387938fe303d3b7f1a20e989b5ed979398778924f70439df29482182478048afbb1be1da0e5961ecc38c1e9037b05bee4364877e2d090107abf8a9c46603e16c7013a370376c05daedf3dfa80ae9c6d7916e1029d7468f6c363d9a1b3dc7d01476894b4ea893df8d92b237289bcbf874608978c4ae30c680ac29889474c5b1dea85c5ec55cc2d5ad5d6776b2d234b96e2e80ed049c3cfc645967f5d5efb1d5c707585e8fa8bbb5653bc -Len = 4095 -Result = P - -Digest = SHA512 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 085255700ee4e6964ba0a867b650f5d3cac3380b59ec58c72a5d44156f7273f7ccf88edb48a3c7f6c07dfd03b9f8a907f0e7d98e38ee174edf9fe79159cddebafe1cbd586fdaf192d347d56867b3a3eb756ee3c51afbb9f4b1ccb00059abcfa51ef3facd58af14362db77c6c8bb387a5228d105388ff31b21c0b30d90e44956dbd2d9e1b11bd362d64e1fe89ea4e21d5ee47681745a957238f6bceb748cbecb4591c093561263f22ebafcd66c9e7b2793687459752bc80cfe7a74e188433b07d941689697fbdb5eb4850f5534315360fe5b439559a93f57e3a0cad473a3debcc92304b08112c9b6ef227206d5f14a7037fd417d1c37f600c9df6f0083de6db4070781e60d3dffd4eebefe15f1adcdc74610273296a4112e8b6a4305d7f88eb3029a27e7d96dcc9549c33b1de6ec8485c925065773a0eba301b892777c4a62a0390109153e86bb012234cf2510db791618756df830a49cfa2a27fae064df4d245430084111690f21ee89507fcad3de886c9a476e75d4c18b3913db58bbdb632e7c0f69724b77be966601e11b62be6b6a838eec417d62b131e15bf95a5c6976a917bf80e662f87a5b3775de4648598f678ef971d4e286b21406b2db5cdde48b35a2413f759483bf8b4d9956f463798028cfc5695d8cee89506eb5b4a61cd63cbb5b7738cfee0edd94be6ffa6f7c57f258f816015e9f20daeb061150e698596c3bc -Len = 4095 -Result = P - -Digest = SHA256 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0b5546c0e8bf9966ac52887133aa89150a5fe745492fe94790b6e8c06b5f091c147bf46a88b96b4e1ff39b6d8ddd999cc7271718763df7e885e53817d0d607f53aac52eec202d7183c04caa17f975c8eae3d78ac3da5c881b864ed438adaae827036756cd9df4f8fa24ef85aec221b35740c65e252880422ebf7ddf3e52b87346f8d8ed92f459fb76e866e8bf631a5b7e6d86968e5f7f64d499db7d0143ad40770c158039a3ed1205ba7ce959e837a4c23249cfec9ec56f02602c6d98cb845a1b9d041e2cc9903ac360d53d746c2d17ea7ae5f0f8642cc4047151351465c9bfe0770aa65f8ee2c3ebcd6fecd005cad15eaf6dc3a81a9d704fb5cfb13af6a848b276cdce43b5feb9c0d4b7e85f946f80ce625ba4fe885f13d1fc709df121143c3f17bf8a50845cc80d066989eaea92bd5735e753cfc9545d5bcb43f0391d4ae4569447927130efabe6e8455ed9533ebb8370a4439097dca51994c3c2ba8686e89570d9cb1f87680865371df21975b696cdc00541347008793dc641ae435b86150e5f6f06414e80f50d07cde583efb79c276d90b637935412f611552c4816c8fddf62f080e9edaba61d939c3b2d302a9e5db80f380ad73bf5c1866d8d7b25146464511ca13672bd3be2a95bf10fa736ce411cded82af15ba8f5340dc9098f7cf84d00ae842b10f54bcb018216001f446f680e7167b3553706c1641d9b8ef5253bc -Len = 4095 -Result = P - -Digest = SHA384 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 25b562e2aa341868b4aa78ff86c220330e7159bb0871f8939aed509b4e5bcb2c4ecb2cbf4c85f8a11cb3f1c9efa748225f0d944c983dd86e6faadcf3cf7cff781653300d3f826cb1dfde256c056fff1772dbbe0715c2c85615a47d07a944449f4cad63dc06cf1b0a0ed799bdccd93078888e39beacde047625fd9cfe74c2098c701ff5e6436d2d845883cb8cf8aa134a57023226bbfccbe078e356eac19b35d0be01d3d9eb383d2361874e80deaf565dcf8561a53e15ad360b2ce0b7df0eade026e951aa42dfc66cb992eea996b26f56d8a224970a4d1e42d925786d3b23215c7cc8f30377f4bec31491c865bb91760acdfb13cd500fa865741f58841fee3938203a766c72397e7ada29cc56b3f6aef82588ca993e0b6af48d2ac6274511b74e9cf06b89a8c73ca741602e7a0c6f9a6e47e87105108d55aff9afb70c14e6e74fa62ed51220fbf46be9a3101dfe1d64d4fea487e05be823fcfaeadad994f11b98b9c9b7390a96b356a32af6d4be2da0861b5b253942aa706000349e5bdead4a931ce48c99c588c9032b71963b9faf26a250483a14c10328a6a5b1ba24639ccc15e842250eb55cba18ed1a7cb5fd0f75e845434fa4c35c8c22b4a8afc1de1f70db96eca9d055b95a107934c7c1f361f19f6fc1a02d20dab5c900706608a19028d4a283939d2d16a495ae184bda4fdb488229e0f64334c15daf197dbc6dd213a0bc -Len = 4095 -Result = P - -Digest = SHA512 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 163a1aafa96215f6ff698694f59fe97523399f214683f450f3024e6bb2523c7407ccd7024284522b957dc42aff3ef2a5738daaa88b38092880fc42b98ecdd3e09677db0c189c105f0777981d7620c0fb014c57a3e080cb5afc9ad4c0e47a0e46157ef96b01453a9aa7c99ef80976d425ccafcce990425969a30b5ce55b3fe21a0aa9acea8bd7da6cb28e835453ddc9dd93744fc324e38dca6536e96c99de965f87259f16b1e7d831148e0237f6e0c0aae2a8708f90a3274092a92b55761ab0a12ee732ddfc2acb7d559b4a0d8d5f8426c9751f5545282b8fe8748b18144bbf6f3a9fb47b9642565736fbc616fb886c28f1089123278c082b7b78bce947bd5285b9f8f5787233dba8313554b8c79686f9817626c8c1a6d641996bbfb32e8d4c0e0a07c6979976a18f0534bf31a658fdc9bd2fa3018a22c3cfbc83640c53fccd833aaf6f08ca2834a9e5c7d56302671b88605734f34189d4612d30fe6d056c77f80eda3ca6976b9ce56d90aad4ae7aad112bb47472e6402bb4c915711e2a2d038c2d6ef94f2fc8fdc90b51aa413e3b0c1f7a8807072f0255fe94e3f0a9a7d7a8c5727d5a0c287df9ebdf184d51e726e4334925b3e7f119272bf7ef3cd3dceab1a6320af4d65c4ab46dd1277a6995eb127f0aaa207dc3ee0d4c65d1224ac96da10d15ba220d096e8cc25c5f0ae0886dd76e0f3d08efb9c5fc0190d81f12261c5bbc -Len = 4095 -Result = P - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86ad0e8e96cd5a7c6c693676ccc625e1208c59723631f216c1155eeac9205705aad83b01a11926d8ca477d047449d3fa2068660cdc61bef02439aea352bd32da7d2e5cf2ddaccdcd6a6eb7492f3b5af9a0bdf93427ef99218bef4d72588f943bd9b8f2a404ba061feb1d48c8430b3f2fe5de5c4fe9af5a48359bd91fa5d93a4d83d96b27177769f91e1d1cb1959790e607f9d30ee44339bc4da863eb6fe8b7457b533c5e22e0bc4855a20229c7ecd193e917cb695b26a84d721f4707dac53e9485234ebeed7bb505f0fa1393aff820462bdd1e26c14c541e551ab6ffb9d7b7e280e33f7b2ec30eb14f4d635a57fb568bf9c420f197673a5cb4d8b15f9e8c743af983232796e8de52887a9f5f194ba589332fbc9de824d33c05de9d1b71fe7e5e628330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 4096 -Result = P - -Digest = SHA384 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 137a60205de7c9f40c29d65a035bd96da8ec95a909f129a8f7c0be2b3ecf539f62667e51db71b8685da2cb3a727651e8fa399715262c9a4ab88bff1d8514ee299a196c75a09fbfd6b069bbc5c2d1fce2107e68fa4605086160b803a13d221d47e68c8dfd94e6cf54175588c363f5ba311a77c056c45d90fc9a60ba36ac8f07e319baf84003d2af51d313d6209aaa5ae8a3308cacaa35577a01742ea42e5cdd26ad15ee0cdde9b7776cb219532b0568909338d1096eab562a1a28261035fff7a40b35e2d988c3b9e421d3f35be3e359d325a25ce856a9077fa884fe96a287ce32eb28f5ce4a854f00575fad8fb53b5b8e405fbb3273d14eeda5141971d34d19cd50620a4ac5041c0622e43224e49df105dec2a4bd93536dfc470b363f0464ffda82ca5dfb7e2620fe210ccbc42344b85d937c6937f40ad69a5db1dc2b5b4d930cb8036d0b95644e792661f872cbe47b65f62c1fcd884c2387938fe303d3b7f1a20e989b5ed979398778924f70439df29482182478048afbb1be1da0e5961ecc38c1e9037b05bee4364877e2d090107abf8a9c46603e16c7013a370376c05daedf3dfa80ae9c6d7916e1029d7468f6c363d9a1b3dc7d01476894b4ea893df8d92b237289bcbf874608978c4ae30c680ac29889474c5b1dea85c5ec55cc2d5ad5d6776b2d234b96e2e80ed049c3cfc645967f5d5efb1d5c707585e8fa8bbb5653bc -Len = 4096 -Result = P - -Digest = SHA512 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 485255700ee4e6964ba0a867b650f5d3cac3380b59ec58c72a5d44156f7273f7ccf88edb48a3c7f6c07dfd03b9f8a907f0e7d98e38ee174edf9fe79159cddebafe1cbd586fdaf192d347d56867b3a3eb756ee3c51afbb9f4b1ccb00059abcfa51ef3facd58af14362db77c6c8bb387a5228d105388ff31b21c0b30d90e44956dbd2d9e1b11bd362d64e1fe89ea4e21d5ee47681745a957238f6bceb748cbecb4591c093561263f22ebafcd66c9e7b2793687459752bc80cfe7a74e188433b07d941689697fbdb5eb4850f5534315360fe5b439559a93f57e3a0cad473a3debcc92304b08112c9b6ef227206d5f14a7037fd417d1c37f600c9df6f0083de6db4070781e60d3dffd4eebefe15f1adcdc74610273296a4112e8b6a4305d7f88eb3029a27e7d96dcc9549c33b1de6ec8485c925065773a0eba301b892777c4a62a0390109153e86bb012234cf2510db791618756df830a49cfa2a27fae064df4d245430084111690f21ee89507fcad3de886c9a476e75d4c18b3913db58bbdb632e7c0f69724b77be966601e11b62be6b6a838eec417d62b131e15bf95a5c6976a917bf80e662f87a5b3775de4648598f678ef971d4e286b21406b2db5cdde48b35a2413f759483bf8b4d9956f463798028cfc5695d8cee89506eb5b4a61cd63cbb5b7738cfee0edd94be6ffa6f7c57f258f816015e9f20daeb061150e698596c3bc -Len = 4096 -Result = P - -Digest = SHA256 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0b5546c0e8bf9966ac52887133aa89150a5fe745492fe94790b6e8c06b5f091c147bf46a88b96b4e1ff39b6d8ddd999cc7271718763df7e885e53817d0d607f53aac52eec202d7183c04caa17f975c8eae3d78ac3da5c881b864ed438adaae827036756cd9df4f8fa24ef85aec221b35740c65e252880422ebf7ddf3e52b87346f8d8ed92f459fb76e866e8bf631a5b7e6d86968e5f7f64d499db7d0143ad40770c158039a3ed1205ba7ce959e837a4c23249cfec9ec56f02602c6d98cb845a1b9d041e2cc9903ac360d53d746c2d17ea7ae5f0f8642cc4047151351465c9bfe0770aa65f8ee2c3ebcd6fecd005cad15eaf6dc3a81a9d704fb5cfb13af6a848b276cdce43b5feb9c0d4b7e85f946f80ce625ba4fe885f13d1fc709df121143c3f17bf8a50845cc80d066989eaea92bd5735e753cfc9545d5bcb43f0391d4ae4569447927130efabe6e8455ed9533ebb8370a4439097dca51994c3c2ba8686e89570d9cb1f87680865371df21975b696cdc00541347008793dc641ae435b86150e5f6f06414e80f50d07cde583efb79c276d90b637935412f611552c4816c8fddf62f080e9edaba61d939c3b2d302a9e5db80f380ad73bf5c1866d8d7b25146464511ca13672bd3be2a95bf10fa736ce411cded82af15ba8f5340dc9098f7cf84d00ae842b10f54bcb018216001f446f680e7167b3553706c1641d9b8ef5253bc -Len = 4096 -Result = P - -Digest = SHA384 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 65b562e2aa341868b4aa78ff86c220330e7159bb0871f8939aed509b4e5bcb2c4ecb2cbf4c85f8a11cb3f1c9efa748225f0d944c983dd86e6faadcf3cf7cff781653300d3f826cb1dfde256c056fff1772dbbe0715c2c85615a47d07a944449f4cad63dc06cf1b0a0ed799bdccd93078888e39beacde047625fd9cfe74c2098c701ff5e6436d2d845883cb8cf8aa134a57023226bbfccbe078e356eac19b35d0be01d3d9eb383d2361874e80deaf565dcf8561a53e15ad360b2ce0b7df0eade026e951aa42dfc66cb992eea996b26f56d8a224970a4d1e42d925786d3b23215c7cc8f30377f4bec31491c865bb91760acdfb13cd500fa865741f58841fee3938203a766c72397e7ada29cc56b3f6aef82588ca993e0b6af48d2ac6274511b74e9cf06b89a8c73ca741602e7a0c6f9a6e47e87105108d55aff9afb70c14e6e74fa62ed51220fbf46be9a3101dfe1d64d4fea487e05be823fcfaeadad994f11b98b9c9b7390a96b356a32af6d4be2da0861b5b253942aa706000349e5bdead4a931ce48c99c588c9032b71963b9faf26a250483a14c10328a6a5b1ba24639ccc15e842250eb55cba18ed1a7cb5fd0f75e845434fa4c35c8c22b4a8afc1de1f70db96eca9d055b95a107934c7c1f361f19f6fc1a02d20dab5c900706608a19028d4a283939d2d16a495ae184bda4fdb488229e0f64334c15daf197dbc6dd213a0bc -Len = 4096 -Result = P - -Digest = SHA512 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 563a1aafa96215f6ff698694f59fe97523399f214683f450f3024e6bb2523c7407ccd7024284522b957dc42aff3ef2a5738daaa88b38092880fc42b98ecdd3e09677db0c189c105f0777981d7620c0fb014c57a3e080cb5afc9ad4c0e47a0e46157ef96b01453a9aa7c99ef80976d425ccafcce990425969a30b5ce55b3fe21a0aa9acea8bd7da6cb28e835453ddc9dd93744fc324e38dca6536e96c99de965f87259f16b1e7d831148e0237f6e0c0aae2a8708f90a3274092a92b55761ab0a12ee732ddfc2acb7d559b4a0d8d5f8426c9751f5545282b8fe8748b18144bbf6f3a9fb47b9642565736fbc616fb886c28f1089123278c082b7b78bce947bd5285b9f8f5787233dba8313554b8c79686f9817626c8c1a6d641996bbfb32e8d4c0e0a07c6979976a18f0534bf31a658fdc9bd2fa3018a22c3cfbc83640c53fccd833aaf6f08ca2834a9e5c7d56302671b88605734f34189d4612d30fe6d056c77f80eda3ca6976b9ce56d90aad4ae7aad112bb47472e6402bb4c915711e2a2d038c2d6ef94f2fc8fdc90b51aa413e3b0c1f7a8807072f0255fe94e3f0a9a7d7a8c5727d5a0c287df9ebdf184d51e726e4334925b3e7f119272bf7ef3cd3dceab1a6320af4d65c4ab46dd1277a6995eb127f0aaa207dc3ee0d4c65d1224ac96da10d15ba220d096e8cc25c5f0ae0886dd76e0f3d08efb9c5fc0190d81f12261c5bbc -Len = 4096 -Result = P - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0023e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86ad0e8e96cd5a7c6c693676ccc625e1208c59723631f216c1155eeac9205705aad83b01a11926d8ca477d047449d3fa2068660cdc61bef02439aea352bd32da7d2e5cf2ddaccdcd6a6eb7492f3b5af9a0bdf93427ef99218bef4d72588f943bd9b8f2a404ba061feb1d48c8430b3f2fe5de5c4fe9af5a48359bd91fa5d93a4d83d96b27177769f91e1d1cb1959790e607f9d30ee44339bc4da863eb6fe8b7457b533c5e22e0bc4855a20229c7ecd193e917cb695b26a84d721f4707dac53e9485234ebeed7bb505f0fa1393aff820462bdd1e26c14c541e551ab6ffb9d7b7e280e33f7b2ec30eb14f4d635a57fb568bf9c420f197673a5cb4d8b15f9e8c743af983232796e8de52887a9f5f194ba589332fbc9de824d33c05de9d1b71fe7e5e628330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 4097 -Result = P - -Digest = SHA384 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 00937a60205de7c9f40c29d65a035bd96da8ec95a909f129a8f7c0be2b3ecf539f62667e51db71b8685da2cb3a727651e8fa399715262c9a4ab88bff1d8514ee299a196c75a09fbfd6b069bbc5c2d1fce2107e68fa4605086160b803a13d221d47e68c8dfd94e6cf54175588c363f5ba311a77c056c45d90fc9a60ba36ac8f07e319baf84003d2af51d313d6209aaa5ae8a3308cacaa35577a01742ea42e5cdd26ad15ee0cdde9b7776cb219532b0568909338d1096eab562a1a28261035fff7a40b35e2d988c3b9e421d3f35be3e359d325a25ce856a9077fa884fe96a287ce32eb28f5ce4a854f00575fad8fb53b5b8e405fbb3273d14eeda5141971d34d19cd50620a4ac5041c0622e43224e49df105dec2a4bd93536dfc470b363f0464ffda82ca5dfb7e2620fe210ccbc42344b85d937c6937f40ad69a5db1dc2b5b4d930cb8036d0b95644e792661f872cbe47b65f62c1fcd884c2387938fe303d3b7f1a20e989b5ed979398778924f70439df29482182478048afbb1be1da0e5961ecc38c1e9037b05bee4364877e2d090107abf8a9c46603e16c7013a370376c05daedf3dfa80ae9c6d7916e1029d7468f6c363d9a1b3dc7d01476894b4ea893df8d92b237289bcbf874608978c4ae30c680ac29889474c5b1dea85c5ec55cc2d5ad5d6776b2d234b96e2e80ed049c3cfc645967f5d5efb1d5c707585e8fa8bbb5653bc -Len = 4097 -Result = P - -Digest = SHA512 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 00485255700ee4e6964ba0a867b650f5d3cac3380b59ec58c72a5d44156f7273f7ccf88edb48a3c7f6c07dfd03b9f8a907f0e7d98e38ee174edf9fe79159cddebafe1cbd586fdaf192d347d56867b3a3eb756ee3c51afbb9f4b1ccb00059abcfa51ef3facd58af14362db77c6c8bb387a5228d105388ff31b21c0b30d90e44956dbd2d9e1b11bd362d64e1fe89ea4e21d5ee47681745a957238f6bceb748cbecb4591c093561263f22ebafcd66c9e7b2793687459752bc80cfe7a74e188433b07d941689697fbdb5eb4850f5534315360fe5b439559a93f57e3a0cad473a3debcc92304b08112c9b6ef227206d5f14a7037fd417d1c37f600c9df6f0083de6db4070781e60d3dffd4eebefe15f1adcdc74610273296a4112e8b6a4305d7f88eb3029a27e7d96dcc9549c33b1de6ec8485c925065773a0eba301b892777c4a62a0390109153e86bb012234cf2510db791618756df830a49cfa2a27fae064df4d245430084111690f21ee89507fcad3de886c9a476e75d4c18b3913db58bbdb632e7c0f69724b77be966601e11b62be6b6a838eec417d62b131e15bf95a5c6976a917bf80e662f87a5b3775de4648598f678ef971d4e286b21406b2db5cdde48b35a2413f759483bf8b4d9956f463798028cfc5695d8cee89506eb5b4a61cd63cbb5b7738cfee0edd94be6ffa6f7c57f258f816015e9f20daeb061150e698596c3bc -Len = 4097 -Result = P - -Digest = SHA256 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 008b5546c0e8bf9966ac52887133aa89150a5fe745492fe94790b6e8c06b5f091c147bf46a88b96b4e1ff39b6d8ddd999cc7271718763df7e885e53817d0d607f53aac52eec202d7183c04caa17f975c8eae3d78ac3da5c881b864ed438adaae827036756cd9df4f8fa24ef85aec221b35740c65e252880422ebf7ddf3e52b87346f8d8ed92f459fb76e866e8bf631a5b7e6d86968e5f7f64d499db7d0143ad40770c158039a3ed1205ba7ce959e837a4c23249cfec9ec56f02602c6d98cb845a1b9d041e2cc9903ac360d53d746c2d17ea7ae5f0f8642cc4047151351465c9bfe0770aa65f8ee2c3ebcd6fecd005cad15eaf6dc3a81a9d704fb5cfb13af6a848b276cdce43b5feb9c0d4b7e85f946f80ce625ba4fe885f13d1fc709df121143c3f17bf8a50845cc80d066989eaea92bd5735e753cfc9545d5bcb43f0391d4ae4569447927130efabe6e8455ed9533ebb8370a4439097dca51994c3c2ba8686e89570d9cb1f87680865371df21975b696cdc00541347008793dc641ae435b86150e5f6f06414e80f50d07cde583efb79c276d90b637935412f611552c4816c8fddf62f080e9edaba61d939c3b2d302a9e5db80f380ad73bf5c1866d8d7b25146464511ca13672bd3be2a95bf10fa736ce411cded82af15ba8f5340dc9098f7cf84d00ae842b10f54bcb018216001f446f680e7167b3553706c1641d9b8ef5253bc -Len = 4097 -Result = P - -Digest = SHA384 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 00e5b562e2aa341868b4aa78ff86c220330e7159bb0871f8939aed509b4e5bcb2c4ecb2cbf4c85f8a11cb3f1c9efa748225f0d944c983dd86e6faadcf3cf7cff781653300d3f826cb1dfde256c056fff1772dbbe0715c2c85615a47d07a944449f4cad63dc06cf1b0a0ed799bdccd93078888e39beacde047625fd9cfe74c2098c701ff5e6436d2d845883cb8cf8aa134a57023226bbfccbe078e356eac19b35d0be01d3d9eb383d2361874e80deaf565dcf8561a53e15ad360b2ce0b7df0eade026e951aa42dfc66cb992eea996b26f56d8a224970a4d1e42d925786d3b23215c7cc8f30377f4bec31491c865bb91760acdfb13cd500fa865741f58841fee3938203a766c72397e7ada29cc56b3f6aef82588ca993e0b6af48d2ac6274511b74e9cf06b89a8c73ca741602e7a0c6f9a6e47e87105108d55aff9afb70c14e6e74fa62ed51220fbf46be9a3101dfe1d64d4fea487e05be823fcfaeadad994f11b98b9c9b7390a96b356a32af6d4be2da0861b5b253942aa706000349e5bdead4a931ce48c99c588c9032b71963b9faf26a250483a14c10328a6a5b1ba24639ccc15e842250eb55cba18ed1a7cb5fd0f75e845434fa4c35c8c22b4a8afc1de1f70db96eca9d055b95a107934c7c1f361f19f6fc1a02d20dab5c900706608a19028d4a283939d2d16a495ae184bda4fdb488229e0f64334c15daf197dbc6dd213a0bc -Len = 4097 -Result = P - -Digest = SHA512 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 00d63a1aafa96215f6ff698694f59fe97523399f214683f450f3024e6bb2523c7407ccd7024284522b957dc42aff3ef2a5738daaa88b38092880fc42b98ecdd3e09677db0c189c105f0777981d7620c0fb014c57a3e080cb5afc9ad4c0e47a0e46157ef96b01453a9aa7c99ef80976d425ccafcce990425969a30b5ce55b3fe21a0aa9acea8bd7da6cb28e835453ddc9dd93744fc324e38dca6536e96c99de965f87259f16b1e7d831148e0237f6e0c0aae2a8708f90a3274092a92b55761ab0a12ee732ddfc2acb7d559b4a0d8d5f8426c9751f5545282b8fe8748b18144bbf6f3a9fb47b9642565736fbc616fb886c28f1089123278c082b7b78bce947bd5285b9f8f5787233dba8313554b8c79686f9817626c8c1a6d641996bbfb32e8d4c0e0a07c6979976a18f0534bf31a658fdc9bd2fa3018a22c3cfbc83640c53fccd833aaf6f08ca2834a9e5c7d56302671b88605734f34189d4612d30fe6d056c77f80eda3ca6976b9ce56d90aad4ae7aad112bb47472e6402bb4c915711e2a2d038c2d6ef94f2fc8fdc90b51aa413e3b0c1f7a8807072f0255fe94e3f0a9a7d7a8c5727d5a0c287df9ebdf184d51e726e4334925b3e7f119272bf7ef3cd3dceab1a6320af4d65c4ab46dd1277a6995eb127f0aaa207dc3ee0d4c65d1224ac96da10d15ba220d096e8cc25c5f0ae0886dd76e0f3d08efb9c5fc0190d81f12261c5bbc -Len = 4097 -Result = P - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86ad0e8e96cd5a7c6c693676ccc625e1208c59723631f216c1155eeac9205705aad83b01a11926d8ca477d047449d3fa2068660cdc61bef02439aea352bd32da7d2e5cf2ddaccdcd6a6eb7492f3b5af9a0bdf93427ef99218bef4d72588f943bd9b8f2a404ba061feb1d48c8430b3f2fe5de5c4fe9af5a48359bd91fa5d93a4d83d96b27177769f91e1d1cb1959790e607f9d30ee44339bc4da863eb6fe8b7457b533c5e22e0bc4855a20229c7ecd193e917cb695b26a84d721f4707dac53e9485234ebeed7bb505f0fa1393aff820462bdd1e26c14c541e551ab6ffb9d7b7e280e33f7b2ec30eb14f4d635a57fb568bf9c420f197673a5cb4d8b15f9e8c743af99c2c2899e7d15d877590501644aa863c20b392e72bdc330ad192147ef171516d815c02fe0e375317b76c9df2052bd2de1b116192785b2282119f875dd89ffaf5a5c36f0524b3a4376f0381184591473a7c131d5f58bbb00b921030a96f260ee78cf1c2c25337e69b4cc42fcbd85034bd41f2c62e990fdd298fd53b453a4232b61426ac0764a5d6b8c45fb1d3004e27a1afc5ed38cf2ec4ab70521e6af5c1a2cf22306c523f87100c140525862efdd2d7eec690f34ad9a3c96c946472e622f830bf21b0c1d0690ebf6c8c98e0595e67b277d9ff43ed93ab568cab9684829f9392ab9eca7dacd191b7f263997bf5a03d4eb5115e84afcb92609554cd14ab304d912c8e9e201350a9460955edba75ba18ba4b5ef91d67950102ebc48432320ab90142fb25dd9decd6d5747255cb1fd7320f2297306c2282286338ab64b060dc0bdfd2271bbd0382d69d38988731bc80b6438a063b8d1af71c2153719a8d8dee2eebf85605a5bfcbc2d364ff291796b7c13506a33fc05dafd939ba9c700a7335cef47b0ced0bcf02722ba17821f144752ac92dda4134b0091b43141a35c53bdc896b4de809337d64caf0e9af200284f88d0f1318903a75df0d1d27f879d9b743a6eeaa9c167ef9cee9a7d0e67bf61872ce528663e4699b54231e6fc12ad41c45518aa53c24fe0cb97fe0d98c696561568d844e64a401ad70db439c978d3f1819f67e017901a307ad26556708f4e62217ab6f4575a0d4800259ea8590e3aa718ac0523330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 8191 -Result = P - -Digest = SHA384 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 137a60205de7c9f40c29d65a035bd96da8ec95a909f129a8f7c0be2b3ecf539f62667e51db71b8685da2cb3a727651e8fa399715262c9a4ab88bff1d8514ee299a196c75a09fbfd6b069bbc5c2d1fce2107e68fa4605086160b803a13d221d47e68c8dfd94e6cf54175588c363f5ba311a77c056c45d90fc9a60ba36ac8f07e319baf84003d2af51d313d6209aaa5ae8a3308cacaa35577a01742ea42e5cdd26ad15ee0cdde9b7776cb219532b0568909338d1096eab562a1a28261035fff7a40b35e2d988c3b9e421d3f35be3e359d325a25ce856a9077fa884fe96a287ce32eb28f5ce4a854f00575fad8fb53b5b8e405fbb3273d14eeda5141971d34d19cd50620a4ac5041c0622e43224e49df105dec2a4bd93536dfc470b363f0464ffda82ca5dfb7e2620fe210ccbc42344b85d937c6937f40ad69a5db1dc2b5b4d930cb8036d0b95644e792661f872cbe47b65f62c1fcd884c2387938fe303d3b7f1a20e989b5ed979398778924f70439df29482182478048afbb1be1da0e5961ecc38c1e9037b05bee4364877e2d090107abf8a9c46603e16c7013a370376c05daf2fcd0a705e6c9d89e611f26d84980633932951432c8df1b79864441a79cd0829dbd382794c4f77b6f8677cba13fc98fad99057289cf906d7ae2abed25e6fb4d555ebb86a5252e50eb6659ef7b7f2e1bff9a7d3910f1b0521c8108688003408bcc4aaa75c7efb27817c55fe1640fea83cbadc4e3f2a13cc56d0a544b84a7a50a34399f3d964d7ea0e9ea80001d6fd36a1516a5bca75bd83be639453a4b59cfcddebfda1e3022ece95efdc82b253c0b64b54c504f83f5cf375a1767e90eb68fe7cb93a43532c3db7e8c6446e6ac94a47e420e70531e62be6e99509ff0ba6040e39c2acb5c9d3a8c6dd92cc56962e495a1d3b67b896527902a9dd956b9e47a67b5461515b6c1211e17d05e69a7d866ed7839efab26089569867ba9736bfdba5fb8517af81410c15f1da525cb58ff8c005345a4cb42e555c8ecadb4d0f345b9afdff4fc60d810ee665327eaac60443c4ae1dc5704f8d7059630100b5ddecdaad5f114caac6a8a580ac9b7bad82195cd9561d3d4f81827f3776650c2a3f0c573c955bde7367b665d0a5a8ebd646cc230db4b4c904e6006b0a2e6546b932cbcd84a7d4ab0b2761ece96606fee0ca5fb1ed47f7a3956778bdeba4f065595b68e9e54e4c10650bf1eb23147e5ce5028a1f363f2cc17dfadf7e3bd33db5b31904ea67ba9107e83061a154fb455a6b3790228ecadf1ab3623e374e1b46b4eb4571d6bbe1632e20c4ab7a601860e662b8b23eaf5690b519c4d052f464bf886fa4d92ae6b179e7782914ffb6b31271e7e06382d59da1c29889474c5b1dea85c5ec55cc2d5ad5d6776b2d234b96e2e80ed049c3cfc645967f5d5efb1d5c707585e8fa8bbb5653bc -Len = 8191 -Result = P - -Digest = SHA512 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 085255700ee4e6964ba0a867b650f5d3cac3380b59ec58c72a5d44156f7273f7ccf88edb48a3c7f6c07dfd03b9f8a907f0e7d98e38ee174edf9fe79159cddebafe1cbd586fdaf192d347d56867b3a3eb756ee3c51afbb9f4b1ccb00059abcfa51ef3facd58af14362db77c6c8bb387a5228d105388ff31b21c0b30d90e44956dbd2d9e1b11bd362d64e1fe89ea4e21d5ee47681745a957238f6bceb748cbecb4591c093561263f22ebafcd66c9e7b2793687459752bc80cfe7a74e188433b07d941689697fbdb5eb4850f5534315360fe5b439559a93f57e3a0cad473a3debcc92304b08112c9b6ef227206d5f14a7037fd417d1c37f600c9df6f0083de6db4070781e60d3dffd4eebefe15f1adcdc74610273296a4112e8b6a4305d7f88eb3029a27e7d96dcc9549c33b1de6ec8485c925065773a0eba301b892777c4a62a0390109153e86bb012234cf2510db791618756df830a49cfa2a27fae064df4d245430084111690f21ee89507fcad3de886c9a476e75d4c18b3913db58bbdb63317300667d4478b199690eee146db164658c81e34e726dbe3eee54f655536679a618b08fe96df77554387ad1494756806881f67edbed89bd1b09bdd453d2eb84349aa813fbf982e83f1ec4dbdabc9a1f54691566f479d465cd82372d267ab98c28c5547f558b8708535a426fda410797ebd41b755cd72f7d798475d443a73271c3664c5f1ed6cc61d5f55a01b5107eb8f42123f70220dac7b3a543e8c91c5c67e20dfd41619b15e1ce4de0142b6e73ccc0994d23de5243c155020f7ad8c0e66882157da99bf76def2decbe6cb55730f1626ee24ee2e68d12efc0efa06aff03c6c25ecb292cc4645a7bd97725a3b32f0d8c4ace785991e88406541b5875db86cf8d19daeaa19f6834aafb46b8f9b0606a0905ea0f0b3671c5fb3d552acee4ce34b6fd33bd58ac36cf97e179096973c1f75b4b49e7efd931a8f3396dd2e9c22a98288933ce97ee90da8b84405fb51c78f998aaff125ee2817b5fbb45d004f6a73be6fab9a09ef86509658fefbb4cc7c1cbd3e4b0a8fc15a32d2e5e0d394c2504afa1ee72a19e72a1dc92a296047a09b557ec3e25ec430de6edd84d5a5dbf4f5344218a8921443aa1f20679e1be0e9bdbee226898c1b4bf100c0fa069ca9d11ca2560aff9a87caf328c4aa07796a9acac94bb501fbee6add688547132f1c3c37ee6e5e475f9ed97b19a47b62786826995073ffda44f8899c9ba08191777b228d33aec6e9fdd4fd20d10cc36e45d4c8b31905c0be8110add3dc573ce006bb08eb34cea61703cd8fa05e26de042be50d6f42a0ae6363bf6c5e9a3a202f41de1d098e525a2413f759483bf8b4d9956f463798028cfc5695d8cee89506eb5b4a61cd63cbb5b7738cfee0edd94be6ffa6f7c57f258f816015e9f20daeb061150e698596c3bc -Len = 8191 -Result = P - -Digest = SHA256 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0b5546c0e8bf9966ac52887133aa89150a5fe745492fe94790b6e8c06b5f091c147bf46a88b96b4e1ff39b6d8ddd999cc7271718763df7e885e53817d0d607f53aac52eec202d7183c04caa17f975c8eae3d78ac3da5c881b864ed438adaae827036756cd9df4f8fa24ef85aec221b35740c65e252880422ebf7ddf3e52b87346f8d8ed92f459fb76e866e8bf631a5b7e6d86968e5f7f64d499db7d0143ad40770c158039a3ed1205ba7ce959e837a4c23249cfec9ec56f02602c6d98cb845a1b9d041e2cc9903ac360d53d746c2d17ea7ae5f0f8642cc4047151351465c9bfe0770aa65f8ee2c3ebcd6fecd005cad15eaf6dc3a81a9d704fb5cfb13af6a848b276cdce43b5feb9c0d4b7e85f946f80ce625ba4fe885f13d1fc709df121143c3f17bf8a50845cc80d066989eaea92bd5735e753cfc9545d5bcb43f0391d4ae4569447927130efabe6e8455ed9533ebb8370a4439097dca51994c3c2ba8686e89570d9cb1f87680865371df21975b696cdc00541347008793dc641ae435b86150e5f6f06414e80f50d07cde583efb79c276d90b637935412f611552c4816c8fddf62f080e9edaba61d939c3b2d302a9e5db80f380ad73bf5c1866d8d7b25147b6b5e13ae397db234eda654fe00a839c14e13d1d725fe54a7fa3b02c6068073f7576e8b01d53f54d1287f4105ffd9d6097bed8537b9a0f97bdda2b2393a983f08fbea11ccaa7656c9347b51cb30f4f6fc22f6667309f458b8db00c9a26d733cc75465a59122e34a66d1331ffd6935f028cd2a726a5d99011b9e1806afde624bb789eb934ff2154e0c52ed22002ca86c6ab46e166923e9b91119bf1cfa7635f4053a7369adfd53df69625e6e816bb8c60cd000e4ecb5b2e40a8251ec828efca270108bde76c652e4cc3ee7e1c4dcff37a9e172c1f58f5dcb0e36c76ebc1222afbf7c4bcaf43f683e6619079a3baed0860b5ba587e7fa78f0f01c108506ffc051b4dd61e2cc0ee06093e8abb100151d37a42727001bf53186aa88d7e7cb1bb64de05bf66fb2da084740c752cb967c7b2fa15bc94a4162d3060dc074aa5f02be6b8662db73894823bb341783bb77769627347dbf481dc898a80d74a66410280c82e54b0192d45ccfa67421a9c1e23c0cd3714dc4114aa8e75ead05cf0e1521f598878ead0553d1f0924032c8ec8b62d3bea3f65286351d00c550bf22bfbdbf3f02580414ca4f97dc6d788431c9a18d56c111bf85a4fa26875fc0b4545ebb7247d8ef78f42ce715f5868602c560b77d9e51981cde571b3f53b2675c4dae28f55839106919383800a585e1d10a396f96349621957ab95fe4280ea6fcc57182e5898d67a37c85c771ce3c1eef72da0dee37dedf8f7ed741d3bad59b09bbb30defcc29484d00ae842b10f54bcb018216001f446f680e7167b3553706c1641d9b8ef5253bc -Len = 8191 -Result = P - -Digest = SHA384 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 25b562e2aa341868b4aa78ff86c220330e7159bb0871f8939aed509b4e5bcb2c4ecb2cbf4c85f8a11cb3f1c9efa748225f0d944c983dd86e6faadcf3cf7cff781653300d3f826cb1dfde256c056fff1772dbbe0715c2c85615a47d07a944449f4cad63dc06cf1b0a0ed799bdccd93078888e39beacde047625fd9cfe74c2098c701ff5e6436d2d845883cb8cf8aa134a57023226bbfccbe078e356eac19b35d0be01d3d9eb383d2361874e80deaf565dcf8561a53e15ad360b2ce0b7df0eade026e951aa42dfc66cb992eea996b26f56d8a224970a4d1e42d925786d3b23215c7cc8f30377f4bec31491c865bb91760acdfb13cd500fa865741f58841fee3938203a766c72397e7ada29cc56b3f6aef82588ca993e0b6af48d2ac6274511b74e9cf06b89a8c73ca741602e7a0c6f9a6e47e87105108d55aff9afb70c14e6e74fa62ed51220fbf46be9a3101dfe1d64d4fea487e05be823fcfaeadad994f11b98b9c9b7390a96b356a32af6d4be2da0861b5b253942aa706000349e5bdead4a931ce48c99c588c9032b71963b9faf26a250483a14c10328a6a5b1ba24639ccde518b2d5fe45ac4ae81dea8c450dff8518b5b3bf5433ac7cd244585f312eef802b661c5920a549aae089c437310391019d17390ea03deb9e22be790287b3901e3e91c6ec32e00906d6475e8d5d3db229bae7321a36b5b0fc2d15a12bf63b4671029e9d9e15577aa89e6118d878f320b165e7a4a3daac770f6ee78b091644c8b542de73ca5556448b59f7c3b8653c0d9749b28e7b22dae2a788c5af003ddf5b5515413e40eb3b67f52fea4779f570585ecc0b8b535df5ce4d8db38647ec1974703e618ce52bfec5cbbea94cb8d17242f8ac9c34d209f477159d47be654a6045bba3a7ad572c1bcf3fa1ddd80dc9c98b3a2ce01dd50ae41814faa0996779e8204e3d6e36f949c5609e1a3875aa4cb00ee6f9a6a7d342feef53208ebd8167ed45c1d4720d2d781c946424b053eca7a814b6fed8dacc61c29aeaefef0f653a85324ef48b371d8873f3445bbac0833c8f5abf7aa8f4cae39567d2c902145b1c7ece8b6f0ee2ebbe6b3e571e95cc1230468e905cc2f5eb768236fa82bdffa1d9fe5d49527851ec30995559c9b60f28e8b19c1d6f69c47d782fb8a13136eed564f59aae0a0dfbb66128d83208d073adb6442de7498bd747e18214683f62b06547fa77520482d6b7e046db5dcc9a10809e8b3248e8a033ce1a8e71589c90bcd2d449f890936f8906f32b9f656056c9414c836565fc1fe8251bca7be8975ac305739569ef80df15059b408750be12ea42878ae8f617d378a6d3874ea92c700ea1b805665e1b673bdbb9dc1e2b67959d9c44d3f3fa9f6fc1a02d20dab5c900706608a19028d4a283939d2d16a495ae184bda4fdb488229e0f64334c15daf197dbc6dd213a0bc -Len = 8191 -Result = P - -Digest = SHA512 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 163a1aafa96215f6ff698694f59fe97523399f214683f450f3024e6bb2523c7407ccd7024284522b957dc42aff3ef2a5738daaa88b38092880fc42b98ecdd3e09677db0c189c105f0777981d7620c0fb014c57a3e080cb5afc9ad4c0e47a0e46157ef96b01453a9aa7c99ef80976d425ccafcce990425969a30b5ce55b3fe21a0aa9acea8bd7da6cb28e835453ddc9dd93744fc324e38dca6536e96c99de965f87259f16b1e7d831148e0237f6e0c0aae2a8708f90a3274092a92b55761ab0a12ee732ddfc2acb7d559b4a0d8d5f8426c9751f5545282b8fe8748b18144bbf6f3a9fb47b9642565736fbc616fb886c28f1089123278c082b7b78bce947bd5285b9f8f5787233dba8313554b8c79686f9817626c8c1a6d641996bbfb32e8d4c0e0a07c6979976a18f0534bf31a658fdc9bd2fa3018a22c3cfbc83640c53fccd833aaf6f08ca2834a9e5c7d56302671b88605734f34189d4612d30fe6d056c77f80eda3ca6976b9ce56d90aad4ae7aad112bb47472e6402bb4c915711e2a2d027cdd9e09bfdf380d39fba15ab1cecbfcef8a78f7f7dff2a50e6413005957275835828daafcd88d091b2fe8bda117d614c3b9d5431701e9d7db071fcc232c1a4182c4dfdd233c1fb1fe6522801019ad037357139d3bba905facfd8f0314d8e4ed919972f735729bf98eb1b39483fa7d179e4b470e68868c32cefb1aed52fa4ab650d60c6655c7a8a10f82f2a427a8c3524a76318565df250027986e89f1cc18e3fc13fc32b03bfebf777aaf0155579f99befb56d043df8a99d7d7570b8af5d3c8812d3e5c9f452e894ff8686dd3a0c6849e1f24ab049497bd69ce08c9c291783f3bf3070819fcdb265aa1b40cb182782ed14f3061efca5e8da124ad48486498cfc7eaff9d2617ee1fae45b5d37d7472cf7c93d561e9208270a01adf7d3dfccb1a70fad3155c41b7f8be37b5f2d4bd3d1476f3ee11de31244ded7bf0fd85e941a50d1f28ff198bf188b7ea1bc9da2d968b519667203418d6005b3c84c13027346db4099968106a2540197f8cd87eed4eb969911707bf29160ed9178d876b284f9004d35bbb0f5ea939532fb29a2db4a052fc06e76fa7f031489fa32e25fb03fe01c7840fc01b741f4e1c2b08030222e6b59951c233354e0fa57321481e5204c792923f4b34d9521bbbad3dd2ea96debb8638dd1049b92a3356e0b4530d71bc22611ad7ee3cbd17ad425c9c17a0957c95ef8ff04832fa44993d273e927ed5e56dcef1c133f6cb57aab63eff0a420db877d424add66924efd59b9584cfa1515a8b393bfd205ecaddf4196d9a16639669b016a90ab349b65ac733112103b6610458a1a6320af4d65c4ab46dd1277a6995eb127f0aaa207dc3ee0d4c65d1224ac96da10d15ba220d096e8cc25c5f0ae0886dd76e0f3d08efb9c5fc0190d81f12261c5bbc -Len = 8191 -Result = P - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86ad0e8e96cd5a7c6c693676ccc625e1208c59723631f216c1155eeac9205705aad83b01a11926d8ca477d047449d3fa2068660cdc61bef02439aea352bd32da7d2e5cf2ddaccdcd6a6eb7492f3b5af9a0bdf93427ef99218bef4d72588f943bd9b8f2a404ba061feb1d48c8430b3f2fe5de5c4fe9af5a48359bd91fa5d93a4d83d96b27177769f91e1d1cb1959790e607f9d30ee44339bc4da863eb6fe8b7457b533c5e22e0bc4855a20229c7ecd193e917cb695b26a84d721f4707dac53e9485234ebeed7bb505f0fa1393aff820462bdd1e26c14c541e551ab6ffb9d7b7e280e33f7b2ec30eb14f4d635a57fb568bf9c420f197673a5cb4d8b15f9e8c743af99c2c2899e7d15d877590501644aa863c20b392e72bdc330ad192147ef171516d815c02fe0e375317b76c9df2052bd2de1b116192785b2282119f875dd89ffaf5a5c36f0524b3a4376f0381184591473a7c131d5f58bbb00b921030a96f260ee78cf1c2c25337e69b4cc42fcbd85034bd41f2c62e990fdd298fd53b453a4232b61426ac0764a5d6b8c45fb1d3004e27a1afc5ed38cf2ec4ab70521e6af5c1a2cf22306c523f87100c140525862efdd2d7eec690f34ad9a3c96c946472e622f830bf21b0c1d0690ebf6c8c98e0595e67b277d9ff43ed93ab568cab9684829f9392ab9eca7dacd191b7f263997bf5a03d4eb5115e84afcb92609554cd14ab304d912c8e9e201350a9460955edba75ba18ba4b5ef91d67950102ebc48432320ab90142fb25dd9decd6d5747255cb1fd7320f2297306c2282286338ab64b060dc0bdfd2271bbd0382d69d38988731bc80b6438a063b8d1af71c2153719a8d8dee2eebf85605a5bfcbc2d364ff291796b7c13506a33fc05dafd939ba9c700a7335cef47b0ced0bcf02722ba17821f144752ac92dda4134b0091b43141a35c53bdc896b4de809337d64caf0e9af200284f88d0f1318903a75df0d1d27f879d9b743a6eeaa9c167ef9cee9a7d0e67bf61872ce528663e4699b54231e6fc12ad41c45518aa53c24fe0cb97fe0d98c696561568d844e64a401ad70db439c978d3f1819f67e017901a307ad26556708f4e62217ab6f4575a0d4800259ea8590e3aa718ac0523330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 8192 -Result = P - -Digest = SHA384 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 137a60205de7c9f40c29d65a035bd96da8ec95a909f129a8f7c0be2b3ecf539f62667e51db71b8685da2cb3a727651e8fa399715262c9a4ab88bff1d8514ee299a196c75a09fbfd6b069bbc5c2d1fce2107e68fa4605086160b803a13d221d47e68c8dfd94e6cf54175588c363f5ba311a77c056c45d90fc9a60ba36ac8f07e319baf84003d2af51d313d6209aaa5ae8a3308cacaa35577a01742ea42e5cdd26ad15ee0cdde9b7776cb219532b0568909338d1096eab562a1a28261035fff7a40b35e2d988c3b9e421d3f35be3e359d325a25ce856a9077fa884fe96a287ce32eb28f5ce4a854f00575fad8fb53b5b8e405fbb3273d14eeda5141971d34d19cd50620a4ac5041c0622e43224e49df105dec2a4bd93536dfc470b363f0464ffda82ca5dfb7e2620fe210ccbc42344b85d937c6937f40ad69a5db1dc2b5b4d930cb8036d0b95644e792661f872cbe47b65f62c1fcd884c2387938fe303d3b7f1a20e989b5ed979398778924f70439df29482182478048afbb1be1da0e5961ecc38c1e9037b05bee4364877e2d090107abf8a9c46603e16c7013a370376c05daf2fcd0a705e6c9d89e611f26d84980633932951432c8df1b79864441a79cd0829dbd382794c4f77b6f8677cba13fc98fad99057289cf906d7ae2abed25e6fb4d555ebb86a5252e50eb6659ef7b7f2e1bff9a7d3910f1b0521c8108688003408bcc4aaa75c7efb27817c55fe1640fea83cbadc4e3f2a13cc56d0a544b84a7a50a34399f3d964d7ea0e9ea80001d6fd36a1516a5bca75bd83be639453a4b59cfcddebfda1e3022ece95efdc82b253c0b64b54c504f83f5cf375a1767e90eb68fe7cb93a43532c3db7e8c6446e6ac94a47e420e70531e62be6e99509ff0ba6040e39c2acb5c9d3a8c6dd92cc56962e495a1d3b67b896527902a9dd956b9e47a67b5461515b6c1211e17d05e69a7d866ed7839efab26089569867ba9736bfdba5fb8517af81410c15f1da525cb58ff8c005345a4cb42e555c8ecadb4d0f345b9afdff4fc60d810ee665327eaac60443c4ae1dc5704f8d7059630100b5ddecdaad5f114caac6a8a580ac9b7bad82195cd9561d3d4f81827f3776650c2a3f0c573c955bde7367b665d0a5a8ebd646cc230db4b4c904e6006b0a2e6546b932cbcd84a7d4ab0b2761ece96606fee0ca5fb1ed47f7a3956778bdeba4f065595b68e9e54e4c10650bf1eb23147e5ce5028a1f363f2cc17dfadf7e3bd33db5b31904ea67ba9107e83061a154fb455a6b3790228ecadf1ab3623e374e1b46b4eb4571d6bbe1632e20c4ab7a601860e662b8b23eaf5690b519c4d052f464bf886fa4d92ae6b179e7782914ffb6b31271e7e06382d59da1c29889474c5b1dea85c5ec55cc2d5ad5d6776b2d234b96e2e80ed049c3cfc645967f5d5efb1d5c707585e8fa8bbb5653bc -Len = 8192 -Result = P - -Digest = SHA512 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 485255700ee4e6964ba0a867b650f5d3cac3380b59ec58c72a5d44156f7273f7ccf88edb48a3c7f6c07dfd03b9f8a907f0e7d98e38ee174edf9fe79159cddebafe1cbd586fdaf192d347d56867b3a3eb756ee3c51afbb9f4b1ccb00059abcfa51ef3facd58af14362db77c6c8bb387a5228d105388ff31b21c0b30d90e44956dbd2d9e1b11bd362d64e1fe89ea4e21d5ee47681745a957238f6bceb748cbecb4591c093561263f22ebafcd66c9e7b2793687459752bc80cfe7a74e188433b07d941689697fbdb5eb4850f5534315360fe5b439559a93f57e3a0cad473a3debcc92304b08112c9b6ef227206d5f14a7037fd417d1c37f600c9df6f0083de6db4070781e60d3dffd4eebefe15f1adcdc74610273296a4112e8b6a4305d7f88eb3029a27e7d96dcc9549c33b1de6ec8485c925065773a0eba301b892777c4a62a0390109153e86bb012234cf2510db791618756df830a49cfa2a27fae064df4d245430084111690f21ee89507fcad3de886c9a476e75d4c18b3913db58bbdb63317300667d4478b199690eee146db164658c81e34e726dbe3eee54f655536679a618b08fe96df77554387ad1494756806881f67edbed89bd1b09bdd453d2eb84349aa813fbf982e83f1ec4dbdabc9a1f54691566f479d465cd82372d267ab98c28c5547f558b8708535a426fda410797ebd41b755cd72f7d798475d443a73271c3664c5f1ed6cc61d5f55a01b5107eb8f42123f70220dac7b3a543e8c91c5c67e20dfd41619b15e1ce4de0142b6e73ccc0994d23de5243c155020f7ad8c0e66882157da99bf76def2decbe6cb55730f1626ee24ee2e68d12efc0efa06aff03c6c25ecb292cc4645a7bd97725a3b32f0d8c4ace785991e88406541b5875db86cf8d19daeaa19f6834aafb46b8f9b0606a0905ea0f0b3671c5fb3d552acee4ce34b6fd33bd58ac36cf97e179096973c1f75b4b49e7efd931a8f3396dd2e9c22a98288933ce97ee90da8b84405fb51c78f998aaff125ee2817b5fbb45d004f6a73be6fab9a09ef86509658fefbb4cc7c1cbd3e4b0a8fc15a32d2e5e0d394c2504afa1ee72a19e72a1dc92a296047a09b557ec3e25ec430de6edd84d5a5dbf4f5344218a8921443aa1f20679e1be0e9bdbee226898c1b4bf100c0fa069ca9d11ca2560aff9a87caf328c4aa07796a9acac94bb501fbee6add688547132f1c3c37ee6e5e475f9ed97b19a47b62786826995073ffda44f8899c9ba08191777b228d33aec6e9fdd4fd20d10cc36e45d4c8b31905c0be8110add3dc573ce006bb08eb34cea61703cd8fa05e26de042be50d6f42a0ae6363bf6c5e9a3a202f41de1d098e525a2413f759483bf8b4d9956f463798028cfc5695d8cee89506eb5b4a61cd63cbb5b7738cfee0edd94be6ffa6f7c57f258f816015e9f20daeb061150e698596c3bc -Len = 8192 -Result = P - -Digest = SHA256 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0b5546c0e8bf9966ac52887133aa89150a5fe745492fe94790b6e8c06b5f091c147bf46a88b96b4e1ff39b6d8ddd999cc7271718763df7e885e53817d0d607f53aac52eec202d7183c04caa17f975c8eae3d78ac3da5c881b864ed438adaae827036756cd9df4f8fa24ef85aec221b35740c65e252880422ebf7ddf3e52b87346f8d8ed92f459fb76e866e8bf631a5b7e6d86968e5f7f64d499db7d0143ad40770c158039a3ed1205ba7ce959e837a4c23249cfec9ec56f02602c6d98cb845a1b9d041e2cc9903ac360d53d746c2d17ea7ae5f0f8642cc4047151351465c9bfe0770aa65f8ee2c3ebcd6fecd005cad15eaf6dc3a81a9d704fb5cfb13af6a848b276cdce43b5feb9c0d4b7e85f946f80ce625ba4fe885f13d1fc709df121143c3f17bf8a50845cc80d066989eaea92bd5735e753cfc9545d5bcb43f0391d4ae4569447927130efabe6e8455ed9533ebb8370a4439097dca51994c3c2ba8686e89570d9cb1f87680865371df21975b696cdc00541347008793dc641ae435b86150e5f6f06414e80f50d07cde583efb79c276d90b637935412f611552c4816c8fddf62f080e9edaba61d939c3b2d302a9e5db80f380ad73bf5c1866d8d7b25147b6b5e13ae397db234eda654fe00a839c14e13d1d725fe54a7fa3b02c6068073f7576e8b01d53f54d1287f4105ffd9d6097bed8537b9a0f97bdda2b2393a983f08fbea11ccaa7656c9347b51cb30f4f6fc22f6667309f458b8db00c9a26d733cc75465a59122e34a66d1331ffd6935f028cd2a726a5d99011b9e1806afde624bb789eb934ff2154e0c52ed22002ca86c6ab46e166923e9b91119bf1cfa7635f4053a7369adfd53df69625e6e816bb8c60cd000e4ecb5b2e40a8251ec828efca270108bde76c652e4cc3ee7e1c4dcff37a9e172c1f58f5dcb0e36c76ebc1222afbf7c4bcaf43f683e6619079a3baed0860b5ba587e7fa78f0f01c108506ffc051b4dd61e2cc0ee06093e8abb100151d37a42727001bf53186aa88d7e7cb1bb64de05bf66fb2da084740c752cb967c7b2fa15bc94a4162d3060dc074aa5f02be6b8662db73894823bb341783bb77769627347dbf481dc898a80d74a66410280c82e54b0192d45ccfa67421a9c1e23c0cd3714dc4114aa8e75ead05cf0e1521f598878ead0553d1f0924032c8ec8b62d3bea3f65286351d00c550bf22bfbdbf3f02580414ca4f97dc6d788431c9a18d56c111bf85a4fa26875fc0b4545ebb7247d8ef78f42ce715f5868602c560b77d9e51981cde571b3f53b2675c4dae28f55839106919383800a585e1d10a396f96349621957ab95fe4280ea6fcc57182e5898d67a37c85c771ce3c1eef72da0dee37dedf8f7ed741d3bad59b09bbb30defcc29484d00ae842b10f54bcb018216001f446f680e7167b3553706c1641d9b8ef5253bc -Len = 8192 -Result = P - -Digest = SHA384 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 65b562e2aa341868b4aa78ff86c220330e7159bb0871f8939aed509b4e5bcb2c4ecb2cbf4c85f8a11cb3f1c9efa748225f0d944c983dd86e6faadcf3cf7cff781653300d3f826cb1dfde256c056fff1772dbbe0715c2c85615a47d07a944449f4cad63dc06cf1b0a0ed799bdccd93078888e39beacde047625fd9cfe74c2098c701ff5e6436d2d845883cb8cf8aa134a57023226bbfccbe078e356eac19b35d0be01d3d9eb383d2361874e80deaf565dcf8561a53e15ad360b2ce0b7df0eade026e951aa42dfc66cb992eea996b26f56d8a224970a4d1e42d925786d3b23215c7cc8f30377f4bec31491c865bb91760acdfb13cd500fa865741f58841fee3938203a766c72397e7ada29cc56b3f6aef82588ca993e0b6af48d2ac6274511b74e9cf06b89a8c73ca741602e7a0c6f9a6e47e87105108d55aff9afb70c14e6e74fa62ed51220fbf46be9a3101dfe1d64d4fea487e05be823fcfaeadad994f11b98b9c9b7390a96b356a32af6d4be2da0861b5b253942aa706000349e5bdead4a931ce48c99c588c9032b71963b9faf26a250483a14c10328a6a5b1ba24639ccde518b2d5fe45ac4ae81dea8c450dff8518b5b3bf5433ac7cd244585f312eef802b661c5920a549aae089c437310391019d17390ea03deb9e22be790287b3901e3e91c6ec32e00906d6475e8d5d3db229bae7321a36b5b0fc2d15a12bf63b4671029e9d9e15577aa89e6118d878f320b165e7a4a3daac770f6ee78b091644c8b542de73ca5556448b59f7c3b8653c0d9749b28e7b22dae2a788c5af003ddf5b5515413e40eb3b67f52fea4779f570585ecc0b8b535df5ce4d8db38647ec1974703e618ce52bfec5cbbea94cb8d17242f8ac9c34d209f477159d47be654a6045bba3a7ad572c1bcf3fa1ddd80dc9c98b3a2ce01dd50ae41814faa0996779e8204e3d6e36f949c5609e1a3875aa4cb00ee6f9a6a7d342feef53208ebd8167ed45c1d4720d2d781c946424b053eca7a814b6fed8dacc61c29aeaefef0f653a85324ef48b371d8873f3445bbac0833c8f5abf7aa8f4cae39567d2c902145b1c7ece8b6f0ee2ebbe6b3e571e95cc1230468e905cc2f5eb768236fa82bdffa1d9fe5d49527851ec30995559c9b60f28e8b19c1d6f69c47d782fb8a13136eed564f59aae0a0dfbb66128d83208d073adb6442de7498bd747e18214683f62b06547fa77520482d6b7e046db5dcc9a10809e8b3248e8a033ce1a8e71589c90bcd2d449f890936f8906f32b9f656056c9414c836565fc1fe8251bca7be8975ac305739569ef80df15059b408750be12ea42878ae8f617d378a6d3874ea92c700ea1b805665e1b673bdbb9dc1e2b67959d9c44d3f3fa9f6fc1a02d20dab5c900706608a19028d4a283939d2d16a495ae184bda4fdb488229e0f64334c15daf197dbc6dd213a0bc -Len = 8192 -Result = P - -Digest = SHA512 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 563a1aafa96215f6ff698694f59fe97523399f214683f450f3024e6bb2523c7407ccd7024284522b957dc42aff3ef2a5738daaa88b38092880fc42b98ecdd3e09677db0c189c105f0777981d7620c0fb014c57a3e080cb5afc9ad4c0e47a0e46157ef96b01453a9aa7c99ef80976d425ccafcce990425969a30b5ce55b3fe21a0aa9acea8bd7da6cb28e835453ddc9dd93744fc324e38dca6536e96c99de965f87259f16b1e7d831148e0237f6e0c0aae2a8708f90a3274092a92b55761ab0a12ee732ddfc2acb7d559b4a0d8d5f8426c9751f5545282b8fe8748b18144bbf6f3a9fb47b9642565736fbc616fb886c28f1089123278c082b7b78bce947bd5285b9f8f5787233dba8313554b8c79686f9817626c8c1a6d641996bbfb32e8d4c0e0a07c6979976a18f0534bf31a658fdc9bd2fa3018a22c3cfbc83640c53fccd833aaf6f08ca2834a9e5c7d56302671b88605734f34189d4612d30fe6d056c77f80eda3ca6976b9ce56d90aad4ae7aad112bb47472e6402bb4c915711e2a2d027cdd9e09bfdf380d39fba15ab1cecbfcef8a78f7f7dff2a50e6413005957275835828daafcd88d091b2fe8bda117d614c3b9d5431701e9d7db071fcc232c1a4182c4dfdd233c1fb1fe6522801019ad037357139d3bba905facfd8f0314d8e4ed919972f735729bf98eb1b39483fa7d179e4b470e68868c32cefb1aed52fa4ab650d60c6655c7a8a10f82f2a427a8c3524a76318565df250027986e89f1cc18e3fc13fc32b03bfebf777aaf0155579f99befb56d043df8a99d7d7570b8af5d3c8812d3e5c9f452e894ff8686dd3a0c6849e1f24ab049497bd69ce08c9c291783f3bf3070819fcdb265aa1b40cb182782ed14f3061efca5e8da124ad48486498cfc7eaff9d2617ee1fae45b5d37d7472cf7c93d561e9208270a01adf7d3dfccb1a70fad3155c41b7f8be37b5f2d4bd3d1476f3ee11de31244ded7bf0fd85e941a50d1f28ff198bf188b7ea1bc9da2d968b519667203418d6005b3c84c13027346db4099968106a2540197f8cd87eed4eb969911707bf29160ed9178d876b284f9004d35bbb0f5ea939532fb29a2db4a052fc06e76fa7f031489fa32e25fb03fe01c7840fc01b741f4e1c2b08030222e6b59951c233354e0fa57321481e5204c792923f4b34d9521bbbad3dd2ea96debb8638dd1049b92a3356e0b4530d71bc22611ad7ee3cbd17ad425c9c17a0957c95ef8ff04832fa44993d273e927ed5e56dcef1c133f6cb57aab63eff0a420db877d424add66924efd59b9584cfa1515a8b393bfd205ecaddf4196d9a16639669b016a90ab349b65ac733112103b6610458a1a6320af4d65c4ab46dd1277a6995eb127f0aaa207dc3ee0d4c65d1224ac96da10d15ba220d096e8cc25c5f0ae0886dd76e0f3d08efb9c5fc0190d81f12261c5bbc -Len = 8192 -Result = P - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86b2018199c2557363663979c3c92aee2f83567d393efd19ce1a51e5c62f580aa5d330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11f00 -Len = 2048 -Result = F (Incorrect last byte) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = dce55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86b2018199c2557363663979c3c92aee2f83567d393efd19ce1a51e5c62f580aa5d330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 2048 -Result = F (Incorrect top bits) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e45cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86b2018199c2557363663979c3c92aee2f83567d393efd19ce1a51e5c62f580aa5d330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 2048 -Result = F (First byte of PS is not zero) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef96b2018199c2557363663979c3c92aee2f83567d393efd19ce1a51e5c62f580aa5d330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 2048 -Result = F (Last byte of PS is not zero) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86a2018199c2557363663979c3c92aee2f83567d393efd19ce1a51e5c62f580aa5d330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 2048 -Result = F (Byte following PS is not 0x01) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86bdf18199c2557363663979c3c92aee2f83567d393efd19ce1a51e5c62f580aa5d330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 2048 -Result = F (Incorrect salt) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 4d13c3bd731930511a0dda4c05e5de6a44f134bbd8574de0fc9eefdfb84c3823bfce96f9f0266c7a68fc99e8e507cedec9fbd9666c13fccb8d92ffed8b803f0d07b057d79522241a7a4a5adc3a88a291c4fbfab492d08847e18b80b76c3e33f5b37ec45d12b815a8fddbf94cdf80c0c4111e2a0c25924faa1cd045c4237c8007ff70064aaf1fd96d0fb34b68b045a695bd1d2bb758a1e04134a336be9fe5c4095f5944cd4ee1f4ade9ae83ef70801b96be4d7e1c3a6e14299b9668ef07cdb900dc33ecd892481b1b30c9e7bcf739d6d4fa93b6366a4c8540f566678597bae01b54519e7ede927a1e43914b1fc965bfdf3940b9bdafe34ba91e8766f8b2a439bc -Len = 2048 -Result = F (Incorrect message hash) - -Digest = SHA256 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0b5546c0e8bf9966ac52887133aa89150a5fe745492fe94790b6e8c06b5f091c147bf46a88b96b4e1ff39b6d8ddd999cc7271718763df7e885e53817d0d607f53aac52eec202d7183c04caa17f975c8eae3d78ac3da5c881b864ed438adaae827036756cd9df4f8fa24ef85aec221b35740c65e252880422ebf7ddf3e52b87346f8d8ed92f459fb76e866e8bf631a5b7e6d86968e5f7f64d499db7d0143ad40770c158039a3ed1205ba7ce959e837a4c23249cfec9ec56f02602c6d98cb844514920b1123c69f35cc6fda327b632218e575eafff76b23cb0b7e5e3a1b6ac6b84d00ae842b10f54bcb018216001f446f680e7167b3553706c1641d9b8ef525300 -Len = 2048 -Result = F (Incorrect last byte) - -Digest = SHA256 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = f45546c0e8bf9966ac52887133aa89150a5fe745492fe94790b6e8c06b5f091c147bf46a88b96b4e1ff39b6d8ddd999cc7271718763df7e885e53817d0d607f53aac52eec202d7183c04caa17f975c8eae3d78ac3da5c881b864ed438adaae827036756cd9df4f8fa24ef85aec221b35740c65e252880422ebf7ddf3e52b87346f8d8ed92f459fb76e866e8bf631a5b7e6d86968e5f7f64d499db7d0143ad40770c158039a3ed1205ba7ce959e837a4c23249cfec9ec56f02602c6d98cb844514920b1123c69f35cc6fda327b632218e575eafff76b23cb0b7e5e3a1b6ac6b84d00ae842b10f54bcb018216001f446f680e7167b3553706c1641d9b8ef5253bc -Len = 2048 -Result = F (Incorrect top bits) - -Digest = SHA256 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0b5446c0e8bf9966ac52887133aa89150a5fe745492fe94790b6e8c06b5f091c147bf46a88b96b4e1ff39b6d8ddd999cc7271718763df7e885e53817d0d607f53aac52eec202d7183c04caa17f975c8eae3d78ac3da5c881b864ed438adaae827036756cd9df4f8fa24ef85aec221b35740c65e252880422ebf7ddf3e52b87346f8d8ed92f459fb76e866e8bf631a5b7e6d86968e5f7f64d499db7d0143ad40770c158039a3ed1205ba7ce959e837a4c23249cfec9ec56f02602c6d98cb844514920b1123c69f35cc6fda327b632218e575eafff76b23cb0b7e5e3a1b6ac6b84d00ae842b10f54bcb018216001f446f680e7167b3553706c1641d9b8ef5253bc -Len = 2048 -Result = F (First byte of PS is not zero) - -Digest = SHA256 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0b5546c0e8bf9966ac52887133aa89150a5fe745492fe94790b6e8c06b5f091c147bf46a88b96b4e1ff39b6d8ddd999cc7271718763df7e885e53817d0d607f53aac52eec202d7183c04caa17f975c8eae3d78ac3da5c881b864ed438adaae827036756cd9df4f8fa24ef85aec221b35740c65e252880422ebf7ddf3e52b87346f8d8ed92f459fb76e866e8bf631a5b7e6d86968e5f7f64d499db7d0143ad40770c158039a3ed1205ba7ce959e837a4c23249cfec9ec56f02602c6d98cb944514920b1123c69f35cc6fda327b632218e575eafff76b23cb0b7e5e3a1b6ac6b84d00ae842b10f54bcb018216001f446f680e7167b3553706c1641d9b8ef5253bc -Len = 2048 -Result = F (Last byte of PS is not zero) - -Digest = SHA256 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0b5546c0e8bf9966ac52887133aa89150a5fe745492fe94790b6e8c06b5f091c147bf46a88b96b4e1ff39b6d8ddd999cc7271718763df7e885e53817d0d607f53aac52eec202d7183c04caa17f975c8eae3d78ac3da5c881b864ed438adaae827036756cd9df4f8fa24ef85aec221b35740c65e252880422ebf7ddf3e52b87346f8d8ed92f459fb76e866e8bf631a5b7e6d86968e5f7f64d499db7d0143ad40770c158039a3ed1205ba7ce959e837a4c23249cfec9ec56f02602c6d98cb845514920b1123c69f35cc6fda327b632218e575eafff76b23cb0b7e5e3a1b6ac6b84d00ae842b10f54bcb018216001f446f680e7167b3553706c1641d9b8ef5253bc -Len = 2048 -Result = F (Byte following PS is not 0x01) - -Digest = SHA256 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0b5546c0e8bf9966ac52887133aa89150a5fe745492fe94790b6e8c06b5f091c147bf46a88b96b4e1ff39b6d8ddd999cc7271718763df7e885e53817d0d607f53aac52eec202d7183c04caa17f975c8eae3d78ac3da5c881b864ed438adaae827036756cd9df4f8fa24ef85aec221b35740c65e252880422ebf7ddf3e52b87346f8d8ed92f459fb76e866e8bf631a5b7e6d86968e5f7f64d499db7d0143ad40770c158039a3ed1205ba7ce959e837a4c23249cfec9ec56f02602c6d98cb844ae4920b1123c69f35cc6fda327b632218e575eafff76b23cb0b7e5e3a1b6ac6b84d00ae842b10f54bcb018216001f446f680e7167b3553706c1641d9b8ef5253bc -Len = 2048 -Result = F (Incorrect salt) - -Digest = SHA256 -Msg = 546869732069732061206c6f6e676572207465737420737472696e672e -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 4d13c3bd731930511a0dda4c05e5de6a44f134bbd8574de0fc9eefdfb84c3823bfce96f9f0266c7a68fc99e8e507cedec9fbd9666c13fccb8d92ffed8b803f0d07b057d79522241a7a4a5adc3a88a291c4fbfab492d08847e18b80b76c3e33f5b37ec45d12b815a8fddbf94cdf80c0c4111e2a0c25924faa1cd045c4237c8007ff70064aaf1fd96d0fb34b68b045a695bd1d2bb758a1e04134a336be9fe5c4095f5944cd4ee1f4ade9ae83ef70801b96be4d7e1c3a6e14299b9668ef07cdb900dc33ecd892481b1b30c9e7bcf739d6d4fa93b6366a4c8540f566678597bae01b54519e7ede927a1e43914b1fc965bfdf3940b9bdafe34ba91e8766f8b2a439bc -Len = 2048 -Result = F (Incorrect message hash) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0023e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86b2018199c2557363663979c3c92aee2f83567d393efd19ce1a51e5c62f580aa5d330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11f00 -Len = 2049 -Result = F (Incorrect last byte) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86b2018199c2557363663979c3c92aee2f83567d393efd19ce1a51e5c62f580aa5d330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 2049 -Result = F (Missing leading zero byte) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0123e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86b2018199c2557363663979c3c92aee2f83567d393efd19ce1a51e5c62f580aa5d330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 2049 -Result = F (Incorrect leading byte) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0023e45cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86b2018199c2557363663979c3c92aee2f83567d393efd19ce1a51e5c62f580aa5d330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 2049 -Result = F (First byte of PS is not zero) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0023e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef96b2018199c2557363663979c3c92aee2f83567d393efd19ce1a51e5c62f580aa5d330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 2049 -Result = F (Last byte of PS is not zero) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0023e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86a2018199c2557363663979c3c92aee2f83567d393efd19ce1a51e5c62f580aa5d330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 2049 -Result = F (Byte following PS is not 0x01) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0023e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86bdf18199c2557363663979c3c92aee2f83567d393efd19ce1a51e5c62f580aa5d330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 2049 -Result = F (Incorrect salt) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 00cd13c3bd731930511a0dda4c05e5de6a44f134bbd8574de0fc9eefdfb84c3823bfce96f9f0266c7a68fc99e8e507cedec9fbd9666c13fccb8d92ffed8b803f0d07b057d79522241a7a4a5adc3a88a291c4fbfab492d08847e18b80b76c3e33f5b37ec45d12b815a8fddbf94cdf80c0c4111e2a0c25924faa1cd045c4237c8007ff70064aaf1fd96d0fb34b68b045a695bd1d2bb758a1e04134a336be9fe5c4095f5944cd4ee1f4ade9ae83ef70801b96be4d7e1c3a6e14299b9668ef07cdb900dc33ecd892481b1b30c9e7bcf739d6d4fa93b6366a4c8540f566678597bae01b54519e7ede927a1e43914b1fc965bfdf3940b9bdafe34ba91e8766f8b2a439bc -Len = 2049 -Result = F (Incorrect message hash) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86ad0e8e96cd5a7c6c693676ccc625e1208c59723631f216c1155eeac9205705aad83b01a11926d8ca477d047449d3fa2068660cdc61bef02439aea352bd32da7d2e5cf2ddaccdcd6a6eb7492f3b5af9a0bdf93427ef99218bef4d72588f943bd9b8f2a404ba061feb1d48c8430b3f2fe5de5c4fe9af5a48359bd91fa5d93a4d83d96b27177769f91e1d1cb1959790e607f9d30ee44339bc4da863eb6fe8b7457b533c5e22e0bc4855a20229c7ecd193e917cb695b26a84d721f4707dac53e9485234ebeed7bb505f0fa1393aff820462bdd1e26c14c541e551ab6ffb9d7b7e280e33f7b2ec30eb14f4d635a57fb568bf9c420f197673a5cb4d8b15f9e8c743af983232796e8de52887a9f5f194ba589332fbc9de824d33c05de9d1b71fe7e5e628330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11f00 -Len = 4095 -Result = F (Incorrect last byte) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = dce55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86ad0e8e96cd5a7c6c693676ccc625e1208c59723631f216c1155eeac9205705aad83b01a11926d8ca477d047449d3fa2068660cdc61bef02439aea352bd32da7d2e5cf2ddaccdcd6a6eb7492f3b5af9a0bdf93427ef99218bef4d72588f943bd9b8f2a404ba061feb1d48c8430b3f2fe5de5c4fe9af5a48359bd91fa5d93a4d83d96b27177769f91e1d1cb1959790e607f9d30ee44339bc4da863eb6fe8b7457b533c5e22e0bc4855a20229c7ecd193e917cb695b26a84d721f4707dac53e9485234ebeed7bb505f0fa1393aff820462bdd1e26c14c541e551ab6ffb9d7b7e280e33f7b2ec30eb14f4d635a57fb568bf9c420f197673a5cb4d8b15f9e8c743af983232796e8de52887a9f5f194ba589332fbc9de824d33c05de9d1b71fe7e5e628330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 4095 -Result = F (Incorrect top bits) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e45cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86ad0e8e96cd5a7c6c693676ccc625e1208c59723631f216c1155eeac9205705aad83b01a11926d8ca477d047449d3fa2068660cdc61bef02439aea352bd32da7d2e5cf2ddaccdcd6a6eb7492f3b5af9a0bdf93427ef99218bef4d72588f943bd9b8f2a404ba061feb1d48c8430b3f2fe5de5c4fe9af5a48359bd91fa5d93a4d83d96b27177769f91e1d1cb1959790e607f9d30ee44339bc4da863eb6fe8b7457b533c5e22e0bc4855a20229c7ecd193e917cb695b26a84d721f4707dac53e9485234ebeed7bb505f0fa1393aff820462bdd1e26c14c541e551ab6ffb9d7b7e280e33f7b2ec30eb14f4d635a57fb568bf9c420f197673a5cb4d8b15f9e8c743af983232796e8de52887a9f5f194ba589332fbc9de824d33c05de9d1b71fe7e5e628330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 4095 -Result = F (First byte of PS is not zero) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86ad0e8e96cd5a7c6c693676ccc625e1208c59723631f216c1155eeac9205705aad83b01a11926d8ca477d047449d3fa2068660cdc61bef02439aea352bd32da7d2e5cf2ddaccdcd6a6eb7492f3b5af9a0bdf93427ef99218bef4d72588f943bd9b8f2a404ba061feb1d48c8430b3f2fe5de5c4fe9af5a48359bd91fa5d93a4d83d96b27177769f91e1d1cb1959790e607f9d30ee44339bc4da863eb6fe8b7457b533c5e22e0bc4855a20229c7ecd193e917cb695b26a84d721f4707dac53e9485234ebeed7bb505f0fa1393aff820462bdd1e26c14c541e551ab6ffb9d7b7e280e33f7b2ec30eb14f4d635a57fb568bf9c420f197673a5cb4d8b15f9e8c743ae983232796e8de52887a9f5f194ba589332fbc9de824d33c05de9d1b71fe7e5e628330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 4095 -Result = F (Last byte of PS is not zero) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86ad0e8e96cd5a7c6c693676ccc625e1208c59723631f216c1155eeac9205705aad83b01a11926d8ca477d047449d3fa2068660cdc61bef02439aea352bd32da7d2e5cf2ddaccdcd6a6eb7492f3b5af9a0bdf93427ef99218bef4d72588f943bd9b8f2a404ba061feb1d48c8430b3f2fe5de5c4fe9af5a48359bd91fa5d93a4d83d96b27177769f91e1d1cb1959790e607f9d30ee44339bc4da863eb6fe8b7457b533c5e22e0bc4855a20229c7ecd193e917cb695b26a84d721f4707dac53e9485234ebeed7bb505f0fa1393aff820462bdd1e26c14c541e551ab6ffb9d7b7e280e33f7b2ec30eb14f4d635a57fb568bf9c420f197673a5cb4d8b15f9e8c743af993232796e8de52887a9f5f194ba589332fbc9de824d33c05de9d1b71fe7e5e628330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 4095 -Result = F (Byte following PS is not 0x01) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0cd2ba9e6c241267dcee3b04f26f23fbfa3ace11e8f1a6ca6627efe30ad1973a42983a5e29c1646ebc3a50dd34e5f4b7a28a190cd8998d55ace1f46f8c23adf039ce5b9f0eea14b2d158076d194de8d15ac28d8b907002252e224e53cf3f6d4eda63f761395a9178d0d0c3d34e4db38d4574818ee596ac34bbcdf861f13ef86ad0e8e96cd5a7c6c693676ccc625e1208c59723631f216c1155eeac9205705aad83b01a11926d8ca477d047449d3fa2068660cdc61bef02439aea352bd32da7d2e5cf2ddaccdcd6a6eb7492f3b5af9a0bdf93427ef99218bef4d72588f943bd9b8f2a404ba061feb1d48c8430b3f2fe5de5c4fe9af5a48359bd91fa5d93a4d83d96b27177769f91e1d1cb1959790e607f9d30ee44339bc4da863eb6fe8b7457b533c5e22e0bc4855a20229c7ecd193e917cb695b26a84d721f4707dac53e9485234ebeed7bb505f0fa1393aff820462bdd1e26c14c541e551ab6ffb9d7b7e280e33f7b2ec30eb14f4d635a57fb568bf9c420f197673a5cb4d8b15f9e8c743af98cd32796e8de52887a9f5f194ba589332fbc9de824d33c05de9d1b71fe7e5e628330868d2907d2999dd1a1ec37bb025f47b92f505dc9315ef35d57fafa7abb11fbc -Len = 4095 -Result = F (Incorrect salt) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 0d13c3bd731930511a0dda4c05e5de6a44f134bbd8574de0fc9eefdfb84c3823bfce96f9f0266c7a68fc99e8e507cedec9fbd9666c13fccb8d92ffed8b803f0d07b057d79522241a7a4a5adc3a88a291c4fbfab492d08847e18b80b76c3e33f5b37ec45d12b815a8fddbf94cdf80c0c4111e2a0c25924faa1cd045c4237c8007ff70064aaf1fd96d0fb34b68b045a695bd1d2bb758a1e04134a336be9fe5c4095f5944cd4ee1f4ade9ae83ef70801b96be4d7e1c3a6e14299b9668ef07cdb8f02cc31c2862b8ebebc039174c07c926240a6346c69abc75b005969775674a102f664b86f945ff2854879087d364f3117a276492dee29b317249180bd8cb9b6f10aefc6d5b0a09f278fc85f82055a45ebf2b67f75dfb913f72317ff2b1ef96edfce03fbe2e4ffa06078e9546a7f603b8af643be504b537309cfa93a0a1a0aa6352d84f955999b8f275249126a1d5239d043b6208355be3ab515c525ff9f37232f1ef4bc87ef807c7e6f9b80c58a190b2d80cbca97b380708f2902477663a0ebc751fdf4e6fb12a581a271cd8c1ac1b76460bc6618467ff770835bdd2aae4aa5e7438ba762d6b6204b0bcadc2b9b6737aa73befbb09673f0b647365c3ee3fc8aa3612c702d923d93338ef2b692f2fbaed51fd04624f0005aae511853dd00312861b54519e7ede927a1e43914b1fc965bfdf3940b9bdafe34ba91e8766f8b2a439bc -Len = 4095 -Result = F (Incorrect message hash) - -Digest = SHA384 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 137a60205de7c9f40c29d65a035bd96da8ec95a909f129a8f7c0be2b3ecf539f62667e51db71b8685da2cb3a727651e8fa399715262c9a4ab88bff1d8514ee299a196c75a09fbfd6b069bbc5c2d1fce2107e68fa4605086160b803a13d221d47e68c8dfd94e6cf54175588c363f5ba311a77c056c45d90fc9a60ba36ac8f07e319baf84003d2af51d313d6209aaa5ae8a3308cacaa35577a01742ea42e5cdd26ad15ee0cdde9b7776cb219532b0568909338d1096eab562a1a28261035fff7a40b35e2d988c3b9e421d3f35be3e359d325a25ce856a9077fa884fe96a287ce32eb28f5ce4a854f00575fad8fb53b5b8e405fbb3273d14eeda5141971d34d19cd50620a4ac5041c0622e43224e49df105dec2a4bd93536dfc470b363f0464ffda82ca5dfb7e2620fe210ccbc42344b85d937c6937f40ad69a5db1dc2b5b4d930cb8036d0b95644e792661f872cbe47b65f62c1fcd884c2387938fe303d3b7f1a20e989b5ed979398778924f70439df29482182478048afbb1be1da0e5961ecc38c1e9037b05bee4364877e2d090107abf8a9c46603e16c7013a370376c05daedf3dfa80ae9c6d7916e1029d7468f6c363d9a1b3dc7d01476894b4ea893df8d92b237289bcbf874608978c4ae30c680ac29889474c5b1dea85c5ec55cc2d5ad5d6776b2d234b96e2e80ed049c3cfc645967f5d5efb1d5c707585e8fa8bbb565300 -Len = 4096 -Result = F (Incorrect last byte) - -Digest = SHA384 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = ec7a60205de7c9f40c29d65a035bd96da8ec95a909f129a8f7c0be2b3ecf539f62667e51db71b8685da2cb3a727651e8fa399715262c9a4ab88bff1d8514ee299a196c75a09fbfd6b069bbc5c2d1fce2107e68fa4605086160b803a13d221d47e68c8dfd94e6cf54175588c363f5ba311a77c056c45d90fc9a60ba36ac8f07e319baf84003d2af51d313d6209aaa5ae8a3308cacaa35577a01742ea42e5cdd26ad15ee0cdde9b7776cb219532b0568909338d1096eab562a1a28261035fff7a40b35e2d988c3b9e421d3f35be3e359d325a25ce856a9077fa884fe96a287ce32eb28f5ce4a854f00575fad8fb53b5b8e405fbb3273d14eeda5141971d34d19cd50620a4ac5041c0622e43224e49df105dec2a4bd93536dfc470b363f0464ffda82ca5dfb7e2620fe210ccbc42344b85d937c6937f40ad69a5db1dc2b5b4d930cb8036d0b95644e792661f872cbe47b65f62c1fcd884c2387938fe303d3b7f1a20e989b5ed979398778924f70439df29482182478048afbb1be1da0e5961ecc38c1e9037b05bee4364877e2d090107abf8a9c46603e16c7013a370376c05daedf3dfa80ae9c6d7916e1029d7468f6c363d9a1b3dc7d01476894b4ea893df8d92b237289bcbf874608978c4ae30c680ac29889474c5b1dea85c5ec55cc2d5ad5d6776b2d234b96e2e80ed049c3cfc645967f5d5efb1d5c707585e8fa8bbb5653bc -Len = 4096 -Result = F (Incorrect top bits) - -Digest = SHA384 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 137b60205de7c9f40c29d65a035bd96da8ec95a909f129a8f7c0be2b3ecf539f62667e51db71b8685da2cb3a727651e8fa399715262c9a4ab88bff1d8514ee299a196c75a09fbfd6b069bbc5c2d1fce2107e68fa4605086160b803a13d221d47e68c8dfd94e6cf54175588c363f5ba311a77c056c45d90fc9a60ba36ac8f07e319baf84003d2af51d313d6209aaa5ae8a3308cacaa35577a01742ea42e5cdd26ad15ee0cdde9b7776cb219532b0568909338d1096eab562a1a28261035fff7a40b35e2d988c3b9e421d3f35be3e359d325a25ce856a9077fa884fe96a287ce32eb28f5ce4a854f00575fad8fb53b5b8e405fbb3273d14eeda5141971d34d19cd50620a4ac5041c0622e43224e49df105dec2a4bd93536dfc470b363f0464ffda82ca5dfb7e2620fe210ccbc42344b85d937c6937f40ad69a5db1dc2b5b4d930cb8036d0b95644e792661f872cbe47b65f62c1fcd884c2387938fe303d3b7f1a20e989b5ed979398778924f70439df29482182478048afbb1be1da0e5961ecc38c1e9037b05bee4364877e2d090107abf8a9c46603e16c7013a370376c05daedf3dfa80ae9c6d7916e1029d7468f6c363d9a1b3dc7d01476894b4ea893df8d92b237289bcbf874608978c4ae30c680ac29889474c5b1dea85c5ec55cc2d5ad5d6776b2d234b96e2e80ed049c3cfc645967f5d5efb1d5c707585e8fa8bbb5653bc -Len = 4096 -Result = F (First byte of PS is not zero) - -Digest = SHA384 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 137a60205de7c9f40c29d65a035bd96da8ec95a909f129a8f7c0be2b3ecf539f62667e51db71b8685da2cb3a727651e8fa399715262c9a4ab88bff1d8514ee299a196c75a09fbfd6b069bbc5c2d1fce2107e68fa4605086160b803a13d221d47e68c8dfd94e6cf54175588c363f5ba311a77c056c45d90fc9a60ba36ac8f07e319baf84003d2af51d313d6209aaa5ae8a3308cacaa35577a01742ea42e5cdd26ad15ee0cdde9b7776cb219532b0568909338d1096eab562a1a28261035fff7a40b35e2d988c3b9e421d3f35be3e359d325a25ce856a9077fa884fe96a287ce32eb28f5ce4a854f00575fad8fb53b5b8e405fbb3273d14eeda5141971d34d19cd50620a4ac5041c0622e43224e49df105dec2a4bd93536dfc470b363f0464ffda82ca5dfb7e2620fe210ccbc42344b85d937c6937f40ad69a5db1dc2b5b4d930cb8036d0b95644e792661f872cbe47b65f62c1fcd884c2387938fe303d3b7f1a20e989b5ed979398778924f70439df29482182478048afbb1be1da0e5961ecc38c1e9037b05bee4364877e2d090107abf8a9c46603e16c7013a370376c05caedf3dfa80ae9c6d7916e1029d7468f6c363d9a1b3dc7d01476894b4ea893df8d92b237289bcbf874608978c4ae30c680ac29889474c5b1dea85c5ec55cc2d5ad5d6776b2d234b96e2e80ed049c3cfc645967f5d5efb1d5c707585e8fa8bbb5653bc -Len = 4096 -Result = F (Last byte of PS is not zero) - -Digest = SHA384 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 137a60205de7c9f40c29d65a035bd96da8ec95a909f129a8f7c0be2b3ecf539f62667e51db71b8685da2cb3a727651e8fa399715262c9a4ab88bff1d8514ee299a196c75a09fbfd6b069bbc5c2d1fce2107e68fa4605086160b803a13d221d47e68c8dfd94e6cf54175588c363f5ba311a77c056c45d90fc9a60ba36ac8f07e319baf84003d2af51d313d6209aaa5ae8a3308cacaa35577a01742ea42e5cdd26ad15ee0cdde9b7776cb219532b0568909338d1096eab562a1a28261035fff7a40b35e2d988c3b9e421d3f35be3e359d325a25ce856a9077fa884fe96a287ce32eb28f5ce4a854f00575fad8fb53b5b8e405fbb3273d14eeda5141971d34d19cd50620a4ac5041c0622e43224e49df105dec2a4bd93536dfc470b363f0464ffda82ca5dfb7e2620fe210ccbc42344b85d937c6937f40ad69a5db1dc2b5b4d930cb8036d0b95644e792661f872cbe47b65f62c1fcd884c2387938fe303d3b7f1a20e989b5ed979398778924f70439df29482182478048afbb1be1da0e5961ecc38c1e9037b05bee4364877e2d090107abf8a9c46603e16c7013a370376c05dafdf3dfa80ae9c6d7916e1029d7468f6c363d9a1b3dc7d01476894b4ea893df8d92b237289bcbf874608978c4ae30c680ac29889474c5b1dea85c5ec55cc2d5ad5d6776b2d234b96e2e80ed049c3cfc645967f5d5efb1d5c707585e8fa8bbb5653bc -Len = 4096 -Result = F (Byte following PS is not 0x01) - -Digest = SHA384 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 137a60205de7c9f40c29d65a035bd96da8ec95a909f129a8f7c0be2b3ecf539f62667e51db71b8685da2cb3a727651e8fa399715262c9a4ab88bff1d8514ee299a196c75a09fbfd6b069bbc5c2d1fce2107e68fa4605086160b803a13d221d47e68c8dfd94e6cf54175588c363f5ba311a77c056c45d90fc9a60ba36ac8f07e319baf84003d2af51d313d6209aaa5ae8a3308cacaa35577a01742ea42e5cdd26ad15ee0cdde9b7776cb219532b0568909338d1096eab562a1a28261035fff7a40b35e2d988c3b9e421d3f35be3e359d325a25ce856a9077fa884fe96a287ce32eb28f5ce4a854f00575fad8fb53b5b8e405fbb3273d14eeda5141971d34d19cd50620a4ac5041c0622e43224e49df105dec2a4bd93536dfc470b363f0464ffda82ca5dfb7e2620fe210ccbc42344b85d937c6937f40ad69a5db1dc2b5b4d930cb8036d0b95644e792661f872cbe47b65f62c1fcd884c2387938fe303d3b7f1a20e989b5ed979398778924f70439df29482182478048afbb1be1da0e5961ecc38c1e9037b05bee4364877e2d090107abf8a9c46603e16c7013a370376c05dae203dfa80ae9c6d7916e1029d7468f6c363d9a1b3dc7d01476894b4ea893df8d92b237289bcbf874608978c4ae30c680ac29889474c5b1dea85c5ec55cc2d5ad5d6776b2d234b96e2e80ed049c3cfc645967f5d5efb1d5c707585e8fa8bbb5653bc -Len = 4096 -Result = F (Incorrect salt) - -Digest = SHA384 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 5c7fa159e0a1850fe9e68ae0b5c7bf5463e4d9dee092853d51b8ddf33246548c4590ebe1032a5cf9a681b755d57d830dc8080189c8865a5262eea7d3b06d0aa6da2aca63ff513153ae49abd3bed5946ad823bf635fc4ae2d3b44e724b4ed7c5d414099b9bd0170259ca2a330b78de35091531a6701f8558590e5c02342ac082dbdbb8e766c45ff7b29bf5fc018af30967fbe694aedc85543a2aed12483a79b7b5e2e29bc2975cf3e766a62f24bd845d9388a2f9c34bbe716db0afd82f01603cd0b2ab94c0a48f8b583566d41fde7a5374bd048db0d63d9c03f5b2cf5e9f925c96b9fdf6f267e4121ed6ca72bd645bd41d443ffe6e729d069602344d02e3fccab3b9189511cfa0500e175715b9c4924f55d7b32482a396b36ad44a847b11564c2d3a1a0a48500d9784f3b7b6e2c63778f61bcf9afada5a35c1121f17f465477ef437b506e92b5cad3b95ed4683047003e0fffd2ecde0d0c89381b2a4e3b295084fd926db58f9b80261183725564b8d654f0302d5cfe8d9af0132ca11720f60a0d72db898c25d2784069a3c2d46c637371e96bcb3c53f15194c1318962fd4357d552fd14842615976aef266ed9637a33d90bbf3ab69595369a7065be90f0f24b21203de20cb30374b473919f8aca7b0c4544f976e720c05f87d02b4efa8871318da27238ad1b6414d83ad6499efe86071e6fe0b3c396d408593d60a2a524630bbc -Len = 4096 -Result = F (Incorrect message hash) - -Digest = SHA512 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 485255700ee4e6964ba0a867b650f5d3cac3380b59ec58c72a5d44156f7273f7ccf88edb48a3c7f6c07dfd03b9f8a907f0e7d98e38ee174edf9fe79159cddebafe1cbd586fdaf192d347d56867b3a3eb756ee3c51afbb9f4b1ccb00059abcfa51ef3facd58af14362db77c6c8bb387a5228d105388ff31b21c0b30d90e44956dbd2d9e1b11bd362d64e1fe89ea4e21d5ee47681745a957238f6bceb748cbecb4591c093561263f22ebafcd66c9e7b2793687459752bc80cfe7a74e188433b07d941689697fbdb5eb4850f5534315360fe5b439559a93f57e3a0cad473a3debcc92304b08112c9b6ef227206d5f14a7037fd417d1c37f600c9df6f0083de6db4070781e60d3dffd4eebefe15f1adcdc74610273296a4112e8b6a4305d7f88eb3029a27e7d96dcc9549c33b1de6ec8485c925065773a0eba301b892777c4a62a0390109153e86bb012234cf2510db791618756df830a49cfa2a27fae064df4d245430084111690f21ee89507fcad3de886c9a476e75d4c18b3913db58bbdb63317300667d4478b199690eee146db164658c81e34e726dbe3eee54f655536679a618b08fe96df77554387ad1494756806881f67edbed89bd1b09bdd453d2eb84349aa813fbf982e83f1ec4dbdabc9a1f54691566f479d465cd82372d267ab98c28c5547f558b8708535a426fda410797ebd41b755cd72f7d798475d443a73271c3664c5f1ed6cc61d5f55a01b5107eb8f42123f70220dac7b3a543e8c91c5c67e20dfd41619b15e1ce4de0142b6e73ccc0994d23de5243c155020f7ad8c0e66882157da99bf76def2decbe6cb55730f1626ee24ee2e68d12efc0efa06aff03c6c25ecb292cc4645a7bd97725a3b32f0d8c4ace785991e88406541b5875db86cf8d19daeaa19f6834aafb46b8f9b0606a0905ea0f0b3671c5fb3d552acee4ce34b6fd33bd58ac36cf97e179096973c1f75b4b49e7efd931a8f3396dd2e9c22a98288933ce97ee90da8b84405fb51c78f998aaff125ee2817b5fbb45d004f6a73be6fab9a09ef86509658fefbb4cc7c1cbd3e4b0a8fc15a32d2e5e0d394c2504afa1ee72a19e72a1dc92a296047a09b557ec3e25ec430de6edd84d5a5dbf4f5344218a8921443aa1f20679e1be0e9bdbee226898c1b4bf100c0fa069ca9d11ca2560aff9a87caf328c4aa07796a9acac94bb501fbee6add688547132f1c3c37ee6e5e475f9ed97b19a47b62786826995073ffda44f8899c9ba08191777b228d33aec6e9fdd4fd20d10cc36e45d4c8b31905c0be8110add3dc573ce006bb08eb34cea61703cd8fa05e26de042be50d6f42a0ae6363bf6c5e9a3a202f41de1d098e525a2413f759483bf8b4d9956f463798028cfc5695d8cee89506eb5b4a61cd63cbb5b7738cfee0edd94be6ffa6f7c57f258f816015e9f20daeb061150e698596c300 -Len = 8192 -Result = F (Incorrect last byte) - -Digest = SHA512 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = b75255700ee4e6964ba0a867b650f5d3cac3380b59ec58c72a5d44156f7273f7ccf88edb48a3c7f6c07dfd03b9f8a907f0e7d98e38ee174edf9fe79159cddebafe1cbd586fdaf192d347d56867b3a3eb756ee3c51afbb9f4b1ccb00059abcfa51ef3facd58af14362db77c6c8bb387a5228d105388ff31b21c0b30d90e44956dbd2d9e1b11bd362d64e1fe89ea4e21d5ee47681745a957238f6bceb748cbecb4591c093561263f22ebafcd66c9e7b2793687459752bc80cfe7a74e188433b07d941689697fbdb5eb4850f5534315360fe5b439559a93f57e3a0cad473a3debcc92304b08112c9b6ef227206d5f14a7037fd417d1c37f600c9df6f0083de6db4070781e60d3dffd4eebefe15f1adcdc74610273296a4112e8b6a4305d7f88eb3029a27e7d96dcc9549c33b1de6ec8485c925065773a0eba301b892777c4a62a0390109153e86bb012234cf2510db791618756df830a49cfa2a27fae064df4d245430084111690f21ee89507fcad3de886c9a476e75d4c18b3913db58bbdb63317300667d4478b199690eee146db164658c81e34e726dbe3eee54f655536679a618b08fe96df77554387ad1494756806881f67edbed89bd1b09bdd453d2eb84349aa813fbf982e83f1ec4dbdabc9a1f54691566f479d465cd82372d267ab98c28c5547f558b8708535a426fda410797ebd41b755cd72f7d798475d443a73271c3664c5f1ed6cc61d5f55a01b5107eb8f42123f70220dac7b3a543e8c91c5c67e20dfd41619b15e1ce4de0142b6e73ccc0994d23de5243c155020f7ad8c0e66882157da99bf76def2decbe6cb55730f1626ee24ee2e68d12efc0efa06aff03c6c25ecb292cc4645a7bd97725a3b32f0d8c4ace785991e88406541b5875db86cf8d19daeaa19f6834aafb46b8f9b0606a0905ea0f0b3671c5fb3d552acee4ce34b6fd33bd58ac36cf97e179096973c1f75b4b49e7efd931a8f3396dd2e9c22a98288933ce97ee90da8b84405fb51c78f998aaff125ee2817b5fbb45d004f6a73be6fab9a09ef86509658fefbb4cc7c1cbd3e4b0a8fc15a32d2e5e0d394c2504afa1ee72a19e72a1dc92a296047a09b557ec3e25ec430de6edd84d5a5dbf4f5344218a8921443aa1f20679e1be0e9bdbee226898c1b4bf100c0fa069ca9d11ca2560aff9a87caf328c4aa07796a9acac94bb501fbee6add688547132f1c3c37ee6e5e475f9ed97b19a47b62786826995073ffda44f8899c9ba08191777b228d33aec6e9fdd4fd20d10cc36e45d4c8b31905c0be8110add3dc573ce006bb08eb34cea61703cd8fa05e26de042be50d6f42a0ae6363bf6c5e9a3a202f41de1d098e525a2413f759483bf8b4d9956f463798028cfc5695d8cee89506eb5b4a61cd63cbb5b7738cfee0edd94be6ffa6f7c57f258f816015e9f20daeb061150e698596c3bc -Len = 8192 -Result = F (Incorrect top bits) - -Digest = SHA512 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 485355700ee4e6964ba0a867b650f5d3cac3380b59ec58c72a5d44156f7273f7ccf88edb48a3c7f6c07dfd03b9f8a907f0e7d98e38ee174edf9fe79159cddebafe1cbd586fdaf192d347d56867b3a3eb756ee3c51afbb9f4b1ccb00059abcfa51ef3facd58af14362db77c6c8bb387a5228d105388ff31b21c0b30d90e44956dbd2d9e1b11bd362d64e1fe89ea4e21d5ee47681745a957238f6bceb748cbecb4591c093561263f22ebafcd66c9e7b2793687459752bc80cfe7a74e188433b07d941689697fbdb5eb4850f5534315360fe5b439559a93f57e3a0cad473a3debcc92304b08112c9b6ef227206d5f14a7037fd417d1c37f600c9df6f0083de6db4070781e60d3dffd4eebefe15f1adcdc74610273296a4112e8b6a4305d7f88eb3029a27e7d96dcc9549c33b1de6ec8485c925065773a0eba301b892777c4a62a0390109153e86bb012234cf2510db791618756df830a49cfa2a27fae064df4d245430084111690f21ee89507fcad3de886c9a476e75d4c18b3913db58bbdb63317300667d4478b199690eee146db164658c81e34e726dbe3eee54f655536679a618b08fe96df77554387ad1494756806881f67edbed89bd1b09bdd453d2eb84349aa813fbf982e83f1ec4dbdabc9a1f54691566f479d465cd82372d267ab98c28c5547f558b8708535a426fda410797ebd41b755cd72f7d798475d443a73271c3664c5f1ed6cc61d5f55a01b5107eb8f42123f70220dac7b3a543e8c91c5c67e20dfd41619b15e1ce4de0142b6e73ccc0994d23de5243c155020f7ad8c0e66882157da99bf76def2decbe6cb55730f1626ee24ee2e68d12efc0efa06aff03c6c25ecb292cc4645a7bd97725a3b32f0d8c4ace785991e88406541b5875db86cf8d19daeaa19f6834aafb46b8f9b0606a0905ea0f0b3671c5fb3d552acee4ce34b6fd33bd58ac36cf97e179096973c1f75b4b49e7efd931a8f3396dd2e9c22a98288933ce97ee90da8b84405fb51c78f998aaff125ee2817b5fbb45d004f6a73be6fab9a09ef86509658fefbb4cc7c1cbd3e4b0a8fc15a32d2e5e0d394c2504afa1ee72a19e72a1dc92a296047a09b557ec3e25ec430de6edd84d5a5dbf4f5344218a8921443aa1f20679e1be0e9bdbee226898c1b4bf100c0fa069ca9d11ca2560aff9a87caf328c4aa07796a9acac94bb501fbee6add688547132f1c3c37ee6e5e475f9ed97b19a47b62786826995073ffda44f8899c9ba08191777b228d33aec6e9fdd4fd20d10cc36e45d4c8b31905c0be8110add3dc573ce006bb08eb34cea61703cd8fa05e26de042be50d6f42a0ae6363bf6c5e9a3a202f41de1d098e525a2413f759483bf8b4d9956f463798028cfc5695d8cee89506eb5b4a61cd63cbb5b7738cfee0edd94be6ffa6f7c57f258f816015e9f20daeb061150e698596c3bc -Len = 8192 -Result = F (First byte of PS is not zero) - -Digest = SHA512 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 485255700ee4e6964ba0a867b650f5d3cac3380b59ec58c72a5d44156f7273f7ccf88edb48a3c7f6c07dfd03b9f8a907f0e7d98e38ee174edf9fe79159cddebafe1cbd586fdaf192d347d56867b3a3eb756ee3c51afbb9f4b1ccb00059abcfa51ef3facd58af14362db77c6c8bb387a5228d105388ff31b21c0b30d90e44956dbd2d9e1b11bd362d64e1fe89ea4e21d5ee47681745a957238f6bceb748cbecb4591c093561263f22ebafcd66c9e7b2793687459752bc80cfe7a74e188433b07d941689697fbdb5eb4850f5534315360fe5b439559a93f57e3a0cad473a3debcc92304b08112c9b6ef227206d5f14a7037fd417d1c37f600c9df6f0083de6db4070781e60d3dffd4eebefe15f1adcdc74610273296a4112e8b6a4305d7f88eb3029a27e7d96dcc9549c33b1de6ec8485c925065773a0eba301b892777c4a62a0390109153e86bb012234cf2510db791618756df830a49cfa2a27fae064df4d245430084111690f21ee89507fcad3de886c9a476e75d4c18b3913db58bbdb63317300667d4478b199690eee146db164658c81e34e726dbe3eee54f655536679a618b08fe96df77554387ad1494756806881f67edbed89bd1b09bdd453d2eb84349aa813fbf982e83f1ec4dbdabc9a1f54691566f479d465cd82372d267ab98c28c5547f558b8708535a426fda410797ebd41b755cd72f7d798475d443a73271c3664c5f1ed6cc61d5f55a01b5107eb8f42123f70220dac7b3a543e8c91c5c67e20dfd41619b15e1ce4de0142b6e73ccc0994d23de5243c155020f7ad8c0e66882157da99bf76def2decbe6cb55730f1626ee24ee2e68d12efc0efa06aff03c6c25ecb292cc4645a7bd97725a3b32f0d8c4ace785991e88406541b5875db86cf8d19daeaa19f6834aafb46b8f9b0606a0905ea0f0b3671c5fb3d552acee4ce34b6fd33bd58ac36cf97e179096973c1f75b4b49e7efd931a8f3396dd2e9c22a98288933ce97ee90da8b84405fb51c78f998aaff125ee2817b5fbb45d004f6a73be6fab9a09ef86509658fefbb4cc7c1cbd3e4b0a8fc15a32d2e5e0d394c2504afa1ee72a19e72a1dc92a296047a09b557ec3e25ec430de6edd84d5a5dbf4f5344218a8921443aa1f20679e1be0e9bdbee226898c1b4bf100c0fa069ca9d11ca2560aff9a87caf328c4aa07796a9acac94bb501fbee6add688547132f1c3c37ee6e5e475f9ed97b19a47b62786826995073ffda44f8899c9ba08191777b228d32aec6e9fdd4fd20d10cc36e45d4c8b31905c0be8110add3dc573ce006bb08eb34cea61703cd8fa05e26de042be50d6f42a0ae6363bf6c5e9a3a202f41de1d098e525a2413f759483bf8b4d9956f463798028cfc5695d8cee89506eb5b4a61cd63cbb5b7738cfee0edd94be6ffa6f7c57f258f816015e9f20daeb061150e698596c3bc -Len = 8192 -Result = F (Last byte of PS is not zero) - -Digest = SHA512 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 485255700ee4e6964ba0a867b650f5d3cac3380b59ec58c72a5d44156f7273f7ccf88edb48a3c7f6c07dfd03b9f8a907f0e7d98e38ee174edf9fe79159cddebafe1cbd586fdaf192d347d56867b3a3eb756ee3c51afbb9f4b1ccb00059abcfa51ef3facd58af14362db77c6c8bb387a5228d105388ff31b21c0b30d90e44956dbd2d9e1b11bd362d64e1fe89ea4e21d5ee47681745a957238f6bceb748cbecb4591c093561263f22ebafcd66c9e7b2793687459752bc80cfe7a74e188433b07d941689697fbdb5eb4850f5534315360fe5b439559a93f57e3a0cad473a3debcc92304b08112c9b6ef227206d5f14a7037fd417d1c37f600c9df6f0083de6db4070781e60d3dffd4eebefe15f1adcdc74610273296a4112e8b6a4305d7f88eb3029a27e7d96dcc9549c33b1de6ec8485c925065773a0eba301b892777c4a62a0390109153e86bb012234cf2510db791618756df830a49cfa2a27fae064df4d245430084111690f21ee89507fcad3de886c9a476e75d4c18b3913db58bbdb63317300667d4478b199690eee146db164658c81e34e726dbe3eee54f655536679a618b08fe96df77554387ad1494756806881f67edbed89bd1b09bdd453d2eb84349aa813fbf982e83f1ec4dbdabc9a1f54691566f479d465cd82372d267ab98c28c5547f558b8708535a426fda410797ebd41b755cd72f7d798475d443a73271c3664c5f1ed6cc61d5f55a01b5107eb8f42123f70220dac7b3a543e8c91c5c67e20dfd41619b15e1ce4de0142b6e73ccc0994d23de5243c155020f7ad8c0e66882157da99bf76def2decbe6cb55730f1626ee24ee2e68d12efc0efa06aff03c6c25ecb292cc4645a7bd97725a3b32f0d8c4ace785991e88406541b5875db86cf8d19daeaa19f6834aafb46b8f9b0606a0905ea0f0b3671c5fb3d552acee4ce34b6fd33bd58ac36cf97e179096973c1f75b4b49e7efd931a8f3396dd2e9c22a98288933ce97ee90da8b84405fb51c78f998aaff125ee2817b5fbb45d004f6a73be6fab9a09ef86509658fefbb4cc7c1cbd3e4b0a8fc15a32d2e5e0d394c2504afa1ee72a19e72a1dc92a296047a09b557ec3e25ec430de6edd84d5a5dbf4f5344218a8921443aa1f20679e1be0e9bdbee226898c1b4bf100c0fa069ca9d11ca2560aff9a87caf328c4aa07796a9acac94bb501fbee6add688547132f1c3c37ee6e5e475f9ed97b19a47b62786826995073ffda44f8899c9ba08191777b228d33afc6e9fdd4fd20d10cc36e45d4c8b31905c0be8110add3dc573ce006bb08eb34cea61703cd8fa05e26de042be50d6f42a0ae6363bf6c5e9a3a202f41de1d098e525a2413f759483bf8b4d9956f463798028cfc5695d8cee89506eb5b4a61cd63cbb5b7738cfee0edd94be6ffa6f7c57f258f816015e9f20daeb061150e698596c3bc -Len = 8192 -Result = F (Byte following PS is not 0x01) - -Digest = SHA512 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 485255700ee4e6964ba0a867b650f5d3cac3380b59ec58c72a5d44156f7273f7ccf88edb48a3c7f6c07dfd03b9f8a907f0e7d98e38ee174edf9fe79159cddebafe1cbd586fdaf192d347d56867b3a3eb756ee3c51afbb9f4b1ccb00059abcfa51ef3facd58af14362db77c6c8bb387a5228d105388ff31b21c0b30d90e44956dbd2d9e1b11bd362d64e1fe89ea4e21d5ee47681745a957238f6bceb748cbecb4591c093561263f22ebafcd66c9e7b2793687459752bc80cfe7a74e188433b07d941689697fbdb5eb4850f5534315360fe5b439559a93f57e3a0cad473a3debcc92304b08112c9b6ef227206d5f14a7037fd417d1c37f600c9df6f0083de6db4070781e60d3dffd4eebefe15f1adcdc74610273296a4112e8b6a4305d7f88eb3029a27e7d96dcc9549c33b1de6ec8485c925065773a0eba301b892777c4a62a0390109153e86bb012234cf2510db791618756df830a49cfa2a27fae064df4d245430084111690f21ee89507fcad3de886c9a476e75d4c18b3913db58bbdb63317300667d4478b199690eee146db164658c81e34e726dbe3eee54f655536679a618b08fe96df77554387ad1494756806881f67edbed89bd1b09bdd453d2eb84349aa813fbf982e83f1ec4dbdabc9a1f54691566f479d465cd82372d267ab98c28c5547f558b8708535a426fda410797ebd41b755cd72f7d798475d443a73271c3664c5f1ed6cc61d5f55a01b5107eb8f42123f70220dac7b3a543e8c91c5c67e20dfd41619b15e1ce4de0142b6e73ccc0994d23de5243c155020f7ad8c0e66882157da99bf76def2decbe6cb55730f1626ee24ee2e68d12efc0efa06aff03c6c25ecb292cc4645a7bd97725a3b32f0d8c4ace785991e88406541b5875db86cf8d19daeaa19f6834aafb46b8f9b0606a0905ea0f0b3671c5fb3d552acee4ce34b6fd33bd58ac36cf97e179096973c1f75b4b49e7efd931a8f3396dd2e9c22a98288933ce97ee90da8b84405fb51c78f998aaff125ee2817b5fbb45d004f6a73be6fab9a09ef86509658fefbb4cc7c1cbd3e4b0a8fc15a32d2e5e0d394c2504afa1ee72a19e72a1dc92a296047a09b557ec3e25ec430de6edd84d5a5dbf4f5344218a8921443aa1f20679e1be0e9bdbee226898c1b4bf100c0fa069ca9d11ca2560aff9a87caf328c4aa07796a9acac94bb501fbee6add688547132f1c3c37ee6e5e475f9ed97b19a47b62786826995073ffda44f8899c9ba08191777b228d33ae39e9fdd4fd20d10cc36e45d4c8b31905c0be8110add3dc573ce006bb08eb34cea61703cd8fa05e26de042be50d6f42a0ae6363bf6c5e9a3a202f41de1d098e525a2413f759483bf8b4d9956f463798028cfc5695d8cee89506eb5b4a61cd63cbb5b7738cfee0edd94be6ffa6f7c57f258f816015e9f20daeb061150e698596c3bc -Len = 8192 -Result = F (Incorrect salt) - -Digest = SHA512 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 6ee75da53caedcd3b27c1e9b670651eb6d8ccf564da7c2a4b2e6e831f28256a21d44f347f0338cd778834586fb5a3d0e91cb1e9db444c294881614930b40af9502fc4c8667712ee46c7d89ae313949fad6fb1a11da6a71bb757786061cfbd24723d0114f02b58a4fbe00d43416d7870966919abbbfb9ac76b68fe7d1356f1a279c7054696a019c4d43bd75a67ab919f99980eef066991057787d5e1b328833f791350d29d4524478b4751facd1c0852d4e375a0df1a51e7a0915eb7fb046087039fdb5e8c67e5901ad688f3a0569debcfd177fa51882de254b8cb281bdd45475d02365cabcc7d4939d0507cb80fe042845e52853c1db12a73b7fe2ced4722679f074e6b9468431aeb06b88287412b93d729fd7c63babc4926f493a26aa0ee487e7754d92d8b6110dcdcc966a0fd4418b073ef461b1a338aa300b80d56b215635dcf4794d15eae0713da7a7cc74b9775edeea777065415be1cc55ad96b7d1badc5fc16414756faf69ebe7148f05e47ca6ceae4804167ef0bb876ed5cbeb81de01abf22cd419bdc14caa8c3829383988e2d7c54be3b9d64ccd584b6f0ed7fff83cf2039a457c0684f4e6f847b629465da61c3b8a7d711ebebc67214e2e4eda47847576a43a58b7f00cfc2efa207e7bca5930e3253bb520e8cbecd216336e2c62405de992da3797625a3bc79d9c2b28e908db98d543b794df1e9b58995669a044e46abb3a7b1fe231351014f6d9c4dac1f145f47661c3cab5330362406da10e3758f51195cb7d48fecc7026b0845e7d7695c87649e99d30bfc1dc36d7446a11eab59f70bafd5996435958abf656821c146e5fb86e371294c5432145eb0c20e0323e95c93130de92a189987710d4266d07c1298e97df863ce662e06c01afbb5b51d32546378d43993fde40474710c49656d4b0b596050498d5fc8a14b52acc34d69aefd1faf0a3f68d48d9162f6f0d1377b21b2ef5ae97513f1603d3d86293d5326fa1428c26a11df67349cf8bfdeb623047d6a84bdce4b58c6c03e69abed6342dc301d0d376447bb30df46afed76a3487b778928e814fbb0dcac7b94c4fd1f569e66d217818dbb45c481df1c3e2351d4d5ece2e3639ef82bf58880d4459ae118e7c2ff2f2107110ea7ea1bce4d19646d10c1eac9d44e9f8d316186086ab61d214f96ae68b7cd1f1eda9f05488e30b0e452767f4e7395b072d721f566873bdae6e45313ec3ec2d4bfb04be3095091e34d48e185ba1d46ee6b61195e2df9528cfb9247a1921ef83de4152cd60f5dc9f9eeae0efe47b566a26043ca8d3a5640fe6388aa84e1083c07cd1ec1555f528f1893cddc2a01f6da125f692fbc9c7a9832dc602de8b5dab65d8025994c0a871259654275ba3786ea3004a33ab12a42d995c71976b519adec222c75e1ab59daa4111e3ff21d8f4ccca6e15a4144669711854ccbc -Len = 8192 -Result = F (Incorrect message hash) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c -Len = 256 -Result = F (Invalid length) - -Digest = SHA256 -Msg = "" -Salt = f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 -EM = 23e55cbec753a80ab764cb3f9fa29b05a24f2f0b388a5e1082babf37f7d7f60c566e4452dd03fe9153f009aafc0cda10a01cf9f72a8754f618fc0b67de8b2a0c -Len = 512 -Result = F (Invalid length) - diff -Nru temporalio-1.3.0/vendor/ring/src/rsa/signing.rs temporalio-1.3.0/vendor/ring/src/rsa/signing.rs --- temporalio-1.3.0/vendor/ring/src/rsa/signing.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/rsa/signing.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,645 +0,0 @@ -// Copyright 2015-2016 Brian Smith. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY -// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION -// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -use super::{ - bigint::{self, Prime}, - verification, RsaEncoding, N, -}; -/// RSA PKCS#1 1.5 signatures. -use crate::{ - arithmetic::montgomery::R, - bits, digest, - error::{self, KeyRejected}, - io::{self, der, der_writer}, - pkcs8, rand, signature, -}; -use alloc::boxed::Box; - -/// An RSA key pair, used for signing. -pub struct RsaKeyPair { - p: PrivatePrime

, - q: PrivatePrime, - qInv: bigint::Elem, - qq: bigint::Modulus, - q_mod_n: bigint::Elem, - public: verification::Key, - public_key: RsaSubjectPublicKey, -} - -derive_debug_via_field!(RsaKeyPair, stringify!(RsaKeyPair), public_key); - -impl RsaKeyPair { - /// Parses an unencrypted PKCS#8-encoded RSA private key. - /// - /// Only two-prime (not multi-prime) keys are supported. The public modulus - /// (n) must be at least 2047 bits. The public modulus must be no larger - /// than 4096 bits. It is recommended that the public modulus be exactly - /// 2048 or 3072 bits. The public exponent must be at least 65537. - /// - /// This will generate a 2048-bit RSA private key of the correct form using - /// OpenSSL's command line tool: - /// - /// ```sh - /// openssl genpkey -algorithm RSA \ - /// -pkeyopt rsa_keygen_bits:2048 \ - /// -pkeyopt rsa_keygen_pubexp:65537 | \ - /// openssl pkcs8 -topk8 -nocrypt -outform der > rsa-2048-private-key.pk8 - /// ``` - /// - /// This will generate a 3072-bit RSA private key of the correct form: - /// - /// ```sh - /// openssl genpkey -algorithm RSA \ - /// -pkeyopt rsa_keygen_bits:3072 \ - /// -pkeyopt rsa_keygen_pubexp:65537 | \ - /// openssl pkcs8 -topk8 -nocrypt -outform der > rsa-3072-private-key.pk8 - /// ``` - /// - /// Often, keys generated for use in OpenSSL-based software are stored in - /// the Base64 “PEM†format without the PKCS#8 wrapper. Such keys can be - /// converted to binary PKCS#8 form using the OpenSSL command line tool like - /// this: - /// - /// ```sh - /// openssl pkcs8 -topk8 -nocrypt -outform der \ - /// -in rsa-2048-private-key.pem > rsa-2048-private-key.pk8 - /// ``` - /// - /// Base64 (“PEMâ€) PKCS#8-encoded keys can be converted to the binary PKCS#8 - /// form like this: - /// - /// ```sh - /// openssl pkcs8 -nocrypt -outform der \ - /// -in rsa-2048-private-key.pem > rsa-2048-private-key.pk8 - /// ``` - /// - /// The private key is validated according to [NIST SP-800-56B rev. 1] - /// section 6.4.1.4.3, crt_pkv (Intended Exponent-Creation Method Unknown), - /// with the following exceptions: - /// - /// * Section 6.4.1.2.1, Step 1: Neither a target security level nor an - /// expected modulus length is provided as a parameter, so checks - /// regarding these expectations are not done. - /// * Section 6.4.1.2.1, Step 3: Since neither the public key nor the - /// expected modulus length is provided as a parameter, the consistency - /// check between these values and the private key's value of n isn't - /// done. - /// * Section 6.4.1.2.1, Step 5: No primality tests are done, both for - /// performance reasons and to avoid any side channels that such tests - /// would provide. - /// * Section 6.4.1.2.1, Step 6, and 6.4.1.4.3, Step 7: - /// * *ring* has a slightly looser lower bound for the values of `p` - /// and `q` than what the NIST document specifies. This looser lower - /// bound matches what most other crypto libraries do. The check might - /// be tightened to meet NIST's requirements in the future. Similarly, - /// the check that `p` and `q` are not too close together is skipped - /// currently, but may be added in the future. - /// - The validity of the mathematical relationship of `dP`, `dQ`, `e` - /// and `n` is verified only during signing. Some size checks of `d`, - /// `dP` and `dQ` are performed at construction, but some NIST checks - /// are skipped because they would be expensive and/or they would leak - /// information through side channels. If a preemptive check of the - /// consistency of `dP`, `dQ`, `e` and `n` with each other is - /// necessary, that can be done by signing any message with the key - /// pair. - /// - /// * `d` is not fully validated, neither at construction nor during - /// signing. This is OK as far as *ring*'s usage of the key is - /// concerned because *ring* never uses the value of `d` (*ring* always - /// uses `p`, `q`, `dP` and `dQ` via the Chinese Remainder Theorem, - /// instead). However, *ring*'s checks would not be sufficient for - /// validating a key pair for use by some other system; that other - /// system must check the value of `d` itself if `d` is to be used. - /// - /// In addition to the NIST requirements, *ring* requires that `p > q` and - /// that `e` must be no more than 33 bits. - /// - /// See [RFC 5958] and [RFC 3447 Appendix A.1.2] for more details of the - /// encoding of the key. - /// - /// [NIST SP-800-56B rev. 1]: - /// http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Br1.pdf - /// - /// [RFC 3447 Appendix A.1.2]: - /// https://tools.ietf.org/html/rfc3447#appendix-A.1.2 - /// - /// [RFC 5958]: - /// https://tools.ietf.org/html/rfc5958 - pub fn from_pkcs8(pkcs8: &[u8]) -> Result { - const RSA_ENCRYPTION: &[u8] = include_bytes!("../data/alg-rsa-encryption.der"); - let (der, _) = pkcs8::unwrap_key_( - untrusted::Input::from(&RSA_ENCRYPTION), - pkcs8::Version::V1Only, - untrusted::Input::from(pkcs8), - )?; - Self::from_der(der.as_slice_less_safe()) - } - - /// Parses an RSA private key that is not inside a PKCS#8 wrapper. - /// - /// The private key must be encoded as a binary DER-encoded ASN.1 - /// `RSAPrivateKey` as described in [RFC 3447 Appendix A.1.2]). In all other - /// respects, this is just like `from_pkcs8()`. See the documentation for - /// `from_pkcs8()` for more details. - /// - /// It is recommended to use `from_pkcs8()` (with a PKCS#8-encoded key) - /// instead. - /// - /// [RFC 3447 Appendix A.1.2]: - /// https://tools.ietf.org/html/rfc3447#appendix-A.1.2 - /// - /// [NIST SP-800-56B rev. 1]: - /// http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Br1.pdf - pub fn from_der(input: &[u8]) -> Result { - untrusted::Input::from(input).read_all(KeyRejected::invalid_encoding(), |input| { - der::nested( - input, - der::Tag::Sequence, - error::KeyRejected::invalid_encoding(), - Self::from_der_reader, - ) - }) - } - - fn from_der_reader(input: &mut untrusted::Reader) -> Result { - let version = der::small_nonnegative_integer(input) - .map_err(|error::Unspecified| KeyRejected::invalid_encoding())?; - if version != 0 { - return Err(KeyRejected::version_not_supported()); - } - - fn positive_integer<'a>( - input: &mut untrusted::Reader<'a>, - ) -> Result, KeyRejected> { - der::positive_integer(input) - .map_err(|error::Unspecified| KeyRejected::invalid_encoding()) - } - - let n = positive_integer(input)?; - let e = positive_integer(input)?; - let d = positive_integer(input)?.big_endian_without_leading_zero_as_input(); - let p = positive_integer(input)?.big_endian_without_leading_zero_as_input(); - let q = positive_integer(input)?.big_endian_without_leading_zero_as_input(); - let dP = positive_integer(input)?.big_endian_without_leading_zero_as_input(); - let dQ = positive_integer(input)?.big_endian_without_leading_zero_as_input(); - let qInv = positive_integer(input)?.big_endian_without_leading_zero_as_input(); - - let (p, p_bits) = bigint::Nonnegative::from_be_bytes_with_bit_length(p) - .map_err(|error::Unspecified| KeyRejected::invalid_encoding())?; - let (q, q_bits) = bigint::Nonnegative::from_be_bytes_with_bit_length(q) - .map_err(|error::Unspecified| KeyRejected::invalid_encoding())?; - - // Our implementation of CRT-based modular exponentiation used requires - // that `p > q` so swap them if `p < q`. If swapped, `qInv` is - // recalculated below. `p != q` is verified implicitly below, e.g. when - // `q_mod_p` is constructed. - let ((p, p_bits, dP), (q, q_bits, dQ, qInv)) = match q.verify_less_than(&p) { - Ok(_) => ((p, p_bits, dP), (q, q_bits, dQ, Some(qInv))), - Err(error::Unspecified) => { - // TODO: verify `q` and `qInv` are inverses (mod p). - ((q, q_bits, dQ), (p, p_bits, dP, None)) - } - }; - - // XXX: Some steps are done out of order, but the NIST steps are worded - // in such a way that it is clear that NIST intends for them to be done - // in order. TODO: Does this matter at all? - - // 6.4.1.4.3/6.4.1.2.1 - Step 1. - - // Step 1.a is omitted, as explained above. - - // Step 1.b is omitted per above. Instead, we check that the public - // modulus is 2048 to `PRIVATE_KEY_PUBLIC_MODULUS_MAX_BITS` bits. - // XXX: The maximum limit of 4096 bits is primarily due to lack of - // testing of larger key sizes; see, in particular, - // https://www.mail-archive.com/openssl-dev@openssl.org/msg44586.html - // and - // https://www.mail-archive.com/openssl-dev@openssl.org/msg44759.html. - // Also, this limit might help with memory management decisions later. - - // Step 1.c. We validate e >= 65537. - let public_key = verification::Key::from_modulus_and_exponent( - n.big_endian_without_leading_zero_as_input(), - e.big_endian_without_leading_zero_as_input(), - bits::BitLength::from_usize_bits(2048), - super::PRIVATE_KEY_PUBLIC_MODULUS_MAX_BITS, - 65537, - )?; - - // 6.4.1.4.3 says to skip 6.4.1.2.1 Step 2. - - // 6.4.1.4.3 Step 3. - - // Step 3.a is done below, out of order. - // Step 3.b is unneeded since `n_bits` is derived here from `n`. - - // 6.4.1.4.3 says to skip 6.4.1.2.1 Step 4. (We don't need to recover - // the prime factors since they are already given.) - - // 6.4.1.4.3 - Step 5. - - // Steps 5.a and 5.b are omitted, as explained above. - - // Step 5.c. - // - // TODO: First, stop if `p < (√2) * 2**((nBits/2) - 1)`. - // - // Second, stop if `p > 2**(nBits/2) - 1`. - let half_n_bits = public_key.n_bits.half_rounded_up(); - if p_bits != half_n_bits { - return Err(KeyRejected::inconsistent_components()); - } - - // TODO: Step 5.d: Verify GCD(p - 1, e) == 1. - - // Steps 5.e and 5.f are omitted as explained above. - - // Step 5.g. - // - // TODO: First, stop if `q < (√2) * 2**((nBits/2) - 1)`. - // - // Second, stop if `q > 2**(nBits/2) - 1`. - if p_bits != q_bits { - return Err(KeyRejected::inconsistent_components()); - } - - // TODO: Step 5.h: Verify GCD(p - 1, e) == 1. - - let q_mod_n_decoded = q - .to_elem(&public_key.n) - .map_err(|error::Unspecified| KeyRejected::inconsistent_components())?; - - // TODO: Step 5.i - // - // 3.b is unneeded since `n_bits` is derived here from `n`. - - // 6.4.1.4.3 - Step 3.a (out of order). - // - // Verify that p * q == n. We restrict ourselves to modular - // multiplication. We rely on the fact that we've verified - // 0 < q < p < n. We check that q and p are close to sqrt(n) and then - // assume that these preconditions are enough to let us assume that - // checking p * q == 0 (mod n) is equivalent to checking p * q == n. - let q_mod_n = bigint::elem_mul( - public_key.n.oneRR().as_ref(), - q_mod_n_decoded.clone(), - &public_key.n, - ); - let p_mod_n = p - .to_elem(&public_key.n) - .map_err(|error::Unspecified| KeyRejected::inconsistent_components())?; - let pq_mod_n = bigint::elem_mul(&q_mod_n, p_mod_n, &public_key.n); - if !pq_mod_n.is_zero() { - return Err(KeyRejected::inconsistent_components()); - } - - // 6.4.1.4.3/6.4.1.2.1 - Step 6. - - // Step 6.a, partial. - // - // First, validate `2**half_n_bits < d`. Since 2**half_n_bits has a bit - // length of half_n_bits + 1, this check gives us 2**half_n_bits <= d, - // and knowing d is odd makes the inequality strict. - let (d, d_bits) = bigint::Nonnegative::from_be_bytes_with_bit_length(d) - .map_err(|_| error::KeyRejected::invalid_encoding())?; - if !(half_n_bits < d_bits) { - return Err(KeyRejected::inconsistent_components()); - } - // XXX: This check should be `d < LCM(p - 1, q - 1)`, but we don't have - // a good way of calculating LCM, so it is omitted, as explained above. - d.verify_less_than_modulus(&public_key.n) - .map_err(|error::Unspecified| KeyRejected::inconsistent_components())?; - if !d.is_odd() { - return Err(KeyRejected::invalid_component()); - } - - // Step 6.b is omitted as explained above. - - // 6.4.1.4.3 - Step 7. - - // Step 7.a. - let p = PrivatePrime::new(p, dP)?; - - // Step 7.b. - let q = PrivatePrime::new(q, dQ)?; - - let q_mod_p = q.modulus.to_elem(&p.modulus); - - // Step 7.c. - let qInv = if let Some(qInv) = qInv { - bigint::Elem::from_be_bytes_padded(qInv, &p.modulus) - .map_err(|error::Unspecified| KeyRejected::invalid_component())? - } else { - // We swapped `p` and `q` above, so we need to calculate `qInv`. - // Step 7.f below will verify `qInv` is correct. - let q_mod_p = bigint::elem_mul(p.modulus.oneRR().as_ref(), q_mod_p.clone(), &p.modulus); - bigint::elem_inverse_consttime(q_mod_p, &p.modulus) - .map_err(|error::Unspecified| KeyRejected::unexpected_error())? - }; - - // Steps 7.d and 7.e are omitted per the documentation above, and - // because we don't (in the long term) have a good way to do modulo - // with an even modulus. - - // Step 7.f. - let qInv = bigint::elem_mul(p.modulus.oneRR().as_ref(), qInv, &p.modulus); - bigint::verify_inverses_consttime(&qInv, q_mod_p, &p.modulus) - .map_err(|error::Unspecified| KeyRejected::inconsistent_components())?; - - let qq = bigint::elem_mul(&q_mod_n, q_mod_n_decoded, &public_key.n).into_modulus::()?; - - let public_key_serialized = RsaSubjectPublicKey::from_n_and_e(n, e); - - Ok(Self { - p, - q, - qInv, - q_mod_n, - qq, - public: public_key, - public_key: public_key_serialized, - }) - } - - /// Returns the length in bytes of the key pair's public modulus. - /// - /// A signature has the same length as the public modulus. - pub fn public_modulus_len(&self) -> usize { - self.public_key - .modulus() - .big_endian_without_leading_zero_as_input() - .as_slice_less_safe() - .len() - } -} - -impl signature::KeyPair for RsaKeyPair { - type PublicKey = RsaSubjectPublicKey; - - fn public_key(&self) -> &Self::PublicKey { - &self.public_key - } -} - -/// A serialized RSA public key. -#[derive(Clone)] -pub struct RsaSubjectPublicKey(Box<[u8]>); - -impl AsRef<[u8]> for RsaSubjectPublicKey { - fn as_ref(&self) -> &[u8] { - self.0.as_ref() - } -} - -derive_debug_self_as_ref_hex_bytes!(RsaSubjectPublicKey); - -impl RsaSubjectPublicKey { - fn from_n_and_e(n: io::Positive, e: io::Positive) -> Self { - let bytes = der_writer::write_all(der::Tag::Sequence, &|output| { - der_writer::write_positive_integer(output, &n); - der_writer::write_positive_integer(output, &e); - }); - RsaSubjectPublicKey(bytes) - } - - /// The public modulus (n). - pub fn modulus(&self) -> io::Positive { - // Parsing won't fail because we serialized it ourselves. - let (public_key, _exponent) = - super::parse_public_key(untrusted::Input::from(self.as_ref())).unwrap(); - public_key - } - - /// The public exponent (e). - pub fn exponent(&self) -> io::Positive { - // Parsing won't fail because we serialized it ourselves. - let (_public_key, exponent) = - super::parse_public_key(untrusted::Input::from(self.as_ref())).unwrap(); - exponent - } -} - -struct PrivatePrime { - modulus: bigint::Modulus, - exponent: bigint::PrivateExponent, -} - -impl PrivatePrime { - /// Constructs a `PrivatePrime` from the private prime `p` and `dP` where - /// dP == d % (p - 1). - fn new(p: bigint::Nonnegative, dP: untrusted::Input) -> Result { - let (p, p_bits) = bigint::Modulus::from_nonnegative_with_bit_length(p)?; - if p_bits.as_usize_bits() % 512 != 0 { - return Err(error::KeyRejected::private_modulus_len_not_multiple_of_512_bits()); - } - - // [NIST SP-800-56B rev. 1] 6.4.1.4.3 - Steps 7.a & 7.b. - let dP = bigint::PrivateExponent::from_be_bytes_padded(dP, &p) - .map_err(|error::Unspecified| KeyRejected::inconsistent_components())?; - - // XXX: Steps 7.d and 7.e are omitted. We don't check that - // `dP == d % (p - 1)` because we don't (in the long term) have a good - // way to do modulo with an even modulus. Instead we just check that - // `1 <= dP < p - 1`. We'll check it, to some unknown extent, when we - // do the private key operation, since we verify that the result of the - // private key operation using the CRT parameters is consistent with `n` - // and `e`. TODO: Either prove that what we do is sufficient, or make - // it so. - - Ok(PrivatePrime { - modulus: p, - exponent: dP, - }) - } -} - -fn elem_exp_consttime( - c: &bigint::Elem, - p: &PrivatePrime, -) -> Result, error::Unspecified> -where - M: bigint::NotMuchSmallerModulus, - M: Prime, -{ - let c_mod_m = bigint::elem_reduced(c, &p.modulus); - // We could precompute `oneRRR = elem_squared(&p.oneRR`) as mentioned - // in the Smooth CRT-RSA paper. - let c_mod_m = bigint::elem_mul(p.modulus.oneRR().as_ref(), c_mod_m, &p.modulus); - let c_mod_m = bigint::elem_mul(p.modulus.oneRR().as_ref(), c_mod_m, &p.modulus); - bigint::elem_exp_consttime(c_mod_m, &p.exponent, &p.modulus) -} - -// Type-level representations of the different moduli used in RSA signing, in -// addition to `super::N`. See `super::bigint`'s modulue-level documentation. - -#[derive(Copy, Clone)] -enum P {} -unsafe impl Prime for P {} -unsafe impl bigint::SmallerModulus for P {} -unsafe impl bigint::NotMuchSmallerModulus for P {} - -#[derive(Copy, Clone)] -enum QQ {} -unsafe impl bigint::SmallerModulus for QQ {} -unsafe impl bigint::NotMuchSmallerModulus for QQ {} - -// `q < p < 2*q` since `q` is slightly smaller than `p` (see below). Thus: -// -// q < p < 2*q -// q*q < p*q < 2*q*q. -// q**2 < n < 2*(q**2). -unsafe impl bigint::SlightlySmallerModulus for QQ {} - -#[derive(Copy, Clone)] -enum Q {} -unsafe impl Prime for Q {} -unsafe impl bigint::SmallerModulus for Q {} -unsafe impl bigint::SmallerModulus

for Q {} - -// q < p && `p.bit_length() == q.bit_length()` implies `q < p < 2*q`. -unsafe impl bigint::SlightlySmallerModulus

for Q {} - -unsafe impl bigint::SmallerModulus for Q {} -unsafe impl bigint::NotMuchSmallerModulus for Q {} - -impl RsaKeyPair { - /// Sign `msg`. `msg` is digested using the digest algorithm from - /// `padding_alg` and the digest is then padded using the padding algorithm - /// from `padding_alg`. The signature it written into `signature`; - /// `signature`'s length must be exactly the length returned by - /// `public_modulus_len()`. `rng` may be used to randomize the padding - /// (e.g. for PSS). - /// - /// Many other crypto libraries have signing functions that takes a - /// precomputed digest as input, instead of the message to digest. This - /// function does *not* take a precomputed digest; instead, `sign` - /// calculates the digest itself. - /// - /// Lots of effort has been made to make the signing operations close to - /// constant time to protect the private key from side channel attacks. On - /// x86-64, this is done pretty well, but not perfectly. On other - /// platforms, it is done less perfectly. - pub fn sign( - &self, - padding_alg: &'static dyn RsaEncoding, - rng: &dyn rand::SecureRandom, - msg: &[u8], - signature: &mut [u8], - ) -> Result<(), error::Unspecified> { - let mod_bits = self.public.n_bits; - if signature.len() != mod_bits.as_usize_bytes_rounded_up() { - return Err(error::Unspecified); - } - - let m_hash = digest::digest(padding_alg.digest_alg(), msg); - padding_alg.encode(&m_hash, signature, mod_bits, rng)?; - - // RFC 8017 Section 5.1.2: RSADP, using the Chinese Remainder Theorem - // with Garner's algorithm. - - let n = &self.public.n; - - // Step 1. The value zero is also rejected. - let base = bigint::Elem::from_be_bytes_padded(untrusted::Input::from(signature), n)?; - - // Step 2 - let c = base; - - // Step 2.b.i. - let m_1 = elem_exp_consttime(&c, &self.p)?; - let c_mod_qq = bigint::elem_reduced_once(&c, &self.qq); - let m_2 = elem_exp_consttime(&c_mod_qq, &self.q)?; - - // Step 2.b.ii isn't needed since there are only two primes. - - // Step 2.b.iii. - let p = &self.p.modulus; - let m_2 = bigint::elem_widen(m_2, p); - let m_1_minus_m_2 = bigint::elem_sub(m_1, &m_2, p); - let h = bigint::elem_mul(&self.qInv, m_1_minus_m_2, p); - - // Step 2.b.iv. The reduction in the modular multiplication isn't - // necessary because `h < p` and `p * q == n` implies `h * q < n`. - // Modular arithmetic is used simply to avoid implementing - // non-modular arithmetic. - let h = bigint::elem_widen(h, n); - let q_times_h = bigint::elem_mul(&self.q_mod_n, h, n); - let m_2 = bigint::elem_widen(m_2, n); - let m = bigint::elem_add(m_2, q_times_h, n); - - // Step 2.b.v isn't needed since there are only two primes. - - // Verify the result to protect against fault attacks as described - // in "On the Importance of Checking Cryptographic Protocols for - // Faults" by Dan Boneh, Richard A. DeMillo, and Richard J. Lipton. - // This check is cheap assuming `e` is small, which is ensured during - // `KeyPair` construction. Note that this is the only validation of `e` - // that is done other than basic checks on its size, oddness, and - // minimum value, since the relationship of `e` to `d`, `p`, and `q` is - // not verified during `KeyPair` construction. - { - let verify = bigint::elem_exp_vartime(m.clone(), self.public.e, n); - let verify = verify.into_unencoded(n); - bigint::elem_verify_equal_consttime(&verify, &c)?; - } - - // Step 3. - // - // See Falko Strenzke, "Manger's Attack revisited", ICICS 2010. - m.fill_be_bytes(signature); - - Ok(()) - } -} - -#[cfg(test)] -mod tests { - // We intentionally avoid `use super::*` so that we are sure to use only - // the public API; this ensures that enough of the API is public. - use crate::{rand, signature}; - use alloc::vec; - - // `KeyPair::sign` requires that the output buffer is the same length as - // the public key modulus. Test what happens when it isn't the same length. - #[test] - fn test_signature_rsa_pkcs1_sign_output_buffer_len() { - // Sign the message "hello, world", using PKCS#1 v1.5 padding and the - // SHA256 digest algorithm. - const MESSAGE: &[u8] = b"hello, world"; - let rng = rand::SystemRandom::new(); - - const PRIVATE_KEY_DER: &[u8] = include_bytes!("signature_rsa_example_private_key.der"); - let key_pair = signature::RsaKeyPair::from_der(PRIVATE_KEY_DER).unwrap(); - - // The output buffer is one byte too short. - let mut signature = vec![0; key_pair.public_modulus_len() - 1]; - - assert!(key_pair - .sign(&signature::RSA_PKCS1_SHA256, &rng, MESSAGE, &mut signature) - .is_err()); - - // The output buffer is the right length. - signature.push(0); - assert!(key_pair - .sign(&signature::RSA_PKCS1_SHA256, &rng, MESSAGE, &mut signature) - .is_ok()); - - // The output buffer is one byte too long. - signature.push(0); - assert!(key_pair - .sign(&signature::RSA_PKCS1_SHA256, &rng, MESSAGE, &mut signature) - .is_err()); - } -} diff -Nru temporalio-1.3.0/vendor/ring/src/rsa/verification.rs temporalio-1.3.0/vendor/ring/src/rsa/verification.rs --- temporalio-1.3.0/vendor/ring/src/rsa/verification.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/rsa/verification.rs 2023-10-30 19:40:00.000000000 +0000 @@ -14,74 +14,10 @@ //! Verification of RSA signatures. -use super::{parse_public_key, RsaParameters, N, PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN}; -use crate::{ - arithmetic::{bigint, montgomery::Unencoded}, - bits, cpu, digest, error, - limb::LIMB_BYTES, - sealed, signature, +use super::{ + parse_public_key, PublicExponent, PublicKey, RsaParameters, PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN, }; - -#[derive(Debug)] -pub struct Key { - pub n: bigint::Modulus, - pub e: bigint::PublicExponent, - pub n_bits: bits::BitLength, -} - -impl Key { - pub fn from_modulus_and_exponent( - n: untrusted::Input, - e: untrusted::Input, - n_min_bits: bits::BitLength, - n_max_bits: bits::BitLength, - e_min_value: u64, - ) -> Result { - // This is an incomplete implementation of NIST SP800-56Br1 Section - // 6.4.2.2, "Partial Public-Key Validation for RSA." That spec defers - // to NIST SP800-89 Section 5.3.3, "(Explicit) Partial Public Key - // Validation for RSA," "with the caveat that the length of the modulus - // shall be a length that is specified in this Recommendation." In - // SP800-89, two different sets of steps are given, one set numbered, - // and one set lettered. TODO: Document this in the end-user - // documentation for RSA keys. - - // Step 3 / Step c for `n` (out of order). - let (n, n_bits) = bigint::Modulus::from_be_bytes_with_bit_length(n)?; - - // `pkcs1_encode` depends on this not being small. Otherwise, - // `pkcs1_encode` would generate padding that is invalid (too few 0xFF - // bytes) for very small keys. - const N_MIN_BITS: bits::BitLength = bits::BitLength::from_usize_bits(1024); - - // Step 1 / Step a. XXX: SP800-56Br1 and SP800-89 require the length of - // the public modulus to be exactly 2048 or 3072 bits, but we are more - // flexible to be compatible with other commonly-used crypto libraries. - assert!(n_min_bits >= N_MIN_BITS); - let n_bits_rounded_up = - bits::BitLength::from_usize_bytes(n_bits.as_usize_bytes_rounded_up()) - .map_err(|error::Unspecified| error::KeyRejected::unexpected_error())?; - if n_bits_rounded_up < n_min_bits { - return Err(error::KeyRejected::too_small()); - } - if n_bits > n_max_bits { - return Err(error::KeyRejected::too_large()); - } - - // Step 2 / Step b. - // Step 3 / Step c for `e`. - let e = bigint::PublicExponent::from_be_bytes(e, e_min_value)?; - - // If `n` is less than `e` then somebody has probably accidentally swapped - // them. The largest acceptable `e` is smaller than the smallest acceptable - // `n`, so no additional checks need to be done. - - // XXX: Steps 4 & 5 / Steps d, e, & f are not implemented. This is also the - // case in most other commonly-used crypto libraries. - - Ok(Self { n, e, n_bits }) - } -} +use crate::{bits, cpu, digest, error, sealed, signature}; impl signature::VerificationAlgorithm for RsaParameters { fn verify( @@ -137,7 +73,7 @@ rsa_params!( RSA_PKCS1_1024_8192_SHA256_FOR_LEGACY_USE_ONLY, 1024, - &super::RSA_PKCS1_SHA256, + &super::padding::RSA_PKCS1_SHA256, "Verification of signatures using RSA keys of 1024-8192 bits, PKCS#1.5 padding, and SHA-256.\n\nSee \"`RSA_PKCS1_*` Details\" in `ring::signature`'s module-level documentation for more details." @@ -145,7 +81,7 @@ rsa_params!( RSA_PKCS1_2048_8192_SHA256, 2048, - &super::RSA_PKCS1_SHA256, + &super::padding::RSA_PKCS1_SHA256, "Verification of signatures using RSA keys of 2048-8192 bits, PKCS#1.5 padding, and SHA-256.\n\nSee \"`RSA_PKCS1_*` Details\" in `ring::signature`'s module-level documentation for more details." @@ -153,7 +89,7 @@ rsa_params!( RSA_PKCS1_2048_8192_SHA384, 2048, - &super::RSA_PKCS1_SHA384, + &super::padding::RSA_PKCS1_SHA384, "Verification of signatures using RSA keys of 2048-8192 bits, PKCS#1.5 padding, and SHA-384.\n\nSee \"`RSA_PKCS1_*` Details\" in `ring::signature`'s module-level documentation for more details." @@ -161,7 +97,7 @@ rsa_params!( RSA_PKCS1_2048_8192_SHA512, 2048, - &super::RSA_PKCS1_SHA512, + &super::padding::RSA_PKCS1_SHA512, "Verification of signatures using RSA keys of 2048-8192 bits, PKCS#1.5 padding, and SHA-512.\n\nSee \"`RSA_PKCS1_*` Details\" in `ring::signature`'s module-level documentation for more details." @@ -169,7 +105,7 @@ rsa_params!( RSA_PKCS1_1024_8192_SHA512_FOR_LEGACY_USE_ONLY, 1024, - &super::RSA_PKCS1_SHA512, + &super::padding::RSA_PKCS1_SHA512, "Verification of signatures using RSA keys of 1024-8192 bits, PKCS#1.5 padding, and SHA-512.\n\nSee \"`RSA_PKCS1_*` Details\" in `ring::signature`'s module-level documentation for more details." @@ -177,7 +113,7 @@ rsa_params!( RSA_PKCS1_3072_8192_SHA384, 3072, - &super::RSA_PKCS1_SHA384, + &super::padding::RSA_PKCS1_SHA384, "Verification of signatures using RSA keys of 3072-8192 bits, PKCS#1.5 padding, and SHA-384.\n\nSee \"`RSA_PKCS1_*` Details\" in `ring::signature`'s module-level documentation for more details." @@ -186,7 +122,7 @@ rsa_params!( RSA_PSS_2048_8192_SHA256, 2048, - &super::RSA_PSS_SHA256, + &super::padding::RSA_PSS_SHA256, "Verification of signatures using RSA keys of 2048-8192 bits, PSS padding, and SHA-256.\n\nSee \"`RSA_PSS_*` Details\" in `ring::signature`'s module-level documentation for more details." @@ -194,7 +130,7 @@ rsa_params!( RSA_PSS_2048_8192_SHA384, 2048, - &super::RSA_PSS_SHA384, + &super::padding::RSA_PSS_SHA384, "Verification of signatures using RSA keys of 2048-8192 bits, PSS padding, and SHA-384.\n\nSee \"`RSA_PSS_*` Details\" in `ring::signature`'s module-level documentation for more details." @@ -202,67 +138,44 @@ rsa_params!( RSA_PSS_2048_8192_SHA512, 2048, - &super::RSA_PSS_SHA512, + &super::padding::RSA_PSS_SHA512, "Verification of signatures using RSA keys of 2048-8192 bits, PSS padding, and SHA-512.\n\nSee \"`RSA_PSS_*` Details\" in `ring::signature`'s module-level documentation for more details." ); -/// Low-level API for the verification of RSA signatures. -/// -/// When the public key is in DER-encoded PKCS#1 ASN.1 format, it is -/// recommended to use `ring::signature::verify()` with -/// `ring::signature::RSA_PKCS1_*`, because `ring::signature::verify()` -/// will handle the parsing in that case. Otherwise, this function can be used -/// to pass in the raw bytes for the public key components as -/// `untrusted::Input` arguments. -// -// There are a small number of tests that test this directly, but the -// test coverage for this function mostly depends on the test coverage for the -// `signature::VerificationAlgorithm` implementation for `RsaParameters`. If we -// change that, test coverage for `verify_rsa()` will need to be reconsidered. -// (The NIST test vectors were originally in a form that was optimized for -// testing `verify_rsa` directly, but the testing work for RSA PKCS#1 -// verification was done during the implementation of -// `signature::VerificationAlgorithm`, before `verify_rsa` was factored out). -#[derive(Debug)] -pub struct RsaPublicKeyComponents + core::fmt::Debug> { - /// The public modulus, encoded in big-endian bytes without leading zeros. - pub n: B, - - /// The public exponent, encoded in big-endian bytes without leading zeros. - pub e: B, -} - -impl Copy for RsaPublicKeyComponents where B: AsRef<[u8]> + core::fmt::Debug {} +pub use super::PublicKeyComponents as RsaPublicKeyComponents; -impl Clone for RsaPublicKeyComponents +impl super::PublicKeyComponents where - B: AsRef<[u8]> + core::fmt::Debug, -{ - fn clone(&self) -> Self { - Self { - n: self.n.clone(), - e: self.e.clone(), - } - } -} - -impl RsaPublicKeyComponents -where - B: AsRef<[u8]> + core::fmt::Debug, + B: AsRef<[u8]>, { /// Verifies that `signature` is a valid signature of `message` using `self` /// as the public key. `params` determine what algorithm parameters /// (padding, digest algorithm, key length range, etc.) are used in the /// verification. + /// + /// When the public key is in DER-encoded PKCS#1 ASN.1 format, it is + /// recommended to use `ring::signature::verify()` with + /// `ring::signature::RSA_PKCS1_*`, because `ring::signature::verify()` + /// will handle the parsing in that case. Otherwise, this function can be used + /// to pass in the raw bytes for the public key components as + /// `untrusted::Input` arguments. + // + // There are a small number of tests that test this directly, but the + // test coverage for this function mostly depends on the test coverage for the + // `signature::VerificationAlgorithm` implementation for `RsaParameters`. If we + // change that, test coverage for `verify_rsa()` will need to be reconsidered. + // (The NIST test vectors were originally in a form that was optimized for + // testing `verify_rsa` directly, but the testing work for RSA PKCS#1 + // verification was done during the implementation of + // `signature::VerificationAlgorithm`, before `verify_rsa` was factored out). pub fn verify( &self, params: &RsaParameters, message: &[u8], signature: &[u8], ) -> Result<(), error::Unspecified> { - let _ = cpu::features(); verify_rsa_( params, ( @@ -281,57 +194,29 @@ msg: untrusted::Input, signature: untrusted::Input, ) -> Result<(), error::Unspecified> { - let max_bits = bits::BitLength::from_usize_bytes(PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN)?; + let max_bits: bits::BitLength = + bits::BitLength::from_usize_bytes(PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN)?; // XXX: FIPS 186-4 seems to indicate that the minimum // exponent value is 2**16 + 1, but it isn't clear if this is just for // signing or also for verification. We support exponents of 3 and larger // for compatibility with other commonly-used crypto libraries. - let Key { n, e, n_bits } = Key::from_modulus_and_exponent(n, e, params.min_bits, max_bits, 3)?; - - // The signature must be the same length as the modulus, in bytes. - if signature.len() != n_bits.as_usize_bytes_rounded_up() { - return Err(error::Unspecified); - } + let key = PublicKey::from_modulus_and_exponent( + n, + e, + params.min_bits, + max_bits, + PublicExponent::_3, + cpu::features(), + )?; // RFC 8017 Section 5.2.2: RSAVP1. - - // Step 1. - let s = bigint::Elem::from_be_bytes_padded(signature, &n)?; - if s.is_zero() { - return Err(error::Unspecified); - } - - // Step 2. - let m = bigint::elem_exp_vartime(s, e, &n); - let m = m.into_unencoded(&n); - - // Step 3. let mut decoded = [0u8; PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN]; - let decoded = fill_be_bytes_n(m, n_bits, &mut decoded); + let decoded = key.exponentiate(signature, &mut decoded)?; // Verify the padded message is correct. let m_hash = digest::digest(params.padding_alg.digest_alg(), msg.as_slice_less_safe()); untrusted::Input::from(decoded).read_all(error::Unspecified, |m| { - params.padding_alg.verify(&m_hash, m, n_bits) + params.padding_alg.verify(m_hash, m, key.n().len_bits()) }) } - -/// Returns the big-endian representation of `elem` that is -/// the same length as the minimal-length big-endian representation of -/// the modulus `n`. -/// -/// `n_bits` must be the bit length of the public modulus `n`. -fn fill_be_bytes_n( - elem: bigint::Elem, - n_bits: bits::BitLength, - out: &mut [u8; PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN], -) -> &[u8] { - let n_bytes = n_bits.as_usize_bytes_rounded_up(); - let n_bytes_padded = ((n_bytes + (LIMB_BYTES - 1)) / LIMB_BYTES) * LIMB_BYTES; - let out = &mut out[..n_bytes_padded]; - elem.fill_be_bytes(out); - let (padding, out) = out.split_at(n_bytes_padded - n_bytes); - assert!(padding.iter().all(|&b| b == 0)); - out -} diff -Nru temporalio-1.3.0/vendor/ring/src/rsa.rs temporalio-1.3.0/vendor/ring/src/rsa.rs --- temporalio-1.3.0/vendor/ring/src/rsa.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/rsa.rs 2023-10-30 19:40:00.000000000 +0000 @@ -17,7 +17,8 @@ // naming conventions. Also the standard camelCase names are used for `KeyPair` // components. -/// RSA signatures. +//! RSA. + use crate::{ arithmetic::bigint, bits, error, @@ -25,13 +26,7 @@ limb, }; -mod padding; - -// `RSA_PKCS1_SHA1` is intentionally not exposed. -pub use self::padding::{ - RsaEncoding, RSA_PKCS1_SHA256, RSA_PKCS1_SHA384, RSA_PKCS1_SHA512, RSA_PSS_SHA256, - RSA_PSS_SHA384, RSA_PSS_SHA512, -}; +pub(crate) mod padding; // Maximum RSA modulus size supported for signature verification (in bytes). const PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN: usize = bigint::MODULUS_MAX_LIMBS * limb::LIMB_BYTES; @@ -61,10 +56,22 @@ // Type-level representation of an RSA public modulus *n*. See // `super::bigint`'s modulue-level documentation. #[derive(Copy, Clone)] -pub enum N {} +enum N {} -unsafe impl bigint::PublicModulus for N {} +impl bigint::PublicModulus for N {} -pub mod verification; +mod keypair; +mod keypair_components; +mod public_exponent; +mod public_key; +mod public_key_components; +mod public_modulus; -pub mod signing; +pub(crate) mod verification; + +use self::{public_exponent::PublicExponent, public_modulus::PublicModulus}; + +pub use self::{ + keypair::KeyPair, keypair_components::KeyPairComponents, public_key::PublicKey, + public_key_components::PublicKeyComponents, +}; diff -Nru temporalio-1.3.0/vendor/ring/src/signature.rs temporalio-1.3.0/vendor/ring/src/signature.rs --- temporalio-1.3.0/vendor/ring/src/signature.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/signature.rs 2023-10-30 19:40:00.000000000 +0000 @@ -191,23 +191,24 @@ //! ``` //! //! ``` -//! use ring::{rand, signature}; +//! # #[cfg(feature = "std")] +//! use ring::{rand, rsa, signature}; //! //! # #[cfg(feature = "std")] //! fn sign_and_verify_rsa(private_key_path: &std::path::Path, //! public_key_path: &std::path::Path) //! -> Result<(), MyError> { -//! // Create an `RsaKeyPair` from the DER-encoded bytes. This example uses +//! // Create an RSA keypair from the DER-encoded bytes. This example uses //! // a 2048-bit key, but larger keys are also supported. //! let private_key_der = read_file(private_key_path)?; -//! let key_pair = signature::RsaKeyPair::from_der(&private_key_der) +//! let key_pair = rsa::KeyPair::from_der(&private_key_der) //! .map_err(|_| MyError::BadPrivateKey)?; //! //! // Sign the message "hello, world", using PKCS#1 v1.5 padding and the //! // SHA256 digest algorithm. //! const MESSAGE: &'static [u8] = b"hello, world"; //! let rng = rand::SystemRandom::new(); -//! let mut signature = vec![0; key_pair.public_modulus_len()]; +//! let mut signature = vec![0; key_pair.public().modulus_len()]; //! key_pair.sign(&signature::RSA_PKCS1_SHA256, &rng, MESSAGE, &mut signature) //! .map_err(|_| MyError::OOM)?; //! @@ -254,7 +255,7 @@ //! # } //! ``` -use crate::{cpu, ec, error, sealed}; +use crate::{cpu, debug, ec, error, sealed}; pub use crate::ec::{ curve25519::ed25519::{ @@ -278,9 +279,10 @@ #[cfg(feature = "alloc")] pub use crate::rsa::{ - signing::RsaKeyPair, - signing::RsaSubjectPublicKey, - + padding::{ + RsaEncoding, RSA_PKCS1_SHA256, RSA_PKCS1_SHA384, RSA_PKCS1_SHA512, RSA_PSS_SHA256, + RSA_PSS_SHA384, RSA_PSS_SHA512, + }, verification::{ RsaPublicKeyComponents, RSA_PKCS1_1024_8192_SHA1_FOR_LEGACY_USE_ONLY, RSA_PKCS1_1024_8192_SHA256_FOR_LEGACY_USE_ONLY, @@ -289,23 +291,13 @@ RSA_PKCS1_2048_8192_SHA384, RSA_PKCS1_2048_8192_SHA512, RSA_PKCS1_3072_8192_SHA384, RSA_PSS_2048_8192_SHA256, RSA_PSS_2048_8192_SHA384, RSA_PSS_2048_8192_SHA512, }, - - RsaEncoding, RsaParameters, - - // `RSA_PKCS1_SHA1` is intentionally not exposed. At a minimum, we'd need - // to create test vectors for signing with it, which we don't currently - // have. But, it's a bad idea to use SHA-1 anyway, so perhaps we just won't - // ever expose it. - RSA_PKCS1_SHA256, - RSA_PKCS1_SHA384, - RSA_PKCS1_SHA512, - - RSA_PSS_SHA256, - RSA_PSS_SHA384, - RSA_PSS_SHA512, }; +/// An RSA key pair, used for signing. +#[cfg(feature = "alloc")] +pub type RsaKeyPair = crate::rsa::KeyPair; + /// A public key signature returned from a signing operation. #[derive(Clone, Copy)] pub struct Signature { @@ -363,26 +355,34 @@ } /// An unparsed, possibly malformed, public key for signature verification. -pub struct UnparsedPublicKey> { +#[derive(Clone, Copy)] +pub struct UnparsedPublicKey { algorithm: &'static dyn VerificationAlgorithm, bytes: B, } -impl Copy for UnparsedPublicKey where B: AsRef<[u8]> {} +impl AsRef<[u8]> for UnparsedPublicKey +where + B: AsRef<[u8]>, +{ + fn as_ref(&self) -> &[u8] { + self.bytes.as_ref() + } +} -impl Clone for UnparsedPublicKey +impl core::fmt::Debug for UnparsedPublicKey where B: AsRef<[u8]>, { - fn clone(&self) -> Self { - Self { - algorithm: self.algorithm, - bytes: self.bytes.clone(), - } + fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> { + f.debug_struct("UnparsedPublicKey") + .field("algorithm", &self.algorithm) + .field("bytes", &debug::HexStr(self.bytes.as_ref())) + .finish() } } -impl> UnparsedPublicKey { +impl UnparsedPublicKey { /// Construct a new `UnparsedPublicKey`. /// /// No validation of `bytes` is done until `verify()` is called. @@ -395,7 +395,10 @@ /// `message` using it. /// /// See the [crate::signature] module-level documentation for examples. - pub fn verify(&self, message: &[u8], signature: &[u8]) -> Result<(), error::Unspecified> { + pub fn verify(&self, message: &[u8], signature: &[u8]) -> Result<(), error::Unspecified> + where + B: AsRef<[u8]>, + { let _ = cpu::features(); self.algorithm.verify( untrusted::Input::from(self.bytes.as_ref()), diff -Nru temporalio-1.3.0/vendor/ring/src/test_1_syntax_error_tests.txt temporalio-1.3.0/vendor/ring/src/test_1_syntax_error_tests.txt --- temporalio-1.3.0/vendor/ring/src/test_1_syntax_error_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/test_1_syntax_error_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Key: 0 diff -Nru temporalio-1.3.0/vendor/ring/src/test_1_tests.txt temporalio-1.3.0/vendor/ring/src/test_1_tests.txt --- temporalio-1.3.0/vendor/ring/src/test_1_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/test_1_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -Key = Value - - diff -Nru temporalio-1.3.0/vendor/ring/src/test_3_tests.txt temporalio-1.3.0/vendor/ring/src/test_3_tests.txt --- temporalio-1.3.0/vendor/ring/src/test_3_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/test_3_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -Key = 0 - -Key = 1 - -Key = 2 diff -Nru temporalio-1.3.0/vendor/ring/src/test.rs temporalio-1.3.0/vendor/ring/src/test.rs --- temporalio-1.3.0/vendor/ring/src/test.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/src/test.rs 2023-10-30 19:40:00.000000000 +0000 @@ -117,10 +117,10 @@ //! stack trace to the line in the test code that panicked: entry 9 in the //! stack trace pointing to line 652 of the file `example.rs`. -#[cfg(feature = "alloc")] +extern crate alloc; + use alloc::{format, string::String, vec::Vec}; -#[cfg(feature = "alloc")] use crate::{bits, digest, error}; #[cfg(any(feature = "std", feature = "test_logging"))] @@ -134,6 +134,10 @@ /// implement `Copy`. pub fn compile_time_assert_copy() {} +/// `compile_time_assert_eq::();` fails to compile if `T` doesn't +/// implement `Eq`. +pub fn compile_time_assert_eq() {} + /// `compile_time_assert_send::();` fails to compile if `T` doesn't /// implement `Send`. pub fn compile_time_assert_send() {} @@ -152,13 +156,11 @@ /// typos and omissions. /// /// Requires the `alloc` default feature to be enabled. -#[cfg(feature = "alloc")] #[derive(Debug)] pub struct TestCase { attributes: Vec<(String, String, bool)>, } -#[cfg(feature = "alloc")] impl TestCase { /// Maps the string "true" to true and the string "false" to false. pub fn consume_bool(&mut self, key: &str) -> bool { @@ -191,8 +193,15 @@ /// even number of hex digits, or as a double-quoted UTF-8 string. The /// empty (zero-length) value is represented as "". pub fn consume_bytes(&mut self, key: &str) -> Vec { - let s = self.consume_string(key); - if s.starts_with('\"') { + self.consume_optional_bytes(key) + .unwrap_or_else(|| panic!("No attribute named \"{}\"", key)) + } + + /// Like `consume_bytes()` except it returns `None` if the test case + /// doesn't have the attribute. + pub fn consume_optional_bytes(&mut self, key: &str) -> Option> { + let s = self.consume_optional_string(key)?; + let result = if s.starts_with('\"') { // The value is a quoted UTF-8 string. let mut bytes = Vec::with_capacity(s.as_bytes().len() - 2); @@ -241,7 +250,8 @@ panic!("{} in {}", err_str, s); } } - } + }; + Some(result) } /// Returns the value of an attribute that is an integer, in decimal @@ -253,7 +263,6 @@ /// Returns the value of an attribute that is an integer, in decimal /// notation, as a bit length. - #[cfg(feature = "alloc")] pub fn consume_usize_bits(&mut self, key: &str) -> bits::BitLength { let s = self.consume_string(key); let bits = s.parse::().unwrap(); @@ -284,11 +293,10 @@ } /// References a test input file. -#[cfg(feature = "alloc")] #[macro_export] macro_rules! test_file { ($file_name:expr) => { - crate::test::File { + $crate::test::File { file_name: $file_name, contents: include_str!($file_name), } @@ -296,7 +304,6 @@ } /// A test input file. -#[cfg(feature = "alloc")] pub struct File<'a> { /// The name (path) of the file. pub file_name: &'a str, @@ -308,9 +315,6 @@ /// Parses test cases out of the given file, calling `f` on each vector until /// `f` fails or until all the test vectors have been read. `f` can indicate /// failure either by returning `Err()` or by panicking. -/// -/// Requires the `alloc` default feature to be enabled -#[cfg(feature = "alloc")] pub fn run(test_file: File, mut f: F) where F: FnMut(&str, &mut TestCase) -> Result<(), error::Unspecified>, @@ -361,7 +365,6 @@ /// Decode an string of hex digits into a sequence of bytes. The input must /// have an even number of digits. -#[cfg(feature = "alloc")] pub fn from_hex(hex_str: &str) -> Result, String> { if hex_str.len() % 2 != 0 { return Err(String::from( @@ -378,7 +381,6 @@ Ok(result) } -#[cfg(feature = "alloc")] fn from_hex_digit(d: u8) -> Result { use core::ops::RangeInclusive; const DECIMAL: (u8, RangeInclusive) = (0, b'0'..=b'9'); @@ -392,7 +394,6 @@ Err(format!("Invalid hex digit '{}'", d as char)) } -#[cfg(feature = "alloc")] fn parse_test_case( current_section: &mut String, lines: &mut dyn Iterator, @@ -423,7 +424,7 @@ } // A blank line ends a test case if the test case isn't empty. - Some(ref line) if line.is_empty() => { + Some(line) if line.is_empty() => { if !is_first_line { return Some(TestCase { attributes }); } @@ -431,9 +432,9 @@ } // Comments start with '#'; ignore them. - Some(ref line) if line.starts_with('#') => (), + Some(line) if line.starts_with('#') => (), - Some(ref line) if line.starts_with('[') => { + Some(line) if line.starts_with('[') => { assert!(is_first_line); assert!(line.ends_with(']')); current_section.truncate(0); @@ -442,7 +443,7 @@ let _ = current_section.remove(0); } - Some(ref line) => { + Some(line) => { is_first_line = false; let parts: Vec<&str> = line.splitn(2, " = ").collect(); @@ -472,7 +473,7 @@ /// useful for some types of fuzzing. #[doc(hidden)] pub mod rand { - use crate::{error, polyfill, rand}; + use crate::{error, rand}; /// An implementation of `SecureRandom` that always fills the output slice /// with the given byte. @@ -483,7 +484,7 @@ impl rand::sealed::SecureRandom for FixedByteRandom { fn fill_impl(&self, dest: &mut [u8]) -> Result<(), error::Unspecified> { - polyfill::slice::fill(dest, self.byte); + dest.fill(self.byte); Ok(()) } } diff -Nru temporalio-1.3.0/vendor/ring/tests/aead_aes_128_gcm_tests.txt temporalio-1.3.0/vendor/ring/tests/aead_aes_128_gcm_tests.txt --- temporalio-1.3.0/vendor/ring/tests/aead_aes_128_gcm_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/aead_aes_128_gcm_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,552 +0,0 @@ -# The AES-128-GCM test cases from cipher_test.txt have been merged into this -# file. - -# The test cases marked "FAILS = WRONG_NONCE_LENGTH" would succeed if nonces -# with lengths other than 96 bits were supported; i.e. those test cases -# describe valid outputs for the given inputs, and they are only rejected -# because nonces that aren't exactly 96 bits are rejected as a matter of -# policy. - - -KEY = d480429666d48b400633921c5407d1d1 -NONCE = 3388c676dc754acfa66e172a -IN = "" -AD = "" -CT = "" -TAG = 7d7daf44850921a34e636b01adeb104f - -KEY = 3881e7be1bb3bbcaff20bdb78e5d1b67 -NONCE = dcf5b7ae2d7552e2297fcfa9 -IN = 0a2714aa7d -AD = c60c64bbf7 -CT = 5626f96ecb -TAG = ff4c4f1d92b0abb1d0820833d9eb83c7 - -KEY = ea4f6f3c2fed2b9dd9708c2e721ae00f -NONCE = f975809ddb5172382745634f -IN = 8d6c08446cb10d9a2075 -AD = 5c65d4f261d2c54ffe6a -CT = 0f51f7a83c5b5aa796b9 -TAG = 70259cddfe8f9a15a5c5eb485af578fb - -KEY = cdbc90e60aab7905bdffdfd8d13c0138 -NONCE = 9d987184c4b4e873d4774931 -IN = cb75a0f9134c579bebbd27fe4a3011 -AD = 7dc79f38e1df9383e5d3a1378b56ef -CT = c6a899758b6c11208241627c8a0096 -TAG = 7525125e650d397d0e176fa21315f09a - -KEY = 819bc8d2f41996baca697441f982ad37 -NONCE = 08b7a15f388fafb16711ce19 -IN = 9b1ddd177d2842a701b794450e3c81f151f195a1 -AD = 277c372784559784b0e047c6f8b7e9efb6f7491e -CT = de9b9c8fe09f705f558c62dc6d40b75e3aa625b6 -TAG = 52e2d2f153a4235eb6fac87ff6b96926 - -KEY = 682769d52fa0bfeaebe0d0c898d3cda7 -NONCE = 6af0738b249d09547837883c -IN = 3461523cd98a6e8bdddd01150812e6c58d5cfa25d385cdbbc4 -AD = abe8302d7d5595698d9f31011c24d4d180a637597098361354 -CT = aa3ecb46b9330554b36d0cf6f6ac4cf5e27bfd5f602da1b3c9 -TAG = 0ba547961eba5c58726c418f51d31311 - -KEY = e2b30b9b040bce7902c54ca7eec00d09 -NONCE = 28ccf218e8de56ea91422a25 -IN = 483080d7e2fb42580dfb862d2d266fad9fdce7cdcdb1158d415f84b6e269 -AD = 9f06fbe67eb2ace15c8011032feeaf72fdf6d316e1e08ef4cc0a176588af -CT = 67e1980ced4cd232ce893938e40b0798b17a1692476342e520b480a18570 -TAG = 9994185d4329cfa5f4bbeb170ef3a54b - -KEY = eaafa992ef6dbcc29cc58b6b8684f7c7 -NONCE = 1ded022dbc56e9ad733e880f -IN = 900951f487221c7125aa140104b776ba77e7b656194933fa4b94a6d7f9722aad51b2fe -AD = 863ceb297cb90c445dbcf2fcffe85b71db88d8c935158f697023e2cea103ec39766679 -CT = e0b3aaa890e45f1c39ad4f13ba7592f5251d6a02ca40fe3633651b35fba74a579f48c5 -TAG = 5c95fd941b272bafbd757553f394991b - -KEY = a43859049b2702e8807ac55b0ad27b0e -NONCE = bbe8c571342cac7fcc5d66cd -IN = 8673d6ee2903265c92446ce110d5bb30aa2dd1b1ac5558029f23974acb8a2fbf4c74858fc73d6104 -AD = f77c998ad3ace0839a8657e350bed15ffbd58f152a0dc04ffc227d6beb5738ad061d0f83c2a26999 -CT = 40e201a513979b093637445275b2db5ed4cb1fa050af0e20e43b21af6bc56dec654541e55b295b72 -TAG = 41bbef45727d19ee544fba5b360312f0 - -KEY = 68fd608c8697243d30bd3f1f028c5b74 -NONCE = 319a210b33c523d8bc39fbea -IN = 2c088f38f7a58e68bdd92632da84770303cd1ff115d6364479fb0aa706571f68d51be745f5c1d1b44fa1501cd5 -AD = 1417a65249b85a918622472a49df50bdb2766aae7bc74a6230b056549851b3c2f0cef727dc805ba2160727fbb2 -CT = 9d376b147620c2ac6a5eaa8ee44f82f179f61c9bc8acdd21680a7ff03acec953437a3cc9660c7ecb1204563944 -TAG = 05a4fb5be11e3edd89e34d0b7132d0fa - -KEY = 6edd3bd2aa318f78b4a51103cb08d489 -NONCE = ef0027b144691bc9716fbeca -IN = e98f2f99680dc748fe0b57390df38a99950faaf555a888d463d005ef4e4b1c22663d3d3daa812b20ae35ac934c2e187cbba7 -AD = 97337902507391de0f15c88462aa5ffc5e4760543850719ccd8a0cfef89484d8095c23ff8c1d06eae4ff6d758c95e65cc3b5 -CT = 3c54842c2099b73daa9c3f1cb64bb913c0527955d923510f3f3046df471c1365db97333bc5a86dc7c5f23047e938fac976c0 -TAG = 375b2a25421434e5e3a021d434fb2d04 - -KEY = f70482d53d3ef70cdc3cd3c4a37aeb2b -NONCE = e69d3de363e225749cb1666f -IN = 4cb68874e69125e1a6f6e68669b48317e1b361d0f7f95ec4cf613b7da2c835832010e8f95eaef4e6800b79bd86cd7cda869d2df258c267 -AD = d72975f15721bd0957f5cb1edecaad2d1ef047afb0e779035f777f94cd7ed1bdf8ca9d4f357d2a1e195f195e7483dea1476133235f7e6b -CT = caa1e48decbda18e314057c5ec32f8733a5cf03ed0d05c3654531bf56faa70751a6c7f70fbd7d39f7e9775a772aba8fe7731cd0230beab -TAG = 47d909cbdd1c7f8b485fc3232bb7185f - -KEY = 98a12fe16a02ec2a4b3a45c82138ae82 -NONCE = 4b3404684825dfcf81966e96 -IN = 899710fc8333c0d2d87f4496436349259cf57c592e98ec1e3c54c037bc7ef24d039a8c573ec7868e8ce9610b0404ea1b553ae10cc8cec26468cc975c -AD = ea1a99cee666bf56c8c3667ef4c73c2e1e6534800d6e39a97de3bd5d39068bb3e2f74f96c03463afa18f1ee88c21209bae87f37e5d0269b68db370fe -CT = 0431b7fc4889ae401eab5edba07a60f9682fe58419d4140cbf4f20c62d79d8a3cc1f23fabead0e96e1c8c90929756ea1efab508336e1d0ed552eafd0 -TAG = 01053ceeb4f9c797eef9426930573d23 - -KEY = 6538e8c8753928960ffc9356d43306b6 -NONCE = eee386a2b1e310665e335746 -IN = a92eb9a93a90fdbb2c74dea91d273a48efe9582f8af7a4e3a377b114770a69ca45421959fcf36107815e53dc61b7bf018fc42965fb71d1eafce0961d7698fabbd4 -AD = c5e572e464718398374c8b45ff8749cd9f517bbd97767f77a96cd021176c49c0acec8b055ef761f49aa6d910375a45b2f572cd5420b99153971a682b377ac88f09 -CT = f36353de609d0b5246f64a519d89a4dfcd9d53325a2d2cf910e7692e68391b0357b056b944e0b53e41568f304bea8822f9ff7a0375a5a8087509799226862f707f -TAG = f7f9b891089d02cac1181337d95b6725 - -KEY = cabdcf541aebf917bac019f13925d267 -NONCE = 2c34c00c42dae382279d7974 -IN = 88cc1e07dfde8e08082e6766e0a88103384742af378d7b6b8a87fce036af7441c13961c25afea7f6e56193f54bee0011cb78642c3ab9e6d5b2e35833ec16cd355515af1a190f -AD = dd10e371b22e15671c31afee552bf1dea07cbbf685e2caa0e0363716a276e120c6c0eb4acb1a4d1ba73fde6615f708aaa46bc76c7ff345a4f76bda117fe56f0dc9b939040ddd -CT = 049453baf1578787d68ed5478726c0b8a636337a0b8a82b86836f91cde25e6e44c345940e819a0c505751e603cb8f8c4fe98719185562794a185e5dec415c81f2f162cdcd650 -TAG = dce7198728bfc1b5f949b9b5374199c6 - -KEY = fd1dd6a237a12d7f64f68eb96890c872 -NONCE = 459ced97ebc385ab3a8da8d5 -IN = 04a9709fdc0a4edb423fe8cf61c33a40043f1a585d5458c7512ec8e4e066a0f95e2e6609abf3c95a5d3ae2c738269533855daedd92eca20bdedbbd5677cd4eee84b7a1efae0904364f1e54 -AD = d253b829a2fbc5877b0fbe92e7b79f38886a49ca889ae72b91f2c3aebe257a3ffe0d390b5d320bea22d6a5536cd9213612f5ed6e3b0ea33ac91cfee284cb25eaaf6b85b15f7ca894317182 -CT = 4a565d3ba4f2ec461c9bd8dd0f96bc00d2a561bfb56443c8cf47681bdf1c61f55854bea060c4219696cac79c09aa9400a7e5c59c6b6ca556f38c619a662905fc5f0e8437b906af6138e3fb -TAG = be5f93201d7980af4c5bceb24ac1d238 - -KEY = b09a4d99112e1637d7f89a058988b417 -NONCE = 74348f7126c0cac836e9de5d -IN = 6b3c4cfd1eb139b62d91ed5d1d8b0f3b52278d5c48787ce46f12b9f026e3eed1bfbc8c6684c6662f06614c69440b3d7cff7c46b2e4aebaa4b5b89236a3cc75535bc600104f240d01de91e0fb3bcad02c -AD = 7883ad259fa5d856ce283419f6da371b444b9b64ea0ddb371b17ec0a9ada27b0eb61b53bd3605f21a848b1e7ed91162f3d51f25481f32d61ec902a7f2cbd6938a7ce466a37e4467e4ec2b2c82b4e66ca -CT = 5e1b783b20fd740310333eddde99a06b5740428cb1a910812219fabd394b72a22a6e3ca31df0afae0a965f0bc0ae631feeaa5ce4c9a38cd5233140b8557bde9f878e65e8932b9e3c3f6e57a73cda36cc -TAG = 784b73ee7824adf7279c0a18e46d9a2b - -KEY = 284bd8c4b5d7b16aebce1b12988fa1d3 -NONCE = 7ff05007c5d018b17562f803 -IN = 903416331583dcbd31420906c64dc76e14d0c5044d728cd9b605b531ddc350fdaadeabe67d08f0b4c7179f82a1044696716cd96459506453141e9ec3130e893d8c2ff9b8b4c241b73866ca4fc1f712d17d7a88bf4a -AD = d0a1f92f80094c1fad630ca584edd953bf44cdde404f22c8e476df8708a97a0712e7fbd8054caa7d65144d0be3b30442d0dfa5469ba720afe1d00aa6bb53c79c1c178ed42fce596eeb6c638c8a8dedf76a431976c5 -CT = 9bc3708f70a68fc16bcc33099325c821a0ae9a2fd0a6a98382fa21b42ddb3a9ac6c34a13c4805d3beb92586cdf0f4dce3885793d49abce33190685e7009a79242dd93594722a1ceaa44886371c30bcc8312fa2bf67 -TAG = 3fd8a4d760d5b878852b1ca2d34dde6e - -KEY = 6d76dd7dea607a5cf5c21cd44c21a315 -NONCE = c1d13e56b080a500f1cb80bd -IN = cb959b92e777f835afc4ae4149b190638851238b7b13c9bf65343adb3130e8ad2356101037f30997d4a5fcc0a1d6415210179fdec881236a799f6e90dd43ea3817819b432611eaafd072368b9c7036c7a88c8b7774a8ed986134 -AD = 92a2bc3b6b6ca9de0cef10d8bdeaadf6f54782cdb2b09e66cce8cb5b56895636e982f7a3c7bd9d221ade62c9ecf68bde70becf683804386606ab1c48ac764c4e11620064545c5beaa5911c118856dfc5cdb8df50052b01762c6c -CT = 522ba9bfb47efc624cd8933fc9e17784919d2b3ccfaeec46af414c1b316355f65b9f9fd7f0be6ac3064b4016e43b8fb2028459f0fa0d81fb6656be0ab8fd841d05d24682b4a57c7c59d89af384db22c2f77ce10abc4d1c352a1a -TAG = 5ea4a77381679876e0e272b53519d533 - -KEY = 1dbcbe45a47e527e3b6f9c5c9c89e675 -NONCE = 98f2da8ed8aa23e137148913 -IN = bb23b884c897103b7850b83f65b2fea85264784737d40f93ecf867bfdba1052f41f10d2c5607127da2c10c23b1fbd3a05ce378a9583b1a29c0efbf78a84b382698346e27469330a898b341ec1554d7bf408cf979d81807c0cc78260afdb214 -AD = 46f1bde51f6c97a9dae712e653fcac4da639d93a10b39350956681e121fb9ea969d9dc8ef6ddfb2203fad7ab7e3ef7b71eb90b5089844d60d666e8b55388d8afb261f92b6252f4d56240fe8c6c48bfde63e54bd994ff17e0bf9380ebfb653b -CT = 0d90e869d2f4c85b511fdf85b947ba3ab75c6b1845d8191634770413d7574a6fbd9d86897cb3d3b5d3d8e6f74fac3bd2a9b783cb16cfbec55dd7d2f7fc5c39fe85d39bf186a3fdd3564bc27d86f4019ae0cb73f5f516b602331433689c1b08 -TAG = 8777f2002d5a5214a7bd8ef5a3ccfbbb - -KEY = fe33f47136506e5cc14114eb62d26d64 -NONCE = 9534a10af0c96d8981eaf6b3 -IN = 3ca38385513eaf1fcd03ac837e4db95c0ed1a2528b7ab3ac8e09ecc95698d52b7d90bf974bf96d8f791aa595965e2527aa466fb76da53b5743eda30bb3ebd9f6a8a7721fbfe71fe637d99a7b4b622e6da89e0824ac8aea299ea15e43250d2eccb0d4d553 -AD = 50b7bd342df76bea99b2e9118a525c0f7041c7acdf4a3b17912b5cbb9650900246ed945cfc7db2b34a988af822c763451ac2e769ec67361eded9bcab37ac41f04cdb1d2471c9520a02db9673daaf07001570f9d9f4ac38f09da03ff1c56fdefe16a855ac -CT = 927fe3c924d914a7aae6695ddad54961142b7dd5ff4c0ba5ca3e0cf3d73bdb576afd59bd2b54d820d2a5da03286c124507a48008c571c28a0ce76f0ed68dbac3a61848e7e2162be8e0bee8147b9bf60da625cdab8601bfb37dfcd165f533e94a32c26952 -TAG = 9bd47a4a2acaf865a8a260179aabf8ad - -KEY = dec1b34b7b81fb19586c6ec948ecf462 -NONCE = d9faf07e72e3c39a0165fecd -IN = f7b0bbe9f0ff4dcf162792e9ee14d1ed286114f411c834ad06b143cadbbe10a6fbc86f6664e0e07ff7c6876d4543e5b01ff5ddb629f896c30c8cefd56c15d9f24dfd2ed590304a6aae24caac5870ddafc0e672ac3aacae1867891942998c712d45efbfa4d99a8a6f03 -AD = d3c4fc4838cb3cda3937455229ddaf1cb9102e815cb9f519a5434677c68b11a0bae1280faee82f1a5bee593e669e6f81d5ece3675b8af63f1491bb298531aacc940f53678ba56ae96fc66be92b904bc35f2d5b68b3ed98569a4d04e8f8a9689ad9fa4b51db0938a9f3 -CT = 2f44ecf549077b98ba551819538097bb80304a55c48ef853e20ed8c3f808dc8cb5eb41c2463d19fed2606b59cee4b458958ea75715f7654146df4519dc63524a0569a00d7bbc4b32a372f82d955be5f190d09d35c267da1017e8b16096ae84f8a671b45aaf0d1ca59c -TAG = bc3af80cf9388d35deadecff5455d515 - -KEY = 021add6030bd9f3fed8b0d1f16f83783 -NONCE = 4e460f51fe6b5eb9558c4571 -IN = d9aa1d0db5de536cfbacb59bb75c592ae3f34a5f9c5ff4f22d14e8e4bd0754af19570221893797f60c89a251cd6a19c2953662dca51264afc21099ed5c80077b0e10a5295b3c4c6fe47d3c1c84fee69ebf7d8a7d9b1b338dae162e657e6cf5277ca70d47b9290aa7efe67b0ce574 -AD = 38d99cfd7578d40ffa1749d5fe83500362ceee76c5af38935806837b2f2d1b3422a5057bf617b07868dd95d8e5f4a24e74f96177d53a0275450b429a2b1f364805030765e376151ae35001d6a4872200142fdce82017f3e976ab0edac1a08d2649d297648320e7dd9143b554fa3d -CT = 8863ad51578fd1c9dc40702e34236adee885955f0478ad9a094a6941f95f900e466882dcd5b86e1563ba89aa105f56f3ba5ed860ec3338ee1b750a2f9332acb3f0f61718de7e40fb80442d046b35f147f178bd05362f0559a20a53ebbf78e920fe14c9d80d1c9fb21bee152f8ab2 -TAG = 614539247fdcf1a2aa851102d25bb3bc - -KEY = 311c2045d5486bfadd698e5e14faa58a -NONCE = f1cd8b373cec6451ae405618 -IN = bd154e428369aac5c13128d29bd3031364939abd071c34bacac6ea7292b657b794b2e717d9bcb5d7d01496d805283fffd8f7de6a3493ddd8d1dd7f58835a44d43ea22d95468d1239ca5567d6c80bdf432fce2afc544a731a2852ef733667b9f8f4f8923eaa9de3aa32addddf99b607efce966f -AD = f70cb7e67b2842207df55fc7582013bbddff8c7f3bd9ebbaf43827aa40f8490e65397934ee6a412de6272cd568566ea172789a006a92e5920140ca5f93f292b47dc262cefc66b75543f94365c08795b7c5e9c6c29b7dc67b2532fbf8a6487d40a3eff504e75c3f2bb2cc3969621028e2112e67 -CT = f88f4ef0431d0f23911aaa38a4022e700d3a33c31e0c7bdebe00f62ca3b55d358385de25ceb0538242871eb9c24530e557d7981fa0182436e1e49272d52689541f09517fd147a8da0f0d2bb32d54911a36eded0b87bcba54d6842edf461b45839df1cab5176e2c82c871b3be4ec1bced67ec5d -TAG = ae8d847f106e914ffadbdfe7cb57beba - -KEY = ceab57de6220b2c80e67f0c088e97b36 -NONCE = 8cf438aeb0cb29dd67506b9c -IN = ce2a7a5663449cf6e0068085e3c373c5ca6f027544e327bbc09ac00f1571268bee186d51a00bbc16da7429e4d3d5235d8d54ac96b6ecb2fb7d77a6e5b9e70d431dd4dce78ceb972e9e4b63059e350efaff841c2c42bc29c139b7fd070097556b6281b58e074d5271d9f66c6744ec6dd3b9db2f4a21aeeb7d -AD = 03e464d111ac9228d39d22a00120c6ee671fe5bbf462b1ee3fdf348b34999518998ac4e175ed48189c29b49b5527c27c43094eecbeaeacd3cdb48cd15aa82573e884a7b97bbcdad610a6955f7d8b04f6f98a13a907bc2bec4c940b77582b248f5fced1771f810977b2d0a4fa48bd4d78e4bc383bb92743fd -CT = 1fa9c379c78b92fa3c1e478443ae38d7b4b50235448ce2a88467514bc9db95844ec1baf4dbdbd1b0720e377d05d82c3b58b52af8c9c50417b39ad225e373c7ff18ac5a6ea5d182b255f1c8a2766e31e3e4e3d55dc08dfc64b818ead40a0e824b06ab24f0dc9f4f0c383db7cd4d40016b31701bb401b126dd -TAG = a9a885578467430504731d1a8f537e3c - -KEY = 585bbac0ab4508afb8b72d84167551aa -NONCE = 774c82af194277a5506e45ba -IN = d788112213d2b8b5b66b056e8b3e344a7876f6193b59a480c51fc04d3ec2e5166344c833187b14117276fd671a20937a4553181c29d3d85afe385dd86093708226f082a2ea4ec3288f372c772ca7ceae86b746ff428e8add17b0f34f8553e3db63f55224c39edf41f138a2c28be49d56aa8b4c93502b9794a16310f78b -AD = a29665261a8eb58c88803bcf623dd1a14e76af49ec5db72a267f2ebcbc479385fb6b32bafcb1239515d74a8282b228e83daf282d1ab228099b315bbed0f0e6b3427e029cc28c025460a8bf0914bd584c13e7de7830ab77fb4a9258dfdc9fdaa96ca941546477f04cea19a365a27de34e23e154e7419aefb0be0e871bbe -CT = 24f2856e4e40c0b2b8b47e43d94c1faba498884f59d2ae1cdf58c73770279c96feeee3025ec698cd8f0ae25bf0c9fbf2b350674c317e52bad50aa6ed9845e194f294eb71ff192604af50ac7192f308583a3edaf6c7aeb588990be81b801dc916ffd621dd4016e2b76e9078c89fac9da39f3a88f6548006a48b0199a732 -TAG = a5c8f9daa30b045bd3e1c1b01f438518 - -KEY = c5d727d159dd328b4160ff45a183226b -NONCE = 881c0802db519ce1595573ff -IN = 88b4be77bb8a2f37bc5e84ef9da92a4b8c3777dbcccfed13b97e93c19674c8c3f13119363ace377a14e5f36501ba9a3898fc09340886d91bf0a17ef0d028f2a92ec150071623a4a5db8e56e99e764629679943ea879ec7634fad1480e8617fe834c26210276d7db208b13f9b4c2060f2867aacb1b47c8e110830beff721dd8d120de -AD = 5f6513ad3d490f784dd68ca1df41e8c8e1ab9a240ea8e9bc22d0b1d7353da94d5d37c94f0dcd1a2dedd6d8e1c79a383e7e214cbb6ee2ccb7c6d894ffce5d01b6cf13876ae2648d36adccd88710d7d2ab6d43826d37ee0ee3b434972a2cb8f4db1c3304cee0a352bbef76f05de0e6f55a410eea5e697afb197f2483f0200d0abee224 -CT = 66bbee209eb11c675ecd3303c38cf1087b010c532e1357732c4911ca9db78c67805c95c829194cd413b635a900a08454c6eb9cfa3597ab531fc9ddfdc5b02b290be2a618df7d03b1ab465d6d03e8b87a430bf4e80d8cb9916145cf2d2342a91fc79defa151b1f3c695608e76ca2abc4c0383897f1cbb9d4bd9969b2f33813e2b5502 -TAG = 43daa08e6eac70e3238ce655adb65005 - -KEY = 16af56326046c92afca49fe173d643ad -NONCE = d32a935b4e56472d92d9f2ce -IN = c49c8e5769670384d23d9af9834026395d3f3bd32d88e61ed06b2e00e52a5ae4fe3867993c2af95203cd4006470a89677864431fb9edbed17412913bad4bb3eaff0fccaa150c9b13f83b9bf06698af844841a640d6f94d845296638ac27fb5ed87c310dbbd36415161310b284b8f84b4e025267906e0a4c822b76a682d44a70f9afde9bcf48ac2 -AD = f713886f4086026779a7e479fa646cb33574e6c977d70b8da49c8fdbb395dc7c149a59e219db8e4fff053cb00e2a1df9850fce94e52fd34661fd3d4cd8ad3ffe0b4bc7ccfbbf42eeef3e30ce13cdfd77dbd067ae9f5aebfa068f6b7ae2c17ad956dc03511dfcc38eac9fa3c0c0e9a340f5c58e39d868b77dede54fea1173216c0bb8f0a6c2990f -CT = d5d7d1ed0ae3e3481e2ccee201857ce1f427734fbb4fbe82a2b90601104008b8ad4daf74514b8ab3e42b6f6b509159ca04489b1175ce1e3fe33d36ea521e0aedff8c69fd00aa588d7a2eb9d2d551e2b8fea321f573e2a1df147535a873d540a3169d3ebc099ea6c33cefc04a2d55dc2d47237b95ad269fcdcd3c3750af426beb4edfe7837b413f -TAG = cbe0fb9509c224bb0e8e33f7ef9b49e6 - -KEY = b3df227e6dc2c846095e2a3b825d7645 -NONCE = 578bc24ca3845e23204df661 -IN = bf69be81cf0b340b006badc9f644d10376f4f9a7a78c997edb8729e3786447f21e97e4c1e0c0c74e01ef655d0a84ffc04ff7c6712ad65adc9a0da2e3078d4c9e796c9bcd71e7a9da26b987990d366b5e00a23a93652e10942e07a6aa01375af27080c9cbab5f554497abc48260937a6fe895361e79cd3d5e78c1a65c6723d4a4fbe9b3dcae3c05699cf6d3fb -AD = 00898eedad307fc017917a3296bcedabaad8a505edd34e93d92f3b61797ddccf3fc31144ef70f255be3b0c165c97eb8706f14c495f4aa9b3f15d2dafd65bf6741d67fe240967efbf0e75e610db9a8f722035e039b5e9246d258084a04c12ee8ad1668032f8caec737481fd894dba2ef702d3e6089acbb0fe0bdd6daa2a5cd47fc62603499fe3ea37365072e5 -CT = cfeb249551a695ddfec5f789e7f0a9f916abc8ee01d6233c32744c10a09b5b19ff9ed15e9f10de8f93c8ca1ae3c34e26fdbbb7f3b0f5f8b064501830d3cc982da99b294ce51bd33085c98b0ac0bfe44a8f4a5a26511afa3461aa88b770f076fe119ec90f33d8c9e7777f30b8cc95864f06e04dd8e328ad7a2c7dab83b03abfdde065bcd0c7d6dd47389108c4 -TAG = 3dedd1054f1a29286a51817264317b83 - -KEY = 58a57f04d1d5cbdd1bfbe01dd5f7e915 -NONCE = 47affabd7dbb4cce76661081 -IN = 5f82d481a6a3856c6f0be2aca54d666f16de88294a4d763134dd51ef03661bab45da94b9871d94e5b574a52214b22c92cf9690ecbffca9b108fe796abed9e608778c0b99d7bea1daec08dae89d5f7229c04fd52cc906b5f5b9fc0f0fc1e0b2272dcf4865286ee22bd9edcce1afadb579ec72cdf6038cfc75c2dbab5a1fd64b6f8e200d1ad0afcf25863293fdb7276648de -AD = 4b662822b48005fbd85bb99e6a946eaa74403909f646d914a236eecc5f4558b60b2efb1584b1f32d936b90428dda6568515801d21d24d6fb622e6463897c70be01f81fef741d6dd5c6556d163c3f048abe49f21817b41850ce79d7ec1fdfeba32935b58d898e964fa4b36f79c0f1f560b0afec3887ab325e1a025fa7662f9baf8e08a9ee714b8369621a2f1e6d2e96896a -CT = 31ab08ce0aaa883628f4b33369e5f6e5a54ee4a6596f25ecd54eeea30e81b41d357cb6c671adb6acd3d4e6654feb2ab1f3259692502efb33c5121e0852cbcb2dc5d9a4c65752debe9c4bf5e995fc909a2881621d46cc220806703795e61c0fe74c99e3c1230521b1f97bcbf4e95326e2d581f0cc879a2fc06ef88226a4413f9e9985edc913c418cc198c4df13cd46afc24 -TAG = 1e54066c6cc37f35c62b47426b609457 - -KEY = 64011470970333b7b677d4ad8ebf3ea2 -NONCE = 17031c5133a426d96de93123 -IN = 882cac1ece2d22a1db7f8339332379eb68516c8b7dcb3c089a5bfecceb49f48a169215313686eb5708135f379d89962af478cae865841e0c97ab47a57a456f634282c4e03c99abf7f7cc4e8360deb48160288f06e96cb09114877f9d91dae98828285626a1528aac87f39cfb8ad3db344fe4318aeef6f6ba14bd1edf9caab548c09f8eea091229a90dbc4b0fa34fda2bf13d300a1f9c -AD = 0394bb920cf58806b909d90c046402c745f6876af85d8a281081e22a1908f8475126594b39a0e191a070bda7c78d30dc4867e69ea522cfc962fa5f9915daea9133e998eab22f32a18957a3cf7d91c6f3d54cea94875d60be694ee841fef01e69bf5997ba4f25e846558431eb592605265f235211c2bb2d4807278f4b9c314039d0768df24e9c098c6a01c689d6a143073fb1a29f4400 -CT = dd347d6a3d4a71b2bcae0a0c690ca311f012c6ceda4f7fc054b8f9b59bad54237b64b93331b99f1305801640a68e7d50cef581a57ff2564c90995a8dbf57fa8cff046d0b946af5f68e0aa3d73262965622fe6d35c78f949a6cf9e4f62ba71accbf403b690e31f610305faa6737a19efba1e1ee97084cff2d125bd69a5a4ff99aa399df650452daa835b3e54114b295f00d94fc60e2f8 -TAG = e5e72cda6755bfb3a44377945adb5ca1 - -KEY = 4852e546fdea545d7dd12493a687e895 -NONCE = 7a3e136cd961191570c1b0b7 -IN = 30c10d7a63b614bcae1b79b07c252dc55f322554ac34ca664910fe4a0c9a33e30698e124d91cbb55cf34e931807cbe591a87667f2284c1c18dacd108163aa7a82e274ae659c4ea144191e3fc0f82d4cac929969a50b98ed9fbee52cdf465a1f0535d7d7df15a9a6eff3f4a14e254571cc47f82716d7a835dfa839213677c4da8c8623517244891993ad5956f65d318d9bba16f1eb54d2974a741ac -AD = c5ded7f545d2eaccbc2cf5cbd1b38b0ec3b6bbc054ba25a16efdd448e5a47b0085974e469c1b0df22441340170d6677f5158e4ccd71446d7ac73dcf5fcfe4ad7248c4ddcfab4c8ccab0968d74d66d9c9561650eb98c088d87766440fc9967e8463febcd12ed07f7e44fef47cabf05274002d0014c4e31f230a41171868db68bf5a83c902724397ed181dd8c6768a898e0c78f6aeb886df95442e99 -CT = f798de4998683da7fa9ca030a23dbc493f36c48bb52cd1113c3ea97ef2b67433c00195000777fa3b75a3f689a66b148159524a1fe9576587948760b279cda56164a23748564ec66ea51368ba2a900c97169eb33cf1e557f46100193575737dba670175035f0d921675d45415c6591cae079698e6b1f74e82d4b9216c20e907b148a1d514b2cf653d2e4994f7f668dcfe88dc49c29c544de96d8dd0 -TAG = 3663fb2672223154981b4c580ed3d2d9 - -KEY = a65b520a2ab67a24fb8fc669c41f2753 -NONCE = 3bd6c7e8d29242abecc4c108 -IN = 9d1559d283f7a38847088116f2156b19a8feab0731f04d0d499c6b0d21b8563a89a9c284230c1298b28a622cbdd38dbceb098ab896a7259caaabfcc7b0d9ea797178c18aaaa351c7f516342dcb9d3e91405882c8faa9a28f7c67f3db8913b31c0dcd56472d8ebbfb20cda2896a66bff2706b12ae0d9bc8c6c123c02f1f0bbaa418c1806482423eac72d718cad0dbccd208eb81663a9d9043d6ae7a52cf32b1fa -AD = 2538529cc6eec03f70df2ab085027ce015279484981422f31e58aeee31e79703d72752af2b8822dce9b385f1530f19e692e00e20ef973d333f4bd585ecf122bd4ed9b0626cef46baff0302c71411d27e372361f36c7245096faff21f0236f3dd675646760d5687b3cf1544dbcaa863f1267bce04bca976616b890c7c6ff3448d16072c3938f9b62377609950ff7818cbdd21fba2560bf1954a93517962181b18 -CT = c3194fbb5c319a94c0f61c432a730ce7611a005cfc78266ac4e5d7c95351e71d613f06f52d9d008b9d886f4d9a57bcc232d47e0c75ab755dfccc057a9c7558d7fb696a8c29843a8b9199e2406d23cd6507d35a872fa54cb95e2cb9af45405ebc6b6ee353e8a80debc393329bb9499c61c6344a6380c118f30fcd76376a9765517652e1b21ecafa63c0d19c1875658f1eda89c15ac2daf1a6f526ca72ee792a4f -TAG = fc16cd532c926ba01e2e6b15327bfb3a - -KEY = 84215d2c8f86e5b7bf93cb0620da6bb7 -NONCE = b35e99ce89dffd1ec616ed92 -IN = dfe500919f97713f6d9c4f53913175b162b8b7587d85d5b63f0cd5f51def23119e2e02c224142ecfba7f0a519aaea3c28be20b9c2a9c98eb145afd4db523b7f0b822e67dad630846b2a192bb146dcbeae00198c81b80c290d881125c24a6b01ec901b8912bad5b081ec7d97d6997b33052ec287f692489df928ce36cba1e3d6a41cf10c697a9e1f4aaf75dc5be054b98965ec3ce173be7e127c4c5387048ae6ab5a8d247f3 -AD = 6bf6222e64a46c90f83f47305554d090bc8d3838b7a856f0e5e1d92c4e7231eda6af1d9eb7ff6ce914f2256a3b0c853453b9bc75e46109cf8d7e8a9dca224e022d3d1a139d00476775622799541edf9d53eb645a40f6d98ea559e181d96e4df0141e51fe067542300581c0424f534d2c2e3b1b27153c0cd496a1c03301226beeed2b5cce0710d1f485e68b44a918b63fd8db610c7ff894514e272b6ed7ae33a38907e0698b -CT = 6c6faa54df62ba5659d45f64a5f014684138c93bf152da8a495e9d067b13a30b9fb84847f56231b2da4d87e6cd509a3e38a9ff47589c627e5b5a1196e27fc7afaa14a8432c2d10d8fbfd5d6d394e4b947c456420708a76c2aa638df7de119c160636fc8dfba32227c5de12e5ef429da933ab04e77b489f2eb761d0c753738647ad6793cad64b8942f621ac67b13bd0cab106ffeff21f24c79de69424e50ae550f2241d4029 -TAG = 202b232472d050b9bbc68b59a0c02040 - -KEY = 7c02b6bc3db61e23736c5f36faddd942 -NONCE = b958decc680d5f79ea7b8632 -IN = 7e5992ed0474f4224b8da1d038eeb78413fc2f9614fab7120043e75986a4bf1114a80703780a149fcc8dfd115b768f45917065c85176a3f00be40b427fe3765d3919a5b741708624e29bcae876d251fd46dd8d36a8ef66f671c25f984761cf7f75f4329de7093937cdabe32f130b77531ab1aa0a1bc38fbe2758c2664eded828b2589fc5c34d9a0d57a5a4463163736f419b65f0543f50207fff4cf1065a551bc00ffe9466538b673b2a -AD = 76e430fce1a7d8340104e6001f1c2048d457ac335c5453e48727244b75c3c4f04f55afbb5ce55ba6f8632dbc168ed715b83968a32e5b8e91cb24abc9efee6dcb7a8bed9394a546f0b9efc5823ecaa192df061eb41c671bd863498c2130f322074a711ee43791a1cc02b5cacccf25119ecdd99233abf3b131c83ddb8c62c93a0d653e91499e7481303adc8dbac615ec464eb8640ea138f6236b0ee31cea060f97ea9145a22d15e28eaf6b -CT = 14cfd190ae0521f94ee6b36bfcc403139782bfac3d33fe95c81f53e83c7d0c9a8fdebbddd79746b550a383ece1b5c93316b2fdf5aa36b4e97f739f78ccd2de9963ee7fb4d77b581cf676bb679b2dc4a48d977b45564f21181dc60ecee84d736f2324196c20327495d18973660ccb5dae69b79853d12e48ee0706c8ed821b7f722e46f35c8dee2b7b55ebee01dd3ea1e8ef80493cab6b27c264a67596cee06c15062e3a96b140d0d9ba38 -TAG = b6c47410e6f4a2f2b172c6a4490732f8 - -KEY = 1f58ccb33649d0dc91c50f2aedc95cbc -NONCE = b3a392b1fff0157e95f82a44 -IN = 738e04dc5a8188d775262c2cdaa04468844755dc912a4edf9db308efb3c229b8e46b2b34aee2c6330219bcd29d3493e3cead142cef5f192b043502b8a4cf0419f9b3f5e001a640541c84141e36d585b05a2f702356bd39bda518c42b461564326969983d22c3ac5a2aa214807ede803d57a61c9547505dd7e08402cc43e6ed1574a48366cf5b5573afcc7aa3c4d4721b362d20a58cbf251315f2b5f9e2c97c5ef6bff44beaa5004e5b7c7f28295df2 -AD = 93f7f5054605edc769efc30b35018ee6c929a83bc6454352c69ba9c72e4b4ea6f51c9ed06f314b5682be6a701c719087765d0a7022e5c9d495f28a9053bd435b8b834045c3670856149b08dae742b372a15a0184375d50eb09877bf94f63859e64228606791c516e76c5695a4e529b9dc5f76eff1d4641a22597e4460aea4eff107348077d4ed2d6262744b0a2d6610f25264d905133309ace10bb52f7138674c25e5d43ededbd87c13dc8fd9d3b1b -CT = a002b47b18d1febaf64842fe9011484d618a2e855c4efcccc7d08f02dc9b53d0bd4fc8013e01e21fbf2d9bc7fdda69e68be0c06d32003d045dca6bd251c0bb8c2cbe3693b252265c8694295772b767f83661ecefd57353f6f1c442f9d21ed98c55cbe1db8171ef7b54fe3e3a1a253b4dd48416b5fbc7c18d73692e9fc90dc75d4b88de1fa47c9ad33ddfa4e582d3fc61ca2a8b1eab898b9992c8e56d170730454ca50cd4f28d2759388cb8e302be10 -TAG = ac502a9a52fb3a68a7e90dc639c7ad42 - -KEY = c67510714f556ea1744af9207917eb60 -NONCE = 71b347a21653cec3d113087a -IN = 7040fde3513cf7f1886d7be9c0f371a3b75415e94c3bdfbef485081199bec4494beeee76dcea05b6601ebd4c8fe231fa16d3b0f046eb3e9c9ed8baef25bb0ff6bc85469b2eb41b929fe904735f819b241b01230c68c0b61577899426bf0dd30e085cccb4ac290244d8c1cd7514412a3ebc51aecb6bb4be1a5a4a8d2ff3fc99191f7d7d0b44fe2cc4ec34deccf901f54e3dbe19d2dfe663855fa9d93a01ab14faed7f00c14834f63e1d153441c6fabb3cf22506e8 -AD = 6d28b410c788dba025c387f5b94c0bc392c69ef646b9cdce53dc169326359de26a721703d9a7c5017631a469da13b2d9ad9115de7d06922ed6f093792ac25ae2e27993ad6be5217dc4f6c51e18f230d4eabb01a474704b71b1407d9cff921bd98e28bb60c4fc019b4d609667c747e83eef779ee62000b6800ba2666f415dccb12d43af4f585d3185d66ba2ecf0b0fcddf762445dd1b6154591dd069f03977243b45b113b6f9b110f9fdd96f0b74e2c9843a45c6a -CT = f2a2cdb4f890241f44e00b3373769542cc3dd24c3d07502ed162dfa10be9906871051b991f36b2d5c4240df483c2ad704be14b9efe79ca704e8eeb9dc250e75a92ebf5800c59fb9a6a32228fa1121d21e0b423b77e20010d36b9e6c68dbc000f69bddbd521a1f7bbc9d7e431e4e46e5094be96a928c6729293d2d805c468a3993fb7439f192b1142272a78585e3b7fcedd2f7cced52ab2bc42e2521603b89ba7633fa3b4d07d9a314d1159d7bd5b2dc5198b0c34 -TAG = 0b386c3a58ad23e9a45f00ae107d319c - -KEY = 171d25e195bae2eaf666993f3b42d690 -NONCE = fc16bde0c69d5c894642f1f3 -IN = 8775d6aa2e46ffea6ad4439000a968bcd4fce86535b7265684071a498e0bfb37646f56fad79e0fdc4d6016fd1e935dac5ad74b11c69f5261c3321efdb9cf03f9b7ec681a7f708ba8e3f66648b24c41485a5147df31385809c800155d0d4bbf41d248453302c3754eed4909b267893309ba5249588cb4a4a14b4a29496f1e799559ac9f4baba7a9b4cb5bace1c11dc0e7ef7a2ddd2596c29cdaa378b97c7d3c50db49bcadb8e1840c6b9fa12ad88c0b8152fd753efb04ead427 -AD = ebb169a863dd05cffb9deb866bdd130a1c6852046881f3f8e9013158c83bfcbaa98743957ed4b0619eb88d7ff69b3a5d06da74076c3cc2dff83dc0375236d363c0e2b1fb60c9cf10ecc0fec94757b1b719abc7066af15ff9b66788b38083f766d67005369319967995407ea20339ba27e7bf1dc263fdd54ddd8088232a500f605ba825fedfed69cccca75c207b06594d1d0070ed12a259d4f574f352d2e2ea6fa45199213b6a42d53a7c717250715e0404f2fe7b64e3ec7e89 -CT = 8694eac2bb3968303f795bf0118e43c132c9dd22ec320ecffefbe878ebe6b1e0833d19515c07ebc83f12cd9bb50d2658e6d7fe44a9fbcc2225e93ed58e1bebd78edecbe6c8b3491eedfdcc957cc8ddc95d8116d50cc50b1999ac420802605cc652134ce51a41533e00fe232344e805df146a952b40ce27a2f5c6bbba2154489ca40cbb617476ce6ceac1a6b9c0175ee33615f252377f52583e970f77795b573610baf5cbf5edc6d2837244f88bc155f71588c9c4c1c802be9c -TAG = f6725998336b3ef020b99818e0d932ac - -KEY = f7db0fd345ca6ca82ec8624950f8e672 -NONCE = 3e7ee1a209b1a191f0a00370 -IN = fa86869e14df0fd8e77eba7fe5a933fd1bc58654deab310a03aa7202a089713e323a323f4932b4b8f6b40982d6738aef48951f621aeb82a747d290d93d1eb5bdec6a62fe66774209a4aea7261acff80af9512af090e0eb0f5905ce8baf2a0ec50ed89906d8d67f370639e6f16eafbdfa982897cd5a3f88929d7f1032a8b3355223bf666be94ba9945fb5cafe655d59af69829ef92365f54ff3eebc45e01ffc439b16e23ce892ba6db7e661fc3676a175a8ede746000ca147db57a14303a1 -AD = f7b826afe62356f985e8e10ff356dc9b5b9d9df24486523c3bab7db355c84ec7e4bbdf66482b74fc6b4c6aaeccd7717fba44eb4820a40f03639076776719ea7aabd3a815c201146428bf4c6bf1e8b056b5a22ebcb214fbba64de54089a20ababda5c860ec301f36e1801fc55fe8fa189f35722a2cbf83ae921a9537be2b4f060d918af9b12f9111909d59db7cad24418896ce49762223d8a20a3a83fdf24b64703c19c78f528daecaa8689f307da7fe0befa1d6b1bef24ac8d9f5f12b6c1 -CT = acdacc648833698eff4d42a5dc0b123cdf6f2985ef05e6f2d42c9cd04663635d240648da18dce158b21cc0a3f7a2c35441799a4f1f5622e11051c874b2bcc64314bf0b94c2589d2a24d996af57d22085a64f10135322cb68428fbb951d8b14683bf6fc96b1395829a0b05ec83eeb20e54daf7a413e070ae1e0b73bde56faac630363fe215f1883cd9eef9c3b7d076bbb56f6f5ffcce0d31570f79be8864482b6b3666424dadb674f873a1b52ae6e3d8ec8984edf54186e38c71602098308 -TAG = 4dba5b1385565427a987c9d0b030f4b2 - -KEY = ca80ac4cf4057182d06d65dcdc09763a -NONCE = 63cdd8090e041baa9dca5bec -IN = 701c739ba0c146983b9e1fe0a9723850caeb818514860c3d4adef10dc5e020a8dd7f2fa282896170f9039d5b3fa629dbee3bcb81db44d0d68f9522477619269a59ec1a9ed399d4902f25271dff5c42f3747ab0f4b61c26a2c1bfe1c0fed02282fc2ef88b47825cdfb11df3ced0fe0227e8264132dd62af2d31f23d0c0e253f01c80400127c37806762eb28bc71f31807229172c78ae994b4ad800d6247ea12d3f4f902bb50b72c132902dd4faee05e67836facc7001c8f58475366668ed20d4899aec4 -AD = 0e91b38fdc70951b97e43aa9ea2c6f78d445d90ddf4faabd3e6e0ef74f528fbd5c3d4da18cc3d8bd3167b756da495cba49ea35e2db849bc37f6db8370b492d7f82f2efafa5444ac62835cb5602796cdbe85caa50084e51eec2651996d2da0dc18fe10bd6f374168d4c9ea0a36ba665148192252ce9d05cb78429c55256fbb65f1bbffb8799d63bf41701d1d706a44e3f27eb245cf720f2a329ea24fbea803c575513830fff579a1bde3daa975eecdb8d3956ddd374fe252637aac86ed3c702c4ec63e6 -CT = ca46eac0addd544bb45a97a4989d45d21599ec70f843d9db38157d186716dc39a5d1a5c0624e6c825b5b7f1fd41aa542ac846ec0edfe6bc28f727823667a33cf6cb5ba1ba6654cd023857c53ff00a63b34d2c17ebae5d46dbd073edb7b2f9e02842dbf663bbe36238f3eaeb7a23e328b0d3d50f49674253898f360c0243722af266c934f021e4f2fb8747fae728d06717b2d68cadbff762956826c910cc8ad2d4aea4518d5ac4deec978a13072fd1675a272539ebea31d736c759227f31abc911e0e76 -TAG = 9f0202c228ec48f4be6b2f876fd05a83 - -KEY = 9c2daabcfae974ae165a2ea58ecb212a -NONCE = 4b9317e4be2256a467e2831c -IN = 09169c1f5d873f03821393bef013bbcafcd82314cc986675922e2d43031417c8e65e625ce737af4621aabea6fe75030b84acf96967e791f8427b8f052051d6247a897006c6ddedd49cb7148afa5109a561e78abff7c55b97091f356e31b5667270d5653a497e2503d75e5856ac1efdcf3fb6e80b8deba8802acc064905e2b09d45e446d7d810971e5996540ee9c01fac1b4331f99ad329565a8db38eb93f2e2a8ca37d64d73cc8a7f4fe3234cc155226393f1f2ad17d0f01d5e60537ea44835dea853e027dd597f7 -AD = 1feb0ca13b3022456a4801d8f5382cad95f7a50e466a102d2208e7482dc8ba5c710d1721de7103000fe8811bb13fdf698844257dd164f1e21b0707251f228ca8bd437994526ed5684c4165c9754d1cefe7eb18f9e116a455c28db1f7c04feab74ab06af029819f51ed96f453fb6a634f73ba8c80e19dc62384e82feac70a12d42e3125c360ec2a97f4ce0a07039687ffc37c5dc1df1ed24f05a37591fcd5c34a3fc5f825c79213adbbdef65078f5e41a4062517334a67560ab215fedde53cd8129a51f27baa80f53 -CT = 8a4d4ae0842f8032d83b2e4eecfaea439f745f1d0d07808bee4b68e3b58fcb65a4c8fd9b93cba2d5b4781d28a9cc01508e9e85796551064867551f9083cce342ba1aac4d2b8f5b0b0e4e3d7c82082c441467e47aa2b0f47e167b28fd29cb8d5ee52c2298c1f87cf811061d922f056214346c1ec3d2534045c5c485ccddac7d9998d3d08a80a62eceb2ee18e1a27f97616969df52ec486015974f160745667d6be25ffc20b143d89bcc8b6eab9dff82ce3c8f95a034316a8f2f2a52674105f1246b2daa28edfd829d -TAG = 0361e65b1fdb9d967492ded32e1fe811 - -KEY = c98ed84949749efd2ee41eaeec51edba -NONCE = 7b056c9c7b393b0b04382946 -IN = 41b87fe62c82bd34cbdc70033ca8d2ec5f13eb2c14947f97fbb5d97da7323f8eb5c2eba210be11b1ab9554feaa516aa493822af4a264c8849e9c6ff41f690f44966bb49c9c1df5995de8070a2fcfa42d0b0b5115a36738102134f571988ba4fb210edc3202d3c74b5f8801a7d1e217b90caa27acb49ece590ebe6637fb6e2f5f0b849f29804efdeb8c102b3e3d2abfc4f6f2c5f71f0a6e4d5daa5cf16561914f14601edc40547d55f7d11eb4768d5c64fc621d04e8c64aa3aa1245c7192852d2ccaaabd448e06f806eae66da1b -AD = 2fdac5a70356c2c8d70def497321c6bee8ebb08a5abc8dd508d83f03bf1a09942d7f7a387d4f875a1ff16c7b5abb53d32bcc372012eab7a3b848a93f7af634eff8c5deb3269d418be698a3026f6f08f55a6e31543105cf1ccf56193cd1af802f32e10512a6bcd3101b7b54a8f3efdba03018d5f2475b51bd65e5e183a62ab11c9462450883e3e87a9640eac909f72b83da8bbd34431ed87d14c6f7e79957067c1cf2a12b5fa083496f903269a3c6c8ccd5e3f9cc287904223ee62bffc4f157f0db409e82101e3ca5e05d962378 -CT = 384ddc8e7ed6868aa722f6785fab15eb69caadf43246521b97c8d016afd976360365bbfc9f48c08b0eaf5437af8a9c23061dcbdd0d22e1d58c92951b43e013689afa6b1587f79fe9ad3104ee1f80b3c95388e35b0b9a5a3b733b32a3e62fc143e6255d0e5b1b55bc9439d3c1cbed610d36c3667378bbc1ac20d93a5a7e5563409a5b94ec799a5281213d724e46f4987588e6bc7e9e6468bbcf340d5f1a1eb1b45dc9fe9c832befff54c8a85db9c07196d7d45cc389fc9d62f4bf1f4bb82801cfa9c408498331eef4ae1ee2809e -TAG = e8cbdc1d6d51ac64f16cf08725f81370 - -KEY = 42ece9aeffc9d2e8ea02e73d1a4de834 -NONCE = b59e0770c689d60823c06c69 -IN = eccbb9a2c1241c88d17204cb0f0c069e20512bb1d31f966349add203d84cbb79d88f7add957a0a8370b9a0e04c9f17215531cd48d08c4612bbeeecf3dce68d41724166e06a331e7897e8c7c6a6affb7bf07dae1874bf3bec044d38227bef5c228f4cface9ea37255e15d6b27e154b349b16048b0e7984f17cffa03da07924b190f9b91d6222db1124c1e4e77c2b989fe2a7c338c7316a49c7df0be173d0420e8790bad669f6da96745cf34cd2eb429d18eeb61a8e80a5e03294dcf3a5886bd1865e2a55a72574db8db04a9560f969711aa7a -AD = 2aeb8ee162a7aafe5a72a8d8873ce3bc43a65fd7bbdef1f6ba71b61e5a9c3bd033e7e8eaa55e08ae381362ad0991d65bf22c99a425019c4cd7768622f108f5917a4be22b4ab65ede66c58191e402f8cdad69decf6552dd52b62e8d62268b84122b64145c97115373a26d2d5e59e69b7dca5f96c48106e9fb3f7fc7e0ab11c78a1fafc697fc73603d3f08fdfc0ee885f84572fb04fda718a21744c7e5dbace91b0e141fa82fbd4d1a7dc35edafaba7c5894778c5952ec787bb547a37e509b035c684a8f51ceac5e12ae71b165dfe957c6de15 -CT = c5874137f5e75ef02521b37f0759b5724798aaab8a1e62df81b73175690ca1d32cab6e7a9d7803a8aea420ab273fb46eab9e5f0773b7f5457d7a8c0058ed9675a6e1a7f15805c7fb695d277ba06adc3963606ead0cedb342614cb410f4197f4fad0b5df2187f8d2ebfe85ad3d5f59bbf652364c7e8c3542c5d7f15bc6e6c24eeb1d3232bcddf6588ab1c1953085bd0a1516046b76714d2b97718ce57ad23cd213507f6cda95ee9c5c23036cc7d4133c84a1d36393979f9d1bbc613350252a6de78d905607adf51368175a20106f81aa9ff9d -TAG = eab1c7790a5941270f2ae49895b3113d - -KEY = 6ace8b5fa16054558c9d0e272573a7a1 -NONCE = 358c73828e032f0e0db608fa -IN = 915466e994705239afebb8025aa965626973e41a750bd75f9e8ccc7c1078ec555fa618120b4f4b5e273fb9b262df73d39950fe5cc1c265c06a08e2318efa83c63dfc689de80966f45cab0d2dba603bf116b9ef7242bf4d9cc691a775f78148d2c75059d6049c861da5dc40d5f94848c7247a724db956d050975d613433066ab89bf91936e0fc85c61af5c2c61cd1eb414b9df0dc125a31a3805903a886b427fb78551bc696610833a9e55c7776ec1622abf839d733594864de06999be8d483f8dbc4da99f541c6f7e21d946cce229a104a57e4b823bfea -AD = e54b90d037c375238f4989910d423bc58d32ccc06ddee558dc6a0c2f9a0f13b2332883e2c4ef9cce41d72cd636516b3506f28f914dcc88311fd7c79bff0ad32770e4847362affd98ad468117cf0daa0f5747c86359615ad6087ee18e6c58453be60f3bf30f8c61c1466d107116f88499fb1b5df9a01eb762317676d5413b839c66e5c1b74121f6f2f7408825745fafa2b10ba7450f4ce207a9cc682d1e1442f972a86d5d4039c4856ccbc00c43b5b3412f5b3f87c16508ffa527c8080a556944d359f388f787f9cbc033fb3333e72127e94c455b433222 -CT = 37be446820f5635c1b5ca1d8ccc2c5ab5b393243ef5229999a2c084fbb54a330bb338963740ba470973adc86e640fcc167a88bb940e5ad1723a01089b5e804b932138efed6fa0ed99c1ac4e9c607f466c829af04407a4a2e5cba486685f693a7b973921746902ad8a0242e02075cab66204084e6b281d58430f2d62bf55ad56ad279bdab0fc8c3d570fc3371dc3280ef3aea70d686c855d40ff205c04d457adb518d904f5715fc6a9a5f30bf1cc74703b175d70a1470cc810a366cb8927fb937aecc200928db6b73873935c429e2f8d595b418c5b1bf9c -TAG = 01b05fbaa9f2257b3c23ed3cf91bcbd0 - -KEY = c5bf40aa1127073b03c114b10f3f78f2 -NONCE = b4ac4fe9920fbb4e032f6aa6 -IN = 164906110c34354a0d4cb6370e1ccc17a739350cbb11d6570f398d50efe3d9db1a97f00d031a579f56d23da2441295af18a640a4e33c29dfdc848d722786d9b73550bfb76da1676af24a7bdf5fd3301090bf342369a24ba830c7f8883db6ed77a2ced83bb85205ca31f75a16a58fbbbd163a3af5e5021bee2d2cece33c08442e89d3f4d6d2359b94a7ec6cac388208a689b584d5dd1103fcf6af10ea2c7cda4f690ea0e4c7376fe2c3e69365d982da28c5bc18d58fe384c9ad2689f4047f9575e54970961a02419d9f2bac8061ce943f132edae1b9622738593cde52 -AD = 9f05d0391cb128690cd8bd120120f21725a79e5d2d0ef9e8322c04bf775f7215a82ce1ffdcf0f6562c188e84cb520f30842b8dcbdec36436725633325020cfdda7ed1af3323d86b2bc72d1b4a326f02be2231fcf133762c4fa76c8a7d5d3ac31cd19f63411a220eba4fcbdec40b8eb01e4ef33c6620978d09a8d428ce0e74d02c140881f46f6f81c2850edd82dc46f3460b5d5fe0b54f09a3f31548dc520f1dd46ed657995e63297b6834df57525408b944badf56234eb2b9a43b1422a5c6a59bc58be683e47753803f7341cbb0075b5795228b586cc571c1bca70d5 -CT = 5c75ee10a917651c49eab6a1187ed631c7069134e492bdb5e5698f8ccd5503cea5b1902d779c2f6e6c03b0108cee3fba03f2b47803e390930060ee4ac984b1ceb9488b4cce80e329d3427851aa7da2213eca2dc5f79366caf601c49a6b7a8ab068f1a9bb899b81a23c99a9de20466fe01398bc071c724b2942640cb1a00489e0ca7052f7a06398ad42500780f194078e3e77142df5710ae88540761b902084f57d87c2b0ec57bcb7eacee6743d419d8877d61666f93a127d22ccb49b5db0b93e4f4ac0dd9393d6351780dafa412380205a90fc8daad3dfcb1b7ffaff -TAG = 8048088e7e9dadc4ef98777c0f6cb661 - -KEY = b628ee6726a4d7925734ab1db3ec4645 -NONCE = c830b0d1b4113f4c9aae46b2 -IN = cdccda3718f2b0963414d965a3c36bce0a165f8e88aa70ca9eb3de6510d02b0b49c29cda4a7f6d439c18cc8fd80b932d0a4190236a13edc9994b1c4a71dbdb694ea5dea53ef781ed398e453ce372a99c204a138739edf5b606160e38cc8444c8fb6e9cfc3aeecc1760e90d13d01692ca894572a0bcb02e13f61d8604a75bb98e96f5f36d10e70a48bbb4f73771ef97031c7da23550b3a12554c2c436115fe56713dd303d1c3d87bcebf25f61710eecc9f01c555494facac496c68ef44344aae40bbe1199de793096d4630018a725b130a27d38ab2e8c629e61d2d8d37b5974f9b7 -AD = f4d345e55ebd1ef9faf967d76736f7ef38e5eb9d659bf8a89fd3c6c3c674161bb54758f1c14856281a7dff7c9cec16cc138384f644544881d50c7692bf22513223b63274e3cb7509c8a410a389277f86cefc801d026b0049c13d85b26da1dbcc7cb387084a3d4a469788ef85b6da02ed2ba0412ba999c8cd83c9c6716cd66b65760c42d4ef3e324b470c2a5e031846fde97cadc448e87bec15164da006c10d3a846adab2b09c29ecc27ec8a9134d5fcfd2c54f17fb23f1a05dc8da46e737f317db42e927818ed00d36af8dabfef09c8641159fabfcfaed344b03a1dd6f9b883f7e -CT = 4f39b8fbd8ecbc8aaea871db2e67583a5b06cb83ed8035ff639dbc9af92c4e3f9fe57b970f4e998a0262dbf77dc024d5e208d3678ae0d90e6fa5d45e2c7f0cf90676368c8784c851d3818e221abaa87c5e54298229a2f4d3f82505ef7bf45686aaf12e8322210a727cfd57c74a5f23bb5d8222115b28503eae7a5c600ebc4765011161736a346b535e1bfcded85c198c6ce6fccfcff0fdb0c2fc480bc6e71fd5de77355932d82f8eae245091bcf5abfa0d62123302e5805ab1f5006a976bc1468e3bed0452c5844029d7d4ea6cbd4a907e905dfc796c01bbeb69c54807354a5bd8 -TAG = 2b55edb998ac9971e53ebc8973c4e8fc - -KEY = 095b26bf096971842fae34af6833c77c -NONCE = d59d30bd5384b86b19b33c13 -IN = 3be9eeac265ec4eb947dd32583ac2e595505b363d660f8b8c2ef631390bb152f016ba7c75bf7c2e5e23c980d6967772ca4535bcbf4871ac1bf70b53826a34174e5a2e6118d7ff86d4836736c9a1f9de44c80b236c5530bb5f80e5fbce9814f3b0843a088afd029f4cd2e6190dd51fa804f8216448e7acc785ddc5478287b101bab80256977494fae87d0c13054fa4470c3827b2e8172224944c8c4f78b0a33dd78ee2bff16fabff15e5909f62c49beb455dd655ee1188b8eff35bfba72f2ec5e4ebad63d7db8b6338660f9b818c6832954241860925ea9b7eb07479dd6de27489d64b1a9191b -AD = 2ff9a8d12980e63a378d6d635d319c26e8f747435aa5d797c6e21aa69fe21f653f56da7db7d67cbf54451f336f683aa9cf373ab40c16738c44efd3e664ecc6eec40d6af82df2b3e58d7abcf26b1d9ebbe6263176ce4ef8087d14b0d5ae1c16917141d2ebdc76a0834e8d83c4ef76add82e957ae376b210ce2d94d2684a045a109454799f3cb453279d89c60ba9d038a1dcb99540fac078d7216ee94f96f5cce939eca9b5f9715b1cf3c9f1e6be982897c2f25225919db3e31595713a4e281e9919bc2c5a88c46835ce05411d0757eb738ac9e45ab3f1a42ffcd6dbd09f17f656f40f1cc2c050 -CT = 4723fb7339048f811434eaaf1db24759fc232466f5f53926b84e740b67f457c8c76f902f4d70ebfd97696380de95e8e40e62434ab1089e3a5308cb066fd4cc7e862a391c2f727a63a01bfd9fdb8ceae55067fd9d6f55312f73bc2c38e4b12b3aa96edd156dd758e9175e67a64a17aedd27c9c70945a065216773d756f533b035f2ab53335a159d9ed3f97b2b7a57aef676fad95c46e3b82eb800197c03812ca4e580916c5f7cdbd4aa1308ab16096a8af5290a0a2330902966a58dcf2e72eea7ce799a8f05c986c6457b05e3eec2adfdd4ed38926a3dc07ef208c91a619848917b96a082ac27 -TAG = 3ff349a628f7fa8d3f970aff8a6302f0 - -KEY = e27171ed1baad563d3d299abc0968b75 -NONCE = 5931a4414d5a90e93d2ac47b -IN = 1d209b32a772e87c5bc593fe943d3d7a1497f390ecdccfefac50ce14595b98b682111f82957278241f291e655b3af108a9cc1523721652b6d446f34cdba2e61464a3217b29344e18ce8f47f10da88c2845a009b7491bbd1e1f36ec49997a0fb09764ee25355de29e56eae7af42a8c96aa137c02268078b7f145fb1249bdd74f2d4e4685de75be4dd7fcf29482eb26b5dfa5028accbd23c3c654bc202c1c0ae7a597ef15f4d14f7b8a14fd45698470ac6355e04fe4a14e3b2907bcade18e4152c68631f313cbef48341008482f434c017bf8e1dbd048f0d6d207446e697fea68202be7283188d1227f21ae4 -AD = af2f6abc40ca82d92901de02113cb8f7638f0a510f6a03bf056a75b02beb10157c97632320fe14fdf0610235e3a06172b6b6e80d2fe18263b11e9a5e3a07758c55131ffca0a6c9b121c37a0c85658125d5bc2edc8e4e247a636d7793a1cde364ac22bf754844607daec0a6b939d05fff5a8c44ad030181aad2361ff61f20a224f2bbf2083b2fc2a5b92f5a66bf2f9b4c49b39dcc23cd3ba66b5e7c19c5b7b74a766c3da0c2b02ac80ac22c006e8eaddf48ce6f6887f69fff1fd0aaba0a0f70ef84b54280830a62d8b0dba55ddaa5b0385c586dee60d1a05a28863a081cb9b41edbf3ee9ebff98cff983917 -CT = 673ae48b6080a3dbd08034312c36201d18508f4e1ee178ae2632a9a5ce0938687ac7e6cb238cff852ecfc736bb8b3c04b42752fe65cbf6ff897e207582e85533f7c238b0be14bb1deb4cdaff524b013661e4f2c96807bcd928e15e4e159390e1eeed036ce776b579d9f3fadcad81adfcbb99986babc9a8465def3de8de0cae19bdbf6488c12534a9b6b7d6fdaeb1d4c3be36b4adf7444a0b9fc69c69a46f7bdeced1214743f3357803d2eae24dc50933a733defc653dec56f0e0bfb8928de76699d4f7029fce9175b3b7cfb6c7ab1018f6f3eeb2b9401115c8cd382b06e4b9b43a097f42bebcc1493a49d4 -TAG = 285c1a0028fed3ab2a4d68946399d700 - -KEY = cfea8c059d7b866051aa54b8977befe3 -NONCE = e54e684ef16a2fa8e25786d9 -IN = 5a20333c4dd9b7378bfb773b7d64ab80379d16c0a56eb1f48f53c19d0fc4519d0b5f478e37f16d6e5085af31dc63488f9f2cbde3e49ba954b674b0a4e20df811098f7b8e716efaee6a4109f16afe128ddb0e54034d66bd00d13a6c69c9ef2e5a065825701f5e85634e118c69ff0fd71bfccc25030fe94e778e7f474136cd3722eb5bfd88bc99fb45dbc3060a24ac2bdadc5c82d883c5c63ccc0f7aaf5384f4c7fb07310b66a7c767d025c1a02dc9aa3d7aa921a72084906ae6039f837454493aac3e3549ad3722a735dfce4211819a2d7ec279221d43360edd9a4cb930815c8565c22b94b4849a979d5e2a57b2da8ecb -AD = 376d8e02071a93c892293902e369b8c7c44a4c9541b5050347b016243935408d0c9557b0f66c6cd493c1b8da68c8635f4c868e685674aed42f196ee9b6e56ee44510eb9b9e89108d878be917454dca0c62d207fa462a563a267270d6b1602d6795717475bc6fb5c87b747589328e39b1d4db3cb19f0fbe9791aa4232e33abd9e14b5fa3abe4705ee988c657677fa063aa349f1a05de045f3ee66da03af18b6b8b83e29b203e12bb02a4cbaf79eab3cfeb83a5a997daaf8f36fa9e12faee86c9cb351ff361351d98ee3a10af999799955a02fc46ddf56c23070319b3fe0cb42d07d811ae976f242670e618eed113b4342 -CT = 06ccc7336773919c2b1bd832e7c48ae4a569db96545363ae0b28061fede28a25ab6cc0382aae3e6b31efaa4c225073640d0148878524a7f381f53b4d21a43e39afd4c12cfdcda442d5023a8d2a8ad49f4a002ecc8354c86520524017e561fe891b6962682d168a860210e0def1cb4be1bfc6590121c1b1988254757fc5a37ef916827a5fc258ae772773a6902b084817f3641c21d3d1d1e8818b9851dd05aa49ea74e16778593f6f486957345462732ab92b1e4b06c32b5ad3270c5ef3d80b4e4bd08451e92c26acebcac1a4592e08ea434a1fbc6dfedc677151ae9471661913db19723184d9ef4bb49342606f784d98 -TAG = e7be877dad60c889d397726bf1b6ea89 - -KEY = 40d35704108a944f1e7582503018cc85 -NONCE = 26048431289e7e100481e2bb -IN = 515f9bd4935dc10e77dadd81f5a4e0b53eb858ded393979ed75330b80adb36f6b81288dcbc581e8d93b0e4705c07be3e200422397ca3648c9676952e60ea26d12198add3e33cdc589ee5a800a750d77978976344dd5dc710e56dbad462fab7fbd08c057a9f8765c4caa9418e6380038d288e09a90befeffb1e8d60e79925dcb3772cbb3258b15544f9c9554181df3483784b89b73bb6f9ca55f6d644c02fbd7e31bfbff45cc40132d2bbd08db6a27f5a302e1dce2f0afe4ef5bd4ca844c7900ba18faa1896a36896a1c80307cb37162174205665613b39cabd0a5b2dd1d5f8b6fee948006f0b2e31488c0c613c1d178b7800dddcfc -AD = 9c86692c874fa785e0d9384061bfce8d8332871ecc195621ed478706c46057bb4fff80515ed65b5fbbca3d463a62e227c228a340143bf012233b1c05a50fdb4ed04b840d983f47e00e001844a0d2ce14f6dcea58069c9b0bd8824537d2420147be7caf4a88dc9912853a7fde6d2a5cc21f85eeabca7902b94eb79d5fa143d02585acd57b93e4eb6bcdbe289a51c6631f7aea7bd9dc0f6cc2ee8426b37220216f834033fde15e3543422612fb3d972b8eacaece9614a4b759d93dcdeed026cc90ea058d7dc985c10859d4ef14ac5cb14849d4ae404badbcd98c28663eaf7274aade4bb7527c4f960875ca703ee6732c9a3720b629f2 -CT = 89a21a1d502ba947ac1921efd3c998bfdb437c2da0802e5eefff66de3af00bde934fb9109e961f179771c52de783680683f4bb752f877897882103146d030bea5bc3c03f923b477443e640450244cdf66d7d346954f6e862a3a577820d49151a82f4205340ccf2e11e4575b53f7ffeef09ec640df65a0b8c04b37f6dad7f940cf2d7446a6fc5bc2dc31854c27567b2badf6f8e94294ed5d899a458a080f38d6e72df59f13f5c8f736264fa2b302d5375d6e3f8c3abe4811f4f85cb6e302e2c12a892a1e7a78a5a33e4b555c02917330ea7a45f20cb59fa991f183d1e2a5bb1761005b73fb728124fa2082f41cdbc88bb06389eb165 -TAG = 5476c08e9561442745fd2f222d08b535 - -KEY = 2c6796d0773d12455829a3242ac7d480 -NONCE = b43c0e7842006f6a7953d598 -IN = e0f7ac13e8cdf4da6c17f1221df18b98267277e79c362ec2793dbb842bb9662b5e2fa34e43cea12f71b4eb53d9c862f176efc5d91f06b5c532d9c30206eb4355ad442127d325ae2c30ec436889e3d7a56b683ee09c7d79768d6876ebeb67b5a2cc13df02ab93646386106e0473149ed77ad0ec91dd282712d0aa26f30bfc44f93cad39504356e3472c5bfcbbf9557cd85b53e33e1a88d2f08686955a3d876e4eacfe783e5f6089b3106295899d4a73fbbdc1bd22e1408a2b93a9d89c9489cfe7a9a7cda7c92b06560a189f5ed04d1f02489685c602f8741baeef3fddf610b1a25ed26d88daf9a05aa0a476c8000dbbf798de92b0ab8779add7b7 -AD = 1048769719a44958dbafe1a59a159ddf2427c5dd8746a8454180dbf59f48ff6467d760f8e06aae8d2d2a79efefaef2dd2abf33ba1929073685d0320a583a56e8748288b50c7eac551aa859b274629f3d3cdca5fd7b2a08f0bc830e929584bcba85f80e2eb12bf83de607e4749eaf7631c3545f06ac236d55769c8a08427abce0174c52718c2c08b02afc7e418bd7aa7715de95a930eaf92f54c7dfa2f3ff3691187a21c6bb9b238d2fe2dac7266de30c94c7ee96fa60caf5ec0f5aae5cef28264933cbbc295cade787321f4c12f63ddd85185997a63fec48fc5ddb83be3b47a94e15dda3f315e7495098bc7a0b7d26802e12fdfc6a94bc6c5a76 -CT = 794ba0a7df144e66e6e7fc83ee290431818d149673d1821e1df496565aa7996f9e581fcfe9499c01d8716fd3f6d67acd6641285b70f8457108063933126c95b665e551925722af60aed5343e429e645574a65cb6fd767b204ca8fa91979c6fe49377fe4b43fb9994e619e1dd962fa49a8ae5ae0b8eb630f112c43a4e9c28ad91fee9b5bec0b27c5472e30c2699e984dcd9f984a3eb7a7b7209a165b2f4a74bca555dceb81e3495a3d39115d32609f372d8dfce820aded274ac567112d295de5b261b10c01f4939ac532d4a0591f87742d9502d7a2201178b4cb4c069b1873c44b73a901e299d4a41e57dabdefa39907dc559b44e99f2b950e09c -TAG = ae5afc2bc4096e308cffe8063277ef88 - -KEY = 092e4a78c47bcd0b169aa35343c885f6 -NONCE = adb73023c873661f02bf4ea6 -IN = 0751fac5f54602181fac252cd2fc408ea3763fe229b80149bfb4b0044f541801843c8a20ffa1ec931830bdbde31efa998e0875c09eadaba6906c870549dcc650b865665c56b5cf29b75da63de088fe4d79cce59499518a04a17dce18879e3e33ed11ad808d470b2811da4617039758109f56fe75eeee696ff51c18d5ac04fe895518fe59435ed1f073b56079dec1701999ce0e5ab45829cbb85cb1f94dc67c9ad28815728f6de85fb7ae12203eff28420393c1ae5cf644bfb5633156e9189beb02294d7199e54ca0d2012bee2dcd6322eb90f41b3c6086cf0ac6b3888b21131f3e57643f2ab60141aeb17d9d07daa213658b52503482fabc4a0ba17bbe3a1a -AD = 60fbcd82efaa99e17f3cb16a4d2a1e04659d13d84a83135a5e332366ba5e6716bb3674d27e6b2df4269180a0df25841e2235eed7d8eaba571b34178ac1a1041623138641f500a7d4ceb28efdc0ab45274cf26c0dd16174c77dcdbb79a7980e04d48b35efd3656e501e352b605bdd1b57cb7f9ceca5ca14a3953b2dc77d18fe1c4e1b859d2b02feffd3da7e259fbbf27721d330049f0d1c2729ed2f8048abfdc0e7b3609d2e6b4f5b42ece472f0fc330247880fd04768b678fbe20ba9581f3db18bf3668fa0c80751d78286e1927aa6e27ecce63fe883ee88e7a05f8ca2a387b86246f7d1a4791881b14f619a340163da62f4130b2a2c0bf39f463ef0af4120 -CT = eb0fffeb17e3309d1104c9a9c211bfbd585f9516f775793c365d36352e93af1b4db15430b454d1e7aa913f2af994191c365d76a4d49eda531fa7ce9c49b98bad4d591c868fb066a2e00a6bf4b1bf529002d403313c5df306ae34b8c62e939569bb5401eb7ba87080ba505e5c40a3856d2e177d247a5d8c727b32a13014a00a57e9f01cdeacb4d1abd16f1548256d661c45da12c2fe3ab561375875c7b6e273bbff5659749631fe26cef86e02742d0cc3f63a76ae5ece59b6556ab27da9de1a20c627da8bef3c596ebd7b246505006d1a381c2a24dda70e52b126b919471acfce274b89e07d125bc69bd94f2c65bddb82441897973566014fef625bca7e342f -TAG = 8f2dbbcc01538ccc45436e7176c2df47 - -KEY = ab1405116f454a3b1f106fd491cdfc8e -NONCE = a9e9a06e4bb83c215fc59a00 -IN = f64f0ed5ca25e118f2a2dbf069a9dc0169ab0079d91c6552d4a7e8d0314c910ce0614e1f6157b0f758ed6d3fb3fc3e2eaaa9718ef30e8d0c136c8bd6dcff97c0f5ff8a5d3808d8c23f2a9ccc35fb9427afd10dc1c298e95b335044b8d33e414ecc17d7b34901608284bc175418910116410a40b29dbb379eacf4ead521db3ab2a3d9956081af6d7438714c0631147b7d1e9ee4789751d4260b57630bb573739a3fd0b19a7ee8c301d7f1b09f86e60e31d5f2a86c7a65b244d5e4d591df3df3caab80887ea5f1dbb569516672eee351db5d5ee4d662a3d3c0e48cca108966ac6dfa6e4f9b88e5e577752826d2da05f2677dac7c31774eb64b1b0fc938580a78e4a296889c -AD = 3726f25fea1d10c2712d157e1a1bfa75d6f9e5bda448944ea2b7b85c7d4ff4ac00f68988f2a290cff3d5dfd6af33770a021b03fadd5741bffb7532924f3f2841a7f7658c49c6b915b1dc41ee4bb9ee89386c9911974979f43e71297bcb34ad6ed085177ea91300c9b42524503bbbbfcdcaea03e3f2c939d6b1dfc9c6b6e53e221568d2557bc3055752f4fd487b903a2a0bb7697a19a763fb7c615c7edd099f72e87849f57722cb0987651bfc476a0acfe13d02d6b01f761784d247301bf514a14a990cd4b59664f826649e0f389787641c1e5b87388cff42fec144d6ff3f382b85062bc21368c93019bacb56b643808a848c60bb3d804aa64e2b8fa1c128d6914663d9d3 -CT = bc1c14f1df6ca46e6b4daafb016daa235718fcccfc1ac698a061885c33479c0a7fd44e46e805869383232168940b1a9379bc652c565059ba81b4ec2ab435eb9b91de5bc03cb0a7dc11805690ed9abbadafeab2add15f9fd69b5ff4bf4ab5cdb4a6fd3164ceb7820530641d8460b83929b13860bd2e64b984407dbfd2de51e865d88c63554ea1f04305ab72bfc991fa5573bd6b41c4f8c848fff4b0c5d2398a57b4de4678ca4dfcb16a7612773a24088893444a8ea3d0916e4b460b33657f41d2b04d0c28653ed068a3653975402c31088cd74722d3bc09c50679d0ec94c1e84844886b1a56c4fc3b14614634f08c5b0868d276e9f8f992f94b2c55be5f2e408a498d27c7 -TAG = ee43dba528a9ce84a53ed8fc1fbcd871 - -KEY = 7990cd12d13fbb929fa541bdb8e3107e -NONCE = ff7b2818b62e856952aa2cac -IN = 5ba2afc1da8c18d8be3936a2e515bf9eabb93e44905a86773a38de7f959c49ca56d7f1fb43213cf7fe394b49733b031334729ce6c7ef17d843790fde814672ca982807b76475350210871ddf8309f59fb280a7d41726ba7f00ed2fd96b4a17aeb7d157130cb7e49c8a454cd08622824d20f86b4ba062bb3b3f9d4a9c1402a9d80f3324e4127ee57ad94f87d6ccfda76145363fa70df95341d483dfcc304757da7541a0f148036b2e2dc7f93697d8d275456107a016b425542a89ee33ec02289f5260257176369d990c8c89df73892d7e67227086c0c2c258e5fbfff8bf9129a230c229356fb0935738d2d6fb82992c3465ca5a9472ec06c7b5a29240b611837225c61a0e14ca2dd30f -AD = 865a9b2706eea62f3fd3164805cd8fe4740d1ba7be809cad9fb39cac26f7c57d4c449f4eac03d87f87dcf219c562b9ee07ab3ce22abd46237eef8221049fe499c9189f789948af92bc434b24aa44fff600c2d698593bdfcaea878f8780adbe8dad2cf453d253e8668631a6eb831be01db9c7f1b7b8bfedfae83bcdfef3501cf2b2ea48bcb19f40a70733f3e4c3dd90e17912d5797fa46ec852edcd49b0780bf6287679aaad13a926f750ad7d3ca1ccab577b74fc0ce4cb22e5c619d2d668292c9db4a98c5acc4c49561a77275c06f5c3fd514ed8555db3e2f50dde5c23e84a38129e7a91cec8d168bc828d09239a5c6bbb180bf69950540d8876f9fac5d1a258543a771610991b92ec -CT = 1901c8f9b5a99c46c9cbdf8ace9db03f36ac17183295544d8170fdc3a16c7194a2fda400f8f0b251a3eccf639f539cc356ed3fd09383954a8119b536290865c30a629d44e467acff5fc323d2be97f29fb9b4ef7cf2c18a63dabfefd7f75e696c574372f4a35249897a3387a2b10c1a50ae23ea74560b498c9d06bede78f4c8c9d879667c8c8e137a0a254f3f881ce8d183588546e066314bf1989d1acadbae61f7836fa633de9fd0fcc5b3f72aa03ac432be8f7a14c8e86b45bee416acfdace44b783137e3135a801342061781007ab939a52c68d686f5e3b401240bb10e764211a059fb0aa00e2f635ef214322918fffd0326ae38ee939b4045c6039df7e7def36fdad7f5b65c20dd -TAG = 3e003897b4d9411cbd449cd8dca5b58b - -KEY = 64f0a8065987a4713e35dede10afb708 -NONCE = d6ee984b82f1097331400f38 -IN = 29327f95b41119679b80c3b51fb5240490689880ebb5ff7b59a62ae5e08f7cf0993c09b13fd845ffb32a99ce18c22bb8825c137c3aa622cf3a8390042c6a1a159aa1dcb6b6b21f4e07fada584dd21620b2fe0aef64dc609aac925d8b8d26915fc101031b68a4bc89898bb92146a0a580103da265cad1946791c5735b95d85d3f0f1f39a88f47b9c52e61307627c084d68d14bd14e3572825e190bc7146080bca423099f643d53ee3989386b87fe3dd9c383f6a58fc0437fdb2087b5211df2069bfd981d8ca785384cab31545ecfc35345f38837883dbde917155e631a46ed1444ea0ea8a5441bebd54e5f6ff914fcdd66d62efd223f34e16a880370a529b2ce6ade88e907102021dc87aba9900b6 -AD = c8116196a12363785d4d6fc593b23226a5fe83b00a77ba24c69644d2e52291dc59d2af3c6ae102707439f22c33251a01c41867f54ecc552396a5aa98ffc687e3a88d8d0dcf826645bc78ff9c1a3052481933c3e8ba8e30bc249e6d095699ebdc51684696a15dcc9e28d09cac757e51336f79a0cd5ce8d070579e12956a740666d28ead49c47bae10db20fff8dfe6fb0260a87cc6f5a879cd0b2f949dbff046d90cf42c7ab51337e8908302935e50755a4503107c84fc94f7db3d3f0e8eac9c0def7435676701c9acd7f4c2349c3b7324622dfc4d6ddd8265a810c000158260aa6a7e3af973f8b178959de409792652e9c4ed1d50fce2e5e6bcf205c6889ed717db7f4b14500aa8641b8514150cab -CT = 3e04445e0ba21e8788f6f192b710b466d5d3433463f0308a3c0fbf7f1666fe01853b9d340f496bb0c2212ae3e3d34b0fa1adaf33f039201d1962f2b51031c2a4dd9aedc08f7c895682d1352e9a21225d81c98ac7fd4b4de6efe3dbe437d255e4464a1258d4497e2a1d4ef6c319869b78fdbcf4632743825112fc21acc0a1431d8cf8eb8865e695c0f3668ff5acd8e850373331ed7ae3bbe515b42c1d0ca0b9caa4df0048425fcd08850f23a86b4adc859291b5c49ed54e41778c7ee2a11da9598396aa889dda9513afb9fa0b66c0affa555bf76849d754702163004fe3e77ae5a7c46f3696bbd52cb8680583aa5cac22608c6d45b96770dbbfca14312fba61b3fd0d7041ded80d8dfbdc3f901b10 -TAG = f42a0e4e6e6a1e0654aca2ab7877350d - -KEY = 2c351f0b77cf0920873fb57c910cea15 -NONCE = 4f844d27dd26df3015608119 -IN = 227ae9330bfd5a662af4137ca7fa164f383a63e5bc33eba94726a0e7a27f666887fe484680899ad8aaf6fc5426600760f5e6ba53b0484615d0089d9b1e75f5952ce0665d16a045b272c3c50194ab7b3831b313dbd800168a24e576cab5dca4319660fc6add76bb400376fa29cbcaa25adf3cac81f3e66a6baeb0d94ed92aa37271d2cbd8219c0647f0af6a4ba8a8e169c10cf6354122054a547ba046e67cf1fb424271d3d3eee5b51e94019d450de6c1f770395316421b61c5ee9ff00c910103e58d423946c68369730a974a392c21be3fc8223cd816e7432200390fd7cc3f5160795422c9daffed23df42a7f8259e295d43fe57f75f674886c6405bc6954d17c2a36348761ba09694964646cb86c0d8c64c00 -AD = 9d7d5e5f63267154bab863a7b53e0ba159a6d8a57a8c49e084b513b463a1e812e94611116dce9c1ceab2b7e18b4d69f7dfd225d2bdf5b7750d0d9dc131f22987bc812da5b0a8ecbe9d0ca2210cf6ed8a791d95c3f72898497226f69c8971c2da342500b75367842d14983384b5985041eda7f1cd73e2b5c71bbbec6537390313583bbd53d2d563848fc93d81579d8db321d1bec973f7c4e8f34b6cab8bd7b5789a7b40f599f2f8c43f6d7f8fdf940577ca8b5159e699d449ffb00acee0940937d491a71a81ee9da0949f8fa1d780f3957908819221941f0c5d011bfb2560acf2d7386f973358d68487954e26ea9ad3068c65b797307831e03aef7d1f1bba9ddbba2f251329e85172ed8efb1a689f8026b5068c -CT = 4ef2a097a8e507143b6354ecd94d072c0068c68698fd04f2211a771bec45d616d8eb7eaf90140850c135cf468dab9e9f3dbf059b56efcf616b32992df407bdb735a8b5ac2c361973abf47029bcde46dd5b13728add772264f2faf60f3de10494b0606618c383c8929377f2390c4a104141a11711ba7e3a3c83396761d7d62a997e8782822f51ffd0eaa0e6c9e02ae4effc0686af29f2805039c1cabc8b826d1ceb75c4274e95f854a9f5be709ddf1002481272586aa021acc2fcfe3e6cb0b2a47d124bd8b83585b43bc38599a497d0de3979c30c81536ab06a1649a3cf5dc2c2a6e52bcbb05a76e35139c668dc8a3c038ffd1fde8c1b4a31de48341b5fd586c674e35bef3b104e4b84063889907c268226dc73 -TAG = 12aa2a46a9014800b3243d1020290d1b - -KEY = d94582550b2e0d42255f13a8753f8e82 -NONCE = 82f7abb31dfc28491697b347 -IN = 53ba297d691fc3abd93ea8b6f3d629584370ac045934b1b738a73c09a8236bf5f99f357b1cbb120414c68ee64d304b7751c88c563d5d16fa094602c0ad3c803a8f116f3a5071c049a4b88f19ba2d500a171565c719fa64e691bd4a9c4588077b0c2b91733a30a214e474d868ac6b301898dc85346523bdd4f6c9807ef69941a5369b4b7ff7fdfd252729d3829a7bde65427639de0b2b154b4830f57ac13894bbe705f02362f8b75367ec7962c53bd6aebbf15d72b25c08570392592b6a83d4f44d2037da8cbfea2456696cc39a3272e46a5b4fb837bc6e4bcd9606afa58d3b260e9f6f58bb5d0f07438f378b6a36c1931e9eaf923c2a3679a789e7ef5865c7e799ff4633f1b2acfb79a5a0fe9cdda9cf347b9664568def93 -AD = 2bfb6a6726c6564b31cca749bec29a8c9fd7bfa22f26af0a80db5e6b13a3b10367be6ad87325abc59252453422535466347059b7d57fd2b1eda1d6d37dcfa9da7df34746e1bbc98baeb4bae17281a537fff85c0785f9f27617e77333f11be28f9aa3704651e4ddd72502c79cb2a810c4686147cedf056b5f035566eb34d117c83ae7815e7e1e83163907020cf0736ff1862371e87269e5c8c1926e0bafbc10610a6ba6cfc273c9d9bec0922726dea04acf72b3f88a5fffc57e0af6dddd0396b4937d2e7d52feaf60d29dddc5b4cc139eb855acbb794b99d74b8a93e3731f9092b92b9bd50c846eecb6eaed2e51290cd1f98dccf3fe746c5293e0b970dde72835c44b3a445dc1f2bd67fff6b1a7e378611eaa42889fb92de1 -CT = 1afa2fec98728ce39fba26bcc769e9766993c8276f88613db574773c84c91fce6ee7dc6ba4281b8d2dfe13820723526f0d6f20cc21f305b792e9a2bb1622c742fbc05ca1f0121cb9f6e1ad6c3ba80891e2043adaac4f1bdf29260a44a182cb165f58f480be5f16b51fddfd0d264bc4a18bec589d24817f586fc8bad15df7cb4d48d788fe7fbe69f821b5558b0a664ee12ba8ddc6bbd325f9b83a024245b4e68b310f2282f4cc6005209f7b7aa6ccc025d435441e3bb990e81bcd4c8218b8360163ab266be4a1f5603059db2bb67e541e1edbe8e7762ac522a81f495f5ff8bf99948050e61c86e83134f4e1212f879c86f7fccff472fd9753e27a0601f914655a5f803061cc986431445021c907b3ae0f060fac13f3723867 -TAG = 5ef1ed1e2bf562893b094d58516c11a9 - -KEY = 31d93fd51c2d6450cf35d9edd71413f4 -NONCE = 28f6f0c288c9f92e80252e1e -IN = e78eba6c58f93cc2374932fc21e54f695f2daeda3bd1e0121a77d178e3bf5c0e824a99042e8f2522df829d014e4d35a756780e8c07f53ca8fb78db6fb76754ad461665051c4572b2514804d0a9cbae1a1a013b796565eee13a7832ab8834b8406b1185332552d38754dde2344ff4f6e4823390964ba2dc43de136f2235b1d919e0f4ad60813d30f0ac1dad35abe3bee9479337c7b430841d2c722f12aeaf931cedd8a82053f697fff8d07f0af6013da7da58a5dfcf45561943e7ccdfd8d11fbe96a68a5a27982e47346500c0284caf8e6b63c6621e80503a7365d6693dc9a249093dc45221cfd88562e25910034c2c123e44e3b09d8a8a15547285d2596b98c7a0ee9d10b2cdb032d08a6caee1212420b6854181a583c15e046aa202dd -AD = a4fdd42aad5475ffc1b122170024486406033c8640233cd9b23c286fdd40c5b69eee39cfbf965f7a10c73663f9804e6821c4f62980f8362a580bab446325b009a004b60b1dbd12566b55b42e58d8037d86c1050cd6ecaaac2fb0ef616a15bc5bcd8252fd459165795c500bbb2fb1476e5cfef9549db733be65bde391c810d099e3745a2cc7a94debe1f4ff6653b338123ef7d2f9a602bc9a4bbe757a63f932a802014f2f06c6688faf14332a355b1025f33687124399f55b6a5adb4864727ec6c5334c41d78d1463400925f6c29c0f611f35c9640045a740dad5b4f0dcb632e7f9a3478b526aa9f97cd9f8d3ad094b7922890e7b6d9c67fcc4f747d04ddcd115fba0a8f0433c6fb1bf6011a9cd153f866c76b26d427a25aebc60d10540 -CT = 8d668fb50efda82552aeb5d075ff3977c37929d73f6639289e7c6da8c89c664df80b2387e788d12398d62d3c0ed2f9f918010d41021c464d54f016c4e10e85e29ba3a45793df2ebd6cdf30045363434387bb0d20439f4986e6eb7ae9fd85fe776f7b8035025624c2413ca8491cc6e79fe901b9c40ff3a0e37a7c7e88b56de4fee65861865162821e046846d253982e4ecd17bd26214b0923a4297d4ed9423395d856940829ca5ee74488c3b4d8aa3c5ceade17d8a3f2e45d3ba91360ac1c76d6a29f8243bf49c1d75aa41ba239fa6f3b123e198ba799e3b70c674607c5371894800954eda0264b3b82606433f71371dabc5f1fb3d703232533662920a241f613c38d16b0bad24f4aa3b336af89cdcd2f371e1bed7aaa47c56d17100a01 -TAG = 594ee5c93636cfb5fde940e3d561440a - -KEY = b06d694a83b14768ae26a8f00fb78ecf -NONCE = af11369ee342454cddb8db62 -IN = c01130afd7d3f4276dcfc1ffaf4bb636a85d18e0778df6c6791b6edb92a617894b84cffef6556c834a4800b336dc295e80b699b28cf478a01c54052ab0d0d4208e1865edd6906e3a263862c05f033668d7eb5b42baf36c702d102a6a5c723974e63bec848c89d16584f0d1ec429c87686b1ccffd7626e0a83f9c471cb615541ccb02cb58d10e63ffef171f1affca492ace4d39fbf33bb5126c575963e6b6ef9fd2ee4d6efcae5afe422bbfd9c3dc22b6b47cab8dc04127ff93b016e0f92f5d8518d5bd3bc6edd45e0397440f1a4a0c7c9c2773c0a0cd3b890effb010dbcc00237dbed1177b86bf60913309bfda9376b4192da59a360afc5bcfaf8be16ea8313de97b417aaddceadc63a1c3a355693616413ed4101ad68f6e6aaa99c839dd2a9ff536 -AD = 18e3195358bae4ccf43ff8daa34902fe48f99fc1371d34060aaa442a43016a1d756f795fa5c9c4a828525554571e18c27134f46094790dd1e68471ee40c17bfa02f175b2c2f7f2aef20f00e4d71926560b58f015de19c871d808acdd341675d8fc19d1e6d4028e1e8926df500c4685c14729c6a056898cf919bf3ae429fa3ca8746495716d78c9a8f2ecde596f985b1c25ad0e73aa305a86259319176b4c4f3bb231fdaa478a856f46416ddb10a14ed23c96dcb86f5bea3114568a44d8fc6ff4bb47fd0e2538b70d964842910a682e7bc7c7263249832c21b7083a1e8b143828de0f3dea8b404cbd82efb19a11e4d60aeef13abd86621ccbc3d8f220715730eabbe04a6bf0e11a4f78cd2c4369ce2447a76f4fa48ef8d322a8a28a67039c24c4bfbf -CT = 6beeb306c71318cedabe3877ec916ce2074b2c3f1df887cc3a3e8019c10d353854b6b65c947359138d5decc62a42d50921dc8f6cf63a16062af47aa8cd50d0b2dcbc3300ba0d7d069a5e4b4fe03bbf7062c6001e276be116fdd00d15a6399d1b0db71c58f396f8bc7e51c2b1f47430d4ebd6c5d05328b29aa79bcb26927ea5a40c82715aa0e36cc83ca6d250812c1305c02ed4291a25762cd709cb3d808031b5f918ce253f622c1afcb83c43707edc493d18ec6f0dba4353a1cde7184db65654088fa13baf45f7643f0dfedf4058e6095156b791ed30827c556a7721658314356e7a3f3c62cd62fe938b008cda56ceca71442fa0ffeb78b13c5847a3ee9668bcd2a01c753bd797c240378505d1e8f2b8905428b23bf589de9af390f94f21630d1826 -TAG = df5a21a399354b2b3346a9eb6820b81f - -KEY = 06a4c6a8aa189134f5784a525d46ff10 -NONCE = 0f765d3893af99f5c3e6d9e1 -IN = 706b754094869313523493089e591d34868b708cbde9bd8b42cba8175d1fdb6a8769bb9ec156d44bcb8f9cbf2685a0dc18b5a802dcf7a12570bb9042a0aa53dfb19af8c0f13763f388d9626a480d6d435dd90fbdbb4292d9015a5633252aa0583498d6f7ec54460d8589c1d6a6d16a349d10ec6070e1cc52e5fb996f810d333675a7130e4f3db9f4db0e3fd3541d32e0b2efbd40ba70cd59295bc8d08481f0f137832b01bac1778ffd7450376e174067b3ec23d0495cbf936bdc176cabc3f42e2991947a4fa87dd8343c32fa3d7ac0e2d22660a0c128a00e1b51a8742fdb2aff44540e39e588c5920ea16293aaa522513c944d3b77f3a0e90bd9105319c170886202e336893d100b0a25aa609a49a8255f78233561f7b88256386d1c3c002c3ee68f2775585c65 -AD = 18e2ed6d500b176e49f7e1b5074c0b7dbfdefdf00a63d9fa2fea8c5e78a1c4ae00f17b23442933543ac864097629e112a099f3dce6d5beb1e3f3c8e19522c6b8f615cbe23444bc91a802edf8a08995a55125da805ebb073fd89863996ef708f7293069a744ad95db8c17cbcfedc331119e85020df8852d74b8092fd38ad424f3da41b4775beac19536ed801ac1069925b12303d8ad2c52c36ca5b4ec95e96f02ebc5725ee6cdc099e666d9055b789e39ded77a8fdca0fe2d94b8039be55b6a75209cbee4fc7864957402b50427db71bc75a0b1e3d2ed6ea20f12a980c5ee916067d0dde7d686570d075da4df7088fe5dccf0d440064a96998da6f318b603d513104c723f27484780bdad586ee358d821b480f9569e4dbdd1a45ab9056f8d8e5a879789a0d65338 -CT = 5f3627bd53f8da0bbe6f3c9246d6f96fe9abb91cdecf66ddd42f833d98f4d4634c2e1e1ad4088c84c22191bdb9d99ef227320e455dd112c4a9e9cca95724fcc9ae024ed12bf60a802d0b87b99d9bf22590786567c2962171d2b05bec9754c627608e9eba7bccc70540aa4da72e1e04b26d8f968b10230f707501c0091a8ac118f86e87aae1ac00257aee29c3345bd3839154977acd378fc1b2197f5c1fd8e12262f9c2974fb92dc481eeb51aadd44a8851f61b93a84ba57f2870df0423d289bfdcfe634f9ecb7d7c6110a95b49418a2dd6663377690275c205b3efa79a0a77c92567fb429d8ee437312a39df7516dc238f7b9414938223d7ec24d256d3fb3a5954a7c75dbd79486d49ba6bb38a7ccce0f58700260b71319adf98ab8684e34913abe2d9d97193e2 -TAG = e690e89af39ff367f5d40a1b7c7ccd4f - -KEY = 31323334353637383930313233343536 -NONCE = 31323334353637383930313233343536 -IN = 48656c6c6f2c20576f726c64 -AD = "" -CT = cec189d0e8419b90fb16d555 -TAG = 32893832a8d609224d77c2e56a922282 -FAILS = WRONG_NONCE_LENGTH - -# AES GCM test vectors from http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-spec.pdf - -KEY = 00000000000000000000000000000000 -NONCE = 000000000000000000000000 -IN = "" -CT = "" -AD = "" -TAG = 58e2fccefa7e3061367f1d57a4e7455a - -KEY = 00000000000000000000000000000000 -NONCE = 000000000000000000000000 -IN = 00000000000000000000000000000000 -CT = 0388dace60b6a392f328c2b971b2fe78 -AD = "" -TAG = ab6e47d42cec13bdf53a67b21257bddf - -KEY = feffe9928665731c6d6a8f9467308308 -NONCE = cafebabefacedbaddecaf888 -IN = d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255 -CT = 42831ec2217774244b7221b784d0d49ce3aa212f2c02a4e035c17e2329aca12e21d514b25466931c7d8f6a5aac84aa051ba30b396a0aac973d58e091473f5985 -AD = "" -TAG = 4d5c2af327cd64a62cf35abd2ba6fab4 - -KEY = feffe9928665731c6d6a8f9467308308 -NONCE = cafebabefacedbaddecaf888 -IN = d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39 -CT = 42831ec2217774244b7221b784d0d49ce3aa212f2c02a4e035c17e2329aca12e21d514b25466931c7d8f6a5aac84aa051ba30b396a0aac973d58e091 -AD = feedfacedeadbeeffeedfacedeadbeefabaddad2 -TAG = 5bc94fbc3221a5db94fae95ae7121a47 - -KEY = feffe9928665731c6d6a8f9467308308 -NONCE = cafebabefacedbad -IN = d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39 -CT = 61353b4c2806934a777ff51fa22a4755699b2a714fcdc6f83766e5f97b6c742373806900e49f24b22b097544d4896b424989b5e1ebac0f07c23f4598 -AD = feedfacedeadbeeffeedfacedeadbeefabaddad2 -TAG = 3612d2e79e3b0785561be14aaca2fccb -FAILS = WRONG_NONCE_LENGTH - -KEY = feffe9928665731c6d6a8f9467308308 -NONCE = 9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b -IN = d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39 -CT = 8ce24998625615b603a033aca13fb894be9112a5c3a211a8ba262a3cca7e2ca701e4a9a4fba43c90ccdcb281d48c7c6fd62875d2aca417034c34aee5 -AD = feedfacedeadbeeffeedfacedeadbeefabaddad2 -TAG = 619cc5aefffe0bfa462af43c1699d050 -FAILS = WRONG_NONCE_LENGTH - -# local add-ons, primarily streaming ghash tests - -# 128 bytes AD -KEY = 00000000000000000000000000000000 -NONCE = 000000000000000000000000 -IN = "" -CT = "" -AD = d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662898015ad -TAG = 5fea793a2d6f974d37e68e0cb8ff9492 - -# 48 bytes plaintext -KEY = 00000000000000000000000000000000 -NONCE = 000000000000000000000000 -IN = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -CT = 0388dace60b6a392f328c2b971b2fe78f795aaab494b5923f7fd89ff948bc1e0200211214e7394da2089b6acd093abe0 -AD = "" -TAG = 9dd0a376b08e40eb00c35f29f9ea61a4 - -# 80 bytes plaintext -KEY = 00000000000000000000000000000000 -NONCE = 000000000000000000000000 -IN = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -CT = 0388dace60b6a392f328c2b971b2fe78f795aaab494b5923f7fd89ff948bc1e0200211214e7394da2089b6acd093abe0c94da219118e297d7b7ebcbcc9c388f28ade7d85a8ee35616f7124a9d5270291 -AD = "" -TAG = 98885a3a22bd4742fe7b72172193b163 - -# 128 bytes plaintext -KEY = 00000000000000000000000000000000 -NONCE = 000000000000000000000000 -IN = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -CT = 0388dace60b6a392f328c2b971b2fe78f795aaab494b5923f7fd89ff948bc1e0200211214e7394da2089b6acd093abe0c94da219118e297d7b7ebcbcc9c388f28ade7d85a8ee35616f7124a9d527029195b84d1b96c690ff2f2de30bf2ec89e00253786e126504f0dab90c48a30321de3345e6b0461e7c9e6c6b7afedde83f40 -AD = "" -TAG = cac45f60e31efd3b5a43b98a22ce1aa1 - -# 192 bytes plaintext, iv is chosen so that initial counter LSB is 0xFF -KEY = 00000000000000000000000000000000 -NONCE = ffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -IN = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -CT = 56b3373ca9ef6e4a2b64fe1e9a17b61425f10d47a75a5fce13efc6bc784af24f4141bdd48cf7c770887afd573cca5418a9aeffcd7c5ceddfc6a78397b9a85b499da558257267caab2ad0b23ca476a53cb17fb41c4b8b475cb4f3f7165094c229c9e8c4dc0a2a5ff1903e501511221376a1cdb8364c5061a20cae74bc4acd76ceb0abc9fd3217ef9f8c90be402ddf6d8697f4f880dff15bfb7a6b28241ec8fe183c2d59e3f9dfff653c7126f0acb9e64211f42bae12af462b1070bef1ab5e3606 -AD = "" -TAG = 566f8ef683078bfdeeffa869d751a017 -FAILS = WRONG_NONCE_LENGTH - -# 288 bytes plaintext, iv is chosen so that initial counter LSB is 0xFF -KEY = 00000000000000000000000000000000 -NONCE = ffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -IN = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -CT = 56b3373ca9ef6e4a2b64fe1e9a17b61425f10d47a75a5fce13efc6bc784af24f4141bdd48cf7c770887afd573cca5418a9aeffcd7c5ceddfc6a78397b9a85b499da558257267caab2ad0b23ca476a53cb17fb41c4b8b475cb4f3f7165094c229c9e8c4dc0a2a5ff1903e501511221376a1cdb8364c5061a20cae74bc4acd76ceb0abc9fd3217ef9f8c90be402ddf6d8697f4f880dff15bfb7a6b28241ec8fe183c2d59e3f9dfff653c7126f0acb9e64211f42bae12af462b1070bef1ab5e3606872ca10dee15b3249b1a1b958f23134c4bccb7d03200bce420a2f8eb66dcf3644d1423c1b5699003c13ecef4bf38a3b60eedc34033bac1902783dc6d89e2e774188a439c7ebcc0672dbda4ddcfb2794613b0be41315ef778708a70ee7d75165c -AD = "" -TAG = 8b307f6b33286d0ab026a9ed3fe1e85f -FAILS = WRONG_NONCE_LENGTH - -# 80 bytes plaintext, submitted by Intel -KEY = 843ffcf5d2b72694d19ed01d01249412 -NONCE = dbcca32ebf9b804617c3aa9e -IN = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f -AD = 00000000000000000000000000000000101112131415161718191a1b1c1d1e1f -CT = 6268c6fa2a80b2d137467f092f657ac04d89be2beaa623d61b5a868c8f03ff95d3dcee23ad2f1ab3a6c80eaf4b140eb05de3457f0fbc111a6b43d0763aa422a3013cf1dc37fe417d1fbfc449b75d4cc5 -TAG = 3b629ccfbc1119b7319e1dce2cd6fd6d - -# Long enough to detect counter misuse issues such as the one in BoringSSL -# commit a3d9528e, when the AVX2 code path is enabled, using its EVP interface. -KEY = 3de7b368783bd7287f2b9b731814c876 -NONCE = 90dedcfff100eb1f1db9d935 -IN = 8d766795cadc0961c0f448c62df3827eef3a8664599b3adbaab0cfd63875bceb8f992b4f7447dca10ddd716aa0bc4fe925e1aa3e3fd1d5c430c650fe3546d6b9a24d576a857c5f04e8c0a3b149df277aa19cfa64ee235891d3b8ec0e840d268b1e70dd8a4bf97628a0c7aea38aa21eeb8fb1a8437f2abfee05e0d2c30659e312ec03d30da51b7c19073a2341c17df806e27e796d581143d39e4de8d3f8d46aa6d6fc1a98d94fa69b92dab751d930cc12de21fb1a7468af09e3c12ff6c3db3967d10cf140bc46f17a16e24b010b6cba5ebf777341c52042596ee53008389c48d9690ab9f5625795c3e588f72f7a1670b2b25a9f4eee1c8845ac90f1bf47ae4ea4b607a50aca88ed304cbb700d02d5486139b0bc81ec042e574abf986972fa008b83ef22dbfe720c2f2f6355c87c975932cec545ebed657e5e7570c503e9aa7f0b87d0b2648e421ed1d34749637c95d1e931af8925236387e50454f0ba2e22ed05f90450fad46f4eb7ddb08656511dd065c0f852a7e42f618a961a6c6bec42226c6b6043580b009ec9837cf99844cb74794a82c269ff648e0bae9ae50256a0ad98ad9f5a35057b3004ac96f469f9ee966dadc16dc47616586cf242706df96bb2f7ee43d3bd1c65d2eac7b82ef242e77ab509afb9639e5f3995380e926305729ca762c487f4411ec2a9c688b8347e5287216dbb38c3fe2281a89fcb47ee2ee7ddf79bfa3ab61cd56a00981019bbcea8aa0444eb75958e5fa56ea0036d2de4950a7db886f4a318b433bd41e00905ab158171e0ef13172293bdf70064b9dc7b243bf9dc927589bf9e99468d1cb330639dbff1850cc51929b8971b0b2ede9d06bc5f6ba39d4551b587f09bf6f8206e8f1524f55714612581d6aa45d8fb83425f84a736576deeecafdcbfbb8670d14cd2ab2a7f8b7f374c07881b7bac2605fd5ff7ff7cf43e30cf49910961a9079c0343b8601be8c3e9fe38f49fdab0b7e1a8c1536cf84e4d80d26ae5ec37570839b5cda02929221898d611525c3a88fc444167ffc532b256cdd0a8f31ff08097d75b629fab99c9e1062d1d9962b211e15ec8709934029c4934e64db8d7a2f32e23dc541be306e9a57a3419115994cbc3a8f8d5ea2a6f45b9ea9ac0e51ed0c6680fa029f4552a6c8665aab00ab77928342e7284c321e9500ad4774ef1fed0f596d5aea371fe1793271aef38cde55547f34701a525526e83a72673385a85f44db511bc87ce1f831fc6ccf8204ca4f4a20eac09897aae93684f14ede21bcaf40a09c08012b92600d6a839ebdf8bdca7b34192c6c50bad8796b3be3c375dbae6217815d2c75cc878d39b4e842d4eaa5f5df2242cf230e44a240e18e47827f089b18bf880fd41a2516eac8e6ba3fc2db64a4bc28789860d7b18d9edeae8b3059f4d945b15d0ee27b1f74842dd1df117fe83a8fdade23a47c93902eedc4d33f2dbfcd1996e6dc1458409fde2302830e8d44c58c5ae67486b9950dd938f14c38bc4c9484fdc4ded93a0f90875773453fc14d428cd6e7beb0c705d61229d2b3df09632ebb30b325fefe2aebbf2a7aa8e4ad46277ca4b8b078818b63d04e7652057f6cbbab7c43ac355537e0d3918b4a73c00dbe6b30a27ee7a6fa213d3347ae478e8edc323404b8322b9c7b0173ed61c38ed25f3576a675d527d22edd51d6dfa5767560d3a50a91226338e8c4e6436eedbcd3d2efe9dc1e686b15d2f57d553abcfda57dc316ca453a690f20148f0dfa20c1c4a58240aaf7195095fedfa56d839d0230d55ce9a8ca1b9d1acd6fe98d583148ba0f4a4e3413c76e6ec57ddb79428d3a90079f64d3321c791f60d501c3fd02c8403f0f5e6c6836bbc96430c1b48e83350c3a3cfd017f15bee3e4bb1295d821dc98b85ab3145555cce2c34a8142fe50f8db19918b514a165d12ff6301fb2296788760ac0b6d9e3a57770ad5111cde5d24b6321918cb0b0887a282b827a8749733171914b000e7d3c0edad1d42ca60da37f0698554bb2a1749f73b3120dbeaa32951f8217a781a200467d5b569d16f56fc9b7dff0ac524f03fee0617f4c692d94613b1e13b18075dc9f0d32811d4a8949a95f6b5fa46aeb83597adb409e68b2a0177c36dcc95dcb2e7dd4fb7337ff97c013364fe139e185014948fa698741d822044fa3f6978b16afd18138c845587c405ebf7a6cd1c28610ce67e992ed49e406658a0a202feed9709500d064b6f53eecfca57dd4b38363ce3aae9d59126d8ae7e140a373851188ae28c909181d0ac64770df70dd2475809350cb367825b59d521d5e457b4e36aea6dedd90a2266898b753b57fa359d43cd388e7d6c7ed90bc4c2af34ceafe88a3af6ac376fec35f1240f08af4f3eb30bc53dd68e5762e6d39e6b16f63003fbe0bee828d0d7adc58c41e857c2c44702215b202701fc696eae021af19c79e59c3e32627cd571f5db99b17f1772b5d746196befabb0b7446687827f3315b391d5dff069b1c39c00bb143218ef458e3b397e1c99640d57fc8db2e0083d3d22ed4111a8fc9e0e6f55fe6a56e946dbee43909bdd7d516fdf756ed8099ba80b1e17a5e279119345104379a36962ca9c8b2a53c414d79eb09fe79862ca749a9eabd9185ad1df57215945882f5894868a134bfc35c835e040e77ecf077d6a98a73ee022963d70b036be3fe5718280ae52c5d751211b22950c0597aaedd35af41f7dd5999e5f7ee34a37edcf97df54a46742b0252b196eaee454ff0c30685b15f8de087de208906be1d971f0fd89f7cdff2af0bdc96759d6889fba9ef092ad1c8deab0404562a7f3977d211c28dfd1573aebd5427a8773f03986101703fa19cd4ab96a381c76a747f63b63f7a9a3a08e251cdc593a024f63b443b76d17dd9e151809da3c582fbd334fa6dd0221b6d410c6a78ba95bb0154bb8999f619f2e084a6b9755ceee4ca3c7e0481a47776c8814f13054e627e37630d593bd09d5f10a049c66c9999f4b0b037e81ef70615d674c7c7975972994a053c069675fad3fae5ae3e779233b70254fb87f25d44c104afc3d5911b8b695173f9337130e39a02cf97356cb817f6cd23f55ef74dd06bd24ce5887a7001ef576262ffaa99f9bb5e3f55bda2aa0f199115909af48bb4d6b1a0a0847774515302cafebe75aad1f63362b1f38141e8721851c3ef1a247931b3b450581eb5d09027b9e3ba60ae9801d629b74991b7fd65520eac561d47115a85141d9a757bc75710bedff1630561ae05254ea541a7ff1846ed5e164834417556dd562c45543c88d8030bb56451fd5b3cbf10fb0164c5288789d2aac7e7a836e79bc3dd401a8e3e05aa6714ffb2dfddb3037c35fa1ebed62a073b2da42133f2620ae88de5e3f46cc69f2b9b3c9b88e39b8b108059ac6bd493be5f7a39f6b53ee825f4593b77ec9238f5ab804d533f48803e7d8187291ee25cfac4da5d8c9279517adfb09c422f6d704711726c73828a5082b4c7b3d85611b8f496d3e0f78c5c4f1dd1c722b1b11d55861f232beee6aaef8a00fd2eeeb45f182af191ca6de8eaa25ceda5451416fbf6d1abc0670b8c10e2815076f271044c690bdcb64856b91265bac202043a28f6bbeb807535aad4bd89e572a9427c826b170d3862f4cca70ddffb4769d6593a1cc6c42fd06cf68642835fe474a23e6f63df316f8361bab959b768d78e20c03c2a99913c162a9662bd9981eee55922f36792de0af68da04ab49dca72e3d9b0de79df828b433bcf6be073f851a36418c03a717d54d48c1014ccb793577c8393b7cb53cad6bc7060a54cc6363734f6ad388763519ca09b533078d3cfa61d7bdd4c4dd0ffe64d68d501b55903d3f4a1f310a3826ac2ca700de01d656188dcf577fd1b63e305614b8d13471f6f84a5d4b12c5e119870a63d1e3dbd39d3b5c26b09f9d80f8a59ce836b20bc933496923d278a022c00f3aac204d07d2e5075bbcef1e4820d633a3a2b35974f72a033484a91a1d6a9913239c93e5783b01833073c98f358e3465efd5087af37ad60b7285550e776d67ea7019e788776c5a456102358c32eb4e7c28096af88b9a20d8ce379ba3928a10ffd539c106f4927e7ac0f382c74017d6e4438fb128c660affd45e9bb68452de72b574eeffe3ce239d0718908c3800bc7e8ecd2fc7d9754171506017fd7868594c9373a96579fed475a28811649ce5dc8a3107bd0d8578748878ce4998684620931dc3981a2499568c2f61174c3b3fc46a7010468e8ff75c08cd43ac764d95e2ad1659f9db62e9554f811e0f43bb74779d923c8c243d12a5314d3c0c6ec84fe60e1d2b2e2b20d3e64054d62049ef9233ff55223a319c285e4e3f4c98dc95b2ca81230d7fed9bb99fd7d97430eb32c9c11647992bd85dcb47cfd58ea3e221d095bcf9374a6baa7c8333581f62b9e489282483023fdd18451f09bec764146b587209160b3d1d7a3d2e145fdb640c4bc382541e0d84255122d51a710887ebe1ccf29d41b4dd7fd7368d68ada250d3968d6f0971f0849c13c09abadb9db8b08960a18f84f0346ea0aa71227afa55b90cabc062d549b616400d36450b19adb67d7358e48c043fa1135abfca89374c906f8d1a6a845debf6b37f055d390b029c7f4524958bdf8d7e2755dde3b957f0926f9d3b8821ba96044d3cad2d637b973bfb657fcc06ff44c17965acf572ab7a0c87604c7dd1cfd136a0ad02b22e8ef320e101ea09772588e8c5b4d88f40fe1be18d27146a2b9559491949671700cebff9a709f297c2621ca9d5d1749623abc20a326ff5be55cb9435c03bf49b147b1e0a4a918bfdc3642df90b396a474f81d75c953d87b3f3b4e31fced630bd7c481c63acbb84dd31249101ac5277a36dcdfc80d8d9a2e928e9b2d65bb257bce97ccda83b187da8a7886dc96eab93d0864d88c358105f9cfe1ad0f0a8508b5b3985ff95de652e684da970b57669aa3fdfbe590a631522abe8246393639709a9a6cd549e78e3c2d1acf84643e9f554c5e076f75a5c1dce1be20a66722d0b896837b7036509ab8d473d5d2b7a8374d6a575f69d54afe3e7e18f4faf4e917be8a74e55c271b96d966e0c0b883f84b3ef2e4f278daeda2efd3ce770801d2c4bda5eb9b646deeab9fa55324e917e63e4eb6aeb4176cb4e43af3db61aea1546fbf16e76a12fcdbe726b565710e3f9866551023e5fbac0038678717e6ab4d3e92dcc53049e8cb65c00216d31a8869ff4d3539313fe2fd7ce0f53b255e3659e7dfc5f92b7627dd9ba42972f0ba72b888932d870ab97226040c4c0f4826be131fe1d2cdc21005ec2addd7796f0927501251ab26b0e5f3f9d2a1cb346a774e18bc233cc89aa69f5f70e3d5c17098eed350ec419c82837153b5c7f5813bf5918defc8df143063f3fe45125deded2b15892d5cebce589b60f2ada0f9d608983e8d107d8e6482b5f542c6650b014445e8c055aac142f16cfc59229fc9626f7aaa40cefacef777e494e13dfa93d27c201788ca9f60e572af8d65ffb513473dade5fe494cbf7377bd1ed03db2571d65af3be4b0bf27c1f069797bfb67ef0bd8a88c6286af6712c106df9c418d88054e3b46c88296a2e63894d6bee0dda8833c373d6a1b27637e1510fea3eb2fb34ae27354571369653a282a8d19f2c34f9e5ec34555b4ed24327dc5d246df13736bd41021697104f80c85bd0ae920e9aeb4e628fb8aec269d55858df149af298b06d61250b043c8a14a15f0646d0aaa18109d031c449e66dd7336044dbdec912b1bb615fae2a3df480bd64cbed74be65c8f1acac247e80bbaeb6f9dab38c6addf4f3b094d5934ef5c9749053b9159e280034e601731a12d6688ff27ee3581ae289de424d16676fb750d2ccd5b3f964dd77bdefc15bb204e2350632822384cc194cf9130f1ee81bfc3887d3366ec0b48cbbe0fe674281ae7445f03791887873659825680448f162452cef57d783821a73047078a8cf94c416850092ac772ef0b2e48517ef101ee0681b5259aa27fd56edf3c01e6dba6298ccc91b09bb304b637eccf8c673b816e74bd7f8ceffa6b17ab03df7ee9ca4098d24d044015a07df782a309cb6761528272632a6e1323c4e18284b463dfcabed708e4fc95cef133865cdbec8bfdde100621c65a92762cc3141ff37b66dea8fa6e3aad61dcbf3b512467c4773d36e58989e12a636389c1678c191137a5f7f59668c8a527dddcdd0c3fbb14cf48b8f3ea306850a5eda76c57aad06312d7bbfc18969d7b611f512358a7bdf959cc2f41de1c408133ef02b1fb2cdf8efe9973c27536434e56fc1bb4880db7fe901087b53ef3c0de18aafa47c25f1cd62c362f2e5da41c2dbff0e13adaba26c1e0829f027dc0320442e851eaed9507b70ac17180725349f6ea7b59bf39c095a9d10790e87221c7c2d24b8bca184ee95a3ef7449aad6c1d905f688498ae7a0cd1b01f76dabc342fb2be0295ca1484bece3c9b8a1b91e53de2d2587f3607a7f348f5cbefaa7a6dcf61bbbcae9444e2d25a77b016cbd1508c8cd319e9812b43b0bbca52df155d418dacb6ab1360a9e605fb53c6e20588a10bef42d884989e836b2ff16fbcdd2c1704f75dc8c1ac2cc6aeb92726f5d46e4784c70e1e249c102be6da506e5e3c2cef6a8bc4a60dac7adf3cacca8679f8f792ddc27613e44a70fd849b7617e042da46d65a3e6cf425f59b83cbae5b6e911142abd13a0a8cdf06d041435ee20e2ca417e905d2dc49c15b863ae5920ff7f9380a86bb0c86b69a000c157cd35245bf71f9dfdefbd1760af90ec3e554ebc511aebf650633221ca9157226f613f41406872765f8d7b916ff3877266f017b8d840dca0697ec3dffce7912ea9eafb62cc2f2d0a112c9bc0727444b47b62766bddf5b5f26d391f653b6894b069069979d0cf8cc7fc4143626a8420bc0a3866db3860096cc128d620ceff059d1614487004adbdf6b0c4428ac8897dcf16e6b11a692a6b465a92b40010f3480b444d4d2e24b0af8467666905c2a6233bdd6502521b621d3cdd4a5e1f268d65bf6a1879608ffd3abf635c5f0948f3cec7e087485c72b00258ba69783cfe7d611bc41c27814ef5674185791dbe626e1f276cf2c399a4eb264f19c77ee95d94252f546528f629188318e9ede65a927aafd2f2af56ff32c0ef39862d2f92268bc9400afa8ddeff591f3ef99681263a33b873bd9e01a59c8b281da30875245cbffee5268563c7f6f20b9e22d998934131dd219624d3cef6df2f3d2d6401833f72c619d6f763837141dbf93179d0f01375581ebe227185166aa7988eb9fd453d510ca6616cc013d551d23a33a4241e85aac3201284344977d496d768f5d920c5670b1d8bb608efc1b99abd261afb0a4ebe191605cc5c2e20523a13b3b94dd1fb24a27009d9a5b6329336f3516a327642386ba64c8769da1324a8a3d1f304cf0700df2b3e38215a954523e1d40ae96d0046e2929a815bf70785e94bc9b89246ab6aded60d65170eeb49b0ee0a57ee2e57db92409105c25f2d0c1a17b5556d06511bd0991a426258372c7f2b402dd533a75aa175524eb5d6b9575300b81fdb2258bd74429add8aa477bd1182db57107d411d16147defc3582861c68f5ce82e0a0316edd5d0f3cf36825a2c79a33e376cce2e63274b3b41bcbdd755845ad9ed2a3bdacb6fa3fa9484b7b60edeb1d9ef84772e78e39adca14c9fa0bb3ad1f1c17fb9449270e9b4c97b5b320839947fc73853fc58304ee9c9e86f3775f5469554d5006eb7ce9d02d5f900c771806c275ee7022e2b55d111338dd93ad51d14008df4c13d8c03fd9bb3689607e5cbdd499c3a372b487af74cb140f6300cd2dc2acda07277ea3dab57ecf09f1a8f2d6abf7c44fcdaa6dcb1f6e791164004b20b3b4c860f409c1483c7044b6fa445f7224606894e386ba08057a387b48920d4de203b1acc4dbe2b0b4cbdc3f7d7bbb097abbf81e01db09e120eab83def925a059cdb513efe6bc93f0579ebf75638df3c3d7f9eba3c36a169e9d88495c452888853640d93ee70f254f86e2d2d3fbb5e8883b36fbd2da105cf3a75cfe998068203186bb37f1d1ebead8ce1f9383b816f1da2fd0a9e01377b6ebfed4f05bec08b4ff9b90e385736fd13a3af7980c21b0dab58decea8e9545af5d0fb11bb51aeda2c8616960e8f6f84e6c2fc4f50d7e413afe030f75475509fbcf49cbe14445d267994fd3f38f41a1339f2895c0b2969a9bf9c59b85e629486c7bb5107c7a6b069793be7690f7a7c96c93b09a9d610594a156ab27a32d5557a5b1ec8920761cd2f559ad808dff3da64717ea5f10fba87b8ff2712ce322eb3c288939e0007f779a3920f45fdd533369f6f85a8cce21f91552fe03702ef81a926af0e402b418fbb25a6a3dad0ec18ec663126b3f48c341e2725abfeae865352d5ad275a9e3ca20393c64d118968023daac84bdc724a3c522d97a5878ed788cf8e44f80f8803d57584d8c8688cff24dd8c0e881b62d16ea30104d62007a4bec051da7fdc95d1df8556ebdf607383a0825ae503e24661ceb8ba773b793360c3f4ed3b761bd372570cb17e7c2030f07b0b45a7974e45ee6fcf5bd7ae9e9abde5421b42cff6af0c6eb7fc73f4deb67bb4e0b3dc9b4008da30c67071243cda649091a14b89bdacf2ae98dd230e932d9b277d6968c65e0006a8ff63f283f2cd9c21615dfd82e0b24af6ff559c97922a3d112ff0ef4af9d6583bec1f84d1aa8bbae705b9bcf458f5d93059b90fc2217ab27d0072a38aec3229d13266beb3015ac2389a06dec3120c6c04e540886091597919da293a4a8c0812d6cd336d5c5faeb64162ec0459e252d219bed78c4b6bb61c1213939bb3cca12a625ce5a45001d7408f6d40fa9466377caa43afe961b5c1602679220258fae72a8de2ac69c0dc97c90c270e306dbd8eb681ba9c092896b19a8d42665b94ff4d5b8b188f19f7c44abc8f88d4ad7b5df1cce3465de377072c70dd20dbd6779336f05ce328ad741d1e4606dce7065347df111c7d3282c8a3fa4a9458561c04d1056cd53ec5a8ddd6bd4434ac910c69cea0443fd09ee32d1256da44ab7896867a0c97fe4faa4a53b6db5cbfe3812a6667f04cd318f3da127a0dd46170cfbaadfcca863e0d4240ebec1cb2a5952881fe89804892d36dc5bd6484cc78db41bed868ed1b321a680a293bc29c420cffb5305d15fba05c76c2138b986f799b6a3d061658e498204c2b641f2f2ba73d633538eef6b5a01117951eedb7611742c120ff24261bea605e94d21e452ddb9ad27af08ed972b7d5e1eae010ec5d83e4505f6a2b7d9a0bb32a1fbba32a2a8c7823e736a69f516b781fb5354be4b0a67343c009a09b8f656c34ab895f9213531fdeee911d677d1cbc5e72c0fd1ad1f3b4b8bc735e14c3f75f1828ea28c90cda40e0cbdc40dec37031ff3d50305d5a8bba1d53d2f176895e53faa3067129a5c97505799967e55e4e9d87faf5920d71055009fd060ad06691b78583f63881b566d4a06b639c55796b23531ea79c6de24092c0e6fb4d3dc739f6d82ee3ee39f229de4c844aba36432d6119be0d2f02e5f72ef1d95fb2494522a7221e18e92cf22e00010ffd93b89fe60b6895a37fca91aa2fefa8debdae3147fe4f01a6adbfa0a59a5203516b2cc7de5faf821a2e72d43beafa30ac379791ad1e5da3286abecfc7a546b80191b7b892cdd01c25e95506471f5eb74568257439aea03300e80699909cc06db2fd607f3279651f7392f80bf4fc61d66f0dfed7b7db09744139d7374d3cdd18d153dede2a65f26130506acc51d5c721a7989485a145dac9565ef6d3cc938c5a51f31ccc88bb0739920ef8f0a01145f4ddccc74790a22a3099a4b57e31b3a01b4118c9e6c393c1304cc51ca1784db5633eb96ccdc88f8b732815b92c9072dbeb61a2cc1e6b2e7098d883e6174f5af7bd4f129389250926e041ba94d1ac543aab6525f151294060791fd26b668d09302c3482c78e5f3271c0150c437b4e78b1cff6f2b8660dc310965f2df14a1f2ad45cd2759433c4f3952402fefd79fff00dd309c3f09a58600223441c11693cdeeaf0a6100d38d612a759a8e01f753982803af30c7470f7bfd1ccf2c08aa0b187382d25868a9fdf729da10bb0aa0e1cd9c6e695eb2c80c6b6ce62737c3e655246edbce5b8f7ae21c473762db0969dc216a93d4db239f67dea74a1de21d50336793d1ae45e931d975bc706ea718a2ab10d66a59d9d23f76969d870ac279611246ed3aab0f79e11611b312624d78b88a9d1a49dc68d6968f7428c33f0a7a65675826422f7ac058101d2f85663de331345b3a25cf76b7c8fe0988a13278be9599b8e4708526b44a70bc31ac5c278ab739e3e6f0927b72507f34b0034e7fdf43364c466bb75b559e03d4d18c864714eb6061f83a6331b3f59dd62f39bfc2529d5cc68bb6ce63db1075105cbd7d7c4d4ab68c9e65a32092e34e76c3178382a965f49386bd4aae307128242a2ffe3022fd7dc1a824b330b9f032d55573c2f004a6905178a2479ba8a2d5b3140ed5f3e10d986265d8b4cf262295658f301b4d36281611d9c61624928da9abc51ff9a6eb481310511772fcb1c1786203d25295e4a319b9c6d65ccc966b4c5795e6e30b2b3ae8246c38b4a911d1904145de63dbd4470fac47f8ee3eeb3f58b5e665c26a316362382ccc6bf8db7699fa3334cb2ce61c746a7d3af24d8030df6759835f5890b7dd1de538cac1dfe843ad06eba2e887f08d9a49b39246fb26eff5cacc937d63c8d0136f7a8ed2af4cf473f3f0d9064f97fb4fe9938d631f7cea3c617c38771553eddd606ab80bf792f34b44111933796fe1fb8bb104223a4de9e16e17321ea7f8de3306e75a2bc79aa5e9c0ec8dde9b3dd1f2ae42a6a278410afa8fb62c16282f1e3dc1e2f8c28d4538a75b5da7645101253dd43aaa150b273f73e505d490490314606264c737bb344b616a80a4931825043a740ea4f75847e98cc99c6880d3085787903e54c63e90b60f03192234ab20cb41c70c6e82b00e0575a1bb0b0f435831c9ceb9dacd1fab8a7328eb3e28533d5bfbeace430e21758cac204631bf033752f947f78ac2bbd9423c2baf4dea22fcc65c96c332ece9abb20fed504643e82f3ba0fff213635910789a2fe1f2cedef68799fcf4a86d63ab0ccd395d6d4f393f7ee8905eb77df32d97592fb34ac86dcf20cbe5afbf9e9cff37bc34d75af046a09a1781cbf51ee2e0b0f40096d85413a30de974c4d1d16ec06c0fad00716c4e10f8dae46ef3cf27ccde74502b657d3dd26b5481d9787f5c6034083ff88807896da55fd2c951a28f15c8c9e6c86ab50c369e5ba4f6311de505c07c7b85573b5a539785820c672557cee4b58dcda948fb51c95674c23f1275b423ee5bf3a646df19bb5dfa22747857fb5c605669f334d116710bd9f1495e242bf47d6b607c1c9d9c706ee770808484ba552c978ef64daabb642a7caddf5a55facba474b8a63577ac817dc57e48ab072bc6a2cc5f5ae96edc45af41c896cecd8acfc36604db3b7fed9d2d17d429f94bd2542b194a3d3405f46c1021ecf6bb907fdfb4b53fe445d5adb18501aa772c9ba75619214384260306ab68a5ab59161b -AD = 85ddde4720659e80e25168585a354eb1e021c0b5d2ee289f2314dd5aae52bdf1fd44755bb56a6e659111a1d4b4da73315bde01c7d2c15a4f7114aefd68c141049fac27acfdca24e65c51fb1c27d307cd948e13af2963166bbc9411401d124f1ddf20f890db5611385257f52aa05c09b467e3ae886decf5744ec3749e5879f2a60017f601bbee11a66604d5f3d521d2c48cea1794f77366f29c7bd12a8aa51d34a4f3fb52809561b527016bc6badf9d136156c330e1d69d1aab98c7caa9cb46e782a898b4c66e4ee3e2445fbfacaadf9a8f73c4cbcb2a1ceb604ba5637b51337fcbe0fc366da98e805ceeb29feaf05420113b16e1005079c0e88af33f5970b3d7a8b51d0d9f5120a0795063db508171b75ed07705ac6d6bfe4ecc59243091d48865536515e036860affa880bfc91aae2fd1700de15994792aefc4a176e5d49d0f9135c7d670f3cb8798bfbe83fe73de7427e0f3e6a2df561cfa15ffe6ae80d5016096c8875b0beac8cee8fb530fb421b9a8ada4d551a528d0a0b521086f5a2db371a3bf12a2ef861f831fcb44cb2baede907a9306d3e5a3af796e0a50ba2c8dd61fb03727df5f0654d837dabee2fd90eecb7b2e8f303b0d57f97dc6a52d8281574d8457c89c6a9f5d80e0bd86c90ed39b1db4253affee614e8cf1ff05166c66e7d2a2aa2fe8a81c4741339683debe189c126e7f553a5f2dc16fc16672f74aebf94c7e3041c758fbc6d0c7f71c192cfd0fb2ec52d0a0705b05815d567f3d19f9b5d553a2adce9a79159b0e38980851bf64e97f896c028a6df8363cf1f13f4654265a7b0c0b24198efcf4418c32772bafd3980dbc689fab12e85b3ef4a491e2e5ffaa2fadaaf3deb392105a42380797d3b41ef61303a6016b269ec9a9f6e3f26070ff33cb467435ecb325dc7e18728a5c2e882e720c8f876fef10f5bffd5a925cdc9689d934272019e90e3a3bbf63a295f207faa5c014e1517c7d5c18c3ed70e92304d51944dcd3604c999d4aa8d8dbf2a4c69cbbc08635c968a20dcb80f438d43c57851c4cafec0b9568dd6c19932fd3f1294afd16f019f20e40ec87f6f5dffc7717470614b2de6e9000969e6b7e561cf91c06dd379a09c6c25c7841330dc78fc5be1d9b86581a81f55c0289531128638441fc98a1ad9472d74e2be2f874aff2fcf9c941502f59f716185a4c39289ca368c6dbf5257b5dc5e57a420792c26e602e4ecbc4f17c8787004eb88ea091d6b6ddc3c85dc110b5d1f46f6e1d872723176f4c73664ecb4219258fedce19ae22360354fa4894fe51d69434c2e58e1ec665b5cc33bb295053c591b474b6ae178c8834667bef971604279440170ebf3e739a4ff19704e5886767f81edce95a3dd93d1147995e7eb6c794b7be136658ed23cec7c374705ec0d8479dfb44cc7213076668e5fbe6a508537a9157815c6e5187b89f -CT = 66c03198b3422cf3fd8291080f6fb3ebd9ad863e41cdff169becde726946a342ffa0ee547a27bae28cc782d95a90b0a618f717e3beb577354bd91e00a7a57485588265ad2dd0ab946926fea7c754c42751ec7247ee84c17262c0ed092186ec57d6044f0ac9deb21da6714ec7452e441e687e138ff144ea95636286263685419afd35f002830765d810b6f60e8dee0e6879995e9272c798b067d5f99f49e460b86d67c641f48240b61a16dc7cc27b048e8b8e8e80016470ecd2fc4225e29bb127ab48dfe7e7d5a65542176dd7ad40c07ac8b92891d595bbd7afb63fb6f9e1c2aa2fc659aa101f9b6a5c346625acec86fccf17f0d45809f3b9ee81572e5627f1afeed4ba96c6d3ed7e9232358dec01a1231ae7b94ad4675239f3b456adccec439b3cdd45504c5475bbc77dfd242e5e9671d103ba71a4601a7322e0e295357f335fa8d5651d528dda66575d106308338993e615b1c5bd7e95bf3f755ff726b4ac6dd5a43ef061ac9783f8f2804c68f66486f5844969103a36278ee0d10798bf8a802d3fee3a31294bf00ee74f087749ab3325c027d42b55b197469a5312bdc5c9b316b20093154e66605941d58f4db8d46a815c06f209c1dce2363771b5a794dd8d17e93a2fa7b194c6a0b79793c06f002638e5e3052365221232cc4b30adf161cc6e7865cf02911e2ac9b0a75f000e7ef3aa4f3c7438433513da7246d421f208b179763651f18e22a793961e5976a74744696912f22915244fcfbefdc472baee0be1e591d6503f2d9511ee1eededd9f5547c95eb94de134d0c2186109935207a23b2b8420a5858d831ed78202be855cc6b98d6663c1c52e1a0022ed7ebe0eea6b107da4cf50c1c7fced9744a914a66d4604a081587ce4b7e0f96ed408b8a9a2964314b1334a123d5184889958e6467a6d16e7615e5364e09aab75994e2758345511113321a3436db79351c63a282095ec6b99b6d775a5c09ea3f3225716e39e14df260bdefb2ecfe9a65c73ab4b3712ec842e43ccdfb535e3685fa39b4912719e67bbe195e5f0fe6c3aaada2d81b669c4565921f6c183d708b50c3f7172ba841815e9351fe5fbfe2fb1fabeb7cec9bd1dcf2d6332372f1b972b5144aa7ed6c5a985132f9a54469097e2e981b9e75a7df48fa79d0736c6f8a201c7c7d0ac8ac6512a7089514bf58442dbae0529135a7f2455e0ee5716c6610bd7600b3159197bcb20ca055695a36597bf7d3b18ecd08031b4ce3a643951e231c7ad15481e32ed7a3edd2b379c8e96d3288d5b93b562972a04f1b7e0abcc5090cb8655422cf5e9dac0b49678138faec81c78f113255eaa6110e95406a7e7417a6e221a8ec7fb9d55643bd589ace2da70fcb41722e66e0efce932cd7a34218375b6dfa3df1747953b24a41f94e50b84bad4d130d5dab4194665338e06f102f46badc5dad7aa06edb01f8a31244dceebe5e2006d6ab4a31582ff46731b19071c08ad1db79ba018687f3e6afbe703b1de26c11bc8b62fd6b2fa3219fa7190379504820abc97ff6c034f7850e2c7fd335462725db6748fe45920c213c539356b691f22eb490faca24e99f0a044a9f727d0786566ad00635983692ef324bbf1f80c42b269e9d5a8df3249873c51521c81400c729ed7a5e73995928abe94d189cddf2774f1735bc2060bb2240e558699c365dee45fa68801e6a1745e03736ced1b89fc2755565e3b36c2102594d43c451122d94f4a263664bd26b2fb5bc7700319f6b08796864f92d0fdb41710910bbc13aa9cc7baac3b48a24e4f3573f315448c317c149ddb433d9ddd2a2f0cfc81c22d3dab31f184975355b41e4b36fd8f22e8efa01d61a5cbb0e4fcdd273cdf68ac73fee745faff44d44d93c5a111aefe4a5ca8e8e7c075ffdb738cc5b6466dff78ddd837c72c54941707b04d60bc126a3a2fae9540ec2e4672ae13de0d927a7bd363f8abb5a56364d6d564df90a46df9fd59e2c54d5bcb8280415257a6976d8fb24c33330af32600cd1559e0eb05d55b34be456d434bca98252fa531486ce2a24c8bdea1d57d93a550ec586920903a39ca61cbfbce79b8f3a5b1653794872b2c614458177e748f8dfd43840e5bb0d608c26389347673fd0b005f60f52c56731ee5faec6c8d0617fb53d5f2415c2e7906ea0e6d0066354b213b3e94f4dfc311e4ec6afa7e8d1c69a63cccf8326741456a5e0bd0a359b7a37c117f7892969ad7b70cba9bea0a975ada7cf67e0d7255be8d2c6e7b8788b9ff14c5d1449d6173e07b5f9d94560d46f474ab2a67056fe9f4a9fd617a617d23143adb4e7ea35f2d5cc1398fb9ed43ddcd10f28debb27eb13533110005e6c78ca4a874db68c65081ecb8bff1b64eb1e2d7b76a1da3b375dce8a92d32a6277ed847879345717b9649f27e846a701549311c7e69a96d61df616157a114bdf1663ad93a26c28e1a62ee4a7c72bccb9785639eaf1e569decf777bb0548ad9ee36788cfa1150eee3ca3c96f09052ba2300cfb7526b9424b6f7418c27a1e9bc13e4d9868e5c330c051c3885e44714bddf7cb090fbd0f36b826aacbe191dc8c35c219e19fe736198c29dc4fa1a98b5fb1805dc29ecd02f74d4510a3928448b5ee61b5991e46644850a4885bb1ee272883faf27962430de1922d0883e7e80215cf5fe7e8f3fd0e2a49bd50727af793cb7e5b40860e80a1fbb9d5b5696bdf2f741909ab5a713de47716332df6c4f78288edcd6ea130d895fdb2f29f94635bbf2061de55f1801bd6a24294aa199d78021a1ba771c651de4bc08f032fe6ad7a5caf6a6afc6de649b901f783a0ee0fea9b803beeb0f431400d0707f159d7dc29c0c334a918fa08a653137a4a8bc86066c8800e1d171f1dbddf1fab8a3eff6b5023da96f002e7e217e826fa378b15dc8a376db30228f5d6b629f331a162d63e53e5b5bd7ff9ec098b4314285908281930ff0a8aa86a6d89411e6b5bc6b9c9e931623ccca6741fd6d36311e6a8e323a37ad40b7a2797b84694e736d9c135e52d149c760e727598726378cd674b0f4df1c361de0a12a2b8232e611d789bfbea699e8e77b99f3449609caff3d6ef7233df8cfc624376c905eea46c6f77c0b01d288868a19db77e227dbb5bfea5cc3f49d219c7477f7f2b3447b0b8efe08eab8f69579d727555e547c13ec7ae13b83386f2adf634140c311b6e2759cfb9c8aca1c32bb7c002d0f46ecc526916589a29e328ded9679c2163838f071b5b85b35e5e7d99c3c45d25bb9d37d7bafb8350ad4695a6e0cb7ea7d93868c30bb54e301e21147696b7dda156226a5ef8c62121e6b2cad0c4e192116192012468eaad46bea69a140aa3cb9056dec87c911636a1e55695b9e5a27c63cd8c03f31570d4b7507d13731ea31f082b33c6db8dd6e22282f9790be41350a96abfc4dc3de78e0a698930f540dbda3fee923a463a4c4a66bf00bb2cdd6d22b62a47af96b78b1f0f0a174e4ec5b785b3820f47d3c8cc1691d4751ce4e4ab78a4551956158a36717dc35488e890d0631241906db565603205e054815aaaaf17945c3372dfc7193369871e2e88fb84c15a2b9071101e1208177fc18397e6af17b5843e1fa75392d8d3ed214975d50f2b19c24e83f010f8c394ec1edbb1cb912e61627d2760b0e630b986bba2ae113b8f3b51ba00ddc495520274a85e6f6fa7573ac4ec6e2a86a1da9199ceb007aa6f132e5ab8ab8fdca7c829f452ff17524fec475b8f485b29fc6f0d972eea4ce98e242b5d58f6ddc1b3a71256de1c584c9914a3cf1e469f0033165d934fae68a7559011dac7a4e0c72e3b398fab8f8cc2fb67963b0f9220f410e5ba13026a27288a1d49edfaa51e8f220503fb5ec476147cbea975994fffde3ddc51bb189c470078978d238f5287fb2629d23989875d74b006a4122f6a342c996d4a244e8c5e4b804a44c301ac4d6054181a07964b279e0a44c158364395a2ead40053d2f3350ea0529a57552ed835513f533ee0c4b94ef674f31851616a4fa2d0302d13cd4aabf5f96ce28219c0b5bc0e5410fe0fa387ba1009a6f2280f9e7bbe20c33be5eb411a5f6327714b3443b4152cbc54c4012473237dd98b0490fc4228ded74afc81be2a58a22e03ca987faef5310e474f4f5a183f6b7ebede5a8df8a0f94a87a41852826b29466fd761f40b416ad0f263dd34e5497867766a361af1654c3fcd6ee7e6bb3f72d64cc980f04305b63bd574f116d1aa35b4bd642cab0cde6a29139aaa163805c6c40384313d4ec6027c891023083988c1b0d2edbdd9b1afe102fbda285a6f897efff72a0d7fc19a3cb6756cfaa2371e13be3cd167cddb90d525cba7da69608b9995cef92a6424a14df6b860ef0f09830fd7189497a432347680de0f463c0aff82df8098cc4f7753f7680c8c7374d01046b05c63be73f3a1623be778fdb0bdb90d4fb4b458af2890d15f108b0927304c91c8d62cb148c35cc93797db3ef9bba1014d89859a91da0c0a971f330600d71565d30e9c9ea8c07e7f629e1a6d578da04d37e597261cae8ab7d9a952bbf71573f1bf70e064f36c032cc624e3c980e5ea46d36232d61a57fa598347b7fb6b28401e34628b051d6ca3dea190d1d3c343fcc83175f70f77a8fc5e8791b9788989df1e37cc4881648f4fc673772003079adae55c83cf02a894b98561e4a6e4416bea3df18d6f702ad5c4f40faedec6b53cfdb5b3a52d7d43b97ee23ccfa2d30c7264ec555b15f1d9e7e19cd9890a7e8e01ff21d3b8b451e50932f189a420d18e7c7e2f103332c78c84600e5e8fdedd84f055a8b39be9a52782d47c6205c0de41644b09c0931f2da269a7e58e669f3b61ebda28ab8e3f9b83ff3d2bce37864af494860b2f01b000abeb737fbeaf8f9fa6378366606dcd0fc33031b94f9a7a0e562c08ea720a671ff92520047f69b138b4e032c3828874ec4c29e49aab302089956566372b20c0216b601c3958ed9691bbd89f1df45c6613d469e3b9758a70c860fddf768b10a6bf70237a454a2c0b70dd5d02da612a91fc5731513012a4a6fbc16d01550bdfdccaeca22bba104ccf6aeb19f21d4cdd3da231af8ec5bf2a726ee9cc7c85b8ed46d2f6fa4f1b010b2561fb69690d5a9df76d729450a6e139962bdaa2bec0254c5a252b97e7ce7eab1817f454c6121130952b8c40628065dc9b77b0f953552f5aa3ff983b6a51a51dd87c2b51a18e14adb8c80e002d0b47c61cb357babbbe3ed51d371941a8f111837ecf0e45020cb941de170c4a1b5e61bb928b1b11a8d902febd2ba016771f171b8a7ae825fcc4642d95649d53675d0027822e4ff79ffd302bfab1a0ff26f3648c7ab00c10f8d95f21e40ca2b40691bd4be79bb9ccc0bf760a05be4728bbc0a64e585207d1d09393a80d5f574442d6a933966777ab05f699c4e84aabbf753059287e7261d972745906a4fd8967bfc80ae9b6ec2ee1b22a81775f4f24999987365ae2dfb6739902ed51b9a4394fdf29f216c34567102d9db301661b09b728a79e377cf4bdfcf5c83b110a2e267abf6d40947e643ae2ff0c244af168c9f33e7685474ac30611ef95f218e0dd280899a92a41e7a759d03ce3709c2a140ebd35e199f1dbb96f7351cbe1f3de8da8c49758a49b9e724ebd3220ed6f51112944f70c0d1e9178f68a2c9476a913de00abbd1f5bcffa646f926da77a9e9fbdf81cdeaf7f9b13e843afefbca81c93614f8f1675325965b5836b8a77620a5ff162e25366718d8da7781e1a7e01fe2e9e56cf958c6273473abf5c2c8c7fb209307544e1c0726d5571e521621b18b6da3064b473423536b1b76ed75b21b4ee205d7ab5f081bada63062706bd155672dccf84614210d72660095437c6bc2213d9c904a4ba1bfda14d350fa3dce7141e817a50859b1a74aa64560b2ebc67add9f945b6e85577589817078c8ae54a9fc311593d2cbdb6692b089ee6264cebcc7719753f80e30dbe48b64fcfd1037fb9ddab69a5ff9e5898bd8aa947d9ad827c26df67c6786edcacb3478a20bded1ad8c48018ae0d439bb5afad5d39bb8fbaf22d72ffd759c4fa2e94a5a89f41358ebdc4c3aea5110f1965a049fdadff9cf703eabe9628e2680fa4e70320d304ecaed13f513f27220db1916ca1500f1c2e091671fb71329dec0bd6e310c83e67af61b8ab60ee1a8d559a508d174648b1bca451ef0ab0ee2ef74f4fcfaad1cc5ea6cadb8f1bffcb1f2c05122011ebbf6abc16838e452fc47653821589da4cb5bbac10deeea3ba0e0a6241338e64cc78d7a923d018e8b5b51c4442070e5b0e6f1e8c2b83791e930899c5897a602c401c1b85827962ff56d19c06f5af033059bc7fb1bd29b65f66aa5b4397834e846935e523b16438a42c1f990ebe4f83182163ca5fc60a4c6d77fc182e81fcda943a962e9e7f00f6399728b48bbe38d8178fae3582c8d9998e49df5f28e32d541636df3cdc8ac00df45db12da2e5e76f366c1ea8667ba5f3542d21f58ead7c55d06a4b35251b8f77dd34d3de262947379107a06d2f4891ffa0ad3a3e5bb2bbbb978af4953310d4cbe5525ab344ebb98ed24d003600de8f3af36ff3d0a7efeada963845d573685bec2221403b994f97b1e714fd7dccc300b62c2a516e9c6780983062eddde0178e93fcbb2ed4f06f60767356a11d22ca37078fda1ddb3cb907d1020f62ba85d09044574ba28aa3df36988eb8a41e4305e5b0687abe43a90e4f68f0374b6b05049aff5b065d7688cbbfb0e96ab03df38903bfa1c269f43a114085eb4596aec87ced88701b42f0b7426389727308bf10aee9d8f15ebdc411ce1e764a290a12faa2d7c1126dc7b5076f219b826ac8d380b69af7f95d69fc3929a97f5c7da1db6270e9ee1f2a5f7fa3a1b6bfcca00463655121f681d3a627d03efdf0b5fd045fb153bc4488a9a8b7264373c710ebfdb1c267fdca37723b21d5c3eaef48e784bd76e27c133cbc24d114f610c79f2a1f2c30d87ddba395887030b65097ca5566eb0361e70615b46d4b86c2759f1cc2efa3915b4cebdf51a745fb3c6cec69a1fda2ec5e884dce228e30af362815d2d8b59a14f89606bc77439042109369a9648db7d71024ed6df06c8ebd22e8623f48feea77f48b5e88827fafa84b0564151a5997b7f29c4d3d18068e34f2690a293d54003d0ea8f3bab9387ca72212cedb5f4602ad047dbffae2ab3a4cd2865bf896cd96f78b90e4017eb7e3c7092320c0a37f81dd65a5c4817a4e7053e6d2bcb23b11e09f681587f3a9361e974ad54b88c72c296629b1ab754d25be15e87c414cff975fafb3d7cb68167b21f1889685a48966705222b525fa47143b00041df94817c275d93c2550fdd82471cb3cc1b5644338060b767e807bca902c180b3e535c77be2651b3962287b6d1f6403033de4e0aa3a20615ab59d290f4b167325959c1524ef216dda2ffce86b50cb6b56b62a20a043d9d78c704479c22340151df5a1907670f8d4f8c90d93f7b5d94d04a4d383914867aa3c0e5ac85fc299a4d2801a3f80f4b0f046fb62c1c8c539a83b21c7549df0afe200537b52c80ebdbad8a438e430cf876cbbfee9ceb1bc5270577c27d53b40ac153cab377a565b1a9fbdee8bf8e94839c0fc04f7f664383bc90d56ccd1cc01b465c250b158b5e6f321c20db245602d10aab80c553d52f17282b095b5e2234c6c689a84b096112100359816cef7e92029fdfc048058f847cd2f2369ceec9fd171a0487bd7acfed6b0319832df6d59affbfd460ce8d12e4171da0f094e872a2888fe74925c5ef0621c4edad337f7006086748913b24d4d48ce36e662fefbe672b6d476456b1fbac6d80030ab93da93acb4a7e10f955547e7e20a0abcdbf909f05a2ee2e0b7485fa16be652b9d9fbfbf01f082488a81022bdb69af9e6fbe753e9eb92a1762afbb4df49f83ffc0cf03db563aa96fc5ba1af6d4d7eede6067749e8ecec79b63e09742e29e99e1c960dfb0688b0222c49ed919379ac66e3fa1c72645122d1664721e78fefdd1224c0b886f6e214e37d268ca9acab76ab3adc9f5549e5dcdbb3d31ac34ac472894d004eed71f88ca2377fcfa48d3ae43805dc612891dadd06c263ed8617194f890bcbb964f010d277ddce1f6682e661577ecd51a4d5421f00935a5b24fef0ea1809fa5c4fe9cf8c453046f61136ec8872915d2462157d73a205d56d77bb83cf16b88cadf6430c0e5397fae1f91a6a11b177bf04b065a2e55df81d5c086ec8dc8a0a660eed37d41fe4d8b3e3f22238e2a63b6e4feee1fe9a140ed37b2be4193f75c2d038aac7f6b7dad2a3b37e5b9b660615ec1db77a9b7ab416f43e66c872b71cb67c9245c757dc87723ab3b9544fdd8a16c9486e8ec3c4a44cefd98535d6e5683426c1cc8c888b8e0c2e7528bd7eb89b80d9e00969efd2f0a0fb09845426edf0d1d9a0809648e7e46ea0a8c9988bf9df475be12a72c7326c1f2bf01afafb190cf6f649133c7dc14ecf9b8c971135bd303c8894bac637e08257d45e1b68edf550d896c41682c002396e8f1eb7c1e2f4e0ed9b8b7010fc7847e6fb1c5907c17b2d2b7cd24c96f47406bd04cfcb2099d82dc2902d6f91e2f8f3a05bc62019af536309e7847fc06c10dbf7272a1509079fd16bb16a85ae2e078f97f9ce66bba66d6329c7ee70f9688f6d91aa38b25c7f4884658a72ad8cbf96d7d7a9652673273ee1b3d4d17780dfe9ca865416e318bdcbe9efd8e071fcb15ceb0743df5af4f7d598b31e38677e65af61c1109fdbb11fb11e3952e6c3ae8abc3f894ccdf205ae55dafce1dd05dca6b899877f57d712223dde4e7fdec7e0ed4f0a29ad359e318eb36ddb42fb205adca400f5b2615947c4f0ede95788093a1152d88acbbbb272750823151e245354e658452a95f21fef05bbfd98a10c1c975ad1a08c59fa3efa9fc73588407a83d0b26a53f1b4115f83780bc70ee2619d7374ca45b9e200055df1b93977e17aca89a009110a6e74caec7f86114f91975bc6e8bcdc7267ed2920cf12cd7137840628e1b8a0ea181dfef18dc5f74e752f842ea91bdce4b420ee709bca72c4514e92bcff55902e5529d77fd95f5837c8f4fffce80c813630550a0dde24092a25f65eba90790a06f4d4c3e739aaa8194a147fb32e81c71d3e8def79251c33637661b0a621a2a6b302dea00d34a9dbe9b621c1dabd0464e85241aa6712d90b4287cb23c17bf1e4d0e6dbed372e6b49c4a843305b3b0e5cab0b0964a93ad0bbc99ee711afa7f2d0a296a375fdb3176c65a957ddd9b88e9d57df736acdeb02a71b924cc2e972f51ba68a597215678573bede9ca5b3a0a2461b2d3b9ea57a5af8c91d40779bf917ded32f14a66d96e28e1415fea1e9306654c6b84d8a64243a5271c1f11590423c718961aecf5f659b49f67efa78e02ef2524d0966ebcc446d73d49ab7ec31f0c009069d14ccd63f926169291b83a3e37610054b0b964741e2ed8771d20bfa225eac0280b4d5af0c09d3218bd497a035536f5af0816884d606f1a872b8161a266466b56e0be8b80a7bde65ac706eea8cacf1749e5e71ff9fa3e69ce878427a0728d44e666eff977026abfe18cf3ad156a943b917e72ad65725a9a8d60b7b5740494fa63143a7f2a94fe6d8b319be55d6fe1a988244deb798f345f30dcafdb6af9e9cee9e35733274bdf3896750897371563ed2516c4ca6c3c3c994b48cc94b67e8129d234a0e19dabe39e500214c0ed5f0e5d61b2f58d7355d147102d93b2689bc5185dd4c0a18efd11a307b887d4d0fa84fd992731b3a80dbd027dd36cd6933766c537e8e9e27d35d5187e8276b0f59fbe7b6d629d3416b782e7981d85e1e890853c3aa94a93c1667a55044ae42badefab979fe7d525c6a180307c5ee3a9c3933038028c3e1d15d1e78fbf53b6ea61ac5e02db0161719398a31570c55f73cb47ddec8f99e3e14af5adb8d5cd179f4204d080331e75bd391b19d38eb81f148c36af3e8a3ebe76209bb75c9741a89b5d0708bb0fbb0945fc6fcd6ce142d19faf0947c338dbc8d976963281866b5216421c00cbd77c0907d1e16f5e925319cf6c62f8c6e8eff0c2f831c504e7a1c0df09a54e2af708ceef39ed7d0f63d83429e9b0920c03cf85c2244f2fbac3958847113bed577dbde8992cd91be5833c75faedd5e2005d4f7b66fab8fa9305927406f863d1795dfe04028940b765bd79de6972dc7094fe1c2503a73d7b50208835216c23aab3e47094587549fdd74bb50ae21cd1354daab632fd0907e63f4c2b2d39d7fdc4fc216bfa742b4608238623cb7fa01bd851c1e7ad5ef5215173a71f363fbb7dae8092486f4a1549e32ae53b14c1343ff7fb5e2b1487d9c594a1b56e22625d275e41535534d225b7b2c9deeb0d30dba7188cf75d680d4545ed05044a0661c690a37fa14a73ba8c68357e2c948e290b5d9a4b51822824614ef2938d19ea4b650041f59f3b548f0a305b86f55e69760f37f09dfdad62651aa5fd84eef28a4431136b34a49c9bf1f2891364f86b0aae70b0414e821e3db1533b0f1db5fd232308bf118f858aab5ae974c10583f61b283a3870eb82aaa8ea3c4e2ee3c3a3d7169aa8e975ddee7f620f6c5bcf3eaaef0101b62cd54495cb8809052c9e3151690cff7c1efcc4f63b22472111a7c5d9d7d2a2be951510f60dec8c426f14700c8630f8a14dfd359addf5d9b7ae031a745ecb4e17321b385799c90f924c4780287ac187530a40b064064b9036cc46e3f87c4d23aeeed1bc22a5411c7c503594d5d1261eb9fc4da242493beee9f671485a978a32e965faf9b0e2c13f78e31e1630b72d35b4be691e90b3798e18223c1b514b39a8e1eeb7897c22fdee1e33fc76e2b2f9298ad4fd89f44163aaab23d754d98c7890e58708b81b3832aee31aeca85e76416133710aeba0e5d9f17695e607d09ae3f94be191553bc39c6df03cefb4ee05516fc02d66c9866e4eb0d89a662e309379a347159db2e070abceee226f2b8b62847ef7c51d69c5f12eb567fa13af4b4f90b3f3d9d4b6a3f68bc4dd77075081e2e99833c18b154d0d6ac360141de2a25af61d551f10a34e03e1419a37409b4c177c51a8d248157b411868eb607c34d2daaa453a0954fade5eac45d5f21f50efba8bbc9c87ff0435c70f064b42cb2d158384fe0a4d9c90030ace7723af0a6c8faecd8f97f9850e2a489a94ebcc655301e2e14711de9eb08726638a9ddb57160c5545c152a26860a17dd18172bfac138a300f60431fc49eff18c93f71400e887f878f4dd637cf5df8c1e2b12c0f87e31ba2754ac1748479eda0c4184b528554106128320dcce349939e5e6cd3434f86dc7adfee28c008a21ddf9d0dbc87ceb14cc3afbef1e06fb3f9908a4b14f5e6c43b23ba783b75a6cbfa2ebac6533661b8c1143a34e8e2a9723389c4b7087dc07701c53b169894551084aedbb423bcce2f470881fdc7240c26b3b76fd6cfeebf8eb2828b4741e5e8698b19fa0a44703cb4e4c8ed6a7e4d6063f5fab724e08a159f4f04a2f351dcfb6335ae6697dbeca25c76b55e6ec9045eaaa8706902df492b8c8cfbf68c4cc1be5d1e5a173262e38bde051656ea85ffe35d97f1b25f6a47381bc327a946f7cbf6210adfd957b2921 -TAG = 469e3ef168a64945f76d7a2013f27b68 diff -Nru temporalio-1.3.0/vendor/ring/tests/aead_aes_256_gcm_tests.txt temporalio-1.3.0/vendor/ring/tests/aead_aes_256_gcm_tests.txt --- temporalio-1.3.0/vendor/ring/tests/aead_aes_256_gcm_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/aead_aes_256_gcm_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,484 +0,0 @@ -# The AES-256-GCM test cases from cipher_test.txt have been merged into this -# file. - -# The test cases marked "FAILS = WRONG_NONCE_LENGTH" would succeed if nonces -# with lengths other than 96 bits were supported; i.e. those test cases -# describe valid outputs for the given inputs, and they are only rejected -# because nonces that aren't exactly 96 bits are rejected as a matter of -# policy. - - -KEY = e5ac4a32c67e425ac4b143c83c6f161312a97d88d634afdf9f4da5bd35223f01 -NONCE = 5bf11a0951f0bfc7ea5c9e58 -IN = "" -AD = "" -CT = "" -TAG = d7cba289d6d19a5af45dc13857016bac - -KEY = 73ad7bbbbc640c845a150f67d058b279849370cd2c1f3c67c4dd6c869213e13a -NONCE = a330a184fc245812f4820caa -IN = f0535fe211 -AD = e91428be04 -CT = e9b8a896da -TAG = 9115ed79f26a030c14947b3e454db9e7 - -KEY = 80e2e561886eb2a953cf923aaac1653ed2db0111ee62e09cb20d9e2652bd3476 -NONCE = 5daf201589654da8884c3c68 -IN = 96669d2d3542a4d49c7c -AD = e51e5bce7cbceb660399 -CT = 4521953e7d39497e4563 -TAG = 2083e3c0d84d663066bbe2961b08dcf7 - -KEY = 881cca012ef9d6f1241b88e4364084d8c95470c6022e59b62732a1afcc02e657 -NONCE = 172ec639be736062bba5c32f -IN = 8ed8ef4c09360ef70bb22c716554ef -AD = 98c115f2c3bbe22e3a0c562e8e67ff -CT = 06a761987a7eb0e57a31979043747d -TAG = cf07239b9d40a759e0f4f8ef088f016a - -KEY = a6efd2e2b0056d0f955e008ca88ca59fb21a8f5fc0e9aa6d730fbfc5a28b5f90 -NONCE = f6775dca7cd8674c16fdb4ee -IN = 5dc495d949f4b2c8a709092b120ac8078cdfd104 -AD = 86a597f5e2c398fff963fcfe126eae1bc13f097f -CT = 04416e23586ee364b1cf3fb75405f8ef28fddbde -TAG = e7b9d5ecb2cf30162a28c8f645f62f87 - -KEY = 8d6ed9a6d410989e3bd37874edb5a89f9ab355fa395967dcbbfa216ec9ce3f45 -NONCE = 55debbb289b9439eb47834ab -IN = 52939c7416220822a77435a46687f134cebc70a2f1a4c33d37 -AD = 7790af913d84a04c1b72d4484ea2e09fdaa802d8b1733b8470 -CT = d7bddae8929ed6bbc9ac077e2415d9fbafae4a0432f8f7eb6b -TAG = e6383b16ed9c32521dcaeef3a7b9b67f - -KEY = 525429d45a66b9d860c83860111cc65324ab91ff77938bbc30a654220bb3e526 -NONCE = 31535d82b9b46f5ad75a1629 -IN = 677eca74660499acf2e2fd6c7800fd6da2d0273a31906a691205b5765b85 -AD = 513bc218acee89848e73ab108401bfc4f9c2aa70310a4e543644c37dd2f3 -CT = f1e6032ee3ce224b2e8f17f91055c81a480398e07fd9366ad69d84dca712 -TAG = e39da5658f1d2994a529646d692c55d8 - -KEY = 630b506aa4b15c555cf279dc4a7ee9add213219d2c68163ceaeda903fb892c30 -NONCE = 79eca200a5cdf92b28be5a7a -IN = b12e6f1f8160cd65278c48f68ad53c8c82fd17c2c39bbb109f077c17fdcb8a0b3a5dbf -AD = 46cb18593b3b26ba75e4cb20a252caef31d00be31093d2369e93572a393d650c68313f -CT = 9a9ad1f78b4d411afe450d2e46347a7df98f39daa4fd478b9ab6e6b417878bcd52743a -TAG = 55453a003b021c8a247379cdc4fa6da6 - -KEY = d10bb6641e9ba0a3f1b016317831ad4232f81c2137adac0940ecd7fa36de0563 -NONCE = 99c922d37c95ebeda8e81ae8 -IN = 8b9089df5bb048cebbe709cb61e178ec768515a0031288d95b7cc4dfffeb51b836e126a237ec50cc -AD = f1cbf6c83493b2087d9f88e02121a114f45ed51817e46ffc0b66a783350eae89c6700db3f3be5f4a -CT = 8a838c51a8ef8134481e9951033295ae686624aa4df72f869d140980347a5e69a6d7cb3d7119b303 -TAG = 9152bef766579a3e9a1e36abd7ebb64c - -KEY = ca665229adcc7554f1b1c8f50e7444c6d4059c525f9c0da1406ffb35d50cae97 -NONCE = 8e2df19123ce0ad41df416d4 -IN = 12365eaac86b270e9c61b3ae7702a6f3583ef4accb80a98454c56e34e2ab97d8afa23ddee34e7e3a522497f985 -AD = bf539d8e9e3a02f3e5834970e7efd40cc7cb340a075041428d6a69ed9fa5105e4bc63720be9a7040ce5b4af6e1 -CT = 96027efdcd4433df8e7f6181c05be365cdce550b09d45cfc96fe258eab6d55976a9306a0070c9589ef08cf7a42 -TAG = ec9fb5e79cdf8ad4c8a79c900975159d - -KEY = 5033338bf7526cca0425f4a620424662ebc58364c8d985d130e525fd1f598f3f -NONCE = b40842b30758aa3eef7cda62 -IN = 69a62b8c5f9b81cebee3a9345f4e49ea089b0d9c1cc57b4ef707956d0287de83fcca6d8f5270a9393e00693075028189bda7 -AD = 3efe0ed6fbafa61070388abc59c0d06589309736b02418df5534c8c594d61a2afefbee17af8283d01634b6ca3e8e2aeadff8 -CT = d6184677a21978b6443d99d7de1fd01c6b6334cf01b7e7d58456267453f4de96708b62301172c8c87e970f91c5301e0ff61e -TAG = f8ac7aef208712845d137b8b176c89f1 - -KEY = f33c39140999a2cb69e43129cb5df18fffeb3513ec3560792e9909784daee43b -NONCE = 70608463f1dfabb1fc4451e9 -IN = e2802c4d290468177fdb031a717345753cd7c3028ed07dea428db84e7c50c3eb7b24f7381a167b4ee31bf88dcaf5251fdb90ecbb74ac2f -AD = 10a6f463dc59d4791b3c2b4c93cbe2dec579a154962cb2c4cc77664e8c2b106c574fe115fd43dad94b8b1bf2f74820e28435b4444b2b82 -CT = a27419a46037323c033d7cf2a716777fedc02a5ddd8bfbdbca82ffbdea3037bc1cc80df7c5e502b32276ae88ad6fd0f0cfe72604648812 -TAG = b1ae330d47fd399aaaa687e141e23fc7 - -KEY = 2121056225a7b2316a93c4bfeb970486fa9c586c14ba8b40be5844a31e9449c0 -NONCE = b4b7d1e8fa7d0e2334c92315 -IN = 2038e2c6cdf5282f081292448f8febbb60a1520fa3771cbfef387f48c5915a1438ab709628e8d4c81623ddbc2f6f159c3c9a8922905c4994269898b8 -AD = b07f66508a39c4932b04c16172d6462d78273cd9463e52284bb73e3b8b8e7047bdf10c5ace1f903e5a5eacbf67c9351f82c74bda140df2fe0480c80a -CT = 7b54618ae09b37ee72e51873c82cdd20b6dca37c334af89548f52f34df3a757e632cc0d453fc97270898eb50ce2f2a98c4cbd4cbb22a5b7c7564406b -TAG = de3a9e2aab2439675c4f7f0b61216d5a - -KEY = efb15235bc91771aa32d51472877b0eb364de2f88766908eebc6e6b57a702099 -NONCE = 1a510b42dc20d1d0fb34fb52 -IN = 4eff604dd4bba67f143dab0728b8597e269d4e0ecb4ce80c9850afc645d96da239d9db360605bb4268d74e1fe3431a44242ae862fa2340c076db13315f615b85f0 -AD = e8dad34f727e77444a96cf06425640f1fc80fe3b01dafd1d91476140afe8204286d01b0ebdadc0270a3d218516ff5f08a69a7ba251ac325983caccbe0d9e1de359 -CT = 989fef0145e2fe93b9f99fd90123632d83d9df8f37d8e1f80dac329dbe0c214c2191009e31232538fec63a29665f0fc1c77dc86b2f5f2050b86b3ae48e85d63116 -TAG = 6816304faeb45da4e4772f5c35730f8a - -KEY = 998c22912d5687fc3faac262a902783fcb0c738520b5c4135a8dd2cdbd7b0dfb -NONCE = eeb535c5bd6edfd696655b60 -IN = 1f6ae10d425923c882b7d2f556571acfc10333ec665b07bfad9f8948a3b8c5e5f163a4e99d4726da1a35359c657c848f327b7fd9b5f61987440ab12b9399db24715715a2d1c8 -AD = 9a3c76dbaeb69a6481a89318caeb6358267ef51a1a364a48387bf77526837c9c70afb6f105cd47d2b976dbda7d2b6bfea7b76b135810c53437472f7b80ffc8ce4dc95c7e5045 -CT = 87f4e2c80a4f15f92a8e94f468e70fe7f0e0f83c0a7799a1d465043d25210ac6f0f39a5e9765b4daca637864d1bcc090d2ef33ddfccded2d2dad61dab443b3cfcc683147c490 -TAG = 0744d928a5b5ec95f3087cc2623f0031 - -KEY = e12effa8da2c90a5d35d257c07d1b467991bd5f75fecd7129aea4e26b9e27ff1 -NONCE = 4edd0b4cc349d37eb77f5576 -IN = 21dc87984edca46a629ed95ffb04471397da8806c525a781d9a71818422e344e4af577f38e7cdbc556d4766770a9a3c95bea59ad497fe0127816ec4dcecb6b999486719b0b86cdb2c9d09e -AD = bc158e6570fb0a08d73367dba65b80a8c8e57ba6c7b99493ebdaef0424e18d8ab1f7c88670cf51c4d91b77eb9ce0f89a46ed1316141e4299ec6c3d6e712ec9e92d3db44640402aa4ac00ba -CT = 07ab8c623d683ff83030392e2864edd4b8e3d296d60579a226a8d2aff6bc5af3c4598a18cc1e8d7db4ac8eb56a082af864ac52a324851dd29af51a0945cee4bf303ea111b9b627aabf5ff8 -TAG = 53e69b7be969c39560c016c6bc1aa4e1 - -KEY = 3d9723c9235939df8647529b7e4a57b8536476d5b71b424e2c27ba4d0b82b0e8 -NONCE = 60163d2eb7822af7fad64c04 -IN = b44face0f45e4a8da19aa0c5cbe3aa960ed6b74fe3d3d9201f52523dfe7651756b2ce482e759c87bde4ec670a0e808fb4883e437c7cbcf2f6470352174327824200cb0897edc4def1736f51e229addaa -AD = a4b2b7bf36a70a5246feee52c474058100bc618fb0e3d32e8c1f76153edec47fab3045dcc7eed9ca1886bb2593703c9ffb8883c45386d2f4e3fbb0b7c722d19f2eca94767174d9127450549e8993ae33 -CT = 66fa63ded066ac67bf218af7bc21169a875f4bd695f44fbdff906f0a9b8a067be721fd260571c53a8b51661c8d49fe178dcb28c31deb3fa71b096b387f9fc8f3657d280404c05d2b6443eba7e60b562e -TAG = 59d5450872510c4bfb590d9497524331 - -KEY = 75b0a20935c4a5e2126ac7420d632bfda8d41bc947c2402bed4759b6e617ff92 -NONCE = 0c3edf0dcd1125d7e263b897 -IN = 8edc98e70030e40bea1548f6f56b4561272be0c333f3b7ae53ff3e27c35a91b1aa42d39e6305ec4811e75931e5cae2261d88a6f7d6c5b05bfb48802264e9cac782411f1de579e29d464ba56840b126a3fad07f01c4 -AD = 7e35081ef652424da6304852243ce43ff711da17f7881d5e0433b1ad7535e755a8531b93d67ce99ffe66e59fbb24f6b42655524b39f2c84daa5cdacb5e7916266c05711a118b2128930b95de83ff1a67e53337474a -CT = 858dc74dbec6fdbe4ef15a3596ff7201c8f4fcca765bf5452f678b1493a66ed9852a6fa174a73099acf951a35699f33289ec50625538c01eaa456dc658013a29e4d133b856eb969c1f221f99e11fadc98b0ee08243 -TAG = 3d8f17838c4fc69f04d7e2b76eebbc0b - -KEY = 7a3823191abcebadb7970d1b65c2a8dab8a908151737bd5400b3b6c0d59e3b08 -NONCE = e32eb00e5106097e2ef0e8ba -IN = 220db5400dce604adee4cb698cdc02d2ca61622bbdeebe347b0bfef55cc45319b940f93773a9878725c5f55485d7a26363251b9ce0d3da1f8f6e34ad5329dc9f752ec7dc12b2d259ac89a8059085996a431a56cc2dc2400a26b4 -AD = a83b6dc78931cb7500eddcf77792e810c1edbd5f4e33f85018807a8539a3cace094fb794fa9ea058e82c830d42d5a6b3e22b7785698774aec5c73edd92731c51106a23c569c0c0fef18d13da1562a9a42aa435b243c4fbc9fe42 -CT = 5ce6ec0e1d67ced5a6aa46c909b9b8907b372be03331dd0940ceb6d87e928c14a1a1e8ef9096c9b63ab4cd93242ec7be7e38b80643f9c52e7e90ffa06b8f2d238fa63dcd97af74ae37802d124623b8a272e68ca18b3432b7c017 -TAG = e21c61d604253bc5b5d58283756b9eb3 - -KEY = 53ff6dc0af3e89fc2de7370caa433f539d068609fcfed6400a5b9fda4c83e3aa -NONCE = 91a824c5e023283959858062 -IN = fc23e07b4018460279f8392e86423ecfe465b25b60382f58995ef5fa1f9ca235e4bf87112554aa0e72836831d7b5f39125df11518b8aeb1809d804419beb05ae013482213012e4ce980ddd1c58e11608b775d12b450ecace83e678c69d2c5d -AD = b3a1db2d467780480f166859e0e7aab212738b85e88237c2782496c9c503347de02f3dad6bfc671fda71a04ff1e4661767c11303daa0c36d944346d39e3e29ec63d695cdcd83b2b57181582c5ac692b13e4299ab5e86c59d09c2dc6194ebe9 -CT = 88af588ec33bdac2cc748a01ee3eec97e5bbfdf69de1d66176f42b66383bbffa8b185cdedc25b11a62237d334d68120fccfd68c2f9447b3b8e1f623f33f7f97ad8815d29bf11bc0c65641ba8fca4a087783f4694fb1d574450191825f84402 -TAG = 2c4973323e635a885f78ee106eddf19e - -KEY = ca2b4d335598f26d3d3607e62b9ef853d3543e741350f92f3050894721d3d450 -NONCE = 2431b5cee8c3ecec4caad278 -IN = 75e29e46350d1fa99403b1e5baa414e41a8e714910f313f8e850cf3076508ff650011af766b51283fbd5626166d775fd4b4cb7124d26d77b41eb17bf642bf67a34c1caf0fa9b43eec12103f864e56c5ccdc81b89c1a35e394362688d05dd94eda3d05dd2 -AD = 31c3ce532bc1bae65b5ced69449129b112019cc6078268b853dd17c41832ecae07f9c6b068ef6cba2b55f352904afd6096ff8432081aed408d9340c319fd8e2029c389b6e3a4bdc38853444c3f7be9385ff1ca27e59c43b542e99799bb4ce56b8e26d6c1 -CT = 90c13ec26d01b7b96bdd6816d3ee57df57efeabdb15ba602229ff71d71793fe8081eb1b462e8b2967bc4af96fd6dc72cee3d2b6495c7f04c9068b2ad0b073e11cd5999df541ad705c6315eefa8da49c5dbc258f7ba922908489c1ce672971c3bfb6e8482 -TAG = 3a7741a094be92b838850c32e4b06c6d - -KEY = 49fbbdb5ae21cd955be7f7603cb8563ea0b02b77a9ea14016baa5cffc55d20c9 -NONCE = c0a4463350506d2af9e35d8f -IN = f31003aaf5d8fd6261c01c5bb1e7bf6af248e0be3cf8aac67ccaeb0b7468a40d98be526a8e4f692dd23763563e601915ebcb59ecbf03bf9c665c4c5313c318939a911888fd427d5297b9b2fd91dd33eb7ed38e2f0f6ab74ec263989cdd9915811a022d4a46ed35eef0 -AD = 17e01af2386531ce67d5bc3325d8f83b53a87b38f1c305f99c0798380a7e59d3ecddf33a5ad23a82e33f0fa34eb2438b17e958451439774ab642fafd3794f80a0ee1b9bc165f32df705a6175310670ba54af3a204e446db35170ab02670086c47a475c22d1f14cbe44 -CT = bd661836d1b74244baca62d7d1cb6717e17e2fb0bcbc8d36b3265a983d557c562b0be60708499d0e7e9626825bc049db79a0ef4d2393fef6024d849089455e55693fd4da3d910eac11496492a645e4376855732765e1b3580461a2a2533cebb482736ac928cba175bb -TAG = 4596e3802109c899f27f6cfcbdceac5d - -KEY = 30d0e4f6425e38c92ac34dcaa06a815166f301289ca9cb0ed08156617d87bdf4 -NONCE = 525618ac9e317405c7d44367 -IN = 06f2204ca864dd3f7c9d0290f6fe3d0337eb9442cd5d2b586d1d5c30e58951fc2f4e99831ac7bca4356db4609a0428c482f2580b9e8cf5fd00d86d474fd88ac3b2413f44c1ff66e59e7538c090b2444396f02004ff636aca05ec40439f4e3f470a24916fa4033cb60127223addc1 -AD = 23c1a3e1083904f7226be7242027abb7af9d62f1115340cd4a57611be88303955cbcbeba44eab5488c80aed3e063c70cb7bbdd9ac289c8c8977868c3702be63d0358836838a97b31f6aee148f2b8615ad7c5dc0de7c48db7752e5f1ae8637f8c70335bbecf1313ae1b972ffb9442 -CT = afe3e71953bad46ad28113b7c8f2092fdebaeb81626bf94bd7e9dd59e000e8ba31c1ce7f728fe19dbbb42322e54aab278e3c29beb59b2d085e65cb8e54ea45d6a9fb1f561bac0bb74afe18cc8de51abf962c2fbc974c7ed54ccf2c063ff148b3e6cccdaa65cc89ab19fcd9cd0436 -TAG = e9f5edea1fdfc31cd5da693b50b72094 - -KEY = 661309741227606892db13ab553070b456c5e421cca59087144873ae6d59e590 -NONCE = 9f07692c017e1391a981e70e -IN = 40b5f8081b5dd173203e02e90a6c171fc41f804b2903ea18109edcf77c03dba687b47ca389c55389bd7b0ac59bfaefaf43b5f97065df6a5375c1fbb95d95cad589c2a45cd9e1e7960b1d13622440f7180aa565863b4f9dfe26ed336ff4318653e1a520bdb830e01db78a7e598f251834d0c9bb -AD = e8540d084f24b80414af554f470048b29a5af8adb2f9d55c9759e5ff1595ca74884af67027324587131d90c77ca72b2d15b66564549ce93df7f667d0218a6e874848563a33886c6a0c5a9d00fa435dfabaa9053243b4c8c25779a4dbf79eb4b8530a7c7bf4263ea824713a90cee92dec78c449 -CT = d543f49e6cbe26f1d8a6e058769d5b16e6f8255a28b4d73ba2cbdf664bbc5ded73f9dea12a11b86b6a6acd578f685afabc232dbe9ff8431a5318ec7f0202959a310595b147353a7ca89c9d1fc2d2b92ea610cf6d9ad2716df2dfed70f5b74d498edab114058c22c96873a2a64abc254c82af46 -TAG = 31a8441886d0e4c6bfcd6d74f6a5ee5e - -KEY = a248b0d683973d205ef2d3f86468cf5a343d6ad7c5aaac0b9b6b2a412eed3552 -NONCE = 8f62ffac4027f4dfeacf3df2 -IN = c2d7d29256832def577392acb9fe4f249eb4859025ea55cc0c4a67806caba3e1cb81bc7f5717d94e1c91ff06607b23c238daafcb0fa96905616f02205b702508970fe3bfca87270ed1102a9ab96df57ebdcfd86ef6e9c4c4242b4febd82b0220b0d6f76d8c2d0fba33ca49279907f6bcf7e8401d1419ed58 -AD = c738cdbde6dc277ab81dae20fbbb4a50d71bcf0ac1ee0ec6a39747ccd87be40b1f0f2c37f2c6b32ea99722979fcfddd0ddc2e4ff34a2e6113b591cbfda317c6f4b021ad30325276f8d8dd78f757618b53297fec091f029f9b00850b35f3863a3801c882422b318b4a1bdd89002f928371ea05c6fabcb1792 -CT = 7a837df292ad2e58f21b89da43a74de411e1746556fe47db55a136757513bd249384bf67887a5c1f605e7f7e3057596e17039701ea351e5ccaf0fd4882559e87197144632977cf07cf9e86784a959fa7399476a4fd196d7c507fe3876d759e2b37bd37edb3c12b89716f29ddc8b64974263a1ec1b6364b0e -TAG = 291098a2376a0faa5da6fb2606b4f2a4 - -KEY = 80634a8baea1c4fe5dedb664c9b5d714422dd1726d642e60d15e02364195206e -NONCE = 725ee5023ae08fece15d621a -IN = 4d1d8855b4d155e77bd1bf34b3d049ef09b2b94f4e604306406b015a2d520e8772b084ed668b868e32c7563085f2a82e7d99219da549e507aff9515e45a045c7cd5292c0e09a3a38c769acfd0a11826b27d8bf05184971670200e79c49754debbfc57d9ebc661b25f22f241c4d143bd922f7b0981a48c6a63462cb5cfd -AD = 12b3fa94a64454dc5b47433df1ce0a7dd5e8066d05b2433c6cbcb83087bb7d22d153a19c05aeb76141431c5f9801cb13531691655939c0c812611c6a30083ed3ec27e63e6868f186be559c48367a00b18085ffb8c7727638e833a7b907ff8465e3a01d654b52432767b18b855c05a9cfb5d4aabae19164f0dc2ca6346c -CT = 6b01e934916823f391cd0d2829c224a12eeddc79f18351d2484ef6cb5d492ec9ec4d8c4bd3354f01d538bbd81327f6360a7d157feee64b539489bfdd1be4d7f724d2a6dfa1af91e4108dbfffd529afa71388b07e5079236644da289ae236100b2fbeda0c17bf2a01e76cd1f88081682c2d074223fb8a41d59e70a37870 -TAG = 55762e95d897a33c4c75106449112986 - -KEY = 4f2edc967b11983f05ef5ee2a4364039ac02dbcccef3f3719913ae2719c8217c -NONCE = 255f8209b0c67a6277bdb42e -IN = f8217163bcaf77c1383089e396b271e22c517e8ccda244256cc39315fab7d0c291078d90e9b6e336992f015282caa1ec0ea858a179c9735b7a2f0d50f6f1eecaf3b9308772279ebb95f8aa53826e9dd60fb354de0c50c10001c98812b59d7c0f36daa1aecda6782ca36130fbb559363fe07704b0b91ea85be319ada027e47840c764 -AD = 1dc7065f1585384b88be47598ca484782716c78f49b3b6bf5d24a5b0d24fbd7831f18d77d80951d2c4fafb6f939d46362a69b558afadb3bb4d8aa27f7fcf3dd9624e1e075fce9bb239926d51ea9dff03619d64d5828103a414e360adcda8fd864fca55c21df86c76972c3765ab1d68ce89f708e7e5a3e06cd4de08573cf750c6f5f9 -CT = 6719849b7cea3f7f2a8e4de13d7a864d581b7c638f49fb06378a768d2034548179963c33f0ad099254c2edda9ef771daf5d299f58850033e2e449d7bc21ca3f7d3b7408429b596da615c8582886a6d8c1a9ba81fec4a41a38b7cbf1a80ee0ec8bd71451e727051fbf2a1d1e3c6ca98ee113e47650ba4fe80451e79b04abc8bb99a2a -TAG = 2ac7f962553a8007de3369c7795bc876 - -KEY = 51c5cf1f0c76ec96f4a5f9aa50a36185521f3ba259145ac6cb4da3cd12467696 -NONCE = c751e5e7e3d75874acfd2bfa -IN = fcda42cd098b7936f4bebaa37d5850cb0fdd6526966b1b5734f23d5050ee44466627576e1144957929123198e40b64eaef74476870afecd7b70f7583208603a1b5247074c6c77e10b9bbd41a3d468ff41db89895b0e9ca95be77526ddb30d4c5eb0796ba97d7d5c56d0eece344dde3ebd7de586226c00da224b04e74d9abe832686797df067c52 -AD = 343ae5e73fd1da48dce92ba7b86d21de0a203ba8587536fbaf4646bc45051a7feb343e38916f6c4c75b65f940045e830857c7b62b34a44622a36b34268b8a397892ed3e4de5df3fa7384d4ca50202b5b0833f921349c877931f4b735cec45db6b95410c8042ba49c1a39870276e0165f09c73b14bdf7f36d19084f958695c7ad2cc56f0487eae9 -CT = 04192659d6a2f1b7be472372c8f969a7de388c97d37b4a89653593e48b630947d2160b569379698e94de49b21572ef0b4dd330487a8be814a84e959a1a8e3cf33dcc9f7464fd44814d0cd7ab85e4c01c9d015f42ce3723c8ef8c311222b0c78eb83d81696c217992be725faf27701b4922c6e6099442787ddde2b7572500a5320a4d0c787b786e -TAG = 23c7a866574976dca8f401c4b5b58292 - -KEY = 1cec3efc0311d623f34b6853b3dc97e470fa728cdfd65993d9d48fdc192b28e9 -NONCE = 320fe742ef171b7b8cb615cc -IN = 722e503a97166a07974dcbf136fbaec6c03668fa52495b040383433ca59f6311103f2fc6a95ba4c925f8637167537321eff6949aa3051269fc094393a7b17d1ac8d29af052760835665b0ee89adda5dae7738656af9e8513c96e8a532a46ef34cd7430832d2be51c586a14e9aaec2458c1911bbc0f90b496737e838a12ff37d3db058bda9360d7d33e11629a -AD = fd5ccf6b6948c3eb96543aa40f107fafe94e5206c326dd8900ea510c6b61d1bcf746151a75404e31406c8e991fbf6e660db7c18e243fd2608aa22dd7ca9de88f277037661ce6dea4ff0a86809dbfe1708cd47d3061a34657cad143e6577549c9944e081f79c276300bb406378b26f349a91fa87de02a1405d712c516ae11b4bcf30ac9d56e677d03eb33e3be -CT = 363c1d6b806a6d97e2fddf53b242378e1d2b818828863fbb3f856f7737d63998a84e02d6c91e1df5f5eb6cf89f7ef53e16d10ad52f82362292d3acafaa02c23be7da7616a8b8daf8ee3ae74ee1078742c4ddc3e5a110e510417b9f43fbcbb00e17af3301b2fbcb784fb0a05b66469e771fbd78114fce3c4352c42928bf5a0ecc49228a3c930b0790bde7ad7b -TAG = 669482999be99149f9b723b60fec62d3 - -KEY = d3465cdecaecbf25943b7bbf8084ccabc15474a4228c46cbe652a99be24a861b -NONCE = 04fc836de3a1420b8e7136ca -IN = 81e0e984ce0a4074a44524f93e375eabc650a847a42393f5c524c65523368d38a7e2b677fe08502dd3bc42311775016b5689c660cc0ca8cb33a09b89f3ed3d02fa0fb75ca5bf0dc3c27c546b369ab5e7731f93bc074d37ee50d6f8366f6c8a45f73ac92b05c4aa552ecc5266041dc122a0df69a36ad625a26edb57bfff43a84e527ea0d9d3cf076f8de9eda28eb09de3ff -AD = e4adc14ac4bbf3ae7ec7d97f5c0e6090bf8127a75e8b70e9b86496a62a759dba5a4eef64a8c679c362785501260d29b58e1af647782564947950428dbf14edab8e6841c7afaf9e7949b560419c44bae30315c597f6f6e02204da7ec605a4d9a8753de1268bb0b1c84c972b4e7296da5c969781feeb35a44d2aef799ed228aa399ea04e21cf9f7d5600a2c07b047aa78388 -CT = d7995e7b610eede708526c05c584039d48b9b4356fc71b0c37ec2559309a688a7c69ac9655f94e178cd2311db58587863b0fbb990554dc9a6aa849571f945c61e5611ae7e1a96903be725a1aa75adc381b86e43fbc68a36f44e0e0cb8fe5c494caa91f758597b6ef3b80a879154cd8a7e5f570893b4f768105b24b58efb67c5f07c6db60e0f48eba9563f17d38aaf0847e -TAG = cc3fe61642c2d7fcbd579048fdfb19ec - -KEY = 1a0dfe2a6bc6a69659c68942ad0858e1df905890f47dab728ab9c73f742f469f -NONCE = f8f76b014116ba61392597de -IN = d93eead436e835a061ca061e3a53c3f9c66c6f011b21682b8a6fed098bde2018a2462aa5ab542c69bfa2805612cf6146c9150888b9720db1dcd0f359c1fa3416df4cd225dd0b0d949e917adfb3e83bf5ba2b967d48908e6b6d8aabc545335014d951a67390d7b5c7cd7dcbcf66e4e3f02aa4e5e9cccaf73e75622bad006c63433d36cb1c6aa4aa253dd1b2eacac75c548aa6648ecf9d -AD = 56ca2d5340629ca75de4e98921da352941559bd79f47ef0ab42d1d5857059352f96ee877f5458f090ca237e4eef5b08a53311c8dfd4c4582f18a93aaa8cf75080734cb2ea3389c9c74d2b04ead614eb54512ea93f0e3434e9a9366454b303a8129d6ce6cf96b1d6dd4f751311c736b517dcb50a6f6e0962c46637b4f5aaf0f34bff518cbd551a7aad3fa615708b17cf6d8fbc864f580 -CT = 8dc4d8483dc665b174ba32d6b6244da5f2a8fcc4b1865d662ec23057838b332a07ff073ecc893d413696f3fffc6dca5d107a5673f14abe8e0457a02e61138380d25e269686cbbd23cb7da3060f482f62bf80a40dcc2e711ecf5f7836ca14e456c4b73a48bef90749024393f5f8af01b73302e81bc37c4110dc26174702231d831cd14231905d2dd3f375cf2bef0425084d5b19f1039f -TAG = 825e7b7e195f65c454ce9fdd637138c1 - -KEY = 03cec87d0a947822493b5b67b918b5c6a6bbdebe45d016ec5cb6779c3ddfb35d -NONCE = eb7d261a6b56a179c88e88ad -IN = 2326102c58524326759ad399222c5b5a563cd01a29809d6aed4d49772a4723cfdf30c9f85f031063e838f543c201412d6f085a8f5435b0b2fe94659aaf70cf7bde99309239ed5b815b48342d4f81011f5aefe10ba105ac15601c64a91076c29c3cdafaa12bdd5706dd7305b48e923873cf06944b5027b210c59d79856f602bd6481980ea909152216756d77362c59d57673cedb91ee6f56a40061e -AD = 4d0fbeb69c1869d2d23198ec49b3dc23149005a84aace7025293c3afb8cb2e38c167a822e25c2fdf667d3677f4e94ed6574529c987de506d26b7ffccf3b7a36d9adac48bca76084710338eeb5bfca9df1bf6b403e33e90761a0b3152afac333071a5ef4f54010b945d03b51f123865673e8877f41ca23359e60518f076cc64232b306bd858634417e92e546ede4ac6231635c9cfcf43aab1f8fc1e -CT = 06746f993843901ce72f2fcd4af7d15e64b3102d2f9bec0fe72cdd0b97e43177a1a2238c9c1dfc3311f701196653249e767a73dbe819b660cee07a5f3bb8f25823875fb4b4d34a5a3a212d2e166311bbe11fb1d36f4e725c3b74054ed7fffb7082203ccb5e9d65873cb8a1ce28d5c6e2b6555c1a864a725e6c7d5555d37dcaf1d0884264be72d38cc4b65bc2f0d039d542c5055da56c57e084b804 -TAG = d36a4b6d2f592d4f0d347d906fc319cc - -KEY = 7f4b4bfa26719d9610c80ba3f474c43127f4aa3414fb070fc2f389e5219886e1 -NONCE = b144d4df961d4f1c25342d12 -IN = 638982b95d66ddb689b7b92e3adb683ac0ac19480148bac9db550be034cd18dbd10f2459c915e99c385cd8dc4dc6ec48b75f97e818030fc2d8fcdf66d66b80df64f0ca4af91bba83a74f3946b17af405bbbc6e216435641f5633ad3ee24c1a2ed1b39f649acce59ee56c282a3aebaee6e97f96b34cfc63d5b0482fec20d755f399dd5f61688fe55878713cc55d562c2d72236eb674a340d1a64932cdd8534a06 -AD = f2fe3d27bfc278cdcf16fffc541846d428b31534ec5cf51c30c8b6d988dc36cd6c0d41a4485a3f4469e92ea0fc7e694065bd8130c2854c95549630bd9cbaab2205f27a6efdc2c918c3be53f2d12f8f7cc8e6a81dc8be7cccd217be1fa2e6887cea7d637d2e2a390f50d2c5be10a32a9b380a400cddbdd40eac67f1fe9ba6033d4bfa88c563eaf57272c8a7052916cf4460f31ad026a0ac2588a45d082fbb5c0e -CT = 0d4de3489e09c7239972b675063579e409acbb663bea76bee8fb3f7e8785158ebe1c26db9219a9b97ea29e74762999518613249c3a87fbcd0128f651e2db8e2167f10ab532eced3464b56bcaa09780e5ece18182a6e092477ad933bd8de015c80e67c6802257a97a647fe2b1e9ab6a76c1cbf7d905deeb824aba2a34095f84b276d55ff940d6ab788c16cd63d9b16e0908d718c851a3230b0a37257751df5a38 -TAG = 9f0a882d4456847f44c7287c8ff3ba04 - -KEY = 9799ae8045d58250e4d9c3b0ccc8897a04b5b9fb164e54019dc58d7d77b65459 -NONCE = 0f20d002dbcd06528a23d5e0 -IN = 8f323018b1b636617c935791e1c8023f887da67974080af07378b533a7573424f1de9193c5d38f55e9af870f6c60ab49c80d7d1ad1f18f1a34893fd2892d49c315ee668c431f5f35e3f60ecfd534b4b09b64cc77cd16b0e1b8882872cd109a5ca377518e5b660d75052e9a4228e3935705b6bf6b4f4249346b7bf4afb891641a76621cd315cd75de391c898959be945ccca7a96073f2569f217617b08502f7d569bd2f80e0 -AD = 3f1e297bd91a276a4a4b613add617b0488414a57ede2ac75d10934e03be58ec518a418e98a4dbb39d2365889db7c5f389b2a16d8c702cf21b888a4cbf77b356df48a30298c825fb86128de45d7fa0e5f4b0b7bf82a2c4cad2470f33c231802263901fbda54a6edbf2df638716492157ec1407e7fc2eb6c663d9a215afbec3612778b8115e78a5fd68cf6ce66c12c0ca26e5c1f7ab079bc09c3bc7b673d21835671a13dd2a0 -CT = 9a5758dad7997a766db05d698b43fd491bdcec21352032cc023bcf10e136523219745a56f0360efee75a37de55da23cc7d8184a50ccebb110bcb960dcf6b25fe731e21f26290281d9c1c7715c4e6ff3dc0026cce52929163ba222f123d4f50e1d3cf67725fb4737f4010ee2b5b163ca6251c50efe05c5ab0b1ff57b97ffa24c98653f5c82690d40c791047a3d5e553a0142fa2f4346cfcd1c849a9647885c0daaac9efe222 -TAG = 5b85501a476217f100be680b2f5882cb - -KEY = a26c0e3864a7dd3b589d17a74a7c9c1f7e8f9adb4aafa0e75c083d10956b6bf6 -NONCE = b54a2a43ca3f84aef3824375 -IN = 6fd4ec60613646490791d82de30ded1a12e61fd270f1642d2221272dbb150ef63ef2604213e203b740dfc9c4bcdf722b3c85aa20abb1197949de710d7e8311956c8649524afc72a9bf5eddf0b284c7fc6d48a741b82c215a0dcd73bb8afd08d5532a6f7f99b5c6beb2ad793d6da53a81e6523b2240729924ddac996a723421f57125f928990daa7a55a5b6b53d7361d9728f66590d969659aacd9aa5c0ec627d991b55e9fd0bf9c3210f -AD = d6d8b570eca29a48a4d408d5b27ec6aec291d70cfefcd02bbfe8d8ba8aeb6db770bfd723d2c3a4859f1992767d24e7b33e3e241874292af640e2bd22a5b77e0e9e1e0d5e485041cac41d4694ac929ae1fbc08e7591e1cef689028f5db26f95fc9e0868887fb9c635579fc6335757697f63b4f2b46664ae338eafdd827988c8f2ebad80ea9787871ed8d6b302d5dbf7e8019f2e139c59036cb5964a3701ec049b839e19e33e68b83539c8 -CT = 2420e09adb24098038b2750c946551a5f6a5bdf23b126947348ddb5e938b3fcb874b33fbac6407095e05ce62df999e7234cd2b4e413009c71d855b23993cd58c1e26ba0deed891dc88f099fdf852cec0aab45f488a90edd8feb6f4c837036945bd304edbf7a2737921a2f8c1b00a1daaf9e25b908a65a8f69963fc767bc975b5b7bcc215ce37009009dc90b5c7edb1a1174a10ad28f4c1d1a2241e7ffc215edef4f847ceedf7b64f2d15 -TAG = 20521b35310385ae66557740b435d204 - -KEY = 53ef3dc7a10e435650dd20550cf3ec2b997afc8d9e79cca8f7062622afac3496 -NONCE = 257a205ed0f84016183f4613 -IN = 081e2769935f945419aa06fb5fa7d8412efd1f9b52a45863808022850836c1974d53d2b2c5c0cd420711a71e6d1a09e984366b8b677e6c61bbce8f3adf9f5a9fb5860887617a08c923171d681c4fbc6d569690f6a183d42b52a80ef0693862efd22bf83b7b4014a7008424c356b5022df1842309b3a4a2caee0fd3f4d3fc52a17d53959daccf8e0ca889578ee2905dd8c17d52e76712dc104344148e8184c82af8165ea8386f91de585b54fc8535c3 -AD = 5b73ae02bf4a70e57f5d48fbf45f85b8496ae8514c8aeb779c184f9cf823d8c1883c9e5a42b2c099d959c2298ace2d86c4479059256d6a4325e109fa4b6c4ce90f84a8228316e80aa86de9b5e111d88b2be447a29297b35ca90a8eb280d4c0fe92a1d593cb966cb0010bc06831efb0c72c1e222b031e900ef06ab8da542a5abe2870a0efbe92351d5915ab545b14900e41a27c5ca9d75d6277afafe7ae861131c2767eb314c0c3da5c264f8f2b4ac7 -CT = 20ecb6cda861b660656d692c626436227bd4ac17a9bc71f6c84a1917ef3b5a0f6ba370f00fa2e7f1bd5aa8d6c15032572090482c23e4ab7376ef1f4dfb77f79d5dc065792fe3476c9c37614e32f493e461981b519dd7d10234c2c69264ffe5be06a8e14c81022b652c8cfa24adcc7c7536a55a2fc41e9ffcd09e1c483541cba814eafd5e09e9e44477018a41b073e387c9257c07d97e40f0761fe295d015e1f2df5be65b13f34b6ef0fe1b109ad109 -TAG = c129ba4c10bc9e9c2b7d67f5f249d971 - -KEY = 15ddf0d794b1bf2e67db1af47b45b8abb0c62ff5fe09b29659f63ff943815c39 -NONCE = a6e6b4fd129bee3ab8144da1 -IN = 9c82ac83e3dd227d0cb9692703dbf41292fbaf4961e28b7407ef069e33850371ce2838b1808ec1f837511dae9899a867959183ef3d988ac20758d7a1a6859cedf687d8a42f3dd53fa4b5843e5be61422fb8774c9eb0fd22cbda5950155caa0ceaa00417f1e89a863fcc08cbf911776fbea8d7c14a6d819c070c9abe76a7f0d04598188d07fcbb822758081172e654c025703bb24c523cee2dfdc31c8d2c84534a60e7efa9f52f7e74e19c859889f9bd024f28763 -AD = 892bc04375e9ad5ad2b5c117d1aacc202a74ee4cd4125019f38ed4d716ce361b8b50463ec3255a00670f5f95d361e79349e90bfccbf084586cb5fa145b9eece8a10187c13055ba0d17c0fa526ba7985f00f3eb4a2cd53b6da488827fa8481cf47f6be58771d1e40125652732a7dd5adc49cf99ed6b085fa9fe8721c86f7241b6efb6002e65ae5f72e16ce6a09ce81365485b20f1fc2e092216024b1acd0bb4c2b4ffe28d62a9a813fcc389774688eedd76c0b041 -CT = e30465518e7dab44b9ca4ab6c86fd7b701e334b050a7889fefd08aa12c9e381acc7875ad5f8574fa44f8550bfc820b6d9a5600cfb82d1f98721a875610a91c8f47960ea64445c0e22fd3ebe94b3564e98b9b00a68e9bd941eef5382a67782c5e24ac44b928fc986c62a02fc702b145843b1c6882188dcbbb6f6b51ce1aa7784da03cbdc3efb1a01c1cfd7e90dc3332fc6e912a6a967ef1f239cfdc9752e235dfe75dab8088f8cc207a4a28994f122859aeb52d01 -TAG = 62e7455cd6b95319efa3ae0d14b88452 - -KEY = dc0cff51030582f29676482ec8dbf0490a135a4cf3e444edfb7d1ec733cdf7b9 -NONCE = 58c892d618ceb6027afbabb9 -IN = d6c4d49a9431d51bfda5bd4b07997690748fdc3df196d27d219a62480dfcb6300c5a234d675aec1239280446cc134bd4e0e0b5ebf6f10bb11b788caf949c0c3553497b62e729f08700b66c6720c35f1f434f16b15a4e404d627fd054ae1394a77d5ba728f3422aad5d99a608c2aa52b058946a76a408c5dfb210d280629ac999e86ab1f9da8f2b7b79ec07cb666105582564974180ace98c63bdb962e4580692abe58929d29f066d2f7e25c23a3824483d9e49cb6f5fc4a1b0 -AD = ee3bc8d875a4d43c278cfeefed8ced8a3da946adaef93dc356001da151010548990fe08b62edda46634db320601c7f4b50956e29868bda9ae5df186f15c3ab4a19d7cec274209cecc71602e45c37c273b7e4b2a168de5c29278042a3dd1fbea0998d7d9707d412f476ac8de7936e2e5c268a2f22646f682e664e526f88004e7c461bd42337dd21b1cb39ff678974adb67c2ea1b7055ca98697ec16c4b3bfa95b4dcbd7fb015480135634c34acb20f58549f7e7e11e20a991a1 -CT = 54eedf8ca21f31d21067af5a05dc3cb99c3dc046540d2cd1664abb32fc7714ac057d039cebdeb124e1ca9511bc71f92ddfd4c6bd3edc8a1934f2fa2511503944f2a0818e30b9bdd26bd3c51b9673f55ad3f2ee5e41de114ccc55abcdce06a5bcf63a5bd61fe71dbbfc97e1c7f3417fcb9c1462e244ad91725081c9176a0b91d3485400d273a16eecd870ec1e9e016a7f4af2fab39a0bc93576ffd1eeef9cc15b7e47feaef85b21de422666ec722cbaef26edd1941e7dc03f72 -TAG = 1cc8c395b2ccae3a685183667ee7bd34 - -KEY = 90da49f8f64e8a585697a43644a48bcbef33a8ed23c1a93c65e59a217c04a1e0 -NONCE = 0812f87792508dee6868d454 -IN = 26dac57d9f30bae5831f98ed074cbc9af9731a52b2322cdd23f1f0abbf78092c48d6d24a43c7d49edb3fa66086030f37dd9dc67847714437b11577d2bec645b3210baa8f7a540cbfc20deec5973b7489b7607eafe72e249df5d0fed95e29f03cf7f0c7a22fb2f06a0bc75214446b06d25a45ab8087270eec56af3960f53b80412a4ea7b45e54a2c374e8a3789e8eb57e656e22107503920313ee3e4025836b9e1a98541446c23bd5674cb83483642f2f3e8270bd1f77c85bcfb205a9133c -AD = f2168cef97c27a902d93cbca07b03f35c5c3ed934192d29a743c3a6c480c5a62172c088fc89cb2d8651b8979e5bd1864272ff179be8003c6dee18789c17583dc1de4e8b4fec80e5c7575838e621cac4b5b51ce5952f22e06b1c196101d2ac8d05e797323e5baacc49d1e74db97142e1bed723d46ab858d59fd36d5d08eaa63f696b610eebdc9662e504992fd3481de1264bcac8ac426b09fbc641ebc93f72c5d460088fe0b08420d88fae219b6a5a67420a5f9d1201bf8d64b2ab3e9050a -CT = 82196d89624689bb172e4ff71619046a91149c8ea99ebbaa3f2c32c77938b5ac466481575dd82a008c7f5867bc46ee44faf95fa40b6237c8c3b62474af2efcf07c771e23a63e65b48b0bd8ed26fc64dffe03e71fac6d3857b1248df63d888567d7d3618c68d6b8f1c88029bd7af8677d3b51f70ccccb4eec9e100768515637ad8a4b2e2e317902e456974ce9fe23095cc68566e85cd913e8b64119444f124640d16ef3e98136f32d618eef78f7ffbafb64227b3185bda8f541c0e7ee8405 -TAG = 71fffdbd6358f755dd22f1dbe42c4aca - -KEY = 0b1b256665284390a9193b7b7aa4e3ad15a3d2a58e79d75da8ec284c02fa3a2f -NONCE = 346ae65660de8920605fe8d1 -IN = acfa83f56f137ac39d6447d98c5f7d5e812d1d8e7c7fa7f7beea9a87c59961449683fcf5332c9ef1587135030309a1c2d95257114b790b18cc32f65f4c7d1652c0106e3331f826e9b8b0dffc50aa6723d0827076b71c668370ddc8156db3831559a72e48266b3886a6d88318e6ca646ff561ed4f71e665abb7a60089f0a115c7b7fad9cbba6c4cb0c242b9e1f17705825d98f4bc10bacd8ab2e11cf579f29b2a0b085d8c96a372434785856b483c3fc9ae909029b0c931098d7e59f233cb6450fe0b0d -AD = 64347fc132379d39cf142ca81d7e49c010f54f354ca3365d5195a7e43175c9a47603062c5ca61aaf2b381f5cd538bbf48f50d620ff2b5980c086049a378aca69570ab7c406b510a6aa6b7e8682ade6a091b1f822a97ce671fcf7c911c43c4795b78ce1c86e990e32bc5c9fa34a8a4b22a20d6f7c46722d1bafd49443b4da9634db4615f7cabc3d5bd9a8921e67de45dac261f54bcd0af2b2f845e255a16f2d2f1ffe26e88238f5dbdbe111393aab3409e08dee8b9bc85c51b385c191ee9290454236ab -CT = 9d7421330f0c2a525495bc360cd5c2273531d050d461336a254c9af8611d07c3559931cd6804fbdc6e6c9c997283cf40bc23596efd1bf116fffcc6620e45d1c738569af012a7ed0d575ace3c12662f88f3ee480af30ee015ae70db112bf4a185e220660a912f9ad840346e7cc0715e853dcd9b415ca9e865d5e4de2321e6a1b7cd8a35c760abd3f099d395576a91503147bdd51cb4bd1452c4043b42dd526de6f61bcbe819cfa3c122c6f62e0d4c38b443f5a138325a5f0ff8a9a2071c2773ce62edda -TAG = 2af508d74bcf8157ae9c55b28b5d2db9 - -KEY = c055bfc7828d9fe8fa8d9851d33f3e4888e0f7e286e1eed455e14832369f26fa -NONCE = 2804e5ec079eada8bb3946e4 -IN = a26a9b189ada0ccafab92a79711360c7c396374c6170de395bd8ed80dc5db96ef1534adc4dcd419fdf1801add1444a195367213e374eb1ab093f1f54cd82eaba5c1cde6b867e0d8fff99cdab4d96e69aee0c58a64120ce0cfd923f15cdf65076a12e06e53ab37463096d9ccb11ec654e401c24309fda7afa45ee26e5e4b8adc8febbddaff1e7cecacad1d825a6b16a115287b4b3c9f8a29b30fa6236ca6e883abda412177af38b93e0e64b012d33d7bf52ed18c4219bdf07f36151b7ea4c53091ddfe58b6c9beeca -AD = a184e4811d5565849a08d0b312f009143ac954d426ca8d563ad47550688c82dbddc1edbdea672f3a94a3c145676de66085ded7bcf356c5b7e798f5ab3bb3a11bd63c485fbcded50c3b31f914d020840cbc936c24e0b3245fead8c2f0f3e10b165d5f9c3f6be8f8d9e99b97efda5c6722051d5b81a343a7d107e30d9319c94dbc7c31c23b06a4ae948f276d0eabd050394c05781712b879317ac03eb7752462f048bcd0dccb5440f6740ad0a3a4c742c3da32a49dfda82ed1b66380a8cfd09dda73178ffa49236d20 -CT = 58dca29b5008f74bf132947df768dc85e2492a381429f151a3bad3132e63a4a977aa09f10879d206f43f27a26909495d0a2c8cb252fbcb3abd953f6e0ef0f6d5e89d89a1d9ecdb0e44686fbf5567a6fe7557a084a8a5ef5316890917bc432164266a331118c828fad4f5d1776645d163dc5444c2e12def608efb47adeb8f9928a5ffd3c46f963a749c310688e78525e34a510f529472a14bc7a5b65594338f6f5ea1d95bb5bddc6e8e1d1a449d126442accd162e4e03c10824fd48b32df763de5d7700dafc54206b -TAG = 141c80e1d044e1e9cf1c217bd881589c - -KEY = a54a347a7a388c2e0661d4ae1b5743d1c2f9116c0a7aa2d6c778a21e2bf691a9 -NONCE = bd3456b0dd0e971451627522 -IN = 3d17e3d9b5020d51295f7bd72e524027e763b94e045755af4b3cc4f86bce632a1286f71734e051dbcac95780b9817b5f1b272c419e6bc00d90c27496ac5ab8a65d63c2ea16eeeebe4b06457e66beeed20fc8d23a9b844ba2cc3eb3d87e16e1230fdb6a9134bad3e42eadccd49baed5e03e055f389a488d939c276982e4bc77f0a1c738fcdee222e2641b06fe12ed63ede2ab2fee3c54d7901d0911c32980b7c663a67d35ece23136c77f8e4536464225ab427d937e7a4260460d55bb5fdd7ea2f105604c4b0cf129dec49b81b1 -AD = c12d1ffb08acf27d51e63f5c0e311180b687438e825204074d4456d70b7c5ba9903ad0b0778a5fe36c3e12e82718c00f5d1ce585e5c73b23d6c5e41ac4a180c97c9418b07ccccbfc58c678e97882ea36395c0a05572b4cd25ddb3c32fa580c89c48a0e3066b8032e3823893a5721a4fd1e59c7d012a01b9e9afc12f3bea93e9d1a2cf5cab26e064576b36bb65606de62fe2887ace0cf399dec08da618954ce55362c8a2bcf31457a1804bbfff68a76d752f9aea81be8868bbca8f1af3375f7137941a1924b8a2b178f06a9e33f -CT = 938f8f596e17eae6920410f602c805ad9715833087e1d543eb20b1b313771266dc6a8f86f2ba033609fadec92ac38c1f1f0f728e568fe8bcecbae2ade7b9c4128fb3133c8b4107ad5c29cacbd5937f66905e18cc52d9239c14e4c8edbb2db89b26f5f4a9ff0f2045192fd212af6c65e448834580deb8787b612d6345466483dbec00b03fee4751f543a6155f2dbb745c1094e9721aea3e544a894e4a19a14645725cb8fdc21d259e086b1e411fb1bdb11293d0224ada25da2896dfe0d35095230af6894404d27d901540b0ec35 -TAG = c55c870a5eac5c0c774dd10dbadd3fec - -KEY = b262f6a609c4ad6da3710d58530b634fd7bed875956d426bf4b2412209902233 -NONCE = 0b455031d28e4e17a45b7a60 -IN = 9cff6ec8832bd0e62d9063e43821db6a1e0f3ae7947ab4d029643b0e7db8224f8bd00a2c011b246a4d5eccf9801fb314aeadc0532fa71cffe188e801d7c045e81b9dfc5cf6ae1e310b363adec4e7ca52fa754ece2540545a5161eaf9ed5748070b6e232125fa8e0fb7548fd3eed57a6be72ce0a9112f166776816a0a4ccf8151b6b93780875d03ea3d59ac57e7904c83b90b7666de85f055b25f9e342af4cb04b0c3f123ea0906c04f252f2b16b28d612e37b2a7b788d66beb8b361385efb73a825ccfb1a5ca55d60afde0349e5dad8096c7 -AD = fb99bc661b51464c0df92ba4f64c4c56d601622287bb1bf8e0a082ed3793e74db6a2f5a546391ef55dc45fd2f24878834bdc2903054d9d02ac05bd5ff122b65555d7ab1664cc36b630039e4432315445f303837e57149fdf6bf8d6856ba97abc5a18b6cd2f8f28cd3ac079355b314561c50126812861c39180fd94f9aa24edbec37bead760093d32b96ce30e389f63b2b271fc051b42952b3f5cf3950def581f7cbb2b4aa5b151a16ed3773166761232c106d3ff57851895640ea12befd69daadecc4122b4a481e85088edb093e02d5d3d8a -CT = 5341e8c7e67303d5374e3f5693c28dd9f9a5c9368efaaf82d900b4a4ab44337f7d53364544bbd822020d79443e2ab0fd2381bc73750203caa3d28858a8f9a6dba57a7c5248361ebb152a81a89c00b1bf49de9e2d08c0243b38eefe316ef89164b4907515f340468291e0b51009c9d80cf5a998d9cd8fce41d0c7405fc2d1854aae873f0e24cfad253ee07d9f4cd27080ee8ec85d787459080a06d290e6e721d23738470835f173ed815f1a15f293ffe95ad973210486372e19a9cc737c73928572cbc03f64201d1b6fd23ebb7b49d12f2eef -TAG = 5e0ac1993ceccc89d44cfa37bb319d1c - -KEY = 9b4387e01c03d2e039a44ca2991aa8557dea6179d19259d819d70ab2d5179eb0 -NONCE = 852124b4e04d7d1d63743d74 -IN = 92c6f01cd2cd959495bd8aca704f948060bee01ca61c46005b4db43e2e7655af4c0d96656cd75d904325ecc325f5fc9a5fff3eeafde6f81323b0e3b64269028cb64c9fbe866b400e76487f1759d6ab8fc66589e23df0c008974e1613bb4ec556bd1a6a0751f6dbbbaeff219874c57dffca59a955e0aae62e8fd6a904a50fa7eaacccc6dfd4a2b8c6c040505d3448ed2217b7024224bbc4335c63b2ae8172d7d3088b819edbaa17991a4729bcd5a456cad20ba20dbee99ae56f8ef669dff93c99a995c8f5dcb5d113db4178a49516206a1cba7d872682b1 -AD = 92a1d2574182f850e37aa62338b19f403fe99dbc7ddbe1e6524ac67c4092cfe296b5ee9b94eddb5c228c902c18ec1ec26e1ef0263d05c5caf1c71ed9e5ff987e9964b46f27be05a83e20867f1f2107db26b6bc7066af2b0efdcad2b65f2ebe8b31fbe2f3c30171f2e4969f1650c9642ae47c8db5bda47e57e8a9af210a6fd4894dcc2934b4ecf823cc841cdb3c93ecc779b455b8cc796d7d60437da201c3f848dcd5f45e88973e06364e7cd01afd2d49fd3032550f1c1a60c4ba48137398f4d58e5fd0093c06042b103ce0064f2cd1cfdd39b7440121d7 -CT = 28b87d324854d5c9c6ebb303fb802b12d946ed681ed5b3384dce2cd782bfbd022f213f193bcac579176440bbf2af378b019d21dde5d70e42d257722d15417a9fecc8e56430551ea3bee798a01faf74d0fb09be6dd0c14cd03feaae29c7d17581e1fda0b4bce632ef790202e98c8c4f8f842fb3e33b3fa5e8700c8644ed6d64280652bc2a5d40b3ee0e47dd5a9f3535e15b1fabb30264515afd4f9b1caa5c224574636935baebf6d1992bf1a7a3d698d457db4248a2b38a803837ac4fab7998722d52de61bfab4f98e1933a77046bfb3941bb7988acebce -TAG = 1b07d58be48b81f7007e5683b399dc28 - -KEY = 9d36155d429b90b5ff22ded128c9f0cfe77ed514d410998091bfca4dce7e3c88 -NONCE = a7b73ba1b2b0e846c3f635aa -IN = 2510210b420b12300d51ee4a7ad233c9c97d71672c0f9a7b9041d32172fdf3a6ce274aca77a0db6961d7921d1681ede2c1088a7618382481296778e7f56d2c0074c7c545ccda313495ae2a6dfd042474b07d2b59c79a0cd8c3dc16132beff1687111a48ee3d291ac556987e73c5a3807923c2deb3b9a59a135a8fa0d85d5b39016edfe0649dc13be672a639db58839d3362eaeca046767fa1182ef8a63abc104e7cdc8610b1e956aac89af76b40844a358fe6f7343d217e1838aad19587ab4b1c765d2cd7bf7018e338c0207d4c9dabdb1625af0c75749e9a20a0d8d -AD = 39e96c8d824bee306189a3bc8a8d4862df55e8016726222a528d76de169746a363e82e82e359b774d061a6e98e3c35aca8ba802a5956a2c512501fed44ae341cfa65ec9d95485763d99cbd9aea078ce551f7f82272bf54dfb6420ae7653f275ef145b2c87720c9ccfa56bd286c61cb822d0473dc2cc3fa22d50fd16bc0358e7c615aa1791b990f30b1d737f798219f4446d173e80fa62380dfdfebdb36b1284a62c2b6638f28fc370034812d09b57d27e5b7d589075bbab42fcd6a91fa2714538be6286e4c7b2657b80f045df7f8954738efa7d49a38e5a55a2af934 -CT = 8cb991b10218bfefa522e2f808dc973620ea391623947cb260b852efd28939ccca4c8b1f02d66fd6d0d7058854fac028fa0f23e8de801ed9a4361bf7e5a23e6a7086624a64a29815bedd5e5ebe4d9f9386d47e1408286971654b38ff8e5dd1fef7686d7614ef01900ad33bf97896b4ad02e7445782b1794b45af967ca3ba72a2e5cd5252a9ff0ff550ee56fdd8aa555bbb0bf8a5dd534fd65b13235fa6650761dfe2a28b2757077a2680ef88c84eaada743d1f0d25de38fdd1974ffc07dbb9c7fa67cacca309a10753c6e2561c4784470f5c7e116e12070fb3d87131 -TAG = 665fe87506f8df07d173fedcc401d18b - -KEY = bd187500219308edd6ac7340d72813ee20054d6d4b1bc2ebcde466046e96a255 -NONCE = aab93d3181e7a04cedf17031 -IN = 55b824816e045702526f8b5def71a0d023a2e42257fc1e06f9a8531ef9f7717474ba4f469e442b471d5da6e71aa635a307205c0a935a54b8a59be8856144dec435e29aa1a3568073aa6bd3439bc0f219fa1179ba0a316f7d966ea379da16be4db2f1fdac2fa6d00bef9351b78bb2773bc30ddc9d019e6e7d78dfaf38010080027afac33e751c0429ef6c70a1f2d01f103482818e9353e39a3a4b785a7dd2c7e1ba7a4c36a5f3836d5465c002bcd1ac576d90ad276952ac155dabba6873e6d92b5278280a540071b205ba99b77b7568862e70e6ddbd804906c33fa130f8b0862001 -AD = 11b35743bbcd0113d2c188f75d382df44e874a2d4b3c3148ecf8e0406479305f29197a3a71dc7bcd71b6136ab11a7cf46de80140e15046acfa18774cbcc755e9f3beb37202fc308c03b1c20470b3128f5b91d925bd6703dfb3277d65159688f656d5ccd83d2beadfd778854472b1cb8fe440bdb7efe806f4cb95249cddf69fa0013dc5a626eb8ab69a48b3ddb1a317b35f7772f711221cee1cee9469e2639c44448c5942c95324dc2fcfdc952e05aa336ddbaf57cec2d1b33981ecb8f70ccd34a279b211c50a7784906f2981a2d2ad8fb130100c4f6bdb09c95dfcf4b0eb7ac6d5 -CT = 1e99d06f82333ec8e4fa1e81014458c81325e5d69db561449b153727da35c0b540c570b60488aca6aae58f75f84792388d0160dc45e4e5bef552c49228d806fcc22259f0f94da2f786cc94a3ecf3cc15ac67719379d86abaa54ce41e868110ed2b56dbeeaad4a444eab51a96aed404a4f4b9677d22345fdb67ed0df091d23d8acd70bf6cd29f19c99910888b3281b65637590af984e493ac70011486ca88e72fd14ef1cba06a50070f138dfaed35ab12690a14b1c8ac319f597bb690cae28019d64c868acf9a58fde1d8aa18dc1ec9c3c4a0ee9c4cfff8912b1bf23c805af6df48 -TAG = 1a43147e6e097a46b61f8b05c7dbbe1b - -KEY = ce53e967bb4675a51652a9e6e87da6be36d16245c1e37ee00bae09cc30ed8528 -NONCE = 0f53ed18bfdd28918c3993d9 -IN = 3f2416477ff2ce7da3e5766f043e7a06ea2b87fdf06320d296c71cbaec4b115da356f8c7f34220f91e90c97a5cbbb7fcf0048fb89414eddeb2ec1062d08cc75a39a1f9f214fc3efd6fc8e70d78418007d7d28944b3f37fa5667ff79098d7af36a9324419b53efa76e98a311e1436ecedd977397cd02cc8d377ea8558edca35ff4c71ec31943119b76af4c78a435033eafe73c7079224bf2328b49ed58acef9b043ae3c7ff17a66b521e190d6ca2b2835ed8edc2c173f04616af237391a4440fc5306366c834f6a504e902dca6d3e9e1554088eaf5b15db7fc1fa19f0867ece90ded639ee8072 -AD = 64a596ffca0889833fcb537f58d94791f9ba9b6b7ce0c7f144f2f1a95d62ce334f7bf7f0d2ef0c6e7afa2324b069dc6a7a522f19a001c335cc0252ac4a26079c3f267cdca1e3f933069f52fe72e1a00c83d8fcbd2e76149a912c7b37663c2e7967a3a80656c87094d349af6b9d64b3873f467ed376eaa1e0abae06180c847e981c6a12d32b580acd34f779c343f8b79df1b5004d333a5c37a8be7a94c6f6400f819ffbe6d54d3c1a92824fb15c279fc8121c735b6c42248ee22e665245966d40eadc51f12904cd64110d69354cc9d9fc415b3469317d5e4643942dd4b649de0ee2fc5d200701 -CT = be462da8cc9d8cdf343f7025df0b8b41c24f7b6060cea2d3c63338b6c3e83f0797e966b8c5dd889bf1b5058fb4d694be2178fb33d9be1a351812046a6d3bd36c84ee3665d39fb98159e4d30f8a25a60064caf980f744fc519e2dc451f5fbcc0834b72920d32f0492abedc1022b0db4f2f44b91ec48c588334775fac91f174a4714b3825e96fa53cad3de94807f3b888950c8776189cc18fdf379cdc9d6054952c6ed2b3fb7f6b49beebacee7ddcb19a3eaee2b2e2b7a5d6476e5fc1f216ca443b859a9a661dcf2f7709f87361186368a62f255d78150f09ad4ab1a20e7329f3d96fa2a33cbf6 -TAG = 1cf74908f6fbfa5b2b309ebeff2f3ad1 - -KEY = 093d932ed969cfae63f07e0c04c7f9eaf1b36f656095f8d5f112517dfc430cdc -NONCE = ce36a837ae93a280d2fffc63 -IN = d9da99635f8d728843dd587cbb24e68e1df2f81b5f7abfe233a224cdbd48cd8b82da3711d2ab6c1ca722610b87f426a2cdee4456b50781e3b25da037ca636f2a5eea01f4eeea52d0feb7f1f6c2594d63d8c05c2adf339839449cb1d2aca94852d1b64b5641a572c2da02ebe299c7d1ff4da8706f44b14602f44c0ced711fc78005f87b1686106250d3d3860b67f5b38788db1891150f88d4c5276751afa0b2e37a59587cd8b718767455e65eef25bddaf787d52b88556710f740f117b02f244edd47cf0e45646d40e789671ae61ab06336e24fad8b64cd8f60b427ea1f58af443c6f55d54028edd5f40d78 -AD = 5e9c95c3449cee3f9f726be031089b2358ee92fe7b408b355739c8da6369304f3b287ca60dde4685bdc59879e1530ffd8f6589449196abf0f0dc6dcd82ba7fba481f13376cf29b32af2ecca24a161e6e57b6db70a7e02ee2154cc0bb5280b08f8dca35b1a342fa18b8025c7a805cebaed99e30b43c139de7c37adc25b0b6b5d873ed86530622ef2d0ed3ab19e9c27df98a4a15324f902c35a23adcad4598c6e990c64893355be15fa7320c1935b4ad3c069c068d6b3c8f43d6fe0588b59170bf567ac3a53a50db68e4be17964f55acfe695638cb5fdea5c40805334a385c2d35aa836637ccdf71390487d9 -CT = 40380718f069f44c88932af22a10f80513821caa71fd7a9e5c4f37e1c756c43fe491ac13f244bd1299844cc78d7812110f570b693e63614e639ec7395cf65c206eb6fc9bba86f89d03dd19e45d5ec64c7d3a308ced4ac1f59cf4e13be64e49acd9ebee209afc508c97ac817f1367629af9d59b0cd48f138d23abb61f92dac530351f46a4e7f70ac87388e44f6e9548d3e6a26884bb7611f632da7db2a12fd9174773e685df316ea9401d8b352135b6b32a374eef8661b77eeedc34fa4178d0a5731ac9bfc14bce1dfe96af095b0088371ab1a04b2062625f0c4fdf01fc0a6bbf1661cca11932e93690501a -TAG = ef7f960b146747ba4f25c705d942f8c7 - -KEY = 86875efa72ec1827f133a8935193292463ecef801bf3b461c96b0312cfcf32e1 -NONCE = 738136465c8935d77c8d4ea4 -IN = d692d3ef47a5c9d0d9a3b6a0d498e90a3ea06278134ce90cc1d69da2159d9a1f5d0a9ef4b4ce5f873e26e8f9d53ced79991491325ba5511be4d9e6563b70459b10e60d8c5da45d3b0b34dad86772b0560314f0215bef7b55c6ae53999cb2d6a14a35b50fe5a1598adb7ebeee097968ee7624bde42862824900c8cb45b12785d9c4d50ef38133d31a66a612d8638008d03edd19c4d7edb5f9b9f195c60883a7d6aa85bc3ca3b59c395b85dbe9bb30ef6896c4ebae8d72cbecfadfa451bf36631aefddd3feb36978aa8d9a45c9fa09bfa0b2c040d9a422840e68f4dcc3eb902f6be1d91b11e1749183d89715761b6cf22c -AD = 17208cfe5a96adf0ec903c7618d994492d3eb77275fe5bfce5ab1f67d27431c7746314e52934b8c44481e5760cc8f6b0e17d1fcac7fd5b476196e3152c3dc90adeb58c2c9c62cd684b4b18d4a94f8e5b4336ed3f1758b58a254f48b3aecd9cfa63cf758f2df54c52eb246d046198b6eabc90b2a0dd6c5323e915a117235174fc9089cc9bcb1a3bb49080cbcc24367e7f4e17e27a2054bdda0ad8996df1cfc6bcf43f70cd854f4d97aaa4badb5826dd86765d36a2ecc83d3daaf31594eff02999a423185356d693f26025a576037336c156543353423dd3b5da75f45e297c60dd8e091b961f60eb6786fc988f6324f9e8 -CT = 55f48dc2b6836b8603e19264382ddfc568b1bf06e678de255d355fd865ef03339f644312c4372494386589431d4ae7af2eaee5dd3c16340ecae3e87dda9220a5f9b9fe6cc3eaa226d9608385b7e8a6216e7da71997088eaf7c67b5402be01c0b182383ed3c0e72e91fc51fc99c59cc8271660dd7a59ee0e7d9626ccd4439bb9a1499c71492807f8126891ce09451d07d9c5525c5f185559ec44aa31498be3fc574389cf948640dcc37d0b122249060bb7d5d7e5194d4b7a7bb64d98d82a1155e30970a854f7c0d294fbb1a9e058f3b9f4762972c21086e0bf228768d0d879a9cdb110f9e3a172feca7417d48b3fa0b0b -TAG = e588a9849c6b7556b2f9068d5f9ead57 - -KEY = e9467b3a75dde39b0dd44e7cbf2b70ba1757ba6a2f70cc233d5258e321d5b3ad -NONCE = a9756c7b8e2e2f4e0459f1bb -IN = d6d7f6112947be12e7ec8d27ce02924503f548456d0ba407bf23e848b9ecc310e4a0c7b00c0de141777a94cb4b84a5cc34b2b05c8a37cda08b6c2dba80e80853f2a18bcc41341a719f84262b601610a93721f638a8ca651a2f6c03c3cf1070f32b92c4ab7a4982a8f5e8ae70800f7513405f3ae28ba97a9ce8241608eeb5351e6cef5560c4209790ee528b3876896846e013a0bd3a1aa89edaefe08fb4b73b3fa64c0c8b0f7ab70653ee138456319230174f0f1f7f3477f0cfc80eab8a96e29e85e20658cebb830ba216b1d8281ce499f729278dcfeb59cde3a043ef3fe2c42705f311a422e9f80fc3b58ca849dd4b99e5e66a958c -AD = ccab7afe4d320e94f77963d779ade1343e66ae80446eaa5f9ec4d3e3bb3166255e4aac5707ab407b284dfcdbb18ff515cf08790f0470cf335946040438c7de2d2a342096d7607e1920d86b519e96cec1715f4b0dfe375c5959644bd664d23d879b825dffbbdc458ea9da5ede5682ce1ad1cff33dd8820761b1c067cec638873a3cae79c7682ee8d4f97cb96a413dbbded1c242ca669d50ebb6de3c27eca3041fa8aee8974c3d17b0cf79c32c7bbfe20dcfd57303cc40334fbdc43e925df1d63fde57bf60553d7790fc56bd95e675db934dabb1125eb97cded95f397b32bfb3a2d40703e3f11c6c226633b3cb7f9da1e3367de2ba4d -CT = 47bb258ddc0945079a0b99ed5cdc0186f453f8e0393cfea258412e423dde4a00c014ac298c4dfe7c03b0d9bbd4ad189624cb6fbaf13e60ec2b4d83c5bc3294dfec30bd6c8f7125e11d7be145a966dfd78fd77af68099b855989fe077cd9f427d4381b4930abc1daae55722540e4bcbe1b560fde208ef1c2dfcaa2c51b76072e67da311c2556eaa2c25413bfc43d00dd84aa8859b296e05945683e028699d60a29227de1363c4138b9ec2db8f3b502fe09d368c5f2ffd81abe50cc1ec1ef216f27f401456d061429d1910623af00bcf500cbc6509c5aebf7de9c956e40a3f0b0d562775b03c282c204e33c0b380ce1475eb5c0441f6 -TAG = 9ea19333f5050354a7937fed68e38dd4 - -KEY = 4e323dedb68bb5cc4cf2edfe3a54a19b410f849492ed6f66fc053d8903c3d766 -NONCE = f77b876eff796db621eabe88 -IN = a7514c4111d7d8bce2d56faee25d9f5fbb527162576b444fadebf42d48d2631cfed344b0437ce8a7609bf30bf0a44aef172f8b12ea7567cfa5dccbd08bb3115efec59437ff02e7128df9d9e5193794373e30dff7b3d8ec0fcd6cd3872d755c0314f1cd9cb996e4c6ca8ee2e35f9b64a1f0bd1669369f9b333a356ba58e553ff9bf9cb6c5522599dccca2f7f57a91006e7dca4095d11955e5aabff69febb98a408aee92293c0abc12ff23482ebe9d541bf8fc7493eef2c68044dd185eb243b54a2bad9844d831d9b0766a0ef013ad3ac03627b1feeb287e5e61875bb1d0a01315761bae6323a9d678cdcd3c4a85be71b70213d081b348c63fc603 -AD = 9bd10dc97ab5e9b35e1c8c36ef37f90a11bae7dd18af436fa8b283eafe04a5bbb16bede6ce1260187299ae6474628e706cc08b3627f5243f1a9ab469455666e6d5f2ab597b6799bd60a365a9248341decc36d473fa52ac5ac469b965cb2023d43b437dded84ad49de95a6dfc6ae4bbefaf86f9b06e3a33ec90d32ea3af541fd2c43387c75dbd94d44b9582e8ea41afba5e49f1d158d48e979d04888fbd42876e12bfd6695cb99640c537f2f9223d37cf6b627207b9318bd1f4c64556b5db1101c486c53dd8dccd7405e148d6d9b38b7ac875a44bd6df75edfa4da8594a9c43b223e7a6f5b81a5cb8dd6e06e9a976ef156e45520af332e4d56035 -CT = 9885d7a11004ec546955fb7a8c77ae57588fa2e7fedcc8e9000123495b9016d1a101fec1e6724302e93eb8e01bd05efbe8502eb97b1064bafa9bba5658b1677819cec4998dbf02df1f1eef51bb3e75c19f570efdda98b0b8dc5dd9250eae8396090ca9ebecdb90f32c5e2085e86b64e57464d251af62d9f8c01d7bd6cec5f9dfa5eb7c4cd412077571bd071a4eff5098883940d63b917c08bf373916cccd7a446abff0aa5c687518703c25cd8d3c5d724f348e20be54f77fd18dbf6344d1d25c788ccb5a5747d575435829b1825e31f9e94abc33c0d2750fb62ae167a7a74fc9e39db620d43e0b8514d5f70a647e53dd5764254b7785b1519474 -TAG = 936072d637b12b0b6a4141050f4024ce - -KEY = e57e74595d230e8eae078df1dbc071c66a979a912e2252257e28447e97fc82a7 -NONCE = b613d6d5fff507e917674f2f -IN = f1ecbb2a45f04ca844616528b10ffa4d2c5d522ed4ae3366888fb371b6ee7eb4be53c8204783e43265931f58f308623f7b2733384c173540aa0bdf879fad0283c2be6c42a7b4feb2b29265fffdb518ea77d33507dbbff7d9921bd97fd27f1100402e02135f7df4b5df85f7472fa75618facca3e24d487453e831efa91242e62ee9d32880bc20f7ec016eb12edb589dc8a669f7c78375f915d7c2b03457b00ac2aceaf37c0369a85c3f6fe7c0447c022d66bb5acaee62163837a36e882cfb8579ba9182d3153a25623f339758ede5a62f67b199fc8abe235fe4b607a6804fd4d15378c76e0c26c1edf1cd637b7ea59edc66cd5ef9b8cf79b95ff89c235ab195 -AD = bf4c0737e461c1d6fc45b87175fd7833625c98a03e089c4e3d47c6b21f4bf38cb4b7666322217eb8fa022afae473df56ba3502c88cf702276bf39c6fcccf01e629925a83816a5096e612458af6380dcb7f63cfc0eae99d63475616b18b44111a1927b05503c4ce46ca48321b0f8f247a54919fc844fbabd3a2481e83bed8a5ee8086d7559db00fd1d64f4892ee9363d59829ce1e10af66696c28e86297b43190800251f346bec1b577446120529d486266a271c71011528b24ff4caf2c30f9748a2b03c788dd583541368a643075a52127c48b3b6f0c6ef413e61479c9afdbeb4bda44340ff0d81c7bc0321d3de4080cf7e108dda3fd4e480e685b202c6bfc -CT = afb2aae2dce03cb0bd3467447ef6895a132cec06b9f7764ee24d90078660dc820b8384c01375e03c20a6c688a780d7d7fbe5837d477e8f3d7ab3ab865dacb0eedb5694d3276ea914a421b03b9d4e4f586227a3af7e8d5d579bd832450f038eaa7bac57aab996df55367ddf59b338e5d370e310124e8ef43c9fe54e5d23d60023aee266054ea66c9f32170ce97998b527073fd178ed4e1752cb9c515c0b32766b363c39c513c2e9ff6d1c24807afb43af3c5a317f1536087d8576fa3be3b007d3a77ab0422303cd0b142c4ad194e1bb86471b91861235dc336dfe9666f4f2c6a32a92b8fc52b99873f9792cb359476a2aea21996d21c17ab814de4a52eeeb33 -TAG = 05906cbf531931559cf2d86c383c145e - -KEY = 847eb274561fdf0c1af8b565a92da74641f17261a0ea4cf63ba5f36ba7028192 -NONCE = a379511688390ade6f0318bb -IN = 1e588cd0636f34b656b140b591a9adafb8dc68d0abb75531942e3c6ec1d29e4f67853e3d718dbe61b733490525c7f9ce6746f8639e4d271267a95f0940b3406c67ded0aaed36374b9a4bb8c753579051c6dc3244d6126a8a97d4a912569ba139d55dd00c380e7ec450d44f6c7b9482c2594b21f61ef8d165666c830867139262be5ad3a31f44a286d7e86d4e5c9bd6118147efc8e606c522ad0e9a218aea4daa39d1653157e4c3730240fff67a42e4f34186de1c13ddcb1e44020b7a31d21ba6ba96b3f42360dd1d754a7bae75b6fdb6eb3c76412cc1fd8e900d7aacf4d897f4224f19a1d44a77e06c95eda5fe76b11c6f5088e8ca75c87e07edc64c09a6a31371552449 -AD = 331d48e814f660516f3a796b08afb1312625b3b17218819cfdbbbca4c333378b57fd93482d971992b5b15b62f0724d6e7b9beb5ddffd3c70b6f8bdd3cd826663eeb91d37734a686c987efeb4d4906b80c5378fcd07806d2dbf3eb528472a110743df8cd96b6eb67e98b13ac506c9bda167f045a412c93d78e860c9b4bbd7a2d71adbd3530f30253847b4112d4b898b520c7a14fd075e62605b05084f26fd138179c2791fd6e8d3bfbb2735002ae12d986f92d7d300fd6f1dc12c993449f8522f6f32f506a677c8a981aef9815e83019713b2f9943acc8d5b3f6f65b9e2b9a14ad2e300d636166da2d35a6a0a756a76d08709a043d65341695490124971a7574cf0b5845a -CT = fc1f0d7309e6420b42d59740c9b9d4b97075b874015251ad55483068b00f87502b18182b140db07c70a80fd884fd79b7b5fef1d307ca4db0ff046494443e1cae83478d275c31402035f1fc24e26214b78d9a4dac78d074150012f9fee810a121d87a16d8e1eec5700e9facba350029788480a259d9f30df1c2b8df7691629314391719853c0b68614134f6028865700b1fc4e7f34ff28f449c6abc3027f38d7a7f6d84b8f27f7cc5afa09478c809eec346bb58244ab42a3bef61a14ae7640d76591343983de9fe5f1b985ce56c9fcfb2e3f6220779ca6f92a6b8aa726573b38ed7663ebe4c85066ae3f488ea3309593fa41dba8efd2b8f44b9fa8f7a427823c1228093a3 -TAG = f1832022e06228c36181856325d4eb68 - -KEY = 3828b138f72f8fe793d46c55ad413bab31a51e7a9093cdd10fddb4739e28e678 -NONCE = a60413c0ab529ccf3de58468 -IN = fec017c1c51da5ce9dcd8e84cdc03a43145b31edfd039c7c85d8811a2f58efe7a2d7590149a98cf0b5af82d3e0a325223bc9d5585ceb1afc4cdd96024be6c8064c2abac14f68e65de49e25e3e967500ce5b4504d00a9cbad1e86bbdcf65c01a7a92de27583b7b92122b6a4923b7192994a1edf00b75d14a982f92559dbc2d5e427a75ad29715375d90193ddbb39b9a52c1a23d75629c539e0a6ce822c7c08fc77dcd3adc357893215df4694673a16d34513de21217ce86897c8f0575d213ce0c66eb1d1985fe73dd86da3ab5e89df4243e1be9dd95af94f878995d02929ee42a062100d6d4d3884730f54593d5ff7b7ae53e03d4f0e10f6f4c3077206499ab7d4de1e825d532d0918f -AD = e2b16ff2b6c73c9374704ffb4cdfe7bad9eeee32157f2eedf427f99c2cce80c5aa4d9145e85af0cb08e6ed477cbe79ee168ded5c0895f9f4f939c21916b3dd5c9d268b3aabdefb85d953bce9b70732fc9acf6c7b727f78d8c9aaca9e022d7cf0f95583e81744227d87fa34ae19de44d202ba01e3d03993f38c9b2fb00b54dfb677d67e6f5a15f46c29eb5597ae3d5384b37bbeca3f3d825e2b7cceaaeb36a8c1273062259608956dd0c79877cc460d0268de27355e34b9d8d1188c062ac5e10a73f2d70fd0636304b3de06cffeedd246e2db19b8b66785f9f9c62b8f0198f29d37a4ab5280f4aa0320559810f89a1618844d0ad5f3a4f5a0e834ab31e56798b7158217f834d372c36f -CT = 88ea11ef6b6ee6fb0be77bcbf227e77508922550ef0d7534bf05668ae5fcab2f4defe643747716e7e000950e36c6cb24b79987389a150382c091d39ddf841b0a5e31d763d9c59753a3ef36a23b81f38e6e715357395ce715d30c14d6ab5b7454804ecf633daa39b6107f562fae6a646efb25c1119dd17955bb9e640105a21566345408f72f2acc8f2726a0be465551f9ae566da559fc0b92c36764c5ca20a18a316c02e606030a53450e7ae1146050a48a64c600d33cb84389b0bdac7ff45d3d1f2f669a6e365ef722d76d2fe9bef2df93c58bbdd6965e18111b5de0f4a62dbb874161bf8adfa61e9cdecd97b4fff668b3efeb3e32eeb929cf58d94ad8077c0a2ca79e80877c5d9329 -TAG = 9b47afc5816b7229213cd3c9135545ed - -KEY = 91ea63dc27d9d6bbc279ec6cecdce6c45ff0b247cfb8e26b6ab15f9b63b031a4 -NONCE = 80a134fac73eca30459d5964 -IN = a848e41c77ac8c733370435b5b6a9960af36031e96260d5703ce15b003606875a7901cd11e4571bf88dda29a627c0b98065a8b4e6d382852dfa4f47d86fa08e48ad8f5a98e55c305900b83200d44029f304abd21e0264115192a3fd7b0eb69b9f8ca7865b3be93f4ba5a28468fd7bbb584c32ae867f5146efbeb1412d3ac36c30cb308c327a6f207e30f561d6efe0a535446c693e14176e9e714ffb5a5b1075812909a362a6c4bbe18322e15690c2c9cf5a18e0120c11551cb7055b5aee97e7a56d7c24fdf1214641c8eacb196d74f3d96a7fbecdd4fe52dc7b6ead9041cafd5a3fdf91fd3614e63189b488d4d7c1ea3c6351d112a2223b29d390ac3ab7f09a60bbd3df6e0d606d902aa44244334 -AD = 47940a0694183b2fcb5e760c9ef6dbe4cbff6ccf33208337a981138f9d35c03f8adbd810e94636acaebef6791b531a65e99b03fc78e7eb48036615874e97cf762fa6ca5d880bb2c2f644f1aed70c667880f98834d501caa277cb8ef1095ff882e79c3a92ea8982abebf63ea9ed7e9a24d32cb81d5d98e891974e3d636a59e165984e00f05a040d33f07b39eccb924fb24780a422a6b2b7bddb5b316beddcf6fad20e4cee7d0141c2f7c4e4f759db8691dc7b8525ccbc3ee6071a2ead63e750d6d92dde7eb1303d5b1194702b6c3e0c2e6f9649e60eeddec9c1f71cf309af0672cd2ffcf94ba7e6c3d7cee020a224a9a956274d1d36ba16030e215d90a165756666eff066a8e51bf7d4babe8b7d8d -CT = b90449af99327afb1124bb24f1c8b5cb878423b0370d5f7cd297b28cc4135ee77d6f1913a221cfeee119bafa873072bfa79e303fe377bbed05add41ce3a42ca4632b98f40a36227de1a9ba84d6176c01eca9d33d954d0ebdf4e40f136e0f6a56156fbb33b344a8a433941fd6e08774bd00075aedb0e396c2bc37d1250541248dbeb899e1b5170cdfeaf7b89995b049428bb277c501354f8cd48fb58f6f04f956dfd099c48778dbdbb4c95b7c9d6797cf6d3bcd1d00e88cea885ee4a10d94356509e148990a0e10dd89103a9d5c8434a7bdbed6c0ac1271e0709eba144abf3cf075c020e9f7835d5a98fb2439b399e377ae6e19fc5f32df9ddfb9e936190d3e9c62de99835249d1f32ca3f92ecd44 -TAG = 6ccaf7c142d86b83e4d0b4289b49c4d4 - -KEY = 1344db082889367fd48c5f06bc39f9cb9e3ad4b92fa484ccf49418dd4caa2e19 -NONCE = c04a98e7e29326b5330818d4 -IN = b0e12e3122c1ebfdcadded5a45163a6208548e9bdf95cfd18ea504e5d2e97372e58dbfe460a57b724d38f3bc0ce02a54015779bcf127343474d7d4c1402d598bee56897203b903da5b819e2218bd0d1a2af11c542544f02c46969cd2bfac683b76a8de61698ccba63361a1a0b570adf69d24e9a7e466873c8c12e25e0bcead7828386179a4d65d5bbdb800eb52fc01b67498d7b5f9864270162158a8572eccf541b07833f001848672098c57708eb479855799567c318b1aa097efa70db0d8a8d36fe0ac22ebcc2870baacac690a79e07ab286acad9f7a877939cf2989cd6200eb86dfa7a41e969a3683ceacc7c97d1cd5487f13c439a9777a67770687657d38267a347a0b6d3aa3cf64e7f31017246e4369da -AD = c96db14dbc2aa0ce3ac63794f75c7e78037dac6763282edb307821a7938de4baa3d2e35a8cfe0c8724c2a8d870d0a462ea157e15aacc69a3c881d9c819225ea8be479872d55e655c897936c95b9ab340820264567495fc5e4e3354f42b84e191b470ca9f4d8fc25d011bf9c9e73e1590e1bb919dd2f288b26935fbfb8c93e54331dc8edad5e1cc4aec103c2f3320d59870c1770319f105ee790b704ed655be423e63ab040f1153f41e7070ae3a0f34d217c4649c180c84814463902d99a9396f8c7c85a3a4c8ae2f01737649fae478a40fc72303a108822775e9c421f945cc0eea992730790a9aa0c0d014518dab371b52d30b5a560f34946a9344cfb8a19b09ee9b123bcb8f642780697508f04983b790dd2d -CT = ffda075dbde7b874995230e1324f17894689baaa7f1354e26100befb546ea23dc74807818e43a3cee00ec1bbb95c82180489ae5f3a1c482dec28f96ecaf5ca4655ff7f33c814197cb1973cf02a0b720a5c44068d8ddff0789fc1e7f20ef408c1a438133fce4f7a3e8c85d95a381b94e949ce47a85895c4be7cbfad468e52a160dee34b8ddeef2ab280eaaed4990ecec790ac16de3c74aac6fe2d5e28ea2b66a921c894a3971cee4a2158054c3567e0d941f867ded5ed1d21d8ab090848fb3eddfb1559bf11815db52b8eed871cfc117980f297da79da31da32de3f162a03d95090d3329da3662df29e6ec9b236e0f7c1d7d957cfd54d5efc99c694b9dece989912388254798513d881e5943ce830729a8e2ddf -TAG = 81c55fe9aa2de0d63efe3f74a3d8096f - -KEY = 31dbefe589b661af00a6fbad426e013f30f448c763f957bbcbaf9c09764f4a95 -NONCE = 147fe99bba0f606c57242314 -IN = 908bd801b70d85085dd480e1207a4a4b7ef179dac495a9befb16afe5adf7cb6f6d734882e6e96f587d38bfc080341dc8d5428a5fe3498b9d5faa497f60646bcb1155d2342f6b26381795daeb261d4ab1415f35c6c8ac9c8e90ea34823122df25c6ddae365cc66d92fc2fe2941f60895e00233b2e5968b01e2811c8c6f7a0a229f1c301a72715bd5c35234c1be81ef7d5cc2779e146314d3783a7aa72d87a8f107654b93cb66e3648c26fc9e4a2f0378fa178c586d096092f6a80e2e03708da72d6e4d7316c2384a522459a4ad369c82d192f6f695b0d90fcc47c6f86b8bbc6f2f4ea303aa64f5ce8b8710da62482147bcc29c8238116549256a7a011fd9c78bbb8c40e278740dc156c2cc99c3591fec2918cdeb5240fb428 -AD = 5a32d7044f003b2ffefffe5896933f4d8d64909fa03e321a1bdf063099b9f89752d72e877291d8da12340c5dd570d7d42984ffab5177824fc5483b4faf488504e6822e371dca9af541c6a97312b9cbf341b4198b0902cd2985ac10a8b5b5fe9691bb29a88344f863c980e4e871a72a8b74f92eef68c176e9d2ef037898ff567298e186af52ec62eb7429a8004ac46b945678b82859396d36d388ec3d67653aec35cf1da2684bbc6c78a5f9e3ce1b355af3b207f64e0fa73501c5d48a14638d0906c87eaa876debcf1a532c1475d80ed3d4b96458d2236eb9f67988863bc6d5c16b96b93d898683d248d7bc601b5035fc365481b89465e37a8f7dd64635e19a0282639cecde72c6b1638e0aa6e56f9c00d031cdadc59ce37e -CT = aeab9db30a579ca54195e54a9e6c787f40100c6d12ceee35643f36ae45f618cc9bb66aa4c0fae0ec2686cb4101a5b23a46877460c7e020b38b0d8d1f533ecfa99df03d346bc854a578276d7d5685ad1fb03655683a64aae4159c9efa6781f053057e0811226c7c533967a94587f4025353b28cc3a2ce5763783b4c31e7818b8ad9195bc03be8f294f9f6ceac578f9d30b22b1f5a68d647d46cf6db4a9c3a8a5c06fa97c9efb4578f501ea96db1f40942e3f24c44a7e4070a6b931c39947d9692930b67767357015de51a39e46fff94b6019e4bc1ad9d216a571ba0dc88859c49d2c487ca657384e49b4d382d86a60c8d5195320909c4e82fc077a3b22bd4eccf0f067e66ec78eed642b2d16f0f304f60f1d9ba69e205c982 -TAG = 17ca09e3084504fc22e914ee28312c8e - -KEY = 0ecc44c9036961fba57c841ace4ca3c547c51d9f126567bf41626765cfcbd53b -NONCE = aa98b6ddff7e4b2041f29d70 -IN = e49a2a5713f507bfa00c140dfbefc0c43e37bcb932e0741db03f0055da61cd837b6e2d8f99115d70750fb23685a17121b52e98a37c87204e0207729fd9219d11a48e57970d790338793cf329f7b239512a44dd4409fe9d157f92123dfc5cba24af106442644dedda87e1d9e95fd395f2f0ad8f7d27f313e6ce1a07d9845dec5ad732e6e4749b3a161527c8ce42331f5de1d700650072fb68e9c7645a0e0e529d0563d2727e3fb38ed341f74ef1ad95a0216a440e1384d0e7ef71cde38cecdc9e2b2d563f19014c40c1f92ea0af3b4f6da9146d433ae85f647153db326a28ef6ea2e0ebac0cc1aff157067c7dba7cc4317d56920ee9deab5764368e7e5b3ce8bebd0fa129f869b15897c09659c53188bf8efb7b6ac7d265c9b85fe96166 -AD = df41db4ef5350d4afcaa88b4a577b3370b96699bbd73e59aeebca6ea856cf22694a9399ae7f97a3bec226d82f5598f8949dfb92530dcfe77770f066f2af988fba5543b8ba7655bc43f8dca032981a34a1beff695c6908169d475c55b2119fe5578623f68a9dd85b653656881b0db4006d3336fdfc784d1805e48ff478fdc196601f044c9d33fca3ddde2db0102f90fff0b370f520e00e3786c2a9b0b4a9a7ea6f9d866f77d870c8ef0f3a8bedef17949a32598512af665679dfbe71e1c3efc3dee8f5d4499e20dc63281191751f67e51f201973a6675896484527d66bed94d6aaceff65fbc4192cec19452b8873f22d72bf2f4981fe656285cb24be5c58e77dafd3e096166b230f18d3f4197fe16f6ec84c060ce0793ae6848311a18b7 -CT = b15b2bc4b9e8ecc5d9c4a6359a805b7590bdb4bfaa9b3fc4d7676d721edc4b3b1ef71b18a3d78f1b31a477cf25e55b278eb3ed774805ae8e5a2a0204f7291d9587663c4d8b1b744154f3b7cef796e0b91590161f3bde82f1d8139cb8d017606ae6d0552ba144788fd8caf435ab09a43a1f4057776af49bad98fc35cefefb159cfebfed76f2e4d18b7be143677ff8b3d6e2b440fe68475b5a1193bcd19ab157d0d2257f33de8e50091ea3388648c3410aa68c830566a0413d92454e4eff433c3edc74e8f7516ec17b2c01cf57a2d7c48db97b706b8d7da0b68051f2d6a87c417f46cf217a48611980890f669d39b478c35d834ed2c79299df2381a1215d6db303cb63e2795fe517649874226e0a6dbfe2c86370b9fbdd8c5de349bfa25f -TAG = 7082c7ef72c82d23e0ba524132acd208 - -KEY = c05dc14b5def43f2e8f86c3008ef44e4dc6513768812e9218b2b216818c4cec6 -NONCE = 5cfe0dca6e599ed9aa89ba97 -IN = 8a06e2997b8e5f8040b22e07978c83c48d0f90bd2b2f8b426b43feea0b614d3b0681745ea4224cabcaa25ca45c3053a6300c47ffa4f72e838db135ae35c27939aad4cf7f75fb61daa3148d869057598e4e8b44c6fb19b0d9281e18676d8bc137489bb77a51a3a8f807a896d558f00040e8729ea9bbdc7db6102c8b99c8a1eacb0735577bc6533cd1d8147013935b6344116090a1bdef1f2e38a877a50c8fc0f394bafede31375c57476ba06d95ae734e6dae771a32e5091dff71d845c5f7385b9b9069ced12fcfea34a510880b088bb0016e94a5932c89baee038cbafbf06b3d09426afd2d5dd5e392636362e9ffa9186b5c753eb84f82f68fb1286ed06c58a5a936cad018ebc4269037b49f2ea0349373adea99f06062e5dbb0bf94f2883f5c0556 -AD = f2a3f7af8ea984bbd85953f14202c6e478f98d0bcaacd414329ec480d0c29fb4c1a052d3228c883928448f0bef12cee5b69829b4a3eb4680084131867cfc3d3af84fcc0d80c2292d3fe02405634f6cfb20b0fb90345da3a557fb30582175c32e432be66ad096f9425ff4060df54d6741fd6567a1e2fc5f6f3ed95cefc806ff64ae91ae82920b5c829ea026f83fd90d760e240da3c9ddaafe4d08507f4af1049056dc6d09657779a3dbd889d851e97d4ac60dc66df2d24979ba8947a7890a304bb301d0d42b67824e0c68fc882e90cb6deee50c2e3d9f0da59ab23c997b05635a0d56c71fc39aa0e6b19c43a7fe12d4e4145453cd7fbd8a3f33bf5451addf05052df7ef044a33513bc5f1a4cfc8b68015664bb5c8e4bf54a85efff109ee96af75d4a5 -CT = 2cf630548d6f2b449057c7861920308958199f77b123a142c6b7c89c4982f4ed0efa2fe899914ddbf4543e70865a5e683b0721d6c8443df2e697acf31e11c8809aba94196409020a7c64d396fe136826455aec973af23a6c7733cb567f5ea550e50e0b796623a97807d042855568e3c568990cfc818c31a1bf415337f43e9baed57fada2fb2ad3c3543f2b7f2777e03f84040c1c854c310ab1cc5dc7f2a5fb213af79ac068b46c7d9475bea126adf079e2100bb57904a931faf248e0f7d5832ca83ea8a283e0136979737132afb1f4ab38d307ac0774814f4d5ecdc4aad79185c05f8a706f579b78f2c1c7004cb38e6cd22c2080735b34c3f6134955ed3bc36b1ad5c8e33209c9f3c658fb07b59b6002b2526cd8d853a5c624b7108573d7df60c827 -TAG = 3dcdabcd1c82002a551cea41921570e5 - -KEY = b33f449deccc2ef0d7616f22b4a00fcd84c51a8383782f66f1696bc6405005ee -NONCE = 6afa8baf923f986b5779ac6a -IN = b0af85a6deae5fcaa94778bce015ce2da7400ab768f3e114cc1b645fb2716789e2aeb96894fda6da5bc24fcf2466124720d6ba99e5475d77e5bcf2c2f8c8e5becf5eb73ad650861bbdeb51ba5ee789c227478934200fc18f36e4fe392c99d4c3fe0b38b40d2e84f831b8ef9bce9ac1362c755943521ecf5b5cf8fbcdf08f2d47ff7cd62838597dd342695a1b037bcede69500bf70bf1edbb40a17b44695bd8ff8bc8664b3211a6bbfdcbd1bffbfb1a2ea0141cfbc6ac841c803b137be5eeb2666c46c09cc1c4fa82be43bfd56e7a2b8ceeecb6efc1933a90213a0e1bc7aca2af35f2d1dad5f0d9002561064a699f1ce76c39d9c2224ae596e88a1517e19c2115370768d50107f3f2a55051838ae5897acf2ac0814ccd864eee2f6b5d7a6728c6ac6e6a57327102 -AD = 2134f74e882a44e457c38b6580cd58ce20e81267baeb4a9d50c41ababc2a91ddf300c39963643d3c0797b628c75a5fc39c058d319e7d6deb836334dbe8e1fe3cc5704b90c712e1fb60a3c8b58d474a73d65fae886394f8b2c029e420b923f2af4d54c9de3c7fa2bccaa1e96664ccf681cacbbf9845069a4bfd6c135c4392d7d6be338eca414e3a45f50510718e2a5a3e5815eafa0c50172cf5f147510645d2269929843bbbab682deb5823d4cdf42bd250bdbd20c43e2919d7a6e48973f43a4cab73454b97cdca96721ebd83b6dbaaec7e12cf0dae678a57c431b81421657037dd47dccbee73a41f56495fd7c25c75744fe8f55cbd1eac4a174d8f7dd6f6ba57b3e53449a9ce7806517e3e07cf6546a0fa62c7b1fa244d42eee64a3182461792edb628e567b23a -CT = 0fe35823610ea698aeb5b571f3ebbaf0ac3586ecb3b24fcc7c56943d4426f7fdf4e4a53fb430751456d41551f8e5502faa0e1ac5f452b27b13c1dc63e9231c6b192f8dd2978300293298acb6293459d3204429e374881085d49ed6ad76f1d85e3f6dd5455a7a5a9d7127386a30f80658395dc8eb158e5ca052a7137feef28aa247e176cceb9c031f73fb8d48139e3bdb30e2e19627f7fc3501a6d6287e2fb89ad184cefa1774585aa663586f289c778462eee3cd88071140274770e4ed98b9b83cd4fa659fcdd2d1fde7e58333c6cf7f83fe285b97ad8f276a375fafa15f88e6167f5f2bfb95af1aefee80b0620a9bc09402ab79036e716f0c8d518ae2fa15094f6ea4c5e8b283f97cc27f2f1d0b6367b4b508c7bad16f1539325751bd785e9e08cd508bdb3b84 -TAG = 1976d7e121704ce463a8d4fe1b93d90f - -# AES GCM test vectors from http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-spec.pdf - -KEY = 0000000000000000000000000000000000000000000000000000000000000000 -NONCE = 000000000000000000000000 -IN = "" -CT = "" -AD = "" -TAG = 530f8afbc74536b9a963b4f1c4cb738b - -KEY = 0000000000000000000000000000000000000000000000000000000000000000 -NONCE = 000000000000000000000000 -IN = 00000000000000000000000000000000 -CT = cea7403d4d606b6e074ec5d3baf39d18 -AD = "" -TAG = d0d1c8a799996bf0265b98b5d48ab919 - -KEY = feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308 -NONCE = cafebabefacedbaddecaf888 -IN = d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255 -CT = 522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662898015ad -AD = "" -TAG = b094dac5d93471bdec1a502270e3cc6c - -KEY = feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308 -NONCE = cafebabefacedbaddecaf888 -IN = d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39 -CT = 522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662 -AD = feedfacedeadbeeffeedfacedeadbeefabaddad2 -TAG = 76fc6ece0f4e1768cddf8853bb2d551b - -KEY = feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308 -NONCE = cafebabefacedbad -IN = d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39 -CT = c3762df1ca787d32ae47c13bf19844cbaf1ae14d0b976afac52ff7d79bba9de0feb582d33934a4f0954cc2363bc73f7862ac430e64abe499f47c9b1f -AD = feedfacedeadbeeffeedfacedeadbeefabaddad2 -TAG = 3a337dbf46a792c45e454913fe2ea8f2 -FAILS = WRONG_NONCE_LENGTH - -KEY = feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308 -NONCE = 9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b -IN = d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39 -CT = 5a8def2f0c9e53f1f75d7853659e2a20eeb2b22aafde6419a058ab4f6f746bf40fc0c3b780f244452da3ebf1c5d82cdea2418997200ef82e44ae7e3f -AD = feedfacedeadbeeffeedfacedeadbeefabaddad2 -TAG = a44a8266ee1c8eb0c8b5d4cf5ae9f19a -FAILS = WRONG_NONCE_LENGTH - -# Long enough to detect counter misuse issues such as the one in BoringSSL -# commit a3d9528e, when the AVX2 code path is enabled, using its EVP interface. -KEY = 53a6f0d9b8a81818f2fd7525acd65acbaac82684cda4fd357b1ceb6146b31ee4 -NONCE = 05d8a92b5a510c3a3dacbbc0 -IN = ac0ae17d3d0ee5935e18675c36d9e43967f6da38dddec14c7ec574ff8473e11ae5019e638232323c175b7672a7462df6709f5014bbe12a1370a1ffb570177927106f995dc8f35bd6e6228de7c16acb71e583c87477dcc7b17a908ce01543496c2cab8a14a21c43b18fab52d8a882dd1d999b4275db34c7f32bcba624d128580d7566a2da4bcfcc4136d58816c437d21e90456fc86381b946b8955f0448e83564165a629cb2edb978e5941010ee9153b054ee429b315058334ad7899aacedbc0bf423de69f57c633b56033c6531dde29258694045c46a797987471ae6af8fee8ad0c1be4149605064aaebafd1c5592e61beca9b5c7771410a276c3ae517490735ddd6af499ff705b9fa68d50650e60c19f5ae2c88dbb6d612afc7be28a5f55556a2163b6f66609f7d9ba7e97c074ea39a618727421fbfbb6453ffeefa643decf11404764515d28fce8ba66b8c85d077c47a54125a38bcb6b0adf6d248ba0a9ea129c887c66ef537c45e9fd3c17ce352e3936cf139e13a5946a7dc9dcb6423ca6a051bf560cfc572ef366940e71c81aa302cb9701f9a5206e9eacfe9835bdacb6425d058022a27fe73e5edeeba98c7a3edb761578ab2ad5a442c2dc1cb3c143c6f18dbe525fedd2a9cee0ada3b2c116465c5cca9a7e5d4374b29aa4ad8adaff8d6b0d1ac3990685240ce022faaa07241f9ff445566b9e0463350792cadcafd5fdf5c37706c0025b3c627185b356d39dcb2244b15566e6e3f8942f730fd6d855daa1456fe294f9156c4b5131e5bde7f2d938ceb6c7f5deb0f847a98b7fd11a3f5d0163eef9bbeb83cfc96dd8eedd447901ff4d3a35c0ea1f691b01385eb39fd265f756bbd77bb61b1741db0502947b4b985382a08a5916da809a8afd3fb1d78d9e16f8e37f51aba100d031d9da8613e9cd2cc621025b47150b3e76775ab23412d74334bcd79746cf601407481310a923047ac68a4e6a7f7b96bcd85bb6f24e38f03c80ad41a0a581b4246ea4715ee561cdc5384a51a6fc9ed8569ba6b12bcd95e6202ecf834dd9062ec539cc8cc4ed64ab9ff85998da0e63161e7391b14de47dfde41523b6c614618bf2fd1edd68a5de1c03c4181569b6c361d955c637abbf4efdb5dbf2f0dd2544329c44b77081a48f53231fa9d4cf6f2186427e469d0cfbcd698f7e7cf773240dd2b807a2fe699f0ceb4a2339e9cde01114b2aa5c3591a82a3a27b308e1e7f092af8ad97bbe7b28d78ecd80c0c0a28372193d66bdbadc0b58e4d5408acace53bd5e12101fcb25754f8c545340fbbd1328287044a29d18f40a24b4084febebe228b67cefd970df6d44ffdc033a50534e5977bda660c589c6e3c3a28b4c500b29ff4a1c3eaefb068784a29914ecab7868a43999833b0b37ae79afe58875a0425262e0ec7e10ee8a6bc1c97d332bc2a6195de239a166486a3c1ad8de3a026e5b1757f9a778a511024a260c9809ae3b22d78f18ac483281a796b1ccbfe7a9b9f357d12d340e20bdf2037e8bb91ef858cdf2eb9d7161a756d8c244c55524f8f5be2e4f18641bc4c2409c14816846c4655be716276d8356e516640da49e8412fcfc7ac0e084a079129b23e54952d8030e1f8ceaafcd322dfb4bd189bb5d940ac83231de0585783387d0642a245183f7a251779bdb12c63e9edbf3d0c94281140598fea9e73e951ce650c984cfb1398f8813abf8f8827af5eb64a65dfd1305bccc45086438ac439a9265790fb225c509ce3c9d39e25d2276d7f3c06d7cc28d33b2c21bb38b50dca5b10afc09da83ba12ee878e0f6054e8d3e78d731671de4f9d5a7b97298b01f37c7e78e5fcf5188554bcf5d42559d3b15153bb3cd5a0d1cc4a96d02ae8b1b115d1ff617b6ad894ce0585f46a2a5f4cc1b83065c1d7b5d2f25f3f4bf9966b4c7d7156931861d5edd199c126f1ee4ff6345023419d0a4c87f3388fcfbecbb6c1e2f4745922b88085d21d4551e4c127eb423db87a51c9f9a140f8a7415dbd70c4b0173e687a40f895404f2203e14ccd61e0e5b0d5aa3fbd1c8affb5807d787d840916ece24c56c50d3d9ed9f19d73f2c80c461b5b3c07dedcdb41402c3826a958d74be48382dc741dcf3e0eb8955397da33941fc47288147736d778914a57effbafccd4cf293e6ed1c7d19b55433bc0363e41546b3638a4c630eb35dc6a074f90185cb9daaa6eab54825a4daf76f49ad918e90e5777a826d6d5d52f32f7ceaf818f87251ab4d1b5406ae94e41cc97fe022b144f26335829d9c81725b3daead621a0df71313d18214ff8dc687a7ab86b8eec3070ee1ca9f62005a0cc15ca6e2f4fd893de8fd91f6210f6c96a576024678535c962a2dab06f56be377dfa74bca089adb7327abd05c3ad7646b5e9e6fc2f29916b34c8642f3c0caedb53b8f30c2a77d1757103b7ed156cdc703911366b02cde87ce7343886987f7a8c028921a7b87c5c0aca7ada34970a6d0d32eb1b177ed8e64c1fc6839b9d08acec19560bf4a815ca6187635f0cabb8bf062e8216d3b09b7abd99e956734129e16a7c4f3beb850fe2b1548729355f9015c9bba336d3e26a27b3d75d75722f7a8170d15ebf77f325c97778a5a9d7c76d3e101eeae354e54e6fa60b58cbdd900751854ede326b58fa5caca073c630f3719d6f52afe675f10d464e8b58e5fde75a4f225063ca48d76efd1b645e4bc89d98215beae765601f635a3bc8cfc08d74722f3d95ccb4cb4e3ea977d0c534a4abb866fb9a31771222cfd998231c30bd16b6844ef71038b67d72c910cca40db7260dff0b74162449a9e2cf15d7dfbfb3a685080e6c83ff4341c95819c0317502ed49af7ae688b52c9866518f74d69b4144500ab9d5a0829b9287d5fb67b78801119ddae7a76e80be8c4dbcec7866ffa7d081406e51cf617be061530b539cca7e1ef9118cc06e8eb2a01425b45947a1d2332e360acd0654bba8f1fa43ece68467690d36f6802a32f03f9ea056e57fd548dd4a3225ad5006c6c931aef1990639498dc88a23895ff1f75520a8009dbde4debc20ecc546e378eb7ed5ea3740d2244036588471d96e4751390b6b76b39816d853944cb5677b493b36de9736ba0fa404ad4b3a7d7c54d0c15072c040064b871401b25b88559d059a9519c7e2446b0d110a4aba9c12555e5f620680d1fea2359bc85cd15b5c0bfd6b3715d647514118cd60483dbc9c83e285192108f4ea6bcbee1f0935044610c68d052ccaba23258d09465d5521e2664d59358621ebbb8f28a4627362c8397f0a9852e5d8daf53a961d4ee66299e2b54d8adf5134ceedef57011f810aea76262422236c3e1a478a759584c7880fb3f32389c4bd4b637caad7b2bd6fd295aefb150754799434e99e0fd45c1cc4698ab14d1f63eeb06e53797cbdddd45e7f87e85b45a3dd0df6335c3b1addee87ba953bde29ed98042d745c1465a967ef922993798966e1c8b96ad6f68404136be0caa2264e24d8d93aa1b99da9316c7780904753d4e0b45cf282b43a0c91bc9ff83cb25cacea2ea72563b2e759b69cabbb6a50d6a0a5ba545622e5ce576cc301ba35afadbfd1e26668782e1d741feed8aae894b564a425141442fb8470b325cf7c8e1552973463bf4e67a2ad58d15417e418bb91d2df4b1310a0a70ac744bbb4245efd2ae642609079a44cbf6be19809a5ff7ad6847432368c9749cfb336ddcc0e6f52a699b910cd24671f38af5dc39268a3c87771f07d53bf220b7c2d5058cc7b0bcd492abfedf9bb295ec304107130f0e98dacaac6dab998b511f176d48daeb81db53643ad194690b6e28c5ed2927e09a1e959c494b90db401681f67bf1e23fe9ef4c903f666ef39332a91a25c63efe9bc518e9aff61842007dda72dcc0264aa47543c0a8b1f0d25749ddfbed487282241140d4c64def1831c4d75ca975fdb03258ddd013445e08bfb479a516b011fe3a12e4bfca439407c0022889e46914cd41a4d92a25eaa57a55bc7337e5fbbd11584dca34adb5643105c8171e53cf04b1412c3107e72330ebf1b52f524b4e72570cfdc0ab179991f3782d05091ea57b1a233048bf062e88939cfeefb61e8beaa90395faf61c4d974b23723a4a5cd39d70f92620f8f4f27bc99ca67bed7fb6e594913991ca3025480ad791bc94a0def36fca491a206440ec31e32bb85850c3606c875708309be63c2b4f5c477521aa08e1d059cedaafe4fbef5523b79f88b57d0c81bbdd09202095f10f13e2609e833ff41b862b2214c22e8f2b04a363b38d26bf95c07b184b9f909ad3a92122e158d3566d2204b22d4f2f3ce11a65544ccecb01a4a5ef62bc969fddcb648224a5c7bd94f8da9a7d4df393d880f537a377888874c19dad357a0564d303a5c1485c1451ea55d68779dc0c11c7c38025660684ba3f70cbbab00d15b34c0f2342207ad548eacb32ebad95292e85211a8669b586d05b0d0b9f278a35ea4d78e97fd5dafca6b72d8e1fbf3e704a60a8ec60befe2e3e4d3d37f9d33a0feb88add59f0171ddeba0b79a52feb9a1f4a7a6ee7c6927bd10968fba788a807409346a0fccd4f7daac3c8591fc689aed881829d479e8d360cdb5819d5eac718a6f860f2d9ef6a0d36ef6e10efbb37819bb7b03ab7649173447b2cd47f3433a2422b1611dff91cee0b10c6d060d4e84a9e3f4dc194514cb67f1e3985be05c845fc92b41955d0f61aeba6268789998bbf341a8b37af48f07b13a676a11d27330529cabcd52365842be559857cbc2a63a4ea1c77fa8619040e79705c5b51f473e13b73fc09c28598e070dbbb63ce884c2843ec365d4c5bebbf815ee3314dde0bab6b0a71a398e2d9ee8ba2f832863fae7eb0c18adcdd17f1dee0df29a8409acabf516c8e6dfea5a264c1c6657f774c86a14cf96eecac18a41b1650a9e652c6c9264b03aa2fd30e333a9f24cd6b0313358e3c00943a1de63ca970b7da2cb8a0fd1109cefbf12176f5dfb59457480428b194e88449bffd8b8d87d05d30f9ffe9ac3a7442b0df3418acf9165b14242489a54b6b47ea543fed5de74a00f61ab2af553b60d8d21c76c42052c72e4841bd94cf88185c39287c04d05f6336ae581cf7528a59b2874795caca79f5600ac64ad5820a91c711ae5a1c3762028242c5c8a9aae89177ec4db5785cd07402d45805a2e2e970059e4e6483074df1bcc01f57470fb66f45ab475ebb5343b727168e355a6c25d42384e39802d7b4a8c54ac94d82de12f8de13630ec8c19f008f98c505dbbfb21b363472e23d0147d1ac555f0981e2bfd07c62d097acf930094dcf239a40699421b207ac2575b7edf9b1d772ab066362820c182c2c5097a47d1dd25ca9e0dd9c3ae94e9a8f0dece74cdeeec3a17803d5e11f037820ea20364234079286a7c291f3424292b0eec3e956513cc6b078a76a3b8ab42c5fb5efdcea1d438f7ae08507275b48f9588a15be763ad094885269efa7330f6fc9d4746997c98d9f5feeb6dff2734d75afc6a11196b35bb9fd0c0af428cacef0df2c5ad4e5fb4559f0f93af2fafad6fb77f453238f409ec71a912350d7b62952e4858927f620d31569242615345265ff1cbbd7fdfaff35a45732628da663bfff3d3af3d7b537337754554458a2d1af0e16aa8ad9436096f42e243109cad32fac1adc58d714cd3d0d8483c783006991f3da263ef5ae1ff2ea06584e45849d64a07170675c29f0b2abcf1eedbb63b6f5d9dba600996c7d5edce9ac69448d05c0704fb9f84e831b60c376b8a5d33ea22030e2dd3dd421d8e0a810a77c085a3861fcba214a8baf592d624d673fb34f906581d923d80b06186db8ce5fbef2bb750166f7556adfe93d4951a825d55b0bf92c9f25776df784f6aec808ae221cc98d05ce988fe6a13ff96083dba15500e149409b54345274e3633fa8f6685d6fed40c20a5c5705f8b37099a5949846ca15def5a6a427eb4eec72747f116366adcb9b74d3de0b125bdee23ca98ee6312f41fa3d9bba43a8d343552c969c41f766ab4341a42ec4cd6f4d1d4c4b1f16979e5389fea36a150580418d95520506fe0cb1a1d861e09d21c57d88c46e10a3c5ad1aedc8f2743f5c06f10d6da9b2bb3ec783c6f5788ce9400795022cdcec197f9dd3ee4cd26531e7f057b6d9418a0c52ecdb35a24a2a079b3d396017feca8b31aa55e3d5ef79c9ea9ccc7e3d0b47f28f273276666fa1763b3a452672fedc94557d984c3353344a8bc9fc833dee685e33d63540d0801d8068cf66cc48ddcb0d42cec881eae36fc2614f96ad67fceb5c98ec33fbade0e3049178d503c13c2d5d71f32f4582d1cb0f47a2ace578b903796768a906998bed2995798251d7eb92faacc19255bf12c0024a94971c185841113faa288beb7e58d4a98289630fb3d230f936eb1b9d9c7b94b5ac9d3a211c0b454a26e29bdffb522548a65e8dde3730918fdf0575245e71ba013ce08f6e698342a61a81b1355d2483e97c06462cae1cdc7787f4bcee4396a08dac9c14981f2a8f4614a31b019c83782d5d8370acf9db467d9d95e8efbe44274fefde5860c2333cf81593a2ada9f5bb6c2362ba97fd7c3e5bc836c327c66b57c0f023efc0c0ff6feae0e625df2f4e21057060170c844c86412700d7d337b1f7835a0dafee5206cbd76104c5a36623c7783213f8dd457b5e69a86b74030a27b3c30074242b1d97e65a233885a681ec5a8532bce9dca1998dc32c6b40dd997b99a6ed6288e0b9b09447e356bc5345b2133571e65d47db2c736a391970879103d4137cab6c0724b8e67064167cd5521f32135fb6ca43c1e118adcded8227c9dbfdc18cdce154108eba5d8c60e5362e8fffc5c9ae6ac2572188617e4ce0f432e2476c74a4227af64b58e0ebafaf0b1ce01723ecd36a2a4167b7991e28b6a9e81992fcaf7b4b906d0361add02104db83914f28baea26b50561faa46293ba5247e8263ac0347509c36405747866d2fa2beef44f366108f6a4047e282a477c28654511075ddfaad9b9844e18e67320a831e647d923b2720d65ddd9ece165c222231d3c3e7f0001d15e3c690e9831ceb369a8edf183133814bfd20dd25d50973bda58ad03c4cbda8008556fc653ef401ff76ee858c1f79a0b09b4232768e72dd06e42078923d5647cb310bb644feb24d6b7e9d1167c3676cd96f79965a066aca314089db60bdc40c2be4b69c569ec76b3bb74a43fe731bc869c9222ab5404304a513d4f7d2ec5af278f7c3d664fcde579bba7bd472bdc00a1eb4c46ff69fb7e45e5712919e8656a8887afa28cadd66461fc57f53d574c92105818a89f210d7e8aee6de2e78228b2cb03b850a6e77627f70f51bb919bddf61837a978dd4cec2db138c657214ac07b67134bd53b071e2bffa3608a0b0bac88b0ddcfc1ba4dea17191c9ad76ab8de72118893256a7e13e15a3bf98bb5757a78c58328cc4b380f3786f22c6be81884d213ec3cc2784583a47a4003a59ebea08bd06e290a892c937448e664dac672942b068b839593c442f6e1d22875e01859cd24c17d108696a3196ea4794ddfdf25721d3dd3e754d1ea884e5086479819452991403a39014297fcc734e56f8daae4d49d5c47016fc3ead550783df895542229ff3b034b5b722ae2a2b04ba70e42c174e9ddb89ffa60024aa16f297ac9383b2ccad53de4bbe4ea2fa3fe3d059d16b4b4fe9959ba3c4e58922e7fa2673f50be5b636ee7c79b445471ddf5b851ec3ac505980bb184c8fe44c7776ae9aab4e66ce31fe1bc00efced390a82f96b4866e31ba3ff832a25b1e1d00ec44bf525ae523b7102ba60c1d3a2e2bed004524afc90a064b325a258eb36315b1496c748f5407e922914787acb8b47bdc495e521518e0637eac4b1b4fe1adede145181ec7ef038d48c473d6f296b349d7cf874d329c71f272883eb7e77ff303957e159fd417d5055d82687448950dd149e1074a1785518ebaf7ac167e07f1f559893a20d133b59aa294efebdae1e19a30ec9a3e257203eb9a854096395825ef4d1e4ecf1f8daeadfa049ea6c435c50d67fd21c6f6b11a8be46502f0dda1715f5349df5330454316498660b7996432e679c73f1af33e529ac669496bde538890cc093122842e3e2e4bff937708dd4b1b1d3fc066a63824266461e4af9245032d690aac0ea5636c29606473820ee57b112e2bd68c0ce1936b7e76a7873cad678b26b560d7bb10a7dcad3f69bbf226faf2f572c105741a121fa1c55ff30b2d0b7339ed9aa4c9a3671e6e4b572800afcbc8764b16f0a61c4c1ff24c3b64992cd84f39d1a4d5532a7dbd9f7bc847258a33c509a945e53236cbc46b61fc6fad662c523eef0c1eaa4bc0a49610c8d09659e7bdfa858d2494dc3da0a54fcce229951d366fd17f4120f27ac77e5e6b777693641a853eacec09cc4dc08ff6ba22295acec61c5e6215eaf2a3a012461eaade8faa9cba630c5ce2bee6f1a4676d54b4a38b7b5cfb6c98106a4882ed88153a4f0bad3e0f3d04dc1ae5318e3b8f4ab1d122a548eed47f70edad1a164a9c5c3eb10fdecb24b0b68005b2e958980481834c4f673478d3f47d07836d3c1c513dd920042381f70f1a68671acee2fdd453a7552eba497af27127999a13a33104f0086390e01635d1a0b79d92dd43211c74047804e82d9ab26f97ee88e664871dab52a2a79443e39f06a6e8ac9d5e986252529b389d9ed0b2f55fb16ca65f6e90cc9a149065f499630f973996c1e2b6c53f2ab391b7d78cc6926b1684d066a3a74b86b3b633baaf3730acd28deaf18fb926e1ec9c1f8a2345103cc4cbec05345db57c5adcf062412f289607f5fa41194f69bc2f426a30c7a6f8d1027ee8dc96c9957e90fbd9b16475b82dfd8698195159bd7b4860004beb1fa85e6843eca1acbbb0b8c7ec0b865ed108e297a2d5f915304167e18d01e51497e6e3ea76ae99bcb849f7595fa74c2a6263e2bef65f1063bce05483980ed51eac5289307117f17e99d761337e9b1fb625a1b900e6179f3b02de57a0b5f52352298c8a2d2c816182ec169d2b9c0490097ad98e2edc99c6df683a4b5b6eb73ccee0aaf07e8cf8f2f632381ac407c5c578bc1c5a8d0915dc231b01b92dbd25c2bfd412995780582793736572f1e23ef690bfe6872c2572285cd737a4be91f4dcafef09232de77b315d73f5beb23d03625e031d2438081222b063c343f52565ae314ac47a4fe518b45d0c12f2ceabc5e05c20f607b97035afbe0e29249e47961d9cf9b385c065966b0c7ea91cfa9ed1b55a58b9aaa9de080ca05c6405fdf15bcef74177226eb225a47d532bcbc82a5ffed7fd86c2609b146d86f566d0b84f638d46d6eb696bfbbc62c4fc981a94c1d6ccb9f3f7ed7976ea7e8ff1d2a2d79986fb27f1401f25d5a83f64844fa9e839fc8855007b417b261d325b6e7cb124b27ede8ad18d2b6da8bfc4d4f50c3960d5a1c82e4557b16d05471602d2a31462e4bac9535c9a57389ae0613a674815c2ec10c19f529c9274896dfe49ab06889da517d482145ed8f57ba4b7c0434ce24090ef2459682a4f6342ecc382b4cd3409c3415bcb7f1bbaadfb7ec308eea8b6cb2912469b707c99a55c1754db0650616754735b85a41433a30b28e3946754f90caeb03c7579fc9982e6ec5501d6f23e0f2b6392acc435907d79ea11eb6955723a81c4f02bfc78e2eeb1d0408f8f06b4d2f6d20d90f7698c4e58bcfa993884424f8fcb602ef35d23737fb6aff220927e28c19043ae708fd9755256a8a1660d9c5827bab1b836a10aa23aea9c92fa3b25428b3791c5d25f3f1b63befd5480ac4192c966350edceea8938ecc608e0f063d16d427049ad62625f5177470e7a0d811e8d4273aea8f7377d51db07fc34d9f18497a0c2b5c0bc5e8778e06bf7460f0487eed54d661d74346eeada9090957159b86f8b68183e33d0c3fc134d87e068badd8789d4c7adb829fe08e4558bada5ef3f526afb2c7b6184244af0d07aa5cb525c519ed32298bb6241d900ead0532b0b1fc77a6577963e7a44627ed326741af254ab957ca0298a74323d2ee4f1bca70e20ff796491424e108e03c20f2eed7374c0aa2474a91f3ced6f46165c886a510734d606ceaa08822bfced69def33cea3662512fb42ecefee341d1b499b826ad882542374b032e907a7e6a4dddc4620a5d1002b5aee25711fd2dd6e9d4e90ee350f2889d6c1f4328e4b711fc919ef3c655311637b83b4eff39c157e0510807ec61714b843bc9eb22a0f4dac7e5cc07b8e9ed587b701d9aca2a239e76ac9a16338b74d50578956e06b1ac35ee3b822ca779922d89de7d915afd7d80831e8534b8f8a2eaed252fd862abc99aadde62d4520d9a7c3c3da86081fc36927de60e3479096a2b5025b9a789da01da969cfb0ab2f252c82db9e6663dce3888146b365080f649cf94f991312817147d8f0d1774d8d44ba4afd846060df2de1d1043659c3b94b1eff51fff84e5a81a0c635aedcf677285e0d722e3335449fd0f49a41264fb963ea5bba31dae469c789047812071d8853291fd8003cc31a8968ce7acb68a6e0172ba6ee0e9dedbebeb62143047336c5a91c77085afb01fc075938b306d7e36383ecdfda55b9b5dfdab53aa34000289c398f617a146c4a06404737600484d8d4ea960061ec2cb575dc485f65f275540d0ce7550da08417632b6f0f7d044f6f719ff839aa3e5c9db94d45225a1cf0bdb0c5bffa781572ad605ad37aa988240858c9493dee9f00ed281e93532d89aba5e9e59ec430cdd5edfdfc2ef65e094eeab71cc40b59c997943a0e0dbbc80f1e11834bf3b53153ba1c1f0ccf63b3c802439b2ef1430be6994300d9b2efe4b84e25bd3bf8a566d4851e7fff57cada544d722438e8980a31563ef0558fdd8db9bdd6f1a3e34f06104b680f63c1f80a08ec6ed74bca69bb1023fe63d24c7e7a14ce85db6e21173f2ddf14f233f3787a37e4b347e4d64907fc0a23c3da017c81c27df9fafd4695886d0ddec8c47982912eceef886ab5680a130bfacbf3c67bb4f0cc118274bdfed43bbc2ba56f048d6a390e48932469b30ac84fdfc2e812f32d00a85349bb22f2d8091e64282fca1b40811db756059de5d03861d6a22cfc6289097d23c26c5e3f000f9b34a0e1b28a1269d8673d09107b29ccaa1adc8939bdca312c69ae4a238f45410d8f1b27392d594ceea2a6b42899ee5c5857965b29bea1bc413da618899b1894f2adff3b3a7b05a626e50e42379f5d0e0a148ded33d815f59d1401b197a85656466eaf88ed30d1ad4a87985570291efbb3a2c6f22c0b111e65c843ca3c6179e94335f0f91d4696e1a31107948a042f55f264c32a35e719668483957c9c8e13fd01e5f751870a509f5f06ba41ad63cbd5f706f25b1e598f6c9709ee6bab627211bc38494962e930779ed4ea2a8471d309c4c4f0603238959cb13476b673489696c87ad9da5fef0d6467145a77ae0b1089c8626988278a85be3292680d9d7e4c6866f19b78595d611f15f9a5e37b3d145d5aff4a5b58a3286bd25a862904817afe8e9b9105584af15f54554ca5e7dceaa0fbd1111aae126d74f68bb6f0ce98094dc9a59a31d9526729efa171beda9ac5b7db9118aa94b9b5ad58dc20ae1c328e31269244d636139 -CT = d248b9e47c303f735b0d29f6111a742d93509ae051466688d56b587104a74fab1b259da64475fc0d2c3e28d87ca4edfeaa5715c23dc0e5281eb0c0c14e22182bb02f9f7d3c24555cd6a3ff766c774e67730a920db5f85d47dc23bbbee460f0922cd7ddba81ccbe727b4b489e79a19db2d012dad2a732273dafabc0fbded3c47dbe5b6b585570c39eb62850dc47f4aa0c29bf5fadf334041fdd4658fa6cc29a81192a53dcf47c03ddca9d03b33b06e5b3808be77925b7e7d8cf51fa939e023161d969f92430917d73f3aa10b83d5b7402410280561a27c376ce0b5151a51be2ef4eb9057eed25a0715436233615dcad1559fdbd81042544441857cdf46d72f5f50ee552cfd3bf166c530e57fd97f34e2e71bff8a90b30b4c4cc3e843b0f06e4eb2ff82675e428f5303aa9141dbeb615cf6aca5540fd7cb756fe5f9b08a4abdc6eb90b2eaef51c21eb9ae79a0e44b0755b3ed48f5e6e57f3148ce02501528dd3dd2b0bbec2650710a183e38510990002ce6498dc5ce7bf33d699dd18b66c0f8031d958b11d678674c355a635f4b5e8d863785f5dc2f99eba9ce74595493c017697344b651dcc2a0b1d5386b73abd8bb2dc77a2d92173d3688d0d704da9e44a6385af9fb3a81db68822b1eac9ab284f0155c20f6bc34af85d8518d0dfd32fdaece1379abca339a00e1326b624b3e4050be5db8dced5e6c4b88b82b6ee2a48c373d236ea3565ecc072e953ffe01b624c6ecbf534678aad9c3f8a07d7dd7232134b6b397d0c96ab5f795f9e3af65b96e7a765283d8081dab9f953113abe06e8d150bf9a8416d8932fac17b032dc346be43736dbf066ed239328803510f6f62bc8abc92f6df9a82c02cbf85de91739bc8d7805d392341be99798079419540dc952fa0d3ceca4b806ab1db3b717f0d720038343465a8bc0da8e8964e58634e8a2d6c99230af2ac7c89acd3f86a22075dc40818028f3c632b36a39c0e064e3ca2a078c617a3e73aaea56ef11114f9efaac90a3ec8f8d9b18921a80d74b09ada83efee127f41179dc6c19c7965f3e7f43e22f636534b123e9246172f9920f253d2a2652a5e8c337ff93b2d479bef5e96e972a9b9cd8af057c750bd711010d59ce065ad50fdd487b5dde616301d0ae6373b6f9efae99d8972f242dd7a6bc61caee70201869be202fd384a992478dfc133b84171f013244c5d17585934aed3b43b818926246227d255bf832ff481f5f8d074ab159a11d6d17ed0ac50f727b870db966e0373bd3b1eecbf9ed66aa66caf33ac57cffe4ac6df3cf7b0e54ac54be4f3d50f61b33557c2990c908a710c85000ef6fa62716960daf918ae3d81ee60b3813e65673bd911ce468510bd230b9c2d215afe86ec12e49e0ae87e4235baf3df237188f5e0af2e61c22a4bf77190dd5dc804b4cc330b360c3dc093ef208c37d299ea0cd2ba906084011e16ac5f4fc9646538d5b538a99546d34a4599c8529c1524fc4b394d6a9cd762855905233ed92e72c8b538372ffe2f0df7085eb074616c7e695d7de40779e384d5fdb49fe02385424ea991dc05c6ae813f76c673eb45d6105bcdcfdbf04dcdd20caa6e30efcf3537bcf72947e1ac37d1e8c600ba9238569a4b3afa590d61acceb2572da85885146a142c8f8c60afe4d53ee4d61f33c47e5a99da9a346bcfbd013754ef39a4d7f16c4c5fbfa53d7f180c16e2b64f97dcfd65349939b5fc167c7a78926f638f1893fe9a81e897beea3258a4175d14f41dc123ddd846e45a87f35154db8a5ac27c7a0fc95d3b3113cfa9e7c828f83a1f0d91ab7789c33be5f55ecbb8eb0c81bcc0fccc880011b21000e2f10773388b198ce79c5d694472d3ef6b2e55c342b29c70e4f33fe59e2e0bd3f9ef617733dd3329a0e426338d9c007bcdd382522cb96e59b223825a39b01b52809f5e8518f64b81c99022d8215b5c435d87cc1a57bd440b31a19b197b277b2072968595ccd64c135ae1b218046e27a7f2685d013ce3173efd07586dc72a28ac4792e804d44f9efd785ef005213df928560a20daa4c24ab07f081479270a0dcee3c26331c48a164e4b9d79a7c30c77ab06b00e9b72c190d35fb873bc095d5e6231a89b52a0737a99532079bcc72ee221b48f0d0d9ba9105f981beb4225f6efc1230d6da10fd2b58a65112a98e4bbbe1accd6e8589eb6d9c771bb911cccf42aa6cbc68d1976f0da7eff1e70277e8c5f83734ec1efb2b00708fef08e986bd6519a0fa4b5772e585ac8e37fd2a2af07aa382579498b3b75863fe792461492b8e71c4a1a2f4421705696a96601317cfff1632784b5d75fc2036ed3fa650354620781b9fcfd53f1927223fa045edf4abe7b2144512f3e3aee99f7ac3e46028bc2427aeb18e9cb40db57b696ea884658abc9b7bae0d8117f93074a3ef903528f8b55c7687cf9f0119a1f246cc9e993219c6384359e7e5e639bb294b264048060224ae168d7b9f1f795c07eaafcddb10b61ac2be3ab3e1fddf75c1f47559f38d24f0c773d0e8bc5fa85d7d33e3aa8d0f15583b8c1e7aab6f5d0e085b7175678bf11cfee8eb069b78220377819e3f4d28eb833d3d21efff543d5c6357fffb4a8fdd6ce399fca42e2d71c53c50f6b20bcbaa1650b57ff483837c39a37d5e978393c332b43021508b8ef27773164d69d0af3c0dfdc125cf30a7c49a7d8e5320d68a35e80cdfd62a0b7ce6a412f08c8062e35265fad5d1f226d590e9b068d09e48772711d7dbd786a38c0325b3d5665c2ff45ad0a20c174dc5739896ac727b34f11c7af299d36d30c69bbdc35770138cf891cfdd8123489fdef2dfaffa9c2548ebd60b0f0bcedff44691979b4e92b364753120364dc2e3b895095da828e8659575a85cca587ba05ca625480f977a6fe10181ab6ce005defbcd8894f8c71811909cd6b56eb7ffe327f46793a9e98bd7fe8951400276bb9c7607f8ba1e633034b73d7f0d040197c3f346394eba68c8accccefe05f59cb7ea9ab1ae2e172d8f466ee21c6531cec2c9dfeebc477a6d98195c28bccc1d5e23ae50e3a1ddd7de189e36ffe0e387df7be43427b194b16e18b42eacd517bba78edc9f56a2c7e89e6f13513718869da7c8c529bc337217a69e14e35cf97ff7db2c23700347f0a33ad25a299fc52b35f63949735ad864aa127053797541864b07168f89ffb7ba5c9a8bfbcb4248383a95f45461a7aee9c658c5679205f47144ba4a06175e746037b8cb6556f06405e0d537d0f2bcd898dd5fb987d96dbce33001a50abff5b9cb0161dbfe30f5df5a161ddd8a750b0cb33898c110415881fc81239f2e25440bca41a5bc46fbd3787e6c8fe8a463415cd9a82be368a02566da740dca8e40e686e1213d9c15de2d3556a1e1180b298ba3074b4ab93e469dd9a39ac0c8a173b04a5ad913e72e4d7b5ff520f108e1a1747c11b6b2fcfaa89b3ef7e669f8ad9620364b4f4f0f9ab274e76bdd631df033357a24723653e427324d907a9eceb3c375c43ee36cdeb046a6374be19ab04922da93d4dc07c5914df06fee97dd813f5fd501ca75e3c5ad53574837f2e51ba6a257134e8ee0f4127c59840ba8b1bb13592dcbe47aea50e453c7837e91bb12ad1c74fd0f149479bc0334c511a822145690a3a408caa32671ed05c2dd219ea360c67727c1fe6a6cd842301761e94bedc73f93de7091b8b6d2783a788313b2fa12595904bf5d1167a5ddc4ee151b1522de60b7293b72a62c4d08b396ed682b6a6262a212ddc8c70dbec1a972cedc09f593e21d843279561884f9759a593da7b17a147db7559f19d5d6f43ea98012872f974306037dc0d344c55403b35a5903f766359341bee5bccb696fc0fd1c7aa8803e4c2f9e6e23d386d3a202027c5792e355592efab9330af330392a7c91e3cacc4e645359edafd78b77829374cd4b644817322b7650696fa763a0cc7143f9ec7e2f6ab3c9ec2443b0c0b0a31e9eeafb7bb8c375232357f08256959a10a6d4bc98d6cd9314a2ce7feaa8c0eb1eeb15047f715d6ae9ebd64238d648ed6bc50617a360d8ff9a01aa0ce0e29338d34bb9612751445372ac6d74837c7d2d67729760216ee33476cce1a154086ec31d986cc5a14e86561c6929554fb280646164bb03e8e52588a1b947960a77d61c2d2499212a742e1a5b78805b5b64fed141d3c4834301b8a8bef31ce65edb539fd9469b590a6980d0d1bd29e34a09f87438059a09b1ea234d1bb29882e67599fc1e417db9d86332077cfb05fe440ad1243e26a67a0ea30e63cdee8850a543d76e810140547412fb1400ac87a10e3bc77d3918750a5cc3e7a0efbd736c7ed4139cd5855ddba47143362bf40b91fcbf27222017c1552360466483e67ed125745724cc713c713dcf7ef6ea3081d65d8d78b903382717848bee7410431e1040ec92373f75a1bf229816f55dcfffb6e6da33ed8e1e8b05f9348cdcd6938f053eb9f93e0de639e922627bf61a6688f9649bb9cdfce6236a176db8b9b53ce4b5f9eb9c0680c92128bd327aa7f04a745025faaf117a18d5664027ab0e3f5898b834e1a75cd4b4087637733416f8bac1ccd67cb4457005945676d03f76fd0453fdb9968643fec98d28da7c8cd7070a803b14a2459f073ea075fd023a896d3306fdabc54416e95907103cd2fb642e301c71cc48e8eabedaae356582761a14e0b3b0ef1de06002c2acf594c85820ae3a094e5b4680566b592221543c1dc5192d6b208e86b5aca91d4e3454564eedb3b8208169ce97e1632b864f1d9d4c4c4c0fd4bcc5206e8f6d64c7cdf212d718cb5b7c7ee21593ada3f33f5952e12bba4f46cb99044978fe75349c6ca735db35891351d7e5f02a93354bc45a9ec756453f053cb87430b3e9211807f81ad99b6fceb8ef1b2d655910e1f5fd22f2ee90e42abab230f8f39a8345eed6ad294a0d32416a253f829093ecae209bc1dbfadae04a373080f9ea8394a28ddfe1134309bb53ae571d2019ff2bd4be94f8176d90987fcebad323f0b2921b85b2610852973f383a2ff4a5fa82a77b13cfd50a33f29164a9ff409422cc4cbd772132856cbd08470b220ace957a6b8e02c8003d750539a38a8df19a5b662907b72e3098d77c2fc3ece0693b47ff19ce911a93b6adce75653d48ace6af10b8f1141437f9206658707b16794e349db3f1a02606ea167d0213ce3644f64ced64de3799b1729210fc31ba1811b0c226306f2466b230ae35e6d8fa11c8f932e27da8cb1bd311919bf9178ef08bb7a2b4ca2d2e6e9585ee9f916991cfcd4862f5de9fbbc63bee6edbdcfcec9173a252eb59fc6d6e58258ca8b2a4475acfc1e09a0c9566d23d92e9ada97de51895bfb0867c42025c8d089c65bba67f4dd84d7c5155a930329345cdf3b1d6e910e730df273e183190beb900344bbce8c3bdb13a7e4ecbe967a61d47921aa55bac2bbb24e3e03d386ddbfafb3b32235b5ed922ed6ac2c89ded1316b69079b826507d708a6cca14ce2244a67be90fb91ddcb0c97432703729bceb432bc856f5eb9d2f169800a04283b080f0e053670a21468df9414fda9f4153eaf1669a19ede7925f832280800f0063ceee34b9d3b0f8da2012525fa7927e76bda71954714d5f51405b920391eca2ad71160acef4091878b907974573b4cf1b377baca0340ab0e4ec546fcaa6130603ad633c3ef980e88d8f44ec5de743cdc6cd9e0e4cbdb97a5c076be9ada8f26bc54d711facec16a2401292cc167bb98cdd320ec9321414bd97498f6d9b54dbb45ffe4b3e3f88260657ee23e19de48a93595c8e3a289a02d76a27ceead05d591633464709aca117c26aa49b64667f2a3b6371984f813d7098fae7a6ba1841775b52314a06c80b4c994ef8100e233ab3115ba2c39b97f2d5082a145720ad0b12b8a7cb275ba848b3fae14fc0c82bf0353195c056b302e508982f73a8519cca722892482b9d9e6a58bfb4d862fa393eabe6aedeae1be5ed772ea3c94a0df1d9684a131c35246c68b32e46aaf89f3649e58b2e99bd6bb3923d3ab43cbf73b6b3d19fe3b62bef178f46c79ba85e23ee4b25bc561e8fa97f51605bc0b210b02aa28242e81dae9489076d259f17d25b93b0e8a2010584d907314e3bd55482f0fa43d37ae9535629d28d6f837360bb35ec869d2a959789dc49b9c8c515942a1e03650566b736551a5180a60279bdb0ff9c387beebeb9e59ed930b3746464a010a6f7ef1de3c7d76fc6899b1e5ed98213813ffb333d969ad72fd8537ef4e12ca7b78d35c24f44ac82da4a7116492ca2efd86ee6a4474014e72a5cfeee7f729b77cfdd1a5d10a03f3cf28f1d314fca36d31ef2ecb3cfccecbcdfd22367b0a0e04435654286ae3d4fee13f56bb7cdab40b4e1dd01f9ef857f94a67c1e237e24819949935ff3bd73b0461ee9020fd0a2db2cc6312ace97e4a8a33c295271453a12822db8d1438f22ed0d466150990dcb39ed042424eef7a1210c83224c856923e3251484a81a15cddb4d7ada8bb7968dcc8f85e39ca99ece8ce2ed7753fcee6900cc9b7b5691f2d67ef9be13f70d195bbd0047908025df01b4f4d581fd59239836578627d9d585ebe9b053d807e9d3ba25405029a148938a746636decdade02b1afb5ccbf2f0e14a27c98a1e130d9208bbf7da4bb4e572927eb348568921d4a3309a2c24f367c935c2a8e1524c3024ff350ac7da8d2849586817bc9d46a08a21aef035a6151e608ed93b1556a484e455819f9ac2fb155020738962e7255a82a0854b31fe20cdd351c10a33eb693c9be1a51a932e04d0364ced41ee1bf800d0c12ab5eb37fe52563666e52827720e856d4f24eb06e0aba446910aabbe36513f2274362fedba4c19398433029495284ccb499bb559a9cdbc94a0d1b733136969a743945a04e1d2d4e77fed21550af35f22651c7de802eab7a3942d7ec55a3a5002bde8d5cccc1d4ac4bb7f4926615fcece543fe5d9092d2c4f50d94fd9868775a072f4a5bcf2e5fd10795f7f172a3341ce33505ba68e7ebedc9c1e9165864244ed31bbe5c308dceff858cc42010ad8c281a24689cf2dee8a549b1abab9981d70a912174944b403ce664d8608b2f723150f5c12164e4caf28676e7a25c3928ca2a4dbe96355ef8f282e57888d40715df07bd8b5895549ad957e758abf868def1c1f5e260d26498616e2ac962bcaa33b879874569f198a91ce4e50fc50da77fea1df9f9ea900c834dcdd462d338efcf8e612aedebf254fac596507d175d30a90543627cfcef6852c7cda8b430e255c4d6d417de31eb5dba123e3ce9e2269867d9a94fdcd8ccac40a9451953085109f5ae0c3e04daadb4a2a47b0e176917660eb3c9f1aae0ec6b00635fa387e056623947c0621f0a12e86fac1881ed1dc1b9f523388d6b6596a152b3e732c561972879dcd3f0232ef0773a4fb195a90c3186c4688ea58967ce7f18386b80bd38e90cfd4cb899337ab27cba8db6523e979b4c449645bb2f320ccd28578bc7ec38f47225273fa61a2e5df97c4d76c556fbe2b0fd30e615f5fc82c3de7194caed9f5946c151c22b7a0c48f4a7cf78aa153414f2913c5eb95e3dbcea7ca544272cd13a1c52fa87759aeb430aab144fab418c835344605df3a044825965ca15de6ba0e59b2080f5844b2d110d71587e19acf14264cec2de5b8c77d18893215d1c1da0a940e7c2ee429a99e2633c216aecb7675a2314a09044951ca5a8eac798f8878fb5ea65f4ddccac53ee0c786e597169079fb6e8ceb37a71580b0904a97450909ca454a690821e249aebb75449e582fe1b30f1fa9f6464bdef654daa5ede6d4f223f4589ea25a25f4672cfbe974d51008bce296628556f55d26646e40b59f40e3149273760b40806ace3b5171e0b79865c6adb53513da2f24c4115de243150cec76107b48ca8da19117f00b5870e67eb8357e43c1b7b593c9875795d46ede26a109e05406b69fda988947e49ab195f22454c3c743c2ec51b91370b4df8d38653b353e51bb83215d122bcfa591009c007bbb6124bc590fed3f9c5699180b3b1424ad02f7c90a149b77d22dea5c996aba675c2a1a20e206d9c25d9446247d495a26486c0d0bfb09d0b5a1a177a09fa749dc36cee73af0116a6b779c2b827512a04ff0f60b483edbcdb33d2a18339463c498ae67ffa9da0aa3f3beb6bc99212f9e6961afde89045520b1f3f2e2761666a333d76030f443f53322f099035584a60978ef8b49f46d7d4d8c5c758ea52a04b59c1a3a1c2f9df3f3b6f5c45cf4b3547043b18c1d615a2c965c3918d090cc72946e8fd0b938e60e03464f4bc71fb719a1d173b0931930e58bf7f6d4403971d36b40f83be6b57244a7029e1d41dc908764d57a5442557218b509faeda4e9fcf31debbc54ae671ef636871233f29e0013c0e33933543f4b59df1978ec89b109c3977b0cf938b7f6166d6c93be5e87684a703c8b7b5fe1a8bfe153a179b55575ff05e599b39e32ed10d958699a1ffe07136081f0719b18c69dc74f66f211103e9c544f3c81a88ba9f66a9bc7017d9ca9e2cd97634052694a598476b99daf1cdfb6122869375ca5873d32d5c1e07d9b5b380b4f09dbe04478cfb1a13853eafacfed70c8abcd444ed095f78d07c0e8b4093be95c3aa24b2e5b6bfe3a06e9d2d9fedfcfeac4cea2490627e6da6a5cca383351952f654ce2b0ad359c0f7f4ad3f8d1d4a030a947d4a2e417bb79102729115cc8b6558c3362b1d805fb48ce4858deff97677e60375ed13e150a12ee7dcc8ccc64d9710c7f516555c1f7a1a08f0d7c6fd21f864fcf28c8f748c40494e01fc32006f977a5100577f86a484d11b82c90cfe6b4d6b1902fef486cc6f3e033904e150e67283e49a5382961dabd244412ca9657b48796e476a82443167e277d5a65c0c563a6abca77d316e5d3ab639a1ecfb1110af2d29f146508bd9874486dbb56328d6f59479e2766692821660462aa60b6bc8a710707ceeb0ea6429e5113e03c9f41ce0d69c7589deb547527673e8a9f9a9a74e9e4bbcabf2e306b35504c1da99730ae86e94cd047b2e6ea5e97e63a492430d37ec446434fb3b066adde08b17d7d903ad194a4a863d6cfe181a45c8c97b5062bf7c4e44d69c0d1a7e1f5029b805b7c21d1b5e56e697999a32557870ebaae8d87dcb5ca5eea2c5547a16b3f30ef9df8df821028c106f86e091050ff8b6ea4171e59dc2592d405073bea53f8ea62edf112dfbc7ca69809db8005783d63557d3d90d123a944be395c1dc3b5e1476dff188346327769fea65f3cf9363e88ed67335870ec8ef13eb9d9ff5317c4e24dfce9d11699e5f47b4233cc8f9d1b915e716a5730a5898ee65d30b1628b484a5e82eda95a590964a8d8bc89dd3c5cf6c4f9137b8c6ee9d6a692e0c0d1d858dd5b3c12de48badade4d01bff312c56ce3ddb34b0fdde3b0c2706fc292b9fac7e1a0dcd0b6534c968117f7de15eba84d2754e4bcb8093a5440297605598659f686075e2b1b464b6b3ec68abb13cde263b1c607545c45746338b9b207b5c381da690f653b35e363e1249551ad938b9fd7b0a944151cda07127bf9ba76958e926472f4aa1de8512ce834cfcae5414b226f23acdb1fe5cf685d2201b78167ad35fc1da282744c2a43cc49d49242f968f7e06de14455e7ef5adedc5b33184346018114e2d1fc7a5349e378da9b2af5b328c213888652aca9f1145363809eca7c1fd8e64a5cc3255418736e048a731f3053db77971f67014e6121a8e464833e5dbd02ea6caf385e43e9f378bfba657986bf852b32adb55e35a2675bfc8d70d43a902032a61f59f57dad2dd7d7963322136233200cb9a90c952074e9ba0fc0654f1b6fd6f7f0eb77c0fa6d8143213ce6e8b0c178f73e17a7c64839f9bebca2fc955ea8ae406a13b80a9045fa8d129fd859faa46fd27c48bde7b890f98ee938c0d78889f84181ae2f5711304fe554d4251bbc6437ced59d577a2a1f26da736193c3674adb13cef9f4cb4aa6585c4d6874b0309ecde300493b1642c595746f09e03977c8902f3a4a877db1153b248f295a0ca2f1e437d15fcab8fd77c5f967304efb5c4920b990674ae61b954af40be17a8559dc377c591b68067fdcaf2d27bd9a22041b981a84be3de50d5962b58f8c4a22fa05192c5ac99a0a9423284fe62a3a59f085136cec72cda2a53af106a2eb5bda28b6e02c299118cd91714c2e7d045346c78d9ed1b41c73231a21e42c298949f70122277f4134ed5c56639edbf3c3e717310e3d1f03dc5a94e64c4ce148bc5c6bde64eb80b17d5979892786a31225eb89bf9f5a582bcf65b83ff7aa361ccd9238d144f6a22a3f77dd8a01382df4ee90a2057dd310a6b0c4b81dfc92a2cc0c606d3be8b18fbe64ddfdf2004eeabea892be2f914edd1edd8e8829dc7704d71bbaaf08c41824dd0f4b34c9eedead9e10e53bfc6fc0bd37417de0c5c71cff0754d672f29c262d8e27b524427e12bc4e4705ab311d3bedcb1ddd09a3ca0c268c05c64951b7d724a9dafe4d249aaabda91d68633aaab845bf78f9a22d467c7e0c5fc70fc9a318b01d7492efea7fffd329d70692e76647ae665c62b280da0d62f870a52e4dc4cd92c9150c96aab16f8c23475e3152d4debb41b6756f000c3d8aceef18b49e295be7a71da1eeadf4eb96509d45d7cc42af4b7013d8bb445f577e8d4cff92770b8ba0e451f3e24c6d981efdb68c7f2dfafee40b8a425955796e369f0d4da3e998c1626ae0fa583334475f1fdde68ca211c3f2e9afb003f553191702e11f8b731c89ea26059ea4466f2bd0a1a5601025ca9417006bca5c9a57dfdba44c603ef9ad38922623b40feda036d84425c47fa42973e348a180a7570e1215044c375313ab08d6f521052dda415707ebb74d6c4774e039bb04cadc2799224bde1802e2ee2a018032e3a341700c0fa2aa28bf93cc479231efe7da0e9f68e572415348c08cf648117e9b6d1267fef6617f5927252c86cc087775db3e30180feb5ce7e1ac9c3761161e07a4853aa6d97e525aa88302954cf9390fde81f8e11d97a11c79e3bad261364c18890dd1f8fc71127edefe3571518a42be611a46a0426a33221aa25a0ae6514daaf96038cb59aaba898de49e3b215a4464e0af614e638c2d9b6e676ec427fc906bc516331a18121f306a5246d179e2d3d0f38ab8393f7ea5a2d24585e7cca649637b9983924a15483c167e8780f8dd7aa1154cbf731745a8d8d54a8c4f8d854371bb8172303f9ba3c8c7cfe8c378ee56bc35c6376aafe907d3294ee9a8786281b7deff78ff125761f1a31d0e8fffe04a52a7574eeb8679670ca3bfb740167a559488d4337819613d32752d8a89013622f6a8d70f3c64b84a4215f4b7bb282a2d17c36a326167e3270757b8f1d9a0137bfc5ec278e8ca35a69e49779cfc25b95a89cc18732b5b9d1986b18878c57e118506909207207ad0b4edf32fb2b35b6e70546f45d0849bd139ffff9d8ae547787e7b51403b54f110e2ac65468cd0910d80a4e321deafd46e9af19609bee1efa41b762b8ace989dd681503539e7d9948664cf7a73ffac9ce2a34b514253c4f21bbccd38057a6d68732930dcdfc9a32219b53339d100db0037a8bbd101e71f5054f3 -AD = 7b3b9c07148fcd897f657ecfcc87e530191536b8e77f9309e8d7323888b3b21477f2ab7c885c105d9c29ac96aed23b366f9fde4177401b7038c6770c7bd2ee8b4335105cc0eab9e367f0cea90d6f1ae3fa76cd21ceb9f3500ce7fb4b2a3f9e90f900a231ec693aeced7afb6821391d1f5b1b957895777aa7a2b71d9571c00336f26d54d756392cdb74bfb67d5a621d517db20441f74d0940180baf613b09452f64224f8af7bbc864ab4a8434ff624d0c0646ee07132fd376506951899bde975df8c836ab4ed9cc084f1f6d500ad56345d2f250a0d6991b9e458c62b6023191f341c8659e8a38c878cfac12b032674503df9c9bb01c4340c709eb6dd7c74907d769a317f4dd7317843c47bdb4c5e1f07f2380d464b0c47269389cc8a43a09adba86f6aa8f44c8fe514e73b5fe8d344769c1aa20a4538ecfbf47562ca79fa497b0f02f103f75522db9ead50d56dbe86997d6085f1b5aa7a4cab9e51a1247ce4f724a14983b6bafd17369fac973c6be268e20d800de870928e100990ebb0d3bedfceda36c64be3a729b603bce677a49e8caf282c9159b6e3e1e775129bd30dc3f5c9849535d86a27474be03bb5749b4c0115e2614f8feaa7405cc69b1de479b3b57e551f876a9c8c57ab9879cc68bb2ea110b2e77e59dd6a65eaa67cc4d4b2f4d6e646b2a298d3c80fb43969275d4414734e74726145dab06124c040656c39a94846e8fd58d326f4f9eafe5b95d85254765a21993f55070fcb9e85db5d42ab6b9464ce66de3f236dd2a0a26c4e5535dbdcd6eb350209a65aee785c6647ad4103d092a8ac932470880eb314f7c98cdff34fdf35ee2d36f09bd443b5defad7a5acb9df55965421fd043def6f4771e1bb27385b30ba22c0d8972aead6b654085a7dd3b60c4004a0dae22e25100e54e0badd0cadf909799329ddff699de8066dd6c3822d80c73c52d87e6fcbdb2dbbf852e37804b1256e23e76dbe43f30be4a577bc23c7941a3d708d1e1f579e9c6eebc219c74768168f6790a41f883790e08cd1e88ad09a544eb97b3d1d5af67eea666b9c027e5c7c976921189b955a9e605f6cc9c012c1c2e197c5b02504cb9ffbcb0f3ed778d540d5194fdf5d38dba6340c93da7c5501a082689616f337d8b59c2a92c25e777515726e1d7f6cc9552693cc7c30f1294b37f97d49814250d6c1e3eb335c5d214ef3641739d508b87106eaaf367902433a148ca962ec694409acb82d7749e1c88938ad382d0ca6e6cbe8255746832fe737c3e71dae8397f260c98d4a292a126ec21935c24096d2f91ae114194af659455d8a4206197495a28474dd2809debf5f550d77ffac2b0db521559910c352f23472d7aa9f4dbbdb158f40aa36912cbd918ae4c642e76d78d57ade1075c4fe1086ddee3d554353b4693bbcef1cfa87e49890838c36156af0edf384b0413d6d7aa -TAG = 51cbcf4a2fd82f221de1bfebf86a8c24 diff -Nru temporalio-1.3.0/vendor/ring/tests/aead_chacha20_poly1305_openssh_tests.txt temporalio-1.3.0/vendor/ring/tests/aead_chacha20_poly1305_openssh_tests.txt --- temporalio-1.3.0/vendor/ring/tests/aead_chacha20_poly1305_openssh_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/aead_chacha20_poly1305_openssh_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,281 +0,0 @@ -KEY = 247a041f6780baf0de3741aa4436024b6a5169b0eab8a090a291f5900bf566a54ac2c64c0f38cab14a143111bc39d1873013f52f2e92062e375c1a5378ad9b32 -SEQUENCE_NUMBER = 94 -IN = 000000100f000000000000000000000000000000 -CT = c87186a24d89e672f37df98a95d0a0653e9f0fe4 -TAG = 075bc727e855c8d487bb3060c42267cd - -KEY = 50c985a29c39c3b75d6326e5f92d2bbc1341ff49b9eda105a853deab9125de9217856e27887b29b61989b8ba4f4169875f402289aeaef239457eceb8e8c2fcf7 -SEQUENCE_NUMBER = 52 -IN = 000000100e610000000000000000000000000000 -CT = b6cbf6d61986eb477ae0e4edfab641effc148824 -TAG = 7b476f69d8abc8b948ddc5f45f422f8b - -KEY = a1c0efe5bda4f6f95a55fc739c076d03515efdd22681ae0317e859dcefc247f0f5dd24c8cc30eda86adedcd96ca276ec446d84f5de6361cae806fdf37e5adfd3 -SEQUENCE_NUMBER = 83 -IN = 000000100d616200000000000000000000000000 -CT = 86805874b9db60ef614a96713a0b9bf974d5e615 -TAG = 3842b3a4ed2f1ffe7718d64ec95a178b - -KEY = 558f82aac8b8a7325dff1142bdf82956d2f053b6e5fcecd15f4a093896c5b15d35f695dc4e1e87738be0b8ef857c18d11d4f028fab34294de24434edbb03f01b -SEQUENCE_NUMBER = 167 -IN = 000000100c616263000000000000000000000000 -CT = 38a55e905cbafa6d79ea8ea269954314e5412a14 -TAG = 243b307d2586e8c8cc110917b18fe542 - -KEY = c88f4b95ac8cbe01c25868d57ea4f8566a0c4f2121d148de52e767eb9980e3c1c8d9a59d980a328cf7b44aaaa02b316872373795cf455da89e606498378542f9 -SEQUENCE_NUMBER = 101 -IN = 000000100b616263640000000000000000000000 -CT = 0d71526d3966e7c57786197ec4b06186a366629e -TAG = b89cff146eb8c1114a8b2e106c26ca66 - -KEY = 228780d2a7509f7a2558c2ec404b355ee7fc3028280d632b7f96c0a3eaf6471d9d2d16a79719d371ccddcc00bec9df03117f0383cbecba12c234f49fd2948c21 -SEQUENCE_NUMBER = 244 -IN = 000000100a616263646500000000000000000000 -CT = 1042673c3c557a61ff50d5e0ec36d1177c05442e -TAG = b9457a825592b0f7e01f9e7d697ac16b - -KEY = 163f3940226dbe821210e403a333dca05e061bdd17f44d33ded87c5def0cc85f11d8aaed4635dd7a9e6b982a67eb3d6c396afe455b483ed4c84e41e5d4e46565 -SEQUENCE_NUMBER = 242 -IN = 0000001009616263646566000000000000000000 -CT = 8b73429d2990476ed1842d4acb3392b217b1ce51 -TAG = 7cd635f03f9febc0debcff7a42aec7e5 - -KEY = 3898a07d0717c3143bb90f8073a78757fa39ae936fed0124524c4871e91d0e56b79d645ea0e00fa5fde3d725af662b1c5fdc4059b5a07c7a6824b4c19cee016e -SEQUENCE_NUMBER = 224 -IN = 0000001008616263646566670000000000000000 -CT = 2ac8116b7d18ca54995aba0651bf9982cb1880ab -TAG = 7a74631c17148c06bdfa5c3a66459aeb - -KEY = 31bb45d44639c499ac5ea60c7f94933b158ce82b2479149fb595654e2ba9cb7f710ba19b35c7a9150a1478f027adc706be98b3966462579a2c784887420033f9 -SEQUENCE_NUMBER = 51 -IN = 0000001007616263646566676800000000000000 -CT = ee8570b7d96a494cd4aad090710e17fd3d46c46a -TAG = c5e62468a33c591d120b73967b88291a - -KEY = 4470511419b640eccc103ed560e05e910f7430cfa22cd06eac335a6e30e067adc1305400c0585130a722f09dfd9728aa20c1b1c91ee8837165dc4cf10ad1105d -SEQUENCE_NUMBER = 86 -IN = 0000001006616263646566676869000000000000 -CT = 6374e59fb470d35c74912f37e574ded425263d81 -TAG = 9a2ede4f3d52bf51d096c351b259802a - -KEY = 166da003239df87cdb35f27804c9ae0c9269ca901eb322846c91fee8febff944c10b1c092012d0beb6e1d95dcc383bfbea85eebdd63e5ff39f584297e7c737d3 -SEQUENCE_NUMBER = 242 -IN = 00000010056162636465666768696a0000000000 -CT = 503cf64139aa6cd5310579bf7b22ecabfd37945c -TAG = c199946b567076d4e615311fbfed69b6 - -KEY = 389c2acc794e55d888297a63cf65525396780ad225ea696e8d6d24852483f71ec6d47e904e75d823902f8599453b548ff42c2f6c847d041cb9a89f3b0a530747 -SEQUENCE_NUMBER = 216 -IN = 00000010046162636465666768696a6b00000000 -CT = ef9ea674e7908aed8fdb9128163061dcb5d24f41 -TAG = ef9900822dda3f698bfd4a57c77498e7 - -KEY = 4a3042e117e06543aeb7fc450dab16b8652fe0a79378f78d6cb0c23f50bdbf4ac00c92a0b330bd035d6cd3918ff1daeb65d0fe329d88305f0728661dccd7278d -SEQUENCE_NUMBER = 204 -IN = 000000180b6162636465666768696a6b6c0000000000000000000000 -CT = 60bbfcf8be81835fe6fa7a1e482a0a6fdd8d11599c3786e3c7976893 -TAG = 411803ef2f1b4187c1019fb47290d0d1 - -KEY = 635638619b3f7fb60edf16361791d85b87a6c0537199c41f3dd087339d2a6699845f6e437879ac929a14ad12721c56b30a98019e51ffcf6f1f0d11028579592f -SEQUENCE_NUMBER = 51 -IN = 000000180a6162636465666768696a6b6c6d00000000000000000000 -CT = 0448a57007a3fa04f64ddcfe19074d18fa8fc9f559f3e4df91df5af9 -TAG = 2b26bca6a9b3e8cbe6f6ec480a831382 - -KEY = 9db759c1e3e2223ee1dff2c8fb3b17728b40565160de8ced8b5b9d45a7f20891fd3d98fbbd42d6e7f518b9071097aa41b4378e64981e928735ea7b817720256e -SEQUENCE_NUMBER = 121 -IN = 00000018096162636465666768696a6b6c6d6e000000000000000000 -CT = 4ea47a2c6b0b7a8f59a0a8ff643d914c4253a8f3a3489845ee1ec041 -TAG = 0e10c42a3328aeb49e6b4e3ab3fe31f8 - -KEY = d56bdf0abeefa000a0bb483abc5e510f23f0b57162f16eec1d3c9a6e8384389d59a9b252a76eaeef7fa420009fc58a2d57f33a9bb1d56d04f2a15b38c394cf36 -SEQUENCE_NUMBER = 222 -IN = 00000018086162636465666768696a6b6c6d6e6f0000000000000000 -CT = 60037819e401c7a4bb49be3e12c58406f571ba2bc3af39cf336759c8 -TAG = 15aa3637c6248c7310a37dd7f95edc95 - -KEY = f0d219074fb736b538e642cde19899cb25d9da4d2e2ad1f6ffca03493080f3ae53a3f2e6eb17ddcb47921d8d0ee8d4a9a7df64bd4c82708469dd86249897f8a9 -SEQUENCE_NUMBER = 89 -IN = 00000018076162636465666768696a6b6c6d6e6f7000000000000000 -CT = 9303e62a70c4bba867d816f29b08fe05871250fa619c9dfa185eec37 -TAG = c5beb415452669e7fdbbfd25cd2082b2 - -KEY = c8af470f7b3e22551209d91c47db94fab3eb93b854d220dcad4495f72ac548f0a368090c1b3860d48584fa3e62e5569bee3559147971dc962d80096ffe7bee08 -SEQUENCE_NUMBER = 214 -IN = 00000018066162636465666768696a6b6c6d6e6f7071000000000000 -CT = 9536fac8b646ee969df606e6d64d40fbe05e9b495e821b300038c041 -TAG = 8e422bb115b662a6a4b11e713d598f24 - -KEY = e68567491a8684c2cf71daa7ccf99c186a79b6cf328874f8a5d656ccbf6ed2c0384d05cc5ce49525f9eb9953e09ebad5d6fec3007b35c4700a0d2996c16c8884 -SEQUENCE_NUMBER = 162 -IN = 00000018056162636465666768696a6b6c6d6e6f7071720000000000 -CT = 5cc13e4c2a33f124ba14fb839ac8b209fdffb5cf9849db01b7985e86 -TAG = 3289f355b13403b1bf667d63afe74d7e - -KEY = cfcd2c688a4a02da67dce7bdb1e3bc2a058b71ea033e28fc9eaa779602ed10c417018ff175f7e7530919e9999fef36369bb8c5b82983f2c8b7bda8c2ddbfa99c -SEQUENCE_NUMBER = 201 -IN = 00000018046162636465666768696a6b6c6d6e6f7071727300000000 -CT = 893c85250a37ee0fdf2a68a47e80c2c763c9bf39a8b51b0c800e5329 -TAG = 4fbf24214608f9ae7c24ebe720b5031d - -KEY = 82891b6e9fa6c259413a2893df1d5b931c421e779affd244b7d7e380c1b6f86bb653bb308de56e6460ae29e3baaa216434c53c1edef973ba4b6a6716a50f2584 -SEQUENCE_NUMBER = 15 -IN = 000000200b6162636465666768696a6b6c6d6e6f70717273740000000000000000000000 -CT = ff041f7e3aed8e76b2e6ecf6808453f618d5335b26f390181b2466fb0fc15f5b358eac7b -TAG = d74db4633f889ab3b79fbfe3b63ac92d - -KEY = 8e293454cda0da79e46ec00694bcd1d558e37d007c80e8cad3545fd9204b62780fae8a6a7c274e251d25801772c3bebf971c7ef5388d7d5872bd6229a8136f2e -SEQUENCE_NUMBER = 99 -IN = 000000200a6162636465666768696a6b6c6d6e6f70717273747500000000000000000000 -CT = 5314b3c960fd718e5db7cfe620745e4ca000152d4d6fcf4e013d8fb7b3e694edee9a0c98 -TAG = c67158f2c97f55741da930c1539e447f - -KEY = f3e8f40daa829cf112b6342733fd00a9264db1a7b9e570f852a1080efee3885bcfce36d16bc90dc0c1b0a7255ffe341d243fbafc0159d28cee444175643a7981 -SEQUENCE_NUMBER = 98 -IN = 00000020096162636465666768696a6b6c6d6e6f70717273747576000000000000000000 -CT = 8dc028c1fdce0b24ac16b50d1b06a1b2eb870c7c61b018cb4db8af1762e776189e128860 -TAG = ec01334504efbca042d3281c59227a0d - -KEY = 89db04faedbead197f637f6de4efec82844a8b0cafae5aeb3a575071a5cc288bcf25e901c45a836de5cf491e2222c9f3c61a75bc709587edf7a2b087aead865e -SEQUENCE_NUMBER = 72 -IN = 00000020086162636465666768696a6b6c6d6e6f70717273747576770000000000000000 -CT = a911e28f149ba1163140e033d85a18d99da72f8f89130cbe65f5619eabb8711b812de08c -TAG = 943f28926c39ea16d4922d250d78620b - -KEY = e8baf3e7abf88dee1331fac29a671c3a9e082335249667fe40a7453ce5ee840cd9a1d0915f008e5b8f1837282888ec06293ca3f26b586e09fc5e59f2cc9d46da -SEQUENCE_NUMBER = 229 -IN = 00000020076162636465666768696a6b6c6d6e6f70717273747576777800000000000000 -CT = 2216092216da36450d9289f0f067b5260ee3c02a7e25c6af3b1e9bc4b46c8fa384b502fe -TAG = 898e5c68627311981a8c0464da16849a - -KEY = e0f96cc3aa2eab959d38963506fa998a7af61b8497a92b6bb5d5480c86cc91f29db3c7bc9239a738729bf59b61667e0d461ecc5bd55826fb5e5487889726a9bd -SEQUENCE_NUMBER = 68 -IN = 00000020066162636465666768696a6b6c6d6e6f70717273747576777879000000000000 -CT = 72fcc3e97bd4d7d1b012fe3db46fd4a5a8ebab38dfb690b5d77f0db0b6ebb839b8297535 -TAG = b12ffcb38bc3ce4213dea2d4e234fa0d - -KEY = 25d7735519841b062d5d80cc71af7343e1381c495a845fd8b16afccebb11116defff108af7bb79f1ae1f94f2a6f99ba803008cabbfe6b970083512d6295fb1ac -SEQUENCE_NUMBER = 75 -IN = 00000020056162636465666768696a6b6c6d6e6f707172737475767778797a0000000000 -CT = b21973084ddee1cc3a39fd30d0b079d4e7a230941330a93c4dc60cd2f275a79f8c591cc3 -TAG = 9d2faca7ad12bd14ffe7573671ecb8ac - -KEY = fcfc5287ef501bb44062700e71b23abc15887a1811078186e8bc5ecdd89a14daf34c48b052d1adb0421075997409f0869f3b82c2d57e4cc954e290d95c3972a1 -SEQUENCE_NUMBER = 123 -IN = 00000020046162636465666768696a6b6c6d6e6f707172737475767778797a4100000000 -CT = 01a66de55a4ecf37f34cc817e7b3915cb0981ac8b9ec79fa21affa63190de50e313c31d2 -TAG = 3e446d3cf4c6eb1c417aee561d0b9189 - -KEY = 1512c3fce6b96693b7471f4d4fbf6e874099439da98b60eb5fb493315f9e0f2da9391bdabb811dd736bfd7d20a233f78f473f8dc094b4d15f69561e4178dc8b1 -SEQUENCE_NUMBER = 221 -IN = 000000280b6162636465666768696a6b6c6d6e6f707172737475767778797a41420000000000000000000000 -CT = 98f720a10212103d0f87ef434cf92000a8449c00fdfe9f61006f13558b2f38b8e1956a8e613477edefc59784 -TAG = 92c27399431a38e15dc6ed72d0c25732 - -KEY = cff80b763e4901929b8799656763e132d034ba9a073bef211d4a759693a961c6b97dac140e6612ce1b0fac7a10d0a10d8277cec0878c81bf181ea66728f29b0d -SEQUENCE_NUMBER = 173 -IN = 000000280a6162636465666768696a6b6c6d6e6f707172737475767778797a41424300000000000000000000 -CT = 0dcb2e7e213ed8c9d380134d94992f50287ff485254d0d066ab47c06499847d8588914bf83163ea2f92d480c -TAG = cc0a9ee25ef053e75409b1f65d76618e - -KEY = 570216cefc554a08864362d11a0df5fb80cc8a7d72e4934e3dfa45cd8862411d7cf2b1a07231264b6a953d3fe5cf0871192d41a4514558c1c169226160316306 -SEQUENCE_NUMBER = 77 -IN = 00000028096162636465666768696a6b6c6d6e6f707172737475767778797a41424344000000000000000000 -CT = 96e568fda7a734f57c1da802bb81e517db255885a7270987e3fa38e0f279d072b9ef99cd25de1af7e871ab41 -TAG = aeb507091dab6999308d81b18854e144 - -KEY = 11353b93163bcdc55f3f53373a95760a458a036c18b70f4cc7916b6f48ff686b29ea0def8d5a1fc52b4e30407edd25e2c3baf6b24fa9f585d141aabc2e19d832 -SEQUENCE_NUMBER = 165 -IN = 00000028086162636465666768696a6b6c6d6e6f707172737475767778797a41424344450000000000000000 -CT = 3f70cb60c11c579b9a8e254a70b80a6f21ae42ab41db8123e9285b0e0dd300cc69e251fd10821dd909d23e0b -TAG = badf5fed288cf6657cff798ff252c85c - -KEY = f690749ae24d2d5e5710a46b2d3a6eb929bd0cd9ebd501b7760191dd104dc34d1787205f7da01f279913703a8ab6813f8d265c2b2e93e35cf81c750df3d41aa4 -SEQUENCE_NUMBER = 254 -IN = 00000028076162636465666768696a6b6c6d6e6f707172737475767778797a41424344454600000000000000 -CT = 1bd7494c9f159342b1eb72ec456ccd2a81d62e77befcd8f86d3132c625db3060feb742562bb9b6a48e952df4 -TAG = c25f2198717e2fd726dfc00513ce1b9a - -KEY = 16c94fe1a75e6b0d40747a8afd0f0eb6c93dd4508fbc769d2b1e0c08eafdee3e067498792233dfd1cbcdc21092fb3e992ecff738e02376eda848ad5faba1c263 -SEQUENCE_NUMBER = 145 -IN = 00000028066162636465666768696a6b6c6d6e6f707172737475767778797a41424344454630000000000000 -CT = 07743e9894a44db0f47c3eceaac0e24a166920e97c8ac18633fd0c0aee798f73cff483836241dd2c938bc5c7 -TAG = bfdc5f251698843111031c70c46cf7f7 - -KEY = c8a2dc33fe6b05ee86680255a160df7a73f8290c4cb778e086534aeeac3cdcbb0932b48ba767678b1f896bd16814d365052018af197566c6075f6b39f89a94c9 -SEQUENCE_NUMBER = 78 -IN = 00000028056162636465666768696a6b6c6d6e6f707172737475767778797a41424344454630310000000000 -CT = a40c4541268a28eeec6818f369c2887eb3472ab9c7f381c8cc896aef25692a7874c2ea1d6a014b04c2b9d03e -TAG = e45d5cb5c3815a851d55d0426cb23477 - -KEY = 1b92da5305b9a1e7234a2d6eca68511dc97fe79fdc7450454dc2313de8f06e068445fa61e14faa1fce49e527943c67475e10e9918f54d410d7ca507076231518 -SEQUENCE_NUMBER = 189 -IN = 00000028046162636465666768696a6b6c6d6e6f707172737475767778797a41424344454630313200000000 -CT = c12861016065604ee867c2b71e8f09bd0cf03b55ca477ca204cb5c1607733e9c651861944438d0b36cef247a -TAG = f9af9a7ebecddf168d04f52218763aa7 - -KEY = aa3f42ae78356f6529dc4eafbf3dd7aabfa6921188627e6b31f39fc4930b2c7f5f13cfea36e47000a59897a2aafde1ae53590a913dc90434d0a18bf1c39f15ee -SEQUENCE_NUMBER = 62 -IN = 000000300b6162636465666768696a6b6c6d6e6f707172737475767778797a414243444546303132330000000000000000000000 -CT = 54a9962b5f227c41bdcd901279f2db09e91bf4f1320ae053f6b2625abdc06f12774d759bc1998d42799ef5656f964502e9509dbf -TAG = 65b3b25f3f1bef915414b8348b2c8d5b - -KEY = e8fca7c957865ae62032c6de787488afb071a691cadf0a8c8d40562cbf80b6513c791a96791f001a2543930998816ba9b44413afe49cbd1695dadee2aec06965 -SEQUENCE_NUMBER = 158 -IN = 000000300a6162636465666768696a6b6c6d6e6f707172737475767778797a414243444546303132333400000000000000000000 -CT = ce31226c64cc9f72745d09df797884651a5946842f47a7ecafea736bf458f52bed38450a8f8521c279fa00eace3af900d68d56b7 -TAG = 3762da294869a8b6b2300d0f19527c42 - -KEY = b21cd69cb3c867e3ce049c7f2584ad26d021ca0f2e94552425f264c442ab6276f2f86509da3bd7e17c5112275d6371cd2a60f490d296db84a6f79608497bfe1a -SEQUENCE_NUMBER = 125 -IN = 00000030096162636465666768696a6b6c6d6e6f707172737475767778797a414243444546303132333435000000000000000000 -CT = fb882b59236f5d4f52b6f11b16b60b1c309d0a2eed260475703aa55baa04ac050e8ef46c25cfdc618381e0ec5babddb3bac43beb -TAG = 9249fec7f5c071a24a896c4c004c6e86 - -KEY = 542f6b64b56093ac155c4302174c1dbc69b28b5380297a05b66d2b4812e78c1f8bf504545b80d18e3dacb49d1dac9c3d2a02368b703365a517e4aadbf6f8d670 -SEQUENCE_NUMBER = 99 -IN = 00000030086162636465666768696a6b6c6d6e6f707172737475767778797a414243444546303132333435360000000000000000 -CT = 779ddcecbd4aa16a9e6f2cbd23bd7dd03f4bdff66a5eac48172b9d5973f5cbc822ce9ed5ac09410297538265c9ffa3b44255ab84 -TAG = 62a287ea3a6352f654eb126fd982cdf5 - -KEY = 12d33230a04520cdd8370e10a82ac97c66a543db2f170b8fbd5651b9d8c340f9e4f82621e365a37fd410e746c652961fad19f262a249d1bd4855d70206fed407 -SEQUENCE_NUMBER = 237 -IN = 00000030076162636465666768696a6b6c6d6e6f707172737475767778797a414243444546303132333435363700000000000000 -CT = ca9d827499866f9942bee540624aba657afe3776d80da0505a15dd9ddca46eabb5c8383039a485f418049135e24e4ca484604f0f -TAG = 5155e0ae129d8855d7b7c0ac56c547b6 - -KEY = 9221b183ce2915a6b6e5d34e1e5cc0299f61a1e757e6e51dadf93bfac086a49bd8507916761b3f69cb3923f920885400256e6d356fc13878175d549492775c62 -SEQUENCE_NUMBER = 138 -IN = 00000030066162636465666768696a6b6c6d6e6f707172737475767778797a414243444546303132333435363738000000000000 -CT = 0199593a687e852219b18a1325bc32b4e697e33888b56687f013e8b0b487215583e8cf6951d84c8559f7c53a753d8f9c89e19529 -TAG = 9f5032a30e40cc2da4993976af9954b6 - -KEY = f3237fb44613c2a6a1db060a3fd25118fff04db48d4d02088e33ca760e030554a8a762c6054c527ff3770ed155ce28dd5cb74e8ea45865f45f1c483817ee6ec5 -SEQUENCE_NUMBER = 187 -IN = 00000030056162636465666768696a6b6c6d6e6f707172737475767778797a414243444546303132333435363738390000000000 -CT = 5b15b628f774cdcbfb83b4ee6448139e1efe320c108a42be0526c33b7cf2b29f44e0cc0258126acf1e2f243a850c843361bd20eb -TAG = f99defa15dcabe76dbf13c2f643694d9 - -KEY = 7497bd5af9e8e9115533233d4f2fec5ae687473504b172a2da54eefefbf063860e2af83a1fa6a7ccbb02c49cef7d5c063b2bbc807c51f9f605cdea2678bf8478 -SEQUENCE_NUMBER = 218 -IN = 00000030046162636465666768696a6b6c6d6e6f707172737475767778797a414243444546303132333435363738396100000000 -CT = a6148988572c42545bff1c45aa3a4340492e004b81cbbf1897ff876d8306f211edaddf60fd97b539261527080b9afa4a14282043 -TAG = f507d8d51b57f41afb9c69780251b20f - -KEY = 8bca240f2520e87d0211bae810e04c2e69ca38d1dd44213e7277f6c9dfa15aa585520a4f288a30aef91a97a0c02caec7cc0fc2dba66162406cadf65e85d8f3af -SEQUENCE_NUMBER = 59 -IN = 000000380b6162636465666768696a6b6c6d6e6f707172737475767778797a4142434445463031323334353637383961620000000000000000000000 -CT = 270fea0aa9e530a49aff4acda9d5c1954c3153f2184ee80cf80f959bf1146c0b66e38754733304194e297712a6174fc6344f4448bc3dbd2a88266d71 -TAG = bed23e779e7e238854be5f62fe751780 - -KEY = 843c5d6c6d26e92c34391bd5b7c89cd612d15a88ed667f59040dcb1afe0f736b7357017d9b82f9b63c8e01bc6d9b842b9a69241c5b3c063cb695978c5f33af32 -SEQUENCE_NUMBER = 156 -IN = 000000380a6162636465666768696a6b6c6d6e6f707172737475767778797a4142434445463031323334353637383961626300000000000000000000 -CT = f29ec1fb4e72c9c261bee5855ba5e1c6e2a63670f891cfd175065e6674494870b7a1a5944f328407c559a0ce7f318630729708e7cd42714a4fae2910 -TAG = 8c88ab81fbc1009d9714d8e111c5b9ac - -KEY = 6c7841f1605b3944ad68ec2eba5f0d57882b7dd004a9c788d6134b56b0704a74e131eb4943e0a61b0fa8a82236901576a0699e83c803f95a767cbef53848baac -SEQUENCE_NUMBER = 0 -IN = 00000038096162636465666768696a6b6c6d6e6f707172737475767778797a4142434445463031323334353637383961626364000000000000000000 -CT = b1d5d1e5d77fb49ac824463235901289e1658ac30f801ef96bfca359473f00af65ec2cdc5184896bcd2234aa7064e468b728d91aa30ead75c0af5bbc -TAG = 0d59f94c58537d96078ff4e6d5f08794 diff -Nru temporalio-1.3.0/vendor/ring/tests/aead_chacha20_poly1305_tests.txt temporalio-1.3.0/vendor/ring/tests/aead_chacha20_poly1305_tests.txt --- temporalio-1.3.0/vendor/ring/tests/aead_chacha20_poly1305_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/aead_chacha20_poly1305_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,484 +0,0 @@ -# Test vector from RFC 7539 Section 2.8.1. - -KEY = 808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f -NONCE = 070000004041424344454647 -IN = "Ladies and Gentlemen of the class of '99: If I could offer you only one tip for the future, sunscreen would be it." -AD = 50515253c0c1c2c3c4c5c6c7 -CT = d31a8d34648e60db7b86afbc53ef7ec2a4aded51296e08fea9e2b5a736ee62d63dbea45e8ca9671282fafb69da92728b1a71de0a9e060b2905d6a5b67ecd3b3692ddbd7f2d778b8c9803aee328091b58fab324e4fad675945585808b4831d7bc3ff4def08e4b7a9de576d26586cec64b6116 -TAG = 1ae10b594f09e26a7e902ecbd0600691 - -# Test padding AD with 15 zeros in the tag calculation. -KEY = 808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f -NONCE = 070000004041424344454647 -IN = "123456789abcdef0" -AD = "1" -CT = ae49da6934cb77822c83ed9852e46c9e -TAG = dac9c841c168379dcf8f2bb8e22d6da2 - -# Test padding IN with 15 zeros in the tag calculation. -KEY = 808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f -NONCE = 070000004041424344454647 -IN = "1" -AD = "123456789abcdef0" -CT = ae -TAG = 3ed2f824f901a8994052f852127c196a - -# Test padding AD with 1 zero in the tag calculation. -KEY = 808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f -NONCE = 070000004041424344454647 -IN = "123456789abcdef0" -AD = "123456789abcdef" -CT = ae49da6934cb77822c83ed9852e46c9e -TAG = 2e9c9b1689adb5ec444002eb920efb66 - -# Test padding IN with 1 zero in the tag calculation. -KEY = 808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f -NONCE = 070000004041424344454647 -IN = "123456789abcdef" -AD = "123456789abcdef0" -CT = ae49da6934cb77822c83ed9852e46c -TAG = 05b2937f8bbc64fed21f0fb74cd7147c - -# Test maximal nonce value. -KEY = 808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f -NONCE = ffffffffffffffffffffffff -IN = "123456789abcdef0" -AD = "123456789abcdef0" -CT = e275aeb341e1fc9a70c4fd4496fc7cdb -TAG = 41acd0560ea6843d3e5d4e5babf6e946 - -# Test 64-bit nonce value. This is a copy of a test below with the leading -# zeros in the nonce removed. -KEY = bcb2639bf989c6251b29bf38d39a9bdce7c55f4b2ac12a39c8a37b5d0a5cc2b5 -NONCE = 1e8b4c510f5ca083 -IN = 8c8419bc27 -AD = 34ab88c265 -CT = 1a7c2f33f5 -TAG = 2a63876a887f4f080c9df418813fc1fd -FAILS = WRONG_NONCE_LENGTH - -# Test vectors from chacha20_poly1305_deprecated_tests.txt, modified for the -# RFC 7539 AEAD construction. - -KEY = 9a97f65b9b4c721b960a672145fca8d4e32e67f9111ea979ce9c4826806aeee6 -NONCE = 000000003de9c0da2bd7f91e -IN = "" -AD = "" -CT = "" -TAG = 5a6e21f4ba6dbee57380e79e79c30def - -KEY = bcb2639bf989c6251b29bf38d39a9bdce7c55f4b2ac12a39c8a37b5d0a5cc2b5 -NONCE = 000000001e8b4c510f5ca083 -IN = 8c8419bc27 -AD = 34ab88c265 -CT = 1a7c2f33f5 -TAG = 2a63876a887f4f080c9df418813fc1fd - -KEY = 4290bcb154173531f314af57f3be3b5006da371ece272afa1b5dbdd1100a1007 -NONCE = 00000000cd7cf67be39c794a -IN = 86d09974840bded2a5ca -AD = 87e229d4500845a079c0 -CT = e3e446f7ede9a19b62a4 -TAG = 356d9eda66d08016b853d87c08b5c1b3 - -KEY = 422a5355b56dcf2b436aa8152858106a88d9ba23cdfe087b5e74e817a52388b3 -NONCE = 000000001d12d6d91848f2ea -IN = 537a645387f22d6f6dbbea568d3feb -AD = bef267c99aec8af56bc238612bfea6 -CT = 281a366705c5a24b94e56146681e44 -TAG = 59143dab187449060a3ec2a1681613cc - -KEY = ec7b864a078c3d05d970b6ea3ba6d33d6bb73dfa64c622a4727a96ede876f685 -NONCE = 000000002bca0e59e39508d3 -IN = b76733895c871edd728a45ed1a21f15a9597d49d -AD = cc1243ea54272db602fb0853c8e7027c56338b6c -CT = 1fb9b2958fce47a5cada9d895fbb0c00d3569858 -TAG = 219b4252deb16a43b292165aabc5d5ce - -KEY = 2c4c0fdb611df2d4d5e7898c6af0022795364adb8749155e2c68776a090e7d5c -NONCE = 0000000013ce7382734c4a71 -IN = 0dc6ff21a346e1337dd0db81d8f7d9f6fd1864418b98aadcdb -AD = 0115edcb176ab8bfa947d1f7c3a86a845d310bf6706c59a8f9 -CT = dad65e4244a1a17ce59d88b00af4f7434bd7830ffdd4c5558f -TAG = 7ae32f186cf9ec59b41b764b34307d4f - -KEY = c66e89fbab01208f6a60847f4f34b38d27b554c119cf8d9e0b118aa7266ab865 -NONCE = 000000005d9856060c54ab06 -IN = f9e3e9b5ed07b2080db8c1ffc37e4a6cb3cd544608921e18610d00b17c6e -AD = 85c112a1efe0a20ef3a550526a7afbc98f6367ebbede4e703099abd78f51 -CT = b5cc754f6dd19ef2d66f90e6bc9a322ddf216ef248cbe76b5ab6dd53bc36 -TAG = d3f7b9c295f374651a84138648a5919a - -KEY = a8b9766f404dea8cf7d7dfaf5822f53df9ccd092e332a57f007b301b507d5e14 -NONCE = 00000000c7f2f7a233104a2d -IN = 4d6faeaee39179a7c892faae3719656cc614c7e6ecd8fcb570a3b82c4dace969090338 -AD = c6d83b6a56408a356e68d0494d4eff150530b09551d008373d6dee2b8d6b5619d67fdb -CT = a15443f083316eef627a371f4c9ac654d0dd75255d8a303125e9f51af4233ff4ceb7fe -TAG = 63c2b4e0973096299488b0a66ffa54c1 - -KEY = 5e8d0e5f1467f7a750c55144d0c670f7d91075f386795b230c9bf1c04ba250bc -NONCE = 0000000088049f44ba61b88f -IN = 51a1eebcc348e0582196a0bce16ed1f8ac2e91c3e8a690e04a9f4b5cf63313d7ad08d1efbff85c89 -AD = 5d09bf0be90026f9fc51f73418d6d864b6d197ea030b3de072bd2c2f5cab5860a342abbd29dba9dc -CT = 35aa4bd4537aa611fd7578fc227df50ebcb00c692a1cf6f02e50ed9270bd93af3bc68f4c75b96638 -TAG = 4461139c4055333106cf7f7556fd4171 - -KEY = 21a9f07ec891d488805e9b92bb1b2286f3f0410c323b07fee1dc6f7379e22e48 -NONCE = 00000000066215be6567377a -IN = c1b0affaf2b8d7ef51cca9aacf7969f92f928c2e3cc7db2e15f47ee1f65023910d09f209d007b7436ee898133d -AD = dfdfdf4d3a68b47ad0d48828dc17b2585da9c81c3a8d71d826b5fa8020fee002397e91fc9658e9d61d728b93eb -CT = 8ff4ceb600e7d45696d02467f8e30df0d33864a040a41ffb9e4c2da09b92e88b6f6b850e9f7258d827b9aaf346 -TAG = b2ad07b86aca1b3ab34033c12d6a08cc - -KEY = 54c93db9aa0e00d10b45041c7a7e41ee9f90ab78ae4c1bba18d673c3b370abde -NONCE = 000000003f2d44e7b352360f -IN = 1241e7d6fbe5eef5d8af9c2fb8b516e0f1dd49aa4ebe5491205194fe5aea3704efaf30d392f44cc99e0925b84460d4873344 -AD = f1d1b08dd6fe96c46578c1d1ad38881840b10cb5eae41e5f05fe5287223fa72242aea48cb374a80be937b541f9381efa66bb -CT = 027b86865b80b4c4da823a7d3dbcf5845bf57d58ee334eb357e82369cc628979e2947830d9d4817efd3d0bc4779f0b388943 -TAG = 6de01091d749f189c4e25aa315b31495 - -KEY = 808e0e73e9bcd274d4c6f65df2fe957822a602f039d4752616ba29a28926ef4a -NONCE = 000000001b9cd73d2fc3cb8e -IN = 3436c7b5be2394af7e88320c82326a6db37887ff9de41961c7d654dd22dd1f7d40444d48f5c663b86ff41f3e15b5c8ca1337f97635858f -AD = d57cfbe5f2538044282e53b2f0bb4e86ea2233041fb36adb8338ded092148f8c2e894ef8766a7ec2dd02c6ac5dbab0c3703c5e9119e37c -CT = 9b950b3caf7d25eaf5fca6fa3fe12ed077d80dcd5579851233c766bb8bb613ec91d925a939bb52fb88d5eda803cfe2a8cda2e055b962fd -TAG = 0887ec7d5e1a4e532746ec247a30825a - -KEY = 4adfe1a26c5636536cd7cb72aa5bded0b1aa64487ad0e4078f311e8782768e97 -NONCE = 00000000d69e54badec11560 -IN = 19b3f9411ce875fcb684cbdc07938c4c1347e164f9640d37b22f975b4b9a373c4302ae0e7dfdeba1e0d00ced446e338f4c5bc01b4becef5115825276 -AD = bda1b0f6c2f4eb8121dcbd2eebd91a03ae1d6e0523b9b6f34b6f16ceca0d086654fb0552bfd5c8e1887730e1449ea02d7f647ae835bc2dab4bbc65b9 -CT = ea765a829d961e08bacaed801237ef4067df38ad3737b7c6de4db587a102a86fc4abbaabea0ee97c95ca7f571c7bab6f38cbae60cd6e6a4ce3c7a320 -TAG = a27f18846f5a4f7fcc724656c91cf4f3 - -KEY = eb3db86c14b7cc2e494345d0dfb4841bbd3aa1e2bc640cca0c6c405520685639 -NONCE = 0000000088b54b28d6da8c81 -IN = f75c0a357271430b1ecff07a307b6c29325c6e66935046704a19845e629f87a9e3b8aa6c1df55dd426a487d533bb333e46f0d3418464ac1bef059231f8e87e6284 -AD = 34b08bb0df821c573dcb56f5b8b4a9920465067f3b5bf3e3254ea1da1a7fc9847fd38bdfe6b30927945263a91fa288c7cf1bee0fddb0fadf5948c5d83eb4623575 -CT = 146ec84f5dc1c9fe9de3307a9182dbaa75965bf85f5e64563e68d039a5b659aa8863b89228edb93ff3d8c3323ab0d03300476aa4aca206d4626a6b269b2078912d -TAG = 854cbb42bade86a09597482c8604681a - -KEY = dd5b49b5953e04d926d664da3b65ebcffbbf06abbe93a3819dfc1abbecbaab13 -NONCE = 00000000c5c8009459b9e31a -IN = f21f6706a4dc33a361362c214defd56d353bcb29811e5819ab3c5c2c13950c7aa0000b9d1fe69bb46454514dcce88a4a5eda097c281b81e51d6a4dba47c80326ba6cea8e2bab -AD = fe6f4cbb00794adea59e9de8b03c7fdf482e46f6c47a35f96997669c735ed5e729a49416b42468777e6a8d7aa173c18b8177418ded600124a98cbb65489f9c24a04f1e7127ce -CT = 911ead61b2aa81d00c5eff53aeea3ab713709ed571765890d558fb59d3993b45f598a39e5eff4be844c4d4bd1ef9622e60412b21140007d54dcf31b2c0e3e98cf33a00fd27f0 -TAG = 2865d2a26f413cc92416340f9491e1be - -KEY = 3b319e40148a67dc0bb19271d9272b327bc5eee087173d3d134ad56c8c7dc020 -NONCE = 00000000ce5cf6fef84d0010 -IN = 27b5627b17a2de31ad00fc2ecb347da0a399bb75cc6eadd4d6ee02de8fbd6a2168d4763ba9368ba982e97a2db8126df0343cdad06d2bc7d7e12eec731d130f8b8745c1954bfd1d717b4ea2 -AD = a026b6638f2939ec9cc28d935fb7113157f3b5b7e26c12f8f25b36412b0cd560b7f11b62788a76bd171342e2ae858bcecb8266ff8482bbaed593afe818b9829e05e8e2b281ae7799580142 -CT = 368fb69892447b75778f1c5236e1e9d5d89255c3d68d565a5bba4f524d6ad27de13087f301e2ef4c08f5e2c6128b1d3e26de845c4ac4869e4c8bd8858ad0d26dec3b5d61a9e3666a3911ba -TAG = 1414f1b91966340417c38226ccca9d3d - -KEY = 43bf97407a82d0f684bb85342380d66b85fcc81c3e22f1c0d972cd5bfdf407f4 -NONCE = 000000008b6ba494c540fba4 -IN = 4b4c7e292a357f56fdf567c32fc0f33608110d7ce5c69112987d7b5a0bd46d8627a721b0aed070b54ea9726084188c518cba829f3920365afc9382c6a5eb0dd332b84612366735be2479b63c9efc7ff5 -AD = 1e0acf4070e8d6758b60d81b6d289a4ecdc30e3de4f9090c13691d5b93d5bbcef984f90956de53c5cf44be6c70440661fa58e65dec2734ff51d6d03f57bddda1f47807247e3194e2f7ddd5f3cafd250f -CT = d0076c88ad4bc12d77eb8ae8d9b5bf3a2c5888a8d4c15297b38ece5d64f673191dc81547240a0cbe066c9c563f5c3424809971b5a07dcc70b107305561ce85aecb0b0ea0e8b4ff4d1e4f84836955a945 -TAG = c5ca34599c6a8b357c6723ee12b24da8 - -KEY = 12fc0bc94104ed8150bde1e56856ce3c57cd1cf633954d22552140e1f4e7c65d -NONCE = 00000000d3875d1b6c808353 -IN = 24592082d6e73eb65c409b26ceae032e57f6877514947fc45eb007b8a6034494dde5563ac586ea081dc12fa6cda32266be858e4748be40bb20f71320711bf84c3f0e2783a63ad6e25a63b44c373a99af845cdf452c -AD = b8be08463e84a909d071f5ff87213391b7da889dc56fd2f1e3cf86a0a03e2c8eaa2f539bf73f90f5298c26f27ef4a673a12784833acb4d0861562142c974ee37b09ae7708a19f14d1ad8c402bd1ecf5ea280fab280 -CT = 9d9ae6328711fb897a88462d20b8aa1b278134cdf7b23e1f1c809fa408b68a7bfc2be61a790008edaa98823381f45ae65f71042689d88acfa5f63332f0fba737c4772c972eba266640056452903d6522cefd3f264e -TAG = e84211b6cfd43543f8b1b4db07a494d1 - -KEY = 7b6300f7dc21c9fddeaa71f439d53b553a7bf3e69ff515b5cb6495d652a0f99c -NONCE = 0000000040b32e3fdc646453 -IN = 572f60d98c8becc8ba80dd6b8d2d0f7b7bbfd7e4abc235f374abd44d9035c7650a79d1dd545fa2f6fb0b5eba271779913e5c5eb450528e4128909a96d11a652bf3f7ae9d0d17adbf612ec9ca32e73ef6e87d7f4e21fe3412ce14 -AD = 9ff377545a35cf1bfb77c734ad900c703aee6c3174fdb3736664863036a3a9d09163c2992f093e2408911b8751f001e493decc41e4eeeed04f698b6daed48452a7e1a74ec3b4f3dcf2151ca249fa568aa084c8428a41f20be5fd -CT = 229da76844426639e2fd3ef253a195e0a93f08452ba37219b6773f103134f3f87b1345f9b4bf8cfc11277c311780a2b6e19a363b6ac2efe6c4cc54a39b144e29c94b9ebbde6fd094c30f59d1b770ebf9fcad2a5c695dc003bf51 -TAG = 55e025a1eb87bc84d4be00c775c92ad2 - -KEY = 4aeb62f024e187606ee7cc9f5865c391c43df1963f459c87ba00e44bb163a866 -NONCE = 000000009559bd08718b75af -IN = c5d586ceece6f41812c969bcf1e727fe6ff8d1ae8c8c52367c612caa7cdf50e0662f5dffc5ea7d3cc39400dfe3dc1897905f6490fd7747b5f5f9842739c67d07ce7c339a5b3997a7fb4cd0d8e4817ff8916b251c11ef919167f858e41504b9 -AD = 51f5b503b73a5de8b96534c2a3f2d859ece0bd063ea6dfa486a7eec99f6c020983f7148cccb86202cf9685cc1cc266930f04e536ad8bc26094252baa4606d883bd2aeed6b430152202e9b6cc797ff24fc365315ed67391374c1357c9a845f2 -CT = 252ea42b6e5740306816974a4fe67b66e793ebe0914778ef485d55288eb6c9c45fa34ac853dc7a39252520514c3cb34c72b973b14b32bc257687d398f36f64cc2a668faffa7305ab240171343b5f9f49b6c2197e4fbe187b10540d7cdcfa37 -TAG = ab1d8a5a1f3eda9b5609c0028737477f - -KEY = 9a19e72f005cae1ae78b8e350d7aabe59fc8845999e8c52fad545b942c225eaf -NONCE = 00000000d9dae2ea8d2ffc31 -IN = 2110378d856ded07eb2be8e8f43308e0c75bc8a3fcc7b1773b0725b7de49f6a166c4528e64120bdf7c9776615d3ce6feeb03de964a7b919206a77392f80437faceb6745845cafc166e1c13b68e70ca2a1d00c71737b8fcbbbd50902565c32159e05fcd23 -AD = 1cd73b72c4e103afbefd7c777e0480f3f5e68c60b85bd2e71ef5caebb175d7fc6535d39f38f92c24f2eb0fe97d878ed3d5967c0bb4394a5d41f7d34cda6e1523d3848f049cde554a7d31e1afeab5d3e6150f85858335cbd28c8a7f87d528058df50eea06 -CT = 5f009fbce4ec8e4ca9d8d42258b1a3e4e920b2fbad33d5e9f07557d9595e841025193b521ba440110dd83958e8ee30219d952b418e98a6c624894aa248aedc0678f2d263e7bfaf54ca379fef6c5d2f7ac422ea4b4369408b82d6225a7a2cf9a9f46fd4ef -TAG = 1c6bdff7d8b9554dc7bf40e50b37d352 - -KEY = ba1d0b3329ecc009f1da0fab4c854b00ad944870fdca561838e38bad364da507 -NONCE = 000000008a81c92b37221f2f -IN = 6289944ffa3ccea4bf25cd601b271f64e6deb0eba77d65efb4d69ca93e01996e4727168b6f74f3ccf17bd44715f23ceb8fc030c0e035e77f53263db025021fd2d04b87a1b54b12229c5e860481452a80a125cb0693a2ba1b47e28ee7cbaf9e683c178232c7f6d34f97 -AD = e57883961b8d041d9b9eeaddcfd61fa9f59213f66571fadffffdd1498b9b014f1ef2e7e56c3044d7f9fa7a1403a1169e86430a2a782137093f5456e142aad03a5f7a66d38009dd01b7fc02c9cf61642dedaf7cc8d46066c281ee17780674c3a36eae66c58d2d765075 -CT = 9c44d9135db0dbf81c862c1f69bec55a279794cdd29a58e61909aa29ec4c120c9c5a508d856b9e56138095714a4bb58402a1ad06774cf4ecdf2273839c0007cb88b5444b25c76f6d2424281101d043fc6369ebb3b2ff63cdb0f11a6ea1b8a7dafc80cdaef2813fa661 -TAG = 689a141bc11159d306dad7a4ecf6ad9d - -KEY = 0cf8c73a6cffc1b8b2f5d320da1d859d314374e4a9468db7fd42c8d270b7613a -NONCE = 000000003c4c6f0281841aff -IN = 4434728d234603c916e2faa06b25d83bad3348990ecde2344368d1a7af1309bd04251bb2e0b72044948f8dea33cce2618283b6af742073a9586b26c1089335fe735141e099785a1235810a3a67ff309e2f0ce68220ba0077ad1a5dc1a4aef898a3b9ff8f5ad7fe60149bd0bd6d83 -AD = a38d09a4f1c9241623c639b7688d8d35345ea5824080c9d74e4352919db63c74d318f19e1cbb9b14eebd7c74b0ad0119247651911f3551583e749ea50ff648858dcaaa789b7419d9e93a5bf6c8167188dbac2f36804380db325201982b8b06597efeb7684546b272642941591e92 -CT = bdfbfea261b1f4c134445321db9e6e40476e2dd2f4e4dbe86e31d6a116d25830762e065b07b11a3799aab93a94b4f98c31c0faeb77ec52c02048e9579257e67f5a6bae9bc65210c25b37fc16ee93bda88fd5f30a533e470b6188c6ce5739fa3e90f77120b490fc1027964f277f40 -TAG = 780cc54bb6f1c9b78545c1562cd9d550 - -KEY = 69f4e5788d486a75adf9207df1bd262dd2fe3dd3a0236420390d16e2a3040466 -NONCE = 000000006255bf5c71bb27d1 -IN = c15048ca2941ef9600e767a5045aa98ac615225b805a9fbda3ac6301cd5a66aef611400fa3bc04838ead9924d382bef8251a47f1e487d2f3ca4bccd3476a6ca7f13e94fd639a259ef23cc2f8b8d248a471d30ac9219631c3e6985100dc45e0b59b8fc62046309165ddb6f092da3a4f067c8a44 -AD = 0c83039504c8464b49d63b7f944802f0d39c85e9f3745e250f10119fa2c960490f75ae4dced8503b156d072a69f20400e9494ab2fa58446c255d82ff0be4b7e43046580bc1cf34060c6f076c72ea455c3687381a3b908e152b10c95c7b94155b0b4b303b7764a8a27d1db0a885f1040d5dbcc3 -CT = f0bb2b73d94f2a7cef70fe77e054f206998eacf2b86c05c4fa3f40f2b8cebf034fe17bcbee4dea821f51c18c0aa85b160f8508bd1dc455cc7f49668b1fb25557cdae147bf2399e07fcacaca18eccded741e026ef25365a6b0f44a6b3dd975ee6bb580f5fccd040b73c18b0fbf8f63199ba10fe -TAG = 2ecccea4607d14dbb2d2475792aeb468 - -KEY = ad7b9409147a896648a2a2fe2128f79022a70d96dc482730cd85c70db492b638 -NONCE = 00000000a28a6dedf3f2b01a -IN = 791d293ff0a3b8510b4d494b30f50b38a01638bf130e58c7601904f12cb8900871e8cf3d50abd4d34fda122c76dfee5b7f82cd6e8590647535c915ae08714e427da52f80aef09f40040036034ca52718ea68313c534e7a045cd51745ec52f2e1b59463db07de7ca401c6f6453841d247f370341b2dbc1212 -AD = 9a6defddb9b8d5c24a26dd8096f5b8c3af7a89e1f7d886f560fabbe64f14db838d6eb9d6879f4f0b769fe1f9eebf67fcd47b6f9ceb4840b2dba7587e98dc5cae186ef2a0f8601060e8058d9dda812d91387c583da701d2ba3347f285c5d44385a2b0bf07150cbc95e7fcfa8ae07132849a023c98817c03d2 -CT = c2f109d6d94f77a7289c8a2ab33bc6a98d976554721b0c726cbf4121069473e62ba36e7090e02414f3edc25c5d83ac80b49ad528cda1e3ad815b5a8c8ae9ad0753de725319df236983abd3f69ab4465d9b806c075b1896d40bdba72d73ba84c4a530896eb94ffccf5fb67eb59119e66a1861872218f928cf -TAG = 17ec6cf2b172f01e3c456ad047196805 - -KEY = 48470da98228c9b53f58747673504f74ca1737d7d4bb6dbf7c0cba6ca42f80b9 -NONCE = 0000000056fb4923a97e9320 -IN = bc6626d651e2b237f22ee51608ddcffeba5f31c26df72f443f701f2b085d6f34f806e29673584cb21522179edb62a82427d946acabce065b88b2878e9eb87ed1004e55ef58f51ec46375ac542c5782725ff013136cb506fcf99496e13fcd224b8a74a971cc8ddb8b393ccc6ac910bd1906ea9f2ed8a5d066dc639c20cd -AD = df8ab634d3dca14e2e091b15ecc78f91e229a1a13cba5edd6526d182525ec575aa45bc70fb6193ffcd59bad3c347159099c4f139c323c30a230753d070018786b2e59b758dd4a97d1a88e8f672092bef780b451fd66ba7431cbb5660ea7816cdf26e19a6ebb9aadc3088e6923f29f53f877a6758068f79a6f2a182b4bf -CT = a62e313ecf258cc9087cbb94fcc12643eb722d255c3f98c39f130e10058a375f0809662442c7b18044feb1602d89be40facae8e89ca967015f0b7f8c2e4e4a3855dbb46a066e49abf9cef67e6036400c8ff46b241fc99ba1974ba3ba6ea20dc52ec6753f6fc7697adbccd02b0bbea1df8352629b03b43cc3d632576787 -TAG = d29a8968067aeb457ffc114c3a9efb95 - -KEY = b62fb85c1decd0faf242ce662140ad1b82975e99a3fa01666cac2385ab91da54 -NONCE = 000000002f4a5ca096a4faf8 -IN = 03b14f13c0065e4a4421de62ab1d842bffb80f3da30bf47d115c09857f5bdd5756fd7c9ac3d9af1c9fb94f2640f7f4386cfba74db468e5288dbe4dd78bfe4f69e41480ca6138e8beacc6eaa3374157c713cfa900c07dd836eaecc8827fa3e70e052ae09e8473e2ae1a10b1bb669ef60a8dd957f6553daa8114918e17371f2ac327bd -AD = cfe3b7ab7550b0e8e2e8235fa0dcef95647ce6814abd3dc3f5a3bd7d6d282504660c34ad8341e4d11402c7d46c83a494d7ddb105e1002979023e0e3dc2978c9ae53e10eb8567e7a02b60e51e945c7040d832ca900d132b4205a35034fed939a1b7965183c25654931a9b744401c4649c945710b0d9733b87451348b32ba81de30ea7 -CT = 8965db3d3ae4fb483208f147276e7d81b71a86e7202ffc9b1eaade009bc016838dc09ca4bcf30887b2f4243fbd652cd90ebed1ceef8151ff17ea70518d03b0f2a24960aa7de9b30fa65c2e2d57360061aae6d9376e984e9fcd5e5dd0911a4bc8deca832ffb76f252bd7da523076593ba6b174f7d9fb0377e066ecbb6638036241e86 -TAG = 28a5284696ed82714eaa94c9ebe6e815 - -KEY = de9c657258774d4ebc09d109a0fc79d66493ae578797cac4eb8830a6a4b547e0 -NONCE = 00000000b5e35fe3398efa34 -IN = 4d68fb683aa4f4c7a16ba1114fc0b1b8d8898610fa2763e435ded8771b3651078bef73d4dfd14e76a34cd5eb9ef4db4ead4da9e83f4ce50fe059977b2d17d687c29335a04d87389d211f8215449749969f7652dc1935a0f9a94538dc81dc9a39af63446a6517609076987920547d0098a9c6766cf5e704883ea32feaea1889b1554b5eb0ce5ecc -AD = 436ea5a5fee8293b93e4e8488116c94d3269c19f1d5050def23d280515457b931bbed64a542b317cc5023d648330a4b7adca14dd6f3783207b94f86ccaa0a0ac39b7db00ac87a99e3cd8a764ed9c75da8454479636ab2b29e770b166a5b75cacc425c919bf1ce9ac34afe6b4425c3d9fd2e48bc81e7d15516d60e592bfcc2ebefb660f0995f2b5 -CT = 97a97b8f0f5420845ae8d57567f9bba693d30e6db916fad0b971f553ad7d993f806f27ab8b458d8046062ced4778c004b4f958a4436141637c6039963308dea2f54008b7feab79650295ed41bf9e65e1a2d75ab1c7b2a70ebb9e9f38d07a9a672d3e95ea78afe9ac02f2566b48b0251aef6eeeca8bd15bd8d43b559426aa9d15d960ee35cb3edf -TAG = 4ef49e8a0c2ef85826d7f03e81c577f2 - -KEY = 6885bd333c336c7672db8ebdf24c1a1b605c5a4ae279f0f698162f47e6c73401 -NONCE = 00000000f0c4a213a6168aab -IN = fa905a2bfa5b5bad767239fb070a7bc0b303d1503ecd2b429418cc8feba843e5444ed89022fdb379c3b155a0f9ceab2979000a0f60292a631771f2fde4ef065aa746426609082969530a9c70ad145308c30ba389ea122fd766081511a031ce3a0bd9f9f583c7000b333b79ac004fbde6ec3eb2d905977ff95dcff77858e3c424fe8932a6a12139e6ec8d5e98 -AD = 8ded368f919efb522bb6a9ad009e02ffbc6a16536e34d95cdb34f1153d7cb7b0f3c2b13dd05cedae27cfe68ec3aca8047e0930a29c9d0770c1b83c234dcb0385deae7ae85da73a5f8de3dfb28612a001f4e552c4f67ae0e2ec53853289b7017a58591fd6f70b0e954876bb2f7ec33001e298856a64bb16181017ba924648c09fc63c62eff262c80d614679bd -CT = 0cb3d6c31e0f4029eca5524f951244df042fc637c4162511fea512a52d3f7581af097eb642e79e48666cb1086edbd38c4777c535a20945fabc23e7c9277e2b960aac46865f1026eb6da82759108b9baece5da930ccfc1052b1656b0eadaa120ed0c45ad04b24ae8cdb22ceab76c5f180b46a392ab45b1b99c612546e6b947f4d5c06ad5abee92ff96345ad43 -TAG = fad7d5a5193dfb121c68529ba8c0c35d - -KEY = fbc978abb1240a6937ccc16735b8d6ed5411cdbc1897214165a174e16f4e699b -NONCE = 000000007968379a8ce88117 -IN = 1a8196cd4a1389ec916ef8b7da5078a2afa8e9f1081223fa72f6524ac0a1a8019e44a09563a953615587429295052cc904b89f778ef446ed341430d7d8f747cf2db4308478524639f44457253ae5a4451c7efca8ae0b6c5c051aaa781e9c505489b381a6dcba87b157edc7f820a8fbaf2a52e484dc121f33d9d8b9ac59d4901d6ed8996ed4f62d9d4d82274c449cd74efa -AD = 3913cd01299b8a4e507f067d887d7e9a6ded16dd9f9bb3115c5779aa14239fd33ee9f25756d45262dc3011069356425b5c81a4729594e17c9747119f81463e85625d5603d05e00f568b0c800bb181eb717be8d7a93166a504ce1bc817e15530c5bd2b3df1d4222245ea78a38bc10f66c5cf68d661503131f11af885c8a910b6dce70bc3a7448dfae00595beb707fe054d3 -CT = d152bcb4c24c3711b0fad28548dc4db605bbc89237cdbea7dbf956b8855d1161a0781f27bd56d798141e2ace339955efb98fe05d9b44cd011e645106bf47726183958cb6df34ce5766695f60bc70b6fe0fabb9afa009a8ef043dbf75f861881368fa07726625448fe608d578cdc48277f2dc53eaaf1bdc075269a42f9302a57cad387a82c6969608acacda20e1cac4596c -TAG = 96ae06cd7c72456e5568a42317046158 - -KEY = 77d1a857fbadfe01aba7974eea2dfb3dc7bf41de73686aece403993e5016c714 -NONCE = 00000000fdd913a321c40eb0 -IN = db8915bfe651e2ecb3ce0b27d99a6bfa7a7c507cfcb2987293018636c365a459c6a138b4428be538413db15bda69e697cbb92b154b7f4d2cbb07965225aa6865d7dcd1ba2c17c484b00b1986fed63e889f25a4966dc3ed4273f1577768f665362d7d3e824484f0dded7f82b8be8797ad951719719365e45abbf76324bc7d657799d4d4f4bb1dba67d96ab1c88519a5bee704f7214814 -AD = 3cb2c06c20cb0832bbacebfc205d77393ca1816346ea2681de4d3ab1fadb774ad273e4713290454496f5281ebc65e04cfe84ed37cd0aedc4bbe3decbd8d79d04a4e434876650e0d64309e336bfb10e924066a64acb92260b2dbd96735d03af03909aa6a80a6e89fda81037257aec21fe9be7e91a64e88e0a58fa38ecba4c4c4cffb61958f3c486cbb0b1d0b0014a2d1d3df248eec1ca -CT = acb825e6023b44b03b2efc265603e887954e8612b2ee134bdcb61501cfb9492952bf67be597c3a005b09af74d9e421a576d2c65e98104780feab838d8cb1bd135452ea39dc8907a4c1a6a9161805e4fa3e16989e6a418a7eea2582bf895da967028eab7c95d846a6de4b9980785814cf00484baa2f6de609912fff689bce6e854261ffe866bd8e63274605c7c5ad677bd7897ade543e -TAG = bcf523a9bcf772e157941753c6d7401e - -KEY = b7e9b90dc02b5cd6df5df7283ef293ed4dc07513d9e67331b606f4d42dec7d29 -NONCE = 00000000a6c191f6d1818f8e -IN = 2ada0e3c7ca6db1f780ce8c79472af4e8e951ddc828e0d6e8a67df520638ff5f14a2f95a5e5931749ae2c4e9946ae4d5eb5de42fb5b77d2236e2e2bd817df51be40b1b8a6c21015a7c79fe06dba4a08b34013dfa02747b5f03930268404c455dc54a74d9c6e35485e10026da573cb41cd50b64cfafe4cfcdf3c9684ef877e45d84e22bd5e15fa6c8fd5be921366ff0dc6fe2df45f7252972c9b303 -AD = 0f4269ed5ef0bfff7be39946a4e86e8bf79f84b70cd0b14fecb7be3c071316ce86de3d99d6871e0ba5667d9d7bba7dcaba10cb2a36668b6c3e2fb6c102938b75008bb9c213ebf9b85b5e91a802df0d31d7f11d764b2289f6225212694ab6b7c0e3ff36e84245d9f4f43fc5f98e654dea7ba9bd918658879c5bb4a1642af0d83113e3cf935d3c0d5208318f66f654eb17d8c28a602543e77ad3e815 -CT = 22586fe7338e99cdaad9f85bd724ba4cfe6249b8a71399f9a3707b5c4323b8d96679568dfc8d230aefb453df596e13eb3e8a439249bd64bc93a58f95089a62b94f6562b821c83d91f56c55147381e9de4beb4ae81bd6fe7caef7e7e9a2078f2fba8f3e70d4910da9accc92b8e81a61b0fefbece4bd89443e66e8ddda8e47a66a62f17fd0e7d0a4852ce1a4d43d72a0b5e8914bbec698f060f2b092 -TAG = bd05336ed6426de412aac37661953052 - -KEY = 6b2cb2678d1102f2fbbd028794a79f14585c223d405e1ae904c0361e9b241e99 -NONCE = 000000007b3ae31f8f938251 -IN = b3cb745930e05f3ab8c926c0a343a6eb14809fd21b8390a6fcc58adb5579e5432021765b2d249a0ecf6ba678634c4f53f71495865f031ee97aa159f9ead3a3fcb823ee5238bdf12706a9c6137d236e2e7110ce650c321e41daf0afd62bab2a8fe55d7018de49a14efe6d83a15b2f256d595e998d25309f23633360f5745c50c4e5af8ccc9a8a2cb47064105a023e919c7795d2dc331d3f2afb8c42e5c0bcc26d -AD = 1c32fd3df22b3e440e2a3c7a7624990194cb16a5f74af36f87fd6ca7d410ce9064316a2d091945deef7d9b35ceec8396069307caced2b80afd7d53ec479c35cedf2dfd4c95c3dd8400f71ad34028c6e4f8681d93d0774064ba38f3fb9b0c1dfa1f5f0c7d20676a5911d999fb6a1d41367a8e99d852bf3d3b7b3f4c233249ed1ca135389a674ff48232ded3f6800a97b6d409c40e6cd70d09bf9d2ad25d9b9485 -CT = ef70c7de98ab1d4ad817024a970be463443640eb0cd7ff234bdd00e653074a77a1d5749e698bd526dc709f82df06f4c0e64046b3dc5f3c7044aef53aebb807d32239d0652dd990362c44ec25bf5aeae641e27bf716e0c4a1c9fbd37bbf602bb0d0c35b0638be20dd5d5891d446137e842f92c0ee075c68225e4dbacb63cc6fb32442b4bcda5e62cb500a4df2741a4059034d2ccb71b0b8b0112bf1c4ca6eec74 -TAG = d48657033095db3f873c33445fec8d35 - -KEY = 4dbc80a402c9fceaa755e1105dc49ef6489016776883e06fcf3aed93bf7f6af7 -NONCE = 000000002358ae0ce3fb8e9f -IN = 197c06403eb896d2fa6465e4d64426d24cc7476aa1ae4127cd2bd8a48ce2c99c16b1cbf3064856e84073b6cf12e7406698ef3dd1240c026cbd1ab04ee603e1e6e735c9b7551fd0d355202b4f64b482dd4a7c7d82c4fe2eb494d0d5e17788982d704c1356c41a94655530deda23118cba281d0f717e149fbeb2c59b22d0c0574c1a2e640afad1a6ceb92e1bf1dde71752a1c991e9a5517fe98688a16b073dbf6884cfde61ac -AD = cf6ce7b899fb700a90d2a5466d54d31358ecf0562e02b330a27ba0138006b342b7ed6349d73c4c5c6d29bde75a25089b11dac5b27adea7e7640ca1a7ceb050e3aae84a47e11640a6e485bd54ae9fdb547edc7313d24a0328429fcffd8b18f39880edd616447344ebeec9eadb2dcb1fa7e67179e7f913c194ebd8f5a58aea73b0c5d1133561245b6d9c5cfd8bb0c25b38ffb37db5e2de5cdded6b57355e9d215cb095b8731f -CT = aa87f9a83048b6919c8f2b050315db4e2adae4a9c2ca0109b81961b520e63299dcb028cec0b9d3249a945ee67dd029b40f361245c740f004f8cf0d2214fcfa65e6124a3e74b78aa94345c46fdc158d34823ed249ee550431eaae9218367321cdd6e6a477650469bb3cc137a8f48d9cf27934b16703608b383d2145659922fb83bb2e7ee2ef938a90f2ff846a4a949129b1fb74dde55c5ae013c2f285de84f7dac7d1662f23 -TAG = 298f84c8312029a7b1f38c5ea6021f57 - -KEY = 9e4a62016dae4b3223fed1d01d0787e31d30694f79e8142224fe4c4735248a83 -NONCE = 00000000263a2fc06a2872e7 -IN = 5a46946601f93a0cee5993c69575e599cc24f51aafa2d7c28d816a5b9b4decda2e59c111075fb60a903d701ad2680bb14aeda14af2ae9c07a759d8388b30446f28b85f0a05cd150050bd2e715ff550ebbd24da3ebb1eac15aba23d448659de34be962ab3ab31cb1758db76c468b5bb8ce44b06c4e4db9bd2f0615b1e727f053f6b4ffb6358d248f022bcad6ca973044bed23d3920906a89a9a9c5d8024ec67d7f061f64529a955ce16b3 -AD = 4cd65f68f9f88c0516231f2a425c8f8a287de47d409d5ecde3ad151e906b3839fb01bb91a456f20ea9d394d4b06604ab1f9009ef29019af7968d965d1643161ab33a5354cda2fdc9f1d21ec9cb71c325c65964a14f9b26eb16560beb9792075a1597394000fd5f331bd8b7d20d88e5f89cf8d0b33e4e78e4904bb59c9c8d5d31ac86b893e4a0667af1be85fdb77f7ec3e2594a68048d20c2fb9422f5879078772ee26a1c560cbcbb2113 -CT = e944bb2ab06d138ad633c16ce82706ecf0ef5d119be1f3460c9ce101d9c4e04ef1677707fca40d1f8ca181e07273707b06624d6d7063c3b7b0bb0151b757b3e5237fb8004c161233d8bc7e5f28ea1c18da1874b3d54c5ad6ff0835eed35c8853704585cf83996e5e7cec68180af414e04f08134d3b0384ebdf0393c9310b55d8698fe10cb362defc0995e9a13b48b42cff61ffd9fe4c3c8c6dab355713b88f6e98a02e7231a0c6644ec4 -TAG = 6234e81e089b779d0d509d14e566b5d7 - -KEY = 18ca3ea3e8baeed1b341189297d33cef7f4e0a2fab40ec3b6bb67385d0969cfe -NONCE = 00000000b6aef34c75818e7c -IN = ef6d1bb4094782f602fcf41561cba4970679661c63befe35ff2ca7ad1a280bf6b1e7f153fa848edfeffe25153f540b71253e8baba9aeb719a02752cda60ea5938aab339eead5aabf81b19b0fc5c1ed556be6ad8970ea43c303d3046205b12c419dea71c4245cfedd0a31b0f4150b5a9fe80052790188529ab32f5e61d8ccde5973ed30bdf290cbfbd5f073c0c6a020eac0332fced17a9a08cef6f9217bd6bef68c1505d6eed40953e15508d87f08fc -AD = f40f03beaa023db6311bad9b4d5d0d66a58d978e0bcbbf78acebde1f4eb9a284095628955a0b15afc454152f962ec3ea2b9a3b089b99658e68ede4dee5acd56672025eb7323bcbc6ba5d91c94310f18c918e3914bbbf869e1b8721476f9def31b9d32c471a54132481aa89f6c735ab193369496d8dbeb49b130d85fbff3f9cb7dccea4c1da7a2846eef5e6929d9009a9149e39c6c8ec150c9ab49a09c18c4749a0a9fcba77057cdea6efd4d142256c -CT = c531633c0c98230dcf059c1081d1d69c96bab71c3143ae60f9fc2b9cd18762314496ab6e90bf6796252cb9f667a1f08da47fc2b0eecda813228cae00d4c0d71f5e01b6ce762fa636efffe55d0e89fdc89ba42521cc019ab9d408fcd79c14914e8bbf0ea44d8a1d35743ad628327e432fdcfeb0b6679ddca8c92b998473732abd55dba54eefff83c78488eee5f92b145a74b6866531476fc46279d4fde24d049c1ce2b42358ff3ab2ba3a8866e547af -TAG = e3b4192f6e50528c4f4f70267f094c56 - -KEY = 95fdd2d3d4296069055b6b79e5d1387628254a7be647baafdf99dd8af354d817 -NONCE = 00000000cd7ed9e70f608613 -IN = 0248284acffa4b2c46636bdf8cc70028dd151a6d8e7a5a5bc2d39acc1020e736885031b252bfe9f96490921f41d1e174bf1ac03707bc2ae5088a1208a7c664583835e8bb93c787b96dea9fc4b884930c57799e7b7a6649c61340376d042b9f5faee8956c70a63cf1cff4fc2c7cb8535c10214e73cec6b79669d824f23ff8c8a2ca1c05974dd6189cfee484d0906df487b6bd85671ce2b23825052e44b84803e2839a96391abc25945cb867b527cdd9b373fbfb83 -AD = 24a45a3a0076a5bcfd5afe1c54f7b77496117d29f4c0909f1e6940b81dde3abacb71ec71f0f4db8a7e540bd4c2c60faee21dd3ce72963855be1b0ce54fb20ad82dbc45be20cd6c171e2bebb79e65e7d01567ad0eeb869883e4e814c93688607a12b3b732c1703b09566c308d29ce676a5c762a85700639b70d82aaef408cf98821a372c6a0614a73ba9918a7951ea8b2bb77cd9896d26988086d8586d72edc92af2042ff5e5f1429a22f61065e03cfcd7edc2a93 -CT = 40c6318d9e383e107cdd3e1c8951562193c3ef64ee442432a63e2edefc78f32ab07772aeac172cb67ecf4d21f8b448423527bbeb9d8ddd0b46bdb27f74096ceb24e41963b4cdca176676a75bdbe3abc270b349ac0c6cbd9c3a5cd5bce20202fc5cc0c1bdd4fd25e121e0a24bd7bbeb9b19b1912467bf5338ee2ce88aa383c082b42cc399c9654ca325f35523e81438beb3f8926be79c378822d7c8f785614408a5f7cac49e4543188725643e6c1a70b46d0ec400 -TAG = 874875c9a0ba3060a0680291c3dc85a2 - -KEY = 6ae1102f84ed4dc114bb9d63f4dc78d7dbb1ab63f1659dd95f47940a7b7a811f -NONCE = 00000000c965d578ba91d227 -IN = b82a8a9209618f1f5be9c2c32aba3dc45b4947007b14c851cd694456b303ad59a465662803006705673d6c3e29f1d3510dfc0405463c03414e0e07e359f1f1816c68b2434a19d3eee0464873e23c43f3ab60a3f606a0e5be81e3ab4aa27fb7707a57b949f00d6cd3a11ae4827d4889dd455a0b6d39e99012fd40db23fb50e79e11f8a6451669beb2fbd913effd49ad1b43926311f6e13a6e7a09cf4bebb1c0bf63ce59cd5a08e4b8d8dbf9d002e8a3d9e80c7995bb0b485280 -AD = dfd4ac3e80b2904623ff79ea8ee87862268939decf5306c07a175b6b9da0eb13ac209b4d164755929e03240a0fe26599f136fb2afdffd12bb20354aa1d20e5799839abb68ae46d50c8974e13e361d87ef550fe6d82e8b5b172cf5cd08482efdef793ede3530d24667faf3a1e96348867c2942641f4c036981b83f50236b8e8a10b83ebf6909aad0076302f1083f72de4cf4a1a3183fe6ec6bfe2e73e2af8e1e8c9d85079083fd179ccc2ee9ff002f213dbd7333053a46c5e43 -CT = a9aeb8f0a2b3ca141ac71a808dcc0c9798ac117c5d2bd09b3cfe622693a9f8ca62e841b58bddb2042f888e3099b53638b88dfc930b7a6ee4272d77e4b1d7e442bab6afbde96ab0b432f0092d9ca50eef42f63c60c09e7b8de019b32ebe4030c37b8183cc1e3b913b0ce4ee4d744398fa03f9af1c070bed8cdafd65b3a84140cb4deadc70184de757332ce3780af84353f540755227e886a8d7ad980f3dd6fd68263d82e93f883381dec888bc9f4f48349aa2b4c342cb9f48c6 -TAG = f6dcad5412b95994f5e4d6829c2eba98 - -KEY = 405bb7b94715b875df068655f00513cb1ae23ffaac977ce273e57d3f83b43663 -NONCE = 000000005c6da1259451119a -IN = f9f143c0c52c94b4ba7b0608b144156a49e7b5d27c97315743d171911e3645ab7957c80924e3c6b9c22ab7a1cac4b7e9c0de84e49fd5e4a2d1ab51d764fc5670318688ec942f7ab34c331dce8f90fea6972e07f0dadec29d8eb3b7b6521ddd678a6527a962f4d8af78c077e27f7a0b2ef7eabd19e92b7f8c1e8fb166d4763ce9c40c888cf49aa9cdfc3e997c8fe1cce3fe802441bbd698de269ff316f31c196e62d12c6bb5cd93fb3c79ca6369f8c1ac9102daf818975ea7f513bb38576a -AD = 6fe6446505677bf08b385e2f6d83ef70e1547712208d9cebc010cba8c16ea4ece058d73c72273eed650afdc9f954f35aa1bdf90f1118b1173368acbc8d38d93ebf85bd30d6dc6d1b90913790c3efa55f34d31531f70c958759b2ba6f956c6fcdd289b58cb4c26e9515bf550f0fd71ab8527f062c9505cbb16e8e037d34de1756bef02a133dbf4a9c00ac03befc3fb7f137af04e12595ce9560f98b612480fcdba3b8be01db56ebec40f9deae532c3b0370b5c23a2a6b02a4de69efa8900c -CT = 1a4b073881922c6366680cc9c2a127b26f264148651b29abb0c388cf6c9b1865dba5a991e1f8309efbdb91bce44b278772c58fd41273526c33fec84beb53d1689b9da8483f71be6db73a73417069bb4cd3f195236e8d0a00d124eed3a6b6f89415b19a27fbe35774f6a1a6ee4bd4350b252b975f0db2d2eea82f4836350850d6290901e726e8af13644e2d98bc1d569c20800521e6affe976bd407049a2e6d9dd23f88d52e651391ecd2fc45b864310824aaadfa203762a77c1d64562dae -TAG = 90fcc2544880250f1c3abe8a3761ba08 - -KEY = 8c602bd94c630cd00c7a9c508067a5a9f133d12f06d9f6fe2a7b68dce4786d8a -NONCE = 00000000760de0f7b7cb67e2 -IN = c3ff559cf1d6ba6c0cc793ca09a0ba573a28359386a6ec93e1bacd8e630209e0b477a20aedec3c9cbf513ee6a1e3887112218d6155b9875f7e6c4bbba2c31972e905d19f529f4f0f9502996199f94f8728ba8d6424bb15f87fcacd88bb42c63fcc513759712bd0172b1e87c9da122f1993ffb7efd3a5c34b240dd3db89dddea36dbeb2836d9f8648f8e7cd428c0f948097af753b35f9876059e7702027bb00dc69071206e785f48fcbf81b39cc0343974ac70784a2e60c0df93b40379bea4ad8cac625 -AD = 9e14907c3a8e96c2636db1f3d78eb1f673d6ef043cbbb349467f1fe29bf60f23d5d5d1c3b133a8ad72065d822347541c13d1574baf737eb3cc3382fb479e6d5193b9c8e7d2444c66971ef099dc7f37f6cd97b9f7959d46e2cf25e8a5b3111b4d9e2ef906d905f0ee2d17587f7082d7c8e9a51509bde03d3d64338e1838d71700f1b4fcb100b5e0402969da462f26f974b4f9e766121f8fd54be99fc10beb9a606e13fbb1f960062815d19e67f80093360324013095719273c65542b0e31b1a2a3d928f -CT = 2794e6e133f6892f23837fff60cf7c28ee9942f8982ef8089db117903d0143293fdf12ea1cc014bcd8806fb83c19570eed7af522db0de489bbc87133a13434518bcfb9cda4d9f6d832a69209657a447abf8afd816ae15f313c7ea95ec4bc694efc2386cdd8d915dc475e8fadf3421fbb0319a3c0b3b6dfa80ca3bb22c7aab07fe14a3fea5f0aee17ab1302338eeac010a04e505e20096a95f3347dc2b4510f62d6a4c1fae6b36939503a6ac22780a62d72f2fc3849d4ef21267fffdef23196d88fbb9b -TAG = 7fa630c9bcb455e89f13d7a99d5e8dbe - -KEY = bd68ff5eb296c71cfe6bc903c14907f7726bcb1331f0c75f7801cd1b7948f3a1 -NONCE = 0000000065a748004b352ba6 -IN = 52bf78c00f6e5dca2fc60e2e9a52e827df97808e9cf727773860cafc89f4b64178a19b30b46ed813fe00c8f09b25a6a1b6e350d5b005122934a59bfbd5e6e0c635c84a5226c3f2f7dcf951560f18ac220453d583015fdb2e446c69c6e6fdecf2e595e04fab1b0c506e3c6bd5e4414a35f15021e97f447aa334f54a8f1ef942dec6273511b5668b696fca97188ff15ed84b2f46145cce031c1a7f00bd88bb83d90797edc46161b3fda7a2299173496d73b812139556e8b4eb318078b9eb2ae5046e83b79dd3d45950 -AD = 5557b08a5010cbc9f46bb140c2505f68684eb24889324bff44b27234fd7a95a99cfb4ff90a8f9982085b725f78ac42eca6ce7f3314e457dc41f404008681a9d29ba765660de2e05bb679d65b81f5e797d8417b94eb9aabbd0576b5c57f86eae25f6050a7918e4c8021a85b47f7a83b4c8446898441c5cc4e0229776ef3e809cb085d71f3c75ec03378730cb066150f07e60f96aec983c0e7e72bf6bf87ae42228dfda195f97855fcdf4e6d1c4479d978abcfa276d16ed60ecbfbfc664041335ce65a40a2ca3424df -CT = a5c8cf42287d4760fca755e2111817b981c47e85b0047de270ec301ca5f7b3679f4749210892b6ea6568f3a6a4344734a0efc0120ffedecf212d55cbcbb67815ac964875af45f735b70092a8f8435f52fc01b981ae971d486026fb69a9c3927acfe1f2eab0340ae95f8dbee41b2548e400805ece191db5fd1f0804053f1dbfaf7f8d6fded3874cb92d99a2729d3faaa60522060cf0b8101b463b3eb35b380fcddb6406c027d73fe701a5090c8dd531c203ce979e26b9ced3431e2b726a7244a20d9377bd62951bf5 -TAG = 82c6194de4d27aac4c54b023b9831634 - -KEY = 934fd043c32d16a88fad01c3506469b077cb79d258b5664fa55ad8521afdcaa2 -NONCE = 00000000c7091f6afbbeb360 -IN = 2bdd1fc4f011ef97ea52ec643819941c7e0fb39023c2f3c7683804a0ddee14a5d1784a5246966d533b3538edc7d8742d27061c3cab88df0318ab242102de3a54d03632eeb871b72c7e8f8065b49f4a91e95e15f3f46b29fd76b8fcea0d23570c5530e3bbb8a6aafa9ae32c1b3eac653c5ed5fdb2da5a986075808f6385870c85b1913e26042a9d8e78f5bc2ea6de5a64f8aeafa22adcffc7f6932d543c29bb3a04614783f948680e433a71573568d2ce984d249fb4fc06a9f358c76aa3e64a357f4eae924c1356bd5baccf7e0f -AD = f737dd85638eb324dd3891219c5eef7c2dd053cfd055d447a411eba304a4b27dce981d112c4540590933c153d603022c91ebd2b4a58069d27e6ca17a462ef822ca41bffa80b43a68b1b564644cb3c5a7f0fddf7a13a30ff24437fddd8ef93c6f6f205d054f81890d982bd4d4ece0b1563677e843fe48c1f54e9a57ed4da66061482712e710a401073be5080d5b8b96525bffa67de5af31d50385fbbf1a87c21bf0e0a1fdff69ec32c7b7103e0b8ee6c844245e0fc84b9f89fcce62966cea68e2871d3b82e8df424c76309fc88d -CT = dd13fbf22c8d18354d774bcd18f7eb814e9b528e9e424abc4e3f2463195e8018576565d16ab48845d11c9277f2865ebb4dc412fd5b27078f8325eadf971e6944c66542e34d9dda971e2aba70dbd3e94a1e638d521477a027776b52acf90520ca229ebc760b73128879475d1cbe1f70fc598b549cd92d8a9ac6833e500c138c56474db84cb3d70b7aa4f293a4c2b4d818b0ff9fd85918dc590a12a8c0e375c4d98b7fc87596547eb960676aad5559834588f00f251a9d53f95c47af4df3c4299175d5211779c148cfc988a5e9d9 -TAG = aeb0a4eb29886f0a7a12ec0516bd4af5 - -KEY = f9f6eb9ad736a8f66e7459fef5ec2890188dc26baf34a95f6f0384e79f5c6559 -NONCE = 000000007858dfc084fe4b0f -IN = a644ca6e7cc076e87eb2929fd257693fce0f6fb64fd632f7f07c648ebd03696c8e262e6a810d7b7c4e5eef8c65b5323c99dbba50a70b4a9e5c2a9e7315973cd67f35d8052ce9a85a206416dd3031929f4f929b13d0a5fb10cb73c65f6c0ace019da146b51c5274a099f44e3669d26add6f2ff081e886f3cf952fe0dbbe6b0534c23e307574bd35fbd657f5fcbd5dc19fb382a1dc0a2dc8285a0350f71554e4c601497749e35567dd4a273cddc9a48ce53a5f1d297fd8baf8d1b9feb35d9151114345abada4d90db947bb9a743c175f5653d1 -AD = 2048d1c2ddfb5ec385b201832c7a993f229ba72ec16d6ebf723ef0c5032b9966209a9e8a63151b40412e96b82f86728ea6588c7e8e11ac71cc8eabab8c4b54de866658d9c5011def61fb3dbe4e630158a45ea41a2ed55ebd1efb1abeda7637de6fa5fd2f151c6d2f385bf6cd002ca8b4a2896e0d65944ee913e3c784669dd201b1985ef3577f7f123a5f9bcffa176c8f557c4f729133cac518642f27d9b22ca9b97faaafe5b669a10b79ace4a7d5727df146c77ce681357d69f9c2d65b4401bd73cd113387e3b3a05d897adad7a24c485e7b -CT = 4146faffd7313f5d9f625370d20413cc62ab65f4acfa3c7ee1125b937dd7a39f638fc46c8ed004fb525698de5d8620ec153435571817c3de257b0d0e648ebb92940c86a98262d54e764f28cbdd4f7d9bea970291f2110414f62064d7229c6332236c507b3dac742e651d85a2a22fb243c0cc7cc2d016e5bea38f33f9a9ce048944a5fe8b078d71d23168e12dfe5a0f0b829771edc7073fb96032b7be471337a37aca0cf7c0cdd543eed686cd34934717fd79a3f18492eef72f9f450b880aa7e2e1b65e3b04c22e72301338b43aa32ceec2e6 -TAG = 61c6d4d6918b04fc1b72a7a0e9a3b799 - -KEY = 29b19636cdd32507fd98ec4ee26caab1a917646fb8f05b0dc01728a9f4a127f0 -NONCE = 0000000006699d245916686d -IN = 5fdf913aceab1d6dbaf7d9a29352fa8a3eb22718043a79cffa2fe8c35c820aec7c07644b8785dcf7a433b4189abb257fb12b06fae0662641011a069873c3e3c5ccc78e7358184a62c2005c44b8a92254958eb5ff460d73cd80284d6daba22c3faba046c5426fe8b7cacec64b235a8f8d3e2641e5bc378830594bcfb27c177aea745951ee5780a63705727ef42c4ad3abf556d88e3830f3db6b09e93edd09485cbf907f79de61f8dc5cb5fb7665ffa0ef53cb48702f6a81d8ad421cef20c1dbdf402b8fafed56a5361b2f93f914a2380fdd0557faf1f4de -AD = 39116c49cc13adb065b92cb7635f73d5f6bf6b5ccbf72a3f65a5df6bd4a661105015358d9e69f42e98aed795e8161282bc113058b7ef3b9e23fcd8eeab34a392e03f4d6329c112cb968385ec52a7afc98bb8695785af6b27b700973cc952630b7247ce226b4fbb99b8a486370bf6345d4516c52c64e33f407c4f2d1ba90545c88732d98bbd97972ac5e94c694624a9b3782b0099824651cb7567914d25b3e13181a791dbcd40e76e836b3350d310a52151bf835d3c357c9871482c2928e8404c6e533406d4d6fa8f63366f2c4ed828141f1ff00f01a536 -CT = 01e237220b619054a1f3670928fe67d40484b5af40fbd04d032500aac5acaa3b4584dd99a58c390627636a50de5d744f76a56a33205f9e3b00e16162eb47ff3333e1e208ca200f1a5338a86e17bd92dd2d16af8bb022a7dc05b923d019e05247f1a0d0b4bfcfce58dd6d83830705707676d55739abee89fcd5cb94b8fde006a5da02df64b00a467f45970b5ca440f22319b9735a55d454b9fba0588fef0c59d3d83823eba6e0601a96e10233826c5adeea6b2a51d386a07a9e047ad405b23d4c3d89f30c31e3199f0c8f927bfac43ceea1f969de0a8c0f -TAG = b9fec6da464c7b85b2a4726694562fe9 - -KEY = bae06b9b5456707551c7b0e207aae02a19b4848ad8ca4ce40705bf8c856a6e52 -NONCE = 000000009c27065c3ef2d522 -IN = 50cdd88137ff428a88e87b5845be4924f6387537bb5c0b654c80107ab5698db75b2e131848e7aec156d31aed0766d31c379fece4095d38264c6d5945974d25f729c3b0ba11ea853e9cebdb6f03bb670fce08adff74d0a8f02d633fb34e0fb7337a8e66e1c12084d914fb6173b8105684db822752c6751a372bb16690284d661b8b8bc6a6dfbddf45ebc2219596f9f2f878c118df69030de38b4d99dde43b9b9e20a3dab691645dd518342f49b06a0fe0a397adf261e99f07af5b0b3798b1022ba0939c42a54d3b93641cffa3c2e174bce9ab7ad7e7c7924308d1a77a -AD = 5d5590db1bd316eb7a0e30e4c7a6dfdbef9d3287fdb8d824389599c3c2ee262b2192eb5b9708e66e22dbc7eca83fa1a995da3ce64c86fe5aa08b826d476dc439497e2d12e2702c63c8d27aa7f09fedee816dc8bffe1351d53271a34d4292b613b7efcedb7e3cf3e6ad389eef12471e9e20e38e7ae22a323abbadfe8f2e84271bffb1819feb4f77b82843cb8757cfae293631bc6d39669107e7015c85d7343ffa6fc1bbe6f5ab4de30cd752a281e03061ea89de2a3f5e90e20da22fd6e8525c100738667f42212b2cf45fcb23bbb54b21c117484b22c6e514685314df -CT = 66b7f69ac49fab4e5975aeb6fa9287d8eac02ac312c4de78f77f59da16cbcf87274e66801c4b862c33ea79cdc76528862bb2956c06db8b8acfac4794ebf39e35ac03cc73a4351a4ff762f681a48d6f25cad36e2814c9b5c40b9ae92509e58429106847789454d376836936bebc7a80e6c66e7aa52936d6b361378a41f849ad4e48f9ee2d3e92217a908fa8eb35736ac8ada7d32ae05391f2d807be3512543c36138a5fe660dd4cd4cd184bb43b6ba6bc0bae634e2fa9669304cd510ed5103f630068ff76d3375738de60a381842b421477e25a490cdd6894b2704125 -TAG = 94118ccc68de1921d480aab43d1ef0d1 - -KEY = 2cb374cb048c168f2e43597f028d9e73cade1b458284ffc260d4fc6b9011c414 -NONCE = 000000009fb909169bc9f4e9 -IN = 39eb929482784b463546f5d84f80510f2019923d465b99d194246d68c7ae343f91971d8f7059cebb86aa5dd099289aa648248b8c5ca04e66ac5e9bf06776e3883495397618a0227f035666806e636836b47d3d2d255a49db79866cf00d9ddabda259c4f968a1e01e651c7811cebbee2ee71803ea1d9d23487eb221f2d9555756800aba5e6abbefd6fb72b3151cc99ced599cd86df2a9b1ce94f89f347eeb124d9e7f0d9cc48d3dedd819e6d3dbac57ecee199547b266116a2035c9acc4c8ca3271ac74952372897c4a5f2cb84e2d81817fec9d6774f6d8a5b2021684132db4fca3 -AD = 0c7bd4f3a30ee944ccf9489181e6911684dcffad4593a9b65a67dfc80718c69b35897d01281016b7731e12c15cad8482e79458e08a755622e3f3f22a23ef6c8487a36ad1771ba06c641f06f85de0db3776cc6df06ad8fe3b4d60d58508de943083f17cbb9dc0d390ac94d8429e8c6fcfe063f424fbde0f62f6a7f91a626d195dc498a6e69bd93109c4e9ba13e7330aba456d710a4b0cc279d4045660406e26d61dff70d4a33c4f1052869f9248024e7a0f85f1effb32f6f7ccb1f860f3ef04e8f7b29096e6bcf9d4b3e0ce703e9bf228fdf515c2ff9cbabd16987be0f9babd3d8a -CT = 91ddadb86b7ebef798ddaa59da51d71316fcf6c9678143178227d778750dc9827fc6cc21e605c505023e6db25849df7fb6fc1ca4d223aa215f8c85b724643c83bf8218815a9f9e2952384e0ca6a80a3760b39daf91a3c6154c4728c2371fd181fa3764753d0b0c23808a82cd8f0497246e3a0f17f8906a07c725d2891ce968a9d432c2b102d85c05510b28e715bb60d0403a77490e7f18be81218bc4f39287b9bb09f50227dd2f55e4fb70c4438da8ba3c8ffbced87d90155913faa9979fc57e6cbeddfaba3d3ab4163c0eebc7d94279c27d3ed56338893dba542eaefba30f8c3b -TAG = 8980e8e4fe796428b733f4f8e1954a45 - -KEY = f0f16b6f12b3840bbd1c4a6a0811eef237f1521b45de9986daec9f28fca6485c -NONCE = 000000007ac93e754e290323 -IN = 0530556424d823f90a7f1c524c4baa706aad2807e289e9479301e3e7a71f2a5e14e6232ea785f339c669af2e6d25f1d5a261096a548d23864945c3a589b67b09b0304a784d61b42b2419139485242e0d51fcbe9e8fed996d214de8717e6a71f8987ccad65eb92e66707034a5ae38e6486e26eb4374c565aad5df949dab209f7f7bcd8eb6fc52761a26cfe5d01fd349e59f4042e6dbe6b232f9301b971dee121d8aa1e62d40f043a42f3aa859d867eb809b1ced5ae1ec62cacf94a69fafd0631a8b5dfd66d855900fb295eec90ae5fcbf77beae267a79d24081bb322d8c4e0630fed252541b36 -AD = 13bfcc17b810099cda31ca53a1323db9b07633ceb2088a42263a4cbd6a4d47978776005c9a20203319c3a3ae434e9a26fb541047dc9df38dc36c095267272e203d0b24d119a70a7e96041b6d82b7c4d5570e1e4a1cf2f6e44ae63fe005a1f5b900778c482f7bd89e2e02305e35b8f61b7bb2c78a13aebfce0145d1c5aa0bf1d10d23616d5a3a446de550302f56f81dc56fe4f3700f14242688d9b92d8a427979b403c8de8c493a2cde510eaf6b285e6675b173aa0314a386b635c7577d5aff0d868a0cb3f73c8d2005f8c7c9dab5a060ef80102c9d4a4af988838afe87aff04c0689e8c3c7f9 -CT = 2c14c3931e98e84507c4c165c2ed47ad4a178f0e216cd7ac2453bbbf9f85dd06bd8ef54a9ff1fd3dd8e0cafb635d8f2de861a0db5b14d03f17aaea8c89b3010797c71c13a0e666899d7ff6e53c4f08be8ddb3e37688b5afa088079b6c7519b833e16560073e699530302028a3496e05edddec01a23a4c7983956250e8d9e616f7b940856955cde81c1efabf6b7b92f153d03f4cd17e7f7d2907670cfc84d45c1d7936775a3fce47968504278ffaecacea0871b227f250e2979516f6fa310fec0d8df1af7872e5a534e82870aa05f43ef0a455846b93ce938064fa33e92de262e4156dae56775 -TAG = 16c972829819b8fb030b2c5f40dab717 - -KEY = 3792943c0396f1840496917ce8ad89608385007e796febeea3805f3f4cbeccf7 -NONCE = 0000000023b2f9068b2c4c85 -IN = be6b67eb943ee7b5c785cd882f653e73a8f75b4a41a2a7c56ae5a10f729caf39948fe48ad0e51240e2e7aa43193c7ec6ce7f4909fc94c9f99e38e6a0ad7e98eb29c5c2e61c99e9cbe890f154185cec213a74725d23c1a4e4d0cb9b1a36b78c87e5eee20d2aa29aae80d4759eb0c51c5dc3a95bdbbf7e14eb434419a6c88a954ac03d0c98739f4211b8732acd71c297f578b8cb64ccac45f7235ddc7f2a3f5f997525c1ed39dc550126cdf9cedaf55425489085e91b170be6205a5a395f2dd4084a3e8dbc4fd8b13252f7effae067b571cb94a1e54aba45b1b9841308db0cc75b03cfce4ddafe89ce20f2d1 -AD = 7eb6d7b7bbaaa3c202a4f0f1de2263767169eb4a64853240d48c0f8d5d31b08d5baf42977614a57aad99426cde76d242cb37d2956d8c77dc4fd62a3abf30e8ac6cd58c8ef35e67497022960138c57787818892460f3bfc16e37ff388b1edc6ce2bc53c22717edc7a03d4c78b0dbbe9121c7fd8a3e3993b87a4fe389bff13bdae3b349de0b6db561602c53f746022aeb4483c723b67825042f4af20b7dd1e6031cf54215266295c524ac8e1370424c5c5e607fb3e23e97c8eebe64656775edf616422a8b974e1acf13ab45c9a367a7dd9b2d62f48bbc05819b65eccb813ca813f57b22ee4c280dbb5a9d8d5 -CT = 0b316ab2bcf5359900fa4082d5d253b49ad94b70e3fab544f98bd111cbcef6766cf953deec08cae1f489fe12f7acc0032db8a6b0c0eee0c206ea5fb973feaebf90f690e840094db5e13fdd7157ba127368c995b426529435a1bcdd1f14ce9125b8a0e4c96b6ec09e3c36a180adf81941c002d19c19d53c2009be803b987504606b7d43bdee5e0b32ff23c466b6cccfcd0d4e88fd1332e73712b5ab725c1a383e584f34f80daff29d285ae5e43cf1d0cc7a828e75c25daced3a581a93d7a50f313b33f38dddfaa23cd5b9914797db820ee2400d52bf5fa982277fe9b5881ac42981633b3957b0e935051828 -TAG = c549aa944d6d97e52e0793ed572682c0 - -KEY = fe4be6054773f634356ac328591fbc6f833b0d1beeb38dd5b6feb7481b4489d4 -NONCE = 000000000b3f16f898a5a7d5 -IN = 76ced1ade6d1ef4069afddb32e7432d4ff2fd06685121f7b16464e7a72d365744f547d2ccf53486310e38b42d8bacaf711e54c5458d2d68c4dbcc8de31ab6732f4430e88a64565f5b287640775aaa2af1cc461d3e415bb275c6246b1b58517aa72667eae291a2982eda175d1b22c5a58e6fec2b3743d55712f201ca24ba5c0ae8c25724871b2ec2fb914a8da5a52670ab9b43a83b8568ce74db5c634061cb80530c8070c38b8f48c33ba136cb9f2158ee7eda8b65f2192fc94d1291f182f101795b7190c74b319d2d3e02a97c824d9c9471a83797e4936310b207e3a1e0bcf75f7c3e3ee48a747641cdc4377f2d55082 -AD = 834cd775cbefe4b33a3ca53a00c06a3c4a666983e4115a029f15729460daa45d1505e95172d3695625a186b28b8be173a925af04665f209267b3c5123e8be13da447ee1ae856bb0925f35aaa76e04a7bca8460f76c2024de2149f38a8cfba81694b854885d72568105571b6b213a0bc188a44cc7fe13153cbf261401b238cf12a95e23cb56f240114f16e2f1e3a514615aab4449c0c49e4d900b0e17d1a8dabb53d43dca32fa052d576b73dd9b40856b515d6d7efc2a5c17e0ebcb17bd59dc86f22ce909301a2652f134e82ef0e4519487ed12d51536024f2ae8f75d937c42d003076e5dea8de0c684cda1f34253d8fc -CT = f8defb6fe95dfec499b909996a1f75a198a90e4d6c6464d00a357a555311c42fe92dbbc4b79c935e4f0b1a95e44fdbc1380bebabca28db4dd0d2870daaafc38ef27908c3509e945714801cc51f1a07b2430c74fa64f2a7c2f7fd1551d258c9c3be020873fc1bf19f33ab6c660911dcf2317195d0efee82d20ec26d22611f9cf86c51a64e28b3a1f344500018e0855c88dae3c07acaeaa10b60388484dce93e16e6e1a6e69e899806648a92568c8780e9f4baacd98cbb353ac2f908e775d92303cfab843f15be0e0c322a958802fb1a60fcc7631f151f4c2b8cb965d2d296acef250275a2fecc0cea803ce7c058b12dd2 -TAG = baf9a51180f172e5c0cc2c946ce55055 - -KEY = a288b11ce5382ec724ce4ab2d7efa8e777e91ebd04367935e15f9dac483e9596 -NONCE = 00000000874144dbf648b325 -IN = 4c9195280a79a509919af4947e9e07231695fd7c5088539f23936ce88770ce07d9ad3ae4a463b3a57d0634d3a77ceaadf347a334682b04be8e58b8e86fb94a1f93255132b8cdb0df86f5bea354eea4e8315fea83e3fdf6e58aa9f26e93caa08e5e2551a94bd916a51fed29ec16f66800cda6a0aa24ec308bf5fb885afba272685de27c1edcdd3668048ef07b06e90d464a8aa28664903cac45e154e8e1e39c257e1ff506b9d95cef4f300bb73b899e7828602c3c1d290b8cf55ee5fd72ecce9e6efc9293aebf674a70e2a7673e75629c12950622dff71d3ec0992e57776c788c6927d30b4e24b749191c3ce8017f0ada6276e43720 -AD = 04abe8588c8c8c39a182092e5e7840442bd1c1149da102c4ee412bd8b82baa5087ef7291b5cd077c177c42770b0023e0e462b06e7553f191bcb0315a34918dcdbffe2b99c3e011b4220cc1775debcc0db55fa60df9b52234f3d3fa9606508badc26f30b47cdb4f1c0f4708d417b6853e66c2f1f67f6200daf760ceb64ffc43db27f057ad3ee973e31d7e5d5deb050315c1c687980c0c148ee1a492d47acfcd6132334176c11258c89b19ba02e6acc55d852f87b6a2169ed34a6147caa60906ac8c0813c0f05522af7b7f0faddb4bc297405e28ecf5a0f6aac6258422d29cfe250d61402840f3c27d0ce39b3e2d5f1e520541d2965e -CT = 0afce770a12f15d67ac104ba0640aab95922390607473cbda71321156a5559906be933fb0980da56f27e89796eaa1054f5aacf1668d9f273cc69071b9e8e22af6a205a6a88f7ad918e22f616bddbb07c78913c7e056e769e6fcf91c7600c2740212e3a176e4110cac9e361a59a773457064d2dc652dd115d04f1c3756c0e1d39f6737a16b4508663e310934c49c58058b3c7b9af7bb2334c8a163608c42499658986927cda365e2aead3ac29de16e47e954383ea566f8fb245a4e5a934c767bb3bf7e0eb8a477fd0e1f61bcb238462a0d19c5cea9293ca58ade76829413216a7882cd2846323046694f78cd8b0347792ebb75abdc1 -TAG = eb9b2ee43e9a3ae1e33561800169d868 - -KEY = 65b63ed53750c88c508c44881ae59e6fff69c66288f3c14cfec503391262cafc -NONCE = 000000007f5e560a1de434ba -IN = 845ef27b6615fb699d37971db6b597930a7ef1e6f90054791eb04ddfe7252b5f88fd60eba5af469bc09661c0987a496fa540621afeec51bebda786826800943d977039dee76235248112ff8b743f25ed5f3cb0d3307f5e118d84fdbb9c3f5531bc177fb84549c994ea4496c65e5249da987dd755d46dc1788f582410266a10f291c1474f732183a2a39afe603771bb9c423fe3e8906f2be44a0c9a7c3f0ceb09d1d0f92d942383a875c0567c7869f045e56dd1a4d6e90c58d44fe0c5760bb4fd01de55439db52b56831e5a26a47de14249453a4f8e7da3cb3282c6622916197ebfaad85dd65c61e7d2d3ba626276366746f396394c1bf75f51ce -AD = 51a3588398808e1d6a98505c6e5601ae2a2766f1f28f8f69d1ccbcad18038c157b41525be58ae4527a073748b7a04809e52a5df0c7988417607738e63d7ead47db795a346b04e740186e73ccad79f725b58ee22dc6e30d1f0a218eda1791e2229b253d4ab2b963a43e12318c8b0785c20fca3abcf220c08745d9f9602f0ece544a05736d76b12d249699c9e3e99f3f13cf4e5dc13a04125c949a5b30d034b23cb364c8781964bc6c30e5e5ca9673d517ef5f35965d8a8cf1be017e343df97b6bee37b30638b154286d1f36d2f9a0eaa23cc484eac5a05b15d9efc537d989dbc8b3106c0dc1a56e97e6aec2eff54a82cf7ae9df2af46b4c860f83 -CT = 027b14197b4012256b133b78ddc94e72fb4d724fefa4ae329f5a5fa3fa784fe6d7e1e805e3f7a75557de64de506d38237b467fa577efb59e7cfe2356bed6655c5aa4e238dcfeb75c16549a0917268768a96acb5e20546a1fb7e3a7cff887f49f2cd7a135f72a98a779150f3207bf733e88861fd79eadbf77fa3bfe97bfe8b6a991cb3bcc2cde8287f7e89384846561934b0f3e05e0646e0e1907770df67a7594161a4d0763faa6fa844080932159999d528ee0558710058ce16f97d13ac9fd9bf5044191188bbfb598d0fafbdf790b61ce0781ecc04218a30ded45efd498cc9ba03562ed2b4a993ee98876b3ab7a9bc07829f1c4ca6ead98c06b -TAG = e0bf9b6837428843f5a233ee5ddb8a1e - -KEY = 4986fd62d6cb86b2eaf219174bec681bebcdef86c8be291f27d3e5dc69e2feba -NONCE = 00000000d08d486620ed2e84 -IN = 3a22ad5de387db4fdd5d62a1b728c23a8dddc50b1e89f54f6198b90499f9da3122ebeb38ebf5fdfe30309734f79aff01e3de1e196b35bffa33bae451f31f74b8aec03763f9e0861a34fe5db0b40c76e57c7fc582bfa19c94ee25b5e168270f379bf9f8a0a18bed05de256f8f0dd7c23ba2ff1c7f721409462f04cc611ad9bd4c3c9acf30742acfb9518a6375cbb15d65a1bc6993ea434894f93d4f6e05996ebc1bd56579296309a2c6b8fde95072168b5fd31927c4c0abaa056bcd16221d5f220be47591f43255013a262dce439817f534830ba82155347e5fe3101f8011b89365a6568214ed0661914e8cb3431d6c8f2347dfc1209a3eca4aaf0a111f47fe -AD = 7dd3f656a03c001b45ca0680bc3ac9d68c6e96b591d3c69eb8c65e489009d845cb331c98b82e627e06d5bf01e74c573df268c2386f12628c019951d42f55991ff20d72a7b2c45f41d0be7af428c92f324aaab8df70d900301cdf09a3d93eb711c919d34a86fff9cb078322ee2e0ad48dbdf3b7884f0f2dc5c36262c59bcfd75ac6200f59c6fcd0ce10ff5005fef5df8f0432377dfbfc1db8f559e27e1aeef3380ea3864867d36a25a18654779a751586cad3b8a46b90864ee697b08605673b8d2123433c020a21c4db243dde2420c12fd4d54a2704a0c8c376454a1b5e80fd6db89aabd56d9b421f29649e474824dfa56cb5c673c504d10be52b53751709fe -CT = c40180afd53001663ff4834110f56e6b0f178cd3c0e7f7de5d0089ee41d8403ffb98e84922706544a344d7e2625b12cf66b9c966f9f57d7b94e3e4b34e6f0aaed1763ce012782e2f5e1682e6c343fc7961fedddd0919d0b910e9923c17e36406979b256b85aec24ee352f03b48c1302eab419c83dccc5372cc059e9de596224fa70098eb32fc9579e97917b923914fa2efc30ab29b457bf14e45583b3771486bdc0876f3ea6e1a646746c4f8c5cb2641a1557c8473e6ea67d4811a67485ae9a678ff3a2408ca845c3b51957e189eef47dfc1d46bde4b9d754d7df13f828ddadb06e4ebddb5f0dafbdb28de4c5e6078926f20cdf9e97ecd58e309e640f74f06 -TAG = 2e8eb9ff4467c0f61c2abf6ca10893ef - -KEY = 7d28a60810e43d3dfa32e97c07957ec069fc80cc6a50061830aa29b3aa777dfc -NONCE = 0000000047738ac8f10f2c3a -IN = b50278ae0f0fa2f918bb9a5ed3a0797c328e452974d33cbf26a1e213aa20c03d0d89490869754abf84dbbe231d7bccdced77d53fd4527356d8e02b681fc89a535ae87308bf7fbc26197a5ea85bdb3aa033b8da5cd197ea6d72f96f63b03f4ecc7adedf399a5043776cdb32c08f30b77f34df85f8adb8e02649a04b020b03e17d445ca63e4ed73ae432c481392e031eba2f9d2f7f981d1e50917822bd6ff71c239d33444ada3523a59dfbce5457eadec1ab926c9e6c5299c7521e3f204b96901a712504fcc782e8cea80ba12a7f7e71cec3d0871899b6ca059061da037715f7d13fed01c9cade1e687b4fbb1f4ac4b040db3b43800f112fb900e4f772d61b921cbce4da6f -AD = 324292813b7df15bc070cc5d8a4bf74ead036430be63abc43304cf653959a24a91c7de5a671c50fa8a87e21bb82b069999aadfb6895d8bda4c3083d17b8ca55b9ab1511ed8c4b39d8c28c11a22ef90c08a983e3fe2d988df9e02b16a20b24f39ddb28429625f511db08298c4dc321f6c268fc836a6191df6232f51c463a397a8d8b33374abe94e62c0f5c322387e1fc4a1c1980a04a1a3c2c31b32f183a11c3268c6dca521149dc16af120a78be6627210e8ddbc44472bc24d66ce3681c7579b3d9a425212a704a4f5105cb80f0d18ee860953d10b59c114826779bbc368d7a0eece9f223e47cd8e5fd453607d101d9d9c2bd9a658d6520b87d7b4263f6d845a524a36e4 -CT = 2c217e969c04740a1acfa30117eb5b32dc573df3354f4cc3bf8f696ff905f1e640f3b2c250473b376622e0c9bda13b94640521be1ef0fc660b4c10dbe2bfc093030753e04f6aaecf813b43b61f960455974b8bb8a9b461d1e8fd3802315e863c00448f24dd38deb90e135493274eb14ccbde15c50dcad734ed815a806be6622492a84cd062e3ba567b909a205a1d0d2bedd40169697d261c7b6c2e0b1f069853fd470e8f364a142c386c439a6dbe192ded5a3d0fbf73799f588c59e58c60249d980ddcf0d9693631cd9b3f972509c3a77123d38d9e267ecad06e1208e3f1c0a69fbca7c3bb1a48fda19493d0f8f48398820057b94120f3ef97d87e9e8a1b301a2534c68f -TAG = ce507bdb0c71f8e89f5078495f7995b8 - -KEY = a76e9b916f5a67b78a5949651c8c3a9741a1bc3c41cdf85fd2c8f3e9a0616098 -NONCE = 000000000808da8292dc14e0 -IN = 9c149eeb09345c3c22462b03e49eb4dba6bc98b269b1086d752bcd8eea53b8977b238a04a994baf915591686baab90b79a3bf7d9adb2c6c2e31acd3e72f0813fb745aa5fb2e3da408f78001c9c09bd26a1a2646011b6120aaa2bbacc4a16c39fb5257b9b2ea2ad8bf70bcc9855cf11841116c2767310cf3cd49d1aa44cd505f079761e064d5bc7cea4a7173b086882a77d3fc179efc86fc4db8a373491d2ed81eabc63c950e832db17d09f474d4ec46bde47830caf26fabaa0372b81fccc449c0e19ccd630caf693a7b43bb1c408a54e03f50c44280a05ad89fb6e8f01d8ac278edf556e5d86ceb4b614fb2ef133819c6e1ff6abb86c54a135256204b5cd400b93624d3932e7c2b046 -AD = 6aeb7031e4a2e23eea93f05fdc562aa2bf43b8998bea7344377aaddc60fbdb7bcb1491d379ed0cb613ee757cfb66490db61bb431d2fad34b38ddd55bc5b22aa6c4773b9992f34b878c5663f6e8cdb5f80a17f4d312bf342492e48d1ce4c6d754076a634fece61500acf8168d47381af4faf980c6cac2bfd5da8c09b6edb0f543bf0fe02643e38d73fa37d8ae87fb66193f22e57faf4393c007d48c8631a685d520578f8f89db684fb371ea02f3a58b1e2168f0216321139472e0d03b6d90ba8aab65402e1c1ac4f9172a60e27e3d997b9b05e2f672120d6c87bcafa6d4c9b4cf8ba8a82932d92840368fc53dc5b48526103dcab5f1531038aabe89171327ac559b98a3cf4ea70bf051 -CT = 9c3faab9261a63cea9477b3269007283995b06ba77ef83d9e693f7e4ee9855550eef94855be39a7a435b6a3584b202973777c7b2482376ba47b49311947a64983b60236756ee4455d4cfada8c36af8eb06b06ba2f6b79ffb1185c89f2b2a831cfaa3855fc1841d8910908be5078352011168a67d36372d851a3217cabf593ea462dcd325cf9a4f67e85418fd5c924e9b92ab026cbee4e7ab1067066cb5949dfc699a68fe539e1abb13cec33904e5207e6963d24f5a0b770613b8b00014e791bfff88f9c25ca126127a2f8d1d1e9794efd28dce98b53e228073faae8d5047530d502184fc341321c3f55fcbf41187fc31262c325b97f519959b6a29b36c71f76f60196bb1457b77c8bb -TAG = 73b00b1705602479aab944dcc1b282a2 - -KEY = 98cd2477a7a072c69f375b88d09ed9d7b9c3df3f87e36ce621726f76e3b41a1d -NONCE = 0000000077d185aaf715aa48 -IN = 42b31eefdacab0f03ef6060156000c8195adb0976cabbe1a42bfcc09f85659c60b98638401f2d2e2facfb9a97a62926bb0cecaf3af0180a01bfb6e576babf7fc43331937a92abd30cddfa3e450f895e9dd914dea3fafd759c136d685310ebce28ac0613ccdbf30115946c9634b67510b77d0e37f07714b2ddac9d7095b8d4bd887c132c4a9127eb01c8dedb4c39c87b98a741316656f9a8d5a5b0c0ac84789aa2347a5f99ca5ad55cd1bcf98f703eb4b00badb8a8555f38b3b368db8ba7ceea94e8b219f51edce75d84166b5602156ed5962a93a51db73c59d87e906179d7a74a2a2a69d8ad99f323225c87e475d3f771b4a203a2e2b03b458401044649fa6536dfab24d7037807dcbf6518e6578 -AD = f5bb1496052a4361dddf72a288e36953a3d815d6876c013f1d6ba839e127f721b052b1f7d8ca20c7dc0386a7d459ebd7eb9fc8cb08941e6ca9ddb980f3115f65bc1928a414d441ae71dcb879d5bfe0cde0562bc37f8fde0d5291ad405c92fcbb860c43b55ac0fe663b54b3d0616aca13a5c82b7b5d34125a05c2acb5530141030e6f2aa0c8322b2c8fa307e7518918e550e9f48921c6168f094d8758e16b9f815fd0458095c4143f0922adb1840d0e685636825a9c90ee90ee537f4b8dceecbc4287c82dc9a00d7e51671e37ea284ee3ca501b1b2596459d3f592f70186f41125739e342c9f6be9241973b1414dfe5fb8cba1af82e679278cfcf95420df0c5364af4d7e72ad57d5c871fcbc35462 -CT = 7a3bf3e3ad5ae3ab71fb1f7121c3d8fb511099484b50af7ca128ee0337ed4b828dc4cde0b88dc1e8089101fa82c9beb3eb48fdcf0f5b16da441f5a3fce9a590022af95a94aed6a3e71e505f60f303c78c356f274ea85a55354078530664ecda32c80e77dc20974b3b38f4825b8fbee8c3970769a2f42c5181608a8d7d76ef4d093961b665ee42b9708fcafe2c82d3a307173e2a25ad2528c3bf83352b9265e45b70722d7cf8c9b80826d21335234ee3db69d0d37871c83222365900c96c17a7e9f5742d0bfe383be24d0d44590d4b0f29f7abe0c65daaffb968b3f2657b1eb300534eacb52ec7a6b6f9f57a50a91b1799f491361cf613c934b7f520dc4eeeb40ffc45e10be0a95e76f366d4eac14 -TAG = 69302888812eea030d621b640e7bcf7c - -KEY = 2f0f4631ab1c1bcf8f3ad0559c818d50e0af7d8cd63faa357f2069f30881d9cb -NONCE = 000000007d0ced2fdb1c9173 -IN = 6516ba1d29357144eebfa486d21decf223da3aa76ec29bbfcbe7f1eeaf4a847710e5080177f7e5a7c8b4752c219b1cc70aef4db861ba67d0fa6222d9f4a1dc756a0ba44e62906f9374a960c16198866d867854d88f528a60e212eb91645787e75685b2e215c0a41990abc344a77236ec0186ba63a664592938cc5a8ac1d3eb99c95ce00e19fbe249263083d85b052d48bfdffc01585dc57bb2a2c6c4a819604c1ec0548c6f0f78dc05e4418b36277dc07233c7532f9c289d6aed0cc6bc7df4fd0a536c497b982e2dad2c30d2db1c6545a845c5dfa83a4ac49ef06fc9c919079d3e299e31b5c3be370814ae5022ae469d3ee55246a41bd0dc4e64351cc38c3c09af0a1aee3b388a6892deff0df3f93cd92d722b -AD = 1ccfa1ececc8de1e200d0ecc19dcf67b7c96bea3a282c2bccba61035db5c14776387b8b8f58e5757deb0129d4e5e315f64df354a5985d2e47ebbbeafe0c914f7cf1d63dd0311ace19e69a8b6ff0ab25cc8df0408d22132205e89e5eb679268d82b2913e64e3f885bbf4a6d379b760b94590e3140dd7275ab4713cb56d0b716e2718f11316640cb394802862d39e77a46d0c065af3caf7dec14e887039d8aa8c3d3a8ac1ee06026f49d00b2f59d971b54735e95a51f199389a93a4fc24ebaba1f7a2eef7412f61febf79084fbf481afc6fb6b204084e5ef5df71f30506459dea074f11fc055cd2a8c0fc922c4811a849984352a56a15659b7d07a4cc90b88623638ea00c4c8bc13884df2237b359f2877aa41d6 -CT = e580093789ba17ffb46672dc326f09278aca08598d3e5458eaa53e6ed45d5c71a396e35b5ea3fe7b7c0496a734d24f1c75420694be2ff095d5172fd3407794e4b99fd7c374fbe8d1564a048614d3f355bfb5866de1a53e1a51f9f5e8312253cfd82f36efaa1898c850ca0d975ad1e8b0d9597a5a9e6516fe2a3c92efb7495557a8afc3da15b0d3e2ba58f612519836946cf2d15b898320d16a026c8c00a1be2e35f0ebe68f28d91c6c45d24c3f3c157cb132fa659b7794df883d90741fa2d2afcc4f27858e13ecd41b154a35d24947ae7361170060c107d8ecacb393ea67104b60457278a392fdf1794bab97d3b02b71a4eb015eaa38a4b4c944c2bc7cd5e329da4a1ab2937a6af81a6caa5fce752331fdefd4 -TAG = 19bbacfac768bb0ce71e39c5d4d3e9a0 - -KEY = a48b9b6df475e566aba7671fbd76772cb0eff0b12499967978ce3e25fac92feb -NONCE = 000000002ccbf0d6c40cb302 -IN = 09da1cacd001dce4f7573a065a4406fe0da04ab367a2d87780a2762e168957a88d3fa78f0a4b6978d449026e5a801d32884b6e14fdaaaf864214f928ebc03dead081fee96683ebb032362d5088c4c2a3b1e242f055f2604919f4dd551db777a258cf9da6d95a2bde249247812b9efc7985cf08707620808524d6dd3079b0b63bf0f71ea5de834ccb8b7c6a97125fd6ca49148e866d3134bbf1d8a6b714e9a80fe549c8bfefe342f41be2ba2300e0028f78cefab65274632dfdbe70bf7d655ec4036df561f2d4fc4d56a482bbe2f9f2ae279b3aa216b39afee75e53602de319484db89a51e844f38c361634e474f8f1f01c340f3f3594860d671346449c6d08ee38de22d246309bc7e4a252a29c86aa6d94b5b4fa58904c70 -AD = 1c2503d5aa1aad193f0da12874074ea0432bb76a61cd43a3017061514da0759846a0f3ae3a49fdb0b6d29f713de665beacb6568f2694112ca380d13f3c1698316866a7a7f87f1d7503a92176ab84fc08977b46ba664508a858e7525753c45511b3d2f407d5e993c6ede77f13d12975707e5195704970a89f71fc30828049f92f944f3aa93d6a5297e678e08952919beb7eac5919df1919cab3c3da6aa696a1eeab6371f310f7e81143e7d240b0213ae554524b52000306160dd4877bf13ba0f13bbe867da7c7d707f31335eef4cd942938ac890a0829ec66bd30ae01a2188a6e5ea0f17cd7dc875e17f03c0ab5dd18e36db8a1fc1f72859ee046b62368f168b3bea2234e0432c07b7d8e1b9277f21e692c513b9e816e6860 -CT = 7d35cfe4be56bd6e0e09dedcd01735b915bc1891a4d1f6a541abc4bcd0ebe89dcb8e365e5813742e8ec65777b6159422fada747da99394252baf8a046fc1b60ad79755f545f4448627b7acaf403000894f5641e78d3f946dfca29ec617f0660dcd6e8d8827e67e1022a245c595d86e60fbd176bf721b171bbe5ecaf4ae671b9f3dd3920146e6ad431bd8fc431820e19454b6ca209723d80fdbee187fca9c937c979206ae97be55f6ba7366a5608770a11d537396485eb0a66586385f4d4cf3905d1fc90831c3e136d5d513fa22be285193142994a3ed477145bacdcbdd791e8b3b88b0d4f1d18b27382550a818c4fd8884bf36f677c6c3ff5677406e510911e696af75e5b3f859bef699bdd16e6215fdb98d874025eada50 -TAG = 0fa4cb2bab84336409aa4349ab99a8bd - -KEY = 923d4b086b9e43b986f7b65e4cea6113a3d8aabefa89323c5e4d5b6f158bb7e0 -NONCE = 00000000a0f73297b87f5deb -IN = 21435e8d5c8edf0684f58c2cba4070c10b4801adf46b6c4d322eb3990a38a9ad338ad704b9df6597f3e68d66cd5b56290c8466db2231e56d6bcb9c44e1bd081f42ca2a894dad369df2bd0d2c63d6c881732d6ea22bb22b5bc9a62eaffa1b094d0845f6b966d2cb095e7b3b8bcbc15e707449d35c8df4aea30c3b7243e977fffd59c80f1c5c9af4bb5a54b9c786fbbe8d21b2b906a87a786caed841a34a3e0cc0ac3209d83c58afba19edd63622dd261532d2cfb0b49d527d8eaa0887a087f5129d897f665264b229f860363d71a88b7d49c8dc6360182b357b0662391bb41337f46010ac32b9fada2d60a2efcb99365d3b27b7ac396900d1c821d0df8b86cc9cc1f2673259a33efea610bf8e1d00d7e9db2afea21da8f58c55f799999d -AD = c853a8b39c0dc597d562f123cd221e4104b65423a062a4f4ba890ba344feb84290f61817e23330c365f58c3583ce08360d3c1171982ead5496d525ac878f23a57480a6ee39d4e65afd6268245bb982a2545fa1195427cdbbcd404cdad5198f55cce2a5a028fae435f71b15921d066e8d43766c32b2f2c3f57c0674e129607dcd3703eca529414adaee79d81fed432153cceb6f3fc53404810d8ec878f7d94be5d379d0e0e1aa9bc404b4b5d396038a9d76a5ce53c9f3759b8e50fb331858ca58cee81bfc3ee58baef5d19c402a3dc8b36370ec1ace5a4aa2527fb94b4f933a4ab8ccaaf6a5af5a779eae5667c2a24ab027e781c8d4f30c377aa5885a2fdaf6507d18cd824a847c35368b4ea984d2c3c3824a5b8ba3042e1852504a21a3 -CT = f2e21052eebbb86a4f5e803360855d8632aa727dca6f5e79dd74d7aff106e442001928d113005b030f8446f8eff2ee951db663978abe43090dd5ad2c51ba97a0ecf988c607d95e486d02524f690fa3c28d5c48c1f75c1f555e7b43fe7e46f2ca2b9fdb408ec4ba18b6cdde2af673183cb7b1a3c23ae77eddd4cac75e1ea14743fc571f8d31ce2e96787524cd48aadaa474181c096a032184574ddc25a6e0ac8441c212bc36298708e33c963ae931e6c6241d1affeef7b6ef759495df44b6ab647447693cf703569e69aa72f1def9a342b8978c1edea9703a421ca75b92cac4de14b88c693200022b8a2ed22b1c4678b99f4d695e080dd1196d7168e14f0d0f8ff880d742e97b9f6d00af1f7118e10b77c5ef3ea6c52f84a20fd6ea46dc -TAG = 9bd8b7743c056bb2334833afd6143e18 - -KEY = df73adab2768559ea983cce85453fe81d79be3b3c57f202b31b94d6635cf2e4b -NONCE = 00000000e7a87e6bf6b5a354 -IN = 0032a37abf661faa18c587fd2aa88885c061deeba81105dd221969bed5d59c7204b09b1a8c4c8de3b9f748c7fc70626ebeaca060233a57b102221b1bf0f3d9fdaaad3d2b1439c24d08f9c67f49f3c47128f92ee530abf4c4f4573bc60ae4b38109f55bca3ca9e1ba9f9fd6e34ba0d174892977a53356e1f5c88c614fe3ff3b3dd0818e7a2285412e3b37444bbe8a80942efcfd03958809a6966cda9430b2f0c9e552f4bced6e19eb3e85fc5758bd7b588297ccbed37ed94c3adc8c08ea8b058462aac9d57a939ec711bc4ecfec944d2b653b7cfc7b02a65d7057c9fdadd51b9da8cc4a3c68dae9da8b9c5319c1a2baa3d6c891c5ac4a39461484b5a01abc64df447ada24c04a4363e605eaccf339a9aa515e724206206da6d22bbd2f52e64cd7c895 -AD = f833e5ab4f8bc89167f80f576b1d6b22cdd0e30721f5f735799746cf645b6eff531d4c7b03584f3dfcb73cbd35ac42736216dc7f0de098a4f42c61ceb4b227ee288e47d697a0a76afc762f084e8fdbf9351c28340c324771c109a469341ab10ca10483ed2af5e878d7d3dc2bced2f72da3d1a25852b103ee9878e8158eb4309c1ce528f3a178ace153b6d3ae0af0d577cb3cb1540489e80427f792217ad8a09b84f027fca7ceb651b4264e98e94b4cb8a37b133390897233e8ba9103628d05b9609e8552c4a4b11e3f2fa8d56af36957390e88cba44656be3edace798cf8cdf7771bac338a256bc3cba6df97728f222f423ca7c6d149c9372d66163a98f79a234b00d4b75fb2ec860dcc2d1998105e4b9c01d68f079f3e0aa21cc534047fc7b858f8 -CT = b842eadfdf431c135bd6581d3eccae54e2267d8890036aa33dfe2d2d9715c44625441210a3a0d666d708d30588fe851ec36e10d8fa3584ed77b095149494b7c54379d62c8935e1d2b9a8f47e4759ad0b3437fdf2cc2fb6c5ea25ad10e0bdc9dc5b0517fc237eb783cc461c46665e2b1d1a5b8008dbf409ea2a63fea0276de23a32c99d92a498807a0f95e208fc6262321a78aafaf0cc3f833fff37bd4efa66f6023a25cdc6702cee3912799563d908a5183c9956a06aa71085d855dc7c809ed6e2889592b361ab3ab39060f8e419152187a794a19c2a1128882201900ea2cd597860674bf78d9720643df8701676718fd201baed4935a88e50558daf86edd08a9ab227ac7afae55c974b68de8dacad4a4d79b13ed6dfe74017a4cb9148e033436fb6 -TAG = ee1ec36804e1d5cdbddb52608c711fd8 - -KEY = 55a4be2448b464c2ea52a2f2664ed6aba865c14ea1fea77f4689331fd105c8d4 -NONCE = 00000000db37c0a405b4626d -IN = d266e66272e5d3462081b004cb42429c8b9741e9f678153754d726f6f9aa513464763c5e793b482fe512fece97585f1426120d4cefb3d0a8cc0a8db4bde93fc72c78f44d4fecca14650c660d3e285b327e7cdd813063e7e867b8a2d059a41bab70432b7f857199894da90dca3fe5272bae1ec694a1a07b60b05df275784d4975637e4673109f3ba846dfd1a048b202ed8e89973be608b91ee4743b1e759900f1443038951fe6189e806638985f3c16338c3c60695df58e621154d79bb973859c4558e9dca90470f77c73f004443ad5db0717abbe43266f90e57397b83ac34d1fef2e897e2483d5bcdcb627abd64b0d1aef525835f25e76d6e9158232cdde6dce970b59f58de8a98e653be32fb58edabbcefa5065d73afdf1c9c4fbf50c1022bd22bfcb98e4b422 -AD = fd6a3fdd879f8880843eac20ae01c1b9dc3487d270a806572088ef2ddc1f1e0de495e71d4813bf5c501ad31e5d791c4b5b3a0a71b63fdddcc8de4b056064ef467989ecccc5d0160d403bf3a025d4892b3b1de3e062bc3581d4410f273338311eb4637529e4a680a6e4a5e26e308630a5b6d49ead6d543f8f2bf9050aa94ce091318721e1d8b96e279f34b9759b65037bec4bf6ccda6929705aeeeebe49e327e4d7a916620c9faf3765120658af34c53fbb97ec07657b3f088fcbdc401aa7949ddeda34d885018c2c23f4f0bb8218bf0d4fc90643658b4d8834f4a8c08e590c2a790995baa9e77627c342d283e454f84fcc05be15e9627a2d9be340c9d72f222bbdfc47905f56616cd9f936d49e4732f319f020513340fb8b22828db251b102b6b137c9533936d6 -CT = bd11ed07b7b4b30eeaf25d6a41a549cca0a5aee71f990ac566a37265d7af2ce3c03703427ee0b2755c2bdfc29f9d826aec6ee4ad28af48079ac23db16580b97424f3a4e35cc23625d39f95699d9ff5143e9a2bc26fcfee4f125f5aa2d968ccfc2faaf9db3c28850f6757f735cbc50c94c498bcde4f23bffafa8dd5f70d1a011e35eb26e905d4e68848fedebeb197be595c085ba33f11ba8398258445051751888e9bba111f800f31b37c447074ca6dce6d54b4dfad6cee5138643d4f6ac045e8047248924e88ea4294c7878bc22c9b41924ce301f22693c33733107bf1ba85e34806c5e4366ea66fc52a5f89dd9bf213239158b3d4d2600dde696c61d76c398b9bf10de9118e812e891c8f3355c0ecc6405f79bc32a58905e37888a1d8395fbedc3ac54eca569f -TAG = 296a397d280d026fc3627f4718971be9 - -# BoringSSL has additional tests here for truncated tags. *ring* doesn't -# support tag truncation, so those tests were removed. diff -Nru temporalio-1.3.0/vendor/ring/tests/aead_tests.rs temporalio-1.3.0/vendor/ring/tests/aead_tests.rs --- temporalio-1.3.0/vendor/ring/tests/aead_tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/aead_tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -// Copyright 2015-2016 Brian Smith. +// Copyright 2015-2021 Brian Smith. // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above @@ -12,10 +12,8 @@ // OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -#![cfg(any(not(target_arch = "wasm32"), feature = "wasm32_c"))] - #[cfg(target_arch = "wasm32")] -use wasm_bindgen_test::{wasm_bindgen_test, wasm_bindgen_test_configure}; +use wasm_bindgen_test::{wasm_bindgen_test as test, wasm_bindgen_test_configure}; #[cfg(target_arch = "wasm32")] wasm_bindgen_test_configure!(run_in_browser); @@ -23,266 +21,385 @@ use core::ops::RangeFrom; use ring::{aead, error, test, test_file}; -#[test] -#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] -fn aead_aes_gcm_128() { - test_aead( - &aead::AES_128_GCM, - seal_with_key, - open_with_key, - test_file!("aead_aes_128_gcm_tests.txt"), - ); - test_aead( - &aead::AES_128_GCM, - seal_with_less_safe_key, - open_with_less_safe_key, - test_file!("aead_aes_128_gcm_tests.txt"), - ); +/// Generate the known answer test functions for the given algorithm and test +/// case input file, where each test is implemented by a test in `$test`. +/// +/// All of these tests can be run in parallel. +macro_rules! test_known_answer { + ( $alg:ident, $test_file:expr, [ $( $test:ident ),+, ] ) => { + $( + #[test] + fn $test() { + test_aead( + &aead::$alg, + super::super::$test, + test_file!($test_file)); + } + )+ + } } -#[test] -#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] -fn aead_aes_gcm_256() { - test_aead( - &aead::AES_256_GCM, - seal_with_key, - open_with_key, - test_file!("aead_aes_256_gcm_tests.txt"), - ); - test_aead( - &aead::AES_256_GCM, - seal_with_less_safe_key, - open_with_less_safe_key, - test_file!("aead_aes_256_gcm_tests.txt"), - ); +/// Generate the tests for a given algorithm. +/// +/// All of these tests can be run in parallel. +macro_rules! test_aead { + { $( { $alg:ident, $test_file:expr } ),+, } => { + mod aead_test { // Make `cargo test aead` include these files. + $( + #[allow(non_snake_case)] + mod $alg { // Provide a separate namespace for each algorithm's test. + #[cfg(not(target_arch = "wasm32"))] + use super::super::*; + + #[cfg(target_arch = "wasm32")] + use super::super::{*, test}; + + test_known_answer!( + $alg, + $test_file, + [ + less_safe_key_open_in_place, + less_safe_key_open_within, + less_safe_key_seal_in_place_append_tag, + less_safe_key_seal_in_place_separate_tag, + opening_key_open_in_place, + opening_key_open_within, + sealing_key_seal_in_place_append_tag, + sealing_key_seal_in_place_separate_tag, + test_open_in_place_seperate_tag, + ]); + + #[test] + fn key_sizes() { + super::super::key_sizes(&aead::$alg); + } + } + )+ + } + } } -#[cfg(any( - target_arch = "aarch64", - target_arch = "arm", - target_arch = "x86_64", - target_arch = "x86" -))] -#[test] -fn aead_chacha20_poly1305() { - test_aead( - &aead::CHACHA20_POLY1305, - seal_with_key, - open_with_key, - test_file!("aead_chacha20_poly1305_tests.txt"), - ); - test_aead( - &aead::CHACHA20_POLY1305, - seal_with_less_safe_key, - open_with_less_safe_key, - test_file!("aead_chacha20_poly1305_tests.txt"), - ); +test_aead! { + { AES_128_GCM, "aead_aes_128_gcm_tests.txt" }, + { AES_256_GCM, "aead_aes_256_gcm_tests.txt" }, + { CHACHA20_POLY1305, "aead_chacha20_poly1305_tests.txt" }, +} + +struct KnownAnswerTestCase<'a> { + key: &'a [u8], + nonce: [u8; aead::NONCE_LEN], + plaintext: &'a [u8], + aad: aead::Aad<&'a [u8]>, + ciphertext: &'a [u8], + tag: &'a [u8], } -fn test_aead( +fn test_aead( aead_alg: &'static aead::Algorithm, - seal: Seal, - open: Open, + f: impl Fn(&'static aead::Algorithm, KnownAnswerTestCase) -> Result<(), error::Unspecified>, test_file: test::File, -) where - Seal: Fn( - &'static aead::Algorithm, - &[u8], - aead::Nonce, - aead::Aad<&[u8]>, - &mut Vec, - ) -> Result<(), error::Unspecified>, - Open: for<'a> Fn( - &'static aead::Algorithm, - &[u8], - aead::Nonce, - aead::Aad<&[u8]>, - &'a mut [u8], - RangeFrom, - ) -> Result<&'a mut [u8], error::Unspecified>, -{ - test_aead_key_sizes(aead_alg); - +) { test::run(test_file, |section, test_case| { assert_eq!(section, ""); - let key_bytes = test_case.consume_bytes("KEY"); - let nonce_bytes = test_case.consume_bytes("NONCE"); + let key = test_case.consume_bytes("KEY"); + let nonce = test_case.consume_bytes("NONCE"); let plaintext = test_case.consume_bytes("IN"); let aad = test_case.consume_bytes("AD"); - let mut ct = test_case.consume_bytes("CT"); + let ct = test_case.consume_bytes("CT"); let tag = test_case.consume_bytes("TAG"); let error = test_case.consume_optional_string("FAILS"); - match &error { - Some(err) if err == "WRONG_NONCE_LENGTH" => { - assert!(aead::Nonce::try_assume_unique_for_key(&nonce_bytes).is_err()); + match error.as_deref() { + Some("WRONG_NONCE_LENGTH") => { + assert!(matches!( + aead::Nonce::try_assume_unique_for_key(&nonce), + Err(error::Unspecified) + )); return Ok(()); } - _ => (), + Some(unexpected) => { + unreachable!("unexpected error in test data: {}", unexpected); + } + None => {} }; - let mut s_in_out = plaintext.clone(); - let nonce = aead::Nonce::try_assume_unique_for_key(&nonce_bytes).unwrap(); - let s_result = seal( - aead_alg, - &key_bytes[..], - nonce, - aead::Aad::from(&aad[..]), - &mut s_in_out, - ); + let test_case = KnownAnswerTestCase { + key: &key, + nonce: nonce.as_slice().try_into().unwrap(), + plaintext: &plaintext, + aad: aead::Aad::from(&aad), + ciphertext: &ct, + tag: &tag, + }; - ct.extend(tag); + f(aead_alg, test_case) + }) +} - if s_result.is_ok() { - assert_eq!(&ct, &s_in_out); - } +fn test_seal_append_tag( + tc: &KnownAnswerTestCase, + seal: Seal, +) -> Result<(), error::Unspecified> +where + Seal: FnOnce(aead::Nonce, &mut Vec) -> Result<(), error::Unspecified>, +{ + let mut in_out = Vec::from(tc.plaintext); + seal(aead::Nonce::assume_unique_for_key(tc.nonce), &mut in_out)?; - // In release builds, test all prefix lengths from 0 to 4096 bytes. - // Debug builds are too slow for this, so for those builds, only - // test a smaller subset. - - // TLS record headers are 5 bytes long. - // TLS explicit nonces for AES-GCM are 8 bytes long. - static MINIMAL_IN_PREFIX_LENS: [usize; 36] = [ - // No input prefix to overwrite; i.e. the opening is exactly - // "in place." - 0, - 1, - 2, - // Proposed TLS 1.3 header (no explicit nonce). - 5, - 8, - // Probably the most common use of a non-zero `in_prefix_len` - // would be to write a decrypted TLS record over the top of the - // TLS header and nonce. - 5 /* record header */ + 8, /* explicit nonce */ - // The stitched AES-GCM x86-64 code works on 6-block (96 byte) - // units. Some of the ChaCha20 code is even weirder. - 15, // The maximum partial AES block. - 16, // One AES block. - 17, // One byte more than a full AES block. - 31, // 2 AES blocks or 1 ChaCha20 block, minus 1. - 32, // Two AES blocks, one ChaCha20 block. - 33, // 2 AES blocks or 1 ChaCha20 block, plus 1. - 47, // Three AES blocks - 1. - 48, // Three AES blocks. - 49, // Three AES blocks + 1. - 63, // Four AES blocks or two ChaCha20 blocks, minus 1. - 64, // Four AES blocks or two ChaCha20 blocks. - 65, // Four AES blocks or two ChaCha20 blocks, plus 1. - 79, // Five AES blocks, minus 1. - 80, // Five AES blocks. - 81, // Five AES blocks, plus 1. - 95, // Six AES blocks or three ChaCha20 blocks, minus 1. - 96, // Six AES blocks or three ChaCha20 blocks. - 97, // Six AES blocks or three ChaCha20 blocks, plus 1. - 111, // Seven AES blocks, minus 1. - 112, // Seven AES blocks. - 113, // Seven AES blocks, plus 1. - 127, // Eight AES blocks or four ChaCha20 blocks, minus 1. - 128, // Eight AES blocks or four ChaCha20 blocks. - 129, // Eight AES blocks or four ChaCha20 blocks, plus 1. - 143, // Nine AES blocks, minus 1. - 144, // Nine AES blocks. - 145, // Nine AES blocks, plus 1. - 255, // 16 AES blocks or 8 ChaCha20 blocks, minus 1. - 256, // 16 AES blocks or 8 ChaCha20 blocks. - 257, // 16 AES blocks or 8 ChaCha20 blocks, plus 1. - ]; - - let mut more_comprehensive_in_prefix_lengths = [0; 4096]; - let in_prefix_lengths = if cfg!(debug_assertions) { - &MINIMAL_IN_PREFIX_LENS[..] - } else { - #[allow(clippy::needless_range_loop)] - for b in 0..more_comprehensive_in_prefix_lengths.len() { - more_comprehensive_in_prefix_lengths[b] = b; - } - &more_comprehensive_in_prefix_lengths[..] - }; - let mut o_in_out = vec![123u8; 4096]; + let mut expected_ciphertext_and_tag = Vec::from(tc.ciphertext); + expected_ciphertext_and_tag.extend_from_slice(tc.tag); - for &in_prefix_len in in_prefix_lengths.iter() { - o_in_out.truncate(0); - o_in_out.resize(in_prefix_len, 123); - o_in_out.extend_from_slice(&ct[..]); - - let nonce = aead::Nonce::try_assume_unique_for_key(&nonce_bytes).unwrap(); - let o_result = open( - aead_alg, - &key_bytes, - nonce, - aead::Aad::from(&aad[..]), - &mut o_in_out, - in_prefix_len.., - ); - match error { - None => { - assert!(s_result.is_ok()); - assert_eq!(&plaintext[..], o_result.unwrap()); - } - Some(ref error) if error == "WRONG_NONCE_LENGTH" => { - assert_eq!(Err(error::Unspecified), s_result); - assert_eq!(Err(error::Unspecified), o_result); - } - Some(error) => { - unreachable!("Unexpected error test case: {}", error); - } - }; + assert_eq!(in_out, expected_ciphertext_and_tag); + + Ok(()) +} + +fn test_seal_separate_tag( + tc: &KnownAnswerTestCase, + seal: Seal, +) -> Result<(), error::Unspecified> +where + Seal: Fn(aead::Nonce, &mut [u8]) -> Result, +{ + let mut in_out = Vec::from(tc.plaintext); + let actual_tag = seal(aead::Nonce::assume_unique_for_key(tc.nonce), &mut in_out)?; + assert_eq!(actual_tag.as_ref(), tc.tag); + assert_eq!(in_out, tc.ciphertext); + + Ok(()) +} + +fn test_open_in_place( + tc: &KnownAnswerTestCase<'_>, + open_in_place: OpenInPlace, +) -> Result<(), error::Unspecified> +where + OpenInPlace: + for<'a> FnOnce(aead::Nonce, &'a mut [u8]) -> Result<&'a mut [u8], error::Unspecified>, +{ + let nonce = aead::Nonce::assume_unique_for_key(tc.nonce); + + let mut in_out = Vec::from(tc.ciphertext); + in_out.extend_from_slice(tc.tag); + + let actual_plaintext = open_in_place(nonce, &mut in_out)?; + + assert_eq!(actual_plaintext, tc.plaintext); + assert_eq!(&in_out[..tc.plaintext.len()], tc.plaintext); + Ok(()) +} + +fn test_open_in_place_seperate_tag( + alg: &'static aead::Algorithm, + tc: KnownAnswerTestCase, +) -> Result<(), error::Unspecified> { + let key = make_less_safe_key(alg, tc.key); + + let mut in_out = Vec::from(tc.ciphertext); + let tag = tc.tag.try_into().unwrap(); + + // Test the simplest behavior. + { + let nonce = aead::Nonce::assume_unique_for_key(tc.nonce); + let actual_plaintext = + key.open_in_place_separate_tag(nonce, tc.aad, tag, &mut in_out, 0..)?; + + assert_eq!(actual_plaintext, tc.plaintext); + assert_eq!(&in_out[..tc.plaintext.len()], tc.plaintext); + } + + // Test that ciphertext range shifing works as expected. + { + let range = in_out.len()..; + in_out.extend_from_slice(tc.ciphertext); + + let nonce = aead::Nonce::assume_unique_for_key(tc.nonce); + let actual_plaintext = + key.open_in_place_separate_tag(nonce, tc.aad, tag, &mut in_out, range)?; + + assert_eq!(actual_plaintext, tc.plaintext); + assert_eq!(&in_out[..tc.plaintext.len()], tc.plaintext); + } + + Ok(()) +} + +fn test_open_within( + tc: &KnownAnswerTestCase<'_>, + open_within: OpenWithin, +) -> Result<(), error::Unspecified> +where + OpenWithin: for<'a> Fn( + aead::Nonce, + &'a mut [u8], + RangeFrom, + ) -> Result<&'a mut [u8], error::Unspecified>, +{ + // In release builds, test all prefix lengths from 0 to 4096 bytes. + // Debug builds are too slow for this, so for those builds, only + // test a smaller subset. + + // TLS record headers are 5 bytes long. + // TLS explicit nonces for AES-GCM are 8 bytes long. + static MINIMAL_IN_PREFIX_LENS: [usize; 36] = [ + // No input prefix to overwrite; i.e. the opening is exactly + // "in place." + 0, + 1, + 2, + // Proposed TLS 1.3 header (no explicit nonce). + 5, + 8, + // Probably the most common use of a non-zero `in_prefix_len` + // would be to write a decrypted TLS record over the top of the + // TLS header and nonce. + 5 /* record header */ + 8, /* explicit nonce */ + // The stitched AES-GCM x86-64 code works on 6-block (96 byte) + // units. Some of the ChaCha20 code is even weirder. + 15, // The maximum partial AES block. + 16, // One AES block. + 17, // One byte more than a full AES block. + 31, // 2 AES blocks or 1 ChaCha20 block, minus 1. + 32, // Two AES blocks, one ChaCha20 block. + 33, // 2 AES blocks or 1 ChaCha20 block, plus 1. + 47, // Three AES blocks - 1. + 48, // Three AES blocks. + 49, // Three AES blocks + 1. + 63, // Four AES blocks or two ChaCha20 blocks, minus 1. + 64, // Four AES blocks or two ChaCha20 blocks. + 65, // Four AES blocks or two ChaCha20 blocks, plus 1. + 79, // Five AES blocks, minus 1. + 80, // Five AES blocks. + 81, // Five AES blocks, plus 1. + 95, // Six AES blocks or three ChaCha20 blocks, minus 1. + 96, // Six AES blocks or three ChaCha20 blocks. + 97, // Six AES blocks or three ChaCha20 blocks, plus 1. + 111, // Seven AES blocks, minus 1. + 112, // Seven AES blocks. + 113, // Seven AES blocks, plus 1. + 127, // Eight AES blocks or four ChaCha20 blocks, minus 1. + 128, // Eight AES blocks or four ChaCha20 blocks. + 129, // Eight AES blocks or four ChaCha20 blocks, plus 1. + 143, // Nine AES blocks, minus 1. + 144, // Nine AES blocks. + 145, // Nine AES blocks, plus 1. + 255, // 16 AES blocks or 8 ChaCha20 blocks, minus 1. + 256, // 16 AES blocks or 8 ChaCha20 blocks. + 257, // 16 AES blocks or 8 ChaCha20 blocks, plus 1. + ]; + + let mut more_comprehensive_in_prefix_lengths = [0; 4096]; + let in_prefix_lengths = if cfg!(debug_assertions) { + &MINIMAL_IN_PREFIX_LENS[..] + } else { + #[allow(clippy::needless_range_loop)] + for b in 0..more_comprehensive_in_prefix_lengths.len() { + more_comprehensive_in_prefix_lengths[b] = b; } + &more_comprehensive_in_prefix_lengths[..] + }; + let mut in_out = vec![123u8; 4096]; + + for &in_prefix_len in in_prefix_lengths.iter() { + in_out.truncate(0); + in_out.resize(in_prefix_len, 123); + in_out.extend_from_slice(tc.ciphertext); + in_out.extend_from_slice(tc.tag); + + let actual_plaintext = open_within( + aead::Nonce::assume_unique_for_key(tc.nonce), + &mut in_out, + in_prefix_len.., + )?; + assert_eq!(actual_plaintext, tc.plaintext); + assert_eq!(&in_out[..tc.plaintext.len()], tc.plaintext); + } + + Ok(()) +} + +fn sealing_key_seal_in_place_append_tag( + alg: &'static aead::Algorithm, + tc: KnownAnswerTestCase, +) -> Result<(), error::Unspecified> { + test_seal_append_tag(&tc, |nonce, in_out| { + let mut key: aead::SealingKey = make_key(alg, tc.key, nonce); + key.seal_in_place_append_tag(tc.aad, in_out) + }) +} + +fn sealing_key_seal_in_place_separate_tag( + alg: &'static aead::Algorithm, + tc: KnownAnswerTestCase, +) -> Result<(), error::Unspecified> { + test_seal_separate_tag(&tc, |nonce, in_out| { + let mut key: aead::SealingKey<_> = make_key(alg, tc.key, nonce); + key.seal_in_place_separate_tag(tc.aad, in_out) + }) +} + +fn opening_key_open_in_place( + alg: &'static aead::Algorithm, + tc: KnownAnswerTestCase, +) -> Result<(), error::Unspecified> { + test_open_in_place(&tc, |nonce, in_out| { + let mut key: aead::OpeningKey<_> = make_key(alg, tc.key, nonce); + key.open_in_place(tc.aad, in_out) + }) +} - Ok(()) - }); +fn opening_key_open_within( + alg: &'static aead::Algorithm, + tc: KnownAnswerTestCase, +) -> Result<(), error::Unspecified> { + test_open_within(&tc, |nonce, in_out, ciphertext_and_tag| { + let mut key: aead::OpeningKey = make_key(alg, tc.key, nonce); + key.open_within(tc.aad, in_out, ciphertext_and_tag) + }) } -fn seal_with_key( - algorithm: &'static aead::Algorithm, - key: &[u8], - nonce: aead::Nonce, - aad: aead::Aad<&[u8]>, - in_out: &mut Vec, +fn less_safe_key_seal_in_place_append_tag( + alg: &'static aead::Algorithm, + tc: KnownAnswerTestCase, ) -> Result<(), error::Unspecified> { - let mut s_key: aead::SealingKey = make_key(algorithm, key, nonce); - s_key.seal_in_place_append_tag(aad, in_out) + test_seal_append_tag(&tc, |nonce, in_out| { + let key = make_less_safe_key(alg, tc.key); + key.seal_in_place_append_tag(nonce, tc.aad, in_out) + }) } -fn open_with_key<'a>( - algorithm: &'static aead::Algorithm, - key: &[u8], - nonce: aead::Nonce, - aad: aead::Aad<&[u8]>, - in_out: &'a mut [u8], - ciphertext_and_tag: RangeFrom, -) -> Result<&'a mut [u8], error::Unspecified> { - let mut o_key: aead::OpeningKey = make_key(algorithm, key, nonce); - o_key.open_within(aad, in_out, ciphertext_and_tag) -} - -fn seal_with_less_safe_key( - algorithm: &'static aead::Algorithm, - key: &[u8], - nonce: aead::Nonce, - aad: aead::Aad<&[u8]>, - in_out: &mut Vec, +fn less_safe_key_open_in_place( + alg: &'static aead::Algorithm, + tc: KnownAnswerTestCase, ) -> Result<(), error::Unspecified> { - let key = make_less_safe_key(algorithm, key); - key.seal_in_place_append_tag(nonce, aad, in_out) + test_open_in_place(&tc, |nonce, in_out| { + let key = make_less_safe_key(alg, tc.key); + key.open_in_place(nonce, tc.aad, in_out) + }) } -fn open_with_less_safe_key<'a>( - algorithm: &'static aead::Algorithm, - key: &[u8], - nonce: aead::Nonce, - aad: aead::Aad<&[u8]>, - in_out: &'a mut [u8], - ciphertext_and_tag: RangeFrom, -) -> Result<&'a mut [u8], error::Unspecified> { - let key = make_less_safe_key(algorithm, key); - key.open_within(nonce, aad, in_out, ciphertext_and_tag) +fn less_safe_key_seal_in_place_separate_tag( + alg: &'static aead::Algorithm, + tc: KnownAnswerTestCase, +) -> Result<(), error::Unspecified> { + test_seal_separate_tag(&tc, |nonce, in_out| { + let key = make_less_safe_key(alg, tc.key); + key.seal_in_place_separate_tag(nonce, tc.aad, in_out) + }) +} + +fn less_safe_key_open_within( + alg: &'static aead::Algorithm, + tc: KnownAnswerTestCase, +) -> Result<(), error::Unspecified> { + test_open_within(&tc, |nonce, in_out, ciphertext_and_tag| { + let key = make_less_safe_key(alg, tc.key); + key.open_within(nonce, tc.aad, in_out, ciphertext_and_tag) + }) } #[allow(clippy::range_plus_one)] -fn test_aead_key_sizes(aead_alg: &'static aead::Algorithm) { +fn key_sizes(aead_alg: &'static aead::Algorithm) { let key_len = aead_alg.key_len(); let key_data = vec![0u8; key_len * 2]; @@ -311,7 +428,7 @@ // Test that we reject non-standard nonce sizes. #[allow(clippy::range_plus_one)] #[test] -fn test_aead_nonce_sizes() -> Result<(), error::Unspecified> { +fn test_aead_nonce_sizes() { let nonce_len = aead::NONCE_LEN; let nonce = vec![0u8; nonce_len * 2]; @@ -323,16 +440,8 @@ assert!(aead::Nonce::try_assume_unique_for_key(&[]).is_err()); assert!(aead::Nonce::try_assume_unique_for_key(&nonce[..1]).is_err()); assert!(aead::Nonce::try_assume_unique_for_key(&nonce[..16]).is_err()); // 128 bits. - - Ok(()) } -#[cfg(any( - target_arch = "aarch64", - target_arch = "arm", - target_arch = "x86_64", - target_arch = "x86" -))] #[allow(clippy::range_plus_one)] #[test] fn aead_chacha20_poly1305_openssh() { @@ -382,14 +491,32 @@ } #[test] -#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] +fn aead_test_aad_traits() { + test::compile_time_assert_copy::>(); + test::compile_time_assert_eq::>>(); // `!Copy` + + let aad_123 = aead::Aad::from(vec![1, 2, 3]); // `!Copy` + assert_eq!(aad_123, aad_123.clone()); // Cover `Clone` and `PartialEq` + assert_eq!( + format!("{:?}", aead::Aad::from(&[1, 2, 3])), + "Aad([1, 2, 3])" + ); +} + +#[test] fn test_tag_traits() { test::compile_time_assert_send::(); test::compile_time_assert_sync::(); + + test::compile_time_assert_copy::(); + test::compile_time_assert_clone::(); + + let tag = aead::Tag::from([4u8; 16]); + let _tag_2 = tag; // Cover `Copy` + assert_eq!(tag.as_ref(), tag.clone().as_ref()); // Cover `Clone` } #[test] -#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] fn test_aead_key_debug() { let key_bytes = [0; 32]; let nonce = [0; aead::NONCE_LEN]; @@ -427,6 +554,52 @@ ); } +fn test_aead_lesssafekey_clone_for_algorithm(algorithm: &'static aead::Algorithm) { + let test_bytes: Vec = (0..32).collect(); + let key_bytes = &test_bytes[..algorithm.key_len()]; + let nonce_bytes = &test_bytes[..algorithm.nonce_len()]; + + let key1: aead::LessSafeKey = + aead::LessSafeKey::new(aead::UnboundKey::new(algorithm, key_bytes).unwrap()); + let key2 = key1.clone(); + + // LessSafeKey doesn't support AsRef or PartialEq, so instead just check that both keys produce + // the same encrypted output. + let mut buf1: Vec = (0..100).collect(); + let mut buf2 = buf1.clone(); + let tag1 = key1 + .seal_in_place_separate_tag( + aead::Nonce::try_assume_unique_for_key(nonce_bytes).unwrap(), + aead::Aad::empty(), + &mut buf1, + ) + .unwrap(); + let tag2 = key2 + .seal_in_place_separate_tag( + aead::Nonce::try_assume_unique_for_key(nonce_bytes).unwrap(), + aead::Aad::empty(), + &mut buf2, + ) + .unwrap(); + assert_eq!(tag1.as_ref(), tag2.as_ref()); + assert_eq!(buf1, buf2); +} + +#[test] +fn test_aead_lesssafekey_clone_aes_128_gcm() { + test_aead_lesssafekey_clone_for_algorithm(&aead::AES_128_GCM); +} + +#[test] +fn test_aead_lesssafekey_clone_aes_256_gcm() { + test_aead_lesssafekey_clone_for_algorithm(&aead::AES_256_GCM); +} + +#[test] +fn test_aead_lesssafekey_clone_chacha20_poly1305() { + test_aead_lesssafekey_clone_for_algorithm(&aead::CHACHA20_POLY1305); +} + fn make_key>( algorithm: &'static aead::Algorithm, key: &[u8], diff -Nru temporalio-1.3.0/vendor/ring/tests/agreement_tests.rs temporalio-1.3.0/vendor/ring/tests/agreement_tests.rs --- temporalio-1.3.0/vendor/ring/tests/agreement_tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/agreement_tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,6 +12,8 @@ // OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +#![cfg(not(target_arch = "wasm32"))] + extern crate alloc; use ring::{agreement, error, rand, test, test_file}; @@ -57,6 +59,9 @@ format!("{:?}", unparsed_public_key), r#"UnparsedPublicKey { algorithm: Algorithm { curve: Curve25519 }, bytes: "010203" }"# ); + + // Test `AsRef<[u8]>` + assert_eq!(unparsed_public_key.as_ref(), &[0x01, 0x02, 0x03]); } #[test] @@ -87,11 +92,9 @@ assert_eq!(my_private.algorithm(), alg); - let result = - agreement::agree_ephemeral(my_private, &peer_public, (), |key_material| { - assert_eq!(key_material, &output[..]); - Ok(()) - }); + let result = agreement::agree_ephemeral(my_private, &peer_public, |key_material| { + assert_eq!(key_material, &output[..]); + }); assert_eq!(result, Ok(())); } @@ -108,7 +111,6 @@ assert!(agreement::agree_ephemeral( dummy_private_key, &peer_public, - (), kdf_not_called ) .is_err()); @@ -179,12 +181,9 @@ let rng = test::rand::FixedSliceRandom { bytes: private_key }; let private_key = agreement::EphemeralPrivateKey::generate(&agreement::X25519, &rng)?; let public_key = agreement::UnparsedPublicKey::new(&agreement::X25519, public_key); - agreement::agree_ephemeral( - private_key, - &public_key, - error::Unspecified, - |agreed_value| Ok(Vec::from(agreed_value)), - ) + agreement::agree_ephemeral(private_key, &public_key, |agreed_value| { + Vec::from(agreed_value) + }) } fn h(s: &str) -> Vec { diff -Nru temporalio-1.3.0/vendor/ring/tests/agreement_tests.txt temporalio-1.3.0/vendor/ring/tests/agreement_tests.txt --- temporalio-1.3.0/vendor/ring/tests/agreement_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/agreement_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,641 +0,0 @@ -# RFC 7748 (X25519) Test Vectors -# -# PeerQ is the "Input u-coordinate." -# D is the "Input scalar." -# XXX: MyQ is not provided in the RFC, so we calculated it ourselves. -# Output is the "Output u-coordinate." - -Curve = X25519 -PeerQ = e6db6867583030db3594c1a424b15f7c726624ec26b3353b10a903a6d0ab1c4c -D = a546e36bf0527c9d3b16154b82465edd62144c0ac1fc5a18506a2244ba449ac4 -MyQ = 1c9fd88f45606d932a80c71824ae151d15d73e77de38e8e000852e614fae7019 -Output = c3da55379de9c6908e94ea4df28d084f32eccf03491c71f754b4075577a28552 - -Curve = X25519 -PeerQ = e5210f12786811d3f4b7959d0538ae2c31dbe7106fc03c3efc4cd549c715a493 -D = 4b66e9d4d1b4673c5ad22691957d6af5c11b6421e0ea01d42ca4169e7918ba0d -MyQ = ff63fe57bfbf43fa3f563628b149af704d3db625369c49983650347a6a71e00e -Output = 95cbde9476e8907d7aade45cb4b873f88b595a68799fa152e6f8f7647aac7957 - - -# Additional X25519 Test Vectors - -Curve = X25519 -PeerQ = "" -Error = Peer public key is empty. - -Curve = X25519 -PeerQ = 00 -Error = Peer public key is too short. - -Curve = X25519 -PeerQ = e5210f12786811d3f4b7959d0538ae2c31dbe7106fc03c3efc4cd549c715a4 -Error = Peer public key is too short. - -Curve = X25519 -PeerQ = e5210f12786811d3f4b7959d0538ae2c31dbe7106fc03c3efc4cd549c715a49300 -Error = Peer public key is too long (zero appended). - -Curve = X25519 -PeerQ = 00e5210f12786811d3f4b7959d0538ae2c31dbe7106fc03c3efc4cd549c715a493 -Error = Peer public key is too long (zero prepended). - - -# RFC 5903 (IKE and IKEv2 ECDH) Test Vectors -# -# PeerQ is (grx, gry) in uncompressed encoding. -# D is i. -# MyQ is (gix, giy) in uncompressed encoding. -# Output is girx. - -Curve = P-256 -PeerQ = 04D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF6356FBF3CA366CC23E8157854C13C58D6AAC23F046ADA30F8353E74F33039872AB -D = C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433 -MyQ = 04DAD0B65394221CF9B051E1FECA5787D098DFE637FC90B9EF945D0C37725811805271A0461CDB8252D61F1C456FA3E59AB1F45B33ACCF5F58389E0577B8990BB3 -Output = D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE - -Curve = P-384 -PeerQ = 04E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571DCFBEC7AACF3196472169E838430367F66EEBE3C6E70C416DD5F0C68759DD1FFF83FA40142209DFF5EAAD96DB9E6386C -D = 099F3C7034D4A2C699884D73A375A67F7624EF7C6B3C0F160647B67414DCE655E35B538041E649EE3FAEF896783AB194 -MyQ = 04667842D7D180AC2CDE6F74F37551F55755C7645C20EF73E31634FE72B4C55EE6DE3AC808ACB4BDB4C88732AEE95F41AA9482ED1FC0EEB9CAFC4984625CCFC23F65032149E0E144ADA024181535A0F38EEB9FCFF3C2C947DAE69B4C634573A81C -Output = 11187331C279962D93D604243FD592CB9D0A926F422E47187521287E7156C5C4D603135569B9E9D09CF5D4A270F59746 - - -# Tweaks of the RFC 5903 vectors for testing malformed (syntactically) public -# keys - -Curve = P-256 -PeerQ = "" -Error = Peer public key is empty. - -Curve = P-384 -PeerQ = "" -Error = Peer public key is empty. - -Curve = P-256 -PeerQ = 00 -Error = Peer public key is the special encoding of the point at infinity. - -Curve = P-384 -PeerQ = 00 -Error = Peer public key is the special encoding of the point at infinity. - -Curve = P-256 -PeerQ = 01 -Error = Peer public key consists of (only) an invalid encoding indicator. - -Curve = P-384 -PeerQ = 01 -Error = Peer public key consists of (only) an invalid encoding indicator. - -Curve = P-256 -PeerQ = 02 -Error = Peer public key consists of (only) a compressed encoding indicator (0x02). - -Curve = P-384 -PeerQ = 02 -Error = Peer public key consists of (only) a compressed encoding indicator (0x02). - -Curve = P-256 -PeerQ = 03 -Error = Peer public key consists of (only) a compressed encoding indicator (0x03). - -Curve = P-384 -PeerQ = 03 -Error = Peer public key consists of (only) a compressed encoding indicator (0x03). - -Curve = P-256 -PeerQ = 04 -Error = Peer public key consists of (only) a uncompressed encoding indicator. - -Curve = P-384 -PeerQ = 04 -Error = Peer public key consists of (only) a compressed encoding indicator. - -Curve = P-256 -PeerQ = 04 -Error = Peer public key consists of (only) an invalid encoding indicator (0x05). - -Curve = P-384 -PeerQ = 04 -Error = Peer public key consists of (only) an invalid encoding indicator (0x05). - -Curve = P-256 -PeerQ = 01D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF6356FBF3CA366CC23E8157854C13C58D6AAC23F046ADA30F8353E74F33039872AB -Error = Peer public key starts with a completely invalid encoding indicator byte (0x01). - -Curve = P-384 -PeerQ = 01E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571DCFBEC7AACF3196472169E838430367F66EEBE3C6E70C416DD5F0C68759DD1FFF83FA40142209DFF5EAAD96DB9E6386C -Error = Peer public key starts with a completely invalid encoding indicator byte (0x01). - -Curve = P-256 -PeerQ = 02D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF6356FBF3CA366CC23E8157854C13C58D6AAC23F046ADA30F8353E74F33039872AB -Error = Peer public key encoding's first byte is 0x02, should be 0x04. - -Curve = P-384 -PeerQ = 02E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571DCFBEC7AACF3196472169E838430367F66EEBE3C6E70C416DD5F0C68759DD1FFF83FA40142209DFF5EAAD96DB9E6386C -Error = Peer public key encoding's first byte is 0x02, should be 0x04. - -Curve = P-256 -PeerQ = 03D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF6356FBF3CA366CC23E8157854C13C58D6AAC23F046ADA30F8353E74F33039872AB -Error = Peer public key encoding's first byte is 0x03, should be 0x04. - -Curve = P-384 -PeerQ = 03E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571DCFBEC7AACF3196472169E838430367F66EEBE3C6E70C416DD5F0C68759DD1FFF83FA40142209DFF5EAAD96DB9E6386C -Error = Peer public key encoding's first byte is 0x03, should be 0x04. - -Curve = P-256 -PeerQ = 05D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF6356FBF3CA366CC23E8157854C13C58D6AAC23F046ADA30F8353E74F33039872AB -Error = Peer public key starts with a completely invalid encoding indicator byte (0x05). - -Curve = P-384 -PeerQ = 05E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571DCFBEC7AACF3196472169E838430367F66EEBE3C6E70C416DD5F0C68759DD1FFF83FA40142209DFF5EAAD96DB9E6386C -Error = Peer public key starts with a completely invalid encoding indicator byte (0x05). - -Curve = P-256 -PeerQ = FFD12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF6356FBF3CA366CC23E8157854C13C58D6AAC23F046ADA30F8353E74F33039872AB -Error = Peer public key starts with a completely invalid encoding indicator byte (0xff). - -Curve = P-384 -PeerQ = FFE558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571DCFBEC7AACF3196472169E838430367F66EEBE3C6E70C416DD5F0C68759DD1FFF83FA40142209DFF5EAAD96DB9E6386C -Error = Peer public key starts with a completely invalid encoding indicator byte (0xff). - -Curve = P-256 -PeerQ = D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF6356FBF3CA366CC23E8157854C13C58D6AAC23F046ADA30F8353E74F33039872AB -Error = Peer public key is missing the encoding indicator byte. - -Curve = P-384 -PeerQ = E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571DCFBEC7AACF3196472169E838430367F66EEBE3C6E70C416DD5F0C68759DD1FFF83FA40142209DFF5EAAD96DB9E6386C -Error = Peer public key is missing the encoding indicator byte. - -Curve = P-256 -PeerQ = 04D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF6356FBF3CA366CC23E8157854C13C58D6AAC23F046ADA30F8353E74F33039872 -Error = Peer public key has the last byte truncated. - -Curve = P-384 -PeerQ = 04E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571DCFBEC7AACF3196472169E838430367F66EEBE3C6E70C416DD5F0C68759DD1FFF83FA40142209DFF5EAAD96DB9E638 -Error = Peer public key has the last byte truncated. - -Curve = P-256 -PeerQ = 04D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF63 -Error = Peer public key is missing the Y coordinate completely. - -Curve = P-384 -PeerQ = 04E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571 -Error = Peer public key is missing the Y coordinate completely. - -Curve = P-256 -PeerQ = 02D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF63 -Error = Peer public key is in compressed form (0x02). - -Curve = P-384 -PeerQ = 02E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571 -Error = Peer public key is in compressed form (0x02). - -Curve = P-256 -PeerQ = 03D12DFB5289C8D4F81208B70270398C342296970A0BCCB74C736FC7554494BF63 -Error = Peer public key is in compressed form (0x03). - -Curve = P-384 -PeerQ = 03E558DBEF53EECDE3D3FCCFC1AEA08A89A987475D12FD950D83CFA41732BC509D0D1AC43A0336DEF96FDA41D0774A3571 -Error = Peer public key is in compressed form (0x03). - - -# NIST vectors from -# http://csrc.nist.gov/groups/STM/cavp/documents/components/ecccdhtestvectors.zip -# -# Only P-256 and P-384 vectors were copied. The "[P-256]" and "[P-384]" -# headings were replaced with "Curve = P-256" and "Curve = P-384" on each test -# case. -# -# PeerQ is (QCAVSx, QCAVSy) in uncompressed encoding. -# D is dIUT. -# MyQ is (QIUTx, QIUTy) in uncompressed encoding. -# Output is ZIUT. -# -# Note that these test vectors don't seem to test any interesting edge cases, -# and in particular they don't test any cases where the public point is -# invalid. - -Curve = P-256 -PeerQ = 04700c48f77f56584c5cc632ca65640db91b6bacce3a4df6b42ce7cc838833d287db71e509e3fd9b060ddb20ba5c51dcc5948d46fbf640dfe0441782cab85fa4ac -D = 7d7dc5f71eb29ddaf80d6214632eeae03d9058af1fb6d22ed80badb62bc1a534 -MyQ = 04ead218590119e8876b29146ff89ca61770c4edbbf97d38ce385ed281d8a6b23028af61281fd35e2fa7002523acc85a429cb06ee6648325389f59edfce1405141 -Output = 46fc62106420ff012e54a434fbdd2d25ccc5852060561e68040dd7778997bd7b - -Curve = P-256 -PeerQ = 04809f04289c64348c01515eb03d5ce7ac1a8cb9498f5caa50197e58d43a86a7aeb29d84e811197f25eba8f5194092cb6ff440e26d4421011372461f579271cda3 -D = 38f65d6dce47676044d58ce5139582d568f64bb16098d179dbab07741dd5caf5 -MyQ = 04119f2f047902782ab0c9e27a54aff5eb9b964829ca99c06b02ddba95b0a3f6d08f52b726664cac366fc98ac7a012b2682cbd962e5acb544671d41b9445704d1d -Output = 057d636096cb80b67a8c038c890e887d1adfa4195e9b3ce241c8a778c59cda67 - -Curve = P-256 -PeerQ = 04a2339c12d4a03c33546de533268b4ad667debf458b464d77443636440ee7fec3ef48a3ab26e20220bcda2c1851076839dae88eae962869a497bf73cb66faf536 -D = 1accfaf1b97712b85a6f54b148985a1bdc4c9bec0bd258cad4b3d603f49f32c8 -MyQ = 04d9f2b79c172845bfdb560bbb01447ca5ecc0470a09513b6126902c6b4f8d1051f815ef5ec32128d3487834764678702e64e164ff7315185e23aff5facd96d7bc -Output = 2d457b78b4614132477618a5b077965ec90730a8c81a1c75d6d4ec68005d67ec - -Curve = P-256 -PeerQ = 04df3989b9fa55495719b3cf46dccd28b5153f7808191dd518eff0c3cff2b705ed422294ff46003429d739a33206c8752552c8ba54a270defc06e221e0feaf6ac4 -D = 207c43a79bfee03db6f4b944f53d2fb76cc49ef1c9c4d34d51b6c65c4db6932d -MyQ = 0424277c33f450462dcb3d4801d57b9ced05188f16c28eda873258048cd1607e0dc4789753e2b1f63b32ff014ec42cd6a69fac81dfe6d0d6fd4af372ae27c46f88 -Output = 96441259534b80f6aee3d287a6bb17b5094dd4277d9e294f8fe73e48bf2a0024 - -Curve = P-256 -PeerQ = 0441192d2813e79561e6a1d6f53c8bc1a433a199c835e141b05a74a97b0faeb9221af98cc45e98a7e041b01cf35f462b7562281351c8ebf3ffa02e33a0722a1328 -D = 59137e38152350b195c9718d39673d519838055ad908dd4757152fd8255c09bf -MyQ = 04a8c5fdce8b62c5ada598f141adb3b26cf254c280b2857a63d2ad783a73115f6b806e1aafec4af80a0d786b3de45375b517a7e5b51ffb2c356537c9e6ef227d4a -Output = 19d44c8d63e8e8dd12c22a87b8cd4ece27acdde04dbf47f7f27537a6999a8e62 - -Curve = P-256 -PeerQ = 0433e82092a0f1fb38f5649d5867fba28b503172b7035574bf8e5b7100a3052792f2cf6b601e0a05945e335550bf648d782f46186c772c0f20d3cd0d6b8ca14b2f -D = f5f8e0174610a661277979b58ce5c90fee6c9b3bb346a90a7196255e40b132ef -MyQ = 047b861dcd2844a5a8363f6b8ef8d493640f55879217189d80326aad9480dfc149c4675b45eeb306405f6c33c38bc69eb2bdec9b75ad5af4706aab84543b9cc63a -Output = 664e45d5bba4ac931cd65d52017e4be9b19a515f669bea4703542a2c525cd3d3 - -Curve = P-256 -PeerQ = 046a9e0c3f916e4e315c91147be571686d90464e8bf981d34a90b6353bca6eeba740f9bead39c2f2bcc2602f75b8a73ec7bdffcbcead159d0174c6c4d3c5357f05 -D = 3b589af7db03459c23068b64f63f28d3c3c6bc25b5bf76ac05f35482888b5190 -MyQ = 049fb38e2d58ea1baf7622e96720101cae3cde4ba6c1e9fa26d9b1de0899102863d5561b900406edf50802dd7d73e89395f8aed72fba0e1d1b61fe1d22302260f0 -Output = ca342daa50dc09d61be7c196c85e60a80c5cb04931746820be548cdde055679d - -Curve = P-256 -PeerQ = 04a9c0acade55c2a73ead1a86fb0a9713223c82475791cd0e210b046412ce224bbf6de0afa20e93e078467c053d241903edad734c6b403ba758c2b5ff04c9d4229 -D = d8bf929a20ea7436b2461b541a11c80e61d826c0a4c9d322b31dd54e7f58b9c8 -MyQ = 0420f07631e4a6512a89ad487c4e9d63039e579cb0d7a556cb9e661cd59c1e7fa46de91846b3eee8a5ec09c2ab1f41e21bd83620ccdd1bdce3ab7ea6e02dd274f5 -Output = 35aa9b52536a461bfde4e85fc756be928c7de97923f0416c7a3ac8f88b3d4489 - -Curve = P-256 -PeerQ = 0494e94f16a98255fff2b9ac0c9598aac35487b3232d3231bd93b7db7df36f9eb9d8049a43579cfa90b8093a94416cbefbf93386f15b3f6e190b6e3455fedfe69a -D = 0f9883ba0ef32ee75ded0d8bda39a5146a29f1f2507b3bd458dbea0b2bb05b4d -MyQ = 04abb61b423be5d6c26e21c605832c9142dc1dfe5a5fff28726737936e6fbf516d733d2513ef58beab202090586fac91bf0fee31e80ab33473ab23a2d89e58fad6 -Output = 605c16178a9bc875dcbff54d63fe00df699c03e8a888e9e94dfbab90b25f39b4 - -Curve = P-256 -PeerQ = 04e099bf2a4d557460b5544430bbf6da11004d127cb5d67f64ab07c94fcdf5274fd9c50dbe70d714edb5e221f4e020610eeb6270517e688ca64fb0e98c7ef8c1c5 -D = 2beedb04b05c6988f6a67500bb813faf2cae0d580c9253b6339e4a3337bb6c08 -MyQ = 043d63e429cb5fa895a9247129bf4e48e89f35d7b11de8158efeb3e106a2a873950cae9e477ef41e7c8c1064379bb7b554ddcbcae79f9814281f1e50f0403c61f3 -Output = f96e40a1b72840854bb62bc13c40cc2795e373d4e715980b261476835a092e0b - -Curve = P-256 -PeerQ = 04f75a5fe56bda34f3c1396296626ef012dc07e4825838778a645c8248cff0165833bbdf1b1772d8059df568b061f3f1122f28a8d819167c97be448e3dc3fb0c3c -D = 77c15dcf44610e41696bab758943eff1409333e4d5a11bbe72c8f6c395e9f848 -MyQ = 04ad5d13c3db508ddcd38457e5991434a251bed49cf5ddcb59cdee73865f138c9f62cec1e70588aa4fdfc7b9a09daa678081c04e1208b9d662b8a2214bf8e81a21 -Output = 8388fa79c4babdca02a8e8a34f9e43554976e420a4ad273c81b26e4228e9d3a3 - -Curve = P-256 -PeerQ = 042db4540d50230756158abf61d9835712b6486c74312183ccefcaef2797b7674d62f57f314e3f3495dc4e099012f5e0ba71770f9660a1eada54104cdfde77243e -D = 42a83b985011d12303db1a800f2610f74aa71cdf19c67d54ce6c9ed951e9093e -MyQ = 04ab48caa61ea35f13f8ed07ffa6a13e8db224dfecfae1a7df8b1bb6ebaf0cb97d1274530ca2c385a3218bddfbcbf0b4024c9badd5243bff834ebff24a8618dccb -Output = 72877cea33ccc4715038d4bcbdfe0e43f42a9e2c0c3b017fc2370f4b9acbda4a - -Curve = P-256 -PeerQ = 04cd94fc9497e8990750309e9a8534fd114b0a6e54da89c4796101897041d14ecbc3def4b5fe04faee0a11932229fff563637bfdee0e79c6deeaf449f85401c5c4 -D = ceed35507b5c93ead5989119b9ba342cfe38e6e638ba6eea343a55475de2800b -MyQ = 049a8cd9bd72e71752df91440f77c547509a84df98114e7de4f26cdb39234a625dd07cfc84c8e144fab2839f5189bb1d7c88631d579bbc58012ed9a2327da52f62 -Output = e4e7408d85ff0e0e9c838003f28cdbd5247cdce31f32f62494b70e5f1bc36307 - -Curve = P-256 -PeerQ = 0415b9e467af4d290c417402e040426fe4cf236bae72baa392ed89780dfccdb471cdf4e9170fb904302b8fd93a820ba8cc7ed4efd3a6f2d6b05b80b2ff2aee4e77 -D = 43e0e9d95af4dc36483cdd1968d2b7eeb8611fcce77f3a4e7d059ae43e509604 -MyQ = 04f989cf8ee956a82e7ebd9881cdbfb2fd946189b08db53559bc8cfdd48071eb145eff28f1a18a616b04b7d337868679f6dd84f9a7b3d7b6f8af276c19611a541d -Output = ed56bcf695b734142c24ecb1fc1bb64d08f175eb243a31f37b3d9bb4407f3b96 - -Curve = P-256 -PeerQ = 0449c503ba6c4fa605182e186b5e81113f075bc11dcfd51c932fb21e951eee2fa18af706ff0922d87b3f0c5e4e31d8b259aeb260a9269643ed520a13bb25da5924 -D = b2f3600df3368ef8a0bb85ab22f41fc0e5f4fdd54be8167a5c3cd4b08db04903 -MyQ = 0469c627625b36a429c398b45c38677cb35d8beb1cf78a571e40e99fe4eac1cd4e81690112b0a88f20f7136b28d7d47e5fbc2ada3c8edd87589bc19ec9590637bd -Output = bc5c7055089fc9d6c89f83c1ea1ada879d9934b2ea28fcf4e4a7e984b28ad2cf - -Curve = P-256 -PeerQ = 0419b38de39fdd2f70f7091631a4f75d1993740ba9429162c2a45312401636b29c09aed7232b28e060941741b6828bcdfa2bc49cc844f3773611504f82a390a5ae -D = 4002534307f8b62a9bf67ff641ddc60fef593b17c3341239e95bdb3e579bfdc8 -MyQ = 045fe964671315a18aa68a2a6e3dd1fde7e23b8ce7181471cfac43c99e1ae80262d5827be282e62c84de531b963884ba832db5d6b2c3a256f0e604fe7e6b8a7f72 -Output = 9a4e8e657f6b0e097f47954a63c75d74fcba71a30d83651e3e5a91aa7ccd8343 - -Curve = P-256 -PeerQ = 042c91c61f33adfe9311c942fdbff6ba47020feff416b7bb63cec13faf9b0999546cab31b06419e5221fca014fb84ec870622a1b12bab5ae43682aa7ea73ea08d0 -D = 4dfa12defc60319021b681b3ff84a10a511958c850939ed45635934ba4979147 -MyQ = 04c9b2b8496f1440bd4a2d1e52752fd372835b364885e154a7dac49295f281ec7cfbe6b926a8a4de26ccc83b802b1212400754be25d9f3eeaf008b09870ae76321 -Output = 3ca1fc7ad858fb1a6aba232542f3e2a749ffc7203a2374a3f3d3267f1fc97b78 - -Curve = P-256 -PeerQ = 04a28a2edf58025668f724aaf83a50956b7ac1cfbbff79b08c3bf87dfd2828d767dfa7bfffd4c766b86abeaf5c99b6e50cb9ccc9d9d00b7ffc7804b0491b67bc03 -D = 1331f6d874a4ed3bc4a2c6e9c74331d3039796314beee3b7152fcdba5556304e -MyQ = 0459e1e101521046ad9cf1d082e9d2ec7dd22530cce064991f1e55c5bcf5fcb591482f4f673176c8fdaa0bb6e59b15a3e47454e3a04297d3863c9338d98add1f37 -Output = 1aaabe7ee6e4a6fa732291202433a237df1b49bc53866bfbe00db96a0f58224f - -Curve = P-256 -PeerQ = 04a2ef857a081f9d6eb206a81c4cf78a802bdf598ae380c8886ecd85fdc1ed7644563c4c20419f07bc17d0539fade1855e34839515b892c0f5d26561f97fa04d1a -D = dd5e9f70ae740073ca0204df60763fb6036c45709bf4a7bb4e671412fad65da3 -MyQ = 0430b9db2e2e977bcdc98cb87dd736cbd8e78552121925cf16e1933657c2fb23146a45028800b81291bce5c2e1fed7ded650620ebbe6050c6f3a7f0dfb4673ab5c -Output = 430e6a4fba4449d700d2733e557f66a3bf3d50517c1271b1ddae1161b7ac798c - -Curve = P-256 -PeerQ = 04ccd8a2d86bc92f2e01bce4d6922cf7fe1626aed044685e95e2eebd464505f01fe9ddd583a9635a667777d5b8a8f31b0f79eba12c75023410b54b8567dddc0f38 -D = 5ae026cfc060d55600717e55b8a12e116d1d0df34af831979057607c2d9c2f76 -MyQ = 0446c9ebd1a4a3c8c0b6d572b5dcfba12467603208a9cb5d2acfbb733c40cf639146c913a27d044185d38b467ace011e04d4d9bbbb8cb9ae25fa92aaf15a595e86 -Output = 1ce9e6740529499f98d1f1d71329147a33df1d05e4765b539b11cf615d6974d3 - -Curve = P-256 -PeerQ = 04c188ffc8947f7301fb7b53e36746097c2134bf9cc981ba74b4e9c4361f595e4ebf7d2f2056e72421ef393f0c0f2b0e00130e3cac4abbcc00286168e85ec55051 -D = b601ac425d5dbf9e1735c5e2d5bdb79ca98b3d5be4a2cfd6f2273f150e064d9d -MyQ = 047c9e950841d26c8dde8994398b8f5d475a022bc63de7773fcf8d552e01f1ba0acc42b9885c9b3bee0f8d8c57d3a8f6355016c019c4062fa22cff2f209b5cc2e1 -Output = 4690e3743c07d643f1bc183636ab2a9cb936a60a802113c49bb1b3f2d0661660 - -Curve = P-256 -PeerQ = 04317e1020ff53fccef18bf47bb7f2dd7707fb7b7a7578e04f35b3beed222a0eb609420ce5a19d77c6fe1ee587e6a49fbaf8f280e8df033d75403302e5a27db2ae -D = fefb1dda1845312b5fce6b81b2be205af2f3a274f5a212f66c0d9fc33d7ae535 -MyQ = 0438b54db85500cb20c61056edd3d88b6a9dc26780a047f213a6e1b900f76596eb6387e4e5781571e4eb8ae62991a33b5dc33301c5bc7e125d53794a39160d8fd0 -Output = 30c2261bd0004e61feda2c16aa5e21ffa8d7e7f7dbf6ec379a43b48e4b36aeb0 - -Curve = P-256 -PeerQ = 0445fb02b2ceb9d7c79d9c2fa93e9c7967c2fa4df5789f9640b24264b1e524fcb15c6e8ecf1f7d3023893b7b1ca1e4d178972ee2a230757ddc564ffe37f5c5a321 -D = 334ae0c4693d23935a7e8e043ebbde21e168a7cba3fa507c9be41d7681e049ce -MyQ = 043f2bf1589abf3047bf3e54ac9a95379bff95f8f55405f64eca36a7eebe8ffca75212a94e66c5ae9a8991872f66a72723d80ec5b2e925745c456f5371943b3a06 -Output = 2adae4a138a239dcd93c243a3803c3e4cf96e37fe14e6a9b717be9599959b11c - -Curve = P-256 -PeerQ = 04a19ef7bff98ada781842fbfc51a47aff39b5935a1c7d9625c8d323d511c92de6e9c184df75c955e02e02e400ffe45f78f339e1afe6d056fb3245f4700ce606ef -D = 2c4bde40214fcc3bfc47d4cf434b629acbe9157f8fd0282540331de7942cf09d -MyQ = 0429c0807f10cbc42fb45c9989da50681eead716daa7b9e91fd32e062f5eb92ca0ff1d6d1955d7376b2da24fe1163a271659136341bc2eb1195fc706dc62e7f34d -Output = 2e277ec30f5ea07d6ce513149b9479b96e07f4b6913b1b5c11305c1444a1bc0b - -Curve = P-256 -PeerQ = 04356c5a444c049a52fee0adeb7e5d82ae5aa83030bfff31bbf8ce2096cf161c4b57d128de8b2a57a094d1a001e572173f96e8866ae352bf29cddaf92fc85b2f92 -D = 85a268f9d7772f990c36b42b0a331adc92b5941de0b862d5d89a347cbf8faab0 -MyQ = 049cf4b98581ca1779453cc816ff28b4100af56cf1bf2e5bc312d83b6b1b21d3337a5504fcac5231a0d12d658218284868229c844a04a3450d6c7381abe080bf3b -Output = 1e51373bd2c6044c129c436e742a55be2a668a85ae08441b6756445df5493857 - -Curve = P-384 -PeerQ = 04a7c76b970c3b5fe8b05d2838ae04ab47697b9eaf52e764592efda27fe7513272734466b400091adbf2d68c58e0c50066ac68f19f2e1cb879aed43a9969b91a0839c4c38a49749b661efedf243451915ed0905a32b060992b468c64766fc8437a -D = 3cc3122a68f0d95027ad38c067916ba0eb8c38894d22e1b15618b6818a661774ad463b205da88cf699ab4d43c9cf98a1 -MyQ = 049803807f2f6d2fd966cdd0290bd410c0190352fbec7ff6247de1302df86f25d34fe4a97bef60cff548355c015dbb3e5fba26ca69ec2f5b5d9dad20cc9da711383a9dbe34ea3fa5a2af75b46502629ad54dd8b7d73a8abb06a3a3be47d650cc99 -Output = 5f9d29dc5e31a163060356213669c8ce132e22f57c9a04f40ba7fcead493b457e5621e766c40a2e3d4d6a04b25e533f1 - -Curve = P-384 -PeerQ = 0430f43fcf2b6b00de53f624f1543090681839717d53c7c955d1d69efaf0349b7363acb447240101cbb3af6641ce4b88e025e46c0c54f0162a77efcc27b6ea792002ae2ba82714299c860857a68153ab62e525ec0530d81b5aa15897981e858757 -D = 92860c21bde06165f8e900c687f8ef0a05d14f290b3f07d8b3a8cc6404366e5d5119cd6d03fb12dc58e89f13df9cd783 -MyQ = 04ea4018f5a307c379180bf6a62fd2ceceebeeb7d4df063a66fb838aa35243419791f7e2c9d4803c9319aa0eb03c416b6668835a91484f05ef028284df6436fb88ffebabcdd69ab0133e6735a1bcfb37203d10d340a8328a7b68770ca75878a1a6 -Output = a23742a2c267d7425fda94b93f93bbcc24791ac51cd8fd501a238d40812f4cbfc59aac9520d758cf789c76300c69d2ff - -Curve = P-384 -PeerQ = 041aefbfa2c6c8c855a1a216774550b79a24cda37607bb1f7cc906650ee4b3816d68f6a9c75da6e4242cebfb6652f65180419d28b723ebadb7658fcebb9ad9b7adea674f1da3dc6b6397b55da0f61a3eddacb4acdb14441cb214b04a0844c02fa3 -D = 12cf6a223a72352543830f3f18530d5cb37f26880a0b294482c8a8ef8afad09aa78b7dc2f2789a78c66af5d1cc553853 -MyQ = 04fcfcea085e8cf74d0dced1620ba8423694f903a219bbf901b0b59d6ac81baad316a242ba32bde85cb248119b852fab66972e3c68c7ab402c5836f2a16ed451a33120a7750a6039f3ff15388ee622b7065f7122bf6d51aefbc29b37b03404581b -Output = 3d2e640f350805eed1ff43b40a72b2abed0a518bcebe8f2d15b111b6773223da3c3489121db173d414b5bd5ad7153435 - -Curve = P-384 -PeerQ = 048bc089326ec55b9cf59b34f0eb754d93596ca290fcb3444c83d4de3a5607037ec397683f8cef07eab2fe357eae36c449d9d16ce8ac85b3f1e94568521aae534e67139e310ec72693526aa2e927b5b322c95a1a033c229cb6770c957cd3148dd7 -D = 8dd48063a3a058c334b5cc7a4ce07d02e5ee6d8f1f3c51a1600962cbab462690ae3cd974fb39e40b0e843daa0fd32de1 -MyQ = 04e38c9846248123c3421861ea4d32669a7b5c3c08376ad28104399494c84ff5efa3894adb2c6cbe8c3c913ef2eec5bd3c9fa84024a1028796df84021f7b6c9d02f0f4bd1a612a03cbf75a0beea43fef8ae84b48c60172aadf09c1ad016d0bf3ce -Output = 6a42cfc392aba0bfd3d17b7ccf062b91fc09bbf3417612d02a90bdde62ae40c54bb2e56e167d6b70db670097eb8db854 - -Curve = P-384 -PeerQ = 04eb952e2d9ac0c20c6cc48fb225c2ad154f53c8750b003fd3b4ed8ed1dc0defac61bcdde02a2bcfee7067d75d342ed2b0f1828205baece82d1b267d0d7ff2f9c9e15b69a72df47058a97f3891005d1fb38858f5603de840e591dfa4f6e7d489e1 -D = 84ece6cc3429309bd5b23e959793ed2b111ec5cb43b6c18085fcaea9efa0685d98a6262ee0d330ee250bc8a67d0e733f -MyQ = 043222063a2997b302ee60ee1961108ff4c7acf1c0ef1d5fb0d164b84bce71c431705cb9aea9a45f5d73806655a058bee3e61fa9e7fbe7cd43abf99596a3d3a039e99fa9dc93b0bdd9cad81966d17eeaf557068afa7c78466bb5b22032d1100fa6 -Output = ce7ba454d4412729a32bb833a2d1fd2ae612d4667c3a900e069214818613447df8c611de66da200db7c375cf913e4405 - -Curve = P-384 -PeerQ = 04441d029e244eb7168d647d4df50db5f4e4974ab3fdaf022aff058b3695d0b8c814cc88da6285dc6df1ac55c553885003e8025ac23a41d4b1ea2aa46c50c6e479946b59b6d76497cd9249977e0bfe4a6262622f13d42a3c43d66bdbb30403c345 -D = 68fce2121dc3a1e37b10f1dde309f9e2e18fac47cd1770951451c3484cdb77cb136d00e731260597cc2859601c01a25b -MyQ = 04868be0e694841830e424d913d8e7d86b84ee1021d82b0ecf523f09fe89a76c0c95c49f2dfbcf829c1e39709d55efbb3b9195eb183675b40fd92f51f37713317e4a9b4f715c8ab22e0773b1bc71d3a219f05b8116074658ee86b52e36f3897116 -Output = ba69f0acdf3e1ca95caaac4ecaf475bbe51b54777efce01ca381f45370e486fe87f9f419b150c61e329a286d1aa265ec - -Curve = P-384 -PeerQ = 043d4e6bf08a73404accc1629873468e4269e82d90d832e58ad72142639b5a056ad8d35c66c60e8149fac0c797bceb7c2f9b0308dc7f0e6d29f8c277acbc65a21e5adb83d11e6873bc0a07fda0997f482504602f59e10bc5cb476b83d0a4f75e71 -D = b1764c54897e7aae6de9e7751f2f37de849291f88f0f91093155b858d1cc32a3a87980f706b86cc83f927bdfdbeae0bd -MyQ = 04c371222feaa6770c6f3ea3e0dac9740def4fcf821378b7f91ff937c21e0470f70f3a31d5c6b2912195f10926942b48ae047d6b4d765123563f81116bc665b7b8cc6207830d805fd84da7cb805a65baa7c12fd592d1b5b5e3e65d9672a9ef7662 -Output = 1a6688ee1d6e59865d8e3ada37781d36bb0c2717eef92e61964d3927cb765c2965ea80f7f63e58c322ba0397faeaf62b - -Curve = P-384 -PeerQ = 04f5f6bef1d110da03be0017eac760cc34b24d092f736f237bc7054b3865312a813bcb62d297fb10a4f7abf54708fe2d3d06fdf8d7dc032f4e10010bf19cbf6159321252ff415fb91920d438f24e67e60c2eb0463204679fa356af44cea9c9ebf5 -D = f0f7a96e70d98fd5a30ad6406cf56eb5b72a510e9f192f50e1f84524dbf3d2439f7287bb36f5aa912a79deaab4adea82 -MyQ = 0499c8c41cb1ab5e0854a346e4b08a537c1706a61553387c8d94943ab15196d40dbaa55b8210a77a5d00915f2c4ea69eab5531065bdcf17bfb3cb55a02e41a57c7f694c383ad289f900fbd656c2233a93c92e933e7a26f54cbb56f0ad875c51bb0 -Output = d06a568bf2336b90cbac325161be7695eacb2295f599500d787f072612aca313ee5d874f807ddef6c1f023fe2b6e7cd0 - -Curve = P-384 -PeerQ = 047cdec77e0737ea37c67b89b7137fe38818010f4464438ee4d1d35a0c488cad3fde2f37d00885d36d3b795b9f93d23a6728c42ee8d6027c56cf979ba4c229fdb01d234944f8ac433650112c3cf0f02844e888a3569dfef7828a8a884589aa055e -D = 9efb87ddc61d43c482ba66e1b143aef678fbd0d1bebc2000941fabe677fe5b706bf78fce36d100b17cc787ead74bbca2 -MyQ = 044c34efee8f0c95565d2065d1bbac2a2dd25ae964320eb6bccedc5f3a9b42a881a1afca1bb6b880584fa27b01c193cd92d8fb01dbf7cd0a3868c26b951f393c3c56c2858cee901f7793ff5d271925d13a41f8e52409f4eba1990f33acb0bac669 -Output = bb3b1eda9c6560d82ff5bee403339f1e80342338a991344853b56b24f109a4d94b92f654f0425edd4c205903d7586104 - -Curve = P-384 -PeerQ = 048eeea3a319c8df99fbc29cb55f243a720d95509515ee5cc587a5c5ae22fbbd009e626db3e911def0b99a4f7ae304b1ba73877dc94db9adddc0d9a4b24e8976c22d73c844370e1ee857f8d1b129a3bd5f63f40caf3bd0533e38a5f5777074ff9e -D = d787a57fde22ec656a0a525cf3c738b30d73af61e743ea90893ecb2d7b622add2f94ee25c2171467afb093f3f84d0018 -MyQ = 04171546923b87b2cbbad664f01ce932bf09d6a6118168678446bfa9f0938608cb4667a98f4ec8ac1462285c2508f74862fa41cb4db68ae71f1f8a3e8939dc52c2dec61a83c983beb2a02baf29ec49278088882ed0cf56c74b5c173b552ccf63cf -Output = 1e97b60add7cb35c7403dd884c0a75795b7683fff8b49f9d8672a8206bfdcf0a106b8768f983258c74167422e44e4d14 - -Curve = P-384 -PeerQ = 04a721f6a2d4527411834b13d4d3a33c29beb83ab7682465c6cbaf6624aca6ea58c30eb0f29dd842886695400d7254f20f14ba6e26355109ad35129366d5e3a640ae798505a7fa55a96a36b5dad33de00474f6670f522214dd7952140ab0a7eb68 -D = 83d70f7b164d9f4c227c767046b20eb34dfc778f5387e32e834b1e6daec20edb8ca5bb4192093f543b68e6aeb7ce788b -MyQ = 0457cd770f3bbcbe0c78c770eab0b169bc45e139f86378ffae1c2b16966727c2f2eb724572b8f3eb228d130db4ff862c637ec5c8813b685558d83e924f14bc719f6eb7ae0cbb2c474227c5bda88637a4f26c64817929af999592da6f787490332f -Output = 1023478840e54775bfc69293a3cf97f5bc914726455c66538eb5623e218feef7df4befa23e09d77145ad577db32b41f9 - -Curve = P-384 -PeerQ = 04d882a8505c2d5cb9b8851fc676677bb0087681ad53faceba1738286b45827561e7da37b880276c656cfc38b32ade847e34b314bdc134575654573cffaf40445da2e6aaf987f7e913cd4c3091523058984a25d8f21da8326192456c6a0fa5f60c -D = 8f558e05818b88ed383d5fca962e53413db1a0e4637eda194f761944cbea114ab9d5da175a7d57882550b0e432f395a9 -MyQ = 049a2f57f4867ce753d72b0d95195df6f96c1fae934f602efd7b6a54582f556cfa539d89005ca2edac08ad9b72dd1f60bad9b94ee82da9cc601f346044998ba387aee56404dc6ecc8ab2b590443319d0b2b6176f9d0eac2d44678ed561607d09a9 -Output = 6ad6b9dc8a6cf0d3691c501cbb967867f6e4bbb764b60dbff8fcff3ed42dbba39d63cf325b4b4078858495ddee75f954 - -Curve = P-384 -PeerQ = 04815c9d773dbf5fb6a1b86799966247f4006a23c92e68c55e9eaa998b17d8832dd4d84d927d831d4f68dac67c6488219fe79269948b2611484560fd490feec887cb55ef99a4b524880fa7499d6a07283aae2afa33feab97deca40bc606c4d8764 -D = 0f5dee0affa7bbf239d5dff32987ebb7cf84fcceed643e1d3c62d0b3352aec23b6e5ac7fa4105c8cb26126ad2d1892cb -MyQ = 0423346bdfbc9d7c7c736e02bdf607671ff6082fdd27334a8bc75f3b23681ebe614d0597dd614fae58677c835a9f0b273b82ba36290d2f94db41479eb45ab4eaf67928a2315138d59eecc9b5285dfddd6714f77557216ea44cc6fc119d8243efaf -Output = cc9e063566d46b357b3fcae21827377331e5e290a36e60cd7c39102b828ae0b918dc5a02216b07fe6f1958d834e42437 - -Curve = P-384 -PeerQ = 041c0eeda7a2be000c5bdcda0478aed4db733d2a9e341224379123ad847030f29e3b168fa18e89a3c0fba2a6ce1c28fc3bec8c1c83c118c4dbea94271869f2d868eb65e8b44e21e6f14b0f4d9b38c068daefa27114255b9a41d084cc4a1ad85456 -D = 037b633b5b8ba857c0fc85656868232e2febf59578718391b81da8541a00bfe53c30ae04151847f27499f8d7abad8cf4 -MyQ = 048878ac8a947f7d5cb2b47aad24fbb8210d86126585399a2871f84aa9c5fde3074ae540c6bf82275ca822d0feb862bc74632f5cd2f900c2711c32f8930728eb647d31edd8d650f9654e7d33e5ed1b475489d08daa30d8cbcba6bfc3b60d9b5a37 -Output = deff7f03bd09865baf945e73edff6d5122c03fb561db87dec8662e09bed4340b28a9efe118337bb7d3d4f7f568635ff9 - -Curve = P-384 -PeerQ = 04c95c185e256bf997f30b311548ae7f768a38dee43eeeef43083f3077be70e2bf39ac1d4daf360c514c8c6be623443d1a3e63a663eaf75d8a765ab2b9a35513d7933fa5e26420a5244550ec6c3b6f033b96db2aca3d6ac6aab052ce929595aea5 -D = e3d07106bedcc096e7d91630ffd3094df2c7859db8d7edbb2e37b4ac47f429a637d06a67d2fba33838764ef203464991 -MyQ = 04e74a1a2b85f1cbf8dbbdf050cf1aff8acb02fda2fb6591f9d3cfe4e79d0ae938a9c1483e7b75f8db24505d65065cdb181773ee591822f7abaa856a1a60bc0a5203548dbd1cb5025466eff8481bd07614eaa04a16c3db76905913e972a5b6b59d -Output = c8b1038f735ad3bb3e4637c3e47eab487637911a6b7950a4e461948329d3923b969e5db663675623611a457fcda35a71 - -Curve = P-384 -PeerQ = 043497238a7e6ad166df2dac039aa4dac8d17aa925e7c7631eb3b56e3aaa1c545fcd54d2e5985807910fb202b1fc191d2aa49e5c487dcc7aa40a8f234c979446040d9174e3ad357d404d7765183195aed3f913641b90c81a306ebf0d8913861316 -D = f3f9b0c65a49a506632c8a45b10f66b5316f9eeb06fae218f2da62333f99905117b141c760e8974efc4af10570635791 -MyQ = 04a4ad77aa7d86e5361118a6b921710c820721210712f4c347985fdee58aa4effa1e28be80a17b120b139f96300f89b49b1ddf22e07e03f1560d8f45a480094560dba9fae7f9531130c1b57ebb95982496524f31d3797793396fa823f22bdb4328 -Output = d337eaa32b9f716b8747b005b97a553c59dab0c51df41a2d49039cdae705aa75c7b9e7bc0b6a0e8c578c902bc4fff23e - -Curve = P-384 -PeerQ = 0490a34737d45b1aa65f74e0bd0659bc118f8e4b774b761944ffa6573c6df4f41dec0d11b697abd934d390871d4b4532409b590719bb3307c149a7817be355d684893a307764b512eeffe07cb699edb5a6ffbf8d6032e6c79d5e93e94212c2aa4e -D = 59fce7fad7de28bac0230690c95710c720e528f9a4e54d3a6a8cd5fc5c5f21637031ce1c5b4e3d39647d8dcb9b794664 -MyQ = 049c43bf971edf09402876ee742095381f78b1bd3aa39b5132af75dbfe7e98bd78bde10fe2e903c2b6379e1deee175a1b0a6c58ecea5a477bb01bd543b339f1cc49f1371a2cda4d46eb4e53e250597942351a99665a122ffea9bde0636c375daf2 -Output = 32d292b695a4488e42a7b7922e1ae537d76a3d21a0b2e36875f60e9f6d3e8779c2afb3a413b9dd79ae18e70b47d337c1 - -Curve = P-384 -PeerQ = 04dda546acfc8f903d11e2e3920669636d44b2068aeb66ff07aa266f0030e1535b0ed0203cb8a460ac990f1394faf22f1d15bbb2597913035faadf413476f4c70f7279769a40c986f470c427b4ee4962abdf8173bbad81874772925fd32f0b159f -D = 3e49fbf950a424c5d80228dc4bc35e9f6c6c0c1d04440998da0a609a877575dbe437d6a5cedaa2ddd2a1a17fd112aded -MyQ = 045a949594228b1a3d6f599eb3db0d06070fbc551c657b58234ba164ce3fe415fa5f3eb823c08dc29b8c341219c77b6b3d2baad447c8c290cfed25edd9031c41d0b76921457327f42db31122b81f337bbf0b1039ec830ce9061a3761953c75e4a8 -Output = 1220e7e6cad7b25df98e5bbdcc6c0b65ca6c2a50c5ff6c41dca71e475646fd489615979ca92fb4389aeadefde79a24f1 - -Curve = P-384 -PeerQ = 04788be2336c52f4454d63ee944b1e49bfb619a08371048e6da92e584eae70bde1f171c4df378bd1f3c0ab03048a2378024673ebd8db604eaf41711748bab2968a23ca4476ce144e728247f08af752929157b5830f1e26067466bdfa8b65145a33 -D = 50ccc1f7076e92f4638e85f2db98e0b483e6e2204c92bdd440a6deea04e37a07c6e72791c190ad4e4e86e01efba84269 -MyQ = 04756c07df0ce32c839dac9fb4733c9c28b70113a676a7057c38d223f22a3a9095a8d564653af528e04c7e1824be4a651217c2ce6962cbd2a2e066297b39d57dd9bb4680f0191d390f70b4e461419b2972ce68ad46127fdda6c39195774ea86df3 -Output = 793bb9cd22a93cf468faf804a38d12b78cb12189ec679ddd2e9aa21fa9a5a0b049ab16a23574fe04c1c3c02343b91beb - -Curve = P-384 -PeerQ = 04d09bb822eb99e38060954747c82bb3278cf96bbf36fece3400f4c873838a40c135eb3babb9293bd1001bf3ecdee7bf26d416db6e1b87bbb7427788a3b6c7a7ab2c165b1e366f9608df512037584f213a648d47f16ac326e19aae972f63fd76c9 -D = 06f132b71f74d87bf99857e1e4350a594e5fe35533b888552ceccbc0d8923c902e36141d7691e28631b8bc9bafe5e064 -MyQ = 042a3cc6b8ff5cde926e7e3a189a1bd029c9b586351af8838f4f201cb8f4b70ef3b0da06d352c80fc26baf8f42b784459ebf9985960176da6d23c7452a2954ffcbbcb24249b43019a2a023e0b3dabd461f19ad3e775c364f3f11ad49f3099400d3 -Output = 012d191cf7404a523678c6fc075de8285b243720a903047708bb33e501e0dbee5bcc40d7c3ef6c6da39ea24d830da1e8 - -Curve = P-384 -PeerQ = 0413741262ede5861dad71063dfd204b91ea1d3b7c631df68eb949969527d79a1dc59295ef7d2bca6743e8cd77b04d1b580baaeadc7e19d74a8a04451a135f1be1b02fe299f9dc00bfdf201e83d995c6950bcc1cb89d6f7b30bf54656b9a4da586 -D = 12048ebb4331ec19a1e23f1a2c773b664ccfe90a28bfb846fc12f81dff44b7443c77647164bf1e9e67fd2c07a6766241 -MyQ = 04bc18836bc7a9fdf54b5352f37d7528ab8fa8ec544a8c6180511cbfdd49cce377c39e34c031b5240dc9980503ed2f262c8086cbe338191080f0b7a16c7afc4c7b0326f9ac66f58552ef4bb9d24de3429ed5d3277ed58fcf48f2b5f61326bec6c6 -Output = ad0fd3ddffe8884b9263f3c15fe1f07f2a5a22ffdc7e967085eea45f0cd959f20f18f522763e28bcc925e496a52dda98 - -Curve = P-384 -PeerQ = 049e22cbc18657f516a864b37b783348b66f1aa9626cd631f4fa1bd32ad88cf11db52057c660860d39d11fbf024fabd4446b0d53c79681c28116df71e9cee74fd56c8b7f04b39f1198cc72284e98be9562e35926fb4f48a9fbecafe729309e8b6f -D = 34d61a699ca576169fcdc0cc7e44e4e1221db0fe63d16850c8104029f7d48449714b9884328cae189978754ab460b486 -MyQ = 04867f81104ccd6b163a7902b670ef406042cb0cce7dcdc63d1dfc91b2c40e3cdf7595834bf9eceb79849f1636fc8462fc9d4bde8e875ec49697d258d1d59465f8431c6f5531e1c59e9f9ebe3cf164a8d9ce10a12f1979283a959bad244dd83863 -Output = dc4ca392dc15e20185f2c6a8ea5ec31dfc96f56153a47394b3072b13d0015f5d4ae13beb3bed54d65848f9b8383e6c95 - -Curve = P-384 -PeerQ = 042db5da5f940eaa884f4db5ec2139b0469f38e4e6fbbcc52df15c0f7cf7fcb1808c749764b6be85d2fdc5b16f58ad5dc022e8b02dcf33e1b5a083849545f84ad5e43f77cb71546dbbac0d11bdb2ee202e9d3872e8d028c08990746c5e1dde9989 -D = dc60fa8736d702135ff16aab992bb88eac397f5972456c72ec447374d0d8ce61153831bfc86ad5a6eb5b60bfb96a862c -MyQ = 04b69beede85d0f829fec1b893ccb9c3e052ff692e13b974537bc5b0f9feaf7b22e84f03231629b24866bdb4b8cf90891466f85e2bfcaba2843285b0e14ebc07ef7dafff8b424416fee647b59897b619f20eed95a632e6a4206bf7da429c04c560 -Output = d765b208112d2b9ed5ad10c4046e2e3b0dbf57c469329519e239ac28b25c7d852bf757d5de0ee271cadd021d86cfd347 - -Curve = P-384 -PeerQ = 04329647baa354224eb4414829c5368c82d7893b39804e08cbb2180f459befc4b347a389a70c91a23bd9d30c83be5295d3cc8f61923fad2aa8e505d6cfa126b9fabd5af9dce290b75660ef06d1caa73681d06089c33bc4246b3aa30dbcd2435b12 -D = 6fa6a1c704730987aa634b0516a826aba8c6d6411d3a4c89772d7a62610256a2e2f289f5c3440b0ec1e70fa339e251ce -MyQ = 0453de1fc1328e8de14aecab29ad8a40d6b13768f86f7d298433d20fec791f86f8bc73f358098b256a298bb488de257bf4ac28944fd27f17b82946c04c66c41f0053d3692f275da55cd8739a95bd8cd3af2f96e4de959ea8344d8945375905858b -Output = d3778850aeb58804fbe9dfe6f38b9fa8e20c2ca4e0dec335aafceca0333e3f2490b53c0c1a14a831ba37c4b9d74be0f2 - -Curve = P-384 -PeerQ = 0429d8a36d22200a75b7aea1bb47cdfcb1b7fd66de967041434728ab5d533a060df732130600fe6f75852a871fb2938e39e19b53db528395de897a45108967715eb8cb55c3fcbf23379372c0873a058d57544b102ecce722b2ccabb1a603774fd5 -D = 74ad8386c1cb2ca0fcdeb31e0869bb3f48c036afe2ef110ca302bc8b910f621c9fcc54cec32bb89ec7caa84c7b8e54a8 -MyQ = 0427a3e83cfb9d5122e73129d801615857da7cc089cccc9c54ab3032a19e0a0a9f677346e37f08a0b3ed8da6e5dd6910638d60e44aa5e0fd30c918456796af37f0e41957901645e5c596c6d989f5859b03a0bd7d1f4e77936fff3c74d204e5388e -Output = 81e1e71575bb4505498de097350186430a6242fa6c57b85a5f984a23371123d2d1424eefbf804258392bc723e4ef1e35 - - -# Test vectors from NIST where the peer's public key validation fails. -# -# These vectors were taken from the file -# KASValidityTest_ECCEphemeralUnified_KDFConcat_NOKC_init.fax in -# http://csrc.nist.gov/groups/STM/cavp/documents/keymgmt/KASTestVectorsECC2014.zip -# accessible via -# http://csrc.nist.gov/groups/STM/cavp/key-establishment.html#test-vectors. -# -# Only the test vectors where the test fails because the peer's public key is -# invalid are included here. Supporting the other vectors would require -# implementing an entire key exchange protocol; since the omitted test vectors -# don't seem to stress any *edge cases* of the *ECDH* step of the key exchange -# protocol, they don't seem valuable. -# -# PeerQ = (QeCAVSx, QeCAVSy) in uncompressed encoding. -# Error is the error text from the Result field. The errors reference -# "PKV 5.6.2.5" which is section 5.6.2.5 of -# http://csrc.nist.gov/publications/nistpubs/800-56A/SP800-56A_Revision1_Mar08-2007.pdf -# which is section 5.6.2.3.2/5.6.2.3.3 of -# http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar2.pdf - -# [EC - SHA-256, COUNT = 4] -Curve = P-256 -PeerQ = 04eec6ea7be0362fa496af12e551982a7d9c06b5ef735fadc37990c78ab9be87f4f45058db687e98326036c88eb846476a05385d7bda1d6dd6ca600499b7cc613f -Error = 4 - CAVS's Ephemeral public key Y fails PKV 5.6.2.5 - -# [EC - SHA-256, COUNT = 12] -Curve = P-256 -PeerQ = 0439883b3aadd78b044dadbd9be6a2cc8360da8df4241a4d11665a14e1ce17d19296d5cc675c252d902da5118245e738d57442ca042add79f1d07752bb98a7b805 -Error = 3 - CAVS's Ephemeral public key X fails PKV 5.6.2.5 - -# [EC - SHA-256, COUNT = 12] -Curve = P-256 -PeerQ = 0462ff2c3f5e165afa8dc919b7d705c862855d87869b8440c8d98db2ccb6144e3634a0335ebf64d77dc1c90fd5a5957c0d062593e8891d339f4b3616eb05018103 -Error = 3 - CAVS's Ephemeral public key X fails PKV 5.6.2.5 - -# [EC - SHA-256, COUNT = 20] -Curve = P-256 -PeerQ = 04eaa4b595bd200d3197a35fad5afbee310ac2da532237d5623e1285bdcaa2422177735e831623cd5d67b45e9ca947a48055bdc5f3cca81f75ab124c92ea62091c -Error = 4 - CAVS's Ephemeral public key Y fails PKV 5.6.2.5 - -# [EC - SHA384, COUNT = 3] -Curve = P-256 -PeerQ = 0482022f7a7507a5fdf191b7474d8503f1c2f31ef654096f28d046ff0b1f07d59406b2c2ff0fdcc2d913d6f3fbe02fded8543cd6aff9304213acc9cfd8f4d52803 -Error = 3 - CAVS's Ephemeral public key X fails PKV 5.6.2.5 - -# [EC - SHA384, COUNT = 9] -Curve = P-256 -PeerQ = 045ce1fd24f150bb8714c7c12ed1d85fb8bd597f6e4a8c27eaabd3348903abf91261941a5cd8978c1cfaf6b0f67441dcc5a3686adc7dd1e157f138c9ce48634019 -Error = 4 - CAVS's Ephemeral public key Y fails PKV 5.6.2.5 - -# [EC - SHA384, COUNT = 24] -Curve = P-256 -PeerQ = 04d441c98190cf34cff0ba0dbafbade26c4cadcd5438bb5324e136851b09c009ac14c355a01189339a5a9a4f8a8ed57d7f6537ed161882c1e6912f8e3512faad0f -Error = 3 - CAVS's Ephemeral public key X fails PKV 5.6.2.5 - -# [EC - SHA384, COUNT = 25] -Curve = P-256 -PeerQ = 048dfc7063c55a1fe8684ff6675ad4b53dab503e409c12058ab602c40c143ef84cbe0fce323492ee123e2a543b26b327139f234a08355dd60e2fc2c0babf1a10e3 -Error = 4 - CAVS's Ephemeral public key Y fails PKV 5.6.2.5 - -# [EC - SHA512, COUNT = 0] -Curve = P-256 -PeerQ = 04eb65aaefab96a190a67e566978a179826cf4e04634013f7fe1547a749f3cf6e91d89dfdf23dc14fca68c7c138e90a0d9ee7bcdded8d80e6e409c7f0041d50b80 -Error = 4 - CAVS's Ephemeral public key Y fails PKV 5.6.2.5 - -# [EC - SHA512, COUNT = 5] -Curve = P-256 -PeerQ = 040d0d6e855cd97a1b5a5e52593b8ceac553be06a19090c5442e521731c08e7fc5efa166e25741659bfa5b257a23f36e7d9f08e084610be8dfd8c6844d0ea860b9 -Error = 3 - CAVS's Ephemeral public key X fails PKV 5.6.2.5 - -# [EC - SHA512, COUNT = 26] -Curve = P-256 -PeerQ = 047417e66bbf708b258079648e1a9500d969f2d3860bd606054b611bc853228a324aade59d9ffb73cec6083887f5887c0306deb68e6aa984bbdad141635d078e79 -Error = 3 - CAVS's Ephemeral public key X fails PKV 5.6.2.5 - -# [EC - SHA512, COUNT = 29] -Curve = P-256 -PeerQ = 04d9313d9b7c9abebba2d4cb3c05e3393bd5da667efa74c9d4cc33d2e54446d8d9904240a61c8d7f5ff2028041a81e1408451f4c0e0a18fcf33557546dfc380a06 -Error = 4 - CAVS's Ephemeral public key Y fails PKV 5.6.2.5 - - -# [ED - SHA384, COUNT = 1] -Curve = P-384 -PeerQ = 04eed1bfbefb4c3b568ba187893d0d66f0a266928e57f5903213690cfe55660ce86d7eccf9ad1503932c31ab23917bc759a6e69055c5b84ccd92a414b84283bf89ebb85a850f03e02016a12ff22a4af6f80dd3900f68153b81e02c3f0c3d045d69 -Error = 3 - CAVS's Ephemeral public key X fails PKV 5.6.2.5 - -# [ED - SHA384, COUNT = 2] -Curve = P-384 -PeerQ = 04f081e7e14fcfbf38e3780f57822e8255452e96c673e4b49ebda246b0a5dbca279935e5b31f94eff8ac753aecc810f5ac4dd779b89b0fb7460fe0c50d90006fc5ad7a7a31fe6b827ec059c3b22b40611dbad54c75e653bbdb408fe2e5e24246ae -Error = 4 - CAVS's Ephemeral public key Y fails PKV 5.6.2.5 - -# [ED - SHA384, COUNT = 19] -Curve = P-384 -PeerQ = 0412159e7a89210ff0a5f723904a10c2425a13cfe9016b65cdb48285ec27912b66e415079ced48c94e707963bf5af66cd6ca8c934a135d8d3607f5792b63f127056e715eb4deabd501e6d3e3cfb6eb554c684c10c4a2b31df16fb8d9082131fa09 -Error = 4 - CAVS's Ephemeral public key Y fails PKV 5.6.2.5 - -# [ED - SHA384, COUNT = 28] -Curve = P-384 -PeerQ = 04a308a4cadf229c47fd74de1d1b6e07722ed87fa7506a0ddb8eb2060ca0f93ced5973a76d9e622b7519142ec41969a825fbb34034f8a6ead96a600281a01306b1a8d9a3148e4fb2e9727a4cec6a62b16690f3480a96a5f42dee895a2d456eb0f2 -Error = 3 - CAVS's Ephemeral public key X fails PKV 5.6.2.5 - -# [ED - SHA512, COUNT = 11] -Curve = P-384 -PeerQ = 04ca8e02c55ea6756f5f65d213649c400296a6961d37947025f9d448042ed9c1f3da4e88842f64c1e8a5c2215d57e16cb0697b0923dc80e38fca5381b9a9d59c6f29337adcc7ff183cbb42f267956d130b0b53cb51ba459731001a39093b97db8c -Error = 3 - CAVS's Ephemeral public key X fails PKV 5.6.2.5 - -# [ED - SHA512, COUNT = 13] -Curve = P-384 -PeerQ = 045cb621e4a2186b552961cb7fa8e8191d21335c8fbf2eff27cc44f27a3ae5aa4d000c146279979cbe2cd901ee1619494abd0f8333b8ad65f621271c30386cb455bd66fde88705c57490638c3a6b73c27c4982eba177b0fb867d253d4fccac2361 -Error = 4 - CAVS's Ephemeral public key Y fails PKV 5.6.2.5 - -# [ED - SHA512, COUNT = 20] -Curve = P-384 -PeerQ = 04fd2a7437151a1df4949386fccec7509d731c36dc7ceae03c1ecd9b2b2a413853f5fe2066b4a52082a0a538b0536f6df670132a719f37a02a8fa12ed714876b17fe4d923abe50e7dd371172293336921229fcd44376dd52a2969f459c4a95f11f -Error = 4 - CAVS's Ephemeral public key Y fails PKV 5.6.2.5 - -# [ED - SHA512, COUNT = 28] -Curve = P-384 -PeerQ = 0432d3118ba89149e3f75623098a258d5df0706730a256ee257e04b0a39cf8dfb631c4e31f476d40e538798048dc641138081f05d14000f9dcf2c98245951b6ab55ab9b4687eb36e3aae5391c3c3a0aefff41aebebc6bf027d268aa3153a017bd6 -Error = 3 - CAVS's Ephemeral public key X fails PKV 5.6.2.5 diff -Nru temporalio-1.3.0/vendor/ring/tests/constant_time_tests.rs temporalio-1.3.0/vendor/ring/tests/constant_time_tests.rs --- temporalio-1.3.0/vendor/ring/tests/constant_time_tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/constant_time_tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,18 +12,16 @@ // OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -#![cfg(any(not(target_arch = "wasm32"), feature = "wasm32_c"))] use ring::{constant_time, error, rand}; #[cfg(target_arch = "wasm32")] -use wasm_bindgen_test::{wasm_bindgen_test, wasm_bindgen_test_configure}; +use wasm_bindgen_test::{wasm_bindgen_test as test, wasm_bindgen_test_configure}; #[cfg(target_arch = "wasm32")] wasm_bindgen_test_configure!(run_in_browser); // This logic is loosly based on BoringSSL's `TEST(ConstantTimeTest, MemCmp)`. #[test] -#[cfg_attr(all(target_arch = "wasm32", feature = "wasm32_c"), wasm_bindgen_test)] fn test_verify_slices_are_equal() { let initial: [u8; 256] = rand::generate(&rand::SystemRandom::new()).unwrap().expose(); @@ -69,11 +67,11 @@ }; assert_eq!(a == b, expected_result.is_ok()); // Sanity check. assert_eq!( - constant_time::verify_slices_are_equal(&a, &b), + constant_time::verify_slices_are_equal(a, b), expected_result ); assert_eq!( - constant_time::verify_slices_are_equal(&b, &a), + constant_time::verify_slices_are_equal(b, a), expected_result ); } diff -Nru temporalio-1.3.0/vendor/ring/tests/digest_tests.rs temporalio-1.3.0/vendor/ring/tests/digest_tests.rs --- temporalio-1.3.0/vendor/ring/tests/digest_tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/digest_tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -15,14 +15,13 @@ use ring::{digest, test, test_file}; #[cfg(target_arch = "wasm32")] -use wasm_bindgen_test::{wasm_bindgen_test, wasm_bindgen_test_configure}; +use wasm_bindgen_test::{wasm_bindgen_test as test, wasm_bindgen_test_configure}; #[cfg(target_arch = "wasm32")] wasm_bindgen_test_configure!(run_in_browser); /// Test vectors from BoringSSL, Go, and other sources. #[test] -#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] fn digest_misc() { test::run(test_file!("digest_tests.txt"), |section, test_case| { assert_eq!(section, ""); @@ -51,7 +50,7 @@ use ring::{digest, test}; fn run_known_answer_test(digest_alg: &'static digest::Algorithm, test_file: test::File) { - let section_name = &format!("L = {}", digest_alg.output_len); + let section_name = &format!("L = {}", digest_alg.output_len()); test::run(test_file, |section, test_case| { assert_eq!(section_name, section); let len_bits = test_case.consume_usize("Len"); @@ -81,10 +80,9 @@ use ring::{digest, test_file}; #[cfg(target_arch = "wasm32")] - use wasm_bindgen_test::wasm_bindgen_test; + use wasm_bindgen_test::wasm_bindgen_test as test; #[test] - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] fn short_msg_known_answer_test() { run_known_answer_test( &digest::$algorithm_name, @@ -97,7 +95,6 @@ } #[test] - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] fn long_msg_known_answer_test() { run_known_answer_test( &digest::$algorithm_name, @@ -110,7 +107,6 @@ } #[test] - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] fn monte_carlo_test() { run_monte_carlo_test( &digest::$algorithm_name, @@ -126,10 +122,10 @@ } fn run_monte_carlo_test(digest_alg: &'static digest::Algorithm, test_file: test::File) { - let section_name = &format!("L = {}", digest_alg.output_len); + let section_name = &format!("L = {}", digest_alg.output_len()); let mut expected_count: isize = -1; - let mut seed = Vec::with_capacity(digest_alg.output_len); + let mut seed = Vec::with_capacity(digest_alg.output_len()); test::run(test_file, |section, test_case| { assert_eq!(section_name, section); @@ -184,11 +180,12 @@ macro_rules! test_i_u_f { ( $test_name:ident, $alg:expr) => { #[cfg(not(debug_assertions))] - // TODO: #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] + // TODO: Get this working on WebAssembly + #[cfg(not(target_arch = "wasm32"))] #[test] fn $test_name() { let mut input = [0; (digest::MAX_BLOCK_LEN + 1) * 3]; - let max = $alg.block_len + 1; + let max = $alg.block_len() + 1; for i in 0..(max * 3) { input[i] = (i & 0xff) as u8; } @@ -244,9 +241,10 @@ /// This is not run in dev (debug) builds because it is too slow. macro_rules! test_large_digest { ( $test_name:ident, $alg:expr, $len:expr, $expected:expr) => { + // TODO: get this working on WebAssembly. #[cfg(not(debug_assertions))] + #[cfg(not(target_arch = "wasm32"))] #[test] - // TODO: #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] fn $test_name() { let chunk = vec![123u8; 16 * 1024]; let chunk_len = chunk.len() as u64; @@ -316,7 +314,6 @@ // digest::SHA512_256, 256 / 8, [ ... ]); #[test] -#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] fn test_fmt_algorithm() { assert_eq!("SHA1", &format!("{:?}", digest::SHA1_FOR_LEGACY_USE_ONLY)); assert_eq!("SHA256", &format!("{:?}", digest::SHA256)); @@ -326,7 +323,6 @@ } #[test] -#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] fn digest_test_fmt() { assert_eq!( "SHA1:b7e23ec29af22b0b4e41da31e868d57226121c84", diff -Nru temporalio-1.3.0/vendor/ring/tests/digest_tests.txt temporalio-1.3.0/vendor/ring/tests/digest_tests.txt --- temporalio-1.3.0/vendor/ring/tests/digest_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/digest_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,214 +0,0 @@ -# SHA-1 tests from RFC 3174. - -Hash = SHA1 -Input = "abc" -Repeat = 1 -Output = a9993e364706816aba3e25717850c26c9cd0d89d - -Hash = SHA1 -Input = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" -Repeat = 1 -Output = 84983e441c3bd26ebaae4aa1f95129e5e54670f1 - -Hash = SHA1 -Input = "a" -Repeat = 1000000 -Output = 34aa973cd4c4daa4f61eeb2bdbad27316534016f - -Hash = SHA1 -Input = "0123456701234567012345670123456701234567012345670123456701234567" -Repeat = 10 -Output = dea356a2cddd90c7a7ecedc5ebb563934f460452 - -# SHA-256 tests from NIST. - -Hash = SHA256 -Input = "abc" -Repeat = 1 -Output = ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad - -Hash = SHA256 -Input = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" -Repeat = 1 -Output = 248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1 - -# SHA-384 tests from NIST. - -Hash = SHA384 -Input = "abc" -Repeat = 1 -Output = cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7 - -Hash = SHA384 -Input = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu" -Repeat = 1 -Output = 09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712fcc7c71a557e2db966c3e9fa91746039 - -# SHA-512 tests from NIST - -Hash = SHA512 -Input = "abc" -Repeat = 1 -Output = ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f - -Hash = SHA512 -Input = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu" -Repeat = 1 -Output = 8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909 - -# SHA-512/256 tests from Go. - -Hash = SHA512_256 -Input = "" -Repeat = 1 -Output = c672b8d1ef56ed28ab87c3622c5114069bdd3ad7b8f9737498d0c01ecef0967a - -Hash = SHA512_256 -Input = "a" -Repeat = 1 -Output = 455e518824bc0601f9fb858ff5c37d417d67c2f8e0df2babe4808858aea830f8 - -Hash = SHA512_256 -Input = "ab" -Repeat = 1 -Output = 22d4d37ec6370571af7109fb12eae79673d5f7c83e6e677083faa3cfac3b2c14 - -Hash = SHA512_256 -Input = "abc" -Repeat = 1 -Output = 53048e2681941ef99b2e29b76b4c7dabe4c2d0c634fc6d46e0e2f13107e7af23 - -Hash = SHA512_256 -Input = "abcd" -Repeat = 1 -Output = d2891c7978be0e24948f37caa415b87cb5cbe2b26b7bad9dc6391b8a6f6ddcc9 - -Hash = SHA512_256 -Input = "abcde" -Repeat = 1 -Output = de8322b46e78b67d4431997070703e9764e03a1237b896fd8b379ed4576e8363 - -Hash = SHA512_256 -Input = "abcdef" -Repeat = 1 -Output = e4fdcb11d1ac14e698743acd8805174cea5ddc0d312e3e47f6372032571bad84 - -Hash = SHA512_256 -Input = "abcdefg" -Repeat = 1 -Output = a8117f680bdceb5d1443617cbdae9255f6900075422326a972fdd2f65ba9bee3 - -Hash = SHA512_256 -Input = "abcdefgh" -Repeat = 1 -Output = a29b9645d2a02a8b582888d044199787220e316bf2e89d1422d3df26bf545bbe - -Hash = SHA512_256 -Input = "abcdefghi" -Repeat = 1 -Output = b955095330f9c8188d11884ec1679dc44c9c5b25ff9bda700416df9cdd39188f - -Hash = SHA512_256 -Input = "abcdefghij" -Repeat = 1 -Output = 550762913d51eefbcd1a55068fcfc9b154fd11c1078b996df0d926ea59d2a68d - -Hash = SHA512_256 -Input = "Discard medicine more than two years old." -Repeat = 1 -Output = 690c8ad3916cefd3ad29226d9875965e3ee9ec0d4482eacc248f2ff4aa0d8e5b - -Hash = SHA512_256 -Input = "He who has a shady past knows that nice guys finish last." -Repeat = 1 -Output = 25938ca49f7ef1178ce81620842b65e576245fcaed86026a36b516b80bb86b3b - -Hash = SHA512_256 -Input = "I wouldn't marry him with a ten foot pole." -Repeat = 1 -Output = 698e420c3a7038e53d8e73f4be2b02e03b93464ac1a61ebe69f557079921ef65 - -Hash = SHA512_256 -Input = "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave" -Repeat = 1 -Output = 839b414d7e3900ee243aa3d1f9b6955720e64041f5ab9bedd3eb0a08da5a2ca8 - -Hash = SHA512_256 -Input = "The days of the digital watch are numbered. -Tom Stoppard" -Repeat = 1 -Output = 5625ecb9d284e54c00b257b67a8cacb25a78db2845c60ef2d29e43c84f236e8e - -Hash = SHA512_256 -Input = "Nepal premier won't resign." -Repeat = 1 -Output = 9b81d06bca2f985e6ad3249096ff3c0f2a9ec5bb16ef530d738d19d81e7806f2 - -Hash = SHA512_256 -Input = "For every action there is an equal and opposite government program." -Repeat = 1 -Output = 08241df8d91edfcd68bb1a1dada6e0ae1475a5c6e7b8f12d8e24ca43a38240a9 - -Hash = SHA512_256 -Input = "His money is twice tainted: 'taint yours and 'taint mine." -Repeat = 1 -Output = 4ff74d9213a8117745f5d37b5353a774ec81c5dfe65c4c8986a56fc01f2c551e - -Hash = SHA512_256 -Input = "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977" -Repeat = 1 -Output = b5baf747c307f98849ec881cf0d48605ae4edd386372aea9b26e71db517e650b - -Hash = SHA512_256 -Input = "It's a tiny change to the code and not completely disgusting. - Bob Manchek" -Repeat = 1 -Output = 7eef0538ebd7ecf18611d23b0e1cd26a74d65b929a2e374197dc66e755ca4944 - -Hash = SHA512_256 -Input = "size: a.out: bad magic" -Repeat = 1 -Output = d05600964f83f55323104aadab434f32391c029718a7690d08ddb2d7e8708443 - -Hash = SHA512_256 -Input = "The major problem is with sendmail. -Mark Horton" -Repeat = 1 -Output = 53ed5f9b5c0b674ac0f3425d9f9a5d462655b07cc90f5d0f692eec093884a607 - -Hash = SHA512_256 -Input = "Give me a rock, paper and scissors and I will move the world. CCFestoon" -Repeat = 1 -Output = 5a0147685a44eea2435dbd582724efca7637acd9c428e5e1a05115bc3bc2a0e0 - -Hash = SHA512_256 -Input = "If the enemy is within range, then so are you." -Repeat = 1 -Output = 1152c9b27a99dbf4057d21438f4e63dd0cd0977d5ff12317c64d3b97fcac875a - -Hash = SHA512_256 -Input = "It's well we cannot hear the screams/That we create in others' dreams." -Repeat = 1 -Output = 105e890f5d5cf1748d9a7b4cdaf58b69855779deebc2097747c2210a17b2cb51 - -Hash = SHA512_256 -Input = "You remind me of a TV show, but that's all right: I watch it anyway." -Repeat = 1 -Output = 74644ead770da1434365cd912656fe1aca2056d3039d39f10eb1151bddb32cf3 - -Hash = SHA512_256 -Input = "C is as portable as Stonehedge!!" -Repeat = 1 -Output = 50a234625de5587581883dad9ef399460928032a5ea6bd005d7dc7b68d8cc3d6 - -Hash = SHA512_256 -Input = "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley" -Repeat = 1 -Output = a7a3846005f8a9935a0a2d43e7fd56d95132a9a3609bf3296ef80b8218acffa0 - -Hash = SHA512_256 -Input = "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction. Lewis-Randall Rule" -Repeat = 1 -Output = 688ff03e367680757aa9906cb1e2ad218c51f4526dc0426ea229a5ba9d002c69 - -Hash = SHA512_256 -Input = "How can you write a big system without C++? -Paul Glick" -Repeat = 1 -Output = 3fa46d52094b01021cff5af9a438982b887a5793f624c0a6644149b6b7c3f485 diff -Nru temporalio-1.3.0/vendor/ring/tests/ecdsa_from_pkcs8_tests.txt temporalio-1.3.0/vendor/ring/tests/ecdsa_from_pkcs8_tests.txt --- temporalio-1.3.0/vendor/ring/tests/ecdsa_from_pkcs8_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/ecdsa_from_pkcs8_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -Curve = P-256 -Input = 308187020100301306072a8648ce3d020106082a8648ce3d030107046d306b0201010420090460075f15d2a256248000fb02d83ad77593dde4ae59fc5e96142dffb2bd07a14403420004cf0d13a3a7577231ea1b66cf4021cd54f21f4ac4f5f2fdd28e05bc7d2bd099d1374cd08d2ef654d6f04498db462f73e0282058dd661a4c9b0437af3f7af6e724 - -Curve = P-384 -Input = 3081b6020100301006072a8648ce3d020106052b8104002204819e30819b0201010430fc0603810412769beeabbf97ce9764e104bca45b3b7428006fb42d1fa69a344bf475ce17bf06daf553c4eccffcfecc26a1640362000417e425506a81d85e607a3caeaccbe6cc7ef58b559115b9867175ef9911f66ea77eb5b7f43e42f3129a1fe2841f6717ed4fc02bf8cfe2d10cac06a150dcba7ae9f035ec9b6b034a4ddc554da7c2da4719a1d990097fbb451a3ea1e664fc444cfa - -# A P-256 key where the ECPrivateKey contains a parameters field that matches the PKCS#8 algorithm identifier. -Curve = P-256 -Input = 308193020100301306072a8648ce3d020106082a8648ce3d030107047930770201010420090460075f15d2a256248000fb02d83ad77593dde4ae59fc5e96142dffb2bd07a00a06082a8648ce3d030107a14403420004cf0d13a3a7577231ea1b66cf4021cd54f21f4ac4f5f2fdd28e05bc7d2bd099d1374cd08d2ef654d6f04498db462f73e0282058dd661a4c9b0437af3f7af6e724 - -# A P-384 key where the ECPrivateKey contains a parameters field identifying P-384. -Curve = P-384 -Input = 3081bf020100301006072a8648ce3d020106052b810400220481a73081a40201010430fc0603810412769beeabbf97ce9764e104bca45b3b7428006fb42d1fa69a344bf475ce17bf06daf553c4eccffcfecc26a00706052b81040022a1640362000417e425506a81d85e607a3caeaccbe6cc7ef58b559115b9867175ef9911f66ea77eb5b7f43e42f3129a1fe2841f6717ed4fc02bf8cfe2d10cac06a150dcba7ae9f035ec9b6b034a4ddc554da7c2da4719a1d990097fbb451a3ea1e664fc444cfa - -# A P-256 key where the ECPrivateKey contains a parameters field identifying P-384. -Curve = P-256 -Input = 308190020100301306072a8648ce3d020106082a8648ce3d030107047630740201010420090460075f15d2a256248000fb02d83ad77593dde4ae59fc5e96142dffb2bd07a00706052b81040022a14403420004cf0d13a3a7577231ea1b66cf4021cd54f21f4ac4f5f2fdd28e05bc7d2bd099d1374cd08d2ef654d6f04498db462f73e0282058dd661a4c9b0437af3f7af6e724 -Error = WrongAlgorithm - -# A P-256 key where the ECPrivateKey contains a parameters field containing an entire AlgorithmIdentifier. -Curve = P-256 -Input = 3081a0020100301306072a8648ce3d020106082a8648ce3d0301070481853081820201010420090460075f15d2a256248000fb02d83ad77593dde4ae59fc5e96142dffb2bd07a015301306072a8648ce3d020106082a8648ce3d030107a14403420004cf0d13a3a7577231ea1b66cf4021cd54f21f4ac4f5f2fdd28e05bc7d2bd099d1374cd08d2ef654d6f04498db462f73e0282058dd661a4c9b0437af3f7af6e724 -Error = WrongAlgorithm - -# The curve P-256 is encoded explicitly, instead of as a reference to a named curve. -Curve = P-256 -Input = 308201220201010420c6c1aada15b07661f8142c6caf0fdb241aff2efe46c0938b74f2bcc53052b077a081fa3081f7020101302c06072a8648ce3d0101022100ffffffff00000001000000000000000000000000ffffffffffffffffffffffff305b0420ffffffff00000001000000000000000000000000fffffffffffffffffffffffc04205ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b031500c49d360886e704936a6678e1139d26b7819f7e900441046b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2964fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5022100ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551020101 -Error = InvalidEncoding - -# A valid PKCS#8 P-256 private key, but without the public key in the ECPrivateKey. -Curve = P-256 -Input = 308141020100301306072a8648ce3d020106082a8648ce3d030107042730250201010420090460075f15d2a256248000fb02d83ad77593dde4ae59fc5e96142dffb2bd07 -Error = InvalidEncoding - -# The AlgorithmIdentifier is ecPublicKey w/ P-256, but it's an RSAPrivateKey. -Curve = P-256 -Input = 308189020100301306072A8648CE3D020106082A8648CE3D0301070500046d306b0201010420090460075f15d2a256248000fb02d83ad77593dde4ae59fc5e96142dffb2bd07a14403420004cf0d13a3a7577231ea1b66cf4021cd54f21f4ac4f5f2fdd28e05bc7d2bd099d1374cd08d2ef654d6f04498db462f73e0282058dd661a4c9b0437af3f7af6e724 -Error = InvalidEncoding - -# A P-256 ECPrivateKey, but the AlgorithmIdentifier is rsaEncryption. -Curve = P-256 -Input = 308181020100300d06092a864886f70d0101010500046d306b0201010420090460075f15d2a256248000fb02d83ad77593dde4ae59fc5e96142dffb2bd07a14403420004cf0d13a3a7577231ea1b66cf4021cd54f21f4ac4f5f2fdd28e05bc7d2bd099d1374cd08d2ef654d6f04498db462f73e0282058dd661a4c9b0437af3f7af6e724 -Error = WrongAlgorithm diff -Nru temporalio-1.3.0/vendor/ring/tests/ecdsa_tests.rs temporalio-1.3.0/vendor/ring/tests/ecdsa_tests.rs --- temporalio-1.3.0/vendor/ring/tests/ecdsa_tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/ecdsa_tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -22,6 +22,8 @@ #[test] fn ecdsa_from_pkcs8_test() { + let rng = rand::SystemRandom::new(); + test::run( test_file!("ecdsa_from_pkcs8_tests.txt"), |section, test_case| { @@ -57,7 +59,7 @@ let error = test_case.consume_optional_string("Error"); match ( - signature::EcdsaKeyPair::from_pkcs8(this_fixed, &input), + signature::EcdsaKeyPair::from_pkcs8(this_fixed, &input, &rng), error.clone(), ) { (Ok(_), None) => (), @@ -67,7 +69,7 @@ }; match ( - signature::EcdsaKeyPair::from_pkcs8(this_asn1, &input), + signature::EcdsaKeyPair::from_pkcs8(this_asn1, &input, &rng), error, ) { (Ok(_), None) => (), @@ -76,8 +78,8 @@ (Err(actual), Some(expected)) => assert_eq!(format!("{}", actual), expected), }; - assert!(signature::EcdsaKeyPair::from_pkcs8(other_fixed, &input).is_err()); - assert!(signature::EcdsaKeyPair::from_pkcs8(other_asn1, &input).is_err()); + assert!(signature::EcdsaKeyPair::from_pkcs8(other_fixed, &input, &rng).is_err()); + assert!(signature::EcdsaKeyPair::from_pkcs8(other_asn1, &input, &rng).is_err()); Ok(()) }, @@ -104,7 +106,7 @@ println!(); #[cfg(feature = "alloc")] - let _ = signature::EcdsaKeyPair::from_pkcs8(*alg, pkcs8.as_ref()).unwrap(); + let _ = signature::EcdsaKeyPair::from_pkcs8(alg, pkcs8.as_ref(), &rng).unwrap(); } } @@ -181,9 +183,11 @@ const PUBLIC_KEY: &[u8] = include_bytes!("ecdsa_test_public_key_p256.der"); const PUBLIC_KEY_DEBUG: &str = include_str!("ecdsa_test_public_key_p256_debug.txt"); + let rng = rand::SystemRandom::new(); let key_pair = signature::EcdsaKeyPair::from_pkcs8( &signature::ECDSA_P256_SHA256_FIXED_SIGNING, PRIVATE_KEY, + &rng, ) .unwrap(); @@ -246,7 +250,7 @@ }; let private_key = - signature::EcdsaKeyPair::from_private_key_and_public_key(signing_alg, &d, &q) + signature::EcdsaKeyPair::from_private_key_and_public_key(signing_alg, &d, &q, &rng) .unwrap(); let signature = private_key.sign(&rng, &msg).unwrap(); @@ -300,7 +304,7 @@ }; let private_key = - signature::EcdsaKeyPair::from_private_key_and_public_key(signing_alg, &d, &q) + signature::EcdsaKeyPair::from_private_key_and_public_key(signing_alg, &d, &q, &rng) .unwrap(); let signature = private_key.sign(&rng, &msg).unwrap(); diff -Nru temporalio-1.3.0/vendor/ring/tests/ecdsa_verify_asn1_tests.txt temporalio-1.3.0/vendor/ring/tests/ecdsa_verify_asn1_tests.txt --- temporalio-1.3.0/vendor/ring/tests/ecdsa_verify_asn1_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/ecdsa_verify_asn1_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,738 +0,0 @@ -# Test vectors for short values of s. - -# S is the maximum length. -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 0430345fd47ea21a11129be651b0884bfac698377611acc9f689458e13b9ed7d4b9d7599a68dcf125e7f31055ccb374cd04f6d6fd2b217438a63f6f667d50ef2f0 -Sig = 30440220341f6779b75e98bb42e01095dd48356cbf9002dc704ac8bd2a8240b88d3796c60220555843b1b4e264fe6ffe6e2b705a376c05c09404303ffe5d2711f3e3b3a010a1 -Result = P (0 ) - -# S is one byte shorter than the maximum length. -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 0430345fd47ea21a11129be651b0884bfac698377611acc9f689458e13b9ed7d4b9d7599a68dcf125e7f31055ccb374cd04f6d6fd2b217438a63f6f667d50ef2f0 -Sig = 3044022031ed574e9688aed7016e985c0e742fb788be73d9ad0a895e6182c77751817ed0022000d98eb6d480d64d1729c680693cb13bd6bf0c7b651007e459e667683ff65b92 -Result = P (0 ) - -# S is 2 bytes shorter than the maximum length. -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 0430345fd47ea21a11129be651b0884bfac698377611acc9f689458e13b9ed7d4b9d7599a68dcf125e7f31055ccb374cd04f6d6fd2b217438a63f6f667d50ef2f0 -Sig = 3043022100f59cf66594cc837415f16494fb52c02f2a6264bf6ce7dccbf2f78c090cdcefb0021e5a8c8a04ba7825f3f8e56517056daa1a51129cd91382a24589ed05d0c13d -Result = P (0 ) - -# S is the maximum length. -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 045c5e788a805c77d34128b8401cb59b2373b8b468336c9318252bf39fd31d2507557987a5180a9435f9fb8eb971c426f1c485170dcb18fb688a257f89387a09fc4c5b8bd4b320616b54a0a7b1d1d7c6a0c59f6dff78c78ad4e3d6fca9c9a17b96 -Sig = 306502310085ac708d4b0126bac1f5eeebdf911409070a286fdde5649582611b60046de353761660dd03903f58b44148f25142eef80230183475ec1f1392f3d6838abc0c01724709c446888bed7f2ce4642c6839dc18044a2a6ab9ddc960bfac79f6988e62d452 -Result = P (0 ) - -# S is one byte shorter than the maximum length. -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 045c5e788a805c77d34128b8401cb59b2373b8b468336c9318252bf39fd31d2507557987a5180a9435f9fb8eb971c426f1c485170dcb18fb688a257f89387a09fc4c5b8bd4b320616b54a0a7b1d1d7c6a0c59f6dff78c78ad4e3d6fca9c9a17b96 -Sig = 306302304dec97b54c4150ebaffc2dbfc2bc17c302be47cfc4b541ada34108b1080f2482a3e7f5f2b16f730210bd8c29b6681e0b022f0575984f37064bfbbdda76836f5ef2d632f006c338a9585c8b9108c46ea812ce066110156de9806ae5711153e2ef0b -Result = P (0 ) - -# S is 2 bytes shorter than the maximum length. -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 045c5e788a805c77d34128b8401cb59b2373b8b468336c9318252bf39fd31d2507557987a5180a9435f9fb8eb971c426f1c485170dcb18fb688a257f89387a09fc4c5b8bd4b320616b54a0a7b1d1d7c6a0c59f6dff78c78ad4e3d6fca9c9a17b96 -Sig = 3064023100ad8e51ec23d5b8130a5e0636a2f0d1740e8b5404c368b7dab5ae82d307d653c6ef70dcee70b112bf678801f87fb8f5a9022f00806d69e0c2834c27666996d55655cf9358b201aa85d3b08891abcc68c854cac6c67c53b3bf92df9a677d11aba13d -Result = P (0 ) - - -# Generated Test vectors. -# -# TODO: Test the range of `r` in addition to the range of `s`. -# TODO: Test what happens when the message digests to zero. -# TODO: Additional test coverage. libsecp256k1 is a good example. - - -# Test vectors for Gregory Maxwell's trick. -# -# In all cases, the `s` component of the signature was selected -# arbitrarily as 4 and then the `r` component was chosen to be the -# smallest value where the public key recovery from the signature -# works. - -# The signature has r < q - n. This is the control case for the next -# test case; this signature is the same but the public key is -# different. Notice that both public keys work for the same signature! -# This signature will validate even if the implementation doesn't -# reduce the X coordinate of the multiplication result (mod n). -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 041548fc88953e06cd34d4b300804c5322cb48c24aaaa4d07a541b0f0ccfeedeb0ae4991b90519ea405588bdf699f5e6d0c6b2d5217a5c16e8371062737aa1dae1 -Sig = 3006020106020104 -Result = P (0 ) - -# The signature has r < q - n. s Since r < q - n, r + n < q. Notice -# that this signature is the same as the signature in the preceding -# test case, but the public key is different. That the signature -# validates for this case too is what's special about the case where -# r < q - n. If this test case fails it is likely that the -# implementation doesn't reduce the X coordinate of the multiplication -# result (mod n), or it is missing the second step of Gregory -# Maxwell's trick. -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 04ad8f60e4ec1ebdb6a260b559cb55b1e9d2c5ddd43a41a2d11b0741ef2567d84e166737664104ebbc337af3d861d3524cfbc761c12edae974a0759750c8324f9a -Sig = 3006020106020104 -Result = P (0 ) - -# The signature has r > q - n. The signature is for the public key -# recovered from r. r + n > q since r > q - n. This is the control -# for the next test case; this signature is the same as the signature -# in the following test case but the public key is different. -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 0445bd879143a64af5746e2e82aa65fd2ea07bba4e35594095a981b59984dacb219d59697387ac721b1f1eccf4b11f43ddc39e8367147abab3084142ed3ea170e4 -Sig = 301502104319055358e8617b0c46353d039cdaae020104 -Result = P (0 ) - -# The signature has r > q - n. The signature is for the public key -# recovered from r + n (mod q). r + n > q since r > q - n, and so -# r + n (mod q) < r because r + n (mod n) != r + n (mod q). Notice -# that this signature is the same as the signature in the preceding -# test case but the public key is different. Also, notice that the -# signature fails to validate in this case, unlike other related test -# cases. If this test case fails (the signature validates), it is -# likely that the implementation didn't guard the second case of -# Gregory Maxwell's trick on the condition r < q - n. -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 040feb5df4cc78b35ec9c180cc0de5842f75f088b48456978ffa98e716d94883e1e6500b2a1f6c1d9d493428d7ae7d9a8a560fff30a3d14aa160be0c5e7edcd887 -Sig = 301502104319055358e8617b0c46353d039cdaae020104 -Result = F - -# The signature has r < q - n. This is the control case for the next -# test case; this signature is the same but the public key is -# different. Notice that both public keys work for the same signature! -# This signature will validate even if the implementation doesn't -# reduce the X coordinate of the multiplication result (mod n). -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 0425b890b9597155baf7e7ffb48d8123184cbb76ea3f7b10d8f1702136f969e915188cff306c67950437f816ce6ecb739204cc069edac95929dfbd719313552797962789e2210a0bf270c2f0ffc109a70e40da6303a2599bdd702c19070dd51f42 -Sig = 3006020103020104 -Result = P (0 ) - -# The signature has r < q - n. s Since r < q - n, r + n < q. Notice -# that this signature is the same as the signature in the preceding -# test case, but the public key is different. That the signature -# validates for this case too is what's special about the case where -# r < q - n. If this test case fails it is likely that the -# implementation doesn't reduce the X coordinate of the multiplication -# result (mod n), or it is missing the second step of Gregory -# Maxwell's trick. -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 045a3c576f0c2a615063c6e8ec40f5bf0dd67e549e9f13f8f881703ec40a8d6d8ecbb0d8e5b20f3aa0f2e581b594cea3e654a450cabcf24bd908cc47da98eba648a0440332ee19fb53da96dddaec521f718f7b52a161b67134d6e0d6e81dc45502 -Sig = 3006020103020104 -Result = P (0 ) - -# The signature has r > q - n. The signature is for the public key -# recovered from r. r + n > q since r > q - n. This is the control -# for the next test case; this signature is the same as the signature -# in the following test case but the public key is different. -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 04a93588bffb32417bd2b0fa03a6a30d2cf90034e6070b9333d4e7a42fe88bce5a03e8be7f2a84fbc25ec84dc34915c53fd975cfd0db77ec2b5c548994dc9f62756e018882a31d883471b0bbbd8588d9a2acab1aeaaa1eb217f8e528e7114162df -Sig = 301d0218389cb27e0bc8d21fa7e5f24cb74f58851313e696333ad68e020104 -Result = P (0 ) - -# The signature has r > q - n. The signature is for the public key -# recovered from r + n (mod q). r + n > q since r > q - n, and so -# r + n (mod q) < r because r + n (mod n) != r + n (mod q). Notice -# that this signature is the same as the signature in the preceding -# test case but the public key is different. Also, notice that the -# signature fails to validate in this case, unlike other related test -# cases. If this test case fails (the signature validates), it is -# likely that the implementation didn't guard the second case of -# Gregory Maxwell's trick on the condition r < q - n. -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 04576270f9571c9e99b9c71be1a1a705e5155e46b8c6dd920c14e2aaf0f9f96ed30754e2c8f8464d015a9bc779495ea568ac39c555c3b03de021e8167a27425588d6a82b68cf7a0f6ae389a202d8663ed32b5e1782c0377a8f0dc309ae28143961 -Sig = 301d0218389cb27e0bc8d21fa7e5f24cb74f58851313e696333ad68e020104 -Result = F - - -# Generated Test vectors edge cases of signature (r, s) values. - -# s == 0 (out of range) -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 0471db746fd153cf5c5a7c7210f9008c0e99c3a936ef0e720b202b304771431a230af53931e70cbe279ca47ce819616ed1db6604490f70abbcef3036732426eb6d -Sig = 3006020106020100 -Result = F - -# s == 1 (minimum allowed) -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 046e3f95fae7606c1cdfab1f1560de160ed806bbc2a85dc5a2d002aa1c0ac3e1fb5bcd5f7a325415824365cc584f08c144118318ce4d0f5df82b7753b291c4fe96 -Sig = 3006020106020101 -Result = P (0 ) - -# s == n (out of range) -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 0471db746fd153cf5c5a7c7210f9008c0e99c3a936ef0e720b202b304771431a230af53931e70cbe279ca47ce819616ed1db6604490f70abbcef3036732426eb6d -Sig = 3026020106022100ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551 -Result = F - -# s == n - 1 (maximum allowed) -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 04d78f14b53bf825c9f7146193f775458ef5ee46500cd44b18488cb4115c3f00f04b11fc7c6aa1045dc83e4f3e8a14d4a017db8415b5fe3f1a32afba4b8c707ab4 -Sig = 3026020106022100ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550 -Result = P (0 ) - -# s == 0 (out of range) -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 04aad95ed7839057e221d46bb203f8b6c977588966fffccf815542429477dc45e61ed6b86fec0a2f3dfb453ea56ac0a6c06933416550a7158ed3f06aca1822c9b83102b40e5ada71651ec153a919a32755ee0292f6a5530d5889c1dc6cb020351f -Sig = 3006020103020100 -Result = F - -# s == 1 (minimum allowed) -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 042aadde5424928b888e20ecef2525f99d646519aa994c075a4081aa852ec309a6ac63006421ff756c6c0924d611d1bda82df99267266ba603b07ba85c678f4ae69daf4634a5e597d77d0b0338f343d8090b2d4420a29302ab47ef04ad45e1461f -Sig = 3006020103020101 -Result = P (0 ) - -# s == n (out of range) -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 04aad95ed7839057e221d46bb203f8b6c977588966fffccf815542429477dc45e61ed6b86fec0a2f3dfb453ea56ac0a6c06933416550a7158ed3f06aca1822c9b83102b40e5ada71651ec153a919a32755ee0292f6a5530d5889c1dc6cb020351f -Sig = 3036020103023100ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973 -Result = F - -# s == n - 1 (maximum allowed) -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 04a1d58e8df7f27c4483be9369f8d73d3ea968fce26ff5374d822c5cb4286c00f6fef54d525f4c8b180065dcc1f95f7a0c291171ca5894ba3f4d52ae091ec36c81ee2f34a384c59183284d85dddc3b196c6d7deaab1626d662bc628136126eef6b -Sig = 3036020103023100ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52972 -Result = P (0 ) - - -# RFC 6979 Test Vectors - -Curve = P-256 -Digest = SHA256 -Msg = "sample" -Q = 0460FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB67903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299 -Sig = 3046022100EFD48B2AACB6A8FD1140DD9CD45E81D69D2C877B56AAF991C34D0EA84EAF3716022100F7CB1C942D657C41D436C7A1B6E29F65F3E900DBB9AFF4064DC4AB2F843ACDA8 -Result = P (0 ) - -Curve = P-256 -Digest = SHA384 -Msg = "sample" -Q = 0460fed4ba255a9d31c961eb74c6356d68c049b8923b61fa6ce669622e60f29fb67903fe1008b8bc99a41ae9e95628bc64f2f1b20c2d7e9f5177a3c294d4462299 -Sig = 304402200eafea039b20e9b42309fb1d89e213057cbf973dc0cfc8f129edddc800ef771902204861f0491e6998b9455193e34e7b0d284ddd7149a74b95b9261f13abde940954 -Result = P (0 ) - -Curve = P-256 -Digest = SHA256 -Msg = "test" -Q = 0460FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB67903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299 -Sig = 3045022100F1ABB023518351CD71D881567B1EA663ED3EFCF6C5132B354F28D3B0B7D383670220019F4113742A2B14BD25926B49C649155F267E60D3814B4C0CC84250E46F0083 -Result = P (0 ) - -Curve = P-256 -Digest = SHA384 -Msg = "test" -Q = 0460FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB67903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299 -Sig = 304602210083910E8B48BB0C74244EBDF7F07A1C5413D61472BD941EF3920E623FBCCEBEB60221008DDBEC54CF8CD5874883841D712142A56A8D0F218F5003CB0296B6B509619F2C -Result = P (0 ) - -Curve = P-384 -Digest = SHA256 -Msg = "sample" -Q = 04EC3A4E415B4E19A4568618029F427FA5DA9A8BC4AE92E02E06AAE5286B300C64DEF8F0EA9055866064A254515480BC138015D9B72D7D57244EA8EF9AC0C621896708A59367F9DFB9F54CA84B3F1C9DB1288B231C3AE0D4FE7344FD2533264720 -Sig = 3065023021B13D1E013C7FA1392D03C5F99AF8B30C570C6F98D4EA8E354B63A21D3DAA33BDE1E888E63355D92FA2B3C36D8FB2CD023100F3AA443FB107745BF4BD77CB3891674632068A10CA67E3D45DB2266FA7D1FEEBEFDC63ECCD1AC42EC0CB8668A4FA0AB0 -Result = P (0 ) - -Curve = P-384 -Digest = SHA384 -Msg = "sample" -Q = 04EC3A4E415B4E19A4568618029F427FA5DA9A8BC4AE92E02E06AAE5286B300C64DEF8F0EA9055866064A254515480BC138015D9B72D7D57244EA8EF9AC0C621896708A59367F9DFB9F54CA84B3F1C9DB1288B231C3AE0D4FE7344FD2533264720 -Sig = 306602310094EDBB92A5ECB8AAD4736E56C691916B3F88140666CE9FA73D64C4EA95AD133C81A648152E44ACF96E36DD1E80FABE4602310099EF4AEB15F178CEA1FE40DB2603138F130E740A19624526203B6351D0A3A94FA329C145786E679E7B82C71A38628AC8 -Result = P (0 ) - -Curve = P-384 -Digest = SHA256 -Msg = "test" -Q = 04EC3A4E415B4E19A4568618029F427FA5DA9A8BC4AE92E02E06AAE5286B300C64DEF8F0EA9055866064A254515480BC138015D9B72D7D57244EA8EF9AC0C621896708A59367F9DFB9F54CA84B3F1C9DB1288B231C3AE0D4FE7344FD2533264720 -Sig = 306402306D6DEFAC9AB64DABAFE36C6BF510352A4CC27001263638E5B16D9BB51D451559F918EEDAF2293BE5B475CC8F0188636B02302D46F3BECBCC523D5F1A1256BF0C9B024D879BA9E838144C8BA6BAEB4B53B47D51AB373F9845C0514EEFB14024787265 -Result = P (0 ) - -Curve = P-384 -Digest = SHA384 -Msg = "test" -Q = 04EC3A4E415B4E19A4568618029F427FA5DA9A8BC4AE92E02E06AAE5286B300C64DEF8F0EA9055866064A254515480BC138015D9B72D7D57244EA8EF9AC0C621896708A59367F9DFB9F54CA84B3F1C9DB1288B231C3AE0D4FE7344FD2533264720 -Sig = 30660231008203B63D3C853E8D77227FB377BCF7B7B772E97892A80F36AB775D509D7A5FEB0542A7F0812998DA8F1DD3CA3CF023DB023100DDD0760448D42D8A43AF45AF836FCE4DE8BE06B485E9B61B827C2F13173923E06A739F040649A667BF3B828246BAA5A5 -Result = P (0 ) - - -# NIST FIPS 186-4 Test Vectors from the file SigVer.rsp from -# http://csrc.nist.gov/groups/STM/cavp/documents/dss/186-3ecdsatestvectors.zip -# assessible via -# http://csrc.nist.gov/groups/STM/cavp/digital-signatures.html#test-vectors -# -# XXX: Unfortunately, it's not clear what edge cases these test vectors are -# testing. For example, when the problem is caused by Q being tampered with, -# it isn't clear if the new Q is on the curve or off the curve or what. Also, -# the signature is a variable-length value (being an ASN.1 SEQUENCE of a pair -# of ASN.1 INTEGERs), but all the signatures are the same length for each -# curve. -# -# The [Curve, Digest] section headings were replaced with Curve and Digest -# properties on each test case. -# -# Q = (Qx, Qy) in uncompressed form. -# Sig = (R, S) encoded in ASN.1. - -Curve = P-256 -Digest = SHA256 -Msg = e4796db5f785f207aa30d311693b3702821dff1168fd2e04c0836825aefd850d9aa60326d88cde1a23c7745351392ca2288d632c264f197d05cd424a30336c19fd09bb229654f0222fcb881a4b35c290a093ac159ce13409111ff0358411133c24f5b8e2090d6db6558afc36f06ca1f6ef779785adba68db27a409859fc4c4a0 -Q = 0487f8f2b218f49845f6f10eec3877136269f5c1a54736dbdf69f89940cad41555e15f369036f49842fac7a86c8a2b0557609776814448b8f5e84aa9f4395205e9 -Sig = 3046022100d19ff48b324915576416097d2544f7cbdf8768b1454ad20e0baac50e211f23b0022100a3e81e59311cdfff2d4784949f7a2cb50ba6c3a91fa54710568e61aca3e847c6 -Result = F (3 - S changed) - -Curve = P-256 -Digest = SHA256 -Msg = 069a6e6b93dfee6df6ef6997cd80dd2182c36653cef10c655d524585655462d683877f95ecc6d6c81623d8fac4e900ed0019964094e7de91f1481989ae1873004565789cbf5dc56c62aedc63f62f3b894c9c6f7788c8ecaadc9bd0e81ad91b2b3569ea12260e93924fdddd3972af5273198f5efda0746219475017557616170e -Q = 045cf02a00d205bdfee2016f7421807fc38ae69e6b7ccd064ee689fc1a94a9f7d2ec530ce3cc5c9d1af463f264d685afe2b4db4b5828d7e61b748930f3ce622a85 -Sig = 3046022100dc23d130c6117fb5751201455e99f36f59aba1a6a21cf2d0e7481a97451d6693022100d6ce7708c18dbf35d4f8aa7240922dc6823f2e7058cbc1484fcad1599db5018c -Result = F (2 - R changed) - -Curve = P-256 -Digest = SHA256 -Msg = df04a346cf4d0e331a6db78cca2d456d31b0a000aa51441defdb97bbeb20b94d8d746429a393ba88840d661615e07def615a342abedfa4ce912e562af714959896858af817317a840dcff85a057bb91a3c2bf90105500362754a6dd321cdd86128cfc5f04667b57aa78c112411e42da304f1012d48cd6a7052d7de44ebcc01de -Q = 042ddfd145767883ffbb0ac003ab4a44346d08fa2570b3120dcce94562422244cb5f70c7d11ac2b7a435ccfbbae02c3df1ea6b532cc0e9db74f93fffca7c6f9a64 -Sig = 30460221009913111cff6f20c5bf453a99cd2c2019a4e749a49724a08774d14e4c113edda80221009467cd4cd21ecb56b0cab0a9a453b43386845459127a952421f5c6382866c5cc -Result = F (4 - Q changed) - -Curve = P-256 -Digest = SHA256 -Msg = e1130af6a38ccb412a9c8d13e15dbfc9e69a16385af3c3f1e5da954fd5e7c45fd75e2b8c36699228e92840c0562fbf3772f07e17f1add56588dd45f7450e1217ad239922dd9c32695dc71ff2424ca0dec1321aa47064a044b7fe3c2b97d03ce470a592304c5ef21eed9f93da56bb232d1eeb0035f9bf0dfafdcc4606272b20a3 -Q = 04e424dc61d4bb3cb7ef4344a7f8957a0c5134e16f7a67c074f82e6e12f49abf3c970eed7aa2bc48651545949de1dddaf0127e5965ac85d1243d6f60e7dfaee927 -Sig = 3045022100bf96b99aa49c705c910be33142017c642ff540c76349b9dab72f981fd9347f4f022017c55095819089c2e03b9cd415abdf12444e323075d98f31920b9e0f57ec871c -Result = P (0 ) - -Curve = P-256 -Digest = SHA256 -Msg = 73c5f6a67456ae48209b5f85d1e7de7758bf235300c6ae2bdceb1dcb27a7730fb68c950b7fcada0ecc4661d3578230f225a875e69aaa17f1e71c6be5c831f22663bac63d0c7a9635edb0043ff8c6f26470f02a7bc56556f1437f06dfa27b487a6c4290d8bad38d4879b334e341ba092dde4e4ae694a9c09302e2dbf443581c08 -Q = 04e0fc6a6f50e1c57475673ee54e3a57f9a49f3328e743bf52f335e3eeaa3d28647f59d689c91e463607d9194d99faf316e25432870816dde63f5d4b373f12f22a -Sig = 304502201d75830cd36f4c9aa181b2c4221e87f176b7f05b7c87824e82e396c88315c407022100cb2acb01dac96efc53a32d4a0d85d0c2e48955214783ecf50a4f0414a319c05a -Result = P (0 ) - -Curve = P-256 -Digest = SHA256 -Msg = 666036d9b4a2426ed6585a4e0fd931a8761451d29ab04bd7dc6d0c5b9e38e6c2b263ff6cb837bd04399de3d757c6c7005f6d7a987063cf6d7e8cb38a4bf0d74a282572bd01d0f41e3fd066e3021575f0fa04f27b700d5b7ddddf50965993c3f9c7118ed78888da7cb221849b3260592b8e632d7c51e935a0ceae15207bedd548 -Q = 04a849bef575cac3c6920fbce675c3b787136209f855de19ffe2e8d29b31a5ad86bf5fe4f7858f9b805bd8dcc05ad5e7fb889de2f822f3d8b41694e6c55c16b471 -Sig = 3045022025acc3aa9d9e84c7abf08f73fa4195acc506491d6fc37cb9074528a7db87b9d60221009b21d5b5259ed3f2ef07dfec6cc90d3a37855d1ce122a85ba6a333f307d31537 -Result = F (2 - R changed) - -Curve = P-256 -Digest = SHA256 -Msg = 7e80436bce57339ce8da1b5660149a20240b146d108deef3ec5da4ae256f8f894edcbbc57b34ce37089c0daa17f0c46cd82b5a1599314fd79d2fd2f446bd5a25b8e32fcf05b76d644573a6df4ad1dfea707b479d97237a346f1ec632ea5660efb57e8717a8628d7f82af50a4e84b11f21bdff6839196a880ae20b2a0918d58cd -Q = 043dfb6f40f2471b29b77fdccba72d37c21bba019efa40c1c8f91ec405d7dcc5dff22f953f1e395a52ead7f3ae3fc47451b438117b1e04d613bc8555b7d6e6d1bb -Sig = 30450220548886278e5ec26bed811dbb72db1e154b6f17be70deb1b210107decb1ec2a5a022100e93bfebd2f14f3d827ca32b464be6e69187f5edbd52def4f96599c37d58eee75 -Result = F (4 - Q changed) - -Curve = P-256 -Digest = SHA256 -Msg = 1669bfb657fdc62c3ddd63269787fc1c969f1850fb04c933dda063ef74a56ce13e3a649700820f0061efabf849a85d474326c8a541d99830eea8131eaea584f22d88c353965dabcdc4bf6b55949fd529507dfb803ab6b480cd73ca0ba00ca19c438849e2cea262a1c57d8f81cd257fb58e19dec7904da97d8386e87b84948169 -Q = 0469b7667056e1e11d6caf6e45643f8b21e7a4bebda463c7fdbc13bc98efbd0214d3f9b12eb46c7c6fda0da3fc85bc1fd831557f9abc902a3be3cb3e8be7d1aa2f -Sig = 30440220288f7a1cd391842cce21f00e6f15471c04dc182fe4b14d92dc189108797997900220247b3c4e89a3bcadfea73c7bfd361def43715fa382b8c3edf4ae15d6e55e9979 -Result = F (1 - Message changed) - -Curve = P-256 -Digest = SHA256 -Msg = 3fe60dd9ad6caccf5a6f583b3ae65953563446c4510b70da115ffaa0ba04c076115c7043ab8733403cd69c7d14c212c655c07b43a7c71b9a4cffe22c2684788ec6870dc2013f269172c822256f9e7cc674791bf2d8486c0f5684283e1649576efc982ede17c7b74b214754d70402fb4bb45ad086cf2cf76b3d63f7fce39ac970 -Q = 04bf02cbcf6d8cc26e91766d8af0b164fc5968535e84c158eb3bc4e2d79c3cc682069ba6cb06b49d60812066afa16ecf7b51352f2c03bd93ec220822b1f3dfba03 -Sig = 3045022100f5acb06c59c2b4927fb852faa07faf4b1852bbb5d06840935e849c4d293d1bad0220049dab79c89cc02f1484c437f523e080a75f134917fda752f2d5ca397addfe5d -Result = F (3 - S changed) - -Curve = P-256 -Digest = SHA256 -Msg = 983a71b9994d95e876d84d28946a041f8f0a3f544cfcc055496580f1dfd4e312a2ad418fe69dbc61db230cc0c0ed97e360abab7d6ff4b81ee970a7e97466acfd9644f828ffec538abc383d0e92326d1c88c55e1f46a668a039beaa1be631a89129938c00a81a3ae46d4aecbf9707f764dbaccea3ef7665e4c4307fa0b0a3075c -Q = 04224a4d65b958f6d6afb2904863efd2a734b31798884801fcab5a590f4d6da9de178d51fddada62806f097aa615d33b8f2404e6b1479f5fd4859d595734d6d2b9 -Sig = 304502210087b93ee2fecfda54deb8dff8e426f3c72c8864991f8ec2b3205bb3b416de93d202204044a24df85be0cc76f21a4430b75b8e77b932a87f51e4eccbc45c263ebf8f66 -Result = F (2 - R changed) - -Curve = P-256 -Digest = SHA256 -Msg = 4a8c071ac4fd0d52faa407b0fe5dab759f7394a5832127f2a3498f34aac287339e043b4ffa79528faf199dc917f7b066ad65505dab0e11e6948515052ce20cfdb892ffb8aa9bf3f1aa5be30a5bbe85823bddf70b39fd7ebd4a93a2f75472c1d4f606247a9821f1a8c45a6cb80545de2e0c6c0174e2392088c754e9c8443eb5af -Q = 0443691c7795a57ead8c5c68536fe934538d46f12889680a9cb6d055a066228369f8790110b3c3b281aa1eae037d4f1234aff587d903d93ba3af225c27ddc9ccac -Sig = 30460221008acd62e8c262fa50dd9840480969f4ef70f218ebf8ef9584f199031132c6b1ce022100cfca7ed3d4347fb2a29e526b43c348ae1ce6c60d44f3191b6d8ea3a2d9c92154 -Result = F (3 - S changed) - -Curve = P-256 -Digest = SHA256 -Msg = 0a3a12c3084c865daf1d302c78215d39bfe0b8bf28272b3c0b74beb4b7409db0718239de700785581514321c6440a4bbaea4c76fa47401e151e68cb6c29017f0bce4631290af5ea5e2bf3ed742ae110b04ade83a5dbd7358f29a85938e23d87ac8233072b79c94670ff0959f9c7f4517862ff829452096c78f5f2e9a7e4e9216 -Q = 049157dbfcf8cf385f5bb1568ad5c6e2a8652ba6dfc63bc1753edf5268cb7eb596972570f4313d47fc96f7c02d5594d77d46f91e949808825b3d31f029e8296405 -Sig = 3046022100dfaea6f297fa320b707866125c2a7d5d515b51a503bee817de9faa343cc48eeb0221008f780ad713f9c3e5a4f7fa4c519833dfefc6a7432389b1e4af463961f09764f2 -Result = F (1 - Message changed) - -Curve = P-256 -Digest = SHA256 -Msg = 785d07a3c54f63dca11f5d1a5f496ee2c2f9288e55007e666c78b007d95cc28581dce51f490b30fa73dc9e2d45d075d7e3a95fb8a9e1465ad191904124160b7c60fa720ef4ef1c5d2998f40570ae2a870ef3e894c2bc617d8a1dc85c3c55774928c38789b4e661349d3f84d2441a3b856a76949b9f1f80bc161648a1cad5588e -Q = 04072b10c081a4c1713a294f248aef850e297991aca47fa96a7470abe3b8acfdda9581145cca04a0fb94cedce752c8f0370861916d2a94e7c647c5373ce6a4c8f5 -Sig = 3045022009f5483eccec80f9d104815a1be9cc1a8e5b12b6eb482a65c6907b7480cf4f19022100a4f90e560c5e4eb8696cb276e5165b6a9d486345dedfb094a76e8442d026378d -Result = F (4 - Q changed) - -Curve = P-256 -Digest = SHA256 -Msg = 76f987ec5448dd72219bd30bf6b66b0775c80b394851a43ff1f537f140a6e7229ef8cd72ad58b1d2d20298539d6347dd5598812bc65323aceaf05228f738b5ad3e8d9fe4100fd767c2f098c77cb99c2992843ba3eed91d32444f3b6db6cd212dd4e5609548f4bb62812a920f6e2bf1581be1ebeebdd06ec4e971862cc42055ca -Q = 0409308ea5bfad6e5adf408634b3d5ce9240d35442f7fe116452aaec0d25be8c24f40c93e023ef494b1c3079b2d10ef67f3170740495ce2cc57f8ee4b0618b8ee5 -Sig = 304502205cc8aa7c35743ec0c23dde88dabd5e4fcd0192d2116f6926fef788cddb754e730221009c9c045ebaa1b828c32f82ace0d18daebf5e156eb7cbfdc1eff4399a8a900ae7 -Result = F (1 - Message changed) - -Curve = P-256 -Digest = SHA256 -Msg = 60cd64b2cd2be6c33859b94875120361a24085f3765cb8b2bf11e026fa9d8855dbe435acf7882e84f3c7857f96e2baab4d9afe4588e4a82e17a78827bfdb5ddbd1c211fbc2e6d884cddd7cb9d90d5bf4a7311b83f352508033812c776a0e00c003c7e0d628e50736c7512df0acfa9f2320bd102229f46495ae6d0857cc452a84 -Q = 042d98ea01f754d34bbc3003df5050200abf445ec728556d7ed7d5c54c55552b6d9b52672742d637a32add056dfd6d8792f2a33c2e69dafabea09b960bc61e230a -Sig = 3044022006108e525f845d0155bf60193222b3219c98e3d49424c2fb2a0987f825c17959022062b5cdd591e5b507e560167ba8f6f7cda74673eb315680cb89ccbc4eec477dce -Result = P (0 ) - -Curve = P-256 -Digest = SHA384 -Msg = fe9838f007bdc6afcd626974fcc6833f06b6fd970427b962d75c2aeadbef386bec8d018106197fe2547d2af02e7a7949965d5fbc4c5db909a95b9858426a33c080b0b25dae8b56c5cbc6c4eec3dbd81635c79457eaef4fab39e662a1d05b2481eda8c1074ae2d1704c8a3f769686a1f965ef3c87602efc288c7f9ff8cd5e22a4 -Q = 0440ded13dbbe72c629c38f07f7f95cf75a50e2a524897604c84fafde5e4cafb9fa17202e92d7d6a37c438779349fd79567d75a40ef22b7d09ca21ccf4aec9a66c -Sig = 3045022100be34730c31730b4e412e6c52c23edbd36583ace2102b39afa11d24b6848cb77f022003655202d5fd8c9e3ae971b6f080640c406112fd95e7015874e9b6ee77752b10 -Result = F (3 - S changed) - -Curve = P-256 -Digest = SHA384 -Msg = b69043b9b331da392b5dd689142dfc72324265da08f14abcedf03ad8263e6bdccbc75098a2700bbba1979de84c8f12891aa0d000f8a1abad7dde4981533f21da59cc80d9cf94517f3b61d1a7d9eecb2fcf052e1fc9e7188c031b86305e4a436a37948071f046e306befb8511dc03a53dc8769a90a86e9b4fdbf05dcdfa35ab73 -Q = 041f80e19ffeb51dd74f1c397ac3dfd3415ab16ebd0847ed119e6c3b15a1a884b89b395787371dbfb55d1347d7bed1c261d2908121fb78de1d1bf2d00666a62aed -Sig = 30450220249ca2c3eb6e04ac57334c2f75dc5e658bbb485bf187100774f5099dd13ef70702210097363a05202b602d13166346694e38135bbce025be94950e9233f4c8013bf5bf -Result = F (4 - Q changed) - -Curve = P-256 -Digest = SHA384 -Msg = d2fcaaede8b879c064b0aa46e68efc278a469b80a7f7e1939ec2ebc96c76206f23395967279c181fea157ebb79dfadc68e31345f07f13305c80de0d85e4330d3a45f957c5c2526b945838ce5a9c2844b6b2a665c0f70b748b1213a8cf20ba5dbdf8cab231f433da522104a5cd027d3e36bb373c4ed404d9af0cbec6f85ec2193 -Q = 04ce4dcfa7384c83443ace0fb82c4ac1adfa100a9b2c7bf09f093f8b6d084e50c2d98ae7b91abee648d0bfde192703741ac21daad7262af418b50e406d825eb0d6 -Sig = 30440220597e1e04d93a6b444ccc447a48651f17657ff43fb65fe94461d2bf816b01af400220359fe3817963548e676d6da34c2d0866aa42499237b682002889eaf8893814d2 -Result = P (0 ) - -Curve = P-256 -Digest = SHA384 -Msg = 06cd86481865181cef7acdc3202824970ec2d97662b519c4b588dc9e51617c068282b1a11a15bf7efc4858a2f37a3d74b05fb5790eb68338c8009b4da9b4270514d387a2e016a99ee109841e884a7909504ef31a5454e214663f830f23a5a76f91402fca5f5d61699fa874597bdbfb1ecff8f07ddbd07ef61e97d0d5262ef314 -Q = 041b677f535ac69d1acd4592c0d12fac13c9131e5a6f8ab4f9d0afdcb3a3f327e05dca2c73ec89e58ef8267cba2bb5eb0f551f412f9dc087c1a6944f0ce475277a -Sig = 3045022100df0b0cd76d2555d4c38b3d70bfdf964884d0beeb9f74385f0893e87d20c9642d0220128299aabf1f5496112be1fe04365f5f8215b08a040abdfeca4626f4d15c005b -Result = F (2 - R changed) - -Curve = P-256 -Digest = SHA384 -Msg = 59ad297397f3503604a4a2d098a4f00a368ad95c6101b3d38f9d49d908776c5a6c8654b006adb7939ffb6c30afa325b54185d82c3cc0d836850dce54d3408b257c3a961d11fafe2b74ba8bddfc1102fa656d1028baf94c38340c26a11e992aab71ce3732271b767358671b25225926f3a4b9ec5f82c059f0c7d1446d5d9e4251 -Q = 047ffc2853f3e17887dda13b0eb43f183ce50a5ac0f8bba75fb1921172484f9b944cc523d14192f80bd5b27d30b3b41e064da87bfbae15572dd382b9a176c123a2 -Sig = 304402203156176d52eb26f9391229de4251993a41b8172f78970bb70e32a245be4bb653022062827a29e12d2f29b00fb2d02dd5f2d5412e17a4455f4431a5c996881fdfc0ee -Result = F (1 - Message changed) - -Curve = P-256 -Digest = SHA384 -Msg = 8215daca87e689a20392646a6511bb7b5a82d2d995ca9de89bd9d9c0b11464b7cb1e4e9a31e3e01ad8c2cd613d5a2cb44a2a8df6899fce4c282dea1e41af0df6c36be1f320036567f8d0d32aaa79c95fe53b16668f7e1a9e5d7d039ea260fd03711b7d1c177355fc52244d49ca5b238556a5541349014683cb7da326f443b752 -Q = 045569f76dc94243cde819fb6fc85144ec67e2b5d49539f62e24d406d1b68f00581208c38dbe25870deab53c486f793a1e250c9d1b8e7c147ea68b71196c440730 -Sig = 30450220706f2ba4025e7c06b66d6369a3f93b2fec46c51eceff42a158f7431919506cfb022100b4e75ac34a96393237fc4337789e37168d79382705b248051c9c72bcbac5f516 -Result = F (2 - R changed) - -Curve = P-256 -Digest = SHA384 -Msg = a996b1fb800f692517a2eb80e837233193dd3e82484d3f49bd19ee0db8f7b440876b07e384c90aa8b9f7b6603ca0b5a4e06c1da0edb974a2fb9b6e7c720ddf3e5c0e314c2d189402903c08c0836776c361a284db887ebcc33e615de9720b01dadade585eef687b3346468bdafb490e56d657a9e7d44d92014069005a36c1cf63 -Q = 04e4b470c65b2c04db060d7105ec6911589863d3c7f7ce48726ba3f369ea3467e844c38d3ae098de05f5915a5868c17fee296a6e150beb1f000df5f3bec8fc4532 -Sig = 3046022100c9c347ee5717e4c759ddaf09e86f4e1db2c8658593177cfda4e6514b5e3ecb87022100baae01e9e44a7b04d69c8eaaed77c9e3a36ce8962f95cc50a0db146b4e49eb40 -Result = F (4 - Q changed) - -Curve = P-256 -Digest = SHA384 -Msg = 1a6e49a377a08e992353d6acc557b687b1b69a41d83d43a75fadb97b8c928cfebadebaaf99ea7fb13148807f56ea17384a7912e578e62b1b009fefb2aafca5ac85539433619b286f10643a56f8dfa47ba4d01c02510deaec18029ea6b9682022b139dcb70814164c4c90ec717ad9d925485398531cdd5992a2524498b337f97d -Q = 0496050c5fa2ddd1b2e5451d89ee74a0b7b54347364ddc0231715a6ef1146fe8dce0888a9e78aeea87f6e1e9002b2651169f36c4ee53013cfc8c9912b7fd504858 -Sig = 304502202353d6cd3c21b8ea7dbc1cd940519812dbe365a3b15cd6aebba9d11cf269867a02210085f560273cd9e82e6801e4cb1c8cd29cdac34a020da211d77453756b604b8fa7 -Result = P (0 ) - -Curve = P-256 -Digest = SHA384 -Msg = 3e14f737c913931bc82764ebc440b12e3ce1ffe0f858c7b8f1cbd30fbbb1644fa59be1d2cca5f64a6d7dc5ed5c4420f39227516ae8eb3019ef86274d0e4d06cde7bf5e5c413243dfc421d9f141762109810e6b6a451eeb4bd8d4be1ff111426d7e44d0a916b4fe3db3594d8dd01ae90feecf8f1e230b574180cd0b8d43a3d33b -Q = 040c07bb79f44012299fbfd5a0f31397aaf7d757f8a38437407c1b09271c6551a084fe7846d5d403dc92c0091fbd39f3c5cbca3f94c10b5cae44e2e96562131b13 -Sig = 3044022049e9425f82d0a8c503009cead24e12adc9d48a08594094ca4f6d13ad1e3c571d02201f1b70aaa30a8ff639aa0935944e9b88326a213ab8fce5194c1a9dec070eb433 -Result = F (1 - Message changed) - -Curve = P-256 -Digest = SHA384 -Msg = 4000106127a72746db77957cbc6bfd84ae3d1d63b8190087637e93689841331e2adc1930d6df4302935f4520bbee513505cdcfca99ebc6f83af7b23b0f2e7f7defba614022ceeae9c6886e8b13f7ea253a307ac301f3536720cbe3de82ba3e98310361b61801a8304ffc91ff774948e33176ddcddf1b76437b3f02c910578d46 -Q = 0471db1de1a1f38f356c91feaff5cfe395d1a5b9d23cf6aa19f38ae0bcc90a486decdd6ffb174a50f1cc792985c2f9608c399c98b8a64a69d2b5b7cdd9241f67e2 -Sig = 3045022100b0443b33a6f249470d2f943675009d21b9ccbead1525ae57815df86bb20470bf0220316dbee27d998e09128539c269e297ac8f34b9ef8249a0619168c3495c5c1198 -Result = F (3 - S changed) - -Curve = P-256 -Digest = SHA384 -Msg = b42e547d0e7ddd5e1069bb2d158a5b4d5d9c4310942a1bfd09490311a6e684bd3c29b0dcef86a9788b4b26fed7863f3d5e5439796b5b5ffe7aa2545d0f518ad020689ca21230f3a59e7f8cca465fe21df511e78d215fa805f5f0f88938e9d198515e6b9c819930755c6c6aea5114cd2904607243051c09dd7a147756cbc204a5 -Q = 048219b225aa15472262c648cac8de9aad4173d17a231ba24352a5a1c4eea70fad0fee2b08ad39fbf0db0016ef2896ca99adc07efc8c415f640f3720498be26037 -Sig = 30450220134fb689101aaad3954de2819d9fbd12072fe2bc36f496bbf0d13fa72114ab96022100e65c232bd915b59e087e7fd5ec90bf636cfa80526345c79a0adfd75003045d6f -Result = F (1 - Message changed) - -Curve = P-256 -Digest = SHA384 -Msg = aa563223a7d5201febdf13cab80a03dce6077c26e751bc98a941196a28848abc495e0324013c9a2094fb15dc65d100c3e8a136a52c1780b395f42588900b641b6d4361432e2173195a2f60189f3fcc85f4e9659cae52576f20d1852d43c2b400deea3144c8e870e1906d677425d8c85037c7a42a9d249b2da4b516e04476bd45 -Q = 04c934195de33b60cf00461fc3c45dad068e9f5f7af5c7fa78591e95aeb04e2617b588dd5f9965fdaa523b475c2812c251bc6973e2df21d9beaace976abf5728cb -Sig = 3044022071f302440eb4ed2a939b69e33e905e6fdc545c743458d38f7e1a1d456e35f389022054eaa0eb9cd7503b19a9658f0a04955d9f0ab20ebc8a0877e33c89ee88ad068f -Result = F (4 - Q changed) - -Curve = P-256 -Digest = SHA384 -Msg = 98e4babf890f52e5a04bd2a7d79bf0ae9a71967847347d87f29fb3997454c73c7979d15b5c4f4205ec3de7835d1885fb7abcf8dcde94baf08b1d691a0c74845317286540e8c9d378fefaa4762c302492f51023c0d7adbb1cc90b7b0335f11203664e71fea621bc2f59d2dbd0ee76d6597ec75510de59b6d25fa6750a71c59435 -Q = 049e1adcd48e2e3f0e4c213501808228e587c40558f52bb54ddbb6102d4048ea9234eff98704790938e7e0bdf87ae39807a6b77dfdc9ecdfe6dd0f241abae1aeb2 -Sig = 3046022100ce4f0d7480522c8dd1b02dd0eb382f22406642f038c1ede9411883d72b3e7ed00221008546e1ee3b77f9927cdaccbc2f1cf19d6b5576b0f738bb1b86a0c66b39ca56fb -Result = F (3 - S changed) - -Curve = P-256 -Digest = SHA384 -Msg = bb6b03ad60d6ddbf0c4d17246206e61c886f916d252bb4608149da49cef9033484080e861f91bb2400baa0cd6c5d90c2f275e2fabc12d83847f7a1c3ff0eb40c8a3dd83d07d194ba3797d27238415a2f358d7292a1991af687bcb977486980f9138b3140321485638ac7bd22ecda00ffe5009b83b90397eff24ecf22c5495d67 -Q = 0493edbecb0b019c2cc03060f54cb4904b920fdb34eb83badd752be9443036ae13b494e9295e080a9080fe7e73249b3a5904aa84e1c028121eecd3e2cf1a55f598 -Sig = 3046022100eec2986d47b71995892b0915d3d5becc4dcb2ab55206d772e0189541b2184ddf0221008a6c1edeb6452627ad27c8319599c54ac44cdd831ea66f13f49d90affe6ad45b -Result = P (0 ) - -Curve = P-256 -Digest = SHA384 -Msg = 33a5d489f671f396c776bc1acf193bc9a74306f4692dd8e05bcdfe28fdefbd5c09b831c204a1dec81d8e3541f324f7b474d692789013bb1eca066f82fbf3f1cf3ba64e9d8963e9ecc180b9251919e2e8a1ab05847a0d76ff67a47c00e170e38e5b319a56f59cc51038f90961ea27a9a7eb292a0a1aa2f4972568669246907a35 -Q = 043205bae876f9bd50b0713959e72457165e826cbbe3895d67320909daa48b0ebcd1592562273e5e0f57bbfb92cedd9af7f133255684ee050af9b6f02019bbcafa -Sig = 304402200124f3f1c61ec458561a4eaa6c155bd29e59703d14556324924683db3a4cf43b0220688a5c5fc0c7ba92210c50cce5b512a468a880e05acc21ca56571d89f45f603a -Result = F (2 - R changed) - - -Curve = P-384 -Digest = SHA256 -Msg = a444216c9072caf87fa57c1f04aff9cb83dc2ede9968bda41c9d918825e526c2397cb7d771a7e120582424bbea8ecd56a69bb468cd61437f5a65f04953f9d4018c599afd9edbd4d26e861f86829b9496f829f2b601df73e931fff96559e091417c0d8b8c8129443f7efb985d286c7167b66d2b4d5903583a928db3ed6a883117 -Q = 0497c3f446803a61a7014f61cb7f8b3f36486c7ea96d90ee1767f5c7e1d896dd5114255abb36c74be218c1f0a4e7ebba3d553ed1fed72c62851e042f0171454f120029adba4ee26855ab881d9470355f1947aa1d2e806a7ff2583660fedbd037a0 -Sig = 306402307b06d6c2b63f1cc3bfdaa897d07dc15a83bdf35d979f70c34578332b3f4920422bb24867c51bde10831324df424e04ec02304bef715161f400dc98d4b63bd13ff4ad4a6c981ead44bfc662fe9bca4b56cd790698e4deddf9a4bd69327f26bfe801e6 -Result = F (4 - Q changed) - -Curve = P-384 -Digest = SHA256 -Msg = 43c5ffcdf6f9e21aba1b065596745e8738f7b39e1db486a6ae52218d66ce8125fdb155ee281e01b27fa20d0e37d6468a2daedc5fd30573e44b256c5af13df27dea56fd81aef689aad7c022cea77ac3c40a1d64b8c0cf7fb5a128d6a1799da7b8d95308613ceb2260e10b37530edd42925fa5abcdad5d0646ba5bc78c330346eb -Q = 0408bd5c6cdc1f8c611df96485090e20e9188df6abb766bff3c1ba341ed209ad5dfd78b628ec60998ddfdd0dd029352fbdd9831d75dec760e9f405d1aa5e23aac506dc019fb64d44bd57f6c570d017e6609f8fdbb2dc7b28ca9e00e37cd32a3b73 -Sig = 30660231008b372c86ed1eec2163d6f7152e53696b4a10958948d863eb622873b471702ac5b2e75ff852149a499e61510905f98e4c023100b2ed728e8b30787a28f2a6d3740872e47348686c7cb426411379411310241d25f08a026b853789b1157f1fc1a7f6ff49 -Result = F (1 - Message changed) - -Curve = P-384 -Digest = SHA256 -Msg = 5edd325885296a829b50b16b17e3c4fc3491f1d53384103f1c09a21a169329e07b3758d55c52e9d578fb9e35e8754bfab9fa5e319d0c7fdb45444eda6a2a0a9aaeaa9b7702cce742047146228f9f687e7684d9b4aaa3be03813c004f0418c1a2fe3aa8ddb3658137d7e954e3683a08e0eaad26c0cc3ae0031b191909a3ebade5 -Q = 0410a784abb3c549444a62c28df1c926b8aabb20c8d9aa4b1f7ca830258857cbe9718dbc9845fa9cbb78587a373baee80da1ad0c10b5ab6780cad49c8cd3eebd27de8f1b382ddd7a604458cef8e76ca632a7e44e1c63141a742426cec598029e2e -Sig = 3065023100d9e52be2a3f7f566899cf6daaa38116d092473066f3a1bf91f3df44d81bca1deb438d9d25ce1632599c1d3576a30f12802300cad30bce4b3d7f40b3eef762a21bb1a3bad77439838b13024b7b2c70316875a99e80723a74a9e7a404715ca06a5d673 -Result = F (3 - S changed) - -Curve = P-384 -Digest = SHA256 -Msg = 4fb73e9e8cbc3e829f99472671ee8719f796dbed096b3cbdf1080ad7f5c410a4541e3526de816fe35ab9e664bb1c1d1e9add2522b9a91eb461b45ae4426e1dfbab7dad03a1392706b9314c03104ea7b40f3632577b0b7c991d2b92460638707572b3387add6ab0f05f6f553fa1fcc50fefe74783cd8b781a35de5ae0e7fc5a58 -Q = 048760182393132d69011edfa127e36f92eeac8272641c27f52f3337ef8af7451e6d14f4e4590c7eb9fafb76e8c92865cfebc2b123ed871ca570ead40ae8f6f32335393c569b21b38f626d09c064a3c8668e9fb10a4667e0f0c68bf25ca98fd6dc -Sig = 306402301db957e5c2d294035d7f476a0cbc28a4aac2614d8212de5017076cd836bf04ffe237dce8fec91f2fb5ef82449ff1c65d02303e3b9058d0a9c5b417f9c6f86557b9d50e7a902694a7012a1be6bb70708497e4d39fc1f6d6bc60dfa52d23cab173385f -Result = F (4 - Q changed) - -Curve = P-384 -Digest = SHA256 -Msg = b66ca1d77adf6b2b20c6ef68e50d353a9f5cd0be422f5f6fff8f74506280a55d7923cf047dfdb9147b916f6df6cad8c52257360f746b77edb9949ed4ae9a63d08a7da07c4cf32836574a34f316292b8cc5a6b057129a6baa1182be8a5be1c43739e7d9b0abe07801c2d4343a235037b9aaff14694c051fde4b545931ff9e9a3b -Q = 042b1f98d2acdda8347b9a68c75174408eae7de3d6b9c08c26e73ce9ed2ac147b8d90cd82e30ab43909d63f6b457de207133f5e6f5f5793201991e014cce0045d04adc352298e32f45f4e374450111c8456b5c2efaec43d157949b5c191b2bc934 -Sig = 3064023023d046402cbce807d232bcf0dc96d53c72992e0ba1ffce0d79050c0f4c5ad9bfbbdc1c96c730d67ff3aa3edaa3845da902302cd46a4fe5d120b3af3a6d9ea63cc78f4079e8b5520a8fa96828334a4f182ff4d5e3d79470019e4eb8afc4f598b6becb -Result = F (4 - Q changed) - -Curve = P-384 -Digest = SHA256 -Msg = 862cf14c65ff85f4fdd8a39302056355c89c6ea1789c056262b077dab33abbfda0070fce188c6330de84dfc512744e9fa0f7b03ce0c14858db1952750d7bbe6bd9c8726c0eae61e6cf2877c655b1f0e0ce825430a9796e7420e5c174eab7a50459e291510bc515141738900d390217c5a522e4bde547e57287d8139dc916504e -Q = 0486ac12dd0a7fe5b81fdae86b12435d316ef9392a3f50b307ab65d9c6079dd0d2d819dc09e22861459c2ed99fbab66faeac8444077aaed6d6ccacbe67a4caacee0b5a094a3575ca12ea4b4774c030fe1c870c9249023f5dc4d9ad6e333668cc38 -Sig = 30650230798065f1d1cbd3a1897794f4a025ed47565df773843f4fa74c85fe4d30e3a394783ec5723b530fc5f57906f946ce15e8023100b57166044c57c7d9582066805b5885abc06e0bfc02433850c2b74973205ca357a2da94a65172086f5a1580baa697400b -Result = P (0 ) - -Curve = P-384 -Digest = SHA256 -Msg = cc0aac1010fad8555f81423ac25203720853dbe6a465c244388df90839113d59ea3d3521a8a9cbef649f8abe8d6ff8b0cf17ffc199dddb2997511c4b50e944d41cbcdf5d2102dc98d6f9355b211f130d4e89983f63e5dfe6e1b4ffb3caabd1ad96563fb5c0e5905dcb738a59ec2e5d47684707191ff32746a0cbc65b02be7841 -Q = 049e7553eab8cc7e2e7396128f42ab260c6dbb5457cbff2070ea7c0db21def1537939e3f02699e5dd460eca3798d08bd6d892c0c8e47dddf858e89099a8fc1026e8b8333532b22f561f7647f63f9c79dbf5e8dd18fbfe6ff34902233119c5d5aa3 -Sig = 306402302452da6a48c3749b66e576e0f1f768d51728be17aea149164c4e1654c5ce27f625a4610c4a2eeddb3a0626d3abc6c37c0230499504fb58c9db24a7ff5f7921e1312f8aa583c08a308e080f5ef1acf5cdae7927c4101573db069ab0b6de7f4f1cab38 -Result = F (1 - Message changed) - -Curve = P-384 -Digest = SHA256 -Msg = b9d8d5d47edaa2dca7d7d687f98264b6e21a8e1eeb20083efedb71c116d13150d95f62a369a79f0f45233d2751a4b36432c7c12e19c8bef37568fa1a347929398b7ee69046e11911e3db472c3bccbd68653d99e461b4e5cfa617f94d59798f333ccf13abf426ca8be0f6587a453632a50c159d96695ad03dbaac716e811a3586 -Q = 040cf4dc51e71185a29c0c6fa3c075d9da5bd7ede085053344dce5dbbe8329e8ac9045f7246c9d0efed393b8e113c71429fdb7917b73974b355cf9f3bef6a0a460c2d39fdf1fe32a7744be0a54ddd1cfa8d03914cff4b5ca536b40707ff2629aa4 -Sig = 306402303812c2dc2881d7ef7f621993b161672329b261ff100bbd19fb5826c9face09aec2017b6843d69336b813b673c540252702305dc102fab9d6325131c556ec00309c2959d1031a63fbc1e2d5d04996d3234ed33875c0ab98e5878e9bc72742519ed398 -Result = F (2 - R changed) - -Curve = P-384 -Digest = SHA256 -Msg = 6d9cf30d59cc9d6e560e9c52f8be325d19eb3cea592e43bd9584411d76064729c03ad54feb4dce435fb662ff069ca3e19bd16c312567f05018feb8f913caf7553ac728ac787ea3ca073a328633441d7c5cc4d30ec194f248c0701119f7dd80c99e44f469f37cc6726601c97e7d94dc8e549261b46d219a7ea36bee650ccd15cf -Q = 046c590434988155236b43147389c6dbfdd27dcd3387e9b4c2587ece670753a542a13a736579887791cf53d31e5ce9999435a20194ff3f1b55f7ffb2758ddd4b98dd0d9e0cc213e10ed25e8e0430fe861066c1d4423c67f0c93f7ebd87fd3c561e -Sig = 306602310089ff866889245e797926509e563b1746920b78c9370a6cdae52663730d131e558e327d1f5fef8faf9e6c802fa29504ed0231008dd68e2de2f788e598b3e5a60c18d81849a0cc14b3b0e3c931910639f3125e5d6045f00330b1fa989252a80f95419b04 -Result = F (2 - R changed) - -Curve = P-384 -Digest = SHA256 -Msg = 2de0c0671213bd4326ffa5a1070ca605733961b11e9f939f805d2d6974d5286e1b1c00adac360f32bd58432629f8c932e241ffaae742c9336f4c95782d4b73255cac0644c8c2d7099c2ba1fd0cf4243344dd8dc0f77004730f5078479955c385959e06303ef2fda8df81e7237251e3e84a03515505e448aa1330a9a1cd4822a5 -Q = 04499cbdf18ec4e69b88051543c7da80845fa2de8be2b9d9045fee7f104a8b5b7d04e69142de9955c5ab18c5a34ebff075a29cb8d28836b201a389922b6f8f93870f09c80a00242d00d32656a43ac1440fc55bcb123551a73290f603c3469be9ed -Sig = 3065023025d4d243da6fd9b439a9242c3656fade7acb7a306e8cf23ea89e3ff4f9330be19c61aaa42d7b426d12c8e0f96b80dae5023100e7a99cf4b269bb4a6210d185e9654602523b5cfa1cddc94b1db92018aa557ecb6adda44c816975f5ec1756b6df3c44fd -Result = F (3 - S changed) - -Curve = P-384 -Digest = SHA256 -Msg = 69de70edec5001b0f69ee0b0f1dab6fb22a930dee9a12373fe671f9a5c6804ee1cd027872867c9a4e0bdfed523eb14600cfed64fca415188d56eb651d31731cd3e0efec7251c7defde922cf435ba41454a58d2abf5f29ce5b418a836cab1671d8cdc60aa239a17a42072137cfdc0628715c06b19a2ea2e55005701c220c0924f -Q = 049a74ea00203c571bd91ae873ce0ed517f8f0a929c1854d68abd3b83a5051c0b686bb37d12958a54940cfa2de23902da76f20ccf8fa360a9ec03d7bb79ff17ad885f714757ef62995f824908561dc0c3dffc49d873627936a2fff018b82879ced -Sig = 3065023100acc1fcac98c593fb0a0765fce35a601c2e9570d63ea1e612fff8bc99ac2d4d877750bb44cfb1014e52e00b9235e350af02307f53de3afa4146b1447e829ebac8f5645e948cc99e871c07280cc631613cfdaf52ccaeccbe93588a3fd12170a7ec79fa -Result = P (0 ) - -Curve = P-384 -Digest = SHA256 -Msg = 383ab0251157e645e678100ad3431b9ad96c6279e237ada71d85db0ce3a96fcd4805b2e7676e9a395f1d2f14f24535b77160b22d3d1c7d2e02ec4bbd82058f397db468f4d9ff0ab8306f9becd234f7a7b9c5a4ed44b7474913fe984b5b9e995fae9a951e6e8f2975df67a0180cea81fd4c97eea60a25c15e2ba21092ab0eebd5 -Q = 04e22f221809fb7a054ac799a70b3d24744eb7c5096c8671770399527c88ccf9ddaea0257a0ae9430d927ff5d9f109c533af4101d60df9b306ae92da7592f4faf3df422a3e33f1c2ed2973b2b900eefc346b4cf024de650abf537cecd12ac77618 -Sig = 3065023100c39a8e79f0560b9f26504469a470c7b2230c0d25de07c206e87dfbde9aff0a5d85322f56dfb50d4c1fc67c67d615dad702302ad94dd13a39cf4f4cb24c2c81d4c1181652363addd856dc9ba7455458e40ed047cd113129bc87f43949d5a98a0d5205 -Result = F (3 - S changed) - -Curve = P-384 -Digest = SHA256 -Msg = b23e83d372422cad7bf633ff84468b5ca0f1902eea801bb2e6e89b45d2f75ef9e08c47e010decdd2cfbd9280b01511164e00bd8323fd06a019e83d3dd23c8aa0313ad5196925b5b7d5c25ff8fd198ac2a234dbe0a13fbd04c4002ea89856e91e789e07e25d56690e0481cdb776a3035a64f4bd571097ef07bd49994f95d8323f -Q = 04fa8ebc3682d90ac7356f0b75b9e3376e76518676e0bedd176cfa7fa57fea4b3a399dbb2bf735ec90b9c1705cf9fa6f5718c3fbca0150ec10696b3851f31fb3ba62c0b6be509d249e0d4b374c7a08e49338e0922e2a8a9319999e6569ab8d292e -Sig = 3065023100fb58ab09b8a7ef7a6ec05b854eae11af9b713f7c7540e25115f609846e636ad4f88dcf4dd61e311273df23ccda474f030230485be4c21b7c3a9c6b39ffc9f0c39f4050f76d2a6b3fae203d016318c541c1b4ad6cfc0d0950636ff6883895dd49e4e9 -Result = P (0 ) - -Curve = P-384 -Digest = SHA256 -Msg = eeef70ae23d95330a71bdde1feb196d599481e057bdbd5ef519ce445a9b5acb46ede325a9caad720e4fc49c198ff5f0910c56a06d0cf76f450da1ad35fecccdb4442f64daa6149ee6b67ab1307ffb5c4b6ca3e72a644d36d9e71c4dd3283d12041e73e6d20ec19b3b20654593a4cca4b2fd9aa12f17d5b00b7ed43df74548010 -Q = 04e5f331536a2940cd67234bedf813c12e15aefa9a1a68429f8754bf2769a47c9c2efb5c42135e7b01a110d7302e097eac63b2398612c863febd482184e834d3acb51408c49aacbbd35d8719746f37cb13e013c9505ce034cd815aacd10d2f7a0d -Sig = 306502310096c35f22d036785a392dc6abf9b3cfb0ad37b5c59caefcc0b5212e94e86739a2674020ff79258094d90d7d59f09d47a10230373cbc865384734c56952f7a35a1fdecd88e8b343ee3aa073d30f5f25b73506f1e5f5857f668b0080dec6edeb5e1be96 -Result = F (1 - Message changed) - -Curve = P-384 -Digest = SHA256 -Msg = 7875194a0c3261cf414652cd9970219e3bf8185ad978affebd92ffd40c209a0d17dda0d5b79fefaeba3400088720598cc757aea1fb31ce976fb936726fd4b48d396a35cf4b78d16ddda56067ddc64728dc80b874c5286128b7b5da88808c7df5c3323791720e7ead8b50144dedc15590530b89cd022fd7291c97a4b9889d0568 -Q = 04c53ad865beb1e2b92764065f1a6bb465ee94aacabe43426a93c277d02e00fe36be1c859ba08a031fc518a0d0076689796728d42bae9bc097151748ffa0982964bdd16076fa0e7cc15837c1f773b08d02c3dbc57339091ccc34105b84781150b4 -Sig = 3065023100d4f0dd94fc3b657dbd234767949207624082ff946de9ce0aeb0d9993b8c7d7935760e1bf9d8b233bc7d6cd34928f521802300941df05062aa8849610f4b37d184db77ed1bc19ad2bb42f9a12c123017592bf4086bf424b3caad9a404b260a0f69efb -Result = F (2 - R changed) - -Curve = P-384 -Digest = SHA384 -Msg = 4132833a525aecc8a1a6dea9f4075f44feefce810c4668423b38580417f7bdca5b21061a45eaa3cbe2a7035ed189523af8002d65c2899e65735e4d93a16503c145059f365c32b3acc6270e29a09131299181c98b3c76769a18faf21f6b4a8f271e6bf908e238afe8002e27c63417bda758f846e1e3b8e62d7f05ebd98f1f9154 -Q = 041f94eb6f439a3806f8054dd79124847d138d14d4f52bac93b042f2ee3cdb7dc9e09925c2a5fee70d4ce08c61e3b191601c4fd111f6e33303069421deb31e873126be35eeb436fe2034856a3ed1e897f26c846ee3233cd16240989a7990c19d8c -Sig = 306502303c15c3cedf2a6fbff2f906e661f5932f2542f0ce68e2a8182e5ed3858f33bd3c5666f17ac39e52cb004b80a0d4ba73cd0231009de879083cbb0a97973c94f1963d84f581e4c6541b7d000f9850deb25154b23a37dd72267bdd72665cc7027f88164fab -Result = F (2 - R changed) - -Curve = P-384 -Digest = SHA384 -Msg = 9dd789ea25c04745d57a381f22de01fb0abd3c72dbdefd44e43213c189583eef85ba662044da3de2dd8670e6325154480155bbeebb702c75781ac32e13941860cb576fe37a05b757da5b5b418f6dd7c30b042e40f4395a342ae4dce05634c33625e2bc524345481f7e253d9551266823771b251705b4a85166022a37ac28f1bd -Q = 04cb908b1fd516a57b8ee1e14383579b33cb154fece20c5035e2b3765195d1951d75bd78fb23e00fef37d7d064fd9af144cd99c46b5857401ddcff2cf7cf822121faf1cbad9a011bed8c551f6f59b2c360f79bfbe32adbcaa09583bdfdf7c374bb -Sig = 3064023033f64fb65cd6a8918523f23aea0bbcf56bba1daca7aff817c8791dc92428d605ac629de2e847d43cee55ba9e4a0e83ba02304428bb478a43ac73ecd6de51ddf7c28ff3c2441625a081714337dd44fea8011bae71959a10947b6ea33f77e128d3c6ae -Result = P (0 ) - -Curve = P-384 -Digest = SHA384 -Msg = 9c4479977ed377e75f5cc047edfa689ef232799513a2e70280e9b124b6c8d166e107f5494b406853aec4cff0f2ca00c6f89f0f4a2d4ab0267f44512dfff110d1b1b2e5e78832022c14ac06a493ab789e696f7f0f060877029c27157ce40f81258729caa4d9778bae489d3ab0259f673308ae1ec1b1948ad2845f863b36aedffb -Q = 049b3c48d924194146eca4172b6d7d618423682686f43e1dbc54ed909053d075ca53b68ae12f0f16a1633d5d9cb17011ec695039f837b68e59330ee95d11d5315a8fb5602a7b60c15142dbba6e93b5e4aba8ae4469eac39fa6436323eccc60dcb6 -Sig = 30650230202da4e4e9632bcb6bf0f6dafb7e348528d0b469d77e46b9f939e2fa946a608dd1f166bcbcde96cfad551701da69f6c2023100db595b49983882c48df8a396884cd98893a469c4d590e56c6a59b6150d9a0acdf142cf92151052644702ed857a5b7981 -Result = F (3 - S changed) - -Curve = P-384 -Digest = SHA384 -Msg = 21eb31f2b34e4dde8d6c701e976d3fbbf4de6a3384329118d4ddb49adb2bb44465598abf6df25858b450c7767e282ccaca494088274e37353674eef58f583937d3d184ef727317d3672397a74c8fe327919a3df8fd65af0bc8cebbc40095adf89f1bf2c5e6dc6ba44633fd8433b25f065f5e3eb4840af23cc534415406745a31 -Q = 045140108b93b52d9ad572d6129ed6564766f8df3755e49fa53eba41a5a0d6c1d24a483c90070583a66e3cfa52b6fb1f31ff52498446a40c61e60c97554256472625633eda0c1a8b4061481fecfbe9c4503e99dfc69e86c9e85c8cc53dca6b8dc4 -Sig = 3065023100b2726b2ba9da02de35e9953fc283d1e78700860d4c33dce8db04dd41499d904866c1b8debb377f6c0dfcb0704252174f02300775b027068d7ad55121a278a819f52099ace750d5e996eaec9dee7be72758736cf769650148fbd5c411beb9b88f979e -Result = F (4 - Q changed) - -Curve = P-384 -Digest = SHA384 -Msg = 58ea3b1e82f97708053d0b41441d0aa9619050e86ac6c4f7781164e5da3019c47a839366509fa95812e4f64afdc62b627c7a98f633dd05db45c1d8954fc83bdb5042679378bb7e4c7863aacf2026360ca58314983e6c726cf02bb347706b844ddc66aee4177c309cb700769553480cdd6b1cd77341c9a81c05fbb80819bc623f -Q = 0431f4fc2fac3a163a5796f5e414af6f8107ab5e4a98c755d81efa9d5a83c10128c16c863190112fc29d3d5f3057a2edf1fe208743f3e96c3a34b5fff78c9716c074a1ce3dc01c3f0e471ddfae91cd88e7dda38dd0e5e1f91b00b8539da3cc10bc -Sig = 30640230706911812ec9e7370234efd57b2855975eab81e9c2fe783aa8e442dc6e7d681dab2dc0dfc6765f87ab67001108e3facf023042c89efa22d853d32f619c9fe13e9852889ac98a9fed5d4fa47fed238e1cbe70d7970af9f7bdf84e51176af4885f2490 -Result = F (4 - Q changed) - -Curve = P-384 -Digest = SHA384 -Msg = 188cd53097ef3e64b78b9260bf461708c836f25f2bcc98b534af98b96ee4b324e2203a7e62dbc396966f56419fb5135cb124369aaa025f396eac72f05ab45950d9e02cd5a2357eafab9f816117b7f1de192468895327802ec79f5d6b5a3d44d7afbed7b4a308e365655b8db2bde75e143062ee48b7c51688ac5db0bc7c83ec9c -Q = 041f7911dcfe63a6f270cf75b8584d9b1b4a00afc1fa43543c945945b8a821ebeb37fbc705a000f9cc7c35f7d27027b7bbf11835ec80c4ac06d99247e73bf72522109ac255e6109262de4dfbf9619244f74fb6c9ee57694537d7e79c248db34dc4 -Sig = 306402303587c9c6885adf3be1086825f9a41ccd2edfa0bd95e7fc4dba5a9710f41d539132de7772f14c18e318f8992b66d2a86c023073a844d729599d4e3e3c1b63e9c4bf5a73d1f69e0160857fe63a56c381c051f5c37ea6b4cc4caacb6ff26ef9699efe30 -Result = F (4 - Q changed) - -Curve = P-384 -Digest = SHA384 -Msg = 6462bc8c0181db7d596a35aa25d5d323dd3b2798054c2af6c22e841b1ccf3dc3ee514f86d4a0cef7a6f7f566ae448b24dcc8d11eb7a585d44923ea1a06c774a2b3eb7409ab17a0065d5834ab00309ad44312a7317259219543e80ddb0cc2a4381bf6e53cd1bb357eba82e11c59f82e446c4b79314119182c0de96a1b5bae0b08 -Q = 042039661db813d494a9ecb2c4e0cdd7b54068aae8a5d0597009f67f4f36f32c8ee939abe03716e94970bba69f595fead6e2d5236e7e357744514e66a3fb111073336de929598eb79fb4368c5bf80814e7584a3b94118faac9321df37452a846fc -Sig = 30640230164b8ac2b34c4c499b9d6727e130b5ef37c296bd22c306d1396c6aa54ca661f729aa6353b55d7cf1793b80b5a485115f02304e7187f8f735b7272f2c0985315b5602bb9b1a09f32233aa10570c82d1ccedef6e725800336511e47f88ddbbbdc08f54 -Result = F (1 - Message changed) - -Curve = P-384 -Digest = SHA384 -Msg = 13c63a3cb61f15c659720658a77869145ae8a176c6d93d3a8aa9946236d9fb0463db9e48c667cba731afaa814ba0d58357524f8de28d4c4bbe2691dac9b32632a7dd0f99fd4cb240290878305011f7d3e37ecc410cc1fed601e7901e8be6414ea44317584843a2d2ca2e15103e1ea49365bc384355b3c6fa6ccdd452543e9769 -Q = 0446dcf8ee848c6459fa66d1cae91ccd471401a5782cb2d3b9b9264189f0e9ddf7197b05c694931bde3306240cf9d24b7e79d9508f82c5ead05c3f9392f3b1458f6d6c02f44420b9021d656e59402e2645bf3ba1a6b244ddb12edbb69516d5873b -Sig = 306402305ffba3b5bd7c3a89ec40b47884b0b3464e8abb78608c6d61e1e62c2ca98d44fcdf61825d69dffee8408d0849d0623bac02300d2597b5fc3842ffce1957172253a8c9c0e4dbe770ce54f70f139e0545dc34ec639d609e14175bdb2b812ccfda00c9d4 -Result = F (1 - Message changed) - -Curve = P-384 -Digest = SHA384 -Msg = 6939a9118adc307107aa6b0057c280d10fa44a64700c7bd23e1f33a478ad2cfe596c05f72b540cbdb696aac6ab98d9ca8c62f33e182657130b8317a76275a5996333a5d3547e2293b401d0adf60f91e91d2137e34f3336e017c3c6dba6bf5b13dd0de288f9b20a896a92c48e984fbc09f920fab82f3f915d6524b0c11236aca4 -Q = 04097cea75f685cf4d54324ad2124ce3f77b1e490bbaa1ffacde40dd988f7591e1c5d158e6f232500d958762831914af7f716d8bc056daf69ca2edd21b89a6ae9923cfcae87bfda5f9a6e514dd4b9d28d164fcc613ca2afb9660adfece59f09b66 -Sig = 306502301c5d4561d2a3af8835839b543098c101c715c545eb7d00300c5cb05bb08dac29e732ffdc31c50915e691999ad505104c023100c3442f2fb1498fd47c2f959edff37a19783e3ccee80dc6955ca64db087fd188e67358e7b9223535bbb858d21ba6a978c -Result = F (2 - R changed) - -Curve = P-384 -Digest = SHA384 -Msg = c82071e42c45ac3597f255ba27766afe366e31a553a4d2191360b88a2a349ee077291454bf7b323cb3c9d7fec5533e4e4bf4fb5bc2eb16c6319e9378a3d8a444b2d758123438dbb457b26b14b654b3c88d66838adfa673067c0552d1b8a3ade3a9cb777986c00f65cace53f852c1121acf19516a7cf0ba3820b5f51f31c539a2 -Q = 04d2e2b3d262bb1105d914c32c007ea23d15a98197f0ed90b46a17f3d403e406a76c8f752be1a8cd01a94fd45157f6511ae585fba180017b9983b4c853ad3a5dd52e079c5f0ef792d1a0213b6085e390b073de1a4b01749ceab27806e5604980fe -Sig = 3064023049c001c47bbcee10c81c0cdfdb84c86e5b388510801e9c9dc7f81bf667e43f74b6a6769c4ac0a38863dc4f21c558f28602301fb4ff67340cc44f212404ba60f39a2cb8dcd3f354c81b7219289d32e849d4915e9d2f91969ba71e3dd4414f1e8f18f7 -Result = F (3 - S changed) - -Curve = P-384 -Digest = SHA384 -Msg = 137b215c0150ee95e8494b79173d7ae3c3e71efcc7c75ad92f75659ce1b2d7eb555aad8026277ae3709f46e896963964486946b9fe269df444a6ea289ec2285e7946db57ff18f722a583194a9644e863ae452d1457dc5db72ee20c486475f358dc575c621b5ab865c662e483258c7191b4cc218e1f9afeeb3e1cb978ce9657dc -Q = 04cd887c65c01a1f0880bf58611bf360a8435573bc6704bfb249f1192793f6d3283637cd50f3911e5134b0d6130a1db60ef2b3cbf4fe475fd15a7897561e5c898f10caa6d9d73fef10d4345917b527ce30caeaef138e21ac6d0a49ef2fef14bee6 -Sig = 3065023100addfa475b998f391144156c418561d323bdfd0c4f416a2f71a946712c349bb79ba1334c3de5b86c2567b8657fe4ca1f102301c314b1339f73545ff457323470695e0474c4b6860b35d703784fbf66e9c665de6ca3acb60283df61413e0740906f19e -Result = F (2 - R changed) - -Curve = P-384 -Digest = SHA384 -Msg = 93e7e75cfaf3fa4e71df80f7f8c0ef6672a630d2dbeba1d61349acbaaa476f5f0e34dccbd85b9a815d908203313a22fe3e919504cb222d623ad95662ea4a90099742c048341fe3a7a51110d30ad3a48a777c6347ea8b71749316e0dd1902facb304a76324b71f3882e6e70319e13fc2bb9f3f5dbb9bd2cc7265f52dfc0a3bb91 -Q = 04a370cdbef95d1df5bf68ec487122514a107db87df3f8852068fd4694abcadb9b14302c72491a76a64442fc07bd99f02cd397c25dc1a5781573d039f2520cf329bf65120fdbe964b6b80101160e533d5570e62125b9f3276c49244b8d0f3e44ec -Sig = 3065023100c6c7bb516cc3f37a304328d136b2f44bb89d3dac78f1f5bcd36b412a8b4d879f6cdb75175292c696b58bfa9c91fe639102306b711425e1b14f7224cd4b96717a84d65a60ec9951a30152ea1dd3b6ea66a0088d1fd3e9a1ef069804b7d969148c37a0 -Result = P (0 ) - -Curve = P-384 -Digest = SHA384 -Msg = 15493aa10cfb804b3d80703ca02af7e2cfdc671447d9a171b418ecf6ca48b450414a28e7a058a78ab0946186ad2fe297e1b7e20e40547c74f94887a00f27dde7f78a3c15eb1115d704972b35a27caf8f7cdcce02b96f8a72d77f36a20d3f829e915cd3bb81f9c2997787a73616ed5cb0e864231959e0b623f12a18f779599d65 -Q = 04d1cf635ca04f09b58879d29012f2025479a002bda590020e6a238bccc764478131cac7e6980c67027d92ece947fea5a621f7675c2be60c0a5b7d6df2bcc89b56212a2849ec0210c59316200c59864fd86b9a19e1641d206fd8b29af7768b61d3 -Sig = 306402306101d26e76690634b7294b6b162dcc1a5e6233813ba09edf8567fb57a8f707e024abe0eb3ce948675cd518bb3bfd438302304e2a30f71c8f18b74184837f981a90485cd5943c7a184aba9ac787d179f170114a96ddbb8720860a213cc289ae340f1f -Result = F (1 - Message changed) - -Curve = P-384 -Digest = SHA384 -Msg = bc5582967888a425fb757bd4965900f01e6695d1547ed967c1d4f67b1b1de365d203f407698761699fec5f5a614c21e36a9f57a8aaf852e95538f5615785534568811a9a9ccc349843f6c16dc90a4ac96a8f72c33d9589a860f4981d7b4ee7173d1db5d49c4361368504c9a6cbbaedc2c9bff2b12884379ba90433698ceb881d -Q = 04d15ca4b2d944d5539658a19be8ef85874f0c363b870f1cd1f2dc9cb68b2a43a10d37064697c84543e60982ab62bb32c8062fb7dfc379fc6465302ac5d8d11d3b957b594c9ef445cfe856765dd59e6f10f11809e115ac64969baa23543f2e5661 -Sig = 3065023100e2cf123ce15ca4edad5f087778d483d9536e4a37d2d55599541c06f878e60354aa31df250b2fc4ed252b80219552c9580230696707a7e3f9a4b918e7c994e7332103d8e816bbe6d0d1cf72877318e087ed0e230b0d1269902f369acb432b9e97a389 -Result = P (0 ) - -Curve = P-384 -Digest = SHA384 -Msg = 4f31331e20a3273da8fce6b03f2a86712ed5df41120a81e994d2b2f370e98ef35b847f3047d3cf57e88350e27b9ac3f02073ac1838db25b5ad477aee68930882304fc052f273821056df7500dc9eab037ed3ac3c75396e313bf0f4b89b26675af55f3378cf099d9d9a25a4887c1cfd2448f5b2188c41d6fa26045c5e974bf3e4 -Q = 04c83d30de9c4e18167cb41c990781b34b9fceb52793b4627e696796c5803515dbc4d142977d914bc04c153261cc5b537f42318e5c15d65c3f545189781619267d899250d80acc611fe7ed0943a0f5bfc9d4328ff7ccf675ae0aac069ccb4b4d6e -Sig = 3066023100b567c37f7c84107ef72639e52065486c2e5bf4125b861d37ea3b44fc0b75bcd96dcea3e4dbb9e8f4f45923240b2b9e44023100d06266e0f27cfe4be1c6210734a8fa689a6cd1d63240cb19127961365e35890a5f1b464dcb4305f3e8295c6f842ef344 -Result = F (3 - S changed) diff -Nru temporalio-1.3.0/vendor/ring/tests/ecdsa_verify_fixed_tests.txt temporalio-1.3.0/vendor/ring/tests/ecdsa_verify_fixed_tests.txt --- temporalio-1.3.0/vendor/ring/tests/ecdsa_verify_fixed_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/ecdsa_verify_fixed_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,271 +0,0 @@ -# Test vectors for short (zero-padded) values of s. - -# S is the maximum length. -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 0430345fd47ea21a11129be651b0884bfac698377611acc9f689458e13b9ed7d4b9d7599a68dcf125e7f31055ccb374cd04f6d6fd2b217438a63f6f667d50ef2f0 -Sig = 341f6779b75e98bb42e01095dd48356cbf9002dc704ac8bd2a8240b88d3796c6555843b1b4e264fe6ffe6e2b705a376c05c09404303ffe5d2711f3e3b3a010a1 -Result = P (0 ) - -# S is one byte shorter than the maximum length. -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 0430345fd47ea21a11129be651b0884bfac698377611acc9f689458e13b9ed7d4b9d7599a68dcf125e7f31055ccb374cd04f6d6fd2b217438a63f6f667d50ef2f0 -Sig = 31ed574e9688aed7016e985c0e742fb788be73d9ad0a895e6182c77751817ed000d98eb6d480d64d1729c680693cb13bd6bf0c7b651007e459e667683ff65b92 -Result = P (0 ) - -# S is 2 bytes shorter than the maximum length. -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 0430345fd47ea21a11129be651b0884bfac698377611acc9f689458e13b9ed7d4b9d7599a68dcf125e7f31055ccb374cd04f6d6fd2b217438a63f6f667d50ef2f0 -Sig = f59cf66594cc837415f16494fb52c02f2a6264bf6ce7dccbf2f78c090cdcefb000005a8c8a04ba7825f3f8e56517056daa1a51129cd91382a24589ed05d0c13d -Result = P (0 ) - -# S is the maximum length. -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 045c5e788a805c77d34128b8401cb59b2373b8b468336c9318252bf39fd31d2507557987a5180a9435f9fb8eb971c426f1c485170dcb18fb688a257f89387a09fc4c5b8bd4b320616b54a0a7b1d1d7c6a0c59f6dff78c78ad4e3d6fca9c9a17b96 -Sig = 85ac708d4b0126bac1f5eeebdf911409070a286fdde5649582611b60046de353761660dd03903f58b44148f25142eef8183475ec1f1392f3d6838abc0c01724709c446888bed7f2ce4642c6839dc18044a2a6ab9ddc960bfac79f6988e62d452 -Result = P (0 ) - -# S is one byte shorter than the maximum length. -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 045c5e788a805c77d34128b8401cb59b2373b8b468336c9318252bf39fd31d2507557987a5180a9435f9fb8eb971c426f1c485170dcb18fb688a257f89387a09fc4c5b8bd4b320616b54a0a7b1d1d7c6a0c59f6dff78c78ad4e3d6fca9c9a17b96 -Sig = 4dec97b54c4150ebaffc2dbfc2bc17c302be47cfc4b541ada34108b1080f2482a3e7f5f2b16f730210bd8c29b6681e0b000575984f37064bfbbdda76836f5ef2d632f006c338a9585c8b9108c46ea812ce066110156de9806ae5711153e2ef0b -Result = P (0 ) - -# S is 2 bytes shorter than the maximum length. -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 045c5e788a805c77d34128b8401cb59b2373b8b468336c9318252bf39fd31d2507557987a5180a9435f9fb8eb971c426f1c485170dcb18fb688a257f89387a09fc4c5b8bd4b320616b54a0a7b1d1d7c6a0c59f6dff78c78ad4e3d6fca9c9a17b96 -Sig = ad8e51ec23d5b8130a5e0636a2f0d1740e8b5404c368b7dab5ae82d307d653c6ef70dcee70b112bf678801f87fb8f5a90000806d69e0c2834c27666996d55655cf9358b201aa85d3b08891abcc68c854cac6c67c53b3bf92df9a677d11aba13d -Result = P (0 ) - - -# Generated Test vectors. -# -# TODO: Test the range of `r` in addition to the range of `s`. -# TODO: Test what happens when the message digests to zero. -# TODO: Additional test coverage. libsecp256k1 is a good example. - - -# Test vectors for Gregory Maxwell's trick. -# -# In all cases, the `s` component of the signature was selected -# arbitrarily as 4 and then the `r` component was chosen to be the -# smallest value where the public key recovery from the signature -# works. - -# The signature has r < q - n. This is the control case for the next -# test case; this signature is the same but the public key is -# different. Notice that both public keys work for the same signature! -# This signature will validate even if the implementation doesn't -# reduce the X coordinate of the multiplication result (mod n). -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 041548fc88953e06cd34d4b300804c5322cb48c24aaaa4d07a541b0f0ccfeedeb0ae4991b90519ea405588bdf699f5e6d0c6b2d5217a5c16e8371062737aa1dae1 -Sig = 00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004 -Result = P (0 ) - -# The signature has r < q - n. s Since r < q - n, r + n < q. Notice -# that this signature is the same as the signature in the preceding -# test case, but the public key is different. That the signature -# validates for this case too is what's special about the case where -# r < q - n. If this test case fails it is likely that the -# implementation doesn't reduce the X coordinate of the multiplication -# result (mod n), or it is missing the second step of Gregory -# Maxwell's trick. -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 04ad8f60e4ec1ebdb6a260b559cb55b1e9d2c5ddd43a41a2d11b0741ef2567d84e166737664104ebbc337af3d861d3524cfbc761c12edae974a0759750c8324f9a -Sig = 00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004 -Result = P (0 ) - -# The signature has r > q - n. The signature is for the public key -# recovered from r. r + n > q since r > q - n. This is the control -# for the next test case; this signature is the same as the signature -# in the following test case but the public key is different. -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 0445bd879143a64af5746e2e82aa65fd2ea07bba4e35594095a981b59984dacb219d59697387ac721b1f1eccf4b11f43ddc39e8367147abab3084142ed3ea170e4 -Sig = 000000000000000000000000000000004319055358e8617b0c46353d039cdaae0000000000000000000000000000000000000000000000000000000000000004 -Result = P (0 ) - -# The signature has r > q - n. The signature is for the public key -# recovered from r + n (mod q). r + n > q since r > q - n, and so -# r + n (mod q) < r because r + n (mod n) != r + n (mod q). Notice -# that this signature is the same as the signature in the preceding -# test case but the public key is different. Also, notice that the -# signature fails to validate in this case, unlike other related test -# cases. If this test case fails (the signature validates), it is -# likely that the implementation didn't guard the second case of -# Gregory Maxwell's trick on the condition r < q - n. -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 040feb5df4cc78b35ec9c180cc0de5842f75f088b48456978ffa98e716d94883e1e6500b2a1f6c1d9d493428d7ae7d9a8a560fff30a3d14aa160be0c5e7edcd887 -Sig = 000000000000000000000000000000004319055358e8617b0c46353d039cdaae0000000000000000000000000000000000000000000000000000000000000004 -Result = F - -# The signature has r < q - n. This is the control case for the next -# test case; this signature is the same but the public key is -# different. Notice that both public keys work for the same signature! -# This signature will validate even if the implementation doesn't -# reduce the X coordinate of the multiplication result (mod n). -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 0425b890b9597155baf7e7ffb48d8123184cbb76ea3f7b10d8f1702136f969e915188cff306c67950437f816ce6ecb739204cc069edac95929dfbd719313552797962789e2210a0bf270c2f0ffc109a70e40da6303a2599bdd702c19070dd51f42 -Sig = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004 -Result = P (0 ) - -# The signature has r < q - n. s Since r < q - n, r + n < q. Notice -# that this signature is the same as the signature in the preceding -# test case, but the public key is different. That the signature -# validates for this case too is what's special about the case where -# r < q - n. If this test case fails it is likely that the -# implementation doesn't reduce the X coordinate of the multiplication -# result (mod n), or it is missing the second step of Gregory -# Maxwell's trick. -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 045a3c576f0c2a615063c6e8ec40f5bf0dd67e549e9f13f8f881703ec40a8d6d8ecbb0d8e5b20f3aa0f2e581b594cea3e654a450cabcf24bd908cc47da98eba648a0440332ee19fb53da96dddaec521f718f7b52a161b67134d6e0d6e81dc45502 -Sig = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004 -Result = P (0 ) - -# The signature has r > q - n. The signature is for the public key -# recovered from r. r + n > q since r > q - n. This is the control -# for the next test case; this signature is the same as the signature -# in the following test case but the public key is different. -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 04a93588bffb32417bd2b0fa03a6a30d2cf90034e6070b9333d4e7a42fe88bce5a03e8be7f2a84fbc25ec84dc34915c53fd975cfd0db77ec2b5c548994dc9f62756e018882a31d883471b0bbbd8588d9a2acab1aeaaa1eb217f8e528e7114162df -Sig = 000000000000000000000000000000000000000000000000389cb27e0bc8d21fa7e5f24cb74f58851313e696333ad68e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004 -Result = P (0 ) - -# The signature has r > q - n. The signature is for the public key -# recovered from r + n (mod q). r + n > q since r > q - n, and so -# r + n (mod q) < r because r + n (mod n) != r + n (mod q). Notice -# that this signature is the same as the signature in the preceding -# test case but the public key is different. Also, notice that the -# signature fails to validate in this case, unlike other related test -# cases. If this test case fails (the signature validates), it is -# likely that the implementation didn't guard the second case of -# Gregory Maxwell's trick on the condition r < q - n. -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 04576270f9571c9e99b9c71be1a1a705e5155e46b8c6dd920c14e2aaf0f9f96ed30754e2c8f8464d015a9bc779495ea568ac39c555c3b03de021e8167a27425588d6a82b68cf7a0f6ae389a202d8663ed32b5e1782c0377a8f0dc309ae28143961 -Sig = 000000000000000000000000000000000000000000000000389cb27e0bc8d21fa7e5f24cb74f58851313e696333ad68e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004 -Result = F - - -# Generated Test vectors edge cases of signature (r, s) values. - -# s == 0 (out of range) -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 0471db746fd153cf5c5a7c7210f9008c0e99c3a936ef0e720b202b304771431a230af53931e70cbe279ca47ce819616ed1db6604490f70abbcef3036732426eb6d -Sig = 00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000 -Result = F - -# s == 1 (minimum allowed) -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 046e3f95fae7606c1cdfab1f1560de160ed806bbc2a85dc5a2d002aa1c0ac3e1fb5bcd5f7a325415824365cc584f08c144118318ce4d0f5df82b7753b291c4fe96 -Sig = 00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001 -Result = P (0 ) - -# s == n (out of range) -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 0471db746fd153cf5c5a7c7210f9008c0e99c3a936ef0e720b202b304771431a230af53931e70cbe279ca47ce819616ed1db6604490f70abbcef3036732426eb6d -Sig = 0000000000000000000000000000000000000000000000000000000000000006ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551 -Result = F - -# s == n - 1 (maximum allowed) -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 04d78f14b53bf825c9f7146193f775458ef5ee46500cd44b18488cb4115c3f00f04b11fc7c6aa1045dc83e4f3e8a14d4a017db8415b5fe3f1a32afba4b8c707ab4 -Sig = 0000000000000000000000000000000000000000000000000000000000000006ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550 -Result = P (0 ) - -# s == n - 1 (maximum allowed), missing first zero byte. -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 04d78f14b53bf825c9f7146193f775458ef5ee46500cd44b18488cb4115c3f00f04b11fc7c6aa1045dc83e4f3e8a14d4a017db8415b5fe3f1a32afba4b8c707ab4 -Sig = 00000000000000000000000000000000000000000000000000000000000006ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632550 -Result = F - -# s == n - 1 (maximum allowed), missing last nonzero byte. -Curve = P-256 -Digest = SHA256 -Msg = "" -Q = 04d78f14b53bf825c9f7146193f775458ef5ee46500cd44b18488cb4115c3f00f04b11fc7c6aa1045dc83e4f3e8a14d4a017db8415b5fe3f1a32afba4b8c707ab4 -Sig = 0000000000000000000000000000000000000000000000000000000000000006ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6325 -Result = F - -# s == 0 (out of range) -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 04aad95ed7839057e221d46bb203f8b6c977588966fffccf815542429477dc45e61ed6b86fec0a2f3dfb453ea56ac0a6c06933416550a7158ed3f06aca1822c9b83102b40e5ada71651ec153a919a32755ee0292f6a5530d5889c1dc6cb020351f -Sig = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -Result = F - -# s == 1 (minimum allowed) -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 042aadde5424928b888e20ecef2525f99d646519aa994c075a4081aa852ec309a6ac63006421ff756c6c0924d611d1bda82df99267266ba603b07ba85c678f4ae69daf4634a5e597d77d0b0338f343d8090b2d4420a29302ab47ef04ad45e1461f -Sig = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 -Result = P (0 ) - -# s == n (out of range) -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 04aad95ed7839057e221d46bb203f8b6c977588966fffccf815542429477dc45e61ed6b86fec0a2f3dfb453ea56ac0a6c06933416550a7158ed3f06aca1822c9b83102b40e5ada71651ec153a919a32755ee0292f6a5530d5889c1dc6cb020351f -Sig = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973 -Result = F - -# s == n - 1 (maximum allowed) -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 04a1d58e8df7f27c4483be9369f8d73d3ea968fce26ff5374d822c5cb4286c00f6fef54d525f4c8b180065dcc1f95f7a0c291171ca5894ba3f4d52ae091ec36c81ee2f34a384c59183284d85dddc3b196c6d7deaab1626d662bc628136126eef6b -Sig = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52972 -Result = P (0 ) - -# s == n - 1 (maximum allowed), missing first zero byte. -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 04a1d58e8df7f27c4483be9369f8d73d3ea968fce26ff5374d822c5cb4286c00f6fef54d525f4c8b180065dcc1f95f7a0c291171ca5894ba3f4d52ae091ec36c81ee2f34a384c59183284d85dddc3b196c6d7deaab1626d662bc628136126eef6b -Sig = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52972 -Result = F - -# s == n - 1 (maximum allowed), missing last nonzero byte. -Curve = P-384 -Digest = SHA384 -Msg = "" -Q = 04a1d58e8df7f27c4483be9369f8d73d3ea968fce26ff5374d822c5cb4286c00f6fef54d525f4c8b180065dcc1f95f7a0c291171ca5894ba3f4d52ae091ec36c81ee2f34a384c59183284d85dddc3b196c6d7deaab1626d662bc628136126eef6b -Sig = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc529 -Result = F diff -Nru temporalio-1.3.0/vendor/ring/tests/ed25519_from_pkcs8_tests.txt temporalio-1.3.0/vendor/ring/tests/ed25519_from_pkcs8_tests.txt --- temporalio-1.3.0/vendor/ring/tests/ed25519_from_pkcs8_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/ed25519_from_pkcs8_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -# v2. The private key ends with a zero byte. -Input = 3053020101300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a00a1230321001aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77 - -# v2. The private key's last byte, zero, is omitted. -Input = 3052020101300506032b65700421041fa22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749aa1230321001aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77 -Error = InvalidEncoding - -# v2. The private key starts with a zero byte. -Input = 3053020101300506032b65700422042000b1a7c20b2b4ed9c78f3686db82f854734cdc95be51def304d98e0cd30bf490a12303210063457cd4dfdd0e98a53796265831d46ac6a5a685f2a54c9697a38b2c800d60ba - -# v2. The private key's first byte, zero, is omitted. -Input = 3052020101300506032b65700421041fb1a7c20b2b4ed9c78f3686db82f854734cdc95be51def304d98e0cd30bf490a12303210063457cd4dfdd0e98a53796265831d46ac6a5a685f2a54c9697a38b2c800d60ba -Error = InvalidEncoding - -# v2. The public key's first byte is zero. -Input = 3053020101300506032b6570042204202dc67de5186d9193021c0b104d9c6ef24bee2bd395ccb5ed5a2db5f37a2fc1f0a12303210000c17e4d8bbff27c1fb618c23fce988703c7efa3cd590aacac12d3f1e3c90c8c - -# v2. The public key's first byte, zero, is omitted. -Input = 3052020101300506032b6570042204202dc67de5186d9193021c0b104d9c6ef24bee2bd395ccb5ed5a2db5f37a2fc1f0a122032000c17e4d8bbff27c1fb618c23fce988703c7efa3cd590aacac12d3f1e3c90c8c -Error = InvalidEncoding - -# v2. The public key's last byte is zero. -Input = 3053020101300506032b657004220420b2579f555a2eabdabac8d46997b1c08fe8ce63858df124efc29c60dfbb86c349a1230321009d421270ce2fcc08672c41e427214876245c9b0f14ab671b8bb9d266a492e400 - -# v2. The public key's last byte, zero, is omitted (valid ASN.1 DER). -Input = 3052020101300506032b657004220420b2579f555a2eabdabac8d46997b1c08fe8ce63858df124efc29c60dfbb86c349a1220320009d421270ce2fcc08672c41e427214876245c9b0f14ab671b8bb9d266a492e4 -Error = InvalidEncoding - -# v2. The public key's last byte, zero, has been truncated (invalid ASN.1 DER). -Input = 3053020101300506032b657004220420b2579f555a2eabdabac8d46997b1c08fe8ce63858df124efc29c60dfbb86c349a1230321009d421270ce2fcc08672c41e427214876245c9b0f14ab671b8bb9d266a492e4 -Error = InvalidEncoding - -# v2. The public key's high bit has been flipped. Ed25519 public keys don't -# have their high bit masked, so this is wrong. -Input = 3053020101300506032b6570042204202dc67de5186d9193021c0b104d9c6ef24bee2bd395ccb5ed5a2db5f37a2fc1f0a12303210000c17e4d8bbff27c1fb618c23fce988703c7efa3cd590aacac12d3f1e3c90c0c -Error = InconsistentComponents - -# v2. Valid except the public key field is missing. -Input = 302e020101300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a00 -Error = PublicKeyIsMissing - -# v2. Valid except the public key is encoded as [0] instead of [1]; i.e. the -# attributes are invalid and the public key is missing. -Input = 3053020101300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a00a0230321001aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77 -Error = PublicKeyIsMissing diff -Nru temporalio-1.3.0/vendor/ring/tests/ed25519_from_pkcs8_unchecked_tests.txt temporalio-1.3.0/vendor/ring/tests/ed25519_from_pkcs8_unchecked_tests.txt --- temporalio-1.3.0/vendor/ring/tests/ed25519_from_pkcs8_unchecked_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/ed25519_from_pkcs8_unchecked_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -# An Ed25519 private key. (This is from BoringSSL's tests.) -Input = 302e020100300506032b6570042204209d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60 - -# The same as the above, but with an invalid NULL parameter. (This is from BoringSSL's tests.) -Input = 3030020100300706032b65700500042204209d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60 -Error = WrongAlgorithm - -# Sample private key from draft-ietf-curdle-pkix-04. -Input = 302e020100300506032b657004220420d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842 - -# v1. valid except it includes publicKey. -Input = 3053020100300506032b657004220420a22efdb713f0e1600d2a5ce948e321ca3a18137c47f15091a12c7126c1749a00a1230321001aeb8e3ee5ba5afd91113466d19f4ea77fa0feffbd8c5adcb499927f12535f77 -Error = InvalidEncoding Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/tests/ed25519_test_private_key.p8 and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/tests/ed25519_test_private_key.p8 differ diff -Nru temporalio-1.3.0/vendor/ring/tests/ed25519_tests.rs temporalio-1.3.0/vendor/ring/tests/ed25519_tests.rs --- temporalio-1.3.0/vendor/ring/tests/ed25519_tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/ed25519_tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -13,11 +13,17 @@ // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. use ring::{ - error, + error, rand, signature::{self, Ed25519KeyPair, KeyPair}, test, test_file, }; +#[cfg(target_arch = "wasm32")] +use wasm_bindgen_test::{wasm_bindgen_test as test, wasm_bindgen_test_configure}; + +#[cfg(target_arch = "wasm32")] +wasm_bindgen_test_configure!(run_in_browser); + /// Test vectors from BoringSSL. #[test] fn test_signature_ed25519() { @@ -112,51 +118,90 @@ assert!(Ed25519KeyPair::from_seed_and_public_key(PUBLIC_KEY, PRIVATE_KEY).is_err()); } +enum FromPkcs8Variant { + Checked, + MaybeUnchecked, +} + #[test] fn test_ed25519_from_pkcs8_unchecked() { - // Just test that we can parse the input. - test::run( - test_file!("ed25519_from_pkcs8_unchecked_tests.txt"), - |section, test_case| { - assert_eq!(section, ""); - let input = test_case.consume_bytes("Input"); - let error = test_case.consume_optional_string("Error"); - - match (Ed25519KeyPair::from_pkcs8_maybe_unchecked(&input), error) { - (Ok(_), None) => (), - (Err(e), None) => panic!("Failed with error \"{}\", but expected to succeed", e), - (Ok(_), Some(e)) => panic!("Succeeded, but expected error \"{}\"", e), - (Err(actual), Some(expected)) => assert_eq!(actual.description_(), expected), - }; - - Ok(()) - }, - ); + test_ed25519_from_pkcs8_( + FromPkcs8Variant::MaybeUnchecked, + Ed25519KeyPair::from_pkcs8_maybe_unchecked, + ) } #[test] fn test_ed25519_from_pkcs8() { + test_ed25519_from_pkcs8_(FromPkcs8Variant::Checked, Ed25519KeyPair::from_pkcs8) +} + +fn test_ed25519_from_pkcs8_( + variant: FromPkcs8Variant, + f: impl Fn(&[u8]) -> Result, +) { // Just test that we can parse the input. test::run( test_file!("ed25519_from_pkcs8_tests.txt"), |section, test_case| { assert_eq!(section, ""); let input = test_case.consume_bytes("Input"); - let error = test_case.consume_optional_string("Error"); - - match (Ed25519KeyPair::from_pkcs8(&input), error) { - (Ok(_), None) => (), - (Err(e), None) => panic!("Failed with error \"{}\", but expected to succeed", e), - (Ok(_), Some(e)) => panic!("Succeeded, but expected error \"{}\"", e), - (Err(actual), Some(expected)) => assert_eq!(actual.description_(), expected), + let expected_error = { + let expected_checked = test_case.consume_string("Result-Checked"); + let expected_maybe_unchecked = test_case.consume_string("Result-Maybe-Unchecked"); + let expected_result = match variant { + FromPkcs8Variant::Checked => expected_checked, + FromPkcs8Variant::MaybeUnchecked => expected_maybe_unchecked, + }; + if expected_result == "OK" { + None + } else { + Some(expected_result) + } + }; + let expected_public = { + let expected_if_no_error = test_case.consume_optional_bytes("Public"); + if expected_error.is_none() { + Some(expected_if_no_error.unwrap()) + } else { + None + } }; + match f(&input) { + Ok(keypair) => { + assert_eq!(expected_error, None); + assert_eq!( + expected_public.as_deref(), + Some(keypair.public_key().as_ref()) + ); + } + Err(actual_error) => { + assert_eq!(expected_error, Some(format!("{}", actual_error))); + assert_eq!(expected_public, None); + } + } + Ok(()) }, ); } #[test] +fn ed25519_test_generate_pkcs8() { + let rng = rand::SystemRandom::new(); + let generated = signature::Ed25519KeyPair::generate_pkcs8(&rng).unwrap(); + let generated = generated.as_ref(); + + let _ronudtripped = signature::Ed25519KeyPair::from_pkcs8(generated).unwrap(); + + // Regression test: Verify we're generating the correct encoding, as + // `Ed25519KeyPair::from_pkcs8` also accepts our old wrong encoding. + assert_eq!(generated.len(), 19 + 32 + 32); + assert_eq!(&generated[..2], &[0x30, 0x51]); +} + +#[test] fn ed25519_test_public_key_coverage() { const PRIVATE_KEY: &[u8] = include_bytes!("ed25519_test_private_key.p8"); const PUBLIC_KEY: &[u8] = include_bytes!("ed25519_test_public_key.der"); diff -Nru temporalio-1.3.0/vendor/ring/tests/ed25519_tests.txt temporalio-1.3.0/vendor/ring/tests/ed25519_tests.txt --- temporalio-1.3.0/vendor/ring/tests/ed25519_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/ed25519_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,2592 +0,0 @@ -# Additional test vectors from RFC 8032 - -SEED = f5e5767cf153319517630f226876b86c8160cc583bc013744c6bf255f5cc0ee5 -PUB = 278117fc144c72340f67d0f2316e8386ceffbf2b2428c9c51fef7c597f1d426e -MESSAGE = 08b8b2b733424243760fe426a4b54908632110a66c2f6591eabd3345e3e4eb98fa6e264bf09efe12ee50f8f54e9f77b1e355f6c50544e23fb1433ddf73be84d879de7c0046dc4996d9e773f4bc9efe5738829adb26c81b37c93a1b270b20329d658675fc6ea534e0810a4432826bf58c941efb65d57a338bbd2e26640f89ffbc1a858efcb8550ee3a5e1998bd177e93a7363c344fe6b199ee5d02e82d522c4feba15452f80288a821a579116ec6dad2b3b310da903401aa62100ab5d1a36553e06203b33890cc9b832f79ef80560ccb9a39ce767967ed628c6ad573cb116dbefefd75499da96bd68a8a97b928a8bbc103b6621fcde2beca1231d206be6cd9ec7aff6f6c94fcd7204ed3455c68c83f4a41da4af2b74ef5c53f1d8ac70bdcb7ed185ce81bd84359d44254d95629e9855a94a7c1958d1f8ada5d0532ed8a5aa3fb2d17ba70eb6248e594e1a2297acbbb39d502f1a8c6eb6f1ce22b3de1a1f40cc24554119a831a9aad6079cad88425de6bde1a9187ebb6092cf67bf2b13fd65f27088d78b7e883c8759d2c4f5c65adb7553878ad575f9fad878e80a0c9ba63bcbcc2732e69485bbc9c90bfbd62481d9089beccf80cfe2df16a2cf65bd92dd597b0707e0917af48bbb75fed413d238f5555a7a569d80c3414a8d0859dc65a46128bab27af87a71314f318c782b23ebfe808b82b0ce26401d2e22f04d83d1255dc51addd3b75a2b1ae0784504df543af8969be3ea7082ff7fc9888c144da2af58429ec96031dbcad3dad9af0dcbaaaf268cb8fcffead94f3c7ca495e056a9b47acdb751fb73e666c6c655ade8297297d07ad1ba5e43f1bca32301651339e22904cc8c42f58c30c04aafdb038dda0847dd988dcda6f3bfd15c4b4c4525004aa06eeff8ca61783aacec57fb3d1f92b0fe2fd1a85f6724517b65e614ad6808d6f6ee34dff7310fdc82aebfd904b01e1dc54b2927094b2db68d6f903b68401adebf5a7e08d78ff4ef5d63653a65040cf9bfd4aca7984a74d37145986780fc0b16ac451649de6188a7dbdf191f64b5fc5e2ab47b57f7f7276cd419c17a3ca8e1b939ae49e488acba6b965610b5480109c8b17b80e1b7b750dfc7598d5d5011fd2dcc5600a32ef5b52a1ecc820e308aa342721aac0943bf6686b64b2579376504ccc493d97e6aed3fb0f9cd71a43dd497f01f17c0e2cb3797aa2a2f256656168e6c496afc5fb93246f6b1116398a346f1a641f3b041e989f7914f90cc2c7fff357876e506b50d334ba77c225bc307ba537152f3f1610e4eafe595f6d9d90d11faa933a15ef1369546868a7f3a45a96768d40fd9d03412c091c6315cf4fde7cb68606937380db2eaaa707b4c4185c32eddcdd306705e4dc1ffc872eeee475a64dfac86aba41c0618983f8741c5ef68d3a101e8a3b8cac60c905c15fc910840b94c00a0b9d0 -SIG = 0aab4c900501b3e24d7cdf4663326a3a87df5e4843b2cbdb67cbf6e460fec350aa5371b1508f9f4528ecea23c436d94b5e8fcd4f681e30a6ac00a9704a188a03 - -SEED = 833fe62409237b9d62ec77587520911e9a759cec1d19755b7da901b96dca3d42 -PUB = ec172b93ad5e563bf4932c70e1245034c35467ef2efd4d64ebf819683467e2bf -MESSAGE = ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f -SIG = dc2a4459e7369633a52b1bf277839a00201009a3efbf3ecb69bea2186c26b58909351fc9ac90b3ecfdfbc7c66431e0303dca179c138ac17ad9bef1177331a704 - -# These were generated from -# http://ed25519.cr.yp.to/python/sign.input using the following Python script: -# -# import sys -# -# isFirst = True -# -# for line in sys.stdin.readlines(): -# (private, public, message, sig_and_message, _) = line.split(':') -# -# if not isFirst: -# print -# print "PRIV:", private -# print "PUB:", public -# print "MESSAGE:", message -# print "SIG:", sig_and_message[:128] -# isFirst = False -# -# This was adapted for *ring* by s/: / = /, denoting empty inputs with "", -# and replacing "PRIV" with "SEED", the first half of "PRIV". - -SEED = 9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60 -PUB = d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a -MESSAGE = "" -SIG = e5564300c360ac729086e2cc806e828a84877f1eb8e5d974d873e065224901555fb8821590a33bacc61e39701cf9b46bd25bf5f0595bbe24655141438e7a100b - -SEED = 4ccd089b28ff96da9db6c346ec114e0f5b8a319f35aba624da8cf6ed4fb8a6fb -PUB = 3d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c -MESSAGE = 72 -SIG = 92a009a9f0d4cab8720e820b5f642540a2b27b5416503f8fb3762223ebdb69da085ac1e43e15996e458f3613d0f11d8c387b2eaeb4302aeeb00d291612bb0c00 - -SEED = c5aa8df43f9f837bedb7442f31dcb7b166d38535076f094b85ce3a2e0b4458f7 -PUB = fc51cd8e6218a1a38da47ed00230f0580816ed13ba3303ac5deb911548908025 -MESSAGE = af82 -SIG = 6291d657deec24024827e69c3abe01a30ce548a284743a445e3680d7db5ac3ac18ff9b538d16f290ae67f760984dc6594a7c15e9716ed28dc027beceea1ec40a - -SEED = 0d4a05b07352a5436e180356da0ae6efa0345ff7fb1572575772e8005ed978e9 -PUB = e61a185bcef2613a6c7cb79763ce945d3b245d76114dd440bcf5f2dc1aa57057 -MESSAGE = cbc77b -SIG = d9868d52c2bebce5f3fa5a79891970f309cb6591e3e1702a70276fa97c24b3a8e58606c38c9758529da50ee31b8219cba45271c689afa60b0ea26c99db19b00c - -SEED = 6df9340c138cc188b5fe4464ebaa3f7fc206a2d55c3434707e74c9fc04e20ebb -PUB = c0dac102c4533186e25dc43128472353eaabdb878b152aeb8e001f92d90233a7 -MESSAGE = 5f4c8989 -SIG = 124f6fc6b0d100842769e71bd530664d888df8507df6c56dedfdb509aeb93416e26b918d38aa06305df3095697c18b2aa832eaa52edc0ae49fbae5a85e150c07 - -SEED = b780381a65edf8b78f6945e8dbec7941ac049fd4c61040cf0c324357975a293c -PUB = e253af0766804b869bb1595be9765b534886bbaab8305bf50dbc7f899bfb5f01 -MESSAGE = 18b6bec097 -SIG = b2fc46ad47af464478c199e1f8be169f1be6327c7f9a0a6689371ca94caf04064a01b22aff1520abd58951341603faed768cf78ce97ae7b038abfe456aa17c09 - -SEED = 78ae9effe6f245e924a7be63041146ebc670dbd3060cba67fbc6216febc44546 -PUB = fbcfbfa40505d7f2be444a33d185cc54e16d615260e1640b2b5087b83ee3643d -MESSAGE = 89010d855972 -SIG = 6ed629fc1d9ce9e1468755ff636d5a3f40a5d9c91afd93b79d241830f7e5fa29854b8f20cc6eecbb248dbd8d16d14e99752194e4904d09c74d639518839d2300 - -SEED = 691865bfc82a1e4b574eecde4c7519093faf0cf867380234e3664645c61c5f79 -PUB = 98a5e3a36e67aaba89888bf093de1ad963e774013b3902bfab356d8b90178a63 -MESSAGE = b4a8f381e70e7a -SIG = 6e0af2fe55ae377a6b7a7278edfb419bd321e06d0df5e27037db8812e7e3529810fa5552f6c0020985ca17a0e02e036d7b222a24f99b77b75fdd16cb05568107 - -SEED = 3b26516fb3dc88eb181b9ed73f0bcd52bcd6b4c788e4bcaf46057fd078bee073 -PUB = f81fb54a825fced95eb033afcd64314075abfb0abd20a970892503436f34b863 -MESSAGE = 4284abc51bb67235 -SIG = d6addec5afb0528ac17bb178d3e7f2887f9adbb1ad16e110545ef3bc57f9de2314a5c8388f723b8907be0f3ac90c6259bbe885ecc17645df3db7d488f805fa08 - -SEED = edc6f5fbdd1cee4d101c063530a30490b221be68c036f5b07d0f953b745df192 -PUB = c1a49c66e617f9ef5ec66bc4c6564ca33de2a5fb5e1464062e6d6c6219155efd -MESSAGE = 672bf8965d04bc5146 -SIG = 2c76a04af2391c147082e33faacdbe56642a1e134bd388620b852b901a6bc16ff6c9cc9404c41dea12ed281da067a1513866f9d964f8bdd24953856c50042901 - -SEED = 4e7d21fb3b1897571a445833be0f9fd41cd62be3aa04040f8934e1fcbdcacd45 -PUB = 31b2524b8348f7ab1dfafa675cc538e9a84e3fe5819e27c12ad8bbc1a36e4dff -MESSAGE = 33d7a786aded8c1bf691 -SIG = 28e4598c415ae9de01f03f9f3fab4e919e8bf537dd2b0cdf6e79b9e6559c9409d9151a4c40f083193937627c369488259e99da5a9f0a87497fa6696a5dd6ce08 - -SEED = a980f892db13c99a3e8971e965b2ff3d41eafd54093bc9f34d1fd22d84115bb6 -PUB = 44b57ee30cdb55829d0a5d4f046baef078f1e97a7f21b62d75f8e96ea139c35f -MESSAGE = 3486f68848a65a0eb5507d -SIG = 77d389e599630d934076329583cd4105a649a9292abc44cd28c40000c8e2f5ac7660a81c85b72af8452d7d25c070861dae91601c7803d656531650dd4e5c4100 - -SEED = 5b5a619f8ce1c66d7ce26e5a2ae7b0c04febcd346d286c929e19d0d5973bfef9 -PUB = 6fe83693d011d111131c4f3fbaaa40a9d3d76b30012ff73bb0e39ec27ab18257 -MESSAGE = 5a8d9d0a22357e6655f9c785 -SIG = 0f9ad9793033a2fa06614b277d37381e6d94f65ac2a5a94558d09ed6ce922258c1a567952e863ac94297aec3c0d0c8ddf71084e504860bb6ba27449b55adc40e - -SEED = 940c89fe40a81dafbdb2416d14ae469119869744410c3303bfaa0241dac57800 -PUB = a2eb8c0501e30bae0cf842d2bde8dec7386f6b7fc3981b8c57c9792bb94cf2dd -MESSAGE = b87d3813e03f58cf19fd0b6395 -SIG = d8bb64aad8c9955a115a793addd24f7f2b077648714f49c4694ec995b330d09d640df310f447fd7b6cb5c14f9fe9f490bcf8cfadbfd2169c8ac20d3b8af49a0c - -SEED = 9acad959d216212d789a119252ebfe0c96512a23c73bd9f3b202292d6916a738 -PUB = cf3af898467a5b7a52d33d53bc037e2642a8da996903fc252217e9c033e2f291 -MESSAGE = 55c7fa434f5ed8cdec2b7aeac173 -SIG = 6ee3fe81e23c60eb2312b2006b3b25e6838e02106623f844c44edb8dafd66ab0671087fd195df5b8f58a1d6e52af42908053d55c7321010092748795ef94cf06 - -SEED = d5aeee41eeb0e9d1bf8337f939587ebe296161e6bf5209f591ec939e1440c300 -PUB = fd2a565723163e29f53c9de3d5e8fbe36a7ab66e1439ec4eae9c0a604af291a5 -MESSAGE = 0a688e79be24f866286d4646b5d81c -SIG = f68d04847e5b249737899c014d31c805c5007a62c0a10d50bb1538c5f35503951fbc1e08682f2cc0c92efe8f4985dec61dcbd54d4b94a22547d24451271c8b00 - -SEED = 0a47d10452ae2febec518a1c7c362890c3fc1a49d34b03b6467d35c904a8362d -PUB = 34e5a8508c4743746962c066e4badea2201b8ab484de5c4f94476ccd2143955b -MESSAGE = c942fa7ac6b23ab7ff612fdc8e68ef39 -SIG = 2a3d27dc40d0a8127949a3b7f908b3688f63b7f14f651aacd715940bdbe27a0809aac142f47ab0e1e44fa490ba87ce5392f33a891539caf1ef4c367cae54500c - -SEED = f8148f7506b775ef46fdc8e8c756516812d47d6cfbfa318c27c9a22641e56f17 -PUB = 0445e456dacc7d5b0bbed23c8200cdb74bdcb03e4c7b73f0a2b9b46eac5d4372 -MESSAGE = 7368724a5b0efb57d28d97622dbde725af -SIG = 3653ccb21219202b8436fb41a32ba2618c4a133431e6e63463ceb3b6106c4d56e1d2ba165ba76eaad3dc39bffb130f1de3d8e6427db5b71938db4e272bc3e20b - -SEED = 77f88691c4eff23ebb7364947092951a5ff3f10785b417e918823a552dab7c75 -PUB = 74d29127f199d86a8676aec33b4ce3f225ccb191f52c191ccd1e8cca65213a6b -MESSAGE = bd8e05033f3a8bcdcbf4beceb70901c82e31 -SIG = fbe929d743a03c17910575492f3092ee2a2bf14a60a3fcacec74a58c7334510fc262db582791322d6c8c41f1700adb80027ecabc14270b703444ae3ee7623e0a - -SEED = ab6f7aee6a0837b334ba5eb1b2ad7fcecfab7e323cab187fe2e0a95d80eff132 -PUB = 5b96dca497875bf9664c5e75facf3f9bc54bae913d66ca15ee85f1491ca24d2c -MESSAGE = 8171456f8b907189b1d779e26bc5afbb08c67a -SIG = 73bca64e9dd0db88138eedfafcea8f5436cfb74bfb0e7733cf349baa0c49775c56d5934e1d38e36f39b7c5beb0a836510c45126f8ec4b6810519905b0ca07c09 - -SEED = 8d135de7c8411bbdbd1b31e5dc678f2ac7109e792b60f38cd24936e8a898c32d -PUB = 1ca281938529896535a7714e3584085b86ef9fec723f42819fc8dd5d8c00817f -MESSAGE = 8ba6a4c9a15a244a9c26bb2a59b1026f21348b49 -SIG = a1adc2bc6a2d980662677e7fdff6424de7dba50f5795ca90fdf3e96e256f3285cac71d3360482e993d0294ba4ec7440c61affdf35fe83e6e04263937db93f105 - -SEED = 0e765d720e705f9366c1ab8c3fa84c9a44370c06969f803296884b2846a652a4 -PUB = 7fae45dd0a05971026d410bc497af5be7d0827a82a145c203f625dfcb8b03ba8 -MESSAGE = 1d566a6232bbaab3e6d8804bb518a498ed0f904986 -SIG = bb61cf84de61862207c6a455258bc4db4e15eea0317ff88718b882a06b5cf6ec6fd20c5a269e5d5c805bafbcc579e2590af414c7c227273c102a10070cdfe80f - -SEED = db36e326d676c2d19cc8fe0c14b709202ecfc761d27089eb6ea4b1bb021ecfa7 -PUB = 48359b850d23f0715d94bb8bb75e7e14322eaf14f06f28a805403fbda002fc85 -MESSAGE = 1b0afb0ac4ba9ab7b7172cddc9eb42bba1a64bce47d4 -SIG = b6dcd09989dfbac54322a3ce87876e1d62134da998c79d24b50bd7a6a797d86a0e14dc9d7491d6c14a673c652cfbec9f962a38c945da3b2f0879d0b68a921300 - -SEED = c89955e0f7741d905df0730b3dc2b0ce1a13134e44fef3d40d60c020ef19df77 -PUB = fdb30673402faf1c8033714f3517e47cc0f91fe70cf3836d6c23636e3fd2287c -MESSAGE = 507c94c8820d2a5793cbf3442b3d71936f35fe3afef316 -SIG = 7ef66e5e86f2360848e0014e94880ae2920ad8a3185a46b35d1e07dea8fa8ae4f6b843ba174d99fa7986654a0891c12a794455669375bf92af4cc2770b579e0c - -SEED = 4e62627fc221142478aee7f00781f817f662e3b75db29bb14ab47cf8e84104d6 -PUB = b1d39801892027d58a8c64335163195893bfc1b61dbeca3260497e1f30371107 -MESSAGE = d3d615a8472d9962bb70c5b5466a3d983a4811046e2a0ef5 -SIG = 836afa764d9c48aa4770a4388b654e97b3c16f082967febca27f2fc47ddfd9244b03cfc729698acf5109704346b60b230f255430089ddc56912399d1122de70a - -SEED = 6b83d7da8908c3e7205b39864b56e5f3e17196a3fc9c2f5805aad0f5554c142d -PUB = d0c846f97fe28585c0ee159015d64c56311c886eddcc185d296dbb165d2625d6 -MESSAGE = 6ada80b6fa84f7034920789e8536b82d5e4678059aed27f71c -SIG = 16e462a29a6dd498685a3718b3eed00cc1598601ee47820486032d6b9acc9bf89f57684e08d8c0f05589cda2882a05dc4c63f9d0431d6552710812433003bc08 - -SEED = 19a91fe23a4e9e33ecc474878f57c64cf154b394203487a7035e1ad9cd697b0d -PUB = 2bf32ba142ba4622d8f3e29ecd85eea07b9c47be9d64412c9b510b27dd218b23 -MESSAGE = 82cb53c4d5a013bae5070759ec06c3c6955ab7a4050958ec328c -SIG = 881f5b8c5a030df0f75b6634b070dd27bd1ee3c08738ae349338b3ee6469bbf9760b13578a237d5182535ede121283027a90b5f865d63a6537dca07b44049a0f - -SEED = 1d5b8cb6215c18141666baeefcf5d69dad5bea9a3493dddaa357a4397a13d4de -PUB = 94d23d977c33e49e5e4992c68f25ec99a27c41ce6b91f2bfa0cd8292fe962835 -MESSAGE = a9a8cbb0ad585124e522abbfb40533bdd6f49347b55b18e8558cb0 -SIG = 3acd39bec8c3cd2b44299722b5850a0400c1443590fd4861d59aae7496acb3df73fc3fdf7969ae5f50ba47dddc435246e5fd376f6b891cd4c2caf5d614b6170c - -SEED = 6a91b3227c472299089bdce9356e726a40efd840f11002708b7ee55b64105ac2 -PUB = 9d084aa8b97a6b9bafa496dbc6f76f3306a116c9d917e681520a0f914369427e -MESSAGE = 5cb6f9aa59b80eca14f6a68fb40cf07b794e75171fba96262c1c6adc -SIG = f5875423781b66216cb5e8998de5d9ffc29d1d67107054ace3374503a9c3ef811577f269de81296744bd706f1ac478caf09b54cdf871b3f802bd57f9a6cb9101 - -SEED = 93eaa854d791f05372ce72b94fc6503b2ff8ae6819e6a21afe825e27ada9e4fb -PUB = 16cee8a3f2631834c88b670897ff0b08ce90cc147b4593b3f1f403727f7e7ad5 -MESSAGE = 32fe27994124202153b5c70d3813fdee9c2aa6e7dc743d4d535f1840a5 -SIG = d834197c1a3080614e0a5fa0aaaa808824f21c38d692e6ffbd200f7dfb3c8f44402a7382180b98ad0afc8eec1a02acecf3cb7fde627b9f18111f260ab1db9a07 - -SEED = 941cac69fb7b1815c57bb987c4d6c2ad2c35d5f9a3182a79d4ba13eab253a8ad -PUB = 23be323c562dfd71ce65f5bba56a74a3a6dfc36b573d2f94f635c7f9b4fd5a5b -MESSAGE = bb3172795710fe00054d3b5dfef8a11623582da68bf8e46d72d27cece2aa -SIG = 0f8fad1e6bde771b4f5420eac75c378bae6db5ac6650cd2bc210c1823b432b48e016b10595458ffab92f7a8989b293ceb8dfed6c243a2038fc06652aaaf16f02 - -SEED = 1acdbb793b0384934627470d795c3d1dd4d79cea59ef983f295b9b59179cbb28 -PUB = 3f60c7541afa76c019cf5aa82dcdb088ed9e4ed9780514aefb379dabc844f31a -MESSAGE = 7cf34f75c3dac9a804d0fcd09eba9b29c9484e8a018fa9e073042df88e3c56 -SIG = be71ef4806cb041d885effd9e6b0fbb73d65d7cdec47a89c8a994892f4e55a568c4cc78d61f901e80dbb628b86a23ccd594e712b57fa94c2d67ec26634878507 - -SEED = 8ed7a797b9cea8a8370d419136bcdf683b759d2e3c6947f17e13e2485aa9d420 -PUB = b49f3a78b1c6a7fca8f3466f33bc0e929f01fba04306c2a7465f46c3759316d9 -MESSAGE = a750c232933dc14b1184d86d8b4ce72e16d69744ba69818b6ac33b1d823bb2c3 -SIG = 04266c033b91c1322ceb3446c901ffcf3cc40c4034e887c9597ca1893ba7330becbbd8b48142ef35c012c6ba51a66df9308cb6268ad6b1e4b03e70102495790b - -SEED = f2ab396fe8906e3e5633e99cabcd5b09df0859b516230b1e0450b580b65f616c -PUB = 8ea074245159a116aa7122a25ec16b891d625a68f33660423908f6bdc44f8c1b -MESSAGE = 5a44e34b746c5fd1898d552ab354d28fb4713856d7697dd63eb9bd6b99c280e187 -SIG = a06a23d982d81ab883aae230adbc368a6a9977f003cebb00d4c2e4018490191a84d3a282fdbfb2fc88046e62de43e15fb575336b3c8b77d19ce6a009ce51f50c - -SEED = 550a41c013f79bab8f06e43ad1836d51312736a9713806fafe6645219eaa1f9d -PUB = af6b7145474dc9954b9af93a9cdb34449d5b7c651c824d24e230b90033ce59c0 -MESSAGE = 8bc4185e50e57d5f87f47515fe2b1837d585f0aae9e1ca383b3ec908884bb900ff27 -SIG = 16dc1e2b9fa909eefdc277ba16ebe207b8da5e91143cde78c5047a89f681c33c4e4e3428d5c928095903a811ec002d52a39ed7f8b3fe1927200c6dd0b9ab3e04 - -SEED = 19ac3e272438c72ddf7b881964867cb3b31ff4c793bb7ea154613c1db068cb7e -PUB = f85b80e050a1b9620db138bfc9e100327e25c257c59217b601f1f6ac9a413d3f -MESSAGE = 95872d5f789f95484e30cbb0e114028953b16f5c6a8d9f65c003a83543beaa46b38645 -SIG = ea855d781cbea4682e350173cb89e8619ccfddb97cdce16f9a2f6f6892f46dbe68e04b12b8d88689a7a31670cdff409af98a93b49a34537b6aa009d2eb8b4701 - -SEED = ca267de96c93c238fafb1279812059ab93ac03059657fd994f8fa5a09239c821 -PUB = 017370c879090a81c7f272c2fc80e3aac2bc603fcb379afc98691160ab745b26 -MESSAGE = e05f71e4e49a72ec550c44a3b85aca8f20ff26c3ee94a80f1b431c7d154ec9603ee02531 -SIG = ac957f82335aa7141e96b59d63e3ccee95c3a2c47d026540c2af42dc9533d5fd81827d1679ad187aeaf37834915e75b147a9286806c8017516ba43dd051a5e0c - -SEED = 3dff5e899475e7e91dd261322fab09980c52970de1da6e2e201660cc4fce7032 -PUB = f30162bac98447c4042fac05da448034629be2c6a58d30dfd578ba9fb5e3930b -MESSAGE = 938f0e77621bf3ea52c7c4911c5157c2d8a2a858093ef16aa9b107e69d98037ba139a3c382 -SIG = 5efe7a92ff9623089b3e3b78f352115366e26ba3fb1a416209bc029e9cadccd9f4affa333555a8f3a35a9d0f7c34b292cae77ec96fa3adfcaadee2d9ced8f805 - -SEED = 9a6b847864e70cfe8ba6ab22fa0ca308c0cc8bec7141fbcaa3b81f5d1e1cfcfc -PUB = 34ad0fbdb2566507a81c2b1f8aa8f53dccaa64cc87ada91b903e900d07eee930 -MESSAGE = 838367471183c71f7e717724f89d401c3ad9863fd9cc7aa3cf33d3c529860cb581f3093d87da -SIG = 2ab255169c489c54c732232e37c87349d486b1eba20509dbabe7fed329ef08fd75ba1cd145e67b2ea26cb5cc51cab343eeb085fe1fd7b0ec4c6afcd9b979f905 - -SEED = 575be07afca5d063c238cd9b8028772cc49cda34471432a2e166e096e2219efc -PUB = 94e5eb4d5024f49d7ebf79817c8de11497dc2b55622a51ae123ffc749dbb16e0 -MESSAGE = 33e5918b66d33d55fe717ca34383eae78f0af82889caf6696e1ac9d95d1ffb32cba755f9e3503e -SIG = 58271d44236f3b98c58fd7ae0d2f49ef2b6e3affdb225aa3ba555f0e11cc53c23ad19baf24346590d05d7d5390582082cf94d39cad6530ab93d13efb39279506 - -SEED = 15ffb45514d43444d61fcb105e30e135fd268523dda20b82758b179423110441 -PUB = 1772c5abc2d23fd2f9d1c3257be7bc3c1cd79cee40844b749b3a7743d2f964b8 -MESSAGE = da9c5559d0ea51d255b6bd9d7638b876472f942b330fc0e2b30aea68d77368fce4948272991d257e -SIG = 6828cd7624e793b8a4ceb96d3c2a975bf773e5ff6645f353614058621e58835289e7f31f42dfe6af6d736f2644511e320c0fa698582a79778d18730ed3e8cb08 - -SEED = fe0568642943b2e1afbfd1f10fe8df87a4236bea40dce742072cb21886eec1fa -PUB = 299ebd1f13177dbdb66a912bbf712038fdf73b06c3ac020c7b19126755d47f61 -MESSAGE = c59d0862ec1c9746abcc3cf83c9eeba2c7082a036a8cb57ce487e763492796d47e6e063a0c1feccc2d -SIG = d59e6dfcc6d7e3e2c58dec81e985d245e681acf6594a23c59214f7bed8015d813c7682b60b3583440311e72a8665ba2c96dec23ce826e160127e18132b030404 - -SEED = 5ecb16c2df27c8cf58e436a9d3affbd58e9538a92659a0f97c4c4f994635a8ca -PUB = da768b20c437dd3aa5f84bb6a077ffa34ab68501c5352b5cc3fdce7fe6c2398d -MESSAGE = 56f1329d9a6be25a6159c72f12688dc8314e85dd9e7e4dc05bbecb7729e023c86f8e0937353f27c7ede9 -SIG = 1c723a20c6772426a670e4d5c4a97c6ebe9147f71bb0a415631e44406e290322e4ca977d348fe7856a8edc235d0fe95f7ed91aefddf28a77e2c7dbfd8f552f0a - -SEED = d599d637b3c30a82a9984e2f758497d144de6f06b9fba04dd40fd949039d7c84 -PUB = 6791d8ce50a44689fc178727c5c3a1c959fbeed74ef7d8e7bd3c1ab4da31c51f -MESSAGE = a7c04e8ba75d0a03d8b166ad7a1d77e1b91c7aaf7befdd99311fc3c54a684ddd971d5b3211c3eeaff1e54e -SIG = ebf10d9ac7c96108140e7def6fe9533d727646ff5b3af273c1df95762a66f32b65a09634d013f54b5dd6011f91bc336ca8b355ce33f8cfbec2535a4c427f8205 - -SEED = 30ab8232fa7018f0ce6c39bd8f782fe2e159758bb0f2f4386c7f28cfd2c85898 -PUB = ecfb6a2bd42f31b61250ba5de7e46b4719afdfbc660db71a7bd1df7b0a3abe37 -MESSAGE = 63b80b7956acbecf0c35e9ab06b914b0c7014fe1a4bbc0217240c1a33095d707953ed77b15d211adaf9b97dc -SIG = 9af885344cc7239498f712df80bc01b80638291ed4a1d28baa5545017a72e2f65649ccf9603da6eb5bfab9f5543a6ca4a7af3866153c76bf66bf95def615b00c - -SEED = 0ddcdc872c7b748d40efe96c2881ae189d87f56148ed8af3ebbbc80324e38bdd -PUB = 588ddadcbcedf40df0e9697d8bb277c7bb1498fa1d26ce0a835a760b92ca7c85 -MESSAGE = 65641cd402add8bf3d1d67dbeb6d41debfbef67e4317c35b0a6d5bbbae0e034de7d670ba1413d056f2d6f1de12 -SIG = c179c09456e235fe24105afa6e8ec04637f8f943817cd098ba95387f9653b2add181a31447d92d1a1ddf1ceb0db62118de9dffb7dcd2424057cbdff5d41d0403 - -SEED = 89f0d68299ba0a5a83f248ae0c169f8e3849a9b47bd4549884305c9912b46603 -PUB = aba3e795aab2012acceadd7b3bd9daeeed6ff5258bdcd7c93699c2a3836e3832 -MESSAGE = 4f1846dd7ad50e545d4cfbffbb1dc2ff145dc123754d08af4e44ecc0bc8c91411388bc7653e2d893d1eac2107d05 -SIG = 2c691fa8d487ce20d5d2fa41559116e0bbf4397cf5240e152556183541d66cf753582401a4388d390339dbef4d384743caa346f55f8daba68ba7b9131a8a6e0b - -SEED = 0a3c1844e2db070fb24e3c95cb1cc6714ef84e2ccd2b9dd2f1460ebf7ecf13b1 -PUB = 72e409937e0610eb5c20b326dc6ea1bbbc0406701c5cd67d1fbde09192b07c01 -MESSAGE = 4c8274d0ed1f74e2c86c08d955bde55b2d54327e82062a1f71f70d536fdc8722cdead7d22aaead2bfaa1ad00b82957 -SIG = 87f7fdf46095201e877a588fe3e5aaf476bd63138d8a878b89d6ac60631b3458b9d41a3c61a588e1db8d29a5968981b018776c588780922f5aa732ba6379dd05 - -SEED = c8d7a8818b98dfdb20839c871cb5c48e9e9470ca3ad35ba2613a5d3199c8ab23 -PUB = 90d2efbba4d43e6b2b992ca16083dbcfa2b322383907b0ee75f3e95845d3c47f -MESSAGE = 783e33c3acbdbb36e819f544a7781d83fc283d3309f5d3d12c8dcd6b0b3d0e89e38cfd3b4d0885661ca547fb9764abff -SIG = fa2e994421aef1d5856674813d05cbd2cf84ef5eb424af6ecd0dc6fdbdc2fe605fe985883312ecf34f59bfb2f1c9149e5b9cc9ecda05b2731130f3ed28ddae0b - -SEED = b482703612d0c586f76cfcb21cfd2103c957251504a8c0ac4c86c9c6f3e429ff -PUB = fd711dc7dd3b1dfb9df9704be3e6b26f587fe7dd7ba456a91ba43fe51aec09ad -MESSAGE = 29d77acfd99c7a0070a88feb6247a2bce9984fe3e6fbf19d4045042a21ab26cbd771e184a9a75f316b648c6920db92b87b -SIG = 58832bdeb26feafc31b46277cf3fb5d7a17dfb7ccd9b1f58ecbe6feb979666828f239ba4d75219260ecac0acf40f0e5e2590f4caa16bbbcd8a155d347967a607 - -SEED = 84e50dd9a0f197e3893c38dbd91fafc344c1776d3a400e2f0f0ee7aa829eb8a2 -PUB = 2c50f870ee48b36b0ac2f8a5f336fb090b113050dbcc25e078200a6e16153eea -MESSAGE = f3992cde6493e671f1e129ddca8038b0abdb77bb9035f9f8be54bd5d68c1aeff724ff47d29344391dc536166b8671cbbf123 -SIG = 69e6a4491a63837316e86a5f4ba7cd0d731ecc58f1d0a264c67c89befdd8d3829d8de13b33cc0bf513931715c7809657e2bfb960e5c764c971d733746093e500 - -SEED = b322d46577a2a991a4d1698287832a39c487ef776b4bff037a05c7f1812bdeec -PUB = eb2bcadfd3eec2986baff32b98e7c4dbf03ff95d8ad5ff9aa9506e5472ff845f -MESSAGE = 19f1bf5dcf1750c611f1c4a2865200504d82298edd72671f62a7b1471ac3d4a30f7de9e5da4108c52a4ce70a3e114a52a3b3c5 -SIG = c7b55137317ca21e33489ff6a9bfab97c855dc6f85684a70a9125a261b56d5e6f149c5774d734f2d8debfc77b721896a8267c23768e9badb910eef83ec258802 - -SEED = 960cab5034b9838d098d2dcbf4364bec16d388f6376d73a6273b70f82bbc98c0 -PUB = 5e3c19f2415acf729f829a4ebd5c40e1a6bc9fbca95703a9376087ed0937e51a -MESSAGE = f8b21962447b0a8f2e4279de411bea128e0be44b6915e6cda88341a68a0d818357db938eac73e0af6d31206b3948f8c48a447308 -SIG = 27d4c3a1811ef9d4360b3bdd133c2ccc30d02c2f248215776cb07ee4177f9b13fc42dd70a6c2fed8f225c7663c7f182e7ee8eccff20dc7b0e1d5834ec5b1ea01 - -SEED = eb77b2638f23eebc82efe45ee9e5a0326637401e663ed029699b21e6443fb48e -PUB = 9ef27608961ac711de71a6e2d4d4663ea3ecd42fb7e4e8627c39622df4af0bbc -MESSAGE = 99e3d00934003ebafc3e9fdb687b0f5ff9d5782a4b1f56b9700046c077915602c3134e22fc90ed7e690fddd4433e2034dcb2dc99ab -SIG = 18dc56d7bd9acd4f4daa78540b4ac8ff7aa9815f45a0bba370731a14eaabe96df8b5f37dbf8eae4cb15a64b244651e59d6a3d6761d9e3c50f2d0cbb09c05ec06 - -SEED = b625aa89d3f7308715427b6c39bbac58effd3a0fb7316f7a22b99ee5922f2dc9 -PUB = 65a99c3e16fea894ec33c6b20d9105e2a04e2764a4769d9bbd4d8bacfeab4a2e -MESSAGE = e07241dbd3adbe610bbe4d005dd46732a4c25086ecb8ec29cd7bca116e1bf9f53bfbf3e11fa49018d39ff1154a06668ef7df5c678e6a -SIG = 01bb901d83b8b682d3614af46a807ba2691358feb775325d3423f549ff0aa5757e4e1a74e9c70f9721d8f354b319d4f4a1d91445c870fd0ffb94fed64664730d - -SEED = b1c9f8bd03fe82e78f5c0fb06450f27dacdf716434db268275df3e1dc177af42 -PUB = 7fc88b1f7b3f11c629be671c21621f5c10672fafc8492da885742059ee6774cf -MESSAGE = 331da7a9c1f87b2ac91ee3b86d06c29163c05ed6f8d8a9725b471b7db0d6acec7f0f702487163f5eda020ca5b493f399e1c8d308c3c0c2 -SIG = 4b229951ef262f16978f7914bc672e7226c5f8379d2778c5a2dc0a2650869f7acfbd0bcd30fdb0619bb44fc1ae5939b87cc318133009c20395b6c7eb98107701 - -SEED = 6d8cdb2e075f3a2f86137214cb236ceb89a6728bb4a200806bf3557fb78fac69 -PUB = 57a04c7a5113cddfe49a4c124691d46c1f9cdc8f343f9dcb72a1330aeca71fda -MESSAGE = 7f318dbd121c08bfddfeff4f6aff4e45793251f8abf658403358238984360054f2a862c5bb83ed89025d2014a7a0cee50da3cb0e76bbb6bf -SIG = a6cbc947f9c87d1455cf1a708528c090f11ecee4855d1dbaadf47454a4de55fa4ce84b36d73a5b5f8f59298ccf21992df492ef34163d87753b7e9d32f2c3660b - -SEED = 47adc6d6bf571ee9570ca0f75b604ac43e303e4ab339ca9b53cacc5be45b2ccb -PUB = a3f527a1c1f17dfeed92277347c9f98ab475de1755b0ab546b8a15d01b9bd0be -MESSAGE = ce497c5ff5a77990b7d8f8699eb1f5d8c0582f70cb7ac5c54d9d924913278bc654d37ea227590e15202217fc98dac4c0f3be2183d133315739 -SIG = 4e8c318343c306adbba60c92b75cb0569b9219d8a86e5d57752ed235fc109a43c2cf4e942cacf297279fbb28675347e08027722a4eb7395e00a17495d32edf0b - -SEED = 3c19b50b0fe47961719c381d0d8da9b9869d312f13e3298b97fb22f0af29cbbe -PUB = 0f7eda091499625e2bae8536ea35cda5483bd16a9c7e416b341d6f2c83343612 -MESSAGE = 8ddcd63043f55ec3bfc83dceae69d8f8b32f4cdb6e2aebd94b4314f8fe7287dcb62732c9052e7557fe63534338efb5b6254c5d41d2690cf5144f -SIG = efbd41f26a5d62685516f882b6ec74e0d5a71830d203c231248f26e99a9c6578ec900d68cdb8fa7216ad0d24f9ecbc9ffa655351666582f626645395a31fa704 - -SEED = 34e1e9d539107eb86b393a5ccea1496d35bc7d5e9a8c5159d957e4e5852b3eb0 -PUB = 0ecb2601d5f7047428e9f909883a12420085f04ee2a88b6d95d3d7f2c932bd76 -MESSAGE = a6d4d0542cfe0d240a90507debacabce7cbbd48732353f4fad82c7bb7dbd9df8e7d9a16980a45186d8786c5ef65445bcc5b2ad5f660ffc7c8eaac0 -SIG = 32d22904d3e7012d6f5a441b0b4228064a5cf95b723a66b048a087ecd55920c31c204c3f2006891a85dd1932e3f1d614cfd633b5e63291c6d8166f3011431e09 - -SEED = 49dd473ede6aa3c866824a40ada4996c239a20d84c9365e4f0a4554f8031b9cf -PUB = 788de540544d3feb0c919240b390729be487e94b64ad973eb65b4669ecf23501 -MESSAGE = 3a53594f3fba03029318f512b084a071ebd60baec7f55b028dc73bfc9c74e0ca496bf819dd92ab61cd8b74be3c0d6dcd128efc5ed3342cba124f726c -SIG = d2fde02791e720852507faa7c3789040d9ef86646321f313ac557f4002491542dd67d05c6990cdb0d495501fbc5d5188bfbb84dc1bf6098bee0603a47fc2690f - -SEED = 331c64da482b6b551373c36481a02d8136ecadbb01ab114b4470bf41607ac571 -PUB = 52a00d96a3148b4726692d9eff89160ea9f99a5cc4389f361fed0bb16a42d521 -MESSAGE = 20e1d05a0d5b32cc8150b8116cef39659dd5fb443ab15600f78e5b49c45326d9323f2850a63c3808859495ae273f58a51e9de9a145d774b40ba9d753d3 -SIG = 22c99aa946ead39ac7997562810c01c20b46bd610645bd2d56dcdcbaacc5452c74fbf4b8b1813b0e94c30d808ce5498e61d4f7ccbb4cc5f04dfc6140825a9600 - -SEED = 5c0b96f2af8712122cf743c8f8dc77b6cd5570a7de13297bb3dde1886213cce2 -PUB = 0510eaf57d7301b0e1d527039bf4c6e292300a3a61b4765434f3203c100351b1 -MESSAGE = 54e0caa8e63919ca614b2bfd308ccfe50c9ea888e1ee4446d682cb5034627f97b05392c04e835556c31c52816a48e4fb196693206b8afb4408662b3cb575 -SIG = 06e5d8436ac7705b3a90f1631cdd38ec1a3fa49778a9b9f2fa5ebea4e7d560ada7dd26ff42fafa8ba420323742761aca6904940dc21bbef63ff72daab45d430b - -SEED = de84f2435f78dedb87da18194ff6a336f08111150def901c1ac418146eb7b54a -PUB = d3a92bbaa4d63af79c2226a7236e6427428df8b362427f873023b22d2f5e03f2 -MESSAGE = 205135ec7f417c858072d5233fb36482d4906abd60a74a498c347ff248dfa2722ca74e879de33169fadc7cd44d6c94a17d16e1e630824ba3e0df22ed68eaab -SIG = 471ebc973cfdaceec07279307368b73be35bc6f8d8312b70150567369096706dc471126c3576f9f0eb550df5ac6a525181110029dd1fc11174d1aaced48d630f - -SEED = ba4d6e67b2ce67a1e44326494044f37a442f3b81725bc1f9341462718b55ee20 -PUB = f73fa076f84b6db675a5fda5ad67e351a41e8e7f29add16809ca010387e9c6cc -MESSAGE = 4bafdac9099d4057ed6dd08bcaee8756e9a40f2cb9598020eb95019528409bbea38b384a59f119f57297bfb2fa142fc7bb1d90dbddde772bcde48c5670d5fa13 -SIG = 57b9d2a711207f837421bae7dd48eaa18eab1a9a70a0f1305806fee17b458f3a0964b302d1834d3e0ac9e8496f000b77f0083b41f8a957e632fbc7840eee6a06 - -SEED = 0d131c45aea6f3a4e1b9a2cf60c55104587efaa846b222bf0a7b74ce7a3f63b6 -PUB = 3c6729dbe93b499c4e614a2f21beb729438d498e1ac8d14cbad9717a5dbd97cd -MESSAGE = b4291d08b88fb2f7b8f99d0dce40079fcbab718bbd8f4e8eabc3c1428b6a071fb2a3c8eba1cacccfa871b365c708bef2685bc13e6b80bc14a5f249170ffc56d014 -SIG = a9c5ee86fb06d9e46b379c32dda7c92c9c13db274dc24116fbdd878696045488cc75a52fff67d1a5113d06e333ac67ff664b3f2a405fa1d14dd5bbb97409b606 - -SEED = a75e3b6b4170e444781be4eeac3e0fdaa4b4356f705486bcb071a325ae071fba -PUB = 993d38a7d72f0aee15ff6f4fdc37ca7724fd1373a3766b275dbc77e647980e0a -MESSAGE = 4037866f6548b01cc6bcf3a940e3945aa2d188b4b7f182aa77ec4d6b0428ab5b84d85df192a5a38ada089d76fa26bf67736a7041a5eb8f0c5719eb396693c45160f8 -SIG = a5db4d3d3329abe3697959e6b5947ea8601b03ef8e1d6fe202144931272ca0a09b5eb0f390572ea7ef03c6131e9de5f16bf0b034244f7e104ff5311bbf663a0d - -SEED = bcbcf561ecc05a41c7d7e55e696d32ce39b4d03c1f5f3f3a8927fe5e62e844b2 -PUB = 4ddf53fad6a7a9ed30f3afecca136fd7843b72c243090891ae4021a32cadff1a -MESSAGE = 6f6716b6784740980aebc3248807e31c1286ac7b681c00b66c88ff7a336d441fa5c3eb256d20cf6d1ac92ccfe4be6dcc41b1aff846d360c243001cabdfbf1a9b240455 -SIG = 9ff15115f6661f3211d7a40764967629ba6a5263951bdc3c6a4c90d070f7be00024b80d83b6bc27587fcff5f5ccc0eb3cde1497cf56895147a063f61f08adf0b - -SEED = 210532805fa9cc9be916d213cac374e3cd6fc2602a544d0c1ce29d30105d69ab -PUB = 10699e499be99e2b11b98f6f86b67cdc4ccf69f3c53ce094875647d2d0d0ecc5 -MESSAGE = 9fc4d28cfd25e6c0c5e724e19ca39d71e53bf4aa2796c54c3351f108fc70f2611a62e0ab90af6ade5216788e9eb2a873059b1e79d7d59debd68f2d4d80ffe31bf74b928c -SIG = 4c2d31d5bbc42e026dc1e079ecc4dd072c5d2cce65e3db8d8a1dd9057faa0371727f727231a0f060fa27097533b6db3b8f6252f2793d75662caadf5f0fcc710e - -SEED = 185d64b69479e0ba0a5844a10ad84125ba11c4b40d63eda2c57afc7e019c8e0c -PUB = a5764f6398a5ae2266a38f9714533c4bbd8d07826f63e204cbac374b0acef1bd -MESSAGE = 4a0824fe70d4315413d0a0cafbf4f5fe117d5e07e1c3a4effb9d0ae91490234878ccf6792a91f68c6a520de16071f08abe35dc5ea428f1957b663371ce24c609dd55b8f493 -SIG = 43e0387da5ba09a190f6e7b2680578d889769bcc445e5ef571b492871c155c5b9f620bfacfbf2df1fd87444604b71b2e237baaa7ee2093ede4a601edf883e307 - -SEED = cfa9d9164b3c4f6f722635d2066cd7ea5e5533d2c74f8add669c371faa476426 -PUB = 41169a66f9a63f285782a6c2db81cc3f70b3ada21a68c84745c88a74c3b0a2de -MESSAGE = 757621b1675db7cacef7f2782587ff3af51a3ef2f4bcf9279c4ce94002e1f00424bf0eb621982cc85cb4d171e564a0c2f6e3567a1aae2cddb7e9b25f47dc20a51050542969ca -SIG = 01d7c9b5701af71e2f4877ffc9b7b5305f52816d4458e37e41c7719fac1d76a01fff3f50fe1a5875ccc3fb70001c947a33fc8b207de13572ccdb8ba98933ab01 - -SEED = 1acb4a256c2f8993ca24de1e0014606d668b5e756032d269f1d24d351c8eea4a -PUB = cbbdcd8cbc885ab43a057e5f9579f1161954159e7b562ea26cd9a43c88d3f96d -MESSAGE = c46a6d61aa0aed1c1d8547a70b89b7196475d5a4870881b1ecd0f0cb9c745f8a2adc8024e2dc55b53aa5d383a81aabc1a47e8d07d00b7f0b56ceddbfb1f424bb5c02184678a666 -SIG = 05aa76f7fe51892303d78914715995e7d768ff7714ce270f175e56af17ae018d3fa939f5f620de82bcd1549687b205c7871203e624238c4e309fab7f92fbaa05 - -SEED = ace3c46424823622979fc3a84a7da69c1d527d8312e8fb018375bd3a96c29c18 -PUB = 937cf34136d9e1cce0de11b12c70cbfb7455448421e92c82e7c40934bff8c676 -MESSAGE = a9f137bc9021bf105aee25be21cd9ee5b3547cf10cc5f98476fb588bd70e2d6d6b0834e842e4ee94303cf96b09c1715381b36e14a491b80f895ea421b8ec2b1d3c187e02935c5526 -SIG = feb8896dd3fe6001ffea171b37b788a69f7f850193a63406f56376dd263d099aef80ece67e2c43f40eca462c6b71e79406b18db74ae5d49844e3b132bc2a1307 - -SEED = 88f681934e33c35c07dc6e5a832942ae3d59903ccde2f76ccb7587cea7ec41b6 -PUB = 6a4e8aa5adb63d22fd7b14a26fdb03b7c8aa6ccd5a196f2c54b0465adb5092e1 -MESSAGE = 6e8bac1f853b81fef94707e18cc61c6f0a9cbc2a41d078dcc83fc0229c7f8dbe6dbdd90854b1f1ae2b9f2b120b86a8786b4e78ce23ab86baaf88754af0f3d88881dae0bc5261bfd038 -SIG = 45b27bf1b9eac06b62b686f6d546563b2dfe5b175dbef32bf78c35a16c958a9d4f26d291de9bb2066c0a286113cc09172d40a36d4cbd951708860226eb30cd05 - -SEED = 48050a6e0158f6ad253412e4497cff62d5ee555edffe59e4dc401522813295ce -PUB = 975e010abb9a3e56659137b0506057f283982f886ca172c7bc2c500ed9bd26c1 -MESSAGE = ed6eec29fb7049dff707f0a4426ebc8f5b350e95870b9d6198c8139e9c3e1e409937d1a858a0dea482a5cb1a854ed3b5a9397acb63bff6b64039ef2eb1159e99858310bbbd86125c3e0e -SIG = 7216ab60c35168187d0fce4753c86e80058d540b76bf95843a5898841060a99a44de6f439625a3f6365f59c377bf45909bbfef5c50b25f3194e5fbd34ea5e706 - -SEED = 18d13d0c00e8e3386a5cfb30a9e79fe88b1861ed2d1201eb170038e194770403 -PUB = a4afc833401876090d9b880c41267d68cbbeeaa38afb20884e27328f3b7f535e -MESSAGE = 910f6c272dd97931ac47310d244cadb43251365e02ba9f6a5b3c3226be9d7d3a74a2ba4906e8e71a4bf3d3556ebdfc666cd6b12f20c4a00834b88fbb244575199286b0b9344cf334aff007 -SIG = 033988154c5d79d2510be83e778015dfe2fb85b8111f7ec139918b5400e3d656ee80a9f5c9072b5b467a5cc5a57cc8ad1062b5bff10862d9d369dde2cc966701 - -SEED = 4adc8c28646a93a817293a14d29b48e2c6d712a68993547a5c5e4d1452acbc3a -PUB = 7f40473628f23fc0dff0021afd487740d4916a9122e6c97d36433e5ebf04f88c -MESSAGE = 09fb5501f1688f80a0ab9e22d778ae130acaf74d7f5185b4da198c6b9edac4302e2b753e578766e17d4056dc40d95cf4ca8bcc6565795e97d68bcda79fa77c493397716356164caab5d19cfd -SIG = 6d3b4e90ec408311f9b15b9253d3d95c5d152620c260d56302555a8804a5104ba5e8d29ee108e764a64219297298ab7674bbca784dee28773b34e185a386c208 - -SEED = f26e1c84697a4908151b447dcf6c7c7a38b04081db9e7c7738e6fec900bed0c1 -PUB = a86e1422c1235ff8e1aa083470d5e42288cb007ab50e795dd0b4ff87394966c4 -MESSAGE = 54ed47606a1487c2f900cefb6e899dbaf6c31cc88ebe3558b83b93f6d422c31e888e48e520eeaedd7e554a9cd40c2c519d533b6144cee484c389e976b1e4022b50e7dbb87ead7e541a2004daf7 -SIG = 44f3344b9566c9dfd22d6198e1cbf95d9e28f2982fc7f166ab25dda30c46f768c558e0394fb9ab3e1d4db4cf487c17641a13f3f48939e0c64827a75103c57406 - -SEED = cc0c33f3a86f5a17d30c186ce0f3b740bafa5fe3c7090f143541e2b2c1e534bc -PUB = 967a71c7cf9b82cc78cbe109104d8b438a8d1fd71d260d029046a9a4526866ff -MESSAGE = 1944e5e155d75e0d0be92e1be14cec370ad13791f2bfd40f271214e94fcf213c71bc20d7ce0c7584421ac4efc451883cc3f4956f21f73a4216720438bc38ff2cfdf3709905a50a9d94b1d9e7932b -SIG = e277b3dd655c33ff75fa920af1fcc859401e6c7a6ef4c6bfbfac5069638f19ca115baf13c09c82af793facb6abd0cd58e8481b08c1b68ad7a2665c4a614a2806 - -SEED = f0bc979375a7073068dba7f6c094db6598b4e45df7d549583c22fded8048fa2e -PUB = b42b6c57a78f1d90090a7181ab2ae09f426cbc2be96eb2cf27abc70d7d32a4b3 -MESSAGE = 27ab3049b5c6351f6cfe38b13a059f5037257ee3d65d6079656856edc876ea081fd8a9480466f8839478088466f51ecbfaf2d65def25f0c4dd8d08588202812232f57945df8a6fa161ed8c0343b583 -SIG = 19dbc3027f9fae707deb76f588f9fd07aa8eae29bd4e1d04c2c984388286b3b122248a6c03ed67eca35df4db3dc1e4237f267892518497d9552a21de19b5140f - -SEED = 3022975f298c0ad5ddbe90954f20e63ae0c0d2704cf13c221f5b3720af4dba32 -PUB = b845bce38e26ab027b8247463d437a71bbddca2a2381d81fad4c297df9140bd5 -MESSAGE = 9aa19a595d989378cdc06891887ef5f9c246e5f83c0b658710673e4e7db760c76354c4f5d1e90db04a23b4fb434c69384593d010e312b11d299c9f97482de887cecfe82ea723bca79a1bd64d03ef19ee -SIG = ae14a860fad0051b3eb72b3721a82f7b9546b2867261e2b7b638979e2561bdeb89b600768f82450a66c8b0481283fa21cb6c53bde350effb68a7d1114bfdb203 - -SEED = 0f710b6c481f71449589753312ef64932b4652ebe0e07597f7da1c4f3dcffb80 -PUB = 6973ff2932ccddfc1d16c4c0da50c8b29fe6452d1ee84d52064ebf3d628d403e -MESSAGE = 85d85744ad55e9ef9a65ca91e85c8a4f80e4c58f8e4e9354e833986098b7d9fe9fdc0dedb0d75d2539fba00034fc0c2e84344d1edaa09d4f63d5546d67803dd6b54ddcc0b1d3f2582dd75289e31de42e69 -SIG = 02a8d26aee11420fb4f09d1163e14b867df7c6f6c8f8dc7a78034659f0401cad0aa90397efdd0704b798db1936503026e2a1adc297e27974d4be312a3753f804 - -SEED = 7a05f121f60112dd16fee8c91bc2a11479f4b67ee33456042c8de167fc588017 -PUB = b3b05be989cea7197505d4b54335e5e1d77a4b52ba7282604bbc1cf6c4e87a6c -MESSAGE = d9c59e8cc4ede537be2122ab492a5b915a9b0a114b2ade356fc0457ef98722d5f567b86211e28369d14168ec4a3c804076e154adc70a668cf64a20d13cf190d115cd688d036e46938251df4964dc3517b10c -SIG = d30ce8a322b450a2fb1afd329cec8559ccf112bd83965f9ec4736270a0914e061196bf5209778c9f8ccf39c4668bbf0e1363f81afe45dd74e80d5875ddbf6f01 - -SEED = bf381f8dfb5d0c6d64e416ac23e0d0fcb86ebb899b1d146abd911b92a7808eb6 -PUB = 863fad8d1f1bc630a15f6fe8ecefe6b4497b60b21ae8830da46742045fef156f -MESSAGE = 8654f2f5c6dcd2cfcbb6ed8d2bc5fb5fec53e3effb0de65aac507fa56c897732395aa09946d3b6586a92edd6dc99315e1ba74c6a0247c4ba7760b948eb3c0932d9fe1f0e9fea6eb61a548a9ab48ffdf1547329 -SIG = 99b75378738fcac8067669e8509b5d2607e1ef76af9004e13fe5d3932df60b168216f58565340fa4d638055a89044ee7d45e2bd082a53382289a34700648980e - -SEED = 36983241a0a8e60ce02a61b3fafab15a7313a5a270d015b9c9ec070dc42deeda -PUB = 6647984d42b9a5b3b1afa3b7f8f49d4c2b05e38984e99cea8fd68235d2ae4627 -MESSAGE = cebb9e404451818253c0392a4554ee7323c5d5b8b226775700b806ed5b91337916ea7ecbc3d4103fc65e5372ae7e5f9ba2d8f5aee24ccf6e631ae20c4af9b5f728cdf89e8189def1a5b3d35347aa203525ea1d2e -SIG = ee37df8af422f91f85dfe43efe79f62378068ccdbaf3916eecbc3adfed0508bdebaf5ce06b3bc279f78087f0db8db3c6823edfb32c12217830be723d8872b30c - -SEED = d06899f93a408dacb41c969718346f1e289bb5ea65e283ff79c705a074517c35 -PUB = 46bf2a08a076c47d7f11b733f8141c355363ed85d7def26ba6a0ce15ac5f2be8 -MESSAGE = 0864c39ac4fda8eb9048597bd40be0401021fd2dd3a3390a8facce984b260a13fa2c7cfc00d192fadf134a0ad5a181ee89eff0c795eaa0fbfe2f3b26115d07168db42ed21a51303b1958e4a42dc065b22ce48f17a6 -SIG = 6f89de92a66bc5f4144339124950bdf588144cb372f6736245351c9476becc59a258f9a933ffff2bef4b46cd1057395225799fd09dede6823db0e325dbc8140d - -SEED = eebca7966970ee9f2cc4d74c6f1d8e0ebff7c45aebad349fb9f86df628dfff0e -PUB = 89101e0309f767e64ae9c98c4a5d8d2328fb3ef262d082f49b64ca209e1990f6 -MESSAGE = 0fac790adb9f59e5cb0ddcb2b667172f2a21034d93bcaddf188606fa9e776db33a8fcc6bd7f5567883fc0de351aa9afaa36d2075b1ba853bada849b8661d5c8154e7b0afea656dd15e01a9c5ba21589b02f8fc5481c2 -SIG = 7d447ee5328c9fe7f11936cc42998754a56cd1d2a6951af4fee7c4a8eb319d4923707c793c55d79067f822d5b16bb5776e38dffabc67237a916a81a63339b003 - -SEED = 3820b6b15939d0afe18c9cb3d9a2a08f167dd458eb6c7e3f1558b0c6db4c6890 -PUB = 80b85c6559fea8b400e1999cc5bfed507ad7fc294cd9ba0ce2dd2584a91089b0 -MESSAGE = 3e5ad92d44b40e8614d8087c9c743de0c0861a07f1f5146d71cac2f3740024e841cc2d46027cf5d261d3ee7c1875b39551017b5fb1468114fc3e098a899cdbd558b39f098e156b6e9801ebcdd65fed56dbfcaf2c8c787b -SIG = 823ee2c0c8d87faa0ec0141e9ce08b51e57c839792d1fbd97a967207fd415849ebfb5dadb5a1dc2c0a8b7fc63fc354857b8c90c44720e13f45cd01e7aa23140c - -SEED = 0d20fa4a37ff30c4dcc3e44ea7ac501137e5807e9781330ac310982cc3d39dbd -PUB = 67bb0a01bc8617b491eff1a326c1c70f7d0c5b95a5ad48241aedce1c6f0883cf -MESSAGE = 35e0f4b4a517f9c7aa4514f03e6d65f19b27c62cc069f6bf07dd6378bd6afe2b766560006cbd5730a00919ed11191fb0c8dac56e153fc1cea4bdce5046cccb717759a4083e1c16f740763264cc804de0d0e1a4b5a23067af -SIG = deab12ed82ba94b469ca98b66fa20444b4b7881c4f0f853409c9a1504a5b2b6d7860f26ada6bf73459b9cdb573c8017121338efa60f4148086d7a3a8ed59bb07 - -SEED = bee161881d819b370d240d509ba46b06fb828e20310d9f6b309780703e98927b -PUB = 10854380de89162bfb9f7835a2716a3a6e0265671b250b389d01c3bcc03736b8 -MESSAGE = 5a6fe599b6b09b05c0ba6a622df3a92b3d376d24d04ea85ebe767bc2ec4d14e83e6937dc0b914b4809fdb607906841a6fd1dcdf61aaea8f9bb81b2ccaa32df412989ae53646680a71a211c8440eab0f1aec5e4fc00e6a2c96d -SIG = b07d072eb3831fae8a06effa9201797496dce126b8e11fef2fa07f664dc5cf3d4bf9c38a8b3c09fb5f14fa2deb219e7d852fdd27c7ba32d309942f2746dfe404 - -SEED = 70150e9516164a3d7b7e8b6f255b65cac9f07459b32d11bb94b3d277208abc99 -PUB = 2328bec8e40351047882e8b43bc1ab085386fa47987e46ea87608814c5da713c -MESSAGE = 77be8eceaab431a13c2a28d0d1556489d8c392fd7ae41157f7caf082cb54e45f08626be0076be844d38fde901a5eab0e8832d69dac22fb8507fb8ec4faf7c88fd26da308461afe385987972b5e760a34a5e18b9a82b4aaa529b7 -SIG = eda3f5033ea7953a0d583c6457522e84ad78445304d48e577d4d69e8641febe15248d8d90ce0944a8f801d39099bc77494bac4ce2a20b38369c6adfb71e03d0f - -SEED = 3f87fcfdb421422a9c5fb98268313c15128c78844ef9eb3b3713fa77b6718903 -PUB = 533ec59228374bd03a4699e3a8896b86182fcf8fc3085fdb8f5c4671524d6fe0 -MESSAGE = c00fed2d689468bcbacccd446e8d8f299e2a86925e62e59709afaf4857469ff1e006d00fa3e18a3615f8f06b6ebdff785dde58851d2c239038a0c344dce985bd1fc8deb4779ae5f8932e2f9ed5990b6472dbe4e6fef6917657e0b5 -SIG = f6519d7edb6134111974033f03b8d89e9c76caec8965a8e17cd45fff19de2615d73eccdb4a6664a8f0e23adf98988e96251bf26eb7a4ccaac1079f0a772f9b05 - -SEED = 44ceef044ff998d4abeaaf374eb41d086718b63097b1e35f89634c14897132ea -PUB = e83c86677d03ed3a5e8c95f41f0b325ff4333702f2ff6936f57ff30aa31485c7 -MESSAGE = 8d3e2dec4644c7b51633b13e6375ca42ff9138465f43d7800c7313199f67c9cf1b520b1820bd630ecf1c992e2767b38eb5bbc441a4ab8d317db441db35a0fe3abe7a9e4541881c2d7b1a2612306959815d1da41267d9649dd4494ace -SIG = 554552d6b790d421d06b0a67f8e002ad7a1ed01c06cf00cbeaec2a268bda29f1183f0ceafc625fa5fdb847dc86fae1a20406e459d4a0177cb515220a568e0800 - -SEED = 98ef2a44d4c8476dff05aa78dcf9c6dc086cb2f622a06745d60cbf223faaba66 -PUB = 42fdb1daa39f0159119beec1bedf6f0394b26a2a29bd1fde081eccdadecc226a -MESSAGE = c8b5fcfc3c18c7d95957b668e91c731d50c7fcea4f9575bbf784625870e238df546e2cb1a19d2808dd5b230d3871fdec16100ee1fbf9b722fa3744a750a3b396b05f9c21b8c0f61ead57a78c5ecf72b579cfe88a3f404c8acf524f9ab9 -SIG = ab5e8724a3e6ff76058cfb214d574e04d05574ecdd4ffe8c07c7af396e882687c5d79ef1e62fbb4c5f1bd06b9bd897826edde0d111d918e8ef961ff2a00d7700 - -SEED = 93a8c792a239c931917c114824a0174f8bc4ebbf98af8c7e321e0f5bea4015ec -PUB = 9b2eaa8a9c2c25ff4f6e13bb12bae5d06fda0eb1105fafae5880ff168740bb74 -MESSAGE = 901bf4e041caf16e04f2ffde8d6fe97e93d0900f6bc0fc09a9a0179d137b4b7788e57eb92766a9c634f35adb5c2988af1e86208f461998f59cfec99204b484fbcad3951e7ee4405523705d9739b44307db03f713fda78db421ef3121b3ba -SIG = cfe32c4435d911d772dc0727e78d689d0164c5069597cb441b22c1d26236479f1afd7089121b9ab4f61bbb1fae1ab42f7635a92a53784d7170916b703aa5cc09 - -SEED = 7001fa0c4404c28aa5b5fcff30a961f21a22f5b85a9e382e07aea8a8924d0ec1 -PUB = daebb63c4d8f40ceba8ec35e3dd946a6b75bc74fcb29ade7b55eee3cc3aea5ca -MESSAGE = 44f48cfb02f08777a57873855f96be4c0291323f2739b275d90757a15472e5750436e0107408fe3026c00625689983f990eba9becbfce403ccd56356ad2741fd21445dfb23d76112e578b3395cf9d960955f1da8f399ca286f21390e25a59a -SIG = 64eac9ce87460618636b41fd2decc1673bfc48c5f479dfacb51e86686407374b1d10bf65d6d7474214d7770c9e5c7f806c80d53d48b720870e5e78f32e3a7e05 - -SEED = 3adce3a3d3fbc977dd4b300a74749f13a3b04a5d73a2cd75a994e3195efebdac -PUB = 6ff19b1f18d64851d5c74845c6407f0bf596a52e385e020127e83e54cff5ac19 -MESSAGE = fe6c1a31068e332d12aab37d99406568deaa36bdb277cee55304633bd0a267a850e203bb3fabe5110bcc1ca4316698ab1cf00f0b0f1d97ef2180887f0ec0991e8c1111f0c0e1d2b712433ad2b3071bd66e1d81f7fa47bb4bb31ac0f059bb3cb8 -SIG = 7dda89f85b40539f5ad8c6de4953f7094a715b63dda30ec7cf65a785ceae5fc688707ee00be682cecbe7ee37d8fc39ee6d83c64409681708a0898a183b288a06 - -SEED = 14803c1f23a47fcdd35e5d146e20ca630cd712c047d5330b652e31857acbc9e8 -PUB = 36f2d5bd6d8324fa6e9db7f7d854ebe48c0e6299998122e9d44b8adbef54f093 -MESSAGE = 555983679d026e5354b4cc055ae1bc14653c7281ec722372f3feb778e841da821b3d0b8ee7a9a9129ea06824be8379fbbdcb0748f423721ccb172a1bafa1d5ae9fc1c51e93d41dd551c3086079b620286c1c40c1223bbcbb76722e92ca21d8410a -SIG = 07a7de6ce97664b3ea0928e1385c3309be08a47cbf4daa9186a1b948c86fbba39c4efcfcb7a0a3866bc94c6788ffe6be0d4972e56d0c3292d1cc6e25447b9904 - -SEED = 1a61154d3472cd96b328ee674beb4fc86763a969fb410494e0678414e31a46a6 -PUB = 7576d93ac85d0fc61f258c55cf90bd87a635099c0e810ed0b937258d13b42559 -MESSAGE = 64c565efbcb8b9528ed47253f3c6a4035db781d6f0976b5e5ba8447d4ed54b04105293ef4c000d8b2e1b5b75e727e5d2a077743b50d183b491764801a2504d16ee6d7d8ac4fe40e6bfc2a8129c7285a5ac691c35e642ed162cf7fbc64516733a23b3 -SIG = ada1666c9c3b8284b8a21c4f2618ef0808a646f3f10941e470f738e1785e2de9fdd9c8cb526f945c7a8c6994f151b7d066581b1d755307947c62befc8ab7070f - -SEED = f215d34fe2d757cff9cf5c05430994de587987ce45cb0459f61ec6c825c62259 -PUB = 1ed506485b09a6450be7c9337d9fe87ef99c96f8bd11cd631ca160d0fd73067e -MESSAGE = fbed2a7df418ec0e8036312ec239fcee6ef97dc8c2df1f2e14adee287808b788a6072143b851d975c8e8a0299df846b19113e38cee83da71ea8e9bd6f57bdcd3557523f4feb616caa595aea01eb0b3d490b99b525ea4fbb9258bc7fbb0deea8f568cb2 -SIG = cbef65b6f3fd580969fc3340cfae4f7c99df1340cce54626183144ef468871634b0a5c0033534108e1c67c0dc99d3014f01084e98c95e1014b309b1dbb2e6704 - -SEED = 8c9f95083075a43fe426d19f1e87719b40043de88eb0ee971f70e10c7694ce4e -PUB = e91d167aa3ebc23e70aab45dabe905e416262f910e2a955dd8619efc74c24e85 -MESSAGE = b69d70e860f55c427ef2a71df36e05bbc43bb2e06463aa5de34419c6a614eea6695335a87526c1226488d842891d0574df343c9c1e17aed6958ecee87474221eb77a599ecb059344c0d052c0002a66e5a6013185af69a01ba5dbc660d36cae235f67fe0e -SIG = cac555222dafec76a0b47b9d2c586b3b3b9b3b9c8364beb3cae1e8dd7f1ae9dd74f22b8dd4ad2b290f81351a415a99f030f10778be4cda85d1d353331e70f109 - -SEED = d7eb1fba424feed100777eedb4874bf20810ad686b67e31d27ecf610609a33f5 -PUB = a25acb11a6c825713a085fa754692886a87d07fb9be1a53eb961728bb66c9060 -MESSAGE = a1d0f81e3d59089cc2b19e07d2fce43db4cf171faa642f3b0bbde77ae3d53af5c02bf8fc12ffb4e57f7c8a015d6c2d178944fae9f7c8fc969d4b77bea51876ae99d59e94ad2456e0ed72c52cf4e5340da17c44dbff86457a519b6fffe269066290d629fe69 -SIG = 2bf719682b07cc5ecc0480f37e9d123ff6f44c26e6958e59f080466f9cd373a16500daf123dc3f1334774bfc9fa84503b16dbf21a815c1ada6ebef4920461702 - -SEED = 4f6aeb35fce14fbcbb9aa8a4f6451bf95b98df047fa8c43f1ead3b404d3f928f -PUB = bf66a9edd09481db8444a176c8ce0578d2934f0cdc9734e86fcaac05bf3330f1 -MESSAGE = 2dfbb3f59e19ea17d44a5bde4ad227a1a351dda17af840ee0a75da21a5cca89b6d1c567c333e9cc910e2157e05e86ad5d931145064594c47baeea8663a34649c43e90eb95ca10f7d51597b378a722f1f704adf9f22e9f885b89d1f938006a2efcdb42aaff5e3 -SIG = 6adb07e364f2a455cb05867abc511acd9d658977f0cacafc92828e7b724f6bbf98bf0bfb29f4e5e6c74738d4fdd816d9252407ae4f3afc574c4f00614824e203 - -SEED = ef4a6762b400975204ccc13abb47344015454906850ff14940cbb83aa22414ae -PUB = eaca450996f50cfaf2bd7f9d7fa7087f09ad49664206a80bc2e5bbbb85bb668e -MESSAGE = a4b63eaed5a64a94f2cad212ce2ae71092fd3ea744f5bd89562b2fc2a6c9e4d7aa27add56264a5a55016610be6c19ff7d4989e9504740853012715a79ece9e12c301b3317c7d9b6730db862a4a1d28058e0f8b5ddd9738c7c62ea572cfe59eae08e2b8b6593b58 -SIG = 02697d44cad862f1daf5708205f450d408525b10c01ffd06cfee80374f3db16fa9a49c19a9844b345f2f9559ea74aab173baa078c54370a5166700c6dafb780a - -SEED = 55017e5f61f0c5bafbcde6f849f42a31e5e7a878c1d3f9126fc569fd417ea9f2 -PUB = 66914f74ed932fc881ff0166683f675a7c28a926fddd6469cdb3f28e6dec42cc -MESSAGE = 2fc84a0998fa6e168a866410bb68105df249a28cfc76604be94fd7dffff2fc1dedd220199465575e8df860190f16aca4084169be16c6ba32eb67042ffd4f230316a26b2624a42f8f90ad57f6916486fa91fd94ed68aded4e632430ef719446979bfaf345409c387f -SIG = b1a5e7c49b8fc6b4331e0416ce7e4ed59edd56300b802e0d72abca4a6fcb876c03bf331579124ae0d3fe43f7898bc87e93fc2da3970fc8638957d18c6613c808 - -SEED = 0553fba866942341217cf278ac57cb21acd09d9916cc6af0ac46941ea139d545 -PUB = 840c66e57c2d4f52a4a2796d2a53c5709b96a628c2e063fe6efd47f283ef5e82 -MESSAGE = c1fae6262a0e98a6b1235fcb62283b7f0a097f9d002416d318fefc60c5a1584f900ad0ab26ccfae0d6d84aa9aa2df16d4c117ea2724676cb866d4870a872fc829a7c2a5d21ba83340adb339a34c5184c7f5ead0f077289b33677ed6a1ba34be1994e25763bd1d9faec -SIG = bc3364c152ee5c808ac340f49ea2cc404e93517121220cce6f7c30a22500e41bcdb6e820480f8fccdd22ff9ad96da532802f431e94240fb83d4bceaa09b92b0d - -SEED = 7a5ac602de19f3c21040bcddbff42f6aee6f95c1b093868f48e50482dbf4f9c7 -PUB = fbb6c7531cda21e7d17ea903c4d14be6c68b4ca803a16bd87120f5aaf7dce1d4 -MESSAGE = bd1685419279eb81e4cf3c909031f0f09c5ffae7e2ce6ba9d96c2bce87b8ba0dd763231001e532c7ddd62103abf701288e19dd8f5302e8f5d31b64cc339bd8b7a95550c8a116fd486948772bd5af8dfd46001c59767b0d6bdce383a7078992d1022fbcaf90710687b9aa -SIG = 84101dd4b5e8ca3ed98c1e8a06e11d7e424b0d12ca714ee7374b64c29d51a2021cc77ac75389d9b0a646a447623d7d04d1241866b0ca6edd1b7ac015666b700d - -SEED = 50414cf549bcc55b5b6b75ea3782b2ea7c087b6a0106175e469ca2cc764aeb01 -PUB = d0f30c12e997f96e7aeecd1bff6a012ec388ebf8f3f4af664804d1638e4c346a -MESSAGE = 75ad77e8c54b0b05fb2d162e7cadb8a7528081b863f76a441b374469413e5714edf54f800496af0157c17e425583414d4361f2134171c0b87c22ce6820a4850ab49d99a9badce9e36110e7f3060118b3590f82b43771e9fbb081afe62227e024d98de6cdec028d7c49490d -SIG = b309800160de43a63a89a0acb8a6050059589b3eaecac20b256fece438042f69415d8a56883ee3836d3134a7fc1de64fa8c8cecc3ce27589f606058820857a0c - -SEED = 93cb00d8fe9c9777a683631f39ba0f48761482cf1c366bd863cf715101532555 -PUB = 87e94a1ea5258d61180cb828590ff1418a87d01e702686ba8abc2692c8dc3c91 -MESSAGE = 88d8538d31867813d88fef7228d49a7e950d738396f116dda1025f7913547c5d1dc5677a6de4b4a5880507b361780b61b43f7795263db22ff341645f2f5914fd6088c2811211ed4756ac019a6035d66e3170c1d82bfaa30596b396b3260cc1d10d413dd47ebe6daa0c30dc42 -SIG = 09824fa2dfbc4d6ef76a9e4145961116769130553b3edffa50d04f39b8b79facbd237acf71354a53a6e5fee754e823b0b290f9619320a13d561269a221639f03 - -SEED = 2b4cae380e95ce694c26ac7957447347f98e31b4bf02d744e131529071e2301d -PUB = e6fc705a79c98e115b4e28d3aa1506b74ee74276c5fc1109a7f4d89c6fafb889 -MESSAGE = e0b8250e27b7c0291dbc47a6da6f1268987afdf0a1e90be69bcbc4370865217830d5208693be7b7045099a22ea27f952eb3f79a9a0f1b5a87b19367790788d34c219c2e2a6b834020fb4fd149dc56b544fddbb42071a162fc7cb33c146cac05a31b183e9daadc616f3af449b17 -SIG = 555e45656ba9cfbf5155d0e52576e5197abbbc9dd233993eec2a1ee7f6a86409c0b71b0a661978ff5e0acdc9463dc449906f474f8e79bb86168bf70741e34b02 - -SEED = b56491e54999bb5a1715ebfa2feb14a545a3a43c2fdfd4be0c95fc11819ad695 -PUB = cd42bf414f9bfc72ec069882a800557cdf31bc3464fb102c310e6dbd3ae20863 -MESSAGE = eb4418ba30683ec7959bdb1ec7b263f83e81f054ddcdbe0a6738ca7763e246935bac419026c22bfbdd1236336cc16107c53513e3ddf34e120846962c3bdd54f5ad5749597208f15a8bb56667baa895f08340db89b85c435e770931928d8abc99262f839aedd9be2aa138c9259adf -SIG = e3be3e71a89852df3cffd72d68207869dd3eceb49b1f029493eccbb932444ebe8c8c6db5f0a5a67e2194408df9841913a5ac1a606896419a668f4f47c56c2b08 - -SEED = 6579c247dd2cd02ba2f7d7a950a330752681e92c0dc62984bbea279ea521c381 -PUB = 0b087bea1a1b3d15805cb604f4bb8d68edde274faf521fe6df50c55f8ad4a70d -MESSAGE = df7c552ffc89374b9571a6024a8d0471d7eb6be8dfca6f4166b581b65479015a0568129074cc04d6342c758ca18f7987dec536b7033d5f9681504340e20986f027b8cf1f263be76db3525d173422950ea8dceddc585640918aa9d25ca89cba701c2020153873f46108c772cb388d55 -SIG = eccaf801ae0a912e21c6b83a5f0e4e88d4b2713459ff93449fc0b21a9f416050113cbae4e814d20c0a798f76d2f9d326ed83959ea02abdc1ab350a467123f709 - -SEED = 18fba60c5026f3c9dd7aedc04209d5260361de400e190aeb60169e05a3367c9f -PUB = dfff347f3dd255530bf7fb34d02ba486d112bb46e950e2ef80e517014cc95734 -MESSAGE = 34f08a804d7829cc3914f000ce1a3288acce2149c8a02086b9f67afccd83a178b0bcfd4970c056997da7dc3d47562f16663cedc52f82d710850cf4050379efdac23bee17c330a383ad137f788473b2b0723603b6deb1fdbf6c523fc948a0ccc4ff100fb946d874c1f990436ae8c4f3b2 -SIG = 4bc011e40f0f59c618f6bbe230b6f7bc2f50e3617c7faab7f4c21cb84f77eba994cb7c2a1bf10b01bb20084497fdf0a6ab5d9bcd22c4a2c5a78f79926825940f - -SEED = 073cc15b0536285933b2be39253cf4fd696b81610f5dd3adac2e9cbf338ef2f6 -PUB = 00b551d371544375dac5c4e96cd1f0215207e8e166a1fe49d5b0a51ac18443ec -MESSAGE = c285362bc8ef628f7aedf654231ee51acdf2cf69a886b942bb9bfed8155105d9209ded2af24f169ad5fcd451370f5827a85111c7a52e032c5038617c0c0170e2a6c231dc401d12062edb186036114e38793b79089077581b9783f40007103ef17472491c00e7138aecc5084d3c85010470 -SIG = 3aa52a83062a8f28a5d6b7607f484b66cc374896b766123126333c579581316c742806f627b5bc55cad705cc1d4782b044080c8ac840f38c0c50d35e345c7803 - -SEED = fd894a1e8232203b289505d5c68c68791ffc0e54f2a87530fbba5b3a3f2caf00 -PUB = e95ab565945c7ae5d533df5d0cccc7e9abbc838e20a0b61c930f5d41d81a6fe7 -MESSAGE = 2669624a94f2c44a05b7dc3ebf93e58a4bf3a01c273657e7e7878976f6b6ea737fa3f22cc8365b8b220c007d5b642726a408fe2fab69ebb3bd072b349f4dc3377ee7cc752934254215d23989bd3cd02ce999adec9784993f4c19940815f39c9e229247f5205c36cba44e714266369289b4a7 -SIG = f51102219e8804be713e556df4e4afa2f8866fe86541a1c2a0934d24c3c9beb280a70dd8d527fe8b7e0b948214d5f2f9638619914b72d55dc198b0229a848708 - -SEED = 18ef464e28f87ffcfa4d3a9c09a22910951b8c719fdacdb56de62c4b406df00c -PUB = c5064c9d43ee2da75b06bb09c77267dbd0d39128f1cdc6bfa451a03e93af4a70 -MESSAGE = 9c825707d9358365ab9d38f7e728d628aa722a4f1a20a38e47c999fff8fc32417fbe072f96eb6a0e11e4da9b6de9615445280e93c77a3634d3d2c6879856c248f9800f60a0d38dc1cea8b7f31f286cb0374827b4c6ba144a6694f2b908ead68d18340124cb59cf1701863bd4f3efc709f3627a -SIG = d1e7f16e8e597d428adea65591d551b54b667aff2020c464f7f4e53c4773f70433249a3c71b4d11c89c3faa892809227b9f29ef4f7f5d020d4674d4021359405 - -SEED = c911bdf2f9e7cc5fff35c96e15cc12eafd05ab0db31f649f7408acd0cada76e0 -PUB = de44696cd6bd2cbe9b11a0ef18b88164801a969d5e06ed453eb4008cce9a5725 -MESSAGE = 76c471241d17192984b00362696e4d9d4d2b7f839c2064117e50a1598f3a1172b16c55e5396866084752024f3a7eb68bb3ffdb80979a0af6d0f6af26b6f0bc0c0384433bcfd44c75eb654a8a8225cb9c4a7fb3c824c3af6125fd46db287e70492d154632cb8f62432659d958d6281d04a54f5f5f -SIG = d584b5da371ae4f5c9859b25f70dc56c1b7b4e02d1ae6636283b1b7b11217afdcdf65d1b49ca2c8ef17966e9bc65f10c310b77bb5df7aff5ec1b379a2ce55d0d - -SEED = d3703299c41db36d77dd3a49541f3fb21d0b2bad1f6e074affd96f1c40d0f927 -PUB = 862c5ef616a5f066fd87758a56ab45056fea4bd33f008be24f7b540e095e148e -MESSAGE = ac92edbe22257bb06d94aa950e62d18ca2ac0a8fc106000d2231f8a13b8d7a209ccd8cc49a6cd68a7f36c02fb8f728d15595167f0ba8cfe95c8a1e435f327513014ac428b75d4f72e7c834dd70e1a448f1847d3498475f74e3d9334dc7dcc4fed72bf6c7fe3b1d4f53d429616f1df44f19733158b6 -SIG = df28277121eac44630084cce75917ae9f6bec65af5572dc30719bde661cf696b85b8672dd4983cab30bd05cc3a119d7db9babd522d7b3a6bcf3886ecd25e080f - -SEED = d411cd33576d0efe9ec413ccdaabd4fcbafec01a3af4b3cbe34f8b05ef8b59ba -PUB = e870344df98dd3a8702c4519bf9e8b35a9d189e746f7203dbbf9bbfab22d6f63 -MESSAGE = 11d2c2a7f0190988126696431b4bbcd90ab7b56a32da6404ae446aa762a4ddc66094971538eeb85bde0470a510be0d6d85780ee730a9854138728ae6816162268da852858eaed4ec74c7ac62e6e7096dc002df0bdf5fa40da565b41d181a3f0ad0c5e0b976743e315d9db8ed4160abe69c13a2b3f09a -SIG = 83460d15461d6717710bafd6a47a1eaa900a80f2bf8b8aae2468773614ee84bd628c9717476368ef3640cf760acac83ad60232a76963b7d52588b11dc004d70d - -SEED = e10a2f1380c3e4720e8a8707a9bcb25a0f58270d7059cd7626c7153447edfb87 -PUB = a3c717acab366a40b51187bbf35b2d15e97cfeacd7349c06ef1c91ac93e90656 -MESSAGE = 135212a9cf00d0a05220be7323bfa4a5ba7fc5465514007702121a9c92e46bd473062f00841af83cb7bc4b2cd58dc4d5b151244cc8293e795796835ed36822c6e09893ec991b38ada4b21a06e691afa887db4e9d7b1d2afc65ba8d2f5e6926ff53d2d44d55fa095f3fad62545c714f0f3f59e4bfe91af8 -SIG = 094bf6f953ca0eb77df45129b7bf10d192cf6ddeae94ad6202b8eacfbec119e5291578fe64a084ae600fe07efdb8a782610dbdb0b49eb5f2a46c432355552f01 - -SEED = b2e697b3d3efec976ef3369530c792717bdbb428d9ed0c11ec0ea9b2e5f39f82 -PUB = c4d2e4b3c236d6c9b8c74fa384612c4710d83aa16ad7ef01fbb7421d4fb3f0f6 -MESSAGE = 7b436232ac2111a84059510c48362588fcb7383426be5e6f62f372e4f7cca83c81c2357f9b54f4a15291065b6d41aad1ea93cffa776b9acaa58afe2b51644b97af9a3e53f84e40aa6d86051e6914cd039d4170a9a526dd69955ff507c33f74e2176591fb0b3cd7f00ee418f2c258a9981cccee72f01c8430 -SIG = 5047fa38197b8328e78dd8a10e966afb7bd3d43608280f1c257d25ca43bc1c06e94a5747ab6215ece54cdeff8c56567d70d2f91f9ec8c260aa1080a6ab5a7a02 - -SEED = 19a679a7a905a1e2b3038e6e418b3da97c3089c7cd351ea07bc8d1af64eacc46 -PUB = 19f08361f469b4ae1e0ceb94f47a7de7317410a92dd013b16ae0d0532fa4b3ef -MESSAGE = 980c7b4d2939061ac7b9ba441117a19485661781a4083067c55acf93026c082a93cc124f095e1b4f2c3f6c135412a5096228e8a071e8b4b668ba9d9644ea9f4dabfc54a9856c3e965e6363395ab709037dda229baf927cd01f9af5e039afc42f3cec634f5d832d2ab7c7cad3ad7b8cf27ebdac698431ad8236 -SIG = 4347b7b4f7c3c4dd315b8384a0b0caeed84bdabe24b2915f12512dfd04770fc996a1bfb729afef9edd611447081a5330617eaea1c1dab1bf13cea8997204910c - -SEED = f03b8363ee5b0eef7018a49bc02adf731da54ee50a7f03b88a29a2082b189c43 -PUB = 31287ef5a2e64104ab7790b312f35c7ad4af6beb0d7ceb8a58f36a54ce272c3e -MESSAGE = 24191b5464b35ac7bcf4a375f033efba8943b09b9ff0fc403ca7aae702a3cbf396c5131bc008132cf5f12910d586dc1db9c084574a96babee95642f922371c0382ec0402a26feb142e4146bbd3360c2b36834fe45af5e2868d4d56fdd504cebf0c2d7f5791b4429417c8b65a98e0b15c466c137f410524fce737 -SIG = e8fa967e6afadf6a877d87e5f5c52bb634b75a7804199a2bc9d027b63a35654d9ddd06830455641dbfb49edce42e20e7d4104a071c2cbbec23018c297ced9908 - -SEED = 11086b0d11e415ab1ce02aaf8f0621b54430f6fb135c74f40d38e8c64737064b -PUB = 7166dfbc691eb8c201114ba0d1a2c7b87f7a1fd8d0b36058b0d7dcabe1ae30da -MESSAGE = 4b5b2936c5e360a38455503721078f8adb404a7ee7ecc14801dc87a67a152b769569fbeac0afa25a2070a1686b900ac1633d499808cdb2e81ce3916d5a3c04d19c5bb2699a662b8aba4af94d390bac7ccc8ec910ed2acdf86ebb71adb601877885eef3c91662fc30738e352cc74353ccf8d8edeefacc042c10a0e5 -SIG = e907459d5adcd0d0c36418581f19d0eebda7138ebd9faa0b262201f458c856310bb77f4c7de922495dcfe8b248eda2ad0df6a73f47bbfb894baa7d8869875802 - -SEED = efce7667a8ef91228caed14eb477a345e5e8239234080848760ed0970713fa86 -PUB = 9193055a84df1eacca28ce2a08c2a07a50f04c024ecf1fe4a47d2efbaf63ed58 -MESSAGE = aa1bc80d7bcc1d94a23a57cedf5027482477dc46b86890bc0e5ac29ae6c91bbc43130348797305f75543580a8a069b348a7bd8fc3e015230b7c1940c7f80a82b12900910dbcf0630da03f081d44c7f955d4a1172f56ecc7c5ac646696bffdf4eb6d88bdd9cc3843528b72583abb3bad02e56ef7646eed5139551cdeb -SIG = e5a63124db1696b64140b6e9612fa9587b3eef710109398d44ba0ca63c0ebad06f0a6c8994ea34b3a2af91a89bf41ae614d7727d716fd42f8b92e1ac64fdbf03 - -SEED = 88fccaa96ad884d1165be71dd0c4f5f8f4421c60fbfa498bfee9b967462443bd -PUB = c75cb0e0237b45b8656eea9f3d1a9d4acd01a103aa269bb24fd54122fd81f2ac -MESSAGE = 9d0eac98556bfa8672c35705d1d61ac4d0fca19dc0d993015877857d27fd80f74acace666c563485d81e53603a6aef40875fa551cc105f2cc10b39694679cdf4a6b073bc88645fc51a36da179d3d1e3c7722454c5e73577c61aa7d148c4ba50ea46c56a1c3b3b3c470f93100494e08bc5514ac763a85483c42c7cdc27c -SIG = 27d3a197cc9994212063bce8d799e77b6853b7355ebe369bcf1889a418a82caa3a7987a663f621defe86b3ac4ad44faeed16c9116ace28fccf915557fa779903 - -SEED = 670b30626fe367d8b45f43733d6f25b37eccbcb551963f0ac8b666b48041c72d -PUB = 65aa4c6d4ba0ab34bc75b39f09527ca6f2425f52415cdffdf2dff273f8ea612c -MESSAGE = d00bcca7e184d10e1f1fe420b50639e1d5deba52a751236e68c59bb4bff9802f5fc165ed42fd6d534670a7c6fb60e4307d947915a248bf2f93465c2cb44d8f453d2c015afbc8ed58818ea51726a25177930e9ea192ef4514f4bb0eb4e0f5d4ae3c46e357c81187f7ed174733fff959c3f9fae6486cfa1356a95699211de5 -SIG = 1b6b4377d2b98e0f9d24ae8dfe30e2396e2004380d3431488e5843cf8d2d7a0070ab21f8a3b51ce84d2f4ba209f739f922bebf798096693f5622873d79ae6f04 - -SEED = 813c4daed67a190d68bb635d73af6da74f32fdf7c48cca6e59262946b8e8c71f -PUB = a2095457d7697020e2b884d95a96578c2a900a7666ac0dc7bd38f1931d7945d8 -MESSAGE = ce54cb0450e689a0dbef785308b3177472fcd6d38203e58a0590b31fa253f9ea590be5368a922de88b63450102684443fb8189e601282003323b89c81e92eaef2b5ddc4a55c53fa3cfad4160248b3c286ff80d31d161b7b8dee713552b56f1507fb72eadfa89054e9d1600ac874c4b0a961004eb6d0d4bfd2ecb9c734f00ba -SIG = b446574ff6a4bd2b572e487c4ab443ca641075168aa4e1092f71f30bdb068ce46a395efee1ee660b9fac26d54109722c15cdb791bfb87fff63c6596ad4f2270c - -SEED = 8400962bb769f63868cae5a3fec8db6a9c8d3f1c846c8dceeb642b6946efa8e3 -PUB = 98be21001993a7eb1a1277ff74c15504183d25fdfcc05f0d4dea892f6e301890 -MESSAGE = f7e67d982a2ff93ecda4087152b4864c943b1ba7021f5407043ccb4253d348c27b9283acb26c194fd1cbb79e6afc32ff686b55b0b3617218dcf39316b4b66b3c8c0d67267a86db8adf3750801bcf9327d4c25441b96197832b4cde0eac3ff22892a2f0bc17c2c213c02377a333e308ed271658049383b7e2e57b6b8b125512e0 -SIG = 0ad71b0025f3d9a50db338414d6d670e7799b7270a8444f6ae7f12ae7eb71bd03ffd3c4f36631f69fdcc4061468ff582ede495243ef1361a3b3295fa813ba205 - -SEED = 6288722035d1ea699bc7cfdf18d89625423180b683fa74639f4f30f15359cc85 -PUB = e17faa019572861a064e1bc571256dea1468f3a48590a89138aaa85925080cd7 -MESSAGE = 8b6caacac51d8949fb86acbcb1b99d859ff67c64147bc1216909dcab07ee6ef09f403863327394689dc34abc778fcb5c1f5091acf5a08f9d842211d1ae2eb40be9bb8d6679077471547a6c71ff77b519d4b7108e32bc46251c60dee8e332b6229316e6d57c22ab826ff1bc33f2b0213807c19280af110fd26ee27468201cff49cb -SIG = 9dec92b6e89adbe8f4e1b5e93ac4fcf957de7d1970a226770ec4eda647c8e3b3dffb2731a39e16e4a0119d3662a937e560522491ec7a1696be04c076b12e3501 - -SEED = 13038a3a65ef32759a9cd903acb554b252de00e7cdb77bbed1970b20680ee17b -PUB = b6a308e67f9b46c66499456ab5cd135cb2fe84a32eb045358626604da4122c8f -MESSAGE = ddf00b4033a2a088022dabe93356432f50ddc6c6e1a659dc1a93124a4c2ffffd182765a2f56c43ea0bfd8de8015060889ae6941c3f3e255d4421a1c36201be846a2738a71f120cad598ca8527d70ff8d5a0993b55cb5153517110a41962daff42250158f2096d1ddaf7186e50298cbe51fcb429cbea411293f8a7bd9cf069fa237e4 -SIG = 5261558ecc3c98ff36351f42f504cad4a32ffda5a744560960b4c106e4492f02e20478887afee4f770f05597a7e388caceae805ae351e0e45e8e578e6a6ff20c - -SEED = b9de5b063d3ca3a773f114941b2e4227c07511c0f5c06017b9c8845018f23432 -PUB = 5295243c8646e096674dda15979b322b9dd0faf27d024a0ed5771334e1179ed2 -MESSAGE = 9493cc23896b84096046ae1053afe39499e9424254b366fe143f4da321e2dc9e4784208e12a542d899828dde7eff625a7f12416990c2841ffb095bf94c0c610e5a663918b689031ccd6b519349d04de1c212ca2a9d7abf52e1b4fd467bb665b6919ef8f91617e205565bf56647e5f8d508ea200a84467f8fa122e74bc3b9979f1174e5 -SIG = 92ba760d14d1415cfaf218ca847014088ae51ad821113a6f8630356f7ba85c005e2330f1066d0df464806052a4174610050462f3e013d702e7c77185a032580b - -SEED = 8ff0297cc08842b5e67552ec2843e04353a34d74ef89b8565d97205b74ca133a -PUB = 0f7ef98c5ba4af984dfb77bc4e537b2b39e6273bb3e7b95fe1b7e6781952bd4a -MESSAGE = 2bdc3a486c5e4ea62dcfec8a9d4fcf9ea9490dbcc715615d58490a72ce833fa22387ca50a0052508cf0aff1ca727f0fed46ffa7d3c8e23c5bb01d47e90ff06d3858a557d9926481579daf4384aea50e96ec615d2a3bf3c1122f1f24dd6ed98a5de421883589c213998ca5432373e68bbbe89428ca9885d0593d5e6215116b8266386452b -SIG = 0783737f706e6ff36614f850074fca1f485f24fcde2a28af544f37abd69b7a581defd8c771b031e108d19d788c74c5f20bb3f1c21cd92be317bacd8f650b4905 - -SEED = 050d553d282dca3269c83c181768ec067b81c9fe0c94f2a0ebbb0c942d0fcd7c -PUB = 63e230b003c53a5672e832ff7f24430be223e497de840233f595a3e200c7127e -MESSAGE = 15e13b8c01004f6aa5b236dbb281677f746d81e548e0aa80f0e414521521d856cd694e7c9152bb5e43776b60f6b560ed1ad3e4b390dbf3e46ef9257443f39c149e0240a02d021e1e3d7d046b26fd004eee7ca16a8059e126c74cb3f2194db47bf60465ecef5c704d2e2c75e2e50060ea2a31cb72b7b3c6b1b5ec72ab38004085281a22fe86 -SIG = 3f0e83765b31bbe8e1fb92e9678d6cde571a03ba7f1dcc1128461f708525457f4e0e2353aa2b598c063ff1bffdac916b5a2200655156904b0585577a1628560d - -SEED = 69497cd7b4e868cfa0328d92bd6052d772b2767395c14595b279851a9cdd31aa -PUB = 5d276d626e230d18e7bcd61141cb93c90ef0f79e01321212d838ec71457b1aac -MESSAGE = 53cd080a0c61f1a093d3b3a74571c296303f363b4107edbe880b7aa9dfe44ab5d5dc5f74be9c8d876f04d754653491ab51b135fc953f71287b62ff41b67c742bd3445671a9d4f2dc174ca1b0335f78627a0dd4b30650504178039e7393638510ffe84091b57298d3ac9001c367c1452fbcb33dc54a5dc316fb2a5270764a2ac820a0b63fbdc6 -SIG = beafa58340960908e8d86e40329e3a4523fc7be770addb86e34c3772f84cd9fb338d1f3b65bfcdb09f35c6da36d1a3adf8f91f1ffd5782cc830206433a08410d - -SEED = 2165a486b612bbff529cd00346964a3cb8cdcffa51dc3d524dd5adc5ac936d68 -PUB = 7ebc839a465e14f5892476e4a13b3988f83b3cd27ef79e193f86fa16f34a1ce1 -MESSAGE = b728da7a36167c6085bd2d962cf63959facd95c9ad4542028afba90ec9c6c0760bdae935429c3feb3933e2f00042c672ad2cd7348d92bc33f81751e294ae9171b945b193144ef8acb9a1bd9abf0475ce0d0ac789b200c32e9c9a2736b168369ce5f97b1e8d2e7900e1a759178441f1fc430564ae129bae7857740511a668f32c0a3b077a9d8b19 -SIG = 7ec6fba56ba52460a1b4f2738689c1883dda9aaffc8bde17cb6029bdce3a0ebe2fffda55939b70bbd07fdbf6fc5cda87fed8ba58575f894a366e45e5705eea09 - -SEED = 1c64ad63dd147034598e128f7406ec0530746ea1c5b72ecf79e888065486fa1b -PUB = baa6bcc1c3d8d3b11ffc1587adddc58bfd96c2b992b6c6f59fcc50ccbcdd0eb9 -MESSAGE = 9ebd8e337893bb053ef2b9e3269df54848494f03cd63576b33e64b1080be4be015264a403fb9602bbf90ca19b241a9b66863909b9008ce1b2ffcf236efa4c2668f0f47db9ff5fa157d9cb605412be7dd8b07ea878cccae6bf50f935b86d19e1b648b69e528553a56d8afb78221ad53307b7a4ec8d2fd4861b55dc5dae8e93ef387fbbe0b4ce7f788 -SIG = 7477e54158f13b7128c0a110ca6b65f42514fb70cd5cf28a8b1cc6110ea06fcf94290da13f85a11c2351d3bbccbb4c64e0215d6d0f0099e7f27bc94e949b150b - -SEED = 55abbc5dac4128134dc8c6018a213ed4b60fcc8e90cbd41db2d21eda5373e936 -PUB = 251afaa2646926b2a371f2a09d5865b98c9a5eb6ca047cd0d8ee36e5e0416974 -MESSAGE = 47010e1398ad55fabe371dd8648f768d90df4b965a3b396100b303b40a17518bed6d86b09f734ab7c10b5f3a01b53deec5f8534b70c79f3f29b284fdec486f22f44c22ccd5c6463594415267baa611f70b1b316caa1b68b5e0e99b31c5bb0ce13679a23c31a63999698164cbf37d103ba92490188be59937f123043ec786efe3d411f9b0623a6ad972 -SIG = f6a61c2e661a9eb7bde182e38ec99af985f61698a5d7fa430d16e3f1a93709b75522320de48afcc595ab209122ae0ce132cdf4b0391746e7ff341177570c8108 - -SEED = f2dcf4a1a0d46ddb2d72f8fdd80bbec5b7dea5913da4966c2f4d12c261f0bf98 -PUB = d39570a25ca59f2257f93f96600df4f63e684bf63ae8dffd914e4629c3d5095f -MESSAGE = 3b00e808fca4c11651d853d6b90f952ccf5647e102d4ee0ad7a5d181d5b4258c523cd39e3d9825298d84c8cba09f43dbba119988222c76059caf17b4bf9931c45e617448aeade151181497b24552367e52bc45ac79088806d3368207aafefd3057845dce819d5aaaa77b218e2aed3da76d40c1f07699f8172e4a5c803f7a2aceb9a47a8952e1b2f053f2 -SIG = 42882a811dad2d851885e4cbe9044708d91a86f15dfa1d66c3eb304314531f3015208c711b9bdbc5fb233951e569b59d34e415eec4b37ffd374d412c9a360d0c - -SEED = 2246bfb06155859e10a748ff8f5919ad5d1daab756f01057b790d07474775f4f -PUB = fa6349b62dc8c6a2feeef6ffc33ae085c649795c1c9d9898e75c13ae1625db34 -MESSAGE = 63ee1c7bbb15cebe1c22532d481682754bdaf58b8bc997ae30a34c9d23c33f1690c346ab0a7365ff62457424b6105f8421eca0ce3c630acfeb9a1cc416390edf4920e22b2367e9fb5d2ab25bee56da03ea55e3f57882d48b89229314d734cb83c79f4e17ee64bae6f7addbe9b525fcd03a91409a2dde907751db8cc97e08d0ea89c4d18718d26d0b897b64 -SIG = 2be4915a352f7785483046d8ae9625b8b63257af57c073691256ee076d6e1b972a101f551c705d3f96157c33b56ea049be4af4dc561cbe3c1ec5072d7f134e07 - -SEED = c088a3dd2cb8bd5d684db8538dc22473b6f014f64fe86af168b4bb01b90a1dd0 -PUB = aad615a9c28759f03d373abe666691dead8b84f9b8b50a67f8f0aa4a701580d1 -MESSAGE = 74906ae05a5af8e9968b6feb498569d6345a24f9711befb136e6c3b5ed49339e59a7938b4ba1a118f169b9ace0f7842a26a645f14c0ad22ebbcda93e67e4c348efc3d9ecbb1419e6262d0436a58ea82c2202389065ccf67c4f550e45b5f6a12a6c011b2e0a30101d5c62328bbf99c8c95563a6e33bdd9cce72b1f720139c2fd3e04913146ae5bac5288e0e3e -SIG = 3bb459d1ac575a180c1728d8b8924970492a0c8d2a378c29d1d41785c8379a58e2ba3606785e1c5da29e5527552bc6dc89a2b69c27fe51ed253a9f3b565b2700 - -SEED = 45667d1e7b5910979c4a328317968371c864d564a661c5cce557c9ecc61bab9e -PUB = edcdf5e1a170e00c8c687e7e9c18f9893b5fe495cd2977ceb7f446c0149aa9d3 -MESSAGE = cd66cec476c87c8dbf47ec91dac48fb5b42db1282a573e0a5cf0b91768986608e1d7ebd05f5251bcf8b47a17093229acefbd44beb21c0c0c928dd3cd3f8966ecce6910331c508ea76baf904d8c21f6c17c2c58d00afd3259b8bf794c146b12b995cddd1c4289c5be3168ebd616b384c281ce1b38a10e1807808853c681a640a009b4d2acd7934f8c6d07578161 -SIG = 6de668f1ca6f292814625289a0808020c87c89ac94f5b0508e557bdf8000a5ca808f021c9679b50ee2f320064c95a464a8439379828c3b76cfa766455e128c0b - -SEED = 24897428ae6546d85b3190ebe3f1f7bf7c712528ac851a588b07d5c8f94eecd1 -PUB = 5f348fe3ea5b2c023d0af7ede60e55f91aa55199699da15a11c3791d68d710bd -MESSAGE = 5201d9725f1dffa1863fa4d84c301861141acdfb64be1fbfdd5b9386db20ef394099eebcfdfecc62c6268607a84d55c55cd0efdc372ecf3067343e7b0731c2685461e24b953f99949e59ba3e67ed0f0848313793962a292c459814c5e28690ec1f45171f1abab86fdd14568b00caf48581115ee5ea83b000282fbbf0c0b2a1116039a35cfa3f201422207a3d4948 -SIG = 1b5e75def49f51d6b2de008c71fc1a909bd42ca813298dce4eeef717815d7a6c078c2f3d9a3fce1ab5b3ad8ef8d45cdf2eb4901c32eea2d5e018dcf2833cad0c - -SEED = 7b04aca7cf926216cb960a3890786339d0a615967680190123fda3b60c6aeb11 -PUB = cdbc3e70e4e8fd13d0cce2852a3b9372c3a6160cd6deaba90f9b3022f70c91f9 -MESSAGE = 1cb09624b1f14a0260c7f56d8c60b5fe45837114232551ef5966386e0c2b441b75cfdb8df2185785d22cf526fa9df7fd45d9d83881b66c1feee0913e238121eedbb7ab504da0bee8998016684535031991f11bfcd9b95690aad2d19bd6a9de1844ed1362302df4217230b25c0552ce277534c650cae526577f25d8b1fe9f9febca2c814670d4805b21adef852daf94 -SIG = 25d2d361751d52b4fe66ea18e4b9866bde3d121a7312fd9e28a1e295e087e3176c94c874a2e81600f24c4654f43d1b67d47b64822648590ce5ce44f3b5ddc502 - -SEED = ea73bf64a1a97877c3c3e7ca4644b71aaa66314c8f1b66bafaebd5edfb888bcd -PUB = caac93902e5764ade47294edd51faa14620940c668b5c1c392a6928325d4c3fd -MESSAGE = 362eec68b912852786bb4f9afff9ecf7cb28c9de6b18422a8ca940b0d7e6dcb83aa44be0afb5f1806d43f0e31d71f922f853615a26e287a27f08a04fbce3d45a0c6c311d4b7cb17e425bbeb0a6b410b5d6dbb7ac11df9850a131a691e3b60b0b214ebe044106e982433287595267b031b5d4a09262ded8934fdfdf964d868ef9a2c842f804eafddefcb71d9f16a59bf8 -SIG = bd86cb9c70a055279a86a9e64870988b8a7345c3cd2948a0fabcfb38abce3c420b4d5521618e11d2de827d9de569f6bc3be66aad40636cdaa64760ded3b7c209 - -SEED = b8123c116b33bad0dcbc2c4dc06a3d66850dab360cdb5a033c14895c4ee31bfb -PUB = bdca151ba32c6bb31531b05fdf86c6d78c8cd1935611d5ff111a0f00635b1885 -MESSAGE = 7970f6666634548c848bb52338817b26a4d0ca68df3d28afff207c2d028067a18e4c9543025f5b0228aa691e5088513151a94494e15d1f54210328e0df159b352c30aaa7a844f18a9f4c395dcbb3fb9fcfbed1103e0706fbf9c35fe2666848fa35dc2cf5227ebee89e7d3bcfae2721b25fdec3d3174ea7ce267a55dd61d58201e96bda303cf418edf6e32fb92f5dc1a0b1 -SIG = 9cf13eba3dcc37b8fc70ccb2327436b9f08855e726aa7ed82bd5cb7df45fdf9ec1f96afad193f47572d770444b65b74a37cc034fc514cb3f91b2d8ada5b02006 - -SEED = b18e1d0045995ec3d010c387ccfeb984d783af8fbb0f40fa7db126d889f6dadd -PUB = 77f48b59caeda77751ed138b0ec667ff50f8768c25d48309a8f386a2bad187fb -MESSAGE = 916c7d1d268fc0e77c1bef238432573c39be577bbea0998936add2b50a653171ce18a542b0b7f96c1691a3be6031522894a8634183eda38798a0c5d5d79fbd01dd04a8646d71873b77b221998a81922d8105f892316369d5224c9983372d2313c6b1f4556ea26ba49d46e8b561e0fc76633ac9766e68e21fba7edca93c4c7460376d7f3ac22ff372c18f613f2ae2e856af40 -SIG = 6bd710a368c1249923fc7a1610747403040f0cc30815a00f9ff548a896bbda0b4eb2ca19ebcf917f0f34200a9edbad3901b64ab09cc5ef7b9bcc3c40c0ff7509 - -SEED = 93649c63910b35718e48c590d261c48e4ef8336613f6aa077b462676b3ba8829 -PUB = 06a685898b855212ebc289915d105a4320d620d85771b8c6b15bf10a1be6e9b8 -MESSAGE = 2cd1a951056c9ebae1399b6bd2d82c0ae277856290d06920ac56cac8fb42435101c72aa9c08dd2d12426325562c2f0a49cd821b11b939aafa593b4095c021bcb4827b107b9664d68282888bc4a44af3e3bdc861be6af309044c3daab57b77023dc902d47ebc326f9bdd02dbc02cd540ff81b2ddf7cf679a41193dfe5f8c8ca1aaefc41ef740280d9823e30a354717c8431f5d8 -SIG = 6274f2d4f431d5affefa35e7cf584a599017193da99094ca908b75acb608d1bf981857be93a7dafb0fadb3ff0906f48a5ee950456f782c2d605b14095ba0ff0f - -SEED = 1c15cbeb89362d69476a2aa4a5f3ef2089cf87286349e0dfe0e72d9e3e5a66c7 -PUB = 13a882a1064182582c211847e19b4dac59722c9ffd34826d96f33113400fac7a -MESSAGE = 091c9b9b116ae83d23d01a6295211785d446b6228dd687ddf79bd0d5a4daa8c79d2cbfc37365f1f285e361738123e34e2bcbfc664ce1253a11d9e4a7982e58cf9468e1017ea14d2cc6d0865d40fde8cb560241e96ac1617c791f0ca7c6410cadf328611b18aef333d8350ac497f0a4ae2d03fdf0e23e426d34f4514780d1474e113583541f3c043672057172618cb2059eaaed56 -SIG = 5998b2808adfdeeaebe2c3eac026d3f825f9c7f2af97ca324fbd57aac1bedff78a8ee621d037ee3ad2a712e9a009c58ea3e6f2a828f74b86da275a44a4b1e50b - -SEED = 11241ffdf34ae8ab875475e94c6cc3291f0b8820dc85e20f32fc53b24ae68978 -PUB = 09c045e4bd5137314c0ec1d031faf914910c45a4676f5a3cd8f581bcccb03c97 -MESSAGE = 3b89deccb7023e4b2b7aff2c3951870af413a9b04dd86ac78b7c8fd887492d8dde49d8fda149edd54781ae2b508030d14416a9a38bed2b9aebbbb20250b3c931acd4e32fbeeec5a26501beab7268d144fce8951a101c4b5178166fbb5927b1dfb1e1ce90d1d123068e3f472c888fdb01fdf70e7f8de9b0adb284b7119f55354316f84ed090030f9c2662061ca48447cc0aef964126 -SIG = 72ce9f91be2e66cfc90f952595946ffc90bfce53087d49e5dd7c087f3faa8f18f2356de971e4429d985a99194b4f92ced3ef47cd7114379e0b3267a9f8b1e706 - -SEED = 3bdb162465eaceff98d69c86f70039c517d168aefe6bb101b4f769a86b17c972 -PUB = d76cb7be74328289fd1c64be747cca5bb30295dfaccd0f2e43f51703fd5d3683 -MESSAGE = fbf368feaeba87918b1b8c7b8a26832be6e7fc1cbdb8902519281a0654ec73de0bb07101a9d603f745d4ec2357aee9870cb19a56cb44fbd9c91fc34752612fbd83d6fc1a16bf8a85a215d0148e4af37d298467e5cc486b131352ce092182ce8284159a3812b30bacbff595863811bf9a30a9da494565c3ac1814430018ea0eeed39cdbca27f93140e46949db570bfa2ed4f4073f8833 -SIG = 6f1362a402063791f950984f544928e616a4ef79bbeb6854e9615aab9cdbaec483fb9a04bf22de5d97a15bda2d390483c7f61dbee07bb5141fc173b1aa47650d - -SEED = d5efe51d5cd8e108bd922fc0ea126190a94628ffa53c433a518022792ddc78ef -PUB = 426b01cc61ff5e0e724da1d3b297f5325c18c62f64d5eb48d4a5216a8e9a4073 -MESSAGE = 9d17bcfe2dfc742f411cb53a94f359c001abf096c741f34af48679f281e7ce6bbd9e87709fc0728a563db2b9cf8ea4fbdcc344c1848e653ce970c6ce29de2ccd520300649adcddfc753971f846aac1ba42ae4528952d94980aa7c6cfa2142907647f894ae974a74d59035a73ef56a10b6612624809520190ace661c3a47095e0322efd781d50d1163598f2da32f31bc9c4f913d1b14861 -SIG = 2306f58fcd4cff2222d81b05a475532b8b19dc67e6d78ddb4205a3b7621cc5aef0b393d5d24dd96c88ccbc53a3208da323be4587d5ec067c820f0723aa44e90e - -SEED = 18af89025ebfa76bd557cfb2dff148245214641fd5bda159f73da04b08e87c88 -PUB = 0c584459b9ebcccad587b272160bc60b27f4f772b4321de7723afef577edc7b4 -MESSAGE = e82f46652ab914af535d8fb720b557ac95018d9f2a3fcce85771bb40ab14cb9a986e096f3afe5bee829dfd8b97335c536ac971a21655af16a2f8fdba183a4e18564c21492956537a419abbbbb02a4bbdc01481f5c6e658ecf3c34f011ad846f5edcd4939195df85e41303fb9a88fdfbd704396f7559a327318b952b3e60ce8ddde56378579232faf950c78e7f0b17c3b8dece36b788a8473 -SIG = 26bb0882297c2c08a752d3981145dcde55893a11df77f8aa4c19d0b9ed6e5220ed12e9fac3af13d0f0c71568f4a547d30114a6599a236806c4beee6765284408 - -SEED = 0c93d99815fff8fe22b9e45aa02b3e6445ce1d6bf5a65dce3da107aa1055940e -PUB = 4d27a47b0fc80800d84d244eebb1deb4436d97633a83e67125ad52ea01685057 -MESSAGE = 11e877de58c134eaf4c9f1b53c3dc451d3c055f16b09622725b279768512fe10a7adb0765b689ec21d5b6efaa19f1b9d36254df0a9367f441b26bdb90b28cbc403e5074082fa1fed58e140dac97aeaf483e2c13f3cc560abffaba05b763feedb51e60698151cf56efdf1d37d6ce0564486210f052e937f2ea26f63efa5d247ff188329bb1aa83ce3f4f35a3d7dec14599e5feb7b6d5fe4296a -SIG = 7dc4467abcf6431adb7ccfe868eac8cd8a615a0ff65f6a9e338375b1aae3c49a126c9eba79426d1641c6b97c3e92c194e5ee4431efa2439fd450f2cd018c8700 - -SEED = 989e99945635192c023cc5186fc25bbaef47240775d15a56195d88cd07c3748e -PUB = ca0beafdf731d89301f7723c5bb7e5a1c3ff3eab27c97d711bcd76e42054bee4 -MESSAGE = c48414f5c757d03c523ef3f3b8510771b0ff3b4b97de279625d349ec185a29927a66b9593ba19338c2f5e4131f1ac07ea46d2c1b6e4ab5229280b2e2bb9d140d1ef7af7b1692bf2d097b80f811adcfa95d5cbf9eee92a1641c552b4be4a0d734f0afd470b9d7f4e45778951e21fc534f200a128b96adb8373f10cecec2dac2996a062fb3c294315965a9d5d7b077c4b013c64a38429769d23eab -SIG = aef756bfb8a7266e17d15f3f11ee50ed25be420e95a0742271ebd12294e2cb96ead083b8ff0b829d2edeb14da86e402ef25e6d4a5a7958c184ed10c176cb570b - -SEED = 6bdbbe06d9f4219eea6403a357b25e561992fae0f0f614561dd86d23de415a43 -PUB = ed52dd1cce32d9b485e0940746421d36b9fde6cdf0211545b634044d4b3cb8f1 -MESSAGE = 582ada13d69293e49bbd461032dfea1ca2025b52e013a33a0387fcfc5f7c0b8ec955982607fc901e1b7f636a9d371e1f91fe476bdd44856e275d67efa14238164354c231124c84de8f5b89d5a58ea6744b4d3b3d7906905233cce694a64d696f5a7024fc9033b1ce390899a3b441a48e53c7c9b30ba12e7d61f35f15e658c7cc4407e2f689ea8a55d01bf5dbacb11954754f920f09dbd48409bbb5 -SIG = 950206605b0f417c90843e2c8d8e66c828bb10b99b36eeeee8caf2e0e5484d93fe02bf533405f4bb74a50e5585fa0daef4821f0301d01b46321baa31e1f08d03 - -SEED = d761c8c5a9601b9145b7d051249b004107e452e563100c6c788038c9ee8adad7 -PUB = e6488775d6407efc7b2bca890a7fc62266fc54cdac893343b4f59a196d948898 -MESSAGE = 84ead5eabd2fd4b7c79a9a928ab8ee0a16a5fd667a057f8a254663d56daae156d1a49affb2996137b9d8b340e635732f9d2b4c60218442541e72d2b00e1ee7a73c3f67caa499fa9d070b57d076dcde96b0764723c3c659c7a00c1b78b15ccc2223890b51067fc81e23e9458ab0683ba626a53d0c3793a58a9857bb44b3bd85bb6ce53a85694e7f53cc1bd46d50eda37d81f5381b513d1f38339d291b -SIG = 7ab78b64e6db359a2dc8302e1092ed66fa736b536253a1cd90fdb8c10efd78300225e191963599ba549cc859209df0ff61cd069b03d254e6e7d76c798440f907 - -SEED = c5e0c7a7bb8b7ca07bf0a05ea67eff6deebfe3714ee3e1a227f4dc8e242a2fa0 -PUB = 5135efcd9052bec57a4431caabe82680eec0a33afd59b30203b280ba12be485c -MESSAGE = 3770a6786652c4b78a043edce07f3e204d81997c42afc22331f75a5494a826d7cb69ab4314a473721058a1839981d5b7022d0cd8670377daf3320476d25b9f559561d66ee0a709fe17361e2a52898f5753c4fb43bd0c98b368f512adc09cd927c6622676926d8c2d91a14aca32f226f70036c1c858bcffc2b59f54c1c37bf81eb52ecb3f00da602c94361b52a5afddbfd7e05036e377503050333be512 -SIG = 2e7fdeb3484d0a5e8dce94448979496b0642cabc3733a51f8c3c5c51c19ae319018da91091c2385f2f4e9a59edbca2abd0d085ee40d3f0d42061a5a9832a370c - -SEED = 11bb4748d2547e6196be823c9be7aa18150c204b12ca8d73c1bd46b11a54b475 -PUB = efeb42da28d764966403dd300d9f9451b258ab1c80df06fe5943153f5301cccb -MESSAGE = f4b765b258ba35b427525c7f10a46f0bccd357ec1ad52a5b139417a9d3894c512d89eb88e681b1f30aac4c115ccf36545e83f37834c82e8300cc1eb289af4375968c29c0ffefb40e156c20c0432669ac8dc0a83c13b1e855a84ad0133c40c82c87ee1e7dd4084d741c80de8a7a9f7759e843a562099c4d7df875352039ff4d3824651386c97759ff7dba52064e6d3112e080819aee8ce723a1a2aa464d8a -SIG = 44c58da49d2365d27029d1eebb3bebf7c032d858aa07e0756b1c26a5412d22691176031341ad37d7bb7843289eb39db491584c1b2a1da2e4a2649c2293826606 - -SEED = 7452a00156d794edebff4adb1f7a7eec26217fef67c3d268352b2b5460a7dc25 -PUB = 5f4dc338cfbd384b5f1c14c226701446b52b1e3e2a3cba1a40ee2825080d1de6 -MESSAGE = 8c4ee2867656e33f5269414d77b42d8e4750dba93c418bacca10938cc3b570c6603d52c2344488607b2f934f6d269fcb2ad966219b1ab11472f42c672ce20592490ec5baf6a2d2fc8a3ee35374b1902fdefc7870b1b626fa46b12b6cee241f601a9b3fe4c50812e573e6752ce2c7644e3367a6a6b77758d8e4934b58af23abae8fecac25edd734030ee7cf39907e3eed8186a19a807103a9fc49d38f4c8460 -SIG = a8f9fa24a3dea1022e73f0d88b1c37d06d0f0b20bbff0ecdb4a40c86d7e475617c03570a7419d74ba0f1327096bf19f0d0cf9f51d483112f26922378682f4807 - -SEED = 880ef106733f04e76195eba280b3fadda0f25dcf96a6a99c8ccf842c68afdae5 -PUB = 70cee33d41c728ce7b141931e6e8524567d7601eb79f67fdcd07b9d682c650f0 -MESSAGE = f4f38d077f2b03da821bd36fde673d666e52f4832e1c0dcfeef049328acb7bd71ad2bfc49c123516e196c470df0847b3848a45a2c69bea03e2afa7e58205b63b523814fc8e242f059c69ff7e40f97be8125b70a54fdaf35aeafac79114a7b419e6bb9e70bf07adb559819600dc25e51b4b700d27ca5472a0e7cbbfd14e099faa3a72002da538cbe45d621ef0d5252ba29d83f8b3ec8389c9ceb6c6b2e8d8a20f -SIG = ff6caedd8a468aa07d4c6e7131bbda76182ba958649376e711f44c7bbacba6077bea878ba5949cdeeef05cfd4983b0057d275ea3e18c32659468c30c47ac8f0b - -SEED = a2d88f37ecc2b2c05dd6cb3159962c5f646a9815b2fb37791fc7b606e2913ed5 -PUB = 58dd67d7a15d4ca0341a4c869566cad8c4ee16e583a10b4824173b08290d92d1 -MESSAGE = d1b87e9e886dfbbdc8ca8ab9010ecf9bbaf23f72ab3cbe769db1d43c2a474a81651c464e9fb92734634641c9485a0239b3110771e7f75e05252e4d8f4c0aa1ba08626d7e96317c20acde2ad99b23bdadfd6f17468eb402ec5eefa57b47caf972b3dd21d89f0e2989ff87d51ed2e2d639c1644e698cbe0221b8e179f3cfb04a20cb2470216a6882fb4ff799e11536cf64219f0c075176bc7cf0f6c5b7925fcd6155 -SIG = ccf2400cd673e1effd20161d7b68a5fb87c1e99d3635d78c2da1b509fac33346c069163a6c46c7826a48bbbd03b05e6e2351fa62bf89bf7ccf9a9024bd157d07 - -SEED = 42aafd0ae26df1e7aa0276860d752783af97280439bb23eae46e3f84caac78de -PUB = daa2350adb55dba9df7d7af5101998fe515d311c3cba3eeab9138233190c3b4e -MESSAGE = 72131b80ad599b6f5ff698547d16e7499d71275e4e9b30526a5aac0b0c8b14fa4a540cfb1145fc004418bcd318c1a70e6269a3fb69baed86f363f5b8f97f569c20d4f4990e7bb4d0c39921268d636ed0554bd62acfcacd3b8e030217aafac3044c037e0f94da18c6b9a0932c3c5875d3a93fbdadcf67964eec9ec2be69b48f020f6c9874de5f8a5167b5ee024a2c2efd0cdcd2acd8c1f787814141e30b38b163175b -SIG = 116143650b6c133d617859db2429c2913579790b2197d7b7b1b4962b328721032ceeca58b2d56439e233bb84dc525e284ff8df2bde1db4986fafd21b3d7d6a0a - -SEED = b69c33b11ba67841c3d4e6f9234e35370a28b47662ac560b27c078b66ab1b021 -PUB = 9df68e9acf67379261744db5d1e377892f2b692ed5a38b37073c04de5d226737 -MESSAGE = f9ea126d3ab21961aa2433900a3982b83e0ef86d52d13440afa4817f9b822fb582cc3932bf450d4677c9188181fe7526ad6fe5abc61d0ae759f215013c0b2b41064cb6278ba7e39e2f4c10d6cc9605b3869e169d7da42e88eb857870fe6118bb02bc08c8055f0c189b62f79fb146b4c543aa30cc0cd57f037e9ef7a63711f66e6f2878931702202702614277d513f0850b758549336b30cf40ab8bd460e60e12deed04 -SIG = 24368fee5bd848b4c661a3be4f310cfc436e79ec4a78501b81095fe51614231b6ca1ab1269996ad2e98e299781af8e29804b24fe5679ca3ba650c5c4cc58ce01 - -SEED = 7b63613f6dae01cdcd5e6b37686971cd8d8a99542f6329a12854a9d8ff8105ac -PUB = 72ec43faf34d8730177d1f0743c74c20bf72c2394b8a7d471ffe2a04ab00811c -MESSAGE = 1816488f1fc83e1ed5911637dd42ba2077657dfe1ae422ad0aee59df9dd56a2763c2dd0ef61a12bb825b0dac1eda5fbb691c5ed58f3fb325050b4563a4042099982fffa5d6ed742d95823da8e1787cf746ef63b3fbb0e88a6c0beae4f7318366936b4917f507336068b194680900a7bf4a6fb69a5c387b97e31bc7f9be53c2a89e3651ce1de41b10e921b206ebf32e5621ef8081616dcd7a2059437efad014bb8e2c8221 -SIG = 76f50b2b9c2ad97bfb9499ee41928ac072da5e8bc71d0212550942332b62e70c8bfe1c722542394688decd917aec8f95353e1d72624b70ebed5d17f6c5497702 - -SEED = 3558d3a74395bdcba560e2c45a91960cec6cb3edbcd30e722f7f055210f37b51 -PUB = 534f43eba403a84f25967c152d93a0175ec8293e6f4375319eadf957401fbbd2 -MESSAGE = be75444f9ce6be1d83af622a8c478d510127db56f1de6eb8a5126522b09fdc6ca0862cec0b8b2aafa31c17a2cc477da533d276a1ae4f8e0759d6afa0b17411b5170b52f20547c72f3e88d48cb456fe625b62feb0f81317edf1ec09ece534b9f500d4e1b1bda2db21982aa95094226ee9f5b0a65da83f91121c96b3b4010ae7826c9e80636cba00f70c3c8a279b01b95294cb850f91709f4376662a580b15ac2981afe9f854 -SIG = b365b5561a13a54517cf90d88b35eb0967d6d58414b8c1547e693159e01378563654c50fb42323f09dd78ffe28056ddfa54febf44891e8a741b6a1687d728605 - -SEED = a35b92f244063a19bb5e3ed4d699ed2069607116d2bd08113f0d8373613f35b7 -PUB = 7ec93601864ee4995a4f7abcd3dfc101e9e7f369e63de1ae68a07aa7f075b329 -MESSAGE = 65cd36dae0168d69974f95f09dd9a59db799f911e1a15b85a00893b8c9a3d48a2f58ac126bfaa0a606c05d94701d273abf7d68817f2c71b1c541795c4f6095e26c9dff803f032f75663fd1698edd97ff3a0e72e1b7c9948b08bacb5f7de502b2fea67ca2fef190d60eae92d15158da444a49d2e9d5a573e8e177e8bbf7e6c49f907136e71d2a66cb07636d48768ff417c8beccf4323181fefb3124e434049ea45dd5019e40b4 -SIG = a23dbe3757e478dbc84d3db3a933b0428cedb6b01b86d8d73f3959878dae6f0588f505cd4d39f2ab4677b64805d629652a22529825c3a91d043749fc71f03706 - -SEED = 72d4a564ca15499b5e4e75d8ac0f28217d32114a0c649a7c8eaadd0cc78c520b -PUB = c766bd73837c4faa5215502f1efc90c003f711bbef55170091028a34493408a9 -MESSAGE = 6c7e7b62eb244a45d78436e2970dcd6c0f7db82297a86140ea58dd22c2195adbc956d4c4ec05354b21efe24cfcfe10e17622368848180d2c4680cc215e8ceea6cce222161f1e092239253b9746f7887df2425ab5a880bdba98153be786dc838cbeca016b1d06524bd6bfba809a8bb37adab15d42415f86ec0358365ea87b8150b05441d9d49846871485caae6de359736c27189736d8f1765f3e5c5f6b92168396390bee94cfbd -SIG = 8fc4f179330b642dd86ca9362651b83b006d8375ccef811d3c6706f91594651df2769953723046ccb9bfe66a667e0d11fc3ea2d8226234fdd5164765260f7b05 - -SEED = 2e5aaab298e66c2dc1d77ea7421ff895255f9d900db0450d63f9f79c1a7013cf -PUB = 0381f3f19045719b9e8ceb562f0e965dc07b09f371a963a281c749c2532f654a -MESSAGE = 3df0e54c711e3132d7ae953deb7b66869ee531ee40b63ce693206cdb2f4bda0a2569e913ac3e6532c5d9648efd4627780fb8a31d107e033f054d19ed8b7c49dc407d2e949de25f99307221d35843f6d5eb7de5cdf41b91dbbf34cb6c9c530021014b56abc44ac2300313615608a7b4a235e99c14cef8050887032209488b9eaeaa82c09405fc75bec94dd42d6ff1b599a63ee5742f3364093ac92cabab3035822aa867ae56dcc99d -SIG = 7c7430305b361a9e35b2780c4d4408071b2130931d39830ec8d313aafbc83a65dae19cb747d9d1c4ce3f359cc824ea8c92f66a42b8614e7848b884ac8aa4ae02 - -SEED = b636a02448003543db864b40b5d8d6dd9ad611624c9b0fc6890c51ea5592c790 -PUB = 1ef360495968e56e6d3fe740b1c84c4e4490ed682deb4305afd596efb280223b -MESSAGE = 4aa85aac25034f614ed44f7adcdbeeec25fcc2a9eea32ab6a8699506f7a1cad3bc892e9dce934e75b0a8cd14642b778599286cfd8f50a9e4f2edf9f9d6291a2e2979cf1806b93ed8c9a78fae199b2854a03ec406ab3f720835ee263fbbc91cb4ef0758d775fc784c7d5b251ac8937919a9e67be88c9e44cf2ec7f560269aa0f1113d91b84401db15a3c48c7dacff4939ee01babb982fb95625c6c3ad78749060551bfde8cce4fb8a29 -SIG = d4ba80300d5cb51353c03f28c44fd0a424ffe1e40d78ed7bb1133e8fe4e187505293b20a391da962c6a8ac0acec9c67226af3b6195dabe39b3662294da3e0e09 - -SEED = 5ca0543c71f568a00eedf50a9520f4c15b526e3fb0da816c29ea3d50b2f62a12 -PUB = d4a2933ce19454e331b5280100209a6ce8e569f993c2acab51dbe864c5cb2563 -MESSAGE = 4ef8496978d28c10abd54a26356ee55921ceb350dd4b742c4161fbeba8a1601f8ad0484b21a8cf5a294fac00ec8a6f59e3362e47bfae1e28a2e6d017c5caa75fb0f48482808037ca21476954d778ff1a0586da3ef69d6cef6d2d8df4ae7a85442a1e46c998cf407a6ad4c5463a43c248f3b6937fdbc845b60c6d85e0563cc16ba9675d364f525f669aaac95f428bb58205099f9e4a6dbbd0151fb65babe123e5393ad64026935cb488aa -SIG = 436823eeff3edce5d8587d68e5473ef3d8dc9465b558b6e8e7cd3137eccc80b4c4e806edf13619d8e717e69f48d7061b68de02c8209be1f7ac26ba8edf606d02 - -SEED = 5f87117da9bbb6091c94da6b230b7d8f6de0ed2a076413b92eacdc43abbc6897 -PUB = aa786a146226832aa73c434b0edc2d41d2558f820ab8f87e09e6cda91072b9b6 -MESSAGE = 2297c40a2e8365bae4c5f0630c50b13bdd9ad9770a5d9a9451d00874b023d25ecd468b96571b2f16dcb1b0d3d756c1f044fcddd1c51f27727a0369c9cf25bd6aa59551b5b07cf8f807d92b159198639704740fe6eda0f26dba7e75d4530b2800f03fb6aa677d84df75d68d4fbb64ad21001e3fc87b609b9c251e8ccb12bbca927447e2054e07688eb8a20521a52249e7b943bed60e6a93c01e3eb621f0460c18a690b6f6b66edc6e8743a6 -SIG = 0f19e6ea0c05f38185c01c2d6477995daf5065ba9d80173fa6bb23a774dc88b3aae879d8a62471d2d304cc3dc66278a7abcb0bb0771cd278e11e7b932e9f9b0f - -SEED = b53a644c92ba2dc7108b16833f09ad5917846437225a773d32d79c97733c0a58 -PUB = 515818c69c0e0a1706b04143842f3e9e271448fbaf3a899119c32f42566ffd33 -MESSAGE = 13036daaee45fcfde0c53e06d05aa9c01ea94a67e86c6c538ccb283b368daf7078d3fbab580c76ecf82b4e9660f068dcbb500b80595017c5be3c448fbd8a17d97c5643197890e167b35345bf65e75b82c8d65229f2f60aae2772581bc99c49d416bc3d78746ef830f1af944f4a6715ab4ffb01591bac2857f1a9c9d1700888780006a31607338f7af7bedf6efe0b57299ac915526fe5e1e101298708c6e61b84220afe95b53f895987456152 -SIG = 13d2cbac7976ad27f0bf669ad588efb2c91bab8507d57fb16bfea9caff2b0964e75625c4d808d7bbb78c5b464edffe4949ecfbc8b95ff6fdb1bdca2742068100 - -SEED = d27c9eafcf88151990bb5b2fa8443e709b5fd8d78d233803322dc86d93d93295 -PUB = 08e0eff529776714686196d817fdf71eb5b6e8326516ef489bfe186ac5c5bf6d -MESSAGE = 77c35bda32a5967d8b302fa7a47583ceab89c9a609a667b753155fa6996f8631d0ebedfe0ac364c77e85ba37311f0de57a0dc2c1e9e400d58b424a322e1d5771e0a9fd9502ad0232ce544f07d8c66e7c3147f8607ac6189bb69066f2fad631185f457f467eba33228ecc40e894a77b571698a9bfac841a54eac5219da99c6a9125c469a22fe81f3b951433896f19ce39b373fd7e5c7b650a5ef2365ae7510b0da5e49d7c07073cf166a98387e8 -SIG = c254e371445633137442eefe40ad4a82e69b1ebf48a685a2bc6ffbac126d228487b2e3537c97ef7410342091962e50c0cb85de7b39ceb41ac4078d40f3407106 - -SEED = 70213d3a79c65d6dbba542a3679635003a682af5fa58de6b0d65bfa24184901c -PUB = 4402fb92cc1249dd1ae1690f03b3ec4f1e9bdab0de5bfd289f10296830fd403e -MESSAGE = cd6e1cd9c90f566de043d75d7244ecfdb38e8bde2f9a6cd5a4fdac72b5ede6af62d981918c5e610a38789274fa10e527f85fad209b76ca1c281ad5890f9c96d35de522f1ddccb539b8798a0067acdd45b6e344a5d9a97731f545ffa4b17b875c67b48e9d4c4ba72c98a4505583fdbf1e12f22b5a7a494746cc9b6c1b571906c67fcc883a9c15a3806875b659e5816b4276c3190e25cc1ac3de47bf99c49965388f54f3ef8eb569906c6008e5fbbd -SIG = 5b6ce2774d400ecea8a808f5fd0a797ffc6116752376cd7bfa3b2cca3a84d5593f5c03ad3eec1d89532275c47b7ce2a0e9c59cc4028a8a65e5bb9097ea71c208 - -SEED = 5d540b3b14f0c0175c047eaf026c9070659ef13e9d28e0c5c516a428269b14eb -PUB = 1d2d4d551a57c6fb2b04181049d4039d575cf80c0bc6ec7033067f27309344de -MESSAGE = e4c9e8706898cad4ac68d73c130efa04a54f8ca25919ea6bfaa54c8c720ced854c5e9509102c7b885aeddffbd1b7f2c5922583677ac9eea9a108c7e83e8871aed5a084f5440b0f391ad7ffc6bab4574af1b96770f4370e8e988e85ecb1a8d6034fc3d7f49f7422023b9dab5d0c16beab5f5d37b0a4d7de197ad87cd4ff8ce78eb12e1daf739d8b47ab380abe9093356db5b59717751a49e1948472fdacc259ffffc8c1dbae592607d4ec71cc6a8f6b -SIG = 32527da755312889935dd5ee91b1bb117a5d377dd23ef5b7e15baffae9a54391a3fd234bdce073e098c58d05bf195b4c3cc63972383ba4b51072971aebcb620d - -SEED = ca41769caf1717b4e45c93c121dc82a534fbc6ec0986662c3222d71492bd1176 -PUB = af3f89f6187dbcf9217750c67ef89ed47b039f9eb062ffec9df64ab52b0b45cb -MESSAGE = 9de8476c5813848ab1451537841cc178002181a2182af305b12e5f7c3b1d56b22cf46ae6276d1826ec0a8c9a7d9f68083b7225bbfaefce82b3b64594052a7700f309233a79fffdfccc5c21400c91cc0e418d5141d486b5219901d6dd2447c1f7b7cf5a0879e70e1dd658d0f2ecf31ebeee11a5c74440c63b9d8b45318c3465d7ff03365edd0385edf80d4fded51f0f7533ee4099f19e93bc9d08dadcd13485db239522ffc81e2c051f8796d62e979fcf -SIG = 5cda872f7ed6d7c90218ac10bee8e214f3b34d15d25c39255ec9e6b0177aa3cb7368d11cb8ed6ff5cf0c04281d06bc4272b8bc09c23f6f4cd5a810ddc7b9c103 - -SEED = fedd63ffd4cfbf618894962e121a9025eea318a80a1adf169d6490445d2e02a0 -PUB = 542f2244bdb7d84b87e628a8e6a12f17bf74a9a6d0ea46c595dbfdc680c04b26 -MESSAGE = 2e2ae584641be03dd48f9c618077aeaa18212a4241f0c0194ed23e370d741a3ae11a5fec3b040c16eafa4ac8d18abaa7ce8f286967337189f0495ffdd61995cde31dd8dfc3df5700b57a7a29980e9c823fee85d61451176729e72787c6109b47359b93dfd62e1e5a2d642c057242dae500a94ca1a93bc57be1ade76fe4501c0f6377ed0e9246179aecdd9946b671e8190e1ed23f966e96409b948222d8ea5839de904fc51348073b8f40edbd9b4a4b2275 -SIG = ed59d9e23dec3494b0fbc5d10cd02bab86b3eb35abbf9e4d4a926479f134583a44ce72dc4122aca377a4072b7156462b74e8df46b686698636836ef203179c07 - -SEED = 38f2184eaa553656ee2902706bcec4acb5af25157ca0f6a2d48de85285fa3bc0 -PUB = 7ff03fb4c82e9c15d659df424b3e73ed1d78006f3e0b79eb64d98c13aec6ba37 -MESSAGE = c2df77c9e479f61983b6c7483ef93fb85a103b213923926523065ebff2257e85427e05cdc27582ef6c16be353a3b250372d6370eecb6c8962917eb656f2641690189d172a111051557abc2494e32cab65ed0633affe92408b55c4ed8af65e2c5e7aab887a3cc8d28c52e9e1336d0b7bb3fe2cd843e7fa1680342f8a4aafa02c4ab252f08c3d46d5f00fd01484263ee635284f6db26d6298de5b0dd238da40a8d2a93376da0302783a0e3be23d9e7f990d25b -SIG = 4a6413c2c87f2b3856a8decbce493adeae0c69c94134707fb0f18f3049fd3e3d051abdb9d4bee253c6107c02d57ad7cc9f3101db660afac2b7981938e9564f01 - -SEED = 8bfca48462d2536f74b84f6af59f5d8582ff8f7ec28745d672e72eb72e79d3e9 -PUB = 9d10d275c3d3fe459f7fe2901bce389191cc8483c0f51140d9c62b08fade81bb -MESSAGE = 81ee4cb9c45da691dacd7dd09aff59737267bb55c3ade1ba32c17b7d0d2d0c6079c39d5fd5b29ba5f9c1762097709843eee5612bd20bc8185bf64d5c934184e13624e6f877a2a5dda15c0df62afbb97057cc91cac9a18406a0e0109cc39b2e3f812e227a4062d5ef81c92c22a7dc797c845d71eb6ea9e42ec8417fba90a96d2bb1439418330b4bb2f99c6d63d304a0e506dca9653e5de0dd56e309db1a76a0faabab163774f000088cef3d1b7a6cf661d2e1d9 -SIG = 44d77e439ef6ca5eb940c60ff8732ddc16269ea023bb2613bd447eba7fd69851226c4819ce8d44985a49f3f41ac7af33c47ffe5f89304a3256e445f8d686e307 - -SEED = d7480d4272bcb1557b1bbee04915c126a52ca6d6a8bb5314a0e1a52b59bfc99c -PUB = 99c839d36d8f5b8652618ed7b0fe9ec3d94efff4c453c540631476a5979bbbe0 -MESSAGE = 615cc19f942017365ba8bfa256ceccc85ee289a1c34bb1442acc0716c7fc2caeb76a9de19adec106371e47a30d2e1239ce1f7dca25526d604bdd647659d942bcbac368911349c3b946a97da10a42dbcf3c73416d2e6ba22bd29d9f705672e9e338944cef01ad21f009742e07bcd888ca31e1ee953e8c1b1fd954b7dcf1a0b1d5a069065a66cb721adc020f4efe1abdd16742746939285780d753137ae0140bb410fb6ce33676c27aeec593a88cbc73afd9f40511 -SIG = e04dc8442d352173e931818e290858de85688a4649ea3e3c3ae74edaa54ad01b64622ad8a090b6ad60adfd01881882828d39078bb5b2714fd3ea8397a342fd04 - -SEED = 3c2d3650735b41ef9006bb45e4be2e0aa5cde851aeac421ee9c1b492d87aa18a -PUB = 3e46ddce298844fcafa00a1b47eaf3de70596df1bbee3c809d1be7dd94080e34 -MESSAGE = 1425d8d218da1a10a80b6a9c3c2750efe41657984abd5100f451ba949db01046b7126be8402334ed57528bac05622553a86b726722695a8fb331d8565417c4ff0f251a320ad06dedbb750def35d521c3c4cd571a45ada8450653d5e81fe0beb53aaae787b3eb653c2381ed55aaf2590ee5ed8b6626f1c4b0430a54f39658624e6635fefc98fee8fc3e1cc7ff3dd420de9da11a62fcae0e0cb454fc6f7df03954291d26202f1b188b657b3bae07389449b75e67422f -SIG = 3f2af01ad5377ac39040d41a41e36e7b93fa7235b841791f432ecd7f91a3b21ab7196c883ad5a7db446f6c06672460f3f63ef863d9432be9caeabb79e87e2208 - -SEED = 74965996268cdc4c09220bd31ce07b217a03826ee981fa89f3a2359ced095ef1 -PUB = 4096d027c1c5ee4cbfc04b9d534174029fdb50cf5610d3021ef933b4caf33985 -MESSAGE = 45b2f064615bf774fce97f51c464685d7b3e4fefff9231240a719b3b0621cd4ad83305675cd6eaaebff791000b0b1fa31d82d8181b7fe57c5e00cec56ff9022e9ce8db66356e408e3ee262fe627789e65535ef1a63e8fec933be3dee34d2facdb8928cc456abf2f3e8cab47eff1ca42e8b0e48d2c73e7bcc5de3f1056fc523dfef6b0023f32889ed394eeda032abf6bcaadaa7f3ee74118760ab6d91df528bdc5807972c85fa7cb56e387d7332e779e52d0dd7db0cfb -SIG = 8c6628344317a63aca6f78cfaea965b3aa5522ce914195141c08870a1b8dacf34b79c7abc693cd9e5ebe1a2e86f0332d2048db3cbdef01687962d6df249e3800 - -SEED = 0abf069c08b2691c3a26f79dc8ed05cb71d220ff78f3a5c5780ae9da18e45643 -PUB = 9ef3b5cc016cc82dbdda705766aa448bd61fa1aaf1170efe9149daa9fe64a1ae -MESSAGE = 0d055291b2e861eae19ea0fb2069d8c9eef4f1347f3576d78411ae7c0b1c1caf31fde736dc8accacb662df76b620b62ce90b9f92c83309128621d057cf845805949088e938ddbc3d41c5e5541fec8298687ad2f79acda01aa215d25821436eac9d268716d4cd6050260cb4ef6aada4835e073a845821ff211ae2baadceb6e57f06f88345edbf93bfdf54fb74123b57c0fb4a79608d8db6740889e15733507799f7a1fd3017bcd77b28a2bb6c91ecd154e9c5a5ffa0eb62 -SIG = c7566fb3b4d8def667e040f276d3ed98d36dff460126a75b4cc2100386bb01c642f6d8de7e649be6e0818b08d77ce60f4ee5e7717a50884bdee02034ecf1cd0c - -SEED = f3fd5ec5e230b6dad1ac3d3aebadc7863ff89de2a1317f424d15989a3efb0afd -PUB = f99e5d5eeeaed1205cfb5c2cc4e5e9f6b4e7f64129f860104ca6244eb9feb564 -MESSAGE = 71f28973ed3df05945fa0bdb23e9beca651d3ee6bf9fa45ffdc6061e42fa2e8d76235f0e9e2daa65e52631fc3bead33da055bb492e4758e598a030a33b3c40b34371459b233ccc043cccc3a3cbce549e20e0b2b43305b64aec661aadba6556b17d76e3bbed62c4a4eac4f88603996752d2363c8d4a2789d128f6e959945c68c30146d194ccb6839ec65344601652c18b0074e2bc7668311697d960c7066597924d704d02a0193fafbfdf571ee0dfe414dc2f52896912bc32 -SIG = 44b0124663adb0c73aed49f73403461fcb19111b0ba17aa996566f477e37d524b0e1f107612fc52a7c767b181fbf4d629bddc08f30584dec6124c5d39d423102 - -SEED = 738f1310a4e08f917a0a5c1fbaf4ef72f95ee62fcded50868a3daf98856a448d -PUB = 42272c2c8b08470ee5dd8af8849c01b7508d3a3c65b0330e695c841d5dccb2f5 -MESSAGE = f0e7ef6782d04c6943b19eb66ff6226b736e3b0940c09bb126bfc4c4ca7a5e7016c286b7bfd73aa6a79a96031bc81cb5da68cec71a6a0d39780cbe6a0cd4774d3aa06a881610444a8c9d19102294e5f635187aa6f48d11912c7094b38833028d570cb110db60625bb1bdc37affa25ea3c8f8dbfc2514f4365c62b2989a66d27c80384e74ae5fba8c1c2af9c72c4971e64fa6a1dc2517b31ea57ccb0815a7fe2da0f146caa08431d25d151662d9d26e95229d0c62823664123c -SIG = ce1e3577b6a21016b9dd0b517baa0ccb107bc199b8bbaef68f950c8ed58013c853b4d338eedc675079ab1390462ffefa6a959b043f8b5651c6ca375ce0b4a403 - -SEED = 8841d22aded69c131ef5ee0a10ab0a9b77cb754ede8d257a5372726e2b499c6e -PUB = 715ecca63681bc6e9e31d18848902f4d96feaf43b95d008642903b1763bc9fb8 -MESSAGE = 087ca6be2a950c024b3e7467fe00a7d364555d5dc6770f5ebd260642525bd3c0f965db36d7b229a57421eec64e4d991cdde59123034470553f4eb0be81ad2936c8ca26bcab4e5d79040e29798728601684a468323cf3baae4d948d0a1fd905effe16dc44642088df53f6388bc480edf4aa207d0ed161eda345712b4c00cb05fcf635ec2588785bfb8a27cdc28996a1db3e6787023393c075d83c9038fed7899c55fec307de3249c14bda49e8b895860942c36d640bb893779142 -SIG = bb2bab7003f1311be9b8c883fc4fd528adfd51a9c99db3dca8da0fca958da19a10eb22332667b1a0065d3dbc0d06269a1259b6a890484aa2143a52695f145b0a - -SEED = c02135e7b65aac72f63c32bf5bef5b68c7f3b8ed56208e59e4752070e9d07095 -PUB = dcf600f244037a75203ae11ac316e8dbe9986f0dce23473939334bf5cea48b0d -MESSAGE = 86d9491350d2566e708ed356185d610c73465b2a5c7012919958af2cf76af995230d360de400b7137170dd0835f10fcbec224ee4e42c7d1cebb7f580fea8ed6223163bacdd1923a572cbb6dc26ca8b17ade68c6d2808c4ca1eca28eae9a145f68d4079d8d59d140e958228e7e99520e342dbd7457a9159740f48bdc27b93bdabeba465cbf0c8df5ef2c0f9386eebe656f5d749d5f9147f525266910d7b80396a90be5cc188a9a945f93e753fc99bafa18ee0a6dff79bf8484898ef -SIG = dd5cbae479eb5e229574c21ec3bed911113a57a1916d3313457515d55cc5b6e6ebc52c93f821d13988dbba8df5096d55ff9c39e7f9d561cb58930c96a7a5d60b - -SEED = 154a47eba1b8c38362ea61faeb0c0ad7e61e412a3cba4688af0db2a487208b1c -PUB = 16de2c894a50cbd4ca90419a4ca64942cb14bd335c5d3f4a53e239c280bda725 -MESSAGE = bf607e8b6e14d9c8acd96815af0c035ac73c4104c93786ccc1c9f859395dd781900320ebf356aa991cdc9f503fcee9f83675888a7d592002d2a54a573a96994b3fa865538c617ed8ad1ff62018288a674f449be0aab5222f74c4fd475ed6a8dfb27f45287b22b2b6c3bd15179f267d157d7d8a4159679be85b25c2bb2ba850aaed9ae3ae571be4f75836329cf36f412c1c80f1413b7661eab4a8e11b6024244fc62323ff02e38aceb1737bd474bf1e98015dbc788b027bbe217cf4e7 -SIG = f4b6eb1a8d950e887fd2f30f70a23b41871495bfa5b8a4ad3996cd9bf51eb742e07f4c4d2da4b01ab087367a50e2b65b3cef514e40d837540b8c89966485910f - -SEED = d3028431ce2eef73bd940ab84ca29f13fb26436aa25e1b7bf26cb33f17fdf817 -PUB = 63df203e2860bac4d352e722c1c91fe3776e1cbcae8553a4f19890260bf0e457 -MESSAGE = 086335d61275d168eaac0540477f50d4b15f9e50b9be693921ed54a9941bc40643cda62e1d805d0250a81146bd5fe2d39e81444d21e2b21b031c111306cacbf52717f6fb4cd3416f1215f8dddcedd2f0096b0fcfa0a6cc2cde7a2bab7f1e32790b5361df3671424cc722f231bf71895bcdcb7b22ee074e8fb4a9678504e735366c172f07637b7a93149bb21f38883378a1db273fc23239e35337f9ce566d8ddf3b3133cad7f2ce81edb503ce1d27c5a657160b78dca9aeaea379be9c85 -SIG = ce9729a96c3ed28943b27839c73382ecd572960c1f9e90c5eff9dd499ff48f17d25edd1268effe41ee6a81ce48d84de513df9c41442621b2f5491e346be18c04 - -SEED = ee8985dc27504440a8758d4c53e4225215797a00cd8631d59bd93bc66f373d5e -PUB = cd647bb065693d486589156a9fa261437534dc86f46f72d0a800399a7af010f7 -MESSAGE = f2220485addfebce02a833aca33381d1df917ed609950ed24f85e3b02b2b994b4d939784e332f41064c8b4a2630ab36961742aa1cffdcb08c144eeaedeafd48b5dbe96bf24350e14fd68286bc08eeaef8bc6ad9e195d1484afcd30afa8ced4848126d56c81b43c27a5dbbdec1a50c11062ce21c61d860c25a862fbb75c3bd51c8dc07636668669bbf751eacaccb3b51d2c0d4140316cfce2eb18d2908cecd5a188679bc5f5de290f548e7ebc57d41b589a24ce88ee48d97e8d0c7c769960 -SIG = 5bd60ad5e9bad9932ca9c75f231a76889ae7a8b864b91d1fcba5c5d4bfa1d92838adb974842a0710779b3e3094044909e92c7cf046ce519f4c68e8f19ec03c02 - -SEED = 80dfe2bf7387bad4654eb076f8dae9595163e40127f5df492dad7df04c7221c4 -PUB = d1783ceeb9cf8e4d07764c473fa4061b8274397103f2076d703249d758b8fbd5 -MESSAGE = aa09d784bb09dc999931ebb4c00e424cefeca104818d8eaf0661f09728ad025ef47393210571f17404e9aa6d8cbd5fd88cd7dfb8e2e8a108c05de206f3408234a3b463dbe71a07d05587324524b7326ee79d3348ddbed7871b86fcb488031dc9ea93f6b8d7fda6239348a562444faf1e72d31af35443e9df53e762f3e56b48668f9784b3368ab278a48ef4546a26cfad0d0a5161698f26ee8d34fc2b3d6dfb93b009ac296f6afe487ee335eac9f02cfcae5fcbd1a16ba4e71be1b112562fc2 -SIG = 27279e3cdcb03ef557a5defc2f6c58128a6dc3f8b0385958014e709c1f61b0ae6b403576f0e454d5e4c64c173138ee4bbd5fe7b60d06c5abe23fe99ee3b46a00 - -SEED = da1f868542cd7cce7a5ca3fa3c24081b4d2344b21a157f0264a347132d19659d -PUB = cb3a25a53f272ea813804468d6500e96a1eaf822705b7790a8ac3e98cc4e524b -MESSAGE = c6987ef380d5d0e74196443aaa3a32356cbc02636c5a4b6d62a8114b2111bc1abddd9e44b3672c18b58d4ef591af4562e020049f8e1274688e1f8e5296d2f9252e7fc84cd1d0c58e98f0f160530aa22c871eef652e71974ce91b4a65fc25fd09fa1b6c32086e98ec708d9abcb1d9cc8e1a089ed8db2206ee9570236ad69b3de6821862fd2c70cd83a32a68b0486229553d928de48d03a104e87381964abea76683976d527c84163a12eee0a55986cf1431e9c86cba8182ca94689bacd165fbce -SIG = 75c517ade4f08d7746305743d1a776c3c55eb5eedfdfcb5eb1d5634a1bdaf7a4b8d24187d6c8850e3ced6567a03c4c59389a4cf47114ce5473160f230546e60d - -SEED = f13daec0ef33ddd133c7d244d10fd27ddb23705280ff5f1815f0f656d836fe84 -PUB = 2dc7f1367de672c51e005c74f876f982593996873acba079292734c209c2b111 -MESSAGE = ec02ff1804b2b309af3158b66272a14a3aad83c41a719846f7088ca9792af575c78913c432759f0b9a748bdc5568496e41658cc1cdb8da6c91d07c3ec2f4af504249b996aa00c0071cdfa793f82d0ec5d267262f518fc029b88e20b6201fb9e05abd3f9524c5da2fa8978ff2efd48120cf00822d1bee90df816125d8edc0cfb5de66d16be63896a412a62b031b7118ac13fe2c9faa6b1a3342f9ccf7884166cf489a84de26b5ce5b21856a3af289bc6622c0aab9f2142d393f5d4b236779dbb066 -SIG = db771833f7fdbacdab2b5cc80eed50afdf13783b7fe5e903d5dbb4c2e535316a6eef4c34f004d2b9a4e2700bd6e2acdd564c3c80cc68a303f5fb091cb4340f0a - -SEED = 42dc16c57fb6f128945fa101e05bbf548ef7d97726b692fe404069cc57ccefa0 -PUB = 0a1ba5df523996f954b34ddcfabad3f3dee21a5fa7a4ce322d216bd8ccaf438c -MESSAGE = f2714c23a3a6fc11ad15c980b7350fc84217877661188055ff750d82c49c5fef7bc8e6aac574a1b79a3f26d16969c0f406eeab3e9e12850a55709745e30dffa62a69dfb2b64b3c1bd2bc3586e26d4eea714d2a7b71cf79fb8ffbf2aaad00ca3e4f2b6f503cc1fef2eab3656fb44f8d62a8db8ab58f394693949eea57fafecf005f6ebf1287dba4d2d623c02ea171f567e526add20709ebcab962f83d98ef668ebd01ef20488b3665e3a446fbfb13d34050942c749bb2dffc766367fd452e68e5b0c6 -SIG = c75977e83bcfe9df7292a860ed972555b5c24416fd4b7ee3285388fa5b1447608e4a347813cfe093512a7651e422e9867db7b97c0b0867f0b8c7b7f4f02c310d - -SEED = 90b455c6bb9cec83e137357065339d030525d0ea7f5b923a2d5972c3c12aa37b -PUB = 5cef038c16bfa4b4c923a0fe70cd7f25c8bc837fdf5a7efb9d95f21b96be925a -MESSAGE = c62cfdb9d21eee6be47f30727aaee51f0703789a431d32228533350217a93a18900669c95956f3f2ae90dc745a71e18340d058d16b4c6fe33b64af8dad973fe5dc02e8520705c7a8bb3ccbe1838c6c249337f9b6a4c0e1f8a4e5d103196fa79998923d0422e9d079a72cc2a8f86d659031a607d4cca0b947b3abeeeef64c28da420d05de665a5510fe55f77598ecad7faa0ac284800b53829394c4ae90be66678ff04ab46da265ae06402d8c83cad84d61a051de0260559888e779f74b72a5d71c132f -SIG = c9345eec2c4a0aec732386494a69a3fce8b8a1be366bbed1659f131fe97cc037fb1b7c1b68b0f3023945d20090a0cd2c1553a47faec4d66fd816ce121168f309 - -SEED = dc185c2ba0b378dfe5dda510c32feff535ca2e8a02434b326e0158bc878e8848 -PUB = 33d6cc05a434e419280d5864a1af209a2c676814b70f72f8141ac7e0573ee63e -MESSAGE = e276b11912cca5a84bba650c172aef3a4d5f91ac722913bb891a3ab0424ab07ea709cb8bba3a3d11f82f51c2af0162a82f7219ce27b35a30507d536a930817e40f85a22a5a432b94d192c3c8911777cfdb7fe937a67502770d6d75753d3ae88229e08f1ed23b4328d862ac61863c063ea9848f8ab96a0213d7b936c48fe754836c98487859d199b3d940392716a1d569e6c0cb1ba918932cf88525e256c8abb11aaf0b454655d5db55713cebba287ae202651ac872bfc80feaa7e00d47c0be38e658f7c5 -SIG = f1e44514d2ecbcc8d1a7e84bf584ce731835e9894f88974f098d456b60718f575ef4d8062f2182504250cf83bb2af2a79b1f58a6a97bd98da467132d7bec2f05 - -SEED = 90721c43bc366f24bf4e8c993e138024682f1029dba35abeb0d60c7fa710021c -PUB = 7c63a2f13b7b220a0bb752e3800753b8b6b32669378ce131bb77a9a8d230e9ae -MESSAGE = 651c9617cac958c7edd4a5f3fedfb83dc971abfbb69a31e898cca8472ef068034a6d2376ee0e72d0a9bfee275796c3795adac8ebe1d12b66ec268f6b75fa3941154f99e223faf2cbab5b92e2b3ba7b79be7700ef9dba69253cce5356b0c4e74703cfcafdb5546850b46232675c90c02d5e426d33d60cebf0c7930182379dbb007f536163c8ddbbd3157bb2da62340133f00ae2682ec6baa6416b5a01521cc10e04695295f2e5b94c05f00383ffe954830797f6df823172532f98165fe314ab325929af8385 -SIG = d2064a6d6c99c6c3f152d2d435f24e34b5459b082ef11e944a77ff54ddf9862737ecb2ac8d54207d36c51ad41f36490a111ba80e126bfecb09def6accbdf880e - -SEED = 9cec246758e412e7378b4579eafe9fac5a25d5405f9270b5d7e543414ec3d5da -PUB = 975a9e6a152caebb2f9dd0deb76dd922b6dc77055dda03fbae9e7c685d073aa1 -MESSAGE = 17ec9bd47add6ccfbd787af0d9013e9cc979aaf850e09426d3b28edfd71296eb31ff8b21c5fe7be050f536324c3ec48850e0b508a36bb4cb7e754b327183a1b394d88a7941d1ce8dac62a5d8291874d78485e51f29ed05865a206e52ecb12c5d107d4ff96f25d3c5d181d2c4ba6463600db1cca32857fcf597cbdfb2fda2708a8aba281b43c3d28c4a4e7983361509f61a1074e6f0ad6101c7b567ee4078e9839c47f46531b729ff0efeef7c9d1a8d833d9c0f42812a34187c3a778c165c09d6459c9c7ceaa2 -SIG = 9bad1e3b1279ef658f4d071644c63ae2b7a780357e9dc426f1650ec0634dfc520f8eda9dc8f10aa7324c5942d2347ff8802bd90e95fcec313352cdae64f32a04 - -SEED = d1403f63202e080525843bde255eeb6b6783c1caae9d6ed00ba60805bed1941f -PUB = 238aea3ad6d6f27783e70516bbfcca4770366b50ed0fe6a4e966b53af121a721 -MESSAGE = c4f17d442fba4ca0df8dc1d0628d7d7f36b60b5758d7c13b80b8f97a62124d96a23b279565495a8accab5997115b13a4ba220a73957eb7930520acbbfb6f54cf68726b6450c6ffa9470b055ea262914e2bc612633f1ac3d0618a23dff188a733d76bcbcc460f52ab61e19938f9c8caaa792c208d1f6c754728905fda51d881a347a53da744d3baadc0a76c474c558680269095f9084a74471d5c09ffc29141b5bfaf4954dfacbca663d037b17ebf9559882233e5ca5a8bf75cca4fc9c5a4109f32e145f3853b17 -SIG = 8e60e73c063816795e29f5d64ece1159f1b5d5021a6f8f655e261a4d0026f5b94ff2923250499d995298480512e4126276aa4a226d015a95827b3ce692e23302 - -SEED = bdf6bdc31ab0b5313784483abeca6ea5e9cdc68f81b21f350d09c3907bb9b6a1 -PUB = 03627712b755e5069fb9ab8f9e899724029a7f268af9398821eeec9360c9285b -MESSAGE = 90a66aafa5642a98e79f0d88147080167b11e4466518f195cddd8940d12ee4918d31a6d4cb77d0bf5af29983bbe5085610a79daf0c75a78ccbcffbbdab2189c394ae24e265bd8c55fd3f4098e1b175577549518e7a4dcf7452086dd1278dd58ea4c0aa690e917951ef39fcff60cbfa1e90910bab5374928d4722f702bf5ad6028ffda6541fa5ba1a3779ec78b0a95fe3850c748b6c8f42f330ec79541a52a1cf57db72df4f92ce7f748aeef1af33bc5ae0a82c89dff216f23aec168a7dbb510aa632daabcc971b3f -SIG = 38fac603ed246f833f1c0fd4585698b0a71305eff0d14a0049b3cef073bd036dd451b3dabadaaeaea2aeaf83d395746f4e86866ada971cbe482edb0419332f0e - -SEED = 57b3b14ace1cd0cd603e6328bd219ee7d9d094487fa668f28aeec02b43c909a7 -PUB = 24e6b6395f97ea0e237186d469b71923d2113adf403beeeb4a2d27909aaf3eda -MESSAGE = b2e0dedd802eed996dbd5836bf8688b0d1201bf5442ff9bbd351aeefe1a0c21fea2b5c9fe5edee47e921099b05aedaa80367c1ce08821d783a5b64cf059c0f4335083986a5a6ecff8c84fd40e0ba5dd5e5d2f01112a84ce5cf8e0db78beb182d9139c0b0f3e0060a3fa73869e96423f170df9af1cb9c35566d87dff542223f6d439bdb54729d366aff637b0f36a5d14b15d612bd03076cc4d04c1f25b3ba84e0d1fe474e5718d1a17d5a488465662ee4c3f664b4c9274b649d78cea4e85243f3713239048a908ce3e1 -SIG = fc79fdc6d090887a61e43c6b9187b657d2e4d9cbafd6e7caeb7ebdea842825b78fb949d2c49a0cf38b6c73296d82c8ddeb1fe2d40aaddd7964da68acf8c66f0e - -SEED = 018a2c3deea50ab506751f9c2adaadfd9e2192121609931684eb265e193e7f89 -PUB = af410bdddefc644ef12c9899ff71b9e1d0dfa3d69d8c2cd676c1916b34591cfd -MESSAGE = cf7813efac12ad1c7c7322ccbe54aa0e9a8ba4fd4345b06e4ce7a35c8b1cd5e3f7f0688533849ba2cf4c75b6f20926a1194a72df0e1b1b34456a2133112d006722fe811d5e40c4121159ded88990c0ac2bfd34f35af4f07cc402e9a381a675d03fec7ec438c4ad9d929aec8f242def023c993c9e8ba18c7428e88fde68a4711e506d7969f63c8e0bc83ff0de4e1336106c05e09d5922400e8a81bf54885667899785882b70f20dd8fb1e75f5855b765a256da4341bf23ea0ffa18aadda381816946001045669c8d04df0 -SIG = 7a44e6a31932dee6dc2d8394e29a6551d13e6c6ffdfa218fa5b998668d8439db5e05379fbfa0da5b563ed966435ae2c54e3ad16e1a9fca1f5a157a080704ab03 - -SEED = bea445e9b6d3f21235912cd6c42ec0577297ca20a10357880c2b846dd8e2cc77 -PUB = 024174966221699ea4b0a37e517ff9b16598ae4d4e83bfa3ca50bc616841f595 -MESSAGE = 4743c7c099ab815927b3674d0054b6de59af2811abc2cf7fde08f62929185adc238fadd5e75ae3ba0036ff565a79405b424f6552331e2789d9709ac1ecbd839aa1e91c854817597958cc4bd91d07377507c2c8d3c006cfeb6c0a6c5a50eee115e21153dd198ea0a3aff62b7075d5a461788783f050e659c572963d7a59e5afaa2b9c501f43c6ac08ab4797c4566d22b93cdf65a99a2a1d638e79f72b5f4631fe5e9e5f968f6db7a1880df51d8febc14942672f8ea6fc3a72814a44d66d148420a69000f68c330de5b80fc6 -SIG = 6964b9c5903e74e99328acef036558eecd3369150a52e2cbad4bbb97d461b3dfc6b3e8455813a4f4bdca46302e02e683ecea1820171c538e54c3de6c954aa407 - -SEED = 6447540ed7be0a11c2a8de793d83c6e244983db18d78ec9d75f1729c92e0fdf1 -PUB = 391212c8edc4d334a5bec860ef0f5ebb5ec44e8bb51c0f6741998959b2b379fc -MESSAGE = a4381c7638c48799e9b5c43f67fc3aa3cbb5ec4234f37e70ccccced1627a57683d1e53f4e0883d8b462bf83f1308630368c89b491533ddb8c9a5b9e8155002fdd581a9a5be0e430b9086a6beac4720210f87b14e862d97e5cc69286786a7586723f231ef0e3e1b932dbba3a18a0cb221cb07f80e6a8e1300056c13e702b23bfb3250ec7cc864d5c7ec5786240709c56024ea6be5f7b15a4fa5555e39a744a1dc557df5b948db220b3d5745746691dacb4421641cdcc12e7ec0450293f19ec57b09cff135847aabe446a61332 -SIG = 3ab5f88e2f7276b5b6583dffba5639993a905dbf9b88ceeaaaae3335800e4a5f10f83da6d6225a8dbe99ae80075009dd508786b3975113db478e14ba101bee0f - -SEED = 0c587a811add88b994458c3c808ac4e3a83afab26d4cff5c961b9df0b5c83344 -PUB = 06783b0cdcc5028c5638bd748f0bc76f7e94d1aa2015ca948738a3500460aca0 -MESSAGE = f56dc6b76076325b2126ed11d1f09decef9d15c31d0e90cdb1a27e089cc56329f6ec3f665eb6739ec5678b3f37ee1fb37deb9e240092b7a88fd25525acd55e294eb1046f9b1b69a847eb9ceb7b1593b9f6978ef618c15de4e059ecc3bfda3297a19c2df202adf72155cf21eabd03948df15198e8a68b0884f93ad5e36eb0983cca30e45a8b4b5fb8136fdea8a3341dd7877540a557debf7530cc33aeeef6271c3f0af6d09787e815f2f1dd25ce4d2fd09ffa9f53081b469c500da4d44180c04eb1869329cbf2d823187e831c24 -SIG = 33b4f4274f20008a721d1e8d054a2b4e95327e38bb07b33c4bee7e1ce020a442fb2627eda3b7ac93cd3ab0b12b99935a1a9233111604da4acffb5315b907120b - -SEED = 66cf401a2142fcf4a8018046cf4140bca18d76ef6266e7a024757df172a5d653 -PUB = 67d48dfd23743cc2ca40e4dfd6b8cc5d84be82dd2b1120cc476e6af6f25ecc98 -MESSAGE = daa8efb3fd41f12fbc55bd60464157a26d718632d882aedb6bf98e47dd2337879e0b46452e062e6dfbff3e7bca7289e4ef6b3f41d4b03bdc2c842afe97f3029883ed45f6054dde9690649abb2b8dc28f5fe8cecf80fc1ea411bfc40bbf4fd20b218cf47ea8ee118d4d5aefa5c1bfa08a8fb1b30d6de0977cd15e50292c501f2e71ce2740ff828b8432da5a594bab5223760b64792ed3a69dd75e2829234943656513df1a17a2a067a9a8eaa64e19569f46939d34b99271ae50a47d7dbca3620c81255b0e1fd1f3cec851f1b11b35 -SIG = d6b0e80e60bc1b29ab8f74808fc460847795ccb887bac0ecaa8e135297a85097712b24b0a1fbaf7a67c5d530a47d0643fc8702c059d215fb112dbe475e5bca0d - -SEED = 5dbf885aa598e895571f5f65090b72323e9d70b0f58110687afbbc383afedcac -PUB = fa17eba76e3bc3ea6dab3a5b120dc5ecb9ae6f00138f7d36dda9268bc4722174 -MESSAGE = 1e0b6cf15ce03337179c02d65408df5be9200c3782b6004af94ea4decb257999d6fdff301d11d00c98c372fac0d026cb56dfefe3def7eb99ac68d6968e17124d8446f53e8d2d3dd890d37a23c7e0b83a484b3c93bddf6c118e0281959d27bd87d37e843d5785f4a40771398494e6c4322fbb675c1d479321032148f7fe52564ddf7ae7ac269d0cd2e552fec589aeae0fb93fe3eeaef0856096cf4f6b3497e7235cc8494d810a0b46c5eac87f187e505bb7764f8045c9541983f7b025698009a23d9df0bd1a473cbee4cf5e9488ecbc -SIG = e1429dab2e42cd035b7fc602efd6baf94706f16eaf2f8b5fed329239e875605fb172f5dd9ae2bc2eb42eb474567e292f5206e82e694bca0d6d433b867634cb0d - -SEED = 84b3aedd4797a565c351de7dfa0700b9ff7c4d7291c8808d8a8ae505cdd22590 -PUB = d7ad72caa7c22209ec4678d11d5590a6cb28a07117fe5aef57b50751583201a5 -MESSAGE = 532567ffa53b5c0fcd29c39499d2e78ecd20e63123499240e775088b394dc65c8baaa0fe8f6aa7e70181f9e10add8b4a8beb0b2ec38a43309f100cd4be91c6f48e79dc0aee93a15c9403773b354a8d42ed48d8f276230fa6de5ada501ee0a653b4458f0ecf6d5b3c33e2141c662f6ea055f741e54586917d2e0c4eb2b56621f9665fef3246f0bd800b533e3bc615c4021f8d0e2ad233a11e7736c493acc31faee76a097dc40db9efc22446eacf1cc18f51fd10236a2f942d0a53c3ce209108b5938c0a9e536b89ef0ad6b405a10f22c3 -SIG = 9220f0edaaaee1b876350dbe9266061767b86296c351d4cac99d07cd612c6efb24f8f9b0b975f95c42c5b6afedc892f87efedd39d5160294c27658bdcf42850b - -SEED = 6950bfcf480b98ea18a2d5ae5ba6e7668f4c283ff2711357740ffe32cf25819a -PUB = 8e4c6f233f7b86321c9d6799bac28aafcd2503d7aa0a7bded8722727fbbcaeb8 -MESSAGE = a401b922aba57ee0c6ac1c8f1b48296a8562eef137526893886a08306e2203667788618b939864467a31f16edce152a42c25546b640ea8bed189a4f89886a37f106911eae1f50081bf795e70c6504437d2a80cb839479ecbb87c129bcc5fe31d716ef978c206d7f08a793466594f4d75e215bb6374596f8e7d00eea724780943e89bd3863c951bbd24efee23c97c2c797c7fafbf8f2c8b43f37a5f881129a09573fa7a034a285e80dc4ba4bc9564a4dcedeb33167e0b30c5a00b9a109a2231cfa0012b29b2b3450b892eccef0808e503f8 -SIG = 94de5df7a25ecd70205d40bc9499fc7cd7136568060a419a93be6e318664bb6dfce60e2d4e633f7ec148fe4f834ed277c1fec4c4e2a86f44c4589c817888db00 - -SEED = 61b260f5b848b271ef48e5a56d297432d89f2ab85bd538fa668870d0560220e5 -PUB = 6086fe8735f399f1af2e395e0fdfb5629ebcb04b6ed4a54a9e47052c6e8191d4 -MESSAGE = 2826295d79945f675476bc4d45ef800d80b1f0398e4be60e3de4571ed108df989f032de6c2345d9948d677927ea0b8cf1a5ca36fd5f23c25dc0d2ab5bd565a54af46fd97d338d770e3a7b47efb54c07a1664707771eb4e37d9d70ba779251dcdcd3bf6d1248adec53f787259c4d594d5fd4ced8e3db7621d4965d48298178124931a3d0cd269b2d53b7cd261b96d370c5d9693c8ad133ed58945ee3540e10625d924aeba9bdafc656100aab276fa996b1db477bf85ea559081d5b4c7307dc1595654aca82f7b6d2ddaf7357c15a4d7d8b908 -SIG = 9828fec8ff5cf85a98f450770b5bdb4b80daca44379d8f53c91c348e22df64ac48f2b6e2a7b3b642bc8193a194316229e69447ed241cd423d83b6fe7b2d44b00 - -SEED = 936dc1cef6a310747f350088055a39aa762d9a4b52c8c8e4c682794380c2725c -PUB = 03b31800412df4d56f1532c05828c0b72528a67a781bef4c06c1fb6ff2ce324b -MESSAGE = eb58fe86c4ef349c29ae6fb04f10850e38c6823dbe64a09a5bf1e0ce600d394efa6fb96ed6a8f2c9d4bec05e6a5ebd5a1bf4d0c51db934e57b79e5c6a879d975197dbb10475f65c7f8a8c6a77a420384b5062a2740f1401740ee0f5e043aad7a2a2b4260c5d907f705edaf65b0e375dfc7b00bd660db6147f2ebe870a0ee18dc2ba3c92b0b76fae2b90932cdb6c149e46f3feecf4c26f0441f3a9e006678aecff8ccaecaeda73a18a68ac988b62e83a9bb5188aede38df77a9a164abbdd9d58e52a6caf7222389f198e85fbf966236dcdbd4c1 -SIG = 3f994b8ef528f6421c6a6a22e977ade5cee887263de38b719acd12d469bfd8c3f68e7ac07d2fae80a2092778df0b463537ad3a0551997a3d5b51f832d9c8230b - -SEED = f89eed09dec551361fa46f375973d4fbfa5c5c12f1b5e5abf45cfa05ff31a340 -PUB = 3e0efdca3919fa10d4a849cef1de428851bd08efd248594fd89cdeb9deee43b0 -MESSAGE = 4cf9773da05fd322fc147be900ef5cf256c88afdad4b08c230dfc8981fb69f476f7d45ef7c9006bc10032ba53436ac22843e0d76289cf68f9818fa64031d4b40955059aa69110915889f5e22732a1343912581ab3b11a3bae7a471359508596575f888160beef966e5708f0e3147eacfcec1caa3ef240c5e0a14c186546c8eeb64658350b1affc0cfd2ac213af670afca7bbc9dddd28a465b586e69c388cd73478d68efb322bdf86d9213011e711b2b95fefa7bb9b5939761706aa7121024906420bddf1d8800a4338d938fa137cf27e9ffc51c6 -SIG = 897e6f2797c3f326d2cdb1d2673d360631f063304580ff5b4eb43d39ad6851834c9cf891d9f0905bf8de075f7635dfca601adc0f14e7b2c76f7571bfa468ed0c - -SEED = 400796ef60c5cf4084dee1801c4a1975e482e70aef961cd42e2fd5a3fa1a0fbe -PUB = f47da38128f2d012cc5797571d479c83e7d8a3409802f9a7d976c27067cbbe43 -MESSAGE = c473325e785b27df4471eefb9ebebd6461d570800181100ff36caf3c38f67c1921b157ec8e6126f955aebd90ea3fe5385f8042cd704b27cc1d6978c0e2a296695f5ef97b7c2e16ae4ff4d063c688d7f46e964e1f0a00503f357345977683d6e4c3423d56bdb6ce864b6987e085e83e70c7c1a14e0e413f592a72a71e017d505b64c24f1a1a6b813e064e6e0cf8bd4571d0ff2f267a6a13e0cd430463b6ca3b88f0cd40b0fb83d5bedf6f7d47e170e87d0a750093693eda232a6daf98125727b9588ecb894ae373bae3a445a106306469a4c2cd77ff -SIG = 84d3aa3f361844396754d80d9fa05b8b2fa4abf3a0f36b639bee9cfb5c8530a3a9cc34677f92a913c41e800f2e8041f7666d07ed85f16a57d817b1241fc5ee04 - -SEED = 6703a6232c5e2e65e0ab3b92e2aaf9f5fbd33fb46988047d6f4d0ff5387fa029 -PUB = 047cffca8b7b11ac6eacc0eaa0c5b73c75b9c637956973af9d97b2dd5b605d6f -MESSAGE = a26b30a769197932a3a62854968d760151612366778dc994576a2e0e0355496b46200e506948a0d102b6651b2e7334ca6c6eaef8bca44b425970a0b37d6bde0da9d3c1b9f51cbb25bc335cd6fa928a74f2c0dc2c6e99d37a12863a474d4df43aad35415ffcaa24d8c29f914572ab2abec3892db49e679c5ea220c2f519a7d033ac1a2c5a467869e30eda3d2635ca863431473f958d552bdc5582352c290d0ce4fa9cfd0ad42799c227ec90b7c9e5db9f5a7b6d569212eed94d323326805f2b3a0010d6c11eb4107c8283037652f50dc067b6dc81f4db -SIG = cae96879e5b603be866609d4a053bfa12a51378e99b2a2812e4789267d8f32f473243f8af74b9be73f47dea50f0d165ebf49458b73e53d88580c191a182d1904 - -SEED = e0e72f8f178633626733bcbda2ad2a50e653890f15359b6c22fc7345ad333109 -PUB = d13cee540d84b5667d516fe7ec7239bf8da91546ee791f84edd8ffcf3a083e76 -MESSAGE = 791fd613c1095292c8a4a2c86b47ae026155b8465b607dbb416477ef79a297c9d7758ce34af9dcbf1c68474f30909fbe74b7ba429632f2403aad832b486b72c23054ad42f7653a9ddb456cc791f348886a7ae5dcec7c0ba815f7a93a10fe331e903b970f7b5028be49d14bc5620d63792672b98b9488c67ae16646693e112047f0ac8921ff561c92dd0596d32df0a6e507ac1b07de516c98428d570a37db9bcd7c7e61c6948ab3fe91250dd1d5bd671275df9a972f22c2ba36804747aec1ea2416c1f41ab87befde31629b2d43317ce41cda03626286c0 -SIG = 14552171b95245ac0f0e5a6e7a2f541721068db650c6dada04c28cab7c49195f6436712144cb31913c562e30c39d8a8549fb64ffea81c7445143b5f23286da05 - -SEED = 544dafd9960d829756c6d4b3eadd44375fe78051876bf978a381b0decaaa8096 -PUB = ae4f6425c1b67ccb77f9aacfea28eaef769c8cacee035205cdcd787e8d07629d -MESSAGE = 447fe7344cad1fae09d6a7d05f09d503c1b3d3d5dfa584810c35bc41e4955693706154e2d751b2f1b525e1a14547ba7f8b232088a6fc922702d93a11cd82949c27bed645dc351fb4c1242cf41d01575412e792aed214531d94fd66e03dd32e972fd77f6947a353e1ae5e00f5a6ca77992472f096b6e7475fe534e913a77bcb0d681fdfb3a7a0dcb56d274df4aa109d4a8a37794a9276f50006696ff12ca4d0254039df0fb3f72a960da05c9872f2e33ee81d1cf7a6f48bbce0aa18c7c0f06ba55e67689e0af587b500eab79cc7f9640bca104b7fbf31f08e -SIG = a2ae117c8de4ca6d6fe75e466023bd550c26fedd3e74ca13adb625f272e175f14d5df550ace7d82288efefabf96311a123bee23889ad3711bff2b8087946bf0e - -SEED = bfbcd867027a199978d53e359d70318fc78c7cc7bb5c7996ba797c8554f3f0f0 -PUB = 7c5ae3bab9201199dfbe74b7d1ec157125bdbaa4520f501da3f248579dc6c22d -MESSAGE = 117fae13e78777b6219f020214c1b87c57046d1c09ce82ee2b5629898d9b0de74a15cfe99f80548ba913d7036c56285a4cba493b52d2cb70d6365ace3da12b1f34a2778af36ef52ab82ede04cacaf2793f5f89831e3b205a9ee4c1d6fbdab4ba4d9fae65dd79a5fe76b4b39a3092cc7148d211e85ee82ab463d34dcee9061d9c21ded2051bbd50b413f0e21a0e48d1ffa8dcae240b3495be25d93151b57aa271ab99aa708ca28080cab4804fcefa929f5f1ef3f4c6c0fbfb40bef7ea1b509b36ba1260323512379d7bc3fdbb5d3faac9b00e21f12ea1ca2e29 -SIG = e48615b65633e61993b0aaa1fafb74b9629c384fd592bd735fa1f62c5cad11291fcd8c2e91a50bfe0b03b43502fff3a5c382b9c2821907efc34da5ba054af00e - -SEED = df2df8a9d66d5638cdee09324e7b10f8ed29ab91387e3147b7dc03f7cd800508 -PUB = 5c042e157fb7fb12d4d4fef2847141ecfb57c1253e14eaf3004d6513f52fe625 -MESSAGE = 21576615c9346a63dccf0c50ecbd7c6d72ad452cfed43ea73202cc7a98576056b9664b54622905a1e7221720730ac685d3bd3977ec3959d446bfa941e725b6fe16afe5432c4b4bdee7aa0fd8030948ed6fcba7c0bdb40c2e517da97456e74e1f93d5ed676de0f4a8b0aea449404bd15b6da79dc1b813965fe5572410d76f5b5eac663050570311dc9842b6fbf8806aec03151715cacf7f21802e8bf5e98a89c0d7d0d098b73c6efc09962e36b4e030c1a64b5d349f5f2042c74428671e4a2c7fea0caee2422d85c4fcddfed32213859a69955d4e3ebb7e1b2022 -SIG = 9a1074531ed43d07bffc7f2b6c13b8838fc75cba02c7d1ec7ba38bca3cef20dc9badf3a3064a2c93b1842441420b6a8d421a960d70dfb7c70eec295f21f83f0a - -SEED = e8ee065f9907f1efa2daecb23a0425f353094da02bc2c931f0a587efc0d13de1 -PUB = c72651b7fb7ac0337a172977496fd7f2a72aea889385835e563c6b6053a32dc1 -MESSAGE = a2f0c1373473a305d8f1d99138b06b9a9694ffaa8a88222de9f729bee1305175dfb17001cc77f67b6d40c90c1a28fb226c11286db4a13e45e69211242bcdd01cb6e2c454e76c0cab881b4d2d9d3ab100a5d61d1725d866e4fdb66d93d77f5b308693b9b5a333e57fa25d1e5d2e38df6e4e9ec84159bbee1ffea926836a0101c91483bd5bc88a6f1cc4d4e7f008ad08453a0123429dd335781c7cbf8d685a8999ed1177607004a13c4cb5ea4908c542607d3f2cd6690cf1f2a7455bbd38f538f07a103964317efbcee37eb46931c027cf153ef86e43d78281ebd710 -SIG = a510dff42d4559a19a7bf0fe0bea53d3e1f22dfa6be55039895e12a5d07da5f2e37713ccb2eb216011628f6983f871fee286e66fff4be7582c961a1ed7568404 - -SEED = c72e67d8c3fec004ff618718a9099eb8ad7b06ff3b8c542a7e8b9847313475e1 -PUB = 4eb002d3cceb188c6658fec51cb479a65264ac555c75cdc2249cf1ce3defc16d -MESSAGE = a8f34135c0132ec95b64b0cbf51d66900143370406791fbb55f2b8ca953cc74a46e08b002fa2da21b951b8871f7a29bc6d38790afc66a329c397d9f9250bae0e30ae3426e08d8ead0179a3b313c908839192f289a3f3b6e960b4c5cebef0a09daa9c7a15c19d4ebc6fc2ac3cd02232e832b234edd7965d687bfeb758f70fa7963841b7859bb97c971bd557bc8769524ac4c6eeb3579793334b522d176bc62f86b4d5c0d4017036d2b6bd4e4384416ef8263139691a8606170d73c93d6417dcc1a08a537c9ed4400471a46f52907b46b10a8b6889dbb4647a8bbc7149 -SIG = 2d7bab8ebda7fca5bb3c25f51dc51b73e6ff6a3bb1b52acc7811a7d2595cd6fdaf730494418e2f57efdc5617b066fd7b6207680d94fb8c43d3d4740b41cb6901 - -SEED = 696450b557ec3c94cf1af1326475634aa81def3814ff30a02ba7f2044b59c0fe -PUB = 8584773c566b0eed3f43281705b575a434e47d6cf6b251b89803fef53534cb29 -MESSAGE = cc257829f30a5f90dfdbc247d42e388738b76c41ef8a82a5e0225ddf1e386d77080b3b9df86c54b85cdf2c32f367aba0c3b6bf888a5a6903529b6aeb4d5407a10180149114130228fc4356ccf366b77be89796a9e71a0c693f31e584a4f143097ba370363b67b2f2e2fd8d6fe8b4e8dbf0d7dcc1a8360041158aa2aff7e2a325b8e518f193a28bae05e3d52b26621af402026d7f250e86dcee301a58b631eadf4527e958f02a61587f0bb516cefac009fe51052fff53336dbd94e7266d3b43caba8a1b38e5d871c2a24a4c412fff3f7a9a52a8ab23bac9791b2b5a669a -SIG = ce8b0a5779f4f5f401e84d65927a0c28df829e95d09bfa97111b8700078ff894cf7277e34a716144d55306fc9e2f64cd287583cc8003be0e8faf26af7640140e - -SEED = a8dd35f054fb6ff6f0ab094a0d3d1c262832181df35ccd5192545ebd6a9cf529 -PUB = ca412338d3814b886d964b71925e1aabb3ffd07834dbe7dc512568882b53e4a3 -MESSAGE = 55a7ad9132d63ac161e7adb132b9189fdd84c361c1e4f5419a6df73df4d7aeb29a8dc4bf01490d4f484e2d12077517f5fc7ad0bdeda20a6cb0227942290b08c3fe33ab9b2135bc38a6579a54bd982f7d1417ce867117aea918dbd3dd476e7eb5b5d3c3e48a864a2f942a31501aa2b29b53b80513c95d6a411844f0dedf16a29ac267d331e53bdc2539bfcf32dc9b5d640f1231e2cafb0ae94bb5189426863364262efb47b5b5ccdbbc93324216a799b6f50d3704f15ed59af6cc7d910cf062d1be632dca5df213d487d8564f2b2bd7d818bba27c364013d92d7f72625462 -SIG = fa709fbc8382af83d11812618dfaca452eab83e4c53fe9e5858467d07b6767e17975c1e06393d6dde15a34d9473d1cf4d6d8c2d57394520080fac4e43448be07 - -SEED = ae1d2c6b171be24c2e413d364dcda97fa476aaf9123d3366b0be03a142fe6e7d -PUB = d437f57542c681dd543487408ec7a44bd42a5fd545ce2f4c8297d67bb0b3aa7b -MESSAGE = 9e6c2fc76e30f17cd8b498845da44f22d55bec150c6130b411c6339d14b39969ab1033be687569a991a06f70b2a8a6931a777b0e4be6723cd75e5aa7532813ef50b3d37271640fa2fb287c0355257641ea935c851c0b6ac68be72c88dfc5856fb53543fb377b0dbf64808afcc4274aa456855ad28f61267a419bc72166b9ca73cd3bb79bf7dd259baa75911440974b68e8ba95a78cbbe1cb6ad807a33a1cce2f406ff7bcbd058b44a311b38ab4d4e61416c4a74d883d6a6a794abd9cf1c039028bf1b20e3d4990aae86f32bf06cd8349a7a884cce0165e36a0640e987b9d51 -SIG = 909008f3fcfff43988aee1314b15b1822caaa8dab120bd452af494e08335b44a94c313c4b145eadd5166eaac034e29b7e6ac7941d5961fc49d260e1c4820b00e - -SEED = 0265a7944baccfebf417b87ae1e6df2ff2a544ffb58225a08e092be03f026097 -PUB = 63d327615ea0139be0740b618aff1acfa818d4b0c2cfeaf0da93cdd5245fb5a9 -MESSAGE = 874ed712a2c41c26a2d9527c55233fde0a4ffb86af8e8a1dd0a820502c5a26932bf87ee0de72a8874ef2eebf83384d443f7a5f46a1233b4fb514a2469981824894f325bf86aa0fe1217153d40f3556c43a8ea9269444e149fb70e9415ae0766c565d93d1d6368f9a23a0ad76f9a09dbf79634aa97178677734d04ef1a5b3f87ce1ee9fc5a9ac4e7a72c9d7d31ec89e28a845d2e1103c15d6410ce3c723b0cc2209f698aa9fa288bbbecfd9e5f89cdcb09d3c215feb47a58b71ea70e2abead67f1b08ea6f561fb93ef05232eedabfc1c7702ab039bc465cf57e207f1093fc8208 -SIG = b6c445b7eddca5935c61708d44ea5906bd19cc54224eae3c8e46ce99f5cbbd341f26623938f5fe04070b1b02e71fbb7c78a90c0dda66cb143fab02e6a0bae306 - -SEED = 6bce4dfd53bfa5506f2f554d2d994a0dc40cafcdec7e1be050006e5c5a4b38a1 -PUB = c890023728d8397070291771e65e034d34d4aae5e247653e4ff4c074591da702 -MESSAGE = 3239190747ee33d40bf870ac9ad49d88ee320f63c05257e8ab2c60306597ce76d1f1e792ab6a65caa544fbec20892fd4960594f31b3763ef07d4982eae4a2dbf3377dcc1e3f95e46ed39b7f0222f04bb5c3b434c8f9f310de9f122a29f8241e81e206549ae628d2b8ad768972c98847c1188ad04c835356378bef79cd126869405b129fdbdc3bc489cbd1399505dadef7617b5be5da173d3e80e5838c99e349276242729e0219bd7476ae5c4f81a12878fb483a6c0e9b0df2962eb0bf00157782cf768a1b71c010169ee8522def0024ad7e45775a290639c53aaf48198c42de75c -SIG = 99ae6782ff27646c27f61e23636ae1881521cfa5ed256f70bce7ce00b68280ce8e0c82aa765afb8b5a1ff2fe42c57441e458e443dc8b123477ae33d884888c0b - -SEED = 17861a8d4154acd4fa9c8fc947c1886c11290be222872ff4f8cd25939e4d1361 -PUB = 43773f4449065eaebaf8937baf758560b0c4d2de46977839b3b873d5d7d5fd8f -MESSAGE = 184df5ea3215ebe180390b0ff042ba2381155a038dc732f76a01c7e70f82d1ccc9de9a0596b3fee447209c992684f643df21f4cf9d179262790e8623e42472dc351997e6da189c07e1e8882c07f86c6337ec0113912cf92215c8de1982b8fc57bfabc55a3e8736f73610429d97feb51d794f505d0c5a0b3abd48ef7f55a628f90b8567a1c15ea9d190d7bf4ec2bc9334ada6cb92808dfc2064836fcfa46b96fd7a5d6f4b054dab09b73595feb89ed005b9ec9d3188121de69696d64e7c7bbdfc1c469faf148c38a7785970afe1acd06a92c99478fe44974e3bb2095e4467e9b2e996 -SIG = a5ee024ccdbdd4c21a24709ec53dccb7ee17626dd00a093d0884f5b45c4c9d1691840151c33c8aa07b69b34e16f61647ebe793ae4daa70cff48e6ab42ffdbc00 - -SEED = 0a84baa54f11cf17090fec61f3f9401508a3a03887aca1a7939394b1ee40a925 -PUB = 309a73c62d23d740f2e93c18587ac15e7ec480d25ac0794e10f8cd461cc2b130 -MESSAGE = fe70017b14678b0d3ad03e183d6f53314378379ab3da65b3511257b3d54086e86f2031139021391af9d72085ff7c3dc8c1e2d91e53333855423d0f785e2cc5f8b7799fcf1b70e6becb788e53e9020f2995ddb0c383a1f81038fc3d543ce0a38c9c288a9bc4077f4277dcc6c5642263fcfe19688005a603f57675d2434f3ed1f46d32f14eaeb073e83ee7086da2fb67659d3fb68c62320b7727b3b8ea006576bc2c7e6b5f1ecefa8b92e70c92c88951d0c12d91de801c38b7ca5a0a04b4c3429aba86386e96e06afd20d4c5c2fe2b9b4273eb05201a79273abdbeb37ed1830d226b6bdb -SIG = 4d870bd53af8f13f214d9934ec903ac48284092cd9b162a44ccec851fa942de715ccda07b7991d712723e7a4d5b4f0374ab85ac3867e0b53ebc46b530f9fed05 - -SEED = 38379423dafdbf25e19d7231bddd80b4cefcfe2aed932584dfa0cc3c9f9232de -PUB = 597e81dcee9448b77de6829e7921c8a390535d89a0849430aed66364ee140d8b -MESSAGE = 36125ca66668802906237e63a2fe5ae610f11a7cf92520d19e6690a3adfafd5d07a784bc1a0e185273d11d340d5eff901597dedf450c4699d43f3fb168d557f6c9c03077c3cdc370d34832ccdf2a8e3d75796490ed0242899d25ddf44bfc66f329cf4c45168703c31bc9202d890f3969ffd3ac35a12818dca751ceb8808fe81efa26a5e0d200c5ec1d94a5097ea74b6498fe288f30c48d727e9d3d35c8e12d85420702556f2861484ffd09b4f12265cc9abafeb82cf590028895a7d050ff57ccf5f28022d016ab4094b062e48b66fd36d1e19626e5215efa40fb7e3b7062f81e954830c9 -SIG = d8b50a88aed6f2a96d082213adf8b2519f6a0bbd30dd3cb0f3fd3ce1c643fc029946cd43462ed22513f1d65fca24bde3818166baa86daa798792afafe0c1a10a - -SEED = f925d274aaf1fe1a21656237385e97f7783e78090c5d4217fece7057c80f426d -PUB = 3b0fc370be3a4b19a88ab998c59504ffb59a87606338e673df5b3fab4d9bfb8d -MESSAGE = 143caafa5f62b13e43dffa49d420fa99f771b1926d40d6cb2bbb427f27b6c266eb3deb2d8bbbd47b8214ad40251cb1907ad65eb94193e54ad85c6700b4189e80f1cc0154c63ed151a8bbbd30e01637ca58e70aa3ee52ef75d0873078a405014f786eb2d77b7f4422f927823e475e05b24245f9068a67f14f4f3cfb1eb30bfede7b3262230ced9e31361db19636b2c12fdf1b9c14510acd5bc18c0ddf7635e003503e6f71e1c365cdfb4c65ee75b4de0694af87076374d631e6c4b8e240fa51dab5e1f80ca2a06c49f42ea09e0475defb184d9cde9f58f959e64092aac8f2027e468126f2fb -SIG = 79549a317d10a0be322a94a151ad11e77efc4836cc8006a85081273d7602a638963a9caf19c3edf1e25fad1e9d68701a71dea727da6a5c5bcac9339589224b05 - -SEED = 971f806be6f07d41be8830ff8dae704b08638ad6cff722d8432538127b769625 -PUB = af6ac98dce2078a6c73f6097bab63f205caf6953afa284d042bd50a4fce96cb4 -MESSAGE = 013455d049aa54ed995fbd94e6369955495395e4438822259b1060e9a34779042a1a69211f6ea2077399dd234806ba0b353cd79a57e1c49b250ab27106dcde576ecfa115eae461febb12d2da25ffcf17b715f8d95c2f0c425d5a81f700115b70d49e1cfe49fcaa14fa205e28ec85247f1a6e7128bf3bb3060dc08464bda6538540d0ac472093e5a0720fde2f3dc4788e0e9b0dbfe2a2b5f1a0f3f80de984025b15c65af77f671e1c5e2840444de5c7eda025e6dc1a3ff16e26cc54cdeed56be73f9b01ab2b1bc16c8ef58a5b76dd47287807e5c50f0d7c0a5b8120dfde645a012c5cf11491bc -SIG = 2037a0a7674b84ff27d0b22f62b4bac65e2dc0f5fdc899feb7800f25c29981dee641c5a50f8b9410970b49d2d53658c89ee16961dccf5391a6918f2a84eada0b - -SEED = 2bb0652f8fff6901991148c68a3267877271006ae9589149bb206850cdf52fb0 -PUB = c03b77be983e74a234c1986496b292e139992eb7529e70b3afad7ae4fdcf8a66 -MESSAGE = b923ca67e396d8656fa3dbce8289a38bd3c128cefb30efc1862bb944b4507805419824ce2b83d690ef4cf107492817143bf64c024989af1a7d2e1f5ac97874f86bb0d3773ff840f514d9a1394a3959b011d3a6b816a3fae5de17b2a9ff349863d27fbbb50cca734108751000d6358ca0647a93eb49e2e7af06287d48f2c09d5c1c73e4d8f77ea2bcaa7356795b26728719bed5ffdb821578bd5d66bf92edaf8b238b2bbd7d1e2c30a787f901a33d0a76669a9c3c7f2b552ccb8349c7ded5e1a46170cf28e359e2fdd54b05a562f528c68a56974df82d466637c8e53246a7217e4386801e0e3266 -SIG = 4e158deaaec3d88941296af2d27341012b0241d4e0f46e435e375c9875e89f5e32c057b527bc3411af096a77bfceb45b983efe455e3f03155d6bc7b0acc8e60c - -SEED = db9b812cb3c7c03b977f487d3d65ccd9cd2f3dee11602067dbfb72b589ff3f79 -PUB = ffa038ad8c3b378ce75d65844d08e3d6a92d194a1b7862e9d9720d20679b2944 -MESSAGE = a70092c7697cd4a209567c38ba7fb71aa8f15e5827a20876923943fd6adc659c9867ac6f58a61dc7cec3d362411682000c1a9ad1295eb8b70f242d86b5865eb76b87e3f2c6941d2612ee3bcde8f19765566733152ef54e95690943285f78b375f4036585d4739deedeef6d946db61ca458ef4f650da963c385e29dfdee415fe495845f55197a870f8cdeb5a010ba6bbb32bf1a588cc774d4890184c4b2924a5b8073313bce226585f1adfc229c90bc6cc9d212e62f05d33bedac961d77cf8c2620e451de817f8c1bb16a2c59ff804b635a73a8cf8c181b3f9401c3b643d18a2f706ea9cae47071a6 -SIG = a628a77421b2abab576eed35d2ee3d14561b21fa14a6e2fac263c3eadd79f2fc0669f9429b910b8422b4b29ac026a42e98d181be3507c5ed7c748a1fdcf1d807 - -SEED = ce379bbe2fa8abcba51c7a7543de5b7180771b3c44bc6b41892e7b88979bab90 -PUB = 7f3cff89f41babf4fa64cba33a5bb17f413bbf2a1e112b50a8e9b1f821d849bf -MESSAGE = 001a74f095c814d3beed67a8d15fc18efe235dc3f6457812a4039b7a46fe9a0e9de81a7a4e5fbab5ebe9e1e4801bd11b45c9f7ad0636a09bff42164be5749a04c02f0ab61f0ecfdfef799b827da6a274c8d3b39f2e3805a6791287eedb2314d3f842b558b9b489afe1ed37bbbcfc5e60a431d5ac60b39e946d903d6bf6b140e12c7e07f9ed7ac46a3999c6245c8ab1bdb21879a317a3dcd257a5c4f349b7f59e4e43d62d9f1cd16f518f1ca6cad37e2cb20f2598c4134291c6b8a98aae5247e26eefb76aa38c9c8231c17e9dbf271cec80fba5b4a834bd9be81ea841637aa9cdd4c4bf26d7ad24ca3c -SIG = da98dfb189385b2c853b6cf375738046a8f27ef27974abcecea1db02989b951fe433a6ce1e225b3fa82032fe060a7d3f6c183fd1157f791a064b407650571600 - -SEED = 2b2ee809d647023e7b77fc541f44875a35fa941d37f7c5b21fd34934d2391935 -PUB = 2c29d53e1bf2c7879d73d20ba88ca07a0b216d7f6d05d93663a65c3d9e10633a -MESSAGE = c4147d64ebfda41a1be5977262958104e940c3876bcd5b6956acfdec32c660914d62623c210663cb2cbe6249d7f5274991c60e950e8e2809049953c69581d2469f4fe982c7434fedd9d4e00ae08896d62cc1fb984dd233150cc2483e159cff4097df8c036bb633003abbfbe18c8fa79b5a22270838123fc9be39b8892c80384a385028c1a81ec58c8f21060e78afd2c04bfd2d30ca3977c6edad518cc1e2004cdc14bf3d15f5f528e5af277fa182275870e5c012f5f82fb1afd04edde4578ddd2160a1a3dbc050e80bdd811bc88ead79bf93f010cd0fd4433d0bc348dacfd0947cceda62bfa49711d013 -SIG = 12d90685775572c9eabc9be2574ca9ae66f0e652e578b21736cd6e654f7c6b1545883d56bf760ccfc3cf87544e0004c798061257e130030cb997a788369a9a05 - -SEED = 4ea18d6b4af8053b885ec188be48deb86ffb2a69a4cec86637bbd7b41b807c46 -PUB = e5986059976233ed77382c3d9959f34e317962696553e86ed1e5902c4bedd167 -MESSAGE = e9c89a1a1119373206ce40ede3b89a82f89462a1dee9e789e9845eec21f571c0faefd430ad338e4a72c047a39a4259580387fb9aacaddc36a2b51e7b60a87ca1321ff806794cd6dd4549a4df45c2dae3e539c4d7d06b6e6e9f466ffca2fa4978ce3dc792e44a6283880cd138a75a226f985da41ffdc0e32a5a85c85fe9a43ae78fcfe57f4dd7540a6dd3924a49ab39eb69950d421151d96b1e4fd3935890f634cd52a73a755f5c2fb72f9cd5a2e67ea930915e133b47cf6b7c10a9d889c6af6b5f1f4f51094d27fbba228ac2268b344027fd49e426343cc0134399b4b510aaea50234df42c37fa1c4f4d0e -SIG = 27570c002a487d000ca3928b83cb4319722c46dfb4cca260de790ec0e3c1932688f87362952818b54f51bc7aeeb263f960bc0da8964bf312ef93e81f06c80b04 - -SEED = fc1b75d17d3807217351d2aa40d9b04f525b89ed3f5fcdb311bec2aec5cb7ece -PUB = 55e484e774a4392a9d6eeff835a8fbb232cf6276a89c74fc0d1bb2045a8b21be -MESSAGE = d031bd11da308097e3beb6ffdb2600ee6a193ca6d8324501c972b1a25166fa7a369f5bc882ea45612cf02580254d21b40b0363237e835dae2656c1b7f4736e88be53d6b119c07f5729bbd82f67de03588322879243c5990a7e61f56907b24171a57cbb0bbefba2316277af9326f9cbf3538bcbf6780be41825a2ca774b41bdb1cd5c608851ec2339eb2f4feeddaa891a6326b29d97d7fbf311e3bb749c5d4c058dcc14f452f9334991e271c16d6508c818633927f429804ca7a38170f1b9f6bd73ed675e11e8c0d321fac912730b4ba2f7c428534adcaa4dad314c55807e6c642d494c6b2f0e8cd129775cc0 -SIG = 9a68d151fea3909893359e60b96b68b2a3e2946f2b47b875398a1e39eb01463d35eae7d976f833a762b51f2726ee0dccad5ce3600564fd9dd58c23807fdffd05 - -SEED = 0d0bf4d42ef810b179eb841771de6dbde76361caf894e42a14b1e09787ea3e06 -PUB = 7171510b43fc17efa80b15e320b1b0a408332542e0d36e4ab9a649cd941b5aed -MESSAGE = 8e2179975d0a8e5a69fe875a3cb1e79aec49c3853e30dd0320fe3ebfb638b82f89ad1643036b37e56e0b55e0a9e22a4e283d7a27485ce9102db6787d6628b77913e10896774e495c26e8bab26e7f9a94d29aaa36aec9c26ad3f50e5d8c0b7698bb5f01b876d0d65fcf5e9e32cd7b89829ed05b0b8f63a93858985bc9569fce429fd37a211abed650f585c3b55900443b6c5d6e8a48ba67deeed07b76e969fc88430fce2709c0bb5ce926ab7f44e0cd79f4ec359ef76748883fcc3d026edd06c8b9cba54b990d30aa41f1448a10893fb0539280c599d42361433a34cdafd8ebdd92efb9c38a36daf4c74060c696 -SIG = 24446bdf03416a4d08614466fb851db50e91a623cacd1b0b35660f3cf933200e15308708da3499a5ad25f0f0306b7942762e20a765b7ca9b901c750b3a95320a - -SEED = 57b5194d26abe4ab2116c0f03d23dbe116d48825a25e77d64648b43692ae25bf -PUB = 499c02dbad2a4eab3b6ff1aba3944b91c3f273a382c548a6f3a19c83f0a86724 -MESSAGE = b4813c9d13215fe9f63a78ff7ac95173eb810b4613f0f48d6876b2bd3b2c72bc7d98cb1ac32bc41ca47f09896f79204ecfb8264ce8f3c3e76dc124da8ddc6e0dfc1e13b5a529f20c82613fb9a82e5f5d77326a861faedabc7325c59af33dae6744025e649774fc4f79134bf9f6e3d5875dd91bc8a14cc36a66283d01d8d108c13327eca53057ba50bf210c19f139de6494982646198a1246c271b0a368c10aab95cd8961235d742df4545be68bd010dc0db23b673e623609e420ee76b1056c520f9ce8fbe8ee1863df97d17b7174636c3a2b612295091948810d1d4b8a5843760a2887dc55ef512af041ec54fad3 -SIG = 4c7345960c8fd48a7dead71dbd61908468efa865a135568c8f9ca0055483468617a7e335840f57c6cd8f2c9805cd47a9d7cdfde53da8ef4f1adbb6f698aaf100 - -SEED = 068d27b21e2acfcc19c3e9673dd44142d98aacae894930e20ca067439e749a79 -PUB = e22ddd396f955bb90e284776aa76e921e50699d0ca8914a9b7b841eb5ff47d6d -MESSAGE = 1c6815423d1a2c5ebe8828d1646527c17b2006e547f016b5350f010d79b13df4fb8c6ed57ba9c26c3cb0e0a64178b650a3ea5444a4fad5b20a3eb8caa702634011cf7892a0727b6e8150b0770429a37a8a0bb3a7edb891a7c90240bc0360b14e6dd770a990b31b31f33ddbf653988f82742e5eec31b27368eb0e4f1ecf4d676f49214a520d1e5b2bbb59ac2e13267e07a0cbacbed9f94d7473ed697828b0928fcc616ee02e51fcd8db4d8f7533b7b139a05e06f9e0eae32993e3025aef0590b3fbb4292a3ac40765e8584ead00266acdcbdde1457a03b7d57bd5c9e64fb06b64a50f35f0a1ec34b6ddbde767b96ffd -SIG = 0c173c488ad001cbb9c43d7b30a7c071a2fdb08cf7f37daf71d7ae7128dc0d43f0f095b2929c54b773ed4a1f0bf0dc4f364f0601e8d5ae062f5b78c05bfbc702 - -SEED = a34d52563159e0723e9f3fd133bd96e20adae623f8c798013bc36b441489bdc2 -PUB = 1fb658e645de6d3efdb083a73fbd592fcd4b800e03c7bd681aeae6576bfbbe2f -MESSAGE = 1d215f85c089f35f307a746c66c7c1e41d6ba37730d759e6e5622d6c6a198e40f63d37873b715df7518b3c6bb5e95a467726b97c9a0f8f5dfcdbfd1e0de357661ddeab555042b945fd899fad6d382d7917da9e12dfbda0d69900b3975165a73d0ac9de01fd3048b8fe5f0b90be67e03dc22f653a0a13eb4b0b753f3f3bbf787369ebd8bf5e00eb78bf0b3515a91e68b1d5fc6920bf4f4259f8a730efc7f1016d501ef6fb7cb8366fc8e716cfa50ea8b203cca1a316707e0b0fc57eafce82d62f7ff3ae04ac8fd041b55b19a352a69e6d4b79d0e650175168e34fa3358eac816cecf2c8dd1bf2a589113e91bb818f91f8 -SIG = 5fab5a7140d47873684305aa6353d3862f5fc13e54a40c9563cceac8f74008c6c445631fa864e0f1c345b5954f80056aeba25662b78827b5e8e3a9437813720f - -SEED = 58dfe768bf52118494b29975154cf452bd9746dc7de1d6bcd18ee6a05acfd858 -PUB = 0f1476c6cc2a1b4764af75805e77341f14a0d8b09c6a5b2ea287fd517c3fa6b9 -MESSAGE = 609794201c4f6faf488790d61dbff3f41b328c5b0695cbe9aa8a136d72b4977b21b500f216e9f32168ada8c13bff25327647e30d8a244d74d88303abc90b7f71aa07ca04d17bc8a0167d6e63fb88baa1dab81d50f1e91f46f5af77f2e8408b826336a35052efffdf4af79596af1bb2259f83c1bc109cfdc3dd50fd96d310f27ea4c6c7690f21815ea92bd79389680cfe3ed40c80181190688d24222d9a1ed52ce6a16b41dbd9107eb6d2e3594e4494d75dd7c089e3b26ffd00d1003c92c4c39ae5382ef9291491a880ca4ec3ac2b86e66719b92b6f7cea2cb0bbb1cf624d0d1abeae556e5f73909dd546277037ec972fd4 -SIG = 977137a38af44f4b262abff7e07282433c58926d562fbc6180bde6cd9497861fb6d955cf383d999fa1037b8b1754ce888c9ffc1560a451d0e9db8d74d2940604 - -SEED = 5a63ef9bd7dbf0e89fef155983659e8a0a6ca002bc42fad5a45af8e0281923f4 -PUB = e632f4dc994231cc1790c21afadaa977a589b0eb0da19fcb2792911b15ecf8af -MESSAGE = 796bc8361c6e8eec39838b24f53971e820f82361e0510eb4def1db2512387d6bf35bbdfa318879209435d6887b1410b3ebc1455f91f985e0fab1ce1c505c455576bca03539d048ad3a0ed1f11c73bac6809e2ea147975bee27c65261aca117df0fae7008e2c3c130bec5533ab89351c2140c9d1a62bdf688629787f954e1c610cbb75edb86209d7c357cd06ef41931dd5dfd1c7d407fa4ee1ef29393beab5713173802cce2d56229cfa76b601662c4d9a84a4936c52abb1981378b717eb55cb604a68d34f03b219f32226ca0e669348a2d8d2453930eb6e9c2bf66fa4e92c75136e148cdb034130d3f646382e1c71579ac70 -SIG = 75461f99650c0368058113a15ba16bd2337b2e633da38112878c4834fac9ba2e307c866c02af79bea33659614cbb4465c57ec3effd4c478ae38a34a05cf1ed07 - -SEED = 8b2f06141e401163f90f674b04dc90dcb6dd3386419339662ecb0dffadf2500b -PUB = 54da934a659119198553fd4566b660d8d610adc3290cb84829c894148cf3f67e -MESSAGE = 1deb25d43458690323a7d26a26695090993474f467c6fde5ddb34da945be3cea2f6b75652ae21cbc4fd22763a1b45583e1c3e88bbb5fea2049b7336c91159988c01526824ca3bef16b362b9202b8b9754185bd61bea8f539aadf4a1ab135fbc31d2a8e33178073106cbbc02d4cd0d3c8feaa8eb733084356251795afbd78ac3c4f8a3ba19aed755c646f35569c7a6c675b6d6918e834969aca03f71a2e72ccb17003bb75b62e852aaf58b3baea89bcd64a32eb14a6b9e10de48971e53d0e9ac99a78f42de0382ef0e80ed3cfa343f35e4a9983b9aeed986d3a57f47e5e46d40e9d677302809a2d37e4ec011f051b4d031ed600 -SIG = d68e3750dc56432397401c98ff1529db9ed48fea246dd4ed383ec74c1a463aeb784c87b1fda8bbce970fc97aa9807ddbe95d41fb022ea68c1e311654fa1da207 - -SEED = dc649fbb1bee0a44814d6d9e9080d5d90c1fc173ab5fefed826a74723a774e0a -PUB = 0214c89f3867ad2e8870e50f8c2a6254986d9c220e3338411300cd9c6404d4b1 -MESSAGE = 328700a8ae581c1edc4e2c00c78bf4606097f9bd75aade205a243c5fd7434d6222da937e2881a2e3c574356d4d5679301da99e11cf749c27921c8caa2ab2a564d87c5df8ecf1a72b680184824f6986022e3fc98bd2a21c3455abf1154954fb30c89882947b02f35af7b1bfad05237d242e2b74832fc536196f2e59d1acd0c1db6f1943d0f6043bbd6a769083ed66ba0e05a50feb0acf72b6c16ba9af039afb7fe2a4aaeb4d06181c5a1878689e67a3f5d0ad39e794d6239a7e0a12ce820c5be60fd5f1dd79702f49d02b79755fe873f5785c72f74625cd7e2428262597d31482c2c0508801fd96319d61b91ba253a5e722f414cf -SIG = 0e0c5e4e184375da4ef7e2a2e4888050cd84e2fe21d08e84a852db2be3fbc372c472de0954dcd1dc11aec493c569f40fc6f77f03ee524fb06ec40faa1d6cc10f - -SEED = 39b8062da43e64e1676765d62c7fb8e0a99c4fd417d6f7e3319bb13044205f3b -PUB = 6227cefe88ea4fb27b37b5f797778bd72fdafeadccd9aeb67ad437ce08fba6a8 -MESSAGE = 740af679e3069fad059fa4825fa41c59fbd484aa649303c27c4f7a94711c5b713b2a6b8987859e2271a6a71eb0b4a15abde4f5168f6cb9dbdc6a27a2a13d52c9720896a1f4ce3a5345ee793b6cc3ad80d7d58163d5455b9cbd073e2b7adbff95590c7172271bd91fefdbd01657ee1750651036cdc3560b444ca2184bf4f3ea89fc973aab6fb4a8ee5704bbe5a71c99fa3b5ef0d0396249758297699ae202b819690dc7ac4692770346907845e2210d5363adeec03f0fc7761b7e0ec0fea1bcf6b04fc54b3e4c40d19b8fa649ac8479e8f80730c0c94e9f4a1ad506f2bcab0c49540f6decaa77b3d657dc38a02b28a977ece482545a -SIG = c5f626490c0ef4e1efc3edeb0cbc3f7de267057fb7b6eb8f0c813584965bc5c421feedf54241cae001ec6d5e25c9b1fba0385e5dbd95a06ec1d8ae519144960d - -SEED = 52f4675d8ccd0eb909df0a516648db26fa033ba41d43fc3845896d456e14265f -PUB = f39e7dafc97b0a84dcbf7fa14a9403ee1fa92b85e5a7e5d05f031b44ddf1f794 -MESSAGE = 74427110857cb4af0a3342c2b52997bce1a0db6405c74e9651c5b85979acb071e567fe70412c4e0d8c9fa421914f6a62f2ae420b7b2f4cf80c90574221222288b65867eaa66e7e0a0557a26c549f9a7a4e70838ba4074b4cd7a9d758b378b88dd49441df802a444dcbc30624933b59922f33c20f019fe78ee24b8fba79a682f388505ac9c97f4eb87c611880026b4c23306b865173f5d716abc6cd9a9906db3430136f754129c443b20c42be2fbcbcd44034d714f58a4ba8e756607a02b608ef49648f2ad0cea99e7ab30a8dd7814004f725f49301d7b304dcda625c296d928cb581736ab739c86b469241a8259351fd37b4780a9993 -SIG = 4bf668827a720af68898a06ea7b44545a34ca896ecf311feea47e0686d911fadaa03118997153c65361fea15de9bb891b8909872045508ffad0cd9eab21a9702 - -SEED = bad73c9fda4ceb9da6c701c2a6e2efc0467afa0a74f8750c52cf1fd4c8e7489a -PUB = bb0f027a9035376e1aa3206c3d774475e351f5767ef86ef48a72c037c24cce62 -MESSAGE = 74b966cb780771aee63d734df3756702d1d5fdeddf32136c6358b836318a4f984fe71e7716adddbd649eba44cd4282e0055d8c1ed2d35123d66e5a98f1c0838ded563b9a20eb8007538fc7b0713e7e485e3c28f6ebc421a29dce2524db7f29205761036ada62e5b0b7d5b7f294ff17f338232fa5fd42b6f7253304092d848f50735248595da0f7ef28e568e9916bfc56d7ed0d811b59d5d891ae43e1b198071306bf525c678c6343998005fbb7869d1c40f8cac807fe2ef03f3d5b933f58978ef2906fccf7444a2936e63d928c690926c9c994ed3d666263e956fdfea27764bc5f74125bc46bc102dd3e5ff93b5e123e4b38bdef697e15 -SIG = 197d6b6cc88a98c06dfca0c01225edfe38a0b2289f29f8a44ec0816a952d585e2d59b5b08de100c0606296ccf5e92a99e093623144b8b22db87d929225546005 - -SEED = 707327a431dba77639b3966b2bc095f8eedf57f7a200e3b0077ce420389c92fe -PUB = ee2496910864189fdaa3c7757eb3cda9ab1e70fc9e7f71a38a0bfc845931c95a -MESSAGE = 32ef31b64eee700fca2ab21a267f8d9d3bdc689c7538fe959bf713fa995db2c0ad36dde430a8417d437b72c74e26dbe31d93701d4617fe51825cff7a544fc9f44e4345e14b4b11e15f26ffc2af8035f3f970e4dda44c0ebc0363c2b56fde218663bf78839092538fc2f39153d4eb29da0c1a08aa966601cc68ca96e993b01b173a261b2ef327650382f568fe944855b0f4fd9d15e752ac74dcfd37b3786fffcef23339c21e9270dce8891dd5eeeba9608fdc7b6fbcc99fa1b5903daa0968e1b691d19d06f215ded047ef9d76610f5de220f5041b313faf9e96c9fd7db54b5225726af435f9cbd9fd87ab40ce8f2c6940b55f0faae87850ca -SIG = fb99029feca387a5d765961e361d7172b98b7e0f11290bb1e5b57b51bc2123d0bce29020392a4fec9ae6a72c4c386cea1857cb8f9c50aa9a76d7f1687fcf2900 - -SEED = 6aa5c9f008f990473ba4a6286a416614026661f11e1a24efa81ac35852d1d070 -PUB = 605ac9b4dbdd5033d6c828bfafa93c0039440aa11ca724ae834043e07bd032d5 -MESSAGE = b5165d3963f6e6f9ea5657e9f07ff3a321eb338f9a8c3d3c42306b2b278978b31c623a631be3b04c41edfdeddf538e1b765bc8785401c1af29d0467a64411c497395d755dca03ae3272f4bc1fb1918dcc1ed6f04d6498404a8ce1409d447f570a4359522cc54629202ebe507ab693843141bd5ea0573b20f321a483ff383a46897f5926fe0b8afc25572707b63eeed283532928a4144196497942c572ac547605139256b0aa0eaf04db1a256012ed453b173ee19ad6e9b1af3f45ff3044a641f8c8eb0ac7bb45abbded47286b2a069d3908694ee06f2fbd0ef605a7911026ea9ea3c4913f38c04d8b69565a7027867ab3092d05f4cfb18fc7c -SIG = 9756303b90655e935251032ab19cfc95ca1c2a2c3ea28b033bd47066cbd4c7d8982a8b9886f1b9cd02e88a65564da8dcc34f308ba9f10144ba469c2efa49e004 - -SEED = 8efb8b79742be21e6d31de678bc81450ba8621082cd6f0003e22861e2291c481 -PUB = 33381e356c4fd386a3f7b969afd9f5c00d2067b698b3f1f00f3784202d3084cf -MESSAGE = 6b750325d3a0f08a147700b51a9b3725571094818ed69d1f761013eb86f323f73c49f5e439877c2783b336d1f1a674ef3e431fc1ae0180082df5fca69f848139fe6ab6739a0592ebd6d4705c7f0136b22189a11d60d4d3c9bc80fe7d7c00952d5742f9c0c2121fe792df133f221db991fc960ee64b9d32e0178e542bce8efa8d03ac8026cd77ba8bf0b24215b9faed2eaec920e925d5ec46fff6bde725e91c8280e4ada232a5433ae9680ebb53eb55553147c93370574854896154514299c093219a111dca4e637ad5001338c6d4d5ee9098c65832f7af835bcb622128423036c79a5737738a7539f8d4a6b8b221b56d1401aeb74d4571bc009d -SIG = 923005cb4848402aa8f9d5da74030b009444924c214ad600ddbab4c153a6ff022b53cf6364cd7ee99bef34fe144da964edfc38a0ba633312650ebf0e55a06009 - -SEED = ed046d688b2b0a1bc3daf2119dd321a607b16d2a2d1d963add1209c665b5ccba -PUB = 8734f1ffcbd71cfde290017ea6253e580d59e65b541b46521f5e5ec1451eaec6 -MESSAGE = b9cc90fd8de2a141f95116db3b04be83e98522597ec2174964245180b9a473767d6d470a217db5ff5a1ab777e1e28a0b16975e2bacb873020444b47ed8326421b90ebb503688f090c11b3b13617c5c5052c297a41e2893775e34d59ada49d994c0e4a9f5220e9f0315a67705a3ec08af0dc724b5cf67ff34fada8ba7109ed2b5a8907bb403fb1a838b4b059f18c792d7bfec05dee0c9cbbf1753409d7db3aceaf47b4c61398497b0eca6c1f8ac08a7ea1eb9c40bc4e92e888212f7d9ee14fdb73158160944ff9bcdfef1a7469cc70f9474e5f24dfffea585f09eaaab4be2afebbe8e6cf86d35680dc5d1b92913e848256ec736316fd0a2142063b0 -SIG = 721bfd4776cfba13330fd37269e979c1d7b6ce54a51b82f456e137378e582f192a12089da5aba76a7b161813dce56b72892a35330c94f7ff21d09cf09e553504 - -SEED = 76ac8e570a39b3a0232c45497537fb2155acec3617865ed1df210f00b49d1b8d -PUB = 312a3ad899ae6a25507ae6e4524e10b63a6e7ae53d9cffd39cf28521d93533d6 -MESSAGE = 53ced9db2b479e59d3ed643f7cc3784c24b8bd4c63206c72e23fa850028899a41ce1a8bdc003f12b7c29972c9a08bcd231fe0e1a0fef0bafbfa4e0e027d72004075ba37d490eb9964e783bb98f9e503e9c1fd3d23fb0017cc7c7a9f86d171f041e2355d8c5e6229d34c7eeacb6358cf3060d5d265bae2004a558878659a30dfed5f2ec788b4e14397b5d00c29db5d4ebf16639a8df292a3d24f6983cbca760d903e976f5b698642ba1fed49e79c38f4bb3946efccc9d6aefad336d558f78e4f205422e10384a4e531e75807efb389d2af4cab43825fb87f196a9080769fe7585782970a6918affe10d20d629b705845597418d699de3f1de854f94bd -SIG = cf03f525913c44303b2f80079393c21c1158146ecf99636f5d97adfdd9f35839804c23804cbf1e553cfd4b73f689a9143aec298f8276e1e4ee0891f1ba75de04 - -SEED = f64a66ba0f0819f3001416c220bf52d860130a19764aa8ab38d15b2aa75ac022 -PUB = 8125253cd337e00d45b45079b585349561e5f542a81f6d2fcfd985c10feab2af -MESSAGE = 8072862ed0ab35921db5ec2cba8e6aedb0441fdf47491006c01e6456ad70fae3c4152dcfbfdbb8f0fddec5e96b12bf67989ba96793f4861a11b63909ce8d19b8ca64a544b31ce051fbc88e062806d9965cbd2967b01614e86b532fbf59843218dc9c19c80315f044731719371092a3da38878bc4cf77de972e860466b8fc45e465dc3d0ebf94bdea60ef0b9891ced41b997b11b31ee4167db60c9cfc8b85beacfe223cc1829213774085d7c06d2b2e632cc21cd9660df47c4fa918bdd596ddf622dcb652642b67527ba8ed15a819a8e21f48d7ee70247f5200e37c259dffd17eec8c232f970cb03182fe3964132993f6ecb7c4db18ccef390c9eb3639e -SIG = 4de6f5250822d7c9d5bb98582500b5c085f541ebdc450ed1acaf83684827ed1dc77147aae4b19e14a7dc5bbe1f1e4f5771d8a6e4f2351739afb08c806d558701 - -SEED = 8439b1d60aa48460135eb1002cc112792995079a77e6e8ab020b9abaca8920b4 -PUB = eadc3e0c5bddbc3052c3b2f8b0a94566c2b2c879ed17034ac0e6a45f2b3e32d2 -MESSAGE = 5419f6d24eb46635d4a7f8eab803cfd0d04de092afbd86f2a6961a8d1eb8c0d197ba55ee08c991822a5aa702bae0337abd5ca7faa15e1f1ae369946e9b81216c0f5fc22bbd4433c3de93c5caa2741683bbd0e1a78df28dda19174101876334d40339659f021ae766162c6cc5421b79cf9d5c090ed4af07ec84493035bd0b2421b533684295bbe76a70fec596ef8c89c5c9dda3c33b7735d2d2f20b28f1a5402e72d04ba291dd59f14af08adf56eeb086d769c6bec3451891372345fd6bd02dcf95e803af0353150e182e323aaf683e036d9a135d2e6f98cb4d327e2ce7d54247f3592ed067b4ce7627174f996f28165c9c11f07e5ee9cee63851c6b68ea2 -SIG = 62da81e16440821b593b6ee6540e15d1aea75d23e0a1bbfedc808c9548f87e8bbf36915a39a74716f645cca5714d170af907576d4f3705e543d2adddc5ff2303 - -SEED = 3a046397f0afc072bc7f907c74d38fd1b9afdf27e14a3534768b0dd2df3a1c22 -PUB = 99cd70ef3be342493393872f54c47deaa081021892d11a3268f3145ed4f3abe5 -MESSAGE = f08ddef46cc6c34179820c9861375172fddf774f8dc3f7d64aa432da8e5fae644c0a8a9e6908517d505debd612868ac6daf95cd7e1699750022ccd4b88dbae2bbf73546ee4b835d319a842dae8b9ed683323f31e5cc57919bc9dbe3bcfffb2ada48072697ff4a7d310c91adbca81faf26a0eb7bb0c404ac9d8dfec63e9c64e2f420c07d323b7c0dc3b73507283aeb1cee51db4e1a83a692c7c1ea398f6f30940fab85e2138d4b85aa4e231e5424f5b064ed026f0ccb99d1c85a9eb15f5934a11359d411cf94ae8ffa3361a224f46bab852d184a248b4c31fe3a7e7f5134c051031a9f328a7be4a7cbbb1d8d863a400fd2d58daa44f1b9d8e9ddf961ce6322f -SIG = 5024ce60257965687080c5b1fc7d1301c32aa6fcc835497d9cb23a74a6ca2724f55353c1b757827ca5440c9ef8f8c1050913e20aabec35c497b56041b5deb209 - -SEED = 124f7416a80453e4cf1cd7b5e050a9761418258bf7d27beb7f23238c4540be2d -PUB = 0da34ab173990150df7399b6bcddba93c6dbcbf4d176941cb5071e8734c5dc92 -MESSAGE = 9dcb9873ff054db11d0a9b19de6885ffba7f0e681cf7fb8f6cd950c48328d1f919ca46054eeee6c9e57843ebdda7b24bc3503c4d612abb1a314f39f58221d2b54dc755acca7969740e7fa8b1a9523b8c7379fd395253f4e6cd054ee24b75613c3581d49e19246a7b3be1cecb334be44f3d626fe3b7b269e628d44580c20636eba2642f2744b959e65757d0ee601843f188e95d17253fef567068a5405a3a9e677fea3d7d55f7ead19a3f30c5f985671b55fa120cb9d05f471b6e1e8d779a2c803a19e6d0d7cd507887ed647c2a95483f933991ed45ae301a2b0e954a5703d248c78810aa0b199cc2bebb2f1d71cc40487dbd42eee0f745f7d285685b1fb31b15 -SIG = b0572104aa69e529e3465a6fd28f404a4ec20276a993b1725eb8c5f650b4a216f1871b24e368cc46cd1ee0174cda1b5e4ae2200aa9fc44522d975a9c51814908 - -SEED = 25d13b3837601b07a975693e5a33d5337c34c1127fe4c27490612aaf7f642e9a -PUB = 3a07cd68ee2692d51cfad1a80e7763b18a043c74f4e1b01edc55ba9a9e07795a -MESSAGE = 115b3220b45ca8f36c7ff5b53887d47e669b78dac13b98cc7aaca5c2e19fce81ec8617ca410e11c9a9118a668453b329ffb718eaec739172f0a849a0848192a5bdea18ab4f60d8d1a0d338952d77b2cc13efe83c76e8dd58803b1d8b3c9729ef102b20835b7de872bef3010f15a4caddf07cf7bdd222d84b174bc21527cffb1b7ffde81e281d30cb7bce25ea3dffb6ea1fbb06cb70569a95ed1a07e97ca42de70aa218159efd608fa9b0896e0b58518a322f251d133e58c8fc1428ab0a170ed845c75fb403f1ffb97d2d2a6d4f277911d326c1cabbb8516cbc17908ab81ff8d79af44611ea1d05879c1ec81d06936e0f4a0aef6d5748e181d30ec25236597a973d -SIG = 20cbf08392fea6a99cf446a95c199caa0c0f9813cc217b8d228e2ed90bab95ea92cd73ac95834764d33e42243c80a7603491c8d3e49ac715fd8a5b9e4789bb03 - -SEED = 7b3a76decaea60c41e95b05877a7da82064c27278c8d7df5f0bb95f0ad2d0435 -PUB = f80db5c28721b1c611bd87eb145a98bbf383b068045df2458d1a6fda099f7fc2 -MESSAGE = 375fadaedd9cac49b64e1574028046069f4c83654c8a7011abdb64db16b47fa311798172f9072217b0a6a43e5df6ffcc1154bcec1c68e1d35ec05880d012ce76e4cebf301bb2ec983d00b4a0540c937ff1c6df9441c61bdb3be8e0c7c11a35d49b6f55c381269a0e768efbd453447fe48b75ac39646ca82eca7d149304423491871c10dbcfc5973a57fab8371c30cbc4e90becc0b67152226ee177b4ff368ec879b391eb95e36dcbb07b2c16ba395545d4529f727b1a11ef65d120976b7ccc86af4bd204cb9489c921e43ba5e850cfe59899f1c1ec4aa5c92b6dac6914b1952b53dcb540b409231381568987bb2236bc40895df3f17eab7c0274f2244f958612e88e -SIG = 2cd26fb3c4f7440a72affe93564f6f6559adb15cc7a2ba10879fb7d67e47d4ebd02fe4823698a5fbd4a907fd69184c255a170e5f1747fce968102dc219b50d02 - -SEED = 5ff8d4052608eb033a5e94b603ce384d8452f60a26498b9112567f3410c18666 -PUB = c4900de24d9af2482763109926af7c481380fabcda9440c1a53ea1cdc27e6568 -MESSAGE = 138c60557c2e9008afc03d45bec71f961149a0835926751c8ff3935c7d652d83e1b0b1da7d5bbe0b8e171a4e49aae06fd8a9deff78dcde4d25b1aa899998a0f99e1df6f9337a3ea2f24b76c317a7014db4e5283191795a70d8821d217846490f958701d39dc2c8ce47d928938874d87b3558989bc77af820979a351eef9594aa5b94f3341eded4ea20b08c3e7c5610d43267818dfac0a87ddf527fbce8512bbf85b66c9bb5d62f0fe84048f23b19604a5c8d82b1f25a8da02731feb2ecae489b8475f7bd326ddf1a08189e46c08cf50538c2a363e2f4eb2c01a204c7ffbc0b981adc0fd997aafdf2a222ee84c309f6e95ec7de4fa85d4768d5c003165028225e22e09e -SIG = b737d4e5be27deb6d87729c636dff7a406c013f313c38cf683fe14f75a3b3005d9535d7e5815c8f8b37c51d6927111c979f7d9d81a347aa9cc09ed4e6c18e90f - -SEED = eedefc1757e3a7e5ed3946dbedc396a362f683d2c51b0b9f60765d4bfc5134de -PUB = a9872bc2192fc02b189ceed403ab9f270a032a835fdebfaf1c9d6934ed8304bc -MESSAGE = b194db73f994cbdc3cbe630ba72c47c2249bc0592ab547942b1d1b882b44f5b3855e568bdddf92ef05022d88fcfc294e76b64a00e9c74355373763e49a4ebc47243d48a9ad588994a518f80f8615c2b31da587a53e529d435a8697350dfcde02d20cce7d5eeefe3f5ab2aac601259cda38538a1b8301f9832e75ab90f8a932f267eac181003965d5266f206180c6c380ece803577ccb46176bf607159486f24259747e2ca6fb1912db7b78a973b2846387c1208030ee1f400d0c5b5e8bde9635ae55638ba17c734de8638bb85dfcd76629a7f9f40d6ab954d55bf8575fc9c9a595097e0893db5a7b8a6c455ecbd3d22d725e19de2941f467f9eb93d66a0e2bbdbf92ed1c -SIG = d5bea8ea9a5fe9ed6d2bf839930c0c6cd5039e988f551fdedb5437e1c1af0ed7b3897c035711c3c51926be8d1b32024d5cd582f5f8369ad84d18b12502652f07 - -SEED = 09d22bbaa5956cfacbbf9fd5510975128686c40c6ea96b89ef4c0f0c649bcd7f -PUB = e559ea8acbdc61b6709a7d83ae15849a6c78b203923dd0a299239ee4886930ba -MESSAGE = 1c26a0f3a1a5b2d7d5b297af8a6a689d7c62a25267e197d23becd2f2b816c4de92fbdaffb941c3fc8db7a84335a84cfbc92cb3ac806ed58df16b6b8e119a48df4f27c71e931a5938e7d002734885e13a258a15b6e1136efba72f1d096b689f7618f49c968063e8f991fa0b55601e430eee13492a1b09413eb23813591a7a9f070cc396ca9d1facdd4f4ce37c40f7245f55035e10fad6b85b5f01a1daacc0df94069f7de8f6467f96d1fb98648e8a0520a8cd723c98e9dc2dd4b2934d8228f0ae1a415bd3a7cda38d7a9983ce1af6f8c970a2a591635fe12b917536ef815eaf1a3138d70ce70a794264d7c986d9ee3290445f15a9248f2765271e5a992196ae331abd4164bf -SIG = e65275c4328a70ad62408ed7fb1728be87a73a814fee8ebd94f2665c71bc66ab0c1b07a600b30bc081a74c536857c20610384be268d9af3e3ecddd3eb0c14c0c - -SEED = 77826ed351a3f09254ae5692885d774cb3f24410a4809fd90f8a00da9aee9903 -PUB = 3eac8f41ee73e6ef136821f7957a1c27e15638d0e3916e6caac6fb7beb7bcfb0 -MESSAGE = 1ff06c0b3999cecb1900a47d267beafbb35d93d14cb2c8925e3e3fe5d967586925ee4baa41998edd0103205810aad5c0bbdc77874476810246d13089a64db576424fae0bed9664a42a491147d1ee3b9c3b1ba4875be15462392540f9978d9a4630ba4c525499751a45efc299ec7d73b17f9ad275ee71a687e72690d7320242d2dc2bd4d5c5cf0f17a465185dcf60f8efff53903f20b0c2ab2192d44368f2f2fb36048af071f7aa857b14ad1d11461205bebe17e02be2e3ccb6092821885c4e0d4811be3f45b1fea088453e022432f562562b43a355cb56270cedb6c2c42dbf9be850e77192fdc65cfd36834be988dbe9a93e2518c138b090fb9da827cb1c91c8fe52fe7c57f7 -SIG = 977adccdb829b40bbd8e53856a783db346a39dff62041a2972d29009f1c9ff81b8ad54cb901e497c1d3021b50b6c69ee73558fd7be05d625f5727f9af2ce8702 - -SEED = 99a99531c3cd6e3e9c900a9eeb26267e72f09d11b651a897ebb79be016f64c6e -PUB = 9bf9f8b48a2728e02608fc19899d219656839d1cc1e9a8984df674ec26662f41 -MESSAGE = 7a89c0c1952fdc4298dcaea854efc134656be147e9e8e82fc9a449059d80570f75676b81c4a94f76a968200cdeb0988c73f59afc72ad4c3103e19fe63b7e95e140b5cb2efc7b97a6ffbb6c298ddace3be6d2ed3d598b8bdf0c2fe6c97602142a76e978514c196c1b9a88efdc1925fc506155cff9a2f21ab634e2b93e96928a5d8f7ce4cb7326d9689469242ba9c6a01b77496badef87578f5a17284e900a72df141c6199b0e71ab5da4375037617ec6196d4f4e23ae2916a72d0fce796022305ac9fbbbbe4705b340e42b78e1c02bb1001860cdcaf71ed89255dd56cc0b31c59d4596dcef84e22234be562bd801e94111d83a78064c90f9d82fce91f68abb03c73b6bd8d7e02d4 -SIG = 0e89da5d949cf2bf40c7e17c2d0f9ceabc88a092eb4d49cfbfeab7c8bff43245c67b9e2e92f9bcb9b34b3fcf8b01fa2ea7a9649f814c3aa98b3dd04540c31d09 - -SEED = aa58403e763bac405db065eb11eb6be3e3b6cf00ec4a222b52bff4b6e3d156ac -PUB = 167f9b9a4665f93f5d7d3016ace6fbd13420b2e51e72bde59eedf26993b66cae -MESSAGE = 3baa0998ff02b32b90b51f9a840c7b5c5870cfb1810a9b0f77b55909d47ad335147a991c29fbebfc592e9307175c1964129a2d5efc6215807453bcd726969781222bcad1c99a49748b9ee667c4d0c82889e2f50064c115dbd8fb483d72ab0ccadf76bddb2dc727dbc3fa5c4624c283d8921c8aa4425110dcdd69c05e5ed59b359625eeaaec1e27eafe9d9a5ce736c3f9c527ea547818b9bca6811be4cc15058a6f5b683303b80c90c94a83b8b15869713a66b1e0f656331b286d1ef7698834ab3e138417aad6bb3ab3bd9fc78761a482dfc654f3f8628c8d9fc16018898f1641e8622bd272e38d41706cb9cebe6ee5e173576bf61bb1188cf2f39c62220bba88fcb4de4898b25b04 -SIG = 64b598ca5b8f9ae742e46ee0d8c1aaf31458b50c25d267a677e44be5b755f14d51801a30399bfcc38d14071aa0ae93da825a581ab6c20725a0a910b4735dfa0b - -SEED = 1044ee3708c0b0e909a8cb2ba2cd0af8d28a5de01d962e826087fb232df7b2d2 -PUB = 46d241ea0c702c1889d44655824629b67284d4e644a48fa45455d27ac5f62529 -MESSAGE = b8a445455fb66e17e3143d35204c9ea93474eebeef93963ee5c1d377ca217acd4ca63e5755da08fbffdbd4352bf165193896c8d6f76bb4cd3bc2d3a476a4e320824a1210ce74d0014d747f111eec310c5c89ed4d0850e811f80a8bb28dcaf6f411df83e2c1dfd90c4ad23561454eb5d756b63b4ea7f37dc5d466c16ef70d11190c4f5316fe2aa8597440e88bbebaeb35ea5f04f07b0339264158ef909ad5163bfc248cd724133e274f812695f290e57176a96b9393d07bb310299f5d2a6b6dd1dabcb51bf29c5afa7ebb0701c6c84767ac137793091fe0ed6e47d780628a32c84f83e00e9c16742a523ecb63c24f4a338ed299a06194924f44c5a5d3c937ff9b0945982ad24a2d1c79 -SIG = 7d6bed7f87d090abe013c31e1203903bac9c93445d06c7b53d31d15f970d88647a7ed2c3a63050ba19d68043aadd18bd861de1ac4715b8e828b2b16f8a92b001 - -SEED = 95dd1a5e658fa6c8d42507b3e5b8edb5baeca62deb00fc5d4dca8e1ab5835e59 -PUB = 3a5323dd1e07f323bb6d83e9c2db92a29f62e2e003ee0deacd7e2e4e030d8d27 -MESSAGE = 9b7afd48c474604c26367531556840c388668b0f3840063dfc9869ad5b901274b931293d04f3c8e8f7f8eab815a641d7c351284e8bb0437ac551bb29438964e6a7c7ba772344b333f9eda5a77568c8931ddcaf21e32e07b10bf4820fb859bcf87b81c4bff426f24a4d468f2e9aeda8f17d939709970db11df76247e98a39eb8b38f5949f349f2ae05ab48c018517c48fa0205dc7f1566453e105e48c52eb455c0c40802f797b3eefb1e2f3b1f84315aed5b0711c6499a691b74b91f12ef70f76c4c05c1aa1a993e2f3e528ab343dd2368162f4036a61a13a88045dcdefa85d68532275bcf5b8f5f00efdea999a95783175d9ee95a925d48a544934d8c6b262225b6ebea35415dd44df1f -SIG = d02a7523dcbd29576ba809b531037774df41734a41175813119c6a6a788cd9b8ad780865678667699ae66d010919a966a051c08163df67a977ee6e220d0dc30f - -SEED = 1abc0b9aa01dc57ca53efe7380962b1a88d50a964f5cd98640982c74393f2926 -PUB = 8d4fd14394d7c1405700306983fbf76ea9f171b15a6b56612a1feb1cbdae5dd5 -MESSAGE = da2dd940d5e1db6e80bf7e2b782e7e745cd4fd252e981517975887dd05ac77ed837d082961575efedf301fdf24b70718b991b8d92bdd2e6bee17c8aa4bc694a727bcfc78fd85195c42caf883a2c38d161cadd79cfda9a39110e1264d30bd4c5c4a5876777f233b071b1b0b408935f0468954cc744af8063b004ede56cd981c4dd5608abffeaec9e58f3fafaa671467804b7fa2558f4f95174201f183d80a5914065fed53115b41ebc338f78df050053b8a4e75ea7c6fdc354dad27bfd8a2e66fcd7ae2f587d24be0d4a33da30a220e51bc05fa4e412b959fd95d89ea6ec0162516c096a9433a9e7cf599c928bd5305c2173bf7493ed0c1c603cd03f082cce44237a79ffd8be9a672c2ebaa -SIG = f738af2d3e290b3d23d9aff7414bfc5ffa47235dc053687a8ba5c8541b8511f781566cdaa130e0677db55fa8be9d81a092cb58923a8628494d2f62d95c167100 - -SEED = cbffce2c9bd3e23e406e5f66e632dcfa726654d29a955cec983173235fa359d0 -PUB = 49653edd64a55f7cd40eaf3f8e72eb96dbcdee398f34817f2c95867949710b14 -MESSAGE = 1ffde6826e4f0c24a7961f191e74cc0bbc928e3f1aec3efab32765c2501cbc1620e7ee6f61fccfb00cfca9fb98143b529bcc8c3d0fdf89ee7c342f101815fabf7deaf9f302a288fe175826d590d99ee6fd92da74f9596b783c0e7d47d711a32f39ea4165e5212431441b498c6b70db3b09d1f4e4a14a6bae39da5088bb85b3285ce9df2f90681af2c74dece439aeb91e1c1b0712eddbee8d72569828f37cb720c509d02aec476070484e9b16ec7179947ac96caf0e1be8b6b74f372d7235fe6e3999df733bccd482dfe2e631f56b582667dce5e3121763adfacf3b18cf2095f7394dee4927fc2bea6b5824d90cd59e854ec5872b4551b02efaba5ad54a9b7a8f6de5d7cda5825b325b076ded -SIG = e7ced4fa2a7dff73f1068bbad0ec9a1109043c97a62effa148876f0969ed4dc608e28bce797af3b82532c94dec4d6811b7f563679129facf17bb73d69375eb05 - -SEED = 9f91231497484cab39b9e20f861181d397908577bbb2968242d071bca4813ffb -PUB = 8824bc6cd6a6f15a5f41668f2b3bae8fc4967383078d08b51d6d1b2b93a1071f -MESSAGE = 21d4fbc98163c3fb6e09f775c2ab7b18b18792340bafedacb49605622e3c08aa3b2b8d0e0902f361aa1c0f652e2732b10a0c5c6a05098996b588267cc8951a78b5d431e7222bbb508eeef1b5e8b8d01d3991e18dddc6ca8d222ef177ce62938d1810eecf06f4738b28f440946ccad2a12e39d38611bed3a39f93419a179ec2b1b52d5fe5c80c23b84d8803755f5146092cc199b4bdcea5bcf2037bd53ff6346694155f027d8ce2baffe30a5666596c00783aaeade9c77fc8637942ece017d6484c2899b1918d3a480bd5157678d4772d271f9b99768ee1bcc46b2489ae87cd030f47d1333c7672cb902cb4f5fe746e853de57940ba2264d3e629644d653a5b7af78ce64a993f36250f8cb7cb45 -SIG = 0a1c706dd8a13077ab18386c65fa97cf9dfc43542d1846ecbddeb7b3c93f3c66f3ccd0447aacdd4dad8fbf736c4ff9dbdb62bfc14d8883e385bce9bac56a350c - -SEED = 1e2bd5487c5f5ced461f604dccb4e78eb91608f0b821f5afc4e3e534f7960392 -PUB = ef825475cf2051a2017ae532f077d96774347d2767ea7b45f9c1b860ab993506 -MESSAGE = 1dbbbb13cdad88854b809ceded273343d306a8deabf3ff02c9cec6f002b8e9e10ef5d1b0f5711f33267aa91c171b61e960f740457b81d751a473f44f750a080cab80af7ccca7dffcfac9ee4c39dc85cbdf51259ccd3470d9bad3ad30f4ee5dbd4fac6bd5c6c4df7311a470044695a7e1a7e18572207588afa57eebcd4d575b6d424457ee92465ce1863e3c677cf875fdb98d4078ebe7144260807052577144cb8e0359aa42ad155d79dae3deb99c4632c191c799cbfe587d954787068d663bdfc0fab1334f1876bf498c4db5c53db7b0204ed5a521c62f09eaca8d0189f3b394143f29c421cb5c8d07bd751baf4cbe3bf4be1701df4b2207dfb2904d84f4dbda51cba576d5a5bb16efe698edd608 -SIG = 4d33c96a2e3a5db7391adf65c1cc3565fe76eeafd0b5c7abb0b492a0b51e1fa33639946a243b2ddef357552298ce0aa95eac6fbfe660988271877eb2a7da1806 - -SEED = f78db14d6d1a643dd7735baf2635321244e7ec8ca72c5c38c98c809db9cb5a55 -PUB = 5414f75f52f3864afb0c79c2c5c1d06b4bce400fbddf17fe9cfb2a8bac47a0dd -MESSAGE = 05caf1b8edc3b173fbc1ed29b95e2bf06d814ba2407d4b31c728d04ec273d25394423ac7d4fff2ca36ee90273093c756e2bd13c96d4a3dc7f5be1759fcd328eb66c5882b58fa4588e5b2a3713a4154a2340d0b06ad019601b0e028e497f898256b028af95cd8168df5e58a57cd1ebfc0a0c91ced61dbb480aca7df8dca91eb16e98007cd2cd1a2045b0e4477d12d5a4072f365426567c9d61577f3485c8f46605e7f475ef04a3948f60dba8c5508d14bfddb9b11dd044ef2d84c16b9a9038d8e78eda43b91297df35f4361a383b41d49677a687d5b344ad1ab0fc73017b3bebf32306fb3fd7b3d5071f3ab5f6e49aa15540cad6503bea7784cf9421801ce1385839893362a97fae121300d6783af0f -SIG = d7cbd4181f67712007b7f0e18452e0a024464d9dc9b5ff9cf669d1b91169d7573262f83336b97c861bfab3fcf669223ce8caf319f21d23f1fa331a2d89b6ca0b - -SEED = 7dfa328e90a1b849c219e3da832df9ed77448234f0d89ea5d17a3d64e7883daf -PUB = e30ce6fd5f5800389a70cd117364f59945afb180f229927360b06b4835f8dc91 -MESSAGE = e5e495d663f47236714532687a24308f942ca9c33e088f7f106a5a723518cacbbef4a68c939a6950b2dc2589f82d354e575272d42b1383d315ab8a20aa0cdc9d4df678ab3b26612b5dca66e71f9f3fa7d9e731dc481e2bc7127cea3b6203ca6cd8162e90886a73dc46c83ddefc4b9e2d53d29dd387c624e08bd8d53be928a40a9aa8ae8b1c8d0fb6a7bd6dce5f62315b7a2181f627f256bbe7e2a95bf464e6132204c174209629840235b2c39913301a4b40325d118d384bc7ac028cd4f12702e161191b149e4209058a55122bbb8b22b24683ba4f8e2e6ccfc08dc8c8b1bcfb6d60bd8f062196933df319ab16906d085730eba1720d4b02c67daf38cce6aba38e25d68ef95b2f521913a1d77d5eb650 -SIG = 1c61d53b872f8cde598609682c79f6c5df007c513a71cfb3a06dcb82d85c4b00ccc40b00e59f595393088b4cd0432855c67a207da71f87e72c409b3e50279507 - -SEED = 6ce13d3c2ec71fed83131a69d5d030314ab49e6565ef68163fff09ac5d9b47e7 -PUB = 9c7b1118fab91e0e7b192a23d95fb877cb7936cc6c8a330592f48e6784edc292 -MESSAGE = 10bbc311eb2a765e0167ff37618ff70e13f02d7b0617ae4ac06befbbe149c972a994f680ca4dc9a92ec7efa53997fad356b9ff4ebdee629541d1f4dea62ed0d2494f9ccfdf07a9310491f61c4b3e2700b4a3c668d678329a38c2eff9d8cba431fb959e7f7655bd0fbd77d53bbbc2eb8dc51dd718ed98728a181686be122b844d3da331e329d3959b5923f7734325a021026e2754e17a15108be801465ad958dbcf21df890cfe5d5b883ca43c61cedccbdb58b849ea75374f1e918e803e577a5dc7a1c17936eccfcd3481bd2b1eb075b83237ca6f3c07c19e9af9731267be82d4898eee96ebc900d48b059d51b0dd415b1c890660a88d25f5c5f35d8e45e523e0ce3336923ab43670e35c5057d56c758876 -SIG = 608b2bf6f6da05c2ac5bbfd795a2ac32c79c74153f9431dea59768ff4c225e3b693b645a506766b860850ee97ea43032b05b69e56767e8eb9d1918df9afba805 - -SEED = d45ee69a5f1a7cfdd0343f8770d1c6bc026f067a70dbe839a86f2aa068c33f81 -PUB = fc8d9fb0e4f34793090755e0328096e01e281ea351b8d95cd9116e131a5ca54e -MESSAGE = eb5ed8ab79cbfe61c25981b9d1d6b70f10b60194b4161fe17d11aff1767994aa0813e9ece2f4c5d531b99e8adf1888c30a63893eb451aaf55acd5a52ad8c401faa88d6eacf3e49470566114fd0c6a274e9544846b0ae9bfa124d7951eb26715e19253ff7edc8a70965776f23ce46031e034a200723ba3d11e11d353d7e7cd84aede267ff64bed418cb9f28c61cd0f63b6ce2ecae14b20bc6bdaed8c428bad18be4b7d66338364acd8042a8256f258a69969b8d3ca2eab3aea3706e5f21c3b1efcc254a824bb4e7ea7aba8827c8eb82786c665aa973821931ff990a63fd34a74a6d8c22a882b0b935152ccb36fcc76f4eca65d67c8680942f75dfad073439c0916065e83877f7ba209303f33548d9e40d4a6b -SIG = 156c51c5f915d89b8d1400350f8f217a5c02e2629ede9f4a30b6e71d1ea7a953cc6db31ba5c778c269920b649fb4221c6d38cf2cea2a7de3ad423e04faaa0607 - -SEED = 8a76eaab3a21ec5a975c8b9e197a989e8e030899eb45d78968d0fb697b92e46d -PUB = 2d9c813d2d81e2730b0d17d8512bb8b5d33f436cabaa13e141ca1cb785014344 -MESSAGE = c6c78f2e2080461aed9f12b4f77c989b19716780fab60e6ecb9793b4bc7ed69e5f70fa6bdba16e9bd3194969eea6665abfd630deeefa3d717b6d254dd24bc97dde21f0f29f9ed34b8bd7a013380f4f82c984fdbd95af9805b744bcd952c5a71fbb57d11f411c18cc30bc3594f7ad8228cb6099394a1b6b0a818581bdf93cce58f3a4a23e55db3e69ca9d60cfb3a907fb68329e2ffb6c65f1e828d28127109c9e9fb70160f2ef82a2ee9f9bd170c51e13fd3fc1866b22c79fe6d5101217979dbe2724dcad8a9bc69acc42c112dc697bd271eea550e9e50406bfd28245b83b8f012d34db6dbdd55ae6e575745c153d6e7534901027eadc2fcc33a5287ddbca6d3aeab8972294dc6c712b9942547277340e7ad19e -SIG = fceecca4b014fecd90b921b0fa3b15aeaa4e62caa1fb22729c70269232c33cef0d0aeea66432c128afb9a3646bc7f03a12774da8758398c2a0dcce0bbbf6740a - -SEED = 18a8f93648cdcf47133630af1e11c0ceea3de07327314c96580df775597d7a9c -PUB = 2912f41ab4c87e3937a03331802cba87716b4eea14b9fba6f546d0ac2c0973df -MESSAGE = 592093ac7cd671d6070b0027edac1fb015cc205d78bb603f378eb9f8aa388ca830db3cb23420c7e852db0b55241eb88a02cc627aa94143be439aab4bf2634757470406e842f20eb10f0700e3c2da364f588a8000f23850c12ce976f326d2df1bac13e95020b412b175bf74bd7ebbacf3ae55c0daebb5c010bf804feee1d7d49fae050bea55996f53cfe1f15a0cf20727db4ee311c260bad9682d7b965e27a9491f471d4a473aff646c7d424d5a0bdcbb8a0233f4b3060dd04c98ec98dfd05ec7247884e2d8e152d4ae52b3d5865d9efd6706a60e088e1e7c9f624510abc7a2045a2c7a7588e2535e73191dd5cf05421563f556a13e8236670343cd5ba4d466e245c4ee3b5a41e70c9a0f5e6ea2c559ebe61ba81e -SIG = 3b77394cd69f8b45d00cfe3a79a7900628a56518b379ed8a11581fc3a376e5d66807df11e70904f696c741d21d139310fa1b89a93bdc4d2c3997991f5220ee00 - -SEED = 206cd2b8114aae188d81862ccec4cb92c4ef5fc78c24435a19f9ed9b8a22f47e -PUB = 97a67ac2811f529456df532737d76bed7e387da83bd55459372fdfb27ffacff3 -MESSAGE = 480c4800f68c79f5dfc0c3666c0ac429b30fe0c5fe848750db2171380b80c8e9fec0a054b16d08674cefe2f64ec28bb6b0596b35235575f189bee259aca766c222ac0a46cf2af75774da4e34a0b54fc2ac49ec8bedf4887cd9b7be4fdb7f686902ddfab04627e26ea2dc3d97d62a4b1546180218ed8fa113334819b5275cc54afdee44309008596507971675e6d8b8a8edec4718f2d4bd735213cbbd18791faa8054174907a7ac17d7143a4757e493beeec4849d0b836f18bb2b3c9016f25af47fb96199251720549f15d149503d41095e25f26209daac39154485c3ded7cb1a8c3e83a52f5a06ec09cf83df00726b7968f64c0cbae299512fb438560f04b3b644346f938ac8e90486614cd844b54eae078bf678b3 -SIG = 73a40d9da08fb98ea25b67e721557a1a51225294d316b53149af895fa4d63cb4a3f56f688566ef6da42fd2941dffa06d497aa902165d50213a6214116299a90c - -SEED = 59b144a708abec972729a04a6c13f0ea020b4ed4a48298023a568958c21215ec -PUB = c4f4720092ed6179a082ae4d6145df3771786efca9bd9bb79c9f6667d2cb56b3 -MESSAGE = 3857bd260b8aad9d073f06765d37fe893a3f53e23de866ddac33495a39ad33ee9e9d5c22502bc1c4b5470d0e3f3a585223fe4cb93cc4ad2b5ba6d78826a53fc0253dc580a2018cc9ff1cfedbd3ac0b53292deefbc14e589acf496cb5f7670130fdbb6cf38d208953c015a0474675b724bd109f7cb89c33016751fe7aa785d099d09ab20dd5258cd764ac8daf343ce4790ead0863af43121aa527a37a11628f47869668f8eac00d80b6bf9906663d7a2899c1cb678cd7b3eb3bc80226b8b13b6e46877f38f07c3d9c86d3368baac4a6f6b93ccebcec9811474b6a6a4da5c3a5966571eed05edcc0e3fe7cd15915c91f44eee8c149ae451f375518a79fb600a971a39b9433dfa19f91931b1932275747c262eedcbd27f1 -SIG = 1a80850fcbd6e643c6ba8eb684dbef7df015159228daedcf0604709186054db185aa7baacb09d6caad01638eff8e468735a60124de0c5376e94340e541a98007 - -SEED = 8d1621eeab83270de857335c665bbf5726e3722225fd016e23bf90ab47aeec3d -PUB = becdbc024dae6a94ed4e29c80f2aff796aed8feb2c1b3790a8c72d7b048a2c61 -MESSAGE = 97facddc82cccccf788c31b3305e93eba956f89613e6e53542b043267fee544c2b0a8ae8886a31b9d321a63c27623baefea840b2a8af5b2330193ffb5baf873c335528afeae2160163c851c5a2e58154a1b0569c2d1366c0710437623b0e08c686e54fc279ed4c45f3e856868375f78224c777b13d75de10d79173552425d15a561904155f2117b2f14713eb0b04648a3bdeb3302167d1973e788a06cb00d48ccb269fa71af8ba68eae55dbbfd9594d5c2b4dc13ae0321718561acdf67dc8cfcc25bc46bb66e096a1941d9335207d3f7d11e8904904fabe3a50a3883e7078047df252f38b67cd28a6ac45c7d7a1d2a1de8d45747cf09301e01cdafd0cd99a6e91b704d509fce692fbdef2f71a5ce0b35bc15c65f876824 -SIG = e08d6caa5f39327d6e6652ed74dd1a37844b979f5cce747a606f5679f4898bbb7643df7e931b54a2b40ebdefe83003f61ca0f11112f023c6a3e8cc18cafe5f0d - -SEED = f2735d50ee3a9a65b58c8acf551663e98809ec406f73e3e7f4e73bc4ea923874 -PUB = df48a5b94a07af3c2c99b8388762243233c850dc175317d602638e5b86ab49ed -MESSAGE = ae31e94e7197e4e4d0239348025ed6681e513ce1a6e0aa0e5b979373912150ef113e50ef0569c483f7568c4bbc4703c5dacaa80a0de4e738383fa1f10d6d4071a31b99e6485143972316c86522e37c6887a1c307b29b0dd6f9f1b438310af9d8d7346fb41f9b2dd2e80b14c45eb87d4ed48e37a5260b52257b3e99787a13c55392ba930c08e0240e960def0c29b8550745cf149dee53a5d174ec065d2d6677dee1fc42057062c34e27ea5dbcdb861b9f670c6032c7846cec8e87a7c9520e27967b0186ee71b77ed6d029bbdd70949cec4a709329fa37fee002490cc1bc4c2df6f763f9858f33d750c5b505a67e237063c0486f9456d3c620d9ac7c98f1381de0effe41c18259504a150d68a6a28b0a3eea803b855315c9e0 -SIG = 6942a7696417efaa591b95e11f02d763bef5279b932a8e2a7cbb9f583695c14ce5cc556bec66799b33cb592da4df2735f9eef2c3ceca4362164b6cc93da4e105 - -SEED = cad9d21a01c7e1d15df2fbd79c516eb8c3401e9fe28467cc7b21679d4e331a3d -PUB = a7b55c15d6790b40536fcae5ad2892cd66b18689f499c1fdeea66d4a7df39424 -MESSAGE = 70702bf19c919f9836defd7b846fd9992d8b7eb2e106aeb71e60a31b4ea25a41b212dc7de7c91cbd613d58d0595db833cfe7e50584f25569602c7744fa675d156d0f63cd2b7c089c8a00686a437169826a12dc485b38c068a8007142e5163747011a07a415683622ab1e23ce577c732ba14f401fbc3043e0693a9205c19a92298a3d9b08fb7afafae0a9f016bc750ee631a5f5da5db6f9ba2692c74caaaeb4d097e90e3c02d2e3a7fb3aa000040b7c17b74564e646bea16bad611ebc0859a3828804ab4f5cfba417d254515ca3620a3ad683c46ca6267bb49539bb30e369087e67438e9489562750dccba3aa0b1b0a6c267032d20c2adb75e68df1123b5259bfe4eac6cadca6778138a37318adb30e8d669f3bc9692cc74b68 -SIG = 31927d01db9f2472f4df6f63c18ebd83c2b1aaf88d580e848854df8cba6395d3da7bd6bb9edc1fce1c7d7e1360558fcddfa93915be076efb8ea2dc5ea7b20d0a - -SEED = d9be842255e9a16b0a51a8674218cee7cd9a8bdf343508397f4ddb05f3fa0082 -PUB = 7931bc6dfa3324943aab183d1285515919399ffe0b710677f0915d3a5be51e92 -MESSAGE = ac6c55b134663e41f02a6dcb8549eaa1c013f59658d81d812f95b74009513723671945e1324f90f8a3f971369181b587bab45665f788d663ab78140c5a22c1c18d4afedc7448a748afe5bf2387003c1d65ab18482ef98922b470da80ad14c944951ce4aed37390cce79a8e01b24c7dfc1141c0eca2c7f773ed4b11806a34615513486e4ee11af08078a1b4054cf9880298608dd9b3faa1a242a452fe511604b3102c313d14cc27c6f0f8471d94555317eaa264cdf52c69e18f461e47903d21298716b172ee9cb178f08ff2d3c9c162121c2ed21d8734b2f0630d399146cbf76e028a143f2bf7bb50af0f57b9ba8021d264b00c6662f84c86cb6d5952b3d241f7dc3e700c96616cbcfb0d0e753ffd5d21ee320e65e97e25cb8609 -SIG = c93845658c9560d2c0e28f282adbd4652bafd3bb2edec17c94878f7b94d3c77afec906ed292a8dfbf5f8e7c118e8f2ca33dda7909d9b695b8ff5a1c0e97ac807 - -SEED = cfc48cc6f65811fe7d7bba85d1cd84858fd6f7edd638f4f552363ee7685f69ca -PUB = d29c10694c5e8e3f3447ed78d34dbd74a2b301373ba871b5850c333dff7bf8d0 -MESSAGE = 8e7defb9d16d036bd642cf226e32773e605361c5ec4b951255788db0a042c63e5a4367d61524f10e6258991325a39ab6b03612260c3fe3df20b34202d34395bd4ed40bd61373df781a4c8bcfbd15301060f07437732333d8e49736322dee6b22438e787d8856b70c26ec57d6dade9c3c28e27220c5670e393544ed095937298dc3adc73865f777e90037bdef834716476d78f4e6cb4961a4c68a8a836338a9f5da179c4d5e93c3f70dd35eec709653dd8de37996b12056d4eefcb4b6b3c13ba984d832275c4386ebf4a8ff7f078be3d428c1e0d9b162381f06a5b7bb12704003d91f25d1d8fd43626ce70fff59d2927768a76bf7f9ef76ff95489f38edcd1c9e9b8a8b0ef66c32805776d5ae9fbd84a7af4fa6563ec70ac5733a44 -SIG = 80c5d51e96d1cac8efd3459825e79c1e9f65af701d1d29e1f95b036707113b77984b7b3350f04077333c957f8fbc7d9b040c362651417b9899027cd33edb1103 - -SEED = 15c9f7c4d84a5a479041952e6a8cac24e76fd2d275c197e6b521929b43ba6c5d -PUB = 8633c1829d29091df71fd5c0ef640572e4b64974cd097dbebbcddeba041647c0 -MESSAGE = 11730dd45dda80d84d080d92e9bddaeea6878e4a0b3b512d9ea733808e1cef51d49048d6c78116a4bde3c64aceaa52beca86b331ab59e9185c70286a02bb5dd04f5c7f4e9c7e445e77458565f159c783dfd4d976a910e937789d2141d416ed3a7f608d26737a86b20b624e3c36af18d25c7d59b8d7427ec6c4d3d438d7ae0949dd7d748c1ffd6f28e8285d440422d22a3761202e9584f5cdb3504547aa4b685730c982cba213de08020a5e4e46a95fac4b481bea0b630abd030ddd335a20fe2cf7094aef4813956991913c6821f4b5410df4f133fe63e22c08092a0a65972722a27ae42011a807c327b417237c540114eecb9f0e96cda5dcf0246f1d2717f49b9cea9dc6a3da9b396f0270529226f5dcba6499918a6c289fe055fec8 -SIG = 1e36bea5a583767ebd80306cab233155b7b42814b43473cf45cdc5039c939744a9694b87220daf4ccd29f25cea405e7c08db2ef17f3f034dbb49cff60283e306 - -SEED = 6d2d0d823f294746b9a5512e14e73c1d855b5e4bca65fe817729810cc5ef840d -PUB = 1b6480a6a90dfb472984855cef6f1ab31eb7b3f13c8ac00fa556d20b53e5ae17 -MESSAGE = 8772721f72eaf7f73040c068a7c3753bffca7dc2d0930c6525f425e6005c25cd4c0ff5095c9c61a5d8a1967b8c86010c884e509e6b1670f79046e22979ebd354734090d3ada21435c1f8254f7b5222cd5564f064e977640366449f4e5008f870f9c4840565bf4fb5f574c9774ba2568e71a9ccd82ffc59b694f26e7de4ce2e3fd880a0eef387931333ede00dcb065e6d0f79591a2aa956df1948a265cb95750d8a233b15c288a05487c515663f93e740fb1570fbe4bd80c68e8d9297345a8a01cdbd88f4a39bed9c5ef09f144bce5de568bf3733bc53b2039a29cb3e194501adc1c10e86383aac8b0f85c67a6689bbe1470a392476313439ca88d98c021c0eaec25fb2f9a160ce5c786170be0238fb8785dd33bfa9059a6c3702d0de05 -SIG = b515f49eb32ad478692df88f07b7802c6e0e5327aa08a6366e4cb1d1e26f9e65fc81abebe2215d649100f27598273a412b624e842d8130403797e57dec975a0a - -SEED = c0cf799af7395bf27bafa36cab437045e39c903bf807548319ce44f287494fbb -PUB = afbf550ca290c905bdd92fc8831ebe3dfeb6daae4f56005253cc50951e50edc2 -MESSAGE = dbe65780e968de9e40ffb57cf59a60fd93b3f9a5e7d8ed5180adbc578ca1bc48bd9fb60a1324c9c2c1141479a0dcf0f1d07e84936526df42333c0d773e3fed9e4038de5b95ad905c92cbe040487bf55e10e1edb429a0ecc4e0e8d00a988a9cd53e2eb372f4fc4cd9537b269ba3a23cefbc8df6476e75434b81d93e8891bf417c82e363f3e4abf80a4f73aca84ac7df6337f536d63d939d92cba64be742221116069ef251abba0b00af01718bb580ddbeb79973ef10a68b4d0fa023d6ebd3079d6b32a1aa20a21e9202f27590c3f0c0cc253073c3f822aac459d39f50758b70c00710a3c98438416508522e512adaa0afd503a7ceb04fb94a4a932ce80cd5a7f11bb861263f58e5749d542a110de7c7689dfcb0c51afa9d54a58ff89f3f67 -SIG = 5bba01a4c7b25542d06912de70aa1e220423fdf8338a9e693395cb6f0dc1fbfd018e3c77e50aef90a9080f30f1f5792b2431078fe6e3e00464245e17cd8dc107 - -SEED = cdaa50e8527dc7a50fb37e28fa8b9568c37e8567e0b499997b9aed676180c3b0 -PUB = 7c56e164510268c182b423747904f1d3a5809330f6e1b29266ec46e73be1550f -MESSAGE = 94fcfbaaa303dece7b908f874cc5f095061f1754bb35780db666b63ab8290811bf1c521a7f8f785ea270dfb39d0d6ed95ab71955a11ffaeaa268e081ff3e4f2425b41880a987151e678e89111350942d820c3eec36212426663be175e5286b4ad1cc804e3e3a03b9fa3e82838ebbc2615a645f2ca1468ac4a1cdbe523761e83f4381b0c8550ae5e8c8cd1fda57191436e27cb883bc64be86a9dc6110ef3401d88a7debd1b701d9c257a6826cf01e9e2922e3ae577f2834275fb0ecda80ed8cf1801e0bc5e01e26a77c48bdf46a5c4894d22ab53e741827e24bed5f0750ffad05e53f1d5e61dfd316b191d9797ef713131a8b430abe3fac5f3c4a2ca021878b15adc8c5f542114260e687a9d199d230c4e0d3fc696993b59ccfa3ffa9d8d2fb -SIG = 137bd10a50ef609384fe668768fb871de741ca0f53ff8477d7ebfa90aafd5e2681fdf1b89250463c15db8e17a58825fe9427de089c34de13cd07bba18d4aa40d - -SEED = 0fdea9bee6288f947e0adbdda4dfb2baa03891af25024a5e138ac77984d00507 -PUB = 70abd86430d7e8d63209c8b373ec4e4b79e989e6725facefbade3c7574d23cd0 -MESSAGE = cf72c1a180a2bc37d8478d9a7a39acf03bf2a50790f7902f81121222d31d3ec916f4f24cef9d7c41dc021b0e8487bb892e47305e54520303e89b30b263dac4a9ba375d46c40fcf400535c959d2b746a7fc970cf65b472e84b5f1d0ebadcfa1aed6fc47facce16a366a3b1d6e516813c1960975f8f2b43042fb4eeaabe63c6f65db45ddb7db888a19a9d7ba6ca479fcd70c5d1e970f12c14f4d24fb7e2f357bd3a94aa1b868ccc0847f2eef21853e253bafbf07c4e6176a1ef077167841ebbe5629337157f39f75c71d21e7e96c51a1b16fa8dc60f0b1279fcda2641fc8591e3c492f15bf83caf1d95b2cd91332f1b4202fe72862ca2ea2ef92c11db831d82f8fc3d41fe29a76c211a758e2f71bd89d2c6610f201429f348d56e10e3b7af53e27 -SIG = 80c42dd5df03b285a86ac95ce6669f786a978a813a9d7b8c6a23de76fbd09bdb66c5dd1cc9f1a176cba388d5051764a32fa27f0028ba4898068bd01a3ee17208 - -SEED = 03d5e466f8298ab5438a30976d1322a7215a642dd5fb4c3f8519409a7522f092 -PUB = 4b3ed4db080e2a452e16912c14504424920a60975604e4f379258d1c8b193d6f -MESSAGE = 1b47b70013cb53e1f8f4971e0f39563ce87edbc2cedd99e5a35585df8b00a852f7b9c97c7e4a5465fc5605ae8c5c36570a99201a7ad6031287ef0c7b2ba6e57b056d0fc8d6ca43bf6cbdab098934b403197b525d22d45e6b29c78f8d6183e41ffe197dae25ba22b06669ae05badd7e1da6932a7d054cbab3f54e5146223ad8671231bc16fe62679bd2817a6b80e653998c4949f81ff53b6173163e11da3e6d3c76d84c713225b4173d6bf06a85b6988a48be4359cb515503ca563f4353f8e7d45e4d94462c89a04a00f1b3b0ca6422d5db029c507d464834a20c78a713661d84edffc496d69282619894437b4487954cbea2aa7261e6a62b6851154a5d25fb6b4f09c59473d385ce03e91ba865eab66c58c0abb0b7a78e4be927e55460ccd70d82 -SIG = 6d7e4658f26f337c98e03f13542e2f39440ff7bf8d88f3f6dfa4d64948cd96b79051492fc28f65f2cc0d23a0c4d5e2307bb1c47e11e53b371f091b69f80dbd05 - -SEED = 76cc18a1dafffa100586c06a7b40f79c35fe558c339c2999a5f43875cfade03e -PUB = 4b9da8d2f137dc6c857a99a5998dd89dd5f05971a21e8c776670eb47bc1270a5 -MESSAGE = 4522b1d82373f7a318221e7e57617503ddf44fd53997522a1d963c85b708d0b245de372ad52ec7f54f6213d271f7c91d5a1d36d134db389df0b081a06bc0c7a4875f724092793172c9115641c6d054f1d992e0fae4df58695f0ea3449d7a4b3a8857e19803fe49b6d52c9ff3746a574a2756956579f9fb809a0edec92c55e95ffefa3d05f165822f464a21999f29691f6744ac5a3ee49017880645e837edebfd2e0f24997f041145a72e2376ada283186ca2b836362977195baee30a3acc81b243f3ee376a2c4764c783667a4b1177e7951d3e3c7be4f1bd7ae8c60fd5fb0fd91f0c1c14d0d2327e8f20d92c0dfcc53870e9d99fdbf9dd9a17e882509ae7baa8653e39edc8ee569000d624cb93a0754a798d1f811f6a0ef5501a17bcf25fd0f91626 -SIG = db74751c66e6b1866044dd9ae99f19e6334f179e79d8b8e0c8cd71d22cefb9eab7e3e7a9c2da225f2a9d93a313d1cbf1b7fe2597b8d702bf3017a6a6bc7b7b06 - -SEED = 71ad980d58ad8e7d33306689358936a372d5190b24ec7f9bde749cb81150efda -PUB = fd35a75fe5abc20104691a24a4659440b55aeaea902ac3be274af27aa8312869 -MESSAGE = e87ae073ff5dcc5485a19940e4e3ff263a0618a9025ad4032dfb36d171ce881f71c18a49210eb45819806142e2f00db3041835bf2c3bccf1dba02b8b5a5bdaf8fea316c0623dd48a564ec166f037d587c8c01684e5e5c0ba9dba4d23b49a0309244e282a51408622edb05704747e0cdeec976893777071098972c113a8ab639c31f1613233ee460eea8a8c10e1e6e152214529878cf1adaeaf78cf19bac71361815bf57955498fab4f0f2b7586c86f9f4c2ddf8972f9b9e0eb636d84bcc14385b2d038be55a963702efe225a50bdd0c4da92a2a6a09100ea04a211d396458dceb4487116837d139eb0f122538ed3986ad0af4da2dffc89f3269ca88538086e691e5beae9581e7c63d8e612da2c47f74dde1d94951eadb0df60c3897d2a3095c506093b -SIG = 81670b1029e481e9ff3c171f05c16861c846ee79cdf2e21e3bf952bcfac97565f2b1dcedf69d2e7eb35caf5662e8bc671fbb96756a63a596264d1b7f4af97e06 - -SEED = 61594e24e75f996b4fb6b3e563f6a4f9915cfa65ddb199b01fed7f8ed7824ecb -PUB = 8627d2141579cd2521aa076800ac354b9e3a47d71cedc8547434268225e33005 -MESSAGE = bc01b08c7caa236100a012a726477d0ec389dbfadac73d5106424c5d1f3d1cef1695cfd93a7062ec8bf1067047854920162f651357bedf1cd5a92ec29bdb5dff716e8f6025515a9549ba36cdc35ced7c5c0c368e6cd92f2f10ae146a20728c374bba509641ce88cb42fff0cedfd9fd67f310f9d01a3f3690eb21db17bce67ae35c4cd24c209f09f044759d8d5a7d248e2bd966524ba8c0c28974726b43bd05de843433cc400598922974623d9acbfdc761c4c04375a952ce54caffaa96acff6d9dc278742af476e1865cb8c20d13d1c1900863bca231e44c6b0d47cb41d510f7958f48f304d03da033484a3e1f273faf6983375b7d3be03d8a0a002def6365beb2fa8ccf1a94987adcd33d0da1177fc5159b6e56d004301e921dbc12ec0a73f413cf2c48 -SIG = 6302b3ff2710be306c92b9aae30d23c3d4beff394e63201e6ad11713345c4fcb5cc8d3dd10adfb82bb11a189ce7ec3e4222727624fc17881c14788d2710e1608 - -SEED = 54e6bbfbf8c06ff2c066318c2ebf03d506547bf43c2d7a5d4df305a3032b7138 -PUB = 3b71aa1def666d9188f403f82ed30454aba5bc9f470f6eb988da187c92523284 -MESSAGE = 0318d7cb4805af9821dd3f914b0e076fea04a7d2db3a59a00affead3325a2be40c1f87f53276a8552604f228b976e288b9be906a7bd25b2ffab8a8af5d0f6e08786fd034e2fe1eb7ee033979860dd1e5327287e9e615f5dc5a960f17026b56842fc8d44cad002edc8501cfb956001502e4ddc81a7700d9c0be88eb4aaa64a6cbc39de82f13c11086de1a4270d3af97284bac1caef1d3edaa1071666bd83b2ede3962d98b9d93497ddfd8e97dab3089950cf30ed11db77ad1437a0af5889d8efc44e612420e3907267df3acff4bd3fb6e8ca5badf8e72f9de39528653058524456a81da5f84982afac34bef5f71e91f8f90938a6f5f1f287716de56a0946d261e87bc775ce189e41a77baede7320a3c608fc971e55d0a773c4d848d428637f11b4e4460390c -SIG = 3df4d09079f830e3f982283681ba37b50f3c73de2c5d22a291358ebb1fb854e510f63f9a48e9fff7fd8311302ea3e969394e6d49c9e3182054942f6a744cee03 - -SEED = 6862061be0de9dfd998118204b2b98db3ce7d7e819dbc10794af0ab2b06e8434 -PUB = 9c5f7c2265dde1b25e4f27ec71580d52dc89f2c3a712bc1ad5d6d69e711e08d4 -MESSAGE = 1740dde8434a0d689925679b0c180300cdbd0cf6a89ad8fde34653316cee4c571a4105c9e9e0284238fef2c38a09157c5db94340571b390adfb69ff4c0dc5053253a679d42cc1f1bf1ff429229ea0a5044c6f79564e0dd287f53f015b83187d9ad27d91039af062c437b1575a0eab6aeb8aa0d27b27665d6dea9041ff9963a3118b3298a8544e3fd69ac6877e3e4052fe4422bf03560b2c57ec531ee8b5ff53c28dbde35bb45c35077636e6f841b59d7eb77bc7791b6093858a3a80a3aa6d778dbf53db9d06119c50b71c791c0495c576d1b59d396873ed871485352c8299a359da5ee9d7f36ed1455f89851a30851bea719685aecd08f25562609dd106630735277e1d6519bb1687de8b8c68b9671452edbb3491da264cdfa0017c512d2769759cb925fb664 -SIG = 965edb34e8ab8bc3204a3201d22186372de4242600297cfdb57aa1df074ec50ddf10105e9d4c89a266c34db7772aa94cba946429e68ba62bf9a0ac90f5f05b02 - -SEED = b2250bbcb268d2477c8312b1900fd99982baa29a68974fbf8778a1228dc97550 -PUB = 44aa8df1181674b05ade980f7eddbaf3bd7422a920287cb2d2db59a063eebf74 -MESSAGE = 7ef0ae1336a6fab37f99da5fa7d0dec7409c072623ead84f241d53d0596b461705fb1b3c537d36b89e8960febb4cdc0d427ce2fc1be58dbbce151e35acd8b6ace40a19822914a4bd8c4af632f136418ac49b184d55193ebcc32d0d798709b1a8fe294fba8a1fe72d976b4400d4a393242311b0f8cc994e89475b0038ae5d8914938e8f6e87c6f50b9d656c45d7b14231efed97f3c90668913670bf5be2efd5c270c7cbaf01e8572e9800978dfe2e10a2fc0440b855629bf9cd409ea941cb69226cac771b15ea77c0326848806ff8d2e201e6e26cd5f45430dadcff8f59c321c1c9c6a29b94882935447d3e6c2e8804b1161576bdf0320fe53c307d9cde426077a7677cde3c1bc83e18e60a0c4ee6dccd877c213a8e4cca640ee04929804570ae1f96157c04357a -SIG = f2b8d92ed51ebd1000bf9dd3411a9fa9e7aee54c4c86e24ad0f9ad5c55643a12d680019ca03f216bd4bd32c9ce1cd8a528c3ffaa5d5b1dc91a4be56f0e2c5e06 - -SEED = b809361f55cfe8137fbda880fc62cbe44c216e141893346302b336045de21878 -PUB = fd23e42ff06644ead347abcc1b3e03b0e88593b61254981dd8ae59454e61b3e0 -MESSAGE = 17ace197d083aaf1726f53e5ef81b5a8c09222f260ee5f1f5404ab78d900d489688449b843bad3c498aac6d80b4639b76e6e81c55276a6f9c7cecd70b71aaaf2018ef76c0e30154aae86a5c86d4e8d0e4ec68cc427060bd56514f7238086bbef5bfca1f5671b18041838fd013572443dba48fbdd95ca740b0daa4327164a1e34677249708f77bd793e7caa6638b5dc9fbe6f0dfd4120209097209c93cedfaf21b6bf59ca6e99e6209639444f0e827bbcc0a61c3a237ca22a283213223ab658e712c7556238d3a5fe31722d65f5706ef6d64d73232d3043220f14e5cfd3c2c83a83d68e20274b6f96b29de040cec8475030b6a8a87d29808dd381795c3d22acf5dc193b720d95a752d9f123c209ffba004e48dd06dd8c9e172bc9e087d80bc5216c0b0b6e77031241 -SIG = b5b5950d3772d2eef88e1b0f5df5ffae2f2103885e71446d346fbb5daef94967a6b7b6e4be885110065876c665b7812de46ad31ec3bfcbeaee13ed0c1e0b300e - -SEED = eeef8074c2eb9a1cee2f2d3bb05325546a9fb7cbe44b599461fc5885f5fd9cac -PUB = 9b892941a0573b7a1673ef480f081168d9b7496a81f9177dc427ca1f84cbbf7d -MESSAGE = 9ae39feade905affcbedd2e72a6f2429b3d1108e5bc1a9dbaf490a6299bccd94acc413adacc918b14afa85c78bc168cc00740c3da0e08183915f79b7fe3868ce2a7e886b32ad45009805bfb81b8c07b3b1022420c0f009b889d7fc22fd1997ae34198438ca94778575122fcaaf96e6502c33a75a129a2d0dbb073d93820d9c96683db318990be3fef4cafc890afbd9b1504c7439a08a065e7814ee4f9b6f57ee16baed3f0e3aa35dd23d3528a458919ad77048b4e2e6172346be249a50af02bc6c853304c208ae0ba02771262a0d8a465f71fa0635e53eb2ef0a847d56a0bcd7dd3fe077c92bcdca3069a4a682a2859928315ce3eb445c6072a71492ee82e172a20be0b648b756e6c775376f0c7c3df8e64288089c2f81ce9593c6e08bb1cc1b27fcbd392fc7952c55 -SIG = 6f7101984fd6892e2144b7d45619830caeb6713bfab4eebbe217c5becd249bd9d752eb76e9fa995e7c71ff7df86bb260cdda173ff5deec6af204b7dde011de09 - -SEED = 61faeb15f857f6557862c8b8c7ef41f80545520996fcc1127b8c2491822201ae -PUB = 60a290c0fc425a0874673d94f9bb1400f9dacde9954f9f5b05dd48ab747a3950 -MESSAGE = 253b566eccb563bd6e480c69739b8e372519a3437254e0e5029cac86c71638f2df2a6cf9e56db2569934deba90db75547e3671747df64d6f2aaf3c110fa67a7094ccbe4cc5355f0d43235136ee26dbe37f4225d3bbfe245595280585fb548f894e86c516102580291fa7a02859557fb98eb588870828b0990ae9d74f3831da58946bc7a5ce1ba498b4e8be8989a3b50d7e8789f56b8b4fecbc2a33bfa3ef591a0fbcd932fa93e19f3a812ae5e4e3b4b242be7705a5874af73be310b0058266a378f23c1348524715b0ccc18d6634b23636c316ba6a1dd2fd5092c06716a717b54d0eb9fc7f636f85bbf225a2cf035b4b7cfddd75351682c0576c6b3ba5a1c0b25ec594e7709dd09a0079772ff3acc67fb6c1b37bb3742b726e77e80561d9ab73160b73362581da5b9c7f -SIG = 31f90f50b2dc705f1d92f12ca9975d76f1b2826ada3cc185b0ed6c83860777bd8c489b59855a91f64839d49ba467985abb376c47a4908b271b8f77c58d01fd04 - -SEED = e6b9cd4da07cb34f30391cf68f0d87c7cfcf68f810ffa40f9739c95deb037f71 -PUB = 569ede0f04630b43a04c5a66b6a5636b766c75965984a7477e15491960fdd864 -MESSAGE = 69def0523afda696f8448f9c1143abc26533e68695a090df0d9e43d0c0eff43583e6f709d2043c815fbb3f96ba2b0dc3be6fecad5dd38148788e4a0385a9fe7a921fcb8ccee0e4d3aed4bc3d216d84b414f9580b02820c03d92e675e685c4b5851f363bb4df97b417c3fd90022eeafa20dfbe82964f2ff073d255758fbe567c76b2c35e2b09f8a8d7afa32c6f5ad01bc3ebf6e210606db038ecb6820ce1ea4dd529fc1adfbc2a138565ac6d0f4a4109bdd47b8aa6ef4b8bede454680d1dbdb75fe1eb2e548d5de7cb6d792fef3aa0d8480a6030b30f104d7e76b58e9f476ebf2cc832923b50c50c111c3515fc518852323426ca778a596d3195da8585d8c3aa92083313a6e6585b70c98b185b472798a61cde77e62ec272f14b0d9eb4f22f9c7c05817da6fdefe7879a584 -SIG = 1e375c94bd809ca0cdd02f89ecec4e437732dd20a0a84b254eae889d8070e682d113b0be22e41e6cdc3be877680e7eeb7f0995e6622dc0b434fb0949dd994b0c - -SEED = 4d9044f17b5a0977dc5aa9916a924300a244a1ef7f060277ad4978351ea64291 -PUB = ab9c0692a606b2567c19c30f9faa3b4cfe72fb237077767b76d3b2ae1490a6d4 -MESSAGE = 7c8c7189af67327af1c6dd2c30e975f190e3b38d008b4585167e0d450740d46734587f6d208784245cc5cb062a2a277f17ebb2746f9bdf4a8237ca479ab0a430177e19ed7dd3622576b14cdc08282214fe5ee4d76b43c16ac90864c51be8aed45d7b980df7917f290fdf795846465f27fcb7e5730637944f0577c92f32375e995bc0cda9d7196f2c0c1ac8b80d12a0439963ebd2254c347703575816e7964c13d44d629280c312ea265344de38f3b18d9150f8f924afb44b6bfb9eda513d59e65e2ef18666e6c2a21c4018665befe92cae581d3cb14e23e97d830002cb90931ae0210068af394ebe351be5b817f3674bfbf40049030e4fe505d34a1d502a2c50d8e638e926c230676b7edefb6bec77b1c0ce609325287ba5fdd7a9976987bd07fc6a4344956ebf818f08586c -SIG = 6fa48aea4d5b9af65af964cdb709443a11fa84f7d44acddab16e04a6fcefb27ae33c05b36da13c23de517d6e6ac574a03ea630ba4fbb958131129aa7f1354c01 - -SEED = 75ad76bb4c0c229a5adc79e444b13f88a96459862c8cf0ba498d0c996af94a7a -PUB = f074dd2b9c1c309105ec951bb5812a91ddb54023b3809ab379c56af0461af617 -MESSAGE = 0ca8c1c74128d74e9d0a7bf8964291d074917f2f9920efb911520567642a50a615abcbd00aed4abbfef1a983cce333e1d0df3e6404fb9043c6803914cd5fffbc66a0790c7878a24089a571f895662a1d18be3f01ff97fb3323334b6f5baf96551448e4090d033c464294d09133b151d5b5c6321b50e2241de0ef6f882889ccf4ad3540d5a1e3f7548fb13be71c16516606e79d0449c2a08e5dc23148843c84e97ed24069161c8e75208f33e95b3e10d1d49a2faef9d986ab62809f62ad39c7cc871f375a4f5a6faf104d7e11b890cfb0589902685216ec07cb8e8e9e7a7c43635e23212b69ca3b7ed54f0b97949e3d9a6662f8e4b3ab09cd495294c331c047d86ee785ff658bcd7fcf9c480605ce05e810068d60fc9b26b5f063eb9000d2657a5094284ac80f1375d0b66d6f5f -SIG = 0c4643a8be6dc22f4beb6bcc70c6172ec7608378653cb4e99f3ae795eadf4e982a297609ca7938f5df632b095628cb75062d3d51fc0f3323bfa7b22ec4d47205 - -SEED = adc6e9b2e103b62c24ad4346410e83a1a0bd253e4abf77911850c6d9666e09f9 -PUB = fce316e33c910821beeddd634bedc58ee57999a76ece384605283b99b543b78b -MESSAGE = 8cccd98ebbf2439ffdfac41687638faa444e1ca4b63d13e898eaa8355492f28813ab813fd01510e112be106b2045d30f63335d248904d521de181abac03e3d2cb2d16c44b3b012a0c51f9901aef9056c724d7a2c6b2acb0a07555940e4c6e21154890611adeb6489f461d3e5ecd1af5a4d2b0adaf41747436eb414757a8fe4775674e3c6e5de4569d6fc6c788e10905eba32c270a393e6f721a765294e2ac99a9b6e534d3df08d1db97d602ac3195cb0b77f5bd4acaf737fadd6991f0688abc74918047574eac28289739a664e0e0e20574a2c25fde49d14539db1cedd4a9204a70acff0a62c8f25cd768ffab15c4db316840a4d1bc92e212670be07c5bdcf537590607dfbbbb4d9f98b89da0b4df7d88f3eca4814d16bfa20c8d2fa94f9f259f2ee2d3a83c9e4171b1a262c4b99 -SIG = cb017d6d2682c9854366259aa35f30d491cfaa930998c297dbddc6aded5b3d401cf76d80d8a2764de131718b6e0c481d7196bc72579716b0c0f6ff053e68c50c - -SEED = 37fc1beda4060b6c57883ddba0776c2bcf5ac28a651326021cca97723730fbb0 -PUB = 7bd7bf1c99dc82e06f08bb454d8fb288a57927e07ff1b12af15ee2c12fbb6b3d -MESSAGE = 3dfcac0265a024a83cb932674489a163aac314bf3d969f27596e451733b99deba5eeb779210baf95bf545a1ae6b8a915860693ee890f939320e06a844483d18c6a1bcd03c638bb7d1fe2a82eb448a311b1302ea6428f54a39f45a4d560be1557a2b254c45c137f45cc68356836e21bed0b7f73a518ce09db0be393927c339bf2a4b5987539404ce650284de12e3b553b262efe23848332ccfdc35e791a0ab43f139c71ed0fcb2d173bb377ee46b1a9dca9277e77df855f2830251e31e26acd86763c8d7eac22c882fc174f2b5e75ca6ad1ade03f942bb2a13bf541906159158c68363c7480c5b27a99320f8283a2699d4369c071c50dbd90b7792e4772efbc0b195bce84cc4dcfff7072a48968db69f9feddd0f9ced659eb5db7167f35f988cec114887dcbfdf27d02d300b3e1abec -SIG = a01dd65fada27039f168b123419d8abfbda48c572ece24fda06e1a5ec31e084f4ee1cbf9961e88ed51e189fcb7f5f235de1e5b28d08f2bfca190b0f019ecc207 - -SEED = 8d42f4ddd2bbd2b827b0a0d31d8f758ebd13a1b9b3712228948ca610bb8858e5 -PUB = b7354898794f9db0a8af6eeafcdbdf011d3fbef0212ad938a4a4ad27ab16ebbf -MESSAGE = e3a2bebc0496d8974a8f4061880369314ed9e440c1b77e26fe5071ce694ffd2136db0c4d5e880e6000083a75c90d3cf72b9cf5a2b1a9002c2701a2ff59b0699a8f42d79dd8a5fb71a8125453d91fb80080a3f0a16584282f17ec7dfdc2e5c69c4d9bdf484d55944dae273f211cfb76ad37da45871365439af35eea1fbecd4ca679b59b5e01bacf49c7f4e5efaa406ba1daeb085482af5ded89dc6885ffbe3d14d2931b83897e28ad06e5564e2789baea81bd932aa279fe8e324b9a8ef111c2abe2f137d4bb50d8ab76cebc0bd982a23919751ad4d49e88eb14173d3310289a872317e4a451e88d54320891870f15b2d53324430877a9fb5b49bb929f211c5b89764dd9c3a595a1451e9f85a238540002566e53a99ed1e6ddc9b4853f455edb4cf1980d56bbdc1313a36e76ea9cbb048a -SIG = 70764be39c6dca0f067abe1eca490fda951fd4e9499695266e270b9b05eae706ca8d1ca6a92d7c488ec6ad8ba11457a42a5e31702a9c2bce892dc40535c09f01 - -SEED = b62de5a1acfe4ca2d1f0c132afcbdae66fb29a02f297fbc2407fadbbf2454200 -PUB = b63b2d0bf355f7b6d0bac07403411c40afbbb2f707503b3fc2cee8a1c7d0a838 -MESSAGE = e659e51d7b193c4b8e2b3ed73a9d7557ed2bab6153883ab723592f730a914567142b3fa435db3219f83a542dc7a4bd805af666ea865b853146f8e3a9fe870711f90d12b0693492af2a1edf99a16458f781f1266ec437a5296a822ca9d69ce844b5c59097a2a56f3eb8fd273a636116db774300922d45b744657a692f5e8bfbcb06d2422818aeb51e7cda68acfbeda16e7c79580dcccde24e8e3d601b16e063b43a6d0d1407552f7504f5be19882e4ffe32344f5f473e73a8f6ed37b0d8d9e5e0a0dc9828395bcbd8f3a4e3124869249d058be0e045de0b1e12b1c83ba0aa227c95b82bf742c3eac0152b33e6d19be8b33a35bf705daab10622a90aed022ea6e439ed50a9308437929924ba3ab111ad0caa6feb0a6eb165824ebdb0866571efc07e5222ed8686b14d9270bf76b945d52014 -SIG = 5cdb00e98de73eab480be42f8a8a6163809a0d37101b6a5a4eed6a0c92030d09a5562c729080ce6f6594c8fafb1f594772db7a90a9e7da15896e82f70569390d - -SEED = 9732059d7bf0200f5f30412430336be4ef1e3cae62938ad08729ce3ba714cfd4 -PUB = 0de8425f5e30b2b8aebb8072009a30cf0411c3c8238f4e4208760c56c33e434f -MESSAGE = 1a13e7ab603b48eb896fe17173fb31950b0dcd5a35ffdbe1371c7a5bfba593317589d9652d88797729180b8d0e515abfe6548f160421e537d5c94aef2b34c7ebb097420003bc0f361b423e7e14630a803c118202540049f68c9cf46fae0368d162e400d77bb4523cf6c753b975c245bc99ed2f413a9d06c2da6ce0cc0987b6406b809e8eb319033d2de9131dee3b1b7b5c95d653ced8fccf998da1768511eca4d3c5f735adab96503b3551803e4922635095ef811be4c08a6cbac917cbe6cd91a4ae5a330ccec0e8e815371217a3de62f2d2d61466219833f33447132f4d43350c58cbaf422475edb128c56d80a495726b1fdbc56551eb72d0f4fec26ba8bff5eed6774b85039a5292834b5d1cc1b09ba0a3954d29323673f5e71276a12ac4c579355bf1ecca48e6a716b9fcecdc565c51b9 -SIG = fba1749b641dd4df34664bc43c00468c7d75e84afad72de473fd1e9c87da15ea604fc2549a1a867fa80850e9c2a59cd99053886760a8d9764b84dd672676720d - -SEED = 9c7f6f379e3857007e2ac6324cbbced57ac9eee4477813f83a81fc8cefa964d5 -PUB = a54ba396d687634d3eccf41c5782494f5f10a521a1e5d388523d80eeba5b0b2b -MESSAGE = 3f2d3072fe7383e541551ea9abdbaeae6a464ae6b9f0ba786a441b2d08da5bcada3c5424dc6931d6b39523e2de0a0c2e4e6b5b8cda925e5eac938416a2c51bf13d49531d7ec7114b1c82feaf90f3f87591e397d02702f8ec1b30d99f5be7d2203e4fe4db2ea47e7b4589d8ac506248d7347466edbc96ea32bf3a6ea7502dd60c9e84902715ab2c6ca68f5b00e1d909d83aa6ab662d8aea870ecd861fec69f2eec0ae677d2995b0ed688faa8ef78244e0d1195697b07122ceaa11f5a6ea58fbdfa2e2ec2df9d18693ae96d47127556e91f0864982c13419b04a63f208e730d26951882aefe001bca3408bd9862748c6cc876c28cac3bb2eb3395818c2091e0fbd7a0b4468c6b0d00cd008c11c3c3ad01080a1f5a40ae2e4b0c3a071efc8e1d1ba6ace6d4df0ff19829b0c680b3aeb759177ed34 -SIG = 65685f9ca5982e15a22ba3c83a0348348482dfae57cea178f0780c057baebe4af632f984540a26019a7fb34253c9ece7ff308ada233ce0686347ab5b21ce570b - -SEED = a478f35abb73727b6be6ee5e56eec323c9517882fd6919360ebbbf5d5cb8b83a -PUB = 7a6e266a54d135dda0009ccda8a94a4712ae5cb14761e8436e97c4b7814d8e8c -MESSAGE = 0173a34050b43748061ff8f5a3d7c43b6360847786e8bb75e536fb47b645b214f221ba24d83d28bc025024663e534f90f6e83a93d8bddeda2cd8808155652a908c437c2db6f3ed4912f57ca5b97928a73be964af59df4439854bb006fc295a87b7b72239c7fadfec40715509d98579daadfb8d524b4cec6620705efd4104c297144aea722974e12c5ecee5391ef2d93ac2b124e4ac496147c8b70363585d7078ccc53e2ae593350bc25548a0542526ab00afe477a0f4b27397c72bc74a8a8ab156e62b8bb47c3fbb4b34913e459687476bf33142c614702107ffe2cc01e25fa30275e1e2e63cea9168e4a47c02de097d4d853b27675c5bb330b94a974ead85e2bdee8ee17cbb5653346658df2f91f6bd739491dd71988b3a976a3e2e7a9d137410f4acba9feb5f11798c9a43b6adce14365a7c6d -SIG = 9d16fd40b9f8dd9b4a1a8c6d703b9fccbb940b1e0ae77a5970374af0cf726f4479fd30d7dff5cf53494d9a296ab6b9e46ea6c136b4db2c71c21b97c1c8254d0a - -SEED = ffe825148c0959b3a68de86ad8e8af7fa5e078f363dc124213c90020da0c9089 -PUB = 139152a0bd22962dd919ae3e0b1620e03c033c2ad0a3979ec6bcd1705e23d598 -MESSAGE = f125780d0cd088530f0c87b70bd42ebab56adb5ad4345f929ae5deae07fb55322153a8f023d38843bf5d6a93fe993eee71bc2ee563b25a50918f03efdb5dbf7269add69ded3e66953895620d9b6cf46ba2348f8d66d7f092235e378c1e3edfebeb78084bc8dea013f9933aae14a041948276d01f1cb5834b0e590e13d931d19292bb1d8041ff2fe2e1171a2e0b9a059821d0924dde7f3b1bb59813f5e3c63520aafb8801ba62c7097d4d8cf437a568a7f0087c6ea0fce6e568c4883f1cd12c749d06a6feb278f1086a8b04769921f78a9959062ab06f98ee80c2c7854ffa760f86a89ee1a51266053d195e61bb1dbd18dd89ff394e408ace0f641a395d56118ea72b7d8adf78b1655ecece7e8250e8a3a91cb8fca0d9ce0baf8980a387c5ed4318663280e5b4531f3187c47eaea7c329728ddd0e40 -SIG = fe4e89ee31786c0a3d3de3649bb93f0b8aef1caf5a832ec5e4067810705adddf539b8f4e05ad08cf3479e45b42c96528f6d59a4625703ddbf15b63093965d80d - -SEED = 49aff421a7cd12722aa84c48c1fb1c5f8d9e277d0a99ecbc9348c3aaa74be422 -PUB = 88d2c26266f493bc67578ca0b1f51160cf0fdb6a09a906db9faa686f11f8208d -MESSAGE = 70a1ac144b75fda75586a79c36fd39cce5f5cae2e6375852d3b62a9630336a293ea6d2ac6e5b57da21ef364a595bb0750f5bf4d2b320676423870e4b8e0869601f16680619048c4ede276da69f205a70176e25ea04bd089763e709ba343fc8831e52044eabf9441e6997f8ba1aeb9ef0f491170667a7f5fc9627cbd0551b76be27283a4b0c5f667846688226a115ee8020df08042b19b59fe551316a6cb6916860b9ecd74154b4051038a17352372ec14d3c957d2ef50ff786189a8aeb9c08f45eeb5eb8b040339974aa9798c425d7becb228c447a6d0b3cef271893e0f7076e223a7e87c6a3d270a033bc97a4565edce0aa91ffc3f7801775a6f29b230245bd71fa034353de372395d1bfcbdebba081330f7c076be99c2cf4867f15b78d52f46fc7391c9cb95e5d64643baffe72a8e3a650667fbb3e -SIG = 749181284df05dbe5974b91782a1a76ea08642cb0f0c98db586c575c210cdc8b651bd34b757ae38e4b6be9465235bd0eca430e26c3eede561c6e824dfa200e0a - -SEED = 703a6e2b62d0090c61d8659b6a963e03c9d62c1b38f7d70e5f9ff05590cd0360 -PUB = 370c21de6ef2fab534ada999869c90bc9b92ccbf249b79d39d95441d1ede210a -MESSAGE = d42a1756e84df4b4e9773f86f7674a2cd78e71e40aa8f644e6702dfbc2c2c5ca90fc242e9cb0099cc8f2c2d3136baafc0ff695482fdacdef9f565610b6e1900722f435c6385b35e9f6c436ca037e03f64e2233dffa58db3b91cc1daa0bb0c54c8a43e469d2cff7fa2bf8f5d1d877931089c82ed89aba42f2ee2b86e445cfd09f4cd78b35191bf467e784eef75dc987e046d37d4d4e8e9bbe14af80d03a1f40898384b9d3279fac9c57fd9c7eecbe19a5acc15033b84e07fd0e409bdbd5a57f65641183a6c0a8ec426d1f1d223166ff0a1900b2e92b7d85835d019d17775e5093ccd126f90f63cb7d15cbeb531324219cd64ded6714b21a65371af07210dfdf0e4e58ddc7d59f4cfa65c421d814ee2c9bf6dbf64873d579b09ee5dcedd733063e039ac9a5f9ca4c2525a4cc8e984da7185e2d64fad81c8a -SIG = e5fd64da028800c6ceed068a5e596f1621c70a8cb138b31b32647eb4b07bd2ecc5942c18844f367033f67398e314ba2c7ccf299c069787777025d845f2aad60e - -SEED = 76849c188e3edd0ff5f8fb874dc0456645518445e41a7d6833e616c3c48c9868 -PUB = d670e2ea07db60c22ab79a93ebf49d22a6245ee3af07b3be584eda694c37729e -MESSAGE = 1eccb0bc8eca3ab5bee68c5f8caa34536766c705f50827db7ac375d4fe30b58ffb7e2fe490cc71a8ff86c006d6174d05793ab8a55dd51b06de417bc0ac452cdc7cfb0bb00362b6765d20db23eb1848027064a1d9091d3b10ed776f28b76768bdfc08f0bc511f76faeba76cfc4cb5c83dc9ebe8a8d79edca923eccd524009cafedc90e3ad87d1392e1fccf4e60ccab95dc0ab54bf44245a007a96d46634b1b2965b829c3d7daa765972b54a7b365b6f34d77d7176acd8d894f6b417091b6c00edb7a4e81379988bfcecb692e9c3c4310a7e240e5c1063cde113f22a684a50a112ff47d3898812efb92637072b86163ad89316d221195acbfad0a03a1fbc2d967fe83f84c8459fccd490b9c5b3e55d27e9484e943c417f2128d73701da28f49fd3683f33a39cdee234bd305b9491e2f3eb621be3dd1dbbb31b -SIG = 7141399d51daa6eb4519bf3f01b233920fa908fefa612f0cd7d5af8a9a3c44190e3f6384a8d14d37c97030ef5018cf8aee8aeb1569a73d84862a59b7df72fe09 - -SEED = 83ae48ad70da0bb3cdf87481ee2c0c8571c2ca986712f8bc2329e9a3e33383c5 -PUB = b785309000df95f5a04f7d89c4113301057adaeeb29bcd28d99371b537bba2f6 -MESSAGE = b7521d3f71c679fa7037fe7488a641f6b97c49454acc8e36b903d8f9ebb54d89cb56efd19e04ba6a7c8f48a7d3ec9decd3f1cd0faf6e978118e6adce9c6c6be63c6a6a1ae21651828479a46bc9a0f7943040f940a0d470c8e577c5d575cb53c1bf3ab1feb050dcb6fef0ba4447f299fdb9f27ecb0714ecfefd74bad7b122a462c24a209848a03389074578c5bdc36396d809b0f14018da64917e6bf87ef405c8f3e333ff9c3baf6339667620794bb4743f0514b5de7d7fdd947a7e3501ee88efad159e33a1072fbb99c7c71e9d13a502d5a07c4f817eeb7f0c5319aa41a96d5ff4f15a73c29b571fe211090e172c8db518624612a5c371a9d7cef6de35ebef96e88e1a78af3bd5dd35251ab54d73718f3e70d2d59021531dc73184f0fc69c2e92965844ec27c1c02af5e9a3469de355db2256e0ec2a4eba30a -SIG = 43332351d3fb7b45fcf37c607d442ea80dbda2cb69c2884f424e65ea3a331ed8472d4368405cb736b2d6685ad782e239fe833ed789a2923185166f608342ee05 - -SEED = 39e56a65623a0aebade0da12ce1df378bc924073f73a549effaebc465d1a78e2 -PUB = 83da8ad50bad09eb3e94c725df3cc3a119736adc859ca1a10503f48ff2fec596 -MESSAGE = a96dc2ea3fa1351492a4619d9194681f8ec400a97158244482653838ccb7e156a82d564368f83a6ee1be46bc34b817200e8464c3d12b5ef2c50b19565b881c4c3d4563fb947eb47c3ee9c1ee7853269874455bfacba305f307d1ac5309eeae5c07fa5c4d428edbc8b9528c4415243a9ef580aff8fcfb12000a71fceee89de97f90279529bcc822ed3cb34c82ba5fec15f4945663636d67b5feceacc31d25f98aea07f7800d5a1034251cb91dd0963ec2c1a54773a4d96c18357f8d101de58e932f8c6cdde8e3cfcef5a7443fdba7b78320403c0196844724a612183e34bdd808ce7b958861ca37115730eaede1fd0baabe976efefd0365fdf926776c536f47ff80de5c18291bb7e9f1b913ffd1d94468b789752fae6ca897c0cca53ef1e731d00c8bdbe8929ea6b1dce1f31a20688d37b0f3a2b4153b306bdba1 -SIG = 398e8260011f57d8ac8c58d5457bc652c7414aaf6fb2f426b7899056605c0afc28392423b2b571f5e6c3c7f6d60245e53ebd03bdc5ad3c1ad8738cb32214d00f - -SEED = 4b9921852f409a323ae38175e8d76a211fc4d9c654178eea3baa7a767a6fda06 -PUB = 4c723e436b6bd97f44af52503b21cc50d5f6ad6cfc8288345dde8054e995582e -MESSAGE = 3f33d8fb83e68741090a37bedd745cf141aaaed8c92ffa742a52561777885805ace14246ab98a8cb598c9ce3de9b29bae5fa04b1cf828de11aff80a7ef8a3a38aede4f3c3563a25d049badcad5ed7e47fdbba6e111307eebe9ef4906bc989728b76e84afe808e6653b271e21104aa665f1898dd2aab23090e22b4e344a2616fbd8ee4ad8ed8108395eba817fbd14fec5c17dcf56b8220856b2b833e091407d5089b35ddf34b86ff7dc9fde52b21ef12176ef3370b7f3a0a8cb1b058a51aefff3d279d80f51a68bfb592587b45c5c63a7e4d625b887de486a118316c3b6a238575f92ac5b1c94c3f5dbbd96686000d6d39cccd558d420e4d447a8cbc4bc7b8c6a03af0f0034fb3518d93800f0f713e4b13732e16ada51801d7e559cf839d1058f64955698311399345416850dddcc5601a684fd09e6afd3944f5e19 -SIG = cbf1f1642df950eb71fd09590d34c265922c58bd8026bba3fc0e594a6bb1f2b90da3dc1d5f6b6d5b405a896d1dbb71b8685c4dfc444acaffe65ab8331789f507 - -SEED = 1bff652a2c8309a393ac11da3aa97fb078bb284ed5e1b8ccc983652ef8556cd0 -PUB = aaabdc091fc3682354201744e9b73fd2a6cfb281914bf2c70ec3dc1dec7216b0 -MESSAGE = 48d02698a97bdcb3ef078dcfcf5750005f1702d300e7e89bc436e381113401f852b8b4acff60ffbd4ab46d202168d98b8735e79cb350e35b070ff6bdcafd954b551969b6b1a70c9131ebd40d96140291d8d2b091540a8b18d8e5465915c25dbc6b5c9a687942533c372c8b4e95a953677169b950edd3464375cd43132ff9bd541ee22bd418ce23195f65d8b289f633ec8d71e1a801b06c3c827f627e723d2199100ce73e8e4a4440e778317a474910793b47b10ffb55db7f281c7d7a033bd80048b82673b87cf95e99422ba628688f3c971890ca15d12f572fa1977a17307069da304ead3026eb01042668890d17008cd1e92c46cbe9c857e7193de3aba3911e4f86fe0a1698ab7cdb9251a8424b2848b96ad81ea239d365fdea92ea5c0473d0a6bb1e371356bdfad2d0350336d3e1947c936fd0c25195445011731b -SIG = 93c9c33493fc64172d51e16a0a1cd729a0d99e3cb864e89a42987f39dd8cd26545fdfe37581911e803677da4c55b0a683ddf62b728f8f30685ae58f628ebe609 - -SEED = 002fdd1f7641793ab064bb7aa848f762e7ec6e332ffc26eeacda141ae33b1783 -PUB = 77d1d8ebacd13f4e2f8a40e28c4a63bc9ce3bfb69716334bcb28a33eb134086c -MESSAGE = 5ac1dfc324f43e6cb79a87ab0470fa857b51fb944982e19074ca44b1e40082c1d07b92efa7ea55ad42b7c027e0b9e33756d95a2c1796a7c2066811dc41858377d4b835c1688d638884cd2ad8970b74c1a54aadd27064163928a77988b24403aa85af82ceab6b728e554761af7175aeb99215b7421e4474c04d213e01ff03e3529b11077cdf28964b8c49c5649e3a46fa0a09dcd59dcad58b9b922a83210acd5e65065531400234f5e40cddcf9804968e3e9ac6f5c44af65001e158067fc3a660502d13fa8874fa93332138d9606bc41b4cee7edc39d753dae12a873941bb357f7e92a4498847d6605456cb8c0b425a47d7d3ca37e54e903a41e6450a35ebe5237c6f0c1bbbc1fd71fb7cd893d189850295c199b7d88af26bc8548975fda1099ffefee42a52f3428ddff35e0173d3339562507ac5d2c45bbd2c19cfe89b -SIG = 0df3aa0d0999ad3dc580378f52d152700d5b3b057f56a66f92112e441e1cb9123c66f18712c87efe22d2573777296241216904d7cdd7d5ea433928bd2872fa0c - -SEED = 25b0f0bb3dcb422a6f3c6c220eaadb11dbfe489c2d455b276cefe8cba057f9f3 -PUB = fe03c9c4394adc74b13f47654bead8bc855958b4194fdab2097ac1b157933c05 -MESSAGE = 54d99f969efa8870fc20fa9a962bb372619c324439728af3139c2a07e8c1b29c1e4eedc2d40ba722f63ce37670362af6f5202add668c4fb4d62fa8bacbc7d07ff3bd38c15a01064259cc34134861632967460541a99b8d5182bf59347b5a59879aa3b091a1f3e04135bd6301be5226d4895e5e9c2b15e48e5ecdf44129e6122853a606fc118466fa720b5ab165635c3bde04d74289274fa03547accbde780e1fa0bf2c56f8436a53e73878a424a29aa9de385dba419ae6a5d12e004276152b58d325b302400a55333c38cde4908ae1d0121cbeca950809c543314277c1485e68d9f9c0a962d1b1e0dda1d4a52b56f8308a80b92acc9f4ebc3ed45d91a129da8675621af676703def3b84113183b2e3a8c56157f243f13980f3d1756fea7668c91503d35c839a2120c79ec954fb546d7b542f987289534ffdef62d47fd5ec -SIG = da50d5242bf51c3951780cafd926d67bdf5640d5d3bb08433831d56e48e2592a1c375968bb4d2fbea56145abf2d82991363b1565fa1effe214011a686e39950e - -SEED = bf5ba5d6a49dd5ef7b4d5d7d3e4ecc505c01f6ccee4c54b5ef7b40af6a454140 -PUB = 1be034f813017b900d8990af45fad5b5214b573bd303ef7a75ef4b8c5c5b9842 -MESSAGE = 16152c2e037b1c0d3219ced8e0674aee6b57834b55106c5344625322da638ecea2fc9a424a05ee9512d48fcf75dd8bd4691b3c10c28ec98ee1afa5b863d1c36795ed18105db3a9aabd9d2b4c1747adbaf1a56ffcc0c533c1c0faef331cdb79d961fa39f880a1b8b1164741822efb15a7259a465bef212855751fab66a897bfa211abe0ea2f2e1cd8a11d80e142cde1263eec267a3138ae1fcf4099db0ab53d64f336f4bcd7a363f6db112c0a2453051a0006f813aaf4ae948a2090619374fa58052409c28ef76225687df3cb2d1b0bfb43b09f47f1232f790e6d8dea759e57942099f4c4bd3390f28afc2098244961465c643fc8b29766af2bcbc5440b86e83608cfc937be98bb4827fd5e6b689adc2e26513db531076a6564396255a09975b7034dac06461b255642e3a7ed75fa9fc265011f5f6250382a84ac268d63ba64 -SIG = 279cace6fdaf3945e3837df474b28646143747632bede93e7a66f5ca291d2c24978512ca0cb8827c8c322685bd605503a5ec94dbae61bbdcae1e49650602bc07 - -SEED = 65de297b70cbe80980500af0561a24db50001000125f4490366d8300d3128592 -PUB = ba8e2ad929bdcea538741042b57f2067d3153707a453770db9f3c4ca75504d24 -MESSAGE = 131d8f4c2c94b153565b86592e770c987a443461b39aa2408b29e213ab057affc598b583739d6603a83fef0afc514721db0e76f9bd1b72b98c565cc8881af5747c0ba6f58c53dd2377da6c0d3aa805620cc4e75d52aabcba1f9b2849e08bd1b6b92e6f06615b814519606a02dc65a8609f5b29e9c2af5a894f7116ef28cfd1e7b76b64061732f7a5a3f8aa4c2e569e627a3f9749aa597be49d6b94436c352dd5fa7b83c92d2610faa32095ca302152d91a3c9776750e758ee8e9e402c6f5385eaa5df23850e54beb1be437a416c7115ed6aa6de13b55482532787e0bee34b83f3084406765635497c931b62a0518f1fbc2b891dc7262c7c6b67eda594fa530d74c9329bad5be94c287fbcde53aa80272b83322613d9368e5904076fdbcc88b2c0e59c10b02c448e00d1b3e7a9c9640feffb9523a8a60e1d83f04a4b8df69153b -SIG = 7a9b736b01cc92a3349f1a3c32dbd91959825394ff443c567405e899c8185ce8fad9500e1fce89d95a6253c00477435acf04bff993de1b00495def0834ee1f07 - -SEED = 0826e7333324e7ec8c764292f6015d4670e9b8d7c4a89e8d909e8ef435d18d15 -PUB = ffb2348ca8a018058be71d1512f376f91e8b0d552581254e107602217395e662 -MESSAGE = 7f9e3e2f03c9df3d21b990f5a4af8295734afe783accc34fb1e9b8e95a0fd837af7e05c13cda0de8fadac9205265a0792b52563bdc2fee766348befcc56b88bbb95f154414fb186ec436aa62ea6fcabb11c017a9d2d15f67e595980e04c9313bc94fbc8c1134c2f40332bc7e311ac1ce11b505f8572ada7fbe196fba822d9a914492fa7185e9f3bea4687200a524c673a1cdf87eb3a140dcdb6a8875613488a2b00adf7175341c1c257635fa1a53a3e21d60c228399eea0991f112c60f653d7148e2c5ceb98f940831f070db1084d79156cc82c46bc9b8e884f3fa81be2da4cdda46bcaa24cc461f76ee647bb0f0f8c15ac5daa795b945e6f85bb310362e48d8095c782c61c52b481b4b002ad06ea74b8d306eff71abf21db710a8913cbe48332be0a0b3f31e0c7a6eba85ce33f357c7aeccd30bfb1a6574408b66fe404d31c3c5 -SIG = 4bac7fabec8724d81ab09ae130874d70b5213492104372f601ae5abb10532799373c4dad215876441f474e2c006be37c3c8f5f6f017d0870414fd276a8f42808 - -SEED = 00ad6227977b5f38ccda994d928bba9086d2daeb013f8690db986648b90c1d45 -PUB = 91a4ea005752b92cbebf99a8a5cbecd240ae3f016c44ad141b2e57ddc773dc8e -MESSAGE = cb5bc5b98b2efce43543e91df041e0dbb53ed8f67bf0f197c52b2211e7a45e2e1ec818c1a80e10abf6a43535f5b79d974d8ae28a2295c0a6521763b607d5103c6aef3b2786bd5afd7563695660684337bc3090739fb1cd53a9d644139b6d4caec75bda7f2521fbfe676ab45b98cb317aa7ca79fc54a3d7c578466a6aa64e434e923465a7f211aa0c61681bb8486e90206a25250d3fdae6fb03299721e99e2a914910d91760089b5d281e131e6c836bc2de08f7e02c48d323c647e9536c00ec1039201c0362618c7d47aa8e7b9715ffc439987ae1d31154a6198c5aa11c128f4082f556c99baf103ecadc3b2f3b2ec5b469623bc03a53caf3814b16300aedbda538d676d1f607102639db2a62c446707ce6469bd873a0468225be88b0aef5d4020459b94b32fe2b0133e92e7ba54dd2a5397ed85f966ab39ed0730cca8e7dacb8a336 -SIG = dc501db79fd782bc88cae792557d5d273f9ba560c7d90037fe84ac879d684f612a77452c4443e95c07b8be192c35769b17bbdfca42280de796d92119d833670d - -SEED = 1521c6dbd6f724de73eaf7b56264f01035c04e01c1f3eb3cbe83efd26c439ada -PUB = 2f61a26ffb68ba4f6e141529dc2617e8531c7151404808093b4fa7fedaea255d -MESSAGE = 3e3c7c490788e4b1d42f5cbcae3a9930bf617ebdff447f7be2ac2ba7cd5bcfc015760963e6fe5b956fb7cdb35bd5a17f5429ca664f437f08753a741c2bc8692b71a9115c582a25b2f74d329854d60b7817c079b3523aaff8793c2f72fff8cd10592c54e738df1d6452fb72da131c6731ea5c953c62ea177ac1f4735e5154477387109afae15f3ed6eeb08606e28c81d4386f03b9376924b6ef8d221ee29547f82a7ede48e1dc17723e3d42171eeaf96ac84bedc2a01dd86f4d085734fd69f91b5263e439083ff0318536adff4147308e3aafd1b58bb74f6fb0214a46fdcd3524f18df5a719ce57319e791b4ea606b499bfa57a60e707f94e18f1fed22f91bc79e6364a843f9cbf93825c465e9cae9072bc9d3ec4471f21ab2f7e99a633f587aac3db78ae9666a89a18008dd61d60218554411a65740ffd1ae3adc06595e3b7876407b6 -SIG = a817ed23ec398a128601c1832dc6af7643bf3a5f517bcc579450fdb4759028f4966164125f6ebd0d6bf86ff298a39c766d0c21fdb0cbfdf81cd0eb1f03cd8a08 - -SEED = 17e5f0a8f34751babc5c723ecf339306992f39ea065ac140fcbc397d2dd32c4b -PUB = 4f1e23cc0f2f69c88ef9162ab5f8c59fb3b8ab2096b77e782c63c07c8c4f2b60 -MESSAGE = c0fad790024019bd6fc08a7a92f5f2ac35cf6432e2eaa53d482f6e1204935336cb3ae65a63c24d0ec6539a10ee18760f2f520537774cdec6e96b55536011daa8f8bcb9cdaf6df5b34648448ac7d7cb7c6bd80d67fbf330f8765297766046a925ab52411d1604c3ed6a85173040125658a32cf4c854ef2813df2be6f3830e5eee5a6163a83ca8849f612991a31e9f88028e50bf8535e11755fad029d94cf25959f6695d09c1ba4315d40f7cf51b3f8166d02faba7511ecd8b1dded5f10cd6843455cff707ed225396c61d0820d20ada70d0c3619ff679422061c9f7c76e97d5a37af61fd62212d2dafc647ebbb979e61d9070ec03609a07f5fc57d119ae64b7a6ef92a5afae660a30ed48d702cc3128c633b4f19060a0578101729ee979f790f45bdbb5fe1a8a62f01a61a31d61af07030450fa0417323e9407bc76e73130e7c69d62e6a7 -SIG = efe2cb63fe7b4fc98946dc82fb6998e741ed9ce6b9c1a93bb45bc0a7d8396d7405282b43fe363ba5b23589f8e1fae130e157ce888cd72d053d0cc19d257a4300 - -SEED = 0cd7aa7d605e44d5ffb97966b2cb93c189e4c5a85db87fad7ab8d62463c59b59 -PUB = 4889855fe4116b4913927f47f2273bf559c3b394a983631a25ae597033185e46 -MESSAGE = 28a55dda6cd0844b6577c9d6da073a4dc35cbc98ac158ab54cf88fd20cc87e83c4bba2d74d82ce0f4854ec4db513de400465aaa5eee790bc84f16337072d3a91cde40d6e0df1ba0cc0645f5d5cbbb642381d7b9e211d25267a8acf77d1edb69c3a630f5b133d24f046a81bf22ff03b31d8447e12c3f7b77114a70cbd20bbd08b0b3827a6bbcf90409e344447a7fbc59bdd97d729071f8d71dcc33e6ef2cbab1d411edf13734db1dd9703276f5eb2d6aa2cb8952dd6712bfae809ce08c3aa502b8135713fac0a9c25b1d45b6a5831e02421bba65b81a596efa24b0576bd1dc7fdfb49be762875e81bd540722bc06140b9aa2ef7b84a801e41ded68d4546ac4873d9e7ced649b64fadaf0b5c4b6eb8d036315233f4326ca01e03393050cd027c24f67303fb846bd2c6b3dba06bed0d59a36289d24bd648f7db0b3a81346612593e3ddd18c557 -SIG = bf9115fd3d02706e398d4bf3b02a82674ff3041508fd39d29f867e501634b9261f516a794f98738d7c7013a3f2f858ffdd08047fb6bf3dddfb4b4f4cbeef3003 - -SEED = 33371d9e892f9875052ac8e325ba505e7477c1ace24ba7822643d43d0acef3de -PUB = 35929bded27c249c87d8b8d82f59260a575327b546c3a167c69f5992d5b8e006 -MESSAGE = 27a32efba28204be59b7ff5fe488ca158a91d5986091ecc4458b49e090dd37cbfede7c0f46186fabcbdff78d2844155808efffd873ed9c9261526e04e4f7050b8d7bd267a0fe3d5a449378d54a4febbd2f26824338e2aaaf35a32ff0f62504bda5c2e44abc63159f336cf25e6bb40ddb7d8825dff18fd51fc01951eaedcd33707007e1203ca58b4f7d242f8166a907e099932c001bfb1ec9a61e0ef2da4e8446af208201315d69681710d425d2400c387d7b9df321a4aec602b9c656c3e2310bff8756d18b802134b15604f4edc111149a9879e31241dd34f702f4c349617b13529769a772f5e52a89c098e0dca5920667893a250061b17991626eb9319298685be46b6a8b68422444fa5a36bcf3a687e2eccb9322c87dc80165da898930850b98fc863cada1aa99c6d61c451b9ccf4874c7f0e75b0a0c602f044812c71765adaf02025395b0 -SIG = 985ca446ddc007827cc8f2852cbd8115ef8c5975e9d7ce96d74dfed859aa14a4c15254006bea5e08359efe2625d715e0897ee5a16f151203be5010418637de05 - -SEED = beedb8073df58f8c1bffbdbd77ec7decb2c82a9babecefc0331507bdc2c2a7e7 -PUB = b27e908b805e296fc30d2e474b060cd50c0f6f520b3671712183bd89d4e733e9 -MESSAGE = 35ca57f0f915e5209d54ea4b871ffb585354df1b4a4a1796fbe4d6227d3e1aba5171ed0391a79e83e24d82fdafd15c17b28bf6c94d618c74d65264e58faaacd2902872fdd0efa22e8d2d7ce8e3b8197f0c3615b0a385235fa9fd8e4564ee6e6b1650b4cfb94d872c805c32d4f3a18f966461d3adbb605fa525884f8eb197627396ba4d995d78ac02948a0eaabb58519b9a8e2e7985cd1de2c71d8918d96a0168660ce17cddf364e3ec0d4bd90f2104751a1927ee1d23f3e7a69840ed040b00e5f6e4866ec58813149cc382aebf6162608c79574d553f47230e924a0ef1ebf55d8e1a52abb62a2d7ac86027c7c03cc83fa1949da29e2f3037ab986fd2fffe650e3149babae5a50b1ee9696f3babec72e29697c82422814d272085500fd837fe3c7a973ef4c169af12dd7f02700620bb045bdbf84623f326350570b3cadbc9aea4200b28287e17ab -SIG = 8c890cccadc7760e1e82e43c44b3dc0b685a48b479ae13cc0a6b0557d0fb1cbabba63d2a96843412ea8d36c50acbf52b92cfb2dce49dc48af6ddcf8ee47a8608 - -SEED = 9184ef618816832592bc8eb35f4ffd4ff98dfbf7776c90f2aad212ce7e03351e -PUB = 687b7726010d9bde2c90e573cd2a2a702ff28c4a2af70afc7315c94d575601e5 -MESSAGE = 729eb7e54a9d00c58617af18c345b8dc6e5b4e0f57de2f3c02e54a2ec8f1425ec2e240775b5ab0c10f84ac8bafda4584f7e21c655faecd8030a98906bd68398f26b5d58d92b6cf045e9bd9743c74c9a342ec61ce57f37b981eac4d8bf034608866e985bb68686a68b4a2af88b992a2a6d2dc8ce88bfb0a36cf28bbab7024abfa2bea53313b66c906f4f7cf66970f540095bd0104aa4924dd82e15413c22679f847e48cd0c7ec1f677e005fec0177fbd5c559fc39add613991fbaeae4d24d39d309ef74647f8192cc4c62d0642028c76a1b951f6bc9639deb91ecc08be6043f2109705a42c7eae712649d91d96ccbbfb63d8d0dd6dd112160f61361ecdc6793929ca9aef9ab56944a6fa4a7df1e279eaf58ce8323a9cf62c94279fff7440fbc936baa61489c999330badcb9fc0e184bc5093f330cbb242f71fb378738fea10511dd438364d7f76bcc -SIG = b3c24e75132c563475422d5ea412b5c1e8e6e5ea1c08ead1393c412da134c9a1638284ea7e2ca032fe3d3e32a9066a8c8839903f6ef46e966bb5e492d8c2aa00 - -SEED = 354e13152ee1fe748a1252204c6527bdc1b1eb2eb53678150e6359924708d812 -PUB = d45ff6c5fb83e7bb9669aa8960deb7dbc665c988439b6c9ef672c6811dc8bcf6 -MESSAGE = 8e5fccf66b1ba6169cb685733d9d0e0190361c90bcab95c163285a97fe356d2bdcde3c9380268805a384d063da09ccd9969cc3ff7431e60a8e9f869cd62faa0e356151b280bc526e577c2c538c9a724dc48bf88b70321d7e1eeedb3c4af706748c942e67bdabdb41bec2977b1523069e31e29b76300288f88a51b384b80cc2526f1679340ddec3881f5cd28b0378d9cd0a812b68dd3f68f7a23e1b54bee7466ac765cf38df04d67441dfa498c4bffc52045fa6d2dbcdbfa33dfaa77644ffccef0decdb6790c70a0d734ec287cc338cb5a909c0055189301169c4f7702c05c0911a27b16ef9ed934fa6a0ca7b13e413523422535647968030edc40cd73e7d6b345b7581f438316d68e3cd292b846d3f4f7c4862bc7e6b3fb89a27f6f60cd7db2e34ec9aae1013fe37acff8ad888cb9a593ef5e621eae5186c58b31dcfde22870e336d33f440f6b8d49a -SIG = de2b46e65f3decef34332e500f2e11306fbdcf1be85a1c1ee68ba3045dcec2c7be608d22927da1f44c0e2083ae622cf3c29d893887994efcfa2ca594f5051f03 - -SEED = 7ff62d4b3c4d99d342d4bb401d726b21e99f4ef592149fc311b68761f5567ff6 -PUB = 7fdfdb9eca29d3f01d9486d7e112ce03aa37b91326a4283b9c03999c5eda099a -MESSAGE = 99c44c796572a4823fc6c3807730839173774c05dbfc1492ed0d00509a95a1de37274b3135ed0456a1718e576597dc13f2a2ab37a45c06cbb4a2d22afad4d5f3d90ab3d8da4dcdaa06d44f2219088401c5dceee26055c4782f78d7d63a380608e1bef89eeef338c2f0897da106fafce2fb2ebc5db669c7c172c9cfe77d3109d239fe5d005c8ee751511b5a88317c729b0d8b70b52f6bd3cda2fe865c77f36e4f1b635f336e036bd718bec90ee78a802811510c4058c1ba364017253aa842922e1dd7d7a0f0fc9c69e43fc4eaeffaaf1ae5fa5d2d73b43079617baba030923fe5b13d2c1c4fe6fac3f2db74e2020a734b6121a0302fce820ba0580ce6135348fdf0632e0008df03ee112168f5cfa0037a26a1f69b1f1317edf2a3ab367455a77e00691215d7aa3133c2159d3da2b134cf04f0defbf07a6064011e64dd14d4f8f064356655428804c2771a -SIG = 058f79927fbf6178724815c7b11c63baaa90bcc15d7272be082f8a9141861c816433055f6cf6491424853f9ec78bb91ace913a93411b4e5ed58bc4ba5715c60a - -SEED = 6cabadd03f8a2e6ebab96a74f80e18164e4d1b6baa678f5a82e25604af989aaf -PUB = 2a4a3179564194e00100c18bc35351d8b135bbae5b32b28fce1d7b6766ca4b32 -MESSAGE = 279f78cf3b9ccfc6e1b01e1a82f50ed172e9a8e1e702bb15661dd7dc3a456ff7a7a7fdfb081db3867079630c7f70fd753292ec60ecbf50632e9aa45b996505c66e6dc3c6ae892e21b6a8705e4bbae8f16a3378554b31fdb0139dcd15c96a8a7e4b88756a86d18db5dc74fd7691197dd88e2c7d5df52b049344cdc477c9cd7e89eda99ccfb1d00814d0152b9654df3279372ca5f18b1c946f2894a76b079ddb1c3cd61fbb969aeec9193a6b88fb7d136c07f9821e5c1074b4e93bcaf6fa14d0d1d7e1707589d77ec1337206e53a1f06cc26672ff95c13d5ff444766931ba30a0afdcdadd2098e9c41fd87a3f23cd16dbb0efbf8092ce33e327f42610990e1cee6cb8e54951aa081e69765ae4009aeed758e768de50c23d9a22b4a06dc4d19fc8cbd0cdef4c983461755d0a3b5d6a9c12253e09568339ff7e5f78c5fdf7ec89f9186a621a8c0eed11b67022e -SIG = 4e65c6c1d493045e8a9250e397c1d1d30ffed24db66a8961aa458f8f0fcb760c39fe8657d7ab8f84000b96d519717cff71f926522c1efec7f8b2624eae55f60c - -SEED = 0fa0c32c3ae34be51b92f91945405981a8e202488558a8e220c288c7d6a5532d -PUB = d6aee62bd91fc9453635ffcc02b2f38dcab13285140380580ccdff0865df0492 -MESSAGE = 53f44be0e5997ff07264cb64ba1359e2801def8755e64a2362bddaf597e672d021d34fface6d97e0f2b1f6ae625fd33d3c4f6e9ff7d0c73f1da8defb23f324975e921bb2473258177a16612567edf7d5760f3f3e3a6d26aaabc5fde4e2043f73fa70f128020933b1ba3b6bd69498e9503ea670f1ed880d3651f2e4c59e79cabc86e9b703394294112d5d8e213c317423b525a6df70106a9d658a262028b5f45100cb77d1150d8fe461eed434f241015f3276ad7b09a291b4a7f35e3c30051cbf13b1d4a7fa0c81a50f939e7c49673afdc87883c9e3e61f5a1df03755470fda74bf23ea88676b258a97a280d5f90b52b714b596035bae08c8d0fe6d94f8949559b1f27d7116cf59dd3cfbf18202a09c13f5c4fbc8d97225492887d32870c2297e34debd9876d6d01ac27a16b088b079079f2b20feb02537cda314c43cb2dca371b9df37ed11ec97e1a7a6993a -SIG = 7e9ab85ee94fe4b35dcb545329a0ef25923de5c9dc23e7df1a7e77ab0dcfb89e03f4e785ca6429cb2b0df50da6230f733f00f33a45c4e576cd40bdb84f1ae001 - -SEED = 7b06f88026fa86f39fce2426f67cc5996bedd0cfc4b5ebb1b5e3edbb47e080aa -PUB = 3f1469ee6a2e7867e2e9012d402cf5a4861497c01df879a1deb1c539830b58de -MESSAGE = 71175d4e21721297d9176d817f4e785d9600d923f987fe0b26fd79d33a5ea5d1e818b71f0f92b8c73afddabdcc27f6d16e26aafa874cfd77a00e06c36b041487582bb933760f88b419127345776ea418f83522254fed33819bc5c95f8f8404cc144ebf1486c88515409d3433aaf519d9920f5256e629419e9a95580a35b069b8d25533dfcbc98ad36404a951808e01378c03266326d120046975fde07daef3266caacd821c1403499d7fdf17c033c8d8c3f28f162b5f09dfdaca06285f00c6cb986dfdf5151aa6639608b5b13e78d65a4368585b16138754fbd113835a686cd066c2b89bb0953c24d50e77bf0fc457c1e0fcf5d44da8db9a88f062be3b688d5cdcff1d1c00e81ec9d413882295b341fee8fa427dc109adeb5f284eec202f1bef115bf96b1782d3ccdeb682b69bf92d170c007d5df80e1ed962f677dc24a145a1e4e829e8dec0104e5f78365944 -SIG = 42f133e34e3eb7032a133ed781537ec62e44a5ce8381e5e0bf9e13a914a4b2c757811d6d3b1e86672424ea4230d10f7c610abb7069e61e319b4066a2bd7bc900 - -SEED = c3f5e149968a24f4de9119531975f443015ccca305d7119ed4749e8bf6d94fc7 -PUB = 39aaccdb948a4038538a4588322f806bb129b5876c4bec51271afe4f49690045 -MESSAGE = c46370e37f2e0cadcf93402f1f0cb048f52881ba750b7a43f56ab11ce348732fb57e7f9aaf8dfcbe455e14e983c248d026a27e7f148d5db5a53f94635702b895127771047a876d14107386c5e0ff8933345bbd7a936d990d33efa28c2ec4e4864ffd2ff576f7c88f954cfc1c459e883bb712dae3cdf6632066f1f4d13a509615b3360cadc5a307f23e52a51b40a6feebe0b18d0e9ee4e348f33cd81a8def222f6a59b12861d335bd9af85cc004be46f1d3a424f4870ae9dc587e5a4ade136b9370649348c33ac3bf1febeebffea37085ed59cac9d9e696470b234609e9a10a9d431ff91e69cb5135fd117ff58a36539744ebe70cea6973c00c7a4d57b62f4a7136d731b8e46ff18ec0ed69070031905075d8541d568cfce6eeb76242b7819a7b6a93552111bb88f165527cfa6966d39fcbe0a7dea008e39c7a3e577ab307cd1d0ea326833d52654e172955f3fcd4 -SIG = 5fa2b531677b00b85b0a313cbd479f55f4ab3ec5cfce5e454d2b74176ccc3399c899f9d6b51ed4c1e76185ac9fe730c4b4014044f7041185bc3c85722eb2ea02 - -SEED = 42305c9302f45ea6f87e26e2208fd94b3c4ad037b1b6c83cf6677aa1096a013c -PUB = 3b97b1f11ce45ba46ffbb25b76bfc5ad7b77f90cc69ed76115dea4029469d587 -MESSAGE = d110828d449198d675e74e8e39439fd15e75bf2cc1f430abfb245836885bafc420f754b89d2fbbf6dd3490792e7a4f766073cfe3b302d089831ace869e2730fde45c2121ec3ef217aa9c43fa7cc7e9ed0a01ad9f1d2fc3613638ca9fc193c98b37455bf5dbf8f38b64708dfdca6c21f0975f1017c5da5f6434bda9f033cec2a631ab50318e017b170b240bf01eb8b36c7e1cb59e7736ac34444208132a8f59e4f313d65d849c6a4fdf13e20ecaee3823e589a171b39b2489497b06e6ff58c2c9f1dc5d3aa3bd10e6443e22d42d07b783f79fd43a46e1cde314b663a95f7246dea131fcd46d1dc333c5454f86b2c4e2e424dea405cc2230d4dcd39a2eab2f92845cf6a7994192063f1202749ef52dcb96f2b79ed6a98118ca0b99ba2285490860eb4c61ab78b9ddc6acc7ad883fa5e96f9d029171223abf7573e36230e0a81f6c1311151473ee264f4b842e923dcb3b -SIG = 18d05e5d01668e83f40fa3bbee28b388acf318d1b0b5ad668c672f345c8eda14c2f884cd2a9039459ce0810bc5b580fe70d3964a43edb49e73a6ff914bbf040c - -SEED = c57a43dcd7bab8516009546918d71ad459b7345efdca8d4f19929875c839d722 -PUB = 2083b444236b9ab31d4e00c89d55c6260fee71ac1a47c4b5ba227404d382b82d -MESSAGE = a4f6d9c281cf81a28a0b9e77499aa24bde96cc1264374491c008294ee0af6f6e4bbb686396f59068d358e30fe9992db0c6f16680a1c71e27a4a907ac607d39bdc3258c7956482fb37996f4beb3e5051b8148019a1c256e2ee999ebc8ce64c54e07fedb4fbd8953ebd93b7d69ce5a0082edd6209d12d3619b4fd2eae916461f72a4ce727157251a19209bbff9fbdbd289436f3fcacc6b4e1318521a47839cba4b14f7d7a21e7b5d6b6a753d5804afcd2b1eb7779b92abab8afa8aa4fa51caec0b85dcd0fc2a0676036d3f56630a831ffeb502861dd89161c708a9c006c73c930ce5b94756426ff18aa112fb4eb9a68500b48d4eedbd4167b6ffd0a11d49443a173ce9d949436748fc0634f06bb08b8f3423f4463dba7b4d199b64df578117f0a2645f0b2a1e2ada27d286f76733f25b82ed1d48a5c3898d4ad621e50ed9060daad40a39532e4d1bf162ce36804d5d4e2d -SIG = 1edef9bc036971f1fa88edf45393c802e6c1a1631c8a06871a09a320821dce40beca97e53a0361a955a4c6d60b8ca8e400c81340911ccb4f56284041cdbb1804 - -SEED = 2dddb6b8fd04fa90ece1a709f8418f2e5d0c9c43afe7cfce19e6ad15a73476f7 -PUB = 8059de6a7c4776489ecc2e7d707ffce30285bf30a23f78d72db49cfd6ed0d492 -MESSAGE = 474baa590a4cd72d5424e51d8257b3d44325bc4c5063a0033c86ebbe99ed7212184c19944d082a115379dd4cece973faa0bca6485bd25f3744a719e70aa0291e1b5a96e637c140616a98263357c76b6eb0083fe51414e386870d0fdc7dd9abe4ff6fb5bbf1e7b15dac3e08e2615f655c3104ceb32a4cc2c9e9c43cf282d346ac253ccc46b635ae040973b49735720ffb890469a567c5824e0c00d7ccd5509a718092a906461c4d6163eaf422418f5fc6e009fc3f529ac61a2f89bb8e0ed45d940c4c2331ff8d8e1d6d58d417d8fc2656a02e8701aee75aed918724eebe4a2cf4744c5c401e217023df68a6f6a0228bd05a679a697d8de7036b9ed269090d3c65486afb91e27954eb15b964665ede7ad008f12fb3a9d0e69c13b4254f43819e0818a4195f68b8a38ae81f3fcb1879c95ab4cd0ffc38e381089260cca967ace5a085b457ab5eb363852101377570f9ac9e38 -SIG = c634ea7bf72e895a2e796e2834201415b8b45e05e045559284eb9052c0e84f62a5a9f0c9764f7576788c7228b19ef517c195497325a48a9344b147c12fd75509 - -SEED = 5547f1004baedfce5cfc0850b05302374aad24f6163994ecd751df3af3c10620 -PUB = 7ce620787385ee1951ac49a77352ee0d6f8c5cd47df74e9e3216a6324fc7cf7f -MESSAGE = a6c17eeb5b8066c2cd9a89667317a945a0c7c96996e77ae854c509c6cd0631e922ad04503af87a3c4628adafed7600d071c078a22e7f64bda08a362b38b26ca15006d38acf532d0dedea4177a2d33f06956d80e963848ec791b2762fa99449b4f1a1ed9b3f2580be3ac7d7f52fb14421d6222ba76f807750c6cbb0b16f0895fc73d9dfc587e1a9e5d1e58375fbab705b8f0c1fd7df8b3ad446f2f08459e7ed1af59556fbc966dc249c1cf604f3e677c8a09d4363608774bf3811bef0642748c55c516c7a580fa3499050acb30eed870d0d91174cb623e98c3ad121cf81f04e57d49b008424a98a31eeaaf5f38e000f903d48d215ed52f862d636a5a73607de85760167267efe30f8a26ebc5aa0c09f5b258d3361ca69d1d7ee07b59648179ab2170ec50c07f6616f216872529421a6334a4a1ed3d2671ef47bc9a92afb58314e832db8a9003408a0487503fe4f67770dd4b6 -SIG = 29df3ad589009c667baa5e72dabb4e53cb7876de4e7efe5cc21ead7fa878db57f97c1103ddb39a861eb88653c1d4ec3b4306e4584b47b8bc90423119e7e4af00 - -SEED = 3dd7203c237aefe9e38a201ff341490179905f9f100828da18fcbe58768b5760 -PUB = f067d7b2ff3a957e8373a7d42ef0832bcda84ebf287249a184a212a94c99ea5b -MESSAGE = db28ed31ac04b0c2decee7a6b24fc9a082cc262ca7ccf2a247d6372ec3e9120ecedb4542ea593fea30335c5ab9dd318a3b4fd5834299cf3f53d9ef46137b273c390ec3c26a0b4470d0d94b77d82cae4b24587837b167bb7f8166710baeb3ee70af797316cb7d05fa57e468ae3f0bd449404d8528808b41fcca62f5e0a2aa5d8f3acab008cc5f6e5ab02777bdcde87f0a10ef06a4bb37fe02c94815cf76bfb8f5cdd865cc26dcb5cf492edfd547b535e2e6a6d8540956dcba62cfea19a9474406e934337e454270e01036ac45793b6b8aceda187a08d56a2ce4e98f42ea375b101a6b9fcb4231d171aa463eeb43586a4b82a387bcddaf71a80fd5c1f7292efc2bd8e70c11eaa817106061b6c461c4883d613cc06c7e2a03f73d90fc55cdc07265eefd36be72270383d6c676cae37c93691f1ae3d927b3a1cd963e4229757ae5231eea73a9f71515628305410ac2593b325cc631 -SIG = 4c036935a96abc0d050d907bedbe9946fb97439f039c742e051ccf09add7df44d17da98c2ca01bdc2424da1e4debf347f8fff48ac8030d2cc07f9575c044be04 - -SEED = 282775df9ebbd7c5a65f3a2b096e36ee64a8f8ea719da77758739e4e7476111d -PUB = a2b49646033a13937cad6b0e914e3cec54989c252ca5643d076555d8c55e56e0 -MESSAGE = 14cc50c2973ea9d0187a73f71cb9f1ce07e739e049ec2b27e6613c10c26b73a2a966e01ac3be8b505aeaad1485c1c2a3c6c2b00f81b9e5f927b73bfd498601a7622e8544837aad02e72bf72196dc246902e58af253ad7e025e3666d3bfc46b5b02f0eb4a37c9554992abc8651de12fd813177379bb0ce172cd8aaf937f979642bc2ed7c7a430cb14c3cd3101b9f6b91ee3f542acdf017f8c2116297f4564768f4db95dad8a9bcdc8da4d8fb13ef6e2da0b1316d3c8c2f3ed836b35fe2fd33effb409e3bc1b0f85225d2a1de3bfc2d20563946475c4d7ca9fddbaf59ad8f8961d287ae7dd803e7af1fa612329b1bdc04e225600ae731bc01ae0925aed62ac50d46086f3646cf47b072f0d3b044b36f85cec729a8bb2b92883ca4dfb34a8ee8a0273b31af50982bb6131bfa11d55504b1f6f1a0a00438ca26d8ab4f48bcddc9d5a38851abede4151d5b70d720732a00abea2c8b979 -SIG = 15763973859402907d8dcb86adc24a2a168ba3abf2246173d6348afed51ef60b0c0edeff4e10bcef4c6e5778c8bc1f5e9ee0237373445b455155d23de127a202 - -SEED = 4730a5cf9772d7d6665ba787bea4c95252e6ecd63ec62390547bf100c0a46375 -PUB = f9f094f7cc1d40f1926b5b22dce465784468b20ab349bc6d4fdf78d0042bbc5b -MESSAGE = e7476d2e668420e1b0fadfbaa54286fa7fa890a87b8280e26078152295e1e6e55d1241435cc430a8693bb10cde4643f59cbfcc256f45f5090c909a14c7fc49d37bfc25af11e8f4c83f4c32d4aabf43b20fa382bb6622a1848f8ffc4dff3408bb4ec7c67a35b4cdaee5e279c0fc0a66093a9f36a60fdd65e6334a804e845c8530b6fda363b5640337d027243ccfb3c177f43e717896e46ead7f72ca06aa0ff1e77247121baf48be9a445f729ca1390fc46151cbd33fcbd7373f27a6ba55c92cbf6945b09b44b9a4e5800d403070ae66048997b2197f02181a097e563f9b9acc841139258a258bc610d3bd891637356b2edc8c184c35c65af91aaf7b1c16d74a5f5f862548139254ecf550631d5f8849afdb5b64cf366ff2633a93f3a18c39b5150245fb5f33c9e4e2d94af6963a70b88f9e7e519f8fa2a0f2e3749de883d0e6f052a949d0fc7153a8693f6d801d7352eb2f7a465c0e -SIG = 552c7347bdfe131646ce0932d82a36d2c1b76d7c30ee890e0592e19f9d18b9a56f48d7a9b68c017da6b550c943af4a907baf317e419fbbc96f6cf4bfad42de00 - -SEED = 2770aadd1d123e9547832dfb2a837eba089179ef4f23abc4a53f2a714e423ee2 -PUB = 3c5fbb07530dd3a20ff35a500e3708926310fed8a899690232b42c15bd86e5dc -MESSAGE = a5cc2055eba3cf6f0c6332c1f2ab5854870913b03ff7093bc94f335add44332231d9869f027d82efd5f1227144ab56e3222dc3ddccf062d9c1b0c1024d9b416dfa3ee8a7027923003465e0ffaefb75b9f29dc6bcf213adc5e318fd8ba93a7aa5bfb495de9d7c5e1a196cd3a2d7721f8ba785aa9052a1811c7fcc8f93932765059cab9c9b718945895ef26f3ac048d4cabf91a9e6aa83ac14d43156827837914eb763a23cba53f60f150f4b70203ec1833ff105849457a8da7327661fb23a554164e05fcf0146b10674964be6f6aa0acc94c41ad57180e5180d199bd9102f55d740e81789b15671bbd0670e6de5d97e1ae626d8a0ebc32c8fd9d24737274e47d2dd5941a272e72a598928ad109cde937bf248d57f5d2942983c51e2a89f8f054d5c48dfad8fcf1ffa97f7de6a3a43ca15fc6720efaec69f0836d84223f9776d111ec2bbc69b2dfd58be8ca12c072164b718cd7c246d64 -SIG = f267715e9a84c7314f2d5869ef4ab8d2149a13f7e8e1c728c423906293b49ce6283454dd1c7b04741df2eabedc4d6ab1397dc95a679df04d2c17d66c79bb7601 - -SEED = 4fdab7c1600e70114b11f533242376af7614b4d5da046ac4bedea21d8a361598 -PUB = a25c9a94d6e4ecd95a4bd6805f762eb1c457a8d45d243238b1839cbba8f441cc -MESSAGE = da405890d11a872c119dab5efcbff61e931f38eccca457edc626d3ea29ed4fe3154fafec1444da74343c06ad90ac9d17b511bcb73bb49d90bafb7c7ea800bd58411df1275c3cae71b700a5dab491a4261678587956aa4a219e1ac6dd3fb2cb8c46197218e726dc7ed234526a6b01c0d72cb93ab3f4f38a08e5940b3f61a72ad2789a0532000fac1d2d2e3ad632ac8b62bb3ff5b99d53597bf4d44b19674924df9b3db3d0253f74627ccab30031c85e291c58b5fa9167522a46746fc307036745d4f9817786e5d300e6c5d503125fea01dec3e3fedbf3861ca2627a0518fb2b24e5a7a014178719e9b345f7b249ce3a413280c8deb674f59a25be92a8ab6400c7c52b0728ae34e22b2ec200c1cbaba2ccd8af29249d17af60c36007a722fc80258a7bebab1cdaad7462a8b7588c2f7e27c6d07afcf60117fed11bd6859e75e3b4fcee3981881e95dd116827dd4b369af069d3c8f2676f8a -SIG = 5075c090cfbeb6b01802af7f4da5aa4f434d5ee2f3530eebb75c85e08621f83edc08aa96693894a4277633ba81e19e9e55af5c495daa5e1a6f8cbb79c01c7207 - -SEED = 264504604e70d72dc4474dbb34913e9c0f806dfe18c7879a41762a9e4390ec61 -PUB = eb2b518ce7dc71c91f3665581651fd03af84c46bf1fed2433222353bc7ec511d -MESSAGE = 901d70e67ed242f2ec1dda813d4c052cfb31fd00cfe5446bf3b93fdb950f952d94ef9c99d1c264a6b13c3554a264beb97ed20e6b5d66ad84db5d8f1de35c496f947a23270954051f8e4dbe0d3ef9ab3003dd47b859356cecb81c50affa68c15dadb5f864d5e1bb4d3bada6f3aba1c83c438d79a94bfb50b43879e9cef08a2bfb22fad943dbf7683779746e31c486f01fd644905048b112ee258042153f46d1c7772a0624bcd6941e9062cfda75dc8712533f4057335c298038cbca29ebdb560a295a88339692808eb3481fd9735ea414f620c143b2133f57bb64e44778a8ca70918202d157426102e1dfc0a8f7b1ae487b74f02792633154dfe74caa1b7088fda22fa8b9bc354c585f1567706e2955493870f54169e0d7691159df43897961d24a852ea970c514948f3b48f71ee586e72ec78db820f253e08db84f6f312c4333bd0b732fe75883507783e9a1fd4fbab8e5870f9bf7ad58aa -SIG = eea439a00f7e459b402b835150a779eed171ab971bd1b58dcc7f9386dadd583de8dc69e267121dde41f0f9493d450b16219cdf3c22f09482ce402fe17ca49e08 - -SEED = 2ca7447a3668b748b1fd3d52d2080d30e34d397bb2846caf8f659ac168788ca5 -PUB = ab331cd40a31d0173c0c8c1c17002532807bf89e3edb6d34c2dd8294632b9fbc -MESSAGE = a82bcd9424bffda0f2f5e9eae17835dbe468f61b785aab82934737a91c5f602cb7c617cdffe87cad726a4972e15a7b8ee147f062d2a5a4d89706b571fa8aa2b95981c78abeaaae86203fa2c0e07297406ea8c27111a86dbe1d5a7c3b7ae930904d9890f6d4abebd1412a73ad5feea64acf065d3e63b5cbe20cf20bbd2d8b94f9053ed5f66633482530124446605918de66455e8cf4b101a127233c4e27d5d55bf95bd3195d0340d43531fc75faf8dded5275bf89750de838fd10c31745be4ca41fa871cb0f9b016706a1a7e3c44bb90ac7a8ad51e272389292fd6c98ad7a069e76e3f5f3e0cc770b9e9b35a765d0d93712d7cdabd17e5d01dd8183af4ad9365db0a0fa41381fce60a081df1c5ab0f8c18f95a7a8b582dfff7f149ea579df0623b33b7508f0c663f01e3a2dcd9dfbee51cc615220fdaffdab51bdae42cb9f7fa9e3b7c69cc8ada5ccd642529ba514fdc54fcf2720b8f5d08b95 -SIG = f93ada15ae9cd2b54f26f86f0c28392aed5eb6b6b44d01a4e33a54e7da37c38e8d53366f73fd85be642e4ec81236d163f0d025e76c8bbdd65d43df49f09c1f01 - -SEED = 494ea9bcce26885b7d17d1fc114448f239f0ce46e5f247b4c999fa8629692472 -PUB = 6901e5efae57536ba5fdd96b59657359065f25d391a1aa8cdc0d38bb5d53c139 -MESSAGE = 3badbfa5f5a8aa2cce0a60e686cdce654d24452f98fd54872e7395b39464380a0e185557ea134d095730864f4254d3dd946970c10c804fcc0899dfa024205be0f80b1c75449523324fe6a0751e47b4ff4822b8c33e9eaf1d1d96e0de3d4acd89696b7fcc03d49f92f82b9725700b350db1a87615369545561b8599f5ea920a310a8bafc0e8d7468cbf6f3820e943594afdd5166e4e3309dddd7694ef67e694f34fc62724ff96ac3364176f34e8a02b4cf569db5b8f77d58512aedabf0bcd1c2df12db3a9473f948c5c3243309aae46c49efd088b60f31a8a72ad7e5a35acc5d89fa66807eb5d3ba9cdf08d4753cb85089ee36f5c96b432b6928352afad58012225d6157f9e3611426df921b6d1d8374628a63031e9ffb90e42ffbba021f174f68503155430152c9155dc98ffa26c4fab065e1f8e4622c2f28a8cb043110b617441140f8e20adc16f799d1d5096b1f50532be5042d21b81ea46c7 -SIG = 548a093a680361b7dc56f14503b55eeec3b3f4fd4ca99d6aedce0830f7f4ae2f7328539b34c48fc9760922333dae9c7c017e7db73b8faa6c06be05e347992b06 - -SEED = 00d735ebaee75dd579a40dfd82508274d01a1572df99b811d5b01190d82192e4 -PUB = ba02517c0fdd3e2614b3f7bf99ed9b492b80edf0495d230f881730ea45bc17c4 -MESSAGE = 59c0b69af95d074c88fdc8f063bfdc31b5f4a9bc9cecdffa8128e01e7c1937dde5eb0570b51b7b5d0a67a3555b4cdce2bca7a31a4fe8e1d03ab32b4035e6dadbf1532059ee01d3d9a7633a0e706a1154cab22a07cd74c06a3cb601244cf3cf35a35c3100ba47f31372a2da65dcff0d7a80a1055d8aa99212e899aad7f02e949e6fee4d3c9cefa85069eaff1f6ad06fc300c871ab82b2bedb934d20875c2a263242cdb7f9be192a8710b24c7ea98d43daec8baa5553c678a38f0e0adf7d3ff2dcc799a1dbad6eab1c3d9458a9db922f02e75cfab9d65c7336dae71895d5bb15cac203f2b38b9996c410f8655ad22d3c091c20b7f926d45e780128f19747462abc5c58932fbb9e0bc62d53868802f1b083f183b8a1f9434986d5cf97c04e2f3e145730cba98779c7fed0cab1c05d5e4653c6c3f6736260bc78ee4372862ffe9e90371d762c7432781f35ced884a4baca05653ef25f25a6f3d5628308 -SIG = dcdc54611937d2bd06cacd9818b3be15ce7425427a75f50d197a337a3b8ba6714ef48866f243bd5ac7415e914517a2c1c5a953f432b99db0e620d64f74eb8505 - -SEED = 8c34b905440b61911d1d8137c53d46a1a76d4609af973e18eb4c5709295627bb -PUB = b69a8b2fdf5c20e734c2ffb294bc8ae1011d664f11afe7fbc471925cf72fa99d -MESSAGE = 30b57a389b48a0beb1a48432bff6b314bded79c4a1763a5acb57cea1bfb4c6d016cf090f5bd05bbd114e33ae7c17782dfa264f46c45f8c599c603016fe9ff05b6b5a99e92fe713a4cd5c41b292ed2bb2e9cf33a440542e821ec82cbf665c3f02e3dc337d7fdb58e31b27cb2954541468814698510df18c85c81fad12db11ec6b966f4930da5646b991db97445097da30dab61cda53a41083cb96add19de6c5eec323bca9d3530e38c00b35af7360077601be6ac97f3030f930a27b90fe8b6911bae389065adc15e1882300e2a003274d23182d5efd5ba4b9130c07bd5c65fecb8b5cb7eb38836b318befdfd77de4d6ca0181f77ae5740891683225f549dd8426145c97c5818c319f7ab2d868e1a41ceab64c085116069897bf2ca3667652406155ed0646431b6de1ccc03b4279ae4d326679265dce82048e7298e1f87fcec0768ac0f5d8ff84f7210be54d411af8edea7217f4e59413121e148c60da -SIG = 3e0b72073dc9375eedcca6c4fc1cd315938a050c92716bd2284f4629a962beec0b7d7cf16ab923d58f5b90d3901a8e5c75c8f17dab9998e007d8c49511973d0e - -SEED = 77a83e18c9f000eeff7deeac959ecba2206c0aa39d2f0e2aed5729482a7a0229 -PUB = 62b1b316135596bfbca6037ed847c61fb7f09fa36ce90abb7789b86f768b59dd -MESSAGE = f3d5fa2acaefd858f1df26e03059cdcbc2468ad74afc993d0db9c4cde4113f8d55c7da71d38ba06520531c61fddb5f33d5f0353be2376e580711be45c0a30b1fa01b55e228c6fa35e3f95b67909fc7df3fd464d93d661a926f9d11f7550c17fbcc3496526e8f10e0c8916677b2be5b319b688f21e81aaa9482e5c93e64ce8c437b9c1e14fefed70a3fee568811dc31cadab3d5b220254465336dc4d97a3bd096b5e065e0cfbe82849e2c1905aca486533f0da7a61f1e9a55b8e2a83262deeb59f2b13d3a8aef5700845b83b25ae2183c0ddac0ce42f8d25674cb0d0d220a6de7c1858bb07d59a3372344d944602aa451d2b937db0fe6feca0beba81721fc361ea7509e2b6d397e1c191b56f54ab436d0d27ab4c061bd661ad1a4452387e8735754d07fa7ef4d4548b172582425b299046e6301b5ba6b914418f149cf722e10bde2e0d41700f12c8429fc897b7819da92292240cd45565458c9a7b29c12 -SIG = 1eaad8420ac12c99ac1ff4476678e3cbbe94da6a797f174664d5ee0f641433fb1e7cb2f5613e10805df8654cd8e0d45d96230932bc7f20b04eae836435134309 - -SEED = 73b03373ef1fd849005ecd6270dd9906f19f4439e40376cdbc520902bc976812 -PUB = 663719e08ba3ba1666f6069a3f54991866b18cc6be41991b02eb3026ff9e155f -MESSAGE = d5c2deaba795c30aba321bc7de6996f0d90e4d05c747fb4dae8f3451895def6e16e72f38eace756f36635f8fb0b72a3a0c1f54663817a94d4fd346f835ab0e657f001a6f2cecb86d0825bd02639254f7f7f38ca99dbb86c64a633f73baf933aae3563281f4005e2d0e7cec9fbde8e588a957e211068be65b3d3d35bf4e8d5bb3478333df9ced9b2abaf48697994a145e9321499fc5ee560f4fbb6849e1ae8eb3d1de0083a21a03f6a6b28176f0130d3895e50e75e3d7d0947a7bc2c5b9ff69895d27791442ba8d0f2180712b567f712ea912f3b0d92c19342e0106ff1d87b46ad33af300b90855ba9769d366e79425d98e4de19905a04577707cbe625b84691781cd26bf62260b4a8bd605f77af6f970e1b3a112e8918344bd0d8d2e41dfd2ce9895b0246e50887aa3a577ff73be4b6ae60feb0ca36f6a5f8171ed209e5c566529c0940d9b4bd744ccee56e54a9a0c6e4da520dd315c2872b02db563703e -SIG = a40abe98fc69da8a1ff9ff5c2cca93632e975980ee8b82c3c376022d6524ab736d01b072f2b681b5f1cd3ea067012ed6d074e949c42327a366caa9e4750a3c08 - -SEED = eab179e41ed5c889ffe6aabdc054faf1307c395e46e313e17a14fe01023ffa30 -PUB = 86f34746d3f7a01ddbe322f1aca56d22856d38733a3a6900bb08e776450ec803 -MESSAGE = 971095cebe5031530224387c5c31966e389b8566390054cf45264b44e18964b7be52c33c4ffb259af16283438fa15dd66bc7791b7533ef10cb0beab524a6437626f4cc74512851adcc2fb129055a482c61107383fb7c5241831d5551634eef0dc0b8f9053a00971aa8fa1ae0898e4b481b6707e97c0f942040b339d92fc17bbade74675af243d8b2dafb15b1db55d12415b85f3037291930ab61600ba3431f8eb425be4491614728af101e81c091f348bc5ffd1bde6ae6cad5c15b3aa7358078cc4effb54a86e7f0e0c55e4cfe0a54605ed443fdf2aaba016585da617e77341d52889d75dd540d39fe8b7993ed705cfddea0cb0d5a731d6bfcdb816afaff47e963eedebdf241af5593353d6d401a34f029a8cdeb1904cc2caa4f9635cc2ba6b7b1a29da625ffc383be2f5a8f1fa4f39b2d4b4f4c2d8838ce258a04d4a120493fdf07f68c0ffd1c16b768a35c55fea2cac696b5c20efc10865cde8a64627dcd -SIG = 143cb28027c2f82e375e5f340e7fe6e60ce7bd51000b49c74168af85e26ed2ed630ed2672090164cc54b052da694ebdd21a21b3053f4dcfd7895ea5f6c8aa80d - -SEED = fbf146ebd51075570ec51ac410ae9f391db75b610ada6362b4dbd949656cfb66 -PUB = be7c2f5b21d746c8ea3245ce6f268e9da74e00fa85c9c475260c68fa1af6361f -MESSAGE = cd7ad4f17fcff73acc402dc102d09079b29aaf2a0f4b27cf6beeb1e2b23d19ab47deb3ae1becd68861ea279c46691738f4fff47c43047c4f8b56b6bbcc3fde0723d44120dcd307a6310dc4f366b8f3cd52db19b8266a487f7872391c45fe0d3248a7abf2c20022d3769547f683067dcc363cd22fd7cda3cadc15804056f0e2aa2b795008c598be7a961805e6df291ba3041c47ff5640275f46e6ae82092d21abcbcfba11e730216008822de3ce462400596da79f7ae5d1df8389112ad98868fa94fb0546bfe6a67aa8d28c4d32072d2eadd6256255f18c2382e662dfa922a680e06a43622c4871d27d1807f7b2703070c83db8dd929c06038b2183cb8e2b9ec4c778d7ecf9e9ffac77fa7737b055feac2e7982aeeec0b72f1bbca2424e1a844bbac79cb2e7400f81dc449d0560b521a7c16bb4167e6696586058a9b8ed2e5116690b77f2a17e5c0b16a83dcbd2e24552293e258b32ba7f844944379342698627 -SIG = 6768006fe0f201b217dd10eb05d4b82adcfeb2ecfc8373c3308f4150394811eb60491881a2e53d1289d96478e18a64c34b2a19832cdccfd96a2e4a0c469fdc0b - -SEED = dff0eb6b426dea2fd33c1d3fc24df9b31b486facb7edb8502954a3e8da99d9fd -PUB = c245085ece69fb9aa560d0c27fdb634f7a840d41d8463660fbe82483b0f3cc3a -MESSAGE = e7c9e313d86160f4c74aa0ae07369ee22b27f81b3f69097affae28dae48483fb52a5c062306b59610f5cdbff6332b1960cd6f2b8f7b41578c20f0bc9637a0fdfc739d61f699a573f1c1a0b49294506cf4487965e5bb07bbf81803cb3d5cb3829c66c4bee7fc800ede216150934d277dea50edb097b992f11bb669fdf140bf6ae9fec46c3ea32f888fde9d154ea84f01c51265a7d3fef6eefc1ccdbffd1e2c897f05546a3b1ca11d9517cd667c660ec3960f7a8e5e80202a78d3a388b92f5c1dee14ae6acf8e17c841c9557c35a2eeced6e6af6372148e483ccd06c8fe344924e1019fb91cbf7941b9a176a073415867210670410c5dbd0ac4a50e6c0a509ddfdc555f60d696d41c77db8e6c84d5181f872755e64a721b061fcd68c463db4d32c9e01ea501267de22879d7fc12c8ca0379edb45abaa6e64dda2af6d40ccf24fbebad7b5a8d3e52007945ecd3ddc1e3efeb522581ac80e98c863ba0c590a3ed95cd1 -SIG = 6b48b10f545ddb7a89cd5829f4e5b20146cf6bc96e550d06f65de8bdae7ccdded26cd630f86c9266bccf88e924033e04f83a54f8290d7f734cf8673cca8f9703 - -SEED = 9f32958c7679b90fd5036056a75ec2eb2f56ec1effc7c012461dc89a3a167420 -PUB = 1d7269dcb6d1f584e662d4ce251de0aba290ef78b97d448afb1e5333f1976d26 -MESSAGE = a56ba86c71360504087e745c41627092ad6b49a71e9daa5640e1044bf04d4f071ad728779e95d1e2460584e6f0773545da82d4814c9189a120f12f3e3819813e5b240d0f26436f70ee353b4d20cea54a1460b5b8f1008d6f95f3aa2d8f1e908fced50d624e3a096938b9353854b96da463a2798a5a312ec790842c10c446e3350c764bf5c972593b9987bf23256daa8894d47f22e85b97607e66fc08a12c789c4746080368d321bb9015a1155b65523ad8e99bb989b44eac756b0734acd7c6357c70b59743246d1652d91b0f9896965141345b9945cf34980452f3502974edb76b9c785fb0f4395266b055f3b5db8aab68e9d7102a1cd9ee3d142504f0e88b282e603a738e051d98de05d1fcc65b5f7e99c4111cc0aec489abd0ecad311bfc13e7d1653b9c31e81c998037f959d5cd980835aa0e0b09bcbed634391151da02bc01a36c9a5800afb984163a7bb815edbc0226eda0595c724ca9b3f8a71178f0d20a5a -SIG = 9881a5763bdb259a3fefbba3d957162d6c70b804fa94ab613406a6ec42505b8789465ca1a9a33e1895988842270c55e5bdd5483f6b17b31781b593507a6c1808 - -SEED = f86d6f766f88b00717b7d6327eb26cf3ceeba5385184426f9cfd8295e2421ff2 -PUB = cb1d250504754183704dbe21c323d66f9f9011758f6d8dab6f597b199662145b -MESSAGE = da8423a6b7a18f20aa1f90ed2331b17b24067c40175bc25d8109e21d87ac00528eb3b2f66a2b52dc7ef2f8cecb75c76099cfa23db8da897043ba1cce31e2dfea46075f5e073203eaeb3d62c84c107b6dab33a14eaf149aa61850c15f5a58d88a15aba9196f9e495e8dbecbcf7e8444f5dd72a08a099d7f6209990b562974ea829ef11d29a920e3a799d0d92cb50d50f817631ab09de97c31e9a05f4d78d649fcd93a83752078ab3bb0e16c564d4fb07ca923c0374ba5bf1eea7e73668e135031feafcbb47cbc2ae30ec16a39b9c337e0a62eecdd80c0b7a04924ac3972da4fa9299c14b5a53d37b08bf02268b3bac9ea9355090eeb04ad87bee0593ba4e4443dda38a97afbf2db9952df63f178f3b4c52bcc132be8d9e26881213abdeb7e1c44c4061548909f0520f0dd7520fc408ea28c2cebc0f53063a2d30570e05350e52b390dd9b67662984847be9ad9b4cd50b069ffd29dd9c62ef14701f8d012a4a70c8431cc -SIG = ec61c0b292203a8f1d87235ede92b74723c8d23408423773ae50b1e9bc4464e03e446da9dce4c39f6dd159bea26c009ed00120bc36d4a247dc0d24bcefcc110c - -SEED = a5b34cefab9479df8389d7e6f6c146aa8affb0bec837f78af64624a145cc344e -PUB = 7b0f4f24d9972bc6fe83826c52716ad1e0d7d19f123858cb3e99fa636ac9631a -MESSAGE = e21e98af6c2bac70557eb0e864da2c2b4d6c0a39a059d3477251f6178a39676f4749e7fbea623f148a43a8b0fe0610506fa658abd2f5fa39198f2636b724db22d1aebc2ab07b2b6dbffdee8cece81e1af1493ec1964e16bf86ab258ca0feb77e3c8717e44038abe152c14be15660bf93b2d48d92c4ed7074d2494210621bcf204fba88c654d5ffe01e1a53d08f70bb237089dc807216ff6a85dbec3102237d42590778acf6c1dc566d5a2bb9a63bc21c329c272e5965baeeb0fe891de3cc8cbfa8e541a8881df68942e7ff8dc656bd08575f6aaf924a176d663b1a1f43574d11768c701b269561e55438dbebfd443d2115cb933d1cde4a915b54c325c27f499ef02bd012ff1f9a36390922887600fe712bcdc23eb5974a305372ad52951f83f0e58cc49e289841621917f1fcb0235147240dae4cf3b99b6ac6d8de94efe7c4436714508bcd0114c56068ff1b7c16d51bd906437874d6549ab5d8087896872ec8a09d7412 -SIG = 2fbd899d72b6d39e4f45b8b62cbbd5f3c0acb1ad8540913fa585877e91ccfef7bee50a4b0f9fedf5cc1e0d1953ad399c8389a93391e1b7c929af6d6f3b796c08 - -SEED = ad75c9ce299c4d59393367d77a4c9f8df8dcec765c6dbd25b527fb7669913604 -PUB = b9910548fe6312a119c9993eebcfb9dc90030ffb0e4de2b7ccd23cbeb4fef71b -MESSAGE = 62fc5ab67deb1fee9ab6cca3b88a1df1e589f0fd4a88f4aa7738948761fe84372c5b18e4655220c1d84d52acad32e229a5c756c20fc62fe4b4b4e5fd7077ae4ed5397aa796f2307ceedb6505b39297856f4aeb5e70938e36ee24a0ac7d9868306f6b53910623b7dc89a6672ad738576ed5d88831dd338321c8902bc2061f65e94d452fdfa0dc665cefb92308e52301bd4627006b363d06b775a395914d8c863e95a00d6893f3376134c429f56478145e4456f7a12d65bb2b8965d728cb2ddbb708f7125c237095a92195d92fa727a372f3545ae701f3808fee802c8967a76e8a940e55fb2d810bfb47ada156f0eda1829b159cf05c7f36cf3847d7b21de84c3dc0fe658347f79396a01139a508b60022db1c0e5aeef47e445e66f783e62c96597bdb16f209c08a9132c7573136170ee3ebf24261265a89fb4f10333375e20b33ab7403464f5249461c6853c5fddb9f58af816892910393a7077b799fdc3489720998feea86 -SIG = 6b7ef27bcfbf2b714985033764fccff555e3f5bc44610d6c8c62117cb3831a07f4a8bddb0eaed1d46b0289b15de1aa4dcc17d71be96a09e66ba4dc4627c78705 - -SEED = 1ced574529b9b416977e92eb39448a8717cac2934a243a5c44fb44b73ccc16da -PUB = 85e167d5f062fee82014f3c8b1beaed8eefb2c22d8649c424b86b21b11eb8bda -MESSAGE = 1b3b953cce6d15303c61ca707609f70e7250f6c0deba56a8ce522b5986689651cdb848b842b2229661b8eeabfb8570749ed6c2b10a8fbf515053b5ea7d7a9228349e4646f9505e198029fec9ce0f38e4e0ca73625842d64caf8ced070a6e29c743586aa3db6d82993ac71fd38b783162d8fe04ffd0fa5cbc381d0e219c91937df6c973912fc02fda5377312468274c4bee6dca7f79c8b544861ed5babcf5c50e1473491be01708ac7c9ff58f1e40f855497ce9d7cc47b9410f2edd00f6496740243b8d03b2f5fa742b9c630867f77ac42f2b62c14e5ebddc7b647a05fff43670745f2851eff4909f5d27d57ae87f61e965ee60fdf97724c59267f2610b7ad5de919856d64d7c212659ce8656149b6a6d29d8f92b312be50b6e2a431d36ae022b00a6fe360e3af65432899c43be0427e36d21cfec81f21aa53b33db5ed2c37da8f96ac3e7dc67a1de37546cf7de1008c7e1adbe0f34fa7eb2434d94e6a13f4cf86a98d497622f -SIG = e0303aefe08a77738dcc657afbb9b835ed279613a53c73fdc5ddbfb350e5cff4d6c9bb43dc07c95bf4e23b64c40f8804c7169952e3c8d59a7197241bfed0740f - -SEED = f0790d93e2d3b84f61ef4c807147aba410e415e72b71b0d61d01026fed99da3d -PUB = efdf649fb033cf328e0b287796f8a25e9c6e2e871b33c2c21a4028a8a25a4b28 -MESSAGE = 7973e9f32d74805992eb65da0d637335e50eff0ce68ea2d1f3a02de704492b9cfbe7e7ba96fdb42bb821a513d73fc60402e92c855deaed73ffeaf70952029062c833e14ec1b14f144e2207f6a0e727e5a7e3cbab27d5972970f69518a15b093e740cc0ce11bf5248f0826b8a98bde8bf2c7082c97aff158d08371118c89021cc3974ae8f76d86673c3f824b62c79c4b41f40eaa8943738f03300f68cbe175468eb235a9ff0e6537f8714e97e8f08ca444e41191063b5fabd156e85dcf66606b81dad4a95065584b3e0658c20a706eaf4a0777da4d2e0cd2a0fca60109c2b4403db3f03cd4781c1fbb0272202bcb11687808c50cb98f64b7f3fd3d43333bb5a061b9e377090abb1e0a885cb26b73c163e63ff6451ff2f4ec8249c7e152bd03973a1e964e2b5b235281a938399a112a24529e383a560dc50bb1b622ad74ef35658dcb10ffe022568ac3ffae5b465a8ed7643e8561b352ee9944a35d882c712b187788a0abae5a22f -SIG = 08773a6a78762cbb1e25fcbb29139941bdf16f4e09a1fa08fc701f32f933edd74c0ae983c12a0a5b020b6bcf44bb719dde8ed0781a8298265640e1608c98b301 - -SEED = 4cb9df7ce6fae9d62ba09e8eb70e4c969bdeafcb5ec7d7024326e6603b0621bf -PUB = 018069dd0eb44055a35cd8c77c37ca9fb1ad2417271385e134b2f4e81f52033c -MESSAGE = 14627d6ea0e7895460759476dc74c42800ceef994327518151490d9df23067914e44788a12768ccb25471b9c3ba9d14fb436dcba38429b3a0456877763c49175d0e082683e07a9058f3685c6279307b2303d1221b9c29793d8a4877f6df51587384dadf751c5f7bfbd207d519622c37b51ceeee2c20d8269f8cb88d3fe43d6d434d5bbd0e203c1532d97ba552147227496c87f67b50bb76193add0144df1c176657585408362ca2ed04ad62acf1c25e341dfd1498d85b4b1349a8b0b9b02c43523c55853419bfed37d5a2cdf17dfbf1a3bd7759d6ae180f9d27dcd9a8933e29a7c0a30771eea7c2e0fa242925d2336dce585629057d844323964f6d3d11ff0b3f829a3be8c9f0468a6823d8e70ab5a2da21e15fa8b041a29812222e9c30b2bd9a12d1fdee6f87876e8ce81009637a8bb2236129a47ca74289ee4aad429ffe29f47430241ca8cc3848b7200fd6e1470651a9a0a6f72c9033e831df051408a6260f65cbaf6e012b18e -SIG = e33c07836c537d6bfbd0f4592d6e35b163499ba78dc7ffcec565d04f9a7db781943e29e6ce76763e9baddf57437fd9c6b03239a6e6850e4502a356c2e12c3705 - -SEED = a136e009d53e5ef59d0946bc175663a86bc0fcd29eadd95cfc9d266037b1e4fb -PUB = 9c1806ec0454f58314eb8397d64287dee386640d8491aba364607688841715a0 -MESSAGE = a49d1c3d49e13c2eda56868a8824aa9f8d2bf72f21955ebafd07b3bdc8e924de20936cee513d8a64a47173a3bd659eff1accff8244b26aae1a0c27fa891bf4d85e8fb1b76a6cab1e7f74c89ee07bb40d714326f09b3fd40632fad208ea816f9072028c14b5b54ecc1c5b7fc809e7e0786e2f11495e76017eb62aa4563f3d00ee84348d9838cd17649f6929a6d206f60e6fc82e0c3464b27e0e6abd22f4469bdfd4cb54f77e329b80f71bf42129ec13c9dfe192adfaa42ee3ddeeda385816fbad5f411938c63b560f4ecd94534be7d98725cd94c99ce492f0f069ba0ec08f877a7812ef27ae19d7a77be63f66bcf8d6cf3a1a61fc9cfef104c7462a21ca7f03afb5bb1ac8c75124b554e8d044b810d95ff8c9dd09a34484d8c4b6c95f95c3c22823f52ce844293724d5259191f1ba0929e2acdbb8b9a7a8adf0c52e78acdfdf057b0985881afbed4dbebdebbdae0a2b63bd4e90f96afdcbbd78f506309f9bdb650013cb73faed73904e -SIG = bc094ba91c115dee15d753361a75f3f03d6af45c92157e95dbe8d32194b6c5ce72b9dc66f73df12dca0b639f3e791d478616a1f8d7359a42c8eae0dda16b1606 - -SEED = ff0f1c57dd884fbeea6e2917282b79ba67f8a6851267b9f4636dafda33bd2b5b -PUB = fef6378ad12a7c252fa6eb742b05064b41530ff019dc680ab544c027ea2836e7 -MESSAGE = 522a5e5eff5b5e98fad6878a9d72df6eb318622610a1e1a48183f5590ecef5a6df671b28be91c88cdf7ae2881147fe6c37c28b43f64cf981c455c59e765ce94e1b6491631deaeef6d1da9ebca88643c77f83eae2cfdd2d97f604fe45081d1be5c4ae2d875996b8b6fecd707d3fa219a93ba0488e55247b405e330cfb97d31a1361c9b2084bdb13fb0c058925db8c3c649c9a3e937b533cc6310fa3b16126fb3cc9bb2b35c5c8300015488a30fadca3c8871fa70dfdc7055bf8e631f20c9b2528311e324a7c4edd5462079f3441c9ecf55fa999e731372344fdc0d413e417aaa001a1b2d3d9bc000fec1b02bd7a88a812d9d8a66f9464764c070c93041eefb17ce74eff6d4aff75f0cbf6a789a9ecde74abe33130fca0da853aa7c3313ada3f0ae2f595c6796a93685e729dd18a669d6381825ab3f36a391e7525b2a807a52fa5ec2a030a8cf3b77337ac41fceb580e845eed655a48b547238c2e8137c92f8c27e585caad3106eee3814a -SIG = d5008486726cce330a29dd7e4d7474d735798201afd1206feb869a112e5b43523c06976761be3cf9b2716378273c94f93572a7d2b8982634e0755c632b449008 - -SEED = 0bc6af64de5709d3dbc28f7ef6d3fe28b6de529f08f5857ccb910695de454f56 -PUB = fb491fc900237bdc7e9a119f27150cd911935cd3628749ff40ef41f3955bc8ac -MESSAGE = ac7886e4f4172a22c95e8eea37437b375d72accedcee6cc6e816763301a2d8ef4d6f31a2c1d635818b7026a395ce0dafd71c5180893af76b7ea056c972d680eca01dcbdbae6b26f1c5f33fc988b824fbbe00cacc316469a3bae07aa7c8885af7f65f42e75cef94dbb9aab4825143c85070e7716b7612f64ef0b0166011d23eb5654aa098b02d8d71e57c8fa17bff2fe97dc8193177eadc09fb192d80aa92afa98720d4614817ff3c39d3acce18906fa3de09618931d0d7a60c4429cbfa20cf165c947929ac293ae6c06e7e8f25f1264291e3e1c98f5d93e6ecc2389bc60dbbf4a621b132c552a99c95d26d8d1af61138b570a0de4b497ebe8051c7273a98e6e7876d0b327503af3cb2cc4091ce1925cb2f2957f4ec56ee90f8a09dd57d6e83067a356a4cfe65b1b7a4465da2ab133b0efb5e7d4dbb811bcbbde712afbf0f7dd3f326222284b8c74eac7ad6257fa8c632b7da2559a6266e91e0ef90dbb0aa968f75376b693fcaa5da342221 -SIG = dbc7134d1cd6b0813b53352714b6df939498e91cf37c324337d9c088a1b998347d26185b430900412929e4f63e910379fc42e355a4e98f6fee27dafad1957206 - -SEED = 2f5e83bd5b412e71ae3e9084cd369efcc79bf6037c4b174dfd6a11fb0f5da218 -PUB = a22a6da29a5ef6240c49d8896e3a0f1a4281a266c77d383ee6f9d25ffacbb872 -MESSAGE = b766273f060ef3b2ae3340454a391b426bc2e97264f8674553eb00dd6ecfdd59b611d8d662929fec710d0e462020e12cdbf9c1ec8858e85671acf8b7b14424ce92079d7d801e2ad9acac036bc8d2dfaa72aa839bff30c0aa7e414a882c00b645ff9d31bcf5a54382def4d0142efa4f06e823257ff132ee968cdc6738c53f53b84c8df76e9f78dd5056cf3d4d5a80a8f84e3edec48520f2cb4583e708539355ef7aa86fb5a0e87a94dcf14f30a2cca568f139d9ce59eaf459a5c5916cc8f20b26aaf6c7c029379aedb05a07fe585ccac60307c1f58ca9f859157d06d06baa394aace79d51b8cb38cfa2598141e245624e5ab9b9d68731173348905315bf1a5ad61d1e8adaeb810e4e8a86d7c13537b0be860ab2ed35b73399b8808aa91d750f77943f8a8b7e89fdb50728aa3dbbd8a41a6e00756f438c9b9e9d55872df5a9068add8a972b7e43edad9ced2237ca1367be4b7cdb66a54ea12eef129471158610eaf28f99f7f686557dcdf644ea -SIG = 9f80922bc8db32d0cc43f9936affebe7b2bc35a5d82277cd187b5d50dc7fc4c4832fffa34e9543806b485c04548e7c75429425e14d55d91fc1052efd8667430b - -SEED = 722a2da50e42c11a61c9afac7be1a2fed2267d650f8f7d8e5bc706b807c1b91d -PUB = fd0b964562f823721e649c3fedb432a76f91e0aead7c61d35f95ed7726d78589 -MESSAGE = 173e8bb885e1f9081404acac999041d2ecfcb73f945e0db36e631d7cd1ab999eb717f34bf07874bf3d34e2530eb6085f4a9f88ae1b0f7d80f221456a8e9a8890b91a50192deaaacc0a1a615a87841e2c5a9e057957af6e48e78cc86198e32e7aa24dcf6cffa329bc72606d65b11682c8ba736cce22a05785df1146331e41609cf9ca711cf464958297138b58a9073f3bbf06ad8a85d135de66652104d88b49d27ad41e59bcc44c7fab68f53f0502e293ffcabaaf755927dfdffbfde3b35c080b5de4c8b785f4da64ef357bc0d1466a6a96560c3c4f3e3c0b563a003f5f95f237171bce1a001771a04ede7cdd9b8ca770fd36ef90e9fe0000a8d7685fd153cc7282de95920a8f8f0898d00bf0c6c933fe5bb9653ff146c4e2acd1a2e0c23c1244844dacf8652716302c2032f9c114679ed26b3ee3ab4a7b18bc4e3071f0977db57cd0ac68c0727a09b4f125fb64af2850b26c8a484263334e2da902d744737044e79ab1cf5b2f93a022b63d40cd -SIG = c2695a57172aaa31bd0890f231ca8eeec0287a87172669a899ad0891cea4c47579b50420e791cdec8c182c8a0e8dde21b2480b0cfd8111e28e5603347a352d04 - -SEED = 5fe9c3960ed5bd374cc94d42357e6a24dc7e3060788f726365defacf13cd12da -PUB = 0ce7b155c8b20ebdaacdc2aa23627e34b1f9ace980650a2530c7607d04814eb4 -MESSAGE = c9490d83d9c3a9370f06c91af001685a02fe49b5ca667733fff189eee853ec1667a6c1b6c787e9244812d2d532866ab74dfc870d6f14033b6bcd39852a3900f8f08cd95a74cb8cbe02b8b8b51e993a06adfebd7fc9854ae5d29f4df9642871d0c5e470d903cfbcbd5adb3275628f28a80bf8c0f0376687dae673bf7a8547e80d4a9855ae2572fc2b205dc8a198016ddc9b50995f5b39f368f540504a551803d6dd5f874828e5541ded052894d9e2dc5e6aa351087e790c0dd5d9c4decb217e4db81c98a184b264e6daeac0f11e074cae2bfc899f54b419c65dcc22664a915fbfffac35cee0f286eb7b144933db933e16c4bcb650d537722489de236373fd8d65fc86118b6def37ca4608bc6ce927b65436ffda7f02bfbf88b045ae7d2c2b45a0b30c8f2a04df953221088c555fe9a5df260982a3d64df194ee952fa9a98c31b96493db6180d13d67c36716f95f8c0bd7a039ad990667ca34a83ac1a18c37dd7c7736aa6b9b6fc2b1ac0ce119ef77 -SIG = 379f9c54c413af0d192e9bc736b29da9d521e7ba7841d309f9bcc1e742ec4308fe9f7ba51e0b22aed487cb4aa3913b9bebfb3aacd38f4039f9bbbebe1ad80002 - -SEED = ec2fa541ac14b414149c3825eaa7001b795aa1957d4040dda92573904afa7ee4 -PUB = 71b363b2408404d7beecdef1e1f511bb6084658b532f7ea63d4e3f5f01c61d31 -MESSAGE = 2749fc7c4a729e0e0ad71b5b74eb9f9c534ebd02ffc9df4374d813bdd1ae4eb87f1350d5fdc563934515771763e6c33b50e64e0cd114573031d2186b6eca4fc802cddc7cc51d92a61345a17f6ac38cc74d84707a5156be9202dee3444652e79bae7f0d31bd17567961f65dd01a8e4bee38331938ce4b2b550691b99a4bc3c072d186df4b3344a5c8fbfbb9fd2f355f6107e410c3d0c798b68d3fb9c6f7ab5fe27e70871e86767698fe35b77ead4e435a9402cc9ed6a2657b059be0a21003c048bbf5e0ebd93cbb2e71e923cf5c728d1758cd817ad74b454a887126d653b95a7f25e5293b768c9fc5a9c35a2372e3741bc90fd66301427b10824bb4b1e9110bfba84c21a40eb8fed4497e91dc3ffd0438c514c0a8cb4cac6ad0256bf11d5aa7a9c7c00b669b015b0bf81425a21413e2ffb6edc0bd78e385c44fd74558e511c2c25fee1fec18d3990b8690300fa711e93d9854668f0187065e76e7113ae763c30ddd86720b5546a6c3c6f1c43bc67b14 -SIG = 84d18d56f964e3776759bba92c510c2b6d574555c3cddade212da90374554991e7d77e278d63e34693e1958078cc3685f8c41c1f5342e351899638ef61211401 - -SEED = 6132692a5ef27bf476b1e991e6c431a8c764f1aebd470282db3321bb7cb09c20 -PUB = 7a2d166184f9e5f73bea454486b041ceb5fc2314a7bd59cb718e79f0ec989d84 -MESSAGE = a9c0861665d8c2de06f9301da70afb27b3024b744c6b38b24259294c97b1d1cb4f0dcf7575a8ed454e2f0980f50313a77363415183fe9677a9eb1e06cb6d34a467cb7b0758d6f55c564b5ba15603e202b18856d89e72a23ab07d8853ff77da7aff1caebd7959f2c710ef31f5078a9f2cdae92641a1cc5f74d0c143ec42afbaa5f378a9e10d5bf74587fa5f49c156233247dafd3929acde888dc684337e40cdc5932e7eb73ffcc90b85c0ad460416691aefbd7efd07b657c350946a0e366b37a6c8089aba5c5fe3bbca064afbe9d47fbc83914af1cb43c2b2efa98e0a43be32ba823202001def36817251b65f9b0506cef6683642a46ed612f8ca81ee97bb04d317b517343ade2b77126d1f02a87b7604c8653b6748cf5488fa6d43df809faa19e69292d38c5d397dd8e20c7af7c5334ec977f5010a0f7cb5b89479ca06db4d12627f067d6c42186a6b1f8742f36ae709ba720e3cd898116666d81b190b9b9d2a72202cb690a03f3310429a71dc048cde -SIG = eb677f3347e1a1ea929efdf62bf9105a6c8f4993033b4f6d03cb0dbf9c742b270704e383ab7c0676bdb1ad0ce9b16673083c9602ec10ae1dd98e8748b336440b - -SEED = f219b2101164aa9723bde3a7346f68a35061c01f9782072580ba32df903ba891 -PUB = f66b920d5aa1a6085495a1480539beba01ffe60e6a6388d1b2e8eda23355810e -MESSAGE = 015577d3e4a0ec1ab25930106343ff35ab4f1e0a8a2d844aadbb70e5fc5348ccb679c2295c51d702aaae7f6273ce70297b26cb7a253a3db94332e86a15b4a64491232791f7a8b082ee2834af30400e804647a532e9c454d2a0a7320130ab6d4d860073a34667ac25b7e5e2747ba9f5c94594fb68377ae260369c40713b4e32f23195bf91d3d7f1a2719bf408aad8d8a347b112e84b118817cb06513344021763035272a7db728a0ccdaa949c61715d0764140b3e8c01d20ff1593c7f2d55c4e82a1c0cb1ea58442bf80a741bca91f58ab0581b498ee9fe3c92ca654148ef75313543d1aff382befe1a93b02190ce0102175158e2071d02bacad8dbe9fb940fcb610c105ad52c80feb1ec4e524f4c0ec7983e9ce696fa4fcf4bf0514b8f0432b17d5448fc426fea2b01ac7b26c2aed769927534da22576fc1bba726e9d65be01b59f60a648ace2fc3e5e275789fa637cbbd84be3d6ac24457a6292cd656c7b569a52ffea7916b8d04b4f4a75be7ac95142f -SIG = 17f0127ca3bafa5f4ee959cd60f772be87a0034961517e39a0a1d0f4b9e26db1336e60c82b352c4cbacdbbd11771c3774f8cc5a1a795d6e4f4ebd51def36770b - -SEED = fc180035aec0f5ede7bda93bf77ade7a81ed06de07ee2e3aa8576be81608610a -PUB = 4f215e948cae243ee3143b80282ad792c780d2a6b75060ca1d290ca1a8e3151f -MESSAGE = b5e8b01625664b222339e0f05f93a990ba48b56ae65439a17520932df011721e284dbe36f98631c066510098a68d7b692a3863e99d58db76ca5667c8043cb10bd7abbaf506529fbb23a5166be038affdb9a234c4f4fcf43bddd6b8d2ce772dd653ed115c095e232b269dd4888d2368cb1c66be29dd383fca67f66765b296564e37555f0c0e484504c591f006ea8533a12583ad2e48318ff6f324ecaf804b1bae04aa896743e67ef61ca383d58e42acfc6410de30776e3ba262373b9e1441943955101a4e768231ad9c6529eff6118dde5df02f94b8d6df2d99f27863b517243a579e7aaff311ea3a0282e47ca876fabc2280fce7adc984dd0b30885b1650f1471dfcb0522d49fec7d042f32a93bc368f076006ea01ec1c7412bf66f62dc88de2c0b74701a5614e855e9fa728fb1f1171385f96afbde70dea02e9aa94dc21848c26302b50ae91f9693a1864e4e095ae03cdc22ad28a0eb7db596779246712fab5f5da327efec3e79612de0a6ccaa536759b8e -SIG = a43a71c3a19c35660dae6f31a254b8c0ea3593fc8fca74d13640012b9e9473d4afe070db01e7fb399bf4ca6070e062180011285a67dd6858b761e46c6bd32004 - -SEED = a2836a65427912122d25dcdfc99d7046fe9b53d5c1bb23617f11890e94ca93ed -PUB = 8c12bda214c8abb2286acffbf8112425040aab9f4d8bb7870b98da0159e882f1 -MESSAGE = 813d6061c56eae0ff53041c0244aa5e29e13ec0f3fb428d4beb8a99e04bca8c41bddb0db945f487efe38f2fc14a628fafa2462f860e4e34250eb4e93f139ab1b74a2614519e41ee2403be427930ab8bc82ec89ceafb60905bd4ddbbd13bdb19654314fc92373140b962e2258e038d71b9ec66b84ef8319e03551cb707e747f6c40ad476fbefdce71f3a7b67a1af1869bc6440686e7e0855e4f369d1d88b8099fba54714678627bba1aff41e7707bc97eddf890b0c08dce3e9800d24c6f61092ce28d481b5dea5c096c55d72f8946009131fb968e2bc8a054d825adab76740dcf0d758c8bf54ff38659e71b32bfe2e615aaabb0f5293085649cf60b9847bc62011ce3878af628984a5840a4ad5dae3702db367da0f8a165fed0517eb5c442b0145330241b97eeca733ba6688b9c129a61cd1236aff0e27bcf98c28b0fbeea55a3d7c7193d644b2749f986bd46af8938e8faaeafbd9cec3612ab005bd7c3eeafe9a31279ca6102560666ba16136ff1452f850adb -SIG = e6a9a6b436559a4320c45c0c2c4a2aedecb90d416d52c82680ac7330d062aebef3e9ac9f2c5ffa455c9be113013a2b282e5600fd306435ada83b1e48ba2a3605 - -SEED = f051af426d0c3282fafc8bf912ade1c24211a95ad200e1eef549320e1cb1a252 -PUB = fa87955e0ea13dde49d83dc22e63a2bdf1076725c2cc7f93c76511f28e7944f2 -MESSAGE = b48d9f84762b3bcc66e96d76a616fa8fe8e01695251f47cfc1b7b17d60dc9f90d576ef64ee7d388504e2c9079638165a889696471c989a876f8f13b63b58d531fea4dd1229fc631668a047bfae2da281feae1b6de3ebe280abe0a82ee00fbfdc22ce2d10e06a0492ff1404dfc094c40b203bf55721dd787ed4e91d5517aaf58d3bdd35d44a65ae6ba75619b339b650518cefcc17493de27a3b5d41788f87edbde72610f181bf06e208e0eb7cdfe881d91a2d6cc77aa19c0fcf330fedb44675d800eb8cff9505d8887544a503cbe373c4847b19e8f3995726efd6649858595c57ccaf0cbc9eb25de83ba046bc9f1838ac7b8953dd81b81ac0f68d0e9338cb55402552afb6bc16949351b926d151a82efc695e8d7da0dd55099366789718ccbf36030bd2c3c109399be26cdb8b9e2a155f3b2cb1bfa71ab69a23625a4ac118fe91cb2c19788cf52a71d730d576b421d96982a51a2991daec440cda7e6cc3282b8312714278b819bfe2387eb96aa91d40173034f428 -SIG = b8f713578a64466719aceb432fce302a87cf066bf3e102a350616921a840964bfc7e685d8fd17455ac3eb4861edcb8979d35e3a4bd82a078cd707721d733400e - -SEED = a103e92672c65f81ea5da1fff1a4038788479e941d503a756f4a755201a57c1d -PUB = ee63a5b69641217acbaf3339da829ec071b9931e5987153514d30140837a7af4 -MESSAGE = b1984e9eec085d524c1eb3b95c89c84ae085be5dc65c326e19025e1210a1d50edbbba5d1370cf15d68d687eb113233e0fba50f9433c7d358773950c67931db8296bbcbecec888e87e71a2f7579fad2fa162b85fb97473c456b9a5ce2956676969c7bf4c45679085b62f2c224fc7f458794273f6d12c5f3e0d06951824d1cca3e2f904559ed28e2868b366d79d94dc98667b9b5924268f3e39b1291e5abe4a758f77019dacbb22bd8196e0a83a5677658836e96ca5635055a1e63d65d036a68d87ac2fd283fdda390319909c5cc7680368848873d597f298e0c6172308030ffd452bb1363617b316ed7cd949a165dc8abb53f991aef3f3e9502c5dfe4756b7c6bfdfe89f5e00febdd6afb0402818f11cf8d1d5864fe9da1b86e39aa935831506cf2400ea7ed75bd9533b23e202fe875d7d9638c89d11cb2d6e6021ae6bd27c7754810d35cd3a61494f27b16fc794e2cd2f0d3453ada933865db78c579571f8fc5c5c6be8eaffce6a852e5b3b1c524c49313d427abcb -SIG = 2aa2035c2ce5b5e6ae161e168f3ad0d6592bcf2c4a049d3ed342fceb56be9c7cb372027573ae0178e8878ebefca7b030327b8aad41857de58cb78e1a00cbac05 - -SEED = d47c1b4b9e50cbb71fd07d096d91d87213d44b024373044761c4822f9d9df880 -PUB = f4e1cb86c8ca2cfee43e58594a8778436d3ea519704e00c1bbe48bbb1c9454f8 -MESSAGE = 88d7009d51de3d337eef0f215ea66ab830ec5a9e6823761c3b92ad93ea341db92ece67f4ef4ceb84194ae6926c3d014b2d59781f02e0b32f9a611222cb9a5850c6957cb8079ae64e0832a1f05e5d1a3c572f9d08f1437f76bb3b83b52967c3d48c3576848891c9658d4959eb80656d26cdba0810037c8a18318ff122f8aa8985c773cb317efa2f557f1c3896bcb162df5d87681bb787e7813aa2dea3b0c564d646a92861f444ca1407efbac3d12432cbb70a1d0eaffb11741d3718fedee2b83036189a6fc45a52f74fa487c18fd264a7945f6c9e44b011f5d86613f1939b19f4f4fdf53234057be3f005ad64eebf3c8ffb58cb40956c4336df01d4424b706a0e561d601708d12485e21bcb6d799d8d1d044b400064ec0944501406e70253947006cabbdb2dd6bd8cee4497653d9113a44d4de9b68d4c526fca0b9b0c18fe50fb917fdd9a914fb816108a73a6b3fff9e654e69c9cfe02b05c6c1b9d15c4e65cf31018b8100d784633ee1888eee3572aafa6f189ea22d0 -SIG = 627e7ca7e34ed6331d62b9541c1ea9a9292be7b0a65d805e266b5122272a82db7d765acc7e2a290d685804922f91ed04a3c382c03ff21a1768f584413c4e5f00 - -SEED = fc0c32c5eb6c71ea08dc2b300cbcef18fdde3ea20f68f21733237b4ddaab900e -PUB = 47c37d8a080857eb8777a6c0a9a5c927303faf5c320953b5de48e462e12d0062 -MESSAGE = a7b1e2db6bdd96b3d51475603537a76b42b04d7ebd24fe515a887658e4a352e22109335639a59e2534811f4753b70209d0e4698e9d926088826c14689681ea00fa3a2fcaa0047ced3ef287e6172502b215e56497614d86b4cb26bcd77a2e172509360ee58893d01c0d0fb4d4abfe4dbd8d2a2f54190fa2f731c1ceac6829c3ddc9bfb2ffd70c57ba0c2b22d2326fbfe7390db8809f73547ff47b86c36f2bf7454e678c4f1c0fa870bd0e30bbf3278ec8d0c5e9b64aff0af64babc19b70f4cf9a41cb8f95d3cde24f456ba3571c8f021d38e591dec05cb5d1ca7b48f9da4bd734b069a9fd106500c1f408ab7fe8e4a6e6f3ed64da0ed24b01e33df8475f95fa9ed71d04dd30b3cd823755a3401bf5afae10ee7e18ec6fe637c3793fd434b48d7145130447e00299101052558b506554ec9c399f62941c3f414cbc352caa345b930adecfaddac91ee53d1451a65e06201026325de07c931f69bba868a7c87ee23c604ec6794332917dfe2c5b69669b659706917f71eddf96 -SIG = 6887c6e2b98a82af5ee3dfa7ca2cb25d9c10745620a82956acba85cb57c8ec24279fa42f092359a1b6bbeafba050f14b6288209e6ef7bc1e0a2b872c1138f305 - -SEED = a8d73d639a23cc6a967ef31bcabb5d063e53e1eab8fcc7cab9bc3a17fde9c2f8 -PUB = 8daa9f4c8b1a44691bf44521f2f7ca45dc7fc61f6a4ce6f98faa41c2a74977d1 -MESSAGE = fd1fac3d53313b11acd29f5a83ac11896dab2530fa47865b2295c0d99dd67c36ed8e5fa549150c794c5549efb5c1d69114d5d607b23285b7212afaab57846a54ae67b9e880e07b6586607cecf6d4eed516a3a75511fe367d88eb871e6d71b7d6aa1367a01421b1088fc2d75e44954b73625c52da8a3a183c60be9da6050f59a453caa53520593671728d431877bfaac913a765fb6a56b75290b2a8aaac34afb9217ba1b0d5850ba0fdabf80969def0feee794ceb60614e3368e63ef20e4c32d341ec9b0328ea9fe139207ed7a626ff08943b415233db7cfcc845c9b63121d4ed52ec3748ab6a1f36b2103c7dc7e9303acea4ba8af7a3e07184fb491e891ede84f0dc41cadc3973028e879acd2031afc29a16092868e2c7f539fc1b792edab195a25ab9830661346b39ef53915de4af52c421eaf172e9da76a08c283a52df907f705d7e8599c5baae0c2af380c1bb46f93484a03f28374324b278992b50b7afa02552cafa503f034f8d866e9b720271dd68ccb685a85fffd1 -SIG = c4dcef1a2453939b364b340250c3129431431d5ba3f47670ab07ce680c69bf28b678627c76a6360fc40dc109aa7dea371b825e46134f624572182acf3957e70f - -SEED = 79c7dcb7d59a8df6b2b2ba0413059d89680995c20e916da01b8f067dc60cdeb4 -PUB = 298743c73918bd556b28f8d4824a09b814752a7aeae7ee04875c53f4d6b108d9 -MESSAGE = 5fe202f5b33b7788810d2508a13b3114d69b8596e6eacda05a04a2eb597fa3279c208b5a5b65daacb699f144e1d660e78e139b578331abec5c3c35334454f03e832c8d6e2984df5d450ecb5d33582a78808a9c78f26ebcd1244ef52e3fa6dca115c1f0cb56e38eae0e5b39f5fd863dffd0b2fb5b958f2d739db312fc667a17b031c4c9f8c5a2ad577984cc4146c437580efd2152173fe0d5782cc2ae9831a8d9a04177256018ff7631e0b0d8a99cb28f008b320421e27a74c31359188663456d85e098c1ebd281701097b6ae5a871e5ccc02058a501416cb91c12cef5be6f1914370e563f1a1b2aa41f4b8ee84cd32a1d509e529787d14a445438d807ecd620e2fa26de0da6426864784d4a28f54103e609283b99ee9b2b699c980bbb7882c3ea68ddc90802ac232f2c8e84291987bf3c5240921b59cfa214969317673d0be7f34b1ca0e15ea73c7175401ce550be106b49e62f8db68695e740e0f3a3556a19f3c8e6b91ac1cc23e863fcd0f0d9eb7047aa631e0d2eb9bcc6b -SIG = 7b7cbe44c771e4371bae13b0722babcc1064155732962f407cba2acd35381d42210bece822f4681121fd4dab745a1f3077922fba1a78045b712902baccac660e - -SEED = b9ced0412593fefed95e94ac965e5b23ff9d4b0e797db02bf497994d3b793e60 -PUB = c1629a723189959337f5535201e5d395ba0a03ea8c17660d0f8b6f6e6404bb12 -MESSAGE = 555bb39c1899d57cabe428064c2d925f5fc4cf7059b95fb89a8e9e3a7e426c6c922d9e4d76984ea2383cabb4f2befd89c1f20eaa8a00dbe787cfa70ae2ae6aa90331cbbe580fa5a02184ed05e6c8e89d576af28aeeaf7c4e2500f358a00971a0a75920e854849bf332142975404f598c32e96982043d992bcd1a4fe819bb5634ad03467afc4ce05073f88ba1ba4ae8653a04665cf3f71690fe13343885bc5ebc0e5e62d882f43b7c68900ac9438bf4a81ce90169ec129ee63e2c675a1a5a67e27cc798c48cc23f51078f463b3b7cc14e3bcfd2e9b82c75240934cbdc50c4308f282f193122995606f40135100a291c55afdf8934eb8b61d81421674124dec3b88f9a73110a9e616f5b826b9d343f3ac0e9d7bdf4fd8b648b40f0098b3897a3a1cd65a64570059b8bc5c6743883074c88623c1f5a88c58969e21c692aca236833d3470b3eb09815e1138e9d0650c390eee977422193b00918be8a97cc6199b451b05b5730d1d13358cf74610678f7ac7f7895cc2efc456e03873b -SIG = f1b797ded8a6942b12626848340fb719fcddafd98f33e2992d357bfdd35933c7ac561e5b2f939464338c5666854ca885c4d046eb2c54e48a1b5ed266ad34de05 - -SEED = 81da168f02d46bb87cda845da43f8a6cba2c016878d6f49c6f061a60f155a04a -PUB = aff86e98093ca4c71b1b804c5fe451cfdf868250dea30345fa4b89bb09b6a53b -MESSAGE = 6bc6726a34a64aae76ab08c92b179e54ff5d2e65eb2c6c659ae8703cc245cbc2cf45a12b22c468ae61fd9a6627ad0626c9b1e5af412cb483eaee1db11b29f0a510c13e38020e09ae0eee762537a3e9d1a0c7b033d097fdc1f4f82629a9de9ef38da1cf96a940357d5f2e0e7e8dbc29db728a1e6aad876e5e053113d06420272b87cf0c40dfe03a544de96c7aea13ba0029b57b48d99dcc6a650492d78c4cdd1b28e1a115a7e3e7a7cb21333d4ff80858dfb67782c16354b8716596560d7d8e389eb15a052a0bf5d16eb54fb3e4973ad4984e72a187f5347d5b262c32b1647e42b6a53837096cc78c2a05ce1c6e12493a03f1a667584cb97f4fcd57ee944c65b7eed25f7ae0f3f6cede173fdfacf5af1db143730d18096664914ba4cfc6966f392022781c66a9417ca2680b51f63e4fba424ecfdbc6a2f01787d0e7484f8a8ab390aeaa6d1f7ed325d82feaa1692a4984fae43da87329b045da8f0a4f56b695aa935de152ce0385153720979a2b7006d405fcb0fba09e23b85fd19b -SIG = 4aaca947e3f22cc8b8588ee030ace8f6b5f5711c2974f20cc18c3b655b07a5bc1366b59a1708032d12cae01ab794f8cbcc1a330874a75035db1d69422d2fc00c - -SEED = af2e60da0f29bb1614fc3f193cc353331986b73f3f9a0aec9421b9473d6a4b6a -PUB = c8bfe2835822199c6127b806fabeef0cb9ff59f3c81ff0cb89c556f55106af6a -MESSAGE = 7dbb77b88bda94f344416a06b096566c6e8b393931a8243a6cab75c361fde7dc536aec40cded83296a89e8c3bef7d787cfc49401a7b9183f138d5000619ff073c05e2f841d6008358f10a2da7dcfac3d4d70c20d2ec34c7b6d5cd1a734d6bbb11c5fd8d2bce32ac810ef82b4188aa8ea3cfc3032233dc0e2600e9db6e18bc22b10044a31c15baceaf5554de89d2a3466807f244414d080ff2963956c6e83c8e144ed0066088b476ddcb564403447d9159f9089aba2b4d5575c4d8ae66fc8690e7349ed40832e6369c024563ec493bfcc0fc9ac787ac841397fe133167283d80c42f006a99d39e82979da3fa9334bd9ede0d14b41b7466bcebbe8171bc804a645d3723274a1b92bf82fd993358744de92441903d436fd47f23d40052a3829367f202f0553b5e49b76c5e03fa6ce7c3cf5eeb21de967bec4dd355925384ebf96697e823762bac4d43a767c241a4cef724a970d00ff3a8ab3b83eed840075c74e90f306e330013260962161e9d0910de183622ce9a6b8d5144280550fc7 -SIG = 50f9f941a8da9f6240f76d2fa3b06dd6b2292ed32d1c05218097d34d8a19dfe553f76ae3c6b4a2ed20852128461540decf418f52d38e64037eec7771bd1afe00 - -SEED = 605f90b53d8e4a3b48b97d745439f2a0807d83b8502e8e2979f03e8d376ac9fe -PUB = aa3fae4cfa6f6bfd14ba0afa36dcb1a2656f36541ad6b3e67f1794b06360a62f -MESSAGE = 3bcdcac292ac9519024aaecee2b3e999ff5d3445e9f1eb60940f06b91275b6c5db2722ed4d82fe89605226530f3e6b0737b308cde8956184944f388a80042f6cba274c0f7d1192a0a96b0da6e2d6a61b76518fbee555773a414590a928b4cd545fccf58172f35857120eb96e75c5c8ac9ae3add367d51d34ac403446360ec10f553ea9f14fb2b8b78cba18c3e506b2f04097063a43b2d36431cce02caf11c5a4db8c821752e52985d5af1bfbf4c61572e3fadae3ad424acd81662ea5837a1143b9669391d7b9cfe230cffb3a7bb03f6591c25a4f01c0d2d4aca3e74db1997d3739c851f0327db919ff6e77f6c8a20fdd3e1594e92d01901ab9aef194fc893e70d78c8ae0f480001a515d4f9923ae6278e8927237d05db23e984c92a683882f57b1f1882a74a193ab6912ff241b9ffa662a0d47f29205f084dbde845baaeb5dd36ae6439a437642fa763b57e8dbe84e55813f0151e97e5b9de768b234b8db15c496d4bfcfa1388788972bb50ce030bc6e0ccf4fa7d00d343782f6ba8de0 -SIG = dd0212e63288cbe14a4569b4d891da3c7f92727c5e7f9a801cf9d6827085e7095b669d7d45f882ca5f0745dccd24d87a57181320191e5b7a47c3f7f2dccbd707 - -SEED = 9e2c3d189838f4dd52ef0832886874c5ca493983ddadc07cbc570af2ee9d6209 -PUB = f68d3b81e73557ee1f08bd2d3f46a4718256a0f3cd8d2e03eb8fe882aab65c69 -MESSAGE = 19485f5238ba82eadf5eff14ca75cd42e5d56fea69d5718cfb5b1d40d760899b450e66884558f3f25b7c3de9afc4738d7ac09da5dd4689bbfac07836f5e0be432b1ddcf1b1a075bc9815d0debc865d90bd5a0c5f5604d9b46ace816c57694ecc3d40d8f84df0ede2bc4d577775a027f725de0816f563fa88f88e077720ebb6ac02574604819824db7474d4d0b22cd1bc05768e0fb867ca1c1a7b90b34ab7a41afc66957266ac0c915934aaf31c0cf6927a4f03f23285e6f24afd5813849bb08c203ac2d0336dcbf80d77f6cf7120edfbcdf181db107ec8e00f32449c1d3f5c049a92694b4ea2c6ebe5e2b0f64b5ae50ad3374d246b3270057e724a27cf263b633ab65ecb7f5c266b8007618b10ac9ac83db0febc04fd863d9661ab6e58494766f71b9a867c5a7a4555f667c1af2e54588f162a41ce756407cc4161d607b6e0682980934caa1bef036f7330d9eef01ecc553583fee5994e533a46ca916f60f8b961ae01d20f7abf0df6141b604de733c636b42018cd5f1d1ef4f84cee40fc -SIG = 38a31b6b465084738262a26c065fe5d9e2886bf9dd35cde05df9bad0cc7db401c750aa19e66090bce25a3c721201e60502c8c10454346648af065eab0ee7d80f - -SEED = 31010d1d67eb616348e84792b92d5dc128553cb52f6368159fe7b816cd0e7c37 -PUB = 266543d96787ca901fcff06e6e434491ae0970880a5a187d535edb19db5cabeb -MESSAGE = 39f89a5e7aa530b5463d498f8035b9909d55da527cdbd4de6d228379f089e608a9207a2c5b9c42051a60c8ca3fb97a1c06cd747d9d0739970ceb88ce526f971140ea2ec21f090ba075bf8975faa508b1cc10efa494dc172e6d3d3f3f75dc8e0e96f05c0cccb2f96e911cfa7a2c82c9845018bb1f9d75f82e3dfe1139347b2ac058b014ac93760c90f5567ab5c4eba04b49fb09ddadd305be511dfe05c96ebc86fd67b5d0ab57d85f4fe5e2f0fa9d88a68f0f6b6bc8bb944eb3c0b17557e55d5ea187d922a42813e69057c9b6a7f75e49921b7079e58f8a63719ee3e1ad10cf0e8a70c4f1540218b70494bd029ee02ff9727a7d85d377919ec4051479b70f7cd6767723fe42c1c7899c2b7c1f702dd6b4d13b672d488f34a0e969db79cc2cb2524a948a8de4c5b623ecd90d6e82d97033c125637d1cd8c84803d8fbc012846ffe484f6c02149258f9462fa1e99c307dd0062fe0b6f11eee40c2629ef7c0f6a5107259ea5b9ffb6f29f12c32f7b5228cabc986ab66450af9dcc3da09d0e0b9a4 -SIG = 7b1eb677c3e5e6a8b4ba69fcb7f6b1870e42a8d58958a35c674e2db82107481c4c7b37f0f689d39d9f51e181b17b1108c15a3e27b29df3a4315dcc4faf122205 - -SEED = 8ff2398cd51f51d4c2c57869a2218b8486822031f400729f4ac4d5909c48bafe -PUB = a5a88704b68677be3d16c3dc0052cfee6e2b30e08609059d4cba52c6d96061fb -MESSAGE = 993953e47a341188bc592942e1557af29546e4e9368e2f1a5ee9806e2baf66b6190191fc5d2b7e47de37ff054fb2bbb1f031684ada5d607adda3d65433122fa904e0456faa84109bbc517f8ad39660876382adcfed0f7620cf1164622eacd91eb37a8596462ebe9ebe26bdc1e32cc34ad46fb1cea420e73c31215408e6d35425f44a829b132f631a3f6dd4b873a000667e19eb22fffd5903aaa7d4c8fdf21953c3c6178f5f8cb2aa6bff92894ead835888df060a3c9043026e0e2cef275497e7d105df3b644a98f26bf00105c99413ee0af8851954d65ceb8d79ad3071b8bb87f0b19743d2556ffd9819830b6eebf7ecc7e045661f43570ce9fdbbe2d252406fa90d04236f222c429ec16b1287224ada1a532161ae8b481bcab8d47afb3ed0445b3060fd6759179856f4085c1e585fd7c1409799af693cf427bd1d3dc10b5ae3447a8d2a18dc3a12a6860b22175dd5eb53a0950432e2d7aefece8af0ade3d8567743de43690f2d253723c5d7e48bd30d2937593701cecde9154b7665cb611d7d -SIG = 417a647829c92898e520ff5311daa0a139cd8fffcb25a18e6d9b50cb52cbc35424c39ebbb5d5ac6a6d63f1f53c4df212f7025a8aaef8e36493c874c3ce341a0e - -SEED = ef816c8f5ec34ef41f68831d90cd29e52de8973782d003ee4edada2ada2691d6 -PUB = 47f9b363a88a45053a05bb72160852bfe8f7dfefc2f37283de346752caf092cc -MESSAGE = 9593c35cdec535bebb6965da68eab0b646bffcfbd04883bc4cef90d5d01f018c63c9b0ddfb3cef5e786284d5218caaaf060e9288952f16301ed8a4c1bcee256356a0c8bda359fbaa2782b10c86d18e20f7a0ec99b27a0b4dbefc0a262a3bf68fe81444dcae5f693eb0f16e6ee03f8fcbf3a3398146d20ec4d2657761fd0320fee7ea703c49a6a543bc9bba911e7925038710e8c36552d476d6027f58b2c52ba51ad65ea4f039c78f96b889102bb4bdd69b68e9c3d45b5176a2d82b0b95dc321016370dae30c3936515db0464c41774301c74e42d89b8bf4b9c19ed554b12febac0f60ddb3219ccc5603531dbf2eb5f293425d72ccefa0c7f144aba89347b296be87ff18994b4a0c70c930f059303b5dd4c8fe1e6bbc3cd68c6c0d84246dc6e6140a2abd1780b13f1594a6019d1778b7cbb3a3e3a34bfae7297f0b3edc376941c32352a4be314b84a9d8d6d7f1f38a0ad3798020aa2a331a402be9c704484744a730cbdedcb904b6fde708fbd14bfdc29efd461d1d0b5825de0bc79422b69a2722f -SIG = 65c5d10ea7bfdbb38d55364a9968f82b548224dff3363b2ddcf585163dea27dc63b0563eb1a8dfbee951d3c9b33fcd6bbf0921c3abb21786b229069bd9ca000a - -SEED = 45eb0c4dfafa2a7690ef579c095456ceedcd32f0b6144d0c380f87fb744a0b1f -PUB = fc85632c98384b5f9682aed9cd664cf1f48e588be2d568e5c734494df4c712b8 -MESSAGE = 6f66d847405a03d7bd6f8d2897dbdf04e76d7df2d9470a4996b7dd6db88500f8f4f83e960e219a2486e24545add13614550414d827c41a9b08318daf01b15214c64a4266cbf8a5717ada3e62c26729073e16ddbd66f2d520e1e09935de05e4db11c396d477010aec66aafb762e69238d0b9e76b452454bf9e451e76ac79e6990d41b932bc32917093783c91bc9cf0bbe3b514070a1e692ff34fd06b66ea11f39e10af933ee96d8e9b677cb03737e7964eeaa725f121207f9c1b26a96c616df7cb7caef47bda901368ff2ea586e422e65bf21a691bdd2c13e67fff58cfbfed81782049dafa0f727df88623f2f7e8f262daf939542a187b8720a9b6b2b09890e54876b28a43874abbe3bfa981f8138b772c5d51736885f86acac2215a0b010dfc2c6b150845d4f8296252586a3e115f303c3d8a582e20fd2d43f6c446e5d00280ec179823b7fb4c1b0feb94eb4ef1707f5184e3b52461a7562d1f307cb751cdbbf6eae49ffae91862358e74e9548822b8a049fec6bf4c7a99cabbe09206577b657e31f -SIG = 55851de8e1092f78944f6c6dd95bf07e2dbc8df7f57ad576829b978e3af58a7a8e94ed4dccbc0182467edf0bad4bae7ca84aa9a0c17c61a9e0ddff1d7525d704 - -SEED = 709d2e199006f5369a7a0bdd34e74dc784be33880ea3c5dd10ed5c94451e7972 -PUB = 06f989202ba2cbc9c150be611262aca00c45f012f89fbaf89f8ceccba0b1934a -MESSAGE = 62f003140fa09e0387d187a0ff96c4563df9f4e28c2282c0183ac3eede1312354921f780fca5361d3068d29949630b7530cd5914ace0468d014b6f53d839b82e38817dbf2d8392c3ce3424eab86a24d804c7acb1ce7acfe0a1cda4393924283105da4a7741196e027550047f85b7a0a01d454124efc0e299f0ef9ad14350543053482261528baa56e65999ac802c00a336267c635106b26403c19f391d53bd82861d6d48a4380b3043aa91d649536881204eccb0de20d43e5a3755b7f600916eccae42a0c9053b462d9417a13d67d778264a896e8eaf90baf66d29e5438a716781123a89fa9b8beef91d965af2f4a1a5bd5d2e2aaf46d5c94b7709cdd38d05feee4bfb76a359077c16bc4be9116e69001271cda565bc19bf47d4f986bd9c0d184cd8a3520ca1bdb4b505aaf7cb4ec9f94789779d30714e79116dd5019d59b28b17dad96f4e2155ad9c61274addc6b638109504e9ed19f4eda5377762648c4098224e3391043e4c2ad591654c9e7f974efdf0b0504b6fa5f646cecf44cd372412372505 -SIG = 629bf97b0c78ee6a9c8759fbea28224e27abbb6cbe4dea5bb797e6e0fe80c913f953e3a9b623352d13acf4ce6250fb029a1e198d72bd5e7402e60e9e48ca3501 - -SEED = 5151617421aadc9c95a442b45e7ff6de06a2c733b85bd789fbad414ee3c91add -PUB = 14941d559761b30ab0a86d47e0f7d1896b33784527c80af41cb84810cbff9dbf -MESSAGE = 216e9d40bcdc3b2650188d121c9f8ef29e914facd022fe01b90ed11225f2eb93538e5fcee5ab8045e9199aa76a16bdd0616805660e247fecd7e22821b69b1f8e8a58ac3fb85691d75d5957a1daf53ff9ee6476d7c4bc541e6ad38e3a34ea90fc52a48b9399f92d17c9bb0d7fc3104c55d0efb4ea5b831ff9490b3f79f4d9d699594b741566f2b50a8fc78cc403fa40f5abb6638a32f449a8b3ef029c402f46931ad2bd3e8e683108714c989ae21689e9c444b9f55b81119bb5035bcf73e97ce43a2218c7bc3e430d1e814f34dee057265d3194b9f43875d8381f525f78576e64ce692584faa30fb743a12d1b77614d2e10a6b856b52be27cdb630ba1f0d3a6f8ea9844542e584ea0a2777527d0c52aca949aacda45ad83d16d5c83d663adb79cad6f3e39e990fe282a14c353aa2379d7f06adab74cea021b8983a57f1d0cf703292eb05ece89c53f3a1265610e0c1ea8ddd444d1ffd6bc3d03f0a6e4d0df5c5b8dc1f95d9f5558b118afe6bea0f6c2931363f03ab34e757d49364174f658efbbf38dc177 -SIG = fae4773b334460c77bf01ec6366c4fe61c0cab57d8a4b03909c619e11ee3461c13fa21576f63870e423dd04181e4a7013a7524f246fe33853c674162a7815104 - -SEED = 38bed445556de74482bf5fec0506f9af330b151e50d4774dfe8591d7b7e0276b -PUB = 4c0f9c49a42f4047bfe6885551c5e4b856cf771a67af3f89dbf602f9db9220f3 -MESSAGE = 0ff0031df0beeff3710c6b763f9b8ec81719bfa1528ce46519adf3d3412d93fb188fd497d5d17091c0f0345960dd0eb0c09fc4005173665d4d97f95c13828bc76b3492b87a4b64253c8b5fa47aa75fa3b86d5abeea8de5959a602289136f60a69b309e773b2255cde19ed2a2e199c33db11c16ade08a319750b851d92c692924fc9859be523431cbe78ec092db1129210ebbeaa7c2a2c000eeb105ca0301a48f3e45fdfb15b275cbab83ca5c99d737a585320e9e3b317179bd86467fa9694fcdb2ac6ad36ed7144843dbc34e423d35afd7d8972a1c43c199a191abd6ceba4936d395c995a3eb13cb057f88a9dc9490fe98845ee5d26a89fb642a2a516dc3056c54d3637213363a8628a42a395d942b954a89e8ef7a744d8ae5adac88c616efaa90e2077205a60baffede5c87bb14dead306229495f698f3e490616966b1636387d0d86183f945b24a9dcfccf4d36722cd12ebb6bd8e78325752afa2b1abd13c4bdbcadd170869136826242acfb721de5ff27ba8aa0c018b225ed3404803ce9fa2d508d8944 -SIG = f702d0d463282fc7fd5f8f9029b89c626cafd83450c3bb9dd8f6589f0c4b4b71f649ea212e5e33487c59c168ea3ad83150f1fcdfe8c53eba65adc2023c25830f - -SEED = 055460b32dd04d7f4b2311a89807e073fd556565a4771857d882794130a2fe5d -PUB = 260f8fed4bba30b9e12ad8523fbb6f57f0a7a882550061f1da46fbd8ea442221 -MESSAGE = 7407f96ee3e79c69d36ce1f64e4f188655ea68b947e7e2be97b05ebc6d4439e950276ef3f0e6a03dd48b24f66929b49c1580eb468807e1e7a25eb9b94da340c53f984f8b81603efb61047bf3f14b686d9798003d2f68589a79ebfad54409c71c90ff67c11fbd76cc72c2d145f458e42f88b75d250eadcafe66bf37ffc837b62ff006685b7f85a9d875fc078c82e61fe35d1922527a551dab62f9e477499146bad912203e664c417c3679c02d872abac0032f8cc77f77bfe54d3326fdee9276a48ea4eb251350406882d08c830e7649fe6854558a7513ab2d8d2ac3e5ced8a808d2aee454779edabd1aa63bb19f718f470bdc8451cd9b294941e3497063b1e39b6ca184562fe838cbfeee922de24ddfcf9882c5e615b11bf904817fbd647139db80b4e8feb37f11e1852d7e876db9cb63c94d7ee34192f7200b5bc77a0311ae43b806ebd4c2896c53f58f7ebc1625cb20d7107ef9db0da28788523de991ef6c5866b18d8de83a954d3281e06dbf27c4f2382e08cd0e0f6ebae3f961b77fce5a95a9b0621b756f -SIG = 23f4f1627fbabd7891d7d8489631c7231d22de71864e262ab4da84ea8a13a60feac4dcfb1812f1200444b775f121d7266d755ce9b6a9ad796559c0a26b516d02 - -SEED = e9f6d31b936942c526e0f9ec4f5a7ac25fa789e0c434bcd9199d720c743c84c4 -PUB = 32126d26e28231c5b585b13f43a01c6fe542946b07d3a91e57d281523f5cb45c -MESSAGE = e88133f3d17642d5c22779a85316ba0df34c792b4efee49ed7dd93ca3322ef47c72e5b2e4595c77800434b60719adf54e4c1a34c89fa1e27ee8d35a0921f9755ac4a77a6c1684ea0f5c8ee5f759ce59bfe8315800a67aa6c64ddfaac92eabe6c2c613779784b3affafcc620f2a6dc5cb8d8dc7d74aa4d79494678494e5e6394c433c14809ff40c9a592d0d694a81103b44531e1f48bc13965d15af8bf3340488f8cd58f09ae1a6616bf85ac9de7e0c6696aa2f1bec15e17a44da4a84edb4ec6d77247788ba0de3ae12a155cbedc0da2f568eef0b75a877ea5b0c2c0d4bf2c61d468a46faadfaece35fc263a9be9987f4f7f78f05c707784378c7b8f7daf9ac3a122aad39a1677966da9ef286c9e062c4f439ad0bddea26e54b2f7388e238b2a64928450d34564c5a447e7afbbedd1085f1f24c11ae084322d1a32cf8aa473941f00d56b1618213cab3900aa606463d9f800e926f9f42d4b082d8c5ec3a4a025b45f9aadc8bcbd17091b3da49e9453dc55e89b5b5fe6b31f5eddad10b6601572568d8e205d3251a -SIG = 7e3b1c4c716c808e90b974458915f3b2239c42077119fe270788fae520578bd7da6488044132e1bef23e3b23c34d9c1862744f28fcaecda6cac0fd72b93b6a0f - -SEED = 6bf4caaabb96854a38a572f4ce6c7838f7e750118c73f2723582618e2307f838 -PUB = 08126373d056f00e54b8d43d77c35f5f919833e90d8aafd6c8246d27917ad091 -MESSAGE = 4776e9d60085481fa537bf295bdabd8b1cf632a8cd40bce6bd325c129f977000e88468ebf2dc158ac0f207212db00fb60b8ec8bae229372e9a6b01530a7ed1bc9d389ec8913f59030d5b54af56ae1ccc28f37cc96a8e53204e92a677766adfaada99b0281f867f61ac9ff7d972ee3ed427d72faae75d4aec01b5ffc37061b6f0f7e5714c4cf30d5b731b0746065f19e4c8922dde642f80fe24a3c8dcb2e5f1c266e2af6c37decf55a2baa54f0d5cf0839370c3e0b4e77a4f36bbb3162014933a4a4ebcae8c60961ac6dcf134f30828d31402ae74e7e8513c9d2ad8ee46b7a9d53a1f87ebfce04f461bded1749b6fc4c4f25793525692d7a0e426c84e06082cc3e6abb51368370cbb106c7a0897f66d92c9739cff9f2706d6a2980ecea3ac4945f0f47e656bd9637777e853d2a839104327dc049ebc34f049d6c2f80eca99db7b418424acef752260d2d427949323997cd9617edf50d441d0088b1d47912e35cf542315265829f383f45860d3b45e735bb2f8586dcf58db4f2acfb4a68853a96eed7b89769d365613 -SIG = d2113f80d6cf928486a250a679d6e74b35ea9d26061fa94d769e1a8fbfa0a734227f55537e4ebff59336db141cf5d6d482a0711f1e9fc72ff70956a11b4fb909 - -SEED = 5d9585736ab209b0abe8bf74aca4eea4f6d1650b532550a223e044580f8e20de -PUB = e77729edfd2144b2b12078765417fa21f1594f09b269e9b6706802b4f3bdfe85 -MESSAGE = 08693591e6c58a5ead9c85fe8ec58508f81a3467636c2d34fcc1f466e5c6dafdc37c35cbee35589c6997e2b15448132744e5a1e131bb49bf5c2563f87ead3efe01e88cbf24cc1769c78cdfc167e378215b15859c7a28ece70e188fa330267d3fc57b4ace6c1520ec67875067fd33be86f4a1967afb3eb164c797cf28d8072aa69d82afa38374f8e5797c4c28471b7d69f5b9c7b4acdbc19f3c5c5d400808a982a47837aed1b3841d69890eeb31494e10e3e513d12d0ca686c7ce651778092703fef0dcc0214077dfb361251bdea4364dd41b97bceb0fb1475a50e4708f47f7878c74401e9771cc3fceace89169981aa77250850090d181d8358ebba65e290acb0352bece8c579832a601551816d1c05621ccbbee0fbe39ea2f195393199e69c234c2fb1c37e474840860ce609161fcfce2869574be0d38f95e20f4f8725247b9627b46e834905101ac12b934cbf87cb2d190d2f51490a82c4e810eddb81f956a9f36bda497bca506a49ee9cd47fda5b7f2b884a3648cadd12ab61898ada46ecc970f81dc9f876845db -SIG = e7b08e1d5809fdd8529443d65ada5dd655ea55b5415a011393be7071676486d358e8d2a460ebe075b0e701b24c9e3ab5f2b033592d4de3b7f37fd541f6920909 - -SEED = 60b142f165114143ca30a604fef51c686436aa1b9afdb266b3e398ccb3c4d855 -PUB = eaf6c5a76ca99bf7306498888c3b7a1feae98bf8988d7f2e1547f8f53a4528aa -MESSAGE = 1815dee1173b78264720d35b7cc2454a000a65fff214e2473e20bc83f3ecde9c04c1e0696ce6e55519dd2a75ce0464bf601adc381e793ecb9f8ce7ab87b6ca2a3e410f639069451978d14873d3390fab8623969713c3dfcd58d86d124073761ee09a652a48767f9646cb726ac454ac9a1bc5faed3026b703982bc2b1e0758210e1d62519230eb2b2f4a486bc55168560c4363df5ff5adfda11ac7ef51b18196c94337c07aef117990f770c0f1e8c0f88eb6ffc40e8ed7c3a80a632db1e7f63b63096e2ac49e57792b31143e2f4faabceae66b27471681c36fc1139007f9b548cdc6e3b8fbbdaba7a8adb843431238bb461ba24f6e09f62c72d6377b4048cb0134c25a5411a20bfcfc13e48d80e36bfb0da7e0185d33f1928636e15dee0e5df8992a16572b13ea8f7cf85cae32d529f66e8f6d2fb2ad0bbfe7199169b2567ba00c781b20a48e1d70df9fa3119cd7e5bbe58884b0b51218940fa815f85625fa203471cee8084780eb0b9356f9f3d4f6df740301d707ef1ffb3519e3f90b8064b98e70f375d071426881718 -SIG = a621f084ea1a36ef812a9755c9afbb53dadaae6b3a53fa8344ca40d3612a268a35fed0fd398ab75bcd639c547937c94155ab1a7a3467dd4bfddfacab1655e908 - -SEED = 734ba47033c6140232dd4a7a14f1a7743eefe9070bad9662491630cc9d28c1f3 -PUB = 2fa5df3026d60742e2aff6b57842c7126846c8a7bbe9266efa7b3f2398c357ea -MESSAGE = 5d3c659810c3fea52a6df3861e5cdc5b703cc1cef48558c61d8c51d0edea5a1479cfe5063d82ded9ca681e5748887c40ecfb9e1a9a8b7f8509d10776461c3923399693a78189089178d5aabd15f8c846642be47d6d4caf13824edcefb809868fa72ddf035c4de8ef0a9c832264f66f012761ce6955bc3c416e93e29188025ebbb13a553258c1d7c499c9a4aeb10bb36f61d1bb4cec5ae55d175722b9a9696df881951e35200b9653cf6ed4b3d15de087a9d1c319fce8582156bebf3fc91e0e610ff7a15308fd1d2c6069fbbb2947d3110731d245ae2963014bd76dea42db125cecc493c8e9091a76646577729aed4966fce9699fe12e367d665df9e95a9193e1133e143af92f82b66ac7764e5033178690521809a7107d8ae9b88e0ed1f35b1719901b930ad0e1cbce7fb30267b1155204f605f525e49de2988ea7f74be8815177fd976a1bcc126d9c9c135c5b4276d38019c34aefb7a0220f7f5aeff380aed627b070c2c9e21533bb35c08e394c85ae25e6862942599c65dbae5977a584a88180e0c8c71e5a8409e04ef7 -SIG = 9bd074d1d0bd28001baf7d2d4e82435df08c4264d8cbb1c381183c2f01223f79f94923ca178cac75564e16c7f56079088f7ed885de4d509fbc78f438fba3f607 - -SEED = 45e34d0ef4c196fa6d572b6b1774b5218f7c3291304c13500df7070d90e8039e -PUB = 13a7304dff423359177abafa5e6508d26769ca99cf8af45c383f3ff634406003 -MESSAGE = 3d9ed5c64b75e135df2f5e85300d90f21b363935e2817556fc9311751ba7535477dec8356ec385efb82b414062f35bb6d3edeafde305f9900a25e9813c9ee0237d46409650cdcdb5dfa2301a8e2647f8d3819d86f7b7e3070d33440f82c4054b1ab5edebeb27f95b3c4c6fdd468f21600f03b3494da200bab9293c38d02fc44048e52ff5fd0f7217a04d4ce912a180d1628f368280b6892672e8ff98d4629ac28b60c02a301e6c6026c1b9e9ef21cf0392df225008d5a0e0284b282631ad1710f811615697066c98296519948a7cfed5aeeb454ee7a61cc271bd3d499be17df09d3a0e790ee6b9bd99e1b919bed4a063b8d1a34f1afd2e952b9dfefd770969c8b2fc37977abb0fee6317253a23ecc97578168973334c8f91763ab97f29c49baeee7b35f3ae7f5cd3a4a6e697ef255a3c2ec0c752a3396f69f663ca1fc2b332dfe6c0faf78afe9c68d99571e8e896c5093085e9863a27648a9e58f3a9a84cbbfe2b41ca3633dd5cf6e82cb77cecacad8d78b353f48db42d99c36bcad170ea9e98abb2788c33a3c706268f3631 -SIG = b42c1f925f4baccd129efb109db354aca31c6898f4f451294749a26a6da1677bd3a5c04119e35f47319f20cfdfc08bb4528b21009e00bd41ebc0f46863bed10b - -SEED = 888ce2ecceda9ca2b948ac1443c2aedd7595aacf36edaf27255bde7a6991dcc0 -PUB = 016e572b4f98417c6ee297abd784ea48226ff4fbf0050a5ade8806e7046d3ba3 -MESSAGE = 5c801a8e664e7660760a25a5e1431a62159fc3f3aa713780ae7cbce23b8564782799bf2be4817ee2921965bab7e1d44833824c1628d42dcee3e46ae42b2816d0a432a1ab0bd21fcf30adb63d8dd76569544343d0035c760522ca68bea72c404edda1e9095ec90f3325681c6de0f4c12d1afbcba2c7871a1b1e1f19c35b0bed9ec2a87c043d36d819396bd5d099e1aa090391297c733f65a8c5d2120c67635316fab25b4d4847a45fc3f76f2e2426dbee4629975062fce14e2189dba27fb1ded2453f001debfaa899c11660612d2ce2ad2f762ea5dee7e71e58adcdcefa79e8e8b27fc4ccf89aabf176b5d34f82dd15d889f9f087dc9ae8a42a72f3b83583616e170637cd1adf38aa6551cbacca3602bdc7ae210c4a446b3af8db2720e549bbedb8bed215ae00f19da29d8fb0b642d27b2d88575f0ee84f3d129eb774d20f537a1c0fdcf717bdebcfe47f8331a341864346fa6a1c6bbfd178819e387a0d5499a68e81cc9f82ad39e31e4dfe71952d5ea5cc8052a3ceed1751f59dc7ecc9742fad144e18dda8d0582e74e39ca8c4 -SIG = 99d83f148a236ebbef1cad88cb3c7694f4986c9250e21c3603a0d941bff199cf77d6ce99efdb20533188d68ad133de033a1fb3468abb706d2b8b4fbac08dfe03 - -SEED = 617390857dc10cdf82b5c94261f58ce2d44aa2f57d298f08a2d6c74d28147daf -PUB = 89e0c3e0a0f130d1916e0e3849b7286fa2e3ac4c17bd1f716ee5a72f0257fb8d -MESSAGE = 1fd9e7453eaffd7c9b54055622dde170dd58b71cb945de75351d5fceb1f536bde25158f03786155f953dc207a1708f90d95b15aca0aee3097fdcaae85e4ab1c2cdb705c53e6c2ed21a994b304a75caf2ce4fc7d61f561e74e297397e2cde5cc69056940343aa81375d0af18d17d2f34c0a71dcf1de3c4fc488a14c5fa6b3337a3174b1da7958fb00bd5955148221427c60dba04117c80d2488656dbd5343de891287b50ef4df9825eda76b4977f3acd4ab6d3102fa56878306cd76561491bcfdaa1da567e677f7f03bae5dbf4426c3c4a6c3d082f9178b2efdd2bd49eee97ef4dcf3f0f51bbdeffe5ae6601e28019518f827f02e51f6679b8715978bec3e69d577156dd719959371baf034219fbbd17a2369a8541490f6a02013e33e74f4769be37aefa4defb6bfb3f351c2a261482c2fbec49f85f8445456e8f5a474030cd72d095ef6a622030e1e43a0c5debb034731d2f5e8e4ba3990f077d0c162649d1fa3ea4fe1e81d74aa849e21b059d966cbad4c493ca10bafe7a69243e3c0a6ebfd13d697906303392ba65d4fe06b6a5 -SIG = 63e90a6afbbbb0ee696bfb56efd679d68a9851a8947640a97f41f68edfeadd216ed8698e2e43c820c9044caa7adaab5b76762b681831a9f760476a8443c43c06 - -SEED = 877d017436369ec2453fed46e977d6acc3a7be60d31395ad6e7ea9e07480e4c9 -PUB = 4e65422fed334a55e8b673893eba7c181dd724dda002817b0bae28acdc3f7fc0 -MESSAGE = 4ed3f5bdbd41d0e3b0a8a7fc3752eea496d6141678cbfe06757f61e1a168d761b6da83052f7994950d24626f004fbe9b8c9562e0c955fb3b5c08fd2d3d258393a349030c8e156205b40483038be1959f1cba490a87fe13899e4f3752063b68fe3e1c5071f7db0002f01494b4a3ee2e07992bdd200db4316629ee8a95ca347f0b28d6402a6da8b53e6b32581c3691e11ae9b6e0f0494894e649a92d03eb49c4d6833fa1f54f8dcd91d06936a6e62d491e2cea46dd07d9f02d3254b850bc9749f258a61ad3b9cc24b03287331b85a24143aaf8fcccac5f18bfc72dec75c0233516aa6e4589c78c665a186ed902091df97b0d04e83a2d74d789891aea2cacf813fffb5efaf78dbcd7af54ef55c77b1c4c8ace9e9278adc23d76c779d64b3bbbd1fb33b09836ea64a71e4711e89e8da0f709213342176ae22c6e7852c3973b60d9f98889b442aa48d7bfdfdef64c36c586c4fb2ad2e27ebe479f6d722f069fd6106b0d08975d5f721547c3b9c52f9fc5f45bb45b5b632188e80626518a79056bdc4ee1d2be6c6542a21fadea92c6dfb776 -SIG = 7688f3f2401eacaf2dd88e170ff1c4d7e94822a77f6b550b569e82152bbbb434057e01230b05ce58ee1dee5226b5c7cdbe5a8ade3b9465f59aed74145d14330c - -SEED = 4f0b3607d70b0f2698327ef4f1982c5b4b94be78f50c76f43bd642f1f0ede39b -PUB = 942b43089fd031cec0f99e5e550d65307fb6c3e793449fb390ff730fffd7c74b -MESSAGE = 9f700a1d2560f69d9bc105bc83bff539e4258c0248602013a959b978a19cc273280d90c0178089578b50518e06ad1eab790ffe710c63d78887a95569144f3e58a8837f93dd516fcddd22bc97a7f14411d424b2e8e9aa7c280119ad94ce92533fc7fea6c66248644ac3e1beef2553a6f61e91b9379b0fe0c68b40681455b311f40df0c97f53fc954242c375e7708d61bad9f51296247274fa01a7328fa5009d9995f501ae8683552b11a49d2638116723b1319450a90138d278cd9512b80ca5792ed16c683bef92ec87884c9f07f137dc47a13146e511065c2e1b4b80efde88ae12e29431beb7aee365c16d80506b99afa6a1406edb061766875832dba473e519dd7018f402eb1bb3014b7cee4f02e980b1b17127e7d25dfe0c168c5344f1c90044f827707dca03070e4c43cc460047ff62870f075f34591816e4d07ee302e7b2c2ca9255a35e8adec03530e86a13b1bdfa1498813098f9ba59f8187abcafe21ba09d7c4aaa1ad10a2f28334ab53996147c2459c01b6a10839e0301123d91a35ced7af89afbac7d9cf8ac9a38ceebef83 -SIG = f396a11f2f03c61439684f79001bd4f346a348dcf1d3beb2d3bfe33ea73a5ad4eb97506acfbffb784e77548189cd599f8ccf17355dde80e75024ef2a78d5fa03 - -SEED = b8a0010c784d8d002a31da11d022d30188a4197a1d5f14ea4c0dab29a2e40668 -PUB = 8bdc63e50bede13c91a41e4b4b7857b9e553f484e3c1ec167dc04c281ea86622 -MESSAGE = 5c6ccb298be216808b811e56d972f456b69ad39594eee354701ca6b3e38d1f41a359e5512af98a3a0873265fe5191f4f2ecaf66bee75a3ac0b71a4ddf2a759ebdddbd88a6a1c6fd0fcf7d7cb92a84e3307b4a4f98c710abf4f553dee74f652d2ac64bc30f72bf4354ef7e806a19071a051bcfcfb27e37fddd41eceaec1758e94695c670ef4c5a5902178329db9585c65ef0fa3cd62449bb20b1f13aecfdd1c6cf78c51f568ce9fb85259aad05b38c6b485f6b86076928ddb4e2036f45e7b9c6a7ff24ae1776030e2576825019ab463ebf7103a33072033eacbb5b503f53266afb82f9b2454b8dc057d84f30d9d2cb7c3a31a7dbdfba5b8e49231c231396c47ca042c8e48a1a5e3ec9afe4020595390f9990dfb874e0825ae9ae5e752af63af6fd3e787e75e8d8dc4c66302277ac01b30a18a56cb82c8a7ebdc915b7153255a1fedc492e49660262bb249780d173e1fd20d18c4f6b0b69aa2eca024bf3c80d7d5962cc4a129a7943b27f33cc799a36045541275a2cdb92a40e485ba8b737a04b43d29c3e25f76cb3d93a6b94461f88f5696 -SIG = b3f6cf4c0e0f9074ff2c2c47e163202f1e9d6ee117cf757633e4abe74423aa70008ada1509ec1dc117c1c230e9b23786f3d0f29b73aa284536e9580106a8a70c - -SEED = efc86cbe40363abfbb2a4b1fcce5fd6084da96e7e814de71aadf9a618f303625 -PUB = 22f295cee727d28d2b9317153e7d9412da1065c1b16ae2a251dd1fb431c62b01 -MESSAGE = 9e4fa45dc026710f6bef4ed0f07c544b0bb0d88fa79e7177d8448bc209d71cfe9743c10af0c9937d72e1819e5b531d661c58c63141ce8662c8839e664db79e16c54d113abb02a75bdf11b3453d071825bc415741e99483546b8e1e6819de53017092e4ef871f1ca0d3508f937828a4667db11ffff9416eebb94bf9b84d654603094834a99ca70b90f562a86823624dfe9cb2f9e88c173f13464d4ce255f222db50dd63ab42465734e75295c064b64cc3f15e6237e37f33d615f7c243e4ba308960cfd4393402525500bb7902970b3931d48b35666a2d4d2ab08fa12af366a004346c9dd93d39fb1b7340f104e51fedbb533605b5ff39cf6d59513f12856dcfa198d793b0fc875cdea0741f1455746d8a19c3e9d928f0021b01c25131811e48c3c75c6f41422a8810c6c81f35b454eeae8cd17cf3f2e6f0bcd9f290984f496578623ab8e2738d2d10840eb91d101cb4a23722b72e3dd185440c3b9f44d46a393a34c187a20d610bb698c50531741efe96323512329800772a408065a7ef8e4e4105eb1f5bf6d3fd6b217fd836d89f53b96f45 -SIG = f8818310228ca76111524ce94bfcb0246ea63508cee9306592b2f77548edefcf76bd1454508ea715042cec169cea5115ab54235cb1097b10702aa38378028e0c - -SEED = 33556c60de2f2c9a9303b99add378592060505f8e49861085a4b15f072a7ef28 -PUB = 231ec8cd845859f69961275119dbe4f715e5ec5aa98bb8741675b3c2d0c89fee -MESSAGE = 96af540ea2b1923f5fd0aad321ac032070c2d65ba13d164e75c3469758fcf31bb31655cb3a721f9cb34be2c90c77eb65be37f606d32a917a4cb9a709ac0705229930ef6eb6fdb0fa3c0fd3a90ce171674ee3ed06354bafc3c7075467a57445b80385640447902be39262894b1f64fea58287dc322d19875972a7c8be91d31f021c70eb682fdf11a10f8f582a126e064794838c69fdf64f5b6e8ba59d48b4384f8e9fb5c087cc7738295cd32344ba3b697ee6b6a8b78ee7a9575c97972a4d1bb18486f9037a0f3c6f471a90f86498dbc0df5232c07e8c01b690bee75302992a7a36fb4437c25a8bf5e34cf7d5b55572c700a079848d381364f9946a91eb1603ff3de5ebdd523bd92564818e237a53e8f522deaa2c29b897e961586e100ed0fc0ad70d160934e694027e5c957920bc0546e901be39a84535597e1f280c222267abe97f41205d8171820dd2faafc0699419321a9160f69b99fd41180945b62d2dd105cc7bbe821d28605e098edfa8b2309aeb0534e756377f59937c67463fd87c8b92ab58119cf4ce6c665af572fbae1de4a2cc71 -SIG = e06a7a414457bbbef2bac3775ccad087dacb1fa4bf938894e8c929118e09e678dd19938bc88f43ed0f7d31cc6a0e602c4e4d1fee33d41e74a119fa2d1e4e340f - -SEED = 7a5c74314e1183334a4b6226b9a82d70fc2a124e3f87db6a2283ee05b68e34e0 -PUB = beae7d3dd97c67f6273bfaa066131fed8ace7f535fe6464e65791c7e5398576c -MESSAGE = 98bac6724755912992adc2a48b5442376f2d927997a040fb98efe544eb0c8e1866b9616e298d3360316ed976bd946a411fdd3a6b625c0c1a37af0f41cf6569a7884ab8467491a987df3ea7a0b7ebc4692569a34ce3a2ea3503495b2c02d49d7d7db579d13a82cf0cf7a9547a6eaebe68e7267d45a60b8d4772455228cca4036e282e1a1216f34cef7ea68f938270bdb04293c885d005f9f7e638a8b4ead2626c0945174ff2a3e2d6e15a4c0338c09e1260f0928ca9d3499824f3fedc4785da49c5c34a56855e241facc6347a399ddcac4399a8b158198c151461a3b189e58ec1f7efcf2ab2031fb17b6f035ba1f092e9eee2e92c2d6cc2032287f854b41e70fc61c8d11a2e4f0708f02eebd02e8c7e8c7b38a57bfa1a745f3a86c23909f6f89ab16ce7e1813c1d20147f31b4cf2ad0b606fb17e5ac1ab51ef4a7d8093cee9a655f471dc5b146bd1b93e540a3d3d3e2de8105911c10d6ab5ff79c2d06027f7a54561f2071414bd330a8785442251c810e232f83c367f0be7799a93f5238f7f17b5be829fd89123c04833af8b77e5a4363047ceca7 -SIG = c2ab1f6f5114a84f218502582c567b37a8bdbcdf6340fa4622873be89106f0a90b4829505f72129df0ab3d8513268774a34df3ad21ce254b464488addd6c9b04 - -SEED = da8006adc492ca5dc86c2959437a75deb6120ff787d2ecb9c20c30b52c26bc41 -PUB = ff113bf0aa58d546f2385d444ecb7888f8caba43a174a89fd6065f2b7dc17bf0 -MESSAGE = 3eb4324dbc0149d2e7d6df632bb0cbe9a9f6dfa83e227fc07bde1b577b3611fb921c9f8313f068e6295d4913a8196be530f6a01f57c09c028491444b784720e909ea1fb69c1c1dd6304400327b7731b33cc46deb046cdab6ad1b53f1749a0c65cb9a7e376ffa02230f536584aea243c639103adbba764321649d7e0126f82e0b4fd9dcb86c731cbcc517f2016841e916bcd5fde871dc098cd913dc546284d1b2165c63e88f32a2789a500856371b50d22fb8c87d1a3caedcdfd01ee5f870a53c284181d632ec66d48b6bdd5646ac39c9e75338a520212062bc3466ef5c58765570b905f63a93d07f8f1baac3526b016da799f3e9e03a4f7f81355e0f7a76f30a42b807322051b71c626a7a296d75b9d9d1a23bcb13c9ef48a912dc057325d3bcfb3f9fadaf0c249b102aeb854aa3631e34f69ad90c2ab2ed33bacc40b9ed1037fae67cdf799d5a9b43785961127d62f8e0bc1589fd1a06fca2aea7cfc012cbf7b5b207ddc4e677d8ae4aec100045ce36c00b74d1d28250791236dc5dcc1ed313c8c246172666f75217437c6034acd64198cd96df2a -SIG = 1f5375dcb3ad2baaff956d8554ecb424176be9a6eb9ea54e814e0a73df2a5d848ada26ba8e1805cd51c5e16950c1ff7d4d2764daa6f4c7502fb865cbe55aaf0b - -SEED = a284e26b97e538839c808d45bde6f012a354454aef81caa8c55914624f2b7d66 -PUB = 5ae46e34695efaf463a4208fc4e35b81f2c63593238a56f2444b850f058c3c5c -MESSAGE = 9ebfe910b50a5cb719d95b961e5905f00ec7943b55468ab5956692017645b366071f8fbb77eb49ec73ea7d64511405b90de22db98c3eae39c4039c7a133430e8010bdd39a00fd1a528b113dae149cfad3ae340da27dcc507782ecd8929237517afe7463eca2473c7acf6f7aa04efc9f266ae7b6d63bb8cc2a438b344827f0713d1f1736f0cbb65b99353f20355fa0230d4fa707328a8662654e83ad0530a10f9a69e17c099e1e2b5db18e5f6f1dceda5883e8cab79701a5e9089562ed153ad08c674f097c28e4d16633e092969a8f0bdac54527c0ee03bc200e5be612e3d1eabd87091101b4962afa07b310806992f373076d76a58185118137c9d26ee2cd4c618c18283dd19f0e7a089ee37305b6b9518a78d8098436ef62be7d699808acecf67939d61b3e02937cd8c5f1e746d4274334bc9c37fdcba234c166fd712893f3a040832ec5425e57d80f11ef9ca5fbcd6c147fbbf5e2fae746e0ddb605867e3bd050483c3cd1329abe57a60bf88898dc7e80ede0f4517de8fc807e888b621a00f663084ff94b99996628f3b11690a60f0918cb5c9a7ef -SIG = bf110e2e9cecbc31fa3e0c2438cd1f4321f92cd287005a48528addf76cad8d88bb22719ef91b139562a1511838682674faa9ff7e7ade6c9d573f845036d18905 - -SEED = cc97a96301ceed0f922731b685bad8ad4f06207be340f5a44fd187f29903ec20 -PUB = eb563a7bce12db97f1891d0f610bebd55101a3125ca8dbb50b25a6b5050d3784 -MESSAGE = b9ea3b3df7187ea415a3c335e0834e10f440915b2ad41c71f255d6950a4e9120e4d494fd9e672ce53206fdc417d865897b47ac1054e1ca1068195232d4297435e44e1224e66a912d9d7d182946ff5a9f085bb8ba19c54d16b586a9b30461b6773b93950311e1619886f5a5b3f111aaad094bae31c48f1941080968bd0277bb6fa92eebf324b192df5cc969516c78c7b2d12159b4d1c8eb03160c4cd1907f62ed4b854c569ecc481c08e636f44ed7c390e58b5937d2906b2817bc3769dad9da1b0f79391b55942063055da0d6f249a3e452baddaa032998d7f73398ccd0151bfc92c5e2fdfa9b14855e6b0d3746dce248e219672987252ec747df2747fd3fbd8b714c882d707ee302a904950c34754f85350e1aa3f8ea6293cf01f717cefb6b83a22126df5c4f5698aafd06a2244ad7d01f34017ca0ece6f21040048aba6ca4aeb04325b9402bcd43ab130a105788ac3d7b7da01ea9426dd0ea1933a8189933a6c0c6cd648ea316a7469a5fdc6e7c934d9186586097b55dd51ac487bb80ed11d4df8d33626bbce95e4f13bd49922f00c920223f4cbf93cb -SIG = ffbdd3244181cdf6034f4a450fdd95dee4971a933f8be022bb0a4106aef39af3055b721881c9b54d1e99b9409096fbe6dc2c9966e3679964bd7ef4c808cabf01 - -SEED = 679e3e34773abe4ae25cae7d07ccd0eb3b0ec0a35d570257d62570de58ea2516 -PUB = 18acffce253b27259579ed9924f479cae312167bcd876edba88b5d1d73c43dbe -MESSAGE = fb2b648ebb16688244f78b2ee9a273599d56b6198900d438a9e99c191425c72bec4f235847e18e47f57c3cb396655f778921f908580e8e83c96c108b20dd416678021bca259b98518fabb2d3532e4851d9d52add2542c0cb3efa3857a17e512438bc0ec4762e2f9baba429c03e99bec4038e6b0ca42bff5b233b24c333b4caead2de374a87b2ab5d80d6e49e4456329d51ae973bc83d7862f3d315e514481b12854a9dfc09e7d14f0d022c0ba3022578eba8f874deba4aa8c833f2b132861d4d51e50fe9aa4b787bd2f051aac50c375390cbbcfba2002b80ad00cdc12980f8ba8bcb7064afc04d5c4682c1029b10a6d45fe6ecd704245faf598c4659597c5d68a192cc1cd4fa45e84b549e8e5e67daa879ae5a520a6b5550519876a562ac49c6db0aa76ec69bb64dd6b5e1a3af2e131e722e7cdd05be34b5fcc6259aa124ccf814cf5b500d176be28ebc40bb21f03e24ccc131e0f41daa1ca02e6b00c9c53fad1248614e940d4b237760ab7569a767b7515dd2d623e57a2841b7d2441cf43049e4698d2f9c9eae7b2910f6ad65edf9cb2bdbd9b29f606e0d -SIG = 1a51022628ccbb88eae9b21773c3f830b7b6e5bc36c9903ce70fbcf459d6a1ed8a1dceff5b19269ebf5a6fd3d8958860f554461f0e9fc0e29af9b1fb1744a80b - -SEED = 9bfa60923a43ed0c24e2f12f5b86a0716329f93d4d8d3e06238002893278c19a -PUB = fb1c00687781b55b893d6b2f4f49cf5f73d2903c316d1eee75991d983a1868c0 -MESSAGE = a99028b0f4a3aa5e79abef6c0df4a783ef470f1a29ba51eba00f6214e840fe19e5b6dc6021ab599bb2ee3699576015d79a7939af823535b630e3938c723f6e0b9229d46bb3379acdba587c238567e3d89bc3bd3519b727fc694fff1118bf22c8bc8bc82c4df7f5ad38de05fe9f762999ecaa795f3ae630a9a316d26dce9f1568ffa3f22b0295214020b3d3f5337c149568192218132a90709279c01d23baefa669e1c4e42038173f1319c212da144f1c4ea4c52c005cbc0b5bc283e74483a0dca69279deb17ae5b29cfafa7d0063f4e1bc93537efd937e58a8aca737228f937ff2a741890e96c5725da11b45c413a9bbb4180a419987bbf046bfd346295d62f081c76daf2b0e1eb4f6712feebe6f0a92e358e7ddb85896507c340a01f68d1b0f085778b7c44b014aa6673e501796959a17a688db0959058488a7112572f23cf9cdb53b5eb4b45f5953ba0c0c690f86bd75e89a047bebaf847c1dfc345a4f3c7d3beec98b84b0219003e819f5c2adb45f8717903d1f5bd5d71914c56fcabc7a290f9c41699c95584d6a3a16340cb17baa1fc5e5467af7ac3221 -SIG = 55f202efb2a57be8b4e4fd894dcc11a4fc5f8276618ef5cd34a4495adb016a298e6480a35cfc53edb25ff1499fc532a33061cc01a250458aa5e4f7f16f51440d - -SEED = 6e3af45e66e22890c3f3c934f523a4d69427976e6e52625f8bad558993963219 -PUB = e097364e76ff9f2e1d167f6b20c1bc5830085e7ec993c138f8b1b2175637e741 -MESSAGE = 5cfc2f4b559f8205b39102087617f4d86c7ce6cb251e5f89601dfc88ed28e8d7a670ec0087d2ea5d893021c7044da2899a22d776fe90170e51c203250690d37a294555e74af9234cbf1ad8f22cee8974828a0d09e9554b71ee3bcf880ab98325f706272194eb2e80c701d441b5f8668561b88849f827af703ab0954105fd3c54b3f6ec5493596d0e3bc67818048310c4a3e0c556bc80675f201f9bb9c6538a41d99aa40c886fc431467218d819c23e78498aed0613fa6f973e2211df9fb87f44116f3fe4c26d6cb2fa334c87f78c08ca8c9b9041d83a1230677e0af788598a42e44cfdf6964a4ee80e38402ba67c73a581e552baa2282425cb2ca17ca92edfbf98299102fba761b9b71a5452141bb9c18dd95febc2a782de9ceec08bd2ee3f7f0c1bd8946dba99cf9ea086abafd37c9ca60213f0de17c61ff9c391c9818ed5cd8571778b7dcc13224962386fb8ca14f861e99f3b18edac8a5f130f7bfcd45d045d0ff34c81572a512363d6530f93813e5fb10e9cb8338a7f93800491006f4463e89f0ed4530e5f12df674f598904780ad0812b1e3521fcd0f83e -SIG = 26ba562e8a4065708207c25e239b780aee38794cf983a37acbb9d557a65ceed3c0da47d17f3e8b8f4eeb1b65a2c182ea6f29623b63bb0f1c72592683b126b901 - -SEED = 5f1f271844d9ed5a6a6f209a21408daea470f6fd53ba6479d7407105b7de4d65 -PUB = 6085d7fb5a9b2ed806c1fd30a2afde760961f7a36b48f4875246e615a2bd9928 -MESSAGE = eed6b4475dc263bd2207fe9d41d48282b713f680f2e037384f18b4bf224347f5e4c4b060b808d412eaabcf733dc39a40c6bda0505ce71fa823bd1b1794847678dc034e7999c16369340bc60c64d09bb9187b2e326055a053f8e505ea4196861471622db0e46f0f8954d8a1f07332da4d8ac55712626009912f8a15a9cd63a74a03c92f246cb63cc73f92e51dad1bc9715b1ed3fe5f2e1b2959b9b71e0e37360eb29536cf797147fab10864d6146c36b82335a0ce931408479c7ede484ff73e2dbfffc6c9227e16d7a23f4d90f15584514c39594e17bfbb295de9d62adadb589dbbe0b06dc8dac5b3bf517b24c1837b39472a6dd38931ffbbff5b763638805b4e22321f7afe92cdf502fb63d109ddcd9e4051ad6f45598532be179523710851d3931e887d02c345c79c489fc106a4ae162f7df71ab90b751da7038a6df7616cfc11887e21068fb9e33be566402be504f3fc2742b881509bd4fe6a0fc722649883f8cb655598a15a1d4c229dd86b5caeb711a028defd431154bba46b48172a4d8cbd45bc90aaf874b6085fa284f5fed655ad6fa17d67b3b9a796fa3e -SIG = 319bb4deb2178112241b3fb8f46e105c3b8e4ef721eb200d762ef363e2716f2a89f80b5b9e89970890a09892ad6a58808b477e943b3cfa77774a3645bc745f03 - -SEED = 048ac9ec3ecb30a3b1bfda9b3b79a48c0793b490879e3c8a5e23ee2babcd9b7c -PUB = 946c186feafc3580a58ddd526ff229c04720250f4cf6bde0271eef9b12b1c3f3 -MESSAGE = d68be8ef7b4c7a4289f2b18b16ade97f4e4fa16452976afb581693380cc54de38a07587f32e2d4549f26595fee2393bd062e9b00bae72498e4148c8b882a8840e15b585c82b5c0defb233518409916615deb3a55a5f84e6b3aab93844de3b1e4d86e09f889ac71c324eb12d0fbd861cc31229540e843a34f8d5be47c0ec0d23df43e06813fca309439904c167d1043c0dcd444b004be1ff27b7862b00eba9433b94b0fcdc67521da0c1d5358636c78f530431164dde20a1cf164f51e29b8e63eacdecc869b41392c667664d91680d9ac516af548f09e60564e814e36e0b563dbae55c627ffc14158a56d8eb3609e174381b21de4ba82344466dd577f4d1103c43c27fb83cb833d87afdf7412b4090909b1dde264daddce967f496bf6f17112bf351e417db5953b13b8f0fcccbf30f5bcf376861c12ef20eec89ed23cf384ee78dc6eb40fd5811a7b23927c13e7dc5da3a921b883a9b2b1155970fb0da7d2993dcdfd4343642a9d5a6347e43c193b5793e4453ac1537aa3d04dc9f774e840934881d78a39ba250438c507250eed2f6e07cc953f783d6b72b1cc619981 -SIG = 2ecf5b8a59a8e27d25890a2aa32f4a0673275d539b174afa7b2cebf2e76280dffc338ede85ac8f614039560e2806d9e1e3cf9cce2ceb7874ffe1a7e80cdef40b - -SEED = 2f057d20b1678531611f48f003b7d22eba5dbbd7e2dd41b7c79d09071f85e993 -PUB = 620fc4eaa34d787df675ccbf7e893204828db92ead17a1165ac7fa1ab42719d8 -MESSAGE = 6e35f6eaa2bfee06ea6f2b2f7ab15fa97c5180958af2e90af918adfb3db8323f447c7bf26dc534997c38b7fc977f642de288cdf253071cacf3564e3b8ed6dce57ddfba9ff783bad2e76df124828fc1031acfadf01a44d41b42161ad9060301c1af1928b9e5b73b9bd21cac60a842b504dc3cc311c522e3bb048bf221444f53ceb08e77e948590e94ed98f1b604cb9eadc93bbe7431c1149b23193ff93e8569f113e1684d8976ecae6f09e0103614be418a472ef55bb8890d72b341cdd7505b50a45522ab63ed791ce8f82feddd7a620a4f6fb1d2fb0ed0c4560d78446d83b3d1b1bb56b366d196020d0624b1fbdb75ce735dd43e8e8df163c44e236993dca341f5132d825d0a4e393a19d38f61e11e0cf392cb9b646ea23c58099824dd8d9fbe26a49e33b23df80607abf19715799c19acc722ed9bcf94a0c29ad24b78b0b035b3241c64cd86edeac810e66745694b5eb1625060edf2d949de0d34f522df2dc60ae694a193f3b82c1d6f83a0cbb840f46c49a3d7d1cf06deaf96c64f8f9e17bd9ad512ae6309c486d9e2a78dceeca473a0421dd1b643c78754271b53ce -SIG = 30df7b0b1c04fb1efa3517e928d6d57c2ca0d07f4e04ffb1f08b4792c5937dd271ccabdc00dce850afe50af5990f224e8420a681d95f9f7f515afec102efd10e - -SEED = 3a3d27970fe2acb6951edd5ca90dda0fc6dd229c0a56df6eb11a9c54d242dbbf -PUB = 564f0dc3dc4720e68e44dd16711e049e6112000098fa62a1b98c288042f7c3bd -MESSAGE = 4374f61c2cd88a3b8972249bfa79b36ab69e3ed484cc60e5d9541fa7686cf4eed1210c5d0dcf42dd25972501909193ca76ae6eb7f471d8bd0d5fb5a6b431bc3de0e0318d50514524de87c4b83005dfb41245fb1af79b84a97b83d3cac7ad7a53364e2e9b21c97b769bdc57f0703116168380f3cc883689eb4a7fa3b26dbe12bc28f8c40381af64df4b5361d174cf75acbd46428740b0d1322d32bbe94845215966ae588777a8c05336e352306d49278d328e496db65e9ecf6ce6405ed1c893490bc48c13a134e1fb6e80debe6d32fce6ef74783c8d77980a441a26aeb4fd83cc855352cedc188f5279ce211f744a40b23ce7ff24437a1dd3373ec5b290da1f94f43a07a3ffea5b5f67b52c196185bce9e9a858257fcd7a8ebaf9040ed091face5a155aa447fa15e12122d25e8fc36eaee2137c7b3aa30b7e3ff6cc86b6dcb9eaf49c9576f0f462008439cb1a3aba013e897a0faf994cb7d59ede5774bb144774f73ca30e6414a7cc7c74b20c51a1404ddc419ef7624593e9bcfb37c0a762eab68faca5863443e16edb759dbc8788732b9e4f59c11192c3fcc872af55f32d -SIG = 22eb8ea0507349b6a0ace25cf9180cb08e0357b04502905fbe69b4e21b2bd94e22cfbdb851ae716a5c253c70d5e2b24ea78f35bc213292543d94e14110b24106 - -SEED = 06d498318da456242b9c3b9ab6d532a128fce044f53882682e9262149c165288 -PUB = 413517aa63200a17173209a4b3e78ab9383cb4e39efd6794c46a2d13fafa99c0 -MESSAGE = 3fe30ecd55077a6e50df54bb1bf1248bea4063e3fa755f65fcd1159ee046efd0eb5f2fbb38b5c00947c97dc879b36b9e536192286086d0dc12053610386174a7c56f22a85b73ff208c5944f393236c32415809da036e73cad8fc3c30378064a76afa930a3baae9aa357061a8c5e8e756a9cecf94b72df43facd88fa49cb4948c6368318a6b1e5cff52e587ecdfaefdb69081f28c2d13bf8eab81dbaa5e3728c4317fb793dd196bca0fe54a6c242cf26e2d129ba0d82a2c3a45bc8d1dfd6f54f8da4f5189c91ac214fdabf4c597381b2e5c40cc71fa7051cf2ea93906a37d57df12d5c7e5cd77c907e442566315bae51a2222d62e3f42d1767882637d66a1d5305ab4010a0e49c57def69dcea839e1b76a41135ba952cc424950e8d3aac19e1d93de7757c15ff9997b3d2a8613cd9a164781d1be331799fa6109cef614305a1958f62903c8c9ea0b23ba706d49c54baccc1e63cb4bf14785fc7b062a9800349bdb0bb927260b677b60f10e62c8780f3ebb5eb6ff0360263d457ab52fd1125c9ce046a95d89d287350c804cfd4ff2b2ddd18a9e13519f20b4d1e051af624640f -SIG = 8250f76dc599c5128787e4f6d3da23173330ce3320dba959bd714cc8cc07c67945d63e75662c075e267460ab7bf561f24faae3b41dbf676899191e3b02b5af0a - -SEED = 8e8e1db5b1102e22a95c47af3661469f000a33f13b8b87b115d2452a411f6f39 -PUB = 56d7b3169a95c22998ec937925bd7cad13cc65808cd5d34a6c4da870eaf32364 -MESSAGE = b24634fbdd1b7661315d9dc153ba90d66a88622a4158f8bcff25ba9c29e65f297f8e60311800b7331b69fc20c9f85bb7c184bd4086b3a9f9a27102b62362bdb4fa5b201594250fc628fd2e0e0d1be03dcf818c6094c4c29121cb2bf6d908ed8aab427c3771c0c95f0ac1469a0810b603a470282e5980a60729197fe6c20ef681cd1b96932d2058f896ea7416422a7e541f224a5f04253080741c5d4e3eb039db6ba051b4ca5417ce8afdc70214ba4dcc85b623d11e681c6009aee4e6130a83edd0d2c99fb0647e11ede7301ae56b59904ef7025732cde038801ec7e8d90a9a1bba047fe628351b3b89d0bc5ae665a700891f09ebeec05591842adfcc25adc3c71c1ebc4a312e5471be67253b0e9428b0cae37645a0f7ecb89dd79fbd9be2875433667ae07d74a7983c4cea601e72e975c21df993e7fa22a9fabd45455d45e37031558e13a7a4f5f497ea78fb7399f8838c0fd5de4ebb66db290f43a4867d505309f1c1bc27e9fabcbba71302fc1204715ce3fcb0905bfa411c9d1c9ab4a39954e50b8e0cf736c10289563bdfa967553c36cd9e555bc8cc56be594847de9f26f9 -SIG = f6ee5e13cfaa362c8971d5a4a879a7e36966525ccd86c5a48cba08d913ece1a79c4cd146b8e9c65125fbadf17bac1cabcde8fd17cfd68fa1f9c44ea61c08a405 - -SEED = 3884b8b79abfd3be6c13985eb859ab743f157cd9deb81b2fe97ea4d6173e46f5 -PUB = bd7fd9a8def13a542ed2f2fb048886885ba9b5ce59cb7019fb54667986eebc26 -MESSAGE = 12adafe30eaf2b9c7203ca5d44b97ffed4bf6517a49988e4e676c8e314adbdbe23d8f2d3e2b081a7024fa525ab5aae26e60057c101e8f368d3addb9376c4682c1f4224d7f149a8474bb9a8f663ef210e9572ce829da388d8aae72a467141adc153473be3653baaa64b5b1e2e30683f6f06dac2784d5bbf0d082aab47305ed8a8efd0886ce63a179315225d1e4d4ffcf1f24ac2f464cf5ed3a8b6d3998454f1c02cdbf0a444ee2b59ddbe0a174a0d937fa62865088ac647499957d281c6949803a5fbdfdd0dd9e91b6976861f3c5f2126f39aac935be09f4b9715bd4f0d5c55df73a6b9f2c0ad26ce49d822bf85bfa2346f3165b03859a71c3d2a7b86db6e9f2e5d7b169a910eeb7ef38fbdfbbec43a9a25f04bc3acfd3b0691542ab6de9db6f03058f9584024f9918edecd90fbb85735d6dcec5bd593ae63e2cc96553599a310f8f2009ba95371196b4d5b80e7559637f22926778be5e1ccef5126e2443fa939c2a53dddb04961eefd34e538cd8d7f0bec2bff1ef0d3a4bdd358317637f42d595538c1122251a94e963d1f81e7b9aeb164f95da9a4ed7529b845ebc961b27b5c19 -SIG = f4206fcd34502441d54a73323f33a5dbb4c98557319f21246f260ffbbe5844886db567f4b63c47943dbb78fc35657d7c04d4feb042ff8536f672925c319efb09 - -SEED = ecd519f287ad395052b0b30deac341d2a9df13d6567c891c813a0c9ca52e871e -PUB = 8ee94c588e0b343585fc6748fd1b54b5770c64e9937a56357a48d44ae2f51824 -MESSAGE = aa71be5f557e10c9fb5f091a3a274453947c07a0e25b26f9509224541dff76f4d96effd0d5a41d319bc9321a86667d55cf49432fb5c3e715388f3f106c9174b1610c8f3075d5931c290099385ce9249e235128e907c53390036fbf5da968f8d012336958de90c5e8e6b1016ad43fb57c8e288dafe14e90e64b63791e5cbe557e02df8ac9370642a71faf851075e5565f6f9a267f4f6b454ce4c5474810b804844dda38392939719793246aa47454b9b0e82e9803c09935d0027f3995cca9713069bb31027f7b2af12fe5feec7eeb06843d8296ec5682262a07dae747ed7bc821ec17018d899fd167b36a7e3773b427499d99dc583bbe4b429afa6a26593953f943e4673bdd0d2a844256131603cd0903256f334d4f8ec82de115b6ca5338c75c8baa44b4ba963c7c78510d8de9b2a5852f42f3463c685fb3a6da61a8e0892662d6a250fcaa6fef74d450fc457b9871d08bb5be3011294ac888fce215d535c3b1a43bb47efe3ad25da159191aed55195469c59093ffb24f65d60c4020bfbe647ff5db7ab8a01d5e487b0b1b64ef25da156db142e6ad872a4dc1ee9ba668465265379e -SIG = e8f51be73fc4e0235aa153a2e1b354e9c5d2d33a11ae0e333478de1d8e6c4456d2e250824c3246ca0e8d6ae3e16677a97344144108c13b959e1daf51cf0fe501 - -SEED = 193f3c630f0c855b529f34a44e944970f4a6972e6c3859359c2e0c8762ba9eaf -PUB = 3256f2c82e7c801201210140569faf18507e60338c2cc4118bb1ce605b0ebe61 -MESSAGE = 98623f651698085bde02762e8c3321f14da1619b5c3f7c1a568e8c26ff0c62fdcc412475912eb8e8c4b0d30918b8ffeef3509315e58da359cdc2f26bebfb5703953be16b8f3beb1e54a1abee0aebe24e64dbe873402e156f37dfc168eaf8a114ce08a6795d3f64f5151e9a8b8275cc7b49a6b8d8a66b6d4b7632ef80740dc1c1b0a38d1a28f7c1b29fa44541c1aad354d4590c231dae687a2a8fed09e8c1ebbfcc38f347bf06d94577e49ad139f710ed8bb1fd07663c0320846fbb455ab837ef964ae7d4eceea45fd7bd8d509f821e6eb027494efd8dd8e992b88698eec2ebc5e03025be789c18013f201f77aa2d34f5686460e43fb489e08776f98bcde2ceeb9d4fafdffe0375604371ec32f46b81fec474382908e9d250a0ba2780a7d6df407bd2b1eb126748d72511b9b069eb1cd44270f29fe84b9a717751831d04c2818e408f22789376c61c2ca45e32e788ead3a7536bf09da8af4703902f5516a020d89263e93701a2565eef1270418925f35a288e327bab628ac2f0248cfbca3482e265d1621cc343c31f65493f064bad0d7602460715fa486f29426346af53e333b75f5905 -SIG = b12510ac5f2f6d33360cddc67291d6c270fd9ee62dc086b38d932d26473fe9a24efbd4248867ea7e915a30c5bfb3b8b19aa01aa2febf0dac6cfd6638a2ba7e0c - -SEED = a88ad0048d38c44cebe735ea3802ca576e37121c7d4d760dfd88de1663064abb -PUB = 14dd8bb306803e5a758ed68ad21d07d88161d50f1c74713777da1209afbaea0b -MESSAGE = 2ce8bca26178913b1676e90ffefd945bc561982660e2a75d482ff30aaba1ba43f82d2e6b909ec10fc09789ff5cf32a5180b601ea80fadece6d7e7baeef481dc6979e2f658ae0f6d8e416b93298f7d34031bb76f716ed991a16d09a582e58ba4003ac17be8b4469e1a889b2fbb2289e98af1c6d5bbee77756713c0778b0dc446a1f6c48c4d40818ec799905f069bc95341657ca5d02b7a539a13a02cd0376a50e8343c0dc20346de5275b1dcd4ad7af725131ac75e954825d30eaa57a68bb98dfc41cafe5710556647b387d9b7fd4e47651e5138050798f6d40f4ee7120b58f74da94d73cacbfd393d1347388ee00b79b8dbfeb57814121bdda60c627dce147d4d568d79052e97b9a5f3eb5407cc46461a55e18a960d8094a5fea48b6937529cc4ec919cdbedf9185456dc00e8d98ad1537ee10a057f4eec4b81dc60392fc9188d3e561785965092e44317f2a48e36605fc583fc173b05db9dcbc7557d06487390fbbba77af3a014e1ac35139caa1c53a8d17347f178e1c54d0f52b40e91042c93e7e481d792e288fc27e4c2fcf111fe97d9e2337d2fc1c3098f06684a31d55ebf362c027 -SIG = 1341a148da4593c88ebc5a58821eef77f92186390ff633e76207084e7874ccf0eb1f9ec70a3a3f96b58934bcb061ff920124f7e580fa2b0b279583adf9232d0c - -SEED = 3f59d6a018f50a822117e5b473609e30cd64920ca1c2750dcb09eaab807a3eac -PUB = 457d0e59c11f348f3bfbdd3f327de78c0a7577c0aeef42d4c1e56700d108808b -MESSAGE = 7d103a6c6ba2d09087eef2254c1c903f067695a54c4515e4d13bc1fbfb54d6e7a167349c14809976da04a7e58d96b40aac3b2bdd14b9b50322bb11645f05e5e978bc7fbd02492ef88f87d668280fd708373207ff670fcda97df8485d5e46dc3bd04347f4d7527eab2718f7d93d132ba7758218894e75a7deabe693335ba0dc73bf26c288bfe9be8a736d75e5e0eaa7bbe8d0b77abdd5146e0fc9b30db9f07cf4bf36260a1f41410331f8b47c6b38338c6dc9e801ffe1d585f9b7fc31e9778bca3027c232c074cb18e5b72997005ffeee4bf37c8f874b1b246a6345415dacaca7075a60443ac3319236e23cf6b7544740807052114984b8d8f7e857dcc6faec8869cf96b997dfa9af9184ad623f1d90b8ca759b448eabfce18c17cfdf9a3e3312e63e5f084cea904c1c909913cc4b19d044a3720034973c7384949bd6f9ba9256f98cd394c566da83c31180109f16d10347b7e3e9dd6be3bd3c77ff1a7996a078dcf89dcdce2d1b615695f4cc9f8f4f2a08804641bca82662ce88faa53145b6a45955aec8cc2af81cccb5d7c64f9ece1c9983326484a1e5ece4ce36544d63735f7776f21a20 -SIG = d7425ea194a6715c452ec4f6d6c76e6dd374d3ca7ae7a11995d02b942d4a31870dd734c12fca89a8eb0213eb139c14a87a6a33e818603b2e313023fa58737d0e - -SEED = a1212b34dbca63b7093612d05dab7b4cc8f7b676a934ad01f659851b3bb44e4e -PUB = ba2fccea9a080591be71268d7e951f250dedc00416e5f3f908db6cc571254925 -MESSAGE = 07c37c46be3c68d05689577aa64a932b906446b29baf12f6174a6b42bbaefd1f1f373e0bccc473ddfcee1a7f21b96a6260ef0aa1f2d8b2959e71d12c953358a2774cc5e6f379a313e435ed69dfd6d4a59adee3cc7ec4bacbdbb3fee5430b73f6051a6096c60e9bc92cc8fa059fac2a93ef7007d64fbe50064964d5a0ad601175cd9caba453f9103b25485545d301f03c5f9f9478bdf9d414bf1dca3b1c1d9daa9971f9e617fbfaf5b02a7fbd5d4fb894c0975c54592b49a0fc85dd0853f30c51502d98fc1ab85a17cc58961aae9764570ba5cbdbc96dfceb8d11da53364b4025fe0b8ba8a353ad23686720169fe973432ffe291a4b11dedda0aac79a5e42620a64587d2059e787013b40ceec599208f66ed0ca6e1be9092ec27db216ee6dadfebc21705bc4a85aee577e57d239af586efeec22cf38d1cfb3cd74dd0d9a3381aa81e6a297e39b819137ad27d475e2bf54aa426dc29c4ca8176df343137a2d79d12ef9aa7be1cf6775e5d8a4430a85c33db61cd2f35187b4f6ea9ebdd753d1c4ef72471159ff07b77870906496249d4278e3f3ca6bcbf37a265b896539190f9a31f1e7b4b65cd1 -SIG = fa93ed6595bc958dc042ce1645167b79e8f6734c46f80f631fd5484908f5e51a22427ee686f564ff982f6ef4d2ca1f0ca5624910cdd63c11a3c2b16d40973c07 - -SEED = d9682086fe7dda30b87111060193d847566ab94cfd9c97ab6b43e7a8d3f79382 -PUB = 8b0b1372d88733ef7233f6379790d1e46e1e07e9d3fb8b0be252ed04c5fa163d -MESSAGE = e8814be124be3c63cc9adb03af493d442ff20d8b200b20cd249367f417f9a9d893fbbbe85a642be2701d1d1b3cd48a85cf58f159a197273143a578f42e8bcc8b6240f93271900538ffc187c0afc8dbcc492bcd679baaef3af5088434a94586f94b49970bba18f5ea0ebf0d27ee482aa83ad0dd0ee609df59d37f818b2c8d7c15f0f6f544dd4c7e7cb3a16724324f77d58948f8475a60d53e5bd510c17137c99e1cfa515af9bc85569d212a21190729f2817de8c46915e021df70ff6d60215f614fc21139904df3b292b749dc4dea02518b62d15862c92d2a4c996701cdecaed84ab628ee984fc111eecb59e48444efc0d456e2c852518441c3db7630ddd5156249a28730983838ae59ac4cc7110fd6de68101ea5b2ff69fd364e3c9448defefe175bcbe117cc11b4ff7549c33e1025b6b592048a8e31969e818dcc188bb19d7a2440a3baba4eb1b81c45679db46b31bcde7776757d9931ec2063fc6f1fcd761ecc57a7d030a85ea273ef1825b05092ab9645359a444ff7d166b575fac298308d9faa68463d1d0f7b7df8a51c6815d37159adc0b593224a818321d7219f09686cfc952259718dfc -SIG = 1793e497eb521ca74e35d14a63868cbe9499da2f21b4eb5260340fca3c1feca78dbe5b14ac10f3fa76fa2e71e4c91461aa75977e5e70792670ef7ff0e6a28708 - -SEED = b52b249a7aeae0fbd94ffcf9a9fde10de61c3f4cbda14b289fe01f82707334ca -PUB = 735163bfcfd54f9d352e1c2f3c0170c95c1842ccc7421623ae0496980cee791c -MESSAGE = 1d445e8ee36f6e1064ee1281e6b4a4cec50a91c2b667c8305d1e9a5f7b73a3445882581fb0c11e64f6ee92e811f9f2d6c59c6344be7691d116dda493cade51c0ce77372b61a7c4fbb633401333cbf71372ad2f044e992ac035f5879c053004f8223f237a24a409b7894f6ad518e046b8a84c3f4c6260e6169fd944d57fbcf9ba2775f2d60ed772c46ccd63c850b80d587c5208dfb1a25878c02dece3e602e9632fc3c2c79b25ab41034c6e26b869255357a686781dfe6e644beba9b627da1fcb5ec0be497cf188e1ef1af0601bf16b2911fd9ff34f0e97ac95a7fe2cf90ea6ced33ccb0ed1ef2d4160efb07c591a5cb16c70ca1694fb36f2ca19eba52be3d4ad895abcada4b36f0261d65f59e0cfd2a6148a8892ddbb45810db3bf4a9e26e92c15ea2618cfeeb462d8628f254f54d2af27113bab4f9a7d06791811942bdc32f845922d7b2ddba959140928f8c28d98b44e1d19b97fd39cc0f9a5236d349fc835ac492192462e40ac629bebffd2eba72d2788b244bb777ad0f7b7f96f23412399fc1d87a1d087ba089027eabbc05edafee43379e893291331b460bfa7332e0842ec2573393de95306 -SIG = 6f48a9f7f0fa192b66d12175a333612303e180b9fab18edabebcdf6674fdfcc53607089bf980ce35894c2f9babdc4438667ab3297a6248ec0269faa99c724807 - -SEED = 782a93efe0ef06cb2534330efd0e9684e9969b5258123e490239bf24bf9f6523 -PUB = 942fa1406ee2683e29377e49f7ba757cf50ef0723707d4403d2862257045de87 -MESSAGE = 46a4e319a670ac993994a53300c3f79144c2f7fec1116eeeb3621c76ac35da79dbff6e189ca9dbfc9abbda054847b2971b02facebbe926d469eb0a860389ac744162bf6fb13b42cb9bb8c9d72607138e7800121ee0cd633ed535c7ae5f4060bbdd271c9d110abff5e060ea6ee83890b1e92a9256d7b2ba982a3114bb6deffee2696f0a2f9c21aaa5b2defa11aab7076de6e57e86f284bb67f5a49ee685921032c95b74e7e3eac723f175af082c858e0dfa01728c38fbbb4c83581f81ace6c63c6bdaac5620eb9a568e7ebb7b72b3d1a164ef524e7b9f00799ab086715976c14d0df65f7b96bf9ebcda7feeef113422001a03a7633df5e49939a121db899d9b8ac2db4fad0c30cf0b8bdbc9e9802a797c8238e46511ff24068cadcff2448cc0bff92769223348d45d6b6f2c8f1593388c0bbbf44b6ddb50b98cd7f09c730f7de4d008156cb3cde0cab3ad0a58a83954e234a0a8a04b573c9a8e9b929ed38b8b228bf55a3c6e2c6b51f682652fbb708e74640e3313e17b4694d7fdf0111f90608c1b5af422dcdecad9ddb7f50d1bf5bc6378ccaffc3201e6c787b48c443ba240d9d50ff6c0e9df7f1a5b -SIG = 93e7405a4044510166c8ac264ce3b5ba6665d68bad458712dc93c2c390568d7402ef7d57f549b8a1042f7f69a679aa855f34f801d57d79895deb8deadb352308 - -SEED = 6fe7bcf7a684423de1076fd76da783423373b381329efd6157424ec4b2655a94 -PUB = 7740e91afe45324f8bb990ca2a341279ddaf232c3bb415f178b6092fba195fec -MESSAGE = 0baf0ad440612b4c5a136c3a42be1ca2b7c319862a44a9fd50c4ee73541c5e6457efa81825b6dd4a72194a2968688bd49e5a8f4c04dbafc2e7884c0c70c208d4e954cd1675da8e74c65c497cf9dc69424965bdcba5de52936f925f62e201f99505d3777beb3c2e08b2ec9a873e5a9c21fb4a2f3e861f3cf4d6b5dcd1c88bcd9163539ac62cd0659f4ef232c2ce57fc77f90285eb350169edc6a806ff50f61c7e0beeebecec63bfc9d3983f5bb4b261c746471fcbf2892c6108970b68db5e43c4504ddae2d0ffffa28b6759ae1128e16f66d492ad61e3722c960f88692be81a9f412890ffa346e702c867dfa259703b73f525074f3227c49cec1b645a103bd4471f33f9f1bac327d7917861d0ad91abee60222ea2a3c8cac052ae9a2cbd90855d733d5319133f9541bd0b61f0995268351e2863c1ca2ca51e3c976383f5c4c11ff410036fd51d5ac56b023ce9029c620f22557019ad9b4264ed4d71b434f4a4d17a7d5769fa1e14a69f7ae419ccf5947f8c7682697116c2405f5a1959c54b48f0872f596ed45964488ddec12bdb636d0b349e749eb66092ff4511fba59b5962cb93cc85515cc86ab0c6b2 -SIG = 9914cc50fef0935efb89b3d64e3c1c3412aed659b90166222c0d13ec1ce3a68ae6281b7efd9d4ec64b82e73e14479f03fbac8fa3abdb41ea4215c4a4d4949d09 - -SEED = dda48a0d15a29eba9a76305d360e466e72d8040efe2e89c04b6461315a9b8bf4 -PUB = 4f5cc36a809416b58e15d24cc57968cb573b76ad90887a8ef36cde7eca400fcc -MESSAGE = f5ac19b81f2111a0db0ae30d1513ed343e7f57f7f77d65b8ac7ce3a601174baed9bfa136035976f516d5a870f45db1919f1eb1cbecbe88ec32d191e9248821a7e7681fe3abec11584bdb33de1b4ca94891eb66dcb8539ac41163736ccfd69abb83814dd38cd60381318728052a25cb665471058650ccc75756dbee688ab826ecad4ad5a7db57e8f65f1b64abff82dd53334b797ac40228dd817f239d3ee804a19aeac8cfe33eb657ec9ce923d6b388914cfba2e72bfc2bc3d6f985c0d97534db958eede57b16491ffb755c1a58d78ab377faec0d311818e899260e3ebd1ccd29246fa82d0b76622b2c4bc52f549fee72a30f554f331f36d2a74d999ec10a08294f002b4361e590279c2fb1bda4312ccb24d75282ce7c061a0ca5520c74f6f6333b18c4b541cb6c51e01575ba80512ffa7ce0accd22d14027c53aba1f7437835f1114d68e3acf3ff8de94c8e4ef6d3ab312c91d02970157508f54a5816f467a214e9b1284300289e65f365a610a8ea284666cfe5518e435bccd21627501c725f0b8eb5725e0e06e0cef5db201b48ec91ebf878dd57ce8dac7334848a1bc82c18b065955e4f59be3398594dc -SIG = ce71bc82d531d0f93b57bfdc2f7316cf404ee09af88f33bf806c7cad6b8ffa366236ba74e75c15096ddaa6e3a62a8f5eb1c8c3f6b6c94a6a349fc7c0cbfb190d - -SEED = ec57b941adf3ca13e77a780577cfd0df5b49edc85351052da34e99f8a9bf3208 -PUB = 2859c071978a04b7f5407b6d22401a78efd0394bb966b9a04da6b5ef819de3fa -MESSAGE = d2bcbd1bc361ab32c66d72fd48a8e227dc6b8d6b150848ba715ff47dd35c8e49381bb4e2933f42cd26b75b14d9c0039282b62b8556aaa11cd691e828382be306889fc9205137b169d3bf17b7f37693fce286039f03809d7d9d98c8fde46f1101942a279c516706f50191a9112f6a24630e1a26c321e46c9ccc85b6ef942f353a642b9e7ef998c0fce2d3a75b999eeb77f31f9b0813a97e3014c3a86e2558734621a3066dae35845031e35665f1922907dbb739786a8b7658ab60276f2d921d1a51230fc74d19e80184a4f10e9e834abc9a36c429726bc055dc8c063f0eca9c61a8a970bd4bb5f424ee4d04bfc295e3bb1f34becbd9920fe2e77fcf36763f32fc9cfd5e465979c167cabf5a1244b491fc06b8946419046ba516c5b233c414ddefb6da04f2e13daff7a9a0c02a518ede57ad9521de64eddf6f49a9670f632d3f7d42425207d053604fe39d13b9f52c8bc292b0076ea42a560056df25de51ad35881d08543224d7fa5d70b8603ef23ce06339d6cd09e22a95749e50dfbd3b8ad69fd30496b984d1c0a199c8594805f38ba44631a2c59eadc6554d19f9bc98366dfdec2a121d0e4814d2cd3f5871 -SIG = 118e1462126b45b8c6803523755c56dfc4e123e4acbb66ba0ba6fe3e053da4119f5719295e0c82ac64d7c5cb1ac898df263ddfd360f3008d91018b26f6a1730a - -SEED = cbfd91d7695c1f270f69246ab3df90edb21401101ca7f8f26c6d00f4dcb7233e -PUB = 513879cf79d2f46df4b85a5c0949eb2116abf981735a303164cbd85adf20b752 -MESSAGE = 264a933f7d0aecbac13eef644b0b53dd53a1280904100dbc1ab87b51148998f9da0b3a0a6337f5e3486c2b7e548d211259397aaa194ee4695bf98c2d5f4487699f7397e5d3a7e6d5f628fbd05497c556a50a4d05e2b712cdbc351068e42af19538901b8825310e343e1a17a1867dde0eb47ddab456d316f3521554937bf808ae4e4bc1c3c5b4756e4a165ad9e8827f5316f748cac6998ed2d2104f268407c135e62f26a922460eab6d851639a00e5f08b34765ea0244f475bbfeac183e3b5bd1aab798522798a08ec6bf2257d4692f5b03cdd0a2133de970603e3251475aad8d934af6b2bfc7a650b91bdec143f8ad254cfa506bbff28a03beb659ef5e5ddffe76e23230c4ccd46310b37dd91fa6aa68167f62a55c8a69f9ed1ec6cdb144dd81ab0bcbd62643420bcae67869f64c0b169f3cdf3c905895b7d35b6fafda25ccf23c3d10de32e7f271e300d39597da8f843722ef08364a5f7a105b9655172df7c82d7374f98264c9cdccb496f2e10fd8262fb1a9a9965b0b841ac0d0e9c1a3d9493ea7aa600205b8f900be0d7abb4d98a06583d2295c276318be28d421982dedd5bfc33b8865d94ef747d626af99 -SIG = f336137dfe6f42a6669b55f74b80b3035a040367f90656fcef0a644c52272ddc39273cd7726010ebcd8a30a05201ab70b8ff97d0288a2cb94cbc49020647390b - -SEED = 51a4197ab7686f82f6003a0c32f39d0f2e47555f4e9f8deee75bcb1bd1ef69e5 -PUB = 06386df86b61f1f8f4dc45b73edaa841920968bbd131cc5ca1c5294eeed5c8ba -MESSAGE = 2aedb7e82f1fe4ce469ada48345d006d1b3bff40eb21867f51fce965640c409ec13ad4d52f891bd79066d6b4d944ca868d8986d242b57eccc4c4a488291b159c8de4392be4b86febaa75eac5d22d3c4f8d6bef79adb9b92b4914d5ea07c7f021e2c29f58d07be8a084100bc152d51ca897d7c131644d0895322e9440a8339e1aa390a7f4fcb51ddfb6df48aaf5676337d87ddd85b1d925e1a9c29fe0818f514ef72f747a674946476907a7ca99e9db8d209641057a7f44a317b90974bc86f9617a968a76a6b8387cf5853e608190c1a79f1e1d686e0de22db6cd9aeb8532c5c85cc90b5a018579f28e502a770a4ec675263d0dd781b4fa53c9dbf8098d57b33ae2afbaeb3e68266ad9aab7174ba68c6479883992670ccf3e5ac6a17e65e31e1fdc85e269c80935ef574f20d239568486e7d94a4f724ab7006098b24f3f61587691435c7f29ce4e5ca71b2b1874556433a358c8c5ef3c880843030c2d13d51b78c9bf1a8824e62e111844396f5af2e25c3126ef3626e26efafacf99830aa41212332f378a167233a0b42213afe36d83dc4582a79693b9d571a57712a08b8566d361ac902647afc886603e24283efb -SIG = 2c072969ff4719212a121938b506c602995b4d02a22e6198d6e87dd6ae076225ac70bb25ef8c0ee81eb6fe953df6b1815949e8ed0506cb012e873cd36cd09b0a - -SEED = b1119c36118b7a065a195bfb8b79a5c287e09bd287c2daac5e6b01164c5d737f -PUB = 88f218ecba99e770ed214a8d01a92a10400acaf1f6eed420067e136ee2c0c670 -MESSAGE = 8816b1eb206d5f6dcc2e4cc391d23209006de935e318152e93fc8c2cf08e26432bad9adb3203d898df0a2e7f1f83dc2f3ed3205bec8efcfd31adc1aca5755db9bd4efe54cc17073077de4a3fdd11996e84b6a052f034b41099226c9c272eae12528f16581b91b812850c207144dbff3e850cca848ec2b1dd164744d7b59337d7e3efef008162e680bd4a0899ced60b171f8cbeb48c5158df6cbfdb26240881bd58ebb8b6a079587279679cb5ad82f371b53c8013804c35596c887e436d23926f994e09d98fbb8ce2704174ef38b68262a7f1a712da0ef0dec639606814b3bdcaf253ff31c48e8a752c111bd7101031cc3d38efb0c9c7f19c59081584a0e015ee7c75b10a4c51ff543a30e52d5f94d8188c6b08e9df1e84a4e2c807170ac124a771b99465a0d38b1f1c6330403c82543582c5bb61b220de1b9e0ef69bdae26023181ba4cc077a5f0d425732ace132ae0c6ff0bb18baea83e8877afbe650fe0bd02093f00a7b5365728dcb66fbb881f592945058a5b350665af91c557a547250ad295e68b4fb72457cfb9d5ea1a7b2a39c9ab7d7ace0af5d51669cb6c2c4c07b2256d10e5ffc6b97c660006313c4eb8d -SIG = 24ec1e54fc7e722d37551d02cf135d33f5d3ff535773e02991ee85ffd3aa29997f9c464470197fee81dce110609f870b27c18dfbcfd9320548525e93148e2205 - -SEED = cbb587514e0a34ffc34cbc04f28c9b4f6465f1eb225cca19b864876daef37d7f -PUB = 6b705d4677d2d849b6744b1ebed167dbcbf645924b1ff2e6360794bdd0e09788 -MESSAGE = bdf7d17c706796efd3489559b527b1c0584b9022c9cbda3aac5146da340d9cea69f916037cd21b3eb1104348880fd5c5b7c65ff820f7499346016951cb715d8df2b41c88cd3c66105458b7b590c21c1ae2f6ea9ddea7470f25e02027d171e0e574a2bb21642f8f9da508e21d8e7335b5ace5935299407bd1b01bdd1423133ef045234e701f55549434ade94a60be1e1406ca5c758c36799ce1703084476e484fb1740530aee84266d07adfb4cc689f3265133a59cdf992fbb9a4b12defbe241ddbf65d12b2fbddfc05af0fb8de42080775bad29c6b0459841cbb648a9a95e48d6e36ac514480a3deb4b36554d8da620808ae9d47329710d20aaa6e5d7f547d81ad30f84c0e3d239cde5b169d9ddf294832d67a8060ba329c4ef39be94ac46434dd2185931d1231f9b6df878a5af0831e0e9d8a08d08069ded6a961ef7f39fad501ffd17d6d9b7c654653c1f58fcee1a6cd803d2aef166c78ef5514a3276d6998dc7c09a3fa982e427c785aa6a9e256f7ba72d5a6ba33eb46f1f9fe9be2bfc14109f64773c00c063b4d5cb4f4f8a0beca92a9a016c4f540feea9c3a31e313bbcbc2ff5eca9967857f5f8a909a29d7f20d -SIG = 1274d6f356eb641472b6b9e5b3ce65d2654e6cb87d3a83fb49d0f7da9c44be2b532604465f6089d680d2d94b0edd2b6b2b805c5e84c379efc059673d31007a09 - -SEED = 8bde3ff61a16995ab9d539f6053219081bcaea1d458ec33684fc1c01fb565bfa -PUB = cd9d782a356e847b7a04c885a9b0907cc33ba97ad5390d4ea5fee5eb198d08b3 -MESSAGE = a1f40ec5807e7a27069a43b1aebff583ef037028c02c859525eb8fa4c3ba95a901ff3aed78c4f87752fb795522f5bf715be7e3defac10fcf17e3fa5c54b20089a472333327252ec945718fb455e3f27ccfdef823d12d406e62a4aeba3cb9d1c61b2b17e49e200a8418f935f26eeb57602c7aa3b3a24f7e6238d3e08d2d609f2eada0332bc8cb12916cb03b0d4f9cd602002586d3e4cc7e0e0381c045ad2e1ee28298ae7fcf0c10f212808565296f158d2c32e8cb28156581af52bfc3470c3c9582138d2255e8426d648ca237d7aad2856f171638558241d8ae3f62ba92db596568edee3ec0ef370f83626aa0445af08f967863660e8fba5a41c8e8ede1c960514a14687a4a81e776ae0e8e777fb0f250d51a83b55f8c1ffdd78df3bdc97ff177afeca046c72d72af924ad0d0ab2bfc11b7f4abded51c3987a8bb94d640c8710e5fc9a4190e8a008363d7419cea17c40dea20ea5156029f3debf05241918f54af5039e2c4cf2ca2e139f60e45cc65595cdf54a67d92b6ac66fc0c5a290495ca57b07ef5750d05f57d87d0c228f7e4e15ad0ba0178730f951c697583481c66cbfcd48032544aa8d50908304bd81940308706 -SIG = 7464df0b67eb90b4b73ff082ad0d60ebfe0660dae97069b52c3727223bf70e29e48711a2bbb438f5f8d8a33bb9c48fe7b628fa8a542ff0b5ae36269d4007a505 - -SEED = da59bbc523404f07646add7908294977e46645bc8a38bad2809641a23de3b15a -PUB = b22c0f21aa1c2d45f4b2e56cc9b5e02f9e31a2eaa367ecb482f874cbd8e9fe34 -MESSAGE = 097106c3624d774dde2551e0c27e19504e6518cc86369ab26ff810969e7de24abc68b4b53f11d945d49ef078eb4f6ba6bf257ff7b608afdcb30a5c59a756fd77a6c1247f6f2a41100d99fc5206af3bcc6de1d3e4968e28fba0123f6045a1b54d693a42bdfa071b2b914b3c3c0c29b2593d07e8bdc86ca42ac555b7dcd9439df9fbd4bbec730d6327bfae4fc41ed498b4f04a0eb14cee608283aaa6e6aa46676bc88aed5d9939037aad4915661af94bb5f6e653a2cac123287073270e0b13fda1dd4871af6a92f992f539df881712fefb038540d41191123b6b3b4b6ff87ffc929a6be53c6cef02f48f2f0cf2fe64a45fd66025cc2d7ee55ebe2316c000855661165e2a5ba41afc2097957b6fe4c55221204b6fc1f317dd3ba13cac39924026bdb66be4542268875631d277f210107a33767f6d9596e25742d7a90ea791ea4bc9ee84a67fd328b80f791ede96d89663e937f0b755baa9d52bda210cee1db339ff1d3c4b000b653b9bde338049af84364e2177f80dd51e2a1672ee555d6317589f6f1d5abe6c2877358bf94b0b808ff857363fbfbe32e97337e4b8a8c221a9e75962a8dc9b5a3d7ca5f9c9b61c73c1469a72bd -SIG = 1472459cbbae2cf21ce44a15bae9fc85dca40b8182da7d52cbf56ed538d18e03477c140a3ddd0efba43c96aa92f5f9bcdf3481286ce762a7e2bd1e779ba99b0d - -SEED = 40ea82da41fd15b06ffeb99cd616dc6bc8c1b21477ea239466088e2849bf1016 -PUB = 5910e580bf412c31a87451d9ddf32b3ab713f9e4a22c590c641c14a5dfbbe0d7 -MESSAGE = a06c4e02b83ab7e191ad818cb8187b52a8da004fe838db333c4e02548db6bdf791444642e57fdbc8594e59d7023280bbae82986f399805434bb072c8a27a2dcd5aa62f065bc58b0621fcd365f6cdbf4d57d577d91150301fa48f182f87e8dca7ce45a7d64845ff434d1bab0534ccc83aa0974e88b38fc2508cefcbbc82135b73b384c80eccb8a09e2873cc07129021d81ce129a9df65e613410af950197dbf9afc28edc4e65c3e84da40d2ef841b886bc44719a5d59db2c6dc776401c895e2b3c83783d7817bba68baff59470d6015bba8d975f0eb712f3b8902912805523aa71c90499de689d31ae44e210b8446f2484727cc491b92a8e8b199d628e1df79a28c561e5a7d882e30787d08fb2d5196ba61196309b3bf0c5824a3548c700003fe9913befe12223150012685e90720e9ec6bc4db607425aec531c4fa36086d3b9be391a3f04635a8077a447a16a6fd89afbb9a72d0d355cb0b22d562f43f59d4e37128b3e2d906c8ae23d0aa599c70d3778a076c1a39728f1d6937bd48b978740850566138d34852b63075e89a8e2280edba6f4ee8f61511e9b768e95c78d197b693b109e88818b486a9dfdb74b4c5550acdfbd5 -SIG = d298fcc9a8ecb76a98d4a71dfb01d276ab2d9670a95bab34cf1d8364516d1ebdb23903460215307125afd09c758e981a452da95c0ac2c0b958c6917e6874190d - -SEED = 28bb81a17d4584754d52818cd0f1f21baa777e695844a15122ac05344dddc027 -PUB = d5f61d519944d13b84bfa7cd67cb0bea4ef2281efa461f22ade4ba882d11b252 -MESSAGE = 92e84c7a55b0bea03e17cfb65f7085ce3f445b1542bae997de5f092a24ff243380286d137091a598f35e6dae1a1c648f5a494c819dfb240652ff908381f32d70bc513100aca16fe7220295b1c71835f16d9310a9d27a04a980ace297d5af3f7cb7c78b24997ccb41f54ecbab507eb73ea6a3ed470e49590509f5d1e6032a2605db87f4a9b9ec91602583f14e2fe1bdb900ecb8971196b55c0d433489f26be9ca157cbd56572887ba859f39674a8e0ca08f2dbb0f27073551d0b1990685178b1ae9e7885499143d9d72c8571d11e0d85bf58df94e2a74d9b6846557f9125ca0944ce5718d2cbae1672ba02b847c17a6f6b445634d2f0175a75cf6883c62e5b521c57141f218b2fb0994b372a716c4a217434beab75740b8e91c622187d03c85da001e00247312a465225f5d6af232064a427d3018700ded774b9026777a5275fc04754606c86600297bf7b71aaff8b9a746677a3662f3750e81b50166f6237000051ffa15868defdf090057722ae229964a4ea085e0dbc04ce1997722c5bb65d2b47ecb746fd83a9f6a69c81545a9b502f5e76d3130c5afcb1c9af99d918740837ce89d7cd213fef2fd062ce8850f69659e4ad327 -SIG = 9ce45a07dbd28d3f6f1b35630a3fd56f1d548f84ffb1c6ae64b21498ae38e596916e77f79905e609fb1ae0da36138a80f242122167068092cc605796c5669e06 - -SEED = 24bfd4fc45d5093585678101cf563ab8011fd6430de155f2a425f0633ee3b7cd -PUB = 9cf5c5fc0ccfaeb28a08ba67707b18dc84ea0698ffbdbc169a09c28123e6c2ac -MESSAGE = ba54128f45be2001dbb060d5dcc47144997415d4294f6eba8dceba4f6cf2234683c4265f88032205296e9b27d68506232d57b688407648f87ceb342052bde9d0065542ff1715c942027e67482af4bc278ff71966fb3f62a2a5323cb1b4bae1e7b8fedcbc73ea05b4076421b0b4fae8bc3337416a17fe124e7ee465ebb38d8792306429d8279a1bd54c37bee8f9c85eebe3afd1f64489d4e53ac5f50657bb6ffb97120744b75d47c6226d5a9c9c264ee3e6a6ded05062ca1006669118454550010919c2633cf086950345e514af3843148e5c64352e69037dfe60d4a8eab3eb8cb54bd39af2f353d5ded2e2bc8b11c09f612e128c6efa41f6eb2c958087be34c6335a43005d11a9d3b5a529c2d1b0642f77afdd8c6b1d6fb2a9dcb65f42f4eca8ea9a054058be8613667610e3eed8d1df0739eca171954117989d1b12189ab57904aa960b0ca85541746385efa985be9d97b5a9029989a9c71498dfabdb813681f57e276b64db491b8f082a885145469a531b7f9f04ca0a2c2f8dff20ccb99c2861f54e5eafa962cc53eaf18d3d5e50d337af485f19975f05930700a8a7253f11f184130d0aee70969d96fe08f216951d9dced52388 -SIG = dc935b60fde44359af8f50ed7f919f483ce3f24e2320c55ba92f3e7617c19bfb54701903ff183b42cbedfef0875f42b12875d36a0aeec73ffd09509d92b28b0d - -SEED = 2fc2f9b2050ad7d139273e93e2a0451c7b5cce57599aa6b08d3edc5bb07590c8 -PUB = ffe5a17880d718cc7988c2fd9825b03b93450ac1deb8fbd1f1bf3b8f87805954 -MESSAGE = dc1297990cc027d56d1fee265c09bcf207a9583e6bab8d32478228e0bc305b9818154c338ceec34b04c4ade7ac61dcb09bfac8ade00d1f29de317060b8a4daf1987de409ca2c3fe4380088073ccf485e9a69516b5bbb4130f20be69b2dd6a9b465159cca1ac88b328b80c51b66af7f4c50f6228772f28734693ce4805a4163dff14b4d039811ee3fce65935444a6ea9a72d78b915c9c3b766c60b7e0329e43c9c57ede94b91525ce5a075a7297219772ef3c029649b586a95a73bbdf16d8fc20368de4ba44de1064be5826b376be31a86ca478a52efb98f1fa333157719bd6e0da80ed68d0efeafee5a13bcc3b457525258f1f7e031f7b403a461506927b1e6c7d4a0c8d84b5f3dd0eb8bdb13edc2b514a81d088eb077a52c8a831861feee8110e41a325dce206b2d67d25f90ef57e0fde709f3e5a39c04eed31e57c193b283e2da7279ee3f1eed482b3bbcd373902c1df811ac33e1de06429e8f8443f602019650bdc2ee8d7f650036a7a22b8fd88517511229c729a3269b3a3e8fc72b01b5a4b3e33f5272f3ad21629d08b1f717935e9e104add2f0f2033432bec82e2121d98c9c1a58e0daba25536a1be8e5088347f4a14e48d8e3 -SIG = 7aff162a3c0d28dff41715a974af07ecac2132fc18bc43a198fe664659050da19ae22758d52c9cbb94f1358bb02610a8a351c2116279e7245adf69675dfd360a - -SEED = 8afe33a0c08aa3487a97df9f01f05b23277df0bb7e4ce39522aec3d17816e467 -PUB = d004370e6edc34b3e8818667216f5b226b0ff75a58484c8616e1a866444cab57 -MESSAGE = 86fb741f1b9708929195031aa1645fb709a8ae323fff85e5470194452e11b7b1279194b5e2427ce23e1d749c3ddf910b017e4f2dff86dbe482c91bd994e8493f2e6824bba3bc7d7a845f217ae9760b3cd00226d9ff2616d452751a90c3d0d3c36d4ab4b2520f67288171bd3a34b2eacae8d44c1e153dda1f90bcd3595dad37713b8d340156ea90a4e135951ba7169ac175578b81e97a541ab9bfb76328798d7d631c14df2ad613e9c6e1147a0e84062ddba035859d46bade5fadd9b32b43dad483c6b8023b32391e51ef1520c68c6191326c494423080c623dc4ad0aa074748d826c29644c38986a77002f0cab9068e6c9ec73cc2e0c584b80e0bc375721f7a8fc35317a5e240e8c66092fb6305b012c70e17aeaff13386d5e28d06430ca585b0c85b274e7fcbb63e3423a982579e5a64a0262c41908e55dbe43dac1e5cc1bb7298be428720a12e3b072559ec2675d457aaf8f13252e28aad63c1513f5f239564d363c8505ffa4e50f6648c1cb82bba852bff0acb030cbe73f059dd87bbd7318c5586e708618a4f4c9f3bec3f4f07c609eebb24ba878c6bf1e4f2d0fd1450ab94e31755217786fb15182760ffbe5a267cbe998a4ff90a2 -SIG = 63a8aeac025f2dde9a73286e56c2d62dcb79a241ba0b2e2dbaca8752ed2fc8cc7ab8e6600b67645fb5e818a4e82c29180a6b2c3f58d099cb635ce52bdc157004 - -SEED = 6dc7ccf329378e8131b6defcd89370301068946336b0b762ac5ea51487dbd39e -PUB = 04e90d275e79df5f2b6ef4a31505aac05a69459baf2c581b3ce3db29f0f1fc14 -MESSAGE = 20cebbe98401ac8934c3e65a5738cb0ec0cdc75fdb09dc96312894b187c0a46d2c38f4855be3eeccdcdcc56d926a8c08ce6e748e2a858f53532e7e5fc5f7014c8c6f86310cc26efef30ae525a5157940ab535ed8e403112b08e35e2bb3dd91a9ae8f772d2aff37d8c40d2b5cc887a6f15050a0f5bcf0360c3a9d12d5918655edc3c13c86ba6f4a2fa3bfcd405ed38f871cf7dff0f75daf2c321084ee9fa81211adb105b25c2288f0f2f7f93ef656b2de190122e7a4bfd4a1bd9893a8485b509ff0bc46cc961051c1db5a12490c7e741922ccc0a665496470276f69c7b77098c1e670af6b9f851252996875eb8035a817fa9be07f2be0bbb12025e0565414c817e9421ac700373893862f24cb165f9a271a64fd2305c6672c46767f8f075be5d2d4079bfadc3956288b0215605311b5bf32f0037b7c5ad502013e82ae3419d9d8f39c545b5888f47106c94d5fd6084d26034a99f5dcbf26a84eb4ee149c62a0410d8c707b1a9b071f74ed23932585072ce6cbd33d4d54ee917916f5dfc64d26a498018438b455739345dd60ae0f4750625915cc829ab6822d6f05f6d2bda0a7bf5601e9a2ed6de960371d17e6f43709c9678ca743adfbdb45 -SIG = 04509db003a1a6ed3fbcec21ac44ec10cc06d79f2714960882170316275df80423a1c1a112d881fc24d2812526079058aa8b608bfc6b5e57632240c636d6eb00 - -SEED = ccae07d2a021fe3e6ee23836a711b97b04e0a441f169607572731cb08c269488 -PUB = a32265e5328a4f49cf06b467a98b9f9d5b997b85dfb7523ca6a0a1d627d32891 -MESSAGE = a4bf8297d0dc5e4c92bd00ad5b9c09b1238b503d619116ef74260378349a9282b41f3f4676a6215e3ce6d02238480a96043b2942b3feed12620b1fa97f7703b3eb683c1601bd2f51825c450df4fd1f33b0bf9c23c03223789e06e24cf136d3b557403a66981f4b777dcfe890d2ba96da4a4742aeeddd6a611d05fc215694a5d89a5de6760b1d9415155044c049cb02291a1514faa2e77d2ae33d44585bdac6365bf481d9c97833937eab636ed65742a0d5973b24d54089b2daf084d5414765105e4eca14aaadd1053338a8470505232e4ac633345c5cdee1e4653d1d93583af11854b1d9b65fc20281838c56df1148f35ccf9bfe2f3f80ab73f5b791cbed2d920644cf0316f0cb5d3662b9120647da56afbeb47a952953bc1a37de857e4b39fd92b632b85159f46cd05b6abc2338d4632d48e9a178860de8f65d9bc23f24507b7c5629e0bdaac067c476c9c3941d86f788944d744852a61da716f95f3b04f0783a562941bcdda439590fd186b2a8ebf19a5a7e4f4a3aaab7a87a434524fbc9799c9931eb8ce4e34e99b608cac94ab7e74495668df136185f487d9fbcb6605ad725345403ec57f3f6db364a87f38fea4b4c271552e9f2e4a1be -SIG = 0eec754105447f97d4a9cd246c7eede3fd069018f0d01a41dfabca3e90a741835ea4a9d682342267b250fc1c8c547c89632d9f689af536c7929004ded0d96f09 - -SEED = db5d5f41fddd6768709747ab8239bb4f42a31d34b4fa88824d94bf78d3149264 -PUB = 03858ce6b2d24079eead66ca0dfe772ecda9af4d46bc9b5edfdc286b95fe9716 -MESSAGE = 67ee03de45c3e7030db5246ee5b51bf298bba3e4d0934937fc12d9a629604c53c070e30d611999a9cddaf2d9acda6a9f67202b352369d48260eebce0e78e4d5ae54f677521f84a7be0017fab278b2b57275efc5fa57c617186fc1ba49edfbd3308634878d864f2da1583ca8d56ce9fae77c462039abc32d0539c0a60b7bbba5029e9329d275683d9c4ce77d0b908ade98b0e32b4420d9aee2cc10e4be922f9572582dd8967141c1d402e215f20aee0a890e2368e406dea11bd11177f2e038aa2f1a0dff51a128d955d5e5f8d5d0009aaa82440a96864d6c697f910d1df230f467f0e02a2e02bf9e45da95f255410cc5aab8d85f449a5de99aabd44fd763ec14629f3dbab1a247bffb7174648e43b9fb1eb0df5e4109b7a88e05512b20865bad39f9ea79d52f5188e7ca5194405bfb1a09727617f3f6c88192008edbc0c6585dbf261f149dffb593d42716e5a5777f5462beeb1e9a56a2c76e6cb735117cc1183a38d1e00b303d174aa9cf5c731b2c70edd79cc5dc96f4018f1d71d7198bbb7d134cd2ff8c15f9a04280db26a8fa9997eb86b133c022eda15d8ad5e77cc9f62615960bac2f9bbc3ebbd198f72c572b97156fa7fa229a98014e170 -SIG = 5b3d0da7102355486be4d69cfd65886c9d9c8738b293cafb23b2104bfdac8d7d01298eeb18fde3ded6491d41b419cc663752c4e67dbe8986833d20e4ef34180b - -SEED = 7f048dfcc2650cda59491d4ce2b2533aecc89cc4b336885194b7ad917db5cd14 -PUB = 08001b5d40958bcb270beea9baba3387e3a4b900fc42275657c6c691a2e264f2 -MESSAGE = 917519cdb33519680bcae04faa790771ce7d1397c345f1b03dd7625776f3f195809932618b1c64acd93ad000ead09654a33d14f748b46b67aae0ff12df3cc163280f47cedc16a8579034e49884296772ecbdbb71ca29c166233533c8de54012b412ca13cc258f7c5465d83422f524e4c05f806313478319fd143cf5088e69837697d3615d80a7fa7e7443fca65e753ac1b11d8eff3476636ae02d7a20f4b2388dad684002f5ce957caddd2053d0ed533132a81ca19bb080bd43be932028cb5f6b964f008b5b1c1c5993bc9b5485b22bbef701f0a26a3e675ea31122bbae91d864b54d895afdc79ca58d4fe449213353b149f3143b5144d747c5b4697479ae68528485384044aa2c99ba4b17b184e94982269bde2de0b17705d0bfc46d6906a90edefe89195de6bb8f3fb6a374186c7cd086d13d1b3525a3994dc8020e1a00554ac8a82d6047c5bff5e7f12450f4865da161e1a021fd9be8bd33a32bb54a4ddf874512e74b5cfd3fc3cd9ac11edd878433668e3fcc782b97b6d905adb0ebec42c9254ac90f35822c00f97ff3f0c7c39ed3c7cb3920f5608bb45838bb242a52a8637d7cecdcf489fa183b45451c6c9fcbbbf914f5f7e6b223bcb4675 -SIG = 583370971d24652ad213c42615911938fa9aa3d9b7196940e6eb08151200c7b6729d1eff8f4f0904074dab3ddda6af1e4e562b7d6220c1a562683beab268f80e - -SEED = 9feb3df88c494a99849c6fca194201477a2fa7564e29fb06cb44c1154e8cea3a -PUB = c35628ca6ee28ec1c239ddc5bba2a9e09e4846816b143c74dfa2aec1f62551b6 -MESSAGE = 95fb7581bd25ffd442c3ae38a19bea7349c7b7683ba6767e148f0afc15373f67c16d471781202e6da8054ed7fb9ee204cc0f63c210a670a5f9ced4294588196330d31b8e8392bef6b48fe3c92078fae11284b4c3ba20d937e2719de7bf67c00669ad23e61384ebdf8c6e60735428c084fe217fdb4709ccb6083fc0ae4a05273eef739023d34bb73f662dacdf110b6dbd3e74fc1491e8c96596075fae5c36aabe2a0a53052bf77c4462438063aa7bc0c50ab920c9eb288671560ca5ba7af44a53db2e2ff43ca56069ea5517cb214e76faa53dbda100003c4f6175414041be74de22ce155d2281b6f4035be39841afdb96dd89aa808e6865bae62d6bedd919d3e86510b9fa5fedd1977c4131b2b86e0f48d7215eb13d5498ca5d2368f81895ed855a527124657ec9539efe3b2499a3b0b338262f26340e22554c79f4fad2b4e419c70bc1a2107d206456b6368781be4b5e2c54da42d336040fb7ba49c32d752321adcd92986e78bedb226ceac50292089bb579027f702217745afe06a5be136b3998a3604c9ff2acd6fa3f3f71633d3102fbf03047c5486f84c4dc2447d863796383d55f08c981fd4dd7dc1cb72b8ba4435af6abdd74e6f6e6798f1ae2 -SIG = a1c2607835bec1a1d87872fd8ee488d0ae9ed23d49fd6786fc4996725e49b3262118babb4834877c7f78fbeac02df40ab091b8b420dc9951381e3bcda0670502 - -SEED = bff68955dd6ae0e8ba85ab0d0cdaf04a9f5befd5ef6014f49994a78363dc17f7 -PUB = 0ad9493af80b15f07a521ccd674fe9e5212a4a28c17c74f6605ffef78a4aed72 -MESSAGE = d8f5650aa3581c4d39bd1b8afc96c1ad7c4bf723426f9d7fabd1a5c8ac1d2fe54a971fac765e05af6e407d7269bab661b3432292a484f952c11095bbd20a15d77c41f8f3731a504d518ee10cd006c96ee57372de5bea348ec8ba159162170c63e970f1c7a3465a3d592e1d56c6540fbdb60228e340909646320c95f25698cd4896bdff58e2561e3b3d9a73b89747912a1cf467d63e41455fda77477f46fe6937bb0e79d92ccd52e82dba908a05a57c7ecf49554ab44c0b718e3bdd5fc0bf7070d9c58f860591c18bca8b3a9a148a06548e0f01602b1e6f686037c94ff732e155d52d5b0b44703b3d11163e3f56e3b9c1b86476e4dcbfc53fa05984e8c75dd21843cf96f9e494abbae7184aa42736633e3811aeff402b2fcb7d7f702e447241e22a58842fd6d0c03d33ff5b8c792200e173daa7b217e4b2f4433e6c020acce501b9323aa0241144434b08e9d2469139ff67342208900546200fd971a65dbd6db6c21e3ef9172abba1ea9ea2a249addf1a1eaa3ce11938b13e30913cd0dad491fcbb3285ea378b8ef9227f3fa80b586ecfeae137066f8448acdfb78d6d3e9ef4a6b362df4241ad9ae253b8e1597d656e000cea447a02fa4933328609bba0 -SIG = 9319eef740633ada1af0e137644c61fb3e11ba4b01d3c6f25392dc9367872a23be56310d312efcb91bdbab78a75e576ebe9081972415f562db41baf5e2338b07 - -SEED = 1ba919c066bb56e640c3335968e1d1b5bcc093383e2d7cf8b5fff5c61ec47a77 -PUB = 804c90bdc2b3618b01f075e041fa971b83c5b6cfa3b6b3974f3fa43599beacab -MESSAGE = 87c5c75d8ad07d52acd781d1bb95f78c70e21c2dd66f7aa44234152f98234d128358a8aee98ea903a77b441db1447ae6ff3432ddd4570f7f58036122c1fdcc93cb21573739c19ccaa411508e08de2606f3d8f2db89df6a44a46133d57018462627e22f57ef36d1de024de3d4ae41b752df4821155934b447b2effe512487521be0356832a74ce0e2d8301b79f93175e8b6b961b1df637d8acadc884543c6864f8025ececec7c6e4fe0fecfc40dcd95e8d6ab93ce25595384436b598b73c74b03d49ed5002c0f858cfd9d0df61ede937cc41659d6708b96fc5aaadee109e2a68846baf2c246dfcf3d27c28bd1371e35fc9412631442ee75f38c6e4958070a74f6e6a220f75c7280eab4737d97e37882f3624811675f16caf60cb944bce92e75884c56483c61f26b6371b1b51237621a06543eb4abea7becc4fc31dbb5475b3deb9bb3c8992387104830c6072afe1af244bf681a40329c9b37772b09c5e88e78f7dffbc04549ffa13b4144ddfa538fc4b3300540ad830215e25f11446d289f33122c2c880de3da71c453d7e88f7ca4ea3d1255e82f4bc9e5533dc401c33040e16940b2cf9cf21feaca1c2c6c33337cf75e1884b483bf801536d304089115a0 -SIG = 503eb7ed6de1b776c952f255bbd4bcfb0e48bc70c2cc2f1f72bf6881479040c47524ec542ae13f6005ca5016b58b736a50898dd0569d4d38ad298630d68adb0b - -SEED = 9b36247c17710e95261a7d702f57fe81f2971117a50c87920193b386d494ca97 -PUB = 29ae39f273e35fb3f611da091600650efbc4fc4d1e7b4c76aced5a83f82634f3 -MESSAGE = e8d9d53ba27e98edd55df3c6b245eacddc8a40e3efb007bc918ec5a869178a170bb4a635b7f8f742e37ad45d14a74344a6b522830a522106eb960daf192dc1e0fd70f16160e122516892d0e2abd0d4ae0f0d2e5adcc99ad55302e251b3e7a4d0cb33774a497049905c33de1fbbc1ad2b6c645295fe416b4d12b232efe0a33cd2ad8732eba1c3cb0eaeb0b2a57fa03ec567ca29210bf6ff9542a766f496fe68058aa983806cbe7ab10a47920bac8248818e54a41551c9a0959e8994cac60fc868ad48b5a24d5f24a7a5a3fd90b847e817ad3dd5d0d6f8de2d204f642483bd53585a92ef925415a9b38fbbf07fc0f35e707569cf488b205453ce5433eba6fde8781af72b52bfbcab85ead385d9d3175e21ad3373ad535cf0e357ed6b5383ef3829a9d5095b87dc9aadbe0ca7abadf33ec3b6ffd6eb94afdcc12e8d66a6fc05acf97368db0f69565dcd8fef4d1e49d7dd4ac053c218f5240c812d4ebba440dc54cacddb1c39329e5bd0c3c80dc3259a80f059f94679aa0794ca0115cc62af25e124cb8a9d4160eace6d22c7b1c44544f81142a19ebb02a9bda6429c50e783db4a07f0219e857c8d3c5655a582831c8eabc3f19b59ad8d2c714adeaf4039d5cf70 -SIG = 035970a672e93f87eb42cc396f6ea7e1b3dd5c5951572826d1075a15c2d7e454df195b51aae8dc61ef7ab895485f64e5989573d98a062e67ae7356fe5c9e3b0f - -SEED = 6fede7396c462033189acd23d2f9d02b68898d35f3a01a798fc24d488de93a78 -PUB = b34062060b2c20076a98fea939b3b3a50451a5f49f8351c0ad7591dbbebb130f -MESSAGE = 5abcc14b9d8578de08321de0d415e3d40e9de31e1888137475ce62bc6fbee8fdd03b9d47c7b88bbceb804444490bf6a3ccb7a273261e24004ea67cefa3d5d173576d01e38f76c1e0e515083c97e79914acf2be4160ef9360bbe986b36e9ff93346b0e70691d934e47f8a503fa933ab2a50426947cda8e810c9ebe3b36982f09aee6092739fa2358b613c7f129db0dcbe368bee52f2f7f1dfe3d2434605b5afcf256071717d924fd0803bbd0dd1f9555ce834dac781df4cc7aa19e7f11da9fb99cb9e6b9e1e6fb4f7e8dcb2236c28aeb6cbc55a130e03c1b17a991cca1b794e6c13732d5b0a66f6eba860ecb98555aa4c218d112b116bce238295de142741f687be0b2487f58ffc5c12a0a519f1e23793242ef857ed398a20699d4351453fc2f092762abde34f4da2dbe0ce2aabaf6bc4c0159f3fe1aea16a036f7eaecd629538f3e0eed83c9a4dc1abc238f90daaf489fd61b34d937b6f4607a788baa82061943dbab26c1d384d8d49f99348800bf361f871f5d6cda18f689918cec31ad158f1863d13ffac5405c162c32de06e32994cc4106f95bb4fffdbefe7d629ec7797394609fdbfeadb46927370a11fb38471540f951b93c6eb238668dc006c21660ba2 -SIG = 88a83e2012d209ca03b8ebf6de5bb7ef4ccb5e3df5cac78954aa694930e4de82544ef5083c4892db9f05d77bf63f4fdfce15a4d1c3f85bae8077062bec0e7b07 - -SEED = d559580134ab050aca446ea7750ef6b371d92d7645ec7635fe7851100bc4e51e -PUB = de5020cd21a8b32339decbedff24664d9580326327aedf09c5ec6b3fe5405226 -MESSAGE = 6842e3190a110eee96c507d4bcb4c548c3a0ed7b1a8ed77dd93b38613b23c73e830b205e62651921ad8296b08d1e1008ad78f2996e3c7f38032e467cffecd77b8525e243cec021f85296afd545d7be1a62568bb0cfcdb90d614ed798bfb7efc655326816a61082251df01613aac88efcea1e0ea2961b8f921ebe1558dee83374a0113a78c55857ce2055bb2c48badbd3d8f4cb19734d00d0604b619073020d72a99a1923e6160a09946567fd4bda66442ef5a7360786d178dae44922f350ce2edc6af73d1bd80dc03ec3ca7005f4109d10c6d4f7d8fa61735110f8dbaedf91a0bad7d7fb5c04d706373c15c645063ff4b4fbd2d559b0afad432d4c496cd8abfea286fa675dc076726ec522b3a3c2f47aecc539f48a792169c4cc8cd41cd2cb6b63ddbc19373ac9691c2bc2f78f22603d5513715a16d4574e7acc4bea6dcd8ca7f19865a49d3664a210dfad290774b10b7188f255b3be4dc8fa86f8da3f73a4e7c929951df30fe66a17c8cee23e4f2ed2063f0b02ab40372cbe54b9a708df7c48a06566d39b19434c6c766987b3ebb00675f44c4b3c1e9f4504e7a9270589c0d0f4cb734235a58ef074cf9decf3601aeeca9f1d8e356cb2db5fce79cbc36143f34b -SIG = 6fcb1ac9290ab767d59b598c9a24ecdb6c05bb023ec36014a40d908ef0dc378a4528b3760d889a79174e21cae35df45d427ba6ea812bddca16e35a69b5e79f0a - -SEED = 9d4ce975547876636fea25437c2880c9aa8ee6b270d1b2da197c8d7f95e7dccc -PUB = bde4993c030477c35890aae82bb5087e914e64b94ffc64e2d7a5a7c919e2d902 -MESSAGE = ea0fa32a4a288811301b9ee533fa351fdfbf6bc1d0555a7402767a3a9198558f74bba7031857995b9f326226f1dd5df107b06342203eb8d40c5f1dc95b4f3f88975aa24af8769e2670c46671bebb7a0f1b7568729aee477e8988af9c749f3202708171fd94b337ae67ed21a6c44174014b0b0eb5ba71c277978d488c24c4a7841309846b4e30a4fbbcfc45078d7e14014114b1ac64f7c33c9ac25ea5626c2c819fbaa2a4de8a2bf5f1365d6b70407e8094f99197ce1f0c35e11a98fbe372414ea2064a3a12d1cd5c8df8fc0e79f5b770b58f477f91976ca0139895120e246baab5a026f2d39c687dc0788334b5c626d52cdebe05eaf30864b413eebdc5581ef00d439276e52f479c9c05b116395826b60490b3ce700cc0027f61e46ca2f6fbc2c9de2e800806550afb06d4a08eac7a758e24582a4d6d428b433d365fc31d4444607afb64f15e370794005a3a2244e666d5d4c38ad2009c769a51cdbf738d235942f412d07feeb73b3657d0b0c91cb5940bad6a706e14edcdc34225b1c1f38b1abecb2adcaf819155a94fe190fd556822d559d9c470854d3a43bfb868dadd6e443d98ee87e4d8284f5cf3a6dafaf295b902836c640511e610ae7d0cb1b1d3d6079fe6 -SIG = be17444cd465a87a971df84eb102f9c7a626a7c4ff7aea51d32c81353d5dbc07393ca03db897d1ff09945c4d91d98c9d91acbdc7cc7f34144d4d69eb04d81f0c - -SEED = 0273868232f5be48592cfa05134e8d5554ed1f9a57bc7e3982a330c57e5a7f3a -PUB = f172208782db66d466cbe4f4417f6fc477b7349f2a98db56c03a47227546bc5a -MESSAGE = f7a1d4614cc64a3bc48f00c6276304f34d4dfd15e0617b93ccef126c5c638c9d9953aabb7df42df4e0aaa7eac96a4b38c7ba758d860c90d05e3d14e479e545f319b0e5a85ad8f0991b43d6e49c24fa060e3e5df95c98d9451ab833e12aa97f404611bba359496265a6db11917d0da5c6a702d0b102de36dd0c98df5b54806ce626bb96374475f68a6060eb350a7d2aae3204b3dfdf9f1e31be81f7170f8a1b9385413ff8f6881e10c1e8da4c88afb50639ab44887aca2abeecedf110d2958c13fd3390d1b96a762d16ce196920ce85f6c415bed545b1445302a6f001eb8d00e97c751887868d481a0b1e4dfa04b6f761086ee8e697b019e017104bafb98fca242e334c6f18f1db5b6f295f05c559361c6831dabc42c2110703f9d1f64e12ddf26a8679854e9f8ef8479e1f12c35447aac02ea7f242e58632cf2fd063fe665070445b80f3dc6a3303bba96e05fa88eec201c5c2d00ca81b8da6969d0a4dd0483b3477d325a71facd6fa2209b48cb4f6525da73c9c05b2d9789b01448e1527e56a09a9bc6136d9837243c2077b925bbb933f8fb1daac963398c5802aeda3bbca8ae3b8f4a9a871f7ea8e2c0ce898c566217b5c06ff55ff9f4fe78398ae7973641eafb521 -SIG = 15e8d8dc7d5d25359d6a10d04ee41918a9c9df4c87be269fa832434d5301db022481bfa395a3e3466f9554ceee0532a8183a0d0550e7d1abe99fc694c6ff9301 - -SEED = 336a83b55abf4c02e25e540329b5275843c2ecb8df69395b5a5e241bd0d8c10d -PUB = dd60569844570c9f0a82643f446478b5ac6fc542214231a7ca656a92b5fdaa54 -MESSAGE = 9afee8ab482010e29264b406d9b49453d1ce6d550939072182863e4665284ab05d86258e0623b18754c4785238f697f075adfb9e1d31a42e85934ec071ddddecc2e6c2f61334a79526788b4952190716906dde17fba556eea4c8b59727514f6f5615a19ca36da358fae6a6c54f7f4b7a929e31ba7cc71bde7882fa9ffd87300136409caf3ca64eefea616aed58da5dfbf28b668ec1cccffcef6e2e14f8109e9cbf76cfa414f91ac00f48e93eada385dd3d5c16e1a39ea3dd55c761fca361b428f516c05e694fe5c3c345cd94457187a8e604b200a1a0f937ae89f4d6b5421dffcf7ca15f2e2c25378a4113233f7613f4570aa4b909a9135eae4c7b9ead458007ae17126a11d145258af9563db2f7e8925431878b0eeca8affc01ac5913bf5bac4fa3a857c54cc8906d6af77de6b9326b6506151099e87e99b1e819c6fbe082688f34b803d588e416d853169765d62f7e0bdf72c5cd66669a0335562336735e7efb734a2fada327f858bec602d0da08eba4479e7f6dc4def6e4ebdbb730ee91a33445cadc9df52c825ad36149cefbc51ab102033530814bafa7e87961b06367ff896f08ae334a9b1aad703da686706c11a04943ea75e12992dcf6106e372077cd0311029f -SIG = d263f56d59cb9b2896a947267c2ed78a945bac5abdbf3c14dc3ad092b2308cb9315c464942a0a20b2024511d766e85c936499a149cd0bbb209150a1643265200 - -SEED = 88409172618b490393db27d960171cbc187eaf4dd8b320b3d2f824980043718f -PUB = ce2e7c5839ef5632a123dc373dc14b1f0505766e9675407604ca7cf54e8d44b2 -MESSAGE = fb3e82f11bc286267e123817ad8864e077d9f7a8e7a163ac7eeaf93d55dd111de8083b66b53ce7bc771fc5071a2d7ac2f85d6fc6adcfcec446e16aa1046df37209ad7a29cf9665b439a54d6f8d942f89bdaa56f2f11260cc95993038b0e8fbdb3214f142e6c90b61a1d2b142076206af30ac35784a6dc15a1e79251a8c7731a1c53978038f8d76d70c6c1cdf529fbdb84d1507dcffdd42873dfa6a8fe6bd6f7fd29c80e4b2f933d2b6c9e62c9457e665472655059b63b618e2a9a8e5b9e41c3646173a892b8e6d4bcad6a62a6fccd3455890b58ec2681a95cc9776a9fce83c54a9ef312a331959c7ef3f79ee576eb7b79469c9234b1eaef609884708fe4bb0efac662da871ba61ddabb3fcbdeb8f635657dd9a5d7311e639a824858b9a9868d3f9384da612c7f2e771a46bd2624c99ea2b6ccbca996c1d9c375554f2a551619ce6d5e6e4d6b844a4dbea83ba732331fcf46572c1fb0e257ce1041b265df02e690a92814bbf3b5ecac69ee998766a02b0d2f908b3c15f952699616f2c07d589198989e6056c16319aab6cf8771902c078046a88b2570c13bc5edeba2ed1e3ba131daf94e6891862bb3de7d1063fe405307a5cd975693e9d58e17c690eeef4a2603cafc68c2b -SIG = 93b6e29d63945d5c427387d006c7f0b01956a95fc0436ed42b46d0f17b5bb193ea8c0ebbf3d6d13bb539e35c91f3f0f9fa3414a0223c9060bac83653c6fcd906 - -SEED = e571189b5cd9e788302de3919d850c227dcbb615022e568bdaeb37ac5b2939c5 -PUB = edda890f42dd5fbc7316a5fadfbec38556f23f51b8efd2625437f6b5069f1ee5 -MESSAGE = b62c867ad6227435bfa6dab830684e38d196e1f861aade0fd6a7699b6d60901fefb2d799c35c6f3d8bb94deee834403981866bab84946ae9476c75e9f1d3602b42cb2db437bff33a775822f0d6a257d4b75400eba5b8abb314b71fc6b46f8a34e861a9a62abf33de8482f63f9d7169e773a2dcebee03705dac117fd1499b68e7414f51ff9437f253a1d9901ec3b0bba86965a19383655487b58010f804909de1ffb2212c0252ddd9bf2a56ac46bd59c0c34dd59e46598b6babd4e5f3fffde55e48dab0398c22af9e26baddf77275e5f017b35a9b8f8435f9631936b391cb95d7adf35d1d8545a0fd066412d508967bbe9a20245a269e3be2777117e75fbac170dba352be69b254d353b3b2cb3b7e21b721aa9fe044f8916b4b2a6f8c28f8abe66ac92b91323ac73afd93dfbeeaeef26d19bd9f67e99d48cd2ad2d3e55e45d24d54b50f44a39b90e242ebe9b42bebdb230c470bdfde1bc7721c3120008477393dcc2e15fd22b251feb0e18b02883c078aee4fb760655a671dc7b8aadb9a562420a3c2efa2d342e1e0099d951b42242984f594e6914fe282b1ee128735984ef93a669e6ecba26c9fcb9f09f09256645617f1392d35908917cb8d29e0897c7503cddd5de1959686 -SIG = 7f797a31715d7c356f8f1f783700aa9974bb936d661661ad968c7cde1ac9e767be56a2dd49b9230e90110c67c0ed187cb7e75c3053ece844984d296f0d85cb07 - -SEED = 371744ab63c115613929a343709bb019b7357dff72d2a149f1d0f71d3a201efe -PUB = e58abfad4a13859f0acb05d0e47d59638f7b1b4936100b988d61e6e70e22667d -MESSAGE = c219de1e8d7ad8df08c49377396fe7c1f2d57bd2170633a00d708faadee180ceba92849a7778506cbb366875bf9124701894cecdb3385147d0671843922a649aff7c435eb5a9c74927503072d0067978716dc80be1545a2dbf5a1c38536e12bd7720c1965d3803a4e8aa55765192a13b705ca1059ded0e806362fc5bbe6c76a1c9674bb853790f7e90af00753e00436da48cd082ead64fddb689890162082f8482924f33acd604640f69927352b43f64402d27a883fa6b72aa70d241dffaa1701a25cf1079358260793875f76a2978e9f9f9d68634eb3f5f01bde1ce49e5921252f949f082795e4eafed7be5b49a9f95edbb4a13532e3f3b3be62e2652231253a20c1d5477e8f4bc57ed76fa19eaf03a11bba429b6496ce76246170e043bc14f2d2f703d968f1deb09388715c37cb4752da8d464e348e0313c8993e24133a7c545284e3c9c907d01b260c4883f9cb3e3dc5b6f7fb6d75536365f2132eaeddab570e7273afac0bff5c9fc0b820f2078e0336052e1fe7bdec86674d0998ec78da1c3f34751f886727695f35eca1304b14734766ab05c1186306ded9db3eef65d3c0456cdae8181afee04b296c6722a88c7ef3088d26f7fe74bc89cf5285c688f027b7e68600486af -SIG = 5eae4ac72af0174ab256527b7cd337a0e5482e615af068db21dae35a64640742604df73fd4ca02ed9515a5608d73195230fadca7b426f02a2fbfd02061af3600 - -SEED = 498b6ee6492d53231b3532d193578ba75d6a894e2e530034e21ab8ad8d2c0d1f -PUB = d124665b28facd2d17946a04dfe3d129a4561a2b24eb326d84b62b422e44dbcf -MESSAGE = 0498a59b87cdae28695547e10863bce804d97de0ac8008f3d5fb652c1757419fdc9e0f9736f4c59a34f21cfc74599fa788fcc10c6730c7df8c3d2c1b6a786d1230b65585719d1cb5c490359b94435d6dd671f54d6e9a19b9b5aaad7e0f233f8797df997828d88cd92ef089ef7dbf1e95277894a2f7c2fd0c8e4dfdfa6d3d14589ff01916dbf9ddd811c2f5e01e94298990a145a6cfc26895614c7c963fef308a4e3856c32dd3e359bc56d2cca496ad199ff1a568d6430ac5cd208e0e2d07803ca523e0d813ad3733ab50bdcadcb988aee758ea50439bf38ee649997604f151c602c82900a8205d8f6f670c8684bf5abb5f75ff29a37eb9bf8105199fbbfb4707e162e64c715270f853e648b0aa26fea0f6db562896bf424a9ffcb292fae85b76cefb8bd5a4b3ce1fb39bd2a50d0c9e6d933e167ff629b8a494f2a9b774eb303c781ea02aff1a8afadc2465cc616968015ed6a5a33c3120b945ed5351981e32fb9fb96b2212dcf8fe9ac56e3cf41dc524f800631020b025919178ce074eef078d6842012a276efa628db54058d1eb5b5b705f1e1818d2df5164baabb0c61956ecdb8c706e562fc4fd64052870530ae425b221f89dd6f90dab882e763e7a7ffa141bbaa8bf7a3f21b0 -SIG = 112f5c6d3bcb3dd99346d32ad69cbfac3e653bef29c68a33f43231f66cea1d0a195427d6e10c0e77c5d55fe2794287ee32e5e22bafbbd8052ad3606b90f94505 - -SEED = cefcfcd1cff4d8910749279131830b1da19dfc5245f78ca68b8c3c1b622b4551 -PUB = 1d394abd1b4ed1aedf966a60efd3ff882140a7e56b428374ecb443289a9c7f00 -MESSAGE = 5ec94ed06fc1257ae9c183ce56271207aca37a23fdb4b0e74ac9307a1bb112e05ed5a5d047c93109e2e59477b03378346422de36714c2961bb9736a513ca3671c603a68c2be7317b1b52a076dae2aff7bc88cd5eea0aa268faaadae539c938bb4fd4b6069b1945eb6af0c9e6c8aa5ee4a4af37e90c67e248e8d27bd7f9589c4d30e905651baf45364fa049957ea5d9b7146ca68204e5e973d0f1c91a1c4bded66115028a71114f0f4f851bd115faeb954e3f71a01470b2481a0098d99f9d74898c8ba0287cc7834155214173d1fcbafcfe9b08250384439476055883833816c9524cfd5744aaa259db7ebd3a6aa20b5a6546dadefd140668eb0eccb5f668db9fc62983df980850c9d19882a17550d5dca3542cd36003a0d03cffb04575a3e8e1d07015c7b30eca9115cd2b72e46dfddf6a4dda1faa2dbdc89000d433f6ec9adc46146d939f32121b99b28983d98b9dde8c3f6e5779f2b0700cb023db13de656e0aed1da2d5c6ba2652343648ad420f6ab9e55a97482a1a22b3bc2ee598629abad9547edb5ff790990564bd871f81b24b12f2bf8dbdfe7a88375fad9ccbd9fc0ba1d3bba5e3c4813c18a0348aad83fb1b82689054d99b4600dd1760d0dcce44757467bec1946406d530 -SIG = 7d83ff66ec79307b1c0c093fda3968a96cf6044f5c802888584018845e7caf2a135ac6f1677e84d22e458e227e4f930209919bc11b12f7aaf2b8c94302d64200 - -SEED = d107cf26f527db71a206e41d17955321013225bb20f93e12df3dc7399e720ca3 -PUB = 186bf453c95dc0a2fd589a78e2c80040b3f6ddf9a6f8681d146036cf2146e8fc -MESSAGE = 78eb9e13789928a74f360141728ede98389685c836b91fafbf1a7e8c19cfbe21bd3c3d6c6ed83c409ef693f1d735da3fa466497e19f38e30fba2a1023785459070e6e92c1cb7c9bd0c9ba61220157866c3bed2b01e6e6b9b8dd3f0c47c02f181346a0a9b9b5d3d7e18a94d6956855e16e8eaaaab71b10302f35bd8fb1f9b5847304160324926645b0582c2f2f1533a24281461514241db2850ef31c5763b2e3d4fb18fc6d8c1d7e52f7c13392c17e27019ff60008e431f1714370bc0efd9452a61f5c56488d91a185037f1f647f72fa785010d5d78f0a11587ccf66b8088e0e635fff3774193b2edeffd92d6e8a0321128ae64cdb862e631e2ee5ba0da44bbd589dc392b5a113b86a727a8ddb698a334cc668b39b1cde199b88837ca5f00f553f89c622834273641d39bc10c6a24e1eb42587542f03fc1627524ed6b749391f11028706c42364425b2caf20180e1b802c744b49b7bcd9bf7b15c23a0bf1c6965960d341554e1966b6ef82fcfbbe41d1e09d741e309254446777f13c29a67b8bdebc5f7f04d160d60e332e3d0441a0f2f7b192c3e2bdf6dadec2a424f88669806236ee04dea692bd8bb6f91ca0682ece349142575358b9b7be70600b3cb81e1456ba0799fdc01ffd68623 -SIG = 8071d97f324f10358f13ac8c61d424b4f300dd0419571c39e40d99aea5f03140e62ab4c97127ab33e98269966ae1d4557e459bf7f597b313f351a20122f0660e - -SEED = af7ea8e41c8937a4ec475ad81371a171d3d0f9fd7519a04c751ed4ad8ff8fef9 -PUB = 15dfc71585bac71ef20f374987c555a3f2f07d6b9c787066c10d63cf06e02ab0 -MESSAGE = 05f2263f0245ecb9faeb14e57aca436668308c8125df3116c4ee20501d0cde701b366e2b50a1c5edf484144ce16bfb1f7d26dc4275ea9732e264ba4d4a362b40275ba47377dbc332cb65e2f4c8853894aa878a4c175dc5b3b2a757ff3c8d7de660973b89dadf076e2e4fc76239b7bc752a229d44e000ceb667104cb0746bfcf59d69603ae7fc1bcf11d2e33f61dc497ec1b0bd5e4f1dbef435f2f291f30b00a85e833946c8b10484e4abd7d60bdbb1fe6dff5807a53bb89382153013b70ca08efc91b7e9fc5b5dbbb6af123b57be2e140fc471a45d89fa8284cc27e0a1fe771f55598bbdcf068d506dad0a592179ceca39ee9526f9e4fe47bf2bb14fb1486a677d4d7b99a520545676a0f1fa809049aa2414ae7b817d9a036e5c157886e8341d4e819c092a3b48b3606b03acb727c6c2217d0af30121546a94af6b49caa2a8c9b1786fa0c2a524ec7a023e924b5f8a89a53780c7f8781c5b8e869430caa0e6d0437967e3aed44f45c901cbcf1026fbbd4e3dd9a091ecf8b34f7dd5038e543dc7eb6ad5494efb145cf63ec0d355bb8e172f455d8a6b13dacaaddbc56e47de3cf762a1a738ef092f1436680467b5cd82e9e36e2d2b6842b3bd5dce77180ddaf0b643378e698599dd47f5cdbb -SIG = c0f1739167274bf91831c74beb645af790459b28bb3f21325365130f409acb66df1d223759a9758e08fd7253737484e285a6fb47404abe2eba5ef249fd025c0a - -SEED = 0c57cbfcebde10ede02d1cb01df360d41f2e66a50443d58b5d4f0828c9a18bb7 -PUB = c4d761ba189971b9462c61bf46a765f88e2ecaa5bf2211220afb00ac657f7ce5 -MESSAGE = 337703243ab5b4e4d3481ee8dd1f4494507174412658a93988b5c30403a7b7ed8522ceb46fa1ee02753a874ef0675d397c575da0b08caa8cee3393784d0f0db8459837af90b9056df4e38e417f3ad2eb1a100ef207ce2ca6c610018021661e307099f2b7c4ae875991140bdd3f0f99ad2c5d55aacb84cc1cdcd579e08072b6951fd45ed289ac9ff7f0986ac88a4fbb9dc9203d9baf180c90edf937258c9d0a6d48e220f72d250c7f2c777eaa7fb9fa11d50a5798772f9fd976b00599f1f0276f3a2e4d988ae92125467a8dedb7a16f9e3a56e8d00662b3eb67a35b9b60e73bd935077ee238df8f6e833b9a5523386826c1f2917b1c3ec98e0a5fde89c48b1d446da5d0c885fef0e374bff30a997c7bafd5e743c85d0c6aaa6ef10a061211a2327c6d84eb747a56e9bf60fcd5b553b798834d0c5ccadb9d4b54e7237d12c679c193a287bb2f511cd4ee2a2d8549b44b21c11fbe5723381c6c5f784687fd90cebc5b495af9e414f2961b06a1c8433b9aa3292bcff4241c227167f8d1de054ba33ad81da3eb3ec6e40a6e26854af349540171b75d75fb9a8d12937827fd594d317b7a8d9f1c2fcabda56375568c3e9e514c2efffc3878363dcfad9fd95436b022e8772a88cb71e803bf90381962 -SIG = 8af7bbe01b8ab93951d16fca05a9c967d1c52c974bea151ea72e4cebaa20cc783bb61d8d69385cac5bc6d72dbd162beef1fcb5dd0e0a08b48ca0b9f6d9a9880c - -SEED = fe7172278364194bcfefb4783142b79f59d5fd978b1e47c314d78d4cb3f61c8a -PUB = 2e82cce47910c7e2a79bc1f419dc3c3df54f23291fc8193e8258ccd2fd38d548 -MESSAGE = 23509451a059969f2b4bdfcee5388957e9456d1fc0cd857e4f4d3c25a4155d5ee91c2053d558062eea6827950de863bc9c3df9672cde8ba741744ebbddb45ec1f4284570fd0aacd07ea58c581be2afc95ae444e678edc2a02439f387cec982ea3a44814a8a302bb3bfe8228d58de039debdf7c2a7eddb4e71ca474f94f7e2bd89dc65b1610733c91fff89bd499f40154a6198fdf5ec7ad3722d925b292196c429499075be0c5b6da9c090c0791a7019eb5e7366be6ce58ab2f04fecd9127c42718047bf47030691521312c0877aa3f36cc5fbc9caae0fde3945d2a868ee2502a3833208eb850a163cfcbf6da9ee6ad9fe067fe241986fe4436d6ae4edc61561938e2a33f4a33db63f69d3f1a8850ed40028869164103488fb795cd82ca067fe1b4897caa49a7ca9a80f3a8151fd13bbb7ff350e8579f565dc1c4a9ca938d27b15b3f858ef45d3dd78b2c358635356315f55a97528ecfec5d11a5b721503107faa406c17034e601474b3b60cf48692e269261158fc353d4df4274381357790b7756087b00cc79e3b9d28a3f2439febf199e64a8b37c91b5a4334e3354e8faf3a361e856c54bdaa43bfdcd6ee6c9f9679588f6069950832348aacba2bfeebacaa2071ddc7d77898ef0f68793cd25 -SIG = f6c2a4296b9a3407c6d7a5679dae8666b503d1a17eacf71df493791b8ff0c0aa8eed36b327a29ab7828f46f22de868b628b1cfd501e8599fa31693b15f61080f - -SEED = a951e4e6ba9f1f0b354831c986942448faede37e11b0f247da2706dceef73ac7 -PUB = 30362014974bf75c8495c2e271e713d57384384d0a5da88edeea79279c0c58ec -MESSAGE = 20577dcac89174885eedb062489cd512fa72863ec5438e31e95878b75ce2772aee6290a0ba3c8f642c1d0ef55da8d5bc1484f83bb9876c7a8c0b6b609b94d112a06fc83ce8d2c1e08ed6c735e57b244aad6ecf7075363d565ba47865695c8423510909e0a3db4b61ed7aa67a7471331e83a0c58b8220a6245f65661549c1a12d4c0d50c326fb94917cbd07be51e83fe8bb3e46ca01b0a260daaf1d6abe3703d6a925113bb4d57ea1a48b4c7dbdaa03eea814a4b5f02e1dfb545cc623fe17a3bb18e4373f5f7ec2fb5217d23e4fed54a772e11323e730aad7efca8c464400e7679055fcc125a876ef7b8b9de186e229a7abf191d0c56d91815f67872e957bfbc7634aac403576a58f427bdbb30e8c4b6fc6c447741024ebb503a5a9025124a4887f825a43ee940f210a1bd5ae4f6732d60f95f2b83201c4c6dfe279412d7502a5211f8f48f800db30fc3776c4ed3a38bb4634822c98a6d6dd3233be60e42cca45a3163cc84e9e8da647c0711bc4c6ccd65aa1e972c07404d103e74bcc31a7e2c3eea5ac9257ab428947ab3dd3fb153d90694a4073373c4dd9ceb131154fe877473fd996f424f33e316e4eb02b8c7513be6998e516cbba54d94cd0a435e0ffcc2c0a8ef72b630ec24781066aa5efb9 -SIG = 0278c86a15208d9be5b1e1574761861b8af72ae08d40cdcbec354e65a9c3d0a06b5fcbb297d09bef397462395986c3093eeb22644c003c3078178cdf674e990a - -SEED = 38a9b2d49ba8b82f301a5772cea0efc2218455c8b218b22cbaa2aad2d7ad3b35 -PUB = 9df5ea1f78f810a521774602bbba4942f0459238966c8bcd21900afbf3d84293 -MESSAGE = 1778167c49b3a44d4a5ba838b7388553b1e13d36ea4f86d30242e1a822a3bbaff5cea63e2ae2a4635be236fef2b8135d14fb621c0bb773c9c17753f80926eb55d0f115bd09a885d844b818c9f04489a331bb5e032b8e58cda36949c5a8d08b55bb8de965e1f90d3b9cfeecfc6ad9a4ee5cb4047e9450acdc64640166a8c069ea849aebddac1ae4afec91ddd17fa5553fa87c56f7e51ec1cd6b5cc23351d057a4ce4a8923c8ae6ac7a8afdcc0881c0e74ebb024ef7296162cb93c68e50bbb074e651ac87dac9ea59d4c3fbf0fe379f3e97a24566ecae54303bcfb6f0cc9f15f6639430e66b19a427849fdfff833df02689e9de44006c903c559183459b9f4a97f54a0f2a28df7b0e9deeda8239d7b516977f5e7d6971b4502e9885f750af8d1a6669e25e77d5f327c77c87a86e0a1872bc96a76060f5f8a0c40cc973bfc7fe6ed9bca78f884e6a2828b94d489d32a0fd337e69db83fb8789afd4e8ef54c22a78c2587468b9ae071bae3b202d3183ad5f0f8e842e5a8de85bfff49e03c8381bca7fd4278ddccaf0134fb5593a395a77a5cbd434593bc4ad0ff4b8400ec674c4ecaf1d57754be0cb2fa9a6441a9abad7b42197ad82e50827e4a4245573a8f0ef87f58228a2867f4b3b834b6635037940a -SIG = e19e62ac539a9ca251d12d4c71055b0a3f581d19f2682e672404c78ac1f12bbefc91519276a5cbe16f520cf7a7f687a240f0329157c59f50026a58dcdc50fc08 - -SEED = 9a1717873689a03c112dd6b4d76ae73b89b416a598ceec209e27961e7bb1ee8a -PUB = eecad1e0e4b863291881a8c241db9ccfffe4e55d8b5a42f307b4436acd0649a6 -MESSAGE = e26580470901a07ab0931aa23829802ce04da59fdc2f773bc567f1e65b4f2e2d4a1a6aec1f54158adfce9b099790b503a13d22097ae23ebccf923f3bb1986d6e49111a8cf0d4eb8236bfe0d7c9e93a5efc7feb8e6a9cd1b8d921efa21e449ff49e06c1ccfea31f93e033c3c2a54ddb0f653a09fbd18a70b56315f193e7be56e5168f59563821d4bc3bbb0eaa2048286bbeee5aa3f3e7536cf2b750fd322602bb3847ceca39b75474322d76b1de80fa2eadba152d6f8f020d4d931c53f0a2801224d35deb6ec13b014873e689903607de96d9b7a743a887d2f48daf2ed2eefb202abf6082796981123b966e936dcf3483e2d24d694ecb865fbeb6969f347027fb8b175d24a4c045c0bb4ab5e02ddcbe77d4756c46d137b094473a02307a108340acad9d03bae8403af199cb75cae3162f3815813cc68bf2a5e499e594921149f3bbd214da5137e756521559dc80d9a4b74a0f4943022c7cd5fca42315e0bceeae9069615ce67a04382412313a31d67b346c329ad82e742c0a6ce0a6a02454c113e52022f3cc03fda691ebdfe14c53c8ce5ca9b932ca1a386e3eb4e90a4dc6e8ad8533b5af1aaef5003128655ca64f67fcd97c6ac803002404900bc0fae98463bcc31409f9981748789ade2d07783bc32b -SIG = 1af8be095538965800d8eff6d723d028d65d0e9c6eb5e9d125bb3b1783f11ef7079a49a807e27ef1260be26a3b231d03b2ae151e49f6f189f15b1c83eab01c02 - -SEED = 43bd924db8156008c6b3994a8130d427d514db8a613b84dfb0b8e0de6ac30676 -PUB = 1b3461c269d5b0062d5df6fa654a2586f647a0684218a06e5e2f7badfb394131 -MESSAGE = 6184e6480c42e96cc877269b16371545ff9523c45ea88e76a1348c68ae7f318b088fe4610928239185b6b55bfa0f43644c4a4c97c56ed77d08b1f4aad2f4aa069994abeca96b7bf81b8064ea4350d8a8b02297a51308b61c57c8f1873c6f97007aca3180429e730a6643f28733547bcf7b9adfe327e85736bd04af7f1d9f4fb84a7f3affdf4e22b574ecb4bc8836b10b8453aeaa5c1bf132248b826cc5230f75e075fac9f037561136e00643d08253e7ad652f702c0d15b6d7d48aa6f8e9b5f5cc146e3f156fb2522751c3710041bd922f37a50377e028b0c4e4bc3465d7c84af6a5fb427acb3b41378b102bda46d8f6f203a5ffcf395d435e93458a0b0a4c2e7782fafe119f769f67058c6677f6d10d9cf5cb8748e1805798ed233f6f930eee0e5075bc58b97af9177fda75d53708beb04dc4f19a43e768074609f14065f48fdad5077ce109bacc357174a6b7956f6e7f32e38415be526370fa58c3c0b31f51e6cd4b2cf27f8bcbc21259d9e5c3b5c2946a9fc1b00d9d15c3b7d80bfd9d05db91d249d3e42d8956682044548d83bda8d5cc9212442f30b45cf4aead80cce9b3512c39c5c737d3f8d747afbab265af5eeef8ca9362ec76e943b0a0d7a39f3db11eca14458a7b592e5e4ff2275dd48b2853 -SIG = d2a05d88d9d543d94d57ec88ae55681750f20b9be9c1e918cdaf457767f2948dd629e94f068edcf3d9927e330234badc3a02fa5ad3d9d85e948cb0b0cb3cd70a - -SEED = 8fb086206dd95a2621f598560ccb281f8273c8fc72e23611089baac89d3c3c78 -PUB = 20276ef479f4d4523ab77420d424e8819c33c83779ed80c7f666e8f4403f94d7 -MESSAGE = f02903ed4266e849a4485205954fffa8a108c323b7e3f84331043514e48556ab019497233a5a127bff3cd7c97086becef538b3f339d7d06e532dc7325e597ae357f816dea42a6a22c79d22074a2e1ad8023c424b7e096e5ad8897b05ef7d00d30a04aaf2981eddff2b347f1e27e20aabbe7e7a9544978e092b00cce420aba06187374ffbb37b4c22d75f04e57590f610a27347286c298312a6c9b1bdf24fbda8513c4f8356ccf757068ffc11bc65113783a5dde7722faf4ceb19fbb62f40702e2c6e6a8bb49ef40446450c4c59a2990944da4744f6ee770b930c246669813ce5a9f5a47dd80388981bfcc3a56b5be2c4c7e659a2e9182dec0aaafe9031aa3954d4fe7c431196a561a5b78eaba64f3db1b586c53b16f679a84921a642c260e4653a61de108ebde6f7053afa2cb3f3668ede121020dd1bace8418aebac3a5bd5142f105ac26fe49e5fb140c19b22d54a6291dfc954670247881646874defad814995519f6260e9774a8d185c37881b4f2543c4b63fbf1985016ab41c4d728cbc90b3ab876267bed41d0c0902f6b50e8fa906fc4788f7b820467306e0fe9e036a0a00f804f91c3ca718b95ff6d9e2204bc3161bf70fcc17b2964b56bc612e29402d96f50986514bc7d831d58e42793786d5806f -SIG = a9305e001600d597d05ef671699bf09f0dcc0c44475d3ca31e7ff1bffedc0c67daa1f3b76a035948c59cd87f82453a40950a1c9703c2e7d9280e7303966da301 - -SEED = afa1b846c210b52300e97696f81b8ea774d1df12e612527c55747f29c1937396 -PUB = b609566bbd1947bd7afaceb14389e836227169215fab66851aa5d70d6e2e3b89 -MESSAGE = 4cac1b1f4bd48284dcc9afc8b5955b64b436db704b0335d9755cc1f97477f8d323cb6410ef146ab8a9efb9526d8b62e3bbad1f7295f47ba9f0de958f8ec9b77ab42232437ed974856444cd22e20be35e91813bff4b016f810d0f61d89f6b614db33f34bd09985b593fe3e06e065b7bc6cd39d55c2cfbec7b6d59c0b37dd1d0d35135ab1d1b04f2f30c2f04f4ba2b36582738081cf59190f528363db944ed612931d1d514c6214f9ab92abb1833926183ac52fba2a4551e20e4c0ac959a49ddb167a381e0241d40c086e90e52aca017258975dbab2ba451ee539a718f076a58709c6697418d9c6f13e4d391368bf0e8bd8f2932dd95ceaf7aaca1241147d341a3acd08dc32905483572b89a80cc47231468ab8de359dd525a6257cf196c2ecb82fa8a78aa3a851c7c96ca25bf7ca3dcf3ca21453d0dfd3323d5a422dec84316102f684c359f226bb53779c0b9950939281ef79a58c011993eace085497afa4daf64c9687b0a11aa116cfa7b03936241a5567b646e7e42e9fb592405b8fa3c0a821fc3121b45b1753cec9a83947d211a45499bd63790b87f01472fe566d87696efedbb74ed00048c384ba7f027b3aa4298dc4110349fedf52a96cd05d08bd635771ed4510738d8f07a6021244d1903579a3ea739 -SIG = 98b0c6313cecaf7c82cbdeb3d0280641c61a060f65e563aa93ce18300a9b58272dc8680b485e8cd11cf80fdca868fab365378384a142727f2f844f87cfdf1905 - -SEED = c85913a6877877131001623ccda9cdc12b9d4043b8a83793c44696632cd6421c -PUB = 9cc67c6948f7bf6e556d0849d3b8d203457a7b61549b36681d754f1dc0841e96 -MESSAGE = 91b5009e83d0f6103399c2d3feec0084973a305bf4176ec782537560472db187a11b4dcb4b2ffb7f0644feb394b28e5bfe97247c4a4a231cf6e916bf99344ccda88a7f5d831d6de3d563dd102eaeb108c5bdce44e0632d17e6fa55b18067df2fa8d200a9869f6aff920c51d46a1ced2d903b1d9b6b075facbf91cd05eb41ad811a8ef40d9118261012c72b8979f15153dbb8561293da9f8b77c8ff14f75387536f0036d1713a72ce8c35b1062f2c6732aebf32936799b51c2cbcd6572413e7dfaab8641a02c150237381cf7a14e22c74c6c20009de7d3b7e69cd1b4584ac2c01babaf973c56b3814bb0089720e41968106cf26509d4aa546fcad5534af303ffca42b16ae6c93ee06bc3cace12e4ec718844bd30d2224cc486d106d1c456bfa165ea0120fab3df2c5ab3a523bbfa789deed44032ab0be86eb7cc09cdb7c07aa948dd5277c3df1d9d1843567dec84f9288e085b05ae4b8af2cea5d9a184d50bef85550c836613d5d3af5f9c2928e6a89660fa62719ebff773e46b77e34bc0470da4d2cdbc7071da758c4d39fe65201c88aaa8e6603d0bbe7c3e9b2d9e41b634682092f147341ad6d667f20c64e81a68d629467a54dd86e1ce12c560a6f9b64512d6f3886cbb9f37c37eb3985c8ac38dd6682f48fe1 -SIG = 01fccfdb1fb6888b0310a913170f7e366816daebe7650d72513d9506e66f7d62208a49ece0af1871497f4541ef605bde711c9e0a1205ef48f26c03dc1ad4af03 - -SEED = fa1e11dc8364208d8e1cb66a361be7e84c5e368166587d4fdb06aced7f62e17c -PUB = 4d8e6f4b3415df6cedabfb295c1984fd419923c6ac41764e32d22daf372c50fc -MESSAGE = 294e63bacccb801bbf04c1f19d0aee16f5650a6e8eea6fe41110663ec01532bd4960a527f15eca4af2f4e6b7b0fc340cf97aa234e92cf7d69d50e4009c2496e3ed4d9aff000f9e185275b817d26a0bab69b7f7ee1ea30daec8bcee387ae46b4b299c27bdc06eea63f24dbee955a6c0969037eef91c34321e3c5c972fde993183b7d23f6e019c3e0cac7589ae4a1521af87ea42df8c22c2270ec23d6d140f9cf6d4d52fac1b9d6c8939ef8131cb62a035c5261538bcdfd6db419a55ef9fe5d7a5ac44579de700858d74a3434844f28342c565892722e27f407d7f17b74a5934be915b20c2400643235f8ab5795f324e33c50644a04033542cb3816d770fa899e7311c14301c1bd0f5aa60a2eb3165680c720e1efa8096fc25d2779275f1842b2db53b4da0ad3e59c07540c28460cec1fdd3cdb7a3478b91a9caf9ac891cdf3aeaeeca9a9656ac1307259922fca74c5cc69f7e25c6bf587973a4b7d3e3ac0635b0db22a0093a79076881c71736ee1d4d45f8ed2d29a0671a64e6ca2f7a5ef404b1edeb842034f571b699bc59e5a37df02054e8482bf1e7b77d8e8397da15d89d7355a5dce86b1683a9ac4e406c08a94a6eb00e5ae16d96722972e5c50c7bee4a84d0697bbe67ceb7ef295f06aaea5abba44466be0f67 -SIG = e857db087e28d6750bf54e53797251d8439989576c12da2d9c811a14877c3bd46c4efab861a10eebe7da04c0b0b445c7a390a50c13de36f3a3c7ae0157022c0e - -SEED = 24a914ceb499e375e5c66777c1ed2043be56549d5e502a844710364042ba9acb -PUB = 20d21ee764b1f35f94568200d63bd5828aca8c5d3e9047d23f478b925295fa2e -MESSAGE = 3ff9f66fa2646ec66a1bf933c2b4cc0fbf912b4d6db50534257f97d01e698d05485747de2544e9f5a4a4a075388cf4400ab89b0353ce86198202db3a903767b879a2af9daa155843111af15a2bc35efe41bcc92c8207e00113b04f1303007949ffb6ce8df4b0b34248fedf5d9cb2cee94b812ed58ece2a0ce0454cf14c20e49e09fe664d6e25762e87895932cd5cd32eb6a3abb38ee163078c133e93588791dbf6af499a31ea4453bbcc7a85e406c9848a664052f11113fbb4ffa760dee4c261e396942491119da29a33582f821d4125e0b4162f28beb066031a652d05749aa7244dd4f3d3bb15d268328d6a02fce2501815257f8ad5af4ecbe7cb8ae9661e344f9072318791f3e859091121e08aefca8982eaaf66259d9de4f46a31e716dc033d0f95d1fa936b6c6079b137dd1158d1def113018c73f8ebb9807e0f7415404ea9c78544ace7ce463cd1d1c57e31f4091bc091804cbcddad0e15a40ca91acbe1c6224ed13cafb4df2c84ac9f0c3c9b546007d9dd6e524c467072563d4ac0d700cc1bf30febb334313dae5761745ec0a5e9e8815025958f00fa2e58060d7e9a5f2b727f48699f929c8459930892573f784fef5692518b5ca268e2a73ebead6ebdeb7ec24eac92aa7dcb41b598bd6eff3632d069726291 -SIG = 3ae0cc7bca8d73be83a9b809b13338c12706aaef75c4d1a478178f9dc565514c7529e298043ea78d21a5a09dd04f10ae87441e5686a933c92c75548427ad3a03 - -SEED = 5532e09b937ffd3d5f4c1d9f1ffcded26ee74d4da075264844690bd9c8613994 -PUB = 5093969f377bec3e35f59efda01ab4186c5d2a36740cf022675e01096b1a3f0a -MESSAGE = add4d7a9ce3f63d1f946e8679065545d8c7bf0a2cc3a4c00b8f142f0945ae362c4c9462a7576a4059d57861662884bd80b96d90d279a952eda952d37d4f95cf0d70da98f4fbaca39e169f9d945d41f872397bbdd5701454303d77d31e86348271da40a1b8f1e57c36fcd803e14fa17716c5631efa01d3a795dc20b2bde36ab73ff6a2d533bc15cce22328713c3c9ccd072c3e450d7f22c0c9f94919752cbfe45ee655d1b53676593cdb448704102631caaa976952eaa1f6c2e876564e420f0c646a0f88365f76415b4085f60a338b29c51633e540f0bf32d4087e7d0fb685be88c7595dc531c99b489584560ad8234b18e39a107cf5d842dabd421e77d26ea5e0f1405ce35fe792714eb4ee1a8017648ac1ae739a33d7b1e089105d1e5add27a62ce64154570340af9eb14e7fdfc2f9a2c2fcfcdac3cc4227763f4d629497479f849216e5d90ec16dfa36b72517f7b5486baee7fda4450c352cffbbae73926c843224f8ce44b38dae53f3ead21890b52a7801075291684fd5910ed86ad33e8a007f6c3f85c16b209293740184f5890874d431cd4e0ea4087c49c3471d789c813c6dc9a78699363a1d87197d3b92c0286689311823f4df22ce8035e75732cdea7f5621f67db0e2a4ca6616193221c0aa3d6de50d85282ee -SIG = d527ff0d4a219d61f418121206a54ae4985854a310482744486e4d130a7de97c319df8372c82828c936e6a8afd9c5de1828573d8261ae9365b8f237676182402 - -SEED = eb36511009d37a9c46c4d1374d0bbd0d9981e78cee7d188c5aab983ec239e10c -PUB = b1cc212b4521bbe7b19a7693878a558440eec36205d8439d040a46a9902fbf55 -MESSAGE = ba2466e56c1df77f22b6f0241fc7952ae9bc24756419a9446dd2b49e2cb9df594e5b6c77a95aa5fbd9dc57fec83962c7751eebb4ba218253f916a922a5139663e3203e3be482be379ca151c463d9ada21446135f356994fa5449f084478f5bb4f5ba6145c5158eb7b1c43c32ebea25e09c900f01ef91e92f88c03c76504ace9646016ffc2789559d0f3cc9d00fb61bdc6af7d3940f302e588e04f79f7b3d4b91a5d193a4f8222bfeb69bf0347d98ad81ef99d130ebc7b36b0783394eea92a38ddd5e7480d2add4e4def53eb99c449bff94e4718b09f2ea9b1f2b886594a95c33a69e0333154e440ab34b7b6c1134d8179b6f0c56251a9ad8e1b6b0f9b8a5c97081a7f8fd05d0b0affc82dbddc8b0c0ab7e833f300626d4b973b3f60feac55571e89cda0f2b441ed2faa669a70d556cb48f9b1d1cbce32ede5d166b1143e264b11ea327681cb559edd13c364bd2baf1fd54bb781807bd59c868b0e4795a779e67f0bd0d14b5a6b9e440b57a5823328b59affbd027eda7dd785079c5f02b5e32890b038730986a39a5a9834a3fed868b6f45cbdd28acb2709aff556263864f9ae1e757b3278c288dbe2932825712773e431f7c29329857fdaea798ed93920893631402e6b13bab62b4855461edb94620f2d1751865f445c466 -SIG = 9f583724de552eae82f254ac6e2ed483ec1a07346266735c490920690c1e3fb2a9e9a34194ed6473733b300d4f23c9aec0da5a2022054ca43885a15a2984320e - -SEED = 7dbc81902e4eaab3077540f559995c387403cac306d486e959c5eb59e431c0a8 -PUB = e03066139082f613448bdbc27fe53aa3f88994c31ddce002e36bbb2963df3ec8 -MESSAGE = dff798b1557b17085a0634371ded5ddf7a5acb996ef9035475e6826336f64ad8b84b882e30badec2b4a711998752f4a1574bc1f89d4325cf2b39861044dd03691e71d07768b5933a3052cc7c81d571a9de061dc19026c2f1e701f2dcf26a88d3401bc99fb81559dca76d8a31a92044a273587d622a08d1cce61c8f948a34ded1acb318881c9b49f6f37c30a65d495b02d5429e7ab4040d8bebeb78794ff736d1511031a6d67a22cdf341b980811c9d775fb19c6478f05ed98430103ea24c0f414d4cc07d860b72dc542ff22d83845a42f8ba45ca7ff3aab0b1e7de2b1094deac08d16eee01969f91bc16fec29ccc061c54db5345ba64842dacc99ee7729468d80a3f095583d8e8012408519d582cc3ff9a2eb7aebaa22db81ffc78ee90ef4ec589dcce87118dab31a6328e409ad5059a5132c82df3cefe2e4014e476f04c3a7018e45267ec5018ecd7bff1dda9267e90666b6b1417e89ddacb5085943befc7ad2f4df5f1ee0af9431aeeb6b24a5515b93dbcf68640f7daf8c961e567d7534900205c3df2184b6ac2da961c4c1d2bc49b4ea96b8154ffd4efffdc5e55a7119cb8af429e85105dffd41fe4a2ebba48168aa05fa7df27c4298735ff868f1496beb4b2ed0b8980c75ffd939ddd1a17e44a44fe3b02795339b08c8d -SIG = 5b7f652f08f229fda1b0bd759377b3fb726c1b9c9a10ef63426d352dd0869bd54d876c3092f1cd411c3757d3c6b6ea942aa70c3aaeb4217a4c7364d18e76e50f - -SEED = 91b095c8a999e03f3ed749cd9f2faacc0076c3b477a87ab5ccd6631738767446 -PUB = dad174d359daecca9c6b389ba096452ab5ca91e6383c6d042a284ece16ba97b6 -MESSAGE = 9b0d8b00299852d68bbf497fe603961a485466a99a5484005db73d4e4bad814e8574efd54d648bd5c91ae8483c54b2f998b02e1abd6f401a25526843a5f2a23a97bd589d1f7e1ab14915b1e359a396d352c360ae6584325ae4bb7d624f61255c5c7bf0a67acab46c3b57b34534c0ee8431d260576606cbd84d8d1839e73da6fe4b0b8b78f0f958827c2f1d93ba7a346dcc75cb563dffde26f997598e8b5c2f1617c6fefc9be4b28b5401b0006413a251690d1203aaae4f6d8a3fb21f24009ab3bff13737a8a7e6646c02732d9ec5a4a510469e2d299e4cc1ad6480a482aa956f89ddcccc64a136fb15b876b6ecd88c7c86a4dfc60e666207c604167d163440ca9ab9cf87a5e0f7bbc5517de4dee876c037f8cc9d959c8ff5dbe944ff54cd91a771e29231f8b5f17d61de904c955fe2025dc52ed480fb3cc90f232459c607ef7e2adb52c7482becd67ad2149a4128f984038b58aa90176782393604aac74c18209a3d6a78630c01955a7cece5da8384da3baf63aa2ddf5963fae05ba3b81c6a03d86a00ef78edb4184fdc89b1d6bfeb310fd1b5fcce1e219524a3cfb2e972577f06b1dddeba00865dae4979000c008ad99f3b638cceb8e8c7a0f998d34d92143d81c0e1c096a925ceba65c43003ee18d494d003e9c61f77d65759 -SIG = 64ee9efdb0c2601a835f418520641e436c7dd47c333d9fc30cfbb9e390fe764530654708b40b03581899a9ac870efd766ffbb4637152f8ff277964fe35425209 - -SEED = 8c568b310ace7d1f0edecefd603a884000544c792565d481c3d3e06e2d82ca96 -PUB = 5fa6e267c766736841411072d1983d1900acf01d48c3ce11770b26f78da979f7 -MESSAGE = b59f5fe9bb4ecff9289594721f2647047b0da5e0e4941bbe57c5b722b476723f0ac5970b4111f893bcaa411f28fceb4f585a2a7187018a904b70ef8fe1f6569a54d00ada37b69cb5e9c9d26c16a903518148e04a1b936a32329c94ee1a8fb6b591892c3aff00bf6e44dd0a762babe89d7060c17b90390d23bf9d360a293b8308383086916e1182b1ba4336f001b8d20deae9a029f7e85397a9ae5cf3ca10c7f3875588b8ffabb063c00ca26f580f69edc527a1accf4f41397b33766bcf6d55eb8de081a48c981d05c066617b80d8f6f5e60e59dd9b930bc4d04586403bb868df75933bdd86230e447036c175a10de9bb39953dcb1966a1f11912078e358f48c5b209a636c7f783f4d36a93ad2cc2e3244519078e99de1d5158b3961e0fc5a4f260c25f45f5e8585e601db08ba058d2909a1bf4995f4813460d369503c6873685ebcd3330a130b75f2365fb2a5a34ea63d958a2a867e90552d2cec8c390084be0c108b0fd2d83cb9284db5b842cbb5d0c3f6f1e2603c9c30c0f6a9b118e1a143a15e319fd1b607152b7cc0547497954c1f729199d0b23e53865403b0ad680e9b45369a6aa38d6685abd397f07fbca40627ecaf8d8d30133a6d9d5af009192751c9c45f77c0bc011268800bf552512730e69973c5bf362ab164894bf -SIG = debdd8e5d3112fd77b394aa0e36e9426bac91df126fa9c317cea7c9d45957cdd96a45ae3ad760413ee1205afd71a29f9c3cb586cd2d7cd1e93bc1652fc34dc04 - -SEED = 3d09afcee3c432fdfb6bdcead54e3da5b1b4165c50d6d310b7fad787b444d680 -PUB = b0d9028c4d1487d293ed585a76bc94fffbafe2c65d980c494e141e4810a35cb9 -MESSAGE = 767165caae0e578f16537e1750be7de87a789a51ff2de11838f564e2580b2391362d2868a5a4708af15d2e2db7b9be39c16adcc1200b34e6b4d4027ddffc1a2a3595e29e855ec5261b20bd55c428b01309badb59e2ca3edb967fc2f4bac0729ddf54fb6c20057bdda9e7af7cbfc092fba865fd3275b9d3bcb0c346b951d170ac9aa650a86df49855d48a1b37ce56c9f27389f5c8b15f5c2c900c4f107c064f603e4f867ef2e9c10a1b74210e6b89bb011793aa85ded43b51b749ba7f70287b6bc1b89434db8b8c8b5d73b214b41e36b528005bfbfe002e21b1006fb9d24babd72106d093e3c7093b3138aea719d69479084647498cd6c9bbb744509cd7da8dd61a627100f03c21e750acb3fcf4631d7c0f618154d2e5fa6656fb76f74c24795047bbce4579eb110643fa98e1f776ca76d7a2b7b7b8678173c773f4be7e182fd24dd76291ac67d9f26a28c5e3cb025c6813a378b383224642b4aefad0c76a6579517b8f360797dd22613ee682b179381950fb71609a5fb5494d2d57dcb00f26d1e72956f4d6672830e05c01b3779677c07ea00953c6b8f0dc204c8dbdccb381bc01b89c5c261db189ab1f54e46bc3edc4de5ad4f0eb29c0a120e437cd8f37ac67d48c7f0e730278708f02b54aee62b72952bc1c0eb437ca8bd5655437 -SIG = 89739fe441ca0ced08a6eb5796e9bdda0e74fb473528fd4907edb659aab44d3343229046716368faf88e85c1644af66ff2dcaf0b17ac93ca13819f3f241dd300 - -SEED = 41c1a2df9369cdc927164aa5adf7757136abe51395604266334cc5460ad5683e -PUB = 40557834cce8e043580a4272a8804d4f926e88cb10d1df0c5e28b9b67e1b63da -MESSAGE = b64b14ba77d239e6f81abe060accef85f0442b650c44015efc43a0aa2ba10bf48d3018b1953ddfffbcda5bf3bbe0b6b3e4b0d9a32c6b725bbb231e0a2704471ee8bc1d594f5c54226f5dd9dfa163cfc1452c61f93e4f8139ab4ce4476f07ec933661eae91b6d500bf508ac63e4baaf1ffc8f0007d802e005f1b4fc1c88bee4d5e9e76384f5a7043bd660cce71f3b67f01f6ab844298531aac73a39d045370088855005a09c6d04238ea478dfacad1e6b22b2be4c46b0d59b1eba1f060bf7da5d1566cf1fdb5c543a33926af63f01a0db86e1a6711c473dc795ab283c8d93facfb5701fa2f2f6bb99f9b7e3749b071d58607be44a7089bcb503ec1495b5feedb399961fd3677d7493eaa3b3e9cc5e3642f40d47de9bfee7c20b0e519c4eb4a40f4da446ed6ac7aaca053e759c97dabe0a8ec2f58e7f2f9b2072762f9f794a6a4e36060b8872bd2c18d06a85c2c141a78293773ee8cfbf154b9930cd39da31b497e737a7750c90a13f5aaa147cd0dc4311f2e34941252ef198b0c1f50827e56c9f16f595aced6d2a69346531495a6499774d360766ca9be5ed8881c0db26ed7c5e6ff3a4f9b73cd8b654640dc96bf43bd426a0f28c9b25fa704d62ff0288fcceffaaebd3ea3097bcbbd778420ebc520a417730a1b5b3b8c96cda9f4e177d -SIG = b8b2752a097196c289849d78f811d9a62fc767278f0c46628b521f62ed2759d74462a175da22403f15020445cae06da3ed61cca6203b7006362a0e198963d20e - -SEED = a00611489467122c4c164bfb6a616e6a619b9f83c4367206b85d3fbec38cd62c -PUB = 57ab58babb41dc0da0bcd506059aac9f46eca91cd35a61f1ba049a9ac227f3d9 -MESSAGE = 34db02ed7512bf8c67d359e7203a2ea441e20e729766c15aa00fa249a3518fc29ef8905aa5b4670958c6a460d77b3a80efcb473859bbaff862223eee52fe58acfd3315f150f3c6c27ff48fca76552f98f6585b5e793308bf5976bad6ee327b4a7a313214b9ae04b9651b63cd8d9f5b3bec689e0fd000dd501770dd0e99b8f99eafa09c396a245a4a96e56896a29b24190b1ef11063f39b63ee3a586b07627dd3500c4e170b835dc0ec236fa5a35c44184707565c4a50662d8dbccfff7f9a7a68d021b4af64d532b7c3d2747418c2d717bb6aca6b58747ae4dd5641d826f79a8a315c38211a538a929e5b451f623f4fcbbcacdb86c8752ea13a617ab414ab653eb2e68d5420df7c6df92438168dcf9c066581dfe7b2c468194a23707de4659bd67eb634ff024741c5fc8698fd4dc41fe5dfc6299b7a08e6ffca37109c0210c8f94ea2d3ddc977ffc0b3794fe6ba4337c7aab434a68ac665484ea8243a84b79aa181ee6ab5aa37a32d879725edc018f8552181816d7d272ca8818a7b92e6ee4454d1f7828dd8afba1a790364b4ff28d84e028597353ebbef24837bc319e1ae8f2b0b6a851b489c3e170eef53e065f7032653cd6b46d8e57e4e111b789ba950c4230aba35e569e06615403407bce0369aaab4eafaef0cae109ac4cb838fb6c1 -SIG = c771ba0a3d3c4a7b064bd51ad05c9ff27fd326610fbfa09183039e5edf35472dded8fc2275bbcc5df1bf129860c01a2c1311da602fbaffc8b79c249c9cc95502 - -SEED = de1634f3460e02898db53298d6d3821c60853adee2d7f3e8edd8b0239a48cfaf -PUB = 9dc1465b3383f37de00ea2d3c70f2c8fac815f0172029c3f579579c984a5895e -MESSAGE = d10c3e4de7fa2989dba87537e00593d0eed4d75ee65846dab1498b4749d64f40e34b5911c5ce3b53a7e37d2d02bb0dae38ed962a4edc86c00207bee9a8e456eccae8bdf4d87a76746014201af6caffe10566f08d10daaf077160f011feaca25b9c1f6eca9fc53314a80547951754355525257d09a7fdad5bc321b72aa28d1e02d8696d4f9eb0ad3b2196f8bcfaeb1d6148287a3faefef91a7a3e0609c28ce59d0ca14d0b3050dd4f096b7bc2513988ba212128d5026daaa7188846db21c5c1d179ab9487c1a5bd346588127c20398d362d4c759cfab2a677750b9e45676a1e7e092ef02edbf278fb19a58e9bf6c9e996e24edad73f3ce31fa04b6d8533436bf80b4b2f805ed91e7fcda3bc2bab3b2bb157158af0ea8e3f0731dfad459d2e79b6d3715fe7bf1eafc5397593208857e57b7feb2f7387943a8e0913470c161aef4fe205d3637f23177ff26304a4f64eba3fe6f7f272d234a67206a388ddd0366e894eaa4bb05d73a475f1b34ca222bbce1685b1b56e034e43b3c40e81fff79682c19f32aa3f2a895c0709f9f74a4d59d3a49029ecfcb283082b067f1a0d9505750fd867321999484249efa725f52c94c7596206a911f3f505d63f0313254bd445f05be3996b58fe1819af87352e7f0a2ca320d9cc00a5fe77ad41640d50be8436 -SIG = d20506eb846923a0b16ff82fb2c3923b00c1b3bcc6e2f6482fba24807521e8e0223f692e62eac993f498f67102a04fd1acf9c7e3888d857c9a080b8af6361006 - -SEED = c738ef5f0935281ba625fa4014d4a4d0be7e28fed779a9cf658e21dba43cebc1 -PUB = 95799faf706d195e544c76cafddf09d02d1beafc42c9d6c9ead4c1845587d39e -MESSAGE = 168d0bc5598be02f5443bfe7dfb8829985ca5d282af9cf1b1482602f243d486bd82ba039a0750909e9b3c7d4d5f8b8baf45718af0311854f4d1c7837f31d8ee68d3558e7e51e0c646a4a637596ee90057b01ed0a17daa3950b81ab47ae8b94c17d40746913c46ba1478bfca51b167628fc3ee1e22f2f19d6d8daf93df6540cedb7a859d1a2ba5911ba71766e8b7fce0c0e8663616d0180697d78ce3040d438131982f3f8112acca29ae53e539ff8c9ec4106d132f402018518308485f2aa6c9e8d1e62fed60cb249457db33c6fd1fe07445361f08194a2b5a057cb03cc754e5c7d4a7eea53a7f7d207cacca5e68cafa969a3521dbb810399a17f328ee767cf55926b2bd5f029549d3b464579c42655265398472e1c77cc8dd9aff187f7ac34dd456ace999a736ecca6d405d4922c779c600c47b84c9c1df5e5f8ed3b2811d351339113f8453cca4c4411688cb0388258ebbd1872b83610042249494ed560d4cda6a68455d957e806dd0bdd83004c4ca80774b8a0a1665866f17085014eadb3eae7382fa870deb29dd8c931b53019625740e28392f38575c0e2a9e504fc35bd95df56439a898230a2398cd2225c766ef36f12ae7e49b30a9c0aad469d5895bbf721cc0ff51d840c802d4a7eefba84fe5205a2c2f14011922dde561456f79e6161 -SIG = f44371e6c3391639d457ed14648184809411e80a3201f8811670e500fcad92f300aabf7fc68e440191e881d6c3474efd6d28f09dc44312fcfcb82701ba3c290a - -SEED = 5fea38739c61ca83bf7b4ad175a2117627b971a634a305a84fa57fecb8035624 -PUB = ddd14b0fc06768d5104c50764bfd3b952352a34007c50d5ddd224ff51afcdf9c -MESSAGE = 1013c60a73953549e5ed105bdea150b91e60ec39200d43721304bfc8ec439d39609613c2d878044a9da01b26d86d6d65db93d91a137e9c4808a97d4ef286a903f3f1382cc6d1294216b9fafc013c86b9ff68b55a50ea3766e61dc1ce38348e91d62ce732c152d766b9335c68d6cad77be2b4a0cd50b9a1ec632ba55648a6e7e11a14c06853c02aec4809bd147a5ddd9fbc3be9f0c8158d84ab6795d771b42b1814a17a3c7a6ca0f4a8f7b3a0db1c73ba13b16400dfecbd03d216650e4d69704a707246444d5791fa273752f59cb5ae9fd416a5186613d66afdbd1ce691a87bd7d8b67190e9ac687062a080d2ec39fe76ed8335058251872839e85eb62f18ece187caba55b5f7d5edcade01cdc543cc677e50238b89c5635ad5c8fc220f5e0be1bc667d20989753a6d616fa69f8b12940b8ca9e2c48577132d8691b053779a152cbacff3b8b1bd7af692e56c73bbae4634776cfc213c99b9ae458df1befc8c877742664b0a0bb1f6915c8dae3b3f55dd75aba6a3bcc4176b4e3ba03d0c1c04c3c6408778b2b8e5a8a3eb52ed32a7428c00a98a589d8ca9390a210f4a7ac004fa1fe4c6da694f12276e320b41b0b59f75d264a396d450b631ab353f1612709e7a2e6a50d01cb110e53040546dd3b1e11d25732813aa76be5e81fcf7a5773f6815bbd -SIG = f4e274823f2c396f3a329486aa6410c5ff19266f0770fd04fb14a7602d2b69a4a2b00928e9e1d92389f8033359ed6fb2146467aa154cba597dec6a84173f8d07 - -SEED = 60f9a14cce5d43fd9aab4ee8cc8379d575949152693bf29a6790b035e42a44de -PUB = bd4a70740d5acabe49f9a2152082fa2025330e6440437f1d047f313de490dca5 -MESSAGE = dd7f44f9eb728ab48de54ecde6b6184bd5ddd8707545a0129f2e905905b55d3e7fd57e28485d258148f6605e2377d5b267d2eaf4cd4b46e454962219868232b6f41f88a797f9cdd5c39ada51a641214fb9db2c2a9b5a5b16e303575318b625cca970b74348727902a1cf268bd16e107113161c8cbc99303c2b9f235541a7b31e433120feba14febe4bcb0f5b936c7edddd0ecfc72c8d38f64cdb6cfc2910bc29a521c50a51abcbc2aabf789de822cb04f5728fee153dd5501b2db59c59f50cab17c29216d66951019e145b36fd7e841bfbb0a328554b44dd7ef51468c3d5b7d3a1f7b9def58d8cf9d9bcafe92c86cf6d6119e98dba6f38ea57e322ddc9c2198d4bbc3b94ea1329db0d458e01c7081b33925a3e287f599a858c50c3a8f18cc2aa634df63e7f10e403adeab2f41db5578790c3b4f041a8b7a4f69cd6e06215df8201ae5b3e1d1d25a0a39bfc3d041a2f98213ef4141245792a76f06d4de25f6467a0e56f2f5cf69400d22117de7b46149554b70c75b9f99484a4f6f035ad3f10e3753cb14f4f398dcf6a64d10cf6c4fac07c91193cc0f54f0de58c6343e9caaa6b4f475ef91a59e083f9f211f5bc8e7e4516b45cf06bf50beb8fc4ab579d86d4a4190eeac748d06e0852c4b9ba8cfc50dd0a037a7bad7fad55af309a5f13d4c91ed3e0 -SIG = 72f54bb8bdd17e9e422cd339631dd39f57355015d4cbd15acab7542efd784a321c1f6125764c0d154045b32e70dc2e03fbfe1117468ac3e73127b5fac8d42102 - -SEED = a39053c5c58bf31d462b27a620b0b37b8052c6b1c4102b6145663aa15e978718 -PUB = 3642ac2a3280dce52ad8dfcfd3709436edc4e7e4ae1b452d9b220780b08679fa -MESSAGE = f65540d3abeb1ee5ea987062c1b579516d3c29c39cbc6b09d60e18fe274c2befe0f5fe7dbd57c2d5835229bb754ec4341394765776d6a9178c4e6a312cd74bdbaca0e88270628cd84100f472b075f93692830122f00f9bd91ac582836c8bfa714aa48e977003556e1b696df328ef584f413f8ab614760699c4d147c3eea1da0435835c9bf7ad54606f0213eb74a1b476141506ae2cd124cd51d66e7e7e579560576305c5fbe8430be3ebebaacba3f9989dd7d199f5a455a50cdb3755037e1a70674a4fef40b4a3aaf7bd3c95b1ab41bb206211c3a1276d3e37d8a3a5c3d5d0f36ef5b4f3de26b7f20f6b2900716dcc22ab734ebaf1e8d00020e5f019551653b9c2f70a4038dfb2f12d25d6d84e79073a6548fe15e4828fe5de83ac3d8d98b7daf92710482c37f7bd2431a8114c6137657bb177882d8a3c76babf1c671a7055365fe90866167a2d1dbc870be83b3601f09d4a317ae254cac9f98dcc7aead9224cd9c9d8a200abc80a2dd108af28fd46ad7080ae741b50054b9b9a9201efb7838bc4c5c2cc3d76ba0fcc49c46e792c26292b7d0312aff955a9f8edf0c696a70a614f3553ad3869bfde48d26a4d367b6cec057e62a4e548554b48b53ecda790ba7a0ab2e3de587bdc22b02f5947634d73099f547db22ec1bbf82343f9a2ca38bce4eb59be -SIG = f7383e966cb2309deedf860100183aaefac672ca16d5419cd6422ca70e16b3976f5f165afc2786117c868234ba1109ede031f8979b50e567358bd4f8bd958202 - -SEED = e0c29df4de45c47539e0896b3a59bc3de6b802fd14dbdc9f25e717ac82c328f3 -PUB = a69002b0f5ef354ce3b2d6b8d8ba70ab778432b22f144dc9c2eb92d99d99dd2a -MESSAGE = 6a37cb4c749c583590c8d849bce3fa657f10009190cad9be41ede19bf2fdb3c562a6101f27bd37f223cab13ced245a1cedf852f551f857aad9727f62c967c0a921df116f48a80a6040b3c723ab5cb594c4507a3d20cd60514e22164a82b74f19dcfdd83c57bc3652375517414af5d18e0a64ccab36699768d07cf40b7063a83e43d5f607964b1bf0840a45ad50abf83dbc849f40e5b4cfb6a3347b29fec50774046a4b50041032aa4d567e8564b3eed1642040682dd8ae7d7179286cf6e1853dc87d27c3e9e60fa47cf8cb2da0181d53eec40614b07331a4fb7028086d0b1ce2e1115b73a162c527bdd7cab5335b863d108be047bdbca112cc6e776bb453c317314388bb9653efb4444bf5cf1ec8da23b711ba71796c0ae02ba1dcc838455078c3897f07e9e13b76e49274c2e207506b00a0b558883aa122b667db9d670508606a3f54320636cd19f973917fb1875f4363e220f1e12398cc6afd79094743338456813a5826ad3f1aba7cd7beab1fe183859c0cc9ef40a5eab912caf515a8d4c3b93d641b7ab3e76b16c12971ace88ff33e5a1ed9b44e45db8f3085dbf070b256b0d7512ee1069432603d73095db8749ca547963bd71a8a684ab8516b146c4187176386afdf6cb1368a3dd8fcb2cfff77056aaf7823f800b266acce72bf643c6d0c28f0ab -SIG = bb3b8c5c27591fd8b9c5ba489d6b6ee5b0fb4a7b0de51f1639afc673d0e5f75e313aa7e1d0009081dbca7435b687ccd12f64f74a386e772b9e24781b925c8c0c - -SEED = 198b5fd1c03827e0994ad5bfee9b5b7be9966c9c3a267e4d7430343767403c67 -PUB = 6682c6f1a866b49b2f8ee97f2e532fa91666bf38da1b4dd65543a1777794cbee -MESSAGE = 3fdaa15c46f25143db972079d7013c7f69a136f45f3f6ba2ced8b828468eb3daa6b50b4f8d3380fec64a0343be116f6f83b6ee64cc4c1b1d08d54fd42029e4285cfc6c6dd5cd181ab533ffcd411f23a1003da94ec9340e2ec71199d678540d5182e139ffcbc505a170b8f07f4a7e694ca92f58320c0a078564ce9de99b0fa8e66b0d822e467a5aeb83567996a48b89db25cade6457794e5414d67e9d4ab7cd6cc2058bb7a513abd709f4caf24bb67ce1c03ab62dbdfe309ec7db0fa3ea7aae8236f259b922d4536115a63bc89acb2051d09e731cbb0df157d9d345bd9109973c2b594f148efc6f3377de5163b7f69869ffef853eaefeb402e23529594fbd65ca05fe4062c529d8e321abc05200cac1e839e87b1fd3fdf021d68cbb3a4142b69cc3af6f632edd65b83f5aa4cb17da5b6ba3fc03edb17c2a3cb5b04836e7660e63c8a0483e243983371dfa9839f9164ad4da0d5953655e3a9518e136da745737c79243c355fc125cbdcc76aec92216846c4574f4f7f298bcde54fd2444ad3025955c100315de5a4e27c333a00284b2f702fdd3de22ac6c240dbc14bf71e62d131b62f2db992473f2f913f60c916ecf57df5f3f021fb330834395b79472caff19fcfa0a271795c76d69b4db3f85b8d2e5c3441965484dcc39aba59b701274f7fc425246856069 -SIG = f454f35b18538f877e5d614a76b5276a27fc0b433f215dc4e963b3f047694c780c515c6ef6fe2db4b009009bc2733aec4fd46e615357cc0bcc9f1f7fc21e3c02 - -SEED = 4392f7d4fbd68fe154e4ba38ad5207612a0648556056c39ac116ad468f89bd2d -PUB = cbeaef41acac02bf1f780ce934aabd631364b369567be1be28e3906f9db120fa -MESSAGE = cf1709dc9a0867ee908721b136cb93a84229e83b46204777ca8194d08b7a3ca9c912eb243e5bdabfeed352349d20be801b722af0892238e72edf190e6361f57572781ad3c2590b197357641c805383baa1d4972f76c65448532c110834a0baa8f48863e166b706653708cd4057d3a4f9fcb2ceb4120001277d38c43847d822822b777c2bb4da4015a1c24d416d5062a8718491d855aaa5dbf5579c164d8e524a9f2fa3f22eb09861ffe6ad659fe36eb40431222c22d7137a6cabca8db786e39d81f661afde4e39589b4db4d3c51ca53590a14e115d0afc3a877b839a9638bece80c32c19e51b7532024845f76cfe9bfb2ac05130f6758bf7fe993aa93aa272e4e6bd0c75c14099d43e652a223e5bcd64c362d4b8f4b95e016f9350c7fa74e653525d08011558b2c6e9bf4fdf9dbd5ef9b09bbc846afc2bcbc86c4ccc315f6d1ccd489b0cf8ed0d93f2f532a426265c590ba3a59023347d819d9b281ef85310b05316d46c8a8c0365d068a8708664ea4d77ac0cd150a65a56586babd34b74365bb8fe3e6187262284d64432e4c81ea4c0e57c1d71ae980c7f4d1d871032e188bbf9d1758cdc1dff989f2d1288fef4e205e99e7cbf2cc324b8c93046f476c59d3d0a59db6fe37382dc79c5ec16056ab3934a52f7d2880d0471a377b6a8ae84d56ac22d1d54551c -SIG = 86e7ccf06e79362d40cdb7fb75a98978bbd334a1db7590367d60849bd53e2fb1a4bdae590d1f47b5490d8702e7c1a87268b8ee9db612de7bdc2e38fa6deb7e05 - -SEED = 0bea98abe7d63f158390ee668aa050e84a25d2893e49fc83f079f9bba6a55a75 -PUB = 22192ec0d32ef9835665a61bc88bcf4e1604637921152c116af503365bf6be42 -MESSAGE = c178e38d4e83ed2be57ce1c3ab64253a8171e610008181fbfc6d752269f7f1c5a9ec62cb27f19ad99ce1f5116a363d96fdc5a42f358b6dbe7cabdfc9f60718e4012c1bb1f842c5560811ba8374a0637747ff92eac21ca65ddeaf43e9989b7de2d432520afee364ecfba4da669ad4893d0bf69f9f81e7df69657be22b92069745f216c242ccd46d02d35616e16c755e0e37f961a6f3637752534f6dfab8805ab759a032a4e7e4c81953325a2f686bb69a029ce4e03becb3605637c5a65b52e331c26c926ed4711a504d3733bb53c97b80eafe4e75ddd9f415362888c3d4d37bae0e63fa11bf755666437d72f58c91d7a2f8cb619b7620a070b26b18b4d50184c5818712110e36d3e2830f6a8576ba57f9cccb8fff4028bf8ef9cb814825bbca827d649547bf6f2bef931704ca7f6df15f780155ed46eaa7ca7d72e22434ca0483bfb2f7902dc787f617eb9bd41ed4520adfd430948c710805a73c1ba5492e96484c4baa7da24c7435c46a052bf3515d33e42dcef517caa45f36c879121078c688dd10d76656a119762b6a834136fa1f8a643224b9224c543cf0470b3f8ee017d620dbdcc84d985154e9d1ae80e5f14387b88a0f6a5c35905aa57fb3abeb0ea6eccddb004474633cc483b56b8a8e20e8f2e09e979aa09893087875c6b117b5f13847ad8fc05604c4 -SIG = 7eb3139b880fdf66376a2090818840049767c837f3ad0036b141667052b33609817ca5e240ed8cdf3ccf3aee29274534594db0b4ccc5c6e5bba3280b873f2901 - -SEED = c25878b0d1e0925c8f5f04a1e5799080963c413a1399c118afb1687c797f4839 -PUB = 13ac2cad41908c255f671f93934ae5d7be325346725c8b40dc39ea80d70ddf34 -MESSAGE = 6856cc7144b6bddcc4b58954d1a2e7101d6584b5d5e719a0aea0fbbdf221c2a2aacbacdc4020c5c8ce681ff7381acd607b0f5239692335700655be2d94c53d7b5148e92a2bc16338c2f4c1a7d1c595af622c240ce579a5e0f5b651bf562518cec8aa2ce4b4aadb1f2fda6cf6295bc37803b5377dab65c9b9a2949fdd49bf9ddc8f96d260ff951bf8e8ccf9827e6869c44bfd973358cefdb010db5e1fe5dbd9f5d2b2ca393c17d446f637059e692d7a91aadcc7689f5f9e1b3052175d9b6b208f9026787fdb66783f45372a24946b1bd1687bf0cfcc8174ebe4d32e43284fc78d7844de0fa22e2065e07528baabaf015cb34d629c3596ad040de31c5620eb266defa7533ac0401998e5673a754365047debfcf7e137a20d16cdd6a5521982f444cfc3429397c641bd7e74a770bb11fcb29483e337bae5169ee82da9a91adf3af67cd814c2825d29018ef035ea86f8de4c7563aaf66e0c75d17ca68f49f0758ec2d9c5179d01aaed7d4515e91a222b0b06fbde4f07a7d9df2de3bcae37ca2c8460c2a6b3749e9bda36d08e66bcc356b390434b4a18cfa45af557dca3d857ff3ad347cfb07e2358c2acfd5cd53b3b0ea2a41ee5c0802fd473db5f30526334da41eb4bc7518383898a0b7507ad4ca289d66c5e2eb75cf255dff312cb1e04eebeb47f2930b90d5e002eb0 -SIG = 06f55198b4191914b74306f38e381316eac40b5b5adb8a312464f67175ecf612e0147b1cef46c2518750a5606bb03bc6467bb9321514f69dcbebce8f69058002 - -SEED = 0b2ec62763f687593135da1961ef29a288089696d944b265a5f96893cd2d8225 -PUB = c1e234fa8bc96d268e7aad028b03f0a911b697715db3a21c2fc7df48ecda8875 -MESSAGE = a83434c68693d5fced91bda10213fcd50c48920b90cee9b73a9c61081a0974933f4fdb0a67e671f8351b0ed5ec0fe7b5fb0c87586fe582ffb1bfa2db5fcedd3302428234b2bb0e726dedf45b13a70cd35ab3e299d13f34503508278c4458eea5b7351b05836bdad5b05f60e445fc65737ae27d2e52df9c39e5da0286392d08fff7ecb7066820fc90fc8a44d5616561c50b52714702302bca5874de85dba045045f9f0e604eb86d6d7fbd775f72ea493b2c4ef7c3be16db2ca7e4d8bd79eb20cfb5f0f6f05336b75cc86d219f3b8f2e91ba7d52b64fdd6a6664f04f2fbab758cdf984168691c32f53e8616b49f76ab7b192b900903082cc89656a9705804cc9b9288a3e42170984f8dc454e0864b9341672686a178c060050178a36c6d906b2ce070d8faaacd9a58c794a5ea4108b4a485c65811c2dca2ee7bb10bffff75d4586b990f43763a16fbc0b48ae1fafb08a9a36fa4326845dba5ba2fbd32bbf66505c5e8657ed0107e3e16144ef31fa6aae72e774097483f5480aa45540568fd08cba0d577768004f58ae9b95be374ed7f0299fe721275e476e0b9ab72dc06ea328384e39bf3ac331c625484312cd9b06b15a2954d33e7aaba6be2261886ca811db96b1143d06dd6e0f3cba7a1ae9b94eaf67771bb2d24e2f94de9c470fcde7bfdb32f410198b5aa9698e32 -SIG = ff701f34b3594de3b80045f429e5e32dd88d6051d4195f1685be783766e80119368f56b3749725b913f1223f87fb0fb24d9dfa0841d6a0e2eb1fddf775c2d205 - -SEED = 8960d7bee8c6b39ca5934d7cddd16f16b3663e6e03e833c057e2181e4597cb68 -PUB = 43409095d4f50f5eddbd5cd4d2012298cb41a40e99492d5a2db08be5377ea183 -MESSAGE = 308d84c7a5f786e563e5c1ea57aab5e555c00997749d15aee35439efa645da2c3967703115c6c63ed7f94785c5478f38467b86e7626e8fffa4d51a2dc45e6df2a35cec99555eabc9f7a93e2e2b689459b4e0c92b351562c417b1997113754ea59e4a91510728ff3071a2bbd1f465a687f67dae955615031a8ad551fe738a260bbc446b48dca1d979051ab5840832e19d473b666217a9183980d6b27e3d3c76d93665ba2393e6ab1a42c3904d4025932d601a202a59a4c49fdb77f0e02868247de5afdfaa1b894208ac00d77c6bb54c6b2a73a47657e44c85137963b57521af20976248eb261482147cdf7a145c3643e29e0588bfdae6a082904853ce5a10d24970ebdfb7f59d5efdd6a5e7e0d287971c846acd54d84dd45468a4110bab6ef8d9a5b4b2426788900b7e1adfe0624344f98fe59ef8a1e6c405b344eb97bb204773744b6a2d8c6e65d17cea07de03b7f0fe49f1a55c33d5f15ce55df7c9561b251c6ac807a92553e1ce917012dccfd69e7dbd038c7eeecae98623f18fbb650e2218a0bc0fff43a75a116448bb7362f527ee6bc8e10761cccf9bcfc0d000f2127b4cc19211d095a0bdaa4e4be4519e6c8445eab9b3144a45cab9996135bf7f75a78d22275900f4ce1f0a9eac136364103062893dad4390422b77e5f5d1d94d7029c6097b35ca64a7a476fcc7 -SIG = 7213dd4a79fd54dec0c548ef42e6cae015be77802bf515cd2582768f72f563ebb2da36af4aaeac56bbffc9932c2e24ec95daff00a5f7a0acab9c8bd3c23bb40c - -SEED = ef6b9b51fd4f8586ca62658e042fc09a83b943033526ffc326c65eb3a5fb594b -PUB = 1d6eece805e0887821876b7ed6ed5b0714d646fbecda38764f94c8155e61d004 -MESSAGE = a8f3f19665de2390d5cc52b064b4851273677486d8f5563bb7c95fa94db3356161ee622221f10cbb1fa195aac7231ea716d74b46b37bc85a70dba3dfaa1675217b351199e74a971028f729b7ae2b74ae8c6b3a0679c3e3296802844ad5bba343f6f9f7c4661b4a29b44f17e89e114fb220e984cd980e94c3d2bf9873e0605c92301744a3035ef046bad2666b5c63ebecf93cc140291946c0fa170340ce395092deed79841352fbfee03a927eb458f2a633ed3271652f5b0f9960cdf9015d56fdabd89ee71e259af6eb514b4c1bd4a666f5b5a35c90f35b149457af2944dd0aa8d9b542283a7e5412b775e421d2126f89bebc3ca37f73071621f1321eee52e9690486a33cd7ff9c9967fb65ee4e907b6b852211473d21e9d91a93362ac761760e8c7bbea486c3d605f9e11b86136819a7ab3f32f13ffca16817fed197ff880b4d6d9a808f7f878763a045728df72faaa963e4cb1c09cc2b2da920280c8366b7d18bf8972df16cc23448fbe6b2e6e16cbbf0745129854053189637ce115d2398433c15d6f116a205334824af282fa758494c47868ea8f4dfadc705e861aad2eb8ef3dbbed2a4569e15834a760cce0cbbc84b289e779b988346b9069c744c97ab2bf42b086d2fb0a411f5ce99f0819a3086b4fe9d96c7c9908dce28df1ddd30f3501ddaf78110734f9dcdfec3 -SIG = 71d171071cd0fea1c6a9cfad1f7fd835e85ff906778bc6345a4dec4313ecc2bff755a717ebd912a5e02840ac073842f9bfcaa58913e260e3c73393d36685c70e - -SEED = bad47cd4bd89849067cce1e63c3d91e9b787aea8584edb07f3451ef67e7bd79b -PUB = ab0ce9ba1d29bdfb85a0e66b76b5e2e05ff732569e4375ccd75098e9e71d17bf -MESSAGE = b5a61e19e4863e0bb5f3fab6c4970d878596895521fa1e7f678cafa2de53322fd458a98aa6e35805429f651291b95bd9950e155f3ada0b609159a4abda5990c04bc2e764422fb49ef42f12529ff6f6a82029ff0185662e658f83c546eed09f06b5a68e857cdad0eb9ec4eecbfd88f34bc80990f8644a9bfdde1d9f3a90d557a8b828d5ce06a64e3b238582bb4cbeba30edc49e8122c55e95badcf502cc567869c09e9f46c6ff3f6878986b1de00b72a1858046fcd3a6e9cdaf5b073c56f2025063a2d178bd4c1e8cbc1e6e671aa97fb2cb4cc8a62c20be41c776372c8e7be63b482e6c63fa85d7cffbc1b2820bae1fc128343a1e20fcf1bc3502eee81358cc9a74c72af63530f96a25a604648ff570df1eb89d1fddbab28679ba2e9b41977e9a9c1caecdbfc361a1dd055ec51620a9bbdbbaf718c9cc136d2007710399536d13332485ec38879785e0c9ce9915a80251373990a59bce440326031ab1b458bfa5b8a4793da4ee11ab7af20de2a118c9ae521a417b68207fc885e109d8463e9f022787cc730db0b1faaed257bed901710885b74e994f54f6f2aeb64f0f60b59efbf2e3bb6515424603a113c0b8a31ba3c1e9a9b8118c87ec6949b75f49627ea7b1328889391104d4f4a3892cf00f26a73cda2a40f9b7157afc40667f4a04f647dbf93906b84c9a35164e1bc902 -SIG = e5724a1dd463a97d1222c518c4925d322202d10f04cd078e771e0fb3951dbc1493a234460754c3aae3df93008dbbfb310c99592bede735a4aeab0323a1210d0e - -SEED = caba8e0533113a4be173408ba83c0db74260802f9186c391402655acde6015cb -PUB = 2d7bef6164c279fa1028a9788e3e8ee8ac15edcf92a5855062952310b4684547 -MESSAGE = 2413a32bca5ce6e230e565eb858493d5d04e6d2e2a7ab1f89a3b423311676bfa93c67daafd1cfc7109e040bac52cbfe07c28280bb6acf6e3a31073dab2965378dd77f61fe9247135c1a631b79ad668c9ea1cd4112d8d3a064cc21df32aeac7dd718b091fb6915b8bc063bb5815c376e01476312a2e5433417a7a9315d65999b02ff464a474a597e53988773670eca46a6e26cf96e9488e9e6344bc783ddfb535e76bb3b9a603ff4c59c7dbe2d8b6198d5b24490b4ea96c95959ffbf3d8218e760daf20e01e2f36c84bb097115abddee92bed82d16b15a9e192e9893ac638461df507207b0cf595884d8a99fb9c7045f9bff7b73f00ca3fd595a5cec292adb458bd9463be1204d01678d2f4389b8720115fa597c402b4ff694b71ce4f3d330d5e2f3c3ad6d96a9b3439230fc53a44794cda595557c406ca1589bc7be81e2d79636033253fa7bdd600c67fc55936bd96ce0428c3eb97bad1de0a5fbb9b675157de5f18bc62a7c22c9483e2802e679b5b8f89db0fc37f7c7150ad5ac8722ceb999b2435e6997217092336ef1c8a2292dab9a46ff8a9e10d3355765cac9d6598770f4f01ea639125fd031609dd1a507d96280c7d01a3ee987e9b210ec8744cd48c74f8afee961e8ef221f826a1fe6e7df0cb15ad7c7ef4a91f9d0f4c2e1bdea635d275fac8c4bc0601f490dbdbc734 -SIG = ec35ec32c8a4008827e178492b3b8bee22a4954fc6b25f4f225dd7ed23698900de8156756a8edc35c51d10f82b830a2a659676eac911f960244766e0c3c60705 - -SEED = 9bf3fbc7308b46f6036bade0c3ca199fac662b07f103bf75181d52ba6a58be05 -PUB = 2f6ac6fc33bc060c1dc3cb9d1a2b9115845addb16c4b84be37ed33adb3b3d3a8 -MESSAGE = d65e36a6a38195ecb91de3c848b51f639245fa2baba8a6f85947159dec0ed3fae80c5a0f8c66ff24793c89c0c687543bc633547a1f37f730d97012ebbdc7ac339c4890c0856bbfe2ba29b25a7aa6b089c033fecb76db62dd3c00f6421b9e76dd0ea366eb2d4a052ee6cc736e3819191d5ad7a66d2be042cc6539e5f35652b155a727f3888d93f93a9102598f7538a9ab7c777eec79426a6075d6f38d64c485520f6413ff4d358a8a9cbdab01adf4db02adaea26494d1f5d617637f277f8b0e6e7e61e2eeccdd337de2baf0ca264c14c8cb8368000b9c714385f413737d6816e212cae2aecfffc32fd16d46c3ecee6ab074c0d768bdfe99b86cbbc8df9c47cd586d465871268d4a9d1c877236ab78f8859c114e251cabc4be0f8bc25d148c5f543e290745d11803e49f5b53193fe39969c039b3f249b32f2b8598b6acf4ed64d5752bb772ff4ee00ce0f85ecbb4cfc4ce07daf2809868c2903b781e12a274105f06181029e47f2bfb21f49480aa1e444715c0b9ff07ead88975d93585d2ff424832a9783d94906a60f877ae1c85ff15317badca1e61317433c7ce96279b678ec9d174dd0870080b234154f626a53462cfd547842eab8705605b8ee885729ee78d1833aa43f55ac22731989fdeda7dc5fa9c01985f2661e6c7326d346e6db27e6f921fae7c93a2170e10dd0c460bdc -SIG = 0c3136e01f9bcd99e10d3d124b0cdb0772bec18a864be81bd1daa44d818c3d470dfaa8ab6e9a761cf03f93ef9cc78291096ed6d10c08fa2fba3bac04dde20f0c - -SEED = 64e89304a335e903cb36c0bdf1a6412ef368468006b73d3d2d61cb030cc5f8d1 -PUB = a180ef3a661c3c479d5f69807c902748e35e7f725121e37a5d91b8bec88d83a6 -MESSAGE = 2f51074d981bdafafb02a40fe826c45f3171c1b3184d8c260b82b8411fc625cb02ccfe755dc29dc7895bf759e61b2450da1a656a38d4f70d2ee748c518c6420306e5f01ec7a0ffe0e9dceb93f6c077b12662881584f98ce6ab945f87fc6d123c45d6cdfd8237a1ce3635b623a79d020df44c74b89ac14a321fbf33a8c0a2559fea1c2b156076b813908f842ebe4c2b949089e52b1ae40dc6e4b2abbc439a0bf72369679aab6f4c00018be147f7c0a67b9679ee88a53819c49f7b675e30a8b5af39661ee8db21010411294968f88e5d604d0d88d76a7e4864fad3a56f5f624ba1b34ea9cb720850aad3bd4f0a882a7d25fbec2bb7ca86da616da96c1562c6d6a1abcc641e1b58b2c178e1c3bc8a3b36ec9e144dd2e75b0bc8c08ccb0d6e3427b0322b3d6ab93f3f60b9cc5b61dad02385a14949f9b87a8e3af1e0e0fab7a9a928c753fc6110444af7ccaf8027ed641b9ed87fa5d8e1f76cae465d57a70dad9ebfdd3ce7576ac4de89d98f42e282ad87ad6a5042577cbbbc4d951e2a8676fedc8cb1b1bdf76c3a38846385a85aa24706c20a8b38465fe2ae0e41f78e614b8e9642fe2471a9015747db976e0c7848c23ff3f417cb05a8d5ef40130adf855c998a62104d7e2fb7c0f9aa2a496075623ced2c0f7eec10147ff9608a8a042ef98117459b93837fd1b8d5ef03978eada74cac -SIG = 92eb4454814001ecfc18025d6421f64645a5bcbb5cb8fd85c14d772617c503e8be7d3bcf117f5e6801d1c3b96f9090a66ddc67f8cf8ff0f1c125b16b15e2ce07 - -SEED = 6f634387ca2c0cb167a740d6afd89e2a28f5307184e81cba3c037046a5ede23c -PUB = 011f2a9a111c38f3490cad1685be78eceedc6fac4a3221301c69c84b1ec7b3a7 -MESSAGE = 865c20a94ac3f2e3bd5cb85bec9d33726671fe01f9c537017d59c8d5106e43360bf76fc06186705980c8a87ba3633a4a170426ecc0defb6db2670f5f592533774cda50052ae597d48deacc2637063bfd519f2e79bac81775beccb1ab2f5b39712e2e829469b75a2d2dbd08aa6d24723404b25eb948a4834c55246c8079a82ec64354e8c2388f8c5a616b3cdc371e6263fabc9f6099219e861585fe82a67d610dd1eb5c81c96b5cb354a689fd8aac8db76c433f0cb0b31cf1d855b6a30a3d2a212e9b4f7d7afe619951f98d2f1ba2c101085ba81f49b36037cd6457a7eaa8f4f3bedf68d09fc9fa25a9d754db65360285412d1a6da53788905fcf4efa8a80cd86ca48b845633d8c31c2ae06f16c4c6bbbe9cd1afb59e101be50e03535dd8a65e45bba46d45cb14badfc8e93ab5267f4e492ab1f9a95e61fcab81cbf2bd867a3ec7b4baa189a0f08567075596129dcf9ff1c502d3279e8aa6ce56eaf134582a9e430a5aa8ca10c3da8bc793d0256ad19aea7149f0ea7ea95facfac1c5cfd29d7a3fe1a417975739e14da8edc819900472ca8c69716328e8a299f974edff741aabc1c074a761b3ec8761dda2e7eed7af33ef00409849d415497c5ed5dfaa2259a31d076398170b2d9d210208b4a4c7db8c626d1c533562a1f95489f9819e4985fc4e1d1a707be5e82b005481d86377f424e -SIG = fd17c618cdbb5d459ea2aca886f0512c623251284aae3a83eb5d7f60da1d9b2ba083c455a5e2583a3cba736e7b961ba19c1cc8dd90745da82a15dfc662e8e10d - -SEED = 4b2e1ae60fa5d383baba54edc168b9b05e0d05ee9c181321dbfddd1983959154 -PUB = 36c020b18552345619ef8837eb8d5494840e85f46809343b4d6f406125da557d -MESSAGE = fab98b2bbf86aeb05086812a4b0049a1042abb76df9cd2908755706303efedb1ad21e8bc8d7562349e1e98ce0d752f4b3d99e677368bd08c78fe7425ec3b560e383bd42af6499886c35add80a5828b61d6644d7dc443ba2c06f9bad2eccb983d24458f6ada1b10bb5b77172c5cdd56d273d1e41010b25cf48a7d58d7255702ac12f2a6fe2918466395f460d15236d035ae9410ca86c4605128299faaf09015f1adee7768ee1a8f8ca06d10dd7f95c46fa10253065f9d6f90295908809fd779571be29e0ae66e0bcbdeb7913d2bbb76ac302f3452c55ef199a48eceb0e3596c7b4c0386dae7101ea244a33c4cdc830672df83655b35338052307b94d223cab1af69e07f78e58cbb0cb3c5351e3a6b0c4a927f7562c598d2d3df90569f61db1a3cb0140b56ea02cf7745fbeec2028673d67f1ec5f7daf9715f754a9d8ed46a7a63ef722ee0d5899331b63c974fa880429435767f96254ef46c9968f3fedaafeaf3e8f45634b54f5e0a5fc2d2373ab9e98d9acfe3697e642a18e0dfd9fbc2f094866d401f0a4ca2a456edf6a1a77b9c296c3922067eb3d5a5ca0a77f430e4c8611d8f05a1baac1635ef7ba83dfc69d301949856be4d2c8ab61de29cf39250c5794cbf5750cda95d0468afa2b7f23dba4ef5f5295a3bf4140018b7ed061884444f5bb1b7d239312dd739999536c684456ea06b -SIG = 2220119e83d69a6a3eed95fa166d1d1128a3f232ca1b78bc94b4d476c4779443614b8772aa2232cb0720a055eb71d8407f3ab19baa1d962c052c84c0bd589608 - -SEED = b216cebf878024c20dfc86ce4b37bdc47aa28f29203b5b44925065d993a259fe -PUB = c36edbb6254a913f08fe259e238780638f72ec0b3007264bcc60a9e81ee9298f -MESSAGE = 9c8717cc86fe02480bfd9e922bd76bffee2170c4cb1b13df834ac01d45006086297f1b8a26f2ba674d33e1d162f19367feba97352b7df2e75b309d4b6f8b07cc0eb6777e81e268e02d07f2a08f8f39d5a8320bfc01fc8c9227d2cf05e12891ff4de885a1c93371a0910ba53392aff9ba2eed9a2055977ec4157bd65b34df79372f4d50edbc48924353cfa1692319d88a7a5bb726254c209291e9b1d2c1a6c8236398109c59ed42a0ac9e7633c520734eccfea4fea95a47a8f0a068b4275000439cc97c57871e105cc0790e9dcc9c25d5af7063ffd05c4f3780e7bca4c456d0170da709fc6cb3faa72bdcf562908ae9340aef4d0c8b91f0fbccbcf1cd898b1c716f4f1474c3aa316242abdf6368e57a247ff2fd5ce23d187f694f11e38dfbfbc3d9db20903b4ebb449b9049ee020f6e2f508e8b2b165bad7464dbdd178cbd423233765d371e7ae1c3e878cdb5b824b20cb309867c0e473c067e6744008527b6bc076d077f4867622aeed1c253dbde7c6a76c7015962fb73391698600bb318ffa7b0136ee4ccb07daaf01f40ff9c194f98681f9faef8b6f9e99f95df0080da8966a8ba7a9474c537b92df9799e2fd16f788dad7a7bcc745226e1e6371f52ebcdbd144044ddfe632dfc0a43d3a450923170ebc7ae219e50e078a511bc12ef14cd14b5309f38abd65db2b2a7af2243b229c9fd2e -SIG = b7389ee78dd9763f9d2892912edcbe3e8a236b8bdc25f44b9cfdc8c47cd58168ab56eb0402a5bd752ac8f4978d2ea2b65d2fa85265966b9f57227ef4a59ae009 - -SEED = afcecea92439e44a43ed61b673043dcbc4e360f2f30cd07896cda20cb988d4e3 -PUB = d231f69235a2e3a1dd5f6c2a9aaf20c03454b9a29f4e3a29ab94689d0d723e50 -MESSAGE = 0b05f89ebb3397947687afbef0ede87cf3810676277037521d952a3bbbbdc8565988a095d8d4f6f59be572d3d821dd789977ef77a2fd7110ceeed9f3756ed8e188267b97a30ef8957c78aea3a2963deca61860545e0c40824881ebb1db10f607e10ddbddce400ea236ba4745aa99a05641976766789ed0da7db55fdab459ebd4b441a6282f7cfd5a20ea06effa335955e5fd29181671bc92c00052f7f75c39277c9a43b787ac9fb1516e996232a509774d1dc21d8c0513f7844b0a5b5f18957581f99044a14223ccda8a284de12fd424265fe57b270215f8fa9ff2bea517934e4800a47d346fb6c361cfbabeffabd9c4164f45156e245c977edb473642c3940be5ad6fd1a7119a7b18e98d6dc843e0d254c93d0146d18e5c62ede1490f89a605eb454f974778cfae20932e95477bd03bcdb97d5bcb76335942e92ee668f231e69c570ac5446d0f774066737fdf49f10ceb1b52d6d8a4639846a3373a7c6f3b4b3159fe2e7af7eee2f0df172d94d255d017651da3009005e5eac3176c09389ee40d70383bd37117eca083598a1801f592d057186e568e247c252be4b14f723ab7ddb97ae9768c2682fd63acc300779fe04e2b88874751346c9e0f97a2a216772ff9625c33bd7e29fed8003a08dbd33b5d17899c943c25e95ad754fb632e047c112af7f7ceba72362e1a3ddd2935aaf7f818a27c -SIG = a65545cf3df456b28d83a6d94c036a19d0d29fb065edc27e5e93a1f40279897e1c6f25959a725ababc87cf2ae727f3467b79570e902711917191d9cb0d2d660c - -SEED = b834c6e0facbff580dd3b23753959a4c2154c219521b3d27035d071f6599bd02 -PUB = d1c384715e3b3d02c13e090605534c7db740da2aa560f53200a3ced8beae8cf8 -MESSAGE = 6cf147b1605528a36be75716a14b420bcf067c03f1cfe9c4402f14987fbfc9d3ecc3ccf4f8d2d03a55900b8dc79af3b6e77436f69b1417ad4b68fd44e5e333ed90ea7943fbd1122609ec8ff6bb25e42e9914f5920fc72c4d013b6a9685c996fbd8352aafb184c22d9e47871a5280e4ab7dd6a5cfd10a5994a200f670e0b622a9394d4793d0a420e7d8806cb127c7ac690d45a2e94166cea672bcd982b0e9baad56312d2570ddde7e0b9e7f47136f0481d00f66a2aaca4d1b09d7ce6c5a98a76b68cd97d5793968d667073f8217f9054735340f9b149c0dce845b099e88d0709680f0f77603ff0a2331c558fc36d5f24da9a62d69af5190d21b5c857a1e08f014c6d456468665a7f845c66f9111f9c098c68940efcd87b657070cb9164bc9743aceb7439a0d01c0062a11af2e11349397f5d152872b13c5ab32f51cc58f1475ec82ac671561dcbd343cfb3c5f78d0fc73053c6004b0a4ca3f2043ff4b0c54275c4fcb9cadc6baabe57b1d5acd531e972ef9335136cd1d65512ba1f5b6ccc4b66b4250aafa2967dd4211a2742e0f177d8f4063899f61815cbe6d8fbfcdf74812bd40cc10084e46a99ac128058eaf16a49a24b6ae228ecf0109c52dfc06e37d6a333bcb24aba312164c6c0290485d251280538ce9541c0916640e36d6929dcd9588eb99577f5f6d82bcbb198826267e49f5daff2c0d -SIG = 0f19b7066d5792328a9800d9d4f8f67d5b089b541226a167dacd439fa485b0025a5dc7f2c7e23fc4a5c6869e7619d356399700c93650e89cd25b90fb9925e304 - -SEED = 2269a5d8f7ac2cd9048f5f49e349e5c435a159b319fe3b30bfac8d0d505943f4 -PUB = 1c817943dc39c24b01da38a487b175482460c609e4726349a9aa7aea9bc0fb34 -MESSAGE = 7153d4d9e641aa61920db0ff4bd537a6d6130a396554cc94537698f9cad16b99eebefa5f2776f2feaff6bd9a6904120c67e0883f6b96bbbb195e95aec753b699bab3d03944c13c72fc84e3f2cbf6296f645549111c93fae1a759bfcd16fc09e60bb9785535ad27da244ef2f857f2de99a6e92188890e452c7f5b9e3a4b968e11743b6fc7faf1275e5360a5468941797894d770fa7da364a337302239fe83ae0b0d084aa12acdc63462524e0eb10fefe81ba96f71f275f3449a3f8db21d58749a38853d39b0ad8e69891bd204dfca8f6c239dc9a0ac27f54db4238d4706df11d607369dc7f704da1d39f2e82af8c283d220c12431f56d803069b4acb77081c031ae3319fc77fca7845097fd727ad0d080895bba23e873d2def8cdc216c3eed61b08761bb9ebce0282cf502aaf6ce7e8c058637958c3ea1b72fe6e8df8d37ac055db6992587fabbdc467f52475644f918863af620492f34680f2056cbcab75e2323626c094759c0e0e99ef19759527250646ad760120ba386699d53934f956b8bbc7395bb496ceb2dd223c7b501b92d36a95f8f0a02eb5ba4dddf166b9b95b4a59e72a30c63cf21e6085751923d54b30281e52a09618e6f023ba0a21675e7f989b8991588c96c2b56a78f5d2945a7baeb6a0c1bbd5d95af3ee830f5809c794a15ab4b5f89dd2be2dfdcd8fe0520fda2b3f02a1ac0155 -SIG = be0fb3308a076a61a4a92a97f6ac55327190e1341d6dd410d86b41bdaf2d3374093ef720bdb77feb7014e0f77d3b809623c7ca53e2ae4b097113e96db77a2d08 - -SEED = e965b3f257356685c98b42b964a253fc495399cc94b099c2445fc81c759c68e5 -PUB = 689f5410c8e0f4d37bc07c85d7cce6c9b63601f9bdafecaa448a5eed64afc8c6 -MESSAGE = 6f20a9ad27e30dac76b30d4c19a5bd6dfd6d049213f4becdd963d72b8b2dad687b003808201d50f7dd6e599ef58ceb6068c545ed99b9e763f9b0ec1db5fcbd7d490a121ecec6bba1eb5edbd6de85364707c55e300c8b16bb2530f70898136689c988591d5391d9cc347d7931061a9b7696e2c9f35bc0d304a81c2cf954d9c3a88a22e1d67bbe0a85308477f62918c25db504e4762f0e3b4246007908ac701779006b77d72510edc69e17d0f6394c77e5551875a446f81233415d0a91a0460b51c413d644e850f8557281c46699e53b22a7c73b068ea38652cff3b0a7b8ba30971eab18fdbbd8739ee1ee0cd5cbfb7d5d41757b6331271fb7809751e203513c9970f66d91bc0ce062f4fcb28be0a699867b79594c6458a0d307acac91f413c4615877dc53e1b018da5cfce1b63f40be1e55274c4374cdfc21524499a683a231adef779d1921440e5d3fdbd5033dc983cfc931abe638c35d5a95869e9fe3d93eb90bd1861f855ce1f608b7bcad6b5e1bd97edc95ed5ddcbcb715d919f5ff77df2da438f7a3a98286dbd5b6e043fc7372f69704f09d865530f4f0edd3300f185b6d73d8716d32d32b1c9ac2ddf4f902d3f216d35a33f368095ded10be94bb53d6f256560fac2f4af0edf5c5c702143777126e7de32d07493932662129ba0e7fc7cfb36fd2ca531646e8cd2211854fc510af3b1e8cafde7a -SIG = 8d2bc4e1cd256aad8a151dec010dc93a5e5cca58298dec49cbc9c4717b5cfb5460d430be726b0f302cbd926beea19aa3c93aeb452a44f6007af49adf2f05bb04 - -SEED = bc3b1e0bf8d69ea5b4cbbf10bb33fc955adcbe13fc20af8a10872ce9df39d6bd -PUB = accd2628155919bbc7f9d86f91dafec35c711a78c79ad360eddb88fa8a180b2d -MESSAGE = 4c73e04abe0819de1f84d70541eb1bb61c4f42920e1f2d1d9e6281a8a2e8b3eb45537d83969027f99ef0ea27ca085b13f9db480f00c02f3fd7429dd567708953bbf3b9e8e2c6ac4d321ff8f9e4a3154723085a54e9c9573cc7350c09f8973f948b08730373597a5fd0349821ae0a3cd6c84992b189128f3490987e1e9ad4f6574ca538fdfd83284c1eb0953f24c08f74932d4364dbbef922542440dae80424a92eaef27c1889bd08c44f9df03a3af30dffb48fae445e625f4d9265cf387a1da35fe4c231504535db72ea81a186805f856ebe6a6a65241432530fe6c960c5f9be6c22957060304e9dd8efbc1e482e7ddbd8af03bf2382899c986d916611e4f27ae52f817ef01b6a141fe4f685d94dc8cd52830043934587704c1e642e8fe56be6d6b85bf4a6feb2b6858f1f007f99d39ea04c9fe5fa7ef1b91f495ed0e7fa4213dd68cea42b6729f95031907e27c44098094386fabfb04ab9b4de3d6861de462312c59b27c76f7b6a4fc71ea0d5daf6b7320521a67e5cb37504976ad73dae2d649feb75e2eadd3401a7f2f36e16dfbfbdb2af5716cba1bce20cd47ce1c1d7be00697001fbbeb4915aa6e5393b5ab20e0f31f5119149a2cb4c4d452c8156113ac7824f84f09aeb81202e8dd3dac0aa89399b5a38b1e218301960a37d52632eeaefe3687455464288eb17d9e19a3a72ed9de32c17be79a3b9 -SIG = 6ef7f0e91f2cc6715f8e5a98574b4400c261a643e0545ff26747f8e1739899d76640b6451c43c1d03a4775b54fcf9bce18ed3fccad338b7764024fdfa2de8201 - -SEED = 10718fa6e2d7f6ed38fd66cb6dbfa087e8f1e8a8a24fab58d79d7954b8720c3e -PUB = 870d4f666d06fda9f9511b58602eec050d754ea6d8e79cdd19f601c477df1aa0 -MESSAGE = 41259b6eef13d6ffe33cdde799b995c40be782cf978440b66be51c440582abd42f526696bb3cb92265b1ed0e4bba764cae2839830a252635dc80ce5f73d521b3d6ff03ac30e198ad20567e75a34fa825ebf9841508da84cd674236ca7b43de3564c94ab079408fd94137ce3f90a5dd5d3ac39a05ec86715a8f025e4539a7640ab88836f4efbabd5e1652c49ea21613acfe343a880ee5a42f2f9134ef4e3716b16d134a9c4c71c39b3c1a857d3c89439783eef1edd71bf4492d05fd18673a5242ff4187b9de47ad4968da49dba5a6092e95ea27ddfc7448dcf5972d9d228d63e5291ba6e6fbd07e3241f9366ca4976bb04b22d01f0dbae794fa9c1d9029f88a83602b0e0ec55e22c37b201125cadb5341ef73f6da1abbe2b1c475f0750345b1be4259d8c28531ffe7788667c410dac339918c869b00ab80f20bf7990d366f9b3d5e8eb2f48d7ed0e64b85dc9fe3bb998b1eecd1231e902d2d152e09da2d2592bdb32c8cd2e2c489496b2980c03dbb09ec7f8a4ea2c7020f2a0faa657cd6ced48d6da27864cf5e97eea9b3c2f0f34abf8d87bd2adeb60c7272fc4306d955bdc8023d7d3dc2f3dafe9ebe8a8d138965a7f6ce93517cd2099663f67c34552176ddb595ac6ea5609febcf24c7d69d412709e578670a21ac8afccb8bf2b18ff3af7de21dc71d50d60d37b6ed729db04beff7d34b2920d87551ce15 -SIG = e1659186f1f76fe43ac8a11703360fbeff53b5e57b5974aaa08e2575579c27084cf6802e7c206347314475b603197494e7d61fe4b1ee7b78e18d94469352df0c - -SEED = c1d4724c6cb1bc6723b2b43034278b3c5b48fed7f8a3cc2318033e7552047351 -PUB = c27e392e7c3664b9061ea76d2575dd7c41eaf1da3a65f3a986e0a57f6c40c17e -MESSAGE = deee99d7a77d4300c17aec1ab323c571c6e9e73a43491a3c7888b76fc03ec43d07af42a05a2aa322d00c8560acef314106b10b9bd12654357ffa26f2390050da63d668c9e2df548f87639e096a35853f82e761fd711d2a265438f5d4db5e32775708150da6cb686a2b4ca211d7f00dc0abcb2ca150e791116a10a5efcff3514dab8ed80a7092c3a015152cb25d9f86ec0d1ca67ddab44d64eeb1f931bfab2ab188956c743db4814808c5cde1b0745b3edd340eb03ffcc80a78f3db310f4f5c20009fc0279c2c1bcb3cedf990bd0e20c6f9fb7515ad6e933b07e99da6ac32b97141187ef63bdb1062e37220a4dcd419d6244cdcc34ea41d0bcbc3138b1d54aefc0190e30b187db073aa7d6cfe04bd3fd2ac00313e3ddd64a181935ca4b8b2a85d36bc27d97b7626767b93ee38def8b6b2c8da9b00263614342faa9d3e738d2713c45ffbeef8c84bcdbc8da4309c8445530f5c617dc866251f548950a14f075aa3117f96e41f899dbe7340b1d90a1352d3b8fb41b79f16a82bc2e4a193b8a7232400996b73b1fc00b2ec1c667577f82824d39fb7f6e7692dcd97b1d8ce94083ca197e9a5d40fadff0b9ac57e9de761c156e6d31d52c332d513e9f58697dcbdd80a5e42c551702c3de7beccc3db845b1a04c8cbd41695ea7428abba89e0dce3e3d9e70230ae9147c2b88559dc695d6809a51ccbc1dd9e089c585f -SIG = d37a6ec82ed45ca9b4855de9cb942564e883ff70a79b8e712d5f604ec8974de5363ac849cbab28e7aeeff28ed3f2d14b608b3146c2efe0735ad815c7d75a1a01 - -SEED = 37c070d4a53b13be760635110d1bd4f01920225afabec576faaec910f2926d1a -PUB = 0aa85f2ab1dff895d1fad0c119f2bf57126aab601c528d37698e97702d35f525 -MESSAGE = 10c646447f81ad94d015d86d0d98b2452dca60a47ab35264035e33a0942b954e3e23b91d8123b8593c6af7c8d3ecd290e0e5ee36fd4e53b7be633a6cf027a5ac3f0f679eb1bdd210a38ea6e48b0558e303010af474e7f6df2a4e457699fc38e36938b05ffcaa1b694e32f3d1b2cc5d00cf256f12184c873e519089ec1df15b0dc76e7bfe90780df58136fe597fce894ca563e08efa0f2d4d208bede9a874882873d251baf019fe46d1d6504b3bcd243b795351f34d2e7606aa975528ee50d59efb6ee6992a89b2426956c2ca4247e0df0129852983e9767a8eed1bc7335ffca8d0289f04807f67ca7da971f58db8b9bc9fdbe4f83cfe9a00f1ca584798bc71d851ff7cd6c51b8990aaba4d38b416b92240dfb70ee3c12b5e731057762ef90823fbf683ca06d05c20d3ae2b97a83ebe70ae17afff9d16609d546d8d3c74bc281884894f3d49e083f10ae7c11c1dca0effefcfa6e0f1535081fac3a2819fd2e3265527182ae9d391b232bb7542e68455cd267760db652d19e22fb2ed11cd1305ba8d98c1ebf2d1969b24d64f3e319af74e092006d2a3ff744872a20ebf18d17748ab7110805096ea136bce2f968b205e650b803c531d06775ae5ceea28bb92e9a0edec8951ce2009a88ee1b64d9b9e89f69051203384210a102a44d2d6703173b68507dceadd3bf6510df2a5cefd9c80e4f385b2f9e6215813ed32 -SIG = 9da60cc4a64d07dee1346bd3d3010995ce2738208ab35b34c2a8fd1787ae3a1e207fe784525154fae4f5794cd8503045fea85cf77fd92f6a70cd0c5a52c0810e - -SEED = 1126496a582ce58d3d618dd8a3933547aa7a8a30fb54063b8dfdd31671c6c73d -PUB = e10229c623fa8ad8982c3e4c36ff52df0f219b57915b6e980e5fe72ea0962e22 -MESSAGE = 6a4b52d730ddab829b2a179590cbd4c372498e9f439977c0a10dc13c0ae1736eaaff063371434fd0da80360ec5890607d2fae1c9a2e1ab0b7f3d667f5b1b9c418f18b10c9e6fd669d3ebec168efef44163e577a2ebd0f2cb768f80c23188e86069e4d10f410306cedd7a341a61e0f4f3bc25041bc2f922ed073e1e2f1b709c579d10630f33071754d707894a1c62190de18882c564dc4c01dc545dd8966404ed78fa3267a9469f63b6120abb65f9b3ba3eee28d79c2eb4e7020cc6987dfc5c29672f8c0fa3e690d584fe000c64f352610179621bfd5ff3eb30d18f1a0250416db93b1c1e93cf8a3646517560d1cc8fff822b51ef27b200e987b592390753453ef138bd3d29db7cb1b5f45e4795b89c53f49704192752237c6ab274849f9594ee9777f6efe70483129d067f97199d9ae36090703864f7ca4750a6f3b6ff83824c910484394d1e2eceba18446fe4e994ce07433a740ddd05f0e396d482894e6f14acf7b97bae6c7eb88703039fa785d60a3af78b13243a4f88dde1d998617f2e3fa7eafc2f435dd4ac1ea9c238407aa09b4eea8ed434927b406674ac270458cfb3bf29c347f94559613179b9502192321b88e9af0a90e9a4ab9eddaae382e3734d1415ebe32499c34e6fdeaf15b0d9787985e08dfe495460c54f6743d81ff16881e5e30c51f4b092373783f12423c3e1ae8591130a269980caa1cb5c -SIG = b30eb56ca9b120bf849a3a9d56af033de8a590c9e1240c1e36dbc6cf0a71b78a11ec143fb9959a8f25b57711d6a90a67e01be3a4da2b69394869bb8d64b87e0f - -SEED = 9c167aff3b1b788f133d422de8ca9a64316409f9e35bfe22032ec417ae9abc6d -PUB = efb534f0d47c068e77b28a906d95ad8d213a4d4fc1c70542f01e596d57b5f019 -MESSAGE = 68ac0fc2b607ba38e377fae845c808c8f9fa614eb1f31158a9620a937d3e301e85acaa69144bc349a39dfb582041c4a197ae99b4d4d59b7a2ca3d16228b5591cbf57c18a781efd19193c47b16c6023a3a8ba3d668f05a37f1e83b0d7febdd10f63e48ef7a20e015b1c6725d4c300a986c60e3a115469c8e52ba05b51c05d0af40d89fd9ed76f36950aee3c7819898a903cfe0361a91c69100b495141e86ee79d63d17403fb1a1629ef63cb7e9d2720cbfff0002b190bcdc26794124dd38d42bcaa7175405eb0bbcf8e37d65d05a37195b479371fa2bbbb167d91cee88235dd72ea88fc73ce3ce43d33b715f25f192ec215dac124899c5e7586e86340d8cbe53735defbe02e4cc9fde69fb9794d1db72b98c0f19766ee5138bbfa78909aa299b4913c499deaf54b4841d5044829984936700dcf92f36542b2fc7e86441b9925f5d0b78c17a85cfcfcb20b0fd751349c27463abde4d27df74265288713f96dea013b945521808b4996b1b2dc0338b6d236efd6d2b27dafda46ec5fa32b965e8bb5e8bb61bd966edeb774681e0ea8c17b8c99fa7d660f0f66c9bc6d95cbd7dc094724098eb05191b53a3df6566b9c90e0d7dff2943848b61a20d48c22b6d3c958e293d709c8f48110230ff51918562877daf6d920c85a82e07c451fe7ae9759c0a77e97bb298b5d0592a41d08f67a4ed5a1bb41e937b6a68aeb38fd5be9 -SIG = c9ae67fd6415dcbab292fab394ca6c3b7d90ca244dc6a7764e74fd202bf4b2905bd2030e6beb914c3c238db371b1cba6d9261aa392ec871a4b8b12fe9c1c970e - -SEED = e9948805eb341b2867479c668fd3532c309941c0ad4cb2e54231756e6a1bdecb -PUB = 5447a8e34d6a640002d8d60bcf1ddc711e4c465c94c34b50bdef358960ff81f1 -MESSAGE = 91cffd7eb1cf6bd4756bce6a30af9dfba26ddd1cce0394c194a3e39cc3d1cbc221b7eb70bea18d29c267457176a3c9e53c18e47d10a67c464505197702e6b2470d38869db5174b158f9992e4435d02246f540258dedd3ce33df582555a681fb76ecaccb1c2989b177e3b7e454aaa529de59bf5a03123d571df2e7f7cb830805c58b74a653bac0e5a888e08dc2236d6cd496aa06d0d67cf3b335e218c49dedad82fc1be9ef20cac61905c30eb132d739b16ca8a8c906619c0e0d8b33985327e36f3d4b8fda387c186cc50443104db761f7ff9301270204a713e58902101fad000ce931647c577fdec148dca95cdc08918ebed037c60332fadf088f036083ebc92e173b7ddcc30c493f27e69cd17a20d30b78f83a72e4f5a747d86d96c5e1bb7a438166204013e2164d6aabc0d562f54015c365c80445607145e5692ee34f6353077fab7452d88ce3eb01d2b3797dc91b341a3a726301516baae18e851f74dfbdf0866bb2376867de55231e362c472c52116544cd4f81e93571c4ec820e7e653f4e21be0a942576c9de91e7d1251683d859de448f822dcf3d2cf55ede2f9c71b6063d1373061f8f5936b698d1384e65459ea2bc26ec96775ef425207432dda0ac1fe28526c5e4559349c3d8df9918230f4044683cc2c1b858d141ab8d0805bb9336067522aa89c810f3eaa7ac2d8dd28c3751225a19ecec8bcca52439946 -SIG = d3dc62d6ce9c766f2abaf9a7fbe09d6bdb07a4747b56080db09beb4a4e804a70d7ddf4119475c7be834f31956f4a71dad029cdf2363dd0365ce22dc27f078003 - -SEED = b01753efa73bb3de7aa778be7afcbff66a5d3e2c2f8b5aa2b048844050996965 -PUB = d0cc6cf109c999fbf6d16f471fafd0232b0a68d4c46406ec7545dbaba8194158 -MESSAGE = 684e612f27eead0d34844cc81ba911c28aaf6d66e71229e8cc3462f7c7a050daa30cb74471150f07dad459b5a91358476c0598255d8a642dd7c0802811bd88e4cac597efe41ebd96cd0f3b5ce72db4be1a3dbd6b84f5446e3da600d3b1d2b460a009bd31cacd98a91518ce33e9a703d404288736ccc43103fc69e67974f31652fa3dadef3337f6c897a3d201303c8f03597b4a87c98f291ccd58a3f1e898332aa5993b47fcb5ddaa1c0868b643742d0e4a4b9cd427038b3b74999bc89ac3484c0ca13f25aae8e78ae1ccee6218accab81a4f694f5324a347629d49b55e4037504a9acc8df58c6841dddcd4fc4347f7b6f1fd9de0564577e6f329ed951a0a6b9124ff63e22eb36d3a8863bc1bf69cea24c605967e7d8948953f27d5c4c75f0849f872a3e3d16d422fa5a11e1b9a74df6f38b90f277d81fce8437a14d99d2bef189d7cac83ddc61377ed348b3c4fc09ec2b9005925d04a71e26d641667bdf549294331c6ea01cd5c0bd1b6a7ecfda20b0f1929582b74697cb262c3927d6b223f4b5f3043aa6eb4571a78e9da11c2b36f64552580caa7b5fa6b90f929e0162e608d1240d7242cd2f47025c03debe059b1dc94770232bc6765148480bb1d9f50da1ee6448cf9c88b19dd459932c06ed811c4a64a12d5938bd1c757bcfaeaee8933fe5fff21763de740482bcf1ba59afdc8fcf873c3d507bb394e32e45f736519 -SIG = 16b7421227ae09130685cbb1a0c60aa57a5e1afe1bbe6bacea0c281bcc8998e6824a772c3208a6b6b4d236695505c9be82700cf93a783985a39e16e377a7410e - -SEED = 4f4b20d899366f2f23ee628f229b236cf80f43ba183177c97ee34829546f1742 -PUB = c94576641f4a893cdfcee7b39fc21929b86b349976d7b0a46d39a588bcfe4357 -MESSAGE = db8ef02e3033e6b96a56cab05082fb4695f4a1c916250dd75173f430a10c9468817709d37623346ae8245b42bda0da6b60462ccfdfc75a9ab994e66c9ab9fecdd8599610910affe4f10215cb280bf8f9f2700a444796dae93e06c6bea7d8b4fe1301baa79ccec769368feb2442c7de84f095e6b3bff63d388cbafb2b9809dc38e9b12ebd039c0a57f4d522e91ec8d1f2b8d23a4a0ae059af85393bb0a15f749110f6774a1fd731a6ec213e4ff435daab546d31ed9ec3b6d8cc2edacebf4facc5566556eea92e5b3f2542239b25e28012dd4ef40072eebf83ed2a255181f3a442189d68c6c609f4dfdf3db7d67d087a2fcd6d2dc50bbfed8bfbbfcb74d3c41f02a87865b13b8efcf5c3581257be0aa913f60c370527bde11a475c136a17c5eefeb03f5bff28693ed841e8ed1f7c29102f5599dd444009bcea6a92d5574152458e0caf8a36aa72b5dc4908a6461c9b741453005c8fbcc68113ae184208ee14b835480c6efafed18a76000b38e5858290f4d51f52f096cbe490e1eb5cacb226ec495a55a7fa457843d57fab67f8be7e209334785bdd665d7b63e4daf57b6e78928b603c8c0f9bc85464733b61273ef9e2b8a0cd7c3bf8ee0a6872e34d5a27a625e35eaf7ff5440b8b141af704df70c9c18623bd11209513192505105cd7bcfa5f0d919da706948fbe1f761f315846aa3b4813dd9ba3d81b9204e5409c0382b6eb -SIG = 0f80ff5d17488fe26f93c543b04ed959b5f0643fc61c7f2c3bc60132ba9c6210c8b250ea5e84d07b01de68bc174414eeeb31fdc2ba6823e231e312a91ededd02 diff -Nru temporalio-1.3.0/vendor/ring/tests/error_tests.rs temporalio-1.3.0/vendor/ring/tests/error_tests.rs --- temporalio-1.3.0/vendor/ring/tests/error_tests.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/error_tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,7 @@ +#[cfg(feature = "std")] +#[test] +fn error_impl_std_error_error_test() { + use ring::{error, test}; + test::compile_time_assert_std_error_error::(); + test::compile_time_assert_std_error_error::(); +} diff -Nru temporalio-1.3.0/vendor/ring/tests/hkdf_tests.rs temporalio-1.3.0/vendor/ring/tests/hkdf_tests.rs --- temporalio-1.3.0/vendor/ring/tests/hkdf_tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/hkdf_tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -15,13 +15,12 @@ use ring::{digest, error, hkdf, test, test_file}; #[cfg(target_arch = "wasm32")] -use wasm_bindgen_test::{wasm_bindgen_test, wasm_bindgen_test_configure}; +use wasm_bindgen_test::{wasm_bindgen_test as test, wasm_bindgen_test_configure}; #[cfg(target_arch = "wasm32")] wasm_bindgen_test_configure!(run_in_browser); #[test] -#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] fn hkdf_tests() { test::run(test_file!("hkdf_tests.txt"), |section, test_case| { assert_eq!(section, ""); @@ -57,7 +56,6 @@ } #[test] -#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] fn hkdf_output_len_tests() { for &alg in &[hkdf::HKDF_SHA256, hkdf::HKDF_SHA384, hkdf::HKDF_SHA512] { const MAX_BLOCKS: usize = 255; @@ -72,7 +70,7 @@ assert_eq!(&result.0, &[]); } - let max_out_len = MAX_BLOCKS * alg.hmac_algorithm().digest_algorithm().output_len; + let max_out_len = MAX_BLOCKS * alg.hmac_algorithm().digest_algorithm().output_len(); { // Test maximum length output succeeds. @@ -124,6 +122,6 @@ fn from(okm: hkdf::Okm>) -> Self { let mut r = vec![0u8; okm.len().0]; okm.fill(&mut r).unwrap(); - My(r) + Self(r) } } diff -Nru temporalio-1.3.0/vendor/ring/tests/hkdf_tests.txt temporalio-1.3.0/vendor/ring/tests/hkdf_tests.txt --- temporalio-1.3.0/vendor/ring/tests/hkdf_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/hkdf_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ -# Test Cases from RFC 5869. Note that the parameter L is implied by the length -# of |OKM| and so it was omitted. - -# A.1. Test Case 1 = Basic test case with SHA-256 -Hash = SHA256 -IKM = 0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b -salt = 000102030405060708090a0b0c -info = f0f1f2f3f4f5f6f7f8f9 -PRK = 077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5 -OKM = 3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865 - -# A.2. Test Case 2 = Test with SHA-256 and longer inputs/outputs -Hash = SHA256 -IKM = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f -salt = 606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf -info = b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff -PRK = 06a6b88c5853361a06104c9ceb35b45cef760014904671014a193f40c15fc244 -OKM = b11e398dc80327a1c8e7f78c596a49344f012eda2d4efad8a050cc4c19afa97c59045a99cac7827271cb41c65e590e09da3275600c2f09b8367793a9aca3db71cc30c58179ec3e87c14c01d5c1f3434f1d87 - -# A.3. Test Case 3 = Test with SHA-256 and zero-length salt/info -Hash = SHA256 -IKM = 0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b -salt = "" -info = "" -PRK = 19ef24a32c717b167f33a91d6f648bdf96596776afdb6377ac434c1c293ccb04 -OKM = 8da4e775a563c18f715f802a063c5a31b8a11f5c5ee1879ec3454e5f3c738d2d9d201395faa4b61a96c8 - -# Variants of the above tests. - -# Variant of A.1. with zero-length output -Hash = SHA256 -IKM = 0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b -salt = 000102030405060708090a0b0c -info = f0f1f2f3f4f5f6f7f8f9 -PRK = 077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5 -OKM = "" - -# Variant of A.1. with hash-length output -Hash = SHA256 -IKM = 0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b -salt = 000102030405060708090a0b0c -info = f0f1f2f3f4f5f6f7f8f9 -PRK = 077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5 -OKM = 3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf diff -Nru temporalio-1.3.0/vendor/ring/tests/hmac_tests.rs temporalio-1.3.0/vendor/ring/tests/hmac_tests.rs --- temporalio-1.3.0/vendor/ring/tests/hmac_tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/hmac_tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,16 +12,15 @@ // OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -use ring::{digest, error, hmac, test, test_file}; +use ring::{digest, hmac, test, test_file}; #[cfg(target_arch = "wasm32")] -use wasm_bindgen_test::{wasm_bindgen_test, wasm_bindgen_test_configure}; +use wasm_bindgen_test::{wasm_bindgen_test as test, wasm_bindgen_test_configure}; #[cfg(target_arch = "wasm32")] wasm_bindgen_test_configure!(run_in_browser); #[test] -#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] fn hmac_tests() { test::run(test_file!("hmac_tests.txt"), |section, test_case| { assert_eq!(section, ""); @@ -50,7 +49,7 @@ } }; - hmac_test_case_inner(algorithm, &key_value[..], &input[..], &output[..], true)?; + hmac_test_case_inner(algorithm, &key_value[..], &input[..], &output[..], true); // Tamper with the input and check that verification fails. if input.is_empty() { @@ -59,7 +58,9 @@ input[0] ^= 1; } - hmac_test_case_inner(algorithm, &key_value[..], &input[..], &output[..], false) + hmac_test_case_inner(algorithm, &key_value[..], &input[..], &output[..], false); + + Ok(()) }); } @@ -69,15 +70,13 @@ input: &[u8], output: &[u8], is_ok: bool, -) -> Result<(), error::Unspecified> { +) { let key = hmac::Key::new(algorithm, key_value); // One-shot API. { let signature = hmac::sign(&key, input); assert_eq!(is_ok, signature.as_ref() == output); - - #[cfg(any(not(target_arch = "wasm32"), feature = "wasm32_c"))] assert_eq!(is_ok, hmac::verify(&key, input, output).is_ok()); } @@ -98,12 +97,9 @@ let signature = ctx.sign(); assert_eq!(is_ok, signature.as_ref() == output); } - - Ok(()) } #[test] -#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] fn hmac_debug() { let key = hmac::Key::new(hmac::HMAC_SHA256, &[0; 32]); assert_eq!("Key { algorithm: SHA256 }", format!("{:?}", &key)); diff -Nru temporalio-1.3.0/vendor/ring/tests/hmac_tests.txt temporalio-1.3.0/vendor/ring/tests/hmac_tests.txt --- temporalio-1.3.0/vendor/ring/tests/hmac_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/hmac_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ -# HMAC tests from NIST test data - -HMAC = SHA1 -Input = "Sample message for keylen=blocklen" -Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F -Output = 5FD596EE78D5553C8FF4E72D266DFD192366DA29 - -HMAC = SHA1 -Input = "Sample message for keylen(); test::compile_time_assert_send::(); diff -Nru temporalio-1.3.0/vendor/ring/tests/rsa_from_pkcs8_tests.txt temporalio-1.3.0/vendor/ring/tests/rsa_from_pkcs8_tests.txt --- temporalio-1.3.0/vendor/ring/tests/rsa_from_pkcs8_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/rsa_from_pkcs8_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -# RSA 2048-bit key with e == 65537. -Input = 308204bd020100300d06092a864886f70d0101010500048204a7308204a30201000282010100b9d7af84fa4184a5f22037ec8aff2db5f78bd8c21e714e579ae57c6398c4950f3a694b17bfccf488766159aec5bb7c2c43d59c798cbd45a09c9c86933f126879ee7eadcd404f61ecfc425197cab03946ba381a49ef3b4d0f60b17f8a747cde56a834a7f6008f35ffb2f60a54ceda1974ff2a9963aba7f80d4e2916a93d8c74bb1ba5f3b189a4e8f0377bd3e94b5cc3f9c53cb8c8c7c0af394818755e968b7a76d9cada8da7af5fbe25da2a09737d5e4e4d7092aa16a0718d7322ce8aca767015128d6d35775ea9cb8bb1ac6512e1b787d34015221be780a37b1d69bc3708bfd8832591be6095a768f0fd3b3457927e6ae3641d55799a29a0a269cb4a693bc14b0203010001028201001c5fb7e69fa6dd2fd0f5e653f12ce0b7c5a1ce6864e97bc2985dad4e2f86e4133d21d25b3fe774f658cca83aace9e11d8905d62c20b6cd28a680a77357cfe1afac201f3d1532898afb40cce0560bedd2c49fc833bd98da3d1cd03cded0c637d4173e62de865b572d410f9ba83324cd7a3573359428232f1628f6d104e9e6c5f380898b5570201cf11eb5f7e0c4933139c7e7fba67582287ffb81b84fa81e9a2d9739815a25790c06ead7abcf286bd43c6e3d009d01f15fca3d720bbea48b0c8ccf8764f3c822e61159d8efcbff38c794f8afe040b45df14c976a91b1b6d886a55b8e68969bcb30c7197920d97d7721d78d954d89ffecbcc93c6ee82a86fe754102818100eba1cbe453f5cb2fb7eabc12d697267d25785a8f7b43cc2cb14555d3618c63929b19839dcd4212397ecda8ad872f97ede6ac95ebda7322bbc9409bac2b24ae56ad62202800c670365ae28671195fe934978a5987bee2fcea06561b782630b066b0a35c3f559a281f0f729fc282ef8ebdbb065d60000223da6edb732fa32d82bb02818100c9e81e353315fd88eff53763ed7b3859f419a0a158f5155851ce0fe6e43188e44fb43dd25bcdb7f3839fe84a5db88c6525e5bcbae513bae5ff54398106bd8ae4d241c082f8a64a9089531f7b57b09af52042efa097140702dda55a2141c174dd7a324761267728a6cc4ce386c034393d855ebe985c4e5f2aec2bd3f2e2123ab1028180566889dd9c50798771397a68aa1ad9b970e136cc811676ac3901c51c741c48737dbf187de8c47eec68acc05b8a4490c164230c0366a36c2c52fc075a56a3e7eecf3c39b091c0336c2b5e00913f0de5f62c5046ceb9d88188cc740d34bd44839bd4d0c346527cea93a15596727d139e53c35eed25043bc4ac18950f237c02777b0281800f9dd98049e44088efee6a8b5b19f5c0d765880c12c25a154bb6817a5d5a0b798544aea76f9c58c707fe3d4c4b3573fe7ad0eb291580d22ae9f5ccc0d311a40590d1af1f3236427c2d72f57367d3ec185b9771cb5d041a8ab93409e59a9d68f99c72f91c658a3fe5aed59f9f938c368530a4a45f4a7c7155f3906c4354030ef102818100c89e0ba805c970abd84a70770d8fc57bfaa34748a58b77fcddaf0ca285db91953ef5728c1be7470da5540df6af56bb04c0f5ec500f83b08057664cb1551e1e29c58d8b1e9d70e23ed57fdf9936c591a83c1dc954f6654d4a245b6d8676d045c2089ffce537d234fc88e98d92afa92926c75b286e8fee70e273d762bbe63cd63b - -# The same key as above, with the last byte removed. -Input = 308204bd020100300d06092a864886f70d0101010500048204a7308204a30201000282010100b9d7af84fa4184a5f22037ec8aff2db5f78bd8c21e714e579ae57c6398c4950f3a694b17bfccf488766159aec5bb7c2c43d59c798cbd45a09c9c86933f126879ee7eadcd404f61ecfc425197cab03946ba381a49ef3b4d0f60b17f8a747cde56a834a7f6008f35ffb2f60a54ceda1974ff2a9963aba7f80d4e2916a93d8c74bb1ba5f3b189a4e8f0377bd3e94b5cc3f9c53cb8c8c7c0af394818755e968b7a76d9cada8da7af5fbe25da2a09737d5e4e4d7092aa16a0718d7322ce8aca767015128d6d35775ea9cb8bb1ac6512e1b787d34015221be780a37b1d69bc3708bfd8832591be6095a768f0fd3b3457927e6ae3641d55799a29a0a269cb4a693bc14b0203010001028201001c5fb7e69fa6dd2fd0f5e653f12ce0b7c5a1ce6864e97bc2985dad4e2f86e4133d21d25b3fe774f658cca83aace9e11d8905d62c20b6cd28a680a77357cfe1afac201f3d1532898afb40cce0560bedd2c49fc833bd98da3d1cd03cded0c637d4173e62de865b572d410f9ba83324cd7a3573359428232f1628f6d104e9e6c5f380898b5570201cf11eb5f7e0c4933139c7e7fba67582287ffb81b84fa81e9a2d9739815a25790c06ead7abcf286bd43c6e3d009d01f15fca3d720bbea48b0c8ccf8764f3c822e61159d8efcbff38c794f8afe040b45df14c976a91b1b6d886a55b8e68969bcb30c7197920d97d7721d78d954d89ffecbcc93c6ee82a86fe754102818100eba1cbe453f5cb2fb7eabc12d697267d25785a8f7b43cc2cb14555d3618c63929b19839dcd4212397ecda8ad872f97ede6ac95ebda7322bbc9409bac2b24ae56ad62202800c670365ae28671195fe934978a5987bee2fcea06561b782630b066b0a35c3f559a281f0f729fc282ef8ebdbb065d60000223da6edb732fa32d82bb02818100c9e81e353315fd88eff53763ed7b3859f419a0a158f5155851ce0fe6e43188e44fb43dd25bcdb7f3839fe84a5db88c6525e5bcbae513bae5ff54398106bd8ae4d241c082f8a64a9089531f7b57b09af52042efa097140702dda55a2141c174dd7a324761267728a6cc4ce386c034393d855ebe985c4e5f2aec2bd3f2e2123ab1028180566889dd9c50798771397a68aa1ad9b970e136cc811676ac3901c51c741c48737dbf187de8c47eec68acc05b8a4490c164230c0366a36c2c52fc075a56a3e7eecf3c39b091c0336c2b5e00913f0de5f62c5046ceb9d88188cc740d34bd44839bd4d0c346527cea93a15596727d139e53c35eed25043bc4ac18950f237c02777b0281800f9dd98049e44088efee6a8b5b19f5c0d765880c12c25a154bb6817a5d5a0b798544aea76f9c58c707fe3d4c4b3573fe7ad0eb291580d22ae9f5ccc0d311a40590d1af1f3236427c2d72f57367d3ec185b9771cb5d041a8ab93409e59a9d68f99c72f91c658a3fe5aed59f9f938c368530a4a45f4a7c7155f3906c4354030ef102818100c89e0ba805c970abd84a70770d8fc57bfaa34748a58b77fcddaf0ca285db91953ef5728c1be7470da5540df6af56bb04c0f5ec500f83b08057664cb1551e1e29c58d8b1e9d70e23ed57fdf9936c591a83c1dc954f6654d4a245b6d8676d045c2089ffce537d234fc88e98d92afa92926c75b286e8fee70e273d762bbe63cd6 -Error = InvalidEncoding - -# RSA 3072-bit key with e == 65537. -Input = 308206fd020100300d06092a864886f70d0101010500048206e7308206e30201000282018100ac2d26e81b524ff75bb23d79c5eef2258546a1cbc9ce00cdb453449ad3af0d38d748bab51533ff39aabe9d21a0b1113f57764a6c27d10c97212296e3033814b8b1ec1d4b8cb00a4d8174dce02a7a73149d195ef83c3ee0334a8bf94d86dc0e8ba2a5ac80343e8124ead35dda110f106436813fae364113f8136a79f7791b035549dc7f7a1492ff0cbbbae937eb7e05ed997a3023bc3622def643a13aa4b20f15b4c293ccfd64a26db61623ae4fc69bac32162953cb37c93216c009ca217bc9b4cfa463e22b9d083d1c42f321cb8c248c29090194c0e5e94957ca2a34d62bcab2a12acfbb4565bf2576583a57fd78b810a7f7c70aec118e7e9bb7fba9c80c10acb8154af0e0e21ee4e488393c9dfd977aa7c245925fb5f880bf1074d916710630362c246f0270d70cbb546bd5ef07e423c37f1f446707c4d6c3874f9c7abfe80f873884911a6a98514b34ef147b1e7ff93c9497b57c73653f391d74bce6db9699cfb3fdca698427db519f08e33b16a7105b27f1387aa9958a674d777c1403e03302030100010282018043901045627b415fea7e9dfb0bfdc0cd9267ee139ee41492a3e14cf9887997b1a76125caeb40153616d767a78b7c102d8fef9e32a4c936ac935714688e99d21fcbc9c09125eaea90116dbf42c3c87b222aa78b09d3f2445e3c318329b5f2e24e4f0bbe0e2cf21e1153888fba83992ab07866ed8b3a44fd460ab06c9dfccae9daecf9f697fc3cd692b3941bf25299884ffd3ae26b136f16edf12b06b8916a41db1dac80fd1eadffc31781c68c9f476b4cfdf68e4f105e9ab7ea0f7f87eeedb96f723e2a17e5103af96c3a508d38262577ffe3b2fb7bb4f7150cdc9dfb8d4f3d5cdf349192d1d302182df169403a066ddb28647831041d587884282392f83716b74f201d33fa5a967d5f506a93e4e9506ecf6802869ead17beff0b8903114f154fa3973067d56003409cdefa962578096d664c79d2c5df6e8dbbf67a9bf6e2c7c938608c17ae1ef6e56fce9058fb4823c5cee63e2a1c9f495dca8021fcb50cd92a35a9de5df29755b8f0d6d677d8fb8144dd106f07782e63032e6f40f3c29c0de90281c100def986933a3b7fdcb21c7096a4ef361c6631a23aacc8831f34270efd4850eac191d9284070cc910cf12864efd6d8c676491ba8f810b005dc4143e7e774d2d4fa255007ec75a98f5fc105100ed49327e90d31f01771bfe92b1f47cb36eb8c2d30067d1523980b9329e73ff7ae84a8ae11276a085a201bef0b398f934e4bdd7eba261e676a4a933a4254934f6ad8c17277a977a7782da24000eec12cf8def48d86a73ac84e9dcf5b5e8dad32ceb4d565085c2063f88df9a4b1f200375d2a58c86f0281c100c5ad84dcac6f51bfefa20c2b52611bcec8822739ff907491912b7c0d80ddcdfe1836c264969048133e76d3c4987a563a2d7d3c3b213cf47e1cd9329df1878bc4834e9742e5d0a31c663d4fa8edd8e0abad1c5fe2e6fef1f01c35b93eff619c7ae80873842daa277096dd1f3da4b4182525d06c1041a9c8627be145c3435a79dba4dfe52f63fa51486762d1b55d449fb55f07d304fcc726b9cc1e42484bc6d72704e0192f4bb7e6c6438dbd9aecf8d10626bc2ce1904f96d7594b9fc0e8231e7d0281c050a322f519a92ceb8e8a5479567aa032130f3e21441d5bb62c3137ed877aa3fb8f185ec33747f3e91f49c17f2f4ec42f40ef3ce3417db710d9958a479d6b25d4b52bc541d1a7998f4289e72dc5d8d625253d7b1baf6a7d13b843498dba0fbec3d084e9e12e7a79253d5957e4885b4c602dc5ddf1620d581cd21b4765987029057f059dd6c5d38acd3432f614a90104b99bd30700a2583c175a41085794a21290b0e7c44b122d4c58dc99d77703d4ecade24b607c22343748974156c45dad30070281c100a8d548d2c91bd2b0a1d4bf9c08a214040ad0cefc0440b6aed55454819bfcd5411e2136ea7e8600691f4292202932e38e90e79397d50da0ac4dab5c45f5d21517e4262d9edf75d0ba22c05ed7233dc6b61a06500715cfcd878c307e6545ed729eaeaaf92e7d6a04816ef8b1040f361a213028d10319720f49be106b6b188d9fe26ef12367d476291233eafcbd70497a368851c073540a2c132838f7d79390e295dade23e477413c833d9343cb9c75eee0d8188424ab02af0c82a1ca7212525c690281c012315e04ad315f39c8c0657c93ed32ec2501c9cf2b3c3f6c07fc78ad95d9c5827201ef95d7f549ddba41a75ed1b2a5261037490d235c4f097a123dd454da7f2954a1ea4e612662e5086d6e532adef15506b2adf1aeb5237257df7193d85e2a4d61bbef24122deee62b41b73cf277486da9dee39311904e49fcf7e5cf7c1ba5da0b8e25853da1389b79753a894643ff8299d1c599130c9d0f25db07eafde4a1ee1e66f839c3b775000a5d8576f3b158d2cfe8cbec94376cb81d54c6066a4fc97f - -# RSA 2048-bit key with e == 65537 and p < q. -Input = 308204bd020100300d06092a864886f70d0101010500048204a7308204a30201000282010100a0afb85b74105f49f6836183d67b92602b53ad0d7a65f32a21d8959b8722aae1ec000cb9f22de09b794d7446e04be02a782615a659ceddb5f3344b6e566970718124dc8b8bf23c5aaa7447b7f11905f828e91f1a844d535624b987704ecca430d04cfee0deef46e7e2da65a3f2a1b3aae6cdf96795d24073a07312867aeb414e0bd6c23d80bd9ce6266fd90dac7666b019c141e3516ed51ced0d62a0b1db189860406ec5b7bbbeb49031979dba118ef6ad131365d6bd6994e695ab084592a5d2470341e4a9da14167a1387ec3d513687b7d849d64da896d4038f72f8a8a516c6402225a53eb813c1eb0e675af8880433545a90404946d7d8db2716fdd63898650203010001028201007df2de1548f720499020d0c98ecf931f3036c938fc4c76f9fa479294b2aa98b8b6cc1f2d8cc72afb926c048d1d783bbfee2723e71d13c9b2b96baf0850511b22ccb040f25c82458e6776f7541575a0b9300ff2224dbb726bde235226d48d10d1762433cfbcce5e8c99c2c7d266f71a2605fd42d54f98da8e0720cb4f7f7f70d2668b89cb57fde159ac7922756fd161379a5693168c388b7e1468552f67f896f69740e80e13b9badee87b7116e559c1e428276cc9d4788b0ee25f10ed560daa8339aeb52d8bb2b05a2e1e16e3fb348ae5feb5dbaf53a7d8a318865e1a746374df077d85120b02e3f0ceba47cc734c96ed6dac65f11bde2db2f1ffaec0da5924c102818100c045a3996d1465c73ca839c442b1026c82e418c68a5f96b34ff36557144a86af092b8c2873c42ac08d66e2f471c4094098be48058ed2bb0ebf0beb896f0eb18eea16d475914c901e35dffbcc257f19260819213c46eac7e508aae0114b98770471949f006d42a6c2e07d590e1f5f14747239154f65155daa4bea84f5ee8d2c7102818100d5f20732ea986dd3d1245dce180595a7f48b36c58f1576f6782062a4f1790871bfb2e31b96f1b596c59b6624cc2b56c441e4970fffe70e59c0fca099b598170106a60e32725c35401271ba2216039c627b18a2e319331c1444238724ba7c80e2f35d13fc0662638b414f7c12fe66db22328fa892a4b7632ea2c24f6b06fb3535028180448f5073e0127aec5d73bb0d819e6eb7d4c0931910b45f1f576df9ffe00b67153916df26798944995e92867115b40a7c8f3aa2a1e0b8c1dcd340e3df20cbc382ab7432942d9878775d4c9e13c0771eb79201abf93b6c7294f7cf3e90cc3cf48b9018a7cdd6280320d03dc228a805165d2371b9689329d83966529cd0b91c7bf1028181009f1bbed4d3f9067ca7a63709057e69bd1db5c6c707d13bc6b2b1cb0ac5f6701c4027a694a71e1d2102d6be1111b20d762956fa2d50f0221107e01904173403afa4a52c1bc246e6e73e904b8ffbf535815bf0877b030baa8f3bd97c31096b7c62cc0065d361601c8dbcc5830d911b274ef8713439d2bbfbcbfc092c0cf9852b1d02818058e7d95fe1a95fe10f60b59eba5c8c28c8eeaa82956a3035f37e7570f5ff91a104a5df77ba13a09bedb22018e2ac7461471b5e719ab202032cb3905391b7d15c74b36aff25c83987726e0ef1362c1b8f4f8282f2c4fd6a38a9a15e63400b92bfff31cbfc375313dc40f9cf19e031ededd32c47de6b3a99696a903638c4d6969a - -# RSA 3072-bit key with e == 65537 and p < q. -Input = 308206ff020100300d06092a864886f70d0101010500048206e9308206e50201000282018100a893194cf895bbbfa58f2863ab9bd00671cf5c48604efcb175d6f03a55d32a991c3021d52265369d45b94c4e80210a5d8d3d0738fb98669f1256d406eabafb67ad028de2e25909cd87b723a6f29eaaa46d77c74e998d3ca635ddb71335c2d77143c61d1875b0c6abe15474dd61e69fb0a5bfc381f8ffc251be4a03ff9cdebc6d890cc5d1e1b4da6115afd7d4bd9ec8b12361158eb5526cb9ccd5c1763862f65ac0cf10d7718efdbdc6f4e23325b129625d0e87a1136dc34af0f9e0e2abc7d617abbcfdb8f33d04a2cff977336df6c3956b5b667c399047d720da828370e601ca3e032a81dab5eeb9a5c37ffb4ae255fc0a3093756e9fd039faa87f2ccd396d8c44b51dec14d7a0c00e2a0735102d30ae30edf41e67af3bec5103f7ea969dc1222a0b7fdbd622788aef9fa410a9640312c33f14c322ae3b7ff2dce7c7440e9ea5f2521bfe75e206b16ea5176a7e4b9a7ba326fdc2541bc56fb6b16451a11f23f50217b61a277e3116cb65c6aa40615041e20118bd10fad88602bea3a232ca12f102030100010282018033cb3e72cfcdf1a9a88c9bb443fdd3a4a74336ef65e7deec0770cacea1a007ee932296c28d96db78e6fb4fdeaeaf7827d64571faa812e334ecc590cfaf3f540f3eb112372ba47fc68e744e97f4e39b3a7a07db4ce310ea1987635fe49f180669de90f84f939984f13a826085c496bf69df03546692c2c249ab55c274bf16107ef724dd82e6fe523a92173d113851990813feb848e89d329ac3bcc97c3146f6ba5b9343716e8aa89bae8d7f1287fa2ee4f2028cd988c6a8c255d7f0a8b46ee9f04c36250f4a66b148415c83fe991360231e8f267a9400a31111fedd19aadc93eb0b6833e556c2c91e2a69ee6ae0462eb6a146e1d30680f02bac5e2ec95879e9a42b05c790baf87e6481f0a703a4897a221f2f4604facb45948bef592d61891fe55e5c52b7a44f01a0148641dee97eeb2efd96968fd82310ea551184b4c63c48039e13bcd15abc15029d3c5bd41665895bef92e12513e06706cb03221ff5aa7f6aa64ebfcdcd6882ad2ec765731ee6452d6470a7053a276f51b7c20b7b54d8c0010281c100c9bc1dc851bcfeb8e8d33063be3d8be4d09f816c0567a06935c7b8082dd06c1f2ce9eba3fdadef1a77e087e05f76bb05d625bfc835dbc1cbf5397cdb9e5f67b23fce81bfc7b27f2cebd7db80b8a696bd57b3eae3f498a1b4782f8721c12c685b85ef648575ce81010fbd12e6bbefddc3e073ac309dec8d9671fbed47344b8ca8fb90a974fd4d306c92f2a2f8f6db36c57780faf07baf850454be836c6cca4c9e35327d84babcac06c14ea3295fbc772319d9582ea185e4a685ffdd1316bb2e810281c100d5eb7ff5b91f4068cd2739c0c5c4e609839e07b950307f55a5b5892d8ead0b3f77c8657204cc320e9b52d67af2eeec787dea098ece882abf6e93957ec1fb753f28e17de205a0e4967c7880ad9580b81a3a2315e3466f639a62162e4f0de8f009142bc19488510b2e0e2ef86f0be45f4efa51ea794fbabff294c3c40199c450221c99707026bd1de3649c10c37a4c493fab1aa9511ed64bec38a1724c8af4a9813de028dcdc0bde1639a1b6a4b9ac0480cee494a533fff8214de959a9a6bc8c710281c100c87a9b3a5d08ae3742a1c60009aa0e6159767a5ec84c405cee26495c4f734650010982b4d940c6528e79636ef64ffef280ebc8d885b59bb53e416034bd01e10282688e06f1c5109faacd3c85827b83682d454e94359a8d70d4d39ebe4bc3fefd9d6fd77cce23678e8f7e7dcf314be21e6beb685e7443063e518e643293e4d4a7864130366418169c7fb8837f598b66b5fcda0007875359a481374752341722e742c4a77a853d44d3fdbd5166a78e9af31618298b45d7d2f02e50a4f9f86812810281c100b05497bc6fa4f00db315a348607cc5f58fb542bea0f7e8ee2b52b1498932e073a783db031a2b4b13b93a962af076bb1b3307286bbb98884c1594b784add75db4fb38abf0141da46edb18e550b04c52f4e3792a40963d990797d49ac5753cce275da617c21c7f594cd44a296437943e6fb66cb16edfa69b3415262d39f88ad656d7e62ec573592dfad362c57aac2397b9508c00872a79104a1e000e5c43aa1ad2bab33c5b99527af52cfa3cb819884e89f2807e7a929b6ae7e0f5f97f9b3e0e310281c100b1e8aeff349d9d187e73d86f166a9703a14bc93ec599b203232027a180f3179ed10a51d9b482ef12f218285d2e06c45ae984995405cdbe71e72170f4a602ddd968c3673f1d5262e69eabc3106553ccc07b8bcd8306338346d2fd2bf595d96c48df5f959dd9384561014c79e7305728587bf01821eaf1f85e74f4365fa1492a30cf3ab54cd1080da479fd834bd07c1ec5e72e9ab68d855845cae166c8f885fdc20e946d40ec478628f4498ebc18e37204253765cf41bdfcf0cccd2ca1ef06b6ca - -# RSA 2048-bit key with invalid e == 3. -Input = 308204bc020100300d06092a864886f70d0101010500048204a6308204a20201000282010100bbb126534d64a3a60711730846af3c2f4cf4fee28f48e7c9ca2b0b5a6c8ad51e2509d38b87ea6b039ad3a33ac57e78c444d86438b1938eed73219cba33b06454e429330ce0fcd356624630c58f32a7ab3bef8c7cb3f9843b09c3e61dc92329df330f002451b5910cac3e7b513d3ca1cd58e39a5cc277e64da395058805f69f19bb62571f28525c5a7f781055ea82bddcc8d10c7163060e2040aeb390e6cd8cbba216726875d3b2975fae77d9d092a9e65f545f8a1e282c7096b3e8293d47d15e656717b0ea2d9a170d489c2f3b596cb745fd3f587e10cf3ff043a1f42ed9d030d900c02676761e70e2b5a8fd9387dc658cc95b1ac3ca83ce3b352d6e71514025020103028201007d20c43788edc26eaf60f75ad9ca281f88a354970a309a8686c75ce6f30738bec35be25d0546f2026737c2272e545082d89042d076625f48f76bbdd177caed8ded70ccb340a88ce441842083b4cc6fc77d4a5da877fbad7cb12d4413db6cc694ccb4aac2e123b60872d4523628d31688e5ed11932c4feede6d0e03b003f9bf6556ac08bfb5829df7f6baf74772fd3e22ca571851c5a0efe8330ffb45863a804f870f4535da65761c81c22decb3bd8fe55fb250b09fce0f12f1c1a073ab5349a8b9d8e3fb826a04f441479cf3b4ecb7d61aca60f44a3f1ffbe2bd615cb65c29b11beeff13074c06356ece01581b45fcfc2cab27a8777a631b3361763d59b7f26b02818100f6434d514907d7c9f522c84633148b5e2fccf3bc0fc4e6a5c5f7b88b15a062433dae12c53d5e54e2a47427da06b6ff4e2c4635b90aa8887b365b96e6485584f64138c39ef0d9108dc8f569f5cdac877c5d4bfad3a89dbda8f5e88d05277462b2636618c6f21f845ebbca664f1c7d5534c15ff90f5faffd712ecd2f130b8f808d02818100c31cfcae4f06979c983cd5248af2554a6981743aaacfbf9e2e1f021d87d56a0119d177d270dd2c89f8970b1cbc3f52c02382b0c823ca8d58f5b5e09573f55deb0d68fe18b5b5821ae267c6cbde49d179c081b3166614619d263f02e3f5db2ef4cbb428c2f96490c200b640aa4e218bb68868a68eb0e2f1b43f55ccff5f2dd3f902818100a42cde3630afe5314e17302eccb85ce975334d280a83446e83fa7b0763c04182291eb72e28e98dec6da2c53c0479ff8972d97926071b05a779926499858e58a42b7b2d14a090b5b3db4e46a3de7304fd9387fc8d1b13d3c5f945b358c4f841cc42441084a16a583f27dc4434bda8e37880eaa60a3fcaa8f61f3374b75d0a55b3028181008213531edf59ba68657de36db1f6e386f100f8271c8a7fbec96a01690538f15611364fe1a0937306a5ba07687d7f8c8017ac75dac28708e5f923eb0e4d4e3e9cb39b54107923ac11ec452f32943136512b01220eeeb841136ed4ac97f93cc9f887cd7081fb98608155ced5c6dec107cf059b19b475eca122d4e3ddff94c937fb0281805d84a6c335b77a5d2468b81cab4ab69198906454bb499b00c8094456b855987dd20a95a5be48f21067554b86df117cc9abab45dca04265fb589606b2cbc074808f39862cbf39e3efd1df44e04fcd9f778574528fcb52f5b7e16066267cf08d29ce7a29deb3d9c3671634af765916a865646accbdec557d970de3b242e3450167 -Error = TooSmall - -# RSA 2040-bit key that is valid, but we reject it because it is too small and -# or because the private modulus length isn't a multiple of 512 bits. -Input = 308204b9020100300d06092a864886f70d0101010500048204a33082049f0201000282010000e978633c731dc49958124170096c8dfd536977a5ad78051520be93de8b3040faeebe61b436d02e6015d78dfa2280a7a1c33b87b16b82b367e352545a6de6ce46f83dc0fc421c2997c7149f9c616cd538a311cdd8c7f5b0959c3a9343090f0ba87b02dd44e7dd0c8a2eeb0d7ad2e49527d5d420b72b52301e7ea2f6f18c86a05c8ee5a20ebac5a78f76d4a1443db1c399375293e008ef34835f873f0ccfbb3005d1efd17ac405db1e86a5b64ecfcf3f02819818802f122d1a889ebfbb6658d3d63355894a4141d1aeb4dfcbfc5bf6d2229532326f73810364a42b7cd1b71f05720698b74c58e5e1fdc364f8403f6ec825dab667f6b26653e76f6f7eb8d98b2702030100010282010000bbb8bfda0019845563fa31c17ae25cfcbe8fc3d3643a67a3c8535424113878570b95ea8b73b34a4699e95ad02fe3d06581cc20dbe83d0c31d117069a3b59e4ac2db7c1af531cbfd8b90afd174942afe2bd43788700a8ad166eaaae73ad19fadeba21e07622149b9b94040d2f9fd88991a11dd23c5549dd44f7bfe2dcef87e3da55d5b0c92e321a992600b6aa2205b90f03cbde204ccbf5e4ae729c6a4d1d38f415f559b865b91996973a05103410842a84c8e19e8b4fdad94d498392dbd521691154381ac6cb5bc6d180daf72cdbc06a7d42a2f503cf44ff804b1b6004b2f4f058c2f20712fccca5866cd107a812390c9b2784d5e199b270bcbc0b2ca3f2410281800f5fd9faeb3fc7a0d6f4011b731482e8ab1d5fac10ed36241d95a28fc298e3bf41e75aa9d0d967d79b857d7156496f073003c45ac8d97136862c103a8e2e3d1548e308b4e50f436b86a236b0c15cbe50d812819294db7cffe6f655bcf50113ef79245fa94886be820ee043d1e4ed9984ad8d8157610c433513a96f86398a7aa10281800f2f85807ba2ee028bdf1902a9940629b8844797d41b922f91b81dad222089079979db61890295bd20e02fdc7d8ccf34c569e328abc83b0127ab6a3ffead18f1e3172206fcf0a1b032dc899d142e64c7e5ef1316992f537bef6963f4304a5064d67e8bffb7a16ae165746cdddef21e531ab19fe2c03940ecc9462da340c138c70281800a3ebd6b4fc8b8a69d970c05d6b21c6a1f5cfb9c15cb7d00a4164ab5b1df6024db2de864b11faeeb265fd62fe86816ec9b3a676677e12e683f10addfd74f48b51e54ec405f43c491aaadfdf3db668a0c25706f97d64a4d09da46dceb85f8a9e832b9e2655447363c44dd7d5429518bb3b6534d9584be3f2ae767494210a60f0102818008bf7d8ee8aa91a651e171cd00d7cf3d1598ce8d7e996b7b8fdc9aebf42efe01acbe704d1ddaa95c4ca619ac517f5e96adeb33fb680a6f435910fca2651a5eb669f6179a22f8948ca6a0397e8df3b4071c44bfa0531ada631926837856a158f2de46046c89e2a969b34280bcc8047ec7ad270a4e5c221f6ec8fc6eaa0f51c05d028180083e0d97571b3ca817e899b3699cb4193d331b4ea9d53e2be2a5c81985f1b609d58c15ee596e736e5647c2a89d05c784836182f2874d83c8648dad4550ab51232e88017c82ec6ce8612e77f5842a5615bea94d116bf4ad1d0a478034a3da7a467522ce292fd30b1c5c0c51e0888dd4397d0708a216456935cb2de88398690320 -Error = TooSmall - -# RSA 2046-bit key that is valid, but we reject it because it is too small and -# because the private modulus length isn't a multiple of 512 bits. -Input = 308204b9020100300d06092a864886f70d0101010500048204a33082049f020100028201002d7374f1cd461fb28614fc8f5db38154717c8ec36f61528768ba78910d78042e4655566aa56d81de67247a85a153d14eaa651ff3e4082c6f67b587d7f94d4d2991c59aba31dcac192061811ca39e6cef73169df49283494eeb51d1f28f4438999f7222cf3fcf17955a155ad901c7e058737dda655a17d0a78ba9fb69783e33c208d63c9f9984a2c612994f515d5fd9d71b18439fba6b092d6f8c8562a0e2eea605a218b32e8f84c4dbb8667bd0a5ce88213966429211fe2fbad80f5ece4b70a4ebca26981e5a27d1468d7cfc9c67e6d6eb2c09b62cdceb8e75a4192fe68c15b579d7138ac710e76a63fa0866274c85f94ff5127930c1316def7e7532582bb6fd0203010001028201001e7efa7787b946695d87d5524897b9ee33db545b136fa4955092d574d629b1fc6e9ab1ca0ac7683d16cda61be57c3cd360874ba2345dbb9ae06630089cb0de564705e4648c323992fe640de26e724d3b78e83301b810b8ee67fc55374023912a9a8e5586e3948b895d91388ca4a23d087c2d748d4e9eee148d24779973e1a08e3ee60a3283d203ad4d1d8b92070f180dae0fdd0131735872b1e5a3bd6c25b02cf44c396b4b046ceca986e871d22c60b63f0ff6681b89554309dbc8a03ca1020e64d07e42a4831e326ba17ce44d0ec727c01b6832f07188e6b3c83a999e5d3922987350dfbd994883d3c841412c53eda5b9a131cd981f87a0991e2055749bf06d0281806d352d2ecf4b613356b19186c1d4a110910235213717edd29e1131516e2fce9b59f4ae2a9e2915bbe1a2f5f10c59ddb898ce7ebd1f2a38d7ec52baa3cca0162266a555ac4c8bf4c44a2e5f29449dad674067c37d3e1b84c978947f5ef96761c33d4845a04c2a7106f66868e71982b4c95585ad727e5feb8cbfd479b2c0b5b3630281806a8b553d7d109b1332b2f397bebdcfea592ca801f8abac7da8d3951cffd89615ed588369a16b33bbf256661f68f8397963c33ab3bcea2d2a7ecc7b4cabd0840145a704ea1a7c52eeef57cea22ab7ab4ffd470a6fd0ff6b285f9fa6f0720e10a5a75ebcf1f84cfa20d34db34e245460023ab3b2e1b7aa57dfb9f61c61d1cc6a1f0281805b3a4fdb49a9c3b21a5acda1cfebeafca6d63c41d9ff305980580665eaf11edbe1e2a757ccb5af853af162189263c3f780170802beb50bb53ca2c36d2ff40f697f6be04cc5c928988d0b7dcd4097a3929c57d2139ebd6848d164e39e182447a3cc5ec2632d1d4b3c30bd79dc8c10072c25383d7366a48466189dcb680ad9fed70281805ca34f774a41e1043d45d9856c64afde2cb12657a876e460d2253df6dc01dee5abdc154f07fa251e5ae482a0f6ed3553f5c92f464e9132ba4b4bd23d64fac57c31aaba1c2ef1404ede2e73cd0ee569ffffd200221f0fa685913748b8b202c6b8b2212e9a19721cdde3bc2096660233045d3417ea287ee52ef30b29bc67e59bb302818058ab3d6815ac06d311d3364f8da1ce2ec7616864f90cfd4051668669ceb4ec8e3eed35c83c48ff18595908e6d40f0017d14eb455bdd5c282b21fadb76be331e6bf66d50020775cead697cc62d07cfd14ad1d383afe3b3f7d0dbf181213ccd3df42e7e4481e653333debf7f5523a46722e1231327ba57374c4dc605b04822a7af -Error = PrivateModulusLenNotMultipleOf512Bits - -# RSA 2047-bit key that is valid, but we reject it because the lengths of the -# private primes aren't equal, because it is too small, because the private -# modulus length isn't a multiple of 512 bits. -Input = 308204bc020100300d06092a864886f70d0101010500048204a6308204a2020100028201004edbbf2909ee78cc4ef9914eed0bb1ce5267ac3f141c69b288eda901f73e8e68d4184e8e62b23e10e8fe3da44a2ad6826825581b01741d5cee01964e2561d1ede3cf813eeec832b6aa43e31bfbfc9aa3181cf4d729860fa5bf6477d468374640cac16dbe2c82f8d61c1e3cec8e42a18cc1e3cbbaefe21b2c8490bf3f9dad6f90b9297d44a32899fd88fb9914f8843cc1600ce310d69ea52c9bf26bb9ff030b7a5b01e1809227f59e58a3531559f520028e50bf2e21af4fe53ac19685661d03c0ac75774cb518ffd85f778b16b254b83065bcb09dd4ff2e7e908aa1f90e1f99aa94336844ba04ac228b6edba3f1d2e602868ef042a8ad1f6bbc259ed86e5a06ad0203010001028201000c43318ba126bb141227cec7b626be6475fdf713ebfdab15ff22edc807796bcdb3458059b5d13fc383679d9041943dbd1392d30b88035559910d202150c0d0532cbca4bd73862014b58f4eee9815a4ba3dd2aae41669e95efdcf12af2df182742ad33f4c76417b8e57daffe04d12e16a30f04a4aec687d8f43a1fa8b5aea905182928441401bb9dc7946806b7f21aeda027974e32b08c8d31a60283f36b4fdfaac2763625e792b9dddceebb995a379989e39f79a5f07a26d4cb87504df0e4dc283cf44f0bdd7d313d33d0b1813b53e702e34c0788792ad72479563fbe0f7bfffb7033842ef62456d1d087399fb7e425bf92f78b438027f9a8c81305bbfde8fa102818100ced2d7908326a8085b5b05a46c7933c278bd6dc32e941b1fa5cf78db252ffda3bebe5e8a824f667af2c89d40cd299d23bc898926cf40365ce4c4d90c173dc372cf392d1ba6b9f92ec77d69e59aa37462e80afc75ed491a9ec07ae9464a478f4b3593f1e518271925d13cabcec9eb491257323b6500b2f15c3283dc43ca3e45b9028180619bc84ccbe7df0317658039047d6ed73b063946863498120e4bad94654fcf12447e00c4ee2bdb0017e2f62013ca193cd2de66ba69c54024db2e4233658d1cdd35fd98976d291ebc86bf77334871548c16403801380a5afd9ac3be64d177e80583ad4589371308e44c883b93f7711980e389c661e5673c875bb7feb1e010029502818100b1aec3911c8b664a9fa9882465288f462092a52ccce4629502cf46460721bea72164cd35f393a13839420e8f3072f2d453d258e8e59e85d5b29846dbb34fd58cd9e8860f3e62816825ec61c0e6e44c45f8920fa8846d8c981c46bc082e226241bbcad942f74807bbcc91720cdabdef6df949676b7379480fec3a0a4e96fe7ec90281802f38671147fff7b28e2a0b7b0a020892553ab090beb248f34b392f534023f900546444c90093f4d1b9bc91e778cb67a4363b63a541302cd4e7b81c4cb30f2e6c92070a400f8e3a11687ace16e02ffb7ffdefb968558d24f1d56267046d15be0894e8496095653f02fb4758d33f7cd6a2b4f15d28d50b398c1e420814535a4b7502818100cc6fb56fd8b7b3db0a4171c662a0d76efeada4ce0dbf5891b3b51d60efa31bb8f7e176417579bc35a751de444a9e3479307af73ac1ccf0458d81e021d1e4e33a5203c5d01e5e397ca26e62174ded0d310ca0c78685c17738783c9f06acd286f009a623cb4e651776ff9adad81a08299144c9ef4d07fd3ac1408d9c92c98d9379 -Error = InconsistentComponents - -# RSA 2049-bit key that is valid, but we reject it because the lengths of the -# private primes aren't equal and because the private modulus length isn't a -# multiple of 512 bits. -Input = 308204be020100300d06092a864886f70d0101010500048204a8308204a402010002820101019129387ed5eafe167c7c575ad391104cdb7ac95d25c2b0e3699a98f477de9729755574b112f552b28204480a061cf6a6360e0959000cb1b175301ee7d7accc82735c2388fb7bbf2673a309e25e2e4b26f046c9dfd858e78de52bd36991e0fc1a28f04b9ebdd6b0ab8da95b6467a7869b4e5a19dc1bc189b666729f7edb24a64965f53382ca45e20bb0a315439f7bead07a0bea88cf25a179e2aba7ee8584c1fa58e731246fcb4778e6f9ef455d0e50fc60c044f7745a4380b9f4c82dd4a64dae636461fd351f2e871477d801833bf44e7e4a7e08691776d263433c19d477290f1b844f0555c2995b22525b57681962332271a3cb522464c27989ab7c943f48e1020301000102820101011c7c6b00279bfa8cdfc31dffdf416499dc9bfae8ffba4dcf3838d677a7fa46a0b400e23c2101b09fbeec625a1973b8c6ae56cdf23bc2c4d0e0163c14963288e58a01b18197366e9c4a2d38f93b69010aa022d34ed71255439f5db11390cc487c14c4341c62ec3965af9486a7718ab03ebb15d278f18612af337fddf40c5cb53e46b99d7da4b7d8d9d586be8add8b0da6756a301155f2472b484c0ed8a23c052dcfe7ce40e99b6cae94edd41cc6a24fb5fda50b5ba3958cd3ccaa6aa2674cb9f492e208c8eb966f1d4d9b1c2a39efc324a41b562ebce4cbea0af06a6bdf19f4c45aed56efd9fd892ceeaa9abd3458c151a83a2b80075e1bab92b388a747baa64102818101aa9f633cbbe8135713302e9b0d22bfb7589c710a6516d25521550d98ee4b827183fe8351285387686d15abb3226813f5ec6367fd9138e2f5e5f248bacb3247219490092620f3660c4d7e091c5e61cbcd4992fc10441261aef9e80d4baa74f1fe9e7eb358c5098693954701a62c0309aecb7a32f0a763988d6b5fb26b5be8a07d02818100f0b8b228a6ef97211d25f0962132ec78ef48f99877d49d3b02e969a34b72eef8e289d0c99b8576d0e704ab27cb908b8c791ae9cba56340ceb9ab13436f6d19b07f1f485d8577b72f6bbc42b6edef6f9fe6dff28bbf790f26dae0c85f76689a440663372cf21f660cd860967b69d6ba491b58b7ad817eecb7f088df4053027b35028180265fd5e655a4a770b2aa27d70c946e984861320dd44ffc356a1d236ef92853a07056096bd86bc30752a09b642e991c0a87ebdd23c2d7521afa4713e1b17b614894fb6bc74139839961b30f90bcb0a14b62edd4bc85d2fd7466c847c1e1a0495034e382b05e70dfe91089658d93f1e602120d78dd8ac0fbace4d6a3cee2628765028181008155fb03348e4e59105c2e23bbbaacab5d858bf58b8cc4ddcbf6b5377376514790101409fe717b214abe8b675a4c536e2a3377a25f3e30b7e1b2352b6a56e812987aaa5af5371949754d355b2c0415a9885692eedaf5a45a70078e211c719f51254d717bc8ab6e1d40b4c4a5927c38a2c6faa7d5a55a18bdcb92fec084d934710281803e411557b7c0e6e6e296a1d0473b7bcf5f7a71d03c70bd6cadc3a9fb3a11cd0294dd02893ad1c28f62c20294d3893d6ac77baabf7772dd47be587893c79c8d66701c3037ceaec38088b500e2197994e048b1b357f8fffbbdbbdc94c0c82a7cac7ef0136cd6f7795355aeb3e4179eb2b363315f6ccb0a26434682adbbe7b6ce6b -Error = InconsistentComponents - -# RSA 2050-bit key that is valid, but we reject it because the private modulus -# length isn't a multiple of 512 bits. -Input = 308204c0020100300d06092a864886f70d0101010500048204aa308204a60201000282010102c539e76a413401bebc36a0e09b5acfd299393605da7d25289d085a872fd761b2cf11787287b9c45d285b146e11d8a043c07049947e49f0e89791c99aafa2224d65dd8118067adeb1417e8fd3be306aa6001bdda425c89f691aa1b77ad2c6cdaa890fa764c541e74bf5e1571e7efbee69d1331d5d7544e15d2a7f21de27f268135fb7a4334d45e348d15de362ba649e5bc50cbff86a6775d5d9bdd75441eaaf3a4f4acd1a28cf3d81dd3749a460f87721a73e45adda47134634276c6acbc341fd9c96c4b7b3f6f74b22f93512a39fd4e77f330726d07728f7ae8246a7f2c50cd29625c1365825c8ad257213444ec6dfeef03350bca7091415a3505d5798dd37b7020301000102820101017d721734debcc9f37be725bfa7cebfd7d4f1204d25a609463eaf2f816609c1521a6c9b0b7e543b789f2bdd6115d81cda53b610dcfccf67f2b112880bda4aa98857313b2d60ced4d72112a0e8917218ea0f44ed804b920baacbd80e86d0b67c072c906ec794104e065cc845c2f1292ea15b12d2c8613a1abbb10f8f779ca493b38d5e704ce2644b3798e852d0371214a862b6636fe2d22d5f5c95b794b317438c14ebb28d9c90339f505c90c3fa6ad5430c163c067931df4523490906888f1ba4f55c07fdeb6fe77932b817eaee669f72988a09df346fbcd3abc3b0a6d60546ff52aa28405aa51d1dd83195be0ea21b7995a61a9bcd807d3b0683526b1f79eb8102818101b41a1d8a1fb22acb2f2a827655d9345de5c5c606761d99aa75116d1f50a432079ffce48dcfd9a1c2888b865c92f02a309520291b854759bcca9c4986b85f2c0817e9327bdb69d233f1dae5b52b5cd3f3797c672fcc7fcdf8feb57d2801dc3ca43e4cbac95b919270065a4c617e1e4f11d9a07c7eb87cf9ce7968a9819e79974502818101a05437ace086421b86c6dfc1e7f4ba18e4faeef9ed4d1cc4b6366fb5810ceb5610dc349852b340fea235b0af07adc76ff4ffb91fb73f75bcfd2328d20d6c6c099d4e6b1dd70e75c97e272e3984383657341a8b36978df2bbec2c557357a9bc46cad2703659631dee2df8a61e65841ec80c004adfa169fa0169d476b9253b74cb028181018c3759f53f3ce9a276f4e15950402a52d14af1d2b707c7b055f282393c5421dc49a043ab1057c39ef1de0a321b923652b37a67bec8457e2387d59cfbd891277926f84954bc9195587a798dd01f58947d16384fabded99332918024f8ef4fc08cdcc96bbf3c01b391324462370595d5f2facdd3ae7241a1d8d4f7a161d1b0d91d028181019e24c8b17f33ef0504e0466bd4bb1c787127b19c0ad41f9f0b0741be931e6fe850a34cea8db1e520a7e9b2d59a54e344dab99bc511fbddba5f319f84bc77b34d291f7decd4267d432febf7ce9d5971acf396c80f49599a321830cddc0c433b984c6063e19cafbd715667b7901b39ff88ce6f680be7bccd46a4a906650cc5855b028181009a8f419948a190615b84cd10ea337bfe5fa33b94d2ae506e153a20e6c006c831d025c2fee5a10f67e708631f98532417c2ce89146b279349f9defa5ace677dbf11a9dbffec36a42c0082a912422aa8f641fdc559393276ace5ce985937c3da09220210f381f60eac5cccd0858a8273045c42b96623aeb042d2419be434519dba -Error = PrivateModulusLenNotMultipleOf512Bits - -# RSA 2056-bit key that is valid, but we reject it because the private modulus -# length isn't a multiple of 512 bits. -Input = 308204c1020100300d06092a864886f70d0101010500048204ab308204a70201000282010200ba546c668d1f047853f6d70ea45f0e51926bfff13167985f6bf6056b1d6254255458e4d2145dfb8fbcce9ccc1433da1d34804953487cd1b45b6c16c51f9c0d50cd0118684a96c8a2f6bf98b14ff417b1d591a4f125cfe04c6e6ee7472d45fbf791729824f2adac8edb9b7bd1c2540da03337369106a2b40de64d1f8ac5f106a3aeaf5eb05c25bda6f5d0e2aabcb5901b552559cc7f95fe46af048307f6b8ed954d205cb583d526b63914d1b9425ecc90d598d41c97297016130b1e5cd2c384a04132df6919dba22216b6f962cfbe03859ae0923145e1f60a92dc958f0b1bc12af3215659950a0d4cd28450b943244f37c6f5cc38e52aad4acd64ac4c933e737f4f0203010001028201012e4367e6ce833508eb500e75843a55c3cb2725952d3f1b8615b83000387b818903384f181a167baf64a1a82cc3975c408418961c2793563e01b504b24cf6e2177dcf17d04d34c2fc3367bef1c77843a9d3ed2596fa5c72c48766e1e5ba47f617b1f551f15a8fe49853ce771fcdb030f1e5c57fb6e27ee355d028b5fc2ec9796c83da05f851bcd5798b1b5b71c27a888f8203f5c642c59642f96ed30a62e028cd806a974e4ef3be34845feb67bd879e9eb6a8adbf0b8fd1d87df6e091c45e411c82f764a5e6469120345e39dc896b90b3b677d7d82139908437cd7695b29629cdcce2f23d75f6406039196963868d62a4de9c7b3f299393aa88d4221cef342205810281810e3f428717de170fd9a2a11fdd057211dd95ed2d39998986e064833a186f653018f8e5230ba9ee0f1ec40a5f7aaef80ff900ba71f8af297806780f0bf0a2584c95fc1b9e326cdcfd58dde68b9535d87128aff2920f01210ad57de059c673f0b34903276a02df0fe05b3521027e45907838ab4a7cb09a185fe4d80d5e5733aa9f3b0281810d1413d14b7fabc6ad1840d52a00ff6bb9346e3931289de591ee9772668dd12dee8d4ae0a7f6a808fb48ba2405df36d39842f3081cdbfbfa2e9111b2792964cb6c7959dc5a45dff89aa1b90f0f1bc4e4819d64b83e673937fe8a077895c6544e875e62c8ad4b9d2a1d4b1ea526458de103d2c8c9f95e077af2a39b63c4753e46fd02818107c50e2618a921109ed32765f6268b201d252f94d36ddd67b6267abe8b26ed1b3ef3361b57b813c121392ea30588387695888525b4c6ea29aff577d73e237b5e41099d9237d3d0ed45b2b691770d477de6ff959d7c1b5486d10975f9dfd5c8f62da24fb36bdf748c1991aeefea274bf3948c2df23469c5533ebd6905032f8524930281810a440f46436025031fce20ddf249b434e7bcdb24738cf15c498fa23b7f7aa48ecc69063490439224f2b264c2700585b0d41d014e05f13bba6721226618ab405e59786bec06c44089913f8ed6de422aec3f3dbfd8cbcb14e3fa1e78bcd3bc496316e924db67042a8aeb5192ed89bc21215671f7806b08bf106833ba7eb6b05d413502818105d0bd604f192d745e6f88e5194b2ef390dc4fa61c230a4862d3a12edb3db48178aee3ec577b156a3b0b1474d14e6a9c59276c21202c46410945c7ce6bcb72ab9c61e2c4bf97e3dd4ab47574aad5ca7e0f94698970c07b60ca268f11551dca945ffbbda1acba78d42e9616a6c7da464959c94b44918e6d41423a0ac9deb368efd3 -Error = PrivateModulusLenNotMultipleOf512Bits - -# RSA 2302-bit key that is valid, but we reject it because the private modulus -# length isn't a multiple of 512 bits. -Input = 30820549020100300d06092a864886f70d0101010500048205333082052f020100028201202e8314b5b60f188172bd5b0eacb60b94c15375e3df7fe733d523c37a8470acc8108ac1130301167dcdb2fd3c87f48cf8d1a597a3401cde1c64cd115be2f4f03d5cb8948137ea895b1558b8c836ca2bbe8c4376103a6c490e76fed580338a5da6230680855e6659354525fd3e91e7b238abdebb0a12bd8c52adb49b2eba187d87b577abfaeded16a26b8f2705313975f5214cdb0033e08f800c8d5baccdbee86c435882bdd599667ead13b59c9703f8d82c9bf122f70e80639d98f1559ef57e61cc63593ff0111fb7fde3cbd80531e351b41f258585e4e74afb4ec7793982de1d253ed1e479f6942c48f0d0d2674d3e65a547c11014ca924bb3b01401a7e507455a9de56bf9f74b0a752dca972b463b9113b6acdb0a1ebb9b297e496fca0a1597020301000102820120047c9c98d2d12df9fec9896926fc00adfee0403515304f6b4e9a3e9729037d8767211b72ec0d44d029f1a4401c9558abfffd4b5d7227d6bd42740dc2a168236ca7ef1e5440c29d316e23badf85798732c0711988833a42e9e44cbce7bb1113eb9ce159b083e4b7a24de356449cea8ee4ac9fb5c748fb83f7cdcde8525f9d512eb030b52465a34355b3ae81831cb6804c6a17f756956d9c674d3882b65996b27301f4f467478617432c2d4ddcdb14c77789f29a6c866a975c8c8128043a07535a05e40bc625ddcce0eb295cc3b3bfed4f5d5f6fa2bb84b5580b5ff54de7d601533909807c6497da7dd8c292d9bd247430a6000d00b7b02c3cf82d8faf9653b16dbc344b3e2a7e72461b26600720acd3baee6a11c381281e322e79a2088f543a01028190795c84579a2a729defe281fe5339696f8750942e49b4fc6809a66b628b17948242aa2afe65cf5044a8fca45c5794696085a6c20365df2d7d1b3458b47504a1baf869c61b16c7ea2433094905cbfe311d330d4da8fa81c8f86f6d756f5324931941095e832e0da7862fabefa9b48e8c58aa815654be07ab8c7ec4b739cb990efdbf5b9575fbcb3baec42df70060688917028190621cd2ca19189990fa6adf8f0b1f35385312c501415425094c58b7b6f8a9cc641c3b4b9053bb831622231f7be8b93895acdbc8caedf924e61727504579d6e1911e1346deaf471134aed767b2f4d9e879bc63813d7a9647496c29e1d0166b2fbfa0dfe9d93e7de982af3de427c342baaf3bd0212c386dc50c32f821ccf2059875c36df4437d74a64c94c7986672e9a78102819056eb7635afcadb1056f0e99d9749b54415ac1695186131ade9cb7179c09900da5298c1f63640c70285ed7c624eaf92d178a7b8a8ea5b6f9efcceff01301643274027b1a55129997e97b6fcbfd41c985c8b65e9cb2eafa99a9563d60a0788587a6be423f6dc13177ab9c5f0fea0bcbfb3f95a6cd480cdc985f47d3ba57f367e502aaf935a4f1e7dfe6baf680ab301ebbd028190104ba34307da0b1f86481beb813864b97f2abde7d076ee53d607623414a6f718a58bbfa8301013dca83cd72cd861732180fd5c2340554228a92dd16a48ab44f9ba5a0f4a4b286d962778057436b0bea9017e316809a54e1fc6c44a0a2abf10c62e2d2284ff992020a18491117d9fe6abd62e62641ad73884272f094625e88203053b8cf76cade43511fcf8b6035e0581028190575f40ae0aa97cf56c9f08f6b9e418caa562f9378a17ab36b8e6d503f3f4f975aeeccc162e8870a5942dd2ca8157a208faad72532a11e8f0d9bdf0ba38f91585f49f8b51927bab2fdd22bd99544897a08181e32fe7993173030a2c9fce6c219f44299c96137f9e060da72637546e6837c81cadeed9137f8f18ea5c24025f85a118404b8bdc86626ba24b05e081197390 -Error = PrivateModulusLenNotMultipleOf512Bits - -# RSA 2303-bit key that is valid, but we reject it because the private modulus -# length isn't a multiple of 512 bits and because the private primes aren't -# the same length. -Input = 3082054b020100300d06092a864886f70d010101050004820535308205310201000282012061ca8d93087a5eb0f9a4e5dd47f62651673943ba5f3cfd6aaecbe355e6f37b422d7cbb13fd0675bdb22cf0e5906a224a83701f3256a78f61ba294160cb212dd5a6b42bda1a8bbfb7b21863dcc8a7aaf2a473dc71a9371e8f16e5dc77b2c4025a69fd27c60c7123e33d8c8bd03398566fe99e7601378e4acd97235bdcba08e388107cfab48c0ac6cc713aa09be6eaa4173bebac4141fc8857e09cb136d9e994efdc5a42a2dd2cf0a15a8f67ab8bf2ca5bfe728bbdd06b1d1eaddfa238d28a857e1b376613cd2260bfa7905300af58f8a14e7ecf41fc31cabd45f7f4445bb00d86f15912bcb730216dfdc656b57b94ee5f5c8b3000ca80628713332028b6d48249174fc8a0bd0ec2917b76218764070ae24355c31eaf389d3403d802bf3dc42b7d0203010001028201205268fd0804a4033a871744b3471a93ce13fc392c4d683b73751cd357280ad63bbdd398604ee1ebc551eaf793ae3112f6d26f618aed65c5ba28c4ed98a1763387123651a23aaebc8114afe3304354b1064c3a6b72c9946ec74d17a6c4a4bcf3f2b7d1247c8d2da77daff7ca3749d3be3c0f977f80a50ddfd203e5435beed6e0d0607cc255f6927a57fdafd77baa8ce07caa191b77c5b2b725636fd252f9246c4d26d4734e472e3884a0c205ef9e947b8882f9b27d8b3e305231757826b900aed455252552af86a1cc0f9f405126272d4e86a5b3a4539fa4ec46d1737921ad5a47046a9b2e1fbf9e745e802155b2e8205286b78317d5855494aae4ce94874c527d21027d11979bcef23917eef81bbd3e1fcf7cb04f8b0f61083acb08d94ed990cd02819100e6c1fc3765e9c9eb83316e06bd2e910f04cf23aa7aa5d303001db15f93bfba4fe28f19205499035be6d2c224396c9d669897dedd6a8c4f399dcffdb8181078baddc34d159a10741384db2a1850b4242a8f63b16c5478b72fbc17efef4866a5ae156e4b6222c86c2f4e370a55c9690f20122f6cffb37a1aa71d848bb9b7b84116a511ba76dedf8743751b842fb140ca4f0281906c7d0b982df2ac5d289aa1925f65be3c562373fc8f19171b53d85ffc4989cd30442175e423d4c106cd00e64f3108fe3f8cb3dd8eff6fd380334baa0e4372d98755a82c6d02e63443eb5020dcc2ce6e452bb6c7434a9758f1cb33b9ce6148a4bed5f042da4a14cbe83d161c26450b8c2f0fe4267d7ef0499b4c7b6407aa7e66f2d1ff5724a01ace5d30a3bc0bb2319673028191009c9e73122290b024b2119d8ce36034c24dd04d73caf4bba860aec69189556b1e07367aa64fe4debbc489ad8d2a9086b078c73353729ab2b6f75e90e51f2826d925e5056fb0f693e21f9d251005ce8e71788b0083f73d4b901188e9a7adab45ae470b6a0cbc70edc499c08fba340ea35e70195250a6bf2c51da9df8bbdf6f267639293436b40460e92f15b2fd2fc03acf028190157424f6d31f4a36a1f0f2429fdadee3cfa4f32adea177904fe45a16e9f3f63fb53968b6d4df1dccda7d730df6047142dff031c0358347aff274e40c2e0a6839fb1666b2a8001e15d052e82cbfd952b51b0fea17c488696e6760b33dbcbf40d4fc39a6fec3e798eb34294b27c63fa2592c2b51f13f49054550ba95ed6e29d0f1f3d52ac67362d9ac54120cfdc31f4b410281901ee70df154d97ae00935532cfdb43c4464bfdd0d6f76712fec6ae76f2a08f37f48eb2d54a341c023a1f79b143414f79479f5ace419ebca650a133fd6fa599dc3754851e04a5128bc007cccb1116339844861beacb1ab660ab629fcf0ed70ec41368324848f9fedc296c7104811b85141dfda4e7a51af43483e133d557c906b75590dea5480c2a3b7ad881ae6de3047f3 -Error = InconsistentComponents - -# RSA 2304-bit key that is valid, but we reject it because the private modulus -# length isn't a multiple of 512 bits. -Input = 3082054f020100300d06092a864886f70d010101050004820539308205350201000282012100cd1d23382a2db0444fdac845b1645182df1ae59d14830e6e4fa41ffff1c1dbcb63e8cebcbd8e643702ef0ab6953d65d9e3138509d5be4fdd15aaff1ccd7d34619ce713bdac14838d4a25fb561c6521992ed523158b538eb9dccc902a7955c5f568e6652fa6296370d589b5acc0ec1cbd110b2506ab73d2c9180c77be49cc8c27c4b06e4a102c60414129ed8644e613735a1f8f5ef874a50ca7dd6c42cf5f90ae745d59cfd4b47bb3c8d86a0c5aad1d7f306343f8b12fbc3ebfda03a59a638dfaa519e241c0fe728322df643cf20eb85134ea7625b8414029ff89fa44b4d8955c43382dc574bffefe4a5f3de5908a4d220d525e85b5774380b244ecf667014786c14cf53517c5f15179435c81e97e46e83c20c21e5ac8922544f1c39bb20571b302030100010282012100878559f0d10570f221a4d7301cfdc0516ce193964ea82ccfbbb52023767374aa94af8c70edf977c3551fe57f2f69eab2a4b30ff2a893dea69f9b64857e4bdc61264f131efde46beadd73ecf53f3b9e905c7e1c792e9e1dae35f1becb217207a29715ab036990ed0fef36d69f76b44a64ad2f24de9c47a19c96541e85ceb2e4639e34481a8d4714ade8c53017c7cc104ab6b0df5e2100f42af6ee1a8edadd726f3303321b9d697740b9ae11cad24f5a9edd3dfe5eedeb03eb5322c7725dde8162cc1b5c4bd56e07fdbba2b75b414efe84ac12885350928d2f859e2803261a6f449f92810eda199fcf279e780e2c47aa119a7b0d7b7729a0a0067f3d648db50673042a27f2f714d335c9aa022a2f51b9752dbddaffe039f5ba2a9736aed89cb3c902819100f0e35612fbec84c21e07de8f8a7f1c82bc1fe9d4e487929d88c925c352750dd4ef5bfeeae293f44437d3da88cd377a3926f621f1d92ec2f5b56775fc4a234ef1083ce3fc309bf6974758891e3b4d5d790d84d22b839adbe2d538668843d962a9ccb761a2f7d1329643796fdbbffb9d2a3b06f31a62f6ea24ba96e7f827cb66c4ceb763aa036906cfd126547d18b57e5f02819100d9fb446655a1eff75331b259824d3f1e1e845d3d6f385bba360424ae08ac55beef743b6aebc5f4028dc218d5eb5c31bbfc53a0035e7951ba9014c8e4e6ede6d21763272770058cb8ecb7d995f6ec9cb34c8cd63455eb832ca13783ec52bd789ce47010f141d3364fd6230aabb0045596680225fef8f0e7148c1d52ff630be6bca36ca3cf996507ee3e2b6d618a35a52d028190767d8d0067954f34612b43c9ddb96adfd003eeb47ef9452062817726ddefa02f26d25cd15344adf9c4705c65c0745295bc598416ffdae5a1916ae3f986ca59716cb8eef8453ce28e45550295b15bfbe7a8c3b5d21bb95801fb19f42d811a7452cbd5449cb243e01b53f36f176c172b96f35416cedaf153f95f230dd5de554a26f2fbf8754f9a20f4a68fb12d9bb2e307028191008319d431981f252c232528971cff488edcdbcf183be43186f525d8c9b2fdb3347adff53c81413558b3d9a10647dfd329b4c0b6e44fd5b789f54e0ae560de848ca6f443803ca799d33ecbf4597581295dcd14876042acbae004b656e9b379b128eb5b5b553eb9c15892f9d059222bf92dd4b03619fbaf27cbfbd94729c2704dfdf66c48b97b10808c91679d09a50e4ea102819100835e751035519d3a6c0a6cddfa73d928b5ea0c51eb7ba44c34ddf148edb1971e436c1438ba996c114f0a545bdf3cae1be3da1ecbc6859fac3ce04a7b1beac6c19e5f032ecc7cd9e96e8e6fc2241911f90ef0a26b1c8b9df24e324690f6be4d904a7070d9424120b65c8ebd733a97817f943d4c697dd931e66c8a5eb0bf54d813e0df978828897bfe304cdb799728cdc5 -Error = PrivateModulusLenNotMultipleOf512Bits - -# A valid ECC P-256 key. -Input = 308187020100301306072a8648ce3d020106082a8648ce3d030107046d306b0201010420090460075f15d2a256248000fb02d83ad77593dde4ae59fc5e96142dffb2bd07a14403420004cf0d13a3a7577231ea1b66cf4021cd54f21f4ac4f5f2fdd28e05bc7d2bd099d1374cd08d2ef654d6f04498db462f73e0282058dd661a4c9b0437af3f7af6e724 -Error = WrongAlgorithm - -# An RSAPrivateKey, but with an AlgorithmIdentifier of ecPublicKey w/ P-256. -Input = 308189020100301306072A8648CE3D020106082A8648CE3D0301070500046d306b0201010420090460075f15d2a256248000fb02d83ad77593dde4ae59fc5e96142dffb2bd07a14403420004cf0d13a3a7577231ea1b66cf4021cd54f21f4ac4f5f2fdd28e05bc7d2bd099d1374cd08d2ef654d6f04498db462f73e0282058dd661a4c9b0437af3f7af6e724 -Error = WrongAlgorithm - -# The AlgorithmIdentifier is rsaEncryption, but it contains a P-256 ECPrivateKey. -# TODO: This should be "InvalidEncoding"; that would require delaying the version -# validation until more parsing is done. -Input = 308181020100300d06092a864886f70d0101010500046d306b0201010420090460075f15d2a256248000fb02d83ad77593dde4ae59fc5e96142dffb2bd07a14403420004cf0d13a3a7577231ea1b66cf4021cd54f21f4ac4f5f2fdd28e05bc7d2bd099d1374cd08d2ef654d6f04498db462f73e0282058dd661a4c9b0437af3f7af6e724 -Error = VersionNotSupported diff -Nru temporalio-1.3.0/vendor/ring/tests/rsa_pkcs1_sign_tests.txt temporalio-1.3.0/vendor/ring/tests/rsa_pkcs1_sign_tests.txt --- temporalio-1.3.0/vendor/ring/tests/rsa_pkcs1_sign_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/rsa_pkcs1_sign_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,480 +0,0 @@ -# RSA PKCS#1 1.5 Test Vectors for FIPS 186-4 from SigGen15_186-3.txt in -# http://csrc.nist.gov/groups/STM/cavp/documents/dss/186-3rsatestvectors.zip -# accessible from -# http://csrc.nist.gov/groups/STM/cavp/digital-signatures.html#test-vectors -# with SHA-384 digest ccf23d868984de1112f2b6d089bff30ae3aceaee371655111a6e746487549a5f8661a7f43b9333b3d3f453068140e1cd -# filtered and reformatted using ./src/rsa/convert_nist_rsa_test_vectors.py. -# -# Digest = SHAAlg. -# Key is an ASN.1 (DER) RSAPrivateKey. -# Sig = S. - -Digest = SHA256 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 5af283b1b76ab2a695d794c23b35ca7371fc779e92ebf589e304c7f923d8cf976304c19818fcd89d6f07c8d8e08bf371068bdf28ae6ee83b2e02328af8c0e2f96e528e16f852f1fc5455e4772e288a68f159ca6bdcf902b858a1f94789b3163823e2d0717ff56689eec7d0e54d93f520d96e1eb04515abc70ae90578ff38d31b -Sig = 6b8be97d9e518a2ede746ff4a7d91a84a1fc665b52f154a927650db6e7348c69f8c8881f7bcf9b1a6d3366eed30c3aed4e93c203c43f5528a45de791895747ade9c5fa5eee81427edee02082147aa311712a6ad5fb1732e93b3d6cd23ffd46a0b3caf62a8b69957cc68ae39f9993c1a779599cdda949bdaababb77f248fcfeaa44059be5459fb9b899278e929528ee130facd53372ecbc42f3e8de2998425860406440f248d817432de687112e504d734028e6c5620fa282ca07647006cf0a2ff83e19a916554cc61810c2e855305db4e5cf893a6a96767365794556ff033359084d7e38a8456e68e21155b76151314a29875feee09557161cbc654541e89e42 -Result = Pass - -Digest = SHA256 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = c43011f3ee88c9c9adcac8bf37221afa31769d347dec705e53aca98993e74606591867ccd289ba1b4f19365f983e0c578346da76c5e2228a07e4fc9b3d4807163371a52b68b66873201dc7d6b56616ac2e4cb522120787df7f15a5e8763a54c179c635d65816bc19485de3eb35a52040591094fe0e6485a7e0c60e38e7c61551 -Sig = aa3a4e12eb87596c711c9a22bcabcb9dadffcabcecbd16228889e9bb457d5d22571a72f034be4783384f43ce6fffc60534b8331cdd5d7c77f49180bfd194b5fd43a508c66d786c558876735894e6a9300952de792f747045e74d87fd50980230707a34a4df013ce050bbff0d6f570885c9c7bf8dc499132caee071b41d81ff91b8ce21aa2f282cbf52389f239afe1490890be21f9d808b3d70b97efd59c0b60e466088bb42714f212bc90db7e942ebcee60e7b107fff44fb3564ff07d6d02850215fd357d897c4d32bef8661689f2d84ff897637fb6d5568a7270e783426b74b7037493e5155fd7cb3ddddfd36bd8a9c877d71d2a966057c08263d2939c84987 -Result = Pass - -Digest = SHA256 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 61d7b3150131351e7b4c8e5645d38be9335b40289af34cc6b6fc5e48493bf8b7852c73982c99441ef66c7d9d33c29742b1406e02e0aa8dd034b1ac13cb0d775750cc91421fead9caa921eca61a02eb023a457e77915e183acf517d946bc68292896014fd214b7c8c5e14e15944be0f9296127771f736766e4f81dab3708ea2d0 -Sig = 84e92a145ae6be1ff9242d9ed2d68de668e802524e8ac0a79de62fe74048c35491fd2ffdb185057e666dbfaac84c34fde7891263f8b2bc74746230320f67a7bd7319c9b9de4190547014e2d7a2a5060d6200aadc3a44bac029ff3992edd30ec53ab0d9123eaa6b147352a073a98161e64f394bb99492c6977e24f445c7125bfb90f87faf262272134acb18823a99a5228d1495463297fd774877fb63d4918106347e6f29315e48363f39b33299eaa32d8da71b229d8ffee5f66f722ad3aa4175d3f84ece9cc8eca8d6f2f356a85c1524896c18f7b5c8f9bcdef45c496d539179891ddc76e5208ad8353d48c624054f3440eeba4432a10654a11ef53783bd116f -Result = Pass - -Digest = SHA256 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = b6771ab0e128b41b32b8b05e05add23ce0fb877b40bfcc3b992f4c8698d1c828abecbcc1c33d401859ea2cb2afbc7fa4588802a5faee2867534639287ad8af84674be18db661de1da8e19c6b6bd452dd9bf3221d0861fb6fba96be42329b9f04f37dcf3b41fc58d2298348b0c15d1190b125300cf27e0dfad60522fc49846053 -Sig = 6276925568626f0cbe6f5150b050e1702582f8daf99a6f880ef75cd96c2d4208fb6e91b01ba6aba2a816b2d3cb975df850b1d268c4662dd1ea3a300c1d7171c633dd2efbac3000c56ab80f989dbc18243e636ba5d4d26a7d3f1965ad3cb0f1a8513f998003f7b67e2ac5c718cb688b3201d56e68f0b9f86257b84794cdffbc1fe3ea24b7bb6e9ef0539bd4fbc1afb55bc1dca39996ea8a63769f6e225707f69047555e1a4ef3c639c5f2a497b889424a90148639bb64df0a06e0b7f0e8ed466a977baca32f482337b2abe3983eaec3fe1075016e5867521760fd0607d799f1766b3ff6e2ae155d69250f8bf08c8edca0b4f31d0f838cfd298cb7312df93f0997 -Result = Pass - -Digest = SHA256 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 6a81cb6c7b268f4b9fb9172adbbb36a237a0dcf1c3c83a95dcb0271aac6ac330f04a5a00fee38bc00631a98598186159660d9d8e4c14a9528dea94836083dac4abb73fd00e38fe0e23c7236604a736540e52193ae56c33fbb8f5cfc5c7c2be2e222e4483b30d325c7ee14f742851fcb8b6d6189e98b822b8e6399d89e90fb997 -Sig = b67991050c083e645097db03fff34758868beb19e9c0c48475f0f913361e71d3d6f27a8c4f0b269b49e8534039e53ad3bab9a3e62abe078ee75e7fb5959006fbfb014ca7b81b3d5afe0ee5f6fc2dfbc450f2839543002f33f4f354f827278c76c041686eea7886ebb2a7afa5995c6cddb1c0b58066ddb8dc54a6927c146c3b2a0fa7cef28903c6c672bc20ef68ffbfab247eb688ab4bde7106d9c59d2153096dc9e5207267038d88e2174e76adc1508ae24eb602332e53c0c2e33154a66a97a0f12f66c61258c7bf6bbf3f1dcbe9caf2fd30ec68c0a9d09f4fd776304b540e62fc8512beaabc4be2107a1ec18e87f61f9db25e871dc0693cef17c2a687fc854f -Result = Pass - -Digest = SHA256 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 056c1e4644599e3183dd8d2f64e4bb2352ff00d012ab763f9ad6e560279f7ff38a5ecea9c2e4ea87d004ef8cc752ae93232aa37b5bf42884baa7e7fc6a8c951cd245de2d220d9bee2b414b3a7520c1e68bcf1ae99a9ff2bf3a93d80f8c1dfe8b85293517895c192e3c9e898295d65be334f44d62f5353eb6c5a29edfb4db2309 -Sig = ae05204e409d727eb9e4dc24be8f863328c2813da4fcef28866e21a5dab21a485321b735274af06bf17e271518e11164d722ab073548f02e1b441923db6f1cee65a017edfbaf3361c67fbc2b39fe038cb5cb65a640f95887389ce8a5ad2ec6e69d3d603505b025f6d6330c8b648802caf7e6fa3fe7b38141659986cb89e6232f106222564d5e5195eda6a25f99068572c2fafe97f147f7f2f4119f21385af1fced97f78632d8bf4fd9a9054d8b9aa2a9f4ded587847a91d42c6391125f103ae288547e8489693ae8686b84891b772b10c4796883f66cd459a8c1a6a4187bd6b387d349e92d7b604953727c9e9fdc449e7345e7ca6b339e26b086f5548898cbe9 -Result = Pass - -Digest = SHA256 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = cec5c9b6f84497ac327f68ef886641fec995178b307192304374115efcc5ee96270c03db0b846d674c528f9d10155a3f61becce1d3a2b79d66cdc409ad99b7663080f51a102f4361e9dbd03ffcd876b98e683d448bd1217e6fb2151c66964723b2caa65c4e6ca201d1c532bd94d91cd4173b719da126563927ca0a7f6fe42536 -Sig = c48a8e01d4bbfe0f2f05659337ea71d21f38d7f7a10b00b06e1f899eaf40a8e97ead64bca37f13a55ef1cf3fb52cee279cdcb096085a467afa97b03d78d6076e472b12d6be9647cec32d8d91a26247693771687460ba5269de18e1edef6022533a9579f91d584f9e0cee1100c447b77576b1b4ee163ed4700147a9aa61bdc4e2316d2d818c1028ed1c3e372c9f6a1745572444637248091b83f7b539f9bd58b7675676034c20e4ca119b91c4ca5dc76acbff3d0462898352c591c2ca6f2d8b09e2e6338a84336e06f0cc020e9eb8da785889b497f3b98e827ee7a7d3f1b0b73c1958e16aa97861e6675970ce31d9d119bb340be80fd0f43c3dbe64f2a59d629d -Result = Pass - -Digest = SHA256 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 9193f8b914dfe0e62521f35afa4fa5d42835e198af673809377a3e7a99733142a180dc0e13e6bb7ceb3b60e5e9d515794d82c392e07913423391d22e2bb19aa0bd88afd7f77e27a240ea4e2de085481ac31ff8d37990211f82f2cbf4c90de98d6e1338bbc88e6a80ab9684dae64785dd107248048593abc9ab03f1737a6f6530 -Sig = 5c2fe453a8b08c90b02eb2c9994242d518f3f21b368895cffd624050e48aa714005ae675fe79aa3cadd4df55bdf12bec5be8a41d87538f7e031b782e34d392468e5f14bc613b8f4d28c8fb79a2537e1e601031da720acd7b2c8dcbe9858624a7a9a92a06f91845f732370d67365c6464f7b68f22eb3edfeec97e3285024d7f6943b6d50a16cc96d60f680351deaa25f0bc868948607a6ba7f1949b85943c6a92bd6172e81bcc055014b78a733972e3f39d14099d1607a20ff8681c29ae1ef99ef115ed6a1084b514b81a69d4a15ce1e2576fdcf2b2af615b52fec70132112dcc5bc19ec17f32281460623420317353e8a255fda502bd1fb11a58832ae2c04f9a -Result = Pass - -Digest = SHA256 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 0e57ef40b021bf87f642c5756b6515a0e06c15a01856d716c566a6edb381dfdf44d9033b1cc809e61dfef9a096dfb689b7271be449d04a1a9c354102c077af5ff72005ab6b06cf131d7345c21e821d6201cca4e090440d70be6009d2dd7a98d311751e1605a3b914dce6d2626b16f233a5a3d71d567cc820152f25e473514242 -Sig = 7643aa3fe63e66f79d6b409d145ea820c9f7356f71b4acdcbd43fe1e99f8802cd1662b16240f5cfd94a769b0b3f2cb0b11887e886e5ba43733367490b3fc188f2fb3a0c0c8a68b5d2726c8f7a31902b6b86cd402287d385c3e3c06503ce17fd6e54e582f4a907a91f952d2a360e2fba00028e4d3b02aabf7d220b31d1f8ee7faa070147682ccc8bcc756ca6a68fc20954550c317e87918781a3d1f1923503091090c3c60ca1c0b1c699906fbf85aa70ad9ae48709ff743b82dcc31074cfcea623ea45e48644b19a21772ca107ed64239c56574a087f1a6aadf0f4b00ffe581c1410274c875e4599063e46e5168803f0d28d21fcd3509b4c6222995add7753bf3 -Result = Pass - -Digest = SHA256 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 0c8491fc348d341fe85c46a56115f26035c59e6a2be765c44e2ec83d407ea096d13b57e3d0c758342246c47510a56793e5daeae1b96d4ab988378966876aa341b7d1c31bba59b7dbe6d1a16898eef0caca928f8ce84d5c64e025dc1679922d95e5cd3c6b994a385c5c8346469ef8764c0c74f5336191850c7f7e2b14be0027d8 -Sig = cacc8d9f5ecd34c143488461135c4951676145c6e472b92f12f758046f172142fa388f285f3fff068242028829047e248059ed4fd39d2c5ade469dc7c39345e5114950d2031cc7465fe712c4041d05c756d3f2d88a46ceb99f2e24a52e958a03cd2519a9b137e62d5ca2b353f7b047b625c3602313fdb53c8db23d83951a599db328fedc4ae06da89ce7f56259b5c8222f7bd3d9740478fd28e5810db78aee8623fdd39f603f8ddf98081d7873980c4eb0e22a9cd408f7c4134c12d2049a2d120f4b62e6b382b997fc375ef7ac955fcf80b045c3d6385ff422dad350c68870539068a162a2edbb93ceefed9677939b90bd3dfa0dc053460b4e2332efa692179a -Result = Pass - -Digest = SHA384 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 6cd59fdd3efd893d091afdc3155d354f10d6d88167427a2cf7246207e51791a6ca6200a914cd2834a9b3c79fcd59e26e457e0683bc33d49267edbdd6e5d90902696f1e7b1a4affc4ba371339868c28015ebbb73e262669866c35db974ba69e468f2583b9191d15d686cd66fb0b9e0ff0a3b4721a6dc342f14f2446b4e028595b -Sig = 3974900bec3fcb081f0e5a299adf30d087aabaa633911410e87a4979bbe3fa80c3abcf221686399a49bc2f1e5ac40c35df1700e4b9cb7c805a896646573f4a570a9704d2a2e6baee4b43d916906884ad3cf283529ea265e8fcb5cc1bdf7b7dee85941e4b4fb25c1fc7b951fb129ab393cb069be271c1d954da3c43674309f1d212826fabb8e812de2d53d12597de040d32cb28c9f813159cb18c1b51f7a874cbf229cc222caeb98e35ec5e4bf5c5e22cc8528631f15117e8c2be6eac91f4070eecdd07ecc6db6c46eaa65f472f2006988efef0b51c538c6e04d7519c8e3da4b172b1e2761089ed3ad1197992ef37c168dc881c8b5f8bbfee919f7c7afd25b8fc -Result = Pass - -Digest = SHA384 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = acb30be9092b2f18f25934a0d678b6bcd6b67c2b88e75884f47b4fcae3adfa405afe2c7e61e2d6c508b92790ac00f76b77c965082668bf900f70a33762de6413af93af2ea8086fda293ded4475f23c4cc31ad494f98d7dd7b7fd6f7d972bb76cb35adc206804c3fe5acdd0e5b8b54e07c29111f788bc5902f40afac30afdbaf2 -Sig = b5c60d8da9b3943878cb2359cf65e4817c0794f950453ca77c81a5a1c1585591aa50a67468e3b399e4faf1d606bea0d9e6cc1d2d70db8063739e0c27d3dc9f9afe88dea52e73298a07d05c7d9707002efa537c389e38bd37bca74eb0af6261a5da06136202c8ad487eebd50bef74767089c70870be1d8fab9156f9fdbc2f2e9cc330a95018ce7943984becc25621bfa66018ef8320b60059f941156e9cdd87ff0d82cf7be77465e0203e7120aaeced84abd8186947d4ac3daf3f993902aec47c3090475c857b5d359f0a5572d4688e5a76a4653868ff54ce9f999e6bb559d1c11c67c15be9d7fe5f8c1704301d055f3d2907722779d6012036084e950de36f4f -Result = Pass - -Digest = SHA384 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 601a6aad3faa7988d5ae528a6969031b10a6f39216946aa89fd4532c8ed141f9a650b126ef488f7c5cf3fb2daa254cc28bdd55560419e80214ef999896dac4946852d24fcd9fb77610eebfbb6ba58bca26f4567f03ac7e56da553f23817bc103ee485592a058fb5e3bc8299c7290c71a29137e75dbf5328c3a2dcd34165b3f2e -Sig = 301d60d56576f3663a7fbe8036bbe4fbc0fbd82cd6a42e36d7bbc8b206543dc2d56d3198e7911ad138cad222dd99050dd1f85fe19c8a88bf67135e7f8f11b5f5e485c91fc7d478069b72f46ebcdcf2d2ae7de6ac8fe53bb6c04911d122cc231dc210b2147ebe8b052e8b2ccc09f338b349de2025cc87b2619a7b163347ca66a34791a2e46b4e2ac57eb9f6029cdbe024e896d57f7d0491f7783312f8f06c790770150cd139f61fd2b3e7041b37261c6e7ea86d4e06d9300b1a5667cb0288c550b2afb355944834b461cead13794276bb46e5e20aec7b63aaca4d491a500facd59a37c52779cf467d74af1e62b1ebe0fd0be1cacb7ce6d050d86e4eb76cde0693 -Result = Pass - -Digest = SHA384 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 44d3e0fc90100a1c9316063f26b180326cc2e3834ce56e4324528a0bbb015b3d7812958cd26b91bf08a3a0b1121f9f9dd77acb98a02ad75fcd613c53c732d1c235f59b6873ece6363f279452b6a4b65e80bb59fd47b9a2936dcc1e4dfe1f5362e3459b9859db3209a2698d27fa8aedfecd4d35b927daf8686c59d700490f0aa3 -Sig = af2229e94a857b89e0e890daca3a8fe12ebdba04948d1883a7d7816a3b682f7da3032540a8769f9ccac9586cf24e8c204b45b85d1bdcc5a5450a215b4048ea42983b3456fa8c76c6786e024f705e088d694559d668caa8684cad0fc57850fcaf34e458aee8fad4e09e6f196557d4e8860284d982c0105d98ce4912e96c3550e2a0c7e8bad5abc29a9a542f57a8c60579038067b3d5391abc21b4f9deb024ca58f9b0c38c0d1f82373f528e939bd73a24d501c591168814c872c525db0e56cae47df00fa3728dc3a0976965323ce8d2dee2b138b50ab7afd48495114673e91bb3ed2205e26a8455474c3d4ec8739bbff6df39b2b72ee050410930423b1472b6ed -Result = Pass - -Digest = SHA384 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 5af09077a1f534b89822b26c3272adf8500d3c6bd90f9b5e0d8b211f16d0720ee0eaf6462b6c8a80df6d75359fd19d03a0cafb52bc9d4c37c2aa099911a79a92652cc717f0746fdcad627c72f1c216b243d2175f6d00bf07d3f6aa2a04d4fe9f8fbce93218944b92aa07af6b4fcd80cfde2d7ada15c05e96e777ea1c17df08fc -Sig = a56823fa577e8946f1d2f6e351b738b53592544358528af88807ea4f19017dfe81a3d69f62fbff649550d9b310faf27a041fe624f0a02bdcddb79bfb0a465739ec8b64b748cc29e5a02c777e1826d3e2f1eee6fe2edee4a8bcac519c7c7ca5c039e76d630668945a1e5e8618e235864561a440e73e39f6d6842ad7da64ef5b0ce1c4ab88db157b68107174ad7d5c9a6065068768c11c4c96ff67050b5d07b8cd027fcd0d347ec79a197cf43435985bc1aeb479db0022289e8dd3b31bb7c62d8831cfe6952f41d24f89d753789535f918ff68b36950af6fd31dee1ac476a0cf93afe9f4a766f3c4d2c0c3f92825d5572eb2eb8a2b644e329eea1683f90810ed77 -Result = Pass - -Digest = SHA384 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = f60a3a543768fabe37f003009a8c26f7dc91f1422d4429ed7f9d744cdd4b552afef75d241acda04ffc39672159ee248e602dab7192449e2ed4552995c258f00a476346e36a29a0126bc249040faa57c9380bdd74b83f62c56790920574433432f8d65c5cd185e24fad13127265c6a5ef8db4f114493d5cfa61d91664981408e9 -Sig = 08d396481deef18cb0bef7c3e826fe6e5c9ecc85e5230d35d66772b8d2d015d4e5f5794fbe0550df2f745730d6f8d1d3b850d164fce4630805e711b59308f8608506b7e01e8e9294ed8b7e7582165677f180e965169dca81b3daf24d7b92fe32d6a9ac63821d48b1a0a144fc7a04b0bfc63a3bc16a0fd837b02037ed76e50d46cbfa3857e658e370c586ab1eed825076321ac8e82be374bacb295e4d3408f0cc1fc4c300b84275a51c3573e9cabfdbe3dc51e4a6f5811d860d725aaf8fd0af19a2437b0f1c80f5ac222f6b25f1fa09e93399a6976b1b3ca76afe6086e9b232aae6c7b818255bf963f31c04ae3fa2136c0a442997d4cf12f395fb804a4755b56b -Result = Pass - -Digest = SHA384 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 2c07a81de58955b676fec0572d48d1955b4875ff62a44b0010c7a1072b299ee44dd0c076f2178a83d0ae76e767e231f1d81e070afab29c97abd4de2164e437b311f507841f8851d6d69ab51ee9e29e654b54bcee45e9b519c6a21787facb927f1d7d6491926614792fcc6346dcd080bb5cf07bf56ad0fc4e083a358214631510 -Sig = 9aa391e7c2f0e920aac27ed9fc2081d3c9caa3735883d01ad7a7e3b11867d0ad624156477bbbdde659f474682d0d774489e2b5b039d1eb35454c9e3eed78cff9c4262e3aecfca1d817542b486096598e1114bfc03f20a45de36f6df70d144d01dc4866a0f83319e7c2b8530f8c27a41b7add9f692d8a8e646455b67c9ec47a4d2ce3dfe35d6a2e89d9be50c5b6da39bb0254bd23a809ab97b2b48a068a87abde6b6a6e35955fc92a9626f9607d5b3f401517271594bef73859812b6a621ed6bdaf3c5f2a90b1e1680f68dcfccacb65e0081f1ccb6a2073709d1ba067065016ed73ebd7ebe9e7a7b60c8c9dd04a56fab30702c8a6df6a353a301047df4c7aff62 -Result = Pass - -Digest = SHA384 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 35ec92afdbc2fcefe48f1e2f6e4829ae53b3da0459cc4ea8a96818b5831891ee2f506fff37c89906d3233a51a5cf1469a62c185061f033085fca6a54e24529c3d6f0d8e904bcb0f089a5cd50869484da1a84f6fb8de4e53fce3dc714201519d11013f6f6aa64e8b5ec5cfeb27b611f0895059d8c47720d55e00b577ca5500920 -Sig = 6b0f5b50e678da083ed0f1b64e943e8c6279c7246af5ad079cdbf223e42a0d471e56314bc0d58f202aa6c5e1e5255985b0795d48eb3d4b8e3fc92240ae02b4088c6ce8ab0e8c79c68dfdc48657d6a28295391b9a5a5f35255126bf8ca53cbcc0082eab52ec109d22a1185f6dc792fc290aa8dbaebb2fbe404f1d039aa6343cd7af9fcb2d1e05def48096c237e10daa7cfac5ae9b3b3022005d0d2d5c9c5c502b2f23594e80d1604bbb8f5dec07cd3afe1f777743b0b58a4e0e4e5caa148830eee047968e7f40661f9f1a02e1a7fd2b6caf19326a75e9565efdc0114bcecb14dda06c329cf322a5bd3e6ab48d95f2d2a9c1c1233a0aa015a738f901f13148b454 -Result = Pass - -Digest = SHA384 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 80c9debdf93174d75750a6cf09af71fc18fd513bff9cb491be60af112a93f000873cf43858a07aca760a37e760c8cb01d276f42d997f01cca5e08a6a602f5fe63edcbed395b8c91fb0b336f21fea49d950e1ff24640c8d8d3b95081ad1596644ce34a558587e4a1e2cd50db9ed1dd3cebbc6dce8084d3e1ba70692e82618ed61 -Sig = 4a15a783adbf274622d5a610bb6fc73337999e445dc2133accb788d6203d70f3cdc63e67daa4171a7952a4986456fab3c077a8941fb259e37a5c0cbb20c408fa24ad0ec850e9bf028c3604609941f5ae2f18bf1ac37a24f755abb9c85ddcd0bf4a12fabd9d253029e081f628e2bbe9f9afe9224954d8315db86c2125512bb98ce9b36930994b091a8a1d7d4e2f4a0e58d0a35876adad14300530b39c8dc11ded3ef2fa95d5f22e67cae34cc21ad5e23f9122b53dfb79f1a2ac63c1844e9ef069a2e41f178d6dcedc518aafcf81e0ebd882556e731cb0ab41d957274a3fbbb7cef2608791000c6b860868cb7393e7d03d945689ffb77555efe08f461451d33c11 -Result = Pass - -Digest = SHA384 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 31395cef349551343a49271a8d812b4c7b65b455b7eda811fcf74161f397112357ae446257be26c93cfce55e4ba7976ded997ec10d1c8b1ac2fe22dc2ee81d05a6eb1361125cda0197e24ae974cd44092aa9f36fe01352ba05ccefd2370ceed6641950562f1776c39522e023d09a3b097bbe9bc5f87d05d80f8830abd7ac8c80 -Sig = 162f387695cf9d82dda89c749318e46c9be895ec364ea4aece97ccfa63925af3710894da2b7b5967e46f4efa80ca25d2a965a7e15f75e0aa1bd4250f8f41099e6e9714c3fc4311077ae9bddfe35ba4727531529c239d546ab1c298187f165f708ccc0ae3979a8da193e34859a59c2c3bc42253c8346688e6bba6fb1b01b10c1ec2c6493dedcc2696269d851bde63e27e37bed357455c8fee5629f94afa7a986695cfd5b99212657a6c884644596086b89e0c7c05e819faebebef745fd295af8866e0750f5479baed50cbb3d059f8a5eb7e0e61e2733ae50f0c1ec42be71f5dff324195cb4f0e941a21561513c3037db92fec9556b772ccab239e34b1876c56b1 -Result = Pass - -Digest = SHA512 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = a7c309d44a57188bbd7b726b98b98ce12582228e1415864870a23961d2afb82cd5bc98bec922d5f2ac4168b056da176ef3ba91f6b699ba6acc4144868ff37f26fd06720868d12ad26ecb52572cf10416af68df03ab645a8b704857d2190ffc3f07eabe3a8e2abe34ed6159e884c4fae141d4333d5c3e0db044ff9cccd9cbd67f -Sig = 148af61ed5ea8a87a08b3f403929bf8031db4fd3999b64409ba489f97a3ee5208ea4202d2ec18734f615003a51f77441085be6ac0f11810ffa2dad58f0e186d5520ac2b8a5d3966e8d2abb8074e13b50a4e7de83be10a66fdc7ca18118c5774f781212de9efebc6376fcdddc65a3b1b8f1ab31492fe478259ce719b3db587498d879a01dec96e8eabeb07ff7073f3f3eb446084955ca26329a791315a2c259d225e26b2154b2047b21faba68115bfd962e5e24ec52d7c5d231e3044cbcd8c8804855703cbaa622b15b6ef78c7421a367166f1b02576c87360593da75b7189efafd1082bd59f6857f1701f646c24d70c95273c49d5b11e6afe258821b55c1680c -Result = Pass - -Digest = SHA512 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = ca505d4591121664990747d95d9555cc75bfc3fdaeeceeaa60eafab3fc320cfce56eb9138138bf138f25f3c8bb027b136f5d3d90ed4897779b5951c09df5d08ba9ce8cbe17abc4f038687086e93d771b684322266633d0d65d71ec41234a1dbec07abc8f7df28bc43dd8a45b10ceafac06775805413701914e3bb37eb6ba5b5e -Sig = 589ccd4ebf9764f87e6afa7f13c4062579b02228117b15a8738ab39cd64477069cb4f52cd8d5f4574c657b453835ca3cedb824f03b92a573d6d3d91361313f11bdcb34d2059fe2e6ce2b854461af58a9294c88cbfb2a639976b56e4748026f3040e2fd7112d6ad44500689ac777c071d17391969762e186417c4400abdda5c16dce0077642f1fc1354e0e8c14e558c923c1bfb85488b8350f415866a60871ed7151f5fbc5b880500011977c778e17fe8918c5d343f70b00d58f718956125fe28b3a5e2d07604a2b8a877204434ce903b35a030936bc71951ca593df97d24e8e8ad8f2dc9b78f76ef13a1d386ca857ced48f19f3ebe39108f9b33ff59eb0556b1 -Result = Pass - -Digest = SHA512 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 237a7e44b0a6c268bb63364b958ae02b95e7eed36b3ea5bfb18b9b81c38e2663d187144e323f9ceafb479507d184e63cfbec3ecdbb8a05d2dfc8929693ed9e3e79e5f8abfc417ba1e17e3e281e8a0a32f084117f28c3dcbec51b86f5c85b2822441a9423b5b446d3928f977626a334579b39cfaf58f214c98d0cdf640be1ac59 -Sig = af076bc213caf75619f4bd1d787cc198f7df3324a0dd87a88416e0a4b81c2fb9a9db5f98aed43bc15fe2357143a6e4ff701d9c48f51de9eb803670bbc4b0aea7220be2f84b8300318c77a9f615986c4980abda85e3ad0089564dbaf7f44d81b6664eec0311adb194d46de96bb17d5a5d47426845802ca0f49a169eb82b75afa191027a0cc8fce9dd16055350df9745fc7200ff9f4ea3cfbfc66c42848113e3be3293d510382d0999f032515527bd99f66efa2a755e011247b223a68e51258b6bc319a7cdef4aec533e9dcd8ae26e349e5b33c79121907de509a1cb83c2e59a47c1a884bf68e7229316a62e3c49d1f542ebe7105cfc27099268120a7743908471 -Result = Pass - -Digest = SHA512 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = ab18939230b096646a37a781629fbd9270f3891a5ceab4a8c3bc6851bc34115dbc066541b764a2ce88cc16a79324e5f8a90807652c639041733c34016fd30af08fed9024e26cf0b07c22811b1ae7911109e9625943447207dcd3fff39c45cb69ee731d22f8f008730ce2efc53f114945573ea2ddebb6e262c527d20f8bb1dc32 -Sig = 95bd0bf2362f34b2e04075b2934f404798703ea472b81ac3cc223aec486e4c3d9c5d1c2f9ee22417132964ed58e49937f5b257d316ca7fffe290b19f5b58103836812bef30ca0327039d8b9ea91295392fc394b881e2d2ac9e30c5a44256700fc9de0dba298273aec30c4f778d2e7127e8b8a88b0274fce04081cc13adbefe555014e1b5d5dcf6224c5ae2775423a66c81818eec014a3faf9ee75a3f6c3e51c556b0a288e8c262946684eb628b88e3f875e62ef6e801cae75f61cee404971c39d24a9712eb342ddc663515dec103b18d97d78ed68212f27900e77c049b60c853002b08022df56f707efa71027589e1a3ca6e415ba5f4437e978b07af3b73ba0d -Result = Pass - -Digest = SHA512 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = a280e89ceb2c8cf26297191baf9a955d0d52375da023633e0afcdb0d39dc335d8295852ef4d06714e6511a95d37c04d26818606ada54359b7d0784aa933cc68561ee96a88910aa3d93d10787cd1d7580556731c174a6e3a32d9dcfa416604f0c671481d051f63db6919f4aba4486d1b0fdc6112c1521559f424523c26b4fb738 -Sig = cd60de3b4a1289a84ca761f90fa63f4d5688bd885f4b531c8515add2de1251f993ff7f986bef3fba692ecdebc81942d7429c7a59c5d3f1fb872fc1da1915e94586a5c3d963603619008f7efeded1d70b0a11ce2cd81b5b0d86b3760c9483674f55e9fa47f2f310d588fb2160e8b5c32be4e7a968d5a8d4ac6576b71a2b91cd6af0016cbc816d4aae8c70649e08dce90b3ce52ab49ce2cb5b0ed8a45e33d94cf2d4cfdee1151270b2073aeffeaf717d39e04192b8b693c53f21a6123813280806920b7dc582201c9d117050320671e86139a027976b7ecf413369a9fc28e0bd719ceb5e107de799f1bc2e255a9f29476d4574d1332f66468afb9004ff7b535302 -Result = Pass - -Digest = SHA512 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 85ed1e3dfcd5bca24cad1d01ebe192b7d059ec9b884436e18714a43fbcc9c64f687301352ff240817001e757d27309cd1fbbda9456b267dbfb958470b24d06280cf43382a19477875f3259f4210bac9b831d0a07f5e97e5f0f78818c259c289e1a789b6c7942c97bc1485a220131e5eba586643b9071e5366bc482dd3c3c9279 -Sig = 138134bbecefafc7ca8b102cbe87b012f8aada8878995002cf1887694b5be3b8f0bb616bc6e07962d5482d3a52c52ab91b3ee0064d24558e13c75c80f6a95b7dc498442879d5baf8ffa7e2f638808b97ff70136bb645e30944dd97a997a0205169553a5b9e874c5a9441e18c15ebed76043b639dfd64db79e174847a102724a2a05c649473cc7dacd39e2e1d5666bbb5f01246747048fffcdfcddf782da24a6dcc022b2695f70781bd9f8ff7d03be22eb8fc793f5c071a66d9a6ea46c6a2cf0556526ba8b085073546448081732ac15f12833c1db1701ff7f68344ca65dff86211a003adbf5189cfae79eaa8c8b7141ea378e44cc9c5bf024d2c710ff5cd68af -Result = Pass - -Digest = SHA512 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 0bdba34e35fca65a1781d4d7c933a5f210d3a59483aebc95ec71b32df13ff4abf401916937fd88ff44ab46b78cc369414e9bcaa8bab0bb8557828d73a2a656c2f816f070b5cb45549e8eca9d7c0b4a7b0a27e51c119358dad2a17fb3a45718f9dec3c94af78d65c3ecd36b71e230cf080d1efdd8d07f1cfc26768fd5407bc2b7 -Sig = 9f48deb96bec0b72fbc4f12f08afb46bccf19d9e0cd0368ebeb312d83872626380ac928b612c5cd77438d47aa9ceea905a9de7182c8ef76e8a7a03d6efec8400b6496362bf6a30ceb1ced2185fc7c2117b6a6d888ac20c1687b0f2aa9b76705fd3154889b6acaf4e63be25880c71e6c239ecfb965004cd6321257f846afd2a6590c72ad83146eefc7b0dc4796339a7f64da0fbe359f94ace1fd151c5ac7bb5707b32eacf564fe1622e66e1844e639602ca36274ae01f93e6b2bd1effd34ab63d852cc9caf3ce8446c29c8ae3c6110fb7538cc8371c2a3981249cdc1be2b24b6a0c951764d0b7efa92a22cd8ed165e182863579377997a9ee50c8ac3aa4df1aca -Result = Pass - -Digest = SHA512 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 9aeed85b40ba7f86a228b5a1515ba190b2efff66993a5ece19d18baa9b4e4df92e5152fe1ec56a9fc865f30bac7e949fc4f62f0b158d10b083636b4de9bb05db69fe31b50103fefc5f8daf3af7156b4552ca3667a9d720bbb2e4bcdabadfd4b7f4fc5bc811faa36710a9d17758a98d4a0474fec27e9ef5b74f5c689935442357 -Sig = 9eecdbd7fbf618ddddfb6e75d64440f60445b853c542fe0fbaaa6a431294e6cb6683ae1a71ea055eb49cd2a3cb5154dc93d9aa166399f4e6294f0eb0652800d71e041c1ce1ad849c03c963bc0929dcdd11be5d67a050d02b64b29eaba655642b6436fbfb163690bf432fdceedd106c2f4972ecbf3077ed8b753bb605ec1ea03020839a318a24f8d4c1d7d8df99a7f0010ae41a8b068e2888531056a7dabbe921878dcd3c7d69416867f4012a606ae86855f15aed0da1250e59687706e89c9494baf37f61fb1703b79928795f90ccbe293a1e9472f6e0f4b890fdda3ea2522e3d11d5abdf0069519424d147b5646a5a601f19ec89729a8b48461e71c08bbe9cda -Result = Pass - -Digest = SHA512 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 654e189f06c7d42d5539a5872184f8336cf100691f190818fd02082ad68a7609fd095e62fc32b529853aebddac3dbf0d54dd571be72c90404bcc93d01154a9bfeff65065705f8e7eeadf8575b1ca48e28a1eed516265e34540dd867c79d7f175235d1330cb1706356b709bd796f43abaf6fce993f88eaa2fc67f0ab776daf732 -Sig = af90298bcef615309f235d5c3360f0df11f5fb988789f213d4c46134fee5eb104aa1fabb1307c9a904709de88673ed9951cba93167c67c09d827021b08a22c0505828ab4beb42e59a38832cb4da24ecf91f470a3b412c0712a8a59f6f2739d4e9eb4cc58d2c52592f1452dc65759abe43e8d2bc804e2efb3efc9b23cc1734ff7caefa46b03ba4b397d0714cdb8501a812c1b9f47411c91cba53a3d3b139edbd7cbb543f5bf3829ba7f5fafd8a712c0b111943f53209353afaba176b3f5dc060339d09b1fb3c213dae5d0f004d302828560fb5debf9fe491eaa66f597aa4de23eeef9176358755c952ef96e3672583b6ecd95a02e8ca7b21d7c20cbb7a757af71 -Result = Pass - -Digest = SHA512 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 121f80b43f9757b3fa80906aeab232195f0e2c41e5bf8c091ac0f1e0bc9e43640680a1823d649bdf86aba277fad8bc85fc957da2caf7323053025ff949706c1476ae9b0953283d34d7c6266f8db65eebe96d195fdce8e965a6383320ec3de0230ab2548eaa69a47a96d80398cad57e14ce9eeac0421c1a6eba69559dcd8f0659 -Sig = 06a2d74585f12ea7a80527b8c635a21cc11b45dbb0885a12722126811dd25d657bfa9fda774301ca3498d05dfdfb78a6aa16a9f8a95f40f1f04bd354a522f6a2d62b324efa3c006c22c2314b01fa0e91a3dba49aa35b46b19804b07ad98fe4bc990393a4a273ce8f1c85fc19cd5eae9af0b7d1957bb23409778a010b00c6959e1b67066fdb9f8495b4de4dcbb987358145b1ff6a39ef6fc588cda1744e0ab9e7eb002c29a78531d25157c5c2cd6470551560a02845db6dbee242f965a255406f6ef47b3221a5110edb44d38b94191aeaf433c0ece3480b9d1b06d8b8b6c0a232a04c567888e6372f2e94bc2be6b827f8712af48c6f1e4f223f5528fcf348799d -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = bcf6074333a7ede592ffc9ecf1c51181287e0a69363f467de4bf6b5aa5b03759c150c1c2b23b023cce8393882702b86fb0ef9ef9a1b0e1e01cef514410f0f6a05e2252fd3af4e566d4e9f79b38ef910a73edcdfaf89b4f0a429614dabab46b08da94405e937aa049ec5a7a8ded33a338bb9f1dd404a799e19ddb3a836aa39c77 -Sig = d1d21b8dfa55f0681e8fa86135cf292d71b7669713c291d8f8dc246464de3bbb961b596dfc8fda6c823c384008d05bcb3dccc36accf1b2bede1a95e52258d7d1bdf1fc44e18072abd45c1392015ee71692690ef8cdaaed337dd8546783f961bb9620eb5c7b8b6716e8c600351fab7765ee38a15d32d8a2c0949825c49a7f25eedd9be7b807bbfd517913786620d249823dae6fe2fd39ac639dd74821b0c120b42f31c2c639d2c61b395f09f86851bc809b34c4981ac65cf25b2e8adcbce190ef2ef67a0189039c9110f26701c3eed731c8d9ead178220ffcac7f0f678aa22268e1d01942ec51e80eef06e2112830855e87bafe8cc9c22fd737c7abbca5eb7a221d3835a86610d24b507b5dcb4618aa421f63a5609ef5d68f5760fddf970135602efad0851bbff98fe87fa58bc365f38ee7ec8ef5aab17fd11d89d91ef4c604e0d1f001d0e08869df9225e3b4cef52ff86815e13b3efdf45776f9353769a8a51fe7d891a7ef7035eecfa259848738376886edc91cc78f6da31c2f07ee362c3d82 -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = 2bcad6e744f2490ba6a6e0722832417ebd910f9146eb62baaa5c749529f79d6ced0b81a2e2a48852c8558e338735dcbfc2285794ae60f81a25237c66f6ce5d5e801a001e7f9e309b2595cb866de2bb74ac51283b6820ec9f6ebe482e1fd2d5680b7fbd23c1e62a2ee4edff35823fc7e4a295ea4f1c332792aeb53eb44b0bedd2 -Sig = 37d960fe391298bbdc223fa1eb1d3cd9a46ba8c62e1da8c563c89a8f0e67b864fc89837ffc08aab7122b84c435c7f9406e165a1029857c1e4dea653569277273b1d9b0a9f5b0dc24afdd214476d47208ad5221a7d793cab80671fb4987c86bd6144880c59d24871400f64bdc6d496dbd497f3dbf642864fe49af3e21515e62d60f0071db4884f49670eaa9e4e4982f269abe724244288859c2adf60a09faaabb07990e09e56de254babbee14be7eb6eda0cdb22f3d0de8724804673fb99f86efb4263dcc5017abc91bd9cd833679475bfac50a2be8db86296bbf8017889357371314604e83d68b6efecd4b79f0a8afa0dffa448fb7fce6d344709a670e0cff432c3e187bcff7fdc4f4e9abe1095c46b01d88b6044bb950e92859010d9a0e3b2d1f27a096eacaa24263a2a0523d6e0da1fba8af768196f7a51f92fdf152bef062dd1f8327cee1d344c200c2115ac6ec1dd8514cef9e36d0ce8c32e58783c4fcba901aa70c2b42966488002ff171d36414a144bf46775183a8815de9ee3e81f31b -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = c3978bd050d46da4a79227d8270a2202953482875930fb1aeae4e67f87e79495289de293b4a40d92746fc84cc8318c2318fd30650e2bb9ce02fd734eb683410d44bb31ad54fd53cf9296ccd860b426f5c782ea5cb49371d56184f77911ddf1ba0039a0a49aa7e763eb4f5a04575997808b0ad9f6b330ca38edc19989febf4da5 -Sig = 9aed20a8bdaf26f1f119020d8f3ea6ce915138d4c87dce025e7f4e49536c8ec079edc6caf0d603bf42bd6a454a6d52d0d99fd0f59ffb3b22e9e67b3d0bb2d275d9aedc6da96a72cbff35c43e7f39a996fa8a6d338a0725f785254fe91a20834ba557fedfe7152b9956feddfd941741eff9177c2fbb55e200bbe42162b32a940cc300ab375557dffd48dfa539f50edd52df158d9072d14982e96303bc612c2c2506dbca3a939d626d2e7fb444c6ad7d8d9f3bba8210b2ac2f696783c349fc5280c105402a4b3d86bef5026c3dd999e3b22380f9dcce40e3a9cc9f1d7bc38ef3dd7e9413bb579800c0e6c3e9ab912da8fec1a4ab21398e9680ba0d04f3b4c8d53c02f05c7ae49b70a5611cf82e38de84aa8c2426f0b63ea01b289f201d3af40dad5d6e5bccc75b9959e5c9758e79105af7a9afb12aee577cb3991879db0fd8662c5bc49022752498a301d95f4b1d08c01ebc313f89c00b1ec2735a07983fd528e6388245036f0ed4a2dbb65dd33ab7f124c014ec1679f1c2f11edffb93fa2d1d73 -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = 0c119502c2a01920a090e43357e7b28e33c7ee858b4330e05c71048931c0ed88468ca931ecf0b79c2fdc1756b7675156ec66b8335e3df09463f5aee7028fbf560f984cf698fe5c4280229ac96a2e5923d8a9d5299449bb665008ecc889797e9bb15d04b88c7210fadb8bf6f238e5d2dc41b9ccd1f80e9a3e6ad147948f273341 -Sig = 8abf2a30774e6e7338eca09cccaca3684399940492fb94b23b5ad62ce3e11d2dbef8966ba5269979eb9653baad719516d3e8399079a2f670275a2ed42c820a9a31fcd703a76637e0d713f32d792b9ae36d7288f60c2d1ae52683bb15941b1cd890d2cd64998b772585e76032a1702e0652cbf259a1ceae695d40cf2f4f6d81341c8bc9082cb96c752c355dfbe296dd21d69846fa37613e73817b2a07046658c9e3fc6d091e17591bb1a4fb6e2ac00a3194c1488e16a9d2903786db86ae90e96acb4de9901aaf1b0651fb76a58dcb3db473efbfb831ef8e30f89967ddd3a6c2f18979a0450657cdaeef6e59377c6db1ec46065f614024a69c518a559942594a46266e0d3ca1334296b968a23a4b11c63a97e29eb16b24c02d545d5b427e6aa585333318e63a204524e0e42ac1edb70d3456780dbead31f785f0b2a77ffeb0d37384cb5f65b4e36ca241f3b2b059105faaa3222d6c135ea5a36651aea396d22fc4ea1b404d7e834b6df1fb838bb5ba0d784a96e2ae2843db3eeea496c7ad2b4241 -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = ddbd8468bdb036f4799f428bc8b4374ed9b7cde541337ac439d441ac0614cb75b816b80c17d237b8db73d4a11bfd929208333afedbb8f2410c741129c53932b596a7881c6a4d7111ba104d4600d1902f6f4a1608e139b71911c11c390a0dd091df369aa29d670b8a7e3f53825f7659ac74c40a0c3bfef0d3ae8307e4bdd6cd91 -Sig = 4e377e2459815d5b33915fa63cd477b5be7c6b7f7814d1350034ce710be67ed69139db622ef60ec6b7638e94b202368bac631e057702b0e6487b324a6b98ed7e03d1f3f20a9814b00e217a4648e4bbc449a2af405ca4b59f8438ddfd75d34d1064e58bfb325c55bd54ea6cdf7712ba807c3e4c665d620cd59513d7bc0855247eb670ecc292509661812702703275d9b2f87ef279d7700e69d995db98144a14c81774a4cd890ec03d13f858f3769e5048ed55caa81201e8785d3771ce6da51175d017d211fa703794416f469b1129d731abde744da5b2facd7a9b093d6c9743509b0103bab9c81c6e5f38bc9718e3e4faa86475d13725a829ac61df8d15f0b27cb40d0eba0b246b9c360b569b81b3abf380eec27492316bc292e5150ee0607219a2bd80ba984c7e3f1989bc51e4c5da3ae5070676e0c150d037a86a0f91bfc07cde64c19f9c7a7af44d6929970041448d3b17c249d5e0b5862e9a25209e8f97d7a0f030181504fead2266c873fd235983df3d0657b92096e2b490df33ca115733 -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = f996f3adc2aba505ad4ae52bc5a43371a33d0f28e1950b66d208240670f352ef96185e9a7044f4ce2f2ff9ae01a31ef640e0b682e940c5105117594613dd1df74d8f2ba20c52223b045a782e850a12a2aa5c12fad484f1a256d0cd0872d304e885c201cd7e1e56d594930bb4392136fb4979cc9b88aab7a44bfc2953751c2f4c -Sig = 30b348624faa9985fcd95f9c7ead3afe6456badf8c0fedbdadb3a9003a6702973acdb4e86652367db23e0a8141880d6631834f9f171c94a8fe9c315bcb8680ecfb5a4f59b45d4e4c3c05828b7faaa8e4234aada4e766646cc510d07b42bd3883a83b5bcb92d9e7cc1ddf590a690111bfc62a51af7e55543ea5188c92453d41d3e8fdabee3e1defa9d0afdb85c8153a5019ae45563ea3080a3022668168f0c273a6db1afadcd5edbca5021c2e53f4d951c604206ae10f287f451867271d370482791cdfdcb6a4010f6b3d9b928563d168da19f1c1e570f8c158f3d490b29aa23abd1ffdf20866c34c6e63b9e8a9a02d7a1b196d055f4c53ce82b400e4ab9e1b9d70d0049d6d57cf0a4949cfc68d633882882dcfdfc50cf449df10acf20305c2aa43bda10fd8a10b4ecaa23100aa47e92936dce1bfb8d6595235bbfe2c8585cb1647b2beacb1e1d4b6cef758811a68330fa9c3a82573c08fa2cda5a03f3425554e45d98c1645c5bd27d12e6c20b2c462a746e882a3421a7b1b1e25b4c36c8b16a1 -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = 6ace052d7e99cd973bb5c9f6679b1c305e07208965fe58c63b10a692f1dbbe22fcd0db15893ab19e107ba2e42c9934a9aafac32adf6c73473f6969e42c983b8f0c96a4639ef77d2c8e88e8cc47d7cfdd08f68d973a7beaf401cb4d1311992ddac3a9c9e067da198adc6304745f5dd312a182e6971c34a515a6c1bae647e57e4c -Sig = 5f0e74f454754a3074faafc605f3c9af47604a8983650a9b6211fb191d9afa5315df4db4501fd4f04c741d764656d4a5d006388ad8fdb219ec6b756908e23b30cb639ffa7bbf2874713bfd5a1062c19d04e0e4a74b14446a7fdf5cb812e9ac7b6012d9ae991c47656d2aded24074bb8a38b1a88b1c2b131e5b09c93757fdb2d6b69aa8265a435fba00aeb36a1f629bc34b876089d28a948dd6ab4c899430da60a26f6c13603fc889c7b2936ca3c5156bd7fa6e34eac9e04800833ef0cb9b6eef788c0ef0021a4536fb8371fa3e2c8bb8befac16e8092d69c571c1e15fd255ec0a07acf9ae9953831efd3dcbef44e0fccebb1af959d71f50130e8acb4fa2319261fba12f2715def82bfafbf40e345ec5dcdab5c1bf5f66b1d0e9f7a9c62c9375746e1ae0c8f14a489184383e81dce2070ad4b525df76b446b1f22921d424d9ba3ce21577501df6280fdc69f0239ae1127b69950759d5f0b693f54e87e0763623bf5d3ff69430081b9c9e2445a05e115675e090bcab2aa1d75ceee2ad619ec8b80 -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = 0e49740fdcca6bfce294c11f45407805b3da412b01ef3fb513e70e62fd9504c0670db69c36b6bebd69a0bcd240179ba8a47816a0c3437a61fb72adcaf9096f2a22efe0b431fc422d225301e850f2f0f4da87d6944a8529ef79781909ad96d1f20596f93e17c57fb4d756974bbbf900521cb089eee0ded5c956a15b096162b07f -Sig = 7bbb3ddd17a42be7cc4e7eaf456509a4ba58d40c49a3d99573b733e1942f9fca20ba8b910708d6e750367e847302fc603b8063c19af883e7507fb0d9cc2be37479a37cca25b8c7c46f6bf661dc6a3232f88b483f1b8f41b46d49ba3f1795d68eaad4a2556fb5d7873bbb6501ecf06ac558235ed13990b0e16f67965b09366bcb362cfc6fb978f4f68d8146dc8b819804df424e8ca5b63cf1fcf97bbf300d0b998860798a63424383fcd81d37773d59bb13b4fa5d468cd128bbab18a8ce5173be5d9d54d3177f0245788409973df4a9016b944baefbf3bf1146a9393d22e35ec2be0ae6f4c31dc4981f40fc1baf382600699eafcea92cbe24e26ee846fa23bc193b6e721401b7ac3f5f4ebeb633979f8ef35f4ab1117a869d5b9dbb7482f0d5a59e4163548d2512ae067205b57d030c483f720d2c44350428f5268943fc5f6ea1c88e2ec13ab3dc1456e96a3b8e7c121af4d6a5fe4ee55e99fbc3592a487c194bc2f2bf6e79fb79c2876cf3365e075beeacc7db4db7ee69e7f1fe12a327e6cb0f -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = 0e675dac9aec910106a6ab219b4cceb52ded2549e899c9a24d5ee55177761888a3be1a2def6aa32d62f788132d6227d9309806fdc02db7d8a850ff2c6dff37fcd777f1a0acefdf18bf85f1a12979be86d799253945fc34a288f348b7923d764db27a2a2d5ae20e6b25372ef318f8596529d8ca23fd6f08a8f62e0a1b6d989f23 -Sig = 8052d95f12ce0e6e53a5a356a0eb353bdcc1a66514d6cfb3a3d96155310bdda0a0d1795f97643f3a4496634f2dd9b95a2138ee390e1e74be3134f3f47a919ee7b59f8ecd272ab88c82cbce7c217e5f92d057a5b00fbf0575cdaecd7dc285a4218c8a955216598f0742671e018e8e4e76839a575f50b2102a8b77d1b84f6dce98d78e5758e0a6f92bf35d6a2f18ad400925d7880f9efc774a8c7ebf64885cd2f6f629b54a7c12ec91d39b3c2518241fdc322d9b235a8ea44f77e82f3dc4f728f620c07d1e7ff4094f29c674ab0f0802efa1c9e6481ebb84e0bf13ef468d8cca114570b9edcddf98ac4a834fe7a0d5c6fae8a60a48399f3c8af42ff4026e42a81aac36114ffc053f3f729b7cf9a97a56848ebea0115aa8298341aa226963ebdf57ab2d8e4b9000dd051a6c5d69f60e1dc1b33f2094fdbf8e5b627bc0764db9522cbbc081dbf38c21b13f980813bd2b00c757ebb8c0b21213152e694039f306f7342857651f722bdda01212a8552799bda6ef07c5207dc744ef7969afd5af2e6f12 -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = f6a7a6e52659125fbbc8727417283b9a64441f87121e27f386d5019f10cc9b961e09f1b3b0db23630cc0caacb3858c6f93afeeea7e1a6a80dbe0c2bd9c7c939570302dec39a4a25cc0cf1d32a71a75b9a0c302bcdd80b046c86651acf30838cd52e30399a8fab8d03fbd140cdc2f1f02f2480405169820ccb32e5974ffb8b1c8 -Sig = 84603acbfe1f2f769f1a62b0f287f306940b225476714a4b6827c02d7bd052f303f30a5fa6da83e60615305669ca9ec177c5b32b1415eebef78620296ebad6dbbd520839d3aacc9781ac8602ddce0736dcfa7290b45f155b8e924d0afdf7dfc8d199bf09509d0176a68b145756eef53de456e17078859849a352a5bb654239d8ebaf8800ca8263d34a868d52bf8f22644dd9f3c05bd891cd92f263530c5896023c6b213ddb64ede1770ff1686c34036e281e911d9dc960354fd844cb7b22dc0cd81a96203ba818401ccc225f857e59a5cb7ba6dfc7f5135ea32781e63daa14fbda1bacc18ebc50824d4028b8fdecda49e810bae5acc8adc0dca2e236fc832a97330a1214fa0aed15cd10c049efb65ce855c060f05befb317b8065843c4eb5a0371fc6f209f6ffb948c881f2f2091caf0f59f60b72c5f67271bae96b913fd21fa1dfa975d5ecd62b0d50873b686d29c880d36edcad33ec3e2216c9cfcfb4f984c23fde815e280a802428608bed3739af9200de1f85edee2834c04942c068aacd2 -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = bb294b95d913005b110987cde45887484ae6df794873dfc5c41fb7e8992c2fdce70699fcac8004699961b3ad1e1fce9ec8ea5685ccec5e80e4d0792559816f68613434bfaca81a843aac459a6fe35f5369c48e9191e4a32c70789594c5152db8d4bb02260012a8739cf325ddff2aa42fd67b6ee5bfe31591131ff27d0273d292 -Sig = 32637c60798b450bff100bff12838357deff281d5b31e4f4c2cfc96eb779ce6d31b1ce8bd7aa7fa88ddc4279c8c3280604b018ccf452004a1488ed4750181c5025636511ac6724fe51761c27d7cf9a0c8782ea2231268853c4b1f7acb0005e5687c8f3df16c962f02ce56b23d387a2baadc8bec94229c3557526e61707a8b59293a976e32c7fa133285088f3ce3e677788aaa947e7622c757e844b117592be99fe45376f8b3013e8772ec92c5bb0b9fa301b95544599690ad93668d83b2daa7df05c66214e275014780a912d8b1932d7a655058e743f50b074b1d9691ca23a2f95f6affbd516d64ccb2aa43c236eb95d36d272545e3beb8ff5aacd95b30f7f1d6418af042cd9a0cf0189846262322a18875ae4c3e68e4e8ffaa0276cdd99a0047c86c0f71d2deefd50642d29c195e6d14fb46fbac33a508c1f03a232de08aae09faf1da8ed2ba2ae84bcca88b78dccbde9afde08a3beb322dc79356b29c84841698914b050beb75a7b2f6701aa8101a5a4955ee27bafe81b21d03b43e3c77398 -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = f946c6bd5e1d6b89092f3c487c0568fa07c356fae9b8e831b8320289039746a435b122cfbc4a0d316bf90d481d3b7d979cc50d98c1190af8dc58e0035557dd5e94f437f41fab513202643a77748f76c6b77302bf40c392cd18731da082c99bdedeb70e15cd68bff59619cabcc92adcf122753c55afde0817352bc247d1170b8d -Sig = 50706ba49d9a316688a3ee80a0bd986757d43ec83285af9e78196bd52c900d40b280fa0de54e35ace7d6660012f1a66204092f0e634b97e0e51665b4075e36f1422266c7cad7b2d9981b913df3fa3e6a5a1cadfc6378a8540e0faa26f1cc6fb2fb492a80d0a6945bce5bbc23ddb3b10701f0249b27407a6700802e8842ef3cc761c4823acb5d1453508dcdbb979e7bd8d00128e60a9b3789167c91417d93f0e9fbb00c9af1498e09eb6485eb94cea4883f6a256eab2caa826de4fdac01baca3a216e3d204a3d837ffd4d0be2b2cef711909054c4da1d5b93a8f98451c7002ae84a5e7080d98671c50e3c91c4087d0477b104f916010e742f2d207fb40d122d8f211af6d7c5eca49542d9acb0f166e36abc37155070c12e9f28b907d67a2ca70bfce554e1c44c91520e98fc9ad0c0ee477f750516476a94168066ce47000030a99c23e2c38755de946d5edf0d6aa94212f992315b248c1f82723b29c42216c78cdcb668f11278261cee9252c8fd0ed37d0a8580ca9b9fde7505615943712da19a -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = 9a337d4c0bb9a005b47f4765d696d19dec58bc8482f2173a4a203a0b6d38b4961f6a852e76468e807c7e457683eead5cb8d98642fb76c0a1eeab36414c1899597d57aaf96782ada586f61a423f57953771d520cc4ead90d569f23d950f8dfedddb8355748576e6bbfb6f2e91b3da71753fd2f4ea229f6d20e27db8d05e9fcb68 -Sig = cff7aa7f875642fb9343e07ef5e7303bbf5f069b44c19fbf83e59d422e25267ef9307414b6b1ef61711ed0013276d1a2ad98390474027a0a703bfe8a6e87706059d89c060980c9c9e60dc7e1fb9f777a41785ab4d2b663ba0e3c1921545c479c2a383a50da8e489cb22b71101d0ec148ac70928732a772195a140d080152762a9c40803a39fa2a6978c2a75ac4d8bd1bccaa1f4204ba65edddf32fedf2d9d0a3aed9b06c47e717733c577812d723dba74a852b2905235c812dc5f1d0df0f0de73dfb86221c6ffdd1eda119bbe98d148add36a4fe50489b06aaeefcb5c2066d90fa79738706cd18e474d69609ff1210c77de7cd23ba2a775a4329cb271a826d602c401a71439019cec10cd9f184c4d04584211827b19eadac3258d8a0f2631613f051aae0c613050cb24442f15ed4fe0dbd290e42629141bd2cd56d20584a1d10e1f2c2a9ec731433d5bcd1d318bed5243b4b7d0f9a7982061c55dfaa86b2c01845c021fdd2a978d42034212f43b3351b6adeb03bdd6caf7de059502f16d77348 -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = 32fd45e73f6f6949f20cab78c0cc31d814baea6389546a365d35f54f23f1d995b74101187760c89bb0b40b5057b182e2fafb50b8f5cad879e993d3cb6ae59f61f891da34310d3010441a7153a9a5e7f210ebe6bc97e1a4e33fd34bb8a14b4db6dd34f8c2d43f4ab19786060b1e70070e3ed4d5f6d561767c483d879d2fec8b9c -Sig = c389613717ec7476ecda2144d0e8c8f9d66fb469c167c4209ec0bdeebfb471665d33dad47b8f3c319a76fe8a8a9f662b6c690b74903d17f61e2314e5ea8d26670ee4db4dad295b277ca08ade880de2e42d12b92952764c1dc808c266dbbedb670158eef36e896f55a203fb99556ded0597410ba37486b1d841f3d6d5c0b39f2f49f0c5794824fba94a8ec7c2b2c91eadd5c8cbe44895fe3be3bc1727d6fc0e5364f53578639d3b3af696b750a07853694ffe145a28c03620c78dd7377d094d92c3e09546883d4703e62a98ddf81fd01fcdf3c4b215224fe2b1b4992abf31f20d12afa868202390de334a846b2d58b253ea8ab3c5265d84773a659e8bac7af44123d9ea15062e65d4d419cf2d97077d0624f8e5c36f2c7b35ccf95435d5c36886ff9105a6c1ea225e15ea8cbc7b6bf6856151cd76fbb75b5b98f0e3db516a8e218189fcb1cd5de3cafeaa33ef135c5d8b8aa5f881afaacaf4c08bd7281255bc2a33b76d4a36e0b170c45588239e5b38c679b08cf802af73b6d79b3935949461e7 -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = ab66cc487ec951f2119d6e0fa17a6d8feb7d07149bec7db20718e4f31d88c01f9a53d5ba7ece3a4dbc67af6a35d130eae762cb7962b9ae557ca38452464002223f61bcd3c7353e99d62558ceedfcb9374d4bbf89680c8e2b9585603e076f1cdb0058299b4246845dc79d1043b1422efe84018e4c932c45beb8851fbf485e36d2 -Sig = b51331552b08be35a1698aa6203d84dbfff9001ed5dd776f2be4ddfc07dd4620e9654e82a33465bd20f11863c0ed02a0aea27a44d414c328a938bf877e15838ab99d670d01414262e8865dc1d9fc30fd0812699fa690c34f302f637ec802cd40ac8591e976c0b8bccb1b0137af64a2870210e8fa3dc431fe0956b8addff1e4b18cf07e078aa93af81bb3023c9e594e66595fd92b10226ea126005f4724427352c38e9e85fc2e0723f80af1f61599550b5ef54c5b38ca405738017b89cb9468d9741cd6bdf7112162251ba1d083cc370a4a8261c39b6b94bf21a53b7564531ae9ebc4ccea7ebb8bd314b2e13b58ed1018ae5b415e0f9e3e19a5ead3a44603f90674a190febde25f8ad8778aeead4d0f64fbae37166a54e3a763e35559bf8c3f173f19ff7bab98f3ef803dd56c07628399aff87485ee73dbc3db34ecc7bff3a53226cf87bc81d256e80c09520c8f38e9bcda095e3635128e1bedd9970600546a751eb11dab42e289d6fdfea04bd58d4571a79d24bce4508c54e1ec4cf75b985fd3 -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = fef7fe89b9a59902a70a1d9caad09ced8bee4145edcbe3ef7fa6dab37635129f3b8c5e0860410ecbd9cec3d8693682f25aec08b071f05dc8213bac8cff5d52b576653560bc01575604e6ab90f67227fb5c901a781eddc027700913e54a7fe51318482c9ab42c9d2b911b7ccc39ccb290f9a420a5dad93394d4d7b8c53fe3f242 -Sig = 45068ca6d82f2c123925cde11971215d8fa4a4df6848bb7654868700978764854638921bea5869280dc6ad9581ab43ff7012969948a5677fa0a66136a316a4bfecb89adf4131b5bedf3d4693b780d133af9bf9c133305be78374afda3ba3854203324481a9d10b9ca9b92dc7d74df531872ddfc76caa82de020e2c415643cbcc4280e6d2f4371fda7d9249314a8f437648991a9b03d71b5839ad38a1555ad34526994ba56870b6ea18011295f2ca2b0713b2e92ad77680c0dc5bed8d3b9b31ac14df769949c4a43ea67f6deeb3dc9ed589ea4e8a2cf6695df46f946f1467b28e875477ae4e645080fafda6dd551d2c02fd6b2b194fc0bdb050e06d4c784105f5a33b53e73098055963071efc1bf397fd325f3a6f4e10d76f0411a001e62ec73729018316f56310f893a59363d1f6fe5c17444b6c728a4933b75212fdfa258e4018b7763951ab4e5096411df9e5bc16df3896e46c973d32ac9276a4e2b5b80e3d8d798dc0470b45096b4d738669ce052ed818e560af1e92c915187d66cc308b70 -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = 82b3840eeb95c9c57724c70f112b6c2dc617c31785acd0c823f8bcdda285325eb3d308dc790522bc90db93d24ee0063249e55d4219ad97145feaf7f30668623cc8890a70f4f149866f82cf86f98b0053b23c98c8dd5e9107e341460e9bf5d88cc8bcd1f2e4c007cc1c02c4529b93233a0b06bdd15925854ab9e3f156eb925bf5 -Sig = 0593b9fd4421452376d27bc7a280101cfd6e88a6727d7d77cf65ceb723ecd257f32fe10277e85798e0da75917736da1a3bfc22adc7658fbb84da6ebea0b07d1cc405732fb040b585c1b63c8034069bffb8220656f1ac54ce693720d6fb1b5aec67b03c887c8077da148d10f48af7c028f992b18f13c0e57530c086d775483da5f66f3a6a19187868340ac63c6212bcbd6cbb7beda8620afd9b66de47473ef24d1b6a36f4ece9add49514fdf1d84c7a785b7f0e00f382235899790f472d13f48558a4314742f376808dec96edd2e229e943f7b983bea5ec6edfa5e9bb37f588e55ef62ebc9214beaf9da502434e1088df272c6c77c1e1d897c47beab77e3bbe317f8d43d21fd7e94337c7e263e2867bf580a2a8ecb9e36ab7d3e1d5cf9a23230953d59df0d7e23558fb612b7918abba31b164ce178818a1a9e6b6687f4de685d70e16bef6e192faedfe0b2b95477d37b0a3a2d002f33ef4321cb905040ce06fda1c98a008767fbc781a1eaf3375dab8664b590336b99e157b8687a6602fef6a3b -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = e153cca4431ed9713f4744ba054f5f191cb37b280108ae3a114ad349a872d1308b46211a83758a3b4be32fbeac42ccfee7e23df853ca400147077bb43a44c12f299b917f3aabdf589eeb1709bb3d60b08bc71eaa3ffeba4e2903a5dbd8339aae85fa24b9aee76130000605857a6aa197d00926270dcda58b7de758a6ca67e617 -Sig = a835cd4146bef465642d494936268a311a5490d2c9f9166c6ce98216a9a23a643597300a0050e6445abd5a9bfc7a2d9b70726c824c383bf5acaddddc34d434a31e5314d25fb58e258f518866c136e52855c16fe64ff8f1c4d66c4e9e39b8cb1196d80944d0746c0a3e1769cd4167df72ab5e4c9dbae9cb35f4828e12099f9b36a5a70c48d4aec9872d7b19e1291b33cbdf08a2263d500c0a83b5237ef6ce92de344b3b41d0d07404fcd5467b046b52b8f85fc6b5d7afc437f1ee9e78390ca9bb6cec618885ece29758f2fd6f4e5f4f896935de5f67cc04055a4c4c0fba5def8d2caa179331a85501ed25822ae79da9bc815cc39c6a979211083e8683136c942e1e17e9eb8f84aacf091aa1e51665fae446bc48c304af65391f279afb98b92e04c2b73d9d94e991198fe7781f0f9696fcba2c03485f76e6de30b9535cf3903db2f3afa851a47bcde72d4ed2e8fabf9bb7d4696cb4ab8c289b0c21e1f979ebc532e280cd9010df4ee72f84bb9e82752828f167030c0fe348ebc31ec17b8f07d94b -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = 9c63899dfc7bdc0db384727244caf71ecfb9b8792b9f57e936b3c2f5695565a9b0979f3c78fd73f00981813a16da342392fe3ceec6e63ffba191cbeb4f4b90050d2fccd83beb0622b2c3fff159d9e608f3abcb843bdd56c03339b975b9f4e3265b32f6bb6ccdfc6c5752d6e0344d749699c74c85b30c04ff95b272dbcfd6c7d3 -Sig = 4d38a297302ad0770d9729ce5b7212eef287ce0250f403e32b4acc3617dc0d2edcccc2d580ddbdbca5722b70704058a3b807f592e400bd563fcaa8b066a614b4906f1433968ed2f520a2f6b034d4b2d6890a241afd1adb8639a6cad9dbfd2e278dfebf79740d75f295759d29130b19ab19983dd68f779de41ffefd4e82b5e62f72f90efb73437f08a2503dd9819dae20ba9706c199de9cf884433eeb756286a85eae14bf9f6dbeb705461d91822282f18efbb10589a578f2c9c345b079a7e9dd07fd4b34051b27119729906c77dfb7d2f8fa6bdd5faa1e132bfba9d391e66395e67f01353fa275eace8b53aa91cb6fb693e19191d42a4c1a85a0c504b1c85f49a4d60936dee4646aca62a94aa4bc7828c1ffafde8be656317d506abec179cc90191d12356ff50644d3e01aa5bcfdd71d3c828dc3539dc0cf3fe8b9b91e0c2524f6a3710379c90affd0d0a50d74387f9ca88b46463ef1bdba58cc9a36e5c2c435a20d968350d15d941c3212cdce815592b310d259860de1dc1a3d70ac22302a51 -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = 04846c2e676ac73160bf4e45652bdc6cc4d4c9284577b4320ab77f6ebbb59a1fe0e085588e0f90b346cde6441af3c9d0117d1f3bcd962e406bf5a465ab6cda2d51be598fcbb29ea713651aacd7e47d22d8fa3450904730f51792ea374761a4dc1fc6f1bc657b77768f31f463e4267fc8dff61150d4b343b9d53759cdd7b98094 -Sig = 103bee57e25be8c3a2f774e739b47f93435e414932c0494b6b6aa2475bf7c9305c73747e0adf82c2032007b3f75a69c93112617a62566c5a2deaa25fb95209da49fe9c161cb2ffa40fd9d77f1ff660c8b6cd3b54e3e79a759c57c5719802c9311db704ba3c67b4a3113754a41b8da59c645be3909e7db7e7cf7294dab44f74240f81a281eecd6ef31c7cf18b1a19c7d02a312b91d6edfaa954462d34740af5ab708db5a10b00c542be82fa2b2026b09ef38a4001457e27a6023770e4b4d5003267c85c9eea1d5f8d770bd40b554d5b4daf146dccabac3ea8a13a05c3bddfc971c5158fac027ca19b7232621e9d2e37b6a655af545e44a298be78cd475c22a48bff7c3494a5f8a6abdf1a46f9de082e374fd598867d61e4d51daed84152e43cc6a2affae205edc52613480d411aba84fcc9b69d1c28f16f76836901a7c5b3eb2f2c940d0a3fad38a8efab968a0c85eb22e11d3d0861136ced5f06734fdf8d4f151d23861b1cba9b9c580d3350c76d4dc808461d5f872ec548b2b427dff74b1d1a -Result = Pass - -Digest = SHA512 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = db6c9d4badb1d9b74d68346448b4d5340631783b5a35ac2458563ed0672cf54197587fb734c4ac189b2dda954cdfb18b41c010a77e90464eea6f863c5da0956bfa8cc636bf0a28be5addfe8d3e7e6f79f71d7fcbbae23ea141783f91d6cc4c8fad125811760ab57133818892471a79c6d04eafef37b2fbe506785318f9398377 -Sig = d480d5a979ad1a0c4ca329ebd88a4aa6948a8cf66a3c0bfee2254409c53054d6fff59f72a46f02c668146a144f8f2ba7c4e6b4de31400eba00ae3ee87589dcb6ea139e70f7704f691bc37d722f62bb3b2cd303a34d92fde4deb54a64dd39184382d59ccaf0c07a7ea4107d0808260ed8d421cb8b1407cdf9e915159282b9f7bffdbf40d877885da7399edebd300a7e77a908f756659a1824f95c8a812aa540ebaa64ab54a233723db55caa8b4466ea9ae6614ad1bb869e9d8e0d032f3901671e94c0b673be6537cd54278ed3da2e1edbc04ee3a9e8070d73ba0ffb93e60f30b87ff3862e9c53908f2c8e99915668c1f46635e05bf7163051ff9d92bc71a626553c69dfdd06a49f7ff1ed51e918f3ed801dae62ca276d7063d72a6ebc136ba06cfedf5aa23277e81008c63b2e0083d0fd6814f6d4b4b40a42e8c0206f3c356a5ec709b7c8a4b74b7b48d53c9d8694d27359c2c7701938d2f0161721a57313bb1a2e11da215872498182493d8517043b4c03f93446aac93830276542026ce83055 -Result = Pass - -Digest = SHA512 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = d5dd3b6ce9772d9a97fe21648497783bac5bb5254aad82b6f7cbf43b15a40f386eea8d151967db149e9465865968133f246e1347301adad2345d6572ca77c58c150dda09a87b5f4da36b266d1fa7a59ccd2bb2e7d97f8b2315431923530b762e126eacaf5e5ac02ff1aaef819efb373cf0bb196f0e829e8fe1a698b4790a2a05 -Sig = bf9e8b4f2ae513f73d788958003733dbe20957b147b17c3f4fd6d024e8e83f07b65d9f3dbc3b1fe84da021ceabfccd8c57a014fbe5a2bce3e4051b7d03e09fc0350b6a21fad214ae7a073277c77a40dc44a5aeea5194a756b69c93977b69ee9294360eaa73a574548fa6a974a7cd5a6adcf09e80631156af85a8e5c5317e189eead47e2ead65c381396b5cacde260e937284a8e90eff2cbcb9dee22925f2f7256f74c67cf3ffc7b8ce657e8d135f0f376d9d936a79792c981614d98e3f7d662a4fd46dcda96916b32f366ed27dab188f184b984df0b559710d8ff2040be462f91943501bda4840fdd5c8ec15d189064def756e545db319e007c433f0468a6723357ba47d156ab7652b06ae2b18874f0771c626466dbd6423e6cbc518b5e4ae7b8f15e0f2d0471a9516dfa9591697f742862324d8d103fb631d6c2073d406b65cdee7bda543e2e9ebff9906985d1cb365172ea623ed7aa4c7a322f0984680e34e99bc6231b02e3d14581608bc55bca7fbe22d7f03e904da4552e009e5607f0418 -Result = Pass - -Digest = SHA512 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = 591652b6eb1b52c9bebd583256c2228680110b878917dea5ad69e8c5d2ab514277b0ac31e7e2cceab2e5d9c45d77a41f599b38a832f6b2d8097952be4440d1ff84baf51bd70b64f130aeb686145fcd02953869fb841af7f6e34eaa2b996ccd89697c58fa255cc1e81f621400e14146361e31c709e84a56082231199539f7ede9 -Sig = 1de79d7216dde125deb77c34d90ab321a4de5fb11c296656ad9bf9a24653591117ace415e18eadce92823f31afe56fc8e29494e37cf2ba85abc3bac66e019584799aee234ad5559e21c7fd4ffd24d82649f679b4c05d8c15d3d4574a2e76b1f3ee9f8dec0af60b0ced1be8a19c2fa71bcbc1fb190899ec8556958e0782ace7196b36658656cf364d3773de86260fd8987604ef35eae8f38ec2cb0da864cca719219c2ad71c08506c412ec77995f37439c856977b71dfb9647990ef70faf43273ae60839cd0679ec9aa42bf914e421b797cba218a400ff9dbaa206cb9c2b0596c709a322b73cb82721d79f9db24211bf075a1cef74e8f6d2ba07fe0dc8a60f48af511ad469dcd06e07a4ce68072139c46d8be5e721253c3b18b3c94485ce55c0e7c1cbc39b77bc6bb7e5e9f42b1539e442da857658c9e771ccb86be7397647efbc0ccb2c3ad31ac4e32bf248cc0ced3a4f094526b25631cb50247096129b08a9c2cdfb775978b0feee265a6c41991c1dc4452615b78c906c7ed1bd207969d98d0 -Result = Pass - -Digest = SHA512 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = 8dffaa9151271ad22622f228c892e1d9748b3c394397f2cbb6febeaa9244a027eef28db48a9a660162152764830f617e1ec6ea1cdb0ed25b6f999a107175a16669d6dfc92b16d50363fac4a570371ea976343a55ae124b6301ea935ed655d44f28320899dba35122505933b3371201a2a45f95ae65ab442a9479125e68ed212a -Sig = b329aef83a56ddc57cd9a0e15eb0b0b7aea7d78d5e8ca3982bd31cc825a0cd1c444d9f7bea9e7a27f3bbb3761060ff95fee1a3e864d2108fc40b64786a96a6d62d201217e03a8ba2c07ee94c267149d1e72cc5779b737e8547acd6aa4bba3ff38bf9687e9e82f511b597ad7ec1d795c36a98bf83a90fc86b0cad41953360738921936a458674b2e9a7012ac3029fdb0a9d12318202d2544a0d976ee536e03b7e8d894b3b9c762dab0110849cc1eaad747e3d88d7dcf49f824df027e645c0b9294e655d9fc9e1ef95eb53aaff5775c349486d4b5d67dba29b6217f8b9976612b57e16fc1f99983f2af04579938606879b7c7253e870714b4f0f24e26dc8c7a6fceffb5f98e3b2fb5db949d2f98cd1ae1aa552696b48c39f678e154351cc756d3e9a97f79279853ebd0db9ae6859fb2d5721385d06f5565a3a8ff0992d517acda1af69a92854a1b32a79cb9e442a90b055bb2ec3af8d9926a0d857e3cb1e7e4a7300d1accb9492ec7832af453529ff0f4a6ad3259757f707f713aaa5df231f7487 -Result = Pass - -Digest = SHA512 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = 71d4163e708c121e931bb9692b217dddd35c7346f61cfc9591f7a4313abd4a9262af820bd7eb37e78c2b95b89daf25ec8e783aa1d4b78dbb96852433b4d478b109a6d65eed7d06f3fe122b172149eae7c365ced66578ebb7571ec218c36b65d2ee22dcdebb28c66a7138432cbdd712f7fb8bf78cb14860b25c2b4789706b5a1b -Sig = 2522ee3bda30c0434e54b199da8c9733964fd402b707f5b330f4f754a0502c7a713c7814f0e851a4a4db72690db96ea8b8813bd8629a948bb30c1b8272a816b30a755fc6fb1754167c3eb1f194395907a56cf5a73b4154383a05b78b731fedd9077f3c2267a5cf926697871fe0a4bed9c219552dd1c87aff50613094bcaa2dec42a35380a6bac673da2594f824a8f32f21d7593a3e49c78ee280193a478621d3b095c16dce72935314d4a2323eebe7855ca4738a19b5a31a5f95ab91fbe1289c02fea7a65b91327b7b9790556289e1b988e45d50eb8cea1581de5d5dfd21001c73b43921d8b21b9644b0f2b96ee6b09d73709c33338143d6a2fec559a436c5ec865d3acca5fee654f1325ae57255dfd42188c84dcb1f7c1e86028a74e31d736078741ee97c39a56e4de00fc12b8051835bbd0d8fcae737322099adc1017107022dd15c114da57e78b95681ba9945615b59da90f5a2a99a252eb42b2006eedd6e78476c2905473ee6b4f23c1c5cf0b80451c5426ea009141cb3fcb0df2ded92be -Result = Pass - -Digest = SHA512 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = d00e1529228c79a20a1c3668ffa4a54140bb170bc5c669fd7560d9309900175e91d5a0e9c5f5471fdfb714bc385d52b08ff7e4230184d8b735593f0dd8c73b8a49f8595b951a21b6a5bfec63b684f67c0af1b471dda1684e9ba3f241501fe957603dea86784230f0c4fd65666361b82b187330fb4267404c0e059bd4eb52494b -Sig = 1835dd97e5093a33ce1e62d683863f6b3507f358a62fc879b524350fbc7330681cb0c682eef4330419caf8543bd9269b6d91d8e107ec38b6e9c6eaabf906457205d52a900e05579aa11fc581375264e69a925798e5a348e5a16f1567d5d0e40853380b34deac93ad7377aae8a27b090d0d3a92bf7a824d926e2e35a0c3bd0e990b591120d74dd9b052a73568e3c3f29c5a77fb1c921bce9c1e7f764aa67bac119f5839a5303860edeb634814c2386c831fee6200cf55b6bfea058b795a0fcf26eb7216ae1b7587c82e5685e584170cbddc89a77e0989d4ce5c3c7fdb664aaeaadbce1f231e64798f6f9a85456b5a93a502126a80e2d21f46921cc3601f5ecdbd56998a63b865fce7eb299f76af40e91281bfc019f40e0d46811e383691e4024c94566f18024ff2b22aa7e1270233ff16e92f89c68509ea0be2d34511581d472207d1b65f7ede45133de87a5ffb9262c1ff84088ff04c0183f48467996a94d82ba7510cb0b36cf2548209a50603375cb82e678f51493345ca33f9345ffdf54be9 -Result = Pass - -Digest = SHA512 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = a35926685561f09f30925e94d74e5661892a2ddd524f751f8321163d611ea1591a08e0dffd46b208e98815a306aa8514b4db859dc1fe7bdcdf50c095554bf8b2f4cb9f884d70e55c2143bc26199c2f94b743f5528dd54689ad69eda660749f5c1bea8becaea632a4bf0c79a577edfcea7baaa6861e9d7f2dd5b4c4f6eb5f3d5f -Sig = b1a9c45a264d2c9af441a7b2d330dd788089ccef205d5d666bfe864367be9738124e9d74648ad99160bd3af81a81858babe667a5d95c980fe2f6ac34861eb2ec9b4b4e8b642ef3820f56ca388a556530d42754c47212e9b2f25238a1ef5afe29be63408cf38caa2d23a78824ae0b925975d3e983558df6d2e9b1d34a18b1d973ffaccc745e527ce76c663e903719355e45cd6d118ed0b85b70cbb8e496411353f84f8866a01fadc819ca0ff95bbe2cc68c8cf78da5581becc96247b911d185ed1fae36c4cad26208eb80883f42a08123dac68d88f2f9893cde02ef5a57661db2b3e1e9269cbb0e15c407bcf55d92e679383c90802cd0bffd469646dcb60ca01a1dead43228934018391dd81f8b7e797e527fbe1815b91bf3cd6a1f2ffbf5dd166acd5526761ca8bab5d463fb9fb820659f5cd50f8150f12f7e8d52e77773c1e6480c2cc184d411d641f71a9dedc2c5fc2ec37a2770a9383bfbf6a489cf32b56a12cf99378e39b50bdadb9f0591b2065f9d44e511c9dfb6158fddddd1bc2cece6 -Result = Pass - -Digest = SHA512 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = 1271a0ddb99a0e1e9a501ca33c131b0a1c7820a397790869090fba373703ac38ea00a9a0ddeed199d97be1801ffab45206710a61e5ed894c3319012ded0ff414386e56b548ad915d80afcc2bdb976d7c8adddca7dfa28aeb694033a5612660c644e32f85c2805651d713660a38914d70f0e41fdc4b3d162ef3acd70659eef637 -Sig = bffd010b2ec4e4a32777b77619b87622f8921dab56e102c8d824fe52b5df7a203fe71799eeafdcc0c8872dba6a374407b5639aeb5a30a904712f15097dba0f2d62e845412395cf09540abd6e10c1a2e23dbf2fe1dfd2b02af4eea47515957fa3738b06411a551f8f8dc4b85ea7f5a3a1e26ccc4498bd64af8038c1da5cbd8e80b3cbacdef1a41ec5af205566c8dd80b2eadaf97dd0aa9833ba3fd0e4b673e2f8960b04eda76161643914242b961e74deae497caf005b00515d78492ec2c2deb60a57b9dce36e68dd82007d942ae7c023e1210f0be8a3eb3f004824074b8f725eaf8ac773e60fbbb7cba9630e88b69c8bcb2d74dbdb29bfff8b22545b80bb634e4c05f73e002a928efd5a6aa45621ce1b032a2244de48f4df4358156678cbe039c9ebe4cee945a25b9038469fe00c3092936a8cff9369045f906733a9d2ab3660182069b157ca8f9b99a71fc153c68301e97a38fc3a87ae2b6f03754e6da82d0b0726e0703979c9320289feefbcddcd9d706b71b51e9a1b9dc1412e6ed4b56676 -Result = Pass - -Digest = SHA512 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = f30c783b4eaeb465767fa1b96d0af52435d85fab912b6aba10efa5b946ed01e15d427a4ecd0ff9556773791798b66956ecc75288d1e9ba2a9ea94857d3132999a225b1ffaf844670156e7a3ea9f077fe8259a098b9ee759a6ddfb7d20a7acd1bcb9f67777e74615e8859ea56281fe5c400748f02d1a263b1867a3b51748ab70f -Sig = 345e2f60f7c82c89ef7dfd7dff2bc2348bab020479330899d4410213b35e98d9bac92fd8ae806b5bce8a6c4bd8275b0facb4dd13f9d68ba67141fa5085264da6dd685a6d212170a2c9cbf2cf5930180effc250868c984bf50ff69d6069ea28f5bc1b63705d0732416fd829a5f5d6217462c22a33fd4652f7c1d198794646c08406024e8163a7ebe39cfb514c5443897b5894dd19a213e037f27e0ffbd6c5447a805a54dfdf4f65819d4e0fbee25e3dac47fb6b636e8de6190adccbcee937d0977b35b973606b0ca348758b50cdbba028b73d0ef01c56014c031c598fe8db87d2ca4644770aaa0451c376ded82ff5c6b8e7d2ed9d1c8a17c3122c128273c60fd1b0088dfbc9c927f162e43879405964cb11ef7899123feb8f88dd2734df98aa696d936a8df07000e84af90101f7006a9bd2549fdd0ad3f9de093012d32d2afaa828017ee9c607cbf5b54f223666d4b5f3e26e0dfec003961b83d83de39ff6a0e81e1883c1db4aaaf082fec5aa30a7e578553d89774c67907790c96dc4f5be4c8c -Result = Pass - -Digest = SHA512 -Key = 308206e40201000282018100dca98304b729e819b340e26cecb730aecbd8930e334c731493b180de970e6d3bc579f86c8d5d032f8cd33c4397ee7ffd019d51b0a7dbe4f52505a1a34ae35d23cfaaf594419d509f469b1369589f9c8616a7d698513bc1d423d70070d3d72b996c23abe68b22ccc39aabd16507124042c88d4da6a7451288ec87c9244be226aac02d1817682f80cc34c6eaf37ec84d247aaedebb56c3bbcaffb5cf42f61fe1b7f3fc89748e213973bf5f679d8b8b42a47ac4afd9e51e1d1214dfe1a7e1169080bd9ad91758f6c0f9b22ae40af6b41403d8f2d96db5a088daa5ef8683f86f501f7ad3f358b6337da55c6cfc003197420c1c75abdb7be1403ea4f3e64259f5c6da3325bb87d605b6e14b5350e6e1455c9d497d81046608e38795dc85aba406c9de1f4f9990d5153b98bbabbdcbd6bb18854312b2da48b411e838f26ae3109f104dfd1619f991824ec819861e5199f26bb9b3b299bfa9ec2fd691271b58a8adecbf0ff627b54336f3df7003d70e37d11ddbd930d9aba7e88ed401acb44092fd53d5020400eaf05d028201802d6db91eb32e36e5d5127deb034d14072fe60c1cd13c8c3dd9adbc87140b5e7136f4f89e61bbee7826f45ac1d99194fbaa8c5a0bb94db31d93723b51419d9c6f6eeb5f3610b67f4b4e2ade05cc6b8990e8832cf4cd40f2df0388c9a52072e27efebae20b4ad5951f4d20dd18943e58b786d8797652b2bb759c319d2b0046dbf69c53c075d00c287b876042fafa23fe4dd705e4e423277c9000311e94ea3f7456e32fd12afe4a2bde358a65824f1055064823c893fc93be3b8c658bb441d7f0b00ac246bf043a9c0053d319f003ef5a5533f74d630d8ce93bab416a82951e05b82c6036593eca89f0ebacd7d51ed9610af43537fcd266e5e47c0d25fedad6d047a1a1ee3eb444367e3eff7c7520ca4f779f2027fe45036204168454df4918b547a4d19e938f3c6db6ca2702ad9bbda1261c64d00b578285bdcfc9851f96a4f2cd14d66b9c1f65742a1344948c9f1da8d338ed4e3deb1ebadf11f8c281944e8849823496f86111f378bdd084c99f65fb9b4ee6271b1d1be424c294d185d9fd9cdf0281c100fa9977bca043a140e06158bc710f33918c7e503f1dd495b4f91920f6214d859f900c6a211849f566bc37417ec8a68f6874ce6160b34707a7341b1c00934e6ba3e60f63c3f4faf486be9780335b4eaee54ddd2f172a91b7a57a07905be685e49921e9d1af40e91b47be5bc1c0dfe3d10ad6b3b6aae0a43f82920c553b2e4932ff630297f2161918c684528373ed0af0d24b069ac4f511d8fd0301eff0365300a1f79e44d4ed21414940103aef3411568aae6f00b7c105453495c7cc6d3a76bcfb0281c100e16ae200e34b1638e158cf98278f3f62f75c97303be14265fbf11816941b366c4f95fdc3a7efe999d74b3919e6b10980ccd6e63e5ca118476b9144e59274c4a4c3f309e0497f9c8e21ce32eda4974cde4f28c66d46b6e63c2ce2bc8c629a974d4256d268dad6c7d5f80c3ad5ed4856d651ed619041acc611d5e2c30a7d11b60e5c665569fd9315120abc590c861e4ecb16df430d9056d517ff060947fe556acc7ba94273398339616f45ada042633bbb1df5e7cc313df660c02f11dc6dd0b96f0281c006d864e60c4be32d580088c14ee2d782fdccb15a5a4d35418f742cea6f410392183b1688d924e3efd42ee87ec26e0a93ab01973ca14955e55556f9ce7efbed1a1474b01e9dd592fb27b01bde028ae3b939c219aebb19d4474afe735e18e9398df62b0e166d7677f0fea0de612e3ce5bca3d5f0d8603356240c8b21f65a4c8dfeadaaddd410f488d430b91f8495b920439ccceab14d12b5eb6ac723a97a382e3efb2a88588bf8f1217d3c2b7d7da4ee64a0c9429a4e1927a8b8aa589353fce4390281c100c3d5f93ebec8efd817d633f1095c7d4d839061701bae2f39cb4d1607e0502ecd8bd58b562dac772906908e0bc63093aa3a1be5da2f6d16b3c593d803ddff8c126e4a8caf51820eb7cbead85a60dc8e46e80bf50bab1c9c5ed90b7d72ceadc30a6bb4f055975e5ef78d1625c662a927f0d9d86a99002fedb60a7c5d752f90adc118068ab1eaf809d7619d7ff3c605e31b1001d96dbf04c622a0192a59ba29369148789423ba5cff12c503c6693c4e515d7775250d1fa52d0d06c093c2226eeeb30281c01af7aa2c6e5de3ebed447b0327ed8c09460a78d700097a147d4b59df7d4ca448ff63f0a4e82f842528b750253309d41c74b0a8e3ab293a69a2ecfb589aa3351fcb9cee01fdf073590d5cc91bd86b44c0dd73ff8ac183a77029ab15adace35707b2e0bb94e02c8badae6860cf6e9d16b913b929a4b32b17872ac278653f7d65cb795c514f15a1944fc78095e9c6567f6cd5882e23e4f4e571a168721c8e70924c1a3d9616fc1f0dd3b05278243bf9aa920fa05b3a53660506f71d3fa0bdc8ff9a -Msg = 132cf50c66ac4cc54339751a0ebb865e1d3d320562fc905c4abd1e78e464066c46c3a0c02db0371ee35a104d66dda864c6133e37cfad9116e883ebb73b295e7016c34ea9911a309272ef90114d8f59fff0a75193fe5ae31ed99121f9c59209bc4bd507b1dc12bc89b79ffe4d0df9209762a1730136290cdee58ec828ccc88eba -Sig = b12503b7b2f783618884174bcb9be10877960431ed6363c807e12db71b8b6bd9d6401d064e253740158e8b900152d37faf20333a7d80b3d47c7c7a3fa12091ce31cd8aae272a4da15fe2cb5cfdea541195a469c96bcf695e0b526dfa48a59003c6763af8136392c4b8d24db314746f42aca550acc65e074913ab82232eb8593509158a8ba34bc0f0e3125a834a3ed2d6a8cb1d085f234ae868b86aea8d6f82e13a08842485066e48aae4837873150f44475e12602b552dcb34d1f9fdaadbc6bff5134c6fc76263888be67efe63ee1840fa08c49938858a9d48b1058d18976bf2e3bfc625552f75b3ea44eb91dd366865f240a0c336a0110e0fa09d09cd94c70cbc8895ae3d44ae3dff545f0e8c8cc662ecd40f9099a952494396c6b423ebb463409969281cdd54ad87a308e487ce19745b30d5da76b98d2aa9a007a55783b3037e5b8662322810bdd11d86dc3f61451149391fb2f14ed9c17c751623a4042ce7edb875ee27bcd1f19d6dc9283ad06d15e097e2b0b15a7eb7128adbca0aa6adcc -Result = Pass - - -# Additional test vectors. - -# Invalid key, no version -Digest = SHA256 -Key = 308204a10282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 5af283b1b76ab2a695d794c23b35ca7371fc779e92ebf589e304c7f923d8cf976304c19818fcd89d6f07c8d8e08bf371068bdf28ae6ee83b2e02328af8c0e2f96e528e16f852f1fc5455e4772e288a68f159ca6bdcf902b858a1f94789b3163823e2d0717ff56689eec7d0e54d93f520d96e1eb04515abc70ae90578ff38d31b -Sig = 6b8be97d9e518a2ede746ff4a7d91a84a1fc665b52f154a927650db6e7348c69f8c8881f7bcf9b1a6d3366eed30c3aed4e93c203c43f5528a45de791895747ade9c5fa5eee81427edee02082147aa311712a6ad5fb1732e93b3d6cd23ffd46a0b3caf62a8b69957cc68ae39f9993c1a779599cdda949bdaababb77f248fcfeaa44059be5459fb9b899278e929528ee130facd53372ecbc42f3e8de2998425860406440f248d817432de687112e504d734028e6c5620fa282ca07647006cf0a2ff83e19a916554cc61810c2e855305db4e5cf893a6a96767365794556ff033359084d7e38a8456e68e21155b76151314a29875feee09557161cbc654541e89e42 -Result = Fail-Invalid-Key - -# Invalid key, version = -1 -Digest = SHA256 -Key = 308204a40201ff0282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 5af283b1b76ab2a695d794c23b35ca7371fc779e92ebf589e304c7f923d8cf976304c19818fcd89d6f07c8d8e08bf371068bdf28ae6ee83b2e02328af8c0e2f96e528e16f852f1fc5455e4772e288a68f159ca6bdcf902b858a1f94789b3163823e2d0717ff56689eec7d0e54d93f520d96e1eb04515abc70ae90578ff38d31b -Sig = 6b8be97d9e518a2ede746ff4a7d91a84a1fc665b52f154a927650db6e7348c69f8c8881f7bcf9b1a6d3366eed30c3aed4e93c203c43f5528a45de791895747ade9c5fa5eee81427edee02082147aa311712a6ad5fb1732e93b3d6cd23ffd46a0b3caf62a8b69957cc68ae39f9993c1a779599cdda949bdaababb77f248fcfeaa44059be5459fb9b899278e929528ee130facd53372ecbc42f3e8de2998425860406440f248d817432de687112e504d734028e6c5620fa282ca07647006cf0a2ff83e19a916554cc61810c2e855305db4e5cf893a6a96767365794556ff033359084d7e38a8456e68e21155b76151314a29875feee09557161cbc654541e89e42 -Result = Fail-Invalid-Key - -# Invalid key, version = 1 -Digest = SHA256 -Key = 308204a40201010282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 5af283b1b76ab2a695d794c23b35ca7371fc779e92ebf589e304c7f923d8cf976304c19818fcd89d6f07c8d8e08bf371068bdf28ae6ee83b2e02328af8c0e2f96e528e16f852f1fc5455e4772e288a68f159ca6bdcf902b858a1f94789b3163823e2d0717ff56689eec7d0e54d93f520d96e1eb04515abc70ae90578ff38d31b -Sig = 6b8be97d9e518a2ede746ff4a7d91a84a1fc665b52f154a927650db6e7348c69f8c8881f7bcf9b1a6d3366eed30c3aed4e93c203c43f5528a45de791895747ade9c5fa5eee81427edee02082147aa311712a6ad5fb1732e93b3d6cd23ffd46a0b3caf62a8b69957cc68ae39f9993c1a779599cdda949bdaababb77f248fcfeaa44059be5459fb9b899278e929528ee130facd53372ecbc42f3e8de2998425860406440f248d817432de687112e504d734028e6c5620fa282ca07647006cf0a2ff83e19a916554cc61810c2e855305db4e5cf893a6a96767365794556ff033359084d7e38a8456e68e21155b76151314a29875feee09557161cbc654541e89e42 -Result = Fail-Invalid-Key - -# Invalid key, version = 2 -Digest = SHA256 -Key = 308204a40201020282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 5af283b1b76ab2a695d794c23b35ca7371fc779e92ebf589e304c7f923d8cf976304c19818fcd89d6f07c8d8e08bf371068bdf28ae6ee83b2e02328af8c0e2f96e528e16f852f1fc5455e4772e288a68f159ca6bdcf902b858a1f94789b3163823e2d0717ff56689eec7d0e54d93f520d96e1eb04515abc70ae90578ff38d31b -Sig = 6b8be97d9e518a2ede746ff4a7d91a84a1fc665b52f154a927650db6e7348c69f8c8881f7bcf9b1a6d3366eed30c3aed4e93c203c43f5528a45de791895747ade9c5fa5eee81427edee02082147aa311712a6ad5fb1732e93b3d6cd23ffd46a0b3caf62a8b69957cc68ae39f9993c1a779599cdda949bdaababb77f248fcfeaa44059be5459fb9b899278e929528ee130facd53372ecbc42f3e8de2998425860406440f248d817432de687112e504d734028e6c5620fa282ca07647006cf0a2ff83e19a916554cc61810c2e855305db4e5cf893a6a96767365794556ff033359084d7e38a8456e68e21155b76151314a29875feee09557161cbc654541e89e42 -Result = Fail-Invalid-Key - -# 2048-bit key with p < q -Digest = SHA256 -Key = 308204a30201000282010100a0afb85b74105f49f6836183d67b92602b53ad0d7a65f32a21d8959b8722aae1ec000cb9f22de09b794d7446e04be02a782615a659ceddb5f3344b6e566970718124dc8b8bf23c5aaa7447b7f11905f828e91f1a844d535624b987704ecca430d04cfee0deef46e7e2da65a3f2a1b3aae6cdf96795d24073a07312867aeb414e0bd6c23d80bd9ce6266fd90dac7666b019c141e3516ed51ced0d62a0b1db189860406ec5b7bbbeb49031979dba118ef6ad131365d6bd6994e695ab084592a5d2470341e4a9da14167a1387ec3d513687b7d849d64da896d4038f72f8a8a516c6402225a53eb813c1eb0e675af8880433545a90404946d7d8db2716fdd63898650203010001028201007df2de1548f720499020d0c98ecf931f3036c938fc4c76f9fa479294b2aa98b8b6cc1f2d8cc72afb926c048d1d783bbfee2723e71d13c9b2b96baf0850511b22ccb040f25c82458e6776f7541575a0b9300ff2224dbb726bde235226d48d10d1762433cfbcce5e8c99c2c7d266f71a2605fd42d54f98da8e0720cb4f7f7f70d2668b89cb57fde159ac7922756fd161379a5693168c388b7e1468552f67f896f69740e80e13b9badee87b7116e559c1e428276cc9d4788b0ee25f10ed560daa8339aeb52d8bb2b05a2e1e16e3fb348ae5feb5dbaf53a7d8a318865e1a746374df077d85120b02e3f0ceba47cc734c96ed6dac65f11bde2db2f1ffaec0da5924c102818100c045a3996d1465c73ca839c442b1026c82e418c68a5f96b34ff36557144a86af092b8c2873c42ac08d66e2f471c4094098be48058ed2bb0ebf0beb896f0eb18eea16d475914c901e35dffbcc257f19260819213c46eac7e508aae0114b98770471949f006d42a6c2e07d590e1f5f14747239154f65155daa4bea84f5ee8d2c7102818100d5f20732ea986dd3d1245dce180595a7f48b36c58f1576f6782062a4f1790871bfb2e31b96f1b596c59b6624cc2b56c441e4970fffe70e59c0fca099b598170106a60e32725c35401271ba2216039c627b18a2e319331c1444238724ba7c80e2f35d13fc0662638b414f7c12fe66db22328fa892a4b7632ea2c24f6b06fb3535028180448f5073e0127aec5d73bb0d819e6eb7d4c0931910b45f1f576df9ffe00b67153916df26798944995e92867115b40a7c8f3aa2a1e0b8c1dcd340e3df20cbc382ab7432942d9878775d4c9e13c0771eb79201abf93b6c7294f7cf3e90cc3cf48b9018a7cdd6280320d03dc228a805165d2371b9689329d83966529cd0b91c7bf1028181009f1bbed4d3f9067ca7a63709057e69bd1db5c6c707d13bc6b2b1cb0ac5f6701c4027a694a71e1d2102d6be1111b20d762956fa2d50f0221107e01904173403afa4a52c1bc246e6e73e904b8ffbf535815bf0877b030baa8f3bd97c31096b7c62cc0065d361601c8dbcc5830d911b274ef8713439d2bbfbcbfc092c0cf9852b1d02818058e7d95fe1a95fe10f60b59eba5c8c28c8eeaa82956a3035f37e7570f5ff91a104a5df77ba13a09bedb22018e2ac7461471b5e719ab202032cb3905391b7d15c74b36aff25c83987726e0ef1362c1b8f4f8282f2c4fd6a38a9a15e63400b92bfff31cbfc375313dc40f9cf19e031ededd32c47de6b3a99696a903638c4d6969a -Msg = 5af283b1b76ab2a695d794c23b35ca7371fc779e92ebf589e304c7f923d8cf976304c19818fcd89d6f07c8d8e08bf371068bdf28ae6ee83b2e02328af8c0e2f96e528e16f852f1fc5455e4772e288a68f159ca6bdcf902b858a1f94789b3163823e2d0717ff56689eec7d0e54d93f520d96e1eb04515abc70ae90578ff38d31b -Sig = 912209edbd684deaca5855ea6cc89ba16753caca12df2e18f56228f0c2ccaa3bb5e45aa2107dbe2cb5b5c3e1af159c858aa9f665df4433e5b8df78452da436310beded396ce5ab4fc3882ed72ccb1a2a9226ea4177deb2d341ae88aba789106cee2b25ad4049c47a46d05c94ebd39416674adfef4a212cf139a5283b8ec51d54c21461e302cdcbd8ce9f7659b7d88195912d706cfe30f68ca8419054e22f0be31f86e49135b86e3021dd43baec6a0cd24042d81f71f8a1e23079e6ab1f8cd7b3fec2882e93f6e724d3dec5a2e7883c56b8d9773036f116325bc6cb934968a780b66251e4583fde426e63951b8dc380ae29751ba5cfba759c4f192bc373775d44 -Result = Pass - -# 4096-bit key with p < q -Digest = SHA512 -Key = 308209270201000282020100cefe6a02d3b9919783aacc1e555888b6aecc45c76bf28f0efc673a4576d44db983f5669fa28bf31966d1124d01c0f1e9976796a4f7855115f74b59f65aa17d3e56b3a265ef91463a562fd2e770077cf7a0cfc4d0903c812622a141076046bd2b334e2072e21b9cd9d949cbaa010d73fc7c1f5337431a18fc93930509c713ee4e773818134912d7cfbaab4b57038d645cca237b2fc367f76b26200894e174d3c4265f58765ca0e81e2525db528afabc5d149e60ae2aae8e313138b27c4bc901f9612728ab7a32564d3d93aff6ba0033c9e8db84cbc1a2f0de32a275318836c07f07c51cf5ed43c5c727a4e2541a78c91e6a7609edf4c1c0cdfc59fd63621223ff297f63096f876cfa93449994597ef27e47371ae5c3ad575b6fda18fcbc314eda54411aaec457d52e1a44da6ea0d6f43ace949f6a6e9d5a917edca6cb38b217e9bef4279b8b98dcd603ca299dc3173fdb3978fa6926e8a0dacd58162e9337b9c5af7f7260b2c4f4cde6bc7a71f1a56974b72c721c57eb925860562b744d32a65cd2577e70e8e00cfc528d54186bfd6c3fb84a081ee7f5c8a8ff388296f021ca13b99e5ca6e773adfb6a6b7206a23078cdcfb57db1f1cd7d21e283bbd8a7c1e8d2eef46008ad2fd440d6959ed18bb84831d872d79e1ac4260caf481faa9bba227e15a1b61bff8249c9b60d44056118969242b004059f85c0125b1fbc47cfd4772f020301000102820200607f0a3cb727535026f9809ec37aba812f8bdb1bd49f07421d38a259afc3d9581ac4544b2723c6f8988deed22777234f9a5d9844df7f2f05e67b223d4e92ea281d9330aa04bcdcd8654576349e6d5f3cb1a32a457078445cdad801d0c67933c6e7ec0c0482940cd32210dcf92bf47195cae76f8bdba456f1a87a6966dd7fd5208f437f35be6322689cc52e222a6dc7d3da08206d6bd313ecc7a1375ef09bddfd1b46679f061f9d16308b2d6b958ebe3146636efec2b70d62b167950d8ce6f01ca9c5ef97c127a643ebe8e5a7479ec085e8202e102efd1efcf6edf56459f3ec594bee004a4589cab1c53180b16485da7c6b750bbbfad63863ceb8c4ff87c09d368761e95315c1187aa04e86a33144803b14f50b5659a5af214e3338bce3801b06cea9887a10cc17d826429f45dac630bffb0fddee5aec3bd8b85202d4b33e8aed30b9366eda3380feefbc243333ed5d013e7e91cdcd9ca9e5b8b269046e190aea052b62d59394881b0682dbe1c3c075cf9a58bf1a0b3fb87093a18337f8eed96502c24e92176e02d627e468e9d539f5c57e95c0c278e84f75f0bfe57044f94a9f29fc9752f9d625813e46905a3f863d95dc55d43c9cecea0b21624ae92911f270bde30f8174327abb33f4467e7eeb19b58fd6ffcbd4e9a9c24d8443550605a5bc1c47824f9e3da734e3b3999b40fb0cfd9391648ea4ea7a42cc822d384f3e28410282010100d36b7085d0e46e43171c196feb4fb4a620afb13165df1d4704840ddbfda6f5e0211a09ac4ca93a50d1fc4b9a1a6b3cce695240f150f4fc40749381640e03d6443c2e927e76961c95011a20ffe96c0202572e211e0f6ecd30a77d55e15b7d71fc0d2aa8d440212197d13d5449400ae65eae7c464fb5e019fc61f403249fd3c97fabece326d47e4246ed5f8f4a6cc7ef2074807397f25b3eb25c88fa8e394b1d5f25dff6dc7facaa2c4ff4e90b60c5b56841f335d0db13f1bfc2b3a84362f14861245e3010e4816c6261d7b29fa8ebc638eb8cb68bfdca48c426a56ae8fbda8a2db20727b1e372b7f11f56efc2d7e5aaea2d7c0f6b10872c0a3b4a7fcb788ab93d0282010100faa41019d952a30d1472b7185d7eee7aff729027383baf87ce4e691b8c16edbbb5ee7f621d006150761c6757f5cbd00a3a17534b1fb6ca777b7b6507421d7adc94e258c87b15288988cb9e4eaed4759041f34d05eb14468a26b98e2ba435697acd6366884e16d2bee912445a2ad91ba73a058f2fb03db6d4f460c2688303f23712ea5c601551d1a5267b2f782494eb43287a490bbd0118c247dfad2b487d1f20989b0f636ebd4cf28843de937d34e48b35d8eee7d9718f342d825955f4c04ee8d6f4b9e26fb1f7acba75f9b65d85fbc428408f623ed94c1f83f48bec1cbbe6dcbd65e1466052d350f4c17aadf7f3b9a4fe9f12d5dee380f3386478cb784800db028201001f5a649283bb0c9b0877535264ac2a5724abc97450ee38924a9a26d0041ad985c682ed024f501d64d4ef3c6afb16022b7e35038a85fdfed6b43317d235bdddedba9b11808da78f4f8d9d495d8a494936fda4caa6819565fa9c2c1b2b537d140554128a7d0791a240b87806e2e20b7bc478cdd74384ee5a0c329e9444bf2b124bcbbc52a77485d0e061dd750b8d7c4cfb1c2bdc78a12964efe08733d919a809100e36db8e31a4f28ba5c3e53799bf583ac0e5078b14a22d8cc99c090d0d4448fe96fd1cd5b47d790c520441ea298be596956005c656f9c3b6cb2066ed6c44298fc3420a61f820102543078a80f3b18c9a33ea9d02bcadbf1b3955c003f5b964e50282010070f1554010aa2847509b90de2de370db8418bfd4ac8658c6bdb49fb086241ee4a34ae1a3f8a59f347ec4b5dcf129f289693bf190bcadc5f6a97225486c0694c2a96485d571814b4f0e9192b8aa179b1272658ca3ca16cce29c28a964090ef88519e05ce7b72899b6e59811acfff9ed7821b137a0a9ae65a0f8ae516c7efd5c3c6d0da6aab570b523d27f5818af835bb05ba11f2166fe0386289526978686bb6c18d866cacbb009e89076e4e95956685642e18a667799b08a36a7b2520584530aa1328e40f74c1eeb7aea86a822e4a95aef388864212612237176d546847c37bfe8a8ec26a6692c4822c2bce1800617f5bdb738e99f12ad9cec207a3e55e93c590282010037217ba957fea90049c4cbe3b410b44250541ec5e846008a3f80620e7674d56265e22b8c724816d90bd9c111c003c3f2b11f5c56c3205ca47f61e036a7319d6019e06aa18d7e070cb04c7cfc7a66f1f736ef121e970b7a4f6d4f7c3924f135fc01d7cdeba27ea1bb7aecfedf05dcfd2f5311d3f0f458dd4eb3c48ca45ddf5ac2dd6c7ca3367ec8346c8f5e124be3262989aba3bb28012606b8727de275e7c9b5f86eadbb8b6f6acd583fb61ececedf15b02ce6539385f5df185c6e973a336a036506a7499d1e08b3071bb40eb71d166e748c3419642496ca46efe09c1fa0aa77e0a5adeec50536b4ef112a0782a9182661aeb568ced30b24833e7d4199f78f74 -Msg = 5af283b1b76ab2a695d794c23b35ca7371fc779e92ebf589e304c7f923d8cf976304c19818fcd89d6f07c8d8e08bf371068bdf28ae6ee83b2e02328af8c0e2f96e528e16f852f1fc5455e4772e288a68f159ca6bdcf902b858a1f94789b3163823e2d0717ff56689eec7d0e54d93f520d96e1eb04515abc70ae90578ff38d31b -Sig = 98a95ccad59ccd39b1da810b53c9c0ce7b4b0acd65c0ffb788c88c856ea3ecabbe7015d4bf36b7c3de7c4c7c18063428afc567b94d4396048cea1a3b56544928e28b15360f9f5be7e700eb3b4d64b47061df1c0e096015bdf1329ef7a8a507ef56fa9330df4b1f3f097968839a60d1a6f1bb5b247032dc60b2889085d1dea210cff53c444b3f614d051cb41d8f171df025712bf57497f57e3c3e424685a8858f431a90d689dc1f7b41f868f0e1a6ef612710f365ff2bf90f2db89d61d9ab9fffac16581daec6ae1ab9f49c8dfd33a55f7b1e431fdd413649070e0a915f25363d3ddc2091fbfbf0fbeafe49753038dfce6973458af66a3d318eb7caa44d3fea95c46f40976398299db270e04dd20e77360013fcca04874307590429b13301be5f47a9681af6a47e5eaa53dc7ea05cadeef4ac96bc2c8e14ec9d0966e035898525c92fe7f0bc3a8996246f42da5dc0fb14cd856fe5bc51c031b3d83870ae89e9cdb1cbb2605b3f8bf4a978435c80a0e99a1a60b4e1a45d77458ec39fbf0a65b9b5891738ddc44edede2614d96e62303f0138051ab899e67bdce065ac5ec8edc6b591220b2522f8f4920bd9b7d4084b30d9a79cc658de0260b6e76acd7efe0d5c38e7856a7dc22bfbe287fdf88ca393f6c575cc1db8f0d8e47b0456e5a392f27e9f2b0352da61e58d1c1ba23b32de9f82ed35cd862644d63ea6a3f09b3642347ce6 -Result = Pass - -# [mod = 4096] - -Digest = SHA256 -Key = 3082092a0201000282020100b8069f9b94c0075d7448921fde91f517219051eff1d2a7330bb8ca0e848916454a03ea915c754aac3f88da52274f22926c0ff259813bd8cb298ab2d15e9dcaf8db9e612907a73200670207211dae05696f9a9a49280060bfd56a5885a349516a0c8f98e7a46d25248e7a296bc47b058a5b9737cb733f928a104203fb863714c8160557278735eb4ded185199eb1be80a5cd4d8e0264ffbf5f3413051e81ef61d7919df435f28fa6de30ac99a3bdd8660c791ad476dfa080a144fa0c75180700e03c8e1a903298f0c6cb8857fa9c0f5a61cd481b2666316d0c067946622f9b6f9b736ff3cc601c2896c84ec382840ea814b63cd0889373c090f35ebac034592829cc8b71520aa8d84eca21421c91f259a457d71d03d33b96f746952b02f42d730e28920cceed93b2115f4610ba8f0d26e662ef47e11cd2f7ef7f7e9ef26eff09122a2ba34c7348b5f1b5a17099d46c0c1a291cbfae64652ceb78b3d2fd738437f436a0b481725566067040adb98d12841fb142c22774ee2f03d6760edd8f373633a13c39548681b0106411c19693a95fde7273a42aa6a47665a55fd101bc3881f4b8390187b8f2f9358e94fc7d756de376d7fae0d467a2daeb28bd04039c8479c9428dc6417d06ae5fe9f76cd6ffd99b7ce118da237c4002aa945fd3128d92b62f66fc8aa8b9d659e97d03fef1aaeab2c5516fd55a5ccb7382a9296ddcf55895502030100010282020100879ffa0983bb72b2217d4a944a486fc5386b50b7f2153a3c98aafbdf6f36493f8fa90b3b4e54f34fb71379338adcfbb1c60a8aa60464c30617fbac8639a13971e709f6b972767a9769534945d2c5ea1f26ad5e8004072346be56be1edf94ad77e701fdc2da9fc5fc073569498f68cb5088e80daad7a946aa9208d53e8e5011f4d4a5e2f1b2e8be1e945a93e948292cfe56245821fa9a802b67b7e790b5edfb9d051f583822ede483100d673f5057972dc4674cb99407eddcdfd33fbf2605ee8fa5a26b0d50d35425e80aa5f8cc76f59413335ad2cc3ac319de73781f3e2fa3f6ae5cce07503703d49c31ea9608b4af1fd31c1e83e7fcd936240bad40fcb84d9ccc82141f83d43f41f6aa5cc3248b0cab9750478d370c4ebb219ac6e6619e80eb0e35562ec65d98a5a9f7acc105787406cda54eaefc9f93bdbc70d32da626df775ae3fcb02d468d0bde8d012361799956b347610dd4a4220d5ba4f8dd44c6a4c6a1cc2cbed643c775116b36d2795e33cfb75f29f644fe49e53609450aa34867fabb5306dd258204370376de470e7484dd72d7b0955c4b003016c3431bb0391716c8830a9b739f7b224a1fd90d6ec0a719f1bbb6354ad5cc34e22bed8ed54d5ebc6648778979d6b20c6167c319201d61dc1eb556654f732a75d3996ea9046c1bfadf2bcc1de6c00e254f0d87639262213b58f4f49771e65cdfacd900ac1256c8810282010100e96016489e0f3e0f21f3b63383d74b4ca597f77391ac19885921a9f55b9893b38381f1906a7b4e5c328b998f681a7d7ec362d1022eaa0c0ea4fd9017716538eed39c864e1e6941f7c47b5a594b5fcf7c874edc0d9fa74b25d875d9cfab9aa21cfdb7e5aa8dc4fbb67bdd681f7e1b1c73083df4da1a842a32e3cbf2dc94e20a9a09aa8f9db62564a7f544f6f58666b49831036dad02009f3f310af7cf2eb89f238fce322692db963b1362bbd055170cc51f5726d2111983818abfb96b988e1081fa881f658867b5414ff4f833eae5d28975ad3580256e28c5fbceb1daa78278058289c7f97632bab0494a2cc750c9cd58aec851ec97a7c762c947a1b5441acdc90282010100c9ddc7d236a5374cf84db722c7357c8499329766325678bf7023000cc3e87eedb811c8696ae1ac0c00d435eab2a2adbaa56cfccfe37becf217eb889939276203655f96710c466e16e7d0c4723ae4defe4570aa6726834385dc1fd0f8d99c850d84d6995043cd77377e3835bb7d0ee47dec605feac42f73e1cb6bd6c76118d561902a6fdbc66b4813b2ed979271c97ee349191317ce1b1af067b633b5cf45c4699e86c5b047d5d84d486b3bb8e1f053903c881a158773694f106dfaea68b9e2ed5f934ef915452806d2e5bf887a858636b772e1d6f282a659ba20770513e4df0b4dd42d34580fcbd3cca1e608c32f7ed6d6e0759f2af25643dea0e5d3113ef52d02820101009d53c691fbe440ad08f17852303e32a820365b7e50a519ad5e912037a5212de965ed73012d97a4d2e8cc4da06cc8f6f33f1addd63fc92949b216b24deb8716a3828ad1cbd61a957b47bcf4c29fda9e50d012ecac4e860456262004cf485b7d9057c6e29060f47bd0a09e393489da130ac572a71f65a2d5a3eb07b1d8dc91aa1e000838bb5470cef39f9877783bbbff615e21768d9c7cf8de2bdcbe04b0f58b6af8e643ced7502b6df5faa8aca0c0623e7d8b4e436d7daab6e8e7a9438cdbb0eb3f0f0743767a9ba9c5125b44fcc52472c09f1d231f98acea13805b4c1183161078d913b3ebe7f50d24cb5976a0d2fa991f73322f72698c33df8767cf807325690282010100b34d05a6a718fad4a81c475561c21556a5c87507b6206e620415627ef427f74de8d80abdefcc8107ac58d18724a230537f8a1dc7fd53deb36e21ac1404db0148e8eb0d725e27d4b30db6b6368c2f2c0e87d939d22338266aa889ae10cb2126614aa35e4c17dd514dfe13a94e5e173346d2050c4d3772baa84d09fd1cdd16b4b952d70ec2142cc8398f0d503b284c84231793690d14e9a874ee79bcd679438be11088bee103fd6281ca984cd4bc02be06786d9f558e1929e9ab3b34caaeb8a5629828fcd56b5a20e266c2e0ec357f9225d9adf600f928a8df3bde8838ff61a3e7a37a99a84babc42cdd2ed466e60fb2c6dad74642596024d565d25e30aab9d40502820100736f2d8187bccbb042c3ad4f44be780e038673088c5347f452332ecfae5d65bdc44854e3fc6d41f787765d65891d9c36586bcdfd044b0b1f99471ec1ed095eda5027078c0810c150e4499d6b9073bf4a0274a6b19029d752b400c63ecae83bbbdf1c6747f4718f583c3d3c04c4351bf11a9e9df0a5b28ce704132994df8abb73d7c3c4dfc06f0f24735a1dfac76420fd594b3db0046602dec3c6db7d4503aa3016b9ab1128173c13aec99d77b49902df6d5016d634397ee4e5810486e8ffd9cc79106a046154791038c002c622e2f6303ba52178a3abba955f4cfe75a446f7779b5b57a9858dbf228dce49ff3b0c62597178cb0c43a848e47242f019c5ca673b -Msg = 5af283b1b76ab2a695d794c23b35ca7371fc779e92ebf589e304c7f923d8cf976304c19818fcd89d6f07c8d8e08bf371068bdf28ae6ee83b2e02328af8c0e2f96e528e16f852f1fc5455e4772e288a68f159ca6bdcf902b858a1f94789b3163823e2d0717ff56689eec7d0e54d93f520d96e1eb04515abc70ae90578ff38d31b -Sig = 782a4da593daba94dfbf323458d4e1ff250f38689db3f699778d2ba9ebd3e327d636cab93b5f77cf333f9219cc8b9295a3115cc7b406b889f1a301a4757811b17b1a7004b44f25b987a1bf7c3c299f550c4cf41a9a27678137358ab02b8956e045f9cbed8c00aaba672e6b6b279277f97cd0563f51ca495957083ce9c0fe1c33dd254dde9d610df566ced993f6a23000538f8b5ede07db291657ff1dc72c2b919877c64655d0d6f7a08c5692fee15ec4b4658c2e7414be9fc3834d0b47209e9120a5eb5c4ad6d5a9b598b163eddc7555888069ca9dc431b2b67ce18201323f0c20895015fef02d8d1e25a7115552292ddaee50eb658f3bee98ce423c788699b9d37d2da690b8671249b204a5b263ab079c9596396cebbbd04285b98b6b8ea03ef066a2e2a7b0e77b40682540d94decf311d3b49e1d0af607756888fc3ba7ffe05e03c24afa0c855729c30abe93c0acbf5e9166b40eec18c316a01d2409c7c83bf7cd8e57f2d7c8854dea49b704c4bf9c443fce3fac5ba137b0568c1200ff91c0f538d3a7d712154bbabe4862c19a32bb89cc44e8f358359dbd349f98496d9031459fa674827e92213ba5f9ad36e0416f4bfcf8c8b16f88ce77b4f39b1889d0ee648895a36fe4c4322ac9783094e9764adf4d72080b3549faf8d2af95e2fb696fee3d64761c8e719f67ec04339af5327a7227ad1c5f708befabb64e71eb5782fe -Result = Pass - -Digest = SHA384 -Key = 3082092a0201000282020100b8069f9b94c0075d7448921fde91f517219051eff1d2a7330bb8ca0e848916454a03ea915c754aac3f88da52274f22926c0ff259813bd8cb298ab2d15e9dcaf8db9e612907a73200670207211dae05696f9a9a49280060bfd56a5885a349516a0c8f98e7a46d25248e7a296bc47b058a5b9737cb733f928a104203fb863714c8160557278735eb4ded185199eb1be80a5cd4d8e0264ffbf5f3413051e81ef61d7919df435f28fa6de30ac99a3bdd8660c791ad476dfa080a144fa0c75180700e03c8e1a903298f0c6cb8857fa9c0f5a61cd481b2666316d0c067946622f9b6f9b736ff3cc601c2896c84ec382840ea814b63cd0889373c090f35ebac034592829cc8b71520aa8d84eca21421c91f259a457d71d03d33b96f746952b02f42d730e28920cceed93b2115f4610ba8f0d26e662ef47e11cd2f7ef7f7e9ef26eff09122a2ba34c7348b5f1b5a17099d46c0c1a291cbfae64652ceb78b3d2fd738437f436a0b481725566067040adb98d12841fb142c22774ee2f03d6760edd8f373633a13c39548681b0106411c19693a95fde7273a42aa6a47665a55fd101bc3881f4b8390187b8f2f9358e94fc7d756de376d7fae0d467a2daeb28bd04039c8479c9428dc6417d06ae5fe9f76cd6ffd99b7ce118da237c4002aa945fd3128d92b62f66fc8aa8b9d659e97d03fef1aaeab2c5516fd55a5ccb7382a9296ddcf55895502030100010282020100879ffa0983bb72b2217d4a944a486fc5386b50b7f2153a3c98aafbdf6f36493f8fa90b3b4e54f34fb71379338adcfbb1c60a8aa60464c30617fbac8639a13971e709f6b972767a9769534945d2c5ea1f26ad5e8004072346be56be1edf94ad77e701fdc2da9fc5fc073569498f68cb5088e80daad7a946aa9208d53e8e5011f4d4a5e2f1b2e8be1e945a93e948292cfe56245821fa9a802b67b7e790b5edfb9d051f583822ede483100d673f5057972dc4674cb99407eddcdfd33fbf2605ee8fa5a26b0d50d35425e80aa5f8cc76f59413335ad2cc3ac319de73781f3e2fa3f6ae5cce07503703d49c31ea9608b4af1fd31c1e83e7fcd936240bad40fcb84d9ccc82141f83d43f41f6aa5cc3248b0cab9750478d370c4ebb219ac6e6619e80eb0e35562ec65d98a5a9f7acc105787406cda54eaefc9f93bdbc70d32da626df775ae3fcb02d468d0bde8d012361799956b347610dd4a4220d5ba4f8dd44c6a4c6a1cc2cbed643c775116b36d2795e33cfb75f29f644fe49e53609450aa34867fabb5306dd258204370376de470e7484dd72d7b0955c4b003016c3431bb0391716c8830a9b739f7b224a1fd90d6ec0a719f1bbb6354ad5cc34e22bed8ed54d5ebc6648778979d6b20c6167c319201d61dc1eb556654f732a75d3996ea9046c1bfadf2bcc1de6c00e254f0d87639262213b58f4f49771e65cdfacd900ac1256c8810282010100e96016489e0f3e0f21f3b63383d74b4ca597f77391ac19885921a9f55b9893b38381f1906a7b4e5c328b998f681a7d7ec362d1022eaa0c0ea4fd9017716538eed39c864e1e6941f7c47b5a594b5fcf7c874edc0d9fa74b25d875d9cfab9aa21cfdb7e5aa8dc4fbb67bdd681f7e1b1c73083df4da1a842a32e3cbf2dc94e20a9a09aa8f9db62564a7f544f6f58666b49831036dad02009f3f310af7cf2eb89f238fce322692db963b1362bbd055170cc51f5726d2111983818abfb96b988e1081fa881f658867b5414ff4f833eae5d28975ad3580256e28c5fbceb1daa78278058289c7f97632bab0494a2cc750c9cd58aec851ec97a7c762c947a1b5441acdc90282010100c9ddc7d236a5374cf84db722c7357c8499329766325678bf7023000cc3e87eedb811c8696ae1ac0c00d435eab2a2adbaa56cfccfe37becf217eb889939276203655f96710c466e16e7d0c4723ae4defe4570aa6726834385dc1fd0f8d99c850d84d6995043cd77377e3835bb7d0ee47dec605feac42f73e1cb6bd6c76118d561902a6fdbc66b4813b2ed979271c97ee349191317ce1b1af067b633b5cf45c4699e86c5b047d5d84d486b3bb8e1f053903c881a158773694f106dfaea68b9e2ed5f934ef915452806d2e5bf887a858636b772e1d6f282a659ba20770513e4df0b4dd42d34580fcbd3cca1e608c32f7ed6d6e0759f2af25643dea0e5d3113ef52d02820101009d53c691fbe440ad08f17852303e32a820365b7e50a519ad5e912037a5212de965ed73012d97a4d2e8cc4da06cc8f6f33f1addd63fc92949b216b24deb8716a3828ad1cbd61a957b47bcf4c29fda9e50d012ecac4e860456262004cf485b7d9057c6e29060f47bd0a09e393489da130ac572a71f65a2d5a3eb07b1d8dc91aa1e000838bb5470cef39f9877783bbbff615e21768d9c7cf8de2bdcbe04b0f58b6af8e643ced7502b6df5faa8aca0c0623e7d8b4e436d7daab6e8e7a9438cdbb0eb3f0f0743767a9ba9c5125b44fcc52472c09f1d231f98acea13805b4c1183161078d913b3ebe7f50d24cb5976a0d2fa991f73322f72698c33df8767cf807325690282010100b34d05a6a718fad4a81c475561c21556a5c87507b6206e620415627ef427f74de8d80abdefcc8107ac58d18724a230537f8a1dc7fd53deb36e21ac1404db0148e8eb0d725e27d4b30db6b6368c2f2c0e87d939d22338266aa889ae10cb2126614aa35e4c17dd514dfe13a94e5e173346d2050c4d3772baa84d09fd1cdd16b4b952d70ec2142cc8398f0d503b284c84231793690d14e9a874ee79bcd679438be11088bee103fd6281ca984cd4bc02be06786d9f558e1929e9ab3b34caaeb8a5629828fcd56b5a20e266c2e0ec357f9225d9adf600f928a8df3bde8838ff61a3e7a37a99a84babc42cdd2ed466e60fb2c6dad74642596024d565d25e30aab9d40502820100736f2d8187bccbb042c3ad4f44be780e038673088c5347f452332ecfae5d65bdc44854e3fc6d41f787765d65891d9c36586bcdfd044b0b1f99471ec1ed095eda5027078c0810c150e4499d6b9073bf4a0274a6b19029d752b400c63ecae83bbbdf1c6747f4718f583c3d3c04c4351bf11a9e9df0a5b28ce704132994df8abb73d7c3c4dfc06f0f24735a1dfac76420fd594b3db0046602dec3c6db7d4503aa3016b9ab1128173c13aec99d77b49902df6d5016d634397ee4e5810486e8ffd9cc79106a046154791038c002c622e2f6303ba52178a3abba955f4cfe75a446f7779b5b57a9858dbf228dce49ff3b0c62597178cb0c43a848e47242f019c5ca673b -Msg = 6cd59fdd3efd893d091afdc3155d354f10d6d88167427a2cf7246207e51791a6ca6200a914cd2834a9b3c79fcd59e26e457e0683bc33d49267edbdd6e5d90902696f1e7b1a4affc4ba371339868c28015ebbb73e262669866c35db974ba69e468f2583b9191d15d686cd66fb0b9e0ff0a3b4721a6dc342f14f2446b4e028595b -Sig = 166b8b8aa7a806397d8f28c900ea0f650c8cee021d79f7b5bfba2bada0400981dba364873a9f55f9fd002528f16053706623869b93aa8d1c83705c4ab321df3ffe5bedef4de369b345ffa16acc5f5e0b18db4a0dc9e843ef51dc7126b176237d4d8140f6d7bc1babcd135a6e471d06f264bc1e78996d8782c8f15da0fc32009715bfe21a88ee0d34c251c94cde33761c8e398f0ab1878e478700f869a7684103d624a9be0496c85669394f4915bf8cd68fedb0475c9a508c40862bb3c3f8bfa593fdc2a93c16e2866086d5a8be5e94c82ef415ac2cd20eab8bb3bf1c0f68a15ceac46bcff72ff2e0db004f29c4970b86925e60a6b4439bbc7acd95c1d480e0c586cf2af5b62bd56636be646b17f7df1419b02c8ff904b0879518be09c79f0aadb0bbe8f599e44afe9b3dec90f740fd2c586619e47603e9c6782207cffdd522cffec9dcb69d17df3d66ca626b8c14e7075fd8b10fb483f66d01559932793a932d872087e2d904b4b136cd33fe9cc4e83630fe1a192006a787d9e293cc3847fda8e0454f440841e7cb4caed5aee0a395e7040c8e133f52a223e1d402a1269fdc7ea69023f5168756e27479c66c759ef64f432f11f1c1751cb70b47d32e0921a2a415433316090394aa51c7249783cb43aa44255527a9450f60e8df078d0b31089b6f27a18a16a9fc01d45a36ede9fa4d822512467952da83ef5110aa10eef552c7 -Result = Pass - -Digest = SHA512 -Key = 3082092a0201000282020100b8069f9b94c0075d7448921fde91f517219051eff1d2a7330bb8ca0e848916454a03ea915c754aac3f88da52274f22926c0ff259813bd8cb298ab2d15e9dcaf8db9e612907a73200670207211dae05696f9a9a49280060bfd56a5885a349516a0c8f98e7a46d25248e7a296bc47b058a5b9737cb733f928a104203fb863714c8160557278735eb4ded185199eb1be80a5cd4d8e0264ffbf5f3413051e81ef61d7919df435f28fa6de30ac99a3bdd8660c791ad476dfa080a144fa0c75180700e03c8e1a903298f0c6cb8857fa9c0f5a61cd481b2666316d0c067946622f9b6f9b736ff3cc601c2896c84ec382840ea814b63cd0889373c090f35ebac034592829cc8b71520aa8d84eca21421c91f259a457d71d03d33b96f746952b02f42d730e28920cceed93b2115f4610ba8f0d26e662ef47e11cd2f7ef7f7e9ef26eff09122a2ba34c7348b5f1b5a17099d46c0c1a291cbfae64652ceb78b3d2fd738437f436a0b481725566067040adb98d12841fb142c22774ee2f03d6760edd8f373633a13c39548681b0106411c19693a95fde7273a42aa6a47665a55fd101bc3881f4b8390187b8f2f9358e94fc7d756de376d7fae0d467a2daeb28bd04039c8479c9428dc6417d06ae5fe9f76cd6ffd99b7ce118da237c4002aa945fd3128d92b62f66fc8aa8b9d659e97d03fef1aaeab2c5516fd55a5ccb7382a9296ddcf55895502030100010282020100879ffa0983bb72b2217d4a944a486fc5386b50b7f2153a3c98aafbdf6f36493f8fa90b3b4e54f34fb71379338adcfbb1c60a8aa60464c30617fbac8639a13971e709f6b972767a9769534945d2c5ea1f26ad5e8004072346be56be1edf94ad77e701fdc2da9fc5fc073569498f68cb5088e80daad7a946aa9208d53e8e5011f4d4a5e2f1b2e8be1e945a93e948292cfe56245821fa9a802b67b7e790b5edfb9d051f583822ede483100d673f5057972dc4674cb99407eddcdfd33fbf2605ee8fa5a26b0d50d35425e80aa5f8cc76f59413335ad2cc3ac319de73781f3e2fa3f6ae5cce07503703d49c31ea9608b4af1fd31c1e83e7fcd936240bad40fcb84d9ccc82141f83d43f41f6aa5cc3248b0cab9750478d370c4ebb219ac6e6619e80eb0e35562ec65d98a5a9f7acc105787406cda54eaefc9f93bdbc70d32da626df775ae3fcb02d468d0bde8d012361799956b347610dd4a4220d5ba4f8dd44c6a4c6a1cc2cbed643c775116b36d2795e33cfb75f29f644fe49e53609450aa34867fabb5306dd258204370376de470e7484dd72d7b0955c4b003016c3431bb0391716c8830a9b739f7b224a1fd90d6ec0a719f1bbb6354ad5cc34e22bed8ed54d5ebc6648778979d6b20c6167c319201d61dc1eb556654f732a75d3996ea9046c1bfadf2bcc1de6c00e254f0d87639262213b58f4f49771e65cdfacd900ac1256c8810282010100e96016489e0f3e0f21f3b63383d74b4ca597f77391ac19885921a9f55b9893b38381f1906a7b4e5c328b998f681a7d7ec362d1022eaa0c0ea4fd9017716538eed39c864e1e6941f7c47b5a594b5fcf7c874edc0d9fa74b25d875d9cfab9aa21cfdb7e5aa8dc4fbb67bdd681f7e1b1c73083df4da1a842a32e3cbf2dc94e20a9a09aa8f9db62564a7f544f6f58666b49831036dad02009f3f310af7cf2eb89f238fce322692db963b1362bbd055170cc51f5726d2111983818abfb96b988e1081fa881f658867b5414ff4f833eae5d28975ad3580256e28c5fbceb1daa78278058289c7f97632bab0494a2cc750c9cd58aec851ec97a7c762c947a1b5441acdc90282010100c9ddc7d236a5374cf84db722c7357c8499329766325678bf7023000cc3e87eedb811c8696ae1ac0c00d435eab2a2adbaa56cfccfe37becf217eb889939276203655f96710c466e16e7d0c4723ae4defe4570aa6726834385dc1fd0f8d99c850d84d6995043cd77377e3835bb7d0ee47dec605feac42f73e1cb6bd6c76118d561902a6fdbc66b4813b2ed979271c97ee349191317ce1b1af067b633b5cf45c4699e86c5b047d5d84d486b3bb8e1f053903c881a158773694f106dfaea68b9e2ed5f934ef915452806d2e5bf887a858636b772e1d6f282a659ba20770513e4df0b4dd42d34580fcbd3cca1e608c32f7ed6d6e0759f2af25643dea0e5d3113ef52d02820101009d53c691fbe440ad08f17852303e32a820365b7e50a519ad5e912037a5212de965ed73012d97a4d2e8cc4da06cc8f6f33f1addd63fc92949b216b24deb8716a3828ad1cbd61a957b47bcf4c29fda9e50d012ecac4e860456262004cf485b7d9057c6e29060f47bd0a09e393489da130ac572a71f65a2d5a3eb07b1d8dc91aa1e000838bb5470cef39f9877783bbbff615e21768d9c7cf8de2bdcbe04b0f58b6af8e643ced7502b6df5faa8aca0c0623e7d8b4e436d7daab6e8e7a9438cdbb0eb3f0f0743767a9ba9c5125b44fcc52472c09f1d231f98acea13805b4c1183161078d913b3ebe7f50d24cb5976a0d2fa991f73322f72698c33df8767cf807325690282010100b34d05a6a718fad4a81c475561c21556a5c87507b6206e620415627ef427f74de8d80abdefcc8107ac58d18724a230537f8a1dc7fd53deb36e21ac1404db0148e8eb0d725e27d4b30db6b6368c2f2c0e87d939d22338266aa889ae10cb2126614aa35e4c17dd514dfe13a94e5e173346d2050c4d3772baa84d09fd1cdd16b4b952d70ec2142cc8398f0d503b284c84231793690d14e9a874ee79bcd679438be11088bee103fd6281ca984cd4bc02be06786d9f558e1929e9ab3b34caaeb8a5629828fcd56b5a20e266c2e0ec357f9225d9adf600f928a8df3bde8838ff61a3e7a37a99a84babc42cdd2ed466e60fb2c6dad74642596024d565d25e30aab9d40502820100736f2d8187bccbb042c3ad4f44be780e038673088c5347f452332ecfae5d65bdc44854e3fc6d41f787765d65891d9c36586bcdfd044b0b1f99471ec1ed095eda5027078c0810c150e4499d6b9073bf4a0274a6b19029d752b400c63ecae83bbbdf1c6747f4718f583c3d3c04c4351bf11a9e9df0a5b28ce704132994df8abb73d7c3c4dfc06f0f24735a1dfac76420fd594b3db0046602dec3c6db7d4503aa3016b9ab1128173c13aec99d77b49902df6d5016d634397ee4e5810486e8ffd9cc79106a046154791038c002c622e2f6303ba52178a3abba955f4cfe75a446f7779b5b57a9858dbf228dce49ff3b0c62597178cb0c43a848e47242f019c5ca673b -Msg = a7c309d44a57188bbd7b726b98b98ce12582228e1415864870a23961d2afb82cd5bc98bec922d5f2ac4168b056da176ef3ba91f6b699ba6acc4144868ff37f26fd06720868d12ad26ecb52572cf10416af68df03ab645a8b704857d2190ffc3f07eabe3a8e2abe34ed6159e884c4fae141d4333d5c3e0db044ff9cccd9cbd67f -Sig = 72a8d4f11321d8465ba3cf051ecd8e307367014a0ba1677e77a9c500d77e874558e245f3e2f52985e770895827a2cab290b05229168bccd3bfccea7e7128beeae070890de1c1b7f52ac90894ec52403a33187baff155a471f913e8bc2d96e4ff16308838f9f7473bdaa29d0ad5a6dbfb0d8fbc229cc46394c5e25fd19ed6129f28b0c15282793bd288ad491d1324ca431a63212b75ceb510b19d4f635d8fce80ad86e7539b4883c7aefad92cd2de9cecca4e2d7986dea10ca122dd6cf455deb7eb3930937892e713760034c1e9e8b7a0e566bf471845d125d79018f1b3395e2fb4a908ca3c39272a3f2ee733e56bf76930a54efb049fd14cdb67c728ab23f442fb0e8efdbf0389770a086a7451cefbf5b94ffce64ed0430b441897f5a7875420c9df2aa4b3eee7551d0072b021abd579279f8d5b42b129fd13fb4717a23eaa50e0bebbfa64cb973aa249d8095b68ec5944f4f9b73b5f2d6686e9a0d84497d97dde49f8b77a0141a2ea2de47f08d171d16a53fd2e02369c35de96530f5006c35e96857219584053aabe880d246066e225dfc9ac4f59dd295c131796d4b739de118660897c22e9964d7ec8e53272dd2cbbcc2b1342faf9ebbdf4c24cf31b192bdd070eef578ca8cfa02f2c6f29e1643796087cc3867a4a6be8cb35fd63e03f66b9ef2be3fe7975aabe08d7234d116b4c6b41ab5e5de0f93fc60d68b3478ad4ede9 -Result = Pass - -# Invalid key, size = 2040 -Digest = SHA256 -Key = 3082049d0201000282010000baff76a0e86f27d7cb0b843454475348f1a7b474d12c3ed1f479d2d8d34c0bc8a7cf9562bc43b3649585a0325e17d30872c19202af95b407fbbe701811a77937a0c866f863f062f1d36724faf5a44724aa8b0901bc61f8632bf6a1bcad8da8c26b38428b88413317f2975019e9a0c0a4c2ad5cacff643dc3092d053f8607bba83310ca90197e4f38f6507d60d3fcff5c42d0d9e2695b72490c0b622d783e22ce0986dce6047410569e869651acf168f59bba02326f5a2a5d1292766a9b5325f7e17c1820a1ec91aa4257483657f8d13fd3ab071b9ff361f8ddbb071b61aeaec3ec7338694ff2f3f7b43d81cfc9900a6b8cc5c426ef5c26559a5348c16b476b02030100010281ff26030c10456f630000ac44a18688412bd0c3b071169c11e107fb439b03c8af948858301bb3fd67180934f28d8a86f944fc5ed0d96eebd57ed1f3b241924522e4e5f016ce6332584aa4189171da411c9d1d75c9ccea8857bf810e4f6e5531389edcc0c0f6302a60c27b73babaa9bd1dabe04ef149d158851d825dfe751d3fb126355980af98fa7d977e573f58e428a309835958ee689242dfa6018c070d39809b8c21632cbe33fe3ee1a862e38ed13b6147115194b48922bb1de56ffd20679146251c8d2fc192c931c7e538299e7bbcecd81d3b8f8ff5ab95887b5bf3c621653810e2e3fb3b00b0817aed965d21b5ebdce84055c15770cef5d7599c79dee9410281800f522a5da7007ca094340bdc9136edd6ee0a80bbf3c6d1eb062c57d58ae69e170ee629fa269fa7bbe3ac78267a7eb260c5fe064a7ee05f78ba8ec0be8f1d0f471d3af0820bd09756110b4d53c6ef83211b10ee0862d879472e030c9ce0862c5b5aaee108d3f1c011a746629d90cd78d8111f1da85896b93d9e088205c314af510281800c3492d56d1ecee6d51bc376436baeab40a1a3eee530a5faad1f8db149cdc2fc01eb809089a36de466a620a4b997d8112b613c68fda78a7237506c90cc890d260974430ede8942e2bb34fb9473e46adc85aafc42ecac2a84f56fb4bf7d7f8469e791111cbfc75a221bf0e3d252957e5bb0dc78fd73509007e973014476c273fb028180072a6ade3a89a3c0871080abbccf701622678f26593218645012d551ef1145c78b146375b832dc04a8cbb5b6697c70798aa0f0d84ed72a5011114b5cd51ac65680795c9bb662ed2537fb8d432dbc401c6fc84f4c64ced28a541ee0fb4e97f28f17aecb5991a77429cd8ec1f8e80cf2043c9dcd053bc9e301cab437fbf1edeec102818000b46865fa4ef5134eeab376789e170fbc4398fb8a302ce53469c5fc9e8e4adbd2208ee3c98eae21a9eb9da6e53067415687debd1128434e24f377d1447e054c54ef698fca3992ab14b4127297de706d1b2aac3611043fd03d7b9dac10caf41249548ef0620258a9ef8311246bb04603754ac5919cbee21212e0990a22f147510281800e6614d7fe3a6c3ce1c1d2cf1d3eab9b7ae046fd78067141dd841726968e8cfebb4171d94754aa4c71ae8cb53d251b06e420f2b7f0f01a6a2e6b386c3554e0e81a74a94b053bd5c062997729801885f3c36b996b2757b76d09116e11af29d604f70e7dd63225234677796095551c64692aa52ba63aaae2dc836f92cab9def128 -Msg = 61 -Sig = 6041bb20241dd3aaa3eb8175f9642243e1e3cb289e52bad58a4d56bd8a10306bf139ae14d2489fa3575c74f53d851b7dd7c6bb7520718295afbfb5e67ea7b414c332fa0bf3df019c95ca9f6d0389a84c2020ebebeb09ec42a4985f47560c356979a7667937c94de9e16dd26dc4bc4c3a7f34f9b1f5f1166397c6493dab8760e822f41713bb9b1978cd413955a3d356f2d03d973036019a1115e502f65aba3c9b5a3955ba2d6155f106283657541faccce43db657f9aeb93f64e0331f3e71e3f569a26e773e1d103c2c04c59f331ca53bd44c271df15c32279f433359e1b1744fdd587c94e2d42ddbc899ec444718ae6a22e302ebcba861528d08683345e9c3 -Result = Fail-Invalid-Key - -# Invalid key, size = 4104 -Digest = SHA256 -Key = 3082092d0201000282020200da35475cb97abb30a924594d855d9279fecff4bf9b950c5ba8ed23a263429d1e075cc63e2438b34ce5ebf1699ed0ca590c1eec0e93dda1c5a345d01a6aa2b1708c74fefb91cb078b4725996af868ecae9390b836d906288c0d86f3991121f85059b45c24611d97df5d497a56176c3e1b9b83887e8a07f72bc2d45cdc8e5a90439ef77b09ebb1c2e538058dee343004ce2351c6b398f1f4896b165e2ef6ccdb46dadf51db109137e7db57fcbba406c16b4e8c3d741dbac14d1c1a02fbee6a58cd2472737be1c73fadfaf3ab90064bbf1d1b1eeb499283334c9ccaa68a875ce25a025f9cd49c6a64a00a7c065c2693a02cd4c4984879a9b46a7f88274b259ada9d69dcb62dbb9fa5d865841262a76b63018d06cd808659ad4cfa31e022d227a884969346de362697ce192dd839537ef3017f0f73fa080d012a82f596c24eaa9dd01fc10c875020232ffc1635ef094b050a118bf810d8d409df9399f5ccfbb3ebf25a96f438eef72a6b563be8efaa1f5ee5fd2950cacc06f7a208a311f9d5e5e9c97284859cebecd5527f76c7b80dc44f6a5856411fa53148a28ba3025ca02fd9b4f97245fe31fecadf7bf5683a3ebfeebc91695a3910f27f38df143cbf0b9b9553fcef262f16ae5170a1b5018b2f0fdac640afd5c318a9517ca8491bdf231e940e861e4bf3336a0c83a9cf1c1d53d6ba6dc129717f14fdf6261a0cd6c93eab0866c702030100010282020200a9520a6bf3293f33c52c0577d7f30204542bbdf9289b0199e67d0cd7a73a3b7cdfada7cef48062f15ac038f6025c75879f96270a30c71c0ea66137d827c2d2f948a4486fa173f008ad4e89bbadc28d55f1ffac5233194a415305d2e4859cdc784d035d34857f5727e5d56c6e7d826ab735775d65036aa6eb78251d61afbcaa912e3b4f6825522caf7d47221922b9d820b4db71da4ee60120d8cde48b80caf9a40396a287e0552f1264ebe39b1eee770bf349732e351b837f783cdeefead2eed15064d723dbd0a6a33445fc6ca7d603186cc1134665c015006ff1f8452a40730bf1278c2496b3201de7c4d19294049d97ec0a1938b3df71b5e9fc16b1831ea460c6a5813b96b542a809b4e92092d0c850a213936ea8bd48467cb4738e55f79202045a3e58eb46df455f33ab8ed1f798001006f620038b9557d21263dd1b3f849550d7c79d37a816ee6ce8a14bb8b08ce9caee2860815b7ad0c862e40c0639d7d5d129b501405560657a49b99ebfbabc666086a4c9ba394367f29321c7676ffd908b65ca0b5992f6cb65bd5ffe1c5257e584d6f01c04f4a4de223cf39ab3cf1f0e43b933f0f2fdff24dd8f03b0d69ec5d592732c960205e7a94401baaabd7cafc90b972f56a0d096a2ee366f9be53b97b820b9639382cd3508498a7f08543032f8d33fc0968596d4db961e8089ad17be6c1fec0228968e7b21ef164ff8c43479e1d1028201010ee8e72193d6b01c1f603fa872c04d0bbdf690cb4b3dca22a3cec552b788434302390004d118f53532be3774da84c9d2c675b81481d2df4e17abcafdece67250e30e76d7671b145c2accb57a19c1e95029936dd27947af246ec1e522c67f1979575555795cb6637532300f5b1bdf5f55f130d195165eec33522367dcf9331f9a3ac52db8cab35516cb8944f73c1903fb6936820d1430cf6ed6f3c52d2696ba20cc6098dbc91d392d44a0a0d543aa0382998cc4133d3ef3f02a2f563b9c2aede75cb99c40ebb01ad2a622ac376bb72adc2f23a3efb681d6b73e99b68d43ca306f68c42df1d482a490bc01289e2dc81daa76aaf7b4d17456b9d1f4272542be12899d028201010ea29ee81cb4b4ca41b489746ca8ef83675c90bea23224873af5026a01a4f172134f2da20ae520f099b65cb9a6dd7f50f8f0b0db6aecb1cbf3630e975a1f1af37725a8fb88f1a762c3ab790b80d60cdd320582d9b1b6adf8e52ce56d98cccf1770370c3e54cb69100adc2da03a50bb107095e4dd6afa0f8de4c93d6cf27d1a1a11ee21ded0d6fe4da95a3a0df2dc74aecabc5ebc99a30afe4a0efca184c3b4f0f58be76ae282222da06971390d6951f8124bec79a912deae86bf502518d6720e147bd6d74d7ae0e90bb42c420c957bb68498f82e81dfff51c4b9f9725b1553c25c9b49d7181942bed4fc80a1290cda56f2755d1f963b276e152bca36f9ff1286b3028201010e7ad41540fd8bf513e7a68b123e7dd4bc7d1bebc33bd3f6463dc656e9d514f59bcffd9baff25c19791950c45480077d82adcac367bd828ed5e04a78c6bc9b22c110480c339f11ebdcc90829f79fe1d5af3af5ba257c9fb473382d2ed3b595e8c90f1fbe8872bd2e913a297fa31711006707b152e7f1f1d4799dd6fdbcaa90b379060bbc5e674168acecb8249fa1efc317500f876227711cc4f6e37450f8aaf4b567ceac0caa2be031b909d9742845d66d074f591beeea7b408cce637fec1535cf509756594ea30e16b8afa5f71f61298b4242b0c7ff5aa685ce4482f6e6029a00161e44b0ccdbc3904253cf22c9293e6696ed9016a6b49f2c2ec061a86aed97e502820101081f078d07f8e2e5e566186c89ab891562f303c335601bd30acd50e4a03af65c760896eaf79ec4139f4889d5df99c3ff9bd47c5f95caf8b29341a1a42d375b8e44cc9a23d28f3e7258e03b503dd309da68da940cd747e6ec59c7fb1c41114dcdd4d04734037bc8b645407ef50dc724b6efb2ce086c478d001137f6a5113e889074e8aed4e510989761e596978ceff6b3d3fe8997a0adcff8e201c500a01ab5ba8c9770f867ef0ca643009ffaa7cd8cd5dad954c502245d7b7d7c862dbfc5a80ed6210e4bf54bbda8b47ceb9e4f3b582625187987dd3bfe8352665cdcaf5c7b593c6853a64f521d2ea623e4010a357ea786edc79a32946ac1f46f934bc4985da06f028201010d783f2e727336392f1f93272cca34854c0a2afffe94fdf19cbab693c81d17c0f24d3bec537b7be9c0ca6d57450c11cac258332e4d3d0fa82a6d1a2af223dbbb9fa90cd60bc977ead9a5c377ed7123d7b3238b56587780081f29caf322a99e40f982bc6189ce68c959b1106fff19c9aa3ec0a9fbbcfd461de51cb6d3e9b664558124fb88359043162cc144a023c2ff1ef9fdca01f1db3dfad8c4e0aa914f84b42f4bfa9fd4be67c5fe864166d62dfb779aa106f7d99866384f13ed8c6dc34ce9a950f9778d009fa1b8936a67403211d4bc8f99da77f0f82cad1e3e4f594ab7cd377fed95e720dc1acadd0d75d415b0d5bf1257c0c6ee78eb09973cef9773d3ca32 -Msg = 61 -Sig = 3b06ecdd187c947f9007f0c4bb77b1ea60898bbe426505fc9200e09e2ae7fafd8d563c92b57755a6e62dbd7232ebc59158c267bd965ce39e24bb795f819e92a6a5a1de2a1f164353583908b74878e8042e488041d3c9122e8006452544e1bfd279295ede2cbb02334e9dd818cac7b6561d4123898bddd29e9c59843bec5771827e95541bbb82e9e1e9bc9c5d4da43d756f35ebbba0b31d41ca446b3d1be046e062be0a2f585c9ef7764faa71d178daeb153f35ccc9cda28ca40453ea09e3eb7a0f77cff09fe074903a07856ef24a158786d417593c6e9d6d024da4fd7d9bd5eb6262810093e5bf9d250a84fa431f6a36ec713b7b0c8f7df2a551687129a9f1eb0a034d350c30c715d515099f2ae7094a754220f7403b04641b8a1d1e4c5a0fbb0082ead3620ebc21baa06daa561440f43d53baf6ac8ee413935ba1dc2af63bb34abc87e669ced4bab9bb40e4cb7c4d8c136a70a175e55e022d66ac18b43355faaf55ac73eab3f59019e522c4967c492f11a9e80305fe37bc643e2ef61c583d60d9c2afbd1dca9e40d2e66e077c3b2cb4a574f6b9c73fa6ed6aefc03c0e39632529cacab6c1fa6dbd645a6bc05a5b8e91f90264f404bde99fb538bee7ba15624e3790bc088c2a0a27d5dad111802a167d181ce930bfa2f1f8b90e5643f55bea1e0edd57b0997a5a84b7e36d5b107913a2b503edc2093998ca2fbc2f2a085d341cbf -Result = Fail-Invalid-Key - -# Invalid key, halved -Digest = SHA256 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201000997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8 -Msg = 5af283b1b76ab2a695d794c23b35ca7371fc779e92ebf589e304c7f923d8cf976304c19818fcd89d6f07c8d8e08bf371068bdf28ae6ee83b2e02328af8c0e2f96e528e16f852f1fc5455e4772e288a68f159ca6bdcf902b858a1f94789b3163823e2d0717ff56689eec7d0e54d93f520d96e1eb04515abc70ae90578ff38d31b -Sig = 6b8be97d9e518a2ede746ff4a7d91a84a1fc665b52f154a927650db6e7348c69f8c8881f7bcf9b1a6d3366eed30c3aed4e93c203c43f5528a45de791895747ade9c5fa5eee81427edee02082147aa311712a6ad5fb1732e93b3d6cd23ffd46a0b3caf62a8b69957cc68ae39f9993c1a779599cdda949bdaababb77f248fcfeaa44059be5459fb9b899278e929528ee130facd53372ecbc42f3e8de2998425860406440f248d817432de687112e504d734028e6c5620fa282ca07647006cf0a2ff83e19a916554cc61810c2e855305db4e5cf893a6a96767365794556ff033359084d7e38a8456e68e21155b76151314a29875feee09557161cbc654541e89e42 -Result = Fail-Invalid-Key - -# Invalid key, last integer value is malformed. This is designed to test the -# error handling, particularly that we properly free the `BIGNUM`s that we -# created prior to encountering that last integer. -Digest = SHA256 -Key = 308204a40201000282010100cea80475324c1dc8347827818da58bac069d3419c614a6ea1ac6a3b510dcd72cc516954905e9fef908d45e13006adf27d467a7d83c111d1a5df15ef293771aefb920032a5bb989f8e4f5e1b05093d3f130f984c07a772a3683f4dc6fb28a96815b32123ccdd13954f19d5b8b24a103e771a34c328755c65ed64e1924ffd04d30b2142cc262f6e0048fef6dbc652f21479ea1c4b1d66d28f4d46ef7185e390cbfa2e02380582f3188bb94ebbf05d31487a09aff01fcbb4cd4bfd1f0a833b38c11813c84360bb53c7d4481031c40bad8713bb6b835cb08098ed15ba31ee4ba728a8c8e10f7294e1b4163b7aee57277bfd881a6f9d43e02c6925aa3a043fb7fb78d0203260445028201010997634c477c1a039d44c810b2aaa3c7862b0b88d3708272e1e15f66fc9389709f8a11f3ea6a5af7effa2d01c189c50f0d5bcbe3fa272e56cfc4a4e1d388a9dcd65df8628902556c8b6bb6a641709b5a35dd2622c73d4640bfa1359d0e76e1f219f8e33eb9bd0b59ec198eb2fccaae0346bd8b401e12e3c67cb629569c185a2e0f35a2f741644c1cca5ebb139d77a89a2953fc5e30048c0e619f07c8d21d1e56b8af07193d0fdf3f49cd49f2ef3138b5138862f1470bd2d16e34a2b9e7777a6c8c8d4cb94b4e8b5d616cd5393753e7b0f31cc7da559ba8e98d888914e334773baf498ad88d9631eb5fe32e53a4145bf0ba548bf2b0a50c63f67b14e398a34b0d02818100f364e16ef12017ec95b192308c01e087cee619ab50a5d537cc01841dc92b30bcef0d9f2c6bbd5dc10bdf5b9f6c354a4f9f210520caa72b4f5c36b8d33f10324c55956141891e45b84b49f59ea5bfac6ffa38900aca5099afcd02f6a8257c41ce5bb2e4153832b5c22f91eb389fa2035c3cf9b3374531c483cb30ceb007259b1d02818100d95c0995fabdfcbccfe63e0f3262f806869ab571e1793e97234cbb9bd4b6872a7695389955cf6ce7245345a5df8021f7d9519563afbc2667f5311fad093de2c02cd069109b630d68e3bf767f8a788a6add7ab199f2d8f6a40b7c1910d9dab52ac80d0d333aacab321a9309dc884ddd4db637a0c1115ae3c08efa683f99eb733102818100d4f7ef9f9be947ba9d1b3bce59e5608839a1e464553e1b6d113d0f636758bbb473a89f9949836ead40b6f314eee3ac2244d7b6f379e83f30e17783ad68d5086897889c051c26e1558a4a220bfc242995860644b5d7a3ef513ac612b9c6c0a2021bb6b9cde7dbd21fe5858746c79563e9bab7d06b43aab43a0a5cafab4519a6610281803db2386f174f2ea3ef4b6bd1601749ce2d6afa8be35f051178621f16a23ad36eba03c073136389241969e5b87edb0fcbcf1a0bd6e1aee97bae1f2d97aabe19b17dbe7d9492cdb68a0897f572350e846c669660dc978c5068da598524fca8a136358d3e5f8f6ad5cf78d9089c93f473189162ce0f8c4902a19902b633b3e6926d02818100ddc971183dcf3450c43e06ba2af32379eedeb2d678513fb706b75a006098154041f4b09e6be385d4b25d80ec241c899e4a986a17b0a121daab91a1e4fc5a1802a7074df3fb3f7661f0e1c97799e36d21de937cc4209585db30a56af0a228e001036ed792625e5368ce101574a2e9767f07338949f0afdf358cecd18c6d6f3f55 -Msg = 5af283b1b76ab2a695d794c23b35ca7371fc779e92ebf589e304c7f923d8cf976304c19818fcd89d6f07c8d8e08bf371068bdf28ae6ee83b2e02328af8c0e2f96e528e16f852f1fc5455e4772e288a68f159ca6bdcf902b858a1f94789b3163823e2d0717ff56689eec7d0e54d93f520d96e1eb04515abc70ae90578ff38d31b -Sig = 6b8be97d9e518a2ede746ff4a7d91a84a1fc665b52f154a927650db6e7348c69f8c8881f7bcf9b1a6d3366eed30c3aed4e93c203c43f5528a45de791895747ade9c5fa5eee81427edee02082147aa311712a6ad5fb1732e93b3d6cd23ffd46a0b3caf62a8b69957cc68ae39f9993c1a779599cdda949bdaababb77f248fcfeaa44059be5459fb9b899278e929528ee130facd53372ecbc42f3e8de2998425860406440f248d817432de687112e504d734028e6c5620fa282ca07647006cf0a2ff83e19a916554cc61810c2e855305db4e5cf893a6a96767365794556ff033359084d7e38a8456e68e21155b76151314a29875feee09557161cbc654541e89e42 -Result = Fail-Invalid-Key - -# Invalid key, e is too small (e=65535) -Digest = SHA512 -Key = 308204a40201000282010100d3e94ceebdf732da0040d4ac1b3cc89b81718abfbb5661a516c4395d4d01689db558fe2dd875a36dabafa81b532bcd3edfc126e60d3acadf8505a2e45570c7ed19649de601042e10953d40639614437f7e380919c994bace28e249f9f2e28d3fd170faa7245e6836c97cabddeea0bc0c94c16d64348175043c0cf443d4886c39a9faf025e9f1b385a2188f206b726ad34f3a5707804ce448b42b04a25db31888a8e9903f0f842949109e35c0719dbcc2b5d541ffc7f7270fbf912f149ca47e90a4232ca40a87f0a24c37a299f04979553a0700dcb2618f3ca448dcfb2313dc028ee78b151ca7dc46d997cefe5b62b5a6f82535059cf8550d08ecab04956f12df020300ffff028201002e2e83cc82fe83f97a0b9ae4648bf19ba51f2d85da0f3b32bf5ade832dad3e43acaae37f4d2d601ce4891a419eafa8581e072bcb4a295c237616a288390edf00908b37dc3990ecc2d5e8c112f4e5bb63621b0446bceec06c71e1525464bcb7d8e2336b331be616c8174cdc9927fbfb37111a003ad89416de551c7fcfcffed2e4365ce61ea90836505735c36a087d5675c608806e361cbd02b9b5f9d93087fffef5c17d20475ab164323c1b6069dfc3116b99990ee41f6a7230ecf381e838bfc3265857963f92e09e82a658ad054c4593fbb8832d4e6bd42da4d9a6ef365534469c7c8f14843f3f69bb1ab5dd12b4f2150c3c16fdc9201366c910ad19809110cf02818100eed2c519d13351a714b5473fef7921c6f334a099178fe48404a567bb59c125281e05746e188b8eec0fa2f12cda11f386c11ab460de0b37131d1e3bb8ee6ac5bd8de72939d2d0660ba9871e1c96072c8759b36c938308d4876cc9f7df707939b1c1a3a642929a1d0ea277c4e4b217140164cc34d3360072aa55bb1782759e9a5b02818100e327067c378bd8fe8cb78f119d4a4e2abb42caf13aa0693cbb824ff2b0a71230b94e72f3a9ac2beba21707d7a004a6094a95ac891929609c8cbf1eb7fad204a3811da06fc64747451d1500b20a388b4246c63c309b19acbade72218edb41df4525a27d5381140918ac68153e2d3924f604cac5e0202922e6cf8d6bea7491e8cd02818100ea2f2a601918515b0c9345aea0fa01eedd0d29bf076fa9dc7582be17dd7c57718bd1991a45bfae267b039b4c3c28f259c6d77c52b04ce38feb8f3ed2f6eb3d4cb9dfb2b65bc3a0b37430e7e1a3a63079f098f6422330ddc6a09d336115e4944d3753352c6078ea92f2362f110709d431aa0e3ea2918845f7f8046a73e0d523e30281805a268208642fc360e107662ddac32d02c06e056a7bb7cf1baa6224ceac8c2a9342cdf60acb9c20d6579d4d790f7987c26dbd0e4343209ff92110a66898525baba3547e557a5d1a14f6dca1b04a20b4dd1565979ebddc915a86cc803feb21f296aac344521d2729b7557b7011aa123cce63bb40fcf0a063fb4fd026e92606621302818100cc847aa3a8851bdb581b1fc9926abe2760d1fa47b5993e6ff83a4abf3827252e0bcca53331eaef1eedd83bad6cf10327ac573043bb87d822a91c3c5d35989c82a00bac71f2b879d2f0c7efa582d2b3498bc190386f90f02e4a6b5166010439fd7070aca790b597ead9188e295789ac2bfcfb6ca039f235dcd0d0a7c197bc84a2 -Msg = 0123 -Sig = b62bdd9c87f8f409178a5155768b536c1341f52a28c881494baa80b39f4a25a841f664eec49a464adf3cf5c920975cb83de4b06f0c7740685f0174627fcb4d0511bc6a25d473952c33fa5763a8e9bdd00bcdc1e4e5881d061193d77335d7e245987c9333455c9e1a2f0ff45242cff45cbd9ab8859d1c81dda62680ce388caba410be15bb40c0a66ea3a4ef07a3fb1f0f66c656c754dd3b15e694902ea79d1d0496a83408bdc2e94b7bdfef5883fe748ed50027ce0f35380dac8245e042ccdad69cd98440a2f77085a6d02d097f6ef650400b7eb469b9e6ee5284c7c7aee8e6365731114490dffadce428b2d16dd086ae0ef350f8e9dffe22d63203d891394322 -Result = Fail-Invalid-Key - -# TODO: -# Invalid key, p & q are too close -# Digest = SHA256 -# Key = 308209270201000282020100b748949450eb0d3c045a8d34aad4e9c142c4eefca9486ca360f6351ecac183f232604aa81a32d0a5d62fc28d3fd2e1fc2e3e097dc2f53a7929574c46397eb666670d1be2e590f3962982aaf674f7cf345f2d3fc6aee1819b8140e9f97095a75320d5bc3c4e22f4451d4624cb42e9185281383d239b2db3128871a35f5bf02e804206becae433073d987fbb52870a1942c7e449aee9c757ac35c0f34d6ffbd535497dc08fc74fbf314fc5a9c2e98eb6db5ecd231b16196fc346346fd345347d6d3a84c5e98c57e5b39e8baf3573d7bc99f35e725011410ebe60616c1286dbe0bbbecc2b6ac73a2e2e16cdb79e49455d94f5796f353e02548bb5a500829271345ba941471ea5fa87fd36d7aeec29b159f1c0c7e7bdbd5599f4d3ebdcc7e46e37323ab81682d661a8a9cf88b2a1a09ea5fdb0e18745a3c63f51b31ad466617821796c53ba05e34b4e9a1bebb43641cc2fc63e295b6f5d8dd8bbc24568e504789a03bb6a7468c76036ede826f2c96aadb2c24e720906c215e48abdf0f10570aaf09778ef80758c2de408bec35937884d96f50757b29ff4f82824daccd2d4fc174929eaa66fbf8f3a669455db24f54bedfa74f388e01e5d5f6d51c49376ac529634e3be3fe134660eb453e9f0466446768ca1c4a7d854c9ed37b91b81343bde5b136ecd31cfe53c2d7c3b0e072736ea6d24903b228d814ed99e9b78796e148d0456f502030100010282020010d03bb10f6b409f8cd6b1b56f2670fb25a0e33b925bee7b5e5db7a9c777d11edab832a111263035c65c4340a9e6328cebc10d25d8489ec096a6477cf9b142124ac9cd11177620a259d47ed2751076959b558f502ea2c93cf6b279c4442bb659cddd4d934aa7b238d4e2a6656f11eb05468d5e2e7201d3379404b8b3fabf21c4ea49ac1ef8a825b5e4d372dfb33b9ded9e60b6d1b0e874867bb7e399eaf7f32b1c3ec8f767954d38bcd4a92a143adf536872f1117f097e532f9187e09dac9f04f22553f284c95b6d0ad24d945db820b90eb64f4e4106f2cf4c1023d5df41347084a43e27617758dd29825da1cb9eed62c8d206fd9f5e9f5ae1a2ed550d120d7763657bde6ccc337a623709e0dacdf98d26ed746593dea884ab3058f1328ef36e47ef6c104512afaaa1a2c00671b3178f9e4dd10a7e162ddcbbe009e39ac19e286742b5cd85c355a321b1075b61d7ca84fae50170817f9f512f453c58db40217013b24d1b8f569d6fbfc054f135e8fd5accc37d541676247c1723f26b15d7c98f97f2f56cd29b08f4b8e8d8c8d17167dac3dabe875cddf50ad8bd86330753d98613a36455eb5aeffc97ee216c533ce3fa4a5b0867ebda1a07746984881aed86415ee89f0617b43a9926d94eba3a6fcda514aba0ab0762def92f6ca30897e9a4941766c2096e794a935ddf30df230811ea59a355b4456f06e6544b5ac346a39d810282010100d89c9114d87810961378876909759f9ec38cc294f150180567faf3fa709810ed2f1f52a0f28977e6d8d58436605f7a741341f0413ddc0e6505e7e7d2afdb62ca901d525c75a1a9e377795243212c0121db3fadc53f0a5ae4205c32b31223d828c2ea85b46141ce004bcad0bce06288394077a72efcac5a4aea204b39796c22ce2c7ceaa53a15ad61804e642f389b70c6bdce3438bde7daa7ae1db4849adabdbfc54309b0185492003f7abe5ef4ccc3d892dcbc4d6e5861a2463fa9968e58dfe04d9fba774f40df95be126b56bba14c57fd0dce0be7a5e8c33591e15f46d921866eb65781d9d0b75f9ab7a3501735c8e7a2a4325262e23e1264d2f66e3a1929d90282010100d89c9114d87810961378876909759f9ec38cc294f150180567faf3fa709810ed2f1f52a0f28977e6d8d58436605f7a741341f0413ddc0e6505e7e7d2afdb62ca901d525c75a1a9e377795243212c0121db3fadc53f0a5ae4205c32b31223d828c2ea85b46141ce004bcad0bce06288394077a72efcac5a4aea204b39796c22ce2c7ceaa53a15ad61804e642f389b70c6bdce3438bde7daa7ae1db4849adabdbfc54309b0185492003f7abe5ef4ccc3d892dcbc4d6e5861a2463fa9968e58dfe04d9fba774f40df95be126b56bba14c57fd0dce0be7a5e8c33591e15f46d921866eb65781d9d0b75f9ab7a3501735c8e7a2a4325262e23e1264d2f66e3a19287d0282010071abf816d0627191d035f8198ef54306b5e83054a92e36ecdf5c3a9cba6992b8657a328a73bce0472c932006c91c51ce882c9a40228e509f8331e7de109b3884c48c1ea496b677c8fef193d1d69e9919834d2f8bcb414be15b7a06c1224bdd2bc6ddfbbc652d7b457c80ba79e3e6d145fa26d07d3febd2966db6f4c2fc8d5ad687522670fec25172513ad22855b47cc24ee8df4ec799dc8d123a5479222a985902d3e3499dfb03834dccc40a60bcf429bb284b48f7173a654628327ee7c48bf7d1c478be13c11f941d62dd216ee57e82ce316867a6f0d1ed5f3766e5f0f0113fd2e9ad925f13c0a75331fb6a14440d62415f9968d2ab97975f81b600b24c724102820100611e91ce0ee0864f439b9edaf16ad38e938ee10f76c2ba8272048aaf971c173ac10e023637887b41fda67e09035ccbc28f7fd900e7836ad0d0bd11abdd3d38262a477b4e094fdaa42a453324f6128ccf69463bdb5c50804018623e391bc106820022b6a0119b3789da71acf58285ab1e4051659c239e033de38b672ef5ca0e30f2b16f63758f92954cb9d92172f7feb09d197f4091a50adc73accdeb46a31cc086e96fc68ca21e740e0232a8d0899ea5d3f3345a63472d3f5ccfde71aa911e8fab3e1a94b3ec1a53414d70e30a6d5f9573d864b1e1c2f981ccdb03797c828e0d80463125ff4b1d6cb829ee0752e0c29b58c8d5e72a7ed5e5d95edd2ebecdd8e1028201000f8fa951ae728e6ed3ca21449a6d3b4876820526a76797cb6c405f811263333d2d50f67cd983fd9443124806d9506c1b7715a81074fee39bdae8333a89b0dd2a8186852e5dc8abd639dec8da27e678b99ac8fd090543afb995737f3a793611bc4ebcfc5d2469824b0e45be13742a638886d692a189530099fac01cf1bcf3e80483322b56e77bac1673e2523b4ce4e9f0da24259733e540fecdfac7154bdc384c4e2bcdeff5fa4e2aaf3a1aeade1789a7d595be144674b1ae3b7bbef1119518e9200f2724866ddb18bbffda1a17c72c791462d4afef89b63d1aa72b68af054cb50f4f4e60de5c3c40fbaa9e1f8032356bdbde2fc0c4e5961d4681e9faad5e7f54 -# Msg = 68656c6c6f20776f726c64 -# Sig = 5d449a4826dbac7da405ffa5eaa8b140aa0980d2a458ddb23f03702ce2c2b88c75155ade558d5e8a1a386fb49d9b93f202bf17f3e76a5be7640fec12f046453ec8000ee15e65efff8866610c51cac55ae8a5585c2f637db4be528f5eb5d71a5439c2ed908704a75453134673273e1420b90da80ca6705e4244b876947af66a64c409b41e6137243c1da35b3341b6f2f02083af264bb233832341aa0bd38f83eef03b720d36982142171e18c3736641f059c632effbe65f233ffa8ed45fd964f4e674c3b337d9ad7088547b2153d5d0b93a4c6531c3572669c30e90b79ee8481a197022ed9cbc54722b9bd02d74c3f236840656aef762e38638b82a97ee45d4952cd09b86d33cd5dcb57fd03d4a53b7676278f29809e60cd980788fa8ee504b82eb476e3dc9f231e0a62984c4cf2149d2f5dc382882cc826ac9d0e9f9af1c0f47010f2b8a75520fd95f60ae538d47361b52b83e1befdb0545d45ca4bc33bcd0a14334f9f1377ed6e419aab4cc77f73378ff8cb44f5f6a17ed3a0e0b079034471c8a107e96fb5d2074e570678e9cfd5eeeed09302cc4259cbd279dcc352acd958045dea17ed027e827ddf9ddc862fbbb2fe8aeb440248138eecd8ba2d3114e96e6242692aafe282133d3557c3d71768008e41bd841b44d7c5a8af2821f4c40de975bffb2a3e6e0c0ad1ec597c9d3c44c9f837a60768f689de7103ce64ac3dc525f -# Result = Fail-Invalid-Key diff -Nru temporalio-1.3.0/vendor/ring/tests/rsa_pkcs1_verify_tests.txt temporalio-1.3.0/vendor/ring/tests/rsa_pkcs1_verify_tests.txt --- temporalio-1.3.0/vendor/ring/tests/rsa_pkcs1_verify_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/rsa_pkcs1_verify_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,1338 +0,0 @@ -# Variants of NIST tests that test edge cases. - -# e = 2**32 + 1 (0x100000001). See https://www.imperialviolet.org/2012/03/16/rsae.html -Digest = SHA256 -Key = 3082010c0282010100a1a78a0092878cb43263b218d75fc924e915ae80f1d32cd9db690c1c7cf6942ecdb54c0357e0a55f959d53562d1f89abbd59bc24a03557b068449d0753b927a5a68921281fb92e61050fe838136ddd910ba13cd71b31045823b53d0a96e19ec97bd8dffb9923743060f84d6aabbdb44eb0470b34dc3223a91b9e79f68cb86ba616aa5e62ead9627eccc110a72e2b03879c360bfcad3ab0e7f3184e7ac154ee2803b2c7b57824c2fe54f600668087cba6778fdda5bd8dc1a60af7295a8c793520b0f02e35d16ef58e563b7929cb7045f9528e7a335888e5a2ad4a9f7539209924299f7640443bace8c643cf73c249fd43d616f111450baa403a9a8ce118af5e6902050100000001 -Msg = "" -Sig = 13b1addbef54e405580c0df21429fa030f3edfc7f7bd446907626d1e73e69dee8f5a2f1614f548e58b684da033dd8fbb7e9616408e1d1318698d10d536c622237febf2fc73d64718e791192d5c38326217cbfaa319e5fc1ce8cc4685d7d2f0b77c22fb11a0ce00467fbb918d5d0bf6926dd6b3bceefb15040f153abe5e3eb9c6ec80fe1064db69b332bf70cbeb2a483afcb09237420e1413941e2f71650cc393800efba739fecff9bf3a75b9ac88de483af0a0ee08d1a09f1de91f342017c53745fbe658a5980926ce56c14df45088d92e0bba61f16b8847d74f3fc707c60ba82af29face1c5269a54d4185e8efce9e566c3ca0c202ac1a4cc180d5320bf599a -Result = P - -# e = 2**33 - 1 (0x1ffffffff), the largest 33-bit number. -Digest = SHA256 -Key = 3082010c0282010100c2bf9ba415d7c612933ef42f350e621e12dc92cf9f1ab8c4697208e22643d96c0be81a3cb1e841a26b73d354756d3c00e83244b367ee63f171497bf1859841afd35edde7aafe6ceeae279b6762a726c67aaf19506590803c53a22f661496532c90d3969cd44f020290ca91ce9296120bc88d40d7be403e5e3ccc39ba177bfa5fa2f7828bec5e708cdaa1fc8cae1b26f63aa30178bb86ac25e1ee1877c17f37b1428d7125ffb6296098d4c72f4ff2460fd52cf8aa6988eb7447a638a9044969519c60b8ab25b56503708e450fb5af32248932730c261d0d76623c2dc4f75bbb77fe6c3576b2dbec3020d2c8433bef402e2172a243420163319a930997ef5a47e7020501ffffffff -Msg = "" -Sig = 0a5ce0746f099812045cb79a4975cd1a5b60dabc7031cbb36395afb632c600db13aaba61b601219dba672d2dd100b06f270eccb41de0a22542222c05c9fc86f6ece18e25b287ce69fbd5544967a5eb2aa633b9f940fddfb3eb18d5de0966e74be2992db44ad80f96e86ac9c8d06e3d0d0fd7b02f61b706cb59f334a721b5bec83dd941dfd029208d1db617adee196af6f3f23bd46344c97be6697f92ba6bf72d5c404dfffb0d47093cace28b99a6733d442137eb7a4c50c9c4beec38520978743679618a4b8def94ba246bd31c96bc84837caedb2b282886fdb0a0173e2e15c850641de49149fcc2d965891f641f21d401fabda0a7e96f6e5565da4d979871fa -Result = P - -# e = 2**34 - 1 (0x200000001), the smallest odd 34-bit number. -Digest = SHA256 -Key = 3082010c0282010100f29f6bb9c42e2025d15701b7278a301c92162928265ff63d08ec7c41467303159ca453cebc5709b524a76009203b7871464178497d6739d291e7367a1943f0d38b643fbb78e204c2afb99709b579f033e85e181dc6fc6c5ba20a65c5dee9ad7c44085f34fe13192f1be071fbeeabc743ef16b0e19bde382549090f200503c670a63c895b4a3a8f3fe6411b574d89d3b7b0e57f9922df070620421a1e55acc5557aa35671503ac0d21c64af1840fe4c0ffc9e21b3774f3583ac32c5481e3df8a85b79cadc5bac78bc0a37a08b0d51b147d31a6108af6c42a4738b3657b8fdfaa0a7f90f674771987c19d1be67f45ff14aff1adbaef2b9f78d546559cdc0b8d8c902050200000001 -Msg = "" -Sig = 28b85afb66dcff685336be3b7103283d3ea74d38928092dca582188816d59afa25d26d1cc9b8c67de01dd9465475601c9ab7b980f129652a76556b6245b178e4ac52660153ebfc2939ac08ca5ce5d8dae7c1b50f98d83c3419ff2b000bd2e0d2f6dc87539f42248bd4de80169e7015d9cd2184887211414d48a10f4eeaac7968ed1d5d3000bcc73fbf4eacb1e2a6db87c6879e4382e01f46a170cfa60b682af0af7701a40b3eb08e927b8a461dfabad72bb7fdc7769cd188c4ed103eb8ef49737e46e1c48157758f0461eb1ec113ce81b0eeff54743178b8a1b95b38ed7f24a550fcf8d042fe5c0ee0b9aa7d5bfb14c5e2cb5e81772e854122b1cdfdbec12f67 -Result = F - -# e = 3, the smallest accepted exponent. This is also the control case for the -# following test cases. -Digest = SHA256 -Key = 308201080282010100be5b5613b7872a0cb3e0fc3908d0eca9fc9c37887d6262d315c7425f300c56413c18e033f2295671bb843525898d32177edd206543d4fb68ed726ce7c3ed26dbb7ab39caeda2fa51f1f168b10ae7627d25cfa51660e7d599c9f2e1683d184388caf55c20c1a9f691ec325f7a5f89bc3e9c8a5a8620abb73070226ffd24fca570c6c002f4deffa80e1620b131efb195094120ab9a518f0dc974ad4ef63e32ea5b1f95030d04e243a986bff7be7bf3e0c8d2f03b868844beb5fd040db42967d2c2ad873867d9fd6d26f129b7ca3afc4eeee783127dd5a2f3828ec4f123de16871927963e2b5626114fe9894e1ce6365c80d7e2ec7b50ee0d04952f055b3831e1fb020103 -Msg = "" -Sig = 21f1d78d3d3d02eaa30886356f494fd4ce060e12cf4a808c3a4a8011164f948a1b15414f6fe0bafb174468e632b7b843059dcaa2d915028fc79e3252b79060801373a16b6d26e5bc399d66201357f284ac822544176f5d7bbcc402be5335d221deeb2c44ba1cc908e10340056b521a0f965b373cc042dd2b3e3bef68213cd526c78f0a5237a7c1aa74989d86420d0a0cb639362e2f49182e1c4c603e7dc1b494efbc581caebb03fb633720b643e72d524c8403e500f5a7be5caadf5ed0a9653a805df917d0dafc4e589e26373a84970ce6905359ae981bd3d56699132be04dd3ce02bdaa399737ef79c2f3352f4f4ab8ac1f0954111dfdd7fee5655aa408774e -Result = P - -# The public key was tampered with so that e = 1. Signatures are trivially -# forged, since Sig = Pad(Digest(Msg)). -Digest = SHA256 -Key = 308201080282010100be5b5613b7872a0cb3e0fc3908d0eca9fc9c37887d6262d315c7425f300c56413c18e033f2295671bb843525898d32177edd206543d4fb68ed726ce7c3ed26dbb7ab39caeda2fa51f1f168b10ae7627d25cfa51660e7d599c9f2e1683d184388caf55c20c1a9f691ec325f7a5f89bc3e9c8a5a8620abb73070226ffd24fca570c6c002f4deffa80e1620b131efb195094120ab9a518f0dc974ad4ef63e32ea5b1f95030d04e243a986bff7be7bf3e0c8d2f03b868844beb5fd040db42967d2c2ad873867d9fd6d26f129b7ca3afc4eeee783127dd5a2f3828ec4f123de16871927963e2b5626114fe9894e1ce6365c80d7e2ec7b50ee0d04952f055b3831e1fb020101 -Msg = "" -Sig = 0001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff003031300d060960864801650304020105000420e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 -Result = F - -# Length Mismatch: The signature was tampered with by removing the last byte. -Digest = SHA256 -Key = 308201080282010100be5b5613b7872a0cb3e0fc3908d0eca9fc9c37887d6262d315c7425f300c56413c18e033f2295671bb843525898d32177edd206543d4fb68ed726ce7c3ed26dbb7ab39caeda2fa51f1f168b10ae7627d25cfa51660e7d599c9f2e1683d184388caf55c20c1a9f691ec325f7a5f89bc3e9c8a5a8620abb73070226ffd24fca570c6c002f4deffa80e1620b131efb195094120ab9a518f0dc974ad4ef63e32ea5b1f95030d04e243a986bff7be7bf3e0c8d2f03b868844beb5fd040db42967d2c2ad873867d9fd6d26f129b7ca3afc4eeee783127dd5a2f3828ec4f123de16871927963e2b5626114fe9894e1ce6365c80d7e2ec7b50ee0d04952f055b3831e1fb020103 -Msg = "" -Sig = 21f1d78d3d3d02eaa30886356f494fd4ce060e12cf4a808c3a4a8011164f948a1b15414f6fe0bafb174468e632b7b843059dcaa2d915028fc79e3252b79060801373a16b6d26e5bc399d66201357f284ac822544176f5d7bbcc402be5335d221deeb2c44ba1cc908e10340056b521a0f965b373cc042dd2b3e3bef68213cd526c78f0a5237a7c1aa74989d86420d0a0cb639362e2f49182e1c4c603e7dc1b494efbc581caebb03fb633720b643e72d524c8403e500f5a7be5caadf5ed0a9653a805df917d0dafc4e589e26373a84970ce6905359ae981bd3d56699132be04dd3ce02bdaa399737ef79c2f3352f4f4ab8ac1f0954111dfdd7fee5655aa40877 -Result = F - -# Length Mismatch: The signature was tampered with by removing the first byte. -Digest = SHA256 -Key = 308201080282010100be5b5613b7872a0cb3e0fc3908d0eca9fc9c37887d6262d315c7425f300c56413c18e033f2295671bb843525898d32177edd206543d4fb68ed726ce7c3ed26dbb7ab39caeda2fa51f1f168b10ae7627d25cfa51660e7d599c9f2e1683d184388caf55c20c1a9f691ec325f7a5f89bc3e9c8a5a8620abb73070226ffd24fca570c6c002f4deffa80e1620b131efb195094120ab9a518f0dc974ad4ef63e32ea5b1f95030d04e243a986bff7be7bf3e0c8d2f03b868844beb5fd040db42967d2c2ad873867d9fd6d26f129b7ca3afc4eeee783127dd5a2f3828ec4f123de16871927963e2b5626114fe9894e1ce6365c80d7e2ec7b50ee0d04952f055b3831e1fb020103 -Msg = "" -Sig = f1d78d3d3d02eaa30886356f494fd4ce060e12cf4a808c3a4a8011164f948a1b15414f6fe0bafb174468e632b7b843059dcaa2d915028fc79e3252b79060801373a16b6d26e5bc399d66201357f284ac822544176f5d7bbcc402be5335d221deeb2c44ba1cc908e10340056b521a0f965b373cc042dd2b3e3bef68213cd526c78f0a5237a7c1aa74989d86420d0a0cb639362e2f49182e1c4c603e7dc1b494efbc581caebb03fb633720b643e72d524c8403e500f5a7be5caadf5ed0a9653a805df917d0dafc4e589e26373a84970ce6905359ae981bd3d56699132be04dd3ce02bdaa399737ef79c2f3352f4f4ab8ac1f0954111dfdd7fee5655aa408774e -Result = F - -# Length Mismatch: The signature was tampered with by appending a zero byte. -Digest = SHA256 -Key = 308201080282010100be5b5613b7872a0cb3e0fc3908d0eca9fc9c37887d6262d315c7425f300c56413c18e033f2295671bb843525898d32177edd206543d4fb68ed726ce7c3ed26dbb7ab39caeda2fa51f1f168b10ae7627d25cfa51660e7d599c9f2e1683d184388caf55c20c1a9f691ec325f7a5f89bc3e9c8a5a8620abb73070226ffd24fca570c6c002f4deffa80e1620b131efb195094120ab9a518f0dc974ad4ef63e32ea5b1f95030d04e243a986bff7be7bf3e0c8d2f03b868844beb5fd040db42967d2c2ad873867d9fd6d26f129b7ca3afc4eeee783127dd5a2f3828ec4f123de16871927963e2b5626114fe9894e1ce6365c80d7e2ec7b50ee0d04952f055b3831e1fb020103 -Msg = "" -Sig = 21f1d78d3d3d02eaa30886356f494fd4ce060e12cf4a808c3a4a8011164f948a1b15414f6fe0bafb174468e632b7b843059dcaa2d915028fc79e3252b79060801373a16b6d26e5bc399d66201357f284ac822544176f5d7bbcc402be5335d221deeb2c44ba1cc908e10340056b521a0f965b373cc042dd2b3e3bef68213cd526c78f0a5237a7c1aa74989d86420d0a0cb639362e2f49182e1c4c603e7dc1b494efbc581caebb03fb633720b643e72d524c8403e500f5a7be5caadf5ed0a9653a805df917d0dafc4e589e26373a84970ce6905359ae981bd3d56699132be04dd3ce02bdaa399737ef79c2f3352f4f4ab8ac1f0954111dfdd7fee5655aa408774e00 -Result = F - -# Length Mismatch: The signature was tampered with by prepending a zero byte. -Digest = SHA256 -Key = 308201080282010100be5b5613b7872a0cb3e0fc3908d0eca9fc9c37887d6262d315c7425f300c56413c18e033f2295671bb843525898d32177edd206543d4fb68ed726ce7c3ed26dbb7ab39caeda2fa51f1f168b10ae7627d25cfa51660e7d599c9f2e1683d184388caf55c20c1a9f691ec325f7a5f89bc3e9c8a5a8620abb73070226ffd24fca570c6c002f4deffa80e1620b131efb195094120ab9a518f0dc974ad4ef63e32ea5b1f95030d04e243a986bff7be7bf3e0c8d2f03b868844beb5fd040db42967d2c2ad873867d9fd6d26f129b7ca3afc4eeee783127dd5a2f3828ec4f123de16871927963e2b5626114fe9894e1ce6365c80d7e2ec7b50ee0d04952f055b3831e1fb020103 -Msg = "" -Sig = 0021f1d78d3d3d02eaa30886356f494fd4ce060e12cf4a808c3a4a8011164f948a1b15414f6fe0bafb174468e632b7b843059dcaa2d915028fc79e3252b79060801373a16b6d26e5bc399d66201357f284ac822544176f5d7bbcc402be5335d221deeb2c44ba1cc908e10340056b521a0f965b373cc042dd2b3e3bef68213cd526c78f0a5237a7c1aa74989d86420d0a0cb639362e2f49182e1c4c603e7dc1b494efbc581caebb03fb633720b643e72d524c8403e500f5a7be5caadf5ed0a9653a805df917d0dafc4e589e26373a84970ce6905359ae981bd3d56699132be04dd3ce02bdaa399737ef79c2f3352f4f4ab8ac1f0954111dfdd7fee5655aa408774e -Result = F - -# Length Mismatch: The signature was tampered with by making it completely -# empty. -Digest = SHA256 -Key = 308201080282010100be5b5613b7872a0cb3e0fc3908d0eca9fc9c37887d6262d315c7425f300c56413c18e033f2295671bb843525898d32177edd206543d4fb68ed726ce7c3ed26dbb7ab39caeda2fa51f1f168b10ae7627d25cfa51660e7d599c9f2e1683d184388caf55c20c1a9f691ec325f7a5f89bc3e9c8a5a8620abb73070226ffd24fca570c6c002f4deffa80e1620b131efb195094120ab9a518f0dc974ad4ef63e32ea5b1f95030d04e243a986bff7be7bf3e0c8d2f03b868844beb5fd040db42967d2c2ad873867d9fd6d26f129b7ca3afc4eeee783127dd5a2f3828ec4f123de16871927963e2b5626114fe9894e1ce6365c80d7e2ec7b50ee0d04952f055b3831e1fb020103 -Msg = "" -Sig = "" -Result = F - -# The signature is a valid SHA-384 signature and the validation is for SHA-384. -Digest = SHA384 -Key = 308201080282010100be5b5613b7872a0cb3e0fc3908d0eca9fc9c37887d6262d315c7425f300c56413c18e033f2295671bb843525898d32177edd206543d4fb68ed726ce7c3ed26dbb7ab39caeda2fa51f1f168b10ae7627d25cfa51660e7d599c9f2e1683d184388caf55c20c1a9f691ec325f7a5f89bc3e9c8a5a8620abb73070226ffd24fca570c6c002f4deffa80e1620b131efb195094120ab9a518f0dc974ad4ef63e32ea5b1f95030d04e243a986bff7be7bf3e0c8d2f03b868844beb5fd040db42967d2c2ad873867d9fd6d26f129b7ca3afc4eeee783127dd5a2f3828ec4f123de16871927963e2b5626114fe9894e1ce6365c80d7e2ec7b50ee0d04952f055b3831e1fb020103 -Msg = "" -Sig = 2c8b7d5fc1db73df3bf806af732324c19c8374d486848aaf3f3e8f81a89f425987684d4af644d953046345b7ec65022c8658dc144aca59de421de359c54aac4f625f85a2f2092ca3cfff99fb179d5057415cea4b868fa047045071a75b9de26e9a09c69b2d545fa5f8a8d63486a17feab184f8a227a7628d5a3812b66da388fc20cd96df69a6a59da154c0726828588c7df9abdc64090e40a62c8396ceb84067f637680625732e9dd3b277a366977bb1bddeea2917bcdf259f3ace8162222c52d86e394364e28cc1c57d2feb5e9d9fa4a51b88555b9c40a1efbb6846bf6e9d56ce2a43d32ad767e732c81ec598a1f0217c03c7533099b50dc8d0bfbdabe9625c -Result = P - -# The signature is a valid SHA-384 signature but the validation is for SHA-256. -Digest = SHA256 -Key = 308201080282010100be5b5613b7872a0cb3e0fc3908d0eca9fc9c37887d6262d315c7425f300c56413c18e033f2295671bb843525898d32177edd206543d4fb68ed726ce7c3ed26dbb7ab39caeda2fa51f1f168b10ae7627d25cfa51660e7d599c9f2e1683d184388caf55c20c1a9f691ec325f7a5f89bc3e9c8a5a8620abb73070226ffd24fca570c6c002f4deffa80e1620b131efb195094120ab9a518f0dc974ad4ef63e32ea5b1f95030d04e243a986bff7be7bf3e0c8d2f03b868844beb5fd040db42967d2c2ad873867d9fd6d26f129b7ca3afc4eeee783127dd5a2f3828ec4f123de16871927963e2b5626114fe9894e1ce6365c80d7e2ec7b50ee0d04952f055b3831e1fb020103 -Msg = "" -Sig = 2c8b7d5fc1db73df3bf806af732324c19c8374d486848aaf3f3e8f81a89f425987684d4af644d953046345b7ec65022c8658dc144aca59de421de359c54aac4f625f85a2f2092ca3cfff99fb179d5057415cea4b868fa047045071a75b9de26e9a09c69b2d545fa5f8a8d63486a17feab184f8a227a7628d5a3812b66da388fc20cd96df69a6a59da154c0726828588c7df9abdc64090e40a62c8396ceb84067f637680625732e9dd3b277a366977bb1bddeea2917bcdf259f3ace8162222c52d86e394364e28cc1c57d2feb5e9d9fa4a51b88555b9c40a1efbb6846bf6e9d56ce2a43d32ad767e732c81ec598a1f0217c03c7533099b50dc8d0bfbdabe9625c -Result = F - -# The signature is a valid SHA-256 signature but the validation is for SHA-384. -Digest = SHA384 -Key = 308201080282010100be5b5613b7872a0cb3e0fc3908d0eca9fc9c37887d6262d315c7425f300c56413c18e033f2295671bb843525898d32177edd206543d4fb68ed726ce7c3ed26dbb7ab39caeda2fa51f1f168b10ae7627d25cfa51660e7d599c9f2e1683d184388caf55c20c1a9f691ec325f7a5f89bc3e9c8a5a8620abb73070226ffd24fca570c6c002f4deffa80e1620b131efb195094120ab9a518f0dc974ad4ef63e32ea5b1f95030d04e243a986bff7be7bf3e0c8d2f03b868844beb5fd040db42967d2c2ad873867d9fd6d26f129b7ca3afc4eeee783127dd5a2f3828ec4f123de16871927963e2b5626114fe9894e1ce6365c80d7e2ec7b50ee0d04952f055b3831e1fb020103 -Msg = "" -Sig = 21f1d78d3d3d02eaa30886356f494fd4ce060e12cf4a808c3a4a8011164f948a1b15414f6fe0bafb174468e632b7b843059dcaa2d915028fc79e3252b79060801373a16b6d26e5bc399d66201357f284ac822544176f5d7bbcc402be5335d221deeb2c44ba1cc908e10340056b521a0f965b373cc042dd2b3e3bef68213cd526c78f0a5237a7c1aa74989d86420d0a0cb639362e2f49182e1c4c603e7dc1b494efbc581caebb03fb633720b643e72d524c8403e500f5a7be5caadf5ed0a9653a805df917d0dafc4e589e26373a84970ce6905359ae981bd3d56699132be04dd3ce02bdaa399737ef79c2f3352f4f4ab8ac1f0954111dfdd7fee5655aa408774e -Result = F - -# The modulus is 2040 bits. -Digest = SHA256 -Key = 308201070282010000e9bcb0e5fe68c4ebd4dd299f1434ff2378bd1e5261eda8d7466d41e1485a92118888306dc03a7a448f459556fcc2375cf8ca4f26ad2b4203952b6b60f4f23d834e30f19650753a02e44606f39807d9c1cff27114e76cac6d4ee02e3c68aea27bdf5037ce912212725af0294cf4df5173a61349ddd40f1c21bdd4a876d1b52541e1a784d11e1ca5e1615ba0c8f978534e9de112c379f530a31014425e907c9a881449c90c764f12f9831dda121ea43c7c034f5829ce4fd1445749ee461f72b763b2ab4d0cf838d48140499564985132a69dc537259905cb69dcdc658c593620c26e822ee7414c9adb1132341201689a30efa1ed733a6b5b149c81a87e02ae0b020103 -Msg = "" -Sig = 951cea8d14c4fb4ae98746e4c404105f63e880692584155e7f6aa053e9e897ab07ebabf408860c0c725d454b0d206eec7668382dfb2d005f31182b1836ba1f449eb5dcfe026bc500fbe41250070e8f148bb8e4011a5730d1e4f26b228e484fa8c1211234a2d599c55c678cbed083a5dbe7857caad189cb7dd4ec3db5f16f2bef13aa2c517c3ad13511615c6171ea783c742ed87a9d451a73b968de26c2928313ebab7cabfa824988452cbc606c3968c8c7b41de733d9b6f62425512a64f89cd235681abc8498797980a646c51c3ae5dd18fbefbc813637fc6d633bb799d7dbb3c725b2f16b4b68bcdb5a4a859667f5bacb365a358d9266dd2158dbc1bed112 -Result = P - -# There are a ton of 2048- and 3072- bit tests below. - -# The modulus is 4096 bits. -Digest = SHA256 -Key = 308202080282020100d3f6c3ad0a0d40b3ff8048991b6a9ef9f3255294f0d894a1c8917f36d9490ced4471f75a407d34659f319cf9f7813e0201e2a469eaf9ffbe77c7ccb0347c4e34b130efc740ebf83d6689b8aee89292f94f189c717d0644cde45c147358b7575c5d650de0b5f4d28a1745da3cef185017c88ddd83235c5576ef5280a042782cceb12aab22f12ae1378f46d46310028f45a157846694537ab604eb6edbda4fb5762354357005baa8d0867942dc363d3016cab6eb2c7eb5bf5e184e8f0e2e82eed23982647b6d04237f22dfbfe1d444b7220325acb6cd96d9192a233246c2fd650f9bf193c3143ae0cd7f333118b255fe79fe333afdf84fca8485f7a5b0f69ca2ed3c95af14c6f9ec5e37625a091c9dbdfb46ddf625536d43d10fc97f4e0cc1c828665075fa9e40fb7178eedcec9134b51c6d6d504b1de02a773206ab2d467040001ceb8e18e4ec61d03de82b5cc2a317bacad1229efe228e2ab751616740ca2951b9620536cac4eb36db4c9b24c2e05c6511ee09c7ff9729c7fa27ae10b26b156f15c9fef683f67107f5fefac7fec4084bd8cc535d9c7a14733715ac37bbb5318604905e6dcc48b6c78be0fcadf6466407f0cc6666d46fa2163799c7fdd8518a4e4643dc83c1cf7de96d905233da230ddab73279d526f3ab36d2f63f17001f8f0f8c53ac8767f9ca4c9c10c9a0286f3c9b5d3fe4c314d542a1f54b6be1ff05efbf020103 -Msg = "" -Sig = 1dd98725ea75fd3e262b8b6846be45ced065073ae5c1c98a532467359c948bac4d3ed0876bb46fa450e47f964e5b34f806f8340e7987b83cac22c76eae7ed03f98ee47c18b09e0cdbbda07deb2190c8085871b18ca52ebfa06edd5ce83a4973cbc803879f697313d279f02f36289e382163c6de83327f38452c1018d926ef1b2dd0d3a1bd01ceb06fc7e043eacec0db3786883d5d3a99b6502c24264e96e07731d2efa0b4de4e798553e70523555e5e905148d57a74becc1ca0800927e464cf950376dec0190bfb0224cff204ac0c9f62eb3c1c3ce78563a38cd3d0a20b4cbfdbe48b82c5ef27adb262ba65883bc0b6506f4a0d987f559e73d67133fc009d9062e23866db9928e9b1163681d9012bc6c072002bea9f2512f20fa61d3091a979803036e6deac801772ecec18f153d61d6f93cf01e592cdcbe435bddbc436d462991370de5df2b21a37106f56b60c4ba40965d3b1ecee4d9bfab548b38a1beba4ebfe60af8921d69bedc6e2da548e22e4d7b0dcf1d5c7f83bd4e96835fbb2ed73d6ed411ca042221e3b29a90a46579f76618ad324deff1bc873a1f1e9c727ce4b73498e255ebc8975d5ee3bfb4aa4883a60a33900451e7d51b60d21e68ab4f7e80296627bb405745ac14ae583e1658f3bfaea06385b1527fa4293e0b62beac3439bc8f85a87ead36fe702ab412f78c7e26b0e20ac1dfa1074453f660f7409000fd -Result = P - -# The modulus is 8192 bits. -Digest = SHA256 -Key = 308204080282040100cd39f39b27a2731e7b2fefa1379c55e2a86e3a6b6d623a37fcbc535bc9e6453752a06349a85e4133e5daa6eb322590f7caed50309194ab78c290248a041434abf1fd5cdba1ae2922a5616fcf63a8bd1a806e89dc19237f360752210c1f3e082aa1463745bc6072e6a6051d9168fab0b54ac11d3fac3888306f06d44f31306c7b916b50cab75c7ac9cc33610ba87a61d8bf08e471174b517da710d4d5afb4cbb2aee8104b2a6bc78c5c5d3101447eadee776cc96ad874ed4a2e1e941ff73daeeb6eaf9c7014741d68e7fc6d96038b63f07dc4b0b4eade9b3d6f4edd7e8f1b64606a90d9ee4e221c0fb35dd8cd688a5c60cb4dafd22648a0310b2d18a6a2cbcc30f6444e29d07f179847d2ee802399e4a6d98f688a39fdc667d3ba01cd9681c51172b0fdfe6234a329d8d66dfd7709c1eaaecfd747de069f8bb750f0659020e1530cf10197fe95a0783d6c8651235e65868b0c868a1f10073da972050c0e2db911290e15e1a55da024679d3ea266ba3fdd16338827cd2dfe76e3c6c00f33dff27e6edbae1d2e19f54e0c9528a27a75e1247e25b15fc38465e5d6c42f83d9b2f5ab69090d62bf99cc829ec05ca7a1fe3fd9f24f3c08c4b4d531c30c1693510ddf1ce8f296dc60d3076f971c838bca793a75579d8368ef4427215a52d02b28d760a4ae0801f20383ee241f20170081d432124b80bf98629b40b25cf99a328fba652fe35bf4cf63a3946522c78ae874cb77c95989eccdc91ef39a9ccc0d86897a04d4105617c4ccd7816002d89f8ba94a936e82f8d15e615beb4993c67d5c02d606a8395e7319163996d042dcb086a7171bd2df268e2bf229f16a6392cba67b10deb571d69c73acbeb3d5310e24685e639c1b4a02f32b661c630199d62e53d319f4d64b50f90eb5d582ac200a2989e4eec5deb1c9d936300a1d59682eb483cf43ca0131664f647cf0768f12cfb0ba0dd92631ae89ed702bb485581fa3588bc344de1dd05201ddac68019750ee3ff58cf8ac40d45735f4894911e465823e8f0bc4bd3d0b0ce8db310657648b9dd327295b5a23f45e154be6222249fb07d31e6c251848c87544dbc22d5fa5d3475c1c16bf4407819d27415e9cc62e7057ae3fed23eacfad77bfb87b7dc48e4bc82c18654d09bd969a688a840871c005074507c93149d2aa46133e8c66ed10320fe4cd6e4d4e01331068e5d011ad9a4c94ea91287ba39a0647f70820bfca29693457a7446217d9f225df9ce6ee54c9674cba0e5a5c09ce27b11ff9e8b1f68c517712c23beb8debccc6695229c3415f58a8ab158e280bd4b54a4bbf279336bf1871b3e635910081311aaf713f21f9eef5f62b9ecddc49efb4e0cd686bfd65420e6f11022cd86d237e7414bf077a9f8f7ab210389cd455c6ae580f1c77fdcd1dafaa1a1e1a3726b6ce13f50e7c2617a152d10ec9cb03fe0d020103 -Msg = "" -Sig = 3bf15ae5d08a7eaf53c7e6c0f1a789a197ac9aaea21b6c2a14ea9a6175596c92432b224e9219d68f7d58649c476277d8daf5d2fdc61c80ba6eddc513ea0f91363eb9506621c8b32381ae6d0eda72984b2f450fb1aeb144e6c798d0af5117dd35fc4a27163d258a5b227b9e72b83c4fd72886f616b50d59c0886f6aa291b65b4401dfccb855d697bb7fe9ed7e29cda28df50736d3c2b66cd3a039d2f534b580a00395746962bf8d1af5fd4940975aa6ef17cd11b496ef11c3df9aab7434cf4802aae07976e685941b47df1a7a24d097cb19301cd5362d6d742d0f94f6dce97e54cde999c4dd1e201c867c9fcc46d30295178430c2ed8d0f3699b5cc5a9de3044b7b63430bfce3fd7c333f291a1f31e41c71735df949861d43136356239ac51156cc5d11a92dc3bd2921cd05f785557a24a0148abb9678a93f8082d8624e9289a3294921855a1afae7fc41084b3f03829afa6e4abc9952aa9d07d7495427d169fc47d0739c31d71657d44a40ad17184d3510a4db56b4ab5d277f9814b9568686c0ce6b18ae4d69b0176fb3f5aa6798396c6fd390df61ecbccfbf72fc3fcf34dc737a6a6e22884f677b1645a68f65ccf36c90a23f350947b514f89e1521c329b08d109d032e13f7680a68489c97a7ba6cfe66d37bd3eda7d97adf9d49d1430e07d34279207c98d1a589b7aeda8c45b5bed17a75efed9ca22043d9daba1a024f0816568652baf51ac1c8338036614ac834b0f69c6539eb40396d53f5d209f434ecfc3d56bf8295d247cbdb559725b7eb61fe5a93f6b701a6b86c4a2474dcc1014c0c82041b68c817f12d9ed410f871e227abb3d25b9977c3129f70b4663bec7329930eaff732433e6f5df3506d0f714d6119facac3fee635f1e5641db853307f76723eb459f5969376433a7b3cb688175e5caa5e0472bd3ba059992e314d1cbcc318577222a587b4607de7211a26ef6ed73676eba26bc8f12badca267aaa43b1f582e7679d9bd05c1a67675822fb53e6699dcc0a713508f7d7d9f9a99172b48dbe431f54e6fa15e1fece6b33989de0b425b83a7866570e557ebe958b0e384146f592f62e1f708ee010d4020bd580f88e469723d4a2c55ca4bcd278c3971b9d0beeaf93d674b6bd9ef367e3c5c11f24f4356dfef571c7b1aa65162c2f7d5ba0af81e5394672f24aeb9c66d5e9a53c7d4b1d3c526215932a648d131c37cf0fcb03458f05ea8b81f5eec5ff372717e7fd64766798319eee066f5632e8bd9ee89084fa85015dd4ce1853e56a7146f64b6b3a08c9cd7209eaec59a34612b62a1350332631dcfce94db871d735fb5e66c3de124aac76aadc63eacd2b84d1aaa3e8bee57cd2c046f73bb115b4f8aa6b570a37e22d0dbd07552d9fa44ae0c30d884941e9567ef0a33cad9c5068a98799cc711e87a05752dfa6ab5b14d2c25519472f2f31f9d2 -Result = P - -# The modulus is 8193 bits, one bit larger than the maximum. -Digest = SHA256 -Key = 308204080282040101dd858d9b063d894acec656a9bb8b1920bcea0c963191c393acfd4f6765479331d50ac9490125572bbbfa1d551f9b1b8bfea0bb40ff09e581b35bde4e58a54f0e954a6ff639cbcee04c4498be5442098beef6cd9bafea003d6a582bb648a69a723f182251fd1165fddaea382e36a6868e300ec423d0198b404288cc21dc7dc659ba9e7c210f54684dbbb3fa07844761a3afa6de256596ad5b950924b5c50be17a3a9d54df53307202afbc80395b8e0683da5309b9eebd26344e54a328da2a259894626824b811b568086011983d457ba60628df4ab40d0dcdfd903dfabdb55439b10efe38526de229a8ba4c016c84263d857b9ed6c3c3922263e8a37faf23adf9836735e16958f9d6ac73f0129a4d159be1ab7bf991d72fec0ddffbf78d9161048d3c63781bc2e1f7e75f417b2e157f4954460ae9e8132fbaaedd399085bd4bb73f194ecde81539de336e8a04c51c13fc8433e26f12b58572d7a6bba4106dbaad2b1c253e5746d3006296383c72e4c4e51e0bac019f5b9e8f7018da482cf93485ccf6ac233f1d90041a0f5706424852fa57e0c9e5bf15efc504bf954682ee0e1f939b075cc798afe985c7e37f8d63096391f4b8c178cfbf4936ba3a2d115b0dcc73a49c98078a6d068c6716919fc8e81c9536cc0d028be1bd7b1e23be2745561b38d74904867bf2975d6bc1e976f91073916deaccb3bba69626b9547233fb767100a4cfb306c4cfcba1887b6e843cda76d2ae53773220893cdaaa1ab8efaa71f2fd2a6fb69ad96d6ffd4ab45ab38698b87f6b491c58e0f9cc57b9ec1ce669f074f0735f26e8457534fb90ab4a56cef04c79b2245898e58fc1f8f441a69b0e29ec236d1b886b6b086b231af034e5096da42b2fba959cadc246b3a6d7837f8e7bd50d1f6d4ad39431099de63ac3d94206ee296841319e7e2caa2adfe4143425cecc55958e705149265026e58ebddac2b524187ed422963c9c5a5af4633058cb39972991bf1195e641af30109cdee55b45506cc5716039da39e24621054f3105071a037680210e1ee59c8f8c207d73cd8ae1c86f9a393998a74829f980ecca27a1bdc160a733ad3b98703f1d63f07b41df9315f68e014127214e6cdc53cdedac3f77ccf7a58c7735918e49c682716d6b865ade2f7648d21c1dc5a18d24e19c271f3f743a6f37ca904068db40e6b1dead262b29a1d492bd3fd9c50c90d3c5d51072eac1273ee37d91a99e89bfd035f097fe25f7ac1c319a19271d5c46e4f78367c4cf2b017a18716c6e8794d0d04bf580e6bf853552f3501b60da05969c71ed41dfc530531e653629002ee39d3ce489b7bf634ca1a3c9e896f7a17114f4f237c18b555d73fd7ef8553dc94cfa3eb33b77ca25762ea8a8ab446dd8592f6a5ca82e263fdbf0ab143deff6e4187de56412b0f97d4f12fca9b4954fecddfa2e4a79457d63020103 -Msg = "" -Sig = dfc9e4e1c3106605f5b847463dc1809b58494d981d6c067aa9085c9147db821a50bff823e7ffbe20fbc731687101cb3e4abf421f59eec7b5baf8e1a20d31bf114ff0cf02cd0e4bb284c6c74caaaf95f97b0398db80c4f5e70de423bc643eef4a0a96303a6fc0c8d26b2ace4b5dd353f57eea9efe5b444f9cb48a256a9f41201030e1ee226d9b5d66b292de430a1c12be9f30f58d44fc005baab7e5f325711ad8e8a37d79388e0638851fd49b2cf7d977f197f789d2c3dd131a5a0e820c113683f91df9800ed0c68bf1c9f022037805f2e4a1abf02c4154e1420f5dd774a3e824b5bff8d028e21e4fa413c9e35f7293f5aaa4b900dc272c3b407891b536d8a2918128c2eee1f225b145e7a514256792b9d1886013e8c15f2d70258829760794412d8eb32bc749984779b5aec57c22278f89c30d57d97937a1c0536b39e66d00cdc11f2fac0095bad249d2c40504b68f611902c34ff653a782d25509007764b30bc051d4f51e80f806b0a19df377ba5a9d6a85642a5fb87f393b1a1d57f847dbc4cdc2342227d64641c615ed919f2cf05084feaac3f500472e4112d169a0025f4db7ebaf8cd26783518de44d1fb4d15bf128ab63198069a229bd615340b568cd4271bd0999b38d502ee3b2eeca8beb362a330532e8f05f3149101e448f1a670cd350f56217bba47d1c58694b4399dde01bd519b38f4bd5e98599b6a8281346fc23579c151b5f6c193d42156dd4cd819da340c7ed1f74661a75a1272925e317b4999f5c284d872b71942a7055b8fcd59ade776294b7c26d95608b4a94c6142e57e71dda5476f7bbe7751736052a679f176434ce1ec9803a0fb6305162712ddb5e6a25dfd392cba964e4b526bb5ed45933d37649c131cbd40437663008ed3dd0a3130bb2d621d78e01223a493035ffed6d0c9c47ff71fad5e4bda62bab70dc222a5fed7a3e08a708f25958eadf0484d9d5541c35b526ce93dc6abeb6ccc86ab3b342295c112c84072a63074ad87b4fdaa7964e59bb5ba8d0634e13a8714f750e84eb965d46f9709204abf9dcb9a0a39dc82a4e48fe1256069dcac7ace75d0a4c42426d2d0fdc2e82901f4f93b64d923c88a735870bd9e0f59bde0425dd9ea595193e8cfa4ccb331b4c82edb2ec727049a79d25d00e3367c7b9f306cca0208a119b759feb24bf7af5f6c226249d0fb4511f74e1626a50de4251e254b0228fb6aa98abc5320171f9ea9d597ae15046fd4a5325dcdbd49fc54093cf2e02186ca54e97457cfeef373d5c9da7d9e839445429db160af5bd43fde2f3053e0efbda241c750f3d7bb4d12df685a6d060396306040518741d8e0d492a3f2df43abf4988c60b6e6722588bfe2853834c7424c033635727a17d8a7cd4ea007d765b29863d58903f41b517e9d9e6085b422193ff90a9af687ce24d8a393e803106c39b7f6cd964d8 -Result = F - -# 2048-bit modulus, p < q -Digest = SHA256 -Key = 3082010a0282010100a0afb85b74105f49f6836183d67b92602b53ad0d7a65f32a21d8959b8722aae1ec000cb9f22de09b794d7446e04be02a782615a659ceddb5f3344b6e566970718124dc8b8bf23c5aaa7447b7f11905f828e91f1a844d535624b987704ecca430d04cfee0deef46e7e2da65a3f2a1b3aae6cdf96795d24073a07312867aeb414e0bd6c23d80bd9ce6266fd90dac7666b019c141e3516ed51ced0d62a0b1db189860406ec5b7bbbeb49031979dba118ef6ad131365d6bd6994e695ab084592a5d2470341e4a9da14167a1387ec3d513687b7d849d64da896d4038f72f8a8a516c6402225a53eb813c1eb0e675af8880433545a90404946d7d8db2716fdd63898650203010001 -Msg = 5af283b1b76ab2a695d794c23b35ca7371fc779e92ebf589e304c7f923d8cf976304c19818fcd89d6f07c8d8e08bf371068bdf28ae6ee83b2e02328af8c0e2f96e528e16f852f1fc5455e4772e288a68f159ca6bdcf902b858a1f94789b3163823e2d0717ff56689eec7d0e54d93f520d96e1eb04515abc70ae90578ff38d31b -Sig = 912209edbd684deaca5855ea6cc89ba16753caca12df2e18f56228f0c2ccaa3bb5e45aa2107dbe2cb5b5c3e1af159c858aa9f665df4433e5b8df78452da436310beded396ce5ab4fc3882ed72ccb1a2a9226ea4177deb2d341ae88aba789106cee2b25ad4049c47a46d05c94ebd39416674adfef4a212cf139a5283b8ec51d54c21461e302cdcbd8ce9f7659b7d88195912d706cfe30f68ca8419054e22f0be31f86e49135b86e3021dd43baec6a0cd24042d81f71f8a1e23079e6ab1f8cd7b3fec2882e93f6e724d3dec5a2e7883c56b8d9773036f116325bc6cb934968a780b66251e4583fde426e63951b8dc380ae29751ba5cfba759c4f192bc373775d44 -Result = P - -# 4096-bit modulus, p < q -Digest = SHA512 -Key = 3082020a0282020100cefe6a02d3b9919783aacc1e555888b6aecc45c76bf28f0efc673a4576d44db983f5669fa28bf31966d1124d01c0f1e9976796a4f7855115f74b59f65aa17d3e56b3a265ef91463a562fd2e770077cf7a0cfc4d0903c812622a141076046bd2b334e2072e21b9cd9d949cbaa010d73fc7c1f5337431a18fc93930509c713ee4e773818134912d7cfbaab4b57038d645cca237b2fc367f76b26200894e174d3c4265f58765ca0e81e2525db528afabc5d149e60ae2aae8e313138b27c4bc901f9612728ab7a32564d3d93aff6ba0033c9e8db84cbc1a2f0de32a275318836c07f07c51cf5ed43c5c727a4e2541a78c91e6a7609edf4c1c0cdfc59fd63621223ff297f63096f876cfa93449994597ef27e47371ae5c3ad575b6fda18fcbc314eda54411aaec457d52e1a44da6ea0d6f43ace949f6a6e9d5a917edca6cb38b217e9bef4279b8b98dcd603ca299dc3173fdb3978fa6926e8a0dacd58162e9337b9c5af7f7260b2c4f4cde6bc7a71f1a56974b72c721c57eb925860562b744d32a65cd2577e70e8e00cfc528d54186bfd6c3fb84a081ee7f5c8a8ff388296f021ca13b99e5ca6e773adfb6a6b7206a23078cdcfb57db1f1cd7d21e283bbd8a7c1e8d2eef46008ad2fd440d6959ed18bb84831d872d79e1ac4260caf481faa9bba227e15a1b61bff8249c9b60d44056118969242b004059f85c0125b1fbc47cfd4772f0203010001 -Msg = 5af283b1b76ab2a695d794c23b35ca7371fc779e92ebf589e304c7f923d8cf976304c19818fcd89d6f07c8d8e08bf371068bdf28ae6ee83b2e02328af8c0e2f96e528e16f852f1fc5455e4772e288a68f159ca6bdcf902b858a1f94789b3163823e2d0717ff56689eec7d0e54d93f520d96e1eb04515abc70ae90578ff38d31b -Sig = 98a95ccad59ccd39b1da810b53c9c0ce7b4b0acd65c0ffb788c88c856ea3ecabbe7015d4bf36b7c3de7c4c7c18063428afc567b94d4396048cea1a3b56544928e28b15360f9f5be7e700eb3b4d64b47061df1c0e096015bdf1329ef7a8a507ef56fa9330df4b1f3f097968839a60d1a6f1bb5b247032dc60b2889085d1dea210cff53c444b3f614d051cb41d8f171df025712bf57497f57e3c3e424685a8858f431a90d689dc1f7b41f868f0e1a6ef612710f365ff2bf90f2db89d61d9ab9fffac16581daec6ae1ab9f49c8dfd33a55f7b1e431fdd413649070e0a915f25363d3ddc2091fbfbf0fbeafe49753038dfce6973458af66a3d318eb7caa44d3fea95c46f40976398299db270e04dd20e77360013fcca04874307590429b13301be5f47a9681af6a47e5eaa53dc7ea05cadeef4ac96bc2c8e14ec9d0966e035898525c92fe7f0bc3a8996246f42da5dc0fb14cd856fe5bc51c031b3d83870ae89e9cdb1cbb2605b3f8bf4a978435c80a0e99a1a60b4e1a45d77458ec39fbf0a65b9b5891738ddc44edede2614d96e62303f0138051ab899e67bdce065ac5ec8edc6b591220b2522f8f4920bd9b7d4084b30d9a79cc658de0260b6e76acd7efe0d5c38e7856a7dc22bfbe287fdf88ca393f6c575cc1db8f0d8e47b0456e5a392f27e9f2b0352da61e58d1c1ba23b32de9f82ed35cd862644d63ea6a3f09b3642347ce6 -Result = P - -# RSA PKCS#1 1.5 Test Vectors for FIPS 186-4 from SigVer15_186-3.rsp in -# http://csrc.nist.gov/groups/STM/cavp/documents/dss/186-3rsatestvectors.zip -# accessible from -# http://csrc.nist.gov/groups/STM/cavp/digital-signatures.html#test-vectors -# with SHA-384 digest d63a32378adebdd6450ce72175b76baf06e137d1d0091c18af157ee772baec79df341125789e4f23529aad7c13270b5a -# filtered and reformatted using ./src/rsa/convert_nist_rsa_test_vectors.py. -# -# Digest = SHAAlg. -# Key is (n, e) encoded in an ASN.1 (DER) sequence. -# Sig = S. - -Digest = SHA1 -Key = 30818a02818100dd07f43534adefb5407cc163aacc7abe9f93cb749643eaec22a3ef16e77813d77df20e84a755088872fde21d3d3192f9a78d726ef3d0daa9d6bc19daf6822eb834fbf837ed03d0f84a7fc7709be382e880e77ba3ce3d91ca1cbf567fc2e62169843489188a128ec853079e7942e6590508ea2faab1cf87b860b21b9546442455020400fe3fa1 -Msg = 98245960c6d4da684d9da2e78cf59d2a63ca53ac39740c9f44e837c9042e0c911115715a17251a0f1fd5f5ff10fec5ec75900c5e80842f3d4f11d59f6f2390df9f09bfefd66db3ef878a10fe23997650e08c6180b9ff4e28b56c20b06d9ec163c8680cc80a96eb2f0d24bc8acdaefa7e2b2819baeacfb188fe5fdfa10687e946 -Sig = 1ea751e8c5329879a9003f529eba19514c153ee0bdd8caac9c94fbbf95a41ebdb9ad54a976bc1218a94b53e69cf3362b0472a8781b8df4af3e9aa584099c71f9622a6fcc3fd3935b033f68c1c970676eb6d2184056f1b524acec26c51df6dbe9bf3b4e1fc144b8edf563a03f28ad78d457485b4a57ed0ce81e409245f5ce1014 -Result = F - -Digest = SHA1 -Key = 30818a02818100dd07f43534adefb5407cc163aacc7abe9f93cb749643eaec22a3ef16e77813d77df20e84a755088872fde21d3d3192f9a78d726ef3d0daa9d6bc19daf6822eb834fbf837ed03d0f84a7fc7709be382e880e77ba3ce3d91ca1cbf567fc2e62169843489188a128ec853079e7942e6590508ea2faab1cf87b860b21b9546442455020400fe3fa1 -Msg = d7eabc57c2803382d1deb56a146767ac80c89183382e01990bb5aa1d3d2391168ad6eaf768fb7d738d014f92b14d7f0595306eb7441622a49800edee0134492d82320707fceba902af2e0c95fe634a85727bde6f022709a09248752db9a71941c7e75cb107b87dd6414d329b830f8fd521932ad3fbc97d36fe778b03eee6c7f7 -Sig = 9dac630d264a6a53cb81a6901ac0baabfb24d73b60ad3a4ed3a0eb98a2118a573c3cfe294178fbee63da7c27c5826fa5e6d1682eb254da53a961ba4473672f57a27aec22d4b205f79819ab4cb18b0f3842684bbdeca71cfcbc30d1866d22c9f1fa9dbe9e1a2f5f6f68fd4fff6909fd2c1a9904204a3cfa30da4c87de35a769a9 -Result = F - -Digest = SHA1 -Key = 30818a02818100dd07f43534adefb5407cc163aacc7abe9f93cb749643eaec22a3ef16e77813d77df20e84a755088872fde21d3d3192f9a78d726ef3d0daa9d6bc19daf6822eb834fbf837ed03d0f84a7fc7709be382e880e77ba3ce3d91ca1cbf567fc2e62169843489188a128ec853079e7942e6590508ea2faab1cf87b860b21b9546442455020400fe3fa1 -Msg = 73ef115a1dec6d91e1aa51c5e11708ead45b2419fb0313d9565ff39e1928a78f5a662b8c0c91247030f7bc934a5dac9412e99a556d40a6469beb40e7b2ff3c884bfd28537bf7dd8d05f45419cd96bb3e90fac8aad3e04eb6190c0eeb59eccfc5af7ab1b85264be71c66ac25e53085c70b5565620152c32b0388905b3f73689cf -Sig = 25493b7d70cc07e9269a248632c2c89c8514fe8298ed84319ec664f01db980e24bbb59eea5867316792fec36cbe9ee9d3c69346b992377f35c08d19de0d6dd37482074cf5d3c5cd2b54d09a3ed296187f4ee5b30926a7aa794c88a2c0f9d09f721436e5a9bd4fef62e20e43095faee7f5f1e6ce87705c27aa5cdb08d50bd2cf0 -Result = P - -Digest = SHA1 -Key = 30818a02818100dd07f43534adefb5407cc163aacc7abe9f93cb749643eaec22a3ef16e77813d77df20e84a755088872fde21d3d3192f9a78d726ef3d0daa9d6bc19daf6822eb834fbf837ed03d0f84a7fc7709be382e880e77ba3ce3d91ca1cbf567fc2e62169843489188a128ec853079e7942e6590508ea2faab1cf87b860b21b9546442455020400fe3fa1 -Msg = de4dc041a283c488187ef9b75e701ab0a25d6ab6e5cf9cc702ccf02cec05a04e37507acbda58cec933938a8b4b75a4425ce4b82590ebf3c30cb22f982dae5fdf11152ea85a95e32a2e45885a82dc4bbd9921247ac7a2b8b37ba97e157d6c20ae738424ffaaa0cb53137b394f8c0bd7c961fcf6de135cb53e589824cb62a7a963 -Sig = 1cbd45327f5bb1f7a86758ec9125d28cfbcc235fe18269442ea9bb9491241088c20b2652c00dfb08ed0f0002b7c6eabd5299174bcd42f96171cec53d9cee01fb52ebfee08089feaa4fc6e1da5dcf57d123da6a964f6d610e37af8a57ad31857eda5ebbbadafc6e02bf8f326fc4f853734b25cd56fed04ff647d50c3127fa35ed -Result = F - -Digest = SHA1 -Key = 30818a02818100dd07f43534adefb5407cc163aacc7abe9f93cb749643eaec22a3ef16e77813d77df20e84a755088872fde21d3d3192f9a78d726ef3d0daa9d6bc19daf6822eb834fbf837ed03d0f84a7fc7709be382e880e77ba3ce3d91ca1cbf567fc2e62169843489188a128ec853079e7942e6590508ea2faab1cf87b860b21b9546442455020400d20835 -Msg = c2721310ab955a702b78c23fe70032172922593c30ec9fc4cbc55bfb26f54605e36830c56caef1fe8847a3b82d1e0ee696536445943d2f8729b087b1537b88c2263503951d3a7408b2f0345e2c4ff0e2b9a05acdbc841e6a683918788e19c4d0b363f648663ecbd6d1fbdff98d9bc054bb91a39c50c956b5b0e876187fd6e278 -Sig = 4efb676a7f2214898257240803890a42c5b2e746928bcded262af27b68cf38d364ed7d5989ea93bfa8b5194d53708120864bd78367cb14dd76e2f983ee9190fca55468922cb3a7bfea38dffb704e81cb9bfba6a2b1b6c5af6814a812ac53befffa170a1e3f70e969078a9fe9bec58cc4c2d7891171949ce8c7cf20478b4ac1f0 -Result = F - -Digest = SHA1 -Key = 30818a02818100dd07f43534adefb5407cc163aacc7abe9f93cb749643eaec22a3ef16e77813d77df20e84a755088872fde21d3d3192f9a78d726ef3d0daa9d6bc19daf6822eb834fbf837ed03d0f84a7fc7709be382e880e77ba3ce3d91ca1cbf567fc2e62169843489188a128ec853079e7942e6590508ea2faab1cf87b860b21b9546442455020400fe3fa1 -Msg = 43226431830fd187e5fd0ff94bd3b4d1ab40074e12ac1d3ee96e42cf783f9ba3a8ee09220d564f14238e786fd85f736d4bfb01e2d4ebd1cd444ae82d6e314716e672c80308894a6e3ccf0d9e79f15fc108a1793a8b8ba43c3d8ba0987b1d45d384156b7c7d9008bcb82a982f3571c2f2699a38fe3f73dfb45d9930b8a8ebde03 -Sig = 34ba929fd60fa28dbe9f60c08d6b55cce37e888ac2adc9b714e5796a7a600e95449e70bac5814e3f6826df7b23512d17e343e62881c1a96970b254bf26503b0853ae509e39421c94ff844cb65683f84200acac3e759f191fdee7d65969b72873c77d1e13ffb13153940120ce5cbe2076675e844d6f7588a9ac129cbbcfaff3a3 -Result = F - -Digest = SHA256 -Key = 30818a028181008592b5850b9ba96e7faecbdd67e50ed5fb2018fda0bc6a09ab6345910fc445ac6bdb0e7a4c6b72c9441649c9e78109bbaa1d79f9fafb8794a1a06cb638bd8f3c3416d44c43cf862b8ac1d5006310b05a7760d341d07077ae775f1695061d3c7297dd3ab8fc5d03d09ed1602a1bb69891bb377fd0aad6cd90f8b207467db36279020400eef211 -Msg = 23d29062797ec367d664542872324b63a72305caed23d04b0834b594801095d7521078cae54c21f33f04e622793fbe3f70b19c45bee2fb8fe98dba53d9462b6c9060675c150ee491b1c849e75ef1806f7db60d6fc7399fa986efe5e00546a399458c051ff10c33c9947a257f0a91b97b35fa034df170e4224922de45eb5826e6 -Sig = 02d07177f91c0db0b74e34b532aa18673d27fdee370b7aa9094ef765c9a8278b7128f1bd24fd3992e6376f83bdea9e505be10de15163286a7c9d9873bdbcffe0535f9f8cb0dd99ba34e24ec462e4ad03618258b66894daeac9415545e030bd963f2beb8d089183ec7ff1be67e6f94e6871d42fb7d7c694682a9f4af599bfdf81 -Result = F - -Digest = SHA256 -Key = 30818a028181008592b5850b9ba96e7faecbdd67e50ed5fb2018fda0bc6a09ab6345910fc445ac6bdb0e7a4c6b72c9441649c9e78109bbaa1d79f9fafb8794a1a06cb638bd8f3c3416d44c43cf862b8ac1d5006310b05a7760d341d07077ae775f1695061d3c7297dd3ab8fc5d03d09ed1602a1bb69891bb377fd0aad6cd90f8b207467db36279020400eef211 -Msg = 1e422f898ff258a99bc53648541709b3a3bba5828d36d070b42bec6a2117d6e6403f0d762ce6179d2dc220e180b1e52156a9d0291eed64840787dc91c1f20fda841797a0547b32bb83b668a177276fc4aee64b21fefa391522cc4e7372dc5cd5f2b3152f8e1973aaa48757afc3df7041b35b5e91b5c317cc0be48a38bb3d837f -Sig = 2e37c8221597f7e2b1970c40a50db5fefde31b1dff1e9b9d6a70b023acb014971580eddf1d67f15d9fbbddfcdf49cda14ccb7516c33b787a3a3fd43d005d02de10f93ffc99585ae5dfaa766c0f1f5bfa62e50e76a059a4a1e814c1ee9836e01595731dce48f94aa1ae36d9c5165a3eb28013fac271e091f7018fe96ec26009c1 -Result = P - -Digest = SHA256 -Key = 30818a028181008592b5850b9ba96e7faecbdd67e50ed5fb2018fda0bc6a09ab6345910fc445ac6bdb0e7a4c6b72c9441649c9e78109bbaa1d79f9fafb8794a1a06cb638bd8f3c3416d44c43cf862b8ac1d5006310b05a7760d341d07077ae775f1695061d3c7297dd3ab8fc5d03d09ed1602a1bb69891bb377fd0aad6cd90f8b207467db36279020400eef211 -Msg = 084e3b56d68ea7c99068489e2c8080b9d3eb5ffea1e67eaea9c82af33935c5b960956ac0aec4d0ef3b0b71ecea50ebe9ef89a6c18f77b743279004cd703da91e01459b6516898b9d8ff30e1d3ca9fa6b5786135252cae734d410f6a1fe811627f248166c9645a27b9506665ca7f377e713c8eed97249d628b5314894696bd47f -Sig = 1b7dfda3e6da9e67ee9f207a9e03559fb5d7ec88f0310ac051e1e0612119214bcb11d1003bb5fbea088354c2a9c3318baa0264f67f0860f17528bfa63ee35f22908caf0e8e57c0ce63b334b747cc1a31ff90cdd550b27a34b05695a39d48e900a5e1ab4ce3f5030d903315a5dadbdbb0ffae04134a74cde2b99b8f8b5305759c -Result = F - -Digest = SHA256 -Key = 30818a028181008592b5850b9ba96e7faecbdd67e50ed5fb2018fda0bc6a09ab6345910fc445ac6bdb0e7a4c6b72c9441649c9e78109bbaa1d79f9fafb8794a1a06cb638bd8f3c3416d44c43cf862b8ac1d5006310b05a7760d341d07077ae775f1695061d3c7297dd3ab8fc5d03d09ed1602a1bb69891bb377fd0aad6cd90f8b207467db36279020400990d05 -Msg = c65f67c4843110ad555134fa8b9ec51dd9c93ff9ad5d96febffd6c95eaed88be3cd584f749c1c561c46bb11e50bd1bfd939202598cbd7c3e274cedce0f0e7ce3c452c8f6edf2d640ef904f1ebe20e8baf4a621e82041324e606942c83275db0b87609b8819cc2c93ff4776c47ece129d238f026e0ef3a07691dcd54bfa2c8b7c -Sig = 116b58e45693d6c80065cef13ab2f33ed6c4d3b6c5048ca2fac4c793b962c1d8315f6a76e379a0b4daa8e1ffe096291aa9c18b9a182d6f4c5b5bb6ed02b4a0fd39388e4ca5772165538aad34313696fa2a303ff024e25a301997f94860080783d87c7fd24f4eb7791a3b6be09c3f3ad0221ef8268444c40fd845617416119761 -Result = F - -Digest = SHA256 -Key = 30818a028181008592b5850b9ba96e7faecbdd67e50ed5fb2018fda0bc6a09ab6345910fc445ac6bdb0e7a4c6b72c9441649c9e78109bbaa1d79f9fafb8794a1a06cb638bd8f3c3416d44c43cf862b8ac1d5006310b05a7760d341d07077ae775f1695061d3c7297dd3ab8fc5d03d09ed1602a1bb69891bb377fd0aad6cd90f8b207467db36279020400eef211 -Msg = edf40a32aed24e14439d8db48e80d92c4c11035dedd30d90a4ffde5dba8439cd274cf0bb63c155807a90f2cf5fac7add8297ffc5a4dd642ceae1162031dbf746a2229b3586a7b71d5bc2d6ac27324e320c5f73031de10a1d7046010a74105d0885fe7368be8d5b340fbda2148f183f7213f1c8ddffeae6ab5cb907e32b2b525a -Sig = 4e6e6482b8f163fb3c32ff454703a037b9882eec1f82dbd675c94accd79a476e12a347d2e9b4745d30164ce8484635aeddf1116df40b516e6b2af497d27f2194cceb801922aa6d55c935ad166bc477c8e54ab29c07f432b0aa3808e17d28254a0431fd0267e389a6b852f10df0f9a2f317c6a6e762c7395e743b38341828ac10 -Result = F - -Digest = SHA256 -Key = 30818a028181008592b5850b9ba96e7faecbdd67e50ed5fb2018fda0bc6a09ab6345910fc445ac6bdb0e7a4c6b72c9441649c9e78109bbaa1d79f9fafb8794a1a06cb638bd8f3c3416d44c43cf862b8ac1d5006310b05a7760d341d07077ae775f1695061d3c7297dd3ab8fc5d03d09ed1602a1bb69891bb377fd0aad6cd90f8b207467db36279020400eef211 -Msg = b1bd4eedcbef7c57ecab2aed92cbd60052ddeb201181969a7713d53fa18ad16716a06d36fd341f1e8decffa5c41e1d695cf11861fbbfec65aabe0cf188e0b126bff77111b81d13308b53a232ba68c0ff1e1d3df82186e8802eb3a5bb6690c095950a810764730196d0283b1cda7166ca80a8836eed9e32f2ed3ac925a363a7bf -Sig = 7a0225a29a5f3e4592843c5c4d543d14ac544a3eeee9dd5e795ffa87c4e16dabaf07ef75363d773d89ca712df7c32010d3ca024ed84a954ff9625390e498d04e2c676f3c51ebf0a46fe22ccbffa53c52f9a292886e6a8b64efe5717c527dfaed41d2290c79c18ab28a96ab5afd2f071689653550a64be24fdb5f90a8014df659 -Result = F - -Digest = SHA512 -Key = 30818a02818100a9f1795fc64a9fac0edd4553ea5b722b34b5266bef29594fa80dc8c64d33c3459edbfd36fd7b85203dbe4ca17cdf7ae53e5fafdeed8e8a688264858db18124438a3bf3110a721d94276cd47d7e5c2e1547dd5cb80212d594571432506987dbb4a250de62eebdc19a79f876228b2c4d04a1b5910395a8714520e78b997b3b6389020400d43d27 -Msg = b2abe66d1e6dcd75149d42445705b71b7509d393ee38b7d69821850e4268231e98193c91473b88cf61a94e97021d27a9348e04c310bc72cf26091d5b1f8a9349a15e4bc8733ee683e256b41863537acb79be737cd98894d6cde614cad65f2c3b95221cfbeb9e6ef7604d7eaec1d03ae80d4127a493c5a55254607342ae0e755d -Sig = 3f8ee147643e685b325c13557f44945c99efeb0aeabe719ac1da3f6923d02ee74b0767558225548f276d4bab34e8f09c4909a251cdfd7be3cb7f57f4d8f4bcd01dff0fa532ac3116770f0527b56c4415df19fba04858e70703f06b6f02cdd6420d255a21953ae328aa17eb9e151ea1fc0916fe3f3506d8f14ef8e8e09f6e2e26 -Result = P - -Digest = SHA512 -Key = 30818a02818100a9f1795fc64a9fac0edd4553ea5b722b34b5266bef29594fa80dc8c64d33c3459edbfd36fd7b85203dbe4ca17cdf7ae53e5fafdeed8e8a688264858db18124438a3bf3110a721d94276cd47d7e5c2e1547dd5cb80212d594571432506987dbb4a250de62eebdc19a79f876228b2c4d04a1b5910395a8714520e78b997b3b638902040083a029 -Msg = c4d94f011bee04446ce78f805d6950a9de2c6e59f7afbe1fc42ae619bec5c2c53b070614399125c0570c72e0246085ba9c26e1d8f061d45e86689e9a4127d5dd028707896f2ba26cf35d114c054828c3ae67c24e453da8a07e47b53ca32f384220429a89452441ef48c2b3ed8989ff6f1ad659e27fad048eb2ad75266b43b59d -Sig = 4052cd1149655d56d50c46d65c8213a81bc71140558a0d6c0445a180b64ffe3a91a0f3e6c3e9312966927d68fa2b1cdbb342af9fe729c1710076008c123db4901ed4e4a68f4a6c17b8938f2c99a6ae81c821ef65cf7d18a1271291d669d1072581c34a1a4badf4be10b00d2a31e0d611769cfb8576a17760656a6f64dd6817ea -Result = F - -Digest = SHA512 -Key = 30818a02818100a9f1795fc64a9fac0edd4553ea5b722b34b5266bef29594fa80dc8c64d33c3459edbfd36fd7b85203dbe4ca17cdf7ae53e5fafdeed8e8a688264858db18124438a3bf3110a721d94276cd47d7e5c2e1547dd5cb80212d594571432506987dbb4a250de62eebdc19a79f876228b2c4d04a1b5910395a8714520e78b997b3b6389020400d43d27 -Msg = abdffe0b951a91c54c7f00e1ff8e98060b413f131d9cb5589a861a053ed7b1e203b2e3414415873222ae60f527f1e7b529674b737149b7401d4dd3afc3c08d8a57d519c44f3d36af04f7b46f5c6a33afa6b12d92c53637ec918283b37a53aab06fefa87afeb928a5bc020337e721035b4ac6ec5a618bbdc6becc33f9abb98fbe -Sig = 5bdf363c7381eb660c572eaecc4325d0e977244f0bc229abffdcfe6a5e69b29b905b7cc83aa19ca3fa5c50917575c51fc6c299fcfce3d368326bccbc40b2437525fb39c103f32fc9e1aa653e2938afe0921c39a94110443551872b17728f8719d6ab98cd188d4182b62f6063720bb0550bd4f468668f4f4fad1ee3e5c7327fbf -Result = F - -Digest = SHA512 -Key = 30818a02818100a9f1795fc64a9fac0edd4553ea5b722b34b5266bef29594fa80dc8c64d33c3459edbfd36fd7b85203dbe4ca17cdf7ae53e5fafdeed8e8a688264858db18124438a3bf3110a721d94276cd47d7e5c2e1547dd5cb80212d594571432506987dbb4a250de62eebdc19a79f876228b2c4d04a1b5910395a8714520e78b997b3b6389020400d43d27 -Msg = b375b0e73c3a7d7013a9972c01b240228821261ed4c3eff6efca15113472f42a06e52152c25cfe34f1888b9dc3307f3cb91b98a6a1302f9cc7dc0f916ab487676d5cbe7a4fa747df5dfff5ee2608f1fd3080096fe96a4beee06bd3f43574e1904fa12f67cc6181f9bed87d251481bdef5618238296b76c71a33f08427ff9292d -Sig = 5b5341b5bdcb35e167f488f1510513fce5a01a813ee593c97264b2867fbb0846d46166d0eb2e07b0d3804bc0d3e75349a6687c798d82c54333ad5cbdb4d13c452bb479e08a7fcc2f7aecda3dd3946f68c6f02f47b69869246f2c5edd608ac18aabefff4891dc3eafc561a8b4d745c46052fd352ee63e427f21973836587ac4be -Result = F - -Digest = SHA512 -Key = 30818a02818100a9f1795fc64a9fac0edd4553ea5b722b34b5266bef29594fa80dc8c64d33c3459edbfd36fd7b85203dbe4ca17cdf7ae53e5fafdeed8e8a688264858db18124438a3bf3110a721d94276cd47d7e5c2e1547dd5cb80212d594571432506987dbb4a250de62eebdc19a79f876228b2c4d04a1b5910395a8714520e78b997b3b6389020400d43d27 -Msg = 2cb9740e0c1b8867866aa81c64122295854ed681e8eceabf0651bf7a65bc23996acfc8566f4bf42c151b7bf7db94eb57f0fb065546477549e829bafb8d4a67086dd48d87533378edf41d992e7fcfc425759a9c36bb9f4b32eed7767af6566f68ded0adeae25c7a70ca78ec09774d16c8bc357f6d6f7bd441bf62d942c768a580 -Sig = 1aece09a2f10ad4a72dcb389e771ceeaafe0d2b3ed89423da09784089f210e375124e65c040f67c44d2ba2f65ca7852d33e508831ec58e592bb4c9c440959337048072fa09d38b515e64940e35bc2a84764c4864970cd6b7dc6c63d284e6022ed1661149a4bf0c14c83b6f6f5d9fd7e22baf43e9b569ec26d8c42c4a597f026d -Result = F - -Digest = SHA512 -Key = 30818a02818100a9f1795fc64a9fac0edd4553ea5b722b34b5266bef29594fa80dc8c64d33c3459edbfd36fd7b85203dbe4ca17cdf7ae53e5fafdeed8e8a688264858db18124438a3bf3110a721d94276cd47d7e5c2e1547dd5cb80212d594571432506987dbb4a250de62eebdc19a79f876228b2c4d04a1b5910395a8714520e78b997b3b6389020400d43d27 -Msg = 0da95fc957f922a88554a6a14b2be6d22599e1519c99f808c57797c30a8417872c0ee326898fda109b25f56cc2422a6743a590cc9089c3d6ca1c8a428432b7a7ca3b4f0a6172ebad51585e29a16198bc62edcbe4ef79cc2d7217bb47aa1be65bec18eb9f680b1d29aed5290171effa798a59d9c13fd3d9b6c65072fb05a86c4b -Sig = 96c37595427da33321b72448c89addd4ce9e63ae6e32a089bb780d57682099d35c92bacb405aa0979fb70725dbd06af1a9f6e9ad91457e50deeb5b91138db45a6b1e082fe3d9778355cabb6e7f4934f7d0d7a1ce0b8face619a9ce78cc024cdab6ac02f3cb6f8b6adfd1e0b245b227f66441b3863e8ee04cd83ec08b456b0f24 -Result = F - -Digest = SHA1 -Key = 30818a02818100931a92071b310602a55840b8c0aea51e3562513e81010e1b93374cf4bbc50cdd94fa1dcb8d8b609e5dbea182c052e06d2a1c454755d9a279092221dc52d132e55ebe7234728a7692763636845a122e8752a319c5cf5065fb7c576460996bfe1e1b4fd319ed11400df2e6a18461f1a39c83996fe6886ed41be89cbcde6c764fe9020400a71a21 -Msg = 85254daa44d5ba337cf350e0679f416ed930168fd179ea484d4cd698633dac5a8ea8e86c46f6e311d31b4a946263cf2f596f1e2ae87a1347e0e22a5ec9e337452fa557f23c7926e48c5f32bf3ccdb03644ab6e2d07a2091f299660bea17148da0f2382844fe7ea734ec7f0a71c624c4b43edeee058783498cf726000137049e2 -Sig = 6f47d4d0ef70bbc71de2d6a88e044c6920dd81b030e8cb2e422a25101997e4186d00ca17bb6520b6d92075c7ab58ab84c7f4658bd955de37327817e18c3142ea6222b240b260489ea4008227de13b0c078f83909dd65852bfaa01bc9dc7e64ce80f35503fa9badde585652c9cd0fab0e73066d83ff9f343d4137778e3c09a58e -Result = F - -Digest = SHA1 -Key = 30818a02818100931a92071b310602a55840b8c0aea51e3562513e81010e1b93374cf4bbc50cdd94fa1dcb8d8b609e5dbea182c052e06d2a1c454755d9a279092221dc52d132e55ebe7234728a7692763636845a122e8752a319c5cf5065fb7c576460996bfe1e1b4fd319ed11400df2e6a18461f1a39c83996fe6886ed41be89cbcde6c764fe9020400a71a21 -Msg = be5e8dae6e3a61370324e23ba572996d4c0d6288d32c21355162b12fa6db1da554e313e091a795259a40f2dd49edf5f3eaa05c7e4bbd8ba0121e82ad535a0d9062473a6be6bd107e2f9d7e4aca1292f65217ecf1883a71d9a69f449cf147f2dd8e92ec9996033b0a6d446fcb4f6ad83e2b79f92bb52b3aa9b7eddd42a72b3352 -Sig = 206f738f2df12a70b0a1f5670be0c9c0341a1931d8fdd9491268a08bb42ca8dee88571f140bb7d4abc60f82fd284319e06b44aa9e384ba4c38b9a427e44013a2eed009e196a840f357cafd47485a978b7050342a46df3c4840ee4c56b2dbe605e555a3e7f6045d163f0641b6dd1da51a48c1e497d24db15f3b1a959438e18fd5 -Result = F - -Digest = SHA1 -Key = 30818a02818100931a92071b310602a55840b8c0aea51e3562513e81010e1b93374cf4bbc50cdd94fa1dcb8d8b609e5dbea182c052e06d2a1c454755d9a279092221dc52d132e55ebe7234728a7692763636845a122e8752a319c5cf5065fb7c576460996bfe1e1b4fd319ed11400df2e6a18461f1a39c83996fe6886ed41be89cbcde6c764fe9020400a71a21 -Msg = 544c1e697305e865ac0c00da5c17d1d369449101d55c741993581f7799245f0736a41b65a6f58743e4f59b0cbf05c4c6300dd93debc1505e3423b2e1f4494c2b0c612872e9f23b225865e07f9cc3858cbfc0a42c25f9f688677ae3b05e833c857d8c2cd664866cc9b364b77d1cda7eedbd64dc18ac8bcc5fd3649a2efe5997de -Sig = 73d0492938b07e39e4f611ee7f50d4558537dab9ede3f44b49448d88e447ae07790f969ad8f15c327b540486135cdb6e0a9725eaab5e343b64700233edd13c43cdb25cbc2f5311558152af4b2818be52ccb8cd0ed4ec475e7ff75dc7d56dc999b3d15b319d76c5dc6f690ff977407c1789e9531941062881b6ecfebb6dbfad2b -Result = P - -Digest = SHA1 -Key = 30818902818100931a92071b310602a55840b8c0aea51e3562513e81010e1b93374cf4bbc50cdd94fa1dcb8d8b609e5dbea182c052e06d2a1c454755d9a279092221dc52d132e55ebe7234728a7692763636845a122e8752a319c5cf5065fb7c576460996bfe1e1b4fd319ed11400df2e6a18461f1a39c83996fe6886ed41be89cbcde6c764fe90203597bdf -Msg = c18b5b1847b7e397c39a6f90402aefc1d727f11418f31f17aca308ac3956230286c510c3e01c228fbc091baa9d1236f1382b6b13d688eefdfbb0f99645d3cbad965df12f76cbc49eb2bd33be494dc29289a0d38676ba24ee6b979aaf04773d3c3a7983c5d06bd1abefe13f360d849c8a13adb2d7be33cad1458173603deb8098 -Sig = 0e68bca9c9d1332ece050f6ca2cf697b7b00a3aef4f3925dcc34449be05ea7a732165abfbf808e0431d6266d4d24595b94b3921c877105c6dbea351de2047b8e7373f775958ca0e09a7da0fc0c74638d3d2b42a5fdf557d47039a0d3092304627fd2537f907876180a8ac3b4d6182fc8b515b3a12f3601ba002ec59ea0072115 -Result = F - -Digest = SHA1 -Key = 30818a02818100931a92071b310602a55840b8c0aea51e3562513e81010e1b93374cf4bbc50cdd94fa1dcb8d8b609e5dbea182c052e06d2a1c454755d9a279092221dc52d132e55ebe7234728a7692763636845a122e8752a319c5cf5065fb7c576460996bfe1e1b4fd319ed11400df2e6a18461f1a39c83996fe6886ed41be89cbcde6c764fe9020400a71a21 -Msg = 992fe15e5f63f165df61ba064f593894c4db4fbc489974682d6fabe4a1a0b13f82637af5739edeca2ff18ff91df64e8e25c75e11c3c13964598883eeca4b3cfa444a39595d95d54f6216e4adebd1e83ab36b8857a7e93de33dbb4f5d07f9004888ec06d446d03fba20d8a168e273705e17ceb3d81f9ae8ad810ff777823165f4 -Sig = 233ae74861a1c0db26a07165eef66954400a4aaf2f12a4f0b66ba5ac0549669c6688d5b35f1e5b1f8ee054dcfb87d3ffcf55ee5c3df6753f1cf838a109370f1709b1c77f6a8a5189c0eed565f930c01a6630dd35130cffd12ec4a02848d77f5a8661f42e087277382a36e504293492dfa8a689ff35d95343effe0baa9a9a090d -Result = F - -Digest = SHA1 -Key = 30818a02818100931a92071b310602a55840b8c0aea51e3562513e81010e1b93374cf4bbc50cdd94fa1dcb8d8b609e5dbea182c052e06d2a1c454755d9a279092221dc52d132e55ebe7234728a7692763636845a122e8752a319c5cf5065fb7c576460996bfe1e1b4fd319ed11400df2e6a18461f1a39c83996fe6886ed41be89cbcde6c764fe9020400a71a21 -Msg = ae004a585df79c01bff18adc7fffb88ff91c020e9e0208119a43eac4b59450c0776cae3a90cec67a77626e8f50cb934213357e48eb2d56bcdcb6e6cca999a1b2f5fce3e6a8367a9194e265455932dbec858790ff003e33f9a8cc3b0a380de30f6ed973c26dd9c22e6098f96760dd99779839c09ba6dca8b045ac70e829991fc1 -Sig = 3d954f484b59c38ef3103aa65ef334c81d8f4619f55148c2d95f5d23730cf6764accdac01405ab16ac53db30c4c00d62b2a34bd6fdb480b05e72ab02fe0bffb2d67d17f99275cb9ff17d87a1a78ee3531cd5221af5052e3e67b01e9c28e52bd99460ff28a40f618f3c7da8452f3c8172886b7350435dfe64e399e5483c540156 -Result = F - -Digest = SHA256 -Key = 30818a028181008f705d5529b5bf74600abc485bc4bb76deb9627088e51fdd26dd0f37bb3b98a9da4094d275d55011a844884122daf8b4abe99d43d918eb50d9642436647f60577c5f60fb9b810147a910dd7dd610318392dffa3fcc41f89f461bb5be85bf885b672cecf00da3af4d7d90074c4c0144c4bcd2d49145f8097648ec7230747f7033020400d90b53 -Msg = 10c21d2d4afdf3502dac1a791216d0c240b6b12061e0cf3033a7043380fd8756501cbe385d2553a6c7078aa909a3d2c22c2e9a743bd66503f6a8217ccab1b4f50163d916373b2ad80da17d8d211074213d76509fcede06f6984c95fea9e896b68b5f15d0be879f6f65429c2f40a4e066da587ca9043fda92815b09c103ec5521 -Sig = 0411589c7d0860d41c7d4fef4d604b4dca0b160529209e762d5fc73df911e7bfdbe16feb0def70993e64eeb66888e47b3613256dfe04e75142ff2b325fd86b8e02eb01e4cd05b05cc788f014c170d584d092b7220a66133d4f0e949457eddc567eda792abe49b8a8fdfe177c6b6e0d7ac4262e95fa87c1277c46a759f9723cc6 -Result = F - -Digest = SHA256 -Key = 308189028181008f705d5529b5bf74600abc485bc4bb76deb9627088e51fdd26dd0f37bb3b98a9da4094d275d55011a844884122daf8b4abe99d43d918eb50d9642436647f60577c5f60fb9b810147a910dd7dd610318392dffa3fcc41f89f461bb5be85bf885b672cecf00da3af4d7d90074c4c0144c4bcd2d49145f8097648ec7230747f7033020309ffbd -Msg = 393f6cd3c89e67def9579e586c945fe97d567bae23c54a2e18c5f0903bc9df0b32ec9d9d533ec800c55b57dae2432234e065a52db1fd00ef27a043e35c15e9215167a22bd53856daa9586698e19735d08dd7e7a3996568ddf289b027ea5b467eded903e316371954ec7654fc31389fa7ccd3c978a4a489dec1a6c0c4ae42ff08 -Sig = 327269d1d4d871a8be4ee49be39c5a51482fbe89d522c0d6cfb0ea6bf0c6f0b343a94222ef65058e27f5107e4f8d0ce20a064f19ac39189f221c5e62ad4fd7006eb1de620052bd35c268d5c1c6ee0f81e8b3f7f2977d2449167caaee2ca54d458108645268749651de6f7acaff09591d19ac99dc17d480ef3531ed4c14eb85bf -Result = P - -Digest = SHA256 -Key = 308189028181008f705d5529b5bf74600abc485bc4bb76deb9627088e51fdd26dd0f37bb3b98a9da4094d275d55011a844884122daf8b4abe99d43d918eb50d9642436647f60577c5f60fb9b810147a910dd7dd610318392dffa3fcc41f89f461bb5be85bf885b672cecf00da3af4d7d90074c4c0144c4bcd2d49145f8097648ec7230747f7033020309ffbd -Msg = 036f62daacf68776f409d0595509a596a544b085ec7649687390324e1db78538fa90ea7b1abb0d659f9d50231663bde208433e35cb0510b79ec375f1f6eda97e128f186cd5d7cee6d5d22f10b076e8339fe5251a4df005bce9da4a1b795f566b72f553778652b141be2ed5e8c84a0fcf92b1cdfc183e0fbe7a5e1b9351177248 -Sig = 56c4af89728a322066b8c291b4f03da5a038e4a44ffd9b49be9ee5d1a800da1c58e7a852218eaee853f9695dd308e1a5fd95b41a441c2a6bd124088868fa26f384c9ce87849b2eb5edac55cb95d5dcda7bfffea621b3fa66e6b200ce755b947e778fbae07490410509f5036a07280f943b7300562926cdca3b20097f1ffc24e2 -Result = F - -Digest = SHA256 -Key = 308189028181008f705d5529b5bf74600abc485bc4bb76deb9627088e51fdd26dd0f37bb3b98a9da4094d275d55011a844884122daf8b4abe99d43d918eb50d9642436647f60577c5f60fb9b810147a910dd7dd610318392dffa3fcc41f89f461bb5be85bf885b672cecf00da3af4d7d90074c4c0144c4bcd2d49145f8097648ec7230747f7033020309ffbd -Msg = 8c25bd2bed75a33ac134f9c1d445245fd8e580d6148fae11591c2b65382f271772d0941eb0577d2b748c99e7500c207b56efdd56cfa7852a302b47384956a4cec089810ebe987af0e8e47a8b91c488902d2ae4170983539e3adeb74ed451e2815c98ac827f0043930384c335ff3507a347dfbea02be9c172617da42f3fe98a37 -Sig = 56254367f71f6f1fc6944ebd29f8a5592095ebc73ff5222bd815da17bac7f12290f747deaeb29b98c98d31a3ea32508d7683a67d449c59a0d6c16b4855aaa7d6f170c02c5cef61c9b6889207ad021017094d24246c4c90a0de055f02a5984efb67481684667eea36ad6373c36712625fa18d3ed41b1dec22f3bfb0d534e52da6 -Result = F - -Digest = SHA256 -Key = 308189028181008f705d5529b5bf74600abc485bc4bb76deb9627088e51fdd26dd0f37bb3b98a9da4094d275d55011a844884122daf8b4abe99d43d918eb50d9642436647f60577c5f60fb9b810147a910dd7dd610318392dffa3fcc41f89f461bb5be85bf885b672cecf00da3af4d7d90074c4c0144c4bcd2d49145f8097648ec7230747f7033020309ffbd -Msg = 2cb9740e0c1b8867866aa81c64122295854ed681e8eceabf0651bf7a65bc23996acfc8566f4bf42c151b7bf7db94eb57f0fb065546477549e829bafb8d4a67086dd48d87533378edf41d992e7fcfc425759a9c36bb9f4b32eed7767af6566f68ded0adeae25c7a70ca78ec09774d16c8bc357f6d6f7bd441bf62d942c768a580 -Sig = 156747b263be659661e5e35e363d0523303ded9eec1e751575ab3a43156773a056acfd0daaa68625b1cc068458ff9e40ae167594bac846cca2b98bf6e5a4a01e961adfcd70206c05d66e3903a64b61afcbd17391ad0db529944fc2d0d7be3a4da8091cb75910f670d9515ee4f8ff3d62307eb54657e03a330e3cb0661e6fb796 -Result = F - -Digest = SHA256 -Key = 308189028181008f705d5529b5bf74600abc485bc4bb76deb9627088e51fdd26dd0f37bb3b98a9da4094d275d55011a844884122daf8b4abe99d43d918eb50d9642436647f60577c5f60fb9b810147a910dd7dd610318392dffa3fcc41f89f461bb5be85bf885b672cecf00da3af4d7d90074c4c0144c4bcd2d49145f8097648ec7230747f7033020309ffbd -Msg = 127498bf44b97a4a4ed7ad4bbc7c3781e2f83a53149fc95c1a6efa27def23d376866ec4b0c1c23e0e21ed1f677140f17c268b1965aa91b15e62d5749d4fb64024ee7d06569ff897ca026f0f282ff2f17a70dcc2ae8187fd8cfd241004dbaa6b9ab416c96c32b5429703930c543053e88782db49928b39cafc0a4e2d3b1f8ac66 -Sig = 1976fe18cf82bf6ba851626bf94509348f56866930c771c82a6e12c30735c283694a0eeac9337e407525e0a831ba7eff77299c6896a85050b960718a40d5e34b7bf71eae4cdfad0d91d8fa6dfe37f30679ef444ccd360971ddc47e038123b7eceb3072f370796122aaf0b9427563280222328fc0068ae1dbd39a033740789536 -Result = F - -Digest = SHA512 -Key = 30818a02818100c946321761fc295e104cac20c4003e8f6b29ba1bfe247458fd006e27da27dcac8438d1f1b97dd6189f5d98aef968c1ffe5e0976d8a6cb93e9e703519bace48c0cdebe292174745e9fe24bd1283f004a022d2fc3b03db09a0c38a095d064f9dc14abb0490241125af6744535e83d11b252306af61b7d231e843463f79ced2f60f020400a97a77 -Msg = 046a758cd3cb2c2030aaec074068234bf5026c6de0940205461c7ba87581b30e58d406744ad5c24028b9dbe4aa2ae104f39030db668f67dbbcd01b935305ccd6c927171aca022e1e26f486d027f2cf6d21cb29ea4ab19593ccf5a9f2191289f27fed1244fc5b580253e453925fc7d5cea83dbf6134027574a0128f8b6fb0d2a9 -Sig = 3c2a05b92025d230664c230d8546de1d970458cdc68ee8100ee53d5f3ea57593bfa3547a8b91ac6cccfbfe61013c5b313303016d552af8d6c2ef239b30da5c5560539db4cf242edd91517724afd9882f0377536e095f64d7d61bd3b3efe27433717c2d76802f13d676d5f14b561e3e12077c774840dc93d49e9e27a1547d13f7 -Result = F - -Digest = SHA512 -Key = 30818a02818100c946321761fc295e104cac20c4003e8f6b29ba1bfe247458fd006e27da27dcac8438d1f1b97dd6189f5d98aef968c1ffe5e0976d8a6cb93e9e703519bace48c0cdebe292174745e9fe24bd1283f004a022d2fc3b03db09a0c38a095d064f9dc14abb0490241125af6744535e83d11b252306af61b7d231e843463f79ced2f60f020400a97a77 -Msg = eeb93216aa9f6030b5baa3eb3a4bc92d941a0aa2d5bb3a16a2104423450fd30dfdc552ea989b170644d9db85a3686e4a1ddca8187ab2a3f7b0d527daf967667e29bfea953faecb243a07252a2e5ec982960f330aec83bd0577ae12be65dce46f19aee260c65fe4533d4c692003b4449da7bc92c052b6ef08a0a2ea18aef5b6a6 -Sig = 41a8bf967f62204cf9a0e94d9e989907e4d07ce93741be7de06d5c527185c80d60cfb90557dceff13190729582c3fa8af4c28b2a6a43af6e5a13808824541241297af16a138dd281f72a170a00f7d8ef41310ec904477bdab2c32f4e18b1bfd6e3d6d7fdab5d2a23e2450e0e2bae225cfa633d7949cf9d4210e7913d49e5d5bf -Result = F - -Digest = SHA512 -Key = 30818902818100c946321761fc295e104cac20c4003e8f6b29ba1bfe247458fd006e27da27dcac8438d1f1b97dd6189f5d98aef968c1ffe5e0976d8a6cb93e9e703519bace48c0cdebe292174745e9fe24bd1283f004a022d2fc3b03db09a0c38a095d064f9dc14abb0490241125af6744535e83d11b252306af61b7d231e843463f79ced2f60f0203030339 -Msg = f9ea187db1584bae05ec20b78eab1c5f0537e2075799ef8efc3d8773853eef3975e5dd10526c2db1fc07d58a3d251b1ba0f206a0872112f078ea27a5b84ecc7d1ba299001a4bea6326c7dbad3ced7018ba7513ba71ba4464fbbf8ccb4e70b2e5922b3296307feb8c2c341868b48b811ef9c6f39e3debedb42dc69c2c722d093b -Sig = 44b4e5e060265ab860dea7823d1a7d53a1f79fdff6ef2cd4e93ea86e59741817cfcdb88a5517a21b69bd9d73e2426c9429041c40a32845dd098a66cba52d147c32cbc5164144dab8d8642dcbe3dbdadc1cc7589de3a35383165eed8fda2602a54d8a02a9a0a992c95732933efa30c0cd3f4d95519e8d661247ecf9bc5464e543 -Result = F - -Digest = SHA512 -Key = 30818a02818100c946321761fc295e104cac20c4003e8f6b29ba1bfe247458fd006e27da27dcac8438d1f1b97dd6189f5d98aef968c1ffe5e0976d8a6cb93e9e703519bace48c0cdebe292174745e9fe24bd1283f004a022d2fc3b03db09a0c38a095d064f9dc14abb0490241125af6744535e83d11b252306af61b7d231e843463f79ced2f60f020400a97a77 -Msg = e4ae864a45eddc459a59946c7bfd18cfc119394fdf2520bb7612873923d329e89c1c76c3fb6a8cc95943635b9fbf47e599478cc04c9d7d578a1c9589c342f24f1e6b069fc8df90908c0fcabea51ce4f0d099b2f8a592a2db26cdf032994f1dd093229da55656d0e25c46335e341dd8398d9813bf910d778f74ac00fc4c0592b3 -Sig = 8b7a625dbea9214f23cfcffa0554f3a4d64393f80daf01d01422857dcb74772f48b1215750319376cbbdbccfbf241d4cee1f190df04e5bd03e0e4e24e1cff426174a3ad1695ba0401c01fa6711f99fcc91a6852b6c77b2284ae5454d5819278682e6667bde72a69f1c111d1aee504c5a80dcdc6747d19bb287e85cc785714eba -Result = F - -Digest = SHA512 -Key = 30818a02818100c946321761fc295e104cac20c4003e8f6b29ba1bfe247458fd006e27da27dcac8438d1f1b97dd6189f5d98aef968c1ffe5e0976d8a6cb93e9e703519bace48c0cdebe292174745e9fe24bd1283f004a022d2fc3b03db09a0c38a095d064f9dc14abb0490241125af6744535e83d11b252306af61b7d231e843463f79ced2f60f020400a97a77 -Msg = bb825caec83ec0fbb33fb18c1afed63805b394a219bedfbe0f4650906420783751f2752bfd98c2c3f2c654facdefe2723a6684b920c47fcc19895fd9250647499f7a86fe707b6ad982975980783c1d5e9cd580eb1836192d6a3a657f12aa1a918d61b7b087ae60474dfae9a681ab31031148b1be69dd54eae8a1890891d69715 -Sig = 064210dffdb7ea65e1de82f40e0bc3d450590dac4a8ad44427c2d6f13376fa9ae291990023fb678dfbe04a994cb84ac4698d71a613010d886d0aa6015aa092d52bbf857900934f8616444f69b137b651b61105bc64618b1fc69f589cf257d74c0a199c6a2bed8f26e58a0ba72778ab10f4419ddf5b9f3c5ec1c4390c8611713d -Result = F - -Digest = SHA512 -Key = 30818a02818100c946321761fc295e104cac20c4003e8f6b29ba1bfe247458fd006e27da27dcac8438d1f1b97dd6189f5d98aef968c1ffe5e0976d8a6cb93e9e703519bace48c0cdebe292174745e9fe24bd1283f004a022d2fc3b03db09a0c38a095d064f9dc14abb0490241125af6744535e83d11b252306af61b7d231e843463f79ced2f60f020400a97a77 -Msg = 6d47a76b64deb512410e0e8b8b53104e27125fff792a2aa0cccdb006f48e038931ba0c0057ecd0ed2cdcf1f412787892e636d10b27a817a45b519313aeb77f34ddb90ffd5223b2b49180955fd22f687defb966f381628f4946fe3816c706c6b937ebb74a9daae2d136a1ffb514a169770c44239fcf8119f7577da9f885a46282 -Sig = 311263208e8021d33f3125bfcd72677f28e6a807b359ea71bc87b466396e98c6bc5e361b26c4c858ddd129a8dc9cc4dba02b1f39b87a51d184c6a6a1652ae35759477f7939b275e71d09ed52e4fc07900c3ec90785c6b2d6edfe59059a8181aa07a00a56c3bd5dfee7618ac17e0f1ec4e8d252a2c61aaee69abf62212c98f44b -Result = P - -Digest = SHA1 -Key = 30818902818100eb3b1cbf5b0e88bd44b8575e6b40b618103dcb9a51d36e83baf5bf1ab6c0e4261c12664bc1a4d2216820e2dba9ff7c98b23b58ee86e738e0633dc916477e94be2fb8acf19f532842dbb2eb7911f8f7d884ce022395967e4442396e3618f875c856c73f6b89127646df29ff9971c0358fbda0a7673cc08c3f3f26d71411712a5302036ff82f -Msg = caa67650963439fbee5e64bb2f5f5a34f7a9d110ddcb2bfe609803fa1e8606d0475404db50f04613ec972347383ecea6353172847cfa815b2d8449102980c8788108c11b2e820f3802c83a09de86484726e3d5f17263664a860bfb2185c7e354610ad49796b43b721838d18989fe6f20b00623de27cf83d1537741b39923006c -Sig = dec7ad8721af589e22dda67098a77fc1b5dd0216dfb77caa5d71bfd6ae256b49dcd20066694d6c4f7b20b355d8eabcaa92a8d91e077fb0241a62be5e34bc1e577a5fea84af6903dfe94fef4d626709ce5d7abe4b1ce420312f928e00c0f62a4f99409ee3f11efcdd5e390ff2b69af600c9b5738915beae3b7f6d3cce8af4bad0 -Result = F - -Digest = SHA1 -Key = 30818902818100eb3b1cbf5b0e88bd44b8575e6b40b618103dcb9a51d36e83baf5bf1ab6c0e4261c12664bc1a4d2216820e2dba9ff7c98b23b58ee86e738e0633dc916477e94be2fb8acf19f532842dbb2eb7911f8f7d884ce022395967e4442396e3618f875c856c73f6b89127646df29ff9971c0358fbda0a7673cc08c3f3f26d71411712a5302036ff82f -Msg = 1ac33b15b4837e06f6be09f4c0e066cf9766f1154cf1988edb99e0399383288677b632c5e52adfdf75223a4424bcb824b2c7bfe248d464c65e9079f2dc51c7977fee98687fd4794f6f563d5f6445450b59c1ff95d24eadc9c02b68eaa5df64edf81475e5cba8d2bfab021a2fc8a294ea56fcbb163287fafec911b40b365587f0 -Sig = 1ea5f7437790531ab98e5bc93bffd187c1d5a25ec93cb35c02ac5f96b188483fb593ccbb27a4bd9c335657aaf4d5bcaac7c10c7943e4bb4aa66776d35bba92307564cfc7709049b7c9b59e4cce3c6c6cddcbd28d14a0d91afe6439cedc65bca893e6d4347100296cf5b37b889eeb0512121dcdc0ccdc8c10d9215260028be3c4 -Result = F - -Digest = SHA1 -Key = 30818902818100eb3b1cbf5b0e88bd44b8575e6b40b618103dcb9a51d36e83baf5bf1ab6c0e4261c12664bc1a4d2216820e2dba9ff7c98b23b58ee86e738e0633dc916477e94be2fb8acf19f532842dbb2eb7911f8f7d884ce022395967e4442396e3618f875c856c73f6b89127646df29ff9971c0358fbda0a7673cc08c3f3f26d71411712a5302036ff82f -Msg = 0c5b2ceeb622c694a8e3feba0d6a802b19713107f7c2c20b029b8612375680dcea49c10fb9ecf17bbf392ba20a590e784e7c1067da091696ccf7426b817a0c4f50e395b178c1374d564d61aedc05a2f13e9603cdeeff9ad0cbf45ceb96803331a5ef51dcdbebc391d7e549e56cb7651f5187b23f1aee774067597c9b5cb01c0c -Sig = cb554ca80e9c492edd709f35092850a63ee94cd42740397a19cbeadc30306169d47db14b8225e0115437b25c2e2194af74636888a6995d4fbd574c3f3e0ac5896e9864c702019d5f19ae4bf1a5dd3d0f23ba9b0a40b7ab49bf95779cbde4533f81469ee9da651e913bdb62e75c1f166a61a45712d2210cf1267444558710c8d2 -Result = F - -Digest = SHA1 -Key = 30818902818100eb3b1cbf5b0e88bd44b8575e6b40b618103dcb9a51d36e83baf5bf1ab6c0e4261c12664bc1a4d2216820e2dba9ff7c98b23b58ee86e738e0633dc916477e94be2fb8acf19f532842dbb2eb7911f8f7d884ce022395967e4442396e3618f875c856c73f6b89127646df29ff9971c0358fbda0a7673cc08c3f3f26d71411712a5302036ff82f -Msg = cc8e2868722310fb117ca3a52e1839eb85d308b8aa00ed0bf0b76aec8a70eba4f0d14d2d85c5a0e876ce2c8ee59cb36947def6c40a587aa07b368ca8e8a08367018e45b984de0d7f1aa46b977cc18c0cd9b7bb897cbb2814aa0ce8f8c9843e03c86c19f2ba95dd2ac4a466a93aae4b3b05055ff148517ecf43e286c57744a3e1 -Sig = 44263cea7850a2bd4204388df7a14cabbd0bc9f600c3a166d5ab003fc934963165dcb890c90c59eee6893f89fa98b4e162650ce853724e240ff642b68631fc2372a76dd72babe88954bacb6279fd3c92e63115869fcc6e7b6bd95116f9452878508b441227342d99f108dcb8b3408c0f2c49636ebf96e49d7a5b89ce84565243 -Result = P - -Digest = SHA1 -Key = 30818902818100eb3b1cbf5b0e88bd44b8575e6b40b618103dcb9a51d36e83baf5bf1ab6c0e4261c12664bc1a4d2216820e2dba9ff7c98b23b58ee86e738e0633dc916477e94be2fb8acf19f532842dbb2eb7911f8f7d884ce022395967e4442396e3618f875c856c73f6b89127646df29ff9971c0358fbda0a7673cc08c3f3f26d71411712a5302036ff82f -Msg = f2f47bb35772361b88df3595fb27bd1c4bc66da330e8d159afcf332a8e76b4890b749c6dce22ef991b0041214c55ca2a7f16bdf18c09d60f3a2a32fbb24e64d03306c55008c60b29b7471e787c29278cf5dde9ec1fc2549b818e579aa7f0f7afd2749e65eea6b554c47a74a271ebf9ca17e3989cd25b7386eec34a1157a494ae -Sig = c57b082915a8946942059dff585c079a5574f665aa7962eb6c51b8abbc78aaabc40904586bababfa5a9e98030f46db40e7b06320cbb924a16e886b963222c7ace2bec5dfce87964f22e07150124166e58f62e53cba5f6466c6e56caa71be4b5039cf16a43d414e40a56007e86ec995d923db42fb9ec1054cc1f1e4deae73ea81 -Result = F - -Digest = SHA1 -Key = 30818a02818100eb3b1cbf5b0e88bd44b8575e6b40b618103dcb9a51d36e83baf5bf1ab6c0e4261c12664bc1a4d2216820e2dba9ff7c98b23b58ee86e738e0633dc916477e94be2fb8acf19f532842dbb2eb7911f8f7d884ce022395967e4442396e3618f875c856c73f6b89127646df29ff9971c0358fbda0a7673cc08c3f3f26d71411712a530204008aebdf -Msg = 032daa37ba23c04da51121e7e470f7d21c1c377e0ea0d75f6fb43b93f304f0c5ac339c51922035a9636872f7ad2c7f042814f5584a9309a3166d045b3577f3a7479e9f7c7b2bbf055d466d49f0b8d708fdf537e5aa5905cb4eb26a8984fff9bf7f779afe9dcdc62b3eb3fa24d69d65a641c7e46f5779319fc18a58640b236ad6 -Sig = cc71562cb955efc4a5bd0239f688e8828d2268278cd8763761b1274386f7520cd54d229e1ca4799d7efcb6c3e908307ea9233198b148c3e4ece724b9a769abdbe26685238c6ee88299b24c52337eb8c4753d0af63d3163d17093e4da9caa4181f22f1ca36063f8aaf82ea2735fb7d9f0ac161a33e64a7fc89f68c29fcd3a8c89 -Result = F - -Digest = SHA256 -Key = 30818902818100a16c7fcbb8d6fc602277e9cebb1790bd14999ef7670400c0bd0ea6116fc72e29b868c8b62ada0e7b4cd351b5a76c177f158b4f724f1d287d66df114eabd68e3e8d12409b69f96e334c0daff79392d184b9102ea5c4ec13052bfc509d9ae76851e8557a417b86e9d37687d243cf48812ce621c5f39404cd6b22a60beef744a42f0203681201 -Msg = e24695128cc0f0e9905a6dcc1c54e481ef431c0426a13e2a51888984ccbb48864de601e8b927f04d3cccb323985f47cabde033f89b51035c3478f881f5e0fef64621deac6061b59f5e1ba5b8971fcaf22cda70bdddd883a021874621753e48e9f47d95242877292720cdaa55c29d564363bb3a1a953ea43d403fdc2cf5dd0fa9 -Sig = 88b9604e95ccc993514a258d5a6785836b3c0ceda1f9a8359b1ec9592100c9b47572fb17d2c24dbd6b99ab46c408b7bd4b8094a44d05c2cde1145ab516b36926358f980ce1eb2e92793f65f34f09a4053f8deb77025052e12922e3f14823859d7e49aa54b7a7f0b20c1672e1a278ec631f955b4c19da05dd9c1f4487a0e08f31 -Result = F - -Digest = SHA256 -Key = 30818902818100a16c7fcbb8d6fc602277e9cebb1790bd14999ef7670400c0bd0ea6116fc72e29b868c8b62ada0e7b4cd351b5a76c177f158b4f724f1d287d66df114eabd68e3e8d12409b69f96e334c0daff79392d184b9102ea5c4ec13052bfc509d9ae76851e8557a417b86e9d37687d243cf48812ce621c5f39404cd6b22a60beef744a42f0203681201 -Msg = 820e27d35ad139ca305e9eb26c128ff59dcac86f05522e7e5721b458bf437fa22396493ea93903647942bef4c4afcb0a05a021d386c300a0260fd4395bb55c7473530b061f6baf983115501ea5f05b64de5e00e933f1d8f1aa20cbd6033f319ff9ae37d3c4508490e23e1dd717bd862ab36e2b5913c5fe996abc60d6c2c945 -Sig = 519c717e336e7a28d648acf178931f6cb958684979b23e1d53ad32aa242e327699ca1a1f294feeb8b6ad8668b75a3e42ca4ce08a91c3fcae06c7974e6d9e23e622363cae4cdcd1914d31f38f95002b1a6da863e70c244411cb1be90ffea30ca4e345429e58eb751f676ea7ebee4363c552aa5bda5d57908fd5a87142db8d9821 -Result = F - -Digest = SHA256 -Key = 30818902818100a16c7fcbb8d6fc602277e9cebb1790bd14999ef7670400c0bd0ea6116fc72e29b868c8b62ada0e7b4cd351b5a76c177f158b4f724f1d287d66df114eabd68e3e8d12409b69f96e334c0daff79392d184b9102ea5c4ec13052bfc509d9ae76851e8557a417b86e9d37687d243cf48812ce621c5f39404cd6b22a60beef744a42f0203681201 -Msg = d8330fa49a0a75f27470a2898ec1134666515fb467ad6b74be23dde26984d3f59028d467193307167717a2abc25aa6790d9acaa8f4ceb49274ce6f6d00161a2bd0c6dd9e7dee22e0cb0901f2c5c7fba31010ecb379453b39d0c95442f9c058bb40161291edc32e16184ea5a7bf907c8c16bbae1f1e9b6730791b72a97d0af56e -Sig = 5a692ebff6a43c5e63602018577fcac17415fcec4087e4c41065da33dbd7d87862de2e0c003bef2ebd0a411884811c7fbfa893590ea885acfb023857b904b0aff0e5061f2fe3376be5ae4de0510b2c34be6e0192722e63dd6f3fa9a7f8a191b7160997c463d7f7d46577e6cce534da08d1e5245b3a03b780f8144070cb66e6ff -Result = F - -Digest = SHA256 -Key = 30818902818100a16c7fcbb8d6fc602277e9cebb1790bd14999ef7670400c0bd0ea6116fc72e29b868c8b62ada0e7b4cd351b5a76c177f158b4f724f1d287d66df114eabd68e3e8d12409b69f96e334c0daff79392d184b9102ea5c4ec13052bfc509d9ae76851e8557a417b86e9d37687d243cf48812ce621c5f39404cd6b22a60beef744a42f0203681201 -Msg = 243db9a1c203c792db3204bbfb3cea400d6e5efec0c935092f0df759c016e3c04c6b331f8115a1da85ad2989dcb911f18c3927327f7c4a4128382b996ada552eb51b6ba372d4b1bca113ce16c06ed116ef97711f53319908b8e224cd7aaae584a573ea935be90121768b7cca6f0232977fb2c62d03902c442533685bb92d99aa -Sig = 8d1a40fbd8186e3cd1dfbb529e1ee9ab13a6c8e6cf04e663a4de2349c05334f0ab3c694ea89397ca3e70a2a1957ac75a6544842af88cbe3ebf641f68cbce75638da1c953c3f594f8ee8b3825ab4aaafb9fb152f05bb7dcc07e3b666ca8626e69bb262bc240398007b871b7790eca96512d64f3ff94470224fa075ce3164cb1e1 -Result = P - -Digest = SHA256 -Key = 30818a02818100a16c7fcbb8d6fc602277e9cebb1790bd14999ef7670400c0bd0ea6116fc72e29b868c8b62ada0e7b4cd351b5a76c177f158b4f724f1d287d66df114eabd68e3e8d12409b69f96e334c0daff79392d184b9102ea5c4ec13052bfc509d9ae76851e8557a417b86e9d37687d243cf48812ce621c5f39404cd6b22a60beef744a42f020400eefc9f -Msg = 186594f37c9ff1fe3ef55bbb511dfebdcf5b64723cacddf80f4425326e3b411c3a84aa5b4b1ead19fd8e120feb8cfce3fafd10b59a21d9f5480e6b77575d47c9f1237fc459231b617241bace853a7dc13f93200df9cf6a733de5c8ba85f13501452a5c552c14017fa7f79d1fa88f48ffa505dca1e31e581af4b382237f61d16e -Sig = 9301ae4d76e84df108b70d94400c0b2dbf0b024fd5cdd5821c408ca2f52b7d4466a43abcbd8f40e9c07c4e4e56ad1ff471327e2e997d4e372d82c3e9f9db4d40d4d6308b4f7e5ac91c4ee2c194c038f8275dff82b9cce56ccbbd2ac3d12550f184b1cf938cefc85afc588c45c1ea055da0d4dadda266895cb4b84b846d8fac13 -Result = F - -Digest = SHA256 -Key = 30818902818100a16c7fcbb8d6fc602277e9cebb1790bd14999ef7670400c0bd0ea6116fc72e29b868c8b62ada0e7b4cd351b5a76c177f158b4f724f1d287d66df114eabd68e3e8d12409b69f96e334c0daff79392d184b9102ea5c4ec13052bfc509d9ae76851e8557a417b86e9d37687d243cf48812ce621c5f39404cd6b22a60beef744a42f0203681201 -Msg = 2ab6c6ad26e227177b6458a1caf18bc083c162a1f18b0fbc77b0baac19b7223e3df988c8b39dc9bcf4c7ca7ca70d18706a2bd057cef7bddaa397c16777f1763c596314c2e3b4961d774b1801c89f84c79cef6dc0d1333bc99e52891f1c95cb75055c3444bb10d7638c580cd7349015eca37701850127d1b0f04bda7d118c6a11 -Sig = 8a270d2b49cd2897df192e12121ba6b92304e89a429753727e8cd7fd8395ee72788ecd58d91ab99b4385778fb8f9a5458a79790def0c05de8b5646c16f2f8f67652708573216f13335fbac257e4f6e46119fe5b50c309a7c01731c8f8fc240fc68f08f25879a32156dcded375c6ecaf0bf861066de3a034bbc00844dc74b8b6f -Result = F - -Digest = SHA512 -Key = 30818902818100ed88e482e9d7d30dfb6ff2e20bd93b5cf028fd5e49f9415b72f77602e688e9ce0d153c5131cf1223ee78e322f207edc1eab0832efeed4146e3af7715a301fe847605e009d18c05db26b3034ad84ecbf2728a6d384694625528e1002a83f47166e46dac3d0d7d146fc06419a2d2a64a9482267bbf30d666e694e5b2180c3e8f09020322478b -Msg = 079d6e31776603dd6cd9f0856940e75fdf130e4846beb3ab6ba33ca30c635c64a2598dd77e68ba8417f73bb5a33907d8e4b2252645f7648225b54ca473f454767b9d56beff3a3ffe8afe0b980105f1367bdcda69524418917b3355fc121cc9523970b1302365fc136cf64778ac2b0b414b9a155b972e379e13273ef4126223be -Sig = 9563554bdd55d7eba323e370a74810726a6357780b763aa86d8c1e0394893db72bf85cceb76ed11e801483717d746169cdaf652c9cc11e0fa006166e05e54d1c2dbea9f8a01402f929d8d8e8eb0f1f028b98a779d9c44642df01ccc649cac24a4cc760cf52bd7eb4bc0f1809be7cdded3e0965f3462841ae6d0a1626e061bc4d -Result = F - -Digest = SHA512 -Key = 30818902818100ed88e482e9d7d30dfb6ff2e20bd93b5cf028fd5e49f9415b72f77602e688e9ce0d153c5131cf1223ee78e322f207edc1eab0832efeed4146e3af7715a301fe847605e009d18c05db26b3034ad84ecbf2728a6d384694625528e1002a83f47166e46dac3d0d7d146fc06419a2d2a64a9482267bbf30d666e694e5b2180c3e8f09020322478b -Msg = 6284989fb234eeb086e39dadb61cd985c75ff1e00fb88c561a9632de4ddb0f89c930f470939b9feaf1533c0317d32c2a022d042aa5a1d95c436ebb1a1ce87f764bcbc22cefcf2ad6897cef5fa5409ababdbf0dd45a6ac4c77c535a503c3f4f83b0fd08bd0ff717db1507bda9a98cad9dbebc13c6773cd5ff8eee1968f60a0717 -Sig = 0db9d569fd848047e693ef1826fc1b7aaf1fe449882843455dab2829d418fde0b90b6c2a0ab2bf1122ded1708c9442b05a6a44d42bf5313ea793ca1482825e8327247d3f35a7fc43457a3f55c60e3f506d9df6b7037ab5db46b440edf014b4def3936a3ff7c1feb4e4ff366731ef519e4408863ae2e8048bbfbdc9101857e893 -Result = F - -Digest = SHA512 -Key = 30818902818100ed88e482e9d7d30dfb6ff2e20bd93b5cf028fd5e49f9415b72f77602e688e9ce0d153c5131cf1223ee78e322f207edc1eab0832efeed4146e3af7715a301fe847605e009d18c05db26b3034ad84ecbf2728a6d384694625528e1002a83f47166e46dac3d0d7d146fc06419a2d2a64a9482267bbf30d666e694e5b2180c3e8f09020322478b -Msg = 310c04b35510e779f1b1e7177d18d32eeaffd15b2b210054f4ee5b33c284e1111bdbf3d7173ffd511f045884f5756f42f40d21fb9aea67d6437e37003788a844e74256dd74dc0888712a90ddea9af3dea568cad1a715e84bfa153d8eaec8fa141eabf66c75d05145708b57c9656fa72c847894845d8acbdba21a36822e2b21a9 -Sig = 9029571a3b5a0c4c5cd165661cec2868c896240281172a4089d5bff1214d7721a692383bc733d131ff7b5b41f1c8a15428b4d80bb3b225bd381edc5df7ab230e499116e4b336d1b0731e55782b088eacb9c7cc4e31a629d29dd81a31d87f0d169b975f7214e356d28366002ae65dcfe857cb1be25083e8d5c24303a52b73fdce -Result = F - -Digest = SHA512 -Key = 30818902818100ed88e482e9d7d30dfb6ff2e20bd93b5cf028fd5e49f9415b72f77602e688e9ce0d153c5131cf1223ee78e322f207edc1eab0832efeed4146e3af7715a301fe847605e009d18c05db26b3034ad84ecbf2728a6d384694625528e1002a83f47166e46dac3d0d7d146fc06419a2d2a64a9482267bbf30d666e694e5b2180c3e8f09020322478b -Msg = a86c47e276bd53067d97392bbdffc290d338f3b38fd8d409e22176f1fd8d33ebb7ab38052f2a4197b333a430e1fd91d00c9b9858e2186b3e4bc5e68594d24cedcc1cd4676e4664cb410b9ccd7dd2162e2f83ec2fde9a7b4b6f7a67254603e0c0ae6623ee7b38430beec629ead8a9d910029af820cd878b9716e602b95c4975cc -Sig = 85b7f16f782fb9ce2bc1b00114aec5fedf2e279ba0bdc4ae6a0e38e41bab63353ced11ccf3e55c8fd5dc99736f97ff891d13ed59c1f123ba4ce3daffbe08aedbbb7a0a90ac042fdc3f54253eb61b29b64f194610d42087189763baa351e0fa61b50a5c9875c0ca8538bf2187ef37d0cb1e6b5352bd017064955f2a0740db628f -Result = F - -Digest = SHA512 -Key = 30818902818100ed88e482e9d7d30dfb6ff2e20bd93b5cf028fd5e49f9415b72f77602e688e9ce0d153c5131cf1223ee78e322f207edc1eab0832efeed4146e3af7715a301fe847605e009d18c05db26b3034ad84ecbf2728a6d384694625528e1002a83f47166e46dac3d0d7d146fc06419a2d2a64a9482267bbf30d666e694e5b2180c3e8f09020322478b -Msg = 155958a8c08e561a69d5f41efe76304ffb0ffc658a2c8765ee17bd1521f211b3bc027ae6184ebbf5b369e837d58c26cb73e7b28853392537719ff600a2a9402377b3c5e9647334d921cea72e51f07089629b15e4b4bf99c7fd4cfdbeec44070a0c144297ec24462e7dad39ecbbcb96f38fd32d5ff4e66c7c5ac6dc3647e9eed0 -Sig = 5535cc093d3e54097bace607a8f75ec913c4d0219663ce6a3b493480d14bac47e85d23c1b7562f91df292725965c31450558f46904b8e50b42bf2e0b6308056aa83691ca2349e39d167baf17d069d11db8390dcfe04b5550137dca253ed5c614cf9e50eae496bddb27c70ff6615a5c5b8a340fa314dd672dcb5d214728d51002 -Result = P - -Digest = SHA512 -Key = 30818a02818100ed88e482e9d7d30dfb6ff2e20bd93b5cf028fd5e49f9415b72f77602e688e9ce0d153c5131cf1223ee78e322f207edc1eab0832efeed4146e3af7715a301fe847605e009d18c05db26b3034ad84ecbf2728a6d384694625528e1002a83f47166e46dac3d0d7d146fc06419a2d2a64a9482267bbf30d666e694e5b2180c3e8f09020400903695 -Msg = 0a87d48ac27cdc05dfbd93afab38c18a339beb5055180e5a196694c0450880c22bd1ec67c6a8b5630589753e67ccb1b3c8aa54577bfd5c7b9847d45297f602571ee6e1e91828d23807028e659b365fe583879027837a2176c75ac020777ef5d88bcf9d59e184994c8c30c76c70ff31e80c3c85089617c6144da640720b29c10e -Sig = d808e2fc131998e6ac727bf628dee867b9849f47bb92ab663192e83659e5091511db6bd36bd2e5281fee2157549212982748584abaad8b188e389776896f5b60b82441b6fd83b6494ede3f6bb74a795a10c344b557b92b13d8b7f172721720664a5e3031d218ff2dde8aeecd21d6c96ecac396ef78001fec388ea8ac9bb17e9a -Result = F - -Digest = SHA1 -Key = 3082010a0282010100ddc1676352ca011a235db9b4bb41eab81a9f3447a34c3626a531e3319665edd9c9e269788323ac7f2db36b9106f4b2148b7c7a309a0b7482ff08cc97c792bf8e2319f42aa51078a29a4ff90c0e29563059a8608e8809a04bf45f1334b23631d99253ba230dc640ffc3a70c27ce5fc7ebd1adfe68e4462790007b39f5d5b47dd9bd04d0d08ac3b586fd6cc8e178d52ecbc09434d4b89d83cadef6c53cce17788e87b551aa0b507893f308e23da919a4aa01183ddc831a99a3e3c4e5bffdc7e8c8b6800699abdf11569ba66e5892b2e55c6f8578a12f5e304dc28ffbd5ee2dfd2bafabac77ba67031f588e73cf7ba344396d166f5392ad36187b45e15916aaf5b70203748d77 -Msg = 9e7d8a94561c95facc082974fcdbcb813e1b37fdcbb1013a7d9c7c53d6e6dbbd44d7961fa36a106404fd760ead4ceacd61a0e150e144c95bb239f01a212aa1b585a29024c47d7745189d022b13dee9b9e14b5b70ce92a38607b50638a503ea61e7473e4abf3f15c4914f947437770f6f48836f079a81d7e4057887566a5700e9 -Sig = cd0a22729f6a2eb4c7bd6c1ebcb9510ba1aa6e8921109d7c1fff6f7cfc36691b69e89656b9d7cead82356efd740faeddb0e3cba5a98656b841f2e98d296b995b758074fbd97af3baa4b28e9df89e9246eed76ae3eca1bd213a81b5d15411dff648b887a8835fa2f7bb2f78be5c4be8dfb1ef0d6b08319685edc437e56da3c8a532ec8c7382f74859530eef7adffa68ede91e3fe4bd29f43bc8ff813fec7d0a15aee6de202e4f32fbce4621807cfab47bc395ac10368d931bd73a86d40a38cfa898668cf76f0f4eff32223c0e452132c36b2c16f228286abe0f3fd4f0eb73e5ad989ca19872097948c6152320daed43bc2a98c3468a610d13ca086bd8ea89bbce -Result = F - -Digest = SHA1 -Key = 3082010a0282010100ddc1676352ca011a235db9b4bb41eab81a9f3447a34c3626a531e3319665edd9c9e269788323ac7f2db36b9106f4b2148b7c7a309a0b7482ff08cc97c792bf8e2319f42aa51078a29a4ff90c0e29563059a8608e8809a04bf45f1334b23631d99253ba230dc640ffc3a70c27ce5fc7ebd1adfe68e4462790007b39f5d5b47dd9bd04d0d08ac3b586fd6cc8e178d52ecbc09434d4b89d83cadef6c53cce17788e87b551aa0b507893f308e23da919a4aa01183ddc831a99a3e3c4e5bffdc7e8c8b6800699abdf11569ba66e5892b2e55c6f8578a12f5e304dc28ffbd5ee2dfd2bafabac77ba67031f588e73cf7ba344396d166f5392ad36187b45e15916aaf5b70203748d77 -Msg = 2dc3fc128057e1c291f9b55ace78d9473dcd3560a7ac7d1bfc59b301f3bdee5ff1b9593f2cba7e96108ec5bfe2763728a37c884c370655e1c6acaa526347c76feb4a24643056b2e7570864b67f16ee41a49acda3c2ad87d73d38342980073deae41f6468d452041e30109a27ee8085f907cf0a4f91c99b6728a6596e9326d739 -Sig = bb75bbdbaea3269a01bd9b5e492178b7ec11abfb59d417cd5cdabb8a4b922b0f21ae69e9da7a9f628c9cf396bfeb75c836bf734561e68e91fbefeaf0f57f261c936bef741527187a5315dbf584f332fe3ed8a44367688e28998675c31f2b1cc3fa87faa4abcadff5fc64025c9589149e41c45a5037fe1c27d320d5a40ab6119b639ba052ad1d8a0339fd3a03f1356bcbc056c4f604862df36b66685feccfe5f93f2fe0c957a02e8d41a574ab0e56d8672d338de761fc9e9a1b801ac5dbd56c1592efa77f782d1dce3531efa5c7f569ddc313f5dce62466ddf269bd5b780f7c7c68b5232e1f77f7b4a8eef8a978eeb56d691c3e4a95965867c61d3c8e7badda1f -Result = P - -Digest = SHA1 -Key = 3082010a0282010100ddc1676352ca011a235db9b4bb41eab81a9f3447a34c3626a531e3319665edd9c9e269788323ac7f2db36b9106f4b2148b7c7a309a0b7482ff08cc97c792bf8e2319f42aa51078a29a4ff90c0e29563059a8608e8809a04bf45f1334b23631d99253ba230dc640ffc3a70c27ce5fc7ebd1adfe68e4462790007b39f5d5b47dd9bd04d0d08ac3b586fd6cc8e178d52ecbc09434d4b89d83cadef6c53cce17788e87b551aa0b507893f308e23da919a4aa01183ddc831a99a3e3c4e5bffdc7e8c8b6800699abdf11569ba66e5892b2e55c6f8578a12f5e304dc28ffbd5ee2dfd2bafabac77ba67031f588e73cf7ba344396d166f5392ad36187b45e15916aaf5b70203748d77 -Msg = 02e74a1d1d61bc6c856a20fecdd64c6a011542b3e7629c1c843e2d3ee21de557115ff5e56c8134741d95c1b4e4efeace14224df8de2b3d48d1eb68c5a2dbb6c429fb7472ad0bb1ad61fee8182eace06eb3c7d1168b10c8f8ceca4c90da6f424053a30eeb6866fbbf588ddd523573f5f1e9ec1435767a03d682c423c412435174 -Sig = 7aaab14a1a89468ab4b583a8ad03df515e5d34b0c36eeabff6c4532385d448ce99e4ba35c927751cd499fe3080e004a903afe833667965fbd2d97f8a4b617f805ec88bba1133c5c304e2183797887db331a597d1e5f673264f6fcce750b504ed24fc066af248833d42cee935779bcfa02b73dcd29254b4dcbe831b70c289f6998884bd216f320e4615fec8181d17654b7201b62e8610e69dbd8cbad6de1a5cc1b4619b2680e7ddc27c02a9b8dde6efecf0f6c4551bd38b46f10e78692887bfae9cde1cca4e33733797144c6cded6b58cde54c5b877e5d10d4775200c0f4eff5ccde7a42788ac22f762411da48826b670297f2b07435d61a31e063ec1a2791a32 -Result = F - -Digest = SHA1 -Key = 3082010a0282010100ddc1676352ca011a235db9b4bb41eab81a9f3447a34c3626a531e3319665edd9c9e269788323ac7f2db36b9106f4b2148b7c7a309a0b7482ff08cc97c792bf8e2319f42aa51078a29a4ff90c0e29563059a8608e8809a04bf45f1334b23631d99253ba230dc640ffc3a70c27ce5fc7ebd1adfe68e4462790007b39f5d5b47dd9bd04d0d08ac3b586fd6cc8e178d52ecbc09434d4b89d83cadef6c53cce17788e87b551aa0b507893f308e23da919a4aa01183ddc831a99a3e3c4e5bffdc7e8c8b6800699abdf11569ba66e5892b2e55c6f8578a12f5e304dc28ffbd5ee2dfd2bafabac77ba67031f588e73cf7ba344396d166f5392ad36187b45e15916aaf5b70203748d77 -Msg = 4b4f319b5c8c53e7a4749c4ee58b0b25365a96da57721b2044af994c0abaa0ffdad106065ccbdc7e4556a03c2c84b46c9a860f7760b7332b2ddc5f165fa905321a887ec89797fd8ebfefc212f92c905c402a60cf780c57510283f6ac8e4d913330fb02a8b7f89e5d3ac7689af38c853f50cef0aa487b6fdbec2cc6d63eab2a49 -Sig = 1ee9549fc8cf651a593e8c4516cb1b3d58099e6334b2b35c5da1e1c549e4a7769e92d51b52f622d5da43f8778c0e0f860f7e3a02268ab7a64523c0eddfd7db7941896a67bb33895d577be6c8c86af72d4e2feb5968eb2f04e462a2ed9e648c36c2d6667832a640d393fc11494a7379fb4fd6f0bff27718d8c9cfe0c9f2dd82472dbb6b751a5398be3f9aa67919461efa7bac3c6d5fc42b2149acdf29f8a30a98ac89a6a48833a3b2658111094372616986479256617247e60d95bf797b503d0dfc61b6336beed318d36e9f3575454cae1df787ff7f163f40598694ac891e09f743e02f442a1ab5ce1148cb66fde982ccb8ec945e59c57cfd5747cd5de5f3bf12 -Result = F - -Digest = SHA1 -Key = 3082010b0282010100ddc1676352ca011a235db9b4bb41eab81a9f3447a34c3626a531e3319665edd9c9e269788323ac7f2db36b9106f4b2148b7c7a309a0b7482ff08cc97c792bf8e2319f42aa51078a29a4ff90c0e29563059a8608e8809a04bf45f1334b23631d99253ba230dc640ffc3a70c27ce5fc7ebd1adfe68e4462790007b39f5d5b47dd9bd04d0d08ac3b586fd6cc8e178d52ecbc09434d4b89d83cadef6c53cce17788e87b551aa0b507893f308e23da919a4aa01183ddc831a99a3e3c4e5bffdc7e8c8b6800699abdf11569ba66e5892b2e55c6f8578a12f5e304dc28ffbd5ee2dfd2bafabac77ba67031f588e73cf7ba344396d166f5392ad36187b45e15916aaf5b70204008ffac3 -Msg = f62e0e07bb71ca7f93736ce1d2c29a4fe7a5c8769955a364916ab09a19943063238b48648d495e73a376c6ade6249ec20cbcf69447383501ca93b7fc8a7ebbe341557d0cb9519fa247ffcdaf95f1a179a5b3c4121300572b9b369129da08a97b5973f62ac7f355b186f6cb106a916b1cbd727a198616d28a0a3c84489499c1d2 -Sig = 66b378c5fa44c443f0ec885d55dc877612246703342fc8ef38a98c26325e52b9772f30d29f4a23b67153cdab1f84a615208ef809d84be83c57cce32ec9f9dd07a64af14f964c73d5a8f9fbafc07a68dd046cfed8e1c54c6fed3a4bb7c9ec153b64bb6c1591f1f78f834c44153da1dafbaaa9d44b8406108d70577ea8497b33aa09c5f2b63906949f1ac098d34c82a80a37d2f4164ea88bcaa30ead54f3b0391485a8eba084de3be452de37dc52d278d757c70c1b75bc1ce7c1441b0cfed2ec5e045bd77e732715c593e2a3b21ad81f7f92b6eb9ab23f84cfbdadfc89c75dd4474e752bcf479805f2b4fc5b953e2aa82b72044fb865cc93124096c14e0a645947 -Result = F - -Digest = SHA1 -Key = 3082010a0282010100ddc1676352ca011a235db9b4bb41eab81a9f3447a34c3626a531e3319665edd9c9e269788323ac7f2db36b9106f4b2148b7c7a309a0b7482ff08cc97c792bf8e2319f42aa51078a29a4ff90c0e29563059a8608e8809a04bf45f1334b23631d99253ba230dc640ffc3a70c27ce5fc7ebd1adfe68e4462790007b39f5d5b47dd9bd04d0d08ac3b586fd6cc8e178d52ecbc09434d4b89d83cadef6c53cce17788e87b551aa0b507893f308e23da919a4aa01183ddc831a99a3e3c4e5bffdc7e8c8b6800699abdf11569ba66e5892b2e55c6f8578a12f5e304dc28ffbd5ee2dfd2bafabac77ba67031f588e73cf7ba344396d166f5392ad36187b45e15916aaf5b70203748d77 -Msg = 60c3a8bb6b10b30395cb1a4b8faf39cabe5cc3b79057b769115390bdb9afbdb8883f506d564ffa2164e537ae3647c625a5bd5cb7309899d693733b979bb9925b386834aed414f16fe32e0932bb869de2a60f64ab36e29f16d9864f76ad6fa58496c4ba468d6680353b2df99ec675a649ebd943594d3eb1730c1434229ad8de7a -Sig = 5d36b5e092060e763963b87b41b027a1356a1d5068c8ddee205f0b012c27d6906e75ec2fa93cb840d69ff3c149653802659ef116c7d740afd3c4050193cb488493a9bf1025ff3918ffdb073e5b2f705eb771e1e7c91dbb9a9e18b1a36951d60671e25e4042776ca265bbba032b1dd5aae000737c49583450e072c4571ece1b5af9403bec0ee4eeb1e14165c8df6d2eeb93f10ba3dbcb9ff92abc2773d044560fa162e9e5b7f6915184e6ff3548df75ef7fdc8f2c869edbcb1b4a6598fd1acaa394f501eefc3fe5e6945f4143509d6cf8b4c8418e4f26f53400fc50d00cc4491ad16b58785fcc6f123d52b482764225f66998b3abc3b3e2d5e8741f3170ecc574 -Result = F - -Digest = SHA256 -Key = 3082010a0282010100c47abacc2a84d56f3614d92fd62ed36ddde459664b9301dcd1d61781cfcc026bcb2399bee7e75681a80b7bf500e2d08ceae1c42ec0b707927f2b2fe92ae852087d25f1d260cc74905ee5f9b254ed05494a9fe06732c3680992dd6f0dc634568d11542a705f83ae96d2a49763d5fbb24398edf3702bc94bc168190166492b8671de874bb9cecb058c6c8344aa8c93754d6effcd44a41ed7de0a9dcd9144437f212b18881d042d331a4618a9e630ef9bb66305e4fdf8f0391b3b2313fe549f0189ff968b92f33c266a4bc2cffc897d1937eeb9e406f5d0eaa7a14782e76af3fce98f54ed237b4a04a4159a5f6250a296a902880204e61d891c4da29f2d65f34cbb020349d2a1 -Msg = 95123c8d1b236540b86976a11cea31f8bd4e6c54c235147d20ce722b03a6ad756fbd918c27df8ea9ce3104444c0bbe877305bc02e35535a02a58dcda306e632ad30b3dc3ce0ba97fdf46ec192965dd9cd7f4a71b02b8cba3d442646eeec4af590824ca98d74fbca934d0b6867aa1991f3040b707e806de6e66b5934f05509bea -Sig = 51265d96f11ab338762891cb29bf3f1d2b3305107063f5f3245af376dfcc7027d39365de70a31db05e9e10eb6148cb7f6425f0c93c4fb0e2291adbd22c77656afc196858a11e1c670d9eeb592613e69eb4f3aa501730743ac4464486c7ae68fd509e896f63884e9424f69c1c5397959f1e52a368667a598a1fc90125273d9341295d2f8e1cc4969bf228c860e07a3546be2eeda1cde48ee94d062801fe666e4a7ae8cb9cd79262c017b081af874ff00453ca43e34efdb43fffb0bb42a4e2d32a5e5cc9e8546a221fe930250e5f5333e0efe58ffebf19369a3b8ae5a67f6a048bc9ef915bda25160729b508667ada84a0c27e7e26cf2abca413e5e4693f4a9405 -Result = P - -Digest = SHA256 -Key = 3082010a0282010100c47abacc2a84d56f3614d92fd62ed36ddde459664b9301dcd1d61781cfcc026bcb2399bee7e75681a80b7bf500e2d08ceae1c42ec0b707927f2b2fe92ae852087d25f1d260cc74905ee5f9b254ed05494a9fe06732c3680992dd6f0dc634568d11542a705f83ae96d2a49763d5fbb24398edf3702bc94bc168190166492b8671de874bb9cecb058c6c8344aa8c93754d6effcd44a41ed7de0a9dcd9144437f212b18881d042d331a4618a9e630ef9bb66305e4fdf8f0391b3b2313fe549f0189ff968b92f33c266a4bc2cffc897d1937eeb9e406f5d0eaa7a14782e76af3fce98f54ed237b4a04a4159a5f6250a296a902880204e61d891c4da29f2d65f34cbb020349d2a1 -Msg = f89fd2f6c45a8b5066a651410b8e534bfec0d9a36f3e2b887457afd44dd651d1ec79274db5a455f182572fceea5e9e39c3c7c5d9e599e4fe31c37c34d253b419c3e8fb6b916aef6563f87d4c37224a456e5952698ba3d01b38945d998a795bd285d69478e3131f55117284e27b441f16095dca7ce9c5b68890b09a2bfbb010a5 -Sig = ba48538708512d45c0edcac57a9b4fb637e9721f72003c60f13f5c9a36c968cef9be8f54665418141c3d9ecc02a5bf952cfc055fb51e18705e9d8850f4e1f5a344af550de84ffd0805e27e557f6aa50d2645314c64c1c71aa6bb44faf8f29ca6578e2441d4510e36052f46551df341b2dcf43f761f08b946ca0b7081dadbb88e955e820fd7f657c4dd9f4554d167dd7c9a487ed41ced2b40068098deedc951060faf7e15b1f0f80ae67ff2ee28a238d80bf72dd71c8d95c79bc156114ece8ec837573a4b66898d45b45a5eacd0b0e41447d8fa08a367f437645e50c9920b88a16bc0880147acfb9a79de9e351b3fa00b3f4e9f182f45553dffca55e393c5eab6 -Result = F - -Digest = SHA256 -Key = 3082010a0282010100c47abacc2a84d56f3614d92fd62ed36ddde459664b9301dcd1d61781cfcc026bcb2399bee7e75681a80b7bf500e2d08ceae1c42ec0b707927f2b2fe92ae852087d25f1d260cc74905ee5f9b254ed05494a9fe06732c3680992dd6f0dc634568d11542a705f83ae96d2a49763d5fbb24398edf3702bc94bc168190166492b8671de874bb9cecb058c6c8344aa8c93754d6effcd44a41ed7de0a9dcd9144437f212b18881d042d331a4618a9e630ef9bb66305e4fdf8f0391b3b2313fe549f0189ff968b92f33c266a4bc2cffc897d1937eeb9e406f5d0eaa7a14782e76af3fce98f54ed237b4a04a4159a5f6250a296a902880204e61d891c4da29f2d65f34cbb020349d2a1 -Msg = 915c5e4c16acfa0f49de43d6491f0060a944034475ba518572c08366a8d36c7f1e6afc11e5e4649757bf7b9da10a61d57f1d626847871d8a2948e551b54167c79de88d3ebd40a3e35809b996a53348f98a9918c7a7ec606896ed30c271e00c51953dd97aa6a8fe1cd423c3695c83fcf45120ec0a9cd1644642182b60e599a246 -Sig = 3d57ea5961db8fc144301ca4278f799911229d865ea3e992c7fbc4d03c6551729e26034e95dd71da312340e4051c9dd9b12f7700a821fe3b7c37785d5106350b667ac255a57c13da5842d90bcadea9e6b1f720c607d6893a2caa3c5f3c4074e914451a45380a767c291a67cac3f1cab1fbd05adc37036856a8404e7cea3654019466de449ad6e92b27254f3d25949b1b860065406455a13db7c5fe25d1af7a84cddf7792c64e16260c950d60bd86d005924148ad097c126b84947ab6e89d48f61e711d62522b6e48f16186d1339e6ab3f58c359eb24cb68043737591cd7d9390a468c0022b3b253be52f1a7fc408f84e9ffb4c34fa9e01605851d6583aa13032 -Result = F - -Digest = SHA256 -Key = 3082010a0282010100c47abacc2a84d56f3614d92fd62ed36ddde459664b9301dcd1d61781cfcc026bcb2399bee7e75681a80b7bf500e2d08ceae1c42ec0b707927f2b2fe92ae852087d25f1d260cc74905ee5f9b254ed05494a9fe06732c3680992dd6f0dc634568d11542a705f83ae96d2a49763d5fbb24398edf3702bc94bc168190166492b8671de874bb9cecb058c6c8344aa8c93754d6effcd44a41ed7de0a9dcd9144437f212b18881d042d331a4618a9e630ef9bb66305e4fdf8f0391b3b2313fe549f0189ff968b92f33c266a4bc2cffc897d1937eeb9e406f5d0eaa7a14782e76af3fce98f54ed237b4a04a4159a5f6250a296a902880204e61d891c4da29f2d65f34cbb020307485b -Msg = 03d2f0693517cffb2b724c1f30502c5359c051c1bcd88dc1dd54b89e6981009d275a813b2bf016b74d0f6ed0d91e62d0884785c9afd8fd1fb7e99246cd4005cdda71a39cb649197a996d8ad2d23fdfb6bb015f24ec3d7f88af64fb83b4b525eb06607d133eec834cf7d6c9ab817b4c0dda370459d9cfba05ad0c1adc86a909fe -Sig = 511abd82218cab344979b2887b02600d2427f1eb12ac01d97684c2a443a9272834c3f79cded07a39dbee3770dde827a74dc994b17bfd8a26d07b239d26d58c42f79d560264c31b7e1c3dddef6d7556f228c394414f4cec561c3da2686a8eebec7702f32850809a93deeb84b2a02fcdba224d2fd9efb8e056e796f49b57d56e9f3e90d0b49b08bdee93a2e12e676fb4d4fa838c5bd88eda008f1b592a72465587be0ae17d9b156b904f44a7e04d3b58d24ad67b71b0f4c699fa51639546b62b9f83597ff03d465f1bb396ae15e92d0e92e85647d5df113e2c7518d0e3ad2e7aa7dac720c98347aa151e4f37fea081dbed350cc9c93f606b38f21a3e5de6d140d2 -Result = F - -Digest = SHA256 -Key = 3082010a0282010100c47abacc2a84d56f3614d92fd62ed36ddde459664b9301dcd1d61781cfcc026bcb2399bee7e75681a80b7bf500e2d08ceae1c42ec0b707927f2b2fe92ae852087d25f1d260cc74905ee5f9b254ed05494a9fe06732c3680992dd6f0dc634568d11542a705f83ae96d2a49763d5fbb24398edf3702bc94bc168190166492b8671de874bb9cecb058c6c8344aa8c93754d6effcd44a41ed7de0a9dcd9144437f212b18881d042d331a4618a9e630ef9bb66305e4fdf8f0391b3b2313fe549f0189ff968b92f33c266a4bc2cffc897d1937eeb9e406f5d0eaa7a14782e76af3fce98f54ed237b4a04a4159a5f6250a296a902880204e61d891c4da29f2d65f34cbb020349d2a1 -Msg = dffe42bfda886e1a73fe8a8dfcf71c9fb44deb054588a9bb9199d554aecce08f2ff88f2aa6f8a0fb675fb03c8e685c27432ca7c33c189bfd849d34fa7b2979ac1f57eca389632426bae0b98398ad60a3342557e14e96041c1bf4d90b46cf7ad1348322d28caf43c4f7e86c0924ae703c109ec50a84ea2a43df078c3015a52b28 -Sig = 8f4dd479239f2d08dc05d7d40539288b67c4d77210ecb16be76f0b1925e8b088570831e361a1ca57893135f8af64b8e2996b8d635899da4e04c68acb9b1b3813697d57da90c57f18509e0ab6705c704feb448cca5c07d258ecd884ab93f508cefdb25f2bc3061c4006099e2e33b27972c3edb0a0a33114d381c82ab506d041ff680af595ef3400a8bb6774030d2e38dd304272092bd32a553017f7bda4b998b27aa8aca12def327b1f11063a5342b0d55738183417d321c5682fc4ab64e79174216feebb989521e1e3d827647068003be34fe1d093964d28f4877c49b4065672448597a89b91919cfb55ca13836e7e6f3b3fd04f417cf1c16d9872538bf4e87a -Result = F - -Digest = SHA256 -Key = 3082010a0282010100c47abacc2a84d56f3614d92fd62ed36ddde459664b9301dcd1d61781cfcc026bcb2399bee7e75681a80b7bf500e2d08ceae1c42ec0b707927f2b2fe92ae852087d25f1d260cc74905ee5f9b254ed05494a9fe06732c3680992dd6f0dc634568d11542a705f83ae96d2a49763d5fbb24398edf3702bc94bc168190166492b8671de874bb9cecb058c6c8344aa8c93754d6effcd44a41ed7de0a9dcd9144437f212b18881d042d331a4618a9e630ef9bb66305e4fdf8f0391b3b2313fe549f0189ff968b92f33c266a4bc2cffc897d1937eeb9e406f5d0eaa7a14782e76af3fce98f54ed237b4a04a4159a5f6250a296a902880204e61d891c4da29f2d65f34cbb020349d2a1 -Msg = cfe99788f55ec6944942bd0a187d51b80fd8bd4051bd4f07c73e614eb75a8b9f997b176b2642b5f1b1877061ba9ce142c1d2a311583f072b7cbe08ed253681191c209d7b0d438fcdddc284d93d59d6dd80e48333a921dd31c9b6834f88768f8701e01102d3e8bdf074fbe0b8c93d9951f41545ef6eeb3be35530babc079f1fb3 -Sig = 9fd6f6107e838107f906c26cb2910704599f175b6a84db485fbc30776eb7fd53bfe20c38c537b154a3e519b662bd9fdc8e3045e21f6e5ae97d0ff6a9d8632825544525d84f99f80e3ed4e69dc5e219d59ccfbb37c23c84fe3b3e6fb22f402f94e5225c6387fdf8bcdb3508f8832908fe05771521e92234348004e8fe19a8f24bebcab9f074327c88d066bc12081748d696be6135c6aea32220ea786ebd7800e6936365ff25831c28cb6c8a59237ff84f5cf89036cff188ee0f9a6195f2b1aca2e4442af8369f1b49322fa2f891b83a14a97b60c6aeafd6c2928047affda9c8d869ff5294bb5943ad14a6d64e784d126c469d51e292b9ce33e1d8371ba5f467b3 -Result = F - -Digest = SHA384 -Key = 3082010a0282010100c858aea188541c0dd2626eec9a8c98511ca03870353128c1687d94a1be762a4940fca789831a720e108f2f7c1fc20aab38336b5668205d62963c51aad74757183faae7c0c59b9f679e96393e7f93e8a30ce99fed1b8e85e7146bd69a3f8dc5734bbacd51359f4f66aa507fbf4e69708877f7cd7cfb6868006e330869d9eee99f466962b0dee9080d9413bdec2e41445190394a49ecb191167350be411cdd6ade4eb38c4c4bf891b43c91b5981a3bcc8a66f85e5cbaef751e3cbe94c7f193fd78ac55048800250d5cc9e41b89319ac3d0258aa640299e165b0cf7e5e108f76a12f72132f6a2a4c239df0544d3d8407b94f9f38e9156c825a7eae001543fb264eb02032a26db -Msg = 6c1c4396f7b7f9228e832a13692002ba2aff439dcb7fddbfd456c022d133ee8903a2d482562fdaa493ce3916d77a0c51441dab26f6b0340238a36a71f87fc3e179cabca9482b704971ce69f3f20ab64b70413d6c2908532b2a888a9fc224cae1365da410b6f2e298904b63b4a41726321835a4774dd063c211cfc8b5166c2d11 -Sig = 422e70ace2a2c07d2adbecd9dd5714c42d0e768d48bc33fea822974e42ecf99c791276e44936e70b183e712e0dd9b484199b92f24a76c6908faf6bc20fe266fa03886781cead7c82aeeebdd150bf48ae4698e76807ef24d29f3cd5590395f4725dbe7e468540b4d4d8be84e673bff86b0c08af17e738af91cee4f14367dd6bedf71b5e8e148b61ea968f16160604834831d557879542598be7d2fd01c7966f0ae1ec2554d8dd653f20c551a1de6212481e2a19a3e2fa9cf005e5f3ee1962c34e3e85f84104f9172debf89db438c32f2a8061ac15d3cd3f3a6b7d75fd7c3f8ea0c505c6398d1e70eb12e9e16f5a0e4b459c02ec38f0dfc7a4a3139c1fba6f59b4 -Result = F - -Digest = SHA384 -Key = 3082010a0282010100c858aea188541c0dd2626eec9a8c98511ca03870353128c1687d94a1be762a4940fca789831a720e108f2f7c1fc20aab38336b5668205d62963c51aad74757183faae7c0c59b9f679e96393e7f93e8a30ce99fed1b8e85e7146bd69a3f8dc5734bbacd51359f4f66aa507fbf4e69708877f7cd7cfb6868006e330869d9eee99f466962b0dee9080d9413bdec2e41445190394a49ecb191167350be411cdd6ade4eb38c4c4bf891b43c91b5981a3bcc8a66f85e5cbaef751e3cbe94c7f193fd78ac55048800250d5cc9e41b89319ac3d0258aa640299e165b0cf7e5e108f76a12f72132f6a2a4c239df0544d3d8407b94f9f38e9156c825a7eae001543fb264eb02032a26db -Msg = d6a169031049b0b3b582d22bf40b9fca45d2618457146c2b4ac6f6ed1f34291f6de8773955cd2e21b7944caca65794621a7ce181e5ddbb45e9252867877dc4e35b6914ff26ec18890bf31f60fff1df367bc6c59373e58a1d8cb607188a394a2907ede95f6bf096731867f44fe520aacece76b5c3ea75023c9d3f3c080eaee376 -Sig = b9794f252e6907dc4c41de42ea5a0e6361114ac3814c4a92583ca70fd78e98190a0d9215bd5282e8520422093eff2e1cfa335cffcdcc27fe9bafe4516e74445d4aa17a08db754fc69b156d86ff26eb9e814f605142a3051d2fa64305d3e5c5c5f67c7d9e38c5054d069c14b23e4278fa5a73381f61f90a9ec428c883f1366e27ec0219db8c942582a284c161eead307285d0e4df6b0d7dea0e8216d7ef2e4b2ede2296e0b780e5a3f8d15f123f737b9d6170074f758de32b6f1e958b27e422b053df8f5fbbbafbc14119260f7022cd2934e8faeffbd7085aabc44497bfe07387bc0e5aa02399eab99318adb98f99a677aa0683e0c11d638cb13907fc5c3147e5 -Result = P - -Digest = SHA384 -Key = 3082010b0282010100c858aea188541c0dd2626eec9a8c98511ca03870353128c1687d94a1be762a4940fca789831a720e108f2f7c1fc20aab38336b5668205d62963c51aad74757183faae7c0c59b9f679e96393e7f93e8a30ce99fed1b8e85e7146bd69a3f8dc5734bbacd51359f4f66aa507fbf4e69708877f7cd7cfb6868006e330869d9eee99f466962b0dee9080d9413bdec2e41445190394a49ecb191167350be411cdd6ade4eb38c4c4bf891b43c91b5981a3bcc8a66f85e5cbaef751e3cbe94c7f193fd78ac55048800250d5cc9e41b89319ac3d0258aa640299e165b0cf7e5e108f76a12f72132f6a2a4c239df0544d3d8407b94f9f38e9156c825a7eae001543fb264eb020400c74c01 -Msg = eab87ecf61ca1ea8eb29498b510ab371784d0274e2fa77e077ebd18c86c66e6b072fb45e233baf4cf627fb75934ae5034848cde22489cfd2b7e9a2bb19b1bf402ec7c69627211e974c7fdc12f95ae766e717594fad8128ff8776057155e084fae7e87e217766b4b0779bb40b8e2201c1dd246e6186cccb8f6ffac356433c05c0 -Sig = 35720e6883452e78bf0f9ba1566a638c8f5060a8ee313ba66bd2496d67b78d01fa1d5bcd4e3a96aebe6b0e66480335a49a500abd126c5b1beaaa60135db4e51b4efb5a59b662ad3525c2dd1c867bcf609971806895550531d9f5b0ded79f804d1d63c4a00931a64244a2b5f004287b523e9bd23a3ae8b393d2607d1a835062282477c2441cf3176110fa0064350f2cf73b7c67e02bf498eff69161e62e514563d23385be16498c525967350e047392861b7040c9b4039b5a8a49eddb385aaa4593c14e20dc4aa2f67258290a51c6e836e83edc061d4bcf5b8f3db470068372ff76a0109be686c25e70638d15156845dfb8ca1e84d0aef538798014ae1c173a14 -Result = F - -Digest = SHA384 -Key = 3082010a0282010100c858aea188541c0dd2626eec9a8c98511ca03870353128c1687d94a1be762a4940fca789831a720e108f2f7c1fc20aab38336b5668205d62963c51aad74757183faae7c0c59b9f679e96393e7f93e8a30ce99fed1b8e85e7146bd69a3f8dc5734bbacd51359f4f66aa507fbf4e69708877f7cd7cfb6868006e330869d9eee99f466962b0dee9080d9413bdec2e41445190394a49ecb191167350be411cdd6ade4eb38c4c4bf891b43c91b5981a3bcc8a66f85e5cbaef751e3cbe94c7f193fd78ac55048800250d5cc9e41b89319ac3d0258aa640299e165b0cf7e5e108f76a12f72132f6a2a4c239df0544d3d8407b94f9f38e9156c825a7eae001543fb264eb02032a26db -Msg = fd73237a3010d505ea0ca786c5a3ae4d20c4eedbc6232199ce8ab4c9bf6f13bcf8cc26454f2b1b6ff900676baa3c07ccfc1f0cf7154e56d48425a0ca6d4ebdebe693206ba0f0a257caed8083322ba3c5ae3c2560bab710c3628c697463966d478d6f1ad36b88f1262679fbb8a7950a9efcc24100fd88d6cd2f6717ade86eab38 -Sig = 192d8fe5a69a1f9acf186f42893e458b6356b10a8fd0ee45114acf625b61c69d13884f7860b02acd67b5b5082bce20815e384dee608162fc9d19ac977842018e4b3f321d84bfb487c0f4f6a465b3f296c73ca3d8817c771c9969ae1144b1abcf6de251e504d1f662d6094d4e6fcd9ea3f85162883e1179e9fee4a3d7daf95bbadc64221fdc8c144fb4ca502f3eb11df85fe6bba561feed191963ff9f8441b583bd84ee540e47b318629ad59a251b759f060a40e717e50d9c0c0eb43122e6594575725382684c65ecf7f27e42c3e1f7d95c657371978772e111309bf4bae5241fadad0ad9cbd04ebcc8ee76b368439be21493aa41549dac8c356e65435f706d79 -Result = F - -Digest = SHA384 -Key = 3082010a0282010100c858aea188541c0dd2626eec9a8c98511ca03870353128c1687d94a1be762a4940fca789831a720e108f2f7c1fc20aab38336b5668205d62963c51aad74757183faae7c0c59b9f679e96393e7f93e8a30ce99fed1b8e85e7146bd69a3f8dc5734bbacd51359f4f66aa507fbf4e69708877f7cd7cfb6868006e330869d9eee99f466962b0dee9080d9413bdec2e41445190394a49ecb191167350be411cdd6ade4eb38c4c4bf891b43c91b5981a3bcc8a66f85e5cbaef751e3cbe94c7f193fd78ac55048800250d5cc9e41b89319ac3d0258aa640299e165b0cf7e5e108f76a12f72132f6a2a4c239df0544d3d8407b94f9f38e9156c825a7eae001543fb264eb02032a26db -Msg = c17eda0010c4add3f0616155cbe6d43f90568851052d9e825fa002591027e39be03966263f569b1dd94bb0456cb264afd6b8bf987323008da593d8d3b407d505d9a421ff95b26cfb47e827fafee9f3668c0e59f5dc66bbd085fb8af59e57bad9d5477352bbdf0ab562be2f3b2a9468aad8e1be31e8ffb59325628288761f7960 -Sig = 669f6c902798a9c91672addb4fd138ca41ba9b5fbc8efab9bed5e7e25662a40af734240a301d304134e75494ba961740aa6b9fe54a340851791726a864a2d1645daafcbf38f49a5b319ab86101ae4fc5f21b0f15cd12e7979b6e3b2fb61dd049f9d864160110a68cbb9d399eddde358571cfad48f2057dcdf324768d8d3903d0a861a5824ff3a5b715fb7a098a41624ad13219a0af11eaced337e8e8aaf926eb4ad60534422ff986bfb498c63cba0cd6ccea9018a96e9a41e4693586aa70a0d6dc5c6312418d63e9f91aaf5df8d01dcaad7335cf88badf6d8da7fa9cd83e32be840f1b2cca1c8103d73d8a9949d72b4b8c56eb7fbfc523dc1accf80de1023d8c -Result = F - -Digest = SHA384 -Key = 3082010a0282010100c858aea188541c0dd2626eec9a8c98511ca03870353128c1687d94a1be762a4940fca789831a720e108f2f7c1fc20aab38336b5668205d62963c51aad74757183faae7c0c59b9f679e96393e7f93e8a30ce99fed1b8e85e7146bd69a3f8dc5734bbacd51359f4f66aa507fbf4e69708877f7cd7cfb6868006e330869d9eee99f466962b0dee9080d9413bdec2e41445190394a49ecb191167350be411cdd6ade4eb38c4c4bf891b43c91b5981a3bcc8a66f85e5cbaef751e3cbe94c7f193fd78ac55048800250d5cc9e41b89319ac3d0258aa640299e165b0cf7e5e108f76a12f72132f6a2a4c239df0544d3d8407b94f9f38e9156c825a7eae001543fb264eb02032a26db -Msg = 92c641b80aa222fad6c757ad0a8936e0459bf8f4367f63ae5f41a68a19658452d91eb4f0b1c188811a78ceaaf03bf42fbefc6fc13c225c1816396842efe8ee3ba62360bdd8a1e859a6914fc7b8891d7b81bf0278c57b746959cc9aee2b7b6934823d0dc8862c8aad0278a3ac695afbeb174a7ac1da72f2c9b1620235d3053b65 -Sig = 5135f98250db1ebbd738c4d905db5a395c36c99f929d6cbe5bb4de9288575eded2b14220ea49ca7cd04584067b000964df2a4cf0b185b7a080c14ae05cc277b8751b2f1fc061de93b429fdef99c39704a158a5463041a109614c9bb1c9f66df48a67af779bfe85e179f289cca20d5618bda9686c0826ae14f8c86acf28645c5c28613446f202bc952ab1ae4aa06391edb0eb5355712b43d12ff96548292bfa072ff2411e7f9d57e3fc35a43c36743b4a384150f34059c815dbcb26f55da2be86ac5818e2a315a12f01b98e5e7b03a67cb4056a803be2280138d1611a2667c18d4b2a82aff86d9fd21568b2e6575b8e3c0470da8b2d7d6d0a2a172e6415a1b7d2 -Result = F - -Digest = SHA512 -Key = 3082010a0282010100b6515048e1f7a3506d6bf028ea0516592078a2ebd6db04af6040bb5dde8888787e1fd973b1d160da25ba9095450d866625aeb7cf684b522af4edbc20adfad09e9c4c42919b7691e1404afe8815f229001bf7f8e2b1c511d56207972e3efa588f04f7bea82b64c45bc28bbc5e3ca3b1be8652c54a3393e95a58c78c34c7c7ceeca983e91920467d184ecd5aad0114f83d0517e6ee82944cf134e9efdb68f14322517acc10285c892c94e6892c9659fb85af6d11322df94edeb77a379e97c7608e5d23c89b56a722b54d91f0811855c21e0c41ed362ae144e2f46eebb97a9057c673ddccc0f2ce178c3af086d1f93a092a2ae58bb0703ca66318913e69e36fd9970203662f3b -Msg = e5b327e067ed7a242749d21d78e0b1d68d288595dec82a55cdaab1768a5260b4346ff95641b040a71fd9b7aa1b16ac0a838f7550073cfb5865fb750646e0763562cc2af0eb41dce52974bc1662a4e0d2fcab88e4e5d3a60a33ea9ea908994abeb9f141182f4759c58d426aca1232551742a345b9403335527fa0b3c69925e338 -Sig = 488df2a0a8775e6e65c6f457cb9e29dcc8ab6c37a12cf820308732052bfe068e3c6f3c4e73c17615aa6319b76d62df6cf48378b834dc412b9e5875f7fe16bb2670c4ee51cdc259df813d5faa541472581103421a9718e79b8c671b1c7b50f6d4315b96423ba6aca9d060a32372c4c237f02eef44f54f872bf91b5a390adf9c5a7a884416add7d15afd8fb8073243dd587ac8011a88d5566cac84d5dc4ca3f2d6938e0d03a9e8d016b4aea22183425c2bd4696d85501e264bba7dd980c3ac45d77a363955565f4675c5246802abc015236d69005d164c0f18a666d43442902be38fcc381ffb6b5a046af05686b0ad32b25c1e2d82707797016ee63fc9a952d2d5 -Result = F - -Digest = SHA512 -Key = 3082010b0282010100b6515048e1f7a3506d6bf028ea0516592078a2ebd6db04af6040bb5dde8888787e1fd973b1d160da25ba9095450d866625aeb7cf684b522af4edbc20adfad09e9c4c42919b7691e1404afe8815f229001bf7f8e2b1c511d56207972e3efa588f04f7bea82b64c45bc28bbc5e3ca3b1be8652c54a3393e95a58c78c34c7c7ceeca983e91920467d184ecd5aad0114f83d0517e6ee82944cf134e9efdb68f14322517acc10285c892c94e6892c9659fb85af6d11322df94edeb77a379e97c7608e5d23c89b56a722b54d91f0811855c21e0c41ed362ae144e2f46eebb97a9057c673ddccc0f2ce178c3af086d1f93a092a2ae58bb0703ca66318913e69e36fd997020400a3e187 -Msg = 6b7450077038ca8478e7a380292151ad413c1949d78076efe497beb4013f036f7242375864a894d5732b3b906feb1ccd606315fbc79c5e8827a024fac432743cabbc5b35f2894c9f4134c1179261257034aaf24d16dd17ef42649c4ba80488601dcb03c7a343b88cebec7d3c18e9363fc6faf6684baa68cb3cca6ecf341d0784 -Sig = 1933ff9ae5c520efeb711fd17a571a209c2ba9e0469e39a5341a70ca46c6deb2359005fb21c9e914e8a5037345906204261476427ddbdf29212d84c6e4e1dbda61aeb21ceddad1c3789d99ea28ebf72c4fef790f838191b30587e00fa841d63bfebd00bf468b462ae935eaaef2f83ad596b29a0d538ad99b44d615217f0643f0d9bd755fa281e35bedca37b238a89b78f9d911a24c40ab3cf69dade4ce4a30bd3104f890a6cf410a1e76e625e28495f6f9b385d698e6f8a6eadf0df3af03b3e078f4b0c984bddf525f220635cb2993b72ccae40ad3378cdf775431c2ceaa1aaa57f355eefffc0f34b5d70d1a41aac9b052594f0132308b0e329e34c0d2fdc519 -Result = F - -Digest = SHA512 -Key = 3082010b0282010100b6515048e1f7a3506d6bf028ea0516592078a2ebd6db04af6040bb5dde8888787e1fd973b1d160da25ba9095450d866625aeb7cf684b522af4edbc20adfad09e9c4c42919b7691e1404afe8815f229001bf7f8e2b1c511d56207972e3efa588f04f7bea82b64c45bc28bbc5e3ca3b1be8652c54a3393e95a58c78c34c7c7ceeca983e91920467d184ecd5aad0114f83d0517e6ee82944cf134e9efdb68f14322517acc10285c892c94e6892c9659fb85af6d11322df94edeb77a379e97c7608e5d23c89b56a722b54d91f0811855c21e0c41ed362ae144e2f46eebb97a9057c673ddccc0f2ce178c3af086d1f93a092a2ae58bb0703ca66318913e69e36fd997020400a3e187 -Msg = 8b618f6669b9f0450a57cdc57f5dd0bfcc0b4812e1e2c2eacc09d9422cef4fa7e9325c3f22c0450b673c316929a339dd6e2fbe10c97bff198ae9eafc324133702a9aa4e6b47eb4c621495afc45d223b3284d8360fe70680359d515aa9ea02e36b5610f61053c6200a047f186ba33b8ca602f3f0a6709272fa296025258556880 -Sig = ac87aad4ce85038b8552c4a6e93ed94368bb3376ce17ba1d08812e004b43a952e27fc50daee8929094e747dfbe02584a7654d950d21700605e699561c03e64d2016404da7b9c0b0011ff64f206225db1c8b5f974bbeca720a7c2ec73e6fbf58adcc6f5cc24df6d09ade74416f30df70c4449820f24378b90c176f65651ab1c1fc82d3fe834e7b66d0daea47b8d1931a81d1fedd4e6996c56edbe496fa237fbd41876a460780100e4e6f0864b6f9282abae4ecd98630548b5cb42e66cf9eb890e0651f159f356283af40c02913d2f3bbf6d8ebaf6b7d88e6699f482d7825428ccb7ef8129dbc665bd4df8e9a07c339a1134e907e439d0846480ae6c888c1e9be2 -Result = P - -Digest = SHA512 -Key = 3082010b0282010100b6515048e1f7a3506d6bf028ea0516592078a2ebd6db04af6040bb5dde8888787e1fd973b1d160da25ba9095450d866625aeb7cf684b522af4edbc20adfad09e9c4c42919b7691e1404afe8815f229001bf7f8e2b1c511d56207972e3efa588f04f7bea82b64c45bc28bbc5e3ca3b1be8652c54a3393e95a58c78c34c7c7ceeca983e91920467d184ecd5aad0114f83d0517e6ee82944cf134e9efdb68f14322517acc10285c892c94e6892c9659fb85af6d11322df94edeb77a379e97c7608e5d23c89b56a722b54d91f0811855c21e0c41ed362ae144e2f46eebb97a9057c673ddccc0f2ce178c3af086d1f93a092a2ae58bb0703ca66318913e69e36fd997020400a3e187 -Msg = e2a14fdf10cbe13b0afa4294d073af00b19f02c2786987c9e3e80c79573e37aed1c01dfe20570f3f5225b7496c6c65fd5eaca387350c0fdf93fb6a965c17eccfb34eda8c25435b2b23f38830b698c2446ece487e9cf408e2c0d5b62745871cbe6c94b10f87586c0667aadace17bf6fdccb4a1a3013e81bd754bc19b579566f81 -Sig = 0e340359f9f1fc5e974d8ad8c189efdb2849ec93994b152e497e15289015d915014c73503bc69b83803dfa9d8216181fcdc64782c27fe9d464ce12359aa60b44618119df19a8f5defcaa171c44c0c0ebe1991131132aab4b19c02438b0fead22bb34e51bbd565665583bb6eba36e82068e2e3040a177dab3c1d3a6f81d0a3901a934c10e2abd73e8b9ef7a1be29a7fe18b304ce57d073f85b1b6873ab6b8ed94d5a0a0f3e5fc9b4857aed36de4ca72deac235861297fdc51fd9553eed189335935f23b4058f293c8cce8bd9bfc8fbb374ecf4eaa0f2a1f06ccea4ff3071beff69d70efbe07513ef0bfa02dc2c6b19b5ced674a16b6672b6e04a32ae14157fe10 -Result = F - -Digest = SHA512 -Key = 3082010b0282010100b6515048e1f7a3506d6bf028ea0516592078a2ebd6db04af6040bb5dde8888787e1fd973b1d160da25ba9095450d866625aeb7cf684b522af4edbc20adfad09e9c4c42919b7691e1404afe8815f229001bf7f8e2b1c511d56207972e3efa588f04f7bea82b64c45bc28bbc5e3ca3b1be8652c54a3393e95a58c78c34c7c7ceeca983e91920467d184ecd5aad0114f83d0517e6ee82944cf134e9efdb68f14322517acc10285c892c94e6892c9659fb85af6d11322df94edeb77a379e97c7608e5d23c89b56a722b54d91f0811855c21e0c41ed362ae144e2f46eebb97a9057c673ddccc0f2ce178c3af086d1f93a092a2ae58bb0703ca66318913e69e36fd997020400a3e187 -Msg = fb200350b60d1e9b4a3b1b4d7341c55c635bfa791569a438de3bec72450baae8144b1f28afa2e6b5a5312862851a10fff3437e37fa5700b9a40efe96c8af34ea24d365bfab6b4e2e2004dac7e44a94340dcb6118b7fe6f3d9f8469efeeadeda3523e3fdd53723f50e53e984639d93b42d97c0ce4f467da0ef62495455c0fbb5a -Sig = 624183bf2abdb79689a45158a4876a352b19077de88aad06fadf3abcf4d2683b126fbf84c01ef614448c63e8a78d1e8749fd89a9b2550078c18989fea591c2a7c47e6a0bb4491dcb1868a43e75351ae2a7afe27782195f453bbf10643e6c3a23c01f2e713b6ded81e1db7ca4ecb3554fa9ae8005b80316cacdb4530a66dc2a073ec494bc3419df2f275db5a33871d0a8d9cd0d8bcf90aa24f096a79a4c8f5c0dfd8b1887535e59079c974f87d26bfeda7022399685748414df842ce04783b6f57bd2a2dbbe2e225f89c764b9775d7721157498446ce3d613332ea2cc589f7043afe3cae32b779ea8f1ab22fef99f67a0720306dcdf2d2cf7b35b0bf3630e03bb -Result = F - -Digest = SHA512 -Key = 3082010b0282010100b6515048e1f7a3506d6bf028ea0516592078a2ebd6db04af6040bb5dde8888787e1fd973b1d160da25ba9095450d866625aeb7cf684b522af4edbc20adfad09e9c4c42919b7691e1404afe8815f229001bf7f8e2b1c511d56207972e3efa588f04f7bea82b64c45bc28bbc5e3ca3b1be8652c54a3393e95a58c78c34c7c7ceeca983e91920467d184ecd5aad0114f83d0517e6ee82944cf134e9efdb68f14322517acc10285c892c94e6892c9659fb85af6d11322df94edeb77a379e97c7608e5d23c89b56a722b54d91f0811855c21e0c41ed362ae144e2f46eebb97a9057c673ddccc0f2ce178c3af086d1f93a092a2ae58bb0703ca66318913e69e36fd997020400a3e187 -Msg = 64ac0940e3926d11b78494ee758ee6e7f9f034ddb622a99f4a15fe5355bcee188ccbeae909bf0dc4e51e520c0900052d41ce777e934af66bcecffcd365daa7af7eca69f547e401bc899aaaa07f0d9268e8d08de65bef0b1fdb3048acab98c2606331f02b440b313ec98103707ebd75e1157fdfddb719d00398bf48a6cefd2773 -Sig = 3853af577c8f5f96cdb01de108ef8737886118ded95a315a5f2c34ae22f8fed6aad5cc1debcffa3576cc0a5050f572cfd171413275254455f19312054f06e9bc50f9d2dcdd1fac7ff2fbf456c2c9a1217992acbce6f867b48291911de8dcbde4e0b85a92536157d939dab1a42fdeeac9b15e5ed3ca542d1cab43aae3723349e405f998705fd0edb19d9f4631e6c7cf7ad1962e99fbfe11629226a634eacc2ec2bf3ee2d87c2f6fe934a2293f5ff81b4dbeab62eb4d94bdb4ed481bcc4bf400c2050faade7375c811967596ab5415cc6f60fb6169faa95303ceed5ff261a93e0c2a2eb657501db9866fe858694f57ba25ec2f514d8f75980247597a006ab3df80 -Result = F - -Digest = SHA1 -Key = 3082010a02820101008cff9858fa12773ef90c10e8f142f69c0350772f999ff10ba2a5ec71cbee037f3a78a1c46028150a0004fd0198bb8175fa30fd9765a4e2c679124ded055cd37d4102b5e695d91b58bbb44e72c136c5e3da43b4e6d5604edc36774c353a729bb1647f4a33d74ccb70f7b003617bab798887b8f65cbe11aa8349dbfc0f5036042d6cd4c49b10634fdd9d9cbf61d9f85c94ae98cbf77172c61696434ebc2ac6ae8f678f0e4029eacc8fb1699916bdce026cd94780de58a707659ff650dae7599b6b1b6337323832b45a4ede37fba87051658e79248fcebde7c36009954919c87f836a2084d88f5237f72f4d208412e91ff6f3252574df7c00334a0fcf8fcc7ecc2b02030b8f69 -Msg = 3ac87eafcf45920e233638ed4caa54765db4b801dd143ad978130943f5af41bc68f8bc83a9ba2c57045c668232080116880d20776f818c19142a068b619fdbb52baab85eadf1c0f135d5dc801d9b5209fdc99af81fd36dee33f71ec144662dc4eba41a48c33177621c6941eff4a970d623b3cd8dd55404df3d44faec884d6071 -Sig = 80ab1f8e28c9f939a7a15a6f81b41547e8497b5ba2dd08333243352e9d7aa347dcde6200a5e1cfc8136d3c59999ee571347c8a48d91e185d0b08ca31c8ea83d578f0fea6ad38c820d68b10221d493ea93e065fd846340ae09b94c6dcb78cffc79b958540689455734a9adebbbe50bed6e998e957079d11812bc2b4b497f9b9fc1496a639e021337d86c4df2bae4a065fe69e517655a571369a4454a1e29370689f8866375fad63075ef189f0ec3b686b5f3f02ae84c99ea67701d6906ad867d0dabef4f210e533d7daceda12ee0ad2a6826178503ae472f278b7f25d51c1fe8ef4b3d61da0928f4d7315abb27e570ec36fbdfbb4e3158e29b4605e1b082e56ef -Result = P - -Digest = SHA1 -Key = 3082010a02820101008cff9858fa12773ef90c10e8f142f69c0350772f999ff10ba2a5ec71cbee037f3a78a1c46028150a0004fd0198bb8175fa30fd9765a4e2c679124ded055cd37d4102b5e695d91b58bbb44e72c136c5e3da43b4e6d5604edc36774c353a729bb1647f4a33d74ccb70f7b003617bab798887b8f65cbe11aa8349dbfc0f5036042d6cd4c49b10634fdd9d9cbf61d9f85c94ae98cbf77172c61696434ebc2ac6ae8f678f0e4029eacc8fb1699916bdce026cd94780de58a707659ff650dae7599b6b1b6337323832b45a4ede37fba87051658e79248fcebde7c36009954919c87f836a2084d88f5237f72f4d208412e91ff6f3252574df7c00334a0fcf8fcc7ecc2b02030b8f69 -Msg = e88292f68268095c2d1059d6c671ee2cc3bc8734748f97a2896ceb22d56b8ea4512beaf7640e2f9a61a6f9cf526a2df0f4ae230602d20b98b6b989c18e7ca3854c60dd654006a231c9e2e61e1aee0a193aa0005a4e19af3b1b9f994bc74dbb9edf09b4689fb72aca6dac6aeca6664e4c9d7a6456e1cd4c34bf0762e708459e97 -Sig = 4b40e154df4538c2de6fc13cd93522acb23305b40890ae9e9ef33df58d0d1ada511346126fcd55fca4206bf3bf988c2967ade215538b818303596ffc33d4ae05ffb321ff303fa9a2b87b5467723dd1e036633398e15d9abe62d9f7528b1f31f3ad6ab70fd5af6029da4a961d006d7ff0f6b7e2f9181fdc47ed5fe0f74802e9d63249bd394bd6b570187dadb42a1ebb38bf1c78ba5b57c0a97ae29a6c9f8680b493a44c4909790143aaf12152d56df38864a36231f558c624077a00ef3619c58f7ebad4cdf706c4b2a47c6525c76b78f5473b57a0802432dcc67230fce82c87e41282b7e8f9855bf72f0770dd6be3f7fd260a435d51c1f2323257b507f97a7c38 -Result = F - -Digest = SHA1 -Key = 3082010b02820101008cff9858fa12773ef90c10e8f142f69c0350772f999ff10ba2a5ec71cbee037f3a78a1c46028150a0004fd0198bb8175fa30fd9765a4e2c679124ded055cd37d4102b5e695d91b58bbb44e72c136c5e3da43b4e6d5604edc36774c353a729bb1647f4a33d74ccb70f7b003617bab798887b8f65cbe11aa8349dbfc0f5036042d6cd4c49b10634fdd9d9cbf61d9f85c94ae98cbf77172c61696434ebc2ac6ae8f678f0e4029eacc8fb1699916bdce026cd94780de58a707659ff650dae7599b6b1b6337323832b45a4ede37fba87051658e79248fcebde7c36009954919c87f836a2084d88f5237f72f4d208412e91ff6f3252574df7c00334a0fcf8fcc7ecc2b020400d0d14f -Msg = 3853cd6d1384358712da7c1c583afee73fea00ee4aaf41be5c32d2f827a8280ce6b270454f822206c340d953c9ac6292ba041293be285dcff6fca5edfb0e508b88791d3a7309b8cae29f8cc9bbd7d8465ce905da8dcd37eab2a3222646511f55846e7e55675f1e5dd5bf3c861705898a8d607fcba0e6f497f7eef0aaeebabcf4 -Sig = 55dd7641ead751bc1b160724dd86e89497764119a998d5f800f97defe942aedc5cd2c8413918ac107a705dab99bdb182037f051b61932fd4d41f0a890f6db996cf99d210084536e3711653ab4ee5ce5b066a569306983c2f5b6c00c51fa49774f33c13565b95e832588ad2c004b81887c3df340096920908979e6f168c8818062cb04391f5649869e35efe762628f49d6751b7a3e0b184e9f935f591e4f2a1db158cb78f8e256c74c294ff424bc2efd3145cb234af88c623afa67b3eae68b91dc16a99ca36fca81653aa3ea47338c5a5a2a5b2340cff80672767f6e9549c6adebe6a84a4232560ad431a5f42a3ded809fda302ea7ce944ea3e7be7853704e1ea -Result = F - -Digest = SHA1 -Key = 3082010a02820101008cff9858fa12773ef90c10e8f142f69c0350772f999ff10ba2a5ec71cbee037f3a78a1c46028150a0004fd0198bb8175fa30fd9765a4e2c679124ded055cd37d4102b5e695d91b58bbb44e72c136c5e3da43b4e6d5604edc36774c353a729bb1647f4a33d74ccb70f7b003617bab798887b8f65cbe11aa8349dbfc0f5036042d6cd4c49b10634fdd9d9cbf61d9f85c94ae98cbf77172c61696434ebc2ac6ae8f678f0e4029eacc8fb1699916bdce026cd94780de58a707659ff650dae7599b6b1b6337323832b45a4ede37fba87051658e79248fcebde7c36009954919c87f836a2084d88f5237f72f4d208412e91ff6f3252574df7c00334a0fcf8fcc7ecc2b02030b8f69 -Msg = fefde998a5de015f63b0a75ce7f79f4dc681d18dc298aae64b7cbfa74610b3f70ed35b69b81221d19c5ca6551037acc7771132327b79e0b2968fa689d7b9a170e3983e2b3a3ba160bb9248a96b25ebe87205a7db66035cf0cc21545adc4625648536d805b1c04ab5ca3ad3807d2a2659be4678b00c9fe547f6190f41de1e087c -Sig = 17a01e1254dc902e8c6d607226175416c17ea28d28696b20706790dbac60f73732c804b6756df87ce6b1baceb22d582a6e24bf3d1754ccf1ca57e06150e6da60bcb8b116b3b8a31a715e0872b6047c6a4d7f6817ef5f12d13356b2b50fd71f5d9a38a0c35072ca38beed29ba541557b0525fd3d6639661037b5b61bee51aaf4e6c6bf5c577f9dee4811319d671911138050c54bc273db9eed5a7bde3281e65942cbddbf909e87587c58c8d40c081c81950f73a33d80bea61a56ee4a8930ac3b954d4a0706aaf3c753efd304946f90f33a20cfde65e388c266bad024cb1aea8879c78fd0d9bfddaceeb84f10ab66cfce1aa4f0651d7b1f0b4ee808a2e1f490ead -Result = F - -Digest = SHA1 -Key = 3082010a02820101008cff9858fa12773ef90c10e8f142f69c0350772f999ff10ba2a5ec71cbee037f3a78a1c46028150a0004fd0198bb8175fa30fd9765a4e2c679124ded055cd37d4102b5e695d91b58bbb44e72c136c5e3da43b4e6d5604edc36774c353a729bb1647f4a33d74ccb70f7b003617bab798887b8f65cbe11aa8349dbfc0f5036042d6cd4c49b10634fdd9d9cbf61d9f85c94ae98cbf77172c61696434ebc2ac6ae8f678f0e4029eacc8fb1699916bdce026cd94780de58a707659ff650dae7599b6b1b6337323832b45a4ede37fba87051658e79248fcebde7c36009954919c87f836a2084d88f5237f72f4d208412e91ff6f3252574df7c00334a0fcf8fcc7ecc2b02030b8f69 -Msg = c0b2621f30115b296d84c7d4e015981a24435e1877a660cc6cd6ec1de088eb1b2efab889a79233993cc211f67e2e7607c911c573bbdcb7e0eb21aa01d8b03ccf20001916f3d01134c60d6e1d4cf784a3a28089f5caf4a7655adf506e752cd2f5fb8a2bcffd141e847430865232b7eb75185753a68a365ae220d8856c9e43d415 -Sig = 368416eab883a2643e5288ad1d97887941e6a42a54a44336f12336cab4038e693f98ebe3df7378fd501ec9c7f267d6f8fafebc5340744a436d99647b19df668169849032b852df30da848e4605015aa0a9ce39c9ae25368c0575e7957273639d957b392e3556742bc5d0214c4cb82e3d342d3a73f72b7184b72b2ae2225ee830b1ddc528460046d83526c6d07b2bb89d4593b459f248eec995442e4aaad368dc0d3a10907ee779eb23c8a60df52fa461ea99e47e8cea7b761a02bdf81d43e4a7a44992d1317211607e099141de07ea034e95995ae52ebbccd38d0964e3fb4756dd6d57fb01dcc44b6d89852bcc605dabe36398e53029f4397dffef3ece22b939 -Result = F - -Digest = SHA1 -Key = 3082010a02820101008cff9858fa12773ef90c10e8f142f69c0350772f999ff10ba2a5ec71cbee037f3a78a1c46028150a0004fd0198bb8175fa30fd9765a4e2c679124ded055cd37d4102b5e695d91b58bbb44e72c136c5e3da43b4e6d5604edc36774c353a729bb1647f4a33d74ccb70f7b003617bab798887b8f65cbe11aa8349dbfc0f5036042d6cd4c49b10634fdd9d9cbf61d9f85c94ae98cbf77172c61696434ebc2ac6ae8f678f0e4029eacc8fb1699916bdce026cd94780de58a707659ff650dae7599b6b1b6337323832b45a4ede37fba87051658e79248fcebde7c36009954919c87f836a2084d88f5237f72f4d208412e91ff6f3252574df7c00334a0fcf8fcc7ecc2b02030b8f69 -Msg = 84ada4599f0bc0a41db787310f53a1588282b8669ba82e89e7f20fecec974422045d0ac86b5ea366960c4b97c6736e6adebe180771fdad962025da5c2358cb2725679fed559619b0ba9f98a4c6f949942f599b82fa7af38ed91aa219b645142990d5490f863a8948317754a2376d999f1d5c281e5da76838b9d74d69cee385f0 -Sig = 8286a2139ece519ecdf8aebc2db2427c207100212008dd27b1058bf46db2a477ff55bde9f0d02cbc3d93b6a97361bcbb3aad990ee9d255c58a96bd7108311d3d9276247f274d5a0dc9e6e411ff389de34cb693b273b5da7bcaafa101a5fb6ef42fdd6288ff6b6868291ca914f564c75fcad55d7c2ca3bb5da2abe02a3d589686f79c4bbf24876cdba03ffabaab32395245d72051c4aef965c0c18ee7ae1d19d8c179086f6c0495df64c44b618d5e9d07f20e051ac360fd6a84e87f7f7a777059d0ea3eb21a11de8cbc22724944c71cef002b612278ade389530486df058cc5459c20dfd4e9695c04bce91dac8a1ec79f43f80c0d691a1cfd1a7204af2a7a1a96 -Result = F - -Digest = SHA256 -Key = 3082010a0282010100a17a08272e656cf600f4650ef0952b15d568d9fb7f1b3f3559aa3792743f7d895e4e26dec2bf09996de8a99f7c434bc25b0c7d61e83fe5647c213b19902abfa053321a16048642cd3800de26172eb39ccab029130ceb82e5c25c676e89007cb00666a2d8f64e59fea64628cbec9c361abe25841551db01f58b80ab17f02a93cbaaffc2630ffb6f56f206b8a6f8e0f1e5790652e7c7227258dbcd5924e94876f983ed02e4e82272f5d44967bc501d1515d80dc25d5c838d0357d0d1704b0253d6e78802c02931000fea2e865c90b266c8a0b472e8eb17456777973342da6978cb45d2100cf91ca6f6d69ff30ee8f3164bfb180de0b355c067bd8f1a8544b9aac9020366a13d -Msg = 41c00eae64f3e330222e114541eeb5eae1a705ca0c0687a68e7982fa07f1b3de3ee7402ab89df2dd8aa69ec06ba8e4460d611cb7aee88e8dea35e11fd3e4d77c4336379a71590ab0c3e909e0e3b6571915c86c3cc8a0517d6ac1130d816f72f6f8b7d946b6af936f76ff3beed2a0742ba0e4dba082b73a3eb924ff0c3a1bec12 -Sig = 13165444a1f039da049b998e332cf7655149975713b5378ac5772f2e176ddbf338a25e297d873cca5f19eb4e4157c532d06249d1e99c2857f8d74bb74cc7593bc872daf5b45541a373aadc43a0711b3b2f27ccfed06d9578b2a3c7d10a12e398d0302f86e05f154e3cfd2a0e072aae157cae529bd5688fd0ccea22f58181d069eaa0957a5b0eaa2e3f5a4aeaf3d1512a43dd2f8434579eb57e23852d7323c5dd22359e9dfec59dd75ee3b8e234a41863fe0a68c46f777a9f48887a786cfaa40db1c7d9e04efb8a882d8169764b47a013b5d1d15f4cbf758adc83c53e9548e77de20f14b3b5f064465beaaa32ee41755aa48264a14df837ce5fb85a5ab91bf6eb -Result = P - -Digest = SHA256 -Key = 3082010a0282010100a17a08272e656cf600f4650ef0952b15d568d9fb7f1b3f3559aa3792743f7d895e4e26dec2bf09996de8a99f7c434bc25b0c7d61e83fe5647c213b19902abfa053321a16048642cd3800de26172eb39ccab029130ceb82e5c25c676e89007cb00666a2d8f64e59fea64628cbec9c361abe25841551db01f58b80ab17f02a93cbaaffc2630ffb6f56f206b8a6f8e0f1e5790652e7c7227258dbcd5924e94876f983ed02e4e82272f5d44967bc501d1515d80dc25d5c838d0357d0d1704b0253d6e78802c02931000fea2e865c90b266c8a0b472e8eb17456777973342da6978cb45d2100cf91ca6f6d69ff30ee8f3164bfb180de0b355c067bd8f1a8544b9aac90203391c9d -Msg = 671ada018b6132b381978036f19cb9fa9cf7d07334642cbf718c59896113fe2d00d70f1c087743830a13c927be53379398abc3769bddb54772bf1c2abd3ec017a9a35939c315fe940e5fe0eb52f438e1b8307e5e94e1dc348206e203b4d77b5a8a05201e63424b30b4042f4a5786a62a25106bf3c67989d0c8ea13daefe4163c -Sig = 2942af5fb4e5230990bd20c2095fa29e9aefe6e6489111971f0dd397e8d461ab3f59c0f29b86d11ff187984c54c51b0bea35f479a4b83c33dcc8f149f56eb9859a71e45f3a33b83d30eca87bf19803eb5888ead3151d9b673546e2c0dbdb523c34331cbd3a83baae6b55dc465de20d40c5bca9647d74b8399d6e40404828772690afb93b314a55efb5149603c8421fd85ba5b61828c6f679b53f929398d87affb8929e4684631aa2e86d492d3d7c9a90c58e465080442f69623e4eb2080f7af2ed0442c0bb3f0eccf45d4f075e4474a2c058665f25164c457fd19e5852061af9b232cfd2eae7b60001364c013a1155a9af18cbc134d1ee8d30c157cde3a9ffbc -Result = F - -Digest = SHA256 -Key = 3082010a0282010100a17a08272e656cf600f4650ef0952b15d568d9fb7f1b3f3559aa3792743f7d895e4e26dec2bf09996de8a99f7c434bc25b0c7d61e83fe5647c213b19902abfa053321a16048642cd3800de26172eb39ccab029130ceb82e5c25c676e89007cb00666a2d8f64e59fea64628cbec9c361abe25841551db01f58b80ab17f02a93cbaaffc2630ffb6f56f206b8a6f8e0f1e5790652e7c7227258dbcd5924e94876f983ed02e4e82272f5d44967bc501d1515d80dc25d5c838d0357d0d1704b0253d6e78802c02931000fea2e865c90b266c8a0b472e8eb17456777973342da6978cb45d2100cf91ca6f6d69ff30ee8f3164bfb180de0b355c067bd8f1a8544b9aac9020366a13d -Msg = be91864d3728f895c689f09b28484138e0afa29589bba7486a68f0bf4b2ea1e287cc11f46344c7ba9e27a2e049125798d97921847ba3b3d6a7f672b6f875e1e43b875c9ec6fa0ac40b470d3a6c18fb8e510792da78a9a7ec8dcb60a5fbfba39f014bce120851a9f9347299703961166170e25e5f2ad46bd2446e2355fbc9d05c -Sig = 631529e0b149ee1528d514861cac711eab8c01c1c22c7ff6ccbc08783a1ccb2748c22e57a1deefa867dcb1ae74c40b1969db2cee64c0706af8daf4c9e91c12672d8f0849af4bd0c4c5f8e439a3ba7e3ddf38a9b38db545410dec0aa40522d6a3cbc2ab53a838298f0b93ae7d362158f04858fc33ec03fa6d3b7ff0f27d74cc4abcedd25642f4d259d41511456004c24385ec32553ae5d5728a8f68707ddd6bfa51c2f4574e1c96ef4db0715675fa4fbc57b9091759eda387e16057e9d89797f61df9196044b98667866e12c5132928eb735fa2d02c0ee7e08ed68d80fe1f76bd85756a3967c6d3e1378a754fecee72362928cb622731bb01231758ebcb805f5e -Result = F - -Digest = SHA256 -Key = 3082010a0282010100a17a08272e656cf600f4650ef0952b15d568d9fb7f1b3f3559aa3792743f7d895e4e26dec2bf09996de8a99f7c434bc25b0c7d61e83fe5647c213b19902abfa053321a16048642cd3800de26172eb39ccab029130ceb82e5c25c676e89007cb00666a2d8f64e59fea64628cbec9c361abe25841551db01f58b80ab17f02a93cbaaffc2630ffb6f56f206b8a6f8e0f1e5790652e7c7227258dbcd5924e94876f983ed02e4e82272f5d44967bc501d1515d80dc25d5c838d0357d0d1704b0253d6e78802c02931000fea2e865c90b266c8a0b472e8eb17456777973342da6978cb45d2100cf91ca6f6d69ff30ee8f3164bfb180de0b355c067bd8f1a8544b9aac9020366a13d -Msg = 4c2d1103c36e96d179291397b1238177d4af3b6fb9dc622d23ed80258b096be020346d970d7ea100fa7aa068d5f25d02d2d94e7fb081cdde3f0fbd861f2b7092cafcc86cd4539d9d72265fe33a41fd84293805e3eaa00c51557e502537009c0f516b6ca9a355524fea149831677627a6e2b3a7c4ef9fe82d7024812b5bf0b700 -Sig = 4d8b5ba1f5409f476221b3527be6389c1ca3eb50cd62113ad2f712cb2142ceff3178948670c9cb7dccd44896ddec9c0eba228370cb23919610774e9d70d6eade95865042edca6e90cdc007234400591e1cce71bfbf5a546548d483e68905113693a3d1719ce376e72b180b7f3c7ecd13469b8edd7ef95d9e330d78cb36e37b50e87d161b1abdec433421a3a65b49b39cacde0678de41df894d6a2b0f171cf91052bf0f0bb7cc89889bed7699e33540b4ec8f93ca2c690783dc5d80fa5b815aab0feb3ef4f10c0cb46496aaf6dfd2e5b3a7dd64386ab9a4da0319bd927facaea80ba5f4b1d71e16fcc7550fd8211756c35935507a32f204858e2b475d28eb56c8 -Result = F - -Digest = SHA256 -Key = 3082010a0282010100a17a08272e656cf600f4650ef0952b15d568d9fb7f1b3f3559aa3792743f7d895e4e26dec2bf09996de8a99f7c434bc25b0c7d61e83fe5647c213b19902abfa053321a16048642cd3800de26172eb39ccab029130ceb82e5c25c676e89007cb00666a2d8f64e59fea64628cbec9c361abe25841551db01f58b80ab17f02a93cbaaffc2630ffb6f56f206b8a6f8e0f1e5790652e7c7227258dbcd5924e94876f983ed02e4e82272f5d44967bc501d1515d80dc25d5c838d0357d0d1704b0253d6e78802c02931000fea2e865c90b266c8a0b472e8eb17456777973342da6978cb45d2100cf91ca6f6d69ff30ee8f3164bfb180de0b355c067bd8f1a8544b9aac9020366a13d -Msg = e896edb0455f372c01d222d40af9298bc17fdbf450b4d0923dd7e12d4095987752cde6ef079614061d83fc805526791e81d21c7adfa52132a5c6a148ddec09c97320caad8dc352ff1ad23c3eae69c3028d867de20610469602187959dc5e6791731701b27eedd860204848d4bdccef800b2364f66cfc26067b53d326e4f39b18 -Sig = 6e21208ce42d4ec6512c300f6f9c0d43163eef7e05365448380ce3fec34913a701a5e30455556335101af1ba40ea69fc17b30c4192730336e8af2094d36873cc83617a3feebd2b09dccac1b31b9352c1db3c3dbb7ea1e774578e44c92ea925dafd9de71c46d3f25eb015199150e6e8c26ee612edc3fe2f0ca6acdca9274fcaa87d97e104112b1f85d1c3f3e92f0be7932613afe5a683c0e52f9234fd9ef979844e277e31d3c2b725bbebe97a9a8e619f8308c01a9b3ee48e5dfcca5b153e4890effb297ee0fecd30fd71b6dea0694530fbad6c65abc4621f23263ceaf2cfa21fcd19cb180812667e8b1ae108323ec289826412f124547ddd92024c0ea9784654 -Result = F - -Digest = SHA256 -Key = 3082010a0282010100a17a08272e656cf600f4650ef0952b15d568d9fb7f1b3f3559aa3792743f7d895e4e26dec2bf09996de8a99f7c434bc25b0c7d61e83fe5647c213b19902abfa053321a16048642cd3800de26172eb39ccab029130ceb82e5c25c676e89007cb00666a2d8f64e59fea64628cbec9c361abe25841551db01f58b80ab17f02a93cbaaffc2630ffb6f56f206b8a6f8e0f1e5790652e7c7227258dbcd5924e94876f983ed02e4e82272f5d44967bc501d1515d80dc25d5c838d0357d0d1704b0253d6e78802c02931000fea2e865c90b266c8a0b472e8eb17456777973342da6978cb45d2100cf91ca6f6d69ff30ee8f3164bfb180de0b355c067bd8f1a8544b9aac9020366a13d -Msg = 3f49b00ac1f9255907cc03f9b45dc787c250d9d6833fb389e2f746e1ede599d390cbb45ea3b7bc1b28365f16cdc573dcb988d9d5843fa8d4877587ed57fa5b878c9423b1c7f21fbaf3e138fbcac39cf89b3ca9a84b2e0c109be82a17a89abf95b80cc4ad3390975df0365653b23e8b02f3d30ff6e0f62864a4b8f506e9ac0c25 -Sig = 90ac97a93a9f6c5c6e268e3464b6d547dc29bff8797d9f776e2f56fe1c30fefbb679ca9fafba40f400f08a5163d757e638aee083084581b760ab30071e075f90183db328e1ab519fedca1ed92a1e4e473b538e2470606b5379abd2e4b73f4c132e30c115bc34c73019880571c30fa6c6c1e320c13022317cd3acea8c520f87cf054e84be89a952202fc3f8d0d707cd8806b8b22bf2c0d7bf884688607a05b635210b9a7e2e1d2a28e324c1573d363d5a76ea0aaac70480671caa4969e5177448e62e76270197697fcaab720d811588c8ab540f053c8b23b7cefad205fd4c444bd5e73d80c62451158331face2b6f7ddb034dd5e61bec444f68d0c7e39d2df940 -Result = F - -Digest = SHA384 -Key = 3082010b0282010100ce30e07f34619a8a127f0e4401055bbea222f7c9eca47e0ace1d2adf756c0600f88aa165117a6f069746facb76a74ce4769d308669bc7d200763a2919ff119cfe6ec2a614f1bc8d4c4620921b1e60012fce58b39b19ee72ffd76544469d5e996215582fca819b7d6107224c6de0439918702e2de1fdf820b0900d38928877926fe8713f6a81be084cf0f43b7c8b16d065817855ff43a0c453ade8431b6cedf700733853cf534db64e1b7e9cd25f315fe2b66121829356d502d5c833a7240ba27b2eef11cc4943f3f483ae31e5bb9f4006418319520d2baf5821d740bb7ec2df1f573f3fc89ef27090453f9bec58dc0fe8544ad9a6b157fe5183136bc768b39cf020400ee7f0f -Msg = 594007ec8417ba706089919c0659195a06e8fe38094ccf18b5a10028d1a43515aa7ebe7cb5dd5da2754950649fb68b717d5546b690b0b71a79f6216c1a930d99f804d723e3ea6dceda5d549d2982ecfcd460f43f38ef504bf0720a93f60798470a7d5dc75865725e556ca52deae8c265d4b012ba4b312214e1bec587ae285c85 -Sig = 25c7ab6e2f2365bf872dbf31ccf19239ca06542a9fc8fc47c69d25476db031d7869d3a340e1e0a8933fc36b36c49a4ef34af62e53bde304a4ea28fb14e20b3785a543a05bff10c4572753267179b45e32ca403c1e60a49e15086e160b006cbbedd908854e271e5a72c1695411da6078c6157d1d929d1b9be091c41f30f839de4500162ecb8507ae963c0fee43e6a431b7724fa0286d1f34f67f6e41cd6880aedd38c4261e43223eeadfa7d7c21c4ec3a47d04cd2fe5184180e4fb53091b7968df377fe09f02f9fb9ecf4ad929b373c131628fe07296dff3b8c278f50ea61dbb5c1023dc311e67b45e2986ed4121eeb6a345ba4c32eedfdd76e78a036414b1839 -Result = F - -Digest = SHA384 -Key = 3082010b0282010100ce30e07f34619a8a127f0e4401055bbea222f7c9eca47e0ace1d2adf756c0600f88aa165117a6f069746facb76a74ce4769d308669bc7d200763a2919ff119cfe6ec2a614f1bc8d4c4620921b1e60012fce58b39b19ee72ffd76544469d5e996215582fca819b7d6107224c6de0439918702e2de1fdf820b0900d38928877926fe8713f6a81be084cf0f43b7c8b16d065817855ff43a0c453ade8431b6cedf700733853cf534db64e1b7e9cd25f315fe2b66121829356d502d5c833a7240ba27b2eef11cc4943f3f483ae31e5bb9f4006418319520d2baf5821d740bb7ec2df1f573f3fc89ef27090453f9bec58dc0fe8544ad9a6b157fe5183136bc768b39cf020400ee7f0f -Msg = fa742374566394a67041b2671ea19204ca568b0c1588f605c008335dcde1eda4e1309ef8ed3555c00da9b79db152439dfad6dbb267cd8063b0195ec2f27a089e0d5d04f94af58abc428d89aafb1deb93531b1acaa293c3d99b7ada727340dea946a45e61b6ccbc04d59531784528114e9dce503c0f0546cd48d3af57985af62e -Sig = 01c7c3dbf4d817f4c473b23477df5ce1de19da551dbfbf3bc2d1d5ccc0cc0e92b047bde1f953f7bd0617850f9fc9fb6df97cafb51f123006ebe6271e5ebdd9e5a78d3a537c723fe512dfdefcb424caa8918d3c1949e8f495e01ba3c74be7bcc072f9f9708b08d15380d5829553c586797bd8d6879fa705511e5f8471df0eaaa9fa257fa867bb2bfbdeca0d7e333e4551fe9d7fe0d933397b33ecd261ad3f0f2a387be15b86916b18a3c96a782aedca04b9d04c8fe40d6ad607e20d29190ea97114d42b21a5b852c5c60301525f59345e648e2f6729b5f28ac43db465e3538f279c0759ac5784cc0ff8e5c6d667465af27257718029c94ce06665562108a8ef93 -Result = P - -Digest = SHA384 -Key = 3082010b0282010100ce30e07f34619a8a127f0e4401055bbea222f7c9eca47e0ace1d2adf756c0600f88aa165117a6f069746facb76a74ce4769d308669bc7d200763a2919ff119cfe6ec2a614f1bc8d4c4620921b1e60012fce58b39b19ee72ffd76544469d5e996215582fca819b7d6107224c6de0439918702e2de1fdf820b0900d38928877926fe8713f6a81be084cf0f43b7c8b16d065817855ff43a0c453ade8431b6cedf700733853cf534db64e1b7e9cd25f315fe2b66121829356d502d5c833a7240ba27b2eef11cc4943f3f483ae31e5bb9f4006418319520d2baf5821d740bb7ec2df1f573f3fc89ef27090453f9bec58dc0fe8544ad9a6b157fe5183136bc768b39cf020400ee7f0f -Msg = 27291335228e1da94acb8a3b47f7e1e581e7763a88ffeae4b248f55006c363a858fd5d02b6e4ead703d9b6b6e2061139d6f23a39a752de3e0723dc3975f54b76628abecc929fc617c60ab9e89805b27aa6cad9e8f260e59e89b4df0d63eb28a48bf7bdfb7f68ba51da851d38309ccd8f3a96dbb133ce07ec81248635984d0219 -Sig = 017fd9586eab20cfa751dfc278b426ddf05fc29d0c51d1de59f1adc1aacef5c31abd2c5491994f5884f7b6e939c238ba61a25c647eb881d34cd21e99fa44f778db68268b46dc6e7f06dc36f28d9d96706e8e3c02bb2d6a7bf11c8fba3b7477697ed5f43ebf109c3f6a70ac2af0510d91ed7312c131fabe48df9ef578965982649a3aedee8e103845d2ca72f5ea5f33f5f72a191e280f732cfc4d2cbd32981f385518da19755bae7c90d398c15e75492391c4bc06e61ac883ce397ff2a464bba432c3baaf65a053446d6d2b98f15243c00f2b248fcbc3ca46fc732f7c1297ed346a80b93758ab55bf32f8bfea9eb791c26b642ae085321831c0f1df200adf3afa -Result = F - -Digest = SHA384 -Key = 3082010b0282010100ce30e07f34619a8a127f0e4401055bbea222f7c9eca47e0ace1d2adf756c0600f88aa165117a6f069746facb76a74ce4769d308669bc7d200763a2919ff119cfe6ec2a614f1bc8d4c4620921b1e60012fce58b39b19ee72ffd76544469d5e996215582fca819b7d6107224c6de0439918702e2de1fdf820b0900d38928877926fe8713f6a81be084cf0f43b7c8b16d065817855ff43a0c453ade8431b6cedf700733853cf534db64e1b7e9cd25f315fe2b66121829356d502d5c833a7240ba27b2eef11cc4943f3f483ae31e5bb9f4006418319520d2baf5821d740bb7ec2df1f573f3fc89ef27090453f9bec58dc0fe8544ad9a6b157fe5183136bc768b39cf020400ee7f0f -Msg = 7a55bdcc36e6ff6c685ac6e7c3250a6c881aa37c05dcf6fc5c95d38985ea9e0b962ead8d42d5f24ca02cda0d2e4874b4163cd613b090bd0047ee73aa201df62db83456634e075ffda1e678d3fb87cb796e40a6135e79216a4062023fa0e1dddf69cf80f761638eaaf3ee69e131c955e2198cdb2517816c62cc5947ef0e1d9d49 -Sig = 54807d1b14852038dc94c53e2bb8bea76f074fe33897ded6222b52f1ff0c9144ebcb38d83b70f6b2d59600ef9ad089d4e3ad1ed35cda4fb54213b3e4b7b29d5f18725a03e9a9318bb56d96d9538013b110e7d810980aec6a451b52330e7d7f8fe02bb29519ea98053cbcdaa8d3657c0de6a4d268dabb6536d050de9526a03b242ca9f30e7889088645fdb0e46ac09f8a7bd79914ed5873fcd66137f93e19a5e1c372869113adfffc2186c70f87eea2f91b83235ab3113439b5cf1b0fdca9d4db02af34ab48decab4b4b0db27c6fd36f8dad5fae9f395417b3049f8c995318a2e09768869f23a349072fb7c885efb32cd3aee0b35469fd8516ae252e45df0ea25 -Result = F - -Digest = SHA384 -Key = 3082010b0282010100ce30e07f34619a8a127f0e4401055bbea222f7c9eca47e0ace1d2adf756c0600f88aa165117a6f069746facb76a74ce4769d308669bc7d200763a2919ff119cfe6ec2a614f1bc8d4c4620921b1e60012fce58b39b19ee72ffd76544469d5e996215582fca819b7d6107224c6de0439918702e2de1fdf820b0900d38928877926fe8713f6a81be084cf0f43b7c8b16d065817855ff43a0c453ade8431b6cedf700733853cf534db64e1b7e9cd25f315fe2b66121829356d502d5c833a7240ba27b2eef11cc4943f3f483ae31e5bb9f4006418319520d2baf5821d740bb7ec2df1f573f3fc89ef27090453f9bec58dc0fe8544ad9a6b157fe5183136bc768b39cf020400b9bc79 -Msg = 9570e4ae5307f347703324da8bad990a8659faf8d17acf13ec232d3227ee95e0adef19f6c0ebc07046c62c79853b7ac82bd06a2f9108c07140daea55b562e2f861d75667f4bd076ddb5b6faa0770a6e5f12286a4db370ef95887049e0eb1de44bb0ee32976e38ee938db33969ab4e40ae038967c376f80523b13c436bc44516c -Sig = c442aefba90877c319e5b8b2a87b50778bda701fa2bf5af4724d3eb7f894daea3fd719cbf0fa88ace828a1c7ff1701077efca06b8717fc2953f055d69bf8cac6f5b352da3ea459282903d42e886642c5ecf49dc5c8579f22d88c951a562a335b615df1bffed752abaad6a60612b186a4e971ec2eb8c33d3595a47e8fc871412b8b8f5f2fd262306499dd81f373e29144776c04393a2d433e9e3dd221678b2e62e7f7df1d40238c2c10c6f923c83b055e2a14ede1ec3ec1c48ec95faf0d61831e8539dfa62a3723e57d12bda7f75c2a7bf77d8a4a96ad2ba9a01d615b6ef05bdaa85d4e1e4804e316f4d32b8f1c3532366872497f139bea71a4f86ce00edab93e -Result = F - -Digest = SHA384 -Key = 3082010b0282010100ce30e07f34619a8a127f0e4401055bbea222f7c9eca47e0ace1d2adf756c0600f88aa165117a6f069746facb76a74ce4769d308669bc7d200763a2919ff119cfe6ec2a614f1bc8d4c4620921b1e60012fce58b39b19ee72ffd76544469d5e996215582fca819b7d6107224c6de0439918702e2de1fdf820b0900d38928877926fe8713f6a81be084cf0f43b7c8b16d065817855ff43a0c453ade8431b6cedf700733853cf534db64e1b7e9cd25f315fe2b66121829356d502d5c833a7240ba27b2eef11cc4943f3f483ae31e5bb9f4006418319520d2baf5821d740bb7ec2df1f573f3fc89ef27090453f9bec58dc0fe8544ad9a6b157fe5183136bc768b39cf020400ee7f0f -Msg = 33bdcbfd07f82ceb4a4b208a3d3c24316f745360ec1f374ab092df90613031503d8e825e51d564d1eb68bfc253c72450b6b45de7639449c33a17e7af601bb01338ce2a2d8f13ba9f1728b92a1785cbb960076ca1834dcc274163dd43439daaa30cc6eaf32b7ad55cb5d1364af23ec27357b6a815b414697eafbcead2717ec809 -Sig = 2077c18cf72a6a6366fa6632a286e116ae694008cfc3f13b1cbc005fee635a317abea470fdc28fbbe9cefa2f9ed3796488d00a8ef419bae16ac54f5c7c5332f2221b4e753599e20d778d714dc065106d0f023276afbf012c5cfb97ec3a364d27392d2a530acde5b6631b6fe40fb825bf31c7e7dce52e1f9a22fff93f8a5f2a34dfb03fda309c580ba5cd174886ca1af32b24f4733093a4f360c696107943e88e0e9896f78011800e6cda15c94154db4167d4a508e331c08d0127446de659cf2d519f0451a50c38e14572afcaba1e8f0ac218ad250c32cb370b5390e7bb010b6ec10d81c05e86f99c63139bb7190f605fa9ca8c8decacbcfc4d3c6e61d1895c0a -Result = F - -Digest = SHA512 -Key = 3082010a0282010100f5596b5c452079319067a1bb3fd2f9c600abe8a8be658285a99b19dfee65f03c52d7e826943a934bb25e79542b7a9e179b6f95698bcc83e19cc6db49bdf718957206d83621ae4e384eccdf283b52fa3c4e7c0859859b574da49cecdb87249f20f16f0a9d63e6907256d5db57ed3cf12675b0ae63b458a1d4b64a2c508cd6f18a4ec57e5cdf2c62edebf1b739bd01d8a280d3bc88a8a81f9627e4aa83f0656b03ff04710ab4531f4f854a6a9fb326728b8752f61acdcc5e1d8f523e69b32b1aced6e9850a777048f294365ed98fb85fb4c0a0829279d0346c8efc1ec6afe7576116d15339cdcd1a8fbf4999264bfe22e9b6e5b6dace317c7689b866a72152829b0203534f11 -Msg = 142565e97e8f5f95ec31fa8325beec222b3eedd82062bef364146ae2fe53cca53d3e51829e6e00faf189b7fbb814b757d089627553aa4447bc14517b4c176df6adc5327ed649edb62e7be950f4b1f17eded710a900c29b66f0c171a62875822cabe38e45ecc82fb3eb2c1aeaa13aa27f9e4f7eddf151cb3a484255c958151231 -Sig = ec232493d315f0c4ad232653ec9de464c33f956af3718c5b9f1266e7402c61c5ee9c177f14f8dcadd1d074e8f4087516b77b2477e4fdaaf48fd138e89903ff04e11cd0fb07d832ba545025b921496443b52978e215239474a031c44bf96ecb4aef393fbe0fb52e819cae819af3ab41c48b80afc60aaf41eefcf36cd00c2aea08dd09e5aee0056ed1b7f15ba237daae1cf4fd944dd09596e5dc0f029bf83b52017018c046e0cb58e3f24593117a624064d5c9afaf9df69bf92c816b72e625bfa5e9cd96e963c62b0cf82eecdc1852c1c02147030fe540dc270e454b4106f8116cbed3231630c7c1345be5f8847f8627fa082675c680a98ff109649fc4399d40aa -Result = F - -Digest = SHA512 -Key = 3082010a0282010100f5596b5c452079319067a1bb3fd2f9c600abe8a8be658285a99b19dfee65f03c52d7e826943a934bb25e79542b7a9e179b6f95698bcc83e19cc6db49bdf718957206d83621ae4e384eccdf283b52fa3c4e7c0859859b574da49cecdb87249f20f16f0a9d63e6907256d5db57ed3cf12675b0ae63b458a1d4b64a2c508cd6f18a4ec57e5cdf2c62edebf1b739bd01d8a280d3bc88a8a81f9627e4aa83f0656b03ff04710ab4531f4f854a6a9fb326728b8752f61acdcc5e1d8f523e69b32b1aced6e9850a777048f294365ed98fb85fb4c0a0829279d0346c8efc1ec6afe7576116d15339cdcd1a8fbf4999264bfe22e9b6e5b6dace317c7689b866a72152829b0203534f11 -Msg = 53b72306191a180e86830fd37a1f13847739cf6ab30149ca6b8ccd0d791d261e29a315144982fb117f96d969e0757a07bdf5ef0dc0ef3cbb38425192b21a3cb9c9729c9f3fd759e24c6f9270353bd7ec21999953290ddedfae40392bef49fa99da2ca2f123a09a4a9416242ea4f691f94a2cb58213e398fd73906e205833c9 -Sig = 6f17ef5b663a05ad79a4fd77515845d7dcf6fe5eb928f4e6567d7d615277ad7963595baf26971c1ee8db870c9e830d5be09732b8911476b09c1493aa1ce8faa2b527349ebfc882eb93acca56f5c0f5682c784c4094ef86aca1bf36acc97b7a9a96aa349c5f8d2034b92b8a8725be2091f7adaf8c3a1ff14a1e900a35bc6f2eee130595411a3c94aff5d7a0f9f9f5a8df9bbd5b28676ebc587c1f1e26000cc8b789e8c6974cbd49d58c139fa5847a924f14074d340b7bd4f325773f09d82a0da54da2d7df251951c5950762c9a3a0d2db10693f4aeeb97780367698aca99a42fa47b5f185e4c607cb0dda51aa2d93611e2f5bca343baef36dd6b0bac18cfa6b73 -Result = F - -Digest = SHA512 -Key = 3082010a0282010100f5596b5c452079319067a1bb3fd2f9c600abe8a8be658285a99b19dfee65f03c52d7e826943a934bb25e79542b7a9e179b6f95698bcc83e19cc6db49bdf718957206d83621ae4e384eccdf283b52fa3c4e7c0859859b574da49cecdb87249f20f16f0a9d63e6907256d5db57ed3cf12675b0ae63b458a1d4b64a2c508cd6f18a4ec57e5cdf2c62edebf1b739bd01d8a280d3bc88a8a81f9627e4aa83f0656b03ff04710ab4531f4f854a6a9fb326728b8752f61acdcc5e1d8f523e69b32b1aced6e9850a777048f294365ed98fb85fb4c0a0829279d0346c8efc1ec6afe7576116d15339cdcd1a8fbf4999264bfe22e9b6e5b6dace317c7689b866a72152829b0203534f11 -Msg = b286242ed447af64ee029c7f33b5428d440503773f30748ff843be68868d45ea025387a58bc546668d31e9084377208d7bbdc76e9a630d2edf39d535ecf05cdc82cf1cc58ca7f16d5f097b0440b6c37c265721e0c26f5de7bd8d14c941c65d51ba62ad33ded6f8a1ebf319192f5c7481ce3dda75c03aade019a644c98df69070 -Sig = dfc19a45dd3b67cfa9a47615cb7f5365f28b85d5c11ca965846326849a2002e64b8f0e377be83641ca5e795f190aa609bc03f94bae4ea25e681959ac85e0ba28f6d298244c8c6f5c18edd868005c375221729dc434ebeb21e5063fcb281761d2b626276dd14b6e70ab53c3909e8df9f70f8a93a1485ab9794e7ce5c424a530329bde2834b8363e1f857dd9ff8908f4108c305ef2c303018392324fc600617d5ca4d041eea9a77f116ae29766ceb75a1c5f4931674044c5e48c7b214a2bb6f1da81ccd43ca056776da7b1c0702a9f39ba1cbd861251ea25620eee495e6a8cb00bb0a0963b609086ffe552bc8badaa9aa6a06a9710fd96f6047b8b1660a7680b34 -Result = F - -Digest = SHA512 -Key = 3082010a0282010100f5596b5c452079319067a1bb3fd2f9c600abe8a8be658285a99b19dfee65f03c52d7e826943a934bb25e79542b7a9e179b6f95698bcc83e19cc6db49bdf718957206d83621ae4e384eccdf283b52fa3c4e7c0859859b574da49cecdb87249f20f16f0a9d63e6907256d5db57ed3cf12675b0ae63b458a1d4b64a2c508cd6f18a4ec57e5cdf2c62edebf1b739bd01d8a280d3bc88a8a81f9627e4aa83f0656b03ff04710ab4531f4f854a6a9fb326728b8752f61acdcc5e1d8f523e69b32b1aced6e9850a777048f294365ed98fb85fb4c0a0829279d0346c8efc1ec6afe7576116d15339cdcd1a8fbf4999264bfe22e9b6e5b6dace317c7689b866a72152829b0203534f11 -Msg = a5374f49877cfd0734fe20ebe12c360d950416748ae3788ad69cb7cc4ac8d6c69b5ec23fbf84d6b19aa4a4fcdac1f35a200c049660b21a798af938866a8b2de7cd11cea6e5048320eec005b712db65c88ab451dd074f93235060da1e2ca5bd9b8279fde6bfa70a3e787cc9865120953d1d2684b04661eb6e6ff924fd59bf8ecb -Sig = 2e985464b882f7c6672154a107154add844b4be163ceb8053be6b6fd632cfbc86d934e5aea7d11878b4df6e24fb0dce099c5b52bfec0897dc57fb03465adc2067a779d011e64ceadfb1e0a7051c5d248094ec8cc239d80c6e70591d617e54f503158f2b22b93eeebe017897fcc8f44703c815f07a476bda567dafe122bc07363818c83eddb6f777bb9e84f11549f3cbc283b78b3f2277c7a54072c13032a416c6470395472303c84adc17dc6128cd82c6ccd907ccb93adb0990289bc5b2eaf948c2f421ad0caf2655cd5839c86aa854370550ce033bc05b7638b8edf67bb5ea997bd904df293b89a0d16535134b66a6fd5551aec3dc09f29fdecbfc6f474de6b -Result = P - -Digest = SHA512 -Key = 3082010a0282010100f5596b5c452079319067a1bb3fd2f9c600abe8a8be658285a99b19dfee65f03c52d7e826943a934bb25e79542b7a9e179b6f95698bcc83e19cc6db49bdf718957206d83621ae4e384eccdf283b52fa3c4e7c0859859b574da49cecdb87249f20f16f0a9d63e6907256d5db57ed3cf12675b0ae63b458a1d4b64a2c508cd6f18a4ec57e5cdf2c62edebf1b739bd01d8a280d3bc88a8a81f9627e4aa83f0656b03ff04710ab4531f4f854a6a9fb326728b8752f61acdcc5e1d8f523e69b32b1aced6e9850a777048f294365ed98fb85fb4c0a0829279d0346c8efc1ec6afe7576116d15339cdcd1a8fbf4999264bfe22e9b6e5b6dace317c7689b866a72152829b0203534f11 -Msg = dbed25e65429b89264ff6928e6ea9424b862a2df1daf870660fe8f4bbbb55b5a7604260f53bc4ee62a650fb3d18b91933e582522f068cbee8bd8f92cc2a097aa79234e052b05021c8a3d9dc4666b0fbed06b93e67f2a33ac73b88ec8d79fd92a2c742430a4abde1cccaf9cc56e33168db6c27292939ec62960c7d888c45a28c2 -Sig = d5c50cfbf215c17489ba4d29b5e2f84a4ea244ef0dcec72c3a077e12d74d586574aa9683cdd0546c3581a723ca048415c6252894e40d3bd803138f78c7c493fc679aa1104e2844bf51618c3571789175828cf7d59addabeb8fa2745d08a247d5937600f8bc0dfe2e1ea7abd257b3e1c207a3be3e2fef8344979c4e0dbbbbfcaa908e1c9c6da303e510f0bb455f4b91dc7fee576e358fd5b2aa8f1e6440bc229c004c31e6e61123aef01a0d382852689ac04424007f55b6fa6aa298b9a93b3eceb6e585f69a5714231e60e1db27b2cf94f7ca5f6fc4118c0604ee716f41736c7efa6c43a3af42b27b585cb9c6356be864e0514e2bae881f4ad5ddb9aad592d7ab -Result = F - -Digest = SHA512 -Key = 3082010b0282010100f5596b5c452079319067a1bb3fd2f9c600abe8a8be658285a99b19dfee65f03c52d7e826943a934bb25e79542b7a9e179b6f95698bcc83e19cc6db49bdf718957206d83621ae4e384eccdf283b52fa3c4e7c0859859b574da49cecdb87249f20f16f0a9d63e6907256d5db57ed3cf12675b0ae63b458a1d4b64a2c508cd6f18a4ec57e5cdf2c62edebf1b739bd01d8a280d3bc88a8a81f9627e4aa83f0656b03ff04710ab4531f4f854a6a9fb326728b8752f61acdcc5e1d8f523e69b32b1aced6e9850a777048f294365ed98fb85fb4c0a0829279d0346c8efc1ec6afe7576116d15339cdcd1a8fbf4999264bfe22e9b6e5b6dace317c7689b866a72152829b0204008f3795 -Msg = 562eea18d9654547cb566556964ead28616c18e0920dd7f691883c8bcf1cd6f90826deafc597d13c24a65fa9dbc2840c7bcbf55af281bd7d543d28a6dbdfe0e52c0756f7db88635f321930b82e4e5349cbc73ada81a8cdc60f484f52772e853d4a391b98251e43d87c189f2a96da6106d9c9b10748684ffa4a137935adf10f2a -Sig = 4df68855dfccab1e7a94430bebb9c631770e7bd75538a9017e2df5b35117db59f8c9f620c1fe41bbc5bc65155355a83c1c1da767bf7e6c40ed61464a53009d7d8d1ee31e7e82c4b97c520d74a60e0de0597b977d07ee95fbbd4e5486d7ad61ebe302de0cd634be178a04c8b9498c89b7ee1c674a074e70ae0f93e7e5dda89c165808a8ab55337a048ddb7eff91a8b5309ed9941ecdf3ddc3b1e235f7cf139b681b97cfbc584d9c0359b26a8011dccd7d5ff0475d52959d35e30ad66735bfdd06e63749dd775e65d9407375ee9f5f9e73bf77b75fe0a5923fa7fcafac08e10f0563dfedc2aa2abfaff6f73ba293497eb0159cefd63c974553a24cf0602353fd4b -Result = F - -Digest = SHA1 -Key = 3082010a0282010100ca1d2f73de2f586157f15beb1ab7c3cf7b8d99ed818cb89eedd10ce20fa3cdf12c41bf04ed06769b7f78fe493a2d17acd5fee9c147d4944c9df3a6a99e5b4cd0d4e6392733806998a05f546a046a6767d79f23e627dbada0404f2b7dff2e17a5bc537bd8efbe0b87e50f5a4645e4a0dea8a2799d48dc110daaeef895db6d6244627d45cb382bfe394d94cd122f8ad73d3c0ec0946669938c1204f940dafc4cbaa95a91d55ae84264390590dbce3b9bf7a6a085444906c774877ae3a67b1a6d19ce37936adb50cc510018dcbe3ecc964583ada6dbd22b0eb4a89571d98238894b1033764b0c4726fe8511f4207568aa4489cf7a57e84b9c5ff26bdab9b660f91d02031e5e25 -Msg = 014bd8a7ccd4c3924208a8a6021bb7df5f238021062ab5e1e18131223c583aa4278c03581bc07516e0af2f92adc0cc8d92dc6448137c553e16064312ff595dc719a6e22f3883e4a69c3a4d0019671fbf75c200891239f5dacc426ef7256f8323a0427d146a4498a83f5107d58c3639ded17e5bcd4a881e1dceddbab7f7c13320 -Sig = 400994dcf90a8391d448059aa51ef3ef10ac64df165d5b6b22fb745bbfec307bfed443dd912414bde19bddff653f6460d6c2e1be6db883132981bc05d66827540a0f5fdb883645511173dc3b3c900daf1c0c2da808ef4a86061777f0c6f3ef738813f3cbce89cc8daddf6d178d1a45c83da92b3cc0cb68be6de5f5d56e5aad6db077f23979648253a8b1758e6478605646981882445f46738c955c900d74c60771528b91a83c69ced1ec3159be138b7d3872aef5ffd2f58c02b50bebb5dc3164bfdab96e6f325f9d4293a6b41d3f9f53535681454051778b98655849174748b1ef1a3841532b5aacc6a4b68a0cf994993643549ca0df2eba94718b11b73d6c9c -Result = F - -Digest = SHA1 -Key = 3082010a0282010100ca1d2f73de2f586157f15beb1ab7c3cf7b8d99ed818cb89eedd10ce20fa3cdf12c41bf04ed06769b7f78fe493a2d17acd5fee9c147d4944c9df3a6a99e5b4cd0d4e6392733806998a05f546a046a6767d79f23e627dbada0404f2b7dff2e17a5bc537bd8efbe0b87e50f5a4645e4a0dea8a2799d48dc110daaeef895db6d6244627d45cb382bfe394d94cd122f8ad73d3c0ec0946669938c1204f940dafc4cbaa95a91d55ae84264390590dbce3b9bf7a6a085444906c774877ae3a67b1a6d19ce37936adb50cc510018dcbe3ecc964583ada6dbd22b0eb4a89571d98238894b1033764b0c4726fe8511f4207568aa4489cf7a57e84b9c5ff26bdab9b660f91d02031e5e25 -Msg = 26dfc6c8d3f37c12edf9b1e176ba99ea602fd989a3453eaa8eddafe95a1760f805d049415e69d7cd5ccae165b3a7ddf7a902543b26f293950ba2a43ec59c7c9f224876fd63af005b9285949c1667ebe984616d52b8b3ebb825d590ea69b8150e244f35430b4e61843832b4cfc481298798530c188011aed9827d5d366df2930e -Sig = 8b9416808240350eab81f1468367cdb6c2b770b7dd9d88fcca8786db9407179b9401c5f074bf9d7a85c5fe26859e8e3bfd26502175bd1a759d1a6bd79149c043b25d9fa70d80f163696ca4153a3df857c63e709f0c00bfcd47e66467110dc6aa8da6411586101eaf99068585962ff994e8e51b30319561648994f2533bbd8b8adc2dff2126cd753ed8b8abc5913c0cf984e78128e2c18fc1f9d8017c60d2c4dd642633dfd412cc00a0c32569b25e328f242d691d75cd2ae22f8359426548b04e36f15bfb9fd561b1e3f3196296823a3828bb791f19bcb75e172f7c06e30cb2e9576bc83a7b59c67b821fc8c1d4d9775ef0f2b33a44c19d3aad04abfa17b8ac71 -Result = P - -Digest = SHA1 -Key = 3082010a0282010100ca1d2f73de2f586157f15beb1ab7c3cf7b8d99ed818cb89eedd10ce20fa3cdf12c41bf04ed06769b7f78fe493a2d17acd5fee9c147d4944c9df3a6a99e5b4cd0d4e6392733806998a05f546a046a6767d79f23e627dbada0404f2b7dff2e17a5bc537bd8efbe0b87e50f5a4645e4a0dea8a2799d48dc110daaeef895db6d6244627d45cb382bfe394d94cd122f8ad73d3c0ec0946669938c1204f940dafc4cbaa95a91d55ae84264390590dbce3b9bf7a6a085444906c774877ae3a67b1a6d19ce37936adb50cc510018dcbe3ecc964583ada6dbd22b0eb4a89571d98238894b1033764b0c4726fe8511f4207568aa4489cf7a57e84b9c5ff26bdab9b660f91d02031e5e25 -Msg = 59e84c0d700305007789dd765f33fc014241ef0fa4b406befcbdfaf27175d3a4e1ce097d27caeaa39eeb3bd3e1ea22b0d5ac445aea712a439d4fe93e42df02d9003687ed1d167f737b668c9963e0cb16820afcba3167e349faeeed8957bb179abc050c86d8508d1919e316f36e7dbfdb5044605603fef878198350fb3972db8e -Sig = 39daab754cc68ccadaf33a057d76aacccc30ad5341dfad503b33f29243e57636a68453323d81cede8ba0959bb980905f4a464ac21880842cf26eb8e8801c105ebda3a866d0d3e8597d234a21c46adb5dff49174df3c36f7c3deb693362418520af227195d609a548836378f4885af1ef95d2d9373c53ed811884cc534b7d88449281b2155938553205d5b51e39439904757a50d6c877d686b32906dd50049a620c3c3489c9007633a04882ef0186af29c71518ae8ed96f307d68eb33ce40793de205caea711cf9bea7fee8b751cd764f4e4e616c50be2456a868803969d692ff8b8b15a4f0d4ead24f610e231d5012a31247b46a582f1d3fea404a5d29691f7e -Result = F - -Digest = SHA1 -Key = 3082010a0282010100ca1d2f73de2f586157f15beb1ab7c3cf7b8d99ed818cb89eedd10ce20fa3cdf12c41bf04ed06769b7f78fe493a2d17acd5fee9c147d4944c9df3a6a99e5b4cd0d4e6392733806998a05f546a046a6767d79f23e627dbada0404f2b7dff2e17a5bc537bd8efbe0b87e50f5a4645e4a0dea8a2799d48dc110daaeef895db6d6244627d45cb382bfe394d94cd122f8ad73d3c0ec0946669938c1204f940dafc4cbaa95a91d55ae84264390590dbce3b9bf7a6a085444906c774877ae3a67b1a6d19ce37936adb50cc510018dcbe3ecc964583ada6dbd22b0eb4a89571d98238894b1033764b0c4726fe8511f4207568aa4489cf7a57e84b9c5ff26bdab9b660f91d02031e5e25 -Msg = 73e48a5d845d55944fe63aa61db36d80724b2809ecdeaa106dd880827db603e1e91822f1b01861b520db22993d6523f162b249a22b029c1f9174929857d6906ea6bcaee9f4cfbb2d2a68816a055e4954bc1ca2d3e4f65ffb91bddf3ebf9091e0f0f6b6ac162a69e6b2b6dd803e43e790c9b0bc02e161fb8ab5daeedd7b8c0d21 -Sig = 5f566d4ad20bec081e05f610df9b972a69afbb71e2a345f3b4fe8b5e2243cdc6a68044e46996ee9bbdd90e6bc7354238566fd7535e6ef04b7d0ea8eb3cb287b23e2492f1f16c799150bfef616467f1ae535667fe76ad5f6ec16aa0f0491c3ee7afebc6da5d6e4ebcc0194e90fd0bc944b0279c9973e269a7452b87a1a317c3d8131804ba4ab2b7a48a8241fa20506d9dd4d1ad74051d28c32c0e1c7bc4099e25c6056a359132c3f0d8d1f2725fffaec815eb91d9bb902aa8d024b797da8035c024539514ff3346067bd583aae8fe5f2a54be488f053407827445a27faaf635e97a7888246d817e7b291d9ae5939e0ebd0cd4a6cefcdf4bc5a637e294a368ab29 -Result = F - -Digest = SHA1 -Key = 3082010a0282010100ca1d2f73de2f586157f15beb1ab7c3cf7b8d99ed818cb89eedd10ce20fa3cdf12c41bf04ed06769b7f78fe493a2d17acd5fee9c147d4944c9df3a6a99e5b4cd0d4e6392733806998a05f546a046a6767d79f23e627dbada0404f2b7dff2e17a5bc537bd8efbe0b87e50f5a4645e4a0dea8a2799d48dc110daaeef895db6d6244627d45cb382bfe394d94cd122f8ad73d3c0ec0946669938c1204f940dafc4cbaa95a91d55ae84264390590dbce3b9bf7a6a085444906c774877ae3a67b1a6d19ce37936adb50cc510018dcbe3ecc964583ada6dbd22b0eb4a89571d98238894b1033764b0c4726fe8511f4207568aa4489cf7a57e84b9c5ff26bdab9b660f91d020360e097 -Msg = da4c0bf959ae81004fed9e58752e03f486906288f30fd891d7a77e952dbc3bac41b9dc3f64f86610e4e2aa7a3b571bfb8750ddef3ac21e9e13c6a9794df8b8a1161c0aa94208369d41be3f434ed868a0ea294abe89a123ad8b7171c86d70c03941bdc0c05ba69ab04ec9843a177994ed9764d17e477290c527f0fe09f7edf97d -Sig = 8b31638425af6493fdf969789f33b2f44bb0d84923347cf03cdc72ad9f139fad79096d100e567caa8099ae15c2ff5c74a3ddb8b40f5fa5a23da10b6b39d985d2d2219d129a39587983660fc9d51f43b1cefc1ae1a102c6d9634b4748d3a2688197fd445a635bfe40dba7da006e7016b9f1a77c2be92f1f50181c025b22224785d4c9c7062429506ba2a1b18bd719ef72892029df3098e707bf1858f81dee73827f9e1d1f9fb1055d969ed45a513f39870250c2b8a507605468d75f0d3ddf1dd1ac3a8bd245101dcf1eae32822dd208b0dea4ef5722d22518de07712192178f57c523175fe4ba17fdaf7e604efc6ad5e2215e1f327abe9ec2004bf7b70505e492 -Result = F - -Digest = SHA1 -Key = 3082010a0282010100ca1d2f73de2f586157f15beb1ab7c3cf7b8d99ed818cb89eedd10ce20fa3cdf12c41bf04ed06769b7f78fe493a2d17acd5fee9c147d4944c9df3a6a99e5b4cd0d4e6392733806998a05f546a046a6767d79f23e627dbada0404f2b7dff2e17a5bc537bd8efbe0b87e50f5a4645e4a0dea8a2799d48dc110daaeef895db6d6244627d45cb382bfe394d94cd122f8ad73d3c0ec0946669938c1204f940dafc4cbaa95a91d55ae84264390590dbce3b9bf7a6a085444906c774877ae3a67b1a6d19ce37936adb50cc510018dcbe3ecc964583ada6dbd22b0eb4a89571d98238894b1033764b0c4726fe8511f4207568aa4489cf7a57e84b9c5ff26bdab9b660f91d02031e5e25 -Msg = f0d6d7e7eedfec55dbb2e7506ebad1c99ba7ed0a5b1f9b01afb07cdce20ad7d70f6b3b52e45a6627a598663a7454fe52cf9e4b275a1ea7bcdf06ceee9345404d9bfee62cce38f7f4bdd71dbef0cbd4207387134692b42f45e027fcad7e11355d99761e9c35e16765295554016b861bdc8e498e91894af947bafd4e402bd77faf -Sig = c6141f88f387f4250ea16d2bc2b438fdfdaf3f3eff539a4f0573d249502d08c4a57333c511dac0b1d0e85cc3ff3bcd9ede0bddab2e4141157e41003dec0dd494cce39e4e9e4d77e89ab266e74579382fe4c829a090ffe40ae17b53da2653876112acb2b1575613570f4ccb219ae51ddd950078c0554cdb7394906c54ca960fc56bedacf7d62e25b72d5e727d18b9cd378f8131b9de088216929f42420404d75b4e960a257927f82ff353217042b61a45ecb45457a581dd82c57a76f7160273de2be85b594db977a29e92813f74feb1678e35a339c42dc66eaec11c8531869ee64c8f6fdd4bc2d918ac29e8995a35f06edc7fb1ec494a86b04dccadd448620ad2 -Result = F - -Digest = SHA256 -Key = 3082010a0282010100c9548608087bed6be0a4623b9d849aa0b4b4b6114ad0a7d82578076ceefe26ce48d1448e16d69963510e1e5fc658f3cf8f32a489b62d93fec1cdea6e1dde3feba04bb6a034518d83fd6138ea999982ab95d6a03517688ab6f8411c4a96b3e79d4141b8f68338a9baa99f4e2c7845b573981061c5fd29d5fc21833ff1b030b2deb651e51a291168e2b45ab4202dcd97b891925c75338e0e648d9d9ad325c10884e1fcdccc1c547b4a9c36aef939e8802b62405d6e3d358ffa88f206b976b87f8b12b827b0ee7823f9d1955f47f8678f7843b4cd03777e46717060e82bf149b36d4cf3d0bc7e4d0effde51a72f4ced8e8e5b11bdb135825ff08873e2f776929abb02033c7bf9 -Msg = fc8e19e3b26bbf7c8c33a452b7ee02cbcf56fa94a58b7cee3e0866481fd6f013c7ff47d27e4678704d1590d74eb701be26c748c2cfe9cdb99bb80b4375fff0a16a2b87cb6900d4bc478c00110659b6d257e7cc905d5926b0b46fd706b2b48aa6edf921f6fd019b08837e3b276a3ce6b06c9dce24d8454d7a931613ba5d5f84c7 -Sig = 058bcfa4b10ac6a73918a07b9f0a8db1ebab9a0ee5c7f0a2261b98efb3592eeb6bf45fceae24ff20c2683e1b33291f49a7f86d7fe239c58a45910a14748e10c25a4dfa693e5a77138de2fe5f61de0a09078cd0d3c61b1e740bca7a3d4048d4fa12fe69412438efa18216819be40733500acd8087f429da734fce6a97fcdc9c32991dc847e4d653260890304f378a10b7754cb4ac5efd7a3db23bd44b6542b81ae9fc33edca6eb1570b1a39a0b8976626c3892afc42e6fbfa8bfbc191c3d026a6248e7ee391f977ea5f0442306ce87702ced7b3f00bf0a6040604d0a663859737ec6c04dc84763d1cb63c4da8381a08cc52b370ba09515b93d9a6d3e47c5929aa -Result = F - -Digest = SHA256 -Key = 3082010a0282010100c9548608087bed6be0a4623b9d849aa0b4b4b6114ad0a7d82578076ceefe26ce48d1448e16d69963510e1e5fc658f3cf8f32a489b62d93fec1cdea6e1dde3feba04bb6a034518d83fd6138ea999982ab95d6a03517688ab6f8411c4a96b3e79d4141b8f68338a9baa99f4e2c7845b573981061c5fd29d5fc21833ff1b030b2deb651e51a291168e2b45ab4202dcd97b891925c75338e0e648d9d9ad325c10884e1fcdccc1c547b4a9c36aef939e8802b62405d6e3d358ffa88f206b976b87f8b12b827b0ee7823f9d1955f47f8678f7843b4cd03777e46717060e82bf149b36d4cf3d0bc7e4d0effde51a72f4ced8e8e5b11bdb135825ff08873e2f776929abb02033c7bf9 -Msg = 4c587ab2ddd6b13bf7a916b5d571d7613f24258201b1421b9de4dcfb3d8a99f7ebd5f37704024634ea38273ffab4f846be23b913634f21556dfeeea3a91779be63078d16da637990f1cf6487271ee111c9bbc483674733378483008c9171362f1db6f199464373d97334759445f8bb4acab3ebdaf4e09f494a3bb9bfdedef7d2 -Sig = 052bc5efecb052b92821c405e6f22cf374dd1ce4bf691eb8abcc1cd01254a6e51fe9237cfb9cadfe32a8780135949399b048d26f5de49bb9d008d39b749527eadd13066baff87765eb255021517a2ea69e45bd35db1fba9219c94f944b2c9a33a37779505c8eae52d6061988d152f9f51f0002e545973402294dda7f7c7cc3135c37ced8cf723d4011d1ac16bc1d0bd670eb7f63f079f30dad8cf55c326a33bc1684ff17a91509f4ead4f93c3c0eb6679eab612e05fc71b936c99ca8579cdeb9f26200a4bce89e330fd5d84b1ec98cc1d758243001fb18bc325b630a58154c2d38a5a8ac2ae6cfa54a20f7580a745c206990c142e8a580eb36266a3a9602a8bf -Result = F - -Digest = SHA256 -Key = 3082010b0282010100c9548608087bed6be0a4623b9d849aa0b4b4b6114ad0a7d82578076ceefe26ce48d1448e16d69963510e1e5fc658f3cf8f32a489b62d93fec1cdea6e1dde3feba04bb6a034518d83fd6138ea999982ab95d6a03517688ab6f8411c4a96b3e79d4141b8f68338a9baa99f4e2c7845b573981061c5fd29d5fc21833ff1b030b2deb651e51a291168e2b45ab4202dcd97b891925c75338e0e648d9d9ad325c10884e1fcdccc1c547b4a9c36aef939e8802b62405d6e3d358ffa88f206b976b87f8b12b827b0ee7823f9d1955f47f8678f7843b4cd03777e46717060e82bf149b36d4cf3d0bc7e4d0effde51a72f4ced8e8e5b11bdb135825ff08873e2f776929abb020400b53999 -Msg = 425994d102a63f542766b12d5207ace27de9207630c2fdeaf741450413f1654f7061c563d7829e6665500cd33cb4647a78a9c7c9659ff749ef1c6a6b59a99d8532ecab1885121e54517005de386947d07b923602261467888852c27be6ccd5fd71436d77741f6825d20dc5d5b0ecfdeb6fea96a9ddeaf5adac2a74bb2322b4bd -Sig = c1f91aa430083ad84ca80ffae2d1ac2bee9b22bd0947175ffd03bd294f6a3cbb5ac63afdacf02f7a6a274fbc33f8aa25cb08174c9c4aad0cb9cbaf02e6f72a8deb6ac52ba88da773b4fd07b33144b9a28a23a1db150cb095cf03b208e80dda3263806b6b0e8eeeedd624d4eb8028e6b98ef2a3e55f38f1b0041425cf7557c41d35d4b0383448c800076eea2c22ca2f333496bdf53564f39d76822f55cb767cc1c2d516a22b4c6fc1525608ba61eb42c04c788c7050a48b7f3a431b2553dbb52cc065a9869c49cc021d7e448dc7012842d3351f98820bccd4fb7640b85fb431fbccbfd4e2544b6f3c7c270326c8cbbd216333ac82260c5edb47a301acd05c7c7f -Result = F - -Digest = SHA256 -Key = 3082010a0282010100c9548608087bed6be0a4623b9d849aa0b4b4b6114ad0a7d82578076ceefe26ce48d1448e16d69963510e1e5fc658f3cf8f32a489b62d93fec1cdea6e1dde3feba04bb6a034518d83fd6138ea999982ab95d6a03517688ab6f8411c4a96b3e79d4141b8f68338a9baa99f4e2c7845b573981061c5fd29d5fc21833ff1b030b2deb651e51a291168e2b45ab4202dcd97b891925c75338e0e648d9d9ad325c10884e1fcdccc1c547b4a9c36aef939e8802b62405d6e3d358ffa88f206b976b87f8b12b827b0ee7823f9d1955f47f8678f7843b4cd03777e46717060e82bf149b36d4cf3d0bc7e4d0effde51a72f4ced8e8e5b11bdb135825ff08873e2f776929abb02033c7bf9 -Msg = bf082fa4b79f32849e8fae692696fc978ccb648c6e278d9bde4338d7b4632e3228b477e6a0d2cd14c68d51abdeed7c8c577457ec9fa2eff93cbf03c019d4014e1dfb311502d82f9265689e2d19f91b61c17a701c9ef50a69a55aae4cd57e67edc763c3f987ba3e46a2a6ffb680c3c25df46716e61228c832419e9f43916a4959 -Sig = 621120a71ff2a182dd2997beb2480f54be516b79a4c202d1d6f59270f8e4d4dbd625ac52fe0e49c5fd69dc0d15fb19ec58c9312a8161a61cb878abcb11399937f28ff0803877c239ce0b7c4cbc1e23eca22746b071b2716475424c12944660b929b6240aebe847fcb94f63d212f3aa538515dc061e9810fdb0adeb374d0f69d24fd52c94e42668a48fc0a57819952a40efb732cfa08b3d2b371780aea97be34efb5239994d7ee7c6ab9134b76711e76813ad5f5c3a5c95399e907650534dbfafec900c21be1308ddff6eda525f35e4fb3d275de46250ea1e4b96b60bd125b85f6c52b5419a725cd69b10cefd0901abe7f9e15940594cf811e34c60f38768244c -Result = P - -Digest = SHA256 -Key = 3082010a0282010100c9548608087bed6be0a4623b9d849aa0b4b4b6114ad0a7d82578076ceefe26ce48d1448e16d69963510e1e5fc658f3cf8f32a489b62d93fec1cdea6e1dde3feba04bb6a034518d83fd6138ea999982ab95d6a03517688ab6f8411c4a96b3e79d4141b8f68338a9baa99f4e2c7845b573981061c5fd29d5fc21833ff1b030b2deb651e51a291168e2b45ab4202dcd97b891925c75338e0e648d9d9ad325c10884e1fcdccc1c547b4a9c36aef939e8802b62405d6e3d358ffa88f206b976b87f8b12b827b0ee7823f9d1955f47f8678f7843b4cd03777e46717060e82bf149b36d4cf3d0bc7e4d0effde51a72f4ced8e8e5b11bdb135825ff08873e2f776929abb02033c7bf9 -Msg = bb40a410b0183b32df12f739506643bdd2fa7e6aed83974918ecda402cfb09dd1932af4fd7f3b1b5a0e8269c5da268c25e806b204dd34e28653f304cdf6545bfadbe297f6bca7493936b8e91f08bc56455059c4c8ec36626972414ee0ca04c82e1aebba953e5ab531e62d823f16b7f2a1f51b9f6979b07cb16602e309bf545ad -Sig = 3f6909f674d4c9c2c26b66d8ee3d7702c560b193a8fbfd0ddb3a9dc909a6eb7aa74d446b7993cdd5b7e272d826281e4cfa08000d2291c2ebe3ee6a77a4e03a79248385359d0885c61c8ade8cf4de7c8e51e879cc1e6089a91a56dc58d2b239e185e9afebf733e2f0fd061270eee0670122c44fd17af6860b6f59690a1b2a91e16522e6a75903bf4e6c97237825f0b01e4c236052b173a8d91f910b0c903590e16d7104609ff9c0194ffe0c09dac1969ea08b01497c8169c7357e8b1f1040604dc0f8b967bfd075284736aa22b0822d3cd13c48a8169413e0b6b26af56c577c829b38e3fb5c4ff78949634d14ff3a40d0d43584d832d6b51d4065e0900ef197a5 -Result = F - -Digest = SHA256 -Key = 3082010a0282010100c9548608087bed6be0a4623b9d849aa0b4b4b6114ad0a7d82578076ceefe26ce48d1448e16d69963510e1e5fc658f3cf8f32a489b62d93fec1cdea6e1dde3feba04bb6a034518d83fd6138ea999982ab95d6a03517688ab6f8411c4a96b3e79d4141b8f68338a9baa99f4e2c7845b573981061c5fd29d5fc21833ff1b030b2deb651e51a291168e2b45ab4202dcd97b891925c75338e0e648d9d9ad325c10884e1fcdccc1c547b4a9c36aef939e8802b62405d6e3d358ffa88f206b976b87f8b12b827b0ee7823f9d1955f47f8678f7843b4cd03777e46717060e82bf149b36d4cf3d0bc7e4d0effde51a72f4ced8e8e5b11bdb135825ff08873e2f776929abb02033c7bf9 -Msg = 56db10c78e9fab7c1c356bf8b38e4adcc464ebd1a3cedabfe812144016baca547aea625656f0bf2e3f1dc2c9c4d310c650e01672520a4bf79aebb5d00600af805ffce9847e62b086b35270d367a3770fff33fb28047b5f888167b28fad647940cabaae3a4d1c08ea3f7d7d00e326061f9906a2d902499dda652c1263520faffb -Sig = 8432cca3357f5ee765bd37dbe2b2d107dfd840f8f720cf4a80144740f96e47529c553fd503a25bfac61ad76a24386af72d81522e6f05b66299f6aea3b98b23838e7dde04db8f8b0f32ae393f6bc0bd7070e566ba1fea53ca871d680f70cc9585aeece672d7c64c228c49bf1ce877dae73f9d8756433f5edc4331415d51957d23e490d4f25317d09a3ad06ec9229dd706cf593915cb156d7f7a32d68e52ca27aea7087d4fd1e194b6029246694742dc70c5136a26cf41b3abf9cf9cb65cd2e37ade6b9fe5ef6160279871230f35758f02c3b37789c1d74df0dc0f97f28bd789755982dd249c0960e64739b3c74b9c55ab810650529e7243bdafda7edef76fc748 -Result = F - -Digest = SHA384 -Key = 3082010a0282010100ec660e20d2b5c6d192540b0f7331da6f1df6126a35861ce249bd0b6aac48c182dbfc5b6716892616810e8c39f9d9c7230771a64810bd9b0146b965135c38751c1793945cef1ed8a799340990ae73d542e26701907b707c3e383f428f87ef5af2b276d0f8dddf8bbeee36824c524b4c38195b9ac69024b65fe5bd6d768166199f3659936824addd4ee488c42480090bad1fec768c339fc172d9692f0c9d17638884cef77c763539b5995573963f12a852511c410833ae0d4b9086a92754f47453032858e6b5f5f215ad48122bec89830a4de5ad86cece5677dec6d6e01ad94d42933c4820269c595e52fef3694521060280c7e505d090aed94bf0b0a3c1596593020319aee1 -Msg = 2d891e111a8812a6448bc2ac2c234a616997a8579335c36d5fe6acfe0b052358fd715d70a7e104d4ad7880e04a9a7535f0fd8c672e0377f6d7472f80617580348b60c88a424efc31c696eb49096ec7d358fee1663cb9b423a3ec25eb3b9709cf1f7de8c7b57700a7d60d8d5030474823e9c12ebc85fe82dc0afe15a66213c50f -Sig = 7dce8f644be457f76b46f3537cd3c1965832e89ffa636f7bca10a2505db17e9babb7c3e5628fc5323d505efade76ed8a9b702b84c22be49c70b8c3e54b4a1f6daf66c2425ebc03fc6ccb600dbf916048e395aed1a5676db004d917c4021f786cfd0ac332e3e0434907848229af099ee468d6324d54f5b2fd051c7449f55460bf519eb9c076852b017220500168e18cd0358cb2c409acf692b4bfe1c75c4d319a45d465f920fb3f92b5c7025c21479c3e9c85bad8a323ca1fa0f112f448aba0bdfe602734f149f619479b39ae5217a01139c271007748fe5a089294a8c3c3507428c6a11d9ea84ed7c7b35a90d07ac3eee713189d47d4681316de68683c1fc94f -Result = F - -Digest = SHA384 -Key = 3082010b0282010100ec660e20d2b5c6d192540b0f7331da6f1df6126a35861ce249bd0b6aac48c182dbfc5b6716892616810e8c39f9d9c7230771a64810bd9b0146b965135c38751c1793945cef1ed8a799340990ae73d542e26701907b707c3e383f428f87ef5af2b276d0f8dddf8bbeee36824c524b4c38195b9ac69024b65fe5bd6d768166199f3659936824addd4ee488c42480090bad1fec768c339fc172d9692f0c9d17638884cef77c763539b5995573963f12a852511c410833ae0d4b9086a92754f47453032858e6b5f5f215ad48122bec89830a4de5ad86cece5677dec6d6e01ad94d42933c4820269c595e52fef3694521060280c7e505d090aed94bf0b0a3c15965930204009885f3 -Msg = 8e8fa198e16acb264e1d0d9895af5ade743d7586d554bf39469e4e89a9c13eea2d844cfd7d34a0153746ebf49f3db2d595ceeab0c442c4b91d1dca2984fd2b42c8c4538dd9f9bf67356c10bba4195e11254fcec82812679ffdbd217b8dec3f644898dfd05e84d02432d8a3780c0c059a0d084c56698a4ff5d0c77b042d552357 -Sig = 421b51d49f5d95922894f0e44dfa5928f1589c632e2c0051b1e085c174e928d98f035b958564b92daf21408e130815c00b35b32578d320b4e604c77088dfa321fd69f6dbffb2bbcfd53d6d8023d9862598ef38f05f0d44dbe72d108aabcae0076d4dd48e4c38115ee7fccfbeca3fdb69ca26f233284d866aba242c932936a0e1f6d01b668204f7cb534164dac3183e08857b4f150ba6a4a38eb98c4ae2aa983c0c5971e62e687cc63fb9eff8148bf01d14011322cbe85a2bba650200ec39f8e3327196d3587e1f167cfaca4abe538f9f420b3ec5ac95c462ea32a700da870756f7fd759befbfed269956abf4d22d0378096bbef743b0feb15b30e2954cdf3ed2 -Result = F - -Digest = SHA384 -Key = 3082010a0282010100ec660e20d2b5c6d192540b0f7331da6f1df6126a35861ce249bd0b6aac48c182dbfc5b6716892616810e8c39f9d9c7230771a64810bd9b0146b965135c38751c1793945cef1ed8a799340990ae73d542e26701907b707c3e383f428f87ef5af2b276d0f8dddf8bbeee36824c524b4c38195b9ac69024b65fe5bd6d768166199f3659936824addd4ee488c42480090bad1fec768c339fc172d9692f0c9d17638884cef77c763539b5995573963f12a852511c410833ae0d4b9086a92754f47453032858e6b5f5f215ad48122bec89830a4de5ad86cece5677dec6d6e01ad94d42933c4820269c595e52fef3694521060280c7e505d090aed94bf0b0a3c1596593020319aee1 -Msg = 92547ecfdc67a3887d5f686c77bf982d84ef4a951131051d8ad628bcd7b289fd27cd5d54ec5b58b226ef1557e5ebb7e8093bd1c14d43838c8415e61222e8aa52fdc6fed05584b03012f796034e652ce1133a7eb866fc496384815d7f6b60457a9ca52aec20c9f52bc9e1b41aba153f4129541b2364469ecb128254a9bc02a29c -Sig = a4c509864fb912cccf022eff3b7e2f4b568fb08aafc498cdacc1fbfa3c7c276645a7d2d838ed703e2dadc205c77e38e0e326a84c3a9dd3a1d6c5aba50c23e6923378ae1e3edd125751ccdc38d80b91569c20dc517ff1963be1d6cc35d2728bd3cdd0d23d341ba91b58ca868d90490a6a5a88bed3a789d46907b9acb725f187843b57d22b17b3966971deb99030eb72efeb4704a91683ab488160a5b43de32319fcf609cf00485f2a9a5a3a8eef1ff1b9cc646b8645d958bd002bb152327e92f6beb9f4c3c193f4f35de29c6e7a8739761018430e5144dbeb895857bf5a313570f1e94e9ab2522c6c046f0a8190a995bb49be4cb7a3794f89e1a4c8ab295f70c1 -Result = F - -Digest = SHA384 -Key = 3082010a0282010100ec660e20d2b5c6d192540b0f7331da6f1df6126a35861ce249bd0b6aac48c182dbfc5b6716892616810e8c39f9d9c7230771a64810bd9b0146b965135c38751c1793945cef1ed8a799340990ae73d542e26701907b707c3e383f428f87ef5af2b276d0f8dddf8bbeee36824c524b4c38195b9ac69024b65fe5bd6d768166199f3659936824addd4ee488c42480090bad1fec768c339fc172d9692f0c9d17638884cef77c763539b5995573963f12a852511c410833ae0d4b9086a92754f47453032858e6b5f5f215ad48122bec89830a4de5ad86cece5677dec6d6e01ad94d42933c4820269c595e52fef3694521060280c7e505d090aed94bf0b0a3c1596593020319aee1 -Msg = 1a852bf321f978536e0c9638414beb424afbbc711ab742e7d85b01ef3521553fa10a4e7ac080bdf917398fcb0c5e5afa0ded36100f5cceda3a7fb76ce2ab0065ba1c0a754494991c8c452cb416f18ab115509e28ddb2848e9be5e4c344597f4ecb8207eb977e344334f814fa494ca3eecaeb9bbe6e028d8a645631fa4272fb82 -Sig = ed0c530de2798f47c15dfedde11d93fa134b243aa2d7ce2bba3718fb1a228f1ec7f6908f56f57166fc2f37c86c22b097f2324bbdccff72f6ff7650fbec45b0211a43ba885a6aa807470a93b08828e04300df4916640e4d8671f22d57ce20f1f0bc89b2f01b55e4aa5426ece11bcd05aabbb3d7434536cfa5256de9b99849e01ca9ffbeb770cc00aba63515aeaf92dac5e03a29f9f2746c2274d60f04d4353d76a174a17c25255a4dbddf8ff11987e2867da69049981e8ab9c1a200788308bda37c4fad9ddf5ea9b62ba42505bf3ae3ca5ab3d36ec5d67d993817caa1b0a7a225f0b3b42aa5734d7232d2d9e3c0b4cad51b26bd5dd2cefc22fa09ca060ff16801 -Result = F - -Digest = SHA384 -Key = 3082010a0282010100ec660e20d2b5c6d192540b0f7331da6f1df6126a35861ce249bd0b6aac48c182dbfc5b6716892616810e8c39f9d9c7230771a64810bd9b0146b965135c38751c1793945cef1ed8a799340990ae73d542e26701907b707c3e383f428f87ef5af2b276d0f8dddf8bbeee36824c524b4c38195b9ac69024b65fe5bd6d768166199f3659936824addd4ee488c42480090bad1fec768c339fc172d9692f0c9d17638884cef77c763539b5995573963f12a852511c410833ae0d4b9086a92754f47453032858e6b5f5f215ad48122bec89830a4de5ad86cece5677dec6d6e01ad94d42933c4820269c595e52fef3694521060280c7e505d090aed94bf0b0a3c1596593020319aee1 -Msg = 3511607cfd2eea7780877d2c585d1d2043881cebc97ee0ec20b1e73b4c1e07df8a22fb41ef901be14d026b48566cd73e04f7bd3c380cac24a1ae6c30df0e3e28e85964d9abd5e4c2f42c8a1090082ccdb1df3154941154086030a645529ed297175ea52a7924ce823eaee26c4d57a33513ea811925b461fe27dd9e63ecf84d93 -Sig = e91b444f45a604eb9203d83adc877a36894c5fd6d75c521caeee6a8e57904698a887d0c54398bbf82da4c3aaab349bfc706497d991bdb86b9bcebc4c87df1b901b47ba95fdd0b8ff4b5dc5bd3300d36ec48e895208e41d569b2545fc7f3776797de5a21dd228da7ec09ea154c987812b12cb4c349e6029e61b9e5c1d3038994445f9d4b5151246a6b7012576cf2aa23afc2e259255663cc1977ac1fe8daed2b2b5d1ac1d0b1a7b6e32e50be4d4c3b3d818d7b650f85726f9d4b505e5491468d7f286bebb4d97fd4dc0854e0f18c0cd0455fd54d57968aad620a670e0f4aebca070247563d69044c3ddabcc735177e91c99953e00b81de45d01eb3dacc09c1083 -Result = P - -Digest = SHA384 -Key = 3082010a0282010100ec660e20d2b5c6d192540b0f7331da6f1df6126a35861ce249bd0b6aac48c182dbfc5b6716892616810e8c39f9d9c7230771a64810bd9b0146b965135c38751c1793945cef1ed8a799340990ae73d542e26701907b707c3e383f428f87ef5af2b276d0f8dddf8bbeee36824c524b4c38195b9ac69024b65fe5bd6d768166199f3659936824addd4ee488c42480090bad1fec768c339fc172d9692f0c9d17638884cef77c763539b5995573963f12a852511c410833ae0d4b9086a92754f47453032858e6b5f5f215ad48122bec89830a4de5ad86cece5677dec6d6e01ad94d42933c4820269c595e52fef3694521060280c7e505d090aed94bf0b0a3c1596593020319aee1 -Msg = fe627041cc6368abdc8e193d731ea6235fbede7c969b050b1abcd72f1f96ca1570db942c0f94edd91b6f966df75a9a54a950d48e8073b164fa5c3753e4af464dc3f21e21739f22370e77dc80101a40adb8d5359fb1bb511ff1f7e4d0e2603961bf4e180741ac8f2b7c4ff3600386219753f309966f996ea6c735e78c5ed22abb -Sig = 3711a7daa81e0a5b897d3d371ab282b660307168c968cc3a1e4e947b32ff2f0d5d766535450b5c227f7a054b7f5110df9fdb6a8b8cdea54185d6ac90c9ad5afbb922d6ace388d121ce977ca4d778b83299a85a74cebd71234c04a1c2afefc034e9905023774b280a063a99a9c8d70cad6ba0b0cb943a2887caccfb3c0b436748a9880052a16f35c467e78243c0d175dcd92875f3f421313f69d040e8222c6ced1ff5ae12e352e8f45c759bec21a1a645c64611ec0dc94b69bc9fd52f287e828eeeec41f17afe3b62e7436d2940479a936bc5d82ff212967484550f1f552f301fe1f189088135de6af7f8e3a49ec5db80fd450bb2d9d52a95cc9607cc3cd1ce15 -Result = F - -Digest = SHA512 -Key = 3082010a0282010100981ff4f5e7569dde9ea2f3630f0463002799dd234a423f6e960c4b55a57ef478e9bd58b94fe4303c5cf3a97d076e3ff845fdef29be7e9ff293acb652e86a5a260882cb4e7724a44a08ebd11a168fc389588f0cde26847644febd1f7c6c031ca1eae47f9941a4dca32028f1408eb96db40a386bf922a8aed72fa27a937e181f8dcf35c946bd5405897a0f0fbe00f18b66de336abd51ee46b8ffe4cee6667f3de4dec041774fd79a08b0a2be1fa16806c6b58ed795ab9044b732f69a1cf88f61ba862f24462bdb036d5d5701ba205e37c737e8da703e9dff2208051e537939e1f2643efa2261f268ee31021379681cfad9a1c03d91a6f17a316cca2e810a0ffcc3020308475b -Msg = 7120a0657a833d7f9723b647eb6867f5d9f6f1fb1a77e8eb0c9acc954d5b3b6f8986643b9076bfe3ac23fca8315c397b555077ab42534fc16adfe1a91bd90e125316e716d51e641e7c305a00d086a76bd7d9af852e280dd257b682585552310176da0f40710295f7b052b899ef6e1a8c069a82d1037d8ae67c2597eb244c0e05 -Sig = 385f2fe2bb8e9483bbc05c316283ad01f8aea41bd83ad941fec99bad0f066fb1c7dc960d536d4ed5302958a0df7b943836878a1c906b3f3f778e7335407676c7766183ef61624c32da8e79640ad5390660a46610b2b172dfb7fdf48e556408e0da06ddeab4468a00abf93d6e3fd71c04478b49f394e849f1923d4a57b76f6407675fe647f7bcc59f7493128e62c0cbf999dd4b3c62cbba2accfbf77351abf76927b89cb6f57d900d631d2445231f75b7d2c3ef303a51b38f9e7f0d69a68ab397674628a825ae74605f32deab2a0ec2fde1fe820b48d824b68acef3f0bdbd7804eb15899029bc9d349951d732eceeb3c42ed02ab35d112841f8e411b28435ddbb -Result = P - -Digest = SHA512 -Key = 3082010b0282010100981ff4f5e7569dde9ea2f3630f0463002799dd234a423f6e960c4b55a57ef478e9bd58b94fe4303c5cf3a97d076e3ff845fdef29be7e9ff293acb652e86a5a260882cb4e7724a44a08ebd11a168fc389588f0cde26847644febd1f7c6c031ca1eae47f9941a4dca32028f1408eb96db40a386bf922a8aed72fa27a937e181f8dcf35c946bd5405897a0f0fbe00f18b66de336abd51ee46b8ffe4cee6667f3de4dec041774fd79a08b0a2be1fa16806c6b58ed795ab9044b732f69a1cf88f61ba862f24462bdb036d5d5701ba205e37c737e8da703e9dff2208051e537939e1f2643efa2261f268ee31021379681cfad9a1c03d91a6f17a316cca2e810a0ffcc3020400fd8739 -Msg = 77449a132998a90b149b91bd05fb1e53c85e28d7923e16a69cf7a122111edba82a156fc297dc2a9d222ababd8fbdb6efc6eedf7f3488a6ac6edaee59170b120505ae2afd9f968ad089ec8c04847e90078f5a4068529c1947bd84270bedcc0f534f38532e076ed28e93088efaabe8b2846ccbd4fbb6217761d31dd49f5908da78 -Sig = 240add12876bc54e013030c890f3abf774a109f687effbbb6a03d0b828e8e1ada27e424db835c78dc0d6905b212fbfd55885417d571e7da1cb1566a1cb713cb04a334eaa68545cb17cfe55c037230a5a71e941fe51517530392ed35b844ab7e891e9230d67250c7fe73a9d969523815dcbdae4c01322648cb0c686aebba24c4e57cc4859fd0e38a23dd43f86373d7c3250bd03d8400887926df0f98169c132f819180b9fc482ec77304b8af96a5334401912e6d210361218267c21f2c65d3a83c376516b869466278841e267d73237789b33e5a7ac3f1feb2a1a3e9bae60523ed5f814124805f11c151357fbb8a717fb8c858c66e647ddcb59c20c2bb8e86abc -Result = F - -Digest = SHA512 -Key = 3082010a0282010100981ff4f5e7569dde9ea2f3630f0463002799dd234a423f6e960c4b55a57ef478e9bd58b94fe4303c5cf3a97d076e3ff845fdef29be7e9ff293acb652e86a5a260882cb4e7724a44a08ebd11a168fc389588f0cde26847644febd1f7c6c031ca1eae47f9941a4dca32028f1408eb96db40a386bf922a8aed72fa27a937e181f8dcf35c946bd5405897a0f0fbe00f18b66de336abd51ee46b8ffe4cee6667f3de4dec041774fd79a08b0a2be1fa16806c6b58ed795ab9044b732f69a1cf88f61ba862f24462bdb036d5d5701ba205e37c737e8da703e9dff2208051e537939e1f2643efa2261f268ee31021379681cfad9a1c03d91a6f17a316cca2e810a0ffcc3020308475b -Msg = f99ed2fc9e07ccafe0704660b1906e93542e3c7220d8551c81d8303f3f6477e90315b09b179b1ca06daedf9ce3476268c511f61d931aba6f05cfbe3d4d2768659c1e17dde7650700eb5875256f300376c97a5d00a3c81d06ffa6ec9b79cfea70cca151ea98cf557763564e23ddb218666851ba40d7484788764502824bc4c5af -Sig = 268ffe2eef8407c215d1e0d02d3b23d387900877d4b6ab515a9d35e30d6c64830e748ab782191f2f9a9c133765ec3863708dbdd36d5e4ce9dd262f040766829e365ccf8e19b146355770ec4dc3a059581efe466e59fdf1d6a7d0c6a24b052c54b5a0f02e73390cd70ac56c0a004a9e45ae81296b3f5f1677db8c0dbae012295eb884130530215c175239e7160182009b46607a71a6186c48a1b8cb45c1dce3fd2f31aba568065e8e490f021454a674b8dda3e436b375f0daa3294969492ed269e9156011b133de86ada6a84225b1c297b71b3462cd3ca037585bb805179d76864a9083f927e8e1360d9302a2be39166bd5411c997000d882b268623bdc5dc9d9 -Result = F - -Digest = SHA512 -Key = 3082010a0282010100981ff4f5e7569dde9ea2f3630f0463002799dd234a423f6e960c4b55a57ef478e9bd58b94fe4303c5cf3a97d076e3ff845fdef29be7e9ff293acb652e86a5a260882cb4e7724a44a08ebd11a168fc389588f0cde26847644febd1f7c6c031ca1eae47f9941a4dca32028f1408eb96db40a386bf922a8aed72fa27a937e181f8dcf35c946bd5405897a0f0fbe00f18b66de336abd51ee46b8ffe4cee6667f3de4dec041774fd79a08b0a2be1fa16806c6b58ed795ab9044b732f69a1cf88f61ba862f24462bdb036d5d5701ba205e37c737e8da703e9dff2208051e537939e1f2643efa2261f268ee31021379681cfad9a1c03d91a6f17a316cca2e810a0ffcc3020308475b -Msg = 019d049056b4bbaf6c585c6aa4b7670ea52fd6814e6dad83eed6d334b82520d67156b7d56cc49604b88e6b2a983ea9bd33addced8d213ae5b6b97a4d420be913f80bba6bcf2f9d1416d094ddf2d402690d8a052f8dd506c4438d8f5d25225c90ff82b45a653dfa66ece77f8c9abf9a999a8dfb4e34d13cabfd19b96d4bb3a2d5 -Sig = 772e888d14c70c4e546fa77a85d1be25ef85bd24ea52db68c2c0d3889edf96a6d7d31696536a12fead53f44a055847be51567a6466730991383e5aee41da40c90d6c951e36c865fa4638490ab44a27cbaedaad7d415b80a51ab465c8a18df567356988020d7e6ec0404577ce8f02d581e48228bc342f6bfe2d2eb2dec17f66fae7debb40b839b1085c16caa417bf31a7bfa540405f76671c8d80dee48d8a1cd44b456ee61ba601938bb3626805c232ec3978936bd8dcea073ea483ba8cdc29841b442fd28b4b4b1a282298776d83b2174114766b2017e5ad547a1021fcc3b829ba30f0cbdcfbae09c5e0101f8ebf1fdbfa1e1d029bba61c1ca1920fb36ea6e2f -Result = F - -Digest = SHA512 -Key = 3082010a0282010100981ff4f5e7569dde9ea2f3630f0463002799dd234a423f6e960c4b55a57ef478e9bd58b94fe4303c5cf3a97d076e3ff845fdef29be7e9ff293acb652e86a5a260882cb4e7724a44a08ebd11a168fc389588f0cde26847644febd1f7c6c031ca1eae47f9941a4dca32028f1408eb96db40a386bf922a8aed72fa27a937e181f8dcf35c946bd5405897a0f0fbe00f18b66de336abd51ee46b8ffe4cee6667f3de4dec041774fd79a08b0a2be1fa16806c6b58ed795ab9044b732f69a1cf88f61ba862f24462bdb036d5d5701ba205e37c737e8da703e9dff2208051e537939e1f2643efa2261f268ee31021379681cfad9a1c03d91a6f17a316cca2e810a0ffcc3020308475b -Msg = 1c0c43b58a3c85bc56763bb26f8060b645988d11d0651bc6d32e886b624a1b38a2d8cb5ed0b05e998499ce0937bcf03e03585792abb877bbdb6206a0b192a86c7be6cae1c35bcef089786986cfc94aa85b8ffdc2b8b60e3c7e07714fd39f211732a008e96b261fe6eb7dd6d03e91b61dd2a5454afe482a724285911fd15bd160 -Sig = 5be423f5b70087c95d748e060004afca6b49fea89dfb37c2460578af2484c0b9ac384193dd47bd06736c071b557aad22684016e6d97e9597f49d11edd8bc7e6dc44ed1f94403d171b215b00c8f3a6721e1cd4d37cebf67b705dee052a2cc97415fa9fac97180fd60ae20667af437d3caf6b69ac87eb9afc3c951a49719f32a9e12062500b958a5b48136bb41e4d6434d5fb59814384e06a4e4d0a779f044e873d5ceea1249f9648153663234cfe9171f988e12926059c896793bb56630432c5d3305d70b436f041c3eb1b6377cf01b27f507a9a8389f57b2b17010b808123ef23201da72f39febf7ea3841cdbe376d3ac89471f2494e948702f618ce382fde3d -Result = F - -Digest = SHA512 -Key = 3082010a0282010100981ff4f5e7569dde9ea2f3630f0463002799dd234a423f6e960c4b55a57ef478e9bd58b94fe4303c5cf3a97d076e3ff845fdef29be7e9ff293acb652e86a5a260882cb4e7724a44a08ebd11a168fc389588f0cde26847644febd1f7c6c031ca1eae47f9941a4dca32028f1408eb96db40a386bf922a8aed72fa27a937e181f8dcf35c946bd5405897a0f0fbe00f18b66de336abd51ee46b8ffe4cee6667f3de4dec041774fd79a08b0a2be1fa16806c6b58ed795ab9044b732f69a1cf88f61ba862f24462bdb036d5d5701ba205e37c737e8da703e9dff2208051e537939e1f2643efa2261f268ee31021379681cfad9a1c03d91a6f17a316cca2e810a0ffcc3020308475b -Msg = 21ea231df11ec8a62b2bb1fb3a19d608e3ed32a531cf62d4b26c6e43e39ae719e83a32ef8063231b39bdce35e02a99d43cac9699fc83106fed956410701312cc2c5a148600176fff3baf075710deb7d0449ea1d62a4ac33cd103ccc97c532df3521072ea5783d3d89bca0667b27b5885638afc64a46da3c4c77d4d74eea05e16 -Sig = 20d90f8361337e7196010e8778794c721c881492e63ceac4a7bbf56daa41fbb9c1716be12b56b79fc826b090c3a2a73f85fe761c9249f0be8577ca78385d11ece10270c05d07590b8d3c889f4cf9cc0881c066957974804f4a74aa9eed9a7d26871885260b2d67c96b1cdac2a6ea61650d8324dfc37105b916ecc406d604f79bbd7c8a7754cf805cc9c74914dfa1bd2dd6ab62b0e228673ac84faeb9b38c94f3f1a1b74d83188837dc7cdf8521bb61c7378c3db6c2305bfa906ab1c6ba3c2fe557feaa5c97e28304a64f3b4153265cf51910a7636b3723cd56131ea16ab4ad865224088143d36f7fe25c9f18363953b33692c10fa3aed59eb70172d7f4708b -Result = F - -Digest = SHA1 -Key = 3082018b0282018100d8196d0e7875a3d396365b446f520f6706695a8046976fdf7917157e8747a58e5d30d83620703e743271b17f3c9763514c38c6808b49ea42ed3c9ad2514bfe059e095c2f17624b5bc1aa5060c320ca14da57d65024b7f1c09c1611b56a3d62fb104c4e458b18f6760d85c53cdcf0b83ff25b48b046d46c0110f8093f9b4873e99b81756232ab077c7195f711c86ae44de848011e028e666ce8f264ea34cd82193cce9fb055a09cf7d12d1e3cdc57f7efbf48237722e1f1bf499572a7b942a74e634751a1808f475806aa5233d122f7220f3f694b91990a45740d547b62582390ec43417037b05a82b0f72fcdae476f04128f2a3b3cf769c8e8d441db469f29da612ae4de490787eef11127a38510073a127ddf279e5132dd6db07275efac083104cbfa39acc224ac1755dfa8299ad4be9ec44b57d83837c583bd35ed8e857e6369281c41c0227283f137df0b29aa6940d126bcc46ee37c3774ba88cf60e5af2678adc8e1eb5e9b3b96c9e8ab2f6c7e69a2360df666544c5b266ff09d21b373ed020400edc8a7 -Msg = af09df21babe776fcecbb5c5dfa352c790ab27b9a5e74242bbd23970368dbefd7c3c74d161ae01c7e13c65b415f38aa660f51b69ea1c9a504fe1ad31987cb9b26a4db2c37d7b326c50dbc8c91b13925306ff0e6098532dee7282a99c3ddf99f9e1024301f76e31e58271870bd94b9356e892a6a798d422a48c7fd5b80efe855a -Sig = 8005d3a1f6bc9e5b25e4bfe751a511b741d622eddab691d10911019f2589475c2432ab9a90627020ab3117042e468f1847a70d8fc392b09092bfca421292c5d4ecc0540957dedf526914490ce8338de9451cbc1c9c25dbba91d8c3d447dc7d044d9654022c8a21c08ecbadac1e44b0fe2ab462037cb409a8e37f617bc723ff4969e4553f46a8532cdc9429c0a03b8c34cb41812816904c98ea31eefb0d9a5a8f0c182e7d889d13704ba616ef1e91df911ea868df5d03b39d30624f310bff100d404fe6e86fe5986abd597babba200a28bc961d6d8054887a2f44ff269129e9b085891840e926244281cc312282e6da6ff5e70fb44cff6b2a2c48951601b1db25b4f70aabbcddb7e1c33e0521442e81df7835dde8a2852d410b45705e8763b5bbdae5dbf4d84dfe782ae862366ccf37adcbc8e51c9769fd516bab1f1572d8ebcd80ae9d052b1b102a2c13a7ed44465d9c535e6cf202c981c302e4117b74475f1b129d719280facc628fec3c28285bfccdccb67d75a71ae7908aacff6adf55d0ff -Result = F - -Digest = SHA1 -Key = 3082018b0282018100d8196d0e7875a3d396365b446f520f6706695a8046976fdf7917157e8747a58e5d30d83620703e743271b17f3c9763514c38c6808b49ea42ed3c9ad2514bfe059e095c2f17624b5bc1aa5060c320ca14da57d65024b7f1c09c1611b56a3d62fb104c4e458b18f6760d85c53cdcf0b83ff25b48b046d46c0110f8093f9b4873e99b81756232ab077c7195f711c86ae44de848011e028e666ce8f264ea34cd82193cce9fb055a09cf7d12d1e3cdc57f7efbf48237722e1f1bf499572a7b942a74e634751a1808f475806aa5233d122f7220f3f694b91990a45740d547b62582390ec43417037b05a82b0f72fcdae476f04128f2a3b3cf769c8e8d441db469f29da612ae4de490787eef11127a38510073a127ddf279e5132dd6db07275efac083104cbfa39acc224ac1755dfa8299ad4be9ec44b57d83837c583bd35ed8e857e6369281c41c0227283f137df0b29aa6940d126bcc46ee37c3774ba88cf60e5af2678adc8e1eb5e9b3b96c9e8ab2f6c7e69a2360df666544c5b266ff09d21b373ed020400edc8a7 -Msg = 5fa7b357c3630bec6d6e119f4266ff9465391acc638a87a7ad565fa84cd70679d0a8b82f892b64cefa28be108bb690627e5f5030247ff86251ed12270ddd12f18c05e9c161ffd7a4eeef817d1f6543065885c712ab65d7154fb66fe54da717c27d066f95b1a80c75300c826f663bc287d9f2a7fa5f03cbc68ff99f6c75fbbbf5 -Sig = 1e84e79b2c46ca8d7a0e35503e4713f556eeac5b86116ded6c9ae1c14343c4c0c241424fa4ade7f76d93e6f845c62f0f2039e3cfda2d364cda93006199ba774842a7f0a99fc72bb21d583ab440a7ea37c371211c8a99f49772edbf14a18b8c1d112fe78af270c8dd3eafad00c004ba22bd521f3767b2d05a4f4ad87a850c4cd444126c6ecf50487053dab17dd624f9daa9a921d31ccfbe77a56787c13522eec9a7948626e560413cf210e438b61475f0fe3b53c29c038e8962781886eb2bf407b74ef7169a8302113cba712488fb9f2e27743d3a48033ae9b6fb76b768ac7014d73df1f4740721a5da04257c5cd72c0bb3de9e734f800e8db60b5b56e7dd58dbcb02b48e837f0264c2aa8b2543162533081cd579c1651b8ee4cd5981a7b27b7c77450e6d4bf3576e541409c2ebd09975d92ba4c35ffde2a7b2bbfb9628795de7c49805ce553bd632ceeda8e626fef36e5fb118dc0708f785680a5888096046832121d5427d7239e123733ca606fb991cae95f1ffc23ab0457599abf92732a87d -Result = P - -Digest = SHA1 -Key = 3082018b0282018100d8196d0e7875a3d396365b446f520f6706695a8046976fdf7917157e8747a58e5d30d83620703e743271b17f3c9763514c38c6808b49ea42ed3c9ad2514bfe059e095c2f17624b5bc1aa5060c320ca14da57d65024b7f1c09c1611b56a3d62fb104c4e458b18f6760d85c53cdcf0b83ff25b48b046d46c0110f8093f9b4873e99b81756232ab077c7195f711c86ae44de848011e028e666ce8f264ea34cd82193cce9fb055a09cf7d12d1e3cdc57f7efbf48237722e1f1bf499572a7b942a74e634751a1808f475806aa5233d122f7220f3f694b91990a45740d547b62582390ec43417037b05a82b0f72fcdae476f04128f2a3b3cf769c8e8d441db469f29da612ae4de490787eef11127a38510073a127ddf279e5132dd6db07275efac083104cbfa39acc224ac1755dfa8299ad4be9ec44b57d83837c583bd35ed8e857e6369281c41c0227283f137df0b29aa6940d126bcc46ee37c3774ba88cf60e5af2678adc8e1eb5e9b3b96c9e8ab2f6c7e69a2360df666544c5b266ff09d21b373ed0204009fbb4f -Msg = e4bc017c194430d1ae0798c2a122b56aedab0dc4f68cb81c27911fc3dabf040778e8c362e17cd7f20ea29f29f58762c6acf69204d22a4d112be029c18ab03184f49c2b9602ea1d75872f0f9873ad115ef7de8045ea51865c6cb5e0fbc934e4b1a002c27e44350a4262d76e76e439ca1a168b61ee07aa69e53339cbd75ef32476 -Sig = 2e6b315e6ae71c573f396ac918df88f2254b6c29d552dff65d30f37e07fbee166459ad9b21969e19adf0ef493d368ef4e889e002f636eab345a1bcd373904d8137262e7828f50c3a5b0be2d89f5cf0217a5a593bb4b58b93cd59870e3e61e682f8f2778cb907cae1e9650280748011d08cb9b1e437ee26099a876d414e7ed5a1f31aacc632f2503ce38d4a15cdc9b5d8c9a01a379e5cc6315b6d81bf657c4b5d876752e8682177a799c9ae4687b58ca5182d6fcf06c3048b2410285d5d4f98cf94b71d3af8f7328450fb0cd8189a3d354c29b425ab75c33c9a29aacc602bfd0955e57214f1b4def30dc2f06b8abdbd9d609e126699c7994d34312bfdfeda87b23c484a097e614508bbd9f0daf2e0e71ef7c20ae14a943499b82a294ba90787b26df264fd8ce25b88d14b636c6a5b587cff9c80370162859df1ef2bec3a946997f84a5c8c577ea8329f3cdcc97214e6071badf226851ab3b5c7c1c9bfee3feec017393c3a054adf70a58e8596fcd47af32ca062567cdd87c5a53dae3780ba13ee -Result = F - -Digest = SHA1 -Key = 3082018b0282018100d8196d0e7875a3d396365b446f520f6706695a8046976fdf7917157e8747a58e5d30d83620703e743271b17f3c9763514c38c6808b49ea42ed3c9ad2514bfe059e095c2f17624b5bc1aa5060c320ca14da57d65024b7f1c09c1611b56a3d62fb104c4e458b18f6760d85c53cdcf0b83ff25b48b046d46c0110f8093f9b4873e99b81756232ab077c7195f711c86ae44de848011e028e666ce8f264ea34cd82193cce9fb055a09cf7d12d1e3cdc57f7efbf48237722e1f1bf499572a7b942a74e634751a1808f475806aa5233d122f7220f3f694b91990a45740d547b62582390ec43417037b05a82b0f72fcdae476f04128f2a3b3cf769c8e8d441db469f29da612ae4de490787eef11127a38510073a127ddf279e5132dd6db07275efac083104cbfa39acc224ac1755dfa8299ad4be9ec44b57d83837c583bd35ed8e857e6369281c41c0227283f137df0b29aa6940d126bcc46ee37c3774ba88cf60e5af2678adc8e1eb5e9b3b96c9e8ab2f6c7e69a2360df666544c5b266ff09d21b373ed020400edc8a7 -Msg = b6ce2cd484adf679c884c35b885757bd48a50241733f215bfd5ae70547e25eb44311a88bd8418bcf88fe2d9c50601bd6cf979061abc8f5953118a4ec3b06f1fe57fd6bb025295fa8018b9e04e248804b824729a3c0fa0b45427cac2f5eddaa183bbafca933107aea7c51a0fb08b88f04a9da546e797f6d5479af8934781090eb -Sig = 01a0e831fbe4cba0309731c0bff9f3348e919fedca607b59d306e5f691879692ad2eda3a7e911da2dfcc2c1ece81873e8741ebec79dc58cf2884f638f393ad044d18c5147801d3c2238f10bce526f82d8fda18abf635e4c4593b44d4d1b9d390a62a9c3bdb662a0b5346e128c1841bf65780133cbb7ec1efa67f94a2ee8d503fcab70a0d9fa50c0ebbfb94910b0565efc6f0d79f1ea29ffdb0898a21c919ce9aae3d7349b2090a8c09f98e953a4cccfc8b0d19a8cd7a8a34c0dd5adc2f383b7dc2b5bfd7d9aed1a47aaecc54b5998c0c8e735b6f6ae7f737a68ef79d38fdf0756cee89089ceafc9cbefa2a02a0d02a7935c10a7826ecb6aa17a4d34b1c77d6942889457984e8197144907d3ac2a3e65ebe9d974bf522aada84f45bba806ca4b0534cad5b460d1bf5571a1e050e5494138f4c8bfcb4334968b50d9cb50b32c52aba4598fa47603de7d358f85b68e13432fd85b247c3759ff7e24dc1934d01ddd60a0156d4fe9d314681d3fd69f071bdfcc5b3a5b2df626f34eb95043bf160eb0a -Result = F - -Digest = SHA1 -Key = 3082018b0282018100d8196d0e7875a3d396365b446f520f6706695a8046976fdf7917157e8747a58e5d30d83620703e743271b17f3c9763514c38c6808b49ea42ed3c9ad2514bfe059e095c2f17624b5bc1aa5060c320ca14da57d65024b7f1c09c1611b56a3d62fb104c4e458b18f6760d85c53cdcf0b83ff25b48b046d46c0110f8093f9b4873e99b81756232ab077c7195f711c86ae44de848011e028e666ce8f264ea34cd82193cce9fb055a09cf7d12d1e3cdc57f7efbf48237722e1f1bf499572a7b942a74e634751a1808f475806aa5233d122f7220f3f694b91990a45740d547b62582390ec43417037b05a82b0f72fcdae476f04128f2a3b3cf769c8e8d441db469f29da612ae4de490787eef11127a38510073a127ddf279e5132dd6db07275efac083104cbfa39acc224ac1755dfa8299ad4be9ec44b57d83837c583bd35ed8e857e6369281c41c0227283f137df0b29aa6940d126bcc46ee37c3774ba88cf60e5af2678adc8e1eb5e9b3b96c9e8ab2f6c7e69a2360df666544c5b266ff09d21b373ed020400edc8a7 -Msg = 79d92d0766310a0011b4398c59543062ef8dceec5e5386e64949c028f4337cc007ae39448e1f156743e935c910e36714d009064456711f46b081d1c5ac60fa419caa106157684c8a803f0eb00be77d6cfcdf6d4f725f8777e58fa35facf679fbc2357905c9f5f7924f1e8be85149b893fd79cbb6bc0506a070d9fe9ffadf4219 -Sig = 1fd91927e15056b040794544ad1bd99a077f3151d9d705ced12c9a6c41483dc1e1b94bc549e06c91a35816ce9016a9f56b9b95f8ce2c9e4a33b445f701abae9c6301bc9581ae89ea2e83b725431d01a3ce1e266ad3b8cd29b217b27e1db105887423d25dd5c6e0c02b3800df9fbcb9f306b86ecbca65366542da71b03955d4063512998924a30283592516037e51e24ee8e8c6bba339e5cc6a3b64375a7dd96e7efc00d410fc0a63d0833dfc8ef518c74c2dc13f79cacbafc3fdc2253c50cf7a1f79ffc185a96a1602e5b7416123d874b5e4c4b4b35b3523309895113d7d2aa71cd895feed0eb9174ecb5b8dec252c53890e28648e71c87a8528be9c7b23de20550675b0b5072fe52cb1de14c5e1be13896dac73220726adb1e8102fcdce01b92251497a553d74f938c96fd9e5936392f0f5c5efe15a7574e01342cedc17cf4f750825424c7b939d0328d2c5a0a8f744826ed9f8dd4479a40da051b7924a29e81c13e929e4815474bb4a825d564cee8f22ce451d094c19d9661dc413e070c5a6 -Result = F - -Digest = SHA1 -Key = 3082018b0282018100d8196d0e7875a3d396365b446f520f6706695a8046976fdf7917157e8747a58e5d30d83620703e743271b17f3c9763514c38c6808b49ea42ed3c9ad2514bfe059e095c2f17624b5bc1aa5060c320ca14da57d65024b7f1c09c1611b56a3d62fb104c4e458b18f6760d85c53cdcf0b83ff25b48b046d46c0110f8093f9b4873e99b81756232ab077c7195f711c86ae44de848011e028e666ce8f264ea34cd82193cce9fb055a09cf7d12d1e3cdc57f7efbf48237722e1f1bf499572a7b942a74e634751a1808f475806aa5233d122f7220f3f694b91990a45740d547b62582390ec43417037b05a82b0f72fcdae476f04128f2a3b3cf769c8e8d441db469f29da612ae4de490787eef11127a38510073a127ddf279e5132dd6db07275efac083104cbfa39acc224ac1755dfa8299ad4be9ec44b57d83837c583bd35ed8e857e6369281c41c0227283f137df0b29aa6940d126bcc46ee37c3774ba88cf60e5af2678adc8e1eb5e9b3b96c9e8ab2f6c7e69a2360df666544c5b266ff09d21b373ed020400edc8a7 -Msg = 569b513e3a2f031a0fb2b3a2f3d51c321ffdde7dc9997f8248b2afbc79c3d09961ccb52e14a2aa29d589b5077e041c8723ec275ef2c0272c5d3cb7af7c2d4236ac83c6597da8d7e8cb10e6212a12c32688f661ae0d4fdafa468bb20b83c860127de90a283ce9913f3870cd58bfa41af7964213d4e3ed9dd44ac62837573c3113 -Sig = 0202f80676900c6ebdaad6750b5e0600af5caee8b03480b8acfecf719fb3508b41ebc57e7625ee0303675478f17de92710db1855557ef3ad3e29353a53794df804db4ea20e8cc4a9c9ddb78b4be6f2475833fc13d9810de1bb338bc45bd88e76d8bba7b08beec647f3e084a15848591592b0fa7ccadf033a958ff643e8741fac68e7f8e7f6597ddbfe0e696fb68811d910ae817a017e136d100d50e2de6f9f8569593a5a88b535d44466e97baa7f9270334c299a7684059fdf5dc519ddceb050678501637b48ef27614b042365900a060e438ab6f16e3624795d47f448c0e91661c8aae15e46ceb37aa58ba8c413b6a6a812dedd263f2d8de3cd6f7f3b396334248ecc3f4dc5484a4218e33de1359798dda01affcafe7567633076ae95b847b2afcc1919e296cb77c8b00ed4aba717bd8c79b4320adae92bac470019ea631cc2efde91d5e465394c4c616faab83f5875fbb67b6c6ceca73c891ef4288750b02bbf478d532517bc6f76f0fd48dc2c0971888dc94854017c8e5551f0fda68e681a -Result = F - -Digest = SHA256 -Key = 3082018b02820181009bbb099e1ec285594e73f9d11cbe81e7f1fa06fd34f3ec0b799394aed30fc2ed9de7b2a6866fde69846fb55a6ab98e552f9d20f05aa0d55c967817e4e04bdf9bf52fabcfcfa41265a7561b033ca3d56fb8e8a2e4de63e960cfb5a689129b188e5641f20dbf8908dab8e30e82f1d0e288e23869c7cac2b0318602610a776a19c1f93968c652b64f51406e7a4b2508d25b632606834a9638074e2633eb323324b8b30fdbd8e8fdad8602b11f25f3906439055afe947f9b9bcffb45dad88a1df5304c879bb4a6eddb4d3d1846bf907d2ca269845c790b2f0af8154aad9c4acb75e18a5d0e4f9f88137032b9964fe171dfa0d0f286090790f52157179a6734b5f9a64e3d2ed529722c3d3836d4501496f927a0f8e389ca35332b836d99e995f4a3e86f581bf9abdc7a10e06a6b31296ae3b43e6ddc9a0d9a7d0d9c4053af0875e851192d1de7b08d1beb7b857e227f8803a5620726a31920bcab922d3370a78033b315024a0fc1f6c276be565e58de77f294c8089ff4c43fb334d26006ab5757c65b020400ac6db1 -Msg = 921961e184a5d9657697e3e65ceb1ed10204ec56e739df0e4f906ee194c9ed27bd9fbc0d514abe3a6e480cb3155debfcc8d9fc815719b334f7500a769488773b68e31b69cd273c824f79f58306692c0c232fc5c0c83415ef1dd59a73a063e9d7bc6ee7bf9e433c8344b3051ed616c9473a90afdde393ee88e9a5849e5f642b43 -Sig = 55362a6854a7846c4d105dc8a358fd4c02931f117631968457f422939d266682fd705e2091bfd5d1bfb52b4bfad684914489ecdad9038b75c65916a9e967630b16c76656b58404ec11ac46d8684b3e72d4392fb6e7e6c929e43ad4fb6ce6198f241b39e8bcbbc058792dde31b195b91bb14236dcb82c28a5c24d633dd847d1548dd403b3a70149371f46432db1767a00c462758c2298fe9f1f04c2ff4b96858d084ffe5a624cb85c1f9be2a60fed40133b7c571c6c467f46a0f1e48ee6e2e6d65424bf8196b0d927e0fd4141264aa5df4129d52d2fb57b8dac9386a84ecd34ecb1feac3a2b99d055eda977ddf8027f1178348a30e4cb4ecef2291d7f520794018b39f5251fd46d97282ac21f6bce6539d19aa1c21c3c220a2ddb6feed262eceebd753eaf5e0eb98cb3eb7d324a3dac0a415a18b7f36170676e8b9d3e421a6f77046bee6d9591c93f7ef0242f464f15b63132a0aee80949709429b1e76d40d60f79b2a6ab362f12e2cdd0bc66868c80278043e179a36f2815e7916378b0fbdb8e -Result = F - -Digest = SHA256 -Key = 3082018a02820181009bbb099e1ec285594e73f9d11cbe81e7f1fa06fd34f3ec0b799394aed30fc2ed9de7b2a6866fde69846fb55a6ab98e552f9d20f05aa0d55c967817e4e04bdf9bf52fabcfcfa41265a7561b033ca3d56fb8e8a2e4de63e960cfb5a689129b188e5641f20dbf8908dab8e30e82f1d0e288e23869c7cac2b0318602610a776a19c1f93968c652b64f51406e7a4b2508d25b632606834a9638074e2633eb323324b8b30fdbd8e8fdad8602b11f25f3906439055afe947f9b9bcffb45dad88a1df5304c879bb4a6eddb4d3d1846bf907d2ca269845c790b2f0af8154aad9c4acb75e18a5d0e4f9f88137032b9964fe171dfa0d0f286090790f52157179a6734b5f9a64e3d2ed529722c3d3836d4501496f927a0f8e389ca35332b836d99e995f4a3e86f581bf9abdc7a10e06a6b31296ae3b43e6ddc9a0d9a7d0d9c4053af0875e851192d1de7b08d1beb7b857e227f8803a5620726a31920bcab922d3370a78033b315024a0fc1f6c276be565e58de77f294c8089ff4c43fb334d26006ab5757c65b02031ed02d -Msg = 8568ff68d40c9f240b5ff56d8919704a4819fb48b2f0741db6a3608a1aaddd861344d79813dd7f85e2f2f92bf00355adeadbc1d08b14fda5b5dd0f69c0fb37a9120e25a9ef166a0793352d9c7eb71fa3104fb11d55a38474220b205e6196ea04a94f506412be47f347b1f787dc3cb475e2fe31f6b9a6f0d026b6fd32a587dcdf -Sig = 191cae43b354617b1ebedb701c124e76339935835a3633b4f806fb835d0dc4b7e4abf00f8c575fad8467ca35bc0d37b58a90db835f4ecb9f1dbfdfaffffb6ef1e0b894dd65fbf8e36478adb673b116188d864f185be5fcfc17bf1e6cfccd499d632b3cb1722c75776cd4d8ec68d2512c1ca598b970f03f6fff5facb107c0e74d6aefffaac20f8e3aa6e825a1de1690a84c8ad1e766642f2a89d3032b58b8e6ec50ef6a8e69b6afd30a2755d42b55f9e21f69c8d9d993549d198ec6c17d12f09ab4be0209030dcb274afefa77fe461e6469ad51f56dc58ad2f06b620af36ba712fa798d9812d2b6ce8ff4554b58bd2a6a8abdd8d00920bc3ad3b61586e544eb073419a85bbc1dfaf775068dc004a7f0ae789d5023d013f3e6096ead893158ac4ba050b87f8186705179f531be573d9557744a70ee42a4b3eb89c824eb8ae1172212c177557267ef04157f9fcf003c2d1f6039671d3af71339c30fbf772f14b3d59e81739ef82d61ab61475e1b4c835fa50350da15610f45531ae85fae5ff9a31a -Result = F - -Digest = SHA256 -Key = 3082018b02820181009bbb099e1ec285594e73f9d11cbe81e7f1fa06fd34f3ec0b799394aed30fc2ed9de7b2a6866fde69846fb55a6ab98e552f9d20f05aa0d55c967817e4e04bdf9bf52fabcfcfa41265a7561b033ca3d56fb8e8a2e4de63e960cfb5a689129b188e5641f20dbf8908dab8e30e82f1d0e288e23869c7cac2b0318602610a776a19c1f93968c652b64f51406e7a4b2508d25b632606834a9638074e2633eb323324b8b30fdbd8e8fdad8602b11f25f3906439055afe947f9b9bcffb45dad88a1df5304c879bb4a6eddb4d3d1846bf907d2ca269845c790b2f0af8154aad9c4acb75e18a5d0e4f9f88137032b9964fe171dfa0d0f286090790f52157179a6734b5f9a64e3d2ed529722c3d3836d4501496f927a0f8e389ca35332b836d99e995f4a3e86f581bf9abdc7a10e06a6b31296ae3b43e6ddc9a0d9a7d0d9c4053af0875e851192d1de7b08d1beb7b857e227f8803a5620726a31920bcab922d3370a78033b315024a0fc1f6c276be565e58de77f294c8089ff4c43fb334d26006ab5757c65b020400ac6db1 -Msg = 88902b37b0db4246c41b50f180eb1350b1b6dac0477a3dd1accb0c5f541a85fe9637ca9cba15926153ce1edacfe66f574cd4b691adbe0c90ed8563ccb401bc93288e9baa06c7b837f191f8de0a5c9b2bc0a5b730eabfe56f13d43afa142779d8e99b86abbd791e90476ec64759d30194b631c6e425053134c3c0792f9d122296 -Sig = 9d64c3b9a4ba78889747aef7c8565eb075e5bd92a55f9d34d3df6a2d740cd863ff98a04be4866e9f906cc6d99270d208a3dc2e53201cac9f4f758eecbe8a44db0243a3e40400cac37856079f2fe02d54d9748754331d9935595c35b22cc6c45686ea964642ec4ca7e0a88e4a4c0a6166733e361c46a592469cad7009ca3170cf3fbe485b1c8726e23a6e35f9691d9bf4029d82756c64a4d31ad0b8ef57a0ba2d55419d7cfabbab1a23c8baa4bf043a444b127920250551467d7d528425dc7c903c2c824e6b9b65f543ad9d7055300f19500356100411271e15b939d496b4bd4cc3ba4b6aa2ce65f4825275404cb19512ae27cc986b0af6fddff35980c2cc0e96829ecbd9ee19944838e4c83b1eadb6f78669890f556781c4e97d8ede9664080e47b3adaf2f5e04bd42d46012aeace3078f9068d870fee02b088f9674fdc0ca0064e9f0f63205836d7a8771264c553c945eb7c87df2a13d8efd3cdc8409843e7a246089970abd43526f3cc9cf993d419a6beaaaf6830208686a1fde4733f078ac -Result = F - -Digest = SHA256 -Key = 3082018b02820181009bbb099e1ec285594e73f9d11cbe81e7f1fa06fd34f3ec0b799394aed30fc2ed9de7b2a6866fde69846fb55a6ab98e552f9d20f05aa0d55c967817e4e04bdf9bf52fabcfcfa41265a7561b033ca3d56fb8e8a2e4de63e960cfb5a689129b188e5641f20dbf8908dab8e30e82f1d0e288e23869c7cac2b0318602610a776a19c1f93968c652b64f51406e7a4b2508d25b632606834a9638074e2633eb323324b8b30fdbd8e8fdad8602b11f25f3906439055afe947f9b9bcffb45dad88a1df5304c879bb4a6eddb4d3d1846bf907d2ca269845c790b2f0af8154aad9c4acb75e18a5d0e4f9f88137032b9964fe171dfa0d0f286090790f52157179a6734b5f9a64e3d2ed529722c3d3836d4501496f927a0f8e389ca35332b836d99e995f4a3e86f581bf9abdc7a10e06a6b31296ae3b43e6ddc9a0d9a7d0d9c4053af0875e851192d1de7b08d1beb7b857e227f8803a5620726a31920bcab922d3370a78033b315024a0fc1f6c276be565e58de77f294c8089ff4c43fb334d26006ab5757c65b020400ac6db1 -Msg = 973606b2c7e5658a9d8f264b8f5a266d0992cfbd6e9d3ff95c31a69a32c4f0f1cf44a5759d090d5ccf089768e6497b047a9b9f8f3786b8f82681b18b2d65500ada2217005cb06852d249ed17c9d637a9ffa7a5fc6d66882f854e8461b9983ac63c3623fa0cc4bf9530bcf0ff3ee9a086211eaaad1927f8c70300e9c5db45f54d -Sig = 355644f5a26a4ffc638c44ab4d0b7359f37845235bfb994d28e63b114c0e0f97d2e29f448da8b12eb804792ccc686dd807f44211d6af410bdca1196df84016b3cdae180bbb59133aeac5928560ad2cf6be61392dc9e28d7ada11658cf4a873bd2626ca839e697c79a5c4bb3ed4c9b8f48f83f2800e1907376f2e8874c23f1dff8bbf3b3f98bed7895d486079a92557a553a71e18cfafdc155775f39a77455b432b0c2c4f09990d130060143e7310b9d9e1ae6f2b1b83b90b36c6581473f60c3c61a10e286557f84e5d04cc36e12cbce835234d2d773221313ad7287c9957d94a1cda8c1fccd3eec45dd84a5d075d6bf823123fcdc7d549286142ab514db6d998e377429494f07041387de3ab31b02ac1606e590572bd9003e5a62b90b95b00c0eca73c744ccf4eae44374e26ba6033dd2baede95e19cecc840a045bf995a3250ce7b08e0c3267de822616f93a4dd9e629eb38b479bd31071b48976cf73ce52c3734abd93249300dd5c40635842dd2a290276190737a123008a4f0be557ca6628 -Result = F - -Digest = SHA256 -Key = 3082018b02820181009bbb099e1ec285594e73f9d11cbe81e7f1fa06fd34f3ec0b799394aed30fc2ed9de7b2a6866fde69846fb55a6ab98e552f9d20f05aa0d55c967817e4e04bdf9bf52fabcfcfa41265a7561b033ca3d56fb8e8a2e4de63e960cfb5a689129b188e5641f20dbf8908dab8e30e82f1d0e288e23869c7cac2b0318602610a776a19c1f93968c652b64f51406e7a4b2508d25b632606834a9638074e2633eb323324b8b30fdbd8e8fdad8602b11f25f3906439055afe947f9b9bcffb45dad88a1df5304c879bb4a6eddb4d3d1846bf907d2ca269845c790b2f0af8154aad9c4acb75e18a5d0e4f9f88137032b9964fe171dfa0d0f286090790f52157179a6734b5f9a64e3d2ed529722c3d3836d4501496f927a0f8e389ca35332b836d99e995f4a3e86f581bf9abdc7a10e06a6b31296ae3b43e6ddc9a0d9a7d0d9c4053af0875e851192d1de7b08d1beb7b857e227f8803a5620726a31920bcab922d3370a78033b315024a0fc1f6c276be565e58de77f294c8089ff4c43fb334d26006ab5757c65b020400ac6db1 -Msg = 170dcd5458adfbdccc757e0b5abc19278112f24b418b995d395b46410da3624c0a8b49fc0d914fe6a02101ef6765adbfbb5e24739434be92acca9f43e19639bddbb012fef028c7c0449d52a9350b88c2f6e5e52a79648c0c931e8ace5bda5b8bd3a3afc4ca1b6e520012f99f8c57b3167bcec0d8bac30cb1367e8f4a4118d0a0 -Sig = 6a4db2e6c13ee8ec6174bf57ae5bb7555e66dc2e3b618f259d913b5b8b6c16b9760290c9c576b563316f510ad2461cd5086b6d9670551ec74b8a9d15ebd43ccdfdcd74cad660a3fe3f36992c86559cd8e9e4d3568924b1f7e55bc5d8df4cf53f240fb3b945a08d24f205d5a7081410ea3e8136ca282fc99e6be0b1fa2faa742c9d682d08a77b791bb0421241e6a82f84605dda359e4f8475cef346c9f6a54a085492fc4bbb30b1047c66f5fc529ecb6aa9ece561e5a3a62f9a19eca2badbfa32a2aa205713b16081519c2cde2f8e8261726fad49145dce0d9e24f6e085e44bd86f670a114ba98d54389f0ed683d062735cd495e6a8a6eef9fd70355b92b4cf6cf0c24e898b6d3f7fe51dcd1548a1adc67ba585e2d18809ea658d6ec4bb5e33e8501d11a266f5e0928ecb58547e72c27db8b07aae31eefef865bcf6a08485675d3037f432c157e5ee428d292bfc24c654d8fca7a60107dc18461251906521e1e9965fc80c7b5f582ac3dc3798a0a2937e76d7e7fd7122d3fd9083feeb9a44ad7c -Result = P - -Digest = SHA256 -Key = 3082018b02820181009bbb099e1ec285594e73f9d11cbe81e7f1fa06fd34f3ec0b799394aed30fc2ed9de7b2a6866fde69846fb55a6ab98e552f9d20f05aa0d55c967817e4e04bdf9bf52fabcfcfa41265a7561b033ca3d56fb8e8a2e4de63e960cfb5a689129b188e5641f20dbf8908dab8e30e82f1d0e288e23869c7cac2b0318602610a776a19c1f93968c652b64f51406e7a4b2508d25b632606834a9638074e2633eb323324b8b30fdbd8e8fdad8602b11f25f3906439055afe947f9b9bcffb45dad88a1df5304c879bb4a6eddb4d3d1846bf907d2ca269845c790b2f0af8154aad9c4acb75e18a5d0e4f9f88137032b9964fe171dfa0d0f286090790f52157179a6734b5f9a64e3d2ed529722c3d3836d4501496f927a0f8e389ca35332b836d99e995f4a3e86f581bf9abdc7a10e06a6b31296ae3b43e6ddc9a0d9a7d0d9c4053af0875e851192d1de7b08d1beb7b857e227f8803a5620726a31920bcab922d3370a78033b315024a0fc1f6c276be565e58de77f294c8089ff4c43fb334d26006ab5757c65b020400ac6db1 -Msg = b2f72cef31be4b7439191d9b342065e62513792826f950481486dd4289429b6e0ae86a05820c99e1ef0144845cfae05c0f6f144603c3ca50992387c38ab1f76120e2cdeba624cae61dc51a9f3010e76d6ab92936a77bbb34c8ffb4f9ab00f4b15badfda8834e050c292b49f398a9a39f9eb75f01f8684b7d0be10dedd576b9e8 -Sig = 8ca52a9040ac49ec2415054ee86379f297832a2a33892c9dec09de778982fb1bbff68b3787ef43ad15f9aa0c518847ba1b3075613bf187a6fc8a7fd7f0b43a6a24086c1d6c5fcb1db18c93bc508e609396ba019fa43dd19f95194c47003d6092303be35477a3137aa2adaa51b22618db29fce98b5bf791ac70be7e238c558f0fb42a40bcfe0e9c07e178afe7a2db74fcb03693ed46719d54d69d5de43ad6a93b0a5b7da6e05ebf7c4b02da42c7ac1f8997da7c4de00c7747361bbef534461bebc23477e93a48558b3ade7d09dce6fa6a378e68e7204ab35283c58148df0cf9444e5f91ad31cd0474815895555cfd7f9cef9164b91db4f98816d194f85bad581f410a655273e5d14491793141f9d928cb30a322c513935dfd830dfc75030b8b2ba1f46b763ec303bef32b4dbeb01781bc1f2bf2ceba27750082661558cf3d42f03d50409b7db521299009753c25926e3e6502bb1763ab68dd5c19dc0265b16a2d438c3ed23b74e60ecff88708e5601a478986dd1b607a2db0fe049664d136517f -Result = F - -Digest = SHA384 -Key = 3082018a0282018100e1b23c29762d8572f1d41f1e7a846876d9901705bb4b3e0228ae65b2572dd1b3305f4d42a7704dda5934260ae9afb1eb34e7d865bbe11ae16d292f170711487ebce1d7363cd00acda5894f06127c1d4a7d9897373b4767a118b1646bc7a38086bc7d359067e9857b8b8642294cd08bab7646ee8ae0b3c7a51527a58ead49dabd11c3ee8326dade7f803cecb906c73aced669d5c3aed02c373d51bba4ffa98018892245f1ee6b035d52a3ccacb2c28062e572f213d607bb403725b34c65ea54bf70c0613e1a8d0552489787e3dc16c0b8cc7ca2d0b4d3e37d1c448a1ca4dcba20c146e78e2a6b3be888c7f65e49a47fe83e491dc33c684a1fd8acea8be091fdb70945c889df40431241e96a58cf7042f7a54f236ab01214a4e17d713945f79f605a8bc1bb6a2c4a342537b95beb92bcd722b68c14c346a1578c567f3ae277a46c264f4e4ef324ec2cc20ad43fbaf4035df169675575374de658df91cb5b3830bb31f69a8161c98f3b7f9e5983d96cbd9204c5e356980589c2df25188c474191bf02033bd4ff -Msg = 5a145e4a9e0f639fafe50687c28abdb29650e220fa5b58359155710fd2640f1752590ad6462bd20b43a356fa4958240600ded182413b9bc5d89a4d7c8944634551cb6f79ed88bb48a148300c324376d7344e5d4e8c517cbb2dfa185d25b34703ddd254d99c1066814e3d5d658432fd4cbb064e2ce185423f15dd9959af9b0279 -Sig = 89d9b5c50dbf8ae358aa201b9840d1eec03db8797f9d32dc4fc5f6421ede24c52715c698a5d8a6b4ef2c85f4bf2aab139e00edb17f8abe19cdd427c1d72f4e2f9b97aff034dc7fb09ed1de84ae491a04c71ac24fd8b16622a3517746cf63df051b55ed218a2c1e6ab5d603687bf199af4192c1f11f49f0e7a9e0e85563a60139b5829fc907599c7be5d19fca86f17b6fc65b6d039a43447c5d6d3deb41f7ab77a55bebd03dc92157131691a66cabdf721fbeff93250591faada512d7403f6f49912758e030c8abcbda4712775afd2d1b2d0fa31b175fbae92becfeed5b9a34a6c61c761145b8d2147b5834996850fff9ce72f59b5cbb7314bf5fa951e39b0a4e0b6c83ea1632d3b3bffd560ed36e8dfcabc60d8e77787ba1356b47b979c4f734abb5d02463f264d842569826808447365692f9508d69002d9a21893848ff62f3747592cd1c6b2b4d7e8b118a3a89915633958371c373c7c677a499fa32444d21cff20ff35c342e4277ca009e948f56d9e5ca99d281b3624c38c33098c1c18448 -Result = F - -Digest = SHA384 -Key = 3082018a0282018100e1b23c29762d8572f1d41f1e7a846876d9901705bb4b3e0228ae65b2572dd1b3305f4d42a7704dda5934260ae9afb1eb34e7d865bbe11ae16d292f170711487ebce1d7363cd00acda5894f06127c1d4a7d9897373b4767a118b1646bc7a38086bc7d359067e9857b8b8642294cd08bab7646ee8ae0b3c7a51527a58ead49dabd11c3ee8326dade7f803cecb906c73aced669d5c3aed02c373d51bba4ffa98018892245f1ee6b035d52a3ccacb2c28062e572f213d607bb403725b34c65ea54bf70c0613e1a8d0552489787e3dc16c0b8cc7ca2d0b4d3e37d1c448a1ca4dcba20c146e78e2a6b3be888c7f65e49a47fe83e491dc33c684a1fd8acea8be091fdb70945c889df40431241e96a58cf7042f7a54f236ab01214a4e17d713945f79f605a8bc1bb6a2c4a342537b95beb92bcd722b68c14c346a1578c567f3ae277a46c264f4e4ef324ec2cc20ad43fbaf4035df169675575374de658df91cb5b3830bb31f69a8161c98f3b7f9e5983d96cbd9204c5e356980589c2df25188c474191bf02033bd4ff -Msg = 31fd8f67e35675269c8deca6a513b67ad8ad903310195027def430717edb6a3909d10536ebe0ee7098034a4b7b440bc12f22c1eff235b3d357152f543b771e82f999db20e2e14660e7c114ed99dd692e5470a8cab6eb8a6756e06db8b31fefb66b1fbc2dae9fa47bf18cf194e726f74aad5feccc4583fa6c451e93a5d01b055c -Sig = 6d4b0803da15feaeaa9ee2d32af1cf1d209693da7b8847d30a11f6fbeebffe29691c93a9687519bfd79506f33c828d84c4368297067b997379098236db4856a40275256a3803a9bc2c2a748b5f22a5f9802251b650dbb57952abc845d5c10e0587497229b78a09b386d77b17bad1f3dbbd4a539e12f345cc96ecd6aafbb6c163c333a06ec4b1eaab7870dad2cc496e61e0aeb2bd8a23a92d95a7e771591b39de73581fc3f45619ed3f4f4eaec26bf364514d25f52fce545a60856b0d57cabbdfeca6c1da78552e75673d97c544fdb854046249f44d57edac6f50c6fa99d4c29a6d444db13797f064ccc759194da4a228649849379a197e032d6cf9cc9d62cbb46a5217c69947f1324d1743d5ef0863d80ac8d3566e89d0d892095b88397db3e0e07635805593c4d41db8a3528e88671a699a2f4b100b8ca601e341650cc73c6dedf36a9bb860d222fa456e6013419158e680217738551e90b4df4fe3c41ebec266ff230789ad8a5482a9451d52bf9efb8fb44c3e1bcc9f018bec51f8e68e8c19 -Result = F - -Digest = SHA384 -Key = 3082018a0282018100e1b23c29762d8572f1d41f1e7a846876d9901705bb4b3e0228ae65b2572dd1b3305f4d42a7704dda5934260ae9afb1eb34e7d865bbe11ae16d292f170711487ebce1d7363cd00acda5894f06127c1d4a7d9897373b4767a118b1646bc7a38086bc7d359067e9857b8b8642294cd08bab7646ee8ae0b3c7a51527a58ead49dabd11c3ee8326dade7f803cecb906c73aced669d5c3aed02c373d51bba4ffa98018892245f1ee6b035d52a3ccacb2c28062e572f213d607bb403725b34c65ea54bf70c0613e1a8d0552489787e3dc16c0b8cc7ca2d0b4d3e37d1c448a1ca4dcba20c146e78e2a6b3be888c7f65e49a47fe83e491dc33c684a1fd8acea8be091fdb70945c889df40431241e96a58cf7042f7a54f236ab01214a4e17d713945f79f605a8bc1bb6a2c4a342537b95beb92bcd722b68c14c346a1578c567f3ae277a46c264f4e4ef324ec2cc20ad43fbaf4035df169675575374de658df91cb5b3830bb31f69a8161c98f3b7f9e5983d96cbd9204c5e356980589c2df25188c474191bf02033bd4ff -Msg = 8f3b827a1dc3967aa2e26c9d9052a97e64b047c186cf980070528708137a2246763c557ca197f8b8b9240d876cef42669085be79064e1980e51dac06d4060cdbb870d1c5906a9c739c4358b2c554bfe4392120ad56a160efc9d940f9f7b0ddfb9cfe7dbdb1e688919466d587632c27dfa8abf8c43c6f753765adc949421f9e8d -Sig = a5e1136bc2db78827f97e435352303519df3c6ba149748ecea4c493f3355def8f94beb1ab45870d8bb1e32bb10c6cda4546c0bcf90da0758fa1e99b22742302ff17c7d5f0c5580a727304066204f524dd206e1a2a232d4394b74f3daeebc81d8609034dafec29620427caaa72f648fbf39028ff685925b1b7ae4b53e154ca93821b6b152da380217a2f82c864437df45c32253a9e3ecfcda3444f5db879cd12f2fe80d0b88a6fad7cb69303b82e1ed0b761e9f829fafbf4a7027fa2a6164f7701684f7aafd8b5dbf41e6d4031ca28bb4ce360fb3815c33fdb6051c9741ff4f9ebffcfd2f52873ba5567c17d40eb8a92af139b21a184b2e0740e0ade97effeea733cb2e1fe7ff65077c200b36e544f61e90dab2f524a74ed46f10d5244509faadc47f8bb57cac5026e00d1438b24f328dd5fa11fa3add3acd33b20f3c75b1007bcb5379cd8cd8e0f964dacda0157952f41e128ac43878c55acc5967cc2fc631010594248a439820df0ab1b7bd1be5f81bb026016dcc65a674d9ea03bf1958e591 -Result = P - -Digest = SHA384 -Key = 3082018a0282018100e1b23c29762d8572f1d41f1e7a846876d9901705bb4b3e0228ae65b2572dd1b3305f4d42a7704dda5934260ae9afb1eb34e7d865bbe11ae16d292f170711487ebce1d7363cd00acda5894f06127c1d4a7d9897373b4767a118b1646bc7a38086bc7d359067e9857b8b8642294cd08bab7646ee8ae0b3c7a51527a58ead49dabd11c3ee8326dade7f803cecb906c73aced669d5c3aed02c373d51bba4ffa98018892245f1ee6b035d52a3ccacb2c28062e572f213d607bb403725b34c65ea54bf70c0613e1a8d0552489787e3dc16c0b8cc7ca2d0b4d3e37d1c448a1ca4dcba20c146e78e2a6b3be888c7f65e49a47fe83e491dc33c684a1fd8acea8be091fdb70945c889df40431241e96a58cf7042f7a54f236ab01214a4e17d713945f79f605a8bc1bb6a2c4a342537b95beb92bcd722b68c14c346a1578c567f3ae277a46c264f4e4ef324ec2cc20ad43fbaf4035df169675575374de658df91cb5b3830bb31f69a8161c98f3b7f9e5983d96cbd9204c5e356980589c2df25188c474191bf02033bd4ff -Msg = 4fd8f7c586b502fe11ae866254e333b688f33e29b41cf995dca4a60275778d6c1d114cc6899e6f3ebf6040c38552e0c4190b973b22e469ebe75deae5bfbd5351c8f9d46bdcd72cccc15378eba04248e3b935f87754a03e53fb3cff94e6a9678bb75838be68a86230814fd5e38efc939ad03b09e333989f5580078e17d483f1a2 -Sig = c5fcf6db007527d04b7c7b2ab744547521ca009e1644f20e793bb51837922ae9411fff23c646c2b56d99a3cf24b676b7e3cb036b6445c33629bdcc979fbaa280ff8e1c1c9e66b0f453633d3933b788590302746f0cad1be62e6f0ff1457358137cddb8574f9df59be5192a2556b8689beeb266a5adf6b21ba56e6b7cd0d6760f5c350f2ffbda1fe30fda8e2cf563f96d85cec8051c7b635da259dc30e868d917fa31b21e91caddfe5dbd21475a98bf6ab4cbb2d62dd52e35a3320f48b027fe89eafc15bce8f1a5e6c5a402d0d87743d3cf6950dfff4c616da976fac676cc944296381d81ed8c8a782adad29b31e4b2343e92dc8c406e022e566c0b9f5477024c73b21dee60128098d2fcbf67273aa12f44de44ff22bd36a0292723d026e34a0f1d545eec9fe4024214aa647b31af4a5d7c8259a720462476fdac9aa480668d726b9fe4f3c220bb492cd871f86527072089d60872fed7721f4764277903f90bb987af661b2fca1d7ff12694ab654037ef9146480d2c1c8c6c5e52adde601bdbc1 -Result = F - -Digest = SHA384 -Key = 3082018a0282018100e1b23c29762d8572f1d41f1e7a846876d9901705bb4b3e0228ae65b2572dd1b3305f4d42a7704dda5934260ae9afb1eb34e7d865bbe11ae16d292f170711487ebce1d7363cd00acda5894f06127c1d4a7d9897373b4767a118b1646bc7a38086bc7d359067e9857b8b8642294cd08bab7646ee8ae0b3c7a51527a58ead49dabd11c3ee8326dade7f803cecb906c73aced669d5c3aed02c373d51bba4ffa98018892245f1ee6b035d52a3ccacb2c28062e572f213d607bb403725b34c65ea54bf70c0613e1a8d0552489787e3dc16c0b8cc7ca2d0b4d3e37d1c448a1ca4dcba20c146e78e2a6b3be888c7f65e49a47fe83e491dc33c684a1fd8acea8be091fdb70945c889df40431241e96a58cf7042f7a54f236ab01214a4e17d713945f79f605a8bc1bb6a2c4a342537b95beb92bcd722b68c14c346a1578c567f3ae277a46c264f4e4ef324ec2cc20ad43fbaf4035df169675575374de658df91cb5b3830bb31f69a8161c98f3b7f9e5983d96cbd9204c5e356980589c2df25188c474191bf02033bd4ff -Msg = 68e2b0476e66a61efdb9e8e7388840d0e58e4b9812ad3547ff3dc41d38a498c80226b1daf8ff3179f6af63583696fde7b9c0a2c7e902ab817c4627779b23201b44b1215eed9bf46c6a75b0961050f48f1b8c6ddc4dee9e86d8f2e0127e63a7b2f72808bd9361785d20b3d7880edfad31d19ab3bf879995bedbebf6d4298bb4f7 -Sig = c25f7a4c2998ac04d2291a849323fe2af98810e8270474594d9287230da4fb4469e198a6eedb1ff28bdf780320da132de069af846a8c88560722bcb59acfcc0a04533de1a69175d0d16c070098e43042af12fed1d5996c1a5a9550055440146ac83913427c6d60be2cbf0038c2b74d297f981af211aab0e08f89bbf4bf37693ef40fc9f44bb3df2c23ab3fd829c483f6704e541da8c842f1c3096de5c30ab6363fa2ef55b99d7ccc31b65c647893008b5b791f388f55ac1dd6fa786cf317c41a0a8eef2112549b7ce8030d403742995890adfa2f2dca37ded1a60c0fe987b1479a8ffd7272c7165c477e311cf208020d840cbd93892e72f05186a4aefbdfc0c4bf34525bf6d801bc45bdc41e8a1bed2cc7862ba789091bbd388a770b2c1bbff64416d7fbeffbe51a961f0fea7ec7c643b4d3f59beddc4d908dbdaf028c3f1ed10834c3e4b6038a53c24f102d5d5977f2d1573ec0273b0b16b9278e291a542939e63b5854c293bd42a571f286b347769e5d73f38ac034cc14dcc0b961bb0af5cc -Result = F - -Digest = SHA384 -Key = 3082018a0282018100e1b23c29762d8572f1d41f1e7a846876d9901705bb4b3e0228ae65b2572dd1b3305f4d42a7704dda5934260ae9afb1eb34e7d865bbe11ae16d292f170711487ebce1d7363cd00acda5894f06127c1d4a7d9897373b4767a118b1646bc7a38086bc7d359067e9857b8b8642294cd08bab7646ee8ae0b3c7a51527a58ead49dabd11c3ee8326dade7f803cecb906c73aced669d5c3aed02c373d51bba4ffa98018892245f1ee6b035d52a3ccacb2c28062e572f213d607bb403725b34c65ea54bf70c0613e1a8d0552489787e3dc16c0b8cc7ca2d0b4d3e37d1c448a1ca4dcba20c146e78e2a6b3be888c7f65e49a47fe83e491dc33c684a1fd8acea8be091fdb70945c889df40431241e96a58cf7042f7a54f236ab01214a4e17d713945f79f605a8bc1bb6a2c4a342537b95beb92bcd722b68c14c346a1578c567f3ae277a46c264f4e4ef324ec2cc20ad43fbaf4035df169675575374de658df91cb5b3830bb31f69a8161c98f3b7f9e5983d96cbd9204c5e356980589c2df25188c474191bf020310143d -Msg = a0a014cd11ec9b3df8d54647f5ccd580dbaaca2f6197c0551b2bfeeaa9d44c6a2f780690055b6e61af42466d0fd99f52d952ec81484f5a450f0264019392a1b957c1e1d3b7cd791fda93db16e2fa6a5f658f8c98216d0052eb60725de94a4c4701c5d01f9109647e61112cc9d6f9deb068abd2fa55ba5985978e508814c2f51c -Sig = 19382307981e33064a7836168c5302d691c9a364aa0193165d7852145b3ce74cc70439ee2652e598c153f1bf5c0e2e7bd628f15e797a974efd47cd70d368d9cc0c4d7ad8e41973c935e81a391e56c1ba9b486f59653cab41f5f7a0d5ad0f9730d45c6e2d00e5f78056d5a527ff128c584f1735ba1d4436bac48e74e1a387ba7e5de21d94ee419b466d6d01ea81f5fa7dd395ee8c5f0762a08799cd237d4c078ade6222dbc33ec83736760fdd04a0f911d9a1e6c1f97a57b1dcb9deb53471751dfcd83e17539a0dfa5e253aa0616d301dd613a2de4873fcffa324700e2c3f61c24b3cdb0e0e2cd33b33bd97e759d34693e18a6a40029c00c5f7e9d7c2638c3f6b5df9ee16da4ea4c1556f572d4c935ef1d091f313424a6085fdef28f76ab8562818cbb19e0b794669f6e6be366af6f0a43fc85bf82ee0abe8df1deffa4b1e7ad16f8feffc7e6b48995a11bcea982c995ee676985f84d47f93f4f9973de8aef4bb56cb66c9ac2f02b75f9d96a097b18a13007d716158620342e96961d6b7942a57 -Result = F - -Digest = SHA512 -Key = 3082018a02820181009689eb163a617c0abbf01ddc0e6d88c37f8a6b0baec0f6cab8f8a683f372a53d028253a6ba502da462adaf4fd87c8dc2b03b6c07c2b6aacab1d8c8bd043d89f4effe72ea2547c73c6366a2efab9c916945820fb880890bc085564e57ee76f7107a008f71e941e9fd631aec78f82e410ea9c893faa3d553cd1ca628af1087ca1b0c6aef3b66edcee14d1d7dc48293ddd7deed1ccbe487c957585abb9509151038d53f46b068e3e139c7689bf8e8d38669896b8d082e65e458e1f82b8e8ec926e7aa0f97d08526e9636f2c00af4c2bd3d8bffc4bb93cd47b09af18883e11b639d47938d036f7cfeb77db74a2c09a6dee9df98b18eff2fda7d3f4135083bb3b59e2172244ec37bdbdcfe6e199d36dc949cda1cca123fb2be07803d003d76af3d7164453df77d44c7f2599636ca44d0b7a46218326b0c814ed322b9c4279b060f1b9e14b70f55a3751c4343763cdbf9c14637d2210c59fbd037be17ea6706846fdc7b9ab90278c01c458e64442f9256f3ad1cbceb22959d495063aaca1a3959eae0302034df3ed -Msg = 54a8d256702239dee2ebc1dc681938b467ce4740dc5fff1796b5b50fa3f31000085860cbb568319bb746216bb065eec9845fd3d95625159cb359d9720cf838de6a3c958a5dc12e8b35e6f2e5757693528588db3fa7a343182c26c2c5e8e7e375e31b1a9a51765834c593dd53a1954ed7d10f077bb921b2126be418101e08384b -Sig = 869091f55f7e61bd18d88b974ddb408df8a724ca72232b6326de301cfc985e8db211180ad2057a4f4f73c07e48973b00d2833655acf393b31d155c11e9ddc05dd5f4516ac50fbc674cd0c577c79b00e5567629cbcf880b729a7ae0ca9eb040fdcced198243d40f5e3b59f35f2992da079e9f174844f1b2d0f1307624f4d868f558dcd1c6064297a152c816db1ee5848f9e670d8d837911c85b221430b309dcfb4853c3dbf6a2d8c8a6cd3d697ec325da6d8740081bb86e98d092a8794009915f5f55ca9ec074cded2745c50f328af98f78edc94cb6b416cf543d59a4d493824462a21fa6e368943d9d541ac233a7d708fcc7248be670051abf60199c656b8595dfd29e19a207d5c2d33a97dd7b66737023e62bbf522077b8531ededd070a2b17f7d1f9dba47a89585eb72d21c3dc6fb321614604899553bc0834baf3b7647a4aafa046964a805f05477c9e1def5c40430e82d635e7f90713e822e355edd10f2a65c886c4d94bb306bac35dbf307400eb7d8caaa36e167760209c80362e8c763a -Result = F - -Digest = SHA512 -Key = 3082018b02820181009689eb163a617c0abbf01ddc0e6d88c37f8a6b0baec0f6cab8f8a683f372a53d028253a6ba502da462adaf4fd87c8dc2b03b6c07c2b6aacab1d8c8bd043d89f4effe72ea2547c73c6366a2efab9c916945820fb880890bc085564e57ee76f7107a008f71e941e9fd631aec78f82e410ea9c893faa3d553cd1ca628af1087ca1b0c6aef3b66edcee14d1d7dc48293ddd7deed1ccbe487c957585abb9509151038d53f46b068e3e139c7689bf8e8d38669896b8d082e65e458e1f82b8e8ec926e7aa0f97d08526e9636f2c00af4c2bd3d8bffc4bb93cd47b09af18883e11b639d47938d036f7cfeb77db74a2c09a6dee9df98b18eff2fda7d3f4135083bb3b59e2172244ec37bdbdcfe6e199d36dc949cda1cca123fb2be07803d003d76af3d7164453df77d44c7f2599636ca44d0b7a46218326b0c814ed322b9c4279b060f1b9e14b70f55a3751c4343763cdbf9c14637d2210c59fbd037be17ea6706846fdc7b9ab90278c01c458e64442f9256f3ad1cbceb22959d495063aaca1a3959eae03020400fa3751 -Msg = 6459ea1d443df706907ffdd3ca2f193f93f5a349b50357d26748b767cde6ab5cbfe76b1acb2b9eb97da5c4d2ddc8d18e3a3b1a0326d475c1c2c49ca73c0fd3fc9540cbbba85ac52d6811fabd693a3b09a281d535715ab784df3ad7292606d15a70ccd1a7e2b1b48ad92a6a3f736f9fd5522d9a869c7b654446102e9493b3ed9f -Sig = 2b72942573b825cd1f0172119c23440a2b384b7f2a3c5582bb02f764e2b159ea9ad880ca61b3df7ca249134f4bec285083c7ebf984b192808e916af687ef6c6a9a6722a4fa9189fac1521d03853f3dd5a95ff4b9dbdbf3c7077f720650ead01945ab5bfee582ac1643526fbf68efe1bb3b6f7d2b4b01f2155aaea38a2c7ed29add23ee791a703d11e3b1b7c500d9a6b647c1337bf537c071e5bada6faa025bcaf5e5d1196998909c3d64758826939ae7fe1466dc6efc10a2b25e21186c2d135ceace33cdf490b13a0d10c2527e04200aa70bc1d4f3cfb04b5d2bc17aee881d3a788401f45443470bc639232088a9553c8d792aa5707654f075476a66b86368d5a92b4c84a3b4baba1b0b98bdebb85b48b82b8409f2e9c1aa500670329ff3b6e83e25c561110d47b2fe93ea2946a74f9730da9b7d126f8d7c3fa4a51fc30144a827831c186390998d552a1b677afe5afee46e9d4a5774a56355a4d1967677e75d176aef71c3fa061644d7a9582385877de67f87724b0a6e868f3a2eeafb68c53b -Result = P - -Digest = SHA512 -Key = 3082018b02820181009689eb163a617c0abbf01ddc0e6d88c37f8a6b0baec0f6cab8f8a683f372a53d028253a6ba502da462adaf4fd87c8dc2b03b6c07c2b6aacab1d8c8bd043d89f4effe72ea2547c73c6366a2efab9c916945820fb880890bc085564e57ee76f7107a008f71e941e9fd631aec78f82e410ea9c893faa3d553cd1ca628af1087ca1b0c6aef3b66edcee14d1d7dc48293ddd7deed1ccbe487c957585abb9509151038d53f46b068e3e139c7689bf8e8d38669896b8d082e65e458e1f82b8e8ec926e7aa0f97d08526e9636f2c00af4c2bd3d8bffc4bb93cd47b09af18883e11b639d47938d036f7cfeb77db74a2c09a6dee9df98b18eff2fda7d3f4135083bb3b59e2172244ec37bdbdcfe6e199d36dc949cda1cca123fb2be07803d003d76af3d7164453df77d44c7f2599636ca44d0b7a46218326b0c814ed322b9c4279b060f1b9e14b70f55a3751c4343763cdbf9c14637d2210c59fbd037be17ea6706846fdc7b9ab90278c01c458e64442f9256f3ad1cbceb22959d495063aaca1a3959eae03020400fa3751 -Msg = e4dcdd4e122e9466560370fb59ee0c4c323fca47e57772a029ff1b216f194f411f166af725ca43d0ac3d0e4029a381359c8e36f21363511b6f0a620c6aea8d6fd915e80e2fbf24e543f5707c538c9a744857775f3b9d86d539c9d0c44364120799411e3a39f77fcda2945c58dd909f2ebe005535680c58f50fa32cee026e282f -Sig = 02ca1d1fe97e0c3724d649dbe493c4bf8825d72f0e1717a6a8767453a3ef20bbbbc62fdcef7b816af229dc1ee2464a19b63825f47dea9774745dfe4ffd36ea72eaed7137412bcf0d0d5a9ffb02ecf15309aa047fde0a32a16876bcc33363b7290b6ec9c019d82767d36dcecb841b6946dac889cf3e11e614c4dd07e594c50e1557665c6ef76ef2205d57a2c8e6d0950ad7e4e476ce2e095f7e376c21f96c38b53327c94a9c4547982ce396eb2070bb73df03a09efb3bc6fbe5c35dd89e3ce54ff093739c678aeced539f04aee3c4d391b1399cfef4e24529033098a29aad09e715daba9c4323837b48b5292bcbf32b39cf15c6430714a930bd840b8c15d7467e71e99ef6726e1ab3d05a0e96939082391956f7f0492676a05771f695d24d7c7c22c64d7ef99a295ce34cb882153162400a9d6bacb4e1002ee51317477fddd9923fa1af2ef60e40da01fa19a43e446144581b3eb8f4d44d16b31c0b155c7e95ec52da4676c6abc1075ad271e5b39a5b3ac7672f1c65a1f28d402c691e8024559a -Result = F - -Digest = SHA512 -Key = 3082018b02820181009689eb163a617c0abbf01ddc0e6d88c37f8a6b0baec0f6cab8f8a683f372a53d028253a6ba502da462adaf4fd87c8dc2b03b6c07c2b6aacab1d8c8bd043d89f4effe72ea2547c73c6366a2efab9c916945820fb880890bc085564e57ee76f7107a008f71e941e9fd631aec78f82e410ea9c893faa3d553cd1ca628af1087ca1b0c6aef3b66edcee14d1d7dc48293ddd7deed1ccbe487c957585abb9509151038d53f46b068e3e139c7689bf8e8d38669896b8d082e65e458e1f82b8e8ec926e7aa0f97d08526e9636f2c00af4c2bd3d8bffc4bb93cd47b09af18883e11b639d47938d036f7cfeb77db74a2c09a6dee9df98b18eff2fda7d3f4135083bb3b59e2172244ec37bdbdcfe6e199d36dc949cda1cca123fb2be07803d003d76af3d7164453df77d44c7f2599636ca44d0b7a46218326b0c814ed322b9c4279b060f1b9e14b70f55a3751c4343763cdbf9c14637d2210c59fbd037be17ea6706846fdc7b9ab90278c01c458e64442f9256f3ad1cbceb22959d495063aaca1a3959eae03020400fa3751 -Msg = eced7082ee6e916e753959e7dfbec00d9b424b64eb90eb2be7eb22e9c648674859bacc26d82edeeae158cc14beedcc19e713bb6dc71603e1c35cc22f799b29d34549221d0a5435852f14ac3ee77ef50eb69a495c31378b8b05dd73863a03eb9cb982b98f0c4a5fe766533f8ce3d7039410bf3c5aae5b49d0b3557b1692e8774b -Sig = 11aa09883b9f571237215bacf3ea7f100740a1bd72748804bca39e9ef8527692b5a8e1f94d255cab186edd16fbe76bb9d673ecef79f2614fc0bf4e2b3c28a93c39e6fb31de6c21dc93026f8ce717767d57bef1c91839568b9da11c1b48cd7e53e132ea7f9b12f80c3bc1a6b9ba1e7d234ffc4f251e6ada2588b21b457d9bedb51d14b1214144a81a3b987f00b20c6cbb314840363fb4a605495124abd45ac3d7e9d65e8b95dff0ba916d432749dfb24e5fadac418ff716097d86943a6bfa8dc5ff27dda853c63c1b2ce3383bd78197af3e30635d0ae65e203300ded374a790245cdf4d1640ba5d0da8d6ea35ba0263efde90c7b1a8ac1e3cd0f843e5fe57f681055de7ffea80e92af36bc183efaed08a5842f9bc8369626d60ab2c460de622b9b3c36e6e559787264abefaba843bf443cd9443eff990db82feece2cdb5e336f84f641176f82b41efa2377737089792b4a9596a32cad5450a5f6a93f947d249dd734be9b3cb6c825af53c27070eeb7c1713aa607fa89e44a542dac00b80bd246f -Result = F - -Digest = SHA512 -Key = 3082018b02820181009689eb163a617c0abbf01ddc0e6d88c37f8a6b0baec0f6cab8f8a683f372a53d028253a6ba502da462adaf4fd87c8dc2b03b6c07c2b6aacab1d8c8bd043d89f4effe72ea2547c73c6366a2efab9c916945820fb880890bc085564e57ee76f7107a008f71e941e9fd631aec78f82e410ea9c893faa3d553cd1ca628af1087ca1b0c6aef3b66edcee14d1d7dc48293ddd7deed1ccbe487c957585abb9509151038d53f46b068e3e139c7689bf8e8d38669896b8d082e65e458e1f82b8e8ec926e7aa0f97d08526e9636f2c00af4c2bd3d8bffc4bb93cd47b09af18883e11b639d47938d036f7cfeb77db74a2c09a6dee9df98b18eff2fda7d3f4135083bb3b59e2172244ec37bdbdcfe6e199d36dc949cda1cca123fb2be07803d003d76af3d7164453df77d44c7f2599636ca44d0b7a46218326b0c814ed322b9c4279b060f1b9e14b70f55a3751c4343763cdbf9c14637d2210c59fbd037be17ea6706846fdc7b9ab90278c01c458e64442f9256f3ad1cbceb22959d495063aaca1a3959eae03020400fa3751 -Msg = 404f0ccd8f6ae6f81cd7a4efe9a1f630c56ac1987002698e0138507e85f09a89e976347a1a1214fc6addc20b36d217a9c52844d274e017b1109a7a1484ac3d1eb475153ba8efe459ed843a5638231cb44d9205941f062be239f103cd5c1b077a6af4b7f98229de786d7516b639ba8ebb23500bc7bb9c2d8842e5f48f57648205 -Sig = 11368e0d1b3900af8ce2fa432a871bc448e0d49a71eee2b201b67b496ce00854138386c3cccd6e4210f84c2e1de653f70f16d0240666fed5b9fcfb247d8c77f0ae9826fc32d0ed6aff6e94eab735ffa2dd108b842e59e7d04e3eddcdcd087b30a3d65cd9f6566dad10bd2e9d7bd2b6c20167552e77270ca43a1ca5aee8c9e7bb5825970ab74ea79d3ae73b12d34274d58117b568aa724a6766ed40afe8d2649dffd5bb9c1c854a70a10ac5459fb9bfe4bcecbb04103ffba4d314c2c5aebd805acfdb113f5321ebfa19d0c809e8713e35bdaa8c7930c2f2ca5792206aaac8e44b4cdf1434f04acf6c1df428843b14e1c8401555742707bd5f9e4188f38206fe11c13f29947ecd97f5f576d4ebeffd1f29d38e43d76348bb43840d9044fb7785a0d7d04bb27206b2907759c29a70acd14dceb05d21e7c8bd907df3746b666a40e35245f7bcd723446b4e88ab0e2d8d5b3456041ba111a8276df1e4625e5863c5dd6b2c7ec1ac55aac7eb8373cea752a6396558fa7adea9d8c4fe0843241bd67f2a -Result = F - -Digest = SHA512 -Key = 3082018b02820181009689eb163a617c0abbf01ddc0e6d88c37f8a6b0baec0f6cab8f8a683f372a53d028253a6ba502da462adaf4fd87c8dc2b03b6c07c2b6aacab1d8c8bd043d89f4effe72ea2547c73c6366a2efab9c916945820fb880890bc085564e57ee76f7107a008f71e941e9fd631aec78f82e410ea9c893faa3d553cd1ca628af1087ca1b0c6aef3b66edcee14d1d7dc48293ddd7deed1ccbe487c957585abb9509151038d53f46b068e3e139c7689bf8e8d38669896b8d082e65e458e1f82b8e8ec926e7aa0f97d08526e9636f2c00af4c2bd3d8bffc4bb93cd47b09af18883e11b639d47938d036f7cfeb77db74a2c09a6dee9df98b18eff2fda7d3f4135083bb3b59e2172244ec37bdbdcfe6e199d36dc949cda1cca123fb2be07803d003d76af3d7164453df77d44c7f2599636ca44d0b7a46218326b0c814ed322b9c4279b060f1b9e14b70f55a3751c4343763cdbf9c14637d2210c59fbd037be17ea6706846fdc7b9ab90278c01c458e64442f9256f3ad1cbceb22959d495063aaca1a3959eae03020400fa3751 -Msg = abdffe0b951a91c54c7f00e1ff8e98060b413f131d9cb5589a861a053ed7b1e203b2e3414415873222ae60f527f1e7b529674b737149b7401d4dd3afc3c08d8a57d519c44f3d36af04f7b46f5c6a33afa6b12d92c53637ec918283b37a53aab06fefa87afeb928a5bc020337e721035b4ac6ec5a618bbdc6becc33f9abb98fbe -Sig = 183fcc6e78a7811df1b7442c3bf543e198ce6c691ea6b3aa1952bee39d3218a2b1cd55af26efe672b11c640af1de241fc1289cf10643992fbfe604e1e965d2eb9e19f3399d9fe174ec4129bffb0e041b15f8b7e7b25b535882cbd5d6983d8d84dbf91daf22078579670f70e1f46b723e5a0004f1870d88daa8d7d22df709226ee6d7b484ff47a44db43073f65bc6974493a807391861adf95535b560a47e0ae96af5239aaf1e524758ab6c7a2d3bdccc2f2cc173251954504b837e27f32e699e7604a11d8205893d8cbf9a5852af1f65f8e0b1e1851b4f7a80ff929d5f4f796aaeebddcbfc4c3835d6381b2341404b77d90c78be4d97747b2d6fa9b88610963795ee95f70bbc897b486cf4b313ade25d56ced2e8b6584b921567d32cd627e9497f39f743f020930cf5141668e127152fd92df34b44e3cd142c1668fd71f7f83246f2be3b2ff95bc1ed7e193d75adc5369fbea93314f03a305a825946846f59af8c108a14888e894872e4c0086599faef2f5a0edfb4e085c0402cc56e69930f59 -Result = F - -Digest = SHA1 -Key = 3082018b0282018100da3428fb42c2bd8b0a954bb132f3334b804b163913398188d6b7a8433fc66249a300eb5e7ed2b20b7e22e21caef328071993af0200040247c651a57d37160bf41db0af7840aa731be37c3daca590388ab93ca935b9ed94962f3837bf7df344855b2ce7eb4c68485c8455a16bae782d606a246a1a66229be6a4e3fa9b534c5e1c1100b5a15551fb0a70e78612eb2116f1a38fd694028cd2172bc7699105cd6e4c14b5c9da61819048c42b10e31c3019f8c97825f7f70312ee3e6348a38e0b4fe9d567e1a4087cf260944f57cdde56dfd9cd781c846ec73b523bda1539130c1750f24cf0b6d0d160f4492ee38d31bc44d4ca299effb4427e2bd4fff80f7d19042d988713a84d470fdb692a296e6e14c68d561addd58863496aba014ccc423cdaebe43874c90ba0981404398250a062266e372a9ab7f29c236225769f0baea54aa436705f0dad5dce1d608ce27cb34d22ec913c99c5a2d28103b0a88c8cbc3b9b37525ac45bb39d26d0615fb0af055911bcad4d724c208e1cde40259578df24ba3b0204008a381f -Msg = 8bd0e9c0054beaa7d19e08483fa541fa551ee71421af980d4b2b71e2f1117fb8ae5576c3fc63a666bd622a9c14b5639679c8a5a60d092f5b2a3461ee3fd429dcdb07bfd5078192d5d9d3829146ed4f1438e251aae0ec6afd4eb03a7e3fc39106366c2abdceac963c4e7b76ee7e55edbcb9f555e94461313ade26635b98e5a07e -Sig = 4197ec722775cc065adfcecce1af88d2556161466124f358563c84c52eb4ff711b9afa9a6c0bab52ea08f7a6f434ea5a6b4dabd3554baae2330b1de68e62d83c2d6217781c6e38376f142971e13c8806e0bf467089e3dae47b80f9f93e8677209f29d0b20b474ac815a2e2388b9d34b838373401b72a33e30914cc0ce9e1357d00f55d9736107d3db204bb13d77923566d35715a9c986f199d5d185f02aed6481dbd116e3fbc81c3bd4e3438928d3c93f63d9566b4af39bdc6361783286611a0bee9f326ac1678ffd9ef517ea0a6908cc38d3b153e68ce79bcde3c2f33d240cec3066d8c05af6d38008239979dacc67c2bcc14212909f4e2f92b654f7dea995cf006088be930061798d5fd0e4851c65d5a23b9440a83aacca0837059e85f32d16f390b02a57b910c6a9109f8d69af07d7a8a44beb4ddef724bdc475369ad34510b8edb5c2b36c9f9cfc775d1f1840d2406943048ba339d94f7f226763c17425543fc5d2c4f0d9fb0f4ca98e100be9c2917c13ebeb90a9e4fd235671cfca89769 -Result = F - -Digest = SHA1 -Key = 3082018b0282018100da3428fb42c2bd8b0a954bb132f3334b804b163913398188d6b7a8433fc66249a300eb5e7ed2b20b7e22e21caef328071993af0200040247c651a57d37160bf41db0af7840aa731be37c3daca590388ab93ca935b9ed94962f3837bf7df344855b2ce7eb4c68485c8455a16bae782d606a246a1a66229be6a4e3fa9b534c5e1c1100b5a15551fb0a70e78612eb2116f1a38fd694028cd2172bc7699105cd6e4c14b5c9da61819048c42b10e31c3019f8c97825f7f70312ee3e6348a38e0b4fe9d567e1a4087cf260944f57cdde56dfd9cd781c846ec73b523bda1539130c1750f24cf0b6d0d160f4492ee38d31bc44d4ca299effb4427e2bd4fff80f7d19042d988713a84d470fdb692a296e6e14c68d561addd58863496aba014ccc423cdaebe43874c90ba0981404398250a062266e372a9ab7f29c236225769f0baea54aa436705f0dad5dce1d608ce27cb34d22ec913c99c5a2d28103b0a88c8cbc3b9b37525ac45bb39d26d0615fb0af055911bcad4d724c208e1cde40259578df24ba3b0204008a381f -Msg = b8012a53d58a2db0cfa9e680b24a6327a01873cc7493650ea46213f26cea2020291f7d50039a32ffceed5b66323370ac0aebca5b0b066311a63ede782faac7773e8f1baa567a0b10c48bfd04ca14d46ffd63713becdb790b024a5929ae7688bfc0f90c4b174f404d792ed442c21515d641286f565f3b3064812d8eee3077ec61 -Sig = 584351aa09ff6cd9da1771735e122bea891e20c6c3e297966885f7c7768a395c455768a8c6066018cce86d2effd909a719bd7d712072efa0aa530b9ed6a1a24c4c4f589a006c077ffb013f4fd9dc0a9e13b516a3234d09f79ff76e8d46a8c5f1e41f229805d9ffcea507277511b5f8e71d13568574d01759cd851e2b6cdb6a7fca280ee10d7a62ae15db9069c0438ccfdce2b8d83dbc7e5abe6ddb1813ce1b7aafad383455b50da544bdec9dce0d93894927940d17159f1f82bf44dcd8e69631125695b7cbed538ff467d0f53258d815b8a817e79fa238eef0a26e53202ff5e2d57b547831eba68f71ee81b1d4a5af42de2c5c4e9a8e4d3f53d6e9832e71de9590851a5be5e18b381c94536313185db54f9f03d362971b13a8612d3456cd8d3f15644fbeb33f8fb2b9b6b60522f49b6c6bc5d6c3701371f66dd115f95eaf5889893e27df3975ea90ee3e8b9438e7dc26ecee1dd9fdc34843e3188cb020778b4ffb8b52339405f17278be0e6d9a227292363829cce7cc3ac2ba1ff90cf8c09dbc -Result = F - -Digest = SHA1 -Key = 3082018b0282018100da3428fb42c2bd8b0a954bb132f3334b804b163913398188d6b7a8433fc66249a300eb5e7ed2b20b7e22e21caef328071993af0200040247c651a57d37160bf41db0af7840aa731be37c3daca590388ab93ca935b9ed94962f3837bf7df344855b2ce7eb4c68485c8455a16bae782d606a246a1a66229be6a4e3fa9b534c5e1c1100b5a15551fb0a70e78612eb2116f1a38fd694028cd2172bc7699105cd6e4c14b5c9da61819048c42b10e31c3019f8c97825f7f70312ee3e6348a38e0b4fe9d567e1a4087cf260944f57cdde56dfd9cd781c846ec73b523bda1539130c1750f24cf0b6d0d160f4492ee38d31bc44d4ca299effb4427e2bd4fff80f7d19042d988713a84d470fdb692a296e6e14c68d561addd58863496aba014ccc423cdaebe43874c90ba0981404398250a062266e372a9ab7f29c236225769f0baea54aa436705f0dad5dce1d608ce27cb34d22ec913c99c5a2d28103b0a88c8cbc3b9b37525ac45bb39d26d0615fb0af055911bcad4d724c208e1cde40259578df24ba3b0204008a381f -Msg = 0803aa22e7bfadb1ae48bdc6dea805f2951c23650d81d2056509c6c2a432d823fbf963254a4aee46e6bc0bdd9a7b7eaceb85a2b8a01a0959826d638d61a0a19157ef5ab3512c6d62ca6be887dafe281870a442e9dbfda2c69041f2c027323ec4a64f5572024b722be3bd1b6ca8194a5babdfcba0c612e57616ec3c02fed0f6e3 -Sig = bf3adfd66bd872ad41c1b2465bee7befb88bb46c36d1a113ee3df6e0d2547f771fa7e72b7ba22d86673912d70b8ca1bb61e6835da82f6a272ee25b4d603bed423d6febc079a13f9140cfd22fe2aa9994125310b8f4268b3ebd68ec0ec781bd129d921502ee93fad8d96d006996e44d662ddca2932d8c06f088cff205e5826104b7f2860beb589a5161e8c0d5454fa7c522e395e843f025e6b99af27951ce577894adf63516b7fc78a6bebf17c287d199888e5237a17a88a765f929618c53b87a7e4660507dc7fa3e4ffdac8eee8963a960eb34f0f974d83fcac38223f24c79f818fb46e767cb3a807a77d6fdaa4d1b072f9d20ef025329da3f2933ab694b838996b0e6710cee35339f4e1cb7a145e3feac23847049977a6afd55038b8fd9449bee3875ca23708932d693657167ee577fa56d790dbd98537857a5d67bfa5c998c39af621c43c5ebc3976a0de1dc09890929ac3384abcfc22ed1c965254245bb2c6f68399ad3b9c4e6499d1f09ae800a5d6fe871dc7adc98293fd86930aa566523 -Result = F - -Digest = SHA1 -Key = 3082018a0282018100da3428fb42c2bd8b0a954bb132f3334b804b163913398188d6b7a8433fc66249a300eb5e7ed2b20b7e22e21caef328071993af0200040247c651a57d37160bf41db0af7840aa731be37c3daca590388ab93ca935b9ed94962f3837bf7df344855b2ce7eb4c68485c8455a16bae782d606a246a1a66229be6a4e3fa9b534c5e1c1100b5a15551fb0a70e78612eb2116f1a38fd694028cd2172bc7699105cd6e4c14b5c9da61819048c42b10e31c3019f8c97825f7f70312ee3e6348a38e0b4fe9d567e1a4087cf260944f57cdde56dfd9cd781c846ec73b523bda1539130c1750f24cf0b6d0d160f4492ee38d31bc44d4ca299effb4427e2bd4fff80f7d19042d988713a84d470fdb692a296e6e14c68d561addd58863496aba014ccc423cdaebe43874c90ba0981404398250a062266e372a9ab7f29c236225769f0baea54aa436705f0dad5dce1d608ce27cb34d22ec913c99c5a2d28103b0a88c8cbc3b9b37525ac45bb39d26d0615fb0af055911bcad4d724c208e1cde40259578df24ba3b02037e024d -Msg = 66617eec7cb213d31a231ddbd0d4cebf80f32ac36d81bb979559877f416e3fb1da54b9fefe02a0b5d3d66bc59bd98b218945e969d3448fc609fba516a5c7a049e3c6b60ad39a95a2ac69541a6328aaa07c1a5e2d2193fe647102d4bc1a2e16e12ac05d58220258624ce6c2244f4a9104017a71567cf770387477fbbac82c0943 -Sig = 72d24f9b4b3642043b7080ce66d5c2bed95b1a710776ede03cbfef3806760a6ee640def72c6b04477342dc3d1109d06d58a1880bcb8b3ffd8ea15c2e66de6815419c684962f79dd0c0645b2b22cbcea29c7ae85bb5e689ead0f07350a3cc8dd872698daaafea95b014e12132df28b50e63f7c011a9e6a7184376223730119b201e8ac5d61b6bf9e7c2896fff600a119300bfb034a985330de944ffebf67f720a33115fa680e02bca71eed92d0160c83a037be1bc4383c26ada8e1298dd92d0db9d7d918a59baf2c2b2b88e7996f630d5f88675b8cf80be841973e3c1efd0a156ac9f5570eb2797ddd32cd4575fba8c3ed5c39236af3845bfd95020463ffb983b9a0ae24bd244f20a5ada496f58c80fa5b16dd2a8010abc86c7a8474621d4ebee2849ea96e0e94956614ea0818c425c0ccbbff20a62cb7d218573f5aeba6920f75a7fb26ebcf5debc473d4a8daed02e1eab16212ed268caf07c2df497d1ef6700f47287b80c6635edab668c3665ab333617daa98aac9c1f71f749bc1dc2bb2428 -Result = F - -Digest = SHA1 -Key = 3082018b0282018100da3428fb42c2bd8b0a954bb132f3334b804b163913398188d6b7a8433fc66249a300eb5e7ed2b20b7e22e21caef328071993af0200040247c651a57d37160bf41db0af7840aa731be37c3daca590388ab93ca935b9ed94962f3837bf7df344855b2ce7eb4c68485c8455a16bae782d606a246a1a66229be6a4e3fa9b534c5e1c1100b5a15551fb0a70e78612eb2116f1a38fd694028cd2172bc7699105cd6e4c14b5c9da61819048c42b10e31c3019f8c97825f7f70312ee3e6348a38e0b4fe9d567e1a4087cf260944f57cdde56dfd9cd781c846ec73b523bda1539130c1750f24cf0b6d0d160f4492ee38d31bc44d4ca299effb4427e2bd4fff80f7d19042d988713a84d470fdb692a296e6e14c68d561addd58863496aba014ccc423cdaebe43874c90ba0981404398250a062266e372a9ab7f29c236225769f0baea54aa436705f0dad5dce1d608ce27cb34d22ec913c99c5a2d28103b0a88c8cbc3b9b37525ac45bb39d26d0615fb0af055911bcad4d724c208e1cde40259578df24ba3b0204008a381f -Msg = 1c7965099677664f23eeec41046865633a36ef29f6116ebd5101dbfc3d7edfc1bbd5a0674fcedb89b18c330cc6b4c860ced20c02dff8d24692a8a853fcf3676fe0e3087d2217b9c37fad30f17c65405f9c02aa97d6f4351346350148237118e3f1694652f8992b86f4188ef70ec1f4e90b9071eec44ebfadd6718de19a3e19a5 -Sig = 8b7a7e94dd13ad803b61a100b66075f011b9c52d8d443c49560f99256f0eef53a699d24dbd8aceaf85c2fc0eaedb6e34f1bb4e5a58a171b5f08170ff865cda853e599dd6f7b88c32678733198e1ee4eb586cb360f3ef8aa3c034557c49cc39bf02a5bb8b4f17aaf7a736b83d2965c4ae8bbf9cc81f3f7943dcfb74caf216b745f6fa6b941e6dc5d535feb5862864d4ab4d4258d7bd1f93ae81219f88d3b8790cd40e2c222b074a1d396a92f75bee8e088e0e71daa7120256c5842dc4abaf04d9784d25dc6374c0c33126055c4367d841809fb21f3a3cdbbee5aad204bd89b3b7aa4995154b4f2ff3896c936a1b8f41a95db16ffbb733d6abc23889ea2ddb07498a3bb270e259276d4bfbdccb94683a7860de3786c93b19e285685f4397594d1b18c1dafb09e614e8e59760968e14992f9b1b7bfadd283c3493ad5035b79630846b349e3cd294e93952b40cf4580e4fc24fdfbe77aeb92f8c6afe03624be13862880f1f939c21cc895e62fa4c78a3b95341092a6abe7d21b5bf5528b2383c20e6 -Result = F - -Digest = SHA1 -Key = 3082018b0282018100da3428fb42c2bd8b0a954bb132f3334b804b163913398188d6b7a8433fc66249a300eb5e7ed2b20b7e22e21caef328071993af0200040247c651a57d37160bf41db0af7840aa731be37c3daca590388ab93ca935b9ed94962f3837bf7df344855b2ce7eb4c68485c8455a16bae782d606a246a1a66229be6a4e3fa9b534c5e1c1100b5a15551fb0a70e78612eb2116f1a38fd694028cd2172bc7699105cd6e4c14b5c9da61819048c42b10e31c3019f8c97825f7f70312ee3e6348a38e0b4fe9d567e1a4087cf260944f57cdde56dfd9cd781c846ec73b523bda1539130c1750f24cf0b6d0d160f4492ee38d31bc44d4ca299effb4427e2bd4fff80f7d19042d988713a84d470fdb692a296e6e14c68d561addd58863496aba014ccc423cdaebe43874c90ba0981404398250a062266e372a9ab7f29c236225769f0baea54aa436705f0dad5dce1d608ce27cb34d22ec913c99c5a2d28103b0a88c8cbc3b9b37525ac45bb39d26d0615fb0af055911bcad4d724c208e1cde40259578df24ba3b0204008a381f -Msg = d02569c471a2139f9265920ec395fd1803fe857d1e1063e03a2b0f2bac1ab33010dddf8c98ab7ed1a43709e49333faa3d91284cb52138119d77bacb00e2110bb8630c0530329c9a31627654af16771007a07217d9e0ef397e8ade1aa52c5db3c5ba874e15924dc5d11be0e09853b4a780d65c659a90ba19f964a18e01f0bfcfb -Sig = 40bb34f18580db4e1af934834953321a7fda886fb8831041909abfc08db1aedaf64115791699180c18b14584457933033e9cd0347b3e25dfde4c77bf5983f8f1635cadecaf7b109f399ef891604d4ef0b8bdc49d24011e7b1e4af79c34d0616aec06da2fe4a88847dca5f739bbd8c4dd6e4b196d8117f666534538ba180f703bd5cd87a9de0a50cdf2ed4b9e542d4ea9c2eba109754c55bd4432f37dba8708bd528a244e2b8aba7e8e56facb218391ca9dd29d8c1a58d7bf749f047829ff52998649f52ac76cf540ced9bc63c5fbb8e470a91fa0aba01bdd1fb899bac38c7b9e6c5f69591f63af213c2b543078ff3e29d02327aad6242511e6c91b37074a94ead1753546d0db25048fe2f3d10dccad0624495a3e1efd1687c9d0854fccbaf13e1e4892ebaecf2d1336681ee4f3888922a75424ee61d229f2f85984d187c9955ae51e6707bda528586b7e373267834dbf5a31332e640b611be64058e79f02fc4fa02e2e238eaa4cb725c471e9c0e5a48bbcd6efb9fb851cac9617a4da16e17166 -Result = P - -Digest = SHA256 -Key = 3082018a02820181008aa12846ecb9d8b954d2ca0fd3f60826c76d2a98ae615f38f5a662cb6158f17f29050dc6a1bc2f60f3a9db2da6c9b27b8cabe25cfc25d005ad60ce298f6da3415ee0a0a00cd2fbaf1eb67d4fffbe03b2570ab56c10dfee9f4da86c05920993c92c4ac33a246f5102113a258e17736897f981b8b29ae695802fa1bcf9b41a5f1053bd77400a153d1d6efdf4e4c14703a34380da2921deac003b4a7246568527d9e37d0da956766f155d3b9a38ddb747f2706a72268542f594c90e0d2f0ef755f4aa67aa6a25004548c73861c0333597337a944c42f762ca2b54821425477e4e0e2a9b1842ed3f16d68ed31318dc396071b90e1e514cff975d198a581723cc98cb784d18cf197a14dd7b9d5036bd7724b9301f514236bf7c8b290dc5bd93ebb6bb2d18d3fc4f4d480b8d1b62ffa3de1224607976a27d40f912e50b46b915f19556781b2ac88e16c14982a0718bdb4cec77127165bd7151f0181cf56efa1ea345fee075a7b36a02e74a6f3eb035b608cdd2ceda4d738876fbd7ffb009019581685f020374ef0b -Msg = 1d15d87fe7045f2a6650659acf23faeedc28b1bbd64a54f8f3bed617e3438975a6a891f4a08f99e6ef72c52efce3e7a15018f5b3aaa6bb4f4e8dcd069f75c06cf03799bf989f86ca4471cc0992a9010edb077b234fcb083148bedfe1d871d700a4c9d728f6bb8e9d0d556475b8feb0fc23fe2b56f041a5668957f6efb5c038f9 -Sig = 1f1563cbb8650b8a7ff7f71aba6c06ea20643e4620f29e8d1aeb4a1be6f665ff9779ca9303437aad3264aeb0f2b250af32054585edeb44b0a913175e6006d31b43eeb9c97bbd679e5434e8f645b6e096320a5906a64264abdb9cdeefabd5ff61ee3f851484ec6bb0c7957d6db38942be1b3412aeaa7b0700028fac765cc4f03bd7157122420f1acd4828ea01cd32e0cacc55f43fd9bf58ac71961031f72024832191598ae69dc96b458a237cae0e3a81784a98a1b012530936529efe73d073eaf974f8e1680706581e0accb3a189d80dc71b051474e50cd9d8eaaf9e7be4108be1e7d8e6a89709c50c2d85034f0e158b208a205fc4b30922d0e19ca58e15e46384ec15650ff56b6eaef908b44c4f9d71250fd050ce96acc204d68c09493596ab2bf3052792226d60b684e516e92fa0b1585dffbc309fac46457c07a901e901dd659e4fbe4ec0b327f88b8b8bc689c3f678aac3519ec1f7392936a726b7fe4be534b27bac5a35a55e18fdeb08857850940476c14fa12102014872b81bc5dcf292 -Result = F - -Digest = SHA256 -Key = 3082018a02820181008aa12846ecb9d8b954d2ca0fd3f60826c76d2a98ae615f38f5a662cb6158f17f29050dc6a1bc2f60f3a9db2da6c9b27b8cabe25cfc25d005ad60ce298f6da3415ee0a0a00cd2fbaf1eb67d4fffbe03b2570ab56c10dfee9f4da86c05920993c92c4ac33a246f5102113a258e17736897f981b8b29ae695802fa1bcf9b41a5f1053bd77400a153d1d6efdf4e4c14703a34380da2921deac003b4a7246568527d9e37d0da956766f155d3b9a38ddb747f2706a72268542f594c90e0d2f0ef755f4aa67aa6a25004548c73861c0333597337a944c42f762ca2b54821425477e4e0e2a9b1842ed3f16d68ed31318dc396071b90e1e514cff975d198a581723cc98cb784d18cf197a14dd7b9d5036bd7724b9301f514236bf7c8b290dc5bd93ebb6bb2d18d3fc4f4d480b8d1b62ffa3de1224607976a27d40f912e50b46b915f19556781b2ac88e16c14982a0718bdb4cec77127165bd7151f0181cf56efa1ea345fee075a7b36a02e74a6f3eb035b608cdd2ceda4d738876fbd7ffb009019581685f020374ef0b -Msg = 50930141564ac38dfef23056b5cfd10efcf3bb8823fa6f5254f8ff45d4b0725a86076ac0b1b8042b0248006ed53d224cb08bd78b104f1c4b69bf9c96686118387b7c0cd193cd9028297a7cc27f4ccfb4281852b5ca7e787723d689384a68ff9437db319d86f12e2d7871ec7b3b64a2ed6b83722dd8f14b7f8a260e52022bef14 -Sig = 65862ec1d10c408e4278ee1421e773f49ad426e368a48136d6f77d5a6de96ef4643ef3b8f7b451f9ef9ab4d8590752dd7adf1d78ce23411f3586564b67172ef718e8824d357b37f105dd0e38c0578df14220dbd83588c56c4cc658b5d4b07337ba3e40b40aa6d877aeb3cb95256d25e55b702bdb23026bcf05387d58ce020d359348536f9f108d111bf69c3823aca8655bd73a64789d258bc90b5006ad01c0640118e17aacedbc0545c543df8e05f254fb7d8846703723fadbd4179d4a1a5a7c371e980309d33b2d79061f741aae529d4e84c686a4077d3ffc66a8b18fab2f72ed06a3372efee4507425610d317c74d5566f4829b079012e2e066bacde53e43dd702fae3861eaf2721e3fc5818de552b5a9d084b5f03a451527fce2d3a608028163befb91ccecdcaaaf5cc357bfb698f0860350136b71b4b087b50e2d97a9a6765a6077f1b26e168b5d60b7a91330c3e1769adc479ffd866351eea4cae92609c0431511b91b6683d0d8d4d2a72be8622c7dd969d5977127ca5a6c3d0ef7ff77a -Result = P - -Digest = SHA256 -Key = 3082018b02820181008aa12846ecb9d8b954d2ca0fd3f60826c76d2a98ae615f38f5a662cb6158f17f29050dc6a1bc2f60f3a9db2da6c9b27b8cabe25cfc25d005ad60ce298f6da3415ee0a0a00cd2fbaf1eb67d4fffbe03b2570ab56c10dfee9f4da86c05920993c92c4ac33a246f5102113a258e17736897f981b8b29ae695802fa1bcf9b41a5f1053bd77400a153d1d6efdf4e4c14703a34380da2921deac003b4a7246568527d9e37d0da956766f155d3b9a38ddb747f2706a72268542f594c90e0d2f0ef755f4aa67aa6a25004548c73861c0333597337a944c42f762ca2b54821425477e4e0e2a9b1842ed3f16d68ed31318dc396071b90e1e514cff975d198a581723cc98cb784d18cf197a14dd7b9d5036bd7724b9301f514236bf7c8b290dc5bd93ebb6bb2d18d3fc4f4d480b8d1b62ffa3de1224607976a27d40f912e50b46b915f19556781b2ac88e16c14982a0718bdb4cec77127165bd7151f0181cf56efa1ea345fee075a7b36a02e74a6f3eb035b608cdd2ceda4d738876fbd7ffb009019581685f020400f1d0f1 -Msg = b1fe0c7145b1e35a8062ed24ab82e862a0d695a53a1cc7430af1b9574bf2a40918229110dd8c6c750c295b9911034e79879bd631ac883abf1262c80a98de6923993a78ca63dcd434eb36340bbfecbbb73b39cddc008f2023a27d163ea1d64a269b1068a7bfea431f855121839c8559a2247821ae1e77a1f8210b4cfb4e226f9c -Sig = 43333cc1b7da9710ad7f58a595078672be48dbedafab37dda0e1328e2f2b8b91dc88d2c33e0d8e06fdfa3dbc43e24d827f3ed31a994bf662225e1f0827a205cd638c16f38d664752d73db2c84f26d12a955e237f7a4d171a14d720b43dda3fa728d69ee0ed95869fc231d8f6fffe93b1acb81692ab9ff0f926073280a3bdd4472cba3b84541f1f9cd4508bf780e96c80b4a705c9893639f127969343a1ff9aab2b98d154c7f929fc55a5fe9485d1d9ca411131e5c0ff3fbaef353d49a9f13583cf1ebeea6209c123df32abcb311edc94c04e5eb3e1389e5011499e7d0d5bf66bb69ba7a06586d414b1d7cedd0106259406235fee1cf0b2bb2ce679f247741baecccff27c6e2a3a514d7aaebed281cb6381e7fa8d8a092ef1051b5418fd9886747c9194feab56eb975fe193076b474c2056d20a818a5b4ea56648ab5e7d4ddfdca1238d95da14dbb51e0a72b6df8d4e4d708a18e1828619c999525772400a9ca91c20229b1a979d30fa7bf7e33129abcc8d91f61ff0b8f2042345c27a928b7865 -Result = F - -Digest = SHA256 -Key = 3082018a02820181008aa12846ecb9d8b954d2ca0fd3f60826c76d2a98ae615f38f5a662cb6158f17f29050dc6a1bc2f60f3a9db2da6c9b27b8cabe25cfc25d005ad60ce298f6da3415ee0a0a00cd2fbaf1eb67d4fffbe03b2570ab56c10dfee9f4da86c05920993c92c4ac33a246f5102113a258e17736897f981b8b29ae695802fa1bcf9b41a5f1053bd77400a153d1d6efdf4e4c14703a34380da2921deac003b4a7246568527d9e37d0da956766f155d3b9a38ddb747f2706a72268542f594c90e0d2f0ef755f4aa67aa6a25004548c73861c0333597337a944c42f762ca2b54821425477e4e0e2a9b1842ed3f16d68ed31318dc396071b90e1e514cff975d198a581723cc98cb784d18cf197a14dd7b9d5036bd7724b9301f514236bf7c8b290dc5bd93ebb6bb2d18d3fc4f4d480b8d1b62ffa3de1224607976a27d40f912e50b46b915f19556781b2ac88e16c14982a0718bdb4cec77127165bd7151f0181cf56efa1ea345fee075a7b36a02e74a6f3eb035b608cdd2ceda4d738876fbd7ffb009019581685f020374ef0b -Msg = 89574c2f705f32cafde26824389468218712eae98268588f02d683f17ad494df8b53457fd24651ef0561282d3e20e834960c8968f63a57342a14a6f2375bc10bef6d235fc2c4eae7d7c088985ca6bc8b1ae8c15c4ca7c5d0b1769cbae061b61fdc2e4e98e8e2e5f89c87ef2f392dcc6e3a2ff98c2bb788a9be84cd111ceb5b62 -Sig = 45c1da7fa6d790ac28f54716f23b2d594a637c5f6785e37fec8350e5d5334edceb66c263197702e5e5d543a2a9a6893cec3608512503ca26831d8847c2563c326bbdf3aa5edf7a583d8252e2cf35bb16cf30a0736ccdddd41af4b54729c843b9c675ab33d3ba1e1f7f63d2aa2ec94da2a9fe4eab9036b0561d5ddeb6d3dfecd1e243381de0eed5d41b8fd6023826d3bf4ffece8570e800c1689a57c2987a0f5629dac772c5f40b475ac61524c0308dd7de872d2f2d68c6017992ee060c607826db6f263f3276f330b7d267defe6eb91f9e9ca63e552531869f0b36784813991da6aa930736858146a42eac2b17c3ed2fac55ae3e0c6370b5302e693f84615e4174576150c6454a5c5f7a4f72d03630e899363db71eeb8e4e919ab6d15e87306c626dbcc18bfe62bfb1878a5105cef0f5b4f06cc4b6d7fc12f29e687ea9d0e16b7ca009356a2cda1f7b48b22e43883582cc770803f6c75892174168ac6954c76a475f0bdda4dce703e5d7737f7019a43ac72447b524a6132dde51f925fcbb9485 -Result = F - -Digest = SHA256 -Key = 3082018a02820181008aa12846ecb9d8b954d2ca0fd3f60826c76d2a98ae615f38f5a662cb6158f17f29050dc6a1bc2f60f3a9db2da6c9b27b8cabe25cfc25d005ad60ce298f6da3415ee0a0a00cd2fbaf1eb67d4fffbe03b2570ab56c10dfee9f4da86c05920993c92c4ac33a246f5102113a258e17736897f981b8b29ae695802fa1bcf9b41a5f1053bd77400a153d1d6efdf4e4c14703a34380da2921deac003b4a7246568527d9e37d0da956766f155d3b9a38ddb747f2706a72268542f594c90e0d2f0ef755f4aa67aa6a25004548c73861c0333597337a944c42f762ca2b54821425477e4e0e2a9b1842ed3f16d68ed31318dc396071b90e1e514cff975d198a581723cc98cb784d18cf197a14dd7b9d5036bd7724b9301f514236bf7c8b290dc5bd93ebb6bb2d18d3fc4f4d480b8d1b62ffa3de1224607976a27d40f912e50b46b915f19556781b2ac88e16c14982a0718bdb4cec77127165bd7151f0181cf56efa1ea345fee075a7b36a02e74a6f3eb035b608cdd2ceda4d738876fbd7ffb009019581685f020374ef0b -Msg = a8d283d3e616fcdabe06076c3368e022884108cf569bf363db860010955dafab0f4a0f54fc0c755982f87358d83e08a4136e15ea3d3b1015a87efc6e817e9908a86ed85bbf37912f827878bc56cb4e0f244b54af67530581848804e95b1954321b45c7305a1eb923658dfddfd497182a62dead66fc6b397018aa01c748b648f1 -Sig = 5961403c27cac4677ccde42cb807477e004b7cc795f8e14049e78326769803f852175ad36d6cc08232c168a34e33eeadb7aaee642b6a75928ad303fb4140eebbfc2fdff5a990f8bea12311529cc4575594a56f6d362a6cf8623cf6580eae79525e502c7be1ae71699e2b7916cde5ab5149840ce8db96e839d0d507bcc3d6184ec68a99c30a1b562959d7873027aa491a9dee9094249e7e3e1913f263e05b6d892a8787686baa7ecb9a88e3bdb52a7e45fdf49bb73588173c722c5503bb5864917410da43ff55e85e4df1af4bdd3b913ee5ef8b9f0293ef36641a775dd4f70df95f157569899df3b7f2cf54a5e34575ff9f6ef5b93d00699586a247c2b42ddccffa5c88294b7bfb686970e0fb9a1e7a823a8b16ffa9b5e45726dd3bb015c88307062aab622fcdac7ed30b7c773793d3f7ce326d30535f4bc289918aace1feaa02c620be6cdcde24d694e7936c58c83f9e4bc3dcafbc542afa4daa7be014099173708452817dc1493d3306053e97fd1c258b062a982a5333925472eb004d82d8e4 -Result = F - -Digest = SHA256 -Key = 3082018a02820181008aa12846ecb9d8b954d2ca0fd3f60826c76d2a98ae615f38f5a662cb6158f17f29050dc6a1bc2f60f3a9db2da6c9b27b8cabe25cfc25d005ad60ce298f6da3415ee0a0a00cd2fbaf1eb67d4fffbe03b2570ab56c10dfee9f4da86c05920993c92c4ac33a246f5102113a258e17736897f981b8b29ae695802fa1bcf9b41a5f1053bd77400a153d1d6efdf4e4c14703a34380da2921deac003b4a7246568527d9e37d0da956766f155d3b9a38ddb747f2706a72268542f594c90e0d2f0ef755f4aa67aa6a25004548c73861c0333597337a944c42f762ca2b54821425477e4e0e2a9b1842ed3f16d68ed31318dc396071b90e1e514cff975d198a581723cc98cb784d18cf197a14dd7b9d5036bd7724b9301f514236bf7c8b290dc5bd93ebb6bb2d18d3fc4f4d480b8d1b62ffa3de1224607976a27d40f912e50b46b915f19556781b2ac88e16c14982a0718bdb4cec77127165bd7151f0181cf56efa1ea345fee075a7b36a02e74a6f3eb035b608cdd2ceda4d738876fbd7ffb009019581685f020374ef0b -Msg = b2a9f33308f84f8718e860ee4e439ba1541a985f355c5dabc3a8df343660c69515ff713e5aac3ab2d10ffbf4c163d13bcecc1fed1eebd6cbbbb0f46938704be2983884c96b6063633a634d1325ee0715cb36c06f6a8f5225473bc5ad517f14a201fc34bd843d53001c8d5e34c40bc596130082ce626f582031ee58e6c7b5aa3e -Sig = 6f443dabd187abfeb167c7a76954251cb017b40dcd3c0de81909993fbdd6c99f64613e73aecc29eeb29fc9aab9ec54b55bc3539e0d34095248b5536b35f1a079a4f09ca2e83f51b07ef005a7e0a915be137e1d94ff2b26eda29a337b5b8d8652cb9f98703648a4b0d8c759ba48c1c37b2b76c3bbe116574c1f6265cc19703ce489186e3951e97e0d26230a82cd0b2a24def62b8af8e4962cf4e1a693d0d0bebd6fe45966b3a4e890e0a6f535919661beb109eb6d11e73ee2b97a3dd20074711bd4b817f442866d11c3fbf62255e05e466b36b8ffd57c6abe5592d72061d96435dedc32a822aa342b159ab21a993703b5ee7bd6d55508800b67667188810e062be554244db902947bd2ebc7f9e6c899f6ca1d3ba3a5c2edca8bafca8a5b54426b04a5a16a3c752d18647b578904f60a5dac531c95b0bfc37b7aeddd3c3564d0581f1088e85ed85ca366ef94eeb8f8d06b060f73f20778ae83bb884527fe9bc1a04d6dca59fefdfb9e14d68f97d9fb5fb1045c9a229d3015a4867efe88791554f8 -Result = F - -Digest = SHA384 -Key = 3082018b0282018100b9d8bc1223a849736371b49a5ca907a795cfb595fa5aa4ee94a6833fe0ba2368232fc0cf55debcbe7dcfda928bbae3f9069eaefc5c96cf490cce15585cc084ecb6cb09ef234e295b96fa01305f64494018cc49ebbbdc5ff99a2458a06501f33eac8fa9a69db092b3defa9ec09dbfa7cc36c9b356e05f514df1475b9c272d7ed2b63c37465d1554d0f7fd0df30cccd10f6a3d8052fdeb09fa95f305e421db0888a9276f1d1981f4bab7c2ceb4cac86e26c41fc10766b867f68da4c72d854b18acae0ef7631077b89f6bba28692b2a6e4af219770240c3479fdd4498b9c74416d3f666d245ab333f9ade406f9dbcaa3e4743dc7d210bcd6fa449b52121db40c2f8b3f1376be842806dccb7186811618f9ea4aed979e31e26b15e6497abf38ca47fad10c91d1315469072e0d64ca3b93aa86409f163460e750a86c73240d01f76bf2f7f1b947f22c99ae148673de8a3dad1ad34ecf33f1bd4f08f0cb7ea1e5cb62de9ffc98a265afd68c3bb0abc1ef12ced048be9ae9245b89f6c7733185fad0159020400c31179 -Msg = c084bf63aca6e6917b6b46a4ea65bb59cfead64d6415d21de30ecacc538b2a65a19764e1f293e44a387a45210369c5fe9b5ef6764b3fb741ff1f639c12be48ed614e5ba6a47d296bfeaf1177d28bb13cd9ba9e4971eb5871381b7d2ada133c3327320d7a696c9f3cf493126efed5675cb18735907f219df5b6897f3c5494ee7f -Sig = 3e81c4d40bddfa8fba559459acd314ed43381be13637b35d1f3856a3c881937e7338cca224cbe3fe8464eb0c96944a419857266bd1bbfb6fd5b156bd735f4a8642d96e40902a47f4302ab151825ba5b63d889ec54fbc100943d9b09658eeb654eef21f2168dfad01d2c02733fd192512ad643808fea2b1af43e10ba60c65548c82769df02c8d6cde973c24e9d92f31fc54be94a292ff2ef77cbbc53e970242acfbc40692a745208bcf96bffb862e1dd2ca3b90ae6f8be53fbc5899af6c7b4d1fcc530a34fe0856a0645181af615575efa02833b853775d252233f4c2e4bb515732814594ab2a82ba080e2db520fabcea260084627bfbe01af01e3774f3d8a6aaeb0cd80c901feec45d4eade1cf66cc878f190d3229b2df5b227dd4e03125a9a6d83a1580c0505e4a785ecb698e1ed0c83a2c62b48e3b44d3fc441364e5a8bf364a937e5303d16244bf016142d9841c04a52a8b3eebea3334c8b52108c7a62999801c840e98f30eca401772fc6b8462fe17c0ac75928ab068a16d5536df11170d -Result = F - -Digest = SHA384 -Key = 3082018b0282018100b9d8bc1223a849736371b49a5ca907a795cfb595fa5aa4ee94a6833fe0ba2368232fc0cf55debcbe7dcfda928bbae3f9069eaefc5c96cf490cce15585cc084ecb6cb09ef234e295b96fa01305f64494018cc49ebbbdc5ff99a2458a06501f33eac8fa9a69db092b3defa9ec09dbfa7cc36c9b356e05f514df1475b9c272d7ed2b63c37465d1554d0f7fd0df30cccd10f6a3d8052fdeb09fa95f305e421db0888a9276f1d1981f4bab7c2ceb4cac86e26c41fc10766b867f68da4c72d854b18acae0ef7631077b89f6bba28692b2a6e4af219770240c3479fdd4498b9c74416d3f666d245ab333f9ade406f9dbcaa3e4743dc7d210bcd6fa449b52121db40c2f8b3f1376be842806dccb7186811618f9ea4aed979e31e26b15e6497abf38ca47fad10c91d1315469072e0d64ca3b93aa86409f163460e750a86c73240d01f76bf2f7f1b947f22c99ae148673de8a3dad1ad34ecf33f1bd4f08f0cb7ea1e5cb62de9ffc98a265afd68c3bb0abc1ef12ced048be9ae9245b89f6c7733185fad0159020400c31179 -Msg = cba095c8a79360b72e4a9f1211fbbb6f267852c4180d8a6f5eaca67a6947d71c227e5483937aacd0e4195b648a4b9c5abbbc7f5425b33b7bdf3ac5c1a07fa26a2f7af9ca1ad0ec50abf728c3189bbbccfa4127b5002bb470e57b0adb9f9bfe42dadbad25a45cc73c6a2e2eb923b5c0cdcb51706d133d9c5657b89b4fd06395ae -Sig = 1390587a993b5f01af71c53023b9f1746268dc1486ee3466f66e34b02173781e8a9f971dfd1a6095f0a4ebe18324e79cdec45354822213a9d7efdb529abb6d1aaf8c86aba3f786f2412e1af6f392a9b2143f3c805d7b703e5a95ccfdcdfb4f2386766c99b99d90ec9217608ae513bafc062f3cf407a3bd684ed82b7b484e18a9ad507f75b066fb297bb19b1b092fd3741742f06887315dad3c30e3e5419caf0ffd67eeb9e986dde031968415cf33670402d35ef14f880b6d9e6cf7758497923c8575754ad3f9f7fda41a4e6021314cbff1a7f5b2799935c476e55458b2bbd61a32638eb45708d91af75723b5f4f4fea15f16eba82235f8c6f81d27c02242c5ddecfa5a206ae6b1e348c06a03f197c9a0ea3654435798abdf4908016709ac1b0cb6368b893b02a8aee9096dfb23897bea35ed7ba5cb897f50a6023e6d42355354545f43b1b8af8aaab8fed275efb57323e8963d32b1d600b55d5f35b52b1b0c937691c322cafbb32a54feb84ef38e221c9b00a80310ea3a1ca6e713277e6bc127 -Result = F - -Digest = SHA384 -Key = 3082018b0282018100b9d8bc1223a849736371b49a5ca907a795cfb595fa5aa4ee94a6833fe0ba2368232fc0cf55debcbe7dcfda928bbae3f9069eaefc5c96cf490cce15585cc084ecb6cb09ef234e295b96fa01305f64494018cc49ebbbdc5ff99a2458a06501f33eac8fa9a69db092b3defa9ec09dbfa7cc36c9b356e05f514df1475b9c272d7ed2b63c37465d1554d0f7fd0df30cccd10f6a3d8052fdeb09fa95f305e421db0888a9276f1d1981f4bab7c2ceb4cac86e26c41fc10766b867f68da4c72d854b18acae0ef7631077b89f6bba28692b2a6e4af219770240c3479fdd4498b9c74416d3f666d245ab333f9ade406f9dbcaa3e4743dc7d210bcd6fa449b52121db40c2f8b3f1376be842806dccb7186811618f9ea4aed979e31e26b15e6497abf38ca47fad10c91d1315469072e0d64ca3b93aa86409f163460e750a86c73240d01f76bf2f7f1b947f22c99ae148673de8a3dad1ad34ecf33f1bd4f08f0cb7ea1e5cb62de9ffc98a265afd68c3bb0abc1ef12ced048be9ae9245b89f6c7733185fad0159020400c31179 -Msg = a855f314f00f48cde12b6f316f9922604622960e60adaee1d6bb6f1af635b47897672259a94c5f23100c7fe2b3c3bf33cf847660929e48cce51d9d9289945169651aaecb1e939756e93105729d3ab8340d0b2682945db878f1c7350b55847eecbb777daf786c582d13a1ea275685732ca5bf8ebc8f7264ada3bf20ce858ca3cb -Sig = b360ac35950b6be6d9b9b604af60cfa6716a23a7e9c556cc2f3bc9b298cd8605a28225dd6a0aaf135fb56c1dad09b0481e573565bd13d6fcf8fd3f73ea12912ed4785093e3c12864e1d125c41ff4b30af81c6ddb4d9a722cda98e1095a2eab53a05d22ac1bdec2687c3bab14aa83ac9448c9544b685ef92f5aa3f02a2b8b7cf4607c68169e6c5d9bb4bd8a29beb2a2952fa02d172e3120f414a37de6ebc2f2f7176894938beff3666bfb852528841d9771708fbafd61a3f1410300b77b5efb7e682795f290fa0a469cc22cadd7e188a6a41c9ff25443850f749df159cb5748e071df8b5e0ff0e7d1517d3bf4e4b51263f8f76ff1e8114ebefc2b33dc3699870b29ea68853ecd5e6faeff01bbe8ea1595273ef6b0f0befc2d2cbe8b8c3c7f6a45aa1f905624d71bd649c85797a337ddab8d7b67feb3fa681be382f88b11eda4a0883e55c71bb452079f32ba8235888fc82b339efc574521e80d185e271bdded1df25acf2fca5acd1a9cf26ca30b71bb44ab61fff382ae7274669d5baa20d02a6f -Result = F - -Digest = SHA384 -Key = 3082018a0282018100b9d8bc1223a849736371b49a5ca907a795cfb595fa5aa4ee94a6833fe0ba2368232fc0cf55debcbe7dcfda928bbae3f9069eaefc5c96cf490cce15585cc084ecb6cb09ef234e295b96fa01305f64494018cc49ebbbdc5ff99a2458a06501f33eac8fa9a69db092b3defa9ec09dbfa7cc36c9b356e05f514df1475b9c272d7ed2b63c37465d1554d0f7fd0df30cccd10f6a3d8052fdeb09fa95f305e421db0888a9276f1d1981f4bab7c2ceb4cac86e26c41fc10766b867f68da4c72d854b18acae0ef7631077b89f6bba28692b2a6e4af219770240c3479fdd4498b9c74416d3f666d245ab333f9ade406f9dbcaa3e4743dc7d210bcd6fa449b52121db40c2f8b3f1376be842806dccb7186811618f9ea4aed979e31e26b15e6497abf38ca47fad10c91d1315469072e0d64ca3b93aa86409f163460e750a86c73240d01f76bf2f7f1b947f22c99ae148673de8a3dad1ad34ecf33f1bd4f08f0cb7ea1e5cb62de9ffc98a265afd68c3bb0abc1ef12ced048be9ae9245b89f6c7733185fad015902037fd99d -Msg = 52b8858ed4d0a638f1694e25ba9d40dd27d5579f0de71ba54a8292a842cc59a79049f2e5f5ff603194d8f16962475c41d82e0b41eb00ba0d3d2341e99598ae7c8ddd97d48a12afabf15c96e99887f66a7befcb00b1a002bc9ebc4669691d175ab03c1c667b51ba306fbce5ac45a436de7ade3ee547101b39d3164831a8a4bac8 -Sig = 4ffd27f815873946809b20af5e752506c39c881dad1e61ef880a245755ee35858578bb2bf826ab8adae135cdee5a132d3d5d02d4dd4af4c530447b4ee8911f57d29d1c88853cb415e0c9d041a30593cfd7f539a4450c4016f629d4d723450ca869fc247fdab20d2d34315d7292584961dff6e8726a1515c1d0f0ed1eb7ad902d940f1513d3c9188cd06ea8562ce5a288b501a80110011508c4e1e575c0dcd7fa9a7df22bc37fc6ab2183b0570fa5b53c583ebfc414b412f14ba2eba86e996660ecec5d2cdcf4a408b84f35718115237ae3e6ebc7489ad754642c25c2c60dac66379ebc1e4b0fb7ae3e8a5afafe83e2119269ae04465a55562dfe8f2139b2cccaff2668cc9805d15f0a8a159ef4d9a4f4f6a1ff8f6b272cc317e7089a8b9ec056978e7c65e5e8a234b1e992ff9b279852ddf70b5b8a3ce8ee14ba9b7a1ccf7787a9ea8c97fa872d0c7b29002e4548ee6bbd7878d43cac68ad58b37ce0310d37b73342033e98d4725b629ef5400cb389c95356e893259a7a2aadcbc735186274b7 -Result = F - -Digest = SHA384 -Key = 3082018b0282018100b9d8bc1223a849736371b49a5ca907a795cfb595fa5aa4ee94a6833fe0ba2368232fc0cf55debcbe7dcfda928bbae3f9069eaefc5c96cf490cce15585cc084ecb6cb09ef234e295b96fa01305f64494018cc49ebbbdc5ff99a2458a06501f33eac8fa9a69db092b3defa9ec09dbfa7cc36c9b356e05f514df1475b9c272d7ed2b63c37465d1554d0f7fd0df30cccd10f6a3d8052fdeb09fa95f305e421db0888a9276f1d1981f4bab7c2ceb4cac86e26c41fc10766b867f68da4c72d854b18acae0ef7631077b89f6bba28692b2a6e4af219770240c3479fdd4498b9c74416d3f666d245ab333f9ade406f9dbcaa3e4743dc7d210bcd6fa449b52121db40c2f8b3f1376be842806dccb7186811618f9ea4aed979e31e26b15e6497abf38ca47fad10c91d1315469072e0d64ca3b93aa86409f163460e750a86c73240d01f76bf2f7f1b947f22c99ae148673de8a3dad1ad34ecf33f1bd4f08f0cb7ea1e5cb62de9ffc98a265afd68c3bb0abc1ef12ced048be9ae9245b89f6c7733185fad0159020400c31179 -Msg = c59a84b7b6a11b30d6e4ae9f4d745ac2b122ff0787f0e7a107c5a8db20654bacbc9fad8c45c92687686969901935ab17d73e08de31682208891d0b7318426547326ac7cfcb4a63883b6ee6783e2aa0c13fd2e576d62db3ad8f2894d6edc8c64bae629a28510e1a5cd659ee00c53a81e871485f787e29e2b9a14e0daca7ddb8df -Sig = 7ae1169c0d774fa54ced1d2cafc75f64d46a0f154275191580feae3c043b1fc84ffb9f39cdcdaf2e76170da8dacb51c9fdcd3ccc4966911576823dc2a312afae8a502b6ed879a51a9be3a7eb8fb7f0ba96203722add0d8edd2d1267fc74be56b1bd3e42a24df1e05c5ac2f576713fafe6b105fd403589dc6c8734b07d6650c12d215b2378ad63601c4edfb7f4e6a5951112b7e9dab5da98c863d2f373def298e408110da2e21b32fa1f942df85457dbd8d3e0b86e89547471b86f27df3c1e361de5609b78771557a859901b8e2310cec7af6a889c9bddc61c77293ba455314375ae731a12589353fc31104613f51384cefd8eb83b465cad5ad275e64dbd252a1f602afd2ffd8f50216d5ddb17fbf9bc30325427ad02cd525e87744c4a048e51dad778224cbace8fca7228df229b3a9e84777c2b4d0aade9c831f51005ee51b700e10efad61099a4a5c1516c85d2851f42660290aecdf1952a189681fa8a74682002b69318b9a404973a5f139f2a6594a8e0a8cc14033f27400c9601d9018c363 -Result = P - -Digest = SHA384 -Key = 3082018b0282018100b9d8bc1223a849736371b49a5ca907a795cfb595fa5aa4ee94a6833fe0ba2368232fc0cf55debcbe7dcfda928bbae3f9069eaefc5c96cf490cce15585cc084ecb6cb09ef234e295b96fa01305f64494018cc49ebbbdc5ff99a2458a06501f33eac8fa9a69db092b3defa9ec09dbfa7cc36c9b356e05f514df1475b9c272d7ed2b63c37465d1554d0f7fd0df30cccd10f6a3d8052fdeb09fa95f305e421db0888a9276f1d1981f4bab7c2ceb4cac86e26c41fc10766b867f68da4c72d854b18acae0ef7631077b89f6bba28692b2a6e4af219770240c3479fdd4498b9c74416d3f666d245ab333f9ade406f9dbcaa3e4743dc7d210bcd6fa449b52121db40c2f8b3f1376be842806dccb7186811618f9ea4aed979e31e26b15e6497abf38ca47fad10c91d1315469072e0d64ca3b93aa86409f163460e750a86c73240d01f76bf2f7f1b947f22c99ae148673de8a3dad1ad34ecf33f1bd4f08f0cb7ea1e5cb62de9ffc98a265afd68c3bb0abc1ef12ced048be9ae9245b89f6c7733185fad0159020400c31179 -Msg = 601f9b9b34cd3fe2fecf6244bb33a668c00aacfb5e76d95cbf045a98113c6598e677c299dbf18bdd781f30a05843bd4e8a3d60f336a426f3841505fbb9cb1f37a47045c63833ba6b7a1b3a859e9b3b416c66730ee9849a5134a6715aaeb703975db32b0893bc56f3ca6b8ad9d364a8a8302dee32be40bfde975ea79e36279a21 -Sig = a7f140de7666dd42f10350ffed86802c528fb6062bb7f2e1544622191dd93f337d2dc831a7885c8f96a22ed4b318865b73d9a38b994410ec4464fd6e3ac496df6c8184382a633240ea5bd6069e4d6a1789e230ed38eb46f117b286ff7721b7463d1a7a4d7e2117a5902ef1a51977f664b81524c2e42a4618acd8a0c4a2af1e8a454dd229f435159f36b132a1579d922a5828272a776540ae827adec7aa8e5d06703956f90c0a5351ebee317b3bb48ff14ce392d48d59c819c6111b37914be142038628416209656709a084d963fc5e213e0847eca013c83f4f002712ecaeac83d3224af740c764bea479633527632324745aefb28b87080e16e1febd5c435e1a5e17245ce65fb049d01706f3f5682f7e8bea9bdda372ece37a51fbfb611b8fb58c06d2c0ea37a6988a716fc6e38da4e09f66c2f745e1b51180e37deed1cf6bc7cc5edd6e149489cfe0045300390280ff940d762e0d866f5f9da73496d666a97c9d2f4f69ee3a51b77641e7faafc409d03be7afd79649eb293d61069b4479ab6a -Result = F - -Digest = SHA512 -Key = 3082018a0282018100dc09c7fdce01962419294bb4e9c7896347d9bbfffab1d7f35b2e36671d7766a4a4a6b16e8bc12adba6503d4d967efe51e89be652d42b8e7b1b12c0ab34d00997b72a5ab3859bd7d414c72e2997521384fc0ce01f2488f443f1afeb043b14099b3b1efb0154020ff10c50eab077e534270cee6e95fd9352c2f70350c0103a252fd041f9583b67bd92d5d712c21d6036834392b72e622fc0f3d3e1d1c09d512fc6486e7f5465999dffa16e2c5e3fa25267d8f52dd639c84af6bbbb76afecba35b8775ff1cad59e8280d73cb3fbbdc084a60429f7dd9bbe9198d2c8351c27c4ab61ab68d54e9222ebd9177550439a5b5b9ae13c49467aefc41afe435f0dfdaef913238a1f6ecf4692167c19357a2625b06942a5c5856100a6c9d66fb4ee37173fca4ff9298d4d4ba558aac53a75f14be641b1701550fc2a1e2cb4b2c734d29b266cde310888397ac19667fc577422c90a897c3b2e65ed62cac471595b18bb124501a663b093d1161d697f9df6bdb151bc9608534a25f983b14117505040fb481d5302035a75ff -Msg = 32e5485f4834ecff046b3f554de9f9d02aa8f95b2812d0d4fd1683c06a7a8d3d667324377873bddf6542d2590b50e3b58d4abb21b0ebf45d8515bd6f4920db978972ee85894ff6cae7f3158d7cde977f83702f11fdb583e45482eb803ec1764ae4092fb044729ea7d3a79157673c1c145542de91d6198650b086965d1205673c -Sig = 4f8d07925bc0ac7e423a824b1439cdcc486e9612f54c93f5d4fd34f64ad67369b172388e06da52ed100d278c77d6efecd3fdaf56d0a572dfdb978b9449d90951494809c2e88b4a25cf879967659db47dbd43656182958dfef8bc9c54c3a4d62fdb48066735ef5aa39cf89834e479a99e8d22700d288abadcbe28c6667e437515bb47c3d1662d9556ad98abc81bd1ce1b8990155c369ef3827e631164ce8d710c193246bd625692086d0e7f239ce3aa9d6b8d6a5728c64d24992465935aed196ab1715f88bc36118c52ba3cf48cff4e61fa0080282645cde0fbe9493150752093054f1f0889ef7a55c5814d6cf667913cfce4aff2941d1999dcaa5525bd497909839223759c62fdb1387dd4c84f72a32705ae7fa14512af2d7002b315c8c183f0bcaee254ad976270d035fb9d2f4cb22fa2e8a2535d9f345511b22391171aed821e754922b2f6c797debc339264fb28a9788a1d385f99a0333ef388113be22c7b93e18cc80b3a91d6dbe9dd46587544eef85335030a70ab73283e539498f2761e -Result = F - -Digest = SHA512 -Key = 3082018b0282018100dc09c7fdce01962419294bb4e9c7896347d9bbfffab1d7f35b2e36671d7766a4a4a6b16e8bc12adba6503d4d967efe51e89be652d42b8e7b1b12c0ab34d00997b72a5ab3859bd7d414c72e2997521384fc0ce01f2488f443f1afeb043b14099b3b1efb0154020ff10c50eab077e534270cee6e95fd9352c2f70350c0103a252fd041f9583b67bd92d5d712c21d6036834392b72e622fc0f3d3e1d1c09d512fc6486e7f5465999dffa16e2c5e3fa25267d8f52dd639c84af6bbbb76afecba35b8775ff1cad59e8280d73cb3fbbdc084a60429f7dd9bbe9198d2c8351c27c4ab61ab68d54e9222ebd9177550439a5b5b9ae13c49467aefc41afe435f0dfdaef913238a1f6ecf4692167c19357a2625b06942a5c5856100a6c9d66fb4ee37173fca4ff9298d4d4ba558aac53a75f14be641b1701550fc2a1e2cb4b2c734d29b266cde310888397ac19667fc577422c90a897c3b2e65ed62cac471595b18bb124501a663b093d1161d697f9df6bdb151bc9608534a25f983b14117505040fb481d53020400a1befd -Msg = 6de2659492e82a0541143765c7cb73d457c9b695b608231137e3b81fe97b23820f5ad7b3d05660e230b8f3373f9e4a5d909eaf41edac5617493eef9ff6ae7ca619df60cf5a23b993e05cf0877c628fdd24a5522ea4148077903d7b617db596c570ba286f9717df22374856dde6dfe95dfa26c8e341064a37f32784ede4591be7 -Sig = 1ae7122bd67306b4f3d0c3c25a6d3f3318b8ba13c64267f1c4264eeb974131d51566fbc71108873b4920bd48bccf493558b63ded97441cd674a3f020e1fe2fd09e093a18e654a4a379443394e540a53f5c24d67cce5f15be955c446ca872b2505a3b07be1fec5847261e76cf708dcbeef8db95a6fcc87bced3f7cdc1f524616fc0539df58075f818608fc38809ae8e489a35d186c8053f9cc26e869866b98347f888f701635df245248f29982efb7b05e80787cab12cdafe54d065b2ae3e0bb3a03ad0a727d77f6fc3cec60a32c5af590983d08b0d2d0a51dc50f3a6bb2f9786d6c77c37a32c917b91f5b29c65a6911a6638222256ef04b4bf76269f846db847b29d9edccae04effa28e357a76499389b831d5e8dc7c42036bc4277a71b4bab0edd152ccdbbddb8957a3bdbbaf1e4cbfb2b8af678ac7706d16ff6bc40c4e8fc4cbb30146f66b8e035363c935c5c72d78fafe2c8ddd4f0793b98a71a6b7ff6b6892c7ec193d1076fc243ac061801a72cdb78ba2f1c34881c6212af2a7689ecf51 -Result = F - -Digest = SHA512 -Key = 3082018b0282018100dc09c7fdce01962419294bb4e9c7896347d9bbfffab1d7f35b2e36671d7766a4a4a6b16e8bc12adba6503d4d967efe51e89be652d42b8e7b1b12c0ab34d00997b72a5ab3859bd7d414c72e2997521384fc0ce01f2488f443f1afeb043b14099b3b1efb0154020ff10c50eab077e534270cee6e95fd9352c2f70350c0103a252fd041f9583b67bd92d5d712c21d6036834392b72e622fc0f3d3e1d1c09d512fc6486e7f5465999dffa16e2c5e3fa25267d8f52dd639c84af6bbbb76afecba35b8775ff1cad59e8280d73cb3fbbdc084a60429f7dd9bbe9198d2c8351c27c4ab61ab68d54e9222ebd9177550439a5b5b9ae13c49467aefc41afe435f0dfdaef913238a1f6ecf4692167c19357a2625b06942a5c5856100a6c9d66fb4ee37173fca4ff9298d4d4ba558aac53a75f14be641b1701550fc2a1e2cb4b2c734d29b266cde310888397ac19667fc577422c90a897c3b2e65ed62cac471595b18bb124501a663b093d1161d697f9df6bdb151bc9608534a25f983b14117505040fb481d53020400a1befd -Msg = d9fdd81eb8d725ec727cf671386e9c4d7968b23e4d37a39414cb6de55a8ea401fff5b92894547c7b07f6e0b1836dfe0b92275d8a8542715f15a161a34a400e489cc450505957823c46b242c8897b72d5c6d282a78927f250e44e126c59d50d0ff99525fcce87401877d9a41e1241ff935f92aafd218d2e50c8f908a94ef6a93e -Sig = 9658a72570e4ee228863702a79115dd33a0d562762306cc603ca2c480aec784df73a32c067400e5539c68e34fcbac59457b0d89e6eb6faeac716234cae40a5a40593be11cbc9100280663007ae815d4515210f2f6220a09582fff1c085ae1dbf7cfa9ecbd3113b0f1803c47c65893e8cae0802177aa0a056007bf2863298cf172425c61d4798cef950e632f1f6d7618521dbd7aafbec3cc3e41c3f4bc9e80e437e71b4d6f924b15509cb355fa2d9e91176b861b81e4eefee72e988e7ed8e4eb7b93c4ea35c28332aac9de918e49a7575473d9cca1f117aacd06618a1fc9e1c6c6f8a7b0d4cb5d04187bfe930e4fc5a080ada4888e6aa5dc3e984c7841a225c50fae637369150863294ce5c0398a0c7d045098c644256ddea27b63b921fd87f86ab719962b71b5d8582a91f762cdfe3b1b2c714dda16dd91155fc9b5be378bbf2635997ad8effddb3869bf0cddbc113cc97d67fd69ed4b7884246cd18f0ae3a63c2db35ab7cfa4b73777cd8e005d6e222215a4d8818bd6426c4adc9b1c69565a6 -Result = F - -Digest = SHA512 -Key = 3082018b0282018100dc09c7fdce01962419294bb4e9c7896347d9bbfffab1d7f35b2e36671d7766a4a4a6b16e8bc12adba6503d4d967efe51e89be652d42b8e7b1b12c0ab34d00997b72a5ab3859bd7d414c72e2997521384fc0ce01f2488f443f1afeb043b14099b3b1efb0154020ff10c50eab077e534270cee6e95fd9352c2f70350c0103a252fd041f9583b67bd92d5d712c21d6036834392b72e622fc0f3d3e1d1c09d512fc6486e7f5465999dffa16e2c5e3fa25267d8f52dd639c84af6bbbb76afecba35b8775ff1cad59e8280d73cb3fbbdc084a60429f7dd9bbe9198d2c8351c27c4ab61ab68d54e9222ebd9177550439a5b5b9ae13c49467aefc41afe435f0dfdaef913238a1f6ecf4692167c19357a2625b06942a5c5856100a6c9d66fb4ee37173fca4ff9298d4d4ba558aac53a75f14be641b1701550fc2a1e2cb4b2c734d29b266cde310888397ac19667fc577422c90a897c3b2e65ed62cac471595b18bb124501a663b093d1161d697f9df6bdb151bc9608534a25f983b14117505040fb481d53020400a1befd -Msg = f5277358fc0e0ed9c50e381423ff803035d7107e961281ffd557f42625585ede55fa23cf02b6e7dd0b3ea0f24564f0fe7038b33c6a71d4b6a30f640bd13eed70e57c03f53dfe1d0a1b50a341563d48554fee9a6c2756d7992fcd03a5a0fa370f8df73c5115b05965dd8c6888be502f3eba40ee96358735af61d8f87bfb56e5c3 -Sig = d261372ba60cd5812e0230d6103e1f9a777b77f8bc9de3f27bcb3d32e23a60f56f4631350703e200ed9a97d3e2d397234576c5f5c1a347101f62142cca0a53ef9e2b22e724c9d02e5bf4fac684e2803e95640fad841aef7626bd6ef22e7a97ffff31237a70118504ee8bfa0f0e71fd80b195e8221a296d62fefe991e4be69785bad174ab44728605a3d1c41918d33a60fd5a002465ba7b02341c30e6b058b47cca3f5c8a289f5ea3401c2dad9b32ca2f3511538407fa5c03045528e977ce46c8dce655f445588d4a1cb8cb5d76e84776ae86344963b675a3428ca717e4f940ad29199cbf87d27334eab76b878bb015143bc2537fde09a8aaf2649ed29a5d09570959f011778677177e4624e0ac7d9146a2493d5d1299a408b1383ba61df26415d64bcf38e1441c4e0123dbc5ce22e7e077cf9eba5d632d308c23654f0453758a984700097044fe48c61f1873e5a3274c7d5cc7d68b392e26007a534cbec0167760adc5f8b5fea3e2e949e963fbff9ed89e844a3ff2e145d7b4b1193f724aa014 -Result = F - -Digest = SHA512 -Key = 3082018b0282018100dc09c7fdce01962419294bb4e9c7896347d9bbfffab1d7f35b2e36671d7766a4a4a6b16e8bc12adba6503d4d967efe51e89be652d42b8e7b1b12c0ab34d00997b72a5ab3859bd7d414c72e2997521384fc0ce01f2488f443f1afeb043b14099b3b1efb0154020ff10c50eab077e534270cee6e95fd9352c2f70350c0103a252fd041f9583b67bd92d5d712c21d6036834392b72e622fc0f3d3e1d1c09d512fc6486e7f5465999dffa16e2c5e3fa25267d8f52dd639c84af6bbbb76afecba35b8775ff1cad59e8280d73cb3fbbdc084a60429f7dd9bbe9198d2c8351c27c4ab61ab68d54e9222ebd9177550439a5b5b9ae13c49467aefc41afe435f0dfdaef913238a1f6ecf4692167c19357a2625b06942a5c5856100a6c9d66fb4ee37173fca4ff9298d4d4ba558aac53a75f14be641b1701550fc2a1e2cb4b2c734d29b266cde310888397ac19667fc577422c90a897c3b2e65ed62cac471595b18bb124501a663b093d1161d697f9df6bdb151bc9608534a25f983b14117505040fb481d53020400a1befd -Msg = 4ebfb0c3c540ba37f357cf30a2bc9155305d091f7db0a3d608477abc54a5d6889150f3157827055c77f678a00e487ce8797cc1b28f1b7fe6ea69ba09483ac4b331070343da41f4d14ae57064bb512f6543568a54b38e85bac0f00c5f60a17dbc770d67b3b337927eb44d3fe67180b0b5d713eb6db3b1bc3ad103f9266582098c -Sig = 6c640306e33515434ee5723d46bce72dcb4c5716311c9ad1d0182987a3090c1b4de97bf8c7323cef9f7d36fc0cc929b2bac1e7f6b1456409f51656b9ac3b9290fdf7910f28a2d0f72e56c94b1d1e5a76daa35e62c93e373b6c6b4435dc1394e131af3c0658e41dff438208bf6b159bc54f5dea67d04e0f794a251256f915e8f9770815c8d89ba123e0c057bf5286e95f017e65492904975b7d493286a634fbf3163a18adab3caaea230c2766deaf36243a37085377f3db5f091cfc707805cb8a9999a06eb3b931bbce312bb2ff53230fcb0c920a816164afbe947ef666617e39ac521db2156631b0f1ca24daee37a521e938be66d36a8819d2c648db87914cb7c7db43ce885d1db4b58b99b3c0a35af19c9cc4e0af21db9d133cf7a2699429fd06faeb3365e18cfe8d14295584167ce708a047b2eb3ab1c25bd1089c4fa5f9ace5ea02a8e7a5f170c398940270405eb6fd2382733247f4c3faca94b368d9e104668854bd3b3db5a5c8e9f63e5547da813ac8ae5b020013280287832703af91d6 -Result = P - -Digest = SHA512 -Key = 3082018b0282018100dc09c7fdce01962419294bb4e9c7896347d9bbfffab1d7f35b2e36671d7766a4a4a6b16e8bc12adba6503d4d967efe51e89be652d42b8e7b1b12c0ab34d00997b72a5ab3859bd7d414c72e2997521384fc0ce01f2488f443f1afeb043b14099b3b1efb0154020ff10c50eab077e534270cee6e95fd9352c2f70350c0103a252fd041f9583b67bd92d5d712c21d6036834392b72e622fc0f3d3e1d1c09d512fc6486e7f5465999dffa16e2c5e3fa25267d8f52dd639c84af6bbbb76afecba35b8775ff1cad59e8280d73cb3fbbdc084a60429f7dd9bbe9198d2c8351c27c4ab61ab68d54e9222ebd9177550439a5b5b9ae13c49467aefc41afe435f0dfdaef913238a1f6ecf4692167c19357a2625b06942a5c5856100a6c9d66fb4ee37173fca4ff9298d4d4ba558aac53a75f14be641b1701550fc2a1e2cb4b2c734d29b266cde310888397ac19667fc577422c90a897c3b2e65ed62cac471595b18bb124501a663b093d1161d697f9df6bdb151bc9608534a25f983b14117505040fb481d53020400a1befd -Msg = 6739c2996ed518592cde7619a0a5f361c09c51c36a738c189d80af0ce964ebdd24ecea5f5f3561441814e59ab2b4ff952281828fea451c4d4b912c84b65fd39b85f54eb3e80d83e52232d9caf56d4d415a21c36c763499fcca6f82afaa289216f01e959cf1a4a5c4b002fcb2521806edd244ba63f6862bae82e25a95ab064fd6 -Sig = bd4e9adfdf12d10d9de2d3c1d5324cd2048a57e0cac12ec5cc054f2f4c974b5c5dc3e8aca34a2a7d2907d3b930faaeb194f84fb6a9e99a2a7762346545f70bc384181b0213767f2a7381565cf4a17f3fd52c0d107b12d964605b576f2779411c38129a99300c902c28336ca76920b6c8e52e1c366fe92afe8c7c0ad93f38c07a9fd83926c1e634e026dbe67ae1f3df76a9bf6c75ecf6ecd660e68b0bb571028504bf233443e238aa573727713d659bc1d15171baed4d962017ab5689ef894802a65b4d522bf3b377aa2d3a42b718c8c7f205cd4c9c4d12f4fb2657bab0460c22737a5ee6524e96430493610178f19eb3750cb56f27e6088d26424ae13e863f410c7505899705168015e14ee1c5a1d4112b097f1e0f9dae32f64b75e82558f8f41bae65ab7cbfc400cbc1fd45601b53d26abe2f53a6ac660a7e940584e7fa90a0b8c4d906c46c4bb3a6eeed2327ac4409fd28b77b24c98e5c5f14a8e3678f965c46b455b02d7d0d58f24daf5f7b03362554d6809da7a90a3da53d81148eacea68 -Result = F - -Digest = SHA1 -Key = 3082018a0282018100d7a6b5b175afa3bb18fffeaee645a096d8ff28cf96e13dce6d753d3eef4c0cf605dd06f0d25d208da216eba09b3e7e59b304210e63118c5fbc3185f1b845d18bdbf113c4d65ad2880bb2a5eb5b4e7210df30296a4ed6cbc637595318e72e2a6439e4d244d63defad0d2a7d5c06518b0981fef4c916c533f3495c098b40254724fc5a44b0f1d23c3a275466100eb39de3dff6dd48e8322ac2251f3b1f09ae8e6a6136645acbf358e7baa89bc515a12e78cf0f6c9e257b816be1e7a3098b9c1d3b47a4c955b390dc576cca2f9b391b61af5e0eeba21addbe728c58eceb8e018573962ae069f91c538e3161e5765db7e15b352ba3978edbab3071104353d122024e1f3e31f6337dddaae90a2a646074b5691b95b7d82429192c897598a00d67639c326922407002d49432b3cdf84c095c021c4dbe53f7fbe80a497f75991d195122fdb672c67fc973626583202c8230a506f251600ab46435acf51ef6461bd55d0c14a76bb4f1c0b7e3c1affdf21dc8e514c2e8732779e62c3f1fd8626c4b80c68302032fda05 -Msg = 711cb316a158e229d3c4d2f5d6c7e5aa29b4ade40e95a188df2715eea5256946e7c98034c09173be343f8768c4235d9d409c6951dddda5e588ed874b79f1306a0aaee6c4ca4ac456cd52b0bf47028ea559c0b3552be99da93bd0e12ff504648783d2ce0de60b3cb94608364386eae08a1c2674362042ef9ca2d90be341e56e65 -Sig = d3c03e8891632b8fd169dbd4ef4a51f207ef89b50dffbc23fa2d941491d8e185f3c743684677df40b18b0d8cc712ae61a3027ad5be4725d6a8e7b242b2139494bbc5c59a0122b26e0f9afb8df76db8dfdce8e9d2c38818bb0140a41f9060bf23e6ae364220eb56e3a62eaf966873c14dd82bec57876d43d1e07197da109fc009ab8b45e48ddb7cb1ff34ef3fdb3f4226eea8597c5c59ac573d15183489ee52db3af1c13feddc9357722978e4172a3bb26bf2b2b537f121295c00151e1629e28cbddd7957a595cf5effa365dba30698d8049d4701a4dcf03e9bf53e4ad449a7aed4abb6cf65ebd33cbf763fef760c1fe178f5d748fe37292cef145d61cee1dc02bf1655516a5de3168dfbbf4136e6351d3b8313ece067edbe34b1678ea34387636506192384489556efbd133a9912d51780d7fed8662ced97a6dd49e423da4b0019fac0b83e96862eb302910284ff2eb190ac61dd2159ee24e0b233eb38d383b4ff6633bdba58d85cb81abccb072ad716eda8b33b6c8ea9de43e8bc184f1882b9 -Result = F - -Digest = SHA1 -Key = 3082018a0282018100d7a6b5b175afa3bb18fffeaee645a096d8ff28cf96e13dce6d753d3eef4c0cf605dd06f0d25d208da216eba09b3e7e59b304210e63118c5fbc3185f1b845d18bdbf113c4d65ad2880bb2a5eb5b4e7210df30296a4ed6cbc637595318e72e2a6439e4d244d63defad0d2a7d5c06518b0981fef4c916c533f3495c098b40254724fc5a44b0f1d23c3a275466100eb39de3dff6dd48e8322ac2251f3b1f09ae8e6a6136645acbf358e7baa89bc515a12e78cf0f6c9e257b816be1e7a3098b9c1d3b47a4c955b390dc576cca2f9b391b61af5e0eeba21addbe728c58eceb8e018573962ae069f91c538e3161e5765db7e15b352ba3978edbab3071104353d122024e1f3e31f6337dddaae90a2a646074b5691b95b7d82429192c897598a00d67639c326922407002d49432b3cdf84c095c021c4dbe53f7fbe80a497f75991d195122fdb672c67fc973626583202c8230a506f251600ab46435acf51ef6461bd55d0c14a76bb4f1c0b7e3c1affdf21dc8e514c2e8732779e62c3f1fd8626c4b80c68302032fda05 -Msg = 1b51ee87dd2a4715ad8de13b9dd8f46243d37bae04e392d39380232ab4e8c1044615d43e80edf7157bba9e3cf0d9fc2c44b624bcc1f86ef127f81c1763783d109e92d2ed79ee30bb9738a59f5dd15e26f5c588d699feb6090eb783fb6e3378212bae30bc5194b9af0bf13e8d6928e3f760e9f125135d33c250a3a0fd5e8039dd -Sig = 397e6e6a04b3fcb3f0379fe1f9b9e5cf5c6d433e383b688cced0a6ddebc740b8ec0266aa5c7e89d5ca77c9a020716dbce12dc044c00b3b1b23fe3419630bbd8bde5c9883a6d26232fee11a81ced86ccb338dfe46faa3fd58720b80f305d40f1966c268c56d92af05c4f1bf66e6d1c5c810fedff5b316f3b61089c8ab9a4f2b4d7a46bab1868008ff3c0bba9800634c5781cfd7711a9b51f41b517ea428a9b63eb36609c763cef555df2cfcd25e16b8b3c631fcc12ed78904111188908a21253544a8f9fb0615570b3f2453a3214ecfdbf44f403d1baf0fba84d17527e7cc23e15cfe047f4fffd89bbfecae01cd3ebec787c3dc54d9511af93a3b37924ef9d6d5fc6e147dd9e91a39bfe101e3e55004f096b9b889e95b4f1fcd561ea76ee6b19276e8a26aa3aa3eda99de7ee48ad1b1c907cc302e909e89f5e3dce32657ebcdeef78722b7ac95a87930facd56e9cc976b501edda38b663d98c9993b0139032dc95fdbe4a17a9eb0e82c40402365fb84c1195b039246cd424233c88fef251ff77c -Result = F - -Digest = SHA1 -Key = 3082018a0282018100d7a6b5b175afa3bb18fffeaee645a096d8ff28cf96e13dce6d753d3eef4c0cf605dd06f0d25d208da216eba09b3e7e59b304210e63118c5fbc3185f1b845d18bdbf113c4d65ad2880bb2a5eb5b4e7210df30296a4ed6cbc637595318e72e2a6439e4d244d63defad0d2a7d5c06518b0981fef4c916c533f3495c098b40254724fc5a44b0f1d23c3a275466100eb39de3dff6dd48e8322ac2251f3b1f09ae8e6a6136645acbf358e7baa89bc515a12e78cf0f6c9e257b816be1e7a3098b9c1d3b47a4c955b390dc576cca2f9b391b61af5e0eeba21addbe728c58eceb8e018573962ae069f91c538e3161e5765db7e15b352ba3978edbab3071104353d122024e1f3e31f6337dddaae90a2a646074b5691b95b7d82429192c897598a00d67639c326922407002d49432b3cdf84c095c021c4dbe53f7fbe80a497f75991d195122fdb672c67fc973626583202c8230a506f251600ab46435acf51ef6461bd55d0c14a76bb4f1c0b7e3c1affdf21dc8e514c2e8732779e62c3f1fd8626c4b80c68302036ce901 -Msg = 45d9c631cf0813fe85c7715860bc3a3b38f2a41a8688a12e6ea6030dfdb5e47eafd0458c3475f5d97381b535d05b996faa6fb16b28dee97536732ed5cadad2a46c0c32def50e96b897db58331d9f49f1742550476b935495b7555cd23a57f56b8577d54e9b3abd41f7bda479d1ef11689efec9d6d60faa33f932d72cd495157c -Sig = c7958952aae21c256809e83d7f1833e9819d3b4e4cf562ec71bc0effe7a797d62e71d1937a79361d1cdc9cd5726207daaa9def6249a0fd3da6a23683fc8b084871325e07223a3317868efdad20f52a0330f369a0ba51f0fc098afde7d2b72b7f2faab6782cb663c4701fc07bd82fa6d4ea77205a7ee8473a9c8336a781fb64c03632c52e6c1451c3ace7674d5fc9f26e8613c12137977511484487d9a8b928666bbe23cf0eefc849d9e0d0c125cc2ac42f342cb658d164ae57ab3d5606b8096fd4b4c81d54c9db79c5db70106cc474bc64ca73b713385dd9539329260899054bf6f74a45fd5363f78de558484a124a113ac2d2bc6fb8ed19730dc746748b62818e6e62f558d5d9fcbd2c6f4fcc70db6c7fc5c22524a89f04229def949379074e7220cb4717d6407364062095b615464e9ce9c50f53c4358d9f80ffbfe70c15cfd2d9d5f0b451979412f3cdc8f9619e189bf23e71116eb3c620c8f0740b890bfbe961f6cf8854ac6b2dc4fbfd62b6be3bfd1824070cd46b1002b61c1e572437af -Result = F - -Digest = SHA1 -Key = 3082018a0282018100d7a6b5b175afa3bb18fffeaee645a096d8ff28cf96e13dce6d753d3eef4c0cf605dd06f0d25d208da216eba09b3e7e59b304210e63118c5fbc3185f1b845d18bdbf113c4d65ad2880bb2a5eb5b4e7210df30296a4ed6cbc637595318e72e2a6439e4d244d63defad0d2a7d5c06518b0981fef4c916c533f3495c098b40254724fc5a44b0f1d23c3a275466100eb39de3dff6dd48e8322ac2251f3b1f09ae8e6a6136645acbf358e7baa89bc515a12e78cf0f6c9e257b816be1e7a3098b9c1d3b47a4c955b390dc576cca2f9b391b61af5e0eeba21addbe728c58eceb8e018573962ae069f91c538e3161e5765db7e15b352ba3978edbab3071104353d122024e1f3e31f6337dddaae90a2a646074b5691b95b7d82429192c897598a00d67639c326922407002d49432b3cdf84c095c021c4dbe53f7fbe80a497f75991d195122fdb672c67fc973626583202c8230a506f251600ab46435acf51ef6461bd55d0c14a76bb4f1c0b7e3c1affdf21dc8e514c2e8732779e62c3f1fd8626c4b80c68302032fda05 -Msg = c58629fdf3aaed600121e5a109ec1f62b360ab46abcbaeb1535ab2d0b53a40dabbfeb195a241411bac8c65de157a5fea49190f6a54940c6e9a0ff3ebc8d3ff030aabda877f8db3bbea7d9159aaafe7d8ecec68ed1f361c53a8afb4c8d7b71b581a554ddd71d86cc722be1119aed4e0b4039f5fd8f3fb08e8e5029c6dcb2fbb5e -Sig = 40ea4940619e7611473537ef5b108f9e1216e2ab9bb7fd45cfffe15e70621af6590eb571f9be970d30e5df0dbe527b9a9ea70e259b964e496735177d417de3291d16e0b055cc9b8f4dd5498bb7a78d8882bfba624580d81ff0b76f6a82f9a15d2c28cbeaa0e6c02807901838500e36cb403acadd6e431196c794c0bbae65fa6b7ef2ab4c58c0fc7f3d27bbc14dd7699d7b0fc42a3dd30504f7c7e71d8504c23fe08a05e76c8061337687241d27a0ba2411619d2befd66a00d894f302bbdc4f3ae7a562307f21cc43c377b084d8521e2f3d27315b5c8b494b5178dab25fb3a8ade194cf3f909e9f29d888f15a75d26d427e7a17edf63f7f5dd814c67433ae7e15f668637579a3b1d59c73f153e094029e74b8966a9a4b72efe0d5d0e7d9c44c63de6d0dbf00e76d459c3ded35165eac8a76883ced93359c34fdfa94ba74bb58464770051537e9b71f16f615d5615a7b8d380b4bb9ec2499b255ec17131d2161d10709c357687728de9758cf5a166e81fbc086a2e20dae9b99c4f4f83c5edc0ad6 -Result = P - -Digest = SHA1 -Key = 3082018a0282018100d7a6b5b175afa3bb18fffeaee645a096d8ff28cf96e13dce6d753d3eef4c0cf605dd06f0d25d208da216eba09b3e7e59b304210e63118c5fbc3185f1b845d18bdbf113c4d65ad2880bb2a5eb5b4e7210df30296a4ed6cbc637595318e72e2a6439e4d244d63defad0d2a7d5c06518b0981fef4c916c533f3495c098b40254724fc5a44b0f1d23c3a275466100eb39de3dff6dd48e8322ac2251f3b1f09ae8e6a6136645acbf358e7baa89bc515a12e78cf0f6c9e257b816be1e7a3098b9c1d3b47a4c955b390dc576cca2f9b391b61af5e0eeba21addbe728c58eceb8e018573962ae069f91c538e3161e5765db7e15b352ba3978edbab3071104353d122024e1f3e31f6337dddaae90a2a646074b5691b95b7d82429192c897598a00d67639c326922407002d49432b3cdf84c095c021c4dbe53f7fbe80a497f75991d195122fdb672c67fc973626583202c8230a506f251600ab46435acf51ef6461bd55d0c14a76bb4f1c0b7e3c1affdf21dc8e514c2e8732779e62c3f1fd8626c4b80c68302032fda05 -Msg = f7653ea73a08384cd5dc0f14daf59160b94ee19eb76b83109f3db3cfb446fb0febfe04a45774adc6e5385a1149798ecf386bbd7ad8eb5b7d7566393b75f711528ecf602136da73885ba0c5ee5569888919a482d9af891a76e6feb30c46b738a446a2f825bf82b51aa1d9f7b5e50ca614c2c2d8c4248de8845accc84b0ed0988c -Sig = 4ba672add725521df81acde1e1efd18d169ce4e04cb55d39fdb2c6598250e0c7953867dbe189c327f76bb6afeac0e013853e75829eb50635622c26667d55cf3bf81bcbbb94e5c0fffbd853e2d7d536659b1ca9105b777d6fdacf3000c7c287e484933d38e2c52b301e01a3fd196b4960b4d8a983466ec376ec1d70bd26e1d4dc707a87ccb32a4e12f56d00d1a8f9dc20794a59a437e93fe5c79a1ecd16dbc0191589b14c30e5187e626a0038b6f2396bb30c9b4c73a5b21db2128ffe67c6bcf81b0ccbc68a6fafb94296e334cbd28603a4f44da05a4c5d243e30160cd44f08aaaef7135632dd50830010bcf4b5282cc55e070478e51bdc87ed68534b8133876222986d525ec26624ad87e4a6910c6e3caac92e32e2fbf0945f8f1b201de5ef522aa4e84e06633ff3c092f8f095783da7f929013844458e3978f5e7679b633152a94880b6ccb064e5093a126ccd0435381908df6b4c84e47875edf323742429b7428bccdd889d602085d6b40ac2c05c705a91b41a9081586439cd178edfe7f909 -Result = F - -Digest = SHA1 -Key = 3082018a0282018100d7a6b5b175afa3bb18fffeaee645a096d8ff28cf96e13dce6d753d3eef4c0cf605dd06f0d25d208da216eba09b3e7e59b304210e63118c5fbc3185f1b845d18bdbf113c4d65ad2880bb2a5eb5b4e7210df30296a4ed6cbc637595318e72e2a6439e4d244d63defad0d2a7d5c06518b0981fef4c916c533f3495c098b40254724fc5a44b0f1d23c3a275466100eb39de3dff6dd48e8322ac2251f3b1f09ae8e6a6136645acbf358e7baa89bc515a12e78cf0f6c9e257b816be1e7a3098b9c1d3b47a4c955b390dc576cca2f9b391b61af5e0eeba21addbe728c58eceb8e018573962ae069f91c538e3161e5765db7e15b352ba3978edbab3071104353d122024e1f3e31f6337dddaae90a2a646074b5691b95b7d82429192c897598a00d67639c326922407002d49432b3cdf84c095c021c4dbe53f7fbe80a497f75991d195122fdb672c67fc973626583202c8230a506f251600ab46435acf51ef6461bd55d0c14a76bb4f1c0b7e3c1affdf21dc8e514c2e8732779e62c3f1fd8626c4b80c68302032fda05 -Msg = 0ad50e46eb42d8f201ee505c91168bd00494cc1945b402f86b4491ce98ea559c20bbe42dee081492247bbecf0263c1d4094d49af60d451ff76ba66ace937aed5a7902a0a53ec38bcea645cf1a6593f3c220af8edc0658b85481eaf6dd1ffd5e7e57f6544e0954b5899ceb22b449e0ff197f3623c2c10b9712799f57818ead0b8 -Sig = d4abfe9247a4fbd27668d0ed8473bb4d40eb5d5ccab3fa2dc7662d52dd613c12335fd0f13bc99c34d6966aeae422a7e3c9a2389d80480c9120eeabacb884ddb2906ea80511641747229e0a07c2ca082b354a0a52debfb93e1ffa19787134c8d7b8f81c0a07be5cf421fbcbca0084ae5b2410771f06c4bca56a920139ee50009ef879631609f0478b21e6548446752ff85905d0c5a80414afe6021a3ab737f061134f8fb390b030b1e6a1a016b8ec34b0cf3b38cd1b023ee7dd6840d459ff83fb2c6b703abf646478fdd64cf0347b9b55c78f2c731cf7b0242de2a6f247932a5cfe1391d7d19480a7945a105e3088c3ac5b72c8e422991b0b36e3ecad0904fdcb42a64271840dcdb1625760361ce81f4f68bab447390b691bc63829f60af23a77edc2cf97c071f58cf8a7c414ce5fdbfa7a6725203cd54c3386c4c85cdf17f770aea7e79de4d8368fc68b6f6c024bdb4ef9c346e0d78494f7134b0e9c651540dd2cf8edb5812a5f8d9943622fac67d5ad8fecef405bcfb16ec1fbecef8bc1c787 -Result = F - -Digest = SHA256 -Key = 3082018b02820181008c4b17ab9a0da366f67416075ce284ff69a2c1112a8b7d821f66e8bc5386cd1abfe499fb9a09523f1095729f61433cc17fed78789cde81145ba02d22ddb560332ec795ea6a764b9fb380f44ac63d64225772aa4503df2fdd20e7c1d17115d3c56176f49432b2930d417b84f997ed4e50cd557e2786e0275be8025f6f039a7a3b8ed421b4c224527c01c1a1bef6becda193eac7f484ab0a24da31d4bc8bb6f2d4a5f3817a246bd5a9c81dfbf55e8c5b18a8a63bebdcd245726ba5b6ed4f8981ab83933c00714064985d69a17ed017e3cfd7fd5d2c6e932a2e021d226013126e6272231ce8bf626121710cd19d0ff21227e4c4255be507809aeb0aa548f42749bae8e1a3e3b312d08f0226c5245c45b5d96eb8eaecd1b8a1dd3f9f908191325a02cb4ca57b25155447584749e2db23360233d9068195daebb7ca943311b58dedc6c809a5981ff1b66a803a4135fbddf1f4f2478559f9d2ba17d2da77b0f0b6b08662eb50495a16c301759cbf7281f4fa985800c14386e0db6df0422bbda9a26441020400e5a4b3 -Msg = 897bd083c89256d56a247c12e265f3390962eace1cef2f7504e197bfdb7ea144ab3256f2798473a48247caf6c415e658c0f9ee627f6ccb68d3838d4ddf660b9cd904cad40f05210428009a98adef9a73c8e0453e4bed9cfff36de8edef6c5c839c59f6d393ffa61de5b7b2a0a5db59b0a77db7098859e863ee0970461178da20 -Sig = 7a172ef111b0f2f9ec43bad8f6e8fa11e19222ed9575571716e55fe46b43aacee433447632849e0f486744054e70bdd98863f5f015b94ddd1571e64f6b9a26302e151d4865423791d596063bfad7e3b5c5494f4a3c5ed994c53b6d915824a1f1e8e3639f8873f9095a7842d88817a93bc2651e6ba94acce93830735654fcb5a4a01cccc090ede15ff5ed745a92d92d8186a746a693a94db4fae34db26c6ad0b4904c63001600947ee994e24da490a3de240e500b31b8be8b1b415599aa684c77116f12e3cb218cf388424e3276b1a3622f1c4115125f5af47d581b78b609a067ef5f33549fadbdadd098dd2c337897f113c8eca9a20f3da69aee2fe4a89bd3ff73eb4e8da271065a9013935731addb3480f52d07fb3a91261d8a030ee2cd9e0ab342b3bd62db62e359475ee9a36971ba37f5c3ae1f1939c276980140961e9542be9e0a4739fce668549fb606ae18774bbe62b20148dee0379f0f38fe982b25bae164785d3410c337b2f11ea74558d79991760847109dc0c77272a55afb0d3f58 -Result = F - -Digest = SHA256 -Key = 3082018b02820181008c4b17ab9a0da366f67416075ce284ff69a2c1112a8b7d821f66e8bc5386cd1abfe499fb9a09523f1095729f61433cc17fed78789cde81145ba02d22ddb560332ec795ea6a764b9fb380f44ac63d64225772aa4503df2fdd20e7c1d17115d3c56176f49432b2930d417b84f997ed4e50cd557e2786e0275be8025f6f039a7a3b8ed421b4c224527c01c1a1bef6becda193eac7f484ab0a24da31d4bc8bb6f2d4a5f3817a246bd5a9c81dfbf55e8c5b18a8a63bebdcd245726ba5b6ed4f8981ab83933c00714064985d69a17ed017e3cfd7fd5d2c6e932a2e021d226013126e6272231ce8bf626121710cd19d0ff21227e4c4255be507809aeb0aa548f42749bae8e1a3e3b312d08f0226c5245c45b5d96eb8eaecd1b8a1dd3f9f908191325a02cb4ca57b25155447584749e2db23360233d9068195daebb7ca943311b58dedc6c809a5981ff1b66a803a4135fbddf1f4f2478559f9d2ba17d2da77b0f0b6b08662eb50495a16c301759cbf7281f4fa985800c14386e0db6df0422bbda9a26441020400e5a4b3 -Msg = 77ba90225f3ba1722312f52b1a07c3f659aee2a085e939c3e5ae77a3bb0a0456d56637285f0ac93dfbdf89781479529c6e543ab1025e0daa0ab6fa4458b48b31eb29db76c4e80312f685d5e0fd5ccdbe50d544ef3ae7e7bee5db6864b853732ce28ae4d537dd37383c8b3f2b7db91ba427b96722d28baf489fa429cb83efa38f -Sig = 1f442887263f403f6ff9b20fd2780937596e99e3c9e640def7de2006f14026de1e140e0cd5d45d7fcb1f42a9127a661c87cbaa4f9b600d8ad7fde5beed5c125294ad7b211d550bc35429c71f84a837eca906a580aaf3e301b46deb59ebfa4b66323f6e136d178f7ecd8440d891eeed5c91ed785ffefcc725f2792868e296a8eb03c5683ce791b554636a787d579e3db81177b45aee1ac6bbd90d84144a706196d557b48d7fa8b551c3bf638ce93a6425eac03232256f4cca758ab2c427d996702b522eca24b0781f33aa2b61e1256fdb94b166f98cacea3d5da205f818d19b432d50309d8265eef151b0f40fceba927fd6b5ec9d1c2ba54eb9af22aa354299ffad07da5071a1fb4314c69399a5aa16c3b4ff3b61937debf6e55b5f44e91855ff0a64ab59f549c3b4dcbad5c4306b08be4b1be99d000ea52665e9bd1983fbfaecb15ba18adb3e88bb9429d6d1aa85f7f6304c253692ea0ae579123703f9d89f69669fdd4c12607d8c1b7a28f814e75a45122956c21cae47bba9e4ec1afb707e5f -Result = P - -Digest = SHA256 -Key = 3082018b02820181008c4b17ab9a0da366f67416075ce284ff69a2c1112a8b7d821f66e8bc5386cd1abfe499fb9a09523f1095729f61433cc17fed78789cde81145ba02d22ddb560332ec795ea6a764b9fb380f44ac63d64225772aa4503df2fdd20e7c1d17115d3c56176f49432b2930d417b84f997ed4e50cd557e2786e0275be8025f6f039a7a3b8ed421b4c224527c01c1a1bef6becda193eac7f484ab0a24da31d4bc8bb6f2d4a5f3817a246bd5a9c81dfbf55e8c5b18a8a63bebdcd245726ba5b6ed4f8981ab83933c00714064985d69a17ed017e3cfd7fd5d2c6e932a2e021d226013126e6272231ce8bf626121710cd19d0ff21227e4c4255be507809aeb0aa548f42749bae8e1a3e3b312d08f0226c5245c45b5d96eb8eaecd1b8a1dd3f9f908191325a02cb4ca57b25155447584749e2db23360233d9068195daebb7ca943311b58dedc6c809a5981ff1b66a803a4135fbddf1f4f2478559f9d2ba17d2da77b0f0b6b08662eb50495a16c301759cbf7281f4fa985800c14386e0db6df0422bbda9a26441020400c15efd -Msg = 34a83157520e0413bc2ec4b48034fe5cc3fd2f69fb7992f95e5437ad99d555aec606e1ee98155fb1d9faf94b175ace2b9aab8c18999a41bbada96e5e851d5ef3dc17b558a8014cd9942b3cf7b1b6396768b2225eb483d50c8e894866a800d6295d24d61ce8997295d50bb73eb612e819175818c2b4fdf7f5e93aed4f69456559 -Sig = 7a1699fcecfd4d337bcc6f4904d2356fff44aa24fd4a0324945d4a4dd9a9a552c59239dc9268783067477dade944adf592495a3b1e5a6eea7f58762ec4d5b0f3515f3b1eaab1273476cb0cc3080fa8c7d2f2695f4417a6dc538b8b2c58bfb248b7c41485aeb668a0a39ffa324f25074c75c0ae1c70496a4a37c9332fd73ced1d2fe561ae120c6c19d1e526c211ce8869ce236d06a9dab8f9ef453f8854cb4451033960a62fe279830667845edd5883734e730e50e7bae3bbcc619e5c4211ebf741ad2526bf0226440b7d076faa02a30f2c79132443de9fe9e6bfc12c65d1ee703ea274c06ffd5cf945413cfe13d1ec63d48ea477ba8c60a7aacc078b988cdb58691911975f26e1b33c2c0ff3e5026d9b1d7a6293eb330ad5513efd19937193b796c40114dd1ff32a2875963020f26177ca1b6a7d0c6a40a6c0be44b03555c0f4598f91600a336c73099fab278271c46d96f16d6882c00d5b3ba59f2a0bcb98f39b152c55eaee62a4eba026234f15963d7e7395de927e94893a8a175c65f0dd43 -Result = F - -Digest = SHA256 -Key = 3082018b02820181008c4b17ab9a0da366f67416075ce284ff69a2c1112a8b7d821f66e8bc5386cd1abfe499fb9a09523f1095729f61433cc17fed78789cde81145ba02d22ddb560332ec795ea6a764b9fb380f44ac63d64225772aa4503df2fdd20e7c1d17115d3c56176f49432b2930d417b84f997ed4e50cd557e2786e0275be8025f6f039a7a3b8ed421b4c224527c01c1a1bef6becda193eac7f484ab0a24da31d4bc8bb6f2d4a5f3817a246bd5a9c81dfbf55e8c5b18a8a63bebdcd245726ba5b6ed4f8981ab83933c00714064985d69a17ed017e3cfd7fd5d2c6e932a2e021d226013126e6272231ce8bf626121710cd19d0ff21227e4c4255be507809aeb0aa548f42749bae8e1a3e3b312d08f0226c5245c45b5d96eb8eaecd1b8a1dd3f9f908191325a02cb4ca57b25155447584749e2db23360233d9068195daebb7ca943311b58dedc6c809a5981ff1b66a803a4135fbddf1f4f2478559f9d2ba17d2da77b0f0b6b08662eb50495a16c301759cbf7281f4fa985800c14386e0db6df0422bbda9a26441020400e5a4b3 -Msg = 72e970c5fbeccfb254bb1313e33470e3074dd8d3fc60093fffc7c960b2a970c3c113a8fac64b71916a616844cd06486e29a1b1c5b2a02845c00c606a2f61b7a2069c040258959038688f62c1100ec05c64e9f2be929f49870dee6075eaa2a2d78aac0c457973348f966f8bf374f3df93014a2426650673ed2d9553e8a915384b -Sig = 6ce37157a92a7eda47c16b5b2d961c564ef7df9d5886043c07abbd1e74ec7f549c78b07e2140207e6b93e89ae69a74a5a76184e00ec03f1dd36c0699535e0bedb4f28634b194fcebe13d2c4955e01e4ef459244a7497fd647d5e6dd5f7ec156929d0e2f1e146d3397d3636726bbea13b38d7d38d4a5e4ebe68df7ff86c62c3802e18250a2cab3d200363c577895a33dc69c18d15309e7117ebf47b3b98c893785c99dd0077982ee084b4ac08913de46415e5abdbd223aca6ac5574ff4a61f5fd7631b776113f12044e5e53960a5af3867c8366e3367a20de73e6c4e0f7b9075a1a79374aee0232d06280c53bc6a148026e1686059d652d96c99ac41f909e278b3c408568adfe35cc55800caa58d03ce9f1cf533018ec4fcb5d66a50758229716c2abebe4b3e3c6ac778fc008db8985e5032d7825fa333fa4d7468504cd0785000f92833d5cdd61880bf40f803ac298343d75e18c003a8471e06449406bf1bafd988e162b0b8c62eee5795d957f1fe5d7abc6e7c8b3b43759f212d01def9151dc -Result = F - -Digest = SHA256 -Key = 3082018b02820181008c4b17ab9a0da366f67416075ce284ff69a2c1112a8b7d821f66e8bc5386cd1abfe499fb9a09523f1095729f61433cc17fed78789cde81145ba02d22ddb560332ec795ea6a764b9fb380f44ac63d64225772aa4503df2fdd20e7c1d17115d3c56176f49432b2930d417b84f997ed4e50cd557e2786e0275be8025f6f039a7a3b8ed421b4c224527c01c1a1bef6becda193eac7f484ab0a24da31d4bc8bb6f2d4a5f3817a246bd5a9c81dfbf55e8c5b18a8a63bebdcd245726ba5b6ed4f8981ab83933c00714064985d69a17ed017e3cfd7fd5d2c6e932a2e021d226013126e6272231ce8bf626121710cd19d0ff21227e4c4255be507809aeb0aa548f42749bae8e1a3e3b312d08f0226c5245c45b5d96eb8eaecd1b8a1dd3f9f908191325a02cb4ca57b25155447584749e2db23360233d9068195daebb7ca943311b58dedc6c809a5981ff1b66a803a4135fbddf1f4f2478559f9d2ba17d2da77b0f0b6b08662eb50495a16c301759cbf7281f4fa985800c14386e0db6df0422bbda9a26441020400e5a4b3 -Msg = 6147121ced1b5f1d73306e4a22c31669b76c20764fa4b4467d86126a9ad283565c378ec3aad26e51aff2c4712e1e8a821559483a54a48a48efc5913752474996e6c27b56e15c44736290c6d7bd2e1d7b13a394cf277b195c6c24efa763f5a359236e419e39c2c7cbb392da4378fcb89bdbd46efc6f314bc91c2c948272e479e9 -Sig = 8b5320215e2133754a182f38444a68fe9f3cfdbb7ea9d8e55d006789fb1d75c0fbe5e94201b15c97613a35c3ab54d61dcc62b978a8fab0ae3183fb7463814ec498eb0f4b0f5403044f33368afcf692b1b3ee3ef0ec1492c5c2ec370d75163b777705a0675252908bff8010e819bbde67b86b33a35e1fc43cb8da167691b6d69ecc19ae094a5461cadb0e977ea6b7ef6f3f639e4571a073d6033cf464e5eb17323447ac079e4e69caa7966d3083ecf616394fa25d2e30ef4e5b7e558c8c46802c2e35db02b7884b53b89f041037bf10ff30f291003323112dcc6b8eeebde3bf97e373305eab433061e3a634df865642743908ef822df62cedde8f4af403e7a924e22e667734e91a29d4b6c8f1c12da7023a1b22e6a3dd33e878efbab31220f4f2c923c88f1bb0d7b7497a9c687fbf59f9eb4625e6f92d7285bca5db93ae63213e3fe1333801fc3eca1d3a1ffa75319752a5aaac461d7a799659ad31569230266c1a62e787c25fa635b0d3aa248d047d9cee43fb12342a4c066dc971b893a7dbcf -Result = F - -Digest = SHA256 -Key = 3082018b02820181008c4b17ab9a0da366f67416075ce284ff69a2c1112a8b7d821f66e8bc5386cd1abfe499fb9a09523f1095729f61433cc17fed78789cde81145ba02d22ddb560332ec795ea6a764b9fb380f44ac63d64225772aa4503df2fdd20e7c1d17115d3c56176f49432b2930d417b84f997ed4e50cd557e2786e0275be8025f6f039a7a3b8ed421b4c224527c01c1a1bef6becda193eac7f484ab0a24da31d4bc8bb6f2d4a5f3817a246bd5a9c81dfbf55e8c5b18a8a63bebdcd245726ba5b6ed4f8981ab83933c00714064985d69a17ed017e3cfd7fd5d2c6e932a2e021d226013126e6272231ce8bf626121710cd19d0ff21227e4c4255be507809aeb0aa548f42749bae8e1a3e3b312d08f0226c5245c45b5d96eb8eaecd1b8a1dd3f9f908191325a02cb4ca57b25155447584749e2db23360233d9068195daebb7ca943311b58dedc6c809a5981ff1b66a803a4135fbddf1f4f2478559f9d2ba17d2da77b0f0b6b08662eb50495a16c301759cbf7281f4fa985800c14386e0db6df0422bbda9a26441020400e5a4b3 -Msg = e9ba77e32581fb11b3d44a885ce8184207a00b5835016418cfe6e25921f4e30b26d1cd120691ac55dd711d11bec86a74f83af667972fdcab2e83d327d48055806d0900eb2b173c3f546a1e4f45788c76b7aaa27341c755771eb0567d314f39da46cad7159bfcf1f89f2516e7f9e0c671cc56d72539b218a726d535033e4ada40 -Sig = 17c273523709d84746ae546c8f58086a5ab385aade0707b5b39adbeb507670453a56bd356a9b549fb0112eb3be73466294c0180a9061b04128a001f62025867277e28508fd1c94109061184f6acac575737ec4f93c58ee452089e6714c4dd9f23833278dc66332a914ac8e1b0ec33472061bab9c29cd8d7a0c1778c71fb973c851b6c9bbb7b7dfd24a16f146eef248d1aa81e4f62cafce2ea146314b2a8d5711de6625011ee7ffe7ac49b03a5b7e2d842e9b35969a934c75d16b6cb890f8d4ebeb6f74a08059e70e90ee39816cab34c4702ccd4e14718a8ab5c981f9c8f7cb3e91bf066ba387824c1b27e33b27a06d9eb3ff3fcace0b285f51cf83b117005bcc12da946b5a36e9308ac98e9103becc8ec5dbb048df722e5c8e6cbeaad8f2e27af33648c9ce5d7940013146f5d3cb8c30849ea75b209c36b745dc3179617933e22dc25af5169f784d6128af2c8694b5caf19fbc0585ca1780181150e8f8bbd8d12ea8b0d41f86b1b3b27771b3f36d3cf5ac6a2702b8711d52edc1cc96ce071eab -Result = F - -Digest = SHA384 -Key = 3082018a0282018100c151ff0fed6cd9251edd8df49937283b4f4e67c3bad0826d46b6df2ca7657dda4f099714e70271d626ef41d2dd2a2d6e008b6193e7ff2bffe4207fff2b468b7a985ec684ff7364fbef587a1787c73840b1d0b5781d0428a6af38896de1e9eda5756af5545459e49e6ebf19d2a7be83ed4be2ab8d99e896a2d6338779e56ecb1fbdd1b79f813d0befa58d67aa8c935eec4b8f1c9895d225c8f0fbe7c960d5514bc78ee3c5af0d1bc8a81b1ea9b2caecfe37ac5d3fef9a0327ba7051f7996a901f2cadd1833d059d99e5bc2b512ffd5b090f80f0ec647f60c8756864b7f85d605fb391f614ea5f17a2766508e92092b3d8354572dfb947dc59f79d98ff945e9e3b83b3632464360fafc4cf2528b82836a685a29140abe524eea30b3bdfc1417959b46d933c4ec257d71696d74e89d7e024dfe20cbdebbb263fc586d22ee4b1fa688ee1ac92a9d7084e017ab4b1645158d4785ee8bb2f8eb54b5f70142ef19fe124269f0f83bb88720941d234269c2885a64b9f35118b900086d806b0013398404702030872bf -Msg = f17fc496ee707a1bad8d591e059c1e37bf99e6df03594431116d91ed324983c2eda601cd7d24365d8334e5f9f935fca467dd6b5f59db36f010bac9e278098dcd5ab9b8d7d3c6697b051af4890cae7a6e33f2beb6686f33cfeeaa5a10524c4af9a08190bdd69e3afd99062fd7274ec21f8d9f86ec1a5c63571305e97fa85ce5d1 -Sig = 3ae65cccca0d7e3ffe189b1631aaa79a70bcce76156782790bd3b6c8ef7585b15509ec5400ed771f8b8a41c001257bbed0dea39a3ec68bffc1395849d44e0f4b238c7305fbbb0c41b0ef7c4b86fccd363b057886f504f971d5a072713ddbcfe0cd6953c0b9aa7c01c651a89b5de9d689701fd09fc609f098f0e758932b186c10555cb48ab6c90b3954416cc50232b427595c4acb19ffcd97c806b23c504071fbcfd2a5ce6cbd097d56c5822ca788bbf6fe935c2caf33e8e69b77b35e6c6c077781999e146aefa448c839f9293c6ff5d7e3dd791f34ccf9ee5f358890b59a2c387bae4232267ec2f8d3cfa878f507184e3093b50ad891675cc564442d99edef75bb86fe908f15017da5d263fff9d50a0b1638d5770a3db54c2f957d52b9d6515da3eb893ded69b2d54732a1f433c78d97bfd63fbf9d2b2650c18a95a07f629a7f0505010a43dbdeebf765de8e0c85eedad07672bb6b627eb8488f8d172ca6f95aef2c3250d3d10ff10ec2c347a540827bb57913f710d47e31aeeefa42cbfc6015 -Result = P - -Digest = SHA384 -Key = 3082018a0282018100c151ff0fed6cd9251edd8df49937283b4f4e67c3bad0826d46b6df2ca7657dda4f099714e70271d626ef41d2dd2a2d6e008b6193e7ff2bffe4207fff2b468b7a985ec684ff7364fbef587a1787c73840b1d0b5781d0428a6af38896de1e9eda5756af5545459e49e6ebf19d2a7be83ed4be2ab8d99e896a2d6338779e56ecb1fbdd1b79f813d0befa58d67aa8c935eec4b8f1c9895d225c8f0fbe7c960d5514bc78ee3c5af0d1bc8a81b1ea9b2caecfe37ac5d3fef9a0327ba7051f7996a901f2cadd1833d059d99e5bc2b512ffd5b090f80f0ec647f60c8756864b7f85d605fb391f614ea5f17a2766508e92092b3d8354572dfb947dc59f79d98ff945e9e3b83b3632464360fafc4cf2528b82836a685a29140abe524eea30b3bdfc1417959b46d933c4ec257d71696d74e89d7e024dfe20cbdebbb263fc586d22ee4b1fa688ee1ac92a9d7084e017ab4b1645158d4785ee8bb2f8eb54b5f70142ef19fe124269f0f83bb88720941d234269c2885a64b9f35118b900086d806b0013398404702030872bf -Msg = 92394393057dddd26253cee4bcd5d9510b69da5821e95633e001569ca9d8768f17f23952ee559fb34eeafa912d27fd9d04eb1662c7a9fe831bc98e44c44bd44c5cae66aa4b10f615f39627782b0e9faeefd35d8955f14d1ac38a1a2c60794412c83472a304f70982b91ffda39fd4e80a35ea59d6b4096e7f410ca55c66a8ef68 -Sig = 5bf8ea11a6637f0258d7b66b9a77dfc1b7d278e6e3acffeeb06a044a2aeeb041e83feab36f27a7cc416c49cb1e086dbbafcc1411dd5b563e4731c72466015e781984434604c8f455b96714911330ed9eba40bc0fb2a38adde08db1035926225483ae62c3b90af042cc3f49a18906ee749ae6ec85e86a73e4d8a451ba77b4b11853dccb173ab2049fdcbfbf568445eb3ad539f4d4ac488cd2a13dad7d3e0dff3f92a6879a6ec7905711ab83f5825f7eeaf6a99a9c445b9edecee786a88d829f70366bcd382971649243643da2a87d339b3c6782d655a284a4f4869cbaf296453a2fc8a96dbd29a5d2298561dd6595f2c6a30f0c9e66fc926368759a0792c3110ebc9a9c90bbeb5c6fff1b66ca57ead5e556e98f69138ea792701c572402d0db36a1161c3f129832bb5db1f49b21e9476a02259243986e6437a437acc7eed412cf47ee2034474b5e4391815291abf07a2fb743a628a893e4cf43a3773dc7827aa5c0bbe083e4a59311f5e1d5e5c0e7704335b7d93b76d46acce9496fdb6ffa4fda -Result = F - -Digest = SHA384 -Key = 3082018a0282018100c151ff0fed6cd9251edd8df49937283b4f4e67c3bad0826d46b6df2ca7657dda4f099714e70271d626ef41d2dd2a2d6e008b6193e7ff2bffe4207fff2b468b7a985ec684ff7364fbef587a1787c73840b1d0b5781d0428a6af38896de1e9eda5756af5545459e49e6ebf19d2a7be83ed4be2ab8d99e896a2d6338779e56ecb1fbdd1b79f813d0befa58d67aa8c935eec4b8f1c9895d225c8f0fbe7c960d5514bc78ee3c5af0d1bc8a81b1ea9b2caecfe37ac5d3fef9a0327ba7051f7996a901f2cadd1833d059d99e5bc2b512ffd5b090f80f0ec647f60c8756864b7f85d605fb391f614ea5f17a2766508e92092b3d8354572dfb947dc59f79d98ff945e9e3b83b3632464360fafc4cf2528b82836a685a29140abe524eea30b3bdfc1417959b46d933c4ec257d71696d74e89d7e024dfe20cbdebbb263fc586d22ee4b1fa688ee1ac92a9d7084e017ab4b1645158d4785ee8bb2f8eb54b5f70142ef19fe124269f0f83bb88720941d234269c2885a64b9f35118b900086d806b0013398404702030872bf -Msg = f5304ceed3b78326d2020a99a63f697c40ec35dffe3ce53222bce1078336dc1a82d5648e408bb7790eb0d9a325ece38b98569eab86dd50fd94e8d6be9a39f3729d17e828feac45fff0acfee92f37c1aff001873613b06a00a085b6f5713f42642c3c014575e2d4c1613da2f42de9abf1303319060e7bd8422fdda8356f1071f7 -Sig = 3dbf093e71870bc6cf17f01719dd3bf09b5b128d3396eafa0b806611d5d5dea961c0c1678ac69bbb3139b0aef0ba6be387cee84b27f49422b7c9616b78f58892eb132b40e6f1dae7226306284fed9174df4c36cd0ec83531cc1f854fe3edac489d6c42552f4701bb37b58a5618d8039375a367f414021959abf0fa255793e6589a0234fa4fa8e4515e38afbc0d5077703a3bc138e3e12c0cb9e2d457def3aecdc99ba5687521dd93e2b9dc031efcf2681cfbd730fda3556cc97a018332ed1be584a8c9b230f2766ca575e40d7e20e2eee711cfd9c773fda2ee1accfed4d10d39d9cab7c78ccc82e1cdd692d18a4c960676afbc742b3e38587e20d045e26fc72bcd44113d70d5216e4e15e5c629009cd88cd225f2b304da9cb7a61ab03e6f1252f7b65448b593dbc6a8b813e09ff71d8c90895eb962bdf7a2d0ebd4834708c1f44b3a5405d500ef7bf8d44719da03e76d8bbbb66916797bc244555fa770668fecf7ae30901450cf0b3046d0903e5dbc982e13b64f06c7bdac7f81e6c031d95478 -Result = F - -Digest = SHA384 -Key = 3082018a0282018100c151ff0fed6cd9251edd8df49937283b4f4e67c3bad0826d46b6df2ca7657dda4f099714e70271d626ef41d2dd2a2d6e008b6193e7ff2bffe4207fff2b468b7a985ec684ff7364fbef587a1787c73840b1d0b5781d0428a6af38896de1e9eda5756af5545459e49e6ebf19d2a7be83ed4be2ab8d99e896a2d6338779e56ecb1fbdd1b79f813d0befa58d67aa8c935eec4b8f1c9895d225c8f0fbe7c960d5514bc78ee3c5af0d1bc8a81b1ea9b2caecfe37ac5d3fef9a0327ba7051f7996a901f2cadd1833d059d99e5bc2b512ffd5b090f80f0ec647f60c8756864b7f85d605fb391f614ea5f17a2766508e92092b3d8354572dfb947dc59f79d98ff945e9e3b83b3632464360fafc4cf2528b82836a685a29140abe524eea30b3bdfc1417959b46d933c4ec257d71696d74e89d7e024dfe20cbdebbb263fc586d22ee4b1fa688ee1ac92a9d7084e017ab4b1645158d4785ee8bb2f8eb54b5f70142ef19fe124269f0f83bb88720941d234269c2885a64b9f35118b900086d806b00133984047020374dea3 -Msg = 22c5152bca7a2d7c48eb5bb3a50c937f2423ce8625220d5749349b9fd796939f5fa8a3dd9d440f1a9f4ef9852a8cdf2e5bb865bd8ad4556473bee412980437eae1f925f386093f112e490d3459529bcffb50348c69566e3e79f56716e50c4d1bf1e124d44e71c3473d052028f806ce4a4d12c4598c4f60cba300ac148856df19 -Sig = 58d2bab8f32a675ee83d4f36b0f7499adf4cc6f3335f5159d69302349741a472a39e8171b3ceba18230614003b247e0096dad35dad90226a4822de9d7108ff1f76da6becc3e5b41899ce52b85626a59522902297161d0bba1cb38236b6c80fb01e7e55278ef1523a3c41c232cc3caa3529211d50cece53060a5a36523b3ecaf1949fbe3032dcb17be1003624dbb280a926fe70ca19f6672fe100fa90dcf8b84bea122e0cfa5cedd52571a2fba21bdc0cd2f7d79b1d33e950e4828fa0d2fbc0d708ab428c1b6680e85e0386561b3e30d58bd4e0dce453d3eebe8e4fb47e6a1502db77d1ba0e6ee5b0aa71d6d0d91a38be4e1d84c7c95f68775d8b9c192ff61ce90644dd6a34b926dc7c8da5c3b1bf47236bb1a8cb7a5bbeabf86d649707598cfc9b1d4cdbd123e757da4238160054a3f7b5b4f77c1f0631f07cccab6a055d763b42b715a0872ea188410bde9cc2988f66f691122117d001e8942a20ab833875c2839c4bee53e82de7438a561aabe499453f49a0287d7a1114b8761202c6a4dda3 -Result = F - -Digest = SHA384 -Key = 3082018a0282018100c151ff0fed6cd9251edd8df49937283b4f4e67c3bad0826d46b6df2ca7657dda4f099714e70271d626ef41d2dd2a2d6e008b6193e7ff2bffe4207fff2b468b7a985ec684ff7364fbef587a1787c73840b1d0b5781d0428a6af38896de1e9eda5756af5545459e49e6ebf19d2a7be83ed4be2ab8d99e896a2d6338779e56ecb1fbdd1b79f813d0befa58d67aa8c935eec4b8f1c9895d225c8f0fbe7c960d5514bc78ee3c5af0d1bc8a81b1ea9b2caecfe37ac5d3fef9a0327ba7051f7996a901f2cadd1833d059d99e5bc2b512ffd5b090f80f0ec647f60c8756864b7f85d605fb391f614ea5f17a2766508e92092b3d8354572dfb947dc59f79d98ff945e9e3b83b3632464360fafc4cf2528b82836a685a29140abe524eea30b3bdfc1417959b46d933c4ec257d71696d74e89d7e024dfe20cbdebbb263fc586d22ee4b1fa688ee1ac92a9d7084e017ab4b1645158d4785ee8bb2f8eb54b5f70142ef19fe124269f0f83bb88720941d234269c2885a64b9f35118b900086d806b0013398404702030872bf -Msg = 21af062f995cfe8325632c751f445cad6102d56607d73bc47726b4689fb14a437e0c91a7e65289a48016c591109ccde9fa49c2590659401660d08874e3b3dfb59677311e77bafa51783167d6c8e2b8fb5393e8de8c8290c86a5609bcb056d05072d92fbcd5fd1a31169c586cce7ce38a74c6901e23baf2819da07c699102e7bd -Sig = a3d26043c5f0eb27c6d22818dcbe19f156e246712850ddcdaf7aaccea00d028aeed43d3a39833bca74a7812143a80d33042c19952ccdc86fe4608b2702ebe93e398b4bbdb9a34f8500bc040e26d5b4667cae0e653ee6b76236f367a425567c93b31bc5549c2ae0138daf99fa2bc0d3986cead8ddfa4bc4e751b2244a1f395d449f4087dba2a9d003ed059caa4f4209435bcf266eb8070be17ebc7253d2327ffb6d2fb958c69b020557f1499987f78def362f1c36ab7f436423b21e729333b73ab1a6ae0941056339ea42a4a20c644e19ffe825e7814f7b48438aaf34e803995bf36044ea88615e4e91b7255938234a6304de76bb6b504978f49c27e85d98fabdeec915a408d4ad8bdfa74032fe285acdf5f20fc908a1482cb2861d64f1f960ddf7fab77a327c42ba5fca17269b4a068e44c4b599c51464c26ddeeecdeff81919dae58e6f5b70be99bcb18235edf47a4aedc5ad7fbf365d87cd94416499287e7e522eeaf172ca83120eb9210f7ed88f6249dd1ad1838080af68ca6106c6fe7305 -Result = F - -Digest = SHA384 -Key = 3082018a0282018100c151ff0fed6cd9251edd8df49937283b4f4e67c3bad0826d46b6df2ca7657dda4f099714e70271d626ef41d2dd2a2d6e008b6193e7ff2bffe4207fff2b468b7a985ec684ff7364fbef587a1787c73840b1d0b5781d0428a6af38896de1e9eda5756af5545459e49e6ebf19d2a7be83ed4be2ab8d99e896a2d6338779e56ecb1fbdd1b79f813d0befa58d67aa8c935eec4b8f1c9895d225c8f0fbe7c960d5514bc78ee3c5af0d1bc8a81b1ea9b2caecfe37ac5d3fef9a0327ba7051f7996a901f2cadd1833d059d99e5bc2b512ffd5b090f80f0ec647f60c8756864b7f85d605fb391f614ea5f17a2766508e92092b3d8354572dfb947dc59f79d98ff945e9e3b83b3632464360fafc4cf2528b82836a685a29140abe524eea30b3bdfc1417959b46d933c4ec257d71696d74e89d7e024dfe20cbdebbb263fc586d22ee4b1fa688ee1ac92a9d7084e017ab4b1645158d4785ee8bb2f8eb54b5f70142ef19fe124269f0f83bb88720941d234269c2885a64b9f35118b900086d806b0013398404702030872bf -Msg = f00fbccfb64b9cabe7abe3e25e2fdf96881d0e606cf63ee4e8a8f1a83d050626ce74961f24e61d33360cdaafe7c878a6d1e1ed4341faa35d82c5d54c5f743dfbe370ec3f634e7967bfff5d15e4469e4c956fabc96c3f87971b272adef8bc25fcb96c84d67b69f8700aea36bc5c939ab05e31109bf4ab34b93a36b80511c7064e -Sig = 095f3c7b47d3c07fefa316f5b09de27afdf7337ac4fc4c77a805cd9e104cbe3344dd9d44e14130dcfc6e90b1bfdba92ec2e7e0ced121b08d9c4c7d6b39f707ac693ecec0460c850af7399b813f8d0ec9a0a3c6feea102333464b80cb1aa68d179102e9f600e7d69b68ac3bf31c7d064b8ff4fe4658d31a6910d6f5474f0652a6a76c6d2f75a614d168366d63f45a4ec8f69f754a57de0c8ef0a7b007f8785ac27e38b6f3f23792d20d2cd89082ff664fb2277817c23a0a3b584e6aff2800eb09ec7677d7fad80a4e5d8ca15e296772b5b89e51120b11ce2b983e6e430b764464a11a0ea16319b7b0a28e56eac826bb527a8c05dbe47ae187f22cb4714d4564d783f45fedae28bbdcdea7bd9d88474b72785a0ff9089e1007247144914712cda36d906c11d99373c29411f9264a9becf9c351f4dade4ef1dd3d48ebc6f27ae19d94cb49c3bdf22f685b4b9c3ad7f8c9cc5251499910c4a9e84945a92a1a6e0fc6f0c030c94ce7a4194280054af88c2d6e0b6934a0f25e159fa89a70c077f21a0b -Result = F - -Digest = SHA512 -Key = 3082018b0282018100acc1658b0b236d34992af6dfcd916f29c532a00faba18ed2be4835b1dd03951a5e3a46f2da3bb27a955606bd81d2be2d797ae651af241be9e84a52242e137c0d2fc5be00d692d094fd1606138fc280c113aa7e8250a484aea7c7e6f83bdd76d4966a5d1cf1d3ad1deb899ed53b9a633ed6c4617e38ec226523f6480bae9397b34ca5adc6e0fe854ce2e161866bf2621afff61f32b7dd08ce3ac931346315cfc6b66ba37e292bf0b5d274cdf98f175d247222843ff90e63e3d85427134dcc00fb20e51d84ac1b1132393fdaf7596818b56a9b019d65cf4b4302e9e11057ff90508d0c0c2c7b5f9d57e180e71b2f103a60ef6edbe40b1da27d16018bf6d4a4fabc9c73d5827f0e52c4a16e11d4bbcbc6cea5ff5bb2284ecce4b6080064c2794fa1cf6789565e16842882a7d3caae5051a9a45327b74bf4cd5885736bf5bb9bb045082aed3454fd40fe3c83397bb56115035f358735c290b43d5cb1f67b8853651dbac0cb9a197b46abb1121736a17d917dc2892eb2c5b3c4881ab472db54a5c4ad020400c4d755 -Msg = 76dbb0c0d2069fe7c8287301f57169ec11c79fdad4191c4913f111362d495e8da5a058e5104dca6a32123a1a64f46d35384a2dee60154967cc8fdedc1307d51f14ebad44dd277a9dccad2ee9f35518c8c1e8aa72df777fa959f29decfef6f7ee09e53646013cb868dd21d9d46c3c728df4c8a0cd1aeac7f70141d6cdb6becce3 -Sig = 2e34f1e2f8064b52d770593345194f13460cdaf2bdc502e14e77ecffd093bb57fed459b1f1a26c15d58ef9ab1da879917cfcb2d5793b8c774bc94f0494c66010ace1159c8b546f616125bd79111d81614de5b0f6cc42d95c41bee3789e897adc94aaffbb3bd51e5f022d0385b7a1956cb013353c1167dada2a9c7d0052a0e0cda5eb0bd30f310099c1dfd36c809e0ed49d14ada4d39551a02d6d7e6db2a3a1ab499854c9445d2e9513529b181ebdaa6f97a3e84c246277f4e9ad6428a82c3745c050951ddb16a074f477cb10ee2765ec436c83df7342c6055a4c4206c88d826d04c7d342d5fc46a90c22a5b68ed57de78287a2047149290f16778ebbd253aacca35602f2b2f855a277ea263fc2ab286a42f5531248ae38adb65b8ce4b28185933d8a03f4787ec35a41d9965cf8a3a46bd970831842b94c99dcdc748ede26611f151fe33a64921e197ea329e26ff3cedddc830198a94c1917e8b6200f453c69e04cdaa9e872167aeab367ef9dfe7905581ab0796d611b15b97e4f6b351869ef3c -Result = F - -Digest = SHA512 -Key = 3082018a0282018100acc1658b0b236d34992af6dfcd916f29c532a00faba18ed2be4835b1dd03951a5e3a46f2da3bb27a955606bd81d2be2d797ae651af241be9e84a52242e137c0d2fc5be00d692d094fd1606138fc280c113aa7e8250a484aea7c7e6f83bdd76d4966a5d1cf1d3ad1deb899ed53b9a633ed6c4617e38ec226523f6480bae9397b34ca5adc6e0fe854ce2e161866bf2621afff61f32b7dd08ce3ac931346315cfc6b66ba37e292bf0b5d274cdf98f175d247222843ff90e63e3d85427134dcc00fb20e51d84ac1b1132393fdaf7596818b56a9b019d65cf4b4302e9e11057ff90508d0c0c2c7b5f9d57e180e71b2f103a60ef6edbe40b1da27d16018bf6d4a4fabc9c73d5827f0e52c4a16e11d4bbcbc6cea5ff5bb2284ecce4b6080064c2794fa1cf6789565e16842882a7d3caae5051a9a45327b74bf4cd5885736bf5bb9bb045082aed3454fd40fe3c83397bb56115035f358735c290b43d5cb1f67b8853651dbac0cb9a197b46abb1121736a17d917dc2892eb2c5b3c4881ab472db54a5c4ad02035b1365 -Msg = 3c2cc086a13b1d1b232f0f131032f1ef2dfd616ba03641680dfd012a00c221c38b59f1cf30509c620080643f05e22f4bdea44341a97c4ea6263da90018a8dd43ef84678ca5f1b811e6f9805873682ca8c8ddadbefd227cc0eab9db778eb75db8b2d6a823c9c57a111bc2eac7226bf1f034d1284a63cfd39fa29a1ff72998a80c -Sig = 51fb0f16194df6288533f7b91df149c79e8d474b4d44a51f903902700fa561836c4c6a09c9c5211737217b2de1d6d73106f4709ebc219a4c71d02516a9e42dc4ef9e372db5c3d05e3ba2c3da25e5e8519cbdc3998c0ac5187df777acce31f039480e11d745c6c0b235075cf1805498ea1f15bc911f6d94b3d332084ffda0000ee0d72572a5a24f303857447081129392a1693552c5da4ef6791e2a0f6e68a889e98c1ca7d8dfadc7beb60e8ca4756cb8f56efc62d3accfa16462f597363441dd9ce27328ba9014ff366600ac42140e1b4a4b9a068bbf05fc37acd0eb7c9fc6803a4f87d706d72b570e0fd405f6fd5b7a3926f5e7206d23bf2dd39598de89fa1e66a2fc4533f516d15f0e44bccd0e8d405ee95f1586d17ee25feff7bacf0f3a008e9c0a15129ded95f5a50fa7cf129517604504ba89fed73cbd4e96da21e824b93df4cfd6776961d0d14e5c3a11cf29a836f5c87fcc60e9c837717a632d070737b470f9a374c916166b5df2afd7250cff6f03ddaacf68b067bdf0edd1ddb82d2d -Result = F - -Digest = SHA512 -Key = 3082018b0282018100acc1658b0b236d34992af6dfcd916f29c532a00faba18ed2be4835b1dd03951a5e3a46f2da3bb27a955606bd81d2be2d797ae651af241be9e84a52242e137c0d2fc5be00d692d094fd1606138fc280c113aa7e8250a484aea7c7e6f83bdd76d4966a5d1cf1d3ad1deb899ed53b9a633ed6c4617e38ec226523f6480bae9397b34ca5adc6e0fe854ce2e161866bf2621afff61f32b7dd08ce3ac931346315cfc6b66ba37e292bf0b5d274cdf98f175d247222843ff90e63e3d85427134dcc00fb20e51d84ac1b1132393fdaf7596818b56a9b019d65cf4b4302e9e11057ff90508d0c0c2c7b5f9d57e180e71b2f103a60ef6edbe40b1da27d16018bf6d4a4fabc9c73d5827f0e52c4a16e11d4bbcbc6cea5ff5bb2284ecce4b6080064c2794fa1cf6789565e16842882a7d3caae5051a9a45327b74bf4cd5885736bf5bb9bb045082aed3454fd40fe3c83397bb56115035f358735c290b43d5cb1f67b8853651dbac0cb9a197b46abb1121736a17d917dc2892eb2c5b3c4881ab472db54a5c4ad020400c4d755 -Msg = 9a3482f481638f436c51f7b74d3bd19a91e99b02473c7f028507d421071fe80b1ab6fd87b8e491a9f587e3499a4db2b40f0f48a07e61b7663567636b4ceac0df88aa5dab80f622a4fe7bd605a85ae31ce07d5e43e82a42124ad8fcd377422d36aebbab471fc1c99c51d4d8d3c189ed3cccdae5d2cec0a7708c04a941cf51b679 -Sig = 0f5c8dfe8b67996bb62af65fad25c816979b33419babafcfb3d35c2887a0375ee7461487d4d65b1c03306919abad43793a93643b912cf906c4095356b64f8a3e01dddd2446ff3c07ec62bd6c1b39fca4efd95904ccd0cf87c1bc5f3659825b86daca6b46bfdba8790c4f958ac9647cb1991e2661a01925c79d1f9b23856e8035507b1cd66956a47e97e756443c6ebd46105f8788b0713f6d3f04c3f16849aae50dbe920a35d5e5c1345af610f38ee98c153b02dcc6a1175762af98587c203bb6bdc93300af93a64798d8f621a0805a3212ec9edc90ec4bfbb63d6121ce478a96fbf3e731285daa14a638d5bc9dfd2c365e9d1d70b80d3cc461bad93e7b2ee984228206b52c9bd1ca44561efc558a6133e93d82079b1d5bfc5006742848b95a7e50fc3b14f3590f76f1e86decfb7af82d49853b3b1a8b54d8bfc7bed9f50c78ad01a1b8c7a24ea959efc8c54e0a6cbde288d36673fefe3a3a308cbe895de7e1ce747073eeac6df67fd3e15b38de300d9555450948d2c72c592f1a3182be99d760 -Result = F - -Digest = SHA512 -Key = 3082018b0282018100acc1658b0b236d34992af6dfcd916f29c532a00faba18ed2be4835b1dd03951a5e3a46f2da3bb27a955606bd81d2be2d797ae651af241be9e84a52242e137c0d2fc5be00d692d094fd1606138fc280c113aa7e8250a484aea7c7e6f83bdd76d4966a5d1cf1d3ad1deb899ed53b9a633ed6c4617e38ec226523f6480bae9397b34ca5adc6e0fe854ce2e161866bf2621afff61f32b7dd08ce3ac931346315cfc6b66ba37e292bf0b5d274cdf98f175d247222843ff90e63e3d85427134dcc00fb20e51d84ac1b1132393fdaf7596818b56a9b019d65cf4b4302e9e11057ff90508d0c0c2c7b5f9d57e180e71b2f103a60ef6edbe40b1da27d16018bf6d4a4fabc9c73d5827f0e52c4a16e11d4bbcbc6cea5ff5bb2284ecce4b6080064c2794fa1cf6789565e16842882a7d3caae5051a9a45327b74bf4cd5885736bf5bb9bb045082aed3454fd40fe3c83397bb56115035f358735c290b43d5cb1f67b8853651dbac0cb9a197b46abb1121736a17d917dc2892eb2c5b3c4881ab472db54a5c4ad020400c4d755 -Msg = adf9b0a89d93e05bf18d5610d03d9e70474d4a169bbfe6abde2f2e4fc1587e3ba9da89a5053b4ee4de2b48d5af0ce57d78b13af00e66f571b53193daf058d33f98236ace2ce3f8f968333bd8197e82c82fc265591493b4673c62ad86feff72a4a25dbae9bb96c6e2b72e97dfb49c5e9995063418554d0bd49c49e41b905643b2 -Sig = 3b62f0d4fb1b702eda45e08c47d87b2caba37728133b54bbc654f1e39d4290050392a412226429384178be20a2bb8a2d737f08bffd1396052e4c82d625e3ff46955852b4ac9393ff7e620c8fb7ab5a7173f3cf67978127df7dc4496953488365e500ff13a1ec170ab95d48ae4b7c0392c4822f531a7a534464c91401d40561384c0ef1caab31f449a926e2b39dfc1cf0a048d121080ec31776da00f2c392783f15dcccb369844d7cec262fb6cb755660b0a08f00720b059b0c272262f2a943b6253c353e6069ccbd3c70b0c3a1474cc1d6f878e7a8495b4aad1d963351f9d23b69af996928a86f113ad50b327c26ccd599425c67c4f7bf8e495f7945efd4b11b952c52266ea3ebb46e445d18c596b8d2d6a9e8c70f0e3ceec51784c7477b662b304a5530caf18c3c8a232fd11c63258002714c298c258d724d8e8d4f4117bd74d2d92dc66fc324a257ab2f907aae0c7a8ed9e1aef7e9d0657472349eeb3da29972b11a9005fd93dead2361df7273adc8b968e0d608d782878ed75fd7113b7d67 -Result = F - -Digest = SHA512 -Key = 3082018b0282018100acc1658b0b236d34992af6dfcd916f29c532a00faba18ed2be4835b1dd03951a5e3a46f2da3bb27a955606bd81d2be2d797ae651af241be9e84a52242e137c0d2fc5be00d692d094fd1606138fc280c113aa7e8250a484aea7c7e6f83bdd76d4966a5d1cf1d3ad1deb899ed53b9a633ed6c4617e38ec226523f6480bae9397b34ca5adc6e0fe854ce2e161866bf2621afff61f32b7dd08ce3ac931346315cfc6b66ba37e292bf0b5d274cdf98f175d247222843ff90e63e3d85427134dcc00fb20e51d84ac1b1132393fdaf7596818b56a9b019d65cf4b4302e9e11057ff90508d0c0c2c7b5f9d57e180e71b2f103a60ef6edbe40b1da27d16018bf6d4a4fabc9c73d5827f0e52c4a16e11d4bbcbc6cea5ff5bb2284ecce4b6080064c2794fa1cf6789565e16842882a7d3caae5051a9a45327b74bf4cd5885736bf5bb9bb045082aed3454fd40fe3c83397bb56115035f358735c290b43d5cb1f67b8853651dbac0cb9a197b46abb1121736a17d917dc2892eb2c5b3c4881ab472db54a5c4ad020400c4d755 -Msg = 8b02e84531d5623e528e208c109a68ad04ffbb6ed29d075400b41e3b08a7673dab00d3d589b31344efa70934f0727c9cb7650fe31bc874487466dd81ad4db3a29bcf8b418dcc56d82534d76a66c75b6a0d1fa4d825f126add69076797eb2ff4b0377f7d167a791c09c3b74769a206ddfb037609517a0854bcd38d06ba060b1fe -Sig = 8a5503759f374b78b8bc654ffda8f1add7ea05e24218f9e9c140709a90c5bf8868f081bb2a01a43d724c99e47ebc2634859dd11653b1c5a4d65dd306719b7b4cf2b66f7ba3c93e8731a7adf715c5b0365e0f9453b14d08dcc88052c97d4fdf05f4c92dac2ade4708abe6fe752ed57a5f39281b0c5aa349e3c4ca056f66ccb6fa07154b12657ecd5a94db390e09320dbd2c452e84d389bf2fdf4686b21905497830aa57bc5ced3d23b519f6d6c300ca5d3903ad18ca426b13dfd5bf56e7b47300f88ae7fd0b085807951db84ca9074ec40d285334e85570f0df96afa9d85c55aff0bcc2ba28f2d5fa4860159575ee84194238424213b7673d0f50bf903351e274eac603f2e4218ea8c626fced0aa08097f6630d92139feeabb747ae20e2343c3d8c7647ec48ee2c0d00031b9c882f91efbc7e8487a0010ad3c51f160b902b59baca8f19e8fe90402e1e0131b37a936e101e15f8e4cfedc727cc160c6ae206f3c70ea09f08f00c9bd1837296785536d1bb9785014c59665cd2b930050161d946e6 -Result = F - -Digest = SHA512 -Key = 3082018b0282018100acc1658b0b236d34992af6dfcd916f29c532a00faba18ed2be4835b1dd03951a5e3a46f2da3bb27a955606bd81d2be2d797ae651af241be9e84a52242e137c0d2fc5be00d692d094fd1606138fc280c113aa7e8250a484aea7c7e6f83bdd76d4966a5d1cf1d3ad1deb899ed53b9a633ed6c4617e38ec226523f6480bae9397b34ca5adc6e0fe854ce2e161866bf2621afff61f32b7dd08ce3ac931346315cfc6b66ba37e292bf0b5d274cdf98f175d247222843ff90e63e3d85427134dcc00fb20e51d84ac1b1132393fdaf7596818b56a9b019d65cf4b4302e9e11057ff90508d0c0c2c7b5f9d57e180e71b2f103a60ef6edbe40b1da27d16018bf6d4a4fabc9c73d5827f0e52c4a16e11d4bbcbc6cea5ff5bb2284ecce4b6080064c2794fa1cf6789565e16842882a7d3caae5051a9a45327b74bf4cd5885736bf5bb9bb045082aed3454fd40fe3c83397bb56115035f358735c290b43d5cb1f67b8853651dbac0cb9a197b46abb1121736a17d917dc2892eb2c5b3c4881ab472db54a5c4ad020400c4d755 -Msg = 379b6b72a139346febdb0fdce95394c509a6c5f0876de862e47b922594c00549f76dbb298a5943f05fa44c5bca9a00c05eda934f17b71b98d9dea24d19397949da14d0d2dc7f841b10f3380d4e38a7474a853864c5ead47c00ebf4ed766efe5bcad7d1f5ff719efae710fb7cdef43265b8f1dfb7f7cdba1841eab18d12243a86 -Sig = 88f3e8e1b41671191471092d34520f6a43742702a629f1cc9d2b806c9e6cc1f3ab47fe1b0281570a0825c0de59b24554d4b78b00de2b807a92c51dcf22def3385635b477b9129a34c8543d24173f13167ad7fd7bdc108dd5f8e3f364c3f53ecb26fcc59145ea6ac74aaaa7cf0f1aff4b1462256b87e8d5dc9cf74ad2419b965217cc9ec90337cc01c7d9928ecd310468ca69cce111a16ed5bf7a07d3fe4dbe0b34b59645527547ffb9264ae48eed86d05d1caa8f519d5391bd2ce830d8ad0bda965a735cd4c061797ae661d0bb0431a8189a35aa0b4d2a6a6877b703bea7f09422372913e4ac4e2981e3c917f7bef9f9a1727fab29af9320b9ed44d5229460b06055c2ae911f4eeaca72de9c3b6269ac23943b13376e5009ebf8d349d34a28a07ba2f85466c2d488b6593f7abdf0f221c7aa51e142ba9e6828d23283e39671a41531f01a04fcd3dc70172dcef185e26bcee509a143150ca7f4e2dfdefd2be9dfb98ed0c7b12de9dd8d5653b88758ee1889093dd529657042a86507426caa6488 -Result = P diff -Nru temporalio-1.3.0/vendor/ring/tests/rsa_primitive_verify_tests.txt temporalio-1.3.0/vendor/ring/tests/rsa_primitive_verify_tests.txt --- temporalio-1.3.0/vendor/ring/tests/rsa_primitive_verify_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/rsa_primitive_verify_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,65 +0,0 @@ -# Big-endian public key parts for signature_rsa_example_public_key.der, -# encoded in hex. - -# Basic test of verification functionality -n = CEA80475324C1DC8347827818DA58BAC069D3419C614A6EA1AC6A3B510DCD72CC516954905E9FEF908D45E13006ADF27D467A7D83C111D1A5DF15EF293771AEFB920032A5BB989F8E4F5E1B05093D3F130F984C07A772A3683F4DC6FB28A96815B32123CCDD13954F19D5B8B24A103E771A34C328755C65ED64E1924FFD04D30B2142CC262F6E0048FEF6DBC652F21479EA1C4B1D66D28F4D46EF7185E390CBFA2E02380582F3188BB94EBBF05D31487A09AFF01FCBB4CD4BFD1F0A833B38C11813C84360BB53C7D4481031C40BAD8713BB6B835CB08098ED15BA31EE4BA728A8C8E10F7294E1B4163B7AEE57277BFD881A6F9D43E02C6925AA3A043FB7FB78D -e = 260445 -Msg = 68656c6c6f2c20776f726c64 -Sig = 048efbc9eb5f7a6f55f6d7b9f7e6c3ce58e2db226562ca905e7f972e8f43b6969b0ad878e0d6b290c5bbf2c05410a1efc9de051d91e5faa537e454306f5f526c828379fe28a17e50c8bd4e7c834479da482305a78e198c988a177b9263cea27a2a99c0da98e03b0cc8d880eccdeba7c16dd07f78d980739753690953d1b63106145a80059ed38f52100a9a8d2c7c5371d91b70ce5b7b36d6b97ebef8798d09c01e5b6cb8a6a7fd1a4100d3527327b7d23f8a26187985d8702f8951346ea4a7253e87f765ef587a728021bff37be55d1a8639809e3453ea5a2da482bfedeae18579b51037cfecff5bece21d8c82ee6fa8eb0f43c43c3a23a983c3a2eea4e7d2dc -Result = Pass - -# Test maximum e (2 ** 33 - 1) with too short n (2040 bits) -n = A614CC5E164699777CD3DDFB8C63CFBE0F1848E03CFF5C03066DACAE5BF77F90621835E0521648F5B4D5B1BBD0F26CB776BF3B8C431FFF73F88BA5D0675859FCEF3C194B71941DBA0EF8E7E7933339D53EAB4F2AAC90C17B09351731A829E620B0D3C8890366AA23AE1596DDB17772B4C23AED387A0A6BCABFE40DC3F8E5671CC519FD2770FB7EB1F89F63F23B1D6ADD8929D8813019A97EBA68D1B610FFEFA94F0369EEB02330836DD32515E33286A5ADD80D9C6D3DACD16BAEFD028545DA521E9FBDC3158D0D28B5B266ACD57F1AEFCA9634D8C4F16AAD1224E15886A994371D0AB99C84CE0CDE34512480E9C86C73F09C30C6AEA16827E745F7D30FBC4F -e = 01FFFFFFFF -Msg = 68656C6C6F2C20776F726C64 -Sig = 9E62FFB36FC346B07DACC8AFFA5013F5FE339035ADAF666223255D51BF81B361DD382EB6D9468BF15ED474A18B477F0A45E49EA71EA120CED66A8039B2829CFAF45ED31252D1093B59C6C8543A282C7922D429A7E187207B7370E080E27181310E581D868BBF3F558ADAC0B27E65BA09E507AD2DB275B61DEE3153E2BBCA1EF9FE6BCD2D41257E9E478603EDCE8A545D9E53E5AEE802E4D330B8140054EF32EC3D6EF2BD131A64F8AA66D9D547E75C3C59B5063A5532A610F1A30E1C610749A9DE318313C1028883F40D6E5F9BD2B8629F522DB1C21C3EFD666F2AE3867700FE8BF37CF678F7FD7388373D17D345E96FED83AEEF48FC6662708C258621336E -Result = Fail - -# Test too large e (2 ** 33 + 1) with shortest allowed n (2048 bits) -n = B86EE74B2A5F42C57156C3FA7CF6D88F481850D19E8A85CD1FCE6383EBDACB0E45302D68196B6A9EEAA584A7E0B13E38BBF43DC6E7AC5791789A43FC0C1CB8ED44F28AD81C4B69106C19D8086414BF50B9A2E52760FDFB40252048C9398C3E9298D5CF18BD7520BB62C88D5FE85B3FD4A2DCD48497CCC5E03B7335A81EDEAB2D90BBBCDBE6124BEE43E7B8594B4AE09BFF5DE65D24E0682850383B804FAC4D735C2967B78BDC7B1CBC970247FBB2648CBFFA10B9AC7530AECED949DF613DA85E505353EFFCA7E142E1CCB533BFA99D743071D41037A17530F2401BDD6B6998811DC5ABA431F53086F9FBB568E144AE590224B908A58FC401E283B61F64657413 -e = 0200000001 -Msg = 68656C6C6F2C20776F726C64 -Sig = A7F5989E8694C6444CD2D97D22D2F2CDD7D088C36847A25E8E861CBAECEA48F1828586FC5B40719F2606FC82F9B826C2B55070753E310EBC5A4A9E6BBF82C41F3A0C30E2C22B95ED3DE3866E332048F75F562492946988F5AC7A687793C97D3DBC3E6E3D96C8217F1F873EAF4736594E1B91D7BCC8B037A19850EA1F178EF59F4855C353D26432E1E573BC3630F8D1C9C280ED5F52AE996D2F1F98D0E53C53FA58ECA5F74D97D8DED59729F03241F5E7D87D7B72D549C559B6225BF9AF626179491A2146A3ACF8A18C82BB0696F899359D8B7DBB6FD350D5FAA3C4421A1C34F34895F30E70CFE0A98918C67F97DABE0D24E479A44B787391A22A5A1803A16708 -Result = Fail - -# Test maximum e (2 ** 33 - 1) with shortest allowed n (2048 bits) -n = B4224346F3222B5848AF0071D9A2EDA18FE468FD76BD9C4F5A298A9A089929527EFD835CC28553F990D12FDB6D52F37716FC8E1CEBDBACC8C791C84688D5568DF256BF6B4C10FF039EC16A1E842EE605D3F2B455B3579E9635084D8587BB6871A64B1447586F1D7D015F26FC70792591B127371FDF3812C1D4ABD17273EC9979829FC6F1536C3E3BE1B8830BE03E3BE079BF557A791DA66CD6F635B90FC0D0CFD449814948AF1D9FAA7BA375640252CDB0B19BBB610008409EEE895DCE70D6A288030A1F38DFC37A2738409DEC62A4813C6B78B7AA148AFF2796F5D30A631E062AB0AD884834AEE46F041AA563C048074616ACB71A35092EC29B607973ADEABD -e = 01FFFFFFFF -Msg = 68656C6C6F2C20776F726C64 -Sig = 736495E32CAB554FAC3E81605BDBCCF2206D49CBC682A6DFE20A298354109F0FD5644CA06F281240AC0AA6F33AF35855CF6D24D870E795AFCFAF013C2E46B54EE09AD13361A2BB275DC3F0AB14AF075EABA9B3B094FA6970926E41B9FD0951B8BFBA67F3827CE2F1D5D49EB3BAB34211A759655A33689901A77EC5384D9A26979F2AF295EC2E2A5EE92730EA4C0922075F00E43E900FF6B8EF702659ED273B1CB9B95E811A4708D6A0C175F344DE8B114B7E15C41C1BAB9A7C19869FD5F615C6E5455C920A4C8F41D440CAEBC8713E2CF9B6153E2E56659BBE9CC056138F942AD988FBC39F153721FDD67BEC29A990492B1A1B9AB84756B423692FA3C98EB517 -Result = Pass - -# Repeat previous test (max e, min-sized n) with swapped n and e -n = 01FFFFFFFF -e = B4224346F3222B5848AF0071D9A2EDA18FE468FD76BD9C4F5A298A9A089929527EFD835CC28553F990D12FDB6D52F37716FC8E1CEBDBACC8C791C84688D5568DF256BF6B4C10FF039EC16A1E842EE605D3F2B455B3579E9635084D8587BB6871A64B1447586F1D7D015F26FC70792591B127371FDF3812C1D4ABD17273EC9979829FC6F1536C3E3BE1B8830BE03E3BE079BF557A791DA66CD6F635B90FC0D0CFD449814948AF1D9FAA7BA375640252CDB0B19BBB610008409EEE895DCE70D6A288030A1F38DFC37A2738409DEC62A4813C6B78B7AA148AFF2796F5D30A631E062AB0AD884834AEE46F041AA563C048074616ACB71A35092EC29B607973ADEABD -Msg = 68656C6C6F2C20776F726C64 -Sig = 736495E32CAB554FAC3E81605BDBCCF2206D49CBC682A6DFE20A298354109F0FD5644CA06F281240AC0AA6F33AF35855CF6D24D870E795AFCFAF013C2E46B54EE09AD13361A2BB275DC3F0AB14AF075EABA9B3B094FA6970926E41B9FD0951B8BFBA67F3827CE2F1D5D49EB3BAB34211A759655A33689901A77EC5384D9A26979F2AF295EC2E2A5EE92730EA4C0922075F00E43E900FF6B8EF702659ED273B1CB9B95E811A4708D6A0C175F344DE8B114B7E15C41C1BAB9A7C19869FD5F615C6E5455C920A4C8F41D440CAEBC8713E2CF9B6153E2E56659BBE9CC056138F942AD988FBC39F153721FDD67BEC29A990492B1A1B9AB84756B423692FA3C98EB517 -Result = Fail - -# Repeat basic test with left zero-padded n -n = 00CEA80475324C1DC8347827818DA58BAC069D3419C614A6EA1AC6A3B510DCD72CC516954905E9FEF908D45E13006ADF27D467A7D83C111D1A5DF15EF293771AEFB920032A5BB989F8E4F5E1B05093D3F130F984C07A772A3683F4DC6FB28A96815B32123CCDD13954F19D5B8B24A103E771A34C328755C65ED64E1924FFD04D30B2142CC262F6E0048FEF6DBC652F21479EA1C4B1D66D28F4D46EF7185E390CBFA2E02380582F3188BB94EBBF05D31487A09AFF01FCBB4CD4BFD1F0A833B38C11813C84360BB53C7D4481031C40BAD8713BB6B835CB08098ED15BA31EE4BA728A8C8E10F7294E1B4163B7AEE57277BFD881A6F9D43E02C6925AA3A043FB7FB78D -e = 260445 -Msg = 68656c6c6f2c20776f726c64 -Sig = 048efbc9eb5f7a6f55f6d7b9f7e6c3ce58e2db226562ca905e7f972e8f43b6969b0ad878e0d6b290c5bbf2c05410a1efc9de051d91e5faa537e454306f5f526c828379fe28a17e50c8bd4e7c834479da482305a78e198c988a177b9263cea27a2a99c0da98e03b0cc8d880eccdeba7c16dd07f78d980739753690953d1b63106145a80059ed38f52100a9a8d2c7c5371d91b70ce5b7b36d6b97ebef8798d09c01e5b6cb8a6a7fd1a4100d3527327b7d23f8a26187985d8702f8951346ea4a7253e87f765ef587a728021bff37be55d1a8639809e3453ea5a2da482bfedeae18579b51037cfecff5bece21d8c82ee6fa8eb0f43c43c3a23a983c3a2eea4e7d2dc -Result = Fail - -# Repeat basic test with left zero-padded e -n = CEA80475324C1DC8347827818DA58BAC069D3419C614A6EA1AC6A3B510DCD72CC516954905E9FEF908D45E13006ADF27D467A7D83C111D1A5DF15EF293771AEFB920032A5BB989F8E4F5E1B05093D3F130F984C07A772A3683F4DC6FB28A96815B32123CCDD13954F19D5B8B24A103E771A34C328755C65ED64E1924FFD04D30B2142CC262F6E0048FEF6DBC652F21479EA1C4B1D66D28F4D46EF7185E390CBFA2E02380582F3188BB94EBBF05D31487A09AFF01FCBB4CD4BFD1F0A833B38C11813C84360BB53C7D4481031C40BAD8713BB6B835CB08098ED15BA31EE4BA728A8C8E10F7294E1B4163B7AEE57277BFD881A6F9D43E02C6925AA3A043FB7FB78D -e = 00260445 -Msg = 68656c6c6f2c20776f726c64 -Sig = 048efbc9eb5f7a6f55f6d7b9f7e6c3ce58e2db226562ca905e7f972e8f43b6969b0ad878e0d6b290c5bbf2c05410a1efc9de051d91e5faa537e454306f5f526c828379fe28a17e50c8bd4e7c834479da482305a78e198c988a177b9263cea27a2a99c0da98e03b0cc8d880eccdeba7c16dd07f78d980739753690953d1b63106145a80059ed38f52100a9a8d2c7c5371d91b70ce5b7b36d6b97ebef8798d09c01e5b6cb8a6a7fd1a4100d3527327b7d23f8a26187985d8702f8951346ea4a7253e87f765ef587a728021bff37be55d1a8639809e3453ea5a2da482bfedeae18579b51037cfecff5bece21d8c82ee6fa8eb0f43c43c3a23a983c3a2eea4e7d2dc -Result = Fail - -# Repeat basic test with right zero-padded n -n = CEA80475324C1DC8347827818DA58BAC069D3419C614A6EA1AC6A3B510DCD72CC516954905E9FEF908D45E13006ADF27D467A7D83C111D1A5DF15EF293771AEFB920032A5BB989F8E4F5E1B05093D3F130F984C07A772A3683F4DC6FB28A96815B32123CCDD13954F19D5B8B24A103E771A34C328755C65ED64E1924FFD04D30B2142CC262F6E0048FEF6DBC652F21479EA1C4B1D66D28F4D46EF7185E390CBFA2E02380582F3188BB94EBBF05D31487A09AFF01FCBB4CD4BFD1F0A833B38C11813C84360BB53C7D4481031C40BAD8713BB6B835CB08098ED15BA31EE4BA728A8C8E10F7294E1B4163B7AEE57277BFD881A6F9D43E02C6925AA3A043FB7FB78D00 -e = 260445 -Msg = 68656c6c6f2c20776f726c64 -Sig = 048efbc9eb5f7a6f55f6d7b9f7e6c3ce58e2db226562ca905e7f972e8f43b6969b0ad878e0d6b290c5bbf2c05410a1efc9de051d91e5faa537e454306f5f526c828379fe28a17e50c8bd4e7c834479da482305a78e198c988a177b9263cea27a2a99c0da98e03b0cc8d880eccdeba7c16dd07f78d980739753690953d1b63106145a80059ed38f52100a9a8d2c7c5371d91b70ce5b7b36d6b97ebef8798d09c01e5b6cb8a6a7fd1a4100d3527327b7d23f8a26187985d8702f8951346ea4a7253e87f765ef587a728021bff37be55d1a8639809e3453ea5a2da482bfedeae18579b51037cfecff5bece21d8c82ee6fa8eb0f43c43c3a23a983c3a2eea4e7d2dc -Result = Fail - -# Repeat basic test with right zero-padded e -n = CEA80475324C1DC8347827818DA58BAC069D3419C614A6EA1AC6A3B510DCD72CC516954905E9FEF908D45E13006ADF27D467A7D83C111D1A5DF15EF293771AEFB920032A5BB989F8E4F5E1B05093D3F130F984C07A772A3683F4DC6FB28A96815B32123CCDD13954F19D5B8B24A103E771A34C328755C65ED64E1924FFD04D30B2142CC262F6E0048FEF6DBC652F21479EA1C4B1D66D28F4D46EF7185E390CBFA2E02380582F3188BB94EBBF05D31487A09AFF01FCBB4CD4BFD1F0A833B38C11813C84360BB53C7D4481031C40BAD8713BB6B835CB08098ED15BA31EE4BA728A8C8E10F7294E1B4163B7AEE57277BFD881A6F9D43E02C6925AA3A043FB7FB78D -e = 26044500 -Msg = 68656c6c6f2c20776f726c64 -Sig = 048efbc9eb5f7a6f55f6d7b9f7e6c3ce58e2db226562ca905e7f972e8f43b6969b0ad878e0d6b290c5bbf2c05410a1efc9de051d91e5faa537e454306f5f526c828379fe28a17e50c8bd4e7c834479da482305a78e198c988a177b9263cea27a2a99c0da98e03b0cc8d880eccdeba7c16dd07f78d980739753690953d1b63106145a80059ed38f52100a9a8d2c7c5371d91b70ce5b7b36d6b97ebef8798d09c01e5b6cb8a6a7fd1a4100d3527327b7d23f8a26187985d8702f8951346ea4a7253e87f765ef587a728021bff37be55d1a8639809e3453ea5a2da482bfedeae18579b51037cfecff5bece21d8c82ee6fa8eb0f43c43c3a23a983c3a2eea4e7d2dc -Result = Fail diff -Nru temporalio-1.3.0/vendor/ring/tests/rsa_pss_sign_tests.txt temporalio-1.3.0/vendor/ring/tests/rsa_pss_sign_tests.txt --- temporalio-1.3.0/vendor/ring/tests/rsa_pss_sign_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/rsa_pss_sign_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,151 +0,0 @@ -# RSA PSS Test Vectors for FIPS 186-4 from SigGenPSS_186-3.txt in -# http://csrc.nist.gov/groups/STM/cavp/documents/dss/186-3rsatestvectors.zip -# accessible from -# http://csrc.nist.gov/groups/STM/cavp/digital-signatures.html#test-vectors -# with SHA-384 digest e918e2fda7c3159676ed33547b08e1dd4ec2fcbd0799d51510ce69b5d7302132b6fdf793709a3509773313b5d507081b -# filtered and reformatted using convert_nist_rsa_test_vectors.py. -# -# Digest = SHAAlg. -# Key is an ASN.1 (DER) RSAPrivateKey. -# Sig = S. - -Digest = SHA256 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = c16499110ed577202aed2d3e4d51ded6c66373faef6533a860e1934c63484f87a8d9b92f3ac45197b2909710abba1daf759fe0510e9bd8dd4d73cec961f06ee07acd9d42c6d40dac9f430ef90374a7e944bde5220096737454f96b614d0f6cdd9f08ed529a4ad0e759cf3a023dc8a30b9a872974af9b2af6dc3d111d0feb7006 -Salt = 3e07ade72a3f52530f53135a5d7d93217435ba001ea55a8f5d5d1304684874bc -Sig = 4335707da735cfd10411c9c048ca9b60bb46e2fe361e51fbe336f9508dc945afe075503d24f836610f2178996b52c411693052d5d7aed97654a40074ed20ed6689c0501b7fbac21dc46b665ac079760086414406cd66f8537d1ebf0dce4cf0c98d4c30c71da359e9cd401ff49718fdd4d0f99efe70ad8dd8ba1304cefb88f24b0eedf70116da15932c76f0069551a245b5fc3b91ec101f1d63b9853b598c6fa1c1acdbacf9626356c760119be0955644301896d9d0d3ea5e6443cb72ca29f4d45246d16d74d00568c219182feb191179e4593dc152c608fd80536329a533b3a631566814cd654f587c2d8ce696085e6ed1b0b0278e60a049ec7a399f94fccae6462371a69695ef525e00936fa7d9781f9ee289d4105ee827a27996583033cedb2f297e7b4926d906ce0d09d84128406ab33d7da0f8a1d4d2f666568686c394d139b0e5e99337758de85910a5fa25ca2aa6d8fb1c777244e7d98de4c79bbd426a5e6f657e37477e01247432f83797fbf31b50d02b83f69ded26d4945b2bc3f86e -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = 60402ded89d0979afb49f8508eb978a841abc2aec59cacef40b31ad34bac1f2d3c166611abbed1e62f6b5fbb69cb53df44ae93ab7a724ea35bbee1beca74fc0188e00052b536ac8c933bf9cf8e42421a795aa81b1bc6b545eaad4024161390edc908c45aae1f71b4b0228e3104048d816917cba4ae7f2afe75e7fcad3873241a -Salt = 3e07ade72a3f52530f53135a5d7d93217435ba001ea55a8f5d5d1304684874bc -Sig = 5f183009708b379637dac2b14293709aa6d7e86c267a0b690a3c275031139891267c64e5edecdff14c2cc2f2d985b62f900aee6e04ca51a70a5f946463691cf16c2d45547c5374f15bdb8881641d3040ef57807532cf5b2ced07623d0f638b39ebc2f2ce283eea2247e1df3af5430554d1d4b88b7b21622993419971b7d0d5449122a10fc31b2ddcc53ff751ff4bf4d336fac667b646780272db89a3ea4226afa20877bfb86ba3ff4204e5cd56e13a1dc9d53f5c9465b97a182b2bf671512ef89e6c3969f97307a3e4beba39a78e0ad1bb9799cda92976ca39d99db4ac149c84bb9bc8997e8d5e056d67ca23fe4be28e66c4bc00a25d65bb9d7d623fea2d3b9cf859dfd9efa9e52268bfa297afb1cc2883db0c9c42fc04180e2ec6f49657c7008e4025061f896886613895a35bc2d3655a8f50a9fca2ac648f352eb06bfba2fc340aaeead4a8457c65e2e8fdba568c60a6d8d381f5d9caa30127771f4a94fdb8cde7be4fa7b4f89fe379dd3e1ca66ae1fdd63bebdc0015448e61ef1666594b8f -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = 2f03701c2fe07d47f5fa2c83a8ea824f1d429ce4fa1df2671bfadd6234ca5775b8470249fa886dc693d2928603b2a3899b48062a9ae69e5196da4ceb1d87b5979dbb46a2813c76369da44bcecc6f20edd753a51099d027e1610712ad98cfb418a40643100b2522ffdc1760454b4c82e59b09827e4102177e462a3792edcada61 -Salt = 3e07ade72a3f52530f53135a5d7d93217435ba001ea55a8f5d5d1304684874bc -Sig = 8291bc1be9c981663156ec80c1ed1675763de06199b9f2760caaed5207fb4b3d6037bd08462b100bb1767e3340105b1a68728bc45c7d6fd078dc1b5e7cbfa193006d52f67e77fcf809cf26172a46db384eaf552a5fb8e33840fa3ef3d6b20c7b46c32ef019e8d15dd38eab66f6e40399ad0bbb07f94b8c555196901c27e2d4573958f53060d800cfff40c602308044b75d6451801c688d276525c3fee17a6792882a074c8a41420109e2511418c9eeaf3ab47350dd8c2d3e066abeb7913e08f0a40abe71d397c3dddafc41fbd04cc8fa3b0641bf53a90031b61a2a9b63d8ed8aacc9b301593c9f425105498cc4f84627f4950758e01a291b9b1a33ba918aacc172b68c9fb2c767c65910816921281aa8e5482512cee686e51cabe88e18f923fde170a506ba3c340fd1d68261986347d30d124931db2ce17602150000b794c050e137f4ebd45cc41f70ef3df1656218ff76f2e75ad96e4167eed524fa2ed9fd1a0cf76926f382ffb16124dfc87bb1a4110928d5b1cd3b16204ceeeccb7db88fce -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = af90f131f9fc13db0bcebfae4a2e90ad39dc533f34165e3262bc23ffe5b20450538669bf6a5210e1ffe4a583381d9333fb971903a68aa08901f14c2a71e8d1996e59889a36d7c20cc3ca5c26fbcd930128541a56a7926a8ae49a5ae786c4ef2de6527549c653ce6440c80b1ffc06391da65b7dc39ff4643bf3fe74bf8c0c0714 -Salt = 3e07ade72a3f52530f53135a5d7d93217435ba001ea55a8f5d5d1304684874bc -Sig = 8c45e38eafaaf10a710e131bec63e51e67741774a9ddbfccdd131a123ae2a03067e7a6a92e653a25178bf527b93d6aa83fa366a2bd44896baa8b7f3f54830e4d9f5632c2d1bcae2aaae8c55782132aa7279cf1cbb6b7a81e4965ff84635c296c5ac206a04680e91e7b1ee7e5793701b1feb832250010d4ad4017c1608de8f405014ca73c39adae7c4adcbaee35fbbc71151cf955acecd8083677fe49ececcb62353c0a89c9dcb9c507979b56bfe060fec45567517c05f29e262df50767df7547630d8a7b32483b923bb1e3d510422dd4cc2d61a647e4f9636aa7587d4f8ed84b6174c1fdca9a217d9b907972a66c1f5a2ec2dadb60b93b515bf74072d315d17d54d57d721c8f4ce1a43eedf2025e51a48e9ea28160cf300d7a26010383c3280a186c44a53b7188e6caa364bf4dbe0baf4dcbe37d70e3a475cfdae339386558ccbc119873b1863975e2300ede1e420031b4cdac567e7b9c5d575c8bae27eebb37097050acdc87008ca2380f5631d190029a1d712acda147c5c4378cb6eac81731 -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = e57debad3563fa81f4b9819405e41f98a54096d44f6ed119dceb25f8efe7d7329054de70173deb344c59a710cce03b16af9d168f6745eaf0eb07f80916648e804941ce7e583ab0a8a43a4b51844850edeaa4d7c943135efa9e770e9411a2411c586c423fc00353c34483f5bff5c763079f7e60eba98132213d64efffa94af7ed -Salt = 3e07ade72a3f52530f53135a5d7d93217435ba001ea55a8f5d5d1304684874bc -Sig = 851dcd2d4e1d34dae0fd585af126be448d611acaeacfa34f1492aa7d1caff616707dc31b05186cdbef769479243afb341577803b579e105070ad5406a6744f56e55f569370b9fcf6ab10e1aa0383f9182d451afb41358a2f8c29d1a571e11c404e6870cbb04f6ef30414d9b6d7f1416bacab0184eebd8deae72f2a48bea3a7844a8bf472a5f8d349d5973ffde3b1c40623dbaabd6f681485a9691c9be12618bba393b396f41cfeb89e18e378c51f147c7b0ededbc403bb1306454848c9bdb89f947843d0aeaadcdf09bad99efb76e742322521929f034dadffa483958df58a71af7da45461fc408c7c45973fc60c37a6358743315169b3100d4cd54f810d6e0369b9847ee38795cfe58443019523c3c9003edec4cdaa70de31d00958653058d8509907a5149a9f81be0ed028724f7232b57f93dc62ccf093a2635ee1e5bfe6ca9ea017ffab79182eefff542d278c471e1a2b34231700423bd0e757f6a572a14a99c90329dd0701f347d8a679cff25fd6b0d380ee5dc330d6ff1b4b1a347fc98d -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = 28db8ffa55e115df7f188d627cd291fdecfbeea1109e1155e0aabc2157f7fe2a1284611e190365d2fd972d2a23dc793a5f28d4aac4100f5fbb2eed57532220d5d8d774bfa7084b44400249c19dab50e6c3c3af15966a960af1e2cec1f697a694a35c31a5a6f8ae7b73e148f09347004a3f54e7a82db390a0aa4fc526e95d79af -Salt = 3e07ade72a3f52530f53135a5d7d93217435ba001ea55a8f5d5d1304684874bc -Sig = 72c5555111eaef954236163753674a6ff81f182cbb379bfc6b548a52f9a5f260a0ed58f562a6086cf5ed00ed30adb023e90076a8adfa17cfd7d74f1e7b1978b210da847eda6b49891e6bd3fc6cd4c87b9326e8481a16c66e40021e5f878c303d3d8532bd7d966513717d5499865b2d03e378e76f7940f0448ab4d112e3c52cb332d340af122de3ee849f2e2544a40691ddf701d902bfe629766b36d82449286fd03f75bb2632dd61d6b3c6ce1c9ea8e5aff92ad2ca95a950eecd998e495e90e1f0966f922b7fb3f03380385f3b143ac1960c3bb688adbfd91d8fe1a1c32160243d3bd231a31c95dd78b6648c1175fa9c3c1244b1fa34d7c6f3255853ebacf5b3ec19b864e0a4eaee63fd719c21a72fc25b30b03207cf2aa45fd15d7102e5bae90882d00a812959593031ea3a436898582cae5eded5c7ce43de3dcac30b8690631e8db9f7a0a7f3f67b7524db275aafe02448727ff629d13afa94801d37526fbd9176fc4c216211037f8ec26b4f2672975887d70bcdbeef1e6ae99edbfb6c9a9c -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = 4839d71aabdad8b15d9f37c3d37a346758d8941b01c83909e460f589855ca0e691096865cf62698353787e7ff517561801a6ca98304f6d11d76065e75ff17a8ef5c86d9582798be4ded181424175721afac7477e6309476c14c5e750576ce3cbdc3d8db3ae68655b6674eb149fdeb1f3a903b4d5823feca1015722cd55140224 -Salt = 3e07ade72a3f52530f53135a5d7d93217435ba001ea55a8f5d5d1304684874bc -Sig = 796ac3f6adf4eabcb7a528ca63a6168ca6d31d5e357ad7a3fd180334a90d22bab20b762d767a6e3077c2cc8732784e81330041dc79068d50753bd4109c9c6f9ba03b5ac44efbcc23ecda27948511645fa17897dad7c122957ae56bf4ffe3d7bef85010b33d3b91785b0427417d94b11f73fda90e6a8748e6acc1d2d582e8836bc7dbe196876a9545b2a3207c1d4ec28acf8fe6f24c240b56ab3b4e4313a3d951aa1a558230e5f1eaf38cd7fd9b393d58d359f58f4ae51dd3971b418c5b81d0707cd9e2c33a148e492e74bfdd565eba8b1f3935e37a9d1a8764cd30497066e3c4622611fc14c45bf46fc85b3ed3f6c9d4d65e9925fe4b85ed30ec35ffc69c5fdc2bfa35d1bbdcb20e399cf934fe938f4c5798cf091d51100b4db4be42e81901e5dc79a98074119b7980b02821f4c3ff8ea07a2fc09a701978364bbd00ce4c5e2e45629526e34a3652719d27a47371480daf52fa49844f6495f35e6f5e3116c00b27042b3cead283bfc577905f8be87f0d5daa13d1ca74203a9e0d9199e885f4fb -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = c0b8b24f4b8e0bf29168ba73aa912c97121f7140f3259c40a72a6d6f78da2dfcabfcda00bea48459edaaf7b5fb5a9aed2e6d97959c393cd1a524a269c15e8c207cd09142be4f7e7d5016f6f19c735b8ab4c0f28e96954172af3cbcf29d65a161391b213dd5f7c006c294fe5016423718abffc8546ba373cdcb5a053196573564 -Salt = 3e07ade72a3f52530f53135a5d7d93217435ba001ea55a8f5d5d1304684874bc -Sig = 8503b85dbd9eba8d6fc57c6ae2103a78df1fff3600585e3e18f6ba6436a3acaf8e49fd12dcbb37c25b4b765037f545c3da8c39ef6842bc9ec264af6f519272f3d8698ef2ceac55393baa9846a7961b738e41f6360053d866763c824bc5873da14a28eb47d68d67f0cad7880853aeb561045f757a31d9f5c756f54d793637d721c88fb1f60126d3d16478f1fc15e0c4edbb531c2ca2e2fd9e8dabe1df2c09fd55bbc724ebeba290a7646249cd779fa1a923909b29345e54a2e25dd935bf0612a5580018b233d765a6fae3b46ef51bd8325912f439a7dc40148fdb754e2d866f357b8f0ebff6f18a6504ba31d10fe45226c88c9207b9be3c63261d75270466b43c271f75b1ab3c1d6b5a00dda8457b4d5c2195f320b0bd545fdd0679c84483c14a46b4d43c8452879725aa91d01fcc2c3867391c72200ca5d628ed9b566389f02fe74ba2a428a7ba31c00ef6b8d38c6b82b7379d2feb11031848fec0fac5b6091eb7607138bf0b96c3d2c174b5713d0dc8470b532eee6ea0ca1e8ffa3b15cbe0bb -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = 4935eaccd2af7c5b99405471bed9b21da8965004f5e6f2a6b7ed3ee2dd26cebcef4d845fff7c1d5edc94093f88de7a3aecf2bc3ecbd8c435f56e0b89bd099de7ac5f6c4377a5eb1c2ff4d801b8f159547cad4b4e60cad743f8e04627f61e1652e9354d8024710d1cfb2969be365a77f2bf8fa63b9e045257270a96c572ad6285 -Salt = 3e07ade72a3f52530f53135a5d7d93217435ba001ea55a8f5d5d1304684874bc -Sig = 66d1cea94b9603efad92b6ca8a1fbe0c6c4b9dc60ec0ab2c33bb62d27a100e839378a39208715de2102eae384ca407e92787ce1118f91a0ca2640a5c93fdb78635bc91082c99968ceab289890b3ec210d6cc6f1cf7e0fbe2dae88155e88f2fb7b325ab5e529e4b63493e551c53ae38c3fbfae49810050a81cdcea627da21b63224612d4361b9df19761d6ead44488dcabb50127149f077c2963afc049ac8837ff2c29e6a35593e22531ecc2e9ef8bcbaae4349bd7227ff3e13b31bb929bbd49e50059f28fd9ffe8c296a056c2760e5f6d8dab43e9bd557793f0759ad8e08b5c3773a305a0d316ff9bd07b43106335942055adc461a4346f05ab455780f32027de8b8bb6d4845bb24d0c5a21c293d2b0740e8d06ef5fb9dbdacb4fa1c6225fd4e19dae69a8e2cbfdff1ef8b7f21804ead0a45274c735fccbfa1d60bf497a3aa931bebac2e0c8beda9af596dff0cbe11e8d4602d36b2f6c6f5bb80f12f4b9daf2c0748f591098ea63d3193f50a1f4737efacb62ea85fb6fb212b3ec8effe788e55 -Result = Pass - -Digest = SHA256 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = 3b8a68da11b61b5fee1c2ca00a6aa35bbfdbdd42855b284320ec8d0c1848edcf6ac850427d8479eb57bcbe9a11771637886974bd561a5387014592cb717e8364a8183fd4ad463c89c980215ff629d867956ee5e75f71f7a19ea7bd589d7efb915d44dd9789448bc1ac32fdf7a2c911734db2dbc589a83c1a61dab6bd83907ede -Salt = 3e07ade72a3f52530f53135a5d7d93217435ba001ea55a8f5d5d1304684874bc -Sig = 790058355d7ab9eccb46ea12368f3be9cf6b895e1734eb20a13c749557b9fecf92b316870f0f765864b607439ee5f7e510e2c83b2756a0d9877b48e0cf257b13c997b9dc70421d2d87c9b9e5625c36a17e21e20ed389657a3e544c677464eefff08a9ee4adb091a9fbce7626cdc127b5cf817c2a5f069e32c720bc2041cd21a6bae816dbbbe28552d022b7b608fa99da4d217dae8a69f54004fa3c004d50540957648296e14cca729f791b38e3645204c2c6d4cb678b0db63a181b40cd9851be84629a068415d54cab5cb5244c8dac8dc9799a0df1b58cebfbcd8377a391778869dd275e0dc8305eb0351d81e3afa46719355eee4f90894f7fed662dd3b03270660adff637b91e18330a4f3a62c914f0d32b4eb6a30b79371ab55190578a1e7d43294bb0a721def7dae3e021981707930bd9b5cb58675851c83acf330c6ba3aecb3a890ad3c151a1e2b583a7dccbf204850daa9f4679e759ec056abef7ba4d6e0bdfa57a5c5afb6368b048a2b74e3530bfa8991c55de7cc8bbfa990d118ada80 -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = 9221f0fe9115843554d5685d9fe69dc49e95ceb5793986e428b8a10b894c01d6af8782fd7d952faf74c2b637ca3b19dabc19a7fe259b2b924eb363a908c5b368f8ab1b2333fc67c30b8ea56b2839dc5bdadefb14ada810bc3e92bac54e2ae1ca1594a4b9d8d19337be421f40e0674e0e9fedb43d3ae89e2ca05d90a68203f2c2 -Salt = 61a762f8968d5f367e2dbcacb4021653dc75437d9000e3169d943729703837a5cbf4de62bdedc95fd0d1004e84751452 -Sig = 9687115be478e4b642cd369392b9dd0f3576e704af7218b1f94d7f8fe7f07073e3e8e1186fa768977d6b514e513459f2373df6ec52e3de9bd83fcc5cc3e6b97f8b3fb534163c64f5267620700e9d8c52b3df61a7c3748ef159d6b390895afa3af59109a5478d016d96c49f68dfc735ba2aafd5012c13515ed6644f0d4109c45556e14a3821e1aa24beb8a81a48da27f131de84f7ba51581d81b8ff31ba92b8a1fde867f07e32e6c2709253448174dd31324dbc32b05f07587f76a9997decb80f38d8c13d0f6eb3c10e3d96a2293f7464f1e04602ef6e84c2d0245d7db256a67d132a47cae9abe06b61a8968f50a1749995dc15ef0dcb1d5f5959e4d454c8547bbb4d195698f484617bfd122acaae2d0e8c76d28b24005ab03caa781ea97b1c4d9396a16f7998eee7ddd9de4cabe57032d9438a5d99c6b34a956122350263c7e998bc61dec91381012e686d079e39e96b1ea4bfdb7cdf630ddb422c6b580e5506c9cc3d6c100f2041d17ceaaaa54589249f04a1370ffa3bf3ff1adeb890688698 -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = 752a9916f449aebf814ce59ca6e82fa8038e4685419241c1488c6659b2ff3f7b7f38f0900a79c77a3b57151aff613c16f5020ad96ba945db88268722ca584c09b4054a40c00901149bb392f0916cd4244699a5e6a8c37e9621f54b471166797a7b58502cff4083140827052646501f5b5f1bc0b4e129147d7cc157cf6e73ec58 -Salt = 61a762f8968d5f367e2dbcacb4021653dc75437d9000e3169d943729703837a5cbf4de62bdedc95fd0d1004e84751452 -Sig = 6646a88ee4b845da4931274c23840dada6145fe0af954829d1d56661546a25e46316e216bb6b9446b368884ba14969a6f68ccbc1cf5b4e7a6d3aabec67f64963f63b088fa817c855d776ddcada57e5daa50fc1c877389c3cb9d99095a869a963bc91ec24b2422ef6b8dd18fd20d2b215fee6e98cda415ae44d2d2616fe1708292a3ef50a075170b3a7ebab02918ab0301794c17fb35e2038f369d94dd49569c066f7c392889dc4b878c50c7e52586b5081114d202338d23304f16f912d519a9ad21baff0e3d21761f373d08421e10108a983048fcb90eb2adc7c7f12ffa1571b091c781b255a77a880e97975f14f42baf5aa285ecc142157c3e1addd6aa0c09253a11c59144abd3b1e212d89e27ed96fb75756afc20ec67423b151194cb0b0648c659987a5583cb7757779d8a39e205e7101a5351ce1af2c9c6b0847cca57af52593323905e3d2297c0d54541a0125621640fe1deef13e759f8f6c56a2ec2a94831ac2c614b911e79edd542fef651f5a827f480575ae220c495f2a2842f99ec4 -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = 0403ef219938b8cdbf85d3b88cbb9c60d174134e43a7284cd87936d37456cdc3c541b4566b682e575dfc7d8f883fa581b9df7257bc82bc1bc6a2ea2a109bb5e6c5022fac1e390306cb40fe2196cece8143a10af3ba1273c368ec7a30e27e021dcbef6609f9d2be41d3fa5e54fd90a0c83862e40b837ed4ac8600edcb31283bcf -Salt = 61a762f8968d5f367e2dbcacb4021653dc75437d9000e3169d943729703837a5cbf4de62bdedc95fd0d1004e84751452 -Sig = 0a217503fc4870481264d8308292c663476b25f8dec08ea1d1276f0951ec6df27aae3beb93d630bf8fac08b6cce50bd92994851b4f310fdddce8e0d6a8b7a1e866a567b298c5577dc50d8a906ab1be880084e681b26456279149b4b85201621c445de13d127fb77e7f236c39df34052b4629572abe1c02c09eb198188003dd852f88f4f767f1000458680258fa4b63dafc761822ca8b98c1a121b72b1455393bee416d24051290f02a28a7b49b18b30ccb29c26fbac991401a3a6fe01fcd0608920facae9d5bc56540c80f4740af02c9b7a078958a8d8a7a93a5e5b6d2571f49d775ef7c35a6d674290b52cfbcd67277e2b2e829ec437fb70e90537eaa6fe4548551939bfa98fc98e235b264aa6064a505a8d67946e2c33e5c6f0f34fa86ba65715c258f238b69e4f6e36d86a89822b4802d21ba0ba760b2f3a5bd061f50aaadff12e0d86627294bd0c4cd1085b5dab6a6ab30146c9bbb37de3ac5c4f8ee29736d46047e450cfdcb1279e4ca83ab69e858741bfd01a779d475dfc0f71c621d78 -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = 453e0835fee7cde81f18c2b309b804c67b9fd9e96ef0a96e3da94b640978830e5cd1c8940c3d4af763f5334a7caf2d20f0b82541b3434fa138016b92dcf14638817a833d79b79bc7a71223a7e0144ed4977bb217ba8d4f07d7adcd38832c05b0fc61c39a0dfcca3f32971931fd8e6dc9b81107d44c77af8a62d5f9c0c7d0c75e -Salt = 61a762f8968d5f367e2dbcacb4021653dc75437d9000e3169d943729703837a5cbf4de62bdedc95fd0d1004e84751452 -Sig = 6ec22bd58c32d41374c017a77027e770f678fd81017e20cdaaab48a8324b050749e5d864082f1f77fecf67a59c2885e931c3c2f58130fa6806fe1ca899045114b09d09cf9c513ce1109d2210511a3b2e93af511badad2716f48555310e6c5f547afbdb0b9a684491ff3588df933d6b04dae8883f5f8aad62a4570646f72f3656c4a7085623f5152164a81a06ccb59ca478c5c2315414550b0ad8eecd0328b2db01fff7db0f26596c41f970d032925887f1c8a446da889be64d48925b9c6b79a3d897700ab40af20b451aaa6b427ed162864db89f7824b6ae9b475b5433b865335d6f91491c1e32f635cb930dec1aa3ee7ddaa08e8ebd67b6b11a46ba049922446fa69f1a804acc29f6cee487723f2e61a40007865d80cde0119f3fe6e161a339487f5789e1fd23ac0a63b4673969fd8722e3edc9439778928f09610cbefbb42fe6242c73b68d466cef889da156d9d4ff888362db4cf9a941e80f577c944b79fb27dbe0a6967e88f1f67b91b0d38e083fc0c0228cd49d27352521312163f90fba -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = 9aff46c14fd810a039c0a62eda403f5ca902ac41b8e225c6944748a36cb45f8a769ae2a18f713d362206d2af4a1742bf3b1de8e0de69a7fdbb72e66e1c6ed82a6f1f0138edf0f6677940643fcbfe5337cd76ac29456af902b5656dbe7f4c24944d36ab6db07dc39b081662c8a31dfb2c29b4ff04370ea43f4ac7e57adf77ca2e -Salt = 61a762f8968d5f367e2dbcacb4021653dc75437d9000e3169d943729703837a5cbf4de62bdedc95fd0d1004e84751452 -Sig = 62a505b3f3adda45c6badb61b464a28bc45d4c66159a34b63c1cce32604242eb8fcd9ac6929ec6ee4ac1144932d725cbf4638511464ec70dbb5543a4487a241396adb804c9794b271f9d35310ee560368d949a20a2b64cb4617fcf63cf7b60978cad734650dae86c7e51b766522ef0be48bceafe2030564d5b7b17ba125097bdafee48e4df60fbb7ac2d9f14af9a270c2b7ef18cadac45b9b54ef230794339d279d72ba48783bb09b1d1d5c1c65301276523fe90e63789ffbcd489e45f8aa9cf98f33de8f7d9c5cdd21a9ab2847896de6dce0b92f07b1ffb4230ee71ba1fe8048c22dd38af80f8762e747cdec6e99f1ce0d1c743ef98ddbaf7c764412446dca58e6ff5ac0dd13322649acbc96f1c5e0bc58d1a8211853a7d2f51538c5e5e803de0b13044608d6e650bace12945a7008194586e3b74809714b2a52e9f3824be41de9fec3f36175a289baf9fd68b7e92f3754e00b41782d055faa65433c25259aa653fda069386b083fb31aeec8e30c769553f8f0389b6e6d4b392cadd24ce3f74 -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = b50bf2767250f14fa7b6f5ea21a54da8d01e91151eb491107fd88b2d4a5aa157c72d89ba896b87e0fe989819442bf0213e4aa7fde8d6b026e7a70ae965193a0e1bc7f8b8af96298c41f60d154164ba678333c903958d4ffb50b50f57ad8eedb6da61a6398ddbbf9c9955bba6bf5991c4c6615df1cde156d8e188003dcbc3a399 -Salt = 61a762f8968d5f367e2dbcacb4021653dc75437d9000e3169d943729703837a5cbf4de62bdedc95fd0d1004e84751452 -Sig = 1f068bd083a26534040f41c1387e71a8c00370c5f1c958127e0bc721751b5940513023fad02a6101bbcefaaaaeea2875952bf859d494bfb23fd89149d91290359ecb44ecf2fcaa5775e2e61e5f8d5151343576fe9c7167e919a5d081dac6bb8117229c420fd2b0fcb521f4e72366bfb443e688a65fa392eaa5115c292ab05bb4db65468aab267178653dfa0a5efc960636fcce86433528dbce955a0b1aa188ac33ea128206ecc0feeab8f7df6f8c381b10489c8cfb2d02459e4cffc16f43a66aa4eaa19bc518ccfcf9fc1e4861cfa13e9b41fcefade2cd2ebc001ec8430a1cb949a0f2f876badc568c703e4209e7ca16f688ba9705c14fa1c882e6c4871b9deff31521d2d418e0342e189c40ed19c1b6f4320d89a36f78eca143d3c16dd3eb338c0743646fd314c725c2d36a13080bfcdeea0e431de71d61f652033a75424fe1e1586695c3dc463ad553c1cf3ab24a41ff4e031f9e0c2cb0024cef68273ea3b8c1be9d923d3e9c9686c41977ac7be94a6d23181936131c17a39a898c943dcc8b -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = 5ff000f84a951dbfdd635a4d9f1891e94fc2a6b11c245f26195b76ebebc2edcac412a2f896ce239a80dec3878d79ee509d49b97ea3cabd1a11f426739119071bf610f1337293c3e809e6c33e45b9ee0d2c508d486fe10985e43e00ba36b39845dc32143047ada5b260c482f931a03a26e21f499ae831ea7079822d4a43594951 -Salt = 61a762f8968d5f367e2dbcacb4021653dc75437d9000e3169d943729703837a5cbf4de62bdedc95fd0d1004e84751452 -Sig = 18cb47bbf80bad51006424830412d281c66ae45c0b756d03e5d8d49f73037968d13df46ebebd9b5b4c58b164d91d0608e8ebe31d8644cb0bebfaa8e2ccaa1f5746ac8f3bc02ff6930e219f53fe13fc070f910ba1cff0617aea6eb312c1ef285869746673ac1348e89c3646f583d7633f5a2341626bc2e7e2087ff9d8f13d573dc6455dc0068c7ac6eaf5b3093b081614f7b252170c4893891e469121fda655a2a55d67f5df0ff6e29ce5f9b0c3a1a88342140ead748edeea9706d6570e900f1cf3a9adcd7ae64f207585417946b104b3990d1a2d950e0e6a5533d3cfc8c470250e4c797273210f248b8922ab00422f2ecf85aef73587e8c5cd1c2ee6ed9509508409673fe07ee2c462c52d091e7a795d8d3c55fdd5a710d5450695a5a31ed76f115e71a73c6757d2def7ef472571b0bdc7558c71eaefeddec946860b0c77936db31f2001d0499a381e5018870b41ba04c8d42ec0dc55c9fa2af237dc1c405dd8f555b07a237cc50cbce46c3016118cf4ea06c047599283ad4719d647a225206e -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = 531dc2b8566e01a8bfc580da607ec212fc1fbebd5a2590d897046f0ec069df20a1c2278ad70006642d9ba28625d7c1efd4473b68f38fb064346d762bd2fbd5376c2e77de13a31a32a29b88264d44c9f27d3a97b8dc4d1267ab85b5e05c6389575d6a98fc32dea5dbc6cc1a01034a42e1a000b8f63ae720a9a7511474872a6148 -Salt = 61a762f8968d5f367e2dbcacb4021653dc75437d9000e3169d943729703837a5cbf4de62bdedc95fd0d1004e84751452 -Sig = 80baa663877615c2e7ca9dd89958a74e54012efad55ad05868dd74b0ce78a661e2b893c3ac1fd837f282327efe4b041220942649b5472c1ac702070787ae5549398a57653d5fca69cd5446d63f6e9d0684925a235acc96b8a10bdf14fbe209fcd4930b5945910d84b08867b2055fe8eb1d771b753759593b90d6aec5ef182cb33bf2fe29e8c67ea4e8433ecfa3f9ba4ce461f0ab19997f299e95409af97bf57e2de410ef7538f699f385c1abafdf9337f7f9d268da87b2b389131fe3dbefd8c67bd2a158cc4e04f9ab7fee2a58d74d063e6c16958a90574e3e4cb881d32c3116987e46bf5bd44f80abe6b9eb717a9fcd4c0cfe80dd2ca62c33b5dd3a59c64810073e0476085ec7b76638983291b69559c815cd3bb87d4b07e24c6b9ebb7028e800a04f09b110c167f6ee3a3bbb73695d89bee92407d4adcea3eaa47811e23f8c7f2fdfe891f8cfc071cb984a63846b95ec04d6261bb1c5980018feee15c4e7bf632dc8306128fa22c47decfd9e8b099554f17253635e6316712e0b95efa3fb00 -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = a454391a7c3695486c337a41c2add417d8e9e9c6466d2ebb56ad5f97b9e7ce30784cfcd82d6066e372a3a1639a71a9369f2777435c87d100fc5e6638b3631a0bac639f36429b4594726613e5901816cf3a29f9228b96d66090844c7d0026d2e327e24ab924afda6554c2f74f0e69c2e8913798ec3a61e4e4fb6838ee08f89dc0 -Salt = 61a762f8968d5f367e2dbcacb4021653dc75437d9000e3169d943729703837a5cbf4de62bdedc95fd0d1004e84751452 -Sig = 261180717edd905b647bc869f5259203811606221f545a3aee5fc123f297cf7d8a7ee6cee3dc8f97d24284ccdec2fd4680f1428ee75797e0379512aecb9fc1667523413e323c4bd7dded5caf9e5c606e5ee0c694d4d1b5a1f1cb613b980129f64146e42e8261c1f7ef5603954d34d56a50f7431beee5ab291a4759168655a5123640d596b744d97979d39f874ea7ff13a7466a7655d02edb492b58049f2208852297eb023e657f3240c5da9a99fd377728bff3cc073109c31712d94bc24e08c433533d4b86a73b58fbf2c598ccad78d46ca0a055601850960195aac1364dfaddbd06f14a78aac2ab4d374505cc61fc72c1050647d95a733517b709aed2d896721e7484208501480058fa4f6044302dd705c273fa7fb42eaeb02d025092b252e16d270d88dab6f68fd7ad571011f89627683e029d1bf1edc149d47452ebe87ec68679579940f5aec25999b0dedb820a5483ec6901abfee041c03b1a7f743548a2caabca613ff5d9f8fd7c694af12b29f2c2468eff55f9e008757443960fae459e -Result = Pass - -Digest = SHA384 -Key = 308206e40201000282018100a7a1882a7fb896786034d07fb1b9f6327c27bdd7ce6fe39c285ae3b6c34259adc0dc4f7b9c7dec3ca4a20d3407339eedd7a12a421da18f5954673cac2ff059156ecc73c6861ec761e6a0f2a5a033a6768c6a42d8b459e1b4932349e84efd92df59b45935f3d0e30817c66201aa99d07ae36c5d74f408d69cc08f044151ff4960e531360cb19077833adf7bce77ecfaa133c0ccc63c93b856814569e0b9884ee554061b9a20ab46c38263c094dae791aa61a17f8d16f0e85b7e5ce3b067ece89e20bc4e8f1ae814b276d234e04f4e766f501da74ea7e3817c24ea35d016676cece652b823b051625573ca92757fc720d254ecf1dcbbfd21d98307561ecaab545480c7c52ad7e9fa6b597f5fe550559c2fe923205ac1761a99737ca02d7b19822e008a8969349c87fb874c81620e38f613c8521f0381fe5ba55b74827dad3e1cf2aa29c6933629f2b286ad11be88fa6436e7e3f64a75e3595290dc0d1cd5eee7aaac54959cc53bd5a934a365e72dd81a2bd4fb9a67821bffedf2ef2bd94913de8b02031415a702820180073a5fc4cd642f6113dffc4f84035cee3a2b8acc549703751a1d6a5eaa13487229a58ef7d7a522bb9f4f25510f1aa0f74c6a8fc8a5c5be8b91a674ede50e92f7e34a90a3c9da999fffb1d695e4588f451256c163484c151350cb9c7825a7d910845ee5cf826fecf9a7c0fbbbba22bb4a531c131d2e7761ba898f002ebef8ab87218511f81d3266e1ec07a7ca8622514c6dfdc86c67679a2c8f5f031de9a0c22b5a88060b46ee0c64d3b9af3c0a379bcd9c6a1b51cf6480456d3fd6def94cd2a6c171dd3f010e3c9d662bc857208248c94ebcb9fd997b9ff4a7e5fd95558569906525e741d78344f6f6cfdbd59d4faa52ee3fa964fb7cccb2d6be1935d211fe1498217716273939a946081fd8509913fd47747c5c2f03efd4d6fc9c6fcfd8402e9f40a0a5b3de3ca2b3c0fac9456938faa6cf2c20e3912e5981c9876d8ca1ff29b87a15eeae0ccce3f8a8f1e405091c083b98bcc5fe0d0deaae33c67c0394437f0eccb385b7efb17aeebba8afaecca30a2f63eac8f0ac8f1eacad85bbcaf3960b0281c100dd553696db8ccb107609b8917e688bdd8373a8926bc9d114c1c77f7958070e236ca1bd2025ded59a71093b63afbfce39e92bde9ffca983959e7c3e18d75650612258c24eebb61a1b4a68603a2721e3e2483d6da27475a228b1341c78f140948b5c922822ccaed76dae338dddec1e4c5c34b9c53f34a09ff0b2b61a62254e73e6f0ac8013edc2cfa7ecbeb86fcc7309cb0f5b5eddb707af4b9337d34d672af413f3b6efd11e3b49c978f06a356f6f4e0ea50a90797fe32ccaa983547ff18ea1670281c100c1e3089e1bea1141638ca912da01c134f67231a2f737d97e28486e004a43e9c5592ff968ee18109fc71aa4c1a97aa88ece5c4734352bc0c1f67726bc4aac59c19301f23a705be5b3f7825fb284e58a950d795f63d18fe72231eaba9d6a5f90866f8dd34b2b0dfc132db8348efa5a62634e5584a788aebbf073ccb4f3e9f5cde8d0c2e831412485c7f8cf1473abffabcc5d51d8a2a87a22f39d1a250b3cb66d90c573669071aeba9b1080dc079243094a9ae0e5a62e4e8b653cb57f54f4eeaf3d0281c05f8d638d1e0c47794d9305929b4b87281b69397f51b0809573edeb3dcb82f2376ee419491adfa4a9d7f6db51d9573f50d025cc64030744c05794d3350a8bd45b3c5a69b8552e6cbfa2038fb33d4094dd8bb1095c36d4356a88c6ba114cad0c5acfdd224b3f4bc1af30f9a1ee5ea5407a8ce3c71dd09a1ea33f44e63cb9c0cae176515e1e323874adc5c2b788e23bae5123a90b964e44ec2e9be90b496bb537967d05715e3737cd4c35f2bc87ab7cc9ee70116ed2528b3d62237413dfc56e0e470281c1008ced58a9828526335c9517b5ac58c5ae7e74c9c36a7e6c7f571878f3319f52cb8eeaeeee64694ee4a49e582c53b77adac0fb6c808830560c4f130d925e7cbbcaa1221c8a4d54ce116b4c4ce52a56882c5c38000c441673cb91d381a3c5b09cd8ad3d74841fb8d7f9d5cebc4bfd273d2fe28a08fc2df6a57207bef71c6a9d63d54a0d7677d450c6a6d4e9a937a82be8cd4a1677e7ac04712949c7683f412862d40aeaa899640503aabc8794a5ff13e7c72df049ee0fb8203a99fe94a5003c225b0281c10087d010acad9e1540cbfb2c03dcd987d3c2fbd0fa2cd10f2e5b216fad7016a58a98fb43fcaee266b21c99d213089696a0faea4710f8ee7bd9a5eb2452341e58feec965d76e2133236f8b44e8bdd86a591acf8af501cdcc1a5cb1065793b09c0a5536ed414cca22163758b0b41add238e62ea07acba89144f97b9e1509584210aced89986fead9b3d22253f0a7a7372e269a01356070d2e1afac08da15cf23ad29438b0b3fc8d9e8e9f99c8ca970ae703cca71974335adb96a16e85c97689c3a8c -Msg = a05e5782a96ee6d6f10be8830d8c27c0acf272abbf77e684dd6a6c19e5398381e5d0400d3a21927cf904cb6e8e425c1ca3ece04544f25d6c40f0c640d24bc45c807db53044adf63fea835d8cb93a0a4e55f760ebe4594e247051d38d8c34c1413b0ec1d30d3a97888b2fa7c3d59db8c08ab9f985e8d4411635339be95d1b0299 -Salt = 61a762f8968d5f367e2dbcacb4021653dc75437d9000e3169d943729703837a5cbf4de62bdedc95fd0d1004e84751452 -Sig = 87d80275df7b196b7e1d0a41147719d773edd80b5627301a500d91665ba86076e6a31c8f3ae86aedb643fe2af223976ea4eb3d4dca2cbcf81ffd14b7ef7de3ee355a8d0f4143e5b0f0a0950a42811102e602cd214e1c945c47e8b7b66d507103c3456f404f9c48aa7fe48dee0aad05e599f242adcf8ccb0cc9db3a6c244a913551ab595600ecfbb67c25a95b54f4054397abe47650e5c4991edaf1441ba9c8e3fbed904ffbc977142ebdc84769865a215158d5b052e75de318d75012172e28c31db2d8bd4edca787216dde2a7387c543f162fc91924918fd6c845bf1ebc0220a1027fb4227340ca4cb0f183e5b34b1e7f93e14fa57bb9d2d2ea53f86d838bcbe3f055b473b0b469afd2960c0d76ce2c30f3d49a3b29065bb9260248e728cbe328bdf502b109e1f20b9d037860cf9e261611b4cbf27ff9b5bf425b2612afc7cfa3138f78ad26077cbfb947fb2aae6f4be85ab2d1a15860839b822dd03a1a92a19a5c7244e98bdf561625ca2a8df410ff855752ebdf3d49f5eb98f228acdd52791 -Result = Pass - diff -Nru temporalio-1.3.0/vendor/ring/tests/rsa_pss_verify_tests.txt temporalio-1.3.0/vendor/ring/tests/rsa_pss_verify_tests.txt --- temporalio-1.3.0/vendor/ring/tests/rsa_pss_verify_tests.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/rsa_pss_verify_tests.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,335 +0,0 @@ -# RSA PSS Test Vectors for FIPS 186-4 from SigVerPSS_186-3.rsp in -# http://csrc.nist.gov/groups/STM/cavp/documents/dss/186-3rsatestvectors.zip -# accessible from -# http://csrc.nist.gov/groups/STM/cavp/digital-signatures.html#test-vectors -# with SHA-384 digest a57b08a04af67086b065b91789a09f53b940b51df4ad7a56246211d329f04560415684d2ce23658a691cb9d14353ab01 -# filtered and reformatted using convert_nist_rsa_test_vectors.py. -# -# Digest = SHAAlg. -# Key is (n, e) encoded in an ASN.1 (DER) sequence. -# Sig = S. - -Digest = SHA256 -Key = 3082010a0282010100a47d04e7cacdba4ea26eca8a4c6e14563c2ce03b623b768c0d49868a57121301dbf783d82f4c055e73960e70550187d0af62ac3496f0a3d9103c2eb7919a72752fa7ce8c688d81e3aee99468887a15288afbb7acb845b7c522b5c64e678fcd3d22feb84b44272700be527d2b2025a3f83c2383bf6a39cf5b4e48b3cf2f56eef0dfff18555e31037b915248694876f3047814415164f2c660881e694b58c28038a032ad25634aad7b39171dee368e3d59bfb7299e4601d4587e68caaf8db457b75af42fc0cf1ae7caced286d77fac6cedb03ad94f1433d2c94d08e60bc1fdef0543cd2951e765b38230fdd18de5d2ca627ddc032fe05bbd2ff21e2db1c2f94d8b020310e43f -Msg = 7518c85b67e7aef7f26bf006899faef76e076f0c6c946e5dc9c83521771a6d298a9cf5adefdb314b5a07a54d8054c22b879fff50ba552c218291033c918401fd611a7447dddad4815e0f56ded825bfe256557622a385de4b4a69e265c1efd259e2da6db19aac3fa0e5ca2d42fadb4e24c271fc078feb2be10b9afa256f228844 -Sig = 992d48b21bb3d2219b44e8fcc8633cf3aeb591de90f4386496ac7ecd284cb63d7dff81a50b8c4fed9f2ef737692ea6be05248ca138947b49b4e7f3cce6640e049ac2154c40f57e22fa14f97e7a9507e1dc98b206ce6ea0e180039199d1be0a15d1f5093a459e5101aaca2a23cb1f59cad2f1fb99dc956b9d4344bad2c1121d63b915004acbfc7ac60ac9a7b0b1c6812b30bfe087f7f0c7d1625f9c4f458515e11478e3604aa39d14d08bea30b01fcd6189e6f9b701d360e4714d45556b29815c8d8fa8e46e10749ba5e8d445a4c0f487e70ab5890b7ccc1651282a54e87e7db4bb2f7d4a671e71c43c55cf6486416f171d1955037474d06a71dd078767848e5d -Result = F (4 - Format of the EM is incorrect - hash moved to left ) - -Digest = SHA256 -Key = 3082010a0282010100a47d04e7cacdba4ea26eca8a4c6e14563c2ce03b623b768c0d49868a57121301dbf783d82f4c055e73960e70550187d0af62ac3496f0a3d9103c2eb7919a72752fa7ce8c688d81e3aee99468887a15288afbb7acb845b7c522b5c64e678fcd3d22feb84b44272700be527d2b2025a3f83c2383bf6a39cf5b4e48b3cf2f56eef0dfff18555e31037b915248694876f3047814415164f2c660881e694b58c28038a032ad25634aad7b39171dee368e3d59bfb7299e4601d4587e68caaf8db457b75af42fc0cf1ae7caced286d77fac6cedb03ad94f1433d2c94d08e60bc1fdef0543cd2951e765b38230fdd18de5d2ca627ddc032fe05bbd2ff21e2db1c2f94d8b020310e43f -Msg = e002377affb04f0fe4598de9d92d31d6c786040d5776976556a2cfc55e54a1dcb3cb1b126bd6a4bed2a184990ccea773fcc79d246553e6c64f686d21ad4152673cafec22aeb40f6a084e8a5b4991f4c64cf8a927effd0fd775e71e8329e41fdd4457b3911173187b4f09a817d79ea2397fc12dfe3d9c9a0290c8ead31b6690a6 -Sig = 4f9b425c2058460e4ab2f5c96384da2327fd29150f01955a76b4efe956af06dc08779a374ee4607eab61a93adc5608f4ec36e47f2a0f754e8ff839a8a19b1db1e884ea4cf348cd455069eb87afd53645b44e28a0a56808f5031da5ba9112768dfbfca44ebe63a0c0572b731d66122fb71609be1480faa4e4f75e43955159d70f081e2a32fbb19a48b9f162cf6b2fb445d2d6994bc58910a26b5943477803cdaaa1bd74b0da0a5d053d8b1dc593091db5388383c26079f344e2aea600d0e324164b450f7b9b465111b7265f3b1b063089ae7e2623fc0fda8052cf4bf3379102fbf71d7c98e8258664ceed637d20f95ff0111881e650ce61f251d9c3a629ef222d -Result = P - -Digest = SHA256 -Key = 3082010a0282010100a47d04e7cacdba4ea26eca8a4c6e14563c2ce03b623b768c0d49868a57121301dbf783d82f4c055e73960e70550187d0af62ac3496f0a3d9103c2eb7919a72752fa7ce8c688d81e3aee99468887a15288afbb7acb845b7c522b5c64e678fcd3d22feb84b44272700be527d2b2025a3f83c2383bf6a39cf5b4e48b3cf2f56eef0dfff18555e31037b915248694876f3047814415164f2c660881e694b58c28038a032ad25634aad7b39171dee368e3d59bfb7299e4601d4587e68caaf8db457b75af42fc0cf1ae7caced286d77fac6cedb03ad94f1433d2c94d08e60bc1fdef0543cd2951e765b38230fdd18de5d2ca627ddc032fe05bbd2ff21e2db1c2f94d8b020310e43f -Msg = a3bf44cae8aa8347fd07d84a33eec5dbbdd7b6431368887c988c4be779c5473dd8c33ec82a35f1d3dddfe55f3eed67179b87ce86a4a50088172538fe9d1b06c6ef6897eb3c8e3618cfc21353ed4343e7fceb09a2eb035441cd5c8829c79b81582dd5d69ae85c5a001bd8e98e069961342a2bee00ad2b8b91015ac5cfc1f0c2d9 -Sig = 877f20eed60f8ce286108a5dde9b6828b37e3fbdb08fe153e591513897440f21f81214598fba08ea077394ba8c2a44aa4f0d8f3a5fbaec3dc69b3bddfbe28397c90adf35d08ea771c7aaa31eb06413c1c62b77618af940f4c71859fa4384d29b48e5cfc941d69bf0a3804d2008e758742b8ed68754bc71d231623d181347c36833a7d7160f742a37ce7d432d748e514aa7d8156b50c532151390d086cdcf9d59f122c6d97f4ccb737289f7b00a237cb6b4aae6ba79d41ff73d019a26b59ade04c967356e2aad52f115357ffb7676f190db38dcfc98666e5b258559c8c85fa32942cbcb99d757e8847e56a1687b3302415698708191b136d923349b02fe38b6be -Result = F (1 - Message changed) - -Digest = SHA256 -Key = 3082010a0282010100a47d04e7cacdba4ea26eca8a4c6e14563c2ce03b623b768c0d49868a57121301dbf783d82f4c055e73960e70550187d0af62ac3496f0a3d9103c2eb7919a72752fa7ce8c688d81e3aee99468887a15288afbb7acb845b7c522b5c64e678fcd3d22feb84b44272700be527d2b2025a3f83c2383bf6a39cf5b4e48b3cf2f56eef0dfff18555e31037b915248694876f3047814415164f2c660881e694b58c28038a032ad25634aad7b39171dee368e3d59bfb7299e4601d4587e68caaf8db457b75af42fc0cf1ae7caced286d77fac6cedb03ad94f1433d2c94d08e60bc1fdef0543cd2951e765b38230fdd18de5d2ca627ddc032fe05bbd2ff21e2db1c2f94d8b020310e43f -Msg = e1c46c309b6366fb4d56ac08c9393cee9a7c95bbe7b7c0e79a3d9187c0f42bc33364c28a770da585e3fe7b4901a3ccd037dfc42aa65a3470521ddafa835ce2d16c92ac670bd4d086505e608781736dc4dd64cc5080ee19e586c8fd1d737dade5d378b32f1d5df1e8dda0e32a125024b2d53334943c18782d7e69825a580093e7 -Sig = 8ed1f28fd16d45d416a21554e104c006fd7868e5895e8b99831ae0938135b543610df64a8c3574d08118bfe396f9a5609a8dbda21b9a8530ff0ba90e629d6abe30d2c1b590600db971fcda80e6eaa84017e209b9bd3b641f3c81d5d27f842bec8019790ed99a0e5db4aedc1c070b047c19410cbc56e9a0ff12d8f6e5d7371b1011ecfecf7be7a74f94403590a52f95238dd69e0b5f4c1fcde97ecfdb1acc3803e59ad8b3088b2bc509e3dd12d40d875625dc8362c579176799c75e4fadcdb392c68f401f68d854e46377f084c081f9d83743039f6934722e30ef3f0226bc841d79a4eb68c5cccbb6ae0e9200444e50ff0d0953047ef955d2d39a70c3b837c5f4 -Result = F (3 - Signature changed ) - -Digest = SHA256 -Key = 3082010a0282010100a47d04e7cacdba4ea26eca8a4c6e14563c2ce03b623b768c0d49868a57121301dbf783d82f4c055e73960e70550187d0af62ac3496f0a3d9103c2eb7919a72752fa7ce8c688d81e3aee99468887a15288afbb7acb845b7c522b5c64e678fcd3d22feb84b44272700be527d2b2025a3f83c2383bf6a39cf5b4e48b3cf2f56eef0dfff18555e31037b915248694876f3047814415164f2c660881e694b58c28038a032ad25634aad7b39171dee368e3d59bfb7299e4601d4587e68caaf8db457b75af42fc0cf1ae7caced286d77fac6cedb03ad94f1433d2c94d08e60bc1fdef0543cd2951e765b38230fdd18de5d2ca627ddc032fe05bbd2ff21e2db1c2f94d8b020310e43f -Msg = 925d59f953cb3ffb6d5a3a55c079cb1083997536e33d7c8aed50ed76aebcde459938f79229613200c70dde2ceddceae08c10608aab9e30ec51842f14a65e5f8f553471da3497881927ec400b4207ef3e2dfc2b7fcd318c9520b8b22f69dc8a1a8efaceb7be93cbad569e67db062362913005dcff902018ed22937fad405fe84e -Sig = 62b07f6d1b8f13651d7f22ce2ce01061090029db5af7dcecfeafef20621dd9e254a0fb914f76a3d79662257489cb8122708583d30778791a77da83c7bea81140c61e4d0484806e20fb85f24d1bbf774ef2ed38809c9b14f2a58c6e8649b760baa901544522ed94bd405c77201d07c8d12864a8d1e97a4d322c29994b214fc83c2ecd5c955b9bdec424e7ca5a1325ec0aae4ab0c202b980a2187f096aaaaa5e85550ebd325799f4f30ef2ead07e79c7a475667f5965e6b50269513659ab5962a391c43cbc3a3da34c0fdd1546c40ea7e2eb5352ce6a06ce6a6385ca0ddd5d162c137836df9ea1f89cfa00c3eb1671a43bd625526f3b6ba8e48a7a2d56fb4f01c6 -Result = F (5 - Format of the EM is incorrect - 00 on end of pad removed ) - -Digest = SHA256 -Key = 3082010a0282010100a47d04e7cacdba4ea26eca8a4c6e14563c2ce03b623b768c0d49868a57121301dbf783d82f4c055e73960e70550187d0af62ac3496f0a3d9103c2eb7919a72752fa7ce8c688d81e3aee99468887a15288afbb7acb845b7c522b5c64e678fcd3d22feb84b44272700be527d2b2025a3f83c2383bf6a39cf5b4e48b3cf2f56eef0dfff18555e31037b915248694876f3047814415164f2c660881e694b58c28038a032ad25634aad7b39171dee368e3d59bfb7299e4601d4587e68caaf8db457b75af42fc0cf1ae7caced286d77fac6cedb03ad94f1433d2c94d08e60bc1fdef0543cd2951e765b38230fdd18de5d2ca627ddc032fe05bbd2ff21e2db1c2f94d8b02033c6cd1 -Msg = 08d3ac24a595da811cc9bba78828f1452ff390ae653f22d1ad91ef6b22aa7b7b15a44ff7f83efcbd7a755eccf4541eb4040c7a4b774749a26dba3937b7f95c6c8490e3383d4f291dade5f35a65b1f6615fd4998be18bfd0ba4bc3a2136ceec909dbeef513d6f6689fc4202b9a3e78134877374d76ab246f49cbe7a8f65d034cd -Sig = 72ea7d669ac699a149c13aa168eb3e148f590bbc0424951f1c3144c541915573ecf05cabb5275488c98d0ebe55b1f1af49ef8cc72cf00e849897c6afa53833caf9ffc00eb84cfe55b8277e93a6ac3e04b111c9d07ad62082ca32854c40de1e0956a18f8460438484403abb91e6fad12b28f114157f1b6ef563d2fa438ccb8a16aa3afe6ec5e98365c30d9a355e7e14b039bbdecf59f91248d0f1e317d2e3c819096ed68cf98361d7f9310b354f4f45e2f7c4dfb82c218cd438f3174a6f017f0f148a71c40ad5b7e2c8081ddbaeaa764d601bb2e075eb3618aabaa4b5060022c6d23ef072643686a759227daef0331b28ee76da4ab3b5ad5dda8991b9937d1a59 -Result = F (2 - Public Key e changed ) - -Digest = SHA384 -Key = 3082010b0282010100cb59aae30883db678ea7b2a5e7009799066f060757525166030714a25e808482e752f04f78611b3509d6005b411530c9ada4d8fbddc85f9db3d209eccc6cf0cae9aeb902e96688d2547974b7eb3323eeaa2257cf8d5c7c97f5176e2cfd29e19d0487380e3e64338c73bd592d52e9dbcc9606ed5835758c1a112c6a004256b5c4338322695df2ba573be0e79a7b9f9afd497dd38eed39f05f88d7d399d1e984d048067596ad1847ce51221babf51873bad2d81fa91cf3d9fd307e3ebd41fc49a8b3252ed7a71fd2357330bef2f1f89f2c80f740567e2ae8d168e56f007e8fefa33d2eb92b7d830a4f978ffe842ef0697db50602b19642afc50ac1f837e476c0fd020400cbb343 -Msg = 329b4257ece34ecc0185031b0bc665c9c87ac66ec01a8c69281734d2076e97b0977d6c6cee140f86ddd0818719a4af3798b9f70f3e78e8f1b9e54917aa2e5d4a05836654ba2968b795ca2f9f621093165672fb77aa4d20258936147c2c8f8208445837f59848e1c7ef1c174c30309acec84cdb8c4cc0bd6c5fb39bead7b88d54 -Sig = bc7b0631f92c7dfb0e3e8694650bdc73623d0356ad2897aad8eca32ef4531263f3219e0af3ef2fa3b8a3eb878b3f9c293c634263bab59b1dbdee04afc3fe39dd8bcf22a0052e6a081d3b68399294c8c6aab199beefc49706eb3436d95bd3e655d21cbb0fb3488052df8819594ab0f9138fc5ad4e9e3521425e375684d94dd74b9a3a7a858aa1023e967502a38b67ed3b8b8f6086427e8c8b4ca608c4b394fc8dfb818daaec3d4f10e77f51d80c0a103569dc28814a80eca64100d9fce5d6b9081f871bf8aae624f1786151290c86dfac7643b21c74f4f5313bf8b7693dabe4c816d7d309ce27f4b08b59d6a26795a9c2278ffa2185a1af12257a5a6de57c1a41 -Result = F (2 - Public Key e changed ) - -Digest = SHA384 -Key = 3082010a0282010100cb59aae30883db678ea7b2a5e7009799066f060757525166030714a25e808482e752f04f78611b3509d6005b411530c9ada4d8fbddc85f9db3d209eccc6cf0cae9aeb902e96688d2547974b7eb3323eeaa2257cf8d5c7c97f5176e2cfd29e19d0487380e3e64338c73bd592d52e9dbcc9606ed5835758c1a112c6a004256b5c4338322695df2ba573be0e79a7b9f9afd497dd38eed39f05f88d7d399d1e984d048067596ad1847ce51221babf51873bad2d81fa91cf3d9fd307e3ebd41fc49a8b3252ed7a71fd2357330bef2f1f89f2c80f740567e2ae8d168e56f007e8fefa33d2eb92b7d830a4f978ffe842ef0697db50602b19642afc50ac1f837e476c0fd020324f1bf -Msg = 3cbc49d73addbe2875dde779689a363e42cf88b3e13ab520fcfe655ba246268fe32bbc3dcdd8b8809aeb4d95271f5e9aa828db969bdf4ebafa9fb1e7b5ef83705f611b2027ba3b7f0b52e85148be796015adef7b901084bff97e87151ed666fc16260d8932cb6eab31da61b4b3bfaf15f1246969aa157fb661618defc543f8bd -Sig = 37c9ca333ade423c46419ea16c5d79f56165a03bd5c674fa0127500a1bd7f5c2d21547d7bb45f558b3b986624c8eaef4db101e4092dda2b4fe48811ef7fa694c1384f460087f81cac1861425e44b86bc2fd825eea94b645afa4afca29f632edce048aea9e1365185a60821e4385de7d7435ec00d307d477b2e6a6e3cde0f340c71d2c59624a7ac8cfb838f68b436c403ab3b45f9a19a0a14ea8f47407b7e25e51a498a902ed8eefe9c493421421695a6d17a9cd5b76efad7b39b8d584cc2902c03422f06af528c6bc65bcebd8876b5f4d1ebb68ce22af5de05105837c15f5ff5c4d41ed8019d6a0448c94675e192a51d5eade91d2237ed57773cf3b37ba3da71 -Result = F (1 - Message changed) - -Digest = SHA384 -Key = 3082010a0282010100cb59aae30883db678ea7b2a5e7009799066f060757525166030714a25e808482e752f04f78611b3509d6005b411530c9ada4d8fbddc85f9db3d209eccc6cf0cae9aeb902e96688d2547974b7eb3323eeaa2257cf8d5c7c97f5176e2cfd29e19d0487380e3e64338c73bd592d52e9dbcc9606ed5835758c1a112c6a004256b5c4338322695df2ba573be0e79a7b9f9afd497dd38eed39f05f88d7d399d1e984d048067596ad1847ce51221babf51873bad2d81fa91cf3d9fd307e3ebd41fc49a8b3252ed7a71fd2357330bef2f1f89f2c80f740567e2ae8d168e56f007e8fefa33d2eb92b7d830a4f978ffe842ef0697db50602b19642afc50ac1f837e476c0fd020324f1bf -Msg = 59632917bcef9eaa6edb1bb6013bef9e5d285fe212c49b44ed78f129ca804141a8aab16a035aa1d25ed2e25c1fb022469fb8ab0882d44e7f4459994a158c5175e7651c54c5937db266bf052c0215c8d764010f2941364c16c8f553797a8cc6b63c1dd19daaa01892af2beeeb5271c89ad38af10cf7f27f51a0d3857ca0878a4d -Sig = 77a69f4fbd9456eb8cb973e2623d8ea83df850f3c7bc7c8f976728f11b2daa6204ec45e15cd36dcdba5d88bcdeca490bf488a32d12be8c93d9fc63d2a91fcbd79b4bed113dd98bf5b93673a1c143828f47935aeeada7938c65717fb8b370cf649134f6fde56602ba7d6f890ba166d3fe1c51e7471c98b661a6022d7d1d0caa5be5d140e94e70cd1478b9b33622ad69559e27cd6878925cf07f37f5dbd1ae457eea785053d06e2e4d010fd885b897f743ec09c2b06f774407123ac30cd91f81080845f885062fa4be9da31f4e6f626c61a7fefbc123e8b7b80978682b773b5537b2366d1118f506464d27db3991fc2af283abbed6d0c552120f82f906c38c2e0b -Result = F (3 - Signature changed ) - -Digest = SHA384 -Key = 3082010a0282010100cb59aae30883db678ea7b2a5e7009799066f060757525166030714a25e808482e752f04f78611b3509d6005b411530c9ada4d8fbddc85f9db3d209eccc6cf0cae9aeb902e96688d2547974b7eb3323eeaa2257cf8d5c7c97f5176e2cfd29e19d0487380e3e64338c73bd592d52e9dbcc9606ed5835758c1a112c6a004256b5c4338322695df2ba573be0e79a7b9f9afd497dd38eed39f05f88d7d399d1e984d048067596ad1847ce51221babf51873bad2d81fa91cf3d9fd307e3ebd41fc49a8b3252ed7a71fd2357330bef2f1f89f2c80f740567e2ae8d168e56f007e8fefa33d2eb92b7d830a4f978ffe842ef0697db50602b19642afc50ac1f837e476c0fd020324f1bf -Msg = b9403622a632794f7cd74fbba93aaa64c8d91b63144fe7ba23305c4cd135652d7a995d1c6cc2214e9b24696e976358e1bcb7514ea8950d5ef38ceac01a6d8671bbae8d3a0810cf7a76809625b53b360de536e56007bdcd72b15a60bd06f8ec27e6486f836264ac5973b37eeaeb0c6d6fab1e7fa2170f507fc763654c7f20bed7 -Sig = 81511a0c2eb37d5c6fe2c214c55d6b0e5fcea17242d5a5a9eb4568ac1f0af9b8912498ead877ca43cf9e19c743c3d8ea6f4e67301de53ebb81a1a3eaff67d72e450ffc6646b6b45ce8826957b9afbb13f571c38852c3eb384f6a595538ebf467414f3522471147f2ccb347284d0873018bf6329f33e0b49f4e86338b423a1027a6c4718187d19281aa896a286b6c89622e4cbf4cc6cf4c3ad4443516aec8708006dcbca5f42c9b943fc8cdcee23d9099edf61185635b53ad4d8853d8a511cdc50e189cc8929dfd32f9dcdcf2754adcc19b855f41d25620b65090180ece407427e9ab602a38f1f289eaf3299db856cc5bbda17de17a74bace89913813d147d9ac -Result = F (5 - Format of the EM is incorrect - 00 on end of pad removed ) - -Digest = SHA384 -Key = 3082010a0282010100cb59aae30883db678ea7b2a5e7009799066f060757525166030714a25e808482e752f04f78611b3509d6005b411530c9ada4d8fbddc85f9db3d209eccc6cf0cae9aeb902e96688d2547974b7eb3323eeaa2257cf8d5c7c97f5176e2cfd29e19d0487380e3e64338c73bd592d52e9dbcc9606ed5835758c1a112c6a004256b5c4338322695df2ba573be0e79a7b9f9afd497dd38eed39f05f88d7d399d1e984d048067596ad1847ce51221babf51873bad2d81fa91cf3d9fd307e3ebd41fc49a8b3252ed7a71fd2357330bef2f1f89f2c80f740567e2ae8d168e56f007e8fefa33d2eb92b7d830a4f978ffe842ef0697db50602b19642afc50ac1f837e476c0fd020324f1bf -Msg = f991a40a6c3cda01f1a2fed01ca0cf425588a071205eb997a147fa205f3ec10448090e53f56be512309cf445b3f6764d33f157749d5199c7a09ef6246bd5c793b85d24d9093c4d4b318b48e11727cc8bb7aa5ec8699aba7466e074e1887bdf2a51752ec42f16d956fe5943cbcf9c99a5e89bfd940c9fe447fcf3bc823d98d371 -Sig = 6b42514e88d93079d158336897dc34b450e424d61f6ddcf86fe8c9a368ae8a22c4ee4084c978b5169379da10ae6a6ae8cd80028e198cd0a8db532cd78a409f53baf7d231b545835b0dc06d594d76868d986889419a959268fd321bbc8bad5e800e452fe1a1a2a5a851d542494473deb425171a2f37ffc4cf0600a8d561b20f777407bbef1b596f92e518c0929e8bd52b015c2718d14443a56056f65015515673deef32ae5399ae71f97873ec1508f8c41d6a66a13017685134e5425c4b580a7f6986c26fb272f0ed215d6698dcec9e7c5258173b295b3611869254a538945de952dedf291837df0d7a205e1b76b01140df4edce3afe7245d46ee3b292bb117b1 -Result = P - -Digest = SHA384 -Key = 3082010a0282010100cb59aae30883db678ea7b2a5e7009799066f060757525166030714a25e808482e752f04f78611b3509d6005b411530c9ada4d8fbddc85f9db3d209eccc6cf0cae9aeb902e96688d2547974b7eb3323eeaa2257cf8d5c7c97f5176e2cfd29e19d0487380e3e64338c73bd592d52e9dbcc9606ed5835758c1a112c6a004256b5c4338322695df2ba573be0e79a7b9f9afd497dd38eed39f05f88d7d399d1e984d048067596ad1847ce51221babf51873bad2d81fa91cf3d9fd307e3ebd41fc49a8b3252ed7a71fd2357330bef2f1f89f2c80f740567e2ae8d168e56f007e8fefa33d2eb92b7d830a4f978ffe842ef0697db50602b19642afc50ac1f837e476c0fd020324f1bf -Msg = a95ece434121269f4bf036395e54718c9b3b247de3534fe147b7b540bfcd2fd81f6e45e54848ff209b81f986b49db65a54a2366d9e7acb9d8798289c88dfbbf395bf3d4653a187d98685a753c8e933c281eddde013b6489555101abc4357532af497ddecccf263d1f242672904008fcb0a65405da9ce6ecf9a65b3295afe9e87 -Sig = c878b4b14526efdfdb99f7287c0e871ef6c0aa7b4d2ee29299a782c8391ecdbbb60b8aeaab5343dffe7ade8af07156c45b16842775cab5201b3403dbd6bf0769ab5533d4c40deddb1eecfd8a46b933627d0d25893f0338e6dabb2a778649ebb2193a9d7c99d069c6c209b4436eda411184d99be0f80e3b293b5ede00f58ec4922fe8e1c6de04e58fd443d1cd96fcc9ca4bfc23343532a3eb840fd5c197e7795f2e3982a928e602b1e8f5cca7ea20da049eda313b1ee8d4b1a8e7960e4cfb5b16082ba73060f73c02716324658d3f00a3ff0a78dcbae103d5048e75669053645156f6640d4f6d1645d02e772dd8e70fe8866cad5ec2878ea6fc5c47530bf9eaf0 -Result = F (4 - Format of the EM is incorrect - hash moved to left ) - -Digest = SHA512 -Key = 3082010b0282010100a677525e1a69546a96dc7b112350d5e4864f0f82e999a714fa9f43ac681517d3975910c2d806bb3ee6dbf5dba1d969b38889e113c2da76eef4412a60cbd89faf35b2bdcb0de36a2cb762cd8f2f29aed9982a9ab60886cc8fbfee9b2ae09c88161e9159d4fc833adc4f80e4bf629d5a9551acce7a3938630c2bf9956097642e3bc60ac6522017841b65c7a25197865e697753b08169853681911443a2b25f1b7c4696f946155b2664b67b40878d3b45c3e0d7034d5b5ee6f5ba8fb3cae7797e85789902cf8f9f86ed3ef25ae0736178aae260fe875bfef5bcde9ec05f11e18fc7375edcd4a5533618e6f991dd48aa3062e6031e291dfcdc6e7fc14ec60e539fcb020400eac839 -Msg = 9c3d5d23d2746d15d616bebf3cf720c6e6012a71cae22002f5021a47d0b8636ca3bd201357e132a680fc5dec9b28a9db932d08ae8b3d3a37d7e2ee754b342a69b94fec26b50412289bcf77e6d4095faa545f15a16783d22eae21e18464150174e6db0b837347d440307655d56f0409db307f9773e81cb19282a93c9ca4c3b135 -Sig = 98657fd8163967fa7d263bd45bb890035adbcdd1645fd48b28febfb9b4e15172540e38b7c2f673c40a205fd40b08b60b4b81ed6e236cdf08f0d6b11f50dc74c60dc466ac372e0f467883aa9a398f4aeef87b040e14a51502dd467e8e8dd89812dfaf6b1dc1c2f6c28448af084590c05aec499dd3b148e66f3d71cf75e239db6d21f4074b8bd9a6bde5ca668634bd47953276ff2d0ebbe01afcfe0e381903736d6a6c672a45fba4ee326e342dc5925169517c5f57e9290724576a225ba89cb4dd091f4e6513be10dd4181855bb4045d6ef6437c16d3b5589ef9d6836682711c7d66025ae37b525580f0dfcf3db7fe57d7c6b15777cc41600307e58a1721b6f7bc -Result = F (2 - Public Key e changed ) - -Digest = SHA512 -Key = 3082010b0282010100a677525e1a69546a96dc7b112350d5e4864f0f82e999a714fa9f43ac681517d3975910c2d806bb3ee6dbf5dba1d969b38889e113c2da76eef4412a60cbd89faf35b2bdcb0de36a2cb762cd8f2f29aed9982a9ab60886cc8fbfee9b2ae09c88161e9159d4fc833adc4f80e4bf629d5a9551acce7a3938630c2bf9956097642e3bc60ac6522017841b65c7a25197865e697753b08169853681911443a2b25f1b7c4696f946155b2664b67b40878d3b45c3e0d7034d5b5ee6f5ba8fb3cae7797e85789902cf8f9f86ed3ef25ae0736178aae260fe875bfef5bcde9ec05f11e18fc7375edcd4a5533618e6f991dd48aa3062e6031e291dfcdc6e7fc14ec60e539fcb0204008d8853 -Msg = 7759420c8d1a39ba0e3e1681d9b757fcf30cb40d844f4a71224ff998520e0bb44c761611ff4723a455540fe6b8ef32e3d5a23f8da0206b57987ad2ff4c9616ab1ede493847350dcf1b2ff9b98e813f74f8b68c0615243091501f7f28416c77e174f8a32b6cca3e62e7379ca16455c6d8e3b2651eec45e148d2a4c9ba3978767d -Sig = 91ce8e921f85de845b9bf7503dc65a328224d15b23e8ea65dc3da6d804fbef196c305e0fba059a7d842c8c0f580860cce77652d4dc779073d6a3b0a92bf2dd3ec6c0618da1485036fd594bd962f7b5a1c61d53f1626912c7e312aa83eb4326288a52437c7387916bcb11084a40c219c84cab2ff66e83143f858647f2dc914da0c7858ba39aa8ad8147ea5c9c52069eb2b2ca941d8a5023748dc401e7664500846c85cadf0287e39b8b8b46794a82bfffa752960ab3b9eaa02530b5903c24aefa108f10aee35b6a8a3cdf8795a182e5c04ed36bb68c18785623b42f0979fff319112e1514cee51db437ee32289f61ded61186c6ed44ad722d18d556821f888221 -Result = F (4 - Format of the EM is incorrect - hash moved to left ) - -Digest = SHA512 -Key = 3082010b0282010100a677525e1a69546a96dc7b112350d5e4864f0f82e999a714fa9f43ac681517d3975910c2d806bb3ee6dbf5dba1d969b38889e113c2da76eef4412a60cbd89faf35b2bdcb0de36a2cb762cd8f2f29aed9982a9ab60886cc8fbfee9b2ae09c88161e9159d4fc833adc4f80e4bf629d5a9551acce7a3938630c2bf9956097642e3bc60ac6522017841b65c7a25197865e697753b08169853681911443a2b25f1b7c4696f946155b2664b67b40878d3b45c3e0d7034d5b5ee6f5ba8fb3cae7797e85789902cf8f9f86ed3ef25ae0736178aae260fe875bfef5bcde9ec05f11e18fc7375edcd4a5533618e6f991dd48aa3062e6031e291dfcdc6e7fc14ec60e539fcb0204008d8853 -Msg = 864f4f5890a03653d08daa83d9e2992fab3393b7ee152d6f7b8ea3ad1ec9c1219a0e0365eef2fbd5d7cbf3a19667d421f3fe46688264191b2583e484d209ebe2975e4603dbd94015e633febaa43c615aa5cc2cbd69fd6ad9db970ae81bcccdbe8026625adebdcfbb04ad12f589c70883c9878fdf2a46e750a4b15f03807a2d5e -Sig = 245fda2e66d2bab102d0da4098d751650f5ef4738d14dabe866c782009ead9d6d05d43ac0a3014a382d62ac971ee19798f3b8ef49f9bc247fa07b368ac2d0e8a4fb210af5acd87b6b512e135861b30103403304732a10b75c9a149552d1ccf0f9912968c6431398b7d48dff48cc7cb7184e76a0ab94ac9a6b0035b91b3eeb2d1326ebddfc13250224538c143fc0dfa3995926415a658db8e6691504050a1a30e34b21af8d12707bc4454f174385cd84c729e2ddfc5cc9178812059b5da4a1a605a2a81642ccc1bc5cf953965f705673b12c5b46ac8c1a03c1001ae4df1c39cc83cb54b10cb7d33cd5108033c268ceeebba6c6ada92882f46562dc658d3525574 -Result = F (1 - Message changed) - -Digest = SHA512 -Key = 3082010b0282010100a677525e1a69546a96dc7b112350d5e4864f0f82e999a714fa9f43ac681517d3975910c2d806bb3ee6dbf5dba1d969b38889e113c2da76eef4412a60cbd89faf35b2bdcb0de36a2cb762cd8f2f29aed9982a9ab60886cc8fbfee9b2ae09c88161e9159d4fc833adc4f80e4bf629d5a9551acce7a3938630c2bf9956097642e3bc60ac6522017841b65c7a25197865e697753b08169853681911443a2b25f1b7c4696f946155b2664b67b40878d3b45c3e0d7034d5b5ee6f5ba8fb3cae7797e85789902cf8f9f86ed3ef25ae0736178aae260fe875bfef5bcde9ec05f11e18fc7375edcd4a5533618e6f991dd48aa3062e6031e291dfcdc6e7fc14ec60e539fcb0204008d8853 -Msg = 71abf895e56ba8f6ae8d0e9e6690c09c759270a73db8c1aa95d05980793537fbfff3472c8d2c34de4abb7e64d216cc952e798314034197d50996a2dcbf4c33485e0b68910baebf0e50ea29bacd3060372bd47b13526ec04bdc81b90dc95a8ac2743b814cc5b9ef8ca9633628bfa4248b55eb7f2d9208e114f4dac69bfe27e472 -Sig = 243c570cd1bd85522e64817361cbb949c83876d7a3609513aebf506fc06750ba38e820232c98acbe00ffa50b36c538560069fd13992ca0df7d9f6d956b883334f1c3af8a74adeed5be15b033d85b207be2fe600a9902d699ccef1f4a8d588672c446401eb390d174d572b918f9b349e2e704775300023850a534cd14e0046e385181d345a01dbd230c7965fffd71d4e9f9bd274d2ef46c556c7332121362e71706c39f08919efa3a4f2f142150c8cef4b30ef788f6fffc2ed2aca0262eba873a251795845da526b78e2b24d66f21d40d5fcbe5542a7553a9178be5a9805bb53579bd108cff733b37640789318db620a6a94444e9203923ae325500b676b14798 -Result = F (3 - Signature changed ) - -Digest = SHA512 -Key = 3082010b0282010100a677525e1a69546a96dc7b112350d5e4864f0f82e999a714fa9f43ac681517d3975910c2d806bb3ee6dbf5dba1d969b38889e113c2da76eef4412a60cbd89faf35b2bdcb0de36a2cb762cd8f2f29aed9982a9ab60886cc8fbfee9b2ae09c88161e9159d4fc833adc4f80e4bf629d5a9551acce7a3938630c2bf9956097642e3bc60ac6522017841b65c7a25197865e697753b08169853681911443a2b25f1b7c4696f946155b2664b67b40878d3b45c3e0d7034d5b5ee6f5ba8fb3cae7797e85789902cf8f9f86ed3ef25ae0736178aae260fe875bfef5bcde9ec05f11e18fc7375edcd4a5533618e6f991dd48aa3062e6031e291dfcdc6e7fc14ec60e539fcb0204008d8853 -Msg = 4b648de2e390677ce1727191498b76d2d2438d0ceddf3db502ade5c5fd815bc70965d42f9b8d04eeb38986445fbe7dd580177c00d0f8a36c24740be3efbf656408e6dd73adbd45b4c7196fb86f40da17b29e91bf91ba518b4c68ea18e13fe7d4cf4d71571f0a71f7a58bf59684f8d5bff04096f2380b8e3b03f14909d9e92c3e -Sig = 277fe81a1540341c9c04fb5d3c8f70c1e72f87fa7d04b93ee54d56d1184c141ec4e125e2e5cfd0acff1055c76697a1c3079c371cce0bd84ee4437bfa1806aa76df2955935331915fff879d87c7372e75e5e8fecc906f9d34a5adc0b75409a87fb6411e2990cd237ac8223f7223444f5d527a115c85b9ba10287f3e825e1dc58eb37c8a9ca055155ff6a5aaa6565690dceef6f647729d071cdd9f0688c7fee8f9293abe658d0e1ef855c86a28d8d0f8f82f72173186353080b84f142f965907377178fc1ea00819d81afc2474becf79e1e3b70c7c2a8407d50795c3131bb6df78720c31b2f8c43f705464d8982043c45f04e339aa1c6f4e26aa7092b3e6261299 -Result = F (5 - Format of the EM is incorrect - 00 on end of pad removed ) - -Digest = SHA512 -Key = 3082010b0282010100a677525e1a69546a96dc7b112350d5e4864f0f82e999a714fa9f43ac681517d3975910c2d806bb3ee6dbf5dba1d969b38889e113c2da76eef4412a60cbd89faf35b2bdcb0de36a2cb762cd8f2f29aed9982a9ab60886cc8fbfee9b2ae09c88161e9159d4fc833adc4f80e4bf629d5a9551acce7a3938630c2bf9956097642e3bc60ac6522017841b65c7a25197865e697753b08169853681911443a2b25f1b7c4696f946155b2664b67b40878d3b45c3e0d7034d5b5ee6f5ba8fb3cae7797e85789902cf8f9f86ed3ef25ae0736178aae260fe875bfef5bcde9ec05f11e18fc7375edcd4a5533618e6f991dd48aa3062e6031e291dfcdc6e7fc14ec60e539fcb0204008d8853 -Msg = 7811a407fe653ad2343d83c0499fc11e2951ef0a4791a3cd9a06396be5f72e783cbbca2cc47002babaf09cdeb70194b532ccbfd24691ae8eb598d59f2e6becedcb4296a1debf417eeddb4d74fb217072091a597ddd0893ff02d6ad61105098db2e90508bd4b8bec5d6e7deab9e651dfdb8210532955e1bc788a908d7150ef8ec -Sig = 3ad1f0faa9a36586154a382a1f2c10e819dc318a68be35f54f95401b0ef2ba5cc895f0d6bde28c8d3b364f60de03ce75a7af29e5807c1eec4cd70624756e2631eb46af010ca8cf93ee7d86a4af3ced5dd2a8a41c1feee6b4572070873939ae7a2ce75193945937461d0064eeba07760c495c5c70bdb04d89951de3f96525f8e44612493d490731e7ef7679a24b0b1e2b24c8003c2f94114e4193d6e54c0af9e870530b008530210ac0b0e4c7c79f379384e1bb319b5f2a0b622517ae5d27f0eaaf7958cb0b41849126075092e86e7e7be5eeacef9a8e3ec595432ef619858fe0d0517871b8b495c01af6f18d4e6d250dbd19280ef4f8a37d1b59a48fa41b831d -Result = P - -Digest = SHA256 -Key = 3082010a02820101009c003978e1f71731e2d1128e1be81bd6c99cd3251672b9c4186497243b17ce523ab113bd4fe397178e6fb5f3090b0680e42cfe78b3928c22da53ef43595b1c5792a2794f86622bc4a997932dc20df9cc429b5010e18d73c71796df877fb66e72d372081260fe7760d46ff916ac74292ee6e1659c2480a22c9522bdfa1beaa71ae2a5581eb0045bbfb7b1d687553cf3cfb061bd2e811e6085d9e4849f30735bb95b34ae40aef5a5eb399331704907b67094b8f418deb76b6ff419031a5b2cbc7b64487b49d418d67747f1609040f08adc42b1b0724869d838bb932511a580ac9d872d5a053f3b61b3f51c43fb2b3d510a696a9068e093eea0670e55e58571904f020333e58f -Msg = c3232d8060a3e3f8687dc05d8879004bf5c3a7030336bacaf4d9ae8c0daa21c5f09bc8a225dba963fa568a038d7fa91b274dad04cb83dd3b0f35900a2b88e46550b9b3133b61c30e09f73d2b4d9661fd600077f7f8e409d2fc5c4f2e97baeb7c8c84d71bc9bd9bc13e66c31def4590bb48e5ee27b1dea6556356d5407ac89dd2 -Sig = 21bfdd610a56fb8b3fba9f3841e7ab9cb2b91d16c7bc3ebacc266271e05eadb6d209a043a29d542b57ad832a3ed03933088abd7b56b86fcc295a95fa66e27f5b9b2c919b82d4165e2bc42b9e46eebdc7cddb29888281250e6954190f8e13b6d9ed6906e8d603520deeeb5cfe4f7e932c88ec1ee2dc9b971a0288bd71a45ce6037d8d7ef2325ecaa573c57ec753916fbb6335e9ab5cb695ec0579b511074a6cac3b21584e5e4532621451641a4a09491c77555972a5d42a627f50ffd490c79e32c855aef0e2859c933321341731e796b2ed4c6c50a98a3f3c6995bb6bd53e52c531b15d042061186677f9158eeaabcf302626c8ee639685c832cf3bc4357cbca7 -Result = F (3 - Signature changed ) - -Digest = SHA256 -Key = 3082010a02820101009c003978e1f71731e2d1128e1be81bd6c99cd3251672b9c4186497243b17ce523ab113bd4fe397178e6fb5f3090b0680e42cfe78b3928c22da53ef43595b1c5792a2794f86622bc4a997932dc20df9cc429b5010e18d73c71796df877fb66e72d372081260fe7760d46ff916ac74292ee6e1659c2480a22c9522bdfa1beaa71ae2a5581eb0045bbfb7b1d687553cf3cfb061bd2e811e6085d9e4849f30735bb95b34ae40aef5a5eb399331704907b67094b8f418deb76b6ff419031a5b2cbc7b64487b49d418d67747f1609040f08adc42b1b0724869d838bb932511a580ac9d872d5a053f3b61b3f51c43fb2b3d510a696a9068e093eea0670e55e58571904f020333e58f -Msg = 0d8235883f37654b35d3566174cf731b5b22a54ac15718f9d8e2415c57b42003d80dc2537e920b37dc9fb21312de8dfa39190f20024c0f9299ffca24d0d22cab795a4b6d132b35d6aa36eb6df856ad06d0257838bd14ce11e6bbb509346d0235b710d7bd462b6b90664109566e5e5ca7e8efe97a39d6dde085be09f2cdac2b07 -Sig = 6530d456e14269bf37a95ab7b2ca4f534a47135052665a2b64e9eff970a9566ff0304029d2844d5649e643212aaa7f1f9103bd5288b1bebb7797cd8df3393373852cfc7001a4257499fbc92444609e0afea095927ebb773b7b666962faf0686a8b173f446fa562e82be1467111ecc38697103cdc1e700890b60104eb35575d25b9565098544a2e26003b3150c9a579c534a44bd0c1569b58d871d6a5af51b5ecf3cb2b0650793ac95a44596f86723c31ce4b3b1365dd61d2bbadf394b16f734608dddf991595acfd0aba42a12095966bc005c67b60776ba104c9681efd38d2e91fd3995588d9ce244c6bdfffb8e0086837946c35627a09a2f83b325af71f474b -Result = F (1 - Message changed) - -Digest = SHA256 -Key = 3082010b02820101009c003978e1f71731e2d1128e1be81bd6c99cd3251672b9c4186497243b17ce523ab113bd4fe397178e6fb5f3090b0680e42cfe78b3928c22da53ef43595b1c5792a2794f86622bc4a997932dc20df9cc429b5010e18d73c71796df877fb66e72d372081260fe7760d46ff916ac74292ee6e1659c2480a22c9522bdfa1beaa71ae2a5581eb0045bbfb7b1d687553cf3cfb061bd2e811e6085d9e4849f30735bb95b34ae40aef5a5eb399331704907b67094b8f418deb76b6ff419031a5b2cbc7b64487b49d418d67747f1609040f08adc42b1b0724869d838bb932511a580ac9d872d5a053f3b61b3f51c43fb2b3d510a696a9068e093eea0670e55e58571904f020400baa86b -Msg = 84b1e3cd7c5d6011c581302e03489fd37aefc841bad659fc81d796c6ddd6a1cd9199f824bada3f70b29b40e435ba306fc2c53333440f233af2048d6474b9fda447c87c6c625a56661a85216543d9fa9b9835120c5ddf6a4242d4da438b5d58c06ee3778fbc042e5cc4e7db9b75cc87c0c2e76cb34b6eb47e39f1844969ea3989 -Sig = 1864eb619e358d7e0340b582288e3290d5f8caf1b6831bfe5978f4ea56d15762247bfcec56e2a44fe11507e5eb6fda0706b7287b09ea770d577cdf660c523a76e2e70952177f0260cdba51efca71148e069ae6540f5c4722a4b4db6336168eea86612b6b4ecf8b5b2e1adf3d4f79c3894c617ae0ba56a930c658f0f55c0e5f2719b4b52b7785c30489ca13c9799ded9144404409f284c41530fe35967c2d844dcb1d2d80c10a985164466ced3a4d74573b175ce7288418b39962d4a34cfbdd43ba5a6b73af0f9ef55946b61bc7d5c0af9ab0e99bc0842edfedfc91e213f021842ccc785cd73a5f85d8aa8371c80151b836651020e71c524f92d3c654fef0b37a -Result = F (2 - Public Key e changed ) - -Digest = SHA256 -Key = 3082010a02820101009c003978e1f71731e2d1128e1be81bd6c99cd3251672b9c4186497243b17ce523ab113bd4fe397178e6fb5f3090b0680e42cfe78b3928c22da53ef43595b1c5792a2794f86622bc4a997932dc20df9cc429b5010e18d73c71796df877fb66e72d372081260fe7760d46ff916ac74292ee6e1659c2480a22c9522bdfa1beaa71ae2a5581eb0045bbfb7b1d687553cf3cfb061bd2e811e6085d9e4849f30735bb95b34ae40aef5a5eb399331704907b67094b8f418deb76b6ff419031a5b2cbc7b64487b49d418d67747f1609040f08adc42b1b0724869d838bb932511a580ac9d872d5a053f3b61b3f51c43fb2b3d510a696a9068e093eea0670e55e58571904f020333e58f -Msg = fcef065e293ecd29ab52046c68c6e940aa0e2d5fce5d4a2b40c516f2a7a198705c301b95218282891098dbeed1c73765105db8532e87ebe53772585115b1585f03df272944853a1e143dd34ddf18d2e1b13ecee7eed464584323cf53dcf6b9aad74351a0f90e9ef1a08b1313f98363bc73f897a4740c5d8c4a1fa37f64386458 -Sig = 00acfc93e41faf5004cbcc252da290b9cf66b56a6a4849c572461d3212cc4cf1021eb96e8651475fac7dc87faf3a5b52923123378c18cb83906d1ee6e53502bf0e89ce66f3cf5a4b7cafa13f2d97f99498c0052fcd640570e5e1dacdc66e24c2a54f02bed338a26748fd17c07bfee5492c4dbe4dfe111932e3153394721b0556a440788a2bcefaa2765ade916653f4aac20d5ea587fde0fdc255dc32c5aa52b05e3ac2db4d7c3a8b02ee1733fd300801d1bb8e8613386f3deef8dd497bfe803523491ab88553db60b03d29c55ff52e71c546873cb1b52bea1853c8f0070d1776545557becb6a11310acfe1be060deb53d16f0dcbc396c1d30e03c4c069c3ad48 -Result = F (4 - Format of the EM is incorrect - hash moved to left ) - -Digest = SHA256 -Key = 3082010a02820101009c003978e1f71731e2d1128e1be81bd6c99cd3251672b9c4186497243b17ce523ab113bd4fe397178e6fb5f3090b0680e42cfe78b3928c22da53ef43595b1c5792a2794f86622bc4a997932dc20df9cc429b5010e18d73c71796df877fb66e72d372081260fe7760d46ff916ac74292ee6e1659c2480a22c9522bdfa1beaa71ae2a5581eb0045bbfb7b1d687553cf3cfb061bd2e811e6085d9e4849f30735bb95b34ae40aef5a5eb399331704907b67094b8f418deb76b6ff419031a5b2cbc7b64487b49d418d67747f1609040f08adc42b1b0724869d838bb932511a580ac9d872d5a053f3b61b3f51c43fb2b3d510a696a9068e093eea0670e55e58571904f020333e58f -Msg = a6a2c5c8718c64105fab8d44fc69d334273aa71e7475d924ce625cfc61944aeab77927eb202f6a33589939da64b375d3bd22f61db010183d053676ebdf3af50ce33c05e09cac237d1e5ea27ceae0acf2120b84a29ed80d702d759019e098ba227314e40eadaa98d4fb215090589880796f1cd7130476c2a6904633ee2b56a014 -Sig = 8ec5b4e7671975686b72eb3930f77ef3622119d0b2ae0618fa52c7410519c4f846c986001d3d82844ae4c13e99dee463448a498a652e9b725ddeb6323b83d5521637be0dee7b224c50dcaf6c7b9a2d26f9b0aad81ac6e4651f241d7a860b51c96ebfc3df978c5373b7846d3139f509dc16726f712c0e61af620b2c6db0955d0ae9cd4760bb9de6151e04bfa19df4d5aca2576f91ee7aba9eb446fee77c604faa5af87536f22fa6e239e898de906642fc6594be9328571b35a3a8420ac697ef993016f78def8a17d13698cc4c1876ee1006d814dc60161214a8f8b6f2a345c8b0c0fc645873b6bf9d2fbace2246f643a6d3a2e0b88929623a2e2a73823f6e325a -Result = P - -Digest = SHA256 -Key = 3082010a02820101009c003978e1f71731e2d1128e1be81bd6c99cd3251672b9c4186497243b17ce523ab113bd4fe397178e6fb5f3090b0680e42cfe78b3928c22da53ef43595b1c5792a2794f86622bc4a997932dc20df9cc429b5010e18d73c71796df877fb66e72d372081260fe7760d46ff916ac74292ee6e1659c2480a22c9522bdfa1beaa71ae2a5581eb0045bbfb7b1d687553cf3cfb061bd2e811e6085d9e4849f30735bb95b34ae40aef5a5eb399331704907b67094b8f418deb76b6ff419031a5b2cbc7b64487b49d418d67747f1609040f08adc42b1b0724869d838bb932511a580ac9d872d5a053f3b61b3f51c43fb2b3d510a696a9068e093eea0670e55e58571904f020333e58f -Msg = 79220b8d86942a13861560882a66fb4c5c926a661b74ad2586790a0636a802d9d1df8320dc5f5fb8d18afdbb72ec4fa45c7903b4df15fe950d5a063e1195be16c311d85c799986c61f3831688a436ed809992e903d2a34932bb6cd5490d7bbd374427209024a878697a66559197342308a7d51c0ddba39670817c7105a77df58 -Sig = 54835466397784e6229228ea1e462b37d77757ba17a6624fbd3279408e89fddab2234f5ee20b56cc7095dcee3cf033e4b04cebb9771997e3b9f50ddea290080888fb406cf1af4b2d14c12be788cbbc6454c52276bf64ac3b3158049cc78986e38413bb09d408f04e8234228a9403eb901d6f2fb21887996fb228c292a2aa99fe8456172145939606eba9cfaae694e5fe824ffc3a5547195e24af5039aa1f1dcac9a9cf54c51099f82cb1a5aacd8c9419d1c7ce880366f1276fae7b9e1848e9ceaa7ef7244e5cb788f524bb50231ef4d81e14d59d3f884dbff575e953a145fc45f7661025e1f6fd95874eba803de03b5fb0a8f5eabdc739fbb91c45ad1c29128f -Result = F (5 - Format of the EM is incorrect - 00 on end of pad removed ) - -Digest = SHA384 -Key = 3082010b028201010095a31458ca41cf7a280fd060660fbecec18b6242b72cf99d8039a890ce07aa5acf432d9b400160374b3626a46c6107cdf51f1e8b519ac26ef169cd75d3c5e43267ff391dd0a93730c39c166fb77c4c5409c19ea252bfc8e990d873368607c8ce032bc0a6968a0a6a5a918d49d35a3fab9a3e69632816026d433d65bf765cda3738e8c12f43e869089296b36ee84704dadc37db62fd18f380ef76334d882809881d6a6dc8a8f49c4595cca6f85e9dd8ad616cd984a27f4938fb9aacfca473f1a4f00b0db47b471f04b4170ea909cced5960d4a3d269de9ad4b2a63e8ab712f1f0f7c3e9ad471e15bcef3614eb4dce291eae0785ccf2399b16b51a84d1df8ab395020400cfdb6f -Msg = d5f5d567512a899c0168240b319e6abcd8b92a8d6e20b9d3ff80a0447ecf92155b8ba15f5743b1c798592c5ef806f7c6a39ea597e116eb0030c354b2966436f93563e52c205826486dcfe7d88c4b2d18d78b4d59690b5fa734cef0aa4e5bf7ca8c060a965270d267a951bd409275f2f99b058a9daf08fd103229daf54ebbbcce -Sig = 672403ce06f1ab0ea42fd043666e4623299fcefead6cd204599102fc8d543d3bc93342fcaa1262d52e6ff344febda6faa57119ee7418cb78a893aeb245f618c072214e9740abfab998a0896a1c9066a823dd62b5ddf9e9fbd7bd6b68437eef595e90e725180b3cb12301a989cb78ea2dd48730521caf4b2754679c4df2d8e2c12b8c8e55f1327fc6624d85555558fad198db6973ab155deb56cbcfcd44d8a61f90400dd3760b19aaba4dc167742bfe1da0d9ce20036c284729e16b8aff5b6ac3121fbae8cd55fc0779fd0ef7b382c85db88b2ae79270b1110875923b2d72d8ed7d37e2bdf5396b158a89fd1ae95c146737db028ad6cbeb0ed43edd421197d23a -Result = F (2 - Public Key e changed ) - -Digest = SHA384 -Key = 3082010a028201010095a31458ca41cf7a280fd060660fbecec18b6242b72cf99d8039a890ce07aa5acf432d9b400160374b3626a46c6107cdf51f1e8b519ac26ef169cd75d3c5e43267ff391dd0a93730c39c166fb77c4c5409c19ea252bfc8e990d873368607c8ce032bc0a6968a0a6a5a918d49d35a3fab9a3e69632816026d433d65bf765cda3738e8c12f43e869089296b36ee84704dadc37db62fd18f380ef76334d882809881d6a6dc8a8f49c4595cca6f85e9dd8ad616cd984a27f4938fb9aacfca473f1a4f00b0db47b471f04b4170ea909cced5960d4a3d269de9ad4b2a63e8ab712f1f0f7c3e9ad471e15bcef3614eb4dce291eae0785ccf2399b16b51a84d1df8ab3950203646e91 -Msg = 6ba3f34bde03e48259723bd599464274df4de2b6f3bfc3b06970b507234a4f0217fbd5e352eb5f783d7138ed204685e4e43a27c71d25e25d4821be9c50f6adbf58d66f98b44bb326386d7f6ab658d177c2dd87c9b8787cd70182f4eb91a83a32b49c870f0b0a26b5d1ced6f56364705400a0c961cd9fda461cfd1e9ced483c84 -Sig = 236f23de25bb3694f5ad9f09224f5ec1e78cd7f371ec50097327026fa53b1689a95eaf54738cb75e5abba87a964d32817fd5071febd84d60c7b11d95e33a7f90f22259bcafb9425cc1a79305a00a1b8ecfc3bfab326b6463ee57d1e435db91f45cf4edad0f9ee50dbe42130cfd1bc424906deab4906571688d1a514d98dd074139d57304c0c2d8a87ef5f8766486da8df827f9e0c81fe3465ea52d1984d738b9fe9368a0d05384e9cb298330671f65fe52062a0d3c4af210ad471bd5ddf9d72787f40ede3b77297c1d3a5b29ccadc574e9001bef89e4ac093986bbdf048d7b63bcc072a3cde800eda63bfa8e068fff4cb9f15b5f98c255fcde6d46f139e4d30b -Result = F (4 - Format of the EM is incorrect - hash moved to left ) - -Digest = SHA384 -Key = 3082010a028201010095a31458ca41cf7a280fd060660fbecec18b6242b72cf99d8039a890ce07aa5acf432d9b400160374b3626a46c6107cdf51f1e8b519ac26ef169cd75d3c5e43267ff391dd0a93730c39c166fb77c4c5409c19ea252bfc8e990d873368607c8ce032bc0a6968a0a6a5a918d49d35a3fab9a3e69632816026d433d65bf765cda3738e8c12f43e869089296b36ee84704dadc37db62fd18f380ef76334d882809881d6a6dc8a8f49c4595cca6f85e9dd8ad616cd984a27f4938fb9aacfca473f1a4f00b0db47b471f04b4170ea909cced5960d4a3d269de9ad4b2a63e8ab712f1f0f7c3e9ad471e15bcef3614eb4dce291eae0785ccf2399b16b51a84d1df8ab3950203646e91 -Msg = f3169de46af85cb510fbb4cf9c0aada9f875301ceafbc818f428a59679e1e6cd203d18a97e96f979efe082e8c43a252ea4c354872caf42e4d99aede1281b5cf8fb9d25f43f6a33a8cc09c6e08ccabb98e09f0e6c3f2d9d5021232f811bcbb4bc4bdfcfadf69d91aa701d88a13ce3f84f75b168b36c9e60c3936c725d9a177780 -Sig = 47b74ab96c333f1b60313998e9bdf5e313534c96c2f7b139f4fdc8295c8e53a1ae275b235a6931c69690ba8f1cd5bf9d3e1a6f8a23c9f026a592ddcfe35dc498ebef292ed49a87b4813ddcf04cfae8aaa6978f629ff58f24960985a452a09439a3aa027668055ac5900d62f5f584f8bdfaaa72489792fc32b6adc9d289dcbf5bb9a278ada1392b42a4e5b9714a1c3af00f937962477fe72b820dd4fce5cd2e25e6a56081d6119df474b7b7586b801680c4ecf9d067f584d79a9cd0f451aa90644096bf9e80bd469727ad7b7ceeb9cba63de2abd423ea96675d8fef64130e357a5d2f67da0fa528fb3ddbe2fd553033e517533c6d1c301c094ce0899bcbbcd4f2 -Result = P - -Digest = SHA384 -Key = 3082010a028201010095a31458ca41cf7a280fd060660fbecec18b6242b72cf99d8039a890ce07aa5acf432d9b400160374b3626a46c6107cdf51f1e8b519ac26ef169cd75d3c5e43267ff391dd0a93730c39c166fb77c4c5409c19ea252bfc8e990d873368607c8ce032bc0a6968a0a6a5a918d49d35a3fab9a3e69632816026d433d65bf765cda3738e8c12f43e869089296b36ee84704dadc37db62fd18f380ef76334d882809881d6a6dc8a8f49c4595cca6f85e9dd8ad616cd984a27f4938fb9aacfca473f1a4f00b0db47b471f04b4170ea909cced5960d4a3d269de9ad4b2a63e8ab712f1f0f7c3e9ad471e15bcef3614eb4dce291eae0785ccf2399b16b51a84d1df8ab3950203646e91 -Msg = 599d4ceb774e4906332eaa216b2fe8e1fa52506f381baa87c34319cc80ac425fdc9ab0af581f779344d71896cad6a5912fdf268056d63a8e867802726c4a3afe64cfa9f5f4febc1e99f36e96c7e56a6a2b58746533940527d05535777bc4dedb76a6ff6554d45ecfbbeb72cb69447f94752703c9d73b517b2b417c85b202761b -Sig = 0745457af52fca56abd808f094951d3eecab89ec10b74dd49d51a9241c3b85972755a1f80bda2cc96cda7cfd549eec820bd2f99920ebef1d10722918adca8d408c3c883d7c257b117842420afbce88159c7ac4f4bf27f039c24c19dd275643d0ead111d5f04912571cd3a7d40e3f83c32b44762eb6d2e2de22ac006643c498ce55f6116463336cfcfd0ccdab250e9931fde68c9796e05b012adfb76359491f26f69ca9d06b43843a4976f2b017643e6cb80b8dba2a01f1b01231ace075ab31d40319b30ad738f62d2b8a1f43ff1bf67f83330fad67f94a39c2c51db23aa775aa43b708ef25c9c62eb565606e4f5002ab15b00dfa829c99e3dd96b454c7448174 -Result = F (1 - Message changed) - -Digest = SHA384 -Key = 3082010a028201010095a31458ca41cf7a280fd060660fbecec18b6242b72cf99d8039a890ce07aa5acf432d9b400160374b3626a46c6107cdf51f1e8b519ac26ef169cd75d3c5e43267ff391dd0a93730c39c166fb77c4c5409c19ea252bfc8e990d873368607c8ce032bc0a6968a0a6a5a918d49d35a3fab9a3e69632816026d433d65bf765cda3738e8c12f43e869089296b36ee84704dadc37db62fd18f380ef76334d882809881d6a6dc8a8f49c4595cca6f85e9dd8ad616cd984a27f4938fb9aacfca473f1a4f00b0db47b471f04b4170ea909cced5960d4a3d269de9ad4b2a63e8ab712f1f0f7c3e9ad471e15bcef3614eb4dce291eae0785ccf2399b16b51a84d1df8ab3950203646e91 -Msg = 73a125e5705e14e15f2446fe326f563785bcde93d2ee46abe4efd9668e9a1e089cd9656b0a0aa08b74a87449ce279068551f3edcc5ad3744cd17bcb5c0aee2b98df92e97f10f61d5eb4595fc7109899b610e3a8ebaaab3800c7c25af2d513aef2e48a7f28d3501c6ac44d19f82dfead791d1fa3318ab606889663dde3d4bceb3 -Sig = 7a7a4e5b349a06dfdbc9ab958d5fb70b650b1eb2f7eb43cfdd7508062efc9ada3ec0739ad95b2066009f760c8c5030e909189f36b0f7756a67a69a38d2db57d0708a4a2e295b165411b2ebce13723bdd9194afb288452d49c585cfaa3148f5f5464145d2d673cb1803b6ade6003a9f25bf27325f8bc4b883ec7cad37eeecde9ea1a62d0b30da841e2446706e72ac2588948b15fd9ce09ecaf105bee8bea71622e2c58ffb9eae9bce35e9caea8ccc7e0c8593128a6656267ed088bc26347b7b249ac45e06f68034b6d39a4e2eba8c6f5c878450654bf36e5e73468413510e7b50d0e63de67cd7ba35d4f2afca5b460cc7277f04faf2fb03fd7c8995c2fc9b7e6c -Result = F (5 - Format of the EM is incorrect - 00 on end of pad removed ) - -Digest = SHA384 -Key = 3082010a028201010095a31458ca41cf7a280fd060660fbecec18b6242b72cf99d8039a890ce07aa5acf432d9b400160374b3626a46c6107cdf51f1e8b519ac26ef169cd75d3c5e43267ff391dd0a93730c39c166fb77c4c5409c19ea252bfc8e990d873368607c8ce032bc0a6968a0a6a5a918d49d35a3fab9a3e69632816026d433d65bf765cda3738e8c12f43e869089296b36ee84704dadc37db62fd18f380ef76334d882809881d6a6dc8a8f49c4595cca6f85e9dd8ad616cd984a27f4938fb9aacfca473f1a4f00b0db47b471f04b4170ea909cced5960d4a3d269de9ad4b2a63e8ab712f1f0f7c3e9ad471e15bcef3614eb4dce291eae0785ccf2399b16b51a84d1df8ab3950203646e91 -Msg = 86843b3170034a9f8ea79a39657a5e7460c50ef75c800dad690c8818cf25a1e85012cdccad1e7a886c4cf648d7478c334898f044a41bdd5526b4fc7d5e3e089c79c43034c2f4bc7b69d0f4ae83a73da7534486b2c865e29d466f760eaa5f961988042b12b66c58a00f9c5d137183bbf8083199eacf4566ab53a4c073bb719487 -Sig = 45dd07f00a1727f2e992cf0fdaff0c233e6a6866128416456fcd2db6030a4f3cd216db9c4cc2bc7440e06081595e9c51f3c81af68166f6b9cfc0ba4491bf1835b1c946d69d0a6b8c39e1eca84a3bf91f7a299cecc1d98e6fa2ec56cd01ffa04d37423933d746295ce669cd8974caed44f45b88cd7eaffbfcbc70353a3b45c53895edb4e6b19a65564ea3ed404506a4b8dced831c2174995b4455797dd2fa3430f575c6ee80b7d74149746b415ffa6613fc8404ae9e5625e1b8e2b74125b341bd1cd8ce2e87c06114f162fe464d299aee6ed0fe70cb4de523c5b0e10f1f8996f3fdfc9379c3267c268cf29823af84fa756b99ee42f4e0ab8b691e5145f43e38e2 -Result = F (3 - Signature changed ) - -Digest = SHA512 -Key = 3082010a0282010100a93cbcd5c69a8e24b6be4f078652e6c8bf6d516b1316e842d5c8e757e387243c4905b37a66a30967ebc6ed6da56f690f60bec090652ee1926526a78317d41cdff392111fba8a6a91109953fe102c8a51e56b3b6f8087dc53e38d57ac31cd7bbc46f6d14bdf488852db296de27200d11dcd067d776af73c10cd044636aa4d9ea5609c75691aa164eb8abe0f187c0286dfa4d1f5f4332e7664c3c572671b757667e221cc2f0a3944926331ef73bcfc58d1ef8595a2bffd240f2397c4bcb69826ec26fadb3a154e58e86fea883d516d21cde6c162ab55fad9c52df547ef0e6b946d368daa97585084e43a32e029908910c6f99b4131c3961d0543fd583608e8a3e30203452b3f -Msg = bdd8719841159aba3f353440ef98efa92cc503da8d00745bd12094c3809bc971cfe3907dc4f5c2ee9c2e172e6a61e8bb0028391e1277f62199777d3d76915d5258c85d9bdf4dc1e0024dc8edae0e7944af3a9f0fd47b13584e47397c5afecddd2032e0d8da451df7383a516703c52bac02a440931a325168b83ad16a7409a27c -Sig = 2e7b28803bbf9d58be8219ace68c020a42a4b42e59c2c2e0faf56ca17f7c6f3a427688f124481308e249e4d579f576dae5743bae68b349f4d04bfc21d60a969b965827a67025bd8220603763cde90a42b4308f2c84bc2c4c8fd5de0efda349e9cad1f47140d01fd27021ddfe16873067213636ad961cc85d79a87231e1019ac4bedf9630e2c31f4b413d98ffeee53fd46ca6d62449e86fe7692b59feb18bd9296291d1bda77bb9c7cbf15bce21aff1c6f1ed9cc95a87378b13eed54d7b54835160f88f7ec710c87eec07c2239b7001bcd4a8428a1a274d1c78d89c2153c46f4ec997df9a19838813cef1381dcaf97bccac39739a3142aad21a966da1be5c471c -Result = F (5 - Format of the EM is incorrect - 00 on end of pad removed ) - -Digest = SHA512 -Key = 3082010a0282010100a93cbcd5c69a8e24b6be4f078652e6c8bf6d516b1316e842d5c8e757e387243c4905b37a66a30967ebc6ed6da56f690f60bec090652ee1926526a78317d41cdff392111fba8a6a91109953fe102c8a51e56b3b6f8087dc53e38d57ac31cd7bbc46f6d14bdf488852db296de27200d11dcd067d776af73c10cd044636aa4d9ea5609c75691aa164eb8abe0f187c0286dfa4d1f5f4332e7664c3c572671b757667e221cc2f0a3944926331ef73bcfc58d1ef8595a2bffd240f2397c4bcb69826ec26fadb3a154e58e86fea883d516d21cde6c162ab55fad9c52df547ef0e6b946d368daa97585084e43a32e029908910c6f99b4131c3961d0543fd583608e8a3e30203452b3f -Msg = 3858011a054c52e3b659066f55f219dd58464bfb22b8c55dcc90ffac24f0e141f60929f28b8e0c2c7069204378ae790504cd1295820b6f77343381e73388ca6fb3ffc2b888ab78a1ea797c8e751dfd02734c2f715e2cef4fa109aa6d9f497b85f6a29314058ade67acefe4f95229edfc2d2d6836bd038d0e9a7a42e7701a3bac -Sig = 311e1025e0a8820a5ddc4f632628bac218baa94fb32c709ff70db3ecb3a1957e31513fdbcf15d83927f5840584af5ed90b350833f50cbeb718b12c56fc260b41ef627776bf1c0a67f39be26cb0045e6c2b60216338a085cd867bc5d9e744a27ff77baea199eeb669a2e0096256d081b2313f3b79ed180712ef56a0b549eb299b96029fd93e4f68bee5a0e6c8ee44ddbb06b8843fd4365cbabb229d2f8f2a9881974adb406e6ffb39eba8f20da38b558d0069f45f91c85debf6872a4ff36d5a79284050faf42b78b1770b176c88b7fabaca9111e511dc73a2bacb30abc3a841bb5b0f0b844e756dbfd3f5db458c47861df00b085a06e07ab4e788a080483ccbe4 -Result = F (4 - Format of the EM is incorrect - hash moved to left ) - -Digest = SHA512 -Key = 3082010a0282010100a93cbcd5c69a8e24b6be4f078652e6c8bf6d516b1316e842d5c8e757e387243c4905b37a66a30967ebc6ed6da56f690f60bec090652ee1926526a78317d41cdff392111fba8a6a91109953fe102c8a51e56b3b6f8087dc53e38d57ac31cd7bbc46f6d14bdf488852db296de27200d11dcd067d776af73c10cd044636aa4d9ea5609c75691aa164eb8abe0f187c0286dfa4d1f5f4332e7664c3c572671b757667e221cc2f0a3944926331ef73bcfc58d1ef8595a2bffd240f2397c4bcb69826ec26fadb3a154e58e86fea883d516d21cde6c162ab55fad9c52df547ef0e6b946d368daa97585084e43a32e029908910c6f99b4131c3961d0543fd583608e8a3e30203452b3f -Msg = 6883a018b48af70d2875a7f5cbb5a303d7338b6d76f988c3cd2f787f394a4bddd880aced4c7fe4e6bb5efcbd1ad422f6aca84fbbc568262bd45e1ef4a0c0e324d227fa3cb442a48638cc06a93cbb867b0cbb781629dafa2e49851ca29eb345505b60d22e753dff97a6a60be2b8d49739005450a829b7cd75338cbab0ba8b370a -Sig = 15be3fb200858d24ddb7586470ffe706eb299da157880a68aae79ff20aa92eca298eec75ac4ada285ecabb10479fa593ee72c585aba707f45599de0dc792c6e3390da5729ae5506100b31c617ee12445093a7593bbcd0e5a155fb9a41cf332c9d65b0d8f077fb417f027eaf728c5c326bddd7be7bf3e69a165c57759337105b94623ee203641ed2bf58f1907e3413b00e08d54a10bb645175449f02da9366b11952364c0328fff018723c30625836a0cdc7a13c220428d03efd625fce63f022b59508fc68ed4d16294111fc391052705ec115da4ead8caf5c50af586ba4dbe1b29d04452f947b5fe9e16a798f5d00094dfe2ba910e6449bd52d3f938c045ca9b -Result = F (1 - Message changed) - -Digest = SHA512 -Key = 3082010a0282010100a93cbcd5c69a8e24b6be4f078652e6c8bf6d516b1316e842d5c8e757e387243c4905b37a66a30967ebc6ed6da56f690f60bec090652ee1926526a78317d41cdff392111fba8a6a91109953fe102c8a51e56b3b6f8087dc53e38d57ac31cd7bbc46f6d14bdf488852db296de27200d11dcd067d776af73c10cd044636aa4d9ea5609c75691aa164eb8abe0f187c0286dfa4d1f5f4332e7664c3c572671b757667e221cc2f0a3944926331ef73bcfc58d1ef8595a2bffd240f2397c4bcb69826ec26fadb3a154e58e86fea883d516d21cde6c162ab55fad9c52df547ef0e6b946d368daa97585084e43a32e029908910c6f99b4131c3961d0543fd583608e8a3e3020334ddb5 -Msg = 20075fe0b26832c234a861a77078a8e9a42be3862ac4d0d058541566a68385620e6c9fd4b9ae5770d7bf1a83cf840c2c981f94c866091aae8a600f1d93822e72bada029e7dfaa9d889ead78fddc01ea32d716cd484e7d57b2e549278d5c54a6beafa91274775af6312d1a2b3e45566b72ac97392cc88889e0dd7a75fb37560b5 -Sig = 9166e91b18c8518760131ea0eeecc443023b61148a1d42030ed09d509d4c02cd0068142fdbc6e56073a68f5a942c0c93a7f90882f160522ea005f4afd34453c8c1b1d3a4e5204d0f9b797bc00b84d0dd96e311394f089567e45ecd0c795be010e7fb24e46a2842e8c7dae9d2c760fa09e20a29a623e6c53e3c436d809032b99ac4a81e63ba95a356f86a62dd6abbb0aac1d0759e44ccbfe225f5d206aba8dc7261daa9451ee1ba04de1172ad80c08f0709d2012ad8ffc8c5152508bc1e18ab53cde79ca50da9eee9b3b5229d38015f7e18f03612ad6270727be16fec06a5d9230ece777ff6936a3ae8f3a631e3e13f930256c3903d963ece49c5a10b5a6da47a -Result = F (2 - Public Key e changed ) - -Digest = SHA512 -Key = 3082010a0282010100a93cbcd5c69a8e24b6be4f078652e6c8bf6d516b1316e842d5c8e757e387243c4905b37a66a30967ebc6ed6da56f690f60bec090652ee1926526a78317d41cdff392111fba8a6a91109953fe102c8a51e56b3b6f8087dc53e38d57ac31cd7bbc46f6d14bdf488852db296de27200d11dcd067d776af73c10cd044636aa4d9ea5609c75691aa164eb8abe0f187c0286dfa4d1f5f4332e7664c3c572671b757667e221cc2f0a3944926331ef73bcfc58d1ef8595a2bffd240f2397c4bcb69826ec26fadb3a154e58e86fea883d516d21cde6c162ab55fad9c52df547ef0e6b946d368daa97585084e43a32e029908910c6f99b4131c3961d0543fd583608e8a3e30203452b3f -Msg = 46c4bea2eae66ba40f3a6223a28a9756d7c980ea6e4976e2342e5fa1cc238a45af4bda37727a270048a6e15fc798f698efe7f60e682776140b5eb201a4b77682f67b3e35003c9c737f54da6db48ee07a672259af2ce712b1e5c4a2c788675033233a31c31d9391a3be2c9475f1d21da34961eff443ef135ecb48791c019be200 -Sig = 85f33d22d92f3e4f31c5fc0f17df916ec770903445f73536bef61966918efd0b380b9933d2864dfa10f5613d8a232412e5b3db44717eb576fc180891800c5d11597d2d09e477d0392740d700408f3482da6f8d9bac4da6faa220ca3cfd2287f5ed8654bb8dc8ac45e09e52e93bc78d8cb4e08d76e15cfa78c51852c93d31d64417c29aa7e22411746c280e3e275f71c4742faa0cece8e540d1b8bc393db120fc14244a2577650b514c73dd1e5391da76aaad375f56a3cb4e0ca942bbbb542213b5a38445cde0dd9eed4f7515c6c58251dc94c25f7dd929d714b2060da252584af84b82013f924fa91700d92523d69c96e0b0f68203a977affa92574cb241c0c4 -Result = F (3 - Signature changed ) - -Digest = SHA512 -Key = 3082010a0282010100a93cbcd5c69a8e24b6be4f078652e6c8bf6d516b1316e842d5c8e757e387243c4905b37a66a30967ebc6ed6da56f690f60bec090652ee1926526a78317d41cdff392111fba8a6a91109953fe102c8a51e56b3b6f8087dc53e38d57ac31cd7bbc46f6d14bdf488852db296de27200d11dcd067d776af73c10cd044636aa4d9ea5609c75691aa164eb8abe0f187c0286dfa4d1f5f4332e7664c3c572671b757667e221cc2f0a3944926331ef73bcfc58d1ef8595a2bffd240f2397c4bcb69826ec26fadb3a154e58e86fea883d516d21cde6c162ab55fad9c52df547ef0e6b946d368daa97585084e43a32e029908910c6f99b4131c3961d0543fd583608e8a3e30203452b3f -Msg = 25e9e6c39ee6f5c455d81f868713362929cd68ae87300aac2bae94440095ec56b7e3e7f56a5b0d197fd89c94d0e2d048087f6296504b4e1a2ccbda959fffd42a96361bce842661fa493c2ea25831286b19de93198c5114463020ba5a23fd3eb78a8b8a34337179cd79acde996829c7fc2293031d816ae19afe553b7bd2b9b365 -Sig = 2e0b30ae35777c9f951b22740fccb88fdfa94e7d139c9eb105be1a1ce542f6efdf4eb3d1ab0b2342f8e354a0878e31f0bdec1eb67ed19491a086065af7e5188ed0b95e0dc88812f66d6c726fd672e03652432f85a9fe4766a7c315c0c695fc37c45ff5441d3177c4181f01c243ad3c9614e4c6f4f8b879ca8167a7790aca6b34c74936cba58e64cc4e32ffc8ad6c09c48ac59f1eb18dd11871ffccae98c465abd5885bddf59dcec5ddb31ce4ecd86bf6af207373a912b2717e726ce9ff555f3502e8cb83e287cf0f7c938cd4b26f075fd50e4127555ade94c974a4cf604ea5c5d9e94ce91fcb9a2bfc8743c06e69ca41ef029881c3d64078cc6311c694dee627 -Result = P - -Digest = SHA256 -Key = 3082010b0282010100a6754738bdf94dbc846ceb937a3896e747d5c6222453a83f6c86310e5819129613f9857d5e4a06bc5d927bdb011d23d8219549ced82c20592bdc419deb67fe43da87fcdfd01ac1acb07e513170c45d1e058fb56d8cb090a7f2565381785c4478362b253d47e056053516be15f448878d01c9dac06be45957882ccffc5ddaf06bc131c866349668de950e9121b134e5ae1c29815473a20028b9b7ea64d9dd8253a518b766dea714f7b37185a1d707a21cfa526a7d76f55119af728626b77e5b66328c2b37ec78be56380a4cd3900fe6a757f21b5728d31e5f1344aca933042b99240f89dc09e76a03678b402780bf64813c339e79893a3355674ff4807b200775020400a54611 -Msg = dc4c136c805849fe77b4b381e4c6b22a3ff69947a9b5aa6b7cbe42cb279c50e8396d0b6ebbe5e55cc396ba66466e4e982e81f63bac0895fcd0aaca4b57fb6802c4432747b28099b368ae5fb4ae459c2fdf04aa6a40ed0c2a9091a418e08d2669a555cdbe0c304d498d840832c35484397b071d9c0b6bf73be5f937fa6b5b7367 -Sig = 723f89429e5f8443defd528d57798d67548279cd169d185a0052e09472e1b37c313250136b2a5f8910e31229363515ad674ca9489d6c7ca7974277ba323110c152f664a79cfdb3453d4cfa6edd124f81384daae9b06f24f3599884e13db024393b5e211ca352149521eb37d29902de0c4392b44bcdf79d2f3792cc0a7edc3995aff9629719507a2bb35eaf2be9a88b74551a068e6e556d78f1662f0a78cc29be00acf9af7ba491940b8a731a3af7003654f15205c6171d009a015b68d423166e971cfce113bf2c7edae6af28a500d43e2f3bcb3b8dbe940eb0f8bb1a077bbfeac4cd20dbfe058605c31b3d1be79aaf1d051e27daab45597ac2838763e49caebe -Result = P - -Digest = SHA256 -Key = 3082010b0282010100a6754738bdf94dbc846ceb937a3896e747d5c6222453a83f6c86310e5819129613f9857d5e4a06bc5d927bdb011d23d8219549ced82c20592bdc419deb67fe43da87fcdfd01ac1acb07e513170c45d1e058fb56d8cb090a7f2565381785c4478362b253d47e056053516be15f448878d01c9dac06be45957882ccffc5ddaf06bc131c866349668de950e9121b134e5ae1c29815473a20028b9b7ea64d9dd8253a518b766dea714f7b37185a1d707a21cfa526a7d76f55119af728626b77e5b66328c2b37ec78be56380a4cd3900fe6a757f21b5728d31e5f1344aca933042b99240f89dc09e76a03678b402780bf64813c339e79893a3355674ff4807b200775020400a54611 -Msg = ba85e1f4f9203ba8d3eef645d7923e10c614080149cc5ec6e282f70b23d30bf91ed665fc1c00baca924539a1508063cffc151d78bfd504943e220037cc531c15dd5a9545bea330458440d13f43444a8a806c7174e805753f42097269a28c4231df56975648d246229327e6a716a49a493a612b7c2c235acfd581742a0d452653 -Sig = 90bb73e761dafdac0b38e4ada5deb5f713ffcbe119ee7af2152ffb3664ed8b7dc11815fdd39f398050ef8d901f836945a89dd0c71ace4b60979ca7e426f676ef3653d7f5045afbf7f38af3eefea2bb2a34ebad8ba029874995d24e98926faffcc79f110ba8f9de35b48829197634f0d842a8ef0dedda72807df0676e08c6b8f76124ae2994151c0379c21dcf3ee33297d8b13eaa74511ec7edf8058dea5d5ee4a6d6701d0700aed62ebe6d69dea7d0b79d01fb5fedb4e291542592e977fd13ad1d49d3c9cea4abaaf003764ad0d3cfd75cae41fdd740e6c17b36831a8f88fd8f9432f45d2bd529291c58215c221d546d71e78a4a4787630af5692a43e1c83af7 -Result = F (1 - Message changed) - -Digest = SHA256 -Key = 3082010b0282010100a6754738bdf94dbc846ceb937a3896e747d5c6222453a83f6c86310e5819129613f9857d5e4a06bc5d927bdb011d23d8219549ced82c20592bdc419deb67fe43da87fcdfd01ac1acb07e513170c45d1e058fb56d8cb090a7f2565381785c4478362b253d47e056053516be15f448878d01c9dac06be45957882ccffc5ddaf06bc131c866349668de950e9121b134e5ae1c29815473a20028b9b7ea64d9dd8253a518b766dea714f7b37185a1d707a21cfa526a7d76f55119af728626b77e5b66328c2b37ec78be56380a4cd3900fe6a757f21b5728d31e5f1344aca933042b99240f89dc09e76a03678b402780bf64813c339e79893a3355674ff4807b200775020400a54611 -Msg = 284748185ce9e8eb0f872623d43950277e53f59b362f9b40ca2db01548f7c3c3cc0af4379672a9915fd4833dedb2915fe6ebc375e281a138c39f3cc249db65f6e1b81e1dbe6f4ecd2befb90f20222ec013720238108cbe2a0c6315cb77781937105aae10fd683e681bdeaee193109112aef09c2dead65adf4d812178f959454c -Sig = 49193eb45d4d355537d9bdf3bd2bf0fad9d7e33241172d231dea6ca7c9d7bd2bc3ed85285bf01bf379da0db4fc04cb7e53cbbb38695fd689bb73f818bd4e3fbc042013f8e002beb92847dd0d5fee9867cfa3fcf76f3f648cc36f4a67e295aff914f796cc0cabfd4396fc6cf171f468361ad6ecef2023b0a23884880a17ada5372c7cda32cc1e3b986451219d7a171e6c6d5608c3dbe55403b4b42f6eb3f87948d0d72f51de963ed80033b42b5e7ba76c6fc5f74b9a5249b60bb507dc86ad53f5b9b710652a2486a3cded83e447a4c114c4dccabddc51787c19687548c4ff157d887c7886b19ff85543c7f8340a6fee320ba49e02c463c8bbe10d45805c67cb6b -Result = F (3 - Signature changed ) - -Digest = SHA256 -Key = 3082010a0282010100a6754738bdf94dbc846ceb937a3896e747d5c6222453a83f6c86310e5819129613f9857d5e4a06bc5d927bdb011d23d8219549ced82c20592bdc419deb67fe43da87fcdfd01ac1acb07e513170c45d1e058fb56d8cb090a7f2565381785c4478362b253d47e056053516be15f448878d01c9dac06be45957882ccffc5ddaf06bc131c866349668de950e9121b134e5ae1c29815473a20028b9b7ea64d9dd8253a518b766dea714f7b37185a1d707a21cfa526a7d76f55119af728626b77e5b66328c2b37ec78be56380a4cd3900fe6a757f21b5728d31e5f1344aca933042b99240f89dc09e76a03678b402780bf64813c339e79893a3355674ff4807b20077502035bb217 -Msg = a3c2ec4c47f444bec34c15ff25f2f811fa94f9a5bf05a5de982a6458451609695174a8a68c25a7a9bc2b181290c646ccd5dc8e92ec9e71b17c69e70f64eaf56cf48681e85cf966c5643dc46f5ead99b9596a966a98fe2bf8433fe5935b76f965f3c121199eb6a69a2449be1d79f01961ef05b735aa6bfc3c547406ed13023edd -Sig = 039c1de64720207c408ea9889471fda297c7b3828e46831ca5ee60a938ba13a7ac524cc394d5ea12d89c2cecfb06ddcc6d86994ebfaf84eb91f39ec470898d89cbc55a12dc47e7be7e0f389dd12c5e59a32d5ca6a37a3e6456fbb8c8c8101725cc3d529f5d1be12de765750e5ee632e43031656442ab0e49f9471cae87dec5751130a2622ecaeba85ef337fa31c472d6a9696231123db350f5a390c8d7ce1f1a839a4c674aee4e7af60ef62e689117fe645e4c322f20373b9fd75dc8606e70d659094f2d2c98108c6c32576adda57ac0b30c47dff442b0901448c68aa1afee4879eddd84d9f2f954971249d87811219e433f3d0d5adff57133d0e9c12f82deec -Result = F (2 - Public Key e changed ) - -Digest = SHA256 -Key = 3082010b0282010100a6754738bdf94dbc846ceb937a3896e747d5c6222453a83f6c86310e5819129613f9857d5e4a06bc5d927bdb011d23d8219549ced82c20592bdc419deb67fe43da87fcdfd01ac1acb07e513170c45d1e058fb56d8cb090a7f2565381785c4478362b253d47e056053516be15f448878d01c9dac06be45957882ccffc5ddaf06bc131c866349668de950e9121b134e5ae1c29815473a20028b9b7ea64d9dd8253a518b766dea714f7b37185a1d707a21cfa526a7d76f55119af728626b77e5b66328c2b37ec78be56380a4cd3900fe6a757f21b5728d31e5f1344aca933042b99240f89dc09e76a03678b402780bf64813c339e79893a3355674ff4807b200775020400a54611 -Msg = a14e35290344465d6d2f43688a663ee418f80f13e1dbee22ed4641aff65bb28a1c0985b8da3128be39070c1c43bcb417bb5a0cbb0beffb217eed3beeafd1691c420358fdd1fdab7c29b0a3a7b723356a3d5e609dc986bd42e8495807177dbe137a0357fed1f2f621a7f1af11cce5e96606cdb3c104e95c0d93223d0415a6daf5 -Sig = 93775fe8676f4e6ed580f3db99e0697e15f8e0ad168a9321cfd004e6d0bd555bda6483f51b1df63ad78f28a3638e70d230c5e654eb4c86c2c1889a06e28e2a640210523b90fe14019d03d0a3b14c7608614fd88a84ba2c68f7c0e01f9502269382367a07f2d90ee53e15abcd584c56de4602f7573f493e41670026fefaa6e12c615d19d1b2ba25cd0f48b6ab20a8bf809dd15ad9172bc8823302993b51f0ae5f89e5c05ee0dfd91f8926abe7fc64c7694613a996be5728ba3c6a4d2387331c5d3b21377f9734b587fba180577aa6cbba1f4a2483e4e46a5d7c355b4088063d32a10c99bc654677eb08a9b57ad40d88d378a8111678e8dc60be3c789a0639c056 -Result = F (5 - Format of the EM is incorrect - 00 on end of pad removed ) - -Digest = SHA256 -Key = 3082010b0282010100a6754738bdf94dbc846ceb937a3896e747d5c6222453a83f6c86310e5819129613f9857d5e4a06bc5d927bdb011d23d8219549ced82c20592bdc419deb67fe43da87fcdfd01ac1acb07e513170c45d1e058fb56d8cb090a7f2565381785c4478362b253d47e056053516be15f448878d01c9dac06be45957882ccffc5ddaf06bc131c866349668de950e9121b134e5ae1c29815473a20028b9b7ea64d9dd8253a518b766dea714f7b37185a1d707a21cfa526a7d76f55119af728626b77e5b66328c2b37ec78be56380a4cd3900fe6a757f21b5728d31e5f1344aca933042b99240f89dc09e76a03678b402780bf64813c339e79893a3355674ff4807b200775020400a54611 -Msg = 555400784d0566105b91dca7f4f0849d832d51f0a3c7d3b9925651fae271199672d014a19dae9ddab1719376a38dad2001a60e3d27f51a74b6ec876e421db7da4b5845b56f13dec8dd0f52720d39eaa7afcffd39e1c3be56a4645853913b3da7c833ba3b2afed0e1c8b33f219abce33c75ef436b37fb68684506eb2f37945206 -Sig = 6dbc3049603abc4677bfce12929bcca60bff5350809ce3f98259ddb72967faa076bf02206c9bfcecdae3421c66f2eaf846b4effbb5e6d774e000c1f1f7c1cf409b98f5e0ca13cb2dbc5b1692c6bf7e54a743e4b24c53451387f277aa66e16da87246d3ab7ba1fc5ab1a9029546098d12d1a45293860e2c8f4838148c89921467285b0f6c916f3b0bcab98dd01120055ad1acf9ce18a2f276eb15aa6f9a0fe05652aec728f831063fe6c7985ce3be11377703f76b4904d292598abac7be35bd1409dd7096fdc851abd2b20a1883f4f915309ecf507ce76dc9a75b36394c6f1fa6685857538ff3b847affb483a670969ff59c8de0391ce73bf1e85601d6bce92c1 -Result = F (4 - Format of the EM is incorrect - hash moved to left ) - -Digest = SHA384 -Key = 3082010b0282010100c5c92cfbb60bff3e7f9499847e869a4bc37250994789c2958ac2f6a168bce2a1915d38725d8596cbcddbd463c2a46a52561a551f8f49d527eecfbef5589030891d9d90090fb35e43e8620c7fed4a056cd1c4a56e6134433030fe8027d1819c09638e43e359c7c389ccd1986457ff5e21673808cb436608d550d62120d9bdabac419cd6249fec945f10711874f10267c66320c701da90d7354b23e1646b89b22cea44d9e67c706ffc04a57927a5c9157cb049b1090e0f86d6cdaff29570cc629fef0646f9e5f8a7dc67c24052a34b91ab08b2e83b141cd0c098e35cbbb9fd408e7e107932128f6eb58e604764a7fe00acecb9b03203a24c9a760ca0d8a5886023020400a26a2b -Msg = fbf1f99265060ab82e3cf1a3cb86ea71748f05c4d69e79c209bd3b61c11acfe1c8ad5f9aac1b0af7b5db7ec31997c9a373d56ce472d6b177cebe3f3a81f6ec7a33cfd2b5f668a5a433d14478e4708d6504a4765d44a9591e00bc906e717f42a5249e7c6dabb384c692676a4d95dadfbd0f464ab6b6df19bd86fd5585fb7c7a6c -Sig = 89e152374ee953c4d9e69e29c3100f0168eb71d0f5ad31f6eeb52ab6caa465ac028b81478947fe08765d77dc9d4e75bbe2cfd14f25124e42f7bcff6512193cfe3ef9dffbf07020cc5e4ab0b0c44fcc4b2bc8285f16fe08be89b432fde26b0498c9ad46be8bca8e1354c39b571a8e30f07aec84a1fc9d1a8e239d79223a6af22b4abfe36ac108291503a4f557a7bae28b25ceed47fd5b81182cf391ea409de7ba1eb2b404d4468eb2b47c2930845e2e9199fff4f0c838e3bd5f3a0bc798fd6fa4be5e962070cb45d01a84170638fe2234e8df928777213a87be0adee56b8ae514cc05c5d52f872416b1ea2112e76c364ce82ca33027e0fd1f8c0424276659c08c -Result = F (2 - Public Key e changed ) - -Digest = SHA384 -Key = 3082010b0282010100c5c92cfbb60bff3e7f9499847e869a4bc37250994789c2958ac2f6a168bce2a1915d38725d8596cbcddbd463c2a46a52561a551f8f49d527eecfbef5589030891d9d90090fb35e43e8620c7fed4a056cd1c4a56e6134433030fe8027d1819c09638e43e359c7c389ccd1986457ff5e21673808cb436608d550d62120d9bdabac419cd6249fec945f10711874f10267c66320c701da90d7354b23e1646b89b22cea44d9e67c706ffc04a57927a5c9157cb049b1090e0f86d6cdaff29570cc629fef0646f9e5f8a7dc67c24052a34b91ab08b2e83b141cd0c098e35cbbb9fd408e7e107932128f6eb58e604764a7fe00acecb9b03203a24c9a760ca0d8a5886023020400b2b5c1 -Msg = f2280564177a0b97e8089b77d7d0cc8ed54849a90d44a7dcd319f5c6d70394169fc4494e348e90c81b2333f6863b1cedcc26672517b2bc7a5c4fdc77917179d41a364b3d844960567506b4fbe3df01cc85fed8e9872bf1fa82f1c073abfc48164bc634b96f732449e0f9450f55832432e818c47dc777ee632c46c8408f6ca9e2 -Sig = 7f65da249423b1406aebe4ca1253075588b101d47207acc5dfb7198dd45548ee71ffbc1bce87e7befd256ae20250208c451bb3a4dabe87c0dd67601ce21a49b1fe723b224d02c7304876e5b2f6804f76d1d57fea8edb951b536c372929863cca988380373af61402e746f71103a9d012d0db121c4e2f636e44b6457d16d12e8b493bdec5d05fd311b502e56ae99071d9bc62dcae68b27f8db50d030963e2dab44e4215be69694a55bb113a8c43d3c2412af0ba055ca740ca628a6254add0e0cc51593cd9a283cc70303caaf8e543ac71bae196f208cd4c9373e2810c94029da46b78b421d6aa8bb00bd83c474534bbaf9629f53bd2df3346200631f7cb9ed4a6 -Result = F (5 - Format of the EM is incorrect - 00 on end of pad removed ) - -Digest = SHA384 -Key = 3082010b0282010100c5c92cfbb60bff3e7f9499847e869a4bc37250994789c2958ac2f6a168bce2a1915d38725d8596cbcddbd463c2a46a52561a551f8f49d527eecfbef5589030891d9d90090fb35e43e8620c7fed4a056cd1c4a56e6134433030fe8027d1819c09638e43e359c7c389ccd1986457ff5e21673808cb436608d550d62120d9bdabac419cd6249fec945f10711874f10267c66320c701da90d7354b23e1646b89b22cea44d9e67c706ffc04a57927a5c9157cb049b1090e0f86d6cdaff29570cc629fef0646f9e5f8a7dc67c24052a34b91ab08b2e83b141cd0c098e35cbbb9fd408e7e107932128f6eb58e604764a7fe00acecb9b03203a24c9a760ca0d8a5886023020400b2b5c1 -Msg = 55c50839aa7d0321a6a85cc3f55ba7f6643bc6a18a8faf73ae9a70d4e527701b7b65f70194f5f0551342eef2bb116eef94595c159154d8966fd639fbe0de525fe96af5db8990b6419bcbf10dfd930f98f230048fc5cf1ca4b0d6f883fb75d308687d0bafcf76dc4c06ec6efc0309125b4569c8f7702906053741b4537e147b7e -Sig = 0b853828fa2089ce0d1955d52b20424748a4b227b56c557ad63782471cd0462295cadd808c5250ed2f11e7d2754c8734fa9d13c8b96496eefa515f3f127869bf42fc8c6bd0ea0247863b9c56747d15b16da322064f7cb723e2eacb4457c241b3f84a63b7bc307dbdd63b4d755b9b4a6c0b7590e5c1c7c5dbf9ba61eabfc29a21944ca6166e56e01a42a94b5d8b898c0fd073b03ea998f35e26289454012e62bb58222fe9a03c9b0a562b9b16602c7794ba835245a1401b8e3ae28e00541cb7a9aa8335de46d063739e8c71999b65f7c8fec3701a46bf3c60139b5b780bdd08c679117e14136c84c93fe403efbf346213ef4c85bcf3e2dfd44a6b616009ff47b4 -Result = F (3 - Signature changed ) - -Digest = SHA384 -Key = 3082010b0282010100c5c92cfbb60bff3e7f9499847e869a4bc37250994789c2958ac2f6a168bce2a1915d38725d8596cbcddbd463c2a46a52561a551f8f49d527eecfbef5589030891d9d90090fb35e43e8620c7fed4a056cd1c4a56e6134433030fe8027d1819c09638e43e359c7c389ccd1986457ff5e21673808cb436608d550d62120d9bdabac419cd6249fec945f10711874f10267c66320c701da90d7354b23e1646b89b22cea44d9e67c706ffc04a57927a5c9157cb049b1090e0f86d6cdaff29570cc629fef0646f9e5f8a7dc67c24052a34b91ab08b2e83b141cd0c098e35cbbb9fd408e7e107932128f6eb58e604764a7fe00acecb9b03203a24c9a760ca0d8a5886023020400b2b5c1 -Msg = e4ceaf62ba10e317e1001d8a6a008843880790159597ffaf56ef666d8081bf747ba650fd6591d3f15a81d3b7f33b59490cb8c88ecb1b06e4dee6dcfb036ca0eace8a117ca79282cb12883b1133911cba91a883be1a93702d6715e70c4266965f65e0b88785fb39ce8f7b1b4132e818be9d3f894d8ae786b37be64f454355eafb -Sig = c269b61d34cb9814934aa8d2eac38f5d941d7b69e1e0cdebea5f275f9fc4a94007cfde1b33a0f9cec3d2b60c6b6675d8a91e7a3251d78c31943524ba75824cff10dee098205f0c84d0f941bf1098785597a88c10058f2c857f85e53a205de7cedc10ad3f1d2abe3cf7c61382c14eeb6d7b409f690f9690fe9b72eb84619fc1f95a8fab7bf9a35248d7e1c89559798c0958a75b85fcaf143b41c3a23864a548026d57209ef64c2d6d61bf9ac15257a531b10fcc06fa97fd6e3fe1a882bce6fd2b8eb5a6267835dd8eb0b5e3e21350f6650de66d27c719980e98ed96006115caf94c061fd3669dc64653843853269b1b6df0515cf67f3161024ab3cd99a4ff5f16 -Result = P - -Digest = SHA384 -Key = 3082010b0282010100c5c92cfbb60bff3e7f9499847e869a4bc37250994789c2958ac2f6a168bce2a1915d38725d8596cbcddbd463c2a46a52561a551f8f49d527eecfbef5589030891d9d90090fb35e43e8620c7fed4a056cd1c4a56e6134433030fe8027d1819c09638e43e359c7c389ccd1986457ff5e21673808cb436608d550d62120d9bdabac419cd6249fec945f10711874f10267c66320c701da90d7354b23e1646b89b22cea44d9e67c706ffc04a57927a5c9157cb049b1090e0f86d6cdaff29570cc629fef0646f9e5f8a7dc67c24052a34b91ab08b2e83b141cd0c098e35cbbb9fd408e7e107932128f6eb58e604764a7fe00acecb9b03203a24c9a760ca0d8a5886023020400b2b5c1 -Msg = 71ff5c8bd950fa414c774075da8ef7a1a58165bf4fb7670cb1f5c00cd07fb1ce0c80ca719babffe73623fef91298c08b12b35e223bb527a3685bef5e3f04a94a63153992eb9d83511435c89a322b32bceddfadc4a96cf943468bfd510ab55fd1db8851f7b26cae084c764561238d75bb9ccbfaad82250672b34f93ed19daf8ea -Sig = 77b82998fac61f387b1a3264bd695ea3fff605bdcaf4c2d3a57f87f3f425134b16711c7812ef1a6c7a5d191fed835b90769883da3e7dbc81e141e3a477cee00b1283e80dca67998835ef33480caeb10f5eb02374cc38129156197e81ffdf36a09e4c22ba30adf9760c441b9691925a2233138f93bb0283be4affec35094f9866e1de3ba4a7c3ebacf88abdd8a1034e968d104235a805c372daeb7b7844ff292bf1e02f3fe8912a28d92e0724f285410161f4fc8c9ff8e0ae91feafb890de775f874de9c8fd990fe77c21525d55f882c432060da56561811cb7fa2a7ba4ad907faa5453d1c2a8834eeeb7400f17445d59a3344fa64db8ee9e97020c5158def04a -Result = F (1 - Message changed) - -Digest = SHA384 -Key = 3082010b0282010100c5c92cfbb60bff3e7f9499847e869a4bc37250994789c2958ac2f6a168bce2a1915d38725d8596cbcddbd463c2a46a52561a551f8f49d527eecfbef5589030891d9d90090fb35e43e8620c7fed4a056cd1c4a56e6134433030fe8027d1819c09638e43e359c7c389ccd1986457ff5e21673808cb436608d550d62120d9bdabac419cd6249fec945f10711874f10267c66320c701da90d7354b23e1646b89b22cea44d9e67c706ffc04a57927a5c9157cb049b1090e0f86d6cdaff29570cc629fef0646f9e5f8a7dc67c24052a34b91ab08b2e83b141cd0c098e35cbbb9fd408e7e107932128f6eb58e604764a7fe00acecb9b03203a24c9a760ca0d8a5886023020400b2b5c1 -Msg = cb254c69cb296eae328fafd8354396594c74e8f9ee4783289bcc8a922031c2f517353c2fade0359ca8713a9ea899907dace6d272d982dcfe771de8803d28f707ce44736583fa12856bacfdfe90cb32e77c4b26eefc54afa4243b221b93b0b8b3f9393731d6dfce118426401e7743453fc48a2d94e026c6c1aa0c808aac32cfa1 -Sig = bab31e3b71988cd3f2a772cd0e33b9db6d7aea6b6b99f631a0259ddfe9489bc662d9c6c9e03916592f212bd4e9619148dcea0b58b475c72dff8815aa3f274ad19d19126d67dc6d120e985ce16a3aeb64aadd785657fc0370c701ffebf71d83260ccdd9da04a8f29a69a01c3a9a6d2bd942c44d5cb91fcb44af60a2b8e2c94cabc23ca04ec6d3005a82cbe06546c38d4fedfc56d549c785a2e23b04ae0135b03a17d63ea504c51a0d129c172ba2ecea5dc6b8db4cec7b7a4d021da03ebe8cf6cce67b8e032b4ce780136afb144e5d8019e7916932ba87c7d9c963c0f51d62c873af41396d87877ca5ae888ea7d322faa79345080fb9d2e6dd98b7b219b6662114 -Result = F (4 - Format of the EM is incorrect - hash moved to left ) - -Digest = SHA512 -Key = 3082010b02820101009d19bc62c9c1989df660e259e9c3b1fb805cff7546d2ea5a479d29ccc4e18f1ffc4f78a9af924e04001850d3c56a91c8738f047ae12c89fab3dec2ed1dd7a207ae635f587c101fbd2c542e86726f7f72aa47497162dffad87eb321426e8929afaedf4a94c132ffb2966c22aaca737550feada9f92c07c2095739c3ee524be18c1a34dfbd2e210868c7c25a2fa222c65353dd28008ceb10a570206a59d2a23b22cfd9f38daa0db78c4843bfe1ed1a366dc128ab4d5dd45a28586ca4c8b0ffdd90759028ae29eab9c56cb0da94ec13d3d9fa69333c6065f3ec4c6392259e1c2f761eed8f8aca57354c76c2a0aa6b9045e5182a95ebd332494d642ef07c1e3617d7020400af8e8f -Msg = e74ded82964ff874c9e10540c9f1dedaccb376b882e61f33eb5afd316bafbb01205f7c8673ff1598edc179a74d3e74a1d7729d16ee08869be5d8356c13afd855254eb4d2b8b55f7528a12f88a253f2f48193df61d7f5cd9f495ba34421bb10979e227cad8ef93ed21f880f2bf3b8be99721d26df64335e08bfe82f03bd5bcb91 -Sig = 23cfae518dad78ff6540e64f54ecb571ae4fa33fcc57732d8555cd25b44b46f46eeb109f91af7d08c89e16f4cf6aa119cd9633515c55ab3fad64c8932417ca945be3e26028b752bca8851567da6408e211df8fa215a8ec07fb6faac5cff26d174a1b5b7fec9ab12c128489c4ccaea60c1347b8451bce07ccc9c21e90c2e5dcbea4a292c16d60ba66ca4e5ffd6c9cc3b8ce4ebe39df418573e0e9f42ae09875a11050a434538790c5c700b5adbbf700db2a93f3e5ac4c570f8543f0a1c1d664f29d161b064a0892db495b68da2454eb983db0fb3defb0f688b67c8506c20dc7997e0bb51854a85af613a3b9a0ca3e746f3d8393b62106c58f8ececb502824c478 -Result = F (5 - Format of the EM is incorrect - 00 on end of pad removed ) - -Digest = SHA512 -Key = 3082010b02820101009d19bc62c9c1989df660e259e9c3b1fb805cff7546d2ea5a479d29ccc4e18f1ffc4f78a9af924e04001850d3c56a91c8738f047ae12c89fab3dec2ed1dd7a207ae635f587c101fbd2c542e86726f7f72aa47497162dffad87eb321426e8929afaedf4a94c132ffb2966c22aaca737550feada9f92c07c2095739c3ee524be18c1a34dfbd2e210868c7c25a2fa222c65353dd28008ceb10a570206a59d2a23b22cfd9f38daa0db78c4843bfe1ed1a366dc128ab4d5dd45a28586ca4c8b0ffdd90759028ae29eab9c56cb0da94ec13d3d9fa69333c6065f3ec4c6392259e1c2f761eed8f8aca57354c76c2a0aa6b9045e5182a95ebd332494d642ef07c1e3617d7020400af8e8f -Msg = 19dc8b8a9da18dcb3cdcd54fe19fb766a8635ede3904bf27550dcfb5ae36f4a6fc2bbaa54d8fc80e9c411252a6de509ef987aeb74ee4c5291868caa05dd70596c506852ef1e313600db46457a9a49317c47bce632aad4fde01968d709e04b4eb9df653ef30a3550bb7be332491f9681b32c824aa7667448f351e82ed18c4e9ef -Sig = 694678413019405b4650f73897387df0a9a0744c345e52c02dbbc7d0083c71e0304d0d8cb47e08ac78ca34bcac209679671a036e1262285bddcf8d65082d8f49db6637bc2711f2ffcbebc84b0a96f581bd2de0e53ca24c715e416cb4f4da2eb4a4d0df893895910cfa4c346ee002f35792cfc066f25f048934b911dc748ecc88f709ba96f320b3f4ac84b740d7ecd32af63a833612a6b153e06f082e25b195fb0498e57c0e284ae03fdb27124f3af34b468ec03c8f9e2e4182a8d0d18f10221f79c13715be8ca77ce322f81f7555a57fe2e759f280d2a095d33ccc89ae1629b6386014df1215bc21cd8385548b1a149f57f2cf8487a6867a1bce842240050763 -Result = P - -Digest = SHA512 -Key = 3082010b02820101009d19bc62c9c1989df660e259e9c3b1fb805cff7546d2ea5a479d29ccc4e18f1ffc4f78a9af924e04001850d3c56a91c8738f047ae12c89fab3dec2ed1dd7a207ae635f587c101fbd2c542e86726f7f72aa47497162dffad87eb321426e8929afaedf4a94c132ffb2966c22aaca737550feada9f92c07c2095739c3ee524be18c1a34dfbd2e210868c7c25a2fa222c65353dd28008ceb10a570206a59d2a23b22cfd9f38daa0db78c4843bfe1ed1a366dc128ab4d5dd45a28586ca4c8b0ffdd90759028ae29eab9c56cb0da94ec13d3d9fa69333c6065f3ec4c6392259e1c2f761eed8f8aca57354c76c2a0aa6b9045e5182a95ebd332494d642ef07c1e3617d7020400af8e8f -Msg = d122c9b539021a26f4e66a823f29791780a879da291b1858dea5baf0daa906408fe0a5dd8ca84647a49fe61c4d714e8b46eedd0c7d60874e2f1b1e715155d0762f38f2f45336fc0ca89dd49edf6b4fbd1263f561a760045c78eab8903007ca5ef85336625453425d4707bc72bebe83962c2e494271c4966a003910b34166fbe1 -Sig = 57619bb864865b005fae1cb334fc5e60a23cb148e722a781b1da7e822b849b93fc502927ce9d72bf8d2f809ca6afaaf268133a7820ccb1e6c5e8a7252f67f41c8c67f97d19c718b15c32a2fd4a98c69ea535b37d6a1c884409603c80e1aac8ca32c48ad5481ab56a02526a8f37b884f15585a4989f0a7c7f3afb20718f143c4d49fdafdd33944445d39bf857f8c03e4132b1a00d52064f60172b44b67919610f2b69fdb7a51b69087915f76a2a0896fe53103c81c27d00b8c805b42d2adbd31b21d1773bc1f96b3d5f9352f224cf1ab93c18cef97134fb3cafbda7b8e4c301981ac4027486d74d1308c234f84a13cdf0e505d02c3f1f2b8e9984d6b2fdbe0400 -Result = F (4 - Format of the EM is incorrect - hash moved to left ) - -Digest = SHA512 -Key = 3082010b02820101009d19bc62c9c1989df660e259e9c3b1fb805cff7546d2ea5a479d29ccc4e18f1ffc4f78a9af924e04001850d3c56a91c8738f047ae12c89fab3dec2ed1dd7a207ae635f587c101fbd2c542e86726f7f72aa47497162dffad87eb321426e8929afaedf4a94c132ffb2966c22aaca737550feada9f92c07c2095739c3ee524be18c1a34dfbd2e210868c7c25a2fa222c65353dd28008ceb10a570206a59d2a23b22cfd9f38daa0db78c4843bfe1ed1a366dc128ab4d5dd45a28586ca4c8b0ffdd90759028ae29eab9c56cb0da94ec13d3d9fa69333c6065f3ec4c6392259e1c2f761eed8f8aca57354c76c2a0aa6b9045e5182a95ebd332494d642ef07c1e3617d7020400af8e8f -Msg = fa0e2ee8d953ee3589be814638512966d3d5e1b4ca874079170f9fb87db17e070dc7249eef6f86ae5f816af4f6c4cc8d2b61810c19971aca83b10b7d15350d0cec5fc0a259cd9502e27ceb1a8af378da53beeb46001ecfca1fffb3ce472a888b9fbc4a1d9fd7e3d91b974ce07d48f5f452d6678b08842822f5e1ded49cf9b82b -Sig = 2fba3258af60a9c026bacaaba33076b21789358f63d709e4b2374c7e010a3f13d77d71aa6a70a116eda22a652706ede6234e71bb688c32697087a0c12c422e98cd6ea530ad7adf9e293c5eda311578cf0cd6b2cb32c9342f5e2e2f3fd8b27fd8b9bd7beffac03adf6148e72d9775c27ef90aa232f49bed02af05a0d1567817116a9abc0b81ffb02816ec6bac841e559fbdd7c2e41df9e4b66f76729fefc844d6dd6a879441fb212d4c065ebe6af9365fb2ff053433aca778d3a667c901dfd7dc35bc2518640a79aaeca1270646464ca55b872017a51cff49b56b53f70324168da72b0b5a297b790c89b1f71fa7937eb1e514d77f33284765b66608010c324013 -Result = F (3 - Signature changed ) - -Digest = SHA512 -Key = 3082010b02820101009d19bc62c9c1989df660e259e9c3b1fb805cff7546d2ea5a479d29ccc4e18f1ffc4f78a9af924e04001850d3c56a91c8738f047ae12c89fab3dec2ed1dd7a207ae635f587c101fbd2c542e86726f7f72aa47497162dffad87eb321426e8929afaedf4a94c132ffb2966c22aaca737550feada9f92c07c2095739c3ee524be18c1a34dfbd2e210868c7c25a2fa222c65353dd28008ceb10a570206a59d2a23b22cfd9f38daa0db78c4843bfe1ed1a366dc128ab4d5dd45a28586ca4c8b0ffdd90759028ae29eab9c56cb0da94ec13d3d9fa69333c6065f3ec4c6392259e1c2f761eed8f8aca57354c76c2a0aa6b9045e5182a95ebd332494d642ef07c1e3617d7020400af8e8f -Msg = e25750b83c69e4e14cd31a1f366d7f97134201535b3601fe9deca9e874e68051b6ee3be3eeb5d7800dbbe43e5c6e24b0b5965468f3f04ab9a71940c20dae70a73eb2e122a630803bb9217253e28fa967bcfbb59385fdddd5d02a6f14793a5461de6be77c4c20089ab8ce6b65b01836459139ccdef9a3e3da7fe5dde8a2d25504 -Sig = 5c3ff26414d2af68f316f7646fe4740d571d7d08a4553c250b6abf0187c2ccf16ede3ba33acf57e28b20ecfcd0c77815d280c08ef4bc76aeba9012939bb53a5c932ccada6323d8de5b00439032b0fb57c77e64423a50d480d9364356e0b3b841cc8a61bbff8f235aa8247c4df7ac1a31faa85a855c76109cc0a8baff6b46feffa65ad576eb2ecf1713baef88cbf8a9d939558f95677e749045a06b8da3fddca07b8c6e25499c8d2dc6f2e152b75a9a85af85db7c84152291bb03a6ecd65a1a0209d8291cca9db5648acebeae1faeaf488c49183b0433d74833812ddd35ca6b483a9f24845f10c11a18152c9d3c8ce5209ec4d8c10c5960cc5889950428e557e3 -Result = F (1 - Message changed) - -Digest = SHA512 -Key = 3082010b02820101009d19bc62c9c1989df660e259e9c3b1fb805cff7546d2ea5a479d29ccc4e18f1ffc4f78a9af924e04001850d3c56a91c8738f047ae12c89fab3dec2ed1dd7a207ae635f587c101fbd2c542e86726f7f72aa47497162dffad87eb321426e8929afaedf4a94c132ffb2966c22aaca737550feada9f92c07c2095739c3ee524be18c1a34dfbd2e210868c7c25a2fa222c65353dd28008ceb10a570206a59d2a23b22cfd9f38daa0db78c4843bfe1ed1a366dc128ab4d5dd45a28586ca4c8b0ffdd90759028ae29eab9c56cb0da94ec13d3d9fa69333c6065f3ec4c6392259e1c2f761eed8f8aca57354c76c2a0aa6b9045e5182a95ebd332494d642ef07c1e3617d7020400fd7a0b -Msg = 2288961b2d0b66e75dfe4079804a7f99cd9735db1bb50721513a3f611e6d1ca8ea636c5f0c685dce3da191de4cef70231415c219ac1e7daeddf9db01d967b06a2917fbbae80ebbc42f4d041cd0ae511e47101c32edb3ac4f6fe52fbe7fdf0821c9ea6ab329c626d11b4bc1ba7351ca934ece6aae483e3d0bef48601f789eccd5 -Sig = 394ecbdd1159193f00fcabfe13f1ebad7d74c0fa954dfe2fcea5203b54c93e02960490f51c155da452cb451aa012f15f27c9ed603014eb88b714cd3232b0b08caad1e18f80cfb81345a18c4419b88a429a4f69c72149e96acb7f4463deca7105938d51f2a9169297e2462dcf4eac45208bc509cc3e85feac0e51b3bb32974ee82fbd23b3e2dc06da6e7f64f917d00befb181b264101de55cd90a86e0fdb27b3e9e8ffb458b39b1718e20da779408de3abc05f98e196f5f92f4dc22b34a39c28aaed5d44ba5fc8a50fbcc355bbeada239bb664f2d8e32fd53a0f8a0ca081276c32cb61c74fa9523b1d3f6a795dacab8363680ef62a2a964f66e3f5c0ef5d663d0 -Result = F (2 - Public Key e changed ) - diff -Nru temporalio-1.3.0/vendor/ring/tests/rsa_test_public_key_2048_debug.txt temporalio-1.3.0/vendor/ring/tests/rsa_test_public_key_2048_debug.txt --- temporalio-1.3.0/vendor/ring/tests/rsa_test_public_key_2048_debug.txt 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/rsa_test_public_key_2048_debug.txt 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -RsaSubjectPublicKey("3082010a0282010100c8a78500a5a250db8ed36c85b8dcf83c4be1953114faaac7616e0ea24922fa6b7ab01f85582c815cc3bdeb5ed46762bc536accaa8b72705b00cef316b2ec508fb9697241b9e34238419cccf7339eeb8b062147af4f5932f613d9bc0ae70bf6d56d4432e83e13767587531bfa9dd56531741244be75e8bc9226b9fa44b4b8a101358d7e8bb75d0c724a4f11ece77776263faefe79612eb1d71646e77e8982866be1400eafc3580d3139b41aaa7380187372f22e35bd55b288496165c881ed154d5811245c52d56cc09d4916d4f2a50bcf5ae0a2637f4cfa6bf9daafc113dba8383b6dd7da6dd8db22d8510a8d3115983308909a1a0332517aa55e896e154249b30203010001") \ No newline at end of file +PublicKey("3082010a0282010100c8a78500a5a250db8ed36c85b8dcf83c4be1953114faaac7616e0ea24922fa6b7ab01f85582c815cc3bdeb5ed46762bc536accaa8b72705b00cef316b2ec508fb9697241b9e34238419cccf7339eeb8b062147af4f5932f613d9bc0ae70bf6d56d4432e83e13767587531bfa9dd56531741244be75e8bc9226b9fa44b4b8a101358d7e8bb75d0c724a4f11ece77776263faefe79612eb1d71646e77e8982866be1400eafc3580d3139b41aaa7380187372f22e35bd55b288496165c881ed154d5811245c52d56cc09d4916d4f2a50bcf5ae0a2637f4cfa6bf9daafc113dba8383b6dd7da6dd8db22d8510a8d3115983308909a1a0332517aa55e896e154249b30203010001") \ No newline at end of file Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/ring/tests/rsa_test_public_modulus.bin and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/ring/tests/rsa_test_public_modulus.bin differ diff -Nru temporalio-1.3.0/vendor/ring/tests/rsa_tests.rs temporalio-1.3.0/vendor/ring/tests/rsa_tests.rs --- temporalio-1.3.0/vendor/ring/tests/rsa_tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/rsa_tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,25 +12,23 @@ // OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -#[cfg(feature = "alloc")] +#![cfg(feature = "alloc")] + use ring::{ error, io::der, - rand, + rand, rsa, signature::{self, KeyPair}, test, test_file, }; -use std::convert::TryFrom; -#[cfg(all(target_arch = "wasm32", feature = "wasm32_c"))] -use wasm_bindgen_test::{wasm_bindgen_test, wasm_bindgen_test_configure}; +#[cfg(target_arch = "wasm32")] +use wasm_bindgen_test::{wasm_bindgen_test as test, wasm_bindgen_test_configure}; -#[cfg(all(target_arch = "wasm32", feature = "wasm32_c"))] +#[cfg(target_arch = "wasm32")] wasm_bindgen_test_configure!(run_in_browser); -#[cfg(feature = "alloc")] #[test] -#[cfg_attr(all(target_arch = "wasm32", feature = "wasm32_c"), wasm_bindgen_test)] fn rsa_from_pkcs8_test() { test::run( test_file!("rsa_from_pkcs8_tests.txt"), @@ -40,8 +38,8 @@ let input = test_case.consume_bytes("Input"); let error = test_case.consume_optional_string("Error"); - match (signature::RsaKeyPair::from_pkcs8(&input), error) { - (Ok(_), None) => (), + match (rsa::KeyPair::from_pkcs8(&input), error) { + (Ok(_), None) => {} (Err(e), None) => panic!("Failed with error \"{}\", but expected to succeed", e), (Ok(_), Some(e)) => panic!("Succeeded, but expected error \"{}\"", e), (Err(actual), Some(expected)) => assert_eq!(format!("{}", actual), expected), @@ -54,7 +52,6 @@ #[cfg(feature = "alloc")] #[test] -#[cfg_attr(all(target_arch = "wasm32", feature = "wasm32_c"), wasm_bindgen_test)] fn test_signature_rsa_pkcs1_sign() { let rng = rand::SystemRandom::new(); test::run( @@ -75,7 +72,7 @@ let expected = test_case.consume_bytes("Sig"); let result = test_case.consume_string("Result"); - let key_pair = signature::RsaKeyPair::from_der(&private_key); + let key_pair = rsa::KeyPair::from_der(&private_key); if result == "Fail-Invalid-Key" { assert!(key_pair.is_err()); return Ok(()); @@ -84,7 +81,7 @@ // XXX: This test is too slow on Android ARM Travis CI builds. // TODO: re-enable these tests on Android ARM. - let mut actual = vec![0u8; key_pair.public_modulus_len()]; + let mut actual = vec![0u8; key_pair.public().modulus_len()]; key_pair .sign(alg, &rng, &msg, actual.as_mut_slice()) .unwrap(); @@ -96,7 +93,6 @@ #[cfg(feature = "alloc")] #[test] -#[cfg_attr(all(target_arch = "wasm32", feature = "wasm32_c"), wasm_bindgen_test)] fn test_signature_rsa_pss_sign() { test::run( test_file!("rsa_pss_sign_tests.txt"), @@ -113,7 +109,7 @@ let result = test_case.consume_string("Result"); let private_key = test_case.consume_bytes("Key"); - let key_pair = signature::RsaKeyPair::from_der(&private_key); + let key_pair = rsa::KeyPair::from_der(&private_key); if key_pair.is_err() && result == "Fail-Invalid-Key" { return Ok(()); } @@ -124,7 +120,7 @@ let rng = test::rand::FixedSliceRandom { bytes: &salt }; - let mut actual = vec![0u8; key_pair.public_modulus_len()]; + let mut actual = vec![0u8; key_pair.public().modulus_len()]; key_pair.sign(alg, &rng, &msg, actual.as_mut_slice())?; assert_eq!(actual.as_slice() == &expected[..], result == "Pass"); Ok(()) @@ -132,9 +128,36 @@ ); } +// `KeyPair::sign` requires that the output buffer is the same length as +// the public key modulus. Test what happens when it isn't the same length. +#[test] +fn test_signature_rsa_pkcs1_sign_output_buffer_len() { + // Sign the message "hello, world", using PKCS#1 v1.5 padding and the + // SHA256 digest algorithm. + const MESSAGE: &[u8] = b"hello, world"; + let rng = rand::SystemRandom::new(); + + const PRIVATE_KEY_DER: &[u8] = + include_bytes!("../src/rsa/signature_rsa_example_private_key.der"); + let key_pair = rsa::KeyPair::from_der(PRIVATE_KEY_DER).unwrap(); + + // When the output buffer is not exactly the right length, `sign()` returns + // an error (and does not panic or invoke UB). if `sign` doesn't check that + // the length is correct at the beginning then there are various possible + // failure points when the output buffer is too small. + for len in 0..key_pair.public().modulus_len() + 1 { + let mut signature = vec![0; len]; + assert_eq!( + len == key_pair.public().modulus_len(), + key_pair + .sign(&signature::RSA_PKCS1_SHA256, &rng, MESSAGE, &mut signature) + .is_ok() + ); + } +} + #[cfg(feature = "alloc")] #[test] -#[cfg_attr(all(target_arch = "wasm32", feature = "wasm32_c"), wasm_bindgen_test)] fn test_signature_rsa_pkcs1_verify() { let sha1_params = &[ ( @@ -216,7 +239,6 @@ #[cfg(feature = "alloc")] #[test] -#[cfg_attr(all(target_arch = "wasm32", feature = "wasm32_c"), wasm_bindgen_test)] fn test_signature_rsa_pss_verify() { test::run( test_file!("rsa_pss_verify_tests.txt"), @@ -266,7 +288,6 @@ // and use them to verify a signature. #[cfg(feature = "alloc")] #[test] -#[cfg_attr(all(target_arch = "wasm32", feature = "wasm32_c"), wasm_bindgen_test)] fn test_signature_rsa_primitive_verification() { test::run( test_file!("rsa_primitive_verify_tests.txt"), @@ -287,33 +308,38 @@ #[cfg(feature = "alloc")] #[test] -#[cfg_attr(all(target_arch = "wasm32", feature = "wasm32_c"), wasm_bindgen_test)] -fn rsa_test_public_key_coverage() { +fn rsa_test_keypair_coverage() { const PRIVATE_KEY: &[u8] = include_bytes!("rsa_test_private_key_2048.p8"); - const PUBLIC_KEY: &[u8] = include_bytes!("rsa_test_public_key_2048.der"); - const PUBLIC_KEY_DEBUG: &str = include_str!("rsa_test_public_key_2048_debug.txt"); - let key_pair = signature::RsaKeyPair::from_pkcs8(PRIVATE_KEY).unwrap(); + let key_pair = rsa::KeyPair::from_pkcs8(PRIVATE_KEY).unwrap(); - // Test `AsRef<[u8]>` - assert_eq!(key_pair.public_key().as_ref(), PUBLIC_KEY); - - // Test `Clone`. - let _ = key_pair.public_key().clone(); - - // Test `exponent()`. - assert_eq!( - &[0x01, 0x00, 0x01], - key_pair - .public_key() - .exponent() - .big_endian_without_leading_zero() - ); + // Test that `signature::KeyPair::PublicKey` is `rsa::PublicKey`; if it + // were a separate type then it would need to be tested separately. + let _: &rsa::PublicKey = key_pair.public_key(); + + test_public_key_coverage(key_pair.public()); + // Test clones. + test_public_key_coverage(&key_pair.public().clone()); // Test `Debug` - assert_eq!(PUBLIC_KEY_DEBUG, format!("{:?}", key_pair.public_key())); assert_eq!( - format!("RsaKeyPair {{ public_key: {:?} }}", key_pair.public_key()), + format!("RsaKeyPair {{ public: {:?} }}", key_pair.public_key()), format!("{:?}", key_pair) ); } + +fn test_public_key_coverage(key: &rsa::PublicKey) { + // Test `AsRef<[u8]>` + const PUBLIC_KEY: &[u8] = include_bytes!("rsa_test_public_key_2048.der"); + assert_eq!(key.as_ref(), PUBLIC_KEY); + + // Test `Debug`. + const PUBLIC_KEY_DEBUG: &str = include_str!("rsa_test_public_key_2048_debug.txt"); + assert_eq!(PUBLIC_KEY_DEBUG, format!("{:?}", key)); + + let components = rsa::PublicKeyComponents::>::from(key); + const PUBLIC_KEY_MODULUS_BE_BYTES: &[u8] = include_bytes!("rsa_test_public_modulus.bin"); + assert_eq!(PUBLIC_KEY_MODULUS_BE_BYTES, &components.n); + const _65537: &[u8] = &[0x01, 0x00, 0x01]; + assert_eq!(_65537, &components.e); +} diff -Nru temporalio-1.3.0/vendor/ring/tests/signature_tests.rs temporalio-1.3.0/vendor/ring/tests/signature_tests.rs --- temporalio-1.3.0/vendor/ring/tests/signature_tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/tests/signature_tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,16 +1,26 @@ use ring::{signature, test}; #[cfg(target_arch = "wasm32")] -use wasm_bindgen_test::{wasm_bindgen_test, wasm_bindgen_test_configure}; +use wasm_bindgen_test::{wasm_bindgen_test as test, wasm_bindgen_test_configure}; #[cfg(target_arch = "wasm32")] wasm_bindgen_test_configure!(run_in_browser); #[test] -#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] fn signature_impl_test() { test::compile_time_assert_clone::(); test::compile_time_assert_copy::(); test::compile_time_assert_send::(); test::compile_time_assert_sync::(); + + let unparsed_public_key = + signature::UnparsedPublicKey::new(&signature::ED25519, &[0x01, 0x02, 0x03]); + + assert_eq!( + format!("{:?}", unparsed_public_key), + r#"UnparsedPublicKey { algorithm: ring::signature::ED25519, bytes: "010203" }"# + ); + + // Test `AsRef<[u8]>` + assert_eq!(unparsed_public_key.as_ref(), &[0x01, 0x02, 0x03]); } diff -Nru temporalio-1.3.0/vendor/ring/third_party/fiat/asm/fiat_curve25519_adx_mul.S temporalio-1.3.0/vendor/ring/third_party/fiat/asm/fiat_curve25519_adx_mul.S --- temporalio-1.3.0/vendor/ring/third_party/fiat/asm/fiat_curve25519_adx_mul.S 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/third_party/fiat/asm/fiat_curve25519_adx_mul.S 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,178 @@ +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && \ + (defined(__APPLE__) || defined(__ELF__)) + +.intel_syntax noprefix +.text +#if defined(__APPLE__) +.private_extern _fiat_curve25519_adx_mul +.global _fiat_curve25519_adx_mul +_fiat_curve25519_adx_mul: +#else +.type fiat_curve25519_adx_mul, @function +.hidden fiat_curve25519_adx_mul +.global fiat_curve25519_adx_mul +fiat_curve25519_adx_mul: +#endif + +.cfi_startproc +_CET_ENDBR +push rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset rbp, -16 +mov rbp, rsp + +mov rax, rdx +mov rdx, [ rsi + 0x18 ] +mulx r11, r10, [ rax + 0x8 ] +mov rdx, [ rax + 0x0 ] +mov [ rsp - 0x58 ], r15 +.cfi_offset r15, -16-0x58 +mulx r8, rcx, [ rsi + 0x18 ] +mov rdx, [ rsi + 0x8 ] +mov [ rsp - 0x80 ], rbx +.cfi_offset rbx, -16-0x80 +mulx rbx, r9, [ rax + 0x18 ] +mov rdx, [ rsi + 0x8 ] +mov [ rsp - 0x70 ], r12 +.cfi_offset r12, -16-0x70 +mulx r15, r12, [ rax + 0x8 ] +mov rdx, [ rsi + 0x0 ] +mov [ rsp - 0x68 ], r13 +.cfi_offset r13, -16-0x68 +mov [ rsp - 0x60 ], r14 +.cfi_offset r14, -16-0x60 +mulx r14, r13, [ rax + 0x0 ] +mov rdx, [ rax + 0x10 ] +mov [ rsp - 0x18 ], r15 +mov [ rsp - 0x50 ], rdi +mulx rdi, r15, [ rsi + 0x0 ] +mov rdx, [ rax + 0x18 ] +mov [ rsp - 0x48 ], r13 +mov [ rsp - 0x40 ], r9 +mulx r9, r13, [ rsi + 0x0 ] +test al, al +adox rcx, rdi +mov rdx, [ rsi + 0x10 ] +mov [ rsp - 0x38 ], r13 +mulx r13, rdi, [ rax + 0x8 ] +adox r10, r9 +mov rdx, 0x0 +adox rbx, rdx +adcx rdi, rcx +adcx r8, r10 +mov r9, rdx +adcx r9, rbx +mov rdx, [ rsi + 0x10 ] +mulx r10, rcx, [ rax + 0x0 ] +mov rdx, [ rsi + 0x0 ] +mov [ rsp - 0x30 ], r15 +mulx r15, rbx, [ rax + 0x8 ] +mov rdx, -0x2 +inc rdx +adox rcx, r15 +setc r15b +clc +adcx rcx, r12 +adox r10, rdi +mov rdx, [ rax + 0x10 ] +mov [ rsp - 0x78 ], rcx +mulx rcx, rdi, [ rsi + 0x10 ] +adox rdi, r8 +mov rdx, [ rax + 0x18 ] +mov [ rsp - 0x28 ], rcx +mulx rcx, r8, [ rsi + 0x10 ] +mov rdx, [ rax + 0x10 ] +mov [ rsp - 0x20 ], r8 +mulx r12, r8, [ rsi + 0x18 ] +adox r8, r9 +mov rdx, [ rsi + 0x8 ] +mov [ rsp - 0x10 ], r12 +mulx r12, r9, [ rax + 0x10 ] +movzx rdx, r15b +lea rdx, [ rdx + rcx ] +adcx r9, r10 +adcx r13, rdi +mov r15, 0x0 +mov r10, r15 +adox r10, rdx +mov rdx, [ rax + 0x18 ] +mulx rcx, rdi, [ rsi + 0x18 ] +adox rcx, r15 +adcx r11, r8 +mov rdx, r15 +adcx rdx, r10 +adcx rcx, r15 +mov r8, rdx +mov rdx, [ rax + 0x0 ] +mulx r15, r10, [ rsi + 0x8 ] +test al, al +adox r10, r14 +adcx rbx, r10 +adox r15, [ rsp - 0x78 ] +adcx r15, [ rsp - 0x30 ] +adox r9, [ rsp - 0x18 ] +adcx r9, [ rsp - 0x38 ] +adox r13, [ rsp - 0x40 ] +adcx r12, r13 +adox r11, [ rsp - 0x20 ] +adcx r11, [ rsp - 0x28 ] +mov rdx, 0x26 +mulx rsi, r14, r12 +adox rdi, r8 +adcx rdi, [ rsp - 0x10 ] +mulx r10, r8, r11 +mov r13, 0x0 +adox rcx, r13 +adcx rcx, r13 +mulx r11, r12, rdi +xor rdi, rdi +adox r8, rbx +adox r12, r15 +mulx rbx, r13, rcx +adcx r14, [ rsp - 0x48 ] +adox r13, r9 +adox rbx, rdi +adcx rsi, r8 +adcx r10, r12 +adcx r11, r13 +adc rbx, 0x0 +mulx r9, r15, rbx +xor r9, r9 +adox r15, r14 +mov rdi, r9 +adox rdi, rsi +mov rcx, r9 +adox rcx, r10 +mov r8, [ rsp - 0x50 ] +mov [ r8 + 0x8 ], rdi +mov r12, r9 +adox r12, r11 +mov r14, r9 +cmovo r14, rdx +mov [ r8 + 0x18 ], r12 +adcx r15, r14 +mov [ r8 + 0x0 ], r15 +mov [ r8 + 0x10 ], rcx +mov rbx, [ rsp - 0x80 ] +.cfi_restore rbx +mov r12, [ rsp - 0x70 ] +.cfi_restore r12 +mov r13, [ rsp - 0x68 ] +.cfi_restore r13 +mov r14, [ rsp - 0x60 ] +.cfi_restore r14 +mov r15, [ rsp - 0x58 ] +.cfi_restore r15 + +pop rbp +.cfi_restore rbp +.cfi_adjust_cfa_offset -8 +ret +.cfi_endproc +#if defined(__ELF__) +.size fiat_curve25519_adx_mul, .-fiat_curve25519_adx_mul +#endif + +#endif diff -Nru temporalio-1.3.0/vendor/ring/third_party/fiat/asm/fiat_curve25519_adx_square.S temporalio-1.3.0/vendor/ring/third_party/fiat/asm/fiat_curve25519_adx_square.S --- temporalio-1.3.0/vendor/ring/third_party/fiat/asm/fiat_curve25519_adx_square.S 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/third_party/fiat/asm/fiat_curve25519_adx_square.S 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,146 @@ +#include + +#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && \ + (defined(__APPLE__) || defined(__ELF__)) + +.intel_syntax noprefix +.text +#if defined(__APPLE__) +.private_extern _fiat_curve25519_adx_square +.global _fiat_curve25519_adx_square +_fiat_curve25519_adx_square: +#else +.type fiat_curve25519_adx_square, @function +.hidden fiat_curve25519_adx_square +.global fiat_curve25519_adx_square +fiat_curve25519_adx_square: +#endif + +.cfi_startproc +_CET_ENDBR +push rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset rbp, -16 +mov rbp, rsp + +mov rdx, [ rsi + 0x0 ] +mulx r10, rax, [ rsi + 0x8 ] +mov rdx, [ rsi + 0x0 ] +mulx rcx, r11, [ rsi + 0x10 ] +xor rdx, rdx +adox r11, r10 +mov rdx, [ rsi + 0x0 ] +mulx r9, r8, [ rsi + 0x18 ] +mov rdx, [ rsi + 0x8 ] +mov [ rsp - 0x80 ], rbx +.cfi_offset rbx, -16-0x80 +mulx rbx, r10, [ rsi + 0x18 ] +adox r8, rcx +mov [rsp - 0x48 ], rdi +adox r10, r9 +adcx rax, rax +mov rdx, [ rsi + 0x10 ] +mulx r9, rcx, [ rsi + 0x18 ] +adox rcx, rbx +mov rdx, [ rsi + 0x10 ] +mulx rdi, rbx, [ rsi + 0x8 ] +mov rdx, 0x0 +adox r9, rdx +mov [ rsp - 0x70 ], r12 +.cfi_offset r12, -16-0x70 +mov r12, -0x3 +inc r12 +adox rbx, r8 +adox rdi, r10 +adcx r11, r11 +mov r8, rdx +adox r8, rcx +mov r10, rdx +adox r10, r9 +adcx rbx, rbx +mov rdx, [ rsi + 0x0 ] +mulx r9, rcx, rdx +mov rdx, [ rsi + 0x8 ] +mov [ rsp - 0x68 ], r13 +.cfi_offset r13, -16-0x68 +mov [ rsp - 0x60 ], r14 +.cfi_offset r14, -16-0x60 +mulx r14, r13, rdx +seto dl +inc r12 +adox r9, rax +adox r13, r11 +adox r14, rbx +adcx rdi, rdi +mov al, dl +mov rdx, [ rsi + 0x10 ] +mulx rbx, r11, rdx +adox r11, rdi +adcx r8, r8 +adox rbx, r8 +adcx r10, r10 +movzx rdx, al +mov rdi, 0x0 +adcx rdx, rdi +movzx r8, al +lea r8, [ r8 + rdx ] +mov rdx, [ rsi + 0x18 ] +mulx rdi, rax, rdx +adox rax, r10 +mov rdx, 0x26 +mov [ rsp - 0x58 ], r15 +.cfi_offset r15, -16-0x58 +mulx r15, r10, r11 +clc +adcx r10, rcx +mulx r11, rcx, rbx +adox r8, rdi +mulx rdi, rbx, r8 +inc r12 +adox rcx, r9 +mulx r8, r9, rax +adcx r15, rcx +adox r9, r13 +adcx r11, r9 +adox rbx, r14 +adox rdi, r12 +adcx r8, rbx +adc rdi, 0x0 +mulx r14, r13, rdi +test al, al +mov rdi, [ rsp - 0x48 ] +adox r13, r10 +mov r14, r12 +adox r14, r15 +mov [ rdi + 0x8 ], r14 +mov rax, r12 +adox rax, r11 +mov r10, r12 +adox r10, r8 +mov [ rdi + 0x10 ], rax +mov rcx, r12 +cmovo rcx, rdx +adcx r13, rcx +mov [ rdi + 0x0 ], r13 +mov [ rdi + 0x18 ], r10 +mov rbx, [ rsp - 0x80 ] +.cfi_restore rbx +mov r12, [ rsp - 0x70 ] +.cfi_restore r12 +mov r13, [ rsp - 0x68 ] +.cfi_restore r13 +mov r14, [ rsp - 0x60 ] +.cfi_restore r14 +mov r15, [ rsp - 0x58 ] +.cfi_restore r15 + +pop rbp +.cfi_restore rbp +.cfi_adjust_cfa_offset -8 +ret +.cfi_endproc +#if defined(__ELF__) +.size fiat_curve25519_adx_square, .-fiat_curve25519_adx_square +#endif + +#endif diff -Nru temporalio-1.3.0/vendor/ring/third_party/fiat/curve25519_32.h temporalio-1.3.0/vendor/ring/third_party/fiat/curve25519_32.h --- temporalio-1.3.0/vendor/ring/third_party/fiat/curve25519_32.h 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/third_party/fiat/curve25519_32.h 2023-10-30 19:40:00.000000000 +0000 @@ -1,24 +1,51 @@ -/* Autogenerated: src/ExtractionOCaml/unsaturated_solinas --static 25519 10 '2^255 - 19' 32 carry_mul carry_square carry add sub opp selectznz to_bytes from_bytes carry_scmul121666 */ +/* Autogenerated: 'src/ExtractionOCaml/unsaturated_solinas' --inline --static --use-value-barrier 25519 32 '(auto)' '2^255 - 19' carry_mul carry_square carry add sub opp selectznz to_bytes from_bytes relax carry_scmul121666 */ /* curve description: 25519 */ -/* requested operations: carry_mul, carry_square, carry, add, sub, opp, selectznz, to_bytes, from_bytes, carry_scmul121666 */ -/* n = 10 (from "10") */ -/* s-c = 2^255 - [(1, 19)] (from "2^255 - 19") */ /* machine_wordsize = 32 (from "32") */ - +/* requested operations: carry_mul, carry_square, carry, add, sub, opp, selectznz, to_bytes, from_bytes, relax, carry_scmul121666 */ +/* n = 10 (from "(auto)") */ +/* s-c = 2^255 - [(1, 19)] (from "2^255 - 19") */ +/* tight_bounds_multiplier = 1 (from "") */ +/* */ /* Computed values: */ -/* carry_chain = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1] */ +/* carry_chain = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1] */ +/* eval z = z[0] + (z[1] << 26) + (z[2] << 51) + (z[3] << 77) + (z[4] << 102) + (z[5] << 128) + (z[6] << 153) + (z[7] << 179) + (z[8] << 204) + (z[9] << 230) */ +/* bytes_eval z = z[0] + (z[1] << 8) + (z[2] << 16) + (z[3] << 24) + (z[4] << 32) + (z[5] << 40) + (z[6] << 48) + (z[7] << 56) + (z[8] << 64) + (z[9] << 72) + (z[10] << 80) + (z[11] << 88) + (z[12] << 96) + (z[13] << 104) + (z[14] << 112) + (z[15] << 120) + (z[16] << 128) + (z[17] << 136) + (z[18] << 144) + (z[19] << 152) + (z[20] << 160) + (z[21] << 168) + (z[22] << 176) + (z[23] << 184) + (z[24] << 192) + (z[25] << 200) + (z[26] << 208) + (z[27] << 216) + (z[28] << 224) + (z[29] << 232) + (z[30] << 240) + (z[31] << 248) */ +/* balance = [0x7ffffda, 0x3fffffe, 0x7fffffe, 0x3fffffe, 0x7fffffe, 0x3fffffe, 0x7fffffe, 0x3fffffe, 0x7fffffe, 0x3fffffe] */ #include typedef unsigned char fiat_25519_uint1; typedef signed char fiat_25519_int1; +#if defined(__GNUC__) || defined(__clang__) +# define FIAT_25519_FIAT_INLINE __inline__ +#else +# define FIAT_25519_FIAT_INLINE +#endif + +/* The type fiat_25519_loose_field_element is a field element with loose bounds. */ +/* Bounds: [[0x0 ~> 0xc000000], [0x0 ~> 0x6000000], [0x0 ~> 0xc000000], [0x0 ~> 0x6000000], [0x0 ~> 0xc000000], [0x0 ~> 0x6000000], [0x0 ~> 0xc000000], [0x0 ~> 0x6000000], [0x0 ~> 0xc000000], [0x0 ~> 0x6000000]] */ +typedef uint32_t fiat_25519_loose_field_element[10]; + +/* The type fiat_25519_tight_field_element is a field element with tight bounds. */ +/* Bounds: [[0x0 ~> 0x4000000], [0x0 ~> 0x2000000], [0x0 ~> 0x4000000], [0x0 ~> 0x2000000], [0x0 ~> 0x4000000], [0x0 ~> 0x2000000], [0x0 ~> 0x4000000], [0x0 ~> 0x2000000], [0x0 ~> 0x4000000], [0x0 ~> 0x2000000]] */ +typedef uint32_t fiat_25519_tight_field_element[10]; #if (-1 & 3) != 3 #error "This code only works on a two's complement system" #endif +#if !defined(FIAT_25519_NO_ASM) && (defined(__GNUC__) || defined(__clang__)) +static __inline__ uint32_t fiat_25519_value_barrier_u32(uint32_t a) { + __asm__("" : "+r"(a) : /* no inputs */); + return a; +} +#else +# define fiat_25519_value_barrier_u32(x) (x) +#endif + /* * The function fiat_25519_addcarryx_u26 is an addition with carry. + * * Postconditions: * out1 = (arg1 + arg2 + arg3) mod 2^26 * out2 = ⌊(arg1 + arg2 + arg3) / 2^26⌋ @@ -31,16 +58,20 @@ * out1: [0x0 ~> 0x3ffffff] * out2: [0x0 ~> 0x1] */ -static void fiat_25519_addcarryx_u26(uint32_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint32_t arg2, uint32_t arg3) { - uint32_t x1 = ((arg1 + arg2) + arg3); - uint32_t x2 = (x1 & UINT32_C(0x3ffffff)); - fiat_25519_uint1 x3 = (fiat_25519_uint1)(x1 >> 26); +static FIAT_25519_FIAT_INLINE void fiat_25519_addcarryx_u26(uint32_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint32_t arg2, uint32_t arg3) { + uint32_t x1; + uint32_t x2; + fiat_25519_uint1 x3; + x1 = ((arg1 + arg2) + arg3); + x2 = (x1 & UINT32_C(0x3ffffff)); + x3 = (fiat_25519_uint1)(x1 >> 26); *out1 = x2; *out2 = x3; } /* * The function fiat_25519_subborrowx_u26 is a subtraction with borrow. + * * Postconditions: * out1 = (-arg1 + arg2 + -arg3) mod 2^26 * out2 = -⌊(-arg1 + arg2 + -arg3) / 2^26⌋ @@ -53,16 +84,20 @@ * out1: [0x0 ~> 0x3ffffff] * out2: [0x0 ~> 0x1] */ -static void fiat_25519_subborrowx_u26(uint32_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint32_t arg2, uint32_t arg3) { - int32_t x1 = ((int32_t)(arg2 - arg1) - (int32_t)arg3); - fiat_25519_int1 x2 = (fiat_25519_int1)(x1 >> 26); - uint32_t x3 = (x1 & UINT32_C(0x3ffffff)); +static FIAT_25519_FIAT_INLINE void fiat_25519_subborrowx_u26(uint32_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint32_t arg2, uint32_t arg3) { + int32_t x1; + fiat_25519_int1 x2; + uint32_t x3; + x1 = ((int32_t)(arg2 - arg1) - (int32_t)arg3); + x2 = (fiat_25519_int1)(x1 >> 26); + x3 = (x1 & UINT32_C(0x3ffffff)); *out1 = x3; *out2 = (fiat_25519_uint1)(0x0 - x2); } /* * The function fiat_25519_addcarryx_u25 is an addition with carry. + * * Postconditions: * out1 = (arg1 + arg2 + arg3) mod 2^25 * out2 = ⌊(arg1 + arg2 + arg3) / 2^25⌋ @@ -75,16 +110,20 @@ * out1: [0x0 ~> 0x1ffffff] * out2: [0x0 ~> 0x1] */ -static void fiat_25519_addcarryx_u25(uint32_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint32_t arg2, uint32_t arg3) { - uint32_t x1 = ((arg1 + arg2) + arg3); - uint32_t x2 = (x1 & UINT32_C(0x1ffffff)); - fiat_25519_uint1 x3 = (fiat_25519_uint1)(x1 >> 25); +static FIAT_25519_FIAT_INLINE void fiat_25519_addcarryx_u25(uint32_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint32_t arg2, uint32_t arg3) { + uint32_t x1; + uint32_t x2; + fiat_25519_uint1 x3; + x1 = ((arg1 + arg2) + arg3); + x2 = (x1 & UINT32_C(0x1ffffff)); + x3 = (fiat_25519_uint1)(x1 >> 25); *out1 = x2; *out2 = x3; } /* * The function fiat_25519_subborrowx_u25 is a subtraction with borrow. + * * Postconditions: * out1 = (-arg1 + arg2 + -arg3) mod 2^25 * out2 = -⌊(-arg1 + arg2 + -arg3) / 2^25⌋ @@ -97,16 +136,20 @@ * out1: [0x0 ~> 0x1ffffff] * out2: [0x0 ~> 0x1] */ -static void fiat_25519_subborrowx_u25(uint32_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint32_t arg2, uint32_t arg3) { - int32_t x1 = ((int32_t)(arg2 - arg1) - (int32_t)arg3); - fiat_25519_int1 x2 = (fiat_25519_int1)(x1 >> 25); - uint32_t x3 = (x1 & UINT32_C(0x1ffffff)); +static FIAT_25519_FIAT_INLINE void fiat_25519_subborrowx_u25(uint32_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint32_t arg2, uint32_t arg3) { + int32_t x1; + fiat_25519_int1 x2; + uint32_t x3; + x1 = ((int32_t)(arg2 - arg1) - (int32_t)arg3); + x2 = (fiat_25519_int1)(x1 >> 25); + x3 = (x1 & UINT32_C(0x1ffffff)); *out1 = x3; *out2 = (fiat_25519_uint1)(0x0 - x2); } /* * The function fiat_25519_cmovznz_u32 is a single-word conditional move. + * * Postconditions: * out1 = (if arg1 = 0 then arg2 else arg3) * @@ -117,178 +160,318 @@ * Output Bounds: * out1: [0x0 ~> 0xffffffff] */ -static void fiat_25519_cmovznz_u32(uint32_t* out1, fiat_25519_uint1 arg1, uint32_t arg2, uint32_t arg3) { - fiat_25519_uint1 x1 = (!(!arg1)); - uint32_t x2 = ((fiat_25519_int1)(0x0 - x1) & UINT32_C(0xffffffff)); - // Note this line has been patched from the synthesized code to add value - // barriers. - // - // Clang recognizes this pattern as a select. While it usually transforms it - // to a cmov, it sometimes further transforms it into a branch, which we do - // not want. - uint32_t x3 = ((value_barrier_u32(x2) & arg3) | (value_barrier_u32(~x2) & arg2)); +static FIAT_25519_FIAT_INLINE void fiat_25519_cmovznz_u32(uint32_t* out1, fiat_25519_uint1 arg1, uint32_t arg2, uint32_t arg3) { + fiat_25519_uint1 x1; + uint32_t x2; + uint32_t x3; + x1 = (!(!arg1)); + x2 = ((fiat_25519_int1)(0x0 - x1) & UINT32_C(0xffffffff)); + x3 = ((fiat_25519_value_barrier_u32(x2) & arg3) | (fiat_25519_value_barrier_u32((~x2)) & arg2)); *out1 = x3; } /* * The function fiat_25519_carry_mul multiplies two field elements and reduces the result. + * * Postconditions: * eval out1 mod m = (eval arg1 * eval arg2) mod m * - * Input Bounds: - * arg1: [[0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999]] - * arg2: [[0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999]] - * Output Bounds: - * out1: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]] */ -static void fiat_25519_carry_mul(uint32_t out1[10], const uint32_t arg1[10], const uint32_t arg2[10]) { - uint64_t x1 = ((uint64_t)(arg1[9]) * ((arg2[9]) * UINT8_C(0x26))); - uint64_t x2 = ((uint64_t)(arg1[9]) * ((arg2[8]) * UINT8_C(0x13))); - uint64_t x3 = ((uint64_t)(arg1[9]) * ((arg2[7]) * UINT8_C(0x26))); - uint64_t x4 = ((uint64_t)(arg1[9]) * ((arg2[6]) * UINT8_C(0x13))); - uint64_t x5 = ((uint64_t)(arg1[9]) * ((arg2[5]) * UINT8_C(0x26))); - uint64_t x6 = ((uint64_t)(arg1[9]) * ((arg2[4]) * UINT8_C(0x13))); - uint64_t x7 = ((uint64_t)(arg1[9]) * ((arg2[3]) * UINT8_C(0x26))); - uint64_t x8 = ((uint64_t)(arg1[9]) * ((arg2[2]) * UINT8_C(0x13))); - uint64_t x9 = ((uint64_t)(arg1[9]) * ((arg2[1]) * UINT8_C(0x26))); - uint64_t x10 = ((uint64_t)(arg1[8]) * ((arg2[9]) * UINT8_C(0x13))); - uint64_t x11 = ((uint64_t)(arg1[8]) * ((arg2[8]) * UINT8_C(0x13))); - uint64_t x12 = ((uint64_t)(arg1[8]) * ((arg2[7]) * UINT8_C(0x13))); - uint64_t x13 = ((uint64_t)(arg1[8]) * ((arg2[6]) * UINT8_C(0x13))); - uint64_t x14 = ((uint64_t)(arg1[8]) * ((arg2[5]) * UINT8_C(0x13))); - uint64_t x15 = ((uint64_t)(arg1[8]) * ((arg2[4]) * UINT8_C(0x13))); - uint64_t x16 = ((uint64_t)(arg1[8]) * ((arg2[3]) * UINT8_C(0x13))); - uint64_t x17 = ((uint64_t)(arg1[8]) * ((arg2[2]) * UINT8_C(0x13))); - uint64_t x18 = ((uint64_t)(arg1[7]) * ((arg2[9]) * UINT8_C(0x26))); - uint64_t x19 = ((uint64_t)(arg1[7]) * ((arg2[8]) * UINT8_C(0x13))); - uint64_t x20 = ((uint64_t)(arg1[7]) * ((arg2[7]) * UINT8_C(0x26))); - uint64_t x21 = ((uint64_t)(arg1[7]) * ((arg2[6]) * UINT8_C(0x13))); - uint64_t x22 = ((uint64_t)(arg1[7]) * ((arg2[5]) * UINT8_C(0x26))); - uint64_t x23 = ((uint64_t)(arg1[7]) * ((arg2[4]) * UINT8_C(0x13))); - uint64_t x24 = ((uint64_t)(arg1[7]) * ((arg2[3]) * UINT8_C(0x26))); - uint64_t x25 = ((uint64_t)(arg1[6]) * ((arg2[9]) * UINT8_C(0x13))); - uint64_t x26 = ((uint64_t)(arg1[6]) * ((arg2[8]) * UINT8_C(0x13))); - uint64_t x27 = ((uint64_t)(arg1[6]) * ((arg2[7]) * UINT8_C(0x13))); - uint64_t x28 = ((uint64_t)(arg1[6]) * ((arg2[6]) * UINT8_C(0x13))); - uint64_t x29 = ((uint64_t)(arg1[6]) * ((arg2[5]) * UINT8_C(0x13))); - uint64_t x30 = ((uint64_t)(arg1[6]) * ((arg2[4]) * UINT8_C(0x13))); - uint64_t x31 = ((uint64_t)(arg1[5]) * ((arg2[9]) * UINT8_C(0x26))); - uint64_t x32 = ((uint64_t)(arg1[5]) * ((arg2[8]) * UINT8_C(0x13))); - uint64_t x33 = ((uint64_t)(arg1[5]) * ((arg2[7]) * UINT8_C(0x26))); - uint64_t x34 = ((uint64_t)(arg1[5]) * ((arg2[6]) * UINT8_C(0x13))); - uint64_t x35 = ((uint64_t)(arg1[5]) * ((arg2[5]) * UINT8_C(0x26))); - uint64_t x36 = ((uint64_t)(arg1[4]) * ((arg2[9]) * UINT8_C(0x13))); - uint64_t x37 = ((uint64_t)(arg1[4]) * ((arg2[8]) * UINT8_C(0x13))); - uint64_t x38 = ((uint64_t)(arg1[4]) * ((arg2[7]) * UINT8_C(0x13))); - uint64_t x39 = ((uint64_t)(arg1[4]) * ((arg2[6]) * UINT8_C(0x13))); - uint64_t x40 = ((uint64_t)(arg1[3]) * ((arg2[9]) * UINT8_C(0x26))); - uint64_t x41 = ((uint64_t)(arg1[3]) * ((arg2[8]) * UINT8_C(0x13))); - uint64_t x42 = ((uint64_t)(arg1[3]) * ((arg2[7]) * UINT8_C(0x26))); - uint64_t x43 = ((uint64_t)(arg1[2]) * ((arg2[9]) * UINT8_C(0x13))); - uint64_t x44 = ((uint64_t)(arg1[2]) * ((arg2[8]) * UINT8_C(0x13))); - uint64_t x45 = ((uint64_t)(arg1[1]) * ((arg2[9]) * UINT8_C(0x26))); - uint64_t x46 = ((uint64_t)(arg1[9]) * (arg2[0])); - uint64_t x47 = ((uint64_t)(arg1[8]) * (arg2[1])); - uint64_t x48 = ((uint64_t)(arg1[8]) * (arg2[0])); - uint64_t x49 = ((uint64_t)(arg1[7]) * (arg2[2])); - uint64_t x50 = ((uint64_t)(arg1[7]) * ((arg2[1]) * 0x2)); - uint64_t x51 = ((uint64_t)(arg1[7]) * (arg2[0])); - uint64_t x52 = ((uint64_t)(arg1[6]) * (arg2[3])); - uint64_t x53 = ((uint64_t)(arg1[6]) * (arg2[2])); - uint64_t x54 = ((uint64_t)(arg1[6]) * (arg2[1])); - uint64_t x55 = ((uint64_t)(arg1[6]) * (arg2[0])); - uint64_t x56 = ((uint64_t)(arg1[5]) * (arg2[4])); - uint64_t x57 = ((uint64_t)(arg1[5]) * ((arg2[3]) * 0x2)); - uint64_t x58 = ((uint64_t)(arg1[5]) * (arg2[2])); - uint64_t x59 = ((uint64_t)(arg1[5]) * ((arg2[1]) * 0x2)); - uint64_t x60 = ((uint64_t)(arg1[5]) * (arg2[0])); - uint64_t x61 = ((uint64_t)(arg1[4]) * (arg2[5])); - uint64_t x62 = ((uint64_t)(arg1[4]) * (arg2[4])); - uint64_t x63 = ((uint64_t)(arg1[4]) * (arg2[3])); - uint64_t x64 = ((uint64_t)(arg1[4]) * (arg2[2])); - uint64_t x65 = ((uint64_t)(arg1[4]) * (arg2[1])); - uint64_t x66 = ((uint64_t)(arg1[4]) * (arg2[0])); - uint64_t x67 = ((uint64_t)(arg1[3]) * (arg2[6])); - uint64_t x68 = ((uint64_t)(arg1[3]) * ((arg2[5]) * 0x2)); - uint64_t x69 = ((uint64_t)(arg1[3]) * (arg2[4])); - uint64_t x70 = ((uint64_t)(arg1[3]) * ((arg2[3]) * 0x2)); - uint64_t x71 = ((uint64_t)(arg1[3]) * (arg2[2])); - uint64_t x72 = ((uint64_t)(arg1[3]) * ((arg2[1]) * 0x2)); - uint64_t x73 = ((uint64_t)(arg1[3]) * (arg2[0])); - uint64_t x74 = ((uint64_t)(arg1[2]) * (arg2[7])); - uint64_t x75 = ((uint64_t)(arg1[2]) * (arg2[6])); - uint64_t x76 = ((uint64_t)(arg1[2]) * (arg2[5])); - uint64_t x77 = ((uint64_t)(arg1[2]) * (arg2[4])); - uint64_t x78 = ((uint64_t)(arg1[2]) * (arg2[3])); - uint64_t x79 = ((uint64_t)(arg1[2]) * (arg2[2])); - uint64_t x80 = ((uint64_t)(arg1[2]) * (arg2[1])); - uint64_t x81 = ((uint64_t)(arg1[2]) * (arg2[0])); - uint64_t x82 = ((uint64_t)(arg1[1]) * (arg2[8])); - uint64_t x83 = ((uint64_t)(arg1[1]) * ((arg2[7]) * 0x2)); - uint64_t x84 = ((uint64_t)(arg1[1]) * (arg2[6])); - uint64_t x85 = ((uint64_t)(arg1[1]) * ((arg2[5]) * 0x2)); - uint64_t x86 = ((uint64_t)(arg1[1]) * (arg2[4])); - uint64_t x87 = ((uint64_t)(arg1[1]) * ((arg2[3]) * 0x2)); - uint64_t x88 = ((uint64_t)(arg1[1]) * (arg2[2])); - uint64_t x89 = ((uint64_t)(arg1[1]) * ((arg2[1]) * 0x2)); - uint64_t x90 = ((uint64_t)(arg1[1]) * (arg2[0])); - uint64_t x91 = ((uint64_t)(arg1[0]) * (arg2[9])); - uint64_t x92 = ((uint64_t)(arg1[0]) * (arg2[8])); - uint64_t x93 = ((uint64_t)(arg1[0]) * (arg2[7])); - uint64_t x94 = ((uint64_t)(arg1[0]) * (arg2[6])); - uint64_t x95 = ((uint64_t)(arg1[0]) * (arg2[5])); - uint64_t x96 = ((uint64_t)(arg1[0]) * (arg2[4])); - uint64_t x97 = ((uint64_t)(arg1[0]) * (arg2[3])); - uint64_t x98 = ((uint64_t)(arg1[0]) * (arg2[2])); - uint64_t x99 = ((uint64_t)(arg1[0]) * (arg2[1])); - uint64_t x100 = ((uint64_t)(arg1[0]) * (arg2[0])); - uint64_t x101 = (x100 + (x45 + (x44 + (x42 + (x39 + (x35 + (x30 + (x24 + (x17 + x9))))))))); - uint64_t x102 = (x101 >> 26); - uint32_t x103 = (uint32_t)(x101 & UINT32_C(0x3ffffff)); - uint64_t x104 = (x91 + (x82 + (x74 + (x67 + (x61 + (x56 + (x52 + (x49 + (x47 + x46))))))))); - uint64_t x105 = (x92 + (x83 + (x75 + (x68 + (x62 + (x57 + (x53 + (x50 + (x48 + x1))))))))); - uint64_t x106 = (x93 + (x84 + (x76 + (x69 + (x63 + (x58 + (x54 + (x51 + (x10 + x2))))))))); - uint64_t x107 = (x94 + (x85 + (x77 + (x70 + (x64 + (x59 + (x55 + (x18 + (x11 + x3))))))))); - uint64_t x108 = (x95 + (x86 + (x78 + (x71 + (x65 + (x60 + (x25 + (x19 + (x12 + x4))))))))); - uint64_t x109 = (x96 + (x87 + (x79 + (x72 + (x66 + (x31 + (x26 + (x20 + (x13 + x5))))))))); - uint64_t x110 = (x97 + (x88 + (x80 + (x73 + (x36 + (x32 + (x27 + (x21 + (x14 + x6))))))))); - uint64_t x111 = (x98 + (x89 + (x81 + (x40 + (x37 + (x33 + (x28 + (x22 + (x15 + x7))))))))); - uint64_t x112 = (x99 + (x90 + (x43 + (x41 + (x38 + (x34 + (x29 + (x23 + (x16 + x8))))))))); - uint64_t x113 = (x102 + x112); - uint64_t x114 = (x113 >> 25); - uint32_t x115 = (uint32_t)(x113 & UINT32_C(0x1ffffff)); - uint64_t x116 = (x114 + x111); - uint64_t x117 = (x116 >> 26); - uint32_t x118 = (uint32_t)(x116 & UINT32_C(0x3ffffff)); - uint64_t x119 = (x117 + x110); - uint64_t x120 = (x119 >> 25); - uint32_t x121 = (uint32_t)(x119 & UINT32_C(0x1ffffff)); - uint64_t x122 = (x120 + x109); - uint64_t x123 = (x122 >> 26); - uint32_t x124 = (uint32_t)(x122 & UINT32_C(0x3ffffff)); - uint64_t x125 = (x123 + x108); - uint64_t x126 = (x125 >> 25); - uint32_t x127 = (uint32_t)(x125 & UINT32_C(0x1ffffff)); - uint64_t x128 = (x126 + x107); - uint64_t x129 = (x128 >> 26); - uint32_t x130 = (uint32_t)(x128 & UINT32_C(0x3ffffff)); - uint64_t x131 = (x129 + x106); - uint64_t x132 = (x131 >> 25); - uint32_t x133 = (uint32_t)(x131 & UINT32_C(0x1ffffff)); - uint64_t x134 = (x132 + x105); - uint64_t x135 = (x134 >> 26); - uint32_t x136 = (uint32_t)(x134 & UINT32_C(0x3ffffff)); - uint64_t x137 = (x135 + x104); - uint64_t x138 = (x137 >> 25); - uint32_t x139 = (uint32_t)(x137 & UINT32_C(0x1ffffff)); - uint64_t x140 = (x138 * UINT8_C(0x13)); - uint64_t x141 = (x103 + x140); - uint32_t x142 = (uint32_t)(x141 >> 26); - uint32_t x143 = (uint32_t)(x141 & UINT32_C(0x3ffffff)); - uint32_t x144 = (x142 + x115); - fiat_25519_uint1 x145 = (fiat_25519_uint1)(x144 >> 25); - uint32_t x146 = (x144 & UINT32_C(0x1ffffff)); - uint32_t x147 = (x145 + x118); +static FIAT_25519_FIAT_INLINE void fiat_25519_carry_mul(fiat_25519_tight_field_element out1, const fiat_25519_loose_field_element arg1, const fiat_25519_loose_field_element arg2) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + uint64_t x9; + uint64_t x10; + uint64_t x11; + uint64_t x12; + uint64_t x13; + uint64_t x14; + uint64_t x15; + uint64_t x16; + uint64_t x17; + uint64_t x18; + uint64_t x19; + uint64_t x20; + uint64_t x21; + uint64_t x22; + uint64_t x23; + uint64_t x24; + uint64_t x25; + uint64_t x26; + uint64_t x27; + uint64_t x28; + uint64_t x29; + uint64_t x30; + uint64_t x31; + uint64_t x32; + uint64_t x33; + uint64_t x34; + uint64_t x35; + uint64_t x36; + uint64_t x37; + uint64_t x38; + uint64_t x39; + uint64_t x40; + uint64_t x41; + uint64_t x42; + uint64_t x43; + uint64_t x44; + uint64_t x45; + uint64_t x46; + uint64_t x47; + uint64_t x48; + uint64_t x49; + uint64_t x50; + uint64_t x51; + uint64_t x52; + uint64_t x53; + uint64_t x54; + uint64_t x55; + uint64_t x56; + uint64_t x57; + uint64_t x58; + uint64_t x59; + uint64_t x60; + uint64_t x61; + uint64_t x62; + uint64_t x63; + uint64_t x64; + uint64_t x65; + uint64_t x66; + uint64_t x67; + uint64_t x68; + uint64_t x69; + uint64_t x70; + uint64_t x71; + uint64_t x72; + uint64_t x73; + uint64_t x74; + uint64_t x75; + uint64_t x76; + uint64_t x77; + uint64_t x78; + uint64_t x79; + uint64_t x80; + uint64_t x81; + uint64_t x82; + uint64_t x83; + uint64_t x84; + uint64_t x85; + uint64_t x86; + uint64_t x87; + uint64_t x88; + uint64_t x89; + uint64_t x90; + uint64_t x91; + uint64_t x92; + uint64_t x93; + uint64_t x94; + uint64_t x95; + uint64_t x96; + uint64_t x97; + uint64_t x98; + uint64_t x99; + uint64_t x100; + uint64_t x101; + uint64_t x102; + uint32_t x103; + uint64_t x104; + uint64_t x105; + uint64_t x106; + uint64_t x107; + uint64_t x108; + uint64_t x109; + uint64_t x110; + uint64_t x111; + uint64_t x112; + uint64_t x113; + uint64_t x114; + uint32_t x115; + uint64_t x116; + uint64_t x117; + uint32_t x118; + uint64_t x119; + uint64_t x120; + uint32_t x121; + uint64_t x122; + uint64_t x123; + uint32_t x124; + uint64_t x125; + uint64_t x126; + uint32_t x127; + uint64_t x128; + uint64_t x129; + uint32_t x130; + uint64_t x131; + uint64_t x132; + uint32_t x133; + uint64_t x134; + uint64_t x135; + uint32_t x136; + uint64_t x137; + uint64_t x138; + uint32_t x139; + uint64_t x140; + uint64_t x141; + uint32_t x142; + uint32_t x143; + uint32_t x144; + fiat_25519_uint1 x145; + uint32_t x146; + uint32_t x147; + x1 = ((uint64_t)(arg1[9]) * ((arg2[9]) * UINT8_C(0x26))); + x2 = ((uint64_t)(arg1[9]) * ((arg2[8]) * UINT8_C(0x13))); + x3 = ((uint64_t)(arg1[9]) * ((arg2[7]) * UINT8_C(0x26))); + x4 = ((uint64_t)(arg1[9]) * ((arg2[6]) * UINT8_C(0x13))); + x5 = ((uint64_t)(arg1[9]) * ((arg2[5]) * UINT8_C(0x26))); + x6 = ((uint64_t)(arg1[9]) * ((arg2[4]) * UINT8_C(0x13))); + x7 = ((uint64_t)(arg1[9]) * ((arg2[3]) * UINT8_C(0x26))); + x8 = ((uint64_t)(arg1[9]) * ((arg2[2]) * UINT8_C(0x13))); + x9 = ((uint64_t)(arg1[9]) * ((arg2[1]) * UINT8_C(0x26))); + x10 = ((uint64_t)(arg1[8]) * ((arg2[9]) * UINT8_C(0x13))); + x11 = ((uint64_t)(arg1[8]) * ((arg2[8]) * UINT8_C(0x13))); + x12 = ((uint64_t)(arg1[8]) * ((arg2[7]) * UINT8_C(0x13))); + x13 = ((uint64_t)(arg1[8]) * ((arg2[6]) * UINT8_C(0x13))); + x14 = ((uint64_t)(arg1[8]) * ((arg2[5]) * UINT8_C(0x13))); + x15 = ((uint64_t)(arg1[8]) * ((arg2[4]) * UINT8_C(0x13))); + x16 = ((uint64_t)(arg1[8]) * ((arg2[3]) * UINT8_C(0x13))); + x17 = ((uint64_t)(arg1[8]) * ((arg2[2]) * UINT8_C(0x13))); + x18 = ((uint64_t)(arg1[7]) * ((arg2[9]) * UINT8_C(0x26))); + x19 = ((uint64_t)(arg1[7]) * ((arg2[8]) * UINT8_C(0x13))); + x20 = ((uint64_t)(arg1[7]) * ((arg2[7]) * UINT8_C(0x26))); + x21 = ((uint64_t)(arg1[7]) * ((arg2[6]) * UINT8_C(0x13))); + x22 = ((uint64_t)(arg1[7]) * ((arg2[5]) * UINT8_C(0x26))); + x23 = ((uint64_t)(arg1[7]) * ((arg2[4]) * UINT8_C(0x13))); + x24 = ((uint64_t)(arg1[7]) * ((arg2[3]) * UINT8_C(0x26))); + x25 = ((uint64_t)(arg1[6]) * ((arg2[9]) * UINT8_C(0x13))); + x26 = ((uint64_t)(arg1[6]) * ((arg2[8]) * UINT8_C(0x13))); + x27 = ((uint64_t)(arg1[6]) * ((arg2[7]) * UINT8_C(0x13))); + x28 = ((uint64_t)(arg1[6]) * ((arg2[6]) * UINT8_C(0x13))); + x29 = ((uint64_t)(arg1[6]) * ((arg2[5]) * UINT8_C(0x13))); + x30 = ((uint64_t)(arg1[6]) * ((arg2[4]) * UINT8_C(0x13))); + x31 = ((uint64_t)(arg1[5]) * ((arg2[9]) * UINT8_C(0x26))); + x32 = ((uint64_t)(arg1[5]) * ((arg2[8]) * UINT8_C(0x13))); + x33 = ((uint64_t)(arg1[5]) * ((arg2[7]) * UINT8_C(0x26))); + x34 = ((uint64_t)(arg1[5]) * ((arg2[6]) * UINT8_C(0x13))); + x35 = ((uint64_t)(arg1[5]) * ((arg2[5]) * UINT8_C(0x26))); + x36 = ((uint64_t)(arg1[4]) * ((arg2[9]) * UINT8_C(0x13))); + x37 = ((uint64_t)(arg1[4]) * ((arg2[8]) * UINT8_C(0x13))); + x38 = ((uint64_t)(arg1[4]) * ((arg2[7]) * UINT8_C(0x13))); + x39 = ((uint64_t)(arg1[4]) * ((arg2[6]) * UINT8_C(0x13))); + x40 = ((uint64_t)(arg1[3]) * ((arg2[9]) * UINT8_C(0x26))); + x41 = ((uint64_t)(arg1[3]) * ((arg2[8]) * UINT8_C(0x13))); + x42 = ((uint64_t)(arg1[3]) * ((arg2[7]) * UINT8_C(0x26))); + x43 = ((uint64_t)(arg1[2]) * ((arg2[9]) * UINT8_C(0x13))); + x44 = ((uint64_t)(arg1[2]) * ((arg2[8]) * UINT8_C(0x13))); + x45 = ((uint64_t)(arg1[1]) * ((arg2[9]) * UINT8_C(0x26))); + x46 = ((uint64_t)(arg1[9]) * (arg2[0])); + x47 = ((uint64_t)(arg1[8]) * (arg2[1])); + x48 = ((uint64_t)(arg1[8]) * (arg2[0])); + x49 = ((uint64_t)(arg1[7]) * (arg2[2])); + x50 = ((uint64_t)(arg1[7]) * ((arg2[1]) * 0x2)); + x51 = ((uint64_t)(arg1[7]) * (arg2[0])); + x52 = ((uint64_t)(arg1[6]) * (arg2[3])); + x53 = ((uint64_t)(arg1[6]) * (arg2[2])); + x54 = ((uint64_t)(arg1[6]) * (arg2[1])); + x55 = ((uint64_t)(arg1[6]) * (arg2[0])); + x56 = ((uint64_t)(arg1[5]) * (arg2[4])); + x57 = ((uint64_t)(arg1[5]) * ((arg2[3]) * 0x2)); + x58 = ((uint64_t)(arg1[5]) * (arg2[2])); + x59 = ((uint64_t)(arg1[5]) * ((arg2[1]) * 0x2)); + x60 = ((uint64_t)(arg1[5]) * (arg2[0])); + x61 = ((uint64_t)(arg1[4]) * (arg2[5])); + x62 = ((uint64_t)(arg1[4]) * (arg2[4])); + x63 = ((uint64_t)(arg1[4]) * (arg2[3])); + x64 = ((uint64_t)(arg1[4]) * (arg2[2])); + x65 = ((uint64_t)(arg1[4]) * (arg2[1])); + x66 = ((uint64_t)(arg1[4]) * (arg2[0])); + x67 = ((uint64_t)(arg1[3]) * (arg2[6])); + x68 = ((uint64_t)(arg1[3]) * ((arg2[5]) * 0x2)); + x69 = ((uint64_t)(arg1[3]) * (arg2[4])); + x70 = ((uint64_t)(arg1[3]) * ((arg2[3]) * 0x2)); + x71 = ((uint64_t)(arg1[3]) * (arg2[2])); + x72 = ((uint64_t)(arg1[3]) * ((arg2[1]) * 0x2)); + x73 = ((uint64_t)(arg1[3]) * (arg2[0])); + x74 = ((uint64_t)(arg1[2]) * (arg2[7])); + x75 = ((uint64_t)(arg1[2]) * (arg2[6])); + x76 = ((uint64_t)(arg1[2]) * (arg2[5])); + x77 = ((uint64_t)(arg1[2]) * (arg2[4])); + x78 = ((uint64_t)(arg1[2]) * (arg2[3])); + x79 = ((uint64_t)(arg1[2]) * (arg2[2])); + x80 = ((uint64_t)(arg1[2]) * (arg2[1])); + x81 = ((uint64_t)(arg1[2]) * (arg2[0])); + x82 = ((uint64_t)(arg1[1]) * (arg2[8])); + x83 = ((uint64_t)(arg1[1]) * ((arg2[7]) * 0x2)); + x84 = ((uint64_t)(arg1[1]) * (arg2[6])); + x85 = ((uint64_t)(arg1[1]) * ((arg2[5]) * 0x2)); + x86 = ((uint64_t)(arg1[1]) * (arg2[4])); + x87 = ((uint64_t)(arg1[1]) * ((arg2[3]) * 0x2)); + x88 = ((uint64_t)(arg1[1]) * (arg2[2])); + x89 = ((uint64_t)(arg1[1]) * ((arg2[1]) * 0x2)); + x90 = ((uint64_t)(arg1[1]) * (arg2[0])); + x91 = ((uint64_t)(arg1[0]) * (arg2[9])); + x92 = ((uint64_t)(arg1[0]) * (arg2[8])); + x93 = ((uint64_t)(arg1[0]) * (arg2[7])); + x94 = ((uint64_t)(arg1[0]) * (arg2[6])); + x95 = ((uint64_t)(arg1[0]) * (arg2[5])); + x96 = ((uint64_t)(arg1[0]) * (arg2[4])); + x97 = ((uint64_t)(arg1[0]) * (arg2[3])); + x98 = ((uint64_t)(arg1[0]) * (arg2[2])); + x99 = ((uint64_t)(arg1[0]) * (arg2[1])); + x100 = ((uint64_t)(arg1[0]) * (arg2[0])); + x101 = (x100 + (x45 + (x44 + (x42 + (x39 + (x35 + (x30 + (x24 + (x17 + x9))))))))); + x102 = (x101 >> 26); + x103 = (uint32_t)(x101 & UINT32_C(0x3ffffff)); + x104 = (x91 + (x82 + (x74 + (x67 + (x61 + (x56 + (x52 + (x49 + (x47 + x46))))))))); + x105 = (x92 + (x83 + (x75 + (x68 + (x62 + (x57 + (x53 + (x50 + (x48 + x1))))))))); + x106 = (x93 + (x84 + (x76 + (x69 + (x63 + (x58 + (x54 + (x51 + (x10 + x2))))))))); + x107 = (x94 + (x85 + (x77 + (x70 + (x64 + (x59 + (x55 + (x18 + (x11 + x3))))))))); + x108 = (x95 + (x86 + (x78 + (x71 + (x65 + (x60 + (x25 + (x19 + (x12 + x4))))))))); + x109 = (x96 + (x87 + (x79 + (x72 + (x66 + (x31 + (x26 + (x20 + (x13 + x5))))))))); + x110 = (x97 + (x88 + (x80 + (x73 + (x36 + (x32 + (x27 + (x21 + (x14 + x6))))))))); + x111 = (x98 + (x89 + (x81 + (x40 + (x37 + (x33 + (x28 + (x22 + (x15 + x7))))))))); + x112 = (x99 + (x90 + (x43 + (x41 + (x38 + (x34 + (x29 + (x23 + (x16 + x8))))))))); + x113 = (x102 + x112); + x114 = (x113 >> 25); + x115 = (uint32_t)(x113 & UINT32_C(0x1ffffff)); + x116 = (x114 + x111); + x117 = (x116 >> 26); + x118 = (uint32_t)(x116 & UINT32_C(0x3ffffff)); + x119 = (x117 + x110); + x120 = (x119 >> 25); + x121 = (uint32_t)(x119 & UINT32_C(0x1ffffff)); + x122 = (x120 + x109); + x123 = (x122 >> 26); + x124 = (uint32_t)(x122 & UINT32_C(0x3ffffff)); + x125 = (x123 + x108); + x126 = (x125 >> 25); + x127 = (uint32_t)(x125 & UINT32_C(0x1ffffff)); + x128 = (x126 + x107); + x129 = (x128 >> 26); + x130 = (uint32_t)(x128 & UINT32_C(0x3ffffff)); + x131 = (x129 + x106); + x132 = (x131 >> 25); + x133 = (uint32_t)(x131 & UINT32_C(0x1ffffff)); + x134 = (x132 + x105); + x135 = (x134 >> 26); + x136 = (uint32_t)(x134 & UINT32_C(0x3ffffff)); + x137 = (x135 + x104); + x138 = (x137 >> 25); + x139 = (uint32_t)(x137 & UINT32_C(0x1ffffff)); + x140 = (x138 * UINT8_C(0x13)); + x141 = (x103 + x140); + x142 = (uint32_t)(x141 >> 26); + x143 = (uint32_t)(x141 & UINT32_C(0x3ffffff)); + x144 = (x142 + x115); + x145 = (fiat_25519_uint1)(x144 >> 25); + x146 = (x144 & UINT32_C(0x1ffffff)); + x147 = (x145 + x118); out1[0] = x143; out1[1] = x146; out1[2] = x147; @@ -303,135 +486,252 @@ /* * The function fiat_25519_carry_square squares a field element and reduces the result. + * * Postconditions: * eval out1 mod m = (eval arg1 * eval arg1) mod m * - * Input Bounds: - * arg1: [[0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999]] - * Output Bounds: - * out1: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]] */ -static void fiat_25519_carry_square(uint32_t out1[10], const uint32_t arg1[10]) { - uint32_t x1 = ((arg1[9]) * UINT8_C(0x13)); - uint32_t x2 = (x1 * 0x2); - uint32_t x3 = ((arg1[9]) * 0x2); - uint32_t x4 = ((arg1[8]) * UINT8_C(0x13)); - uint64_t x5 = ((uint64_t)x4 * 0x2); - uint32_t x6 = ((arg1[8]) * 0x2); - uint32_t x7 = ((arg1[7]) * UINT8_C(0x13)); - uint32_t x8 = (x7 * 0x2); - uint32_t x9 = ((arg1[7]) * 0x2); - uint32_t x10 = ((arg1[6]) * UINT8_C(0x13)); - uint64_t x11 = ((uint64_t)x10 * 0x2); - uint32_t x12 = ((arg1[6]) * 0x2); - uint32_t x13 = ((arg1[5]) * UINT8_C(0x13)); - uint32_t x14 = ((arg1[5]) * 0x2); - uint32_t x15 = ((arg1[4]) * 0x2); - uint32_t x16 = ((arg1[3]) * 0x2); - uint32_t x17 = ((arg1[2]) * 0x2); - uint32_t x18 = ((arg1[1]) * 0x2); - uint64_t x19 = ((uint64_t)(arg1[9]) * (x1 * 0x2)); - uint64_t x20 = ((uint64_t)(arg1[8]) * x2); - uint64_t x21 = ((uint64_t)(arg1[8]) * x4); - uint64_t x22 = ((arg1[7]) * ((uint64_t)x2 * 0x2)); - uint64_t x23 = ((arg1[7]) * x5); - uint64_t x24 = ((uint64_t)(arg1[7]) * (x7 * 0x2)); - uint64_t x25 = ((uint64_t)(arg1[6]) * x2); - uint64_t x26 = ((arg1[6]) * x5); - uint64_t x27 = ((uint64_t)(arg1[6]) * x8); - uint64_t x28 = ((uint64_t)(arg1[6]) * x10); - uint64_t x29 = ((arg1[5]) * ((uint64_t)x2 * 0x2)); - uint64_t x30 = ((arg1[5]) * x5); - uint64_t x31 = ((arg1[5]) * ((uint64_t)x8 * 0x2)); - uint64_t x32 = ((arg1[5]) * x11); - uint64_t x33 = ((uint64_t)(arg1[5]) * (x13 * 0x2)); - uint64_t x34 = ((uint64_t)(arg1[4]) * x2); - uint64_t x35 = ((arg1[4]) * x5); - uint64_t x36 = ((uint64_t)(arg1[4]) * x8); - uint64_t x37 = ((arg1[4]) * x11); - uint64_t x38 = ((uint64_t)(arg1[4]) * x14); - uint64_t x39 = ((uint64_t)(arg1[4]) * (arg1[4])); - uint64_t x40 = ((arg1[3]) * ((uint64_t)x2 * 0x2)); - uint64_t x41 = ((arg1[3]) * x5); - uint64_t x42 = ((arg1[3]) * ((uint64_t)x8 * 0x2)); - uint64_t x43 = ((uint64_t)(arg1[3]) * x12); - uint64_t x44 = ((uint64_t)(arg1[3]) * (x14 * 0x2)); - uint64_t x45 = ((uint64_t)(arg1[3]) * x15); - uint64_t x46 = ((uint64_t)(arg1[3]) * ((arg1[3]) * 0x2)); - uint64_t x47 = ((uint64_t)(arg1[2]) * x2); - uint64_t x48 = ((arg1[2]) * x5); - uint64_t x49 = ((uint64_t)(arg1[2]) * x9); - uint64_t x50 = ((uint64_t)(arg1[2]) * x12); - uint64_t x51 = ((uint64_t)(arg1[2]) * x14); - uint64_t x52 = ((uint64_t)(arg1[2]) * x15); - uint64_t x53 = ((uint64_t)(arg1[2]) * x16); - uint64_t x54 = ((uint64_t)(arg1[2]) * (arg1[2])); - uint64_t x55 = ((arg1[1]) * ((uint64_t)x2 * 0x2)); - uint64_t x56 = ((uint64_t)(arg1[1]) * x6); - uint64_t x57 = ((uint64_t)(arg1[1]) * (x9 * 0x2)); - uint64_t x58 = ((uint64_t)(arg1[1]) * x12); - uint64_t x59 = ((uint64_t)(arg1[1]) * (x14 * 0x2)); - uint64_t x60 = ((uint64_t)(arg1[1]) * x15); - uint64_t x61 = ((uint64_t)(arg1[1]) * (x16 * 0x2)); - uint64_t x62 = ((uint64_t)(arg1[1]) * x17); - uint64_t x63 = ((uint64_t)(arg1[1]) * ((arg1[1]) * 0x2)); - uint64_t x64 = ((uint64_t)(arg1[0]) * x3); - uint64_t x65 = ((uint64_t)(arg1[0]) * x6); - uint64_t x66 = ((uint64_t)(arg1[0]) * x9); - uint64_t x67 = ((uint64_t)(arg1[0]) * x12); - uint64_t x68 = ((uint64_t)(arg1[0]) * x14); - uint64_t x69 = ((uint64_t)(arg1[0]) * x15); - uint64_t x70 = ((uint64_t)(arg1[0]) * x16); - uint64_t x71 = ((uint64_t)(arg1[0]) * x17); - uint64_t x72 = ((uint64_t)(arg1[0]) * x18); - uint64_t x73 = ((uint64_t)(arg1[0]) * (arg1[0])); - uint64_t x74 = (x73 + (x55 + (x48 + (x42 + (x37 + x33))))); - uint64_t x75 = (x74 >> 26); - uint32_t x76 = (uint32_t)(x74 & UINT32_C(0x3ffffff)); - uint64_t x77 = (x64 + (x56 + (x49 + (x43 + x38)))); - uint64_t x78 = (x65 + (x57 + (x50 + (x44 + (x39 + x19))))); - uint64_t x79 = (x66 + (x58 + (x51 + (x45 + x20)))); - uint64_t x80 = (x67 + (x59 + (x52 + (x46 + (x22 + x21))))); - uint64_t x81 = (x68 + (x60 + (x53 + (x25 + x23)))); - uint64_t x82 = (x69 + (x61 + (x54 + (x29 + (x26 + x24))))); - uint64_t x83 = (x70 + (x62 + (x34 + (x30 + x27)))); - uint64_t x84 = (x71 + (x63 + (x40 + (x35 + (x31 + x28))))); - uint64_t x85 = (x72 + (x47 + (x41 + (x36 + x32)))); - uint64_t x86 = (x75 + x85); - uint64_t x87 = (x86 >> 25); - uint32_t x88 = (uint32_t)(x86 & UINT32_C(0x1ffffff)); - uint64_t x89 = (x87 + x84); - uint64_t x90 = (x89 >> 26); - uint32_t x91 = (uint32_t)(x89 & UINT32_C(0x3ffffff)); - uint64_t x92 = (x90 + x83); - uint64_t x93 = (x92 >> 25); - uint32_t x94 = (uint32_t)(x92 & UINT32_C(0x1ffffff)); - uint64_t x95 = (x93 + x82); - uint64_t x96 = (x95 >> 26); - uint32_t x97 = (uint32_t)(x95 & UINT32_C(0x3ffffff)); - uint64_t x98 = (x96 + x81); - uint64_t x99 = (x98 >> 25); - uint32_t x100 = (uint32_t)(x98 & UINT32_C(0x1ffffff)); - uint64_t x101 = (x99 + x80); - uint64_t x102 = (x101 >> 26); - uint32_t x103 = (uint32_t)(x101 & UINT32_C(0x3ffffff)); - uint64_t x104 = (x102 + x79); - uint64_t x105 = (x104 >> 25); - uint32_t x106 = (uint32_t)(x104 & UINT32_C(0x1ffffff)); - uint64_t x107 = (x105 + x78); - uint64_t x108 = (x107 >> 26); - uint32_t x109 = (uint32_t)(x107 & UINT32_C(0x3ffffff)); - uint64_t x110 = (x108 + x77); - uint64_t x111 = (x110 >> 25); - uint32_t x112 = (uint32_t)(x110 & UINT32_C(0x1ffffff)); - uint64_t x113 = (x111 * UINT8_C(0x13)); - uint64_t x114 = (x76 + x113); - uint32_t x115 = (uint32_t)(x114 >> 26); - uint32_t x116 = (uint32_t)(x114 & UINT32_C(0x3ffffff)); - uint32_t x117 = (x115 + x88); - fiat_25519_uint1 x118 = (fiat_25519_uint1)(x117 >> 25); - uint32_t x119 = (x117 & UINT32_C(0x1ffffff)); - uint32_t x120 = (x118 + x91); +static FIAT_25519_FIAT_INLINE void fiat_25519_carry_square(fiat_25519_tight_field_element out1, const fiat_25519_loose_field_element arg1) { + uint32_t x1; + uint32_t x2; + uint32_t x3; + uint32_t x4; + uint64_t x5; + uint32_t x6; + uint32_t x7; + uint32_t x8; + uint32_t x9; + uint32_t x10; + uint64_t x11; + uint32_t x12; + uint32_t x13; + uint32_t x14; + uint32_t x15; + uint32_t x16; + uint32_t x17; + uint32_t x18; + uint64_t x19; + uint64_t x20; + uint64_t x21; + uint64_t x22; + uint64_t x23; + uint64_t x24; + uint64_t x25; + uint64_t x26; + uint64_t x27; + uint64_t x28; + uint64_t x29; + uint64_t x30; + uint64_t x31; + uint64_t x32; + uint64_t x33; + uint64_t x34; + uint64_t x35; + uint64_t x36; + uint64_t x37; + uint64_t x38; + uint64_t x39; + uint64_t x40; + uint64_t x41; + uint64_t x42; + uint64_t x43; + uint64_t x44; + uint64_t x45; + uint64_t x46; + uint64_t x47; + uint64_t x48; + uint64_t x49; + uint64_t x50; + uint64_t x51; + uint64_t x52; + uint64_t x53; + uint64_t x54; + uint64_t x55; + uint64_t x56; + uint64_t x57; + uint64_t x58; + uint64_t x59; + uint64_t x60; + uint64_t x61; + uint64_t x62; + uint64_t x63; + uint64_t x64; + uint64_t x65; + uint64_t x66; + uint64_t x67; + uint64_t x68; + uint64_t x69; + uint64_t x70; + uint64_t x71; + uint64_t x72; + uint64_t x73; + uint64_t x74; + uint64_t x75; + uint32_t x76; + uint64_t x77; + uint64_t x78; + uint64_t x79; + uint64_t x80; + uint64_t x81; + uint64_t x82; + uint64_t x83; + uint64_t x84; + uint64_t x85; + uint64_t x86; + uint64_t x87; + uint32_t x88; + uint64_t x89; + uint64_t x90; + uint32_t x91; + uint64_t x92; + uint64_t x93; + uint32_t x94; + uint64_t x95; + uint64_t x96; + uint32_t x97; + uint64_t x98; + uint64_t x99; + uint32_t x100; + uint64_t x101; + uint64_t x102; + uint32_t x103; + uint64_t x104; + uint64_t x105; + uint32_t x106; + uint64_t x107; + uint64_t x108; + uint32_t x109; + uint64_t x110; + uint64_t x111; + uint32_t x112; + uint64_t x113; + uint64_t x114; + uint32_t x115; + uint32_t x116; + uint32_t x117; + fiat_25519_uint1 x118; + uint32_t x119; + uint32_t x120; + x1 = ((arg1[9]) * UINT8_C(0x13)); + x2 = (x1 * 0x2); + x3 = ((arg1[9]) * 0x2); + x4 = ((arg1[8]) * UINT8_C(0x13)); + x5 = ((uint64_t)x4 * 0x2); + x6 = ((arg1[8]) * 0x2); + x7 = ((arg1[7]) * UINT8_C(0x13)); + x8 = (x7 * 0x2); + x9 = ((arg1[7]) * 0x2); + x10 = ((arg1[6]) * UINT8_C(0x13)); + x11 = ((uint64_t)x10 * 0x2); + x12 = ((arg1[6]) * 0x2); + x13 = ((arg1[5]) * UINT8_C(0x13)); + x14 = ((arg1[5]) * 0x2); + x15 = ((arg1[4]) * 0x2); + x16 = ((arg1[3]) * 0x2); + x17 = ((arg1[2]) * 0x2); + x18 = ((arg1[1]) * 0x2); + x19 = ((uint64_t)(arg1[9]) * (x1 * 0x2)); + x20 = ((uint64_t)(arg1[8]) * x2); + x21 = ((uint64_t)(arg1[8]) * x4); + x22 = ((arg1[7]) * ((uint64_t)x2 * 0x2)); + x23 = ((arg1[7]) * x5); + x24 = ((uint64_t)(arg1[7]) * (x7 * 0x2)); + x25 = ((uint64_t)(arg1[6]) * x2); + x26 = ((arg1[6]) * x5); + x27 = ((uint64_t)(arg1[6]) * x8); + x28 = ((uint64_t)(arg1[6]) * x10); + x29 = ((arg1[5]) * ((uint64_t)x2 * 0x2)); + x30 = ((arg1[5]) * x5); + x31 = ((arg1[5]) * ((uint64_t)x8 * 0x2)); + x32 = ((arg1[5]) * x11); + x33 = ((uint64_t)(arg1[5]) * (x13 * 0x2)); + x34 = ((uint64_t)(arg1[4]) * x2); + x35 = ((arg1[4]) * x5); + x36 = ((uint64_t)(arg1[4]) * x8); + x37 = ((arg1[4]) * x11); + x38 = ((uint64_t)(arg1[4]) * x14); + x39 = ((uint64_t)(arg1[4]) * (arg1[4])); + x40 = ((arg1[3]) * ((uint64_t)x2 * 0x2)); + x41 = ((arg1[3]) * x5); + x42 = ((arg1[3]) * ((uint64_t)x8 * 0x2)); + x43 = ((uint64_t)(arg1[3]) * x12); + x44 = ((uint64_t)(arg1[3]) * (x14 * 0x2)); + x45 = ((uint64_t)(arg1[3]) * x15); + x46 = ((uint64_t)(arg1[3]) * ((arg1[3]) * 0x2)); + x47 = ((uint64_t)(arg1[2]) * x2); + x48 = ((arg1[2]) * x5); + x49 = ((uint64_t)(arg1[2]) * x9); + x50 = ((uint64_t)(arg1[2]) * x12); + x51 = ((uint64_t)(arg1[2]) * x14); + x52 = ((uint64_t)(arg1[2]) * x15); + x53 = ((uint64_t)(arg1[2]) * x16); + x54 = ((uint64_t)(arg1[2]) * (arg1[2])); + x55 = ((arg1[1]) * ((uint64_t)x2 * 0x2)); + x56 = ((uint64_t)(arg1[1]) * x6); + x57 = ((uint64_t)(arg1[1]) * (x9 * 0x2)); + x58 = ((uint64_t)(arg1[1]) * x12); + x59 = ((uint64_t)(arg1[1]) * (x14 * 0x2)); + x60 = ((uint64_t)(arg1[1]) * x15); + x61 = ((uint64_t)(arg1[1]) * (x16 * 0x2)); + x62 = ((uint64_t)(arg1[1]) * x17); + x63 = ((uint64_t)(arg1[1]) * ((arg1[1]) * 0x2)); + x64 = ((uint64_t)(arg1[0]) * x3); + x65 = ((uint64_t)(arg1[0]) * x6); + x66 = ((uint64_t)(arg1[0]) * x9); + x67 = ((uint64_t)(arg1[0]) * x12); + x68 = ((uint64_t)(arg1[0]) * x14); + x69 = ((uint64_t)(arg1[0]) * x15); + x70 = ((uint64_t)(arg1[0]) * x16); + x71 = ((uint64_t)(arg1[0]) * x17); + x72 = ((uint64_t)(arg1[0]) * x18); + x73 = ((uint64_t)(arg1[0]) * (arg1[0])); + x74 = (x73 + (x55 + (x48 + (x42 + (x37 + x33))))); + x75 = (x74 >> 26); + x76 = (uint32_t)(x74 & UINT32_C(0x3ffffff)); + x77 = (x64 + (x56 + (x49 + (x43 + x38)))); + x78 = (x65 + (x57 + (x50 + (x44 + (x39 + x19))))); + x79 = (x66 + (x58 + (x51 + (x45 + x20)))); + x80 = (x67 + (x59 + (x52 + (x46 + (x22 + x21))))); + x81 = (x68 + (x60 + (x53 + (x25 + x23)))); + x82 = (x69 + (x61 + (x54 + (x29 + (x26 + x24))))); + x83 = (x70 + (x62 + (x34 + (x30 + x27)))); + x84 = (x71 + (x63 + (x40 + (x35 + (x31 + x28))))); + x85 = (x72 + (x47 + (x41 + (x36 + x32)))); + x86 = (x75 + x85); + x87 = (x86 >> 25); + x88 = (uint32_t)(x86 & UINT32_C(0x1ffffff)); + x89 = (x87 + x84); + x90 = (x89 >> 26); + x91 = (uint32_t)(x89 & UINT32_C(0x3ffffff)); + x92 = (x90 + x83); + x93 = (x92 >> 25); + x94 = (uint32_t)(x92 & UINT32_C(0x1ffffff)); + x95 = (x93 + x82); + x96 = (x95 >> 26); + x97 = (uint32_t)(x95 & UINT32_C(0x3ffffff)); + x98 = (x96 + x81); + x99 = (x98 >> 25); + x100 = (uint32_t)(x98 & UINT32_C(0x1ffffff)); + x101 = (x99 + x80); + x102 = (x101 >> 26); + x103 = (uint32_t)(x101 & UINT32_C(0x3ffffff)); + x104 = (x102 + x79); + x105 = (x104 >> 25); + x106 = (uint32_t)(x104 & UINT32_C(0x1ffffff)); + x107 = (x105 + x78); + x108 = (x107 >> 26); + x109 = (uint32_t)(x107 & UINT32_C(0x3ffffff)); + x110 = (x108 + x77); + x111 = (x110 >> 25); + x112 = (uint32_t)(x110 & UINT32_C(0x1ffffff)); + x113 = (x111 * UINT8_C(0x13)); + x114 = (x76 + x113); + x115 = (uint32_t)(x114 >> 26); + x116 = (uint32_t)(x114 & UINT32_C(0x3ffffff)); + x117 = (x115 + x88); + x118 = (fiat_25519_uint1)(x117 >> 25); + x119 = (x117 & UINT32_C(0x1ffffff)); + x120 = (x118 + x91); out1[0] = x116; out1[1] = x119; out1[2] = x120; @@ -446,37 +746,56 @@ /* * The function fiat_25519_carry reduces a field element. + * * Postconditions: * eval out1 mod m = eval arg1 mod m * - * Input Bounds: - * arg1: [[0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999]] - * Output Bounds: - * out1: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]] */ -static void fiat_25519_carry(uint32_t out1[10], const uint32_t arg1[10]) { - uint32_t x1 = (arg1[0]); - uint32_t x2 = ((x1 >> 26) + (arg1[1])); - uint32_t x3 = ((x2 >> 25) + (arg1[2])); - uint32_t x4 = ((x3 >> 26) + (arg1[3])); - uint32_t x5 = ((x4 >> 25) + (arg1[4])); - uint32_t x6 = ((x5 >> 26) + (arg1[5])); - uint32_t x7 = ((x6 >> 25) + (arg1[6])); - uint32_t x8 = ((x7 >> 26) + (arg1[7])); - uint32_t x9 = ((x8 >> 25) + (arg1[8])); - uint32_t x10 = ((x9 >> 26) + (arg1[9])); - uint32_t x11 = ((x1 & UINT32_C(0x3ffffff)) + ((x10 >> 25) * UINT8_C(0x13))); - uint32_t x12 = ((fiat_25519_uint1)(x11 >> 26) + (x2 & UINT32_C(0x1ffffff))); - uint32_t x13 = (x11 & UINT32_C(0x3ffffff)); - uint32_t x14 = (x12 & UINT32_C(0x1ffffff)); - uint32_t x15 = ((fiat_25519_uint1)(x12 >> 25) + (x3 & UINT32_C(0x3ffffff))); - uint32_t x16 = (x4 & UINT32_C(0x1ffffff)); - uint32_t x17 = (x5 & UINT32_C(0x3ffffff)); - uint32_t x18 = (x6 & UINT32_C(0x1ffffff)); - uint32_t x19 = (x7 & UINT32_C(0x3ffffff)); - uint32_t x20 = (x8 & UINT32_C(0x1ffffff)); - uint32_t x21 = (x9 & UINT32_C(0x3ffffff)); - uint32_t x22 = (x10 & UINT32_C(0x1ffffff)); +static FIAT_25519_FIAT_INLINE void fiat_25519_carry(fiat_25519_tight_field_element out1, const fiat_25519_loose_field_element arg1) { + uint32_t x1; + uint32_t x2; + uint32_t x3; + uint32_t x4; + uint32_t x5; + uint32_t x6; + uint32_t x7; + uint32_t x8; + uint32_t x9; + uint32_t x10; + uint32_t x11; + uint32_t x12; + uint32_t x13; + uint32_t x14; + uint32_t x15; + uint32_t x16; + uint32_t x17; + uint32_t x18; + uint32_t x19; + uint32_t x20; + uint32_t x21; + uint32_t x22; + x1 = (arg1[0]); + x2 = ((x1 >> 26) + (arg1[1])); + x3 = ((x2 >> 25) + (arg1[2])); + x4 = ((x3 >> 26) + (arg1[3])); + x5 = ((x4 >> 25) + (arg1[4])); + x6 = ((x5 >> 26) + (arg1[5])); + x7 = ((x6 >> 25) + (arg1[6])); + x8 = ((x7 >> 26) + (arg1[7])); + x9 = ((x8 >> 25) + (arg1[8])); + x10 = ((x9 >> 26) + (arg1[9])); + x11 = ((x1 & UINT32_C(0x3ffffff)) + ((x10 >> 25) * UINT8_C(0x13))); + x12 = ((fiat_25519_uint1)(x11 >> 26) + (x2 & UINT32_C(0x1ffffff))); + x13 = (x11 & UINT32_C(0x3ffffff)); + x14 = (x12 & UINT32_C(0x1ffffff)); + x15 = ((fiat_25519_uint1)(x12 >> 25) + (x3 & UINT32_C(0x3ffffff))); + x16 = (x4 & UINT32_C(0x1ffffff)); + x17 = (x5 & UINT32_C(0x3ffffff)); + x18 = (x6 & UINT32_C(0x1ffffff)); + x19 = (x7 & UINT32_C(0x3ffffff)); + x20 = (x8 & UINT32_C(0x1ffffff)); + x21 = (x9 & UINT32_C(0x3ffffff)); + x22 = (x10 & UINT32_C(0x1ffffff)); out1[0] = x13; out1[1] = x14; out1[2] = x15; @@ -491,26 +810,32 @@ /* * The function fiat_25519_add adds two field elements. + * * Postconditions: * eval out1 mod m = (eval arg1 + eval arg2) mod m * - * Input Bounds: - * arg1: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]] - * arg2: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]] - * Output Bounds: - * out1: [[0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999]] */ -static void fiat_25519_add(uint32_t out1[10], const uint32_t arg1[10], const uint32_t arg2[10]) { - uint32_t x1 = ((arg1[0]) + (arg2[0])); - uint32_t x2 = ((arg1[1]) + (arg2[1])); - uint32_t x3 = ((arg1[2]) + (arg2[2])); - uint32_t x4 = ((arg1[3]) + (arg2[3])); - uint32_t x5 = ((arg1[4]) + (arg2[4])); - uint32_t x6 = ((arg1[5]) + (arg2[5])); - uint32_t x7 = ((arg1[6]) + (arg2[6])); - uint32_t x8 = ((arg1[7]) + (arg2[7])); - uint32_t x9 = ((arg1[8]) + (arg2[8])); - uint32_t x10 = ((arg1[9]) + (arg2[9])); +static FIAT_25519_FIAT_INLINE void fiat_25519_add(fiat_25519_loose_field_element out1, const fiat_25519_tight_field_element arg1, const fiat_25519_tight_field_element arg2) { + uint32_t x1; + uint32_t x2; + uint32_t x3; + uint32_t x4; + uint32_t x5; + uint32_t x6; + uint32_t x7; + uint32_t x8; + uint32_t x9; + uint32_t x10; + x1 = ((arg1[0]) + (arg2[0])); + x2 = ((arg1[1]) + (arg2[1])); + x3 = ((arg1[2]) + (arg2[2])); + x4 = ((arg1[3]) + (arg2[3])); + x5 = ((arg1[4]) + (arg2[4])); + x6 = ((arg1[5]) + (arg2[5])); + x7 = ((arg1[6]) + (arg2[6])); + x8 = ((arg1[7]) + (arg2[7])); + x9 = ((arg1[8]) + (arg2[8])); + x10 = ((arg1[9]) + (arg2[9])); out1[0] = x1; out1[1] = x2; out1[2] = x3; @@ -525,26 +850,32 @@ /* * The function fiat_25519_sub subtracts two field elements. + * * Postconditions: * eval out1 mod m = (eval arg1 - eval arg2) mod m * - * Input Bounds: - * arg1: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]] - * arg2: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]] - * Output Bounds: - * out1: [[0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999]] */ -static void fiat_25519_sub(uint32_t out1[10], const uint32_t arg1[10], const uint32_t arg2[10]) { - uint32_t x1 = ((UINT32_C(0x7ffffda) + (arg1[0])) - (arg2[0])); - uint32_t x2 = ((UINT32_C(0x3fffffe) + (arg1[1])) - (arg2[1])); - uint32_t x3 = ((UINT32_C(0x7fffffe) + (arg1[2])) - (arg2[2])); - uint32_t x4 = ((UINT32_C(0x3fffffe) + (arg1[3])) - (arg2[3])); - uint32_t x5 = ((UINT32_C(0x7fffffe) + (arg1[4])) - (arg2[4])); - uint32_t x6 = ((UINT32_C(0x3fffffe) + (arg1[5])) - (arg2[5])); - uint32_t x7 = ((UINT32_C(0x7fffffe) + (arg1[6])) - (arg2[6])); - uint32_t x8 = ((UINT32_C(0x3fffffe) + (arg1[7])) - (arg2[7])); - uint32_t x9 = ((UINT32_C(0x7fffffe) + (arg1[8])) - (arg2[8])); - uint32_t x10 = ((UINT32_C(0x3fffffe) + (arg1[9])) - (arg2[9])); +static FIAT_25519_FIAT_INLINE void fiat_25519_sub(fiat_25519_loose_field_element out1, const fiat_25519_tight_field_element arg1, const fiat_25519_tight_field_element arg2) { + uint32_t x1; + uint32_t x2; + uint32_t x3; + uint32_t x4; + uint32_t x5; + uint32_t x6; + uint32_t x7; + uint32_t x8; + uint32_t x9; + uint32_t x10; + x1 = ((UINT32_C(0x7ffffda) + (arg1[0])) - (arg2[0])); + x2 = ((UINT32_C(0x3fffffe) + (arg1[1])) - (arg2[1])); + x3 = ((UINT32_C(0x7fffffe) + (arg1[2])) - (arg2[2])); + x4 = ((UINT32_C(0x3fffffe) + (arg1[3])) - (arg2[3])); + x5 = ((UINT32_C(0x7fffffe) + (arg1[4])) - (arg2[4])); + x6 = ((UINT32_C(0x3fffffe) + (arg1[5])) - (arg2[5])); + x7 = ((UINT32_C(0x7fffffe) + (arg1[6])) - (arg2[6])); + x8 = ((UINT32_C(0x3fffffe) + (arg1[7])) - (arg2[7])); + x9 = ((UINT32_C(0x7fffffe) + (arg1[8])) - (arg2[8])); + x10 = ((UINT32_C(0x3fffffe) + (arg1[9])) - (arg2[9])); out1[0] = x1; out1[1] = x2; out1[2] = x3; @@ -559,25 +890,32 @@ /* * The function fiat_25519_opp negates a field element. + * * Postconditions: * eval out1 mod m = -eval arg1 mod m * - * Input Bounds: - * arg1: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]] - * Output Bounds: - * out1: [[0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999]] */ -static void fiat_25519_opp(uint32_t out1[10], const uint32_t arg1[10]) { - uint32_t x1 = (UINT32_C(0x7ffffda) - (arg1[0])); - uint32_t x2 = (UINT32_C(0x3fffffe) - (arg1[1])); - uint32_t x3 = (UINT32_C(0x7fffffe) - (arg1[2])); - uint32_t x4 = (UINT32_C(0x3fffffe) - (arg1[3])); - uint32_t x5 = (UINT32_C(0x7fffffe) - (arg1[4])); - uint32_t x6 = (UINT32_C(0x3fffffe) - (arg1[5])); - uint32_t x7 = (UINT32_C(0x7fffffe) - (arg1[6])); - uint32_t x8 = (UINT32_C(0x3fffffe) - (arg1[7])); - uint32_t x9 = (UINT32_C(0x7fffffe) - (arg1[8])); - uint32_t x10 = (UINT32_C(0x3fffffe) - (arg1[9])); +static FIAT_25519_FIAT_INLINE void fiat_25519_opp(fiat_25519_loose_field_element out1, const fiat_25519_tight_field_element arg1) { + uint32_t x1; + uint32_t x2; + uint32_t x3; + uint32_t x4; + uint32_t x5; + uint32_t x6; + uint32_t x7; + uint32_t x8; + uint32_t x9; + uint32_t x10; + x1 = (UINT32_C(0x7ffffda) - (arg1[0])); + x2 = (UINT32_C(0x3fffffe) - (arg1[1])); + x3 = (UINT32_C(0x7fffffe) - (arg1[2])); + x4 = (UINT32_C(0x3fffffe) - (arg1[3])); + x5 = (UINT32_C(0x7fffffe) - (arg1[4])); + x6 = (UINT32_C(0x3fffffe) - (arg1[5])); + x7 = (UINT32_C(0x7fffffe) - (arg1[6])); + x8 = (UINT32_C(0x3fffffe) - (arg1[7])); + x9 = (UINT32_C(0x7fffffe) - (arg1[8])); + x10 = (UINT32_C(0x3fffffe) - (arg1[9])); out1[0] = x1; out1[1] = x2; out1[2] = x3; @@ -592,6 +930,7 @@ /* * The function fiat_25519_selectznz is a multi-limb conditional select. + * * Postconditions: * eval out1 = (if arg1 = 0 then eval arg2 else eval arg3) * @@ -602,26 +941,26 @@ * Output Bounds: * out1: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]] */ -static void fiat_25519_selectznz(uint32_t out1[10], fiat_25519_uint1 arg1, const uint32_t arg2[10], const uint32_t arg3[10]) { +static FIAT_25519_FIAT_INLINE void fiat_25519_selectznz(uint32_t out1[10], fiat_25519_uint1 arg1, const uint32_t arg2[10], const uint32_t arg3[10]) { uint32_t x1; - fiat_25519_cmovznz_u32(&x1, arg1, (arg2[0]), (arg3[0])); uint32_t x2; - fiat_25519_cmovznz_u32(&x2, arg1, (arg2[1]), (arg3[1])); uint32_t x3; - fiat_25519_cmovznz_u32(&x3, arg1, (arg2[2]), (arg3[2])); uint32_t x4; - fiat_25519_cmovznz_u32(&x4, arg1, (arg2[3]), (arg3[3])); uint32_t x5; - fiat_25519_cmovznz_u32(&x5, arg1, (arg2[4]), (arg3[4])); uint32_t x6; - fiat_25519_cmovznz_u32(&x6, arg1, (arg2[5]), (arg3[5])); uint32_t x7; - fiat_25519_cmovznz_u32(&x7, arg1, (arg2[6]), (arg3[6])); uint32_t x8; - fiat_25519_cmovznz_u32(&x8, arg1, (arg2[7]), (arg3[7])); uint32_t x9; - fiat_25519_cmovznz_u32(&x9, arg1, (arg2[8]), (arg3[8])); uint32_t x10; + fiat_25519_cmovznz_u32(&x1, arg1, (arg2[0]), (arg3[0])); + fiat_25519_cmovznz_u32(&x2, arg1, (arg2[1]), (arg3[1])); + fiat_25519_cmovznz_u32(&x3, arg1, (arg2[2]), (arg3[2])); + fiat_25519_cmovznz_u32(&x4, arg1, (arg2[3]), (arg3[3])); + fiat_25519_cmovznz_u32(&x5, arg1, (arg2[4]), (arg3[4])); + fiat_25519_cmovznz_u32(&x6, arg1, (arg2[5]), (arg3[5])); + fiat_25519_cmovznz_u32(&x7, arg1, (arg2[6]), (arg3[6])); + fiat_25519_cmovznz_u32(&x8, arg1, (arg2[7]), (arg3[7])); + fiat_25519_cmovznz_u32(&x9, arg1, (arg2[8]), (arg3[8])); fiat_25519_cmovznz_u32(&x10, arg1, (arg2[9]), (arg3[9])); out1[0] = x1; out1[1] = x2; @@ -637,336 +976,582 @@ /* * The function fiat_25519_to_bytes serializes a field element to bytes in little-endian order. + * * Postconditions: * out1 = map (λ x, ⌊((eval arg1 mod m) mod 2^(8 * (x + 1))) / 2^(8 * x)⌋) [0..31] * - * Input Bounds: - * arg1: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]] * Output Bounds: * out1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0x7f]] */ -static void fiat_25519_to_bytes(uint8_t out1[32], const uint32_t arg1[10]) { +static FIAT_25519_FIAT_INLINE void fiat_25519_to_bytes(uint8_t out1[32], const fiat_25519_tight_field_element arg1) { uint32_t x1; fiat_25519_uint1 x2; - fiat_25519_subborrowx_u26(&x1, &x2, 0x0, (arg1[0]), UINT32_C(0x3ffffed)); uint32_t x3; fiat_25519_uint1 x4; - fiat_25519_subborrowx_u25(&x3, &x4, x2, (arg1[1]), UINT32_C(0x1ffffff)); uint32_t x5; fiat_25519_uint1 x6; - fiat_25519_subborrowx_u26(&x5, &x6, x4, (arg1[2]), UINT32_C(0x3ffffff)); uint32_t x7; fiat_25519_uint1 x8; - fiat_25519_subborrowx_u25(&x7, &x8, x6, (arg1[3]), UINT32_C(0x1ffffff)); uint32_t x9; fiat_25519_uint1 x10; - fiat_25519_subborrowx_u26(&x9, &x10, x8, (arg1[4]), UINT32_C(0x3ffffff)); uint32_t x11; fiat_25519_uint1 x12; - fiat_25519_subborrowx_u25(&x11, &x12, x10, (arg1[5]), UINT32_C(0x1ffffff)); uint32_t x13; fiat_25519_uint1 x14; - fiat_25519_subborrowx_u26(&x13, &x14, x12, (arg1[6]), UINT32_C(0x3ffffff)); uint32_t x15; fiat_25519_uint1 x16; - fiat_25519_subborrowx_u25(&x15, &x16, x14, (arg1[7]), UINT32_C(0x1ffffff)); uint32_t x17; fiat_25519_uint1 x18; - fiat_25519_subborrowx_u26(&x17, &x18, x16, (arg1[8]), UINT32_C(0x3ffffff)); uint32_t x19; fiat_25519_uint1 x20; - fiat_25519_subborrowx_u25(&x19, &x20, x18, (arg1[9]), UINT32_C(0x1ffffff)); uint32_t x21; - fiat_25519_cmovznz_u32(&x21, x20, 0x0, UINT32_C(0xffffffff)); uint32_t x22; fiat_25519_uint1 x23; - fiat_25519_addcarryx_u26(&x22, &x23, 0x0, x1, (x21 & UINT32_C(0x3ffffed))); uint32_t x24; fiat_25519_uint1 x25; - fiat_25519_addcarryx_u25(&x24, &x25, x23, x3, (x21 & UINT32_C(0x1ffffff))); uint32_t x26; fiat_25519_uint1 x27; - fiat_25519_addcarryx_u26(&x26, &x27, x25, x5, (x21 & UINT32_C(0x3ffffff))); uint32_t x28; fiat_25519_uint1 x29; - fiat_25519_addcarryx_u25(&x28, &x29, x27, x7, (x21 & UINT32_C(0x1ffffff))); uint32_t x30; fiat_25519_uint1 x31; - fiat_25519_addcarryx_u26(&x30, &x31, x29, x9, (x21 & UINT32_C(0x3ffffff))); uint32_t x32; fiat_25519_uint1 x33; - fiat_25519_addcarryx_u25(&x32, &x33, x31, x11, (x21 & UINT32_C(0x1ffffff))); uint32_t x34; fiat_25519_uint1 x35; - fiat_25519_addcarryx_u26(&x34, &x35, x33, x13, (x21 & UINT32_C(0x3ffffff))); uint32_t x36; fiat_25519_uint1 x37; - fiat_25519_addcarryx_u25(&x36, &x37, x35, x15, (x21 & UINT32_C(0x1ffffff))); uint32_t x38; fiat_25519_uint1 x39; - fiat_25519_addcarryx_u26(&x38, &x39, x37, x17, (x21 & UINT32_C(0x3ffffff))); uint32_t x40; fiat_25519_uint1 x41; + uint32_t x42; + uint32_t x43; + uint32_t x44; + uint32_t x45; + uint32_t x46; + uint32_t x47; + uint32_t x48; + uint32_t x49; + uint8_t x50; + uint32_t x51; + uint8_t x52; + uint32_t x53; + uint8_t x54; + uint8_t x55; + uint32_t x56; + uint8_t x57; + uint32_t x58; + uint8_t x59; + uint32_t x60; + uint8_t x61; + uint8_t x62; + uint32_t x63; + uint8_t x64; + uint32_t x65; + uint8_t x66; + uint32_t x67; + uint8_t x68; + uint8_t x69; + uint32_t x70; + uint8_t x71; + uint32_t x72; + uint8_t x73; + uint32_t x74; + uint8_t x75; + uint8_t x76; + uint32_t x77; + uint8_t x78; + uint32_t x79; + uint8_t x80; + uint32_t x81; + uint8_t x82; + uint8_t x83; + uint8_t x84; + uint32_t x85; + uint8_t x86; + uint32_t x87; + uint8_t x88; + fiat_25519_uint1 x89; + uint32_t x90; + uint8_t x91; + uint32_t x92; + uint8_t x93; + uint32_t x94; + uint8_t x95; + uint8_t x96; + uint32_t x97; + uint8_t x98; + uint32_t x99; + uint8_t x100; + uint32_t x101; + uint8_t x102; + uint8_t x103; + uint32_t x104; + uint8_t x105; + uint32_t x106; + uint8_t x107; + uint32_t x108; + uint8_t x109; + uint8_t x110; + uint32_t x111; + uint8_t x112; + uint32_t x113; + uint8_t x114; + uint32_t x115; + uint8_t x116; + uint8_t x117; + fiat_25519_subborrowx_u26(&x1, &x2, 0x0, (arg1[0]), UINT32_C(0x3ffffed)); + fiat_25519_subborrowx_u25(&x3, &x4, x2, (arg1[1]), UINT32_C(0x1ffffff)); + fiat_25519_subborrowx_u26(&x5, &x6, x4, (arg1[2]), UINT32_C(0x3ffffff)); + fiat_25519_subborrowx_u25(&x7, &x8, x6, (arg1[3]), UINT32_C(0x1ffffff)); + fiat_25519_subborrowx_u26(&x9, &x10, x8, (arg1[4]), UINT32_C(0x3ffffff)); + fiat_25519_subborrowx_u25(&x11, &x12, x10, (arg1[5]), UINT32_C(0x1ffffff)); + fiat_25519_subborrowx_u26(&x13, &x14, x12, (arg1[6]), UINT32_C(0x3ffffff)); + fiat_25519_subborrowx_u25(&x15, &x16, x14, (arg1[7]), UINT32_C(0x1ffffff)); + fiat_25519_subborrowx_u26(&x17, &x18, x16, (arg1[8]), UINT32_C(0x3ffffff)); + fiat_25519_subborrowx_u25(&x19, &x20, x18, (arg1[9]), UINT32_C(0x1ffffff)); + fiat_25519_cmovznz_u32(&x21, x20, 0x0, UINT32_C(0xffffffff)); + fiat_25519_addcarryx_u26(&x22, &x23, 0x0, x1, (x21 & UINT32_C(0x3ffffed))); + fiat_25519_addcarryx_u25(&x24, &x25, x23, x3, (x21 & UINT32_C(0x1ffffff))); + fiat_25519_addcarryx_u26(&x26, &x27, x25, x5, (x21 & UINT32_C(0x3ffffff))); + fiat_25519_addcarryx_u25(&x28, &x29, x27, x7, (x21 & UINT32_C(0x1ffffff))); + fiat_25519_addcarryx_u26(&x30, &x31, x29, x9, (x21 & UINT32_C(0x3ffffff))); + fiat_25519_addcarryx_u25(&x32, &x33, x31, x11, (x21 & UINT32_C(0x1ffffff))); + fiat_25519_addcarryx_u26(&x34, &x35, x33, x13, (x21 & UINT32_C(0x3ffffff))); + fiat_25519_addcarryx_u25(&x36, &x37, x35, x15, (x21 & UINT32_C(0x1ffffff))); + fiat_25519_addcarryx_u26(&x38, &x39, x37, x17, (x21 & UINT32_C(0x3ffffff))); fiat_25519_addcarryx_u25(&x40, &x41, x39, x19, (x21 & UINT32_C(0x1ffffff))); - uint32_t x42 = (x40 << 6); - uint32_t x43 = (x38 << 4); - uint32_t x44 = (x36 << 3); - uint32_t x45 = (x34 * (uint32_t)0x2); - uint32_t x46 = (x30 << 6); - uint32_t x47 = (x28 << 5); - uint32_t x48 = (x26 << 3); - uint32_t x49 = (x24 << 2); - uint32_t x50 = (x22 >> 8); - uint8_t x51 = (uint8_t)(x22 & UINT8_C(0xff)); - uint32_t x52 = (x50 >> 8); - uint8_t x53 = (uint8_t)(x50 & UINT8_C(0xff)); - uint8_t x54 = (uint8_t)(x52 >> 8); - uint8_t x55 = (uint8_t)(x52 & UINT8_C(0xff)); - uint32_t x56 = (x54 + x49); - uint32_t x57 = (x56 >> 8); - uint8_t x58 = (uint8_t)(x56 & UINT8_C(0xff)); - uint32_t x59 = (x57 >> 8); - uint8_t x60 = (uint8_t)(x57 & UINT8_C(0xff)); - uint8_t x61 = (uint8_t)(x59 >> 8); - uint8_t x62 = (uint8_t)(x59 & UINT8_C(0xff)); - uint32_t x63 = (x61 + x48); - uint32_t x64 = (x63 >> 8); - uint8_t x65 = (uint8_t)(x63 & UINT8_C(0xff)); - uint32_t x66 = (x64 >> 8); - uint8_t x67 = (uint8_t)(x64 & UINT8_C(0xff)); - uint8_t x68 = (uint8_t)(x66 >> 8); - uint8_t x69 = (uint8_t)(x66 & UINT8_C(0xff)); - uint32_t x70 = (x68 + x47); - uint32_t x71 = (x70 >> 8); - uint8_t x72 = (uint8_t)(x70 & UINT8_C(0xff)); - uint32_t x73 = (x71 >> 8); - uint8_t x74 = (uint8_t)(x71 & UINT8_C(0xff)); - uint8_t x75 = (uint8_t)(x73 >> 8); - uint8_t x76 = (uint8_t)(x73 & UINT8_C(0xff)); - uint32_t x77 = (x75 + x46); - uint32_t x78 = (x77 >> 8); - uint8_t x79 = (uint8_t)(x77 & UINT8_C(0xff)); - uint32_t x80 = (x78 >> 8); - uint8_t x81 = (uint8_t)(x78 & UINT8_C(0xff)); - uint8_t x82 = (uint8_t)(x80 >> 8); - uint8_t x83 = (uint8_t)(x80 & UINT8_C(0xff)); - uint8_t x84 = (uint8_t)(x82 & UINT8_C(0xff)); - uint32_t x85 = (x32 >> 8); - uint8_t x86 = (uint8_t)(x32 & UINT8_C(0xff)); - uint32_t x87 = (x85 >> 8); - uint8_t x88 = (uint8_t)(x85 & UINT8_C(0xff)); - fiat_25519_uint1 x89 = (fiat_25519_uint1)(x87 >> 8); - uint8_t x90 = (uint8_t)(x87 & UINT8_C(0xff)); - uint32_t x91 = (x89 + x45); - uint32_t x92 = (x91 >> 8); - uint8_t x93 = (uint8_t)(x91 & UINT8_C(0xff)); - uint32_t x94 = (x92 >> 8); - uint8_t x95 = (uint8_t)(x92 & UINT8_C(0xff)); - uint8_t x96 = (uint8_t)(x94 >> 8); - uint8_t x97 = (uint8_t)(x94 & UINT8_C(0xff)); - uint32_t x98 = (x96 + x44); - uint32_t x99 = (x98 >> 8); - uint8_t x100 = (uint8_t)(x98 & UINT8_C(0xff)); - uint32_t x101 = (x99 >> 8); - uint8_t x102 = (uint8_t)(x99 & UINT8_C(0xff)); - uint8_t x103 = (uint8_t)(x101 >> 8); - uint8_t x104 = (uint8_t)(x101 & UINT8_C(0xff)); - uint32_t x105 = (x103 + x43); - uint32_t x106 = (x105 >> 8); - uint8_t x107 = (uint8_t)(x105 & UINT8_C(0xff)); - uint32_t x108 = (x106 >> 8); - uint8_t x109 = (uint8_t)(x106 & UINT8_C(0xff)); - uint8_t x110 = (uint8_t)(x108 >> 8); - uint8_t x111 = (uint8_t)(x108 & UINT8_C(0xff)); - uint32_t x112 = (x110 + x42); - uint32_t x113 = (x112 >> 8); - uint8_t x114 = (uint8_t)(x112 & UINT8_C(0xff)); - uint32_t x115 = (x113 >> 8); - uint8_t x116 = (uint8_t)(x113 & UINT8_C(0xff)); - uint8_t x117 = (uint8_t)(x115 >> 8); - uint8_t x118 = (uint8_t)(x115 & UINT8_C(0xff)); - out1[0] = x51; - out1[1] = x53; - out1[2] = x55; - out1[3] = x58; - out1[4] = x60; - out1[5] = x62; - out1[6] = x65; - out1[7] = x67; - out1[8] = x69; - out1[9] = x72; - out1[10] = x74; - out1[11] = x76; - out1[12] = x79; - out1[13] = x81; - out1[14] = x83; - out1[15] = x84; - out1[16] = x86; - out1[17] = x88; - out1[18] = x90; - out1[19] = x93; - out1[20] = x95; - out1[21] = x97; - out1[22] = x100; - out1[23] = x102; - out1[24] = x104; - out1[25] = x107; - out1[26] = x109; - out1[27] = x111; - out1[28] = x114; - out1[29] = x116; - out1[30] = x118; + x42 = (x40 << 6); + x43 = (x38 << 4); + x44 = (x36 << 3); + x45 = (x34 * (uint32_t)0x2); + x46 = (x30 << 6); + x47 = (x28 << 5); + x48 = (x26 << 3); + x49 = (x24 << 2); + x50 = (uint8_t)(x22 & UINT8_C(0xff)); + x51 = (x22 >> 8); + x52 = (uint8_t)(x51 & UINT8_C(0xff)); + x53 = (x51 >> 8); + x54 = (uint8_t)(x53 & UINT8_C(0xff)); + x55 = (uint8_t)(x53 >> 8); + x56 = (x49 + (uint32_t)x55); + x57 = (uint8_t)(x56 & UINT8_C(0xff)); + x58 = (x56 >> 8); + x59 = (uint8_t)(x58 & UINT8_C(0xff)); + x60 = (x58 >> 8); + x61 = (uint8_t)(x60 & UINT8_C(0xff)); + x62 = (uint8_t)(x60 >> 8); + x63 = (x48 + (uint32_t)x62); + x64 = (uint8_t)(x63 & UINT8_C(0xff)); + x65 = (x63 >> 8); + x66 = (uint8_t)(x65 & UINT8_C(0xff)); + x67 = (x65 >> 8); + x68 = (uint8_t)(x67 & UINT8_C(0xff)); + x69 = (uint8_t)(x67 >> 8); + x70 = (x47 + (uint32_t)x69); + x71 = (uint8_t)(x70 & UINT8_C(0xff)); + x72 = (x70 >> 8); + x73 = (uint8_t)(x72 & UINT8_C(0xff)); + x74 = (x72 >> 8); + x75 = (uint8_t)(x74 & UINT8_C(0xff)); + x76 = (uint8_t)(x74 >> 8); + x77 = (x46 + (uint32_t)x76); + x78 = (uint8_t)(x77 & UINT8_C(0xff)); + x79 = (x77 >> 8); + x80 = (uint8_t)(x79 & UINT8_C(0xff)); + x81 = (x79 >> 8); + x82 = (uint8_t)(x81 & UINT8_C(0xff)); + x83 = (uint8_t)(x81 >> 8); + x84 = (uint8_t)(x32 & UINT8_C(0xff)); + x85 = (x32 >> 8); + x86 = (uint8_t)(x85 & UINT8_C(0xff)); + x87 = (x85 >> 8); + x88 = (uint8_t)(x87 & UINT8_C(0xff)); + x89 = (fiat_25519_uint1)(x87 >> 8); + x90 = (x45 + (uint32_t)x89); + x91 = (uint8_t)(x90 & UINT8_C(0xff)); + x92 = (x90 >> 8); + x93 = (uint8_t)(x92 & UINT8_C(0xff)); + x94 = (x92 >> 8); + x95 = (uint8_t)(x94 & UINT8_C(0xff)); + x96 = (uint8_t)(x94 >> 8); + x97 = (x44 + (uint32_t)x96); + x98 = (uint8_t)(x97 & UINT8_C(0xff)); + x99 = (x97 >> 8); + x100 = (uint8_t)(x99 & UINT8_C(0xff)); + x101 = (x99 >> 8); + x102 = (uint8_t)(x101 & UINT8_C(0xff)); + x103 = (uint8_t)(x101 >> 8); + x104 = (x43 + (uint32_t)x103); + x105 = (uint8_t)(x104 & UINT8_C(0xff)); + x106 = (x104 >> 8); + x107 = (uint8_t)(x106 & UINT8_C(0xff)); + x108 = (x106 >> 8); + x109 = (uint8_t)(x108 & UINT8_C(0xff)); + x110 = (uint8_t)(x108 >> 8); + x111 = (x42 + (uint32_t)x110); + x112 = (uint8_t)(x111 & UINT8_C(0xff)); + x113 = (x111 >> 8); + x114 = (uint8_t)(x113 & UINT8_C(0xff)); + x115 = (x113 >> 8); + x116 = (uint8_t)(x115 & UINT8_C(0xff)); + x117 = (uint8_t)(x115 >> 8); + out1[0] = x50; + out1[1] = x52; + out1[2] = x54; + out1[3] = x57; + out1[4] = x59; + out1[5] = x61; + out1[6] = x64; + out1[7] = x66; + out1[8] = x68; + out1[9] = x71; + out1[10] = x73; + out1[11] = x75; + out1[12] = x78; + out1[13] = x80; + out1[14] = x82; + out1[15] = x83; + out1[16] = x84; + out1[17] = x86; + out1[18] = x88; + out1[19] = x91; + out1[20] = x93; + out1[21] = x95; + out1[22] = x98; + out1[23] = x100; + out1[24] = x102; + out1[25] = x105; + out1[26] = x107; + out1[27] = x109; + out1[28] = x112; + out1[29] = x114; + out1[30] = x116; out1[31] = x117; } /* * The function fiat_25519_from_bytes deserializes a field element from bytes in little-endian order. + * * Postconditions: * eval out1 mod m = bytes_eval arg1 mod m * * Input Bounds: * arg1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0x7f]] - * Output Bounds: - * out1: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]] */ -static void fiat_25519_from_bytes(uint32_t out1[10], const uint8_t arg1[32]) { - uint32_t x1 = ((uint32_t)(arg1[31]) << 18); - uint32_t x2 = ((uint32_t)(arg1[30]) << 10); - uint32_t x3 = ((uint32_t)(arg1[29]) << 2); - uint32_t x4 = ((uint32_t)(arg1[28]) << 20); - uint32_t x5 = ((uint32_t)(arg1[27]) << 12); - uint32_t x6 = ((uint32_t)(arg1[26]) << 4); - uint32_t x7 = ((uint32_t)(arg1[25]) << 21); - uint32_t x8 = ((uint32_t)(arg1[24]) << 13); - uint32_t x9 = ((uint32_t)(arg1[23]) << 5); - uint32_t x10 = ((uint32_t)(arg1[22]) << 23); - uint32_t x11 = ((uint32_t)(arg1[21]) << 15); - uint32_t x12 = ((uint32_t)(arg1[20]) << 7); - uint32_t x13 = ((uint32_t)(arg1[19]) << 24); - uint32_t x14 = ((uint32_t)(arg1[18]) << 16); - uint32_t x15 = ((uint32_t)(arg1[17]) << 8); - uint8_t x16 = (arg1[16]); - uint32_t x17 = ((uint32_t)(arg1[15]) << 18); - uint32_t x18 = ((uint32_t)(arg1[14]) << 10); - uint32_t x19 = ((uint32_t)(arg1[13]) << 2); - uint32_t x20 = ((uint32_t)(arg1[12]) << 19); - uint32_t x21 = ((uint32_t)(arg1[11]) << 11); - uint32_t x22 = ((uint32_t)(arg1[10]) << 3); - uint32_t x23 = ((uint32_t)(arg1[9]) << 21); - uint32_t x24 = ((uint32_t)(arg1[8]) << 13); - uint32_t x25 = ((uint32_t)(arg1[7]) << 5); - uint32_t x26 = ((uint32_t)(arg1[6]) << 22); - uint32_t x27 = ((uint32_t)(arg1[5]) << 14); - uint32_t x28 = ((uint32_t)(arg1[4]) << 6); - uint32_t x29 = ((uint32_t)(arg1[3]) << 24); - uint32_t x30 = ((uint32_t)(arg1[2]) << 16); - uint32_t x31 = ((uint32_t)(arg1[1]) << 8); - uint8_t x32 = (arg1[0]); - uint32_t x33 = (x32 + (x31 + (x30 + x29))); - uint8_t x34 = (uint8_t)(x33 >> 26); - uint32_t x35 = (x33 & UINT32_C(0x3ffffff)); - uint32_t x36 = (x3 + (x2 + x1)); - uint32_t x37 = (x6 + (x5 + x4)); - uint32_t x38 = (x9 + (x8 + x7)); - uint32_t x39 = (x12 + (x11 + x10)); - uint32_t x40 = (x16 + (x15 + (x14 + x13))); - uint32_t x41 = (x19 + (x18 + x17)); - uint32_t x42 = (x22 + (x21 + x20)); - uint32_t x43 = (x25 + (x24 + x23)); - uint32_t x44 = (x28 + (x27 + x26)); - uint32_t x45 = (x34 + x44); - uint8_t x46 = (uint8_t)(x45 >> 25); - uint32_t x47 = (x45 & UINT32_C(0x1ffffff)); - uint32_t x48 = (x46 + x43); - uint8_t x49 = (uint8_t)(x48 >> 26); - uint32_t x50 = (x48 & UINT32_C(0x3ffffff)); - uint32_t x51 = (x49 + x42); - uint8_t x52 = (uint8_t)(x51 >> 25); - uint32_t x53 = (x51 & UINT32_C(0x1ffffff)); - uint32_t x54 = (x52 + x41); - uint32_t x55 = (x54 & UINT32_C(0x3ffffff)); - uint8_t x56 = (uint8_t)(x40 >> 25); - uint32_t x57 = (x40 & UINT32_C(0x1ffffff)); - uint32_t x58 = (x56 + x39); - uint8_t x59 = (uint8_t)(x58 >> 26); - uint32_t x60 = (x58 & UINT32_C(0x3ffffff)); - uint32_t x61 = (x59 + x38); - uint8_t x62 = (uint8_t)(x61 >> 25); - uint32_t x63 = (x61 & UINT32_C(0x1ffffff)); - uint32_t x64 = (x62 + x37); - uint8_t x65 = (uint8_t)(x64 >> 26); - uint32_t x66 = (x64 & UINT32_C(0x3ffffff)); - uint32_t x67 = (x65 + x36); - out1[0] = x35; - out1[1] = x47; - out1[2] = x50; - out1[3] = x53; +static FIAT_25519_FIAT_INLINE void fiat_25519_from_bytes(fiat_25519_tight_field_element out1, const uint8_t arg1[32]) { + uint32_t x1; + uint32_t x2; + uint32_t x3; + uint32_t x4; + uint32_t x5; + uint32_t x6; + uint32_t x7; + uint32_t x8; + uint32_t x9; + uint32_t x10; + uint32_t x11; + uint32_t x12; + uint32_t x13; + uint32_t x14; + uint32_t x15; + uint8_t x16; + uint32_t x17; + uint32_t x18; + uint32_t x19; + uint32_t x20; + uint32_t x21; + uint32_t x22; + uint32_t x23; + uint32_t x24; + uint32_t x25; + uint32_t x26; + uint32_t x27; + uint32_t x28; + uint32_t x29; + uint32_t x30; + uint32_t x31; + uint8_t x32; + uint32_t x33; + uint32_t x34; + uint32_t x35; + uint32_t x36; + uint8_t x37; + uint32_t x38; + uint32_t x39; + uint32_t x40; + uint32_t x41; + uint8_t x42; + uint32_t x43; + uint32_t x44; + uint32_t x45; + uint32_t x46; + uint8_t x47; + uint32_t x48; + uint32_t x49; + uint32_t x50; + uint32_t x51; + uint8_t x52; + uint32_t x53; + uint32_t x54; + uint32_t x55; + uint32_t x56; + uint32_t x57; + uint32_t x58; + uint32_t x59; + uint8_t x60; + uint32_t x61; + uint32_t x62; + uint32_t x63; + uint32_t x64; + uint8_t x65; + uint32_t x66; + uint32_t x67; + uint32_t x68; + uint32_t x69; + uint8_t x70; + uint32_t x71; + uint32_t x72; + uint32_t x73; + uint32_t x74; + uint8_t x75; + uint32_t x76; + uint32_t x77; + uint32_t x78; + x1 = ((uint32_t)(arg1[31]) << 18); + x2 = ((uint32_t)(arg1[30]) << 10); + x3 = ((uint32_t)(arg1[29]) << 2); + x4 = ((uint32_t)(arg1[28]) << 20); + x5 = ((uint32_t)(arg1[27]) << 12); + x6 = ((uint32_t)(arg1[26]) << 4); + x7 = ((uint32_t)(arg1[25]) << 21); + x8 = ((uint32_t)(arg1[24]) << 13); + x9 = ((uint32_t)(arg1[23]) << 5); + x10 = ((uint32_t)(arg1[22]) << 23); + x11 = ((uint32_t)(arg1[21]) << 15); + x12 = ((uint32_t)(arg1[20]) << 7); + x13 = ((uint32_t)(arg1[19]) << 24); + x14 = ((uint32_t)(arg1[18]) << 16); + x15 = ((uint32_t)(arg1[17]) << 8); + x16 = (arg1[16]); + x17 = ((uint32_t)(arg1[15]) << 18); + x18 = ((uint32_t)(arg1[14]) << 10); + x19 = ((uint32_t)(arg1[13]) << 2); + x20 = ((uint32_t)(arg1[12]) << 19); + x21 = ((uint32_t)(arg1[11]) << 11); + x22 = ((uint32_t)(arg1[10]) << 3); + x23 = ((uint32_t)(arg1[9]) << 21); + x24 = ((uint32_t)(arg1[8]) << 13); + x25 = ((uint32_t)(arg1[7]) << 5); + x26 = ((uint32_t)(arg1[6]) << 22); + x27 = ((uint32_t)(arg1[5]) << 14); + x28 = ((uint32_t)(arg1[4]) << 6); + x29 = ((uint32_t)(arg1[3]) << 24); + x30 = ((uint32_t)(arg1[2]) << 16); + x31 = ((uint32_t)(arg1[1]) << 8); + x32 = (arg1[0]); + x33 = (x31 + (uint32_t)x32); + x34 = (x30 + x33); + x35 = (x29 + x34); + x36 = (x35 & UINT32_C(0x3ffffff)); + x37 = (uint8_t)(x35 >> 26); + x38 = (x28 + (uint32_t)x37); + x39 = (x27 + x38); + x40 = (x26 + x39); + x41 = (x40 & UINT32_C(0x1ffffff)); + x42 = (uint8_t)(x40 >> 25); + x43 = (x25 + (uint32_t)x42); + x44 = (x24 + x43); + x45 = (x23 + x44); + x46 = (x45 & UINT32_C(0x3ffffff)); + x47 = (uint8_t)(x45 >> 26); + x48 = (x22 + (uint32_t)x47); + x49 = (x21 + x48); + x50 = (x20 + x49); + x51 = (x50 & UINT32_C(0x1ffffff)); + x52 = (uint8_t)(x50 >> 25); + x53 = (x19 + (uint32_t)x52); + x54 = (x18 + x53); + x55 = (x17 + x54); + x56 = (x15 + (uint32_t)x16); + x57 = (x14 + x56); + x58 = (x13 + x57); + x59 = (x58 & UINT32_C(0x1ffffff)); + x60 = (uint8_t)(x58 >> 25); + x61 = (x12 + (uint32_t)x60); + x62 = (x11 + x61); + x63 = (x10 + x62); + x64 = (x63 & UINT32_C(0x3ffffff)); + x65 = (uint8_t)(x63 >> 26); + x66 = (x9 + (uint32_t)x65); + x67 = (x8 + x66); + x68 = (x7 + x67); + x69 = (x68 & UINT32_C(0x1ffffff)); + x70 = (uint8_t)(x68 >> 25); + x71 = (x6 + (uint32_t)x70); + x72 = (x5 + x71); + x73 = (x4 + x72); + x74 = (x73 & UINT32_C(0x3ffffff)); + x75 = (uint8_t)(x73 >> 26); + x76 = (x3 + (uint32_t)x75); + x77 = (x2 + x76); + x78 = (x1 + x77); + out1[0] = x36; + out1[1] = x41; + out1[2] = x46; + out1[3] = x51; out1[4] = x55; - out1[5] = x57; - out1[6] = x60; - out1[7] = x63; - out1[8] = x66; - out1[9] = x67; + out1[5] = x59; + out1[6] = x64; + out1[7] = x69; + out1[8] = x74; + out1[9] = x78; +} + +/* + * The function fiat_25519_relax is the identity function converting from tight field elements to loose field elements. + * + * Postconditions: + * out1 = arg1 + * + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_relax(fiat_25519_loose_field_element out1, const fiat_25519_tight_field_element arg1) { + uint32_t x1; + uint32_t x2; + uint32_t x3; + uint32_t x4; + uint32_t x5; + uint32_t x6; + uint32_t x7; + uint32_t x8; + uint32_t x9; + uint32_t x10; + x1 = (arg1[0]); + x2 = (arg1[1]); + x3 = (arg1[2]); + x4 = (arg1[3]); + x5 = (arg1[4]); + x6 = (arg1[5]); + x7 = (arg1[6]); + x8 = (arg1[7]); + x9 = (arg1[8]); + x10 = (arg1[9]); + out1[0] = x1; + out1[1] = x2; + out1[2] = x3; + out1[3] = x4; + out1[4] = x5; + out1[5] = x6; + out1[6] = x7; + out1[7] = x8; + out1[8] = x9; + out1[9] = x10; } /* * The function fiat_25519_carry_scmul_121666 multiplies a field element by 121666 and reduces the result. + * * Postconditions: * eval out1 mod m = (121666 * eval arg1) mod m * - * Input Bounds: - * arg1: [[0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999]] - * Output Bounds: - * out1: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]] */ -static void fiat_25519_carry_scmul_121666(uint32_t out1[10], const uint32_t arg1[10]) { - uint64_t x1 = ((uint64_t)UINT32_C(0x1db42) * (arg1[9])); - uint64_t x2 = ((uint64_t)UINT32_C(0x1db42) * (arg1[8])); - uint64_t x3 = ((uint64_t)UINT32_C(0x1db42) * (arg1[7])); - uint64_t x4 = ((uint64_t)UINT32_C(0x1db42) * (arg1[6])); - uint64_t x5 = ((uint64_t)UINT32_C(0x1db42) * (arg1[5])); - uint64_t x6 = ((uint64_t)UINT32_C(0x1db42) * (arg1[4])); - uint64_t x7 = ((uint64_t)UINT32_C(0x1db42) * (arg1[3])); - uint64_t x8 = ((uint64_t)UINT32_C(0x1db42) * (arg1[2])); - uint64_t x9 = ((uint64_t)UINT32_C(0x1db42) * (arg1[1])); - uint64_t x10 = ((uint64_t)UINT32_C(0x1db42) * (arg1[0])); - uint32_t x11 = (uint32_t)(x10 >> 26); - uint32_t x12 = (uint32_t)(x10 & UINT32_C(0x3ffffff)); - uint64_t x13 = (x11 + x9); - uint32_t x14 = (uint32_t)(x13 >> 25); - uint32_t x15 = (uint32_t)(x13 & UINT32_C(0x1ffffff)); - uint64_t x16 = (x14 + x8); - uint32_t x17 = (uint32_t)(x16 >> 26); - uint32_t x18 = (uint32_t)(x16 & UINT32_C(0x3ffffff)); - uint64_t x19 = (x17 + x7); - uint32_t x20 = (uint32_t)(x19 >> 25); - uint32_t x21 = (uint32_t)(x19 & UINT32_C(0x1ffffff)); - uint64_t x22 = (x20 + x6); - uint32_t x23 = (uint32_t)(x22 >> 26); - uint32_t x24 = (uint32_t)(x22 & UINT32_C(0x3ffffff)); - uint64_t x25 = (x23 + x5); - uint32_t x26 = (uint32_t)(x25 >> 25); - uint32_t x27 = (uint32_t)(x25 & UINT32_C(0x1ffffff)); - uint64_t x28 = (x26 + x4); - uint32_t x29 = (uint32_t)(x28 >> 26); - uint32_t x30 = (uint32_t)(x28 & UINT32_C(0x3ffffff)); - uint64_t x31 = (x29 + x3); - uint32_t x32 = (uint32_t)(x31 >> 25); - uint32_t x33 = (uint32_t)(x31 & UINT32_C(0x1ffffff)); - uint64_t x34 = (x32 + x2); - uint32_t x35 = (uint32_t)(x34 >> 26); - uint32_t x36 = (uint32_t)(x34 & UINT32_C(0x3ffffff)); - uint64_t x37 = (x35 + x1); - uint32_t x38 = (uint32_t)(x37 >> 25); - uint32_t x39 = (uint32_t)(x37 & UINT32_C(0x1ffffff)); - uint32_t x40 = (x38 * UINT8_C(0x13)); - uint32_t x41 = (x12 + x40); - fiat_25519_uint1 x42 = (fiat_25519_uint1)(x41 >> 26); - uint32_t x43 = (x41 & UINT32_C(0x3ffffff)); - uint32_t x44 = (x42 + x15); - fiat_25519_uint1 x45 = (fiat_25519_uint1)(x44 >> 25); - uint32_t x46 = (x44 & UINT32_C(0x1ffffff)); - uint32_t x47 = (x45 + x18); +static FIAT_25519_FIAT_INLINE void fiat_25519_carry_scmul_121666(fiat_25519_tight_field_element out1, const fiat_25519_loose_field_element arg1) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + uint64_t x9; + uint64_t x10; + uint32_t x11; + uint32_t x12; + uint64_t x13; + uint32_t x14; + uint32_t x15; + uint64_t x16; + uint32_t x17; + uint32_t x18; + uint64_t x19; + uint32_t x20; + uint32_t x21; + uint64_t x22; + uint32_t x23; + uint32_t x24; + uint64_t x25; + uint32_t x26; + uint32_t x27; + uint64_t x28; + uint32_t x29; + uint32_t x30; + uint64_t x31; + uint32_t x32; + uint32_t x33; + uint64_t x34; + uint32_t x35; + uint32_t x36; + uint64_t x37; + uint32_t x38; + uint32_t x39; + uint32_t x40; + uint32_t x41; + fiat_25519_uint1 x42; + uint32_t x43; + uint32_t x44; + fiat_25519_uint1 x45; + uint32_t x46; + uint32_t x47; + x1 = ((uint64_t)UINT32_C(0x1db42) * (arg1[9])); + x2 = ((uint64_t)UINT32_C(0x1db42) * (arg1[8])); + x3 = ((uint64_t)UINT32_C(0x1db42) * (arg1[7])); + x4 = ((uint64_t)UINT32_C(0x1db42) * (arg1[6])); + x5 = ((uint64_t)UINT32_C(0x1db42) * (arg1[5])); + x6 = ((uint64_t)UINT32_C(0x1db42) * (arg1[4])); + x7 = ((uint64_t)UINT32_C(0x1db42) * (arg1[3])); + x8 = ((uint64_t)UINT32_C(0x1db42) * (arg1[2])); + x9 = ((uint64_t)UINT32_C(0x1db42) * (arg1[1])); + x10 = ((uint64_t)UINT32_C(0x1db42) * (arg1[0])); + x11 = (uint32_t)(x10 >> 26); + x12 = (uint32_t)(x10 & UINT32_C(0x3ffffff)); + x13 = (x11 + x9); + x14 = (uint32_t)(x13 >> 25); + x15 = (uint32_t)(x13 & UINT32_C(0x1ffffff)); + x16 = (x14 + x8); + x17 = (uint32_t)(x16 >> 26); + x18 = (uint32_t)(x16 & UINT32_C(0x3ffffff)); + x19 = (x17 + x7); + x20 = (uint32_t)(x19 >> 25); + x21 = (uint32_t)(x19 & UINT32_C(0x1ffffff)); + x22 = (x20 + x6); + x23 = (uint32_t)(x22 >> 26); + x24 = (uint32_t)(x22 & UINT32_C(0x3ffffff)); + x25 = (x23 + x5); + x26 = (uint32_t)(x25 >> 25); + x27 = (uint32_t)(x25 & UINT32_C(0x1ffffff)); + x28 = (x26 + x4); + x29 = (uint32_t)(x28 >> 26); + x30 = (uint32_t)(x28 & UINT32_C(0x3ffffff)); + x31 = (x29 + x3); + x32 = (uint32_t)(x31 >> 25); + x33 = (uint32_t)(x31 & UINT32_C(0x1ffffff)); + x34 = (x32 + x2); + x35 = (uint32_t)(x34 >> 26); + x36 = (uint32_t)(x34 & UINT32_C(0x3ffffff)); + x37 = (x35 + x1); + x38 = (uint32_t)(x37 >> 25); + x39 = (uint32_t)(x37 & UINT32_C(0x1ffffff)); + x40 = (x38 * UINT8_C(0x13)); + x41 = (x12 + x40); + x42 = (fiat_25519_uint1)(x41 >> 26); + x43 = (x41 & UINT32_C(0x3ffffff)); + x44 = (x42 + x15); + x45 = (fiat_25519_uint1)(x44 >> 25); + x46 = (x44 & UINT32_C(0x1ffffff)); + x47 = (x45 + x18); out1[0] = x43; out1[1] = x46; out1[2] = x47; @@ -978,4 +1563,3 @@ out1[8] = x36; out1[9] = x39; } - diff -Nru temporalio-1.3.0/vendor/ring/third_party/fiat/curve25519_64_adx.h temporalio-1.3.0/vendor/ring/third_party/fiat/curve25519_64_adx.h --- temporalio-1.3.0/vendor/ring/third_party/fiat/curve25519_64_adx.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/third_party/fiat/curve25519_64_adx.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,693 @@ +#include +#include +#include +#include + +typedef uint64_t fe4[4]; +typedef uint8_t fiat_uint1; +typedef int8_t fiat_int1; + +static __inline__ uint64_t fiat_value_barrier_u64(uint64_t a) { + __asm__("" : "+r"(a) : /* no inputs */); + return a; +} + +__attribute__((target("adx,bmi2"))) +static inline void fe4_mul(fe4 out, const fe4 x, const fe4 y) { fiat_curve25519_adx_mul(out, x, y); } + +__attribute__((target("adx,bmi2"))) +static inline void fe4_sq(fe4 out, const fe4 x) { fiat_curve25519_adx_square(out, x); } + +/* + * The function fiat_mulx_u64 is a multiplication, returning the full double-width result. + * + * Postconditions: + * out1 = (arg1 * arg2) mod 2^64 + * out2 = ⌊arg1 * arg2 / 2^64⌋ + * + * Input Bounds: + * arg1: [0x0 ~> 0xffffffffffffffff] + * arg2: [0x0 ~> 0xffffffffffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + * out2: [0x0 ~> 0xffffffffffffffff] + */ +__attribute__((target("adx,bmi2"))) +static inline void fiat_mulx_u64(uint64_t* out1, uint64_t* out2, uint64_t arg1, uint64_t arg2) { +// NOTE: edited after generation +#if defined(_M_X64) + unsigned long long t; + *out1 = _umul128(arg1, arg2, &t); + *out2 = t; +#elif defined(_M_ARM64) + *out1 = arg1 * arg2; + *out2 = __umulh(arg1, arg2); +#else + unsigned __int128 t = (unsigned __int128)arg1 * arg2; + *out1 = t; + *out2 = (t >> 64); +#endif +} + +/* + * The function fiat_addcarryx_u64 is an addition with carry. + * + * Postconditions: + * out1 = (arg1 + arg2 + arg3) mod 2^64 + * out2 = ⌊(arg1 + arg2 + arg3) / 2^64⌋ + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [0x0 ~> 0xffffffffffffffff] + * arg3: [0x0 ~> 0xffffffffffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + * out2: [0x0 ~> 0x1] + */ +__attribute__((target("adx,bmi2"))) +static inline void fiat_addcarryx_u64(uint64_t* out1, fiat_uint1* out2, fiat_uint1 arg1, uint64_t arg2, uint64_t arg3) { +// NOTE: edited after generation +#if defined(__has_builtin) +# if __has_builtin(__builtin_ia32_addcarryx_u64) +# define addcarry64 __builtin_ia32_addcarryx_u64 +# endif +#endif +#if defined(addcarry64) + long long unsigned int t; + *out2 = addcarry64(arg1, arg2, arg3, &t); + *out1 = t; +#elif defined(_M_X64) + long long unsigned int t; + *out2 = _addcarry_u64(arg1, arg2, arg3, out1); + *out1 = t; +#else + arg2 += arg1; + arg1 = arg2 < arg1; + uint64_t ret = arg2 + arg3; + arg1 += ret < arg2; + *out1 = ret; + *out2 = arg1; +#endif +#undef addcarry64 +} + +/* + * The function fiat_subborrowx_u64 is a subtraction with borrow. + * + * Postconditions: + * out1 = (-arg1 + arg2 + -arg3) mod 2^64 + * out2 = -⌊(-arg1 + arg2 + -arg3) / 2^64⌋ + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [0x0 ~> 0xffffffffffffffff] + * arg3: [0x0 ~> 0xffffffffffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + * out2: [0x0 ~> 0x1] + */ +__attribute__((target("adx,bmi2"))) +static inline void fiat_subborrowx_u64(uint64_t* out1, fiat_uint1* out2, fiat_uint1 arg1, uint64_t arg2, uint64_t arg3) { +#if defined(__has_builtin) +# if __has_builtin(__builtin_ia32_subborrow_u64) +# define subborrow64 __builtin_ia32_subborrow_u64 +# endif +#endif +#if defined(subborrow64) + long long unsigned int t; + *out2 = subborrow64(arg1, arg2, arg3, &t); + *out1 = t; +#elif defined(_M_X64) + long long unsigned int t; + *out2 = _subborrow_u64(arg1, arg2, arg3, &t); // NOTE: edited after generation + *out1 = t; +#else + *out1 = arg2 - arg3 - arg1; + *out2 = (arg2 < arg3) | ((arg2 == arg3) & arg1); +#endif +#undef subborrow64 +} + +/* + * The function fiat_cmovznz_u64 is a single-word conditional move. + * + * Postconditions: + * out1 = (if arg1 = 0 then arg2 else arg3) + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [0x0 ~> 0xffffffffffffffff] + * arg3: [0x0 ~> 0xffffffffffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + */ +__attribute__((target("adx,bmi2"))) +static inline void fiat_cmovznz_u64(uint64_t* out1, fiat_uint1 arg1, uint64_t arg2, uint64_t arg3) { + fiat_uint1 x1; + uint64_t x2; + uint64_t x3; + x1 = (!(!arg1)); + x2 = ((fiat_int1)(0x0 - x1) & UINT64_C(0xffffffffffffffff)); + x3 = ((fiat_value_barrier_u64(x2) & arg3) | (fiat_value_barrier_u64((~x2)) & arg2)); + *out1 = x3; +} + +/* + * Input Bounds: + * arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * Output Bounds: + * out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + */ +__attribute__((target("adx,bmi2"))) +static void fe4_add(uint64_t out1[4], const uint64_t arg1[4], const uint64_t arg2[4]) { + uint64_t x1; + fiat_uint1 x2; + uint64_t x3; + fiat_uint1 x4; + uint64_t x5; + fiat_uint1 x6; + uint64_t x7; + fiat_uint1 x8; + uint64_t x9; + uint64_t x10; + fiat_uint1 x11; + uint64_t x12; + fiat_uint1 x13; + uint64_t x14; + fiat_uint1 x15; + uint64_t x16; + fiat_uint1 x17; + uint64_t x18; + uint64_t x19; + fiat_uint1 x20; + fiat_addcarryx_u64(&x1, &x2, 0x0, (arg1[0]), (arg2[0])); + fiat_addcarryx_u64(&x3, &x4, x2, (arg1[1]), (arg2[1])); + fiat_addcarryx_u64(&x5, &x6, x4, (arg1[2]), (arg2[2])); + fiat_addcarryx_u64(&x7, &x8, x6, (arg1[3]), (arg2[3])); + fiat_cmovznz_u64(&x9, x8, 0x0, UINT8_C(0x26)); // NOTE: clang 14 for Zen 2 uses sbb, and + fiat_addcarryx_u64(&x10, &x11, 0x0, x1, x9); + fiat_addcarryx_u64(&x12, &x13, x11, x3, 0x0); + fiat_addcarryx_u64(&x14, &x15, x13, x5, 0x0); + fiat_addcarryx_u64(&x16, &x17, x15, x7, 0x0); + fiat_cmovznz_u64(&x18, x17, 0x0, UINT8_C(0x26)); // NOTE: clang 14 for Zen 2 uses sbb, and + fiat_addcarryx_u64(&x19, &x20, 0x0, x10, x18); + out1[0] = x19; + out1[1] = x12; + out1[2] = x14; + out1[3] = x16; +} + +/* + * Input Bounds: + * arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * Output Bounds: + * out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + */ +__attribute__((target("adx,bmi2"))) +static void fe4_sub(uint64_t out1[4], const uint64_t arg1[4], const uint64_t arg2[4]) { + uint64_t x1; + uint64_t x2; + fiat_uint1 x3; + uint64_t x4; + uint64_t x5; + fiat_uint1 x6; + uint64_t x7; + uint64_t x8; + fiat_uint1 x9; + uint64_t x10; + uint64_t x11; + fiat_uint1 x12; + uint64_t x13; + uint64_t x14; + fiat_uint1 x15; + uint64_t x16; + fiat_uint1 x17; + uint64_t x18; + fiat_uint1 x19; + uint64_t x20; + fiat_uint1 x21; + uint64_t x22; + uint64_t x23; + fiat_uint1 x24; + x1 = (arg2[0]); + fiat_subborrowx_u64(&x2, &x3, 0x0, (arg1[0]), x1); + x4 = (arg2[1]); + fiat_subborrowx_u64(&x5, &x6, x3, (arg1[1]), x4); + x7 = (arg2[2]); + fiat_subborrowx_u64(&x8, &x9, x6, (arg1[2]), x7); + x10 = (arg2[3]); + fiat_subborrowx_u64(&x11, &x12, x9, (arg1[3]), x10); + fiat_cmovznz_u64(&x13, x12, 0x0, UINT8_C(0x26)); // NOTE: clang 14 for Zen 2 uses sbb, and + fiat_subborrowx_u64(&x14, &x15, 0x0, x2, x13); + fiat_subborrowx_u64(&x16, &x17, x15, x5, 0x0); + fiat_subborrowx_u64(&x18, &x19, x17, x8, 0x0); + fiat_subborrowx_u64(&x20, &x21, x19, x11, 0x0); + fiat_cmovznz_u64(&x22, x21, 0x0, UINT8_C(0x26)); // NOTE: clang 14 for Zen 2 uses sbb, and + fiat_subborrowx_u64(&x23, &x24, 0x0, x14, x22); + out1[0] = x23; + out1[1] = x16; + out1[2] = x18; + out1[3] = x20; +} + +/* + * Input Bounds: + * arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * arg2: [0x0 ~> 0x3ffffffffffffff] // NOTE: this is not any uint64! + * Output Bounds: + * out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + */ +__attribute__((target("adx,bmi2"))) +static void fe4_scmul(uint64_t out1[4], const uint64_t arg1[4], uint64_t arg2) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + fiat_uint1 x6; + uint64_t x7; + uint64_t x8; + uint64_t x9; + fiat_uint1 x10; + uint64_t x11; + uint64_t x12; + uint64_t x13; + fiat_uint1 x14; + uint64_t x15; + uint64_t x16; + uint64_t x17; + fiat_uint1 x18; + uint64_t x19; + fiat_uint1 x20; + uint64_t x21; + fiat_uint1 x22; + uint64_t x23; + fiat_uint1 x24; + uint64_t x25; + uint64_t x26; + fiat_uint1 x27; + fiat_mulx_u64(&x1, &x2, (arg1[0]), arg2); + fiat_mulx_u64(&x3, &x4, (arg1[1]), arg2); + fiat_addcarryx_u64(&x5, &x6, 0x0, x2, x3); + fiat_mulx_u64(&x7, &x8, (arg1[2]), arg2); + fiat_addcarryx_u64(&x9, &x10, x6, x4, x7); + fiat_mulx_u64(&x11, &x12, (arg1[3]), arg2); + fiat_addcarryx_u64(&x13, &x14, x10, x8, x11); + fiat_mulx_u64(&x15, &x16, (x12 + (uint64_t)x14), UINT8_C(0x26)); + fiat_addcarryx_u64(&x17, &x18, 0x0, x1, x15); + fiat_addcarryx_u64(&x19, &x20, x18, x5, 0x0); + fiat_addcarryx_u64(&x21, &x22, x20, x9, 0x0); + fiat_addcarryx_u64(&x23, &x24, x22, x13, 0x0); + fiat_cmovznz_u64(&x25, x24, 0x0, UINT8_C(0x26)); // NOTE: clang 14 for Zen 2 uses sbb, and + fiat_addcarryx_u64(&x26, &x27, 0x0, x17, x25); + out1[0] = x26; + out1[1] = x19; + out1[2] = x21; + out1[3] = x23; +} + +/* + * Input Bounds: + * arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * Output Bounds: + * out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + */ +__attribute__((target("adx,bmi2"))) +static void fe4_canon(uint64_t out1[4], const uint64_t arg1[4]) { + uint64_t x1; + fiat_uint1 x2; + uint64_t x3; + fiat_uint1 x4; + uint64_t x5; + fiat_uint1 x6; + uint64_t x7; + fiat_uint1 x8; + uint64_t x9; + uint64_t x10; + uint64_t x11; + uint64_t x12; + uint64_t x13; + fiat_uint1 x14; + uint64_t x15; + fiat_uint1 x16; + uint64_t x17; + fiat_uint1 x18; + uint64_t x19; + fiat_uint1 x20; + uint64_t x21; + uint64_t x22; + uint64_t x23; + uint64_t x24; + fiat_subborrowx_u64(&x1, &x2, 0x0, (arg1[0]), UINT64_C(0xffffffffffffffed)); + fiat_subborrowx_u64(&x3, &x4, x2, (arg1[1]), UINT64_C(0xffffffffffffffff)); + fiat_subborrowx_u64(&x5, &x6, x4, (arg1[2]), UINT64_C(0xffffffffffffffff)); + fiat_subborrowx_u64(&x7, &x8, x6, (arg1[3]), UINT64_C(0x7fffffffffffffff)); + fiat_cmovznz_u64(&x9, x8, x1, (arg1[0])); + fiat_cmovznz_u64(&x10, x8, x3, (arg1[1])); + fiat_cmovznz_u64(&x11, x8, x5, (arg1[2])); + fiat_cmovznz_u64(&x12, x8, x7, (arg1[3])); + fiat_subborrowx_u64(&x13, &x14, 0x0, x9, UINT64_C(0xffffffffffffffed)); + fiat_subborrowx_u64(&x15, &x16, x14, x10, UINT64_C(0xffffffffffffffff)); + fiat_subborrowx_u64(&x17, &x18, x16, x11, UINT64_C(0xffffffffffffffff)); + fiat_subborrowx_u64(&x19, &x20, x18, x12, UINT64_C(0x7fffffffffffffff)); + fiat_cmovznz_u64(&x21, x20, x13, x9); + fiat_cmovznz_u64(&x22, x20, x15, x10); + fiat_cmovznz_u64(&x23, x20, x17, x11); + fiat_cmovznz_u64(&x24, x20, x19, x12); + out1[0] = x21; + out1[1] = x22; + out1[2] = x23; + out1[3] = x24; +} + +/* + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * arg3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * Output Bounds: + * out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * out2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + */ +__attribute__((target("adx,bmi2"))) +static void fe4_cswap(uint64_t out1[4], uint64_t out2[4], fiat_uint1 arg1, const uint64_t arg2[4], const uint64_t arg3[4]) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + // NOTE: clang 14 for Zen 2 uses YMM registers + fiat_cmovznz_u64(&x1, arg1, (arg2[0]), (arg3[0])); + fiat_cmovznz_u64(&x2, arg1, (arg2[1]), (arg3[1])); + fiat_cmovznz_u64(&x3, arg1, (arg2[2]), (arg3[2])); + fiat_cmovznz_u64(&x4, arg1, (arg2[3]), (arg3[3])); + fiat_cmovznz_u64(&x5, arg1, (arg3[0]), (arg2[0])); + fiat_cmovznz_u64(&x6, arg1, (arg3[1]), (arg2[1])); + fiat_cmovznz_u64(&x7, arg1, (arg3[2]), (arg2[2])); + fiat_cmovznz_u64(&x8, arg1, (arg3[3]), (arg2[3])); + out1[0] = x1; + out1[1] = x2; + out1[2] = x3; + out1[3] = x4; + out2[0] = x5; + out2[1] = x6; + out2[2] = x7; + out2[3] = x8; +} + +// The following functions are adaped from crypto/curve25519/curve25519.c +// It would be desirable to share the code, but with the current field +// implementations both 4-limb and 5-limb versions of the curve-level code need +// to be included in builds targetting an unknown variant of x86_64. + +__attribute__((target("adx,bmi2"))) +static void fe4_invert(fe4 out, const fe4 z) { + fe4 t0; + fe4 t1; + fe4 t2; + fe4 t3; + int i; + + fe4_sq(t0, z); + fe4_sq(t1, t0); + for (i = 1; i < 2; ++i) { + fe4_sq(t1, t1); + } + fe4_mul(t1, z, t1); + fe4_mul(t0, t0, t1); + fe4_sq(t2, t0); + fe4_mul(t1, t1, t2); + fe4_sq(t2, t1); + for (i = 1; i < 5; ++i) { + fe4_sq(t2, t2); + } + fe4_mul(t1, t2, t1); + fe4_sq(t2, t1); + for (i = 1; i < 10; ++i) { + fe4_sq(t2, t2); + } + fe4_mul(t2, t2, t1); + fe4_sq(t3, t2); + for (i = 1; i < 20; ++i) { + fe4_sq(t3, t3); + } + fe4_mul(t2, t3, t2); + fe4_sq(t2, t2); + for (i = 1; i < 10; ++i) { + fe4_sq(t2, t2); + } + fe4_mul(t1, t2, t1); + fe4_sq(t2, t1); + for (i = 1; i < 50; ++i) { + fe4_sq(t2, t2); + } + fe4_mul(t2, t2, t1); + fe4_sq(t3, t2); + for (i = 1; i < 100; ++i) { + fe4_sq(t3, t3); + } + fe4_mul(t2, t3, t2); + fe4_sq(t2, t2); + for (i = 1; i < 50; ++i) { + fe4_sq(t2, t2); + } + fe4_mul(t1, t2, t1); + fe4_sq(t1, t1); + for (i = 1; i < 5; ++i) { + fe4_sq(t1, t1); + } + fe4_mul(out, t1, t0); +} + +__attribute__((noinline)) // https://github.com/rust-lang/rust/issues/116573 +__attribute__((target("adx,bmi2"))) +void x25519_scalar_mult_adx(uint8_t out[32], const uint8_t scalar[32], + const uint8_t point[32]) { + uint8_t e[32]; + memcpy(e, scalar, 32); + e[0] &= 248; + e[31] &= 127; + e[31] |= 64; + + // The following implementation was transcribed to Coq and proven to + // correspond to unary scalar multiplication in affine coordinates given that + // x1 != 0 is the x coordinate of some point on the curve. It was also checked + // in Coq that doing a ladderstep with x1 = x3 = 0 gives z2' = z3' = 0, and z2 + // = z3 = 0 gives z2' = z3' = 0. The statement was quantified over the + // underlying field, so it applies to Curve25519 itself and the quadratic + // twist of Curve25519. It was not proven in Coq that prime-field arithmetic + // correctly simulates extension-field arithmetic on prime-field values. + // The decoding of the byte array representation of e was not considered. + // Specification of Montgomery curves in affine coordinates: + // + // Proof that these form a group that is isomorphic to a Weierstrass curve: + // + // Coq transcription and correctness proof of the loop (where scalarbits=255): + // + // + // preconditions: 0 <= e < 2^255 (not necessarily e < order), fe_invert(0) = 0 + fe4 x1, x2 = {1}, z2 = {0}, x3, z3 = {1}, tmp0, tmp1; + OPENSSL_memcpy(x1, point, sizeof(fe4)); + x1[3] &= (uint64_t)(-1)>>1; + OPENSSL_memcpy(x3, x1, sizeof(fe4)); + + unsigned swap = 0; + int pos; + for (pos = 254; pos >= 0; --pos) { + // loop invariant as of right before the test, for the case where x1 != 0: + // pos >= -1; if z2 = 0 then x2 is nonzero; if z3 = 0 then x3 is nonzero + // let r := e >> (pos+1) in the following equalities of projective points: + // to_xz (r*P) === if swap then (x3, z3) else (x2, z2) + // to_xz ((r+1)*P) === if swap then (x2, z2) else (x3, z3) + // x1 is the nonzero x coordinate of the nonzero point (r*P-(r+1)*P) + unsigned b = 1 & (e[pos / 8] >> (pos & 7)); + swap ^= b; + fe4_cswap(x2, x3, swap, x2, x3); + fe4_cswap(z2, z3, swap, z2, z3); + swap = b; + // Coq transcription of ladderstep formula (called from transcribed loop): + // + // + // x1 != 0 + // x1 = 0 + fe4_sub(tmp0, x3, z3); + fe4_sub(tmp1, x2, z2); + fe4_add(x2, x2, z2); + fe4_add(z2, x3, z3); + fe4_mul(z3, tmp0, x2); + fe4_mul(z2, z2, tmp1); + fe4_sq(tmp0, tmp1); + fe4_sq(tmp1, x2); + fe4_add(x3, z3, z2); + fe4_sub(z2, z3, z2); + fe4_mul(x2, tmp1, tmp0); + fe4_sub(tmp1, tmp1, tmp0); + fe4_sq(z2, z2); + fe4_scmul(z3, tmp1, 121666); + fe4_sq(x3, x3); + fe4_add(tmp0, tmp0, z3); + fe4_mul(z3, x1, z2); + fe4_mul(z2, tmp1, tmp0); + } + // here pos=-1, so r=e, so to_xz (e*P) === if swap then (x3, z3) else (x2, z2) + fe4_cswap(x2, x3, swap, x2, x3); + fe4_cswap(z2, z3, swap, z2, z3); + + fe4_invert(z2, z2); + fe4_mul(x2, x2, z2); + fe4_canon(x2, x2); + OPENSSL_memcpy(out, x2, sizeof(fe4)); +} + +typedef struct { + fe4 X; + fe4 Y; + fe4 Z; + fe4 T; +} ge_p3_4; + +typedef struct { + fe4 yplusx; + fe4 yminusx; + fe4 xy2d; +} ge_precomp_4; + +__attribute__((target("adx,bmi2"))) +static void inline_x25519_ge_dbl_4(ge_p3_4 *r, const ge_p3_4 *p, bool skip_t) { + // Transcribed from a Coq function proven against affine coordinates. + // https://github.com/mit-plv/fiat-crypto/blob/9943ba9e7d8f3e1c0054b2c94a5edca46ea73ef8/src/Curves/Edwards/XYZT/Basic.v#L136-L165 + fe4 trX, trZ, trT, t0, cX, cY, cZ, cT; + fe4_sq(trX, p->X); + fe4_sq(trZ, p->Y); + fe4_sq(trT, p->Z); + fe4_add(trT, trT, trT); + fe4_add(cY, p->X, p->Y); + fe4_sq(t0, cY); + fe4_add(cY, trZ, trX); + fe4_sub(cZ, trZ, trX); + fe4_sub(cX, t0, cY); + fe4_sub(cT, trT, cZ); + fe4_mul(r->X, cX, cT); + fe4_mul(r->Y, cY, cZ); + fe4_mul(r->Z, cZ, cT); + if (!skip_t) { + fe4_mul(r->T, cX, cY); + } +} + +__attribute__((target("adx,bmi2"))) +__attribute__((always_inline)) // 4% speedup with clang14 and zen2 +static inline void +ge_p3_add_p3_precomp_4(ge_p3_4 *r, const ge_p3_4 *p, const ge_precomp_4 *q) { + fe4 A, B, C, YplusX, YminusX, D, X3, Y3, Z3, T3; + // Transcribed from a Coq function proven against affine coordinates. + // https://github.com/mit-plv/fiat-crypto/blob/a36568d1d73aff5d7accc79fd28be672882f9c17/src/Curves/Edwards/XYZT/Precomputed.v#L38-L56 + fe4_add(YplusX, p->Y, p->X); + fe4_sub(YminusX, p->Y, p->X); + fe4_mul(A, YplusX, q->yplusx); + fe4_mul(B, YminusX, q->yminusx); + fe4_mul(C, q->xy2d, p->T); + fe4_add(D, p->Z, p->Z); + fe4_sub(X3, A, B); + fe4_add(Y3, A, B); + fe4_add(Z3, D, C); + fe4_sub(T3, D, C); + fe4_mul(r->X, X3, T3); + fe4_mul(r->Y, Y3, Z3); + fe4_mul(r->Z, Z3, T3); + fe4_mul(r->T, X3, Y3); +} + +__attribute__((always_inline)) // 25% speedup with clang14 and zen2 +static inline void table_select_4(ge_precomp_4 *t, const int pos, + const signed char b) { + uint8_t bnegative = constant_time_msb_w(b); + uint8_t babs = b - ((bnegative & b) << 1); + + uint8_t t_bytes[3][32] = { + {constant_time_is_zero_w(b) & 1}, {constant_time_is_zero_w(b) & 1}, {0}}; +#if defined(__clang__) + __asm__("" : "+m" (t_bytes) : /*no inputs*/); +#endif + OPENSSL_STATIC_ASSERT(sizeof(t_bytes) == sizeof(k25519Precomp[pos][0]), ""); + for (int i = 0; i < 8; i++) { + constant_time_conditional_memxor(t_bytes, k25519Precomp[pos][i], + sizeof(t_bytes), + constant_time_eq_w(babs, 1 + i)); + } + + OPENSSL_STATIC_ASSERT(sizeof(t_bytes) == sizeof(ge_precomp_4), ""); + + // fe4 uses saturated 64-bit limbs, so converting from bytes is just a copy. + OPENSSL_memcpy(t, t_bytes, sizeof(ge_precomp_4)); + + fe4 xy2d_neg = {0}; + fe4_sub(xy2d_neg, xy2d_neg, t->xy2d); + constant_time_conditional_memcpy(t->yplusx, t_bytes[1], sizeof(fe4), + bnegative); + constant_time_conditional_memcpy(t->yminusx, t_bytes[0], sizeof(fe4), + bnegative); + constant_time_conditional_memcpy(t->xy2d, xy2d_neg, sizeof(fe4), bnegative); +} + +// h = a * B +// where a = a[0]+256*a[1]+...+256^31 a[31] +// B is the Ed25519 base point (x,4/5) with x positive. +// +// Preconditions: +// a[31] <= 127 +__attribute__((noinline)) // https://github.com/rust-lang/rust/issues/116573 +__attribute__((target("adx,bmi2"))) +void x25519_ge_scalarmult_base_adx(uint8_t h[4][32], const uint8_t a[32]) { + signed char e[64]; + signed char carry; + + for (unsigned i = 0; i < 32; ++i) { + e[2 * i + 0] = (a[i] >> 0) & 15; + e[2 * i + 1] = (a[i] >> 4) & 15; + } + // each e[i] is between 0 and 15 + // e[63] is between 0 and 7 + + carry = 0; + for (unsigned i = 0; i < 63; ++i) { + e[i] += carry; + carry = e[i] + 8; + carry >>= 4; + e[i] -= carry << 4; + } + e[63] += carry; + // each e[i] is between -8 and 8 + + ge_p3_4 r = {{0}, {1}, {1}, {0}}; + for (unsigned i = 1; i < 64; i += 2) { + ge_precomp_4 t; + table_select_4(&t, i / 2, e[i]); + ge_p3_add_p3_precomp_4(&r, &r, &t); + } + + inline_x25519_ge_dbl_4(&r, &r, /*skip_t=*/true); + inline_x25519_ge_dbl_4(&r, &r, /*skip_t=*/true); + inline_x25519_ge_dbl_4(&r, &r, /*skip_t=*/true); + inline_x25519_ge_dbl_4(&r, &r, /*skip_t=*/false); + + for (unsigned i = 0; i < 64; i += 2) { + ge_precomp_4 t; + table_select_4(&t, i / 2, e[i]); + ge_p3_add_p3_precomp_4(&r, &r, &t); + } + + // fe4 uses saturated 64-bit limbs, so converting to bytes is just a copy. + // Satisfy stated precondition of fiat_25519_from_bytes; tests pass either way + fe4_canon(r.X, r.X); + fe4_canon(r.Y, r.Y); + fe4_canon(r.Z, r.Z); + fe4_canon(r.T, r.T); + OPENSSL_STATIC_ASSERT(sizeof(ge_p3_4) == sizeof(uint8_t[4][32]), ""); + OPENSSL_memcpy(h, &r, sizeof(ge_p3_4)); +} diff -Nru temporalio-1.3.0/vendor/ring/third_party/fiat/curve25519_64.h temporalio-1.3.0/vendor/ring/third_party/fiat/curve25519_64.h --- temporalio-1.3.0/vendor/ring/third_party/fiat/curve25519_64.h 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/third_party/fiat/curve25519_64.h 2023-10-30 19:40:00.000000000 +0000 @@ -1,26 +1,56 @@ -/* Autogenerated: src/ExtractionOCaml/unsaturated_solinas --static 25519 5 '2^255 - 19' 64 carry_mul carry_square carry add sub opp selectznz to_bytes from_bytes carry_scmul121666 */ +/* Autogenerated: 'src/ExtractionOCaml/unsaturated_solinas' --inline --static --use-value-barrier 25519 64 '(auto)' '2^255 - 19' carry_mul carry_square carry add sub opp selectznz to_bytes from_bytes relax carry_scmul121666 */ /* curve description: 25519 */ -/* requested operations: carry_mul, carry_square, carry, add, sub, opp, selectznz, to_bytes, from_bytes, carry_scmul121666 */ -/* n = 5 (from "5") */ -/* s-c = 2^255 - [(1, 19)] (from "2^255 - 19") */ /* machine_wordsize = 64 (from "64") */ - +/* requested operations: carry_mul, carry_square, carry, add, sub, opp, selectznz, to_bytes, from_bytes, relax, carry_scmul121666 */ +/* n = 5 (from "(auto)") */ +/* s-c = 2^255 - [(1, 19)] (from "2^255 - 19") */ +/* tight_bounds_multiplier = 1 (from "") */ +/* */ /* Computed values: */ -/* carry_chain = [0, 1, 2, 3, 4, 0, 1] */ +/* carry_chain = [0, 1, 2, 3, 4, 0, 1] */ +/* eval z = z[0] + (z[1] << 51) + (z[2] << 102) + (z[3] << 153) + (z[4] << 204) */ +/* bytes_eval z = z[0] + (z[1] << 8) + (z[2] << 16) + (z[3] << 24) + (z[4] << 32) + (z[5] << 40) + (z[6] << 48) + (z[7] << 56) + (z[8] << 64) + (z[9] << 72) + (z[10] << 80) + (z[11] << 88) + (z[12] << 96) + (z[13] << 104) + (z[14] << 112) + (z[15] << 120) + (z[16] << 128) + (z[17] << 136) + (z[18] << 144) + (z[19] << 152) + (z[20] << 160) + (z[21] << 168) + (z[22] << 176) + (z[23] << 184) + (z[24] << 192) + (z[25] << 200) + (z[26] << 208) + (z[27] << 216) + (z[28] << 224) + (z[29] << 232) + (z[30] << 240) + (z[31] << 248) */ +/* balance = [0xfffffffffffda, 0xffffffffffffe, 0xffffffffffffe, 0xffffffffffffe, 0xffffffffffffe] */ #include typedef unsigned char fiat_25519_uint1; typedef signed char fiat_25519_int1; -typedef signed __int128 fiat_25519_int128; -typedef unsigned __int128 fiat_25519_uint128; +#if defined(__GNUC__) || defined(__clang__) +# define FIAT_25519_FIAT_EXTENSION __extension__ +# define FIAT_25519_FIAT_INLINE __inline__ +#else +# define FIAT_25519_FIAT_EXTENSION +# define FIAT_25519_FIAT_INLINE +#endif + +FIAT_25519_FIAT_EXTENSION typedef signed __int128 fiat_25519_int128; +FIAT_25519_FIAT_EXTENSION typedef unsigned __int128 fiat_25519_uint128; + +/* The type fiat_25519_loose_field_element is a field element with loose bounds. */ +/* Bounds: [[0x0 ~> 0x18000000000000], [0x0 ~> 0x18000000000000], [0x0 ~> 0x18000000000000], [0x0 ~> 0x18000000000000], [0x0 ~> 0x18000000000000]] */ +typedef uint64_t fiat_25519_loose_field_element[5]; + +/* The type fiat_25519_tight_field_element is a field element with tight bounds. */ +/* Bounds: [[0x0 ~> 0x8000000000000], [0x0 ~> 0x8000000000000], [0x0 ~> 0x8000000000000], [0x0 ~> 0x8000000000000], [0x0 ~> 0x8000000000000]] */ +typedef uint64_t fiat_25519_tight_field_element[5]; #if (-1 & 3) != 3 #error "This code only works on a two's complement system" #endif +#if !defined(FIAT_25519_NO_ASM) && (defined(__GNUC__) || defined(__clang__)) +static __inline__ uint64_t fiat_25519_value_barrier_u64(uint64_t a) { + __asm__("" : "+r"(a) : /* no inputs */); + return a; +} +#else +# define fiat_25519_value_barrier_u64(x) (x) +#endif + /* * The function fiat_25519_addcarryx_u51 is an addition with carry. + * * Postconditions: * out1 = (arg1 + arg2 + arg3) mod 2^51 * out2 = ⌊(arg1 + arg2 + arg3) / 2^51⌋ @@ -33,16 +63,20 @@ * out1: [0x0 ~> 0x7ffffffffffff] * out2: [0x0 ~> 0x1] */ -static void fiat_25519_addcarryx_u51(uint64_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint64_t arg2, uint64_t arg3) { - uint64_t x1 = ((arg1 + arg2) + arg3); - uint64_t x2 = (x1 & UINT64_C(0x7ffffffffffff)); - fiat_25519_uint1 x3 = (fiat_25519_uint1)(x1 >> 51); +static FIAT_25519_FIAT_INLINE void fiat_25519_addcarryx_u51(uint64_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint64_t arg2, uint64_t arg3) { + uint64_t x1; + uint64_t x2; + fiat_25519_uint1 x3; + x1 = ((arg1 + arg2) + arg3); + x2 = (x1 & UINT64_C(0x7ffffffffffff)); + x3 = (fiat_25519_uint1)(x1 >> 51); *out1 = x2; *out2 = x3; } /* * The function fiat_25519_subborrowx_u51 is a subtraction with borrow. + * * Postconditions: * out1 = (-arg1 + arg2 + -arg3) mod 2^51 * out2 = -⌊(-arg1 + arg2 + -arg3) / 2^51⌋ @@ -55,16 +89,20 @@ * out1: [0x0 ~> 0x7ffffffffffff] * out2: [0x0 ~> 0x1] */ -static void fiat_25519_subborrowx_u51(uint64_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint64_t arg2, uint64_t arg3) { - int64_t x1 = ((int64_t)(arg2 - (int64_t)arg1) - (int64_t)arg3); - fiat_25519_int1 x2 = (fiat_25519_int1)(x1 >> 51); - uint64_t x3 = (x1 & UINT64_C(0x7ffffffffffff)); +static FIAT_25519_FIAT_INLINE void fiat_25519_subborrowx_u51(uint64_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint64_t arg2, uint64_t arg3) { + int64_t x1; + fiat_25519_int1 x2; + uint64_t x3; + x1 = ((int64_t)(arg2 - (int64_t)arg1) - (int64_t)arg3); + x2 = (fiat_25519_int1)(x1 >> 51); + x3 = (x1 & UINT64_C(0x7ffffffffffff)); *out1 = x3; *out2 = (fiat_25519_uint1)(0x0 - x2); } /* * The function fiat_25519_cmovznz_u64 is a single-word conditional move. + * * Postconditions: * out1 = (if arg1 = 0 then arg2 else arg3) * @@ -75,83 +113,128 @@ * Output Bounds: * out1: [0x0 ~> 0xffffffffffffffff] */ -static void fiat_25519_cmovznz_u64(uint64_t* out1, fiat_25519_uint1 arg1, uint64_t arg2, uint64_t arg3) { - fiat_25519_uint1 x1 = (!(!arg1)); - uint64_t x2 = ((fiat_25519_int1)(0x0 - x1) & UINT64_C(0xffffffffffffffff)); - // Note this line has been patched from the synthesized code to add value - // barriers. - // - // Clang recognizes this pattern as a select. While it usually transforms it - // to a cmov, it sometimes further transforms it into a branch, which we do - // not want. - uint64_t x3 = ((value_barrier_u64(x2) & arg3) | (value_barrier_u64(~x2) & arg2)); +static FIAT_25519_FIAT_INLINE void fiat_25519_cmovznz_u64(uint64_t* out1, fiat_25519_uint1 arg1, uint64_t arg2, uint64_t arg3) { + fiat_25519_uint1 x1; + uint64_t x2; + uint64_t x3; + x1 = (!(!arg1)); + x2 = ((fiat_25519_int1)(0x0 - x1) & UINT64_C(0xffffffffffffffff)); + x3 = ((fiat_25519_value_barrier_u64(x2) & arg3) | (fiat_25519_value_barrier_u64((~x2)) & arg2)); *out1 = x3; } /* * The function fiat_25519_carry_mul multiplies two field elements and reduces the result. + * * Postconditions: * eval out1 mod m = (eval arg1 * eval arg2) mod m * - * Input Bounds: - * arg1: [[0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664]] - * arg2: [[0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664]] - * Output Bounds: - * out1: [[0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc]] */ -static void fiat_25519_carry_mul(uint64_t out1[5], const uint64_t arg1[5], const uint64_t arg2[5]) { - fiat_25519_uint128 x1 = ((fiat_25519_uint128)(arg1[4]) * ((arg2[4]) * UINT8_C(0x13))); - fiat_25519_uint128 x2 = ((fiat_25519_uint128)(arg1[4]) * ((arg2[3]) * UINT8_C(0x13))); - fiat_25519_uint128 x3 = ((fiat_25519_uint128)(arg1[4]) * ((arg2[2]) * UINT8_C(0x13))); - fiat_25519_uint128 x4 = ((fiat_25519_uint128)(arg1[4]) * ((arg2[1]) * UINT8_C(0x13))); - fiat_25519_uint128 x5 = ((fiat_25519_uint128)(arg1[3]) * ((arg2[4]) * UINT8_C(0x13))); - fiat_25519_uint128 x6 = ((fiat_25519_uint128)(arg1[3]) * ((arg2[3]) * UINT8_C(0x13))); - fiat_25519_uint128 x7 = ((fiat_25519_uint128)(arg1[3]) * ((arg2[2]) * UINT8_C(0x13))); - fiat_25519_uint128 x8 = ((fiat_25519_uint128)(arg1[2]) * ((arg2[4]) * UINT8_C(0x13))); - fiat_25519_uint128 x9 = ((fiat_25519_uint128)(arg1[2]) * ((arg2[3]) * UINT8_C(0x13))); - fiat_25519_uint128 x10 = ((fiat_25519_uint128)(arg1[1]) * ((arg2[4]) * UINT8_C(0x13))); - fiat_25519_uint128 x11 = ((fiat_25519_uint128)(arg1[4]) * (arg2[0])); - fiat_25519_uint128 x12 = ((fiat_25519_uint128)(arg1[3]) * (arg2[1])); - fiat_25519_uint128 x13 = ((fiat_25519_uint128)(arg1[3]) * (arg2[0])); - fiat_25519_uint128 x14 = ((fiat_25519_uint128)(arg1[2]) * (arg2[2])); - fiat_25519_uint128 x15 = ((fiat_25519_uint128)(arg1[2]) * (arg2[1])); - fiat_25519_uint128 x16 = ((fiat_25519_uint128)(arg1[2]) * (arg2[0])); - fiat_25519_uint128 x17 = ((fiat_25519_uint128)(arg1[1]) * (arg2[3])); - fiat_25519_uint128 x18 = ((fiat_25519_uint128)(arg1[1]) * (arg2[2])); - fiat_25519_uint128 x19 = ((fiat_25519_uint128)(arg1[1]) * (arg2[1])); - fiat_25519_uint128 x20 = ((fiat_25519_uint128)(arg1[1]) * (arg2[0])); - fiat_25519_uint128 x21 = ((fiat_25519_uint128)(arg1[0]) * (arg2[4])); - fiat_25519_uint128 x22 = ((fiat_25519_uint128)(arg1[0]) * (arg2[3])); - fiat_25519_uint128 x23 = ((fiat_25519_uint128)(arg1[0]) * (arg2[2])); - fiat_25519_uint128 x24 = ((fiat_25519_uint128)(arg1[0]) * (arg2[1])); - fiat_25519_uint128 x25 = ((fiat_25519_uint128)(arg1[0]) * (arg2[0])); - fiat_25519_uint128 x26 = (x25 + (x10 + (x9 + (x7 + x4)))); - uint64_t x27 = (uint64_t)(x26 >> 51); - uint64_t x28 = (uint64_t)(x26 & UINT64_C(0x7ffffffffffff)); - fiat_25519_uint128 x29 = (x21 + (x17 + (x14 + (x12 + x11)))); - fiat_25519_uint128 x30 = (x22 + (x18 + (x15 + (x13 + x1)))); - fiat_25519_uint128 x31 = (x23 + (x19 + (x16 + (x5 + x2)))); - fiat_25519_uint128 x32 = (x24 + (x20 + (x8 + (x6 + x3)))); - fiat_25519_uint128 x33 = (x27 + x32); - uint64_t x34 = (uint64_t)(x33 >> 51); - uint64_t x35 = (uint64_t)(x33 & UINT64_C(0x7ffffffffffff)); - fiat_25519_uint128 x36 = (x34 + x31); - uint64_t x37 = (uint64_t)(x36 >> 51); - uint64_t x38 = (uint64_t)(x36 & UINT64_C(0x7ffffffffffff)); - fiat_25519_uint128 x39 = (x37 + x30); - uint64_t x40 = (uint64_t)(x39 >> 51); - uint64_t x41 = (uint64_t)(x39 & UINT64_C(0x7ffffffffffff)); - fiat_25519_uint128 x42 = (x40 + x29); - uint64_t x43 = (uint64_t)(x42 >> 51); - uint64_t x44 = (uint64_t)(x42 & UINT64_C(0x7ffffffffffff)); - uint64_t x45 = (x43 * UINT8_C(0x13)); - uint64_t x46 = (x28 + x45); - uint64_t x47 = (x46 >> 51); - uint64_t x48 = (x46 & UINT64_C(0x7ffffffffffff)); - uint64_t x49 = (x47 + x35); - fiat_25519_uint1 x50 = (fiat_25519_uint1)(x49 >> 51); - uint64_t x51 = (x49 & UINT64_C(0x7ffffffffffff)); - uint64_t x52 = (x50 + x38); +static FIAT_25519_FIAT_INLINE void fiat_25519_carry_mul(fiat_25519_tight_field_element out1, const fiat_25519_loose_field_element arg1, const fiat_25519_loose_field_element arg2) { + fiat_25519_uint128 x1; + fiat_25519_uint128 x2; + fiat_25519_uint128 x3; + fiat_25519_uint128 x4; + fiat_25519_uint128 x5; + fiat_25519_uint128 x6; + fiat_25519_uint128 x7; + fiat_25519_uint128 x8; + fiat_25519_uint128 x9; + fiat_25519_uint128 x10; + fiat_25519_uint128 x11; + fiat_25519_uint128 x12; + fiat_25519_uint128 x13; + fiat_25519_uint128 x14; + fiat_25519_uint128 x15; + fiat_25519_uint128 x16; + fiat_25519_uint128 x17; + fiat_25519_uint128 x18; + fiat_25519_uint128 x19; + fiat_25519_uint128 x20; + fiat_25519_uint128 x21; + fiat_25519_uint128 x22; + fiat_25519_uint128 x23; + fiat_25519_uint128 x24; + fiat_25519_uint128 x25; + fiat_25519_uint128 x26; + uint64_t x27; + uint64_t x28; + fiat_25519_uint128 x29; + fiat_25519_uint128 x30; + fiat_25519_uint128 x31; + fiat_25519_uint128 x32; + fiat_25519_uint128 x33; + uint64_t x34; + uint64_t x35; + fiat_25519_uint128 x36; + uint64_t x37; + uint64_t x38; + fiat_25519_uint128 x39; + uint64_t x40; + uint64_t x41; + fiat_25519_uint128 x42; + uint64_t x43; + uint64_t x44; + uint64_t x45; + uint64_t x46; + uint64_t x47; + uint64_t x48; + uint64_t x49; + fiat_25519_uint1 x50; + uint64_t x51; + uint64_t x52; + x1 = ((fiat_25519_uint128)(arg1[4]) * ((arg2[4]) * UINT8_C(0x13))); + x2 = ((fiat_25519_uint128)(arg1[4]) * ((arg2[3]) * UINT8_C(0x13))); + x3 = ((fiat_25519_uint128)(arg1[4]) * ((arg2[2]) * UINT8_C(0x13))); + x4 = ((fiat_25519_uint128)(arg1[4]) * ((arg2[1]) * UINT8_C(0x13))); + x5 = ((fiat_25519_uint128)(arg1[3]) * ((arg2[4]) * UINT8_C(0x13))); + x6 = ((fiat_25519_uint128)(arg1[3]) * ((arg2[3]) * UINT8_C(0x13))); + x7 = ((fiat_25519_uint128)(arg1[3]) * ((arg2[2]) * UINT8_C(0x13))); + x8 = ((fiat_25519_uint128)(arg1[2]) * ((arg2[4]) * UINT8_C(0x13))); + x9 = ((fiat_25519_uint128)(arg1[2]) * ((arg2[3]) * UINT8_C(0x13))); + x10 = ((fiat_25519_uint128)(arg1[1]) * ((arg2[4]) * UINT8_C(0x13))); + x11 = ((fiat_25519_uint128)(arg1[4]) * (arg2[0])); + x12 = ((fiat_25519_uint128)(arg1[3]) * (arg2[1])); + x13 = ((fiat_25519_uint128)(arg1[3]) * (arg2[0])); + x14 = ((fiat_25519_uint128)(arg1[2]) * (arg2[2])); + x15 = ((fiat_25519_uint128)(arg1[2]) * (arg2[1])); + x16 = ((fiat_25519_uint128)(arg1[2]) * (arg2[0])); + x17 = ((fiat_25519_uint128)(arg1[1]) * (arg2[3])); + x18 = ((fiat_25519_uint128)(arg1[1]) * (arg2[2])); + x19 = ((fiat_25519_uint128)(arg1[1]) * (arg2[1])); + x20 = ((fiat_25519_uint128)(arg1[1]) * (arg2[0])); + x21 = ((fiat_25519_uint128)(arg1[0]) * (arg2[4])); + x22 = ((fiat_25519_uint128)(arg1[0]) * (arg2[3])); + x23 = ((fiat_25519_uint128)(arg1[0]) * (arg2[2])); + x24 = ((fiat_25519_uint128)(arg1[0]) * (arg2[1])); + x25 = ((fiat_25519_uint128)(arg1[0]) * (arg2[0])); + x26 = (x25 + (x10 + (x9 + (x7 + x4)))); + x27 = (uint64_t)(x26 >> 51); + x28 = (uint64_t)(x26 & UINT64_C(0x7ffffffffffff)); + x29 = (x21 + (x17 + (x14 + (x12 + x11)))); + x30 = (x22 + (x18 + (x15 + (x13 + x1)))); + x31 = (x23 + (x19 + (x16 + (x5 + x2)))); + x32 = (x24 + (x20 + (x8 + (x6 + x3)))); + x33 = (x27 + x32); + x34 = (uint64_t)(x33 >> 51); + x35 = (uint64_t)(x33 & UINT64_C(0x7ffffffffffff)); + x36 = (x34 + x31); + x37 = (uint64_t)(x36 >> 51); + x38 = (uint64_t)(x36 & UINT64_C(0x7ffffffffffff)); + x39 = (x37 + x30); + x40 = (uint64_t)(x39 >> 51); + x41 = (uint64_t)(x39 & UINT64_C(0x7ffffffffffff)); + x42 = (x40 + x29); + x43 = (uint64_t)(x42 >> 51); + x44 = (uint64_t)(x42 & UINT64_C(0x7ffffffffffff)); + x45 = (x43 * UINT8_C(0x13)); + x46 = (x28 + x45); + x47 = (x46 >> 51); + x48 = (x46 & UINT64_C(0x7ffffffffffff)); + x49 = (x47 + x35); + x50 = (fiat_25519_uint1)(x49 >> 51); + x51 = (x49 & UINT64_C(0x7ffffffffffff)); + x52 = (x50 + x38); out1[0] = x48; out1[1] = x51; out1[2] = x52; @@ -161,65 +244,112 @@ /* * The function fiat_25519_carry_square squares a field element and reduces the result. + * * Postconditions: * eval out1 mod m = (eval arg1 * eval arg1) mod m * - * Input Bounds: - * arg1: [[0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664]] - * Output Bounds: - * out1: [[0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc]] */ -static void fiat_25519_carry_square(uint64_t out1[5], const uint64_t arg1[5]) { - uint64_t x1 = ((arg1[4]) * UINT8_C(0x13)); - uint64_t x2 = (x1 * 0x2); - uint64_t x3 = ((arg1[4]) * 0x2); - uint64_t x4 = ((arg1[3]) * UINT8_C(0x13)); - uint64_t x5 = (x4 * 0x2); - uint64_t x6 = ((arg1[3]) * 0x2); - uint64_t x7 = ((arg1[2]) * 0x2); - uint64_t x8 = ((arg1[1]) * 0x2); - fiat_25519_uint128 x9 = ((fiat_25519_uint128)(arg1[4]) * x1); - fiat_25519_uint128 x10 = ((fiat_25519_uint128)(arg1[3]) * x2); - fiat_25519_uint128 x11 = ((fiat_25519_uint128)(arg1[3]) * x4); - fiat_25519_uint128 x12 = ((fiat_25519_uint128)(arg1[2]) * x2); - fiat_25519_uint128 x13 = ((fiat_25519_uint128)(arg1[2]) * x5); - fiat_25519_uint128 x14 = ((fiat_25519_uint128)(arg1[2]) * (arg1[2])); - fiat_25519_uint128 x15 = ((fiat_25519_uint128)(arg1[1]) * x2); - fiat_25519_uint128 x16 = ((fiat_25519_uint128)(arg1[1]) * x6); - fiat_25519_uint128 x17 = ((fiat_25519_uint128)(arg1[1]) * x7); - fiat_25519_uint128 x18 = ((fiat_25519_uint128)(arg1[1]) * (arg1[1])); - fiat_25519_uint128 x19 = ((fiat_25519_uint128)(arg1[0]) * x3); - fiat_25519_uint128 x20 = ((fiat_25519_uint128)(arg1[0]) * x6); - fiat_25519_uint128 x21 = ((fiat_25519_uint128)(arg1[0]) * x7); - fiat_25519_uint128 x22 = ((fiat_25519_uint128)(arg1[0]) * x8); - fiat_25519_uint128 x23 = ((fiat_25519_uint128)(arg1[0]) * (arg1[0])); - fiat_25519_uint128 x24 = (x23 + (x15 + x13)); - uint64_t x25 = (uint64_t)(x24 >> 51); - uint64_t x26 = (uint64_t)(x24 & UINT64_C(0x7ffffffffffff)); - fiat_25519_uint128 x27 = (x19 + (x16 + x14)); - fiat_25519_uint128 x28 = (x20 + (x17 + x9)); - fiat_25519_uint128 x29 = (x21 + (x18 + x10)); - fiat_25519_uint128 x30 = (x22 + (x12 + x11)); - fiat_25519_uint128 x31 = (x25 + x30); - uint64_t x32 = (uint64_t)(x31 >> 51); - uint64_t x33 = (uint64_t)(x31 & UINT64_C(0x7ffffffffffff)); - fiat_25519_uint128 x34 = (x32 + x29); - uint64_t x35 = (uint64_t)(x34 >> 51); - uint64_t x36 = (uint64_t)(x34 & UINT64_C(0x7ffffffffffff)); - fiat_25519_uint128 x37 = (x35 + x28); - uint64_t x38 = (uint64_t)(x37 >> 51); - uint64_t x39 = (uint64_t)(x37 & UINT64_C(0x7ffffffffffff)); - fiat_25519_uint128 x40 = (x38 + x27); - uint64_t x41 = (uint64_t)(x40 >> 51); - uint64_t x42 = (uint64_t)(x40 & UINT64_C(0x7ffffffffffff)); - uint64_t x43 = (x41 * UINT8_C(0x13)); - uint64_t x44 = (x26 + x43); - uint64_t x45 = (x44 >> 51); - uint64_t x46 = (x44 & UINT64_C(0x7ffffffffffff)); - uint64_t x47 = (x45 + x33); - fiat_25519_uint1 x48 = (fiat_25519_uint1)(x47 >> 51); - uint64_t x49 = (x47 & UINT64_C(0x7ffffffffffff)); - uint64_t x50 = (x48 + x36); +static FIAT_25519_FIAT_INLINE void fiat_25519_carry_square(fiat_25519_tight_field_element out1, const fiat_25519_loose_field_element arg1) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + fiat_25519_uint128 x9; + fiat_25519_uint128 x10; + fiat_25519_uint128 x11; + fiat_25519_uint128 x12; + fiat_25519_uint128 x13; + fiat_25519_uint128 x14; + fiat_25519_uint128 x15; + fiat_25519_uint128 x16; + fiat_25519_uint128 x17; + fiat_25519_uint128 x18; + fiat_25519_uint128 x19; + fiat_25519_uint128 x20; + fiat_25519_uint128 x21; + fiat_25519_uint128 x22; + fiat_25519_uint128 x23; + fiat_25519_uint128 x24; + uint64_t x25; + uint64_t x26; + fiat_25519_uint128 x27; + fiat_25519_uint128 x28; + fiat_25519_uint128 x29; + fiat_25519_uint128 x30; + fiat_25519_uint128 x31; + uint64_t x32; + uint64_t x33; + fiat_25519_uint128 x34; + uint64_t x35; + uint64_t x36; + fiat_25519_uint128 x37; + uint64_t x38; + uint64_t x39; + fiat_25519_uint128 x40; + uint64_t x41; + uint64_t x42; + uint64_t x43; + uint64_t x44; + uint64_t x45; + uint64_t x46; + uint64_t x47; + fiat_25519_uint1 x48; + uint64_t x49; + uint64_t x50; + x1 = ((arg1[4]) * UINT8_C(0x13)); + x2 = (x1 * 0x2); + x3 = ((arg1[4]) * 0x2); + x4 = ((arg1[3]) * UINT8_C(0x13)); + x5 = (x4 * 0x2); + x6 = ((arg1[3]) * 0x2); + x7 = ((arg1[2]) * 0x2); + x8 = ((arg1[1]) * 0x2); + x9 = ((fiat_25519_uint128)(arg1[4]) * x1); + x10 = ((fiat_25519_uint128)(arg1[3]) * x2); + x11 = ((fiat_25519_uint128)(arg1[3]) * x4); + x12 = ((fiat_25519_uint128)(arg1[2]) * x2); + x13 = ((fiat_25519_uint128)(arg1[2]) * x5); + x14 = ((fiat_25519_uint128)(arg1[2]) * (arg1[2])); + x15 = ((fiat_25519_uint128)(arg1[1]) * x2); + x16 = ((fiat_25519_uint128)(arg1[1]) * x6); + x17 = ((fiat_25519_uint128)(arg1[1]) * x7); + x18 = ((fiat_25519_uint128)(arg1[1]) * (arg1[1])); + x19 = ((fiat_25519_uint128)(arg1[0]) * x3); + x20 = ((fiat_25519_uint128)(arg1[0]) * x6); + x21 = ((fiat_25519_uint128)(arg1[0]) * x7); + x22 = ((fiat_25519_uint128)(arg1[0]) * x8); + x23 = ((fiat_25519_uint128)(arg1[0]) * (arg1[0])); + x24 = (x23 + (x15 + x13)); + x25 = (uint64_t)(x24 >> 51); + x26 = (uint64_t)(x24 & UINT64_C(0x7ffffffffffff)); + x27 = (x19 + (x16 + x14)); + x28 = (x20 + (x17 + x9)); + x29 = (x21 + (x18 + x10)); + x30 = (x22 + (x12 + x11)); + x31 = (x25 + x30); + x32 = (uint64_t)(x31 >> 51); + x33 = (uint64_t)(x31 & UINT64_C(0x7ffffffffffff)); + x34 = (x32 + x29); + x35 = (uint64_t)(x34 >> 51); + x36 = (uint64_t)(x34 & UINT64_C(0x7ffffffffffff)); + x37 = (x35 + x28); + x38 = (uint64_t)(x37 >> 51); + x39 = (uint64_t)(x37 & UINT64_C(0x7ffffffffffff)); + x40 = (x38 + x27); + x41 = (uint64_t)(x40 >> 51); + x42 = (uint64_t)(x40 & UINT64_C(0x7ffffffffffff)); + x43 = (x41 * UINT8_C(0x13)); + x44 = (x26 + x43); + x45 = (x44 >> 51); + x46 = (x44 & UINT64_C(0x7ffffffffffff)); + x47 = (x45 + x33); + x48 = (fiat_25519_uint1)(x47 >> 51); + x49 = (x47 & UINT64_C(0x7ffffffffffff)); + x50 = (x48 + x36); out1[0] = x46; out1[1] = x49; out1[2] = x50; @@ -229,27 +359,36 @@ /* * The function fiat_25519_carry reduces a field element. + * * Postconditions: * eval out1 mod m = eval arg1 mod m * - * Input Bounds: - * arg1: [[0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664]] - * Output Bounds: - * out1: [[0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc]] */ -static void fiat_25519_carry(uint64_t out1[5], const uint64_t arg1[5]) { - uint64_t x1 = (arg1[0]); - uint64_t x2 = ((x1 >> 51) + (arg1[1])); - uint64_t x3 = ((x2 >> 51) + (arg1[2])); - uint64_t x4 = ((x3 >> 51) + (arg1[3])); - uint64_t x5 = ((x4 >> 51) + (arg1[4])); - uint64_t x6 = ((x1 & UINT64_C(0x7ffffffffffff)) + ((x5 >> 51) * UINT8_C(0x13))); - uint64_t x7 = ((fiat_25519_uint1)(x6 >> 51) + (x2 & UINT64_C(0x7ffffffffffff))); - uint64_t x8 = (x6 & UINT64_C(0x7ffffffffffff)); - uint64_t x9 = (x7 & UINT64_C(0x7ffffffffffff)); - uint64_t x10 = ((fiat_25519_uint1)(x7 >> 51) + (x3 & UINT64_C(0x7ffffffffffff))); - uint64_t x11 = (x4 & UINT64_C(0x7ffffffffffff)); - uint64_t x12 = (x5 & UINT64_C(0x7ffffffffffff)); +static FIAT_25519_FIAT_INLINE void fiat_25519_carry(fiat_25519_tight_field_element out1, const fiat_25519_loose_field_element arg1) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + uint64_t x9; + uint64_t x10; + uint64_t x11; + uint64_t x12; + x1 = (arg1[0]); + x2 = ((x1 >> 51) + (arg1[1])); + x3 = ((x2 >> 51) + (arg1[2])); + x4 = ((x3 >> 51) + (arg1[3])); + x5 = ((x4 >> 51) + (arg1[4])); + x6 = ((x1 & UINT64_C(0x7ffffffffffff)) + ((x5 >> 51) * UINT8_C(0x13))); + x7 = ((fiat_25519_uint1)(x6 >> 51) + (x2 & UINT64_C(0x7ffffffffffff))); + x8 = (x6 & UINT64_C(0x7ffffffffffff)); + x9 = (x7 & UINT64_C(0x7ffffffffffff)); + x10 = ((fiat_25519_uint1)(x7 >> 51) + (x3 & UINT64_C(0x7ffffffffffff))); + x11 = (x4 & UINT64_C(0x7ffffffffffff)); + x12 = (x5 & UINT64_C(0x7ffffffffffff)); out1[0] = x8; out1[1] = x9; out1[2] = x10; @@ -259,21 +398,22 @@ /* * The function fiat_25519_add adds two field elements. + * * Postconditions: * eval out1 mod m = (eval arg1 + eval arg2) mod m * - * Input Bounds: - * arg1: [[0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc]] - * arg2: [[0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc]] - * Output Bounds: - * out1: [[0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664]] */ -static void fiat_25519_add(uint64_t out1[5], const uint64_t arg1[5], const uint64_t arg2[5]) { - uint64_t x1 = ((arg1[0]) + (arg2[0])); - uint64_t x2 = ((arg1[1]) + (arg2[1])); - uint64_t x3 = ((arg1[2]) + (arg2[2])); - uint64_t x4 = ((arg1[3]) + (arg2[3])); - uint64_t x5 = ((arg1[4]) + (arg2[4])); +static FIAT_25519_FIAT_INLINE void fiat_25519_add(fiat_25519_loose_field_element out1, const fiat_25519_tight_field_element arg1, const fiat_25519_tight_field_element arg2) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + x1 = ((arg1[0]) + (arg2[0])); + x2 = ((arg1[1]) + (arg2[1])); + x3 = ((arg1[2]) + (arg2[2])); + x4 = ((arg1[3]) + (arg2[3])); + x5 = ((arg1[4]) + (arg2[4])); out1[0] = x1; out1[1] = x2; out1[2] = x3; @@ -283,21 +423,22 @@ /* * The function fiat_25519_sub subtracts two field elements. + * * Postconditions: * eval out1 mod m = (eval arg1 - eval arg2) mod m * - * Input Bounds: - * arg1: [[0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc]] - * arg2: [[0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc]] - * Output Bounds: - * out1: [[0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664]] */ -static void fiat_25519_sub(uint64_t out1[5], const uint64_t arg1[5], const uint64_t arg2[5]) { - uint64_t x1 = ((UINT64_C(0xfffffffffffda) + (arg1[0])) - (arg2[0])); - uint64_t x2 = ((UINT64_C(0xffffffffffffe) + (arg1[1])) - (arg2[1])); - uint64_t x3 = ((UINT64_C(0xffffffffffffe) + (arg1[2])) - (arg2[2])); - uint64_t x4 = ((UINT64_C(0xffffffffffffe) + (arg1[3])) - (arg2[3])); - uint64_t x5 = ((UINT64_C(0xffffffffffffe) + (arg1[4])) - (arg2[4])); +static FIAT_25519_FIAT_INLINE void fiat_25519_sub(fiat_25519_loose_field_element out1, const fiat_25519_tight_field_element arg1, const fiat_25519_tight_field_element arg2) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + x1 = ((UINT64_C(0xfffffffffffda) + (arg1[0])) - (arg2[0])); + x2 = ((UINT64_C(0xffffffffffffe) + (arg1[1])) - (arg2[1])); + x3 = ((UINT64_C(0xffffffffffffe) + (arg1[2])) - (arg2[2])); + x4 = ((UINT64_C(0xffffffffffffe) + (arg1[3])) - (arg2[3])); + x5 = ((UINT64_C(0xffffffffffffe) + (arg1[4])) - (arg2[4])); out1[0] = x1; out1[1] = x2; out1[2] = x3; @@ -307,20 +448,22 @@ /* * The function fiat_25519_opp negates a field element. + * * Postconditions: * eval out1 mod m = -eval arg1 mod m * - * Input Bounds: - * arg1: [[0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc]] - * Output Bounds: - * out1: [[0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664]] */ -static void fiat_25519_opp(uint64_t out1[5], const uint64_t arg1[5]) { - uint64_t x1 = (UINT64_C(0xfffffffffffda) - (arg1[0])); - uint64_t x2 = (UINT64_C(0xffffffffffffe) - (arg1[1])); - uint64_t x3 = (UINT64_C(0xffffffffffffe) - (arg1[2])); - uint64_t x4 = (UINT64_C(0xffffffffffffe) - (arg1[3])); - uint64_t x5 = (UINT64_C(0xffffffffffffe) - (arg1[4])); +static FIAT_25519_FIAT_INLINE void fiat_25519_opp(fiat_25519_loose_field_element out1, const fiat_25519_tight_field_element arg1) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + x1 = (UINT64_C(0xfffffffffffda) - (arg1[0])); + x2 = (UINT64_C(0xffffffffffffe) - (arg1[1])); + x3 = (UINT64_C(0xffffffffffffe) - (arg1[2])); + x4 = (UINT64_C(0xffffffffffffe) - (arg1[3])); + x5 = (UINT64_C(0xffffffffffffe) - (arg1[4])); out1[0] = x1; out1[1] = x2; out1[2] = x3; @@ -330,6 +473,7 @@ /* * The function fiat_25519_selectznz is a multi-limb conditional select. + * * Postconditions: * eval out1 = (if arg1 = 0 then eval arg2 else eval arg3) * @@ -340,16 +484,16 @@ * Output Bounds: * out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] */ -static void fiat_25519_selectznz(uint64_t out1[5], fiat_25519_uint1 arg1, const uint64_t arg2[5], const uint64_t arg3[5]) { +static FIAT_25519_FIAT_INLINE void fiat_25519_selectznz(uint64_t out1[5], fiat_25519_uint1 arg1, const uint64_t arg2[5], const uint64_t arg3[5]) { uint64_t x1; - fiat_25519_cmovznz_u64(&x1, arg1, (arg2[0]), (arg3[0])); uint64_t x2; - fiat_25519_cmovznz_u64(&x2, arg1, (arg2[1]), (arg3[1])); uint64_t x3; - fiat_25519_cmovznz_u64(&x3, arg1, (arg2[2]), (arg3[2])); uint64_t x4; - fiat_25519_cmovznz_u64(&x4, arg1, (arg2[3]), (arg3[3])); uint64_t x5; + fiat_25519_cmovznz_u64(&x1, arg1, (arg2[0]), (arg3[0])); + fiat_25519_cmovznz_u64(&x2, arg1, (arg2[1]), (arg3[1])); + fiat_25519_cmovznz_u64(&x3, arg1, (arg2[2]), (arg3[2])); + fiat_25519_cmovznz_u64(&x4, arg1, (arg2[3]), (arg3[3])); fiat_25519_cmovznz_u64(&x5, arg1, (arg2[4]), (arg3[4])); out1[0] = x1; out1[1] = x2; @@ -360,260 +504,469 @@ /* * The function fiat_25519_to_bytes serializes a field element to bytes in little-endian order. + * * Postconditions: * out1 = map (λ x, ⌊((eval arg1 mod m) mod 2^(8 * (x + 1))) / 2^(8 * x)⌋) [0..31] * - * Input Bounds: - * arg1: [[0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc]] * Output Bounds: * out1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0x7f]] */ -static void fiat_25519_to_bytes(uint8_t out1[32], const uint64_t arg1[5]) { +static FIAT_25519_FIAT_INLINE void fiat_25519_to_bytes(uint8_t out1[32], const fiat_25519_tight_field_element arg1) { uint64_t x1; fiat_25519_uint1 x2; - fiat_25519_subborrowx_u51(&x1, &x2, 0x0, (arg1[0]), UINT64_C(0x7ffffffffffed)); uint64_t x3; fiat_25519_uint1 x4; - fiat_25519_subborrowx_u51(&x3, &x4, x2, (arg1[1]), UINT64_C(0x7ffffffffffff)); uint64_t x5; fiat_25519_uint1 x6; - fiat_25519_subborrowx_u51(&x5, &x6, x4, (arg1[2]), UINT64_C(0x7ffffffffffff)); uint64_t x7; fiat_25519_uint1 x8; - fiat_25519_subborrowx_u51(&x7, &x8, x6, (arg1[3]), UINT64_C(0x7ffffffffffff)); uint64_t x9; fiat_25519_uint1 x10; - fiat_25519_subborrowx_u51(&x9, &x10, x8, (arg1[4]), UINT64_C(0x7ffffffffffff)); uint64_t x11; - fiat_25519_cmovznz_u64(&x11, x10, 0x0, UINT64_C(0xffffffffffffffff)); uint64_t x12; fiat_25519_uint1 x13; - fiat_25519_addcarryx_u51(&x12, &x13, 0x0, x1, (x11 & UINT64_C(0x7ffffffffffed))); uint64_t x14; fiat_25519_uint1 x15; - fiat_25519_addcarryx_u51(&x14, &x15, x13, x3, (x11 & UINT64_C(0x7ffffffffffff))); uint64_t x16; fiat_25519_uint1 x17; - fiat_25519_addcarryx_u51(&x16, &x17, x15, x5, (x11 & UINT64_C(0x7ffffffffffff))); uint64_t x18; fiat_25519_uint1 x19; - fiat_25519_addcarryx_u51(&x18, &x19, x17, x7, (x11 & UINT64_C(0x7ffffffffffff))); uint64_t x20; fiat_25519_uint1 x21; + uint64_t x22; + uint64_t x23; + uint64_t x24; + uint64_t x25; + uint8_t x26; + uint64_t x27; + uint8_t x28; + uint64_t x29; + uint8_t x30; + uint64_t x31; + uint8_t x32; + uint64_t x33; + uint8_t x34; + uint64_t x35; + uint8_t x36; + uint8_t x37; + uint64_t x38; + uint8_t x39; + uint64_t x40; + uint8_t x41; + uint64_t x42; + uint8_t x43; + uint64_t x44; + uint8_t x45; + uint64_t x46; + uint8_t x47; + uint64_t x48; + uint8_t x49; + uint8_t x50; + uint64_t x51; + uint8_t x52; + uint64_t x53; + uint8_t x54; + uint64_t x55; + uint8_t x56; + uint64_t x57; + uint8_t x58; + uint64_t x59; + uint8_t x60; + uint64_t x61; + uint8_t x62; + uint64_t x63; + uint8_t x64; + fiat_25519_uint1 x65; + uint64_t x66; + uint8_t x67; + uint64_t x68; + uint8_t x69; + uint64_t x70; + uint8_t x71; + uint64_t x72; + uint8_t x73; + uint64_t x74; + uint8_t x75; + uint64_t x76; + uint8_t x77; + uint8_t x78; + uint64_t x79; + uint8_t x80; + uint64_t x81; + uint8_t x82; + uint64_t x83; + uint8_t x84; + uint64_t x85; + uint8_t x86; + uint64_t x87; + uint8_t x88; + uint64_t x89; + uint8_t x90; + uint8_t x91; + fiat_25519_subborrowx_u51(&x1, &x2, 0x0, (arg1[0]), UINT64_C(0x7ffffffffffed)); + fiat_25519_subborrowx_u51(&x3, &x4, x2, (arg1[1]), UINT64_C(0x7ffffffffffff)); + fiat_25519_subborrowx_u51(&x5, &x6, x4, (arg1[2]), UINT64_C(0x7ffffffffffff)); + fiat_25519_subborrowx_u51(&x7, &x8, x6, (arg1[3]), UINT64_C(0x7ffffffffffff)); + fiat_25519_subborrowx_u51(&x9, &x10, x8, (arg1[4]), UINT64_C(0x7ffffffffffff)); + fiat_25519_cmovznz_u64(&x11, x10, 0x0, UINT64_C(0xffffffffffffffff)); + fiat_25519_addcarryx_u51(&x12, &x13, 0x0, x1, (x11 & UINT64_C(0x7ffffffffffed))); + fiat_25519_addcarryx_u51(&x14, &x15, x13, x3, (x11 & UINT64_C(0x7ffffffffffff))); + fiat_25519_addcarryx_u51(&x16, &x17, x15, x5, (x11 & UINT64_C(0x7ffffffffffff))); + fiat_25519_addcarryx_u51(&x18, &x19, x17, x7, (x11 & UINT64_C(0x7ffffffffffff))); fiat_25519_addcarryx_u51(&x20, &x21, x19, x9, (x11 & UINT64_C(0x7ffffffffffff))); - uint64_t x22 = (x20 << 4); - uint64_t x23 = (x18 * (uint64_t)0x2); - uint64_t x24 = (x16 << 6); - uint64_t x25 = (x14 << 3); - uint64_t x26 = (x12 >> 8); - uint8_t x27 = (uint8_t)(x12 & UINT8_C(0xff)); - uint64_t x28 = (x26 >> 8); - uint8_t x29 = (uint8_t)(x26 & UINT8_C(0xff)); - uint64_t x30 = (x28 >> 8); - uint8_t x31 = (uint8_t)(x28 & UINT8_C(0xff)); - uint64_t x32 = (x30 >> 8); - uint8_t x33 = (uint8_t)(x30 & UINT8_C(0xff)); - uint64_t x34 = (x32 >> 8); - uint8_t x35 = (uint8_t)(x32 & UINT8_C(0xff)); - uint8_t x36 = (uint8_t)(x34 >> 8); - uint8_t x37 = (uint8_t)(x34 & UINT8_C(0xff)); - uint64_t x38 = (x36 + x25); - uint64_t x39 = (x38 >> 8); - uint8_t x40 = (uint8_t)(x38 & UINT8_C(0xff)); - uint64_t x41 = (x39 >> 8); - uint8_t x42 = (uint8_t)(x39 & UINT8_C(0xff)); - uint64_t x43 = (x41 >> 8); - uint8_t x44 = (uint8_t)(x41 & UINT8_C(0xff)); - uint64_t x45 = (x43 >> 8); - uint8_t x46 = (uint8_t)(x43 & UINT8_C(0xff)); - uint64_t x47 = (x45 >> 8); - uint8_t x48 = (uint8_t)(x45 & UINT8_C(0xff)); - uint8_t x49 = (uint8_t)(x47 >> 8); - uint8_t x50 = (uint8_t)(x47 & UINT8_C(0xff)); - uint64_t x51 = (x49 + x24); - uint64_t x52 = (x51 >> 8); - uint8_t x53 = (uint8_t)(x51 & UINT8_C(0xff)); - uint64_t x54 = (x52 >> 8); - uint8_t x55 = (uint8_t)(x52 & UINT8_C(0xff)); - uint64_t x56 = (x54 >> 8); - uint8_t x57 = (uint8_t)(x54 & UINT8_C(0xff)); - uint64_t x58 = (x56 >> 8); - uint8_t x59 = (uint8_t)(x56 & UINT8_C(0xff)); - uint64_t x60 = (x58 >> 8); - uint8_t x61 = (uint8_t)(x58 & UINT8_C(0xff)); - uint64_t x62 = (x60 >> 8); - uint8_t x63 = (uint8_t)(x60 & UINT8_C(0xff)); - fiat_25519_uint1 x64 = (fiat_25519_uint1)(x62 >> 8); - uint8_t x65 = (uint8_t)(x62 & UINT8_C(0xff)); - uint64_t x66 = (x64 + x23); - uint64_t x67 = (x66 >> 8); - uint8_t x68 = (uint8_t)(x66 & UINT8_C(0xff)); - uint64_t x69 = (x67 >> 8); - uint8_t x70 = (uint8_t)(x67 & UINT8_C(0xff)); - uint64_t x71 = (x69 >> 8); - uint8_t x72 = (uint8_t)(x69 & UINT8_C(0xff)); - uint64_t x73 = (x71 >> 8); - uint8_t x74 = (uint8_t)(x71 & UINT8_C(0xff)); - uint64_t x75 = (x73 >> 8); - uint8_t x76 = (uint8_t)(x73 & UINT8_C(0xff)); - uint8_t x77 = (uint8_t)(x75 >> 8); - uint8_t x78 = (uint8_t)(x75 & UINT8_C(0xff)); - uint64_t x79 = (x77 + x22); - uint64_t x80 = (x79 >> 8); - uint8_t x81 = (uint8_t)(x79 & UINT8_C(0xff)); - uint64_t x82 = (x80 >> 8); - uint8_t x83 = (uint8_t)(x80 & UINT8_C(0xff)); - uint64_t x84 = (x82 >> 8); - uint8_t x85 = (uint8_t)(x82 & UINT8_C(0xff)); - uint64_t x86 = (x84 >> 8); - uint8_t x87 = (uint8_t)(x84 & UINT8_C(0xff)); - uint64_t x88 = (x86 >> 8); - uint8_t x89 = (uint8_t)(x86 & UINT8_C(0xff)); - uint8_t x90 = (uint8_t)(x88 >> 8); - uint8_t x91 = (uint8_t)(x88 & UINT8_C(0xff)); - out1[0] = x27; - out1[1] = x29; - out1[2] = x31; - out1[3] = x33; - out1[4] = x35; - out1[5] = x37; - out1[6] = x40; - out1[7] = x42; - out1[8] = x44; - out1[9] = x46; - out1[10] = x48; - out1[11] = x50; - out1[12] = x53; - out1[13] = x55; - out1[14] = x57; - out1[15] = x59; - out1[16] = x61; - out1[17] = x63; - out1[18] = x65; - out1[19] = x68; - out1[20] = x70; - out1[21] = x72; - out1[22] = x74; - out1[23] = x76; - out1[24] = x78; - out1[25] = x81; - out1[26] = x83; - out1[27] = x85; - out1[28] = x87; - out1[29] = x89; - out1[30] = x91; - out1[31] = x90; + x22 = (x20 << 4); + x23 = (x18 * (uint64_t)0x2); + x24 = (x16 << 6); + x25 = (x14 << 3); + x26 = (uint8_t)(x12 & UINT8_C(0xff)); + x27 = (x12 >> 8); + x28 = (uint8_t)(x27 & UINT8_C(0xff)); + x29 = (x27 >> 8); + x30 = (uint8_t)(x29 & UINT8_C(0xff)); + x31 = (x29 >> 8); + x32 = (uint8_t)(x31 & UINT8_C(0xff)); + x33 = (x31 >> 8); + x34 = (uint8_t)(x33 & UINT8_C(0xff)); + x35 = (x33 >> 8); + x36 = (uint8_t)(x35 & UINT8_C(0xff)); + x37 = (uint8_t)(x35 >> 8); + x38 = (x25 + (uint64_t)x37); + x39 = (uint8_t)(x38 & UINT8_C(0xff)); + x40 = (x38 >> 8); + x41 = (uint8_t)(x40 & UINT8_C(0xff)); + x42 = (x40 >> 8); + x43 = (uint8_t)(x42 & UINT8_C(0xff)); + x44 = (x42 >> 8); + x45 = (uint8_t)(x44 & UINT8_C(0xff)); + x46 = (x44 >> 8); + x47 = (uint8_t)(x46 & UINT8_C(0xff)); + x48 = (x46 >> 8); + x49 = (uint8_t)(x48 & UINT8_C(0xff)); + x50 = (uint8_t)(x48 >> 8); + x51 = (x24 + (uint64_t)x50); + x52 = (uint8_t)(x51 & UINT8_C(0xff)); + x53 = (x51 >> 8); + x54 = (uint8_t)(x53 & UINT8_C(0xff)); + x55 = (x53 >> 8); + x56 = (uint8_t)(x55 & UINT8_C(0xff)); + x57 = (x55 >> 8); + x58 = (uint8_t)(x57 & UINT8_C(0xff)); + x59 = (x57 >> 8); + x60 = (uint8_t)(x59 & UINT8_C(0xff)); + x61 = (x59 >> 8); + x62 = (uint8_t)(x61 & UINT8_C(0xff)); + x63 = (x61 >> 8); + x64 = (uint8_t)(x63 & UINT8_C(0xff)); + x65 = (fiat_25519_uint1)(x63 >> 8); + x66 = (x23 + (uint64_t)x65); + x67 = (uint8_t)(x66 & UINT8_C(0xff)); + x68 = (x66 >> 8); + x69 = (uint8_t)(x68 & UINT8_C(0xff)); + x70 = (x68 >> 8); + x71 = (uint8_t)(x70 & UINT8_C(0xff)); + x72 = (x70 >> 8); + x73 = (uint8_t)(x72 & UINT8_C(0xff)); + x74 = (x72 >> 8); + x75 = (uint8_t)(x74 & UINT8_C(0xff)); + x76 = (x74 >> 8); + x77 = (uint8_t)(x76 & UINT8_C(0xff)); + x78 = (uint8_t)(x76 >> 8); + x79 = (x22 + (uint64_t)x78); + x80 = (uint8_t)(x79 & UINT8_C(0xff)); + x81 = (x79 >> 8); + x82 = (uint8_t)(x81 & UINT8_C(0xff)); + x83 = (x81 >> 8); + x84 = (uint8_t)(x83 & UINT8_C(0xff)); + x85 = (x83 >> 8); + x86 = (uint8_t)(x85 & UINT8_C(0xff)); + x87 = (x85 >> 8); + x88 = (uint8_t)(x87 & UINT8_C(0xff)); + x89 = (x87 >> 8); + x90 = (uint8_t)(x89 & UINT8_C(0xff)); + x91 = (uint8_t)(x89 >> 8); + out1[0] = x26; + out1[1] = x28; + out1[2] = x30; + out1[3] = x32; + out1[4] = x34; + out1[5] = x36; + out1[6] = x39; + out1[7] = x41; + out1[8] = x43; + out1[9] = x45; + out1[10] = x47; + out1[11] = x49; + out1[12] = x52; + out1[13] = x54; + out1[14] = x56; + out1[15] = x58; + out1[16] = x60; + out1[17] = x62; + out1[18] = x64; + out1[19] = x67; + out1[20] = x69; + out1[21] = x71; + out1[22] = x73; + out1[23] = x75; + out1[24] = x77; + out1[25] = x80; + out1[26] = x82; + out1[27] = x84; + out1[28] = x86; + out1[29] = x88; + out1[30] = x90; + out1[31] = x91; } /* * The function fiat_25519_from_bytes deserializes a field element from bytes in little-endian order. + * * Postconditions: * eval out1 mod m = bytes_eval arg1 mod m * * Input Bounds: * arg1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0x7f]] - * Output Bounds: - * out1: [[0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc]] */ -static void fiat_25519_from_bytes(uint64_t out1[5], const uint8_t arg1[32]) { - uint64_t x1 = ((uint64_t)(arg1[31]) << 44); - uint64_t x2 = ((uint64_t)(arg1[30]) << 36); - uint64_t x3 = ((uint64_t)(arg1[29]) << 28); - uint64_t x4 = ((uint64_t)(arg1[28]) << 20); - uint64_t x5 = ((uint64_t)(arg1[27]) << 12); - uint64_t x6 = ((uint64_t)(arg1[26]) << 4); - uint64_t x7 = ((uint64_t)(arg1[25]) << 47); - uint64_t x8 = ((uint64_t)(arg1[24]) << 39); - uint64_t x9 = ((uint64_t)(arg1[23]) << 31); - uint64_t x10 = ((uint64_t)(arg1[22]) << 23); - uint64_t x11 = ((uint64_t)(arg1[21]) << 15); - uint64_t x12 = ((uint64_t)(arg1[20]) << 7); - uint64_t x13 = ((uint64_t)(arg1[19]) << 50); - uint64_t x14 = ((uint64_t)(arg1[18]) << 42); - uint64_t x15 = ((uint64_t)(arg1[17]) << 34); - uint64_t x16 = ((uint64_t)(arg1[16]) << 26); - uint64_t x17 = ((uint64_t)(arg1[15]) << 18); - uint64_t x18 = ((uint64_t)(arg1[14]) << 10); - uint64_t x19 = ((uint64_t)(arg1[13]) << 2); - uint64_t x20 = ((uint64_t)(arg1[12]) << 45); - uint64_t x21 = ((uint64_t)(arg1[11]) << 37); - uint64_t x22 = ((uint64_t)(arg1[10]) << 29); - uint64_t x23 = ((uint64_t)(arg1[9]) << 21); - uint64_t x24 = ((uint64_t)(arg1[8]) << 13); - uint64_t x25 = ((uint64_t)(arg1[7]) << 5); - uint64_t x26 = ((uint64_t)(arg1[6]) << 48); - uint64_t x27 = ((uint64_t)(arg1[5]) << 40); - uint64_t x28 = ((uint64_t)(arg1[4]) << 32); - uint64_t x29 = ((uint64_t)(arg1[3]) << 24); - uint64_t x30 = ((uint64_t)(arg1[2]) << 16); - uint64_t x31 = ((uint64_t)(arg1[1]) << 8); - uint8_t x32 = (arg1[0]); - uint64_t x33 = (x32 + (x31 + (x30 + (x29 + (x28 + (x27 + x26)))))); - uint8_t x34 = (uint8_t)(x33 >> 51); - uint64_t x35 = (x33 & UINT64_C(0x7ffffffffffff)); - uint64_t x36 = (x6 + (x5 + (x4 + (x3 + (x2 + x1))))); - uint64_t x37 = (x12 + (x11 + (x10 + (x9 + (x8 + x7))))); - uint64_t x38 = (x19 + (x18 + (x17 + (x16 + (x15 + (x14 + x13)))))); - uint64_t x39 = (x25 + (x24 + (x23 + (x22 + (x21 + x20))))); - uint64_t x40 = (x34 + x39); - uint8_t x41 = (uint8_t)(x40 >> 51); - uint64_t x42 = (x40 & UINT64_C(0x7ffffffffffff)); - uint64_t x43 = (x41 + x38); - uint8_t x44 = (uint8_t)(x43 >> 51); - uint64_t x45 = (x43 & UINT64_C(0x7ffffffffffff)); - uint64_t x46 = (x44 + x37); - uint8_t x47 = (uint8_t)(x46 >> 51); - uint64_t x48 = (x46 & UINT64_C(0x7ffffffffffff)); - uint64_t x49 = (x47 + x36); - out1[0] = x35; - out1[1] = x42; - out1[2] = x45; - out1[3] = x48; - out1[4] = x49; +static FIAT_25519_FIAT_INLINE void fiat_25519_from_bytes(fiat_25519_tight_field_element out1, const uint8_t arg1[32]) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + uint64_t x9; + uint64_t x10; + uint64_t x11; + uint64_t x12; + uint64_t x13; + uint64_t x14; + uint64_t x15; + uint64_t x16; + uint64_t x17; + uint64_t x18; + uint64_t x19; + uint64_t x20; + uint64_t x21; + uint64_t x22; + uint64_t x23; + uint64_t x24; + uint64_t x25; + uint64_t x26; + uint64_t x27; + uint64_t x28; + uint64_t x29; + uint64_t x30; + uint64_t x31; + uint8_t x32; + uint64_t x33; + uint64_t x34; + uint64_t x35; + uint64_t x36; + uint64_t x37; + uint64_t x38; + uint64_t x39; + uint8_t x40; + uint64_t x41; + uint64_t x42; + uint64_t x43; + uint64_t x44; + uint64_t x45; + uint64_t x46; + uint64_t x47; + uint8_t x48; + uint64_t x49; + uint64_t x50; + uint64_t x51; + uint64_t x52; + uint64_t x53; + uint64_t x54; + uint64_t x55; + uint64_t x56; + uint8_t x57; + uint64_t x58; + uint64_t x59; + uint64_t x60; + uint64_t x61; + uint64_t x62; + uint64_t x63; + uint64_t x64; + uint8_t x65; + uint64_t x66; + uint64_t x67; + uint64_t x68; + uint64_t x69; + uint64_t x70; + uint64_t x71; + x1 = ((uint64_t)(arg1[31]) << 44); + x2 = ((uint64_t)(arg1[30]) << 36); + x3 = ((uint64_t)(arg1[29]) << 28); + x4 = ((uint64_t)(arg1[28]) << 20); + x5 = ((uint64_t)(arg1[27]) << 12); + x6 = ((uint64_t)(arg1[26]) << 4); + x7 = ((uint64_t)(arg1[25]) << 47); + x8 = ((uint64_t)(arg1[24]) << 39); + x9 = ((uint64_t)(arg1[23]) << 31); + x10 = ((uint64_t)(arg1[22]) << 23); + x11 = ((uint64_t)(arg1[21]) << 15); + x12 = ((uint64_t)(arg1[20]) << 7); + x13 = ((uint64_t)(arg1[19]) << 50); + x14 = ((uint64_t)(arg1[18]) << 42); + x15 = ((uint64_t)(arg1[17]) << 34); + x16 = ((uint64_t)(arg1[16]) << 26); + x17 = ((uint64_t)(arg1[15]) << 18); + x18 = ((uint64_t)(arg1[14]) << 10); + x19 = ((uint64_t)(arg1[13]) << 2); + x20 = ((uint64_t)(arg1[12]) << 45); + x21 = ((uint64_t)(arg1[11]) << 37); + x22 = ((uint64_t)(arg1[10]) << 29); + x23 = ((uint64_t)(arg1[9]) << 21); + x24 = ((uint64_t)(arg1[8]) << 13); + x25 = ((uint64_t)(arg1[7]) << 5); + x26 = ((uint64_t)(arg1[6]) << 48); + x27 = ((uint64_t)(arg1[5]) << 40); + x28 = ((uint64_t)(arg1[4]) << 32); + x29 = ((uint64_t)(arg1[3]) << 24); + x30 = ((uint64_t)(arg1[2]) << 16); + x31 = ((uint64_t)(arg1[1]) << 8); + x32 = (arg1[0]); + x33 = (x31 + (uint64_t)x32); + x34 = (x30 + x33); + x35 = (x29 + x34); + x36 = (x28 + x35); + x37 = (x27 + x36); + x38 = (x26 + x37); + x39 = (x38 & UINT64_C(0x7ffffffffffff)); + x40 = (uint8_t)(x38 >> 51); + x41 = (x25 + (uint64_t)x40); + x42 = (x24 + x41); + x43 = (x23 + x42); + x44 = (x22 + x43); + x45 = (x21 + x44); + x46 = (x20 + x45); + x47 = (x46 & UINT64_C(0x7ffffffffffff)); + x48 = (uint8_t)(x46 >> 51); + x49 = (x19 + (uint64_t)x48); + x50 = (x18 + x49); + x51 = (x17 + x50); + x52 = (x16 + x51); + x53 = (x15 + x52); + x54 = (x14 + x53); + x55 = (x13 + x54); + x56 = (x55 & UINT64_C(0x7ffffffffffff)); + x57 = (uint8_t)(x55 >> 51); + x58 = (x12 + (uint64_t)x57); + x59 = (x11 + x58); + x60 = (x10 + x59); + x61 = (x9 + x60); + x62 = (x8 + x61); + x63 = (x7 + x62); + x64 = (x63 & UINT64_C(0x7ffffffffffff)); + x65 = (uint8_t)(x63 >> 51); + x66 = (x6 + (uint64_t)x65); + x67 = (x5 + x66); + x68 = (x4 + x67); + x69 = (x3 + x68); + x70 = (x2 + x69); + x71 = (x1 + x70); + out1[0] = x39; + out1[1] = x47; + out1[2] = x56; + out1[3] = x64; + out1[4] = x71; +} + +/* + * The function fiat_25519_relax is the identity function converting from tight field elements to loose field elements. + * + * Postconditions: + * out1 = arg1 + * + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_relax(fiat_25519_loose_field_element out1, const fiat_25519_tight_field_element arg1) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + x1 = (arg1[0]); + x2 = (arg1[1]); + x3 = (arg1[2]); + x4 = (arg1[3]); + x5 = (arg1[4]); + out1[0] = x1; + out1[1] = x2; + out1[2] = x3; + out1[3] = x4; + out1[4] = x5; } /* * The function fiat_25519_carry_scmul_121666 multiplies a field element by 121666 and reduces the result. + * * Postconditions: * eval out1 mod m = (121666 * eval arg1) mod m * - * Input Bounds: - * arg1: [[0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664], [0x0 ~> 0x1a666666666664]] - * Output Bounds: - * out1: [[0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc], [0x0 ~> 0x8cccccccccccc]] */ -static void fiat_25519_carry_scmul_121666(uint64_t out1[5], const uint64_t arg1[5]) { - fiat_25519_uint128 x1 = ((fiat_25519_uint128)UINT32_C(0x1db42) * (arg1[4])); - fiat_25519_uint128 x2 = ((fiat_25519_uint128)UINT32_C(0x1db42) * (arg1[3])); - fiat_25519_uint128 x3 = ((fiat_25519_uint128)UINT32_C(0x1db42) * (arg1[2])); - fiat_25519_uint128 x4 = ((fiat_25519_uint128)UINT32_C(0x1db42) * (arg1[1])); - fiat_25519_uint128 x5 = ((fiat_25519_uint128)UINT32_C(0x1db42) * (arg1[0])); - uint64_t x6 = (uint64_t)(x5 >> 51); - uint64_t x7 = (uint64_t)(x5 & UINT64_C(0x7ffffffffffff)); - fiat_25519_uint128 x8 = (x6 + x4); - uint64_t x9 = (uint64_t)(x8 >> 51); - uint64_t x10 = (uint64_t)(x8 & UINT64_C(0x7ffffffffffff)); - fiat_25519_uint128 x11 = (x9 + x3); - uint64_t x12 = (uint64_t)(x11 >> 51); - uint64_t x13 = (uint64_t)(x11 & UINT64_C(0x7ffffffffffff)); - fiat_25519_uint128 x14 = (x12 + x2); - uint64_t x15 = (uint64_t)(x14 >> 51); - uint64_t x16 = (uint64_t)(x14 & UINT64_C(0x7ffffffffffff)); - fiat_25519_uint128 x17 = (x15 + x1); - uint64_t x18 = (uint64_t)(x17 >> 51); - uint64_t x19 = (uint64_t)(x17 & UINT64_C(0x7ffffffffffff)); - uint64_t x20 = (x18 * UINT8_C(0x13)); - uint64_t x21 = (x7 + x20); - fiat_25519_uint1 x22 = (fiat_25519_uint1)(x21 >> 51); - uint64_t x23 = (x21 & UINT64_C(0x7ffffffffffff)); - uint64_t x24 = (x22 + x10); - fiat_25519_uint1 x25 = (fiat_25519_uint1)(x24 >> 51); - uint64_t x26 = (x24 & UINT64_C(0x7ffffffffffff)); - uint64_t x27 = (x25 + x13); +static FIAT_25519_FIAT_INLINE void fiat_25519_carry_scmul_121666(fiat_25519_tight_field_element out1, const fiat_25519_loose_field_element arg1) { + fiat_25519_uint128 x1; + fiat_25519_uint128 x2; + fiat_25519_uint128 x3; + fiat_25519_uint128 x4; + fiat_25519_uint128 x5; + uint64_t x6; + uint64_t x7; + fiat_25519_uint128 x8; + uint64_t x9; + uint64_t x10; + fiat_25519_uint128 x11; + uint64_t x12; + uint64_t x13; + fiat_25519_uint128 x14; + uint64_t x15; + uint64_t x16; + fiat_25519_uint128 x17; + uint64_t x18; + uint64_t x19; + uint64_t x20; + uint64_t x21; + fiat_25519_uint1 x22; + uint64_t x23; + uint64_t x24; + fiat_25519_uint1 x25; + uint64_t x26; + uint64_t x27; + x1 = ((fiat_25519_uint128)UINT32_C(0x1db42) * (arg1[4])); + x2 = ((fiat_25519_uint128)UINT32_C(0x1db42) * (arg1[3])); + x3 = ((fiat_25519_uint128)UINT32_C(0x1db42) * (arg1[2])); + x4 = ((fiat_25519_uint128)UINT32_C(0x1db42) * (arg1[1])); + x5 = ((fiat_25519_uint128)UINT32_C(0x1db42) * (arg1[0])); + x6 = (uint64_t)(x5 >> 51); + x7 = (uint64_t)(x5 & UINT64_C(0x7ffffffffffff)); + x8 = (x6 + x4); + x9 = (uint64_t)(x8 >> 51); + x10 = (uint64_t)(x8 & UINT64_C(0x7ffffffffffff)); + x11 = (x9 + x3); + x12 = (uint64_t)(x11 >> 51); + x13 = (uint64_t)(x11 & UINT64_C(0x7ffffffffffff)); + x14 = (x12 + x2); + x15 = (uint64_t)(x14 >> 51); + x16 = (uint64_t)(x14 & UINT64_C(0x7ffffffffffff)); + x17 = (x15 + x1); + x18 = (uint64_t)(x17 >> 51); + x19 = (uint64_t)(x17 & UINT64_C(0x7ffffffffffff)); + x20 = (x18 * UINT8_C(0x13)); + x21 = (x7 + x20); + x22 = (fiat_25519_uint1)(x21 >> 51); + x23 = (x21 & UINT64_C(0x7ffffffffffff)); + x24 = (x22 + x10); + x25 = (fiat_25519_uint1)(x24 >> 51); + x26 = (x24 & UINT64_C(0x7ffffffffffff)); + x27 = (x25 + x13); out1[0] = x23; out1[1] = x26; out1[2] = x27; out1[3] = x16; out1[4] = x19; } - diff -Nru temporalio-1.3.0/vendor/ring/third_party/fiat/curve25519_64_msvc.h temporalio-1.3.0/vendor/ring/third_party/fiat/curve25519_64_msvc.h --- temporalio-1.3.0/vendor/ring/third_party/fiat/curve25519_64_msvc.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/third_party/fiat/curve25519_64_msvc.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1281 @@ +/* Autogenerated: 'src/ExtractionOCaml/unsaturated_solinas' --inline --static --use-value-barrier --no-wide-int 25519 64 '(auto)' '2^255 - 19' carry_mul carry_square carry add sub opp selectznz to_bytes from_bytes relax carry_scmul121666 */ +/* curve description: 25519 */ +/* machine_wordsize = 64 (from "64") */ +/* requested operations: carry_mul, carry_square, carry, add, sub, opp, selectznz, to_bytes, from_bytes, relax, carry_scmul121666 */ +/* n = 5 (from "(auto)") */ +/* s-c = 2^255 - [(1, 19)] (from "2^255 - 19") */ +/* tight_bounds_multiplier = 1 (from "") */ +/* */ +/* Computed values: */ +/* carry_chain = [0, 1, 2, 3, 4, 0, 1] */ +/* eval z = z[0] + (z[1] << 51) + (z[2] << 102) + (z[3] << 153) + (z[4] << 204) */ +/* bytes_eval z = z[0] + (z[1] << 8) + (z[2] << 16) + (z[3] << 24) + (z[4] << 32) + (z[5] << 40) + (z[6] << 48) + (z[7] << 56) + (z[8] << 64) + (z[9] << 72) + (z[10] << 80) + (z[11] << 88) + (z[12] << 96) + (z[13] << 104) + (z[14] << 112) + (z[15] << 120) + (z[16] << 128) + (z[17] << 136) + (z[18] << 144) + (z[19] << 152) + (z[20] << 160) + (z[21] << 168) + (z[22] << 176) + (z[23] << 184) + (z[24] << 192) + (z[25] << 200) + (z[26] << 208) + (z[27] << 216) + (z[28] << 224) + (z[29] << 232) + (z[30] << 240) + (z[31] << 248) */ +/* balance = [0xfffffffffffda, 0xffffffffffffe, 0xffffffffffffe, 0xffffffffffffe, 0xffffffffffffe] */ + +#include +#include +#if defined(_M_X64) +#include +#endif + +typedef unsigned char fiat_25519_uint1; +typedef signed char fiat_25519_int1; + +#define FIAT_25519_FIAT_INLINE inline + +/* The type fiat_25519_loose_field_element is a field element with loose bounds. */ +/* Bounds: [[0x0 ~> 0x18000000000000], [0x0 ~> 0x18000000000000], [0x0 ~> 0x18000000000000], [0x0 ~> 0x18000000000000], [0x0 ~> 0x18000000000000]] */ +typedef uint64_t fiat_25519_loose_field_element[5]; + +/* The type fiat_25519_tight_field_element is a field element with tight bounds. */ +/* Bounds: [[0x0 ~> 0x8000000000000], [0x0 ~> 0x8000000000000], [0x0 ~> 0x8000000000000], [0x0 ~> 0x8000000000000], [0x0 ~> 0x8000000000000]] */ +typedef uint64_t fiat_25519_tight_field_element[5]; + +#if (-1 & 3) != 3 +#error "This code only works on a two's complement system" +#endif + +#define fiat_25519_value_barrier_u64(x) (x) + +/* + * The function fiat_25519_addcarryx_u64 is an addition with carry. + * + * Postconditions: + * out1 = (arg1 + arg2 + arg3) mod 2^64 + * out2 = ⌊(arg1 + arg2 + arg3) / 2^64⌋ + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [0x0 ~> 0xffffffffffffffff] + * arg3: [0x0 ~> 0xffffffffffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + * out2: [0x0 ~> 0x1] + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_addcarryx_u64(uint64_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint64_t arg2, uint64_t arg3) { +// NOTE: edited after generation +#if defined(_M_X64) + *out2 = _addcarry_u64(arg1, arg2, arg3, out1); +#else + arg2 += arg1; + arg1 = arg2 < arg1; + arg3 += arg2; + arg1 += arg3 < arg2; + *out1 = arg3; + *out2 = arg1; +#endif +} + +/* + * The function fiat_25519_subborrowx_u64 is a subtraction with borrow. + * + * Postconditions: + * out1 = (-arg1 + arg2 + -arg3) mod 2^64 + * out2 = -⌊(-arg1 + arg2 + -arg3) / 2^64⌋ + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [0x0 ~> 0xffffffffffffffff] + * arg3: [0x0 ~> 0xffffffffffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + * out2: [0x0 ~> 0x1] + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_subborrowx_u64(uint64_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint64_t arg2, uint64_t arg3) { +#if defined(_M_X64) + *out2 = _subborrow_u64(arg1, arg2, arg3, out1); // NOTE: edited after generation +#else + *out1 = arg2 - arg3 - arg1; + *out2 = (arg2 < arg3) | ((arg2 == arg3) & arg1); +#endif +} + +/* + * The function fiat_25519_addcarryx_u51 is an addition with carry. + * + * Postconditions: + * out1 = (arg1 + arg2 + arg3) mod 2^51 + * out2 = ⌊(arg1 + arg2 + arg3) / 2^51⌋ + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [0x0 ~> 0x7ffffffffffff] + * arg3: [0x0 ~> 0x7ffffffffffff] + * Output Bounds: + * out1: [0x0 ~> 0x7ffffffffffff] + * out2: [0x0 ~> 0x1] + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_addcarryx_u51(uint64_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint64_t arg2, uint64_t arg3) { + uint64_t x1; + uint64_t x2; + fiat_25519_uint1 x3; + x1 = ((arg1 + arg2) + arg3); + x2 = (x1 & UINT64_C(0x7ffffffffffff)); + x3 = (fiat_25519_uint1)(x1 >> 51); + *out1 = x2; + *out2 = x3; +} + +/* + * The function fiat_25519_subborrowx_u51 is a subtraction with borrow. + * + * Postconditions: + * out1 = (-arg1 + arg2 + -arg3) mod 2^51 + * out2 = -⌊(-arg1 + arg2 + -arg3) / 2^51⌋ + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [0x0 ~> 0x7ffffffffffff] + * arg3: [0x0 ~> 0x7ffffffffffff] + * Output Bounds: + * out1: [0x0 ~> 0x7ffffffffffff] + * out2: [0x0 ~> 0x1] + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_subborrowx_u51(uint64_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint64_t arg2, uint64_t arg3) { + int64_t x1; + fiat_25519_int1 x2; + uint64_t x3; + x1 = ((int64_t)(arg2 - (int64_t)arg1) - (int64_t)arg3); + x2 = (fiat_25519_int1)(x1 >> 51); + x3 = (x1 & UINT64_C(0x7ffffffffffff)); + *out1 = x3; + *out2 = (fiat_25519_uint1)(0x0 - x2); +} + +/* + * The function fiat_25519_mulx_u64 is a multiplication, returning the full double-width result. + * + * Postconditions: + * out1 = (arg1 * arg2) mod 2^64 + * out2 = ⌊arg1 * arg2 / 2^64⌋ + * + * Input Bounds: + * arg1: [0x0 ~> 0xffffffffffffffff] + * arg2: [0x0 ~> 0xffffffffffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + * out2: [0x0 ~> 0xffffffffffffffff] + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_mulx_u64(uint64_t* out1, uint64_t* out2, uint64_t arg1, uint64_t arg2) { +// NOTE: edited after generation +#if defined(_M_X64) + *out1 = _umul128(arg1, arg2, out2); +#elif defined(_M_ARM64) + *out1 = arg1 * arg2; + *out2 = __umulh(arg1, arg2); +#else +#error "This file is intended for MSVC on X64 or ARM64" +#endif +} + +/* + * The function fiat_25519_cmovznz_u64 is a single-word conditional move. + * + * Postconditions: + * out1 = (if arg1 = 0 then arg2 else arg3) + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [0x0 ~> 0xffffffffffffffff] + * arg3: [0x0 ~> 0xffffffffffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_cmovznz_u64(uint64_t* out1, fiat_25519_uint1 arg1, uint64_t arg2, uint64_t arg3) { + fiat_25519_uint1 x1; + uint64_t x2; + uint64_t x3; + x1 = (!(!arg1)); + x2 = ((fiat_25519_int1)(0x0 - x1) & UINT64_C(0xffffffffffffffff)); + x3 = ((fiat_25519_value_barrier_u64(x2) & arg3) | (fiat_25519_value_barrier_u64((~x2)) & arg2)); + *out1 = x3; +} + +/* + * The function fiat_25519_carry_mul multiplies two field elements and reduces the result. + * + * Postconditions: + * eval out1 mod m = (eval arg1 * eval arg2) mod m + * + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_carry_mul(fiat_25519_tight_field_element out1, const fiat_25519_loose_field_element arg1, const fiat_25519_loose_field_element arg2) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + uint64_t x9; + uint64_t x10; + uint64_t x11; + uint64_t x12; + uint64_t x13; + uint64_t x14; + uint64_t x15; + uint64_t x16; + uint64_t x17; + uint64_t x18; + uint64_t x19; + uint64_t x20; + uint64_t x21; + uint64_t x22; + uint64_t x23; + uint64_t x24; + uint64_t x25; + uint64_t x26; + uint64_t x27; + uint64_t x28; + uint64_t x29; + uint64_t x30; + uint64_t x31; + uint64_t x32; + uint64_t x33; + uint64_t x34; + uint64_t x35; + uint64_t x36; + uint64_t x37; + uint64_t x38; + uint64_t x39; + uint64_t x40; + uint64_t x41; + uint64_t x42; + uint64_t x43; + uint64_t x44; + uint64_t x45; + uint64_t x46; + uint64_t x47; + uint64_t x48; + uint64_t x49; + uint64_t x50; + uint64_t x51; + fiat_25519_uint1 x52; + uint64_t x53; + fiat_25519_uint1 x54; + uint64_t x55; + fiat_25519_uint1 x56; + uint64_t x57; + fiat_25519_uint1 x58; + uint64_t x59; + fiat_25519_uint1 x60; + uint64_t x61; + fiat_25519_uint1 x62; + uint64_t x63; + fiat_25519_uint1 x64; + uint64_t x65; + fiat_25519_uint1 x66; + uint64_t x67; + uint64_t x68; + uint64_t x69; + fiat_25519_uint1 x70; + uint64_t x71; + fiat_25519_uint1 x72; + uint64_t x73; + fiat_25519_uint1 x74; + uint64_t x75; + fiat_25519_uint1 x76; + uint64_t x77; + fiat_25519_uint1 x78; + uint64_t x79; + fiat_25519_uint1 x80; + uint64_t x81; + fiat_25519_uint1 x82; + uint64_t x83; + fiat_25519_uint1 x84; + uint64_t x85; + fiat_25519_uint1 x86; + uint64_t x87; + fiat_25519_uint1 x88; + uint64_t x89; + fiat_25519_uint1 x90; + uint64_t x91; + fiat_25519_uint1 x92; + uint64_t x93; + fiat_25519_uint1 x94; + uint64_t x95; + fiat_25519_uint1 x96; + uint64_t x97; + fiat_25519_uint1 x98; + uint64_t x99; + fiat_25519_uint1 x100; + uint64_t x101; + fiat_25519_uint1 x102; + uint64_t x103; + fiat_25519_uint1 x104; + uint64_t x105; + fiat_25519_uint1 x106; + uint64_t x107; + fiat_25519_uint1 x108; + uint64_t x109; + fiat_25519_uint1 x110; + uint64_t x111; + fiat_25519_uint1 x112; + uint64_t x113; + fiat_25519_uint1 x114; + uint64_t x115; + fiat_25519_uint1 x116; + uint64_t x117; + fiat_25519_uint1 x118; + uint64_t x119; + fiat_25519_uint1 x120; + uint64_t x121; + fiat_25519_uint1 x122; + uint64_t x123; + fiat_25519_uint1 x124; + uint64_t x125; + fiat_25519_uint1 x126; + uint64_t x127; + fiat_25519_uint1 x128; + uint64_t x129; + fiat_25519_uint1 x130; + uint64_t x131; + fiat_25519_uint1 x132; + uint64_t x133; + fiat_25519_uint1 x134; + uint64_t x135; + uint64_t x136; + uint64_t x137; + uint64_t x138; + fiat_25519_uint1 x139; + uint64_t x140; + uint64_t x141; + uint64_t x142; + uint64_t x143; + fiat_25519_uint1 x144; + uint64_t x145; + uint64_t x146; + uint64_t x147; + uint64_t x148; + fiat_25519_uint1 x149; + uint64_t x150; + uint64_t x151; + uint64_t x152; + uint64_t x153; + uint64_t x154; + uint64_t x155; + uint64_t x156; + uint64_t x157; + fiat_25519_uint1 x158; + uint64_t x159; + uint64_t x160; + fiat_25519_mulx_u64(&x1, &x2, (arg1[4]), ((arg2[4]) * UINT8_C(0x13))); + fiat_25519_mulx_u64(&x3, &x4, (arg1[4]), ((arg2[3]) * UINT8_C(0x13))); + fiat_25519_mulx_u64(&x5, &x6, (arg1[4]), ((arg2[2]) * UINT8_C(0x13))); + fiat_25519_mulx_u64(&x7, &x8, (arg1[4]), ((arg2[1]) * UINT8_C(0x13))); + fiat_25519_mulx_u64(&x9, &x10, (arg1[3]), ((arg2[4]) * UINT8_C(0x13))); + fiat_25519_mulx_u64(&x11, &x12, (arg1[3]), ((arg2[3]) * UINT8_C(0x13))); + fiat_25519_mulx_u64(&x13, &x14, (arg1[3]), ((arg2[2]) * UINT8_C(0x13))); + fiat_25519_mulx_u64(&x15, &x16, (arg1[2]), ((arg2[4]) * UINT8_C(0x13))); + fiat_25519_mulx_u64(&x17, &x18, (arg1[2]), ((arg2[3]) * UINT8_C(0x13))); + fiat_25519_mulx_u64(&x19, &x20, (arg1[1]), ((arg2[4]) * UINT8_C(0x13))); + fiat_25519_mulx_u64(&x21, &x22, (arg1[4]), (arg2[0])); + fiat_25519_mulx_u64(&x23, &x24, (arg1[3]), (arg2[1])); + fiat_25519_mulx_u64(&x25, &x26, (arg1[3]), (arg2[0])); + fiat_25519_mulx_u64(&x27, &x28, (arg1[2]), (arg2[2])); + fiat_25519_mulx_u64(&x29, &x30, (arg1[2]), (arg2[1])); + fiat_25519_mulx_u64(&x31, &x32, (arg1[2]), (arg2[0])); + fiat_25519_mulx_u64(&x33, &x34, (arg1[1]), (arg2[3])); + fiat_25519_mulx_u64(&x35, &x36, (arg1[1]), (arg2[2])); + fiat_25519_mulx_u64(&x37, &x38, (arg1[1]), (arg2[1])); + fiat_25519_mulx_u64(&x39, &x40, (arg1[1]), (arg2[0])); + fiat_25519_mulx_u64(&x41, &x42, (arg1[0]), (arg2[4])); + fiat_25519_mulx_u64(&x43, &x44, (arg1[0]), (arg2[3])); + fiat_25519_mulx_u64(&x45, &x46, (arg1[0]), (arg2[2])); + fiat_25519_mulx_u64(&x47, &x48, (arg1[0]), (arg2[1])); + fiat_25519_mulx_u64(&x49, &x50, (arg1[0]), (arg2[0])); + fiat_25519_addcarryx_u64(&x51, &x52, 0x0, x13, x7); + fiat_25519_addcarryx_u64(&x53, &x54, x52, x14, x8); + fiat_25519_addcarryx_u64(&x55, &x56, 0x0, x17, x51); + fiat_25519_addcarryx_u64(&x57, &x58, x56, x18, x53); + fiat_25519_addcarryx_u64(&x59, &x60, 0x0, x19, x55); + fiat_25519_addcarryx_u64(&x61, &x62, x60, x20, x57); + fiat_25519_addcarryx_u64(&x63, &x64, 0x0, x49, x59); + fiat_25519_addcarryx_u64(&x65, &x66, x64, x50, x61); + x67 = ((x63 >> 51) | ((x65 << 13) & UINT64_C(0xffffffffffffffff))); + x68 = (x63 & UINT64_C(0x7ffffffffffff)); + fiat_25519_addcarryx_u64(&x69, &x70, 0x0, x23, x21); + fiat_25519_addcarryx_u64(&x71, &x72, x70, x24, x22); + fiat_25519_addcarryx_u64(&x73, &x74, 0x0, x27, x69); + fiat_25519_addcarryx_u64(&x75, &x76, x74, x28, x71); + fiat_25519_addcarryx_u64(&x77, &x78, 0x0, x33, x73); + fiat_25519_addcarryx_u64(&x79, &x80, x78, x34, x75); + fiat_25519_addcarryx_u64(&x81, &x82, 0x0, x41, x77); + fiat_25519_addcarryx_u64(&x83, &x84, x82, x42, x79); + fiat_25519_addcarryx_u64(&x85, &x86, 0x0, x25, x1); + fiat_25519_addcarryx_u64(&x87, &x88, x86, x26, x2); + fiat_25519_addcarryx_u64(&x89, &x90, 0x0, x29, x85); + fiat_25519_addcarryx_u64(&x91, &x92, x90, x30, x87); + fiat_25519_addcarryx_u64(&x93, &x94, 0x0, x35, x89); + fiat_25519_addcarryx_u64(&x95, &x96, x94, x36, x91); + fiat_25519_addcarryx_u64(&x97, &x98, 0x0, x43, x93); + fiat_25519_addcarryx_u64(&x99, &x100, x98, x44, x95); + fiat_25519_addcarryx_u64(&x101, &x102, 0x0, x9, x3); + fiat_25519_addcarryx_u64(&x103, &x104, x102, x10, x4); + fiat_25519_addcarryx_u64(&x105, &x106, 0x0, x31, x101); + fiat_25519_addcarryx_u64(&x107, &x108, x106, x32, x103); + fiat_25519_addcarryx_u64(&x109, &x110, 0x0, x37, x105); + fiat_25519_addcarryx_u64(&x111, &x112, x110, x38, x107); + fiat_25519_addcarryx_u64(&x113, &x114, 0x0, x45, x109); + fiat_25519_addcarryx_u64(&x115, &x116, x114, x46, x111); + fiat_25519_addcarryx_u64(&x117, &x118, 0x0, x11, x5); + fiat_25519_addcarryx_u64(&x119, &x120, x118, x12, x6); + fiat_25519_addcarryx_u64(&x121, &x122, 0x0, x15, x117); + fiat_25519_addcarryx_u64(&x123, &x124, x122, x16, x119); + fiat_25519_addcarryx_u64(&x125, &x126, 0x0, x39, x121); + fiat_25519_addcarryx_u64(&x127, &x128, x126, x40, x123); + fiat_25519_addcarryx_u64(&x129, &x130, 0x0, x47, x125); + fiat_25519_addcarryx_u64(&x131, &x132, x130, x48, x127); + fiat_25519_addcarryx_u64(&x133, &x134, 0x0, x67, x129); + x135 = (x134 + x131); + x136 = ((x133 >> 51) | ((x135 << 13) & UINT64_C(0xffffffffffffffff))); + x137 = (x133 & UINT64_C(0x7ffffffffffff)); + fiat_25519_addcarryx_u64(&x138, &x139, 0x0, x136, x113); + x140 = (x139 + x115); + x141 = ((x138 >> 51) | ((x140 << 13) & UINT64_C(0xffffffffffffffff))); + x142 = (x138 & UINT64_C(0x7ffffffffffff)); + fiat_25519_addcarryx_u64(&x143, &x144, 0x0, x141, x97); + x145 = (x144 + x99); + x146 = ((x143 >> 51) | ((x145 << 13) & UINT64_C(0xffffffffffffffff))); + x147 = (x143 & UINT64_C(0x7ffffffffffff)); + fiat_25519_addcarryx_u64(&x148, &x149, 0x0, x146, x81); + x150 = (x149 + x83); + x151 = ((x148 >> 51) | ((x150 << 13) & UINT64_C(0xffffffffffffffff))); + x152 = (x148 & UINT64_C(0x7ffffffffffff)); + x153 = (x151 * UINT8_C(0x13)); + x154 = (x68 + x153); + x155 = (x154 >> 51); + x156 = (x154 & UINT64_C(0x7ffffffffffff)); + x157 = (x155 + x137); + x158 = (fiat_25519_uint1)(x157 >> 51); + x159 = (x157 & UINT64_C(0x7ffffffffffff)); + x160 = (x158 + x142); + out1[0] = x156; + out1[1] = x159; + out1[2] = x160; + out1[3] = x147; + out1[4] = x152; +} + +/* + * The function fiat_25519_carry_square squares a field element and reduces the result. + * + * Postconditions: + * eval out1 mod m = (eval arg1 * eval arg1) mod m + * + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_carry_square(fiat_25519_tight_field_element out1, const fiat_25519_loose_field_element arg1) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + uint64_t x9; + uint64_t x10; + uint64_t x11; + uint64_t x12; + uint64_t x13; + uint64_t x14; + uint64_t x15; + uint64_t x16; + uint64_t x17; + uint64_t x18; + uint64_t x19; + uint64_t x20; + uint64_t x21; + uint64_t x22; + uint64_t x23; + uint64_t x24; + uint64_t x25; + uint64_t x26; + uint64_t x27; + uint64_t x28; + uint64_t x29; + uint64_t x30; + uint64_t x31; + uint64_t x32; + uint64_t x33; + uint64_t x34; + uint64_t x35; + uint64_t x36; + uint64_t x37; + uint64_t x38; + uint64_t x39; + fiat_25519_uint1 x40; + uint64_t x41; + fiat_25519_uint1 x42; + uint64_t x43; + fiat_25519_uint1 x44; + uint64_t x45; + fiat_25519_uint1 x46; + uint64_t x47; + uint64_t x48; + uint64_t x49; + fiat_25519_uint1 x50; + uint64_t x51; + fiat_25519_uint1 x52; + uint64_t x53; + fiat_25519_uint1 x54; + uint64_t x55; + fiat_25519_uint1 x56; + uint64_t x57; + fiat_25519_uint1 x58; + uint64_t x59; + fiat_25519_uint1 x60; + uint64_t x61; + fiat_25519_uint1 x62; + uint64_t x63; + fiat_25519_uint1 x64; + uint64_t x65; + fiat_25519_uint1 x66; + uint64_t x67; + fiat_25519_uint1 x68; + uint64_t x69; + fiat_25519_uint1 x70; + uint64_t x71; + fiat_25519_uint1 x72; + uint64_t x73; + fiat_25519_uint1 x74; + uint64_t x75; + fiat_25519_uint1 x76; + uint64_t x77; + fiat_25519_uint1 x78; + uint64_t x79; + fiat_25519_uint1 x80; + uint64_t x81; + fiat_25519_uint1 x82; + uint64_t x83; + uint64_t x84; + uint64_t x85; + uint64_t x86; + fiat_25519_uint1 x87; + uint64_t x88; + uint64_t x89; + uint64_t x90; + uint64_t x91; + fiat_25519_uint1 x92; + uint64_t x93; + uint64_t x94; + uint64_t x95; + uint64_t x96; + fiat_25519_uint1 x97; + uint64_t x98; + uint64_t x99; + uint64_t x100; + uint64_t x101; + uint64_t x102; + uint64_t x103; + uint64_t x104; + uint64_t x105; + fiat_25519_uint1 x106; + uint64_t x107; + uint64_t x108; + x1 = ((arg1[4]) * UINT8_C(0x13)); + x2 = (x1 * 0x2); + x3 = ((arg1[4]) * 0x2); + x4 = ((arg1[3]) * UINT8_C(0x13)); + x5 = (x4 * 0x2); + x6 = ((arg1[3]) * 0x2); + x7 = ((arg1[2]) * 0x2); + x8 = ((arg1[1]) * 0x2); + fiat_25519_mulx_u64(&x9, &x10, (arg1[4]), x1); + fiat_25519_mulx_u64(&x11, &x12, (arg1[3]), x2); + fiat_25519_mulx_u64(&x13, &x14, (arg1[3]), x4); + fiat_25519_mulx_u64(&x15, &x16, (arg1[2]), x2); + fiat_25519_mulx_u64(&x17, &x18, (arg1[2]), x5); + fiat_25519_mulx_u64(&x19, &x20, (arg1[2]), (arg1[2])); + fiat_25519_mulx_u64(&x21, &x22, (arg1[1]), x2); + fiat_25519_mulx_u64(&x23, &x24, (arg1[1]), x6); + fiat_25519_mulx_u64(&x25, &x26, (arg1[1]), x7); + fiat_25519_mulx_u64(&x27, &x28, (arg1[1]), (arg1[1])); + fiat_25519_mulx_u64(&x29, &x30, (arg1[0]), x3); + fiat_25519_mulx_u64(&x31, &x32, (arg1[0]), x6); + fiat_25519_mulx_u64(&x33, &x34, (arg1[0]), x7); + fiat_25519_mulx_u64(&x35, &x36, (arg1[0]), x8); + fiat_25519_mulx_u64(&x37, &x38, (arg1[0]), (arg1[0])); + fiat_25519_addcarryx_u64(&x39, &x40, 0x0, x21, x17); + fiat_25519_addcarryx_u64(&x41, &x42, x40, x22, x18); + fiat_25519_addcarryx_u64(&x43, &x44, 0x0, x37, x39); + fiat_25519_addcarryx_u64(&x45, &x46, x44, x38, x41); + x47 = ((x43 >> 51) | ((x45 << 13) & UINT64_C(0xffffffffffffffff))); + x48 = (x43 & UINT64_C(0x7ffffffffffff)); + fiat_25519_addcarryx_u64(&x49, &x50, 0x0, x23, x19); + fiat_25519_addcarryx_u64(&x51, &x52, x50, x24, x20); + fiat_25519_addcarryx_u64(&x53, &x54, 0x0, x29, x49); + fiat_25519_addcarryx_u64(&x55, &x56, x54, x30, x51); + fiat_25519_addcarryx_u64(&x57, &x58, 0x0, x25, x9); + fiat_25519_addcarryx_u64(&x59, &x60, x58, x26, x10); + fiat_25519_addcarryx_u64(&x61, &x62, 0x0, x31, x57); + fiat_25519_addcarryx_u64(&x63, &x64, x62, x32, x59); + fiat_25519_addcarryx_u64(&x65, &x66, 0x0, x27, x11); + fiat_25519_addcarryx_u64(&x67, &x68, x66, x28, x12); + fiat_25519_addcarryx_u64(&x69, &x70, 0x0, x33, x65); + fiat_25519_addcarryx_u64(&x71, &x72, x70, x34, x67); + fiat_25519_addcarryx_u64(&x73, &x74, 0x0, x15, x13); + fiat_25519_addcarryx_u64(&x75, &x76, x74, x16, x14); + fiat_25519_addcarryx_u64(&x77, &x78, 0x0, x35, x73); + fiat_25519_addcarryx_u64(&x79, &x80, x78, x36, x75); + fiat_25519_addcarryx_u64(&x81, &x82, 0x0, x47, x77); + x83 = (x82 + x79); + x84 = ((x81 >> 51) | ((x83 << 13) & UINT64_C(0xffffffffffffffff))); + x85 = (x81 & UINT64_C(0x7ffffffffffff)); + fiat_25519_addcarryx_u64(&x86, &x87, 0x0, x84, x69); + x88 = (x87 + x71); + x89 = ((x86 >> 51) | ((x88 << 13) & UINT64_C(0xffffffffffffffff))); + x90 = (x86 & UINT64_C(0x7ffffffffffff)); + fiat_25519_addcarryx_u64(&x91, &x92, 0x0, x89, x61); + x93 = (x92 + x63); + x94 = ((x91 >> 51) | ((x93 << 13) & UINT64_C(0xffffffffffffffff))); + x95 = (x91 & UINT64_C(0x7ffffffffffff)); + fiat_25519_addcarryx_u64(&x96, &x97, 0x0, x94, x53); + x98 = (x97 + x55); + x99 = ((x96 >> 51) | ((x98 << 13) & UINT64_C(0xffffffffffffffff))); + x100 = (x96 & UINT64_C(0x7ffffffffffff)); + x101 = (x99 * UINT8_C(0x13)); + x102 = (x48 + x101); + x103 = (x102 >> 51); + x104 = (x102 & UINT64_C(0x7ffffffffffff)); + x105 = (x103 + x85); + x106 = (fiat_25519_uint1)(x105 >> 51); + x107 = (x105 & UINT64_C(0x7ffffffffffff)); + x108 = (x106 + x90); + out1[0] = x104; + out1[1] = x107; + out1[2] = x108; + out1[3] = x95; + out1[4] = x100; +} + +/* + * The function fiat_25519_carry reduces a field element. + * + * Postconditions: + * eval out1 mod m = eval arg1 mod m + * + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_carry(fiat_25519_tight_field_element out1, const fiat_25519_loose_field_element arg1) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + uint64_t x9; + uint64_t x10; + uint64_t x11; + uint64_t x12; + x1 = (arg1[0]); + x2 = ((x1 >> 51) + (arg1[1])); + x3 = ((x2 >> 51) + (arg1[2])); + x4 = ((x3 >> 51) + (arg1[3])); + x5 = ((x4 >> 51) + (arg1[4])); + x6 = ((x1 & UINT64_C(0x7ffffffffffff)) + ((x5 >> 51) * UINT8_C(0x13))); + x7 = ((fiat_25519_uint1)(x6 >> 51) + (x2 & UINT64_C(0x7ffffffffffff))); + x8 = (x6 & UINT64_C(0x7ffffffffffff)); + x9 = (x7 & UINT64_C(0x7ffffffffffff)); + x10 = ((fiat_25519_uint1)(x7 >> 51) + (x3 & UINT64_C(0x7ffffffffffff))); + x11 = (x4 & UINT64_C(0x7ffffffffffff)); + x12 = (x5 & UINT64_C(0x7ffffffffffff)); + out1[0] = x8; + out1[1] = x9; + out1[2] = x10; + out1[3] = x11; + out1[4] = x12; +} + +/* + * The function fiat_25519_add adds two field elements. + * + * Postconditions: + * eval out1 mod m = (eval arg1 + eval arg2) mod m + * + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_add(fiat_25519_loose_field_element out1, const fiat_25519_tight_field_element arg1, const fiat_25519_tight_field_element arg2) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + x1 = ((arg1[0]) + (arg2[0])); + x2 = ((arg1[1]) + (arg2[1])); + x3 = ((arg1[2]) + (arg2[2])); + x4 = ((arg1[3]) + (arg2[3])); + x5 = ((arg1[4]) + (arg2[4])); + out1[0] = x1; + out1[1] = x2; + out1[2] = x3; + out1[3] = x4; + out1[4] = x5; +} + +/* + * The function fiat_25519_sub subtracts two field elements. + * + * Postconditions: + * eval out1 mod m = (eval arg1 - eval arg2) mod m + * + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_sub(fiat_25519_loose_field_element out1, const fiat_25519_tight_field_element arg1, const fiat_25519_tight_field_element arg2) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + x1 = ((UINT64_C(0xfffffffffffda) + (arg1[0])) - (arg2[0])); + x2 = ((UINT64_C(0xffffffffffffe) + (arg1[1])) - (arg2[1])); + x3 = ((UINT64_C(0xffffffffffffe) + (arg1[2])) - (arg2[2])); + x4 = ((UINT64_C(0xffffffffffffe) + (arg1[3])) - (arg2[3])); + x5 = ((UINT64_C(0xffffffffffffe) + (arg1[4])) - (arg2[4])); + out1[0] = x1; + out1[1] = x2; + out1[2] = x3; + out1[3] = x4; + out1[4] = x5; +} + +/* + * The function fiat_25519_opp negates a field element. + * + * Postconditions: + * eval out1 mod m = -eval arg1 mod m + * + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_opp(fiat_25519_loose_field_element out1, const fiat_25519_tight_field_element arg1) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + x1 = (UINT64_C(0xfffffffffffda) - (arg1[0])); + x2 = (UINT64_C(0xffffffffffffe) - (arg1[1])); + x3 = (UINT64_C(0xffffffffffffe) - (arg1[2])); + x4 = (UINT64_C(0xffffffffffffe) - (arg1[3])); + x5 = (UINT64_C(0xffffffffffffe) - (arg1[4])); + out1[0] = x1; + out1[1] = x2; + out1[2] = x3; + out1[3] = x4; + out1[4] = x5; +} + +/* + * The function fiat_25519_selectznz is a multi-limb conditional select. + * + * Postconditions: + * out1 = (if arg1 = 0 then arg2 else arg3) + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * arg3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * Output Bounds: + * out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_selectznz(uint64_t out1[5], fiat_25519_uint1 arg1, const uint64_t arg2[5], const uint64_t arg3[5]) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + fiat_25519_cmovznz_u64(&x1, arg1, (arg2[0]), (arg3[0])); + fiat_25519_cmovznz_u64(&x2, arg1, (arg2[1]), (arg3[1])); + fiat_25519_cmovznz_u64(&x3, arg1, (arg2[2]), (arg3[2])); + fiat_25519_cmovznz_u64(&x4, arg1, (arg2[3]), (arg3[3])); + fiat_25519_cmovznz_u64(&x5, arg1, (arg2[4]), (arg3[4])); + out1[0] = x1; + out1[1] = x2; + out1[2] = x3; + out1[3] = x4; + out1[4] = x5; +} + +/* + * The function fiat_25519_to_bytes serializes a field element to bytes in little-endian order. + * + * Postconditions: + * out1 = map (λ x, ⌊((eval arg1 mod m) mod 2^(8 * (x + 1))) / 2^(8 * x)⌋) [0..31] + * + * Output Bounds: + * out1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0x7f]] + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_to_bytes(uint8_t out1[32], const fiat_25519_tight_field_element arg1) { + uint64_t x1; + fiat_25519_uint1 x2; + uint64_t x3; + fiat_25519_uint1 x4; + uint64_t x5; + fiat_25519_uint1 x6; + uint64_t x7; + fiat_25519_uint1 x8; + uint64_t x9; + fiat_25519_uint1 x10; + uint64_t x11; + uint64_t x12; + fiat_25519_uint1 x13; + uint64_t x14; + fiat_25519_uint1 x15; + uint64_t x16; + fiat_25519_uint1 x17; + uint64_t x18; + fiat_25519_uint1 x19; + uint64_t x20; + fiat_25519_uint1 x21; + uint64_t x22; + uint64_t x23; + uint64_t x24; + uint64_t x25; + uint8_t x26; + uint64_t x27; + uint8_t x28; + uint64_t x29; + uint8_t x30; + uint64_t x31; + uint8_t x32; + uint64_t x33; + uint8_t x34; + uint64_t x35; + uint8_t x36; + uint8_t x37; + uint64_t x38; + uint8_t x39; + uint64_t x40; + uint8_t x41; + uint64_t x42; + uint8_t x43; + uint64_t x44; + uint8_t x45; + uint64_t x46; + uint8_t x47; + uint64_t x48; + uint8_t x49; + uint8_t x50; + uint64_t x51; + uint8_t x52; + uint64_t x53; + uint8_t x54; + uint64_t x55; + uint8_t x56; + uint64_t x57; + uint8_t x58; + uint64_t x59; + uint8_t x60; + uint64_t x61; + uint8_t x62; + uint64_t x63; + uint8_t x64; + fiat_25519_uint1 x65; + uint64_t x66; + uint8_t x67; + uint64_t x68; + uint8_t x69; + uint64_t x70; + uint8_t x71; + uint64_t x72; + uint8_t x73; + uint64_t x74; + uint8_t x75; + uint64_t x76; + uint8_t x77; + uint8_t x78; + uint64_t x79; + uint8_t x80; + uint64_t x81; + uint8_t x82; + uint64_t x83; + uint8_t x84; + uint64_t x85; + uint8_t x86; + uint64_t x87; + uint8_t x88; + uint64_t x89; + uint8_t x90; + uint8_t x91; + fiat_25519_subborrowx_u51(&x1, &x2, 0x0, (arg1[0]), UINT64_C(0x7ffffffffffed)); + fiat_25519_subborrowx_u51(&x3, &x4, x2, (arg1[1]), UINT64_C(0x7ffffffffffff)); + fiat_25519_subborrowx_u51(&x5, &x6, x4, (arg1[2]), UINT64_C(0x7ffffffffffff)); + fiat_25519_subborrowx_u51(&x7, &x8, x6, (arg1[3]), UINT64_C(0x7ffffffffffff)); + fiat_25519_subborrowx_u51(&x9, &x10, x8, (arg1[4]), UINT64_C(0x7ffffffffffff)); + fiat_25519_cmovznz_u64(&x11, x10, 0x0, UINT64_C(0xffffffffffffffff)); + fiat_25519_addcarryx_u51(&x12, &x13, 0x0, x1, (x11 & UINT64_C(0x7ffffffffffed))); + fiat_25519_addcarryx_u51(&x14, &x15, x13, x3, (x11 & UINT64_C(0x7ffffffffffff))); + fiat_25519_addcarryx_u51(&x16, &x17, x15, x5, (x11 & UINT64_C(0x7ffffffffffff))); + fiat_25519_addcarryx_u51(&x18, &x19, x17, x7, (x11 & UINT64_C(0x7ffffffffffff))); + fiat_25519_addcarryx_u51(&x20, &x21, x19, x9, (x11 & UINT64_C(0x7ffffffffffff))); + x22 = (x20 << 4); + x23 = (x18 * (uint64_t)0x2); + x24 = (x16 << 6); + x25 = (x14 << 3); + x26 = (uint8_t)(x12 & UINT8_C(0xff)); + x27 = (x12 >> 8); + x28 = (uint8_t)(x27 & UINT8_C(0xff)); + x29 = (x27 >> 8); + x30 = (uint8_t)(x29 & UINT8_C(0xff)); + x31 = (x29 >> 8); + x32 = (uint8_t)(x31 & UINT8_C(0xff)); + x33 = (x31 >> 8); + x34 = (uint8_t)(x33 & UINT8_C(0xff)); + x35 = (x33 >> 8); + x36 = (uint8_t)(x35 & UINT8_C(0xff)); + x37 = (uint8_t)(x35 >> 8); + x38 = (x25 + (uint64_t)x37); + x39 = (uint8_t)(x38 & UINT8_C(0xff)); + x40 = (x38 >> 8); + x41 = (uint8_t)(x40 & UINT8_C(0xff)); + x42 = (x40 >> 8); + x43 = (uint8_t)(x42 & UINT8_C(0xff)); + x44 = (x42 >> 8); + x45 = (uint8_t)(x44 & UINT8_C(0xff)); + x46 = (x44 >> 8); + x47 = (uint8_t)(x46 & UINT8_C(0xff)); + x48 = (x46 >> 8); + x49 = (uint8_t)(x48 & UINT8_C(0xff)); + x50 = (uint8_t)(x48 >> 8); + x51 = (x24 + (uint64_t)x50); + x52 = (uint8_t)(x51 & UINT8_C(0xff)); + x53 = (x51 >> 8); + x54 = (uint8_t)(x53 & UINT8_C(0xff)); + x55 = (x53 >> 8); + x56 = (uint8_t)(x55 & UINT8_C(0xff)); + x57 = (x55 >> 8); + x58 = (uint8_t)(x57 & UINT8_C(0xff)); + x59 = (x57 >> 8); + x60 = (uint8_t)(x59 & UINT8_C(0xff)); + x61 = (x59 >> 8); + x62 = (uint8_t)(x61 & UINT8_C(0xff)); + x63 = (x61 >> 8); + x64 = (uint8_t)(x63 & UINT8_C(0xff)); + x65 = (fiat_25519_uint1)(x63 >> 8); + x66 = (x23 + (uint64_t)x65); + x67 = (uint8_t)(x66 & UINT8_C(0xff)); + x68 = (x66 >> 8); + x69 = (uint8_t)(x68 & UINT8_C(0xff)); + x70 = (x68 >> 8); + x71 = (uint8_t)(x70 & UINT8_C(0xff)); + x72 = (x70 >> 8); + x73 = (uint8_t)(x72 & UINT8_C(0xff)); + x74 = (x72 >> 8); + x75 = (uint8_t)(x74 & UINT8_C(0xff)); + x76 = (x74 >> 8); + x77 = (uint8_t)(x76 & UINT8_C(0xff)); + x78 = (uint8_t)(x76 >> 8); + x79 = (x22 + (uint64_t)x78); + x80 = (uint8_t)(x79 & UINT8_C(0xff)); + x81 = (x79 >> 8); + x82 = (uint8_t)(x81 & UINT8_C(0xff)); + x83 = (x81 >> 8); + x84 = (uint8_t)(x83 & UINT8_C(0xff)); + x85 = (x83 >> 8); + x86 = (uint8_t)(x85 & UINT8_C(0xff)); + x87 = (x85 >> 8); + x88 = (uint8_t)(x87 & UINT8_C(0xff)); + x89 = (x87 >> 8); + x90 = (uint8_t)(x89 & UINT8_C(0xff)); + x91 = (uint8_t)(x89 >> 8); + out1[0] = x26; + out1[1] = x28; + out1[2] = x30; + out1[3] = x32; + out1[4] = x34; + out1[5] = x36; + out1[6] = x39; + out1[7] = x41; + out1[8] = x43; + out1[9] = x45; + out1[10] = x47; + out1[11] = x49; + out1[12] = x52; + out1[13] = x54; + out1[14] = x56; + out1[15] = x58; + out1[16] = x60; + out1[17] = x62; + out1[18] = x64; + out1[19] = x67; + out1[20] = x69; + out1[21] = x71; + out1[22] = x73; + out1[23] = x75; + out1[24] = x77; + out1[25] = x80; + out1[26] = x82; + out1[27] = x84; + out1[28] = x86; + out1[29] = x88; + out1[30] = x90; + out1[31] = x91; +} + +/* + * The function fiat_25519_from_bytes deserializes a field element from bytes in little-endian order. + * + * Postconditions: + * eval out1 mod m = bytes_eval arg1 mod m + * + * Input Bounds: + * arg1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0x7f]] + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_from_bytes(fiat_25519_tight_field_element out1, const uint8_t arg1[32]) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + uint64_t x9; + uint64_t x10; + uint64_t x11; + uint64_t x12; + uint64_t x13; + uint64_t x14; + uint64_t x15; + uint64_t x16; + uint64_t x17; + uint64_t x18; + uint64_t x19; + uint64_t x20; + uint64_t x21; + uint64_t x22; + uint64_t x23; + uint64_t x24; + uint64_t x25; + uint64_t x26; + uint64_t x27; + uint64_t x28; + uint64_t x29; + uint64_t x30; + uint64_t x31; + uint8_t x32; + uint64_t x33; + uint64_t x34; + uint64_t x35; + uint64_t x36; + uint64_t x37; + uint64_t x38; + uint64_t x39; + uint8_t x40; + uint64_t x41; + uint64_t x42; + uint64_t x43; + uint64_t x44; + uint64_t x45; + uint64_t x46; + uint64_t x47; + uint8_t x48; + uint64_t x49; + uint64_t x50; + uint64_t x51; + uint64_t x52; + uint64_t x53; + uint64_t x54; + uint64_t x55; + uint64_t x56; + uint8_t x57; + uint64_t x58; + uint64_t x59; + uint64_t x60; + uint64_t x61; + uint64_t x62; + uint64_t x63; + uint64_t x64; + uint8_t x65; + uint64_t x66; + uint64_t x67; + uint64_t x68; + uint64_t x69; + uint64_t x70; + uint64_t x71; + x1 = ((uint64_t)(arg1[31]) << 44); + x2 = ((uint64_t)(arg1[30]) << 36); + x3 = ((uint64_t)(arg1[29]) << 28); + x4 = ((uint64_t)(arg1[28]) << 20); + x5 = ((uint64_t)(arg1[27]) << 12); + x6 = ((uint64_t)(arg1[26]) << 4); + x7 = ((uint64_t)(arg1[25]) << 47); + x8 = ((uint64_t)(arg1[24]) << 39); + x9 = ((uint64_t)(arg1[23]) << 31); + x10 = ((uint64_t)(arg1[22]) << 23); + x11 = ((uint64_t)(arg1[21]) << 15); + x12 = ((uint64_t)(arg1[20]) << 7); + x13 = ((uint64_t)(arg1[19]) << 50); + x14 = ((uint64_t)(arg1[18]) << 42); + x15 = ((uint64_t)(arg1[17]) << 34); + x16 = ((uint64_t)(arg1[16]) << 26); + x17 = ((uint64_t)(arg1[15]) << 18); + x18 = ((uint64_t)(arg1[14]) << 10); + x19 = ((uint64_t)(arg1[13]) << 2); + x20 = ((uint64_t)(arg1[12]) << 45); + x21 = ((uint64_t)(arg1[11]) << 37); + x22 = ((uint64_t)(arg1[10]) << 29); + x23 = ((uint64_t)(arg1[9]) << 21); + x24 = ((uint64_t)(arg1[8]) << 13); + x25 = ((uint64_t)(arg1[7]) << 5); + x26 = ((uint64_t)(arg1[6]) << 48); + x27 = ((uint64_t)(arg1[5]) << 40); + x28 = ((uint64_t)(arg1[4]) << 32); + x29 = ((uint64_t)(arg1[3]) << 24); + x30 = ((uint64_t)(arg1[2]) << 16); + x31 = ((uint64_t)(arg1[1]) << 8); + x32 = (arg1[0]); + x33 = (x31 + (uint64_t)x32); + x34 = (x30 + x33); + x35 = (x29 + x34); + x36 = (x28 + x35); + x37 = (x27 + x36); + x38 = (x26 + x37); + x39 = (x38 & UINT64_C(0x7ffffffffffff)); + x40 = (uint8_t)(x38 >> 51); + x41 = (x25 + (uint64_t)x40); + x42 = (x24 + x41); + x43 = (x23 + x42); + x44 = (x22 + x43); + x45 = (x21 + x44); + x46 = (x20 + x45); + x47 = (x46 & UINT64_C(0x7ffffffffffff)); + x48 = (uint8_t)(x46 >> 51); + x49 = (x19 + (uint64_t)x48); + x50 = (x18 + x49); + x51 = (x17 + x50); + x52 = (x16 + x51); + x53 = (x15 + x52); + x54 = (x14 + x53); + x55 = (x13 + x54); + x56 = (x55 & UINT64_C(0x7ffffffffffff)); + x57 = (uint8_t)(x55 >> 51); + x58 = (x12 + (uint64_t)x57); + x59 = (x11 + x58); + x60 = (x10 + x59); + x61 = (x9 + x60); + x62 = (x8 + x61); + x63 = (x7 + x62); + x64 = (x63 & UINT64_C(0x7ffffffffffff)); + x65 = (uint8_t)(x63 >> 51); + x66 = (x6 + (uint64_t)x65); + x67 = (x5 + x66); + x68 = (x4 + x67); + x69 = (x3 + x68); + x70 = (x2 + x69); + x71 = (x1 + x70); + out1[0] = x39; + out1[1] = x47; + out1[2] = x56; + out1[3] = x64; + out1[4] = x71; +} + +/* + * The function fiat_25519_relax is the identity function converting from tight field elements to loose field elements. + * + * Postconditions: + * out1 = arg1 + * + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_relax(fiat_25519_loose_field_element out1, const fiat_25519_tight_field_element arg1) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + x1 = (arg1[0]); + x2 = (arg1[1]); + x3 = (arg1[2]); + x4 = (arg1[3]); + x5 = (arg1[4]); + out1[0] = x1; + out1[1] = x2; + out1[2] = x3; + out1[3] = x4; + out1[4] = x5; +} + +/* + * The function fiat_25519_carry_scmul_121666 multiplies a field element by 121666 and reduces the result. + * + * Postconditions: + * eval out1 mod m = (121666 * eval arg1) mod m + * + */ +static FIAT_25519_FIAT_INLINE void fiat_25519_carry_scmul_121666(fiat_25519_tight_field_element out1, const fiat_25519_loose_field_element arg1) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + uint64_t x9; + uint64_t x10; + uint64_t x11; + uint64_t x12; + uint64_t x13; + fiat_25519_uint1 x14; + uint64_t x15; + uint64_t x16; + uint64_t x17; + uint64_t x18; + fiat_25519_uint1 x19; + uint64_t x20; + uint64_t x21; + uint64_t x22; + uint64_t x23; + fiat_25519_uint1 x24; + uint64_t x25; + uint64_t x26; + uint64_t x27; + uint64_t x28; + fiat_25519_uint1 x29; + uint64_t x30; + uint64_t x31; + uint64_t x32; + uint64_t x33; + uint64_t x34; + fiat_25519_uint1 x35; + uint64_t x36; + uint64_t x37; + fiat_25519_uint1 x38; + uint64_t x39; + uint64_t x40; + fiat_25519_mulx_u64(&x1, &x2, UINT32_C(0x1db42), (arg1[4])); + fiat_25519_mulx_u64(&x3, &x4, UINT32_C(0x1db42), (arg1[3])); + fiat_25519_mulx_u64(&x5, &x6, UINT32_C(0x1db42), (arg1[2])); + fiat_25519_mulx_u64(&x7, &x8, UINT32_C(0x1db42), (arg1[1])); + fiat_25519_mulx_u64(&x9, &x10, UINT32_C(0x1db42), (arg1[0])); + x11 = ((x9 >> 51) | ((x10 << 13) & UINT64_C(0xffffffffffffffff))); + x12 = (x9 & UINT64_C(0x7ffffffffffff)); + fiat_25519_addcarryx_u64(&x13, &x14, 0x0, x11, x7); + x15 = (x14 + x8); + x16 = ((x13 >> 51) | ((x15 << 13) & UINT64_C(0xffffffffffffffff))); + x17 = (x13 & UINT64_C(0x7ffffffffffff)); + fiat_25519_addcarryx_u64(&x18, &x19, 0x0, x16, x5); + x20 = (x19 + x6); + x21 = ((x18 >> 51) | ((x20 << 13) & UINT64_C(0xffffffffffffffff))); + x22 = (x18 & UINT64_C(0x7ffffffffffff)); + fiat_25519_addcarryx_u64(&x23, &x24, 0x0, x21, x3); + x25 = (x24 + x4); + x26 = ((x23 >> 51) | ((x25 << 13) & UINT64_C(0xffffffffffffffff))); + x27 = (x23 & UINT64_C(0x7ffffffffffff)); + fiat_25519_addcarryx_u64(&x28, &x29, 0x0, x26, x1); + x30 = (x29 + x2); + x31 = ((x28 >> 51) | ((x30 << 13) & UINT64_C(0xffffffffffffffff))); + x32 = (x28 & UINT64_C(0x7ffffffffffff)); + x33 = (x31 * UINT8_C(0x13)); + x34 = (x12 + x33); + x35 = (fiat_25519_uint1)(x34 >> 51); + x36 = (x34 & UINT64_C(0x7ffffffffffff)); + x37 = (x35 + x17); + x38 = (fiat_25519_uint1)(x37 >> 51); + x39 = (x37 & UINT64_C(0x7ffffffffffff)); + x40 = (x38 + x22); + out1[0] = x36; + out1[1] = x39; + out1[2] = x40; + out1[3] = x27; + out1[4] = x32; +} diff -Nru temporalio-1.3.0/vendor/ring/third_party/fiat/LICENSE temporalio-1.3.0/vendor/ring/third_party/fiat/LICENSE --- temporalio-1.3.0/vendor/ring/third_party/fiat/LICENSE 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/third_party/fiat/LICENSE 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2015-2016 the fiat-crypto authors (see +Copyright (c) 2015-2020 the fiat-crypto authors (see https://github.com/mit-plv/fiat-crypto/blob/master/AUTHORS). Permission is hereby granted, free of charge, to any person obtaining a copy diff -Nru temporalio-1.3.0/vendor/ring/third_party/fiat/p256_32.h temporalio-1.3.0/vendor/ring/third_party/fiat/p256_32.h --- temporalio-1.3.0/vendor/ring/third_party/fiat/p256_32.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/third_party/fiat/p256_32.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,2511 @@ +/* Autogenerated: 'src/ExtractionOCaml/word_by_word_montgomery' --inline --static --use-value-barrier p256 32 '2^256 - 2^224 + 2^192 + 2^96 - 1' mul square add sub opp from_montgomery to_montgomery nonzero selectznz to_bytes from_bytes one msat divstep divstep_precomp */ +/* curve description: p256 */ +/* machine_wordsize = 32 (from "32") */ +/* requested operations: mul, square, add, sub, opp, from_montgomery, to_montgomery, nonzero, selectznz, to_bytes, from_bytes, one, msat, divstep, divstep_precomp */ +/* m = 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff (from "2^256 - 2^224 + 2^192 + 2^96 - 1") */ +/* */ +/* NOTE: In addition to the bounds specified above each function, all */ +/* functions synthesized for this Montgomery arithmetic require the */ +/* input to be strictly less than the prime modulus (m), and also */ +/* require the input to be in the unique saturated representation. */ +/* All functions also ensure that these two properties are true of */ +/* return values. */ +/* */ +/* Computed values: */ +/* eval z = z[0] + (z[1] << 32) + (z[2] << 64) + (z[3] << 96) + (z[4] << 128) + (z[5] << 160) + (z[6] << 192) + (z[7] << 224) */ +/* bytes_eval z = z[0] + (z[1] << 8) + (z[2] << 16) + (z[3] << 24) + (z[4] << 32) + (z[5] << 40) + (z[6] << 48) + (z[7] << 56) + (z[8] << 64) + (z[9] << 72) + (z[10] << 80) + (z[11] << 88) + (z[12] << 96) + (z[13] << 104) + (z[14] << 112) + (z[15] << 120) + (z[16] << 128) + (z[17] << 136) + (z[18] << 144) + (z[19] << 152) + (z[20] << 160) + (z[21] << 168) + (z[22] << 176) + (z[23] << 184) + (z[24] << 192) + (z[25] << 200) + (z[26] << 208) + (z[27] << 216) + (z[28] << 224) + (z[29] << 232) + (z[30] << 240) + (z[31] << 248) */ +/* twos_complement_eval z = let x1 := z[0] + (z[1] << 32) + (z[2] << 64) + (z[3] << 96) + (z[4] << 128) + (z[5] << 160) + (z[6] << 192) + (z[7] << 224) in */ +/* if x1 & (2^256-1) < 2^255 then x1 & (2^256-1) else (x1 & (2^256-1)) - 2^256 */ + +#include +typedef unsigned char fiat_p256_uint1; +typedef signed char fiat_p256_int1; +#if defined(__GNUC__) || defined(__clang__) +# define FIAT_P256_FIAT_INLINE __inline__ +#else +# define FIAT_P256_FIAT_INLINE +#endif + +/* The type fiat_p256_montgomery_domain_field_element is a field element in the Montgomery domain. */ +/* Bounds: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]] */ +typedef uint32_t fiat_p256_montgomery_domain_field_element[8]; + +/* The type fiat_p256_non_montgomery_domain_field_element is a field element NOT in the Montgomery domain. */ +/* Bounds: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]] */ +typedef uint32_t fiat_p256_non_montgomery_domain_field_element[8]; + +#if (-1 & 3) != 3 +#error "This code only works on a two's complement system" +#endif + +#if !defined(FIAT_P256_NO_ASM) && (defined(__GNUC__) || defined(__clang__)) +static __inline__ uint32_t fiat_p256_value_barrier_u32(uint32_t a) { + __asm__("" : "+r"(a) : /* no inputs */); + return a; +} +#else +# define fiat_p256_value_barrier_u32(x) (x) +#endif + + +/* + * The function fiat_p256_addcarryx_u32 is an addition with carry. + * + * Postconditions: + * out1 = (arg1 + arg2 + arg3) mod 2^32 + * out2 = ⌊(arg1 + arg2 + arg3) / 2^32⌋ + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [0x0 ~> 0xffffffff] + * arg3: [0x0 ~> 0xffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffff] + * out2: [0x0 ~> 0x1] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_addcarryx_u32(uint32_t* out1, fiat_p256_uint1* out2, fiat_p256_uint1 arg1, uint32_t arg2, uint32_t arg3) { + uint64_t x1; + uint32_t x2; + fiat_p256_uint1 x3; + x1 = ((arg1 + (uint64_t)arg2) + arg3); + x2 = (uint32_t)(x1 & UINT32_C(0xffffffff)); + x3 = (fiat_p256_uint1)(x1 >> 32); + *out1 = x2; + *out2 = x3; +} + +/* + * The function fiat_p256_subborrowx_u32 is a subtraction with borrow. + * + * Postconditions: + * out1 = (-arg1 + arg2 + -arg3) mod 2^32 + * out2 = -⌊(-arg1 + arg2 + -arg3) / 2^32⌋ + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [0x0 ~> 0xffffffff] + * arg3: [0x0 ~> 0xffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffff] + * out2: [0x0 ~> 0x1] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_subborrowx_u32(uint32_t* out1, fiat_p256_uint1* out2, fiat_p256_uint1 arg1, uint32_t arg2, uint32_t arg3) { + int64_t x1; + fiat_p256_int1 x2; + uint32_t x3; + x1 = ((arg2 - (int64_t)arg1) - arg3); + x2 = (fiat_p256_int1)(x1 >> 32); + x3 = (uint32_t)(x1 & UINT32_C(0xffffffff)); + *out1 = x3; + *out2 = (fiat_p256_uint1)(0x0 - x2); +} + +/* + * The function fiat_p256_mulx_u32 is a multiplication, returning the full double-width result. + * + * Postconditions: + * out1 = (arg1 * arg2) mod 2^32 + * out2 = ⌊arg1 * arg2 / 2^32⌋ + * + * Input Bounds: + * arg1: [0x0 ~> 0xffffffff] + * arg2: [0x0 ~> 0xffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffff] + * out2: [0x0 ~> 0xffffffff] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_mulx_u32(uint32_t* out1, uint32_t* out2, uint32_t arg1, uint32_t arg2) { + uint64_t x1; + uint32_t x2; + uint32_t x3; + x1 = ((uint64_t)arg1 * arg2); + x2 = (uint32_t)(x1 & UINT32_C(0xffffffff)); + x3 = (uint32_t)(x1 >> 32); + *out1 = x2; + *out2 = x3; +} + +/* + * The function fiat_p256_cmovznz_u32 is a single-word conditional move. + * + * Postconditions: + * out1 = (if arg1 = 0 then arg2 else arg3) + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [0x0 ~> 0xffffffff] + * arg3: [0x0 ~> 0xffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffff] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_cmovznz_u32(uint32_t* out1, fiat_p256_uint1 arg1, uint32_t arg2, uint32_t arg3) { + fiat_p256_uint1 x1; + uint32_t x2; + uint32_t x3; + x1 = (!(!arg1)); + x2 = ((fiat_p256_int1)(0x0 - x1) & UINT32_C(0xffffffff)); + x3 = ((fiat_p256_value_barrier_u32(x2) & arg3) | (fiat_p256_value_barrier_u32((~x2)) & arg2)); + *out1 = x3; +} + +/* + * The function fiat_p256_mul multiplies two field elements in the Montgomery domain. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * 0 ≤ eval arg2 < m + * Postconditions: + * eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg2)) mod m + * 0 ≤ eval out1 < m + * + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_mul(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1, const fiat_p256_montgomery_domain_field_element arg2) { + uint32_t x1; + uint32_t x2; + uint32_t x3; + uint32_t x4; + uint32_t x5; + uint32_t x6; + uint32_t x7; + uint32_t x8; + uint32_t x9; + uint32_t x10; + uint32_t x11; + uint32_t x12; + uint32_t x13; + uint32_t x14; + uint32_t x15; + uint32_t x16; + uint32_t x17; + uint32_t x18; + uint32_t x19; + uint32_t x20; + uint32_t x21; + uint32_t x22; + uint32_t x23; + uint32_t x24; + uint32_t x25; + fiat_p256_uint1 x26; + uint32_t x27; + fiat_p256_uint1 x28; + uint32_t x29; + fiat_p256_uint1 x30; + uint32_t x31; + fiat_p256_uint1 x32; + uint32_t x33; + fiat_p256_uint1 x34; + uint32_t x35; + fiat_p256_uint1 x36; + uint32_t x37; + fiat_p256_uint1 x38; + uint32_t x39; + uint32_t x40; + uint32_t x41; + uint32_t x42; + uint32_t x43; + uint32_t x44; + uint32_t x45; + uint32_t x46; + uint32_t x47; + uint32_t x48; + fiat_p256_uint1 x49; + uint32_t x50; + fiat_p256_uint1 x51; + uint32_t x52; + uint32_t x53; + fiat_p256_uint1 x54; + uint32_t x55; + fiat_p256_uint1 x56; + uint32_t x57; + fiat_p256_uint1 x58; + uint32_t x59; + fiat_p256_uint1 x60; + uint32_t x61; + fiat_p256_uint1 x62; + uint32_t x63; + fiat_p256_uint1 x64; + uint32_t x65; + fiat_p256_uint1 x66; + uint32_t x67; + fiat_p256_uint1 x68; + uint32_t x69; + fiat_p256_uint1 x70; + uint32_t x71; + uint32_t x72; + uint32_t x73; + uint32_t x74; + uint32_t x75; + uint32_t x76; + uint32_t x77; + uint32_t x78; + uint32_t x79; + uint32_t x80; + uint32_t x81; + uint32_t x82; + uint32_t x83; + uint32_t x84; + uint32_t x85; + uint32_t x86; + uint32_t x87; + fiat_p256_uint1 x88; + uint32_t x89; + fiat_p256_uint1 x90; + uint32_t x91; + fiat_p256_uint1 x92; + uint32_t x93; + fiat_p256_uint1 x94; + uint32_t x95; + fiat_p256_uint1 x96; + uint32_t x97; + fiat_p256_uint1 x98; + uint32_t x99; + fiat_p256_uint1 x100; + uint32_t x101; + uint32_t x102; + fiat_p256_uint1 x103; + uint32_t x104; + fiat_p256_uint1 x105; + uint32_t x106; + fiat_p256_uint1 x107; + uint32_t x108; + fiat_p256_uint1 x109; + uint32_t x110; + fiat_p256_uint1 x111; + uint32_t x112; + fiat_p256_uint1 x113; + uint32_t x114; + fiat_p256_uint1 x115; + uint32_t x116; + fiat_p256_uint1 x117; + uint32_t x118; + fiat_p256_uint1 x119; + uint32_t x120; + uint32_t x121; + uint32_t x122; + uint32_t x123; + uint32_t x124; + uint32_t x125; + uint32_t x126; + uint32_t x127; + uint32_t x128; + fiat_p256_uint1 x129; + uint32_t x130; + fiat_p256_uint1 x131; + uint32_t x132; + uint32_t x133; + fiat_p256_uint1 x134; + uint32_t x135; + fiat_p256_uint1 x136; + uint32_t x137; + fiat_p256_uint1 x138; + uint32_t x139; + fiat_p256_uint1 x140; + uint32_t x141; + fiat_p256_uint1 x142; + uint32_t x143; + fiat_p256_uint1 x144; + uint32_t x145; + fiat_p256_uint1 x146; + uint32_t x147; + fiat_p256_uint1 x148; + uint32_t x149; + fiat_p256_uint1 x150; + uint32_t x151; + uint32_t x152; + uint32_t x153; + uint32_t x154; + uint32_t x155; + uint32_t x156; + uint32_t x157; + uint32_t x158; + uint32_t x159; + uint32_t x160; + uint32_t x161; + uint32_t x162; + uint32_t x163; + uint32_t x164; + uint32_t x165; + uint32_t x166; + uint32_t x167; + uint32_t x168; + fiat_p256_uint1 x169; + uint32_t x170; + fiat_p256_uint1 x171; + uint32_t x172; + fiat_p256_uint1 x173; + uint32_t x174; + fiat_p256_uint1 x175; + uint32_t x176; + fiat_p256_uint1 x177; + uint32_t x178; + fiat_p256_uint1 x179; + uint32_t x180; + fiat_p256_uint1 x181; + uint32_t x182; + uint32_t x183; + fiat_p256_uint1 x184; + uint32_t x185; + fiat_p256_uint1 x186; + uint32_t x187; + fiat_p256_uint1 x188; + uint32_t x189; + fiat_p256_uint1 x190; + uint32_t x191; + fiat_p256_uint1 x192; + uint32_t x193; + fiat_p256_uint1 x194; + uint32_t x195; + fiat_p256_uint1 x196; + uint32_t x197; + fiat_p256_uint1 x198; + uint32_t x199; + fiat_p256_uint1 x200; + uint32_t x201; + uint32_t x202; + uint32_t x203; + uint32_t x204; + uint32_t x205; + uint32_t x206; + uint32_t x207; + uint32_t x208; + uint32_t x209; + fiat_p256_uint1 x210; + uint32_t x211; + fiat_p256_uint1 x212; + uint32_t x213; + uint32_t x214; + fiat_p256_uint1 x215; + uint32_t x216; + fiat_p256_uint1 x217; + uint32_t x218; + fiat_p256_uint1 x219; + uint32_t x220; + fiat_p256_uint1 x221; + uint32_t x222; + fiat_p256_uint1 x223; + uint32_t x224; + fiat_p256_uint1 x225; + uint32_t x226; + fiat_p256_uint1 x227; + uint32_t x228; + fiat_p256_uint1 x229; + uint32_t x230; + fiat_p256_uint1 x231; + uint32_t x232; + uint32_t x233; + uint32_t x234; + uint32_t x235; + uint32_t x236; + uint32_t x237; + uint32_t x238; + uint32_t x239; + uint32_t x240; + uint32_t x241; + uint32_t x242; + uint32_t x243; + uint32_t x244; + uint32_t x245; + uint32_t x246; + uint32_t x247; + uint32_t x248; + uint32_t x249; + fiat_p256_uint1 x250; + uint32_t x251; + fiat_p256_uint1 x252; + uint32_t x253; + fiat_p256_uint1 x254; + uint32_t x255; + fiat_p256_uint1 x256; + uint32_t x257; + fiat_p256_uint1 x258; + uint32_t x259; + fiat_p256_uint1 x260; + uint32_t x261; + fiat_p256_uint1 x262; + uint32_t x263; + uint32_t x264; + fiat_p256_uint1 x265; + uint32_t x266; + fiat_p256_uint1 x267; + uint32_t x268; + fiat_p256_uint1 x269; + uint32_t x270; + fiat_p256_uint1 x271; + uint32_t x272; + fiat_p256_uint1 x273; + uint32_t x274; + fiat_p256_uint1 x275; + uint32_t x276; + fiat_p256_uint1 x277; + uint32_t x278; + fiat_p256_uint1 x279; + uint32_t x280; + fiat_p256_uint1 x281; + uint32_t x282; + uint32_t x283; + uint32_t x284; + uint32_t x285; + uint32_t x286; + uint32_t x287; + uint32_t x288; + uint32_t x289; + uint32_t x290; + fiat_p256_uint1 x291; + uint32_t x292; + fiat_p256_uint1 x293; + uint32_t x294; + uint32_t x295; + fiat_p256_uint1 x296; + uint32_t x297; + fiat_p256_uint1 x298; + uint32_t x299; + fiat_p256_uint1 x300; + uint32_t x301; + fiat_p256_uint1 x302; + uint32_t x303; + fiat_p256_uint1 x304; + uint32_t x305; + fiat_p256_uint1 x306; + uint32_t x307; + fiat_p256_uint1 x308; + uint32_t x309; + fiat_p256_uint1 x310; + uint32_t x311; + fiat_p256_uint1 x312; + uint32_t x313; + uint32_t x314; + uint32_t x315; + uint32_t x316; + uint32_t x317; + uint32_t x318; + uint32_t x319; + uint32_t x320; + uint32_t x321; + uint32_t x322; + uint32_t x323; + uint32_t x324; + uint32_t x325; + uint32_t x326; + uint32_t x327; + uint32_t x328; + uint32_t x329; + uint32_t x330; + fiat_p256_uint1 x331; + uint32_t x332; + fiat_p256_uint1 x333; + uint32_t x334; + fiat_p256_uint1 x335; + uint32_t x336; + fiat_p256_uint1 x337; + uint32_t x338; + fiat_p256_uint1 x339; + uint32_t x340; + fiat_p256_uint1 x341; + uint32_t x342; + fiat_p256_uint1 x343; + uint32_t x344; + uint32_t x345; + fiat_p256_uint1 x346; + uint32_t x347; + fiat_p256_uint1 x348; + uint32_t x349; + fiat_p256_uint1 x350; + uint32_t x351; + fiat_p256_uint1 x352; + uint32_t x353; + fiat_p256_uint1 x354; + uint32_t x355; + fiat_p256_uint1 x356; + uint32_t x357; + fiat_p256_uint1 x358; + uint32_t x359; + fiat_p256_uint1 x360; + uint32_t x361; + fiat_p256_uint1 x362; + uint32_t x363; + uint32_t x364; + uint32_t x365; + uint32_t x366; + uint32_t x367; + uint32_t x368; + uint32_t x369; + uint32_t x370; + uint32_t x371; + fiat_p256_uint1 x372; + uint32_t x373; + fiat_p256_uint1 x374; + uint32_t x375; + uint32_t x376; + fiat_p256_uint1 x377; + uint32_t x378; + fiat_p256_uint1 x379; + uint32_t x380; + fiat_p256_uint1 x381; + uint32_t x382; + fiat_p256_uint1 x383; + uint32_t x384; + fiat_p256_uint1 x385; + uint32_t x386; + fiat_p256_uint1 x387; + uint32_t x388; + fiat_p256_uint1 x389; + uint32_t x390; + fiat_p256_uint1 x391; + uint32_t x392; + fiat_p256_uint1 x393; + uint32_t x394; + uint32_t x395; + uint32_t x396; + uint32_t x397; + uint32_t x398; + uint32_t x399; + uint32_t x400; + uint32_t x401; + uint32_t x402; + uint32_t x403; + uint32_t x404; + uint32_t x405; + uint32_t x406; + uint32_t x407; + uint32_t x408; + uint32_t x409; + uint32_t x410; + uint32_t x411; + fiat_p256_uint1 x412; + uint32_t x413; + fiat_p256_uint1 x414; + uint32_t x415; + fiat_p256_uint1 x416; + uint32_t x417; + fiat_p256_uint1 x418; + uint32_t x419; + fiat_p256_uint1 x420; + uint32_t x421; + fiat_p256_uint1 x422; + uint32_t x423; + fiat_p256_uint1 x424; + uint32_t x425; + uint32_t x426; + fiat_p256_uint1 x427; + uint32_t x428; + fiat_p256_uint1 x429; + uint32_t x430; + fiat_p256_uint1 x431; + uint32_t x432; + fiat_p256_uint1 x433; + uint32_t x434; + fiat_p256_uint1 x435; + uint32_t x436; + fiat_p256_uint1 x437; + uint32_t x438; + fiat_p256_uint1 x439; + uint32_t x440; + fiat_p256_uint1 x441; + uint32_t x442; + fiat_p256_uint1 x443; + uint32_t x444; + uint32_t x445; + uint32_t x446; + uint32_t x447; + uint32_t x448; + uint32_t x449; + uint32_t x450; + uint32_t x451; + uint32_t x452; + fiat_p256_uint1 x453; + uint32_t x454; + fiat_p256_uint1 x455; + uint32_t x456; + uint32_t x457; + fiat_p256_uint1 x458; + uint32_t x459; + fiat_p256_uint1 x460; + uint32_t x461; + fiat_p256_uint1 x462; + uint32_t x463; + fiat_p256_uint1 x464; + uint32_t x465; + fiat_p256_uint1 x466; + uint32_t x467; + fiat_p256_uint1 x468; + uint32_t x469; + fiat_p256_uint1 x470; + uint32_t x471; + fiat_p256_uint1 x472; + uint32_t x473; + fiat_p256_uint1 x474; + uint32_t x475; + uint32_t x476; + uint32_t x477; + uint32_t x478; + uint32_t x479; + uint32_t x480; + uint32_t x481; + uint32_t x482; + uint32_t x483; + uint32_t x484; + uint32_t x485; + uint32_t x486; + uint32_t x487; + uint32_t x488; + uint32_t x489; + uint32_t x490; + uint32_t x491; + uint32_t x492; + fiat_p256_uint1 x493; + uint32_t x494; + fiat_p256_uint1 x495; + uint32_t x496; + fiat_p256_uint1 x497; + uint32_t x498; + fiat_p256_uint1 x499; + uint32_t x500; + fiat_p256_uint1 x501; + uint32_t x502; + fiat_p256_uint1 x503; + uint32_t x504; + fiat_p256_uint1 x505; + uint32_t x506; + uint32_t x507; + fiat_p256_uint1 x508; + uint32_t x509; + fiat_p256_uint1 x510; + uint32_t x511; + fiat_p256_uint1 x512; + uint32_t x513; + fiat_p256_uint1 x514; + uint32_t x515; + fiat_p256_uint1 x516; + uint32_t x517; + fiat_p256_uint1 x518; + uint32_t x519; + fiat_p256_uint1 x520; + uint32_t x521; + fiat_p256_uint1 x522; + uint32_t x523; + fiat_p256_uint1 x524; + uint32_t x525; + uint32_t x526; + uint32_t x527; + uint32_t x528; + uint32_t x529; + uint32_t x530; + uint32_t x531; + uint32_t x532; + uint32_t x533; + fiat_p256_uint1 x534; + uint32_t x535; + fiat_p256_uint1 x536; + uint32_t x537; + uint32_t x538; + fiat_p256_uint1 x539; + uint32_t x540; + fiat_p256_uint1 x541; + uint32_t x542; + fiat_p256_uint1 x543; + uint32_t x544; + fiat_p256_uint1 x545; + uint32_t x546; + fiat_p256_uint1 x547; + uint32_t x548; + fiat_p256_uint1 x549; + uint32_t x550; + fiat_p256_uint1 x551; + uint32_t x552; + fiat_p256_uint1 x553; + uint32_t x554; + fiat_p256_uint1 x555; + uint32_t x556; + uint32_t x557; + uint32_t x558; + uint32_t x559; + uint32_t x560; + uint32_t x561; + uint32_t x562; + uint32_t x563; + uint32_t x564; + uint32_t x565; + uint32_t x566; + uint32_t x567; + uint32_t x568; + uint32_t x569; + uint32_t x570; + uint32_t x571; + uint32_t x572; + uint32_t x573; + fiat_p256_uint1 x574; + uint32_t x575; + fiat_p256_uint1 x576; + uint32_t x577; + fiat_p256_uint1 x578; + uint32_t x579; + fiat_p256_uint1 x580; + uint32_t x581; + fiat_p256_uint1 x582; + uint32_t x583; + fiat_p256_uint1 x584; + uint32_t x585; + fiat_p256_uint1 x586; + uint32_t x587; + uint32_t x588; + fiat_p256_uint1 x589; + uint32_t x590; + fiat_p256_uint1 x591; + uint32_t x592; + fiat_p256_uint1 x593; + uint32_t x594; + fiat_p256_uint1 x595; + uint32_t x596; + fiat_p256_uint1 x597; + uint32_t x598; + fiat_p256_uint1 x599; + uint32_t x600; + fiat_p256_uint1 x601; + uint32_t x602; + fiat_p256_uint1 x603; + uint32_t x604; + fiat_p256_uint1 x605; + uint32_t x606; + uint32_t x607; + uint32_t x608; + uint32_t x609; + uint32_t x610; + uint32_t x611; + uint32_t x612; + uint32_t x613; + uint32_t x614; + fiat_p256_uint1 x615; + uint32_t x616; + fiat_p256_uint1 x617; + uint32_t x618; + uint32_t x619; + fiat_p256_uint1 x620; + uint32_t x621; + fiat_p256_uint1 x622; + uint32_t x623; + fiat_p256_uint1 x624; + uint32_t x625; + fiat_p256_uint1 x626; + uint32_t x627; + fiat_p256_uint1 x628; + uint32_t x629; + fiat_p256_uint1 x630; + uint32_t x631; + fiat_p256_uint1 x632; + uint32_t x633; + fiat_p256_uint1 x634; + uint32_t x635; + fiat_p256_uint1 x636; + uint32_t x637; + uint32_t x638; + fiat_p256_uint1 x639; + uint32_t x640; + fiat_p256_uint1 x641; + uint32_t x642; + fiat_p256_uint1 x643; + uint32_t x644; + fiat_p256_uint1 x645; + uint32_t x646; + fiat_p256_uint1 x647; + uint32_t x648; + fiat_p256_uint1 x649; + uint32_t x650; + fiat_p256_uint1 x651; + uint32_t x652; + fiat_p256_uint1 x653; + uint32_t x654; + fiat_p256_uint1 x655; + uint32_t x656; + uint32_t x657; + uint32_t x658; + uint32_t x659; + uint32_t x660; + uint32_t x661; + uint32_t x662; + uint32_t x663; + x1 = (arg1[1]); + x2 = (arg1[2]); + x3 = (arg1[3]); + x4 = (arg1[4]); + x5 = (arg1[5]); + x6 = (arg1[6]); + x7 = (arg1[7]); + x8 = (arg1[0]); + fiat_p256_mulx_u32(&x9, &x10, x8, (arg2[7])); + fiat_p256_mulx_u32(&x11, &x12, x8, (arg2[6])); + fiat_p256_mulx_u32(&x13, &x14, x8, (arg2[5])); + fiat_p256_mulx_u32(&x15, &x16, x8, (arg2[4])); + fiat_p256_mulx_u32(&x17, &x18, x8, (arg2[3])); + fiat_p256_mulx_u32(&x19, &x20, x8, (arg2[2])); + fiat_p256_mulx_u32(&x21, &x22, x8, (arg2[1])); + fiat_p256_mulx_u32(&x23, &x24, x8, (arg2[0])); + fiat_p256_addcarryx_u32(&x25, &x26, 0x0, x24, x21); + fiat_p256_addcarryx_u32(&x27, &x28, x26, x22, x19); + fiat_p256_addcarryx_u32(&x29, &x30, x28, x20, x17); + fiat_p256_addcarryx_u32(&x31, &x32, x30, x18, x15); + fiat_p256_addcarryx_u32(&x33, &x34, x32, x16, x13); + fiat_p256_addcarryx_u32(&x35, &x36, x34, x14, x11); + fiat_p256_addcarryx_u32(&x37, &x38, x36, x12, x9); + x39 = (x38 + x10); + fiat_p256_mulx_u32(&x40, &x41, x23, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x42, &x43, x23, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x44, &x45, x23, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x46, &x47, x23, UINT32_C(0xffffffff)); + fiat_p256_addcarryx_u32(&x48, &x49, 0x0, x47, x44); + fiat_p256_addcarryx_u32(&x50, &x51, x49, x45, x42); + x52 = (x51 + x43); + fiat_p256_addcarryx_u32(&x53, &x54, 0x0, x23, x46); + fiat_p256_addcarryx_u32(&x55, &x56, x54, x25, x48); + fiat_p256_addcarryx_u32(&x57, &x58, x56, x27, x50); + fiat_p256_addcarryx_u32(&x59, &x60, x58, x29, x52); + fiat_p256_addcarryx_u32(&x61, &x62, x60, x31, 0x0); + fiat_p256_addcarryx_u32(&x63, &x64, x62, x33, 0x0); + fiat_p256_addcarryx_u32(&x65, &x66, x64, x35, x23); + fiat_p256_addcarryx_u32(&x67, &x68, x66, x37, x40); + fiat_p256_addcarryx_u32(&x69, &x70, x68, x39, x41); + fiat_p256_mulx_u32(&x71, &x72, x1, (arg2[7])); + fiat_p256_mulx_u32(&x73, &x74, x1, (arg2[6])); + fiat_p256_mulx_u32(&x75, &x76, x1, (arg2[5])); + fiat_p256_mulx_u32(&x77, &x78, x1, (arg2[4])); + fiat_p256_mulx_u32(&x79, &x80, x1, (arg2[3])); + fiat_p256_mulx_u32(&x81, &x82, x1, (arg2[2])); + fiat_p256_mulx_u32(&x83, &x84, x1, (arg2[1])); + fiat_p256_mulx_u32(&x85, &x86, x1, (arg2[0])); + fiat_p256_addcarryx_u32(&x87, &x88, 0x0, x86, x83); + fiat_p256_addcarryx_u32(&x89, &x90, x88, x84, x81); + fiat_p256_addcarryx_u32(&x91, &x92, x90, x82, x79); + fiat_p256_addcarryx_u32(&x93, &x94, x92, x80, x77); + fiat_p256_addcarryx_u32(&x95, &x96, x94, x78, x75); + fiat_p256_addcarryx_u32(&x97, &x98, x96, x76, x73); + fiat_p256_addcarryx_u32(&x99, &x100, x98, x74, x71); + x101 = (x100 + x72); + fiat_p256_addcarryx_u32(&x102, &x103, 0x0, x55, x85); + fiat_p256_addcarryx_u32(&x104, &x105, x103, x57, x87); + fiat_p256_addcarryx_u32(&x106, &x107, x105, x59, x89); + fiat_p256_addcarryx_u32(&x108, &x109, x107, x61, x91); + fiat_p256_addcarryx_u32(&x110, &x111, x109, x63, x93); + fiat_p256_addcarryx_u32(&x112, &x113, x111, x65, x95); + fiat_p256_addcarryx_u32(&x114, &x115, x113, x67, x97); + fiat_p256_addcarryx_u32(&x116, &x117, x115, x69, x99); + fiat_p256_addcarryx_u32(&x118, &x119, x117, x70, x101); + fiat_p256_mulx_u32(&x120, &x121, x102, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x122, &x123, x102, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x124, &x125, x102, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x126, &x127, x102, UINT32_C(0xffffffff)); + fiat_p256_addcarryx_u32(&x128, &x129, 0x0, x127, x124); + fiat_p256_addcarryx_u32(&x130, &x131, x129, x125, x122); + x132 = (x131 + x123); + fiat_p256_addcarryx_u32(&x133, &x134, 0x0, x102, x126); + fiat_p256_addcarryx_u32(&x135, &x136, x134, x104, x128); + fiat_p256_addcarryx_u32(&x137, &x138, x136, x106, x130); + fiat_p256_addcarryx_u32(&x139, &x140, x138, x108, x132); + fiat_p256_addcarryx_u32(&x141, &x142, x140, x110, 0x0); + fiat_p256_addcarryx_u32(&x143, &x144, x142, x112, 0x0); + fiat_p256_addcarryx_u32(&x145, &x146, x144, x114, x102); + fiat_p256_addcarryx_u32(&x147, &x148, x146, x116, x120); + fiat_p256_addcarryx_u32(&x149, &x150, x148, x118, x121); + x151 = ((uint32_t)x150 + x119); + fiat_p256_mulx_u32(&x152, &x153, x2, (arg2[7])); + fiat_p256_mulx_u32(&x154, &x155, x2, (arg2[6])); + fiat_p256_mulx_u32(&x156, &x157, x2, (arg2[5])); + fiat_p256_mulx_u32(&x158, &x159, x2, (arg2[4])); + fiat_p256_mulx_u32(&x160, &x161, x2, (arg2[3])); + fiat_p256_mulx_u32(&x162, &x163, x2, (arg2[2])); + fiat_p256_mulx_u32(&x164, &x165, x2, (arg2[1])); + fiat_p256_mulx_u32(&x166, &x167, x2, (arg2[0])); + fiat_p256_addcarryx_u32(&x168, &x169, 0x0, x167, x164); + fiat_p256_addcarryx_u32(&x170, &x171, x169, x165, x162); + fiat_p256_addcarryx_u32(&x172, &x173, x171, x163, x160); + fiat_p256_addcarryx_u32(&x174, &x175, x173, x161, x158); + fiat_p256_addcarryx_u32(&x176, &x177, x175, x159, x156); + fiat_p256_addcarryx_u32(&x178, &x179, x177, x157, x154); + fiat_p256_addcarryx_u32(&x180, &x181, x179, x155, x152); + x182 = (x181 + x153); + fiat_p256_addcarryx_u32(&x183, &x184, 0x0, x135, x166); + fiat_p256_addcarryx_u32(&x185, &x186, x184, x137, x168); + fiat_p256_addcarryx_u32(&x187, &x188, x186, x139, x170); + fiat_p256_addcarryx_u32(&x189, &x190, x188, x141, x172); + fiat_p256_addcarryx_u32(&x191, &x192, x190, x143, x174); + fiat_p256_addcarryx_u32(&x193, &x194, x192, x145, x176); + fiat_p256_addcarryx_u32(&x195, &x196, x194, x147, x178); + fiat_p256_addcarryx_u32(&x197, &x198, x196, x149, x180); + fiat_p256_addcarryx_u32(&x199, &x200, x198, x151, x182); + fiat_p256_mulx_u32(&x201, &x202, x183, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x203, &x204, x183, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x205, &x206, x183, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x207, &x208, x183, UINT32_C(0xffffffff)); + fiat_p256_addcarryx_u32(&x209, &x210, 0x0, x208, x205); + fiat_p256_addcarryx_u32(&x211, &x212, x210, x206, x203); + x213 = (x212 + x204); + fiat_p256_addcarryx_u32(&x214, &x215, 0x0, x183, x207); + fiat_p256_addcarryx_u32(&x216, &x217, x215, x185, x209); + fiat_p256_addcarryx_u32(&x218, &x219, x217, x187, x211); + fiat_p256_addcarryx_u32(&x220, &x221, x219, x189, x213); + fiat_p256_addcarryx_u32(&x222, &x223, x221, x191, 0x0); + fiat_p256_addcarryx_u32(&x224, &x225, x223, x193, 0x0); + fiat_p256_addcarryx_u32(&x226, &x227, x225, x195, x183); + fiat_p256_addcarryx_u32(&x228, &x229, x227, x197, x201); + fiat_p256_addcarryx_u32(&x230, &x231, x229, x199, x202); + x232 = ((uint32_t)x231 + x200); + fiat_p256_mulx_u32(&x233, &x234, x3, (arg2[7])); + fiat_p256_mulx_u32(&x235, &x236, x3, (arg2[6])); + fiat_p256_mulx_u32(&x237, &x238, x3, (arg2[5])); + fiat_p256_mulx_u32(&x239, &x240, x3, (arg2[4])); + fiat_p256_mulx_u32(&x241, &x242, x3, (arg2[3])); + fiat_p256_mulx_u32(&x243, &x244, x3, (arg2[2])); + fiat_p256_mulx_u32(&x245, &x246, x3, (arg2[1])); + fiat_p256_mulx_u32(&x247, &x248, x3, (arg2[0])); + fiat_p256_addcarryx_u32(&x249, &x250, 0x0, x248, x245); + fiat_p256_addcarryx_u32(&x251, &x252, x250, x246, x243); + fiat_p256_addcarryx_u32(&x253, &x254, x252, x244, x241); + fiat_p256_addcarryx_u32(&x255, &x256, x254, x242, x239); + fiat_p256_addcarryx_u32(&x257, &x258, x256, x240, x237); + fiat_p256_addcarryx_u32(&x259, &x260, x258, x238, x235); + fiat_p256_addcarryx_u32(&x261, &x262, x260, x236, x233); + x263 = (x262 + x234); + fiat_p256_addcarryx_u32(&x264, &x265, 0x0, x216, x247); + fiat_p256_addcarryx_u32(&x266, &x267, x265, x218, x249); + fiat_p256_addcarryx_u32(&x268, &x269, x267, x220, x251); + fiat_p256_addcarryx_u32(&x270, &x271, x269, x222, x253); + fiat_p256_addcarryx_u32(&x272, &x273, x271, x224, x255); + fiat_p256_addcarryx_u32(&x274, &x275, x273, x226, x257); + fiat_p256_addcarryx_u32(&x276, &x277, x275, x228, x259); + fiat_p256_addcarryx_u32(&x278, &x279, x277, x230, x261); + fiat_p256_addcarryx_u32(&x280, &x281, x279, x232, x263); + fiat_p256_mulx_u32(&x282, &x283, x264, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x284, &x285, x264, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x286, &x287, x264, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x288, &x289, x264, UINT32_C(0xffffffff)); + fiat_p256_addcarryx_u32(&x290, &x291, 0x0, x289, x286); + fiat_p256_addcarryx_u32(&x292, &x293, x291, x287, x284); + x294 = (x293 + x285); + fiat_p256_addcarryx_u32(&x295, &x296, 0x0, x264, x288); + fiat_p256_addcarryx_u32(&x297, &x298, x296, x266, x290); + fiat_p256_addcarryx_u32(&x299, &x300, x298, x268, x292); + fiat_p256_addcarryx_u32(&x301, &x302, x300, x270, x294); + fiat_p256_addcarryx_u32(&x303, &x304, x302, x272, 0x0); + fiat_p256_addcarryx_u32(&x305, &x306, x304, x274, 0x0); + fiat_p256_addcarryx_u32(&x307, &x308, x306, x276, x264); + fiat_p256_addcarryx_u32(&x309, &x310, x308, x278, x282); + fiat_p256_addcarryx_u32(&x311, &x312, x310, x280, x283); + x313 = ((uint32_t)x312 + x281); + fiat_p256_mulx_u32(&x314, &x315, x4, (arg2[7])); + fiat_p256_mulx_u32(&x316, &x317, x4, (arg2[6])); + fiat_p256_mulx_u32(&x318, &x319, x4, (arg2[5])); + fiat_p256_mulx_u32(&x320, &x321, x4, (arg2[4])); + fiat_p256_mulx_u32(&x322, &x323, x4, (arg2[3])); + fiat_p256_mulx_u32(&x324, &x325, x4, (arg2[2])); + fiat_p256_mulx_u32(&x326, &x327, x4, (arg2[1])); + fiat_p256_mulx_u32(&x328, &x329, x4, (arg2[0])); + fiat_p256_addcarryx_u32(&x330, &x331, 0x0, x329, x326); + fiat_p256_addcarryx_u32(&x332, &x333, x331, x327, x324); + fiat_p256_addcarryx_u32(&x334, &x335, x333, x325, x322); + fiat_p256_addcarryx_u32(&x336, &x337, x335, x323, x320); + fiat_p256_addcarryx_u32(&x338, &x339, x337, x321, x318); + fiat_p256_addcarryx_u32(&x340, &x341, x339, x319, x316); + fiat_p256_addcarryx_u32(&x342, &x343, x341, x317, x314); + x344 = (x343 + x315); + fiat_p256_addcarryx_u32(&x345, &x346, 0x0, x297, x328); + fiat_p256_addcarryx_u32(&x347, &x348, x346, x299, x330); + fiat_p256_addcarryx_u32(&x349, &x350, x348, x301, x332); + fiat_p256_addcarryx_u32(&x351, &x352, x350, x303, x334); + fiat_p256_addcarryx_u32(&x353, &x354, x352, x305, x336); + fiat_p256_addcarryx_u32(&x355, &x356, x354, x307, x338); + fiat_p256_addcarryx_u32(&x357, &x358, x356, x309, x340); + fiat_p256_addcarryx_u32(&x359, &x360, x358, x311, x342); + fiat_p256_addcarryx_u32(&x361, &x362, x360, x313, x344); + fiat_p256_mulx_u32(&x363, &x364, x345, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x365, &x366, x345, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x367, &x368, x345, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x369, &x370, x345, UINT32_C(0xffffffff)); + fiat_p256_addcarryx_u32(&x371, &x372, 0x0, x370, x367); + fiat_p256_addcarryx_u32(&x373, &x374, x372, x368, x365); + x375 = (x374 + x366); + fiat_p256_addcarryx_u32(&x376, &x377, 0x0, x345, x369); + fiat_p256_addcarryx_u32(&x378, &x379, x377, x347, x371); + fiat_p256_addcarryx_u32(&x380, &x381, x379, x349, x373); + fiat_p256_addcarryx_u32(&x382, &x383, x381, x351, x375); + fiat_p256_addcarryx_u32(&x384, &x385, x383, x353, 0x0); + fiat_p256_addcarryx_u32(&x386, &x387, x385, x355, 0x0); + fiat_p256_addcarryx_u32(&x388, &x389, x387, x357, x345); + fiat_p256_addcarryx_u32(&x390, &x391, x389, x359, x363); + fiat_p256_addcarryx_u32(&x392, &x393, x391, x361, x364); + x394 = ((uint32_t)x393 + x362); + fiat_p256_mulx_u32(&x395, &x396, x5, (arg2[7])); + fiat_p256_mulx_u32(&x397, &x398, x5, (arg2[6])); + fiat_p256_mulx_u32(&x399, &x400, x5, (arg2[5])); + fiat_p256_mulx_u32(&x401, &x402, x5, (arg2[4])); + fiat_p256_mulx_u32(&x403, &x404, x5, (arg2[3])); + fiat_p256_mulx_u32(&x405, &x406, x5, (arg2[2])); + fiat_p256_mulx_u32(&x407, &x408, x5, (arg2[1])); + fiat_p256_mulx_u32(&x409, &x410, x5, (arg2[0])); + fiat_p256_addcarryx_u32(&x411, &x412, 0x0, x410, x407); + fiat_p256_addcarryx_u32(&x413, &x414, x412, x408, x405); + fiat_p256_addcarryx_u32(&x415, &x416, x414, x406, x403); + fiat_p256_addcarryx_u32(&x417, &x418, x416, x404, x401); + fiat_p256_addcarryx_u32(&x419, &x420, x418, x402, x399); + fiat_p256_addcarryx_u32(&x421, &x422, x420, x400, x397); + fiat_p256_addcarryx_u32(&x423, &x424, x422, x398, x395); + x425 = (x424 + x396); + fiat_p256_addcarryx_u32(&x426, &x427, 0x0, x378, x409); + fiat_p256_addcarryx_u32(&x428, &x429, x427, x380, x411); + fiat_p256_addcarryx_u32(&x430, &x431, x429, x382, x413); + fiat_p256_addcarryx_u32(&x432, &x433, x431, x384, x415); + fiat_p256_addcarryx_u32(&x434, &x435, x433, x386, x417); + fiat_p256_addcarryx_u32(&x436, &x437, x435, x388, x419); + fiat_p256_addcarryx_u32(&x438, &x439, x437, x390, x421); + fiat_p256_addcarryx_u32(&x440, &x441, x439, x392, x423); + fiat_p256_addcarryx_u32(&x442, &x443, x441, x394, x425); + fiat_p256_mulx_u32(&x444, &x445, x426, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x446, &x447, x426, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x448, &x449, x426, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x450, &x451, x426, UINT32_C(0xffffffff)); + fiat_p256_addcarryx_u32(&x452, &x453, 0x0, x451, x448); + fiat_p256_addcarryx_u32(&x454, &x455, x453, x449, x446); + x456 = (x455 + x447); + fiat_p256_addcarryx_u32(&x457, &x458, 0x0, x426, x450); + fiat_p256_addcarryx_u32(&x459, &x460, x458, x428, x452); + fiat_p256_addcarryx_u32(&x461, &x462, x460, x430, x454); + fiat_p256_addcarryx_u32(&x463, &x464, x462, x432, x456); + fiat_p256_addcarryx_u32(&x465, &x466, x464, x434, 0x0); + fiat_p256_addcarryx_u32(&x467, &x468, x466, x436, 0x0); + fiat_p256_addcarryx_u32(&x469, &x470, x468, x438, x426); + fiat_p256_addcarryx_u32(&x471, &x472, x470, x440, x444); + fiat_p256_addcarryx_u32(&x473, &x474, x472, x442, x445); + x475 = ((uint32_t)x474 + x443); + fiat_p256_mulx_u32(&x476, &x477, x6, (arg2[7])); + fiat_p256_mulx_u32(&x478, &x479, x6, (arg2[6])); + fiat_p256_mulx_u32(&x480, &x481, x6, (arg2[5])); + fiat_p256_mulx_u32(&x482, &x483, x6, (arg2[4])); + fiat_p256_mulx_u32(&x484, &x485, x6, (arg2[3])); + fiat_p256_mulx_u32(&x486, &x487, x6, (arg2[2])); + fiat_p256_mulx_u32(&x488, &x489, x6, (arg2[1])); + fiat_p256_mulx_u32(&x490, &x491, x6, (arg2[0])); + fiat_p256_addcarryx_u32(&x492, &x493, 0x0, x491, x488); + fiat_p256_addcarryx_u32(&x494, &x495, x493, x489, x486); + fiat_p256_addcarryx_u32(&x496, &x497, x495, x487, x484); + fiat_p256_addcarryx_u32(&x498, &x499, x497, x485, x482); + fiat_p256_addcarryx_u32(&x500, &x501, x499, x483, x480); + fiat_p256_addcarryx_u32(&x502, &x503, x501, x481, x478); + fiat_p256_addcarryx_u32(&x504, &x505, x503, x479, x476); + x506 = (x505 + x477); + fiat_p256_addcarryx_u32(&x507, &x508, 0x0, x459, x490); + fiat_p256_addcarryx_u32(&x509, &x510, x508, x461, x492); + fiat_p256_addcarryx_u32(&x511, &x512, x510, x463, x494); + fiat_p256_addcarryx_u32(&x513, &x514, x512, x465, x496); + fiat_p256_addcarryx_u32(&x515, &x516, x514, x467, x498); + fiat_p256_addcarryx_u32(&x517, &x518, x516, x469, x500); + fiat_p256_addcarryx_u32(&x519, &x520, x518, x471, x502); + fiat_p256_addcarryx_u32(&x521, &x522, x520, x473, x504); + fiat_p256_addcarryx_u32(&x523, &x524, x522, x475, x506); + fiat_p256_mulx_u32(&x525, &x526, x507, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x527, &x528, x507, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x529, &x530, x507, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x531, &x532, x507, UINT32_C(0xffffffff)); + fiat_p256_addcarryx_u32(&x533, &x534, 0x0, x532, x529); + fiat_p256_addcarryx_u32(&x535, &x536, x534, x530, x527); + x537 = (x536 + x528); + fiat_p256_addcarryx_u32(&x538, &x539, 0x0, x507, x531); + fiat_p256_addcarryx_u32(&x540, &x541, x539, x509, x533); + fiat_p256_addcarryx_u32(&x542, &x543, x541, x511, x535); + fiat_p256_addcarryx_u32(&x544, &x545, x543, x513, x537); + fiat_p256_addcarryx_u32(&x546, &x547, x545, x515, 0x0); + fiat_p256_addcarryx_u32(&x548, &x549, x547, x517, 0x0); + fiat_p256_addcarryx_u32(&x550, &x551, x549, x519, x507); + fiat_p256_addcarryx_u32(&x552, &x553, x551, x521, x525); + fiat_p256_addcarryx_u32(&x554, &x555, x553, x523, x526); + x556 = ((uint32_t)x555 + x524); + fiat_p256_mulx_u32(&x557, &x558, x7, (arg2[7])); + fiat_p256_mulx_u32(&x559, &x560, x7, (arg2[6])); + fiat_p256_mulx_u32(&x561, &x562, x7, (arg2[5])); + fiat_p256_mulx_u32(&x563, &x564, x7, (arg2[4])); + fiat_p256_mulx_u32(&x565, &x566, x7, (arg2[3])); + fiat_p256_mulx_u32(&x567, &x568, x7, (arg2[2])); + fiat_p256_mulx_u32(&x569, &x570, x7, (arg2[1])); + fiat_p256_mulx_u32(&x571, &x572, x7, (arg2[0])); + fiat_p256_addcarryx_u32(&x573, &x574, 0x0, x572, x569); + fiat_p256_addcarryx_u32(&x575, &x576, x574, x570, x567); + fiat_p256_addcarryx_u32(&x577, &x578, x576, x568, x565); + fiat_p256_addcarryx_u32(&x579, &x580, x578, x566, x563); + fiat_p256_addcarryx_u32(&x581, &x582, x580, x564, x561); + fiat_p256_addcarryx_u32(&x583, &x584, x582, x562, x559); + fiat_p256_addcarryx_u32(&x585, &x586, x584, x560, x557); + x587 = (x586 + x558); + fiat_p256_addcarryx_u32(&x588, &x589, 0x0, x540, x571); + fiat_p256_addcarryx_u32(&x590, &x591, x589, x542, x573); + fiat_p256_addcarryx_u32(&x592, &x593, x591, x544, x575); + fiat_p256_addcarryx_u32(&x594, &x595, x593, x546, x577); + fiat_p256_addcarryx_u32(&x596, &x597, x595, x548, x579); + fiat_p256_addcarryx_u32(&x598, &x599, x597, x550, x581); + fiat_p256_addcarryx_u32(&x600, &x601, x599, x552, x583); + fiat_p256_addcarryx_u32(&x602, &x603, x601, x554, x585); + fiat_p256_addcarryx_u32(&x604, &x605, x603, x556, x587); + fiat_p256_mulx_u32(&x606, &x607, x588, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x608, &x609, x588, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x610, &x611, x588, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x612, &x613, x588, UINT32_C(0xffffffff)); + fiat_p256_addcarryx_u32(&x614, &x615, 0x0, x613, x610); + fiat_p256_addcarryx_u32(&x616, &x617, x615, x611, x608); + x618 = (x617 + x609); + fiat_p256_addcarryx_u32(&x619, &x620, 0x0, x588, x612); + fiat_p256_addcarryx_u32(&x621, &x622, x620, x590, x614); + fiat_p256_addcarryx_u32(&x623, &x624, x622, x592, x616); + fiat_p256_addcarryx_u32(&x625, &x626, x624, x594, x618); + fiat_p256_addcarryx_u32(&x627, &x628, x626, x596, 0x0); + fiat_p256_addcarryx_u32(&x629, &x630, x628, x598, 0x0); + fiat_p256_addcarryx_u32(&x631, &x632, x630, x600, x588); + fiat_p256_addcarryx_u32(&x633, &x634, x632, x602, x606); + fiat_p256_addcarryx_u32(&x635, &x636, x634, x604, x607); + x637 = ((uint32_t)x636 + x605); + fiat_p256_subborrowx_u32(&x638, &x639, 0x0, x621, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u32(&x640, &x641, x639, x623, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u32(&x642, &x643, x641, x625, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u32(&x644, &x645, x643, x627, 0x0); + fiat_p256_subborrowx_u32(&x646, &x647, x645, x629, 0x0); + fiat_p256_subborrowx_u32(&x648, &x649, x647, x631, 0x0); + fiat_p256_subborrowx_u32(&x650, &x651, x649, x633, 0x1); + fiat_p256_subborrowx_u32(&x652, &x653, x651, x635, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u32(&x654, &x655, x653, x637, 0x0); + fiat_p256_cmovznz_u32(&x656, x655, x638, x621); + fiat_p256_cmovznz_u32(&x657, x655, x640, x623); + fiat_p256_cmovznz_u32(&x658, x655, x642, x625); + fiat_p256_cmovznz_u32(&x659, x655, x644, x627); + fiat_p256_cmovznz_u32(&x660, x655, x646, x629); + fiat_p256_cmovznz_u32(&x661, x655, x648, x631); + fiat_p256_cmovznz_u32(&x662, x655, x650, x633); + fiat_p256_cmovznz_u32(&x663, x655, x652, x635); + out1[0] = x656; + out1[1] = x657; + out1[2] = x658; + out1[3] = x659; + out1[4] = x660; + out1[5] = x661; + out1[6] = x662; + out1[7] = x663; +} + +/* + * The function fiat_p256_square squares a field element in the Montgomery domain. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * Postconditions: + * eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg1)) mod m + * 0 ≤ eval out1 < m + * + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_square(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1) { + uint32_t x1; + uint32_t x2; + uint32_t x3; + uint32_t x4; + uint32_t x5; + uint32_t x6; + uint32_t x7; + uint32_t x8; + uint32_t x9; + uint32_t x10; + uint32_t x11; + uint32_t x12; + uint32_t x13; + uint32_t x14; + uint32_t x15; + uint32_t x16; + uint32_t x17; + uint32_t x18; + uint32_t x19; + uint32_t x20; + uint32_t x21; + uint32_t x22; + uint32_t x23; + uint32_t x24; + uint32_t x25; + fiat_p256_uint1 x26; + uint32_t x27; + fiat_p256_uint1 x28; + uint32_t x29; + fiat_p256_uint1 x30; + uint32_t x31; + fiat_p256_uint1 x32; + uint32_t x33; + fiat_p256_uint1 x34; + uint32_t x35; + fiat_p256_uint1 x36; + uint32_t x37; + fiat_p256_uint1 x38; + uint32_t x39; + uint32_t x40; + uint32_t x41; + uint32_t x42; + uint32_t x43; + uint32_t x44; + uint32_t x45; + uint32_t x46; + uint32_t x47; + uint32_t x48; + fiat_p256_uint1 x49; + uint32_t x50; + fiat_p256_uint1 x51; + uint32_t x52; + uint32_t x53; + fiat_p256_uint1 x54; + uint32_t x55; + fiat_p256_uint1 x56; + uint32_t x57; + fiat_p256_uint1 x58; + uint32_t x59; + fiat_p256_uint1 x60; + uint32_t x61; + fiat_p256_uint1 x62; + uint32_t x63; + fiat_p256_uint1 x64; + uint32_t x65; + fiat_p256_uint1 x66; + uint32_t x67; + fiat_p256_uint1 x68; + uint32_t x69; + fiat_p256_uint1 x70; + uint32_t x71; + uint32_t x72; + uint32_t x73; + uint32_t x74; + uint32_t x75; + uint32_t x76; + uint32_t x77; + uint32_t x78; + uint32_t x79; + uint32_t x80; + uint32_t x81; + uint32_t x82; + uint32_t x83; + uint32_t x84; + uint32_t x85; + uint32_t x86; + uint32_t x87; + fiat_p256_uint1 x88; + uint32_t x89; + fiat_p256_uint1 x90; + uint32_t x91; + fiat_p256_uint1 x92; + uint32_t x93; + fiat_p256_uint1 x94; + uint32_t x95; + fiat_p256_uint1 x96; + uint32_t x97; + fiat_p256_uint1 x98; + uint32_t x99; + fiat_p256_uint1 x100; + uint32_t x101; + uint32_t x102; + fiat_p256_uint1 x103; + uint32_t x104; + fiat_p256_uint1 x105; + uint32_t x106; + fiat_p256_uint1 x107; + uint32_t x108; + fiat_p256_uint1 x109; + uint32_t x110; + fiat_p256_uint1 x111; + uint32_t x112; + fiat_p256_uint1 x113; + uint32_t x114; + fiat_p256_uint1 x115; + uint32_t x116; + fiat_p256_uint1 x117; + uint32_t x118; + fiat_p256_uint1 x119; + uint32_t x120; + uint32_t x121; + uint32_t x122; + uint32_t x123; + uint32_t x124; + uint32_t x125; + uint32_t x126; + uint32_t x127; + uint32_t x128; + fiat_p256_uint1 x129; + uint32_t x130; + fiat_p256_uint1 x131; + uint32_t x132; + uint32_t x133; + fiat_p256_uint1 x134; + uint32_t x135; + fiat_p256_uint1 x136; + uint32_t x137; + fiat_p256_uint1 x138; + uint32_t x139; + fiat_p256_uint1 x140; + uint32_t x141; + fiat_p256_uint1 x142; + uint32_t x143; + fiat_p256_uint1 x144; + uint32_t x145; + fiat_p256_uint1 x146; + uint32_t x147; + fiat_p256_uint1 x148; + uint32_t x149; + fiat_p256_uint1 x150; + uint32_t x151; + uint32_t x152; + uint32_t x153; + uint32_t x154; + uint32_t x155; + uint32_t x156; + uint32_t x157; + uint32_t x158; + uint32_t x159; + uint32_t x160; + uint32_t x161; + uint32_t x162; + uint32_t x163; + uint32_t x164; + uint32_t x165; + uint32_t x166; + uint32_t x167; + uint32_t x168; + fiat_p256_uint1 x169; + uint32_t x170; + fiat_p256_uint1 x171; + uint32_t x172; + fiat_p256_uint1 x173; + uint32_t x174; + fiat_p256_uint1 x175; + uint32_t x176; + fiat_p256_uint1 x177; + uint32_t x178; + fiat_p256_uint1 x179; + uint32_t x180; + fiat_p256_uint1 x181; + uint32_t x182; + uint32_t x183; + fiat_p256_uint1 x184; + uint32_t x185; + fiat_p256_uint1 x186; + uint32_t x187; + fiat_p256_uint1 x188; + uint32_t x189; + fiat_p256_uint1 x190; + uint32_t x191; + fiat_p256_uint1 x192; + uint32_t x193; + fiat_p256_uint1 x194; + uint32_t x195; + fiat_p256_uint1 x196; + uint32_t x197; + fiat_p256_uint1 x198; + uint32_t x199; + fiat_p256_uint1 x200; + uint32_t x201; + uint32_t x202; + uint32_t x203; + uint32_t x204; + uint32_t x205; + uint32_t x206; + uint32_t x207; + uint32_t x208; + uint32_t x209; + fiat_p256_uint1 x210; + uint32_t x211; + fiat_p256_uint1 x212; + uint32_t x213; + uint32_t x214; + fiat_p256_uint1 x215; + uint32_t x216; + fiat_p256_uint1 x217; + uint32_t x218; + fiat_p256_uint1 x219; + uint32_t x220; + fiat_p256_uint1 x221; + uint32_t x222; + fiat_p256_uint1 x223; + uint32_t x224; + fiat_p256_uint1 x225; + uint32_t x226; + fiat_p256_uint1 x227; + uint32_t x228; + fiat_p256_uint1 x229; + uint32_t x230; + fiat_p256_uint1 x231; + uint32_t x232; + uint32_t x233; + uint32_t x234; + uint32_t x235; + uint32_t x236; + uint32_t x237; + uint32_t x238; + uint32_t x239; + uint32_t x240; + uint32_t x241; + uint32_t x242; + uint32_t x243; + uint32_t x244; + uint32_t x245; + uint32_t x246; + uint32_t x247; + uint32_t x248; + uint32_t x249; + fiat_p256_uint1 x250; + uint32_t x251; + fiat_p256_uint1 x252; + uint32_t x253; + fiat_p256_uint1 x254; + uint32_t x255; + fiat_p256_uint1 x256; + uint32_t x257; + fiat_p256_uint1 x258; + uint32_t x259; + fiat_p256_uint1 x260; + uint32_t x261; + fiat_p256_uint1 x262; + uint32_t x263; + uint32_t x264; + fiat_p256_uint1 x265; + uint32_t x266; + fiat_p256_uint1 x267; + uint32_t x268; + fiat_p256_uint1 x269; + uint32_t x270; + fiat_p256_uint1 x271; + uint32_t x272; + fiat_p256_uint1 x273; + uint32_t x274; + fiat_p256_uint1 x275; + uint32_t x276; + fiat_p256_uint1 x277; + uint32_t x278; + fiat_p256_uint1 x279; + uint32_t x280; + fiat_p256_uint1 x281; + uint32_t x282; + uint32_t x283; + uint32_t x284; + uint32_t x285; + uint32_t x286; + uint32_t x287; + uint32_t x288; + uint32_t x289; + uint32_t x290; + fiat_p256_uint1 x291; + uint32_t x292; + fiat_p256_uint1 x293; + uint32_t x294; + uint32_t x295; + fiat_p256_uint1 x296; + uint32_t x297; + fiat_p256_uint1 x298; + uint32_t x299; + fiat_p256_uint1 x300; + uint32_t x301; + fiat_p256_uint1 x302; + uint32_t x303; + fiat_p256_uint1 x304; + uint32_t x305; + fiat_p256_uint1 x306; + uint32_t x307; + fiat_p256_uint1 x308; + uint32_t x309; + fiat_p256_uint1 x310; + uint32_t x311; + fiat_p256_uint1 x312; + uint32_t x313; + uint32_t x314; + uint32_t x315; + uint32_t x316; + uint32_t x317; + uint32_t x318; + uint32_t x319; + uint32_t x320; + uint32_t x321; + uint32_t x322; + uint32_t x323; + uint32_t x324; + uint32_t x325; + uint32_t x326; + uint32_t x327; + uint32_t x328; + uint32_t x329; + uint32_t x330; + fiat_p256_uint1 x331; + uint32_t x332; + fiat_p256_uint1 x333; + uint32_t x334; + fiat_p256_uint1 x335; + uint32_t x336; + fiat_p256_uint1 x337; + uint32_t x338; + fiat_p256_uint1 x339; + uint32_t x340; + fiat_p256_uint1 x341; + uint32_t x342; + fiat_p256_uint1 x343; + uint32_t x344; + uint32_t x345; + fiat_p256_uint1 x346; + uint32_t x347; + fiat_p256_uint1 x348; + uint32_t x349; + fiat_p256_uint1 x350; + uint32_t x351; + fiat_p256_uint1 x352; + uint32_t x353; + fiat_p256_uint1 x354; + uint32_t x355; + fiat_p256_uint1 x356; + uint32_t x357; + fiat_p256_uint1 x358; + uint32_t x359; + fiat_p256_uint1 x360; + uint32_t x361; + fiat_p256_uint1 x362; + uint32_t x363; + uint32_t x364; + uint32_t x365; + uint32_t x366; + uint32_t x367; + uint32_t x368; + uint32_t x369; + uint32_t x370; + uint32_t x371; + fiat_p256_uint1 x372; + uint32_t x373; + fiat_p256_uint1 x374; + uint32_t x375; + uint32_t x376; + fiat_p256_uint1 x377; + uint32_t x378; + fiat_p256_uint1 x379; + uint32_t x380; + fiat_p256_uint1 x381; + uint32_t x382; + fiat_p256_uint1 x383; + uint32_t x384; + fiat_p256_uint1 x385; + uint32_t x386; + fiat_p256_uint1 x387; + uint32_t x388; + fiat_p256_uint1 x389; + uint32_t x390; + fiat_p256_uint1 x391; + uint32_t x392; + fiat_p256_uint1 x393; + uint32_t x394; + uint32_t x395; + uint32_t x396; + uint32_t x397; + uint32_t x398; + uint32_t x399; + uint32_t x400; + uint32_t x401; + uint32_t x402; + uint32_t x403; + uint32_t x404; + uint32_t x405; + uint32_t x406; + uint32_t x407; + uint32_t x408; + uint32_t x409; + uint32_t x410; + uint32_t x411; + fiat_p256_uint1 x412; + uint32_t x413; + fiat_p256_uint1 x414; + uint32_t x415; + fiat_p256_uint1 x416; + uint32_t x417; + fiat_p256_uint1 x418; + uint32_t x419; + fiat_p256_uint1 x420; + uint32_t x421; + fiat_p256_uint1 x422; + uint32_t x423; + fiat_p256_uint1 x424; + uint32_t x425; + uint32_t x426; + fiat_p256_uint1 x427; + uint32_t x428; + fiat_p256_uint1 x429; + uint32_t x430; + fiat_p256_uint1 x431; + uint32_t x432; + fiat_p256_uint1 x433; + uint32_t x434; + fiat_p256_uint1 x435; + uint32_t x436; + fiat_p256_uint1 x437; + uint32_t x438; + fiat_p256_uint1 x439; + uint32_t x440; + fiat_p256_uint1 x441; + uint32_t x442; + fiat_p256_uint1 x443; + uint32_t x444; + uint32_t x445; + uint32_t x446; + uint32_t x447; + uint32_t x448; + uint32_t x449; + uint32_t x450; + uint32_t x451; + uint32_t x452; + fiat_p256_uint1 x453; + uint32_t x454; + fiat_p256_uint1 x455; + uint32_t x456; + uint32_t x457; + fiat_p256_uint1 x458; + uint32_t x459; + fiat_p256_uint1 x460; + uint32_t x461; + fiat_p256_uint1 x462; + uint32_t x463; + fiat_p256_uint1 x464; + uint32_t x465; + fiat_p256_uint1 x466; + uint32_t x467; + fiat_p256_uint1 x468; + uint32_t x469; + fiat_p256_uint1 x470; + uint32_t x471; + fiat_p256_uint1 x472; + uint32_t x473; + fiat_p256_uint1 x474; + uint32_t x475; + uint32_t x476; + uint32_t x477; + uint32_t x478; + uint32_t x479; + uint32_t x480; + uint32_t x481; + uint32_t x482; + uint32_t x483; + uint32_t x484; + uint32_t x485; + uint32_t x486; + uint32_t x487; + uint32_t x488; + uint32_t x489; + uint32_t x490; + uint32_t x491; + uint32_t x492; + fiat_p256_uint1 x493; + uint32_t x494; + fiat_p256_uint1 x495; + uint32_t x496; + fiat_p256_uint1 x497; + uint32_t x498; + fiat_p256_uint1 x499; + uint32_t x500; + fiat_p256_uint1 x501; + uint32_t x502; + fiat_p256_uint1 x503; + uint32_t x504; + fiat_p256_uint1 x505; + uint32_t x506; + uint32_t x507; + fiat_p256_uint1 x508; + uint32_t x509; + fiat_p256_uint1 x510; + uint32_t x511; + fiat_p256_uint1 x512; + uint32_t x513; + fiat_p256_uint1 x514; + uint32_t x515; + fiat_p256_uint1 x516; + uint32_t x517; + fiat_p256_uint1 x518; + uint32_t x519; + fiat_p256_uint1 x520; + uint32_t x521; + fiat_p256_uint1 x522; + uint32_t x523; + fiat_p256_uint1 x524; + uint32_t x525; + uint32_t x526; + uint32_t x527; + uint32_t x528; + uint32_t x529; + uint32_t x530; + uint32_t x531; + uint32_t x532; + uint32_t x533; + fiat_p256_uint1 x534; + uint32_t x535; + fiat_p256_uint1 x536; + uint32_t x537; + uint32_t x538; + fiat_p256_uint1 x539; + uint32_t x540; + fiat_p256_uint1 x541; + uint32_t x542; + fiat_p256_uint1 x543; + uint32_t x544; + fiat_p256_uint1 x545; + uint32_t x546; + fiat_p256_uint1 x547; + uint32_t x548; + fiat_p256_uint1 x549; + uint32_t x550; + fiat_p256_uint1 x551; + uint32_t x552; + fiat_p256_uint1 x553; + uint32_t x554; + fiat_p256_uint1 x555; + uint32_t x556; + uint32_t x557; + uint32_t x558; + uint32_t x559; + uint32_t x560; + uint32_t x561; + uint32_t x562; + uint32_t x563; + uint32_t x564; + uint32_t x565; + uint32_t x566; + uint32_t x567; + uint32_t x568; + uint32_t x569; + uint32_t x570; + uint32_t x571; + uint32_t x572; + uint32_t x573; + fiat_p256_uint1 x574; + uint32_t x575; + fiat_p256_uint1 x576; + uint32_t x577; + fiat_p256_uint1 x578; + uint32_t x579; + fiat_p256_uint1 x580; + uint32_t x581; + fiat_p256_uint1 x582; + uint32_t x583; + fiat_p256_uint1 x584; + uint32_t x585; + fiat_p256_uint1 x586; + uint32_t x587; + uint32_t x588; + fiat_p256_uint1 x589; + uint32_t x590; + fiat_p256_uint1 x591; + uint32_t x592; + fiat_p256_uint1 x593; + uint32_t x594; + fiat_p256_uint1 x595; + uint32_t x596; + fiat_p256_uint1 x597; + uint32_t x598; + fiat_p256_uint1 x599; + uint32_t x600; + fiat_p256_uint1 x601; + uint32_t x602; + fiat_p256_uint1 x603; + uint32_t x604; + fiat_p256_uint1 x605; + uint32_t x606; + uint32_t x607; + uint32_t x608; + uint32_t x609; + uint32_t x610; + uint32_t x611; + uint32_t x612; + uint32_t x613; + uint32_t x614; + fiat_p256_uint1 x615; + uint32_t x616; + fiat_p256_uint1 x617; + uint32_t x618; + uint32_t x619; + fiat_p256_uint1 x620; + uint32_t x621; + fiat_p256_uint1 x622; + uint32_t x623; + fiat_p256_uint1 x624; + uint32_t x625; + fiat_p256_uint1 x626; + uint32_t x627; + fiat_p256_uint1 x628; + uint32_t x629; + fiat_p256_uint1 x630; + uint32_t x631; + fiat_p256_uint1 x632; + uint32_t x633; + fiat_p256_uint1 x634; + uint32_t x635; + fiat_p256_uint1 x636; + uint32_t x637; + uint32_t x638; + fiat_p256_uint1 x639; + uint32_t x640; + fiat_p256_uint1 x641; + uint32_t x642; + fiat_p256_uint1 x643; + uint32_t x644; + fiat_p256_uint1 x645; + uint32_t x646; + fiat_p256_uint1 x647; + uint32_t x648; + fiat_p256_uint1 x649; + uint32_t x650; + fiat_p256_uint1 x651; + uint32_t x652; + fiat_p256_uint1 x653; + uint32_t x654; + fiat_p256_uint1 x655; + uint32_t x656; + uint32_t x657; + uint32_t x658; + uint32_t x659; + uint32_t x660; + uint32_t x661; + uint32_t x662; + uint32_t x663; + x1 = (arg1[1]); + x2 = (arg1[2]); + x3 = (arg1[3]); + x4 = (arg1[4]); + x5 = (arg1[5]); + x6 = (arg1[6]); + x7 = (arg1[7]); + x8 = (arg1[0]); + fiat_p256_mulx_u32(&x9, &x10, x8, (arg1[7])); + fiat_p256_mulx_u32(&x11, &x12, x8, (arg1[6])); + fiat_p256_mulx_u32(&x13, &x14, x8, (arg1[5])); + fiat_p256_mulx_u32(&x15, &x16, x8, (arg1[4])); + fiat_p256_mulx_u32(&x17, &x18, x8, (arg1[3])); + fiat_p256_mulx_u32(&x19, &x20, x8, (arg1[2])); + fiat_p256_mulx_u32(&x21, &x22, x8, (arg1[1])); + fiat_p256_mulx_u32(&x23, &x24, x8, (arg1[0])); + fiat_p256_addcarryx_u32(&x25, &x26, 0x0, x24, x21); + fiat_p256_addcarryx_u32(&x27, &x28, x26, x22, x19); + fiat_p256_addcarryx_u32(&x29, &x30, x28, x20, x17); + fiat_p256_addcarryx_u32(&x31, &x32, x30, x18, x15); + fiat_p256_addcarryx_u32(&x33, &x34, x32, x16, x13); + fiat_p256_addcarryx_u32(&x35, &x36, x34, x14, x11); + fiat_p256_addcarryx_u32(&x37, &x38, x36, x12, x9); + x39 = (x38 + x10); + fiat_p256_mulx_u32(&x40, &x41, x23, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x42, &x43, x23, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x44, &x45, x23, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x46, &x47, x23, UINT32_C(0xffffffff)); + fiat_p256_addcarryx_u32(&x48, &x49, 0x0, x47, x44); + fiat_p256_addcarryx_u32(&x50, &x51, x49, x45, x42); + x52 = (x51 + x43); + fiat_p256_addcarryx_u32(&x53, &x54, 0x0, x23, x46); + fiat_p256_addcarryx_u32(&x55, &x56, x54, x25, x48); + fiat_p256_addcarryx_u32(&x57, &x58, x56, x27, x50); + fiat_p256_addcarryx_u32(&x59, &x60, x58, x29, x52); + fiat_p256_addcarryx_u32(&x61, &x62, x60, x31, 0x0); + fiat_p256_addcarryx_u32(&x63, &x64, x62, x33, 0x0); + fiat_p256_addcarryx_u32(&x65, &x66, x64, x35, x23); + fiat_p256_addcarryx_u32(&x67, &x68, x66, x37, x40); + fiat_p256_addcarryx_u32(&x69, &x70, x68, x39, x41); + fiat_p256_mulx_u32(&x71, &x72, x1, (arg1[7])); + fiat_p256_mulx_u32(&x73, &x74, x1, (arg1[6])); + fiat_p256_mulx_u32(&x75, &x76, x1, (arg1[5])); + fiat_p256_mulx_u32(&x77, &x78, x1, (arg1[4])); + fiat_p256_mulx_u32(&x79, &x80, x1, (arg1[3])); + fiat_p256_mulx_u32(&x81, &x82, x1, (arg1[2])); + fiat_p256_mulx_u32(&x83, &x84, x1, (arg1[1])); + fiat_p256_mulx_u32(&x85, &x86, x1, (arg1[0])); + fiat_p256_addcarryx_u32(&x87, &x88, 0x0, x86, x83); + fiat_p256_addcarryx_u32(&x89, &x90, x88, x84, x81); + fiat_p256_addcarryx_u32(&x91, &x92, x90, x82, x79); + fiat_p256_addcarryx_u32(&x93, &x94, x92, x80, x77); + fiat_p256_addcarryx_u32(&x95, &x96, x94, x78, x75); + fiat_p256_addcarryx_u32(&x97, &x98, x96, x76, x73); + fiat_p256_addcarryx_u32(&x99, &x100, x98, x74, x71); + x101 = (x100 + x72); + fiat_p256_addcarryx_u32(&x102, &x103, 0x0, x55, x85); + fiat_p256_addcarryx_u32(&x104, &x105, x103, x57, x87); + fiat_p256_addcarryx_u32(&x106, &x107, x105, x59, x89); + fiat_p256_addcarryx_u32(&x108, &x109, x107, x61, x91); + fiat_p256_addcarryx_u32(&x110, &x111, x109, x63, x93); + fiat_p256_addcarryx_u32(&x112, &x113, x111, x65, x95); + fiat_p256_addcarryx_u32(&x114, &x115, x113, x67, x97); + fiat_p256_addcarryx_u32(&x116, &x117, x115, x69, x99); + fiat_p256_addcarryx_u32(&x118, &x119, x117, x70, x101); + fiat_p256_mulx_u32(&x120, &x121, x102, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x122, &x123, x102, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x124, &x125, x102, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x126, &x127, x102, UINT32_C(0xffffffff)); + fiat_p256_addcarryx_u32(&x128, &x129, 0x0, x127, x124); + fiat_p256_addcarryx_u32(&x130, &x131, x129, x125, x122); + x132 = (x131 + x123); + fiat_p256_addcarryx_u32(&x133, &x134, 0x0, x102, x126); + fiat_p256_addcarryx_u32(&x135, &x136, x134, x104, x128); + fiat_p256_addcarryx_u32(&x137, &x138, x136, x106, x130); + fiat_p256_addcarryx_u32(&x139, &x140, x138, x108, x132); + fiat_p256_addcarryx_u32(&x141, &x142, x140, x110, 0x0); + fiat_p256_addcarryx_u32(&x143, &x144, x142, x112, 0x0); + fiat_p256_addcarryx_u32(&x145, &x146, x144, x114, x102); + fiat_p256_addcarryx_u32(&x147, &x148, x146, x116, x120); + fiat_p256_addcarryx_u32(&x149, &x150, x148, x118, x121); + x151 = ((uint32_t)x150 + x119); + fiat_p256_mulx_u32(&x152, &x153, x2, (arg1[7])); + fiat_p256_mulx_u32(&x154, &x155, x2, (arg1[6])); + fiat_p256_mulx_u32(&x156, &x157, x2, (arg1[5])); + fiat_p256_mulx_u32(&x158, &x159, x2, (arg1[4])); + fiat_p256_mulx_u32(&x160, &x161, x2, (arg1[3])); + fiat_p256_mulx_u32(&x162, &x163, x2, (arg1[2])); + fiat_p256_mulx_u32(&x164, &x165, x2, (arg1[1])); + fiat_p256_mulx_u32(&x166, &x167, x2, (arg1[0])); + fiat_p256_addcarryx_u32(&x168, &x169, 0x0, x167, x164); + fiat_p256_addcarryx_u32(&x170, &x171, x169, x165, x162); + fiat_p256_addcarryx_u32(&x172, &x173, x171, x163, x160); + fiat_p256_addcarryx_u32(&x174, &x175, x173, x161, x158); + fiat_p256_addcarryx_u32(&x176, &x177, x175, x159, x156); + fiat_p256_addcarryx_u32(&x178, &x179, x177, x157, x154); + fiat_p256_addcarryx_u32(&x180, &x181, x179, x155, x152); + x182 = (x181 + x153); + fiat_p256_addcarryx_u32(&x183, &x184, 0x0, x135, x166); + fiat_p256_addcarryx_u32(&x185, &x186, x184, x137, x168); + fiat_p256_addcarryx_u32(&x187, &x188, x186, x139, x170); + fiat_p256_addcarryx_u32(&x189, &x190, x188, x141, x172); + fiat_p256_addcarryx_u32(&x191, &x192, x190, x143, x174); + fiat_p256_addcarryx_u32(&x193, &x194, x192, x145, x176); + fiat_p256_addcarryx_u32(&x195, &x196, x194, x147, x178); + fiat_p256_addcarryx_u32(&x197, &x198, x196, x149, x180); + fiat_p256_addcarryx_u32(&x199, &x200, x198, x151, x182); + fiat_p256_mulx_u32(&x201, &x202, x183, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x203, &x204, x183, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x205, &x206, x183, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x207, &x208, x183, UINT32_C(0xffffffff)); + fiat_p256_addcarryx_u32(&x209, &x210, 0x0, x208, x205); + fiat_p256_addcarryx_u32(&x211, &x212, x210, x206, x203); + x213 = (x212 + x204); + fiat_p256_addcarryx_u32(&x214, &x215, 0x0, x183, x207); + fiat_p256_addcarryx_u32(&x216, &x217, x215, x185, x209); + fiat_p256_addcarryx_u32(&x218, &x219, x217, x187, x211); + fiat_p256_addcarryx_u32(&x220, &x221, x219, x189, x213); + fiat_p256_addcarryx_u32(&x222, &x223, x221, x191, 0x0); + fiat_p256_addcarryx_u32(&x224, &x225, x223, x193, 0x0); + fiat_p256_addcarryx_u32(&x226, &x227, x225, x195, x183); + fiat_p256_addcarryx_u32(&x228, &x229, x227, x197, x201); + fiat_p256_addcarryx_u32(&x230, &x231, x229, x199, x202); + x232 = ((uint32_t)x231 + x200); + fiat_p256_mulx_u32(&x233, &x234, x3, (arg1[7])); + fiat_p256_mulx_u32(&x235, &x236, x3, (arg1[6])); + fiat_p256_mulx_u32(&x237, &x238, x3, (arg1[5])); + fiat_p256_mulx_u32(&x239, &x240, x3, (arg1[4])); + fiat_p256_mulx_u32(&x241, &x242, x3, (arg1[3])); + fiat_p256_mulx_u32(&x243, &x244, x3, (arg1[2])); + fiat_p256_mulx_u32(&x245, &x246, x3, (arg1[1])); + fiat_p256_mulx_u32(&x247, &x248, x3, (arg1[0])); + fiat_p256_addcarryx_u32(&x249, &x250, 0x0, x248, x245); + fiat_p256_addcarryx_u32(&x251, &x252, x250, x246, x243); + fiat_p256_addcarryx_u32(&x253, &x254, x252, x244, x241); + fiat_p256_addcarryx_u32(&x255, &x256, x254, x242, x239); + fiat_p256_addcarryx_u32(&x257, &x258, x256, x240, x237); + fiat_p256_addcarryx_u32(&x259, &x260, x258, x238, x235); + fiat_p256_addcarryx_u32(&x261, &x262, x260, x236, x233); + x263 = (x262 + x234); + fiat_p256_addcarryx_u32(&x264, &x265, 0x0, x216, x247); + fiat_p256_addcarryx_u32(&x266, &x267, x265, x218, x249); + fiat_p256_addcarryx_u32(&x268, &x269, x267, x220, x251); + fiat_p256_addcarryx_u32(&x270, &x271, x269, x222, x253); + fiat_p256_addcarryx_u32(&x272, &x273, x271, x224, x255); + fiat_p256_addcarryx_u32(&x274, &x275, x273, x226, x257); + fiat_p256_addcarryx_u32(&x276, &x277, x275, x228, x259); + fiat_p256_addcarryx_u32(&x278, &x279, x277, x230, x261); + fiat_p256_addcarryx_u32(&x280, &x281, x279, x232, x263); + fiat_p256_mulx_u32(&x282, &x283, x264, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x284, &x285, x264, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x286, &x287, x264, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x288, &x289, x264, UINT32_C(0xffffffff)); + fiat_p256_addcarryx_u32(&x290, &x291, 0x0, x289, x286); + fiat_p256_addcarryx_u32(&x292, &x293, x291, x287, x284); + x294 = (x293 + x285); + fiat_p256_addcarryx_u32(&x295, &x296, 0x0, x264, x288); + fiat_p256_addcarryx_u32(&x297, &x298, x296, x266, x290); + fiat_p256_addcarryx_u32(&x299, &x300, x298, x268, x292); + fiat_p256_addcarryx_u32(&x301, &x302, x300, x270, x294); + fiat_p256_addcarryx_u32(&x303, &x304, x302, x272, 0x0); + fiat_p256_addcarryx_u32(&x305, &x306, x304, x274, 0x0); + fiat_p256_addcarryx_u32(&x307, &x308, x306, x276, x264); + fiat_p256_addcarryx_u32(&x309, &x310, x308, x278, x282); + fiat_p256_addcarryx_u32(&x311, &x312, x310, x280, x283); + x313 = ((uint32_t)x312 + x281); + fiat_p256_mulx_u32(&x314, &x315, x4, (arg1[7])); + fiat_p256_mulx_u32(&x316, &x317, x4, (arg1[6])); + fiat_p256_mulx_u32(&x318, &x319, x4, (arg1[5])); + fiat_p256_mulx_u32(&x320, &x321, x4, (arg1[4])); + fiat_p256_mulx_u32(&x322, &x323, x4, (arg1[3])); + fiat_p256_mulx_u32(&x324, &x325, x4, (arg1[2])); + fiat_p256_mulx_u32(&x326, &x327, x4, (arg1[1])); + fiat_p256_mulx_u32(&x328, &x329, x4, (arg1[0])); + fiat_p256_addcarryx_u32(&x330, &x331, 0x0, x329, x326); + fiat_p256_addcarryx_u32(&x332, &x333, x331, x327, x324); + fiat_p256_addcarryx_u32(&x334, &x335, x333, x325, x322); + fiat_p256_addcarryx_u32(&x336, &x337, x335, x323, x320); + fiat_p256_addcarryx_u32(&x338, &x339, x337, x321, x318); + fiat_p256_addcarryx_u32(&x340, &x341, x339, x319, x316); + fiat_p256_addcarryx_u32(&x342, &x343, x341, x317, x314); + x344 = (x343 + x315); + fiat_p256_addcarryx_u32(&x345, &x346, 0x0, x297, x328); + fiat_p256_addcarryx_u32(&x347, &x348, x346, x299, x330); + fiat_p256_addcarryx_u32(&x349, &x350, x348, x301, x332); + fiat_p256_addcarryx_u32(&x351, &x352, x350, x303, x334); + fiat_p256_addcarryx_u32(&x353, &x354, x352, x305, x336); + fiat_p256_addcarryx_u32(&x355, &x356, x354, x307, x338); + fiat_p256_addcarryx_u32(&x357, &x358, x356, x309, x340); + fiat_p256_addcarryx_u32(&x359, &x360, x358, x311, x342); + fiat_p256_addcarryx_u32(&x361, &x362, x360, x313, x344); + fiat_p256_mulx_u32(&x363, &x364, x345, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x365, &x366, x345, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x367, &x368, x345, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x369, &x370, x345, UINT32_C(0xffffffff)); + fiat_p256_addcarryx_u32(&x371, &x372, 0x0, x370, x367); + fiat_p256_addcarryx_u32(&x373, &x374, x372, x368, x365); + x375 = (x374 + x366); + fiat_p256_addcarryx_u32(&x376, &x377, 0x0, x345, x369); + fiat_p256_addcarryx_u32(&x378, &x379, x377, x347, x371); + fiat_p256_addcarryx_u32(&x380, &x381, x379, x349, x373); + fiat_p256_addcarryx_u32(&x382, &x383, x381, x351, x375); + fiat_p256_addcarryx_u32(&x384, &x385, x383, x353, 0x0); + fiat_p256_addcarryx_u32(&x386, &x387, x385, x355, 0x0); + fiat_p256_addcarryx_u32(&x388, &x389, x387, x357, x345); + fiat_p256_addcarryx_u32(&x390, &x391, x389, x359, x363); + fiat_p256_addcarryx_u32(&x392, &x393, x391, x361, x364); + x394 = ((uint32_t)x393 + x362); + fiat_p256_mulx_u32(&x395, &x396, x5, (arg1[7])); + fiat_p256_mulx_u32(&x397, &x398, x5, (arg1[6])); + fiat_p256_mulx_u32(&x399, &x400, x5, (arg1[5])); + fiat_p256_mulx_u32(&x401, &x402, x5, (arg1[4])); + fiat_p256_mulx_u32(&x403, &x404, x5, (arg1[3])); + fiat_p256_mulx_u32(&x405, &x406, x5, (arg1[2])); + fiat_p256_mulx_u32(&x407, &x408, x5, (arg1[1])); + fiat_p256_mulx_u32(&x409, &x410, x5, (arg1[0])); + fiat_p256_addcarryx_u32(&x411, &x412, 0x0, x410, x407); + fiat_p256_addcarryx_u32(&x413, &x414, x412, x408, x405); + fiat_p256_addcarryx_u32(&x415, &x416, x414, x406, x403); + fiat_p256_addcarryx_u32(&x417, &x418, x416, x404, x401); + fiat_p256_addcarryx_u32(&x419, &x420, x418, x402, x399); + fiat_p256_addcarryx_u32(&x421, &x422, x420, x400, x397); + fiat_p256_addcarryx_u32(&x423, &x424, x422, x398, x395); + x425 = (x424 + x396); + fiat_p256_addcarryx_u32(&x426, &x427, 0x0, x378, x409); + fiat_p256_addcarryx_u32(&x428, &x429, x427, x380, x411); + fiat_p256_addcarryx_u32(&x430, &x431, x429, x382, x413); + fiat_p256_addcarryx_u32(&x432, &x433, x431, x384, x415); + fiat_p256_addcarryx_u32(&x434, &x435, x433, x386, x417); + fiat_p256_addcarryx_u32(&x436, &x437, x435, x388, x419); + fiat_p256_addcarryx_u32(&x438, &x439, x437, x390, x421); + fiat_p256_addcarryx_u32(&x440, &x441, x439, x392, x423); + fiat_p256_addcarryx_u32(&x442, &x443, x441, x394, x425); + fiat_p256_mulx_u32(&x444, &x445, x426, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x446, &x447, x426, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x448, &x449, x426, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x450, &x451, x426, UINT32_C(0xffffffff)); + fiat_p256_addcarryx_u32(&x452, &x453, 0x0, x451, x448); + fiat_p256_addcarryx_u32(&x454, &x455, x453, x449, x446); + x456 = (x455 + x447); + fiat_p256_addcarryx_u32(&x457, &x458, 0x0, x426, x450); + fiat_p256_addcarryx_u32(&x459, &x460, x458, x428, x452); + fiat_p256_addcarryx_u32(&x461, &x462, x460, x430, x454); + fiat_p256_addcarryx_u32(&x463, &x464, x462, x432, x456); + fiat_p256_addcarryx_u32(&x465, &x466, x464, x434, 0x0); + fiat_p256_addcarryx_u32(&x467, &x468, x466, x436, 0x0); + fiat_p256_addcarryx_u32(&x469, &x470, x468, x438, x426); + fiat_p256_addcarryx_u32(&x471, &x472, x470, x440, x444); + fiat_p256_addcarryx_u32(&x473, &x474, x472, x442, x445); + x475 = ((uint32_t)x474 + x443); + fiat_p256_mulx_u32(&x476, &x477, x6, (arg1[7])); + fiat_p256_mulx_u32(&x478, &x479, x6, (arg1[6])); + fiat_p256_mulx_u32(&x480, &x481, x6, (arg1[5])); + fiat_p256_mulx_u32(&x482, &x483, x6, (arg1[4])); + fiat_p256_mulx_u32(&x484, &x485, x6, (arg1[3])); + fiat_p256_mulx_u32(&x486, &x487, x6, (arg1[2])); + fiat_p256_mulx_u32(&x488, &x489, x6, (arg1[1])); + fiat_p256_mulx_u32(&x490, &x491, x6, (arg1[0])); + fiat_p256_addcarryx_u32(&x492, &x493, 0x0, x491, x488); + fiat_p256_addcarryx_u32(&x494, &x495, x493, x489, x486); + fiat_p256_addcarryx_u32(&x496, &x497, x495, x487, x484); + fiat_p256_addcarryx_u32(&x498, &x499, x497, x485, x482); + fiat_p256_addcarryx_u32(&x500, &x501, x499, x483, x480); + fiat_p256_addcarryx_u32(&x502, &x503, x501, x481, x478); + fiat_p256_addcarryx_u32(&x504, &x505, x503, x479, x476); + x506 = (x505 + x477); + fiat_p256_addcarryx_u32(&x507, &x508, 0x0, x459, x490); + fiat_p256_addcarryx_u32(&x509, &x510, x508, x461, x492); + fiat_p256_addcarryx_u32(&x511, &x512, x510, x463, x494); + fiat_p256_addcarryx_u32(&x513, &x514, x512, x465, x496); + fiat_p256_addcarryx_u32(&x515, &x516, x514, x467, x498); + fiat_p256_addcarryx_u32(&x517, &x518, x516, x469, x500); + fiat_p256_addcarryx_u32(&x519, &x520, x518, x471, x502); + fiat_p256_addcarryx_u32(&x521, &x522, x520, x473, x504); + fiat_p256_addcarryx_u32(&x523, &x524, x522, x475, x506); + fiat_p256_mulx_u32(&x525, &x526, x507, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x527, &x528, x507, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x529, &x530, x507, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x531, &x532, x507, UINT32_C(0xffffffff)); + fiat_p256_addcarryx_u32(&x533, &x534, 0x0, x532, x529); + fiat_p256_addcarryx_u32(&x535, &x536, x534, x530, x527); + x537 = (x536 + x528); + fiat_p256_addcarryx_u32(&x538, &x539, 0x0, x507, x531); + fiat_p256_addcarryx_u32(&x540, &x541, x539, x509, x533); + fiat_p256_addcarryx_u32(&x542, &x543, x541, x511, x535); + fiat_p256_addcarryx_u32(&x544, &x545, x543, x513, x537); + fiat_p256_addcarryx_u32(&x546, &x547, x545, x515, 0x0); + fiat_p256_addcarryx_u32(&x548, &x549, x547, x517, 0x0); + fiat_p256_addcarryx_u32(&x550, &x551, x549, x519, x507); + fiat_p256_addcarryx_u32(&x552, &x553, x551, x521, x525); + fiat_p256_addcarryx_u32(&x554, &x555, x553, x523, x526); + x556 = ((uint32_t)x555 + x524); + fiat_p256_mulx_u32(&x557, &x558, x7, (arg1[7])); + fiat_p256_mulx_u32(&x559, &x560, x7, (arg1[6])); + fiat_p256_mulx_u32(&x561, &x562, x7, (arg1[5])); + fiat_p256_mulx_u32(&x563, &x564, x7, (arg1[4])); + fiat_p256_mulx_u32(&x565, &x566, x7, (arg1[3])); + fiat_p256_mulx_u32(&x567, &x568, x7, (arg1[2])); + fiat_p256_mulx_u32(&x569, &x570, x7, (arg1[1])); + fiat_p256_mulx_u32(&x571, &x572, x7, (arg1[0])); + fiat_p256_addcarryx_u32(&x573, &x574, 0x0, x572, x569); + fiat_p256_addcarryx_u32(&x575, &x576, x574, x570, x567); + fiat_p256_addcarryx_u32(&x577, &x578, x576, x568, x565); + fiat_p256_addcarryx_u32(&x579, &x580, x578, x566, x563); + fiat_p256_addcarryx_u32(&x581, &x582, x580, x564, x561); + fiat_p256_addcarryx_u32(&x583, &x584, x582, x562, x559); + fiat_p256_addcarryx_u32(&x585, &x586, x584, x560, x557); + x587 = (x586 + x558); + fiat_p256_addcarryx_u32(&x588, &x589, 0x0, x540, x571); + fiat_p256_addcarryx_u32(&x590, &x591, x589, x542, x573); + fiat_p256_addcarryx_u32(&x592, &x593, x591, x544, x575); + fiat_p256_addcarryx_u32(&x594, &x595, x593, x546, x577); + fiat_p256_addcarryx_u32(&x596, &x597, x595, x548, x579); + fiat_p256_addcarryx_u32(&x598, &x599, x597, x550, x581); + fiat_p256_addcarryx_u32(&x600, &x601, x599, x552, x583); + fiat_p256_addcarryx_u32(&x602, &x603, x601, x554, x585); + fiat_p256_addcarryx_u32(&x604, &x605, x603, x556, x587); + fiat_p256_mulx_u32(&x606, &x607, x588, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x608, &x609, x588, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x610, &x611, x588, UINT32_C(0xffffffff)); + fiat_p256_mulx_u32(&x612, &x613, x588, UINT32_C(0xffffffff)); + fiat_p256_addcarryx_u32(&x614, &x615, 0x0, x613, x610); + fiat_p256_addcarryx_u32(&x616, &x617, x615, x611, x608); + x618 = (x617 + x609); + fiat_p256_addcarryx_u32(&x619, &x620, 0x0, x588, x612); + fiat_p256_addcarryx_u32(&x621, &x622, x620, x590, x614); + fiat_p256_addcarryx_u32(&x623, &x624, x622, x592, x616); + fiat_p256_addcarryx_u32(&x625, &x626, x624, x594, x618); + fiat_p256_addcarryx_u32(&x627, &x628, x626, x596, 0x0); + fiat_p256_addcarryx_u32(&x629, &x630, x628, x598, 0x0); + fiat_p256_addcarryx_u32(&x631, &x632, x630, x600, x588); + fiat_p256_addcarryx_u32(&x633, &x634, x632, x602, x606); + fiat_p256_addcarryx_u32(&x635, &x636, x634, x604, x607); + x637 = ((uint32_t)x636 + x605); + fiat_p256_subborrowx_u32(&x638, &x639, 0x0, x621, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u32(&x640, &x641, x639, x623, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u32(&x642, &x643, x641, x625, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u32(&x644, &x645, x643, x627, 0x0); + fiat_p256_subborrowx_u32(&x646, &x647, x645, x629, 0x0); + fiat_p256_subborrowx_u32(&x648, &x649, x647, x631, 0x0); + fiat_p256_subborrowx_u32(&x650, &x651, x649, x633, 0x1); + fiat_p256_subborrowx_u32(&x652, &x653, x651, x635, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u32(&x654, &x655, x653, x637, 0x0); + fiat_p256_cmovznz_u32(&x656, x655, x638, x621); + fiat_p256_cmovznz_u32(&x657, x655, x640, x623); + fiat_p256_cmovznz_u32(&x658, x655, x642, x625); + fiat_p256_cmovznz_u32(&x659, x655, x644, x627); + fiat_p256_cmovznz_u32(&x660, x655, x646, x629); + fiat_p256_cmovznz_u32(&x661, x655, x648, x631); + fiat_p256_cmovznz_u32(&x662, x655, x650, x633); + fiat_p256_cmovznz_u32(&x663, x655, x652, x635); + out1[0] = x656; + out1[1] = x657; + out1[2] = x658; + out1[3] = x659; + out1[4] = x660; + out1[5] = x661; + out1[6] = x662; + out1[7] = x663; +} + +/* + * The function fiat_p256_add adds two field elements in the Montgomery domain. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * 0 ≤ eval arg2 < m + * Postconditions: + * eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) + eval (from_montgomery arg2)) mod m + * 0 ≤ eval out1 < m + * + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_add(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1, const fiat_p256_montgomery_domain_field_element arg2) { + uint32_t x1; + fiat_p256_uint1 x2; + uint32_t x3; + fiat_p256_uint1 x4; + uint32_t x5; + fiat_p256_uint1 x6; + uint32_t x7; + fiat_p256_uint1 x8; + uint32_t x9; + fiat_p256_uint1 x10; + uint32_t x11; + fiat_p256_uint1 x12; + uint32_t x13; + fiat_p256_uint1 x14; + uint32_t x15; + fiat_p256_uint1 x16; + uint32_t x17; + fiat_p256_uint1 x18; + uint32_t x19; + fiat_p256_uint1 x20; + uint32_t x21; + fiat_p256_uint1 x22; + uint32_t x23; + fiat_p256_uint1 x24; + uint32_t x25; + fiat_p256_uint1 x26; + uint32_t x27; + fiat_p256_uint1 x28; + uint32_t x29; + fiat_p256_uint1 x30; + uint32_t x31; + fiat_p256_uint1 x32; + uint32_t x33; + fiat_p256_uint1 x34; + uint32_t x35; + uint32_t x36; + uint32_t x37; + uint32_t x38; + uint32_t x39; + uint32_t x40; + uint32_t x41; + uint32_t x42; + fiat_p256_addcarryx_u32(&x1, &x2, 0x0, (arg1[0]), (arg2[0])); + fiat_p256_addcarryx_u32(&x3, &x4, x2, (arg1[1]), (arg2[1])); + fiat_p256_addcarryx_u32(&x5, &x6, x4, (arg1[2]), (arg2[2])); + fiat_p256_addcarryx_u32(&x7, &x8, x6, (arg1[3]), (arg2[3])); + fiat_p256_addcarryx_u32(&x9, &x10, x8, (arg1[4]), (arg2[4])); + fiat_p256_addcarryx_u32(&x11, &x12, x10, (arg1[5]), (arg2[5])); + fiat_p256_addcarryx_u32(&x13, &x14, x12, (arg1[6]), (arg2[6])); + fiat_p256_addcarryx_u32(&x15, &x16, x14, (arg1[7]), (arg2[7])); + fiat_p256_subborrowx_u32(&x17, &x18, 0x0, x1, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u32(&x19, &x20, x18, x3, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u32(&x21, &x22, x20, x5, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u32(&x23, &x24, x22, x7, 0x0); + fiat_p256_subborrowx_u32(&x25, &x26, x24, x9, 0x0); + fiat_p256_subborrowx_u32(&x27, &x28, x26, x11, 0x0); + fiat_p256_subborrowx_u32(&x29, &x30, x28, x13, 0x1); + fiat_p256_subborrowx_u32(&x31, &x32, x30, x15, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u32(&x33, &x34, x32, x16, 0x0); + fiat_p256_cmovznz_u32(&x35, x34, x17, x1); + fiat_p256_cmovznz_u32(&x36, x34, x19, x3); + fiat_p256_cmovznz_u32(&x37, x34, x21, x5); + fiat_p256_cmovznz_u32(&x38, x34, x23, x7); + fiat_p256_cmovznz_u32(&x39, x34, x25, x9); + fiat_p256_cmovznz_u32(&x40, x34, x27, x11); + fiat_p256_cmovznz_u32(&x41, x34, x29, x13); + fiat_p256_cmovznz_u32(&x42, x34, x31, x15); + out1[0] = x35; + out1[1] = x36; + out1[2] = x37; + out1[3] = x38; + out1[4] = x39; + out1[5] = x40; + out1[6] = x41; + out1[7] = x42; +} + +/* + * The function fiat_p256_sub subtracts two field elements in the Montgomery domain. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * 0 ≤ eval arg2 < m + * Postconditions: + * eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) - eval (from_montgomery arg2)) mod m + * 0 ≤ eval out1 < m + * + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_sub(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1, const fiat_p256_montgomery_domain_field_element arg2) { + uint32_t x1; + fiat_p256_uint1 x2; + uint32_t x3; + fiat_p256_uint1 x4; + uint32_t x5; + fiat_p256_uint1 x6; + uint32_t x7; + fiat_p256_uint1 x8; + uint32_t x9; + fiat_p256_uint1 x10; + uint32_t x11; + fiat_p256_uint1 x12; + uint32_t x13; + fiat_p256_uint1 x14; + uint32_t x15; + fiat_p256_uint1 x16; + uint32_t x17; + uint32_t x18; + fiat_p256_uint1 x19; + uint32_t x20; + fiat_p256_uint1 x21; + uint32_t x22; + fiat_p256_uint1 x23; + uint32_t x24; + fiat_p256_uint1 x25; + uint32_t x26; + fiat_p256_uint1 x27; + uint32_t x28; + fiat_p256_uint1 x29; + uint32_t x30; + fiat_p256_uint1 x31; + uint32_t x32; + fiat_p256_uint1 x33; + fiat_p256_subborrowx_u32(&x1, &x2, 0x0, (arg1[0]), (arg2[0])); + fiat_p256_subborrowx_u32(&x3, &x4, x2, (arg1[1]), (arg2[1])); + fiat_p256_subborrowx_u32(&x5, &x6, x4, (arg1[2]), (arg2[2])); + fiat_p256_subborrowx_u32(&x7, &x8, x6, (arg1[3]), (arg2[3])); + fiat_p256_subborrowx_u32(&x9, &x10, x8, (arg1[4]), (arg2[4])); + fiat_p256_subborrowx_u32(&x11, &x12, x10, (arg1[5]), (arg2[5])); + fiat_p256_subborrowx_u32(&x13, &x14, x12, (arg1[6]), (arg2[6])); + fiat_p256_subborrowx_u32(&x15, &x16, x14, (arg1[7]), (arg2[7])); + fiat_p256_cmovznz_u32(&x17, x16, 0x0, UINT32_C(0xffffffff)); + fiat_p256_addcarryx_u32(&x18, &x19, 0x0, x1, x17); + fiat_p256_addcarryx_u32(&x20, &x21, x19, x3, x17); + fiat_p256_addcarryx_u32(&x22, &x23, x21, x5, x17); + fiat_p256_addcarryx_u32(&x24, &x25, x23, x7, 0x0); + fiat_p256_addcarryx_u32(&x26, &x27, x25, x9, 0x0); + fiat_p256_addcarryx_u32(&x28, &x29, x27, x11, 0x0); + fiat_p256_addcarryx_u32(&x30, &x31, x29, x13, (fiat_p256_uint1)(x17 & 0x1)); + fiat_p256_addcarryx_u32(&x32, &x33, x31, x15, x17); + out1[0] = x18; + out1[1] = x20; + out1[2] = x22; + out1[3] = x24; + out1[4] = x26; + out1[5] = x28; + out1[6] = x30; + out1[7] = x32; +} + +/* + * The function fiat_p256_opp negates a field element in the Montgomery domain. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * Postconditions: + * eval (from_montgomery out1) mod m = -eval (from_montgomery arg1) mod m + * 0 ≤ eval out1 < m + * + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_opp(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1) { + uint32_t x1; + fiat_p256_uint1 x2; + uint32_t x3; + fiat_p256_uint1 x4; + uint32_t x5; + fiat_p256_uint1 x6; + uint32_t x7; + fiat_p256_uint1 x8; + uint32_t x9; + fiat_p256_uint1 x10; + uint32_t x11; + fiat_p256_uint1 x12; + uint32_t x13; + fiat_p256_uint1 x14; + uint32_t x15; + fiat_p256_uint1 x16; + uint32_t x17; + uint32_t x18; + fiat_p256_uint1 x19; + uint32_t x20; + fiat_p256_uint1 x21; + uint32_t x22; + fiat_p256_uint1 x23; + uint32_t x24; + fiat_p256_uint1 x25; + uint32_t x26; + fiat_p256_uint1 x27; + uint32_t x28; + fiat_p256_uint1 x29; + uint32_t x30; + fiat_p256_uint1 x31; + uint32_t x32; + fiat_p256_uint1 x33; + fiat_p256_subborrowx_u32(&x1, &x2, 0x0, 0x0, (arg1[0])); + fiat_p256_subborrowx_u32(&x3, &x4, x2, 0x0, (arg1[1])); + fiat_p256_subborrowx_u32(&x5, &x6, x4, 0x0, (arg1[2])); + fiat_p256_subborrowx_u32(&x7, &x8, x6, 0x0, (arg1[3])); + fiat_p256_subborrowx_u32(&x9, &x10, x8, 0x0, (arg1[4])); + fiat_p256_subborrowx_u32(&x11, &x12, x10, 0x0, (arg1[5])); + fiat_p256_subborrowx_u32(&x13, &x14, x12, 0x0, (arg1[6])); + fiat_p256_subborrowx_u32(&x15, &x16, x14, 0x0, (arg1[7])); + fiat_p256_cmovznz_u32(&x17, x16, 0x0, UINT32_C(0xffffffff)); + fiat_p256_addcarryx_u32(&x18, &x19, 0x0, x1, x17); + fiat_p256_addcarryx_u32(&x20, &x21, x19, x3, x17); + fiat_p256_addcarryx_u32(&x22, &x23, x21, x5, x17); + fiat_p256_addcarryx_u32(&x24, &x25, x23, x7, 0x0); + fiat_p256_addcarryx_u32(&x26, &x27, x25, x9, 0x0); + fiat_p256_addcarryx_u32(&x28, &x29, x27, x11, 0x0); + fiat_p256_addcarryx_u32(&x30, &x31, x29, x13, (fiat_p256_uint1)(x17 & 0x1)); + fiat_p256_addcarryx_u32(&x32, &x33, x31, x15, x17); + out1[0] = x18; + out1[1] = x20; + out1[2] = x22; + out1[3] = x24; + out1[4] = x26; + out1[5] = x28; + out1[6] = x30; + out1[7] = x32; +} + +/* + * The function fiat_p256_nonzero outputs a single non-zero word if the input is non-zero and zero otherwise. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * Postconditions: + * out1 = 0 ↔ eval (from_montgomery arg1) mod m = 0 + * + * Input Bounds: + * arg1: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]] + * Output Bounds: + * out1: [0x0 ~> 0xffffffff] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_nonzero(uint32_t* out1, const uint32_t arg1[8]) { + uint32_t x1; + x1 = ((arg1[0]) | ((arg1[1]) | ((arg1[2]) | ((arg1[3]) | ((arg1[4]) | ((arg1[5]) | ((arg1[6]) | (arg1[7])))))))); + *out1 = x1; +} + +/* + * The function fiat_p256_selectznz is a multi-limb conditional select. + * + * Postconditions: + * eval out1 = (if arg1 = 0 then eval arg2 else eval arg3) + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]] + * arg3: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]] + * Output Bounds: + * out1: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_selectznz(uint32_t out1[8], fiat_p256_uint1 arg1, const uint32_t arg2[8], const uint32_t arg3[8]) { + uint32_t x1; + uint32_t x2; + uint32_t x3; + uint32_t x4; + uint32_t x5; + uint32_t x6; + uint32_t x7; + uint32_t x8; + fiat_p256_cmovznz_u32(&x1, arg1, (arg2[0]), (arg3[0])); + fiat_p256_cmovznz_u32(&x2, arg1, (arg2[1]), (arg3[1])); + fiat_p256_cmovznz_u32(&x3, arg1, (arg2[2]), (arg3[2])); + fiat_p256_cmovznz_u32(&x4, arg1, (arg2[3]), (arg3[3])); + fiat_p256_cmovznz_u32(&x5, arg1, (arg2[4]), (arg3[4])); + fiat_p256_cmovznz_u32(&x6, arg1, (arg2[5]), (arg3[5])); + fiat_p256_cmovznz_u32(&x7, arg1, (arg2[6]), (arg3[6])); + fiat_p256_cmovznz_u32(&x8, arg1, (arg2[7]), (arg3[7])); + out1[0] = x1; + out1[1] = x2; + out1[2] = x3; + out1[3] = x4; + out1[4] = x5; + out1[5] = x6; + out1[6] = x7; + out1[7] = x8; +} diff -Nru temporalio-1.3.0/vendor/ring/third_party/fiat/p256_64.h temporalio-1.3.0/vendor/ring/third_party/fiat/p256_64.h --- temporalio-1.3.0/vendor/ring/third_party/fiat/p256_64.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/third_party/fiat/p256_64.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,957 @@ +/* Autogenerated: 'src/ExtractionOCaml/word_by_word_montgomery' --inline --static --use-value-barrier p256 64 '2^256 - 2^224 + 2^192 + 2^96 - 1' mul square add sub opp from_montgomery to_montgomery nonzero selectznz to_bytes from_bytes one msat divstep divstep_precomp */ +/* curve description: p256 */ +/* machine_wordsize = 64 (from "64") */ +/* requested operations: mul, square, add, sub, opp, from_montgomery, to_montgomery, nonzero, selectznz, to_bytes, from_bytes, one, msat, divstep, divstep_precomp */ +/* m = 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff (from "2^256 - 2^224 + 2^192 + 2^96 - 1") */ +/* */ +/* NOTE: In addition to the bounds specified above each function, all */ +/* functions synthesized for this Montgomery arithmetic require the */ +/* input to be strictly less than the prime modulus (m), and also */ +/* require the input to be in the unique saturated representation. */ +/* All functions also ensure that these two properties are true of */ +/* return values. */ +/* */ +/* Computed values: */ +/* eval z = z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) */ +/* bytes_eval z = z[0] + (z[1] << 8) + (z[2] << 16) + (z[3] << 24) + (z[4] << 32) + (z[5] << 40) + (z[6] << 48) + (z[7] << 56) + (z[8] << 64) + (z[9] << 72) + (z[10] << 80) + (z[11] << 88) + (z[12] << 96) + (z[13] << 104) + (z[14] << 112) + (z[15] << 120) + (z[16] << 128) + (z[17] << 136) + (z[18] << 144) + (z[19] << 152) + (z[20] << 160) + (z[21] << 168) + (z[22] << 176) + (z[23] << 184) + (z[24] << 192) + (z[25] << 200) + (z[26] << 208) + (z[27] << 216) + (z[28] << 224) + (z[29] << 232) + (z[30] << 240) + (z[31] << 248) */ +/* twos_complement_eval z = let x1 := z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) in */ +/* if x1 & (2^256-1) < 2^255 then x1 & (2^256-1) else (x1 & (2^256-1)) - 2^256 */ + +#include +typedef unsigned char fiat_p256_uint1; +typedef signed char fiat_p256_int1; +#if defined(__GNUC__) || defined(__clang__) +# define FIAT_P256_FIAT_EXTENSION __extension__ +# define FIAT_P256_FIAT_INLINE __inline__ +#else +# define FIAT_P256_FIAT_EXTENSION +# define FIAT_P256_FIAT_INLINE +#endif + +FIAT_P256_FIAT_EXTENSION typedef signed __int128 fiat_p256_int128; +FIAT_P256_FIAT_EXTENSION typedef unsigned __int128 fiat_p256_uint128; + +/* The type fiat_p256_montgomery_domain_field_element is a field element in the Montgomery domain. */ +/* Bounds: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] */ +typedef uint64_t fiat_p256_montgomery_domain_field_element[4]; + +/* The type fiat_p256_non_montgomery_domain_field_element is a field element NOT in the Montgomery domain. */ +/* Bounds: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] */ +typedef uint64_t fiat_p256_non_montgomery_domain_field_element[4]; + +#if (-1 & 3) != 3 +#error "This code only works on a two's complement system" +#endif + +#if !defined(FIAT_P256_NO_ASM) && (defined(__GNUC__) || defined(__clang__)) +static __inline__ uint64_t fiat_p256_value_barrier_u64(uint64_t a) { + __asm__("" : "+r"(a) : /* no inputs */); + return a; +} +#else +# define fiat_p256_value_barrier_u64(x) (x) +#endif + + +/* + * The function fiat_p256_addcarryx_u64 is an addition with carry. + * + * Postconditions: + * out1 = (arg1 + arg2 + arg3) mod 2^64 + * out2 = ⌊(arg1 + arg2 + arg3) / 2^64⌋ + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [0x0 ~> 0xffffffffffffffff] + * arg3: [0x0 ~> 0xffffffffffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + * out2: [0x0 ~> 0x1] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_addcarryx_u64(uint64_t* out1, fiat_p256_uint1* out2, fiat_p256_uint1 arg1, uint64_t arg2, uint64_t arg3) { + fiat_p256_uint128 x1; + uint64_t x2; + fiat_p256_uint1 x3; + x1 = ((arg1 + (fiat_p256_uint128)arg2) + arg3); + x2 = (uint64_t)(x1 & UINT64_C(0xffffffffffffffff)); + x3 = (fiat_p256_uint1)(x1 >> 64); + *out1 = x2; + *out2 = x3; +} + +/* + * The function fiat_p256_subborrowx_u64 is a subtraction with borrow. + * + * Postconditions: + * out1 = (-arg1 + arg2 + -arg3) mod 2^64 + * out2 = -⌊(-arg1 + arg2 + -arg3) / 2^64⌋ + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [0x0 ~> 0xffffffffffffffff] + * arg3: [0x0 ~> 0xffffffffffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + * out2: [0x0 ~> 0x1] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_subborrowx_u64(uint64_t* out1, fiat_p256_uint1* out2, fiat_p256_uint1 arg1, uint64_t arg2, uint64_t arg3) { + fiat_p256_int128 x1; + fiat_p256_int1 x2; + uint64_t x3; + x1 = ((arg2 - (fiat_p256_int128)arg1) - arg3); + x2 = (fiat_p256_int1)(x1 >> 64); + x3 = (uint64_t)(x1 & UINT64_C(0xffffffffffffffff)); + *out1 = x3; + *out2 = (fiat_p256_uint1)(0x0 - x2); +} + +/* + * The function fiat_p256_mulx_u64 is a multiplication, returning the full double-width result. + * + * Postconditions: + * out1 = (arg1 * arg2) mod 2^64 + * out2 = ⌊arg1 * arg2 / 2^64⌋ + * + * Input Bounds: + * arg1: [0x0 ~> 0xffffffffffffffff] + * arg2: [0x0 ~> 0xffffffffffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + * out2: [0x0 ~> 0xffffffffffffffff] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_mulx_u64(uint64_t* out1, uint64_t* out2, uint64_t arg1, uint64_t arg2) { + fiat_p256_uint128 x1; + uint64_t x2; + uint64_t x3; + x1 = ((fiat_p256_uint128)arg1 * arg2); + x2 = (uint64_t)(x1 & UINT64_C(0xffffffffffffffff)); + x3 = (uint64_t)(x1 >> 64); + *out1 = x2; + *out2 = x3; +} + +/* + * The function fiat_p256_cmovznz_u64 is a single-word conditional move. + * + * Postconditions: + * out1 = (if arg1 = 0 then arg2 else arg3) + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [0x0 ~> 0xffffffffffffffff] + * arg3: [0x0 ~> 0xffffffffffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_cmovznz_u64(uint64_t* out1, fiat_p256_uint1 arg1, uint64_t arg2, uint64_t arg3) { + fiat_p256_uint1 x1; + uint64_t x2; + uint64_t x3; + x1 = (!(!arg1)); + x2 = ((fiat_p256_int1)(0x0 - x1) & UINT64_C(0xffffffffffffffff)); + x3 = ((fiat_p256_value_barrier_u64(x2) & arg3) | (fiat_p256_value_barrier_u64((~x2)) & arg2)); + *out1 = x3; +} + +/* + * The function fiat_p256_mul multiplies two field elements in the Montgomery domain. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * 0 ≤ eval arg2 < m + * Postconditions: + * eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg2)) mod m + * 0 ≤ eval out1 < m + * + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_mul(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1, const fiat_p256_montgomery_domain_field_element arg2) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + uint64_t x9; + uint64_t x10; + uint64_t x11; + uint64_t x12; + uint64_t x13; + fiat_p256_uint1 x14; + uint64_t x15; + fiat_p256_uint1 x16; + uint64_t x17; + fiat_p256_uint1 x18; + uint64_t x19; + uint64_t x20; + uint64_t x21; + uint64_t x22; + uint64_t x23; + uint64_t x24; + uint64_t x25; + uint64_t x26; + fiat_p256_uint1 x27; + uint64_t x28; + uint64_t x29; + fiat_p256_uint1 x30; + uint64_t x31; + fiat_p256_uint1 x32; + uint64_t x33; + fiat_p256_uint1 x34; + uint64_t x35; + fiat_p256_uint1 x36; + uint64_t x37; + fiat_p256_uint1 x38; + uint64_t x39; + uint64_t x40; + uint64_t x41; + uint64_t x42; + uint64_t x43; + uint64_t x44; + uint64_t x45; + uint64_t x46; + uint64_t x47; + fiat_p256_uint1 x48; + uint64_t x49; + fiat_p256_uint1 x50; + uint64_t x51; + fiat_p256_uint1 x52; + uint64_t x53; + uint64_t x54; + fiat_p256_uint1 x55; + uint64_t x56; + fiat_p256_uint1 x57; + uint64_t x58; + fiat_p256_uint1 x59; + uint64_t x60; + fiat_p256_uint1 x61; + uint64_t x62; + fiat_p256_uint1 x63; + uint64_t x64; + uint64_t x65; + uint64_t x66; + uint64_t x67; + uint64_t x68; + uint64_t x69; + uint64_t x70; + fiat_p256_uint1 x71; + uint64_t x72; + uint64_t x73; + fiat_p256_uint1 x74; + uint64_t x75; + fiat_p256_uint1 x76; + uint64_t x77; + fiat_p256_uint1 x78; + uint64_t x79; + fiat_p256_uint1 x80; + uint64_t x81; + fiat_p256_uint1 x82; + uint64_t x83; + uint64_t x84; + uint64_t x85; + uint64_t x86; + uint64_t x87; + uint64_t x88; + uint64_t x89; + uint64_t x90; + uint64_t x91; + uint64_t x92; + fiat_p256_uint1 x93; + uint64_t x94; + fiat_p256_uint1 x95; + uint64_t x96; + fiat_p256_uint1 x97; + uint64_t x98; + uint64_t x99; + fiat_p256_uint1 x100; + uint64_t x101; + fiat_p256_uint1 x102; + uint64_t x103; + fiat_p256_uint1 x104; + uint64_t x105; + fiat_p256_uint1 x106; + uint64_t x107; + fiat_p256_uint1 x108; + uint64_t x109; + uint64_t x110; + uint64_t x111; + uint64_t x112; + uint64_t x113; + uint64_t x114; + uint64_t x115; + fiat_p256_uint1 x116; + uint64_t x117; + uint64_t x118; + fiat_p256_uint1 x119; + uint64_t x120; + fiat_p256_uint1 x121; + uint64_t x122; + fiat_p256_uint1 x123; + uint64_t x124; + fiat_p256_uint1 x125; + uint64_t x126; + fiat_p256_uint1 x127; + uint64_t x128; + uint64_t x129; + uint64_t x130; + uint64_t x131; + uint64_t x132; + uint64_t x133; + uint64_t x134; + uint64_t x135; + uint64_t x136; + uint64_t x137; + fiat_p256_uint1 x138; + uint64_t x139; + fiat_p256_uint1 x140; + uint64_t x141; + fiat_p256_uint1 x142; + uint64_t x143; + uint64_t x144; + fiat_p256_uint1 x145; + uint64_t x146; + fiat_p256_uint1 x147; + uint64_t x148; + fiat_p256_uint1 x149; + uint64_t x150; + fiat_p256_uint1 x151; + uint64_t x152; + fiat_p256_uint1 x153; + uint64_t x154; + uint64_t x155; + uint64_t x156; + uint64_t x157; + uint64_t x158; + uint64_t x159; + uint64_t x160; + fiat_p256_uint1 x161; + uint64_t x162; + uint64_t x163; + fiat_p256_uint1 x164; + uint64_t x165; + fiat_p256_uint1 x166; + uint64_t x167; + fiat_p256_uint1 x168; + uint64_t x169; + fiat_p256_uint1 x170; + uint64_t x171; + fiat_p256_uint1 x172; + uint64_t x173; + uint64_t x174; + fiat_p256_uint1 x175; + uint64_t x176; + fiat_p256_uint1 x177; + uint64_t x178; + fiat_p256_uint1 x179; + uint64_t x180; + fiat_p256_uint1 x181; + uint64_t x182; + fiat_p256_uint1 x183; + uint64_t x184; + uint64_t x185; + uint64_t x186; + uint64_t x187; + x1 = (arg1[1]); + x2 = (arg1[2]); + x3 = (arg1[3]); + x4 = (arg1[0]); + fiat_p256_mulx_u64(&x5, &x6, x4, (arg2[3])); + fiat_p256_mulx_u64(&x7, &x8, x4, (arg2[2])); + fiat_p256_mulx_u64(&x9, &x10, x4, (arg2[1])); + fiat_p256_mulx_u64(&x11, &x12, x4, (arg2[0])); + fiat_p256_addcarryx_u64(&x13, &x14, 0x0, x12, x9); + fiat_p256_addcarryx_u64(&x15, &x16, x14, x10, x7); + fiat_p256_addcarryx_u64(&x17, &x18, x16, x8, x5); + x19 = (x18 + x6); + fiat_p256_mulx_u64(&x20, &x21, x11, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x22, &x23, x11, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x24, &x25, x11, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x26, &x27, 0x0, x25, x22); + x28 = (x27 + x23); + fiat_p256_addcarryx_u64(&x29, &x30, 0x0, x11, x24); + fiat_p256_addcarryx_u64(&x31, &x32, x30, x13, x26); + fiat_p256_addcarryx_u64(&x33, &x34, x32, x15, x28); + fiat_p256_addcarryx_u64(&x35, &x36, x34, x17, x20); + fiat_p256_addcarryx_u64(&x37, &x38, x36, x19, x21); + fiat_p256_mulx_u64(&x39, &x40, x1, (arg2[3])); + fiat_p256_mulx_u64(&x41, &x42, x1, (arg2[2])); + fiat_p256_mulx_u64(&x43, &x44, x1, (arg2[1])); + fiat_p256_mulx_u64(&x45, &x46, x1, (arg2[0])); + fiat_p256_addcarryx_u64(&x47, &x48, 0x0, x46, x43); + fiat_p256_addcarryx_u64(&x49, &x50, x48, x44, x41); + fiat_p256_addcarryx_u64(&x51, &x52, x50, x42, x39); + x53 = (x52 + x40); + fiat_p256_addcarryx_u64(&x54, &x55, 0x0, x31, x45); + fiat_p256_addcarryx_u64(&x56, &x57, x55, x33, x47); + fiat_p256_addcarryx_u64(&x58, &x59, x57, x35, x49); + fiat_p256_addcarryx_u64(&x60, &x61, x59, x37, x51); + fiat_p256_addcarryx_u64(&x62, &x63, x61, x38, x53); + fiat_p256_mulx_u64(&x64, &x65, x54, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x66, &x67, x54, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x68, &x69, x54, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x70, &x71, 0x0, x69, x66); + x72 = (x71 + x67); + fiat_p256_addcarryx_u64(&x73, &x74, 0x0, x54, x68); + fiat_p256_addcarryx_u64(&x75, &x76, x74, x56, x70); + fiat_p256_addcarryx_u64(&x77, &x78, x76, x58, x72); + fiat_p256_addcarryx_u64(&x79, &x80, x78, x60, x64); + fiat_p256_addcarryx_u64(&x81, &x82, x80, x62, x65); + x83 = ((uint64_t)x82 + x63); + fiat_p256_mulx_u64(&x84, &x85, x2, (arg2[3])); + fiat_p256_mulx_u64(&x86, &x87, x2, (arg2[2])); + fiat_p256_mulx_u64(&x88, &x89, x2, (arg2[1])); + fiat_p256_mulx_u64(&x90, &x91, x2, (arg2[0])); + fiat_p256_addcarryx_u64(&x92, &x93, 0x0, x91, x88); + fiat_p256_addcarryx_u64(&x94, &x95, x93, x89, x86); + fiat_p256_addcarryx_u64(&x96, &x97, x95, x87, x84); + x98 = (x97 + x85); + fiat_p256_addcarryx_u64(&x99, &x100, 0x0, x75, x90); + fiat_p256_addcarryx_u64(&x101, &x102, x100, x77, x92); + fiat_p256_addcarryx_u64(&x103, &x104, x102, x79, x94); + fiat_p256_addcarryx_u64(&x105, &x106, x104, x81, x96); + fiat_p256_addcarryx_u64(&x107, &x108, x106, x83, x98); + fiat_p256_mulx_u64(&x109, &x110, x99, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x111, &x112, x99, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x113, &x114, x99, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x115, &x116, 0x0, x114, x111); + x117 = (x116 + x112); + fiat_p256_addcarryx_u64(&x118, &x119, 0x0, x99, x113); + fiat_p256_addcarryx_u64(&x120, &x121, x119, x101, x115); + fiat_p256_addcarryx_u64(&x122, &x123, x121, x103, x117); + fiat_p256_addcarryx_u64(&x124, &x125, x123, x105, x109); + fiat_p256_addcarryx_u64(&x126, &x127, x125, x107, x110); + x128 = ((uint64_t)x127 + x108); + fiat_p256_mulx_u64(&x129, &x130, x3, (arg2[3])); + fiat_p256_mulx_u64(&x131, &x132, x3, (arg2[2])); + fiat_p256_mulx_u64(&x133, &x134, x3, (arg2[1])); + fiat_p256_mulx_u64(&x135, &x136, x3, (arg2[0])); + fiat_p256_addcarryx_u64(&x137, &x138, 0x0, x136, x133); + fiat_p256_addcarryx_u64(&x139, &x140, x138, x134, x131); + fiat_p256_addcarryx_u64(&x141, &x142, x140, x132, x129); + x143 = (x142 + x130); + fiat_p256_addcarryx_u64(&x144, &x145, 0x0, x120, x135); + fiat_p256_addcarryx_u64(&x146, &x147, x145, x122, x137); + fiat_p256_addcarryx_u64(&x148, &x149, x147, x124, x139); + fiat_p256_addcarryx_u64(&x150, &x151, x149, x126, x141); + fiat_p256_addcarryx_u64(&x152, &x153, x151, x128, x143); + fiat_p256_mulx_u64(&x154, &x155, x144, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x156, &x157, x144, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x158, &x159, x144, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x160, &x161, 0x0, x159, x156); + x162 = (x161 + x157); + fiat_p256_addcarryx_u64(&x163, &x164, 0x0, x144, x158); + fiat_p256_addcarryx_u64(&x165, &x166, x164, x146, x160); + fiat_p256_addcarryx_u64(&x167, &x168, x166, x148, x162); + fiat_p256_addcarryx_u64(&x169, &x170, x168, x150, x154); + fiat_p256_addcarryx_u64(&x171, &x172, x170, x152, x155); + x173 = ((uint64_t)x172 + x153); + fiat_p256_subborrowx_u64(&x174, &x175, 0x0, x165, UINT64_C(0xffffffffffffffff)); + fiat_p256_subborrowx_u64(&x176, &x177, x175, x167, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u64(&x178, &x179, x177, x169, 0x0); + fiat_p256_subborrowx_u64(&x180, &x181, x179, x171, UINT64_C(0xffffffff00000001)); + fiat_p256_subborrowx_u64(&x182, &x183, x181, x173, 0x0); + fiat_p256_cmovznz_u64(&x184, x183, x174, x165); + fiat_p256_cmovznz_u64(&x185, x183, x176, x167); + fiat_p256_cmovznz_u64(&x186, x183, x178, x169); + fiat_p256_cmovznz_u64(&x187, x183, x180, x171); + out1[0] = x184; + out1[1] = x185; + out1[2] = x186; + out1[3] = x187; +} + +/* + * The function fiat_p256_square squares a field element in the Montgomery domain. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * Postconditions: + * eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg1)) mod m + * 0 ≤ eval out1 < m + * + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_square(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + uint64_t x9; + uint64_t x10; + uint64_t x11; + uint64_t x12; + uint64_t x13; + fiat_p256_uint1 x14; + uint64_t x15; + fiat_p256_uint1 x16; + uint64_t x17; + fiat_p256_uint1 x18; + uint64_t x19; + uint64_t x20; + uint64_t x21; + uint64_t x22; + uint64_t x23; + uint64_t x24; + uint64_t x25; + uint64_t x26; + fiat_p256_uint1 x27; + uint64_t x28; + uint64_t x29; + fiat_p256_uint1 x30; + uint64_t x31; + fiat_p256_uint1 x32; + uint64_t x33; + fiat_p256_uint1 x34; + uint64_t x35; + fiat_p256_uint1 x36; + uint64_t x37; + fiat_p256_uint1 x38; + uint64_t x39; + uint64_t x40; + uint64_t x41; + uint64_t x42; + uint64_t x43; + uint64_t x44; + uint64_t x45; + uint64_t x46; + uint64_t x47; + fiat_p256_uint1 x48; + uint64_t x49; + fiat_p256_uint1 x50; + uint64_t x51; + fiat_p256_uint1 x52; + uint64_t x53; + uint64_t x54; + fiat_p256_uint1 x55; + uint64_t x56; + fiat_p256_uint1 x57; + uint64_t x58; + fiat_p256_uint1 x59; + uint64_t x60; + fiat_p256_uint1 x61; + uint64_t x62; + fiat_p256_uint1 x63; + uint64_t x64; + uint64_t x65; + uint64_t x66; + uint64_t x67; + uint64_t x68; + uint64_t x69; + uint64_t x70; + fiat_p256_uint1 x71; + uint64_t x72; + uint64_t x73; + fiat_p256_uint1 x74; + uint64_t x75; + fiat_p256_uint1 x76; + uint64_t x77; + fiat_p256_uint1 x78; + uint64_t x79; + fiat_p256_uint1 x80; + uint64_t x81; + fiat_p256_uint1 x82; + uint64_t x83; + uint64_t x84; + uint64_t x85; + uint64_t x86; + uint64_t x87; + uint64_t x88; + uint64_t x89; + uint64_t x90; + uint64_t x91; + uint64_t x92; + fiat_p256_uint1 x93; + uint64_t x94; + fiat_p256_uint1 x95; + uint64_t x96; + fiat_p256_uint1 x97; + uint64_t x98; + uint64_t x99; + fiat_p256_uint1 x100; + uint64_t x101; + fiat_p256_uint1 x102; + uint64_t x103; + fiat_p256_uint1 x104; + uint64_t x105; + fiat_p256_uint1 x106; + uint64_t x107; + fiat_p256_uint1 x108; + uint64_t x109; + uint64_t x110; + uint64_t x111; + uint64_t x112; + uint64_t x113; + uint64_t x114; + uint64_t x115; + fiat_p256_uint1 x116; + uint64_t x117; + uint64_t x118; + fiat_p256_uint1 x119; + uint64_t x120; + fiat_p256_uint1 x121; + uint64_t x122; + fiat_p256_uint1 x123; + uint64_t x124; + fiat_p256_uint1 x125; + uint64_t x126; + fiat_p256_uint1 x127; + uint64_t x128; + uint64_t x129; + uint64_t x130; + uint64_t x131; + uint64_t x132; + uint64_t x133; + uint64_t x134; + uint64_t x135; + uint64_t x136; + uint64_t x137; + fiat_p256_uint1 x138; + uint64_t x139; + fiat_p256_uint1 x140; + uint64_t x141; + fiat_p256_uint1 x142; + uint64_t x143; + uint64_t x144; + fiat_p256_uint1 x145; + uint64_t x146; + fiat_p256_uint1 x147; + uint64_t x148; + fiat_p256_uint1 x149; + uint64_t x150; + fiat_p256_uint1 x151; + uint64_t x152; + fiat_p256_uint1 x153; + uint64_t x154; + uint64_t x155; + uint64_t x156; + uint64_t x157; + uint64_t x158; + uint64_t x159; + uint64_t x160; + fiat_p256_uint1 x161; + uint64_t x162; + uint64_t x163; + fiat_p256_uint1 x164; + uint64_t x165; + fiat_p256_uint1 x166; + uint64_t x167; + fiat_p256_uint1 x168; + uint64_t x169; + fiat_p256_uint1 x170; + uint64_t x171; + fiat_p256_uint1 x172; + uint64_t x173; + uint64_t x174; + fiat_p256_uint1 x175; + uint64_t x176; + fiat_p256_uint1 x177; + uint64_t x178; + fiat_p256_uint1 x179; + uint64_t x180; + fiat_p256_uint1 x181; + uint64_t x182; + fiat_p256_uint1 x183; + uint64_t x184; + uint64_t x185; + uint64_t x186; + uint64_t x187; + x1 = (arg1[1]); + x2 = (arg1[2]); + x3 = (arg1[3]); + x4 = (arg1[0]); + fiat_p256_mulx_u64(&x5, &x6, x4, (arg1[3])); + fiat_p256_mulx_u64(&x7, &x8, x4, (arg1[2])); + fiat_p256_mulx_u64(&x9, &x10, x4, (arg1[1])); + fiat_p256_mulx_u64(&x11, &x12, x4, (arg1[0])); + fiat_p256_addcarryx_u64(&x13, &x14, 0x0, x12, x9); + fiat_p256_addcarryx_u64(&x15, &x16, x14, x10, x7); + fiat_p256_addcarryx_u64(&x17, &x18, x16, x8, x5); + x19 = (x18 + x6); + fiat_p256_mulx_u64(&x20, &x21, x11, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x22, &x23, x11, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x24, &x25, x11, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x26, &x27, 0x0, x25, x22); + x28 = (x27 + x23); + fiat_p256_addcarryx_u64(&x29, &x30, 0x0, x11, x24); + fiat_p256_addcarryx_u64(&x31, &x32, x30, x13, x26); + fiat_p256_addcarryx_u64(&x33, &x34, x32, x15, x28); + fiat_p256_addcarryx_u64(&x35, &x36, x34, x17, x20); + fiat_p256_addcarryx_u64(&x37, &x38, x36, x19, x21); + fiat_p256_mulx_u64(&x39, &x40, x1, (arg1[3])); + fiat_p256_mulx_u64(&x41, &x42, x1, (arg1[2])); + fiat_p256_mulx_u64(&x43, &x44, x1, (arg1[1])); + fiat_p256_mulx_u64(&x45, &x46, x1, (arg1[0])); + fiat_p256_addcarryx_u64(&x47, &x48, 0x0, x46, x43); + fiat_p256_addcarryx_u64(&x49, &x50, x48, x44, x41); + fiat_p256_addcarryx_u64(&x51, &x52, x50, x42, x39); + x53 = (x52 + x40); + fiat_p256_addcarryx_u64(&x54, &x55, 0x0, x31, x45); + fiat_p256_addcarryx_u64(&x56, &x57, x55, x33, x47); + fiat_p256_addcarryx_u64(&x58, &x59, x57, x35, x49); + fiat_p256_addcarryx_u64(&x60, &x61, x59, x37, x51); + fiat_p256_addcarryx_u64(&x62, &x63, x61, x38, x53); + fiat_p256_mulx_u64(&x64, &x65, x54, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x66, &x67, x54, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x68, &x69, x54, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x70, &x71, 0x0, x69, x66); + x72 = (x71 + x67); + fiat_p256_addcarryx_u64(&x73, &x74, 0x0, x54, x68); + fiat_p256_addcarryx_u64(&x75, &x76, x74, x56, x70); + fiat_p256_addcarryx_u64(&x77, &x78, x76, x58, x72); + fiat_p256_addcarryx_u64(&x79, &x80, x78, x60, x64); + fiat_p256_addcarryx_u64(&x81, &x82, x80, x62, x65); + x83 = ((uint64_t)x82 + x63); + fiat_p256_mulx_u64(&x84, &x85, x2, (arg1[3])); + fiat_p256_mulx_u64(&x86, &x87, x2, (arg1[2])); + fiat_p256_mulx_u64(&x88, &x89, x2, (arg1[1])); + fiat_p256_mulx_u64(&x90, &x91, x2, (arg1[0])); + fiat_p256_addcarryx_u64(&x92, &x93, 0x0, x91, x88); + fiat_p256_addcarryx_u64(&x94, &x95, x93, x89, x86); + fiat_p256_addcarryx_u64(&x96, &x97, x95, x87, x84); + x98 = (x97 + x85); + fiat_p256_addcarryx_u64(&x99, &x100, 0x0, x75, x90); + fiat_p256_addcarryx_u64(&x101, &x102, x100, x77, x92); + fiat_p256_addcarryx_u64(&x103, &x104, x102, x79, x94); + fiat_p256_addcarryx_u64(&x105, &x106, x104, x81, x96); + fiat_p256_addcarryx_u64(&x107, &x108, x106, x83, x98); + fiat_p256_mulx_u64(&x109, &x110, x99, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x111, &x112, x99, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x113, &x114, x99, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x115, &x116, 0x0, x114, x111); + x117 = (x116 + x112); + fiat_p256_addcarryx_u64(&x118, &x119, 0x0, x99, x113); + fiat_p256_addcarryx_u64(&x120, &x121, x119, x101, x115); + fiat_p256_addcarryx_u64(&x122, &x123, x121, x103, x117); + fiat_p256_addcarryx_u64(&x124, &x125, x123, x105, x109); + fiat_p256_addcarryx_u64(&x126, &x127, x125, x107, x110); + x128 = ((uint64_t)x127 + x108); + fiat_p256_mulx_u64(&x129, &x130, x3, (arg1[3])); + fiat_p256_mulx_u64(&x131, &x132, x3, (arg1[2])); + fiat_p256_mulx_u64(&x133, &x134, x3, (arg1[1])); + fiat_p256_mulx_u64(&x135, &x136, x3, (arg1[0])); + fiat_p256_addcarryx_u64(&x137, &x138, 0x0, x136, x133); + fiat_p256_addcarryx_u64(&x139, &x140, x138, x134, x131); + fiat_p256_addcarryx_u64(&x141, &x142, x140, x132, x129); + x143 = (x142 + x130); + fiat_p256_addcarryx_u64(&x144, &x145, 0x0, x120, x135); + fiat_p256_addcarryx_u64(&x146, &x147, x145, x122, x137); + fiat_p256_addcarryx_u64(&x148, &x149, x147, x124, x139); + fiat_p256_addcarryx_u64(&x150, &x151, x149, x126, x141); + fiat_p256_addcarryx_u64(&x152, &x153, x151, x128, x143); + fiat_p256_mulx_u64(&x154, &x155, x144, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x156, &x157, x144, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x158, &x159, x144, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x160, &x161, 0x0, x159, x156); + x162 = (x161 + x157); + fiat_p256_addcarryx_u64(&x163, &x164, 0x0, x144, x158); + fiat_p256_addcarryx_u64(&x165, &x166, x164, x146, x160); + fiat_p256_addcarryx_u64(&x167, &x168, x166, x148, x162); + fiat_p256_addcarryx_u64(&x169, &x170, x168, x150, x154); + fiat_p256_addcarryx_u64(&x171, &x172, x170, x152, x155); + x173 = ((uint64_t)x172 + x153); + fiat_p256_subborrowx_u64(&x174, &x175, 0x0, x165, UINT64_C(0xffffffffffffffff)); + fiat_p256_subborrowx_u64(&x176, &x177, x175, x167, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u64(&x178, &x179, x177, x169, 0x0); + fiat_p256_subborrowx_u64(&x180, &x181, x179, x171, UINT64_C(0xffffffff00000001)); + fiat_p256_subborrowx_u64(&x182, &x183, x181, x173, 0x0); + fiat_p256_cmovznz_u64(&x184, x183, x174, x165); + fiat_p256_cmovznz_u64(&x185, x183, x176, x167); + fiat_p256_cmovznz_u64(&x186, x183, x178, x169); + fiat_p256_cmovznz_u64(&x187, x183, x180, x171); + out1[0] = x184; + out1[1] = x185; + out1[2] = x186; + out1[3] = x187; +} + +/* + * The function fiat_p256_add adds two field elements in the Montgomery domain. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * 0 ≤ eval arg2 < m + * Postconditions: + * eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) + eval (from_montgomery arg2)) mod m + * 0 ≤ eval out1 < m + * + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_add(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1, const fiat_p256_montgomery_domain_field_element arg2) { + uint64_t x1; + fiat_p256_uint1 x2; + uint64_t x3; + fiat_p256_uint1 x4; + uint64_t x5; + fiat_p256_uint1 x6; + uint64_t x7; + fiat_p256_uint1 x8; + uint64_t x9; + fiat_p256_uint1 x10; + uint64_t x11; + fiat_p256_uint1 x12; + uint64_t x13; + fiat_p256_uint1 x14; + uint64_t x15; + fiat_p256_uint1 x16; + uint64_t x17; + fiat_p256_uint1 x18; + uint64_t x19; + uint64_t x20; + uint64_t x21; + uint64_t x22; + fiat_p256_addcarryx_u64(&x1, &x2, 0x0, (arg1[0]), (arg2[0])); + fiat_p256_addcarryx_u64(&x3, &x4, x2, (arg1[1]), (arg2[1])); + fiat_p256_addcarryx_u64(&x5, &x6, x4, (arg1[2]), (arg2[2])); + fiat_p256_addcarryx_u64(&x7, &x8, x6, (arg1[3]), (arg2[3])); + fiat_p256_subborrowx_u64(&x9, &x10, 0x0, x1, UINT64_C(0xffffffffffffffff)); + fiat_p256_subborrowx_u64(&x11, &x12, x10, x3, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u64(&x13, &x14, x12, x5, 0x0); + fiat_p256_subborrowx_u64(&x15, &x16, x14, x7, UINT64_C(0xffffffff00000001)); + fiat_p256_subborrowx_u64(&x17, &x18, x16, x8, 0x0); + fiat_p256_cmovznz_u64(&x19, x18, x9, x1); + fiat_p256_cmovznz_u64(&x20, x18, x11, x3); + fiat_p256_cmovznz_u64(&x21, x18, x13, x5); + fiat_p256_cmovznz_u64(&x22, x18, x15, x7); + out1[0] = x19; + out1[1] = x20; + out1[2] = x21; + out1[3] = x22; +} + +/* + * The function fiat_p256_sub subtracts two field elements in the Montgomery domain. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * 0 ≤ eval arg2 < m + * Postconditions: + * eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) - eval (from_montgomery arg2)) mod m + * 0 ≤ eval out1 < m + * + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_sub(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1, const fiat_p256_montgomery_domain_field_element arg2) { + uint64_t x1; + fiat_p256_uint1 x2; + uint64_t x3; + fiat_p256_uint1 x4; + uint64_t x5; + fiat_p256_uint1 x6; + uint64_t x7; + fiat_p256_uint1 x8; + uint64_t x9; + uint64_t x10; + fiat_p256_uint1 x11; + uint64_t x12; + fiat_p256_uint1 x13; + uint64_t x14; + fiat_p256_uint1 x15; + uint64_t x16; + fiat_p256_uint1 x17; + fiat_p256_subborrowx_u64(&x1, &x2, 0x0, (arg1[0]), (arg2[0])); + fiat_p256_subborrowx_u64(&x3, &x4, x2, (arg1[1]), (arg2[1])); + fiat_p256_subborrowx_u64(&x5, &x6, x4, (arg1[2]), (arg2[2])); + fiat_p256_subborrowx_u64(&x7, &x8, x6, (arg1[3]), (arg2[3])); + fiat_p256_cmovznz_u64(&x9, x8, 0x0, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x10, &x11, 0x0, x1, x9); + fiat_p256_addcarryx_u64(&x12, &x13, x11, x3, (x9 & UINT32_C(0xffffffff))); + fiat_p256_addcarryx_u64(&x14, &x15, x13, x5, 0x0); + fiat_p256_addcarryx_u64(&x16, &x17, x15, x7, (x9 & UINT64_C(0xffffffff00000001))); + out1[0] = x10; + out1[1] = x12; + out1[2] = x14; + out1[3] = x16; +} + +/* + * The function fiat_p256_opp negates a field element in the Montgomery domain. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * Postconditions: + * eval (from_montgomery out1) mod m = -eval (from_montgomery arg1) mod m + * 0 ≤ eval out1 < m + * + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_opp(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1) { + uint64_t x1; + fiat_p256_uint1 x2; + uint64_t x3; + fiat_p256_uint1 x4; + uint64_t x5; + fiat_p256_uint1 x6; + uint64_t x7; + fiat_p256_uint1 x8; + uint64_t x9; + uint64_t x10; + fiat_p256_uint1 x11; + uint64_t x12; + fiat_p256_uint1 x13; + uint64_t x14; + fiat_p256_uint1 x15; + uint64_t x16; + fiat_p256_uint1 x17; + fiat_p256_subborrowx_u64(&x1, &x2, 0x0, 0x0, (arg1[0])); + fiat_p256_subborrowx_u64(&x3, &x4, x2, 0x0, (arg1[1])); + fiat_p256_subborrowx_u64(&x5, &x6, x4, 0x0, (arg1[2])); + fiat_p256_subborrowx_u64(&x7, &x8, x6, 0x0, (arg1[3])); + fiat_p256_cmovznz_u64(&x9, x8, 0x0, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x10, &x11, 0x0, x1, x9); + fiat_p256_addcarryx_u64(&x12, &x13, x11, x3, (x9 & UINT32_C(0xffffffff))); + fiat_p256_addcarryx_u64(&x14, &x15, x13, x5, 0x0); + fiat_p256_addcarryx_u64(&x16, &x17, x15, x7, (x9 & UINT64_C(0xffffffff00000001))); + out1[0] = x10; + out1[1] = x12; + out1[2] = x14; + out1[3] = x16; +} + +/* + * The function fiat_p256_nonzero outputs a single non-zero word if the input is non-zero and zero otherwise. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * Postconditions: + * out1 = 0 ↔ eval (from_montgomery arg1) mod m = 0 + * + * Input Bounds: + * arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_nonzero(uint64_t* out1, const uint64_t arg1[4]) { + uint64_t x1; + x1 = ((arg1[0]) | ((arg1[1]) | ((arg1[2]) | (arg1[3])))); + *out1 = x1; +} + +/* + * The function fiat_p256_selectznz is a multi-limb conditional select. + * + * Postconditions: + * eval out1 = (if arg1 = 0 then eval arg2 else eval arg3) + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * arg3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * Output Bounds: + * out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_selectznz(uint64_t out1[4], fiat_p256_uint1 arg1, const uint64_t arg2[4], const uint64_t arg3[4]) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + fiat_p256_cmovznz_u64(&x1, arg1, (arg2[0]), (arg3[0])); + fiat_p256_cmovznz_u64(&x2, arg1, (arg2[1]), (arg3[1])); + fiat_p256_cmovznz_u64(&x3, arg1, (arg2[2]), (arg3[2])); + fiat_p256_cmovznz_u64(&x4, arg1, (arg2[3]), (arg3[3])); + out1[0] = x1; + out1[1] = x2; + out1[2] = x3; + out1[3] = x4; +} + diff -Nru temporalio-1.3.0/vendor/ring/third_party/fiat/p256_64_msvc.h temporalio-1.3.0/vendor/ring/third_party/fiat/p256_64_msvc.h --- temporalio-1.3.0/vendor/ring/third_party/fiat/p256_64_msvc.h 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/ring/third_party/fiat/p256_64_msvc.h 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,2002 @@ +/* Autogenerated: 'src/ExtractionOCaml/word_by_word_montgomery' --inline --static --use-value-barrier --no-wide-int p256 64 '2^256 - 2^224 + 2^192 + 2^96 - 1' mul square add sub opp from_montgomery to_montgomery nonzero selectznz to_bytes from_bytes one msat divstep divstep_precomp */ +/* curve description: p256 */ +/* machine_wordsize = 64 (from "64") */ +/* requested operations: mul, square, add, sub, opp, from_montgomery, to_montgomery, nonzero, selectznz, to_bytes, from_bytes, one, msat, divstep, divstep_precomp */ +/* m = 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff (from "2^256 - 2^224 + 2^192 + 2^96 - 1") */ +/* */ +/* NOTE: In addition to the bounds specified above each function, all */ +/* functions synthesized for this Montgomery arithmetic require the */ +/* input to be strictly less than the prime modulus (m), and also */ +/* require the input to be in the unique saturated representation. */ +/* All functions also ensure that these two properties are true of */ +/* return values. */ +/* */ +/* Computed values: */ +/* eval z = z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) */ +/* bytes_eval z = z[0] + (z[1] << 8) + (z[2] << 16) + (z[3] << 24) + (z[4] << 32) + (z[5] << 40) + (z[6] << 48) + (z[7] << 56) + (z[8] << 64) + (z[9] << 72) + (z[10] << 80) + (z[11] << 88) + (z[12] << 96) + (z[13] << 104) + (z[14] << 112) + (z[15] << 120) + (z[16] << 128) + (z[17] << 136) + (z[18] << 144) + (z[19] << 152) + (z[20] << 160) + (z[21] << 168) + (z[22] << 176) + (z[23] << 184) + (z[24] << 192) + (z[25] << 200) + (z[26] << 208) + (z[27] << 216) + (z[28] << 224) + (z[29] << 232) + (z[30] << 240) + (z[31] << 248) */ +/* twos_complement_eval z = let x1 := z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) in */ +/* if x1 & (2^256-1) < 2^255 then x1 & (2^256-1) else (x1 & (2^256-1)) - 2^256 */ + +#include +#include +#if defined(_M_X64) +#include +#endif + +typedef unsigned char fiat_p256_uint1; +typedef signed char fiat_p256_int1; + +#define FIAT_P256_FIAT_INLINE inline + +/* The type fiat_p256_montgomery_domain_field_element is a field element in the Montgomery domain. */ +/* Bounds: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] */ +typedef uint64_t fiat_p256_montgomery_domain_field_element[4]; + +/* The type fiat_p256_non_montgomery_domain_field_element is a field element NOT in the Montgomery domain. */ +/* Bounds: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] */ +typedef uint64_t fiat_p256_non_montgomery_domain_field_element[4]; + +#if (-1 & 3) != 3 +#error "This code only works on a two's complement system" +#endif + +#define fiat_p256_value_barrier_u64(x) (x) + + +/* + * The function fiat_p256_addcarryx_u64 is an addition with carry. + * + * Postconditions: + * out1 = (arg1 + arg2 + arg3) mod 2^64 + * out2 = ⌊(arg1 + arg2 + arg3) / 2^64⌋ + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [0x0 ~> 0xffffffffffffffff] + * arg3: [0x0 ~> 0xffffffffffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + * out2: [0x0 ~> 0x1] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_addcarryx_u64(uint64_t* out1, fiat_p256_uint1* out2, fiat_p256_uint1 arg1, uint64_t arg2, uint64_t arg3) { +#if defined(_M_X64) + *out2 = _addcarry_u64(arg1, arg2, arg3, out1); +#else + arg2 += arg1; + arg1 = arg2 < arg1; + arg3 += arg2; + arg1 += arg3 < arg2; + *out1 = arg3; + *out2 = arg1; +#endif +} + +/* + * The function fiat_p256_subborrowx_u64 is a subtraction with borrow. + * + * Postconditions: + * out1 = (-arg1 + arg2 + -arg3) mod 2^64 + * out2 = -⌊(-arg1 + arg2 + -arg3) / 2^64⌋ + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [0x0 ~> 0xffffffffffffffff] + * arg3: [0x0 ~> 0xffffffffffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + * out2: [0x0 ~> 0x1] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_subborrowx_u64(uint64_t* out1, fiat_p256_uint1* out2, fiat_p256_uint1 arg1, uint64_t arg2, uint64_t arg3) { +#if defined(_M_X64) + *out2 = _subborrow_u64(arg1, arg2, arg3, out1); // NOTE: edited after generation +#else + *out1 = arg2 - arg3 - arg1; + *out2 = (arg2 < arg3) | ((arg2 == arg3) & arg1); +#endif +} + +/* + * The function fiat_p256_mulx_u64 is a multiplication, returning the full double-width result. + * + * Postconditions: + * out1 = (arg1 * arg2) mod 2^64 + * out2 = ⌊arg1 * arg2 / 2^64⌋ + * + * Input Bounds: + * arg1: [0x0 ~> 0xffffffffffffffff] + * arg2: [0x0 ~> 0xffffffffffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + * out2: [0x0 ~> 0xffffffffffffffff] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_mulx_u64(uint64_t* out1, uint64_t* out2, uint64_t arg1, uint64_t arg2) { +// NOTE: edited after generation +#if defined(_M_X64) + *out1 = _umul128(arg1, arg2, out2); +#elif defined(_M_ARM64) + *out1 = arg1 * arg2; + *out2 = __umulh(arg1, arg2); +#else +#error "This file is intended for MSVC on X64 or ARM64" +#endif +} + +/* + * The function fiat_p256_cmovznz_u64 is a single-word conditional move. + * + * Postconditions: + * out1 = (if arg1 = 0 then arg2 else arg3) + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [0x0 ~> 0xffffffffffffffff] + * arg3: [0x0 ~> 0xffffffffffffffff] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_cmovznz_u64(uint64_t* out1, fiat_p256_uint1 arg1, uint64_t arg2, uint64_t arg3) { + fiat_p256_uint1 x1; + uint64_t x2; + uint64_t x3; + x1 = (!(!arg1)); + x2 = ((fiat_p256_int1)(0x0 - x1) & UINT64_C(0xffffffffffffffff)); + x3 = ((fiat_p256_value_barrier_u64(x2) & arg3) | (fiat_p256_value_barrier_u64((~x2)) & arg2)); + *out1 = x3; +} + +/* + * The function fiat_p256_mul multiplies two field elements in the Montgomery domain. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * 0 ≤ eval arg2 < m + * Postconditions: + * eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg2)) mod m + * 0 ≤ eval out1 < m + * + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_mul(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1, const fiat_p256_montgomery_domain_field_element arg2) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + uint64_t x9; + uint64_t x10; + uint64_t x11; + uint64_t x12; + uint64_t x13; + fiat_p256_uint1 x14; + uint64_t x15; + fiat_p256_uint1 x16; + uint64_t x17; + fiat_p256_uint1 x18; + uint64_t x19; + uint64_t x20; + uint64_t x21; + uint64_t x22; + uint64_t x23; + uint64_t x24; + uint64_t x25; + uint64_t x26; + fiat_p256_uint1 x27; + uint64_t x28; + uint64_t x29; + fiat_p256_uint1 x30; + uint64_t x31; + fiat_p256_uint1 x32; + uint64_t x33; + fiat_p256_uint1 x34; + uint64_t x35; + fiat_p256_uint1 x36; + uint64_t x37; + fiat_p256_uint1 x38; + uint64_t x39; + uint64_t x40; + uint64_t x41; + uint64_t x42; + uint64_t x43; + uint64_t x44; + uint64_t x45; + uint64_t x46; + uint64_t x47; + fiat_p256_uint1 x48; + uint64_t x49; + fiat_p256_uint1 x50; + uint64_t x51; + fiat_p256_uint1 x52; + uint64_t x53; + uint64_t x54; + fiat_p256_uint1 x55; + uint64_t x56; + fiat_p256_uint1 x57; + uint64_t x58; + fiat_p256_uint1 x59; + uint64_t x60; + fiat_p256_uint1 x61; + uint64_t x62; + fiat_p256_uint1 x63; + uint64_t x64; + uint64_t x65; + uint64_t x66; + uint64_t x67; + uint64_t x68; + uint64_t x69; + uint64_t x70; + fiat_p256_uint1 x71; + uint64_t x72; + uint64_t x73; + fiat_p256_uint1 x74; + uint64_t x75; + fiat_p256_uint1 x76; + uint64_t x77; + fiat_p256_uint1 x78; + uint64_t x79; + fiat_p256_uint1 x80; + uint64_t x81; + fiat_p256_uint1 x82; + uint64_t x83; + uint64_t x84; + uint64_t x85; + uint64_t x86; + uint64_t x87; + uint64_t x88; + uint64_t x89; + uint64_t x90; + uint64_t x91; + uint64_t x92; + fiat_p256_uint1 x93; + uint64_t x94; + fiat_p256_uint1 x95; + uint64_t x96; + fiat_p256_uint1 x97; + uint64_t x98; + uint64_t x99; + fiat_p256_uint1 x100; + uint64_t x101; + fiat_p256_uint1 x102; + uint64_t x103; + fiat_p256_uint1 x104; + uint64_t x105; + fiat_p256_uint1 x106; + uint64_t x107; + fiat_p256_uint1 x108; + uint64_t x109; + uint64_t x110; + uint64_t x111; + uint64_t x112; + uint64_t x113; + uint64_t x114; + uint64_t x115; + fiat_p256_uint1 x116; + uint64_t x117; + uint64_t x118; + fiat_p256_uint1 x119; + uint64_t x120; + fiat_p256_uint1 x121; + uint64_t x122; + fiat_p256_uint1 x123; + uint64_t x124; + fiat_p256_uint1 x125; + uint64_t x126; + fiat_p256_uint1 x127; + uint64_t x128; + uint64_t x129; + uint64_t x130; + uint64_t x131; + uint64_t x132; + uint64_t x133; + uint64_t x134; + uint64_t x135; + uint64_t x136; + uint64_t x137; + fiat_p256_uint1 x138; + uint64_t x139; + fiat_p256_uint1 x140; + uint64_t x141; + fiat_p256_uint1 x142; + uint64_t x143; + uint64_t x144; + fiat_p256_uint1 x145; + uint64_t x146; + fiat_p256_uint1 x147; + uint64_t x148; + fiat_p256_uint1 x149; + uint64_t x150; + fiat_p256_uint1 x151; + uint64_t x152; + fiat_p256_uint1 x153; + uint64_t x154; + uint64_t x155; + uint64_t x156; + uint64_t x157; + uint64_t x158; + uint64_t x159; + uint64_t x160; + fiat_p256_uint1 x161; + uint64_t x162; + uint64_t x163; + fiat_p256_uint1 x164; + uint64_t x165; + fiat_p256_uint1 x166; + uint64_t x167; + fiat_p256_uint1 x168; + uint64_t x169; + fiat_p256_uint1 x170; + uint64_t x171; + fiat_p256_uint1 x172; + uint64_t x173; + uint64_t x174; + fiat_p256_uint1 x175; + uint64_t x176; + fiat_p256_uint1 x177; + uint64_t x178; + fiat_p256_uint1 x179; + uint64_t x180; + fiat_p256_uint1 x181; + uint64_t x182; + fiat_p256_uint1 x183; + uint64_t x184; + uint64_t x185; + uint64_t x186; + uint64_t x187; + x1 = (arg1[1]); + x2 = (arg1[2]); + x3 = (arg1[3]); + x4 = (arg1[0]); + fiat_p256_mulx_u64(&x5, &x6, x4, (arg2[3])); + fiat_p256_mulx_u64(&x7, &x8, x4, (arg2[2])); + fiat_p256_mulx_u64(&x9, &x10, x4, (arg2[1])); + fiat_p256_mulx_u64(&x11, &x12, x4, (arg2[0])); + fiat_p256_addcarryx_u64(&x13, &x14, 0x0, x12, x9); + fiat_p256_addcarryx_u64(&x15, &x16, x14, x10, x7); + fiat_p256_addcarryx_u64(&x17, &x18, x16, x8, x5); + x19 = (x18 + x6); + fiat_p256_mulx_u64(&x20, &x21, x11, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x22, &x23, x11, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x24, &x25, x11, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x26, &x27, 0x0, x25, x22); + x28 = (x27 + x23); + fiat_p256_addcarryx_u64(&x29, &x30, 0x0, x11, x24); + fiat_p256_addcarryx_u64(&x31, &x32, x30, x13, x26); + fiat_p256_addcarryx_u64(&x33, &x34, x32, x15, x28); + fiat_p256_addcarryx_u64(&x35, &x36, x34, x17, x20); + fiat_p256_addcarryx_u64(&x37, &x38, x36, x19, x21); + fiat_p256_mulx_u64(&x39, &x40, x1, (arg2[3])); + fiat_p256_mulx_u64(&x41, &x42, x1, (arg2[2])); + fiat_p256_mulx_u64(&x43, &x44, x1, (arg2[1])); + fiat_p256_mulx_u64(&x45, &x46, x1, (arg2[0])); + fiat_p256_addcarryx_u64(&x47, &x48, 0x0, x46, x43); + fiat_p256_addcarryx_u64(&x49, &x50, x48, x44, x41); + fiat_p256_addcarryx_u64(&x51, &x52, x50, x42, x39); + x53 = (x52 + x40); + fiat_p256_addcarryx_u64(&x54, &x55, 0x0, x31, x45); + fiat_p256_addcarryx_u64(&x56, &x57, x55, x33, x47); + fiat_p256_addcarryx_u64(&x58, &x59, x57, x35, x49); + fiat_p256_addcarryx_u64(&x60, &x61, x59, x37, x51); + fiat_p256_addcarryx_u64(&x62, &x63, x61, x38, x53); + fiat_p256_mulx_u64(&x64, &x65, x54, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x66, &x67, x54, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x68, &x69, x54, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x70, &x71, 0x0, x69, x66); + x72 = (x71 + x67); + fiat_p256_addcarryx_u64(&x73, &x74, 0x0, x54, x68); + fiat_p256_addcarryx_u64(&x75, &x76, x74, x56, x70); + fiat_p256_addcarryx_u64(&x77, &x78, x76, x58, x72); + fiat_p256_addcarryx_u64(&x79, &x80, x78, x60, x64); + fiat_p256_addcarryx_u64(&x81, &x82, x80, x62, x65); + x83 = ((uint64_t)x82 + x63); + fiat_p256_mulx_u64(&x84, &x85, x2, (arg2[3])); + fiat_p256_mulx_u64(&x86, &x87, x2, (arg2[2])); + fiat_p256_mulx_u64(&x88, &x89, x2, (arg2[1])); + fiat_p256_mulx_u64(&x90, &x91, x2, (arg2[0])); + fiat_p256_addcarryx_u64(&x92, &x93, 0x0, x91, x88); + fiat_p256_addcarryx_u64(&x94, &x95, x93, x89, x86); + fiat_p256_addcarryx_u64(&x96, &x97, x95, x87, x84); + x98 = (x97 + x85); + fiat_p256_addcarryx_u64(&x99, &x100, 0x0, x75, x90); + fiat_p256_addcarryx_u64(&x101, &x102, x100, x77, x92); + fiat_p256_addcarryx_u64(&x103, &x104, x102, x79, x94); + fiat_p256_addcarryx_u64(&x105, &x106, x104, x81, x96); + fiat_p256_addcarryx_u64(&x107, &x108, x106, x83, x98); + fiat_p256_mulx_u64(&x109, &x110, x99, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x111, &x112, x99, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x113, &x114, x99, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x115, &x116, 0x0, x114, x111); + x117 = (x116 + x112); + fiat_p256_addcarryx_u64(&x118, &x119, 0x0, x99, x113); + fiat_p256_addcarryx_u64(&x120, &x121, x119, x101, x115); + fiat_p256_addcarryx_u64(&x122, &x123, x121, x103, x117); + fiat_p256_addcarryx_u64(&x124, &x125, x123, x105, x109); + fiat_p256_addcarryx_u64(&x126, &x127, x125, x107, x110); + x128 = ((uint64_t)x127 + x108); + fiat_p256_mulx_u64(&x129, &x130, x3, (arg2[3])); + fiat_p256_mulx_u64(&x131, &x132, x3, (arg2[2])); + fiat_p256_mulx_u64(&x133, &x134, x3, (arg2[1])); + fiat_p256_mulx_u64(&x135, &x136, x3, (arg2[0])); + fiat_p256_addcarryx_u64(&x137, &x138, 0x0, x136, x133); + fiat_p256_addcarryx_u64(&x139, &x140, x138, x134, x131); + fiat_p256_addcarryx_u64(&x141, &x142, x140, x132, x129); + x143 = (x142 + x130); + fiat_p256_addcarryx_u64(&x144, &x145, 0x0, x120, x135); + fiat_p256_addcarryx_u64(&x146, &x147, x145, x122, x137); + fiat_p256_addcarryx_u64(&x148, &x149, x147, x124, x139); + fiat_p256_addcarryx_u64(&x150, &x151, x149, x126, x141); + fiat_p256_addcarryx_u64(&x152, &x153, x151, x128, x143); + fiat_p256_mulx_u64(&x154, &x155, x144, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x156, &x157, x144, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x158, &x159, x144, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x160, &x161, 0x0, x159, x156); + x162 = (x161 + x157); + fiat_p256_addcarryx_u64(&x163, &x164, 0x0, x144, x158); + fiat_p256_addcarryx_u64(&x165, &x166, x164, x146, x160); + fiat_p256_addcarryx_u64(&x167, &x168, x166, x148, x162); + fiat_p256_addcarryx_u64(&x169, &x170, x168, x150, x154); + fiat_p256_addcarryx_u64(&x171, &x172, x170, x152, x155); + x173 = ((uint64_t)x172 + x153); + fiat_p256_subborrowx_u64(&x174, &x175, 0x0, x165, UINT64_C(0xffffffffffffffff)); + fiat_p256_subborrowx_u64(&x176, &x177, x175, x167, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u64(&x178, &x179, x177, x169, 0x0); + fiat_p256_subborrowx_u64(&x180, &x181, x179, x171, UINT64_C(0xffffffff00000001)); + fiat_p256_subborrowx_u64(&x182, &x183, x181, x173, 0x0); + fiat_p256_cmovznz_u64(&x184, x183, x174, x165); + fiat_p256_cmovznz_u64(&x185, x183, x176, x167); + fiat_p256_cmovznz_u64(&x186, x183, x178, x169); + fiat_p256_cmovznz_u64(&x187, x183, x180, x171); + out1[0] = x184; + out1[1] = x185; + out1[2] = x186; + out1[3] = x187; +} + +/* + * The function fiat_p256_square squares a field element in the Montgomery domain. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * Postconditions: + * eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg1)) mod m + * 0 ≤ eval out1 < m + * + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_square(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + uint64_t x9; + uint64_t x10; + uint64_t x11; + uint64_t x12; + uint64_t x13; + fiat_p256_uint1 x14; + uint64_t x15; + fiat_p256_uint1 x16; + uint64_t x17; + fiat_p256_uint1 x18; + uint64_t x19; + uint64_t x20; + uint64_t x21; + uint64_t x22; + uint64_t x23; + uint64_t x24; + uint64_t x25; + uint64_t x26; + fiat_p256_uint1 x27; + uint64_t x28; + uint64_t x29; + fiat_p256_uint1 x30; + uint64_t x31; + fiat_p256_uint1 x32; + uint64_t x33; + fiat_p256_uint1 x34; + uint64_t x35; + fiat_p256_uint1 x36; + uint64_t x37; + fiat_p256_uint1 x38; + uint64_t x39; + uint64_t x40; + uint64_t x41; + uint64_t x42; + uint64_t x43; + uint64_t x44; + uint64_t x45; + uint64_t x46; + uint64_t x47; + fiat_p256_uint1 x48; + uint64_t x49; + fiat_p256_uint1 x50; + uint64_t x51; + fiat_p256_uint1 x52; + uint64_t x53; + uint64_t x54; + fiat_p256_uint1 x55; + uint64_t x56; + fiat_p256_uint1 x57; + uint64_t x58; + fiat_p256_uint1 x59; + uint64_t x60; + fiat_p256_uint1 x61; + uint64_t x62; + fiat_p256_uint1 x63; + uint64_t x64; + uint64_t x65; + uint64_t x66; + uint64_t x67; + uint64_t x68; + uint64_t x69; + uint64_t x70; + fiat_p256_uint1 x71; + uint64_t x72; + uint64_t x73; + fiat_p256_uint1 x74; + uint64_t x75; + fiat_p256_uint1 x76; + uint64_t x77; + fiat_p256_uint1 x78; + uint64_t x79; + fiat_p256_uint1 x80; + uint64_t x81; + fiat_p256_uint1 x82; + uint64_t x83; + uint64_t x84; + uint64_t x85; + uint64_t x86; + uint64_t x87; + uint64_t x88; + uint64_t x89; + uint64_t x90; + uint64_t x91; + uint64_t x92; + fiat_p256_uint1 x93; + uint64_t x94; + fiat_p256_uint1 x95; + uint64_t x96; + fiat_p256_uint1 x97; + uint64_t x98; + uint64_t x99; + fiat_p256_uint1 x100; + uint64_t x101; + fiat_p256_uint1 x102; + uint64_t x103; + fiat_p256_uint1 x104; + uint64_t x105; + fiat_p256_uint1 x106; + uint64_t x107; + fiat_p256_uint1 x108; + uint64_t x109; + uint64_t x110; + uint64_t x111; + uint64_t x112; + uint64_t x113; + uint64_t x114; + uint64_t x115; + fiat_p256_uint1 x116; + uint64_t x117; + uint64_t x118; + fiat_p256_uint1 x119; + uint64_t x120; + fiat_p256_uint1 x121; + uint64_t x122; + fiat_p256_uint1 x123; + uint64_t x124; + fiat_p256_uint1 x125; + uint64_t x126; + fiat_p256_uint1 x127; + uint64_t x128; + uint64_t x129; + uint64_t x130; + uint64_t x131; + uint64_t x132; + uint64_t x133; + uint64_t x134; + uint64_t x135; + uint64_t x136; + uint64_t x137; + fiat_p256_uint1 x138; + uint64_t x139; + fiat_p256_uint1 x140; + uint64_t x141; + fiat_p256_uint1 x142; + uint64_t x143; + uint64_t x144; + fiat_p256_uint1 x145; + uint64_t x146; + fiat_p256_uint1 x147; + uint64_t x148; + fiat_p256_uint1 x149; + uint64_t x150; + fiat_p256_uint1 x151; + uint64_t x152; + fiat_p256_uint1 x153; + uint64_t x154; + uint64_t x155; + uint64_t x156; + uint64_t x157; + uint64_t x158; + uint64_t x159; + uint64_t x160; + fiat_p256_uint1 x161; + uint64_t x162; + uint64_t x163; + fiat_p256_uint1 x164; + uint64_t x165; + fiat_p256_uint1 x166; + uint64_t x167; + fiat_p256_uint1 x168; + uint64_t x169; + fiat_p256_uint1 x170; + uint64_t x171; + fiat_p256_uint1 x172; + uint64_t x173; + uint64_t x174; + fiat_p256_uint1 x175; + uint64_t x176; + fiat_p256_uint1 x177; + uint64_t x178; + fiat_p256_uint1 x179; + uint64_t x180; + fiat_p256_uint1 x181; + uint64_t x182; + fiat_p256_uint1 x183; + uint64_t x184; + uint64_t x185; + uint64_t x186; + uint64_t x187; + x1 = (arg1[1]); + x2 = (arg1[2]); + x3 = (arg1[3]); + x4 = (arg1[0]); + fiat_p256_mulx_u64(&x5, &x6, x4, (arg1[3])); + fiat_p256_mulx_u64(&x7, &x8, x4, (arg1[2])); + fiat_p256_mulx_u64(&x9, &x10, x4, (arg1[1])); + fiat_p256_mulx_u64(&x11, &x12, x4, (arg1[0])); + fiat_p256_addcarryx_u64(&x13, &x14, 0x0, x12, x9); + fiat_p256_addcarryx_u64(&x15, &x16, x14, x10, x7); + fiat_p256_addcarryx_u64(&x17, &x18, x16, x8, x5); + x19 = (x18 + x6); + fiat_p256_mulx_u64(&x20, &x21, x11, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x22, &x23, x11, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x24, &x25, x11, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x26, &x27, 0x0, x25, x22); + x28 = (x27 + x23); + fiat_p256_addcarryx_u64(&x29, &x30, 0x0, x11, x24); + fiat_p256_addcarryx_u64(&x31, &x32, x30, x13, x26); + fiat_p256_addcarryx_u64(&x33, &x34, x32, x15, x28); + fiat_p256_addcarryx_u64(&x35, &x36, x34, x17, x20); + fiat_p256_addcarryx_u64(&x37, &x38, x36, x19, x21); + fiat_p256_mulx_u64(&x39, &x40, x1, (arg1[3])); + fiat_p256_mulx_u64(&x41, &x42, x1, (arg1[2])); + fiat_p256_mulx_u64(&x43, &x44, x1, (arg1[1])); + fiat_p256_mulx_u64(&x45, &x46, x1, (arg1[0])); + fiat_p256_addcarryx_u64(&x47, &x48, 0x0, x46, x43); + fiat_p256_addcarryx_u64(&x49, &x50, x48, x44, x41); + fiat_p256_addcarryx_u64(&x51, &x52, x50, x42, x39); + x53 = (x52 + x40); + fiat_p256_addcarryx_u64(&x54, &x55, 0x0, x31, x45); + fiat_p256_addcarryx_u64(&x56, &x57, x55, x33, x47); + fiat_p256_addcarryx_u64(&x58, &x59, x57, x35, x49); + fiat_p256_addcarryx_u64(&x60, &x61, x59, x37, x51); + fiat_p256_addcarryx_u64(&x62, &x63, x61, x38, x53); + fiat_p256_mulx_u64(&x64, &x65, x54, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x66, &x67, x54, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x68, &x69, x54, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x70, &x71, 0x0, x69, x66); + x72 = (x71 + x67); + fiat_p256_addcarryx_u64(&x73, &x74, 0x0, x54, x68); + fiat_p256_addcarryx_u64(&x75, &x76, x74, x56, x70); + fiat_p256_addcarryx_u64(&x77, &x78, x76, x58, x72); + fiat_p256_addcarryx_u64(&x79, &x80, x78, x60, x64); + fiat_p256_addcarryx_u64(&x81, &x82, x80, x62, x65); + x83 = ((uint64_t)x82 + x63); + fiat_p256_mulx_u64(&x84, &x85, x2, (arg1[3])); + fiat_p256_mulx_u64(&x86, &x87, x2, (arg1[2])); + fiat_p256_mulx_u64(&x88, &x89, x2, (arg1[1])); + fiat_p256_mulx_u64(&x90, &x91, x2, (arg1[0])); + fiat_p256_addcarryx_u64(&x92, &x93, 0x0, x91, x88); + fiat_p256_addcarryx_u64(&x94, &x95, x93, x89, x86); + fiat_p256_addcarryx_u64(&x96, &x97, x95, x87, x84); + x98 = (x97 + x85); + fiat_p256_addcarryx_u64(&x99, &x100, 0x0, x75, x90); + fiat_p256_addcarryx_u64(&x101, &x102, x100, x77, x92); + fiat_p256_addcarryx_u64(&x103, &x104, x102, x79, x94); + fiat_p256_addcarryx_u64(&x105, &x106, x104, x81, x96); + fiat_p256_addcarryx_u64(&x107, &x108, x106, x83, x98); + fiat_p256_mulx_u64(&x109, &x110, x99, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x111, &x112, x99, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x113, &x114, x99, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x115, &x116, 0x0, x114, x111); + x117 = (x116 + x112); + fiat_p256_addcarryx_u64(&x118, &x119, 0x0, x99, x113); + fiat_p256_addcarryx_u64(&x120, &x121, x119, x101, x115); + fiat_p256_addcarryx_u64(&x122, &x123, x121, x103, x117); + fiat_p256_addcarryx_u64(&x124, &x125, x123, x105, x109); + fiat_p256_addcarryx_u64(&x126, &x127, x125, x107, x110); + x128 = ((uint64_t)x127 + x108); + fiat_p256_mulx_u64(&x129, &x130, x3, (arg1[3])); + fiat_p256_mulx_u64(&x131, &x132, x3, (arg1[2])); + fiat_p256_mulx_u64(&x133, &x134, x3, (arg1[1])); + fiat_p256_mulx_u64(&x135, &x136, x3, (arg1[0])); + fiat_p256_addcarryx_u64(&x137, &x138, 0x0, x136, x133); + fiat_p256_addcarryx_u64(&x139, &x140, x138, x134, x131); + fiat_p256_addcarryx_u64(&x141, &x142, x140, x132, x129); + x143 = (x142 + x130); + fiat_p256_addcarryx_u64(&x144, &x145, 0x0, x120, x135); + fiat_p256_addcarryx_u64(&x146, &x147, x145, x122, x137); + fiat_p256_addcarryx_u64(&x148, &x149, x147, x124, x139); + fiat_p256_addcarryx_u64(&x150, &x151, x149, x126, x141); + fiat_p256_addcarryx_u64(&x152, &x153, x151, x128, x143); + fiat_p256_mulx_u64(&x154, &x155, x144, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x156, &x157, x144, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x158, &x159, x144, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x160, &x161, 0x0, x159, x156); + x162 = (x161 + x157); + fiat_p256_addcarryx_u64(&x163, &x164, 0x0, x144, x158); + fiat_p256_addcarryx_u64(&x165, &x166, x164, x146, x160); + fiat_p256_addcarryx_u64(&x167, &x168, x166, x148, x162); + fiat_p256_addcarryx_u64(&x169, &x170, x168, x150, x154); + fiat_p256_addcarryx_u64(&x171, &x172, x170, x152, x155); + x173 = ((uint64_t)x172 + x153); + fiat_p256_subborrowx_u64(&x174, &x175, 0x0, x165, UINT64_C(0xffffffffffffffff)); + fiat_p256_subborrowx_u64(&x176, &x177, x175, x167, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u64(&x178, &x179, x177, x169, 0x0); + fiat_p256_subborrowx_u64(&x180, &x181, x179, x171, UINT64_C(0xffffffff00000001)); + fiat_p256_subborrowx_u64(&x182, &x183, x181, x173, 0x0); + fiat_p256_cmovznz_u64(&x184, x183, x174, x165); + fiat_p256_cmovznz_u64(&x185, x183, x176, x167); + fiat_p256_cmovznz_u64(&x186, x183, x178, x169); + fiat_p256_cmovznz_u64(&x187, x183, x180, x171); + out1[0] = x184; + out1[1] = x185; + out1[2] = x186; + out1[3] = x187; +} + +/* + * The function fiat_p256_add adds two field elements in the Montgomery domain. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * 0 ≤ eval arg2 < m + * Postconditions: + * eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) + eval (from_montgomery arg2)) mod m + * 0 ≤ eval out1 < m + * + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_add(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1, const fiat_p256_montgomery_domain_field_element arg2) { + uint64_t x1; + fiat_p256_uint1 x2; + uint64_t x3; + fiat_p256_uint1 x4; + uint64_t x5; + fiat_p256_uint1 x6; + uint64_t x7; + fiat_p256_uint1 x8; + uint64_t x9; + fiat_p256_uint1 x10; + uint64_t x11; + fiat_p256_uint1 x12; + uint64_t x13; + fiat_p256_uint1 x14; + uint64_t x15; + fiat_p256_uint1 x16; + uint64_t x17; + fiat_p256_uint1 x18; + uint64_t x19; + uint64_t x20; + uint64_t x21; + uint64_t x22; + fiat_p256_addcarryx_u64(&x1, &x2, 0x0, (arg1[0]), (arg2[0])); + fiat_p256_addcarryx_u64(&x3, &x4, x2, (arg1[1]), (arg2[1])); + fiat_p256_addcarryx_u64(&x5, &x6, x4, (arg1[2]), (arg2[2])); + fiat_p256_addcarryx_u64(&x7, &x8, x6, (arg1[3]), (arg2[3])); + fiat_p256_subborrowx_u64(&x9, &x10, 0x0, x1, UINT64_C(0xffffffffffffffff)); + fiat_p256_subborrowx_u64(&x11, &x12, x10, x3, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u64(&x13, &x14, x12, x5, 0x0); + fiat_p256_subborrowx_u64(&x15, &x16, x14, x7, UINT64_C(0xffffffff00000001)); + fiat_p256_subborrowx_u64(&x17, &x18, x16, x8, 0x0); + fiat_p256_cmovznz_u64(&x19, x18, x9, x1); + fiat_p256_cmovznz_u64(&x20, x18, x11, x3); + fiat_p256_cmovznz_u64(&x21, x18, x13, x5); + fiat_p256_cmovznz_u64(&x22, x18, x15, x7); + out1[0] = x19; + out1[1] = x20; + out1[2] = x21; + out1[3] = x22; +} + +/* + * The function fiat_p256_sub subtracts two field elements in the Montgomery domain. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * 0 ≤ eval arg2 < m + * Postconditions: + * eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) - eval (from_montgomery arg2)) mod m + * 0 ≤ eval out1 < m + * + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_sub(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1, const fiat_p256_montgomery_domain_field_element arg2) { + uint64_t x1; + fiat_p256_uint1 x2; + uint64_t x3; + fiat_p256_uint1 x4; + uint64_t x5; + fiat_p256_uint1 x6; + uint64_t x7; + fiat_p256_uint1 x8; + uint64_t x9; + uint64_t x10; + fiat_p256_uint1 x11; + uint64_t x12; + fiat_p256_uint1 x13; + uint64_t x14; + fiat_p256_uint1 x15; + uint64_t x16; + fiat_p256_uint1 x17; + fiat_p256_subborrowx_u64(&x1, &x2, 0x0, (arg1[0]), (arg2[0])); + fiat_p256_subborrowx_u64(&x3, &x4, x2, (arg1[1]), (arg2[1])); + fiat_p256_subborrowx_u64(&x5, &x6, x4, (arg1[2]), (arg2[2])); + fiat_p256_subborrowx_u64(&x7, &x8, x6, (arg1[3]), (arg2[3])); + fiat_p256_cmovznz_u64(&x9, x8, 0x0, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x10, &x11, 0x0, x1, x9); + fiat_p256_addcarryx_u64(&x12, &x13, x11, x3, (x9 & UINT32_C(0xffffffff))); + fiat_p256_addcarryx_u64(&x14, &x15, x13, x5, 0x0); + fiat_p256_addcarryx_u64(&x16, &x17, x15, x7, (x9 & UINT64_C(0xffffffff00000001))); + out1[0] = x10; + out1[1] = x12; + out1[2] = x14; + out1[3] = x16; +} + +/* + * The function fiat_p256_opp negates a field element in the Montgomery domain. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * Postconditions: + * eval (from_montgomery out1) mod m = -eval (from_montgomery arg1) mod m + * 0 ≤ eval out1 < m + * + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_opp(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1) { + uint64_t x1; + fiat_p256_uint1 x2; + uint64_t x3; + fiat_p256_uint1 x4; + uint64_t x5; + fiat_p256_uint1 x6; + uint64_t x7; + fiat_p256_uint1 x8; + uint64_t x9; + uint64_t x10; + fiat_p256_uint1 x11; + uint64_t x12; + fiat_p256_uint1 x13; + uint64_t x14; + fiat_p256_uint1 x15; + uint64_t x16; + fiat_p256_uint1 x17; + fiat_p256_subborrowx_u64(&x1, &x2, 0x0, 0x0, (arg1[0])); + fiat_p256_subborrowx_u64(&x3, &x4, x2, 0x0, (arg1[1])); + fiat_p256_subborrowx_u64(&x5, &x6, x4, 0x0, (arg1[2])); + fiat_p256_subborrowx_u64(&x7, &x8, x6, 0x0, (arg1[3])); + fiat_p256_cmovznz_u64(&x9, x8, 0x0, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x10, &x11, 0x0, x1, x9); + fiat_p256_addcarryx_u64(&x12, &x13, x11, x3, (x9 & UINT32_C(0xffffffff))); + fiat_p256_addcarryx_u64(&x14, &x15, x13, x5, 0x0); + fiat_p256_addcarryx_u64(&x16, &x17, x15, x7, (x9 & UINT64_C(0xffffffff00000001))); + out1[0] = x10; + out1[1] = x12; + out1[2] = x14; + out1[3] = x16; +} + +/* + * The function fiat_p256_from_montgomery translates a field element out of the Montgomery domain. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * Postconditions: + * eval out1 mod m = (eval arg1 * ((2^64)â»Â¹ mod m)^4) mod m + * 0 ≤ eval out1 < m + * + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_from_montgomery(fiat_p256_non_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + fiat_p256_uint1 x9; + uint64_t x10; + fiat_p256_uint1 x11; + uint64_t x12; + fiat_p256_uint1 x13; + uint64_t x14; + fiat_p256_uint1 x15; + uint64_t x16; + uint64_t x17; + uint64_t x18; + uint64_t x19; + uint64_t x20; + uint64_t x21; + uint64_t x22; + fiat_p256_uint1 x23; + uint64_t x24; + fiat_p256_uint1 x25; + uint64_t x26; + fiat_p256_uint1 x27; + uint64_t x28; + fiat_p256_uint1 x29; + uint64_t x30; + fiat_p256_uint1 x31; + uint64_t x32; + fiat_p256_uint1 x33; + uint64_t x34; + fiat_p256_uint1 x35; + uint64_t x36; + fiat_p256_uint1 x37; + uint64_t x38; + uint64_t x39; + uint64_t x40; + uint64_t x41; + uint64_t x42; + uint64_t x43; + uint64_t x44; + fiat_p256_uint1 x45; + uint64_t x46; + fiat_p256_uint1 x47; + uint64_t x48; + fiat_p256_uint1 x49; + uint64_t x50; + fiat_p256_uint1 x51; + uint64_t x52; + fiat_p256_uint1 x53; + uint64_t x54; + fiat_p256_uint1 x55; + uint64_t x56; + fiat_p256_uint1 x57; + uint64_t x58; + fiat_p256_uint1 x59; + uint64_t x60; + uint64_t x61; + uint64_t x62; + uint64_t x63; + uint64_t x64; + uint64_t x65; + uint64_t x66; + fiat_p256_uint1 x67; + uint64_t x68; + fiat_p256_uint1 x69; + uint64_t x70; + fiat_p256_uint1 x71; + uint64_t x72; + fiat_p256_uint1 x73; + uint64_t x74; + fiat_p256_uint1 x75; + uint64_t x76; + uint64_t x77; + fiat_p256_uint1 x78; + uint64_t x79; + fiat_p256_uint1 x80; + uint64_t x81; + fiat_p256_uint1 x82; + uint64_t x83; + fiat_p256_uint1 x84; + uint64_t x85; + fiat_p256_uint1 x86; + uint64_t x87; + uint64_t x88; + uint64_t x89; + uint64_t x90; + x1 = (arg1[0]); + fiat_p256_mulx_u64(&x2, &x3, x1, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x4, &x5, x1, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x6, &x7, x1, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x8, &x9, 0x0, x7, x4); + fiat_p256_addcarryx_u64(&x10, &x11, 0x0, x1, x6); + fiat_p256_addcarryx_u64(&x12, &x13, x11, 0x0, x8); + fiat_p256_addcarryx_u64(&x14, &x15, 0x0, x12, (arg1[1])); + fiat_p256_mulx_u64(&x16, &x17, x14, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x18, &x19, x14, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x20, &x21, x14, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x22, &x23, 0x0, x21, x18); + fiat_p256_addcarryx_u64(&x24, &x25, 0x0, x14, x20); + fiat_p256_addcarryx_u64(&x26, &x27, x25, (x15 + (x13 + (x9 + x5))), x22); + fiat_p256_addcarryx_u64(&x28, &x29, x27, x2, (x23 + x19)); + fiat_p256_addcarryx_u64(&x30, &x31, x29, x3, x16); + fiat_p256_addcarryx_u64(&x32, &x33, 0x0, x26, (arg1[2])); + fiat_p256_addcarryx_u64(&x34, &x35, x33, x28, 0x0); + fiat_p256_addcarryx_u64(&x36, &x37, x35, x30, 0x0); + fiat_p256_mulx_u64(&x38, &x39, x32, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x40, &x41, x32, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x42, &x43, x32, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x44, &x45, 0x0, x43, x40); + fiat_p256_addcarryx_u64(&x46, &x47, 0x0, x32, x42); + fiat_p256_addcarryx_u64(&x48, &x49, x47, x34, x44); + fiat_p256_addcarryx_u64(&x50, &x51, x49, x36, (x45 + x41)); + fiat_p256_addcarryx_u64(&x52, &x53, x51, (x37 + (x31 + x17)), x38); + fiat_p256_addcarryx_u64(&x54, &x55, 0x0, x48, (arg1[3])); + fiat_p256_addcarryx_u64(&x56, &x57, x55, x50, 0x0); + fiat_p256_addcarryx_u64(&x58, &x59, x57, x52, 0x0); + fiat_p256_mulx_u64(&x60, &x61, x54, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x62, &x63, x54, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x64, &x65, x54, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x66, &x67, 0x0, x65, x62); + fiat_p256_addcarryx_u64(&x68, &x69, 0x0, x54, x64); + fiat_p256_addcarryx_u64(&x70, &x71, x69, x56, x66); + fiat_p256_addcarryx_u64(&x72, &x73, x71, x58, (x67 + x63)); + fiat_p256_addcarryx_u64(&x74, &x75, x73, (x59 + (x53 + x39)), x60); + x76 = (x75 + x61); + fiat_p256_subborrowx_u64(&x77, &x78, 0x0, x70, UINT64_C(0xffffffffffffffff)); + fiat_p256_subborrowx_u64(&x79, &x80, x78, x72, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u64(&x81, &x82, x80, x74, 0x0); + fiat_p256_subborrowx_u64(&x83, &x84, x82, x76, UINT64_C(0xffffffff00000001)); + fiat_p256_subborrowx_u64(&x85, &x86, x84, 0x0, 0x0); + fiat_p256_cmovznz_u64(&x87, x86, x77, x70); + fiat_p256_cmovznz_u64(&x88, x86, x79, x72); + fiat_p256_cmovznz_u64(&x89, x86, x81, x74); + fiat_p256_cmovznz_u64(&x90, x86, x83, x76); + out1[0] = x87; + out1[1] = x88; + out1[2] = x89; + out1[3] = x90; +} + +/* + * The function fiat_p256_to_montgomery translates a field element into the Montgomery domain. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * Postconditions: + * eval (from_montgomery out1) mod m = eval arg1 mod m + * 0 ≤ eval out1 < m + * + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_to_montgomery(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_non_montgomery_domain_field_element arg1) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + uint64_t x9; + uint64_t x10; + uint64_t x11; + uint64_t x12; + uint64_t x13; + fiat_p256_uint1 x14; + uint64_t x15; + fiat_p256_uint1 x16; + uint64_t x17; + fiat_p256_uint1 x18; + uint64_t x19; + uint64_t x20; + uint64_t x21; + uint64_t x22; + uint64_t x23; + uint64_t x24; + uint64_t x25; + fiat_p256_uint1 x26; + uint64_t x27; + fiat_p256_uint1 x28; + uint64_t x29; + fiat_p256_uint1 x30; + uint64_t x31; + fiat_p256_uint1 x32; + uint64_t x33; + fiat_p256_uint1 x34; + uint64_t x35; + fiat_p256_uint1 x36; + uint64_t x37; + uint64_t x38; + uint64_t x39; + uint64_t x40; + uint64_t x41; + uint64_t x42; + uint64_t x43; + uint64_t x44; + uint64_t x45; + fiat_p256_uint1 x46; + uint64_t x47; + fiat_p256_uint1 x48; + uint64_t x49; + fiat_p256_uint1 x50; + uint64_t x51; + fiat_p256_uint1 x52; + uint64_t x53; + fiat_p256_uint1 x54; + uint64_t x55; + fiat_p256_uint1 x56; + uint64_t x57; + fiat_p256_uint1 x58; + uint64_t x59; + uint64_t x60; + uint64_t x61; + uint64_t x62; + uint64_t x63; + uint64_t x64; + uint64_t x65; + fiat_p256_uint1 x66; + uint64_t x67; + fiat_p256_uint1 x68; + uint64_t x69; + fiat_p256_uint1 x70; + uint64_t x71; + fiat_p256_uint1 x72; + uint64_t x73; + fiat_p256_uint1 x74; + uint64_t x75; + fiat_p256_uint1 x76; + uint64_t x77; + uint64_t x78; + uint64_t x79; + uint64_t x80; + uint64_t x81; + uint64_t x82; + uint64_t x83; + uint64_t x84; + uint64_t x85; + fiat_p256_uint1 x86; + uint64_t x87; + fiat_p256_uint1 x88; + uint64_t x89; + fiat_p256_uint1 x90; + uint64_t x91; + fiat_p256_uint1 x92; + uint64_t x93; + fiat_p256_uint1 x94; + uint64_t x95; + fiat_p256_uint1 x96; + uint64_t x97; + fiat_p256_uint1 x98; + uint64_t x99; + uint64_t x100; + uint64_t x101; + uint64_t x102; + uint64_t x103; + uint64_t x104; + uint64_t x105; + fiat_p256_uint1 x106; + uint64_t x107; + fiat_p256_uint1 x108; + uint64_t x109; + fiat_p256_uint1 x110; + uint64_t x111; + fiat_p256_uint1 x112; + uint64_t x113; + fiat_p256_uint1 x114; + uint64_t x115; + fiat_p256_uint1 x116; + uint64_t x117; + uint64_t x118; + uint64_t x119; + uint64_t x120; + uint64_t x121; + uint64_t x122; + uint64_t x123; + uint64_t x124; + uint64_t x125; + fiat_p256_uint1 x126; + uint64_t x127; + fiat_p256_uint1 x128; + uint64_t x129; + fiat_p256_uint1 x130; + uint64_t x131; + fiat_p256_uint1 x132; + uint64_t x133; + fiat_p256_uint1 x134; + uint64_t x135; + fiat_p256_uint1 x136; + uint64_t x137; + fiat_p256_uint1 x138; + uint64_t x139; + uint64_t x140; + uint64_t x141; + uint64_t x142; + uint64_t x143; + uint64_t x144; + uint64_t x145; + fiat_p256_uint1 x146; + uint64_t x147; + fiat_p256_uint1 x148; + uint64_t x149; + fiat_p256_uint1 x150; + uint64_t x151; + fiat_p256_uint1 x152; + uint64_t x153; + fiat_p256_uint1 x154; + uint64_t x155; + fiat_p256_uint1 x156; + uint64_t x157; + fiat_p256_uint1 x158; + uint64_t x159; + fiat_p256_uint1 x160; + uint64_t x161; + fiat_p256_uint1 x162; + uint64_t x163; + fiat_p256_uint1 x164; + uint64_t x165; + fiat_p256_uint1 x166; + uint64_t x167; + uint64_t x168; + uint64_t x169; + uint64_t x170; + x1 = (arg1[1]); + x2 = (arg1[2]); + x3 = (arg1[3]); + x4 = (arg1[0]); + fiat_p256_mulx_u64(&x5, &x6, x4, UINT64_C(0x4fffffffd)); + fiat_p256_mulx_u64(&x7, &x8, x4, UINT64_C(0xfffffffffffffffe)); + fiat_p256_mulx_u64(&x9, &x10, x4, UINT64_C(0xfffffffbffffffff)); + fiat_p256_mulx_u64(&x11, &x12, x4, 0x3); + fiat_p256_addcarryx_u64(&x13, &x14, 0x0, x12, x9); + fiat_p256_addcarryx_u64(&x15, &x16, x14, x10, x7); + fiat_p256_addcarryx_u64(&x17, &x18, x16, x8, x5); + fiat_p256_mulx_u64(&x19, &x20, x11, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x21, &x22, x11, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x23, &x24, x11, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x25, &x26, 0x0, x24, x21); + fiat_p256_addcarryx_u64(&x27, &x28, 0x0, x11, x23); + fiat_p256_addcarryx_u64(&x29, &x30, x28, x13, x25); + fiat_p256_addcarryx_u64(&x31, &x32, x30, x15, (x26 + x22)); + fiat_p256_addcarryx_u64(&x33, &x34, x32, x17, x19); + fiat_p256_addcarryx_u64(&x35, &x36, x34, (x18 + x6), x20); + fiat_p256_mulx_u64(&x37, &x38, x1, UINT64_C(0x4fffffffd)); + fiat_p256_mulx_u64(&x39, &x40, x1, UINT64_C(0xfffffffffffffffe)); + fiat_p256_mulx_u64(&x41, &x42, x1, UINT64_C(0xfffffffbffffffff)); + fiat_p256_mulx_u64(&x43, &x44, x1, 0x3); + fiat_p256_addcarryx_u64(&x45, &x46, 0x0, x44, x41); + fiat_p256_addcarryx_u64(&x47, &x48, x46, x42, x39); + fiat_p256_addcarryx_u64(&x49, &x50, x48, x40, x37); + fiat_p256_addcarryx_u64(&x51, &x52, 0x0, x29, x43); + fiat_p256_addcarryx_u64(&x53, &x54, x52, x31, x45); + fiat_p256_addcarryx_u64(&x55, &x56, x54, x33, x47); + fiat_p256_addcarryx_u64(&x57, &x58, x56, x35, x49); + fiat_p256_mulx_u64(&x59, &x60, x51, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x61, &x62, x51, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x63, &x64, x51, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x65, &x66, 0x0, x64, x61); + fiat_p256_addcarryx_u64(&x67, &x68, 0x0, x51, x63); + fiat_p256_addcarryx_u64(&x69, &x70, x68, x53, x65); + fiat_p256_addcarryx_u64(&x71, &x72, x70, x55, (x66 + x62)); + fiat_p256_addcarryx_u64(&x73, &x74, x72, x57, x59); + fiat_p256_addcarryx_u64(&x75, &x76, x74, (((uint64_t)x58 + x36) + (x50 + x38)), x60); + fiat_p256_mulx_u64(&x77, &x78, x2, UINT64_C(0x4fffffffd)); + fiat_p256_mulx_u64(&x79, &x80, x2, UINT64_C(0xfffffffffffffffe)); + fiat_p256_mulx_u64(&x81, &x82, x2, UINT64_C(0xfffffffbffffffff)); + fiat_p256_mulx_u64(&x83, &x84, x2, 0x3); + fiat_p256_addcarryx_u64(&x85, &x86, 0x0, x84, x81); + fiat_p256_addcarryx_u64(&x87, &x88, x86, x82, x79); + fiat_p256_addcarryx_u64(&x89, &x90, x88, x80, x77); + fiat_p256_addcarryx_u64(&x91, &x92, 0x0, x69, x83); + fiat_p256_addcarryx_u64(&x93, &x94, x92, x71, x85); + fiat_p256_addcarryx_u64(&x95, &x96, x94, x73, x87); + fiat_p256_addcarryx_u64(&x97, &x98, x96, x75, x89); + fiat_p256_mulx_u64(&x99, &x100, x91, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x101, &x102, x91, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x103, &x104, x91, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x105, &x106, 0x0, x104, x101); + fiat_p256_addcarryx_u64(&x107, &x108, 0x0, x91, x103); + fiat_p256_addcarryx_u64(&x109, &x110, x108, x93, x105); + fiat_p256_addcarryx_u64(&x111, &x112, x110, x95, (x106 + x102)); + fiat_p256_addcarryx_u64(&x113, &x114, x112, x97, x99); + fiat_p256_addcarryx_u64(&x115, &x116, x114, (((uint64_t)x98 + x76) + (x90 + x78)), x100); + fiat_p256_mulx_u64(&x117, &x118, x3, UINT64_C(0x4fffffffd)); + fiat_p256_mulx_u64(&x119, &x120, x3, UINT64_C(0xfffffffffffffffe)); + fiat_p256_mulx_u64(&x121, &x122, x3, UINT64_C(0xfffffffbffffffff)); + fiat_p256_mulx_u64(&x123, &x124, x3, 0x3); + fiat_p256_addcarryx_u64(&x125, &x126, 0x0, x124, x121); + fiat_p256_addcarryx_u64(&x127, &x128, x126, x122, x119); + fiat_p256_addcarryx_u64(&x129, &x130, x128, x120, x117); + fiat_p256_addcarryx_u64(&x131, &x132, 0x0, x109, x123); + fiat_p256_addcarryx_u64(&x133, &x134, x132, x111, x125); + fiat_p256_addcarryx_u64(&x135, &x136, x134, x113, x127); + fiat_p256_addcarryx_u64(&x137, &x138, x136, x115, x129); + fiat_p256_mulx_u64(&x139, &x140, x131, UINT64_C(0xffffffff00000001)); + fiat_p256_mulx_u64(&x141, &x142, x131, UINT32_C(0xffffffff)); + fiat_p256_mulx_u64(&x143, &x144, x131, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x145, &x146, 0x0, x144, x141); + fiat_p256_addcarryx_u64(&x147, &x148, 0x0, x131, x143); + fiat_p256_addcarryx_u64(&x149, &x150, x148, x133, x145); + fiat_p256_addcarryx_u64(&x151, &x152, x150, x135, (x146 + x142)); + fiat_p256_addcarryx_u64(&x153, &x154, x152, x137, x139); + fiat_p256_addcarryx_u64(&x155, &x156, x154, (((uint64_t)x138 + x116) + (x130 + x118)), x140); + fiat_p256_subborrowx_u64(&x157, &x158, 0x0, x149, UINT64_C(0xffffffffffffffff)); + fiat_p256_subborrowx_u64(&x159, &x160, x158, x151, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u64(&x161, &x162, x160, x153, 0x0); + fiat_p256_subborrowx_u64(&x163, &x164, x162, x155, UINT64_C(0xffffffff00000001)); + fiat_p256_subborrowx_u64(&x165, &x166, x164, x156, 0x0); + fiat_p256_cmovznz_u64(&x167, x166, x157, x149); + fiat_p256_cmovznz_u64(&x168, x166, x159, x151); + fiat_p256_cmovznz_u64(&x169, x166, x161, x153); + fiat_p256_cmovznz_u64(&x170, x166, x163, x155); + out1[0] = x167; + out1[1] = x168; + out1[2] = x169; + out1[3] = x170; +} + +/* + * The function fiat_p256_nonzero outputs a single non-zero word if the input is non-zero and zero otherwise. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * Postconditions: + * out1 = 0 ↔ eval (from_montgomery arg1) mod m = 0 + * + * Input Bounds: + * arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_nonzero(uint64_t* out1, const uint64_t arg1[4]) { + uint64_t x1; + x1 = ((arg1[0]) | ((arg1[1]) | ((arg1[2]) | (arg1[3])))); + *out1 = x1; +} + +/* + * The function fiat_p256_selectznz is a multi-limb conditional select. + * + * Postconditions: + * out1 = (if arg1 = 0 then arg2 else arg3) + * + * Input Bounds: + * arg1: [0x0 ~> 0x1] + * arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * arg3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * Output Bounds: + * out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_selectznz(uint64_t out1[4], fiat_p256_uint1 arg1, const uint64_t arg2[4], const uint64_t arg3[4]) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + fiat_p256_cmovznz_u64(&x1, arg1, (arg2[0]), (arg3[0])); + fiat_p256_cmovznz_u64(&x2, arg1, (arg2[1]), (arg3[1])); + fiat_p256_cmovznz_u64(&x3, arg1, (arg2[2]), (arg3[2])); + fiat_p256_cmovznz_u64(&x4, arg1, (arg2[3]), (arg3[3])); + out1[0] = x1; + out1[1] = x2; + out1[2] = x3; + out1[3] = x4; +} + +/* + * The function fiat_p256_to_bytes serializes a field element NOT in the Montgomery domain to bytes in little-endian order. + * + * Preconditions: + * 0 ≤ eval arg1 < m + * Postconditions: + * out1 = map (λ x, ⌊((eval arg1 mod m) mod 2^(8 * (x + 1))) / 2^(8 * x)⌋) [0..31] + * + * Input Bounds: + * arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * Output Bounds: + * out1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff]] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_to_bytes(uint8_t out1[32], const uint64_t arg1[4]) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint8_t x5; + uint64_t x6; + uint8_t x7; + uint64_t x8; + uint8_t x9; + uint64_t x10; + uint8_t x11; + uint64_t x12; + uint8_t x13; + uint64_t x14; + uint8_t x15; + uint64_t x16; + uint8_t x17; + uint8_t x18; + uint8_t x19; + uint64_t x20; + uint8_t x21; + uint64_t x22; + uint8_t x23; + uint64_t x24; + uint8_t x25; + uint64_t x26; + uint8_t x27; + uint64_t x28; + uint8_t x29; + uint64_t x30; + uint8_t x31; + uint8_t x32; + uint8_t x33; + uint64_t x34; + uint8_t x35; + uint64_t x36; + uint8_t x37; + uint64_t x38; + uint8_t x39; + uint64_t x40; + uint8_t x41; + uint64_t x42; + uint8_t x43; + uint64_t x44; + uint8_t x45; + uint8_t x46; + uint8_t x47; + uint64_t x48; + uint8_t x49; + uint64_t x50; + uint8_t x51; + uint64_t x52; + uint8_t x53; + uint64_t x54; + uint8_t x55; + uint64_t x56; + uint8_t x57; + uint64_t x58; + uint8_t x59; + uint8_t x60; + x1 = (arg1[3]); + x2 = (arg1[2]); + x3 = (arg1[1]); + x4 = (arg1[0]); + x5 = (uint8_t)(x4 & UINT8_C(0xff)); + x6 = (x4 >> 8); + x7 = (uint8_t)(x6 & UINT8_C(0xff)); + x8 = (x6 >> 8); + x9 = (uint8_t)(x8 & UINT8_C(0xff)); + x10 = (x8 >> 8); + x11 = (uint8_t)(x10 & UINT8_C(0xff)); + x12 = (x10 >> 8); + x13 = (uint8_t)(x12 & UINT8_C(0xff)); + x14 = (x12 >> 8); + x15 = (uint8_t)(x14 & UINT8_C(0xff)); + x16 = (x14 >> 8); + x17 = (uint8_t)(x16 & UINT8_C(0xff)); + x18 = (uint8_t)(x16 >> 8); + x19 = (uint8_t)(x3 & UINT8_C(0xff)); + x20 = (x3 >> 8); + x21 = (uint8_t)(x20 & UINT8_C(0xff)); + x22 = (x20 >> 8); + x23 = (uint8_t)(x22 & UINT8_C(0xff)); + x24 = (x22 >> 8); + x25 = (uint8_t)(x24 & UINT8_C(0xff)); + x26 = (x24 >> 8); + x27 = (uint8_t)(x26 & UINT8_C(0xff)); + x28 = (x26 >> 8); + x29 = (uint8_t)(x28 & UINT8_C(0xff)); + x30 = (x28 >> 8); + x31 = (uint8_t)(x30 & UINT8_C(0xff)); + x32 = (uint8_t)(x30 >> 8); + x33 = (uint8_t)(x2 & UINT8_C(0xff)); + x34 = (x2 >> 8); + x35 = (uint8_t)(x34 & UINT8_C(0xff)); + x36 = (x34 >> 8); + x37 = (uint8_t)(x36 & UINT8_C(0xff)); + x38 = (x36 >> 8); + x39 = (uint8_t)(x38 & UINT8_C(0xff)); + x40 = (x38 >> 8); + x41 = (uint8_t)(x40 & UINT8_C(0xff)); + x42 = (x40 >> 8); + x43 = (uint8_t)(x42 & UINT8_C(0xff)); + x44 = (x42 >> 8); + x45 = (uint8_t)(x44 & UINT8_C(0xff)); + x46 = (uint8_t)(x44 >> 8); + x47 = (uint8_t)(x1 & UINT8_C(0xff)); + x48 = (x1 >> 8); + x49 = (uint8_t)(x48 & UINT8_C(0xff)); + x50 = (x48 >> 8); + x51 = (uint8_t)(x50 & UINT8_C(0xff)); + x52 = (x50 >> 8); + x53 = (uint8_t)(x52 & UINT8_C(0xff)); + x54 = (x52 >> 8); + x55 = (uint8_t)(x54 & UINT8_C(0xff)); + x56 = (x54 >> 8); + x57 = (uint8_t)(x56 & UINT8_C(0xff)); + x58 = (x56 >> 8); + x59 = (uint8_t)(x58 & UINT8_C(0xff)); + x60 = (uint8_t)(x58 >> 8); + out1[0] = x5; + out1[1] = x7; + out1[2] = x9; + out1[3] = x11; + out1[4] = x13; + out1[5] = x15; + out1[6] = x17; + out1[7] = x18; + out1[8] = x19; + out1[9] = x21; + out1[10] = x23; + out1[11] = x25; + out1[12] = x27; + out1[13] = x29; + out1[14] = x31; + out1[15] = x32; + out1[16] = x33; + out1[17] = x35; + out1[18] = x37; + out1[19] = x39; + out1[20] = x41; + out1[21] = x43; + out1[22] = x45; + out1[23] = x46; + out1[24] = x47; + out1[25] = x49; + out1[26] = x51; + out1[27] = x53; + out1[28] = x55; + out1[29] = x57; + out1[30] = x59; + out1[31] = x60; +} + +/* + * The function fiat_p256_from_bytes deserializes a field element NOT in the Montgomery domain from bytes in little-endian order. + * + * Preconditions: + * 0 ≤ bytes_eval arg1 < m + * Postconditions: + * eval out1 mod m = bytes_eval arg1 mod m + * 0 ≤ eval out1 < m + * + * Input Bounds: + * arg1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff]] + * Output Bounds: + * out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_from_bytes(uint64_t out1[4], const uint8_t arg1[32]) { + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint8_t x8; + uint64_t x9; + uint64_t x10; + uint64_t x11; + uint64_t x12; + uint64_t x13; + uint64_t x14; + uint64_t x15; + uint8_t x16; + uint64_t x17; + uint64_t x18; + uint64_t x19; + uint64_t x20; + uint64_t x21; + uint64_t x22; + uint64_t x23; + uint8_t x24; + uint64_t x25; + uint64_t x26; + uint64_t x27; + uint64_t x28; + uint64_t x29; + uint64_t x30; + uint64_t x31; + uint8_t x32; + uint64_t x33; + uint64_t x34; + uint64_t x35; + uint64_t x36; + uint64_t x37; + uint64_t x38; + uint64_t x39; + uint64_t x40; + uint64_t x41; + uint64_t x42; + uint64_t x43; + uint64_t x44; + uint64_t x45; + uint64_t x46; + uint64_t x47; + uint64_t x48; + uint64_t x49; + uint64_t x50; + uint64_t x51; + uint64_t x52; + uint64_t x53; + uint64_t x54; + uint64_t x55; + uint64_t x56; + uint64_t x57; + uint64_t x58; + uint64_t x59; + uint64_t x60; + x1 = ((uint64_t)(arg1[31]) << 56); + x2 = ((uint64_t)(arg1[30]) << 48); + x3 = ((uint64_t)(arg1[29]) << 40); + x4 = ((uint64_t)(arg1[28]) << 32); + x5 = ((uint64_t)(arg1[27]) << 24); + x6 = ((uint64_t)(arg1[26]) << 16); + x7 = ((uint64_t)(arg1[25]) << 8); + x8 = (arg1[24]); + x9 = ((uint64_t)(arg1[23]) << 56); + x10 = ((uint64_t)(arg1[22]) << 48); + x11 = ((uint64_t)(arg1[21]) << 40); + x12 = ((uint64_t)(arg1[20]) << 32); + x13 = ((uint64_t)(arg1[19]) << 24); + x14 = ((uint64_t)(arg1[18]) << 16); + x15 = ((uint64_t)(arg1[17]) << 8); + x16 = (arg1[16]); + x17 = ((uint64_t)(arg1[15]) << 56); + x18 = ((uint64_t)(arg1[14]) << 48); + x19 = ((uint64_t)(arg1[13]) << 40); + x20 = ((uint64_t)(arg1[12]) << 32); + x21 = ((uint64_t)(arg1[11]) << 24); + x22 = ((uint64_t)(arg1[10]) << 16); + x23 = ((uint64_t)(arg1[9]) << 8); + x24 = (arg1[8]); + x25 = ((uint64_t)(arg1[7]) << 56); + x26 = ((uint64_t)(arg1[6]) << 48); + x27 = ((uint64_t)(arg1[5]) << 40); + x28 = ((uint64_t)(arg1[4]) << 32); + x29 = ((uint64_t)(arg1[3]) << 24); + x30 = ((uint64_t)(arg1[2]) << 16); + x31 = ((uint64_t)(arg1[1]) << 8); + x32 = (arg1[0]); + x33 = (x31 + (uint64_t)x32); + x34 = (x30 + x33); + x35 = (x29 + x34); + x36 = (x28 + x35); + x37 = (x27 + x36); + x38 = (x26 + x37); + x39 = (x25 + x38); + x40 = (x23 + (uint64_t)x24); + x41 = (x22 + x40); + x42 = (x21 + x41); + x43 = (x20 + x42); + x44 = (x19 + x43); + x45 = (x18 + x44); + x46 = (x17 + x45); + x47 = (x15 + (uint64_t)x16); + x48 = (x14 + x47); + x49 = (x13 + x48); + x50 = (x12 + x49); + x51 = (x11 + x50); + x52 = (x10 + x51); + x53 = (x9 + x52); + x54 = (x7 + (uint64_t)x8); + x55 = (x6 + x54); + x56 = (x5 + x55); + x57 = (x4 + x56); + x58 = (x3 + x57); + x59 = (x2 + x58); + x60 = (x1 + x59); + out1[0] = x39; + out1[1] = x46; + out1[2] = x53; + out1[3] = x60; +} + +/* + * The function fiat_p256_set_one returns the field element one in the Montgomery domain. + * + * Postconditions: + * eval (from_montgomery out1) mod m = 1 mod m + * 0 ≤ eval out1 < m + * + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_set_one(fiat_p256_montgomery_domain_field_element out1) { + out1[0] = 0x1; + out1[1] = UINT64_C(0xffffffff00000000); + out1[2] = UINT64_C(0xffffffffffffffff); + out1[3] = UINT32_C(0xfffffffe); +} + +/* + * The function fiat_p256_msat returns the saturated representation of the prime modulus. + * + * Postconditions: + * twos_complement_eval out1 = m + * 0 ≤ eval out1 < m + * + * Output Bounds: + * out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_msat(uint64_t out1[5]) { + out1[0] = UINT64_C(0xffffffffffffffff); + out1[1] = UINT32_C(0xffffffff); + out1[2] = 0x0; + out1[3] = UINT64_C(0xffffffff00000001); + out1[4] = 0x0; +} + +/* + * The function fiat_p256_divstep computes a divstep. + * + * Preconditions: + * 0 ≤ eval arg4 < m + * 0 ≤ eval arg5 < m + * Postconditions: + * out1 = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then 1 - arg1 else 1 + arg1) + * twos_complement_eval out2 = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then twos_complement_eval arg3 else twos_complement_eval arg2) + * twos_complement_eval out3 = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then ⌊(twos_complement_eval arg3 - twos_complement_eval arg2) / 2⌋ else ⌊(twos_complement_eval arg3 + (twos_complement_eval arg3 mod 2) * twos_complement_eval arg2) / 2⌋) + * eval (from_montgomery out4) mod m = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then (2 * eval (from_montgomery arg5)) mod m else (2 * eval (from_montgomery arg4)) mod m) + * eval (from_montgomery out5) mod m = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then (eval (from_montgomery arg4) - eval (from_montgomery arg4)) mod m else (eval (from_montgomery arg5) + (twos_complement_eval arg3 mod 2) * eval (from_montgomery arg4)) mod m) + * 0 ≤ eval out5 < m + * 0 ≤ eval out5 < m + * 0 ≤ eval out2 < m + * 0 ≤ eval out3 < m + * + * Input Bounds: + * arg1: [0x0 ~> 0xffffffffffffffff] + * arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * arg3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * arg4: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * arg5: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * Output Bounds: + * out1: [0x0 ~> 0xffffffffffffffff] + * out2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * out3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * out4: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + * out5: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_divstep(uint64_t* out1, uint64_t out2[5], uint64_t out3[5], uint64_t out4[4], uint64_t out5[4], uint64_t arg1, const uint64_t arg2[5], const uint64_t arg3[5], const uint64_t arg4[4], const uint64_t arg5[4]) { + uint64_t x1; + fiat_p256_uint1 x2; + fiat_p256_uint1 x3; + uint64_t x4; + fiat_p256_uint1 x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + uint64_t x9; + uint64_t x10; + uint64_t x11; + uint64_t x12; + fiat_p256_uint1 x13; + uint64_t x14; + fiat_p256_uint1 x15; + uint64_t x16; + fiat_p256_uint1 x17; + uint64_t x18; + fiat_p256_uint1 x19; + uint64_t x20; + fiat_p256_uint1 x21; + uint64_t x22; + uint64_t x23; + uint64_t x24; + uint64_t x25; + uint64_t x26; + uint64_t x27; + uint64_t x28; + uint64_t x29; + uint64_t x30; + uint64_t x31; + fiat_p256_uint1 x32; + uint64_t x33; + fiat_p256_uint1 x34; + uint64_t x35; + fiat_p256_uint1 x36; + uint64_t x37; + fiat_p256_uint1 x38; + uint64_t x39; + fiat_p256_uint1 x40; + uint64_t x41; + fiat_p256_uint1 x42; + uint64_t x43; + fiat_p256_uint1 x44; + uint64_t x45; + fiat_p256_uint1 x46; + uint64_t x47; + fiat_p256_uint1 x48; + uint64_t x49; + uint64_t x50; + uint64_t x51; + uint64_t x52; + uint64_t x53; + fiat_p256_uint1 x54; + uint64_t x55; + fiat_p256_uint1 x56; + uint64_t x57; + fiat_p256_uint1 x58; + uint64_t x59; + fiat_p256_uint1 x60; + uint64_t x61; + uint64_t x62; + fiat_p256_uint1 x63; + uint64_t x64; + fiat_p256_uint1 x65; + uint64_t x66; + fiat_p256_uint1 x67; + uint64_t x68; + fiat_p256_uint1 x69; + uint64_t x70; + uint64_t x71; + uint64_t x72; + uint64_t x73; + fiat_p256_uint1 x74; + uint64_t x75; + uint64_t x76; + uint64_t x77; + uint64_t x78; + uint64_t x79; + uint64_t x80; + fiat_p256_uint1 x81; + uint64_t x82; + fiat_p256_uint1 x83; + uint64_t x84; + fiat_p256_uint1 x85; + uint64_t x86; + fiat_p256_uint1 x87; + uint64_t x88; + fiat_p256_uint1 x89; + uint64_t x90; + uint64_t x91; + uint64_t x92; + uint64_t x93; + uint64_t x94; + fiat_p256_uint1 x95; + uint64_t x96; + fiat_p256_uint1 x97; + uint64_t x98; + fiat_p256_uint1 x99; + uint64_t x100; + fiat_p256_uint1 x101; + uint64_t x102; + fiat_p256_uint1 x103; + uint64_t x104; + fiat_p256_uint1 x105; + uint64_t x106; + fiat_p256_uint1 x107; + uint64_t x108; + fiat_p256_uint1 x109; + uint64_t x110; + fiat_p256_uint1 x111; + uint64_t x112; + fiat_p256_uint1 x113; + uint64_t x114; + uint64_t x115; + uint64_t x116; + uint64_t x117; + uint64_t x118; + uint64_t x119; + uint64_t x120; + uint64_t x121; + uint64_t x122; + uint64_t x123; + uint64_t x124; + uint64_t x125; + uint64_t x126; + fiat_p256_addcarryx_u64(&x1, &x2, 0x0, (~arg1), 0x1); + x3 = (fiat_p256_uint1)((fiat_p256_uint1)(x1 >> 63) & (fiat_p256_uint1)((arg3[0]) & 0x1)); + fiat_p256_addcarryx_u64(&x4, &x5, 0x0, (~arg1), 0x1); + fiat_p256_cmovznz_u64(&x6, x3, arg1, x4); + fiat_p256_cmovznz_u64(&x7, x3, (arg2[0]), (arg3[0])); + fiat_p256_cmovznz_u64(&x8, x3, (arg2[1]), (arg3[1])); + fiat_p256_cmovznz_u64(&x9, x3, (arg2[2]), (arg3[2])); + fiat_p256_cmovznz_u64(&x10, x3, (arg2[3]), (arg3[3])); + fiat_p256_cmovznz_u64(&x11, x3, (arg2[4]), (arg3[4])); + fiat_p256_addcarryx_u64(&x12, &x13, 0x0, 0x1, (~(arg2[0]))); + fiat_p256_addcarryx_u64(&x14, &x15, x13, 0x0, (~(arg2[1]))); + fiat_p256_addcarryx_u64(&x16, &x17, x15, 0x0, (~(arg2[2]))); + fiat_p256_addcarryx_u64(&x18, &x19, x17, 0x0, (~(arg2[3]))); + fiat_p256_addcarryx_u64(&x20, &x21, x19, 0x0, (~(arg2[4]))); + fiat_p256_cmovznz_u64(&x22, x3, (arg3[0]), x12); + fiat_p256_cmovznz_u64(&x23, x3, (arg3[1]), x14); + fiat_p256_cmovznz_u64(&x24, x3, (arg3[2]), x16); + fiat_p256_cmovznz_u64(&x25, x3, (arg3[3]), x18); + fiat_p256_cmovznz_u64(&x26, x3, (arg3[4]), x20); + fiat_p256_cmovznz_u64(&x27, x3, (arg4[0]), (arg5[0])); + fiat_p256_cmovznz_u64(&x28, x3, (arg4[1]), (arg5[1])); + fiat_p256_cmovznz_u64(&x29, x3, (arg4[2]), (arg5[2])); + fiat_p256_cmovznz_u64(&x30, x3, (arg4[3]), (arg5[3])); + fiat_p256_addcarryx_u64(&x31, &x32, 0x0, x27, x27); + fiat_p256_addcarryx_u64(&x33, &x34, x32, x28, x28); + fiat_p256_addcarryx_u64(&x35, &x36, x34, x29, x29); + fiat_p256_addcarryx_u64(&x37, &x38, x36, x30, x30); + fiat_p256_subborrowx_u64(&x39, &x40, 0x0, x31, UINT64_C(0xffffffffffffffff)); + fiat_p256_subborrowx_u64(&x41, &x42, x40, x33, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u64(&x43, &x44, x42, x35, 0x0); + fiat_p256_subborrowx_u64(&x45, &x46, x44, x37, UINT64_C(0xffffffff00000001)); + fiat_p256_subborrowx_u64(&x47, &x48, x46, x38, 0x0); + x49 = (arg4[3]); + x50 = (arg4[2]); + x51 = (arg4[1]); + x52 = (arg4[0]); + fiat_p256_subborrowx_u64(&x53, &x54, 0x0, 0x0, x52); + fiat_p256_subborrowx_u64(&x55, &x56, x54, 0x0, x51); + fiat_p256_subborrowx_u64(&x57, &x58, x56, 0x0, x50); + fiat_p256_subborrowx_u64(&x59, &x60, x58, 0x0, x49); + fiat_p256_cmovznz_u64(&x61, x60, 0x0, UINT64_C(0xffffffffffffffff)); + fiat_p256_addcarryx_u64(&x62, &x63, 0x0, x53, x61); + fiat_p256_addcarryx_u64(&x64, &x65, x63, x55, (x61 & UINT32_C(0xffffffff))); + fiat_p256_addcarryx_u64(&x66, &x67, x65, x57, 0x0); + fiat_p256_addcarryx_u64(&x68, &x69, x67, x59, (x61 & UINT64_C(0xffffffff00000001))); + fiat_p256_cmovznz_u64(&x70, x3, (arg5[0]), x62); + fiat_p256_cmovznz_u64(&x71, x3, (arg5[1]), x64); + fiat_p256_cmovznz_u64(&x72, x3, (arg5[2]), x66); + fiat_p256_cmovznz_u64(&x73, x3, (arg5[3]), x68); + x74 = (fiat_p256_uint1)(x22 & 0x1); + fiat_p256_cmovznz_u64(&x75, x74, 0x0, x7); + fiat_p256_cmovznz_u64(&x76, x74, 0x0, x8); + fiat_p256_cmovznz_u64(&x77, x74, 0x0, x9); + fiat_p256_cmovznz_u64(&x78, x74, 0x0, x10); + fiat_p256_cmovznz_u64(&x79, x74, 0x0, x11); + fiat_p256_addcarryx_u64(&x80, &x81, 0x0, x22, x75); + fiat_p256_addcarryx_u64(&x82, &x83, x81, x23, x76); + fiat_p256_addcarryx_u64(&x84, &x85, x83, x24, x77); + fiat_p256_addcarryx_u64(&x86, &x87, x85, x25, x78); + fiat_p256_addcarryx_u64(&x88, &x89, x87, x26, x79); + fiat_p256_cmovznz_u64(&x90, x74, 0x0, x27); + fiat_p256_cmovznz_u64(&x91, x74, 0x0, x28); + fiat_p256_cmovznz_u64(&x92, x74, 0x0, x29); + fiat_p256_cmovznz_u64(&x93, x74, 0x0, x30); + fiat_p256_addcarryx_u64(&x94, &x95, 0x0, x70, x90); + fiat_p256_addcarryx_u64(&x96, &x97, x95, x71, x91); + fiat_p256_addcarryx_u64(&x98, &x99, x97, x72, x92); + fiat_p256_addcarryx_u64(&x100, &x101, x99, x73, x93); + fiat_p256_subborrowx_u64(&x102, &x103, 0x0, x94, UINT64_C(0xffffffffffffffff)); + fiat_p256_subborrowx_u64(&x104, &x105, x103, x96, UINT32_C(0xffffffff)); + fiat_p256_subborrowx_u64(&x106, &x107, x105, x98, 0x0); + fiat_p256_subborrowx_u64(&x108, &x109, x107, x100, UINT64_C(0xffffffff00000001)); + fiat_p256_subborrowx_u64(&x110, &x111, x109, x101, 0x0); + fiat_p256_addcarryx_u64(&x112, &x113, 0x0, x6, 0x1); + x114 = ((x80 >> 1) | ((x82 << 63) & UINT64_C(0xffffffffffffffff))); + x115 = ((x82 >> 1) | ((x84 << 63) & UINT64_C(0xffffffffffffffff))); + x116 = ((x84 >> 1) | ((x86 << 63) & UINT64_C(0xffffffffffffffff))); + x117 = ((x86 >> 1) | ((x88 << 63) & UINT64_C(0xffffffffffffffff))); + x118 = ((x88 & UINT64_C(0x8000000000000000)) | (x88 >> 1)); + fiat_p256_cmovznz_u64(&x119, x48, x39, x31); + fiat_p256_cmovznz_u64(&x120, x48, x41, x33); + fiat_p256_cmovznz_u64(&x121, x48, x43, x35); + fiat_p256_cmovznz_u64(&x122, x48, x45, x37); + fiat_p256_cmovznz_u64(&x123, x111, x102, x94); + fiat_p256_cmovznz_u64(&x124, x111, x104, x96); + fiat_p256_cmovznz_u64(&x125, x111, x106, x98); + fiat_p256_cmovznz_u64(&x126, x111, x108, x100); + *out1 = x112; + out2[0] = x7; + out2[1] = x8; + out2[2] = x9; + out2[3] = x10; + out2[4] = x11; + out3[0] = x114; + out3[1] = x115; + out3[2] = x116; + out3[3] = x117; + out3[4] = x118; + out4[0] = x119; + out4[1] = x120; + out4[2] = x121; + out4[3] = x122; + out5[0] = x123; + out5[1] = x124; + out5[2] = x125; + out5[3] = x126; +} + +/* + * The function fiat_p256_divstep_precomp returns the precomputed value for Bernstein-Yang-inversion (in montgomery form). + * + * Postconditions: + * eval (from_montgomery out1) = ⌊(m - 1) / 2⌋^(if ⌊log2 m⌋ + 1 < 46 then ⌊(49 * (⌊log2 m⌋ + 1) + 80) / 17⌋ else ⌊(49 * (⌊log2 m⌋ + 1) + 57) / 17⌋) + * 0 ≤ eval out1 < m + * + * Output Bounds: + * out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] + */ +static FIAT_P256_FIAT_INLINE void fiat_p256_divstep_precomp(uint64_t out1[4]) { + out1[0] = UINT64_C(0x67ffffffb8000000); + out1[1] = UINT64_C(0xc000000038000000); + out1[2] = UINT64_C(0xd80000007fffffff); + out1[3] = UINT64_C(0x2fffffffffffffff); +} diff -Nru temporalio-1.3.0/vendor/rustix/benches/mod.rs temporalio-1.3.0/vendor/rustix/benches/mod.rs --- temporalio-1.3.0/vendor/rustix/benches/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/benches/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -18,7 +18,10 @@ target_os = "wasi", ))] fn main() { - unimplemented!("Add --cfg=criterion to RUSTFLAGS and enable the \"fs\", \"time\", and \"process\" cargo features.") + unimplemented!( + "Add --cfg=criterion to RUSTFLAGS and enable the \"fs\", \"time\", and \"process\" cargo \ + features." + ) } #[cfg(not(any( @@ -47,11 +50,11 @@ use criterion::Criterion; pub(super) fn simple_statat(c: &mut Criterion) { - use rustix::fs::{cwd, statat, AtFlags}; + use rustix::fs::{statat, AtFlags, CWD}; c.bench_function("simple statat", |b| { b.iter(|| { - statat(cwd(), "/", AtFlags::empty()).unwrap(); + statat(CWD, "/", AtFlags::empty()).unwrap(); }) }); } @@ -95,11 +98,11 @@ } pub(super) fn simple_statat_cstr(c: &mut Criterion) { - use rustix::fs::{cwd, statat, AtFlags}; + use rustix::fs::{statat, AtFlags, CWD}; c.bench_function("simple statat cstr", |b| { b.iter(|| { - statat(cwd(), rustix::cstr!("/"), AtFlags::empty()).unwrap(); + statat(CWD, rustix::cstr!("/"), AtFlags::empty()).unwrap(); }) }); } diff -Nru temporalio-1.3.0/vendor/rustix/build.rs temporalio-1.3.0/vendor/rustix/build.rs --- temporalio-1.3.0/vendor/rustix/build.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/build.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,33 +1,20 @@ -#[cfg(feature = "cc")] -use cc::Build; use std::env::var; use std::io::Write; -/// The directory for out-of-line (“outlineâ€) libraries. -const OUTLINE_PATH: &str = "src/backend/linux_raw/arch/outline"; +/// The directory for inline asm. +const ASM_PATH: &str = "src/backend/linux_raw/arch/asm"; fn main() { // Don't rerun this on changes other than build.rs, as we only depend on // the rustc version. println!("cargo:rerun-if-changed=build.rs"); - use_feature_or_nothing("rustc_attrs"); - - // Features only used in no-std configurations. - #[cfg(not(feature = "std"))] - { - use_feature_or_nothing("const_raw_ptr_deref"); - use_feature_or_nothing("core_ffi_c"); - use_feature_or_nothing("core_c_str"); - use_feature_or_nothing("alloc_c_string"); - } - // Gather target information. let arch = var("CARGO_CFG_TARGET_ARCH").unwrap(); - let vendor = var("CARGO_CFG_TARGET_VENDOR").unwrap(); - let asm_name = format!("{}/{}.s", OUTLINE_PATH, arch); - let asm_name_present = std::fs::metadata(&asm_name).is_ok(); - let target_os = var("CARGO_CFG_TARGET_OS").unwrap(); + let env = var("CARGO_CFG_TARGET_ENV").unwrap(); + let inline_asm_name = format!("{}/{}.rs", ASM_PATH, arch); + let inline_asm_name_present = std::fs::metadata(inline_asm_name).is_ok(); + let os = var("CARGO_CFG_TARGET_OS").unwrap(); let pointer_width = var("CARGO_CFG_TARGET_POINTER_WIDTH").unwrap(); let endian = var("CARGO_CFG_TARGET_ENDIAN").unwrap(); @@ -35,24 +22,25 @@ let is_x32 = arch == "x86_64" && pointer_width == "32"; let is_arm64_ilp32 = arch == "aarch64" && pointer_width == "32"; let is_powerpc64be = arch == "powerpc64" && endian == "big"; - let is_mipseb = arch == "mips" && endian == "big"; - let is_mips64eb = arch == "mips64" && endian == "big"; + let is_mipseb = (arch == "mips" || arch == "mips32r6") && endian == "big"; + let is_mips64eb = arch.contains("mips64") && endian == "big"; let is_unsupported_abi = is_x32 || is_arm64_ilp32 || is_powerpc64be || is_mipseb || is_mips64eb; // Check for `--features=use-libc`. This allows crate users to enable the // libc backend. let feature_use_libc = var("CARGO_FEATURE_USE_LIBC").is_ok(); - // Check for `--features=rustc-dep-of-std`. This is used when rustix is - // being used to build std, in which case `can_compile` doesn't work - // because `core` isn't available yet, but also, we can assume we have a - // recent compiler. - let feature_rustc_dep_of_std = var("CARGO_FEATURE_RUSTC_DEP_OF_STD").is_ok(); - // Check for `RUSTFLAGS=--cfg=rustix_use_libc`. This allows end users to // enable the libc backend even if rustix is depended on transitively. let cfg_use_libc = var("CARGO_CFG_RUSTIX_USE_LIBC").is_ok(); + // Check for eg. `RUSTFLAGS=--cfg=rustix_use_experimental_features`. This + // is a rustc flag rather than a cargo feature flag because it's + // experimental and not something we want accidentally enabled via + // `--all-features`. + let rustix_use_experimental_features = + var("CARGO_CFG_RUSTIX_USE_EXPERIMENTAL_FEATURES").is_ok(); + // Check for eg. `RUSTFLAGS=--cfg=rustix_use_experimental_asm`. This is a // rustc flag rather than a cargo feature flag because it's experimental // and not something we want accidentally enabled via `--all-features`. @@ -62,44 +50,49 @@ // libc FFI calls, so if we're running under miri, use the libc backend. let miri = var("CARGO_CFG_MIRI").is_ok(); + // If experimental features are enabled, auto-detect and use available + // features. + if rustix_use_experimental_features { + use_feature_or_nothing("rustc_attrs"); + use_feature_or_nothing("core_intrinsics"); + } + + // Features needed only in no-std configurations. + #[cfg(not(feature = "std"))] + { + use_feature_or_nothing("core_c_str"); + use_feature_or_nothing("core_ffi_c"); + use_feature_or_nothing("alloc_c_string"); + use_feature_or_nothing("alloc_ffi"); + } + + // Feature needed for testing. + if use_static_assertions() { + use_feature("static_assertions"); + } + // If the libc backend is requested, or if we're not on a platform for // which we have linux_raw support, use the libc backend. // // For now Android uses the libc backend; in theory it could use the // linux_raw backend, but to do that we'll need to figure out how to // install the toolchain for it. - if feature_use_libc + let libc = feature_use_libc || cfg_use_libc - || target_os != "linux" - || !asm_name_present + || os != "linux" + || !inline_asm_name_present || is_unsupported_abi || miri - { + || ((arch == "powerpc64" || arch == "mips" || arch == "mips64" || arch == "mips64r6") + && !rustix_use_experimental_asm); + if libc { // Use the libc backend. use_feature("libc"); } else { // Use the linux_raw backend. use_feature("linux_raw"); - use_feature_or_nothing("core_intrinsics"); - - // Use inline asm if we have it, or outline asm otherwise. On 32-bit - // x86 our asm support requires naked functions. On PowerPC and MIPS, - // Rust's inline asm is considered experimental, so only use it if - // `--cfg=rustix_use_experimental_asm` is given. - if (feature_rustc_dep_of_std || vendor == "mustang" || can_compile("use std::arch::asm;")) - && (arch != "x86" || has_feature("naked_functions")) - && ((arch != "powerpc64" && arch != "mips" && arch != "mips64") - || rustix_use_experimental_asm) - { - use_feature("asm"); - if arch == "x86" { - use_feature("naked_functions"); - } - if rustix_use_experimental_asm { - use_feature("asm_experimental_arch"); - } - } else { - link_in_librustix_outline(&arch, &asm_name); + if rustix_use_experimental_asm { + use_feature("asm_experimental_arch"); } } @@ -110,44 +103,50 @@ // Rust's libc crate groups some OS's together which have similar APIs; // create similarly-named features to make `cfg` tests more concise. - if target_os == "freebsd" || target_os == "dragonfly" { + let freebsdlike = os == "freebsd" || os == "dragonfly"; + if freebsdlike { use_feature("freebsdlike"); } - if target_os == "openbsd" || target_os == "netbsd" { + let netbsdlike = os == "openbsd" || os == "netbsd"; + if netbsdlike { use_feature("netbsdlike"); } - if target_os == "macos" || target_os == "ios" || target_os == "tvos" || target_os == "watchos" { + let apple = os == "macos" || os == "ios" || os == "tvos" || os == "watchos"; + if apple { use_feature("apple"); } - if target_os == "linux" - || target_os == "l4re" - || target_os == "android" - || target_os == "emscripten" - { + if os == "linux" || os == "l4re" || os == "android" || os == "emscripten" { use_feature("linux_like"); } - if target_os == "solaris" || target_os == "illumos" { + if os == "solaris" || os == "illumos" { use_feature("solarish"); } - if target_os == "macos" - || target_os == "ios" - || target_os == "tvos" - || target_os == "watchos" - || target_os == "freebsd" - || target_os == "dragonfly" - || target_os == "openbsd" - || target_os == "netbsd" - { + if apple || freebsdlike || netbsdlike { use_feature("bsd"); } // Add some additional common target combinations. - if target_os == "android" || target_os == "linux" { + + // Android and "regular" Linux both use the Linux kernel. + if os == "android" || os == "linux" { use_feature("linux_kernel"); } - if target_os == "wasi" { - use_feature_or_nothing("wasi_ext"); + // These platforms have a 32-bit `time_t`. + if libc + && (arch == "arm" + || arch == "mips" + || arch == "sparc" + || arch == "x86" + || (arch == "wasm32" && os == "emscripten")) + && (apple + || os == "android" + || os == "emscripten" + || os == "haiku" + || env == "gnu" + || (env == "musl" && arch == "x86")) + { + use_feature("fix_y2038"); } println!("cargo:rerun-if-env-changed=CARGO_CFG_RUSTIX_USE_EXPERIMENTAL_ASM"); @@ -160,59 +159,9 @@ println!("cargo:rerun-if-env-changed=CARGO_CFG_MIRI"); } -/// Link in the desired version of librustix_outline_{arch}.a, containing the -/// outline assembly code for making syscalls. -fn link_in_librustix_outline(arch: &str, asm_name: &str) { - let name = format!("rustix_outline_{}", arch); - let profile = var("PROFILE").unwrap(); - let to = format!("{}/{}/lib{}.a", OUTLINE_PATH, profile, name); - println!("cargo:rerun-if-changed={}", to); - - // If "cc" is not enabled, use a pre-built library. - #[cfg(not(feature = "cc"))] - { - let _ = asm_name; - println!("cargo:rustc-link-search={}/{}", OUTLINE_PATH, profile); - println!("cargo:rustc-link-lib=static={}", name); - } - - // If "cc" is enabled, build the library from source, update the pre-built - // version, and assert that the pre-built version is checked in. - #[cfg(feature = "cc")] - { - let out_dir = var("OUT_DIR").unwrap(); - // Add `-gdwarf-3` so that we always get the same output, regardless of - // the Rust version we're using. DWARF3 is the version used in - // Rust 1.48 and is entirely adequate for our simple needs here. - let mut build = Build::new(); - if profile == "debug" { - build.flag("-gdwarf-3"); - } - build.file(&asm_name); - build.compile(&name); - println!("cargo:rerun-if-changed={}", asm_name); - if std::fs::metadata(".git").is_ok() { - let from = format!("{}/lib{}.a", out_dir, name); - let prev_metadata = std::fs::metadata(&to); - std::fs::copy(&from, &to).unwrap(); - assert!( - prev_metadata.is_ok(), - "{} didn't previously exist; please inspect the new file and `git add` it", - to - ); - assert!( - std::process::Command::new("git") - .arg("diff") - .arg("--quiet") - .arg(&to) - .status() - .unwrap() - .success(), - "{} changed; please inspect the change and `git commit` it", - to - ); - } - } +fn use_static_assertions() -> bool { + // `offset_from` was made const in Rust 1.65. + can_compile("const unsafe fn foo(p: *const u8) -> isize { p.offset_from(p) }") } fn use_thumb_mode() -> bool { @@ -246,8 +195,8 @@ let rustc = var("RUSTC").unwrap(); let target = var("TARGET").unwrap(); - // Use `RUSTC_WRAPPER` if it's set, unless it's set to an empty string, - // as documented [here]. + // Use `RUSTC_WRAPPER` if it's set, unless it's set to an empty string, as + // documented [here]. // [here]: https://doc.rust-lang.org/cargo/reference/environment-variables.html#environment-variables-cargo-reads let wrapper = var("RUSTC_WRAPPER") .ok() diff -Nru temporalio-1.3.0/vendor/rustix/.cargo-checksum.json temporalio-1.3.0/vendor/rustix/.cargo-checksum.json --- temporalio-1.3.0/vendor/rustix/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -3,257 +3,303 @@ "CODE_OF_CONDUCT.md": "f210602311e3f74b32f46237fd55f4ce36d798e85e3db1432ec667f63a7ffc44", "CONTRIBUTING.md": "fb570c76cf924cd75b77bed52b0dbe1e87ce224dc3428c48d98301710dcc331e", "COPYRIGHT": "377c2e7c53250cc5905c0b0532d35973392af16ffb9596a41d99d202cf3617c9", - "Cargo.toml": "f0c6bcf55d3f013e623866d9fc4a60552d64dea922a1f6cba29e13ac55dd3208", + "Cargo.toml": "5473eb2eb17b75a7a5b22223309f10a3e3a3a935d6b61e8dbfe15f1696030680", "LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2", "LICENSE-Apache-2.0_WITH_LLVM-exception": "268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5", "LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3", "ORG_CODE_OF_CONDUCT.md": "a62b69bf86e605ee1bcbb2f0a12ba79e4cebb6983a7b6491949750aecc4f2178", - "README.md": "99c383b949ab63bae97fa0f4629d2205fdbaada50f5b648a70373ca5dcef22b2", + "README.md": "20e6d4bc5a33c81e9a4a04abe8ac611658deb4ab0794cd792f0568f287b68da7", "SECURITY.md": "4d75afb09dd28eb5982e3a1f768ee398d90204669ceef3240a16b31dcf04148a", - "benches/mod.rs": "55b71073e5681b309bc4f439435ac05d1e052bba2ea6accf05bca9bf496d4bd0", - "build.rs": "a322dd310c2b30a966c410ab1557b560b302246d2f2734fcecdc653f4307edbe", - "src/backend/libc/c.rs": "7aec21aa56faad3b87674855ed6f54242aa5660905e6b2bcdaa0f8dc0f19df56", - "src/backend/libc/conv.rs": "77cc96b7242c4c9cc54083d57d27a926a20b159196d1db98fdf943c9b8c7d0c6", - "src/backend/libc/fs/dir.rs": "5411a2baa88b3d509e0f1b9e44aa6e20f4791510497a16acdf4cd32324b5dd48", - "src/backend/libc/fs/inotify.rs": "fbe35da10eec6c712ee752b868f04d1d1ef03188ef706b9c44b7f338152df744", - "src/backend/libc/fs/makedev.rs": "3a4ab3f6c7bd221a0bf7cdf7392c97cac7eba072c2a699c2dc68422ff48ab44f", - "src/backend/libc/fs/mod.rs": "ba3c79b8918eab2a4c962e353d2b27d3cd96b201f9e527ce0b70b7a558ac596b", - "src/backend/libc/fs/syscalls.rs": "98ce2a39b792f1358d1a5198a670feafb5620e2e3bf84e7003a13e9fd6432905", - "src/backend/libc/fs/types.rs": "fafa70493a2efcc18612296d4f1ca9303d1867be01bcabed14dffa9e8971e8d2", - "src/backend/libc/io/epoll.rs": "162329053d6fb0f3c9d671526fd120ec89d9347fb8aada8b8487095166d64710", - "src/backend/libc/io/errno.rs": "8c6491590339a21c732b325904ece24ac39b1cd1a2b04728a9ff90ec904c01aa", - "src/backend/libc/io/io_slice.rs": "34da1bcc17993318fa93b7e71ff36116044ac12a031963710af84c3ed1bc443a", - "src/backend/libc/io/mod.rs": "afcf57d6bbb4bb0be97c9597a298eaaa58a8838f07212e3051612fa25993bd9c", - "src/backend/libc/io/poll_fd.rs": "d8092bca9cb0317b3a9bb418a55abf0e868f1c7267cacc97454a5053ff192a05", - "src/backend/libc/io/syscalls.rs": "0c5fea9eca5baa1d5bb9fe1cc486c16ff6f7347c9533e5d35c272611126df52d", - "src/backend/libc/io/types.rs": "eba054b7e441febf289f7c656c0b465ad9982afd7e3e85c74de4992e1ee76d48", - "src/backend/libc/io/windows_syscalls.rs": "741f524b384d59e703b278739563ab04273dbb48c062349353dd9b7cf9ed2332", - "src/backend/libc/io_lifetimes.rs": "eebc6adc10593933e9ab14c59d29793f4ec6e4403a00bbcaaf3ee81373ae924d", + "benches/mod.rs": "7abf49bced798168a4f57916654305a6c5d048d12e0ad43d30ab14f24b5e527a", + "build.rs": "36956bd7e6b5a2d5e66e9a91eae41d76bd75b4a25d5427dc22ad48307ef25cc1", + "src/backend/libc/c.rs": "3c6fd97c1ce74d13b18e7e0de489038149c7f1d776459994c445d20896e84cb3", + "src/backend/libc/conv.rs": "71cb0f653fa95705bcea2173840b78dd02f94735db970f8081231320e0478cb9", + "src/backend/libc/event/epoll.rs": "93260ad4105dacd9b27b2499e5e81bad8071e22e3f9468bf417d63962feb8579", + "src/backend/libc/event/mod.rs": "7f8547c599b8263eb791890bbe4a0b22fe2676d007ffdcc3e07b2e48d1c994db", + "src/backend/libc/event/poll_fd.rs": "4f614e8811f2a4b85bcd0e65029cbde460adeb7351be9dec3ce84e615a498702", + "src/backend/libc/event/syscalls.rs": "3be2f52fcabad16cf4d554f56d70fb47ac9dee61feabb3d883e701d53745017d", + "src/backend/libc/event/types.rs": "f258bd98a4095b7b278bb267e572b5e599d727a83f42a0508231ac6a396bb795", + "src/backend/libc/event/windows_syscalls.rs": "ebfac665c6676c4b803134ab8806be8aa2e96bdbc7799a19c544cd9069b35787", + "src/backend/libc/fs/dir.rs": "4ff9b5f3b6fad06cfb641cf74511c4b80186b426e8c2d67a1b6cba08466b5d4f", + "src/backend/libc/fs/inotify.rs": "bd52622a2f3b596f1c3216b93e65af05e57a8f278e62aeb33c536a66a7f16c7e", + "src/backend/libc/fs/makedev.rs": "89c679a0ef18dd41b3c6223bce0f329ad35bf6cadbf16e47b33fad3f312ba4a6", + "src/backend/libc/fs/mod.rs": "5fa5a19401054cbf8d339192508aa7ad60fb2b0543256dbfbda128c05dedf645", + "src/backend/libc/fs/syscalls.rs": "10aa31d90467588e647c183d90924462713037306969b833ee90f0bb6f8176eb", + "src/backend/libc/fs/types.rs": "e3cb0246d797c3e7c322f1de95a01d8372c793f8896f4a20d507d73e8a474414", + "src/backend/libc/io/errno.rs": "01783934c204b775c12a4da055405ab543f63e5b127b55e305efc47708c7f679", + "src/backend/libc/io/mod.rs": "746647bd864e4ec7717925b6d176cebdb392b7d015070244cc48d92780351dd6", + "src/backend/libc/io/syscalls.rs": "fd71e78eef9f2ae247fb7d5c92c54d4c32161784dc258848db458f89023faf41", + "src/backend/libc/io/types.rs": "2248c2ba2c4b6ecbbb9f6c8dc2814734e8cd05e664c2aab409a243e034ff338b", + "src/backend/libc/io/windows_syscalls.rs": "73d3e609d30dfbb1a032f3ac667b3c65cb8a05a1d54c90bbb253021c85fd496a", "src/backend/libc/io_uring/mod.rs": "2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952", - "src/backend/libc/io_uring/syscalls.rs": "0f7ffc079f511b200d536e348d6c6945eeb4908db721e5ca0db6cc5fe96eccc4", + "src/backend/libc/io_uring/syscalls.rs": "5af8146d5971c833e6fd657f652c618b31f854e1b0811864fba9b658cb633e19", "src/backend/libc/mm/mod.rs": "8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7", - "src/backend/libc/mm/syscalls.rs": "190165e683ffc9ee2085a19086d2f72bad954d50124eb0eed192faa512e67a1b", - "src/backend/libc/mm/types.rs": "22367f983585b2245621f7994a1585746ac446eb31669654d4de7195dffbfb3a", - "src/backend/libc/mod.rs": "49b9fe81918a05a066ecbcec4a72ed945c4129ae6f86007e94af653d3834f71d", - "src/backend/libc/net/addr.rs": "afd79fcc35b48bda21e2a210fa030387e9e3b8c741903ff75c459102eb6e5f36", - "src/backend/libc/net/ext.rs": "af0fb192e1055420937196af2e314869173d4f50e970af4cc85f6f261e78ff20", - "src/backend/libc/net/mod.rs": "e88d9ca079089857c9b794ed8ab5bb970e779cfe7bd0bdcb402edcd2f48efb5d", - "src/backend/libc/net/msghdr.rs": "bdce9e21a6e7dd60e5fab9795b73ab49d20358bb0a9b8da65ca4f762693b3709", - "src/backend/libc/net/read_sockaddr.rs": "21c0f0e3b295ad4183eed16f8794f1fa1ede5ac5f8a2565510be2262d3f42b0e", - "src/backend/libc/net/send_recv.rs": "d0ffe3aebccab498b7fdf6cfb0382fc10576ed0b8563d696a20878d2c01f0a28", - "src/backend/libc/net/syscalls.rs": "b1309c930a4cb557f7ab24cdcf060b3fc0c06cecf9d2030b79b782c1bff605f4", - "src/backend/libc/net/types.rs": "8acd35d92ef2afb148e2dc41dab184d7f302b770a214e09e58c065c476fe858f", - "src/backend/libc/net/write_sockaddr.rs": "33c3d7304713cb63f8fa398f5f7c084fc1d9fbb6907dd19902a90e8ec64ad41f", - "src/backend/libc/offset.rs": "73f01763fff883c42c014fe3f471585512777b431a77b6f8116fc20624ece085", - "src/backend/libc/param/auxv.rs": "7d71f224f7d9c547b6b5e1425cad03466328b7b8ad2a62f49d9e29e075061e43", + "src/backend/libc/mm/syscalls.rs": "858e5bb3bc850b6a2d5ce69b3c8e40ab7cf75d392fe3a022119e5edd0c538db5", + "src/backend/libc/mm/types.rs": "db3b5af83e07a68eaa7f70e04871e818acd5542c135e92b4a38af555e076540e", + "src/backend/libc/mod.rs": "e572b4461d4fe9a399b5db9c8395d6559ffe69586c76506d53d5d7fb37bb87cf", + "src/backend/libc/mount/mod.rs": "8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7", + "src/backend/libc/mount/syscalls.rs": "1bc87501a078616d0190d2e85de55f3f968b8cb79d49bd9eb839a350eed26089", + "src/backend/libc/mount/types.rs": "6744dc82723d2e08af1d69b7421642bc1b687d89f9116643df9d2e7a9b1d1c39", + "src/backend/libc/net/addr.rs": "72f504c3a97eaa49d3013db30b55c5c8f711a097b98023ffcbb527d04cf0a014", + "src/backend/libc/net/ext.rs": "d1274fd3ab84bbb8b73f45efe6dbd63f82b09d889a6b2aae07f15970dbb6c6c2", + "src/backend/libc/net/mod.rs": "605b818c6f4c536c96e052d9b843eeca79dccd1d3cf1c8b87e60c8539b8122b4", + "src/backend/libc/net/msghdr.rs": "f82825d40d8872e2e804cde32bbcc68bef43a5f48ad857fb1030550c4eb44838", + "src/backend/libc/net/read_sockaddr.rs": "62b8a444cb9a0a9031d462f96f401db14b851551dd3dc58eec06570d7fec06c2", + "src/backend/libc/net/send_recv.rs": "eb8b0b3d291a176b5a2e4818b683819aee395d860bd566b898c2e1ba4e115886", + "src/backend/libc/net/syscalls.rs": "15b8514e725068a7e45084e0c1ce2bd93c191ff4870544a8f79760d27e0db5cc", + "src/backend/libc/net/write_sockaddr.rs": "1b53ba3d8f3b7353e6c888636e4990c837b078796b8120041e5497342dc9516c", + "src/backend/libc/param/auxv.rs": "fdc85b7c33bcd05a16471e42eb4228c48c98c642443635ba5fc3e9a45438d6d3", "src/backend/libc/param/mod.rs": "5234b8f1bcb886cca6ea003d411d75eaeebe58deedd80e3441354bf46ed85d4d", - "src/backend/libc/process/cpu_set.rs": "a5041e8d96738f092989ae38bbdb09ba0d74f5956d340fef48044e24ee6fec81", - "src/backend/libc/process/mod.rs": "787018aba4adb2cc1f9176faf154a1a8d7943e4cad36be6e43fc03ce355572d6", - "src/backend/libc/process/syscalls.rs": "f191f647d3b22e80f325a2bb384356176aa8e730d14620e8c4c8c89f81ac2a64", - "src/backend/libc/process/types.rs": "4e904c18127c202a70aaf275abf7984ad95e6420dd676f3a534f3969d9037d78", - "src/backend/libc/process/wait.rs": "36e84c05ae3a27b96da9521678b72ab004fe37a8b0d092a0b6f810015806c4d2", + "src/backend/libc/pid/mod.rs": "2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952", + "src/backend/libc/pid/syscalls.rs": "49ea679b96c0741d048e82964038f9a931bc3cf3a0b59c7db3df89629b9c49e6", + "src/backend/libc/pipe/mod.rs": "8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7", + "src/backend/libc/pipe/syscalls.rs": "0bf55fdd9f4e351ec8fbd8cf895ed44f513d230ffd51929229c68d87ff2b18ab", + "src/backend/libc/pipe/types.rs": "ba9f7827ebbf4c2488ccd612beb59b66ced3be2e14a467660bc60aa0332be11d", + "src/backend/libc/prctl/mod.rs": "2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952", + "src/backend/libc/prctl/syscalls.rs": "8a2684f444a7555098dce2b92270d81cefdae902716c6e5d59bd7b0657e8a29d", + "src/backend/libc/process/cpu_set.rs": "b3d36b01b53b0b6c61a20ed8a69d48eccdd90cc17f82f2926ef1e844f002d0b7", + "src/backend/libc/process/mod.rs": "d7dc401255bad2e55ffff365339cdc3aad306861d269ad727a817d3cd7763166", + "src/backend/libc/process/syscalls.rs": "b47392bd1aad96ca93ce421d8877e8b6e6da725db7bb521936ca07e4d1bec114", + "src/backend/libc/process/types.rs": "e8e54a21e7450157a8471571727c1c7af169ede372329c0e5d82a2e0193ba76e", + "src/backend/libc/process/wait.rs": "0cc556aed976b4bbb3965f74fd76b8216c755fce25043b7b21ce54afa07c9773", "src/backend/libc/pty/mod.rs": "2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952", - "src/backend/libc/pty/syscalls.rs": "3232e2ed941ad3399d15ab852ea539e8d76d34ffc0b32eb43c62f5b7d8f705d4", + "src/backend/libc/pty/syscalls.rs": "c4ec64720854f3b83307f67dfc75ab911b3a0378cc2e519054aae045d181f445", "src/backend/libc/rand/mod.rs": "8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7", - "src/backend/libc/rand/syscalls.rs": "5cbb8ec93d68c04fbd1b22736905ed070de6a7b68c550948da3c672c1d049935", - "src/backend/libc/rand/types.rs": "c59e156eafcc97558a1bc5210e3438e9850512d1dfb4bb8e3d344409c12a9a54", - "src/backend/libc/termios/mod.rs": "63a1e559981848581bbacad2adb567e5eb62d17caa2d8f826e977dc053ce26bb", - "src/backend/libc/termios/syscalls.rs": "17a5a559cda40707cc846e96c5b2c6fb284dac3a2b18c44dbcb5bc53787f42d3", - "src/backend/libc/termios/types.rs": "7c171edc9277466aa12518bd6f5ad9f38d4fa3202572523e384c138d3671d4d2", + "src/backend/libc/rand/syscalls.rs": "78c7201e6bcb75e9cab9486d1878861319f865de2b2c46437be68690bd17bf13", + "src/backend/libc/rand/types.rs": "7d473c7ee8f19fbcec31f61b28ba6a68e1233f64f37b3b496d396c0197af63e1", + "src/backend/libc/system/mod.rs": "38563ea68829ca5a4b1b0695ac8a5c05718e85bdc88a36dc805efdfce45d3909", + "src/backend/libc/system/syscalls.rs": "846dfb59afe40bbfc78e57afa76f0616d62d25da2daadcd872aea6fa32aafc3b", + "src/backend/libc/system/types.rs": "6871e16aee14fe2ae03cea798c3e509ffe44778a9c0e5608fd73e2e015876d7e", + "src/backend/libc/termios/mod.rs": "2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952", + "src/backend/libc/termios/syscalls.rs": "848f17fbf5c37311ec538cf52314140ef2e89c174ef448bdfbceb525b9b40d11", "src/backend/libc/thread/mod.rs": "0de5f67a684b9fd7628d3009d2ea5fd51b8770e8b387eed14f59152157844287", - "src/backend/libc/thread/syscalls.rs": "f58ed92790c7cef29c09635e79c664c7f2260449a55dfbf0930b92697c2e2f0d", + "src/backend/libc/thread/syscalls.rs": "fe4dfeb072972eac5e2a8de05d7f5c33fd2580a4ce486c5003497d717bbfd176", "src/backend/libc/time/mod.rs": "38563ea68829ca5a4b1b0695ac8a5c05718e85bdc88a36dc805efdfce45d3909", - "src/backend/libc/time/syscalls.rs": "6d3202d524510170618f727ce1c96e1cf55f2a775172215f5834cf2a06565466", - "src/backend/libc/time/types.rs": "0414e977004abe604333607ad42c27549b2d5fb2d56a37b431f87dac330d16df", + "src/backend/libc/time/syscalls.rs": "f82e0725c5af8a52e61ee83aad2c77694f2f7a72ac1e6eb284109a70ac6edc38", + "src/backend/libc/time/types.rs": "e209e7e5485535d3f5d3494e9f84f5b5b69a052959709b8a61081604fb30fe60", + "src/backend/libc/ugid/mod.rs": "2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952", + "src/backend/libc/ugid/syscalls.rs": "8edf91b8790add23902c9f5418da6b0723a371677f29f490e0c8af852f0f1a0c", "src/backend/libc/winsock_c.rs": "3bf3884fd250eca806ffdf96da68e29c133a697810b78b333ea449e523e58562", - "src/backend/linux_raw/arch/inline/aarch64.rs": "67011427b3cecd29ee716113d952e70d63574c96d1d3ea3c75d46250bde9ca44", - "src/backend/linux_raw/arch/inline/arm.rs": "7760d51aef17a69a797eb96fd61f7fade0d55bc87ec9a3e77fa6bb6aebaecdbb", - "src/backend/linux_raw/arch/inline/mips.rs": "d00c84cfdb4e37bdee9a2daa0a7b3298afbb4ebe288702203cb43d9c2617012d", - "src/backend/linux_raw/arch/inline/mips64.rs": "ab5455c9b2511ba6b67a66873cd8b53bf77471249fd2779d6437ebb4934087b5", - "src/backend/linux_raw/arch/inline/mod.rs": "ed5c6c14d19556c1a2ca077608fa515ac85d760eb931dc8968b39137700159d8", - "src/backend/linux_raw/arch/inline/powerpc64.rs": "dcd12314184441f5f7705bea6b829103c7abc9062db366ae5584023a38252a36", - "src/backend/linux_raw/arch/inline/riscv64.rs": "58a58203e9cac2ed21e4a7b26692c5d56d3c2bcddb3f60a648efd18a02129f3c", - "src/backend/linux_raw/arch/inline/thumb.rs": "82b88c9a3b6837f28a738cc760fc2403e7014abdb2c35d2bdbc8073235ae2863", - "src/backend/linux_raw/arch/inline/x86.rs": "bfe81e7c527cdbcc98e4ec10c96f64ce543bb4d7ebdeb5ab020794f09e75545d", - "src/backend/linux_raw/arch/inline/x86_64.rs": "7c893ca306b3b8a5980c525dc5fa23187a0526bc9f7ac637204d88a1d596df5d", - "src/backend/linux_raw/arch/mod.rs": "7018e7d3bd2f3e6545baafcb75256505eb8297f025706ef662e4f3b12f1d8add", - "src/backend/linux_raw/arch/outline/aarch64.s": "84f066b6fe3cf25ed61c7aa420408c6d5a0b33a7c91b748ed81e47737567975f", - "src/backend/linux_raw/arch/outline/arm.s": "fa266bf9f4533da1e96c27c4ae5418c86f44074ac0c6afcff0404738e11365da", - "src/backend/linux_raw/arch/outline/mips.s": "3612ba84500f033650cbb3860241768cc0760c5693aadc8af01dd2f61c7d59ff", - "src/backend/linux_raw/arch/outline/mips64.s": "deaf2218e0d2c5c97d1d5000c2c6678bbbf5a28faeefd0fb04b04e1984c94185", - "src/backend/linux_raw/arch/outline/mod.rs": "3fcab403f297fd5160df6f4b7d8fd1d868267022c2f6e6448505bd363cb113ef", - "src/backend/linux_raw/arch/outline/nr_last.rs": "82d92b9ca8307c19d74ced1ae2c0b31f2a7c5db70fa31fdedb55d38a90601455", - "src/backend/linux_raw/arch/outline/powerpc64.s": "0847fa3f160846ee02771550667913734ba9773e2221f2279c4f296d6f5b7bd4", - "src/backend/linux_raw/arch/outline/riscv64.s": "ca5303c0c8af6de1f246d658003e270d4e29d6c68dd90c6eee372d045bdf7305", - "src/backend/linux_raw/arch/outline/x86.rs": "f7e12a0f3fe8e97acb1ade2c9e61d82542f00ad4d8fe684a8dcd9f30fd9ab5d4", - "src/backend/linux_raw/arch/outline/x86.s": "4604e3b41161802343e2e4c890fd2042098a901d95893ebe4c436f97fd47cad3", - "src/backend/linux_raw/arch/outline/x86_64.s": "a530084cd42ad8d4b2d36526f4e04f45a6e29ea49882e2c561ac2eeac16272bf", - "src/backend/linux_raw/c.rs": "1f1d97557db783e6d6d0a027f7d699308b483159efe081468d86a883d4df641b", - "src/backend/linux_raw/conv.rs": "980fe770d34eaf7c26a9ea8baeab45dc94666e1676c918d1c9d46b83adb68f3e", - "src/backend/linux_raw/elf.rs": "4550edde9ca096ac3ad929ace226fd5ead954da7ad01d22da43fdb976655f771", - "src/backend/linux_raw/fs/dir.rs": "b130249238fd989a2f04a13365092a0ead08e3552183c9297039875634577130", - "src/backend/linux_raw/fs/inotify.rs": "84753669fcadfcb66f9b363b6011ef1bf30be396f93299576640c2ed7486f8b3", + "src/backend/linux_raw/arch/asm/aarch64.rs": "67011427b3cecd29ee716113d952e70d63574c96d1d3ea3c75d46250bde9ca44", + "src/backend/linux_raw/arch/asm/arm.rs": "7760d51aef17a69a797eb96fd61f7fade0d55bc87ec9a3e77fa6bb6aebaecdbb", + "src/backend/linux_raw/arch/asm/mips.rs": "d00c84cfdb4e37bdee9a2daa0a7b3298afbb4ebe288702203cb43d9c2617012d", + "src/backend/linux_raw/arch/asm/mips32r6.rs": "6c2661361ba0ac5caa8458f502c6cca266ce59a43ab552b7882c07cb64b9d149", + "src/backend/linux_raw/arch/asm/mips64.rs": "ab5455c9b2511ba6b67a66873cd8b53bf77471249fd2779d6437ebb4934087b5", + "src/backend/linux_raw/arch/asm/mips64r6.rs": "a67262dc9cbd583ecfff93953726dabfd6574714d4646aff27582ff034a28cb9", + "src/backend/linux_raw/arch/asm/mod.rs": "1ac43073fc3d28879ab46d9220344785db4ef761a21d0357e4fe564157e6f1a6", + "src/backend/linux_raw/arch/asm/powerpc64.rs": "dcd12314184441f5f7705bea6b829103c7abc9062db366ae5584023a38252a36", + "src/backend/linux_raw/arch/asm/riscv64.rs": "58a58203e9cac2ed21e4a7b26692c5d56d3c2bcddb3f60a648efd18a02129f3c", + "src/backend/linux_raw/arch/asm/thumb.rs": "82b88c9a3b6837f28a738cc760fc2403e7014abdb2c35d2bdbc8073235ae2863", + "src/backend/linux_raw/arch/asm/x86.rs": "c5ac97f4dfe44af1cee43a0b6d87319e1e5441147bda790a5fd3abcdb80715f9", + "src/backend/linux_raw/arch/asm/x86_64.rs": "7c893ca306b3b8a5980c525dc5fa23187a0526bc9f7ac637204d88a1d596df5d", + "src/backend/linux_raw/arch/mod.rs": "31b3753c763ce3d2dd92db926123fc5eb6e0ba66a09f5574b6ebb11c836dcf6b", + "src/backend/linux_raw/c.rs": "1fd8558fccee6d548cb1bc93cceec39ce99133f46103fd75ccca405de2d2a8ad", + "src/backend/linux_raw/conv.rs": "027816a35e624a90b141ce3f84e8634f9626f9da41130a0f777a60484776318e", + "src/backend/linux_raw/elf.rs": "ff5017040b29a8cf8d5077a0c73943bfa5e3862eaab37ee1c3b08a1122968bbe", + "src/backend/linux_raw/event/epoll.rs": "6bea5634e8b0e40b38bc15fa18848548327d81a526516a34c49609ed3276d41c", + "src/backend/linux_raw/event/mod.rs": "72e46b04637e2d1d2a6b97af616144995399e489d1fe916faf835d72fc8c64cd", + "src/backend/linux_raw/event/poll_fd.rs": "1257867925d18ab0fcefe1c857d39436931d7bb3ca711b2112a32a218faf7d73", + "src/backend/linux_raw/event/syscalls.rs": "f996db9f1f9f2b9bdaf33ef3a80a63ab9b1a65ae956700fd88d355e046ce2890", + "src/backend/linux_raw/event/types.rs": "4edf9c7c399c91f359bc2370a407fa5ab537a84eed26c593ce5bf6dd82c6c6a0", + "src/backend/linux_raw/fs/dir.rs": "d871468c08ea22868f308ce53feb1dbab8740d577441a4f3aadd358baa843d27", + "src/backend/linux_raw/fs/inotify.rs": "85c9d2ed5698cf0eb0f354e9345534a9081b3a7d4b7b016f0a4a5ad5543ab2ed", "src/backend/linux_raw/fs/makedev.rs": "c6b4505c4bcbbc2460e80f3097eb15e2c8ef38d6c6e7abd78e39c53c372139e2", "src/backend/linux_raw/fs/mod.rs": "e22bf30f312f6a05f1e79f7834c33a3c9821514da05fa4786fc31867203a4c74", - "src/backend/linux_raw/fs/syscalls.rs": "28b1a8fc0eed5ff160222ca2b3a3680493bc542c1d044ebf7429dc8bb7421edc", - "src/backend/linux_raw/fs/types.rs": "bbabce075aa5d92780d09e80aae1aac10281575c93a3f365108c35fceb5241e0", - "src/backend/linux_raw/io/epoll.rs": "f30b0f2b12415d8972ca726d8c9a750eb4306fa9f57933e9dabfb495cde07264", - "src/backend/linux_raw/io/errno.rs": "6a5b70a3a8ff66c22dd9d08bee9594be163c75858291c91fae12ceb6f30b3777", - "src/backend/linux_raw/io/io_slice.rs": "5c6ae3376994e6b30a48c1939bce81c122d8581c5dced522cff886cf3b06384c", - "src/backend/linux_raw/io/mod.rs": "6ea805b91d571217c9649364121d0824bbdf4635b36c9150e5968fbeb75c0892", - "src/backend/linux_raw/io/poll_fd.rs": "9f5a15c80094cc3334acd171c0621d033b44d5d9a987a57acbdcd62cb17d871b", - "src/backend/linux_raw/io/syscalls.rs": "6bc1dde7db981372160ad416edf93d8af10c54478799267bef842c0514847d96", - "src/backend/linux_raw/io/types.rs": "b5be41bfae29bb27b7cb4db2584c5aac4ebe6f67e031e6c1ae5ff61649dd2955", + "src/backend/linux_raw/fs/syscalls.rs": "13c14c5bcd5fa20d18f603f4625a37f7116f86bb0fe481a1db40cd41bca028c5", + "src/backend/linux_raw/fs/types.rs": "53d170cadfb06fcff5b8333315768fd50eec05f54baa0be443058f9f5bcabe70", + "src/backend/linux_raw/io/errno.rs": "8d6a8d702ddec05c0ec5b518b9c4d6c9b54d390ea9b362e60f2032284c40b112", + "src/backend/linux_raw/io/mod.rs": "7ae2324427892cca6f5ab53858d847b165f790a72ec25f3d99fb15f0506c9f27", + "src/backend/linux_raw/io/syscalls.rs": "b079441386e5eb835b258871ae813dcd39fd8aeef4fc96bee187a45b0544bda7", + "src/backend/linux_raw/io/types.rs": "59d031dd1e769ecbaedaaa3ffc513a7f7154fc48abbb46023166fa38a46f0c61", "src/backend/linux_raw/io_uring/mod.rs": "2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952", - "src/backend/linux_raw/io_uring/syscalls.rs": "2522327e229d85ce207546b802f63fcad49a0ce41b7b881e13a1c2637fdb6095", + "src/backend/linux_raw/io_uring/syscalls.rs": "b87fa95c16b2d3ca8fd5d72368bda37b8b8ddbb19df3a884efc6eeec393c86d1", "src/backend/linux_raw/mm/mod.rs": "8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7", - "src/backend/linux_raw/mm/syscalls.rs": "647c1846793c386f6babae898686604a4808344ec3e2d1e71071bbfd04079357", - "src/backend/linux_raw/mm/types.rs": "6e6b97b3b161aa1f03d8cf0e94c5ff35d4911a5049770dbb203acba84ee65843", - "src/backend/linux_raw/mod.rs": "c38d91ff3ef77f69a0ef9deeebd1f6e76fa4a3c473dc0fab542513014c80de82", - "src/backend/linux_raw/net/addr.rs": "af30232b1241291254fe9ce0fa0050e707adc73325308eb0501801e33cc07c73", - "src/backend/linux_raw/net/mod.rs": "c912274a40eab213f0afcaab8ae098ae7d56fa95592463c830b2361df57731fe", - "src/backend/linux_raw/net/msghdr.rs": "18facac973918b6a8a6b49b0fcf1058e88286d67e12801ce6dacb58ebf5a7d75", - "src/backend/linux_raw/net/read_sockaddr.rs": "71bdde53beb3aea60d51c664e3fc36e34371acd869f621faa3dabd8b0d91b0c5", - "src/backend/linux_raw/net/send_recv.rs": "602852a0cf2775c0fce7afbd813248386823b73f3069231860b348432f59450c", - "src/backend/linux_raw/net/syscalls.rs": "1670344e0a725c4d097897c445bdfa67832830e7ceec418fbc734ddaacffa761", - "src/backend/linux_raw/net/types.rs": "87ed6b59a29aab219fd625393b1b9f4200eabacf1ee4ad8fe806a2b8b53169df", - "src/backend/linux_raw/net/write_sockaddr.rs": "ec0bf20a354cb86e2b5646bfc79297a378f11fcdf5641c16e4dd13e305011dc6", - "src/backend/linux_raw/param/auxv.rs": "5565394c6943ecb85dafcc4eae1931417d912560ccb86496d79914d7a4087cb6", - "src/backend/linux_raw/param/libc_auxv.rs": "5d57b293700de025bc811ccafd29f05af2787c288ab5e653351c0bd96c488910", + "src/backend/linux_raw/mm/syscalls.rs": "369abe984aa972d8083fee20d764a8d57df242c66f897066367416f2fcc832a3", + "src/backend/linux_raw/mm/types.rs": "74dd9772c7208d6ad2d3830277eb1f67d5b2392553be23c8a64181c21ca1dc37", + "src/backend/linux_raw/mod.rs": "eb94a0ff0f7dad9e114d19bcd9bf5b320b9e8570ce74277756aaf038c815e23f", + "src/backend/linux_raw/mount/mod.rs": "8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7", + "src/backend/linux_raw/mount/syscalls.rs": "3947261b5d46b9737f02dc5352c3a3a35c63c461fd75bcd8ae6619dfc0bfb54d", + "src/backend/linux_raw/mount/types.rs": "4241f270fc362834dd2cee3eb360e5b5d2bb0300eb07f0ca1bc81363e501c65c", + "src/backend/linux_raw/net/addr.rs": "fa6c4ea03ed465188bdb2113a9815549084b501c35654b46a00de226c7ea5463", + "src/backend/linux_raw/net/mod.rs": "bc9c9c4a8c06b1fb8c57555261176dfb1f3e858a1d89cd2f88e1f31fc126c001", + "src/backend/linux_raw/net/msghdr.rs": "3198339ccd00224aefdba74e9144818fe387222066a387a9dfd95fd8c48cf9d9", + "src/backend/linux_raw/net/read_sockaddr.rs": "24075ac4c05fab5fe44aae4445cdd12ec7e474f047150baa9b768741d6b9693d", + "src/backend/linux_raw/net/send_recv.rs": "aa5107094a1e5c6ce57bc2956d0ac63f24a7e61270f61ab2a353f9c832da0e4e", + "src/backend/linux_raw/net/syscalls.rs": "0adf890dd158f68d3906291af6bef547267190b9f6b08007998703ef833b16dc", + "src/backend/linux_raw/net/write_sockaddr.rs": "0eeeb7ec8dadf95503a2f89fdc933b8f9c7e45e03fdb343ce490b6cc8eec0f96", + "src/backend/linux_raw/param/auxv.rs": "671b06e0609b22b469dae2ee87fd1aa4f4b8ae793be12bb2a08e9499390db330", + "src/backend/linux_raw/param/libc_auxv.rs": "5d08094c1f3dab556235c905e373e5d1a3a3719e76b0d8a3a60d4608520a477e", "src/backend/linux_raw/param/mod.rs": "db21fc1b0ea5568b8649890fa38a878bfcdcf7398f6cf1640176b37bcc6ce990", - "src/backend/linux_raw/param/mustang_auxv.rs": "016a691236064a9cc28688d4ff5dbd0e37dccfc07b25b943b47762ba1da33b83", - "src/backend/linux_raw/process/cpu_set.rs": "a333938a4356d117199bf4078688f0a9b876dc65da1bbff7649482f4f0180813", + "src/backend/linux_raw/param/mustang_auxv.rs": "9516dbdf84fc78ac7e747b0cd464cbf8d6f9e5b0b0325a0af47d0670cc391da0", + "src/backend/linux_raw/pid/mod.rs": "2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952", + "src/backend/linux_raw/pid/syscalls.rs": "ce3ca4c72096479340364d16f09918e192ffd3a0436a26eb61aad7e7dac3cdcd", + "src/backend/linux_raw/pipe/mod.rs": "8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7", + "src/backend/linux_raw/pipe/syscalls.rs": "ec53a8b3ac23fc3fc2983615e34a210077947dbdf9b6a55477844fdae7e6b306", + "src/backend/linux_raw/pipe/types.rs": "73db762965df510bf3c908f906acf3a6df182d98d4ba1ebe45a52a4b51751e7e", + "src/backend/linux_raw/prctl/mod.rs": "2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952", + "src/backend/linux_raw/prctl/syscalls.rs": "01aa9cd77341dcd1efab9f3ac28447d0fbc41ed44d65e52301b347fdd1627e50", + "src/backend/linux_raw/process/cpu_set.rs": "dfdcbdf35aff6a3e08e7d38193bf18c12ca8aa64eb0dc417667be82dcc0f7c55", "src/backend/linux_raw/process/mod.rs": "fb393c70a9c63ef9a6bf1fb5a2dc94f07d6b0b6987cc5231c15c607015dafd68", - "src/backend/linux_raw/process/syscalls.rs": "0bce1df427c5be8d2fec48ba92e93c442b0adf1896a0af65c5d4780a4826741b", - "src/backend/linux_raw/process/types.rs": "c04c902fc7c489947272b3983aa5e8c4e53b4ef6cfafe5ce973bf694bd14cfaa", + "src/backend/linux_raw/process/syscalls.rs": "06313394d332fe385ce2053ae2980cb939665c1d091867d131adf18bd9e7a5dc", + "src/backend/linux_raw/process/types.rs": "d66049cfbdb27e31586f0ff2e53b6adbe0ebb296a876372e9d0d805d10ac5f51", "src/backend/linux_raw/process/wait.rs": "921aee4b0048746087f52615a98edc2aa0fb4b53d6df44be4533098df55d1b05", "src/backend/linux_raw/pty/mod.rs": "2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952", - "src/backend/linux_raw/pty/syscalls.rs": "18614be9fde4e095b159682ec4b9d1e077716b710030ebd1681813812d74d8ce", + "src/backend/linux_raw/pty/syscalls.rs": "8e0c6bb4a488440b39e5df9aa343bdffa6b28a0213246bc699f8b9676a170fa5", "src/backend/linux_raw/rand/mod.rs": "8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7", - "src/backend/linux_raw/rand/syscalls.rs": "b1d8b2fea0c792bd1e7c24ee59429d178dc0ad442ac817b12c7abcb38d71497b", - "src/backend/linux_raw/rand/types.rs": "271416d5241d70932b8a17f3b67eefd1b9c360f217f807de3d73192e9b620552", - "src/backend/linux_raw/reg.rs": "02653995cb934050ee2109e8d40e9083a4278abcba27b59d174a311aa8438e45", + "src/backend/linux_raw/rand/syscalls.rs": "fb401466368de62ec4ff76bc230f9246623b003fe7452912e1365f443d3eeeb3", + "src/backend/linux_raw/rand/types.rs": "787a59629343688cac0fdabd1b7552b400b9188073a1e0394eacc6e0997e1bfe", + "src/backend/linux_raw/reg.rs": "39b6234971122d247054bda8c2dc3b44493be30482635baa9e2fcbe048e78cbd", "src/backend/linux_raw/runtime/mod.rs": "b2cae8cce3822c3c92942f06ea0b68464040dcac33c6f0f7ee392c6269993347", - "src/backend/linux_raw/runtime/syscalls.rs": "5b6d741a9d954aa02177d3850a36375a391fa55cde91eec0c640845adb666691", - "src/backend/linux_raw/runtime/tls.rs": "9db0e08e47e69013b3fac0b4aa24e6ac6b07904797e0e04658dd44f3a7245e0f", - "src/backend/linux_raw/termios/mod.rs": "8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7", - "src/backend/linux_raw/termios/syscalls.rs": "48eb753f1cd48139eae40ba72241fc2d5fd67355c33a3906f82965e0e0e518d3", - "src/backend/linux_raw/termios/types.rs": "5cee3735957db2fdaab341a0c58e438305d6402dc7d23622f4999934d4511b5f", - "src/backend/linux_raw/thread/futex.rs": "232a24ccfbb2a03a107373249c5d3ebe3db70388ed39e6e6dd08e14630a48f2e", + "src/backend/linux_raw/runtime/syscalls.rs": "21497bfe3d0f82de278f07bf53a11a04ffaa595b4ff1af92627940ff2029b8fc", + "src/backend/linux_raw/runtime/tls.rs": "2b8fc61a33ca9b47f854afbb8e3f8b20f9f9416b8884aefe46388c8173c8ae47", + "src/backend/linux_raw/system/mod.rs": "8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7", + "src/backend/linux_raw/system/syscalls.rs": "a9bec6662f122b1ec310d417bd9ddc16df13b50de6526d2170aa4d72292c2b14", + "src/backend/linux_raw/system/types.rs": "1ceab8d738a71043473b26e97fa3fd79d588a86d4774cbc9b9e1d4f1447a016e", + "src/backend/linux_raw/termios/mod.rs": "2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952", + "src/backend/linux_raw/termios/syscalls.rs": "fdbc96360beabd3adf6ee208a5f236d4b729f11ec7546c906afc0d1fc6ff2505", + "src/backend/linux_raw/thread/futex.rs": "3a130db9f6176dc95fdc14ce61a6bcdcc2c28e82a29ddae3e05f347a189fdd14", "src/backend/linux_raw/thread/mod.rs": "f7132a68c9db1b4a796781b9e8d0ac268a1ddb713e510bfd43425564ec9b39c4", - "src/backend/linux_raw/thread/syscalls.rs": "57f6d8d3a2526ca5066aa35ea74b35e465726b1bc079fafd22abe211f643c070", + "src/backend/linux_raw/thread/syscalls.rs": "5845d1c0a3548f87a114493c345e18dc32875bd7d35a6abcf1241ced9b024c09", "src/backend/linux_raw/time/mod.rs": "672724f55b7b7be6a7452bb1cc2d28b5f0aaa840a2856fe363acce624e1beefc", - "src/backend/linux_raw/time/syscalls.rs": "02710805710aeb65a169492e650b495dceea402ad212922a0589ab8c1605e585", - "src/backend/linux_raw/time/types.rs": "8b5a464d0ef6752276416640dd3a341c07e3e901463231e8c66b2d2d661039af", - "src/backend/linux_raw/vdso.rs": "a5abab80f023088162fd81dc306b6bd86bd61b2018a191b384f57facb1d48d0a", - "src/backend/linux_raw/vdso_wrappers.rs": "c86e1b0d28e9148a5061b8dd967fe9f5c583001c8850f30f1f30ac75026df70f", - "src/const_assert.rs": "69aad0f4c33ca5b6a23f35644b7da71977e23d645a1279f915893ac8087da355", - "src/cstr.rs": "c515846378c45e7f04dded259b791a09ad304b3465fc64d1a0fe3d213c9d6a26", - "src/ffi/mod.rs": "1990dae8190991142bef24220f02b99c96c5bfa7dda2a7974d9dcac265d58945", - "src/fs/abs.rs": "3541ec38adff45be6464f52a786c0f4973e42fcae5efeeed737c83916b669d2f", - "src/fs/at.rs": "fa59a9cfbb74c5edab015b895b967d3e2197cde6867ba3b54f57c804bb73bd44", - "src/fs/constants.rs": "93601ba75eefcefcc3f8f936b786b7e70180aa3727c24bacfd326128b6bb52e0", + "src/backend/linux_raw/time/syscalls.rs": "a7870ef9daaf3fb2ac50f853df6dbcd935a3b2d70e720b80184208f602a918e6", + "src/backend/linux_raw/time/types.rs": "f2b5de6ea0f8b8a886f7b145a0da4ab47520fa81b235377a28a0c6a530083a9a", + "src/backend/linux_raw/ugid/mod.rs": "2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952", + "src/backend/linux_raw/ugid/syscalls.rs": "844b2bed42b9a3c06845dbae1d020bbab5757d23ea3ad7a440e3cd87ff993f72", + "src/backend/linux_raw/vdso.rs": "e454ecefafa95cf7a356204cd42bcf83ca78d89a513d405cc14aa43a4fd52a1d", + "src/backend/linux_raw/vdso_wrappers.rs": "60bbde4bed863e067e7c6804b03f2620d06d7459fb3cd1560d4ab1a0cd99df69", + "src/bitcast.rs": "fe6bdc7fc31fa3b360c44a841c9a0f143629172729c6aaeae76841c74c122ff3", + "src/check_types.rs": "bc31f9b293bfbf272284ed4d0da24e941206a1ac3f18d3abb0b1a61f1ede1dae", + "src/clockid.rs": "1d2e1cfcf23160b55d6b046d235edf2eb2408f072a8bdef3e3a3871885abdd5a", + "src/cstr.rs": "9e3fcd57d6af382a9a4f24b97a29eeb05a3ccd5c8fefd666884f6e4438b3c4a3", + "src/event/eventfd.rs": "81cbd08f7bdf40a6ce1ca692b63da1dc8ba925282990668d9d68f1203e839fa1", + "src/event/kqueue.rs": "13d9ac0181bba0588ca6196deeae36d061e915cfd9e0da86318368845ec63e07", + "src/event/mod.rs": "7f4f01e43444c5a1f97af5955fab7e0e1ba20e0f53adc86aecbd501d2db4a745", + "src/event/poll.rs": "0ee583dbd457a573a82a06c04a2a24bd2c76e751d27a435507d55338e2871327", + "src/event/port.rs": "a72f6facaa0dfd93ba66f813586c4f7287dce4d803480224fd78234a834f6c7c", + "src/ffi.rs": "0c6b9a6f20ffb31a827412c0381c6fff09e68265f29d94c5470940e22c5334a2", + "src/fs/abs.rs": "57406bc03c5e1959c4a859a7b0e70bbdb220dec40c8457ad505d8330bfd05633", + "src/fs/at.rs": "edf36efffd2c1751fb176ecfdec41a6d1c2f1e80b305af67bb8d9fcd98c1029d", + "src/fs/constants.rs": "24076a01f8bfc126b0905e9bc0521d2c3a3abc6c3b8c86ddb1e545070d097127", "src/fs/copy_file_range.rs": "d3b644374390d482b2ff749a2459458872b57d0dcf9670368739b7833509a7c2", - "src/fs/cwd.rs": "b2d7fbb27e23704e3367ede9916cc233f76d912be21c2aee8a635eeca627977f", + "src/fs/cwd.rs": "9f429a79ace6e17455634da09216ee0ad3d067a4541518b3193ae6a8d9ff1e26", "src/fs/dir.rs": "347a52f4ca9ac6321c52e802e97ec90d1b4c62ec955c8996fc17f8f5aed69966", "src/fs/fadvise.rs": "beef66ebe1310fb92628240b2cde68f744c78e50f6ff61bb1404bd4868d9cae8", - "src/fs/fcntl.rs": "58c8f99e7193d11f0301d55e521e7bac16b1143f47eb7cf73cd9663841b4ebbe", - "src/fs/fcntl_apple.rs": "07f07b2ac75dc28bc9e08200f72eb95550a87ff3d69c1204f49ecb63a0c4fd20", + "src/fs/fcntl.rs": "2085102d05d0ba963e100ab3e3f19dac4ff27d142fbf798626d20a2a596ba96d", + "src/fs/fcntl_apple.rs": "e2f23f038083621bcdecc98d02ce1023508afaecdb2ed0fba5c8b70f955301e5", "src/fs/fcopyfile.rs": "ec95929cbbe02cf49233a785e5238931bb107b7903cc5bc95e4231de960995f2", - "src/fs/fd.rs": "e30d09b4700302c712b499311a86b905b5bb0c483ab2827b27add477056c284c", + "src/fs/fd.rs": "6b64b27b4727e00ae1a44cf04f9627326679ecc2d7ea274195e1204aa60c2d50", "src/fs/file_type.rs": "fefd865f91011f66126213b0994773d99e373b468c31e866002228c98c64ad85", "src/fs/getpath.rs": "28f6970fc1bbc37bb35c84724b59eac436ea7407a4522e18c2bdacb1fdd2edd9", + "src/fs/id.rs": "1b5c8a8baf9a9bb1f895f97189cea4e5982a0d35b192afeec6340a6c6222e0cb", + "src/fs/ioctl.rs": "1b222e725402d775813877b73f40f8ac2b513439485d326fbd49e3f4ebedce3b", "src/fs/makedev.rs": "85520b484cb7c15ab71ea1c368578ea3b7e484d82f8510db92b6ce9f7ca341ae", "src/fs/memfd_create.rs": "15a8f28e040cffd8c24c7903483440f88853b2e538ad48d80f3c00b4b2befdea", - "src/fs/mod.rs": "2ded318e44b40cf8276b381444e6e418ad94206755283c215c2e487a32371c03", - "src/fs/mount.rs": "8ab26dcb422825bbd2df2e1f68e6b4f7cf08ce11387c688442ee1b4683b33d4f", + "src/fs/mod.rs": "8a3ab65aa3fa9a66ea55ef1ec3db72cab938b2b0deb4e079dd6efd737f91d480", + "src/fs/mount.rs": "c96cacbe65aff4c43fc2f5be03baf2b523bda151ade1828b691de1d040d3b2e6", "src/fs/openat2.rs": "4a95c15dab533a41201b5fa25c8a212956b7571d58cad696bdaf45af8aef96db", - "src/fs/raw_dir.rs": "bc2b60c3d9e1f24a60cfe1c502ccbed682fae4c487e7da38b8e738dc08a71f8f", + "src/fs/raw_dir.rs": "8cb30e31905f90c09c147f828dd9975da3ea1aab6e410642e04d206a8860b302", + "src/fs/seek_from.rs": "a9efa0feb9ac789cf47667e91efee2e3f2dcde16cb3b7a928c99da640fa0e0d6", "src/fs/sendfile.rs": "e3b2058741cf4b1698f34d84bb37130cf2b72806d522a16fe541e832cde136cb", "src/fs/statx.rs": "239d447477f8ac368c8ddf9975c71509c47881f647f59cd941ac07954d8a77f9", "src/fs/sync.rs": "a3b23543834281f347b0f873bd38154d31d404871188ac08f2b20b9196234cfd", - "src/fs/xattr.rs": "fcc16dab9927d7d6c8e4e4bf6752e65ff0c38d954cead8e6f6c2c26c11792929", + "src/fs/xattr.rs": "1d4d7f144716ac8fcae6b728ea23d27db8d3d1d7d2ec3dc31a1dea8e9d6a7eff", "src/io/close.rs": "0aa3cd05a8fed8e5244f97b8b6c2e7f65ed93a4e5435c6329852bb3da7514440", - "src/io/dup.rs": "913aaa2f5f9a5f0c381d053dd0e9560af55bc754dca23ff44dde4b0fa13ff172", - "src/io/errno.rs": "da7dc2d25cdbbf610ec82c32124789d6572fbc67d8ff265000597ac1f5b39ebd", - "src/io/eventfd.rs": "6886b17aa4d298a116bd4de15b22469133acc94695a623d0341174a0dc649a18", - "src/io/fcntl.rs": "08f42dc80832586afa6e0a7825571c84a97add1164926928960f0c4c5db76461", - "src/io/fd/mod.rs": "a1eab9ce9a2c4454053afdfd3f3705e4cb971e94cc453e4f13690f2f0d83dc2c", - "src/io/fd/owned.rs": "b3d1ac775461b9206f36df62495604a48820c0284276200101fd1847b0e9e756", - "src/io/fd/raw.rs": "9bcd00be7df3d9f4e6c49ca2d18ef25aee3d6f0ed5ee6b73df5a9beacefb6031", - "src/io/ioctl.rs": "1c9126e216d693692067d9b3514d0bad6cba3fc05c66f5c00792a8cb146902e6", + "src/io/dup.rs": "a8a59c5d345dc54c57ded890720c33eb78c4d53917c71e8bb6317f7ed122cb87", + "src/io/errno.rs": "777976d6f0e73cc7d7f2a94954e5900683cfcea330664b7192ed5db3ebbd493e", + "src/io/fcntl.rs": "c0f7bd7fce1119b0c1d0085b7ab77d5df02470ae3e06035428a2452dacbec296", + "src/io/ioctl.rs": "69d85054f32523c9b88b9bbee536d3299cfddba0e08f608d950e8a7cc4464e07", "src/io/is_read_write.rs": "1bfb9ee5d58e0b29b44af12fe2668c7bccc841358698dcde47f1519ff9bb73b4", - "src/io/kqueue.rs": "857f9016ebba60136e8944d7a1bd3de249d6d633211d744336c5f7f4b3dc2053", - "src/io/mod.rs": "f18f756c141f5c82cd511404a1ee4738a83dc589cb0a24f0db0990869540aafc", - "src/io/pipe.rs": "7fe8f04af16f5fcf164d8bd7e9a6bea584ef935760f4a4c7f9befd1ead2398cc", - "src/io/poll.rs": "3a1dc003042a0b8e21f894ebdc0e123938b78c6323d61deacbc09b44e1b986a1", - "src/io/port.rs": "8be17096cdfd2425bb2f800d129913e2ed2032c02049d45b7dcda8d4189b1af2", - "src/io/procfs.rs": "f767b695acf0756a3b7b367778d2090abc5a11586ab5d3b4fb4e0899e9d1f2c7", - "src/io/read_write.rs": "023230dec0f36f630ae8affde1a0abb0140dc28d5c5bc136f4dc6876828efe85", - "src/io/seek_from.rs": "d7616a45e8a449df28b075ddded4d7c95d6c4575d6fe0cf0ca7b6625e9dc7eeb", - "src/io/stdio.rs": "a0328775940ccdd3026e92b9dfd94584d0faf14c3d287360e157ed8903d6568f", - "src/io_uring.rs": "63c4bcd276e7110025e06ab77dbe506464c3efdfcb8a82493fc7fe72c716e7c8", - "src/lib.rs": "59436a64d22a5cb67141fcc0f32734d2241925564f677806f7cc5fabf35c0b8d", + "src/io/mod.rs": "75f1d0646be1d4c7c08b5887d8119b0103be8c25c43ccd4e0e97015508c0bb8f", + "src/io/read_write.rs": "54ba528b11601af1338bb0c71a41b256a0033076d30b3946c3fd0bdfa61dd021", + "src/io_uring.rs": "c007f7033c5eb19e166f51bd8e35091f6a1779917284e69c28c8f20a34a18bf9", + "src/lib.rs": "662e3cb93e0b82ac01f95be39f93eba6fb585e4882308c4b00234d143634b5c1", + "src/maybe_polyfill/no_std/io/mod.rs": "77889bb5c5a4f2e50e38379cdaa5d0fef4b0cafc3da056735df01f6deae75747", + "src/maybe_polyfill/no_std/mod.rs": "ec94a4aab4bc475785e469d10fd6bc95667e1d47d958e9cff3a19049d88c8c80", + "src/maybe_polyfill/no_std/net/ip_addr.rs": "046327ee244f758f2bc31d3be305d8cd0dfd8342aac1add8259e999b4b46c4a7", + "src/maybe_polyfill/no_std/net/mod.rs": "b0ee611c454679226a15bf647e7779995f3fe9c8e0507930a0d0613eb414b7c2", + "src/maybe_polyfill/no_std/net/socket_addr.rs": "bfeb32d32c176cde76323abcffebfc47e9898fb8d7ce3668c602dc8451086a2d", + "src/maybe_polyfill/no_std/os/fd/mod.rs": "d9dfe2a2c25be727847bcdfe6f4898685af2521850298178ca8d46a8e2ceee88", + "src/maybe_polyfill/no_std/os/fd/owned.rs": "4ce3234f8ab2cc8a7b749531336f4f6b6297eff0e20a01190be2c10409a0c066", + "src/maybe_polyfill/no_std/os/fd/raw.rs": "9cedb353580b932879ddc4dee9936212fefb6d42530dc5cec519a0779d5dee33", + "src/maybe_polyfill/no_std/os/mod.rs": "27dab639a765827644005d5f2fcc7c825310606b889cc8dd83f54c9528350dc0", + "src/maybe_polyfill/no_std/os/windows/io/mod.rs": "5bbcc05c83fee5026dd744a994e0458469466d5be39081baa62df07753b92fd2", + "src/maybe_polyfill/no_std/os/windows/io/raw.rs": "4c32609a489dd938a49328b5637cb3bafb96437f2f9f269ab66d7d3cb90247f6", + "src/maybe_polyfill/no_std/os/windows/io/socket.rs": "c658f42f24eff44a661f2adfd24a11af80fe9897f3e2af4dc5d2c64808308d65", + "src/maybe_polyfill/no_std/os/windows/mod.rs": "fdb416f8f231a4e778b5f985b9ae712ece5e1a1402963ad1a5f6a8b9843795f4", + "src/maybe_polyfill/std/mod.rs": "7c16c86cc73e226e65ead598e4018238b22000a345040b706bf1e1b3eba115fc", "src/mm/madvise.rs": "3c262b3713a73fafcedf1b04bb12c048bb11d47ca43c959e5dfa48c27651f4f0", - "src/mm/mmap.rs": "bb103e6febd375de820985cc4b5aefa520b64ab1bcd903e3a818146abdfc60c7", + "src/mm/mmap.rs": "fc32e308a24c6f351d74306943d67a68093a0b6555b4bdf6cd755bf43795f406", "src/mm/mod.rs": "b3a6cb838986d45825b912355cedead761211a494ca6f89b2367a2d2157e340e", "src/mm/msync.rs": "9dcfe5f54235e9314a595edb8d548ac79d222bbcc58bb3263cf7e96d603b23ad", "src/mm/userfaultfd.rs": "8073443bd181ff0b3ba4d0b1ae67370b4864035a0c8b4898cd709dc47c518ae7", - "src/net/addr.rs": "6fce66cd0ccac3bcc2339f32faf2ed1bac94a6d8824acb55bffdfaa43090675a", - "src/net/ip.rs": "080dd17c44b395b46b0d9e70da76f376540f92ece65f79e3d242c0a272d3b451", - "src/net/mod.rs": "2961f20366463216037a7a1ab238d5e80133bf058a3f10e30f86c8f7ddb314b7", - "src/net/send_recv/mod.rs": "97ac913fe7baa36301e483b30271f4bbb51fb8fcb876fa3d2e49d90d40bbd030", - "src/net/send_recv/msg.rs": "c1b66b655065130a720eac02d17e48de7b44322f818533451782b72edbbb19b2", - "src/net/socket.rs": "691f2c1b8c09c8d1d7f5e4ae3d3254925d7ca98b4c449a27e732f4c3c1612646", - "src/net/socket_addr_any.rs": "d95c7002972fa98d4133e10ad6c404399494374d568816217edcb9f4fd93aad8", - "src/net/socketpair.rs": "0818c1f34a5031dfd83bffe90ad1fad2c1e124665cb807485c908893ca9b3d9f", - "src/net/sockopt.rs": "82b0aef8db493ca63a1914860b68972e02e58fd90106bd781569c20c95b6499f", + "src/mount/fsopen.rs": "160e384e9175fd98669cda1cf3590bb195c2ba7e1c724e9ea06e692595e58ba1", + "src/mount/mod.rs": "5f0c9df4727592695deb1cd63ae1de021b03dcd9d0d1b68e1f34d12a7136cb19", + "src/mount/mount_unmount.rs": "8ad11675e5d762d33fbefbed06a6a9f9e52a9b689bd06662446152614321ab77", + "src/mount/types.rs": "601ae3e10b7dc496fed7f3b40a80e81c6edd7bf13189d7be45c3212d4c684c39", + "src/net/mod.rs": "a6bc55f9e086caf46a7c00783498d73a328a66f2a991f1ec65d5f13931377b0f", + "src/net/send_recv/mod.rs": "f33e39c7b228cd8109823b0a0a1aa397cddad504d49e69b36f74c5b84e5070e5", + "src/net/send_recv/msg.rs": "19caae23209c8de1939687055c230d832a3e45c1dc92cc4fc785edcd7789e849", + "src/net/socket.rs": "6bb087ab208a1e06d535fa11e2aa4a9f96da6e73b697fca93e2a3c89178c4434", + "src/net/socket_addr_any.rs": "d07f9e9ef8873aa5bfd85f669952299286ef6f2cc5b9fea383856432e61b850f", + "src/net/socketpair.rs": "56f4885c31d2664cd16e18a9a88792a4912fedd953cec36dba67e8581fd57921", + "src/net/sockopt.rs": "e469ee66afb9b62fc1f55faec589c42b823eee27654b692e8efb83e7e59c9249", + "src/net/types.rs": "f612ab7d062675a5a6f3f3da36bf794567bb40a28caa421fb09b1b8ba91e3822", "src/net/wsa.rs": "6e546b42f50a851fc833c57cda76cfb347203ed4b0dea574a3d325bf5a2ebf80", "src/param/auxv.rs": "988872f9bec2e12f35765ae8963cbb9535d4acaedd4c9a4d07ced6feb70e0aaa", "src/param/init.rs": "671d8974f0d9b82e79076d1f4deabe0273a874a329f74b8aad26e07b86791ba3", - "src/param/mod.rs": "959d6bd6c7abb85e042f86047fb902891c5deb74c550ce21dac96fb9a9f16d36", - "src/path/arg.rs": "4a4bf9b59334900b51ac250365b2a1838670f83a6df9c9c3f6a35bd7d4784170", + "src/param/mod.rs": "53ee190cf5266a2e057af9412acc50359369470a04dbfe2e6e92a90de15aff57", + "src/path/arg.rs": "dfcb3004b7bc5681b2eeadfe364d8d3a0cea89f85700762ad4433af9c0e744ab", "src/path/dec_int.rs": "fad9793b89eac526953b994cbed6b614f01c25108f9763e19fb98029feda93a4", "src/path/mod.rs": "6b1b949c94bcc47e0f08a3f8e8db5b61ff497d0dfd3e0655f51c01d3e4b7dfd6", - "src/process/chdir.rs": "4c63c351e207b1bbefdd7c001e85fed383d5ac2147894d5a09fbd8b302d7c728", - "src/process/chroot.rs": "aa83fd57d8f43c22b8f26bdb61109b74f2e2bebed34a16fed02660cbb37cd4d4", - "src/process/exit.rs": "47bc2fc1ec25eb5c7a21ba84a70c6d799df206f9920c34804a17acf27d5cd66d", - "src/process/id.rs": "1cbfeb3f1f793d2747eb3db981459902c98ec5fedf265a0faecf0b37a164c527", - "src/process/ioctl.rs": "6644c3b0948251b448a87cc8409750edf77dc31f08b2060fccf00dab0d516fca", - "src/process/kill.rs": "0269dc9a2c0684223c6d9256548dcb1dfeb66c10fe53f45fdcb173f398ada4cc", - "src/process/membarrier.rs": "4b1f2b062012c06cba3d3fc6f9b22d78812f5bc36ce579a0959f415952562ebd", - "src/process/mod.rs": "c04ed9d8cc4865c4a367e64fa4eab184253fead4b9259c4f6719f3f92c4bf9a9", - "src/process/pidfd.rs": "88517949097414b77540b1c0801bdd034c28667b9386c0676cdaa1b637129ffa", - "src/process/prctl.rs": "302715256544595bf109e22a987e314b1468544b22cf63afa8d2d574085b50f0", - "src/process/priority.rs": "711ad9300407b205a549d2f896cdff080740f6cde8e710d3bb654ea720586b4c", - "src/process/procctl.rs": "c9ffddf8203077d2859d4eb204fe3da7d24efec3c492d0229750c794d3c9a996", + "src/pid.rs": "26bddad73b279de3e496d2ae8d3304e652a0072da82558f688a702c8b05e5c95", + "src/pipe.rs": "5cc39da9298b32019276b7fe1a5a8b80d813a430b0add4d12d02083307c9f103", + "src/prctl.rs": "a1c85a401538d614f5539871f9a03f9a345b24cfbc845e953deb9f8b96986e2a", + "src/process/chdir.rs": "9d0397bc91bad5bf1c0afec5b3e6dd9cb7de6e54c3d0b760b33a4996a4cb1b25", + "src/process/chroot.rs": "2b5f6124eb19f26ad2705174f7ad50cdc0a5d15abd59ffcf55421228d82130b4", + "src/process/exit.rs": "98d55e9a419737cd88327d8eb484b892e2a12706e5dd05e5e43552af8b6a806a", + "src/process/id.rs": "402475cba98cc7e724943bfd218862f76c08b8d200a7b38bb5067bba2a837ef1", + "src/process/ioctl.rs": "6b9527094ad3617057e95268d515bce032656642e7ee55fcc686e4a9cbf01499", + "src/process/kill.rs": "7b879e5cff8a064acd0e7488f4e21bd4e4a8506ce380688b72cc48d283ff9c89", + "src/process/membarrier.rs": "83c152d9e9e34e94a1eb48fbcdfc0cc7ced553759611b6354cb6890ec24c6924", + "src/process/mod.rs": "21e5e4f55e81c447d76970442473678f6345d12a61b3227caf09460cfb82e0e4", + "src/process/pidfd.rs": "ffb343f317e481dfcb74d6158a186635196792b176f7ba59c6fa60448b7942a5", + "src/process/pidfd_getfd.rs": "1b46d1e7b9522932497e94f697c2e8cb0796e44c82c7b95804445ffde72a4003", + "src/process/prctl.rs": "47d8078fdb08ce93616122dac26f39ea4085ff76aa0e58b06393c34b1ce6de55", + "src/process/priority.rs": "f135482e71ea8aa0daf92b9f238051178a4c904070fa8409622f94155df3c544", + "src/process/procctl.rs": "7668f8302515316cc70addfe8da4af47ea8872d4acacd72d1c87c0ecb627e8e9", "src/process/rlimit.rs": "10b79de3ced0e64059a94c879742d46a35a6176c776d8eed75031d5e6340283d", "src/process/sched.rs": "7c3bfc5be624e7d7f5e043c3ee0b0566fcab3d684d61c272e7b4233410ab1c42", "src/process/sched_yield.rs": "6565faa3928b66ddc74a65e893e15edfa4b9be4f7e5f5f68527501a7f6bc3350", - "src/process/system.rs": "5c701192b030236149b15e7934828aef9c9e3e2e4485728833b7146378157997", "src/process/umask.rs": "1a0f31a842303c978e3f05ec191e2b5e96104c09c6596473b42b1fac34898a50", - "src/process/wait.rs": "5e0d3e46ba44f81cbf8664c68faadced7d80f56920d018591dbb8f088fff6bac", - "src/pty.rs": "e1d2d72f0c1cb2b8b37b9f06f87044c39d22a3e4b089a4ec25dd26de4a311c48", - "src/rand/getrandom.rs": "8e64128584178c02f04c9781527c23ac2e2423f73445d0b4d25ae99204d7cc04", + "src/process/wait.rs": "5bceb8b2d6144aadc203ed3d7dd24536e0ad4bbef45c3fb9369559dd9284693d", + "src/procfs.rs": "e0329add710a5d005dccd1855b20bc3474f6d2069c3eb0d86b8087c64687e7da", + "src/pty.rs": "602c58dcfa248a5e7f9389851a52f99dfb0e115fc9a70f732d69b0a1d127fae5", + "src/rand/getrandom.rs": "15255b5c5f76cf61ac4fac8b7ac6621049f2b5d2549ec319cdd69ab1ae4d07d2", "src/rand/mod.rs": "cab59332aadd9b679f5b22cbb222d48ee028af5eb9fd4a4d43922da659b895d7", - "src/runtime.rs": "386bf280a54150b90c038173019a4e62cbc0e05656d13918f93315d70d51eb42", - "src/termios/cf.rs": "cb13ee88cba541cbd683c7a5da034a126fd9e09dc6b5f25c9f32382f8318ffc0", - "src/termios/constants.rs": "7855cebd1e2169a2a760c6752138b3de1be00fd3b907b049d32ad5d6bdb0426e", - "src/termios/mod.rs": "b4d28ebeeae6782b4060d3e6f0156ed63bafa155d1bbdae9e28d06e574d69cb7", - "src/termios/tc.rs": "c892c62ee5ed638e4965dcf6bab403790ab6c9a2c47f66760c1cc4d89923c17e", - "src/termios/tty.rs": "de44a8e276070a844685fa3f3cae8ed9f2ae9ebf0333adbd42c05a350c40359f", - "src/thread/clock.rs": "4e3f54aa5b50443bf502a81ee4814b3522e928e3b06241d24f924a6f69953662", + "src/runtime.rs": "952cea05413e3ba1fa4fdc4755bf1d0fc0c21a5c8878f2cccc6a533119c193f8", + "src/signal.rs": "c071b4f011deef19a679d7a832d5408a3cd68627161d6510008d6312266a2611", + "src/static_assertions.rs": "39986672f489949be1d6469f0c30fb7d2eaa21bdaa2702a8c150b2b150bf5535", + "src/stdio.rs": "a5de2d7d9c3c5a901f88b6acf4754687c958a2f3a93c7945c2b8fcb948d468af", + "src/system.rs": "853b3ddaa10b90226f6d9a0ef7890739ce2fbd150c362c912df6afd19664253c", + "src/termios/ioctl.rs": "fd1db1ee473e884eedc5858e7697d4a00b6ed7d878af85abdb76771225bd2e48", + "src/termios/mod.rs": "b44b7caa60b6f458657ed58a0e0eca41bb4e6d6be4b0f042bbb8ab7056cebe4b", + "src/termios/tc.rs": "e41312d15464b83b2457c2502fc3f3b9998cfb02ba68739026dd4285cc7130ac", + "src/termios/tty.rs": "a3ebab3b73db76fb5594be1bb4ec888a28a63637f8cd0211fdb1b3b645cc2ca2", + "src/termios/types.rs": "c30ab7e4e32ffe896b75eda882c7672b5d8b36d9d87f3a1e4bf31f213a43d0e2", + "src/thread/clock.rs": "469326c822dfb63405ee8537552cedde0b344978280e6645bbadd47dedc71e18", "src/thread/futex.rs": "4e78c84589b535ca9ca633633696ef212393a98f2890b181acaa8f908fbc5ae2", - "src/thread/id.rs": "f905c1c672082215c6502f88e7123a33abadb25791d3ee967335567560dfced3", - "src/thread/libcap.rs": "60c959f60c6fcc6f57ed613f21d40fdd9f6cf9876b79f10fa951a6ee5bedb0e0", + "src/thread/id.rs": "f25a6dbcff0e0e7a429ce5e8406afcba3b74f10ad3065c015f8e728fd6880e53", + "src/thread/libcap.rs": "ee1f320d860a3decbec8052897d9e9484591e4b0b64b3b5b419f4d43d144422e", "src/thread/mod.rs": "6fc33eb022c4ab7f950dfb4fae6ab70b1acbcdbeacd909ae1848e7e54076c310", - "src/thread/prctl.rs": "c4d4df3a32c65d7bd9e753c6983fd7ab12f26465f6627e33ae4d6335ae02f59e", - "src/thread/setns.rs": "5e08f98300e2ca8fc99272cf5408f0b27cb4c8ece54d76b92ede656982f11e69", - "src/time/clock.rs": "cbe15f6abe995476c815b31a9c3a931ad7292ec853342bc0fcb4417df1a558f1", + "src/thread/prctl.rs": "b1ad06ccca02a3b4311b8ccc935c2e828d413947521d2b1ba9adaec5017959dd", + "src/thread/setns.rs": "ba37cbedcd5b6ef1e09422fbb8caa9fd94e25ebf6930fc7ccc778944cd078cb3", + "src/time/clock.rs": "e59a29f1bed8c31c3d5b6fad60f2d4fa6cab8dd8e86148bb3693a5e3a1ce735f", "src/time/mod.rs": "43afee938c80d124d04d4ba190c03f4d21d1e3bfc154fff309211e4f6eabe940", "src/time/timerfd.rs": "f17092b84553741aa2d2b44c6992b5d2c8c96cc2c2007fc9a2c6b2064485e53f", - "src/utils.rs": "41765307b22b7cf8e21e83735308c598da8a83b52b5b7eafa175bf39f1528fbb", - "src/weak.rs": "20226da10a0380ef341fa1919c329cf522b46071bcc8d36fd7c93e2aabd63f83" + "src/timespec.rs": "79c7af1bfb12b56fd482b778dd783d82c6f3233b26bb11ae3dceb454036b1da7", + "src/ugid.rs": "6616c6e35b7e43aee5b150f1efae7a50711e0947943c9a96833dbe214ad9e85f", + "src/utils.rs": "9ae76f8a41d6cc350cdd58c9084b5c3a5a708eeecd769783debdbcbaef442182", + "src/weak.rs": "22070a3fa6e526d851bac81c551aa5cb4f9e609687075999c6d50973eeec3a98" }, - "package": "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" + "package": "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" } diff -Nru temporalio-1.3.0/vendor/rustix/Cargo.toml temporalio-1.3.0/vendor/rustix/Cargo.toml --- temporalio-1.3.0/vendor/rustix/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,10 +10,10 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" -rust-version = "1.48" +edition = "2021" +rust-version = "1.63" name = "rustix" -version = "0.37.23" +version = "0.38.8" authors = [ "Dan Gohman ", "Jakub Konka ", @@ -78,7 +78,8 @@ package = "rustc-std-workspace-alloc" [dependencies.bitflags] -version = "1.3.2" +version = "2.3.3" +default-features = false [dependencies.compiler_builtins] version = "0.1.49" @@ -89,12 +90,6 @@ optional = true package = "rustc-std-workspace-core" -[dependencies.io-lifetimes] -version = "1.0.10" -features = ["close"] -optional = true -default-features = false - [dependencies.itoa] version = "1.0.1" optional = true @@ -103,13 +98,8 @@ [dev-dependencies.flate2] version = "1.0" -[dev-dependencies.io-lifetimes] -version = "1.0.10" -features = ["close"] -default-features = false - [dev-dependencies.libc] -version = "0.2.144" +version = "0.2.147" [dev-dependencies.libc_errno] version = "0.3.1" @@ -120,52 +110,59 @@ version = "0.9.0" [dev-dependencies.serial_test] -version = "0.6" +version = "2.0.0" -[dev-dependencies.tempfile] -version = "3.4.0" +[dev-dependencies.static_assertions] +version = "1.1.0" -[build-dependencies.cc] -version = "1.0.68" -optional = true +[dev-dependencies.tempfile] +version = "3.5.0" [features] all-apis = [ + "event", "fs", "io_uring", "mm", + "mount", "net", "param", + "pipe", "process", "procfs", "pty", "rand", "runtime", + "system", + "stdio", "termios", "thread", "time", ] -all-impls = [ - "os_pipe", - "fs-err", -] +cc = [] default = [ "std", "use-libc-auxv", ] +event = [] fs = [] -fs-err = ["io-lifetimes/fs-err"] io_uring = [ "fs", "net", + "linux-raw-sys/io_uring", ] linux_4_11 = [] linux_latest = ["linux_4_11"] mm = [] -net = [] -os_pipe = ["io-lifetimes/os_pipe"] +mount = [] +net = [ + "linux-raw-sys/net", + "linux-raw-sys/netlink", + "linux-raw-sys/if_ether", +] param = ["fs"] -process = [] +pipe = [] +process = ["linux-raw-sys/prctl"] procfs = [ "once_cell", "itoa", @@ -176,7 +173,7 @@ "fs", ] rand = [] -runtime = [] +runtime = ["linux-raw-sys/prctl"] rustc-dep-of-std = [ "core", "alloc", @@ -184,18 +181,20 @@ "linux-raw-sys/rustc-dep-of-std", "bitflags/rustc-dep-of-std", ] -std = ["io-lifetimes"] +std = ["bitflags/std"] +stdio = [] +system = ["linux-raw-sys/system"] termios = [] -thread = [] +thread = ["linux-raw-sys/prctl"] time = [] use-libc = [ "libc_errno", "libc", ] -use-libc-auxv = ["libc"] +use-libc-auxv = [] -[target."cfg(all(any(target_os = \"android\", target_os = \"linux\"), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\"))))))))".dependencies.linux-raw-sys] -version = "0.3.6" +[target."cfg(all(any(target_os = \"android\", target_os = \"linux\"), any(rustix_use_libc, miri, not(all(target_os = \"linux\", target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))".dependencies.linux-raw-sys] +version = "0.4.3" features = [ "general", "ioctl", @@ -206,19 +205,19 @@ [target."cfg(all(criterion, not(any(target_os = \"emscripten\", target_os = \"wasi\"))))".dev-dependencies.criterion] version = "0.4" -[target."cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))".dependencies.libc] -version = "0.2.144" +[target."cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"))))".dependencies.libc] +version = "0.2.147" features = ["extra_traits"] optional = true -[target."cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))".dependencies.libc_errno] +[target."cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"))))".dependencies.libc_errno] version = "0.3.1" optional = true default-features = false package = "errno" -[target."cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))".dependencies.linux-raw-sys] -version = "0.3.6" +[target."cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"))))".dependencies.linux-raw-sys] +version = "0.4.3" features = [ "general", "errno", @@ -227,11 +226,11 @@ ] default-features = false -[target."cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\"))))))))".dependencies.libc] -version = "0.2.144" +[target."cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))".dependencies.libc] +version = "0.2.147" features = ["extra_traits"] -[target."cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\"))))))))".dependencies.libc_errno] +[target."cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))".dependencies.libc_errno] version = "0.3.1" default-features = false package = "errno" diff -Nru temporalio-1.3.0/vendor/rustix/README.md temporalio-1.3.0/vendor/rustix/README.md --- temporalio-1.3.0/vendor/rustix/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -18,7 +18,7 @@ `rustix` provides efficient memory-safe and [I/O-safe] wrappers to POSIX-like, Unix-like, Linux, and Winsock2 syscall-like APIs, with configurable backends. It uses Rust references, slices, and return values instead of raw pointers, and -[`io-lifetimes`] instead of raw file descriptors, providing memory safety, +[I/O safety types] instead of raw file descriptors, providing memory safety, [I/O safety], and [provenance]. It uses `Result`s for reporting errors, [`bitflags`] instead of bare integer flags, an [`Arg`] trait with optimizations to efficiently accept any Rust string type, and several other efficient @@ -33,7 +33,7 @@ * linux_raw, which uses raw Linux system calls and vDSO calls, and is supported on Linux on x86-64, x86, aarch64, riscv64gc, powerpc64le, - arm (v5 onwards), mipsel, and mips64el, with stable, nightly, and 1.48 Rust. + arm (v5 onwards), mipsel, and mips64el, with stable, nightly, and 1.63 Rust. - By being implemented entirely in Rust, avoiding `libc`, `errno`, and pthread cancellation, and employing some specialized optimizations, most functions compile down to very efficient code, which can often be fully inlined into @@ -57,35 +57,46 @@ | Name | Description | ---------- | --------------------- -| `fs` | [`rustix::fs`] and [`rustix::path`]—Filesystem operations. +| `event` | [`rustix::event`]—Polling and event operations. +| `fs` | [`rustix::fs`]—Filesystem operations. | `io_uring` | [`rustix::io_uring`]—Linux io_uring. | `mm` | [`rustix::mm`]—Memory map operations. -| `net` | [`rustix::net`] and [`rustix::path`]—Network-related operations. +| `mount` | [`rustix::mount`]—Linux mount API. +| `net` | [`rustix::net`]—Network-related operations. | `param` | [`rustix::param`]—Process parameters. +| `pipe` | [`rustix::pipe`]—Pipe operations. | `process` | [`rustix::process`]—Process-associated operations. -| `pty` | [`rustix::pty`]—Pseduoterminal operations. +| `procfs` | [`rustix::procfs`]—Utilities for reading `/proc` on Linux. +| `pty` | [`rustix::pty`]—Pseudoterminal operations. | `rand` | [`rustix::rand`]—Random-related operations. +| `stdio` | [`rustix::stdio`]—Stdio-related operations. +| `system` | [`rustix::system`]—System-related operations. | `termios` | [`rustix::termios`]—Terminal I/O stream operations. | `thread` | [`rustix::thread`]—Thread-associated operations. | `time` | [`rustix::time`]—Time-related operations. | | | `use-libc` | Enable the libc backend. +[`rustix::event`]: https://docs.rs/rustix/*/rustix/fs/index.html [`rustix::fs`]: https://docs.rs/rustix/*/rustix/fs/index.html [`rustix::io_uring`]: https://docs.rs/rustix/*/rustix/io_uring/index.html [`rustix::mm`]: https://docs.rs/rustix/*/rustix/mm/index.html +[`rustix::mount`]: https://docs.rs/rustix/*/rustix/mount/index.html [`rustix::net`]: https://docs.rs/rustix/*/rustix/net/index.html [`rustix::param`]: https://docs.rs/rustix/*/rustix/param/index.html +[`rustix::pipe`]: https://docs.rs/rustix/*/rustix/pipe/index.html [`rustix::process`]: https://docs.rs/rustix/*/rustix/process/index.html +[`rustix::procfs`]: https://docs.rs/rustix/*/rustix/procfs/index.html [`rustix::pty`]: https://docs.rs/rustix/*/rustix/pty/index.html [`rustix::rand`]: https://docs.rs/rustix/*/rustix/rand/index.html +[`rustix::stdio`]: https://docs.rs/rustix/*/rustix/stdio/index.html +[`rustix::system`]: https://docs.rs/rustix/*/rustix/system/index.html [`rustix::termios`]: https://docs.rs/rustix/*/rustix/termios/index.html [`rustix::thread`]: https://docs.rs/rustix/*/rustix/thread/index.html [`rustix::time`]: https://docs.rs/rustix/*/rustix/time/index.html [`rustix::io`]: https://docs.rs/rustix/*/rustix/io/index.html [`rustix::fd`]: https://docs.rs/rustix/*/rustix/fd/index.html [`rustix::ffi`]: https://docs.rs/rustix/*/rustix/ffi/index.html -[`rustix::path`]: https://docs.rs/rustix/*/rustix/path/index.html ## 64-bit Large File Support (LFS) and Year 2038 (y2038) support @@ -111,16 +122,15 @@ supported on Redox, such as `*at` functions like `openat`, which are important features for `rustix`. -`rustix` has its own code for making direct syscalls, similar to the [`sc`] and -[`scall`] crates, though `rustix` can use either the Rust `asm!` macro or -out-of-line `.s` files so it supports Rust versions from 1.48 through Nightly. +`rustix` has its own code for making direct syscalls, similar to the +[`syscall`], [`sc`], and [`scall`] crates, using the Rust `asm!` macro. `rustix` can also use Linux's vDSO mechanism to optimize Linux `clock_gettime` on all architectures, and all Linux system calls on x86. And `rustix`'s syscalls report errors using an optimized `Errno` type. `rustix`'s `*at` functions are similar to the [`openat`] crate, but `rustix` provides them as free functions rather than associated functions of a `Dir` -type. `rustix`'s `cwd()` function exposes the special `AT_FDCWD` value in a safe +type. `rustix`'s `CWD` constant exposes the special `AT_FDCWD` value in a safe way, so users don't need to open `.` to get a current-directory handle. `rustix`'s `openat2` function is similar to the [`openat2`] crate, but uses I/O @@ -135,7 +145,7 @@ ## Minimum Supported Rust Version (MSRV) This crate currently works on the version of [Rust on Debian stable], which is -currently Rust 1.48. This policy may change in the future, in minor version +currently Rust 1.63. This policy may change in the future, in minor version releases, so users using a fixed version of Rust should pin to a specific version of this crate. @@ -151,8 +161,7 @@ [`scall`]: https://crates.io/crates/scall [`openat`]: https://crates.io/crates/openat [`openat2`]: https://crates.io/crates/openat2 -[`fs-set-times`]: https://crates.io/crates/fs-set-times -[`io-lifetimes`]: https://crates.io/crates/io-lifetimes +[I/O safety types]: https://doc.rust-lang.org/stable/std/os/fd/index.html#structs [`termios`]: https://crates.io/crates/termios [`libc`]: https://crates.io/crates/libc [`windows-sys`]: https://crates.io/crates/windows-sys @@ -165,6 +174,6 @@ [I/O-safe]: https://github.com/rust-lang/rfcs/blob/master/text/3128-io-safety.md [I/O safety]: https://github.com/rust-lang/rfcs/blob/master/text/3128-io-safety.md [provenance]: https://github.com/rust-lang/rust/issues/95228 -[`OwnedFd`]: https://docs.rs/io-lifetimes/*/io_lifetimes/struct.OwnedFd.html -[`AsFd`]: https://docs.rs/io-lifetimes/*/io_lifetimes/trait.AsFd.html +[`OwnedFd`]: https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html +[`AsFd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.AsFd.html [`NOSYS`]: https://docs.rs/rustix/*/rustix/io/struct.Errno.html#associatedconstant.NOSYS diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/conv.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/conv.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/conv.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/conv.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,18 +2,13 @@ //! `c_uint`, or libc-specific pointer types. This module provides functions //! for converting between rustix's types and libc types. -#![allow(dead_code)] - use super::c; -use super::fd::{AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, LibcFd, OwnedFd, RawFd}; -#[cfg(not(windows))] -#[cfg(feature = "fs")] -use super::offset::libc_off_t; +#[cfg(not(any(windows, target_os = "espidf")))] +use super::fd::IntoRawFd; +use super::fd::{AsRawFd, BorrowedFd, FromRawFd, LibcFd, OwnedFd, RawFd}; #[cfg(not(windows))] use crate::ffi::CStr; use crate::io; -#[cfg(windows)] -use core::convert::TryInto; #[cfg(not(windows))] #[inline] @@ -21,7 +16,7 @@ c.as_ptr() } -#[cfg(not(windows))] +#[cfg(not(any(windows, target_os = "espidf", target_os = "wasi")))] #[inline] pub(super) fn no_fd() -> LibcFd { -1 @@ -32,6 +27,7 @@ fd.as_raw_fd() as LibcFd } +#[cfg(not(any(windows, target_os = "espidf", target_os = "redox")))] #[inline] pub(super) fn owned_fd(fd: OwnedFd) -> LibcFd { fd.into_raw_fd() as LibcFd @@ -46,15 +42,7 @@ } } -#[inline] -pub(super) fn syscall_ret(raw: c::c_long) -> io::Result<()> { - if raw == 0 { - Ok(()) - } else { - Err(io::Errno::last_os_error()) - } -} - +#[cfg(apple)] #[inline] pub(super) fn nonnegative_ret(raw: c::c_int) -> io::Result<()> { if raw >= 0 { @@ -64,6 +52,7 @@ } } +#[cfg(not(any(windows, target_os = "wasi")))] #[inline] pub(super) unsafe fn ret_infallible(raw: c::c_int) { debug_assert_eq!(raw, 0, "unexpected error: {:?}", io::Errno::last_os_error()); @@ -78,6 +67,7 @@ } } +#[cfg(linux_kernel)] #[inline] pub(super) fn ret_u32(raw: c::c_int) -> io::Result { if raw == -1 { @@ -97,35 +87,10 @@ } } -#[inline] -pub(super) fn syscall_ret_usize(raw: c::c_long) -> io::Result { - if raw == -1 { - Err(io::Errno::last_os_error()) - } else { - debug_assert!(raw >= 0); - Ok(raw as c::ssize_t as usize) - } -} - -#[cfg(linux_kernel)] -#[inline] -pub(super) fn syscall_ret_u32(raw: c::c_long) -> io::Result { - if raw == -1 { - Err(io::Errno::last_os_error()) - } else { - let r32 = raw as u32; - - // Converting `raw` to `u32` should be lossless. - debug_assert_eq!(r32 as c::c_long, raw); - - Ok(r32) - } -} - #[cfg(not(windows))] #[cfg(feature = "fs")] #[inline] -pub(super) fn ret_off_t(raw: libc_off_t) -> io::Result { +pub(super) fn ret_off_t(raw: c::off_t) -> io::Result { if raw == -1 { Err(io::Errno::last_os_error()) } else { @@ -133,7 +98,7 @@ } } -#[cfg(not(windows))] +#[cfg(not(any(windows, target_os = "wasi")))] #[inline] pub(super) fn ret_pid_t(raw: c::pid_t) -> io::Result { if raw == -1 { @@ -158,6 +123,7 @@ } } +#[cfg(not(any(windows, target_os = "wasi")))] #[inline] pub(super) fn ret_discarded_fd(raw: LibcFd) -> io::Result<()> { if raw == !0 { @@ -167,6 +133,7 @@ } } +#[cfg(not(any(windows, target_os = "wasi")))] #[inline] pub(super) fn ret_discarded_char_ptr(raw: *mut c::c_char) -> io::Result<()> { if raw.is_null() { @@ -176,24 +143,8 @@ } } -/// Convert a `c_long` returned from `syscall` to an `OwnedFd`, if valid. -/// -/// # Safety -/// -/// The caller must ensure that this is the return value of a `syscall` call -/// which returns an owned file descriptor. -#[cfg(not(windows))] -#[inline] -pub(super) unsafe fn syscall_ret_owned_fd(raw: c::c_long) -> io::Result { - if raw == -1 { - Err(io::Errno::last_os_error()) - } else { - Ok(OwnedFd::from_raw_fd(raw as RawFd)) - } -} - /// Convert the buffer-length argument value of a `send` or `recv` call. -#[cfg(not(windows))] +#[cfg(not(any(windows, target_os = "redox", target_os = "wasi")))] #[inline] pub(super) fn send_recv_len(len: usize) -> usize { len @@ -210,7 +161,7 @@ } /// Convert the return value of a `send` or `recv` call. -#[cfg(not(windows))] +#[cfg(not(any(windows, target_os = "redox", target_os = "wasi")))] #[inline] pub(super) fn ret_send_recv(len: isize) -> io::Result { ret_usize(len) @@ -225,7 +176,7 @@ /// Convert the value to the `msg_iovlen` field of a `msghdr` struct. #[cfg(all( - not(any(windows, target_os = "wasi")), + not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")), any( target_os = "android", all(target_os = "linux", not(target_env = "musl")) @@ -238,7 +189,7 @@ /// Convert the value to the `msg_iovlen` field of a `msghdr` struct. #[cfg(all( - not(any(windows, target_os = "wasi")), + not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")), not(any( target_os = "android", all(target_os = "linux", not(target_env = "musl")) @@ -246,7 +197,6 @@ ))] #[inline] pub(crate) fn msg_iov_len(len: usize) -> c::c_int { - use core::convert::TryInto; len.try_into().unwrap_or(c::c_int::MAX) } @@ -256,12 +206,12 @@ solarish, target_env = "musl", target_os = "emscripten", + target_os = "fuchsia", target_os = "haiku", - target_os = "fuchsia" + target_os = "nto", ))] #[inline] pub(crate) fn msg_control_len(len: usize) -> c::socklen_t { - use core::convert::TryInto; len.try_into().unwrap_or(c::socklen_t::MAX) } @@ -269,12 +219,15 @@ #[cfg(not(any( bsd, solarish, + windows, target_env = "musl", target_os = "emscripten", - target_os = "haiku", + target_os = "espidf", target_os = "fuchsia", - windows, - target_os = "wasi" + target_os = "haiku", + target_os = "nto", + target_os = "redox", + target_os = "wasi", )))] #[inline] pub(crate) fn msg_control_len(len: usize) -> c::size_t { diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/c.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/c.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/c.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/c.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,9 @@ +//! Libc and supplemental types and constants. + +#![allow(unused_imports)] + +// Import everything from libc, but we'll add some stuff and override some +// things below. pub(crate) use libc::*; /// `PROC_SUPER_MAGIC`—The magic number for the procfs filesystem. @@ -7,3 +13,505 @@ /// `NFS_SUPER_MAGIC`—The magic number for the NFS filesystem. #[cfg(all(linux_kernel, target_env = "musl"))] pub(crate) const NFS_SUPER_MAGIC: u32 = 0x0000_6969; + +// TODO: Upstream these. +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_TSN: c_int = linux_raw_sys::if_ether::ETH_P_TSN as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_ERSPAN2: c_int = linux_raw_sys::if_ether::ETH_P_ERSPAN2 as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_ERSPAN: c_int = linux_raw_sys::if_ether::ETH_P_ERSPAN as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_PROFINET: c_int = linux_raw_sys::if_ether::ETH_P_PROFINET as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_REALTEK: c_int = linux_raw_sys::if_ether::ETH_P_REALTEK as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_ETHERCAT: c_int = linux_raw_sys::if_ether::ETH_P_ETHERCAT as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_PREAUTH: c_int = linux_raw_sys::if_ether::ETH_P_PREAUTH as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_LLDP: c_int = linux_raw_sys::if_ether::ETH_P_LLDP as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_MRP: c_int = linux_raw_sys::if_ether::ETH_P_MRP as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_NCSI: c_int = linux_raw_sys::if_ether::ETH_P_NCSI as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_CFM: c_int = linux_raw_sys::if_ether::ETH_P_CFM as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_IBOE: c_int = linux_raw_sys::if_ether::ETH_P_IBOE as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_HSR: c_int = linux_raw_sys::if_ether::ETH_P_HSR as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_NSH: c_int = linux_raw_sys::if_ether::ETH_P_NSH as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_DSA_8021Q: c_int = linux_raw_sys::if_ether::ETH_P_DSA_8021Q as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_DSA_A5PSW: c_int = linux_raw_sys::if_ether::ETH_P_DSA_A5PSW as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_IFE: c_int = linux_raw_sys::if_ether::ETH_P_IFE as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_CAN: c_int = linux_raw_sys::if_ether::ETH_P_CAN as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_CANXL: c_int = linux_raw_sys::if_ether::ETH_P_CANXL as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_XDSA: c_int = linux_raw_sys::if_ether::ETH_P_XDSA as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_MAP: c_int = linux_raw_sys::if_ether::ETH_P_MAP as _; +#[cfg(all(linux_kernel, feature = "net"))] +pub(crate) const ETH_P_MCTP: c_int = linux_raw_sys::if_ether::ETH_P_MCTP as _; + +#[cfg(all( + linux_kernel, + any( + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6", + target_arch = "sparc", + target_arch = "sparc64" + ) +))] +pub(crate) const SIGEMT: c_int = linux_raw_sys::general::SIGEMT as _; + +// TODO: Upstream these. +#[cfg(all(linux_kernel, feature = "termios"))] +pub(crate) const IUCLC: tcflag_t = linux_raw_sys::general::IUCLC as _; +#[cfg(all(linux_kernel, feature = "termios"))] +pub(crate) const XCASE: tcflag_t = linux_raw_sys::general::XCASE as _; + +// On PowerPC, the regular `termios` has the `termios2` fields and there is no +// `termios2`. linux-raw-sys has aliases `termios2` to `termios` to cover this +// difference, but we still need to manually import it since `libc` doesn't +// have this. +#[cfg(all( + linux_kernel, + feature = "termios", + any(target_arch = "powerpc", target_arch = "powerpc64") +))] +pub(crate) use { + linux_raw_sys::general::{termios2, CIBAUD}, + linux_raw_sys::ioctl::{TCGETS2, TCSETS2, TCSETSF2, TCSETSW2}, +}; + +// Automatically enable “large file†support (LFS) features. + +#[cfg(target_os = "vxworks")] +pub(super) use libc::_Vx_ticks64_t as _Vx_ticks_t; +#[cfg(linux_kernel)] +pub(super) use libc::fallocate64 as fallocate; +#[cfg(not(any(target_arch = "aarch64", target_arch = "riscv64")))] +#[cfg(any(linux_like, target_os = "aix"))] +pub(super) use libc::open64 as open; +#[cfg(any(linux_kernel, target_os = "aix", target_os = "l4re"))] +pub(super) use libc::posix_fallocate64 as posix_fallocate; +#[cfg(any(all(linux_like, not(target_os = "android")), target_os = "aix"))] +pub(super) use libc::{blkcnt64_t as blkcnt_t, rlim64_t as rlim_t}; +#[cfg(target_os = "aix")] +pub(super) use libc::{ + blksize64_t as blksize_t, fstat64 as fstat, fstatat, fstatfs64 as fstatfs, + fstatvfs64 as fstatvfs, ftruncate64 as ftruncate, getrlimit64 as getrlimit, ino_t, + lseek64 as lseek, mmap, off64_t as off_t, openat, posix_fadvise64 as posix_fadvise, preadv, + pwritev, rlimit64 as rlimit, setrlimit64 as setrlimit, statfs64 as statfs, + statvfs64 as statvfs, RLIM_INFINITY, +}; +#[cfg(linux_like)] +pub(super) use libc::{ + fstat64 as fstat, fstatat64 as fstatat, fstatfs64 as fstatfs, fstatvfs64 as fstatvfs, + ftruncate64 as ftruncate, getrlimit64 as getrlimit, ino64_t as ino_t, lseek64 as lseek, + mmap64 as mmap, off64_t as off_t, openat64 as openat, posix_fadvise64 as posix_fadvise, + rlimit64 as rlimit, setrlimit64 as setrlimit, statfs64 as statfs, statvfs64 as statvfs, + RLIM64_INFINITY as RLIM_INFINITY, +}; +#[cfg(apple)] +pub(super) use libc::{ + host_info64_t as host_info_t, host_statistics64 as host_statistics, + vm_statistics64_t as vm_statistics_t, +}; +#[cfg(not(all( + linux_kernel, + any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6" + ) +)))] +#[cfg(any(linux_like, target_os = "aix"))] +pub(super) use libc::{lstat64 as lstat, stat64 as stat}; +#[cfg(any(linux_kernel, target_os = "aix", target_os = "emscripten"))] +pub(super) use libc::{pread64 as pread, pwrite64 as pwrite}; +#[cfg(any(target_os = "linux", target_os = "emscripten"))] +pub(super) use libc::{preadv64 as preadv, pwritev64 as pwritev}; + +#[cfg(all(target_os = "linux", target_env = "gnu"))] +pub(super) unsafe fn prlimit( + pid: libc::pid_t, + resource: libc::__rlimit_resource_t, + new_limit: *const libc::rlimit64, + old_limit: *mut libc::rlimit64, +) -> libc::c_int { + // `prlimit64` wasn't supported in glibc until 2.13. + weak_or_syscall! { + fn prlimit64( + pid: libc::pid_t, + resource: libc::__rlimit_resource_t, + new_limit: *const libc::rlimit64, + old_limit: *mut libc::rlimit64 + ) via SYS_prlimit64 -> libc::c_int + } + + prlimit64(pid, resource, new_limit, old_limit) +} + +#[cfg(all(target_os = "linux", target_env = "musl"))] +pub(super) unsafe fn prlimit( + pid: libc::pid_t, + resource: libc::c_int, + new_limit: *const libc::rlimit64, + old_limit: *mut libc::rlimit64, +) -> libc::c_int { + weak_or_syscall! { + fn prlimit64( + pid: libc::pid_t, + resource: libc::c_int, + new_limit: *const libc::rlimit64, + old_limit: *mut libc::rlimit64 + ) via SYS_prlimit64 -> libc::c_int + } + + prlimit64(pid, resource, new_limit, old_limit) +} + +#[cfg(target_os = "android")] +pub(super) unsafe fn prlimit( + pid: libc::pid_t, + resource: libc::c_int, + new_limit: *const libc::rlimit64, + old_limit: *mut libc::rlimit64, +) -> libc::c_int { + weak_or_syscall! { + fn prlimit64( + pid: libc::pid_t, + resource: libc::c_int, + new_limit: *const libc::rlimit64, + old_limit: *mut libc::rlimit64 + ) via SYS_prlimit64 -> libc::c_int + } + + prlimit64(pid, resource, new_limit, old_limit) +} + +// 64-bit offsets on 32-bit platforms are passed in endianness-specific +// lo/hi pairs. See src/backend/linux_raw/conv.rs for details. +#[cfg(all(linux_kernel, target_endian = "little", target_pointer_width = "32"))] +fn lo(x: i64) -> usize { + (x >> 32) as usize +} +#[cfg(all(linux_kernel, target_endian = "little", target_pointer_width = "32"))] +fn hi(x: i64) -> usize { + x as usize +} +#[cfg(all(linux_kernel, target_endian = "big", target_pointer_width = "32"))] +fn lo(x: i64) -> usize { + x as usize +} +#[cfg(all(linux_kernel, target_endian = "big", target_pointer_width = "32"))] +fn hi(x: i64) -> usize { + (x >> 32) as usize +} + +#[cfg(target_os = "android")] +mod readwrite_pv64 { + use super::*; + + pub(in super::super) unsafe fn preadv64( + fd: libc::c_int, + iov: *const libc::iovec, + iovcnt: libc::c_int, + offset: libc::off64_t, + ) -> libc::ssize_t { + // Older Android libc lacks `preadv64`, so use the `weak!` mechanism to + // test for it, and call back to `libc::syscall`. We don't use + // `weak_or_syscall` here because we need to pass the 64-bit offset + // specially. + weak! { + fn preadv64(libc::c_int, *const libc::iovec, libc::c_int, libc::off64_t) -> libc::ssize_t + } + if let Some(fun) = preadv64.get() { + fun(fd, iov, iovcnt, offset) + } else { + #[cfg(target_pointer_width = "32")] + { + syscall! { + fn preadv( + fd: libc::c_int, + iov: *const libc::iovec, + iovcnt: libc::c_int, + offset_hi: usize, + offset_lo: usize + ) via SYS_preadv -> libc::ssize_t + } + preadv(fd, iov, iovcnt, hi(offset), lo(offset)) + } + #[cfg(target_pointer_width = "64")] + { + syscall! { + fn preadv( + fd: libc::c_int, + iov: *const libc::iovec, + iovcnt: libc::c_int, + offset: libc::off_t + ) via SYS_preadv -> libc::ssize_t + } + preadv(fd, iov, iovcnt, offset) + } + } + } + pub(in super::super) unsafe fn pwritev64( + fd: libc::c_int, + iov: *const libc::iovec, + iovcnt: libc::c_int, + offset: libc::off64_t, + ) -> libc::ssize_t { + // See the comments in `preadv64`. + weak! { + fn pwritev64(libc::c_int, *const libc::iovec, libc::c_int, libc::off64_t) -> libc::ssize_t + } + if let Some(fun) = pwritev64.get() { + fun(fd, iov, iovcnt, offset) + } else { + #[cfg(target_pointer_width = "32")] + { + syscall! { + fn pwritev( + fd: libc::c_int, + iov: *const libc::iovec, + iovcnt: libc::c_int, + offset_hi: usize, + offset_lo: usize + ) via SYS_pwritev -> libc::ssize_t + } + pwritev(fd, iov, iovcnt, hi(offset), lo(offset)) + } + #[cfg(target_pointer_width = "64")] + { + syscall! { + fn pwritev( + fd: libc::c_int, + iov: *const libc::iovec, + iovcnt: libc::c_int, + offset: libc::off_t + ) via SYS_pwritev -> libc::ssize_t + } + pwritev(fd, iov, iovcnt, offset) + } + } + } +} +#[cfg(target_os = "android")] +pub(super) use readwrite_pv64::{preadv64 as preadv, pwritev64 as pwritev}; + +// macOS added preadv and pwritev in version 11.0 +#[cfg(apple)] +mod readwrite_pv { + weakcall! { + pub(in super::super) fn preadv( + fd: libc::c_int, + iov: *const libc::iovec, + iovcnt: libc::c_int, + offset: libc::off_t + ) -> libc::ssize_t + } + weakcall! { + pub(in super::super) fn pwritev( + fd: libc::c_int, + iov: *const libc::iovec, + iovcnt: libc::c_int, offset: libc::off_t + ) -> libc::ssize_t + } +} +#[cfg(apple)] +pub(super) use readwrite_pv::{preadv, pwritev}; + +// glibc added `preadv64v2` and `pwritev64v2` in version 2.26. +#[cfg(all(target_os = "linux", target_env = "gnu"))] +mod readwrite_pv64v2 { + use super::*; + + pub(in super::super) unsafe fn preadv64v2( + fd: libc::c_int, + iov: *const libc::iovec, + iovcnt: libc::c_int, + offset: libc::off64_t, + flags: libc::c_int, + ) -> libc::ssize_t { + // Older glibc lacks `preadv64v2`, so use the `weak!` mechanism to + // test for it, and call back to `libc::syscall`. We don't use + // `weak_or_syscall` here because we need to pass the 64-bit offset + // specially. + weak! { + fn preadv64v2(libc::c_int, *const libc::iovec, libc::c_int, libc::off64_t, libc::c_int) -> libc::ssize_t + } + if let Some(fun) = preadv64v2.get() { + fun(fd, iov, iovcnt, offset, flags) + } else { + #[cfg(target_pointer_width = "32")] + { + syscall! { + fn preadv2( + fd: libc::c_int, + iov: *const libc::iovec, + iovcnt: libc::c_int, + offset_hi: usize, + offset_lo: usize, + flags: libc::c_int + ) via SYS_preadv2 -> libc::ssize_t + } + preadv2(fd, iov, iovcnt, hi(offset), lo(offset), flags) + } + #[cfg(target_pointer_width = "64")] + { + syscall! { + fn preadv2( + fd: libc::c_int, + iov: *const libc::iovec, + iovcnt: libc::c_int, + offset: libc::off_t, + flags: libc::c_int + ) via SYS_preadv2 -> libc::ssize_t + } + preadv2(fd, iov, iovcnt, offset, flags) + } + } + } + pub(in super::super) unsafe fn pwritev64v2( + fd: libc::c_int, + iov: *const libc::iovec, + iovcnt: libc::c_int, + offset: libc::off64_t, + flags: libc::c_int, + ) -> libc::ssize_t { + // See the comments in `preadv64v2`. + weak! { + fn pwritev64v2(libc::c_int, *const libc::iovec, libc::c_int, libc::off64_t, libc::c_int) -> libc::ssize_t + } + if let Some(fun) = pwritev64v2.get() { + fun(fd, iov, iovcnt, offset, flags) + } else { + #[cfg(target_pointer_width = "32")] + { + syscall! { + fn pwritev2( + fd: libc::c_int, + iov: *const libc::iovec, + iovec: libc::c_int, + offset_hi: usize, + offset_lo: usize, + flags: libc::c_int + ) via SYS_pwritev2 -> libc::ssize_t + } + pwritev2(fd, iov, iovcnt, hi(offset), lo(offset), flags) + } + #[cfg(target_pointer_width = "64")] + { + syscall! { + fn pwritev2( + fd: libc::c_int, + iov:*const libc::iovec, + iovcnt: libc::c_int, + offset: libc::off_t, + flags: libc::c_int + ) via SYS_pwritev2 -> libc::ssize_t + } + pwritev2(fd, iov, iovcnt, offset, flags) + } + } + } +} +#[cfg(all(target_os = "linux", target_env = "gnu"))] +pub(super) use readwrite_pv64v2::{preadv64v2 as preadv2, pwritev64v2 as pwritev2}; + +// On non-glibc, assume we don't have `pwritev2`/`preadv2` in libc and use +// `c::syscall` instead. +#[cfg(any( + target_os = "android", + all(target_os = "linux", not(target_env = "gnu")), +))] +mod readwrite_pv64v2 { + use super::*; + + pub(in super::super) unsafe fn preadv64v2( + fd: libc::c_int, + iov: *const libc::iovec, + iovcnt: libc::c_int, + offset: libc::off64_t, + flags: libc::c_int, + ) -> libc::ssize_t { + #[cfg(target_pointer_width = "32")] + { + syscall! { + fn preadv2( + fd: libc::c_int, + iov: *const libc::iovec, + iovcnt: libc::c_int, + offset_hi: usize, + offset_lo: usize, + flags: libc::c_int + ) via SYS_preadv2 -> libc::ssize_t + } + preadv2(fd, iov, iovcnt, hi(offset), lo(offset), flags) + } + #[cfg(target_pointer_width = "64")] + { + syscall! { + fn preadv2( + fd: libc::c_int, + iov: *const libc::iovec, + iovcnt: libc::c_int, + offset: libc::off_t, + flags: libc::c_int + ) via SYS_preadv2 -> libc::ssize_t + } + preadv2(fd, iov, iovcnt, offset, flags) + } + } + pub(in super::super) unsafe fn pwritev64v2( + fd: libc::c_int, + iov: *const libc::iovec, + iovcnt: libc::c_int, + offset: libc::off64_t, + flags: libc::c_int, + ) -> libc::ssize_t { + #[cfg(target_pointer_width = "32")] + { + syscall! { + fn pwritev2( + fd: libc::c_int, + iov: *const libc::iovec, + iovcnt: libc::c_int, + offset_hi: usize, + offset_lo: usize, + flags: libc::c_int + ) via SYS_pwritev2 -> libc::ssize_t + } + pwritev2(fd, iov, iovcnt, hi(offset), lo(offset), flags) + } + #[cfg(target_pointer_width = "64")] + { + syscall! { + fn pwritev2( + fd: libc::c_int, + iov:*const libc::iovec, + iovcnt: libc::c_int, + offset: libc::off_t, + flags: libc::c_int + ) via SYS_pwritev2 -> libc::ssize_t + } + pwritev2(fd, iov, iovcnt, offset, flags) + } + } +} +#[cfg(any( + target_os = "android", + all(target_os = "linux", not(target_env = "gnu")), +))] +pub(super) use readwrite_pv64v2::{preadv64v2 as preadv2, pwritev64v2 as pwritev2}; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/event/epoll.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/event/epoll.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/event/epoll.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/event/epoll.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,486 @@ +//! epoll support. +//! +//! This is an experiment, and it isn't yet clear whether epoll is the right +//! level of abstraction at which to introduce safety. But it works fairly well +//! in simple examples 🙂. +//! +//! # Examples +//! +//! ```no_run +//! # #[cfg(feature = "net")] +//! # fn main() -> std::io::Result<()> { +//! use rustix::event::epoll; +//! use rustix::fd::AsFd; +//! use rustix::io::{ioctl_fionbio, read, write}; +//! use rustix::net::{ +//! accept, bind_v4, listen, socket, AddressFamily, Ipv4Addr, SocketAddrV4, SocketType, +//! }; +//! use std::collections::HashMap; +//! use std::os::unix::io::AsRawFd; +//! +//! // Create a socket and listen on it. +//! let listen_sock = socket(AddressFamily::INET, SocketType::STREAM, None)?; +//! bind_v4(&listen_sock, &SocketAddrV4::new(Ipv4Addr::LOCALHOST, 0))?; +//! listen(&listen_sock, 1)?; +//! +//! // Create an epoll object. Using `Owning` here means the epoll object will +//! // take ownership of the file descriptors registered with it. +//! let epoll = epoll::create(epoll::CreateFlags::CLOEXEC)?; +//! +//! // Register the socket with the epoll object. +//! epoll::add( +//! &epoll, +//! &listen_sock, +//! epoll::EventData::new_u64(1), +//! epoll::EventFlags::IN, +//! )?; +//! +//! // Keep track of the sockets we've opened. +//! let mut next_id = epoll::EventData::new_u64(2); +//! let mut sockets = HashMap::new(); +//! +//! // Process events. +//! let mut event_list = epoll::EventVec::with_capacity(4); +//! loop { +//! epoll::wait(&epoll, &mut event_list, -1)?; +//! for event in &event_list { +//! let target = event.data; +//! if target.u64() == 1 { +//! // Accept a new connection, set it to non-blocking, and +//! // register to be notified when it's ready to write to. +//! let conn_sock = accept(&listen_sock)?; +//! ioctl_fionbio(&conn_sock, true)?; +//! epoll::add( +//! &epoll, +//! &conn_sock, +//! next_id, +//! epoll::EventFlags::OUT | epoll::EventFlags::ET, +//! )?; +//! +//! // Keep track of the socket. +//! sockets.insert(next_id, conn_sock); +//! next_id = epoll::EventData::new_u64(next_id.u64() + 1); +//! } else { +//! // Write a message to the stream and then unregister it. +//! let target = sockets.remove(&target).unwrap(); +//! write(&target, b"hello\n")?; +//! let _ = epoll::delete(&epoll, &target)?; +//! } +//! } +//! } +//! # } +//! # #[cfg(not(feature = "net"))] +//! # fn main() {} +//! ``` + +use crate::backend::c; +use crate::backend::conv::{ret, ret_owned_fd, ret_u32}; +use crate::fd::{AsFd, AsRawFd, OwnedFd}; +use crate::io; +use crate::utils::as_mut_ptr; +use alloc::vec::Vec; +use bitflags::bitflags; +use core::ffi::c_void; +use core::hash::{Hash, Hasher}; +use core::ptr::null_mut; +use core::slice; + +bitflags! { + /// `EPOLL_*` for use with [`new`]. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct CreateFlags: u32 { + /// `EPOLL_CLOEXEC` + const CLOEXEC = bitcast!(c::EPOLL_CLOEXEC); + } +} + +bitflags! { + /// `EPOLL*` for use with [`add`]. + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct EventFlags: u32 { + /// `EPOLLIN` + const IN = bitcast!(c::EPOLLIN); + + /// `EPOLLOUT` + const OUT = bitcast!(c::EPOLLOUT); + + /// `EPOLLPRI` + const PRI = bitcast!(c::EPOLLPRI); + + /// `EPOLLERR` + const ERR = bitcast!(c::EPOLLERR); + + /// `EPOLLHUP` + const HUP = bitcast!(c::EPOLLHUP); + + /// `EPOLLRDNORM` + const RDNORM = bitcast!(c::EPOLLRDNORM); + + /// `EPOLLRDBAND` + const RDBAND = bitcast!(c::EPOLLRDBAND); + + /// `EPOLLWRNORM` + const WRNORM = bitcast!(c::EPOLLWRNORM); + + /// `EPOLLWRBAND` + const WRBAND = bitcast!(c::EPOLLWRBAND); + + /// `EPOLLMSG` + const MSG = bitcast!(c::EPOLLMSG); + + /// `EPOLLRDHUP` + const RDHUP = bitcast!(c::EPOLLRDHUP); + + /// `EPOLLET` + const ET = bitcast!(c::EPOLLET); + + /// `EPOLLONESHOT` + const ONESHOT = bitcast!(c::EPOLLONESHOT); + + /// `EPOLLWAKEUP` + const WAKEUP = bitcast!(c::EPOLLWAKEUP); + + /// `EPOLLEXCLUSIVE` + #[cfg(not(target_os = "android"))] + const EXCLUSIVE = bitcast!(c::EPOLLEXCLUSIVE); + } +} + +/// `epoll_create1(flags)`—Creates a new epoll object. +/// +/// Use the [`CreateFlags::CLOEXEC`] flag to prevent the resulting file +/// descriptor from being implicitly passed across `exec` boundaries. +#[inline] +#[doc(alias = "epoll_create1")] +pub fn create(flags: CreateFlags) -> io::Result { + // SAFETY: We're calling `epoll_create1` via FFI and we know how it + // behaves. + unsafe { ret_owned_fd(c::epoll_create1(bitflags_bits!(flags))) } +} + +/// `epoll_ctl(self, EPOLL_CTL_ADD, data, event)`—Adds an element to an epoll +/// object. +/// +/// This registers interest in any of the events set in `events` occurring on +/// the file descriptor associated with `data`. +/// +/// If [`delete`] is not called on the I/O source passed into this function +/// before the I/O source is `close`d, then the `epoll` will act as if the I/O +/// source is still registered with it. This can lead to spurious events being +/// returned from [`wait`]. If a file descriptor is an +/// `Arc`, then `epoll` can be thought to maintain a +/// `Weak` to the file descriptor. +#[doc(alias = "epoll_ctl")] +pub fn add( + epoll: impl AsFd, + source: impl AsFd, + data: EventData, + event_flags: EventFlags, +) -> io::Result<()> { + // SAFETY: We're calling `epoll_ctl` via FFI and we know how it + // behaves. We use our own `Event` struct instead of libc's because + // ours preserves pointer provenance instead of just using a `u64`, + // and we have tests elsehwere for layout equivalence. + unsafe { + let raw_fd = source.as_fd().as_raw_fd(); + ret(c::epoll_ctl( + epoll.as_fd().as_raw_fd(), + c::EPOLL_CTL_ADD, + raw_fd, + as_mut_ptr(&mut Event { + flags: event_flags, + data, + }) + .cast(), + )) + } +} + +/// `epoll_ctl(self, EPOLL_CTL_MOD, target, event)`—Modifies an element in a +/// given epoll object. +/// +/// This sets the events of interest with `target` to `events`. +#[doc(alias = "epoll_ctl")] +pub fn modify( + epoll: impl AsFd, + source: impl AsFd, + data: EventData, + event_flags: EventFlags, +) -> io::Result<()> { + let raw_fd = source.as_fd().as_raw_fd(); + + // SAFETY: We're calling `epoll_ctl` via FFI and we know how it + // behaves. We use our own `Event` struct instead of libc's because + // ours preserves pointer provenance instead of just using a `u64`, + // and we have tests elsehwere for layout equivalence. + unsafe { + ret(c::epoll_ctl( + epoll.as_fd().as_raw_fd(), + c::EPOLL_CTL_MOD, + raw_fd, + as_mut_ptr(&mut Event { + flags: event_flags, + data, + }) + .cast(), + )) + } +} + +/// `epoll_ctl(self, EPOLL_CTL_DEL, target, NULL)`—Removes an element in a +/// given epoll object. +#[doc(alias = "epoll_ctl")] +pub fn delete(epoll: impl AsFd, source: impl AsFd) -> io::Result<()> { + // SAFETY: We're calling `epoll_ctl` via FFI and we know how it + // behaves. + unsafe { + let raw_fd = source.as_fd().as_raw_fd(); + ret(c::epoll_ctl( + epoll.as_fd().as_raw_fd(), + c::EPOLL_CTL_DEL, + raw_fd, + null_mut(), + )) + } +} + +/// `epoll_wait(self, events, timeout)`—Waits for registered events of +/// interest. +/// +/// For each event of interest, an element is written to `events`. On +/// success, this returns the number of written elements. +pub fn wait(epoll: impl AsFd, event_list: &mut EventVec, timeout: c::c_int) -> io::Result<()> { + // SAFETY: We're calling `epoll_wait` via FFI and we know how it + // behaves. + unsafe { + event_list.events.set_len(0); + let nfds = ret_u32(c::epoll_wait( + epoll.as_fd().as_raw_fd(), + event_list.events.as_mut_ptr().cast::(), + event_list.events.capacity().try_into().unwrap_or(i32::MAX), + timeout, + ))?; + event_list.events.set_len(nfds as usize); + } + + Ok(()) +} + +/// An iterator over the `Event`s in an `EventVec`. +pub struct Iter<'a> { + /// Use `Copied` to copy the struct, since `Event` is `packed` on some + /// platforms, and it's common for users to directly destructure it, + /// which would lead to errors about forming references to packed fields. + iter: core::iter::Copied>, +} + +impl<'a> Iterator for Iter<'a> { + type Item = Event; + + #[inline] + fn next(&mut self) -> Option { + self.iter.next() + } +} + +/// A record of an event that occurred. +#[repr(C)] +#[cfg_attr( + any( + all( + target_arch = "x86", + not(target_env = "musl"), + not(target_os = "android"), + ), + target_arch = "x86_64", + ), + repr(packed) +)] +#[derive(Copy, Clone, Eq, PartialEq, Hash)] +pub struct Event { + /// Which specific event(s) occurred. + pub flags: EventFlags, + /// User data. + pub data: EventData, +} + +/// Data assocated with an [`Event`]. This can either be a 64-bit integer value +/// or a pointer which preserves pointer provenance. +#[repr(C)] +#[derive(Copy, Clone)] +pub union EventData { + /// A 64-bit integer value. + as_u64: u64, + + /// A `*mut c_void` which preserves pointer provenance, extended to be + /// 64-bit so that if we read the value as a `u64` union field, we don't + /// get uninitialized memory. + sixty_four_bit_pointer: SixtyFourBitPointer, +} + +impl EventData { + /// Construct a new value containing a `u64`. + #[inline] + pub const fn new_u64(value: u64) -> Self { + Self { as_u64: value } + } + + /// Construct a new value containing a `*mut c_void`. + #[inline] + pub const fn new_ptr(value: *mut c_void) -> Self { + Self { + sixty_four_bit_pointer: SixtyFourBitPointer { + pointer: value, + #[cfg(target_pointer_width = "32")] + _padding: 0, + }, + } + } + + /// Return the value as a `u64`. + /// + /// If the stored value was a pointer, the pointer is zero-extended to a + /// `u64`. + #[inline] + pub fn u64(self) -> u64 { + unsafe { self.as_u64 } + } + + /// Return the value as a `*mut c_void`. + /// + /// If the stored value was a `u64`, the least-significant bits of the + /// `u64` are returned as a pointer value. + #[inline] + pub fn ptr(self) -> *mut c_void { + unsafe { self.sixty_four_bit_pointer.pointer } + } +} + +impl PartialEq for EventData { + #[inline] + fn eq(&self, other: &Self) -> bool { + self.u64() == other.u64() + } +} + +impl Eq for EventData {} + +impl Hash for EventData { + #[inline] + fn hash(&self, state: &mut H) { + self.u64().hash(state) + } +} + +#[repr(C)] +#[derive(Copy, Clone)] +struct SixtyFourBitPointer { + #[cfg(target_endian = "big")] + #[cfg(target_pointer_width = "32")] + _padding: u32, + + pointer: *mut c_void, + + #[cfg(target_endian = "little")] + #[cfg(target_pointer_width = "32")] + _padding: u32, +} + +/// A vector of `Event`s, plus context for interpreting them. +pub struct EventVec { + events: Vec, +} + +impl EventVec { + /// Constructs an `EventVec` from raw pointer, length, and capacity. + /// + /// # Safety + /// + /// This function calls [`Vec::from_raw_parts`] with its arguments. + /// + /// [`Vec::from_raw_parts`]: https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.from_raw_parts + #[inline] + pub unsafe fn from_raw_parts(ptr: *mut Event, len: usize, capacity: usize) -> Self { + Self { + events: Vec::from_raw_parts(ptr, len, capacity), + } + } + + /// Constructs an `EventVec` with memory for `capacity` `Event`s. + #[inline] + pub fn with_capacity(capacity: usize) -> Self { + Self { + events: Vec::with_capacity(capacity), + } + } + + /// Returns the current `Event` capacity of this `EventVec`. + #[inline] + pub fn capacity(&self) -> usize { + self.events.capacity() + } + + /// Reserves enough memory for at least `additional` more `Event`s. + #[inline] + pub fn reserve(&mut self, additional: usize) { + self.events.reserve(additional); + } + + /// Reserves enough memory for exactly `additional` more `Event`s. + #[inline] + pub fn reserve_exact(&mut self, additional: usize) { + self.events.reserve_exact(additional); + } + + /// Clears all the `Events` out of this `EventVec`. + #[inline] + pub fn clear(&mut self) { + self.events.clear(); + } + + /// Shrinks the capacity of this `EventVec` as much as possible. + #[inline] + pub fn shrink_to_fit(&mut self) { + self.events.shrink_to_fit(); + } + + /// Returns an iterator over the `Event`s in this `EventVec`. + #[inline] + pub fn iter(&self) -> Iter<'_> { + Iter { + iter: self.events.iter().copied(), + } + } + + /// Returns the number of `Event`s logically contained in this `EventVec`. + #[inline] + pub fn len(&mut self) -> usize { + self.events.len() + } + + /// Tests whether this `EventVec` is logically empty. + #[inline] + pub fn is_empty(&mut self) -> bool { + self.events.is_empty() + } +} + +impl<'a> IntoIterator for &'a EventVec { + type IntoIter = Iter<'a>; + type Item = Event; + + #[inline] + fn into_iter(self) -> Self::IntoIter { + self.iter() + } +} + +#[test] +fn test_epoll_layouts() { + check_renamed_type!(Event, epoll_event); + check_renamed_type!(Event, epoll_event); + check_renamed_struct_renamed_field!(Event, epoll_event, flags, events); + check_renamed_struct_renamed_field!(Event, epoll_event, data, u64); +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/event/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/event/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/event/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/event/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,9 @@ +pub(crate) mod poll_fd; +#[cfg(not(windows))] +pub(crate) mod types; + +#[cfg_attr(windows, path = "windows_syscalls.rs")] +pub(crate) mod syscalls; + +#[cfg(linux_kernel)] +pub mod epoll; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/event/poll_fd.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/event/poll_fd.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/event/poll_fd.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/event/poll_fd.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,139 @@ +use crate::backend::c; +use crate::backend::conv::borrowed_fd; +use crate::backend::fd::{AsFd, AsRawFd, BorrowedFd, LibcFd}; +use bitflags::bitflags; +use core::marker::PhantomData; +#[cfg(windows)] +use { + crate::backend::fd::{AsSocket, RawFd}, + core::fmt, +}; + +bitflags! { + /// `POLL*` flags for use with [`poll`]. + /// + /// [`poll`]: crate::io::poll + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct PollFlags: c::c_short { + /// `POLLIN` + const IN = c::POLLIN; + /// `POLLPRI` + #[cfg(not(target_os = "wasi"))] + const PRI = c::POLLPRI; + /// `POLLOUT` + const OUT = c::POLLOUT; + /// `POLLRDNORM` + const RDNORM = c::POLLRDNORM; + /// `POLLWRNORM` + #[cfg(not(target_os = "l4re"))] + const WRNORM = c::POLLWRNORM; + /// `POLLRDBAND` + #[cfg(not(any(target_os = "l4re", target_os = "wasi")))] + const RDBAND = c::POLLRDBAND; + /// `POLLWRBAND` + #[cfg(not(any(target_os = "l4re", target_os = "wasi")))] + const WRBAND = c::POLLWRBAND; + /// `POLLERR` + const ERR = c::POLLERR; + /// `POLLHUP` + const HUP = c::POLLHUP; + /// `POLLNVAL` + #[cfg(not(target_os = "espidf"))] + const NVAL = c::POLLNVAL; + /// `POLLRDHUP` + #[cfg(all( + linux_kernel, + not(any(target_arch = "sparc", target_arch = "sparc64"))), + )] + const RDHUP = c::POLLRDHUP; + } +} + +/// `struct pollfd`—File descriptor and flags for use with [`poll`]. +/// +/// [`poll`]: crate::event::poll +#[doc(alias = "pollfd")] +#[derive(Clone)] +#[cfg_attr(not(windows), derive(Debug))] +#[repr(transparent)] +pub struct PollFd<'fd> { + pollfd: c::pollfd, + _phantom: PhantomData>, +} + +#[cfg(windows)] +impl<'fd> fmt::Debug for PollFd<'fd> { + fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { + fmt.debug_struct("pollfd") + .field("fd", &self.pollfd.fd) + .field("events", &self.pollfd.events) + .field("revents", &self.pollfd.revents) + .finish() + } +} + +impl<'fd> PollFd<'fd> { + /// Constructs a new `PollFd` holding `fd` and `events`. + #[inline] + pub fn new(fd: &'fd Fd, events: PollFlags) -> Self { + Self::from_borrowed_fd(fd.as_fd(), events) + } + + /// Sets the contained file descriptor to `fd`. + #[inline] + pub fn set_fd(&mut self, fd: &'fd Fd) { + self.pollfd.fd = fd.as_fd().as_raw_fd() as LibcFd; + } + + /// Clears the ready events. + #[inline] + pub fn clear_revents(&mut self) { + self.pollfd.revents = 0; + } + + /// Constructs a new `PollFd` holding `fd` and `events`. + /// + /// This is the same as `new`, but can be used to avoid borrowing the + /// `BorrowedFd`, which can be tricky in situations where the `BorrowedFd` + /// is a temporary. + #[inline] + pub fn from_borrowed_fd(fd: BorrowedFd<'fd>, events: PollFlags) -> Self { + Self { + pollfd: c::pollfd { + fd: borrowed_fd(fd), + events: events.bits(), + revents: 0, + }, + _phantom: PhantomData, + } + } + + /// Returns the ready events. + #[inline] + pub fn revents(&self) -> PollFlags { + // Use `.unwrap()` here because in theory we know we know all the bits + // the OS might set here, but OS's have added extensions in the past. + PollFlags::from_bits(self.pollfd.revents).unwrap() + } +} + +#[cfg(not(windows))] +impl<'fd> AsFd for PollFd<'fd> { + #[inline] + fn as_fd(&self) -> BorrowedFd<'_> { + // SAFETY: Our constructors and `set_fd` require `pollfd.fd` to be + // valid for the `'fd` lifetime. + unsafe { BorrowedFd::borrow_raw(self.pollfd.fd) } + } +} + +#[cfg(windows)] +impl<'fd> AsSocket for PollFd<'fd> { + #[inline] + fn as_socket(&self) -> BorrowedFd<'_> { + // SAFETY: Our constructors and `set_fd` require `pollfd.fd` to be + // valid for the `'fd` lifetime. + unsafe { BorrowedFd::borrow_raw(self.pollfd.fd as RawFd) } + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/event/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/event/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/event/syscalls.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/event/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,183 @@ +//! libc syscalls supporting `rustix::event`. + +use crate::backend::c; +use crate::backend::conv::ret_c_int; +#[cfg(any(apple, netbsdlike, target_os = "dragonfly", target_os = "solaris"))] +use crate::backend::conv::ret_owned_fd; +use crate::event::PollFd; +#[cfg(any(linux_kernel, bsd, solarish, target_os = "espidf"))] +use crate::fd::OwnedFd; +use crate::io; +#[cfg(any(bsd, solarish))] +use {crate::backend::conv::borrowed_fd, crate::fd::BorrowedFd, core::mem::MaybeUninit}; +#[cfg(solarish)] +use { + crate::backend::conv::ret, crate::event::port::Event, crate::utils::as_mut_ptr, + core::ptr::null_mut, +}; +#[cfg(any( + linux_kernel, + target_os = "freebsd", + target_os = "illumos", + target_os = "espidf" +))] +use {crate::backend::conv::ret_owned_fd, crate::event::EventfdFlags}; +#[cfg(bsd)] +use {crate::event::kqueue::Event, crate::utils::as_ptr, core::ptr::null}; + +#[cfg(any( + linux_kernel, + target_os = "freebsd", + target_os = "illumos", + target_os = "espidf" +))] +pub(crate) fn eventfd(initval: u32, flags: EventfdFlags) -> io::Result { + #[cfg(linux_kernel)] + unsafe { + syscall! { + fn eventfd2( + initval: c::c_uint, + flags: c::c_int + ) via SYS_eventfd2 -> c::c_int + } + ret_owned_fd(eventfd2(initval, bitflags_bits!(flags))) + } + + // `eventfd` was added in FreeBSD 13, so it isn't available on FreeBSD 12. + #[cfg(target_os = "freebsd")] + unsafe { + weakcall! { + fn eventfd( + initval: c::c_uint, + flags: c::c_int + ) -> c::c_int + } + ret_owned_fd(eventfd(initval, bitflags_bits!(flags))) + } + + #[cfg(any(target_os = "illumos", target_os = "espidf"))] + unsafe { + ret_owned_fd(c::eventfd(initval, bitflags_bits!(flags))) + } +} + +#[cfg(bsd)] +pub(crate) fn kqueue() -> io::Result { + unsafe { ret_owned_fd(c::kqueue()) } +} + +#[cfg(bsd)] +pub(crate) unsafe fn kevent( + kq: BorrowedFd<'_>, + changelist: &[Event], + eventlist: &mut [MaybeUninit], + timeout: Option<&c::timespec>, +) -> io::Result { + ret_c_int(c::kevent( + borrowed_fd(kq), + changelist.as_ptr().cast(), + changelist + .len() + .try_into() + .map_err(|_| io::Errno::OVERFLOW)?, + eventlist.as_mut_ptr().cast(), + eventlist + .len() + .try_into() + .map_err(|_| io::Errno::OVERFLOW)?, + timeout.map_or(null(), as_ptr), + )) +} + +#[inline] +pub(crate) fn poll(fds: &mut [PollFd<'_>], timeout: c::c_int) -> io::Result { + let nfds = fds + .len() + .try_into() + .map_err(|_convert_err| io::Errno::INVAL)?; + + ret_c_int(unsafe { c::poll(fds.as_mut_ptr().cast(), nfds, timeout) }) + .map(|nready| nready as usize) +} + +#[cfg(solarish)] +pub(crate) fn port_create() -> io::Result { + unsafe { ret_owned_fd(c::port_create()) } +} + +#[cfg(solarish)] +pub(crate) unsafe fn port_associate( + port: BorrowedFd<'_>, + source: c::c_int, + object: c::uintptr_t, + events: c::c_int, + user: *mut c::c_void, +) -> io::Result<()> { + ret(c::port_associate( + borrowed_fd(port), + source, + object, + events, + user, + )) +} + +#[cfg(solarish)] +pub(crate) unsafe fn port_dissociate( + port: BorrowedFd<'_>, + source: c::c_int, + object: c::uintptr_t, +) -> io::Result<()> { + ret(c::port_dissociate(borrowed_fd(port), source, object)) +} + +#[cfg(solarish)] +pub(crate) fn port_get( + port: BorrowedFd<'_>, + timeout: Option<&mut c::timespec>, +) -> io::Result { + let mut event = MaybeUninit::::uninit(); + let timeout = timeout.map_or(null_mut(), as_mut_ptr); + + unsafe { + ret(c::port_get(borrowed_fd(port), event.as_mut_ptr(), timeout))?; + } + + // If we're done, initialize the event and return it. + Ok(Event(unsafe { event.assume_init() })) +} + +#[cfg(solarish)] +pub(crate) fn port_getn( + port: BorrowedFd<'_>, + timeout: Option<&mut c::timespec>, + events: &mut Vec, + mut nget: u32, +) -> io::Result<()> { + let timeout = timeout.map_or(null_mut(), as_mut_ptr); + unsafe { + ret(c::port_getn( + borrowed_fd(port), + events.as_mut_ptr().cast(), + events.len().try_into().unwrap(), + &mut nget, + timeout, + ))?; + } + + // Update the vector length. + unsafe { + events.set_len(nget.try_into().unwrap()); + } + + Ok(()) +} + +#[cfg(solarish)] +pub(crate) fn port_send( + port: BorrowedFd<'_>, + events: c::c_int, + userdata: *mut c::c_void, +) -> io::Result<()> { + unsafe { ret(c::port_send(borrowed_fd(port), events, userdata)) } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/event/types.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/event/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/event/types.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/event/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,34 @@ +#[cfg(any(linux_kernel, target_os = "freebsd", target_os = "illumos"))] +use crate::backend::c; +#[cfg(any( + linux_kernel, + target_os = "freebsd", + target_os = "illumos", + target_os = "espidf" +))] +use bitflags::bitflags; + +#[cfg(any( + linux_kernel, + target_os = "freebsd", + target_os = "illumos", + target_os = "espidf" +))] +bitflags! { + /// `EFD_*` flags for use with [`eventfd`]. + /// + /// [`eventfd`]: crate::io::eventfd + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct EventfdFlags: u32 { + /// `EFD_CLOEXEC` + #[cfg(not(target_os = "espidf"))] + const CLOEXEC = bitcast!(c::EFD_CLOEXEC); + /// `EFD_NONBLOCK` + #[cfg(not(target_os = "espidf"))] + const NONBLOCK = bitcast!(c::EFD_NONBLOCK); + /// `EFD_SEMAPHORE` + #[cfg(not(target_os = "espidf"))] + const SEMAPHORE = bitcast!(c::EFD_SEMAPHORE); + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/event/windows_syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/event/windows_syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/event/windows_syscalls.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/event/windows_syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,16 @@ +//! Windows system calls in the `event` module. + +use crate::backend::c; +use crate::backend::conv::ret_c_int; +use crate::event::PollFd; +use crate::io; + +pub(crate) fn poll(fds: &mut [PollFd<'_>], timeout: c::c_int) -> io::Result { + let nfds = fds + .len() + .try_into() + .map_err(|_convert_err| io::Errno::INVAL)?; + + ret_c_int(unsafe { c::poll(fds.as_mut_ptr().cast(), nfds, timeout) }) + .map(|nready| nready as usize) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/dir.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/dir.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/dir.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/dir.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,7 @@ -use super::super::c; -use super::super::conv::owned_fd; -use super::super::offset::libc_ino_t; -#[cfg(not(any(solarish, target_os = "haiku")))] +#[cfg(not(any(solarish, target_os = "haiku", target_os = "nto")))] use super::types::FileType; +use crate::backend::c; +use crate::backend::conv::owned_fd; use crate::fd::{AsFd, BorrowedFd}; use crate::ffi::{CStr, CString}; use crate::fs::{fcntl_getfl, fstat, openat, Mode, OFlags, Stat}; @@ -10,6 +9,7 @@ solarish, target_os = "haiku", target_os = "netbsd", + target_os = "nto", target_os = "redox", target_os = "wasi", )))] @@ -18,6 +18,7 @@ use crate::fs::{fstatvfs, StatVfs}; use crate::io; #[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))] +#[cfg(feature = "process")] use crate::process::fchdir; use alloc::borrow::ToOwned; #[cfg(not(linux_like))] @@ -94,7 +95,12 @@ check_dirent_layout(dirent); let result = DirEntry { - #[cfg(not(any(solarish, target_os = "aix", target_os = "haiku")))] + #[cfg(not(any( + solarish, + target_os = "aix", + target_os = "haiku", + target_os = "nto" + )))] d_type: dirent.d_type, #[cfg(not(any(freebsdlike, netbsdlike)))] @@ -122,6 +128,7 @@ solarish, target_os = "haiku", target_os = "netbsd", + target_os = "nto", target_os = "redox", target_os = "wasi", )))] @@ -138,7 +145,9 @@ } /// `fchdir(self)` + #[cfg(feature = "process")] #[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))] + #[cfg_attr(doc_cfg, doc(cfg(feature = "process")))] #[inline] pub fn chdir(&self) -> io::Result<()> { fchdir(unsafe { BorrowedFd::borrow_raw(c::dirfd(self.0.as_ptr())) }) @@ -178,14 +187,14 @@ /// `struct dirent` #[derive(Debug)] pub struct DirEntry { - #[cfg(not(any(solarish, target_os = "aix", target_os = "haiku")))] + #[cfg(not(any(solarish, target_os = "aix", target_os = "haiku", target_os = "nto")))] d_type: u8, #[cfg(not(any(freebsdlike, netbsdlike)))] - d_ino: libc_ino_t, + d_ino: c::ino_t, #[cfg(any(freebsdlike, netbsdlike))] - d_fileno: libc_ino_t, + d_fileno: c::ino_t, name: CString, } @@ -198,7 +207,7 @@ } /// Returns the type of this directory entry. - #[cfg(not(any(solarish, target_os = "aix", target_os = "haiku")))] + #[cfg(not(any(solarish, target_os = "aix", target_os = "haiku", target_os = "nto")))] #[inline] pub fn file_type(&self) -> FileType { FileType::from_dirent_d_type(self.d_type) @@ -240,11 +249,13 @@ #[cfg(target_os = "openbsd")] fn check_dirent_layout(dirent: &c::dirent) { use crate::utils::as_ptr; - use core::mem::{align_of, size_of}; // Check that the basic layouts match. - assert_eq!(size_of::(), size_of::()); - assert_eq!(align_of::(), align_of::()); + #[cfg(test)] + { + assert_eq_size!(libc_dirent, c::dirent); + assert_eq_size!(libc_dirent, c::dirent); + } // Check that the field offsets match. assert_eq!( diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/inotify.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/inotify.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/inotify.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/inotify.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,7 @@ //! inotify support for working with inotifies -use super::super::c; -use super::super::conv::{borrowed_fd, c_str, ret, ret_c_int, ret_owned_fd}; +use crate::backend::c; +use crate::backend::conv::{borrowed_fd, c_str, ret, ret_c_int, ret_owned_fd}; use crate::fd::{BorrowedFd, OwnedFd}; use crate::io; use bitflags::bitflags; @@ -10,11 +10,13 @@ /// `IN_*` for use with [`inotify_init`]. /// /// [`inotify_init`]: crate::fs::inotify::inotify_init - pub struct CreateFlags: c::c_int { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct CreateFlags: u32 { /// `IN_CLOEXEC` - const CLOEXEC = c::IN_CLOEXEC; + const CLOEXEC = bitcast!(c::IN_CLOEXEC); /// `IN_NONBLOCK` - const NONBLOCK = c::IN_NONBLOCK; + const NONBLOCK = bitcast!(c::IN_NONBLOCK); } } @@ -22,7 +24,8 @@ /// `IN*` for use with [`inotify_add_watch`]. /// /// [`inotify_add_watch`]: crate::fs::inotify::inotify_add_watch - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct WatchFlags: u32 { /// `IN_ACCESS` const ACCESS = c::IN_ACCESS; @@ -78,7 +81,7 @@ #[doc(alias = "inotify_init1")] pub fn inotify_init(flags: CreateFlags) -> io::Result { // SAFETY: `inotify_init1` has no safety preconditions. - unsafe { ret_owned_fd(c::inotify_init1(flags.bits())) } + unsafe { ret_owned_fd(c::inotify_init1(bitflags_bits!(flags))) } } /// `inotify_add_watch(self, path, flags)`—Adds a watch to inotify @@ -109,8 +112,8 @@ /// `inotify_rm_watch(self, wd)`—Removes a watch from this inotify /// -/// The watch descriptor provided should have previously been returned -/// by [`inotify_add_watch`] and not previously have been removed. +/// The watch descriptor provided should have previously been returned by +/// [`inotify_add_watch`] and not previously have been removed. #[doc(alias = "inotify_rm_watch")] pub fn inotify_remove_watch(inot: BorrowedFd<'_>, wd: i32) -> io::Result<()> { // Android's `inotify_rm_watch` takes `u32` despite that diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/makedev.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/makedev.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/makedev.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/makedev.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #[cfg(not(all(target_os = "android", target_pointer_width = "32")))] -use super::super::c; +use crate::backend::c; use crate::fs::Dev; #[cfg(not(any( @@ -30,8 +30,8 @@ #[cfg(all(target_os = "android", target_pointer_width = "32"))] #[inline] pub(crate) fn makedev(maj: u32, min: u32) -> Dev { - // 32-bit Android's `dev_t` is 32-bit, but its `st_dev` is 64-bit, - // so we do it ourselves. + // 32-bit Android's `dev_t` is 32-bit, but its `st_dev` is 64-bit, so we do + // it ourselves. ((u64::from(maj) & 0xffff_f000_u64) << 32) | ((u64::from(maj) & 0x0000_0fff_u64) << 8) | ((u64::from(min) & 0xffff_ff00_u64) << 12) @@ -86,8 +86,8 @@ #[cfg(all(target_os = "android", target_pointer_width = "32"))] #[inline] pub(crate) fn major(dev: Dev) -> u32 { - // 32-bit Android's `dev_t` is 32-bit, but its `st_dev` is 64-bit, - // so we do it ourselves. + // 32-bit Android's `dev_t` is 32-bit, but its `st_dev` is 64-bit, so we do + // it ourselves. (((dev >> 31 >> 1) & 0xffff_f000) | ((dev >> 8) & 0x0000_0fff)) as u32 } @@ -125,8 +125,8 @@ #[cfg(all(target_os = "android", target_pointer_width = "32"))] #[inline] pub(crate) fn minor(dev: Dev) -> u32 { - // 32-bit Android's `dev_t` is 32-bit, but its `st_dev` is 64-bit, - // so we do it ourselves. + // 32-bit Android's `dev_t` is 32-bit, but its `st_dev` is 64-bit, so we do + // it ourselves. (((dev >> 12) & 0xffff_ff00) | (dev & 0x0000_00ff)) as u32 } diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,13 @@ -#[cfg(not(target_os = "redox"))] +#[cfg(not(any(target_os = "espidf", target_os = "redox")))] pub(crate) mod dir; #[cfg(linux_kernel)] pub mod inotify; -#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "wasi")))] +#[cfg(not(any( + target_os = "espidf", + target_os = "haiku", + target_os = "redox", + target_os = "wasi" +)))] pub(crate) mod makedev; #[cfg(not(windows))] pub(crate) mod syscalls; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,45 +1,9 @@ //! libc syscalls supporting `rustix::fs`. -use super::super::c; -use super::super::conv::{borrowed_fd, c_str, ret, ret_c_int, ret_off_t, ret_owned_fd, ret_usize}; -#[cfg(any(linux_kernel, target_os = "fuchsia"))] -use super::super::offset::libc_fallocate; -#[cfg(not(any( - apple, - netbsdlike, - solarish, - target_os = "dragonfly", - target_os = "haiku", - target_os = "redox", -)))] -use super::super::offset::libc_posix_fadvise; -#[cfg(not(any( - apple, - netbsdlike, - solarish, - linux_kernel, - target_os = "aix", - target_os = "dragonfly", - target_os = "fuchsia", - target_os = "redox", -)))] -use super::super::offset::libc_posix_fallocate; -use super::super::offset::{libc_fstat, libc_fstatat, libc_ftruncate, libc_lseek, libc_off_t}; -#[cfg(not(any( - solarish, - target_os = "haiku", - target_os = "netbsd", - target_os = "redox", - target_os = "wasi", -)))] -use super::super::offset::{libc_fstatfs, libc_statfs}; -#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "wasi")))] -use super::super::offset::{libc_fstatvfs, libc_statvfs}; -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] -use super::super::time::types::LibcTimespec; +use crate::backend::c; +use crate::backend::conv::{ + borrowed_fd, c_str, ret, ret_c_int, ret_off_t, ret_owned_fd, ret_usize, +}; use crate::fd::{BorrowedFd, OwnedFd}; use crate::ffi::CStr; #[cfg(apple)] @@ -49,19 +13,24 @@ netbsdlike, solarish, target_os = "dragonfly", + target_os = "espidf", target_os = "haiku", target_os = "redox", )))] use crate::fs::Advice; +#[cfg(not(any(target_os = "espidf", target_os = "redox")))] +use crate::fs::AtFlags; #[cfg(not(any( netbsdlike, solarish, target_os = "aix", target_os = "dragonfly", + target_os = "espidf", + target_os = "nto", target_os = "redox", )))] use crate::fs::FallocateFlags; -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] use crate::fs::FlockOperation; #[cfg(any(linux_kernel, target_os = "freebsd"))] use crate::fs::MemfdFlags; @@ -69,56 +38,116 @@ use crate::fs::SealFlags; #[cfg(not(any( solarish, + target_os = "espidf", target_os = "haiku", target_os = "netbsd", + target_os = "nto", target_os = "redox", target_os = "wasi", )))] use crate::fs::StatFs; -use crate::fs::{Access, Mode, OFlags, Stat, Timestamps}; -#[cfg(not(any(apple, target_os = "redox", target_os = "wasi")))] +#[cfg(not(target_os = "espidf"))] +use crate::fs::{Access, Timestamps}; +#[cfg(not(any(apple, target_os = "espidf", target_os = "redox", target_os = "wasi")))] use crate::fs::{Dev, FileType}; +use crate::fs::{Mode, OFlags, SeekFrom, Stat}; #[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "wasi")))] use crate::fs::{StatVfs, StatVfsMountFlags}; -use crate::io::{self, SeekFrom}; +use crate::io; +#[cfg(all(target_env = "gnu", fix_y2038))] +use crate::timespec::LibcTimespec; #[cfg(not(target_os = "wasi"))] -use crate::process::{Gid, Uid}; -#[cfg(not(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -)))] -use crate::utils::as_ptr; +use crate::ugid::{Gid, Uid}; #[cfg(apple)] use alloc::vec; -use core::convert::TryInto; use core::mem::MaybeUninit; #[cfg(apple)] use { - super::super::conv::nonnegative_ret, + crate::backend::conv::nonnegative_ret, crate::fs::{copyfile_state_t, CloneFlags, CopyfileFlags}, }; +#[cfg(any(apple, linux_kernel))] +use {crate::fs::XattrFlags, core::mem::size_of, core::ptr::null_mut}; #[cfg(linux_kernel)] use { - super::super::conv::{syscall_ret, syscall_ret_owned_fd, syscall_ret_usize}, - crate::fs::{cwd, RenameFlags, ResolveFlags, Statx, StatxFlags}, + crate::fs::{RenameFlags, ResolveFlags, Statx, StatxFlags, CWD}, core::ptr::null, }; -#[cfg(not(target_os = "redox"))] -use {super::super::offset::libc_openat, crate::fs::AtFlags}; -#[cfg(any(apple, linux_kernel))] -use {crate::fs::XattrFlags, core::mem::size_of, core::ptr::null_mut}; -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] +#[cfg(all(target_env = "gnu", fix_y2038))] weak!(fn __utimensat64(c::c_int, *const c::c_char, *const LibcTimespec, c::c_int) -> c::c_int); -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] +#[cfg(all(target_env = "gnu", fix_y2038))] weak!(fn __futimens64(c::c_int, *const LibcTimespec) -> c::c_int); +/// Use a direct syscall (via libc) for `open`. +/// +/// This is only currently necessary as a workaround for old glibc; see below. +#[cfg(all(unix, target_env = "gnu"))] +fn open_via_syscall(path: &CStr, oflags: OFlags, mode: Mode) -> io::Result { + // Linux on aarch64, loongarch64 and riscv64 has no `open` syscall so use + // `openat`. + #[cfg(any( + target_arch = "aarch64", + target_arch = "riscv32", + target_arch = "riscv64", + target_arch = "loongarch64" + ))] + { + openat_via_syscall(CWD, path, oflags, mode) + } + + // Use the `open` syscall. + #[cfg(not(any( + target_arch = "aarch64", + target_arch = "riscv32", + target_arch = "riscv64", + target_arch = "loongarch64" + )))] + unsafe { + syscall! { + fn open( + pathname: *const c::c_char, + oflags: c::c_int, + mode: c::mode_t + ) via SYS_open -> c::c_int + } + + ret_owned_fd(open( + c_str(path), + bitflags_bits!(oflags), + bitflags_bits!(mode), + )) + } +} + +pub(crate) fn open(path: &CStr, oflags: OFlags, mode: Mode) -> io::Result { + // Work around . + // glibc versions before 2.25 don't handle `O_TMPFILE` correctly. + #[cfg(all(unix, target_env = "gnu"))] + if oflags.contains(OFlags::TMPFILE) && crate::backend::if_glibc_is_less_than_2_25() { + return open_via_syscall(path, oflags, mode); + } + + // On these platforms, `mode_t` is `u16` and can't be passed directly to a + // variadic function. + #[cfg(any( + apple, + freebsdlike, + all(target_os = "android", target_pointer_width = "32") + ))] + let mode: c::c_uint = mode.bits().into(); + + // Otherwise, cast to `mode_t` as that's what `open` is documented to take. + #[cfg(not(any( + apple, + freebsdlike, + all(target_os = "android", target_pointer_width = "32") + )))] + let mode: c::mode_t = mode.bits() as _; + + unsafe { ret_owned_fd(c::open(c_str(path), bitflags_bits!(oflags), mode)) } +} + /// Use a direct syscall (via libc) for `openat`. /// /// This is only currently necessary as a workaround for old glibc; see below. @@ -129,18 +158,22 @@ oflags: OFlags, mode: Mode, ) -> io::Result { + syscall! { + fn openat( + base_dirfd: c::c_int, + pathname: *const c::c_char, + oflags: c::c_int, + mode: c::mode_t + ) via SYS_openat -> c::c_int + } + unsafe { - let dirfd = borrowed_fd(dirfd); - let path = c_str(path); - let oflags = oflags.bits(); - let mode = c::c_uint::from(mode.bits()); - ret_owned_fd(c::syscall( - c::SYS_openat, - c::c_long::from(dirfd), - path, - c::c_long::from(oflags), - mode as c::c_long, - ) as c::c_int) + ret_owned_fd(openat( + borrowed_fd(dirfd), + c_str(path), + bitflags_bits!(oflags), + bitflags_bits!(mode), + )) } } @@ -157,23 +190,40 @@ if oflags.contains(OFlags::TMPFILE) && crate::backend::if_glibc_is_less_than_2_25() { return openat_via_syscall(dirfd, path, oflags, mode); } + + // On these platforms, `mode_t` is `u16` and can't be passed directly to a + // variadic function. + #[cfg(any( + apple, + freebsdlike, + all(target_os = "android", target_pointer_width = "32") + ))] + let mode: c::c_uint = mode.bits().into(); + + // Otherwise, cast to `mode_t` as that's what `open` is documented to take. + #[cfg(not(any( + apple, + freebsdlike, + all(target_os = "android", target_pointer_width = "32") + )))] + let mode: c::mode_t = mode.bits() as _; + unsafe { - // Pass `mode` as a `c_uint` even if `mode_t` is narrower, since - // `libc_openat` is declared as a variadic function and narrower - // arguments are promoted. - ret_owned_fd(libc_openat( + ret_owned_fd(c::openat( borrowed_fd(dirfd), c_str(path), - oflags.bits(), - c::c_uint::from(mode.bits()), + bitflags_bits!(oflags), + mode, )) } } #[cfg(not(any( solarish, + target_os = "espidf", target_os = "haiku", target_os = "netbsd", + target_os = "nto", target_os = "redox", target_os = "wasi", )))] @@ -181,7 +231,7 @@ pub(crate) fn statfs(filename: &CStr) -> io::Result { unsafe { let mut result = MaybeUninit::::uninit(); - ret(libc_statfs(c_str(filename), result.as_mut_ptr()))?; + ret(c::statfs(c_str(filename), result.as_mut_ptr()))?; Ok(result.assume_init()) } } @@ -190,25 +240,42 @@ #[inline] pub(crate) fn statvfs(filename: &CStr) -> io::Result { unsafe { - let mut result = MaybeUninit::::uninit(); - ret(libc_statvfs(c_str(filename), result.as_mut_ptr()))?; + let mut result = MaybeUninit::::uninit(); + ret(c::statvfs(c_str(filename), result.as_mut_ptr()))?; Ok(libc_statvfs_to_statvfs(result.assume_init())) } } +#[inline] +pub(crate) fn readlink(path: &CStr, buf: &mut [u8]) -> io::Result { + unsafe { + ret_usize( + c::readlink(c_str(path), buf.as_mut_ptr().cast::(), buf.len()) as isize, + ) + } +} + #[cfg(not(target_os = "redox"))] #[inline] -pub(crate) fn readlinkat(dirfd: BorrowedFd<'_>, path: &CStr, buf: &mut [u8]) -> io::Result { +pub(crate) fn readlinkat( + dirfd: BorrowedFd<'_>, + path: &CStr, + buf: &mut [MaybeUninit], +) -> io::Result { unsafe { ret_usize(c::readlinkat( borrowed_fd(dirfd), c_str(path), buf.as_mut_ptr().cast::(), buf.len(), - )) + ) as isize) } } +pub(crate) fn mkdir(path: &CStr, mode: Mode) -> io::Result<()> { + unsafe { ret(c::mkdir(c_str(path), mode.bits() as c::mode_t)) } +} + #[cfg(not(target_os = "redox"))] pub(crate) fn mkdirat(dirfd: BorrowedFd<'_>, path: &CStr, mode: Mode) -> io::Result<()> { unsafe { @@ -225,17 +292,27 @@ fd: BorrowedFd<'_>, buf: &mut [MaybeUninit], ) -> io::Result { + syscall! { + fn getdents64( + fd: c::c_int, + dirp: *mut c::c_void, + count: usize + ) via SYS_getdents64 -> c::ssize_t + } unsafe { - syscall_ret_usize(c::syscall( - c::SYS_getdents64, - fd, - buf.as_mut_ptr().cast::(), + ret_usize(getdents64( + borrowed_fd(fd), + buf.as_mut_ptr().cast::(), buf.len(), )) } } -#[cfg(not(target_os = "redox"))] +pub(crate) fn link(old_path: &CStr, new_path: &CStr) -> io::Result<()> { + unsafe { ret(c::link(c_str(old_path), c_str(new_path))) } +} + +#[cfg(not(any(target_os = "espidf", target_os = "redox")))] pub(crate) fn linkat( old_dirfd: BorrowedFd<'_>, old_path: &CStr, @@ -262,7 +339,7 @@ c_str(old_path), borrowed_fd(new_dirfd), c_str(new_path), - flags.bits(), + bitflags_bits!(flags), )); } // Otherwise, see if we can emulate the `AT_FDCWD` case. @@ -285,12 +362,20 @@ c_str(old_path), borrowed_fd(new_dirfd), c_str(new_path), - flags.bits(), + bitflags_bits!(flags), )) } } -#[cfg(not(target_os = "redox"))] +pub(crate) fn rmdir(path: &CStr) -> io::Result<()> { + unsafe { ret(c::rmdir(c_str(path))) } +} + +pub(crate) fn unlink(path: &CStr) -> io::Result<()> { + unsafe { ret(c::unlink(c_str(path))) } +} + +#[cfg(not(any(target_os = "espidf", target_os = "redox")))] pub(crate) fn unlinkat(dirfd: BorrowedFd<'_>, path: &CStr, flags: AtFlags) -> io::Result<()> { // macOS <= 10.9 lacks `unlinkat`. #[cfg(target_os = "macos")] @@ -304,7 +389,11 @@ } // If we have `unlinkat`, use it. if let Some(libc_unlinkat) = unlinkat.get() { - return ret(libc_unlinkat(borrowed_fd(dirfd), c_str(path), flags.bits())); + return ret(libc_unlinkat( + borrowed_fd(dirfd), + c_str(path), + bitflags_bits!(flags), + )); } // Otherwise, see if we can emulate the `AT_FDCWD` case. if borrowed_fd(dirfd) != c::AT_FDCWD { @@ -322,10 +411,18 @@ #[cfg(not(target_os = "macos"))] unsafe { - ret(c::unlinkat(borrowed_fd(dirfd), c_str(path), flags.bits())) + ret(c::unlinkat( + borrowed_fd(dirfd), + c_str(path), + bitflags_bits!(flags), + )) } } +pub(crate) fn rename(old_path: &CStr, new_path: &CStr) -> io::Result<()> { + unsafe { ret(c::rename(c_str(old_path), c_str(new_path))) } +} + #[cfg(not(target_os = "redox"))] pub(crate) fn renameat( old_dirfd: BorrowedFd<'_>, @@ -419,6 +516,10 @@ renameat(old_dirfd, old_path, new_dirfd, new_path) } +pub(crate) fn symlink(old_path: &CStr, new_path: &CStr) -> io::Result<()> { + unsafe { ret(c::symlink(c_str(old_path), c_str(new_path))) } +} + #[cfg(not(target_os = "redox"))] pub(crate) fn symlinkat( old_path: &CStr, @@ -434,10 +535,97 @@ } } -#[cfg(not(target_os = "redox"))] +pub(crate) fn stat(path: &CStr) -> io::Result { + // See the comments in `fstat` about using `crate::fs::statx` here. + #[cfg(all( + linux_kernel, + any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6" + ) + ))] + { + match crate::fs::statx( + crate::fs::CWD, + path, + AtFlags::empty(), + StatxFlags::BASIC_STATS, + ) { + Ok(x) => statx_to_stat(x), + Err(io::Errno::NOSYS) => statat_old(crate::fs::CWD, path, AtFlags::empty()), + Err(err) => Err(err), + } + } + + // Main version: libc is y2038 safe. Or, the platform is not y2038 safe and + // there's nothing practical we can do. + #[cfg(not(all( + linux_kernel, + any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6" + ) + )))] + unsafe { + let mut stat = MaybeUninit::::uninit(); + ret(c::stat(c_str(path), stat.as_mut_ptr()))?; + Ok(stat.assume_init()) + } +} + +pub(crate) fn lstat(path: &CStr) -> io::Result { + // See the comments in `fstat` about using `crate::fs::statx` here. + #[cfg(all( + linux_kernel, + any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6" + ) + ))] + { + match crate::fs::statx( + crate::fs::CWD, + path, + AtFlags::SYMLINK_NOFOLLOW, + StatxFlags::BASIC_STATS, + ) { + Ok(x) => statx_to_stat(x), + Err(io::Errno::NOSYS) => statat_old(crate::fs::CWD, path, AtFlags::SYMLINK_NOFOLLOW), + Err(err) => Err(err), + } + } + + // Main version: libc is y2038 safe. Or, the platform is not y2038 safe and + // there's nothing practical we can do. + #[cfg(not(all( + linux_kernel, + any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6" + ) + )))] + unsafe { + let mut stat = MaybeUninit::::uninit(); + ret(c::lstat(c_str(path), stat.as_mut_ptr()))?; + Ok(stat.assume_init()) + } +} + +#[cfg(not(any(target_os = "espidf", target_os = "redox")))] pub(crate) fn statat(dirfd: BorrowedFd<'_>, path: &CStr, flags: AtFlags) -> io::Result { // See the comments in `fstat` about using `crate::fs::statx` here. - #[cfg(all(linux_kernel, any(target_pointer_width = "32", target_arch = "mips64")))] + #[cfg(all( + linux_kernel, + any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6" + ) + ))] { match crate::fs::statx(dirfd, path, flags, StatxFlags::BASIC_STATS) { Ok(x) => statx_to_stat(x), @@ -448,34 +636,53 @@ // Main version: libc is y2038 safe. Or, the platform is not y2038 safe and // there's nothing practical we can do. - #[cfg(not(all(linux_kernel, any(target_pointer_width = "32", target_arch = "mips64"))))] + #[cfg(not(all( + linux_kernel, + any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6" + ) + )))] unsafe { let mut stat = MaybeUninit::::uninit(); - ret(libc_fstatat( + ret(c::fstatat( borrowed_fd(dirfd), c_str(path), stat.as_mut_ptr(), - flags.bits(), + bitflags_bits!(flags), ))?; Ok(stat.assume_init()) } } -#[cfg(all(linux_kernel, any(target_pointer_width = "32", target_arch = "mips64")))] +#[cfg(all( + linux_kernel, + any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6" + ) +))] fn statat_old(dirfd: BorrowedFd<'_>, path: &CStr, flags: AtFlags) -> io::Result { unsafe { let mut result = MaybeUninit::::uninit(); - ret(libc_fstatat( + ret(c::fstatat( borrowed_fd(dirfd), c_str(path), result.as_mut_ptr(), - flags.bits(), + bitflags_bits!(flags), ))?; stat64_to_stat(result.assume_init()) } } -#[cfg(not(any(target_os = "emscripten", target_os = "redox")))] +#[cfg(not(any(target_os = "espidf", target_os = "emscripten")))] +pub(crate) fn access(path: &CStr, access: Access) -> io::Result<()> { + unsafe { ret(c::access(c_str(path), access.bits())) } +} + +#[cfg(not(any(target_os = "emscripten", target_os = "espidf", target_os = "redox")))] pub(crate) fn accessat( dirfd: BorrowedFd<'_>, path: &CStr, @@ -498,8 +705,8 @@ return ret(libc_faccessat( borrowed_fd(dirfd), c_str(path), - access.bits(), - flags.bits(), + bitflags_bits!(access), + bitflags_bits!(flags), )); } // Otherwise, see if we can emulate the `AT_FDCWD` case. @@ -512,7 +719,7 @@ if !flags.is_empty() { return Err(io::Errno::OPNOTSUPP); } - ret(c::access(c_str(path), access.bits())) + ret(c::access(c_str(path), bitflags_bits!(access))) } #[cfg(not(target_os = "macos"))] @@ -520,13 +727,18 @@ ret(c::faccessat( borrowed_fd(dirfd), c_str(path), - access.bits(), - flags.bits(), + bitflags_bits!(access), + bitflags_bits!(flags), )) } } #[cfg(target_os = "emscripten")] +pub(crate) fn access(_path: &CStr, _access: Access) -> io::Result<()> { + Ok(()) +} + +#[cfg(target_os = "emscripten")] pub(crate) fn accessat( _dirfd: BorrowedFd<'_>, _path: &CStr, @@ -536,61 +748,56 @@ Ok(()) } -#[cfg(not(target_os = "redox"))] +#[cfg(not(any(target_os = "espidf", target_os = "redox")))] pub(crate) fn utimensat( dirfd: BorrowedFd<'_>, path: &CStr, times: &Timestamps, flags: AtFlags, ) -> io::Result<()> { - // 32-bit gnu version: libc has `utimensat` but it is not y2038 safe by - // default. - #[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - ))] - unsafe { + // Old 32-bit version: libc has `utimensat` but it is not y2038 safe by + // default. But there may be a `__utimensat16` we can use. + #[cfg(fix_y2038)] + { + #[cfg(target_env = "gnu")] if let Some(libc_utimensat) = __utimensat64.get() { let libc_times: [LibcTimespec; 2] = [ times.last_access.clone().into(), times.last_modification.clone().into(), ]; - ret(libc_utimensat( - borrowed_fd(dirfd), - c_str(path), - libc_times.as_ptr(), - flags.bits(), - )) - } else { - utimensat_old(dirfd, path, times, flags) + unsafe { + return ret(libc_utimensat( + borrowed_fd(dirfd), + c_str(path), + libc_times.as_ptr(), + bitflags_bits!(flags), + )); + } } + + utimensat_old(dirfd, path, times, flags) } // Main version: libc is y2038 safe and has `utimensat`. Or, the platform // is not y2038 safe and there's nothing practical we can do. - #[cfg(not(any( - apple, - all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - ) - )))] + #[cfg(not(any(apple, fix_y2038)))] unsafe { - // Assert that `Timestamps` has the expected layout. - let _ = core::mem::transmute::(times.clone()); + use crate::utils::as_ptr; ret(c::utimensat( borrowed_fd(dirfd), c_str(path), as_ptr(times).cast(), - flags.bits(), + bitflags_bits!(flags), )) } - // `utimensat` was introduced in macOS 10.13. + // Apple version: `utimensat` was introduced in macOS 10.13. #[cfg(apple)] unsafe { + use crate::utils::as_ptr; + // ABI details weak! { fn utimensat( @@ -613,14 +820,11 @@ // If we have `utimensat`, use it. if let Some(have_utimensat) = utimensat.get() { - // Assert that `Timestamps` has the expected layout. - let _ = core::mem::transmute::(times.clone()); - return ret(have_utimensat( borrowed_fd(dirfd), c_str(path), as_ptr(times).cast(), - flags.bits(), + bitflags_bits!(flags), )); } @@ -704,11 +908,8 @@ } } -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] -unsafe fn utimensat_old( +#[cfg(fix_y2038)] +fn utimensat_old( dirfd: BorrowedFd<'_>, path: &CStr, times: &Timestamps, @@ -732,15 +933,27 @@ tv_nsec: times.last_modification.tv_nsec, }, ]; - ret(c::utimensat( - borrowed_fd(dirfd), - c_str(path), - old_times.as_ptr(), - flags.bits(), - )) + unsafe { + ret(c::utimensat( + borrowed_fd(dirfd), + c_str(path), + old_times.as_ptr(), + bitflags_bits!(flags), + )) + } } -#[cfg(not(any(linux_kernel, target_os = "redox", target_os = "wasi")))] +#[cfg(not(target_os = "wasi"))] +pub(crate) fn chmod(path: &CStr, mode: Mode) -> io::Result<()> { + unsafe { ret(c::chmod(c_str(path), mode.bits() as c::mode_t)) } +} + +#[cfg(not(any( + linux_kernel, + target_os = "espidf", + target_os = "redox", + target_os = "wasi" +)))] pub(crate) fn chmodat( dirfd: BorrowedFd<'_>, path: &CStr, @@ -752,7 +965,7 @@ borrowed_fd(dirfd), c_str(path), mode.bits() as c::mode_t, - flags.bits(), + bitflags_bits!(flags), )) } } @@ -770,6 +983,13 @@ // implementations, such as musl, add extra logic to `fchmod` to emulate // support for `AT_SYMLINK_NOFOLLOW`, which uses `/proc` outside our // control. + syscall! { + fn fchmodat( + base_dirfd: c::c_int, + pathname: *const c::c_char, + mode: c::mode_t + ) via SYS_fchmodat -> c::c_int + } if flags == AtFlags::SYMLINK_NOFOLLOW { return Err(io::Errno::OPNOTSUPP); } @@ -777,14 +997,10 @@ return Err(io::Errno::INVAL); } unsafe { - // Pass `mode` as a `c_uint` even if `mode_t` is narrower, since - // `libc_openat` is declared as a variadic function and narrower - // arguments are promoted. - syscall_ret(c::syscall( - c::SYS_fchmodat, + ret(fchmodat( borrowed_fd(dirfd), c_str(path), - c::c_uint::from(mode.bits()), + mode.bits() as c::mode_t, )) } } @@ -805,10 +1021,17 @@ ) via SYS_fclonefileat -> c::c_int } - unsafe { ret(fclonefileat(srcfd, dst_dirfd, c_str(dst), flags.bits())) } + unsafe { + ret(fclonefileat( + srcfd, + dst_dirfd, + c_str(dst), + bitflags_bits!(flags), + )) + } } -#[cfg(not(any(target_os = "redox", target_os = "wasi")))] +#[cfg(not(any(target_os = "espidf", target_os = "redox", target_os = "wasi")))] pub(crate) fn chownat( dirfd: BorrowedFd<'_>, path: &CStr, @@ -817,18 +1040,18 @@ flags: AtFlags, ) -> io::Result<()> { unsafe { - let (ow, gr) = crate::process::translate_fchown_args(owner, group); + let (ow, gr) = crate::ugid::translate_fchown_args(owner, group); ret(c::fchownat( borrowed_fd(dirfd), c_str(path), ow, gr, - flags.bits(), + bitflags_bits!(flags), )) } } -#[cfg(not(any(apple, target_os = "redox", target_os = "wasi")))] +#[cfg(not(any(apple, target_os = "espidf", target_os = "redox", target_os = "wasi")))] pub(crate) fn mknodat( dirfd: BorrowedFd<'_>, path: &CStr, @@ -854,26 +1077,34 @@ off_out: Option<&mut u64>, len: usize, ) -> io::Result { - assert_eq!(size_of::(), size_of::()); + syscall! { + fn copy_file_range( + fd_in: c::c_int, + off_in: *mut c::loff_t, + fd_out: c::c_int, + off_out: *mut c::loff_t, + len: usize, + flags: c::c_uint + ) via SYS_copy_file_range -> c::ssize_t + } let mut off_in_val: c::loff_t = 0; let mut off_out_val: c::loff_t = 0; // Silently cast; we'll get `EINVAL` if the value is negative. let off_in_ptr = if let Some(off_in) = &off_in { - off_in_val = (**off_in) as i64; + off_in_val = **off_in as i64; &mut off_in_val } else { null_mut() }; let off_out_ptr = if let Some(off_out) = &off_out { - off_out_val = (**off_out) as i64; + off_out_val = **off_out as i64; &mut off_out_val } else { null_mut() }; let copied = unsafe { - syscall_ret_usize(c::syscall( - c::SYS_copy_file_range, + ret_usize(copy_file_range( borrowed_fd(fd_in), off_in_ptr, borrowed_fd(fd_out), @@ -896,6 +1127,7 @@ netbsdlike, solarish, target_os = "dragonfly", + target_os = "espidf", target_os = "haiku", target_os = "redox", )))] @@ -919,7 +1151,7 @@ len }; - let err = unsafe { libc_posix_fadvise(borrowed_fd(fd), offset, len, advice as c::c_int) }; + let err = unsafe { c::posix_fadvise(borrowed_fd(fd), offset, len, advice as c::c_int) }; // `posix_fadvise` returns its error status rather than using `errno`. if err == 0 { @@ -930,7 +1162,8 @@ } pub(crate) fn fcntl_getfl(fd: BorrowedFd<'_>) -> io::Result { - unsafe { ret_c_int(c::fcntl(borrowed_fd(fd), c::F_GETFL)).map(OFlags::from_bits_truncate) } + let flags = unsafe { ret_c_int(c::fcntl(borrowed_fd(fd), c::F_GETFL))? }; + Ok(OFlags::from_bits_retain(bitcast!(flags))) } pub(crate) fn fcntl_setfl(fd: BorrowedFd<'_>, flags: OFlags) -> io::Result<()> { @@ -939,10 +1172,8 @@ #[cfg(any(linux_kernel, target_os = "freebsd", target_os = "fuchsia"))] pub(crate) fn fcntl_get_seals(fd: BorrowedFd<'_>) -> io::Result { - unsafe { - ret_c_int(c::fcntl(borrowed_fd(fd), c::F_GET_SEALS)) - .map(|flags| SealFlags::from_bits_unchecked(flags)) - } + let flags = unsafe { ret_c_int(c::fcntl(borrowed_fd(fd), c::F_GET_SEALS))? }; + Ok(SealFlags::from_bits_retain(bitcast!(flags))) } #[cfg(any(linux_kernel, target_os = "freebsd", target_os = "fuchsia"))] @@ -952,6 +1183,7 @@ #[cfg(not(any( target_os = "emscripten", + target_os = "espidf", target_os = "fuchsia", target_os = "redox", target_os = "wasi" @@ -985,7 +1217,7 @@ } pub(crate) fn seek(fd: BorrowedFd<'_>, pos: SeekFrom) -> io::Result { - let (whence, offset): (c::c_int, libc_off_t) = match pos { + let (whence, offset) = match pos { SeekFrom::Start(pos) => { let pos: u64 = pos; // Silently cast; we'll get `EINVAL` if the value is negative. @@ -993,23 +1225,28 @@ } SeekFrom::End(offset) => (c::SEEK_END, offset), SeekFrom::Current(offset) => (c::SEEK_CUR, offset), - #[cfg(any(freebsdlike, target_os = "linux", target_os = "solaris"))] + #[cfg(any(apple, freebsdlike, linux_kernel, solarish))] SeekFrom::Data(offset) => (c::SEEK_DATA, offset), - #[cfg(any(freebsdlike, target_os = "linux", target_os = "solaris"))] + #[cfg(any(apple, freebsdlike, linux_kernel, solarish))] SeekFrom::Hole(offset) => (c::SEEK_HOLE, offset), }; - let offset = unsafe { ret_off_t(libc_lseek(borrowed_fd(fd), offset, whence))? }; + + // ESP-IDF doesn't support 64-bit offsets. + #[cfg(target_os = "espidf")] + let offset: i32 = offset.try_into().map_err(|_| io::Errno::OVERFLOW)?; + + let offset = unsafe { ret_off_t(c::lseek(borrowed_fd(fd), offset, whence))? }; Ok(offset as u64) } pub(crate) fn tell(fd: BorrowedFd<'_>) -> io::Result { - let offset = unsafe { ret_off_t(libc_lseek(borrowed_fd(fd), 0, c::SEEK_CUR))? }; + let offset = unsafe { ret_off_t(c::lseek(borrowed_fd(fd), 0, c::SEEK_CUR))? }; Ok(offset as u64) } #[cfg(not(any(linux_kernel, target_os = "wasi")))] pub(crate) fn fchmod(fd: BorrowedFd<'_>, mode: Mode) -> io::Result<()> { - unsafe { ret(c::fchmod(borrowed_fd(fd), mode.bits())) } + unsafe { ret(c::fchmod(borrowed_fd(fd), bitflags_bits!(mode))) } } #[cfg(linux_kernel)] @@ -1018,13 +1255,13 @@ // implementations, such as musl, add extra logic to `fchmod` to emulate // support for `O_PATH`, which uses `/proc` outside our control and // interferes with our own use of `O_PATH`. - unsafe { - syscall_ret(c::syscall( - c::SYS_fchmod, - borrowed_fd(fd), - c::c_uint::from(mode.bits()), - )) + syscall! { + fn fchmod( + fd: c::c_int, + mode: c::mode_t + ) via SYS_fchmod -> c::c_int } + unsafe { ret(fchmod(borrowed_fd(fd), mode.bits() as c::mode_t)) } } #[cfg(linux_kernel)] @@ -1033,21 +1270,28 @@ // implementations, such as musl, add extra logic to `fchown` to emulate // support for `O_PATH`, which uses `/proc` outside our control and // interferes with our own use of `O_PATH`. + syscall! { + fn fchown( + fd: c::c_int, + owner: c::uid_t, + group: c::gid_t + ) via SYS_fchown -> c::c_int + } unsafe { - let (ow, gr) = crate::process::translate_fchown_args(owner, group); - syscall_ret(c::syscall(c::SYS_fchown, borrowed_fd(fd), ow, gr)) + let (ow, gr) = crate::ugid::translate_fchown_args(owner, group); + ret(fchown(borrowed_fd(fd), ow, gr)) } } #[cfg(not(any(linux_kernel, target_os = "wasi")))] pub(crate) fn fchown(fd: BorrowedFd<'_>, owner: Option, group: Option) -> io::Result<()> { unsafe { - let (ow, gr) = crate::process::translate_fchown_args(owner, group); + let (ow, gr) = crate::ugid::translate_fchown_args(owner, group); ret(c::fchown(borrowed_fd(fd), ow, gr)) } } -#[cfg(not(any(target_os = "solaris", target_os = "wasi")))] +#[cfg(not(any(target_os = "espidf", target_os = "solaris", target_os = "wasi")))] pub(crate) fn flock(fd: BorrowedFd<'_>, operation: FlockOperation) -> io::Result<()> { unsafe { ret(c::flock(borrowed_fd(fd), operation as c::c_int)) } } @@ -1069,7 +1313,7 @@ unsafe { ret(syncfs(borrowed_fd(fd))) } } -#[cfg(not(any(target_os = "redox", target_os = "wasi")))] +#[cfg(not(any(target_os = "espidf", target_os = "redox", target_os = "wasi")))] pub(crate) fn sync() { unsafe { c::sync() } } @@ -1081,7 +1325,14 @@ // And, some old platforms don't support `statx`, and some fail with a // confusing error code, so we call `crate::fs::statx` to handle that. If // `statx` isn't available, fall back to the buggy system call. - #[cfg(all(linux_kernel, any(target_pointer_width = "32", target_arch = "mips64")))] + #[cfg(all( + linux_kernel, + any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6" + ) + ))] { match crate::fs::statx(fd, cstr!(""), AtFlags::EMPTY_PATH, StatxFlags::BASIC_STATS) { Ok(x) => statx_to_stat(x), @@ -1092,49 +1343,65 @@ // Main version: libc is y2038 safe. Or, the platform is not y2038 safe and // there's nothing practical we can do. - #[cfg(not(all(linux_kernel, any(target_pointer_width = "32", target_arch = "mips64"))))] + #[cfg(not(all( + linux_kernel, + any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6" + ) + )))] unsafe { let mut stat = MaybeUninit::::uninit(); - ret(libc_fstat(borrowed_fd(fd), stat.as_mut_ptr()))?; + ret(c::fstat(borrowed_fd(fd), stat.as_mut_ptr()))?; Ok(stat.assume_init()) } } -#[cfg(all(linux_kernel, any(target_pointer_width = "32", target_arch = "mips64")))] +#[cfg(all( + linux_kernel, + any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6" + ) +))] fn fstat_old(fd: BorrowedFd<'_>) -> io::Result { unsafe { let mut result = MaybeUninit::::uninit(); - ret(libc_fstat(borrowed_fd(fd), result.as_mut_ptr()))?; + ret(c::fstat(borrowed_fd(fd), result.as_mut_ptr()))?; stat64_to_stat(result.assume_init()) } } #[cfg(not(any( solarish, + target_os = "espidf", target_os = "haiku", target_os = "netbsd", + target_os = "nto", target_os = "redox", target_os = "wasi", )))] pub(crate) fn fstatfs(fd: BorrowedFd<'_>) -> io::Result { let mut statfs = MaybeUninit::::uninit(); unsafe { - ret(libc_fstatfs(borrowed_fd(fd), statfs.as_mut_ptr()))?; + ret(c::fstatfs(borrowed_fd(fd), statfs.as_mut_ptr()))?; Ok(statfs.assume_init()) } } #[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "wasi")))] pub(crate) fn fstatvfs(fd: BorrowedFd<'_>) -> io::Result { - let mut statvfs = MaybeUninit::::uninit(); + let mut statvfs = MaybeUninit::::uninit(); unsafe { - ret(libc_fstatvfs(borrowed_fd(fd), statvfs.as_mut_ptr()))?; + ret(c::fstatvfs(borrowed_fd(fd), statvfs.as_mut_ptr()))?; Ok(libc_statvfs_to_statvfs(statvfs.assume_init())) } } #[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "wasi")))] -fn libc_statvfs_to_statvfs(from: libc_statvfs) -> StatVfs { +fn libc_statvfs_to_statvfs(from: c::statvfs) -> StatVfs { StatVfs { f_bsize: from.f_bsize as u64, f_frsize: from.f_frsize as u64, @@ -1145,49 +1412,46 @@ f_ffree: from.f_ffree as u64, f_favail: from.f_ffree as u64, f_fsid: from.f_fsid as u64, - f_flag: unsafe { StatVfsMountFlags::from_bits_unchecked(from.f_flag as u64) }, + f_flag: StatVfsMountFlags::from_bits_retain(from.f_flag as u64), f_namemax: from.f_namemax as u64, } } +#[cfg(not(target_os = "espidf"))] pub(crate) fn futimens(fd: BorrowedFd<'_>, times: &Timestamps) -> io::Result<()> { - // 32-bit gnu version: libc has `futimens` but it is not y2038 safe by default. - #[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - ))] - unsafe { + // Old 32-bit version: libc has `futimens` but it is not y2038 safe by + // default. But there may be a `__futimens64` we can use. + #[cfg(fix_y2038)] + { + #[cfg(target_env = "gnu")] if let Some(libc_futimens) = __futimens64.get() { let libc_times: [LibcTimespec; 2] = [ times.last_access.clone().into(), times.last_modification.clone().into(), ]; - ret(libc_futimens(borrowed_fd(fd), libc_times.as_ptr())) - } else { - futimens_old(fd, times) + unsafe { + return ret(libc_futimens(borrowed_fd(fd), libc_times.as_ptr())); + } } + + futimens_old(fd, times) } // Main version: libc is y2038 safe and has `futimens`. Or, the platform // is not y2038 safe and there's nothing practical we can do. - #[cfg(not(any( - apple, - all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - ) - )))] + #[cfg(not(any(apple, fix_y2038)))] unsafe { - // Assert that `Timestamps` has the expected layout. - let _ = core::mem::transmute::(times.clone()); + use crate::utils::as_ptr; ret(c::futimens(borrowed_fd(fd), as_ptr(times).cast())) } - // `futimens` was introduced in macOS 10.13. + // Apple version: `futimens` was introduced in macOS 10.13. #[cfg(apple)] unsafe { + use crate::utils::as_ptr; + // ABI details. weak! { fn futimens(c::c_int, *const c::timespec) -> c::c_int @@ -1204,9 +1468,6 @@ // If we have `futimens`, use it. if let Some(have_futimens) = futimens.get() { - // Assert that `Timestamps` has the expected layout. - let _ = core::mem::transmute::(times.clone()); - return ret(have_futimens(borrowed_fd(fd), as_ptr(times).cast())); } @@ -1223,11 +1484,8 @@ } } -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] -unsafe fn futimens_old(fd: BorrowedFd<'_>, times: &Timestamps) -> io::Result<()> { +#[cfg(fix_y2038)] +fn futimens_old(fd: BorrowedFd<'_>, times: &Timestamps) -> io::Result<()> { let old_times = [ c::timespec { tv_sec: times @@ -1247,7 +1505,7 @@ }, ]; - ret(c::futimens(borrowed_fd(fd), old_times.as_ptr())) + unsafe { ret(c::futimens(borrowed_fd(fd), old_times.as_ptr())) } } #[cfg(not(any( @@ -1256,6 +1514,8 @@ solarish, target_os = "aix", target_os = "dragonfly", + target_os = "espidf", + target_os = "nto", target_os = "redox", )))] pub(crate) fn fallocate( @@ -1270,13 +1530,18 @@ #[cfg(any(linux_kernel, target_os = "fuchsia"))] unsafe { - ret(libc_fallocate(borrowed_fd(fd), mode.bits(), offset, len)) + ret(c::fallocate( + borrowed_fd(fd), + bitflags_bits!(mode), + offset, + len, + )) } #[cfg(not(any(linux_kernel, target_os = "fuchsia")))] { assert!(mode.is_empty()); - let err = unsafe { libc_posix_fallocate(borrowed_fd(fd), offset, len) }; + let err = unsafe { c::posix_fallocate(borrowed_fd(fd), offset, len) }; // `posix_fallocate` returns its error status rather than using `errno`. if err == 0 { @@ -1325,6 +1590,7 @@ #[cfg(not(any( apple, target_os = "dragonfly", + target_os = "espidf", target_os = "haiku", target_os = "redox", )))] @@ -1334,7 +1600,7 @@ pub(crate) fn ftruncate(fd: BorrowedFd<'_>, length: u64) -> io::Result<()> { let length = length.try_into().map_err(|_overflow_err| io::Errno::FBIG)?; - unsafe { ret(libc_ftruncate(borrowed_fd(fd), length)) } + unsafe { ret(c::ftruncate(borrowed_fd(fd), length)) } } #[cfg(any(linux_kernel, target_os = "freebsd"))] @@ -1355,7 +1621,7 @@ ) via SYS_memfd_create -> c::c_int } - unsafe { ret_owned_fd(memfd_create(c_str(path), flags.bits())) } + unsafe { ret_owned_fd(memfd_create(c_str(path), bitflags_bits!(flags))) } } #[cfg(linux_kernel)] @@ -1366,20 +1632,30 @@ mode: Mode, resolve: ResolveFlags, ) -> io::Result { - let oflags: i32 = oflags.bits(); - let open_how = OpenHow { - oflag: u64::from(oflags as u32), + use linux_raw_sys::general::open_how; + + syscall! { + fn openat2( + base_dirfd: c::c_int, + pathname: *const c::c_char, + how: *mut open_how, + size: usize + ) via SYS_OPENAT2 -> c::c_int + } + + let oflags = oflags.bits(); + let mut open_how = open_how { + flags: u64::from(oflags), mode: u64::from(mode.bits()), resolve: resolve.bits(), }; unsafe { - syscall_ret_owned_fd(c::syscall( - SYS_OPENAT2, + ret_owned_fd(openat2( borrowed_fd(dirfd), c_str(path), - &open_how, - SIZEOF_OPEN_HOW, + &mut open_how, + size_of::(), )) } } @@ -1388,17 +1664,6 @@ #[cfg(all(linux_kernel, target_pointer_width = "64"))] const SYS_OPENAT2: i64 = 437; -#[cfg(linux_kernel)] -#[repr(C)] -#[derive(Debug)] -struct OpenHow { - oflag: u64, - mode: u64, - resolve: u64, -} -#[cfg(linux_kernel)] -const SIZEOF_OPEN_HOW: usize = size_of::(); - #[cfg(target_os = "linux")] pub(crate) fn sendfile( out_fd: BorrowedFd<'_>, @@ -1454,7 +1719,7 @@ /// Convert from a Linux `statx` value to rustix's `Stat`. /// /// mips64' `struct stat64` in libc has private fields, and `stx_blocks` -#[cfg(all(linux_kernel, target_arch = "mips64"))] +#[cfg(all(linux_kernel, any(target_arch = "mips64", target_arch = "mips64r6")))] fn statx_to_stat(x: crate::fs::Statx) -> io::Result { let mut result: Stat = unsafe { core::mem::zeroed() }; @@ -1526,7 +1791,7 @@ /// /// mips64' `struct stat64` in libc has private fields, and `st_blocks` has /// type `i64`. -#[cfg(all(linux_kernel, target_arch = "mips64"))] +#[cfg(all(linux_kernel, any(target_arch = "mips64", target_arch = "mips64r6")))] fn stat64_to_stat(s64: c::stat64) -> io::Result { let mut result: Stat = unsafe { core::mem::zeroed() }; @@ -1610,7 +1875,7 @@ ret(sys::statx( dirfd, c_str(path), - flags.bits(), + bitflags_bits!(flags), mask.bits(), statx_buf.as_mut_ptr(), ))?; @@ -1625,7 +1890,7 @@ // Call `statx` with null pointers so that if it fails for any reason // other than `EFAULT`, we know it's not supported. matches!( - ret(sys::statx(cwd(), null(), 0, 0, null_mut())), + ret(sys::statx(CWD, null(), 0, 0, null_mut())), Err(io::Errno::FAULT) ) } @@ -1651,7 +1916,7 @@ borrowed_fd(from), borrowed_fd(to), state, - flags.bits(), + bitflags_bits!(flags), )) } @@ -1721,9 +1986,6 @@ let l = buf.iter().position(|&c| c == 0).unwrap(); buf.truncate(l); - - // TODO: On Rust 1.56, we can use `shrink_to` here. - //buf.shrink_to(l + 1); buf.shrink_to_fit(); Ok(CString::new(buf).unwrap()) @@ -1771,6 +2033,22 @@ unsafe { ret(c::fcntl(borrowed_fd(fd), c::F_FULLFSYNC)) } } +#[cfg(apple)] +pub(crate) fn fcntl_nocache(fd: BorrowedFd, value: bool) -> io::Result<()> { + unsafe { ret(c::fcntl(borrowed_fd(fd), c::F_NOCACHE, value as c::c_int)) } +} + +#[cfg(apple)] +pub(crate) fn fcntl_global_nocache(fd: BorrowedFd, value: bool) -> io::Result<()> { + unsafe { + ret(c::fcntl( + borrowed_fd(fd), + c::F_GLOBAL_NOCACHE, + value as c::c_int, + )) + } +} + /// Convert `times` from a `futimens`/`utimensat` argument into `setattrlist` /// arguments. #[cfg(apple)] @@ -1857,30 +2135,6 @@ forkattr: Attrgroup, } -#[cfg(linux_kernel)] -pub(crate) fn mount( - source: Option<&CStr>, - target: &CStr, - file_system_type: Option<&CStr>, - flags: super::types::MountFlagsArg, - data: Option<&CStr>, -) -> io::Result<()> { - unsafe { - ret(c::mount( - source.map_or_else(null, CStr::as_ptr), - target.as_ptr(), - file_system_type.map_or_else(null, CStr::as_ptr), - flags.0, - data.map_or_else(null, CStr::as_ptr).cast(), - )) - } -} - -#[cfg(linux_kernel)] -pub(crate) fn unmount(target: &CStr, flags: super::types::UnmountFlags) -> io::Result<()> { - unsafe { ret(c::umount2(target.as_ptr(), flags.bits())) } -} - #[cfg(any(apple, linux_kernel))] pub(crate) fn getxattr(path: &CStr, name: &CStr, value: &mut [u8]) -> io::Result { let value_ptr = value.as_mut_ptr(); @@ -2150,3 +2404,65 @@ ret(c::fremovexattr(fd, name.as_ptr(), 0)) } } + +#[cfg(linux_kernel)] +#[inline] +pub(crate) fn ioctl_blksszget(fd: BorrowedFd) -> io::Result { + let mut result = MaybeUninit::::uninit(); + unsafe { + ret(c::ioctl(borrowed_fd(fd), c::BLKSSZGET, result.as_mut_ptr()))?; + Ok(result.assume_init() as u32) + } +} + +#[cfg(linux_kernel)] +#[inline] +pub(crate) fn ioctl_blkpbszget(fd: BorrowedFd) -> io::Result { + let mut result = MaybeUninit::::uninit(); + unsafe { + ret(c::ioctl( + borrowed_fd(fd), + c::BLKPBSZGET, + result.as_mut_ptr(), + ))?; + Ok(result.assume_init() as u32) + } +} + +// Sparc lacks `FICLONE`. +#[cfg(all(linux_kernel, not(any(target_arch = "sparc", target_arch = "sparc64"))))] +pub(crate) fn ioctl_ficlone(fd: BorrowedFd<'_>, src_fd: BorrowedFd<'_>) -> io::Result<()> { + unsafe { + ret(c::ioctl( + borrowed_fd(fd), + c::FICLONE as _, + borrowed_fd(src_fd), + )) + } +} + +#[cfg(linux_kernel)] +#[inline] +pub(crate) fn ext4_ioc_resize_fs(fd: BorrowedFd<'_>, blocks: u64) -> io::Result<()> { + // TODO: Fix linux-raw-sys to define ioctl codes for sparc. + #[cfg(any(target_arch = "sparc", target_arch = "sparc64"))] + const EXT4_IOC_RESIZE_FS: u32 = 0x8008_6610; + + #[cfg(not(any(target_arch = "sparc", target_arch = "sparc64")))] + use linux_raw_sys::ioctl::EXT4_IOC_RESIZE_FS; + + unsafe { ret(c::ioctl(borrowed_fd(fd), EXT4_IOC_RESIZE_FS as _, &blocks)) } +} + +#[test] +fn test_sizes() { + #[cfg(linux_kernel)] + assert_eq_size!(c::loff_t, u64); + + // Assert that `Timestamps` has the expected layout. If we're not fixing + // y2038, libc's type should match ours. If we are, it's smaller. + #[cfg(not(fix_y2038))] + assert_eq_size!([c::timespec; 2], Timestamps); + #[cfg(fix_y2038)] + assert!(core::mem::size_of::<[c::timespec; 2]>() < core::mem::size_of::()); +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/types.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/fs/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,13 @@ -use super::super::c; +use crate::backend::c; use bitflags::bitflags; +#[cfg(not(target_os = "espidf"))] bitflags! { /// `*_OK` constants for use with [`accessat`]. /// /// [`accessat`]: fn.accessat.html + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct Access: c::c_int { /// `R_OK` const READ_OK = c::R_OK; @@ -20,51 +23,56 @@ } } -#[cfg(not(target_os = "redox"))] +#[cfg(not(any(target_os = "espidf", target_os = "redox")))] bitflags! { /// `AT_*` constants for use with [`openat`], [`statat`], and other `*at` /// functions. /// /// [`openat`]: crate::fs::openat /// [`statat`]: crate::fs::statat - pub struct AtFlags: c::c_int { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct AtFlags: u32 { + /// `AT_SYMLINK_NOFOLLOW` + const SYMLINK_NOFOLLOW = bitcast!(c::AT_SYMLINK_NOFOLLOW); + + /// `AT_EACCESS` + #[cfg(not(any(target_os = "emscripten", target_os = "android")))] + const EACCESS = bitcast!(c::AT_EACCESS); + /// `AT_REMOVEDIR` - const REMOVEDIR = c::AT_REMOVEDIR; + const REMOVEDIR = bitcast!(c::AT_REMOVEDIR); /// `AT_SYMLINK_FOLLOW` - const SYMLINK_FOLLOW = c::AT_SYMLINK_FOLLOW; + const SYMLINK_FOLLOW = bitcast!(c::AT_SYMLINK_FOLLOW); - /// `AT_SYMLINK_NOFOLLOW` - const SYMLINK_NOFOLLOW = c::AT_SYMLINK_NOFOLLOW; + /// `AT_NO_AUTOMOUNT` + #[cfg(any(linux_like, target_os = "fuchsia"))] + const NO_AUTOMOUNT = bitcast!(c::AT_NO_AUTOMOUNT); /// `AT_EMPTY_PATH` #[cfg(any( - target_os = "android", + linux_kernel, target_os = "freebsd", target_os = "fuchsia", - target_os = "linux", ))] - const EMPTY_PATH = c::AT_EMPTY_PATH; + const EMPTY_PATH = bitcast!(c::AT_EMPTY_PATH); /// `AT_RESOLVE_BENEATH` #[cfg(target_os = "freebsd")] - const RESOLVE_BENEATH = c::AT_RESOLVE_BENEATH; - - /// `AT_EACCESS` - #[cfg(not(any(target_os = "emscripten", target_os = "android")))] - const EACCESS = c::AT_EACCESS; + const RESOLVE_BENEATH = bitcast!(c::AT_RESOLVE_BENEATH); /// `AT_STATX_SYNC_AS_STAT` #[cfg(all(target_os = "linux", target_env = "gnu"))] - const STATX_SYNC_AS_STAT = c::AT_STATX_SYNC_AS_STAT; + const STATX_SYNC_AS_STAT = bitcast!(c::AT_STATX_SYNC_AS_STAT); /// `AT_STATX_FORCE_SYNC` #[cfg(all(target_os = "linux", target_env = "gnu"))] - const STATX_FORCE_SYNC = c::AT_STATX_FORCE_SYNC; + const STATX_FORCE_SYNC = bitcast!(c::AT_STATX_FORCE_SYNC); /// `AT_STATX_DONT_SYNC` #[cfg(all(target_os = "linux", target_env = "gnu"))] - const STATX_DONT_SYNC = c::AT_STATX_DONT_SYNC; + const STATX_DONT_SYNC = bitcast!(c::AT_STATX_DONT_SYNC); } } @@ -74,69 +82,72 @@ /// [`openat`]: crate::fs::openat /// [`chmodat`]: crate::fs::chmodat /// [`fchmod`]: crate::fs::fchmod + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct Mode: RawMode { /// `S_IRWXU` - #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags. + #[cfg(not(any(target_os = "espidf", target_os = "wasi")))] // WASI doesn't have Unix-style mode flags. const RWXU = c::S_IRWXU as RawMode; /// `S_IRUSR` - #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags. + #[cfg(not(any(target_os = "espidf", target_os = "wasi")))] // WASI doesn't have Unix-style mode flags. const RUSR = c::S_IRUSR as RawMode; /// `S_IWUSR` - #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags. + #[cfg(not(any(target_os = "espidf", target_os = "wasi")))] // WASI doesn't have Unix-style mode flags. const WUSR = c::S_IWUSR as RawMode; /// `S_IXUSR` - #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags. + #[cfg(not(any(target_os = "espidf", target_os = "wasi")))] // WASI doesn't have Unix-style mode flags. const XUSR = c::S_IXUSR as RawMode; /// `S_IRWXG` - #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags. + #[cfg(not(any(target_os = "espidf", target_os = "wasi")))] // WASI doesn't have Unix-style mode flags. const RWXG = c::S_IRWXG as RawMode; /// `S_IRGRP` - #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags. + #[cfg(not(any(target_os = "espidf", target_os = "wasi")))] // WASI doesn't have Unix-style mode flags. const RGRP = c::S_IRGRP as RawMode; /// `S_IWGRP` - #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags. + #[cfg(not(any(target_os = "espidf", target_os = "wasi")))] // WASI doesn't have Unix-style mode flags. const WGRP = c::S_IWGRP as RawMode; /// `S_IXGRP` - #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags. + #[cfg(not(any(target_os = "espidf", target_os = "wasi")))] // WASI doesn't have Unix-style mode flags. const XGRP = c::S_IXGRP as RawMode; /// `S_IRWXO` - #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags. + #[cfg(not(any(target_os = "espidf", target_os = "wasi")))] // WASI doesn't have Unix-style mode flags. const RWXO = c::S_IRWXO as RawMode; /// `S_IROTH` - #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags. + #[cfg(not(any(target_os = "espidf", target_os = "wasi")))] // WASI doesn't have Unix-style mode flags. const ROTH = c::S_IROTH as RawMode; /// `S_IWOTH` - #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags. + #[cfg(not(any(target_os = "espidf", target_os = "wasi")))] // WASI doesn't have Unix-style mode flags. const WOTH = c::S_IWOTH as RawMode; /// `S_IXOTH` - #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags. + #[cfg(not(any(target_os = "espidf", target_os = "wasi")))] // WASI doesn't have Unix-style mode flags. const XOTH = c::S_IXOTH as RawMode; /// `S_ISUID` - #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags. + #[cfg(not(any(target_os = "espidf", target_os = "wasi")))] // WASI doesn't have Unix-style mode flags. const SUID = c::S_ISUID as RawMode; /// `S_ISGID` - #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags. + #[cfg(not(any(target_os = "espidf", target_os = "wasi")))] // WASI doesn't have Unix-style mode flags. const SGID = c::S_ISGID as RawMode; /// `S_ISVTX` - #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags. + #[cfg(not(any(target_os = "espidf", target_os = "wasi")))] // WASI doesn't have Unix-style mode flags. const SVTX = c::S_ISVTX as RawMode; } } +#[cfg(not(target_os = "espidf"))] impl Mode { /// Construct a `Mode` from the mode bits of the `st_mode` field of a /// `Stat`. @@ -152,6 +163,7 @@ } } +#[cfg(not(target_os = "espidf"))] impl From for Mode { /// Support conversions from raw mode values to `Mode`. /// @@ -165,8 +177,9 @@ } } +#[cfg(not(target_os = "espidf"))] impl From for RawMode { - /// Support conversions from `Mode to raw mode values. + /// Support conversions from `Mode` to raw mode values. /// /// ``` /// use rustix::fs::{Mode, RawMode}; @@ -182,9 +195,11 @@ /// `O_*` constants for use with [`openat`]. /// /// [`openat`]: crate::fs::openat - pub struct OFlags: c::c_int { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct OFlags: u32 { /// `O_ACCMODE` - const ACCMODE = c::O_ACCMODE; + const ACCMODE = bitcast!(c::O_ACCMODE); /// Similar to `ACCMODE`, but just includes the read/write flags, and /// no other flags. @@ -193,117 +208,116 @@ /// sometimes we really just want the read/write bits. Caution is /// indicated, as the presence of `O_PATH` may mean that the read/write /// bits don't have their usual meaning. - const RWMODE = c::O_RDONLY | c::O_WRONLY | c::O_RDWR; + const RWMODE = bitcast!(c::O_RDONLY | c::O_WRONLY | c::O_RDWR); /// `O_APPEND` - const APPEND = c::O_APPEND; + const APPEND = bitcast!(c::O_APPEND); /// `O_CREAT` #[doc(alias = "CREAT")] - const CREATE = c::O_CREAT; + const CREATE = bitcast!(c::O_CREAT); /// `O_DIRECTORY` - const DIRECTORY = c::O_DIRECTORY; + #[cfg(not(target_os = "espidf"))] + const DIRECTORY = bitcast!(c::O_DIRECTORY); /// `O_DSYNC` - #[cfg(not(any(target_os = "dragonfly", target_os = "redox")))] - const DSYNC = c::O_DSYNC; + #[cfg(not(any(target_os = "dragonfly", target_os = "espidf", target_os = "l4re", target_os = "redox")))] + const DSYNC = bitcast!(c::O_DSYNC); /// `O_EXCL` - const EXCL = c::O_EXCL; + const EXCL = bitcast!(c::O_EXCL); /// `O_FSYNC` #[cfg(any( bsd, all(target_os = "linux", not(target_env = "musl")), ))] - const FSYNC = c::O_FSYNC; + const FSYNC = bitcast!(c::O_FSYNC); /// `O_NOFOLLOW` - const NOFOLLOW = c::O_NOFOLLOW; + #[cfg(not(target_os = "espidf"))] + const NOFOLLOW = bitcast!(c::O_NOFOLLOW); /// `O_NONBLOCK` - const NONBLOCK = c::O_NONBLOCK; + const NONBLOCK = bitcast!(c::O_NONBLOCK); /// `O_RDONLY` - const RDONLY = c::O_RDONLY; + const RDONLY = bitcast!(c::O_RDONLY); /// `O_WRONLY` - const WRONLY = c::O_WRONLY; + const WRONLY = bitcast!(c::O_WRONLY); /// `O_RDWR` - const RDWR = c::O_RDWR; + /// + /// This is not equal to `RDONLY | WRONLY`. It's a distinct flag. + const RDWR = bitcast!(c::O_RDWR); /// `O_NOCTTY` - #[cfg(not(target_os = "redox"))] - const NOCTTY = c::O_NOCTTY; + #[cfg(not(any(target_os = "espidf", target_os = "l4re", target_os = "redox")))] + const NOCTTY = bitcast!(c::O_NOCTTY); /// `O_RSYNC` #[cfg(any( + linux_kernel, netbsdlike, - target_os = "android", target_os = "emscripten", - target_os = "linux", target_os = "wasi", ))] - const RSYNC = c::O_RSYNC; + const RSYNC = bitcast!(c::O_RSYNC); /// `O_SYNC` - #[cfg(not(target_os = "redox"))] - const SYNC = c::O_SYNC; + #[cfg(not(any(target_os = "l4re", target_os = "redox")))] + const SYNC = bitcast!(c::O_SYNC); /// `O_TRUNC` - const TRUNC = c::O_TRUNC; + const TRUNC = bitcast!(c::O_TRUNC); /// `O_PATH` #[cfg(any( - target_os = "android", + linux_kernel, target_os = "emscripten", target_os = "freebsd", target_os = "fuchsia", - target_os = "linux", target_os = "redox", ))] - const PATH = c::O_PATH; + const PATH = bitcast!(c::O_PATH); /// `O_CLOEXEC` - const CLOEXEC = c::O_CLOEXEC; + const CLOEXEC = bitcast!(c::O_CLOEXEC); /// `O_TMPFILE` #[cfg(any( - target_os = "android", + linux_kernel, target_os = "emscripten", target_os = "fuchsia", - target_os = "linux", ))] - const TMPFILE = c::O_TMPFILE; + const TMPFILE = bitcast!(c::O_TMPFILE); /// `O_NOATIME` #[cfg(any( - target_os = "android", + linux_kernel, target_os = "fuchsia", - target_os = "linux", ))] - const NOATIME = c::O_NOATIME; + const NOATIME = bitcast!(c::O_NOATIME); /// `O_DIRECT` #[cfg(any( - target_os = "android", + linux_kernel, target_os = "emscripten", target_os = "freebsd", target_os = "fuchsia", - target_os = "linux", target_os = "netbsd", ))] - const DIRECT = c::O_DIRECT; + const DIRECT = bitcast!(c::O_DIRECT); /// `O_RESOLVE_BENEATH` #[cfg(target_os = "freebsd")] - const RESOLVE_BENEATH = c::O_RESOLVE_BENEATH; + const RESOLVE_BENEATH = bitcast!(c::O_RESOLVE_BENEATH); /// `O_EMPTY_PATH` #[cfg(target_os = "freebsd")] - const EMPTY_PATH = c::O_EMPTY_PATH; + const EMPTY_PATH = bitcast!(c::O_EMPTY_PATH); } } @@ -312,7 +326,9 @@ /// `CLONE_*` constants for use with [`fclonefileat`]. /// /// [`fclonefileat`]: crate::fs::fclonefileat - pub struct CloneFlags: c::c_int { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct CloneFlags: u32 { /// `CLONE_NOFOLLOW` const NOFOLLOW = 1; @@ -337,6 +353,8 @@ /// `COPYFILE_*` constants for use with [`fcopyfile`]. /// /// [`fcopyfile`]: crate::fs::fcopyfile + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct CopyfileFlags: c::c_uint { /// `COPYFILE_ACL` const ACL = copyfile::ACL; @@ -366,7 +384,8 @@ /// `RESOLVE_*` constants for use with [`openat2`]. /// /// [`openat2`]: crate::fs::openat2 - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct ResolveFlags: u64 { /// `RESOLVE_NO_XDEV` const NO_XDEV = 0x01; @@ -393,15 +412,17 @@ /// `RENAME_*` constants for use with [`renameat_with`]. /// /// [`renameat_with`]: crate::fs::renameat_with + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct RenameFlags: c::c_uint { /// `RENAME_EXCHANGE` - const EXCHANGE = c::RENAME_EXCHANGE as _; + const EXCHANGE = bitcast!(c::RENAME_EXCHANGE); /// `RENAME_NOREPLACE` - const NOREPLACE = c::RENAME_NOREPLACE as _; + const NOREPLACE = bitcast!(c::RENAME_NOREPLACE); /// `RENAME_WHITEOUT` - const WHITEOUT = c::RENAME_WHITEOUT as _; + const WHITEOUT = bitcast!(c::RENAME_WHITEOUT); } } @@ -476,7 +497,13 @@ } /// Construct a `FileType` from the `d_type` field of a `c::dirent`. - #[cfg(not(any(solarish, target_os = "haiku", target_os = "redox")))] + #[cfg(not(any( + solarish, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + target_os = "redox" + )))] #[inline] pub(crate) const fn from_dirent_d_type(d_type: u8) -> Self { match d_type { @@ -503,6 +530,7 @@ netbsdlike, solarish, target_os = "dragonfly", + target_os = "espidf", target_os = "haiku", target_os = "redox", )))] @@ -528,11 +556,13 @@ DontNeed = c::POSIX_FADV_DONTNEED as c::c_uint, } -#[cfg(any(target_os = "android", target_os = "freebsd", target_os = "linux"))] +#[cfg(any(linux_kernel, target_os = "freebsd"))] bitflags! { /// `MFD_*` constants for use with [`memfd_create`]. /// /// [`memfd_create`]: crate::fs::memfd_create + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct MemfdFlags: c::c_uint { /// `MFD_CLOEXEC` const CLOEXEC = c::MFD_CLOEXEC; @@ -570,30 +600,27 @@ } } -#[cfg(any( - target_os = "android", - target_os = "freebsd", - target_os = "fuchsia", - target_os = "linux", -))] +#[cfg(any(linux_kernel, target_os = "freebsd", target_os = "fuchsia"))] bitflags! { /// `F_SEAL_*` constants for use with [`fcntl_add_seals`] and /// [`fcntl_get_seals`]. /// /// [`fcntl_add_seals`]: crate::fs::fcntl_add_seals /// [`fcntl_get_seals`]: crate::fs::fcntl_get_seals - pub struct SealFlags: i32 { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct SealFlags: u32 { /// `F_SEAL_SEAL`. - const SEAL = c::F_SEAL_SEAL; + const SEAL = bitcast!(c::F_SEAL_SEAL); /// `F_SEAL_SHRINK`. - const SHRINK = c::F_SEAL_SHRINK; + const SHRINK = bitcast!(c::F_SEAL_SHRINK); /// `F_SEAL_GROW`. - const GROW = c::F_SEAL_GROW; + const GROW = bitcast!(c::F_SEAL_GROW); /// `F_SEAL_WRITE`. - const WRITE = c::F_SEAL_WRITE; + const WRITE = bitcast!(c::F_SEAL_WRITE); /// `F_SEAL_FUTURE_WRITE` (since Linux 5.1) #[cfg(linux_kernel)] - const FUTURE_WRITE = c::F_SEAL_FUTURE_WRITE; + const FUTURE_WRITE = bitcast!(c::F_SEAL_FUTURE_WRITE); } } @@ -602,6 +629,8 @@ /// `STATX_*` constants for use with [`statx`]. /// /// [`statx`]: crate::fs::statx + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct StatxFlags: u32 { /// `STATX_TYPE` const TYPE = c::STATX_TYPE; @@ -645,6 +674,9 @@ /// `STATX_MNT_ID` (since Linux 5.8) const MNT_ID = c::STATX_MNT_ID; + /// `STATX_DIOALIGN` (since Linux 6.1) + const DIOALIGN = c::STATX_DIOALIGN; + /// `STATX_ALL` const ALL = c::STATX_ALL; } @@ -658,6 +690,8 @@ /// `STATX_*` constants for use with [`statx`]. /// /// [`statx`]: crate::fs::statx + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct StatxFlags: u32 { /// `STATX_TYPE` const TYPE = 0x0001; @@ -706,12 +740,21 @@ } } -#[cfg(not(any(netbsdlike, solarish, target_os = "aix", target_os = "redox")))] +#[cfg(not(any( + netbsdlike, + solarish, + target_os = "aix", + target_os = "espidf", + target_os = "nto", + target_os = "redox" +)))] bitflags! { /// `FALLOC_FL_*` constants for use with [`fallocate`]. /// /// [`fallocate`]: crate::fs::fallocate - pub struct FallocateFlags: i32 { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct FallocateFlags: u32 { /// `FALLOC_FL_KEEP_SIZE` #[cfg(not(any( bsd, @@ -719,7 +762,7 @@ target_os = "haiku", target_os = "wasi", )))] - const KEEP_SIZE = c::FALLOC_FL_KEEP_SIZE; + const KEEP_SIZE = bitcast!(c::FALLOC_FL_KEEP_SIZE); /// `FALLOC_FL_PUNCH_HOLE` #[cfg(not(any( bsd, @@ -727,18 +770,19 @@ target_os = "haiku", target_os = "wasi", )))] - const PUNCH_HOLE = c::FALLOC_FL_PUNCH_HOLE; + const PUNCH_HOLE = bitcast!(c::FALLOC_FL_PUNCH_HOLE); /// `FALLOC_FL_NO_HIDE_STALE` #[cfg(not(any( bsd, target_os = "aix", - target_os = "haiku", - target_os = "linux", target_os = "emscripten", target_os = "fuchsia", + target_os = "haiku", + target_os = "l4re", + target_os = "linux", target_os = "wasi", )))] - const NO_HIDE_STALE = c::FALLOC_FL_NO_HIDE_STALE; + const NO_HIDE_STALE = bitcast!(c::FALLOC_FL_NO_HIDE_STALE); /// `FALLOC_FL_COLLAPSE_RANGE` #[cfg(not(any( bsd, @@ -747,7 +791,7 @@ target_os = "emscripten", target_os = "wasi", )))] - const COLLAPSE_RANGE = c::FALLOC_FL_COLLAPSE_RANGE; + const COLLAPSE_RANGE = bitcast!(c::FALLOC_FL_COLLAPSE_RANGE); /// `FALLOC_FL_ZERO_RANGE` #[cfg(not(any( bsd, @@ -756,7 +800,7 @@ target_os = "emscripten", target_os = "wasi", )))] - const ZERO_RANGE = c::FALLOC_FL_ZERO_RANGE; + const ZERO_RANGE = bitcast!(c::FALLOC_FL_ZERO_RANGE); /// `FALLOC_FL_INSERT_RANGE` #[cfg(not(any( bsd, @@ -765,7 +809,7 @@ target_os = "emscripten", target_os = "wasi", )))] - const INSERT_RANGE = c::FALLOC_FL_INSERT_RANGE; + const INSERT_RANGE = bitcast!(c::FALLOC_FL_INSERT_RANGE); /// `FALLOC_FL_UNSHARE_RANGE` #[cfg(not(any( bsd, @@ -774,38 +818,47 @@ target_os = "emscripten", target_os = "wasi", )))] - const UNSHARE_RANGE = c::FALLOC_FL_UNSHARE_RANGE; + const UNSHARE_RANGE = bitcast!(c::FALLOC_FL_UNSHARE_RANGE); } } #[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "wasi")))] bitflags! { /// `ST_*` constants for use with [`StatVfs`]. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct StatVfsMountFlags: u64 { /// `ST_MANDLOCK` - #[cfg(any(target_os = "android", target_os = "emscripten", target_os = "fuchsia", target_os = "linux"))] + #[cfg(any(linux_kernel, target_os = "emscripten", target_os = "fuchsia"))] const MANDLOCK = c::ST_MANDLOCK as u64; /// `ST_NOATIME` - #[cfg(any(target_os = "android", target_os = "emscripten", target_os = "fuchsia", target_os = "linux"))] + #[cfg(any(linux_kernel, target_os = "emscripten", target_os = "fuchsia"))] const NOATIME = c::ST_NOATIME as u64; /// `ST_NODEV` - #[cfg(any(target_os = "aix", target_os = "android", target_os = "emscripten", target_os = "fuchsia", target_os = "linux"))] + #[cfg(any( + linux_kernel, + target_os = "aix", + target_os = "emscripten", + target_os = "fuchsia" + ))] const NODEV = c::ST_NODEV as u64; /// `ST_NODIRATIME` - #[cfg(any(target_os = "android", target_os = "emscripten", target_os = "fuchsia", target_os = "linux"))] + #[cfg(any(linux_kernel, target_os = "emscripten", target_os = "fuchsia"))] const NODIRATIME = c::ST_NODIRATIME as u64; /// `ST_NOEXEC` - #[cfg(any(target_os = "android", target_os = "emscripten", target_os = "fuchsia", target_os = "linux"))] + #[cfg(any(linux_kernel, target_os = "emscripten", target_os = "fuchsia"))] const NOEXEC = c::ST_NOEXEC as u64; /// `ST_NOSUID` + #[cfg(not(target_os = "espidf"))] const NOSUID = c::ST_NOSUID as u64; /// `ST_RDONLY` + #[cfg(not(target_os = "espidf"))] const RDONLY = c::ST_RDONLY as u64; /// `ST_RELATIME` @@ -813,7 +866,7 @@ const RELATIME = c::ST_RELATIME as u64; /// `ST_SYNCHRONOUS` - #[cfg(any(target_os = "android", target_os = "emscripten", target_os = "fuchsia", target_os = "linux"))] + #[cfg(any(linux_kernel, target_os = "emscripten", target_os = "fuchsia"))] const SYNCHRONOUS = c::ST_SYNCHRONOUS as u64; } } @@ -822,22 +875,22 @@ /// /// [`flock`]: crate::fs::flock /// [`fcntl_lock`]: crate::fs::fcntl_lock -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] #[derive(Clone, Copy, Debug, PartialEq, Eq)] -#[repr(i32)] +#[repr(u32)] pub enum FlockOperation { /// `LOCK_SH` - LockShared = c::LOCK_SH, + LockShared = bitcast!(c::LOCK_SH), /// `LOCK_EX` - LockExclusive = c::LOCK_EX, + LockExclusive = bitcast!(c::LOCK_EX), /// `LOCK_UN` - Unlock = c::LOCK_UN, + Unlock = bitcast!(c::LOCK_UN), /// `LOCK_SH | LOCK_NB` - NonBlockingLockShared = c::LOCK_SH | c::LOCK_NB, + NonBlockingLockShared = bitcast!(c::LOCK_SH | c::LOCK_NB), /// `LOCK_EX | LOCK_NB` - NonBlockingLockExclusive = c::LOCK_EX | c::LOCK_NB, + NonBlockingLockExclusive = bitcast!(c::LOCK_EX | c::LOCK_NB), /// `LOCK_UN | LOCK_NB` - NonBlockingUnlock = c::LOCK_UN | c::LOCK_NB, + NonBlockingUnlock = bitcast!(c::LOCK_UN | c::LOCK_NB), } /// `struct stat` for use with [`statat`] and [`fstat`]. @@ -895,8 +948,10 @@ #[cfg(not(any( linux_like, solarish, + target_os = "espidf", target_os = "haiku", target_os = "netbsd", + target_os = "nto", target_os = "redox", target_os = "wasi", )))] @@ -1034,10 +1089,16 @@ pub type FsWord = u64; /// `__fsword_t` -// s390x uses `u32` for `statfs` entries, even though `__fsword_t` is `u64`. -#[cfg(all(target_os = "linux", target_arch = "s390x"))] +// s390x uses `u32` for `statfs` entries on glibc, even though `__fsword_t` is +// `u64`. +#[cfg(all(target_os = "linux", target_arch = "s390x", target_env = "gnu"))] pub type FsWord = u32; +/// `__fsword_t` +// s390x uses `u64` for `statfs` entries on musl. +#[cfg(all(target_os = "linux", target_arch = "s390x", target_env = "musl"))] +pub type FsWord = u64; + /// `copyfile_state_t`—State for use with [`fcopyfile`]. /// /// [`fcopyfile`]: crate::fs::fcopyfile @@ -1046,104 +1107,3 @@ #[repr(transparent)] #[derive(Copy, Clone)] pub struct copyfile_state_t(pub(crate) *mut c::c_void); - -#[cfg(linux_kernel)] -bitflags! { - /// `MS_*` constants for use with [`mount`]. - /// - /// [`mount`]: crate::fs::mount - pub struct MountFlags: c::c_ulong { - /// `MS_BIND` - const BIND = c::MS_BIND; - - /// `MS_DIRSYNC` - const DIRSYNC = c::MS_DIRSYNC; - - /// `MS_LAZYTIME` - const LAZYTIME = c::MS_LAZYTIME; - - /// `MS_MANDLOCK` - #[doc(alias = "MANDLOCK")] - const PERMIT_MANDATORY_FILE_LOCKING = c::MS_MANDLOCK; - - /// `MS_NOATIME` - const NOATIME = c::MS_NOATIME; - - /// `MS_NODEV` - const NODEV = c::MS_NODEV; - - /// `MS_NODIRATIME` - const NODIRATIME = c::MS_NODIRATIME; - - /// `MS_NOEXEC` - const NOEXEC = c::MS_NOEXEC; - - /// `MS_NOSUID` - const NOSUID = c::MS_NOSUID; - - /// `MS_RDONLY` - const RDONLY = c::MS_RDONLY; - - /// `MS_REC` - const REC = c::MS_REC; - - /// `MS_RELATIME` - const RELATIME = c::MS_RELATIME; - - /// `MS_SILENT` - const SILENT = c::MS_SILENT; - - /// `MS_STRICTATIME` - const STRICTATIME = c::MS_STRICTATIME; - - /// `MS_SYNCHRONOUS` - const SYNCHRONOUS = c::MS_SYNCHRONOUS; - } -} - -#[cfg(linux_kernel)] -bitflags! { - /// `MS_*` constants for use with [`change_mount`]. - /// - /// [`change_mount`]: crate::fs::mount::change_mount - pub struct MountPropagationFlags: c::c_ulong { - /// `MS_SHARED` - const SHARED = c::MS_SHARED; - /// `MS_PRIVATE` - const PRIVATE = c::MS_PRIVATE; - /// `MS_SLAVE` - const SLAVE = c::MS_SLAVE; - /// `MS_UNBINDABLE` - const UNBINDABLE = c::MS_UNBINDABLE; - /// `MS_REC` - const REC = c::MS_REC; - } -} - -#[cfg(linux_kernel)] -bitflags! { - pub(crate) struct InternalMountFlags: c::c_ulong { - const REMOUNT = c::MS_REMOUNT; - const MOVE = c::MS_MOVE; - } -} - -#[cfg(linux_kernel)] -pub(crate) struct MountFlagsArg(pub(crate) c::c_ulong); - -#[cfg(linux_kernel)] -bitflags! { - /// `MNT_*` constants for use with [`unmount`]. - /// - /// [`unmount`]: crate::fs::mount::unmount - pub struct UnmountFlags: c::c_int { - /// `MNT_FORCE` - const FORCE = c::MNT_FORCE; - /// `MNT_DETACH` - const DETACH = c::MNT_DETACH; - /// `MNT_EXPIRE` - const EXPIRE = c::MNT_EXPIRE; - /// `UMOUNT_NOFOLLOW` - const NOFOLLOW = c::UMOUNT_NOFOLLOW; - } -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/io/epoll.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/io/epoll.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/io/epoll.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/io/epoll.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,366 +0,0 @@ -//! epoll support. -//! -//! This is an experiment, and it isn't yet clear whether epoll is the right -//! level of abstraction at which to introduce safety. But it works fairly well -//! in simple examples 🙂. -//! -//! # Examples -//! -//! ```no_run -//! # #![cfg_attr(io_lifetimes_use_std, feature(io_safety))] -//! # #[cfg(feature = "net")] -//! # fn main() -> std::io::Result<()> { -//! use io_lifetimes::AsFd; -//! use rustix::io::{epoll, ioctl_fionbio, read, write}; -//! use rustix::net::{ -//! accept, bind_v4, listen, socket, AddressFamily, Ipv4Addr, Protocol, SocketAddrV4, -//! SocketType, -//! }; -//! use std::collections::HashMap; -//! use std::os::unix::io::AsRawFd; -//! -//! // Create a socket and listen on it. -//! let listen_sock = socket(AddressFamily::INET, SocketType::STREAM, Protocol::default())?; -//! bind_v4(&listen_sock, &SocketAddrV4::new(Ipv4Addr::LOCALHOST, 0))?; -//! listen(&listen_sock, 1)?; -//! -//! // Create an epoll object. Using `Owning` here means the epoll object will -//! // take ownership of the file descriptors registered with it. -//! let epoll = epoll::epoll_create(epoll::CreateFlags::CLOEXEC)?; -//! -//! // Register the socket with the epoll object. -//! epoll::epoll_add(&epoll, &listen_sock, 1, epoll::EventFlags::IN)?; -//! -//! // Keep track of the sockets we've opened. -//! let mut next_id = 2; -//! let mut sockets = HashMap::new(); -//! -//! // Process events. -//! let mut event_list = epoll::EventVec::with_capacity(4); -//! loop { -//! epoll::epoll_wait(&epoll, &mut event_list, -1)?; -//! for (_event_flags, target) in &event_list { -//! if target == 1 { -//! // Accept a new connection, set it to non-blocking, and -//! // register to be notified when it's ready to write to. -//! let conn_sock = accept(&listen_sock)?; -//! ioctl_fionbio(&conn_sock, true)?; -//! epoll::epoll_add( -//! &epoll, -//! &conn_sock, -//! next_id, -//! epoll::EventFlags::OUT | epoll::EventFlags::ET, -//! )?; -//! -//! // Keep track of the socket. -//! sockets.insert(next_id, conn_sock); -//! next_id += 1; -//! } else { -//! // Write a message to the stream and then unregister it. -//! let target = sockets.remove(&target).unwrap(); -//! write(&target, b"hello\n")?; -//! let _ = epoll::epoll_del(&epoll, &target)?; -//! } -//! } -//! } -//! # } -//! # #[cfg(not(feature = "net"))] -//! # fn main() {} -//! ``` - -use super::super::c; -use super::super::conv::{ret, ret_owned_fd, ret_u32}; -use crate::fd::{AsFd, AsRawFd, OwnedFd}; -use crate::io; -use alloc::vec::Vec; -use bitflags::bitflags; -use core::convert::TryInto; -use core::ptr::null_mut; - -bitflags! { - /// `EPOLL_*` for use with [`Epoll::new`]. - pub struct CreateFlags: c::c_int { - /// `EPOLL_CLOEXEC` - const CLOEXEC = c::EPOLL_CLOEXEC; - } -} - -bitflags! { - /// `EPOLL*` for use with [`Epoll::add`]. - #[derive(Default)] - pub struct EventFlags: u32 { - /// `EPOLLIN` - const IN = c::EPOLLIN as u32; - - /// `EPOLLOUT` - const OUT = c::EPOLLOUT as u32; - - /// `EPOLLPRI` - const PRI = c::EPOLLPRI as u32; - - /// `EPOLLERR` - const ERR = c::EPOLLERR as u32; - - /// `EPOLLHUP` - const HUP = c::EPOLLHUP as u32; - - /// `EPOLLRDNORM` - const RDNORM = c::EPOLLRDNORM as u32; - - /// `EPOLLRDBAND` - const RDBAND = c::EPOLLRDBAND as u32; - - /// `EPOLLWRNORM` - const WRNORM = c::EPOLLWRNORM as u32; - - /// `EPOLLWRBAND` - const WRBAND = c::EPOLLWRBAND as u32; - - /// `EPOLLMSG` - const MSG = c::EPOLLMSG as u32; - - /// `EPOLLRDHUP` - const RDHUP = c::EPOLLRDHUP as u32; - - /// `EPOLLET` - const ET = c::EPOLLET as u32; - - /// `EPOLLONESHOT` - const ONESHOT = c::EPOLLONESHOT as u32; - - /// `EPOLLWAKEUP` - const WAKEUP = c::EPOLLWAKEUP as u32; - - /// `EPOLLEXCLUSIVE` - #[cfg(not(target_os = "android"))] - const EXCLUSIVE = c::EPOLLEXCLUSIVE as u32; - } -} - -/// `epoll_create1(flags)`—Creates a new `Epoll`. -/// -/// Use the [`CreateFlags::CLOEXEC`] flag to prevent the resulting file -/// descriptor from being implicitly passed across `exec` boundaries. -#[inline] -#[doc(alias = "epoll_create1")] -pub fn epoll_create(flags: CreateFlags) -> io::Result { - // SAFETY: We're calling `epoll_create1` via FFI and we know how it - // behaves. - unsafe { ret_owned_fd(c::epoll_create1(flags.bits())) } -} - -/// `epoll_ctl(self, EPOLL_CTL_ADD, data, event)`—Adds an element to an -/// `Epoll`. -/// -/// If `epoll_del` is not called on the I/O source passed into this function -/// before the I/O source is `close`d, then the `epoll` will act as if the I/O -/// source is still registered with it. This can lead to spurious events being -/// returned from `epoll_wait`. If a file descriptor is an -/// `Arc`, then `epoll` can be thought to maintain a -/// `Weak` to the file descriptor. -#[doc(alias = "epoll_ctl")] -pub fn epoll_add( - epoll: impl AsFd, - source: impl AsFd, - data: u64, - event_flags: EventFlags, -) -> io::Result<()> { - // SAFETY: We're calling `epoll_ctl` via FFI and we know how it - // behaves. - unsafe { - let raw_fd = source.as_fd().as_raw_fd(); - ret(c::epoll_ctl( - epoll.as_fd().as_raw_fd(), - c::EPOLL_CTL_ADD, - raw_fd, - &mut c::epoll_event { - events: event_flags.bits(), - r#u64: data, - }, - )) - } -} - -/// `epoll_ctl(self, EPOLL_CTL_MOD, target, event)`—Modifies an element in -/// this `Epoll`. -/// -/// This sets the events of interest with `target` to `events`. -#[doc(alias = "epoll_ctl")] -pub fn epoll_mod( - epoll: impl AsFd, - source: impl AsFd, - data: u64, - event_flags: EventFlags, -) -> io::Result<()> { - let raw_fd = source.as_fd().as_raw_fd(); - - // SAFETY: We're calling `epoll_ctl` via FFI and we know how it - // behaves. - unsafe { - ret(c::epoll_ctl( - epoll.as_fd().as_raw_fd(), - c::EPOLL_CTL_MOD, - raw_fd, - &mut c::epoll_event { - events: event_flags.bits(), - r#u64: data, - }, - )) - } -} - -/// `epoll_ctl(self, EPOLL_CTL_DEL, target, NULL)`—Removes an element in -/// this `Epoll`. -#[doc(alias = "epoll_ctl")] -pub fn epoll_del(epoll: impl AsFd, source: impl AsFd) -> io::Result<()> { - // SAFETY: We're calling `epoll_ctl` via FFI and we know how it - // behaves. - unsafe { - let raw_fd = source.as_fd().as_raw_fd(); - ret(c::epoll_ctl( - epoll.as_fd().as_raw_fd(), - c::EPOLL_CTL_DEL, - raw_fd, - null_mut(), - )) - } -} - -/// `epoll_wait(self, events, timeout)`—Waits for registered events of -/// interest. -/// -/// For each event of interest, an element is written to `events`. On -/// success, this returns the number of written elements. -pub fn epoll_wait( - epoll: impl AsFd, - event_list: &mut EventVec, - timeout: c::c_int, -) -> io::Result<()> { - // SAFETY: We're calling `epoll_wait` via FFI and we know how it - // behaves. - unsafe { - event_list.events.set_len(0); - let nfds = ret_u32(c::epoll_wait( - epoll.as_fd().as_raw_fd(), - event_list.events.as_mut_ptr().cast::(), - event_list.events.capacity().try_into().unwrap_or(i32::MAX), - timeout, - ))?; - event_list.events.set_len(nfds as usize); - } - - Ok(()) -} - -/// An iterator over the `Event`s in an `EventVec`. -pub struct Iter<'a> { - iter: core::slice::Iter<'a, Event>, -} - -impl<'a> Iterator for Iter<'a> { - type Item = (EventFlags, u64); - - fn next(&mut self) -> Option { - // SAFETY: `self.context` is guaranteed to be valid because we hold - // `'context` for it. And we know this event is associated with this - // context because `wait` sets both. - self.iter - .next() - .map(|event| (event.event_flags, event.data)) - } -} - -/// A record of an event that occurred. -#[repr(C)] -#[cfg_attr( - any( - all( - target_arch = "x86", - not(target_env = "musl"), - not(target_os = "android"), - ), - target_arch = "x86_64", - ), - repr(packed) -)] -struct Event { - // Match the layout of `c::epoll_event`. We just use a `u64` instead of - // the full union. - event_flags: EventFlags, - data: u64, -} - -/// A vector of `Event`s, plus context for interpreting them. -pub struct EventVec { - events: Vec, -} - -impl EventVec { - /// Constructs an `EventVec` with memory for `capacity` `Event`s. - #[inline] - pub fn with_capacity(capacity: usize) -> Self { - Self { - events: Vec::with_capacity(capacity), - } - } - - /// Returns the current `Event` capacity of this `EventVec`. - #[inline] - pub fn capacity(&self) -> usize { - self.events.capacity() - } - - /// Reserves enough memory for at least `additional` more `Event`s. - #[inline] - pub fn reserve(&mut self, additional: usize) { - self.events.reserve(additional); - } - - /// Reserves enough memory for exactly `additional` more `Event`s. - #[inline] - pub fn reserve_exact(&mut self, additional: usize) { - self.events.reserve_exact(additional); - } - - /// Clears all the `Events` out of this `EventVec`. - #[inline] - pub fn clear(&mut self) { - self.events.clear(); - } - - /// Shrinks the capacity of this `EventVec` as much as possible. - #[inline] - pub fn shrink_to_fit(&mut self) { - self.events.shrink_to_fit(); - } - - /// Returns an iterator over the `Event`s in this `EventVec`. - #[inline] - pub fn iter(&self) -> Iter<'_> { - Iter { - iter: self.events.iter(), - } - } - - /// Returns the number of `Event`s logically contained in this `EventVec`. - #[inline] - pub fn len(&mut self) -> usize { - self.events.len() - } - - /// Tests whether this `EventVec` is logically empty. - #[inline] - pub fn is_empty(&mut self) -> bool { - self.events.is_empty() - } -} - -impl<'a> IntoIterator for &'a EventVec { - type IntoIter = Iter<'a>; - type Item = (EventFlags, u64); - - #[inline] - fn into_iter(self) -> Self::IntoIter { - self.iter() - } -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/io/errno.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/io/errno.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/io/errno.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/io/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,7 +3,7 @@ //! This type holds an OS error code, which conceptually corresponds to an //! `errno` value. -use super::super::c; +use crate::backend::c; use libc_errno::errno; /// The error type for `rustix` APIs. @@ -28,15 +28,19 @@ bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const ADV: Self = Self(c::EADV); /// `EAFNOSUPPORT` + #[cfg(not(target_os = "l4re"))] pub const AFNOSUPPORT: Self = Self(c::EAFNOSUPPORT); /// `EAGAIN` pub const AGAIN: Self = Self(c::EAGAIN); /// `EALREADY` + #[cfg(not(target_os = "l4re"))] pub const ALREADY: Self = Self(c::EALREADY); /// `EAUTH` #[cfg(bsd)] @@ -46,7 +50,9 @@ bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const BADE: Self = Self(c::EBADE); @@ -57,19 +63,23 @@ bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const BADFD: Self = Self(c::EBADFD); /// `EBADMSG` - #[cfg(not(windows))] + #[cfg(not(any(windows, target_os = "l4re")))] pub const BADMSG: Self = Self(c::EBADMSG); /// `EBADR` #[cfg(not(any( bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const BADR: Self = Self(c::EBADR); @@ -81,7 +91,9 @@ bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const BADRQC: Self = Self(c::EBADRQC); @@ -90,7 +102,9 @@ bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const BADSLT: Self = Self(c::EBADSLT); @@ -99,7 +113,9 @@ bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const BFONT: Self = Self(c::EBFONT); @@ -107,6 +123,7 @@ #[cfg(not(windows))] pub const BUSY: Self = Self(c::EBUSY); /// `ECANCELED` + #[cfg(not(target_os = "l4re"))] pub const CANCELED: Self = Self(c::ECANCELED); /// `ECAPMODE` #[cfg(target_os = "freebsd")] @@ -115,14 +132,23 @@ #[cfg(not(windows))] pub const CHILD: Self = Self(c::ECHILD); /// `ECHRNG` - #[cfg(not(any(bsd, windows, target_os = "haiku", target_os = "wasi")))] + #[cfg(not(any( + bsd, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "l4re", + target_os = "wasi" + )))] pub const CHRNG: Self = Self(c::ECHRNG); /// `ECOMM` #[cfg(not(any( bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const COMM: Self = Self(c::ECOMM); @@ -141,11 +167,13 @@ windows, target_os = "aix", target_os = "android", + target_os = "espidf", target_os = "haiku", target_os = "wasi", )))] pub const DEADLOCK: Self = Self(c::EDEADLOCK); /// `EDESTADDRREQ` + #[cfg(not(target_os = "l4re"))] pub const DESTADDRREQ: Self = Self(c::EDESTADDRREQ); /// `EDISCON` #[cfg(windows)] @@ -162,7 +190,10 @@ solarish, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", + target_os = "nto", target_os = "wasi", )))] pub const DOTDOT: Self = Self(c::EDOTDOT); @@ -180,7 +211,7 @@ #[cfg(any(bsd, target_env = "newlib"))] pub const FTYPE: Self = Self(c::EFTYPE); /// `EHOSTDOWN` - #[cfg(not(target_os = "wasi"))] + #[cfg(not(any(target_os = "l4re", target_os = "wasi")))] pub const HOSTDOWN: Self = Self(c::EHOSTDOWN); /// `EHOSTUNREACH` pub const HOSTUNREACH: Self = Self(c::EHOSTUNREACH); @@ -191,18 +222,22 @@ windows, target_os = "aix", target_os = "android", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", + target_os = "nto", target_os = "redox", target_os = "wasi", )))] pub const HWPOISON: Self = Self(c::EHWPOISON); /// `EIDRM` - #[cfg(not(windows))] + #[cfg(not(any(windows, target_os = "l4re")))] pub const IDRM: Self = Self(c::EIDRM); /// `EILSEQ` - #[cfg(not(windows))] + #[cfg(not(any(windows, target_os = "l4re")))] pub const ILSEQ: Self = Self(c::EILSEQ); /// `EINPROGRESS` + #[cfg(not(target_os = "l4re"))] pub const INPROGRESS: Self = Self(c::EINPROGRESS); /// `EINTR` /// @@ -223,6 +258,7 @@ #[cfg(not(windows))] pub const IO: Self = Self(c::EIO); /// `EISCONN` + #[cfg(not(target_os = "l4re"))] pub const ISCONN: Self = Self(c::EISCONN); /// `EISDIR` #[cfg(not(windows))] @@ -233,7 +269,10 @@ solarish, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", + target_os = "nto", target_os = "wasi", )))] pub const ISNAM: Self = Self(c::EISNAM); @@ -243,7 +282,10 @@ solarish, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", + target_os = "nto", target_os = "wasi", )))] pub const KEYEXPIRED: Self = Self(c::EKEYEXPIRED); @@ -253,7 +295,10 @@ solarish, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", + target_os = "nto", target_os = "wasi", )))] pub const KEYREJECTED: Self = Self(c::EKEYREJECTED); @@ -263,28 +308,61 @@ solarish, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", + target_os = "nto", target_os = "wasi", )))] pub const KEYREVOKED: Self = Self(c::EKEYREVOKED); /// `EL2HLT` - #[cfg(not(any(bsd, windows, target_os = "haiku", target_os = "wasi")))] + #[cfg(not(any( + bsd, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "l4re", + target_os = "wasi" + )))] pub const L2HLT: Self = Self(c::EL2HLT); /// `EL2NSYNC` - #[cfg(not(any(bsd, windows, target_os = "haiku", target_os = "wasi")))] + #[cfg(not(any( + bsd, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "l4re", + target_os = "wasi" + )))] pub const L2NSYNC: Self = Self(c::EL2NSYNC); /// `EL3HLT` - #[cfg(not(any(bsd, windows, target_os = "haiku", target_os = "wasi")))] + #[cfg(not(any( + bsd, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "l4re", + target_os = "wasi" + )))] pub const L3HLT: Self = Self(c::EL3HLT); /// `EL3RST` - #[cfg(not(any(bsd, windows, target_os = "haiku", target_os = "wasi")))] + #[cfg(not(any( + bsd, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "l4re", + target_os = "wasi" + )))] pub const L3RST: Self = Self(c::EL3RST); /// `ELIBACC` #[cfg(not(any( bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const LIBACC: Self = Self(c::ELIBACC); @@ -293,7 +371,9 @@ bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const LIBBAD: Self = Self(c::ELIBBAD); @@ -302,7 +382,9 @@ bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const LIBEXEC: Self = Self(c::ELIBEXEC); @@ -311,7 +393,9 @@ bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const LIBMAX: Self = Self(c::ELIBMAX); @@ -320,12 +404,21 @@ bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const LIBSCN: Self = Self(c::ELIBSCN); /// `ELNRNG` - #[cfg(not(any(bsd, windows, target_os = "haiku", target_os = "wasi")))] + #[cfg(not(any( + bsd, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "l4re", + target_os = "wasi" + )))] pub const LNRNG: Self = Self(c::ELNRNG); /// `ELOOP` pub const LOOP: Self = Self(c::ELOOP); @@ -335,7 +428,10 @@ solarish, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", + target_os = "nto", target_os = "wasi", )))] pub const MEDIUMTYPE: Self = Self(c::EMEDIUMTYPE); @@ -345,9 +441,10 @@ #[cfg(not(windows))] pub const MLINK: Self = Self(c::EMLINK); /// `EMSGSIZE` + #[cfg(not(target_os = "l4re"))] pub const MSGSIZE: Self = Self(c::EMSGSIZE); /// `EMULTIHOP` - #[cfg(not(any(windows, target_os = "openbsd")))] + #[cfg(not(any(windows, target_os = "l4re", target_os = "openbsd")))] pub const MULTIHOP: Self = Self(c::EMULTIHOP); /// `ENAMETOOLONG` pub const NAMETOOLONG: Self = Self(c::ENAMETOOLONG); @@ -357,7 +454,10 @@ solarish, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", + target_os = "nto", target_os = "wasi", )))] pub const NAVAIL: Self = Self(c::ENAVAIL); @@ -367,6 +467,7 @@ /// `ENETDOWN` pub const NETDOWN: Self = Self(c::ENETDOWN); /// `ENETRESET` + #[cfg(not(target_os = "l4re"))] pub const NETRESET: Self = Self(c::ENETRESET); /// `ENETUNREACH` pub const NETUNREACH: Self = Self(c::ENETUNREACH); @@ -378,7 +479,9 @@ bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const NOANO: Self = Self(c::ENOANO); @@ -386,9 +489,17 @@ #[cfg(any(bsd, target_os = "haiku"))] pub const NOATTR: Self = Self(c::ENOATTR); /// `ENOBUFS` + #[cfg(not(target_os = "l4re"))] pub const NOBUFS: Self = Self(c::ENOBUFS); /// `ENOCSI` - #[cfg(not(any(bsd, windows, target_os = "haiku", target_os = "wasi")))] + #[cfg(not(any( + bsd, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "l4re", + target_os = "wasi" + )))] pub const NOCSI: Self = Self(c::ENOCSI); /// `ENODATA` #[cfg(not(any( @@ -414,15 +525,18 @@ bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", + target_os = "nto", target_os = "wasi", )))] pub const NOKEY: Self = Self(c::ENOKEY); /// `ENOLCK` - #[cfg(not(windows))] + #[cfg(not(any(windows, target_os = "l4re")))] pub const NOLCK: Self = Self(c::ENOLCK); /// `ENOLINK` - #[cfg(not(any(windows, target_os = "openbsd")))] + #[cfg(not(any(windows, target_os = "l4re", target_os = "openbsd")))] pub const NOLINK: Self = Self(c::ENOLINK); /// `ENOMEDIUM` #[cfg(not(any( @@ -430,7 +544,10 @@ solarish, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", + target_os = "nto", target_os = "wasi", )))] pub const NOMEDIUM: Self = Self(c::ENOMEDIUM); @@ -441,14 +558,16 @@ #[cfg(windows)] pub const NOMORE: Self = Self(c::ENOMORE); /// `ENOMSG` - #[cfg(not(windows))] + #[cfg(not(any(windows, target_os = "l4re")))] pub const NOMSG: Self = Self(c::ENOMSG); /// `ENONET` #[cfg(not(any( bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const NONET: Self = Self(c::ENONET); @@ -457,11 +576,14 @@ bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const NOPKG: Self = Self(c::ENOPKG); /// `ENOPROTOOPT` + #[cfg(not(target_os = "l4re"))] pub const NOPROTOOPT: Self = Self(c::ENOPROTOOPT); /// `ENOSPC` #[cfg(not(windows))] @@ -471,6 +593,7 @@ freebsdlike, windows, target_os = "haiku", + target_os = "l4re", target_os = "openbsd", target_os = "wasi", )))] @@ -480,6 +603,7 @@ freebsdlike, windows, target_os = "haiku", + target_os = "l4re", target_os = "openbsd", target_os = "wasi", )))] @@ -488,7 +612,7 @@ #[cfg(not(windows))] pub const NOSYS: Self = Self(c::ENOSYS); /// `ENOTBLK` - #[cfg(not(any(windows, target_os = "haiku", target_os = "wasi")))] + #[cfg(not(any(windows, target_os = "espidf", target_os = "haiku", target_os = "wasi")))] pub const NOTBLK: Self = Self(c::ENOTBLK); /// `ENOTCAPABLE` #[cfg(any(target_os = "freebsd", target_os = "wasi"))] @@ -506,14 +630,24 @@ solarish, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", + target_os = "nto", target_os = "wasi", )))] pub const NOTNAM: Self = Self(c::ENOTNAM); /// `ENOTRECOVERABLE` - #[cfg(not(any(freebsdlike, netbsdlike, windows, target_os = "haiku")))] + #[cfg(not(any( + freebsdlike, + netbsdlike, + windows, + target_os = "haiku", + target_os = "l4re" + )))] pub const NOTRECOVERABLE: Self = Self(c::ENOTRECOVERABLE); /// `ENOTSOCK` + #[cfg(not(target_os = "l4re"))] pub const NOTSOCK: Self = Self(c::ENOTSOCK); /// `ENOTSUP` #[cfg(not(any(windows, target_os = "haiku", target_os = "redox")))] @@ -526,7 +660,9 @@ bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const NOTUNIQ: Self = Self(c::ENOTUNIQ); @@ -536,16 +672,22 @@ /// `EOPNOTSUPP` pub const OPNOTSUPP: Self = Self(c::EOPNOTSUPP); /// `EOVERFLOW` - #[cfg(not(windows))] + #[cfg(not(any(windows, target_os = "l4re")))] pub const OVERFLOW: Self = Self(c::EOVERFLOW); /// `EOWNERDEAD` - #[cfg(not(any(freebsdlike, netbsdlike, windows, target_os = "haiku")))] + #[cfg(not(any( + freebsdlike, + netbsdlike, + windows, + target_os = "haiku", + target_os = "l4re" + )))] pub const OWNERDEAD: Self = Self(c::EOWNERDEAD); /// `EPERM` #[cfg(not(windows))] pub const PERM: Self = Self(c::EPERM); /// `EPFNOSUPPORT` - #[cfg(not(target_os = "wasi"))] + #[cfg(not(any(target_os = "l4re", target_os = "wasi")))] pub const PFNOSUPPORT: Self = Self(c::EPFNOSUPPORT); /// `EPIPE` #[cfg(not(windows))] @@ -563,11 +705,13 @@ #[cfg(bsd)] pub const PROGUNAVAIL: Self = Self(c::EPROGUNAVAIL); /// `EPROTO` - #[cfg(not(windows))] + #[cfg(not(any(windows, target_os = "l4re")))] pub const PROTO: Self = Self(c::EPROTO); /// `EPROTONOSUPPORT` + #[cfg(not(target_os = "l4re"))] pub const PROTONOSUPPORT: Self = Self(c::EPROTONOSUPPORT); /// `EPROTOTYPE` + #[cfg(not(target_os = "l4re"))] pub const PROTOTYPE: Self = Self(c::EPROTOTYPE); /// `EPROVIDERFAILEDINIT` #[cfg(windows)] @@ -583,12 +727,19 @@ bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const REMCHG: Self = Self(c::EREMCHG); /// `EREMOTE` - #[cfg(not(any(target_os = "haiku", target_os = "wasi")))] + #[cfg(not(any( + target_os = "espidf", + target_os = "haiku", + target_os = "l4re", + target_os = "wasi" + )))] pub const REMOTE: Self = Self(c::EREMOTE); /// `EREMOTEIO` #[cfg(not(any( @@ -596,12 +747,22 @@ solarish, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", + target_os = "nto", target_os = "wasi", )))] pub const REMOTEIO: Self = Self(c::EREMOTEIO); /// `ERESTART` - #[cfg(not(any(bsd, windows, target_os = "haiku", target_os = "wasi")))] + #[cfg(not(any( + bsd, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "l4re", + target_os = "wasi" + )))] pub const RESTART: Self = Self(c::ERESTART); /// `ERFKILL` #[cfg(not(any( @@ -610,7 +771,10 @@ windows, target_os = "aix", target_os = "android", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", + target_os = "nto", target_os = "redox", target_os = "wasi", )))] @@ -622,10 +786,15 @@ #[cfg(bsd)] pub const RPCMISMATCH: Self = Self(c::ERPCMISMATCH); /// `ESHUTDOWN` - #[cfg(not(target_os = "wasi"))] + #[cfg(not(any(target_os = "espidf", target_os = "l4re", target_os = "wasi")))] pub const SHUTDOWN: Self = Self(c::ESHUTDOWN); /// `ESOCKTNOSUPPORT` - #[cfg(not(any(target_os = "haiku", target_os = "wasi")))] + #[cfg(not(any( + target_os = "espidf", + target_os = "haiku", + target_os = "l4re", + target_os = "wasi" + )))] pub const SOCKTNOSUPPORT: Self = Self(c::ESOCKTNOSUPPORT); /// `ESPIPE` #[cfg(not(windows))] @@ -638,7 +807,9 @@ bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const SRMNT: Self = Self(c::ESRMNT); @@ -649,12 +820,20 @@ bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const STRPIPE: Self = Self(c::ESTRPIPE); /// `ETIME` - #[cfg(not(any(freebsdlike, windows, target_os = "openbsd", target_os = "wasi")))] + #[cfg(not(any( + freebsdlike, + windows, + target_os = "l4re", + target_os = "openbsd", + target_os = "wasi" + )))] pub const TIME: Self = Self(c::ETIME); /// `ETIMEDOUT` pub const TIMEDOUT: Self = Self(c::ETIMEDOUT); @@ -663,7 +842,7 @@ #[doc(alias = "2BIG")] pub const TOOBIG: Self = Self(c::E2BIG); /// `ETOOMANYREFS` - #[cfg(not(any(target_os = "haiku", target_os = "wasi")))] + #[cfg(not(any(target_os = "haiku", target_os = "l4re", target_os = "wasi")))] pub const TOOMANYREFS: Self = Self(c::ETOOMANYREFS); /// `ETXTBSY` #[cfg(not(windows))] @@ -674,15 +853,30 @@ solarish, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", + target_os = "nto", target_os = "wasi", )))] pub const UCLEAN: Self = Self(c::EUCLEAN); /// `EUNATCH` - #[cfg(not(any(bsd, windows, target_os = "haiku", target_os = "wasi")))] + #[cfg(not(any( + bsd, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "l4re", + target_os = "wasi" + )))] pub const UNATCH: Self = Self(c::EUNATCH); /// `EUSERS` - #[cfg(not(any(target_os = "haiku", target_os = "wasi")))] + #[cfg(not(any( + target_os = "espidf", + target_os = "haiku", + target_os = "l4re", + target_os = "wasi" + )))] pub const USERS: Self = Self(c::EUSERS); /// `EWOULDBLOCK` pub const WOULDBLOCK: Self = Self(c::EWOULDBLOCK); @@ -694,7 +888,9 @@ bsd, windows, target_os = "aix", + target_os = "espidf", target_os = "haiku", + target_os = "l4re", target_os = "wasi", )))] pub const XFULL: Self = Self(c::EXFULL); diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/io/io_slice.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/io/io_slice.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/io/io_slice.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/io/io_slice.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,87 +0,0 @@ -//! The following is derived from Rust's -//! library/std/src/sys/unix/io.rs -//! dca3f1b786efd27be3b325ed1e01e247aa589c3b. - -#![allow(missing_docs)] - -use super::super::c; -use core::marker::PhantomData; -use core::slice; - -#[derive(Copy, Clone)] -#[repr(transparent)] -pub struct IoSlice<'a> { - vec: c::iovec, - _p: PhantomData<&'a [u8]>, -} - -impl<'a> IoSlice<'a> { - #[inline] - pub fn new(buf: &'a [u8]) -> IoSlice<'a> { - IoSlice { - vec: c::iovec { - iov_base: buf.as_ptr() as *mut u8 as *mut c::c_void, - iov_len: buf.len(), - }, - _p: PhantomData, - } - } - - #[inline] - pub fn advance(&mut self, n: usize) { - if self.vec.iov_len < n { - panic!("advancing IoSlice beyond its length"); - } - - unsafe { - self.vec.iov_len -= n; - self.vec.iov_base = self.vec.iov_base.add(n); - } - } - - #[inline] - pub fn as_slice(&self) -> &[u8] { - unsafe { slice::from_raw_parts(self.vec.iov_base as *mut u8, self.vec.iov_len) } - } -} - -#[repr(transparent)] -pub struct IoSliceMut<'a> { - vec: c::iovec, - _p: PhantomData<&'a mut [u8]>, -} - -impl<'a> IoSliceMut<'a> { - #[inline] - pub fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> { - IoSliceMut { - vec: c::iovec { - iov_base: buf.as_mut_ptr() as *mut c::c_void, - iov_len: buf.len(), - }, - _p: PhantomData, - } - } - - #[inline] - pub fn advance(&mut self, n: usize) { - if self.vec.iov_len < n { - panic!("advancing IoSliceMut beyond its length"); - } - - unsafe { - self.vec.iov_len -= n; - self.vec.iov_base = self.vec.iov_base.add(n); - } - } - - #[inline] - pub fn as_slice(&self) -> &[u8] { - unsafe { slice::from_raw_parts(self.vec.iov_base as *mut u8, self.vec.iov_len) } - } - - #[inline] - pub fn as_mut_slice(&mut self) -> &mut [u8] { - unsafe { slice::from_raw_parts_mut(self.vec.iov_base as *mut u8, self.vec.iov_len) } - } -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/io/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/io/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/io/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/io/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,13 +1,6 @@ pub(crate) mod errno; #[cfg(not(windows))] -#[cfg(not(feature = "std"))] -pub(crate) mod io_slice; -pub(crate) mod poll_fd; -#[cfg(not(windows))] pub(crate) mod types; #[cfg_attr(windows, path = "windows_syscalls.rs")] pub(crate) mod syscalls; - -#[cfg(linux_kernel)] -pub mod epoll; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/io/poll_fd.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/io/poll_fd.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/io/poll_fd.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/io/poll_fd.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,134 +0,0 @@ -use super::super::c; -use super::super::conv::borrowed_fd; -#[cfg(windows)] -use super::super::fd::RawFd; -use super::super::fd::{AsFd, AsRawFd, BorrowedFd, LibcFd}; -use bitflags::bitflags; -use core::marker::PhantomData; -#[cfg(windows)] -use std::fmt; - -bitflags! { - /// `POLL*` flags for use with [`poll`]. - /// - /// [`poll`]: crate::io::poll - pub struct PollFlags: c::c_short { - /// `POLLIN` - const IN = c::POLLIN; - /// `POLLPRI` - #[cfg(not(target_os = "wasi"))] - const PRI = c::POLLPRI; - /// `POLLOUT` - const OUT = c::POLLOUT; - /// `POLLRDNORM` - const RDNORM = c::POLLRDNORM; - /// `POLLWRNORM` - const WRNORM = c::POLLWRNORM; - /// `POLLRDBAND` - #[cfg(not(target_os = "wasi"))] - const RDBAND = c::POLLRDBAND; - /// `POLLWRBAND` - #[cfg(not(target_os = "wasi"))] - const WRBAND = c::POLLWRBAND; - /// `POLLERR` - const ERR = c::POLLERR; - /// `POLLHUP` - const HUP = c::POLLHUP; - /// `POLLNVAL` - const NVAL = c::POLLNVAL; - /// `POLLRDHUP` - #[cfg(all( - linux_kernel, - not(any(target_arch = "sparc", target_arch = "sparc64"))), - )] - const RDHUP = c::POLLRDHUP; - } -} - -/// `struct pollfd`—File descriptor and flags for use with [`poll`]. -/// -/// [`poll`]: crate::io::poll -#[doc(alias = "pollfd")] -#[derive(Clone)] -#[cfg_attr(not(windows), derive(Debug))] -#[repr(transparent)] -pub struct PollFd<'fd> { - pollfd: c::pollfd, - _phantom: PhantomData>, -} - -#[cfg(windows)] -impl<'fd> fmt::Debug for PollFd<'fd> { - fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { - fmt.debug_struct("pollfd") - .field("fd", &self.pollfd.fd) - .field("events", &self.pollfd.events) - .field("revents", &self.pollfd.revents) - .finish() - } -} - -impl<'fd> PollFd<'fd> { - /// Constructs a new `PollFd` holding `fd` and `events`. - #[inline] - pub fn new(fd: &'fd Fd, events: PollFlags) -> Self { - Self::from_borrowed_fd(fd.as_fd(), events) - } - - /// Sets the contained file descriptor to `fd`. - #[inline] - pub fn set_fd(&mut self, fd: &'fd Fd) { - self.pollfd.fd = fd.as_fd().as_raw_fd() as LibcFd; - } - - /// Clears the ready events. - #[inline] - pub fn clear_revents(&mut self) { - self.pollfd.revents = 0; - } - - /// Constructs a new `PollFd` holding `fd` and `events`. - /// - /// This is the same as `new`, but can be used to avoid borrowing the - /// `BorrowedFd`, which can be tricky in situations where the `BorrowedFd` - /// is a temporary. - #[inline] - pub fn from_borrowed_fd(fd: BorrowedFd<'fd>, events: PollFlags) -> Self { - Self { - pollfd: c::pollfd { - fd: borrowed_fd(fd), - events: events.bits(), - revents: 0, - }, - _phantom: PhantomData, - } - } - - /// Returns the ready events. - #[inline] - pub fn revents(&self) -> PollFlags { - // Use `unwrap()` here because in theory we know we know all the bits - // the OS might set here, but OS's have added extensions in the past. - PollFlags::from_bits(self.pollfd.revents).unwrap() - } -} - -#[cfg(not(windows))] -impl<'fd> AsFd for PollFd<'fd> { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - // SAFETY: Our constructors and `set_fd` require `pollfd.fd` to be - // valid for the `fd lifetime. - unsafe { BorrowedFd::borrow_raw(self.pollfd.fd) } - } -} - -#[cfg(windows)] -impl<'fd> io_lifetimes::AsSocket for PollFd<'fd> { - #[inline] - fn as_socket(&self) -> BorrowedFd<'_> { - // SAFETY: Our constructors and `set_fd` require `pollfd.fd` to be - // valid for the `fd lifetime. - unsafe { BorrowedFd::borrow_raw(self.pollfd.fd as RawFd) } - } -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/io/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/io/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/io/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/io/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,40 +1,28 @@ //! libc syscalls supporting `rustix::io`. -use super::super::c; -#[cfg(any( - target_os = "android", - all(target_os = "linux", not(target_env = "gnu")), -))] -use super::super::conv::syscall_ret_usize; -use super::super::conv::{borrowed_fd, ret, ret_c_int, ret_discarded_fd, ret_owned_fd, ret_usize}; -use super::super::offset::{libc_pread, libc_pwrite}; -#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "solaris")))] -use super::super::offset::{libc_preadv, libc_pwritev}; -#[cfg(all(target_os = "linux", target_env = "gnu"))] -use super::super::offset::{libc_preadv2, libc_pwritev2}; +use crate::backend::c; +#[cfg(not(target_os = "wasi"))] +use crate::backend::conv::ret_discarded_fd; +use crate::backend::conv::{borrowed_fd, ret, ret_c_int, ret_owned_fd, ret_usize}; use crate::fd::{AsFd, BorrowedFd, OwnedFd, RawFd}; -#[cfg(not(any(target_os = "aix", target_os = "wasi")))] +#[cfg(not(any( + target_os = "aix", + target_os = "espidf", + target_os = "nto", + target_os = "wasi" +)))] use crate::io::DupFlags; -#[cfg(any(linux_kernel, target_os = "freebsd", target_os = "illumos"))] -use crate::io::EventfdFlags; -#[cfg(not(any(apple, target_os = "aix", target_os = "haiku", target_os = "wasi")))] -use crate::io::PipeFlags; -use crate::io::{self, FdFlags, IoSlice, IoSliceMut, PollFd}; +#[cfg(linux_kernel)] +use crate::io::ReadWriteFlags; +use crate::io::{self, FdFlags}; use core::cmp::min; -use core::convert::TryInto; -use core::mem::MaybeUninit; #[cfg(all(feature = "fs", feature = "net"))] use libc_errno::errno; -#[cfg(linux_kernel)] +#[cfg(not(target_os = "espidf"))] use { - super::super::conv::syscall_ret_owned_fd, - crate::io::{IoSliceRaw, ReadWriteFlags, SpliceFlags}, - crate::utils::optional_as_mut_ptr, + crate::backend::MAX_IOV, + crate::io::{IoSlice, IoSliceMut}, }; -#[cfg(bsd)] -use {crate::io::kqueue::Event, crate::utils::as_ptr, core::ptr::null}; -#[cfg(solarish)] -use {crate::io::port::Event, crate::utils::as_mut_ptr, core::ptr::null_mut}; pub(crate) fn read(fd: BorrowedFd<'_>, buf: &mut [u8]) -> io::Result { unsafe { @@ -62,8 +50,12 @@ // Silently cast; we'll get `EINVAL` if the value is negative. let offset = offset as i64; + // ESP-IDF doesn't support 64-bit offsets. + #[cfg(target_os = "espidf")] + let offset: i32 = offset.try_into().map_err(|_| io::Errno::OVERFLOW)?; + unsafe { - ret_usize(libc_pread( + ret_usize(c::pread( borrowed_fd(fd), buf.as_mut_ptr().cast(), len, @@ -78,37 +70,42 @@ // Silently cast; we'll get `EINVAL` if the value is negative. let offset = offset as i64; - unsafe { - ret_usize(libc_pwrite( - borrowed_fd(fd), - buf.as_ptr().cast(), - len, - offset, - )) - } + // ESP-IDF doesn't support 64-bit offsets. + #[cfg(target_os = "espidf")] + let offset: i32 = offset.try_into().map_err(|_| io::Errno::OVERFLOW)?; + + unsafe { ret_usize(c::pwrite(borrowed_fd(fd), buf.as_ptr().cast(), len, offset)) } } +#[cfg(not(target_os = "espidf"))] pub(crate) fn readv(fd: BorrowedFd<'_>, bufs: &mut [IoSliceMut]) -> io::Result { unsafe { ret_usize(c::readv( borrowed_fd(fd), bufs.as_ptr().cast::(), - min(bufs.len(), max_iov()) as c::c_int, + min(bufs.len(), MAX_IOV) as c::c_int, )) } } +#[cfg(not(target_os = "espidf"))] pub(crate) fn writev(fd: BorrowedFd<'_>, bufs: &[IoSlice]) -> io::Result { unsafe { ret_usize(c::writev( borrowed_fd(fd), bufs.as_ptr().cast::(), - min(bufs.len(), max_iov()) as c::c_int, + min(bufs.len(), MAX_IOV) as c::c_int, )) } } -#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "solaris")))] +#[cfg(not(any( + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + target_os = "redox", + target_os = "solaris" +)))] pub(crate) fn preadv( fd: BorrowedFd<'_>, bufs: &mut [IoSliceMut], @@ -117,56 +114,36 @@ // Silently cast; we'll get `EINVAL` if the value is negative. let offset = offset as i64; unsafe { - ret_usize(libc_preadv( + ret_usize(c::preadv( borrowed_fd(fd), bufs.as_ptr().cast::(), - min(bufs.len(), max_iov()) as c::c_int, + min(bufs.len(), MAX_IOV) as c::c_int, offset, )) } } -#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "solaris")))] +#[cfg(not(any( + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + target_os = "redox", + target_os = "solaris" +)))] pub(crate) fn pwritev(fd: BorrowedFd<'_>, bufs: &[IoSlice], offset: u64) -> io::Result { // Silently cast; we'll get `EINVAL` if the value is negative. let offset = offset as i64; unsafe { - ret_usize(libc_pwritev( + ret_usize(c::pwritev( borrowed_fd(fd), bufs.as_ptr().cast::(), - min(bufs.len(), max_iov()) as c::c_int, + min(bufs.len(), MAX_IOV) as c::c_int, offset, )) } } -#[cfg(all(target_os = "linux", target_env = "gnu"))] -pub(crate) fn preadv2( - fd: BorrowedFd<'_>, - bufs: &mut [IoSliceMut], - offset: u64, - flags: ReadWriteFlags, -) -> io::Result { - // Silently cast; we'll get `EINVAL` if the value is negative. - let offset = offset as i64; - unsafe { - ret_usize(libc_preadv2( - borrowed_fd(fd), - bufs.as_ptr().cast::(), - min(bufs.len(), max_iov()) as c::c_int, - offset, - flags.bits(), - )) - } -} - -/// At present, `libc` only has `preadv2` defined for glibc. On other -/// ABIs, use `c::syscall`. -#[cfg(any( - target_os = "android", - all(target_os = "linux", not(target_env = "gnu")), -))] -#[inline] +#[cfg(linux_kernel)] pub(crate) fn preadv2( fd: BorrowedFd<'_>, bufs: &mut [IoSliceMut], @@ -176,44 +153,17 @@ // Silently cast; we'll get `EINVAL` if the value is negative. let offset = offset as i64; unsafe { - syscall_ret_usize(c::syscall( - c::SYS_preadv2, - borrowed_fd(fd), - bufs.as_ptr().cast::(), - min(bufs.len(), max_iov()) as c::c_int, - offset, - flags.bits(), - )) - } -} - -#[cfg(all(target_os = "linux", target_env = "gnu"))] -pub(crate) fn pwritev2( - fd: BorrowedFd<'_>, - bufs: &[IoSlice], - offset: u64, - flags: ReadWriteFlags, -) -> io::Result { - // Silently cast; we'll get `EINVAL` if the value is negative. - let offset = offset as i64; - unsafe { - ret_usize(libc_pwritev2( + ret_usize(c::preadv2( borrowed_fd(fd), bufs.as_ptr().cast::(), - min(bufs.len(), max_iov()) as c::c_int, + min(bufs.len(), MAX_IOV) as c::c_int, offset, - flags.bits(), + bitflags_bits!(flags), )) } } -/// At present, `libc` only has `pwritev2` defined for glibc. On other -/// ABIs, use `c::syscall`. -#[cfg(any( - target_os = "android", - all(target_os = "linux", not(target_env = "gnu")), -))] -#[inline] +#[cfg(linux_kernel)] pub(crate) fn pwritev2( fd: BorrowedFd<'_>, bufs: &[IoSlice], @@ -223,13 +173,12 @@ // Silently cast; we'll get `EINVAL` if the value is negative. let offset = offset as i64; unsafe { - syscall_ret_usize(c::syscall( - c::SYS_pwritev2, + ret_usize(c::pwritev2( borrowed_fd(fd), bufs.as_ptr().cast::(), - min(bufs.len(), max_iov()) as c::c_int, + min(bufs.len(), MAX_IOV) as c::c_int, offset, - flags.bits(), + bitflags_bits!(flags), )) } } @@ -250,82 +199,14 @@ #[cfg(not(target_os = "macos"))] const READ_LIMIT: usize = c::ssize_t::MAX as usize; -#[cfg(bsd)] -const fn max_iov() -> usize { - c::IOV_MAX as usize -} - -#[cfg(any(linux_kernel, target_os = "emscripten", target_os = "nto"))] -const fn max_iov() -> usize { - c::UIO_MAXIOV as usize -} - -#[cfg(not(any( - bsd, - linux_kernel, - target_os = "emscripten", - target_os = "nto", - target_os = "horizon", -)))] -const fn max_iov() -> usize { - 16 // The minimum value required by POSIX. -} - pub(crate) unsafe fn close(raw_fd: RawFd) { let _ = c::close(raw_fd as c::c_int); } -#[cfg(linux_kernel)] -pub(crate) fn eventfd(initval: u32, flags: EventfdFlags) -> io::Result { - unsafe { syscall_ret_owned_fd(c::syscall(c::SYS_eventfd2, initval, flags.bits())) } -} - -#[cfg(any(target_os = "freebsd", target_os = "illumos"))] -pub(crate) fn eventfd(initval: u32, flags: EventfdFlags) -> io::Result { - // `eventfd` was added in FreeBSD 13, so it isn't available on FreeBSD 12. - #[cfg(target_os = "freebsd")] - unsafe { - weakcall! { - fn eventfd( - initval: c::c_uint, - flags: c::c_int - ) -> c::c_int - } - ret_owned_fd(eventfd(initval, flags.bits())) - } - - #[cfg(target_os = "illumos")] - unsafe { - ret_owned_fd(c::eventfd(initval, flags.bits())) - } -} - -#[cfg(linux_kernel)] -#[inline] -pub(crate) fn ioctl_blksszget(fd: BorrowedFd) -> io::Result { - let mut result = MaybeUninit::::uninit(); - unsafe { - ret(c::ioctl(borrowed_fd(fd), c::BLKSSZGET, result.as_mut_ptr()))?; - Ok(result.assume_init() as u32) - } -} - -#[cfg(linux_kernel)] -#[inline] -pub(crate) fn ioctl_blkpbszget(fd: BorrowedFd) -> io::Result { - let mut result = MaybeUninit::::uninit(); - unsafe { - ret(c::ioctl( - borrowed_fd(fd), - c::BLKPBSZGET, - result.as_mut_ptr(), - ))?; - Ok(result.assume_init() as u32) - } -} - -#[cfg(not(target_os = "redox"))] +#[cfg(not(target_os = "espidf"))] pub(crate) fn ioctl_fionread(fd: BorrowedFd<'_>) -> io::Result { + use core::mem::MaybeUninit; + let mut nread = MaybeUninit::::uninit(); unsafe { ret(c::ioctl(borrowed_fd(fd), c::FIONREAD, nread.as_mut_ptr()))?; @@ -343,34 +224,11 @@ } } -// Sparc lacks `FICLONE`. -#[cfg(all(linux_kernel, not(any(target_arch = "sparc", target_arch = "sparc64"))))] -pub(crate) fn ioctl_ficlone(fd: BorrowedFd<'_>, src_fd: BorrowedFd<'_>) -> io::Result<()> { - unsafe { - ret(c::ioctl( - borrowed_fd(fd), - c::FICLONE as _, - borrowed_fd(src_fd), - )) - } -} - -#[cfg(linux_kernel)] -#[inline] -pub(crate) fn ext4_ioc_resize_fs(fd: BorrowedFd<'_>, blocks: u64) -> io::Result<()> { - // TODO: Fix linux-raw-sys to define ioctl codes for sparc. - #[cfg(any(target_arch = "sparc", target_arch = "sparc64"))] - const EXT4_IOC_RESIZE_FS: u32 = 0x8008_6610; - - #[cfg(not(any(target_arch = "sparc", target_arch = "sparc64")))] - use linux_raw_sys::ioctl::EXT4_IOC_RESIZE_FS; - - unsafe { ret(c::ioctl(borrowed_fd(fd), EXT4_IOC_RESIZE_FS as _, &blocks)) } -} - #[cfg(not(any(target_os = "redox", target_os = "wasi")))] #[cfg(all(feature = "fs", feature = "net"))] pub(crate) fn is_read_write(fd: BorrowedFd<'_>) -> io::Result<(bool, bool)> { + use core::mem::MaybeUninit; + let (mut read, mut write) = crate::fs::fd::_is_file_read_write(fd)?; let mut not_socket = false; if read { @@ -405,8 +263,7 @@ if unsafe { c::send(borrowed_fd(fd), [].as_ptr(), 0, c::MSG_DONTWAIT) } == -1 { #[allow(unreachable_patterns)] // `EAGAIN` may equal `EWOULDBLOCK` match errno().0 { - c::EAGAIN | c::EWOULDBLOCK => (), - c::ENOTSOCK => (), + c::EAGAIN | c::EWOULDBLOCK | c::ENOTSOCK => (), c::EPIPE => write = false, err => return Err(io::Errno(err)), } @@ -422,18 +279,24 @@ } pub(crate) fn fcntl_getfd(fd: BorrowedFd<'_>) -> io::Result { - unsafe { ret_c_int(c::fcntl(borrowed_fd(fd), c::F_GETFD)).map(FdFlags::from_bits_truncate) } + let flags = unsafe { ret_c_int(c::fcntl(borrowed_fd(fd), c::F_GETFD))? }; + Ok(FdFlags::from_bits_retain(bitcast!(flags))) } pub(crate) fn fcntl_setfd(fd: BorrowedFd<'_>, flags: FdFlags) -> io::Result<()> { unsafe { ret(c::fcntl(borrowed_fd(fd), c::F_SETFD, flags.bits())) } } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] pub(crate) fn fcntl_dupfd_cloexec(fd: BorrowedFd<'_>, min: RawFd) -> io::Result { unsafe { ret_owned_fd(c::fcntl(borrowed_fd(fd), c::F_DUPFD_CLOEXEC, min)) } } +#[cfg(target_os = "espidf")] +pub(crate) fn fcntl_dupfd(fd: BorrowedFd<'_>, min: RawFd) -> io::Result { + unsafe { ret_owned_fd(c::fcntl(borrowed_fd(fd), c::F_DUPFD, min)) } +} + #[cfg(not(target_os = "wasi"))] pub(crate) fn dup(fd: BorrowedFd<'_>) -> io::Result { unsafe { ret_owned_fd(c::dup(borrowed_fd(fd))) } @@ -449,7 +312,9 @@ target_os = "aix", target_os = "android", target_os = "dragonfly", + target_os = "espidf", target_os = "haiku", + target_os = "nto", target_os = "redox", target_os = "wasi", )))] @@ -458,7 +323,7 @@ ret_discarded_fd(c::dup3( borrowed_fd(fd), borrowed_fd(new.as_fd()), - flags.bits(), + bitflags_bits!(flags), )) } } @@ -488,194 +353,3 @@ )) } } - -#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "wasi")))] -pub(crate) fn ioctl_tiocexcl(fd: BorrowedFd) -> io::Result<()> { - unsafe { ret(c::ioctl(borrowed_fd(fd), c::TIOCEXCL as _)) } -} - -#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "wasi")))] -pub(crate) fn ioctl_tiocnxcl(fd: BorrowedFd) -> io::Result<()> { - unsafe { ret(c::ioctl(borrowed_fd(fd), c::TIOCNXCL as _)) } -} - -#[cfg(bsd)] -pub(crate) fn kqueue() -> io::Result { - unsafe { ret_owned_fd(c::kqueue()) } -} - -#[cfg(bsd)] -pub(crate) unsafe fn kevent( - kq: BorrowedFd<'_>, - changelist: &[Event], - eventlist: &mut [MaybeUninit], - timeout: Option<&c::timespec>, -) -> io::Result { - ret_c_int(c::kevent( - borrowed_fd(kq), - changelist.as_ptr().cast(), - changelist - .len() - .try_into() - .map_err(|_| io::Errno::OVERFLOW)?, - eventlist.as_mut_ptr().cast(), - eventlist - .len() - .try_into() - .map_err(|_| io::Errno::OVERFLOW)?, - timeout.map_or(null(), as_ptr), - )) -} - -#[cfg(not(target_os = "wasi"))] -pub(crate) fn pipe() -> io::Result<(OwnedFd, OwnedFd)> { - unsafe { - let mut result = MaybeUninit::<[OwnedFd; 2]>::uninit(); - ret(c::pipe(result.as_mut_ptr().cast::()))?; - let [p0, p1] = result.assume_init(); - Ok((p0, p1)) - } -} - -#[cfg(not(any(apple, target_os = "aix", target_os = "haiku", target_os = "wasi")))] -pub(crate) fn pipe_with(flags: PipeFlags) -> io::Result<(OwnedFd, OwnedFd)> { - unsafe { - let mut result = MaybeUninit::<[OwnedFd; 2]>::uninit(); - ret(c::pipe2(result.as_mut_ptr().cast::(), flags.bits()))?; - let [p0, p1] = result.assume_init(); - Ok((p0, p1)) - } -} - -#[inline] -pub(crate) fn poll(fds: &mut [PollFd<'_>], timeout: c::c_int) -> io::Result { - let nfds = fds - .len() - .try_into() - .map_err(|_convert_err| io::Errno::INVAL)?; - - ret_c_int(unsafe { c::poll(fds.as_mut_ptr().cast(), nfds, timeout) }) - .map(|nready| nready as usize) -} - -#[cfg(linux_kernel)] -#[inline] -pub fn splice( - fd_in: BorrowedFd, - off_in: Option<&mut u64>, - fd_out: BorrowedFd, - off_out: Option<&mut u64>, - len: usize, - flags: SpliceFlags, -) -> io::Result { - let off_in = optional_as_mut_ptr(off_in).cast(); - let off_out = optional_as_mut_ptr(off_out).cast(); - - unsafe { - ret_usize(c::splice( - borrowed_fd(fd_in), - off_in, - borrowed_fd(fd_out), - off_out, - len, - flags.bits(), - )) - } -} - -#[cfg(linux_kernel)] -#[inline] -pub unsafe fn vmsplice( - fd: BorrowedFd, - bufs: &[IoSliceRaw], - flags: SpliceFlags, -) -> io::Result { - ret_usize(c::vmsplice( - borrowed_fd(fd), - bufs.as_ptr().cast::(), - min(bufs.len(), max_iov()), - flags.bits(), - )) -} - -#[cfg(solarish)] -pub(crate) fn port_create() -> io::Result { - unsafe { ret_owned_fd(c::port_create()) } -} - -#[cfg(solarish)] -pub(crate) unsafe fn port_associate( - port: BorrowedFd<'_>, - source: c::c_int, - object: c::uintptr_t, - events: c::c_int, - user: *mut c::c_void, -) -> io::Result<()> { - ret(c::port_associate( - borrowed_fd(port), - source, - object, - events, - user, - )) -} - -#[cfg(solarish)] -pub(crate) unsafe fn port_dissociate( - port: BorrowedFd<'_>, - source: c::c_int, - object: c::uintptr_t, -) -> io::Result<()> { - ret(c::port_dissociate(borrowed_fd(port), source, object)) -} - -#[cfg(solarish)] -pub(crate) fn port_get( - port: BorrowedFd<'_>, - timeout: Option<&mut c::timespec>, -) -> io::Result { - let mut event = MaybeUninit::::uninit(); - let timeout = timeout.map_or(null_mut(), as_mut_ptr); - - unsafe { - ret(c::port_get(borrowed_fd(port), event.as_mut_ptr(), timeout))?; - } - - // If we're done, initialize the event and return it. - Ok(Event(unsafe { event.assume_init() })) -} - -#[cfg(solarish)] -pub(crate) fn port_getn( - port: BorrowedFd<'_>, - timeout: Option<&mut c::timespec>, - events: &mut Vec, - mut nget: u32, -) -> io::Result<()> { - let timeout = timeout.map_or(null_mut(), as_mut_ptr); - unsafe { - ret(c::port_getn( - borrowed_fd(port), - events.as_mut_ptr().cast(), - events.len().try_into().unwrap(), - &mut nget, - timeout, - ))?; - } - - // Update the vector length. - unsafe { - events.set_len(nget.try_into().unwrap()); - } - - Ok(()) -} - -#[cfg(solarish)] -pub(crate) fn port_send( - port: BorrowedFd<'_>, - events: c::c_int, - userdata: *mut c::c_void, -) -> io::Result<()> { - unsafe { ret(c::port_send(borrowed_fd(port), events, userdata)) } -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/io/types.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/io/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/io/types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/io/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,16 +1,16 @@ -use super::super::c; +use crate::backend::c; use bitflags::bitflags; -#[cfg(linux_kernel)] -use core::marker::PhantomData; bitflags! { /// `FD_*` constants for use with [`fcntl_getfd`] and [`fcntl_setfd`]. /// /// [`fcntl_getfd`]: crate::io::fcntl_getfd /// [`fcntl_setfd`]: crate::io::fcntl_setfd - pub struct FdFlags: c::c_int { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct FdFlags: u32 { /// `FD_CLOEXEC` - const CLOEXEC = c::FD_CLOEXEC; + const CLOEXEC = bitcast!(c::FD_CLOEXEC); } } @@ -20,32 +20,19 @@ /// /// [`preadv2`]: crate::io::preadv2 /// [`pwritev2`]: crate::io::pwritev - pub struct ReadWriteFlags: c::c_int { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct ReadWriteFlags: u32 { /// `RWF_DSYNC` (since Linux 4.7) - const DSYNC = linux_raw_sys::general::RWF_DSYNC as c::c_int; + const DSYNC = linux_raw_sys::general::RWF_DSYNC; /// `RWF_HIPRI` (since Linux 4.6) - const HIPRI = linux_raw_sys::general::RWF_HIPRI as c::c_int; + const HIPRI = linux_raw_sys::general::RWF_HIPRI; /// `RWF_SYNC` (since Linux 4.7) - const SYNC = linux_raw_sys::general::RWF_SYNC as c::c_int; + const SYNC = linux_raw_sys::general::RWF_SYNC; /// `RWF_NOWAIT` (since Linux 4.14) - const NOWAIT = linux_raw_sys::general::RWF_NOWAIT as c::c_int; + const NOWAIT = linux_raw_sys::general::RWF_NOWAIT; /// `RWF_APPEND` (since Linux 4.16) - const APPEND = linux_raw_sys::general::RWF_APPEND as c::c_int; - } -} - -#[cfg(linux_kernel)] -bitflags! { - /// `SPLICE_F_*` constants for use with [`splice`] and [`vmsplice`]. - pub struct SpliceFlags: c::c_uint { - /// `SPLICE_F_MOVE` - const MOVE = c::SPLICE_F_MOVE; - /// `SPLICE_F_NONBLOCK` - const NONBLOCK = c::SPLICE_F_NONBLOCK; - /// `SPLICE_F_MORE` - const MORE = c::SPLICE_F_MORE; - /// `SPLICE_F_GIFT` - const GIFT = c::SPLICE_F_GIFT; + const APPEND = linux_raw_sys::general::RWF_APPEND; } } @@ -54,7 +41,9 @@ /// `O_*` constants for use with [`dup2`]. /// /// [`dup2`]: crate::io::dup2 - pub struct DupFlags: c::c_int { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct DupFlags: u32 { /// `O_CLOEXEC` #[cfg(not(any( apple, @@ -62,92 +51,6 @@ target_os = "android", target_os = "redox", )))] // Android 5.0 has dup3, but libc doesn't have bindings - const CLOEXEC = c::O_CLOEXEC; - } -} - -#[cfg(not(any(apple, target_os = "wasi")))] -bitflags! { - /// `O_*` constants for use with [`pipe_with`]. - /// - /// [`pipe_with`]: crate::io::pipe_with - pub struct PipeFlags: c::c_int { - /// `O_CLOEXEC` - const CLOEXEC = c::O_CLOEXEC; - /// `O_DIRECT` - #[cfg(not(any( - solarish, - target_os = "haiku", - target_os = "openbsd", - target_os = "redox", - )))] - const DIRECT = c::O_DIRECT; - /// `O_NONBLOCK` - const NONBLOCK = c::O_NONBLOCK; - } -} - -#[cfg(any(linux_kernel, target_os = "freebsd", target_os = "illumos"))] -bitflags! { - /// `EFD_*` flags for use with [`eventfd`]. - /// - /// [`eventfd`]: crate::io::eventfd - pub struct EventfdFlags: c::c_int { - /// `EFD_CLOEXEC` - const CLOEXEC = c::EFD_CLOEXEC; - /// `EFD_NONBLOCK` - const NONBLOCK = c::EFD_NONBLOCK; - /// `EFD_SEMAPHORE` - const SEMAPHORE = c::EFD_SEMAPHORE; - } -} - -/// `PIPE_BUF`—The maximum size of a write to a pipe guaranteed to be atomic. -#[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))] -pub const PIPE_BUF: usize = c::PIPE_BUF; - -#[cfg(not(any(windows, target_os = "redox")))] -pub(crate) const AT_FDCWD: c::c_int = c::AT_FDCWD; -#[cfg(not(windows))] -pub(crate) const STDIN_FILENO: c::c_int = c::STDIN_FILENO; -#[cfg(not(windows))] -pub(crate) const STDOUT_FILENO: c::c_int = c::STDOUT_FILENO; -#[cfg(not(windows))] -pub(crate) const STDERR_FILENO: c::c_int = c::STDERR_FILENO; - -/// A buffer type used with `vmsplice`. -/// It is guaranteed to be ABI compatible with the iovec type on Unix platforms -/// and `WSABUF` on Windows. Unlike `IoSlice` and `IoSliceMut` it is -/// semantically like a raw pointer, and therefore can be shared or mutated as -/// needed. -#[cfg(linux_kernel)] -#[repr(transparent)] -pub struct IoSliceRaw<'a> { - _buf: c::iovec, - _lifetime: PhantomData<&'a ()>, -} - -#[cfg(linux_kernel)] -impl<'a> IoSliceRaw<'a> { - /// Creates a new `IoSlice` wrapping a byte slice. - pub fn from_slice(buf: &'a [u8]) -> Self { - IoSliceRaw { - _buf: c::iovec { - iov_base: buf.as_ptr() as *mut u8 as *mut c::c_void, - iov_len: buf.len() as _, - }, - _lifetime: PhantomData, - } - } - - /// Creates a new `IoSlice` wrapping a mutable byte slice. - pub fn from_slice_mut(buf: &'a mut [u8]) -> Self { - IoSliceRaw { - _buf: c::iovec { - iov_base: buf.as_mut_ptr() as *mut c::c_void, - iov_len: buf.len() as _, - }, - _lifetime: PhantomData, - } + const CLOEXEC = bitcast!(c::O_CLOEXEC); } } diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/io/windows_syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/io/windows_syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/io/windows_syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/io/windows_syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,12 +1,10 @@ //! Windows system calls in the `io` module. -use super::super::c; -use super::super::conv::{borrowed_fd, ret, ret_c_int}; -use super::super::fd::LibcFd; +use crate::backend::c; +use crate::backend::conv::{borrowed_fd, ret}; +use crate::backend::fd::LibcFd; use crate::fd::{BorrowedFd, RawFd}; use crate::io; -use crate::io::PollFd; -use core::convert::TryInto; use core::mem::MaybeUninit; pub(crate) unsafe fn close(raw_fd: RawFd) { @@ -27,13 +25,3 @@ ret(c::ioctl(borrowed_fd(fd), c::FIONBIO, &mut data)) } } - -pub(crate) fn poll(fds: &mut [PollFd<'_>], timeout: c::c_int) -> io::Result { - let nfds = fds - .len() - .try_into() - .map_err(|_convert_err| io::Errno::INVAL)?; - - ret_c_int(unsafe { c::poll(fds.as_mut_ptr().cast(), nfds, timeout) }) - .map(|nready| nready as usize) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/io_lifetimes.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/io_lifetimes.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/io_lifetimes.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/io_lifetimes.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ -//! `io_lifetimes` types for Windows assuming that Fd is Socket. -//! -//! We can make this assumption since `rustix` supports only `rustix::net` on -//! Windows. - -pub use io_lifetimes::{BorrowedSocket as BorrowedFd, OwnedSocket as OwnedFd}; -#[cfg(feature = "std")] -pub use std::os::windows::io::RawSocket as RawFd; -pub(crate) use windows_sys::Win32::Networking::WinSock::SOCKET as LibcFd; - -// Re-export the `Socket` traits so that users can implement them. -pub use io_lifetimes::AsSocket; - -/// A version of [`AsRawFd`] for use with Winsock2 API. -/// -/// [`AsRawFd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.AsRawFd.html -pub trait AsRawFd { - /// A version of [`as_raw_fd`] for use with Winsock2 API. - /// - /// [`as_raw_fd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html#tymethod.as_raw_fd - fn as_raw_fd(&self) -> RawFd; -} -#[cfg(feature = "std")] -impl AsRawFd for T { - #[inline] - fn as_raw_fd(&self) -> RawFd { - self.as_raw_socket() - } -} - -/// A version of [`IntoRawFd`] for use with Winsock2 API. -/// -/// [`IntoRawFd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.IntoRawFd.html -pub trait IntoRawFd { - /// A version of [`into_raw_fd`] for use with Winsock2 API. - /// - /// [`into_raw_fd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html#tymethod.into_raw_fd - fn into_raw_fd(self) -> RawFd; -} -#[cfg(feature = "std")] -impl IntoRawFd for T { - #[inline] - fn into_raw_fd(self) -> RawFd { - self.into_raw_socket() - } -} - -/// A version of [`FromRawFd`] for use with Winsock2 API. -/// -/// [`FromRawFd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html -pub trait FromRawFd { - /// A version of [`from_raw_fd`] for use with Winsock2 API. - /// - /// # Safety - /// - /// See the [safety requirements] for [`from_raw_fd`]. - /// - /// [`from_raw_fd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html#tymethod.from_raw_fd - /// [safety requirements]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html#safety - unsafe fn from_raw_fd(raw_fd: RawFd) -> Self; -} -#[cfg(feature = "std")] -impl FromRawFd for T { - #[inline] - unsafe fn from_raw_fd(raw_fd: RawFd) -> Self { - Self::from_raw_socket(raw_fd) - } -} - -/// A version of [`AsFd`] for use with Winsock2 API. -/// -/// [`AsFd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.AsFd.html -pub trait AsFd { - /// An `as_fd` function for Winsock2, where a `Fd` is a `Socket`. - fn as_fd(&self) -> BorrowedFd; -} -impl AsFd for T { - #[inline] - fn as_fd(&self) -> BorrowedFd { - self.as_socket() - } -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/io_uring/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/io_uring/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/io_uring/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/io_uring/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,21 +1,20 @@ //! libc syscalls supporting `rustix::io_uring`. -use super::super::c; -use super::super::conv::{borrowed_fd, syscall_ret_owned_fd, syscall_ret_u32}; +use crate::backend::c; +use crate::backend::conv::{borrowed_fd, ret_owned_fd, ret_u32}; use crate::fd::{BorrowedFd, OwnedFd}; use crate::io; use crate::io_uring::{io_uring_params, IoringEnterFlags, IoringRegisterOp}; -use linux_raw_sys::general::{__NR_io_uring_enter, __NR_io_uring_register, __NR_io_uring_setup}; #[inline] pub(crate) fn io_uring_setup(entries: u32, params: &mut io_uring_params) -> io::Result { - unsafe { - syscall_ret_owned_fd(c::syscall( - __NR_io_uring_setup as _, - entries as usize, - params, - )) + syscall! { + fn io_uring_setup( + entries: u32, + params: *mut io_uring_params + ) via SYS_io_uring_setup -> c::c_int } + unsafe { ret_owned_fd(io_uring_setup(entries, params)) } } #[inline] @@ -25,12 +24,19 @@ arg: *const c::c_void, nr_args: u32, ) -> io::Result { - syscall_ret_u32(c::syscall( - __NR_io_uring_register as _, - borrowed_fd(fd), - opcode as u32 as usize, + syscall! { + fn io_uring_register( + fd: c::c_uint, + opcode: c::c_uint, + arg: *const c::c_void, + nr_args: c::c_uint + ) via SYS_io_uring_register -> c::c_int + } + ret_u32(io_uring_register( + borrowed_fd(fd) as _, + opcode as u32, arg, - nr_args as usize, + nr_args, )) } @@ -43,12 +49,21 @@ arg: *const c::c_void, size: usize, ) -> io::Result { - syscall_ret_u32(c::syscall( - __NR_io_uring_enter as _, - borrowed_fd(fd), - to_submit as usize, - min_complete as usize, - flags.bits() as usize, + syscall! { + fn io_uring_enter2( + fd: c::c_uint, + to_submit: c::c_uint, + min_complete: c::c_uint, + flags: c::c_uint, + arg: *const c::c_void, + size: usize + ) via SYS_io_uring_enter -> c::c_int + } + ret_u32(io_uring_enter2( + borrowed_fd(fd) as _, + to_submit, + min_complete, + bitflags_bits!(flags), arg, size, )) diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/mm/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/mm/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/mm/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/mm/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,5 @@ //! libc syscalls supporting `rustix::mm`. -use super::super::c; -#[cfg(linux_kernel)] -use super::super::conv::syscall_ret_owned_fd; -use super::super::conv::{borrowed_fd, no_fd, ret}; -use super::super::offset::libc_mmap; #[cfg(not(target_os = "redox"))] use super::types::Advice; #[cfg(any(target_os = "emscripten", target_os = "linux"))] @@ -12,6 +7,10 @@ use super::types::{MapFlags, MprotectFlags, MsyncFlags, ProtFlags}; #[cfg(linux_kernel)] use super::types::{MlockFlags, UserfaultfdFlags}; +use crate::backend::c; +#[cfg(linux_kernel)] +use crate::backend::conv::ret_owned_fd; +use crate::backend::conv::{borrowed_fd, no_fd, ret}; use crate::fd::BorrowedFd; #[cfg(linux_kernel)] use crate::fd::OwnedFd; @@ -52,7 +51,7 @@ } pub(crate) unsafe fn msync(addr: *mut c::c_void, len: usize, flags: MsyncFlags) -> io::Result<()> { - let err = c::msync(addr, len, flags.bits()); + let err = c::msync(addr, len, bitflags_bits!(flags)); // `msync` returns its error status rather than using `errno`. if err == 0 { @@ -74,11 +73,11 @@ fd: BorrowedFd<'_>, offset: u64, ) -> io::Result<*mut c::c_void> { - let res = libc_mmap( + let res = c::mmap( ptr, len, - prot.bits(), - flags.bits(), + bitflags_bits!(prot), + bitflags_bits!(flags), borrowed_fd(fd), offset as i64, ); @@ -99,11 +98,11 @@ prot: ProtFlags, flags: MapFlags, ) -> io::Result<*mut c::c_void> { - let res = libc_mmap( + let res = c::mmap( ptr, len, - prot.bits(), - flags.bits() | c::MAP_ANONYMOUS, + bitflags_bits!(prot), + bitflags_bits!(flags | MapFlags::from_bits_retain(bitcast!(c::MAP_ANONYMOUS))), no_fd(), 0, ); @@ -119,7 +118,7 @@ len: usize, flags: MprotectFlags, ) -> io::Result<()> { - ret(c::mprotect(ptr, len, flags.bits())) + ret(c::mprotect(ptr, len, bitflags_bits!(flags))) } pub(crate) unsafe fn munmap(ptr: *mut c::c_void, len: usize) -> io::Result<()> { @@ -137,7 +136,7 @@ new_size: usize, flags: MremapFlags, ) -> io::Result<*mut c::c_void> { - let res = c::mremap(old_address, old_size, new_size, flags.bits()); + let res = c::mremap(old_address, old_size, new_size, bitflags_bits!(flags)); if res == c::MAP_FAILED { Err(io::Errno::last_os_error()) } else { @@ -162,7 +161,7 @@ old_address, old_size, new_size, - flags.bits() | c::MAP_FIXED, + bitflags_bits!(flags | MremapFlags::from_bits_retain(bitcast!(c::MAP_FIXED))), new_address, ); if res == c::MAP_FAILED { @@ -200,7 +199,7 @@ ) via SYS_mlock2 -> c::c_int } - ret(mlock2(addr, length, flags.bits())) + ret(mlock2(addr, length, bitflags_bits!(flags))) } /// # Safety @@ -214,5 +213,10 @@ #[cfg(linux_kernel)] pub(crate) unsafe fn userfaultfd(flags: UserfaultfdFlags) -> io::Result { - syscall_ret_owned_fd(c::syscall(c::SYS_userfaultfd, flags.bits())) + syscall! { + fn userfaultfd( + flags: c::c_int + ) via SYS_userfaultfd -> c::c_int + } + ret_owned_fd(userfaultfd(bitflags_bits!(flags))) } diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/mm/types.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/mm/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/mm/types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/mm/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -use super::super::c; +use crate::backend::c; use bitflags::bitflags; bitflags! { @@ -7,13 +7,15 @@ /// For `PROT_NONE`, use `ProtFlags::empty()`. /// /// [`mmap`]: crate::io::mmap - pub struct ProtFlags: c::c_int { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct ProtFlags: u32 { /// `PROT_READ` - const READ = c::PROT_READ; + const READ = bitcast!(c::PROT_READ); /// `PROT_WRITE` - const WRITE = c::PROT_WRITE; + const WRITE = bitcast!(c::PROT_WRITE); /// `PROT_EXEC` - const EXEC = c::PROT_EXEC; + const EXEC = bitcast!(c::PROT_EXEC); } } @@ -23,19 +25,36 @@ /// For `PROT_NONE`, use `MprotectFlags::empty()`. /// /// [`mprotect`]: crate::io::mprotect - pub struct MprotectFlags: c::c_int { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct MprotectFlags: u32 { /// `PROT_READ` - const READ = c::PROT_READ; + const READ = bitcast!(c::PROT_READ); /// `PROT_WRITE` - const WRITE = c::PROT_WRITE; + const WRITE = bitcast!(c::PROT_WRITE); /// `PROT_EXEC` - const EXEC = c::PROT_EXEC; + const EXEC = bitcast!(c::PROT_EXEC); /// `PROT_GROWSUP` #[cfg(linux_kernel)] - const GROWSUP = c::PROT_GROWSUP; + const GROWSUP = bitcast!(c::PROT_GROWSUP); /// `PROT_GROWSDOWN` #[cfg(linux_kernel)] - const GROWSDOWN = c::PROT_GROWSDOWN; + const GROWSDOWN = bitcast!(c::PROT_GROWSDOWN); + /// `PROT_SEM` + #[cfg(linux_kernel)] + const SEM = linux_raw_sys::general::PROT_SEM; + /// `PROT_BTI` + #[cfg(all(linux_kernel, target_arch = "aarch64"))] + const BTI = linux_raw_sys::general::PROT_BTI; + /// `PROT_MTE` + #[cfg(all(linux_kernel, target_arch = "aarch64"))] + const MTE = linux_raw_sys::general::PROT_MTE; + /// `PROT_SAO` + #[cfg(all(linux_kernel, any(target_arch = "powerpc", target_arch = "powerpc64")))] + const SAO = linux_raw_sys::general::PROT_SAO; + /// `PROT_ADI` + #[cfg(all(linux_kernel, any(target_arch = "sparc", target_arch = "sparc64")))] + const ADI = linux_raw_sys::general::PROT_ADI; } } @@ -46,9 +65,11 @@ /// /// [`mmap`]: crate::io::mmap /// [`mmap_anonymous`]: crates::io::mmap_anonymous - pub struct MapFlags: c::c_int { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct MapFlags: u32 { /// `MAP_SHARED` - const SHARED = c::MAP_SHARED; + const SHARED = bitcast!(c::MAP_SHARED); /// `MAP_SHARED_VALIDATE` #[cfg(not(any( bsd, @@ -57,21 +78,23 @@ target_os = "emscripten", target_os = "fuchsia", target_os = "haiku", + target_os = "nto", target_os = "redox", )))] - const SHARED_VALIDATE = c::MAP_SHARED_VALIDATE; + const SHARED_VALIDATE = bitcast!(c::MAP_SHARED_VALIDATE); /// `MAP_PRIVATE` - const PRIVATE = c::MAP_PRIVATE; + const PRIVATE = bitcast!(c::MAP_PRIVATE); /// `MAP_DENYWRITE` #[cfg(not(any( bsd, solarish, target_os = "haiku", + target_os = "nto", target_os = "redox", )))] - const DENYWRITE = c::MAP_DENYWRITE; + const DENYWRITE = bitcast!(c::MAP_DENYWRITE); /// `MAP_FIXED` - const FIXED = c::MAP_FIXED; + const FIXED = bitcast!(c::MAP_FIXED); /// `MAP_FIXED_NOREPLACE` #[cfg(not(any( bsd, @@ -80,25 +103,28 @@ target_os = "emscripten", target_os = "fuchsia", target_os = "haiku", + target_os = "nto", target_os = "redox", )))] - const FIXED_NOREPLACE = c::MAP_FIXED_NOREPLACE; + const FIXED_NOREPLACE = bitcast!(c::MAP_FIXED_NOREPLACE); /// `MAP_GROWSDOWN` #[cfg(not(any( bsd, solarish, target_os = "haiku", + target_os = "nto", target_os = "redox", )))] - const GROWSDOWN = c::MAP_GROWSDOWN; + const GROWSDOWN = bitcast!(c::MAP_GROWSDOWN); /// `MAP_HUGETLB` #[cfg(not(any( bsd, solarish, target_os = "haiku", + target_os = "nto", target_os = "redox", )))] - const HUGETLB = c::MAP_HUGETLB; + const HUGETLB = bitcast!(c::MAP_HUGETLB); /// `MAP_HUGE_2MB` #[cfg(not(any( bsd, @@ -107,9 +133,10 @@ target_os = "emscripten", target_os = "fuchsia", target_os = "haiku", + target_os = "nto", target_os = "redox", )))] - const HUGE_2MB = c::MAP_HUGE_2MB; + const HUGE_2MB = bitcast!(c::MAP_HUGE_2MB); /// `MAP_HUGE_1GB` #[cfg(not(any( bsd, @@ -118,34 +145,37 @@ target_os = "emscripten", target_os = "fuchsia", target_os = "haiku", + target_os = "nto", target_os = "redox", )))] - const HUGE_1GB = c::MAP_HUGE_1GB; + const HUGE_1GB = bitcast!(c::MAP_HUGE_1GB); /// `MAP_LOCKED` #[cfg(not(any( bsd, solarish, target_os = "haiku", + target_os = "nto", target_os = "redox", )))] - const LOCKED = c::MAP_LOCKED; + const LOCKED = bitcast!(c::MAP_LOCKED); /// `MAP_NOCORE` #[cfg(freebsdlike)] - const NOCORE = c::MAP_NOCORE; + const NOCORE = bitcast!(c::MAP_NOCORE); /// `MAP_NORESERVE` - #[cfg(not(any(freebsdlike, target_os = "redox")))] - const NORESERVE = c::MAP_NORESERVE; + #[cfg(not(any(freebsdlike, target_os = "nto", target_os = "redox")))] + const NORESERVE = bitcast!(c::MAP_NORESERVE); /// `MAP_NOSYNC` #[cfg(freebsdlike)] - const NOSYNC = c::MAP_NOSYNC; + const NOSYNC = bitcast!(c::MAP_NOSYNC); /// `MAP_POPULATE` #[cfg(not(any( bsd, solarish, target_os = "haiku", + target_os = "nto", target_os = "redox", )))] - const POPULATE = c::MAP_POPULATE; + const POPULATE = bitcast!(c::MAP_POPULATE); /// `MAP_STACK` #[cfg(not(any( apple, @@ -155,10 +185,10 @@ target_os = "netbsd", target_os = "redox", )))] - const STACK = c::MAP_STACK; + const STACK = bitcast!(c::MAP_STACK); /// `MAP_PREFAULT_READ` #[cfg(target_os = "freebsd")] - const PREFAULT_READ = c::MAP_PREFAULT_READ; + const PREFAULT_READ = bitcast!(c::MAP_PREFAULT_READ); /// `MAP_SYNC` #[cfg(not(any( bsd, @@ -167,16 +197,17 @@ target_os = "emscripten", target_os = "fuchsia", target_os = "haiku", + target_os = "nto", target_os = "redox", all( linux_kernel, - any(target_arch = "mips", target_arch = "mips64"), + any(target_arch = "mips", target_arch = "mips32r6", target_arch = "mips64", target_arch = "mips64r6"), ) )))] - const SYNC = c::MAP_SYNC; + const SYNC = bitcast!(c::MAP_SYNC); /// `MAP_UNINITIALIZED` #[cfg(any())] - const UNINITIALIZED = c::MAP_UNINITIALIZED; + const UNINITIALIZED = bitcast!(c::MAP_UNINITIALIZED); } } @@ -188,9 +219,11 @@ /// /// [`mremap`]: crate::io::mremap /// [`mremap_fixed`]: crate::io::mremap_fixed - pub struct MremapFlags: i32 { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct MremapFlags: u32 { /// `MREMAP_MAYMOVE` - const MAYMOVE = c::MREMAP_MAYMOVE; + const MAYMOVE = bitcast!(c::MREMAP_MAYMOVE); } } @@ -198,16 +231,18 @@ /// `MS_*` flags for use with [`msync`]. /// /// [`msync`]: crate::io::msync - pub struct MsyncFlags: i32 { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct MsyncFlags: u32 { /// `MS_SYNC`—Requests an update and waits for it to complete. - const SYNC = c::MS_SYNC; + const SYNC = bitcast!(c::MS_SYNC); /// `MS_ASYNC`—Specifies that an update be scheduled, but the call /// returns immediately. - const ASYNC = c::MS_ASYNC; + const ASYNC = bitcast!(c::MS_ASYNC); /// `MS_INVALIDATE`—Asks to invalidate other mappings of the same /// file (so that they can be updated with the fresh values just /// written). - const INVALIDATE = c::MS_INVALIDATE; + const INVALIDATE = bitcast!(c::MS_INVALIDATE); } } @@ -216,9 +251,11 @@ /// `MLOCK_*` flags for use with [`mlock_with`]. /// /// [`mlock_with`]: crate::io::mlock_with - pub struct MlockFlags: i32 { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct MlockFlags: u32 { /// `MLOCK_ONFAULT` - const ONFAULT = c::MLOCK_ONFAULT as _; + const ONFAULT = bitcast!(c::MLOCK_ONFAULT); } } @@ -227,116 +264,124 @@ /// [`madvise`]: crate::mm::madvise #[cfg(not(target_os = "redox"))] #[derive(Debug, Copy, Clone, Eq, PartialEq)] -#[repr(i32)] +#[repr(u32)] #[non_exhaustive] pub enum Advice { /// `POSIX_MADV_NORMAL` #[cfg(not(any(target_os = "android", target_os = "haiku")))] - Normal = c::POSIX_MADV_NORMAL, + Normal = bitcast!(c::POSIX_MADV_NORMAL), /// `POSIX_MADV_NORMAL` #[cfg(any(target_os = "android", target_os = "haiku"))] - Normal = c::MADV_NORMAL, + Normal = bitcast!(c::MADV_NORMAL), /// `POSIX_MADV_SEQUENTIAL` #[cfg(not(any(target_os = "android", target_os = "haiku")))] - Sequential = c::POSIX_MADV_SEQUENTIAL, + Sequential = bitcast!(c::POSIX_MADV_SEQUENTIAL), /// `POSIX_MADV_SEQUENTIAL` #[cfg(any(target_os = "android", target_os = "haiku"))] - Sequential = c::MADV_SEQUENTIAL, + Sequential = bitcast!(c::MADV_SEQUENTIAL), /// `POSIX_MADV_RANDOM` #[cfg(not(any(target_os = "android", target_os = "haiku")))] - Random = c::POSIX_MADV_RANDOM, + Random = bitcast!(c::POSIX_MADV_RANDOM), /// `POSIX_MADV_RANDOM` #[cfg(any(target_os = "android", target_os = "haiku"))] - Random = c::MADV_RANDOM, + Random = bitcast!(c::MADV_RANDOM), /// `POSIX_MADV_WILLNEED` #[cfg(not(any(target_os = "android", target_os = "haiku")))] - WillNeed = c::POSIX_MADV_WILLNEED, + WillNeed = bitcast!(c::POSIX_MADV_WILLNEED), /// `POSIX_MADV_WILLNEED` #[cfg(any(target_os = "android", target_os = "haiku"))] - WillNeed = c::MADV_WILLNEED, + WillNeed = bitcast!(c::MADV_WILLNEED), /// `POSIX_MADV_DONTNEED` #[cfg(not(any(target_os = "android", target_os = "emscripten", target_os = "haiku")))] - DontNeed = c::POSIX_MADV_DONTNEED, + DontNeed = bitcast!(c::POSIX_MADV_DONTNEED), /// `POSIX_MADV_DONTNEED` #[cfg(any(target_os = "android", target_os = "haiku"))] - DontNeed = i32::MAX - 1, + DontNeed = bitcast!(i32::MAX - 1), /// `MADV_DONTNEED` // `MADV_DONTNEED` has the same value as `POSIX_MADV_DONTNEED`. We don't // have a separate `posix_madvise` from `madvise`, so we expose a special // value which we special-case. #[cfg(target_os = "linux")] - LinuxDontNeed = i32::MAX, + LinuxDontNeed = bitcast!(i32::MAX), /// `MADV_DONTNEED` #[cfg(target_os = "android")] - LinuxDontNeed = c::MADV_DONTNEED, + LinuxDontNeed = bitcast!(c::MADV_DONTNEED), /// `MADV_FREE` #[cfg(linux_kernel)] - LinuxFree = c::MADV_FREE, + LinuxFree = bitcast!(c::MADV_FREE), /// `MADV_REMOVE` #[cfg(linux_kernel)] - LinuxRemove = c::MADV_REMOVE, + LinuxRemove = bitcast!(c::MADV_REMOVE), /// `MADV_DONTFORK` #[cfg(linux_kernel)] - LinuxDontFork = c::MADV_DONTFORK, + LinuxDontFork = bitcast!(c::MADV_DONTFORK), /// `MADV_DOFORK` #[cfg(linux_kernel)] - LinuxDoFork = c::MADV_DOFORK, + LinuxDoFork = bitcast!(c::MADV_DOFORK), /// `MADV_HWPOISON` #[cfg(linux_kernel)] - LinuxHwPoison = c::MADV_HWPOISON, + LinuxHwPoison = bitcast!(c::MADV_HWPOISON), /// `MADV_SOFT_OFFLINE` - #[cfg(all(linux_kernel, not(any(target_arch = "mips", target_arch = "mips64"))))] - LinuxSoftOffline = c::MADV_SOFT_OFFLINE, + #[cfg(all( + linux_kernel, + not(any( + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6" + )) + ))] + LinuxSoftOffline = bitcast!(c::MADV_SOFT_OFFLINE), /// `MADV_MERGEABLE` #[cfg(linux_kernel)] - LinuxMergeable = c::MADV_MERGEABLE, + LinuxMergeable = bitcast!(c::MADV_MERGEABLE), /// `MADV_UNMERGEABLE` #[cfg(linux_kernel)] - LinuxUnmergeable = c::MADV_UNMERGEABLE, + LinuxUnmergeable = bitcast!(c::MADV_UNMERGEABLE), /// `MADV_HUGEPAGE` (since Linux 2.6.38) #[cfg(linux_kernel)] - LinuxHugepage = c::MADV_HUGEPAGE, + LinuxHugepage = bitcast!(c::MADV_HUGEPAGE), /// `MADV_NOHUGEPAGE` (since Linux 2.6.38) #[cfg(linux_kernel)] - LinuxNoHugepage = c::MADV_NOHUGEPAGE, + LinuxNoHugepage = bitcast!(c::MADV_NOHUGEPAGE), /// `MADV_DONTDUMP` (since Linux 3.4) #[cfg(linux_kernel)] - LinuxDontDump = c::MADV_DONTDUMP, + LinuxDontDump = bitcast!(c::MADV_DONTDUMP), /// `MADV_DODUMP` (since Linux 3.4) #[cfg(linux_kernel)] - LinuxDoDump = c::MADV_DODUMP, + LinuxDoDump = bitcast!(c::MADV_DODUMP), /// `MADV_WIPEONFORK` (since Linux 4.14) #[cfg(linux_kernel)] - LinuxWipeOnFork = libc::MADV_WIPEONFORK as i32, + LinuxWipeOnFork = bitcast!(c::MADV_WIPEONFORK), /// `MADV_KEEPONFORK` (since Linux 4.14) #[cfg(linux_kernel)] - LinuxKeepOnFork = libc::MADV_KEEPONFORK as i32, + LinuxKeepOnFork = bitcast!(c::MADV_KEEPONFORK), /// `MADV_COLD` (since Linux 5.4) #[cfg(linux_kernel)] - LinuxCold = libc::MADV_COLD as i32, + LinuxCold = bitcast!(c::MADV_COLD), /// `MADV_PAGEOUT` (since Linux 5.4) #[cfg(linux_kernel)] - LinuxPageOut = libc::MADV_PAGEOUT as i32, + LinuxPageOut = bitcast!(c::MADV_PAGEOUT), /// `MADV_POPULATE_READ` (since Linux 5.14) #[cfg(linux_kernel)] - LinuxPopulateRead = libc::MADV_POPULATE_READ as i32, + LinuxPopulateRead = bitcast!(c::MADV_POPULATE_READ), /// `MADV_POPULATE_WRITE` (since Linux 5.14) #[cfg(linux_kernel)] - LinuxPopulateWrite = libc::MADV_POPULATE_WRITE as i32, + LinuxPopulateWrite = bitcast!(c::MADV_POPULATE_WRITE), /// `MADV_DONTNEED_LOCKED` (since Linux 5.18) #[cfg(linux_kernel)] - LinuxDontneedLocked = libc::MADV_DONTNEED_LOCKED as i32, + LinuxDontneedLocked = bitcast!(c::MADV_DONTNEED_LOCKED), } #[cfg(target_os = "emscripten")] @@ -351,10 +396,12 @@ /// `O_*` flags for use with [`userfaultfd`]. /// /// [`userfaultfd`]: crate::io::userfaultfd - pub struct UserfaultfdFlags: c::c_int { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct UserfaultfdFlags: u32 { /// `O_CLOEXEC` - const CLOEXEC = c::O_CLOEXEC; + const CLOEXEC = bitcast!(c::O_CLOEXEC); /// `O_NONBLOCK` - const NONBLOCK = c::O_NONBLOCK; + const NONBLOCK = bitcast!(c::O_NONBLOCK); } } diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,35 +12,89 @@ #![allow(clippy::useless_conversion)] mod conv; -mod offset; #[cfg(windows)] -mod io_lifetimes; -#[cfg(not(windows))] -#[cfg(not(feature = "std"))] -pub(crate) mod fd { - pub(crate) use super::c::c_int as LibcFd; - pub use crate::io::fd::*; -} -#[cfg(windows)] pub(crate) mod fd { - pub use super::io_lifetimes::*; + pub use crate::maybe_polyfill::os::windows::io::{ + AsRawSocket, AsSocket, BorrowedSocket as BorrowedFd, FromRawSocket, IntoRawSocket, + OwnedSocket as OwnedFd, RawSocket as RawFd, + }; + pub(crate) use windows_sys::Win32::Networking::WinSock::SOCKET as LibcFd; + + /// A version of [`AsRawFd`] for use with Winsock2 API. + /// + /// [`AsRawFd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.AsRawFd.html + pub trait AsRawFd { + /// A version of [`as_raw_fd`] for use with Winsock2 API. + /// + /// [`as_raw_fd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html#tymethod.as_raw_fd + fn as_raw_fd(&self) -> RawFd; + } + impl AsRawFd for T { + #[inline] + fn as_raw_fd(&self) -> RawFd { + self.as_raw_socket() + } + } + + /// A version of [`IntoRawFd`] for use with Winsock2 API. + /// + /// [`IntoRawFd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.IntoRawFd.html + pub trait IntoRawFd { + /// A version of [`into_raw_fd`] for use with Winsock2 API. + /// + /// [`into_raw_fd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html#tymethod.into_raw_fd + fn into_raw_fd(self) -> RawFd; + } + impl IntoRawFd for T { + #[inline] + fn into_raw_fd(self) -> RawFd { + self.into_raw_socket() + } + } + + /// A version of [`FromRawFd`] for use with Winsock2 API. + /// + /// [`FromRawFd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html + pub trait FromRawFd { + /// A version of [`from_raw_fd`] for use with Winsock2 API. + /// + /// # Safety + /// + /// See the [safety requirements] for [`from_raw_fd`]. + /// + /// [`from_raw_fd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html#tymethod.from_raw_fd + /// [safety requirements]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html#safety + unsafe fn from_raw_fd(raw_fd: RawFd) -> Self; + } + impl FromRawFd for T { + #[inline] + unsafe fn from_raw_fd(raw_fd: RawFd) -> Self { + Self::from_raw_socket(raw_fd) + } + } + + /// A version of [`AsFd`] for use with Winsock2 API. + /// + /// [`AsFd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.AsFd.html + pub trait AsFd { + /// An `as_fd` function for Winsock2, where a `Fd` is a `Socket`. + fn as_fd(&self) -> BorrowedFd; + } + impl AsFd for T { + #[inline] + fn as_fd(&self) -> BorrowedFd { + self.as_socket() + } + } } #[cfg(not(windows))] -#[cfg(feature = "std")] pub(crate) mod fd { - pub use io_lifetimes::*; - - #[cfg(target_os = "wasi")] - #[allow(unused_imports)] - pub(crate) use super::c::c_int as LibcFd; - #[cfg(unix)] + pub use crate::maybe_polyfill::os::fd::{ + AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd, + }; #[allow(unused_imports)] - pub(crate) use std::os::unix::io::RawFd as LibcFd; - #[cfg(unix)] - pub use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; - #[cfg(target_os = "wasi")] - pub use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; + pub(crate) use RawFd as LibcFd; } // On Windows we emulate selected libc-compatible interfaces. On non-Windows, @@ -48,6 +102,8 @@ #[cfg_attr(windows, path = "winsock_c.rs")] pub(crate) mod c; +#[cfg(feature = "event")] +pub(crate) mod event; #[cfg(not(windows))] #[cfg(feature = "fs")] pub(crate) mod fs; @@ -55,13 +111,19 @@ #[cfg(linux_kernel)] #[cfg(feature = "io_uring")] pub(crate) mod io_uring; -#[cfg(not(any(windows, target_os = "wasi")))] +#[cfg(not(any(windows, target_os = "espidf", target_os = "wasi")))] #[cfg(feature = "mm")] pub(crate) mod mm; +#[cfg(linux_kernel)] +#[cfg(feature = "mount")] +pub(crate) mod mount; +#[cfg(linux_kernel)] +#[cfg(all(feature = "fs", not(feature = "mount")))] +pub(crate) mod mount; // for deprecated mount functions in "fs" #[cfg(not(any(target_os = "redox", target_os = "wasi")))] #[cfg(feature = "net")] pub(crate) mod net; -#[cfg(not(windows))] +#[cfg(not(any(windows, target_os = "espidf")))] #[cfg(any( feature = "param", feature = "runtime", @@ -70,6 +132,10 @@ ))] pub(crate) mod param; #[cfg(not(windows))] +#[cfg(feature = "pipe")] +pub(crate) mod pipe; +#[cfg(not(windows))] +#[cfg(feature = "process")] pub(crate) mod process; #[cfg(not(windows))] #[cfg(not(target_os = "wasi"))] @@ -79,12 +145,17 @@ #[cfg(feature = "rand")] pub(crate) mod rand; #[cfg(not(windows))] +#[cfg(not(target_os = "wasi"))] +#[cfg(feature = "system")] +pub(crate) mod system; +#[cfg(not(windows))] #[cfg(feature = "termios")] pub(crate) mod termios; #[cfg(not(windows))] #[cfg(feature = "thread")] pub(crate) mod thread; -#[cfg(not(windows))] +#[cfg(not(any(windows, target_os = "espidf")))] +#[cfg(feature = "time")] pub(crate) mod time; /// If the host libc is glibc, return `true` if it is less than version 2.25. @@ -105,3 +176,31 @@ // this function. But, there are likely other libc versions which have it. getrandom.get().is_none() } + +// Private modules used by multiple public modules. +#[cfg(any(feature = "procfs", feature = "process", feature = "runtime"))] +#[cfg(not(any(windows, target_os = "wasi")))] +pub(crate) mod pid; +#[cfg(any(feature = "process", feature = "thread"))] +#[cfg(linux_kernel)] +pub(crate) mod prctl; +#[cfg(any(feature = "fs", feature = "thread", feature = "process"))] +#[cfg(not(any(windows, target_os = "wasi")))] +pub(crate) mod ugid; + +#[cfg(bsd)] +const MAX_IOV: usize = c::IOV_MAX as usize; + +#[cfg(any(linux_kernel, target_os = "emscripten", target_os = "nto"))] +const MAX_IOV: usize = c::UIO_MAXIOV as usize; + +#[cfg(not(any( + bsd, + linux_kernel, + windows, + target_os = "emscripten", + target_os = "espidf", + target_os = "nto", + target_os = "horizon", +)))] +const MAX_IOV: usize = 16; // The minimum value required by POSIX. diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/mount/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/mount/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/mount/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/mount/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,2 @@ +pub(crate) mod syscalls; +pub(crate) mod types; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/mount/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/mount/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/mount/syscalls.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/mount/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,272 @@ +use crate::backend::c; +use crate::backend::conv::ret; +#[cfg(feature = "mount")] +use crate::backend::conv::{borrowed_fd, c_str, ret_owned_fd}; +#[cfg(feature = "mount")] +use crate::fd::{BorrowedFd, OwnedFd}; +use crate::ffi::CStr; +use crate::io; +use core::ptr::null; + +#[cfg(linux_kernel)] +pub(crate) fn mount( + source: Option<&CStr>, + target: &CStr, + file_system_type: Option<&CStr>, + flags: super::types::MountFlagsArg, + data: Option<&CStr>, +) -> io::Result<()> { + unsafe { + ret(c::mount( + source.map_or_else(null, CStr::as_ptr), + target.as_ptr(), + file_system_type.map_or_else(null, CStr::as_ptr), + flags.0, + data.map_or_else(null, CStr::as_ptr).cast(), + )) + } +} + +#[cfg(linux_kernel)] +pub(crate) fn unmount(target: &CStr, flags: super::types::UnmountFlags) -> io::Result<()> { + unsafe { ret(c::umount2(target.as_ptr(), bitflags_bits!(flags))) } +} + +#[cfg(linux_kernel)] +#[cfg(feature = "mount")] +pub(crate) fn fsopen(fs_name: &CStr, flags: super::types::FsOpenFlags) -> io::Result { + syscall! { + fn fsopen( + fs_name: *const c::c_char, + flags: c::c_uint + ) via SYS_fsopen -> c::c_int + } + unsafe { ret_owned_fd(fsopen(c_str(fs_name), flags.bits())) } +} + +#[cfg(linux_kernel)] +#[cfg(feature = "mount")] +pub(crate) fn fsmount( + fs_fd: BorrowedFd<'_>, + flags: super::types::FsMountFlags, + attr_flags: super::types::MountAttrFlags, +) -> io::Result<()> { + syscall! { + fn fsmount( + fs_fd: c::c_int, + flags: c::c_uint, + attr_flags: c::c_uint + ) via SYS_fsmount -> c::c_int + } + unsafe { ret(fsmount(borrowed_fd(fs_fd), flags.bits(), attr_flags.bits())) } +} + +#[cfg(linux_kernel)] +#[cfg(feature = "mount")] +pub(crate) fn move_mount( + from_dfd: BorrowedFd<'_>, + from_pathname: &CStr, + to_dfd: BorrowedFd<'_>, + to_pathname: &CStr, + flags: super::types::MoveMountFlags, +) -> io::Result<()> { + syscall! { + fn move_mount( + from_dfd: c::c_int, + from_pathname: *const c::c_char, + to_dfd: c::c_int, + to_pathname: *const c::c_char, + flags: c::c_uint + ) via SYS_move_mount -> c::c_int + } + unsafe { + ret(move_mount( + borrowed_fd(from_dfd), + c_str(from_pathname), + borrowed_fd(to_dfd), + c_str(to_pathname), + flags.bits(), + )) + } +} + +#[cfg(linux_kernel)] +#[cfg(feature = "mount")] +pub(crate) fn open_tree( + dfd: BorrowedFd<'_>, + filename: &CStr, + flags: super::types::OpenTreeFlags, +) -> io::Result { + syscall! { + fn open_tree( + dfd: c::c_int, + filename: *const c::c_char, + flags: c::c_uint + ) via SYS_open_tree -> c::c_int + } + + unsafe { ret_owned_fd(open_tree(borrowed_fd(dfd), c_str(filename), flags.bits())) } +} + +#[cfg(linux_kernel)] +#[cfg(feature = "mount")] +pub(crate) fn fspick( + dfd: BorrowedFd<'_>, + path: &CStr, + flags: super::types::FsPickFlags, +) -> io::Result { + syscall! { + fn fspick( + dfd: c::c_int, + path: *const c::c_char, + flags: c::c_uint + ) via SYS_fspick -> c::c_int + } + + unsafe { ret_owned_fd(fspick(borrowed_fd(dfd), c_str(path), flags.bits())) } +} + +#[cfg(feature = "mount")] +#[cfg(linux_kernel)] +syscall! { + fn fsconfig( + fs_fd: c::c_int, + cmd: c::c_uint, + key: *const c::c_char, + val: *const c::c_char, + aux: c::c_int + ) via SYS_fsconfig -> c::c_int +} + +#[cfg(linux_kernel)] +#[cfg(feature = "mount")] +pub(crate) fn fsconfig_set_flag(fs_fd: BorrowedFd<'_>, key: &CStr) -> io::Result<()> { + unsafe { + ret(fsconfig( + borrowed_fd(fs_fd), + super::types::FsConfigCmd::SetFlag as _, + c_str(key), + null(), + 0, + )) + } +} + +#[cfg(linux_kernel)] +#[cfg(feature = "mount")] +pub(crate) fn fsconfig_set_string( + fs_fd: BorrowedFd<'_>, + key: &CStr, + value: &CStr, +) -> io::Result<()> { + unsafe { + ret(fsconfig( + borrowed_fd(fs_fd), + super::types::FsConfigCmd::SetString as _, + c_str(key), + c_str(value), + 0, + )) + } +} + +#[cfg(linux_kernel)] +#[cfg(feature = "mount")] +pub(crate) fn fsconfig_set_binary( + fs_fd: BorrowedFd<'_>, + key: &CStr, + value: &[u8], +) -> io::Result<()> { + unsafe { + ret(fsconfig( + borrowed_fd(fs_fd), + super::types::FsConfigCmd::SetBinary as _, + c_str(key), + value.as_ptr().cast(), + value.len().try_into().map_err(|_| io::Errno::OVERFLOW)?, + )) + } +} + +#[cfg(linux_kernel)] +#[cfg(feature = "mount")] +pub(crate) fn fsconfig_set_fd( + fs_fd: BorrowedFd<'_>, + key: &CStr, + fd: BorrowedFd<'_>, +) -> io::Result<()> { + unsafe { + ret(fsconfig( + borrowed_fd(fs_fd), + super::types::FsConfigCmd::SetFd as _, + c_str(key), + null(), + borrowed_fd(fd), + )) + } +} + +#[cfg(linux_kernel)] +#[cfg(feature = "mount")] +pub(crate) fn fsconfig_set_path( + fs_fd: BorrowedFd<'_>, + key: &CStr, + path: &CStr, + fd: BorrowedFd<'_>, +) -> io::Result<()> { + unsafe { + ret(fsconfig( + borrowed_fd(fs_fd), + super::types::FsConfigCmd::SetPath as _, + c_str(key), + c_str(path), + borrowed_fd(fd), + )) + } +} + +#[cfg(linux_kernel)] +#[cfg(feature = "mount")] +pub(crate) fn fsconfig_set_path_empty( + fs_fd: BorrowedFd<'_>, + key: &CStr, + fd: BorrowedFd<'_>, +) -> io::Result<()> { + unsafe { + ret(fsconfig( + borrowed_fd(fs_fd), + super::types::FsConfigCmd::SetPathEmpty as _, + c_str(key), + c_str(cstr!("")), + borrowed_fd(fd), + )) + } +} + +#[cfg(linux_kernel)] +#[cfg(feature = "mount")] +pub(crate) fn fsconfig_create(fs_fd: BorrowedFd<'_>) -> io::Result<()> { + unsafe { + ret(fsconfig( + borrowed_fd(fs_fd), + super::types::FsConfigCmd::Create as _, + null(), + null(), + 0, + )) + } +} + +#[cfg(linux_kernel)] +#[cfg(feature = "mount")] +pub(crate) fn fsconfig_reconfigure(fs_fd: BorrowedFd<'_>) -> io::Result<()> { + unsafe { + ret(fsconfig( + borrowed_fd(fs_fd), + super::types::FsConfigCmd::Reconfigure as _, + null(), + null(), + 0, + )) + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/mount/types.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/mount/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/mount/types.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/mount/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,311 @@ +use crate::backend::c; +use bitflags::bitflags; + +#[cfg(linux_kernel)] +bitflags! { + /// `MS_*` constants for use with [`mount`]. + /// + /// [`mount`]: crate::mount::mount + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct MountFlags: c::c_ulong { + /// `MS_BIND` + const BIND = c::MS_BIND; + + /// `MS_DIRSYNC` + const DIRSYNC = c::MS_DIRSYNC; + + /// `MS_LAZYTIME` + const LAZYTIME = c::MS_LAZYTIME; + + /// `MS_MANDLOCK` + #[doc(alias = "MANDLOCK")] + const PERMIT_MANDATORY_FILE_LOCKING = c::MS_MANDLOCK; + + /// `MS_NOATIME` + const NOATIME = c::MS_NOATIME; + + /// `MS_NODEV` + const NODEV = c::MS_NODEV; + + /// `MS_NODIRATIME` + const NODIRATIME = c::MS_NODIRATIME; + + /// `MS_NOEXEC` + const NOEXEC = c::MS_NOEXEC; + + /// `MS_NOSUID` + const NOSUID = c::MS_NOSUID; + + /// `MS_RDONLY` + const RDONLY = c::MS_RDONLY; + + /// `MS_REC` + const REC = c::MS_REC; + + /// `MS_RELATIME` + const RELATIME = c::MS_RELATIME; + + /// `MS_SILENT` + const SILENT = c::MS_SILENT; + + /// `MS_STRICTATIME` + const STRICTATIME = c::MS_STRICTATIME; + + /// `MS_SYNCHRONOUS` + const SYNCHRONOUS = c::MS_SYNCHRONOUS; + } +} + +#[cfg(linux_kernel)] +bitflags! { + /// `MNT_*` constants for use with [`unmount`]. + /// + /// [`unmount`]: crate::mount::unmount + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct UnmountFlags: u32 { + /// `MNT_FORCE` + const FORCE = bitcast!(c::MNT_FORCE); + /// `MNT_DETACH` + const DETACH = bitcast!(c::MNT_DETACH); + /// `MNT_EXPIRE` + const EXPIRE = bitcast!(c::MNT_EXPIRE); + /// `UMOUNT_NOFOLLOW` + const NOFOLLOW = bitcast!(c::UMOUNT_NOFOLLOW); + } +} + +#[cfg(feature = "mount")] +#[cfg(linux_kernel)] +bitflags! { + /// `FSOPEN_*` constants for use with [`fsopen`]. + /// + /// [`fsopen`]: crate::mount::fsopen + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct FsOpenFlags: c::c_uint { + + /// `FSOPEN_CLOEXEC` + const FSOPEN_CLOEXEC = 0x00000001; + } +} + +#[cfg(feature = "mount")] +#[cfg(linux_kernel)] +bitflags! { + /// `FSMOUNT_*` constants for use with [`fsmount`]. + /// + /// [`fsmount`]: crate::mount::fsmount + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct FsMountFlags: c::c_uint { + /// `FSMOUNT_CLOEXEC` + const FSMOUNT_CLOEXEC = 0x00000001; + } +} + +/// `FSCONFIG_*` constants for use with the `fsconfig` syscall. +#[cfg(feature = "mount")] +#[cfg(linux_kernel)] +#[derive(Debug, Copy, Clone, Eq, PartialEq)] +#[repr(u32)] +pub(crate) enum FsConfigCmd { + /// `FSCONFIG_SET_FLAG` + SetFlag = 0, + + /// `FSCONFIG_SET_STRING` + SetString = 1, + + /// `FSCONFIG_SET_BINARY` + SetBinary = 2, + + /// `FSCONFIG_SET_PATH` + SetPath = 3, + + /// `FSCONFIG_SET_PATH_EMPTY` + SetPathEmpty = 4, + + /// `FSCONFIG_SET_FD` + SetFd = 5, + + /// `FSCONFIG_CMD_CREATE` + Create = 6, + + /// `FSCONFIG_CMD_RECONFIGURE` + Reconfigure = 7, +} + +#[cfg(feature = "mount")] +#[cfg(linux_kernel)] +bitflags! { + /// `MOUNT_ATTR_*` constants for use with [`fsmount`]. + /// + /// [`fsmount`]: crate::mount::fsmount + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct MountAttrFlags: c::c_uint { + /// `MOUNT_ATTR_RDONLY` + const MOUNT_ATTR_RDONLY = 0x00000001; + + /// `MOUNT_ATTR_NOSUID` + const MOUNT_ATTR_NOSUID = 0x00000002; + + /// `MOUNT_ATTR_NODEV` + const MOUNT_ATTR_NODEV = 0x00000004; + + /// `MOUNT_ATTR_NOEXEC` + const MOUNT_ATTR_NOEXEC = 0x00000008; + + /// `MOUNT_ATTR__ATIME` + const MOUNT_ATTR__ATIME = 0x00000070; + + /// `MOUNT_ATTR_RELATIME` + const MOUNT_ATTR_RELATIME = 0x00000000; + + /// `MOUNT_ATTR_NOATIME` + const MOUNT_ATTR_NOATIME = 0x00000010; + + /// `MOUNT_ATTR_STRICTATIME` + const MOUNT_ATTR_STRICTATIME = 0x00000020; + + /// `MOUNT_ATTR_NODIRATIME` + const MOUNT_ATTR_NODIRATIME = 0x00000080; + + /// `MOUNT_ATTR_NOUSER` + const MOUNT_ATTR_IDMAP = 0x00100000; + + /// `MOUNT_ATTR__ATIME_FLAGS` + const MOUNT_ATTR_NOSYMFOLLOW = 0x00200000; + + /// `MOUNT_ATTR__ATIME_FLAGS` + const MOUNT_ATTR_SIZE_VER0 = 32; + } +} + +#[cfg(feature = "mount")] +#[cfg(linux_kernel)] +bitflags! { + /// `MOVE_MOUNT_*` constants for use with [`move_mount`]. + /// + /// [`move_mount`]: crate::mount::move_mount + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct MoveMountFlags: c::c_uint { + /// `MOVE_MOUNT_F_EMPTY_PATH` + const MOVE_MOUNT_F_SYMLINKS = 0x00000001; + + /// `MOVE_MOUNT_F_AUTOMOUNTS` + const MOVE_MOUNT_F_AUTOMOUNTS = 0x00000002; + + /// `MOVE_MOUNT_F_EMPTY_PATH` + const MOVE_MOUNT_F_EMPTY_PATH = 0x00000004; + + /// `MOVE_MOUNT_T_SYMLINKS` + const MOVE_MOUNT_T_SYMLINKS = 0x00000010; + + /// `MOVE_MOUNT_T_AUTOMOUNTS` + const MOVE_MOUNT_T_AUTOMOUNTS = 0x00000020; + + /// `MOVE_MOUNT_T_EMPTY_PATH` + const MOVE_MOUNT_T_EMPTY_PATH = 0x00000040; + + /// `MOVE_MOUNT__MASK` + const MOVE_MOUNT_SET_GROUP = 0x00000100; + + // TODO: add when linux 6.5 is released + // /// `MOVE_MOUNT_BENEATH` + // const MOVE_MOUNT_BENEATH = 0x00000200; + + /// `MOVE_MOUNT__MASK` + const MOVE_MOUNT__MASK = 0x00000377; + } +} + +#[cfg(feature = "mount")] +#[cfg(linux_kernel)] +bitflags! { + /// `OPENTREE_*` constants for use with [`open_tree`]. + /// + /// [`open_tree`]: crate::mount::open_tree + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct OpenTreeFlags: c::c_uint { + /// `OPENTREE_CLONE` + const OPEN_TREE_CLONE = 1; + + /// `OPENTREE_CLOEXEC` + const OPEN_TREE_CLOEXEC = c::O_CLOEXEC as c::c_uint; + + /// `AT_EMPTY_PATH` + const AT_EMPTY_PATH = c::AT_EMPTY_PATH as c::c_uint; + + /// `AT_NO_AUTOMOUNT` + const AT_NO_AUTOMOUNT = c::AT_NO_AUTOMOUNT as c::c_uint; + + /// `AT_RECURSIVE` + const AT_RECURSIVE = c::AT_RECURSIVE as c::c_uint; + + /// `AT_SYMLINK_NOFOLLOW` + const AT_SYMLINK_NOFOLLOW = c::AT_SYMLINK_NOFOLLOW as c::c_uint; + } +} + +#[cfg(feature = "mount")] +#[cfg(linux_kernel)] +bitflags! { + /// `FSPICK_*` constants for use with [`fspick`]. + /// + /// [`fspick`]: crate::mount::fspick + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct FsPickFlags: c::c_uint { + /// `FSPICK_CLOEXEC` + const FSPICK_CLOEXEC = 0x00000001; + + /// `FSPICK_SYMLINK_NOFOLLOW` + const FSPICK_SYMLINK_NOFOLLOW = 0x00000002; + + /// `FSPICK_NO_AUTOMOUNT` + const FSPICK_NO_AUTOMOUNT = 0x00000004; + + /// `FSPICK_EMPTY_PATH` + const FSPICK_EMPTY_PATH = 0x00000008; + } +} + +#[cfg(linux_kernel)] +bitflags! { + /// `MS_*` constants for use with [`change_mount`]. + /// + /// [`change_mount`]: crate::mount::change_mount + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct MountPropagationFlags: c::c_ulong { + /// `MS_SILENT` + const SILENT = c::MS_SILENT; + /// `MS_SHARED` + const SHARED = c::MS_SHARED; + /// `MS_PRIVATE` + const PRIVATE = c::MS_PRIVATE; + /// `MS_SLAVE` + const SLAVE = c::MS_SLAVE; + /// `MS_UNBINDABLE` + const UNBINDABLE = c::MS_UNBINDABLE; + /// `MS_REC` + const REC = c::MS_REC; + } +} + +#[cfg(linux_kernel)] +bitflags! { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub(crate) struct InternalMountFlags: c::c_ulong { + const REMOUNT = c::MS_REMOUNT; + const MOVE = c::MS_MOVE; + } +} + +#[cfg(linux_kernel)] +pub(crate) struct MountFlagsArg(pub(crate) c::c_ulong); diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/net/addr.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/net/addr.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/net/addr.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/net/addr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,6 @@ //! Socket address utilities. -use super::super::c; -#[cfg(not(windows))] -use core::convert::TryInto; +use crate::backend::c; #[cfg(unix)] use { crate::ffi::CStr, @@ -78,12 +76,12 @@ fn init() -> c::sockaddr_un { c::sockaddr_un { - #[cfg(any(bsd, target_os = "haiku"))] + #[cfg(any(bsd, target_os = "haiku", target_os = "nto"))] sun_len: 0, sun_family: c::AF_UNIX as _, - #[cfg(bsd)] + #[cfg(any(bsd, target_os = "nto"))] sun_path: [0; 104], - #[cfg(not(any(bsd, target_os = "haiku")))] + #[cfg(not(any(bsd, target_os = "haiku", target_os = "nto")))] sun_path: [0; 108], #[cfg(target_os = "haiku")] sun_path: [0; 126], @@ -210,15 +208,15 @@ #[inline] pub(crate) fn offsetof_sun_path() -> usize { let z = c::sockaddr_un { - #[cfg(any(bsd, target_os = "haiku"))] + #[cfg(any(bsd, target_os = "haiku", target_os = "nto"))] sun_len: 0_u8, - #[cfg(any(bsd, target_os = "haiku"))] + #[cfg(any(bsd, target_os = "espidf", target_os = "haiku", target_os = "nto"))] sun_family: 0_u8, - #[cfg(not(any(bsd, target_os = "haiku")))] + #[cfg(not(any(bsd, target_os = "espidf", target_os = "haiku", target_os = "nto")))] sun_family: 0_u16, - #[cfg(bsd)] + #[cfg(any(bsd, target_os = "nto"))] sun_path: [0; 104], - #[cfg(not(any(bsd, target_os = "haiku")))] + #[cfg(not(any(bsd, target_os = "haiku", target_os = "nto")))] sun_path: [0; 108], #[cfg(target_os = "haiku")] sun_path: [0; 126], diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/net/ext.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/net/ext.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/net/ext.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/net/ext.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -use super::super::c; +use crate::backend::c; /// The windows `sockaddr_in6` type is a union with accessor functions which /// are not `const fn`. Define our own layout-compatible version so that we @@ -19,7 +19,6 @@ addr.s_addr } -#[cfg(not(feature = "std"))] #[cfg(windows)] #[inline] pub(crate) const fn in_addr_s_addr(addr: c::in_addr) -> u32 { @@ -27,89 +26,48 @@ unsafe { core::mem::transmute(addr) } } -// TODO: With Rust 1.55, we can use the above `in_addr_s_addr` definition that -// uses a const-fn transmute. -#[cfg(feature = "std")] -#[cfg(windows)] -#[inline] -pub(crate) fn in_addr_s_addr(addr: c::in_addr) -> u32 { - // This should be `*addr.S_un.S_addr()`, except that isn't a `const fn`. - unsafe { core::mem::transmute(addr) } -} - #[cfg(not(windows))] #[inline] pub(crate) const fn in_addr_new(s_addr: u32) -> c::in_addr { c::in_addr { s_addr } } -#[cfg(not(feature = "std"))] #[cfg(windows)] #[inline] pub(crate) const fn in_addr_new(s_addr: u32) -> c::in_addr { unsafe { core::mem::transmute(s_addr) } } -// TODO: With Rust 1.55, we can use the above `in_addr_new` definition that -// uses a const-fn transmute. -#[cfg(feature = "std")] -#[cfg(windows)] -#[inline] -pub(crate) fn in_addr_new(s_addr: u32) -> c::in_addr { - unsafe { core::mem::transmute(s_addr) } -} - #[cfg(not(windows))] #[inline] pub(crate) const fn in6_addr_s6_addr(addr: c::in6_addr) -> [u8; 16] { addr.s6_addr } -#[cfg(not(feature = "std"))] #[cfg(windows)] #[inline] pub(crate) const fn in6_addr_s6_addr(addr: c::in6_addr) -> [u8; 16] { unsafe { core::mem::transmute(addr) } } -// TODO: With Rust 1.55, we can use the above `in6_addr_s6_addr` definition -// that uses a const-fn transmute. -#[cfg(feature = "std")] -#[cfg(windows)] -#[inline] -pub(crate) fn in6_addr_s6_addr(addr: c::in6_addr) -> [u8; 16] { - unsafe { core::mem::transmute(addr) } -} - #[cfg(not(windows))] #[inline] pub(crate) const fn in6_addr_new(s6_addr: [u8; 16]) -> c::in6_addr { c::in6_addr { s6_addr } } -#[cfg(not(feature = "std"))] #[cfg(windows)] #[inline] pub(crate) const fn in6_addr_new(s6_addr: [u8; 16]) -> c::in6_addr { unsafe { core::mem::transmute(s6_addr) } } -// TODO: With Rust 1.55, we can use the above `in6_addr_new` definition that -// uses a const-fn transmute. -#[cfg(feature = "std")] -#[cfg(windows)] -#[inline] -pub(crate) fn in6_addr_new(s6_addr: [u8; 16]) -> c::in6_addr { - unsafe { core::mem::transmute(s6_addr) } -} - #[cfg(not(windows))] #[inline] pub(crate) const fn sockaddr_in6_sin6_scope_id(addr: &c::sockaddr_in6) -> u32 { addr.sin6_scope_id } -#[cfg(not(feature = "std"))] #[cfg(windows)] #[inline] pub(crate) const fn sockaddr_in6_sin6_scope_id(addr: &c::sockaddr_in6) -> u32 { @@ -117,20 +75,10 @@ addr.sin6_scope_id } -// TODO: With Rust 1.55, we can use the above `sockaddr_in6_sin6_scope_id` -// definition that uses a const-fn transmute. -#[cfg(feature = "std")] -#[cfg(windows)] -#[inline] -pub(crate) fn sockaddr_in6_sin6_scope_id(addr: &c::sockaddr_in6) -> u32 { - let addr: &sockaddr_in6 = unsafe { core::mem::transmute(addr) }; - addr.sin6_scope_id -} - #[cfg(not(windows))] #[inline] pub(crate) const fn sockaddr_in6_new( - #[cfg(any(bsd, target_os = "haiku"))] sin6_len: u8, + #[cfg(any(bsd, target_os = "espidf", target_os = "haiku", target_os = "nto"))] sin6_len: u8, sin6_family: c::sa_family_t, sin6_port: u16, sin6_flowinfo: u32, @@ -138,7 +86,7 @@ sin6_scope_id: u32, ) -> c::sockaddr_in6 { c::sockaddr_in6 { - #[cfg(any(bsd, target_os = "haiku"))] + #[cfg(any(bsd, target_os = "espidf", target_os = "haiku", target_os = "nto"))] sin6_len, sin6_family, sin6_port, @@ -150,35 +98,12 @@ } } -#[cfg(not(feature = "std"))] #[cfg(windows)] #[inline] pub(crate) const fn sockaddr_in6_new( sin6_family: u16, sin6_port: u16, sin6_flowinfo: u32, - sin6_addr: c::in6_addr, - sin6_scope_id: u32, -) -> c::sockaddr_in6 { - let addr = sockaddr_in6 { - sin6_family, - sin6_port, - sin6_flowinfo, - sin6_addr, - sin6_scope_id, - }; - unsafe { core::mem::transmute(addr) } -} - -// TODO: With Rust 1.55, we can use the above `sockaddr_in6_new` definition -// that uses a const-fn transmute. -#[cfg(feature = "std")] -#[cfg(windows)] -#[inline] -pub(crate) fn sockaddr_in6_new( - sin6_family: u16, - sin6_port: u16, - sin6_flowinfo: u32, sin6_addr: c::in6_addr, sin6_scope_id: u32, ) -> c::sockaddr_in6 { diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/net/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/net/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/net/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/net/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,8 @@ pub(crate) mod addr; pub(crate) mod ext; -#[cfg(not(any(target_os = "redox", target_os = "wasi", windows)))] +#[cfg(not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")))] pub(crate) mod msghdr; pub(crate) mod read_sockaddr; pub(crate) mod send_recv; pub(crate) mod syscalls; -pub(crate) mod types; pub(crate) mod write_sockaddr; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/net/msghdr.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/net/msghdr.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/net/msghdr.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/net/msghdr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,15 +3,14 @@ //! These take closures rather than returning a `c::msghdr` directly because //! the message headers may reference stack-local data. -use super::super::c; -use super::super::conv::{msg_control_len, msg_iov_len}; -use super::super::net::write_sockaddr::{encode_sockaddr_v4, encode_sockaddr_v6}; +use crate::backend::c; +use crate::backend::conv::{msg_control_len, msg_iov_len}; +use crate::backend::net::write_sockaddr::{encode_sockaddr_v4, encode_sockaddr_v6}; use crate::io::{self, IoSlice, IoSliceMut}; use crate::net::{RecvAncillaryBuffer, SendAncillaryBuffer, SocketAddrV4, SocketAddrV6}; use crate::utils::as_ptr; -use core::convert::TryInto; use core::mem::{size_of, zeroed, MaybeUninit}; /// Create a message header intended to receive a datagram. @@ -25,7 +24,7 @@ let namelen = size_of::() as c::socklen_t; let mut msghdr = { - let mut h: c::msghdr = unsafe { zeroed() }; + let mut h = zero_msghdr(); h.msg_name = name.as_mut_ptr().cast(); h.msg_namelen = namelen; h.msg_iov = iov.as_mut_ptr().cast(); @@ -54,7 +53,7 @@ f: impl FnOnce(c::msghdr) -> R, ) -> R { f({ - let mut h: c::msghdr = unsafe { zeroed() }; + let mut h = zero_msghdr(); h.msg_iov = iov.as_ptr() as _; h.msg_iovlen = msg_iov_len(iov.len()); h.msg_control = control.as_control_ptr().cast(); @@ -70,10 +69,10 @@ control: &mut SendAncillaryBuffer<'_, '_, '_>, f: impl FnOnce(c::msghdr) -> R, ) -> R { - let encoded = unsafe { encode_sockaddr_v4(addr) }; + let encoded = encode_sockaddr_v4(addr); f({ - let mut h: c::msghdr = unsafe { zeroed() }; + let mut h = zero_msghdr(); h.msg_name = as_ptr(&encoded) as _; h.msg_namelen = size_of::() as _; h.msg_iov = iov.as_ptr() as _; @@ -91,10 +90,10 @@ control: &mut SendAncillaryBuffer<'_, '_, '_>, f: impl FnOnce(c::msghdr) -> R, ) -> R { - let encoded = unsafe { encode_sockaddr_v6(addr) }; + let encoded = encode_sockaddr_v6(addr); f({ - let mut h: c::msghdr = unsafe { zeroed() }; + let mut h = zero_msghdr(); h.msg_name = as_ptr(&encoded) as _; h.msg_namelen = size_of::() as _; h.msg_iov = iov.as_ptr() as _; @@ -114,7 +113,7 @@ f: impl FnOnce(c::msghdr) -> R, ) -> R { f({ - let mut h: c::msghdr = unsafe { zeroed() }; + let mut h = zero_msghdr(); h.msg_name = as_ptr(addr) as _; h.msg_namelen = addr.addr_len(); h.msg_iov = iov.as_ptr() as _; @@ -124,3 +123,12 @@ h }) } + +/// Create a zero-initialized message header struct value. +#[cfg(all(unix, not(target_os = "redox")))] +pub(crate) fn zero_msghdr() -> c::msghdr { + // SAFETY: We can't initialize all the fields by value because on some + // platforms the `msghdr` struct in the libc crate contains private padding + // fields. But it is still a C type that's meant to be zero-initializable. + unsafe { zeroed() } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/net/read_sockaddr.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/net/read_sockaddr.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/net/read_sockaddr.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/net/read_sockaddr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,10 @@ -use super::super::c; +//! The BSD sockets API requires us to read the `ss_family` field before +//! we can interpret the rest of a `sockaddr` produced by the kernel. + #[cfg(unix)] use super::addr::SocketAddrUnix; use super::ext::{in6_addr_s6_addr, in_addr_s_addr, sockaddr_in6_sin6_scope_id}; +use crate::backend::c; #[cfg(not(windows))] use crate::ffi::CStr; use crate::io; @@ -23,11 +26,11 @@ unsafe fn read_ss_family(storage: *const c::sockaddr_storage) -> u16 { // Assert that we know the layout of `sockaddr`. let _ = c::sockaddr { - #[cfg(any(bsd, target_os = "haiku"))] + #[cfg(any(bsd, target_os = "espidf", target_os = "haiku", target_os = "nto"))] sa_len: 0_u8, - #[cfg(any(bsd, target_os = "haiku"))] + #[cfg(any(bsd, target_os = "espidf", target_os = "haiku", target_os = "nto"))] sa_family: 0_u8, - #[cfg(not(any(bsd, target_os = "haiku")))] + #[cfg(not(any(bsd, target_os = "espidf", target_os = "haiku", target_os = "nto")))] sa_family: 0_u16, #[cfg(not(target_os = "haiku"))] sa_data: [0; 14], @@ -44,6 +47,11 @@ (*storage.cast::()).ss_family = c::AF_UNSPEC as _; } +/// Read a socket address encoded in a platform-specific format. +/// +/// # Safety +/// +/// `storage` must point to valid socket address storage. pub(crate) unsafe fn read_sockaddr( storage: *const c::sockaddr_storage, len: usize, diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/net/send_recv.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/net/send_recv.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/net/send_recv.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/net/send_recv.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -use super::super::c; +use crate::backend::c; use bitflags::bitflags; bitflags! { @@ -6,36 +6,41 @@ /// /// [`send`]: crate::net::send /// [`sendto`]: crate::net::sendto - pub struct SendFlags: i32 { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct SendFlags: u32 { /// `MSG_CONFIRM` #[cfg(not(any( bsd, solarish, windows, + target_os = "espidf", + target_os = "nto", target_os = "haiku", )))] - const CONFIRM = c::MSG_CONFIRM; + const CONFIRM = bitcast!(c::MSG_CONFIRM); /// `MSG_DONTROUTE` - const DONTROUTE = c::MSG_DONTROUTE; + const DONTROUTE = bitcast!(c::MSG_DONTROUTE); /// `MSG_DONTWAIT` #[cfg(not(windows))] - const DONTWAIT = c::MSG_DONTWAIT; + const DONTWAIT = bitcast!(c::MSG_DONTWAIT); /// `MSG_EOR` #[cfg(not(windows))] - const EOT = c::MSG_EOR; + const EOT = bitcast!(c::MSG_EOR); /// `MSG_MORE` #[cfg(not(any( bsd, solarish, windows, target_os = "haiku", + target_os = "nto", )))] - const MORE = c::MSG_MORE; + const MORE = bitcast!(c::MSG_MORE); #[cfg(not(any(apple, windows)))] /// `MSG_NOSIGNAL` - const NOSIGNAL = c::MSG_NOSIGNAL; + const NOSIGNAL = bitcast!(c::MSG_NOSIGNAL); /// `MSG_OOB` - const OOB = c::MSG_OOB; + const OOB = bitcast!(c::MSG_OOB); } } @@ -44,28 +49,32 @@ /// /// [`recv`]: crate::net::recv /// [`recvfrom`]: crate::net::recvfrom - pub struct RecvFlags: i32 { - #[cfg(not(any(apple, solarish, windows, target_os = "haiku")))] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct RecvFlags: u32 { + #[cfg(not(any(apple, solarish, windows, target_os = "espidf", target_os = "haiku", target_os = "nto")))] /// `MSG_CMSG_CLOEXEC` - const CMSG_CLOEXEC = c::MSG_CMSG_CLOEXEC; + const CMSG_CLOEXEC = bitcast!(c::MSG_CMSG_CLOEXEC); /// `MSG_DONTWAIT` #[cfg(not(windows))] - const DONTWAIT = c::MSG_DONTWAIT; + const DONTWAIT = bitcast!(c::MSG_DONTWAIT); /// `MSG_ERRQUEUE` #[cfg(not(any( bsd, solarish, windows, + target_os = "espidf", target_os = "haiku", + target_os = "nto", )))] - const ERRQUEUE = c::MSG_ERRQUEUE; + const ERRQUEUE = bitcast!(c::MSG_ERRQUEUE); /// `MSG_OOB` - const OOB = c::MSG_OOB; + const OOB = bitcast!(c::MSG_OOB); /// `MSG_PEEK` - const PEEK = c::MSG_PEEK; + const PEEK = bitcast!(c::MSG_PEEK); /// `MSG_TRUNC` - const TRUNC = c::MSG_TRUNC as c::c_int; + const TRUNC = bitcast!(c::MSG_TRUNC); /// `MSG_WAITALL` - const WAITALL = c::MSG_WAITALL; + const WAITALL = bitcast!(c::MSG_WAITALL); } } diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/net/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/net/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/net/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/net/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,17 +1,16 @@ //! libc syscalls supporting `rustix::net`. -use super::super::c; -use super::super::conv::{borrowed_fd, ret, ret_owned_fd, ret_send_recv, send_recv_len}; #[cfg(unix)] use super::addr::SocketAddrUnix; use super::ext::{in6_addr_new, in_addr_new}; +use crate::backend::c; +use crate::backend::conv::{borrowed_fd, ret, ret_owned_fd, ret_send_recv, send_recv_len}; use crate::fd::{BorrowedFd, OwnedFd}; use crate::io; use crate::net::{SocketAddrAny, SocketAddrV4, SocketAddrV6}; use crate::utils::as_ptr; -use core::convert::TryInto; use core::mem::{size_of, MaybeUninit}; -#[cfg(not(any(windows, target_os = "redox", target_os = "wasi")))] +#[cfg(not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")))] use { super::msghdr::{with_noaddr_msghdr, with_recv_msghdr, with_v4_msghdr, with_v6_msghdr}, crate::io::{IoSlice, IoSliceMut}, @@ -21,8 +20,8 @@ use { super::read_sockaddr::{initialize_family_to_unspec, maybe_read_sockaddr_os, read_sockaddr_os}, super::send_recv::{RecvFlags, SendFlags}, - super::types::{AddressFamily, Protocol, Shutdown, SocketFlags, SocketType}, super::write_sockaddr::{encode_sockaddr_v4, encode_sockaddr_v6}, + crate::net::{AddressFamily, Protocol, Shutdown, SocketFlags, SocketType}, core::ptr::null_mut, }; @@ -33,7 +32,7 @@ borrowed_fd(fd), buf.as_mut_ptr().cast(), send_recv_len(buf.len()), - flags.bits(), + bitflags_bits!(flags), )) } } @@ -45,7 +44,7 @@ borrowed_fd(fd), buf.as_ptr().cast(), send_recv_len(buf.len()), - flags.bits(), + bitflags_bits!(flags), )) } } @@ -69,7 +68,7 @@ borrowed_fd(fd), buf.as_mut_ptr().cast(), send_recv_len(buf.len()), - flags.bits(), + bitflags_bits!(flags), storage.as_mut_ptr().cast(), &mut len, )) @@ -94,7 +93,7 @@ borrowed_fd(fd), buf.as_ptr().cast(), send_recv_len(buf.len()), - flags.bits(), + bitflags_bits!(flags), as_ptr(&encode_sockaddr_v4(addr)).cast::(), size_of::() as _, )) @@ -113,7 +112,7 @@ borrowed_fd(fd), buf.as_ptr().cast(), send_recv_len(buf.len()), - flags.bits(), + bitflags_bits!(flags), as_ptr(&encode_sockaddr_v6(addr)).cast::(), size_of::() as _, )) @@ -132,7 +131,7 @@ borrowed_fd(fd), buf.as_ptr().cast(), send_recv_len(buf.len()), - flags.bits(), + bitflags_bits!(flags), as_ptr(&addr.unix).cast(), addr.addr_len(), )) @@ -143,13 +142,17 @@ pub(crate) fn socket( domain: AddressFamily, type_: SocketType, - protocol: Protocol, + protocol: Option, ) -> io::Result { + let raw_protocol = match protocol { + Some(p) => p.0.get(), + None => 0, + }; unsafe { ret_owned_fd(c::socket( domain.0 as c::c_int, type_.0 as c::c_int, - protocol.0, + raw_protocol as c::c_int, )) } } @@ -159,13 +162,17 @@ domain: AddressFamily, type_: SocketType, flags: SocketFlags, - protocol: Protocol, + protocol: Option, ) -> io::Result { + let raw_protocol = match protocol { + Some(p) => p.0.get(), + None => 0, + }; unsafe { ret_owned_fd(c::socket( domain.0 as c::c_int, - type_.0 as c::c_int | flags.bits(), - protocol.0, + (type_.0 | flags.bits()) as c::c_int, + raw_protocol as c::c_int, )) } } @@ -249,7 +256,7 @@ } } -#[cfg(not(any(windows, target_os = "redox", target_os = "wasi")))] +#[cfg(not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")))] pub(crate) fn recvmsg( sockfd: BorrowedFd<'_>, iov: &mut [IoSliceMut<'_>], @@ -259,8 +266,13 @@ let mut storage = MaybeUninit::::uninit(); with_recv_msghdr(&mut storage, iov, control, |msghdr| { - let result = - unsafe { ret_send_recv(c::recvmsg(borrowed_fd(sockfd), msghdr, msg_flags.bits())) }; + let result = unsafe { + ret_send_recv(c::recvmsg( + borrowed_fd(sockfd), + msghdr, + bitflags_bits!(msg_flags), + )) + }; result.map(|bytes| { // Get the address of the sender, if any. @@ -270,25 +282,29 @@ RecvMsgReturn { bytes, address: addr, - flags: RecvFlags::from_bits_truncate(msghdr.msg_flags), + flags: RecvFlags::from_bits_retain(bitcast!(msghdr.msg_flags)), } }) }) } -#[cfg(not(any(windows, target_os = "redox", target_os = "wasi")))] -pub(crate) fn sendmsg_noaddr( +#[cfg(not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")))] +pub(crate) fn sendmsg( sockfd: BorrowedFd<'_>, iov: &[IoSlice<'_>], control: &mut SendAncillaryBuffer<'_, '_, '_>, msg_flags: SendFlags, ) -> io::Result { with_noaddr_msghdr(iov, control, |msghdr| unsafe { - ret_send_recv(c::sendmsg(borrowed_fd(sockfd), &msghdr, msg_flags.bits())) + ret_send_recv(c::sendmsg( + borrowed_fd(sockfd), + &msghdr, + bitflags_bits!(msg_flags), + )) }) } -#[cfg(not(any(windows, target_os = "redox", target_os = "wasi")))] +#[cfg(not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")))] pub(crate) fn sendmsg_v4( sockfd: BorrowedFd<'_>, addr: &SocketAddrV4, @@ -297,11 +313,15 @@ msg_flags: SendFlags, ) -> io::Result { with_v4_msghdr(addr, iov, control, |msghdr| unsafe { - ret_send_recv(c::sendmsg(borrowed_fd(sockfd), &msghdr, msg_flags.bits())) + ret_send_recv(c::sendmsg( + borrowed_fd(sockfd), + &msghdr, + bitflags_bits!(msg_flags), + )) }) } -#[cfg(not(any(windows, target_os = "redox", target_os = "wasi")))] +#[cfg(not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")))] pub(crate) fn sendmsg_v6( sockfd: BorrowedFd<'_>, addr: &SocketAddrV6, @@ -310,11 +330,15 @@ msg_flags: SendFlags, ) -> io::Result { with_v6_msghdr(addr, iov, control, |msghdr| unsafe { - ret_send_recv(c::sendmsg(borrowed_fd(sockfd), &msghdr, msg_flags.bits())) + ret_send_recv(c::sendmsg( + borrowed_fd(sockfd), + &msghdr, + bitflags_bits!(msg_flags), + )) }) } -#[cfg(all(unix, not(target_os = "redox")))] +#[cfg(all(unix, not(any(target_os = "espidf", target_os = "redox"))))] pub(crate) fn sendmsg_unix( sockfd: BorrowedFd<'_>, addr: &SocketAddrUnix, @@ -323,15 +347,21 @@ msg_flags: SendFlags, ) -> io::Result { super::msghdr::with_unix_msghdr(addr, iov, control, |msghdr| unsafe { - ret_send_recv(c::sendmsg(borrowed_fd(sockfd), &msghdr, msg_flags.bits())) + ret_send_recv(c::sendmsg( + borrowed_fd(sockfd), + &msghdr, + bitflags_bits!(msg_flags), + )) }) } #[cfg(not(any( apple, windows, + target_os = "espidf", target_os = "haiku", target_os = "redox", + target_os = "nto", target_os = "wasi", )))] pub(crate) fn accept_with(sockfd: BorrowedFd<'_>, flags: SocketFlags) -> io::Result { @@ -340,7 +370,7 @@ borrowed_fd(sockfd), null_mut(), null_mut(), - flags.bits(), + flags.bits() as c::c_int, ))?; Ok(owned_fd) } @@ -366,7 +396,9 @@ #[cfg(not(any( apple, windows, + target_os = "espidf", target_os = "haiku", + target_os = "nto", target_os = "redox", target_os = "wasi", )))] @@ -381,7 +413,7 @@ borrowed_fd(sockfd), storage.as_mut_ptr().cast(), &mut len, - flags.bits(), + flags.bits() as c::c_int, ))?; Ok(( owned_fd, @@ -392,14 +424,26 @@ /// Darwin lacks `accept4`, but does have `accept`. We define /// `SocketFlags` to have no flags, so we can discard it here. -#[cfg(any(apple, windows, target_os = "haiku"))] +#[cfg(any( + apple, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto" +))] pub(crate) fn accept_with(sockfd: BorrowedFd<'_>, _flags: SocketFlags) -> io::Result { accept(sockfd) } /// Darwin lacks `accept4`, but does have `accept`. We define /// `SocketFlags` to have no flags, so we can discard it here. -#[cfg(any(apple, windows, target_os = "haiku"))] +#[cfg(any( + apple, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto" +))] pub(crate) fn acceptfrom_with( sockfd: BorrowedFd<'_>, _flags: SocketFlags, @@ -448,14 +492,18 @@ domain: AddressFamily, type_: SocketType, flags: SocketFlags, - protocol: Protocol, + protocol: Option, ) -> io::Result<(OwnedFd, OwnedFd)> { + let raw_protocol = match protocol { + Some(p) => p.0.get(), + None => 0, + }; unsafe { let mut fds = MaybeUninit::<[OwnedFd; 2]>::uninit(); ret(c::socketpair( c::c_int::from(domain.0), - type_.0 as c::c_int | flags.bits(), - protocol.0, + (type_.0 | flags.bits()) as c::c_int, + raw_protocol as c::c_int, fds.as_mut_ptr().cast::(), ))?; @@ -469,16 +517,25 @@ use super::{c, in6_addr_new, in_addr_new, BorrowedFd}; use crate::io; use crate::net::sockopt::Timeout; + #[cfg(not(any( + apple, + solarish, + windows, + target_os = "dragonfly", + target_os = "emscripten", + target_os = "espidf", + target_os = "haiku", + target_os = "netbsd", + target_os = "nto", + target_os = "openbsd" + )))] + use crate::net::AddressFamily; use crate::net::{Ipv4Addr, Ipv6Addr, SocketType}; use crate::utils::as_mut_ptr; - use core::convert::TryInto; use core::time::Duration; #[cfg(windows)] use windows_sys::Win32::Foundation::BOOL; - // TODO: With Rust 1.53 we can use `Duration::ZERO` instead. - const DURATION_ZERO: Duration = Duration::from_secs(0); - #[inline] fn getsockopt(fd: BorrowedFd<'_>, level: i32, optname: i32) -> io::Result { use super::*; @@ -592,12 +649,7 @@ #[inline] pub(crate) fn get_socket_linger(fd: BorrowedFd<'_>) -> io::Result> { let linger: c::linger = getsockopt(fd, c::SOL_SOCKET as _, c::SO_LINGER)?; - // TODO: With Rust 1.50, this could use `.then`. - Ok(if linger.l_onoff != 0 { - Some(Duration::from_secs(linger.l_linger as u64)) - } else { - None - }) + Ok((linger.l_onoff != 0).then(|| Duration::from_secs(linger.l_linger as u64))) } #[cfg(linux_kernel)] @@ -626,7 +678,7 @@ #[cfg(not(windows))] let timeout = match timeout { Some(timeout) => { - if timeout == DURATION_ZERO { + if timeout == Duration::ZERO { return Err(io::Errno::INVAL); } @@ -657,7 +709,7 @@ #[cfg(windows)] let timeout: u32 = match timeout { Some(timeout) => { - if timeout == DURATION_ZERO { + if timeout == Duration::ZERO { return Err(io::Errno::INVAL); } @@ -713,13 +765,13 @@ #[cfg(any(apple, target_os = "freebsd"))] #[inline] - pub(crate) fn getsockopt_nosigpipe(fd: BorrowedFd<'_>) -> io::Result { + pub(crate) fn get_socket_nosigpipe(fd: BorrowedFd<'_>) -> io::Result { getsockopt(fd, c::SOL_SOCKET, c::SO_NOSIGPIPE).map(to_bool) } #[cfg(any(apple, target_os = "freebsd"))] #[inline] - pub(crate) fn setsockopt_nosigpipe(fd: BorrowedFd<'_>, val: bool) -> io::Result<()> { + pub(crate) fn set_socket_nosigpipe(fd: BorrowedFd<'_>, val: bool) -> io::Result<()> { setsockopt(fd, c::SOL_SOCKET, c::SO_NOSIGPIPE, from_bool(val)) } @@ -771,6 +823,26 @@ } #[inline] + #[cfg(not(any( + apple, + solarish, + windows, + target_os = "dragonfly", + target_os = "emscripten", + target_os = "espidf", + target_os = "haiku", + target_os = "netbsd", + target_os = "nto", + target_os = "openbsd" + )))] + pub(crate) fn get_socket_domain(fd: BorrowedFd<'_>) -> io::Result { + let domain: c::c_int = getsockopt(fd, c::SOL_SOCKET as _, c::SO_DOMAIN)?; + Ok(AddressFamily( + domain.try_into().map_err(|_| io::Errno::OPNOTSUPP)?, + )) + } + + #[inline] pub(crate) fn set_ip_ttl(fd: BorrowedFd<'_>, ttl: u32) -> io::Result<()> { setsockopt(fd, c::IPPROTO_IP as _, c::IP_TTL, ttl) } @@ -870,9 +942,21 @@ multiaddr: &Ipv6Addr, interface: u32, ) -> io::Result<()> { - #[cfg(not(any(bsd, solarish, target_os = "haiku", target_os = "l4re")))] + #[cfg(not(any( + bsd, + solarish, + target_os = "haiku", + target_os = "l4re", + target_os = "nto" + )))] use c::IPV6_ADD_MEMBERSHIP; - #[cfg(any(bsd, solarish, target_os = "haiku", target_os = "l4re"))] + #[cfg(any( + bsd, + solarish, + target_os = "haiku", + target_os = "l4re", + target_os = "nto" + ))] use c::IPV6_JOIN_GROUP as IPV6_ADD_MEMBERSHIP; let mreq = to_ipv6mr(multiaddr, interface); @@ -895,9 +979,21 @@ multiaddr: &Ipv6Addr, interface: u32, ) -> io::Result<()> { - #[cfg(not(any(bsd, solarish, target_os = "haiku", target_os = "l4re")))] + #[cfg(not(any( + bsd, + solarish, + target_os = "haiku", + target_os = "l4re", + target_os = "nto" + )))] use c::IPV6_DROP_MEMBERSHIP; - #[cfg(any(bsd, solarish, target_os = "haiku", target_os = "l4re"))] + #[cfg(any( + bsd, + solarish, + target_os = "haiku", + target_os = "l4re", + target_os = "nto" + ))] use c::IPV6_LEAVE_GROUP as IPV6_DROP_MEMBERSHIP; let mreq = to_ipv6mr(multiaddr, interface); diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/net/types.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/net/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/net/types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/net/types.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,499 +0,0 @@ -use super::super::c; -use bitflags::bitflags; - -/// A type for holding raw integer socket types. -#[doc(hidden)] -pub type RawSocketType = u32; - -/// `SOCK_*` constants for use with [`socket`]. -/// -/// [`socket`]: crate::net::socket -#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] -#[repr(transparent)] -pub struct SocketType(pub(crate) RawSocketType); - -#[rustfmt::skip] -impl SocketType { - /// `SOCK_STREAM` - pub const STREAM: Self = Self(c::SOCK_STREAM as u32); - - /// `SOCK_DGRAM` - pub const DGRAM: Self = Self(c::SOCK_DGRAM as u32); - - /// `SOCK_SEQPACKET` - pub const SEQPACKET: Self = Self(c::SOCK_SEQPACKET as u32); - - /// `SOCK_RAW` - pub const RAW: Self = Self(c::SOCK_RAW as u32); - - /// `SOCK_RDM` - #[cfg(not(target_os = "haiku"))] - pub const RDM: Self = Self(c::SOCK_RDM as u32); - - /// Constructs a `SocketType` from a raw integer. - #[inline] - pub const fn from_raw(raw: RawSocketType) -> Self { - Self(raw) - } - - /// Returns the raw integer for this `SocketType`. - #[inline] - pub const fn as_raw(self) -> RawSocketType { - self.0 - } -} - -/// A type for holding raw integer address families. -#[doc(hidden)] -pub type RawAddressFamily = c::sa_family_t; - -/// `AF_*` constants. -#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] -#[repr(transparent)] -pub struct AddressFamily(pub(crate) RawAddressFamily); - -#[rustfmt::skip] -#[allow(non_upper_case_globals)] -impl AddressFamily { - /// `AF_UNSPEC` - pub const UNSPEC: Self = Self(c::AF_UNSPEC as _); - /// `AF_INET` - pub const INET: Self = Self(c::AF_INET as _); - /// `AF_INET6` - pub const INET6: Self = Self(c::AF_INET6 as _); - /// `AF_NETLINK` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const NETLINK: Self = Self(c::AF_NETLINK as _); - /// `AF_UNIX`, aka `AF_LOCAL` - #[doc(alias = "LOCAL")] - pub const UNIX: Self = Self(c::AF_UNIX as _); - /// `AF_AX25` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const AX25: Self = Self(c::AF_AX25 as _); - /// `AF_IPX` - pub const IPX: Self = Self(c::AF_IPX as _); - /// `AF_APPLETALK` - pub const APPLETALK: Self = Self(c::AF_APPLETALK as _); - /// `AF_NETROM` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const NETROM: Self = Self(c::AF_NETROM as _); - /// `AF_BRIDGE` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const BRIDGE: Self = Self(c::AF_BRIDGE as _); - /// `AF_ATMPVC` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const ATMPVC: Self = Self(c::AF_ATMPVC as _); - /// `AF_X25` - #[cfg(not(any( - bsd, - windows, - target_os = "haiku", - )))] - pub const X25: Self = Self(c::AF_X25 as _); - /// `AF_ROSE` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const ROSE: Self = Self(c::AF_ROSE as _); - /// `AF_DECnet` - #[cfg(not(target_os = "haiku"))] - pub const DECnet: Self = Self(c::AF_DECnet as _); - /// `AF_NETBEUI` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const NETBEUI: Self = Self(c::AF_NETBEUI as _); - /// `AF_SECURITY` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const SECURITY: Self = Self(c::AF_SECURITY as _); - /// `AF_KEY` - #[cfg(not(any( - bsd, - windows, - target_os = "haiku", - )))] - pub const KEY: Self = Self(c::AF_KEY as _); - /// `AF_PACKET` - #[cfg(not(any( - bsd, - windows, - target_os = "haiku", - )))] - pub const PACKET: Self = Self(c::AF_PACKET as _); - /// `AF_ASH` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const ASH: Self = Self(c::AF_ASH as _); - /// `AF_ECONET` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const ECONET: Self = Self(c::AF_ECONET as _); - /// `AF_ATMSVC` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const ATMSVC: Self = Self(c::AF_ATMSVC as _); - /// `AF_RDS` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const RDS: Self = Self(c::AF_RDS as _); - /// `AF_SNA` - #[cfg(not(target_os = "haiku"))] - pub const SNA: Self = Self(c::AF_SNA as _); - /// `AF_IRDA` - #[cfg(not(any( - bsd, - solarish, - target_os = "haiku", - )))] - pub const IRDA: Self = Self(c::AF_IRDA as _); - /// `AF_PPPOX` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const PPPOX: Self = Self(c::AF_PPPOX as _); - /// `AF_WANPIPE` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const WANPIPE: Self = Self(c::AF_WANPIPE as _); - /// `AF_LLC` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const LLC: Self = Self(c::AF_LLC as _); - /// `AF_CAN` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const CAN: Self = Self(c::AF_CAN as _); - /// `AF_TIPC` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const TIPC: Self = Self(c::AF_TIPC as _); - /// `AF_BLUETOOTH` - #[cfg(not(any(apple, solarish, windows)))] - pub const BLUETOOTH: Self = Self(c::AF_BLUETOOTH as _); - /// `AF_IUCV` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const IUCV: Self = Self(c::AF_IUCV as _); - /// `AF_RXRPC` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const RXRPC: Self = Self(c::AF_RXRPC as _); - /// `AF_ISDN` - #[cfg(not(any(solarish, windows, target_os = "haiku")))] - pub const ISDN: Self = Self(c::AF_ISDN as _); - /// `AF_PHONET` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const PHONET: Self = Self(c::AF_PHONET as _); - /// `AF_IEEE802154` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const IEEE802154: Self = Self(c::AF_IEEE802154 as _); - - /// Constructs a `AddressFamily` from a raw integer. - #[inline] - pub const fn from_raw(raw: RawAddressFamily) -> Self { - Self(raw) - } - - /// Returns the raw integer for this `AddressFamily`. - #[inline] - pub const fn as_raw(self) -> RawAddressFamily { - self.0 - } -} - -/// A type for holding raw integer protocols. -#[doc(hidden)] -pub type RawProtocol = i32; - -/// `IPPROTO_*` constants for use with [`socket`] and [`socket_with`]. -/// -/// [`socket`]: crate::net::socket -/// [`socket_with`]: crate::net::socket_with -#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] -#[repr(transparent)] -pub struct Protocol(pub(crate) RawProtocol); - -#[rustfmt::skip] -impl Protocol { - /// `IPPROTO_IP` - pub const IP: Self = Self(c::IPPROTO_IP as _); - /// `IPPROTO_ICMP` - pub const ICMP: Self = Self(c::IPPROTO_ICMP as _); - /// `IPPROTO_IGMP` - #[cfg(not(any(solarish, target_os = "haiku")))] - pub const IGMP: Self = Self(c::IPPROTO_IGMP as _); - /// `IPPROTO_IPIP` - #[cfg(not(any(solarish, windows, target_os = "haiku")))] - pub const IPIP: Self = Self(c::IPPROTO_IPIP as _); - /// `IPPROTO_TCP` - pub const TCP: Self = Self(c::IPPROTO_TCP as _); - /// `IPPROTO_EGP` - #[cfg(not(any(solarish, target_os = "haiku")))] - pub const EGP: Self = Self(c::IPPROTO_EGP as _); - /// `IPPROTO_PUP` - #[cfg(not(any(solarish, target_os = "haiku")))] - pub const PUP: Self = Self(c::IPPROTO_PUP as _); - /// `IPPROTO_UDP` - pub const UDP: Self = Self(c::IPPROTO_UDP as _); - /// `IPPROTO_IDP` - #[cfg(not(any(solarish, target_os = "haiku")))] - pub const IDP: Self = Self(c::IPPROTO_IDP as _); - /// `IPPROTO_TP` - #[cfg(not(any(solarish, windows, target_os = "haiku")))] - pub const TP: Self = Self(c::IPPROTO_TP as _); - /// `IPPROTO_DCCP` - #[cfg(not(any( - apple, - solarish, - windows, - target_os = "dragonfly", - target_os = "haiku", - target_os = "openbsd", - )))] - pub const DCCP: Self = Self(c::IPPROTO_DCCP as _); - /// `IPPROTO_IPV6` - pub const IPV6: Self = Self(c::IPPROTO_IPV6 as _); - /// `IPPROTO_RSVP` - #[cfg(not(any(solarish, windows, target_os = "haiku")))] - pub const RSVP: Self = Self(c::IPPROTO_RSVP as _); - /// `IPPROTO_GRE` - #[cfg(not(any(solarish, windows, target_os = "haiku")))] - pub const GRE: Self = Self(c::IPPROTO_GRE as _); - /// `IPPROTO_ESP` - #[cfg(not(any(solarish, target_os = "haiku")))] - pub const ESP: Self = Self(c::IPPROTO_ESP as _); - /// `IPPROTO_AH` - #[cfg(not(any(solarish, target_os = "haiku")))] - pub const AH: Self = Self(c::IPPROTO_AH as _); - /// `IPPROTO_MTP` - #[cfg(not(any( - solarish, - netbsdlike, - windows, - target_os = "haiku", - )))] - pub const MTP: Self = Self(c::IPPROTO_MTP as _); - /// `IPPROTO_BEETPH` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const BEETPH: Self = Self(c::IPPROTO_BEETPH as _); - /// `IPPROTO_ENCAP` - #[cfg(not(any(solarish, windows, target_os = "haiku")))] - pub const ENCAP: Self = Self(c::IPPROTO_ENCAP as _); - /// `IPPROTO_PIM` - #[cfg(not(any(solarish, target_os = "haiku")))] - pub const PIM: Self = Self(c::IPPROTO_PIM as _); - /// `IPPROTO_COMP` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "haiku", - )))] - pub const COMP: Self = Self(c::IPPROTO_COMP as _); - /// `IPPROTO_SCTP` - #[cfg(not(any(solarish, target_os = "dragonfly", target_os = "haiku", target_os = "openbsd")))] - pub const SCTP: Self = Self(c::IPPROTO_SCTP as _); - /// `IPPROTO_UDPLITE` - #[cfg(not(any( - apple, - netbsdlike, - solarish, - windows, - target_os = "dragonfly", - target_os = "haiku", - )))] - pub const UDPLITE: Self = Self(c::IPPROTO_UDPLITE as _); - /// `IPPROTO_MPLS` - #[cfg(not(any( - apple, - solarish, - windows, - target_os = "dragonfly", - target_os = "haiku", - target_os = "netbsd", - )))] - pub const MPLS: Self = Self(c::IPPROTO_MPLS as _); - /// `IPPROTO_RAW` - pub const RAW: Self = Self(c::IPPROTO_RAW as _); - /// `IPPROTO_MPTCP` - #[cfg(not(any( - bsd, - solarish, - windows, - target_os = "emscripten", - target_os = "fuchsia", - target_os = "haiku", - )))] - pub const MPTCP: Self = Self(c::IPPROTO_MPTCP as _); - /// `IPPROTO_FRAGMENT` - #[cfg(not(any(solarish, target_os = "haiku")))] - pub const FRAGMENT: Self = Self(c::IPPROTO_FRAGMENT as _); - /// `IPPROTO_ICMPV6` - pub const ICMPV6: Self = Self(c::IPPROTO_ICMPV6 as _); - /// `IPPROTO_MH` - #[cfg(not(any( - apple, - netbsdlike, - solarish, - windows, - target_os = "dragonfly", - target_os = "haiku", - )))] - pub const MH: Self = Self(c::IPPROTO_MH as _); - /// `IPPROTO_ROUTING` - #[cfg(not(any(solarish, target_os = "haiku")))] - pub const ROUTING: Self = Self(c::IPPROTO_ROUTING as _); - - /// Constructs a `Protocol` from a raw integer. - #[inline] - pub const fn from_raw(raw: RawProtocol) -> Self { - Self(raw) - } - - /// Returns the raw integer for this `Protocol`. - #[inline] - pub const fn as_raw(self) -> RawProtocol { - self.0 - } -} - -/// `SHUT_*` constants for use with [`shutdown`]. -/// -/// [`shutdown`]: crate::net::shutdown -#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] -#[repr(i32)] -pub enum Shutdown { - /// `SHUT_RD`—Disable further read operations. - Read = c::SHUT_RD, - /// `SHUT_WR`—Disable further write operations. - Write = c::SHUT_WR, - /// `SHUT_RDWR`—Disable further read and write operations. - ReadWrite = c::SHUT_RDWR, -} - -bitflags! { - /// `SOCK_*` constants for use with [`socket_with`], [`accept_with`] and - /// [`acceptfrom_with`]. - /// - /// [`socket_with`]: crate::net::socket_with - /// [`accept_with`]: crate::net::accept_with - /// [`acceptfrom_with`]: crate::net::acceptfrom_with - pub struct SocketFlags: c::c_int { - /// `SOCK_NONBLOCK` - #[cfg(not(any(apple, windows, target_os = "haiku")))] - const NONBLOCK = c::SOCK_NONBLOCK; - - /// `SOCK_CLOEXEC` - #[cfg(not(any(apple, windows, target_os = "haiku")))] - const CLOEXEC = c::SOCK_CLOEXEC; - } -} - -/// Timeout identifier for use with [`set_socket_timeout`] and -/// [`get_socket_timeout`]. -/// -/// [`set_socket_timeout`]: crate::net::sockopt::set_socket_timeout. -/// [`get_socket_timeout`]: crate::net::sockopt::get_socket_timeout. -#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] -#[repr(i32)] -pub enum Timeout { - /// `SO_RCVTIMEO`—Timeout for receiving. - Recv = c::SO_RCVTIMEO, - - /// `SO_SNDTIMEO`—Timeout for sending. - Send = c::SO_SNDTIMEO, -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/net/write_sockaddr.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/net/write_sockaddr.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/net/write_sockaddr.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/net/write_sockaddr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,11 +1,11 @@ //! The BSD sockets API requires us to read the `ss_family` field before //! we can interpret the rest of a `sockaddr` produced by the kernel. -use super::super::c; use super::addr::SocketAddrStorage; #[cfg(unix)] use super::addr::SocketAddrUnix; use super::ext::{in6_addr_new, in_addr_new, sockaddr_in6_new}; +use crate::backend::c; use crate::net::{SocketAddrAny, SocketAddrV4, SocketAddrV6}; use core::mem::size_of; @@ -21,9 +21,9 @@ } } -pub(crate) unsafe fn encode_sockaddr_v4(v4: &SocketAddrV4) -> c::sockaddr_in { +pub(crate) fn encode_sockaddr_v4(v4: &SocketAddrV4) -> c::sockaddr_in { c::sockaddr_in { - #[cfg(any(bsd, target_os = "haiku"))] + #[cfg(any(bsd, target_os = "espidf", target_os = "haiku", target_os = "nto"))] sin_len: size_of::() as _, sin_family: c::AF_INET as _, sin_port: u16::to_be(v4.port()), @@ -41,8 +41,8 @@ size_of::() } -pub(crate) unsafe fn encode_sockaddr_v6(v6: &SocketAddrV6) -> c::sockaddr_in6 { - #[cfg(any(bsd, target_os = "haiku"))] +pub(crate) fn encode_sockaddr_v6(v6: &SocketAddrV6) -> c::sockaddr_in6 { + #[cfg(any(bsd, target_os = "espidf", target_os = "haiku", target_os = "nto"))] { sockaddr_in6_new( size_of::() as _, @@ -53,7 +53,7 @@ v6.scope_id(), ) } - #[cfg(not(any(bsd, target_os = "haiku")))] + #[cfg(not(any(bsd, target_os = "espidf", target_os = "haiku", target_os = "nto")))] { sockaddr_in6_new( c::AF_INET6 as _, diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/offset.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/offset.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/offset.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/offset.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,403 +0,0 @@ -//! Automatically enable “large file†support features. - -#[cfg(not(windows))] -use super::c; - -#[cfg(not(any(linux_like, windows)))] -#[cfg(feature = "fs")] -pub(super) use c::{ - fstat as libc_fstat, fstatat as libc_fstatat, ftruncate as libc_ftruncate, ino_t as libc_ino_t, - lseek as libc_lseek, off_t as libc_off_t, -}; - -#[cfg(linux_like)] -#[cfg(feature = "fs")] -pub(super) use c::{ - fstat64 as libc_fstat, fstatat64 as libc_fstatat, ftruncate64 as libc_ftruncate, - ino64_t as libc_ino_t, lseek64 as libc_lseek, off64_t as libc_off_t, -}; - -#[cfg(linux_like)] -pub(super) use c::rlimit64 as libc_rlimit; - -#[cfg(not(any(linux_like, windows, target_os = "wasi")))] -#[cfg(feature = "mm")] -pub(super) use c::mmap as libc_mmap; - -#[cfg(not(any( - linux_like, - windows, - target_os = "fuchsia", - target_os = "redox", - target_os = "wasi", -)))] -pub(super) use c::{rlimit as libc_rlimit, RLIM_INFINITY as LIBC_RLIM_INFINITY}; - -#[cfg(not(any(linux_like, windows, target_os = "fuchsia", target_os = "wasi")))] -pub(super) use c::{getrlimit as libc_getrlimit, setrlimit as libc_setrlimit}; - -#[cfg(linux_like)] -pub(super) use c::{ - getrlimit64 as libc_getrlimit, setrlimit64 as libc_setrlimit, - RLIM64_INFINITY as LIBC_RLIM_INFINITY, -}; - -#[cfg(linux_like)] -#[cfg(feature = "mm")] -pub(super) use c::mmap64 as libc_mmap; - -// `prlimit64` wasn't supported in glibc until 2.13. -#[cfg(all(target_os = "linux", target_env = "gnu"))] -weak_or_syscall! { - fn prlimit64( - pid: c::pid_t, - resource: c::__rlimit_resource_t, - new_limit: *const c::rlimit64, - old_limit: *mut c::rlimit64 - ) via SYS_prlimit64 -> c::c_int -} -#[cfg(all(target_os = "linux", target_env = "musl"))] -weak_or_syscall! { - fn prlimit64( - pid: c::pid_t, - resource: c::c_int, - new_limit: *const c::rlimit64, - old_limit: *mut c::rlimit64 - ) via SYS_prlimit64 -> c::c_int -} -#[cfg(target_os = "android")] -weak_or_syscall! { - fn prlimit64( - pid: c::pid_t, - resource: c::c_int, - new_limit: *const c::rlimit64, - old_limit: *mut c::rlimit64 - ) via SYS_prlimit64 -> c::c_int -} -#[cfg(all(target_os = "linux", target_env = "gnu"))] -pub(super) unsafe fn libc_prlimit( - pid: c::pid_t, - resource: c::__rlimit_resource_t, - new_limit: *const c::rlimit64, - old_limit: *mut c::rlimit64, -) -> c::c_int { - prlimit64(pid, resource, new_limit, old_limit) -} -#[cfg(all(target_os = "linux", target_env = "musl"))] -pub(super) unsafe fn libc_prlimit( - pid: c::pid_t, - resource: c::c_int, - new_limit: *const c::rlimit64, - old_limit: *mut c::rlimit64, -) -> c::c_int { - prlimit64(pid, resource, new_limit, old_limit) -} -#[cfg(target_os = "android")] -pub(super) unsafe fn libc_prlimit( - pid: c::pid_t, - resource: c::c_int, - new_limit: *const c::rlimit64, - old_limit: *mut c::rlimit64, -) -> c::c_int { - prlimit64(pid, resource, new_limit, old_limit) -} - -#[cfg(not(any(linux_like, windows, target_os = "redox")))] -#[cfg(feature = "fs")] -pub(super) use c::openat as libc_openat; -#[cfg(linux_like)] -#[cfg(feature = "fs")] -pub(super) use c::openat64 as libc_openat; - -#[cfg(target_os = "fuchsia")] -#[cfg(feature = "fs")] -pub(super) use c::fallocate as libc_fallocate; -#[cfg(linux_kernel)] -#[cfg(feature = "fs")] -pub(super) use c::fallocate64 as libc_fallocate; -#[cfg(not(any( - apple, - linux_like, - netbsdlike, - solarish, - windows, - target_os = "dragonfly", - target_os = "haiku", - target_os = "redox", -)))] -#[cfg(feature = "fs")] -pub(super) use c::posix_fadvise as libc_posix_fadvise; -#[cfg(linux_like)] -#[cfg(feature = "fs")] -pub(super) use c::posix_fadvise64 as libc_posix_fadvise; - -#[cfg(not(any(linux_kernel, windows, target_os = "emscripten")))] -pub(super) use c::{pread as libc_pread, pwrite as libc_pwrite}; -#[cfg(any(linux_kernel, target_os = "emscripten"))] -pub(super) use c::{pread64 as libc_pread, pwrite64 as libc_pwrite}; -#[cfg(not(any( - apple, - linux_kernel, - windows, - target_os = "emscripten", - target_os = "haiku", - target_os = "redox", - target_os = "solaris", -)))] -pub(super) use c::{preadv as libc_preadv, pwritev as libc_pwritev}; -#[cfg(any(target_os = "linux", target_os = "emscripten"))] -pub(super) use c::{preadv64 as libc_preadv, pwritev64 as libc_pwritev}; - -#[cfg(target_os = "android")] -mod readwrite_pv64 { - use super::c; - - // 64-bit offsets on 32-bit platforms are passed in endianness-specific - // lo/hi pairs. See src/backend/linux_raw/conv.rs for details. - #[cfg(all(target_endian = "little", target_pointer_width = "32"))] - fn lo(x: u64) -> usize { - (x >> 32) as usize - } - #[cfg(all(target_endian = "little", target_pointer_width = "32"))] - fn hi(x: u64) -> usize { - (x & 0xffff_ffff) as usize - } - #[cfg(all(target_endian = "big", target_pointer_width = "32"))] - fn lo(x: u64) -> usize { - (x & 0xffff_ffff) as usize - } - #[cfg(all(target_endian = "big", target_pointer_width = "32"))] - fn hi(x: u64) -> usize { - (x >> 32) as usize - } - - pub(in super::super) unsafe fn preadv64( - fd: c::c_int, - iov: *const c::iovec, - iovcnt: c::c_int, - offset: c::off64_t, - ) -> c::ssize_t { - // Older Android libc lacks `preadv64`, so use the `weak!` mechanism to - // test for it, and call back to `c::syscall`. We don't use - // `weak_or_syscall` here because we need to pass the 64-bit offset - // specially. - weak! { - fn preadv64(c::c_int, *const c::iovec, c::c_int, c::off64_t) -> c::ssize_t - } - if let Some(fun) = preadv64.get() { - fun(fd, iov, iovcnt, offset) - } else { - #[cfg(target_pointer_width = "32")] - { - c::syscall( - c::SYS_preadv, - fd, - iov, - iovcnt, - hi(offset as u64), - lo(offset as u64), - ) as c::ssize_t - } - #[cfg(target_pointer_width = "64")] - { - c::syscall(c::SYS_preadv, fd, iov, iovcnt, offset) as c::ssize_t - } - } - } - pub(in super::super) unsafe fn pwritev64( - fd: c::c_int, - iov: *const c::iovec, - iovcnt: c::c_int, - offset: c::off64_t, - ) -> c::ssize_t { - // See the comments in `preadv64`. - weak! { - fn pwritev64(c::c_int, *const c::iovec, c::c_int, c::off64_t) -> c::ssize_t - } - if let Some(fun) = pwritev64.get() { - fun(fd, iov, iovcnt, offset) - } else { - #[cfg(target_pointer_width = "32")] - { - c::syscall( - c::SYS_pwritev, - fd, - iov, - iovcnt, - hi(offset as u64), - lo(offset as u64), - ) as c::ssize_t - } - #[cfg(target_pointer_width = "64")] - { - c::syscall(c::SYS_pwritev, fd, iov, iovcnt, offset) as c::ssize_t - } - } - } -} -#[cfg(target_os = "android")] -pub(super) use readwrite_pv64::{preadv64 as libc_preadv, pwritev64 as libc_pwritev}; - -// macOS added preadv and pwritev in version 11.0 -#[cfg(apple)] -mod readwrite_pv { - use super::c; - - weakcall! { - pub(in super::super) fn preadv( - fd: c::c_int, - iov: *const c::iovec, - iovcnt: c::c_int, - offset: c::off_t - ) -> c::ssize_t - } - weakcall! { - pub(in super::super) fn pwritev( - fd: c::c_int, - iov: *const c::iovec, - iovcnt: c::c_int, offset: c::off_t - ) -> c::ssize_t - } -} -#[cfg(apple)] -pub(super) use readwrite_pv::{preadv as libc_preadv, pwritev as libc_pwritev}; - -// glibc added `preadv64v2` and `pwritev64v2` in version 2.26. -#[cfg(all(target_os = "linux", target_env = "gnu"))] -mod readwrite_pv64v2 { - use super::c; - - // 64-bit offsets on 32-bit platforms are passed in endianness-specific - // lo/hi pairs. See src/backend/linux_raw/conv.rs for details. - #[cfg(all(target_endian = "little", target_pointer_width = "32"))] - fn lo(x: u64) -> usize { - (x >> 32) as usize - } - #[cfg(all(target_endian = "little", target_pointer_width = "32"))] - fn hi(x: u64) -> usize { - (x & 0xffff_ffff) as usize - } - #[cfg(all(target_endian = "big", target_pointer_width = "32"))] - fn lo(x: u64) -> usize { - (x & 0xffff_ffff) as usize - } - #[cfg(all(target_endian = "big", target_pointer_width = "32"))] - fn hi(x: u64) -> usize { - (x >> 32) as usize - } - - pub(in super::super) unsafe fn preadv64v2( - fd: c::c_int, - iov: *const c::iovec, - iovcnt: c::c_int, - offset: c::off64_t, - flags: c::c_int, - ) -> c::ssize_t { - // Older glibc lacks `preadv64v2`, so use the `weak!` mechanism to - // test for it, and call back to `c::syscall`. We don't use - // `weak_or_syscall` here because we need to pass the 64-bit offset - // specially. - weak! { - fn preadv64v2(c::c_int, *const c::iovec, c::c_int, c::off64_t, c::c_int) -> c::ssize_t - } - if let Some(fun) = preadv64v2.get() { - fun(fd, iov, iovcnt, offset, flags) - } else { - #[cfg(target_pointer_width = "32")] - { - c::syscall( - c::SYS_preadv, - fd, - iov, - iovcnt, - hi(offset as u64), - lo(offset as u64), - flags, - ) as c::ssize_t - } - #[cfg(target_pointer_width = "64")] - { - c::syscall(c::SYS_preadv2, fd, iov, iovcnt, offset, flags) as c::ssize_t - } - } - } - pub(in super::super) unsafe fn pwritev64v2( - fd: c::c_int, - iov: *const c::iovec, - iovcnt: c::c_int, - offset: c::off64_t, - flags: c::c_int, - ) -> c::ssize_t { - // See the comments in `preadv64v2`. - weak! { - fn pwritev64v2(c::c_int, *const c::iovec, c::c_int, c::off64_t, c::c_int) -> c::ssize_t - } - if let Some(fun) = pwritev64v2.get() { - fun(fd, iov, iovcnt, offset, flags) - } else { - #[cfg(target_pointer_width = "32")] - { - c::syscall( - c::SYS_pwritev, - fd, - iov, - iovcnt, - hi(offset as u64), - lo(offset as u64), - flags, - ) as c::ssize_t - } - #[cfg(target_pointer_width = "64")] - { - c::syscall(c::SYS_pwritev2, fd, iov, iovcnt, offset, flags) as c::ssize_t - } - } - } -} -#[cfg(all(target_os = "linux", target_env = "gnu"))] -pub(super) use readwrite_pv64v2::{preadv64v2 as libc_preadv2, pwritev64v2 as libc_pwritev2}; - -#[cfg(not(any( - apple, - linux_kernel, - netbsdlike, - solarish, - windows, - target_os = "aix", - target_os = "dragonfly", - target_os = "fuchsia", - target_os = "l4re", - target_os = "redox", -)))] -#[cfg(feature = "fs")] -pub(super) use c::posix_fallocate as libc_posix_fallocate; -#[cfg(target_os = "l4re")] -#[cfg(feature = "fs")] -pub(super) use c::posix_fallocate64 as libc_posix_fallocate; -#[cfg(not(any( - linux_like, - solarish, - windows, - target_os = "haiku", - target_os = "netbsd", - target_os = "redox", - target_os = "wasi", -)))] -#[cfg(feature = "fs")] -pub(super) use {c::fstatfs as libc_fstatfs, c::statfs as libc_statfs}; -#[cfg(not(any( - linux_like, - windows, - target_os = "haiku", - target_os = "redox", - target_os = "wasi", -)))] -#[cfg(feature = "fs")] -pub(super) use {c::fstatvfs as libc_fstatvfs, c::statvfs as libc_statvfs}; - -#[cfg(linux_like)] -#[cfg(feature = "fs")] -pub(super) use { - c::fstatfs64 as libc_fstatfs, c::fstatvfs64 as libc_fstatvfs, c::statfs64 as libc_statfs, - c::statvfs64 as libc_statvfs, -}; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/param/auxv.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/param/auxv.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/param/auxv.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/param/auxv.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -use super::super::c; +use crate::backend::c; #[cfg(any( all(target_os = "android", target_pointer_width = "64"), target_os = "linux", diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/pid/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/pid/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/pid/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/pid/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +pub(crate) mod syscalls; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/pid/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/pid/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/pid/syscalls.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/pid/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,14 @@ +//! libc syscalls for PIDs + +use crate::backend::c; +use crate::pid::Pid; + +#[cfg(not(target_os = "wasi"))] +#[inline] +#[must_use] +pub(crate) fn getpid() -> Pid { + unsafe { + let pid = c::getpid(); + Pid::from_raw_unchecked(pid) + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/pipe/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/pipe/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/pipe/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/pipe/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,2 @@ +pub(crate) mod syscalls; +pub(crate) mod types; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/pipe/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/pipe/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/pipe/syscalls.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/pipe/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,125 @@ +use crate::backend::c; +use crate::backend::conv::ret; +use crate::fd::OwnedFd; +use crate::io; +#[cfg(not(any( + apple, + target_os = "aix", + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + target_os = "wasi" +)))] +use crate::pipe::PipeFlags; +use core::mem::MaybeUninit; +#[cfg(linux_kernel)] +use { + crate::backend::conv::{borrowed_fd, ret_c_int, ret_usize}, + crate::backend::MAX_IOV, + crate::fd::BorrowedFd, + crate::pipe::{IoSliceRaw, SpliceFlags}, + crate::utils::option_as_mut_ptr, + core::cmp::min, +}; + +#[cfg(not(target_os = "wasi"))] +pub(crate) fn pipe() -> io::Result<(OwnedFd, OwnedFd)> { + unsafe { + let mut result = MaybeUninit::<[OwnedFd; 2]>::uninit(); + ret(c::pipe(result.as_mut_ptr().cast::()))?; + let [p0, p1] = result.assume_init(); + Ok((p0, p1)) + } +} + +#[cfg(not(any( + apple, + target_os = "aix", + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + target_os = "wasi" +)))] +pub(crate) fn pipe_with(flags: PipeFlags) -> io::Result<(OwnedFd, OwnedFd)> { + unsafe { + let mut result = MaybeUninit::<[OwnedFd; 2]>::uninit(); + ret(c::pipe2( + result.as_mut_ptr().cast::(), + bitflags_bits!(flags), + ))?; + let [p0, p1] = result.assume_init(); + Ok((p0, p1)) + } +} + +#[cfg(linux_kernel)] +#[inline] +pub fn splice( + fd_in: BorrowedFd, + off_in: Option<&mut u64>, + fd_out: BorrowedFd, + off_out: Option<&mut u64>, + len: usize, + flags: SpliceFlags, +) -> io::Result { + let off_in = option_as_mut_ptr(off_in).cast(); + let off_out = option_as_mut_ptr(off_out).cast(); + + unsafe { + ret_usize(c::splice( + borrowed_fd(fd_in), + off_in, + borrowed_fd(fd_out), + off_out, + len, + flags.bits(), + )) + } +} + +#[cfg(linux_kernel)] +#[inline] +pub unsafe fn vmsplice( + fd: BorrowedFd, + bufs: &[IoSliceRaw], + flags: SpliceFlags, +) -> io::Result { + ret_usize(c::vmsplice( + borrowed_fd(fd), + bufs.as_ptr().cast::(), + min(bufs.len(), MAX_IOV), + flags.bits(), + )) +} + +#[cfg(linux_kernel)] +#[inline] +pub fn tee( + fd_in: BorrowedFd, + fd_out: BorrowedFd, + len: usize, + flags: SpliceFlags, +) -> io::Result { + unsafe { + ret_usize(c::tee( + borrowed_fd(fd_in), + borrowed_fd(fd_out), + len, + flags.bits(), + )) + } +} + +#[cfg(linux_kernel)] +#[inline] +pub(crate) fn fcntl_getpipe_sz(fd: BorrowedFd<'_>) -> io::Result { + unsafe { ret_c_int(c::fcntl(borrowed_fd(fd), c::F_GETPIPE_SZ)).map(|size| size as usize) } +} + +#[cfg(linux_kernel)] +#[inline] +pub(crate) fn fcntl_setpipe_sz(fd: BorrowedFd<'_>, size: usize) -> io::Result<()> { + let size: c::c_int = size.try_into().map_err(|_| io::Errno::PERM)?; + + unsafe { ret(c::fcntl(borrowed_fd(fd), c::F_SETPIPE_SZ, size)) } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/pipe/types.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/pipe/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/pipe/types.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/pipe/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,94 @@ +#[cfg(linux_kernel)] +use core::marker::PhantomData; +#[cfg(not(any(apple, target_os = "wasi")))] +use {crate::backend::c, bitflags::bitflags}; + +#[cfg(not(any(apple, target_os = "wasi")))] +bitflags! { + /// `O_*` constants for use with [`pipe_with`]. + /// + /// [`pipe_with`]: crate::io::pipe_with + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct PipeFlags: u32 { + /// `O_CLOEXEC` + const CLOEXEC = bitcast!(c::O_CLOEXEC); + /// `O_DIRECT` + #[cfg(not(any( + solarish, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + target_os = "openbsd", + target_os = "redox", + )))] + const DIRECT = bitcast!(c::O_DIRECT); + /// `O_NONBLOCK` + const NONBLOCK = bitcast!(c::O_NONBLOCK); + } +} + +#[cfg(linux_kernel)] +bitflags! { + /// `SPLICE_F_*` constants for use with [`splice`], [`vmsplice`], + /// and [`tee`]. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct SpliceFlags: c::c_uint { + /// `SPLICE_F_MOVE` + const MOVE = c::SPLICE_F_MOVE; + /// `SPLICE_F_NONBLOCK` + const NONBLOCK = c::SPLICE_F_NONBLOCK; + /// `SPLICE_F_MORE` + const MORE = c::SPLICE_F_MORE; + /// `SPLICE_F_GIFT` + const GIFT = c::SPLICE_F_GIFT; + } +} + +/// A buffer type used with `vmsplice`. +/// +/// It is guaranteed to be ABI compatible with the iovec type on Unix platforms +/// and `WSABUF` on Windows. Unlike `IoSlice` and `IoSliceMut` it is +/// semantically like a raw pointer, and therefore can be shared or mutated as +/// needed. +#[cfg(linux_kernel)] +#[repr(transparent)] +pub struct IoSliceRaw<'a> { + _buf: c::iovec, + _lifetime: PhantomData<&'a ()>, +} + +#[cfg(linux_kernel)] +impl<'a> IoSliceRaw<'a> { + /// Creates a new `IoSlice` wrapping a byte slice. + pub fn from_slice(buf: &'a [u8]) -> Self { + IoSliceRaw { + _buf: c::iovec { + iov_base: buf.as_ptr() as *mut u8 as *mut c::c_void, + iov_len: buf.len() as _, + }, + _lifetime: PhantomData, + } + } + + /// Creates a new `IoSlice` wrapping a mutable byte slice. + pub fn from_slice_mut(buf: &'a mut [u8]) -> Self { + IoSliceRaw { + _buf: c::iovec { + iov_base: buf.as_mut_ptr() as *mut c::c_void, + iov_len: buf.len() as _, + }, + _lifetime: PhantomData, + } + } +} + +#[cfg(not(any(apple, target_os = "wasi")))] +#[test] +fn test_types() { + assert_eq_size!(PipeFlags, c::c_int); + + #[cfg(linux_kernel)] + assert_eq_size!(SpliceFlags, c::c_int); +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/prctl/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/prctl/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/prctl/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/prctl/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +pub(crate) mod syscalls; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/prctl/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/prctl/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/prctl/syscalls.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/prctl/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,14 @@ +use crate::backend::c; +use crate::backend::conv::ret_c_int; +use crate::io; + +#[inline] +pub(crate) unsafe fn prctl( + option: c::c_int, + arg2: *mut c::c_void, + arg3: *mut c::c_void, + arg4: *mut c::c_void, + arg5: *mut c::c_void, +) -> io::Result { + ret_c_int(c::prctl(option, arg2, arg3, arg4, arg5)) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/process/cpu_set.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/process/cpu_set.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/process/cpu_set.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/process/cpu_set.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,8 +2,8 @@ #![allow(non_snake_case)] -use super::super::c; use super::types::{RawCpuSet, CPU_SETSIZE}; +use crate::backend::c; #[inline] pub(crate) fn CPU_SET(cpu: usize, cpuset: &mut RawCpuSet) { @@ -46,6 +46,5 @@ #[cfg(linux_kernel)] #[inline] pub(crate) fn CPU_COUNT(cpuset: &RawCpuSet) -> u32 { - use core::convert::TryInto; unsafe { c::CPU_COUNT(cpuset).try_into().unwrap() } } diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/process/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/process/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/process/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/process/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,5 +3,5 @@ #[cfg(not(windows))] pub(crate) mod syscalls; pub(crate) mod types; -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] pub(crate) mod wait; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/process/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/process/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/process/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/process/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,65 +1,94 @@ //! libc syscalls supporting `rustix::process`. -use super::super::c; -#[cfg(not(target_os = "wasi"))] -use super::super::conv::{borrowed_fd, ret_infallible, ret_pid_t, ret_usize}; -use super::super::conv::{c_str, ret, ret_c_int, ret_discarded_char_ptr}; -#[cfg(linux_kernel)] -use super::super::conv::{syscall_ret, syscall_ret_u32}; #[cfg(any(linux_kernel, target_os = "dragonfly", target_os = "fuchsia"))] use super::types::RawCpuSet; +use crate::backend::c; +#[cfg(feature = "fs")] +use crate::backend::conv::c_str; +#[cfg(all(feature = "fs", not(target_os = "wasi")))] +use crate::backend::conv::ret_discarded_char_ptr; +#[cfg(not(any( + target_os = "espidf", + target_os = "fuchsia", + target_os = "redox", + target_os = "wasi" +)))] +use crate::backend::conv::ret_infallible; +#[cfg(linux_kernel)] +use crate::backend::conv::ret_u32; +#[cfg(not(target_os = "wasi"))] +use crate::backend::conv::{borrowed_fd, ret_pid_t, ret_usize}; +use crate::backend::conv::{ret, ret_c_int}; #[cfg(not(target_os = "wasi"))] use crate::fd::BorrowedFd; #[cfg(target_os = "linux")] -use crate::fd::{AsRawFd, OwnedFd}; +use crate::fd::{AsRawFd, OwnedFd, RawFd}; +#[cfg(feature = "fs")] use crate::ffi::CStr; #[cfg(feature = "fs")] use crate::fs::Mode; use crate::io; +#[cfg(not(any(target_os = "espidf", target_os = "fuchsia", target_os = "wasi")))] +use crate::process::Uid; #[cfg(linux_kernel)] -use crate::process::Sysinfo; -#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))] +use crate::process::{Cpuid, MembarrierCommand, MembarrierQuery}; +#[cfg(not(target_os = "wasi"))] +use crate::process::{Gid, Pid}; +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] +use crate::process::{RawPid, Signal, WaitOptions, WaitStatus}; +#[cfg(not(any( + target_os = "espidf", + target_os = "fuchsia", + target_os = "redox", + target_os = "wasi" +)))] +use crate::process::{Resource, Rlimit}; +#[cfg(not(any( + target_os = "espidf", + target_os = "redox", + target_os = "openbsd", + target_os = "wasi" +)))] use crate::process::{WaitId, WaitidOptions, WaitidStatus}; use core::mem::MaybeUninit; #[cfg(target_os = "linux")] -use {super::super::conv::syscall_ret_owned_fd, crate::process::PidfdFlags}; -#[cfg(linux_kernel)] -use { - super::super::offset::libc_prlimit, - crate::process::{Cpuid, MembarrierCommand, MembarrierQuery}, -}; -#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))] use { - super::super::offset::{libc_getrlimit, libc_rlimit, libc_setrlimit, LIBC_RLIM_INFINITY}, - crate::process::{Resource, Rlimit}, -}; -#[cfg(not(target_os = "wasi"))] -use { - super::types::RawUname, - crate::process::{Gid, Pid, RawNonZeroPid, RawPid, Signal, Uid, WaitOptions, WaitStatus}, - core::convert::TryInto, + super::super::conv::ret_owned_fd, crate::process::PidfdFlags, crate::process::PidfdGetfdFlags, }; +#[cfg(feature = "fs")] #[cfg(not(target_os = "wasi"))] pub(crate) fn chdir(path: &CStr) -> io::Result<()> { unsafe { ret(c::chdir(c_str(path))) } } -#[cfg(not(any(target_os = "wasi", target_os = "fuchsia")))] +#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))] pub(crate) fn fchdir(dirfd: BorrowedFd<'_>) -> io::Result<()> { unsafe { ret(c::fchdir(borrowed_fd(dirfd))) } } +#[cfg(feature = "fs")] #[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))] pub(crate) fn chroot(path: &CStr) -> io::Result<()> { unsafe { ret(c::chroot(c_str(path))) } } +#[cfg(feature = "fs")] #[cfg(not(target_os = "wasi"))] -pub(crate) fn getcwd(buf: &mut [u8]) -> io::Result<()> { +pub(crate) fn getcwd(buf: &mut [MaybeUninit]) -> io::Result<()> { unsafe { ret_discarded_char_ptr(c::getcwd(buf.as_mut_ptr().cast(), buf.len())) } } +// The `membarrier` syscall has a third argument, but it's only used when +// the `flags` argument is `MEMBARRIER_CMD_FLAG_CPU`. +#[cfg(linux_kernel)] +syscall! { + fn membarrier_all( + cmd: c::c_int, + flags: c::c_uint + ) via SYS_membarrier -> c::c_int +} + #[cfg(linux_kernel)] pub(crate) fn membarrier_query() -> MembarrierQuery { // glibc does not have a wrapper for `membarrier`; [the documentation] @@ -68,8 +97,8 @@ // [the documentation]: https://man7.org/linux/man-pages/man2/membarrier.2.html#NOTES const MEMBARRIER_CMD_QUERY: u32 = 0; unsafe { - match syscall_ret_u32(c::syscall(c::SYS_membarrier, MEMBARRIER_CMD_QUERY, 0)) { - Ok(query) => MembarrierQuery::from_bits_unchecked(query), + match ret_u32(membarrier_all(MEMBARRIER_CMD_QUERY as i32, 0)) { + Ok(query) => MembarrierQuery::from_bits_retain(query), Err(_) => MembarrierQuery::empty(), } } @@ -77,70 +106,27 @@ #[cfg(linux_kernel)] pub(crate) fn membarrier(cmd: MembarrierCommand) -> io::Result<()> { - unsafe { syscall_ret(c::syscall(c::SYS_membarrier, cmd as u32, 0)) } + unsafe { ret(membarrier_all(cmd as i32, 0)) } } #[cfg(linux_kernel)] pub(crate) fn membarrier_cpu(cmd: MembarrierCommand, cpu: Cpuid) -> io::Result<()> { const MEMBARRIER_CMD_FLAG_CPU: u32 = 1; - unsafe { - syscall_ret(c::syscall( - c::SYS_membarrier, - cmd as u32, - MEMBARRIER_CMD_FLAG_CPU, - cpu.as_raw(), - )) - } -} - -#[cfg(not(target_os = "wasi"))] -#[inline] -#[must_use] -pub(crate) fn getuid() -> Uid { - unsafe { - let uid = c::getuid(); - Uid::from_raw(uid) - } -} -#[cfg(not(target_os = "wasi"))] -#[inline] -#[must_use] -pub(crate) fn geteuid() -> Uid { - unsafe { - let uid = c::geteuid(); - Uid::from_raw(uid) + syscall! { + fn membarrier_cpu( + cmd: c::c_int, + flags: c::c_uint, + cpu_id: c::c_int + ) via SYS_membarrier -> c::c_int } -} -#[cfg(not(target_os = "wasi"))] -#[inline] -#[must_use] -pub(crate) fn getgid() -> Gid { - unsafe { - let gid = c::getgid(); - Gid::from_raw(gid) - } -} - -#[cfg(not(target_os = "wasi"))] -#[inline] -#[must_use] -pub(crate) fn getegid() -> Gid { - unsafe { - let gid = c::getegid(); - Gid::from_raw(gid) - } -} - -#[cfg(not(target_os = "wasi"))] -#[inline] -#[must_use] -pub(crate) fn getpid() -> Pid { unsafe { - let pid = c::getpid(); - debug_assert_ne!(pid, 0); - Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pid)) + ret(membarrier_cpu( + cmd as i32, + MEMBARRIER_CMD_FLAG_CPU, + bitcast!(cpu.as_raw()), + )) } } @@ -159,8 +145,7 @@ pub(crate) fn getpgid(pid: Option) -> io::Result { unsafe { let pgid = ret_pid_t(c::getpgid(Pid::as_raw(pid) as _))?; - debug_assert_ne!(pgid, 0); - Ok(Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pgid))) + Ok(Pid::from_raw_unchecked(pgid)) } } @@ -176,8 +161,7 @@ pub(crate) fn getpgrp() -> Pid { unsafe { let pgid = c::getpgrp(); - debug_assert_ne!(pgid, 0); - Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pgid)) + Pid::from_raw_unchecked(pgid) } } @@ -213,21 +197,10 @@ } #[cfg(not(target_os = "wasi"))] -#[inline] -pub(crate) fn uname() -> RawUname { - let mut uname = MaybeUninit::::uninit(); - unsafe { - ret_infallible(c::uname(uname.as_mut_ptr())); - uname.assume_init() - } -} - -#[cfg(not(target_os = "wasi"))] #[cfg(feature = "fs")] #[inline] pub(crate) fn umask(mask: Mode) -> Mode { - // TODO: Use `from_bits_retain` when we switch to bitflags 2.0. - unsafe { Mode::from_bits_truncate(c::umask(mask.bits() as _) as _) } + unsafe { Mode::from_bits_retain(c::umask(mask.bits() as c::mode_t).into()) } } #[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))] @@ -242,7 +215,7 @@ } } -#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))] +#[cfg(not(any(target_os = "espidf", target_os = "fuchsia", target_os = "wasi")))] #[inline] pub(crate) fn getpriority_user(uid: Uid) -> io::Result { libc_errno::set_errno(libc_errno::Errno(0)); @@ -254,7 +227,7 @@ } } -#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))] +#[cfg(not(any(target_os = "espidf", target_os = "fuchsia", target_os = "wasi")))] #[inline] pub(crate) fn getpriority_pgrp(pgid: Option) -> io::Result { libc_errno::set_errno(libc_errno::Errno(0)); @@ -266,7 +239,7 @@ } } -#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))] +#[cfg(not(any(target_os = "espidf", target_os = "fuchsia", target_os = "wasi")))] #[inline] pub(crate) fn getpriority_process(pid: Option) -> io::Result { libc_errno::set_errno(libc_errno::Errno(0)); @@ -278,13 +251,13 @@ } } -#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))] +#[cfg(not(any(target_os = "espidf", target_os = "fuchsia", target_os = "wasi")))] #[inline] pub(crate) fn setpriority_user(uid: Uid, priority: i32) -> io::Result<()> { unsafe { ret(c::setpriority(c::PRIO_USER, uid.as_raw() as _, priority)) } } -#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))] +#[cfg(not(any(target_os = "espidf", target_os = "fuchsia", target_os = "wasi")))] #[inline] pub(crate) fn setpriority_pgrp(pgid: Option, priority: i32) -> io::Result<()> { unsafe { @@ -296,7 +269,7 @@ } } -#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))] +#[cfg(not(any(target_os = "espidf", target_os = "fuchsia", target_os = "wasi")))] #[inline] pub(crate) fn setpriority_process(pid: Option, priority: i32) -> io::Result<()> { unsafe { @@ -308,30 +281,40 @@ } } -#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))] +#[cfg(not(any( + target_os = "espidf", + target_os = "fuchsia", + target_os = "redox", + target_os = "wasi" +)))] #[inline] pub(crate) fn getrlimit(limit: Resource) -> Rlimit { - let mut result = MaybeUninit::::uninit(); + let mut result = MaybeUninit::::uninit(); unsafe { - ret_infallible(libc_getrlimit(limit as _, result.as_mut_ptr())); + ret_infallible(c::getrlimit(limit as _, result.as_mut_ptr())); rlimit_from_libc(result.assume_init()) } } -#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))] +#[cfg(not(any( + target_os = "espidf", + target_os = "fuchsia", + target_os = "redox", + target_os = "wasi" +)))] #[inline] pub(crate) fn setrlimit(limit: Resource, new: Rlimit) -> io::Result<()> { let lim = rlimit_to_libc(new)?; - unsafe { ret(libc_setrlimit(limit as _, &lim)) } + unsafe { ret(c::setrlimit(limit as _, &lim)) } } #[cfg(linux_kernel)] #[inline] pub(crate) fn prlimit(pid: Option, limit: Resource, new: Rlimit) -> io::Result { let lim = rlimit_to_libc(new)?; - let mut result = MaybeUninit::::uninit(); + let mut result = MaybeUninit::::uninit(); unsafe { - ret(libc_prlimit( + ret(c::prlimit( Pid::as_raw(pid), limit as _, &lim, @@ -341,15 +324,20 @@ } } -/// Convert a Rust [`Rlimit`] to a C `libc_rlimit`. -#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))] -fn rlimit_from_libc(lim: libc_rlimit) -> Rlimit { - let current = if lim.rlim_cur == LIBC_RLIM_INFINITY { +/// Convert a Rust [`Rlimit`] to a C `c::rlimit`. +#[cfg(not(any( + target_os = "espidf", + target_os = "fuchsia", + target_os = "redox", + target_os = "wasi" +)))] +fn rlimit_from_libc(lim: c::rlimit) -> Rlimit { + let current = if lim.rlim_cur == c::RLIM_INFINITY { None } else { Some(lim.rlim_cur.try_into().unwrap()) }; - let maximum = if lim.rlim_max == LIBC_RLIM_INFINITY { + let maximum = if lim.rlim_max == c::RLIM_INFINITY { None } else { Some(lim.rlim_max.try_into().unwrap()) @@ -357,28 +345,33 @@ Rlimit { current, maximum } } -/// Convert a C `libc_rlimit` to a Rust `Rlimit`. -#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))] -fn rlimit_to_libc(lim: Rlimit) -> io::Result { +/// Convert a C `c::rlimit` to a Rust `Rlimit`. +#[cfg(not(any( + target_os = "espidf", + target_os = "fuchsia", + target_os = "redox", + target_os = "wasi" +)))] +fn rlimit_to_libc(lim: Rlimit) -> io::Result { let Rlimit { current, maximum } = lim; let rlim_cur = match current { Some(r) => r.try_into().map_err(|_e| io::Errno::INVAL)?, - None => LIBC_RLIM_INFINITY as _, + None => c::RLIM_INFINITY as _, }; let rlim_max = match maximum { Some(r) => r.try_into().map_err(|_e| io::Errno::INVAL)?, - None => LIBC_RLIM_INFINITY as _, + None => c::RLIM_INFINITY as _, }; - Ok(libc_rlimit { rlim_cur, rlim_max }) + Ok(c::rlimit { rlim_cur, rlim_max }) } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] #[inline] pub(crate) fn wait(waitopts: WaitOptions) -> io::Result> { _waitpid(!0, waitopts) } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] #[inline] pub(crate) fn waitpid( pid: Option, @@ -387,7 +380,7 @@ _waitpid(Pid::as_raw(pid), waitopts) } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] #[inline] pub(crate) fn _waitpid( pid: RawPid, @@ -396,16 +389,16 @@ unsafe { let mut status: c::c_int = 0; let pid = ret_c_int(c::waitpid(pid as _, &mut status, waitopts.bits() as _))?; - Ok(RawNonZeroPid::new(pid).map(|non_zero| { - ( - Pid::from_raw_nonzero(non_zero), - WaitStatus::new(status as _), - ) - })) + Ok(Pid::from_raw(pid).map(|pid| (pid, WaitStatus::new(status as _)))) } } -#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))] +#[cfg(not(any( + target_os = "espidf", + target_os = "redox", + target_os = "openbsd", + target_os = "wasi" +)))] #[inline] pub(crate) fn waitid(id: WaitId<'_>, options: WaitidOptions) -> io::Result> { // Get the id to wait on. @@ -419,7 +412,12 @@ } } -#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))] +#[cfg(not(any( + target_os = "espidf", + target_os = "redox", + target_os = "openbsd", + target_os = "wasi" +)))] #[inline] fn _waitid_all(options: WaitidOptions) -> io::Result> { // `waitid` can return successfully without initializing the struct (no @@ -437,7 +435,12 @@ Ok(unsafe { cvt_waitid_status(status) }) } -#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))] +#[cfg(not(any( + target_os = "espidf", + target_os = "redox", + target_os = "openbsd", + target_os = "wasi" +)))] #[inline] fn _waitid_pid(pid: Pid, options: WaitidOptions) -> io::Result> { // `waitid` can return successfully without initializing the struct (no @@ -479,7 +482,12 @@ /// /// The caller must ensure that `status` is initialized and that `waitid` /// returned successfully. -#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))] +#[cfg(not(any( + target_os = "espidf", + target_os = "openbsd", + target_os = "redox", + target_os = "wasi" +)))] #[inline] unsafe fn cvt_waitid_status(status: MaybeUninit) -> Option { let status = status.assume_init(); @@ -497,27 +505,12 @@ } } -#[inline] -pub(crate) fn exit_group(code: c::c_int) -> ! { - // `_exit` and `_Exit` are the same; it's just a matter of which ones - // the libc bindings expose. - #[cfg(any(target_os = "wasi", target_os = "solid"))] - unsafe { - c::_Exit(code) - } - #[cfg(unix)] - unsafe { - c::_exit(code) - } -} - #[cfg(not(any(target_os = "redox", target_os = "wasi")))] #[inline] pub(crate) fn getsid(pid: Option) -> io::Result { unsafe { let pid = ret_pid_t(c::getsid(Pid::as_raw(pid) as _))?; - debug_assert_ne!(pid, 0); - Ok(Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pid))) + Ok(Pid::from_raw_unchecked(pid)) } } @@ -526,18 +519,17 @@ pub(crate) fn setsid() -> io::Result { unsafe { let pid = ret_c_int(c::setsid())?; - debug_assert_ne!(pid, 0); - Ok(Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pid))) + Ok(Pid::from_raw_unchecked(pid)) } } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] #[inline] pub(crate) fn kill_process(pid: Pid, sig: Signal) -> io::Result<()> { unsafe { ret(c::kill(pid.as_raw_nonzero().get(), sig as i32)) } } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] #[inline] pub(crate) fn kill_process_group(pid: Pid, sig: Signal) -> io::Result<()> { unsafe { @@ -548,42 +540,29 @@ } } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] #[inline] pub(crate) fn kill_current_process_group(sig: Signal) -> io::Result<()> { unsafe { ret(c::kill(0, sig as i32)) } } -#[cfg(not(target_os = "wasi"))] -#[inline] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] pub(crate) fn test_kill_process(pid: Pid) -> io::Result<()> { unsafe { ret(c::kill(pid.as_raw_nonzero().get(), 0)) } } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] #[inline] pub(crate) fn test_kill_process_group(pid: Pid) -> io::Result<()> { unsafe { ret(c::kill(pid.as_raw_nonzero().get().wrapping_neg(), 0)) } } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] #[inline] pub(crate) fn test_kill_current_process_group() -> io::Result<()> { unsafe { ret(c::kill(0, 0)) } } -#[cfg(linux_kernel)] -#[inline] -pub(crate) unsafe fn prctl( - option: c::c_int, - arg2: *mut c::c_void, - arg3: *mut c::c_void, - arg4: *mut c::c_void, - arg5: *mut c::c_void, -) -> io::Result { - ret_c_int(c::prctl(option, arg2, arg3, arg4, arg5)) -} - #[cfg(freebsdlike)] #[inline] pub(crate) unsafe fn procctl( @@ -597,11 +576,38 @@ #[cfg(target_os = "linux")] pub(crate) fn pidfd_open(pid: Pid, flags: PidfdFlags) -> io::Result { + syscall! { + fn pidfd_open( + pid: c::pid_t, + flags: c::c_uint + ) via SYS_pidfd_open -> c::c_int + } unsafe { - syscall_ret_owned_fd(c::syscall( - c::SYS_pidfd_open, + ret_owned_fd(pidfd_open( pid.as_raw_nonzero().get(), - flags.bits(), + bitflags_bits!(flags), + )) + } +} + +#[cfg(target_os = "linux")] +pub(crate) fn pidfd_getfd( + pidfd: BorrowedFd<'_>, + targetfd: RawFd, + flags: PidfdGetfdFlags, +) -> io::Result { + syscall! { + fn pidfd_getfd( + pidfd: c::c_int, + targetfd: c::c_int, + flags: c::c_uint + ) via SYS_pidfd_getfd -> c::c_int + } + unsafe { + ret_owned_fd(pidfd_getfd( + borrowed_fd(pidfd), + targetfd, + bitflags_bits!(flags), )) } } @@ -613,26 +619,12 @@ unsafe { ret_usize(c::getgroups(len, buf.as_mut_ptr().cast()) as isize) } } -#[cfg(linux_kernel)] -pub(crate) fn sysinfo() -> Sysinfo { - let mut info = MaybeUninit::::uninit(); - unsafe { - ret_infallible(c::sysinfo(info.as_mut_ptr())); - info.assume_init() - } -} - -#[cfg(not(any(target_os = "emscripten", target_os = "redox", target_os = "wasi")))] -pub(crate) fn sethostname(name: &[u8]) -> io::Result<()> { - unsafe { - ret(c::sethostname( - name.as_ptr().cast(), - name.len().try_into().map_err(|_| io::Errno::INVAL)?, - )) - } -} - -#[cfg(not(any(target_os = "redox", target_os = "wasi")))] +#[cfg(not(any( + target_os = "aix", + target_os = "espidf", + target_os = "redox", + target_os = "wasi" +)))] #[inline] pub(crate) fn ioctl_tiocsctty(fd: BorrowedFd<'_>) -> io::Result<()> { unsafe { ret(c::ioctl(borrowed_fd(fd), c::TIOCSCTTY as _, &0_u32)) } diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/process/types.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/process/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/process/types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/process/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,4 @@ -use super::super::c; - -/// `sysinfo` -#[cfg(linux_kernel)] -pub type Sysinfo = c::sysinfo; +use crate::backend::c; /// A command for use with [`membarrier`] and [`membarrier_cpu`]. /// @@ -44,50 +40,87 @@ /// [`getrlimit`]: crate::process::getrlimit /// [`setrlimit`]: crate::process::setrlimit /// [`prlimit`]: crate::process::prlimit -#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))] +#[cfg(not(any( + target_os = "espidf", + target_os = "fuchsia", + target_os = "redox", + target_os = "wasi" +)))] #[derive(Copy, Clone, Debug, Eq, PartialEq)] -#[repr(i32)] +#[cfg_attr(not(target_os = "l4re"), repr(u32))] +#[cfg_attr(target_os = "l4re", repr(u64))] pub enum Resource { /// `RLIMIT_CPU` - Cpu = c::RLIMIT_CPU as c::c_int, + Cpu = bitcast!(c::RLIMIT_CPU), /// `RLIMIT_FSIZE` - Fsize = c::RLIMIT_FSIZE as c::c_int, + Fsize = bitcast!(c::RLIMIT_FSIZE), /// `RLIMIT_DATA` - Data = c::RLIMIT_DATA as c::c_int, + Data = bitcast!(c::RLIMIT_DATA), /// `RLIMIT_STACK` - Stack = c::RLIMIT_STACK as c::c_int, + Stack = bitcast!(c::RLIMIT_STACK), /// `RLIMIT_CORE` #[cfg(not(target_os = "haiku"))] - Core = c::RLIMIT_CORE as c::c_int, + Core = bitcast!(c::RLIMIT_CORE), /// `RLIMIT_RSS` - #[cfg(not(any(apple, solarish, target_os = "haiku")))] - Rss = c::RLIMIT_RSS as c::c_int, + // "nto" has `RLIMIT_RSS`, but it has the same value as `RLIMIT_AS`. + #[cfg(not(any(apple, solarish, target_os = "nto", target_os = "haiku")))] + Rss = bitcast!(c::RLIMIT_RSS), /// `RLIMIT_NPROC` #[cfg(not(any(solarish, target_os = "haiku")))] - Nproc = c::RLIMIT_NPROC as c::c_int, + Nproc = bitcast!(c::RLIMIT_NPROC), /// `RLIMIT_NOFILE` - Nofile = c::RLIMIT_NOFILE as c::c_int, + Nofile = bitcast!(c::RLIMIT_NOFILE), /// `RLIMIT_MEMLOCK` #[cfg(not(any(solarish, target_os = "aix", target_os = "haiku")))] - Memlock = c::RLIMIT_MEMLOCK as c::c_int, + Memlock = bitcast!(c::RLIMIT_MEMLOCK), /// `RLIMIT_AS` #[cfg(not(target_os = "openbsd"))] - As = c::RLIMIT_AS as c::c_int, + As = bitcast!(c::RLIMIT_AS), /// `RLIMIT_LOCKS` - #[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))] - Locks = c::RLIMIT_LOCKS as c::c_int, + #[cfg(not(any( + bsd, + solarish, + target_os = "aix", + target_os = "haiku", + target_os = "nto" + )))] + Locks = bitcast!(c::RLIMIT_LOCKS), /// `RLIMIT_SIGPENDING` - #[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))] - Sigpending = c::RLIMIT_SIGPENDING as c::c_int, + #[cfg(not(any( + bsd, + solarish, + target_os = "aix", + target_os = "haiku", + target_os = "nto" + )))] + Sigpending = bitcast!(c::RLIMIT_SIGPENDING), /// `RLIMIT_MSGQUEUE` - #[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))] - Msgqueue = c::RLIMIT_MSGQUEUE as c::c_int, + #[cfg(not(any( + bsd, + solarish, + target_os = "aix", + target_os = "haiku", + target_os = "nto" + )))] + Msgqueue = bitcast!(c::RLIMIT_MSGQUEUE), /// `RLIMIT_NICE` - #[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))] - Nice = c::RLIMIT_NICE as c::c_int, + #[cfg(not(any( + bsd, + solarish, + target_os = "aix", + target_os = "haiku", + target_os = "nto" + )))] + Nice = bitcast!(c::RLIMIT_NICE), /// `RLIMIT_RTPRIO` - #[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))] - Rtprio = c::RLIMIT_RTPRIO as c::c_int, + #[cfg(not(any( + bsd, + solarish, + target_os = "aix", + target_os = "haiku", + target_os = "nto" + )))] + Rtprio = bitcast!(c::RLIMIT_RTPRIO), /// `RLIMIT_RTTIME` #[cfg(not(any( bsd, @@ -96,8 +129,9 @@ target_os = "android", target_os = "emscripten", target_os = "haiku", + target_os = "nto", )))] - Rttime = c::RLIMIT_RTTIME as c::c_int, + Rttime = bitcast!(c::RLIMIT_RTTIME), } #[cfg(apple)] @@ -107,221 +141,17 @@ pub const Rss: Self = Self::As; } -/// A signal number for use with [`kill_process`], [`kill_process_group`], -/// and [`kill_current_process_group`]. -/// -/// [`kill_process`]: crate::process::kill_process -/// [`kill_process_group`]: crate::process::kill_process_group -/// [`kill_current_process_group`]: crate::process::kill_current_process_group -#[cfg(not(target_os = "wasi"))] -#[derive(Copy, Clone, Debug, Eq, PartialEq)] -#[repr(i32)] -pub enum Signal { - /// `SIGHUP` - Hup = c::SIGHUP, - /// `SIGINT` - Int = c::SIGINT, - /// `SIGQUIT` - Quit = c::SIGQUIT, - /// `SIGILL` - Ill = c::SIGILL, - /// `SIGTRAP` - Trap = c::SIGTRAP, - /// `SIGABRT`, aka `SIGIOT` - #[doc(alias = "Iot")] - #[doc(alias = "Abrt")] - Abort = c::SIGABRT, - /// `SIGBUS` - Bus = c::SIGBUS, - /// `SIGFPE` - Fpe = c::SIGFPE, - /// `SIGKILL` - Kill = c::SIGKILL, - /// `SIGUSR1` - Usr1 = c::SIGUSR1, - /// `SIGSEGV` - Segv = c::SIGSEGV, - /// `SIGUSR2` - Usr2 = c::SIGUSR2, - /// `SIGPIPE` - Pipe = c::SIGPIPE, - /// `SIGALRM` - #[doc(alias = "Alrm")] - Alarm = c::SIGALRM, - /// `SIGTERM` - Term = c::SIGTERM, - /// `SIGSTKFLT` - #[cfg(not(any( - bsd, - solarish, - target_os = "aix", - target_os = "haiku", - all( - linux_kernel, - any( - target_arch = "mips", - target_arch = "mips64", - target_arch = "sparc", - target_arch = "sparc64" - ), - ) - )))] - Stkflt = c::SIGSTKFLT, - /// `SIGCHLD` - #[doc(alias = "Chld")] - Child = c::SIGCHLD, - /// `SIGCONT` - Cont = c::SIGCONT, - /// `SIGSTOP` - Stop = c::SIGSTOP, - /// `SIGTSTP` - Tstp = c::SIGTSTP, - /// `SIGTTIN` - Ttin = c::SIGTTIN, - /// `SIGTTOU` - Ttou = c::SIGTTOU, - /// `SIGURG` - Urg = c::SIGURG, - /// `SIGXCPU` - Xcpu = c::SIGXCPU, - /// `SIGXFSZ` - Xfsz = c::SIGXFSZ, - /// `SIGVTALRM` - #[doc(alias = "Vtalrm")] - Vtalarm = c::SIGVTALRM, - /// `SIGPROF` - Prof = c::SIGPROF, - /// `SIGWINCH` - Winch = c::SIGWINCH, - /// `SIGIO`, aka `SIGPOLL` - #[doc(alias = "Poll")] - #[cfg(not(target_os = "haiku"))] - Io = c::SIGIO, - /// `SIGPWR` - #[cfg(not(any(bsd, target_os = "haiku")))] - #[doc(alias = "Pwr")] - Power = c::SIGPWR, - /// `SIGSYS`, aka `SIGUNUSED` - #[doc(alias = "Unused")] - Sys = c::SIGSYS, - /// `SIGEMT` - #[cfg(any(bsd, solarish, target_os = "aix", target_os = "hermit"))] - Emt = c::SIGEMT, - /// `SIGEMT` - #[cfg(all( - linux_kernel, - any( - target_arch = "mips", - target_arch = "mips64", - target_arch = "sparc", - target_arch = "sparc64" - ) - ))] - Emt = linux_raw_sys::general::SIGEMT as i32, - /// `SIGINFO` - #[cfg(bsd)] - Info = c::SIGINFO, - /// `SIGTHR` - #[cfg(target_os = "freebsd")] - #[doc(alias = "Lwp")] - Thr = c::SIGTHR, - /// `SIGLIBRT` - #[cfg(target_os = "freebsd")] - Librt = c::SIGLIBRT, -} - -#[cfg(not(target_os = "wasi"))] -impl Signal { - /// Convert a raw signal number into a `Signal`, if possible. - pub fn from_raw(sig: i32) -> Option { - match sig as _ { - c::SIGHUP => Some(Self::Hup), - c::SIGINT => Some(Self::Int), - c::SIGQUIT => Some(Self::Quit), - c::SIGILL => Some(Self::Ill), - c::SIGTRAP => Some(Self::Trap), - c::SIGABRT => Some(Self::Abort), - c::SIGBUS => Some(Self::Bus), - c::SIGFPE => Some(Self::Fpe), - c::SIGKILL => Some(Self::Kill), - c::SIGUSR1 => Some(Self::Usr1), - c::SIGSEGV => Some(Self::Segv), - c::SIGUSR2 => Some(Self::Usr2), - c::SIGPIPE => Some(Self::Pipe), - c::SIGALRM => Some(Self::Alarm), - c::SIGTERM => Some(Self::Term), - #[cfg(not(any( - bsd, - solarish, - target_os = "aix", - target_os = "haiku", - all( - linux_kernel, - any( - target_arch = "mips", - target_arch = "mips64", - target_arch = "sparc", - target_arch = "sparc64" - ), - ) - )))] - c::SIGSTKFLT => Some(Self::Stkflt), - c::SIGCHLD => Some(Self::Child), - c::SIGCONT => Some(Self::Cont), - c::SIGSTOP => Some(Self::Stop), - c::SIGTSTP => Some(Self::Tstp), - c::SIGTTIN => Some(Self::Ttin), - c::SIGTTOU => Some(Self::Ttou), - c::SIGURG => Some(Self::Urg), - c::SIGXCPU => Some(Self::Xcpu), - c::SIGXFSZ => Some(Self::Xfsz), - c::SIGVTALRM => Some(Self::Vtalarm), - c::SIGPROF => Some(Self::Prof), - c::SIGWINCH => Some(Self::Winch), - #[cfg(not(target_os = "haiku"))] - c::SIGIO => Some(Self::Io), - #[cfg(not(any(bsd, target_os = "haiku")))] - c::SIGPWR => Some(Self::Power), - c::SIGSYS => Some(Self::Sys), - #[cfg(bsd)] - c::SIGEMT => Some(Self::Emt), - #[cfg(bsd)] - c::SIGINFO => Some(Self::Info), - #[cfg(target_os = "freebsd")] - c::SIGTHR => Some(Self::Thr), - #[cfg(target_os = "freebsd")] - c::SIGLIBRT => Some(Self::Librt), - _ => None, - } - } -} - pub const EXIT_SUCCESS: c::c_int = c::EXIT_SUCCESS; pub const EXIT_FAILURE: c::c_int = c::EXIT_FAILURE; -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] pub const EXIT_SIGNALED_SIGABRT: c::c_int = 128 + c::SIGABRT; -/// A process identifier as a raw integer. -#[cfg(not(target_os = "wasi"))] -pub type RawPid = c::pid_t; -/// A non-zero process identifier as a raw non-zero integer. -#[cfg(not(target_os = "wasi"))] -pub type RawNonZeroPid = core::num::NonZeroI32; -/// A group identifier as a raw integer. -#[cfg(not(target_os = "wasi"))] -pub type RawGid = c::gid_t; -/// A user identifier as a raw integer. -#[cfg(not(target_os = "wasi"))] -pub type RawUid = c::uid_t; /// A CPU identifier as a raw integer. #[cfg(linux_kernel)] pub type RawCpuid = u32; -#[cfg(target_os = "freebsd")] +#[cfg(freebsdlike)] pub type RawId = c::id_t; -#[cfg(not(target_os = "wasi"))] -pub(crate) type RawUname = c::utsname; - #[cfg(any(linux_kernel, target_os = "dragonfly", target_os = "fuchsia"))] pub(crate) type RawCpuSet = c::cpu_set_t; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/process/wait.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/process/wait.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/process/wait.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/process/wait.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -use super::super::c; +use crate::backend::c; pub(crate) use c::{ WCONTINUED, WEXITSTATUS, WIFCONTINUED, WIFEXITED, WIFSIGNALED, WIFSTOPPED, WNOHANG, WSTOPSIG, diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/pty/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/pty/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/pty/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/pty/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,11 +1,11 @@ //! libc syscalls supporting `rustix::pty`. -use super::super::c; -use super::super::conv::{borrowed_fd, ret}; +use crate::backend::c; +use crate::backend::conv::{borrowed_fd, ret}; use crate::fd::BorrowedFd; use crate::io; #[cfg(not(target_os = "android"))] -use {super::super::conv::ret_owned_fd, crate::fd::OwnedFd, crate::pty::OpenptFlags}; +use {crate::backend::conv::ret_owned_fd, crate::fd::OwnedFd, crate::pty::OpenptFlags}; #[cfg(any(apple, linux_like, target_os = "freebsd", target_os = "fuchsia"))] use { crate::ffi::{CStr, CString}, @@ -32,8 +32,7 @@ loop { // On platforms with `ptsname_r`, use it. #[cfg(any(linux_like, target_os = "fuchsia"))] - let r = - unsafe { libc::ptsname_r(borrowed_fd(fd), buffer.as_mut_ptr().cast(), buffer.len()) }; + let r = unsafe { c::ptsname_r(borrowed_fd(fd), buffer.as_mut_ptr().cast(), buffer.len()) }; // FreeBSD 12 doesn't have `ptsname_r`. #[cfg(target_os = "freebsd")] @@ -63,7 +62,7 @@ } else { // The size declared in the `TIOCPTYGNAME` macro in sys/ttycom.h is 128. let mut name: [u8; 128] = [0_u8; 128]; - match libc::ioctl(borrowed_fd(fd), libc::TIOCPTYGNAME as u64, &mut name) { + match c::ioctl(borrowed_fd(fd), c::TIOCPTYGNAME as _, &mut name) { 0 => { let len = CStr::from_ptr(name.as_ptr().cast()).to_bytes().len(); std::ptr::copy_nonoverlapping(name.as_ptr(), buffer.as_mut_ptr(), len + 1); @@ -77,7 +76,7 @@ if r == 0 { return Ok(unsafe { CStr::from_ptr(buffer.as_ptr().cast()).to_owned() }); } - if r != libc::ERANGE { + if r != c::ERANGE { return Err(io::Errno::from_raw_os_error(r)); } diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/rand/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/rand/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/rand/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/rand/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,7 @@ //! libc syscalls supporting `rustix::rand`. #[cfg(linux_kernel)] -use {super::super::c, super::super::conv::ret_usize, crate::io, crate::rand::GetRandomFlags}; +use {crate::backend::c, crate::backend::conv::ret_usize, crate::io, crate::rand::GetRandomFlags}; #[cfg(linux_kernel)] pub(crate) fn getrandom(buf: &mut [u8], flags: GetRandomFlags) -> io::Result { diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/rand/types.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/rand/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/rand/types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/rand/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #[cfg(linux_kernel)] -use super::super::c; +use crate::backend::c; #[cfg(linux_kernel)] use bitflags::bitflags; @@ -8,6 +8,8 @@ /// `GRND_*` flags for use with [`getrandom`]. /// /// [`getrandom`]: crate::rand::getrandom + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct GetRandomFlags: u32 { /// `GRND_RANDOM` const RANDOM = c::GRND_RANDOM; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/system/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/system/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/system/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/system/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,3 @@ +#[cfg(not(windows))] +pub(crate) mod syscalls; +pub(crate) mod types; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/system/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/system/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/system/syscalls.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/system/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,58 @@ +//! libc syscalls supporting `rustix::process`. + +use super::types::RawUname; +use crate::backend::c; +#[cfg(not(target_os = "wasi"))] +use crate::backend::conv::ret_infallible; +#[cfg(linux_kernel)] +use crate::system::Sysinfo; +use core::mem::MaybeUninit; +#[cfg(not(any( + target_os = "emscripten", + target_os = "espidf", + target_os = "redox", + target_os = "wasi" +)))] +use {crate::backend::conv::ret, crate::io}; + +#[cfg(not(target_os = "wasi"))] +#[inline] +pub(crate) fn uname() -> RawUname { + let mut uname = MaybeUninit::::uninit(); + unsafe { + let r = c::uname(uname.as_mut_ptr()); + + // On POSIX, `uname` is documented to return non-negative on success + // instead of the usual 0, though some specific systems do document + // that they always use zero allowing us to skip this check. + #[cfg(not(any(apple, freebsdlike, linux_like, target_os = "netbsd")))] + let r = core::cmp::min(r, 0); + + ret_infallible(r); + uname.assume_init() + } +} + +#[cfg(linux_kernel)] +pub(crate) fn sysinfo() -> Sysinfo { + let mut info = MaybeUninit::::uninit(); + unsafe { + ret_infallible(c::sysinfo(info.as_mut_ptr())); + info.assume_init() + } +} + +#[cfg(not(any( + target_os = "emscripten", + target_os = "espidf", + target_os = "redox", + target_os = "wasi" +)))] +pub(crate) fn sethostname(name: &[u8]) -> io::Result<()> { + unsafe { + ret(c::sethostname( + name.as_ptr().cast(), + name.len().try_into().map_err(|_| io::Errno::INVAL)?, + )) + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/system/types.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/system/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/system/types.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/system/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,8 @@ +use crate::backend::c; + +/// `sysinfo` +#[cfg(linux_kernel)] +pub type Sysinfo = c::sysinfo; + +#[cfg(not(target_os = "wasi"))] +pub(crate) type RawUname = c::utsname; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/termios/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/termios/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/termios/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/termios/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1 @@ pub(crate) mod syscalls; -#[cfg(not(target_os = "wasi"))] -pub(crate) mod types; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/termios/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/termios/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/termios/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/termios/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,46 +4,75 @@ //! //! See the `rustix::backend::syscalls` module documentation for details. -use super::super::c; -use super::super::conv::{borrowed_fd, ret, ret_pid_t}; +use crate::backend::c; +#[cfg(not(target_os = "wasi"))] +use crate::backend::conv::ret_pid_t; +use crate::backend::conv::{borrowed_fd, ret}; use crate::fd::BorrowedFd; #[cfg(feature = "procfs")] #[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))] use crate::ffi::CStr; +#[cfg(any( + not(target_os = "espidf"), + all( + feature = "procfs", + not(any(target_os = "fuchsia", target_os = "wasi")) + ) +))] use core::mem::MaybeUninit; #[cfg(not(target_os = "wasi"))] +use {crate::io, crate::pid::Pid}; +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] use { - crate::io, - crate::process::{Pid, RawNonZeroPid}, - crate::termios::{Action, OptionalActions, QueueSelector, Speed, Termios, Winsize}, + crate::termios::{Action, OptionalActions, QueueSelector, Termios, Winsize}, + crate::utils::as_mut_ptr, }; -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] pub(crate) fn tcgetattr(fd: BorrowedFd<'_>) -> io::Result { - let mut result = MaybeUninit::::uninit(); - unsafe { - ret(c::tcgetattr(borrowed_fd(fd), result.as_mut_ptr()))?; - Ok(result.assume_init()) + // If we have `TCGETS2`, use it, so that we fill in the `c_ispeed` and + // `c_ospeed` fields. + #[cfg(linux_kernel)] + { + use crate::termios::{ControlModes, InputModes, LocalModes, OutputModes, SpecialCodes}; + use crate::utils::default_array; + + let termios2 = unsafe { + let mut termios2 = MaybeUninit::::uninit(); + + ret(c::ioctl( + borrowed_fd(fd), + c::TCGETS2 as _, + termios2.as_mut_ptr(), + ))?; + + termios2.assume_init() + }; + + // Convert from the Linux `termios2` to our `Termios`. + let mut result = Termios { + input_modes: InputModes::from_bits_retain(termios2.c_iflag), + output_modes: OutputModes::from_bits_retain(termios2.c_oflag), + control_modes: ControlModes::from_bits_retain(termios2.c_cflag), + local_modes: LocalModes::from_bits_retain(termios2.c_lflag), + line_discipline: termios2.c_line, + special_codes: SpecialCodes(default_array()), + input_speed: termios2.c_ispeed, + output_speed: termios2.c_ospeed, + }; + result.special_codes.0[..termios2.c_cc.len()].copy_from_slice(&termios2.c_cc); + + Ok(result) } -} -#[cfg(all( - linux_kernel, - any( - target_arch = "x86", - target_arch = "x86_64", - target_arch = "x32", - target_arch = "riscv64", - target_arch = "aarch64", - target_arch = "arm", - target_arch = "mips", - target_arch = "mips64", - ) -))] -pub(crate) fn tcgetattr2(fd: BorrowedFd<'_>) -> io::Result { - let mut result = MaybeUninit::::uninit(); + #[cfg(not(linux_kernel))] unsafe { - ret(c::ioctl(borrowed_fd(fd), c::TCGETS2, result.as_mut_ptr()))?; + let mut result = MaybeUninit::::uninit(); + + // `result` is a `Termios` which starts with the same layout as + // `libc::termios`, so we can cast the pointer. + ret(c::tcgetattr(borrowed_fd(fd), result.as_mut_ptr().cast()))?; + Ok(result.assume_init()) } } @@ -52,8 +81,7 @@ pub(crate) fn tcgetpgrp(fd: BorrowedFd<'_>) -> io::Result { unsafe { let pid = ret_pid_t(c::tcgetpgrp(borrowed_fd(fd)))?; - debug_assert_ne!(pid, 0); - Ok(Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pid))) + Ok(Pid::from_raw_unchecked(pid)) } } @@ -62,44 +90,76 @@ unsafe { ret(c::tcsetpgrp(borrowed_fd(fd), pid.as_raw_nonzero().get())) } } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] pub(crate) fn tcsetattr( fd: BorrowedFd, optional_actions: OptionalActions, termios: &Termios, ) -> io::Result<()> { - unsafe { - ret(c::tcsetattr( - borrowed_fd(fd), - optional_actions as _, - termios, - )) + // If we have `TCSETS2`, use it, so that we use the `c_ispeed` and + // `c_ospeed` fields. + #[cfg(linux_kernel)] + { + use crate::termios::speed; + use crate::utils::default_array; + use linux_raw_sys::general::{termios2, BOTHER, CBAUD, IBSHIFT}; + + #[cfg(not(any(target_arch = "sparc", target_arch = "sparc64")))] + use linux_raw_sys::ioctl::{TCSETS, TCSETS2}; + + // linux-raw-sys' ioctl-generation script for sparc isn't working yet, + // so as a temporary workaround, declare these manually. + #[cfg(any(target_arch = "sparc", target_arch = "sparc64"))] + const TCSETS: u32 = 0x80245409; + #[cfg(any(target_arch = "sparc", target_arch = "sparc64"))] + const TCSETS2: u32 = 0x802c540d; + + // Translate from `optional_actions` into an ioctl request code. On MIPS, + // `optional_actions` already has `TCGETS` added to it. + let request = TCSETS2 + + if cfg!(any( + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6" + )) { + optional_actions as u32 - TCSETS + } else { + optional_actions as u32 + }; + + let input_speed = termios.input_speed(); + let output_speed = termios.output_speed(); + let mut termios2 = termios2 { + c_iflag: termios.input_modes.bits(), + c_oflag: termios.output_modes.bits(), + c_cflag: termios.control_modes.bits(), + c_lflag: termios.local_modes.bits(), + c_line: termios.line_discipline, + c_cc: default_array(), + c_ispeed: input_speed, + c_ospeed: output_speed, + }; + // Ensure that our input and output speeds are set, as `libc` + // routines don't always support setting these separately. + termios2.c_cflag &= !CBAUD; + termios2.c_cflag |= speed::encode(output_speed).unwrap_or(BOTHER); + termios2.c_cflag &= !(CBAUD << IBSHIFT); + termios2.c_cflag |= speed::encode(input_speed).unwrap_or(BOTHER) << IBSHIFT; + let nccs = termios2.c_cc.len(); + termios2 + .c_cc + .copy_from_slice(&termios.special_codes.0[..nccs]); + + unsafe { ret(c::ioctl(borrowed_fd(fd), request as _, &termios2)) } } -} -#[cfg(all( - linux_kernel, - any( - target_arch = "x86", - target_arch = "x86_64", - target_arch = "x32", - target_arch = "riscv64", - target_arch = "aarch64", - target_arch = "arm", - target_arch = "mips", - target_arch = "mips64", - ) -))] -pub(crate) fn tcsetattr2( - fd: BorrowedFd, - optional_actions: OptionalActions, - termios: &crate::termios::Termios2, -) -> io::Result<()> { + #[cfg(not(linux_kernel))] unsafe { - ret(c::ioctl( + ret(c::tcsetattr( borrowed_fd(fd), - (c::TCSETS2 as u32 + optional_actions as u32) as _, - termios, + optional_actions as _, + crate::utils::as_ptr(termios).cast(), )) } } @@ -109,17 +169,17 @@ unsafe { ret(c::tcsendbreak(borrowed_fd(fd), 0)) } } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] pub(crate) fn tcdrain(fd: BorrowedFd) -> io::Result<()> { unsafe { ret(c::tcdrain(borrowed_fd(fd))) } } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] pub(crate) fn tcflush(fd: BorrowedFd, queue_selector: QueueSelector) -> io::Result<()> { unsafe { ret(c::tcflush(borrowed_fd(fd), queue_selector as _)) } } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] pub(crate) fn tcflow(fd: BorrowedFd, action: Action) -> io::Result<()> { unsafe { ret(c::tcflow(borrowed_fd(fd), action as _)) } } @@ -128,17 +188,16 @@ pub(crate) fn tcgetsid(fd: BorrowedFd) -> io::Result { unsafe { let pid = ret_pid_t(c::tcgetsid(borrowed_fd(fd)))?; - debug_assert_ne!(pid, 0); - Ok(Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pid))) + Ok(Pid::from_raw_unchecked(pid)) } } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] pub(crate) fn tcsetwinsize(fd: BorrowedFd, winsize: Winsize) -> io::Result<()> { unsafe { ret(c::ioctl(borrowed_fd(fd), c::TIOCSWINSZ, &winsize)) } } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] pub(crate) fn tcgetwinsize(fd: BorrowedFd) -> io::Result { unsafe { let mut buf = MaybeUninit::::uninit(); @@ -151,42 +210,152 @@ } } -#[cfg(not(target_os = "wasi"))] -#[inline] -#[must_use] -pub(crate) fn cfgetospeed(termios: &Termios) -> Speed { - unsafe { c::cfgetospeed(termios) } +#[cfg(not(any( + target_os = "espidf", + target_os = "haiku", + target_os = "redox", + target_os = "wasi" +)))] +pub(crate) fn ioctl_tiocexcl(fd: BorrowedFd) -> io::Result<()> { + unsafe { ret(c::ioctl(borrowed_fd(fd), c::TIOCEXCL as _)) } +} + +#[cfg(not(any( + target_os = "espidf", + target_os = "haiku", + target_os = "redox", + target_os = "wasi" +)))] +pub(crate) fn ioctl_tiocnxcl(fd: BorrowedFd) -> io::Result<()> { + unsafe { ret(c::ioctl(borrowed_fd(fd), c::TIOCNXCL as _)) } } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "nto", target_os = "wasi")))] #[inline] -#[must_use] -pub(crate) fn cfgetispeed(termios: &Termios) -> Speed { - unsafe { c::cfgetispeed(termios) } -} +pub(crate) fn set_speed(termios: &mut Termios, arbitrary_speed: u32) -> io::Result<()> { + #[cfg(bsd)] + let encoded_speed = arbitrary_speed; + + #[cfg(not(bsd))] + let encoded_speed = match crate::termios::speed::encode(arbitrary_speed) { + Some(encoded_speed) => encoded_speed, + #[cfg(linux_kernel)] + None => c::BOTHER, + #[cfg(not(linux_kernel))] + None => return Err(io::Errno::INVAL), + }; -#[cfg(not(target_os = "wasi"))] -#[inline] -pub(crate) fn cfmakeraw(termios: &mut Termios) { - unsafe { c::cfmakeraw(termios) } + #[cfg(not(linux_kernel))] + unsafe { + ret(c::cfsetspeed( + as_mut_ptr(termios).cast(), + encoded_speed.into(), + )) + } + + // Linux libc implementations don't support arbitrary speeds, so we encode + // the speed manually. + #[cfg(linux_kernel)] + { + use crate::termios::ControlModes; + + debug_assert_eq!(encoded_speed & !c::CBAUD, 0); + + termios.control_modes -= ControlModes::from_bits_retain(c::CBAUD | c::CIBAUD); + termios.control_modes |= + ControlModes::from_bits_retain(encoded_speed | (encoded_speed << c::IBSHIFT)); + + termios.input_speed = arbitrary_speed; + termios.output_speed = arbitrary_speed; + + Ok(()) + } } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] #[inline] -pub(crate) fn cfsetospeed(termios: &mut Termios, speed: Speed) -> io::Result<()> { - unsafe { ret(c::cfsetospeed(termios, speed)) } +pub(crate) fn set_output_speed(termios: &mut Termios, arbitrary_speed: u32) -> io::Result<()> { + #[cfg(bsd)] + let encoded_speed = arbitrary_speed; + + #[cfg(not(bsd))] + let encoded_speed = match crate::termios::speed::encode(arbitrary_speed) { + Some(encoded_speed) => encoded_speed, + #[cfg(linux_kernel)] + None => c::BOTHER, + #[cfg(not(linux_kernel))] + None => return Err(io::Errno::INVAL), + }; + + #[cfg(not(linux_kernel))] + unsafe { + ret(c::cfsetospeed( + as_mut_ptr(termios).cast(), + encoded_speed.into(), + )) + } + + // Linux libc implementations don't support arbitrary speeds or setting the + // input and output speeds separately, so we encode the speed manually. + #[cfg(linux_kernel)] + { + use crate::termios::ControlModes; + + debug_assert_eq!(encoded_speed & !c::CBAUD, 0); + + termios.control_modes -= ControlModes::from_bits_retain(c::CBAUD); + termios.control_modes |= ControlModes::from_bits_retain(encoded_speed); + + termios.output_speed = arbitrary_speed; + + Ok(()) + } } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] #[inline] -pub(crate) fn cfsetispeed(termios: &mut Termios, speed: Speed) -> io::Result<()> { - unsafe { ret(c::cfsetispeed(termios, speed)) } +pub(crate) fn set_input_speed(termios: &mut Termios, arbitrary_speed: u32) -> io::Result<()> { + #[cfg(bsd)] + let encoded_speed = arbitrary_speed; + + #[cfg(not(bsd))] + let encoded_speed = match crate::termios::speed::encode(arbitrary_speed) { + Some(encoded_speed) => encoded_speed, + #[cfg(linux_kernel)] + None => c::BOTHER, + #[cfg(not(linux_kernel))] + None => return Err(io::Errno::INVAL), + }; + + #[cfg(not(linux_kernel))] + unsafe { + ret(c::cfsetispeed( + as_mut_ptr(termios).cast(), + encoded_speed.into(), + )) + } + + // Linux libc implementations don't support arbitrary speeds or setting the + // input and output speeds separately, so we encode the speed manually. + #[cfg(linux_kernel)] + { + use crate::termios::ControlModes; + + debug_assert_eq!(encoded_speed & !c::CBAUD, 0); + + termios.control_modes -= ControlModes::from_bits_retain(c::CIBAUD); + termios.control_modes |= ControlModes::from_bits_retain(encoded_speed << c::IBSHIFT); + + termios.input_speed = arbitrary_speed; + + Ok(()) + } } -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "nto", target_os = "wasi")))] #[inline] -pub(crate) fn cfsetspeed(termios: &mut Termios, speed: Speed) -> io::Result<()> { - unsafe { ret(c::cfsetspeed(termios, speed)) } +pub(crate) fn cfmakeraw(termios: &mut Termios) { + unsafe { c::cfmakeraw(as_mut_ptr(termios).cast()) } } pub(crate) fn isatty(fd: BorrowedFd<'_>) -> bool { @@ -200,7 +369,7 @@ #[cfg(feature = "procfs")] #[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))] -pub(crate) fn ttyname(dirfd: BorrowedFd<'_>, buf: &mut [u8]) -> io::Result { +pub(crate) fn ttyname(dirfd: BorrowedFd<'_>, buf: &mut [MaybeUninit]) -> io::Result { unsafe { // `ttyname_r` returns its error status rather than using `errno`. match c::ttyname_r(borrowed_fd(dirfd), buf.as_mut_ptr().cast(), buf.len()) { diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/termios/types.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/termios/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/termios/types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/termios/types.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,724 +0,0 @@ -use super::super::c; - -/// `TCSA*` values for use with [`tcsetattr`]. -/// -/// [`tcsetattr`]: crate::termios::tcsetattr -#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] -#[repr(i32)] -pub enum OptionalActions { - /// `TCSANOW`—Make the change immediately. - #[doc(alias = "TCSANOW")] - Now = c::TCSANOW, - - /// `TCSADRAIN`—Make the change after all output has been transmitted. - #[doc(alias = "TCSADRAIN")] - Drain = c::TCSADRAIN, - - /// `TCSAFLUSH`—Discard any pending input and then make the change - /// after all output has been transmitted. - #[doc(alias = "TCSAFLUSH")] - Flush = c::TCSAFLUSH, -} - -/// `TC*` values for use with [`tcflush`]. -/// -/// [`tcflush`]: crate::termios::tcflush -#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] -#[repr(i32)] -pub enum QueueSelector { - /// `TCIFLUSH`—Flush data received but not read. - #[doc(alias = "TCIFLUSH")] - IFlush = c::TCIFLUSH, - - /// `TCOFLUSH`—Flush data written but not transmitted. - #[doc(alias = "TCOFLUSH")] - OFlush = c::TCOFLUSH, - - /// `TCIOFLUSH`—`IFlush` and `OFlush` combined. - #[doc(alias = "TCIOFLUSH")] - IOFlush = c::TCIOFLUSH, -} - -/// `TC*` values for use with [`tcflow`]. -/// -/// [`tcflow`]: crate::termios::tcflow -#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] -#[repr(i32)] -pub enum Action { - /// `TCOOFF`—Suspend output. - #[doc(alias = "TCOOFF")] - OOff = c::TCOOFF, - - /// `TCOON`—Restart suspended output. - #[doc(alias = "TCOON")] - OOn = c::TCOON, - - /// `TCIOFF`—Transmits a STOP byte. - #[doc(alias = "TCIOFF")] - IOff = c::TCIOFF, - - /// `TCION`—Transmits a START byte. - #[doc(alias = "TCION")] - IOn = c::TCION, -} - -/// `struct termios` for use with [`tcgetattr`] and [`tcsetattr`]. -/// -/// [`tcgetattr`]: crate::termios::tcgetattr -/// [`tcsetattr`]: crate::termios::tcsetattr -#[doc(alias = "termios")] -pub type Termios = c::termios; - -/// `struct termios2` for use with [`tcgetattr2`] and [`tcsetattr2`]. -/// -/// [`tcgetattr2`]: crate::termios::tcgetattr2 -/// [`tcsetattr2`]: crate::termios::tcsetattr2 -#[cfg(all( - linux_kernel, - any( - target_arch = "x86", - target_arch = "x86_64", - target_arch = "x32", - target_arch = "riscv64", - target_arch = "aarch64", - target_arch = "arm", - target_arch = "mips", - target_arch = "mips64", - ) -))] -#[doc(alias = "termios2")] -pub type Termios2 = c::termios2; - -/// `struct winsize` for use with [`tcgetwinsize`]. -/// -/// [`tcgetwinsize`]: crate::termios::tcgetwinsize -#[doc(alias = "winsize")] -pub type Winsize = c::winsize; - -/// `tcflag_t`—A type for the flags fields of [`Termios`]. -#[doc(alias = "tcflag_t")] -pub type Tcflag = c::tcflag_t; - -/// `speed_t`—A return type for [`cfsetspeed`] and similar. -/// -/// [`cfsetspeed`]: crate::termios::cfsetspeed -#[doc(alias = "speed_t")] -pub type Speed = c::speed_t; - -/// `VINTR` -pub const VINTR: usize = c::VINTR as usize; - -/// `VQUIT` -pub const VQUIT: usize = c::VQUIT as usize; - -/// `VERASE` -pub const VERASE: usize = c::VERASE as usize; - -/// `VKILL` -pub const VKILL: usize = c::VKILL as usize; - -/// `VEOF` -pub const VEOF: usize = c::VEOF as usize; - -/// `VTIME` -pub const VTIME: usize = c::VTIME as usize; - -/// `VMIN` -pub const VMIN: usize = c::VMIN as usize; - -/// `VSWTC` -#[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))] -pub const VSWTC: usize = c::VSWTC as usize; - -/// `VSTART` -pub const VSTART: usize = c::VSTART as usize; - -/// `VSTOP` -pub const VSTOP: usize = c::VSTOP as usize; - -/// `VSUSP` -pub const VSUSP: usize = c::VSUSP as usize; - -/// `VEOL` -pub const VEOL: usize = c::VEOL as usize; - -/// `VREPRINT` -#[cfg(not(target_os = "haiku"))] -pub const VREPRINT: usize = c::VREPRINT as usize; - -/// `VDISCARD` -#[cfg(not(any(target_os = "aix", target_os = "haiku")))] -pub const VDISCARD: usize = c::VDISCARD as usize; - -/// `VWERASE` -#[cfg(not(any(target_os = "aix", target_os = "haiku")))] -pub const VWERASE: usize = c::VWERASE as usize; - -/// `VLNEXT` -#[cfg(not(target_os = "haiku"))] -pub const VLNEXT: usize = c::VLNEXT as usize; - -/// `VEOL2` -pub const VEOL2: usize = c::VEOL2 as usize; - -/// `IGNBRK` -pub const IGNBRK: Tcflag = c::IGNBRK; - -/// `BRKINT` -pub const BRKINT: Tcflag = c::BRKINT; - -/// `IGNPAR` -pub const IGNPAR: Tcflag = c::IGNPAR; - -/// `PARMRK` -pub const PARMRK: Tcflag = c::PARMRK; - -/// `INPCK` -pub const INPCK: Tcflag = c::INPCK; - -/// `ISTRIP` -pub const ISTRIP: Tcflag = c::ISTRIP; - -/// `INLCR` -pub const INLCR: Tcflag = c::INLCR; - -/// `IGNCR` -pub const IGNCR: Tcflag = c::IGNCR; - -/// `ICRNL` -pub const ICRNL: Tcflag = c::ICRNL; - -/// `IUCLC` -#[cfg(any(solarish, target_os = "haiku"))] -pub const IUCLC: Tcflag = c::IUCLC; - -/// `IXON` -pub const IXON: Tcflag = c::IXON; - -/// `IXANY` -#[cfg(not(target_os = "redox"))] -pub const IXANY: Tcflag = c::IXANY; - -/// `IXOFF` -pub const IXOFF: Tcflag = c::IXOFF; - -/// `IMAXBEL` -#[cfg(not(any(target_os = "haiku", target_os = "redox")))] -pub const IMAXBEL: Tcflag = c::IMAXBEL; - -/// `IUTF8` -#[cfg(not(any( - freebsdlike, - netbsdlike, - solarish, - target_os = "aix", - target_os = "emscripten", - target_os = "haiku", - target_os = "redox", -)))] -pub const IUTF8: Tcflag = c::IUTF8; - -/// `OPOST` -pub const OPOST: Tcflag = c::OPOST; - -/// `OLCUC` -#[cfg(not(any( - apple, - freebsdlike, - target_os = "aix", - target_os = "netbsd", - target_os = "redox", -)))] -pub const OLCUC: Tcflag = c::OLCUC; - -/// `ONLCR` -pub const ONLCR: Tcflag = c::ONLCR; - -/// `OCRNL` -pub const OCRNL: Tcflag = c::OCRNL; - -/// `ONOCR` -pub const ONOCR: Tcflag = c::ONOCR; - -/// `ONLRET` -pub const ONLRET: Tcflag = c::ONLRET; - -/// `OFILL` -#[cfg(not(bsd))] -pub const OFILL: Tcflag = c::OFILL; - -/// `OFDEL` -#[cfg(not(bsd))] -pub const OFDEL: Tcflag = c::OFDEL; - -/// `NLDLY` -#[cfg(not(any(bsd, solarish, target_os = "redox")))] -pub const NLDLY: Tcflag = c::NLDLY; - -/// `NL0` -#[cfg(not(any(bsd, solarish, target_os = "fuchsia", target_os = "redox")))] -pub const NL0: Tcflag = c::NL0; - -/// `NL1` -#[cfg(not(any(bsd, solarish, target_os = "fuchsia", target_os = "redox")))] -pub const NL1: Tcflag = c::NL1; - -/// `CRDLY` -#[cfg(not(any(bsd, solarish, target_os = "redox")))] -pub const CRDLY: Tcflag = c::CRDLY; - -/// `CR0` -#[cfg(not(any(bsd, solarish, target_os = "fuchsia", target_os = "redox")))] -pub const CR0: Tcflag = c::CR0; - -/// `CR1` -#[cfg(not(any( - target_env = "musl", - bsd, - solarish, - target_os = "emscripten", - target_os = "fuchsia", - target_os = "redox", -)))] -pub const CR1: Tcflag = c::CR1; - -/// `CR2` -#[cfg(not(any( - target_env = "musl", - bsd, - solarish, - target_os = "emscripten", - target_os = "fuchsia", - target_os = "redox", -)))] -pub const CR2: Tcflag = c::CR2; - -/// `CR3` -#[cfg(not(any( - target_env = "musl", - bsd, - solarish, - target_os = "emscripten", - target_os = "fuchsia", - target_os = "redox", -)))] -pub const CR3: Tcflag = c::CR3; - -/// `TABDLY` -#[cfg(not(any(netbsdlike, solarish, target_os = "dragonfly", target_os = "redox")))] -pub const TABDLY: Tcflag = c::TABDLY; - -/// `TAB0` -#[cfg(not(any( - netbsdlike, - solarish, - target_os = "dragonfly", - target_os = "fuchsia", - target_os = "redox", -)))] -pub const TAB0: Tcflag = c::TAB0; - -/// `TAB1` -#[cfg(not(any( - target_env = "musl", - bsd, - solarish, - target_os = "emscripten", - target_os = "fuchsia", - target_os = "redox", -)))] -pub const TAB1: Tcflag = c::TAB1; - -/// `TAB2` -#[cfg(not(any( - target_env = "musl", - bsd, - solarish, - target_os = "emscripten", - target_os = "fuchsia", - target_os = "redox", -)))] -pub const TAB2: Tcflag = c::TAB2; - -/// `TAB3` -#[cfg(not(any( - target_env = "musl", - bsd, - solarish, - target_os = "emscripten", - target_os = "fuchsia", - target_os = "redox", -)))] -pub const TAB3: Tcflag = c::TAB3; - -/// `BSDLY` -#[cfg(not(any(bsd, solarish, target_os = "redox")))] -pub const BSDLY: Tcflag = c::BSDLY; - -/// `BS0` -#[cfg(not(any(bsd, solarish, target_os = "fuchsia", target_os = "redox")))] -pub const BS0: Tcflag = c::BS0; - -/// `BS1` -#[cfg(not(any( - target_env = "musl", - bsd, - solarish, - target_os = "emscripten", - target_os = "fuchsia", - target_os = "redox", -)))] -pub const BS1: Tcflag = c::BS1; - -/// `FFDLY` -#[cfg(not(any(target_env = "musl", bsd, solarish, target_os = "redox")))] -pub const FFDLY: Tcflag = c::FFDLY; - -/// `FF0` -#[cfg(not(any(bsd, solarish, target_os = "fuchsia", target_os = "redox")))] -pub const FF0: Tcflag = c::FF0; - -/// `FF1` -#[cfg(not(any( - target_env = "musl", - bsd, - solarish, - target_os = "emscripten", - target_os = "fuchsia", - target_os = "redox", -)))] -pub const FF1: Tcflag = c::FF1; - -/// `VTDLY` -#[cfg(not(any(target_env = "musl", bsd, solarish, target_os = "redox")))] -pub const VTDLY: Tcflag = c::VTDLY; - -/// `VT0` -#[cfg(not(any(bsd, solarish, target_os = "fuchsia", target_os = "redox")))] -pub const VT0: Tcflag = c::VT0; - -/// `VT1` -#[cfg(not(any( - target_env = "musl", - bsd, - solarish, - target_os = "emscripten", - target_os = "fuchsia", - target_os = "redox", -)))] -pub const VT1: Tcflag = c::VT1; - -/// `B0` -pub const B0: Speed = c::B0; - -/// `B50` -pub const B50: Speed = c::B50; - -/// `B75` -pub const B75: Speed = c::B75; - -/// `B110` -pub const B110: Speed = c::B110; - -/// `B134` -pub const B134: Speed = c::B134; - -/// `B150` -pub const B150: Speed = c::B150; - -/// `B200` -pub const B200: Speed = c::B200; - -/// `B300` -pub const B300: Speed = c::B300; - -/// `B600` -pub const B600: Speed = c::B600; - -/// `B1200` -pub const B1200: Speed = c::B1200; - -/// `B1800` -pub const B1800: Speed = c::B1800; - -/// `B2400` -pub const B2400: Speed = c::B2400; - -/// `B4800` -pub const B4800: Speed = c::B4800; - -/// `B9600` -pub const B9600: Speed = c::B9600; - -/// `B19200` -pub const B19200: Speed = c::B19200; - -/// `B38400` -pub const B38400: Speed = c::B38400; - -/// `B57600` -#[cfg(not(target_os = "aix"))] -pub const B57600: Speed = c::B57600; - -/// `B115200` -#[cfg(not(target_os = "aix"))] -pub const B115200: Speed = c::B115200; - -/// `B230400` -#[cfg(not(target_os = "aix"))] -pub const B230400: Speed = c::B230400; - -/// `B460800` -#[cfg(not(any( - apple, - target_os = "aix", - target_os = "dragonfly", - target_os = "haiku", - target_os = "openbsd" -)))] -pub const B460800: Speed = c::B460800; - -/// `B500000` -#[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))] -pub const B500000: Speed = c::B500000; - -/// `B576000` -#[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))] -pub const B576000: Speed = c::B576000; - -/// `B921600` -#[cfg(not(any( - apple, - target_os = "aix", - target_os = "dragonfly", - target_os = "haiku", - target_os = "openbsd" -)))] -pub const B921600: Speed = c::B921600; - -/// `B1000000` -#[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))] -pub const B1000000: Speed = c::B1000000; - -/// `B1152000` -#[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))] -pub const B1152000: Speed = c::B1152000; - -/// `B1500000` -#[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))] -pub const B1500000: Speed = c::B1500000; - -/// `B2000000` -#[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))] -pub const B2000000: Speed = c::B2000000; - -/// `B2500000` -#[cfg(not(any( - target_arch = "sparc", - target_arch = "sparc64", - bsd, - target_os = "aix", - target_os = "haiku", - target_os = "solaris", -)))] -pub const B2500000: Speed = c::B2500000; - -/// `B3000000` -#[cfg(not(any( - target_arch = "sparc", - target_arch = "sparc64", - bsd, - target_os = "aix", - target_os = "haiku", - target_os = "solaris", -)))] -pub const B3000000: Speed = c::B3000000; - -/// `B3500000` -#[cfg(not(any( - target_arch = "sparc", - target_arch = "sparc64", - bsd, - target_os = "aix", - target_os = "haiku", - target_os = "solaris", -)))] -pub const B3500000: Speed = c::B3500000; - -/// `B4000000` -#[cfg(not(any( - target_arch = "sparc", - target_arch = "sparc64", - bsd, - target_os = "aix", - target_os = "haiku", - target_os = "solaris", -)))] -pub const B4000000: Speed = c::B4000000; - -/// `BOTHER` -#[cfg(linux_kernel)] -pub const BOTHER: Speed = c::BOTHER; - -/// `CSIZE` -pub const CSIZE: Tcflag = c::CSIZE; - -/// `CS5` -pub const CS5: Tcflag = c::CS5; - -/// `CS6` -pub const CS6: Tcflag = c::CS6; - -/// `CS7` -pub const CS7: Tcflag = c::CS7; - -/// `CS8` -pub const CS8: Tcflag = c::CS8; - -/// `CSTOPB` -pub const CSTOPB: Tcflag = c::CSTOPB; - -/// `CREAD` -pub const CREAD: Tcflag = c::CREAD; - -/// `PARENB` -pub const PARENB: Tcflag = c::PARENB; - -/// `PARODD` -pub const PARODD: Tcflag = c::PARODD; - -/// `HUPCL` -pub const HUPCL: Tcflag = c::HUPCL; - -/// `CLOCAL` -pub const CLOCAL: Tcflag = c::CLOCAL; - -/// `ISIG` -pub const ISIG: Tcflag = c::ISIG; - -/// `ICANON`—A flag for the `c_lflag` field of [`Termios`] indicating -/// canonical mode. -pub const ICANON: Tcflag = c::ICANON; - -/// `ECHO` -pub const ECHO: Tcflag = c::ECHO; - -/// `ECHOE` -pub const ECHOE: Tcflag = c::ECHOE; - -/// `ECHOK` -pub const ECHOK: Tcflag = c::ECHOK; - -/// `ECHONL` -pub const ECHONL: Tcflag = c::ECHONL; - -/// `NOFLSH` -pub const NOFLSH: Tcflag = c::NOFLSH; - -/// `TOSTOP` -pub const TOSTOP: Tcflag = c::TOSTOP; - -/// `IEXTEN` -pub const IEXTEN: Tcflag = c::IEXTEN; - -/// `EXTA` -#[cfg(not(any( - solarish, - target_os = "emscripten", - target_os = "haiku", - target_os = "redox", -)))] -pub const EXTA: Speed = c::EXTA; - -/// `EXTB` -#[cfg(not(any( - solarish, - target_os = "emscripten", - target_os = "haiku", - target_os = "redox", -)))] -pub const EXTB: Speed = c::EXTB; - -/// `CBAUD` -#[cfg(not(any(bsd, target_os = "haiku", target_os = "redox")))] -pub const CBAUD: Tcflag = c::CBAUD; - -/// `CBAUDEX` -#[cfg(not(any( - bsd, - solarish, - target_os = "aix", - target_os = "haiku", - target_os = "redox", -)))] -pub const CBAUDEX: Tcflag = c::CBAUDEX; - -/// `CIBAUD` -#[cfg(not(any( - target_arch = "powerpc", - target_arch = "powerpc64", - bsd, - target_os = "emscripten", - target_os = "haiku", - target_os = "redox", -)))] -pub const CIBAUD: Tcflag = c::CIBAUD; - -/// `CIBAUD` -// glibc on powerpc lacks a definition for `CIBAUD`, even though the Linux -// headers and Musl on powerpc both have one. So define it manually. -#[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))] -pub const CIBAUD: Tcflag = 0o77600000; - -/// `CMSPAR` -#[cfg(not(any( - bsd, - solarish, - target_os = "aix", - target_os = "emscripten", - target_os = "haiku", - target_os = "redox", -)))] -pub const CMSPAR: Tcflag = c::CMSPAR; - -/// `CRTSCTS` -#[cfg(not(any(target_os = "aix", target_os = "redox")))] -pub const CRTSCTS: Tcflag = c::CRTSCTS; - -/// `XCASE` -#[cfg(any(target_arch = "s390x", target_os = "haiku"))] -pub const XCASE: Tcflag = c::XCASE; - -/// `ECHOCTL` -#[cfg(not(any(target_os = "redox")))] -pub const ECHOCTL: Tcflag = c::ECHOCTL; - -/// `ECHOPRT` -#[cfg(not(any(target_os = "redox")))] -pub const ECHOPRT: Tcflag = c::ECHOPRT; - -/// `ECHOKE` -#[cfg(not(any(target_os = "redox")))] -pub const ECHOKE: Tcflag = c::ECHOKE; - -/// `FLUSHO` -#[cfg(not(any(target_os = "redox")))] -pub const FLUSHO: Tcflag = c::FLUSHO; - -/// `PENDIN` -#[cfg(not(any(target_os = "redox")))] -pub const PENDIN: Tcflag = c::PENDIN; - -/// `EXTPROC` -#[cfg(not(any(target_os = "aix", target_os = "haiku", target_os = "redox")))] -pub const EXTPROC: Tcflag = c::EXTPROC; - -/// `XTABS` -#[cfg(not(any( - bsd, - solarish, - target_os = "aix", - target_os = "haiku", - target_os = "redox", -)))] -pub const XTABS: Tcflag = c::XTABS; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/thread/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/thread/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/thread/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/thread/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,23 +1,25 @@ //! libc syscalls supporting `rustix::thread`. -use super::super::c; -use super::super::conv::ret; -use super::super::time::types::LibcTimespec; +use crate::backend::c; +use crate::backend::conv::ret; use crate::io; #[cfg(not(target_os = "redox"))] use crate::thread::{NanosleepRelativeResult, Timespec}; +#[cfg(all(target_env = "gnu", fix_y2038))] +use crate::timespec::LibcTimespec; use core::mem::MaybeUninit; #[cfg(linux_kernel)] use { - super::super::conv::{borrowed_fd, ret_c_int, syscall_ret}, + crate::backend::conv::{borrowed_fd, ret_c_int}, crate::fd::BorrowedFd, - crate::process::{Pid, RawNonZeroPid}, + crate::pid::Pid, crate::utils::as_mut_ptr, }; #[cfg(not(any( apple, freebsdlike, target_os = "emscripten", + target_os = "espidf", target_os = "haiku", target_os = "openbsd", target_os = "redox", @@ -25,21 +27,16 @@ )))] use {crate::thread::ClockId, core::ptr::null_mut}; -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] +#[cfg(all(target_env = "gnu", fix_y2038))] weak!(fn __clock_nanosleep_time64(c::clockid_t, c::c_int, *const LibcTimespec, *mut LibcTimespec) -> c::c_int); -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] +#[cfg(all(target_env = "gnu", fix_y2038))] weak!(fn __nanosleep64(*const LibcTimespec, *mut LibcTimespec) -> c::c_int); #[cfg(not(any( apple, target_os = "dragonfly", target_os = "emscripten", + target_os = "espidf", target_os = "freebsd", // FreeBSD 12 has clock_nanosleep, but libc targets FreeBSD 11. target_os = "haiku", target_os = "openbsd", @@ -48,40 +45,40 @@ )))] #[inline] pub(crate) fn clock_nanosleep_relative(id: ClockId, request: &Timespec) -> NanosleepRelativeResult { - let mut remain = MaybeUninit::::uninit(); - let flags = 0; - - // 32-bit gnu version: libc has `clock_nanosleep` but it is not y2038 safe - // by default. - #[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - ))] - unsafe { + // Old 32-bit version: libc has `clock_nanosleep` but it is not y2038 safe + // by default. But there may be a `__clock_nanosleep_time64` we can use. + #[cfg(fix_y2038)] + { + #[cfg(target_env = "gnu")] if let Some(libc_clock_nanosleep) = __clock_nanosleep_time64.get() { - match libc_clock_nanosleep( - id as c::clockid_t, - flags, - &request.clone().into(), - remain.as_mut_ptr(), - ) { - 0 => NanosleepRelativeResult::Ok, - err if err == io::Errno::INTR.0 => { - NanosleepRelativeResult::Interrupted(remain.assume_init().into()) - } - err => NanosleepRelativeResult::Err(io::Errno(err)), + let flags = 0; + let mut remain = MaybeUninit::::uninit(); + + unsafe { + return match libc_clock_nanosleep( + id as c::clockid_t, + flags, + &request.clone().into(), + remain.as_mut_ptr(), + ) { + 0 => NanosleepRelativeResult::Ok, + err if err == io::Errno::INTR.0 => { + NanosleepRelativeResult::Interrupted(remain.assume_init().into()) + } + err => NanosleepRelativeResult::Err(io::Errno(err)), + }; } - } else { - clock_nanosleep_relative_old(id, request) } + + clock_nanosleep_relative_old(id, request) } // Main version: libc is y2038 safe and has `clock_nanosleep`. - #[cfg(not(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - )))] + #[cfg(not(fix_y2038))] unsafe { + let flags = 0; + let mut remain = MaybeUninit::::uninit(); + match c::clock_nanosleep(id as c::clockid_t, flags, request, remain.as_mut_ptr()) { 0 => NanosleepRelativeResult::Ok, err if err == io::Errno::INTR.0 => { @@ -93,11 +90,10 @@ } #[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", + fix_y2038, + not(any(apple, target_os = "emscripten", target_os = "haiku")) ))] -unsafe fn clock_nanosleep_relative_old(id: ClockId, request: &Timespec) -> NanosleepRelativeResult { - use core::convert::TryInto; +fn clock_nanosleep_relative_old(id: ClockId, request: &Timespec) -> NanosleepRelativeResult { let tv_sec = match request.tv_sec.try_into() { Ok(tv_sec) => tv_sec, Err(_) => return NanosleepRelativeResult::Err(io::Errno::OVERFLOW), @@ -110,22 +106,24 @@ let mut old_remain = MaybeUninit::::uninit(); let flags = 0; - match c::clock_nanosleep( - id as c::clockid_t, - flags, - &old_request, - old_remain.as_mut_ptr(), - ) { - 0 => NanosleepRelativeResult::Ok, - err if err == io::Errno::INTR.0 => { - let old_remain = old_remain.assume_init(); - let remain = Timespec { - tv_sec: old_remain.tv_sec.into(), - tv_nsec: old_remain.tv_nsec.into(), - }; - NanosleepRelativeResult::Interrupted(remain) + unsafe { + match c::clock_nanosleep( + id as c::clockid_t, + flags, + &old_request, + old_remain.as_mut_ptr(), + ) { + 0 => NanosleepRelativeResult::Ok, + err if err == io::Errno::INTR.0 => { + let old_remain = old_remain.assume_init(); + let remain = Timespec { + tv_sec: old_remain.tv_sec.into(), + tv_nsec: old_remain.tv_nsec.into(), + }; + NanosleepRelativeResult::Interrupted(remain) + } + err => NanosleepRelativeResult::Err(io::Errno(err)), } - err => NanosleepRelativeResult::Err(io::Errno(err)), } } @@ -133,6 +131,7 @@ apple, target_os = "dragonfly", target_os = "emscripten", + target_os = "espidf", target_os = "freebsd", // FreeBSD 12 has clock_nanosleep, but libc targets FreeBSD 11. target_os = "haiku", target_os = "openbsd", @@ -141,50 +140,48 @@ )))] #[inline] pub(crate) fn clock_nanosleep_absolute(id: ClockId, request: &Timespec) -> io::Result<()> { - let flags = c::TIMER_ABSTIME; - - // 32-bit gnu version: libc has `clock_nanosleep` but it is not y2038 safe - // by default. - #[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - ))] + // Old 32-bit version: libc has `clock_nanosleep` but it is not y2038 safe + // by default. But there may be a `__clock_nanosleep_time64` we can use. + #[cfg(fix_y2038)] { + #[cfg(target_env = "gnu")] if let Some(libc_clock_nanosleep) = __clock_nanosleep_time64.get() { - match unsafe { - libc_clock_nanosleep( - id as c::clockid_t, - flags, - &request.clone().into(), - null_mut(), - ) - } { - 0 => Ok(()), - err => Err(io::Errno(err)), + let flags = c::TIMER_ABSTIME; + unsafe { + return match { + libc_clock_nanosleep( + id as c::clockid_t, + flags, + &request.clone().into(), + null_mut(), + ) + } { + 0 => Ok(()), + err => Err(io::Errno(err)), + }; } - } else { - clock_nanosleep_absolute_old(id, request) } + + clock_nanosleep_absolute_old(id, request) } // Main version: libc is y2038 safe and has `clock_nanosleep`. - #[cfg(not(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - )))] - match unsafe { c::clock_nanosleep(id as c::clockid_t, flags, request, null_mut()) } { - 0 => Ok(()), - err => Err(io::Errno(err)), + #[cfg(not(fix_y2038))] + { + let flags = c::TIMER_ABSTIME; + + match unsafe { c::clock_nanosleep(id as c::clockid_t, flags as _, request, null_mut()) } { + 0 => Ok(()), + err => Err(io::Errno(err)), + } } } #[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", + fix_y2038, + not(any(apple, target_os = "emscripten", target_os = "haiku")) ))] fn clock_nanosleep_absolute_old(id: ClockId, request: &Timespec) -> io::Result<()> { - use core::convert::TryInto; - let flags = c::TIMER_ABSTIME; let old_request = c::timespec { @@ -200,34 +197,32 @@ #[cfg(not(target_os = "redox"))] #[inline] pub(crate) fn nanosleep(request: &Timespec) -> NanosleepRelativeResult { - let mut remain = MaybeUninit::::uninit(); - - // 32-bit gnu version: libc has `nanosleep` but it is not y2038 safe by - // default. - #[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - ))] - unsafe { + // Old 32-bit version: libc has `nanosleep` but it is not y2038 safe by + // default. But there may be a `__nanosleep64` we can use. + #[cfg(fix_y2038)] + { + #[cfg(target_env = "gnu")] if let Some(libc_nanosleep) = __nanosleep64.get() { - match ret(libc_nanosleep(&request.clone().into(), remain.as_mut_ptr())) { - Ok(()) => NanosleepRelativeResult::Ok, - Err(io::Errno::INTR) => { - NanosleepRelativeResult::Interrupted(remain.assume_init().into()) - } - Err(err) => NanosleepRelativeResult::Err(err), + let mut remain = MaybeUninit::::uninit(); + unsafe { + return match ret(libc_nanosleep(&request.clone().into(), remain.as_mut_ptr())) { + Ok(()) => NanosleepRelativeResult::Ok, + Err(io::Errno::INTR) => { + NanosleepRelativeResult::Interrupted(remain.assume_init().into()) + } + Err(err) => NanosleepRelativeResult::Err(err), + }; } - } else { - nanosleep_old(request) } + + nanosleep_old(request) } // Main version: libc is y2038 safe and has `nanosleep`. - #[cfg(not(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - )))] + #[cfg(not(fix_y2038))] unsafe { + let mut remain = MaybeUninit::::uninit(); + match ret(c::nanosleep(request, remain.as_mut_ptr())) { Ok(()) => NanosleepRelativeResult::Ok, Err(io::Errno::INTR) => NanosleepRelativeResult::Interrupted(remain.assume_init()), @@ -236,12 +231,8 @@ } } -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] -unsafe fn nanosleep_old(request: &Timespec) -> NanosleepRelativeResult { - use core::convert::TryInto; +#[cfg(fix_y2038)] +fn nanosleep_old(request: &Timespec) -> NanosleepRelativeResult { let tv_sec = match request.tv_sec.try_into() { Ok(tv_sec) => tv_sec, Err(_) => return NanosleepRelativeResult::Err(io::Errno::OVERFLOW), @@ -253,17 +244,19 @@ let old_request = c::timespec { tv_sec, tv_nsec }; let mut old_remain = MaybeUninit::::uninit(); - match ret(c::nanosleep(&old_request, old_remain.as_mut_ptr())) { - Ok(()) => NanosleepRelativeResult::Ok, - Err(io::Errno::INTR) => { - let old_remain = old_remain.assume_init(); - let remain = Timespec { - tv_sec: old_remain.tv_sec.into(), - tv_nsec: old_remain.tv_nsec.into(), - }; - NanosleepRelativeResult::Interrupted(remain) + unsafe { + match ret(c::nanosleep(&old_request, old_remain.as_mut_ptr())) { + Ok(()) => NanosleepRelativeResult::Ok, + Err(io::Errno::INTR) => { + let old_remain = old_remain.assume_init(); + let remain = Timespec { + tv_sec: old_remain.tv_sec.into(), + tv_nsec: old_remain.tv_nsec.into(), + }; + NanosleepRelativeResult::Interrupted(remain) + } + Err(err) => NanosleepRelativeResult::Err(err), } - Err(err) => NanosleepRelativeResult::Err(err), } } @@ -280,8 +273,7 @@ unsafe { let tid = gettid(); - debug_assert_ne!(tid, 0); - Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(tid)) + Pid::from_raw_unchecked(tid) } } @@ -309,11 +301,18 @@ header: &mut linux_raw_sys::general::__user_cap_header_struct, data: &mut [MaybeUninit], ) -> io::Result<()> { + syscall! { + fn capget( + hdrp: *mut linux_raw_sys::general::__user_cap_header_struct, + data: *mut linux_raw_sys::general::__user_cap_data_struct + ) via SYS_capget -> c::c_int + } + unsafe { - syscall_ret(c::syscall( - c::SYS_capget, + ret(capget( as_mut_ptr(header), - data.as_mut_ptr(), + data.as_mut_ptr() + .cast::(), )) } } @@ -324,45 +323,70 @@ header: &mut linux_raw_sys::general::__user_cap_header_struct, data: &[linux_raw_sys::general::__user_cap_data_struct], ) -> io::Result<()> { - unsafe { syscall_ret(c::syscall(c::SYS_capset, as_mut_ptr(header), data.as_ptr())) } + syscall! { + fn capset( + hdrp: *mut linux_raw_sys::general::__user_cap_header_struct, + data: *const linux_raw_sys::general::__user_cap_data_struct + ) via SYS_capset -> c::c_int + } + + unsafe { ret(capset(as_mut_ptr(header), data.as_ptr())) } } #[cfg(linux_kernel)] #[inline] -pub(crate) fn setuid_thread(uid: crate::process::Uid) -> io::Result<()> { - unsafe { syscall_ret(c::syscall(c::SYS_setuid, uid.as_raw())) } +pub(crate) fn setuid_thread(uid: crate::ugid::Uid) -> io::Result<()> { + syscall! { + fn setuid(uid: c::uid_t) via SYS_setuid -> c::c_int + } + + unsafe { ret(setuid(uid.as_raw())) } } #[cfg(linux_kernel)] #[inline] pub(crate) fn setresuid_thread( - ruid: crate::process::Uid, - euid: crate::process::Uid, - suid: crate::process::Uid, + ruid: crate::ugid::Uid, + euid: crate::ugid::Uid, + suid: crate::ugid::Uid, ) -> io::Result<()> { #[cfg(any(target_arch = "x86", target_arch = "arm", target_arch = "sparc"))] const SYS: c::c_long = c::SYS_setresuid32 as c::c_long; #[cfg(not(any(target_arch = "x86", target_arch = "arm", target_arch = "sparc")))] const SYS: c::c_long = c::SYS_setresuid as c::c_long; - unsafe { syscall_ret(c::syscall(SYS, ruid.as_raw(), euid.as_raw(), suid.as_raw())) } + + syscall! { + fn setresuid(ruid: c::uid_t, euid: c::uid_t, suid: c::uid_t) via SYS -> c::c_int + } + + unsafe { ret(setresuid(ruid.as_raw(), euid.as_raw(), suid.as_raw())) } } #[cfg(linux_kernel)] #[inline] -pub(crate) fn setgid_thread(gid: crate::process::Gid) -> io::Result<()> { - unsafe { syscall_ret(c::syscall(c::SYS_setgid, gid.as_raw())) } +pub(crate) fn setgid_thread(gid: crate::ugid::Gid) -> io::Result<()> { + syscall! { + fn setgid(gid: c::gid_t) via SYS_setgid -> c::c_int + } + + unsafe { ret(setgid(gid.as_raw())) } } #[cfg(linux_kernel)] #[inline] pub(crate) fn setresgid_thread( - rgid: crate::process::Gid, - egid: crate::process::Gid, - sgid: crate::process::Gid, + rgid: crate::ugid::Gid, + egid: crate::ugid::Gid, + sgid: crate::ugid::Gid, ) -> io::Result<()> { #[cfg(any(target_arch = "x86", target_arch = "arm", target_arch = "sparc"))] const SYS: c::c_long = c::SYS_setresgid32 as c::c_long; #[cfg(not(any(target_arch = "x86", target_arch = "arm", target_arch = "sparc")))] const SYS: c::c_long = c::SYS_setresgid as c::c_long; - unsafe { syscall_ret(c::syscall(SYS, rgid.as_raw(), egid.as_raw(), sgid.as_raw())) } + + syscall! { + fn setresgid(rgid: c::gid_t, egid: c::gid_t, sgid: c::gid_t) via SYS -> c::c_int + } + + unsafe { ret(setresgid(rgid.as_raw(), egid.as_raw(), sgid.as_raw())) } } diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/time/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/time/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/time/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/time/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,49 +1,38 @@ //! libc syscalls supporting `rustix::time`. -use super::super::c; -use super::super::conv::ret; -#[cfg(feature = "time")] +use crate::backend::c; +use crate::backend::conv::ret; #[cfg(any(linux_kernel, target_os = "fuchsia"))] -use super::super::time::types::LibcItimerspec; -use super::super::time::types::LibcTimespec; -use super::types::Timespec; +#[cfg(feature = "time")] +#[cfg(any(all(target_env = "gnu", fix_y2038), not(fix_y2038)))] +use crate::backend::time::types::LibcItimerspec; #[cfg(not(target_os = "wasi"))] -use super::types::{ClockId, DynamicClockId}; +use crate::clockid::{ClockId, DynamicClockId}; use crate::io; +#[cfg(all(target_env = "gnu", fix_y2038))] +use crate::timespec::LibcTimespec; +use crate::timespec::Timespec; use core::mem::MaybeUninit; #[cfg(any(linux_kernel, target_os = "fuchsia"))] #[cfg(feature = "time")] use { - super::super::conv::{borrowed_fd, ret_owned_fd}, + crate::backend::conv::{borrowed_fd, ret_owned_fd}, crate::fd::{BorrowedFd, OwnedFd}, crate::time::{Itimerspec, TimerfdClockId, TimerfdFlags, TimerfdTimerFlags}, }; -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] +#[cfg(all(target_env = "gnu", fix_y2038))] weak!(fn __clock_gettime64(c::clockid_t, *mut LibcTimespec) -> c::c_int); -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] +#[cfg(all(target_env = "gnu", fix_y2038))] weak!(fn __clock_settime64(c::clockid_t, *const LibcTimespec) -> c::c_int); -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] +#[cfg(all(target_env = "gnu", fix_y2038))] weak!(fn __clock_getres64(c::clockid_t, *mut LibcTimespec) -> c::c_int); -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] +#[cfg(any(linux_kernel, target_os = "fuchsia"))] +#[cfg(all(target_env = "gnu", fix_y2038))] #[cfg(feature = "time")] weak!(fn __timerfd_gettime64(c::c_int, *mut LibcItimerspec) -> c::c_int); -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] +#[cfg(any(linux_kernel, target_os = "fuchsia"))] +#[cfg(all(target_env = "gnu", fix_y2038))] #[cfg(feature = "time")] weak!(fn __timerfd_settime64(c::c_int, c::c_int, *const LibcItimerspec, *mut LibcItimerspec) -> c::c_int); @@ -51,47 +40,45 @@ #[inline] #[must_use] pub(crate) fn clock_getres(id: ClockId) -> Timespec { - let mut timespec = MaybeUninit::::uninit(); - - // 32-bit gnu version: libc has `clock_getres` but it is not y2038 safe by - // default. - #[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - ))] - unsafe { + // Old 32-bit version: libc has `clock_getres` but it is not y2038 safe by + // default. But there may be a `__clock_getres64` we can use. + #[cfg(fix_y2038)] + { + #[cfg(target_env = "gnu")] if let Some(libc_clock_getres) = __clock_getres64.get() { - ret(libc_clock_getres(id as c::clockid_t, timespec.as_mut_ptr())).unwrap(); - timespec.assume_init().into() - } else { - clock_getres_old(id) + let mut timespec = MaybeUninit::::uninit(); + unsafe { + ret(libc_clock_getres(id as c::clockid_t, timespec.as_mut_ptr())).unwrap(); + return timespec.assume_init().into(); + } } + + clock_getres_old(id) } // Main version: libc is y2038 safe and has `clock_getres`. - #[cfg(not(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - )))] + #[cfg(not(fix_y2038))] unsafe { + let mut timespec = MaybeUninit::::uninit(); let _ = c::clock_getres(id as c::clockid_t, timespec.as_mut_ptr()); timespec.assume_init() } } -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] +#[cfg(fix_y2038)] #[must_use] -unsafe fn clock_getres_old(id: ClockId) -> Timespec { +fn clock_getres_old(id: ClockId) -> Timespec { let mut old_timespec = MaybeUninit::::uninit(); - ret(c::clock_getres( - id as c::clockid_t, - old_timespec.as_mut_ptr(), - )) - .unwrap(); - let old_timespec = old_timespec.assume_init(); + + let old_timespec = unsafe { + ret(c::clock_getres( + id as c::clockid_t, + old_timespec.as_mut_ptr(), + )) + .unwrap(); + old_timespec.assume_init() + }; + Timespec { tv_sec: old_timespec.tv_sec.into(), tv_nsec: old_timespec.tv_nsec.into(), @@ -102,52 +89,52 @@ #[inline] #[must_use] pub(crate) fn clock_gettime(id: ClockId) -> Timespec { - let mut timespec = MaybeUninit::::uninit(); - - #[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - ))] - unsafe { + // Old 32-bit version: libc has `clock_gettime` but it is not y2038 safe by + // default. But there may be a `__clock_gettime64` we can use. + #[cfg(fix_y2038)] + { + #[cfg(target_env = "gnu")] if let Some(libc_clock_gettime) = __clock_gettime64.get() { - ret(libc_clock_gettime( - id as c::clockid_t, - timespec.as_mut_ptr(), - )) - .unwrap(); - timespec.assume_init().into() - } else { - clock_gettime_old(id) + let mut timespec = MaybeUninit::::uninit(); + unsafe { + ret(libc_clock_gettime( + id as c::clockid_t, + timespec.as_mut_ptr(), + )) + .unwrap(); + return timespec.assume_init().into(); + } } + + clock_gettime_old(id) } - // Use `unwrap()` here because `clock_getres` can fail if the clock itself + // Use `.unwrap()` here because `clock_getres` can fail if the clock itself // overflows a number of seconds, but if that happens, the monotonic clocks // can't maintain their invariants, or the realtime clocks aren't properly // configured. - #[cfg(not(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - )))] + #[cfg(not(fix_y2038))] unsafe { + let mut timespec = MaybeUninit::::uninit(); ret(c::clock_gettime(id as c::clockid_t, timespec.as_mut_ptr())).unwrap(); timespec.assume_init() } } -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] +#[cfg(fix_y2038)] #[must_use] -unsafe fn clock_gettime_old(id: ClockId) -> Timespec { +fn clock_gettime_old(id: ClockId) -> Timespec { let mut old_timespec = MaybeUninit::::uninit(); - ret(c::clock_gettime( - id as c::clockid_t, - old_timespec.as_mut_ptr(), - )) - .unwrap(); - let old_timespec = old_timespec.assume_init(); + + let old_timespec = unsafe { + ret(c::clock_gettime( + id as c::clockid_t, + old_timespec.as_mut_ptr(), + )) + .unwrap(); + old_timespec.assume_init() + }; + Timespec { tv_sec: old_timespec.tv_sec.into(), tv_nsec: old_timespec.tv_nsec.into(), @@ -157,80 +144,85 @@ #[cfg(not(target_os = "wasi"))] #[inline] pub(crate) fn clock_gettime_dynamic(id: DynamicClockId<'_>) -> io::Result { - let mut timespec = MaybeUninit::::uninit(); - unsafe { - let id: c::clockid_t = match id { - DynamicClockId::Known(id) => id as c::clockid_t, + let id: c::clockid_t = match id { + DynamicClockId::Known(id) => id as c::clockid_t, - #[cfg(linux_kernel)] - DynamicClockId::Dynamic(fd) => { - use crate::fd::AsRawFd; - const CLOCKFD: i32 = 3; - (!fd.as_raw_fd() << 3) | CLOCKFD - } - - #[cfg(not(linux_kernel))] - DynamicClockId::Dynamic(_fd) => { - // Dynamic clocks are not supported on this platform. - return Err(io::Errno::INVAL); - } + #[cfg(linux_kernel)] + DynamicClockId::Dynamic(fd) => { + use crate::fd::AsRawFd; + const CLOCKFD: i32 = 3; + (!fd.as_raw_fd() << 3) | CLOCKFD + } - #[cfg(linux_kernel)] - DynamicClockId::RealtimeAlarm => c::CLOCK_REALTIME_ALARM, + #[cfg(not(linux_kernel))] + DynamicClockId::Dynamic(_fd) => { + // Dynamic clocks are not supported on this platform. + return Err(io::Errno::INVAL); + } - #[cfg(linux_kernel)] - DynamicClockId::Tai => c::CLOCK_TAI, + #[cfg(linux_kernel)] + DynamicClockId::RealtimeAlarm => c::CLOCK_REALTIME_ALARM, - #[cfg(any(linux_kernel, target_os = "openbsd"))] - DynamicClockId::Boottime => c::CLOCK_BOOTTIME, + #[cfg(linux_kernel)] + DynamicClockId::Tai => c::CLOCK_TAI, - #[cfg(linux_kernel)] - DynamicClockId::BoottimeAlarm => c::CLOCK_BOOTTIME_ALARM, - }; - - #[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", + #[cfg(any( + freebsdlike, + linux_kernel, + target_os = "fuchsia", + target_os = "openbsd" ))] - { - if let Some(libc_clock_gettime) = __clock_gettime64.get() { + DynamicClockId::Boottime => c::CLOCK_BOOTTIME, + + #[cfg(any(linux_kernel, target_os = "fuchsia"))] + DynamicClockId::BoottimeAlarm => c::CLOCK_BOOTTIME_ALARM, + }; + + // Old 32-bit version: libc has `clock_gettime` but it is not y2038 + // safe by default. But there may be a `__clock_gettime64` we can use. + #[cfg(fix_y2038)] + { + #[cfg(target_env = "gnu")] + if let Some(libc_clock_gettime) = __clock_gettime64.get() { + let mut timespec = MaybeUninit::::uninit(); + unsafe { ret(libc_clock_gettime( id as c::clockid_t, timespec.as_mut_ptr(), ))?; - Ok(timespec.assume_init().into()) - } else { - clock_gettime_dynamic_old(id) + return Ok(timespec.assume_init().into()); } } - #[cfg(not(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - )))] - { - ret(c::clock_gettime(id as c::clockid_t, timespec.as_mut_ptr()))?; + clock_gettime_dynamic_old(id) + } - Ok(timespec.assume_init()) - } + // Main version: libc is y2038 safe and has `clock_gettime`. + #[cfg(not(fix_y2038))] + unsafe { + let mut timespec = MaybeUninit::::uninit(); + + ret(c::clock_gettime(id as c::clockid_t, timespec.as_mut_ptr()))?; + + Ok(timespec.assume_init()) } } -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] +#[cfg(fix_y2038)] #[inline] -unsafe fn clock_gettime_dynamic_old(id: c::clockid_t) -> io::Result { +fn clock_gettime_dynamic_old(id: c::clockid_t) -> io::Result { let mut old_timespec = MaybeUninit::::uninit(); - ret(c::clock_gettime( - id as c::clockid_t, - old_timespec.as_mut_ptr(), - ))?; + let old_timespec = unsafe { + ret(c::clock_gettime( + id as c::clockid_t, + old_timespec.as_mut_ptr(), + ))?; + + old_timespec.assume_init() + }; - let old_timespec = old_timespec.assume_init(); Ok(Timespec { tv_sec: old_timespec.tv_sec.into(), tv_nsec: old_timespec.tv_nsec.into(), @@ -244,25 +236,25 @@ )))] #[inline] pub(crate) fn clock_settime(id: ClockId, timespec: Timespec) -> io::Result<()> { - #[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - ))] - unsafe { + // Old 32-bit version: libc has `clock_gettime` but it is not y2038 safe by + // default. But there may be a `__clock_settime64` we can use. + #[cfg(fix_y2038)] + { + #[cfg(target_env = "gnu")] if let Some(libc_clock_settime) = __clock_settime64.get() { - let mut new_timespec = core::mem::zeroed::(); - new_timespec.tv_sec = timespec.tv_sec; - new_timespec.tv_nsec = timespec.tv_nsec as _; - ret(libc_clock_settime(id as c::clockid_t, &new_timespec)) - } else { - clock_settime_old(id, timespec) + unsafe { + let mut new_timespec = core::mem::zeroed::(); + new_timespec.tv_sec = timespec.tv_sec; + new_timespec.tv_nsec = timespec.tv_nsec as _; + return ret(libc_clock_settime(id as c::clockid_t, &new_timespec)); + } } + + clock_settime_old(id, timespec) } - #[cfg(not(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - )))] + // Main version: libc is y2038 safe and has `clock_settime`. + #[cfg(not(fix_y2038))] unsafe { ret(c::clock_settime(id as c::clockid_t, ×pec)) } @@ -273,12 +265,8 @@ target_os = "wasi", all(apple, not(target_os = "macos")) )))] -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] -unsafe fn clock_settime_old(id: ClockId, timespec: Timespec) -> io::Result<()> { - use core::convert::TryInto; +#[cfg(fix_y2038)] +fn clock_settime_old(id: ClockId, timespec: Timespec) -> io::Result<()> { let old_timespec = c::timespec { tv_sec: timespec .tv_sec @@ -286,13 +274,14 @@ .map_err(|_| io::Errno::OVERFLOW)?, tv_nsec: timespec.tv_nsec as _, }; - ret(c::clock_settime(id as c::clockid_t, &old_timespec)) + + unsafe { ret(c::clock_settime(id as c::clockid_t, &old_timespec)) } } #[cfg(any(linux_kernel, target_os = "fuchsia"))] #[cfg(feature = "time")] pub(crate) fn timerfd_create(id: TimerfdClockId, flags: TimerfdFlags) -> io::Result { - unsafe { ret_owned_fd(c::timerfd_create(id as c::clockid_t, flags.bits())) } + unsafe { ret_owned_fd(c::timerfd_create(id as c::clockid_t, bitflags_bits!(flags))) } } #[cfg(any(linux_kernel, target_os = "fuchsia"))] @@ -302,34 +291,33 @@ flags: TimerfdTimerFlags, new_value: &Itimerspec, ) -> io::Result { - let mut result = MaybeUninit::::uninit(); - - #[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - ))] - unsafe { + // Old 32-bit version: libc has `timerfd_settime` but it is not y2038 safe + // by default. But there may be a `__timerfd_settime64` we can use. + #[cfg(fix_y2038)] + { + #[cfg(target_env = "gnu")] if let Some(libc_timerfd_settime) = __timerfd_settime64.get() { - ret(libc_timerfd_settime( - borrowed_fd(fd), - flags.bits(), - &new_value.clone().into(), - result.as_mut_ptr(), - ))?; - Ok(result.assume_init().into()) - } else { - timerfd_settime_old(fd, flags, new_value) + let mut result = MaybeUninit::::uninit(); + unsafe { + ret(libc_timerfd_settime( + borrowed_fd(fd), + bitflags_bits!(flags), + &new_value.clone().into(), + result.as_mut_ptr(), + ))?; + return Ok(result.assume_init().into()); + } } + + timerfd_settime_old(fd, flags, new_value) } - #[cfg(not(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - )))] + #[cfg(not(fix_y2038))] unsafe { + let mut result = MaybeUninit::::uninit(); ret(c::timerfd_settime( borrowed_fd(fd), - flags.bits(), + bitflags_bits!(flags), new_value, result.as_mut_ptr(), ))?; @@ -338,18 +326,13 @@ } #[cfg(any(linux_kernel, target_os = "fuchsia"))] -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] +#[cfg(fix_y2038)] #[cfg(feature = "time")] -unsafe fn timerfd_settime_old( +fn timerfd_settime_old( fd: BorrowedFd<'_>, flags: TimerfdTimerFlags, new_value: &Itimerspec, ) -> io::Result { - use core::convert::TryInto; - let mut old_result = MaybeUninit::::uninit(); // Convert `new_value` to the old `itimerspec` format. @@ -380,14 +363,16 @@ }, }; - ret(c::timerfd_settime( - borrowed_fd(fd), - flags.bits(), - &old_new_value, - old_result.as_mut_ptr(), - ))?; + let old_result = unsafe { + ret(c::timerfd_settime( + borrowed_fd(fd), + bitflags_bits!(flags), + &old_new_value, + old_result.as_mut_ptr(), + ))?; + old_result.assume_init() + }; - let old_result = old_result.assume_init(); Ok(Itimerspec { it_interval: Timespec { tv_sec: old_result @@ -411,45 +396,41 @@ #[cfg(any(linux_kernel, target_os = "fuchsia"))] #[cfg(feature = "time")] pub(crate) fn timerfd_gettime(fd: BorrowedFd<'_>) -> io::Result { - let mut result = MaybeUninit::::uninit(); - - #[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - ))] - unsafe { + // Old 32-bit version: libc has `timerfd_gettime` but it is not y2038 safe + // by default. But there may be a `__timerfd_gettime64` we can use. + #[cfg(fix_y2038)] + { + #[cfg(target_env = "gnu")] if let Some(libc_timerfd_gettime) = __timerfd_gettime64.get() { - ret(libc_timerfd_gettime(borrowed_fd(fd), result.as_mut_ptr()))?; - Ok(result.assume_init().into()) - } else { - timerfd_gettime_old(fd) + let mut result = MaybeUninit::::uninit(); + unsafe { + ret(libc_timerfd_gettime(borrowed_fd(fd), result.as_mut_ptr()))?; + return Ok(result.assume_init().into()); + } } + + timerfd_gettime_old(fd) } - #[cfg(not(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", - )))] + #[cfg(not(fix_y2038))] unsafe { + let mut result = MaybeUninit::::uninit(); ret(c::timerfd_gettime(borrowed_fd(fd), result.as_mut_ptr()))?; Ok(result.assume_init()) } } #[cfg(any(linux_kernel, target_os = "fuchsia"))] -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] +#[cfg(fix_y2038)] #[cfg(feature = "time")] -unsafe fn timerfd_gettime_old(fd: BorrowedFd<'_>) -> io::Result { - use core::convert::TryInto; - +fn timerfd_gettime_old(fd: BorrowedFd<'_>) -> io::Result { let mut old_result = MaybeUninit::::uninit(); - ret(c::timerfd_gettime(borrowed_fd(fd), old_result.as_mut_ptr()))?; + let old_result = unsafe { + ret(c::timerfd_gettime(borrowed_fd(fd), old_result.as_mut_ptr()))?; + old_result.assume_init() + }; - let old_result = old_result.assume_init(); Ok(Itimerspec { it_interval: Timespec { tv_sec: old_result diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/time/types.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/time/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/time/types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/time/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,224 +1,21 @@ -use super::super::c; -#[cfg(not(target_os = "wasi"))] -use crate::fd::BorrowedFd; +#[cfg(any(linux_kernel, target_os = "fuchsia"))] +use crate::backend::c; +#[cfg(any(linux_kernel, target_os = "fuchsia"))] +#[cfg(fix_y2038)] +use crate::timespec::LibcTimespec; +#[cfg(any(linux_kernel, target_os = "fuchsia"))] +#[cfg(fix_y2038)] +use crate::timespec::Timespec; #[cfg(any(linux_kernel, target_os = "fuchsia"))] use bitflags::bitflags; -/// `struct timespec` -#[cfg(not(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -)))] -pub type Timespec = c::timespec; - -/// `struct timespec` -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] -#[derive(Debug, Clone, Copy)] -#[repr(C)] -pub struct Timespec { - /// Seconds. - pub tv_sec: Secs, - - /// Nanoseconds. Must be less than 1_000_000_000. - pub tv_nsec: Nsecs, -} - -/// A type for the `tv_sec` field of [`Timespec`]. -#[cfg(not(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -)))] -#[allow(deprecated)] -pub type Secs = c::time_t; - -/// A type for the `tv_sec` field of [`Timespec`]. -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] -pub type Secs = i64; - -/// A type for the `tv_nsec` field of [`Timespec`]. -#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] -pub type Nsecs = i64; - -/// A type for the `tv_nsec` field of [`Timespec`]. -#[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] -pub type Nsecs = c::c_long; - -/// On most platforms, `LibcTimespec` is just `Timespec`. -#[cfg(not(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -)))] -pub(crate) type LibcTimespec = Timespec; - -/// On 32-bit glibc platforms, `timespec` has anonymous padding fields, which -/// Rust doesn't support yet (see `unnamed_fields`), so we define our own -/// struct with explicit padding, with bidirectional `From` impls. -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] -#[repr(C)] -#[derive(Debug, Clone)] -pub(crate) struct LibcTimespec { - pub(crate) tv_sec: Secs, - - #[cfg(target_endian = "big")] - padding: core::mem::MaybeUninit, - - pub(crate) tv_nsec: Nsecs, - - #[cfg(target_endian = "little")] - padding: core::mem::MaybeUninit, -} - -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] -impl From for Timespec { - #[inline] - fn from(t: LibcTimespec) -> Self { - Self { - tv_sec: t.tv_sec, - tv_nsec: t.tv_nsec, - } - } -} - -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] -impl From for LibcTimespec { - #[inline] - fn from(t: Timespec) -> Self { - Self { - tv_sec: t.tv_sec, - tv_nsec: t.tv_nsec, - padding: core::mem::MaybeUninit::uninit(), - } - } -} - -/// `CLOCK_*` constants for use with [`clock_gettime`]. -/// -/// These constants are always supported at runtime, so `clock_gettime` never -/// has to fail with `INVAL` due to an unsupported clock. See -/// [`DynamicClockId`] for a greater set of clocks, with the caveat that not -/// all of them are always supported. -/// -/// [`clock_gettime`]: crate::time::clock_gettime -#[cfg(not(any(apple, target_os = "wasi")))] -#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)] -#[cfg_attr(not(target_os = "dragonfly"), repr(i32))] -#[cfg_attr(target_os = "dragonfly", repr(u64))] -#[non_exhaustive] -pub enum ClockId { - /// `CLOCK_REALTIME` - Realtime = c::CLOCK_REALTIME, - - /// `CLOCK_MONOTONIC` - Monotonic = c::CLOCK_MONOTONIC, - - /// `CLOCK_UPTIME` - #[cfg(any(freebsdlike, target_os = "openbsd"))] - Uptime = c::CLOCK_UPTIME, - - /// `CLOCK_PROCESS_CPUTIME_ID` - #[cfg(not(any(solarish, target_os = "netbsd", target_os = "redox")))] - ProcessCPUTime = c::CLOCK_PROCESS_CPUTIME_ID, - - /// `CLOCK_THREAD_CPUTIME_ID` - #[cfg(not(any(solarish, target_os = "netbsd", target_os = "redox")))] - ThreadCPUTime = c::CLOCK_THREAD_CPUTIME_ID, - - /// `CLOCK_REALTIME_COARSE` - #[cfg(any(linux_kernel, target_os = "freebsd"))] - RealtimeCoarse = c::CLOCK_REALTIME_COARSE, - - /// `CLOCK_MONOTONIC_COARSE` - #[cfg(any(linux_kernel, target_os = "freebsd"))] - MonotonicCoarse = c::CLOCK_MONOTONIC_COARSE, - - /// `CLOCK_MONOTONIC_RAW` - #[cfg(linux_kernel)] - MonotonicRaw = c::CLOCK_MONOTONIC_RAW, -} - -/// `CLOCK_*` constants for use with [`clock_gettime`]. -/// -/// These constants are always supported at runtime, so `clock_gettime` never -/// has to fail with `INVAL` due to an unsupported clock. See -/// [`DynamicClockId`] for a greater set of clocks, with the caveat that not -/// all of them are always supported. -#[cfg(apple)] -#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)] -#[repr(u32)] -#[non_exhaustive] -pub enum ClockId { - /// `CLOCK_REALTIME` - Realtime = c::CLOCK_REALTIME, - - /// `CLOCK_MONOTONIC` - Monotonic = c::CLOCK_MONOTONIC, - - /// `CLOCK_PROCESS_CPUTIME_ID` - ProcessCPUTime = c::CLOCK_PROCESS_CPUTIME_ID, - - /// `CLOCK_THREAD_CPUTIME_ID` - ThreadCPUTime = c::CLOCK_THREAD_CPUTIME_ID, -} - -/// `CLOCK_*` constants for use with [`clock_gettime_dynamic`]. -/// -/// These constants may be unsupported at runtime, depending on the OS version, -/// and `clock_gettime_dynamic` may fail with `INVAL`. See [`ClockId`] for -/// clocks which are always supported at runtime. -/// -/// [`clock_gettime_dynamic`]: crate::time::clock_gettime_dynamic -#[cfg(not(target_os = "wasi"))] -#[derive(Debug, Copy, Clone)] -#[non_exhaustive] -pub enum DynamicClockId<'a> { - /// `ClockId` values that are always supported at runtime. - Known(ClockId), - - /// Linux dynamic clocks. - Dynamic(BorrowedFd<'a>), - - /// `CLOCK_REALTIME_ALARM`, available on Linux >= 3.0 - #[cfg(linux_kernel)] - RealtimeAlarm, - - /// `CLOCK_TAI`, available on Linux >= 3.10 - #[cfg(linux_kernel)] - Tai, - - /// `CLOCK_BOOTTIME`, available on Linux >= 2.6.39 - #[cfg(any(linux_kernel, target_os = "openbsd"))] - Boottime, - - /// `CLOCK_BOOTTIME_ALARM`, available on Linux >= 2.6.39 - #[cfg(linux_kernel)] - BoottimeAlarm, -} - /// `struct itimerspec` for use with [`timerfd_gettime`] and /// [`timerfd_settime`]. /// /// [`timerfd_gettime`]: crate::time::timerfd_gettime /// [`timerfd_settime`]: crate::time::timerfd_settime #[cfg(any(linux_kernel, target_os = "fuchsia"))] -#[cfg(not(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -)))] +#[cfg(not(fix_y2038))] pub type Itimerspec = c::itimerspec; /// `struct itimerspec` for use with [`timerfd_gettime`] and @@ -227,33 +24,25 @@ /// [`timerfd_gettime`]: crate::time::timerfd_gettime /// [`timerfd_settime`]: crate::time::timerfd_settime #[cfg(any(linux_kernel, target_os = "fuchsia"))] -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] -#[allow(missing_docs)] +#[cfg(fix_y2038)] #[repr(C)] #[derive(Debug, Clone)] pub struct Itimerspec { + /// The interval of an interval timer. pub it_interval: Timespec, + /// Time remaining in the current interval. pub it_value: Timespec, } /// On most platforms, `LibcItimerspec` is just `Itimerspec`. #[cfg(any(linux_kernel, target_os = "fuchsia"))] -#[cfg(not(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -)))] +#[cfg(not(fix_y2038))] pub(crate) type LibcItimerspec = Itimerspec; /// On 32-bit glibc platforms, `LibcTimespec` differs from `Timespec`, so we /// define our own struct, with bidirectional `From` impls. #[cfg(any(linux_kernel, target_os = "fuchsia"))] -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] +#[cfg(fix_y2038)] #[repr(C)] #[derive(Debug, Clone)] pub(crate) struct LibcItimerspec { @@ -262,10 +51,7 @@ } #[cfg(any(linux_kernel, target_os = "fuchsia"))] -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] +#[cfg(fix_y2038)] impl From for Itimerspec { #[inline] fn from(t: LibcItimerspec) -> Self { @@ -277,10 +63,7 @@ } #[cfg(any(linux_kernel, target_os = "fuchsia"))] -#[cfg(all( - any(target_arch = "arm", target_arch = "mips", target_arch = "x86"), - target_env = "gnu", -))] +#[cfg(fix_y2038)] impl From for LibcItimerspec { #[inline] fn from(t: Itimerspec) -> Self { @@ -296,12 +79,14 @@ /// `TFD_*` flags for use with [`timerfd_create`]. /// /// [`timerfd_create`]: crate::time::timerfd_create - pub struct TimerfdFlags: c::c_int { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct TimerfdFlags: u32 { /// `TFD_NONBLOCK` - const NONBLOCK = c::TFD_NONBLOCK; + const NONBLOCK = bitcast!(c::TFD_NONBLOCK); /// `TFD_CLOEXEC` - const CLOEXEC = c::TFD_CLOEXEC; + const CLOEXEC = bitcast!(c::TFD_CLOEXEC); } } @@ -310,13 +95,15 @@ /// `TFD_TIMER_*` flags for use with [`timerfd_settime`]. /// /// [`timerfd_settime`]: crate::time::timerfd_settime - pub struct TimerfdTimerFlags: c::c_int { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct TimerfdTimerFlags: u32 { /// `TFD_TIMER_ABSTIME` - const ABSTIME = c::TFD_TIMER_ABSTIME; + const ABSTIME = bitcast!(c::TFD_TIMER_ABSTIME); /// `TFD_TIMER_CANCEL_ON_SET` #[cfg(linux_kernel)] - const CANCEL_ON_SET = c::TFD_TIMER_CANCEL_ON_SET; + const CANCEL_ON_SET = bitcast!(c::TFD_TIMER_CANCEL_ON_SET); } } @@ -325,16 +112,16 @@ /// [`timerfd_create`]: crate::time::timerfd_create #[cfg(any(linux_kernel, target_os = "fuchsia"))] #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)] -#[repr(i32)] +#[repr(u32)] #[non_exhaustive] pub enum TimerfdClockId { /// `CLOCK_REALTIME`—A clock that tells the “real†time. /// - /// This is a clock that tells the amount of time elapsed since the - /// Unix epoch, 1970-01-01T00:00:00Z. The clock is externally settable, so - /// it is not monotonic. Successive reads may see decreasing times, so it - /// isn't reliable for measuring durations. - Realtime = c::CLOCK_REALTIME, + /// This is a clock that tells the amount of time elapsed since the Unix + /// epoch, 1970-01-01T00:00:00Z. The clock is externally settable, so it is + /// not monotonic. Successive reads may see decreasing times, so it isn't + /// reliable for measuring durations. + Realtime = bitcast!(c::CLOCK_REALTIME), /// `CLOCK_MONOTONIC`—A clock that tells an abstract time. /// @@ -344,25 +131,32 @@ /// /// This clock does not advance while the system is suspended; see /// `Boottime` for a clock that does. - Monotonic = c::CLOCK_MONOTONIC, + Monotonic = bitcast!(c::CLOCK_MONOTONIC), /// `CLOCK_BOOTTIME`—Like `Monotonic`, but advances while suspended. /// /// This clock is similar to `Monotonic`, but does advance while the system /// is suspended. - Boottime = c::CLOCK_BOOTTIME, + Boottime = bitcast!(c::CLOCK_BOOTTIME), /// `CLOCK_REALTIME_ALARM`—Like `Realtime`, but wakes a suspended system. /// /// This clock is like `Realtime`, but can wake up a suspended system. /// /// Use of this clock requires the `CAP_WAKE_ALARM` Linux capability. - RealtimeAlarm = c::CLOCK_REALTIME_ALARM, + RealtimeAlarm = bitcast!(c::CLOCK_REALTIME_ALARM), /// `CLOCK_BOOTTIME_ALARM`—Like `Boottime`, but wakes a suspended system. /// /// This clock is like `Boottime`, but can wake up a suspended system. /// /// Use of this clock requires the `CAP_WAKE_ALARM` Linux capability. - BoottimeAlarm = c::CLOCK_BOOTTIME_ALARM, + BoottimeAlarm = bitcast!(c::CLOCK_BOOTTIME_ALARM), +} + +#[cfg(any(linux_kernel, target_os = "fuchsia"))] +#[test] +fn test_types() { + assert_eq_size!(TimerfdFlags, c::c_int); + assert_eq_size!(TimerfdTimerFlags, c::c_int); } diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/ugid/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/ugid/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/ugid/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/ugid/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +pub(crate) mod syscalls; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/libc/ugid/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/libc/ugid/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/libc/ugid/syscalls.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/libc/ugid/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,42 @@ +use crate::backend::c; +use crate::ugid::{Gid, Uid}; + +#[cfg(not(target_os = "wasi"))] +#[inline] +#[must_use] +pub(crate) fn getuid() -> Uid { + unsafe { + let uid = c::getuid(); + Uid::from_raw(uid) + } +} + +#[cfg(not(target_os = "wasi"))] +#[inline] +#[must_use] +pub(crate) fn geteuid() -> Uid { + unsafe { + let uid = c::geteuid(); + Uid::from_raw(uid) + } +} + +#[cfg(not(target_os = "wasi"))] +#[inline] +#[must_use] +pub(crate) fn getgid() -> Gid { + unsafe { + let gid = c::getgid(); + Gid::from_raw(gid) + } +} + +#[cfg(not(target_os = "wasi"))] +#[inline] +#[must_use] +pub(crate) fn getegid() -> Gid { + unsafe { + let gid = c::getegid(); + Gid::from_raw(gid) + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/aarch64.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/aarch64.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/aarch64.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/aarch64.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,268 @@ +//! aarch64 Linux system calls. + +use crate::backend::reg::{ + ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0, +}; +use core::arch::asm; + +#[cfg(target_pointer_width = "32")] +compile_error!("arm64-ilp32 is not supported yet"); + +#[inline] +pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg { + let r0; + asm!( + "svc 0", + in("x8") nr.to_asm(), + lateout("x0") r0, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { + let r0; + asm!( + "svc 0", + in("x8") nr.to_asm(), + inlateout("x0") a0.to_asm() => r0, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("x8") nr.to_asm(), + inlateout("x0") a0.to_asm() => r0, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { + asm!( + "svc 0", + in("x8") nr.to_asm(), + in("x0") a0.to_asm(), + options(noreturn) + ) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("x8") nr.to_asm(), + inlateout("x0") a0.to_asm() => r0, + in("x1") a1.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("x8") nr.to_asm(), + inlateout("x0") a0.to_asm() => r0, + in("x1") a1.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("x8") nr.to_asm(), + inlateout("x0") a0.to_asm() => r0, + in("x1") a1.to_asm(), + in("x2") a2.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("x8") nr.to_asm(), + inlateout("x0") a0.to_asm() => r0, + in("x1") a1.to_asm(), + in("x2") a2.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("x8") nr.to_asm(), + inlateout("x0") a0.to_asm() => r0, + in("x1") a1.to_asm(), + in("x2") a2.to_asm(), + in("x3") a3.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("x8") nr.to_asm(), + inlateout("x0") a0.to_asm() => r0, + in("x1") a1.to_asm(), + in("x2") a2.to_asm(), + in("x3") a3.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("x8") nr.to_asm(), + inlateout("x0") a0.to_asm() => r0, + in("x1") a1.to_asm(), + in("x2") a2.to_asm(), + in("x3") a3.to_asm(), + in("x4") a4.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("x8") nr.to_asm(), + inlateout("x0") a0.to_asm() => r0, + in("x1") a1.to_asm(), + in("x2") a2.to_asm(), + in("x3") a3.to_asm(), + in("x4") a4.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("x8") nr.to_asm(), + inlateout("x0") a0.to_asm() => r0, + in("x1") a1.to_asm(), + in("x2") a2.to_asm(), + in("x3") a3.to_asm(), + in("x4") a4.to_asm(), + in("x5") a5.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("x8") nr.to_asm(), + inlateout("x0") a0.to_asm() => r0, + in("x1") a1.to_asm(), + in("x2") a2.to_asm(), + in("x3") a3.to_asm(), + in("x4") a4.to_asm(), + in("x5") a5.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/arm.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/arm.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/arm.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/arm.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,265 @@ +//! arm Linux system calls. + +use crate::backend::reg::{ + ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0, +}; +use core::arch::asm; + +#[inline] +pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg { + let r0; + asm!( + "svc 0", + in("r7") nr.to_asm(), + lateout("r0") r0, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { + let r0; + asm!( + "svc 0", + in("r7") nr.to_asm(), + inlateout("r0") a0.to_asm() => r0, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("r7") nr.to_asm(), + inlateout("r0") a0.to_asm() => r0, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { + asm!( + "svc 0", + in("r7") nr.to_asm(), + in("r0") a0.to_asm(), + options(noreturn) + ) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("r7") nr.to_asm(), + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("r7") nr.to_asm(), + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("r7") nr.to_asm(), + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + in("r2") a2.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("r7") nr.to_asm(), + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + in("r2") a2.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("r7") nr.to_asm(), + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + in("r2") a2.to_asm(), + in("r3") a3.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("r7") nr.to_asm(), + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + in("r2") a2.to_asm(), + in("r3") a3.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("r7") nr.to_asm(), + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + in("r2") a2.to_asm(), + in("r3") a3.to_asm(), + in("r4") a4.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("r7") nr.to_asm(), + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + in("r2") a2.to_asm(), + in("r3") a3.to_asm(), + in("r4") a4.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("r7") nr.to_asm(), + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + in("r2") a2.to_asm(), + in("r3") a3.to_asm(), + in("r4") a4.to_asm(), + in("r5") a5.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let r0; + asm!( + "svc 0", + in("r7") nr.to_asm(), + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + in("r2") a2.to_asm(), + in("r3") a3.to_asm(), + in("r4") a4.to_asm(), + in("r5") a5.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mips32r6.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mips32r6.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mips32r6.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mips32r6.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,543 @@ +//! mipsisa32r6el Linux system calls. +//! +//! On mipsisa32r6el, Linux indicates success or failure using `$a3` rather +//! than by returning a negative error code as most other architectures do. +//! +//! Mips-family platforms have a special calling convention for `__NR_pipe`, +//! however we use `__NR_pipe2` instead to avoid having to implement it. + +use crate::backend::reg::{ + ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, A6, R0, +}; +use core::arch::asm; + +#[inline] +pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + lateout("$7" /*$a3*/) err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { + asm!( + "syscall", + in("$2" /*$v0*/) nr.to_asm(), + in("$4" /*$a0*/) a0.to_asm(), + options(noreturn) + ) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let x0; + let err: usize; + asm!( + ".set noat", + "subu $sp, 32", + "sw {}, 16($sp)", + "syscall", + "addu $sp, 32", + ".set at", + in(reg) a4.to_asm(), + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let x0; + let err: usize; + asm!( + ".set noat", + "subu $sp, 32", + "sw {}, 16($sp)", + "syscall", + "addu $sp, 32", + ".set at", + in(reg) a4.to_asm(), + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let x0; + let err: usize; + asm!( + ".set noat", + "subu $sp, 32", + "sw {}, 16($sp)", + "sw {}, 20($sp)", + "syscall", + "addu $sp, 32", + ".set at", + in(reg) a4.to_asm(), + in(reg) a5.to_asm(), + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let x0; + let err: usize; + asm!( + ".set noat", + "subu $sp, 32", + "sw {}, 16($sp)", + "sw {}, 20($sp)", + "syscall", + "addu $sp, 32", + ".set at", + in(reg) a4.to_asm(), + in(reg) a5.to_asm(), + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall7_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, + a6: ArgReg<'_, A6>, +) -> RetReg { + let x0; + let err: usize; + asm!( + ".set noat", + "subu $sp, 32", + "sw {}, 16($sp)", + "sw {}, 20($sp)", + "sw {}, 24($sp)", + "syscall", + "addu $sp, 32", + ".set at", + in(reg) a4.to_asm(), + in(reg) a5.to_asm(), + in(reg) a6.to_asm(), + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mips64r6.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mips64r6.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mips64r6.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mips64r6.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,470 @@ +//! mipsisa64r6el Linux system calls. +//! +//! On mipsisa64r6el, Linux indicates success or failure using `$a3` (`$7`) +//! rather than by returning a negative error code as most other architectures +//! do. +//! +//! Mips-family platforms have a special calling convention for `__NR_pipe`, +//! however we use `__NR_pipe2` instead to avoid having to implement it. +//! +//! Note that MIPS R6 inline assembly currently doesn't differ from MIPS, +//! because no explicit call of R6-only or R2-only instructions exist here. + +use crate::backend::reg::{ + ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0, +}; +use core::arch::asm; + +#[inline] +pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + lateout("$7" /*$a3*/) err, + lateout("$8" /*$a4*/) _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$a4*/) _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$a4*/) _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { + asm!( + "syscall", + in("$2" /*$v0*/) nr.to_asm(), + in("$4" /*$a0*/) a0.to_asm(), + options(noreturn) + ) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$a4*/) _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$a4*/) _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$a4*/) _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$a4*/) _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + lateout("$8" /*$a4*/) _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + lateout("$8" /*$a4*/) _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + inlateout("$8" /*$a4*/) a4.to_asm() => _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + inlateout("$8" /*$a4*/) a4.to_asm() => _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + inlateout("$8" /*$a4*/) a4.to_asm() => _, + inlateout("$9" /*$a5*/) a5.to_asm() => _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + inlateout("$8" /*$a4*/) a4.to_asm() => _, + inlateout("$9" /*$a5*/) a5.to_asm() => _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mips64.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mips64.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mips64.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mips64.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,466 @@ +//! mips64el Linux system calls. +//! +//! On mips64el, Linux indicates success or failure using `$a3` (`$7`) rather +//! than by returning a negative error code as most other architectures do. +//! +//! Mips-family platforms have a special calling convention for `__NR_pipe`, +//! however we use `__NR_pipe2` instead to avoid having to implement it. + +use crate::backend::reg::{ + ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0, +}; +use core::arch::asm; + +#[inline] +pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + lateout("$7" /*$a3*/) err, + lateout("$8" /*$a4*/) _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$a4*/) _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$a4*/) _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { + asm!( + "syscall", + in("$2" /*$v0*/) nr.to_asm(), + in("$4" /*$a0*/) a0.to_asm(), + options(noreturn) + ) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$a4*/) _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$a4*/) _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$a4*/) _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$a4*/) _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + lateout("$8" /*$a4*/) _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + lateout("$8" /*$a4*/) _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + inlateout("$8" /*$a4*/) a4.to_asm() => _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + inlateout("$8" /*$a4*/) a4.to_asm() => _, + lateout("$9" /*$a5*/) _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + inlateout("$8" /*$a4*/) a4.to_asm() => _, + inlateout("$9" /*$a5*/) a5.to_asm() => _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + inlateout("$8" /*$a4*/) a4.to_asm() => _, + inlateout("$9" /*$a5*/) a5.to_asm() => _, + lateout("$10" /*$a6*/) _, + lateout("$11" /*$a7*/) _, + lateout("$12" /*$t0*/) _, + lateout("$13" /*$t1*/) _, + lateout("$14" /*$t2*/) _, + lateout("$15" /*$t3*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mips.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mips.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mips.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mips.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,543 @@ +//! mipsel Linux system calls. +//! +//! On mipsel, Linux indicates success or failure using `$a3` rather +//! than by returning a negative error code as most other architectures do. +//! +//! Mips-family platforms have a special calling convention for `__NR_pipe`, +//! however we use `__NR_pipe2` instead to avoid having to implement it. + +use crate::backend::reg::{ + ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, A6, R0, +}; +use core::arch::asm; + +#[inline] +pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + lateout("$7" /*$a3*/) err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { + asm!( + "syscall", + in("$2" /*$v0*/) nr.to_asm(), + in("$4" /*$a0*/) a0.to_asm(), + options(noreturn) + ) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + lateout("$7" /*$a3*/) err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let x0; + let err: usize; + asm!( + "syscall", + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let x0; + let err: usize; + asm!( + ".set noat", + "subu $sp, 32", + "sw {}, 16($sp)", + "syscall", + "addu $sp, 32", + ".set at", + in(reg) a4.to_asm(), + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let x0; + let err: usize; + asm!( + ".set noat", + "subu $sp, 32", + "sw {}, 16($sp)", + "syscall", + "addu $sp, 32", + ".set at", + in(reg) a4.to_asm(), + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let x0; + let err: usize; + asm!( + ".set noat", + "subu $sp, 32", + "sw {}, 16($sp)", + "sw {}, 20($sp)", + "syscall", + "addu $sp, 32", + ".set at", + in(reg) a4.to_asm(), + in(reg) a5.to_asm(), + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(preserves_flags) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let x0; + let err: usize; + asm!( + ".set noat", + "subu $sp, 32", + "sw {}, 16($sp)", + "sw {}, 20($sp)", + "syscall", + "addu $sp, 32", + ".set at", + in(reg) a4.to_asm(), + in(reg) a5.to_asm(), + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall7_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, + a6: ArgReg<'_, A6>, +) -> RetReg { + let x0; + let err: usize; + asm!( + ".set noat", + "subu $sp, 32", + "sw {}, 16($sp)", + "sw {}, 20($sp)", + "sw {}, 24($sp)", + "syscall", + "addu $sp, 32", + ".set at", + in(reg) a4.to_asm(), + in(reg) a5.to_asm(), + in(reg) a6.to_asm(), + inlateout("$2" /*$v0*/) nr.to_asm() => x0, + in("$4" /*$a0*/) a0.to_asm(), + in("$5" /*$a1*/) a1.to_asm(), + in("$6" /*$a2*/) a2.to_asm(), + inlateout("$7" /*$a3*/) a3.to_asm() => err, + lateout("$8" /*$t0*/) _, + lateout("$9" /*$t1*/) _, + lateout("$10" /*$t2*/) _, + lateout("$11" /*$t3*/) _, + lateout("$12" /*$t4*/) _, + lateout("$13" /*$t5*/) _, + lateout("$14" /*$t6*/) _, + lateout("$15" /*$t7*/) _, + lateout("$24" /*$t8*/) _, + lateout("$25" /*$t9*/) _, + options(preserves_flags, readonly) + ); + FromAsm::from_asm(if err != 0 { + (x0 as usize).wrapping_neg() as *mut _ + } else { + x0 + }) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,24 @@ +//! Inline asm for making system calls. +//! +//! Compilers should really have intrinsics for making system calls. They're +//! much like regular calls, with custom calling conventions, and calling +//! conventions are otherwise the compiler's job. But for now, use inline asm. +//! +//! The calling conventions for Linux syscalls are [documented here]. +//! +//! [documented here]: https://man7.org/linux/man-pages/man2/syscall.2.html + +#[cfg_attr(target_arch = "aarch64", path = "aarch64.rs")] +#[cfg_attr(all(target_arch = "arm", not(thumb_mode)), path = "arm.rs")] +#[cfg_attr(all(target_arch = "arm", thumb_mode), path = "thumb.rs")] +#[cfg_attr(target_arch = "mips", path = "mips.rs")] +#[cfg_attr(target_arch = "mips32r6", path = "mips32r6.rs")] +#[cfg_attr(target_arch = "mips64", path = "mips64.rs")] +#[cfg_attr(target_arch = "mips64r6", path = "mips64r6.rs")] +#[cfg_attr(target_arch = "powerpc64", path = "powerpc64.rs")] +#[cfg_attr(target_arch = "riscv64", path = "riscv64.rs")] +#[cfg_attr(target_arch = "x86", path = "x86.rs")] +#[cfg_attr(target_arch = "x86_64", path = "x86_64.rs")] +mod target_arch; + +pub(in crate::backend) use target_arch::*; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/powerpc64.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/powerpc64.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/powerpc64.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/powerpc64.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,413 @@ +//! powerpc64le Linux system calls. +//! +//! On powerpc64le, Linux indicates success or failure using `cr0.SO` rather +//! than by returning a negative error code as most other architectures do. In +//! theory we could immediately translate this into a `Result`, and it'd save a +//! few branches. And in theory we could have specialized sequences for use +//! with syscalls that are known to never fail. However, those would require +//! more extensive changes in rustix's platform-independent code. For now, we +//! check the flag and negate the error value to make PowerPC64 look like other +//! architectures. + +use crate::backend::reg::{ + ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0, +}; +use core::arch::asm; + +#[inline] +pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber) -> RetReg { + let r0; + asm!( + "sc", + "bns 0f", + "neg 3, 3", + "0:", + inlateout("r0") nr.to_asm() => _, + lateout("r3") r0, + lateout("r4") _, + lateout("r5") _, + lateout("r6") _, + lateout("r7") _, + lateout("r8") _, + lateout("r9") _, + lateout("r10") _, + lateout("r11") _, + lateout("r12") _, + lateout("cr0") _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { + let r0; + asm!( + "sc", + "bns 0f", + "neg 3, 3", + "0:", + inlateout("r0") nr.to_asm() => _, + inlateout("r3") a0.to_asm() => r0, + lateout("r4") _, + lateout("r5") _, + lateout("r6") _, + lateout("r7") _, + lateout("r8") _, + lateout("r9") _, + lateout("r10") _, + lateout("r11") _, + lateout("r12") _, + lateout("cr0") _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, +) -> RetReg { + let r0; + asm!( + "sc", + "bns 0f", + "neg 3, 3", + "0:", + inlateout("r0") nr.to_asm() => _, + inlateout("r3") a0.to_asm() => r0, + lateout("r4") _, + lateout("r5") _, + lateout("r6") _, + lateout("r7") _, + lateout("r8") _, + lateout("r9") _, + lateout("r10") _, + lateout("r11") _, + lateout("r12") _, + lateout("cr0") _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { + asm!( + "sc", + in("r0") nr.to_asm(), + in("r3") a0.to_asm(), + options(noreturn) + ) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let r0; + asm!( + "sc", + "bns 0f", + "neg 3, 3", + "0:", + inlateout("r0") nr.to_asm() => _, + inlateout("r3") a0.to_asm() => r0, + inlateout("r4") a1.to_asm() => _, + lateout("r5") _, + lateout("r6") _, + lateout("r7") _, + lateout("r8") _, + lateout("r9") _, + lateout("r10") _, + lateout("r11") _, + lateout("r12") _, + lateout("cr0") _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let r0; + asm!( + "sc", + "bns 0f", + "neg 3, 3", + "0:", + inlateout("r0") nr.to_asm() => _, + inlateout("r3") a0.to_asm() => r0, + inlateout("r4") a1.to_asm() => _, + lateout("r5") _, + lateout("r6") _, + lateout("r7") _, + lateout("r8") _, + lateout("r9") _, + lateout("r10") _, + lateout("r11") _, + lateout("r12") _, + lateout("cr0") _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let r0; + asm!( + "sc", + "bns 0f", + "neg 3, 3", + "0:", + inlateout("r0") nr.to_asm() => _, + inlateout("r3") a0.to_asm() => r0, + inlateout("r4") a1.to_asm() => _, + inlateout("r5") a2.to_asm() => _, + lateout("r6") _, + lateout("r7") _, + lateout("r8") _, + lateout("r9") _, + lateout("r10") _, + lateout("r11") _, + lateout("r12") _, + lateout("cr0") _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let r0; + asm!( + "sc", + "bns 0f", + "neg 3, 3", + "0:", + inlateout("r0") nr.to_asm() => _, + inlateout("r3") a0.to_asm() => r0, + inlateout("r4") a1.to_asm() => _, + inlateout("r5") a2.to_asm() => _, + lateout("r6") _, + lateout("r7") _, + lateout("r8") _, + lateout("r9") _, + lateout("r10") _, + lateout("r11") _, + lateout("r12") _, + lateout("cr0") _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let r0; + asm!( + "sc", + "bns 0f", + "neg 3, 3", + "0:", + inlateout("r0") nr.to_asm() => _, + inlateout("r3") a0.to_asm() => r0, + inlateout("r4") a1.to_asm() => _, + inlateout("r5") a2.to_asm() => _, + inlateout("r6") a3.to_asm() => _, + lateout("r7") _, + lateout("r8") _, + lateout("r9") _, + lateout("r10") _, + lateout("r11") _, + lateout("r12") _, + lateout("cr0") _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let r0; + asm!( + "sc", + "bns 0f", + "neg 3, 3", + "0:", + inlateout("r0") nr.to_asm() => _, + inlateout("r3") a0.to_asm() => r0, + inlateout("r4") a1.to_asm() => _, + inlateout("r5") a2.to_asm() => _, + inlateout("r6") a3.to_asm() => _, + lateout("r7") _, + lateout("r8") _, + lateout("r9") _, + lateout("r10") _, + lateout("r11") _, + lateout("r12") _, + lateout("cr0") _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let r0; + asm!( + "sc", + "bns 0f", + "neg 3, 3", + "0:", + inlateout("r0") nr.to_asm() => _, + inlateout("r3") a0.to_asm() => r0, + inlateout("r4") a1.to_asm() => _, + inlateout("r5") a2.to_asm() => _, + inlateout("r6") a3.to_asm() => _, + inlateout("r7") a4.to_asm() => _, + lateout("r8") _, + lateout("r9") _, + lateout("r10") _, + lateout("r11") _, + lateout("r12") _, + lateout("cr0") _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let r0; + asm!( + "sc", + "bns 0f", + "neg 3, 3", + "0:", + inlateout("r0") nr.to_asm() => _, + inlateout("r3") a0.to_asm() => r0, + inlateout("r4") a1.to_asm() => _, + inlateout("r5") a2.to_asm() => _, + inlateout("r6") a3.to_asm() => _, + inlateout("r7") a4.to_asm() => _, + lateout("r8") _, + lateout("r9") _, + lateout("r10") _, + lateout("r11") _, + lateout("r12") _, + lateout("cr0") _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let r0; + asm!( + "sc", + "bns 0f", + "neg 3, 3", + "0:", + inlateout("r0") nr.to_asm() => _, + inlateout("r3") a0.to_asm() => r0, + inlateout("r4") a1.to_asm() => _, + inlateout("r5") a2.to_asm() => _, + inlateout("r6") a3.to_asm() => _, + inlateout("r7") a4.to_asm() => _, + inlateout("r8") a5.to_asm() => _, + lateout("r9") _, + lateout("r10") _, + lateout("r11") _, + lateout("r12") _, + lateout("cr0") _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let r0; + asm!( + "sc", + "bns 0f", + "neg 3, 3", + "0:", + inlateout("r0") nr.to_asm() => _, + inlateout("r3") a0.to_asm() => r0, + inlateout("r4") a1.to_asm() => _, + inlateout("r5") a2.to_asm() => _, + inlateout("r6") a3.to_asm() => _, + inlateout("r7") a4.to_asm() => _, + inlateout("r8") a5.to_asm() => _, + lateout("r9") _, + lateout("r10") _, + lateout("r11") _, + lateout("r12") _, + lateout("cr0") _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/riscv64.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/riscv64.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/riscv64.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/riscv64.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,265 @@ +//! riscv64 Linux system calls. + +use crate::backend::reg::{ + ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0, +}; +use core::arch::asm; + +#[inline] +pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg { + let r0; + asm!( + "ecall", + in("a7") nr.to_asm(), + lateout("a0") r0, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { + let r0; + asm!( + "ecall", + in("a7") nr.to_asm(), + inlateout("a0") a0.to_asm() => r0, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, +) -> RetReg { + let r0; + asm!( + "ecall", + in("a7") nr.to_asm(), + inlateout("a0") a0.to_asm() => r0, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { + asm!( + "ecall", + in("a7") nr.to_asm(), + in("a0") a0.to_asm(), + options(noreturn) + ); +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let r0; + asm!( + "ecall", + in("a7") nr.to_asm(), + inlateout("a0") a0.to_asm() => r0, + in("a1") a1.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let r0; + asm!( + "ecall", + in("a7") nr.to_asm(), + inlateout("a0") a0.to_asm() => r0, + in("a1") a1.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let r0; + asm!( + "ecall", + in("a7") nr.to_asm(), + inlateout("a0") a0.to_asm() => r0, + in("a1") a1.to_asm(), + in("a2") a2.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let r0; + asm!( + "ecall", + in("a7") nr.to_asm(), + inlateout("a0") a0.to_asm() => r0, + in("a1") a1.to_asm(), + in("a2") a2.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let r0; + asm!( + "ecall", + in("a7") nr.to_asm(), + inlateout("a0") a0.to_asm() => r0, + in("a1") a1.to_asm(), + in("a2") a2.to_asm(), + in("a3") a3.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let r0; + asm!( + "ecall", + in("a7") nr.to_asm(), + inlateout("a0") a0.to_asm() => r0, + in("a1") a1.to_asm(), + in("a2") a2.to_asm(), + in("a3") a3.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let r0; + asm!( + "ecall", + in("a7") nr.to_asm(), + inlateout("a0") a0.to_asm() => r0, + in("a1") a1.to_asm(), + in("a2") a2.to_asm(), + in("a3") a3.to_asm(), + in("a4") a4.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let r0; + asm!( + "ecall", + in("a7") nr.to_asm(), + inlateout("a0") a0.to_asm() => r0, + in("a1") a1.to_asm(), + in("a2") a2.to_asm(), + in("a3") a3.to_asm(), + in("a4") a4.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let r0; + asm!( + "ecall", + in("a7") nr.to_asm(), + inlateout("a0") a0.to_asm() => r0, + in("a1") a1.to_asm(), + in("a2") a2.to_asm(), + in("a3") a3.to_asm(), + in("a4") a4.to_asm(), + in("a5") a5.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let r0; + asm!( + "ecall", + in("a7") nr.to_asm(), + inlateout("a0") a0.to_asm() => r0, + in("a1") a1.to_asm(), + in("a2") a2.to_asm(), + in("a3") a3.to_asm(), + in("a4") a4.to_asm(), + in("a5") a5.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/thumb.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/thumb.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/thumb.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/thumb.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,322 @@ +//! arm Linux system calls, using thumb-mode. +//! +//! In thumb-mode, r7 is the frame pointer and is not permitted to be used in +//! an inline asm operand, so we have to use a different register and copy it +//! into r7 inside the inline asm. + +use crate::backend::reg::{ + ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0, +}; +use core::arch::asm; + +#[inline] +pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg { + let r0; + asm!( + "mov {tmp}, r7", + "mov r7, {nr}", + "svc 0", + "mov r7, {tmp}", + nr = in(reg) nr.to_asm(), + tmp = out(reg) _, + lateout("r0") r0, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { + let r0; + asm!( + "mov {tmp}, r7", + "mov r7, {nr}", + "svc 0", + "mov r7, {tmp}", + nr = in(reg) nr.to_asm(), + tmp = out(reg) _, + inlateout("r0") a0.to_asm() => r0, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, +) -> RetReg { + let r0; + asm!( + "mov {tmp}, r7", + "mov r7, {nr}", + "svc 0", + "mov r7, {tmp}", + nr = in(reg) nr.to_asm(), + tmp = out(reg) _, + inlateout("r0") a0.to_asm() => r0, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { + asm!( + "mov r7, {nr}", + "svc 0", + nr = in(reg) nr.to_asm(), + in("r0") a0.to_asm(), + options(noreturn) + ) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let r0; + asm!( + "mov {tmp}, r7", + "mov r7, {nr}", + "svc 0", + "mov r7, {tmp}", + nr = in(reg) nr.to_asm(), + tmp = out(reg) _, + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let r0; + asm!( + "mov {tmp}, r7", + "mov r7, {nr}", + "svc 0", + "mov r7, {tmp}", + nr = in(reg) nr.to_asm(), + tmp = out(reg) _, + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let r0; + asm!( + "mov {tmp}, r7", + "mov r7, {nr}", + "svc 0", + "mov r7, {tmp}", + nr = in(reg) nr.to_asm(), + tmp = out(reg) _, + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + in("r2") a2.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let r0; + asm!( + "mov {tmp}, r7", + "mov r7, {nr}", + "svc 0", + "mov r7, {tmp}", + nr = in(reg) nr.to_asm(), + tmp = out(reg) _, + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + in("r2") a2.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let r0; + asm!( + "mov {tmp}, r7", + "mov r7, {nr}", + "svc 0", + "mov r7, {tmp}", + nr = in(reg) nr.to_asm(), + tmp = out(reg) _, + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + in("r2") a2.to_asm(), + in("r3") a3.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let r0; + asm!( + "mov {tmp}, r7", + "mov r7, {nr}", + "svc 0", + "mov r7, {tmp}", + nr = in(reg) nr.to_asm(), + tmp = out(reg) _, + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + in("r2") a2.to_asm(), + in("r3") a3.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let r0; + asm!( + "mov {tmp}, r7", + "mov r7, {nr}", + "svc 0", + "mov r7, {tmp}", + nr = in(reg) nr.to_asm(), + tmp = out(reg) _, + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + in("r2") a2.to_asm(), + in("r3") a3.to_asm(), + in("r4") a4.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let r0; + asm!( + "mov {tmp}, r7", + "mov r7, {nr}", + "svc 0", + "mov r7, {tmp}", + nr = in(reg) nr.to_asm(), + tmp = out(reg) _, + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + in("r2") a2.to_asm(), + in("r3") a3.to_asm(), + in("r4") a4.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let r0; + asm!( + "mov {tmp}, r7", + "mov r7, {nr}", + "svc 0", + "mov r7, {tmp}", + nr = in(reg) nr.to_asm(), + tmp = out(reg) _, + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + in("r2") a2.to_asm(), + in("r3") a3.to_asm(), + in("r4") a4.to_asm(), + in("r5") a5.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let r0; + asm!( + "mov {tmp}, r7", + "mov r7, {nr}", + "svc 0", + "mov r7, {tmp}", + nr = in(reg) nr.to_asm(), + tmp = out(reg) _, + inlateout("r0") a0.to_asm() => r0, + in("r1") a1.to_asm(), + in("r2") a2.to_asm(), + in("r3") a3.to_asm(), + in("r4") a4.to_asm(), + in("r5") a5.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/x86_64.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/x86_64.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/x86_64.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/x86_64.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,293 @@ +//! x86-64 Linux system calls. + +use crate::backend::reg::{ + ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0, +}; +use core::arch::asm; + +#[cfg(target_pointer_width = "32")] +compile_error!("x32 is not yet supported"); + +#[inline] +pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg { + let r0; + asm!( + "syscall", + inlateout("rax") nr.to_asm() => r0, + lateout("rcx") _, + lateout("r11") _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { + let r0; + asm!( + "syscall", + inlateout("rax") nr.to_asm() => r0, + in("rdi") a0.to_asm(), + lateout("rcx") _, + lateout("r11") _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, +) -> RetReg { + let r0; + asm!( + "syscall", + inlateout("rax") nr.to_asm() => r0, + in("rdi") a0.to_asm(), + lateout("rcx") _, + lateout("r11") _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { + asm!( + "syscall", + in("rax") nr.to_asm(), + in("rdi") a0.to_asm(), + options(noreturn) + ) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let r0; + asm!( + "syscall", + inlateout("rax") nr.to_asm() => r0, + in("rdi") a0.to_asm(), + in("rsi") a1.to_asm(), + lateout("rcx") _, + lateout("r11") _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let r0; + asm!( + "syscall", + inlateout("rax") nr.to_asm() => r0, + in("rdi") a0.to_asm(), + in("rsi") a1.to_asm(), + lateout("rcx") _, + lateout("r11") _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let r0; + asm!( + "syscall", + inlateout("rax") nr.to_asm() => r0, + in("rdi") a0.to_asm(), + in("rsi") a1.to_asm(), + in("rdx") a2.to_asm(), + lateout("rcx") _, + lateout("r11") _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let r0; + asm!( + "syscall", + inlateout("rax") nr.to_asm() => r0, + in("rdi") a0.to_asm(), + in("rsi") a1.to_asm(), + in("rdx") a2.to_asm(), + lateout("rcx") _, + lateout("r11") _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let r0; + asm!( + "syscall", + inlateout("rax") nr.to_asm() => r0, + in("rdi") a0.to_asm(), + in("rsi") a1.to_asm(), + in("rdx") a2.to_asm(), + in("r10") a3.to_asm(), + lateout("rcx") _, + lateout("r11") _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let r0; + asm!( + "syscall", + inlateout("rax") nr.to_asm() => r0, + in("rdi") a0.to_asm(), + in("rsi") a1.to_asm(), + in("rdx") a2.to_asm(), + in("r10") a3.to_asm(), + lateout("rcx") _, + lateout("r11") _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let r0; + asm!( + "syscall", + inlateout("rax") nr.to_asm() => r0, + in("rdi") a0.to_asm(), + in("rsi") a1.to_asm(), + in("rdx") a2.to_asm(), + in("r10") a3.to_asm(), + in("r8") a4.to_asm(), + lateout("rcx") _, + lateout("r11") _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let r0; + asm!( + "syscall", + inlateout("rax") nr.to_asm() => r0, + in("rdi") a0.to_asm(), + in("rsi") a1.to_asm(), + in("rdx") a2.to_asm(), + in("r10") a3.to_asm(), + in("r8") a4.to_asm(), + lateout("rcx") _, + lateout("r11") _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let r0; + asm!( + "syscall", + inlateout("rax") nr.to_asm() => r0, + in("rdi") a0.to_asm(), + in("rsi") a1.to_asm(), + in("rdx") a2.to_asm(), + in("r10") a3.to_asm(), + in("r8") a4.to_asm(), + in("r9") a5.to_asm(), + lateout("rcx") _, + lateout("r11") _, + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let r0; + asm!( + "syscall", + inlateout("rax") nr.to_asm() => r0, + in("rdi") a0.to_asm(), + in("rsi") a1.to_asm(), + in("rdx") a2.to_asm(), + in("r10") a3.to_asm(), + in("r8") a4.to_asm(), + in("r9") a5.to_asm(), + lateout("rcx") _, + lateout("r11") _, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/x86.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/x86.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/x86.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/asm/x86.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,490 @@ +//! 32-bit x86 Linux system calls. +//! +//! There are two forms; `indirect_*` which take a callee, which allow calling +//! through the vDSO when possible, and plain forms, which use the `int 0x80` +//! instruction. +//! +//! Most `rustix` syscalls use the vsyscall mechanism rather than going using +//! `int 0x80` sequences, as vsyscall is much faster. +//! +//! Syscalls made with `int 0x80` preserve the flags register, while syscalls +//! made using vsyscall do not. + +#![allow(dead_code)] + +use crate::backend::reg::{ + ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0, +}; +use crate::backend::vdso_wrappers::SyscallType; +use core::arch::asm; + +#[inline] +pub(in crate::backend) unsafe fn indirect_syscall0( + callee: SyscallType, + nr: SyscallNumber<'_>, +) -> RetReg { + let r0; + asm!( + "call {callee}", + callee = in(reg) callee, + inlateout("eax") nr.to_asm() => r0, + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn indirect_syscall1( + callee: SyscallType, + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, +) -> RetReg { + let r0; + asm!( + "call {callee}", + callee = in(reg) callee, + inlateout("eax") nr.to_asm() => r0, + in("ebx") a0.to_asm(), + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn indirect_syscall1_noreturn( + callee: SyscallType, + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, +) -> ! { + asm!( + "call {callee}", + callee = in(reg) callee, + in("eax") nr.to_asm(), + in("ebx") a0.to_asm(), + options(noreturn) + ) +} + +#[inline] +pub(in crate::backend) unsafe fn indirect_syscall2( + callee: SyscallType, + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let r0; + asm!( + "call {callee}", + callee = in(reg) callee, + inlateout("eax") nr.to_asm() => r0, + in("ebx") a0.to_asm(), + in("ecx") a1.to_asm(), + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn indirect_syscall3( + callee: SyscallType, + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let r0; + asm!( + "call {callee}", + callee = in(reg) callee, + inlateout("eax") nr.to_asm() => r0, + in("ebx") a0.to_asm(), + in("ecx") a1.to_asm(), + in("edx") a2.to_asm(), + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn indirect_syscall4( + callee: SyscallType, + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let r0; + // a3 should go in esi, but `asm!` won't let us use it as an operand. + // Temporarily swap it into place, and then swap it back afterward. + // + // We hard-code the callee operand to use edi instead of `in(reg)` because + // even though we can't name esi as an operand, the compiler can use esi to + // satisfy `in(reg)`. + asm!( + "xchg esi, {a3}", + "call edi", + "xchg esi, {a3}", + a3 = in(reg) a3.to_asm(), + in("edi") callee, + inlateout("eax") nr.to_asm() => r0, + in("ebx") a0.to_asm(), + in("ecx") a1.to_asm(), + in("edx") a2.to_asm(), + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn indirect_syscall5( + callee: SyscallType, + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let r0; + // Oof. a3 should go in esi, and `asm!` won't let us use that register as + // an operand. And we can't request stack slots. And there are no other + // registers free. Use eax as a temporary pointer to a slice, since it gets + // clobbered as the return value anyway. + asm!( + "push esi", + "push DWORD PTR [eax + 0]", + "mov esi, DWORD PTR [eax + 4]", + "mov eax, DWORD PTR [eax + 8]", + "call DWORD PTR [esp]", + "pop esi", + "pop esi", + inout("eax") &[callee as _, a3.to_asm(), nr.to_asm()] => r0, + in("ebx") a0.to_asm(), + in("ecx") a1.to_asm(), + in("edx") a2.to_asm(), + in("edi") a4.to_asm(), + ); + FromAsm::from_asm(r0) +} + +#[allow(clippy::too_many_arguments)] +#[inline] +pub(in crate::backend) unsafe fn indirect_syscall6( + callee: SyscallType, + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let r0; + // Oof again. a3 should go in esi, and a5 should go in ebp, and `asm!` + // won't let us use either of those registers as operands. And we can't + // request stack slots. And there are no other registers free. Use eax as a + // temporary pointer to a slice, since it gets clobbered as the return + // value anyway. + // + // This is another reason that syscalls should be compiler intrinsics + // rather than inline asm. + asm!( + "push ebp", + "push esi", + "push DWORD PTR [eax + 0]", + "mov esi, DWORD PTR [eax + 4]", + "mov ebp, DWORD PTR [eax + 8]", + "mov eax, DWORD PTR [eax + 12]", + "call DWORD PTR [esp]", + "pop esi", + "pop esi", + "pop ebp", + inout("eax") &[callee as _, a3.to_asm(), a5.to_asm(), nr.to_asm()] => r0, + in("ebx") a0.to_asm(), + in("ecx") a1.to_asm(), + in("edx") a2.to_asm(), + in("edi") a4.to_asm(), + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg { + let r0; + asm!( + "int $$0x80", + inlateout("eax") nr.to_asm() => r0, + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { + let r0; + asm!( + "int $$0x80", + inlateout("eax") nr.to_asm() => r0, + in("ebx") a0.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, +) -> RetReg { + let r0; + asm!( + "int $$0x80", + inlateout("eax") nr.to_asm() => r0, + in("ebx") a0.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { + asm!( + "int $$0x80", + in("eax") nr.to_asm(), + in("ebx") a0.to_asm(), + options(noreturn) + ) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let r0; + asm!( + "int $$0x80", + inlateout("eax") nr.to_asm() => r0, + in("ebx") a0.to_asm(), + in("ecx") a1.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall2_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, +) -> RetReg { + let r0; + asm!( + "int $$0x80", + inlateout("eax") nr.to_asm() => r0, + in("ebx") a0.to_asm(), + in("ecx") a1.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let r0; + asm!( + "int $$0x80", + inlateout("eax") nr.to_asm() => r0, + in("ebx") a0.to_asm(), + in("ecx") a1.to_asm(), + in("edx") a2.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall3_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, +) -> RetReg { + let r0; + asm!( + "int $$0x80", + inlateout("eax") nr.to_asm() => r0, + in("ebx") a0.to_asm(), + in("ecx") a1.to_asm(), + in("edx") a2.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let r0; + // a3 should go in esi, but `asm!` won't let us use it as an operand. + // Temporarily swap it into place, and then swap it back afterward. + asm!( + "xchg esi, {a3}", + "int $$0x80", + "xchg esi, {a3}", + a3 = in(reg) a3.to_asm(), + inlateout("eax") nr.to_asm() => r0, + in("ebx") a0.to_asm(), + in("ecx") a1.to_asm(), + in("edx") a2.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall4_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, +) -> RetReg { + let r0; + asm!( + "xchg esi, {a3}", + "int $$0x80", + "xchg esi, {a3}", + a3 = in(reg) a3.to_asm(), + inlateout("eax") nr.to_asm() => r0, + in("ebx") a0.to_asm(), + in("ecx") a1.to_asm(), + in("edx") a2.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let r0; + // As in `syscall4`, use xchg to handle a3. a4 should go in edi, and we can + // use that register as an operand. Unlike in `indirect_syscall5`, we don't + // have a `callee` operand taking up a register, so we have enough + // registers and don't need to use a slice. + asm!( + "xchg esi, {a3}", + "int $$0x80", + "xchg esi, {a3}", + a3 = in(reg) a3.to_asm(), + inlateout("eax") nr.to_asm() => r0, + in("ebx") a0.to_asm(), + in("ecx") a1.to_asm(), + in("edx") a2.to_asm(), + in("edi") a4.to_asm(), + options(nostack, preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall5_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, +) -> RetReg { + let r0; + // See the comments in `syscall5`. + asm!( + "xchg esi, {a3}", + "int $$0x80", + "xchg esi, {a3}", + a3 = in(reg) a3.to_asm(), + inlateout("eax") nr.to_asm() => r0, + in("ebx") a0.to_asm(), + in("ecx") a1.to_asm(), + in("edx") a2.to_asm(), + in("edi") a4.to_asm(), + options(nostack, preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let r0; + // See the comments in `indirect_syscall6`. + asm!( + "push ebp", + "push esi", + "mov esi, DWORD PTR [eax + 0]", + "mov ebp, DWORD PTR [eax + 4]", + "mov eax, DWORD PTR [eax + 8]", + "int $$0x80", + "pop esi", + "pop ebp", + inout("eax") &[a3.to_asm(), a5.to_asm(), nr.to_asm()] => r0, + in("ebx") a0.to_asm(), + in("ecx") a1.to_asm(), + in("edx") a2.to_asm(), + in("edi") a4.to_asm(), + options(preserves_flags) + ); + FromAsm::from_asm(r0) +} + +#[inline] +pub(in crate::backend) unsafe fn syscall6_readonly( + nr: SyscallNumber<'_>, + a0: ArgReg<'_, A0>, + a1: ArgReg<'_, A1>, + a2: ArgReg<'_, A2>, + a3: ArgReg<'_, A3>, + a4: ArgReg<'_, A4>, + a5: ArgReg<'_, A5>, +) -> RetReg { + let r0; + // See the comments in `indirect_syscall6`. + asm!( + "push ebp", + "push esi", + "mov esi, DWORD PTR [eax + 0]", + "mov ebp, DWORD PTR [eax + 4]", + "mov eax, DWORD PTR [eax + 8]", + "int $$0x80", + "pop esi", + "pop ebp", + inout("eax") &[a3.to_asm(), a5.to_asm(), nr.to_asm()] => r0, + in("ebx") a0.to_asm(), + in("ecx") a1.to_asm(), + in("edx") a2.to_asm(), + in("edi") a4.to_asm(), + options(preserves_flags, readonly) + ); + FromAsm::from_asm(r0) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/aarch64.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/aarch64.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/aarch64.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/aarch64.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,268 +0,0 @@ -//! aarch64 Linux system calls. - -use crate::backend::reg::{ - ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0, -}; -use core::arch::asm; - -#[cfg(target_pointer_width = "32")] -compile_error!("arm64-ilp32 is not supported yet"); - -#[inline] -pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg { - let r0; - asm!( - "svc 0", - in("x8") nr.to_asm(), - lateout("x0") r0, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { - let r0; - asm!( - "svc 0", - in("x8") nr.to_asm(), - inlateout("x0") a0.to_asm() => r0, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("x8") nr.to_asm(), - inlateout("x0") a0.to_asm() => r0, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { - asm!( - "svc 0", - in("x8") nr.to_asm(), - in("x0") a0.to_asm(), - options(noreturn) - ) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall2( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("x8") nr.to_asm(), - inlateout("x0") a0.to_asm() => r0, - in("x1") a1.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall2_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("x8") nr.to_asm(), - inlateout("x0") a0.to_asm() => r0, - in("x1") a1.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall3( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("x8") nr.to_asm(), - inlateout("x0") a0.to_asm() => r0, - in("x1") a1.to_asm(), - in("x2") a2.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall3_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("x8") nr.to_asm(), - inlateout("x0") a0.to_asm() => r0, - in("x1") a1.to_asm(), - in("x2") a2.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall4( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("x8") nr.to_asm(), - inlateout("x0") a0.to_asm() => r0, - in("x1") a1.to_asm(), - in("x2") a2.to_asm(), - in("x3") a3.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall4_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("x8") nr.to_asm(), - inlateout("x0") a0.to_asm() => r0, - in("x1") a1.to_asm(), - in("x2") a2.to_asm(), - in("x3") a3.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall5( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("x8") nr.to_asm(), - inlateout("x0") a0.to_asm() => r0, - in("x1") a1.to_asm(), - in("x2") a2.to_asm(), - in("x3") a3.to_asm(), - in("x4") a4.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall5_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("x8") nr.to_asm(), - inlateout("x0") a0.to_asm() => r0, - in("x1") a1.to_asm(), - in("x2") a2.to_asm(), - in("x3") a3.to_asm(), - in("x4") a4.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall6( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("x8") nr.to_asm(), - inlateout("x0") a0.to_asm() => r0, - in("x1") a1.to_asm(), - in("x2") a2.to_asm(), - in("x3") a3.to_asm(), - in("x4") a4.to_asm(), - in("x5") a5.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall6_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("x8") nr.to_asm(), - inlateout("x0") a0.to_asm() => r0, - in("x1") a1.to_asm(), - in("x2") a2.to_asm(), - in("x3") a3.to_asm(), - in("x4") a4.to_asm(), - in("x5") a5.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/arm.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/arm.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/arm.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/arm.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,265 +0,0 @@ -//! arm Linux system calls. - -use crate::backend::reg::{ - ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0, -}; -use core::arch::asm; - -#[inline] -pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg { - let r0; - asm!( - "svc 0", - in("r7") nr.to_asm(), - lateout("r0") r0, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { - let r0; - asm!( - "svc 0", - in("r7") nr.to_asm(), - inlateout("r0") a0.to_asm() => r0, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("r7") nr.to_asm(), - inlateout("r0") a0.to_asm() => r0, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { - asm!( - "svc 0", - in("r7") nr.to_asm(), - in("r0") a0.to_asm(), - options(noreturn) - ) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall2( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("r7") nr.to_asm(), - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall2_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("r7") nr.to_asm(), - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall3( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("r7") nr.to_asm(), - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - in("r2") a2.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall3_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("r7") nr.to_asm(), - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - in("r2") a2.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall4( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("r7") nr.to_asm(), - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - in("r2") a2.to_asm(), - in("r3") a3.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall4_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("r7") nr.to_asm(), - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - in("r2") a2.to_asm(), - in("r3") a3.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall5( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("r7") nr.to_asm(), - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - in("r2") a2.to_asm(), - in("r3") a3.to_asm(), - in("r4") a4.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall5_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("r7") nr.to_asm(), - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - in("r2") a2.to_asm(), - in("r3") a3.to_asm(), - in("r4") a4.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall6( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("r7") nr.to_asm(), - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - in("r2") a2.to_asm(), - in("r3") a3.to_asm(), - in("r4") a4.to_asm(), - in("r5") a5.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall6_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let r0; - asm!( - "svc 0", - in("r7") nr.to_asm(), - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - in("r2") a2.to_asm(), - in("r3") a3.to_asm(), - in("r4") a4.to_asm(), - in("r5") a5.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/mips64.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/mips64.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/mips64.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/mips64.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,466 +0,0 @@ -//! mips64el Linux system calls. -//! -//! On mips64el, Linux indicates success or failure using `$a3` (`$7`) rather -//! than by returning a negative error code as most other architectures do. -//! -//! Mips-family platforms have a special calling convention for `__NR_pipe`, -//! however we use `__NR_pipe2` instead to avoid having to implement it. - -use crate::backend::reg::{ - ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0, -}; -use core::arch::asm; - -#[inline] -pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - lateout("$7" /*$a3*/) err, - lateout("$8" /*$a4*/) _, - lateout("$9" /*$a5*/) _, - lateout("$10" /*$a6*/) _, - lateout("$11" /*$a7*/) _, - lateout("$12" /*$t0*/) _, - lateout("$13" /*$t1*/) _, - lateout("$14" /*$t2*/) _, - lateout("$15" /*$t3*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - lateout("$7" /*$a3*/) err, - lateout("$8" /*$a4*/) _, - lateout("$9" /*$a5*/) _, - lateout("$10" /*$a6*/) _, - lateout("$11" /*$a7*/) _, - lateout("$12" /*$t0*/) _, - lateout("$13" /*$t1*/) _, - lateout("$14" /*$t2*/) _, - lateout("$15" /*$t3*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, -) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - lateout("$7" /*$a3*/) err, - lateout("$8" /*$a4*/) _, - lateout("$9" /*$a5*/) _, - lateout("$10" /*$a6*/) _, - lateout("$11" /*$a7*/) _, - lateout("$12" /*$t0*/) _, - lateout("$13" /*$t1*/) _, - lateout("$14" /*$t2*/) _, - lateout("$15" /*$t3*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { - asm!( - "syscall", - in("$2" /*$v0*/) nr.to_asm(), - in("$4" /*$a0*/) a0.to_asm(), - options(noreturn) - ) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall2( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - lateout("$7" /*$a3*/) err, - lateout("$8" /*$a4*/) _, - lateout("$9" /*$a5*/) _, - lateout("$10" /*$a6*/) _, - lateout("$11" /*$a7*/) _, - lateout("$12" /*$t0*/) _, - lateout("$13" /*$t1*/) _, - lateout("$14" /*$t2*/) _, - lateout("$15" /*$t3*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall2_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - lateout("$7" /*$a3*/) err, - lateout("$8" /*$a4*/) _, - lateout("$9" /*$a5*/) _, - lateout("$10" /*$a6*/) _, - lateout("$11" /*$a7*/) _, - lateout("$12" /*$t0*/) _, - lateout("$13" /*$t1*/) _, - lateout("$14" /*$t2*/) _, - lateout("$15" /*$t3*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall3( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - in("$6" /*$a2*/) a2.to_asm(), - lateout("$7" /*$a3*/) err, - lateout("$8" /*$a4*/) _, - lateout("$9" /*$a5*/) _, - lateout("$10" /*$a6*/) _, - lateout("$11" /*$a7*/) _, - lateout("$12" /*$t0*/) _, - lateout("$13" /*$t1*/) _, - lateout("$14" /*$t2*/) _, - lateout("$15" /*$t3*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall3_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - in("$6" /*$a2*/) a2.to_asm(), - lateout("$7" /*$a3*/) err, - lateout("$8" /*$a4*/) _, - lateout("$9" /*$a5*/) _, - lateout("$10" /*$a6*/) _, - lateout("$11" /*$a7*/) _, - lateout("$12" /*$t0*/) _, - lateout("$13" /*$t1*/) _, - lateout("$14" /*$t2*/) _, - lateout("$15" /*$t3*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall4( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - in("$6" /*$a2*/) a2.to_asm(), - inlateout("$7" /*$a3*/) a3.to_asm() => err, - lateout("$8" /*$a4*/) _, - lateout("$9" /*$a5*/) _, - lateout("$10" /*$a6*/) _, - lateout("$11" /*$a7*/) _, - lateout("$12" /*$t0*/) _, - lateout("$13" /*$t1*/) _, - lateout("$14" /*$t2*/) _, - lateout("$15" /*$t3*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall4_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - in("$6" /*$a2*/) a2.to_asm(), - inlateout("$7" /*$a3*/) a3.to_asm() => err, - lateout("$8" /*$a4*/) _, - lateout("$9" /*$a5*/) _, - lateout("$10" /*$a6*/) _, - lateout("$11" /*$a7*/) _, - lateout("$12" /*$t0*/) _, - lateout("$13" /*$t1*/) _, - lateout("$14" /*$t2*/) _, - lateout("$15" /*$t3*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall5( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - in("$6" /*$a2*/) a2.to_asm(), - inlateout("$7" /*$a3*/) a3.to_asm() => err, - inlateout("$8" /*$a4*/) a4.to_asm() => _, - lateout("$9" /*$a5*/) _, - lateout("$10" /*$a6*/) _, - lateout("$11" /*$a7*/) _, - lateout("$12" /*$t0*/) _, - lateout("$13" /*$t1*/) _, - lateout("$14" /*$t2*/) _, - lateout("$15" /*$t3*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall5_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - in("$6" /*$a2*/) a2.to_asm(), - inlateout("$7" /*$a3*/) a3.to_asm() => err, - inlateout("$8" /*$a4*/) a4.to_asm() => _, - lateout("$9" /*$a5*/) _, - lateout("$10" /*$a6*/) _, - lateout("$11" /*$a7*/) _, - lateout("$12" /*$t0*/) _, - lateout("$13" /*$t1*/) _, - lateout("$14" /*$t2*/) _, - lateout("$15" /*$t3*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall6( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - in("$6" /*$a2*/) a2.to_asm(), - inlateout("$7" /*$a3*/) a3.to_asm() => err, - inlateout("$8" /*$a4*/) a4.to_asm() => _, - inlateout("$9" /*$a5*/) a5.to_asm() => _, - lateout("$10" /*$a6*/) _, - lateout("$11" /*$a7*/) _, - lateout("$12" /*$t0*/) _, - lateout("$13" /*$t1*/) _, - lateout("$14" /*$t2*/) _, - lateout("$15" /*$t3*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall6_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - in("$6" /*$a2*/) a2.to_asm(), - inlateout("$7" /*$a3*/) a3.to_asm() => err, - inlateout("$8" /*$a4*/) a4.to_asm() => _, - inlateout("$9" /*$a5*/) a5.to_asm() => _, - lateout("$10" /*$a6*/) _, - lateout("$11" /*$a7*/) _, - lateout("$12" /*$t0*/) _, - lateout("$13" /*$t1*/) _, - lateout("$14" /*$t2*/) _, - lateout("$15" /*$t3*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/mips.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/mips.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/mips.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/mips.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,543 +0,0 @@ -//! mipsel Linux system calls. -//! -//! On mipsel, Linux indicates success or failure using `$a3` rather -//! than by returning a negative error code as most other architectures do. -//! -//! Mips-family platforms have a special calling convention for `__NR_pipe`, -//! however we use `__NR_pipe2` instead to avoid having to implement it. - -use crate::backend::reg::{ - ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, A6, R0, -}; -use core::arch::asm; - -#[inline] -pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - lateout("$7" /*$a3*/) err, - lateout("$8" /*$t0*/) _, - lateout("$9" /*$t1*/) _, - lateout("$10" /*$t2*/) _, - lateout("$11" /*$t3*/) _, - lateout("$12" /*$t4*/) _, - lateout("$13" /*$t5*/) _, - lateout("$14" /*$t6*/) _, - lateout("$15" /*$t7*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - lateout("$7" /*$a3*/) err, - lateout("$8" /*$t0*/) _, - lateout("$9" /*$t1*/) _, - lateout("$10" /*$t2*/) _, - lateout("$11" /*$t3*/) _, - lateout("$12" /*$t4*/) _, - lateout("$13" /*$t5*/) _, - lateout("$14" /*$t6*/) _, - lateout("$15" /*$t7*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, -) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - lateout("$7" /*$a3*/) err, - lateout("$8" /*$t0*/) _, - lateout("$9" /*$t1*/) _, - lateout("$10" /*$t2*/) _, - lateout("$11" /*$t3*/) _, - lateout("$12" /*$t4*/) _, - lateout("$13" /*$t5*/) _, - lateout("$14" /*$t6*/) _, - lateout("$15" /*$t7*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { - asm!( - "syscall", - in("$2" /*$v0*/) nr.to_asm(), - in("$4" /*$a0*/) a0.to_asm(), - options(noreturn) - ) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall2( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - lateout("$7" /*$a3*/) err, - lateout("$8" /*$t0*/) _, - lateout("$9" /*$t1*/) _, - lateout("$10" /*$t2*/) _, - lateout("$11" /*$t3*/) _, - lateout("$12" /*$t4*/) _, - lateout("$13" /*$t5*/) _, - lateout("$14" /*$t6*/) _, - lateout("$15" /*$t7*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall2_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - lateout("$7" /*$a3*/) err, - lateout("$8" /*$t0*/) _, - lateout("$9" /*$t1*/) _, - lateout("$10" /*$t2*/) _, - lateout("$11" /*$t3*/) _, - lateout("$12" /*$t4*/) _, - lateout("$13" /*$t5*/) _, - lateout("$14" /*$t6*/) _, - lateout("$15" /*$t7*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall3( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - in("$6" /*$a2*/) a2.to_asm(), - lateout("$7" /*$a3*/) err, - lateout("$8" /*$t0*/) _, - lateout("$9" /*$t1*/) _, - lateout("$10" /*$t2*/) _, - lateout("$11" /*$t3*/) _, - lateout("$12" /*$t4*/) _, - lateout("$13" /*$t5*/) _, - lateout("$14" /*$t6*/) _, - lateout("$15" /*$t7*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall3_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - in("$6" /*$a2*/) a2.to_asm(), - lateout("$7" /*$a3*/) err, - lateout("$8" /*$t0*/) _, - lateout("$9" /*$t1*/) _, - lateout("$10" /*$t2*/) _, - lateout("$11" /*$t3*/) _, - lateout("$12" /*$t4*/) _, - lateout("$13" /*$t5*/) _, - lateout("$14" /*$t6*/) _, - lateout("$15" /*$t7*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall4( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - in("$6" /*$a2*/) a2.to_asm(), - inlateout("$7" /*$a3*/) a3.to_asm() => err, - lateout("$8" /*$t0*/) _, - lateout("$9" /*$t1*/) _, - lateout("$10" /*$t2*/) _, - lateout("$11" /*$t3*/) _, - lateout("$12" /*$t4*/) _, - lateout("$13" /*$t5*/) _, - lateout("$14" /*$t6*/) _, - lateout("$15" /*$t7*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall4_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let x0; - let err: usize; - asm!( - "syscall", - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - in("$6" /*$a2*/) a2.to_asm(), - inlateout("$7" /*$a3*/) a3.to_asm() => err, - lateout("$8" /*$t0*/) _, - lateout("$9" /*$t1*/) _, - lateout("$10" /*$t2*/) _, - lateout("$11" /*$t3*/) _, - lateout("$12" /*$t4*/) _, - lateout("$13" /*$t5*/) _, - lateout("$14" /*$t6*/) _, - lateout("$15" /*$t7*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall5( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let x0; - let err: usize; - asm!( - ".set noat", - "subu $sp, 32", - "sw {}, 16($sp)", - "syscall", - "addu $sp, 32", - ".set at", - in(reg) a4.to_asm(), - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - in("$6" /*$a2*/) a2.to_asm(), - inlateout("$7" /*$a3*/) a3.to_asm() => err, - lateout("$8" /*$t0*/) _, - lateout("$9" /*$t1*/) _, - lateout("$10" /*$t2*/) _, - lateout("$11" /*$t3*/) _, - lateout("$12" /*$t4*/) _, - lateout("$13" /*$t5*/) _, - lateout("$14" /*$t6*/) _, - lateout("$15" /*$t7*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(preserves_flags) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall5_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let x0; - let err: usize; - asm!( - ".set noat", - "subu $sp, 32", - "sw {}, 16($sp)", - "syscall", - "addu $sp, 32", - ".set at", - in(reg) a4.to_asm(), - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - in("$6" /*$a2*/) a2.to_asm(), - inlateout("$7" /*$a3*/) a3.to_asm() => err, - lateout("$8" /*$t0*/) _, - lateout("$9" /*$t1*/) _, - lateout("$10" /*$t2*/) _, - lateout("$11" /*$t3*/) _, - lateout("$12" /*$t4*/) _, - lateout("$13" /*$t5*/) _, - lateout("$14" /*$t6*/) _, - lateout("$15" /*$t7*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(preserves_flags, readonly) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall6( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let x0; - let err: usize; - asm!( - ".set noat", - "subu $sp, 32", - "sw {}, 16($sp)", - "sw {}, 20($sp)", - "syscall", - "addu $sp, 32", - ".set at", - in(reg) a4.to_asm(), - in(reg) a5.to_asm(), - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - in("$6" /*$a2*/) a2.to_asm(), - inlateout("$7" /*$a3*/) a3.to_asm() => err, - lateout("$8" /*$t0*/) _, - lateout("$9" /*$t1*/) _, - lateout("$10" /*$t2*/) _, - lateout("$11" /*$t3*/) _, - lateout("$12" /*$t4*/) _, - lateout("$13" /*$t5*/) _, - lateout("$14" /*$t6*/) _, - lateout("$15" /*$t7*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(preserves_flags) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall6_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let x0; - let err: usize; - asm!( - ".set noat", - "subu $sp, 32", - "sw {}, 16($sp)", - "sw {}, 20($sp)", - "syscall", - "addu $sp, 32", - ".set at", - in(reg) a4.to_asm(), - in(reg) a5.to_asm(), - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - in("$6" /*$a2*/) a2.to_asm(), - inlateout("$7" /*$a3*/) a3.to_asm() => err, - lateout("$8" /*$t0*/) _, - lateout("$9" /*$t1*/) _, - lateout("$10" /*$t2*/) _, - lateout("$11" /*$t3*/) _, - lateout("$12" /*$t4*/) _, - lateout("$13" /*$t5*/) _, - lateout("$14" /*$t6*/) _, - lateout("$15" /*$t7*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(preserves_flags, readonly) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall7_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, - a6: ArgReg<'_, A6>, -) -> RetReg { - let x0; - let err: usize; - asm!( - ".set noat", - "subu $sp, 32", - "sw {}, 16($sp)", - "sw {}, 20($sp)", - "sw {}, 24($sp)", - "syscall", - "addu $sp, 32", - ".set at", - in(reg) a4.to_asm(), - in(reg) a5.to_asm(), - in(reg) a6.to_asm(), - inlateout("$2" /*$v0*/) nr.to_asm() => x0, - in("$4" /*$a0*/) a0.to_asm(), - in("$5" /*$a1*/) a1.to_asm(), - in("$6" /*$a2*/) a2.to_asm(), - inlateout("$7" /*$a3*/) a3.to_asm() => err, - lateout("$8" /*$t0*/) _, - lateout("$9" /*$t1*/) _, - lateout("$10" /*$t2*/) _, - lateout("$11" /*$t3*/) _, - lateout("$12" /*$t4*/) _, - lateout("$13" /*$t5*/) _, - lateout("$14" /*$t6*/) _, - lateout("$15" /*$t7*/) _, - lateout("$24" /*$t8*/) _, - lateout("$25" /*$t9*/) _, - options(preserves_flags, readonly) - ); - FromAsm::from_asm(if err != 0 { - (x0 as usize).wrapping_neg() as *mut _ - } else { - x0 - }) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -//! Inline asm for making system calls. -//! -//! Compilers should really have intrinsics for making system calls. They're -//! much like regular calls, with custom calling conventions, and calling -//! conventions are otherwise the compiler's job. But for now, use inline asm. -//! -//! The calling conventions for Linux syscalls are [documented here]. -//! -//! [documented here]: https://man7.org/linux/man-pages/man2/syscall.2.html - -#[cfg_attr(target_arch = "aarch64", path = "aarch64.rs")] -#[cfg_attr(all(target_arch = "arm", not(thumb_mode)), path = "arm.rs")] -#[cfg_attr(all(target_arch = "arm", thumb_mode), path = "thumb.rs")] -#[cfg_attr(target_arch = "mips", path = "mips.rs")] -#[cfg_attr(target_arch = "mips64", path = "mips64.rs")] -#[cfg_attr(target_arch = "powerpc64", path = "powerpc64.rs")] -#[cfg_attr(target_arch = "riscv64", path = "riscv64.rs")] -#[cfg_attr(target_arch = "x86", path = "x86.rs")] -#[cfg_attr(target_arch = "x86_64", path = "x86_64.rs")] -mod target_arch; - -pub(in crate::backend) use self::target_arch::*; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/powerpc64.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/powerpc64.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/powerpc64.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/powerpc64.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,413 +0,0 @@ -//! powerpc64le Linux system calls. -//! -//! On powerpc64le, Linux indicates success or failure using `cr0.SO` rather -//! than by returning a negative error code as most other architectures do. In -//! theory we could immediately translate this into a `Result`, and it'd save a -//! few branches. And in theory we could have specialized sequences for use -//! with syscalls that are known to never fail. However, those would require -//! more extensive changes in rustix's platform-independent code. For now, we -//! check the flag and negate the error value to make PowerPC64 look like other -//! architectures. - -use crate::backend::reg::{ - ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0, -}; -use core::arch::asm; - -#[inline] -pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber) -> RetReg { - let r0; - asm!( - "sc", - "bns 0f", - "neg 3, 3", - "0:", - inlateout("r0") nr.to_asm() => _, - lateout("r3") r0, - lateout("r4") _, - lateout("r5") _, - lateout("r6") _, - lateout("r7") _, - lateout("r8") _, - lateout("r9") _, - lateout("r10") _, - lateout("r11") _, - lateout("r12") _, - lateout("cr0") _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { - let r0; - asm!( - "sc", - "bns 0f", - "neg 3, 3", - "0:", - inlateout("r0") nr.to_asm() => _, - inlateout("r3") a0.to_asm() => r0, - lateout("r4") _, - lateout("r5") _, - lateout("r6") _, - lateout("r7") _, - lateout("r8") _, - lateout("r9") _, - lateout("r10") _, - lateout("r11") _, - lateout("r12") _, - lateout("cr0") _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, -) -> RetReg { - let r0; - asm!( - "sc", - "bns 0f", - "neg 3, 3", - "0:", - inlateout("r0") nr.to_asm() => _, - inlateout("r3") a0.to_asm() => r0, - lateout("r4") _, - lateout("r5") _, - lateout("r6") _, - lateout("r7") _, - lateout("r8") _, - lateout("r9") _, - lateout("r10") _, - lateout("r11") _, - lateout("r12") _, - lateout("cr0") _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { - asm!( - "sc", - in("r0") nr.to_asm(), - in("r3") a0.to_asm(), - options(noreturn) - ) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall2( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let r0; - asm!( - "sc", - "bns 0f", - "neg 3, 3", - "0:", - inlateout("r0") nr.to_asm() => _, - inlateout("r3") a0.to_asm() => r0, - inlateout("r4") a1.to_asm() => _, - lateout("r5") _, - lateout("r6") _, - lateout("r7") _, - lateout("r8") _, - lateout("r9") _, - lateout("r10") _, - lateout("r11") _, - lateout("r12") _, - lateout("cr0") _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall2_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let r0; - asm!( - "sc", - "bns 0f", - "neg 3, 3", - "0:", - inlateout("r0") nr.to_asm() => _, - inlateout("r3") a0.to_asm() => r0, - inlateout("r4") a1.to_asm() => _, - lateout("r5") _, - lateout("r6") _, - lateout("r7") _, - lateout("r8") _, - lateout("r9") _, - lateout("r10") _, - lateout("r11") _, - lateout("r12") _, - lateout("cr0") _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall3( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let r0; - asm!( - "sc", - "bns 0f", - "neg 3, 3", - "0:", - inlateout("r0") nr.to_asm() => _, - inlateout("r3") a0.to_asm() => r0, - inlateout("r4") a1.to_asm() => _, - inlateout("r5") a2.to_asm() => _, - lateout("r6") _, - lateout("r7") _, - lateout("r8") _, - lateout("r9") _, - lateout("r10") _, - lateout("r11") _, - lateout("r12") _, - lateout("cr0") _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall3_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let r0; - asm!( - "sc", - "bns 0f", - "neg 3, 3", - "0:", - inlateout("r0") nr.to_asm() => _, - inlateout("r3") a0.to_asm() => r0, - inlateout("r4") a1.to_asm() => _, - inlateout("r5") a2.to_asm() => _, - lateout("r6") _, - lateout("r7") _, - lateout("r8") _, - lateout("r9") _, - lateout("r10") _, - lateout("r11") _, - lateout("r12") _, - lateout("cr0") _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall4( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let r0; - asm!( - "sc", - "bns 0f", - "neg 3, 3", - "0:", - inlateout("r0") nr.to_asm() => _, - inlateout("r3") a0.to_asm() => r0, - inlateout("r4") a1.to_asm() => _, - inlateout("r5") a2.to_asm() => _, - inlateout("r6") a3.to_asm() => _, - lateout("r7") _, - lateout("r8") _, - lateout("r9") _, - lateout("r10") _, - lateout("r11") _, - lateout("r12") _, - lateout("cr0") _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall4_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let r0; - asm!( - "sc", - "bns 0f", - "neg 3, 3", - "0:", - inlateout("r0") nr.to_asm() => _, - inlateout("r3") a0.to_asm() => r0, - inlateout("r4") a1.to_asm() => _, - inlateout("r5") a2.to_asm() => _, - inlateout("r6") a3.to_asm() => _, - lateout("r7") _, - lateout("r8") _, - lateout("r9") _, - lateout("r10") _, - lateout("r11") _, - lateout("r12") _, - lateout("cr0") _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall5( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let r0; - asm!( - "sc", - "bns 0f", - "neg 3, 3", - "0:", - inlateout("r0") nr.to_asm() => _, - inlateout("r3") a0.to_asm() => r0, - inlateout("r4") a1.to_asm() => _, - inlateout("r5") a2.to_asm() => _, - inlateout("r6") a3.to_asm() => _, - inlateout("r7") a4.to_asm() => _, - lateout("r8") _, - lateout("r9") _, - lateout("r10") _, - lateout("r11") _, - lateout("r12") _, - lateout("cr0") _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall5_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let r0; - asm!( - "sc", - "bns 0f", - "neg 3, 3", - "0:", - inlateout("r0") nr.to_asm() => _, - inlateout("r3") a0.to_asm() => r0, - inlateout("r4") a1.to_asm() => _, - inlateout("r5") a2.to_asm() => _, - inlateout("r6") a3.to_asm() => _, - inlateout("r7") a4.to_asm() => _, - lateout("r8") _, - lateout("r9") _, - lateout("r10") _, - lateout("r11") _, - lateout("r12") _, - lateout("cr0") _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall6( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let r0; - asm!( - "sc", - "bns 0f", - "neg 3, 3", - "0:", - inlateout("r0") nr.to_asm() => _, - inlateout("r3") a0.to_asm() => r0, - inlateout("r4") a1.to_asm() => _, - inlateout("r5") a2.to_asm() => _, - inlateout("r6") a3.to_asm() => _, - inlateout("r7") a4.to_asm() => _, - inlateout("r8") a5.to_asm() => _, - lateout("r9") _, - lateout("r10") _, - lateout("r11") _, - lateout("r12") _, - lateout("cr0") _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall6_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let r0; - asm!( - "sc", - "bns 0f", - "neg 3, 3", - "0:", - inlateout("r0") nr.to_asm() => _, - inlateout("r3") a0.to_asm() => r0, - inlateout("r4") a1.to_asm() => _, - inlateout("r5") a2.to_asm() => _, - inlateout("r6") a3.to_asm() => _, - inlateout("r7") a4.to_asm() => _, - inlateout("r8") a5.to_asm() => _, - lateout("r9") _, - lateout("r10") _, - lateout("r11") _, - lateout("r12") _, - lateout("cr0") _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/riscv64.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/riscv64.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/riscv64.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/riscv64.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,265 +0,0 @@ -//! riscv64 Linux system calls. - -use crate::backend::reg::{ - ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0, -}; -use core::arch::asm; - -#[inline] -pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg { - let r0; - asm!( - "ecall", - in("a7") nr.to_asm(), - lateout("a0") r0, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { - let r0; - asm!( - "ecall", - in("a7") nr.to_asm(), - inlateout("a0") a0.to_asm() => r0, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, -) -> RetReg { - let r0; - asm!( - "ecall", - in("a7") nr.to_asm(), - inlateout("a0") a0.to_asm() => r0, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { - asm!( - "ecall", - in("a7") nr.to_asm(), - in("a0") a0.to_asm(), - options(noreturn) - ); -} - -#[inline] -pub(in crate::backend) unsafe fn syscall2( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let r0; - asm!( - "ecall", - in("a7") nr.to_asm(), - inlateout("a0") a0.to_asm() => r0, - in("a1") a1.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall2_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let r0; - asm!( - "ecall", - in("a7") nr.to_asm(), - inlateout("a0") a0.to_asm() => r0, - in("a1") a1.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall3( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let r0; - asm!( - "ecall", - in("a7") nr.to_asm(), - inlateout("a0") a0.to_asm() => r0, - in("a1") a1.to_asm(), - in("a2") a2.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall3_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let r0; - asm!( - "ecall", - in("a7") nr.to_asm(), - inlateout("a0") a0.to_asm() => r0, - in("a1") a1.to_asm(), - in("a2") a2.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall4( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let r0; - asm!( - "ecall", - in("a7") nr.to_asm(), - inlateout("a0") a0.to_asm() => r0, - in("a1") a1.to_asm(), - in("a2") a2.to_asm(), - in("a3") a3.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall4_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let r0; - asm!( - "ecall", - in("a7") nr.to_asm(), - inlateout("a0") a0.to_asm() => r0, - in("a1") a1.to_asm(), - in("a2") a2.to_asm(), - in("a3") a3.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall5( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let r0; - asm!( - "ecall", - in("a7") nr.to_asm(), - inlateout("a0") a0.to_asm() => r0, - in("a1") a1.to_asm(), - in("a2") a2.to_asm(), - in("a3") a3.to_asm(), - in("a4") a4.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall5_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let r0; - asm!( - "ecall", - in("a7") nr.to_asm(), - inlateout("a0") a0.to_asm() => r0, - in("a1") a1.to_asm(), - in("a2") a2.to_asm(), - in("a3") a3.to_asm(), - in("a4") a4.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall6( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let r0; - asm!( - "ecall", - in("a7") nr.to_asm(), - inlateout("a0") a0.to_asm() => r0, - in("a1") a1.to_asm(), - in("a2") a2.to_asm(), - in("a3") a3.to_asm(), - in("a4") a4.to_asm(), - in("a5") a5.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall6_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let r0; - asm!( - "ecall", - in("a7") nr.to_asm(), - inlateout("a0") a0.to_asm() => r0, - in("a1") a1.to_asm(), - in("a2") a2.to_asm(), - in("a3") a3.to_asm(), - in("a4") a4.to_asm(), - in("a5") a5.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/thumb.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/thumb.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/thumb.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/thumb.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,322 +0,0 @@ -//! arm Linux system calls, using thumb-mode. -//! -//! In thumb-mode, r7 is the frame pointer and is not permitted to be used in -//! an inline asm operand, so we have to use a different register and copy it -//! into r7 inside the inline asm. - -use crate::backend::reg::{ - ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0, -}; -use core::arch::asm; - -#[inline] -pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg { - let r0; - asm!( - "mov {tmp}, r7", - "mov r7, {nr}", - "svc 0", - "mov r7, {tmp}", - nr = in(reg) nr.to_asm(), - tmp = out(reg) _, - lateout("r0") r0, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { - let r0; - asm!( - "mov {tmp}, r7", - "mov r7, {nr}", - "svc 0", - "mov r7, {tmp}", - nr = in(reg) nr.to_asm(), - tmp = out(reg) _, - inlateout("r0") a0.to_asm() => r0, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, -) -> RetReg { - let r0; - asm!( - "mov {tmp}, r7", - "mov r7, {nr}", - "svc 0", - "mov r7, {tmp}", - nr = in(reg) nr.to_asm(), - tmp = out(reg) _, - inlateout("r0") a0.to_asm() => r0, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { - asm!( - "mov r7, {nr}", - "svc 0", - nr = in(reg) nr.to_asm(), - in("r0") a0.to_asm(), - options(noreturn) - ) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall2( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let r0; - asm!( - "mov {tmp}, r7", - "mov r7, {nr}", - "svc 0", - "mov r7, {tmp}", - nr = in(reg) nr.to_asm(), - tmp = out(reg) _, - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall2_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let r0; - asm!( - "mov {tmp}, r7", - "mov r7, {nr}", - "svc 0", - "mov r7, {tmp}", - nr = in(reg) nr.to_asm(), - tmp = out(reg) _, - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall3( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let r0; - asm!( - "mov {tmp}, r7", - "mov r7, {nr}", - "svc 0", - "mov r7, {tmp}", - nr = in(reg) nr.to_asm(), - tmp = out(reg) _, - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - in("r2") a2.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall3_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let r0; - asm!( - "mov {tmp}, r7", - "mov r7, {nr}", - "svc 0", - "mov r7, {tmp}", - nr = in(reg) nr.to_asm(), - tmp = out(reg) _, - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - in("r2") a2.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall4( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let r0; - asm!( - "mov {tmp}, r7", - "mov r7, {nr}", - "svc 0", - "mov r7, {tmp}", - nr = in(reg) nr.to_asm(), - tmp = out(reg) _, - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - in("r2") a2.to_asm(), - in("r3") a3.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall4_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let r0; - asm!( - "mov {tmp}, r7", - "mov r7, {nr}", - "svc 0", - "mov r7, {tmp}", - nr = in(reg) nr.to_asm(), - tmp = out(reg) _, - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - in("r2") a2.to_asm(), - in("r3") a3.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall5( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let r0; - asm!( - "mov {tmp}, r7", - "mov r7, {nr}", - "svc 0", - "mov r7, {tmp}", - nr = in(reg) nr.to_asm(), - tmp = out(reg) _, - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - in("r2") a2.to_asm(), - in("r3") a3.to_asm(), - in("r4") a4.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall5_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let r0; - asm!( - "mov {tmp}, r7", - "mov r7, {nr}", - "svc 0", - "mov r7, {tmp}", - nr = in(reg) nr.to_asm(), - tmp = out(reg) _, - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - in("r2") a2.to_asm(), - in("r3") a3.to_asm(), - in("r4") a4.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall6( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let r0; - asm!( - "mov {tmp}, r7", - "mov r7, {nr}", - "svc 0", - "mov r7, {tmp}", - nr = in(reg) nr.to_asm(), - tmp = out(reg) _, - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - in("r2") a2.to_asm(), - in("r3") a3.to_asm(), - in("r4") a4.to_asm(), - in("r5") a5.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall6_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let r0; - asm!( - "mov {tmp}, r7", - "mov r7, {nr}", - "svc 0", - "mov r7, {tmp}", - nr = in(reg) nr.to_asm(), - tmp = out(reg) _, - inlateout("r0") a0.to_asm() => r0, - in("r1") a1.to_asm(), - in("r2") a2.to_asm(), - in("r3") a3.to_asm(), - in("r4") a4.to_asm(), - in("r5") a5.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/x86_64.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/x86_64.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/x86_64.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/x86_64.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,293 +0,0 @@ -//! x86-64 Linux system calls. - -use crate::backend::reg::{ - ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0, -}; -use core::arch::asm; - -#[cfg(target_pointer_width = "32")] -compile_error!("x32 is not yet supported"); - -#[inline] -pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg { - let r0; - asm!( - "syscall", - inlateout("rax") nr.to_asm() => r0, - lateout("rcx") _, - lateout("r11") _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { - let r0; - asm!( - "syscall", - inlateout("rax") nr.to_asm() => r0, - in("rdi") a0.to_asm(), - lateout("rcx") _, - lateout("r11") _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, -) -> RetReg { - let r0; - asm!( - "syscall", - inlateout("rax") nr.to_asm() => r0, - in("rdi") a0.to_asm(), - lateout("rcx") _, - lateout("r11") _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { - asm!( - "syscall", - in("rax") nr.to_asm(), - in("rdi") a0.to_asm(), - options(noreturn) - ) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall2( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let r0; - asm!( - "syscall", - inlateout("rax") nr.to_asm() => r0, - in("rdi") a0.to_asm(), - in("rsi") a1.to_asm(), - lateout("rcx") _, - lateout("r11") _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall2_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let r0; - asm!( - "syscall", - inlateout("rax") nr.to_asm() => r0, - in("rdi") a0.to_asm(), - in("rsi") a1.to_asm(), - lateout("rcx") _, - lateout("r11") _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall3( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let r0; - asm!( - "syscall", - inlateout("rax") nr.to_asm() => r0, - in("rdi") a0.to_asm(), - in("rsi") a1.to_asm(), - in("rdx") a2.to_asm(), - lateout("rcx") _, - lateout("r11") _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall3_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let r0; - asm!( - "syscall", - inlateout("rax") nr.to_asm() => r0, - in("rdi") a0.to_asm(), - in("rsi") a1.to_asm(), - in("rdx") a2.to_asm(), - lateout("rcx") _, - lateout("r11") _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall4( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let r0; - asm!( - "syscall", - inlateout("rax") nr.to_asm() => r0, - in("rdi") a0.to_asm(), - in("rsi") a1.to_asm(), - in("rdx") a2.to_asm(), - in("r10") a3.to_asm(), - lateout("rcx") _, - lateout("r11") _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall4_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let r0; - asm!( - "syscall", - inlateout("rax") nr.to_asm() => r0, - in("rdi") a0.to_asm(), - in("rsi") a1.to_asm(), - in("rdx") a2.to_asm(), - in("r10") a3.to_asm(), - lateout("rcx") _, - lateout("r11") _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall5( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let r0; - asm!( - "syscall", - inlateout("rax") nr.to_asm() => r0, - in("rdi") a0.to_asm(), - in("rsi") a1.to_asm(), - in("rdx") a2.to_asm(), - in("r10") a3.to_asm(), - in("r8") a4.to_asm(), - lateout("rcx") _, - lateout("r11") _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall5_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let r0; - asm!( - "syscall", - inlateout("rax") nr.to_asm() => r0, - in("rdi") a0.to_asm(), - in("rsi") a1.to_asm(), - in("rdx") a2.to_asm(), - in("r10") a3.to_asm(), - in("r8") a4.to_asm(), - lateout("rcx") _, - lateout("r11") _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall6( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let r0; - asm!( - "syscall", - inlateout("rax") nr.to_asm() => r0, - in("rdi") a0.to_asm(), - in("rsi") a1.to_asm(), - in("rdx") a2.to_asm(), - in("r10") a3.to_asm(), - in("r8") a4.to_asm(), - in("r9") a5.to_asm(), - lateout("rcx") _, - lateout("r11") _, - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall6_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let r0; - asm!( - "syscall", - inlateout("rax") nr.to_asm() => r0, - in("rdi") a0.to_asm(), - in("rsi") a1.to_asm(), - in("rdx") a2.to_asm(), - in("r10") a3.to_asm(), - in("r8") a4.to_asm(), - in("r9") a5.to_asm(), - lateout("rcx") _, - lateout("r11") _, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/x86.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/x86.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/x86.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/inline/x86.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,490 +0,0 @@ -//! 32-bit x86 Linux system calls. -//! -//! There are two forms; `indirect_*` which take a callee, which allow calling -//! through the vDSO when possible, and plain forms, which use the `int 0x80` -//! instruction. -//! -//! Most `rustix` syscalls use the vsyscall mechanism rather than going using -//! `int 0x80` sequences, as vsyscall is much faster. -//! -//! Syscalls made with `int 0x80` preserve the flags register, while syscalls -//! made using vsyscall do not. - -#![allow(dead_code)] - -use crate::backend::reg::{ - ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0, -}; -use crate::backend::vdso_wrappers::SyscallType; -use core::arch::asm; - -#[inline] -pub(in crate::backend) unsafe fn indirect_syscall0( - callee: SyscallType, - nr: SyscallNumber<'_>, -) -> RetReg { - let r0; - asm!( - "call {callee}", - callee = in(reg) callee, - inlateout("eax") nr.to_asm() => r0, - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn indirect_syscall1( - callee: SyscallType, - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, -) -> RetReg { - let r0; - asm!( - "call {callee}", - callee = in(reg) callee, - inlateout("eax") nr.to_asm() => r0, - in("ebx") a0.to_asm(), - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn indirect_syscall1_noreturn( - callee: SyscallType, - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, -) -> ! { - asm!( - "call {callee}", - callee = in(reg) callee, - in("eax") nr.to_asm(), - in("ebx") a0.to_asm(), - options(noreturn) - ) -} - -#[inline] -pub(in crate::backend) unsafe fn indirect_syscall2( - callee: SyscallType, - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let r0; - asm!( - "call {callee}", - callee = in(reg) callee, - inlateout("eax") nr.to_asm() => r0, - in("ebx") a0.to_asm(), - in("ecx") a1.to_asm(), - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn indirect_syscall3( - callee: SyscallType, - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let r0; - asm!( - "call {callee}", - callee = in(reg) callee, - inlateout("eax") nr.to_asm() => r0, - in("ebx") a0.to_asm(), - in("ecx") a1.to_asm(), - in("edx") a2.to_asm(), - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn indirect_syscall4( - callee: SyscallType, - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let r0; - // a3 should go in esi, but `asm!` won't let us use it as an operand. - // Temporarily swap it into place, and then swap it back afterward. - // - // We hard-code the callee operand to use edi instead of `in(reg)` because - // even though we can't name esi as an operand, the compiler can use esi to - // satisfy `in(reg)`. - asm!( - "xchg esi, {a3}", - "call edi", - "xchg esi, {a3}", - a3 = in(reg) a3.to_asm(), - in("edi") callee, - inlateout("eax") nr.to_asm() => r0, - in("ebx") a0.to_asm(), - in("ecx") a1.to_asm(), - in("edx") a2.to_asm(), - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn indirect_syscall5( - callee: SyscallType, - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let r0; - // Oof. a3 should go in esi, and `asm!` won't let us use that register as - // an operand. And we can't request stack slots. And there are no other - // registers free. Use eax as a temporary pointer to a slice, since it - // gets clobbered as the return value anyway. - asm!( - "push esi", - "push DWORD PTR [eax + 0]", - "mov esi, DWORD PTR [eax + 4]", - "mov eax, DWORD PTR [eax + 8]", - "call DWORD PTR [esp]", - "pop esi", - "pop esi", - inout("eax") &[callee as _, a3.to_asm(), nr.to_asm()] => r0, - in("ebx") a0.to_asm(), - in("ecx") a1.to_asm(), - in("edx") a2.to_asm(), - in("edi") a4.to_asm(), - ); - FromAsm::from_asm(r0) -} - -#[allow(clippy::too_many_arguments)] -#[inline] -pub(in crate::backend) unsafe fn indirect_syscall6( - callee: SyscallType, - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let r0; - // Oof again. a3 should go in esi, and a5 should go in ebp, and `asm!` - // won't let us use either of those registers as operands. And we can't - // request stack slots. And there are no other registers free. Use eax as a - // temporary pointer to a slice, since it gets clobbered as the return - // value anyway. - // - // This is another reason that syscalls should be compiler intrinsics - // rather than inline asm. - asm!( - "push ebp", - "push esi", - "push DWORD PTR [eax + 0]", - "mov esi, DWORD PTR [eax + 4]", - "mov ebp, DWORD PTR [eax + 8]", - "mov eax, DWORD PTR [eax + 12]", - "call DWORD PTR [esp]", - "pop esi", - "pop esi", - "pop ebp", - inout("eax") &[callee as _, a3.to_asm(), a5.to_asm(), nr.to_asm()] => r0, - in("ebx") a0.to_asm(), - in("ecx") a1.to_asm(), - in("edx") a2.to_asm(), - in("edi") a4.to_asm(), - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg { - let r0; - asm!( - "int $$0x80", - inlateout("eax") nr.to_asm() => r0, - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { - let r0; - asm!( - "int $$0x80", - inlateout("eax") nr.to_asm() => r0, - in("ebx") a0.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, -) -> RetReg { - let r0; - asm!( - "int $$0x80", - inlateout("eax") nr.to_asm() => r0, - in("ebx") a0.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { - asm!( - "int $$0x80", - in("eax") nr.to_asm(), - in("ebx") a0.to_asm(), - options(noreturn) - ) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall2( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let r0; - asm!( - "int $$0x80", - inlateout("eax") nr.to_asm() => r0, - in("ebx") a0.to_asm(), - in("ecx") a1.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall2_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - let r0; - asm!( - "int $$0x80", - inlateout("eax") nr.to_asm() => r0, - in("ebx") a0.to_asm(), - in("ecx") a1.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall3( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let r0; - asm!( - "int $$0x80", - inlateout("eax") nr.to_asm() => r0, - in("ebx") a0.to_asm(), - in("ecx") a1.to_asm(), - in("edx") a2.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall3_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - let r0; - asm!( - "int $$0x80", - inlateout("eax") nr.to_asm() => r0, - in("ebx") a0.to_asm(), - in("ecx") a1.to_asm(), - in("edx") a2.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall4( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let r0; - // a3 should go in esi, but `asm!` won't let us use it as an operand. - // Temporarily swap it into place, and then swap it back afterward. - asm!( - "xchg esi, {a3}", - "int $$0x80", - "xchg esi, {a3}", - a3 = in(reg) a3.to_asm(), - inlateout("eax") nr.to_asm() => r0, - in("ebx") a0.to_asm(), - in("ecx") a1.to_asm(), - in("edx") a2.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall4_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - let r0; - asm!( - "xchg esi, {a3}", - "int $$0x80", - "xchg esi, {a3}", - a3 = in(reg) a3.to_asm(), - inlateout("eax") nr.to_asm() => r0, - in("ebx") a0.to_asm(), - in("ecx") a1.to_asm(), - in("edx") a2.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall5( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let r0; - // As in `syscall4`, use xchg to handle a3. a4 should go in edi, and we can - // use that register as an operand. Unlike in `indirect_syscall5`, we don't - // have a `callee` operand taking up a register, so we have enough - // registers and don't need to use a slice. - asm!( - "xchg esi, {a3}", - "int $$0x80", - "xchg esi, {a3}", - a3 = in(reg) a3.to_asm(), - inlateout("eax") nr.to_asm() => r0, - in("ebx") a0.to_asm(), - in("ecx") a1.to_asm(), - in("edx") a2.to_asm(), - in("edi") a4.to_asm(), - options(nostack, preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall5_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - let r0; - // See the comments in `syscall5`. - asm!( - "xchg esi, {a3}", - "int $$0x80", - "xchg esi, {a3}", - a3 = in(reg) a3.to_asm(), - inlateout("eax") nr.to_asm() => r0, - in("ebx") a0.to_asm(), - in("ecx") a1.to_asm(), - in("edx") a2.to_asm(), - in("edi") a4.to_asm(), - options(nostack, preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall6( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let r0; - // See the comments in `indirect_syscall6`. - asm!( - "push ebp", - "push esi", - "mov esi, DWORD PTR [eax + 0]", - "mov ebp, DWORD PTR [eax + 4]", - "mov eax, DWORD PTR [eax + 8]", - "int $$0x80", - "pop esi", - "pop ebp", - inout("eax") &[a3.to_asm(), a5.to_asm(), nr.to_asm()] => r0, - in("ebx") a0.to_asm(), - in("ecx") a1.to_asm(), - in("edx") a2.to_asm(), - in("edi") a4.to_asm(), - options(preserves_flags) - ); - FromAsm::from_asm(r0) -} - -#[inline] -pub(in crate::backend) unsafe fn syscall6_readonly( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - let r0; - // See the comments in `indirect_syscall6`. - asm!( - "push ebp", - "push esi", - "mov esi, DWORD PTR [eax + 0]", - "mov ebp, DWORD PTR [eax + 4]", - "mov eax, DWORD PTR [eax + 8]", - "int $$0x80", - "pop esi", - "pop ebp", - inout("eax") &[a3.to_asm(), a5.to_asm(), nr.to_asm()] => r0, - in("ebx") a0.to_asm(), - in("ecx") a1.to_asm(), - in("edx") a2.to_asm(), - in("edi") a4.to_asm(), - options(preserves_flags, readonly) - ); - FromAsm::from_asm(r0) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,28 +1,20 @@ //! Architecture-specific syscall code. //! -//! `rustix` has inline assembly sequences using `asm!`, but that requires -//! Rust 1.59, so it also has out-of-line ("outline") assembly sequences in .s -//! files. And 32-bit x86 is special (see comments below). -//! //! This module also has a `choose` submodule which chooses a scheme and is //! what most of the `rustix` syscalls use. //! //! # Safety //! //! This contains the inline `asm` statements performing the syscall -//! instructions and FFI declarations declaring the out-of-line ("outline") -//! syscall instructions. +//! instructions. #![allow(unsafe_code)] #![cfg_attr(not(feature = "all-apis"), allow(unused_imports))] // We'll use as many arguments as syscalls need. #![allow(clippy::too_many_arguments)] -// When inline asm is available, use it. Otherwise, use out-of-line asm. These -// functions always use the machine's syscall instruction, even when it isn't -// the fastest option available. -#[cfg_attr(asm, path = "inline/mod.rs")] -#[cfg_attr(not(asm), path = "outline/mod.rs")] +// These functions always use the machine's syscall instruction, even when it +// isn't the fastest option available. pub(in crate::backend) mod asm; // On most architectures, the architecture syscall instruction is fast, so use @@ -31,7 +23,9 @@ target_arch = "arm", target_arch = "aarch64", target_arch = "mips", + target_arch = "mips32r6", target_arch = "mips64", + target_arch = "mips64r6", target_arch = "powerpc64", target_arch = "riscv64", target_arch = "x86_64", @@ -124,6 +118,85 @@ $crate::backend::reg::nr(linux_raw_sys::general::$nr), $a0.into(), $a1.into(), + $a2.into(), + $a3.into(), + $a4.into(), + $a5.into(), + $a6.into(), + ) + }; +} + +// Macro to invoke a syscall that always uses direct assembly, rather than the +// vDSO. Useful when still finding the vDSO. +#[allow(unused_macros)] +macro_rules! syscall_always_asm { + ($nr:ident) => { + $crate::backend::arch::asm::syscall0($crate::backend::reg::nr(linux_raw_sys::general::$nr)) + }; + + ($nr:ident, $a0:expr) => { + $crate::backend::arch::asm::syscall1( + $crate::backend::reg::nr(linux_raw_sys::general::$nr), + $a0.into(), + ) + }; + + ($nr:ident, $a0:expr, $a1:expr) => { + $crate::backend::arch::asm::syscall2( + $crate::backend::reg::nr(linux_raw_sys::general::$nr), + $a0.into(), + $a1.into(), + ) + }; + + ($nr:ident, $a0:expr, $a1:expr, $a2:expr) => { + $crate::backend::arch::asm::syscall3( + $crate::backend::reg::nr(linux_raw_sys::general::$nr), + $a0.into(), + $a1.into(), + $a2.into(), + ) + }; + + ($nr:ident, $a0:expr, $a1:expr, $a2:expr, $a3:expr) => { + $crate::backend::arch::asm::syscall4( + $crate::backend::reg::nr(linux_raw_sys::general::$nr), + $a0.into(), + $a1.into(), + $a2.into(), + $a3.into(), + ) + }; + + ($nr:ident, $a0:expr, $a1:expr, $a2:expr, $a3:expr, $a4:expr) => { + $crate::backend::arch::asm::syscall5( + $crate::backend::reg::nr(linux_raw_sys::general::$nr), + $a0.into(), + $a1.into(), + $a2.into(), + $a3.into(), + $a4.into(), + ) + }; + + ($nr:ident, $a0:expr, $a1:expr, $a2:expr, $a3:expr, $a4:expr, $a5:expr) => { + $crate::backend::arch::asm::syscall6( + $crate::backend::reg::nr(linux_raw_sys::general::$nr), + $a0.into(), + $a1.into(), + $a2.into(), + $a3.into(), + $a4.into(), + $a5.into(), + ) + }; + + ($nr:ident, $a0:expr, $a1:expr, $a2:expr, $a3:expr, $a4:expr, $a5:expr, $a6:expr) => { + $crate::backend::arch::asm::syscall7( + $crate::backend::reg::nr(linux_raw_sys::general::$nr), + $a0.into(), + $a1.into(), $a2.into(), $a3.into(), $a4.into(), diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/aarch64.s temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/aarch64.s --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/aarch64.s 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/aarch64.s 1970-01-01 00:00:00.000000000 +0000 @@ -1,119 +0,0 @@ -// Assembly code for making aarch64 syscalls. -// -// aarch64 syscall argument register ordering is the same as the aarch64 -// userspace argument register ordering except that the syscall number -// (nr) is passed in w8. -// -// outline.rs takes care of reordering the nr argument to the end for us, -// so we only need to move nr into w8. -// -// arm64-ilp32 is not yet supported. - - .file "aarch64.s" - .arch armv8-a - - .section .text.rustix_syscall0_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall0_nr_last - .hidden rustix_syscall0_nr_last - .type rustix_syscall0_nr_last, @function -rustix_syscall0_nr_last: - .cfi_startproc - mov w8, w0 - svc #0 - ret - .cfi_endproc - .size rustix_syscall0_nr_last, .-rustix_syscall0_nr_last - - .section .text.rustix_syscall1_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall1_nr_last - .hidden rustix_syscall1_nr_last - .type rustix_syscall1_nr_last, @function -rustix_syscall1_nr_last: - .cfi_startproc - mov w8, w1 - svc #0 - ret - .cfi_endproc - .size rustix_syscall1_nr_last, .-rustix_syscall1_nr_last - - .section .text.rustix_syscall1_noreturn_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall1_noreturn_nr_last - .hidden rustix_syscall1_noreturn_nr_last - .type rustix_syscall1_noreturn_nr_last, @function -rustix_syscall1_noreturn_nr_last: - .cfi_startproc - mov w8, w1 - svc #0 - brk #0x1 - .cfi_endproc - .size rustix_syscall1_noreturn_nr_last, .-rustix_syscall1_noreturn_nr_last - - .section .text.rustix_syscall2_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall2_nr_last - .hidden rustix_syscall2_nr_last - .type rustix_syscall2_nr_last, @function -rustix_syscall2_nr_last: - .cfi_startproc - mov w8, w2 - svc #0 - ret - .cfi_endproc - .size rustix_syscall2_nr_last, .-rustix_syscall2_nr_last - - .section .text.rustix_syscall3_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall3_nr_last - .hidden rustix_syscall3_nr_last - .type rustix_syscall3_nr_last, @function -rustix_syscall3_nr_last: - .cfi_startproc - mov w8, w3 - svc #0 - ret - .cfi_endproc - .size rustix_syscall3_nr_last, .-rustix_syscall3_nr_last - - .section .text.rustix_syscall4_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall4_nr_last - .hidden rustix_syscall4_nr_last - .type rustix_syscall4_nr_last, @function -rustix_syscall4_nr_last: - .cfi_startproc - mov w8, w4 - svc #0 - ret - .cfi_endproc - .size rustix_syscall4_nr_last, .-rustix_syscall4_nr_last - - .section .text.rustix_syscall5_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall5_nr_last - .hidden rustix_syscall5_nr_last - .type rustix_syscall5_nr_last, @function -rustix_syscall5_nr_last: - .cfi_startproc - mov w8, w5 - svc #0 - ret - .cfi_endproc - .size rustix_syscall5_nr_last, .-rustix_syscall5_nr_last - - .section .text.rustix_syscall6_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall6_nr_last - .hidden rustix_syscall6_nr_last - .type rustix_syscall6_nr_last, @function -rustix_syscall6_nr_last: - .cfi_startproc - mov w8, w6 - svc #0 - ret - .cfi_endproc - .size rustix_syscall6_nr_last, .-rustix_syscall6_nr_last - - .section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/arm.s temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/arm.s --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/arm.s 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/arm.s 1970-01-01 00:00:00.000000000 +0000 @@ -1,135 +0,0 @@ -// Assembly code for making arm syscalls. -// -// arm syscall argument register ordering is the similar to the arm -// userspace argument register ordering except that the syscall number -// (nr) is passed in r7. -// -// nr_last.rs takes care of reordering the nr argument to the end for us, -// so we only need to move nr into r7 and take care of r4 and r5 if needed. - - .file "arm.s" - .arch armv5t - - .section .text.rustix_syscall0_nr_last,"ax",%progbits - .p2align 4 - .weak rustix_syscall0_nr_last - .hidden rustix_syscall0_nr_last - .type rustix_syscall0_nr_last, %function -rustix_syscall0_nr_last: - .fnstart - .cantunwind - push {r7, lr} - mov r7, r0 - svc #0 - pop {r7, pc} - .fnend - .size rustix_syscall0_nr_last, .-rustix_syscall0_nr_last - - .section .text.rustix_syscall1_nr_last,"ax",%progbits - .p2align 4 - .weak rustix_syscall1_nr_last - .hidden rustix_syscall1_nr_last - .type rustix_syscall1_nr_last, %function -rustix_syscall1_nr_last: - .fnstart - .cantunwind - push {r7, lr} - mov r7, r1 - svc #0 - pop {r7, pc} - .fnend - .size rustix_syscall1_nr_last, .-rustix_syscall1_nr_last - - .section .text.rustix_syscall1_noreturn_nr_last,"ax",%progbits - .p2align 4 - .weak rustix_syscall1_noreturn_nr_last - .hidden rustix_syscall1_noreturn_nr_last - .type rustix_syscall1_noreturn_nr_last, %function -rustix_syscall1_noreturn_nr_last: - .fnstart - .cantunwind - // Don't save r7 and lr; this is noreturn, so we'll never restore them. - mov r7, r1 - svc #0 - udf #16 // Trap instruction - .fnend - .size rustix_syscall1_noreturn_nr_last, .-rustix_syscall1_noreturn_nr_last - - .section .text.rustix_syscall2_nr_last,"ax",%progbits - .p2align 4 - .weak rustix_syscall2_nr_last - .hidden rustix_syscall2_nr_last - .type rustix_syscall2_nr_last, %function -rustix_syscall2_nr_last: - .fnstart - .cantunwind - push {r7, lr} - mov r7, r2 - svc #0 - pop {r7, pc} - .fnend - .size rustix_syscall2_nr_last, .-rustix_syscall2_nr_last - - .section .text.rustix_syscall3_nr_last,"ax",%progbits - .p2align 4 - .weak rustix_syscall3_nr_last - .hidden rustix_syscall3_nr_last - .type rustix_syscall3_nr_last, %function -rustix_syscall3_nr_last: - .fnstart - .cantunwind - push {r7, lr} - mov r7, r3 - svc #0 - pop {r7, pc} - .fnend - .size rustix_syscall3_nr_last, .-rustix_syscall3_nr_last - - .section .text.rustix_syscall4_nr_last,"ax",%progbits - .p2align 4 - .weak rustix_syscall4_nr_last - .hidden rustix_syscall4_nr_last - .type rustix_syscall4_nr_last, %function -rustix_syscall4_nr_last: - .fnstart - .cantunwind - push {r7, lr} - ldr r7, [sp, #8] - svc #0 - pop {r7, pc} - .fnend - .size rustix_syscall4_nr_last, .-rustix_syscall4_nr_last - - .section .text.rustix_syscall5_nr_last,"ax",%progbits - .p2align 4 - .weak rustix_syscall5_nr_last - .hidden rustix_syscall5_nr_last - .type rustix_syscall5_nr_last, %function -rustix_syscall5_nr_last: - .fnstart - .cantunwind - push {r4, r7, r11, lr} - ldr r7, [sp, #20] - ldr r4, [sp, #16] - svc #0 - pop {r4, r7, r11, pc} - .fnend - .size rustix_syscall5_nr_last, .-rustix_syscall5_nr_last - - .section .text.rustix_syscall6_nr_last,"ax",%progbits - .p2align 4 - .weak rustix_syscall6_nr_last - .hidden rustix_syscall6_nr_last - .type rustix_syscall6_nr_last, %function -rustix_syscall6_nr_last: - .fnstart - .cantunwind - push {r4, r5, r7, lr} - add r7, sp, #16 - ldm r7, {r4, r5, r7} - svc #0 - pop {r4, r5, r7, pc} - .fnend - .size rustix_syscall6_nr_last, .-rustix_syscall6_nr_last - - .section .note.GNU-stack,"",%progbits diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/mips64.s temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/mips64.s --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/mips64.s 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/mips64.s 1970-01-01 00:00:00.000000000 +0000 @@ -1,189 +0,0 @@ -# Assembly code for making mips64 syscalls. -# -# mips64 syscall argument register ordering is the same as the mips64 -# userspace argument register ordering except that the syscall number -# (nr) is passed in v0. -# -# outline.rs takes care of reordering the nr argument to the end for us, -# so we only need to move nr into v0. - - .file "mips64.s" - .section .mdebug.abi64 - .previous - .abicalls - - .section .text.rustix_syscall0_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall0_nr_last - .hidden rustix_syscall0_nr_last - .type rustix_syscall0_nr_last, @function - .set nomips16 - .set nomicromips - .ent rustix_syscall0_nr_last -rustix_syscall0_nr_last: - .frame $sp,0,$31 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - move $2, $4 - syscall - dnegu $12, $2 - jr $31 - movn $2, $12, $7 - .end rustix_syscall0_nr_last - .size rustix_syscall0_nr_last, .-rustix_syscall0_nr_last - - .section .text.rustix_syscall1_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall1_nr_last - .hidden rustix_syscall1_nr_last - .type rustix_syscall1_nr_last, @function - .set nomips16 - .set nomicromips - .ent rustix_syscall1_nr_last -rustix_syscall1_nr_last: - .frame $sp,0,$31 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - move $2, $5 - syscall - dnegu $12, $2 - jr $31 - movn $2, $12, $7 - .end rustix_syscall1_nr_last - .size rustix_syscall1_nr_last, .-rustix_syscall1_nr_last - - .section .text.rustix_syscall1_noreturn_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall1_noreturn_nr_last - .hidden rustix_syscall1_noreturn_nr_last - .type rustix_syscall1_noreturn_nr_last, @function - .set nomips16 - .set nomicromips - .ent rustix_syscall1_noreturn_nr_last -rustix_syscall1_noreturn_nr_last: - .frame $sp,0,$31 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - move $2, $5 - syscall - teq $0, $0 - .end rustix_syscall1_noreturn_nr_last - .size rustix_syscall1_noreturn_nr_last, .-rustix_syscall1_noreturn_nr_last - - .section .text.rustix_syscall2_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall2_nr_last - .hidden rustix_syscall2_nr_last - .type rustix_syscall2_nr_last, @function - .set nomips16 - .set nomicromips - .ent rustix_syscall2_nr_last -rustix_syscall2_nr_last: - .frame $sp,0,$31 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - move $2, $6 - syscall - dnegu $12, $2 - jr $31 - movn $2, $12, $7 - .end rustix_syscall2_nr_last - .size rustix_syscall2_nr_last, .-rustix_syscall2_nr_last - - .section .text.rustix_syscall3_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall3_nr_last - .hidden rustix_syscall3_nr_last - .type rustix_syscall3_nr_last, @function - .set nomips16 - .set nomicromips - .ent rustix_syscall3_nr_last -rustix_syscall3_nr_last: - .frame $sp,0,$31 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - move $2, $7 - syscall - dnegu $12, $2 - jr $31 - movn $2, $12, $7 - .end rustix_syscall3_nr_last - .size rustix_syscall3_nr_last, .-rustix_syscall3_nr_last - - .section .text.rustix_syscall4_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall4_nr_last - .hidden rustix_syscall4_nr_last - .type rustix_syscall4_nr_last, @function - .set nomips16 - .set nomicromips - .ent rustix_syscall4_nr_last -rustix_syscall4_nr_last: - .frame $sp,0,$31 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - move $2, $8 - syscall - dnegu $12, $2 - jr $31 - movn $2, $12, $7 - .end rustix_syscall4_nr_last - .size rustix_syscall4_nr_last, .-rustix_syscall4_nr_last - - .section .text.rustix_syscall5_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall5_nr_last - .hidden rustix_syscall5_nr_last - .type rustix_syscall5_nr_last, @function - .set nomips16 - .set nomicromips - .ent rustix_syscall5_nr_last -rustix_syscall5_nr_last: - .frame $sp,0,$31 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - move $2, $9 - syscall - dnegu $12, $2 - jr $31 - movn $2, $12, $7 - .end rustix_syscall5_nr_last - .size rustix_syscall5_nr_last, .-rustix_syscall5_nr_last - - .section .text.rustix_syscall6_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall6_nr_last - .hidden rustix_syscall6_nr_last - .type rustix_syscall6_nr_last, @function - .set nomips16 - .set nomicromips - .ent rustix_syscall6_nr_last -rustix_syscall6_nr_last: - .frame $sp,0,$31 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - move $2, $10 - syscall - dnegu $12, $2 - jr $31 - movn $2, $12, $7 - .end rustix_syscall6_nr_last - .size rustix_syscall6_nr_last, .-rustix_syscall6_nr_last - - .section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/mips.s temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/mips.s --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/mips.s 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/mips.s 1970-01-01 00:00:00.000000000 +0000 @@ -1,211 +0,0 @@ -# Assembly code for making mips64 syscalls. -# -# mips64 syscall argument register ordering is the same as the mips64 -# userspace argument register ordering except that the syscall number -# (nr) is passed in v0. -# -# outline.rs takes care of reordering the nr argument to the end for us, -# so we only need to move nr into v0. - - .file "mips.s" - .section .mdebug.abi32 - .previous - .abicalls - - .section .text.rustix_syscall0_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall0_nr_last - .hidden rustix_syscall0_nr_last - .type rustix_syscall0_nr_last, @function - .set nomips16 - .set nomicromips - .ent rustix_syscall0_nr_last -rustix_syscall0_nr_last: - .frame $sp,0,$31 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - move $2, $4 - syscall - negu $8, $2 - jr $31 - movn $2, $8, $7 - .end rustix_syscall0_nr_last - .size rustix_syscall0_nr_last, .-rustix_syscall0_nr_last - - .section .text.rustix_syscall1_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall1_nr_last - .hidden rustix_syscall1_nr_last - .type rustix_syscall1_nr_last, @function - .set nomips16 - .set nomicromips - .ent rustix_syscall1_nr_last -rustix_syscall1_nr_last: - .frame $sp,0,$31 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - move $2, $5 - syscall - negu $8, $2 - jr $31 - movn $2, $8, $7 - .end rustix_syscall1_nr_last - .size rustix_syscall1_nr_last, .-rustix_syscall1_nr_last - - .section .text.rustix_syscall1_noreturn_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall1_noreturn_nr_last - .hidden rustix_syscall1_noreturn_nr_last - .type rustix_syscall1_noreturn_nr_last, @function - .set nomips16 - .set nomicromips - .ent rustix_syscall1_noreturn_nr_last -rustix_syscall1_noreturn_nr_last: - .frame $sp,0,$31 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - move $2, $5 - syscall - teq $zero, $zero - .end rustix_syscall1_noreturn_nr_last - .size rustix_syscall1_noreturn_nr_last, .-rustix_syscall1_noreturn_nr_last - - .section .text.rustix_syscall2_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall2_nr_last - .hidden rustix_syscall2_nr_last - .type rustix_syscall2_nr_last, @function - .set nomips16 - .set nomicromips - .ent rustix_syscall2_nr_last -rustix_syscall2_nr_last: - .frame $sp,0,$31 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - move $2, $6 - syscall - negu $8, $2 - jr $31 - movn $2, $8, $7 - .end rustix_syscall2_nr_last - .size rustix_syscall2_nr_last, .-rustix_syscall2_nr_last - - .section .text.rustix_syscall3_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall3_nr_last - .hidden rustix_syscall3_nr_last - .type rustix_syscall3_nr_last, @function - .set nomips16 - .set nomicromips - .ent rustix_syscall3_nr_last -rustix_syscall3_nr_last: - .frame $sp,0,$31 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - move $2, $7 - syscall - negu $8, $2 - jr $31 - movn $2, $8, $7 - .end rustix_syscall3_nr_last - .size rustix_syscall3_nr_last, .-rustix_syscall3_nr_last - - .section .text.rustix_syscall4_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall4_nr_last - .hidden rustix_syscall4_nr_last - .type rustix_syscall4_nr_last, @function - .set nomips16 - .set nomicromips - .ent rustix_syscall4_nr_last -rustix_syscall4_nr_last: - .frame $sp,0,$31 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - lw $2, 16($sp) - syscall - negu $8, $2 - jr $31 - movn $2, $8, $7 - .end rustix_syscall4_nr_last - .size rustix_syscall4_nr_last, .-rustix_syscall4_nr_last - - .section .text.rustix_syscall5_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall5_nr_last - .hidden rustix_syscall5_nr_last - .type rustix_syscall5_nr_last, @function - .set nomips16 - .set nomicromips - .ent rustix_syscall5_nr_last -rustix_syscall5_nr_last: - .frame $sp,0,$31 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - lw $2, 20($sp) - syscall - negu $8, $2 - jr $31 - movn $2, $8, $7 - .end rustix_syscall5_nr_last - .size rustix_syscall5_nr_last, .-rustix_syscall5_nr_last - - .section .text.rustix_syscall6_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall6_nr_last - .hidden rustix_syscall6_nr_last - .type rustix_syscall6_nr_last, @function - .set nomips16 - .set nomicromips - .ent rustix_syscall6_nr_last -rustix_syscall6_nr_last: - .frame $sp,0,$31 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - lw $2, 24($sp) - syscall - negu $8, $2 - jr $31 - movn $2, $8, $7 - .end rustix_syscall6_nr_last - .size rustix_syscall6_nr_last, .-rustix_syscall6_nr_last - - .section .text.rustix_syscall7_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall7_nr_last - .hidden rustix_syscall7_nr_last - .type rustix_syscall7_nr_last, @function - .set nomips16 - .set nomicromips - .ent rustix_syscall7_nr_last -rustix_syscall7_nr_last: - .frame $sp,0,$31 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - lw $2, 28($sp) - syscall - negu $8, $2 - jr $31 - movn $2, $8, $7 - .end rustix_syscall7_nr_last - .size rustix_syscall7_nr_last, .-rustix_syscall7_nr_last - - .section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -//! Declare functions defined in out-of-line ("outline") asm files. -//! -//! Kernel calling conventions differ from userspace calling conventions, so we -//! also define inline function wrappers which reorder the arguments so that -//! they match with the kernel convention as closely as possible, to minimize -//! the amount of out-of-line code we need. -//! -//! This is needed in order to support our MSRV of 1.48, which doesn't support -//! inline asm. When using newer Rust versions, inline asm code is used instead -//! and these outline libraries are unused. - -#[cfg(target_arch = "x86")] -mod x86; -// For these architectures, pass the `nr` argument last. -#[cfg(any( - target_arch = "arm", - target_arch = "aarch64", - target_arch = "mips", - target_arch = "mips64", - target_arch = "powerpc64", - target_arch = "riscv64", - target_arch = "x86_64", -))] -mod nr_last; - -#[cfg(any( - target_arch = "arm", - target_arch = "aarch64", - target_arch = "mips", - target_arch = "mips64", - target_arch = "powerpc64", - target_arch = "riscv64", - target_arch = "x86_64", -))] -pub(in crate::backend) use nr_last::*; -#[cfg(target_arch = "x86")] -pub(in crate::backend) use x86::*; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/nr_last.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/nr_last.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/nr_last.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/nr_last.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,166 +0,0 @@ -//! Syscall wrappers for platforms which pass the syscall number specially. -//! -//! Rustix aims to minimize the amount of assembly code it needs. To that end, -//! this code reorders syscall arguments as close as feasible to the actual -//! syscall convention before calling the assembly functions. -//! -//! Many architectures use a convention where the syscall number is passed in a -//! special register, with the regular syscall arguments passed in either the -//! same or similar registers as the platform C convention. This code -//! approximates that order by passing the regular syscall arguments first, and -//! the syscall number last. That way, the outline assembly code typically just -//! needs to move the syscall number to its special register, and leave the -//! other arguments mostly as they are. - -#[cfg(target_arch = "mips")] -use crate::backend::reg::A6; -use crate::backend::reg::{ArgReg, RetReg, SyscallNumber, A0, A1, A2, A3, A4, A5, R0}; - -// First we declare the actual assembly routines with `*_nr_last` names and -// reordered arguments. If the signatures or calling conventions are ever -// changed, the symbol names should also be updated accordingly, to avoid -// collisions with other versions of this crate. -// -// We don't define `_readonly` versions of these because we have no way to tell -// Rust that calls to our outline assembly are readonly. -extern "C" { - fn rustix_syscall0_nr_last(nr: SyscallNumber<'_>) -> RetReg; - fn rustix_syscall1_nr_last(a0: ArgReg<'_, A0>, nr: SyscallNumber<'_>) -> RetReg; - fn rustix_syscall1_noreturn_nr_last(a0: ArgReg<'_, A0>, nr: SyscallNumber<'_>) -> !; - fn rustix_syscall2_nr_last( - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - nr: SyscallNumber<'_>, - ) -> RetReg; - fn rustix_syscall3_nr_last( - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - nr: SyscallNumber<'_>, - ) -> RetReg; - fn rustix_syscall4_nr_last( - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - nr: SyscallNumber<'_>, - ) -> RetReg; - fn rustix_syscall5_nr_last( - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - nr: SyscallNumber<'_>, - ) -> RetReg; - fn rustix_syscall6_nr_last( - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, - nr: SyscallNumber<'_>, - ) -> RetReg; - #[cfg(target_arch = "mips")] - fn rustix_syscall7_nr_last( - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, - a6: ArgReg<'_, A6>, - nr: SyscallNumber<'_>, - ) -> RetReg; -} - -// Then we define inline wrapper functions that do the reordering. - -#[inline] -pub(in crate::backend) unsafe fn syscall0(nr: SyscallNumber<'_>) -> RetReg { - rustix_syscall0_nr_last(nr) -} -#[inline] -pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { - rustix_syscall1_nr_last(a0, nr) -} -#[inline] -pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { - rustix_syscall1_noreturn_nr_last(a0, nr) -} -#[inline] -pub(in crate::backend) unsafe fn syscall2( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - rustix_syscall2_nr_last(a0, a1, nr) -} -#[inline] -pub(in crate::backend) unsafe fn syscall3( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - rustix_syscall3_nr_last(a0, a1, a2, nr) -} -#[inline] -pub(in crate::backend) unsafe fn syscall4( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - rustix_syscall4_nr_last(a0, a1, a2, a3, nr) -} -#[inline] -pub(in crate::backend) unsafe fn syscall5( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - rustix_syscall5_nr_last(a0, a1, a2, a3, a4, nr) -} -#[inline] -pub(in crate::backend) unsafe fn syscall6( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - rustix_syscall6_nr_last(a0, a1, a2, a3, a4, a5, nr) -} -#[cfg(target_arch = "mips")] -#[inline] -pub(in crate::backend) unsafe fn syscall7( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, - a6: ArgReg<'_, A6>, -) -> RetReg { - rustix_syscall7_nr_last(a0, a1, a2, a3, a4, a5, a6, nr) -} - -// Then we define the `_readonly` versions of the wrappers. We don't have -// separate `_readonly` implementations, so these can just be aliases to -// their non-`_readonly` counterparts. -#[cfg(target_arch = "mips")] -pub(in crate::backend) use syscall7 as syscall7_readonly; -pub(in crate::backend) use { - syscall0 as syscall0_readonly, syscall1 as syscall1_readonly, syscall2 as syscall2_readonly, - syscall3 as syscall3_readonly, syscall4 as syscall4_readonly, syscall5 as syscall5_readonly, - syscall6 as syscall6_readonly, -}; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/powerpc64.s temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/powerpc64.s --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/powerpc64.s 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/powerpc64.s 1970-01-01 00:00:00.000000000 +0000 @@ -1,132 +0,0 @@ -# Assembly code for making powerpc64le syscalls. -# -# powerpc64le syscall argument register ordering is the same as the -# powerpc64le userspace argument register ordering except that the syscall -# number (nr) is passed in r0. -# -# outline.rs takes care of reordering the nr argument to the end for us, -# so we only need to move nr into r0. - - .file "powerpc64le.s" - .machine power8 - .abiversion 2 - - .section .text.rustix_syscall0_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall0_nr_last - .hidden rustix_syscall0_nr_last - .type rustix_syscall0_nr_last, @function -rustix_syscall0_nr_last: - .cfi_startproc - mr 0, 3 - sc - bnslr - neg 3, 3 - blr - .cfi_endproc - .size rustix_syscall0_nr_last, .-rustix_syscall0_nr_last - - .section .text.rustix_syscall1_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall1_nr_last - .hidden rustix_syscall1_nr_last - .type rustix_syscall1_nr_last, @function -rustix_syscall1_nr_last: - .cfi_startproc - mr 0, 4 - sc - bnslr - neg 3, 3 - blr - .cfi_endproc - .size rustix_syscall1_nr_last, .-rustix_syscall1_nr_last - - .section .text.rustix_syscall1_noreturn_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall1_noreturn_nr_last - .hidden rustix_syscall1_noreturn_nr_last - .type rustix_syscall1_noreturn_nr_last, @function -rustix_syscall1_noreturn_nr_last: - .cfi_startproc - mr 0, 4 - sc - trap - .cfi_endproc - .size rustix_syscall1_noreturn_nr_last, .-rustix_syscall1_noreturn_nr_last - - .section .text.rustix_syscall2_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall2_nr_last - .hidden rustix_syscall2_nr_last - .type rustix_syscall2_nr_last, @function -rustix_syscall2_nr_last: - .cfi_startproc - mr 0, 5 - sc - bnslr - neg 3, 3 - blr - .cfi_endproc - .size rustix_syscall2_nr_last, .-rustix_syscall2_nr_last - - .section .text.rustix_syscall3_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall3_nr_last - .hidden rustix_syscall3_nr_last - .type rustix_syscall3_nr_last, @function -rustix_syscall3_nr_last: - .cfi_startproc - mr 0, 6 - sc - bnslr - neg 3, 3 - blr - .cfi_endproc - .size rustix_syscall3_nr_last, .-rustix_syscall3_nr_last - - .section .text.rustix_syscall4_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall4_nr_last - .hidden rustix_syscall4_nr_last - .type rustix_syscall4_nr_last, @function -rustix_syscall4_nr_last: - .cfi_startproc - mr 0, 7 - sc - bnslr - neg 3, 3 - blr - .cfi_endproc - .size rustix_syscall4_nr_last, .-rustix_syscall4_nr_last - - .section .text.rustix_syscall5_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall5_nr_last - .hidden rustix_syscall5_nr_last - .type rustix_syscall5_nr_last, @function -rustix_syscall5_nr_last: - .cfi_startproc - mr 0, 8 - sc - bnslr - neg 3, 3 - blr - .cfi_endproc - .size rustix_syscall5_nr_last, .-rustix_syscall5_nr_last - - .section .text.rustix_syscall6_nr_last,"ax",@progbits - .p2align 2 - .weak rustix_syscall6_nr_last - .hidden rustix_syscall6_nr_last - .type rustix_syscall6_nr_last, @function -rustix_syscall6_nr_last: - .cfi_startproc - mr 0, 9 - sc - bnslr - neg 3, 3 - blr - .cfi_endproc - .size rustix_syscall6_nr_last, .-rustix_syscall6_nr_last - - .section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/riscv64.s temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/riscv64.s --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/riscv64.s 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/riscv64.s 1970-01-01 00:00:00.000000000 +0000 @@ -1,116 +0,0 @@ -# Assembly code for making riscv64 syscalls. -# -# riscv64 syscall argument register ordering is the same as the riscv64 -# userspace argument register ordering except that the syscall number -# (nr) is passed in a7. -# -# nr_last.rs takes care of reordering the nr argument to the end for us, -# so we only need to move nr into a7. - - .file "riscv64.s" - - .section .text.rustix_syscall0_nr_last,"ax",@progbits - .p2align 4 - .weak rustix_syscall0_nr_last - .hidden rustix_syscall0_nr_last - .type rustix_syscall0_nr_last, @function -rustix_syscall0_nr_last: - .cfi_startproc - mv a7, a0 - ecall - ret - .cfi_endproc - .size rustix_syscall0_nr_last, .-rustix_syscall0_nr_last - - .section .text.rustix_syscall1_nr_last,"ax",@progbits - .p2align 4 - .weak rustix_syscall1_nr_last - .hidden rustix_syscall1_nr_last - .type rustix_syscall1_nr_last, @function -rustix_syscall1_nr_last: - .cfi_startproc - mv a7, a1 - ecall - ret - .cfi_endproc - .size rustix_syscall1_nr_last, .-rustix_syscall1_nr_last - - .section .text.rustix_syscall1_noreturn_nr_last,"ax",@progbits - .p2align 4 - .weak rustix_syscall1_noreturn_nr_last - .hidden rustix_syscall1_noreturn_nr_last - .type rustix_syscall1_noreturn_nr_last, @function -rustix_syscall1_noreturn_nr_last: - .cfi_startproc - mv a7, a1 - ecall - unimp - .cfi_endproc - .size rustix_syscall1_noreturn_nr_last, .-rustix_syscall1_noreturn_nr_last - - .section .text.rustix_syscall2_nr_last,"ax",@progbits - .p2align 4 - .weak rustix_syscall2_nr_last - .hidden rustix_syscall2_nr_last - .type rustix_syscall2_nr_last, @function -rustix_syscall2_nr_last: - .cfi_startproc - mv a7, a2 - ecall - ret - .cfi_endproc - .size rustix_syscall2_nr_last, .-rustix_syscall2_nr_last - - .section .text.rustix_syscall3_nr_last,"ax",@progbits - .p2align 4 - .weak rustix_syscall3_nr_last - .hidden rustix_syscall3_nr_last - .type rustix_syscall3_nr_last, @function -rustix_syscall3_nr_last: - .cfi_startproc - mv a7, a3 - ecall - ret - .cfi_endproc - .size rustix_syscall3_nr_last, .-rustix_syscall3_nr_last - - .section .text.rustix_syscall4_nr_last,"ax",@progbits - .p2align 4 - .weak rustix_syscall4_nr_last - .hidden rustix_syscall4_nr_last - .type rustix_syscall4_nr_last, @function -rustix_syscall4_nr_last: - .cfi_startproc - mv a7, a4 - ecall - ret - .cfi_endproc - .size rustix_syscall4_nr_last, .-rustix_syscall4_nr_last - - .section .text.rustix_syscall5_nr_last,"ax",@progbits - .p2align 4 - .weak rustix_syscall5_nr_last - .hidden rustix_syscall5_nr_last - .type rustix_syscall5_nr_last, @function -rustix_syscall5_nr_last: - .cfi_startproc - mv a7, a5 - ecall - ret - .cfi_endproc - .size rustix_syscall5_nr_last, .-rustix_syscall5_nr_last - - .section .text.rustix_syscall6_nr_last,"ax",@progbits - .p2align 4 - .weak rustix_syscall6_nr_last - .hidden rustix_syscall6_nr_last - .type rustix_syscall6_nr_last, @function -rustix_syscall6_nr_last: - .cfi_startproc - mv a7, a6 - ecall - ret - .cfi_endproc - .size rustix_syscall6_nr_last, .-rustix_syscall6_nr_last - - .section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/x86_64.s temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/x86_64.s --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/x86_64.s 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/x86_64.s 1970-01-01 00:00:00.000000000 +0000 @@ -1,122 +0,0 @@ -// Assembly code for making x86-64 syscalls. -// -// x86-64 syscall argument register ordering is the same as the x86-64 -// userspace argument register ordering except that a3 is passed in r10 -// instead of rcx, and the syscall number (nr) is passed in eax. -// -// outline.rs takes care of reordering the nr argument to the end for us, -// so we only need to move nr into eax and move rcx into r10 as needed. -// -// x32 is not yet supported. - - .file "x86_64.s" - .intel_syntax noprefix - - .section .text.rustix_syscall0_nr_last,"ax",@progbits - .p2align 4 - .weak rustix_syscall0_nr_last - .hidden rustix_syscall0_nr_last - .type rustix_syscall0_nr_last, @function -rustix_syscall0_nr_last: - .cfi_startproc - mov eax,edi - syscall - ret - .cfi_endproc - .size rustix_syscall0_nr_last, .-rustix_syscall0_nr_last - - .section .text.rustix_syscall1_nr_last,"ax",@progbits - .p2align 4 - .weak rustix_syscall1_nr_last - .hidden rustix_syscall1_nr_last - .type rustix_syscall1_nr_last, @function -rustix_syscall1_nr_last: - .cfi_startproc - mov eax,esi - syscall - ret - .cfi_endproc - .size rustix_syscall1_nr_last, .-rustix_syscall1_nr_last - - .section .text.rustix_syscall1_noreturn_nr_last,"ax",@progbits - .p2align 4 - .weak rustix_syscall1_noreturn_nr_last - .hidden rustix_syscall1_noreturn_nr_last - .type rustix_syscall1_noreturn_nr_last, @function -rustix_syscall1_noreturn_nr_last: - .cfi_startproc - mov eax,esi - syscall - ud2 - .cfi_endproc - .size rustix_syscall1_noreturn_nr_last, .-rustix_syscall1_noreturn_nr_last - - .section .text.rustix_syscall2_nr_last,"ax",@progbits - .p2align 4 - .weak rustix_syscall2_nr_last - .hidden rustix_syscall2_nr_last - .type rustix_syscall2_nr_last, @function -rustix_syscall2_nr_last: - .cfi_startproc - mov eax,edx - syscall - ret - .cfi_endproc - .size rustix_syscall2_nr_last, .-rustix_syscall2_nr_last - - .section .text.rustix_syscall3_nr_last,"ax",@progbits - .p2align 4 - .weak rustix_syscall3_nr_last - .hidden rustix_syscall3_nr_last - .type rustix_syscall3_nr_last, @function -rustix_syscall3_nr_last: - .cfi_startproc - mov eax,ecx - syscall - ret - .cfi_endproc - .size rustix_syscall3_nr_last, .-rustix_syscall3_nr_last - - .section .text.rustix_syscall4_nr_last,"ax",@progbits - .p2align 4 - .weak rustix_syscall4_nr_last - .hidden rustix_syscall4_nr_last - .type rustix_syscall4_nr_last, @function -rustix_syscall4_nr_last: - .cfi_startproc - mov eax,r8d - mov r10,rcx - syscall - ret - .cfi_endproc - .size rustix_syscall4_nr_last, .-rustix_syscall4_nr_last - - .section .text.rustix_syscall5_nr_last,"ax",@progbits - .p2align 4 - .weak rustix_syscall5_nr_last - .hidden rustix_syscall5_nr_last - .type rustix_syscall5_nr_last, @function -rustix_syscall5_nr_last: - .cfi_startproc - mov eax,r9d - mov r10,rcx - syscall - ret - .cfi_endproc - .size rustix_syscall5_nr_last, .-rustix_syscall5_nr_last - - .section .text.rustix_syscall6_nr_last,"ax",@progbits - .p2align 4 - .weak rustix_syscall6_nr_last - .hidden rustix_syscall6_nr_last - .type rustix_syscall6_nr_last, @function -rustix_syscall6_nr_last: - .cfi_startproc - mov eax,DWORD PTR [rsp+0x8] - mov r10,rcx - syscall - ret - .cfi_endproc - .size rustix_syscall6_nr_last, .-rustix_syscall6_nr_last - - .section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/x86.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/x86.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/x86.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/x86.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,285 +0,0 @@ -//! Syscall wrappers for 32-bit x86. -//! -//! This module is similar to the `nr_last` module, except specialized for -//! 32-bit x86. -//! -//! The syscall convention passes all arguments in registers. The closest we -//! can easily get to that from Rust is to use the fastcall convention which -//! passes the first two arguments in `ecx` and `edx`, which are the second -//! and third Linux syscall arguments. To line them up, this function passes -//! the second and third syscall argument as the first and second argument to -//! the outline assembly, followed by the first syscall argument, and then the -//! rest of the syscall arguments. The assembly code still has to do some work, -//! but at least we can get up to two arguments into the right place for it. - -#![allow(dead_code, unused_imports)] - -use crate::backend::reg::{ArgReg, RetReg, SyscallNumber, A0, A1, A2, A3, A4, A5, R0}; -use crate::backend::vdso_wrappers::SyscallType; - -// First we declare the actual assembly routines with `*_nr_last_fastcall` -// names and reordered arguments. If the signatures or calling conventions are -// ever changed, the symbol names should also be updated accordingly, to avoid -// collisions with other versions of this crate. -// -// We don't define `_readonly` versions of these because we have no way to tell -// Rust that calls to our outline assembly are readonly. -extern "fastcall" { - fn rustix_syscall0_nr_last_fastcall(nr: SyscallNumber<'_>) -> RetReg; - fn rustix_syscall1_nr_last_fastcall(a0: ArgReg<'_, A0>, nr: SyscallNumber<'_>) -> RetReg; - fn rustix_syscall1_noreturn_nr_last_fastcall(a0: ArgReg<'_, A0>, nr: SyscallNumber<'_>) -> !; - fn rustix_syscall2_nr_last_fastcall( - a1: ArgReg<'_, A1>, - a0: ArgReg<'_, A0>, - nr: SyscallNumber<'_>, - ) -> RetReg; - fn rustix_syscall3_nr_last_fastcall( - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a0: ArgReg<'_, A0>, - nr: SyscallNumber<'_>, - ) -> RetReg; - fn rustix_syscall4_nr_last_fastcall( - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a0: ArgReg<'_, A0>, - a3: ArgReg<'_, A3>, - nr: SyscallNumber<'_>, - ) -> RetReg; - fn rustix_syscall5_nr_last_fastcall( - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a0: ArgReg<'_, A0>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - nr: SyscallNumber<'_>, - ) -> RetReg; - fn rustix_syscall6_nr_last_fastcall( - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a0: ArgReg<'_, A0>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, - nr: SyscallNumber<'_>, - ) -> RetReg; -} - -// Then we define inline wrapper functions that do the reordering. - -#[inline] -pub(in crate::backend) unsafe fn syscall0(nr: SyscallNumber<'_>) -> RetReg { - rustix_syscall0_nr_last_fastcall(nr) -} -#[inline] -pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg { - rustix_syscall1_nr_last_fastcall(a0, nr) -} -#[inline] -pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! { - rustix_syscall1_noreturn_nr_last_fastcall(a0, nr) -} -#[inline] -pub(in crate::backend) unsafe fn syscall2( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - rustix_syscall2_nr_last_fastcall(a1, a0, nr) -} -#[inline] -pub(in crate::backend) unsafe fn syscall3( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - rustix_syscall3_nr_last_fastcall(a1, a2, a0, nr) -} -#[inline] -pub(in crate::backend) unsafe fn syscall4( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - rustix_syscall4_nr_last_fastcall(a1, a2, a0, a3, nr) -} -#[inline] -pub(in crate::backend) unsafe fn syscall5( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - rustix_syscall5_nr_last_fastcall(a1, a2, a0, a3, a4, nr) -} -#[inline] -pub(in crate::backend) unsafe fn syscall6( - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - rustix_syscall6_nr_last_fastcall(a1, a2, a0, a3, a4, a5, nr) -} - -// Then we define the `_readonly` versions of the wrappers. We don't have -// separate `_readonly` implementations, so these can just be aliases to -// their non-`_readonly` counterparts. -pub(in crate::backend) use { - syscall0 as syscall0_readonly, syscall1 as syscall1_readonly, syscall2 as syscall2_readonly, - syscall3 as syscall3_readonly, syscall4 as syscall4_readonly, syscall5 as syscall5_readonly, - syscall6 as syscall6_readonly, -}; - -// x86 prefers to route all syscalls through the vDSO, though this isn't -// always possible, so it also has a special form for doing the dispatch. -// -// First we declare the actual assembly routines with `*_nr_last_fastcall` -// names and reordered arguments. If the signatures or calling conventions are -// ever changed, the symbol names should also be updated accordingly, to avoid -// collisions with other versions of this crate. -extern "fastcall" { - fn rustix_indirect_syscall0_nr_last_fastcall( - nr: SyscallNumber<'_>, - callee: SyscallType, - ) -> RetReg; - fn rustix_indirect_syscall1_nr_last_fastcall( - a0: ArgReg<'_, A0>, - nr: SyscallNumber<'_>, - callee: SyscallType, - ) -> RetReg; - fn rustix_indirect_syscall1_noreturn_nr_last_fastcall( - a0: ArgReg<'_, A0>, - nr: SyscallNumber<'_>, - callee: SyscallType, - ) -> !; - fn rustix_indirect_syscall2_nr_last_fastcall( - a1: ArgReg<'_, A1>, - a0: ArgReg<'_, A0>, - nr: SyscallNumber<'_>, - callee: SyscallType, - ) -> RetReg; - fn rustix_indirect_syscall3_nr_last_fastcall( - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a0: ArgReg<'_, A0>, - nr: SyscallNumber<'_>, - callee: SyscallType, - ) -> RetReg; - fn rustix_indirect_syscall4_nr_last_fastcall( - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a0: ArgReg<'_, A0>, - a3: ArgReg<'_, A3>, - nr: SyscallNumber<'_>, - callee: SyscallType, - ) -> RetReg; - fn rustix_indirect_syscall5_nr_last_fastcall( - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a0: ArgReg<'_, A0>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - nr: SyscallNumber<'_>, - callee: SyscallType, - ) -> RetReg; - fn rustix_indirect_syscall6_nr_last_fastcall( - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a0: ArgReg<'_, A0>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, - nr: SyscallNumber<'_>, - callee: SyscallType, - ) -> RetReg; -} - -// Then we define inline wrapper functions that do the reordering. - -#[inline] -pub(in crate::backend) unsafe fn indirect_syscall0( - callee: SyscallType, - nr: SyscallNumber<'_>, -) -> RetReg { - rustix_indirect_syscall0_nr_last_fastcall(nr, callee) -} -#[inline] -pub(in crate::backend) unsafe fn indirect_syscall1( - callee: SyscallType, - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, -) -> RetReg { - rustix_indirect_syscall1_nr_last_fastcall(a0, nr, callee) -} -#[inline] -pub(in crate::backend) unsafe fn indirect_syscall1_noreturn( - callee: SyscallType, - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, -) -> ! { - rustix_indirect_syscall1_noreturn_nr_last_fastcall(a0, nr, callee) -} -#[inline] -pub(in crate::backend) unsafe fn indirect_syscall2( - callee: SyscallType, - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, -) -> RetReg { - rustix_indirect_syscall2_nr_last_fastcall(a1, a0, nr, callee) -} -#[inline] -pub(in crate::backend) unsafe fn indirect_syscall3( - callee: SyscallType, - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, -) -> RetReg { - rustix_indirect_syscall3_nr_last_fastcall(a1, a2, a0, nr, callee) -} -#[inline] -pub(in crate::backend) unsafe fn indirect_syscall4( - callee: SyscallType, - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, -) -> RetReg { - rustix_indirect_syscall4_nr_last_fastcall(a1, a2, a0, a3, nr, callee) -} -#[inline] -pub(in crate::backend) unsafe fn indirect_syscall5( - callee: SyscallType, - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, -) -> RetReg { - rustix_indirect_syscall5_nr_last_fastcall(a1, a2, a0, a3, a4, nr, callee) -} -#[inline] -pub(in crate::backend) unsafe fn indirect_syscall6( - callee: SyscallType, - nr: SyscallNumber<'_>, - a0: ArgReg<'_, A0>, - a1: ArgReg<'_, A1>, - a2: ArgReg<'_, A2>, - a3: ArgReg<'_, A3>, - a4: ArgReg<'_, A4>, - a5: ArgReg<'_, A5>, -) -> RetReg { - rustix_indirect_syscall6_nr_last_fastcall(a1, a2, a0, a3, a4, a5, nr, callee) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/x86.s temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/x86.s --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/x86.s 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/arch/outline/x86.s 1970-01-01 00:00:00.000000000 +0000 @@ -1,381 +0,0 @@ -// Assembly code for making x86 syscalls. -// -// On x86 we use the "fastcall" convention which passes the first two -// arguments in ecx and edx. Outline.rs reorders the arguments to put -// a1 and a2 in those registers so they we don't have to move them to -// set up the kernel convention. -// -// "fastcall" expects callee to pop argument stack space, so we use -// `ret imm` instructions to clean up the stack. We don't need callee -// cleanup per se, it just comes along with using "fastcall". - - .file "x86.s" - .intel_syntax noprefix - - .section .text.rustix_indirect_syscall0_nr_last_fastcall,"ax",@progbits - .p2align 4 - .weak rustix_indirect_syscall0_nr_last_fastcall - .hidden rustix_indirect_syscall0_nr_last_fastcall - .type rustix_indirect_syscall0_nr_last_fastcall, @function -rustix_indirect_syscall0_nr_last_fastcall: - .cfi_startproc - mov eax,ecx - call edx - ret - .cfi_endproc - .size rustix_indirect_syscall0_nr_last_fastcall, .-rustix_indirect_syscall0_nr_last_fastcall - - .section .text.rustix_indirect_syscall1_nr_last_fastcall,"ax",@progbits - .p2align 4 - .weak rustix_indirect_syscall1_nr_last_fastcall - .hidden rustix_indirect_syscall1_nr_last_fastcall - .type rustix_indirect_syscall1_nr_last_fastcall, @function -rustix_indirect_syscall1_nr_last_fastcall: - .cfi_startproc - push ebx - .cfi_def_cfa_offset 8 - .cfi_offset ebx, -8 - mov ebx,ecx - mov eax,edx - call DWORD PTR [esp+0x8] - pop ebx - .cfi_def_cfa_offset 4 - ret 0x4 - .cfi_endproc - .size rustix_indirect_syscall1_nr_last_fastcall, .-rustix_indirect_syscall1_nr_last_fastcall - - .section .text.rustix_indirect_syscall1_noreturn_nr_last_fastcall,"ax",@progbits - .p2align 4 - .weak rustix_indirect_syscall1_noreturn_nr_last_fastcall - .hidden rustix_indirect_syscall1_noreturn_nr_last_fastcall - .type rustix_indirect_syscall1_noreturn_nr_last_fastcall, @function -rustix_indirect_syscall1_noreturn_nr_last_fastcall: - .cfi_startproc - mov ebx,ecx - mov eax,edx - call DWORD PTR [esp+0x4] - ud2 - .cfi_endproc - .size rustix_indirect_syscall1_noreturn_nr_last_fastcall, .-rustix_indirect_syscall1_noreturn_nr_last_fastcall - - .section .text.rustix_indirect_syscall2_nr_last_fastcall,"ax",@progbits - .p2align 4 - .weak rustix_indirect_syscall2_nr_last_fastcall - .hidden rustix_indirect_syscall2_nr_last_fastcall - .type rustix_indirect_syscall2_nr_last_fastcall, @function -rustix_indirect_syscall2_nr_last_fastcall: - .cfi_startproc - push ebx - .cfi_def_cfa_offset 8 - .cfi_offset ebx, -8 - mov ebx,edx - mov eax,DWORD PTR [esp+0x8] - call DWORD PTR [esp+0xc] - pop ebx - .cfi_def_cfa_offset 4 - ret 0x8 - .cfi_endproc - .size rustix_indirect_syscall2_nr_last_fastcall, .-rustix_indirect_syscall2_nr_last_fastcall - - .section .text.rustix_indirect_syscall3_nr_last_fastcall,"ax",@progbits - .p2align 4 - .weak rustix_indirect_syscall3_nr_last_fastcall - .hidden rustix_indirect_syscall3_nr_last_fastcall - .type rustix_indirect_syscall3_nr_last_fastcall, @function -rustix_indirect_syscall3_nr_last_fastcall: - .cfi_startproc - push ebx - .cfi_def_cfa_offset 8 - .cfi_offset ebx, -8 - mov ebx,DWORD PTR [esp+0x8] - mov eax,DWORD PTR [esp+0xc] - call DWORD PTR [esp+0x10] - pop ebx - .cfi_def_cfa_offset 4 - ret 0xc - .cfi_endproc - .size rustix_indirect_syscall3_nr_last_fastcall, .-rustix_indirect_syscall3_nr_last_fastcall - - .section .text.rustix_indirect_syscall4_nr_last_fastcall,"ax",@progbits - .p2align 4 - .weak rustix_indirect_syscall4_nr_last_fastcall - .hidden rustix_indirect_syscall4_nr_last_fastcall - .type rustix_indirect_syscall4_nr_last_fastcall, @function -rustix_indirect_syscall4_nr_last_fastcall: - .cfi_startproc - push ebx - .cfi_def_cfa_offset 8 - push esi - .cfi_def_cfa_offset 12 - .cfi_offset esi, -12 - .cfi_offset ebx, -8 - mov ebx,DWORD PTR [esp+0xc] - mov esi,DWORD PTR [esp+0x10] - mov eax,DWORD PTR [esp+0x14] - call DWORD PTR [esp+0x18] - pop esi - .cfi_def_cfa_offset 8 - pop ebx - .cfi_def_cfa_offset 4 - ret 0x10 - .cfi_endproc - .size rustix_indirect_syscall4_nr_last_fastcall, .-rustix_indirect_syscall4_nr_last_fastcall - - .section .text.rustix_indirect_syscall5_nr_last_fastcall,"ax",@progbits - .p2align 4 - .weak rustix_indirect_syscall5_nr_last_fastcall - .hidden rustix_indirect_syscall5_nr_last_fastcall - .type rustix_indirect_syscall5_nr_last_fastcall, @function -rustix_indirect_syscall5_nr_last_fastcall: - .cfi_startproc - push ebx - .cfi_def_cfa_offset 8 - push esi - .cfi_def_cfa_offset 12 - push edi - .cfi_def_cfa_offset 16 - .cfi_offset edi, -16 - .cfi_offset esi, -12 - .cfi_offset ebx, -8 - mov ebx,DWORD PTR [esp+0x10] - mov esi,DWORD PTR [esp+0x14] - mov edi,DWORD PTR [esp+0x18] - mov eax,DWORD PTR [esp+0x1c] - call DWORD PTR [esp+0x20] - pop edi - .cfi_def_cfa_offset 12 - pop esi - .cfi_def_cfa_offset 8 - pop ebx - .cfi_def_cfa_offset 4 - ret 0x14 - .cfi_endproc - .size rustix_indirect_syscall5_nr_last_fastcall, .-rustix_indirect_syscall5_nr_last_fastcall - - .section .text.rustix_indirect_syscall6_nr_last_fastcall,"ax",@progbits - .p2align 4 - .weak rustix_indirect_syscall6_nr_last_fastcall - .hidden rustix_indirect_syscall6_nr_last_fastcall - .type rustix_indirect_syscall6_nr_last_fastcall, @function -rustix_indirect_syscall6_nr_last_fastcall: - .cfi_startproc - push ebx - .cfi_def_cfa_offset 8 - push esi - .cfi_def_cfa_offset 12 - push edi - .cfi_def_cfa_offset 16 - push ebp - .cfi_def_cfa_offset 20 - .cfi_offset ebp, -20 - .cfi_offset edi, -16 - .cfi_offset esi, -12 - .cfi_offset ebx, -8 - mov ebx,DWORD PTR [esp+0x14] - mov esi,DWORD PTR [esp+0x18] - mov edi,DWORD PTR [esp+0x1c] - mov ebp,DWORD PTR [esp+0x20] - mov eax,DWORD PTR [esp+0x24] - call DWORD PTR [esp+0x28] - pop ebp - .cfi_def_cfa_offset 16 - pop edi - .cfi_def_cfa_offset 12 - pop esi - .cfi_def_cfa_offset 8 - pop ebx - .cfi_def_cfa_offset 4 - ret 0x18 - .cfi_endproc - .size rustix_indirect_syscall6_nr_last_fastcall, .-rustix_indirect_syscall6_nr_last_fastcall - - .section .text.rustix_syscall0_nr_last_fastcall,"ax",@progbits - .p2align 4 - .weak rustix_syscall0_nr_last_fastcall - .hidden rustix_syscall0_nr_last_fastcall - .type rustix_syscall0_nr_last_fastcall, @function -rustix_syscall0_nr_last_fastcall: - .cfi_startproc - mov eax,ecx - int 0x80 - ret - .cfi_endproc - .size rustix_syscall0_nr_last_fastcall, .-rustix_syscall0_nr_last_fastcall - - .section .text.rustix_syscall1_nr_last_fastcall,"ax",@progbits - .p2align 4 - .weak rustix_syscall1_nr_last_fastcall - .hidden rustix_syscall1_nr_last_fastcall - .type rustix_syscall1_nr_last_fastcall, @function -rustix_syscall1_nr_last_fastcall: - .cfi_startproc - push ebx - .cfi_def_cfa_offset 8 - .cfi_offset ebx, -8 - mov eax,edx - mov ebx,ecx - int 0x80 - pop ebx - .cfi_def_cfa_offset 4 - ret - .cfi_endproc - .size rustix_syscall1_nr_last_fastcall, .-rustix_syscall1_nr_last_fastcall - - .section .text.rustix_syscall1_noreturn_nr_last_fastcall,"ax",@progbits - .p2align 4 - .weak rustix_syscall1_noreturn_nr_last_fastcall - .hidden rustix_syscall1_noreturn_nr_last_fastcall - .type rustix_syscall1_noreturn_nr_last_fastcall, @function -rustix_syscall1_noreturn_nr_last_fastcall: - .cfi_startproc - mov eax,edx - mov ebx,ecx - int 0x80 - ud2 - .cfi_endproc - .size rustix_syscall1_noreturn_nr_last_fastcall, .-rustix_syscall1_noreturn_nr_last_fastcall - - .section .text.rustix_syscall2_nr_last_fastcall,"ax",@progbits - .p2align 4 - .weak rustix_syscall2_nr_last_fastcall - .hidden rustix_syscall2_nr_last_fastcall - .type rustix_syscall2_nr_last_fastcall, @function -rustix_syscall2_nr_last_fastcall: - .cfi_startproc - push ebx - .cfi_def_cfa_offset 8 - .cfi_offset ebx, -8 - mov ebx,edx - mov eax,DWORD PTR [esp+0x8] - int 0x80 - pop ebx - .cfi_def_cfa_offset 4 - ret 0x4 - .cfi_endproc - .size rustix_syscall2_nr_last_fastcall, .-rustix_syscall2_nr_last_fastcall - - .section .text.rustix_syscall3_nr_last_fastcall,"ax",@progbits - .p2align 4 - .weak rustix_syscall3_nr_last_fastcall - .hidden rustix_syscall3_nr_last_fastcall - .type rustix_syscall3_nr_last_fastcall, @function -rustix_syscall3_nr_last_fastcall: - .cfi_startproc - push ebx - .cfi_def_cfa_offset 8 - .cfi_offset ebx, -8 - mov ebx,DWORD PTR [esp+0x8] - mov eax,DWORD PTR [esp+0xc] - int 0x80 - pop ebx - .cfi_def_cfa_offset 4 - ret 0x8 - .cfi_endproc - .size rustix_syscall3_nr_last_fastcall, .-rustix_syscall3_nr_last_fastcall - - .section .text.rustix_syscall4_nr_last_fastcall,"ax",@progbits - .p2align 4 - .weak rustix_syscall4_nr_last_fastcall - .hidden rustix_syscall4_nr_last_fastcall - .type rustix_syscall4_nr_last_fastcall, @function -rustix_syscall4_nr_last_fastcall: - .cfi_startproc - push ebx - .cfi_def_cfa_offset 8 - push esi - .cfi_def_cfa_offset 12 - .cfi_offset esi, -12 - .cfi_offset ebx, -8 - mov ebx,DWORD PTR [esp+0xc] - mov esi,DWORD PTR [esp+0x10] - mov eax,DWORD PTR [esp+0x14] - int 0x80 - pop esi - .cfi_def_cfa_offset 8 - pop ebx - .cfi_def_cfa_offset 4 - ret 0xc - .cfi_endproc - .size rustix_syscall4_nr_last_fastcall, .-rustix_syscall4_nr_last_fastcall - - .section .text.rustix_syscall5_nr_last_fastcall,"ax",@progbits - .p2align 4 - .weak rustix_syscall5_nr_last_fastcall - .hidden rustix_syscall5_nr_last_fastcall - .type rustix_syscall5_nr_last_fastcall, @function -rustix_syscall5_nr_last_fastcall: - .cfi_startproc - push ebx - .cfi_def_cfa_offset 8 - push edi - .cfi_def_cfa_offset 12 - push esi - .cfi_def_cfa_offset 16 - .cfi_offset esi, -16 - .cfi_offset edi, -12 - .cfi_offset ebx, -8 - mov ebx,DWORD PTR [esp+0x10] - mov esi,DWORD PTR [esp+0x14] - mov edi,DWORD PTR [esp+0x18] - mov eax,DWORD PTR [esp+0x1c] - int 0x80 - pop esi - .cfi_def_cfa_offset 12 - pop edi - .cfi_def_cfa_offset 8 - pop ebx - .cfi_def_cfa_offset 4 - ret 0x10 - .cfi_endproc - .size rustix_syscall5_nr_last_fastcall, .-rustix_syscall5_nr_last_fastcall - - .section .text.rustix_syscall6_nr_last_fastcall,"ax",@progbits - .p2align 4 - .weak rustix_syscall6_nr_last_fastcall - .hidden rustix_syscall6_nr_last_fastcall - .type rustix_syscall6_nr_last_fastcall, @function -rustix_syscall6_nr_last_fastcall: - .cfi_startproc - push ebp - .cfi_def_cfa_offset 8 - push ebx - .cfi_def_cfa_offset 12 - push edi - .cfi_def_cfa_offset 16 - push esi - .cfi_def_cfa_offset 20 - .cfi_offset esi, -20 - .cfi_offset edi, -16 - .cfi_offset ebx, -12 - .cfi_offset ebp, -8 - mov ebx,DWORD PTR [esp+0x14] - mov esi,DWORD PTR [esp+0x18] - mov edi,DWORD PTR [esp+0x1c] - mov ebp,DWORD PTR [esp+0x20] - mov eax,DWORD PTR [esp+0x24] - int 0x80 - pop esi - .cfi_def_cfa_offset 16 - pop edi - .cfi_def_cfa_offset 12 - pop ebx - .cfi_def_cfa_offset 8 - pop ebp - .cfi_def_cfa_offset 4 - ret 0x14 - .cfi_endproc - .size rustix_syscall6_nr_last_fastcall, .-rustix_syscall6_nr_last_fastcall - - .section .text.rustix_int_0x80,"ax",@progbits - .p2align 4 - .weak rustix_int_0x80 - .hidden rustix_int_0x80 - .type rustix_int_0x80, @function -rustix_int_0x80: - .cfi_startproc - int 0x80 - ret - .cfi_endproc - .size rustix_int_0x80, .-rustix_int_0x80 - - .section .note.GNU-stack,"",@progbits diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/conv.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/conv.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/conv.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/conv.rs 2023-10-30 19:40:00.000000000 +0000 @@ -20,20 +20,27 @@ #[cfg(target_pointer_width = "64")] use super::io::errno::try_decode_u64; #[cfg(not(debug_assertions))] -use super::io::errno::{decode_c_uint_infallible, decode_usize_infallible}; +use super::io::errno::{ + decode_c_int_infallible, decode_c_uint_infallible, decode_usize_infallible, +}; use super::io::errno::{ try_decode_c_int, try_decode_c_uint, try_decode_raw_fd, try_decode_usize, try_decode_void, try_decode_void_star, }; use super::reg::{raw_arg, ArgNumber, ArgReg, RetReg, R0}; -#[cfg(any(feature = "thread", feature = "time", target_arch = "x86"))] -use super::time::types::ClockId; #[cfg(feature = "time")] use super::time::types::TimerfdClockId; +#[cfg(any(feature = "thread", feature = "time", target_arch = "x86"))] +use crate::clockid::ClockId; use crate::fd::OwnedFd; use crate::ffi::CStr; use crate::io; -use crate::process::{Pid, Resource, Signal}; +#[cfg(any(feature = "process", feature = "runtime", feature = "termios"))] +use crate::pid::Pid; +#[cfg(feature = "process")] +use crate::process::Resource; +#[cfg(any(feature = "process", feature = "runtime"))] +use crate::signal::Signal; use crate::utils::{as_mut_ptr, as_ptr}; use core::mem::MaybeUninit; use core::ptr::null_mut; @@ -42,7 +49,7 @@ #[cfg(target_pointer_width = "64")] use linux_raw_sys::general::__kernel_loff_t; #[cfg(feature = "net")] -use linux_raw_sys::general::socklen_t; +use linux_raw_sys::net::socklen_t; /// Convert `SYS_*` constants for socketcall. #[cfg(target_arch = "x86")] @@ -155,7 +162,7 @@ pub(super) unsafe fn raw_fd<'a, Num: ArgNumber>(fd: RawFd) -> ArgReg<'a, Num> { // Use `no_fd` when passing `-1` is intended. #[cfg(feature = "fs")] - debug_assert!(fd == crate::fs::cwd().as_raw_fd() || fd >= 0); + debug_assert!(fd == crate::fs::CWD.as_raw_fd() || fd >= 0); // Don't pass the `io_uring_register_files_skip` sentry value this way. #[cfg(feature = "io_uring")] @@ -429,19 +436,79 @@ c_uint(access.bits()) } } +} - impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { - #[inline] - fn from(flags: crate::backend::fs::types::MountFlagsArg) -> Self { - c_uint(flags.0) - } +#[cfg(any(feature = "fs", feature = "mount"))] +impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { + #[inline] + fn from(flags: crate::backend::mount::types::MountFlagsArg) -> Self { + c_uint(flags.0) } +} - impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { - #[inline] - fn from(flags: crate::backend::fs::types::UnmountFlags) -> Self { - c_uint(flags.bits()) - } +// When the deprecated "fs" aliases are removed, we can remove the "fs" +// here too. +#[cfg(any(feature = "fs", feature = "mount"))] +impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { + #[inline] + fn from(flags: crate::backend::mount::types::UnmountFlags) -> Self { + c_uint(flags.bits()) + } +} + +#[cfg(feature = "mount")] +impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { + #[inline] + fn from(cmd: crate::mount::FsConfigCmd) -> Self { + c_uint(cmd as c::c_uint) + } +} + +#[cfg(feature = "mount")] +impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { + #[inline] + fn from(flags: crate::backend::mount::types::FsOpenFlags) -> Self { + c_uint(flags.bits()) + } +} + +#[cfg(feature = "mount")] +impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { + #[inline] + fn from(flags: crate::backend::mount::types::FsMountFlags) -> Self { + c_uint(flags.bits()) + } +} + +#[cfg(feature = "mount")] +impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { + #[inline] + fn from(flags: crate::backend::mount::types::MountAttrFlags) -> Self { + c_uint(flags.bits()) + } +} + +#[cfg(feature = "mount")] +impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { + #[inline] + fn from(flags: crate::backend::mount::types::OpenTreeFlags) -> Self { + c_uint(flags.bits()) + } +} + +#[cfg(feature = "mount")] +impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { + #[inline] + fn from(flags: crate::backend::mount::types::FsPickFlags) -> Self { + c_uint(flags.bits()) + } +} + +#[cfg(feature = "mount")] +impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { + #[inline] + fn from(flags: crate::backend::mount::types::MoveMountFlags) -> Self { + c_uint(flags.bits()) } } @@ -452,9 +519,18 @@ } } -impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { +#[cfg(feature = "pipe")] +impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { + #[inline] + fn from(flags: crate::pipe::PipeFlags) -> Self { + c_uint(flags.bits()) + } +} + +#[cfg(feature = "pipe")] +impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { #[inline] - fn from(flags: crate::io::PipeFlags) -> Self { + fn from(flags: crate::pipe::SpliceFlags) -> Self { c_uint(flags.bits()) } } @@ -473,16 +549,42 @@ } } -impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { +#[cfg(feature = "process")] +impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { + #[inline] + fn from(flags: crate::process::PidfdFlags) -> Self { + c_uint(flags.bits()) + } +} + +#[cfg(feature = "pty")] +impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { + #[inline] + fn from(flags: crate::pty::OpenptFlags) -> Self { + c_uint(flags.bits()) + } +} + +#[cfg(feature = "thread")] +impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { + #[inline] + fn from(flags: crate::thread::UnshareFlags) -> Self { + c_uint(flags.bits()) + } +} + +#[cfg(feature = "event")] +impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { #[inline] - fn from(flags: crate::io::EventfdFlags) -> Self { + fn from(flags: crate::event::EventfdFlags) -> Self { c_uint(flags.bits()) } } -impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { +#[cfg(feature = "event")] +impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { #[inline] - fn from(flags: crate::io::epoll::CreateFlags) -> Self { + fn from(flags: crate::event::epoll::CreateFlags) -> Self { c_uint(flags.bits()) } } @@ -543,6 +645,7 @@ } } +#[cfg(feature = "process")] impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { @@ -552,6 +655,7 @@ } } +#[cfg(feature = "process")] impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { #[inline] fn from(cpuid: crate::process::Cpuid) -> Self { @@ -568,11 +672,11 @@ #[cfg(target_pointer_width = "32")] #[inline] pub(super) fn dev_t<'a, Num: ArgNumber>(dev: u64) -> io::Result> { - use core::convert::TryInto; Ok(pass_usize(dev.try_into().map_err(|_err| io::Errno::INVAL)?)) } /// Convert a `Resource` into a syscall argument. +#[cfg(feature = "process")] impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { #[inline] fn from(resource: Resource) -> Self { @@ -580,6 +684,7 @@ } } +#[cfg(any(feature = "process", feature = "runtime", feature = "termios"))] impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { #[inline] fn from(pid: Pid) -> Self { @@ -587,11 +692,13 @@ } } +#[cfg(feature = "process")] #[inline] pub(super) fn negative_pid<'a, Num: ArgNumber>(pid: Pid) -> ArgReg<'a, Num> { pass_usize(pid.as_raw_nonzero().get().wrapping_neg() as usize) } +#[cfg(any(feature = "process", feature = "runtime"))] impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { #[inline] fn from(sig: Signal) -> Self { @@ -692,10 +799,13 @@ } #[cfg(feature = "net")] -impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { +impl<'a, Num: ArgNumber> From> for ArgReg<'a, Num> { #[inline] - fn from(protocol: crate::net::Protocol) -> Self { - c_uint(protocol.0) + fn from(protocol: Option) -> Self { + c_uint(match protocol { + Some(p) => p.0.get(), + None => 0, + }) } } @@ -713,16 +823,18 @@ } } -impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { +#[cfg(any(feature = "process", feature = "thread"))] +impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { #[inline] - fn from(t: crate::process::Uid) -> Self { + fn from(t: crate::ugid::Uid) -> Self { c_uint(t.as_raw()) } } -impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { +#[cfg(any(feature = "process", feature = "thread"))] +impl<'a, Num: ArgNumber> From for ArgReg<'a, Num> { #[inline] - fn from(t: crate::process::Gid) -> Self { + fn from(t: crate::ugid::Gid) -> Self { c_uint(t.as_raw()) } } @@ -824,6 +936,25 @@ } } +/// Convert a `c_int` returned from a syscall that effectively always +/// returns a `c_int`. +/// +/// # Safety +/// +/// This function must only be used with return values from infallible +/// syscalls. +#[inline] +pub(super) unsafe fn ret_c_int_infallible(raw: RetReg) -> c::c_int { + #[cfg(debug_assertions)] + { + try_decode_c_int(raw).unwrap() + } + #[cfg(not(debug_assertions))] + { + decode_c_int_infallible(raw) + } +} + /// Convert a `c_uint` returned from a syscall that effectively always /// returns a `c_uint`. /// diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/c.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/c.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/c.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/c.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,33 +4,192 @@ //! types that are convenient to have defined. #![allow(unused_imports)] +#![allow(non_camel_case_types)] -pub(crate) use linux_raw_sys::cmsg_macros::*; +pub type size_t = usize; pub(crate) use linux_raw_sys::ctypes::*; pub(crate) use linux_raw_sys::errno::EINVAL; +// Import the kernel's `uid_t` and `gid_t` if they're 32-bit. +#[cfg(not(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86")))] +pub(crate) use linux_raw_sys::general::{__kernel_gid_t as gid_t, __kernel_uid_t as uid_t}; pub(crate) use linux_raw_sys::general::{ - AF_DECnet, __kernel_sa_family_t as sa_family_t, __kernel_sockaddr_storage as sockaddr_storage, - cmsghdr, in6_addr, in_addr, iovec, ip_mreq, ipv6_mreq, linger, msghdr, siginfo_t, size_t, - sockaddr, sockaddr_in, sockaddr_in6, sockaddr_un, socklen_t, AF_APPLETALK, AF_ASH, AF_ATMPVC, - AF_ATMSVC, AF_AX25, AF_BLUETOOTH, AF_BRIDGE, AF_CAN, AF_ECONET, AF_IEEE802154, AF_INET, - AF_INET6, AF_IPX, AF_IRDA, AF_ISDN, AF_IUCV, AF_KEY, AF_LLC, AF_NETBEUI, AF_NETLINK, AF_NETROM, - AF_PACKET, AF_PHONET, AF_PPPOX, AF_RDS, AF_ROSE, AF_RXRPC, AF_SECURITY, AF_SNA, AF_TIPC, - AF_UNIX, AF_UNSPEC, AF_WANPIPE, AF_X25, CLD_CONTINUED, CLD_DUMPED, CLD_EXITED, CLD_KILLED, - CLD_STOPPED, CLD_TRAPPED, IPPROTO_AH, IPPROTO_BEETPH, IPPROTO_COMP, IPPROTO_DCCP, IPPROTO_EGP, - IPPROTO_ENCAP, IPPROTO_ESP, IPPROTO_ETHERNET, IPPROTO_FRAGMENT, IPPROTO_GRE, IPPROTO_ICMP, - IPPROTO_ICMPV6, IPPROTO_IDP, IPPROTO_IGMP, IPPROTO_IP, IPPROTO_IPIP, IPPROTO_IPV6, IPPROTO_MH, - IPPROTO_MPLS, IPPROTO_MPTCP, IPPROTO_MTP, IPPROTO_PIM, IPPROTO_PUP, IPPROTO_RAW, - IPPROTO_ROUTING, IPPROTO_RSVP, IPPROTO_SCTP, IPPROTO_TCP, IPPROTO_TP, IPPROTO_UDP, - IPPROTO_UDPLITE, IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP, IPV6_MULTICAST_HOPS, - IPV6_MULTICAST_LOOP, IPV6_UNICAST_HOPS, IPV6_V6ONLY, IP_ADD_MEMBERSHIP, IP_DROP_MEMBERSHIP, - IP_MULTICAST_LOOP, IP_MULTICAST_TTL, IP_TTL, MSG_CMSG_CLOEXEC, MSG_CONFIRM, MSG_DONTROUTE, - MSG_DONTWAIT, MSG_EOR, MSG_ERRQUEUE, MSG_MORE, MSG_NOSIGNAL, MSG_OOB, MSG_PEEK, MSG_TRUNC, - MSG_WAITALL, O_CLOEXEC, O_NONBLOCK, O_NONBLOCK as PIDFD_NONBLOCK, P_ALL, P_PID, P_PIDFD, - SCM_CREDENTIALS, SCM_RIGHTS, SHUT_RD, SHUT_RDWR, SHUT_WR, SOCK_DGRAM, SOCK_RAW, SOCK_RDM, - SOCK_SEQPACKET, SOCK_STREAM, SOL_SOCKET, SO_BROADCAST, SO_ERROR, SO_KEEPALIVE, SO_LINGER, - SO_PASSCRED, SO_RCVBUF, SO_RCVTIMEO_NEW, SO_RCVTIMEO_OLD, SO_REUSEADDR, SO_SNDBUF, - SO_SNDTIMEO_NEW, SO_SNDTIMEO_OLD, SO_TYPE, TCP_NODELAY, + __kernel_pid_t as pid_t, __kernel_time64_t as time_t, __kernel_timespec as timespec, iovec, + O_CLOEXEC, O_NOCTTY, O_NONBLOCK, O_RDWR, }; -pub(crate) use linux_raw_sys::general::{NFS_SUPER_MAGIC, PROC_SUPER_MAGIC, UTIME_NOW, UTIME_OMIT}; -pub(crate) use linux_raw_sys::general::{O_NOCTTY, O_RDWR}; -pub(crate) use linux_raw_sys::general::{XATTR_CREATE, XATTR_REPLACE}; + +#[cfg(feature = "event")] +#[cfg(test)] +pub(crate) use linux_raw_sys::general::epoll_event; + +#[cfg(any( + feature = "fs", + all( + not(feature = "use-libc-auxv"), + not(target_vendor = "mustang"), + any( + feature = "param", + feature = "runtime", + feature = "time", + target_arch = "x86", + ) + ) +))] +pub(crate) use linux_raw_sys::general::{ + AT_FDCWD, NFS_SUPER_MAGIC, O_LARGEFILE, PROC_SUPER_MAGIC, UTIME_NOW, UTIME_OMIT, XATTR_CREATE, + XATTR_REPLACE, +}; + +#[cfg(feature = "io_uring")] +pub(crate) use linux_raw_sys::{general::open_how, io_uring::*}; + +#[cfg(feature = "net")] +pub(crate) use linux_raw_sys::{ + cmsg_macros::*, + general::{O_CLOEXEC as SOCK_CLOEXEC, O_NONBLOCK as SOCK_NONBLOCK}, + if_ether::*, + net::{ + AF_DECnet, __kernel_sa_family_t as sa_family_t, + __kernel_sockaddr_storage as sockaddr_storage, cmsghdr, in6_addr, in_addr, ip_mreq, + ipv6_mreq, linger, msghdr, sockaddr, sockaddr_in, sockaddr_in6, sockaddr_un, socklen_t, + AF_APPLETALK, AF_ASH, AF_ATMPVC, AF_ATMSVC, AF_AX25, AF_BLUETOOTH, AF_BRIDGE, AF_CAN, + AF_ECONET, AF_IEEE802154, AF_INET, AF_INET6, AF_IPX, AF_IRDA, AF_ISDN, AF_IUCV, AF_KEY, + AF_LLC, AF_NETBEUI, AF_NETLINK, AF_NETROM, AF_PACKET, AF_PHONET, AF_PPPOX, AF_RDS, AF_ROSE, + AF_RXRPC, AF_SECURITY, AF_SNA, AF_TIPC, AF_UNIX, AF_UNSPEC, AF_WANPIPE, AF_X25, IPPROTO_AH, + IPPROTO_BEETPH, IPPROTO_COMP, IPPROTO_DCCP, IPPROTO_EGP, IPPROTO_ENCAP, IPPROTO_ESP, + IPPROTO_ETHERNET, IPPROTO_FRAGMENT, IPPROTO_GRE, IPPROTO_ICMP, IPPROTO_ICMPV6, IPPROTO_IDP, + IPPROTO_IGMP, IPPROTO_IP, IPPROTO_IPIP, IPPROTO_IPV6, IPPROTO_MH, IPPROTO_MPLS, + IPPROTO_MPTCP, IPPROTO_MTP, IPPROTO_PIM, IPPROTO_PUP, IPPROTO_RAW, IPPROTO_ROUTING, + IPPROTO_RSVP, IPPROTO_SCTP, IPPROTO_TCP, IPPROTO_TP, IPPROTO_UDP, IPPROTO_UDPLITE, + IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP, IPV6_MULTICAST_HOPS, IPV6_MULTICAST_LOOP, + IPV6_UNICAST_HOPS, IPV6_V6ONLY, IP_ADD_MEMBERSHIP, IP_DROP_MEMBERSHIP, IP_MULTICAST_LOOP, + IP_MULTICAST_TTL, IP_TTL, MSG_CMSG_CLOEXEC, MSG_CONFIRM, MSG_DONTROUTE, MSG_DONTWAIT, + MSG_EOR, MSG_ERRQUEUE, MSG_MORE, MSG_NOSIGNAL, MSG_OOB, MSG_PEEK, MSG_TRUNC, MSG_WAITALL, + SCM_CREDENTIALS, SCM_RIGHTS, SHUT_RD, SHUT_RDWR, SHUT_WR, SOCK_DGRAM, SOCK_RAW, SOCK_RDM, + SOCK_SEQPACKET, SOCK_STREAM, SOL_SOCKET, SO_BROADCAST, SO_DOMAIN, SO_ERROR, SO_KEEPALIVE, + SO_LINGER, SO_PASSCRED, SO_RCVBUF, SO_RCVTIMEO_NEW, SO_RCVTIMEO_NEW as SO_RCVTIMEO, + SO_RCVTIMEO_OLD, SO_REUSEADDR, SO_SNDBUF, SO_SNDTIMEO_NEW, SO_SNDTIMEO_NEW as SO_SNDTIMEO, + SO_SNDTIMEO_OLD, SO_TYPE, TCP_NODELAY, + }, + netlink::*, +}; + +#[cfg(any(feature = "process", feature = "runtime"))] +pub(crate) use linux_raw_sys::general::siginfo_t; + +#[cfg(feature = "process")] +pub(crate) use linux_raw_sys::general::{ + CLD_CONTINUED, CLD_DUMPED, CLD_EXITED, CLD_KILLED, CLD_STOPPED, CLD_TRAPPED, + O_NONBLOCK as PIDFD_NONBLOCK, P_ALL, P_PID, P_PIDFD, +}; + +#[cfg(feature = "termios")] +pub(crate) use linux_raw_sys::{ + general::{ + cc_t, speed_t, tcflag_t, termios, termios2, winsize, B0, B1000000, B110, B115200, B1152000, + B1200, B134, B150, B1500000, B1800, B19200, B200, B2000000, B230400, B2400, B2500000, B300, + B3000000, B3500000, B38400, B4000000, B460800, B4800, B50, B500000, B57600, B576000, B600, + B75, B921600, B9600, BOTHER, BRKINT, BS0, BS1, BSDLY, CBAUD, CBAUDEX, CIBAUD, CLOCAL, + CMSPAR, CR0, CR1, CR2, CR3, CRDLY, CREAD, CRTSCTS, CS5, CS6, CS7, CS8, CSIZE, CSTOPB, ECHO, + ECHOCTL, ECHOE, ECHOK, ECHOKE, ECHONL, ECHOPRT, EXTA, EXTB, EXTPROC, FF0, FF1, FFDLY, + FLUSHO, HUPCL, IBSHIFT, ICANON, ICRNL, IEXTEN, IGNBRK, IGNCR, IGNPAR, IMAXBEL, INLCR, + INPCK, ISIG, ISTRIP, IUCLC, IUTF8, IXANY, IXOFF, IXON, NCCS, NL0, NL1, NLDLY, NOFLSH, + OCRNL, OFDEL, OFILL, OLCUC, ONLCR, ONLRET, ONOCR, OPOST, PARENB, PARMRK, PARODD, PENDIN, + TAB0, TAB1, TAB2, TAB3, TABDLY, TCIFLUSH, TCIOFF, TCIOFLUSH, TCION, TCOFLUSH, TCOOFF, + TCOON, TCSADRAIN, TCSAFLUSH, TCSANOW, TOSTOP, VDISCARD, VEOF, VEOL, VEOL2, VERASE, VINTR, + VKILL, VLNEXT, VMIN, VQUIT, VREPRINT, VSTART, VSTOP, VSUSP, VSWTC, VT0, VT1, VTDLY, VTIME, + VWERASE, XCASE, XTABS, + }, + ioctl::{TCGETS2, TCSETS2, TCSETSF2, TCSETSW2}, +}; + +// On MIPS, `TCSANOW` et al have `TCSETS` added to them, so we need it to +// subtract it out. +#[cfg(all( + feature = "termios", + any( + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6" + ) +))] +pub(crate) use linux_raw_sys::ioctl::TCSETS; + +// Define our own `uid_t` and `gid_t` if the kernel's versions are not 32-bit. +#[cfg(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86"))] +pub(crate) type uid_t = u32; +#[cfg(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86"))] +pub(crate) type gid_t = u32; + +// Bindgen infers `u32` for many of these macro types which meant to be +// used with `c_int` in the C APIs, so cast them to `c_int`. + +// Convert the signal constants from `u32` to `c_int`. +pub(crate) const SIGHUP: c_int = linux_raw_sys::general::SIGHUP as _; +pub(crate) const SIGINT: c_int = linux_raw_sys::general::SIGINT as _; +pub(crate) const SIGQUIT: c_int = linux_raw_sys::general::SIGQUIT as _; +pub(crate) const SIGILL: c_int = linux_raw_sys::general::SIGILL as _; +pub(crate) const SIGTRAP: c_int = linux_raw_sys::general::SIGTRAP as _; +pub(crate) const SIGABRT: c_int = linux_raw_sys::general::SIGABRT as _; +pub(crate) const SIGBUS: c_int = linux_raw_sys::general::SIGBUS as _; +pub(crate) const SIGFPE: c_int = linux_raw_sys::general::SIGFPE as _; +pub(crate) const SIGKILL: c_int = linux_raw_sys::general::SIGKILL as _; +pub(crate) const SIGUSR1: c_int = linux_raw_sys::general::SIGUSR1 as _; +pub(crate) const SIGSEGV: c_int = linux_raw_sys::general::SIGSEGV as _; +pub(crate) const SIGUSR2: c_int = linux_raw_sys::general::SIGUSR2 as _; +pub(crate) const SIGPIPE: c_int = linux_raw_sys::general::SIGPIPE as _; +pub(crate) const SIGALRM: c_int = linux_raw_sys::general::SIGALRM as _; +pub(crate) const SIGTERM: c_int = linux_raw_sys::general::SIGTERM as _; +#[cfg(not(any( + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6", + target_arch = "sparc", + target_arch = "sparc64" +)))] +pub(crate) const SIGSTKFLT: c_int = linux_raw_sys::general::SIGSTKFLT as _; +pub(crate) const SIGCHLD: c_int = linux_raw_sys::general::SIGCHLD as _; +pub(crate) const SIGCONT: c_int = linux_raw_sys::general::SIGCONT as _; +pub(crate) const SIGSTOP: c_int = linux_raw_sys::general::SIGSTOP as _; +pub(crate) const SIGTSTP: c_int = linux_raw_sys::general::SIGTSTP as _; +pub(crate) const SIGTTIN: c_int = linux_raw_sys::general::SIGTTIN as _; +pub(crate) const SIGTTOU: c_int = linux_raw_sys::general::SIGTTOU as _; +pub(crate) const SIGURG: c_int = linux_raw_sys::general::SIGURG as _; +pub(crate) const SIGXCPU: c_int = linux_raw_sys::general::SIGXCPU as _; +pub(crate) const SIGXFSZ: c_int = linux_raw_sys::general::SIGXFSZ as _; +pub(crate) const SIGVTALRM: c_int = linux_raw_sys::general::SIGVTALRM as _; +pub(crate) const SIGPROF: c_int = linux_raw_sys::general::SIGPROF as _; +pub(crate) const SIGWINCH: c_int = linux_raw_sys::general::SIGWINCH as _; +pub(crate) const SIGIO: c_int = linux_raw_sys::general::SIGIO as _; +pub(crate) const SIGPWR: c_int = linux_raw_sys::general::SIGPWR as _; +pub(crate) const SIGSYS: c_int = linux_raw_sys::general::SIGSYS as _; +#[cfg(any( + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6", + target_arch = "sparc", + target_arch = "sparc64" +))] +pub(crate) const SIGEMT: c_int = linux_raw_sys::general::SIGEMT as _; + +#[cfg(feature = "stdio")] +pub(crate) const STDIN_FILENO: c_int = linux_raw_sys::general::STDIN_FILENO as _; +#[cfg(feature = "stdio")] +pub(crate) const STDOUT_FILENO: c_int = linux_raw_sys::general::STDOUT_FILENO as _; +#[cfg(feature = "stdio")] +pub(crate) const STDERR_FILENO: c_int = linux_raw_sys::general::STDERR_FILENO as _; + +pub(crate) const PIPE_BUF: usize = linux_raw_sys::general::PIPE_BUF as _; + +pub(crate) const CLOCK_MONOTONIC: c_int = linux_raw_sys::general::CLOCK_MONOTONIC as _; +pub(crate) const CLOCK_REALTIME: c_int = linux_raw_sys::general::CLOCK_REALTIME as _; +pub(crate) const CLOCK_MONOTONIC_RAW: c_int = linux_raw_sys::general::CLOCK_MONOTONIC_RAW as _; +pub(crate) const CLOCK_MONOTONIC_COARSE: c_int = + linux_raw_sys::general::CLOCK_MONOTONIC_COARSE as _; +pub(crate) const CLOCK_REALTIME_COARSE: c_int = linux_raw_sys::general::CLOCK_REALTIME_COARSE as _; +pub(crate) const CLOCK_THREAD_CPUTIME_ID: c_int = + linux_raw_sys::general::CLOCK_THREAD_CPUTIME_ID as _; +pub(crate) const CLOCK_PROCESS_CPUTIME_ID: c_int = + linux_raw_sys::general::CLOCK_PROCESS_CPUTIME_ID as _; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/elf.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/elf.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/elf.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/elf.rs 2023-10-30 19:40:00.000000000 +0000 @@ -62,7 +62,12 @@ pub(super) const EM_CURRENT: u16 = 3; // EM_386 #[cfg(target_arch = "powerpc64")] pub(super) const EM_CURRENT: u16 = 21; // EM_PPC64 -#[cfg(any(target_arch = "mips", target_arch = "mips64"))] +#[cfg(any( + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6" +))] pub(super) const EM_CURRENT: u16 = 8; // EM_MIPS #[cfg(target_arch = "x86_64")] pub(super) const EM_CURRENT: u16 = 62; // EM_X86_64 diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/epoll.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/epoll.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/epoll.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/epoll.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,462 @@ +//! epoll support. +//! +//! This is an experiment, and it isn't yet clear whether epoll is the right +//! level of abstraction at which to introduce safety. But it works fairly well +//! in simple examples 🙂. +//! +//! # Examples +//! +//! ```no_run +//! # #[cfg(feature = "net")] +//! # fn main() -> std::io::Result<()> { +//! use rustix::event::epoll; +//! use rustix::fd::AsFd; +//! use rustix::io::{ioctl_fionbio, read, write}; +//! use rustix::net::{ +//! accept, bind_v4, listen, socket, AddressFamily, Ipv4Addr, SocketAddrV4, SocketType, +//! }; +//! use std::collections::HashMap; +//! use std::os::unix::io::AsRawFd; +//! +//! // Create a socket and listen on it. +//! let listen_sock = socket(AddressFamily::INET, SocketType::STREAM, None)?; +//! bind_v4(&listen_sock, &SocketAddrV4::new(Ipv4Addr::LOCALHOST, 0))?; +//! listen(&listen_sock, 1)?; +//! +//! // Create an epoll object. Using `Owning` here means the epoll object will +//! // take ownership of the file descriptors registered with it. +//! let epoll = epoll::create(epoll::CreateFlags::CLOEXEC)?; +//! +//! // Register the socket with the epoll object. +//! epoll::add( +//! &epoll, +//! &listen_sock, +//! epoll::EventData::new_u64(1), +//! epoll::EventFlags::IN, +//! )?; +//! +//! // Keep track of the sockets we've opened. +//! let mut next_id = epoll::EventData::new_u64(2); +//! let mut sockets = HashMap::new(); +//! +//! // Process events. +//! let mut event_list = epoll::EventVec::with_capacity(4); +//! loop { +//! epoll::wait(&epoll, &mut event_list, -1)?; +//! for event in &event_list { +//! let target = event.data; +//! if target.u64() == 1 { +//! // Accept a new connection, set it to non-blocking, and +//! // register to be notified when it's ready to write to. +//! let conn_sock = accept(&listen_sock)?; +//! ioctl_fionbio(&conn_sock, true)?; +//! epoll::add( +//! &epoll, +//! &conn_sock, +//! next_id, +//! epoll::EventFlags::OUT | epoll::EventFlags::ET, +//! )?; +//! +//! // Keep track of the socket. +//! sockets.insert(next_id, conn_sock); +//! next_id = epoll::EventData::new_u64(next_id.u64() + 1); +//! } else { +//! // Write a message to the stream and then unregister it. +//! let target = sockets.remove(&target).unwrap(); +//! write(&target, b"hello\n")?; +//! let _ = epoll::delete(&epoll, &target)?; +//! } +//! } +//! } +//! # } +//! # #[cfg(not(feature = "net"))] +//! # fn main() {} +//! ``` + +#![allow(unsafe_code)] + +use crate::backend::c; +use crate::backend::event::syscalls; +use crate::fd::{AsFd, AsRawFd, OwnedFd}; +use crate::io; +use alloc::vec::Vec; +use bitflags::bitflags; +use core::ffi::c_void; +use core::hash::{Hash, Hasher}; +use core::slice; + +bitflags! { + /// `EPOLL_*` for use with [`new`]. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct CreateFlags: c::c_uint { + /// `EPOLL_CLOEXEC` + const CLOEXEC = linux_raw_sys::general::EPOLL_CLOEXEC; + } +} + +bitflags! { + /// `EPOLL*` for use with [`add`]. + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct EventFlags: u32 { + /// `EPOLLIN` + const IN = linux_raw_sys::general::EPOLLIN as u32; + + /// `EPOLLOUT` + const OUT = linux_raw_sys::general::EPOLLOUT as u32; + + /// `EPOLLPRI` + const PRI = linux_raw_sys::general::EPOLLPRI as u32; + + /// `EPOLLERR` + const ERR = linux_raw_sys::general::EPOLLERR as u32; + + /// `EPOLLHUP` + const HUP = linux_raw_sys::general::EPOLLHUP as u32; + + /// `EPOLLRDNORM` + const RDNORM = linux_raw_sys::general::EPOLLRDNORM as u32; + + /// `EPOLLRDBAND` + const RDBAND = linux_raw_sys::general::EPOLLRDBAND as u32; + + /// `EPOLLWRNORM` + const WRNORM = linux_raw_sys::general::EPOLLWRNORM as u32; + + /// `EPOLLWRBAND` + const WRBAND = linux_raw_sys::general::EPOLLWRBAND as u32; + + /// `EPOLLMSG` + const MSG = linux_raw_sys::general::EPOLLMSG as u32; + + /// `EPOLLRDHUP` + const RDHUP = linux_raw_sys::general::EPOLLRDHUP as u32; + + /// `EPOLLET` + const ET = linux_raw_sys::general::EPOLLET as u32; + + /// `EPOLLONESHOT` + const ONESHOT = linux_raw_sys::general::EPOLLONESHOT as u32; + + /// `EPOLLWAKEUP` + const WAKEUP = linux_raw_sys::general::EPOLLWAKEUP as u32; + + /// `EPOLLEXCLUSIVE` + const EXCLUSIVE = linux_raw_sys::general::EPOLLEXCLUSIVE as u32; + } +} + +/// `epoll_create1(flags)`—Creates a new epoll object. +/// +/// Use the [`CreateFlags::CLOEXEC`] flag to prevent the resulting file +/// descriptor from being implicitly passed across `exec` boundaries. +#[inline] +#[doc(alias = "epoll_create1")] +pub fn create(flags: CreateFlags) -> io::Result { + syscalls::epoll_create(flags) +} + +/// `epoll_ctl(self, EPOLL_CTL_ADD, data, event)`—Adds an element to an +/// epoll object. +/// +/// This registers interest in any of the events set in `events` occurring on +/// the file descriptor associated with `data`. +/// +/// If [`delete`] is not called on the I/O source passed into this function +/// before the I/O source is `close`d, then the `epoll` will act as if the I/O +/// source is still registered with it. This can lead to spurious events being +/// returned from [`wait`]. If a file descriptor is an +/// `Arc`, then `epoll` can be thought to maintain a +/// `Weak` to the file descriptor. +#[doc(alias = "epoll_ctl")] +#[inline] +pub fn add( + epoll: impl AsFd, + source: impl AsFd, + data: EventData, + event_flags: EventFlags, +) -> io::Result<()> { + // SAFETY: We're calling `epoll_ctl` via FFI and we know how it + // behaves. + unsafe { + syscalls::epoll_add( + epoll.as_fd(), + source.as_fd().as_raw_fd(), + &Event { + flags: event_flags, + data, + }, + ) + } +} + +/// `epoll_ctl(self, EPOLL_CTL_MOD, target, event)`—Modifies an element in a +/// given epoll object. +/// +/// This sets the events of interest with `target` to `events`. +#[doc(alias = "epoll_ctl")] +#[inline] +pub fn modify( + epoll: impl AsFd, + source: impl AsFd, + data: EventData, + event_flags: EventFlags, +) -> io::Result<()> { + // SAFETY: We're calling `epoll_ctl` via FFI and we know how it + // behaves. + unsafe { + let raw_fd = source.as_fd().as_raw_fd(); + syscalls::epoll_mod( + epoll.as_fd(), + raw_fd, + &Event { + flags: event_flags, + data, + }, + ) + } +} + +/// `epoll_ctl(self, EPOLL_CTL_DEL, target, NULL)`—Removes an element in a +/// given epoll object. +#[doc(alias = "epoll_ctl")] +#[inline] +pub fn delete(epoll: impl AsFd, source: impl AsFd) -> io::Result<()> { + // SAFETY: We're calling `epoll_ctl` via FFI and we know how it + // behaves. + unsafe { + let raw_fd = source.as_fd().as_raw_fd(); + syscalls::epoll_del(epoll.as_fd(), raw_fd) + } +} + +/// `epoll_wait(self, events, timeout)`—Waits for registered events of +/// interest. +/// +/// For each event of interest, an element is written to `events`. On +/// success, this returns the number of written elements. +#[inline] +pub fn wait(epoll: impl AsFd, event_list: &mut EventVec, timeout: c::c_int) -> io::Result<()> { + // SAFETY: We're calling `epoll_wait` via FFI and we know how it + // behaves. + unsafe { + event_list.events.set_len(0); + let nfds = syscalls::epoll_wait( + epoll.as_fd(), + event_list.events[..].as_mut_ptr().cast(), + event_list.events.capacity(), + timeout, + )?; + event_list.events.set_len(nfds); + } + + Ok(()) +} + +/// An iterator over the `Event`s in an `EventVec`. +pub struct Iter<'a> { + /// Use `Copied` to copy the struct, since `Event` is `packed` on some + /// platforms, and it's common for users to directly destructure it, + /// which would lead to errors about forming references to packed fields. + iter: core::iter::Copied>, +} + +impl<'a> Iterator for Iter<'a> { + type Item = Event; + + #[inline] + fn next(&mut self) -> Option { + self.iter.next() + } +} + +/// A record of an event that occurred. +#[repr(C)] +#[cfg_attr(target_arch = "x86_64", repr(packed))] +#[derive(Copy, Clone, Eq, PartialEq, Hash)] +pub struct Event { + /// Which specific event(s) occurred. + pub flags: EventFlags, + /// User data. + pub data: EventData, +} + +/// Data assocated with an [`Event`]. This can either be a 64-bit integer value +/// or a pointer which preserves pointer provenance. +#[repr(C)] +#[derive(Copy, Clone)] +pub union EventData { + /// A 64-bit integer value. + as_u64: u64, + + /// A `*mut c_void` which preserves pointer provenance, extended to be + /// 64-bit so that if we read the value as a `u64` union field, we don't + /// get uninitialized memory. + sixty_four_bit_pointer: SixtyFourBitPointer, +} + +impl EventData { + /// Construct a new value containing a `u64`. + #[inline] + pub const fn new_u64(value: u64) -> Self { + Self { as_u64: value } + } + + /// Construct a new value containing a `*mut c_void`. + #[inline] + pub const fn new_ptr(value: *mut c_void) -> Self { + Self { + sixty_four_bit_pointer: SixtyFourBitPointer { + pointer: value, + #[cfg(target_pointer_width = "32")] + _padding: 0, + }, + } + } + + /// Return the value as a `u64`. + /// + /// If the stored value was a pointer, the pointer is zero-extended to a + /// `u64`. + #[inline] + pub fn u64(self) -> u64 { + unsafe { self.as_u64 } + } + + /// Return the value as a `*mut c_void`. + /// + /// If the stored value was a `u64`, the least-significant bits of the + /// `u64` are returned as a pointer value. + #[inline] + pub fn ptr(self) -> *mut c_void { + unsafe { self.sixty_four_bit_pointer.pointer } + } +} + +impl PartialEq for EventData { + #[inline] + fn eq(&self, other: &Self) -> bool { + self.u64() == other.u64() + } +} + +impl Eq for EventData {} + +impl Hash for EventData { + #[inline] + fn hash(&self, state: &mut H) { + self.u64().hash(state) + } +} + +#[repr(C)] +#[derive(Copy, Clone)] +struct SixtyFourBitPointer { + #[cfg(target_endian = "big")] + #[cfg(target_pointer_width = "32")] + _padding: u32, + + pointer: *mut c_void, + + #[cfg(target_endian = "little")] + #[cfg(target_pointer_width = "32")] + _padding: u32, +} + +/// A vector of `Event`s, plus context for interpreting them. +pub struct EventVec { + events: Vec, +} + +impl EventVec { + /// Constructs an `EventVec` from raw pointer, length, and capacity. + /// + /// # Safety + /// + /// This function calls [`Vec::from_raw_parts`] with its arguments. + /// + /// [`Vec::from_raw_parts`]: https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.from_raw_parts + #[inline] + pub unsafe fn from_raw_parts(ptr: *mut Event, len: usize, capacity: usize) -> Self { + Self { + events: Vec::from_raw_parts(ptr, len, capacity), + } + } + + /// Constructs an `EventVec` with memory for `capacity` `Event`s. + #[inline] + pub fn with_capacity(capacity: usize) -> Self { + Self { + events: Vec::with_capacity(capacity), + } + } + + /// Returns the current `Event` capacity of this `EventVec`. + #[inline] + pub fn capacity(&self) -> usize { + self.events.capacity() + } + + /// Reserves enough memory for at least `additional` more `Event`s. + #[inline] + pub fn reserve(&mut self, additional: usize) { + self.events.reserve(additional); + } + + /// Reserves enough memory for exactly `additional` more `Event`s. + #[inline] + pub fn reserve_exact(&mut self, additional: usize) { + self.events.reserve_exact(additional); + } + + /// Clears all the `Events` out of this `EventVec`. + #[inline] + pub fn clear(&mut self) { + self.events.clear(); + } + + /// Shrinks the capacity of this `EventVec` as much as possible. + #[inline] + pub fn shrink_to_fit(&mut self) { + self.events.shrink_to_fit(); + } + + /// Returns an iterator over the `Event`s in this `EventVec`. + #[inline] + pub fn iter(&self) -> Iter<'_> { + Iter { + iter: self.events.iter().copied(), + } + } + + /// Returns the number of `Event`s logically contained in this `EventVec`. + #[inline] + pub fn len(&mut self) -> usize { + self.events.len() + } + + /// Tests whether this `EventVec` is logically empty. + #[inline] + pub fn is_empty(&mut self) -> bool { + self.events.is_empty() + } +} + +impl<'a> IntoIterator for &'a EventVec { + type IntoIter = Iter<'a>; + type Item = Event; + + #[inline] + fn into_iter(self) -> Self::IntoIter { + self.iter() + } +} + +#[test] +fn test_epoll_layouts() { + check_renamed_type!(Event, epoll_event); + check_renamed_type!(Event, epoll_event); + check_renamed_struct_renamed_field!(Event, epoll_event, flags, events); + check_renamed_struct_renamed_field!(Event, epoll_event, data, data); +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,4 @@ +pub mod epoll; +pub(crate) mod poll_fd; +pub(crate) mod syscalls; +pub(crate) mod types; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/poll_fd.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/poll_fd.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/poll_fd.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/poll_fd.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,95 @@ +use crate::fd::{AsFd, BorrowedFd}; +use bitflags::bitflags; + +bitflags! { + /// `POLL*` flags for use with [`poll`]. + /// + /// [`poll`]: crate::io::poll + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct PollFlags: u16 { + /// `POLLIN` + const IN = linux_raw_sys::general::POLLIN as u16; + /// `POLLPRI` + const PRI = linux_raw_sys::general::POLLPRI as u16; + /// `POLLOUT` + const OUT = linux_raw_sys::general::POLLOUT as u16; + /// `POLLRDNORM` + const RDNORM = linux_raw_sys::general::POLLRDNORM as u16; + /// `POLLWRNORM` + const WRNORM = linux_raw_sys::general::POLLWRNORM as u16; + /// `POLLRDBAND` + const RDBAND = linux_raw_sys::general::POLLRDBAND as u16; + /// `POLLWRBAND` + const WRBAND = linux_raw_sys::general::POLLWRBAND as u16; + /// `POLLERR` + const ERR = linux_raw_sys::general::POLLERR as u16; + /// `POLLHUP` + const HUP = linux_raw_sys::general::POLLHUP as u16; + /// `POLLNVAL` + const NVAL = linux_raw_sys::general::POLLNVAL as u16; + /// `POLLRDHUP` + const RDHUP = linux_raw_sys::general::POLLRDHUP as u16; + } +} + +/// `struct pollfd`—File descriptor and flags for use with [`poll`]. +/// +/// [`poll`]: crate::event::poll +#[doc(alias = "pollfd")] +#[repr(C)] +#[derive(Debug, Clone)] +pub struct PollFd<'fd> { + pub(crate) fd: BorrowedFd<'fd>, + pub(crate) events: u16, + pub(crate) revents: u16, +} + +impl<'fd> PollFd<'fd> { + /// Constructs a new `PollFd` holding `fd` and `events`. + #[inline] + pub fn new(fd: &'fd Fd, events: PollFlags) -> Self { + Self::from_borrowed_fd(fd.as_fd(), events) + } + + /// Sets the contained file descriptor to `fd`. + #[inline] + pub fn set_fd(&mut self, fd: &'fd Fd) { + self.fd = fd.as_fd(); + } + + /// Clears the ready events. + #[inline] + pub fn clear_revents(&mut self) { + self.revents = 0; + } + + /// Constructs a new `PollFd` holding `fd` and `events`. + /// + /// This is the same as `new`, but can be used to avoid borrowing the + /// `BorrowedFd`, which can be tricky in situations where the `BorrowedFd` + /// is a temporary. + #[inline] + pub fn from_borrowed_fd(fd: BorrowedFd<'fd>, events: PollFlags) -> Self { + Self { + fd, + events: events.bits(), + revents: 0, + } + } + + /// Returns the ready events. + #[inline] + pub fn revents(&self) -> PollFlags { + // Use `.unwrap()` here because in theory we know we know all the bits + // the OS might set here, but OS's have added extensions in the past. + PollFlags::from_bits(self.revents).unwrap() + } +} + +impl<'fd> AsFd for PollFd<'fd> { + #[inline] + fn as_fd(&self) -> BorrowedFd<'_> { + self.fd.as_fd() + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/syscalls.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,131 @@ +//! linux_raw syscalls supporting `rustix::event`. +//! +//! # Safety +//! +//! See the `rustix::backend` module documentation for details. +#![allow(unsafe_code)] +#![allow(clippy::undocumented_unsafe_blocks)] + +use crate::backend::c; +use crate::backend::conv::{ + by_ref, c_int, c_uint, pass_usize, raw_fd, ret, ret_owned_fd, ret_usize, slice_mut, zero, +}; +use crate::event::{epoll, EventfdFlags, PollFd}; +use crate::fd::{BorrowedFd, OwnedFd}; +use crate::io; +use linux_raw_sys::general::{EPOLL_CTL_ADD, EPOLL_CTL_DEL, EPOLL_CTL_MOD}; +#[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))] +use { + crate::backend::conv::{opt_ref, size_of}, + linux_raw_sys::general::{__kernel_timespec, kernel_sigset_t}, +}; + +#[inline] +pub(crate) fn poll(fds: &mut [PollFd<'_>], timeout: c::c_int) -> io::Result { + let (fds_addr_mut, fds_len) = slice_mut(fds); + + #[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))] + unsafe { + let timeout = if timeout >= 0 { + Some(__kernel_timespec { + tv_sec: (timeout as i64) / 1000, + tv_nsec: (timeout as i64) % 1000 * 1_000_000, + }) + } else { + None + }; + ret_usize(syscall!( + __NR_ppoll, + fds_addr_mut, + fds_len, + opt_ref(timeout.as_ref()), + zero(), + size_of::() + )) + } + #[cfg(not(any(target_arch = "aarch64", target_arch = "riscv64")))] + unsafe { + ret_usize(syscall!(__NR_poll, fds_addr_mut, fds_len, c_int(timeout))) + } +} + +#[inline] +pub(crate) fn epoll_create(flags: epoll::CreateFlags) -> io::Result { + unsafe { ret_owned_fd(syscall_readonly!(__NR_epoll_create1, flags)) } +} + +#[inline] +pub(crate) unsafe fn epoll_add( + epfd: BorrowedFd<'_>, + fd: c::c_int, + event: &epoll::Event, +) -> io::Result<()> { + ret(syscall_readonly!( + __NR_epoll_ctl, + epfd, + c_uint(EPOLL_CTL_ADD), + raw_fd(fd), + by_ref(event) + )) +} + +#[inline] +pub(crate) unsafe fn epoll_mod( + epfd: BorrowedFd<'_>, + fd: c::c_int, + event: &epoll::Event, +) -> io::Result<()> { + ret(syscall_readonly!( + __NR_epoll_ctl, + epfd, + c_uint(EPOLL_CTL_MOD), + raw_fd(fd), + by_ref(event) + )) +} + +#[inline] +pub(crate) unsafe fn epoll_del(epfd: BorrowedFd<'_>, fd: c::c_int) -> io::Result<()> { + ret(syscall_readonly!( + __NR_epoll_ctl, + epfd, + c_uint(EPOLL_CTL_DEL), + raw_fd(fd), + zero() + )) +} + +#[inline] +pub(crate) fn epoll_wait( + epfd: BorrowedFd<'_>, + events: *mut epoll::Event, + num_events: usize, + timeout: c::c_int, +) -> io::Result { + #[cfg(not(any(target_arch = "aarch64", target_arch = "riscv64")))] + unsafe { + ret_usize(syscall!( + __NR_epoll_wait, + epfd, + events, + pass_usize(num_events), + c_int(timeout) + )) + } + #[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))] + unsafe { + ret_usize(syscall!( + __NR_epoll_pwait, + epfd, + events, + pass_usize(num_events), + c_int(timeout), + zero() + )) + } +} + +#[inline] +pub(crate) fn eventfd(initval: u32, flags: EventfdFlags) -> io::Result { + unsafe { ret_owned_fd(syscall_readonly!(__NR_eventfd2, c_uint(initval), flags)) } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/types.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/types.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/event/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,18 @@ +use crate::backend::c; +use bitflags::bitflags; + +bitflags! { + /// `EFD_*` flags for use with [`eventfd`]. + /// + /// [`eventfd`]: crate::io::eventfd + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct EventfdFlags: c::c_uint { + /// `EFD_CLOEXEC` + const CLOEXEC = linux_raw_sys::general::EFD_CLOEXEC; + /// `EFD_NONBLOCK` + const NONBLOCK = linux_raw_sys::general::EFD_NONBLOCK; + /// `EFD_SEMAPHORE` + const SEMAPHORE = linux_raw_sys::general::EFD_SEMAPHORE; + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/fs/dir.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/fs/dir.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/fs/dir.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/fs/dir.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,6 +4,7 @@ fcntl_getfl, fstat, fstatfs, fstatvfs, openat, FileType, Mode, OFlags, Stat, StatFs, StatVfs, }; use crate::io; +#[cfg(feature = "process")] use crate::process::fchdir; use crate::utils::as_ptr; use alloc::borrow::ToOwned; @@ -100,7 +101,7 @@ .iter() .position(|x| *x == b'\0') .unwrap(); - let name = CStr::from_bytes_with_nul(&self.buf[name_start..][..name_len + 1]).unwrap(); + let name = CStr::from_bytes_with_nul(&self.buf[name_start..][..=name_len]).unwrap(); let name = name.to_owned(); assert!(name.as_bytes().len() <= self.buf.len() - name_start); @@ -174,6 +175,8 @@ } /// `fchdir(self)` + #[cfg(feature = "process")] + #[cfg_attr(doc_cfg, doc(cfg(feature = "process")))] #[inline] pub fn chdir(&self) -> io::Result<()> { fchdir(&self.fd) diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/fs/inotify.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/fs/inotify.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/fs/inotify.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/fs/inotify.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ //! inotify support for working with inotifies -use super::super::c; +use crate::backend::c; use crate::backend::fs::syscalls; use crate::fd::{BorrowedFd, OwnedFd}; use crate::io; @@ -10,6 +10,8 @@ /// `IN_*` for use with [`inotify_init`]. /// /// [`inotify_init`]: crate::fs::inotify::inotify_init + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct CreateFlags: c::c_uint { /// `IN_CLOEXEC` const CLOEXEC = linux_raw_sys::general::IN_CLOEXEC; @@ -22,7 +24,8 @@ /// `IN*` for use with [`inotify_add_watch`]. /// /// [`inotify_add_watch`]: crate::fs::inotify::inotify_add_watch - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct WatchFlags: c::c_uint { /// `IN_ACCESS` const ACCESS = linux_raw_sys::general::IN_ACCESS; @@ -102,8 +105,8 @@ /// `inotify_rm_watch(self, wd)`—Removes a watch from this inotify /// -/// The watch descriptor provided should have previously been returned -/// by [`inotify_add_watch`] and not previously have been removed. +/// The watch descriptor provided should have previously been returned by +/// [`inotify_add_watch`] and not previously have been removed. #[doc(alias = "inotify_rm_watch")] #[inline] pub fn inotify_remove_watch(inot: BorrowedFd<'_>, wd: i32) -> io::Result<()> { diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/fs/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/fs/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/fs/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/fs/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,118 +4,97 @@ //! //! See the `rustix::backend` module documentation for details. #![allow(unsafe_code)] -#![allow(dead_code)] #![allow(clippy::undocumented_unsafe_blocks)] -use super::super::c; -use super::super::conv::fs::oflags_for_open_how; -use super::super::conv::{ +use crate::backend::c; +use crate::backend::conv::fs::oflags_for_open_how; +use crate::backend::conv::{ by_ref, c_int, c_uint, dev_t, opt_mut, pass_usize, raw_fd, ret, ret_c_int, ret_c_uint, ret_infallible, ret_owned_fd, ret_usize, size_of, slice, slice_mut, zero, }; #[cfg(target_pointer_width = "64")] -use super::super::conv::{loff_t, loff_t_from_u64, ret_u64}; +use crate::backend::conv::{loff_t, loff_t_from_u64, ret_u64}; #[cfg(any( target_arch = "aarch64", target_arch = "riscv64", target_arch = "mips64", + target_arch = "mips64r6", target_pointer_width = "32", ))] use crate::fd::AsFd; use crate::fd::{BorrowedFd, OwnedFd}; use crate::ffi::CStr; +#[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))] +use crate::fs::CWD; use crate::fs::{ - inotify, Access, Advice, AtFlags, FallocateFlags, FileType, FlockOperation, MemfdFlags, Mode, - OFlags, RenameFlags, ResolveFlags, SealFlags, Stat, StatFs, StatVfs, StatVfsMountFlags, - StatxFlags, Timestamps, XattrFlags, + inotify, Access, Advice, AtFlags, FallocateFlags, FileType, FlockOperation, Gid, MemfdFlags, + Mode, OFlags, RenameFlags, ResolveFlags, SealFlags, SeekFrom, Stat, StatFs, StatVfs, + StatVfsMountFlags, StatxFlags, Timestamps, Uid, XattrFlags, }; -use crate::io::{self, SeekFrom}; -use crate::process::{Gid, Uid}; -#[cfg(any(target_pointer_width = "32", target_arch = "mips64"))] -use core::convert::TryInto; -use core::mem::{transmute, zeroed, MaybeUninit}; -#[cfg(target_arch = "mips64")] +use crate::io; +use core::mem::MaybeUninit; +#[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))] use linux_raw_sys::general::stat as linux_stat64; use linux_raw_sys::general::{ - __kernel_fsid_t, __kernel_timespec, open_how, statx, AT_EACCESS, AT_FDCWD, AT_REMOVEDIR, - AT_SYMLINK_NOFOLLOW, F_ADD_SEALS, F_GETFL, F_GETLEASE, F_GETOWN, F_GETPIPE_SZ, F_GETSIG, - F_GET_SEALS, F_SETFL, F_SETPIPE_SZ, SEEK_CUR, SEEK_DATA, SEEK_END, SEEK_HOLE, SEEK_SET, + __kernel_fsid_t, open_how, statx, AT_EACCESS, AT_FDCWD, AT_REMOVEDIR, AT_SYMLINK_NOFOLLOW, + F_ADD_SEALS, F_GETFL, F_GET_SEALS, F_SETFL, SEEK_CUR, SEEK_DATA, SEEK_END, SEEK_HOLE, SEEK_SET, STATX__RESERVED, }; +use linux_raw_sys::ioctl::{BLKPBSZGET, BLKSSZGET, EXT4_IOC_RESIZE_FS, FICLONE}; #[cfg(target_pointer_width = "32")] use { - super::super::conv::{hi, lo, slice_just_addr}, + crate::backend::conv::{hi, lo, slice_just_addr}, linux_raw_sys::general::stat64 as linux_stat64, linux_raw_sys::general::timespec as __kernel_old_timespec, }; #[inline] -pub(crate) fn open(filename: &CStr, flags: OFlags, mode: Mode) -> io::Result { +pub(crate) fn open(path: &CStr, flags: OFlags, mode: Mode) -> io::Result { + // Always enable support for large files. + let flags = flags | OFlags::from_bits_retain(c::O_LARGEFILE); + #[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))] { - openat(crate::fs::cwd().as_fd(), filename, flags, mode) - } - #[cfg(all( - target_pointer_width = "32", - not(any(target_arch = "aarch64", target_arch = "riscv64")), - ))] - unsafe { - ret_owned_fd(syscall_readonly!(__NR_open, filename, flags, mode)) + openat(CWD.as_fd(), path, flags, mode) } - #[cfg(all( - target_pointer_width = "64", - not(any(target_arch = "aarch64", target_arch = "riscv64")), - ))] + #[cfg(not(any(target_arch = "aarch64", target_arch = "riscv64")))] unsafe { - ret_owned_fd(syscall_readonly!(__NR_open, filename, flags, mode)) + ret_owned_fd(syscall_readonly!(__NR_open, path, flags, mode)) } } #[inline] pub(crate) fn openat( dirfd: BorrowedFd<'_>, - filename: &CStr, + path: &CStr, flags: OFlags, mode: Mode, ) -> io::Result { - #[cfg(target_pointer_width = "32")] - unsafe { - ret_owned_fd(syscall_readonly!(__NR_openat, dirfd, filename, flags, mode)) - } - #[cfg(target_pointer_width = "64")] - unsafe { - ret_owned_fd(syscall_readonly!(__NR_openat, dirfd, filename, flags, mode)) - } + // Always enable support for large files. + let flags = flags | OFlags::from_bits_retain(c::O_LARGEFILE); + + unsafe { ret_owned_fd(syscall_readonly!(__NR_openat, dirfd, path, flags, mode)) } } #[inline] pub(crate) fn openat2( dirfd: BorrowedFd<'_>, - pathname: &CStr, - flags: OFlags, + path: &CStr, + mut flags: OFlags, mode: Mode, resolve: ResolveFlags, ) -> io::Result { - #[cfg(target_pointer_width = "32")] - unsafe { - ret_owned_fd(syscall_readonly!( - __NR_openat2, - dirfd, - pathname, - by_ref(&open_how { - flags: oflags_for_open_how(flags), - mode: u64::from(mode.bits()), - resolve: resolve.bits(), - }), - size_of::() - )) + // Enable support for large files, but not with `O_PATH` because + // `openat2` doesn't like those flags together. + if !flags.contains(OFlags::PATH) { + flags |= OFlags::from_bits_retain(c::O_LARGEFILE); } - #[cfg(target_pointer_width = "64")] + unsafe { ret_owned_fd(syscall_readonly!( __NR_openat2, dirfd, - pathname, + path, by_ref(&open_how { flags: oflags_for_open_how(flags), mode: u64::from(mode.bits()), @@ -127,12 +106,12 @@ } #[inline] -pub(crate) fn chmod(filename: &CStr, mode: Mode) -> io::Result<()> { +pub(crate) fn chmod(path: &CStr, mode: Mode) -> io::Result<()> { unsafe { ret(syscall_readonly!( __NR_fchmodat, raw_fd(AT_FDCWD), - filename, + path, mode )) } @@ -141,7 +120,7 @@ #[inline] pub(crate) fn chmodat( dirfd: BorrowedFd<'_>, - filename: &CStr, + path: &CStr, mode: Mode, flags: AtFlags, ) -> io::Result<()> { @@ -151,7 +130,7 @@ if !flags.is_empty() { return Err(io::Errno::INVAL); } - unsafe { ret(syscall_readonly!(__NR_fchmodat, dirfd, filename, mode)) } + unsafe { ret(syscall_readonly!(__NR_fchmodat, dirfd, path, mode)) } } #[inline] @@ -162,17 +141,17 @@ #[inline] pub(crate) fn chownat( dirfd: BorrowedFd<'_>, - filename: &CStr, + path: &CStr, owner: Option, group: Option, flags: AtFlags, ) -> io::Result<()> { unsafe { - let (ow, gr) = crate::process::translate_fchown_args(owner, group); + let (ow, gr) = crate::ugid::translate_fchown_args(owner, group); ret(syscall_readonly!( __NR_fchownat, dirfd, - filename, + path, c_uint(ow), c_uint(gr), flags @@ -183,7 +162,7 @@ #[inline] pub(crate) fn fchown(fd: BorrowedFd<'_>, owner: Option, group: Option) -> io::Result<()> { unsafe { - let (ow, gr) = crate::process::translate_fchown_args(owner, group); + let (ow, gr) = crate::ugid::translate_fchown_args(owner, group); ret(syscall_readonly!(__NR_fchown, fd, c_uint(ow), c_uint(gr))) } } @@ -191,7 +170,7 @@ #[inline] pub(crate) fn mknodat( dirfd: BorrowedFd<'_>, - filename: &CStr, + path: &CStr, file_type: FileType, mode: Mode, dev: u64, @@ -201,7 +180,7 @@ ret(syscall_readonly!( __NR_mknodat, dirfd, - filename, + path, (mode, file_type), dev_t(dev)? )) @@ -211,7 +190,7 @@ ret(syscall_readonly!( __NR_mknodat, dirfd, - filename, + path, (mode, file_type), dev_t(dev) )) @@ -228,9 +207,7 @@ } SeekFrom::End(offset) => (SEEK_END, offset), SeekFrom::Current(offset) => (SEEK_CUR, offset), - #[cfg(any(freebsdlike, target_os = "linux", target_os = "solaris"))] SeekFrom::Data(offset) => (SEEK_DATA, offset), - #[cfg(any(freebsdlike, target_os = "linux", target_os = "solaris"))] SeekFrom::Hole(offset) => (SEEK_HOLE, offset), }; _seek(fd, offset, whence) @@ -274,7 +251,12 @@ // #[cfg(all( target_pointer_width = "32", - any(target_arch = "arm", target_arch = "mips", target_arch = "powerpc"), + any( + target_arch = "arm", + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "powerpc" + ), ))] unsafe { ret(syscall_readonly!( @@ -287,7 +269,12 @@ } #[cfg(all( target_pointer_width = "32", - not(any(target_arch = "arm", target_arch = "mips", target_arch = "powerpc")), + not(any( + target_arch = "arm", + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "powerpc" + )), ))] unsafe { ret(syscall_readonly!( @@ -370,7 +357,7 @@ } // On mips, the arguments are not reordered, and padding is inserted // instead to ensure alignment. - #[cfg(target_arch = "mips")] + #[cfg(any(target_arch = "mips", target_arch = "mips32r6"))] unsafe { ret(syscall_readonly!( __NR_fadvise64, @@ -385,7 +372,12 @@ } #[cfg(all( target_pointer_width = "32", - not(any(target_arch = "arm", target_arch = "mips", target_arch = "powerpc")), + not(any( + target_arch = "arm", + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "powerpc" + )), ))] unsafe { ret(syscall_readonly!( @@ -449,7 +441,11 @@ // And, some old platforms don't support `statx`, and some fail with a // confusing error code, so we call `crate::fs::statx` to handle that. If // `statx` isn't available, fall back to the buggy system call. - #[cfg(any(target_pointer_width = "32", target_arch = "mips64"))] + #[cfg(any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6" + ))] { match crate::fs::statx(fd, cstr!(""), AtFlags::EMPTY_PATH, StatxFlags::BASIC_STATS) { Ok(x) => statx_to_stat(x), @@ -458,7 +454,11 @@ } } - #[cfg(all(target_pointer_width = "64", not(target_arch = "mips64")))] + #[cfg(all( + target_pointer_width = "64", + not(target_arch = "mips64"), + not(target_arch = "mips64r6") + ))] unsafe { let mut result = MaybeUninit::::uninit(); ret(syscall!(__NR_fstat, fd, &mut result))?; @@ -466,11 +466,15 @@ } } -#[cfg(any(target_pointer_width = "32", target_arch = "mips64"))] +#[cfg(any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6", +))] fn fstat_old(fd: BorrowedFd<'_>) -> io::Result { let mut result = MaybeUninit::::uninit(); - #[cfg(target_arch = "mips64")] + #[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))] unsafe { ret(syscall!(__NR_fstat, fd, &mut result))?; stat_to_stat(result.assume_init()) @@ -484,29 +488,37 @@ } #[inline] -pub(crate) fn stat(filename: &CStr) -> io::Result { +pub(crate) fn stat(path: &CStr) -> io::Result { // See the comments in `fstat` about using `crate::fs::statx` here. - #[cfg(any(target_pointer_width = "32", target_arch = "mips64"))] + #[cfg(any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6" + ))] { match crate::fs::statx( - crate::fs::cwd().as_fd(), - filename, + crate::fs::CWD.as_fd(), + path, AtFlags::empty(), StatxFlags::BASIC_STATS, ) { Ok(x) => statx_to_stat(x), - Err(io::Errno::NOSYS) => stat_old(filename), + Err(io::Errno::NOSYS) => stat_old(path), Err(err) => Err(err), } } - #[cfg(all(target_pointer_width = "64", not(target_arch = "mips64")))] + #[cfg(all( + target_pointer_width = "64", + not(target_arch = "mips64"), + not(target_arch = "mips64r6"), + ))] unsafe { let mut result = MaybeUninit::::uninit(); ret(syscall!( __NR_newfstatat, raw_fd(AT_FDCWD), - filename, + path, &mut result, c_uint(0) ))?; @@ -514,16 +526,20 @@ } } -#[cfg(any(target_pointer_width = "32", target_arch = "mips64"))] -fn stat_old(filename: &CStr) -> io::Result { +#[cfg(any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6" +))] +fn stat_old(path: &CStr) -> io::Result { let mut result = MaybeUninit::::uninit(); - #[cfg(target_arch = "mips64")] + #[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))] unsafe { ret(syscall!( __NR_newfstatat, raw_fd(AT_FDCWD), - filename, + path, &mut result, c_uint(0) ))?; @@ -535,7 +551,7 @@ ret(syscall!( __NR_fstatat64, raw_fd(AT_FDCWD), - filename, + path, &mut result, c_uint(0) ))?; @@ -544,73 +560,67 @@ } #[inline] -pub(crate) fn statat(dirfd: BorrowedFd<'_>, filename: &CStr, flags: AtFlags) -> io::Result { +pub(crate) fn statat(dirfd: BorrowedFd<'_>, path: &CStr, flags: AtFlags) -> io::Result { // See the comments in `fstat` about using `crate::fs::statx` here. - #[cfg(any(target_pointer_width = "32", target_arch = "mips64"))] + #[cfg(any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6" + ))] { - match crate::fs::statx(dirfd, filename, flags, StatxFlags::BASIC_STATS) { + match crate::fs::statx(dirfd, path, flags, StatxFlags::BASIC_STATS) { Ok(x) => statx_to_stat(x), - Err(io::Errno::NOSYS) => statat_old(dirfd, filename, flags), + Err(io::Errno::NOSYS) => statat_old(dirfd, path, flags), Err(err) => Err(err), } } - #[cfg(all(target_pointer_width = "64", not(target_arch = "mips64")))] + #[cfg(all( + target_pointer_width = "64", + not(target_arch = "mips64"), + not(target_arch = "mips64r6"), + ))] unsafe { let mut result = MaybeUninit::::uninit(); - ret(syscall!( - __NR_newfstatat, - dirfd, - filename, - &mut result, - flags - ))?; + ret(syscall!(__NR_newfstatat, dirfd, path, &mut result, flags))?; Ok(result.assume_init()) } } -#[cfg(any(target_pointer_width = "32", target_arch = "mips64"))] -fn statat_old(dirfd: BorrowedFd<'_>, filename: &CStr, flags: AtFlags) -> io::Result { +#[cfg(any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6" +))] +fn statat_old(dirfd: BorrowedFd<'_>, path: &CStr, flags: AtFlags) -> io::Result { let mut result = MaybeUninit::::uninit(); - #[cfg(target_arch = "mips64")] + #[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))] unsafe { - ret(syscall!( - __NR_newfstatat, - dirfd, - filename, - &mut result, - flags - ))?; + ret(syscall!(__NR_newfstatat, dirfd, path, &mut result, flags))?; stat_to_stat(result.assume_init()) } #[cfg(target_pointer_width = "32")] unsafe { - ret(syscall!( - __NR_fstatat64, - dirfd, - filename, - &mut result, - flags - ))?; + ret(syscall!(__NR_fstatat64, dirfd, path, &mut result, flags))?; stat_to_stat(result.assume_init()) } } #[inline] -pub(crate) fn lstat(filename: &CStr) -> io::Result { +pub(crate) fn lstat(path: &CStr) -> io::Result { // See the comments in `fstat` about using `crate::fs::statx` here. #[cfg(any(target_pointer_width = "32", target_arch = "mips64"))] { match crate::fs::statx( - crate::fs::cwd().as_fd(), - filename, + crate::fs::CWD.as_fd(), + path, AtFlags::SYMLINK_NOFOLLOW, StatxFlags::BASIC_STATS, ) { Ok(x) => statx_to_stat(x), - Err(io::Errno::NOSYS) => lstat_old(filename), + Err(io::Errno::NOSYS) => lstat_old(path), Err(err) => Err(err), } } @@ -621,7 +631,7 @@ ret(syscall!( __NR_newfstatat, raw_fd(AT_FDCWD), - filename, + path, &mut result, c_uint(AT_SYMLINK_NOFOLLOW) ))?; @@ -630,15 +640,15 @@ } #[cfg(any(target_pointer_width = "32", target_arch = "mips64"))] -fn lstat_old(filename: &CStr) -> io::Result { +fn lstat_old(path: &CStr) -> io::Result { let mut result = MaybeUninit::::uninit(); - #[cfg(target_arch = "mips64")] + #[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))] unsafe { ret(syscall!( __NR_newfstatat, raw_fd(AT_FDCWD), - filename, + path, &mut result, c_uint(AT_SYMLINK_NOFOLLOW) ))?; @@ -650,7 +660,7 @@ ret(syscall!( __NR_fstatat64, raw_fd(AT_FDCWD), - filename, + path, &mut result, c_uint(AT_SYMLINK_NOFOLLOW) ))?; @@ -659,7 +669,11 @@ } /// Convert from a Linux `statx` value to rustix's `Stat`. -#[cfg(any(target_pointer_width = "32", target_arch = "mips64"))] +#[cfg(any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6" +))] fn statx_to_stat(x: crate::fs::Statx) -> io::Result { Ok(Stat { st_dev: crate::fs::makedev(x.stx_dev_major, x.stx_dev_minor), @@ -726,7 +740,7 @@ } /// Convert from a Linux `stat` value to rustix's `Stat`. -#[cfg(target_arch = "mips64")] +#[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))] fn stat_to_stat(s: linux_raw_sys::general::stat) -> io::Result { Ok(Stat { st_dev: s.st_dev.try_into().map_err(|_| io::Errno::OVERFLOW)?, @@ -760,7 +774,7 @@ #[inline] pub(crate) fn statx( dirfd: BorrowedFd<'_>, - pathname: &CStr, + path: &CStr, flags: AtFlags, mask: StatxFlags, ) -> io::Result { @@ -787,7 +801,7 @@ ret(syscall!( __NR_statx, dirfd, - pathname, + path, flags, mask, &mut statx_buf @@ -847,13 +861,13 @@ } #[inline] -pub(crate) fn statfs(filename: &CStr) -> io::Result { +pub(crate) fn statfs(path: &CStr) -> io::Result { #[cfg(target_pointer_width = "32")] unsafe { let mut result = MaybeUninit::::uninit(); ret(syscall!( __NR_statfs64, - filename, + path, size_of::(), &mut result ))?; @@ -862,16 +876,16 @@ #[cfg(target_pointer_width = "64")] unsafe { let mut result = MaybeUninit::::uninit(); - ret(syscall!(__NR_statfs, filename, &mut result))?; + ret(syscall!(__NR_statfs, path, &mut result))?; Ok(result.assume_init()) } } #[inline] -pub(crate) fn statvfs(filename: &CStr) -> io::Result { +pub(crate) fn statvfs(path: &CStr) -> io::Result { // Linux doesn't have a `statvfs` syscall; we have to do `statfs` and // translate the fields as best we can. - let statfs = statfs(filename)?; + let statfs = statfs(path)?; Ok(statfs_to_statvfs(statfs)) } @@ -893,8 +907,8 @@ f_files: statfs.f_files as u64, f_ffree: statfs.f_ffree as u64, f_favail: statfs.f_ffree as u64, - f_fsid: f_fsid_val0 as u32 as u64 | ((f_fsid_val1 as u32 as u64) << 32), - f_flag: unsafe { StatVfsMountFlags::from_bits_unchecked(statfs.f_flags as u64) }, + f_fsid: u64::from(f_fsid_val0 as u32) | u64::from(f_fsid_val1 as u32) << 32, + f_flag: StatVfsMountFlags::from_bits_retain(statfs.f_flags as u64), f_namemax: statfs.f_namelen as u64, } } @@ -914,7 +928,11 @@ } #[inline] -pub(crate) fn readlinkat(dirfd: BorrowedFd<'_>, path: &CStr, buf: &mut [u8]) -> io::Result { +pub(crate) fn readlinkat( + dirfd: BorrowedFd<'_>, + path: &CStr, + buf: &mut [MaybeUninit], +) -> io::Result { let (buf_addr_mut, buf_len) = slice_mut(buf); unsafe { ret_usize(syscall!( @@ -932,17 +950,19 @@ #[cfg(target_pointer_width = "32")] unsafe { ret_c_uint(syscall_readonly!(__NR_fcntl64, fd, c_uint(F_GETFL))) - .map(OFlags::from_bits_truncate) + .map(OFlags::from_bits_retain) } #[cfg(target_pointer_width = "64")] unsafe { - ret_c_uint(syscall_readonly!(__NR_fcntl, fd, c_uint(F_GETFL))) - .map(OFlags::from_bits_truncate) + ret_c_uint(syscall_readonly!(__NR_fcntl, fd, c_uint(F_GETFL))).map(OFlags::from_bits_retain) } } #[inline] pub(crate) fn fcntl_setfl(fd: BorrowedFd<'_>, flags: OFlags) -> io::Result<()> { + // Always enable support for large files. + let flags = flags | OFlags::from_bits_retain(c::O_LARGEFILE); + #[cfg(target_pointer_width = "32")] unsafe { ret(syscall_readonly!(__NR_fcntl64, fd, c_uint(F_SETFL), flags)) @@ -954,86 +974,16 @@ } #[inline] -pub(crate) fn fcntl_getlease(fd: BorrowedFd<'_>) -> io::Result { - #[cfg(target_pointer_width = "32")] - unsafe { - ret_c_int(syscall_readonly!(__NR_fcntl64, fd, c_uint(F_GETLEASE))) - } - #[cfg(target_pointer_width = "64")] - unsafe { - ret_c_int(syscall_readonly!(__NR_fcntl, fd, c_uint(F_GETLEASE))) - } -} - -#[inline] -pub(crate) fn fcntl_getown(fd: BorrowedFd<'_>) -> io::Result { - #[cfg(target_pointer_width = "32")] - unsafe { - ret_c_int(syscall_readonly!(__NR_fcntl64, fd, c_uint(F_GETOWN))) - } - #[cfg(target_pointer_width = "64")] - unsafe { - ret_c_int(syscall_readonly!(__NR_fcntl, fd, c_uint(F_GETOWN))) - } -} - -#[inline] -pub(crate) fn fcntl_getsig(fd: BorrowedFd<'_>) -> io::Result { - #[cfg(target_pointer_width = "32")] - unsafe { - ret_c_int(syscall_readonly!(__NR_fcntl64, fd, c_uint(F_GETSIG))) - } - #[cfg(target_pointer_width = "64")] - unsafe { - ret_c_int(syscall_readonly!(__NR_fcntl, fd, c_uint(F_GETSIG))) - } -} - -#[inline] -pub(crate) fn fcntl_getpipe_sz(fd: BorrowedFd<'_>) -> io::Result { - #[cfg(target_pointer_width = "32")] - unsafe { - ret_usize(syscall_readonly!(__NR_fcntl64, fd, c_uint(F_GETPIPE_SZ))) - } - #[cfg(target_pointer_width = "64")] - unsafe { - ret_usize(syscall_readonly!(__NR_fcntl, fd, c_uint(F_GETPIPE_SZ))) - } -} - -#[inline] -pub(crate) fn fcntl_setpipe_sz(fd: BorrowedFd<'_>, size: c::c_int) -> io::Result { - #[cfg(target_pointer_width = "32")] - unsafe { - ret_usize(syscall_readonly!( - __NR_fcntl64, - fd, - c_uint(F_SETPIPE_SZ), - c_int(size) - )) - } - #[cfg(target_pointer_width = "64")] - unsafe { - ret_usize(syscall_readonly!( - __NR_fcntl, - fd, - c_uint(F_SETPIPE_SZ), - c_int(size) - )) - } -} - -#[inline] pub(crate) fn fcntl_get_seals(fd: BorrowedFd<'_>) -> io::Result { #[cfg(target_pointer_width = "32")] unsafe { ret_c_int(syscall_readonly!(__NR_fcntl64, fd, c_uint(F_GET_SEALS))) - .map(|seals| SealFlags::from_bits_unchecked(seals as u32)) + .map(|seals| SealFlags::from_bits_retain(seals as u32)) } #[cfg(target_pointer_width = "64")] unsafe { ret_c_int(syscall_readonly!(__NR_fcntl, fd, c_uint(F_GET_SEALS))) - .map(|seals| SealFlags::from_bits_unchecked(seals as u32)) + .map(|seals| SealFlags::from_bits_retain(seals as u32)) } } @@ -1076,51 +1026,50 @@ FlockOperation::NonBlockingUnlock => (F_SETLK, F_UNLCK), }; - unsafe { - let lock = flock { - l_type: l_type as _, + let lock = flock { + l_type: l_type as _, - // When `l_len` is zero, this locks all the bytes from - // `l_whence`/`l_start` to the end of the file, even as the - // file grows dynamically. - l_whence: SEEK_SET as _, - l_start: 0, - l_len: 0, - - ..zeroed() - }; - - #[cfg(target_pointer_width = "32")] - { - ret(syscall_readonly!( - __NR_fcntl64, - fd, - c_uint(cmd), - by_ref(&lock) - )) - } - #[cfg(target_pointer_width = "64")] - { - ret(syscall_readonly!( - __NR_fcntl, - fd, - c_uint(cmd), - by_ref(&lock) - )) - } + // When `l_len` is zero, this locks all the bytes from + // `l_whence`/`l_start` to the end of the file, even as the + // file grows dynamically. + l_whence: SEEK_SET as _, + l_start: 0, + l_len: 0, + + // Unused. + l_pid: 0, + }; + + #[cfg(target_pointer_width = "32")] + unsafe { + ret(syscall_readonly!( + __NR_fcntl64, + fd, + c_uint(cmd), + by_ref(&lock) + )) + } + #[cfg(target_pointer_width = "64")] + unsafe { + ret(syscall_readonly!( + __NR_fcntl, + fd, + c_uint(cmd), + by_ref(&lock) + )) } } #[inline] -pub(crate) fn rename(oldname: &CStr, newname: &CStr) -> io::Result<()> { +pub(crate) fn rename(old_path: &CStr, new_path: &CStr) -> io::Result<()> { #[cfg(target_arch = "riscv64")] unsafe { ret(syscall_readonly!( __NR_renameat2, raw_fd(AT_FDCWD), - oldname, + old_path, raw_fd(AT_FDCWD), - newname, + new_path, c_uint(0) )) } @@ -1129,9 +1078,9 @@ ret(syscall_readonly!( __NR_renameat, raw_fd(AT_FDCWD), - oldname, + old_path, raw_fd(AT_FDCWD), - newname + new_path )) } } @@ -1139,18 +1088,18 @@ #[inline] pub(crate) fn renameat( old_dirfd: BorrowedFd<'_>, - oldname: &CStr, + old_path: &CStr, new_dirfd: BorrowedFd<'_>, - newname: &CStr, + new_path: &CStr, ) -> io::Result<()> { #[cfg(target_arch = "riscv64")] unsafe { ret(syscall_readonly!( __NR_renameat2, old_dirfd, - oldname, + old_path, new_dirfd, - newname, + new_path, c_uint(0) )) } @@ -1159,9 +1108,9 @@ ret(syscall_readonly!( __NR_renameat, old_dirfd, - oldname, + old_path, new_dirfd, - newname + new_path )) } } @@ -1169,61 +1118,61 @@ #[inline] pub(crate) fn renameat2( old_dirfd: BorrowedFd<'_>, - oldname: &CStr, + old_path: &CStr, new_dirfd: BorrowedFd<'_>, - newname: &CStr, + new_path: &CStr, flags: RenameFlags, ) -> io::Result<()> { unsafe { ret(syscall_readonly!( __NR_renameat2, old_dirfd, - oldname, + old_path, new_dirfd, - newname, + new_path, flags )) } } #[inline] -pub(crate) fn unlink(pathname: &CStr) -> io::Result<()> { +pub(crate) fn unlink(path: &CStr) -> io::Result<()> { unsafe { ret(syscall_readonly!( __NR_unlinkat, raw_fd(AT_FDCWD), - pathname, + path, c_uint(0) )) } } #[inline] -pub(crate) fn unlinkat(dirfd: BorrowedFd<'_>, pathname: &CStr, flags: AtFlags) -> io::Result<()> { - unsafe { ret(syscall_readonly!(__NR_unlinkat, dirfd, pathname, flags)) } +pub(crate) fn unlinkat(dirfd: BorrowedFd<'_>, path: &CStr, flags: AtFlags) -> io::Result<()> { + unsafe { ret(syscall_readonly!(__NR_unlinkat, dirfd, path, flags)) } } #[inline] -pub(crate) fn rmdir(pathname: &CStr) -> io::Result<()> { +pub(crate) fn rmdir(path: &CStr) -> io::Result<()> { unsafe { ret(syscall_readonly!( __NR_unlinkat, raw_fd(AT_FDCWD), - pathname, + path, c_uint(AT_REMOVEDIR) )) } } #[inline] -pub(crate) fn link(oldname: &CStr, newname: &CStr) -> io::Result<()> { +pub(crate) fn link(old_path: &CStr, new_path: &CStr) -> io::Result<()> { unsafe { ret(syscall_readonly!( __NR_linkat, raw_fd(AT_FDCWD), - oldname, + old_path, raw_fd(AT_FDCWD), - newname, + new_path, c_uint(0) )) } @@ -1232,55 +1181,55 @@ #[inline] pub(crate) fn linkat( old_dirfd: BorrowedFd<'_>, - oldname: &CStr, + old_path: &CStr, new_dirfd: BorrowedFd<'_>, - newname: &CStr, + new_path: &CStr, flags: AtFlags, ) -> io::Result<()> { unsafe { ret(syscall_readonly!( __NR_linkat, old_dirfd, - oldname, + old_path, new_dirfd, - newname, + new_path, flags )) } } #[inline] -pub(crate) fn symlink(oldname: &CStr, newname: &CStr) -> io::Result<()> { +pub(crate) fn symlink(old_path: &CStr, new_path: &CStr) -> io::Result<()> { unsafe { ret(syscall_readonly!( __NR_symlinkat, - oldname, + old_path, raw_fd(AT_FDCWD), - newname + new_path )) } } #[inline] -pub(crate) fn symlinkat(oldname: &CStr, dirfd: BorrowedFd<'_>, newname: &CStr) -> io::Result<()> { - unsafe { ret(syscall_readonly!(__NR_symlinkat, oldname, dirfd, newname)) } +pub(crate) fn symlinkat(old_path: &CStr, dirfd: BorrowedFd<'_>, new_path: &CStr) -> io::Result<()> { + unsafe { ret(syscall_readonly!(__NR_symlinkat, old_path, dirfd, new_path)) } } #[inline] -pub(crate) fn mkdir(pathname: &CStr, mode: Mode) -> io::Result<()> { +pub(crate) fn mkdir(path: &CStr, mode: Mode) -> io::Result<()> { unsafe { ret(syscall_readonly!( __NR_mkdirat, raw_fd(AT_FDCWD), - pathname, + path, mode )) } } #[inline] -pub(crate) fn mkdirat(dirfd: BorrowedFd<'_>, pathname: &CStr, mode: Mode) -> io::Result<()> { - unsafe { ret(syscall_readonly!(__NR_mkdirat, dirfd, pathname, mode)) } +pub(crate) fn mkdirat(dirfd: BorrowedFd<'_>, path: &CStr, mode: Mode) -> io::Result<()> { + unsafe { ret(syscall_readonly!(__NR_mkdirat, dirfd, path, mode)) } } #[inline] @@ -1303,23 +1252,20 @@ #[inline] pub(crate) fn utimensat( dirfd: BorrowedFd<'_>, - pathname: &CStr, + path: &CStr, times: &Timestamps, flags: AtFlags, ) -> io::Result<()> { - _utimensat(dirfd, Some(pathname), times, flags) + _utimensat(dirfd, Some(path), times, flags) } #[inline] fn _utimensat( dirfd: BorrowedFd<'_>, - pathname: Option<&CStr>, + path: Option<&CStr>, times: &Timestamps, flags: AtFlags, ) -> io::Result<()> { - // Assert that `Timestamps` has the expected layout. - let _ = unsafe { transmute::(times.clone()) }; - // `utimensat_time64` was introduced in Linux 5.1. The old `utimensat` // syscall is not y2038-compatible on 32-bit architectures. #[cfg(target_pointer_width = "32")] @@ -1327,11 +1273,11 @@ match ret(syscall_readonly!( __NR_utimensat_time64, dirfd, - pathname, + path, by_ref(times), flags )) { - Err(io::Errno::NOSYS) => _utimensat_old(dirfd, pathname, times, flags), + Err(io::Errno::NOSYS) => _utimensat_old(dirfd, path, times, flags), otherwise => otherwise, } } @@ -1340,7 +1286,7 @@ ret(syscall_readonly!( __NR_utimensat, dirfd, - pathname, + path, by_ref(times), flags )) @@ -1350,7 +1296,7 @@ #[cfg(target_pointer_width = "32")] unsafe fn _utimensat_old( dirfd: BorrowedFd<'_>, - pathname: Option<&CStr>, + path: Option<&CStr>, times: &Timestamps, flags: AtFlags, ) -> io::Result<()> { @@ -1387,7 +1333,7 @@ ret(syscall_readonly!( __NR_utimensat, dirfd, - pathname, + path, old_times_addr, flags )) @@ -1398,6 +1344,19 @@ _utimensat(fd, None, times, AtFlags::empty()) } +#[inline] +pub(crate) fn access(path: &CStr, access: Access) -> io::Result<()> { + #[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))] + { + accessat_noflags(CWD.as_fd(), path, access) + } + + #[cfg(not(any(target_arch = "aarch64", target_arch = "riscv64")))] + unsafe { + ret(syscall_readonly!(__NR_access, path, access)) + } +} + pub(crate) fn accessat( dirfd: BorrowedFd<'_>, path: &CStr, @@ -1436,16 +1395,23 @@ // `AT_EACCESS` and we're not setuid or setgid, we can emulate it. if flags.is_empty() || (flags.bits() == AT_EACCESS - && crate::process::getuid() == crate::process::geteuid() - && crate::process::getgid() == crate::process::getegid()) + && crate::backend::ugid::syscalls::getuid() + == crate::backend::ugid::syscalls::geteuid() + && crate::backend::ugid::syscalls::getgid() + == crate::backend::ugid::syscalls::getegid()) { - return unsafe { ret(syscall_readonly!(__NR_faccessat, dirfd, path, access)) }; + return accessat_noflags(dirfd, path, access); } Err(io::Errno::NOSYS) } #[inline] +fn accessat_noflags(dirfd: BorrowedFd<'_>, path: &CStr, access: Access) -> io::Result<()> { + unsafe { ret(syscall_readonly!(__NR_faccessat, dirfd, path, access)) } +} + +#[inline] pub(crate) fn copy_file_range( fd_in: BorrowedFd<'_>, off_in: Option<&mut u64>, @@ -1501,33 +1467,6 @@ } #[inline] -#[cfg(linux_kernel)] -pub(crate) fn mount( - source: Option<&CStr>, - target: &CStr, - file_system_type: Option<&CStr>, - flags: super::types::MountFlagsArg, - data: Option<&CStr>, -) -> io::Result<()> { - unsafe { - ret(syscall_readonly!( - __NR_mount, - source, - target, - file_system_type, - flags, - data - )) - } -} - -#[inline] -#[cfg(linux_kernel)] -pub(crate) fn unmount(target: &CStr, flags: super::types::UnmountFlags) -> io::Result<()> { - unsafe { ret(syscall_readonly!(__NR_umount2, target, flags)) } -} - -#[inline] pub(crate) fn inotify_init1(flags: inotify::CreateFlags) -> io::Result { unsafe { ret_owned_fd(syscall_readonly!(__NR_inotify_init1, flags)) } } @@ -1680,3 +1619,46 @@ pub(crate) fn fremovexattr(fd: BorrowedFd<'_>, name: &CStr) -> io::Result<()> { unsafe { ret(syscall_readonly!(__NR_fremovexattr, fd, name)) } } + +#[inline] +pub(crate) fn ioctl_blksszget(fd: BorrowedFd) -> io::Result { + let mut result = MaybeUninit::::uninit(); + unsafe { + ret(syscall!(__NR_ioctl, fd, c_uint(BLKSSZGET), &mut result))?; + Ok(result.assume_init() as u32) + } +} + +#[inline] +pub(crate) fn ioctl_blkpbszget(fd: BorrowedFd) -> io::Result { + let mut result = MaybeUninit::::uninit(); + unsafe { + ret(syscall!(__NR_ioctl, fd, c_uint(BLKPBSZGET), &mut result))?; + Ok(result.assume_init() as u32) + } +} + +#[inline] +pub(crate) fn ioctl_ficlone(fd: BorrowedFd<'_>, src_fd: BorrowedFd<'_>) -> io::Result<()> { + unsafe { ret(syscall_readonly!(__NR_ioctl, fd, c_uint(FICLONE), src_fd)) } +} + +#[inline] +pub(crate) fn ext4_ioc_resize_fs(fd: BorrowedFd<'_>, blocks: u64) -> io::Result<()> { + unsafe { + ret(syscall_readonly!( + __NR_ioctl, + fd, + c_uint(EXT4_IOC_RESIZE_FS), + by_ref(&blocks) + )) + } +} + +#[test] +fn test_sizes() { + assert_eq_size!(linux_raw_sys::general::__kernel_loff_t, u64); + + // Assert that `Timestamps` has the expected layout. + assert_eq_size!([linux_raw_sys::general::__kernel_timespec; 2], Timestamps); +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/fs/types.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/fs/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/fs/types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/fs/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,12 @@ -use super::super::c; +use crate::backend::c; use bitflags::bitflags; bitflags! { /// `*_OK` constants for use with [`accessat`]. /// /// [`accessat`]: fn.accessat.html + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct Access: c::c_uint { /// `R_OK` const READ_OK = linux_raw_sys::general::R_OK; @@ -26,22 +28,27 @@ /// /// [`openat`]: crate::fs::openat /// [`statat`]: crate::fs::statat + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct AtFlags: c::c_uint { + /// `AT_SYMLINK_NOFOLLOW` + const SYMLINK_NOFOLLOW = linux_raw_sys::general::AT_SYMLINK_NOFOLLOW; + + /// `AT_EACCESS` + const EACCESS = linux_raw_sys::general::AT_EACCESS; + /// `AT_REMOVEDIR` const REMOVEDIR = linux_raw_sys::general::AT_REMOVEDIR; /// `AT_SYMLINK_FOLLOW` const SYMLINK_FOLLOW = linux_raw_sys::general::AT_SYMLINK_FOLLOW; - /// `AT_SYMLINK_NOFOLLOW` - const SYMLINK_NOFOLLOW = linux_raw_sys::general::AT_SYMLINK_NOFOLLOW; + /// `AT_NO_AUTOMOUNT` + const NO_AUTOMOUNT = linux_raw_sys::general::AT_NO_AUTOMOUNT; /// `AT_EMPTY_PATH` const EMPTY_PATH = linux_raw_sys::general::AT_EMPTY_PATH; - /// `AT_EACCESS` - const EACCESS = linux_raw_sys::general::AT_EACCESS; - /// `AT_STATX_SYNC_AS_STAT` const STATX_SYNC_AS_STAT = linux_raw_sys::general::AT_STATX_SYNC_AS_STAT; @@ -59,6 +66,8 @@ /// [`openat`]: crate::fs::openat /// [`chmodat`]: crate::fs::chmodat /// [`fchmod`]: crate::fs::fchmod + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct Mode: RawMode { /// `S_IRWXU` const RWXU = linux_raw_sys::general::S_IRWXU; @@ -152,6 +161,8 @@ /// `O_*` constants for use with [`openat`]. /// /// [`openat`]: crate::fs::openat + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct OFlags: c::c_uint { /// `O_ACCMODE` const ACCMODE = linux_raw_sys::general::O_ACCMODE; @@ -199,6 +210,8 @@ const WRONLY = linux_raw_sys::general::O_WRONLY; /// `O_RDWR` + /// + /// This is not equal to `RDONLY | WRONLY`. It's a distinct flag. const RDWR = linux_raw_sys::general::O_RDWR; /// `O_NOCTTY` @@ -234,7 +247,8 @@ /// `RESOLVE_*` constants for use with [`openat2`]. /// /// [`openat2`]: crate::fs::openat2 - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct ResolveFlags: u64 { /// `RESOLVE_NO_XDEV` const NO_XDEV = linux_raw_sys::general::RESOLVE_NO_XDEV as u64; @@ -260,6 +274,8 @@ /// `RENAME_*` constants for use with [`renameat_with`]. /// /// [`renameat_with`]: crate::fs::renameat_with + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct RenameFlags: c::c_uint { /// `RENAME_EXCHANGE` const EXCHANGE = linux_raw_sys::general::RENAME_EXCHANGE; @@ -382,6 +398,8 @@ /// `MFD_*` constants for use with [`memfd_create`]. /// /// [`memfd_create`]: crate::fs::memfd_create + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct MemfdFlags: c::c_uint { /// `MFD_CLOEXEC` const CLOEXEC = linux_raw_sys::general::MFD_CLOEXEC; @@ -425,6 +443,8 @@ /// /// [`fcntl_add_seals`]: crate::fs::fcntl_add_seals /// [`fcntl_get_seals`]: crate::fs::fcntl_get_seals + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct SealFlags: u32 { /// `F_SEAL_SEAL`. const SEAL = linux_raw_sys::general::F_SEAL_SEAL; @@ -443,6 +463,8 @@ /// `STATX_*` constants for use with [`statx`]. /// /// [`statx`]: crate::fs::statx + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct StatxFlags: u32 { /// `STATX_TYPE` const TYPE = linux_raw_sys::general::STATX_TYPE; @@ -486,6 +508,9 @@ /// `STATX_MNT_ID` (since Linux 5.8) const MNT_ID = linux_raw_sys::general::STATX_MNT_ID; + /// `STATX_DIOALIGN` (since Linux 6.1) + const DIOALIGN = linux_raw_sys::general::STATX_DIOALIGN; + /// `STATX_ALL` const ALL = linux_raw_sys::general::STATX_ALL; } @@ -495,6 +520,8 @@ /// `FALLOC_FL_*` constants for use with [`fallocate`]. /// /// [`fallocate`]: crate::fs::fallocate + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct FallocateFlags: u32 { /// `FALLOC_FL_KEEP_SIZE` const KEEP_SIZE = linux_raw_sys::general::FALLOC_FL_KEEP_SIZE; @@ -515,6 +542,8 @@ bitflags! { /// `ST_*` constants for use with [`StatVfs`]. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct StatVfsMountFlags: u64 { /// `ST_MANDLOCK` const MANDLOCK = linux_raw_sys::general::MS_MANDLOCK as u64; @@ -573,7 +602,11 @@ // On 32-bit, and mips64, Linux's `struct stat64` has a 32-bit `st_mtime` and // friends, so we use our own struct, populated from `statx` where possible, to // avoid the y2038 bug. -#[cfg(any(target_pointer_width = "32", target_arch = "mips64"))] +#[cfg(any( + target_pointer_width = "32", + target_arch = "mips64", + target_arch = "mips64r6" +))] #[repr(C)] #[derive(Debug, Copy, Clone)] #[allow(missing_docs)] @@ -600,7 +633,11 @@ /// /// [`statat`]: crate::fs::statat /// [`fstat`]: crate::fs::fstat -#[cfg(all(target_pointer_width = "64", not(target_arch = "mips64")))] +#[cfg(all( + target_pointer_width = "64", + not(target_arch = "mips64"), + not(target_arch = "mips64r6") +))] pub type Stat = linux_raw_sys::general::stat; /// `struct statfs` for use with [`statfs`] and [`fstatfs`]. @@ -661,113 +698,9 @@ pub type Dev = u64; /// `__fsword_t` -#[cfg(not(target_arch = "mips64"))] +#[cfg(not(any(target_arch = "mips64", target_arch = "mips64r6")))] pub type FsWord = linux_raw_sys::general::__fsword_t; /// `__fsword_t` -#[cfg(target_arch = "mips64")] +#[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))] pub type FsWord = i64; - -#[cfg(linux_kernel)] -bitflags! { - /// `MS_*` constants for use with [`mount`]. - /// - /// [`mount`]: crate::fs::mount - pub struct MountFlags: c::c_uint { - /// `MS_BIND` - const BIND = linux_raw_sys::general::MS_BIND; - - /// `MS_DIRSYNC` - const DIRSYNC = linux_raw_sys::general::MS_DIRSYNC; - - /// `MS_LAZYTIME` - const LAZYTIME = linux_raw_sys::general::MS_LAZYTIME; - - /// `MS_MANDLOCK` - #[doc(alias = "MANDLOCK")] - const PERMIT_MANDATORY_FILE_LOCKING = linux_raw_sys::general::MS_MANDLOCK; - - /// `MS_NOATIME` - const NOATIME = linux_raw_sys::general::MS_NOATIME; - - /// `MS_NODEV` - const NODEV = linux_raw_sys::general::MS_NODEV; - - /// `MS_NODIRATIME` - const NODIRATIME = linux_raw_sys::general::MS_NODIRATIME; - - /// `MS_NOEXEC` - const NOEXEC = linux_raw_sys::general::MS_NOEXEC; - - /// `MS_NOSUID` - const NOSUID = linux_raw_sys::general::MS_NOSUID; - - /// `MS_RDONLY` - const RDONLY = linux_raw_sys::general::MS_RDONLY; - - /// `MS_REC` - const REC = linux_raw_sys::general::MS_REC; - - /// `MS_RELATIME` - const RELATIME = linux_raw_sys::general::MS_RELATIME; - - /// `MS_SILENT` - const SILENT = linux_raw_sys::general::MS_SILENT; - - /// `MS_STRICTATIME` - const STRICTATIME = linux_raw_sys::general::MS_STRICTATIME; - - /// `MS_SYNCHRONOUS` - const SYNCHRONOUS = linux_raw_sys::general::MS_SYNCHRONOUS; - - /// `MS_NOSYMFOLLOW` - const NOSYMFOLLOW = linux_raw_sys::general::MS_NOSYMFOLLOW; - } -} - -#[cfg(linux_kernel)] -bitflags! { - /// `MS_*` constants for use with [`change_mount`]. - /// - /// [`change_mount`]: crate::fs::mount::change_mount - pub struct MountPropagationFlags: c::c_uint { - /// `MS_SHARED` - const SHARED = linux_raw_sys::general::MS_SHARED; - /// `MS_PRIVATE` - const PRIVATE = linux_raw_sys::general::MS_PRIVATE; - /// `MS_SLAVE` - const SLAVE = linux_raw_sys::general::MS_SLAVE; - /// `MS_UNBINDABLE` - const UNBINDABLE = linux_raw_sys::general::MS_UNBINDABLE; - /// `MS_REC` - const REC = linux_raw_sys::general::MS_REC; - } -} - -#[cfg(linux_kernel)] -bitflags! { - pub(crate) struct InternalMountFlags: c::c_uint { - const REMOUNT = linux_raw_sys::general::MS_REMOUNT; - const MOVE = linux_raw_sys::general::MS_MOVE; - } -} - -#[cfg(linux_kernel)] -pub(crate) struct MountFlagsArg(pub(crate) c::c_uint); - -#[cfg(linux_kernel)] -bitflags! { - /// `MNT_*` constants for use with [`unmount`]. - /// - /// [`unmount`]: crate::fs::mount::unmount - pub struct UnmountFlags: c::c_uint { - /// `MNT_FORCE` - const FORCE = linux_raw_sys::general::MNT_FORCE; - /// `MNT_DETACH` - const DETACH = linux_raw_sys::general::MNT_DETACH; - /// `MNT_EXPIRE` - const EXPIRE = linux_raw_sys::general::MNT_EXPIRE; - /// `UMOUNT_NOFOLLOW` - const NOFOLLOW = linux_raw_sys::general::UMOUNT_NOFOLLOW; - } -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/epoll.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/epoll.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/epoll.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/epoll.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,352 +0,0 @@ -//! epoll support. -//! -//! This is an experiment, and it isn't yet clear whether epoll is the right -//! level of abstraction at which to introduce safety. But it works fairly well -//! in simple examples 🙂. -//! -//! # Examples -//! -//! ```no_run -//! # #![cfg_attr(io_lifetimes_use_std, feature(io_safety))] -//! # #[cfg(feature = "net")] -//! # fn main() -> std::io::Result<()> { -//! use io_lifetimes::AsFd; -//! use rustix::io::{epoll, ioctl_fionbio, read, write}; -//! use rustix::net::{ -//! accept, bind_v4, listen, socket, AddressFamily, Ipv4Addr, Protocol, SocketAddrV4, -//! SocketType, -//! }; -//! use std::collections::HashMap; -//! use std::os::unix::io::AsRawFd; -//! -//! // Create a socket and listen on it. -//! let listen_sock = socket(AddressFamily::INET, SocketType::STREAM, Protocol::default())?; -//! bind_v4(&listen_sock, &SocketAddrV4::new(Ipv4Addr::LOCALHOST, 0))?; -//! listen(&listen_sock, 1)?; -//! -//! // Create an epoll object. Using `Owning` here means the epoll object will -//! // take ownership of the file descriptors registered with it. -//! let epoll = epoll::epoll_create(epoll::CreateFlags::CLOEXEC)?; -//! -//! // Register the socket with the epoll object. -//! epoll::epoll_add(&epoll, &listen_sock, 1, epoll::EventFlags::IN)?; -//! -//! // Keep track of the sockets we've opened. -//! let mut next_id = 2; -//! let mut sockets = HashMap::new(); -//! -//! // Process events. -//! let mut event_list = epoll::EventVec::with_capacity(4); -//! loop { -//! epoll::epoll_wait(&epoll, &mut event_list, -1)?; -//! for (_event_flags, target) in &event_list { -//! if target == 1 { -//! // Accept a new connection, set it to non-blocking, and -//! // register to be notified when it's ready to write to. -//! let conn_sock = accept(&listen_sock)?; -//! ioctl_fionbio(&conn_sock, true)?; -//! epoll::epoll_add( -//! &epoll, -//! &conn_sock, -//! next_id, -//! epoll::EventFlags::OUT | epoll::EventFlags::ET, -//! )?; -//! -//! // Keep track of the socket. -//! sockets.insert(next_id, conn_sock); -//! next_id += 1; -//! } else { -//! // Write a message to the stream and then unregister it. -//! let target = sockets.remove(&target).unwrap(); -//! write(&target, b"hello\n")?; -//! let _ = epoll::epoll_del(&epoll, &target)?; -//! } -//! } -//! } -//! # } -//! # #[cfg(not(feature = "net"))] -//! # fn main() {} -//! ``` - -#![allow(unsafe_code)] - -use super::super::c; -use crate::backend::io::syscalls; -use crate::fd::{AsFd, AsRawFd, OwnedFd}; -use crate::io; -use alloc::vec::Vec; -use bitflags::bitflags; -use core::slice; - -bitflags! { - /// `EPOLL_*` for use with [`Epoll::new`]. - pub struct CreateFlags: c::c_uint { - /// `EPOLL_CLOEXEC` - const CLOEXEC = linux_raw_sys::general::EPOLL_CLOEXEC; - } -} - -bitflags! { - /// `EPOLL*` for use with [`Epoll::add`]. - #[derive(Default)] - pub struct EventFlags: u32 { - /// `EPOLLIN` - const IN = linux_raw_sys::general::EPOLLIN as u32; - - /// `EPOLLOUT` - const OUT = linux_raw_sys::general::EPOLLOUT as u32; - - /// `EPOLLPRI` - const PRI = linux_raw_sys::general::EPOLLPRI as u32; - - /// `EPOLLERR` - const ERR = linux_raw_sys::general::EPOLLERR as u32; - - /// `EPOLLHUP` - const HUP = linux_raw_sys::general::EPOLLHUP as u32; - - /// `EPOLLRDNORM` - const RDNORM = linux_raw_sys::general::EPOLLRDNORM as u32; - - /// `EPOLLRDBAND` - const RDBAND = linux_raw_sys::general::EPOLLRDBAND as u32; - - /// `EPOLLWRNORM` - const WRNORM = linux_raw_sys::general::EPOLLWRNORM as u32; - - /// `EPOLLWRBAND` - const WRBAND = linux_raw_sys::general::EPOLLWRBAND as u32; - - /// `EPOLLMSG` - const MSG = linux_raw_sys::general::EPOLLMSG as u32; - - /// `EPOLLRDHUP` - const RDHUP = linux_raw_sys::general::EPOLLRDHUP as u32; - - /// `EPOLLET` - const ET = linux_raw_sys::general::EPOLLET as u32; - - /// `EPOLLONESHOT` - const ONESHOT = linux_raw_sys::general::EPOLLONESHOT as u32; - - /// `EPOLLWAKEUP` - const WAKEUP = linux_raw_sys::general::EPOLLWAKEUP as u32; - - /// `EPOLLEXCLUSIVE` - const EXCLUSIVE = linux_raw_sys::general::EPOLLEXCLUSIVE as u32; - } -} - -/// `epoll_create1(flags)`—Creates a new `Epoll`. -/// -/// Use the [`CreateFlags::CLOEXEC`] flag to prevent the resulting file -/// descriptor from being implicitly passed across `exec` boundaries. -#[inline] -#[doc(alias = "epoll_create1")] -pub fn epoll_create(flags: CreateFlags) -> io::Result { - syscalls::epoll_create(flags) -} - -/// `epoll_ctl(self, EPOLL_CTL_ADD, data, event)`—Adds an element to an -/// `Epoll`. -/// -/// This registers interest in any of the events set in `events` occurring -/// on the file descriptor associated with `data`. -/// -/// If `epoll_del` is not called on the I/O source passed into this function -/// before the I/O source is `close`d, then the `epoll` will act as if the I/O -/// source is still registered with it. This can lead to spurious events being -/// returned from `epoll_wait`. If a file descriptor is an -/// `Arc`, then `epoll` can be thought to maintain a -/// `Weak` to the file descriptor. -#[doc(alias = "epoll_ctl")] -#[inline] -pub fn epoll_add( - epoll: impl AsFd, - source: impl AsFd, - data: u64, - event_flags: EventFlags, -) -> io::Result<()> { - // SAFETY: We're calling `epoll_ctl` via FFI and we know how it - // behaves. - unsafe { - syscalls::epoll_add( - epoll.as_fd(), - source.as_fd().as_raw_fd(), - &linux_raw_sys::general::epoll_event { - events: event_flags.bits(), - data, - }, - ) - } -} - -/// `epoll_ctl(self, EPOLL_CTL_MOD, target, event)`—Modifies an element in -/// this `Epoll`. -/// -/// This sets the events of interest with `target` to `events`. -#[doc(alias = "epoll_ctl")] -#[inline] -pub fn epoll_mod( - epoll: impl AsFd, - source: impl AsFd, - data: u64, - event_flags: EventFlags, -) -> io::Result<()> { - // SAFETY: We're calling `epoll_ctl` via FFI and we know how it - // behaves. - unsafe { - let raw_fd = source.as_fd().as_raw_fd(); - syscalls::epoll_mod( - epoll.as_fd(), - raw_fd, - &linux_raw_sys::general::epoll_event { - events: event_flags.bits(), - data, - }, - ) - } -} - -/// `epoll_ctl(self, EPOLL_CTL_DEL, target, NULL)`—Removes an element in -/// this `Epoll`. -/// -/// This also returns the owning `Data`. -#[doc(alias = "epoll_ctl")] -#[inline] -pub fn epoll_del(epoll: impl AsFd, source: impl AsFd) -> io::Result<()> { - // SAFETY: We're calling `epoll_ctl` via FFI and we know how it - // behaves. - unsafe { - let raw_fd = source.as_fd().as_raw_fd(); - syscalls::epoll_del(epoll.as_fd(), raw_fd) - } -} - -/// `epoll_wait(self, events, timeout)`—Waits for registered events of -/// interest. -/// -/// For each event of interest, an element is written to `events`. On -/// success, this returns the number of written elements. -#[inline] -pub fn epoll_wait( - epoll: impl AsFd, - event_list: &mut EventVec, - timeout: c::c_int, -) -> io::Result<()> { - // SAFETY: We're calling `epoll_wait` via FFI and we know how it - // behaves. - unsafe { - event_list.events.set_len(0); - let nfds = syscalls::epoll_wait( - epoll.as_fd(), - event_list.events[..].as_mut_ptr().cast(), - event_list.events.capacity(), - timeout, - )?; - event_list.events.set_len(nfds); - } - - Ok(()) -} - -/// An iterator over the `Event`s in an `EventVec`. -pub struct Iter<'a> { - iter: slice::Iter<'a, Event>, -} - -impl<'a> Iterator for Iter<'a> { - type Item = (EventFlags, u64); - - #[inline] - fn next(&mut self) -> Option { - self.iter - .next() - .map(|event| (event.event_flags, event.data)) - } -} - -/// A record of an event that occurred. -#[repr(C)] -#[cfg_attr(target_arch = "x86_64", repr(packed))] -struct Event { - // Match the layout of `linux_raw_sys::general::epoll_event`. We just use a - // `u64` instead of the full union. - event_flags: EventFlags, - data: u64, -} - -/// A vector of `Event`s, plus context for interpreting them. -pub struct EventVec { - events: Vec, -} - -impl EventVec { - /// Constructs an `EventVec` with memory for `capacity` `Event`s. - #[inline] - pub fn with_capacity(capacity: usize) -> Self { - Self { - events: Vec::with_capacity(capacity), - } - } - - /// Returns the current `Event` capacity of this `EventVec`. - #[inline] - pub fn capacity(&self) -> usize { - self.events.capacity() - } - - /// Reserves enough memory for at least `additional` more `Event`s. - #[inline] - pub fn reserve(&mut self, additional: usize) { - self.events.reserve(additional); - } - - /// Reserves enough memory for exactly `additional` more `Event`s. - #[inline] - pub fn reserve_exact(&mut self, additional: usize) { - self.events.reserve_exact(additional); - } - - /// Clears all the `Events` out of this `EventVec`. - #[inline] - pub fn clear(&mut self) { - self.events.clear(); - } - - /// Shrinks the capacity of this `EventVec` as much as possible. - #[inline] - pub fn shrink_to_fit(&mut self) { - self.events.shrink_to_fit(); - } - - /// Returns an iterator over the `Event`s in this `EventVec`. - #[inline] - pub fn iter(&self) -> Iter<'_> { - Iter { - iter: self.events.iter(), - } - } - - /// Returns the number of `Event`s logically contained in this `EventVec`. - #[inline] - pub fn len(&mut self) -> usize { - self.events.len() - } - - /// Tests whether this `EventVec` is logically empty. - #[inline] - pub fn is_empty(&mut self) -> bool { - self.events.is_empty() - } -} - -impl<'a> IntoIterator for &'a EventVec { - type IntoIter = Iter<'a>; - type Item = (EventFlags, u64); - - #[inline] - fn into_iter(self) -> Self::IntoIter { - self.iter() - } -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/errno.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/errno.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/errno.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -10,7 +10,7 @@ #![allow(unsafe_code)] #![cfg_attr(not(rustc_attrs), allow(unused_unsafe))] -use super::super::c; +use crate::backend::c; use crate::backend::fd::RawFd; use crate::backend::reg::{RetNumber, RetReg}; use crate::io; @@ -67,7 +67,7 @@ let encoded = raw.wrapping_neg() as u16; // TODO: Use Range::contains, once that's `const`. - const_assert!(encoded >= 0xf001); + assert!(encoded >= 0xf001); // SAFETY: Linux syscalls return negated error values in the range // `-4095..0`, which we just asserted. @@ -239,6 +239,13 @@ /// Return the contained `c_int` value. #[cfg(not(debug_assertions))] #[inline] +pub(in crate::backend) fn decode_c_int_infallible(raw: RetReg) -> c::c_int { + raw.decode_c_int() +} + +/// Return the contained `c_uint` value. +#[cfg(not(debug_assertions))] +#[inline] pub(in crate::backend) fn decode_c_uint_infallible(raw: RetReg) -> c::c_uint { raw.decode_c_uint() } diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/io_slice.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/io_slice.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/io_slice.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/io_slice.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,98 +0,0 @@ -//! The following is derived from Rust's -//! library/std/src/sys/unix/io.rs -//! dca3f1b786efd27be3b325ed1e01e247aa589c3b. - -#![allow(unsafe_code)] -use super::super::c; -use core::marker::PhantomData; -use core::slice; -use linux_raw_sys::general::__kernel_size_t; - -/// -#[derive(Copy, Clone)] -#[repr(transparent)] -pub struct IoSlice<'a> { - vec: c::iovec, - _p: PhantomData<&'a [u8]>, -} - -impl<'a> IoSlice<'a> { - /// - #[inline] - pub fn new(buf: &'a [u8]) -> IoSlice<'a> { - IoSlice { - vec: c::iovec { - iov_base: buf.as_ptr() as *mut u8 as *mut c::c_void, - iov_len: buf.len() as _, - }, - _p: PhantomData, - } - } - - /// - #[inline] - pub fn advance(&mut self, n: usize) { - if self.vec.iov_len < n as _ { - panic!("advancing IoSlice beyond its length"); - } - - unsafe { - self.vec.iov_len -= n as __kernel_size_t; - self.vec.iov_base = self.vec.iov_base.add(n); - } - } - - /// - #[inline] - pub fn as_slice(&self) -> &[u8] { - unsafe { slice::from_raw_parts(self.vec.iov_base as *mut u8, self.vec.iov_len as usize) } - } -} - -/// -#[repr(transparent)] -pub struct IoSliceMut<'a> { - vec: c::iovec, - _p: PhantomData<&'a mut [u8]>, -} - -impl<'a> IoSliceMut<'a> { - /// - #[inline] - pub fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> { - IoSliceMut { - vec: c::iovec { - iov_base: buf.as_mut_ptr() as *mut c::c_void, - iov_len: buf.len() as _, - }, - _p: PhantomData, - } - } - - /// - #[inline] - pub fn advance(&mut self, n: usize) { - if self.vec.iov_len < n as _ { - panic!("advancing IoSliceMut beyond its length"); - } - - unsafe { - self.vec.iov_len -= n as __kernel_size_t; - self.vec.iov_base = self.vec.iov_base.add(n); - } - } - - /// - #[inline] - pub fn as_slice(&self) -> &[u8] { - unsafe { slice::from_raw_parts(self.vec.iov_base as *mut u8, self.vec.iov_len as usize) } - } - - /// - #[inline] - pub fn as_mut_slice(&mut self) -> &mut [u8] { - unsafe { - slice::from_raw_parts_mut(self.vec.iov_base as *mut u8, self.vec.iov_len as usize) - } - } -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,3 @@ -pub mod epoll; pub(crate) mod errno; -#[cfg(not(feature = "std"))] -pub(crate) mod io_slice; -pub(crate) mod poll_fd; pub(crate) mod syscalls; pub(crate) mod types; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/poll_fd.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/poll_fd.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/poll_fd.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/poll_fd.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ -use crate::fd::{AsFd, BorrowedFd}; -use bitflags::bitflags; - -bitflags! { - /// `POLL*` flags for use with [`poll`]. - /// - /// [`poll`]: crate::io::poll - pub struct PollFlags: u16 { - /// `POLLIN` - const IN = linux_raw_sys::general::POLLIN as u16; - /// `POLLPRI` - const PRI = linux_raw_sys::general::POLLPRI as u16; - /// `POLLOUT` - const OUT = linux_raw_sys::general::POLLOUT as u16; - /// `POLLRDNORM` - const RDNORM = linux_raw_sys::general::POLLRDNORM as u16; - /// `POLLWRNORM` - const WRNORM = linux_raw_sys::general::POLLWRNORM as u16; - /// `POLLRDBAND` - const RDBAND = linux_raw_sys::general::POLLRDBAND as u16; - /// `POLLWRBAND` - const WRBAND = linux_raw_sys::general::POLLWRBAND as u16; - /// `POLLERR` - const ERR = linux_raw_sys::general::POLLERR as u16; - /// `POLLHUP` - const HUP = linux_raw_sys::general::POLLHUP as u16; - /// `POLLNVAL` - const NVAL = linux_raw_sys::general::POLLNVAL as u16; - /// `POLLRDHUP` - const RDHUP = linux_raw_sys::general::POLLRDHUP as u16; - } -} - -/// `struct pollfd`—File descriptor and flags for use with [`poll`]. -/// -/// [`poll`]: crate::io::poll -#[doc(alias = "pollfd")] -#[repr(C)] -#[derive(Debug, Clone)] -pub struct PollFd<'fd> { - pub(crate) fd: BorrowedFd<'fd>, - pub(crate) events: u16, - pub(crate) revents: u16, -} - -impl<'fd> PollFd<'fd> { - /// Constructs a new `PollFd` holding `fd` and `events`. - #[inline] - pub fn new(fd: &'fd Fd, events: PollFlags) -> Self { - Self::from_borrowed_fd(fd.as_fd(), events) - } - - /// Sets the contained file descriptor to `fd`. - #[inline] - pub fn set_fd(&mut self, fd: &'fd Fd) { - self.fd = fd.as_fd(); - } - - /// Clears the ready events. - #[inline] - pub fn clear_revents(&mut self) { - self.revents = 0; - } - - /// Constructs a new `PollFd` holding `fd` and `events`. - /// - /// This is the same as `new`, but can be used to avoid borrowing the - /// `BorrowedFd`, which can be tricky in situations where the `BorrowedFd` - /// is a temporary. - #[inline] - pub fn from_borrowed_fd(fd: BorrowedFd<'fd>, events: PollFlags) -> Self { - Self { - fd, - events: events.bits(), - revents: 0, - } - } - - /// Returns the ready events. - #[inline] - pub fn revents(&self) -> PollFlags { - // Use `unwrap()` here because in theory we know we know all the bits - // the OS might set here, but OS's have added extensions in the past. - PollFlags::from_bits(self.revents).unwrap() - } -} - -impl<'fd> AsFd for PollFd<'fd> { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - self.fd.as_fd() - } -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,40 +6,33 @@ #![allow(unsafe_code)] #![allow(clippy::undocumented_unsafe_blocks)] -use super::super::c; #[cfg(target_pointer_width = "64")] -use super::super::conv::loff_t_from_u64; -use super::super::conv::{ - by_ref, c_int, c_uint, opt_mut, pass_usize, raw_fd, ret, ret_c_uint, ret_discarded_fd, - ret_owned_fd, ret_usize, slice, slice_mut, zero, +use crate::backend::conv::loff_t_from_u64; +#[cfg(all( + target_pointer_width = "32", + any( + target_arch = "arm", + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "power" + ), +))] +use crate::backend::conv::zero; +use crate::backend::conv::{ + by_ref, c_uint, raw_fd, ret, ret_c_uint, ret_discarded_fd, ret_owned_fd, ret_usize, slice, + slice_mut, }; #[cfg(target_pointer_width = "32")] -use super::super::conv::{hi, lo}; +use crate::backend::conv::{hi, lo}; +use crate::backend::{c, MAX_IOV}; use crate::fd::{AsFd, BorrowedFd, OwnedFd, RawFd}; -#[cfg(linux_kernel)] -use crate::io::SpliceFlags; -use crate::io::{ - self, epoll, DupFlags, EventfdFlags, FdFlags, IoSlice, IoSliceMut, IoSliceRaw, PipeFlags, - PollFd, ReadWriteFlags, -}; +use crate::io::{self, DupFlags, FdFlags, IoSlice, IoSliceMut, ReadWriteFlags}; #[cfg(all(feature = "fs", feature = "net"))] use crate::net::{RecvFlags, SendFlags}; use core::cmp; use core::mem::MaybeUninit; -#[cfg(target_os = "espidf")] -use linux_raw_sys::general::F_DUPFD; -use linux_raw_sys::general::{ - epoll_event, EPOLL_CTL_ADD, EPOLL_CTL_DEL, EPOLL_CTL_MOD, F_DUPFD_CLOEXEC, F_GETFD, F_SETFD, - UIO_MAXIOV, -}; -use linux_raw_sys::ioctl::{ - BLKPBSZGET, BLKSSZGET, EXT4_IOC_RESIZE_FS, FICLONE, FIONBIO, FIONREAD, TIOCEXCL, TIOCNXCL, -}; -#[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))] -use { - super::super::conv::{opt_ref, size_of}, - linux_raw_sys::general::{__kernel_timespec, kernel_sigset_t}, -}; +use linux_raw_sys::general::{F_DUPFD_CLOEXEC, F_GETFD, F_SETFD}; +use linux_raw_sys::ioctl::{FIONBIO, FIONREAD}; #[inline] pub(crate) fn read(fd: BorrowedFd<'_>, buf: &mut [u8]) -> io::Result { @@ -55,7 +48,12 @@ // #[cfg(all( target_pointer_width = "32", - any(target_arch = "arm", target_arch = "mips", target_arch = "power"), + any( + target_arch = "arm", + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "power" + ), ))] unsafe { ret_usize(syscall!( @@ -70,7 +68,12 @@ } #[cfg(all( target_pointer_width = "32", - not(any(target_arch = "arm", target_arch = "mips", target_arch = "power")), + not(any( + target_arch = "arm", + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "power" + )), ))] unsafe { ret_usize(syscall!( @@ -96,7 +99,7 @@ #[inline] pub(crate) fn readv(fd: BorrowedFd<'_>, bufs: &mut [IoSliceMut<'_>]) -> io::Result { - let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), max_iov())]); + let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), MAX_IOV)]); unsafe { ret_usize(syscall!(__NR_readv, fd, bufs_addr, bufs_len)) } } @@ -107,7 +110,7 @@ bufs: &mut [IoSliceMut<'_>], pos: u64, ) -> io::Result { - let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), max_iov())]); + let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), MAX_IOV)]); #[cfg(target_pointer_width = "32")] unsafe { @@ -139,7 +142,7 @@ pos: u64, flags: ReadWriteFlags, ) -> io::Result { - let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), max_iov())]); + let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), MAX_IOV)]); #[cfg(target_pointer_width = "32")] unsafe { @@ -180,7 +183,12 @@ // #[cfg(all( target_pointer_width = "32", - any(target_arch = "arm", target_arch = "mips", target_arch = "power"), + any( + target_arch = "arm", + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "power" + ), ))] unsafe { ret_usize(syscall_readonly!( @@ -195,7 +203,12 @@ } #[cfg(all( target_pointer_width = "32", - not(any(target_arch = "arm", target_arch = "mips", target_arch = "power")), + not(any( + target_arch = "arm", + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "power" + )), ))] unsafe { ret_usize(syscall_readonly!( @@ -221,14 +234,14 @@ #[inline] pub(crate) fn writev(fd: BorrowedFd<'_>, bufs: &[IoSlice<'_>]) -> io::Result { - let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), max_iov())]); + let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), MAX_IOV)]); unsafe { ret_usize(syscall_readonly!(__NR_writev, fd, bufs_addr, bufs_len)) } } #[inline] pub(crate) fn pwritev(fd: BorrowedFd<'_>, bufs: &[IoSlice<'_>], pos: u64) -> io::Result { - let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), max_iov())]); + let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), MAX_IOV)]); #[cfg(target_pointer_width = "32")] unsafe { @@ -260,7 +273,7 @@ pos: u64, flags: ReadWriteFlags, ) -> io::Result { - let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), max_iov())]); + let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), MAX_IOV)]); #[cfg(target_pointer_width = "32")] unsafe { @@ -287,12 +300,6 @@ } } -/// The maximum number of buffers that can be passed into a vectored I/O system -/// call on the current platform. -const fn max_iov() -> usize { - UIO_MAXIOV as usize -} - #[inline] pub(crate) unsafe fn close(fd: RawFd) { // See the documentation for [`io::close`] for why errors are ignored. @@ -300,11 +307,6 @@ } #[inline] -pub(crate) fn eventfd(initval: u32, flags: EventfdFlags) -> io::Result { - unsafe { ret_owned_fd(syscall_readonly!(__NR_eventfd2, c_uint(initval), flags)) } -} - -#[inline] pub(crate) fn ioctl_fionread(fd: BorrowedFd<'_>) -> io::Result { unsafe { let mut result = MaybeUninit::::uninit(); @@ -326,51 +328,6 @@ } } -#[inline] -pub(crate) fn ioctl_tiocexcl(fd: BorrowedFd<'_>) -> io::Result<()> { - unsafe { ret(syscall_readonly!(__NR_ioctl, fd, c_uint(TIOCEXCL))) } -} - -#[inline] -pub(crate) fn ioctl_tiocnxcl(fd: BorrowedFd<'_>) -> io::Result<()> { - unsafe { ret(syscall_readonly!(__NR_ioctl, fd, c_uint(TIOCNXCL))) } -} - -#[inline] -pub(crate) fn ioctl_blksszget(fd: BorrowedFd) -> io::Result { - let mut result = MaybeUninit::::uninit(); - unsafe { - ret(syscall!(__NR_ioctl, fd, c_uint(BLKSSZGET), &mut result))?; - Ok(result.assume_init() as u32) - } -} - -#[inline] -pub(crate) fn ioctl_blkpbszget(fd: BorrowedFd) -> io::Result { - let mut result = MaybeUninit::::uninit(); - unsafe { - ret(syscall!(__NR_ioctl, fd, c_uint(BLKPBSZGET), &mut result))?; - Ok(result.assume_init() as u32) - } -} - -#[inline] -pub(crate) fn ioctl_ficlone(fd: BorrowedFd<'_>, src_fd: BorrowedFd<'_>) -> io::Result<()> { - unsafe { ret(syscall_readonly!(__NR_ioctl, fd, c_uint(FICLONE), src_fd)) } -} - -#[inline] -pub(crate) fn ext4_ioc_resize_fs(fd: BorrowedFd<'_>, blocks: u64) -> io::Result<()> { - unsafe { - ret(syscall_readonly!( - __NR_ioctl, - fd, - c_uint(EXT4_IOC_RESIZE_FS), - by_ref(&blocks) - )) - } -} - #[cfg(all(feature = "fs", feature = "net"))] pub(crate) fn is_read_write(fd: BorrowedFd<'_>) -> io::Result<(bool, bool)> { let (mut read, mut write) = crate::fs::fd::_is_file_read_write(fd)?; @@ -383,8 +340,11 @@ // TODO: This code would benefit from having a better way to read into // uninitialized memory. let mut buf = [0]; - match super::super::net::syscalls::recv(fd, &mut buf, RecvFlags::PEEK | RecvFlags::DONTWAIT) - { + match crate::backend::net::syscalls::recv( + fd, + &mut buf, + RecvFlags::PEEK | RecvFlags::DONTWAIT, + ) { Ok(0) => read = false, Err(err) => { #[allow(unreachable_patterns)] // `EAGAIN` may equal `EWOULDBLOCK` @@ -401,11 +361,8 @@ // Do a `send` with `DONTWAIT` for 0 bytes. An `EPIPE` indicates // the write side is shut down. #[allow(unreachable_patterns)] // `EAGAIN` equals `EWOULDBLOCK` - match super::super::net::syscalls::send(fd, &[], SendFlags::DONTWAIT) { - // TODO or-patterns when we don't need 1.51 - Err(io::Errno::AGAIN) => (), - Err(io::Errno::WOULDBLOCK) => (), - Err(io::Errno::NOTSOCK) => (), + match crate::backend::net::syscalls::send(fd, &[], SendFlags::DONTWAIT) { + Err(io::Errno::AGAIN | io::Errno::WOULDBLOCK | io::Errno::NOTSOCK) => (), Err(io::Errno::PIPE) => write = false, Err(err) => return Err(err), Ok(_) => (), @@ -445,12 +402,12 @@ #[cfg(target_pointer_width = "32")] unsafe { ret_c_uint(syscall_readonly!(__NR_fcntl64, fd, c_uint(F_GETFD))) - .map(FdFlags::from_bits_truncate) + .map(FdFlags::from_bits_retain) } #[cfg(target_pointer_width = "64")] unsafe { ret_c_uint(syscall_readonly!(__NR_fcntl, fd, c_uint(F_GETFD))) - .map(FdFlags::from_bits_truncate) + .map(FdFlags::from_bits_retain) } } @@ -466,29 +423,6 @@ } } -#[cfg(target_os = "espidf")] -#[inline] -pub(crate) fn fcntl_dupfd(fd: BorrowedFd<'_>, min: RawFd) -> io::Result { - #[cfg(target_pointer_width = "32")] - unsafe { - ret_owned_fd(syscall_readonly!( - __NR_fcntl64, - fd, - c_uint(F_DUPFD), - raw_fd(min) - )) - } - #[cfg(target_pointer_width = "64")] - unsafe { - ret_owned_fd(syscall_readonly!( - __NR_fcntl, - fd, - c_uint(F_DUPFD), - raw_fd(min) - )) - } -} - #[inline] pub(crate) fn fcntl_dupfd_cloexec(fd: BorrowedFd<'_>, min: RawFd) -> io::Result { #[cfg(target_pointer_width = "32")] @@ -510,186 +444,3 @@ )) } } - -#[inline] -pub(crate) fn pipe_with(flags: PipeFlags) -> io::Result<(OwnedFd, OwnedFd)> { - unsafe { - let mut result = MaybeUninit::<[OwnedFd; 2]>::uninit(); - ret(syscall!(__NR_pipe2, &mut result, flags))?; - let [p0, p1] = result.assume_init(); - Ok((p0, p1)) - } -} - -#[inline] -pub(crate) fn pipe() -> io::Result<(OwnedFd, OwnedFd)> { - // aarch64 and risc64 omit `__NR_pipe`. On mips, `__NR_pipe` uses a special - // calling convention, but using it is not worth complicating our syscall - // wrapping infrastructure at this time. - #[cfg(any( - target_arch = "aarch64", - target_arch = "mips", - target_arch = "mips64", - target_arch = "riscv64", - ))] - { - pipe_with(PipeFlags::empty()) - } - #[cfg(not(any( - target_arch = "aarch64", - target_arch = "mips", - target_arch = "mips64", - target_arch = "riscv64", - )))] - unsafe { - let mut result = MaybeUninit::<[OwnedFd; 2]>::uninit(); - ret(syscall!(__NR_pipe, &mut result))?; - let [p0, p1] = result.assume_init(); - Ok((p0, p1)) - } -} - -#[inline] -pub(crate) fn poll(fds: &mut [PollFd<'_>], timeout: c::c_int) -> io::Result { - let (fds_addr_mut, fds_len) = slice_mut(fds); - - #[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))] - unsafe { - let timeout = if timeout >= 0 { - Some(__kernel_timespec { - tv_sec: (timeout as i64) / 1000, - tv_nsec: (timeout as i64) % 1000 * 1_000_000, - }) - } else { - None - }; - ret_usize(syscall!( - __NR_ppoll, - fds_addr_mut, - fds_len, - opt_ref(timeout.as_ref()), - zero(), - size_of::() - )) - } - #[cfg(not(any(target_arch = "aarch64", target_arch = "riscv64")))] - unsafe { - ret_usize(syscall!(__NR_poll, fds_addr_mut, fds_len, c_int(timeout))) - } -} - -#[inline] -pub(crate) fn epoll_create(flags: epoll::CreateFlags) -> io::Result { - unsafe { ret_owned_fd(syscall_readonly!(__NR_epoll_create1, flags)) } -} - -#[inline] -pub(crate) unsafe fn epoll_add( - epfd: BorrowedFd<'_>, - fd: c::c_int, - event: &epoll_event, -) -> io::Result<()> { - ret(syscall_readonly!( - __NR_epoll_ctl, - epfd, - c_uint(EPOLL_CTL_ADD), - raw_fd(fd), - by_ref(event) - )) -} - -#[inline] -pub(crate) unsafe fn epoll_mod( - epfd: BorrowedFd<'_>, - fd: c::c_int, - event: &epoll_event, -) -> io::Result<()> { - ret(syscall_readonly!( - __NR_epoll_ctl, - epfd, - c_uint(EPOLL_CTL_MOD), - raw_fd(fd), - by_ref(event) - )) -} - -#[inline] -pub(crate) unsafe fn epoll_del(epfd: BorrowedFd<'_>, fd: c::c_int) -> io::Result<()> { - ret(syscall_readonly!( - __NR_epoll_ctl, - epfd, - c_uint(EPOLL_CTL_DEL), - raw_fd(fd), - zero() - )) -} - -#[inline] -pub(crate) fn epoll_wait( - epfd: BorrowedFd<'_>, - events: *mut epoll_event, - num_events: usize, - timeout: c::c_int, -) -> io::Result { - #[cfg(not(any(target_arch = "aarch64", target_arch = "riscv64")))] - unsafe { - ret_usize(syscall!( - __NR_epoll_wait, - epfd, - events, - pass_usize(num_events), - c_int(timeout) - )) - } - #[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))] - unsafe { - ret_usize(syscall!( - __NR_epoll_pwait, - epfd, - events, - pass_usize(num_events), - c_int(timeout), - zero() - )) - } -} - -#[cfg(linux_kernel)] -#[inline] -pub fn splice( - fd_in: BorrowedFd, - off_in: Option<&mut u64>, - fd_out: BorrowedFd, - off_out: Option<&mut u64>, - len: usize, - flags: SpliceFlags, -) -> io::Result { - unsafe { - ret_usize(syscall!( - __NR_splice, - fd_in, - opt_mut(off_in), - fd_out, - opt_mut(off_out), - pass_usize(len), - c_uint(flags.bits()) - )) - } -} - -#[cfg(linux_kernel)] -#[inline] -pub unsafe fn vmsplice( - fd: BorrowedFd, - bufs: &[IoSliceRaw], - flags: SpliceFlags, -) -> io::Result { - let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), max_iov())]); - ret_usize(syscall!( - __NR_vmsplice, - fd, - bufs_addr, - bufs_len, - c_uint(flags.bits()) - )) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/types.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,12 +1,13 @@ -use super::super::c; +use crate::backend::c; use bitflags::bitflags; -use core::marker::PhantomData; bitflags! { /// `FD_*` constants for use with [`fcntl_getfd`] and [`fcntl_setfd`]. /// /// [`fcntl_getfd`]: crate::io::fcntl_getfd /// [`fcntl_setfd`]: crate::io::fcntl_setfd + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct FdFlags: c::c_uint { /// `FD_CLOEXEC` const CLOEXEC = linux_raw_sys::general::FD_CLOEXEC; @@ -18,6 +19,8 @@ /// /// [`preadv2`]: crate::io::preadv2 /// [`pwritev2`]: crate::io::pwritev + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct ReadWriteFlags: c::c_uint { /// `RWF_DSYNC` (since Linux 4.7) const DSYNC = linux_raw_sys::general::RWF_DSYNC; @@ -32,98 +35,14 @@ } } -#[cfg(linux_kernel)] -bitflags! { - /// `SPLICE_F_*` constants for use with [`splice`] and [`vmsplice`]. - pub struct SpliceFlags: c::c_uint { - /// `SPLICE_F_MOVE` - const MOVE = linux_raw_sys::general::SPLICE_F_MOVE; - /// `SPLICE_F_NONBLOCK` - const NONBLOCK = linux_raw_sys::general::SPLICE_F_NONBLOCK; - /// `SPLICE_F_MORE` - const MORE = linux_raw_sys::general::SPLICE_F_MORE; - /// `SPLICE_F_GIFT` - const GIFT = linux_raw_sys::general::SPLICE_F_GIFT; - } -} - bitflags! { /// `O_*` constants for use with [`dup2`]. /// /// [`dup2`]: crate::io::dup2 + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct DupFlags: c::c_uint { /// `O_CLOEXEC` const CLOEXEC = linux_raw_sys::general::O_CLOEXEC; } } - -bitflags! { - /// `O_*` constants for use with [`pipe_with`]. - /// - /// [`pipe_with`]: crate::io::pipe_with - pub struct PipeFlags: c::c_uint { - /// `O_CLOEXEC` - const CLOEXEC = linux_raw_sys::general::O_CLOEXEC; - /// `O_DIRECT` - const DIRECT = linux_raw_sys::general::O_DIRECT; - /// `O_NONBLOCK` - const NONBLOCK = linux_raw_sys::general::O_NONBLOCK; - } -} - -bitflags! { - /// `EFD_*` flags for use with [`eventfd`]. - /// - /// [`eventfd`]: crate::io::eventfd - pub struct EventfdFlags: c::c_uint { - /// `EFD_CLOEXEC` - const CLOEXEC = linux_raw_sys::general::EFD_CLOEXEC; - /// `EFD_NONBLOCK` - const NONBLOCK = linux_raw_sys::general::EFD_NONBLOCK; - /// `EFD_SEMAPHORE` - const SEMAPHORE = linux_raw_sys::general::EFD_SEMAPHORE; - } -} - -/// `PIPE_BUF`—The maximum size of a write to a pipe guaranteed to be atomic. -pub const PIPE_BUF: usize = linux_raw_sys::general::PIPE_BUF as usize; - -pub(crate) const AT_FDCWD: c::c_int = linux_raw_sys::general::AT_FDCWD; -pub(crate) const STDIN_FILENO: c::c_uint = linux_raw_sys::general::STDIN_FILENO; -pub(crate) const STDOUT_FILENO: c::c_uint = linux_raw_sys::general::STDOUT_FILENO; -pub(crate) const STDERR_FILENO: c::c_uint = linux_raw_sys::general::STDERR_FILENO; - -/// A buffer type used with `vmsplice`. -/// It is guaranteed to be ABI compatible with the iovec type on Unix platforms -/// and `WSABUF` on Windows. Unlike `IoSlice` and `IoSliceMut` it is -/// semantically like a raw pointer, and therefore can be shared or mutated as -/// needed. -#[repr(transparent)] -pub struct IoSliceRaw<'a> { - _buf: c::iovec, - _lifetime: PhantomData<&'a ()>, -} - -impl<'a> IoSliceRaw<'a> { - /// Creates a new `IoSlice` wrapping a byte slice. - pub fn from_slice(buf: &'a [u8]) -> Self { - IoSliceRaw { - _buf: c::iovec { - iov_base: (buf.as_ptr() as *mut u8).cast::(), - iov_len: buf.len() as _, - }, - _lifetime: PhantomData, - } - } - - /// Creates a new `IoSlice` wrapping a mutable byte slice. - pub fn from_slice_mut(buf: &'a mut [u8]) -> Self { - IoSliceRaw { - _buf: c::iovec { - iov_base: buf.as_mut_ptr().cast::(), - iov_len: buf.len() as _, - }, - _lifetime: PhantomData, - } - } -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io_uring/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io_uring/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io_uring/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/io_uring/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,7 +6,7 @@ #![allow(unsafe_code)] #![allow(clippy::undocumented_unsafe_blocks)] -use super::super::conv::{by_mut, c_uint, pass_usize, ret_c_uint, ret_owned_fd}; +use crate::backend::conv::{by_mut, c_uint, pass_usize, ret_c_uint, ret_owned_fd}; use crate::fd::{BorrowedFd, OwnedFd}; use crate::io; use crate::io_uring::{io_uring_params, IoringEnterFlags, IoringRegisterOp}; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mm/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mm/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mm/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mm/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,18 +6,16 @@ #![allow(unsafe_code)] #![allow(clippy::undocumented_unsafe_blocks)] -use super::super::c; -#[cfg(target_pointer_width = "64")] -use super::super::conv::loff_t_from_u64; -use super::super::conv::{c_uint, no_fd, pass_usize, ret, ret_owned_fd, ret_void_star}; use super::types::{ Advice, MapFlags, MlockFlags, MprotectFlags, MremapFlags, MsyncFlags, ProtFlags, UserfaultfdFlags, }; +use crate::backend::c; +#[cfg(target_pointer_width = "64")] +use crate::backend::conv::loff_t_from_u64; +use crate::backend::conv::{c_uint, no_fd, pass_usize, ret, ret_owned_fd, ret_void_star}; use crate::fd::{BorrowedFd, OwnedFd}; use crate::io; -#[cfg(target_pointer_width = "32")] -use core::convert::TryInto; use linux_raw_sys::general::MAP_ANONYMOUS; #[inline] diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mm/types.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mm/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mm/types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mm/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -use super::super::c; +use crate::backend::c; use bitflags::bitflags; bitflags! { @@ -7,6 +7,8 @@ /// For `PROT_NONE`, use `ProtFlags::empty()`. /// /// [`mmap`]: crate::io::mmap + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct ProtFlags: u32 { /// `PROT_READ` const READ = linux_raw_sys::general::PROT_READ; @@ -23,6 +25,8 @@ /// For `PROT_NONE`, use `MprotectFlags::empty()`. /// /// [`mprotect`]: crate::io::mprotect + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct MprotectFlags: u32 { /// `PROT_READ` const READ = linux_raw_sys::general::PROT_READ; @@ -34,6 +38,20 @@ const GROWSUP = linux_raw_sys::general::PROT_GROWSUP; /// `PROT_GROWSDOWN` const GROWSDOWN = linux_raw_sys::general::PROT_GROWSDOWN; + /// `PROT_SEM` + const SEM = linux_raw_sys::general::PROT_SEM; + /// `PROT_BTI` + #[cfg(target_arch = "aarch64")] + const BTI = linux_raw_sys::general::PROT_BTI; + /// `PROT_MTE` + #[cfg(target_arch = "aarch64")] + const MTE = linux_raw_sys::general::PROT_MTE; + /// `PROT_SAO` + #[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))] + const SAO = linux_raw_sys::general::PROT_SAO; + /// `PROT_ADI` + #[cfg(any(target_arch = "sparc", target_arch = "sparc64"))] + const ADI = linux_raw_sys::general::PROT_ADI; } } @@ -44,6 +62,8 @@ /// /// [`mmap`]: crate::io::mmap /// [`mmap_anonymous`]: crates::io::mmap_anonymous + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct MapFlags: u32 { /// `MAP_SHARED` const SHARED = linux_raw_sys::general::MAP_SHARED; @@ -74,10 +94,10 @@ /// `MAP_STACK` const STACK = linux_raw_sys::general::MAP_STACK; /// `MAP_SYNC` (since Linux 4.15) - #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))] + #[cfg(not(any(target_arch = "mips", target_arch = "mips32r6", target_arch = "mips64", target_arch = "mips64r6")))] const SYNC = linux_raw_sys::general::MAP_SYNC; /// `MAP_UNINITIALIZED` - #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))] + #[cfg(not(any(target_arch = "mips", target_arch = "mips32r6", target_arch = "mips64", target_arch = "mips64r6")))] const UNINITIALIZED = linux_raw_sys::general::MAP_UNINITIALIZED; } } @@ -89,6 +109,8 @@ /// /// [`mremap`]: crate::io::mremap /// [`mremap_fixed`]: crate::io::mremap_fixed + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct MremapFlags: u32 { /// `MREMAP_MAYMOVE` const MAYMOVE = linux_raw_sys::general::MREMAP_MAYMOVE; @@ -98,19 +120,11 @@ } bitflags! { - /// `MLOCK_*` flags for use with [`mlock_with`]. - /// - /// [`mlock_with`]: crate::io::mlock_with - pub struct MlockFlags: u32 { - /// `MLOCK_ONFAULT` - const ONFAULT = linux_raw_sys::general::MLOCK_ONFAULT; - } -} - -bitflags! { /// `MS_*` flags for use with [`msync`]. /// /// [`msync`]: crate::io::msync + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct MsyncFlags: u32 { /// `MS_SYNC`—Requests an update and waits for it to complete. const SYNC = linux_raw_sys::general::MS_SYNC; @@ -125,14 +139,14 @@ } bitflags! { - /// `O_*` flags for use with [`userfaultfd`]. + /// `MLOCK_*` flags for use with [`mlock_with`]. /// - /// [`userfaultfd`]: crate::io::userfaultfd - pub struct UserfaultfdFlags: c::c_uint { - /// `O_CLOEXEC` - const CLOEXEC = linux_raw_sys::general::O_CLOEXEC; - /// `O_NONBLOCK` - const NONBLOCK = linux_raw_sys::general::O_NONBLOCK; + /// [`mlock_with`]: crate::io::mlock_with + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct MlockFlags: u32 { + /// `MLOCK_ONFAULT` + const ONFAULT = linux_raw_sys::general::MLOCK_ONFAULT; } } @@ -169,7 +183,12 @@ /// `MADV_HWPOISON` LinuxHwPoison = linux_raw_sys::general::MADV_HWPOISON, /// `MADV_SOFT_OFFLINE` - #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))] + #[cfg(not(any( + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6" + )))] LinuxSoftOffline = linux_raw_sys::general::MADV_SOFT_OFFLINE, /// `MADV_MERGEABLE` LinuxMergeable = linux_raw_sys::general::MADV_MERGEABLE, @@ -208,3 +227,17 @@ /// `LinuxDontNeed` for the Linux behavior. pub const DontNeed: Self = Self::Normal; } + +bitflags! { + /// `O_*` flags for use with [`userfaultfd`]. + /// + /// [`userfaultfd`]: crate::io::userfaultfd + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct UserfaultfdFlags: c::c_uint { + /// `O_CLOEXEC` + const CLOEXEC = linux_raw_sys::general::O_CLOEXEC; + /// `O_NONBLOCK` + const NONBLOCK = linux_raw_sys::general::O_NONBLOCK; + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -17,6 +17,12 @@ #[macro_use] mod arch; mod conv; +#[cfg(any( + feature = "param", + feature = "runtime", + feature = "time", + target_arch = "x86" +))] mod elf; mod reg; #[cfg(any(feature = "time", target_arch = "x86"))] @@ -24,6 +30,8 @@ #[cfg(any(feature = "time", target_arch = "x86"))] mod vdso_wrappers; +#[cfg(feature = "event")] +pub(crate) mod event; #[cfg(any( feature = "fs", all( @@ -43,6 +51,10 @@ pub(crate) mod io_uring; #[cfg(feature = "mm")] pub(crate) mod mm; +#[cfg(feature = "mount")] +pub(crate) mod mount; +#[cfg(all(feature = "fs", not(feature = "mount")))] +pub(crate) mod mount; // for deprecated mount functions in "fs" #[cfg(feature = "net")] pub(crate) mod net; #[cfg(any( @@ -52,6 +64,9 @@ target_arch = "x86", ))] pub(crate) mod param; +#[cfg(feature = "pipe")] +pub(crate) mod pipe; +#[cfg(feature = "process")] pub(crate) mod process; #[cfg(feature = "pty")] pub(crate) mod pty; @@ -59,23 +74,47 @@ pub(crate) mod rand; #[cfg(feature = "runtime")] pub(crate) mod runtime; +#[cfg(feature = "system")] +pub(crate) mod system; #[cfg(feature = "termios")] pub(crate) mod termios; #[cfg(feature = "thread")] pub(crate) mod thread; +#[cfg(feature = "time")] pub(crate) mod time; -#[cfg(feature = "std")] pub(crate) mod fd { - pub use io_lifetimes::*; - #[allow(unused_imports)] - pub(crate) use std::os::unix::io::RawFd as LibcFd; - pub use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; + pub use crate::maybe_polyfill::os::fd::{ + AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd, + }; } -#[cfg(not(feature = "std"))] -pub(crate) use crate::io::fd; - // The linux_raw backend doesn't use actual libc, so we define selected // libc-like definitions in a module called `c`. pub(crate) mod c; + +// Private modules used by multiple public modules. +#[cfg(any(feature = "procfs", feature = "process", feature = "runtime"))] +pub(crate) mod pid; +#[cfg(any(feature = "process", feature = "thread"))] +pub(crate) mod prctl; +#[cfg(any( + feature = "fs", + feature = "process", + feature = "thread", + all( + not(feature = "use-libc-auxv"), + not(target_vendor = "mustang"), + any( + feature = "param", + feature = "runtime", + feature = "time", + target_arch = "x86", + ) + ) +))] +pub(crate) mod ugid; + +/// The maximum number of buffers that can be passed into a vectored I/O system +/// call on the current platform. +const MAX_IOV: usize = linux_raw_sys::general::UIO_MAXIOV as usize; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mount/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mount/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mount/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mount/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,2 @@ +pub(crate) mod syscalls; +pub(crate) mod types; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mount/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mount/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mount/syscalls.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mount/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,239 @@ +//! linux_raw syscalls supporting `rustix::mount`. +//! +//! # Safety +//! +//! See the `rustix::backend` module documentation for details. +#![allow(unsafe_code)] +#![allow(clippy::undocumented_unsafe_blocks)] + +use crate::backend::conv::ret; +#[cfg(feature = "mount")] +use crate::backend::conv::{ret_owned_fd, slice, zero}; +#[cfg(feature = "mount")] +use crate::fd::{BorrowedFd, OwnedFd}; +use crate::ffi::CStr; +use crate::io; + +#[inline] +pub(crate) fn mount( + source: Option<&CStr>, + target: &CStr, + file_system_type: Option<&CStr>, + flags: super::types::MountFlagsArg, + data: Option<&CStr>, +) -> io::Result<()> { + unsafe { + ret(syscall_readonly!( + __NR_mount, + source, + target, + file_system_type, + flags, + data + )) + } +} + +#[inline] +pub(crate) fn unmount(target: &CStr, flags: super::types::UnmountFlags) -> io::Result<()> { + unsafe { ret(syscall_readonly!(__NR_umount2, target, flags)) } +} + +#[cfg(feature = "mount")] +#[inline] +pub(crate) fn fsopen(fs_name: &CStr, flags: super::types::FsOpenFlags) -> io::Result { + unsafe { ret_owned_fd(syscall_readonly!(__NR_fsopen, fs_name, flags)) } +} + +#[cfg(feature = "mount")] +#[inline] +pub(crate) fn fsmount( + fs_fd: BorrowedFd<'_>, + flags: super::types::FsMountFlags, + attr_flags: super::types::MountAttrFlags, +) -> io::Result<()> { + unsafe { ret(syscall_readonly!(__NR_fsmount, fs_fd, flags, attr_flags)) } +} + +#[cfg(feature = "mount")] +#[inline] +pub(crate) fn move_mount( + from_dfd: BorrowedFd<'_>, + from_pathname: &CStr, + to_dfd: BorrowedFd<'_>, + to_pathname: &CStr, + flags: super::types::MoveMountFlags, +) -> io::Result<()> { + unsafe { + ret(syscall_readonly!( + __NR_move_mount, + from_dfd, + from_pathname, + to_dfd, + to_pathname, + flags + )) + } +} + +#[cfg(feature = "mount")] +#[inline] +pub(crate) fn open_tree( + dfd: BorrowedFd<'_>, + filename: &CStr, + flags: super::types::OpenTreeFlags, +) -> io::Result { + unsafe { ret_owned_fd(syscall_readonly!(__NR_open_tree, dfd, filename, flags)) } +} + +#[cfg(feature = "mount")] +#[inline] +pub(crate) fn fspick( + dfd: BorrowedFd<'_>, + path: &CStr, + flags: super::types::FsPickFlags, +) -> io::Result { + unsafe { ret_owned_fd(syscall_readonly!(__NR_fspick, dfd, path, flags)) } +} + +#[cfg(feature = "mount")] +#[inline] +pub(crate) fn fsconfig_set_flag(fs_fd: BorrowedFd<'_>, key: &CStr) -> io::Result<()> { + unsafe { + ret(syscall_readonly!( + __NR_fsconfig, + fs_fd, + super::types::FsConfigCmd::SetFlag, + key, + zero(), + zero() + )) + } +} + +#[cfg(feature = "mount")] +#[inline] +pub(crate) fn fsconfig_set_string( + fs_fd: BorrowedFd<'_>, + key: &CStr, + value: &CStr, +) -> io::Result<()> { + unsafe { + ret(syscall_readonly!( + __NR_fsconfig, + fs_fd, + super::types::FsConfigCmd::SetString, + key, + value, + zero() + )) + } +} + +#[cfg(feature = "mount")] +#[inline] +pub(crate) fn fsconfig_set_binary( + fs_fd: BorrowedFd<'_>, + key: &CStr, + value: &[u8], +) -> io::Result<()> { + let (value_addr, value_len) = slice(value); + unsafe { + ret(syscall_readonly!( + __NR_fsconfig, + fs_fd, + super::types::FsConfigCmd::SetBinary, + key, + value_addr, + value_len + )) + } +} + +#[cfg(feature = "mount")] +#[inline] +pub(crate) fn fsconfig_set_fd( + fs_fd: BorrowedFd<'_>, + key: &CStr, + fd: BorrowedFd<'_>, +) -> io::Result<()> { + unsafe { + ret(syscall_readonly!( + __NR_fsconfig, + fs_fd, + super::types::FsConfigCmd::SetFd, + key, + zero(), + fd + )) + } +} + +#[cfg(feature = "mount")] +#[inline] +pub(crate) fn fsconfig_set_path( + fs_fd: BorrowedFd<'_>, + key: &CStr, + path: &CStr, + fd: BorrowedFd<'_>, +) -> io::Result<()> { + unsafe { + ret(syscall_readonly!( + __NR_fsconfig, + fs_fd, + super::types::FsConfigCmd::SetPath, + key, + path, + fd + )) + } +} + +#[cfg(feature = "mount")] +#[inline] +pub(crate) fn fsconfig_set_path_empty( + fs_fd: BorrowedFd<'_>, + key: &CStr, + fd: BorrowedFd<'_>, +) -> io::Result<()> { + unsafe { + ret(syscall_readonly!( + __NR_fsconfig, + fs_fd, + super::types::FsConfigCmd::SetPathEmpty, + key, + cstr!(""), + fd + )) + } +} + +#[cfg(feature = "mount")] +#[inline] +pub(crate) fn fsconfig_create(fs_fd: BorrowedFd<'_>) -> io::Result<()> { + unsafe { + ret(syscall_readonly!( + __NR_fsconfig, + fs_fd, + super::types::FsConfigCmd::Create, + zero(), + zero(), + zero() + )) + } +} + +#[cfg(feature = "mount")] +#[inline] +pub(crate) fn fsconfig_reconfigure(fs_fd: BorrowedFd<'_>) -> io::Result<()> { + unsafe { + ret(syscall_readonly!( + __NR_fsconfig, + fs_fd, + super::types::FsConfigCmd::Reconfigure, + zero(), + zero(), + zero() + )) + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mount/types.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mount/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mount/types.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/mount/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,303 @@ +use crate::backend::c; +use bitflags::bitflags; + +bitflags! { + /// `MS_*` constants for use with [`mount`]. + /// + /// [`mount`]: crate::mount::mount + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct MountFlags: c::c_uint { + /// `MS_BIND` + const BIND = linux_raw_sys::general::MS_BIND; + + /// `MS_DIRSYNC` + const DIRSYNC = linux_raw_sys::general::MS_DIRSYNC; + + /// `MS_LAZYTIME` + const LAZYTIME = linux_raw_sys::general::MS_LAZYTIME; + + /// `MS_MANDLOCK` + #[doc(alias = "MANDLOCK")] + const PERMIT_MANDATORY_FILE_LOCKING = linux_raw_sys::general::MS_MANDLOCK; + + /// `MS_NOATIME` + const NOATIME = linux_raw_sys::general::MS_NOATIME; + + /// `MS_NODEV` + const NODEV = linux_raw_sys::general::MS_NODEV; + + /// `MS_NODIRATIME` + const NODIRATIME = linux_raw_sys::general::MS_NODIRATIME; + + /// `MS_NOEXEC` + const NOEXEC = linux_raw_sys::general::MS_NOEXEC; + + /// `MS_NOSUID` + const NOSUID = linux_raw_sys::general::MS_NOSUID; + + /// `MS_RDONLY` + const RDONLY = linux_raw_sys::general::MS_RDONLY; + + /// `MS_REC` + const REC = linux_raw_sys::general::MS_REC; + + /// `MS_RELATIME` + const RELATIME = linux_raw_sys::general::MS_RELATIME; + + /// `MS_SILENT` + const SILENT = linux_raw_sys::general::MS_SILENT; + + /// `MS_STRICTATIME` + const STRICTATIME = linux_raw_sys::general::MS_STRICTATIME; + + /// `MS_SYNCHRONOUS` + const SYNCHRONOUS = linux_raw_sys::general::MS_SYNCHRONOUS; + + /// `MS_NOSYMFOLLOW` + const NOSYMFOLLOW = linux_raw_sys::general::MS_NOSYMFOLLOW; + } +} + +bitflags! { + /// `MNT_*` constants for use with [`unmount`]. + /// + /// [`unmount`]: crate::mount::unmount + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct UnmountFlags: c::c_uint { + /// `MNT_FORCE` + const FORCE = linux_raw_sys::general::MNT_FORCE; + /// `MNT_DETACH` + const DETACH = linux_raw_sys::general::MNT_DETACH; + /// `MNT_EXPIRE` + const EXPIRE = linux_raw_sys::general::MNT_EXPIRE; + /// `UMOUNT_NOFOLLOW` + const NOFOLLOW = linux_raw_sys::general::UMOUNT_NOFOLLOW; + } +} + +#[cfg(feature = "mount")] +bitflags! { + /// `FSOPEN_*` constants for use with [`fsopen`]. + /// + /// [`fsopen`]: crate::mount::fsopen + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct FsOpenFlags: c::c_uint { + + /// `FSOPEN_CLOEXEC` + const FSOPEN_CLOEXEC = linux_raw_sys::general::FSOPEN_CLOEXEC; + } +} + +#[cfg(feature = "mount")] +bitflags! { + /// `FSMOUNT_*` constants for use with [`fsmount`]. + /// + /// [`fsmount`]: crate::mount::fsmount + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct FsMountFlags: c::c_uint { + /// `FSMOUNT_CLOEXEC` + const FSMOUNT_CLOEXEC = linux_raw_sys::general::FSMOUNT_CLOEXEC; + } +} + +/// `FSCONFIG_*` constants for use with the `fsconfig` syscall. +#[cfg(feature = "mount")] +#[derive(Debug, Copy, Clone, Eq, PartialEq)] +#[repr(u32)] +pub(crate) enum FsConfigCmd { + /// `FSCONFIG_SET_FLAG` + SetFlag = linux_raw_sys::general::fsconfig_command::FSCONFIG_SET_FLAG as u32, + + /// `FSCONFIG_SET_STRING` + SetString = linux_raw_sys::general::fsconfig_command::FSCONFIG_SET_STRING as u32, + + /// `FSCONFIG_SET_BINARY` + SetBinary = linux_raw_sys::general::fsconfig_command::FSCONFIG_SET_BINARY as u32, + + /// `FSCONFIG_SET_PATH` + SetPath = linux_raw_sys::general::fsconfig_command::FSCONFIG_SET_PATH as u32, + + /// `FSCONFIG_SET_PATH_EMPTY` + SetPathEmpty = linux_raw_sys::general::fsconfig_command::FSCONFIG_SET_PATH_EMPTY as u32, + + /// `FSCONFIG_SET_FD` + SetFd = linux_raw_sys::general::fsconfig_command::FSCONFIG_SET_FD as u32, + + /// `FSCONFIG_CMD_CREATE` + Create = linux_raw_sys::general::fsconfig_command::FSCONFIG_CMD_CREATE as u32, + + /// `FSCONFIG_CMD_RECONFIGURE` + Reconfigure = linux_raw_sys::general::fsconfig_command::FSCONFIG_CMD_RECONFIGURE as u32, +} + +#[cfg(feature = "mount")] +bitflags! { + /// `MOUNT_ATTR_*` constants for use with [`fsmount`]. + /// + /// [`fsmount`]: crate::mount::fsmount + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct MountAttrFlags: c::c_uint { + /// `MOUNT_ATTR_RDONLY` + const MOUNT_ATTR_RDONLY = linux_raw_sys::general::MOUNT_ATTR_RDONLY; + + /// `MOUNT_ATTR_NOSUID` + const MOUNT_ATTR_NOSUID = linux_raw_sys::general::MOUNT_ATTR_NOSUID; + + /// `MOUNT_ATTR_NODEV` + const MOUNT_ATTR_NODEV = linux_raw_sys::general::MOUNT_ATTR_NODEV; + + /// `MOUNT_ATTR_NOEXEC` + const MOUNT_ATTR_NOEXEC = linux_raw_sys::general::MOUNT_ATTR_NOEXEC; + + /// `MOUNT_ATTR__ATIME` + const MOUNT_ATTR__ATIME = linux_raw_sys::general::MOUNT_ATTR__ATIME; + + /// `MOUNT_ATTR_RELATIME` + const MOUNT_ATTR_RELATIME = linux_raw_sys::general::MOUNT_ATTR_RELATIME; + + /// `MOUNT_ATTR_NOATIME` + const MOUNT_ATTR_NOATIME = linux_raw_sys::general::MOUNT_ATTR_NOATIME; + + /// `MOUNT_ATTR_STRICTATIME` + const MOUNT_ATTR_STRICTATIME = linux_raw_sys::general::MOUNT_ATTR_STRICTATIME; + + /// `MOUNT_ATTR_NODIRATIME` + const MOUNT_ATTR_NODIRATIME = linux_raw_sys::general::MOUNT_ATTR_NODIRATIME; + + /// `MOUNT_ATTR_NOUSER` + const MOUNT_ATTR_IDMAP = linux_raw_sys::general::MOUNT_ATTR_IDMAP; + + /// `MOUNT_ATTR__ATIME_FLAGS` + const MOUNT_ATTR_NOSYMFOLLOW = linux_raw_sys::general::MOUNT_ATTR_NOSYMFOLLOW; + + /// `MOUNT_ATTR__ATIME_FLAGS` + const MOUNT_ATTR_SIZE_VER0 = linux_raw_sys::general::MOUNT_ATTR_SIZE_VER0; + } +} + +#[cfg(feature = "mount")] +bitflags! { + /// `MOVE_MOUNT_*` constants for use with [`move_mount`]. + /// + /// [`move_mount`]: crate::mount::move_mount + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct MoveMountFlags: c::c_uint { + /// `MOVE_MOUNT_F_EMPTY_PATH` + const MOVE_MOUNT_F_SYMLINKS = linux_raw_sys::general::MOVE_MOUNT_F_SYMLINKS; + + /// `MOVE_MOUNT_F_AUTOMOUNTS` + const MOVE_MOUNT_F_AUTOMOUNTS = linux_raw_sys::general::MOVE_MOUNT_F_AUTOMOUNTS; + + /// `MOVE_MOUNT_F_EMPTY_PATH` + const MOVE_MOUNT_F_EMPTY_PATH = linux_raw_sys::general::MOVE_MOUNT_F_EMPTY_PATH; + + /// `MOVE_MOUNT_T_SYMLINKS` + const MOVE_MOUNT_T_SYMLINKS = linux_raw_sys::general::MOVE_MOUNT_T_SYMLINKS; + + /// `MOVE_MOUNT_T_AUTOMOUNTS` + const MOVE_MOUNT_T_AUTOMOUNTS = linux_raw_sys::general::MOVE_MOUNT_T_AUTOMOUNTS; + + /// `MOVE_MOUNT_T_EMPTY_PATH` + const MOVE_MOUNT_T_EMPTY_PATH = linux_raw_sys::general::MOVE_MOUNT_T_EMPTY_PATH; + + /// `MOVE_MOUNT__MASK` + const MOVE_MOUNT_SET_GROUP = linux_raw_sys::general::MOVE_MOUNT_SET_GROUP; + + // TODO: add when linux 6.5 is released + // /// `MOVE_MOUNT_BENEATH` + // const MOVE_MOUNT_BENEATH = linux_raw_sys::general::MOVE_MOUNT_BENEATH; + + /// `MOVE_MOUNT__MASK` + const MOVE_MOUNT__MASK = linux_raw_sys::general::MOVE_MOUNT__MASK; + } +} + +#[cfg(feature = "mount")] +bitflags! { + /// `OPENTREE_*` constants for use with [`open_tree`]. + /// + /// [`open_tree`]: crate::mount::open_tree + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct OpenTreeFlags: c::c_uint { + /// `OPENTREE_CLONE` + const OPEN_TREE_CLONE = linux_raw_sys::general::OPEN_TREE_CLONE; + + /// `OPENTREE_CLOEXEC` + const OPEN_TREE_CLOEXEC = linux_raw_sys::general::OPEN_TREE_CLOEXEC; + + /// `AT_EMPTY_PATH` + const AT_EMPTY_PATH = linux_raw_sys::general::AT_EMPTY_PATH; + + /// `AT_NO_AUTOMOUNT` + const AT_NO_AUTOMOUNT = linux_raw_sys::general::AT_NO_AUTOMOUNT; + + /// `AT_RECURSIVE` + const AT_RECURSIVE = linux_raw_sys::general::AT_RECURSIVE; + + /// `AT_SYMLINK_NOFOLLOW` + const AT_SYMLINK_NOFOLLOW = linux_raw_sys::general::AT_SYMLINK_NOFOLLOW; + } +} + +#[cfg(feature = "mount")] +bitflags! { + /// `FSPICK_*` constants for use with [`fspick`]. + /// + /// [`fspick`]: crate::mount::fspick + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct FsPickFlags: c::c_uint { + /// `FSPICK_CLOEXEC` + const FSPICK_CLOEXEC = linux_raw_sys::general::FSPICK_CLOEXEC; + + /// `FSPICK_SYMLINK_NOFOLLOW` + const FSPICK_SYMLINK_NOFOLLOW = linux_raw_sys::general::FSPICK_SYMLINK_NOFOLLOW; + + /// `FSPICK_NO_AUTOMOUNT` + const FSPICK_NO_AUTOMOUNT = linux_raw_sys::general::FSPICK_NO_AUTOMOUNT; + + /// `FSPICK_EMPTY_PATH` + const FSPICK_EMPTY_PATH = linux_raw_sys::general::FSPICK_EMPTY_PATH; + } +} + +bitflags! { + /// `MS_*` constants for use with [`change_mount`]. + /// + /// [`change_mount`]: crate::mount::change_mount + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct MountPropagationFlags: c::c_uint { + /// `MS_SILENT` + const SILENT = linux_raw_sys::general::MS_SILENT; + /// `MS_SHARED` + const SHARED = linux_raw_sys::general::MS_SHARED; + /// `MS_PRIVATE` + const PRIVATE = linux_raw_sys::general::MS_PRIVATE; + /// `MS_SLAVE` + const SLAVE = linux_raw_sys::general::MS_SLAVE; + /// `MS_UNBINDABLE` + const UNBINDABLE = linux_raw_sys::general::MS_UNBINDABLE; + /// `MS_REC` + const REC = linux_raw_sys::general::MS_REC; + } +} + +bitflags! { + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub(crate) struct InternalMountFlags: c::c_uint { + const REMOUNT = linux_raw_sys::general::MS_REMOUNT; + const MOVE = linux_raw_sys::general::MS_MOVE; + } +} + +#[repr(transparent)] +pub(crate) struct MountFlagsArg(pub(crate) c::c_uint); diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/addr.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/addr.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/addr.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/addr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,11 +6,10 @@ //! to be NUL-terminated. #![allow(unsafe_code)] -use super::super::c; +use crate::backend::c; use crate::ffi::CStr; use crate::{io, path}; use core::cmp::Ordering; -use core::convert::TryInto; use core::fmt; use core::hash::{Hash, Hasher}; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,5 +3,4 @@ pub(crate) mod read_sockaddr; pub(crate) mod send_recv; pub(crate) mod syscalls; -pub(crate) mod types; pub(crate) mod write_sockaddr; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/msghdr.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/msghdr.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/msghdr.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/msghdr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,15 +5,14 @@ #![allow(unsafe_code)] -use super::super::c; -use super::super::net::write_sockaddr::{encode_sockaddr_v4, encode_sockaddr_v6}; +use crate::backend::c; +use crate::backend::net::write_sockaddr::{encode_sockaddr_v4, encode_sockaddr_v6}; use crate::io::{self, IoSlice, IoSliceMut}; use crate::net::{RecvAncillaryBuffer, SendAncillaryBuffer, SocketAddrV4, SocketAddrV6}; use crate::utils::as_ptr; -use core::convert::TryInto; -use core::mem::{size_of, zeroed, MaybeUninit}; +use core::mem::{size_of, MaybeUninit}; use core::ptr::null_mut; fn msg_iov_len(len: usize) -> c::size_t { @@ -43,9 +42,7 @@ msg_iovlen: msg_iov_len(iov.len()), msg_control: control.as_control_ptr().cast(), msg_controllen: msg_control_len(control.control_len()), - - // Zero-initialize any padding bytes. - ..unsafe { zeroed() } + msg_flags: 0, }; let res = f(&mut msghdr); @@ -73,9 +70,7 @@ msg_iovlen: msg_iov_len(iov.len()), msg_control: control.as_control_ptr().cast(), msg_controllen: msg_control_len(control.control_len()), - - // Zero-initialize any padding bytes. - ..unsafe { zeroed() } + msg_flags: 0, }) } @@ -86,7 +81,7 @@ control: &mut SendAncillaryBuffer<'_, '_, '_>, f: impl FnOnce(c::msghdr) -> R, ) -> R { - let encoded = unsafe { encode_sockaddr_v4(addr) }; + let encoded = encode_sockaddr_v4(addr); f(c::msghdr { msg_name: as_ptr(&encoded) as _, @@ -95,9 +90,7 @@ msg_iovlen: msg_iov_len(iov.len()), msg_control: control.as_control_ptr().cast(), msg_controllen: msg_control_len(control.control_len()), - - // Zero-initialize any padding bytes. - ..unsafe { zeroed() } + msg_flags: 0, }) } @@ -108,7 +101,7 @@ control: &mut SendAncillaryBuffer<'_, '_, '_>, f: impl FnOnce(c::msghdr) -> R, ) -> R { - let encoded = unsafe { encode_sockaddr_v6(addr) }; + let encoded = encode_sockaddr_v6(addr); f(c::msghdr { msg_name: as_ptr(&encoded) as _, @@ -117,9 +110,7 @@ msg_iovlen: msg_iov_len(iov.len()), msg_control: control.as_control_ptr().cast(), msg_controllen: msg_control_len(control.control_len()), - - // Zero-initialize any padding bytes. - ..unsafe { zeroed() } + msg_flags: 0, }) } @@ -137,8 +128,19 @@ msg_iovlen: msg_iov_len(iov.len()), msg_control: control.as_control_ptr().cast(), msg_controllen: msg_control_len(control.control_len()), - - // Zero-initialize any padding bytes. - ..unsafe { zeroed() } + msg_flags: 0, }) } + +/// Create a zero-initialized message header struct value. +pub(crate) fn zero_msghdr() -> c::msghdr { + c::msghdr { + msg_name: null_mut(), + msg_namelen: 0, + msg_iov: null_mut(), + msg_iovlen: 0, + msg_control: null_mut(), + msg_controllen: 0, + msg_flags: 0, + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/read_sockaddr.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/read_sockaddr.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/read_sockaddr.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/read_sockaddr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,7 @@ //! we can interpret the rest of a `sockaddr` produced by the kernel. #![allow(unsafe_code)] -use super::super::c; +use crate::backend::c; use crate::io; use crate::net::{Ipv4Addr, Ipv6Addr, SocketAddrAny, SocketAddrUnix, SocketAddrV4, SocketAddrV6}; use core::mem::size_of; @@ -23,9 +23,9 @@ // Assert that we know the layout of `sockaddr`. let _ = c::sockaddr { __storage: c::sockaddr_storage { - __bindgen_anon_1: linux_raw_sys::general::__kernel_sockaddr_storage__bindgen_ty_1 { + __bindgen_anon_1: linux_raw_sys::net::__kernel_sockaddr_storage__bindgen_ty_1 { __bindgen_anon_1: - linux_raw_sys::general::__kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { + linux_raw_sys::net::__kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { ss_family: 0_u16, __data: [0; 126_usize], }, @@ -62,7 +62,7 @@ if len < size_of::() { return Err(io::Errno::INVAL); } - let decode = *storage.cast::(); + let decode = &*storage.cast::(); Ok(SocketAddrAny::V4(SocketAddrV4::new( Ipv4Addr::from(u32::from_be(decode.sin_addr.s_addr)), u16::from_be(decode.sin_port), @@ -72,7 +72,7 @@ if len < size_of::() { return Err(io::Errno::INVAL); } - let decode = *storage.cast::(); + let decode = &*storage.cast::(); Ok(SocketAddrAny::V6(SocketAddrV6::new( Ipv6Addr::from(decode.sin6_addr.in6_u.u6_addr8), u16::from_be(decode.sin6_port), @@ -87,12 +87,11 @@ if len == offsetof_sun_path { Ok(SocketAddrAny::Unix(SocketAddrUnix::new(&[][..])?)) } else { - let decode = *storage.cast::(); + let decode = &*storage.cast::(); // On Linux check for Linux's [abstract namespace]. // // [abstract namespace]: https://man7.org/linux/man-pages/man7/unix.7.html - #[cfg(linux_kernel)] if decode.sun_path[0] == 0 { return SocketAddrUnix::new_abstract_name( &decode.sun_path[1..len - offsetof_sun_path], @@ -139,7 +138,7 @@ match read_ss_family(storage).into() { c::AF_INET => { assert!(len >= size_of::()); - let decode = *storage.cast::(); + let decode = &*storage.cast::(); SocketAddrAny::V4(SocketAddrV4::new( Ipv4Addr::from(u32::from_be(decode.sin_addr.s_addr)), u16::from_be(decode.sin_port), @@ -147,7 +146,7 @@ } c::AF_INET6 => { assert!(len >= size_of::()); - let decode = *storage.cast::(); + let decode = &*storage.cast::(); SocketAddrAny::V6(SocketAddrV6::new( Ipv6Addr::from(decode.sin6_addr.in6_u.u6_addr8), u16::from_be(decode.sin6_port), @@ -160,12 +159,11 @@ if len == offsetof_sun_path { SocketAddrAny::Unix(SocketAddrUnix::new(&[][..]).unwrap()) } else { - let decode = *storage.cast::(); + let decode = &*storage.cast::(); // On Linux check for Linux's [abstract namespace]. // // [abstract namespace]: https://man7.org/linux/man-pages/man7/unix.7.html - #[cfg(linux_kernel)] if decode.sun_path[0] == 0 { return SocketAddrAny::Unix( SocketAddrUnix::new_abstract_name( diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/send_recv.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/send_recv.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/send_recv.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/send_recv.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -use super::super::c; +use crate::backend::c; use bitflags::bitflags; bitflags! { @@ -6,6 +6,8 @@ /// /// [`send`]: crate::net::send /// [`sendto`]: crate::net::sendto + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct SendFlags: u32 { /// `MSG_CONFIRM` const CONFIRM = c::MSG_CONFIRM; @@ -29,6 +31,8 @@ /// /// [`recv`]: crate::net::recv /// [`recvfrom`]: crate::net::recvfrom + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct RecvFlags: u32 { /// `MSG_CMSG_CLOEXEC` const CMSG_CLOEXEC = c::MSG_CMSG_CLOEXEC; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,32 +6,30 @@ #![allow(unsafe_code)] #![allow(clippy::undocumented_unsafe_blocks)] -use super::super::c; -use super::super::conv::{ - by_mut, by_ref, c_int, c_uint, ret, ret_owned_fd, ret_usize, size_of, slice, slice_mut, - socklen_t, zero, -}; use super::msghdr::{ with_noaddr_msghdr, with_recv_msghdr, with_unix_msghdr, with_v4_msghdr, with_v6_msghdr, }; use super::read_sockaddr::{initialize_family_to_unspec, maybe_read_sockaddr_os, read_sockaddr_os}; use super::send_recv::{RecvFlags, SendFlags}; -use super::types::{AddressFamily, Protocol, Shutdown, SocketFlags, SocketType}; use super::write_sockaddr::{encode_sockaddr_v4, encode_sockaddr_v6}; +use crate::backend::c; +use crate::backend::conv::{ + by_mut, by_ref, c_int, c_uint, ret, ret_owned_fd, ret_usize, size_of, slice, slice_mut, + socklen_t, zero, +}; use crate::fd::{BorrowedFd, OwnedFd}; use crate::io::{self, IoSlice, IoSliceMut}; use crate::net::{ - RecvAncillaryBuffer, RecvMsgReturn, SendAncillaryBuffer, SocketAddrAny, SocketAddrUnix, - SocketAddrV4, SocketAddrV6, + AddressFamily, Protocol, RecvAncillaryBuffer, RecvMsgReturn, SendAncillaryBuffer, Shutdown, + SocketAddrAny, SocketAddrUnix, SocketAddrV4, SocketAddrV6, SocketFlags, SocketType, }; use c::{sockaddr, sockaddr_in, sockaddr_in6, socklen_t}; -use core::convert::TryInto; use core::mem::MaybeUninit; #[cfg(target_arch = "x86")] use { - super::super::conv::{slice_just_addr, x86_sys}, - super::super::reg::{ArgReg, SocketArg}, - linux_raw_sys::general::{ + crate::backend::conv::{slice_just_addr, x86_sys}, + crate::backend::reg::{ArgReg, SocketArg}, + linux_raw_sys::net::{ SYS_ACCEPT, SYS_ACCEPT4, SYS_BIND, SYS_CONNECT, SYS_GETPEERNAME, SYS_GETSOCKNAME, SYS_GETSOCKOPT, SYS_LISTEN, SYS_RECV, SYS_RECVFROM, SYS_RECVMSG, SYS_SEND, SYS_SENDMSG, SYS_SENDTO, SYS_SETSOCKOPT, SYS_SHUTDOWN, SYS_SOCKET, SYS_SOCKETPAIR, @@ -42,7 +40,7 @@ pub(crate) fn socket( family: AddressFamily, type_: SocketType, - protocol: Protocol, + protocol: Option, ) -> io::Result { #[cfg(not(target_arch = "x86"))] unsafe { @@ -67,7 +65,7 @@ family: AddressFamily, type_: SocketType, flags: SocketFlags, - protocol: Protocol, + protocol: Option, ) -> io::Result { #[cfg(not(target_arch = "x86"))] unsafe { @@ -97,7 +95,7 @@ family: AddressFamily, type_: SocketType, flags: SocketFlags, - protocol: Protocol, + protocol: Option, ) -> io::Result<(OwnedFd, OwnedFd)> { #[cfg(not(target_arch = "x86"))] unsafe { @@ -256,14 +254,8 @@ with_recv_msghdr(&mut storage, iov, control, |msghdr| { #[cfg(not(target_arch = "x86"))] - let result = unsafe { - ret_usize(syscall!( - __NR_recvmsg, - sockfd, - by_mut(msghdr), - c_uint(msg_flags.bits()) - )) - }; + let result = + unsafe { ret_usize(syscall!(__NR_recvmsg, sockfd, by_mut(msghdr), msg_flags)) }; #[cfg(target_arch = "x86")] let result = unsafe { @@ -273,7 +265,7 @@ slice_just_addr::, _>(&[ sockfd.into(), by_mut(msghdr), - c_uint(msg_flags.bits()).into(), + msg_flags.into(), ]) )) }; @@ -286,14 +278,14 @@ RecvMsgReturn { bytes, address: addr, - flags: RecvFlags::from_bits_truncate(msghdr.msg_flags), + flags: RecvFlags::from_bits_retain(msghdr.msg_flags), } }) }) } #[inline] -pub(crate) fn sendmsg_noaddr( +pub(crate) fn sendmsg( sockfd: BorrowedFd<'_>, iov: &[IoSlice<'_>], control: &mut SendAncillaryBuffer<'_, '_, '_>, @@ -301,14 +293,8 @@ ) -> io::Result { with_noaddr_msghdr(iov, control, |msghdr| { #[cfg(not(target_arch = "x86"))] - let result = unsafe { - ret_usize(syscall!( - __NR_sendmsg, - sockfd, - by_ref(&msghdr), - c_uint(msg_flags.bits()) - )) - }; + let result = + unsafe { ret_usize(syscall!(__NR_sendmsg, sockfd, by_ref(&msghdr), msg_flags)) }; #[cfg(target_arch = "x86")] let result = unsafe { @@ -318,7 +304,7 @@ slice_just_addr::, _>(&[ sockfd.into(), by_ref(&msghdr), - c_uint(msg_flags.bits()) + msg_flags.into() ]) )) }; @@ -337,14 +323,8 @@ ) -> io::Result { with_v4_msghdr(addr, iov, control, |msghdr| { #[cfg(not(target_arch = "x86"))] - let result = unsafe { - ret_usize(syscall!( - __NR_sendmsg, - sockfd, - by_ref(&msghdr), - c_uint(msg_flags.bits()) - )) - }; + let result = + unsafe { ret_usize(syscall!(__NR_sendmsg, sockfd, by_ref(&msghdr), msg_flags)) }; #[cfg(target_arch = "x86")] let result = unsafe { @@ -354,7 +334,7 @@ slice_just_addr::, _>(&[ sockfd.into(), by_ref(&msghdr), - c_uint(msg_flags.bits()) + msg_flags.into(), ]) )) }; @@ -373,14 +353,8 @@ ) -> io::Result { with_v6_msghdr(addr, iov, control, |msghdr| { #[cfg(not(target_arch = "x86"))] - let result = unsafe { - ret_usize(syscall!( - __NR_sendmsg, - sockfd, - by_ref(&msghdr), - c_uint(msg_flags.bits()) - )) - }; + let result = + unsafe { ret_usize(syscall!(__NR_sendmsg, sockfd, by_ref(&msghdr), msg_flags)) }; #[cfg(target_arch = "x86")] let result = unsafe { @@ -390,7 +364,7 @@ slice_just_addr::, _>(&[ sockfd.into(), by_ref(&msghdr), - c_uint(msg_flags.bits()) + msg_flags.into() ]) )) }; @@ -409,14 +383,8 @@ ) -> io::Result { with_unix_msghdr(addr, iov, control, |msghdr| { #[cfg(not(target_arch = "x86"))] - let result = unsafe { - ret_usize(syscall!( - __NR_sendmsg, - sockfd, - by_ref(&msghdr), - c_uint(msg_flags.bits()) - )) - }; + let result = + unsafe { ret_usize(syscall!(__NR_sendmsg, sockfd, by_ref(&msghdr), msg_flags)) }; #[cfg(target_arch = "x86")] let result = unsafe { @@ -426,7 +394,7 @@ slice_just_addr::, _>(&[ sockfd.into(), by_ref(&msghdr), - c_uint(msg_flags.bits()) + msg_flags.into() ]) )) }; @@ -462,6 +430,7 @@ #[cfg(not(any( target_arch = "aarch64", target_arch = "mips64", + target_arch = "mips64r6", target_arch = "riscv64", target_arch = "x86", target_arch = "x86_64", @@ -472,6 +441,7 @@ #[cfg(any( target_arch = "aarch64", target_arch = "mips64", + target_arch = "mips64r6", target_arch = "riscv64", target_arch = "x86_64", ))] @@ -617,6 +587,7 @@ #[cfg(not(any( target_arch = "aarch64", target_arch = "mips64", + target_arch = "mips64r6", target_arch = "riscv64", target_arch = "x86", target_arch = "x86_64", @@ -627,6 +598,7 @@ #[cfg(any( target_arch = "aarch64", target_arch = "mips64", + target_arch = "mips64r6", target_arch = "riscv64", target_arch = "x86_64", ))] @@ -948,15 +920,11 @@ use super::{c, BorrowedFd}; use crate::io; use crate::net::sockopt::Timeout; - use crate::net::{Ipv4Addr, Ipv6Addr, SocketType}; + use crate::net::{AddressFamily, Ipv4Addr, Ipv6Addr, SocketType}; use c::{SO_RCVTIMEO_NEW, SO_RCVTIMEO_OLD, SO_SNDTIMEO_NEW, SO_SNDTIMEO_OLD}; - use core::convert::TryInto; use core::time::Duration; use linux_raw_sys::general::{__kernel_timespec, timeval}; - // TODO: With Rust 1.53 we can use `Duration::ZERO` instead. - const DURATION_ZERO: Duration = Duration::from_secs(0); - #[inline] fn getsockopt(fd: BorrowedFd<'_>, level: u32, optname: u32) -> io::Result { use super::*; @@ -1106,12 +1074,7 @@ #[inline] pub(crate) fn get_socket_linger(fd: BorrowedFd<'_>) -> io::Result> { let linger: c::linger = getsockopt(fd, c::SOL_SOCKET as _, c::SO_LINGER)?; - // TODO: With Rust 1.50, this could use `.then`. - Ok(if linger.l_onoff != 0 { - Some(Duration::from_secs(linger.l_linger as u64)) - } else { - None - }) + Ok((linger.l_onoff != 0).then(|| Duration::from_secs(linger.l_linger as u64))) } #[inline] @@ -1216,7 +1179,7 @@ fn duration_to_linux(timeout: Option) -> io::Result<__kernel_timespec> { Ok(match timeout { Some(timeout) => { - if timeout == DURATION_ZERO { + if timeout == Duration::ZERO { return Err(io::Errno::INVAL); } let mut timeout = __kernel_timespec { @@ -1239,7 +1202,7 @@ fn duration_to_linux_old(timeout: Option) -> io::Result { Ok(match timeout { Some(timeout) => { - if timeout == DURATION_ZERO { + if timeout == Duration::ZERO { return Err(io::Errno::INVAL); } @@ -1309,6 +1272,14 @@ } #[inline] + pub(crate) fn get_socket_domain(fd: BorrowedFd<'_>) -> io::Result { + let domain: c::c_int = getsockopt(fd, c::SOL_SOCKET as _, c::SO_DOMAIN)?; + Ok(AddressFamily( + domain.try_into().map_err(|_| io::Errno::OPNOTSUPP)?, + )) + } + + #[inline] pub(crate) fn set_ip_ttl(fd: BorrowedFd<'_>, ttl: u32) -> io::Result<()> { setsockopt(fd, c::IPPROTO_IP as _, c::IP_TTL, ttl) } @@ -1482,7 +1453,7 @@ #[inline] fn to_ipv6mr_multiaddr(multiaddr: &Ipv6Addr) -> c::in6_addr { c::in6_addr { - in6_u: linux_raw_sys::general::in6_addr__bindgen_ty_1 { + in6_u: linux_raw_sys::net::in6_addr__bindgen_ty_1 { u6_addr8: multiaddr.octets(), }, } diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/types.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/types.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,275 +0,0 @@ -use super::super::c; -use bitflags::bitflags; - -/// A type for holding raw integer socket types. -#[doc(hidden)] -pub type RawSocketType = u32; - -/// `SOCK_*` constants for use with [`socket`]. -/// -/// [`socket`]: crate::net::socket -#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] -#[repr(transparent)] -pub struct SocketType(pub(crate) RawSocketType); - -#[rustfmt::skip] -impl SocketType { - /// `SOCK_STREAM` - pub const STREAM: Self = Self(c::SOCK_STREAM); - - /// `SOCK_DGRAM` - pub const DGRAM: Self = Self(c::SOCK_DGRAM); - - /// `SOCK_SEQPACKET` - pub const SEQPACKET: Self = Self(c::SOCK_SEQPACKET); - - /// `SOCK_RAW` - pub const RAW: Self = Self(c::SOCK_RAW); - - /// `SOCK_RDM` - pub const RDM: Self = Self(c::SOCK_RDM); - - /// Constructs a `SocketType` from a raw integer. - #[inline] - pub const fn from_raw(raw: RawSocketType) -> Self { - Self(raw) - } - - /// Returns the raw integer for this `SocketType`. - #[inline] - pub const fn as_raw(self) -> RawSocketType { - self.0 - } -} - -/// A type for holding raw integer address families. -#[doc(hidden)] -pub type RawAddressFamily = c::sa_family_t; - -/// `AF_*` constants. -#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] -#[repr(transparent)] -pub struct AddressFamily(pub(crate) RawAddressFamily); - -#[rustfmt::skip] -#[allow(non_upper_case_globals)] -impl AddressFamily { - /// `AF_UNSPEC` - pub const UNSPEC: Self = Self(c::AF_UNSPEC as _); - /// `AF_INET` - pub const INET: Self = Self(c::AF_INET as _); - /// `AF_INET6` - pub const INET6: Self = Self(c::AF_INET6 as _); - /// `AF_NETLINK` - pub const NETLINK: Self = Self(c::AF_NETLINK as _); - /// `AF_UNIX`, aka `AF_LOCAL` - #[doc(alias = "LOCAL")] - pub const UNIX: Self = Self(c::AF_UNIX as _); - /// `AF_AX25` - pub const AX25: Self = Self(c::AF_AX25 as _); - /// `AF_IPX` - pub const IPX: Self = Self(c::AF_IPX as _); - /// `AF_APPLETALK` - pub const APPLETALK: Self = Self(c::AF_APPLETALK as _); - /// `AF_NETROM` - pub const NETROM: Self = Self(c::AF_NETROM as _); - /// `AF_BRIDGE` - pub const BRIDGE: Self = Self(c::AF_BRIDGE as _); - /// `AF_ATMPVC` - pub const ATMPVC: Self = Self(c::AF_ATMPVC as _); - /// `AF_X25` - pub const X25: Self = Self(c::AF_X25 as _); - /// `AF_ROSE` - pub const ROSE: Self = Self(c::AF_ROSE as _); - /// `AF_DECnet` - pub const DECnet: Self = Self(c::AF_DECnet as _); - /// `AF_NETBEUI` - pub const NETBEUI: Self = Self(c::AF_NETBEUI as _); - /// `AF_SECURITY` - pub const SECURITY: Self = Self(c::AF_SECURITY as _); - /// `AF_KEY` - pub const KEY: Self = Self(c::AF_KEY as _); - /// `AF_PACKET` - pub const PACKET: Self = Self(c::AF_PACKET as _); - /// `AF_ASH` - pub const ASH: Self = Self(c::AF_ASH as _); - /// `AF_ECONET` - pub const ECONET: Self = Self(c::AF_ECONET as _); - /// `AF_ATMSVC` - pub const ATMSVC: Self = Self(c::AF_ATMSVC as _); - /// `AF_RDS` - pub const RDS: Self = Self(c::AF_RDS as _); - /// `AF_SNA` - pub const SNA: Self = Self(c::AF_SNA as _); - /// `AF_IRDA` - pub const IRDA: Self = Self(c::AF_IRDA as _); - /// `AF_PPPOX` - pub const PPPOX: Self = Self(c::AF_PPPOX as _); - /// `AF_WANPIPE` - pub const WANPIPE: Self = Self(c::AF_WANPIPE as _); - /// `AF_LLC` - pub const LLC: Self = Self(c::AF_LLC as _); - /// `AF_CAN` - pub const CAN: Self = Self(c::AF_CAN as _); - /// `AF_TIPC` - pub const TIPC: Self = Self(c::AF_TIPC as _); - /// `AF_BLUETOOTH` - pub const BLUETOOTH: Self = Self(c::AF_BLUETOOTH as _); - /// `AF_IUCV` - pub const IUCV: Self = Self(c::AF_IUCV as _); - /// `AF_RXRPC` - pub const RXRPC: Self = Self(c::AF_RXRPC as _); - /// `AF_ISDN` - pub const ISDN: Self = Self(c::AF_ISDN as _); - /// `AF_PHONET` - pub const PHONET: Self = Self(c::AF_PHONET as _); - /// `AF_IEEE802154` - pub const IEEE802154: Self = Self(c::AF_IEEE802154 as _); - - /// Constructs a `AddressFamily` from a raw integer. - #[inline] - pub const fn from_raw(raw: RawAddressFamily) -> Self { - Self(raw) - } - - /// Returns the raw integer for this `AddressFamily`. - #[inline] - pub const fn as_raw(self) -> RawAddressFamily { - self.0 - } -} - -/// A type for holding raw integer protocols. -#[doc(hidden)] -pub type RawProtocol = u32; - -/// `IPPROTO_*` constants for use with [`socket`] and [`socket_with`]. -/// -/// [`socket`]: crate::net::socket -/// [`socket_with`]: crate::net::socket_with -#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] -#[repr(transparent)] -pub struct Protocol(pub(crate) RawProtocol); - -#[rustfmt::skip] -impl Protocol { - /// `IPPROTO_IP` - pub const IP: Self = Self(c::IPPROTO_IP as _); - /// `IPPROTO_ICMP` - pub const ICMP: Self = Self(c::IPPROTO_ICMP as _); - /// `IPPROTO_IGMP` - pub const IGMP: Self = Self(c::IPPROTO_IGMP as _); - /// `IPPROTO_IPIP` - pub const IPIP: Self = Self(c::IPPROTO_IPIP as _); - /// `IPPROTO_TCP` - pub const TCP: Self = Self(c::IPPROTO_TCP as _); - /// `IPPROTO_EGP` - pub const EGP: Self = Self(c::IPPROTO_EGP as _); - /// `IPPROTO_PUP` - pub const PUP: Self = Self(c::IPPROTO_PUP as _); - /// `IPPROTO_UDP` - pub const UDP: Self = Self(c::IPPROTO_UDP as _); - /// `IPPROTO_IDP` - pub const IDP: Self = Self(c::IPPROTO_IDP as _); - /// `IPPROTO_TP` - pub const TP: Self = Self(c::IPPROTO_TP as _); - /// `IPPROTO_DCCP` - pub const DCCP: Self = Self(c::IPPROTO_DCCP as _); - /// `IPPROTO_IPV6` - pub const IPV6: Self = Self(c::IPPROTO_IPV6 as _); - /// `IPPROTO_RSVP` - pub const RSVP: Self = Self(c::IPPROTO_RSVP as _); - /// `IPPROTO_GRE` - pub const GRE: Self = Self(c::IPPROTO_GRE as _); - /// `IPPROTO_ESP` - pub const ESP: Self = Self(c::IPPROTO_ESP as _); - /// `IPPROTO_AH` - pub const AH: Self = Self(c::IPPROTO_AH as _); - /// `IPPROTO_MTP` - pub const MTP: Self = Self(c::IPPROTO_MTP as _); - /// `IPPROTO_BEETPH` - pub const BEETPH: Self = Self(c::IPPROTO_BEETPH as _); - /// `IPPROTO_ENCAP` - pub const ENCAP: Self = Self(c::IPPROTO_ENCAP as _); - /// `IPPROTO_PIM` - pub const PIM: Self = Self(c::IPPROTO_PIM as _); - /// `IPPROTO_COMP` - pub const COMP: Self = Self(c::IPPROTO_COMP as _); - /// `IPPROTO_SCTP` - pub const SCTP: Self = Self(c::IPPROTO_SCTP as _); - /// `IPPROTO_UDPLITE` - pub const UDPLITE: Self = Self(c::IPPROTO_UDPLITE as _); - /// `IPPROTO_MPLS` - pub const MPLS: Self = Self(c::IPPROTO_MPLS as _); - /// `IPPROTO_ETHERNET` - pub const ETHERNET: Self = Self(c::IPPROTO_ETHERNET as _); - /// `IPPROTO_RAW` - pub const RAW: Self = Self(c::IPPROTO_RAW as _); - /// `IPPROTO_MPTCP` - pub const MPTCP: Self = Self(c::IPPROTO_MPTCP as _); - /// `IPPROTO_FRAGMENT` - pub const FRAGMENT: Self = Self(c::IPPROTO_FRAGMENT as _); - /// `IPPROTO_ICMPV6` - pub const ICMPV6: Self = Self(c::IPPROTO_ICMPV6 as _); - /// `IPPROTO_MH` - pub const MH: Self = Self(c::IPPROTO_MH as _); - /// `IPPROTO_ROUTING` - pub const ROUTING: Self = Self(c::IPPROTO_ROUTING as _); - - /// Constructs a `Protocol` from a raw integer. - #[inline] - pub const fn from_raw(raw: RawProtocol) -> Self { - Self(raw) - } - - /// Returns the raw integer for this `Protocol`. - #[inline] - pub const fn as_raw(self) -> RawProtocol { - self.0 - } -} - -/// `SHUT_*` constants for use with [`shutdown`]. -/// -/// [`shutdown`]: crate::net::shutdown -#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] -#[repr(u32)] -pub enum Shutdown { - /// `SHUT_RD`—Disable further read operations. - Read = c::SHUT_RD, - /// `SHUT_WR`—Disable further write operations. - Write = c::SHUT_WR, - /// `SHUT_RDWR`—Disable further read and write operations. - ReadWrite = c::SHUT_RDWR, -} - -bitflags! { - /// `SOCK_*` constants for use with [`socket_with`], [`accept_with`] and - /// [`acceptfrom_with`]. - /// - /// [`socket_with`]: crate::net::socket_with - /// [`accept_with`]: crate::net::accept_with - /// [`acceptfrom_with`]: crate::net::acceptfrom_with - pub struct SocketFlags: c::c_uint { - /// `SOCK_NONBLOCK` - const NONBLOCK = c::O_NONBLOCK; - - /// `SOCK_CLOEXEC` - const CLOEXEC = c::O_CLOEXEC; - } -} - -/// Timeout identifier for use with [`set_socket_timeout`] and -/// [`get_socket_timeout`]. -/// -/// [`set_socket_timeout`]: crate::net::sockopt::set_socket_timeout. -/// [`get_socket_timeout`]: crate::net::sockopt::get_socket_timeout. -#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] -#[repr(u32)] -pub enum Timeout { - /// `SO_RCVTIMEO`—Timeout for receiving. - Recv = c::SO_RCVTIMEO_NEW, - - /// `SO_SNDTIMEO`—Timeout for sending. - Send = c::SO_SNDTIMEO_NEW, -} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/write_sockaddr.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/write_sockaddr.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/write_sockaddr.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/net/write_sockaddr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,7 @@ //! we can interpret the rest of a `sockaddr` produced by the kernel. #![allow(unsafe_code)] -use super::super::c; +use crate::backend::c; use crate::net::{SocketAddrAny, SocketAddrStorage, SocketAddrUnix, SocketAddrV4, SocketAddrV6}; use core::mem::size_of; @@ -17,7 +17,7 @@ } } -pub(crate) unsafe fn encode_sockaddr_v4(v4: &SocketAddrV4) -> c::sockaddr_in { +pub(crate) fn encode_sockaddr_v4(v4: &SocketAddrV4) -> c::sockaddr_in { c::sockaddr_in { sin_family: c::AF_INET as _, sin_port: u16::to_be(v4.port()), @@ -34,13 +34,13 @@ size_of::() } -pub(crate) unsafe fn encode_sockaddr_v6(v6: &SocketAddrV6) -> c::sockaddr_in6 { +pub(crate) fn encode_sockaddr_v6(v6: &SocketAddrV6) -> c::sockaddr_in6 { c::sockaddr_in6 { sin6_family: c::AF_INET6 as _, sin6_port: u16::to_be(v6.port()), sin6_flowinfo: u32::to_be(v6.flowinfo()), sin6_addr: c::in6_addr { - in6_u: linux_raw_sys::general::in6_addr__bindgen_ty_1 { + in6_u: linux_raw_sys::net::in6_addr__bindgen_ty_1 { u6_addr8: v6.ip().octets(), }, }, diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/param/auxv.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/param/auxv.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/param/auxv.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/param/auxv.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,12 +5,11 @@ //! This uses raw pointers to locate and read the kernel-provided auxv array. #![allow(unsafe_code)] -use super::super::c; -use super::super::elf::*; +use crate::backend::c; +use crate::backend::elf::*; use crate::fd::OwnedFd; #[cfg(feature = "param")] use crate::ffi::CStr; -#[cfg(not(target_vendor = "mustang"))] use crate::fs::{Mode, OFlags}; use crate::utils::{as_ptr, check_raw_pointer}; use alloc::vec::Vec; @@ -32,7 +31,7 @@ let mut page_size = PAGE_SIZE.load(Relaxed); if page_size == 0 { - init_from_proc_self_auxv(); + init_auxv(); page_size = PAGE_SIZE.load(Relaxed); } @@ -45,7 +44,7 @@ let mut ticks = CLOCK_TICKS_PER_SECOND.load(Relaxed); if ticks == 0 { - init_from_proc_self_auxv(); + init_auxv(); ticks = CLOCK_TICKS_PER_SECOND.load(Relaxed); } @@ -59,7 +58,7 @@ let mut hwcap2 = HWCAP2.load(Relaxed); if hwcap == 0 || hwcap2 == 0 { - init_from_proc_self_auxv(); + init_auxv(); hwcap = HWCAP.load(Relaxed); hwcap2 = HWCAP2.load(Relaxed); } @@ -73,7 +72,7 @@ let mut execfn = EXECFN.load(Relaxed); if execfn.is_null() { - init_from_proc_self_auxv(); + init_auxv(); execfn = EXECFN.load(Relaxed); } @@ -89,7 +88,7 @@ let mut phnum = PHNUM.load(Relaxed); if phdr.is_null() || phnum == 0 { - init_from_proc_self_auxv(); + init_auxv(); phdr = PHDR.load(Relaxed); phnum = PHNUM.load(Relaxed); } @@ -107,14 +106,14 @@ unsafe { slice::from_raw_parts(phdr.cast(), phnum) } } -/// `AT_SYSINFO_EHDR` isn't present on all platforms in all configurations, -/// so if we don't see it, this function returns a null pointer. +/// `AT_SYSINFO_EHDR` isn't present on all platforms in all configurations, so +/// if we don't see it, this function returns a null pointer. #[inline] pub(in super::super) fn sysinfo_ehdr() -> *const Elf_Ehdr { let mut ehdr = SYSINFO_EHDR.load(Relaxed); if ehdr.is_null() { - init_from_proc_self_auxv(); + init_auxv(); ehdr = SYSINFO_EHDR.load(Relaxed); } @@ -130,30 +129,64 @@ static PHNUM: AtomicUsize = AtomicUsize::new(0); static EXECFN: AtomicPtr = AtomicPtr::new(null_mut()); -/// On non-Mustang platforms, we read the aux vector from /proc/self/auxv. -#[cfg(not(target_vendor = "mustang"))] -fn init_from_proc_self_auxv() { +fn pr_get_auxv() -> crate::io::Result> { + use super::super::conv::{c_int, pass_usize, ret_usize}; + const PR_GET_AUXV: c::c_int = 0x41555856; + let mut buffer = alloc::vec![0u8; 512]; + let len = unsafe { + ret_usize(syscall_always_asm!( + __NR_prctl, + c_int(PR_GET_AUXV), + buffer.as_ptr(), + pass_usize(buffer.len()) + ))? + }; + if len <= buffer.len() { + buffer.truncate(len); + return Ok(buffer); + } + buffer.resize(len, 0); + let len = unsafe { + ret_usize(syscall_always_asm!( + __NR_prctl, + c_int(PR_GET_AUXV), + buffer.as_ptr(), + pass_usize(buffer.len()) + ))? + }; + assert_eq!(len, buffer.len()); + return Ok(buffer); +} + +/// On non-Mustang platforms, we read the aux vector via the `prctl` +/// `PR_GET_AUXV`, with a fallback to /proc/self/auxv for kernels that don't +/// support `PR_GET_AUXV`. +#[cold] +fn init_auxv() { + match pr_get_auxv() { + Ok(buffer) => { + // SAFETY: We assume the kernel returns a valid auxv. + unsafe { + init_from_auxp(buffer.as_ptr().cast()); + } + return; + } + Err(_) => { + // Fall back to /proc/self/auxv on error. + } + } + // Open "/proc/self/auxv", either because we trust "/proc", or because // we're running inside QEMU and `proc_self_auxv`'s extra checking foils // QEMU's emulation so we need to do a plain open to get the right // auxv records. - let file = crate::fs::openat( - crate::fs::cwd(), - "/proc/self/auxv", - OFlags::RDONLY, - Mode::empty(), - ) - .unwrap(); + let file = crate::fs::open("/proc/self/auxv", OFlags::RDONLY, Mode::empty()).unwrap(); let _ = init_from_auxv_file(file); } -#[cfg(target_vendor = "mustang")] -fn init_from_proc_self_auxv() { - panic!("mustang should have initialized the auxv values"); -} - /// Process auxv entries from the open file `auxv`. +#[cold] fn init_from_auxv_file(auxv: OwnedFd) -> Option<()> { let mut buffer = Vec::::with_capacity(512); loop { @@ -189,6 +222,7 @@ /// /// The buffer contains `Elf_aux_t` elements, though it need not be aligned; /// function uses `read_unaligned` to read from it. +#[cold] unsafe fn init_from_auxp(mut auxp: *const Elf_auxv_t) -> Option<()> { let mut pagesz = 0; let mut clktck = 0; @@ -241,6 +275,7 @@ /// `base` is some value we got from a `AT_BASE` aux record somewhere, /// which hopefully holds the value of the program interpreter in memory. Do a /// series of checks to be as sure as we can that it's safe to use. +#[cold] unsafe fn check_interpreter_base(base: *const Elf_Ehdr) -> Option<()> { check_elf_base(base)?; Some(()) @@ -251,6 +286,7 @@ /// `base` is some value we got from a `AT_SYSINFO_EHDR` aux record somewhere, /// which hopefully holds the value of the kernel-provided vDSO in memory. Do a /// series of checks to be as sure as we can that it's safe to use. +#[cold] unsafe fn check_vdso_base(base: *const Elf_Ehdr) -> Option> { // In theory, we could check that we're not attempting to parse our own ELF // image, as an additional check. However, older Linux toolchains don't @@ -276,7 +312,7 @@ // as an arbitrary system call which writes to a buffer and fails with // `EFAULT` if the buffer is not writable. { - use super::super::conv::{c_uint, ret}; + use crate::backend::conv::{c_uint, ret}; if ret(syscall!( __NR_clock_getres, c_uint(linux_raw_sys::general::CLOCK_MONOTONIC), @@ -300,11 +336,12 @@ } /// Check that `base` is a valid pointer to an ELF image. +#[cold] unsafe fn check_elf_base(base: *const Elf_Ehdr) -> Option> { - // If we're reading a 64-bit auxv on a 32-bit platform, we'll see - // a zero `a_val` because `AT_*` values are never greater than - // `u32::MAX`. Zero is used by libc's `getauxval` to indicate - // errors, so it should never be a valid value. + // If we're reading a 64-bit auxv on a 32-bit platform, we'll see a zero + // `a_val` because `AT_*` values are never greater than `u32::MAX`. Zero is + // used by libc's `getauxval` to indicate errors, so it should never be a + // valid value. if base.is_null() { return None; } diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/param/libc_auxv.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/param/libc_auxv.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/param/libc_auxv.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/param/libc_auxv.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,60 +5,120 @@ //! This uses raw pointers to locate and read the kernel-provided auxv array. #![allow(unsafe_code)] -use super::super::elf::*; +use crate::backend::c; +use crate::backend::elf::*; #[cfg(feature = "param")] use crate::ffi::CStr; +#[cfg(not(feature = "runtime"))] use core::ptr::null; #[cfg(feature = "runtime")] use core::slice; -// `getauxval` wasn't supported in glibc until 2.16. -weak!(fn getauxval(libc::c_ulong) -> *mut libc::c_void); +// `getauxval` wasn't supported in glibc until 2.16. Also this lets us use +// `*mut` as the return type to preserve strict provenance. +#[cfg(not(feature = "runtime"))] +weak!(fn getauxval(c::c_ulong) -> *mut c::c_void); + +// With the "runtime" feature, go ahead and depend on `getauxval` existing so +// that we never fail. +#[cfg(feature = "runtime")] +extern "C" { + fn getauxval(type_: c::c_ulong) -> *mut c::c_void; +} + +const AT_PHDR: c::c_ulong = 3; +const AT_PHNUM: c::c_ulong = 5; +const AT_HWCAP: c::c_ulong = 16; +const AT_HWCAP2: c::c_ulong = 26; +const AT_EXECFN: c::c_ulong = 31; +const AT_SYSINFO_EHDR: c::c_ulong = 33; + +// Declare `sysconf` ourselves so that we don't depend on all of libc just for +// this. +extern "C" { + fn sysconf(name: c::c_int) -> c::c_long; +} + +#[cfg(target_os = "android")] +const _SC_PAGESIZE: c::c_int = 39; +#[cfg(target_os = "linux")] +const _SC_PAGESIZE: c::c_int = 30; +#[cfg(target_os = "android")] +const _SC_CLK_TCK: c::c_int = 6; +#[cfg(target_os = "linux")] +const _SC_CLK_TCK: c::c_int = 2; + +#[test] +fn test_abi() { + const_assert_eq!(self::_SC_PAGESIZE, ::libc::_SC_PAGESIZE); + const_assert_eq!(self::_SC_CLK_TCK, ::libc::_SC_CLK_TCK); + const_assert_eq!(self::AT_PHDR, ::libc::AT_PHDR); + const_assert_eq!(self::AT_PHNUM, ::libc::AT_PHNUM); + const_assert_eq!(self::AT_HWCAP, ::libc::AT_HWCAP); + const_assert_eq!(self::AT_HWCAP2, ::libc::AT_HWCAP2); + const_assert_eq!(self::AT_EXECFN, ::libc::AT_EXECFN); + const_assert_eq!(self::AT_SYSINFO_EHDR, ::libc::AT_SYSINFO_EHDR); +} #[cfg(feature = "param")] #[inline] pub(crate) fn page_size() -> usize { - unsafe { libc::sysconf(libc::_SC_PAGESIZE) as usize } + unsafe { sysconf(_SC_PAGESIZE) as usize } } #[cfg(feature = "param")] #[inline] pub(crate) fn clock_ticks_per_second() -> u64 { - unsafe { libc::sysconf(libc::_SC_CLK_TCK) as u64 } + unsafe { sysconf(_SC_CLK_TCK) as u64 } } #[cfg(feature = "param")] #[inline] pub(crate) fn linux_hwcap() -> (usize, usize) { - if let Some(libc_getauxval) = getauxval.get() { - unsafe { - let hwcap = libc_getauxval(libc::AT_HWCAP) as usize; - let hwcap2 = libc_getauxval(libc::AT_HWCAP2) as usize; + #[cfg(not(feature = "runtime"))] + unsafe { + if let Some(libc_getauxval) = getauxval.get() { + let hwcap = libc_getauxval(AT_HWCAP) as usize; + let hwcap2 = libc_getauxval(AT_HWCAP2) as usize; (hwcap, hwcap2) + } else { + (0, 0) } - } else { - (0, 0) + } + + #[cfg(feature = "runtime")] + unsafe { + let hwcap = getauxval(AT_HWCAP) as usize; + let hwcap2 = getauxval(AT_HWCAP2) as usize; + (hwcap, hwcap2) } } #[cfg(feature = "param")] #[inline] pub(crate) fn linux_execfn() -> &'static CStr { - if let Some(libc_getauxval) = getauxval.get() { - unsafe { CStr::from_ptr(libc_getauxval(libc::AT_EXECFN).cast()) } - } else { - cstr!("") + #[cfg(not(feature = "runtime"))] + unsafe { + if let Some(libc_getauxval) = getauxval.get() { + CStr::from_ptr(libc_getauxval(AT_EXECFN).cast()) + } else { + cstr!("") + } + } + + #[cfg(feature = "runtime")] + unsafe { + CStr::from_ptr(getauxval(AT_EXECFN).cast()) } } #[cfg(feature = "runtime")] #[inline] -pub(crate) fn exe_phdrs() -> (*const libc::c_void, usize) { +pub(crate) fn exe_phdrs() -> (*const c::c_void, usize) { unsafe { - ( - libc::getauxval(libc::AT_PHDR) as *const libc::c_void, - libc::getauxval(libc::AT_PHNUM) as usize, - ) + let phdr = getauxval(AT_PHDR) as *const c::c_void; + let phnum = getauxval(AT_PHNUM) as usize; + (phdr, phnum) } } @@ -76,9 +136,17 @@ /// so if we don't see it, this function returns a null pointer. #[inline] pub(in super::super) fn sysinfo_ehdr() -> *const Elf_Ehdr { - if let Some(libc_getauxval) = getauxval.get() { - unsafe { libc_getauxval(linux_raw_sys::general::AT_SYSINFO_EHDR.into()) as *const Elf_Ehdr } - } else { - null() + #[cfg(not(feature = "runtime"))] + unsafe { + if let Some(libc_getauxval) = getauxval.get() { + libc_getauxval(AT_SYSINFO_EHDR) as *const Elf_Ehdr + } else { + null() + } + } + + #[cfg(feature = "runtime")] + unsafe { + getauxval(AT_SYSINFO_EHDR) as *const Elf_Ehdr } } diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/param/mustang_auxv.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/param/mustang_auxv.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/param/mustang_auxv.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/param/mustang_auxv.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,8 +5,8 @@ //! This uses raw pointers to locate and read the kernel-provided auxv array. #![allow(unsafe_code)] -use super::super::c; -use super::super::elf::*; +use crate::backend::c; +use crate::backend::elf::*; #[cfg(feature = "param")] use crate::ffi::CStr; use core::ffi::c_void; @@ -65,8 +65,8 @@ unsafe { slice::from_raw_parts(phdr.cast(), phnum) } } -/// `AT_SYSINFO_EHDR` isn't present on all platforms in all configurations, -/// so if we don't see it, this function returns a null pointer. +/// `AT_SYSINFO_EHDR` isn't present on all platforms in all configurations, so +/// if we don't see it, this function returns a null pointer. #[inline] pub(in super::super) fn sysinfo_ehdr() -> *const Elf_Ehdr { // SAFETY: This is initialized during program startup. diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pid/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pid/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pid/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pid/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +pub(crate) mod syscalls; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pid/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pid/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pid/syscalls.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pid/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,18 @@ +//! linux_raw syscalls for PIDs +//! +//! # Safety +//! +//! See the `rustix::backend` module documentation for details. +#![allow(unsafe_code)] +#![allow(clippy::undocumented_unsafe_blocks)] + +use crate::backend::conv::ret_usize_infallible; +use crate::pid::{Pid, RawPid}; + +#[inline] +pub(crate) fn getpid() -> Pid { + unsafe { + let pid = ret_usize_infallible(syscall_readonly!(__NR_getpid)) as RawPid; + Pid::from_raw_unchecked(pid) + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pipe/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pipe/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pipe/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pipe/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,2 @@ +pub(crate) mod syscalls; +pub(crate) mod types; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pipe/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pipe/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pipe/syscalls.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pipe/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,136 @@ +//! linux_raw syscalls supporting `rustix::pipe`. +//! +//! # Safety +//! +//! See the `rustix::backend` module documentation for details. +#![allow(unsafe_code)] +#![allow(clippy::undocumented_unsafe_blocks)] + +use crate::backend::conv::{c_int, c_uint, opt_mut, pass_usize, ret, ret_usize, slice}; +use crate::backend::{c, MAX_IOV}; +use crate::fd::{BorrowedFd, OwnedFd}; +use crate::io; +use crate::pipe::{IoSliceRaw, PipeFlags, SpliceFlags}; +use core::cmp; +use core::mem::MaybeUninit; +use linux_raw_sys::general::{F_GETPIPE_SZ, F_SETPIPE_SZ}; + +#[inline] +pub(crate) fn pipe() -> io::Result<(OwnedFd, OwnedFd)> { + // aarch64 and risc64 omit `__NR_pipe`. On mips, `__NR_pipe` uses a special + // calling convention, but using it is not worth complicating our syscall + // wrapping infrastructure at this time. + #[cfg(any( + target_arch = "aarch64", + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6", + target_arch = "riscv64", + ))] + { + pipe_with(PipeFlags::empty()) + } + #[cfg(not(any( + target_arch = "aarch64", + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6", + target_arch = "riscv64", + )))] + unsafe { + let mut result = MaybeUninit::<[OwnedFd; 2]>::uninit(); + ret(syscall!(__NR_pipe, &mut result))?; + let [p0, p1] = result.assume_init(); + Ok((p0, p1)) + } +} + +#[inline] +pub(crate) fn pipe_with(flags: PipeFlags) -> io::Result<(OwnedFd, OwnedFd)> { + unsafe { + let mut result = MaybeUninit::<[OwnedFd; 2]>::uninit(); + ret(syscall!(__NR_pipe2, &mut result, flags))?; + let [p0, p1] = result.assume_init(); + Ok((p0, p1)) + } +} + +#[inline] +pub fn splice( + fd_in: BorrowedFd, + off_in: Option<&mut u64>, + fd_out: BorrowedFd, + off_out: Option<&mut u64>, + len: usize, + flags: SpliceFlags, +) -> io::Result { + unsafe { + ret_usize(syscall!( + __NR_splice, + fd_in, + opt_mut(off_in), + fd_out, + opt_mut(off_out), + pass_usize(len), + flags + )) + } +} + +#[inline] +pub unsafe fn vmsplice( + fd: BorrowedFd, + bufs: &[IoSliceRaw], + flags: SpliceFlags, +) -> io::Result { + let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), MAX_IOV)]); + ret_usize(syscall!(__NR_vmsplice, fd, bufs_addr, bufs_len, flags)) +} + +#[inline] +pub fn tee( + fd_in: BorrowedFd, + fd_out: BorrowedFd, + len: usize, + flags: SpliceFlags, +) -> io::Result { + unsafe { ret_usize(syscall!(__NR_tee, fd_in, fd_out, pass_usize(len), flags)) } +} + +#[inline] +pub(crate) fn fcntl_getpipe_sz(fd: BorrowedFd<'_>) -> io::Result { + #[cfg(target_pointer_width = "32")] + unsafe { + ret_usize(syscall_readonly!(__NR_fcntl64, fd, c_uint(F_GETPIPE_SZ))) + } + #[cfg(target_pointer_width = "64")] + unsafe { + ret_usize(syscall_readonly!(__NR_fcntl, fd, c_uint(F_GETPIPE_SZ))) + } +} + +#[inline] +pub(crate) fn fcntl_setpipe_sz(fd: BorrowedFd<'_>, size: usize) -> io::Result<()> { + let size: c::c_int = size.try_into().map_err(|_| io::Errno::PERM)?; + + #[cfg(target_pointer_width = "32")] + unsafe { + ret(syscall_readonly!( + __NR_fcntl64, + fd, + c_uint(F_SETPIPE_SZ), + c_int(size) + )) + } + #[cfg(target_pointer_width = "64")] + unsafe { + ret(syscall_readonly!( + __NR_fcntl, + fd, + c_uint(F_SETPIPE_SZ), + c_int(size) + )) + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pipe/types.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pipe/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pipe/types.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pipe/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,72 @@ +use crate::backend::c; +use bitflags::bitflags; +use core::marker::PhantomData; + +bitflags! { + /// `O_*` constants for use with [`pipe_with`]. + /// + /// [`pipe_with`]: crate::io::pipe_with + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct PipeFlags: c::c_uint { + /// `O_CLOEXEC` + const CLOEXEC = linux_raw_sys::general::O_CLOEXEC; + /// `O_DIRECT` + const DIRECT = linux_raw_sys::general::O_DIRECT; + /// `O_NONBLOCK` + const NONBLOCK = linux_raw_sys::general::O_NONBLOCK; + } +} + +bitflags! { + /// `SPLICE_F_*` constants for use with [`splice`] [`vmsplice`], and + /// [`tee`]. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct SpliceFlags: c::c_uint { + /// `SPLICE_F_MOVE` + const MOVE = linux_raw_sys::general::SPLICE_F_MOVE; + /// `SPLICE_F_NONBLOCK` + const NONBLOCK = linux_raw_sys::general::SPLICE_F_NONBLOCK; + /// `SPLICE_F_MORE` + const MORE = linux_raw_sys::general::SPLICE_F_MORE; + /// `SPLICE_F_GIFT` + const GIFT = linux_raw_sys::general::SPLICE_F_GIFT; + } +} + +/// A buffer type used with `vmsplice`. +/// +/// It is guaranteed to be ABI compatible with the iovec type on Unix platforms +/// and `WSABUF` on Windows. Unlike `IoSlice` and `IoSliceMut` it is +/// semantically like a raw pointer, and therefore can be shared or mutated as +/// needed. +#[repr(transparent)] +pub struct IoSliceRaw<'a> { + _buf: c::iovec, + _lifetime: PhantomData<&'a ()>, +} + +impl<'a> IoSliceRaw<'a> { + /// Creates a new `IoSlice` wrapping a byte slice. + pub fn from_slice(buf: &'a [u8]) -> Self { + IoSliceRaw { + _buf: c::iovec { + iov_base: (buf.as_ptr() as *mut u8).cast::(), + iov_len: buf.len() as _, + }, + _lifetime: PhantomData, + } + } + + /// Creates a new `IoSlice` wrapping a mutable byte slice. + pub fn from_slice_mut(buf: &'a mut [u8]) -> Self { + IoSliceRaw { + _buf: c::iovec { + iov_base: buf.as_mut_ptr().cast::(), + iov_len: buf.len() as _, + }, + _lifetime: PhantomData, + } + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/prctl/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/prctl/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/prctl/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/prctl/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +pub(crate) mod syscalls; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/prctl/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/prctl/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/prctl/syscalls.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/prctl/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,22 @@ +//! linux_raw syscalls supporting modules that use `prctl`. +//! +//! # Safety +//! +//! See the `rustix::backend` module documentation for details. +#![allow(unsafe_code)] +#![allow(clippy::undocumented_unsafe_blocks)] + +use crate::backend::c; +use crate::backend::conv::{c_int, ret_c_int}; +use crate::io; + +#[inline] +pub(crate) unsafe fn prctl( + option: c::c_int, + arg2: *mut c::c_void, + arg3: *mut c::c_void, + arg4: *mut c::c_void, + arg5: *mut c::c_void, +) -> io::Result { + ret_c_int(syscall!(__NR_prctl, c_int(option), arg2, arg3, arg4, arg5)) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/process/cpu_set.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/process/cpu_set.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/process/cpu_set.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/process/cpu_set.rs 2023-10-30 19:40:00.000000000 +0000 @@ -14,10 +14,7 @@ #[inline] pub(crate) fn CPU_ZERO(cpuset: &mut RawCpuSet) { - // TODO: With, Rust 1.50, use `cpuset.bits.fill(0)` instead. - for element in &mut cpuset.bits { - *element = 0; - } + cpuset.bits.fill(0) } #[inline] diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/process/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/process/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/process/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/process/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,36 +6,37 @@ #![allow(unsafe_code)] #![allow(clippy::undocumented_unsafe_blocks)] -use super::super::c; -use super::super::conv::{ - by_mut, by_ref, c_int, c_uint, negative_pid, pass_usize, ret, ret_c_int, ret_c_uint, - ret_infallible, ret_usize, ret_usize_infallible, size_of, slice, slice_just_addr, - slice_just_addr_mut, slice_mut, zero, +use super::types::RawCpuSet; +use crate::backend::c; +#[cfg(feature = "fs")] +use crate::backend::conv::slice_mut; +use crate::backend::conv::{ + by_mut, by_ref, c_int, c_uint, negative_pid, pass_usize, raw_fd, ret, ret_c_int, + ret_c_int_infallible, ret_c_uint, ret_infallible, ret_owned_fd, ret_usize, size_of, + slice_just_addr, slice_just_addr_mut, zero, }; -use super::types::{RawCpuSet, RawUname}; -use crate::backend::conv::ret_owned_fd; -use crate::fd::{AsRawFd, BorrowedFd, OwnedFd}; +use crate::fd::{AsRawFd, BorrowedFd, OwnedFd, RawFd}; +#[cfg(feature = "fs")] use crate::ffi::CStr; use crate::io; +use crate::pid::RawPid; use crate::process::{ - Cpuid, Gid, MembarrierCommand, MembarrierQuery, Pid, PidfdFlags, RawNonZeroPid, RawPid, - Resource, Rlimit, Signal, Sysinfo, Uid, WaitId, WaitOptions, WaitStatus, WaitidOptions, - WaitidStatus, + Cpuid, Gid, MembarrierCommand, MembarrierQuery, Pid, PidfdFlags, PidfdGetfdFlags, Resource, + Rlimit, Uid, WaitId, WaitOptions, WaitStatus, WaitidOptions, WaitidStatus, }; +use crate::signal::Signal; use crate::utils::as_mut_ptr; -use core::convert::TryInto; use core::mem::MaybeUninit; -use core::num::NonZeroU32; use core::ptr::{null, null_mut}; use linux_raw_sys::general::{ - __kernel_gid_t, __kernel_pid_t, __kernel_uid_t, membarrier_cmd, membarrier_cmd_flag, rlimit, - rlimit64, PRIO_PGRP, PRIO_PROCESS, PRIO_USER, RLIM64_INFINITY, RLIM_INFINITY, + membarrier_cmd, membarrier_cmd_flag, rlimit, rlimit64, PRIO_PGRP, PRIO_PROCESS, PRIO_USER, + RLIM64_INFINITY, RLIM_INFINITY, }; use linux_raw_sys::ioctl::TIOCSCTTY; -#[cfg(not(target_os = "wasi"))] #[cfg(feature = "fs")] -use {super::super::conv::ret_c_uint_infallible, crate::fs::Mode}; +use {crate::backend::conv::ret_c_uint_infallible, crate::fs::Mode}; +#[cfg(feature = "fs")] #[inline] pub(crate) fn chdir(filename: &CStr) -> io::Result<()> { unsafe { ret(syscall_readonly!(__NR_chdir, filename)) } @@ -46,13 +47,15 @@ unsafe { ret(syscall_readonly!(__NR_fchdir, fd)) } } +#[cfg(feature = "fs")] #[inline] pub(crate) fn chroot(filename: &CStr) -> io::Result<()> { unsafe { ret(syscall_readonly!(__NR_chroot, filename)) } } +#[cfg(feature = "fs")] #[inline] -pub(crate) fn getcwd(buf: &mut [u8]) -> io::Result { +pub(crate) fn getcwd(buf: &mut [MaybeUninit]) -> io::Result { let (buf_addr_mut, buf_len) = slice_mut(buf); unsafe { ret_usize(syscall!(__NR_getcwd, buf_addr_mut, buf_len)) } } @@ -65,15 +68,7 @@ c_int(membarrier_cmd::MEMBARRIER_CMD_QUERY as _), c_uint(0) )) { - Ok(query) => { - // SAFETY: The safety of `from_bits_unchecked` is discussed - // [here]. Our "source of truth" is Linux, and here, the - // `query` value is coming from Linux, so we know it only - // contains "source of truth" valid bits. - // - // [here]: https://github.com/bitflags/bitflags/pull/207#issuecomment-671668662 - MembarrierQuery::from_bits_unchecked(query) - } + Ok(query) => MembarrierQuery::from_bits_retain(query), Err(_) => MembarrierQuery::empty(), } } @@ -97,30 +92,19 @@ } #[inline] -pub(crate) fn getpid() -> Pid { - unsafe { - let pid: i32 = ret_usize_infallible(syscall_readonly!(__NR_getpid)) as __kernel_pid_t; - debug_assert!(pid > 0); - Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pid as u32)) - } -} - -#[inline] pub(crate) fn getppid() -> Option { unsafe { - let ppid: i32 = ret_usize_infallible(syscall_readonly!(__NR_getppid)) as __kernel_pid_t; - Pid::from_raw(ppid as u32) + let ppid = ret_c_int_infallible(syscall_readonly!(__NR_getppid)); + Pid::from_raw(ppid) } } #[inline] pub(crate) fn getpgid(pid: Option) -> io::Result { unsafe { - let pgid: i32 = - ret_usize(syscall_readonly!(__NR_getpgid, c_uint(Pid::as_raw(pid))))? as __kernel_pid_t; - Ok(Pid::from_raw_nonzero(NonZeroU32::new_unchecked( - pgid as u32, - ))) + let pgid = ret_c_int(syscall_readonly!(__NR_getpgid, c_int(Pid::as_raw(pid))))?; + debug_assert!(pgid > 0); + Ok(Pid::from_raw_unchecked(pgid)) } } @@ -129,8 +113,8 @@ unsafe { ret(syscall_readonly!( __NR_setpgid, - c_uint(Pid::as_raw(pid)), - c_uint(Pid::as_raw(pgid)) + c_int(Pid::as_raw(pid)), + c_int(Pid::as_raw(pgid)) )) } } @@ -140,77 +124,17 @@ // Use the `getpgrp` syscall if available. #[cfg(not(any(target_arch = "aarch64", target_arch = "riscv64")))] unsafe { - let pgid: i32 = ret_usize_infallible(syscall_readonly!(__NR_getpgrp)) as __kernel_pid_t; + let pgid = ret_c_int_infallible(syscall_readonly!(__NR_getpgrp)); debug_assert!(pgid > 0); - Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pgid as u32)) + Pid::from_raw_unchecked(pgid) } // Otherwise use `getpgrp` and pass it zero. #[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))] unsafe { - let pgid: i32 = - ret_usize_infallible(syscall_readonly!(__NR_getpgid, c_uint(0))) as __kernel_pid_t; + let pgid = ret_c_int_infallible(syscall_readonly!(__NR_getpgid, c_uint(0))); debug_assert!(pgid > 0); - Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pgid as u32)) - } -} - -#[inline] -pub(crate) fn getgid() -> Gid { - #[cfg(any(target_arch = "x86", target_arch = "sparc", target_arch = "arm"))] - unsafe { - let gid: i32 = - (ret_usize_infallible(syscall_readonly!(__NR_getgid32)) as __kernel_gid_t).into(); - Gid::from_raw(gid as u32) - } - #[cfg(not(any(target_arch = "x86", target_arch = "sparc", target_arch = "arm")))] - unsafe { - let gid = ret_usize_infallible(syscall_readonly!(__NR_getgid)) as __kernel_gid_t; - Gid::from_raw(gid as u32) - } -} - -#[inline] -pub(crate) fn getegid() -> Gid { - #[cfg(any(target_arch = "x86", target_arch = "sparc", target_arch = "arm"))] - unsafe { - let gid: i32 = - (ret_usize_infallible(syscall_readonly!(__NR_getegid32)) as __kernel_gid_t).into(); - Gid::from_raw(gid as u32) - } - #[cfg(not(any(target_arch = "x86", target_arch = "sparc", target_arch = "arm")))] - unsafe { - let gid = ret_usize_infallible(syscall_readonly!(__NR_getegid)) as __kernel_gid_t; - Gid::from_raw(gid as u32) - } -} - -#[inline] -pub(crate) fn getuid() -> Uid { - #[cfg(any(target_arch = "x86", target_arch = "sparc", target_arch = "arm"))] - unsafe { - let uid = (ret_usize_infallible(syscall_readonly!(__NR_getuid32)) as __kernel_uid_t).into(); - Uid::from_raw(uid) - } - #[cfg(not(any(target_arch = "x86", target_arch = "sparc", target_arch = "arm")))] - unsafe { - let uid = ret_usize_infallible(syscall_readonly!(__NR_getuid)) as __kernel_uid_t; - Uid::from_raw(uid as u32) - } -} - -#[inline] -pub(crate) fn geteuid() -> Uid { - #[cfg(any(target_arch = "x86", target_arch = "sparc", target_arch = "arm"))] - unsafe { - let uid: i32 = - (ret_usize_infallible(syscall_readonly!(__NR_geteuid32)) as __kernel_uid_t).into(); - Uid::from_raw(uid as u32) - } - #[cfg(not(any(target_arch = "x86", target_arch = "sparc", target_arch = "arm")))] - unsafe { - let uid = ret_usize_infallible(syscall_readonly!(__NR_geteuid)) as __kernel_uid_t; - Uid::from_raw(uid as u32) + Pid::from_raw_unchecked(pgid) } } @@ -222,7 +146,7 @@ // set bit mask. let size = ret_usize(syscall!( __NR_sched_getaffinity, - c_uint(Pid::as_raw(pid)), + c_int(Pid::as_raw(pid)), size_of::(), by_mut(&mut cpuset.bits) ))?; @@ -239,7 +163,7 @@ unsafe { ret(syscall_readonly!( __NR_sched_setaffinity, - c_uint(Pid::as_raw(pid)), + c_int(Pid::as_raw(pid)), size_of::(), slice_just_addr(&cpuset.bits) )) @@ -255,35 +179,20 @@ } } -#[inline] -pub(crate) fn uname() -> RawUname { - let mut uname = MaybeUninit::::uninit(); - unsafe { - ret_infallible(syscall!(__NR_uname, &mut uname)); - uname.assume_init() - } -} - #[cfg(feature = "fs")] #[inline] pub(crate) fn umask(mode: Mode) -> Mode { - unsafe { - // TODO: Use `from_bits_retain` when we switch to bitflags 2.0. - Mode::from_bits_truncate(ret_c_uint_infallible(syscall_readonly!(__NR_umask, mode))) - } + unsafe { Mode::from_bits_retain(ret_c_uint_infallible(syscall_readonly!(__NR_umask, mode))) } } #[inline] pub(crate) fn nice(inc: i32) -> io::Result { - let priority = if inc > -40 && inc < 40 { + let priority = (if inc > -40 && inc < 40 { inc + getpriority_process(None)? } else { inc - } - // TODO: With Rust 1.50, use `.clamp` instead of `.min` and `.max`. - //.clamp(-20, 19); - .min(19) - .max(-20); + }) + .clamp(-20, 19); setpriority_process(None, priority)?; Ok(priority) } @@ -307,7 +216,7 @@ - ret_c_int(syscall_readonly!( __NR_getpriority, c_uint(PRIO_PGRP), - c_uint(Pid::as_raw(pgid)) + c_int(Pid::as_raw(pgid)) ))?) } } @@ -319,7 +228,7 @@ - ret_c_int(syscall_readonly!( __NR_getpriority, c_uint(PRIO_PROCESS), - c_uint(Pid::as_raw(pid)) + c_int(Pid::as_raw(pid)) ))?) } } @@ -342,7 +251,7 @@ ret(syscall_readonly!( __NR_setpriority, c_uint(PRIO_PGRP), - c_uint(Pid::as_raw(pgid)), + c_int(Pid::as_raw(pgid)), c_int(priority) )) } @@ -354,7 +263,7 @@ ret(syscall_readonly!( __NR_setpriority, c_uint(PRIO_PROCESS), - c_uint(Pid::as_raw(pid)), + c_int(Pid::as_raw(pid)), c_int(priority) )) } @@ -442,7 +351,7 @@ unsafe { match ret(syscall!( __NR_prlimit64, - c_uint(Pid::as_raw(pid)), + c_int(Pid::as_raw(pid)), limit, by_ref(&lim), &mut result @@ -533,19 +442,14 @@ ) -> io::Result> { unsafe { let mut status = MaybeUninit::::uninit(); - let pid = ret_c_uint(syscall!( + let pid = ret_c_int(syscall!( __NR_wait4, c_int(pid as _), &mut status, c_int(waitopts.bits() as _), zero() ))?; - Ok(RawNonZeroPid::new(pid).map(|non_zero| { - ( - Pid::from_raw_nonzero(non_zero), - WaitStatus::new(status.assume_init()), - ) - })) + Ok(Pid::from_raw(pid).map(|pid| (pid, WaitStatus::new(status.assume_init())))) } } @@ -587,7 +491,7 @@ ret(syscall!( __NR_waitid, c_uint(c::P_PID), - c_uint(Pid::as_raw(Some(pid))), + c_int(Pid::as_raw(Some(pid))), by_mut(&mut status), c_int(options.bits() as _), zero() @@ -633,31 +537,19 @@ } } -#[cfg(feature = "runtime")] -#[inline] -pub(crate) fn exit_group(code: c::c_int) -> ! { - unsafe { syscall_noreturn!(__NR_exit_group, c_int(code)) } -} - #[inline] pub(crate) fn getsid(pid: Option) -> io::Result { unsafe { - let pid = ret_usize(syscall_readonly!(__NR_getsid, c_uint(Pid::as_raw(pid))))?; - debug_assert!(pid > 0); - Ok(Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked( - pid as u32, - ))) + let pid = ret_c_int(syscall_readonly!(__NR_getsid, c_int(Pid::as_raw(pid))))?; + Ok(Pid::from_raw_unchecked(pid)) } } #[inline] pub(crate) fn setsid() -> io::Result { unsafe { - let pid = ret_usize(syscall_readonly!(__NR_setsid))?; - debug_assert!(pid > 0); - Ok(Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked( - pid as u32, - ))) + let pid = ret_c_int(syscall_readonly!(__NR_setsid))?; + Ok(Pid::from_raw_unchecked(pid)) } } @@ -698,28 +590,27 @@ } #[inline] -pub(crate) unsafe fn prctl( - option: c::c_int, - arg2: *mut c::c_void, - arg3: *mut c::c_void, - arg4: *mut c::c_void, - arg5: *mut c::c_void, -) -> io::Result { - ret_c_int(syscall!(__NR_prctl, c_int(option), arg2, arg3, arg4, arg5)) -} - -#[inline] -pub(crate) fn pidfd_open(pid: Pid, flags: PidfdFlags) -> io::Result { +pub(crate) fn pidfd_getfd( + pidfd: BorrowedFd<'_>, + targetfd: RawFd, + flags: PidfdGetfdFlags, +) -> io::Result { unsafe { ret_owned_fd(syscall_readonly!( - __NR_pidfd_open, - pid, + __NR_pidfd_getfd, + pidfd, + raw_fd(targetfd), c_int(flags.bits() as _) )) } } #[inline] +pub(crate) fn pidfd_open(pid: Pid, flags: PidfdFlags) -> io::Result { + unsafe { ret_owned_fd(syscall_readonly!(__NR_pidfd_open, pid, flags)) } +} + +#[inline] pub(crate) fn getgroups(buf: &mut [Gid]) -> io::Result { let len = buf.len().try_into().map_err(|_| io::Errno::NOMEM)?; @@ -733,21 +624,6 @@ } #[inline] -pub(crate) fn sysinfo() -> Sysinfo { - let mut info = MaybeUninit::::uninit(); - unsafe { - ret_infallible(syscall!(__NR_sysinfo, &mut info)); - info.assume_init() - } -} - -#[inline] -pub(crate) fn sethostname(name: &[u8]) -> io::Result<()> { - let (ptr, len) = slice(name); - unsafe { ret(syscall_readonly!(__NR_sethostname, ptr, len)) } -} - -#[inline] pub(crate) fn ioctl_tiocsctty(fd: BorrowedFd<'_>) -> io::Result<()> { unsafe { ret(syscall_readonly!( diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/process/types.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/process/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/process/types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/process/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,6 @@ -use super::super::c; +use crate::backend::c; use linux_raw_sys::general::membarrier_cmd; -/// `sysinfo` -pub type Sysinfo = linux_raw_sys::general::sysinfo; - /// A command for use with [`membarrier`] and [`membarrier_cpu`]. /// /// For `MEMBARRIER_CMD_QUERY`, see [`membarrier_query`]. @@ -81,160 +78,18 @@ Rttime = linux_raw_sys::general::RLIMIT_RTTIME, } -/// A signal number for use with [`kill_process`], [`kill_process_group`], -/// and [`kill_current_process_group`]. -/// -/// [`kill_process`]: crate::process::kill_process -/// [`kill_process_group`]: crate::process::kill_process_group -/// [`kill_current_process_group`]: crate::process::kill_current_process_group -#[derive(Copy, Clone, Debug, Eq, PartialEq)] -#[repr(u32)] -pub enum Signal { - /// `SIGHUP` - Hup = linux_raw_sys::general::SIGHUP, - /// `SIGINT` - Int = linux_raw_sys::general::SIGINT, - /// `SIGQUIT` - Quit = linux_raw_sys::general::SIGQUIT, - /// `SIGILL` - Ill = linux_raw_sys::general::SIGILL, - /// `SIGTRAP` - Trap = linux_raw_sys::general::SIGTRAP, - /// `SIGABRT`, aka `SIGIOT` - #[doc(alias = "Iot")] - #[doc(alias = "Abrt")] - Abort = linux_raw_sys::general::SIGABRT, - /// `SIGEMT` - #[cfg(any( - target_arch = "mips", - target_arch = "mips64", - target_arch = "sparc", - target_arch = "sparc64" - ))] - Emt = linux_raw_sys::general::SIGEMT, - /// `SIGBUS` - Bus = linux_raw_sys::general::SIGBUS, - /// `SIGFPE` - Fpe = linux_raw_sys::general::SIGFPE, - /// `SIGKILL` - Kill = linux_raw_sys::general::SIGKILL, - /// `SIGUSR1` - Usr1 = linux_raw_sys::general::SIGUSR1, - /// `SIGSEGV` - Segv = linux_raw_sys::general::SIGSEGV, - /// `SIGUSR2` - Usr2 = linux_raw_sys::general::SIGUSR2, - /// `SIGPIPE` - Pipe = linux_raw_sys::general::SIGPIPE, - /// `SIGALRM` - #[doc(alias = "Alrm")] - Alarm = linux_raw_sys::general::SIGALRM, - /// `SIGTERM` - Term = linux_raw_sys::general::SIGTERM, - /// `SIGSTKFLT` - #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))] - Stkflt = linux_raw_sys::general::SIGSTKFLT, - /// `SIGCHLD` - #[doc(alias = "Chld")] - Child = linux_raw_sys::general::SIGCHLD, - /// `SIGCONT` - Cont = linux_raw_sys::general::SIGCONT, - /// `SIGSTOP` - Stop = linux_raw_sys::general::SIGSTOP, - /// `SIGTSTP` - Tstp = linux_raw_sys::general::SIGTSTP, - /// `SIGTTIN` - Ttin = linux_raw_sys::general::SIGTTIN, - /// `SIGTTOU` - Ttou = linux_raw_sys::general::SIGTTOU, - /// `SIGURG` - Urg = linux_raw_sys::general::SIGURG, - /// `SIGXCPU` - Xcpu = linux_raw_sys::general::SIGXCPU, - /// `SIGXFSZ` - Xfsz = linux_raw_sys::general::SIGXFSZ, - /// `SIGVTALRM` - #[doc(alias = "Vtalrm")] - Vtalarm = linux_raw_sys::general::SIGVTALRM, - /// `SIGPROF` - Prof = linux_raw_sys::general::SIGPROF, - /// `SIGWINCH` - Winch = linux_raw_sys::general::SIGWINCH, - /// `SIGIO`, aka `SIGPOLL` - #[doc(alias = "Poll")] - Io = linux_raw_sys::general::SIGIO, - /// `SIGPWR` - #[doc(alias = "Pwr")] - Power = linux_raw_sys::general::SIGPWR, - /// `SIGSYS`, aka `SIGUNUSED` - #[doc(alias = "Unused")] - Sys = linux_raw_sys::general::SIGSYS, - /// `SIGRTMIN` - Rtmin = linux_raw_sys::general::SIGRTMIN, -} - -impl Signal { - /// Convert a raw signal number into a `Signal`, if possible. - pub fn from_raw(sig: i32) -> Option { - match sig as _ { - linux_raw_sys::general::SIGHUP => Some(Self::Hup), - linux_raw_sys::general::SIGINT => Some(Self::Int), - linux_raw_sys::general::SIGQUIT => Some(Self::Quit), - linux_raw_sys::general::SIGILL => Some(Self::Ill), - linux_raw_sys::general::SIGTRAP => Some(Self::Trap), - linux_raw_sys::general::SIGABRT => Some(Self::Abort), - linux_raw_sys::general::SIGBUS => Some(Self::Bus), - linux_raw_sys::general::SIGFPE => Some(Self::Fpe), - linux_raw_sys::general::SIGKILL => Some(Self::Kill), - linux_raw_sys::general::SIGUSR1 => Some(Self::Usr1), - linux_raw_sys::general::SIGSEGV => Some(Self::Segv), - linux_raw_sys::general::SIGUSR2 => Some(Self::Usr2), - linux_raw_sys::general::SIGPIPE => Some(Self::Pipe), - linux_raw_sys::general::SIGALRM => Some(Self::Alarm), - linux_raw_sys::general::SIGTERM => Some(Self::Term), - #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))] - linux_raw_sys::general::SIGSTKFLT => Some(Self::Stkflt), - linux_raw_sys::general::SIGCHLD => Some(Self::Child), - linux_raw_sys::general::SIGCONT => Some(Self::Cont), - linux_raw_sys::general::SIGSTOP => Some(Self::Stop), - linux_raw_sys::general::SIGTSTP => Some(Self::Tstp), - linux_raw_sys::general::SIGTTIN => Some(Self::Ttin), - linux_raw_sys::general::SIGTTOU => Some(Self::Ttou), - linux_raw_sys::general::SIGURG => Some(Self::Urg), - linux_raw_sys::general::SIGXCPU => Some(Self::Xcpu), - linux_raw_sys::general::SIGXFSZ => Some(Self::Xfsz), - linux_raw_sys::general::SIGVTALRM => Some(Self::Vtalarm), - linux_raw_sys::general::SIGPROF => Some(Self::Prof), - linux_raw_sys::general::SIGWINCH => Some(Self::Winch), - linux_raw_sys::general::SIGIO => Some(Self::Io), - linux_raw_sys::general::SIGPWR => Some(Self::Power), - linux_raw_sys::general::SIGSYS => Some(Self::Sys), - linux_raw_sys::general::SIGRTMIN => Some(Self::Rtmin), - _ => None, - } - } -} - /// `EXIT_SUCCESS` pub const EXIT_SUCCESS: c::c_int = 0; /// `EXIT_FAILURE` pub const EXIT_FAILURE: c::c_int = 1; /// The status value of a child terminated with a [`Signal::Abort`] signal. +/// +/// [`Signal::Abort`]: crate::process::Signal::Abort pub const EXIT_SIGNALED_SIGABRT: c::c_int = 128 + linux_raw_sys::general::SIGABRT as i32; -/// A process identifier as a raw integer. -pub type RawPid = u32; -/// A non-zero process identifier as a raw non-zero integer. -pub type RawNonZeroPid = core::num::NonZeroU32; -/// A group identifier as a raw integer. -pub type RawGid = u32; -/// A user identifier as a raw integer. -pub type RawUid = u32; /// A CPU identifier as a raw integer. pub type RawCpuid = u32; -pub(crate) type RawUname = linux_raw_sys::general::new_utsname; - #[repr(C)] #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] pub(crate) struct RawCpuSet { diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pty/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pty/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pty/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/pty/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,19 +6,17 @@ #![allow(unsafe_code)] #![allow(clippy::undocumented_unsafe_blocks)] -use super::super::c; -use super::super::conv::{by_ref, c_uint, ret, ret_owned_fd}; +use crate::backend::c; +use crate::backend::conv::{by_ref, c_uint, ret, ret_owned_fd}; use crate::fd::{BorrowedFd, OwnedFd}; use crate::ffi::CString; use crate::io; use crate::path::DecInt; use crate::pty::OpenptFlags; -#[cfg(any(apple, freebsdlike, linux_like, target_os = "fuchsia"))] use alloc::vec::Vec; use core::mem::MaybeUninit; use linux_raw_sys::ioctl::{TIOCGPTN, TIOCGPTPEER, TIOCSPTLCK}; -#[cfg(any(apple, freebsdlike, linux_like, target_os = "fuchsia"))] #[inline] pub(crate) fn ptsname(fd: BorrowedFd, mut buffer: Vec) -> io::Result { unsafe { @@ -28,9 +26,8 @@ buffer.clear(); buffer.extend_from_slice(b"/dev/pts/"); buffer.extend_from_slice(DecInt::new(n.assume_init()).as_bytes()); - // With Rust 1.58 we can append a '\0' ourselves and use - // `from_vec_with_nul_unchecked`. - Ok(CString::from_vec_unchecked(buffer)) + buffer.push(b'\0'); + Ok(CString::from_vec_with_nul_unchecked(buffer)) } } @@ -54,7 +51,7 @@ __NR_ioctl, fd, c_uint(TIOCGPTPEER), - c_uint(flags.bits()) + flags )) } } diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/rand/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/rand/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/rand/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/rand/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,7 +6,7 @@ #![allow(unsafe_code)] #![allow(clippy::undocumented_unsafe_blocks)] -use super::super::conv::{ret_usize, slice_mut}; +use crate::backend::conv::{ret_usize, slice_mut}; use crate::io; use crate::rand::GetRandomFlags; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/rand/types.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/rand/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/rand/types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/rand/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,6 +4,8 @@ /// `GRND_*` flags for use with [`getrandom`]. /// /// [`getrandom`]: crate::rand::getrandom + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct GetRandomFlags: u32 { /// `GRND_RANDOM` const RANDOM = linux_raw_sys::general::GRND_RANDOM; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/reg.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/reg.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/reg.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/reg.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,8 @@ //! Encapsulation for system call arguments and return values. //! -//! The inline-asm and outline-asm code paths do some amount of reordering -//! of arguments; to ensure that we don't accidentally misroute an argument -//! or return value, we use distinct types for each argument index and -//! return value. +//! The inline-asm code paths do some amount of reordering of arguments; to +//! ensure that we don't accidentally misroute an argument or return value, +//! we use distinct types for each argument index and return value. //! //! # Safety //! @@ -55,7 +54,7 @@ pub(super) struct A3(()); pub(super) struct A4(()); pub(super) struct A5(()); -#[cfg(target_arch = "mips")] +#[cfg(any(target_arch = "mips", target_arch = "mips32r6"))] pub(super) struct A6(()); #[cfg(target_arch = "x86")] pub(super) struct SocketArg; @@ -67,7 +66,7 @@ impl ArgNumber for A3 {} impl ArgNumber for A4 {} impl ArgNumber for A5 {} -#[cfg(target_arch = "mips")] +#[cfg(any(target_arch = "mips", target_arch = "mips32r6"))] impl ArgNumber for A6 {} #[cfg(target_arch = "x86")] impl ArgNumber for SocketArg {} @@ -251,7 +250,7 @@ impl Sealed for super::A3 {} impl Sealed for super::A4 {} impl Sealed for super::A5 {} - #[cfg(target_arch = "mips")] + #[cfg(any(target_arch = "mips", target_arch = "mips32r6"))] impl Sealed for super::A6 {} #[cfg(target_arch = "x86")] impl Sealed for super::SocketArg {} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/runtime/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/runtime/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/runtime/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/runtime/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,12 +6,11 @@ #![allow(unsafe_code)] #![allow(clippy::undocumented_unsafe_blocks)] -use super::super::c; +use crate::backend::c; #[cfg(target_arch = "x86")] -use super::super::conv::by_mut; -use super::super::conv::{ - by_ref, c_int, c_uint, ret, ret_c_int, ret_c_uint, ret_error, ret_usize_infallible, size_of, - zero, +use crate::backend::conv::by_mut; +use crate::backend::conv::{ + by_ref, c_int, c_uint, ret, ret_c_int, ret_c_int_infallible, ret_error, size_of, zero, }; #[cfg(feature = "fs")] use crate::fd::BorrowedFd; @@ -19,23 +18,24 @@ #[cfg(feature = "fs")] use crate::fs::AtFlags; use crate::io; -use crate::process::{Pid, RawNonZeroPid, Signal}; -use crate::runtime::{How, Sigaction, Siginfo, Sigset, Stack, Timespec}; -use crate::utils::optional_as_ptr; -#[cfg(target_pointer_width = "32")] -use core::convert::TryInto; +use crate::pid::Pid; +use crate::runtime::{How, Sigaction, Siginfo, Sigset, Stack}; +use crate::signal::Signal; +use crate::timespec::Timespec; +use crate::utils::option_as_ptr; use core::mem::MaybeUninit; #[cfg(target_pointer_width = "32")] use linux_raw_sys::general::__kernel_old_timespec; -use linux_raw_sys::general::{__kernel_pid_t, kernel_sigset_t, PR_SET_NAME, SIGCHLD}; +use linux_raw_sys::general::kernel_sigset_t; +use linux_raw_sys::prctl::PR_SET_NAME; #[cfg(target_arch = "x86_64")] -use {super::super::conv::ret_infallible, linux_raw_sys::general::ARCH_SET_FS}; +use {crate::backend::conv::ret_infallible, linux_raw_sys::general::ARCH_SET_FS}; #[inline] pub(crate) unsafe fn fork() -> io::Result> { - let pid = ret_c_uint(syscall_readonly!( + let pid = ret_c_int(syscall_readonly!( __NR_clone, - c_uint(SIGCHLD), + c_int(c::SIGCHLD), zero(), zero(), zero(), @@ -71,9 +71,9 @@ } pub(crate) mod tls { - #[cfg(target_arch = "x86")] - use super::super::tls::UserDesc; use super::*; + #[cfg(target_arch = "x86")] + use crate::backend::runtime::tls::UserDesc; #[cfg(target_arch = "x86")] #[inline] @@ -99,10 +99,8 @@ #[inline] pub(crate) unsafe fn set_tid_address(data: *mut c::c_void) -> Pid { - let tid: i32 = - ret_usize_infallible(syscall_readonly!(__NR_set_tid_address, data)) as __kernel_pid_t; - debug_assert_ne!(tid, 0); - Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(tid as u32)) + let tid: i32 = ret_c_int_infallible(syscall_readonly!(__NR_set_tid_address, data)); + Pid::from_raw_unchecked(tid) } #[inline] @@ -119,7 +117,7 @@ #[inline] pub(crate) unsafe fn sigaction(signal: Signal, new: Option) -> io::Result { let mut old = MaybeUninit::::uninit(); - let new = optional_as_ptr(new.as_ref()); + let new = option_as_ptr(new.as_ref()); ret(syscall!( __NR_rt_sigaction, signal, @@ -133,7 +131,7 @@ #[inline] pub(crate) unsafe fn sigaltstack(new: Option) -> io::Result { let mut old = MaybeUninit::::uninit(); - let new = optional_as_ptr(new.as_ref()); + let new = option_as_ptr(new.as_ref()); ret(syscall!(__NR_sigaltstack, new, &mut old))?; Ok(old.assume_init()) } @@ -146,7 +144,7 @@ #[inline] pub(crate) unsafe fn sigprocmask(how: How, new: Option<&Sigset>) -> io::Result { let mut old = MaybeUninit::::uninit(); - let new = optional_as_ptr(new); + let new = option_as_ptr(new); ret(syscall!( __NR_rt_sigprocmask, how, @@ -191,7 +189,7 @@ #[inline] pub(crate) fn sigtimedwait(set: &Sigset, timeout: Option) -> io::Result { let mut info = MaybeUninit::::uninit(); - let timeout_ptr = optional_as_ptr(timeout.as_ref()); + let timeout_ptr = option_as_ptr(timeout.as_ref()); // `rt_sigtimedwait_time64` was introduced in Linux 5.1. The old // `rt_sigtimedwait` syscall is not y2038-compatible on 32-bit @@ -239,7 +237,7 @@ None => None, }; - let old_timeout_ptr = optional_as_ptr(old_timeout.as_ref()); + let old_timeout_ptr = option_as_ptr(old_timeout.as_ref()); let _signum = ret_c_int(syscall!( __NR_rt_sigtimedwait, @@ -251,3 +249,8 @@ Ok(()) } + +#[inline] +pub(crate) fn exit_group(code: c::c_int) -> ! { + unsafe { syscall_noreturn!(__NR_exit_group, c_int(code)) } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/runtime/tls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/runtime/tls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/runtime/tls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/runtime/tls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,9 +6,9 @@ //! kernel-provided AUXV values. #![allow(unsafe_code)] -use super::super::c; -use super::super::elf::*; -use super::super::param::auxv::exe_phdrs_slice; +use crate::backend::c; +use crate::backend::elf::*; +use crate::backend::param::auxv::exe_phdrs_slice; use core::ptr::null; /// For use with [`set_thread_area`]. diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/system/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/system/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/system/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/system/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,2 @@ +pub(crate) mod syscalls; +pub(crate) mod types; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/system/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/system/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/system/syscalls.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/system/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,37 @@ +//! linux_raw syscalls supporting `rustix::system`. +//! +//! # Safety +//! +//! See the `rustix::backend` module documentation for details. +#![allow(unsafe_code)] +#![allow(clippy::undocumented_unsafe_blocks)] + +use super::types::RawUname; +use crate::backend::conv::{ret, ret_infallible, slice}; +use crate::io; +use crate::system::Sysinfo; +use core::mem::MaybeUninit; + +#[inline] +pub(crate) fn uname() -> RawUname { + let mut uname = MaybeUninit::::uninit(); + unsafe { + ret_infallible(syscall!(__NR_uname, &mut uname)); + uname.assume_init() + } +} + +#[inline] +pub(crate) fn sysinfo() -> Sysinfo { + let mut info = MaybeUninit::::uninit(); + unsafe { + ret_infallible(syscall!(__NR_sysinfo, &mut info)); + info.assume_init() + } +} + +#[inline] +pub(crate) fn sethostname(name: &[u8]) -> io::Result<()> { + let (ptr, len) = slice(name); + unsafe { ret(syscall_readonly!(__NR_sethostname, ptr, len)) } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/system/types.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/system/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/system/types.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/system/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,4 @@ +/// `sysinfo` +pub type Sysinfo = linux_raw_sys::system::sysinfo; + +pub(crate) type RawUname = linux_raw_sys::system::new_utsname; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/termios/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/termios/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/termios/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/termios/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,2 +1 @@ pub(crate) mod syscalls; -pub(crate) mod types; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/termios/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/termios/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/termios/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/termios/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,21 +6,24 @@ #![allow(unsafe_code)] #![allow(clippy::undocumented_unsafe_blocks)] -use super::super::conv::{by_ref, c_uint, ret}; +use crate::backend::c; +use crate::backend::conv::{by_ref, c_uint, ret}; use crate::fd::BorrowedFd; use crate::io; -use crate::process::{Pid, RawNonZeroPid}; +use crate::pid::Pid; +#[cfg(feature = "procfs")] +use crate::procfs; use crate::termios::{ - Action, OptionalActions, QueueSelector, Termios, Winsize, BRKINT, CBAUD, CS8, CSIZE, ECHO, - ECHONL, ICANON, ICRNL, IEXTEN, IGNBRK, IGNCR, INLCR, ISIG, ISTRIP, IXON, OPOST, PARENB, PARMRK, - VMIN, VTIME, + Action, ControlModes, InputModes, LocalModes, OptionalActions, OutputModes, QueueSelector, + SpecialCodeIndex, Termios, Winsize, }; #[cfg(feature = "procfs")] use crate::{ffi::CStr, fs::FileType, path::DecInt}; use core::mem::MaybeUninit; -use linux_raw_sys::general::__kernel_pid_t; +use linux_raw_sys::general::IBSHIFT; use linux_raw_sys::ioctl::{ - TCFLSH, TCGETS, TCSBRK, TCSETS, TCXONC, TIOCGPGRP, TIOCGSID, TIOCGWINSZ, TIOCSPGRP, TIOCSWINSZ, + TCFLSH, TCSBRK, TCXONC, TIOCEXCL, TIOCGPGRP, TIOCGSID, TIOCGWINSZ, TIOCNXCL, TIOCSPGRP, + TIOCSWINSZ, }; #[inline] @@ -36,31 +39,7 @@ pub(crate) fn tcgetattr(fd: BorrowedFd<'_>) -> io::Result { unsafe { let mut result = MaybeUninit::::uninit(); - ret(syscall!(__NR_ioctl, fd, c_uint(TCGETS), &mut result))?; - Ok(result.assume_init()) - } -} - -#[inline] -#[cfg(any( - target_arch = "x86", - target_arch = "x86_64", - target_arch = "x32", - target_arch = "riscv64", - target_arch = "aarch64", - target_arch = "arm", - target_arch = "mips", - target_arch = "mips64", -))] -pub(crate) fn tcgetattr2(fd: BorrowedFd<'_>) -> io::Result { - unsafe { - let mut result = MaybeUninit::::uninit(); - ret(syscall!( - __NR_ioctl, - fd, - c_uint(linux_raw_sys::ioctl::TCGETS2), - &mut result - ))?; + ret(syscall!(__NR_ioctl, fd, c_uint(c::TCGETS2), &mut result))?; Ok(result.assume_init()) } } @@ -68,13 +47,10 @@ #[inline] pub(crate) fn tcgetpgrp(fd: BorrowedFd<'_>) -> io::Result { unsafe { - let mut result = MaybeUninit::<__kernel_pid_t>::uninit(); + let mut result = MaybeUninit::::uninit(); ret(syscall!(__NR_ioctl, fd, c_uint(TIOCGPGRP), &mut result))?; let pid = result.assume_init(); - debug_assert!(pid > 0); - Ok(Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked( - pid as u32, - ))) + Ok(Pid::from_raw_unchecked(pid)) } } @@ -86,42 +62,22 @@ ) -> io::Result<()> { // Translate from `optional_actions` into an ioctl request code. On MIPS, // `optional_actions` already has `TCGETS` added to it. - let request = if cfg!(any(target_arch = "mips", target_arch = "mips64")) { - optional_actions as u32 - } else { - TCSETS + optional_actions as u32 - }; + let request = linux_raw_sys::ioctl::TCSETS2 + + if cfg!(any( + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6" + )) { + optional_actions as u32 - linux_raw_sys::ioctl::TCSETS + } else { + optional_actions as u32 + }; unsafe { ret(syscall_readonly!( __NR_ioctl, fd, - c_uint(request as u32), - by_ref(termios) - )) - } -} - -#[inline] -#[cfg(any( - target_arch = "x86", - target_arch = "x86_64", - target_arch = "x32", - target_arch = "riscv64", - target_arch = "aarch64", - target_arch = "arm", - target_arch = "mips", - target_arch = "mips64", -))] -pub(crate) fn tcsetattr2( - fd: BorrowedFd, - optional_actions: OptionalActions, - termios: &crate::termios::Termios2, -) -> io::Result<()> { - unsafe { - ret(syscall_readonly!( - __NR_ioctl, - fd, - c_uint(linux_raw_sys::ioctl::TCSETS2 + optional_actions as u32), + c_uint(request), by_ref(termios) )) } @@ -164,13 +120,10 @@ #[inline] pub(crate) fn tcgetsid(fd: BorrowedFd) -> io::Result { unsafe { - let mut result = MaybeUninit::<__kernel_pid_t>::uninit(); + let mut result = MaybeUninit::::uninit(); ret(syscall!(__NR_ioctl, fd, c_uint(TIOCGSID), &mut result))?; let pid = result.assume_init(); - debug_assert!(pid > 0); - Ok(Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked( - pid as u32, - ))) + Ok(Pid::from_raw_unchecked(pid)) } } @@ -192,66 +145,90 @@ } #[inline] -#[must_use] -#[allow(clippy::missing_const_for_fn)] -pub(crate) fn cfgetospeed(termios: &Termios) -> u32 { - termios.c_cflag & CBAUD +pub(crate) fn ioctl_tiocexcl(fd: BorrowedFd<'_>) -> io::Result<()> { + unsafe { ret(syscall_readonly!(__NR_ioctl, fd, c_uint(TIOCEXCL))) } } #[inline] -#[must_use] -#[allow(clippy::missing_const_for_fn)] -pub(crate) fn cfgetispeed(termios: &Termios) -> u32 { - termios.c_cflag & CBAUD +pub(crate) fn ioctl_tiocnxcl(fd: BorrowedFd<'_>) -> io::Result<()> { + unsafe { ret(syscall_readonly!(__NR_ioctl, fd, c_uint(TIOCNXCL))) } } +/// A wrapper around a conceptual `cfsetspeed` which handles an arbitrary +/// integer speed value. #[inline] -pub(crate) fn cfmakeraw(termios: &mut Termios) { - // From the Linux [`cfmakeraw` manual page]: - // - // [`cfmakeraw` manual page]: https://man7.org/linux/man-pages/man3/cfmakeraw.3.html - termios.c_iflag &= !(IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON); - termios.c_oflag &= !OPOST; - termios.c_lflag &= !(ECHO | ECHONL | ICANON | ISIG | IEXTEN); - termios.c_cflag &= !(CSIZE | PARENB); - termios.c_cflag |= CS8; +pub(crate) fn set_speed(termios: &mut Termios, arbitrary_speed: u32) -> io::Result<()> { + let encoded_speed = crate::termios::speed::encode(arbitrary_speed).unwrap_or(c::BOTHER); - // Musl and glibc also do these: - termios.c_cc[VMIN] = 1; - termios.c_cc[VTIME] = 0; + debug_assert_eq!(encoded_speed & !c::CBAUD, 0); + + termios.control_modes -= ControlModes::from_bits_retain(c::CBAUD | c::CIBAUD); + termios.control_modes |= + ControlModes::from_bits_retain(encoded_speed | (encoded_speed << IBSHIFT)); + + termios.input_speed = arbitrary_speed; + termios.output_speed = arbitrary_speed; + + Ok(()) } +/// A wrapper around a conceptual `cfsetospeed` which handles an arbitrary +/// integer speed value. #[inline] -pub(crate) fn cfsetospeed(termios: &mut Termios, speed: u32) -> io::Result<()> { - if (speed & !CBAUD) != 0 { - return Err(io::Errno::INVAL); - } - termios.c_cflag &= !CBAUD; - termios.c_cflag |= speed; +pub(crate) fn set_output_speed(termios: &mut Termios, arbitrary_speed: u32) -> io::Result<()> { + let encoded_speed = crate::termios::speed::encode(arbitrary_speed).unwrap_or(c::BOTHER); + + debug_assert_eq!(encoded_speed & !c::CBAUD, 0); + + termios.control_modes -= ControlModes::from_bits_retain(c::CBAUD); + termios.control_modes |= ControlModes::from_bits_retain(encoded_speed); + + termios.output_speed = arbitrary_speed; + Ok(()) } +/// A wrapper around a conceptual `cfsetispeed` which handles an arbitrary +/// integer speed value. #[inline] -pub(crate) fn cfsetispeed(termios: &mut Termios, speed: u32) -> io::Result<()> { - if speed == 0 { - return Ok(()); - } - if (speed & !CBAUD) != 0 { - return Err(io::Errno::INVAL); - } - termios.c_cflag &= !CBAUD; - termios.c_cflag |= speed; +pub(crate) fn set_input_speed(termios: &mut Termios, arbitrary_speed: u32) -> io::Result<()> { + let encoded_speed = crate::termios::speed::encode(arbitrary_speed).unwrap_or(c::BOTHER); + + debug_assert_eq!(encoded_speed & !c::CBAUD, 0); + + termios.control_modes -= ControlModes::from_bits_retain(c::CIBAUD); + termios.control_modes |= ControlModes::from_bits_retain(encoded_speed << IBSHIFT); + + termios.input_speed = arbitrary_speed; + Ok(()) } #[inline] -pub(crate) fn cfsetspeed(termios: &mut Termios, speed: u32) -> io::Result<()> { - if (speed & !CBAUD) != 0 { - return Err(io::Errno::INVAL); - } - termios.c_cflag &= !CBAUD; - termios.c_cflag |= speed; - Ok(()) +pub(crate) fn cfmakeraw(termios: &mut Termios) { + // From the Linux [`cfmakeraw` manual page]: + // + // [`cfmakeraw` manual page]: https://man7.org/linux/man-pages/man3/cfmakeraw.3.html + termios.input_modes -= InputModes::IGNBRK + | InputModes::BRKINT + | InputModes::PARMRK + | InputModes::ISTRIP + | InputModes::INLCR + | InputModes::IGNCR + | InputModes::ICRNL + | InputModes::IXON; + termios.output_modes -= OutputModes::OPOST; + termios.local_modes -= LocalModes::ECHO + | LocalModes::ECHONL + | LocalModes::ICANON + | LocalModes::ISIG + | LocalModes::IEXTEN; + termios.control_modes -= ControlModes::CSIZE | ControlModes::PARENB; + termios.control_modes |= ControlModes::CS8; + + // Musl and glibc also do these: + termios.special_codes[SpecialCodeIndex::VMIN] = 1; + termios.special_codes[SpecialCodeIndex::VTIME] = 0; } #[inline] @@ -264,8 +241,9 @@ } #[cfg(feature = "procfs")] -pub(crate) fn ttyname(fd: BorrowedFd<'_>, buf: &mut [u8]) -> io::Result { - let fd_stat = super::super::fs::syscalls::fstat(fd)?; +#[allow(unsafe_code)] +pub(crate) fn ttyname(fd: BorrowedFd<'_>, buf: &mut [MaybeUninit]) -> io::Result { + let fd_stat = crate::backend::fs::syscalls::fstat(fd)?; // Quick check: if `fd` isn't a character device, it's not a tty. if FileType::from_raw_mode(fd_stat.st_mode) != FileType::CharacterDevice { @@ -276,11 +254,14 @@ tcgetwinsize(fd)?; // Get a fd to '/proc/self/fd'. - let proc_self_fd = io::proc_self_fd()?; + let proc_self_fd = procfs::proc_self_fd()?; - // Gather the ttyname by reading the 'fd' file inside 'proc_self_fd'. - let r = - super::super::fs::syscalls::readlinkat(proc_self_fd, DecInt::from_fd(fd).as_c_str(), buf)?; + // Gather the ttyname by reading the "fd" file inside `proc_self_fd`. + let r = crate::backend::fs::syscalls::readlinkat( + proc_self_fd, + DecInt::from_fd(fd).as_c_str(), + buf, + )?; // If the number of bytes is equal to the buffer length, truncation may // have occurred. This check also ensures that we have enough space for @@ -288,14 +269,20 @@ if r == buf.len() { return Err(io::Errno::RANGE); } - buf[r] = b'\0'; - // Check that the path we read refers to the same file as `fd`. - let path = CStr::from_bytes_with_nul(&buf[..=r]).unwrap(); + // `readlinkat` returns the number of bytes placed in the buffer. + // NUL-terminate the string at that offset. + buf[r].write(b'\0'); - let path_stat = super::super::fs::syscalls::stat(path)?; - if path_stat.st_dev != fd_stat.st_dev || path_stat.st_ino != fd_stat.st_ino { - return Err(io::Errno::NODEV); + // Check that the path we read refers to the same file as `fd`. + { + // SAFETY: We just wrote the NUL byte above + let path = unsafe { CStr::from_ptr(buf.as_ptr().cast()) }; + + let path_stat = crate::backend::fs::syscalls::stat(path)?; + if path_stat.st_dev != fd_stat.st_dev || path_stat.st_ino != fd_stat.st_ino { + return Err(io::Errno::NODEV); + } } Ok(r) diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/termios/types.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/termios/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/termios/types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/termios/types.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,495 +0,0 @@ -use super::super::c; - -/// `TCSA*` values for use with [`tcsetattr`]. -/// -/// [`tcsetattr`]: crate::termios::tcsetattr -#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] -#[repr(u32)] -pub enum OptionalActions { - /// `TCSANOW`—Make the change immediately. - #[doc(alias = "TCSANOW")] - Now = linux_raw_sys::general::TCSANOW, - - /// `TCSADRAIN`—Make the change after all output has been transmitted. - #[doc(alias = "TCSADRAIN")] - Drain = linux_raw_sys::general::TCSADRAIN, - - /// `TCSAFLUSH`—Discard any pending input and then make the change - /// after all output has been transmitted. - #[doc(alias = "TCSAFLUSH")] - Flush = linux_raw_sys::general::TCSAFLUSH, -} - -/// `TC*` values for use with [`tcflush`]. -/// -/// [`tcflush`]: crate::termios::tcflush -#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] -#[repr(u32)] -pub enum QueueSelector { - /// `TCIFLUSH`—Flush data received but not read. - #[doc(alias = "TCIFLUSH")] - IFlush = linux_raw_sys::general::TCIFLUSH, - - /// `TCOFLUSH`—Flush data written but not transmitted. - #[doc(alias = "TCOFLUSH")] - OFlush = linux_raw_sys::general::TCOFLUSH, - - /// `TCIOFLUSH`—`IFlush` and `OFlush` combined. - #[doc(alias = "TCIOFLUSH")] - IOFlush = linux_raw_sys::general::TCIOFLUSH, -} - -/// `TC*` values for use with [`tcflow`]. -/// -/// [`tcflow`]: crate::termios::tcflow -#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] -#[repr(u32)] -pub enum Action { - /// `TCOOFF`—Suspend output. - #[doc(alias = "TCOOFF")] - OOff = linux_raw_sys::general::TCOOFF, - - /// `TCOON`—Restart suspended output. - #[doc(alias = "TCOON")] - OOn = linux_raw_sys::general::TCOON, - - /// `TCIOFF`—Transmits a STOP byte. - #[doc(alias = "TCIOFF")] - IOff = linux_raw_sys::general::TCIOFF, - - /// `TCION`—Transmits a START byte. - #[doc(alias = "TCION")] - IOn = linux_raw_sys::general::TCION, -} - -/// `struct termios` for use with [`tcgetattr`] and [`tcsetattr`]. -/// -/// [`tcgetattr`]: crate::termios::tcgetattr -/// [`tcsetattr`]: crate::termios::tcsetattr -#[doc(alias = "termios")] -pub type Termios = linux_raw_sys::general::termios; - -/// `struct termios2` for use with [`tcgetattr2`] and [`tcsetattr2`]. -/// -/// [`tcgetattr2`]: crate::termios::tcgetattr2 -/// [`tcsetattr2`]: crate::termios::tcsetattr2 -#[cfg(any( - target_arch = "x86", - target_arch = "x86_64", - target_arch = "x32", - target_arch = "riscv64", - target_arch = "aarch64", - target_arch = "arm", - target_arch = "mips", - target_arch = "mips64", -))] -#[doc(alias = "termios2")] -pub type Termios2 = linux_raw_sys::general::termios2; - -/// `struct winsize` for use with [`tcgetwinsize`]. -/// -/// [`tcgetwinsize`]: crate::termios::tcgetwinsize -#[doc(alias = "winsize")] -pub type Winsize = linux_raw_sys::general::winsize; - -/// `tcflag_t`—A type for the flags fields of [`Termios`]. -#[doc(alias = "tcflag_t")] -pub type Tcflag = linux_raw_sys::general::tcflag_t; - -/// `speed_t`—A return type for [`cfsetspeed`] and similar. -/// -/// [`cfsetspeed`]: crate::termios::cfsetspeed -#[doc(alias = "speed_t")] -pub type Speed = linux_raw_sys::general::speed_t; - -/// `VINTR` -pub const VINTR: usize = linux_raw_sys::general::VINTR as usize; - -/// `VQUIT` -pub const VQUIT: usize = linux_raw_sys::general::VQUIT as usize; - -/// `VERASE` -pub const VERASE: usize = linux_raw_sys::general::VERASE as usize; - -/// `VKILL` -pub const VKILL: usize = linux_raw_sys::general::VKILL as usize; - -/// `VEOF` -pub const VEOF: usize = linux_raw_sys::general::VEOF as usize; - -/// `VTIME` -pub const VTIME: usize = linux_raw_sys::general::VTIME as usize; - -/// `VMIN` -pub const VMIN: usize = linux_raw_sys::general::VMIN as usize; - -/// `VSWTC` -pub const VSWTC: usize = linux_raw_sys::general::VSWTC as usize; - -/// `VSTART` -pub const VSTART: usize = linux_raw_sys::general::VSTART as usize; - -/// `VSTOP` -pub const VSTOP: usize = linux_raw_sys::general::VSTOP as usize; - -/// `VSUSP` -pub const VSUSP: usize = linux_raw_sys::general::VSUSP as usize; - -/// `VEOL` -pub const VEOL: usize = linux_raw_sys::general::VEOL as usize; - -/// `VREPRINT` -pub const VREPRINT: usize = linux_raw_sys::general::VREPRINT as usize; - -/// `VDISCARD` -pub const VDISCARD: usize = linux_raw_sys::general::VDISCARD as usize; - -/// `VWERASE` -pub const VWERASE: usize = linux_raw_sys::general::VWERASE as usize; - -/// `VLNEXT` -pub const VLNEXT: usize = linux_raw_sys::general::VLNEXT as usize; - -/// `VEOL2` -pub const VEOL2: usize = linux_raw_sys::general::VEOL2 as usize; - -/// `IGNBRK` -pub const IGNBRK: c::c_uint = linux_raw_sys::general::IGNBRK; - -/// `BRKINT` -pub const BRKINT: c::c_uint = linux_raw_sys::general::BRKINT; - -/// `IGNPAR` -pub const IGNPAR: c::c_uint = linux_raw_sys::general::IGNPAR; - -/// `PARMRK` -pub const PARMRK: c::c_uint = linux_raw_sys::general::PARMRK; - -/// `INPCK` -pub const INPCK: c::c_uint = linux_raw_sys::general::INPCK; - -/// `ISTRIP` -pub const ISTRIP: c::c_uint = linux_raw_sys::general::ISTRIP; - -/// `INLCR` -pub const INLCR: c::c_uint = linux_raw_sys::general::INLCR; - -/// `IGNCR` -pub const IGNCR: c::c_uint = linux_raw_sys::general::IGNCR; - -/// `ICRNL` -pub const ICRNL: c::c_uint = linux_raw_sys::general::ICRNL; - -/// `IUCLC` -pub const IUCLC: c::c_uint = linux_raw_sys::general::IUCLC; - -/// `IXON` -pub const IXON: c::c_uint = linux_raw_sys::general::IXON; - -/// `IXANY` -pub const IXANY: c::c_uint = linux_raw_sys::general::IXANY; - -/// `IXOFF` -pub const IXOFF: c::c_uint = linux_raw_sys::general::IXOFF; - -/// `IMAXBEL` -pub const IMAXBEL: c::c_uint = linux_raw_sys::general::IMAXBEL; - -/// `IUTF8` -pub const IUTF8: c::c_uint = linux_raw_sys::general::IUTF8; - -/// `OPOST` -pub const OPOST: c::c_uint = linux_raw_sys::general::OPOST; - -/// `OLCUC` -pub const OLCUC: c::c_uint = linux_raw_sys::general::OLCUC; - -/// `ONLCR` -pub const ONLCR: c::c_uint = linux_raw_sys::general::ONLCR; - -/// `OCRNL` -pub const OCRNL: c::c_uint = linux_raw_sys::general::OCRNL; - -/// `ONOCR` -pub const ONOCR: c::c_uint = linux_raw_sys::general::ONOCR; - -/// `ONLRET` -pub const ONLRET: c::c_uint = linux_raw_sys::general::ONLRET; - -/// `OFILL` -pub const OFILL: c::c_uint = linux_raw_sys::general::OFILL; - -/// `OFDEL` -pub const OFDEL: c::c_uint = linux_raw_sys::general::OFDEL; - -/// `NLDLY` -pub const NLDLY: c::c_uint = linux_raw_sys::general::NLDLY; - -/// `NL0` -pub const NL0: c::c_uint = linux_raw_sys::general::NL0; - -/// `NL1` -pub const NL1: c::c_uint = linux_raw_sys::general::NL1; - -/// `CRDLY` -pub const CRDLY: c::c_uint = linux_raw_sys::general::CRDLY; - -/// `CR0` -pub const CR0: c::c_uint = linux_raw_sys::general::CR0; - -/// `CR1` -pub const CR1: c::c_uint = linux_raw_sys::general::CR1; - -/// `CR2` -pub const CR2: c::c_uint = linux_raw_sys::general::CR2; - -/// `CR3` -pub const CR3: c::c_uint = linux_raw_sys::general::CR3; - -/// `TABDLY` -pub const TABDLY: c::c_uint = linux_raw_sys::general::TABDLY; - -/// `TAB0` -pub const TAB0: c::c_uint = linux_raw_sys::general::TAB0; - -/// `TAB1` -pub const TAB1: c::c_uint = linux_raw_sys::general::TAB1; - -/// `TAB2` -pub const TAB2: c::c_uint = linux_raw_sys::general::TAB2; - -/// `TAB3` -pub const TAB3: c::c_uint = linux_raw_sys::general::TAB3; - -/// `BSDLY` -pub const BSDLY: c::c_uint = linux_raw_sys::general::BSDLY; - -/// `BS0` -pub const BS0: c::c_uint = linux_raw_sys::general::BS0; - -/// `BS1` -pub const BS1: c::c_uint = linux_raw_sys::general::BS1; - -/// `FFDLY` -pub const FFDLY: c::c_uint = linux_raw_sys::general::FFDLY; - -/// `FF0` -pub const FF0: c::c_uint = linux_raw_sys::general::FF0; - -/// `FF1` -pub const FF1: c::c_uint = linux_raw_sys::general::FF1; - -/// `VTDLY` -pub const VTDLY: c::c_uint = linux_raw_sys::general::VTDLY; - -/// `VT0` -pub const VT0: c::c_uint = linux_raw_sys::general::VT0; - -/// `VT1` -pub const VT1: c::c_uint = linux_raw_sys::general::VT1; - -/// `B0` -pub const B0: Speed = linux_raw_sys::general::B0; - -/// `B50` -pub const B50: Speed = linux_raw_sys::general::B50; - -/// `B75` -pub const B75: Speed = linux_raw_sys::general::B75; - -/// `B110` -pub const B110: Speed = linux_raw_sys::general::B110; - -/// `B134` -pub const B134: Speed = linux_raw_sys::general::B134; - -/// `B150` -pub const B150: Speed = linux_raw_sys::general::B150; - -/// `B200` -pub const B200: Speed = linux_raw_sys::general::B200; - -/// `B300` -pub const B300: Speed = linux_raw_sys::general::B300; - -/// `B600` -pub const B600: Speed = linux_raw_sys::general::B600; - -/// `B1200` -pub const B1200: Speed = linux_raw_sys::general::B1200; - -/// `B1800` -pub const B1800: Speed = linux_raw_sys::general::B1800; - -/// `B2400` -pub const B2400: Speed = linux_raw_sys::general::B2400; - -/// `B4800` -pub const B4800: Speed = linux_raw_sys::general::B4800; - -/// `B9600` -pub const B9600: Speed = linux_raw_sys::general::B9600; - -/// `B19200` -pub const B19200: Speed = linux_raw_sys::general::B19200; - -/// `B38400` -pub const B38400: Speed = linux_raw_sys::general::B38400; - -/// `B57600` -pub const B57600: Speed = linux_raw_sys::general::B57600; - -/// `B115200` -pub const B115200: Speed = linux_raw_sys::general::B115200; - -/// `B230400` -pub const B230400: Speed = linux_raw_sys::general::B230400; - -/// `B460800` -pub const B460800: Speed = linux_raw_sys::general::B460800; - -/// `B500000` -pub const B500000: Speed = linux_raw_sys::general::B500000; - -/// `B576000` -pub const B576000: Speed = linux_raw_sys::general::B576000; - -/// `B921600` -pub const B921600: Speed = linux_raw_sys::general::B921600; - -/// `B1000000` -pub const B1000000: Speed = linux_raw_sys::general::B1000000; - -/// `B1152000` -pub const B1152000: Speed = linux_raw_sys::general::B1152000; - -/// `B1500000` -pub const B1500000: Speed = linux_raw_sys::general::B1500000; - -/// `B2000000` -pub const B2000000: Speed = linux_raw_sys::general::B2000000; - -/// `B2500000` -#[cfg(not(any(target_arch = "sparc", target_arch = "sparc64")))] -pub const B2500000: Speed = linux_raw_sys::general::B2500000; - -/// `B3000000` -#[cfg(not(any(target_arch = "sparc", target_arch = "sparc64")))] -pub const B3000000: Speed = linux_raw_sys::general::B3000000; - -/// `B3500000` -#[cfg(not(any(target_arch = "sparc", target_arch = "sparc64")))] -pub const B3500000: Speed = linux_raw_sys::general::B3500000; - -/// `B4000000` -#[cfg(not(any(target_arch = "sparc", target_arch = "sparc64")))] -pub const B4000000: Speed = linux_raw_sys::general::B4000000; - -/// `BOTHER` -pub const BOTHER: c::c_uint = linux_raw_sys::general::BOTHER; - -/// `CSIZE` -pub const CSIZE: c::c_uint = linux_raw_sys::general::CSIZE; - -/// `CS5` -pub const CS5: c::c_uint = linux_raw_sys::general::CS5; - -/// `CS6` -pub const CS6: c::c_uint = linux_raw_sys::general::CS6; - -/// `CS7` -pub const CS7: c::c_uint = linux_raw_sys::general::CS7; - -/// `CS8` -pub const CS8: c::c_uint = linux_raw_sys::general::CS8; - -/// `CSTOPB` -pub const CSTOPB: c::c_uint = linux_raw_sys::general::CSTOPB; - -/// `CREAD` -pub const CREAD: c::c_uint = linux_raw_sys::general::CREAD; - -/// `PARENB` -pub const PARENB: c::c_uint = linux_raw_sys::general::PARENB; - -/// `PARODD` -pub const PARODD: c::c_uint = linux_raw_sys::general::PARODD; - -/// `HUPCL` -pub const HUPCL: c::c_uint = linux_raw_sys::general::HUPCL; - -/// `CLOCAL` -pub const CLOCAL: c::c_uint = linux_raw_sys::general::CLOCAL; - -/// `ISIG` -pub const ISIG: c::c_uint = linux_raw_sys::general::ISIG; - -/// `ICANON`—A flag for the `c_lflag` field of [`Termios`] indicating -/// canonical mode. -pub const ICANON: Tcflag = linux_raw_sys::general::ICANON; - -/// `ECHO` -pub const ECHO: c::c_uint = linux_raw_sys::general::ECHO; - -/// `ECHOE` -pub const ECHOE: c::c_uint = linux_raw_sys::general::ECHOE; - -/// `ECHOK` -pub const ECHOK: c::c_uint = linux_raw_sys::general::ECHOK; - -/// `ECHONL` -pub const ECHONL: c::c_uint = linux_raw_sys::general::ECHONL; - -/// `NOFLSH` -pub const NOFLSH: c::c_uint = linux_raw_sys::general::NOFLSH; - -/// `TOSTOP` -pub const TOSTOP: c::c_uint = linux_raw_sys::general::TOSTOP; - -/// `IEXTEN` -pub const IEXTEN: c::c_uint = linux_raw_sys::general::IEXTEN; - -/// `EXTA` -pub const EXTA: c::c_uint = linux_raw_sys::general::EXTA; - -/// `EXTB` -pub const EXTB: c::c_uint = linux_raw_sys::general::EXTB; - -/// `CBAUD` -pub const CBAUD: c::c_uint = linux_raw_sys::general::CBAUD; - -/// `CBAUDEX` -pub const CBAUDEX: c::c_uint = linux_raw_sys::general::CBAUDEX; - -/// `CIBAUD` -pub const CIBAUD: c::c_uint = linux_raw_sys::general::CIBAUD; - -/// `CMSPAR` -pub const CMSPAR: c::c_uint = linux_raw_sys::general::CMSPAR; - -/// `CRTSCTS` -pub const CRTSCTS: c::c_uint = linux_raw_sys::general::CRTSCTS; - -/// `XCASE` -pub const XCASE: c::c_uint = linux_raw_sys::general::XCASE; - -/// `ECHOCTL` -pub const ECHOCTL: c::c_uint = linux_raw_sys::general::ECHOCTL; - -/// `ECHOPRT` -pub const ECHOPRT: c::c_uint = linux_raw_sys::general::ECHOPRT; - -/// `ECHOKE` -pub const ECHOKE: c::c_uint = linux_raw_sys::general::ECHOKE; - -/// `FLUSHO` -pub const FLUSHO: c::c_uint = linux_raw_sys::general::FLUSHO; - -/// `PENDIN` -pub const PENDIN: c::c_uint = linux_raw_sys::general::PENDIN; - -/// `EXTPROC` -pub const EXTPROC: c::c_uint = linux_raw_sys::general::EXTPROC; - -/// `XTABS` -pub const XTABS: c::c_uint = linux_raw_sys::general::XTABS; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/thread/futex.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/thread/futex.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/thread/futex.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/thread/futex.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,6 +2,8 @@ /// `FUTEX_*` flags for use with [`futex`]. /// /// [`futex`]: crate::thread::futex + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct FutexFlags: u32 { /// `FUTEX_PRIVATE_FLAG` const PRIVATE = linux_raw_sys::general::FUTEX_PRIVATE_FLAG; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/thread/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/thread/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/thread/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/thread/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,19 +6,19 @@ #![allow(unsafe_code)] #![allow(clippy::undocumented_unsafe_blocks)] -use super::super::c; -use super::super::conv::{ - by_mut, by_ref, c_int, c_uint, ret, ret_c_int, ret_usize, ret_usize_infallible, +use crate::backend::c; +use crate::backend::conv::{ + by_mut, by_ref, c_int, c_uint, ret, ret_c_int, ret_c_int_infallible, ret_usize, slice_just_addr, slice_just_addr_mut, zero, }; use crate::fd::BorrowedFd; use crate::io; -use crate::process::{Pid, RawNonZeroPid}; +use crate::pid::Pid; use crate::thread::{ClockId, FutexFlags, FutexOperation, NanosleepRelativeResult, Timespec}; use core::mem::MaybeUninit; -use linux_raw_sys::general::{__kernel_pid_t, __kernel_timespec, TIMER_ABSTIME}; #[cfg(target_pointer_width = "32")] -use {core::convert::TryInto, linux_raw_sys::general::timespec as __kernel_old_timespec}; +use linux_raw_sys::general::timespec as __kernel_old_timespec; +use linux_raw_sys::general::{__kernel_timespec, TIMER_ABSTIME}; #[inline] pub(crate) fn clock_nanosleep_relative( @@ -85,8 +85,7 @@ &mut old_rem ))?; let old_rem = old_rem.assume_init(); - // TODO: With Rust 1.55, we can use MaybeUninit::write here. - rem.as_mut_ptr().write(__kernel_timespec { + rem.write(__kernel_timespec { tv_sec: old_rem.tv_sec.into(), tv_nsec: old_rem.tv_nsec.into(), }); @@ -190,8 +189,7 @@ let mut old_rem = MaybeUninit::<__kernel_old_timespec>::uninit(); ret(syscall!(__NR_nanosleep, by_ref(&old_req), &mut old_rem))?; let old_rem = old_rem.assume_init(); - // TODO: With Rust 1.55, we can use MaybeUninit::write here. - rem.as_mut_ptr().write(__kernel_timespec { + rem.write(__kernel_timespec { tv_sec: old_rem.tv_sec.into(), tv_nsec: old_rem.tv_nsec.into(), }); @@ -201,9 +199,8 @@ #[inline] pub(crate) fn gettid() -> Pid { unsafe { - let tid: i32 = ret_usize_infallible(syscall_readonly!(__NR_gettid)) as __kernel_pid_t; - debug_assert_ne!(tid, 0); - Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(tid as u32)) + let tid = ret_c_int_infallible(syscall_readonly!(__NR_gettid)); + Pid::from_raw_unchecked(tid) } } @@ -276,19 +273,16 @@ )) } -#[cfg(linux_kernel)] #[inline] pub(crate) fn setns(fd: BorrowedFd, nstype: c::c_int) -> io::Result { unsafe { ret_c_int(syscall_readonly!(__NR_setns, fd, c_int(nstype))) } } -#[cfg(linux_kernel)] #[inline] pub(crate) fn unshare(flags: crate::thread::UnshareFlags) -> io::Result<()> { - unsafe { ret(syscall_readonly!(__NR_unshare, c_uint(flags.bits()))) } + unsafe { ret(syscall_readonly!(__NR_unshare, flags)) } } -#[cfg(linux_kernel)] #[inline] pub(crate) fn capget( header: &mut linux_raw_sys::general::__user_cap_header_struct, @@ -303,7 +297,6 @@ } } -#[cfg(linux_kernel)] #[inline] pub(crate) fn capset( header: &mut linux_raw_sys::general::__user_cap_header_struct, @@ -313,15 +306,15 @@ } #[inline] -pub(crate) fn setuid_thread(uid: crate::process::Uid) -> io::Result<()> { +pub(crate) fn setuid_thread(uid: crate::ugid::Uid) -> io::Result<()> { unsafe { ret(syscall_readonly!(__NR_setuid, uid)) } } #[inline] pub(crate) fn setresuid_thread( - ruid: crate::process::Uid, - euid: crate::process::Uid, - suid: crate::process::Uid, + ruid: crate::ugid::Uid, + euid: crate::ugid::Uid, + suid: crate::ugid::Uid, ) -> io::Result<()> { #[cfg(any(target_arch = "x86", target_arch = "arm", target_arch = "sparc"))] unsafe { @@ -334,15 +327,15 @@ } #[inline] -pub(crate) fn setgid_thread(gid: crate::process::Gid) -> io::Result<()> { +pub(crate) fn setgid_thread(gid: crate::ugid::Gid) -> io::Result<()> { unsafe { ret(syscall_readonly!(__NR_setgid, gid)) } } #[inline] pub(crate) fn setresgid_thread( - rgid: crate::process::Gid, - egid: crate::process::Gid, - sgid: crate::process::Gid, + rgid: crate::ugid::Gid, + egid: crate::ugid::Gid, + sgid: crate::ugid::Gid, ) -> io::Result<()> { #[cfg(any(target_arch = "x86", target_arch = "arm", target_arch = "sparc"))] unsafe { diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/time/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/time/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/time/syscalls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/time/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,32 +6,32 @@ #![allow(unsafe_code)] #![allow(clippy::undocumented_unsafe_blocks)] -use super::super::conv::{ret, ret_infallible}; -use super::types::ClockId; +use crate::backend::conv::{ret, ret_infallible}; +use crate::clockid::ClockId; use crate::io; +use crate::timespec::Timespec; use core::mem::MaybeUninit; -use linux_raw_sys::general::__kernel_timespec; +#[cfg(all(feature = "time", target_pointer_width = "32"))] +use linux_raw_sys::general::itimerspec as __kernel_old_itimerspec; #[cfg(target_pointer_width = "32")] use linux_raw_sys::general::timespec as __kernel_old_timespec; #[cfg(feature = "time")] use { - super::super::conv::{by_ref, ret_owned_fd}, + crate::backend::conv::{by_ref, ret_owned_fd}, crate::fd::BorrowedFd, crate::fd::OwnedFd, crate::time::{Itimerspec, TimerfdClockId, TimerfdFlags, TimerfdTimerFlags}, }; -#[cfg(all(feature = "time", target_pointer_width = "32"))] -use {core::convert::TryInto, linux_raw_sys::general::itimerspec as __kernel_old_itimerspec}; // `clock_gettime` has special optimizations via the vDSO. #[cfg(feature = "time")] -pub(crate) use super::super::vdso_wrappers::{clock_gettime, clock_gettime_dynamic}; +pub(crate) use crate::backend::vdso_wrappers::{clock_gettime, clock_gettime_dynamic}; #[inline] -pub(crate) fn clock_getres(which_clock: ClockId) -> __kernel_timespec { +pub(crate) fn clock_getres(which_clock: ClockId) -> Timespec { #[cfg(target_pointer_width = "32")] unsafe { - let mut result = MaybeUninit::<__kernel_timespec>::uninit(); + let mut result = MaybeUninit::::uninit(); if let Err(err) = ret(syscall!(__NR_clock_getres_time64, which_clock, &mut result)) { // See the comments in `rustix_clock_gettime_via_syscall` about // emulation. @@ -42,19 +42,18 @@ } #[cfg(target_pointer_width = "64")] unsafe { - let mut result = MaybeUninit::<__kernel_timespec>::uninit(); + let mut result = MaybeUninit::::uninit(); ret_infallible(syscall!(__NR_clock_getres, which_clock, &mut result)); result.assume_init() } } #[cfg(target_pointer_width = "32")] -unsafe fn clock_getres_old(which_clock: ClockId, result: &mut MaybeUninit<__kernel_timespec>) { +unsafe fn clock_getres_old(which_clock: ClockId, result: &mut MaybeUninit) { let mut old_result = MaybeUninit::<__kernel_old_timespec>::uninit(); ret_infallible(syscall!(__NR_clock_getres, which_clock, &mut old_result)); let old_result = old_result.assume_init(); - // TODO: With Rust 1.55, we can use MaybeUninit::write here. - result.as_mut_ptr().write(__kernel_timespec { + result.write(Timespec { tv_sec: old_result.tv_sec.into(), tv_nsec: old_result.tv_nsec.into(), }); @@ -62,7 +61,7 @@ #[cfg(feature = "time")] #[inline] -pub(crate) fn clock_settime(which_clock: ClockId, timespec: __kernel_timespec) -> io::Result<()> { +pub(crate) fn clock_settime(which_clock: ClockId, timespec: Timespec) -> io::Result<()> { // `clock_settime64` was introduced in Linux 5.1. The old `clock_settime` // syscall is not y2038-compatible on 32-bit architectures. #[cfg(target_pointer_width = "32")] @@ -88,7 +87,7 @@ #[cfg(feature = "time")] #[cfg(target_pointer_width = "32")] -unsafe fn clock_settime_old(which_clock: ClockId, timespec: __kernel_timespec) -> io::Result<()> { +unsafe fn clock_settime_old(which_clock: ClockId, timespec: Timespec) -> io::Result<()> { let old_timespec = __kernel_old_timespec { tv_sec: timespec .tv_sec @@ -197,13 +196,12 @@ &mut old_result ))?; let old_result = old_result.assume_init(); - // TODO: With Rust 1.55, we can use MaybeUninit::write here. - result.as_mut_ptr().write(Itimerspec { - it_interval: __kernel_timespec { + result.write(Itimerspec { + it_interval: Timespec { tv_sec: old_result.it_interval.tv_sec.into(), tv_nsec: old_result.it_interval.tv_nsec.into(), }, - it_value: __kernel_timespec { + it_value: Timespec { tv_sec: old_result.it_value.tv_sec.into(), tv_nsec: old_result.it_value.tv_nsec.into(), }, @@ -246,13 +244,12 @@ let mut old_result = MaybeUninit::<__kernel_old_itimerspec>::uninit(); ret(syscall!(__NR_timerfd_gettime, fd, &mut old_result))?; let old_result = old_result.assume_init(); - // TODO: With Rust 1.55, we can use MaybeUninit::write here. - result.as_mut_ptr().write(Itimerspec { - it_interval: __kernel_timespec { + result.write(Itimerspec { + it_interval: Timespec { tv_sec: old_result.it_interval.tv_sec.into(), tv_nsec: old_result.it_interval.tv_nsec.into(), }, - it_value: __kernel_timespec { + it_value: Timespec { tv_sec: old_result.it_value.tv_sec.into(), tv_nsec: old_result.it_value.tv_nsec.into(), }, diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/time/types.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/time/types.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/time/types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/time/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,16 +1,6 @@ -use super::super::c; -use crate::fd::BorrowedFd; +use crate::backend::c; use bitflags::bitflags; -/// `struct timespec` -pub type Timespec = linux_raw_sys::general::__kernel_timespec; - -/// A type for the `tv_sec` field of [`Timespec`]. -pub type Secs = linux_raw_sys::general::__kernel_time64_t; - -/// A type for the `tv_nsec` field of [`Timespec`]. -pub type Nsecs = i64; - /// `struct itimerspec` for use with [`timerfd_gettime`] and /// [`timerfd_settime`]. /// @@ -18,73 +8,12 @@ /// [`timerfd_settime`]: crate::time::timerfd_settime pub type Itimerspec = linux_raw_sys::general::__kernel_itimerspec; -/// `CLOCK_*` constants for use with [`clock_gettime`]. -/// -/// These constants are always supported at runtime, so `clock_gettime` never -/// has to fail with `INVAL` due to an unsupported clock. See -/// [`DynamicClockId`] for a greater set of clocks, with the caveat that not -/// all of them are always supported. -/// -/// [`clock_gettime`]: crate::time::clock_gettime -#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)] -#[repr(u32)] -#[non_exhaustive] -pub enum ClockId { - /// `CLOCK_REALTIME` - Realtime = linux_raw_sys::general::CLOCK_REALTIME, - - /// `CLOCK_MONOTONIC` - Monotonic = linux_raw_sys::general::CLOCK_MONOTONIC, - - /// `CLOCK_PROCESS_CPUTIME_ID` - ProcessCPUTime = linux_raw_sys::general::CLOCK_PROCESS_CPUTIME_ID, - - /// `CLOCK_THREAD_CPUTIME_ID` - ThreadCPUTime = linux_raw_sys::general::CLOCK_THREAD_CPUTIME_ID, - - /// `CLOCK_REALTIME_COARSE` - RealtimeCoarse = linux_raw_sys::general::CLOCK_REALTIME_COARSE, - - /// `CLOCK_MONOTONIC_COARSE` - MonotonicCoarse = linux_raw_sys::general::CLOCK_MONOTONIC_COARSE, - - /// `CLOCK_MONOTONIC_RAW` - MonotonicRaw = linux_raw_sys::general::CLOCK_MONOTONIC_RAW, -} - -/// `CLOCK_*` constants for use with [`clock_gettime_dynamic`]. -/// -/// These constants may be unsupported at runtime, depending on the OS version, -/// and `clock_gettime_dynamic` may fail with `INVAL`. See [`ClockId`] for -/// clocks which are always supported at runtime. -/// -/// [`clock_gettime_dynamic`]: crate::time::clock_gettime_dynamic -#[derive(Debug, Copy, Clone)] -#[non_exhaustive] -pub enum DynamicClockId<'a> { - /// `ClockId` values that are always supported at runtime. - Known(ClockId), - - /// Linux dynamic clocks. - Dynamic(BorrowedFd<'a>), - - /// `CLOCK_REALTIME_ALARM`, available on Linux >= 3.0 - RealtimeAlarm, - - /// `CLOCK_TAI`, available on Linux >= 3.10 - Tai, - - /// `CLOCK_BOOTTIME`, available on Linux >= 2.6.39 - Boottime, - - /// `CLOCK_BOOTTIME_ALARM`, available on Linux >= 2.6.39 - BoottimeAlarm, -} - bitflags! { /// `TFD_*` flags for use with [`timerfd_create`]. /// /// [`timerfd_create`]: crate::time::timerfd_create + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct TimerfdFlags: c::c_uint { /// `TFD_NONBLOCK` const NONBLOCK = linux_raw_sys::general::TFD_NONBLOCK; @@ -98,6 +27,8 @@ /// `TFD_TIMER_*` flags for use with [`timerfd_settime`]. /// /// [`timerfd_settime`]: crate::time::timerfd_settime + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct TimerfdTimerFlags: c::c_uint { /// `TFD_TIMER_ABSTIME` const ABSTIME = linux_raw_sys::general::TFD_TIMER_ABSTIME; @@ -116,10 +47,10 @@ pub enum TimerfdClockId { /// `CLOCK_REALTIME`—A clock that tells the “real†time. /// - /// This is a clock that tells the amount of time elapsed since the - /// Unix epoch, 1970-01-01T00:00:00Z. The clock is externally settable, so - /// it is not monotonic. Successive reads may see decreasing times, so it - /// isn't reliable for measuring durations. + /// This is a clock that tells the amount of time elapsed since the Unix + /// epoch, 1970-01-01T00:00:00Z. The clock is externally settable, so it is + /// not monotonic. Successive reads may see decreasing times, so it isn't + /// reliable for measuring durations. Realtime = linux_raw_sys::general::CLOCK_REALTIME, /// `CLOCK_MONOTONIC`—A clock that tells an abstract time. diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/ugid/mod.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/ugid/mod.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/ugid/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/ugid/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +pub(crate) mod syscalls; diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/ugid/syscalls.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/ugid/syscalls.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/ugid/syscalls.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/ugid/syscalls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,67 @@ +//! linux_raw syscalls for UIDs and GIDs +//! +//! # Safety +//! +//! See the `rustix::backend` module documentation for details. +#![allow(unsafe_code)] +#![allow(clippy::undocumented_unsafe_blocks)] + +use crate::backend::c; +use crate::backend::conv::ret_usize_infallible; +use crate::ugid::{Gid, Uid}; + +#[inline] +pub(crate) fn getuid() -> Uid { + #[cfg(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86"))] + unsafe { + let uid = ret_usize_infallible(syscall_readonly!(__NR_getuid32)) as c::uid_t; + Uid::from_raw(uid) + } + #[cfg(not(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86")))] + unsafe { + let uid = ret_usize_infallible(syscall_readonly!(__NR_getuid)) as c::uid_t; + Uid::from_raw(uid) + } +} + +#[inline] +pub(crate) fn geteuid() -> Uid { + #[cfg(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86"))] + unsafe { + let uid = ret_usize_infallible(syscall_readonly!(__NR_geteuid32)) as c::uid_t; + Uid::from_raw(uid) + } + #[cfg(not(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86")))] + unsafe { + let uid = ret_usize_infallible(syscall_readonly!(__NR_geteuid)) as c::uid_t; + Uid::from_raw(uid) + } +} + +#[inline] +pub(crate) fn getgid() -> Gid { + #[cfg(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86"))] + unsafe { + let gid = ret_usize_infallible(syscall_readonly!(__NR_getgid32)) as c::gid_t; + Gid::from_raw(gid) + } + #[cfg(not(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86")))] + unsafe { + let gid = ret_usize_infallible(syscall_readonly!(__NR_getgid)) as c::gid_t; + Gid::from_raw(gid) + } +} + +#[inline] +pub(crate) fn getegid() -> Gid { + #[cfg(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86"))] + unsafe { + let gid = ret_usize_infallible(syscall_readonly!(__NR_getegid32)) as c::gid_t; + Gid::from_raw(gid) + } + #[cfg(not(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86")))] + unsafe { + let gid = ret_usize_infallible(syscall_readonly!(__NR_getegid)) as c::gid_t; + Gid::from_raw(gid) + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/vdso.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/vdso.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/vdso.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/vdso.rs 2023-10-30 19:40:00.000000000 +0000 @@ -194,8 +194,8 @@ impl Vdso { /// Parse the vDSO. /// - /// Returns `None` if the vDSO can't be located or if it doesn't conform - /// to our expectations. + /// Returns `None` if the vDSO can't be located or if it doesn't conform to + /// our expectations. #[inline] pub(super) fn new() -> Option { init_from_sysinfo_ehdr() diff -Nru temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/vdso_wrappers.rs temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/vdso_wrappers.rs --- temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/vdso_wrappers.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/backend/linux_raw/vdso_wrappers.rs 2023-10-30 19:40:00.000000000 +0000 @@ -9,22 +9,30 @@ //! functions. #![allow(unsafe_code)] -use super::conv::{c_int, ret}; #[cfg(target_arch = "x86")] use super::reg::{ArgReg, RetReg, SyscallNumber, A0, A1, A2, A3, A4, A5, R0}; -use super::time::types::{ClockId, DynamicClockId, Timespec}; -use super::{c, vdso}; -use crate::io; -#[cfg(all(asm, target_arch = "x86"))] -use core::arch::asm; -use core::mem::{transmute, MaybeUninit}; +use super::vdso; +#[cfg(target_arch = "x86")] +use core::arch::global_asm; +use core::mem::transmute; use core::ptr::null_mut; use core::sync::atomic::AtomicPtr; use core::sync::atomic::Ordering::Relaxed; #[cfg(target_pointer_width = "32")] +#[cfg(feature = "time")] use linux_raw_sys::general::timespec as __kernel_old_timespec; -use linux_raw_sys::general::{__kernel_clockid_t, __kernel_timespec}; +#[cfg(feature = "time")] +use { + super::c, + super::conv::{c_int, ret}, + crate::clockid::{ClockId, DynamicClockId}, + crate::io, + crate::timespec::Timespec, + core::mem::MaybeUninit, + linux_raw_sys::general::{__kernel_clockid_t, __kernel_timespec}, +}; +#[cfg(feature = "time")] #[inline] pub(crate) fn clock_gettime(which_clock: ClockId) -> __kernel_timespec { // SAFETY: `CLOCK_GETTIME` contains either null or the address of a @@ -37,11 +45,16 @@ None => init_clock_gettime(), }; let r0 = callee(which_clock as c::c_int, result.as_mut_ptr()); + // The `ClockId` enum only contains clocks which never fail. It may be + // tempting to change this to `debug_assert_eq`, however they can still + // fail on uncommon kernel configs, so we leave this in place to ensure + // that we don't execute undefined behavior if they ever do fail. assert_eq!(r0, 0); result.assume_init() } } +#[cfg(feature = "time")] #[inline] pub(crate) fn clock_gettime_dynamic(which_clock: DynamicClockId<'_>) -> io::Result { let id = match which_clock { @@ -198,6 +211,7 @@ // With the indirect call, it isn't meaningful to do a separate // `_readonly` optimization. + #[allow(unused_imports)] pub(in crate::backend) use { syscall0 as syscall0_readonly, syscall1 as syscall1_readonly, syscall2 as syscall2_readonly, syscall3 as syscall3_readonly, @@ -206,6 +220,7 @@ }; } +#[cfg(feature = "time")] type ClockGettimeType = unsafe extern "C" fn(c::c_int, *mut Timespec) -> c::c_int; /// The underlying syscall functions are only called from asm, using the @@ -215,6 +230,8 @@ pub(super) type SyscallType = unsafe extern "C" fn(); /// Initialize `CLOCK_GETTIME` and return its value. +#[cfg(feature = "time")] +#[cold] fn init_clock_gettime() -> ClockGettimeType { init(); // SAFETY: Load the function address from static storage that we @@ -224,6 +241,7 @@ /// Initialize `SYSCALL` and return its value. #[cfg(target_arch = "x86")] +#[cold] fn init_syscall() -> SyscallType { init(); // SAFETY: Load the function address from static storage that we @@ -234,10 +252,12 @@ /// `AtomicPtr` can't hold a `fn` pointer, so we use a `*` pointer to this /// placeholder type, and cast it as needed. struct Function; +#[cfg(feature = "time")] static mut CLOCK_GETTIME: AtomicPtr = AtomicPtr::new(null_mut()); #[cfg(target_arch = "x86")] static mut SYSCALL: AtomicPtr = AtomicPtr::new(null_mut()); +#[cfg(feature = "time")] unsafe extern "C" fn rustix_clock_gettime_via_syscall( clockid: c::c_int, res: *mut Timespec, @@ -248,6 +268,7 @@ } } +#[cfg(feature = "time")] #[cfg(target_pointer_width = "32")] unsafe fn _rustix_clock_gettime_via_syscall( clockid: c::c_int, @@ -260,16 +281,16 @@ } } +#[cfg(feature = "time")] #[cfg(target_pointer_width = "32")] unsafe fn _rustix_clock_gettime_via_syscall_old( clockid: c::c_int, res: *mut Timespec, ) -> io::Result<()> { - // Ordinarily `rustix` doesn't like to emulate system calls, but in - // the case of time APIs, it's specific to Linux, specific to - // 32-bit architectures *and* specific to old kernel versions, and - // it's not that hard to fix up here, so that no other code needs - // to worry about this. + // Ordinarily `rustix` doesn't like to emulate system calls, but in the + // case of time APIs, it's specific to Linux, specific to 32-bit + // architectures *and* specific to old kernel versions, and it's not that + // hard to fix up here, so that no other code needs to worry about this. let mut old_result = MaybeUninit::<__kernel_old_timespec>::uninit(); let r0 = syscall!(__NR_clock_gettime, c_int(clockid), &mut old_result); match ret(r0) { @@ -285,6 +306,7 @@ } } +#[cfg(feature = "time")] #[cfg(target_pointer_width = "64")] unsafe fn _rustix_clock_gettime_via_syscall( clockid: c::c_int, @@ -293,35 +315,52 @@ ret(syscall!(__NR_clock_gettime, c_int(clockid), res)) } -/// A symbol pointing to an `int 0x80` instruction. This “function†is only -/// called from assembly, and only with the x86 syscall calling convention, -/// so its signature here is not its true signature. -#[cfg(all(asm, target_arch = "x86"))] -#[naked] -unsafe extern "C" fn rustix_int_0x80() { - asm!("int $$0x80", "ret", options(noreturn)) -} - -// The outline version of the `rustix_int_0x80` above. -#[cfg(all(not(asm), target_arch = "x86"))] +#[cfg(target_arch = "x86")] extern "C" { + /// A symbol pointing to an `int 0x80` instruction. This “function†is only + /// called from assembly, and only with the x86 syscall calling convention. + /// so its signature here is not its true signature. + /// + /// This extern block and the `global_asm!` below can be replaced with + /// `#[naked]` if it's stabilized. fn rustix_int_0x80(); } +#[cfg(target_arch = "x86")] +global_asm!( + r#" + .section .text.rustix_int_0x80,"ax",@progbits + .p2align 4 + .weak rustix_int_0x80 + .hidden rustix_int_0x80 + .type rustix_int_0x80, @function +rustix_int_0x80: + .cfi_startproc + int 0x80 + ret + .cfi_endproc + .size rustix_int_0x80, .-rustix_int_0x80 +"# +); + fn minimal_init() { // SAFETY: Store default function addresses in static storage so that if we // end up making any system calls while we read the vDSO, they'll work. // If the memory happens to already be initialized, this is redundant, but // not harmful. unsafe { - CLOCK_GETTIME - .compare_exchange( - null_mut(), - rustix_clock_gettime_via_syscall as *mut Function, - Relaxed, - Relaxed, - ) - .ok(); + #[cfg(feature = "time")] + { + CLOCK_GETTIME + .compare_exchange( + null_mut(), + rustix_clock_gettime_via_syscall as *mut Function, + Relaxed, + Relaxed, + ) + .ok(); + } + #[cfg(target_arch = "x86")] { SYSCALL @@ -340,46 +379,54 @@ minimal_init(); if let Some(vdso) = vdso::Vdso::new() { - // Look up the platform-specific `clock_gettime` symbol as documented - // [here], except on 32-bit platforms where we look up the - // `64`-suffixed variant and fail if we don't find it. - // - // [here]: https://man7.org/linux/man-pages/man7/vdso.7.html - #[cfg(target_arch = "x86_64")] - let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime")); - #[cfg(target_arch = "arm")] - let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime64")); - #[cfg(target_arch = "aarch64")] - let ptr = vdso.sym(cstr!("LINUX_2.6.39"), cstr!("__kernel_clock_gettime")); - #[cfg(target_arch = "x86")] - let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime64")); - #[cfg(target_arch = "riscv64")] - let ptr = vdso.sym(cstr!("LINUX_4.15"), cstr!("__vdso_clock_gettime")); - #[cfg(target_arch = "powerpc64")] - let ptr = vdso.sym(cstr!("LINUX_2.6.15"), cstr!("__kernel_clock_gettime")); - #[cfg(target_arch = "mips")] - let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime64")); - #[cfg(target_arch = "mips64")] - let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime")); - - // On all 64-bit platforms, the 64-bit `clock_gettime` symbols are - // always available. - #[cfg(target_pointer_width = "64")] - let ok = true; - - // On some 32-bit platforms, the 64-bit `clock_gettime` symbols are not - // available on older kernel versions. - #[cfg(any(target_arch = "arm", target_arch = "mips", target_arch = "x86"))] - let ok = !ptr.is_null(); - - if ok { - assert!(!ptr.is_null()); - - // SAFETY: Store the computed function addresses in static storage - // so that we don't need to compute it again (but if we do, it - // doesn't hurt anything). - unsafe { - CLOCK_GETTIME.store(ptr.cast(), Relaxed); + #[cfg(feature = "time")] + { + // Look up the platform-specific `clock_gettime` symbol as documented + // [here], except on 32-bit platforms where we look up the + // `64`-suffixed variant and fail if we don't find it. + // + // [here]: https://man7.org/linux/man-pages/man7/vdso.7.html + #[cfg(target_arch = "x86_64")] + let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime")); + #[cfg(target_arch = "arm")] + let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime64")); + #[cfg(target_arch = "aarch64")] + let ptr = vdso.sym(cstr!("LINUX_2.6.39"), cstr!("__kernel_clock_gettime")); + #[cfg(target_arch = "x86")] + let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime64")); + #[cfg(target_arch = "riscv64")] + let ptr = vdso.sym(cstr!("LINUX_4.15"), cstr!("__vdso_clock_gettime")); + #[cfg(target_arch = "powerpc64")] + let ptr = vdso.sym(cstr!("LINUX_2.6.15"), cstr!("__kernel_clock_gettime")); + #[cfg(any(target_arch = "mips", target_arch = "mips32r6"))] + let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime64")); + #[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))] + let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime")); + + // On all 64-bit platforms, the 64-bit `clock_gettime` symbols are + // always available. + #[cfg(target_pointer_width = "64")] + let ok = true; + + // On some 32-bit platforms, the 64-bit `clock_gettime` symbols are not + // available on older kernel versions. + #[cfg(any( + target_arch = "arm", + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "x86" + ))] + let ok = !ptr.is_null(); + + if ok { + assert!(!ptr.is_null()); + + // SAFETY: Store the computed function addresses in static storage + // so that we don't need to compute it again (but if we do, it + // doesn't hurt anything). + unsafe { + CLOCK_GETTIME.store(ptr.cast(), Relaxed); + } } } diff -Nru temporalio-1.3.0/vendor/rustix/src/bitcast.rs temporalio-1.3.0/vendor/rustix/src/bitcast.rs --- temporalio-1.3.0/vendor/rustix/src/bitcast.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/bitcast.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,32 @@ +// Ensure that the source and destination types are both primitive integer +// types and the same size, and then bitcast. +#[allow(unused_macros)] +macro_rules! bitcast { + ($x:expr) => {{ + if false { + // Ensure the source and destinations are primitive integer types. + let _ = !$x; + let _ = $x as u8; + 0 + } else if false { + // Ensure that the source and destinations are the same size. + // SAFETY: This code is under an `if false`. + #[allow(unsafe_code, unused_unsafe, clippy::useless_transmute)] + unsafe { + ::core::mem::transmute($x) + } + } else { + // Do the conversion. + $x as _ + } + }}; +} + +/// Return a [`bitcast`] of the value of `$x.bits()`, where `$x` is a +/// `bitflags` type. +#[allow(unused_macros)] +macro_rules! bitflags_bits { + ($x:expr) => {{ + bitcast!($x.bits()) + }}; +} diff -Nru temporalio-1.3.0/vendor/rustix/src/check_types.rs temporalio-1.3.0/vendor/rustix/src/check_types.rs --- temporalio-1.3.0/vendor/rustix/src/check_types.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/check_types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,91 @@ +//! Macros for checking that types have the same layout as other types. + +#![allow(unused_macros)] + +/// Check that the size and alignment of a type match the `sys` bindings. +macro_rules! check_type { + ($struct:ident) => { + assert_eq_size!($struct, c::$struct); + assert_eq_align!($struct, c::$struct); + }; +} + +/// The same as `check_type`, but for unions and anonymous structs we've +/// renamed to avoid having types like `bindgen_ty_1` in the API. +macro_rules! check_renamed_type { + ($to:ident, $from:ident) => { + assert_eq_size!($to, c::$from); + assert_eq_align!($to, c::$from); + }; +} + +/// Check that the field of a struct has the same offset as the +/// corresponding field in the `sys` bindings. +macro_rules! check_struct_field { + ($struct:ident, $field:ident) => { + const_assert_eq!( + memoffset::offset_of!($struct, $field), + memoffset::offset_of!(c::$struct, $field) + ); + + // This can't use `const_assert_eq` because `span_of` returns a + // `Range`, which can't be compared in const contexts. + assert_eq!( + memoffset::span_of!($struct, $field), + memoffset::span_of!(c::$struct, $field) + ); + }; +} + +/// The same as `check_struct_field`, but for unions and anonymous structs +/// we've renamed to avoid having types like `bindgen_ty_1` in the API. +macro_rules! check_struct_renamed_field { + ($struct:ident, $to:ident, $from:ident) => { + const_assert_eq!( + memoffset::offset_of!($struct, $to), + memoffset::offset_of!(c::$struct, $from) + ); + + // As above, this can't use `const_assert_eq`. + assert_eq!( + memoffset::span_of!($struct, $to), + memoffset::span_of!(c::$struct, $from) + ); + }; +} + +/// The same as `check_struct_renamed_field`, but for when both the struct +/// and a field are renamed. +macro_rules! check_renamed_struct_renamed_field { + ($to_struct:ident, $from_struct:ident, $to:ident, $from:ident) => { + const_assert_eq!( + memoffset::offset_of!($to_struct, $to), + memoffset::offset_of!(c::$from_struct, $from) + ); + + // As above, this can't use `const_assert_eq`. + assert_eq!( + memoffset::span_of!($to_struct, $to), + memoffset::span_of!(c::$from_struct, $from) + ); + }; +} + +/// For the common case of no renaming, check all fields of a struct. +macro_rules! check_struct { + ($name:ident, $($field:ident),*) => { + // Check the size and alignment. + check_type!($name); + + // Check that we have all the fields. + if false { + #[allow(unreachable_code)] + let _test = $name { + $($field: panic!()),* + }; + } + + // Check that the fields have the right sizes and offsets. + $(check_struct_field!($name, $field));* + }; +} diff -Nru temporalio-1.3.0/vendor/rustix/src/clockid.rs temporalio-1.3.0/vendor/rustix/src/clockid.rs --- temporalio-1.3.0/vendor/rustix/src/clockid.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/clockid.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,112 @@ +use crate::backend::c; +use crate::fd::BorrowedFd; + +/// `CLOCK_*` constants for use with [`clock_gettime`]. +/// +/// These constants are always supported at runtime, so `clock_gettime` never +/// has to fail with `INVAL` due to an unsupported clock. See +/// [`DynamicClockId`] for a greater set of clocks, with the caveat that not +/// all of them are always supported. +/// +/// [`clock_gettime`]: crate::time::clock_gettime +#[cfg(not(any(apple, target_os = "wasi")))] +#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)] +#[cfg_attr(not(target_os = "dragonfly"), repr(i32))] +#[cfg_attr(target_os = "dragonfly", repr(u64))] +#[non_exhaustive] +pub enum ClockId { + /// `CLOCK_REALTIME` + Realtime = c::CLOCK_REALTIME, + + /// `CLOCK_MONOTONIC` + Monotonic = c::CLOCK_MONOTONIC, + + /// `CLOCK_UPTIME` + #[cfg(any(freebsdlike, target_os = "openbsd"))] + Uptime = c::CLOCK_UPTIME, + + /// `CLOCK_PROCESS_CPUTIME_ID` + #[cfg(not(any(solarish, target_os = "netbsd", target_os = "redox")))] + ProcessCPUTime = c::CLOCK_PROCESS_CPUTIME_ID, + + /// `CLOCK_THREAD_CPUTIME_ID` + #[cfg(not(any(solarish, target_os = "netbsd", target_os = "redox")))] + ThreadCPUTime = c::CLOCK_THREAD_CPUTIME_ID, + + /// `CLOCK_REALTIME_COARSE` + #[cfg(any(linux_kernel, target_os = "freebsd"))] + RealtimeCoarse = c::CLOCK_REALTIME_COARSE, + + /// `CLOCK_MONOTONIC_COARSE` + #[cfg(any(linux_kernel, target_os = "freebsd"))] + MonotonicCoarse = c::CLOCK_MONOTONIC_COARSE, + + /// `CLOCK_MONOTONIC_RAW` + #[cfg(linux_kernel)] + MonotonicRaw = c::CLOCK_MONOTONIC_RAW, +} + +/// `CLOCK_*` constants for use with [`clock_gettime`]. +/// +/// These constants are always supported at runtime, so `clock_gettime` never +/// has to fail with `INVAL` due to an unsupported clock. See +/// [`DynamicClockId`] for a greater set of clocks, with the caveat that not +/// all of them are always supported. +/// +/// [`clock_gettime`]: crate::time::clock_gettime +#[cfg(apple)] +#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)] +#[repr(u32)] +#[non_exhaustive] +pub enum ClockId { + /// `CLOCK_REALTIME` + Realtime = c::CLOCK_REALTIME, + + /// `CLOCK_MONOTONIC` + Monotonic = c::CLOCK_MONOTONIC, + + /// `CLOCK_PROCESS_CPUTIME_ID` + ProcessCPUTime = c::CLOCK_PROCESS_CPUTIME_ID, + + /// `CLOCK_THREAD_CPUTIME_ID` + ThreadCPUTime = c::CLOCK_THREAD_CPUTIME_ID, +} + +/// `CLOCK_*` constants for use with [`clock_gettime_dynamic`]. +/// +/// These constants may be unsupported at runtime, depending on the OS version, +/// and `clock_gettime_dynamic` may fail with `INVAL`. See [`ClockId`] for +/// clocks which are always supported at runtime. +/// +/// [`clock_gettime_dynamic`]: crate::time::clock_gettime_dynamic +#[cfg(not(target_os = "wasi"))] +#[derive(Debug, Copy, Clone)] +#[non_exhaustive] +pub enum DynamicClockId<'a> { + /// `ClockId` values that are always supported at runtime. + Known(ClockId), + + /// Linux dynamic clocks. + Dynamic(BorrowedFd<'a>), + + /// `CLOCK_REALTIME_ALARM`, available on Linux >= 3.0 + #[cfg(linux_kernel)] + RealtimeAlarm, + + /// `CLOCK_TAI`, available on Linux >= 3.10 + #[cfg(linux_kernel)] + Tai, + + /// `CLOCK_BOOTTIME`, available on Linux >= 2.6.39 + #[cfg(any( + freebsdlike, + linux_kernel, + target_os = "fuchsia", + target_os = "openbsd" + ))] + Boottime, + + /// `CLOCK_BOOTTIME_ALARM`, available on Linux >= 2.6.39 + #[cfg(any(linux_kernel, target_os = "fuchsia"))] + BoottimeAlarm, +} diff -Nru temporalio-1.3.0/vendor/rustix/src/const_assert.rs temporalio-1.3.0/vendor/rustix/src/const_assert.rs --- temporalio-1.3.0/vendor/rustix/src/const_assert.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/const_assert.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -/// A simple `assert` macro that works in `const fn`, for use until the -/// standard `assert` macro works in `const fn`. -/// -/// TODO: With Rust 1.58 we can replace this with just `assert!`. -#[allow(unused_macros)] -macro_rules! const_assert { - ($x:expr) => { - let b: bool = $x; - let _ = [()][!b as usize]; - }; -} - -#[test] -#[allow(clippy::missing_const_for_fn)] -fn test_const_assert() { - const_assert!(true); -} - -#[test] -const fn test_const_assert_in_const_fn() { - const_assert!(true); -} diff -Nru temporalio-1.3.0/vendor/rustix/src/cstr.rs temporalio-1.3.0/vendor/rustix/src/cstr.rs --- temporalio-1.3.0/vendor/rustix/src/cstr.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/cstr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -9,13 +9,13 @@ /// /// # Examples /// -/// ```no_run +/// ``` /// # #[cfg(feature = "fs")] /// # fn main() -> rustix::io::Result<()> { /// use rustix::cstr; -/// use rustix::fs::{cwd, statat, AtFlags}; +/// use rustix::fs::{statat, AtFlags, CWD}; /// -/// let metadata = statat(cwd(), cstr!("test.txt"), AtFlags::empty())?; +/// let metadata = statat(CWD, cstr!("Cargo.toml"), AtFlags::empty())?; /// # Ok(()) /// # } /// # #[cfg(not(feature = "fs"))] diff -Nru temporalio-1.3.0/vendor/rustix/src/event/eventfd.rs temporalio-1.3.0/vendor/rustix/src/event/eventfd.rs --- temporalio-1.3.0/vendor/rustix/src/event/eventfd.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/event/eventfd.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,20 @@ +use crate::fd::OwnedFd; +use crate::{backend, io}; + +pub use backend::event::types::EventfdFlags; + +/// `eventfd(initval, flags)`—Creates a file descriptor for event +/// notification. +/// +/// # References +/// - [Linux] +/// - [FreeBSD] +/// - [illumos] +/// +/// [Linux]: https://man7.org/linux/man-pages/man2/eventfd.2.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?eventfd +/// [illumos]: https://illumos.org/man/3C/eventfd +#[inline] +pub fn eventfd(initval: u32, flags: EventfdFlags) -> io::Result { + backend::event::syscalls::eventfd(initval, flags) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/event/kqueue.rs temporalio-1.3.0/vendor/rustix/src/event/kqueue.rs --- temporalio-1.3.0/vendor/rustix/src/event/kqueue.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/event/kqueue.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,437 @@ +//! An API for interfacing with `kqueue`. + +use crate::fd::{AsFd, OwnedFd, RawFd}; +use crate::pid::Pid; +use crate::signal::Signal; +use crate::{backend, io}; + +use backend::c::{self, intptr_t, kevent as kevent_t, uintptr_t}; +use backend::event::syscalls; + +use alloc::vec::Vec; +use core::mem::zeroed; +use core::ptr::slice_from_raw_parts_mut; +use core::time::Duration; + +/// A `kqueue` event. +#[repr(transparent)] +#[derive(Copy, Clone)] +pub struct Event { + // The layout varies between BSDs and macOS. + inner: kevent_t, +} + +impl Event { + /// Create a new `Event`. + #[allow(clippy::needless_update)] + pub fn new(filter: EventFilter, flags: EventFlags, udata: isize) -> Event { + let (ident, data, filter, fflags) = match filter { + EventFilter::Read(fd) => (fd as uintptr_t, 0, c::EVFILT_READ, 0), + EventFilter::Write(fd) => (fd as _, 0, c::EVFILT_WRITE, 0), + #[cfg(target_os = "freebsd")] + EventFilter::Empty(fd) => (fd as _, 0, c::EVFILT_EMPTY, 0), + EventFilter::Vnode { vnode, flags } => (vnode as _, 0, c::EVFILT_VNODE, flags.bits()), + EventFilter::Proc { pid, flags } => { + (Pid::as_raw(Some(pid)) as _, 0, c::EVFILT_PROC, flags.bits()) + } + EventFilter::Signal { signal, times: _ } => (signal as _, 0, c::EVFILT_SIGNAL, 0), + EventFilter::Timer { ident, timer } => { + #[cfg(any(apple, target_os = "freebsd", target_os = "netbsd"))] + let (data, fflags) = match timer { + Some(timer) => { + if timer.subsec_millis() == 0 { + (timer.as_secs() as _, c::NOTE_SECONDS) + } else if timer.subsec_nanos() == 0 { + (timer.as_micros() as _, c::NOTE_USECONDS) + } else { + (timer.as_nanos() as _, c::NOTE_NSECONDS) + } + } + None => (intptr_t::MAX, c::NOTE_SECONDS), + }; + #[cfg(any(target_os = "dragonfly", target_os = "openbsd"))] + let (data, fflags) = match timer { + Some(timer) => (timer.as_millis() as _, 0), + None => (intptr_t::MAX, 0), + }; + + (ident as _, data, c::EVFILT_TIMER, fflags) + } + #[cfg(any(apple, freebsdlike))] + EventFilter::User { + ident, + flags, + user_flags, + } => (ident as _, 0, c::EVFILT_USER, flags.bits() | user_flags.0), + EventFilter::Unknown => panic!("unknown filter"), + }; + + Event { + inner: kevent_t { + ident, + filter: filter as _, + flags: flags.bits() as _, + fflags, + data: { + // On openbsd, data is an i64 and not an isize + data as _ + }, + udata: { + // On netbsd, udata is an isize and not a pointer. + // TODO: Strict provenance, prevent int-to-ptr cast. + udata as _ + }, + ..unsafe { zeroed() } + }, + } + } + + /// Get the event flags for this event. + pub fn flags(&self) -> EventFlags { + EventFlags::from_bits_retain(self.inner.flags as _) + } + + /// Get the user data for this event. + pub fn udata(&self) -> isize { + // On netbsd, udata is an isize and not a pointer. + // TODO: Strict provenance, prevent ptr-to-int cast. + + self.inner.udata as _ + } + + /// Get the raw data for this event. + pub fn data(&self) -> i64 { + // On some bsds, data is an isize and not an i64 + self.inner.data as _ + } + + /// Get the filter of this event. + pub fn filter(&self) -> EventFilter { + match self.inner.filter as _ { + c::EVFILT_READ => EventFilter::Read(self.inner.ident as _), + c::EVFILT_WRITE => EventFilter::Write(self.inner.ident as _), + #[cfg(target_os = "freebsd")] + c::EVFILT_EMPTY => EventFilter::Empty(self.inner.ident as _), + c::EVFILT_VNODE => EventFilter::Vnode { + vnode: self.inner.ident as _, + flags: VnodeEvents::from_bits_retain(self.inner.fflags), + }, + c::EVFILT_PROC => EventFilter::Proc { + pid: Pid::from_raw(self.inner.ident as _).unwrap(), + flags: ProcessEvents::from_bits_retain(self.inner.fflags), + }, + c::EVFILT_SIGNAL => EventFilter::Signal { + signal: Signal::from_raw(self.inner.ident as _).unwrap(), + times: self.inner.data as _, + }, + c::EVFILT_TIMER => EventFilter::Timer { + ident: self.inner.ident as _, + timer: { + let (data, fflags) = (self.inner.data, self.inner.fflags); + #[cfg(not(any(apple, target_os = "freebsd", target_os = "netbsd")))] + let _ = fflags; + #[cfg(any(apple, target_os = "freebsd", target_os = "netbsd"))] + match fflags as _ { + c::NOTE_SECONDS => Some(Duration::from_secs(data as _)), + c::NOTE_USECONDS => Some(Duration::from_micros(data as _)), + c::NOTE_NSECONDS => Some(Duration::from_nanos(data as _)), + _ => { + // Unknown timer flags. + None + } + } + #[cfg(any(target_os = "dragonfly", target_os = "openbsd"))] + Some(Duration::from_millis(data as _)) + }, + }, + #[cfg(any(apple, freebsdlike))] + c::EVFILT_USER => EventFilter::User { + ident: self.inner.ident as _, + flags: UserFlags::from_bits_retain(self.inner.fflags), + user_flags: UserDefinedFlags(self.inner.fflags & EVFILT_USER_FLAGS), + }, + _ => EventFilter::Unknown, + } + } +} + +/// Bottom 24 bits of a u32. +#[cfg(any(apple, freebsdlike))] +const EVFILT_USER_FLAGS: u32 = 0x00ff_ffff; + +/// The possible filters for a `kqueue`. +#[repr(i16)] +#[non_exhaustive] +pub enum EventFilter { + /// A read filter. + Read(RawFd), + + /// A write filter. + Write(RawFd), + + /// An empty filter. + #[cfg(target_os = "freebsd")] + Empty(RawFd), + + /// A VNode filter. + Vnode { + /// The file descriptor we looked for events in. + vnode: RawFd, + + /// The flags for this event. + flags: VnodeEvents, + }, + + /// A process filter. + Proc { + /// The process ID we waited on. + pid: Pid, + + /// The flags for this event. + flags: ProcessEvents, + }, + + /// A signal filter. + Signal { + /// The signal number we waited on. + signal: Signal, + + /// The number of times the signal has been + /// received since the last call to kevent. + times: usize, + }, + + /// A timer filter. + Timer { + /// The identifier for this event. + ident: intptr_t, + + /// The duration for this event. + timer: Option, + }, + + /// A user filter. + #[cfg(any(apple, freebsdlike))] + User { + /// The identifier for this event. + ident: intptr_t, + + /// The flags for this event. + flags: UserFlags, + + /// The user-defined flags for this event. + user_flags: UserDefinedFlags, + }, + + /// This filter is unknown. + /// + /// # Panics + /// + /// Passing this into `Event::new()` will result in a panic. + Unknown, +} + +bitflags::bitflags! { + /// The flags for a `kqueue` event specifying actions to perform. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct EventFlags: u16 { + /// Add the event to the `kqueue`. + const ADD = c::EV_ADD as _; + + /// Enable the event. + const ENABLE = c::EV_ENABLE as _; + + /// Disable the event. + const DISABLE = c::EV_DISABLE as _; + + /// Delete the event from the `kqueue`. + const DELETE = c::EV_DELETE as _; + + /// TODO + const RECEIPT = c::EV_RECEIPT as _; + + /// Clear the event after it is triggered. + const ONESHOT = c::EV_ONESHOT as _; + + /// TODO + const CLEAR = c::EV_CLEAR as _; + + /// TODO + const EOF = c::EV_EOF as _; + + /// TODO + const ERROR = c::EV_ERROR as _; + } +} + +bitflags::bitflags! { + /// The flags for a virtual node event. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct VnodeEvents: u32 { + /// The file was deleted. + const DELETE = c::NOTE_DELETE; + + /// The file was written to. + const WRITE = c::NOTE_WRITE; + + /// The file was extended. + const EXTEND = c::NOTE_EXTEND; + + /// The file had its attributes changed. + const ATTRIBUTES = c::NOTE_ATTRIB; + + /// The file was renamed. + const RENAME = c::NOTE_RENAME; + + /// Access to the file was revoked. + const REVOKE = c::NOTE_REVOKE; + + /// The link count of the file has changed. + const LINK = c::NOTE_LINK; + } +} + +bitflags::bitflags! { + /// The flags for a process event. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct ProcessEvents: u32 { + /// The process exited. + const EXIT = c::NOTE_EXIT; + + /// The process forked itself. + const FORK = c::NOTE_FORK; + + /// The process executed a new process. + const EXEC = c::NOTE_EXEC; + + /// Follow the process through `fork` calls (write only). + const TRACK = c::NOTE_TRACK; + + /// An error has occurred with following the process. + const TRACKERR = c::NOTE_TRACKERR; + } +} + +#[cfg(any(apple, freebsdlike))] +bitflags::bitflags! { + /// The flags for a user event. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct UserFlags: u32 { + /// Ignore the user input flags. + const NOINPUT = c::NOTE_FFNOP; + + /// Bitwise AND `fflags`. + const AND = c::NOTE_FFAND; + + /// Bitwise OR `fflags`. + const OR = c::NOTE_FFOR; + + /// Copy `fflags`. + const COPY = c::NOTE_FFCOPY; + + /// Control mask for operations. + const CTRLMASK = c::NOTE_FFCTRLMASK; + + /// User defined flags for masks. + const UDFMASK = c::NOTE_FFLAGSMASK; + + /// Trigger the event. + const TRIGGER = c::NOTE_TRIGGER; + } +} + +/// User-defined flags. +/// +/// Only the lower 24 bits are used in this struct. +#[repr(transparent)] +#[cfg(any(apple, freebsdlike))] +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub struct UserDefinedFlags(u32); + +#[cfg(any(apple, freebsdlike))] +impl UserDefinedFlags { + /// Create a new `UserDefinedFlags` from a `u32`. + pub fn new(flags: u32) -> Self { + Self(flags & EVFILT_USER_FLAGS) + } + + /// Get the underlying `u32`. + pub fn get(self) -> u32 { + self.0 + } +} + +/// `kqueue()`—Create a new `kqueue` file descriptor. +/// +/// # References +/// - [Apple] +/// - [FreeBSD] +/// - [OpenBSD] +/// - [NetBSD] +/// - [DragonFly BSD] +/// +/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/kqueue.2.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=kqueue&sektion=2 +/// [OpenBSD]: https://man.openbsd.org/kqueue.2 +/// [NetBSD]: https://man.netbsd.org/kqueue.2 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=kqueue§ion=2 +pub fn kqueue() -> io::Result { + syscalls::kqueue() +} + +/// `kevent(kqueue, changelist, eventlist, timeout)`—Wait for events on a +/// `kqueue`. +/// +/// Note: in order to receive events, make sure to allocate capacity in the +/// eventlist! Otherwise, the function will return immediately. +/// +/// # Safety +/// +/// The file descriptors referred to by the `Event` structs must be valid for +/// the lifetime of the `kqueue` file descriptor. +/// +/// # References +/// - [Apple] +/// - [FreeBSD] +/// - [OpenBSD] +/// - [NetBSD] +/// - [DragonFly BSD] +/// +/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/kevent.2.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=kevent&sektion=2 +/// [OpenBSD]: https://man.openbsd.org/kevent.2 +/// [NetBSD]: https://man.netbsd.org/kevent.2 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=kevent§ion=2 +pub unsafe fn kevent( + kqueue: impl AsFd, + changelist: &[Event], + eventlist: &mut Vec, + timeout: Option, +) -> io::Result { + let timeout = timeout.map(|timeout| backend::c::timespec { + tv_sec: timeout.as_secs() as _, + tv_nsec: timeout.subsec_nanos() as _, + }); + + // Populate the event list with events. + eventlist.set_len(0); + let out_slice = slice_from_raw_parts_mut(eventlist.as_mut_ptr().cast(), eventlist.capacity()); + let res = syscalls::kevent( + kqueue.as_fd(), + changelist, + &mut *out_slice, + timeout.as_ref(), + ) + .map(|res| res as _); + + // Update the event list. + if let Ok(len) = res { + eventlist.set_len(len); + } + + res +} diff -Nru temporalio-1.3.0/vendor/rustix/src/event/mod.rs temporalio-1.3.0/vendor/rustix/src/event/mod.rs --- temporalio-1.3.0/vendor/rustix/src/event/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/event/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,25 @@ +//! Event operations. + +#[cfg(any( + linux_kernel, + target_os = "freebsd", + target_os = "illumos", + target_os = "espidf" +))] +mod eventfd; +#[cfg(bsd)] +pub mod kqueue; +mod poll; +#[cfg(solarish)] +pub mod port; + +#[cfg(linux_kernel)] +pub use crate::backend::event::epoll; +#[cfg(any( + linux_kernel, + target_os = "freebsd", + target_os = "illumos", + target_os = "espidf" +))] +pub use eventfd::{eventfd, EventfdFlags}; +pub use poll::{poll, PollFd, PollFlags}; diff -Nru temporalio-1.3.0/vendor/rustix/src/event/poll.rs temporalio-1.3.0/vendor/rustix/src/event/poll.rs --- temporalio-1.3.0/vendor/rustix/src/event/poll.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/event/poll.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,32 @@ +use crate::{backend, io}; + +pub use backend::event::poll_fd::{PollFd, PollFlags}; + +/// `poll(self.fds, timeout)` +/// +/// # References +/// - [Beej's Guide to Network Programming] +/// - [POSIX] +/// - [Linux] +/// - [Apple] +/// - [Winsock2] +/// - [FreeBSD] +/// - [NetBSD] +/// - [OpenBSD] +/// - [DragonFly BSD] +/// - [illumos] +/// +/// [Beej's Guide to Network Programming]: https://beej.us/guide/bgnet/html/split/slightly-advanced-techniques.html#poll +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/poll.html +/// [Linux]: https://man7.org/linux/man-pages/man2/poll.2.html +/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/poll.2.html +/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsapoll +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=poll&sektion=2 +/// [NetBSD]: https://man.netbsd.org/poll.2 +/// [OpenBSD]: https://man.openbsd.org/poll.2 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=poll§ion=2 +/// [illumos]: https://illumos.org/man/2/poll +#[inline] +pub fn poll(fds: &mut [PollFd<'_>], timeout: i32) -> io::Result { + backend::event::syscalls::poll(fds, timeout) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/event/port.rs temporalio-1.3.0/vendor/rustix/src/event/port.rs --- temporalio-1.3.0/vendor/rustix/src/event/port.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/event/port.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,150 @@ +//! Solaris/illumos event ports. + +use crate::backend::c; +use crate::backend::event::syscalls; +use crate::fd::{AsFd, AsRawFd, OwnedFd}; +use crate::io; + +use super::PollFlags; + +use core::time::Duration; + +/// The structure representing a port event. +#[repr(transparent)] +pub struct Event(pub(crate) c::port_event); + +impl Event { + /// Get the events associated with this event. + pub fn events(&self) -> i32 { + self.0.portev_events + } + + /// Get the event source associated with this event. + pub fn object(&self) -> usize { + self.0.portev_object + } + + /// Get the userdata associated with this event. + pub fn userdata(&self) -> *mut c::c_void { + self.0.portev_user + } +} + +/// `port_create()`—Creates a new port. +/// +/// # References +/// - [OpenSolaris] +/// - [illumos] +/// +/// [OpenSolaris]: https://www.unix.com/man-page/opensolaris/3C/port_create/ +/// [illumos]: https://illumos.org/man/3C/port_create +pub fn port_create() -> io::Result { + syscalls::port_create() +} + +/// `port_associate(_, PORT_SOURCE_FD, _, _, _)`—Associates a file descriptor +/// with a port. +/// +/// # Safety +/// +/// Any `object`s passed into the `port` must be valid for the lifetime of the +/// `port`. Logically, `port` keeps a borrowed reference to the `object` until +/// it is removed via `port_dissociate_fd`. +/// +/// # References +/// - [OpenSolaris] +/// - [illumos] +/// +/// [OpenSolaris]: https://www.unix.com/man-page/opensolaris/3C/port_associate/ +/// [illumos]: https://illumos.org/man/3C/port_associate +pub unsafe fn port_associate_fd( + port: impl AsFd, + object: impl AsRawFd, + events: PollFlags, + userdata: *mut c::c_void, +) -> io::Result<()> { + syscalls::port_associate( + port.as_fd(), + c::PORT_SOURCE_FD, + object.as_raw_fd() as _, + events.bits() as _, + userdata.cast(), + ) +} + +/// `port_dissociate(_, PORT_SOURCE_FD, _)`—Dissociates a file descriptor +/// from a port. +/// +/// # Safety +/// +/// The file descriptor passed into this function must have been previously +/// associated with the port via [`port_associate_fd`]. +/// +/// # References +/// - [OpenSolaris] +/// - [illumos] +/// +/// [OpenSolaris]: https://www.unix.com/man-page/opensolaris/3C/port_dissociate +/// [illumos]: https://illumos.org/man/3C/port_dissociate +pub unsafe fn port_dissociate_fd(port: impl AsFd, object: impl AsRawFd) -> io::Result<()> { + syscalls::port_dissociate(port.as_fd(), c::PORT_SOURCE_FD, object.as_raw_fd() as _) +} + +/// `port_get(port, timeout)`—Gets an event from a port. +/// +/// # References +/// - [OpenSolaris] +/// - [illumos] +/// +/// [OpenSolaris]: https://www.unix.com/man-page/opensolaris/3C/port_get/ +/// [illumos]: https://illumos.org/man/3C/port_get +pub fn port_get(port: impl AsFd, timeout: Option) -> io::Result { + let mut timeout = timeout.map(|timeout| c::timespec { + tv_sec: timeout.as_secs().try_into().unwrap(), + tv_nsec: timeout.subsec_nanos() as _, + }); + + syscalls::port_get(port.as_fd(), timeout.as_mut()) +} + +/// `port_getn(port, events, min_events, timeout)`—Gets multiple events from a +/// port. +/// +/// # References +/// - [OpenSolaris] +/// - [illumos] +/// +/// [OpenSolaris]: https://www.unix.com/man-page/opensolaris/3C/port_getn/ +/// [illumos]: https://illumos.org/man/3C/port_getn +pub fn port_getn( + port: impl AsFd, + events: &mut Vec, + min_events: usize, + timeout: Option, +) -> io::Result<()> { + events.clear(); + + let mut timeout = timeout.map(|timeout| c::timespec { + tv_sec: timeout.as_secs().try_into().unwrap(), + tv_nsec: timeout.subsec_nanos() as _, + }); + + syscalls::port_getn( + port.as_fd(), + timeout.as_mut(), + events, + min_events.try_into().unwrap(), + ) +} + +/// `port_send(port, events, userdata)`—Sends an event to a port. +/// +/// # References +/// - [OpenSolaris] +/// - [illumos] +/// +/// [OpenSolaris]: https://www.unix.com/man-page/opensolaris/3C/port_send/ +/// [illumos]: https://illumos.org/man/3C/port_send +pub fn port_send(port: impl AsFd, events: i32, userdata: *mut c::c_void) -> io::Result<()> { + syscalls::port_send(port.as_fd(), events, userdata.cast()) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/ffi/mod.rs temporalio-1.3.0/vendor/rustix/src/ffi/mod.rs --- temporalio-1.3.0/vendor/rustix/src/ffi/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/ffi/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -//! Utilities related to FFI bindings. - -// If we have std, use it. -#[cfg(feature = "std")] -pub use { - std::ffi::{CStr, CString, FromBytesWithNulError, NulError}, - std::os::raw::c_char, -}; - -// If we don't have std, we can depend on core and alloc having these features -// in new versions of Rust. -#[cfg(not(feature = "std"))] -pub use { - alloc::ffi::{CString, NulError}, - core::ffi::{c_char, CStr, FromBytesWithNulError}, -}; diff -Nru temporalio-1.3.0/vendor/rustix/src/ffi.rs temporalio-1.3.0/vendor/rustix/src/ffi.rs --- temporalio-1.3.0/vendor/rustix/src/ffi.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/ffi.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,16 @@ +//! Utilities related to FFI bindings. + +// If we have std, use it. +#[cfg(feature = "std")] +pub use { + std::ffi::{CStr, CString, FromBytesWithNulError, NulError}, + std::os::raw::c_char, +}; + +// If we don't have std, we can depend on core and alloc having these features +// in Rust 1.64+. +#[cfg(not(feature = "std"))] +pub use { + alloc::ffi::{CString, NulError}, + core::ffi::{c_char, CStr, FromBytesWithNulError}, +}; diff -Nru temporalio-1.3.0/vendor/rustix/src/fs/abs.rs temporalio-1.3.0/vendor/rustix/src/fs/abs.rs --- temporalio-1.3.0/vendor/rustix/src/fs/abs.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/fs/abs.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,18 +1,238 @@ //! POSIX-style filesystem functions which operate on bare paths. +use crate::fd::OwnedFd; +use crate::ffi::{CStr, CString}; +#[cfg(not(target_os = "espidf"))] +use crate::fs::Access; #[cfg(not(any( solarish, + target_os = "espidf", target_os = "haiku", target_os = "netbsd", + target_os = "nto", target_os = "redox", target_os = "wasi", )))] use crate::fs::StatFs; #[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "wasi")))] -use { - crate::fs::StatVfs, - crate::{backend, io, path}, -}; +use crate::fs::StatVfs; +use crate::fs::{Mode, OFlags, Stat}; +use crate::path::SMALL_PATH_BUFFER_SIZE; +use crate::{backend, io, path}; +use alloc::vec::Vec; + +/// `open(path, oflags, mode)`—Opens a file. +/// +/// POSIX guarantees that `open` will use the lowest unused file descriptor, +/// however it is not safe in general to rely on this, as file descriptors may +/// be unexpectedly allocated on other threads or in libraries. +/// +/// The `Mode` argument is only significant when creating a file. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html +/// [Linux]: https://man7.org/linux/man-pages/man2/open.2.html +#[inline] +pub fn open(path: P, flags: OFlags, mode: Mode) -> io::Result { + path.into_with_c_str(|path| backend::fs::syscalls::open(path, flags, mode)) +} + +/// `chmod(path, mode)`—Sets file or directory permissions. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/chmod.html +/// [Linux]: https://man7.org/linux/man-pages/man2/chmod.2.html +#[cfg(not(target_os = "wasi"))] +#[inline] +pub fn chmod(path: P, mode: Mode) -> io::Result<()> { + path.into_with_c_str(|path| backend::fs::syscalls::chmod(path, mode)) +} + +/// `stat(path)`—Queries metadata for a file or directory. +/// +/// [`Mode::from_raw_mode`] and [`FileType::from_raw_mode`] may be used to +/// interpret the `st_mode` field. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html +/// [Linux]: https://man7.org/linux/man-pages/man2/stat.2.html +/// [`Mode::from_raw_mode`]: crate::fs::Mode::from_raw_mode +/// [`FileType::from_raw_mode`]: crate::fs::FileType::from_raw_mode +#[inline] +pub fn stat(path: P) -> io::Result { + path.into_with_c_str(backend::fs::syscalls::stat) +} + +/// `lstat(path)`—Queries metadata for a file or directory, without following +/// symlinks. +/// +/// [`Mode::from_raw_mode`] and [`FileType::from_raw_mode`] may be used to +/// interpret the `st_mode` field. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/lstat.html +/// [Linux]: https://man7.org/linux/man-pages/man2/lstat.2.html +/// [`Mode::from_raw_mode`]: crate::fs::Mode::from_raw_mode +/// [`FileType::from_raw_mode`]: crate::fs::FileType::from_raw_mode +#[inline] +pub fn lstat(path: P) -> io::Result { + path.into_with_c_str(backend::fs::syscalls::lstat) +} + +/// `readlink(path)`—Reads the contents of a symlink. +/// +/// If `reuse` is non-empty, reuse its buffer to store the result if possible. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/readlink.html +/// [Linux]: https://man7.org/linux/man-pages/man2/readlink.2.html +#[inline] +pub fn readlink>>(path: P, reuse: B) -> io::Result { + path.into_with_c_str(|path| _readlink(path, reuse.into())) +} + +fn _readlink(path: &CStr, mut buffer: Vec) -> io::Result { + // This code would benefit from having a better way to read into + // uninitialized memory, but that requires `unsafe`. + buffer.clear(); + buffer.reserve(SMALL_PATH_BUFFER_SIZE); + buffer.resize(buffer.capacity(), 0_u8); + + loop { + let nread = backend::fs::syscalls::readlink(path, &mut buffer)?; + + let nread = nread as usize; + assert!(nread <= buffer.len()); + if nread < buffer.len() { + buffer.resize(nread, 0_u8); + return Ok(CString::new(buffer).unwrap()); + } + buffer.reserve(1); // use `Vec` reallocation strategy to grow capacity exponentially + buffer.resize(buffer.capacity(), 0_u8); + } +} + +/// `rename(old_path, new_path)`—Renames a file or directory. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/rename.html +/// [Linux]: https://man7.org/linux/man-pages/man2/rename.2.html +#[inline] +pub fn rename(old_path: P, new_path: Q) -> io::Result<()> { + old_path.into_with_c_str(|old_path| { + new_path.into_with_c_str(|new_path| backend::fs::syscalls::rename(old_path, new_path)) + }) +} + +/// `unlink(path)`—Unlinks a file. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/unlink.html +/// [Linux]: https://man7.org/linux/man-pages/man2/unlink.2.html +#[inline] +pub fn unlink(path: P) -> io::Result<()> { + path.into_with_c_str(backend::fs::syscalls::unlink) +} + +/// `rmdir(path)`—Removes a directory. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/rmdir.html +/// [Linux]: https://man7.org/linux/man-pages/man2/rmdir.2.html +#[inline] +pub fn rmdir(path: P) -> io::Result<()> { + path.into_with_c_str(backend::fs::syscalls::rmdir) +} + +/// `link(old_path, new_path)`—Creates a hard link. +/// +/// POSIX leaves it implementation-defined whether `link` follows a symlink in +/// `old_path`, or creates a new link to the symbolic link itself. On platforms +/// which have it, [`linkat`] avoids this problem since it has an [`AtFlags`] +/// paramter and the [`AtFlags::SYMLINK_FOLLOW`] flag determines whether +/// symlinks should be followed. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/link.html +/// [Linux]: https://man7.org/linux/man-pages/man2/link.2.html +/// [`linkat`]: crate::fs::linkat +/// [`AtFlags`]: crate::fs::AtFlags +/// [`AtFlags::SYMLINK_FOLLOW`]: crate::fs::AtFlags::SYMLINK_FOLLOW +#[inline] +pub fn link(old_path: P, new_path: Q) -> io::Result<()> { + old_path.into_with_c_str(|old_path| { + new_path.into_with_c_str(|new_path| backend::fs::syscalls::link(old_path, new_path)) + }) +} + +/// `symlink(old_path, new_path)`—Creates a symlink. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/symlink.html +/// [Linux]: https://man7.org/linux/man-pages/man2/symlink.2.html +#[inline] +pub fn symlink(old_path: P, new_path: Q) -> io::Result<()> { + old_path.into_with_c_str(|old_path| { + new_path.into_with_c_str(|new_path| backend::fs::syscalls::symlink(old_path, new_path)) + }) +} + +/// `mkdir(path, mode)`—Creates a directory. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdir.html +/// [Linux]: https://man7.org/linux/man-pages/man2/mkdir.2.html +#[inline] +pub fn mkdir(path: P, mode: Mode) -> io::Result<()> { + path.into_with_c_str(|path| backend::fs::syscalls::mkdir(path, mode)) +} + +/// `access(path, access)`—Tests permissions for a file or directory. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/access.html +/// [Linux]: https://man7.org/linux/man-pages/man2/access.2.html +#[cfg(not(target_os = "espidf"))] +#[inline] +pub fn access(path: P, access: Access) -> io::Result<()> { + path.into_with_c_str(|path| backend::fs::syscalls::access(path, access)) +} /// `statfs`—Queries filesystem metadata. /// @@ -25,8 +245,10 @@ /// [Linux]: https://man7.org/linux/man-pages/man2/statfs.2.html #[cfg(not(any( solarish, + target_os = "espidf", target_os = "haiku", target_os = "netbsd", + target_os = "nto", target_os = "redox", target_os = "wasi", )))] diff -Nru temporalio-1.3.0/vendor/rustix/src/fs/at.rs temporalio-1.3.0/vendor/rustix/src/fs/at.rs --- temporalio-1.3.0/vendor/rustix/src/fs/at.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/fs/at.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,39 +1,43 @@ //! POSIX-style `*at` functions. //! //! The `dirfd` argument to these functions may be a file descriptor for a -//! directory, or the special value returned by [`cwd`]. +//! directory, or the special value [`CWD`]. //! -//! [`cwd`]: crate::fs::cwd::cwd +//! [`cwd`]: crate::fs::cwd::CWD use crate::fd::OwnedFd; use crate::ffi::{CStr, CString}; #[cfg(apple)] use crate::fs::CloneFlags; -#[cfg(not(any(apple, target_os = "wasi")))] +#[cfg(not(any(apple, target_os = "espidf", target_os = "wasi")))] use crate::fs::FileType; #[cfg(linux_kernel)] use crate::fs::RenameFlags; -use crate::fs::{Access, AtFlags, Mode, OFlags, Stat, Timestamps}; +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] +use crate::fs::{Gid, Uid}; +use crate::fs::{Mode, OFlags}; use crate::path::SMALL_PATH_BUFFER_SIZE; -#[cfg(not(target_os = "wasi"))] -use crate::process::{Gid, Uid}; use crate::{backend, io, path}; use alloc::vec::Vec; use backend::fd::{AsFd, BorrowedFd}; -use backend::time::types::Nsecs; +#[cfg(not(target_os = "espidf"))] +use { + crate::fs::{Access, AtFlags, Stat, Timestamps}, + crate::timespec::Nsecs, +}; pub use backend::fs::types::{Dev, RawMode}; /// `UTIME_NOW` for use with [`utimensat`]. /// /// [`utimensat`]: crate::fs::utimensat -#[cfg(not(target_os = "redox"))] +#[cfg(not(any(target_os = "espidf", target_os = "redox")))] pub const UTIME_NOW: Nsecs = backend::c::UTIME_NOW as Nsecs; /// `UTIME_OMIT` for use with [`utimensat`]. /// /// [`utimensat`]: crate::fs::utimensat -#[cfg(not(target_os = "redox"))] +#[cfg(not(any(target_os = "espidf", target_os = "redox")))] pub const UTIME_OMIT: Nsecs = backend::c::UTIME_OMIT as Nsecs; /// `openat(dirfd, path, oflags, mode)`—Opens a file. @@ -64,7 +68,7 @@ /// `readlinkat(fd, path)`—Reads the contents of a symlink. /// -/// If `reuse` is non-empty, reuse its buffer to store the result if possible. +/// If `reuse` already has available capacity, reuse it if possible. /// /// # References /// - [POSIX] @@ -81,24 +85,46 @@ path.into_with_c_str(|path| _readlinkat(dirfd.as_fd(), path, reuse.into())) } +#[allow(unsafe_code)] fn _readlinkat(dirfd: BorrowedFd<'_>, path: &CStr, mut buffer: Vec) -> io::Result { - // This code would benefit from having a better way to read into - // uninitialized memory, but that requires `unsafe`. buffer.clear(); buffer.reserve(SMALL_PATH_BUFFER_SIZE); - buffer.resize(buffer.capacity(), 0_u8); loop { - let nread = backend::fs::syscalls::readlinkat(dirfd.as_fd(), path, &mut buffer)?; + let nread = + backend::fs::syscalls::readlinkat(dirfd.as_fd(), path, buffer.spare_capacity_mut())?; - let nread = nread as usize; - assert!(nread <= buffer.len()); - if nread < buffer.len() { - buffer.resize(nread, 0_u8); - return Ok(CString::new(buffer).unwrap()); + debug_assert!(nread <= buffer.capacity()); + if nread < buffer.capacity() { + // SAFETY: From the [documentation]: + // "On success, these calls return the number of bytes placed in buf." + // + // [documentation]: https://man7.org/linux/man-pages/man2/readlinkat.2.html + unsafe { + buffer.set_len(nread); + } + + // SAFETY: + // - "readlink places the contents of the symbolic link pathname in the buffer + // buf" + // - [POSIX definition 3.271: Pathname]: "A string that is used to identify a + // file." + // - [POSIX definition 3.375: String]: "A contiguous sequence of bytes + // terminated by and including the first null byte." + // - "readlink does not append a terminating null byte to buf." + // + // Thus, there will be no NUL bytes in the string. + // + // [POSIX definition 3.271: Pathname]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_271 + // [POSIX definition 3.375: String]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_375 + unsafe { + return Ok(CString::from_vec_unchecked(buffer)); + } } - buffer.reserve(1); // use `Vec` reallocation strategy to grow capacity exponentially - buffer.resize(buffer.capacity(), 0_u8); + + buffer.reserve(buffer.capacity() + 1); // use `Vec` reallocation + // strategy to grow capacity + // exponentially } } @@ -124,6 +150,7 @@ /// /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/linkat.html /// [Linux]: https://man7.org/linux/man-pages/man2/linkat.2.html +#[cfg(not(target_os = "espidf"))] #[inline] pub fn linkat( old_dirfd: PFd, @@ -157,6 +184,7 @@ /// [`REMOVEDIR`]: AtFlags::REMOVEDIR /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/unlinkat.html /// [Linux]: https://man7.org/linux/man-pages/man2/unlinkat.2.html +#[cfg(not(target_os = "espidf"))] #[inline] pub fn unlinkat(dirfd: Fd, path: P, flags: AtFlags) -> io::Result<()> { path.into_with_c_str(|path| backend::fs::syscalls::unlinkat(dirfd.as_fd(), path, flags)) @@ -254,6 +282,7 @@ /// [Linux]: https://man7.org/linux/man-pages/man2/fstatat.2.html /// [`Mode::from_raw_mode`]: crate::fs::Mode::from_raw_mode /// [`FileType::from_raw_mode`]: crate::fs::FileType::from_raw_mode +#[cfg(not(target_os = "espidf"))] #[inline] #[doc(alias = "fstatat")] pub fn statat(dirfd: Fd, path: P, flags: AtFlags) -> io::Result { @@ -276,6 +305,7 @@ /// /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/faccessat.html /// [Linux]: https://man7.org/linux/man-pages/man2/faccessat.2.html +#[cfg(not(target_os = "espidf"))] #[inline] #[doc(alias = "faccessat")] pub fn accessat( @@ -295,6 +325,7 @@ /// /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/utimensat.html /// [Linux]: https://man7.org/linux/man-pages/man2/utimensat.2.html +#[cfg(not(target_os = "espidf"))] #[inline] pub fn utimensat( dirfd: Fd, @@ -305,23 +336,6 @@ path.into_with_c_str(|path| backend::fs::syscalls::utimensat(dirfd.as_fd(), path, times, flags)) } -/// `fchmodat(dirfd, path, mode, 0)`—Sets file or directory permissions. -/// -/// See `fchmodat_with` for a version that does take flags. -/// -/// # References -/// - [POSIX] -/// - [Linux] -/// -/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fchmodat.html -/// [Linux]: https://man7.org/linux/man-pages/man2/fchmodat.2.html -#[cfg(not(target_os = "wasi"))] -#[inline] -#[doc(alias = "fchmodat")] -pub fn chmodat(dirfd: Fd, path: P, mode: Mode) -> io::Result<()> { - chmodat_with(dirfd, path, mode, AtFlags::empty()) -} - /// `fchmodat(dirfd, path, mode, flags)`—Sets file or directory permissions. /// /// Platform support for flags varies widely, for example on Linux @@ -334,10 +348,10 @@ /// /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fchmodat.html /// [Linux]: https://man7.org/linux/man-pages/man2/fchmodat.2.html -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] #[inline] -#[doc(alias = "fchmodat_with")] -pub fn chmodat_with( +#[doc(alias = "fchmodat")] +pub fn chmodat( dirfd: Fd, path: P, mode: Mode, @@ -373,7 +387,7 @@ /// /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/mknodat.html /// [Linux]: https://man7.org/linux/man-pages/man2/mknodat.2.html -#[cfg(not(any(apple, target_os = "wasi")))] +#[cfg(not(any(apple, target_os = "espidf", target_os = "wasi")))] #[inline] pub fn mknodat( dirfd: Fd, @@ -396,7 +410,7 @@ /// /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fchownat.html /// [Linux]: https://man7.org/linux/man-pages/man2/fchownat.2.html -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] #[inline] #[doc(alias = "fchownat")] pub fn chownat( diff -Nru temporalio-1.3.0/vendor/rustix/src/fs/constants.rs temporalio-1.3.0/vendor/rustix/src/fs/constants.rs --- temporalio-1.3.0/vendor/rustix/src/fs/constants.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/fs/constants.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,9 +3,11 @@ use crate::backend; pub use crate::io::FdFlags; -pub use backend::fs::types::{Access, Dev, Mode, OFlags}; +#[cfg(not(target_os = "espidf"))] +pub use backend::fs::types::Access; +pub use backend::fs::types::{Dev, Mode, OFlags}; -#[cfg(not(target_os = "redox"))] +#[cfg(not(any(target_os = "espidf", target_os = "redox")))] pub use backend::fs::types::AtFlags; #[cfg(apple)] @@ -14,4 +16,4 @@ #[cfg(linux_kernel)] pub use backend::fs::types::*; -pub use backend::time::types::{Nsecs, Secs, Timespec}; +pub use crate::timespec::{Nsecs, Secs, Timespec}; diff -Nru temporalio-1.3.0/vendor/rustix/src/fs/cwd.rs temporalio-1.3.0/vendor/rustix/src/fs/cwd.rs --- temporalio-1.3.0/vendor/rustix/src/fs/cwd.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/fs/cwd.rs 2023-10-30 19:40:00.000000000 +0000 @@ -8,23 +8,30 @@ #![allow(unsafe_code)] use crate::backend; +use backend::c; use backend::fd::{BorrowedFd, RawFd}; -/// `AT_FDCWD`—Returns a handle representing the current working directory. +/// `AT_FDCWD`—A handle representing the current working directory. /// -/// This returns a file descriptor which refers to the process current -/// directory which can be used as the directory argument in `*at` -/// functions such as [`openat`]. +/// This is a file descriptor which refers to the process current directory +/// which can be used as the directory argument in `*at` functions such as +/// [`openat`]. /// /// # References /// - [POSIX] /// /// [`openat`]: crate::fs::openat /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/fcntl.h.html -#[inline] +// SAFETY: `AT_FDCWD` is a reserved value that is never dynamically +// allocated, so it'll remain valid for the duration of `'static`. #[doc(alias = "AT_FDCWD")] +pub const CWD: BorrowedFd<'static> = + unsafe { BorrowedFd::<'static>::borrow_raw(c::AT_FDCWD as RawFd) }; + +/// Return the value of [`CWD`]. +#[deprecated(note = "Use `CWD` in place of `cwd()`.")] pub const fn cwd() -> BorrowedFd<'static> { - let at_fdcwd = backend::io::types::AT_FDCWD as RawFd; + let at_fdcwd = c::AT_FDCWD as RawFd; // SAFETY: `AT_FDCWD` is a reserved value that is never dynamically // allocated, so it'll remain valid for the duration of `'static`. diff -Nru temporalio-1.3.0/vendor/rustix/src/fs/fcntl_apple.rs temporalio-1.3.0/vendor/rustix/src/fs/fcntl_apple.rs --- temporalio-1.3.0/vendor/rustix/src/fs/fcntl_apple.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/fs/fcntl_apple.rs 2023-10-30 19:40:00.000000000 +0000 @@ -7,6 +7,7 @@ /// - [Apple] /// /// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/fcntl.2.html +#[doc(alias = "F_RDADVISE")] #[inline] pub fn fcntl_rdadvise(fd: Fd, offset: u64, len: u64) -> io::Result<()> { backend::fs::syscalls::fcntl_rdadvise(fd.as_fd(), offset, len) @@ -18,7 +19,48 @@ /// - [Apple] /// /// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/fcntl.2.html +#[doc(alias = "F_FULLSYNC")] #[inline] pub fn fcntl_fullfsync(fd: Fd) -> io::Result<()> { backend::fs::syscalls::fcntl_fullfsync(fd.as_fd()) } + +/// `fcntl(fd, F_NOCACHE, value)`—Turn data caching off or on for a file +/// descriptor. +/// +/// See [this mailing list post] for additional information about the meanings +/// of `F_NOCACHE` and `F_GLOBAL_NOCACHE`. +/// +/// [this mailing list post]: https://lists.apple.com/archives/filesystem-dev/2007/Sep/msg00010.html +/// +/// See also [`fcntl_global_nocache`]. +/// +/// # References +/// - [Apple] +/// +/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/fcntl.2.html +#[doc(alias = "F_NOCACHE")] +#[inline] +pub fn fcntl_nocache(fd: Fd, value: bool) -> io::Result<()> { + backend::fs::syscalls::fcntl_nocache(fd.as_fd(), value) +} + +/// `fcntl(fd, F_GLOBAL_NOCACHE, value)`—Turn data caching off or on for all +/// file descriptors. +/// +/// See [this mailing list post] for additional information about the meanings +/// of `F_NOCACHE` and `F_GLOBAL_NOCACHE`. +/// +/// [this mailing list post]: https://lists.apple.com/archives/filesystem-dev/2007/Sep/msg00010.html +/// +/// See also [`fcntl_nocache`]. +/// +/// # References +/// - [Apple] +/// +/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/fcntl.2.html +#[doc(alias = "F_GLOBAL_NOCACHE")] +#[inline] +pub fn fcntl_global_nocache(fd: Fd, value: bool) -> io::Result<()> { + backend::fs::syscalls::fcntl_global_nocache(fd.as_fd(), value) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/fs/fcntl.rs temporalio-1.3.0/vendor/rustix/src/fs/fcntl.rs --- temporalio-1.3.0/vendor/rustix/src/fs/fcntl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/fs/fcntl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,6 +5,7 @@ #[cfg(not(any( target_os = "emscripten", + target_os = "espidf", target_os = "fuchsia", target_os = "redox", target_os = "wasi" @@ -14,10 +15,10 @@ use backend::fd::AsFd; use backend::fs::types::OFlags; -// These `fcntl` functions like in the `io` module because they're not specific +// These `fcntl` functions live in the `io` module because they're not specific // to files, directories, or memfd objects. We re-export them here in the `fs` // module because the other the `fcntl` functions are here. -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] pub use crate::io::fcntl_dupfd_cloexec; pub use crate::io::{fcntl_getfd, fcntl_setfd}; @@ -96,6 +97,7 @@ /// [Linux]: https://man7.org/linux/man-pages/man2/fcntl.2.html #[cfg(not(any( target_os = "emscripten", + target_os = "espidf", target_os = "fuchsia", target_os = "redox", target_os = "wasi" diff -Nru temporalio-1.3.0/vendor/rustix/src/fs/fd.rs temporalio-1.3.0/vendor/rustix/src/fs/fd.rs --- temporalio-1.3.0/vendor/rustix/src/fs/fd.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/fs/fd.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,14 +2,13 @@ #[cfg(not(target_os = "wasi"))] use crate::fs::Mode; -use crate::fs::{OFlags, Timespec}; -use crate::io::SeekFrom; #[cfg(not(target_os = "wasi"))] -use crate::process::{Gid, Uid}; +use crate::fs::{Gid, Uid}; +use crate::fs::{OFlags, SeekFrom, Timespec}; use crate::{backend, io}; use backend::fd::{AsFd, BorrowedFd}; -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] pub use backend::fs::types::FlockOperation; #[cfg(not(any( @@ -17,6 +16,8 @@ solarish, target_os = "aix", target_os = "dragonfly", + target_os = "espidf", + target_os = "nto", target_os = "redox", )))] pub use backend::fs::types::FallocateFlags; @@ -25,8 +26,10 @@ #[cfg(not(any( solarish, + target_os = "espidf", target_os = "haiku", target_os = "netbsd", + target_os = "nto", target_os = "redox", target_os = "wasi", )))] @@ -162,8 +165,10 @@ /// [Linux]: https://man7.org/linux/man-pages/man2/fstatfs.2.html #[cfg(not(any( solarish, + target_os = "espidf", target_os = "haiku", target_os = "netbsd", + target_os = "nto", target_os = "redox", target_os = "wasi", )))] @@ -200,6 +205,7 @@ /// /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/futimens.html /// [Linux]: https://man7.org/linux/man-pages/man2/utimensat.2.html +#[cfg(not(target_os = "espidf"))] #[inline] pub fn futimens(fd: Fd, times: &Timestamps) -> io::Result<()> { backend::fs::syscalls::futimens(fd.as_fd(), times) @@ -225,6 +231,8 @@ solarish, target_os = "aix", target_os = "dragonfly", + target_os = "espidf", + target_os = "nto", target_os = "redox", )))] // not implemented in libc for netbsd yet #[inline] @@ -293,6 +301,7 @@ #[cfg(not(any( apple, target_os = "dragonfly", + target_os = "espidf", target_os = "haiku", target_os = "redox", )))] @@ -320,7 +329,7 @@ /// - [Linux] /// /// [Linux]: https://man7.org/linux/man-pages/man2/flock.2.html -#[cfg(not(any(target_os = "solaris", target_os = "wasi")))] +#[cfg(not(any(target_os = "espidf", target_os = "solaris", target_os = "wasi")))] #[inline] pub fn flock(fd: Fd, operation: FlockOperation) -> io::Result<()> { backend::fs::syscalls::flock(fd.as_fd(), operation) diff -Nru temporalio-1.3.0/vendor/rustix/src/fs/id.rs temporalio-1.3.0/vendor/rustix/src/fs/id.rs --- temporalio-1.3.0/vendor/rustix/src/fs/id.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/fs/id.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +pub use crate::ugid::{Gid, Uid}; diff -Nru temporalio-1.3.0/vendor/rustix/src/fs/ioctl.rs temporalio-1.3.0/vendor/rustix/src/fs/ioctl.rs --- temporalio-1.3.0/vendor/rustix/src/fs/ioctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/fs/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,50 @@ +//! Filesystem-oriented `ioctl` functions. + +#[cfg(linux_kernel)] +use { + crate::fd::AsFd, + crate::{backend, io}, +}; + +/// `ioctl(fd, BLKSSZGET)`—Returns the logical block size of a block device. +/// +/// This is mentioned in the [Linux `openat` manual page]. +/// +/// [Linux `openat` manual page]: https://man7.org/linux/man-pages/man2/openat.2.html +#[cfg(linux_kernel)] +#[inline] +#[doc(alias = "BLKSSZGET")] +pub fn ioctl_blksszget(fd: Fd) -> io::Result { + backend::fs::syscalls::ioctl_blksszget(fd.as_fd()) +} + +/// `ioctl(fd, BLKPBSZGET)`—Returns the physical block size of a block device. +#[cfg(linux_kernel)] +#[inline] +#[doc(alias = "BLKPBSZGET")] +pub fn ioctl_blkpbszget(fd: Fd) -> io::Result { + backend::fs::syscalls::ioctl_blkpbszget(fd.as_fd()) +} + +/// `ioctl(fd, FICLONE, src_fd)`—Share data between open files. +/// +/// This ioctl is not available on Sparc platforms +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man2/ioctl_ficlone.2.html +#[cfg(all(linux_kernel, not(any(target_arch = "sparc", target_arch = "sparc64"))))] +#[inline] +#[doc(alias = "FICLONE")] +pub fn ioctl_ficlone(fd: Fd, src_fd: SrcFd) -> io::Result<()> { + backend::fs::syscalls::ioctl_ficlone(fd.as_fd(), src_fd.as_fd()) +} + +/// `ioctl(fd, EXT4_IOC_RESIZE_FS, blocks)`—Resize ext4 filesystem on fd. +#[cfg(linux_kernel)] +#[inline] +#[doc(alias = "EXT4_IOC_RESIZE_FS")] +pub fn ext4_ioc_resize_fs(fd: Fd, blocks: u64) -> io::Result<()> { + backend::fs::syscalls::ext4_ioc_resize_fs(fd.as_fd(), blocks) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/fs/mod.rs temporalio-1.3.0/vendor/rustix/src/fs/mod.rs --- temporalio-1.3.0/vendor/rustix/src/fs/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/fs/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,15 +6,17 @@ mod constants; #[cfg(linux_kernel)] mod copy_file_range; -#[cfg(not(target_os = "redox"))] +#[cfg(not(any(target_os = "espidf", target_os = "redox")))] +#[cfg(not(target_os = "haiku"))] // Haiku needs mod cwd; -#[cfg(not(target_os = "redox"))] +#[cfg(not(any(target_os = "espidf", target_os = "redox")))] mod dir; #[cfg(not(any( apple, netbsdlike, solarish, target_os = "dragonfly", + target_os = "espidf", target_os = "haiku", target_os = "redox", )))] @@ -28,21 +30,32 @@ mod file_type; #[cfg(apple)] mod getpath; -#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "wasi")))] +#[cfg(not(target_os = "wasi"))] // WASI doesn't have get[gpu]id. +mod id; +#[cfg(not(target_os = "wasi"))] +mod ioctl; +#[cfg(not(any( + target_os = "espidf", + target_os = "haiku", + target_os = "redox", + target_os = "wasi" +)))] mod makedev; #[cfg(any(linux_kernel, target_os = "freebsd"))] mod memfd_create; #[cfg(linux_kernel)] +#[cfg(feature = "fs")] mod mount; #[cfg(linux_kernel)] mod openat2; #[cfg(linux_kernel)] mod raw_dir; +mod seek_from; #[cfg(target_os = "linux")] mod sendfile; #[cfg(linux_kernel)] mod statx; -#[cfg(not(any(target_os = "redox", target_os = "wasi")))] +#[cfg(not(any(target_os = "espidf", target_os = "redox", target_os = "wasi")))] mod sync; #[cfg(any(apple, linux_kernel))] mod xattr; @@ -55,43 +68,56 @@ pub use constants::*; #[cfg(linux_kernel)] pub use copy_file_range::copy_file_range; -#[cfg(not(target_os = "redox"))] -pub use cwd::cwd; -#[cfg(not(target_os = "redox"))] +#[cfg(not(any(target_os = "espidf", target_os = "redox")))] +#[cfg(not(target_os = "haiku"))] // Haiku needs +pub use cwd::*; +#[cfg(not(any(target_os = "espidf", target_os = "redox")))] pub use dir::{Dir, DirEntry}; #[cfg(not(any( apple, netbsdlike, solarish, target_os = "dragonfly", + target_os = "espidf", target_os = "haiku", target_os = "redox", )))] pub use fadvise::{fadvise, Advice}; pub use fcntl::*; #[cfg(apple)] -pub use fcntl_apple::{fcntl_fullfsync, fcntl_rdadvise}; +pub use fcntl_apple::*; #[cfg(apple)] pub use fcopyfile::*; pub use fd::*; pub use file_type::FileType; #[cfg(apple)] pub use getpath::getpath; -#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "wasi")))] +#[cfg(not(target_os = "wasi"))] +pub use id::*; +#[cfg(not(target_os = "wasi"))] +pub use ioctl::*; +#[cfg(not(any( + target_os = "espidf", + target_os = "haiku", + target_os = "redox", + target_os = "wasi" +)))] pub use makedev::*; #[cfg(any(linux_kernel, target_os = "freebsd"))] pub use memfd_create::{memfd_create, MemfdFlags}; #[cfg(linux_kernel)] +#[cfg(feature = "fs")] pub use mount::*; #[cfg(linux_kernel)] pub use openat2::openat2; #[cfg(linux_kernel)] pub use raw_dir::{RawDir, RawDirEntry}; +pub use seek_from::SeekFrom; #[cfg(target_os = "linux")] pub use sendfile::sendfile; #[cfg(linux_kernel)] pub use statx::{statx, Statx, StatxFlags, StatxTimestamp}; -#[cfg(not(any(target_os = "redox", target_os = "wasi")))] +#[cfg(not(any(target_os = "espidf", target_os = "redox", target_os = "wasi")))] pub use sync::sync; #[cfg(any(apple, linux_kernel))] pub use xattr::*; diff -Nru temporalio-1.3.0/vendor/rustix/src/fs/mount.rs temporalio-1.3.0/vendor/rustix/src/fs/mount.rs --- temporalio-1.3.0/vendor/rustix/src/fs/mount.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/fs/mount.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,166 +1,55 @@ //! Linux `mount`. +//! +//! These have been moved to a new `rustix::mount` module. -use crate::backend::fs::types::{ - InternalMountFlags, MountFlags, MountFlagsArg, MountPropagationFlags, UnmountFlags, -}; -use crate::{backend, io, path}; - -/// `mount(source, target, filesystemtype, mountflags, data)` -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man2/mount.2.html -#[inline] -pub fn mount( - source: Source, - target: Target, - file_system_type: Fs, - flags: MountFlags, - data: Data, -) -> io::Result<()> { - source.into_with_c_str(|source| { - target.into_with_c_str(|target| { - file_system_type.into_with_c_str(|file_system_type| { - data.into_with_c_str(|data| { - backend::fs::syscalls::mount( - Some(source), - target, - Some(file_system_type), - MountFlagsArg(flags.bits()), - Some(data), - ) - }) - }) - }) - }) -} - -/// `mount(NULL, target, NULL, MS_REMOUNT | mountflags, data)` -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man2/mount.2.html -#[inline] -#[doc(alias = "mount")] -pub fn remount( - target: Target, - flags: MountFlags, - data: Data, -) -> io::Result<()> { - target.into_with_c_str(|target| { - data.into_with_c_str(|data| { - backend::fs::syscalls::mount( - None, - target, - None, - MountFlagsArg(InternalMountFlags::REMOUNT.bits() | flags.bits()), - Some(data), - ) - }) - }) -} - -/// `mount(source, target, NULL, MS_BIND, NULL)` -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man2/mount.2.html -#[inline] -#[doc(alias = "mount")] -pub fn bind_mount( - source: Source, - target: Target, -) -> io::Result<()> { - source.into_with_c_str(|source| { - target.into_with_c_str(|target| { - backend::fs::syscalls::mount( - Some(source), - target, - None, - MountFlagsArg(MountFlags::BIND.bits()), - None, - ) - }) - }) -} - -/// `mount(source, target, NULL, MS_BIND | MS_REC, NULL)` -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man2/mount.2.html -#[inline] -#[doc(alias = "mount")] -pub fn recursive_bind_mount( - source: Source, - target: Target, -) -> io::Result<()> { - source.into_with_c_str(|source| { - target.into_with_c_str(|target| { - backend::fs::syscalls::mount( - Some(source), - target, - None, - MountFlagsArg(MountFlags::BIND.bits() | MountPropagationFlags::REC.bits()), - None, - ) - }) - }) -} - -/// `mount(NULL, target, NULL, mountflags, NULL)` -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man2/mount.2.html -#[inline] -#[doc(alias = "mount")] -pub fn change_mount( - target: Target, - flags: MountPropagationFlags, -) -> io::Result<()> { - target.into_with_c_str(|target| { - backend::fs::syscalls::mount(None, target, None, MountFlagsArg(flags.bits()), None) - }) -} - -/// `mount(source, target, NULL, MS_MOVE, NULL)` -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man2/mount.2.html -#[inline] -#[doc(alias = "mount")] -pub fn move_mount( - source: Source, - target: Target, -) -> io::Result<()> { - source.into_with_c_str(|source| { - target.into_with_c_str(|target| { - backend::fs::syscalls::mount( - Some(source), - target, - None, - MountFlagsArg(InternalMountFlags::MOVE.bits()), - None, - ) - }) - }) -} - -/// `umount2(target, flags)` -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man2/umount.2.html -#[doc(alias = "umount", alias = "umount2")] -pub fn unmount(target: Target, flags: UnmountFlags) -> io::Result<()> { - target.into_with_c_str(|target| backend::fs::syscalls::unmount(target, flags)) -} +#[deprecated(note = "rustix::fs::UnmountFlags` moved to `rustix::mount::UnmountFlags`.")] +#[doc(hidden)] +pub use crate::mount::UnmountFlags; + +#[deprecated(note = "rustix::fs::MountFlags` moved to `rustix::mount::MountFlags`.")] +#[doc(hidden)] +pub use crate::mount::MountFlags; + +#[deprecated( + note = "rustix::fs::MountPropagationFlags` moved to `rustix::mount::MountPropagationFlags`." +)] +#[doc(hidden)] +pub use crate::mount::MountPropagationFlags; + +#[deprecated(note = "`rustix::fs::mount` moved to `rustix::mount::mount`.")] +#[doc(hidden)] +pub use crate::mount::mount; + +#[deprecated(note = "`rustix::fs::unmount` moved to `rustix::mount::unmount`.")] +#[doc(hidden)] +pub use crate::mount::unmount; + +#[deprecated( + note = "`rustix::fs::remount` is renamed and moved to `rustix::mount::mount_remount`." +)] +#[doc(hidden)] +pub use crate::mount::mount_remount as remount; + +#[deprecated( + note = "`rustix::fs::bind_mount` is renamed and moved to `rustix::mount::mount_bind`." +)] +#[doc(hidden)] +pub use crate::mount::mount_bind as bind_mount; + +#[deprecated( + note = "`rustix::fs::recursive_bind_mount` is renamed and moved to `rustix::mount::mount_recursive_bind`." +)] +#[doc(hidden)] +pub use crate::mount::mount_recursive_bind as recursive_bind_mount; + +#[deprecated( + note = "`rustix::fs::change_mount` is renamed and moved to `rustix::mount::mount_change`." +)] +#[doc(hidden)] +pub use crate::mount::mount_change as change_mount; + +#[deprecated( + note = "`rustix::fs::move_mount` is renamed and moved to `rustix::mount::mount_move`." +)] +#[doc(hidden)] +pub use crate::mount::mount_move as move_mount; diff -Nru temporalio-1.3.0/vendor/rustix/src/fs/raw_dir.rs temporalio-1.3.0/vendor/rustix/src/fs/raw_dir.rs --- temporalio-1.3.0/vendor/rustix/src/fs/raw_dir.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/fs/raw_dir.rs 2023-10-30 19:40:00.000000000 +0000 @@ -40,13 +40,12 @@ /// /// Using the heap: /// - /// ```notrust - /// # // The `notrust` above can be removed when we can depend on Rust 1.60. + /// ``` /// # use std::mem::MaybeUninit; - /// # use rustix::fs::{cwd, Mode, OFlags, openat, RawDir}; + /// # use rustix::fs::{CWD, Mode, OFlags, openat, RawDir}; /// /// let fd = openat( - /// cwd(), + /// CWD, /// ".", /// OFlags::RDONLY | OFlags::DIRECTORY | OFlags::CLOEXEC, /// Mode::empty(), @@ -65,10 +64,10 @@ /// /// ``` /// # use std::mem::MaybeUninit; - /// # use rustix::fs::{cwd, Mode, OFlags, openat, RawDir}; + /// # use rustix::fs::{CWD, Mode, OFlags, openat, RawDir}; /// /// let fd = openat( - /// cwd(), + /// CWD, /// ".", /// OFlags::RDONLY | OFlags::DIRECTORY | OFlags::CLOEXEC, /// Mode::empty(), @@ -89,13 +88,13 @@ /// arbitrarily large file names: /// /// ```notrust - /// # // The `notrust` above can be removed when we can depend on Rust 1.60. + /// # // The `notrust` above can be removed when we can depend on Rust 1.65. /// # use std::mem::MaybeUninit; - /// # use rustix::fs::{cwd, Mode, OFlags, openat, RawDir}; + /// # use rustix::fs::{CWD, Mode, OFlags, openat, RawDir}; /// # use rustix::io::Errno; /// /// let fd = openat( - /// cwd(), + /// CWD, /// ".", /// OFlags::RDONLY | OFlags::DIRECTORY | OFlags::CLOEXEC, /// Mode::empty(), @@ -137,7 +136,7 @@ } } -/// A raw directory entry, similar to `std::fs::DirEntry`. +/// A raw directory entry, similar to [`std::fs::DirEntry`]. /// /// Unlike the std version, this may represent the `.` or `..` entries. pub struct RawDirEntry<'a> { diff -Nru temporalio-1.3.0/vendor/rustix/src/fs/seek_from.rs temporalio-1.3.0/vendor/rustix/src/fs/seek_from.rs --- temporalio-1.3.0/vendor/rustix/src/fs/seek_from.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/fs/seek_from.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,53 @@ +//! The following is derived from Rust's +//! library/std/src/io/mod.rs at revision +//! dca3f1b786efd27be3b325ed1e01e247aa589c3b. + +/// Enumeration of possible methods to seek within an I/O object. +/// +/// It is used by the [`seek`] function. +/// +/// This is similar to [`std::io::SeekFrom`], however it adds platform-specific +/// seek options. +/// +/// [`seek`]: crate::fs::seek +#[derive(Copy, PartialEq, Eq, Clone, Debug)] +#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] +pub enum SeekFrom { + /// Sets the offset to the provided number of bytes. + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + Start(#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] u64), + + /// Sets the offset to the size of this object plus the specified number of + /// bytes. + /// + /// It is possible to seek beyond the end of an object, but it's an error + /// to seek before byte 0. + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + End(#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] i64), + + /// Sets the offset to the current position plus the specified number of + /// bytes. + /// + /// It is possible to seek beyond the end of an object, but it's an error + /// to seek before byte 0. + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + Current(#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] i64), + + /// Sets the offset to the current position plus the specified number of + /// bytes, plus the distance to the next byte which is not in a hole. + /// + /// If the offset is in a hole at the end of the file, the seek will fail + /// with [`Errno::NXIO`]. + /// + /// [`Errno::NXIO`]: crate::io::Errno::NXIO + #[cfg(any(apple, freebsdlike, linux_kernel, solarish))] + Data(i64), + + /// Sets the offset to the current position plus the specified number of + /// bytes, plus the distance to the next byte which is in a hole. + /// + /// If there is no hole past the offset, it will be set to the end of the + /// file i.e. there is an implicit hole at the end of any file. + #[cfg(any(apple, freebsdlike, linux_kernel, solarish))] + Hole(i64), +} diff -Nru temporalio-1.3.0/vendor/rustix/src/fs/xattr.rs temporalio-1.3.0/vendor/rustix/src/fs/xattr.rs --- temporalio-1.3.0/vendor/rustix/src/fs/xattr.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/fs/xattr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,6 +6,8 @@ bitflags! { /// `XATTR_*` constants for use with [`setxattr`], and other `*setxattr` /// functions. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct XattrFlags: c::c_uint { /// `XATTR_CREATE` const CREATE = c::XATTR_CREATE as c::c_uint; diff -Nru temporalio-1.3.0/vendor/rustix/src/io/dup.rs temporalio-1.3.0/vendor/rustix/src/io/dup.rs --- temporalio-1.3.0/vendor/rustix/src/io/dup.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/io/dup.rs 2023-10-30 19:40:00.000000000 +0000 @@ -56,8 +56,8 @@ /// set `O_CLOEXEC`, use [`dup3`] with [`DupFlags::CLOEXEC`] on platforms which /// support it, or [`fcntl_dupfd_cloexec`] /// -/// For `dup2` to stdin, stdout, and stderr, see [`io::dup2_stdin`], -/// [`io::dup2_stdout`], and [`io::dup2_stderr`]. +/// For `dup2` to stdin, stdout, and stderr, see [`stdio::dup2_stdin`], +/// [`stdio::dup2_stdout`], and [`stdio::dup2_stderr`]. /// /// # References /// - [POSIX] @@ -81,6 +81,9 @@ /// [DragonFly BSD]: https://man.dragonflybsd.org/?command=dup2§ion=2 /// [illumos]: https://illumos.org/man/2/dup /// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Duplicating-Descriptors.html +/// [`stdio::dup2_stdin`]: https://docs.rs/rustix/*/rustix/stdio/fn.dup2_stdin.html +/// [`stdio::dup2_stdout`]: https://docs.rs/rustix/*/rustix/stdio/fn.dup2_stdout.html +/// [`stdio::dup2_stderr`]: https://docs.rs/rustix/*/rustix/stdio/fn.dup2_stderr.html #[cfg(not(target_os = "wasi"))] #[inline] pub fn dup2(fd: Fd, new: &mut OwnedFd) -> io::Result<()> { @@ -108,7 +111,12 @@ /// [NetBSD]: https://man.netbsd.org/dup3.2 /// [OpenBSD]: https://man.openbsd.org/dup3.2 /// [DragonFly BSD]: https://man.dragonflybsd.org/?command=dup3§ion=3 -#[cfg(not(any(target_os = "aix", target_os = "wasi")))] +#[cfg(not(any( + target_os = "aix", + target_os = "espidf", + target_os = "nto", + target_os = "wasi" +)))] #[inline] pub fn dup3(fd: Fd, new: &mut OwnedFd, flags: DupFlags) -> io::Result<()> { backend::io::syscalls::dup3(fd.as_fd(), new, flags) diff -Nru temporalio-1.3.0/vendor/rustix/src/io/errno.rs temporalio-1.3.0/vendor/rustix/src/io/errno.rs --- temporalio-1.3.0/vendor/rustix/src/io/errno.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/io/errno.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,8 @@ //! The `Errno` type, which is a minimal wrapper around an error code. //! -//! We define the error constants as individual `const`s instead of an -//! enum because we may not know about all of the host's error values -//! and we don't want unrecognized values to create UB. +//! We define the error constants as individual `const`s instead of an enum +//! because we may not know about all of the host's error values and we don't +//! want unrecognized values to create undefined behavior. use crate::backend; use core::{fmt, result}; @@ -14,8 +14,8 @@ /// `errno`—An error code. /// -/// The error type for `rustix` APIs. This is similar to `std::io::Error`, but -/// only holds an OS error code, and no extra error value. +/// The error type for `rustix` APIs. This is similar to [`std::io::Error`], +/// but only holds an OS error code, and no extra error value. /// /// # References /// - [POSIX] diff -Nru temporalio-1.3.0/vendor/rustix/src/io/eventfd.rs temporalio-1.3.0/vendor/rustix/src/io/eventfd.rs --- temporalio-1.3.0/vendor/rustix/src/io/eventfd.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/io/eventfd.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -use crate::fd::OwnedFd; -use crate::{backend, io}; - -pub use backend::io::types::EventfdFlags; - -/// `eventfd(initval, flags)`—Creates a file descriptor for event -/// notification. -/// -/// # References -/// - [Linux] -/// - [FreeBSD] -/// - [illumos] -/// -/// [Linux]: https://man7.org/linux/man-pages/man2/eventfd.2.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?eventfd -/// [illumos]: https://illumos.org/man/3C/eventfd -#[inline] -pub fn eventfd(initval: u32, flags: EventfdFlags) -> io::Result { - backend::io::syscalls::eventfd(initval, flags) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/io/fcntl.rs temporalio-1.3.0/vendor/rustix/src/io/fcntl.rs --- temporalio-1.3.0/vendor/rustix/src/io/fcntl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/io/fcntl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -98,7 +98,7 @@ /// [DragonFly BSD]: https://man.dragonflybsd.org/?command=fcntl§ion=2 /// [illumos]: https://illumos.org/man/2/fcntl /// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Control-Operations.html#index-fcntl-function -#[cfg(not(any(target_os = "wasi", target_os = "espidf")))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] #[inline] #[doc(alias = "F_DUPFD_CLOEXEC")] pub fn fcntl_dupfd_cloexec(fd: Fd, min: RawFd) -> io::Result { diff -Nru temporalio-1.3.0/vendor/rustix/src/io/fd/mod.rs temporalio-1.3.0/vendor/rustix/src/io/fd/mod.rs --- temporalio-1.3.0/vendor/rustix/src/io/fd/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/io/fd/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -//! The following is derived from Rust's -//! library/std/src/os/fd/mod.rs at revision -//! fa68e73e9947be8ffc5b3b46d899e4953a44e7e9. -//! -//! Owned and borrowed Unix-like file descriptors. - -#![cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] -#![deny(unsafe_op_in_unsafe_fn)] - -// `RawFd`, `AsRawFd`, etc. -mod raw; - -// `OwnedFd`, `AsFd`, etc. -mod owned; - -pub use owned::*; -pub use raw::*; diff -Nru temporalio-1.3.0/vendor/rustix/src/io/fd/owned.rs temporalio-1.3.0/vendor/rustix/src/io/fd/owned.rs --- temporalio-1.3.0/vendor/rustix/src/io/fd/owned.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/io/fd/owned.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,252 +0,0 @@ -//! The following is derived from Rust's -//! library/std/src/os/fd/owned.rs at revision -//! fa68e73e9947be8ffc5b3b46d899e4953a44e7e9. -//! -//! Owned and borrowed Unix-like file descriptors. - -#![cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] -#![deny(unsafe_op_in_unsafe_fn)] -#![allow(unsafe_code)] - -use super::raw::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; -use crate::io::close; -use core::fmt; -use core::marker::PhantomData; -use core::mem::forget; - -/// A borrowed file descriptor. -/// -/// This has a lifetime parameter to tie it to the lifetime of something that -/// owns the file descriptor. -/// -/// This uses `repr(transparent)` and has the representation of a host file -/// descriptor, so it can be used in FFI in places where a file descriptor is -/// passed as an argument, it is not captured or consumed, and it never has the -/// value `-1`. -/// -/// This type's `.to_owned()` implementation returns another `BorrowedFd` -/// rather than an `OwnedFd`. It just makes a trivial copy of the raw file -/// descriptor, which is then borrowed under the same lifetime. -#[derive(Copy, Clone)] -#[repr(transparent)] -#[cfg_attr(rustc_attrs, rustc_layout_scalar_valid_range_start(0))] -// libstd/os/raw/mod.rs assures me that every libstd-supported platform has a -// 32-bit c_int. Below is -2, in two's complement, but that only works out -// because c_int is 32 bits. -#[cfg_attr(rustc_attrs, rustc_layout_scalar_valid_range_end(0xFF_FF_FF_FE))] -#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] -#[cfg_attr(rustc_attrs, rustc_nonnull_optimization_guaranteed)] -pub struct BorrowedFd<'fd> { - fd: RawFd, - _phantom: PhantomData<&'fd OwnedFd>, -} - -/// An owned file descriptor. -/// -/// This closes the file descriptor on drop. -/// -/// This uses `repr(transparent)` and has the representation of a host file -/// descriptor, so it can be used in FFI in places where a file descriptor is -/// passed as a consumed argument or returned as an owned value, and it never -/// has the value `-1`. -#[repr(transparent)] -#[cfg_attr(rustc_attrs, rustc_layout_scalar_valid_range_start(0))] -// libstd/os/raw/mod.rs assures me that every libstd-supported platform has a -// 32-bit c_int. Below is -2, in two's complement, but that only works out -// because c_int is 32 bits. -#[cfg_attr(rustc_attrs, rustc_layout_scalar_valid_range_end(0xFF_FF_FF_FE))] -#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] -#[cfg_attr(rustc_attrs, rustc_nonnull_optimization_guaranteed)] -pub struct OwnedFd { - fd: RawFd, -} - -impl BorrowedFd<'_> { - /// Return a `BorrowedFd` holding the given raw file descriptor. - /// - /// # Safety - /// - /// The resource pointed to by `fd` must remain open for the duration of - /// the returned `BorrowedFd`, and it must not have the value `-1`. - #[inline] - #[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] - pub const unsafe fn borrow_raw(fd: RawFd) -> Self { - assert!(fd != u32::MAX as RawFd); - // SAFETY: we just asserted that the value is in the valid range and isn't `-1` (the only value bigger than `0xFF_FF_FF_FE` unsigned) - #[allow(unused_unsafe)] - unsafe { - Self { - fd, - _phantom: PhantomData, - } - } - } -} - -impl OwnedFd { - /// Creates a new `OwnedFd` instance that shares the same underlying file handle - /// as the existing `OwnedFd` instance. - #[cfg(not(target_arch = "wasm32"))] - pub fn try_clone(&self) -> crate::io::Result { - // We want to atomically duplicate this file descriptor and set the - // CLOEXEC flag, and currently that's done via F_DUPFD_CLOEXEC. This - // is a POSIX flag that was added to Linux in 2.6.24. - #[cfg(not(target_os = "espidf"))] - let fd = crate::io::fcntl_dupfd_cloexec(self, 0)?; - - // For ESP-IDF, F_DUPFD is used instead, because the CLOEXEC semantics - // will never be supported, as this is a bare metal framework with - // no capabilities for multi-process execution. While F_DUPFD is also - // not supported yet, it might be (currently it returns ENOSYS). - #[cfg(target_os = "espidf")] - let fd = crate::io::fcntl_dupfd(self)?; - - Ok(fd.into()) - } - - #[cfg(target_arch = "wasm32")] - pub fn try_clone(&self) -> crate::io::Result { - Err(crate::io::const_io_error!( - crate::io::ErrorKind::Unsupported, - "operation not supported on WASI yet", - )) - } -} - -#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] -impl AsRawFd for BorrowedFd<'_> { - #[inline] - fn as_raw_fd(&self) -> RawFd { - self.fd - } -} - -#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] -impl AsRawFd for OwnedFd { - #[inline] - fn as_raw_fd(&self) -> RawFd { - self.fd - } -} - -#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] -impl IntoRawFd for OwnedFd { - #[inline] - fn into_raw_fd(self) -> RawFd { - let fd = self.fd; - forget(self); - fd - } -} - -#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] -impl FromRawFd for OwnedFd { - /// Constructs a new instance of `Self` from the given raw file descriptor. - /// - /// # Safety - /// - /// The resource pointed to by `fd` must be open and suitable for assuming - /// ownership. The resource must not require any cleanup other than `close`. - #[inline] - unsafe fn from_raw_fd(fd: RawFd) -> Self { - assert_ne!(fd, u32::MAX as RawFd); - // SAFETY: we just asserted that the value is in the valid range and isn't `-1` (the only value bigger than `0xFF_FF_FF_FE` unsigned) - #[allow(unused_unsafe)] - unsafe { - Self { fd } - } - } -} - -#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] -impl Drop for OwnedFd { - #[inline] - fn drop(&mut self) { - unsafe { - // Errors are ignored when closing a file descriptor. The reason - // for this is that if an error occurs we don't actually know if - // the file descriptor was closed or not, and if we retried (for - // something like EINTR), we might close another valid file - // descriptor opened after we closed ours. - close(self.fd as _); - } - } -} - -#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] -impl fmt::Debug for BorrowedFd<'_> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("BorrowedFd").field("fd", &self.fd).finish() - } -} - -#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] -impl fmt::Debug for OwnedFd { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("OwnedFd").field("fd", &self.fd).finish() - } -} - -/// A trait to borrow the file descriptor from an underlying object. -/// -/// This is only available on unix platforms and must be imported in order to -/// call the method. Windows platforms have a corresponding `AsHandle` and -/// `AsSocket` set of traits. -#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] -pub trait AsFd { - /// Borrows the file descriptor. - /// - /// # Example - /// - /// ```no_run - /// # #![feature(io_safety)] - /// use std::fs::File; - /// # use std::io; - /// # #[cfg(target_os = "wasi")] - /// # use std::os::wasi::io::{AsFd, BorrowedFd}; - /// # #[cfg(unix)] - /// # use std::os::unix::io::{AsFd, BorrowedFd}; - /// - /// let mut f = File::open("foo.txt")?; - /// # #[cfg(any(unix, target_os = "wasi"))] - /// let borrowed_fd: BorrowedFd<'_> = f.as_fd(); - /// # Ok::<(), io::Error>(()) - /// ``` - #[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] - fn as_fd(&self) -> BorrowedFd<'_>; -} - -#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] -impl AsFd for &T { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - T::as_fd(self) - } -} - -#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] -impl AsFd for &mut T { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - T::as_fd(self) - } -} - -#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] -impl AsFd for BorrowedFd<'_> { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - *self - } -} - -#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] -impl AsFd for OwnedFd { - #[inline] - fn as_fd(&self) -> BorrowedFd<'_> { - // SAFETY: `OwnedFd` and `BorrowedFd` have the same validity - // invariants, and the `BorrowedFd` is bounded by the lifetime - // of `&self`. - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } -} diff -Nru temporalio-1.3.0/vendor/rustix/src/io/fd/raw.rs temporalio-1.3.0/vendor/rustix/src/io/fd/raw.rs --- temporalio-1.3.0/vendor/rustix/src/io/fd/raw.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/io/fd/raw.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,159 +0,0 @@ -//! The following is derived from Rust's -//! library/std/src/os/fd/raw.rs at revision -//! fa68e73e9947be8ffc5b3b46d899e4953a44e7e9. -//! -//! Raw Unix-like file descriptors. - -#![cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] -#![allow(unsafe_code)] - -use crate::backend::c; - -/// Raw file descriptors. -#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] -pub type RawFd = c::c_int; - -/// A trait to extract the raw file descriptor from an underlying object. -/// -/// This is only available on unix and WASI platforms and must be imported in -/// order to call the method. Windows platforms have a corresponding -/// `AsRawHandle` and `AsRawSocket` set of traits. -#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] -pub trait AsRawFd { - /// Extracts the raw file descriptor. - /// - /// This function is typically used to **borrow** an owned file descriptor. - /// When used in this way, this method does **not** pass ownership of the - /// raw file descriptor to the caller, and the file descriptor is only - /// guaranteed to be valid while the original object has not yet been - /// destroyed. - /// - /// However, borrowing is not strictly required. See [`AsFd::as_fd`] - /// for an API which strictly borrows a file descriptor. - /// - /// # Example - /// - /// ```no_run - /// use std::fs::File; - /// # use std::io; - /// #[cfg(unix)] - /// use std::os::unix::io::{AsRawFd, RawFd}; - /// #[cfg(target_os = "wasi")] - /// use std::os::wasi::io::{AsRawFd, RawFd}; - /// - /// let mut f = File::open("foo.txt")?; - /// // `raw_fd` is only valid as long as `f` exists. - /// #[cfg(any(unix, target_os = "wasi"))] - /// let raw_fd: RawFd = f.as_raw_fd(); - /// # Ok::<(), io::Error>(()) - /// ``` - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - fn as_raw_fd(&self) -> RawFd; -} - -/// A trait to express the ability to construct an object from a raw file -/// descriptor. -#[cfg_attr(staged_api, stable(feature = "from_raw_os", since = "1.1.0"))] -pub trait FromRawFd { - /// Constructs a new instance of `Self` from the given raw file - /// descriptor. - /// - /// This function is typically used to **consume ownership** of the - /// specified file descriptor. When used in this way, the returned object - /// will take responsibility for closing it when the object goes out of - /// scope. - /// - /// However, consuming ownership is not strictly required. Use a - /// [`From::from`] implementation for an API which strictly - /// consumes ownership. - /// - /// # Safety - /// - /// The `fd` passed in must be a valid an open file descriptor. - /// - /// # Example - /// - /// ```no_run - /// use std::fs::File; - /// # use std::io; - /// #[cfg(unix)] - /// use std::os::unix::io::{FromRawFd, IntoRawFd, RawFd}; - /// #[cfg(target_os = "wasi")] - /// use std::os::wasi::io::{FromRawFd, IntoRawFd, RawFd}; - /// - /// let f = File::open("foo.txt")?; - /// # #[cfg(any(unix, target_os = "wasi"))] - /// let raw_fd: RawFd = f.into_raw_fd(); - /// // SAFETY: no other functions should call `from_raw_fd`, so there - /// // is only one owner for the file descriptor. - /// # #[cfg(any(unix, target_os = "wasi"))] - /// let f = unsafe { File::from_raw_fd(raw_fd) }; - /// # Ok::<(), io::Error>(()) - /// ``` - #[cfg_attr(staged_api, stable(feature = "from_raw_os", since = "1.1.0"))] - unsafe fn from_raw_fd(fd: RawFd) -> Self; -} - -/// A trait to express the ability to consume an object and acquire ownership of -/// its raw file descriptor. -#[cfg_attr(staged_api, stable(feature = "into_raw_os", since = "1.4.0"))] -pub trait IntoRawFd { - /// Consumes this object, returning the raw underlying file descriptor. - /// - /// This function is typically used to **transfer ownership** of the underlying - /// file descriptor to the caller. When used in this way, callers are then the unique - /// owners of the file descriptor and must close it once it's no longer needed. - /// - /// However, transferring ownership is not strictly required. Use a - /// [`Into::into`] implementation for an API which strictly - /// transfers ownership. - /// - /// # Example - /// - /// ```no_run - /// use std::fs::File; - /// # use std::io; - /// #[cfg(unix)] - /// use std::os::unix::io::{IntoRawFd, RawFd}; - /// #[cfg(target_os = "wasi")] - /// use std::os::wasi::io::{IntoRawFd, RawFd}; - /// - /// let f = File::open("foo.txt")?; - /// #[cfg(any(unix, target_os = "wasi"))] - /// let raw_fd: RawFd = f.into_raw_fd(); - /// # Ok::<(), io::Error>(()) - /// ``` - #[cfg_attr(staged_api, stable(feature = "into_raw_os", since = "1.4.0"))] - fn into_raw_fd(self) -> RawFd; -} - -#[cfg_attr( - staged_api, - stable(feature = "raw_fd_reflexive_traits", since = "1.48.0") -)] -impl AsRawFd for RawFd { - #[inline] - fn as_raw_fd(&self) -> RawFd { - *self - } -} -#[cfg_attr( - staged_api, - stable(feature = "raw_fd_reflexive_traits", since = "1.48.0") -)] -impl IntoRawFd for RawFd { - #[inline] - fn into_raw_fd(self) -> RawFd { - self - } -} -#[cfg_attr( - staged_api, - stable(feature = "raw_fd_reflexive_traits", since = "1.48.0") -)] -impl FromRawFd for RawFd { - #[inline] - unsafe fn from_raw_fd(fd: RawFd) -> RawFd { - fd - } -} diff -Nru temporalio-1.3.0/vendor/rustix/src/io/ioctl.rs temporalio-1.3.0/vendor/rustix/src/io/ioctl.rs --- temporalio-1.3.0/vendor/rustix/src/io/ioctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/io/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,49 +1,14 @@ -//! The Unix `ioctl` function is effectively lots of different functions -//! hidden behind a single dynamic dispatch interface. In order to provide -//! a type-safe API, rustix makes them all separate functions so that they -//! can have dedicated static type signatures. +//! The Unix `ioctl` function is effectively lots of different functions hidden +//! behind a single dynamic dispatch interface. In order to provide a type-safe +//! API, rustix makes them all separate functions so that they can have +//! dedicated static type signatures. +//! +//! Some ioctls, such as those related to filesystems, terminals, and +//! processes, live in other top-level API modules. use crate::{backend, io}; use backend::fd::AsFd; -/// `ioctl(fd, TIOCEXCL)`—Enables exclusive mode on a terminal. -/// -/// # References -/// - [Linux] -/// - [FreeBSD] -/// - [NetBSD] -/// - [OpenBSD] -/// -/// [Linux]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=tty&sektion=4 -/// [NetBSD]: https://man.netbsd.org/tty.4 -/// [OpenBSD]: https://man.openbsd.org/tty.4 -#[cfg(not(any(windows, target_os = "haiku", target_os = "redox", target_os = "wasi")))] -#[inline] -#[doc(alias = "TIOCEXCL")] -pub fn ioctl_tiocexcl(fd: Fd) -> io::Result<()> { - backend::io::syscalls::ioctl_tiocexcl(fd.as_fd()) -} - -/// `ioctl(fd, TIOCNXCL)`—Disables exclusive mode on a terminal. -/// -/// # References -/// - [Linux] -/// - [FreeBSD] -/// - [NetBSD] -/// - [OpenBSD] -/// -/// [Linux]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=tty&sektion=4 -/// [NetBSD]: https://man.netbsd.org/tty.4 -/// [OpenBSD]: https://man.openbsd.org/tty.4 -#[cfg(not(any(windows, target_os = "haiku", target_os = "redox", target_os = "wasi")))] -#[inline] -#[doc(alias = "TIOCNXCL")] -pub fn ioctl_tiocnxcl(fd: Fd) -> io::Result<()> { - backend::io::syscalls::ioctl_tiocnxcl(fd.as_fd()) -} - /// `ioctl(fd, FIOCLEX, NULL)`—Set the close-on-exec flag. /// /// Also known as `fcntl(fd, F_SETFD, FD_CLOEXEC)`. @@ -97,52 +62,9 @@ /// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=ioctl&sektion=2#GENERIC%09IOCTLS /// [NetBSD]: https://man.netbsd.org/ioctl.2#GENERIC%20IOCTLS /// [OpenBSD]: https://man.openbsd.org/ioctl.2#GENERIC_IOCTLS -#[cfg(not(target_os = "redox"))] +#[cfg(not(target_os = "espidf"))] #[inline] #[doc(alias = "FIONREAD")] pub fn ioctl_fionread(fd: Fd) -> io::Result { backend::io::syscalls::ioctl_fionread(fd.as_fd()) } - -/// `ioctl(fd, BLKSSZGET)`—Returns the logical block size of a block device. -/// -/// This is mentioned in the [Linux `openat` manual page]. -/// -/// [Linux `openat` manual page]: https://man7.org/linux/man-pages/man2/openat.2.html -#[cfg(linux_kernel)] -#[inline] -#[doc(alias = "BLKSSZGET")] -pub fn ioctl_blksszget(fd: Fd) -> io::Result { - backend::io::syscalls::ioctl_blksszget(fd.as_fd()) -} - -/// `ioctl(fd, BLKPBSZGET)`—Returns the physical block size of a block device. -#[cfg(linux_kernel)] -#[inline] -#[doc(alias = "BLKPBSZGET")] -pub fn ioctl_blkpbszget(fd: Fd) -> io::Result { - backend::io::syscalls::ioctl_blkpbszget(fd.as_fd()) -} - -/// `ioctl(fd, FICLONE, src_fd)`—Share data between open files. -/// -/// This ioctl is not available on Sparc platforms -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man2/ioctl_ficlone.2.html -#[cfg(all(linux_kernel, not(any(target_arch = "sparc", target_arch = "sparc64"))))] -#[inline] -#[doc(alias = "FICLONE")] -pub fn ioctl_ficlone(fd: Fd, src_fd: SrcFd) -> io::Result<()> { - backend::io::syscalls::ioctl_ficlone(fd.as_fd(), src_fd.as_fd()) -} - -/// `ioctl(fd, EXT4_IOC_RESIZE_FS, blocks)`—Resize ext4 filesystem on fd. -#[cfg(linux_kernel)] -#[inline] -#[doc(alias = "EXT4_IOC_RESIZE_FS")] -pub fn ext4_ioc_resize_fs(fd: Fd, blocks: u64) -> io::Result<()> { - backend::io::syscalls::ext4_ioc_resize_fs(fd.as_fd(), blocks) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/io/kqueue.rs temporalio-1.3.0/vendor/rustix/src/io/kqueue.rs --- temporalio-1.3.0/vendor/rustix/src/io/kqueue.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/io/kqueue.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,430 +0,0 @@ -//! An API for interfacing with `kqueue`. - -use crate::fd::{AsFd, AsRawFd, OwnedFd, RawFd}; -#[cfg(feature = "process")] -use crate::process::{Pid, Signal}; -use crate::{backend, io}; - -use backend::c::{self, intptr_t, kevent as kevent_t, uintptr_t}; -use backend::io::syscalls; - -use alloc::vec::Vec; -use core::mem::zeroed; -use core::ptr::slice_from_raw_parts_mut; -use core::time::Duration; - -/// A `kqueue` event. -#[repr(transparent)] -#[derive(Copy, Clone)] -pub struct Event { - // The layout varies between BSDs and macOS. - inner: kevent_t, -} - -impl Event { - /// Create a new `Event`. - #[allow(clippy::needless_update)] - pub fn new(filter: EventFilter, flags: EventFlags, udata: isize) -> Event { - let (ident, data, filter, fflags) = match filter { - EventFilter::Read(fd) => (fd.as_raw_fd() as uintptr_t, 0, c::EVFILT_READ, 0), - EventFilter::Write(fd) => (fd.as_raw_fd() as _, 0, c::EVFILT_WRITE, 0), - #[cfg(target_os = "freebsd")] - EventFilter::Empty(fd) => (fd.as_raw_fd() as _, 0, c::EVFILT_EMPTY, 0), - EventFilter::Vnode { vnode, flags } => { - (vnode.as_raw_fd() as _, 0, c::EVFILT_VNODE, flags.bits()) - } - #[cfg(feature = "process")] - EventFilter::Proc { pid, flags } => { - (Pid::as_raw(Some(pid)) as _, 0, c::EVFILT_PROC, flags.bits()) - } - #[cfg(feature = "process")] - EventFilter::Signal { signal, times: _ } => (signal as _, 0, c::EVFILT_SIGNAL, 0), - EventFilter::Timer { ident, timer } => { - #[cfg(any(apple, target_os = "freebsd", target_os = "netbsd"))] - let (data, fflags) = match timer { - Some(timer) => { - if timer.subsec_millis() == 0 { - (timer.as_secs() as _, c::NOTE_SECONDS) - } else if timer.subsec_nanos() == 0 { - (timer.as_micros() as _, c::NOTE_USECONDS) - } else { - (timer.as_nanos() as _, c::NOTE_NSECONDS) - } - } - None => (intptr_t::MAX, c::NOTE_SECONDS), - }; - #[cfg(any(target_os = "dragonfly", target_os = "openbsd"))] - let (data, fflags) = match timer { - Some(timer) => (timer.as_millis() as _, 0), - None => (intptr_t::MAX, 0), - }; - - (ident as _, data, c::EVFILT_TIMER, fflags) - } - #[cfg(any(apple, freebsdlike))] - EventFilter::User { - ident, - flags, - user_flags, - } => (ident as _, 0, c::EVFILT_USER, flags.bits() | user_flags.0), - EventFilter::Unknown => panic!("unknown filter"), - }; - - Event { - inner: kevent_t { - ident, - filter: filter as _, - flags: flags.bits() as _, - fflags, - data: { - // On openbsd, data is an i64 and not an isize - data as _ - }, - udata: { - // On netbsd, udata is an isize and not a pointer. - // TODO: Strict provenance, prevent int-to-ptr cast. - udata as _ - }, - ..unsafe { zeroed() } - }, - } - } - - /// Get the event flags for this event. - pub fn flags(&self) -> EventFlags { - EventFlags::from_bits_truncate(self.inner.flags as _) - } - - /// Get the user data for this event. - pub fn udata(&self) -> isize { - // On netbsd, udata is an isize and not a pointer. - // TODO: Strict provenance, prevent ptr-to-int cast. - - self.inner.udata as _ - } - - /// Get the filter of this event. - pub fn filter(&self) -> EventFilter { - match self.inner.filter as _ { - c::EVFILT_READ => EventFilter::Read(self.inner.ident as _), - c::EVFILT_WRITE => EventFilter::Write(self.inner.ident as _), - #[cfg(target_os = "freebsd")] - c::EVFILT_EMPTY => EventFilter::Empty(self.inner.ident as _), - c::EVFILT_VNODE => EventFilter::Vnode { - vnode: self.inner.ident as _, - flags: VnodeEvents::from_bits_truncate(self.inner.fflags), - }, - #[cfg(feature = "process")] - c::EVFILT_PROC => EventFilter::Proc { - pid: unsafe { Pid::from_raw(self.inner.ident as _) }.unwrap(), - flags: ProcessEvents::from_bits_truncate(self.inner.fflags), - }, - #[cfg(feature = "process")] - c::EVFILT_SIGNAL => EventFilter::Signal { - signal: Signal::from_raw(self.inner.ident as _).unwrap(), - times: self.inner.data as _, - }, - c::EVFILT_TIMER => EventFilter::Timer { - ident: self.inner.ident as _, - timer: { - let (data, fflags) = (self.inner.data, self.inner.fflags); - #[cfg(any(apple, target_os = "freebsd", target_os = "netbsd"))] - match fflags as _ { - c::NOTE_SECONDS => Some(Duration::from_secs(data as _)), - c::NOTE_USECONDS => Some(Duration::from_micros(data as _)), - c::NOTE_NSECONDS => Some(Duration::from_nanos(data as _)), - _ => { - // Unknown timer flags. - None - } - } - #[cfg(any(target_os = "dragonfly", target_os = "openbsd"))] - Some(Duration::from_millis(data as _)) - }, - }, - #[cfg(any(apple, freebsdlike))] - c::EVFILT_USER => EventFilter::User { - ident: self.inner.ident as _, - flags: UserFlags::from_bits_truncate(self.inner.fflags), - user_flags: UserDefinedFlags(self.inner.fflags & EVFILT_USER_FLAGS), - }, - _ => EventFilter::Unknown, - } - } -} - -/// Bottom 24 bits of a u32. -#[cfg(any(apple, freebsdlike))] -const EVFILT_USER_FLAGS: u32 = 0x00ff_ffff; - -/// The possible filters for a `kqueue`. -#[repr(i16)] -#[non_exhaustive] -pub enum EventFilter { - /// A read filter. - Read(RawFd), - - /// A write filter. - Write(RawFd), - - /// An empty filter. - #[cfg(target_os = "freebsd")] - Empty(RawFd), - - /// A VNode filter. - Vnode { - /// The file descriptor we looked for events in. - vnode: RawFd, - - /// The flags for this event. - flags: VnodeEvents, - }, - - /// A process filter. - #[cfg(feature = "process")] - Proc { - /// The process ID we waited on. - pid: Pid, - - /// The flags for this event. - flags: ProcessEvents, - }, - - /// A signal filter. - #[cfg(feature = "process")] - Signal { - /// The signal number we waited on. - signal: Signal, - - /// The number of times the signal has been - /// received since the last call to kevent. - times: usize, - }, - - /// A timer filter. - Timer { - /// The identifier for this event. - ident: intptr_t, - - /// The duration for this event. - timer: Option, - }, - - /// A user filter. - #[cfg(any(apple, freebsdlike))] - User { - /// The identifier for this event. - ident: intptr_t, - - /// The flags for this event. - flags: UserFlags, - - /// The user-defined flags for this event. - user_flags: UserDefinedFlags, - }, - - /// This filter is unknown. - /// - /// # Panics - /// - /// Passing this into `Event::new()` will result in a panic. - Unknown, -} - -bitflags::bitflags! { - /// The flags for a `kqueue` event. - pub struct EventFlags: u16 { - /// Add the event to the `kqueue`. - const ADD = c::EV_ADD as _; - - /// Enable the event. - const ENABLE = c::EV_ENABLE as _; - - /// Disable the event. - const DISABLE = c::EV_DISABLE as _; - - /// Delete the event from the `kqueue`. - const DELETE = c::EV_DELETE as _; - - /// TODO - const RECEIPT = c::EV_RECEIPT as _; - - /// Clear the event after it is triggered. - const ONESHOT = c::EV_ONESHOT as _; - - /// TODO - const CLEAR = c::EV_CLEAR as _; - - /// TODO - const EOF = c::EV_EOF as _; - - /// TODO - const ERROR = c::EV_ERROR as _; - } -} - -bitflags::bitflags! { - /// The flags for a virtual node event. - pub struct VnodeEvents: u32 { - /// The file was deleted. - const DELETE = c::NOTE_DELETE; - - /// The file was written to. - const WRITE = c::NOTE_WRITE; - - /// The file was extended. - const EXTEND = c::NOTE_EXTEND; - - /// The file had its attributes changed. - const ATTRIBUTES = c::NOTE_ATTRIB; - - /// The file was renamed. - const RENAME = c::NOTE_RENAME; - - /// Access to the file was revoked. - const REVOKE = c::NOTE_REVOKE; - - /// The link count of the file has changed. - const LINK = c::NOTE_LINK; - } -} - -#[cfg(feature = "process")] -bitflags::bitflags! { - /// The flags for a process event. - pub struct ProcessEvents: u32 { - /// The process exited. - const EXIT = c::NOTE_EXIT; - - /// The process forked itself. - const FORK = c::NOTE_FORK; - - /// The process executed a new process. - const EXEC = c::NOTE_EXEC; - - /// Follow the process through `fork()` calls (write only). - const TRACK = c::NOTE_TRACK; - - /// An error has occurred with following the process. - const TRACKERR = c::NOTE_TRACKERR; - } -} - -#[cfg(any(apple, freebsdlike))] -bitflags::bitflags! { - /// The flags for a user event. - pub struct UserFlags: u32 { - /// Ignore the user input flags. - const NOINPUT = c::NOTE_FFNOP; - - /// Bitwise AND `fflags`. - const AND = c::NOTE_FFAND; - - /// Bitwise OR `fflags`. - const OR = c::NOTE_FFOR; - - /// Copy `fflags`. - const COPY = c::NOTE_FFCOPY; - - /// Control mask for operations. - const CTRLMASK = c::NOTE_FFCTRLMASK; - - /// User defined flags for masks. - const UDFMASK = c::NOTE_FFLAGSMASK; - - /// Trigger the event. - const TRIGGER = c::NOTE_TRIGGER; - } -} - -/// User-defined flags. -/// -/// Only the lower 24 bits are used in this struct. -#[repr(transparent)] -#[cfg(any(apple, freebsdlike))] -#[derive(Clone, Copy, Debug, Eq, PartialEq)] -pub struct UserDefinedFlags(u32); - -#[cfg(any(apple, freebsdlike))] -impl UserDefinedFlags { - /// Create a new `UserDefinedFlags` from a `u32`. - pub fn new(flags: u32) -> Self { - Self(flags & EVFILT_USER_FLAGS) - } - - /// Get the underlying `u32`. - pub fn get(self) -> u32 { - self.0 - } -} - -/// `kqueue()`—Create a new `kqueue` file descriptor. -/// -/// # References -/// - [Apple] -/// - [FreeBSD] -/// - [OpenBSD] -/// - [NetBSD] -/// - [DragonFly BSD] -/// -/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/kqueue.2.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=kqueue&sektion=2 -/// [OpenBSD]: https://man.openbsd.org/kqueue.2 -/// [NetBSD]: https://man.netbsd.org/kqueue.2 -/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=kqueue§ion=2 -pub fn kqueue() -> io::Result { - syscalls::kqueue() -} - -/// `kevent(kqueue, changelist, eventlist, timeout)`—Wait for events on a -/// `kqueue`. -/// -/// Note: in order to receive events, make sure to allocate capacity in the -/// eventlist! Otherwise, the function will return immediately. -/// -/// # Safety -/// -/// The file descriptors referred to by the `Event` structs must be valid for -/// the lifetime of the `kqueue` file descriptor. -/// -/// # References -/// - [Apple] -/// - [FreeBSD] -/// - [OpenBSD] -/// - [NetBSD] -/// - [DragonFly BSD] -/// -/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/kevent.2.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=kevent&sektion=2 -/// [OpenBSD]: https://man.openbsd.org/kevent.2 -/// [NetBSD]: https://man.netbsd.org/kevent.2 -/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=kevent§ion=2 -pub unsafe fn kevent( - kqueue: impl AsFd, - changelist: &[Event], - eventlist: &mut Vec, - timeout: Option, -) -> io::Result { - let timeout = timeout.map(|timeout| backend::c::timespec { - tv_sec: timeout.as_secs() as _, - tv_nsec: timeout.subsec_nanos() as _, - }); - - // Populate the event list with events. - eventlist.set_len(0); - let out_slice = slice_from_raw_parts_mut(eventlist.as_mut_ptr().cast(), eventlist.capacity()); - let res = syscalls::kevent( - kqueue.as_fd(), - changelist, - &mut *out_slice, - timeout.as_ref(), - ) - .map(|res| res as _); - - // Update the event list. - if let Ok(len) = res { - eventlist.set_len(len); - } - - res -} diff -Nru temporalio-1.3.0/vendor/rustix/src/io/mod.rs temporalio-1.3.0/vendor/rustix/src/io/mod.rs --- temporalio-1.3.0/vendor/rustix/src/io/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/io/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,55 +1,32 @@ //! I/O operations. +//! +//! If you're looking for [`SeekFrom`], that's in the [`fs`] module. +//! +//! [`SeekFrom`]: https://docs.rs/rustix/*/rustix/fs/enum.SeekFrom.html +//! [`fs`]: https://docs.rs/rustix/*/rustix/fs/index.html mod close; #[cfg(not(windows))] mod dup; mod errno; -#[cfg(any(linux_kernel, target_os = "freebsd", target_os = "illumos"))] -mod eventfd; #[cfg(not(windows))] mod fcntl; -#[cfg(not(feature = "std"))] -pub(crate) mod fd; mod ioctl; #[cfg(not(any(windows, target_os = "redox")))] #[cfg(all(feature = "fs", feature = "net"))] mod is_read_write; -#[cfg(bsd)] -pub mod kqueue; -#[cfg(not(any(windows, target_os = "wasi")))] -mod pipe; -mod poll; -#[cfg(solarish)] -pub mod port; -#[cfg(all(feature = "procfs", linux_kernel))] -mod procfs; #[cfg(not(windows))] mod read_write; -mod seek_from; -#[cfg(not(windows))] -mod stdio; -#[cfg(linux_kernel)] -pub use crate::backend::io::epoll; pub use close::close; #[cfg(not(windows))] pub use dup::*; pub use errno::{retry_on_intr, Errno, Result}; -#[cfg(any(linux_kernel, target_os = "freebsd", target_os = "illumos"))] -pub use eventfd::{eventfd, EventfdFlags}; #[cfg(not(windows))] pub use fcntl::*; pub use ioctl::*; #[cfg(not(any(windows, target_os = "redox")))] #[cfg(all(feature = "fs", feature = "net"))] pub use is_read_write::*; -#[cfg(not(any(windows, target_os = "wasi")))] -pub use pipe::*; -pub use poll::{poll, PollFd, PollFlags}; -#[cfg(all(feature = "procfs", linux_kernel))] -pub use procfs::*; #[cfg(not(windows))] pub use read_write::*; -pub use seek_from::SeekFrom; -#[cfg(not(windows))] -pub use stdio::*; diff -Nru temporalio-1.3.0/vendor/rustix/src/io/pipe.rs temporalio-1.3.0/vendor/rustix/src/io/pipe.rs --- temporalio-1.3.0/vendor/rustix/src/io/pipe.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/io/pipe.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,156 +0,0 @@ -//! `pipe` and related APIs. -//! -//! # Safety -//! -//! `vmsplice` is an unsafe function. - -#![allow(unsafe_code)] - -use crate::fd::OwnedFd; -use crate::{backend, io}; -#[cfg(linux_kernel)] -use backend::fd::AsFd; - -#[cfg(not(apple))] -pub use backend::io::types::PipeFlags; - -#[cfg(linux_kernel)] -pub use backend::io::types::{IoSliceRaw, SpliceFlags}; - -/// `PIPE_BUF`—The maximum length at which writes to a pipe are atomic. -/// -/// # References -/// - [Linux] -/// - [POSIX] -/// -/// [Linux]: https://man7.org/linux/man-pages/man7/pipe.7.html -/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html -#[cfg(not(any( - solarish, - windows, - target_os = "haiku", - target_os = "redox", - target_os = "wasi", -)))] -pub const PIPE_BUF: usize = backend::io::types::PIPE_BUF; - -/// `pipe()`—Creates a pipe. -/// -/// This function creates a pipe and returns two file descriptors, for the -/// reading and writing ends of the pipe, respectively. -/// -/// # References -/// - [POSIX] -/// - [Linux] -/// - [Apple] -/// - [FreeBSD] -/// - [NetBSD] -/// - [OpenBSD] -/// - [DragonFly BSD] -/// - [illumos] -/// - [glibc] -/// -/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/pipe.html -/// [Linux]: https://man7.org/linux/man-pages/man2/pipe.2.html -/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/pipe.2.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=pipe&sektion=2 -/// [NetBSD]: https://man.netbsd.org/pipe.2 -/// [OpenBSD]: https://man.openbsd.org/pipe.2 -/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=pipe§ion=2 -/// [illumos]: https://illumos.org/man/2/pipe -/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Creating-a-Pipe.html -#[inline] -pub fn pipe() -> io::Result<(OwnedFd, OwnedFd)> { - backend::io::syscalls::pipe() -} - -/// `pipe2(flags)`—Creates a pipe, with flags. -/// -/// This function creates a pipe and returns two file descriptors, for the -/// reading and writing ends of the pipe, respectively. -/// -/// # References -/// - [Linux] -/// - [FreeBSD] -/// - [NetBSD] -/// - [OpenBSD] -/// - [DragonFly BSD] -/// - [illumos] -/// -/// [Linux]: https://man7.org/linux/man-pages/man2/pipe2.2.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=pipe2&sektion=2 -/// [NetBSD]: https://man.netbsd.org/pipe2.2 -/// [OpenBSD]: https://man.openbsd.org/pipe2.2 -/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=pipe2§ion=2 -/// [illumos]: https://illumos.org/man/2/pipe2 -#[cfg(not(any(apple, target_os = "aix", target_os = "haiku")))] -#[inline] -#[doc(alias = "pipe2")] -pub fn pipe_with(flags: PipeFlags) -> io::Result<(OwnedFd, OwnedFd)> { - backend::io::syscalls::pipe_with(flags) -} - -/// `splice(fd_in, off_in, fd_out, off_out, len, flags)`—Transfer data between -/// a file and a pipe. -/// -/// This function transfers up to `len` bytes of data from the file descriptor -/// `fd_in` to the file descriptor `fd_out`, where one of the file descriptors -/// must refer to a pipe. -/// -/// `off_*` must be `None` if the corresponding fd refers to a pipe. -/// Otherwise its value points to the starting offset to the file, -/// from which the data is read/written. -/// on success the number of bytes read/written is added to the offset. -/// -/// passing `None` causes the read/write to start from the file offset, -/// and the file offset is adjusted appropriately. -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man2/splice.2.html -#[cfg(linux_kernel)] -#[inline] -pub fn splice( - fd_in: FdIn, - off_in: Option<&mut u64>, - fd_out: FdOut, - off_out: Option<&mut u64>, - len: usize, - flags: SpliceFlags, -) -> io::Result { - backend::io::syscalls::splice(fd_in.as_fd(), off_in, fd_out.as_fd(), off_out, len, flags) -} - -/// `vmsplice(fd, bufs, flags)`—Transfer data between memory and a pipe. -/// -/// If `fd` is the write end of the pipe, -/// the function maps the memory pointer at by `bufs` to the pipe. -/// -/// If `fd` is the read end of the pipe, -/// the function writes data from the pipe to said memory. -/// -/// # Safety -/// -/// If the memory must not be mutated (such as when `bufs` were originally -/// immutable slices), it is up to the caller to ensure that the write end of -/// the pipe is placed in `fd`. -/// -/// Additionally if `SpliceFlags::GIFT` is set, the caller must also ensure -/// that the contents of `bufs` in never modified following the call, -/// and that all of the pointers in `bufs` are page aligned, -/// and the lengths are multiples of a page size in bytes. -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man2/vmsplice.2.html -#[cfg(linux_kernel)] -#[inline] -pub unsafe fn vmsplice( - fd: PipeFd, - bufs: &[IoSliceRaw], - flags: SpliceFlags, -) -> io::Result { - backend::io::syscalls::vmsplice(fd.as_fd(), bufs, flags) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/io/poll.rs temporalio-1.3.0/vendor/rustix/src/io/poll.rs --- temporalio-1.3.0/vendor/rustix/src/io/poll.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/io/poll.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -use crate::{backend, io}; - -pub use backend::io::poll_fd::{PollFd, PollFlags}; - -/// `poll(self.fds, timeout)` -/// -/// # References -/// - [Beej's Guide to Network Programming] -/// - [POSIX] -/// - [Linux] -/// - [Apple] -/// - [Winsock2] -/// - [FreeBSD] -/// - [NetBSD] -/// - [OpenBSD] -/// - [DragonFly BSD] -/// - [illumos] -/// -/// [Beej's Guide to Network Programming]: https://beej.us/guide/bgnet/html/split/slightly-advanced-techniques.html#poll -/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/poll.html -/// [Linux]: https://man7.org/linux/man-pages/man2/poll.2.html -/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/poll.2.html -/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsapoll -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=poll&sektion=2 -/// [NetBSD]: https://man.netbsd.org/poll.2 -/// [OpenBSD]: https://man.openbsd.org/poll.2 -/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=poll§ion=2 -/// [illumos]: https://illumos.org/man/2/poll -#[inline] -pub fn poll(fds: &mut [PollFd<'_>], timeout: i32) -> io::Result { - backend::io::syscalls::poll(fds, timeout) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/io/port.rs temporalio-1.3.0/vendor/rustix/src/io/port.rs --- temporalio-1.3.0/vendor/rustix/src/io/port.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/io/port.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,151 +0,0 @@ -//! Solaris/illumos event ports. - -use crate::backend::c; -use crate::backend::io::syscalls; -use crate::fd::{AsFd, AsRawFd, OwnedFd}; -use crate::io; - -use super::PollFlags; - -use core::convert::TryInto; -use core::time::Duration; - -/// The structure representing a port event. -#[repr(transparent)] -pub struct Event(pub(crate) c::port_event); - -impl Event { - /// Get the events associated with this event. - pub fn events(&self) -> i32 { - self.0.portev_events - } - - /// Get the event source associated with this event. - pub fn object(&self) -> usize { - self.0.portev_object - } - - /// Get the userdata associated with this event. - pub fn userdata(&self) -> *mut c::c_void { - self.0.portev_user - } -} - -/// `port_create()`—Creates a new port. -/// -/// # References -/// - [OpenSolaris] -/// - [illumos] -/// -/// [OpenSolaris]: https://www.unix.com/man-page/opensolaris/3C/port_create/ -/// [illumos]: https://illumos.org/man/3C/port_create -pub fn port_create() -> io::Result { - syscalls::port_create() -} - -/// `port_associate(_, PORT_SOURCE_FD, _, _, _)`—Associates a file descriptor -/// with a port. -/// -/// # Safety -/// -/// Any `object`s passed into the `port` must be valid for the lifetime of the -/// `port`. Logically, `port` keeps a borrowed reference to the `object` until -/// it is removed via `port_dissociate_fd`. -/// -/// # References -/// - [OpenSolaris] -/// - [illumos] -/// -/// [OpenSolaris]: https://www.unix.com/man-page/opensolaris/3C/port_associate/ -/// [illumos]: https://illumos.org/man/3C/port_associate -pub unsafe fn port_associate_fd( - port: impl AsFd, - object: impl AsRawFd, - events: PollFlags, - userdata: *mut c::c_void, -) -> io::Result<()> { - syscalls::port_associate( - port.as_fd(), - c::PORT_SOURCE_FD, - object.as_raw_fd() as _, - events.bits() as _, - userdata.cast(), - ) -} - -/// `port_dissociate(_, PORT_SOURCE_FD, _)`—Dissociates a file descriptor from -/// a port. -/// -/// # Safety -/// -/// The file descriptor passed into this function must have been previously -/// associated with the port via [`port_associate_fd`]. -/// -/// # References -/// - [OpenSolaris] -/// - [illumos] -/// -/// [OpenSolaris]: https://www.unix.com/man-page/opensolaris/3C/port_dissociate -/// [illumos]: https://illumos.org/man/3C/port_dissociate -pub unsafe fn port_dissociate_fd(port: impl AsFd, object: impl AsRawFd) -> io::Result<()> { - syscalls::port_dissociate(port.as_fd(), c::PORT_SOURCE_FD, object.as_raw_fd() as _) -} - -/// `port_get(port, timeout)`—Gets an event from a port. -/// -/// # References -/// - [OpenSolaris] -/// - [illumos] -/// -/// [OpenSolaris]: https://www.unix.com/man-page/opensolaris/3C/port_get/ -/// [illumos]: https://illumos.org/man/3C/port_get -pub fn port_get(port: impl AsFd, timeout: Option) -> io::Result { - let mut timeout = timeout.map(|timeout| c::timespec { - tv_sec: timeout.as_secs().try_into().unwrap(), - tv_nsec: timeout.subsec_nanos() as _, - }); - - syscalls::port_get(port.as_fd(), timeout.as_mut()) -} - -/// `port_getn(port, events, min_events, timeout)`—Gets multiple events from a -/// port. -/// -/// # References -/// - [OpenSolaris] -/// - [illumos] -/// -/// [OpenSolaris]: https://www.unix.com/man-page/opensolaris/3C/port_getn/ -/// [illumos]: https://illumos.org/man/3C/port_getn -pub fn port_getn( - port: impl AsFd, - events: &mut Vec, - min_events: usize, - timeout: Option, -) -> io::Result<()> { - events.clear(); - - let mut timeout = timeout.map(|timeout| c::timespec { - tv_sec: timeout.as_secs().try_into().unwrap(), - tv_nsec: timeout.subsec_nanos() as _, - }); - - syscalls::port_getn( - port.as_fd(), - timeout.as_mut(), - events, - min_events.try_into().unwrap(), - ) -} - -/// `port_send(port, events, userdata)`—Sends an event to a port. -/// -/// # References -/// - [OpenSolaris] -/// - [illumos] -/// -/// [OpenSolaris]: https://www.unix.com/man-page/opensolaris/3C/port_send/ -/// [illumos]: https://illumos.org/man/3C/port_send -pub fn port_send(port: impl AsFd, events: i32, userdata: *mut c::c_void) -> io::Result<()> { - syscalls::port_send(port.as_fd(), events, userdata.cast()) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/io/procfs.rs temporalio-1.3.0/vendor/rustix/src/io/procfs.rs --- temporalio-1.3.0/vendor/rustix/src/io/procfs.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/io/procfs.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,466 +0,0 @@ -//! Utilities for working with `/proc`, where Linux's `procfs` is typically -//! mounted. `/proc` serves as an adjunct to Linux's main syscall surface area, -//! providing additional features with an awkward interface. -//! -//! This module does a considerable amount of work to determine whether `/proc` -//! is mounted, with actual `procfs`, and without any additional mount points -//! on top of the paths we open. -//! -//! Why all the effort to detect bind mount points? People are doing all kinds -//! of things with Linux containers these days, with many different privilege -//! schemes, and we want to avoid making any unnecessary assumptions. Rustix -//! and its users will sometimes use procfs *implicitly* (when Linux gives them -//! no better options), in ways that aren't obvious from their public APIs. -//! These filesystem accesses might not be visible to someone auditing the main -//! code of an application for places which may be influenced by the filesystem -//! namespace. So with the checking here, they may fail, but they won't be able -//! to succeed with bogus results. - -use crate::fd::{AsFd, BorrowedFd, OwnedFd}; -use crate::ffi::CStr; -use crate::fs::{ - cwd, fstat, fstatfs, major, openat, renameat, Dir, FileType, Mode, OFlags, Stat, - PROC_SUPER_MAGIC, -}; -use crate::io; -use crate::path::DecInt; -use crate::process::getpid; -#[cfg(feature = "rustc-dep-of-std")] -use core::lazy::OnceCell; -#[cfg(not(feature = "rustc-dep-of-std"))] -use once_cell::sync::OnceCell; - -/// Linux's procfs always uses inode 1 for its root directory. -const PROC_ROOT_INO: u64 = 1; - -// Identify an entry within "/proc", to determine which anomalies to check for. -#[derive(Copy, Clone, Debug)] -enum Kind { - Proc, - Pid, - Fd, - File, -} - -/// Check a subdirectory of "/proc" for anomalies. -fn check_proc_entry( - kind: Kind, - entry: BorrowedFd<'_>, - proc_stat: Option<&Stat>, -) -> io::Result { - let entry_stat = fstat(entry)?; - check_proc_entry_with_stat(kind, entry, entry_stat, proc_stat) -} - -/// Check a subdirectory of "/proc" for anomalies, using the provided `Stat`. -fn check_proc_entry_with_stat( - kind: Kind, - entry: BorrowedFd<'_>, - entry_stat: Stat, - proc_stat: Option<&Stat>, -) -> io::Result { - // Check the filesystem magic. - check_procfs(entry)?; - - match kind { - Kind::Proc => check_proc_root(entry, &entry_stat)?, - Kind::Pid | Kind::Fd => check_proc_subdir(entry, &entry_stat, proc_stat)?, - Kind::File => check_proc_file(&entry_stat, proc_stat)?, - } - - // "/proc" directories are typically mounted r-xr-xr-x. - // "/proc/self/fd" is r-x------. Allow them to have fewer permissions, but - // not more. - let expected_mode = if let Kind::Fd = kind { 0o500 } else { 0o555 }; - if entry_stat.st_mode & 0o777 & !expected_mode != 0 { - return Err(io::Errno::NOTSUP); - } - - match kind { - Kind::Fd => { - // Check that the "/proc/self/fd" directory doesn't have any - // extraneous links into it (which might include unexpected - // subdirectories). - if entry_stat.st_nlink != 2 { - return Err(io::Errno::NOTSUP); - } - } - Kind::Pid | Kind::Proc => { - // Check that the "/proc" and "/proc/self" directories aren't - // empty. - if entry_stat.st_nlink <= 2 { - return Err(io::Errno::NOTSUP); - } - } - Kind::File => { - // Check that files in procfs don't have extraneous hard links to - // them (which might indicate hard links to other things). - if entry_stat.st_nlink != 1 { - return Err(io::Errno::NOTSUP); - } - } - } - - Ok(entry_stat) -} - -fn check_proc_root(entry: BorrowedFd<'_>, stat: &Stat) -> io::Result<()> { - // We use `O_DIRECTORY` for proc directories, so open should fail if we - // don't get a directory when we expect one. - assert_eq!(FileType::from_raw_mode(stat.st_mode), FileType::Directory); - - // Check the root inode number. - if stat.st_ino != PROC_ROOT_INO { - return Err(io::Errno::NOTSUP); - } - - // Proc is a non-device filesystem, so check for major number 0. - // - if major(stat.st_dev) != 0 { - return Err(io::Errno::NOTSUP); - } - - // Check that "/proc" is a mountpoint. - if !is_mountpoint(entry) { - return Err(io::Errno::NOTSUP); - } - - Ok(()) -} - -fn check_proc_subdir( - entry: BorrowedFd<'_>, - stat: &Stat, - proc_stat: Option<&Stat>, -) -> io::Result<()> { - // We use `O_DIRECTORY` for proc directories, so open should fail if we - // don't get a directory when we expect one. - assert_eq!(FileType::from_raw_mode(stat.st_mode), FileType::Directory); - - check_proc_nonroot(stat, proc_stat)?; - - // Check that subdirectories of "/proc" are not mount points. - if is_mountpoint(entry) { - return Err(io::Errno::NOTSUP); - } - - Ok(()) -} - -fn check_proc_file(stat: &Stat, proc_stat: Option<&Stat>) -> io::Result<()> { - // Check that we have a regular file. - if FileType::from_raw_mode(stat.st_mode) != FileType::RegularFile { - return Err(io::Errno::NOTSUP); - } - - check_proc_nonroot(stat, proc_stat)?; - - Ok(()) -} - -fn check_proc_nonroot(stat: &Stat, proc_stat: Option<&Stat>) -> io::Result<()> { - // Check that we haven't been linked back to the root of "/proc". - if stat.st_ino == PROC_ROOT_INO { - return Err(io::Errno::NOTSUP); - } - - // Check that we're still in procfs. - if stat.st_dev != proc_stat.unwrap().st_dev { - return Err(io::Errno::NOTSUP); - } - - Ok(()) -} - -/// Check that `file` is opened on a `procfs` filesystem. -fn check_procfs(file: BorrowedFd<'_>) -> io::Result<()> { - let statfs = fstatfs(file)?; - let f_type = statfs.f_type; - if f_type != PROC_SUPER_MAGIC { - return Err(io::Errno::NOTSUP); - } - - Ok(()) -} - -/// Check whether the given directory handle is a mount point. -fn is_mountpoint(file: BorrowedFd<'_>) -> bool { - // We use a `renameat` call that would otherwise fail, but which fails with - // `XDEV` first if it would cross a mount point. - let err = renameat(file, cstr!("../."), file, cstr!(".")).unwrap_err(); - match err { - io::Errno::XDEV => true, // the rename failed due to crossing a mount point - io::Errno::BUSY => false, // the rename failed normally - _ => panic!("Unexpected error from `renameat`: {:?}", err), - } -} - -/// Open a directory in `/proc`, mapping all errors to `io::Errno::NOTSUP`. -fn proc_opendirat(dirfd: Fd, path: P) -> io::Result { - // We could add `PATH`|`NOATIME` here but Linux 2.6.32 doesn't support it. - // Also for `NOATIME` see the comment in `open_and_check_file`. - let oflags = OFlags::NOFOLLOW | OFlags::DIRECTORY | OFlags::CLOEXEC | OFlags::NOCTTY; - openat(dirfd, path, oflags, Mode::empty()).map_err(|_err| io::Errno::NOTSUP) -} - -/// Returns a handle to Linux's `/proc` directory. -/// -/// This ensures that `/proc` is procfs, that nothing is mounted on top of it, -/// and that it looks normal. It also returns the `Stat` of `/proc`. -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html -fn proc() -> io::Result<(BorrowedFd<'static>, &'static Stat)> { - static PROC: StaticFd = StaticFd::new(); - - // `OnceBox` is "racey" in that the initialization function may run - // multiple times. We're ok with that, since the initialization function - // has no side effects. - PROC.get_or_try_init(|| { - // Open "/proc". - let proc = proc_opendirat(cwd(), cstr!("/proc"))?; - let proc_stat = - check_proc_entry(Kind::Proc, proc.as_fd(), None).map_err(|_err| io::Errno::NOTSUP)?; - - Ok(new_static_fd(proc, proc_stat)) - }) - .map(|(fd, stat)| (fd.as_fd(), stat)) -} - -/// Returns a handle to Linux's `/proc/self` directory. -/// -/// This ensures that `/proc/self` is procfs, that nothing is mounted on top of -/// it, and that it looks normal. It also returns the `Stat` of `/proc/self`. -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html -fn proc_self() -> io::Result<(BorrowedFd<'static>, &'static Stat)> { - static PROC_SELF: StaticFd = StaticFd::new(); - - // The init function here may run multiple times; see above. - PROC_SELF - .get_or_try_init(|| { - let (proc, proc_stat) = proc()?; - - let pid = getpid(); - - // Open "/proc/self". Use our pid to compute the name rather than - // literally using "self", as "self" is a symlink. - let proc_self = proc_opendirat(proc, DecInt::new(pid.as_raw_nonzero().get()))?; - let proc_self_stat = check_proc_entry(Kind::Pid, proc_self.as_fd(), Some(proc_stat)) - .map_err(|_err| io::Errno::NOTSUP)?; - - Ok(new_static_fd(proc_self, proc_self_stat)) - }) - .map(|(owned, stat)| (owned.as_fd(), stat)) -} - -/// Returns a handle to Linux's `/proc/self/fd` directory. -/// -/// This ensures that `/proc/self/fd` is `procfs`, that nothing is mounted on -/// top of it, and that it looks normal. -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html -#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))] -pub fn proc_self_fd() -> io::Result> { - static PROC_SELF_FD: StaticFd = StaticFd::new(); - - // The init function here may run multiple times; see above. - PROC_SELF_FD - .get_or_try_init(|| { - let (_, proc_stat) = proc()?; - - let (proc_self, _proc_self_stat) = proc_self()?; - - // Open "/proc/self/fd". - let proc_self_fd = proc_opendirat(proc_self, cstr!("fd"))?; - let proc_self_fd_stat = - check_proc_entry(Kind::Fd, proc_self_fd.as_fd(), Some(proc_stat)) - .map_err(|_err| io::Errno::NOTSUP)?; - - Ok(new_static_fd(proc_self_fd, proc_self_fd_stat)) - }) - .map(|(owned, _stat)| owned.as_fd()) -} - -type StaticFd = OnceCell<(OwnedFd, Stat)>; - -#[inline] -fn new_static_fd(fd: OwnedFd, stat: Stat) -> (OwnedFd, Stat) { - (fd, stat) -} - -/// Returns a handle to Linux's `/proc/self/fdinfo` directory. -/// -/// This ensures that `/proc/self/fdinfo` is `procfs`, that nothing is mounted -/// on top of it, and that it looks normal. It also returns the `Stat` of -/// `/proc/self/fd`. -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html -fn proc_self_fdinfo() -> io::Result<(BorrowedFd<'static>, &'static Stat)> { - static PROC_SELF_FDINFO: StaticFd = StaticFd::new(); - - PROC_SELF_FDINFO - .get_or_try_init(|| { - let (_, proc_stat) = proc()?; - - let (proc_self, _proc_self_stat) = proc_self()?; - - // Open "/proc/self/fdinfo". - let proc_self_fdinfo = proc_opendirat(proc_self, cstr!("fdinfo"))?; - let proc_self_fdinfo_stat = - check_proc_entry(Kind::Fd, proc_self_fdinfo.as_fd(), Some(proc_stat)) - .map_err(|_err| io::Errno::NOTSUP)?; - - Ok((proc_self_fdinfo, proc_self_fdinfo_stat)) - }) - .map(|(owned, stat)| (owned.as_fd(), stat)) -} - -/// Returns a handle to a Linux `/proc/self/fdinfo/` file. -/// -/// This ensures that `/proc/self/fdinfo/` is `procfs`, that nothing is -/// mounted on top of it, and that it looks normal. -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html -#[inline] -#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))] -pub fn proc_self_fdinfo_fd(fd: Fd) -> io::Result { - _proc_self_fdinfo(fd.as_fd()) -} - -fn _proc_self_fdinfo(fd: BorrowedFd<'_>) -> io::Result { - let (proc_self_fdinfo, proc_self_fdinfo_stat) = proc_self_fdinfo()?; - let fd_str = DecInt::from_fd(fd); - open_and_check_file(proc_self_fdinfo, proc_self_fdinfo_stat, fd_str.as_c_str()) -} - -/// Returns a handle to a Linux `/proc/self/pagemap` file. -/// -/// This ensures that `/proc/self/pagemap` is `procfs`, that nothing is -/// mounted on top of it, and that it looks normal. -/// -/// # References -/// - [Linux] -/// - [Linux pagemap] -/// -/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html -/// [Linux pagemap]: https://www.kernel.org/doc/Documentation/vm/pagemap.txt -#[inline] -#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))] -pub fn proc_self_pagemap() -> io::Result { - proc_self_file(cstr!("pagemap")) -} - -/// Returns a handle to a Linux `/proc/self/maps` file. -/// -/// This ensures that `/proc/self/maps` is `procfs`, that nothing is -/// mounted on top of it, and that it looks normal. -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html -#[inline] -#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))] -pub fn proc_self_maps() -> io::Result { - proc_self_file(cstr!("maps")) -} - -/// Returns a handle to a Linux `/proc/self/status` file. -/// -/// This ensures that `/proc/self/status` is `procfs`, that nothing is -/// mounted on top of it, and that it looks normal. -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html -#[inline] -#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))] -pub fn proc_self_status() -> io::Result { - proc_self_file(cstr!("status")) -} - -/// Open a file under `/proc/self`. -fn proc_self_file(name: &CStr) -> io::Result { - let (proc_self, proc_self_stat) = proc_self()?; - open_and_check_file(proc_self, proc_self_stat, name) -} - -/// Open a procfs file within in `dir` and check it for bind mounts. -fn open_and_check_file(dir: BorrowedFd, dir_stat: &Stat, name: &CStr) -> io::Result { - let (_, proc_stat) = proc()?; - - // Don't use `NOATIME`, because it [requires us to own the file], and when - // a process sets itself non-dumpable Linux changes the user:group of its - // `/proc/` files [to root:root]. - // - // [requires us to own the file]: https://man7.org/linux/man-pages/man2/openat.2.html - // [to root:root]: https://man7.org/linux/man-pages/man5/proc.5.html - let oflags = OFlags::RDONLY | OFlags::CLOEXEC | OFlags::NOFOLLOW | OFlags::NOCTTY; - let file = openat(dir, name, oflags, Mode::empty()).map_err(|_err| io::Errno::NOTSUP)?; - let file_stat = fstat(&file)?; - - // `is_mountpoint` only works on directory mount points, not file mount - // points. To detect file mount points, scan the parent directory to see - // if we can find a regular file with an inode and name that matches the - // file we just opened. If we can't find it, there could be a file bind - // mount on top of the file we want. - // - // As we scan, we also check for ".", to make sure it's the same directory - // as our original directory, to detect mount points, since - // `Dir::read_from` reopens ".". - // - // TODO: With Linux 5.8 we might be able to use `statx` and - // `STATX_ATTR_MOUNT_ROOT` to detect mountpoints directly instead of doing - // this scanning. - let dir = Dir::read_from(dir).map_err(|_err| io::Errno::NOTSUP)?; - - // Confirm that we got the same inode. - let dot_stat = dir.stat().map_err(|_err| io::Errno::NOTSUP)?; - if (dot_stat.st_dev, dot_stat.st_ino) != (dir_stat.st_dev, dir_stat.st_ino) { - return Err(io::Errno::NOTSUP); - } - - let mut found_file = false; - let mut found_dot = false; - for entry in dir { - let entry = entry.map_err(|_err| io::Errno::NOTSUP)?; - if entry.ino() == file_stat.st_ino - && entry.file_type() == FileType::RegularFile - && entry.file_name() == name - { - // We found the file. Proceed to check the file handle. - let _ = - check_proc_entry_with_stat(Kind::File, file.as_fd(), file_stat, Some(proc_stat))?; - - found_file = true; - } else if entry.ino() == dir_stat.st_ino - && entry.file_type() == FileType::Directory - && entry.file_name() == cstr!(".") - { - // We found ".", and it's the right ".". - found_dot = true; - } - } - - if found_file && found_dot { - Ok(file) - } else { - Err(io::Errno::NOTSUP) - } -} diff -Nru temporalio-1.3.0/vendor/rustix/src/io/read_write.rs temporalio-1.3.0/vendor/rustix/src/io/read_write.rs --- temporalio-1.3.0/vendor/rustix/src/io/read_write.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/io/read_write.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,11 +5,7 @@ // Declare `IoSlice` and `IoSliceMut`. #[cfg(not(windows))] -#[cfg(not(feature = "std"))] -pub use backend::io::io_slice::{IoSlice, IoSliceMut}; -#[cfg(not(windows))] -#[cfg(feature = "std")] -pub use std::io::{IoSlice, IoSliceMut}; +pub use crate::maybe_polyfill::io::{IoSlice, IoSliceMut}; #[cfg(linux_kernel)] pub use backend::io::types::ReadWriteFlags; @@ -142,6 +138,7 @@ /// [OpenBSD]: https://man.openbsd.org/readv.2 /// [DragonFly BSD]: https://man.dragonflybsd.org/?command=readv§ion=2 /// [illumos]: https://illumos.org/man/2/readv +#[cfg(not(target_os = "espidf"))] #[inline] pub fn readv(fd: Fd, bufs: &mut [IoSliceMut<'_>]) -> io::Result { backend::io::syscalls::readv(fd.as_fd(), bufs) @@ -167,6 +164,7 @@ /// [OpenBSD]: https://man.openbsd.org/writev.2 /// [DragonFly BSD]: https://man.dragonflybsd.org/?command=writev§ion=2 /// [illumos]: https://illumos.org/man/2/writev +#[cfg(not(target_os = "espidf"))] #[inline] pub fn writev(fd: Fd, bufs: &[IoSlice<'_>]) -> io::Result { backend::io::syscalls::writev(fd.as_fd(), bufs) @@ -189,7 +187,13 @@ /// [OpenBSD]: https://man.openbsd.org/preadv.2 /// [DragonFly BSD]: https://man.dragonflybsd.org/?command=preadv§ion=2 /// [illumos]: https://illumos.org/man/2/preadv -#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "solaris")))] +#[cfg(not(any( + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + target_os = "redox", + target_os = "solaris" +)))] #[inline] pub fn preadv(fd: Fd, bufs: &mut [IoSliceMut<'_>], offset: u64) -> io::Result { backend::io::syscalls::preadv(fd.as_fd(), bufs, offset) @@ -216,7 +220,13 @@ /// [OpenBSD]: https://man.openbsd.org/pwritev.2 /// [DragonFly BSD]: https://man.dragonflybsd.org/?command=pwritev§ion=2 /// [illumos]: https://illumos.org/man/2/pwritev -#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "solaris")))] +#[cfg(not(any( + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + target_os = "redox", + target_os = "solaris" +)))] #[inline] pub fn pwritev(fd: Fd, bufs: &[IoSlice<'_>], offset: u64) -> io::Result { backend::io::syscalls::pwritev(fd.as_fd(), bufs, offset) diff -Nru temporalio-1.3.0/vendor/rustix/src/io/seek_from.rs temporalio-1.3.0/vendor/rustix/src/io/seek_from.rs --- temporalio-1.3.0/vendor/rustix/src/io/seek_from.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/io/seek_from.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -//! The following is derived from Rust's -//! library/std/src/io/mod.rs at revision -//! dca3f1b786efd27be3b325ed1e01e247aa589c3b. - -/// Enumeration of possible methods to seek within an I/O object. -/// -/// It is used by the [`Seek`] trait. -/// -/// [`Seek`]: std::io::Seek -#[derive(Copy, PartialEq, Eq, Clone, Debug)] -#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] -pub enum SeekFrom { - /// Sets the offset to the provided number of bytes. - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - Start(#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] u64), - - /// Sets the offset to the size of this object plus the specified number of - /// bytes. - /// - /// It is possible to seek beyond the end of an object, but it's an error - /// to seek before byte 0. - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - End(#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] i64), - - /// Sets the offset to the current position plus the specified number of - /// bytes. - /// - /// It is possible to seek beyond the end of an object, but it's an error - /// to seek before byte 0. - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - Current(#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] i64), - - /// Sets the offset to the current position plus the specified number of bytes, - /// plus the distance to the next byte which is not in a hole. - /// - /// If the offset is in a hole at the end of the file, the seek will produce - /// an `NXIO` error. - #[cfg(any(freebsdlike, target_os = "linux", target_os = "solaris"))] - Data(i64), - - /// Sets the offset to the current position plus the specified number of bytes, - /// plus the distance to the next byte which is in a hole. - /// - /// If there is no hole past the offset, it will be set to the end of the file - /// i.e. there is an implicit hole at the end of any file. - #[cfg(any(freebsdlike, target_os = "linux", target_os = "solaris"))] - Hole(i64), -} diff -Nru temporalio-1.3.0/vendor/rustix/src/io/stdio.rs temporalio-1.3.0/vendor/rustix/src/io/stdio.rs --- temporalio-1.3.0/vendor/rustix/src/io/stdio.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/io/stdio.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,507 +0,0 @@ -//! Functions returning the stdio file descriptors. -//! -//! # Safety -//! -//! These access the file descriptors by absolute index value, and nothing -//! prevents them from being closed and reused. They should only be used in -//! `main` or other situations where one is in control of the process' -//! stdio streams. -#![allow(unsafe_code)] - -use crate::backend; -use crate::fd::OwnedFd; -use backend::fd::{BorrowedFd, FromRawFd, RawFd}; - -#[cfg(not(any(windows, target_os = "wasi")))] -use {crate::io, backend::fd::AsFd, core::mem::forget}; - -/// `STDIN_FILENO`—Standard input, borrowed. -/// -/// In `std`-using configurations, this is a safe function, because the -/// standard library already assumes that the stdin file descriptor is always -/// valid. In `no_std` configurations, it is `unsafe`. -/// -/// # Warning -/// -/// This function allows reading directly from stdin without coordinating -/// with the buffering performed by [`std::io::Stdin`], so it could cause -/// corrupted input. -/// -/// # References -/// - [POSIX] -/// - [Linux] -/// - [FreeBSD] -/// - [NetBSD] -/// - [OpenBSD] -/// - [DragonFly BSD] -/// - [illumos] -/// - [glibc] -/// -/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdin.html -/// [Linux]: https://man7.org/linux/man-pages/man3/stdin.3.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stdin&sektion=4 -/// [NetBSD]: https://man.netbsd.org/stdin.4 -/// [OpenBSD]: https://man.openbsd.org/stdin.4 -/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stdin§ion=4 -/// [illumos]: https://illumos.org/man/4FS/stdin -/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stdin -#[cfg(feature = "std")] -#[doc(alias = "STDIN_FILENO")] -#[inline] -pub const fn stdin() -> BorrowedFd<'static> { - // SAFETY: When "std" is enabled, the standard library assumes that the - // stdio file descriptors are all valid. - unsafe { BorrowedFd::borrow_raw(backend::io::types::STDIN_FILENO as RawFd) } -} - -/// `STDIN_FILENO`—Standard input, borrowed. -/// -/// In `std`-using configurations, this is a safe function, because the -/// standard library already assumes that the stdin file descriptor is always -/// valid. In `no_std` configurations, it is `unsafe`. -/// -/// # Safety -/// -/// In `no_std` configurations, the stdin file descriptor can be closed, -/// potentially on other threads, in which case the file descriptor index -/// value could be dynamically reused for other purposes, potentially on -/// different threads. -/// -/// # Warning -/// -/// This function allows reading directly from stdin without coordinating -/// with the buffering performed by [`std::io::Stdin`], so it could cause -/// corrupted input. -/// -/// # References -/// - [POSIX] -/// - [Linux] -/// - [FreeBSD] -/// - [NetBSD] -/// - [OpenBSD] -/// - [DragonFly BSD] -/// - [illumos] -/// - [glibc] -/// -/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdin.html -/// [Linux]: https://man7.org/linux/man-pages/man3/stdin.3.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stdin&sektion=4 -/// [NetBSD]: https://man.netbsd.org/stdin.4 -/// [OpenBSD]: https://man.openbsd.org/stdin.4 -/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stdin§ion=4 -/// [illumos]: https://illumos.org/man/4FS/stdin -/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stdin -#[cfg(not(feature = "std"))] -#[doc(alias = "STDIN_FILENO")] -#[inline] -pub const unsafe fn stdin() -> BorrowedFd<'static> { - BorrowedFd::borrow_raw(backend::io::types::STDIN_FILENO as RawFd) -} - -/// `STDIN_FILENO`—Standard input, owned. -/// -/// This is similar to [`stdin`], however it returns an `OwnedFd` which closes -/// standard input when it is dropped. -/// -/// # Safety -/// -/// Safe `std`-using Rust code is permitted to assume that the stdin file -/// descriptor is always valid. This function returns an `OwnedFd` which will -/// close the stdin file descriptor when dropped. -/// -/// # Warning -/// -/// This has the same hazards as [`stdin`]. -/// -/// # References -/// - [POSIX] -/// - [Linux] -/// - [FreeBSD] -/// - [NetBSD] -/// - [OpenBSD] -/// - [DragonFly BSD] -/// - [illumos] -/// - [glibc] -/// -/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdin.html -/// [Linux]: https://man7.org/linux/man-pages/man3/stdin.3.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stdin&sektion=4 -/// [NetBSD]: https://man.netbsd.org/stdin.4 -/// [OpenBSD]: https://man.openbsd.org/stdin.4 -/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stdin§ion=4 -/// [illumos]: https://illumos.org/man/4FS/stdin -/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stdin -#[doc(alias = "STDIN_FILENO")] -#[inline] -pub unsafe fn take_stdin() -> OwnedFd { - backend::fd::OwnedFd::from_raw_fd(backend::io::types::STDIN_FILENO as RawFd) -} - -/// `STDOUT_FILENO`—Standard output, borrowed. -/// -/// In `std`-using configurations, this is a safe function, because the -/// standard library already assumes that the stdout file descriptor is always -/// valid. In `no_std` configurations, it is `unsafe`. -/// -/// # Warning -/// -/// This function allows reading directly from stdout without coordinating -/// with the buffering performed by [`std::io::Stdout`], so it could cause -/// corrupted input. -/// -/// # References -/// - [POSIX] -/// - [Linux] -/// - [FreeBSD] -/// - [NetBSD] -/// - [OpenBSD] -/// - [DragonFly BSD] -/// - [illumos] -/// - [glibc] -/// -/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdout.html -/// [Linux]: https://man7.org/linux/man-pages/man3/stdout.3.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stdout&sektion=4 -/// [NetBSD]: https://man.netbsd.org/stdout.4 -/// [OpenBSD]: https://man.openbsd.org/stdout.4 -/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stdout§ion=4 -/// [illumos]: https://illumos.org/man/4FS/stdout -/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stdout -#[cfg(feature = "std")] -#[doc(alias = "STDOUT_FILENO")] -#[inline] -pub const fn stdout() -> BorrowedFd<'static> { - // SAFETY: When "std" is enabled, the standard library assumes that the - // stdio file descriptors are all valid. - unsafe { BorrowedFd::borrow_raw(backend::io::types::STDOUT_FILENO as RawFd) } -} - -/// `STDOUT_FILENO`—Standard output, borrowed. -/// -/// In `std`-using configurations, this is a safe function, because the -/// standard library already assumes that the stdout file descriptor is always -/// valid. In `no_std` configurations, it is `unsafe`. -/// -/// # Safety -/// -/// In `no_std` configurations, the stdout file descriptor can be closed, -/// potentially on other threads, in which case the file descriptor index -/// value could be dynamically reused for other purposes, potentially on -/// different threads. -/// -/// # Warning -/// -/// This function allows reading directly from stdout without coordinating -/// with the buffering performed by [`std::io::Stdout`], so it could cause -/// corrupted input. -/// -/// # References -/// - [POSIX] -/// - [Linux] -/// - [FreeBSD] -/// - [NetBSD] -/// - [OpenBSD] -/// - [DragonFly BSD] -/// - [illumos] -/// - [glibc] -/// -/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdout.html -/// [Linux]: https://man7.org/linux/man-pages/man3/stdout.3.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stdout&sektion=4 -/// [NetBSD]: https://man.netbsd.org/stdout.4 -/// [OpenBSD]: https://man.openbsd.org/stdout.4 -/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stdout§ion=4 -/// [illumos]: https://illumos.org/man/4FS/stdout -/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stdout -#[cfg(not(feature = "std"))] -#[doc(alias = "STDOUT_FILENO")] -#[inline] -pub const unsafe fn stdout() -> BorrowedFd<'static> { - BorrowedFd::borrow_raw(backend::io::types::STDOUT_FILENO as RawFd) -} - -/// `STDOUT_FILENO`—Standard output, owned. -/// -/// This is similar to [`stdout`], however it returns an `OwnedFd` which closes -/// standard output when it is dropped. -/// -/// # Safety -/// -/// Safe `std`-using Rust code is permitted to assume that the stdout file -/// descriptor is always valid. This function returns an `OwnedFd` which will -/// close the stdout file descriptor when dropped. -/// -/// # Warning -/// -/// This has the same hazards as [`stdout`]. -/// -/// # References -/// - [POSIX] -/// - [Linux] -/// - [FreeBSD] -/// - [NetBSD] -/// - [OpenBSD] -/// - [DragonFly BSD] -/// - [illumos] -/// - [glibc] -/// -/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdout.html -/// [Linux]: https://man7.org/linux/man-pages/man3/stdout.3.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stdout&sektion=4 -/// [NetBSD]: https://man.netbsd.org/stdout.4 -/// [OpenBSD]: https://man.openbsd.org/stdout.4 -/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stdout§ion=4 -/// [illumos]: https://illumos.org/man/4FS/stdout -/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stdout -#[doc(alias = "STDOUT_FILENO")] -#[inline] -pub unsafe fn take_stdout() -> OwnedFd { - backend::fd::OwnedFd::from_raw_fd(backend::io::types::STDOUT_FILENO as RawFd) -} - -/// `STDERR_FILENO`—Standard error, borrowed. -/// -/// In `std`-using configurations, this is a safe function, because the -/// standard library already assumes that the stderr file descriptor is always -/// valid. In `no_std` configurations, it is `unsafe`. -/// -/// # References -/// - [POSIX] -/// - [Linux] -/// - [FreeBSD] -/// - [NetBSD] -/// - [OpenBSD] -/// - [DragonFly BSD] -/// - [illumos] -/// - [glibc] -/// -/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stderr.html -/// [Linux]: https://man7.org/linux/man-pages/man3/stderr.3.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stderr&sektion=4 -/// [NetBSD]: https://man.netbsd.org/stderr.4 -/// [OpenBSD]: https://man.openbsd.org/stderr.4 -/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stderr§ion=4 -/// [illumos]: https://illumos.org/man/4FS/stderr -/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stderr -#[cfg(feature = "std")] -#[doc(alias = "STDERR_FILENO")] -#[inline] -pub const fn stderr() -> BorrowedFd<'static> { - // SAFETY: When "std" is enabled, the standard library assumes that the - // stdio file descriptors are all valid. - unsafe { BorrowedFd::borrow_raw(backend::io::types::STDERR_FILENO as RawFd) } -} - -/// `STDERR_FILENO`—Standard error, borrowed. -/// -/// In `std`-using configurations, this is a safe function, because the -/// standard library already assumes that the stderr file descriptor is always -/// valid. In `no_std` configurations, it is `unsafe`. -/// -/// # Safety -/// -/// In `no_std` configurations, the stderr file descriptor can be closed, -/// potentially on other threads, in which case the file descriptor index -/// value could be dynamically reused for other purposes, potentially on -/// different threads. -/// -/// # References -/// - [POSIX] -/// - [Linux] -/// - [FreeBSD] -/// - [NetBSD] -/// - [OpenBSD] -/// - [DragonFly BSD] -/// - [illumos] -/// - [glibc] -/// -/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stderr.html -/// [Linux]: https://man7.org/linux/man-pages/man3/stderr.3.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stderr&sektion=4 -/// [NetBSD]: https://man.netbsd.org/stderr.4 -/// [OpenBSD]: https://man.openbsd.org/stderr.4 -/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stderr§ion=4 -/// [illumos]: https://illumos.org/man/4FS/stderr -/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stderr -#[cfg(not(feature = "std"))] -#[doc(alias = "STDERR_FILENO")] -#[inline] -pub const unsafe fn stderr() -> BorrowedFd<'static> { - BorrowedFd::borrow_raw(backend::io::types::STDERR_FILENO as RawFd) -} - -/// `STDERR_FILENO`—Standard error, owned. -/// -/// This is similar to [`stderr`], however it returns an `OwnedFd` which closes -/// standard output when it is dropped. -/// -/// # Safety -/// -/// Safe std-using Rust code is permitted to assume that the stderr file -/// descriptor is always valid. This function returns an `OwnedFd` which will -/// close the stderr file descriptor when dropped. -/// -/// # Other hazards -/// -/// This has the same hazards as [`stderr`]. -/// -/// And, when the `OwnedFd` is dropped, subsequent newly created file -/// descriptors may unknowingly reuse the stderr file descriptor number, which -/// may break common assumptions, so it should typically only be dropped at the -/// end of a program when no more file descriptors will be created. -/// -/// # References -/// - [POSIX] -/// - [Linux] -/// - [FreeBSD] -/// - [NetBSD] -/// - [OpenBSD] -/// - [DragonFly BSD] -/// - [illumos] -/// - [glibc] -/// -/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stderr.html -/// [Linux]: https://man7.org/linux/man-pages/man3/stderr.3.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stderr&sektion=4 -/// [NetBSD]: https://man.netbsd.org/stderr.4 -/// [OpenBSD]: https://man.openbsd.org/stderr.4 -/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stderr§ion=4 -/// [illumos]: https://illumos.org/man/4FS/stderr -/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stderr -#[doc(alias = "STDERR_FILENO")] -#[inline] -pub unsafe fn take_stderr() -> OwnedFd { - backend::fd::OwnedFd::from_raw_fd(backend::io::types::STDERR_FILENO as RawFd) -} - -/// `STDIN_FILENO`—Standard input, raw. -/// -/// This is similar to [`stdin`], however it returns a `RawFd`. -/// -/// # Other hazards -/// -/// This has the same hazards as [`stdin`]. -/// -/// # References -/// - [POSIX] -/// - [Linux] -/// - [FreeBSD] -/// - [NetBSD] -/// - [OpenBSD] -/// - [DragonFly BSD] -/// - [illumos] -/// - [glibc] -/// -/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdin.html -/// [Linux]: https://man7.org/linux/man-pages/man3/stdin.3.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stdin&sektion=4 -/// [NetBSD]: https://man.netbsd.org/stdin.4 -/// [OpenBSD]: https://man.openbsd.org/stdin.4 -/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stdin§ion=4 -/// [illumos]: https://illumos.org/man/4FS/stdin -/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stdin -#[doc(alias = "STDIN_FILENO")] -#[inline] -pub const fn raw_stdin() -> RawFd { - backend::io::types::STDIN_FILENO as RawFd -} - -/// `STDOUT_FILENO`—Standard output, raw. -/// -/// This is similar to [`stdout`], however it returns a `RawFd`. -/// -/// # Other hazards -/// -/// This has the same hazards as [`stdout`]. -/// -/// # References -/// - [POSIX] -/// - [Linux] -/// - [FreeBSD] -/// - [NetBSD] -/// - [OpenBSD] -/// - [DragonFly BSD] -/// - [illumos] -/// - [glibc] -/// -/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdout.html -/// [Linux]: https://man7.org/linux/man-pages/man3/stdout.3.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stdout&sektion=4 -/// [NetBSD]: https://man.netbsd.org/stdout.4 -/// [OpenBSD]: https://man.openbsd.org/stdout.4 -/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stdout§ion=4 -/// [illumos]: https://illumos.org/man/4FS/stdout -/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stdout -#[doc(alias = "STDOUT_FILENO")] -#[inline] -pub const fn raw_stdout() -> RawFd { - backend::io::types::STDOUT_FILENO as RawFd -} - -/// `STDERR_FILENO`—Standard error, raw. -/// -/// This is similar to [`stderr`], however it returns a `RawFd`. -/// -/// # Other hazards -/// -/// This has the same hazards as [`stderr`]. -/// -/// # References -/// - [POSIX] -/// - [Linux] -/// - [FreeBSD] -/// - [NetBSD] -/// - [OpenBSD] -/// - [DragonFly BSD] -/// - [illumos] -/// - [glibc] -/// -/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stderr.html -/// [Linux]: https://man7.org/linux/man-pages/man3/stderr.3.html -/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stderr&sektion=4 -/// [NetBSD]: https://man.netbsd.org/stderr.4 -/// [OpenBSD]: https://man.openbsd.org/stderr.4 -/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stderr§ion=4 -/// [illumos]: https://illumos.org/man/4FS/stderr -/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stderr -#[doc(alias = "STDERR_FILENO")] -#[inline] -pub const fn raw_stderr() -> RawFd { - backend::io::types::STDERR_FILENO as RawFd -} - -/// Utility function to safely `dup2` over stdin (fd 0). -#[cfg(not(any(windows, target_os = "wasi")))] -#[inline] -pub fn dup2_stdin(fd: Fd) -> io::Result<()> { - // SAFETY: We pass the returned `OwnedFd` to `forget` so that it isn't - // dropped. - let mut target = unsafe { io::take_stdin() }; - backend::io::syscalls::dup2(fd.as_fd(), &mut target)?; - forget(target); - Ok(()) -} - -/// Utility function to safely `dup2` over stdout (fd 1). -#[cfg(not(any(windows, target_os = "wasi")))] -#[inline] -pub fn dup2_stdout(fd: Fd) -> io::Result<()> { - // SAFETY: We pass the returned `OwnedFd` to `forget` so that it isn't - // dropped. - let mut target = unsafe { io::take_stdout() }; - backend::io::syscalls::dup2(fd.as_fd(), &mut target)?; - forget(target); - Ok(()) -} - -/// Utility function to safely `dup2` over stderr (fd 2). -#[cfg(not(any(windows, target_os = "wasi")))] -#[inline] -pub fn dup2_stderr(fd: Fd) -> io::Result<()> { - // SAFETY: We pass the returned `OwnedFd` to `forget` so that it isn't - // dropped. - let mut target = unsafe { io::take_stderr() }; - backend::io::syscalls::dup2(fd.as_fd(), &mut target)?; - forget(target); - Ok(()) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/io_uring.rs temporalio-1.3.0/vendor/rustix/src/io_uring.rs --- temporalio-1.3.0/vendor/rustix/src/io_uring.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/io_uring.rs 2023-10-30 19:40:00.000000000 +0000 @@ -27,9 +27,15 @@ use crate::fd::{AsFd, BorrowedFd, OwnedFd, RawFd}; use crate::{backend, io}; use core::ffi::c_void; -use core::mem::{zeroed, MaybeUninit}; +use core::mem::MaybeUninit; use core::ptr::{null_mut, write_bytes}; -use linux_raw_sys::general as sys; +use linux_raw_sys::net; + +mod sys { + pub(super) use linux_raw_sys::io_uring::*; + #[cfg(test)] + pub(super) use {crate::backend::c::iovec, linux_raw_sys::general::open_how}; +} /// `io_uring_setup(entries, params)`—Setup a context for performing /// asynchronous I/O. @@ -100,7 +106,8 @@ bitflags::bitflags! { /// `IORING_ENTER_*` flags for use with [`io_uring_enter`]. - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct IoringEnterFlags: u32 { /// `IORING_ENTER_GETEVENTS` const GETEVENTS = sys::IORING_ENTER_GETEVENTS; @@ -404,7 +411,8 @@ bitflags::bitflags! { /// `IORING_SETUP_*` flags for use with [`io_uring_params`]. - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct IoringSetupFlags: u32 { /// `IORING_SETUP_ATTACH_WQ` const ATTACH_WQ = sys::IORING_SETUP_ATTACH_WQ; @@ -452,7 +460,8 @@ bitflags::bitflags! { /// `IOSQE_*` flags for use with [`io_uring_sqe`]. - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct IoringSqeFlags: u8 { /// `1 << IOSQE_ASYNC_BIT` const ASYNC = 1 << sys::IOSQE_ASYNC_BIT as u8; @@ -479,25 +488,27 @@ bitflags::bitflags! { /// `IORING_CQE_F_*` flags for use with [`io_uring_cqe`]. - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct IoringCqeFlags: u32 { /// `IORING_CQE_F_BUFFER` - const BUFFER = sys::IORING_CQE_F_BUFFER as _; + const BUFFER = bitcast!(sys::IORING_CQE_F_BUFFER); /// `IORING_CQE_F_MORE` - const MORE = sys::IORING_CQE_F_MORE as _; + const MORE = bitcast!(sys::IORING_CQE_F_MORE); /// `IORING_CQE_F_SOCK_NONEMPTY` - const SOCK_NONEMPTY = sys::IORING_CQE_F_SOCK_NONEMPTY as _; + const SOCK_NONEMPTY = bitcast!(sys::IORING_CQE_F_SOCK_NONEMPTY); /// `IORING_CQE_F_NOTIF` - const NOTIF = sys::IORING_CQE_F_NOTIF as _; + const NOTIF = bitcast!(sys::IORING_CQE_F_NOTIF); } } bitflags::bitflags! { /// `IORING_FSYNC_*` flags for use with [`io_uring_sqe`]. - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct IoringFsyncFlags: u32 { /// `IORING_FSYNC_DATASYNC` const DATASYNC = sys::IORING_FSYNC_DATASYNC; @@ -507,7 +518,8 @@ bitflags::bitflags! { /// `IORING_TIMEOUT_*` and `IORING_LINK_TIMEOUT_UPDATE` flags for use with /// [`io_uring_sqe`]. - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct IoringTimeoutFlags: u32 { /// `IORING_TIMEOUT_ABS` const ABS = sys::IORING_TIMEOUT_ABS; @@ -537,7 +549,8 @@ bitflags::bitflags! { /// `SPLICE_F_*` flags for use with [`io_uring_sqe`]. - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct SpliceFlags: u32 { /// `SPLICE_F_FD_IN_FIXED` const FD_IN_FIXED = sys::SPLICE_F_FD_IN_FIXED; @@ -546,7 +559,8 @@ bitflags::bitflags! { /// `IORING_MSG_RING_*` flags for use with [`io_uring_sqe`]. - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct IoringMsgringFlags: u32 { /// `IORING_MSG_RING_CQE_SKIP` const CQE_SKIP = sys::IORING_MSG_RING_CQE_SKIP; @@ -555,7 +569,8 @@ bitflags::bitflags! { /// `IORING_ASYNC_CANCEL_*` flags for use with [`io_uring_sqe`]. - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct IoringAsyncCancelFlags: u32 { /// `IORING_ASYNC_CANCEL_ALL` const ALL = sys::IORING_ASYNC_CANCEL_ALL; @@ -573,7 +588,8 @@ bitflags::bitflags! { /// `IORING_FEAT_*` flags for use with [`io_uring_params`]. - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct IoringFeatureFlags: u32 { /// `IORING_FEAT_CQE_SKIP` const CQE_SKIP = sys::IORING_FEAT_CQE_SKIP; @@ -618,7 +634,8 @@ bitflags::bitflags! { /// `IO_URING_OP_*` flags for use with [`io_uring_probe_op`]. - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct IoringOpFlags: u16 { /// `IO_URING_OP_SUPPORTED` const SUPPORTED = sys::IO_URING_OP_SUPPORTED as _; @@ -627,7 +644,8 @@ bitflags::bitflags! { /// `IORING_RSRC_*` flags for use with [`io_uring_rsrc_register`]. - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct IoringRsrcFlags: u32 { /// `IORING_RSRC_REGISTER_SPARSE` const REGISTER_SPARSE = sys::IORING_RSRC_REGISTER_SPARSE as _; @@ -636,7 +654,8 @@ bitflags::bitflags! { /// `IORING_SQ_*` flags. - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct IoringSqFlags: u32 { /// `IORING_SQ_NEED_WAKEUP` const NEED_WAKEUP = sys::IORING_SQ_NEED_WAKEUP; @@ -651,7 +670,8 @@ bitflags::bitflags! { /// `IORING_CQ_*` flags. - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct IoringCqFlags: u32 { /// `IORING_CQ_EVENTFD_DISABLED` const EVENTFD_DISABLED = sys::IORING_CQ_EVENTFD_DISABLED; @@ -660,7 +680,8 @@ bitflags::bitflags! { /// `IORING_POLL_*` flags. - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct IoringPollFlags: u32 { /// `IORING_POLL_ADD_MULTI` const ADD_MULTI = sys::IORING_POLL_ADD_MULTI; @@ -678,7 +699,8 @@ bitflags::bitflags! { /// send/sendmsg flags (`sqe.ioprio`) - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct IoringSendFlags: u16 { /// `IORING_RECVSEND_POLL_FIRST`. /// @@ -697,7 +719,8 @@ bitflags::bitflags! { /// recv/recvmsg flags (`sqe.ioprio`) - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct IoringRecvFlags: u16 { /// `IORING_RECVSEND_POLL_FIRST` /// @@ -716,7 +739,8 @@ bitflags::bitflags! { /// accept flags (`sqe.ioprio`) - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct IoringAcceptFlags: u16 { /// `IORING_ACCEPT_MULTISHOT` const MULTISHOT = sys::IORING_ACCEPT_MULTISHOT as _; @@ -725,22 +749,23 @@ bitflags::bitflags! { /// recvmsg out flags - #[derive(Default)] + #[repr(transparent)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct RecvmsgOutFlags: u32 { /// `MSG_EOR` - const EOR = sys::MSG_EOR; + const EOR = net::MSG_EOR; /// `MSG_TRUNC` - const TRUNC = sys::MSG_TRUNC; + const TRUNC = net::MSG_TRUNC; /// `MSG_CTRUNC` - const CTRUNC = sys::MSG_CTRUNC; + const CTRUNC = net::MSG_CTRUNC; /// `MSG_OOB` - const OOB = sys::MSG_OOB; + const OOB = net::MSG_OOB; /// `MSG_ERRQUEUE` - const ERRQUEUE = sys::MSG_ERRQUEUE; + const ERRQUEUE = net::MSG_ERRQUEUE; } } @@ -1011,13 +1036,17 @@ } /// An io_uring Completion Queue Entry. +/// +/// This does not derive `Copy` or `Clone` because the `big_cqe` field is not +/// automatically copyable. #[allow(missing_docs)] #[repr(C)] -#[derive(Debug, Copy, Clone, Default)] +#[derive(Debug, Default)] pub struct io_uring_cqe { pub user_data: io_uring_user_data, pub res: i32, pub flags: IoringCqeFlags, + pub big_cqe: sys::__IncompleteArrayField, } #[allow(missing_docs)] @@ -1216,72 +1245,63 @@ impl Default for ioprio_union { #[inline] fn default() -> Self { - // SAFETY: All of Linux's io_uring structs may be zero-initialized. - unsafe { zeroed::() } + default_union!(ioprio_union, ioprio) } } impl Default for len_union { #[inline] fn default() -> Self { - // SAFETY: All of Linux's io_uring structs may be zero-initialized. - unsafe { zeroed::() } + default_union!(len_union, len) } } impl Default for off_or_addr2_union { #[inline] fn default() -> Self { - // SAFETY: All of Linux's io_uring structs may be zero-initialized. - unsafe { zeroed::() } + default_union!(off_or_addr2_union, off) } } impl Default for addr_or_splice_off_in_union { #[inline] fn default() -> Self { - // SAFETY: All of Linux's io_uring structs may be zero-initialized. - unsafe { zeroed::() } + default_union!(addr_or_splice_off_in_union, splice_off_in) } } impl Default for addr3_or_cmd_union { #[inline] fn default() -> Self { - // SAFETY: All of Linux's io_uring structs may be zero-initialized. - unsafe { zeroed::() } + default_union!(addr3_or_cmd_union, addr3) } } impl Default for op_flags_union { #[inline] fn default() -> Self { - // SAFETY: All of Linux's io_uring structs may be zero-initialized. - unsafe { zeroed::() } + default_union!(op_flags_union, sync_range_flags) } } impl Default for buf_union { #[inline] fn default() -> Self { - // SAFETY: All of Linux's io_uring structs may be zero-initialized. - unsafe { zeroed::() } + default_union!(buf_union, buf_index) } } impl Default for splice_fd_in_or_file_index_union { #[inline] fn default() -> Self { - // SAFETY: All of Linux's io_uring structs may be zero-initialized. - unsafe { zeroed::() } + default_union!(splice_fd_in_or_file_index_union, splice_fd_in) } } impl Default for register_or_sqe_op_or_sqe_flags_union { #[inline] fn default() -> Self { - // SAFETY: All of Linux's io_uring structs may be zero-initialized. - unsafe { zeroed::() } + default_union!(register_or_sqe_op_or_sqe_flags_union, sqe_flags) } } @@ -1289,67 +1309,7 @@ /// kernel's versions. #[test] fn io_uring_layouts() { - use core::mem::{align_of, size_of}; - use memoffset::{offset_of, span_of}; - - // Check that the size and alignment of a type match the `sys` bindings. - macro_rules! check_type { - ($struct:ident) => { - assert_eq!( - (size_of::<$struct>(), align_of::<$struct>()), - (size_of::(), align_of::()) - ); - }; - } - - // The same as `check_type`, but for unions and anonymous structs we've - // renamed to avoid having types like "bindgen_ty_1" in the API. - macro_rules! check_renamed_type { - ($to:ident, $from:ident) => { - assert_eq!( - (size_of::<$to>(), align_of::<$to>()), - (size_of::(), align_of::()) - ); - }; - } - - // Check that the field of a struct has the same offset as the - // corresponding field in the `sys` bindings. - macro_rules! check_struct_field { - ($struct:ident, $field:ident) => { - assert_eq!( - offset_of!($struct, $field), - offset_of!(sys::$struct, $field) - ); - assert_eq!(span_of!($struct, $field), span_of!(sys::$struct, $field)); - }; - } - - // The same as `check_struct_field`, but for unions and anonymous structs - // we've renamed to avoid having types like "bindgen_ty_1" in the API. - macro_rules! check_struct_renamed_field { - ($struct:ident, $to:ident, $from:ident) => { - assert_eq!(offset_of!($struct, $to), offset_of!(sys::$struct, $from)); - assert_eq!(span_of!($struct, $to), span_of!(sys::$struct, $from)); - }; - } - - // For the common case of no renaming, check all fields of a struct. - macro_rules! check_struct { - ($name:ident, $($field:ident),*) => { - // Check the size and alignment. - check_type!($name); - - // Check that we have all the fields. - let _test = $name { - // SAFETY: All of io_uring's types can be zero-initialized. - $($field: unsafe { core::mem::zeroed() }),* - }; - - // Check that the fields have the right sizes and offsets. - $(check_struct_field!($name, $field));* - }; - } + use sys as c; check_renamed_type!(off_or_addr2_union, io_uring_sqe__bindgen_ty_1); check_renamed_type!(addr_or_splice_off_in_union, io_uring_sqe__bindgen_ty_2); @@ -1390,7 +1350,7 @@ check_struct_field!(io_uring_restriction, resv); check_struct_field!(io_uring_restriction, resv2); - check_struct!(io_uring_cqe, user_data, res, flags); + check_struct!(io_uring_cqe, user_data, res, flags, big_cqe); check_struct!( io_uring_params, sq_entries, diff -Nru temporalio-1.3.0/vendor/rustix/src/lib.rs temporalio-1.3.0/vendor/rustix/src/lib.rs --- temporalio-1.3.0/vendor/rustix/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -19,7 +19,6 @@ //! ``` //! # #[cfg(feature = "net")] //! # fn read(sock: std::net::TcpStream, buf: &mut [u8]) -> std::io::Result<()> { -//! # use std::convert::TryInto; //! # #[cfg(unix)] //! # use std::os::unix::io::AsRawFd; //! # #[cfg(target_os = "wasi")] @@ -101,15 +100,10 @@ #![cfg_attr(rustc_attrs, feature(rustc_attrs))] #![cfg_attr(doc_cfg, feature(doc_cfg))] #![cfg_attr(all(wasi_ext, target_os = "wasi", feature = "std"), feature(wasi_ext))] -#![cfg_attr( - all(linux_raw, naked_functions, target_arch = "x86"), - feature(naked_functions) -)] -#![cfg_attr(io_lifetimes_use_std, feature(io_safety))] #![cfg_attr(core_ffi_c, feature(core_ffi_c))] #![cfg_attr(core_c_str, feature(core_c_str))] -#![cfg_attr(alloc_c_string, feature(alloc_ffi))] #![cfg_attr(alloc_c_string, feature(alloc_c_string))] +#![cfg_attr(alloc_ffi, feature(alloc_ffi))] #![cfg_attr(not(feature = "std"), no_std)] #![cfg_attr(feature = "rustc-dep-of-std", feature(ip))] #![cfg_attr( @@ -118,26 +112,42 @@ )] #![cfg_attr(asm_experimental_arch, feature(asm_experimental_arch))] #![cfg_attr(not(feature = "all-apis"), allow(dead_code))] -// Clamp depends on Rust 1.50 which is newer than our MSRV. -#![allow(clippy::manual_clamp)] // It is common in linux and libc APIs for types to vary between platforms. #![allow(clippy::unnecessary_cast)] // It is common in linux and libc APIs for types to vary between platforms. #![allow(clippy::useless_conversion)] -// Redox and WASI have enough differences that it isn't worth -// precisely conditionallizing all the `use`s for them. +// Redox and WASI have enough differences that it isn't worth precisely +// conditionalizing all the `use`s for them. #![cfg_attr(any(target_os = "redox", target_os = "wasi"), allow(unused_imports))] #[cfg(not(feature = "rustc-dep-of-std"))] extern crate alloc; +// Use `static_assertions` macros if we have them, or a polyfill otherwise. +#[cfg(all(test, static_assertions))] +#[macro_use] +#[allow(unused_imports)] +extern crate static_assertions; +#[cfg(all(test, not(static_assertions)))] +#[macro_use] +#[allow(unused_imports)] +mod static_assertions; + // Internal utilities. #[cfg(not(windows))] #[macro_use] pub(crate) mod cstr; #[macro_use] -pub(crate) mod const_assert; pub(crate) mod utils; +// Polyfill for `std` in `no_std` builds. +#[cfg_attr(feature = "std", path = "maybe_polyfill/std/mod.rs")] +#[cfg_attr(not(feature = "std"), path = "maybe_polyfill/no_std/mod.rs")] +pub(crate) mod maybe_polyfill; +#[cfg(test)] +#[macro_use] +pub(crate) mod check_types; +#[macro_use] +pub(crate) mod bitcast; // linux_raw: Weak symbols are used by the use-libc-auxv feature for // glibc 2.15 support. @@ -146,7 +156,7 @@ // versions of libc and not others. #[cfg(any( all(linux_raw, feature = "use-libc-auxv"), - all(libc, not(any(windows, target_os = "wasi"))) + all(libc, not(any(windows, target_os = "espidf", target_os = "wasi"))) ))] #[macro_use] mod weak; @@ -163,16 +173,37 @@ /// versions of these types and traits. pub mod fd { use super::backend; + + // Re-export `AsSocket` etc. too, as users can't implement `AsFd` etc. on + // Windows due to them having blanket impls on Windows, so users must + // implement `AsSocket` etc. #[cfg(windows)] - pub use backend::fd::AsSocket; + pub use backend::fd::{AsRawSocket, AsSocket, FromRawSocket, IntoRawSocket}; + pub use backend::fd::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd}; } // The public API modules. +#[cfg(feature = "event")] +#[cfg_attr(doc_cfg, doc(cfg(feature = "event")))] +pub mod event; #[cfg(not(windows))] pub mod ffi; #[cfg(not(windows))] -#[cfg(feature = "fs")] +#[cfg(any( + feature = "fs", + all( + linux_raw, + not(feature = "use-libc-auxv"), + not(target_vendor = "mustang"), + any( + feature = "param", + feature = "runtime", + feature = "time", + target_arch = "x86", + ) + ) +))] #[cfg_attr(doc_cfg, doc(cfg(feature = "fs")))] pub mod fs; pub mod io; @@ -180,26 +211,56 @@ #[cfg(feature = "io_uring")] #[cfg_attr(doc_cfg, doc(cfg(feature = "io_uring")))] pub mod io_uring; -#[cfg(not(any(windows, target_os = "wasi")))] +#[cfg(not(any(windows, target_os = "espidf", target_os = "wasi")))] #[cfg(feature = "mm")] #[cfg_attr(doc_cfg, doc(cfg(feature = "mm")))] pub mod mm; +#[cfg(linux_kernel)] +#[cfg(feature = "mount")] +#[cfg_attr(doc_cfg, doc(cfg(feature = "mount")))] +pub mod mount; #[cfg(not(any(target_os = "redox", target_os = "wasi")))] #[cfg(feature = "net")] #[cfg_attr(doc_cfg, doc(cfg(feature = "net")))] pub mod net; -#[cfg(not(windows))] +#[cfg(not(any(windows, target_os = "espidf")))] #[cfg(feature = "param")] #[cfg_attr(doc_cfg, doc(cfg(feature = "param")))] pub mod param; #[cfg(not(windows))] -#[cfg(any(feature = "fs", feature = "net"))] -#[cfg_attr(doc_cfg, doc(cfg(any(feature = "fs", feature = "net"))))] +#[cfg(any( + feature = "fs", + feature = "mount", + feature = "net", + all( + linux_raw, + not(feature = "use-libc-auxv"), + not(target_vendor = "mustang"), + any( + feature = "param", + feature = "runtime", + feature = "time", + target_arch = "x86", + ) + ) +))] +#[cfg_attr( + doc_cfg, + doc(cfg(any(feature = "fs", feature = "mount", feature = "net"))) +)] pub mod path; +#[cfg(feature = "pipe")] +#[cfg_attr(doc_cfg, doc(cfg(feature = "pipe")))] +#[cfg(not(any(windows, target_os = "wasi")))] +pub mod pipe; #[cfg(not(windows))] #[cfg(feature = "process")] #[cfg_attr(doc_cfg, doc(cfg(feature = "process")))] pub mod process; +#[cfg(feature = "procfs")] +#[cfg(linux_kernel)] +#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))] +pub mod procfs; #[cfg(not(windows))] #[cfg(not(target_os = "wasi"))] #[cfg(feature = "pty")] @@ -210,6 +271,14 @@ #[cfg_attr(doc_cfg, doc(cfg(feature = "rand")))] pub mod rand; #[cfg(not(windows))] +#[cfg(feature = "stdio")] +#[cfg_attr(doc_cfg, doc(cfg(feature = "stdio")))] +pub mod stdio; +#[cfg(feature = "system")] +#[cfg(not(any(windows, target_os = "wasi")))] +#[cfg_attr(doc_cfg, doc(cfg(feature = "system")))] +pub mod system; +#[cfg(not(windows))] #[cfg(feature = "termios")] #[cfg_attr(doc_cfg, doc(cfg(feature = "termios")))] pub mod termios; @@ -217,7 +286,7 @@ #[cfg(feature = "thread")] #[cfg_attr(doc_cfg, doc(cfg(feature = "thread")))] pub mod thread; -#[cfg(not(windows))] +#[cfg(not(any(windows, target_os = "espidf")))] #[cfg(feature = "time")] #[cfg_attr(doc_cfg, doc(cfg(feature = "time")))] pub mod time; @@ -225,37 +294,71 @@ // "runtime" is also a public API module, but it's only for libc-like users. #[cfg(not(windows))] #[cfg(feature = "runtime")] +#[cfg(linux_raw)] #[doc(hidden)] #[cfg_attr(doc_cfg, doc(cfg(feature = "runtime")))] pub mod runtime; -// We have some internal interdependencies in the API features, so for now, -// for API features that aren't enabled, declare them as `pub(crate)` so -// that they're not public, but still available for internal use. - -#[cfg(all( - linux_raw, - not(windows), - not(feature = "fs"), - not(feature = "use-libc-auxv"), - not(target_vendor = "mustang"), - any( - feature = "param", - feature = "runtime", - feature = "time", - target_arch = "x86", - ) +// Temporarily provide some mount functions for use in the fs module for +// backwards compatibility. +#[cfg(linux_kernel)] +#[cfg(all(feature = "fs", not(feature = "mount")))] +pub(crate) mod mount; + +// Private modules used by multiple public modules. +#[cfg(not(any(windows, target_os = "espidf")))] +#[cfg(any(feature = "thread", feature = "time", target_arch = "x86"))] +mod clockid; +#[cfg(not(any(windows, target_os = "wasi")))] +#[cfg(any( + feature = "procfs", + feature = "process", + feature = "runtime", + feature = "termios", + feature = "thread", + all(bsd, feature = "event") ))] -pub(crate) mod fs; +mod pid; +#[cfg(any(feature = "process", feature = "thread"))] +#[cfg(linux_kernel)] +mod prctl; +#[cfg(not(any(windows, target_os = "espidf", target_os = "wasi")))] +#[cfg(any(feature = "process", feature = "runtime", all(bsd, feature = "event")))] +mod signal; #[cfg(not(windows))] -#[cfg(all( - not(feature = "param"), - any(feature = "runtime", feature = "time", target_arch = "x86"), +#[cfg(any( + feature = "fs", + feature = "runtime", + feature = "thread", + feature = "time", + all( + linux_raw, + not(feature = "use-libc-auxv"), + not(target_vendor = "mustang"), + any( + feature = "param", + feature = "runtime", + feature = "time", + target_arch = "x86", + ) + ) ))] -pub(crate) mod param; -#[cfg(not(windows))] -#[cfg(not(any(feature = "fs", feature = "net")))] -pub(crate) mod path; -#[cfg(not(windows))] -#[cfg(not(feature = "process"))] -pub(crate) mod process; +mod timespec; +#[cfg(not(any(windows, target_os = "wasi")))] +#[cfg(any( + feature = "fs", + feature = "process", + feature = "thread", + all( + linux_raw, + not(feature = "use-libc-auxv"), + not(target_vendor = "mustang"), + any( + feature = "param", + feature = "runtime", + feature = "time", + target_arch = "x86", + ) + ) +))] +mod ugid; diff -Nru temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/io/mod.rs temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/io/mod.rs --- temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/io/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/io/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,107 @@ +//! The following is derived from Rust's +//! library/std/src/sys/unix/io.rs +//! dca3f1b786efd27be3b325ed1e01e247aa589c3b. +//! +//! All code in this file is licensed MIT or Apache 2.0 at your option. + +#![allow(unsafe_code)] +use crate::backend::c; +#[cfg(not(linux_raw))] +use c::size_t as __kernel_size_t; +use core::marker::PhantomData; +use core::slice; +#[cfg(linux_raw)] +use linux_raw_sys::general::__kernel_size_t; + +/// +#[derive(Copy, Clone)] +#[repr(transparent)] +pub struct IoSlice<'a> { + vec: c::iovec, + _p: PhantomData<&'a [u8]>, +} + +impl<'a> IoSlice<'a> { + /// + #[inline] + pub fn new(buf: &'a [u8]) -> IoSlice<'a> { + IoSlice { + vec: c::iovec { + iov_base: buf.as_ptr() as *mut u8 as *mut c::c_void, + iov_len: buf.len() as _, + }, + _p: PhantomData, + } + } + + /// + #[inline] + pub fn advance(&mut self, n: usize) { + if self.vec.iov_len < n as _ { + panic!("advancing IoSlice beyond its length"); + } + + unsafe { + // `__kernel_size_t` will always have the same size as `usize`, but it is a `u32` on + // 32-bit platforms and `u64` on 64-bit platforms when using `linux_raw` backend + self.vec.iov_len -= n as __kernel_size_t; + self.vec.iov_base = self.vec.iov_base.add(n); + } + } + + /// + #[inline] + pub fn as_slice(&self) -> &[u8] { + unsafe { slice::from_raw_parts(self.vec.iov_base as *mut u8, self.vec.iov_len as usize) } + } +} + +/// +#[repr(transparent)] +pub struct IoSliceMut<'a> { + vec: c::iovec, + _p: PhantomData<&'a mut [u8]>, +} + +impl<'a> IoSliceMut<'a> { + /// + #[inline] + pub fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> { + IoSliceMut { + vec: c::iovec { + iov_base: buf.as_mut_ptr() as *mut c::c_void, + iov_len: buf.len() as _, + }, + _p: PhantomData, + } + } + + /// + #[inline] + pub fn advance(&mut self, n: usize) { + if self.vec.iov_len < n as _ { + panic!("advancing IoSliceMut beyond its length"); + } + + unsafe { + // `__kernel_size_t` will always have the same size as `usize`, but it is a `u32` on + // 32-bit platforms and `u64` on 64-bit platforms when using `linux_raw` backend + self.vec.iov_len -= n as __kernel_size_t; + self.vec.iov_base = self.vec.iov_base.add(n); + } + } + + /// + #[inline] + pub fn as_slice(&self) -> &[u8] { + unsafe { slice::from_raw_parts(self.vec.iov_base as *mut u8, self.vec.iov_len as usize) } + } + + /// + #[inline] + pub fn as_mut_slice(&mut self) -> &mut [u8] { + unsafe { + slice::from_raw_parts_mut(self.vec.iov_base as *mut u8, self.vec.iov_len as usize) + } + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/mod.rs temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/mod.rs --- temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,16 @@ +//! Polyfill of parts of the standard library for `no_std` builds. +//! +//! All code in this subtree is derived from the standard library and licensed +//! MIT or Apache 2.0 at your option. +//! +//! This implementation is used when `std` is not available and polyfills the +//! necessary items from `std`. When the `std` feature is specified (so the +//! standard library is available), the file `src/polyfill/std` is used +//! instead, which just imports the respective items from `std`. + +#[cfg(not(windows))] +pub mod io; +#[cfg(not(any(target_os = "redox", target_os = "wasi")))] +#[cfg(feature = "net")] +pub mod net; +pub mod os; diff -Nru temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/net/ip_addr.rs temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/net/ip_addr.rs --- temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/net/ip_addr.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/net/ip_addr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,2068 @@ +//! The following is derived from Rust's +//! library/std/src/net/ip_addr.rs at revision +//! bd20fc1fd657b32f7aa1d70d8723f04c87f21606. +//! +//! All code in this file is licensed MIT or Apache 2.0 at your option. +//! +//! This defines `IpAddr`, `Ipv4Addr`, and `Ipv6Addr`. Ideally, these should be +//! defined in `core`. See [RFC 2832]. +//! +//! [RFC 2832]: https://github.com/rust-lang/rfcs/pull/2832 + +#![allow(unsafe_code)] + +use core::cmp::Ordering; +use core::mem::transmute; + +/// An IP address, either IPv4 or IPv6. +/// +/// This enum can contain either an [`Ipv4Addr`] or an [`Ipv6Addr`], see their +/// respective documentation for more details. +/// +/// # Examples +/// +/// ``` +/// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; +/// +/// let localhost_v4 = IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)); +/// let localhost_v6 = IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1)); +/// +/// assert_eq!("127.0.0.1".parse(), Ok(localhost_v4)); +/// assert_eq!("::1".parse(), Ok(localhost_v6)); +/// +/// assert_eq!(localhost_v4.is_ipv6(), false); +/// assert_eq!(localhost_v4.is_ipv4(), true); +/// ``` +#[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))] +#[derive(Copy, Clone, Eq, PartialEq, Hash, PartialOrd, Ord)] +pub enum IpAddr { + /// An IPv4 address. + #[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))] + V4(#[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))] Ipv4Addr), + /// An IPv6 address. + #[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))] + V6(#[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))] Ipv6Addr), +} + +/// An IPv4 address. +/// +/// IPv4 addresses are defined as 32-bit integers in [IETF RFC 791]. +/// They are usually represented as four octets. +/// +/// See [`IpAddr`] for a type encompassing both IPv4 and IPv6 addresses. +/// +/// [IETF RFC 791]: https://tools.ietf.org/html/rfc791 +/// +/// # Textual representation +/// +/// `Ipv4Addr` provides a [`FromStr`] implementation. The four octets are in decimal +/// notation, divided by `.` (this is called "dot-decimal notation"). +/// Notably, octal numbers (which are indicated with a leading `0`) and hexadecimal numbers (which +/// are indicated with a leading `0x`) are not allowed per [IETF RFC 6943]. +/// +/// [IETF RFC 6943]: https://tools.ietf.org/html/rfc6943#section-3.1.1 +/// [`FromStr`]: core::str::FromStr +/// +/// # Examples +/// +/// ``` +/// use std::net::Ipv4Addr; +/// +/// let localhost = Ipv4Addr::new(127, 0, 0, 1); +/// assert_eq!("127.0.0.1".parse(), Ok(localhost)); +/// assert_eq!(localhost.is_loopback(), true); +/// assert!("012.004.002.000".parse::().is_err()); // all octets are in octal +/// assert!("0000000.0.0.0".parse::().is_err()); // first octet is a zero in octal +/// assert!("0xcb.0x0.0x71.0x00".parse::().is_err()); // all octets are in hex +/// ``` +#[derive(Copy, Clone, PartialEq, Eq, Hash)] +#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] +pub struct Ipv4Addr { + octets: [u8; 4], +} + +/// An IPv6 address. +/// +/// IPv6 addresses are defined as 128-bit integers in [IETF RFC 4291]. +/// They are usually represented as eight 16-bit segments. +/// +/// [IETF RFC 4291]: https://tools.ietf.org/html/rfc4291 +/// +/// # Embedding IPv4 Addresses +/// +/// See [`IpAddr`] for a type encompassing both IPv4 and IPv6 addresses. +/// +/// To assist in the transition from IPv4 to IPv6 two types of IPv6 addresses that embed an IPv4 address were defined: +/// IPv4-compatible and IPv4-mapped addresses. Of these IPv4-compatible addresses have been officially deprecated. +/// +/// Both types of addresses are not assigned any special meaning by this implementation, +/// other than what the relevant standards prescribe. This means that an address like `::ffff:127.0.0.1`, +/// while representing an IPv4 loopback address, is not itself an IPv6 loopback address; only `::1` is. +/// To handle these so called "IPv4-in-IPv6" addresses, they have to first be converted to their canonical IPv4 address. +/// +/// ### IPv4-Compatible IPv6 Addresses +/// +/// IPv4-compatible IPv6 addresses are defined in [IETF RFC 4291 Section 2.5.5.1], and have been officially deprecated. +/// The RFC describes the format of an "IPv4-Compatible IPv6 address" as follows: +/// +/// ```text +/// | 80 bits | 16 | 32 bits | +/// +--------------------------------------+--------------------------+ +/// |0000..............................0000|0000| IPv4 address | +/// +--------------------------------------+----+---------------------+ +/// ``` +/// So `::a.b.c.d` would be an IPv4-compatible IPv6 address representing the IPv4 address `a.b.c.d`. +/// +/// To convert from an IPv4 address to an IPv4-compatible IPv6 address, use [`Ipv4Addr::to_ipv6_compatible`]. +/// Use [`Ipv6Addr::to_ipv4`] to convert an IPv4-compatible IPv6 address to the canonical IPv4 address. +/// +/// [IETF RFC 4291 Section 2.5.5.1]: https://datatracker.ietf.org/doc/html/rfc4291#section-2.5.5.1 +/// +/// ### IPv4-Mapped IPv6 Addresses +/// +/// IPv4-mapped IPv6 addresses are defined in [IETF RFC 4291 Section 2.5.5.2]. +/// The RFC describes the format of an "IPv4-Mapped IPv6 address" as follows: +/// +/// ```text +/// | 80 bits | 16 | 32 bits | +/// +--------------------------------------+--------------------------+ +/// |0000..............................0000|FFFF| IPv4 address | +/// +--------------------------------------+----+---------------------+ +/// ``` +/// So `::ffff:a.b.c.d` would be an IPv4-mapped IPv6 address representing the IPv4 address `a.b.c.d`. +/// +/// To convert from an IPv4 address to an IPv4-mapped IPv6 address, use [`Ipv4Addr::to_ipv6_mapped`]. +/// Use [`Ipv6Addr::to_ipv4`] to convert an IPv4-mapped IPv6 address to the canonical IPv4 address. +/// Note that this will also convert the IPv6 loopback address `::1` to `0.0.0.1`. Use +/// [`Ipv6Addr::to_ipv4_mapped`] to avoid this. +/// +/// [IETF RFC 4291 Section 2.5.5.2]: https://datatracker.ietf.org/doc/html/rfc4291#section-2.5.5.2 +/// +/// # Textual representation +/// +/// `Ipv6Addr` provides a [`FromStr`] implementation. There are many ways to represent +/// an IPv6 address in text, but in general, each segments is written in hexadecimal +/// notation, and segments are separated by `:`. For more information, see +/// [IETF RFC 5952]. +/// +/// [`FromStr`]: core::str::FromStr +/// [IETF RFC 5952]: https://tools.ietf.org/html/rfc5952 +/// +/// # Examples +/// +/// ``` +/// use std::net::Ipv6Addr; +/// +/// let localhost = Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1); +/// assert_eq!("::1".parse(), Ok(localhost)); +/// assert_eq!(localhost.is_loopback(), true); +/// ``` +#[derive(Copy, Clone, PartialEq, Eq, Hash)] +#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] +pub struct Ipv6Addr { + octets: [u8; 16], +} + +/// Scope of an [IPv6 multicast address] as defined in [IETF RFC 7346 section 2]. +/// +/// # Stability Guarantees +/// +/// Not all possible values for a multicast scope have been assigned. +/// Future RFCs may introduce new scopes, which will be added as variants to this enum; +/// because of this the enum is marked as `#[non_exhaustive]`. +/// +/// # Examples +/// ``` +/// #![feature(ip)] +/// +/// use std::net::Ipv6Addr; +/// use std::net::Ipv6MulticastScope::*; +/// +/// // An IPv6 multicast address with global scope (`ff0e::`). +/// let address = Ipv6Addr::new(0xff0e, 0, 0, 0, 0, 0, 0, 0); +/// +/// // Will print "Global scope". +/// match address.multicast_scope() { +/// Some(InterfaceLocal) => println!("Interface-Local scope"), +/// Some(LinkLocal) => println!("Link-Local scope"), +/// Some(RealmLocal) => println!("Realm-Local scope"), +/// Some(AdminLocal) => println!("Admin-Local scope"), +/// Some(SiteLocal) => println!("Site-Local scope"), +/// Some(OrganizationLocal) => println!("Organization-Local scope"), +/// Some(Global) => println!("Global scope"), +/// Some(_) => println!("Unknown scope"), +/// None => println!("Not a multicast address!") +/// } +/// +/// ``` +/// +/// [IPv6 multicast address]: Ipv6Addr +/// [IETF RFC 7346 section 2]: https://tools.ietf.org/html/rfc7346#section-2 +#[derive(Copy, PartialEq, Eq, Clone, Hash, Debug)] +#[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] +#[non_exhaustive] +pub enum Ipv6MulticastScope { + /// Interface-Local scope. + InterfaceLocal, + /// Link-Local scope. + LinkLocal, + /// Realm-Local scope. + RealmLocal, + /// Admin-Local scope. + AdminLocal, + /// Site-Local scope. + SiteLocal, + /// Organization-Local scope. + OrganizationLocal, + /// Global scope. + Global, +} + +impl IpAddr { + /// Returns [`true`] for the special 'unspecified' address. + /// + /// See the documentation for [`Ipv4Addr::is_unspecified()`] and + /// [`Ipv6Addr::is_unspecified()`] for more details. + /// + /// # Examples + /// + /// ``` + /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; + /// + /// assert_eq!(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)).is_unspecified(), true); + /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0)).is_unspecified(), true); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(feature = "ip_shared", since = "1.12.0"))] + #[must_use] + #[inline] + pub const fn is_unspecified(&self) -> bool { + match self { + IpAddr::V4(ip) => ip.is_unspecified(), + IpAddr::V6(ip) => ip.is_unspecified(), + } + } + + /// Returns [`true`] if this is a loopback address. + /// + /// See the documentation for [`Ipv4Addr::is_loopback()`] and + /// [`Ipv6Addr::is_loopback()`] for more details. + /// + /// # Examples + /// + /// ``` + /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; + /// + /// assert_eq!(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)).is_loopback(), true); + /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0x1)).is_loopback(), true); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(feature = "ip_shared", since = "1.12.0"))] + #[must_use] + #[inline] + pub const fn is_loopback(&self) -> bool { + match self { + IpAddr::V4(ip) => ip.is_loopback(), + IpAddr::V6(ip) => ip.is_loopback(), + } + } + + /// Returns [`true`] if the address appears to be globally routable. + /// + /// See the documentation for [`Ipv4Addr::is_global()`] and + /// [`Ipv6Addr::is_global()`] for more details. + /// + /// # Examples + /// + /// ``` + /// #![feature(ip)] + /// + /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; + /// + /// assert_eq!(IpAddr::V4(Ipv4Addr::new(80, 9, 12, 3)).is_global(), true); + /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0x1c9, 0, 0, 0xafc8, 0, 0x1)).is_global(), true); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_ip", issue = "76205") + )] + #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] + #[must_use] + #[inline] + pub const fn is_global(&self) -> bool { + match self { + IpAddr::V4(ip) => ip.is_global(), + IpAddr::V6(ip) => ip.is_global(), + } + } + + /// Returns [`true`] if this is a multicast address. + /// + /// See the documentation for [`Ipv4Addr::is_multicast()`] and + /// [`Ipv6Addr::is_multicast()`] for more details. + /// + /// # Examples + /// + /// ``` + /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; + /// + /// assert_eq!(IpAddr::V4(Ipv4Addr::new(224, 254, 0, 0)).is_multicast(), true); + /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0)).is_multicast(), true); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(feature = "ip_shared", since = "1.12.0"))] + #[must_use] + #[inline] + pub const fn is_multicast(&self) -> bool { + match self { + IpAddr::V4(ip) => ip.is_multicast(), + IpAddr::V6(ip) => ip.is_multicast(), + } + } + + /// Returns [`true`] if this address is in a range designated for documentation. + /// + /// See the documentation for [`Ipv4Addr::is_documentation()`] and + /// [`Ipv6Addr::is_documentation()`] for more details. + /// + /// # Examples + /// + /// ``` + /// #![feature(ip)] + /// + /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; + /// + /// assert_eq!(IpAddr::V4(Ipv4Addr::new(203, 0, 113, 6)).is_documentation(), true); + /// assert_eq!( + /// IpAddr::V6(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0)).is_documentation(), + /// true + /// ); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_ip", issue = "76205") + )] + #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] + #[must_use] + #[inline] + pub const fn is_documentation(&self) -> bool { + match self { + IpAddr::V4(ip) => ip.is_documentation(), + IpAddr::V6(ip) => ip.is_documentation(), + } + } + + /// Returns [`true`] if this address is in a range designated for benchmarking. + /// + /// See the documentation for [`Ipv4Addr::is_benchmarking()`] and + /// [`Ipv6Addr::is_benchmarking()`] for more details. + /// + /// # Examples + /// + /// ``` + /// #![feature(ip)] + /// + /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; + /// + /// assert_eq!(IpAddr::V4(Ipv4Addr::new(198, 19, 255, 255)).is_benchmarking(), true); + /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0x2001, 0x2, 0, 0, 0, 0, 0, 0)).is_benchmarking(), true); + /// ``` + #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] + #[must_use] + #[inline] + pub const fn is_benchmarking(&self) -> bool { + match self { + IpAddr::V4(ip) => ip.is_benchmarking(), + IpAddr::V6(ip) => ip.is_benchmarking(), + } + } + + /// Returns [`true`] if this address is an [`IPv4` address], and [`false`] + /// otherwise. + /// + /// [`IPv4` address]: IpAddr::V4 + /// + /// # Examples + /// + /// ``` + /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; + /// + /// assert_eq!(IpAddr::V4(Ipv4Addr::new(203, 0, 113, 6)).is_ipv4(), true); + /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0)).is_ipv4(), false); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(feature = "ipaddr_checker", since = "1.16.0"))] + #[must_use] + #[inline] + pub const fn is_ipv4(&self) -> bool { + matches!(self, IpAddr::V4(_)) + } + + /// Returns [`true`] if this address is an [`IPv6` address], and [`false`] + /// otherwise. + /// + /// [`IPv6` address]: IpAddr::V6 + /// + /// # Examples + /// + /// ``` + /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; + /// + /// assert_eq!(IpAddr::V4(Ipv4Addr::new(203, 0, 113, 6)).is_ipv6(), false); + /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0)).is_ipv6(), true); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(feature = "ipaddr_checker", since = "1.16.0"))] + #[must_use] + #[inline] + pub const fn is_ipv6(&self) -> bool { + matches!(self, IpAddr::V6(_)) + } + + /// Converts this address to an `IpAddr::V4` if it is an IPv4-mapped IPv6 addresses, otherwise it + /// return `self` as-is. + /// + /// # Examples + /// + /// ``` + /// #![feature(ip)] + /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; + /// + /// assert_eq!(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)).to_canonical().is_loopback(), true); + /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0x7f00, 0x1)).is_loopback(), false); + /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0x7f00, 0x1)).to_canonical().is_loopback(), true); + /// ``` + #[inline] + #[must_use = "this returns the result of the operation, \ + without modifying the original"] + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_ip", issue = "76205") + )] + #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] + pub const fn to_canonical(&self) -> IpAddr { + match self { + &v4 @ IpAddr::V4(_) => v4, + IpAddr::V6(v6) => v6.to_canonical(), + } + } +} + +impl Ipv4Addr { + /// Creates a new IPv4 address from four eight-bit octets. + /// + /// The result will represent the IP address `a`.`b`.`c`.`d`. + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv4Addr; + /// + /// let addr = Ipv4Addr::new(127, 0, 0, 1); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_32", since = "1.32.0") + )] + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + #[must_use] + #[inline] + pub const fn new(a: u8, b: u8, c: u8, d: u8) -> Ipv4Addr { + Ipv4Addr { + octets: [a, b, c, d], + } + } + + /// An IPv4 address with the address pointing to localhost: `127.0.0.1` + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv4Addr; + /// + /// let addr = Ipv4Addr::LOCALHOST; + /// assert_eq!(addr, Ipv4Addr::new(127, 0, 0, 1)); + /// ``` + #[cfg_attr(staged_api, stable(feature = "ip_constructors", since = "1.30.0"))] + pub const LOCALHOST: Self = Ipv4Addr::new(127, 0, 0, 1); + + /// An IPv4 address representing an unspecified address: `0.0.0.0` + /// + /// This corresponds to the constant `INADDR_ANY` in other languages. + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv4Addr; + /// + /// let addr = Ipv4Addr::UNSPECIFIED; + /// assert_eq!(addr, Ipv4Addr::new(0, 0, 0, 0)); + /// ``` + #[doc(alias = "INADDR_ANY")] + #[cfg_attr(staged_api, stable(feature = "ip_constructors", since = "1.30.0"))] + pub const UNSPECIFIED: Self = Ipv4Addr::new(0, 0, 0, 0); + + /// An IPv4 address representing the broadcast address: `255.255.255.255` + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv4Addr; + /// + /// let addr = Ipv4Addr::BROADCAST; + /// assert_eq!(addr, Ipv4Addr::new(255, 255, 255, 255)); + /// ``` + #[cfg_attr(staged_api, stable(feature = "ip_constructors", since = "1.30.0"))] + pub const BROADCAST: Self = Ipv4Addr::new(255, 255, 255, 255); + + /// Returns the four eight-bit integers that make up this address. + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv4Addr; + /// + /// let addr = Ipv4Addr::new(127, 0, 0, 1); + /// assert_eq!(addr.octets(), [127, 0, 0, 1]); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + #[must_use] + #[inline] + pub const fn octets(&self) -> [u8; 4] { + self.octets + } + + /// Returns [`true`] for the special 'unspecified' address (`0.0.0.0`). + /// + /// This property is defined in _UNIX Network Programming, Second Edition_, + /// W. Richard Stevens, p. 891; see also [ip7]. + /// + /// [ip7]: https://man7.org/linux/man-pages/man7/ip.7.html + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv4Addr; + /// + /// assert_eq!(Ipv4Addr::new(0, 0, 0, 0).is_unspecified(), true); + /// assert_eq!(Ipv4Addr::new(45, 22, 13, 197).is_unspecified(), false); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_32", since = "1.32.0") + )] + #[cfg_attr(staged_api, stable(feature = "ip_shared", since = "1.12.0"))] + #[must_use] + #[inline] + pub const fn is_unspecified(&self) -> bool { + u32::from_be_bytes(self.octets) == 0 + } + + /// Returns [`true`] if this is a loopback address (`127.0.0.0/8`). + /// + /// This property is defined by [IETF RFC 1122]. + /// + /// [IETF RFC 1122]: https://tools.ietf.org/html/rfc1122 + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv4Addr; + /// + /// assert_eq!(Ipv4Addr::new(127, 0, 0, 1).is_loopback(), true); + /// assert_eq!(Ipv4Addr::new(45, 22, 13, 197).is_loopback(), false); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))] + #[must_use] + #[inline] + pub const fn is_loopback(&self) -> bool { + self.octets()[0] == 127 + } + + /// Returns [`true`] if this is a private address. + /// + /// The private address ranges are defined in [IETF RFC 1918] and include: + /// + /// - `10.0.0.0/8` + /// - `172.16.0.0/12` + /// - `192.168.0.0/16` + /// + /// [IETF RFC 1918]: https://tools.ietf.org/html/rfc1918 + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv4Addr; + /// + /// assert_eq!(Ipv4Addr::new(10, 0, 0, 1).is_private(), true); + /// assert_eq!(Ipv4Addr::new(10, 10, 10, 10).is_private(), true); + /// assert_eq!(Ipv4Addr::new(172, 16, 10, 10).is_private(), true); + /// assert_eq!(Ipv4Addr::new(172, 29, 45, 14).is_private(), true); + /// assert_eq!(Ipv4Addr::new(172, 32, 0, 2).is_private(), false); + /// assert_eq!(Ipv4Addr::new(192, 168, 0, 2).is_private(), true); + /// assert_eq!(Ipv4Addr::new(192, 169, 0, 2).is_private(), false); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))] + #[must_use] + #[inline] + pub const fn is_private(&self) -> bool { + match self.octets() { + [10, ..] => true, + [172, b, ..] if b >= 16 && b <= 31 => true, + [192, 168, ..] => true, + _ => false, + } + } + + /// Returns [`true`] if the address is link-local (`169.254.0.0/16`). + /// + /// This property is defined by [IETF RFC 3927]. + /// + /// [IETF RFC 3927]: https://tools.ietf.org/html/rfc3927 + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv4Addr; + /// + /// assert_eq!(Ipv4Addr::new(169, 254, 0, 0).is_link_local(), true); + /// assert_eq!(Ipv4Addr::new(169, 254, 10, 65).is_link_local(), true); + /// assert_eq!(Ipv4Addr::new(16, 89, 10, 65).is_link_local(), false); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))] + #[must_use] + #[inline] + pub const fn is_link_local(&self) -> bool { + matches!(self.octets(), [169, 254, ..]) + } + + /// Returns [`true`] if the address appears to be globally reachable + /// as specified by the [IANA IPv4 Special-Purpose Address Registry]. + /// Whether or not an address is practically reachable will depend on your network configuration. + /// + /// Most IPv4 addresses are globally reachable; + /// unless they are specifically defined as *not* globally reachable. + /// + /// Non-exhaustive list of notable addresses that are not globally reachable: + /// + /// - The [unspecified address] ([`is_unspecified`](Ipv4Addr::is_unspecified)) + /// - Addresses reserved for private use ([`is_private`](Ipv4Addr::is_private)) + /// - Addresses in the shared address space ([`is_shared`](Ipv4Addr::is_shared)) + /// - Loopback addresses ([`is_loopback`](Ipv4Addr::is_loopback)) + /// - Link-local addresses ([`is_link_local`](Ipv4Addr::is_link_local)) + /// - Addresses reserved for documentation ([`is_documentation`](Ipv4Addr::is_documentation)) + /// - Addresses reserved for benchmarking ([`is_benchmarking`](Ipv4Addr::is_benchmarking)) + /// - Reserved addresses ([`is_reserved`](Ipv4Addr::is_reserved)) + /// - The [broadcast address] ([`is_broadcast`](Ipv4Addr::is_broadcast)) + /// + /// For the complete overview of which addresses are globally reachable, see the table at the [IANA IPv4 Special-Purpose Address Registry]. + /// + /// [IANA IPv4 Special-Purpose Address Registry]: https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml + /// [unspecified address]: Ipv4Addr::UNSPECIFIED + /// [broadcast address]: Ipv4Addr::BROADCAST + + /// + /// # Examples + /// + /// ``` + /// #![feature(ip)] + /// + /// use std::net::Ipv4Addr; + /// + /// // Most IPv4 addresses are globally reachable: + /// assert_eq!(Ipv4Addr::new(80, 9, 12, 3).is_global(), true); + /// + /// // However some addresses have been assigned a special meaning + /// // that makes them not globally reachable. Some examples are: + /// + /// // The unspecified address (`0.0.0.0`) + /// assert_eq!(Ipv4Addr::UNSPECIFIED.is_global(), false); + /// + /// // Addresses reserved for private use (`10.0.0.0/8`, `172.16.0.0/12`, 192.168.0.0/16) + /// assert_eq!(Ipv4Addr::new(10, 254, 0, 0).is_global(), false); + /// assert_eq!(Ipv4Addr::new(192, 168, 10, 65).is_global(), false); + /// assert_eq!(Ipv4Addr::new(172, 16, 10, 65).is_global(), false); + /// + /// // Addresses in the shared address space (`100.64.0.0/10`) + /// assert_eq!(Ipv4Addr::new(100, 100, 0, 0).is_global(), false); + /// + /// // The loopback addresses (`127.0.0.0/8`) + /// assert_eq!(Ipv4Addr::LOCALHOST.is_global(), false); + /// + /// // Link-local addresses (`169.254.0.0/16`) + /// assert_eq!(Ipv4Addr::new(169, 254, 45, 1).is_global(), false); + /// + /// // Addresses reserved for documentation (`192.0.2.0/24`, `198.51.100.0/24`, `203.0.113.0/24`) + /// assert_eq!(Ipv4Addr::new(192, 0, 2, 255).is_global(), false); + /// assert_eq!(Ipv4Addr::new(198, 51, 100, 65).is_global(), false); + /// assert_eq!(Ipv4Addr::new(203, 0, 113, 6).is_global(), false); + /// + /// // Addresses reserved for benchmarking (`198.18.0.0/15`) + /// assert_eq!(Ipv4Addr::new(198, 18, 0, 0).is_global(), false); + /// + /// // Reserved addresses (`240.0.0.0/4`) + /// assert_eq!(Ipv4Addr::new(250, 10, 20, 30).is_global(), false); + /// + /// // The broadcast address (`255.255.255.255`) + /// assert_eq!(Ipv4Addr::BROADCAST.is_global(), false); + /// + /// // For a complete overview see the IANA IPv4 Special-Purpose Address Registry. + /// ``` + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_ipv4", issue = "76205") + )] + #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] + #[must_use] + #[inline] + pub const fn is_global(&self) -> bool { + !(self.octets()[0] == 0 // "This network" + || self.is_private() + || self.is_shared() + || self.is_loopback() + || self.is_link_local() + // addresses reserved for future protocols (`192.0.0.0/24`) + ||(self.octets()[0] == 192 && self.octets()[1] == 0 && self.octets()[2] == 0) + || self.is_documentation() + || self.is_benchmarking() + || self.is_reserved() + || self.is_broadcast()) + } + + /// Returns [`true`] if this address is part of the Shared Address Space defined in + /// [IETF RFC 6598] (`100.64.0.0/10`). + /// + /// [IETF RFC 6598]: https://tools.ietf.org/html/rfc6598 + /// + /// # Examples + /// + /// ``` + /// #![feature(ip)] + /// use std::net::Ipv4Addr; + /// + /// assert_eq!(Ipv4Addr::new(100, 64, 0, 0).is_shared(), true); + /// assert_eq!(Ipv4Addr::new(100, 127, 255, 255).is_shared(), true); + /// assert_eq!(Ipv4Addr::new(100, 128, 0, 0).is_shared(), false); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_ipv4", issue = "76205") + )] + #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] + #[must_use] + #[inline] + pub const fn is_shared(&self) -> bool { + self.octets()[0] == 100 && (self.octets()[1] & 0b1100_0000 == 0b0100_0000) + } + + /// Returns [`true`] if this address part of the `198.18.0.0/15` range, which is reserved for + /// network devices benchmarking. This range is defined in [IETF RFC 2544] as `192.18.0.0` + /// through `198.19.255.255` but [errata 423] corrects it to `198.18.0.0/15`. + /// + /// [IETF RFC 2544]: https://tools.ietf.org/html/rfc2544 + /// [errata 423]: https://www.rfc-editor.org/errata/eid423 + /// + /// # Examples + /// + /// ``` + /// #![feature(ip)] + /// use std::net::Ipv4Addr; + /// + /// assert_eq!(Ipv4Addr::new(198, 17, 255, 255).is_benchmarking(), false); + /// assert_eq!(Ipv4Addr::new(198, 18, 0, 0).is_benchmarking(), true); + /// assert_eq!(Ipv4Addr::new(198, 19, 255, 255).is_benchmarking(), true); + /// assert_eq!(Ipv4Addr::new(198, 20, 0, 0).is_benchmarking(), false); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_ipv4", issue = "76205") + )] + #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] + #[must_use] + #[inline] + pub const fn is_benchmarking(&self) -> bool { + self.octets()[0] == 198 && (self.octets()[1] & 0xfe) == 18 + } + + /// Returns [`true`] if this address is reserved by IANA for future use. [IETF RFC 1112] + /// defines the block of reserved addresses as `240.0.0.0/4`. This range normally includes the + /// broadcast address `255.255.255.255`, but this implementation explicitly excludes it, since + /// it is obviously not reserved for future use. + /// + /// [IETF RFC 1112]: https://tools.ietf.org/html/rfc1112 + /// + /// # Warning + /// + /// As IANA assigns new addresses, this method will be + /// updated. This may result in non-reserved addresses being + /// treated as reserved in code that relies on an outdated version + /// of this method. + /// + /// # Examples + /// + /// ``` + /// #![feature(ip)] + /// use std::net::Ipv4Addr; + /// + /// assert_eq!(Ipv4Addr::new(240, 0, 0, 0).is_reserved(), true); + /// assert_eq!(Ipv4Addr::new(255, 255, 255, 254).is_reserved(), true); + /// + /// assert_eq!(Ipv4Addr::new(239, 255, 255, 255).is_reserved(), false); + /// // The broadcast address is not considered as reserved for future use by this implementation + /// assert_eq!(Ipv4Addr::new(255, 255, 255, 255).is_reserved(), false); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_ipv4", issue = "76205") + )] + #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] + #[must_use] + #[inline] + pub const fn is_reserved(&self) -> bool { + self.octets()[0] & 240 == 240 && !self.is_broadcast() + } + + /// Returns [`true`] if this is a multicast address (`224.0.0.0/4`). + /// + /// Multicast addresses have a most significant octet between `224` and `239`, + /// and is defined by [IETF RFC 5771]. + /// + /// [IETF RFC 5771]: https://tools.ietf.org/html/rfc5771 + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv4Addr; + /// + /// assert_eq!(Ipv4Addr::new(224, 254, 0, 0).is_multicast(), true); + /// assert_eq!(Ipv4Addr::new(236, 168, 10, 65).is_multicast(), true); + /// assert_eq!(Ipv4Addr::new(172, 16, 10, 65).is_multicast(), false); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))] + #[must_use] + #[inline] + pub const fn is_multicast(&self) -> bool { + self.octets()[0] >= 224 && self.octets()[0] <= 239 + } + + /// Returns [`true`] if this is a broadcast address (`255.255.255.255`). + /// + /// A broadcast address has all octets set to `255` as defined in [IETF RFC 919]. + /// + /// [IETF RFC 919]: https://tools.ietf.org/html/rfc919 + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv4Addr; + /// + /// assert_eq!(Ipv4Addr::new(255, 255, 255, 255).is_broadcast(), true); + /// assert_eq!(Ipv4Addr::new(236, 168, 10, 65).is_broadcast(), false); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))] + #[must_use] + #[inline] + pub const fn is_broadcast(&self) -> bool { + u32::from_be_bytes(self.octets()) == u32::from_be_bytes(Self::BROADCAST.octets()) + } + + /// Returns [`true`] if this address is in a range designated for documentation. + /// + /// This is defined in [IETF RFC 5737]: + /// + /// - `192.0.2.0/24` (TEST-NET-1) + /// - `198.51.100.0/24` (TEST-NET-2) + /// - `203.0.113.0/24` (TEST-NET-3) + /// + /// [IETF RFC 5737]: https://tools.ietf.org/html/rfc5737 + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv4Addr; + /// + /// assert_eq!(Ipv4Addr::new(192, 0, 2, 255).is_documentation(), true); + /// assert_eq!(Ipv4Addr::new(198, 51, 100, 65).is_documentation(), true); + /// assert_eq!(Ipv4Addr::new(203, 0, 113, 6).is_documentation(), true); + /// assert_eq!(Ipv4Addr::new(193, 34, 17, 19).is_documentation(), false); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))] + #[must_use] + #[inline] + pub const fn is_documentation(&self) -> bool { + matches!( + self.octets(), + [192, 0, 2, _] | [198, 51, 100, _] | [203, 0, 113, _] + ) + } + + /// Converts this address to an [IPv4-compatible] [`IPv6` address]. + /// + /// `a.b.c.d` becomes `::a.b.c.d` + /// + /// Note that IPv4-compatible addresses have been officially deprecated. + /// If you don't explicitly need an IPv4-compatible address for legacy reasons, consider using `to_ipv6_mapped` instead. + /// + /// [IPv4-compatible]: Ipv6Addr#ipv4-compatible-ipv6-addresses + /// [`IPv6` address]: Ipv6Addr + /// + /// # Examples + /// + /// ``` + /// use std::net::{Ipv4Addr, Ipv6Addr}; + /// + /// assert_eq!( + /// Ipv4Addr::new(192, 0, 2, 255).to_ipv6_compatible(), + /// Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0xc000, 0x2ff) + /// ); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + #[must_use = "this returns the result of the operation, \ + without modifying the original"] + #[inline] + pub const fn to_ipv6_compatible(&self) -> Ipv6Addr { + let [a, b, c, d] = self.octets(); + Ipv6Addr { + octets: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, a, b, c, d], + } + } + + /// Converts this address to an [IPv4-mapped] [`IPv6` address]. + /// + /// `a.b.c.d` becomes `::ffff:a.b.c.d` + /// + /// [IPv4-mapped]: Ipv6Addr#ipv4-mapped-ipv6-addresses + /// [`IPv6` address]: Ipv6Addr + /// + /// # Examples + /// + /// ``` + /// use std::net::{Ipv4Addr, Ipv6Addr}; + /// + /// assert_eq!(Ipv4Addr::new(192, 0, 2, 255).to_ipv6_mapped(), + /// Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc000, 0x2ff)); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + #[must_use = "this returns the result of the operation, \ + without modifying the original"] + #[inline] + pub const fn to_ipv6_mapped(&self) -> Ipv6Addr { + let [a, b, c, d] = self.octets(); + Ipv6Addr { + octets: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xFF, 0xFF, a, b, c, d], + } + } +} + +#[cfg_attr(staged_api, stable(feature = "ip_from_ip", since = "1.16.0"))] +impl From for IpAddr { + /// Copies this address to a new `IpAddr::V4`. + /// + /// # Examples + /// + /// ``` + /// use std::net::{IpAddr, Ipv4Addr}; + /// + /// let addr = Ipv4Addr::new(127, 0, 0, 1); + /// + /// assert_eq!( + /// IpAddr::V4(addr), + /// IpAddr::from(addr) + /// ) + /// ``` + #[inline] + fn from(ipv4: Ipv4Addr) -> IpAddr { + IpAddr::V4(ipv4) + } +} + +#[cfg_attr(staged_api, stable(feature = "ip_from_ip", since = "1.16.0"))] +impl From for IpAddr { + /// Copies this address to a new `IpAddr::V6`. + /// + /// # Examples + /// + /// ``` + /// use std::net::{IpAddr, Ipv6Addr}; + /// + /// let addr = Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff); + /// + /// assert_eq!( + /// IpAddr::V6(addr), + /// IpAddr::from(addr) + /// ); + /// ``` + #[inline] + fn from(ipv6: Ipv6Addr) -> IpAddr { + IpAddr::V6(ipv6) + } +} + +#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))] +impl PartialEq for IpAddr { + #[inline] + fn eq(&self, other: &Ipv4Addr) -> bool { + match self { + IpAddr::V4(v4) => v4 == other, + IpAddr::V6(_) => false, + } + } +} + +#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))] +impl PartialEq for Ipv4Addr { + #[inline] + fn eq(&self, other: &IpAddr) -> bool { + match other { + IpAddr::V4(v4) => self == v4, + IpAddr::V6(_) => false, + } + } +} + +#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] +impl PartialOrd for Ipv4Addr { + #[inline] + fn partial_cmp(&self, other: &Ipv4Addr) -> Option { + Some(self.cmp(other)) + } +} + +#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))] +impl PartialOrd for IpAddr { + #[inline] + fn partial_cmp(&self, other: &Ipv4Addr) -> Option { + match self { + IpAddr::V4(v4) => v4.partial_cmp(other), + IpAddr::V6(_) => Some(Ordering::Greater), + } + } +} + +#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))] +impl PartialOrd for Ipv4Addr { + #[inline] + fn partial_cmp(&self, other: &IpAddr) -> Option { + match other { + IpAddr::V4(v4) => self.partial_cmp(v4), + IpAddr::V6(_) => Some(Ordering::Less), + } + } +} + +#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] +impl Ord for Ipv4Addr { + #[inline] + fn cmp(&self, other: &Ipv4Addr) -> Ordering { + self.octets.cmp(&other.octets) + } +} + +#[cfg_attr(staged_api, stable(feature = "ip_u32", since = "1.1.0"))] +impl From for u32 { + /// Converts an `Ipv4Addr` into a host byte order `u32`. + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv4Addr; + /// + /// let addr = Ipv4Addr::new(0x12, 0x34, 0x56, 0x78); + /// assert_eq!(0x12345678, u32::from(addr)); + /// ``` + #[inline] + fn from(ip: Ipv4Addr) -> u32 { + u32::from_be_bytes(ip.octets) + } +} + +#[cfg_attr(staged_api, stable(feature = "ip_u32", since = "1.1.0"))] +impl From for Ipv4Addr { + /// Converts a host byte order `u32` into an `Ipv4Addr`. + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv4Addr; + /// + /// let addr = Ipv4Addr::from(0x12345678); + /// assert_eq!(Ipv4Addr::new(0x12, 0x34, 0x56, 0x78), addr); + /// ``` + #[inline] + fn from(ip: u32) -> Ipv4Addr { + Ipv4Addr { + octets: ip.to_be_bytes(), + } + } +} + +#[cfg_attr(staged_api, stable(feature = "from_slice_v4", since = "1.9.0"))] +impl From<[u8; 4]> for Ipv4Addr { + /// Creates an `Ipv4Addr` from a four element byte array. + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv4Addr; + /// + /// let addr = Ipv4Addr::from([13u8, 12u8, 11u8, 10u8]); + /// assert_eq!(Ipv4Addr::new(13, 12, 11, 10), addr); + /// ``` + #[inline] + fn from(octets: [u8; 4]) -> Ipv4Addr { + Ipv4Addr { octets } + } +} + +#[cfg_attr(staged_api, stable(feature = "ip_from_slice", since = "1.17.0"))] +impl From<[u8; 4]> for IpAddr { + /// Creates an `IpAddr::V4` from a four element byte array. + /// + /// # Examples + /// + /// ``` + /// use std::net::{IpAddr, Ipv4Addr}; + /// + /// let addr = IpAddr::from([13u8, 12u8, 11u8, 10u8]); + /// assert_eq!(IpAddr::V4(Ipv4Addr::new(13, 12, 11, 10)), addr); + /// ``` + #[inline] + fn from(octets: [u8; 4]) -> IpAddr { + IpAddr::V4(Ipv4Addr::from(octets)) + } +} + +impl Ipv6Addr { + /// Creates a new IPv6 address from eight 16-bit segments. + /// + /// The result will represent the IP address `a:b:c:d:e:f:g:h`. + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv6Addr; + /// + /// let addr = Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_32", since = "1.32.0") + )] + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + #[allow(clippy::too_many_arguments)] + #[must_use] + #[inline] + pub const fn new(a: u16, b: u16, c: u16, d: u16, e: u16, f: u16, g: u16, h: u16) -> Ipv6Addr { + let addr16 = [ + a.to_be(), + b.to_be(), + c.to_be(), + d.to_be(), + e.to_be(), + f.to_be(), + g.to_be(), + h.to_be(), + ]; + Ipv6Addr { + // All elements in `addr16` are big endian. + // SAFETY: `[u16; 8]` is always safe to transmute to `[u8; 16]`. + octets: unsafe { transmute::<_, [u8; 16]>(addr16) }, + } + } + + /// An IPv6 address representing localhost: `::1`. + /// + /// This corresponds to constant `IN6ADDR_LOOPBACK_INIT` or `in6addr_loopback` in other + /// languages. + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv6Addr; + /// + /// let addr = Ipv6Addr::LOCALHOST; + /// assert_eq!(addr, Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1)); + /// ``` + #[doc(alias = "IN6ADDR_LOOPBACK_INIT")] + #[doc(alias = "in6addr_loopback")] + #[cfg_attr(staged_api, stable(feature = "ip_constructors", since = "1.30.0"))] + pub const LOCALHOST: Self = Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1); + + /// An IPv6 address representing the unspecified address: `::` + /// + /// This corresponds to constant `IN6ADDR_ANY_INIT` or `in6addr_any` in other languages. + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv6Addr; + /// + /// let addr = Ipv6Addr::UNSPECIFIED; + /// assert_eq!(addr, Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0)); + /// ``` + #[doc(alias = "IN6ADDR_ANY_INIT")] + #[doc(alias = "in6addr_any")] + #[cfg_attr(staged_api, stable(feature = "ip_constructors", since = "1.30.0"))] + pub const UNSPECIFIED: Self = Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0); + + /// Returns the eight 16-bit segments that make up this address. + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv6Addr; + /// + /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).segments(), + /// [0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff]); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + #[must_use] + #[inline] + pub const fn segments(&self) -> [u16; 8] { + // All elements in `self.octets` must be big endian. + // SAFETY: `[u8; 16]` is always safe to transmute to `[u16; 8]`. + let [a, b, c, d, e, f, g, h] = unsafe { transmute::<_, [u16; 8]>(self.octets) }; + // We want native endian u16 + [ + u16::from_be(a), + u16::from_be(b), + u16::from_be(c), + u16::from_be(d), + u16::from_be(e), + u16::from_be(f), + u16::from_be(g), + u16::from_be(h), + ] + } + + /// Returns [`true`] for the special 'unspecified' address (`::`). + /// + /// This property is defined in [IETF RFC 4291]. + /// + /// [IETF RFC 4291]: https://tools.ietf.org/html/rfc4291 + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv6Addr; + /// + /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_unspecified(), false); + /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0).is_unspecified(), true); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))] + #[must_use] + #[inline] + pub const fn is_unspecified(&self) -> bool { + u128::from_be_bytes(self.octets()) == u128::from_be_bytes(Ipv6Addr::UNSPECIFIED.octets()) + } + + /// Returns [`true`] if this is the [loopback address] (`::1`), + /// as defined in [IETF RFC 4291 section 2.5.3]. + /// + /// Contrary to IPv4, in IPv6 there is only one loopback address. + /// + /// [loopback address]: Ipv6Addr::LOCALHOST + /// [IETF RFC 4291 section 2.5.3]: https://tools.ietf.org/html/rfc4291#section-2.5.3 + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv6Addr; + /// + /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_loopback(), false); + /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0x1).is_loopback(), true); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))] + #[must_use] + #[inline] + pub const fn is_loopback(&self) -> bool { + u128::from_be_bytes(self.octets()) == u128::from_be_bytes(Ipv6Addr::LOCALHOST.octets()) + } + + /// Returns [`true`] if the address appears to be globally reachable + /// as specified by the [IANA IPv6 Special-Purpose Address Registry]. + /// Whether or not an address is practically reachable will depend on your network configuration. + /// + /// Most IPv6 addresses are globally reachable; + /// unless they are specifically defined as *not* globally reachable. + /// + /// Non-exhaustive list of notable addresses that are not globally reachable: + /// - The [unspecified address] ([`is_unspecified`](Ipv6Addr::is_unspecified)) + /// - The [loopback address] ([`is_loopback`](Ipv6Addr::is_loopback)) + /// - IPv4-mapped addresses + /// - Addresses reserved for benchmarking + /// - Addresses reserved for documentation ([`is_documentation`](Ipv6Addr::is_documentation)) + /// - Unique local addresses ([`is_unique_local`](Ipv6Addr::is_unique_local)) + /// - Unicast addresses with link-local scope ([`is_unicast_link_local`](Ipv6Addr::is_unicast_link_local)) + /// + /// For the complete overview of which addresses are globally reachable, see the table at the [IANA IPv6 Special-Purpose Address Registry]. + /// + /// Note that an address having global scope is not the same as being globally reachable, + /// and there is no direct relation between the two concepts: There exist addresses with global scope + /// that are not globally reachable (for example unique local addresses), + /// and addresses that are globally reachable without having global scope + /// (multicast addresses with non-global scope). + /// + /// [IANA IPv6 Special-Purpose Address Registry]: https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml + /// [unspecified address]: Ipv6Addr::UNSPECIFIED + /// [loopback address]: Ipv6Addr::LOCALHOST + /// + /// # Examples + /// + /// ``` + /// #![feature(ip)] + /// + /// use std::net::Ipv6Addr; + /// + /// // Most IPv6 addresses are globally reachable: + /// assert_eq!(Ipv6Addr::new(0x26, 0, 0x1c9, 0, 0, 0xafc8, 0x10, 0x1).is_global(), true); + /// + /// // However some addresses have been assigned a special meaning + /// // that makes them not globally reachable. Some examples are: + /// + /// // The unspecified address (`::`) + /// assert_eq!(Ipv6Addr::UNSPECIFIED.is_global(), false); + /// + /// // The loopback address (`::1`) + /// assert_eq!(Ipv6Addr::LOCALHOST.is_global(), false); + /// + /// // IPv4-mapped addresses (`::ffff:0:0/96`) + /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_global(), false); + /// + /// // Addresses reserved for benchmarking (`2001:2::/48`) + /// assert_eq!(Ipv6Addr::new(0x2001, 2, 0, 0, 0, 0, 0, 1,).is_global(), false); + /// + /// // Addresses reserved for documentation (`2001:db8::/32`) + /// assert_eq!(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1).is_global(), false); + /// + /// // Unique local addresses (`fc00::/7`) + /// assert_eq!(Ipv6Addr::new(0xfc02, 0, 0, 0, 0, 0, 0, 1).is_global(), false); + /// + /// // Unicast addresses with link-local scope (`fe80::/10`) + /// assert_eq!(Ipv6Addr::new(0xfe81, 0, 0, 0, 0, 0, 0, 1).is_global(), false); + /// + /// // For a complete overview see the IANA IPv6 Special-Purpose Address Registry. + /// ``` + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_ipv6", issue = "76205") + )] + #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] + #[must_use] + #[inline] + pub const fn is_global(&self) -> bool { + !(self.is_unspecified() + || self.is_loopback() + // IPv4-mapped Address (`::ffff:0:0/96`) + || matches!(self.segments(), [0, 0, 0, 0, 0, 0xffff, _, _]) + // IPv4-IPv6 Translat. (`64:ff9b:1::/48`) + || matches!(self.segments(), [0x64, 0xff9b, 1, _, _, _, _, _]) + // Discard-Only Address Block (`100::/64`) + || matches!(self.segments(), [0x100, 0, 0, 0, _, _, _, _]) + // IETF Protocol Assignments (`2001::/23`) + || (matches!(self.segments(), [0x2001, b, _, _, _, _, _, _] if b < 0x200) + && !( + // Port Control Protocol Anycast (`2001:1::1`) + u128::from_be_bytes(self.octets()) == 0x2001_0001_0000_0000_0000_0000_0000_0001 + // Traversal Using Relays around NAT Anycast (`2001:1::2`) + || u128::from_be_bytes(self.octets()) == 0x2001_0001_0000_0000_0000_0000_0000_0002 + // AMT (`2001:3::/32`) + || matches!(self.segments(), [0x2001, 3, _, _, _, _, _, _]) + // AS112-v6 (`2001:4:112::/48`) + || matches!(self.segments(), [0x2001, 4, 0x112, _, _, _, _, _]) + // ORCHIDv2 (`2001:20::/28`) + || matches!(self.segments(), [0x2001, b, _, _, _, _, _, _] if b >= 0x20 && b <= 0x2F) + )) + || self.is_documentation() + || self.is_unique_local() + || self.is_unicast_link_local()) + } + + /// Returns [`true`] if this is a unique local address (`fc00::/7`). + /// + /// This property is defined in [IETF RFC 4193]. + /// + /// [IETF RFC 4193]: https://tools.ietf.org/html/rfc4193 + /// + /// # Examples + /// + /// ``` + /// #![feature(ip)] + /// + /// use std::net::Ipv6Addr; + /// + /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_unique_local(), false); + /// assert_eq!(Ipv6Addr::new(0xfc02, 0, 0, 0, 0, 0, 0, 0).is_unique_local(), true); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_ipv6", issue = "76205") + )] + #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] + #[must_use] + #[inline] + pub const fn is_unique_local(&self) -> bool { + (self.segments()[0] & 0xfe00) == 0xfc00 + } + + /// Returns [`true`] if this is a unicast address, as defined by [IETF RFC 4291]. + /// Any address that is not a [multicast address] (`ff00::/8`) is unicast. + /// + /// [IETF RFC 4291]: https://tools.ietf.org/html/rfc4291 + /// [multicast address]: Ipv6Addr::is_multicast + /// + /// # Examples + /// + /// ``` + /// #![feature(ip)] + /// + /// use std::net::Ipv6Addr; + /// + /// // The unspecified and loopback addresses are unicast. + /// assert_eq!(Ipv6Addr::UNSPECIFIED.is_unicast(), true); + /// assert_eq!(Ipv6Addr::LOCALHOST.is_unicast(), true); + /// + /// // Any address that is not a multicast address (`ff00::/8`) is unicast. + /// assert_eq!(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0).is_unicast(), true); + /// assert_eq!(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0).is_unicast(), false); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_ipv6", issue = "76205") + )] + #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] + #[must_use] + #[inline] + pub const fn is_unicast(&self) -> bool { + !self.is_multicast() + } + + /// Returns `true` if the address is a unicast address with link-local scope, + /// as defined in [RFC 4291]. + /// + /// A unicast address has link-local scope if it has the prefix `fe80::/10`, as per [RFC 4291 section 2.4]. + /// Note that this encompasses more addresses than those defined in [RFC 4291 section 2.5.6], + /// which describes "Link-Local IPv6 Unicast Addresses" as having the following stricter format: + /// + /// ```text + /// | 10 bits | 54 bits | 64 bits | + /// +----------+-------------------------+----------------------------+ + /// |1111111010| 0 | interface ID | + /// +----------+-------------------------+----------------------------+ + /// ``` + /// So while currently the only addresses with link-local scope an application will encounter are all in `fe80::/64`, + /// this might change in the future with the publication of new standards. More addresses in `fe80::/10` could be allocated, + /// and those addresses will have link-local scope. + /// + /// Also note that while [RFC 4291 section 2.5.3] mentions about the [loopback address] (`::1`) that "it is treated as having Link-Local scope", + /// this does not mean that the loopback address actually has link-local scope and this method will return `false` on it. + /// + /// [RFC 4291]: https://tools.ietf.org/html/rfc4291 + /// [RFC 4291 section 2.4]: https://tools.ietf.org/html/rfc4291#section-2.4 + /// [RFC 4291 section 2.5.3]: https://tools.ietf.org/html/rfc4291#section-2.5.3 + /// [RFC 4291 section 2.5.6]: https://tools.ietf.org/html/rfc4291#section-2.5.6 + /// [loopback address]: Ipv6Addr::LOCALHOST + /// + /// # Examples + /// + /// ``` + /// #![feature(ip)] + /// + /// use std::net::Ipv6Addr; + /// + /// // The loopback address (`::1`) does not actually have link-local scope. + /// assert_eq!(Ipv6Addr::LOCALHOST.is_unicast_link_local(), false); + /// + /// // Only addresses in `fe80::/10` have link-local scope. + /// assert_eq!(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0).is_unicast_link_local(), false); + /// assert_eq!(Ipv6Addr::new(0xfe80, 0, 0, 0, 0, 0, 0, 0).is_unicast_link_local(), true); + /// + /// // Addresses outside the stricter `fe80::/64` also have link-local scope. + /// assert_eq!(Ipv6Addr::new(0xfe80, 0, 0, 1, 0, 0, 0, 0).is_unicast_link_local(), true); + /// assert_eq!(Ipv6Addr::new(0xfe81, 0, 0, 0, 0, 0, 0, 0).is_unicast_link_local(), true); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_ipv6", issue = "76205") + )] + #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] + #[must_use] + #[inline] + pub const fn is_unicast_link_local(&self) -> bool { + (self.segments()[0] & 0xffc0) == 0xfe80 + } + + /// Returns [`true`] if this is an address reserved for documentation + /// (`2001:db8::/32`). + /// + /// This property is defined in [IETF RFC 3849]. + /// + /// [IETF RFC 3849]: https://tools.ietf.org/html/rfc3849 + /// + /// # Examples + /// + /// ``` + /// #![feature(ip)] + /// + /// use std::net::Ipv6Addr; + /// + /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_documentation(), false); + /// assert_eq!(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0).is_documentation(), true); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_ipv6", issue = "76205") + )] + #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] + #[must_use] + #[inline] + pub const fn is_documentation(&self) -> bool { + (self.segments()[0] == 0x2001) && (self.segments()[1] == 0xdb8) + } + + /// Returns [`true`] if this is an address reserved for benchmarking (`2001:2::/48`). + /// + /// This property is defined in [IETF RFC 5180], where it is mistakenly specified as covering the range `2001:0200::/48`. + /// This is corrected in [IETF RFC Errata 1752] to `2001:0002::/48`. + /// + /// [IETF RFC 5180]: https://tools.ietf.org/html/rfc5180 + /// [IETF RFC Errata 1752]: https://www.rfc-editor.org/errata_search.php?eid=1752 + /// + /// ``` + /// #![feature(ip)] + /// + /// use std::net::Ipv6Addr; + /// + /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc613, 0x0).is_benchmarking(), false); + /// assert_eq!(Ipv6Addr::new(0x2001, 0x2, 0, 0, 0, 0, 0, 0).is_benchmarking(), true); + /// ``` + #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] + #[must_use] + #[inline] + pub const fn is_benchmarking(&self) -> bool { + (self.segments()[0] == 0x2001) && (self.segments()[1] == 0x2) && (self.segments()[2] == 0) + } + + /// Returns [`true`] if the address is a globally routable unicast address. + /// + /// The following return false: + /// + /// - the loopback address + /// - the link-local addresses + /// - unique local addresses + /// - the unspecified address + /// - the address range reserved for documentation + /// + /// This method returns [`true`] for site-local addresses as per [RFC 4291 section 2.5.7] + /// + /// ```no_rust + /// The special behavior of [the site-local unicast] prefix defined in [RFC3513] must no longer + /// be supported in new implementations (i.e., new implementations must treat this prefix as + /// Global Unicast). + /// ``` + /// + /// [RFC 4291 section 2.5.7]: https://tools.ietf.org/html/rfc4291#section-2.5.7 + /// + /// # Examples + /// + /// ``` + /// #![feature(ip)] + /// + /// use std::net::Ipv6Addr; + /// + /// assert_eq!(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0).is_unicast_global(), false); + /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_unicast_global(), true); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_ipv6", issue = "76205") + )] + #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] + #[must_use] + #[inline] + pub const fn is_unicast_global(&self) -> bool { + self.is_unicast() + && !self.is_loopback() + && !self.is_unicast_link_local() + && !self.is_unique_local() + && !self.is_unspecified() + && !self.is_documentation() + && !self.is_benchmarking() + } + + /// Returns the address' multicast scope if the address is multicast. + /// + /// # Examples + /// + /// ``` + /// #![feature(ip)] + /// + /// use std::net::{Ipv6Addr, Ipv6MulticastScope}; + /// + /// assert_eq!( + /// Ipv6Addr::new(0xff0e, 0, 0, 0, 0, 0, 0, 0).multicast_scope(), + /// Some(Ipv6MulticastScope::Global) + /// ); + /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).multicast_scope(), None); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_ipv6", issue = "76205") + )] + #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] + #[must_use] + #[inline] + pub const fn multicast_scope(&self) -> Option { + if self.is_multicast() { + match self.segments()[0] & 0x000f { + 1 => Some(Ipv6MulticastScope::InterfaceLocal), + 2 => Some(Ipv6MulticastScope::LinkLocal), + 3 => Some(Ipv6MulticastScope::RealmLocal), + 4 => Some(Ipv6MulticastScope::AdminLocal), + 5 => Some(Ipv6MulticastScope::SiteLocal), + 8 => Some(Ipv6MulticastScope::OrganizationLocal), + 14 => Some(Ipv6MulticastScope::Global), + _ => None, + } + } else { + None + } + } + + /// Returns [`true`] if this is a multicast address (`ff00::/8`). + /// + /// This property is defined by [IETF RFC 4291]. + /// + /// [IETF RFC 4291]: https://tools.ietf.org/html/rfc4291 + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv6Addr; + /// + /// assert_eq!(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0).is_multicast(), true); + /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_multicast(), false); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))] + #[must_use] + #[inline] + pub const fn is_multicast(&self) -> bool { + (self.segments()[0] & 0xff00) == 0xff00 + } + + /// Converts this address to an [`IPv4` address] if it's an [IPv4-mapped] address, + /// as defined in [IETF RFC 4291 section 2.5.5.2], otherwise returns [`None`]. + /// + /// `::ffff:a.b.c.d` becomes `a.b.c.d`. + /// All addresses *not* starting with `::ffff` will return `None`. + /// + /// [`IPv4` address]: Ipv4Addr + /// [IPv4-mapped]: Ipv6Addr + /// [IETF RFC 4291 section 2.5.5.2]: https://tools.ietf.org/html/rfc4291#section-2.5.5.2 + /// + /// # Examples + /// + /// ``` + /// use std::net::{Ipv4Addr, Ipv6Addr}; + /// + /// assert_eq!(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0).to_ipv4_mapped(), None); + /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).to_ipv4_mapped(), + /// Some(Ipv4Addr::new(192, 10, 2, 255))); + /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1).to_ipv4_mapped(), None); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_ipv6", issue = "76205") + )] + #[cfg_attr(staged_api, stable(feature = "ipv6_to_ipv4_mapped", since = "1.63.0"))] + #[must_use = "this returns the result of the operation, \ + without modifying the original"] + #[inline] + pub const fn to_ipv4_mapped(&self) -> Option { + match self.octets() { + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, a, b, c, d] => { + Some(Ipv4Addr::new(a, b, c, d)) + } + _ => None, + } + } + + /// Converts this address to an [`IPv4` address] if it is either + /// an [IPv4-compatible] address as defined in [IETF RFC 4291 section 2.5.5.1], + /// or an [IPv4-mapped] address as defined in [IETF RFC 4291 section 2.5.5.2], + /// otherwise returns [`None`]. + /// + /// Note that this will return an [`IPv4` address] for the IPv6 loopback address `::1`. Use + /// [`Ipv6Addr::to_ipv4_mapped`] to avoid this. + /// + /// `::a.b.c.d` and `::ffff:a.b.c.d` become `a.b.c.d`. `::1` becomes `0.0.0.1`. + /// All addresses *not* starting with either all zeroes or `::ffff` will return `None`. + /// + /// [`IPv4` address]: Ipv4Addr + /// [IPv4-compatible]: Ipv6Addr#ipv4-compatible-ipv6-addresses + /// [IPv4-mapped]: Ipv6Addr#ipv4-mapped-ipv6-addresses + /// [IETF RFC 4291 section 2.5.5.1]: https://tools.ietf.org/html/rfc4291#section-2.5.5.1 + /// [IETF RFC 4291 section 2.5.5.2]: https://tools.ietf.org/html/rfc4291#section-2.5.5.2 + /// + /// # Examples + /// + /// ``` + /// use std::net::{Ipv4Addr, Ipv6Addr}; + /// + /// assert_eq!(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0).to_ipv4(), None); + /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).to_ipv4(), + /// Some(Ipv4Addr::new(192, 10, 2, 255))); + /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1).to_ipv4(), + /// Some(Ipv4Addr::new(0, 0, 0, 1))); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_50", since = "1.50.0") + )] + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + #[must_use = "this returns the result of the operation, \ + without modifying the original"] + #[inline] + pub const fn to_ipv4(&self) -> Option { + if let [0, 0, 0, 0, 0, 0 | 0xffff, ab, cd] = self.segments() { + let [a, b] = ab.to_be_bytes(); + let [c, d] = cd.to_be_bytes(); + Some(Ipv4Addr::new(a, b, c, d)) + } else { + None + } + } + + /// Converts this address to an `IpAddr::V4` if it is an IPv4-mapped addresses, otherwise it + /// returns self wrapped in an `IpAddr::V6`. + /// + /// # Examples + /// + /// ``` + /// #![feature(ip)] + /// use std::net::Ipv6Addr; + /// + /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0x7f00, 0x1).is_loopback(), false); + /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0x7f00, 0x1).to_canonical().is_loopback(), true); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_ipv6", issue = "76205") + )] + #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] + #[must_use = "this returns the result of the operation, \ + without modifying the original"] + #[inline] + pub const fn to_canonical(&self) -> IpAddr { + if let Some(mapped) = self.to_ipv4_mapped() { + return IpAddr::V4(mapped); + } + IpAddr::V6(*self) + } + + /// Returns the sixteen eight-bit integers the IPv6 address consists of. + /// + /// ``` + /// use std::net::Ipv6Addr; + /// + /// assert_eq!(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0).octets(), + /// [255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); + /// ``` + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "const_ip_32", since = "1.32.0") + )] + #[cfg_attr(staged_api, stable(feature = "ipv6_to_octets", since = "1.12.0"))] + #[must_use] + #[inline] + pub const fn octets(&self) -> [u8; 16] { + self.octets + } +} + +#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))] +impl PartialEq for Ipv6Addr { + #[inline] + fn eq(&self, other: &IpAddr) -> bool { + match other { + IpAddr::V4(_) => false, + IpAddr::V6(v6) => self == v6, + } + } +} + +#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))] +impl PartialEq for IpAddr { + #[inline] + fn eq(&self, other: &Ipv6Addr) -> bool { + match self { + IpAddr::V4(_) => false, + IpAddr::V6(v6) => v6 == other, + } + } +} + +#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] +impl PartialOrd for Ipv6Addr { + #[inline] + fn partial_cmp(&self, other: &Ipv6Addr) -> Option { + Some(self.cmp(other)) + } +} + +#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))] +impl PartialOrd for IpAddr { + #[inline] + fn partial_cmp(&self, other: &Ipv6Addr) -> Option { + match self { + IpAddr::V4(_) => Some(Ordering::Less), + IpAddr::V6(v6) => v6.partial_cmp(other), + } + } +} + +#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))] +impl PartialOrd for Ipv6Addr { + #[inline] + fn partial_cmp(&self, other: &IpAddr) -> Option { + match other { + IpAddr::V4(_) => Some(Ordering::Greater), + IpAddr::V6(v6) => self.partial_cmp(v6), + } + } +} + +#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] +impl Ord for Ipv6Addr { + #[inline] + fn cmp(&self, other: &Ipv6Addr) -> Ordering { + self.segments().cmp(&other.segments()) + } +} + +#[cfg_attr(staged_api, stable(feature = "i128", since = "1.26.0"))] +impl From for u128 { + /// Convert an `Ipv6Addr` into a host byte order `u128`. + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv6Addr; + /// + /// let addr = Ipv6Addr::new( + /// 0x1020, 0x3040, 0x5060, 0x7080, + /// 0x90A0, 0xB0C0, 0xD0E0, 0xF00D, + /// ); + /// assert_eq!(0x102030405060708090A0B0C0D0E0F00D_u128, u128::from(addr)); + /// ``` + #[inline] + fn from(ip: Ipv6Addr) -> u128 { + u128::from_be_bytes(ip.octets) + } +} +#[cfg_attr(staged_api, stable(feature = "i128", since = "1.26.0"))] +impl From for Ipv6Addr { + /// Convert a host byte order `u128` into an `Ipv6Addr`. + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv6Addr; + /// + /// let addr = Ipv6Addr::from(0x102030405060708090A0B0C0D0E0F00D_u128); + /// assert_eq!( + /// Ipv6Addr::new( + /// 0x1020, 0x3040, 0x5060, 0x7080, + /// 0x90A0, 0xB0C0, 0xD0E0, 0xF00D, + /// ), + /// addr); + /// ``` + #[inline] + fn from(ip: u128) -> Ipv6Addr { + Ipv6Addr::from(ip.to_be_bytes()) + } +} + +#[cfg_attr(staged_api, stable(feature = "ipv6_from_octets", since = "1.9.0"))] +impl From<[u8; 16]> for Ipv6Addr { + /// Creates an `Ipv6Addr` from a sixteen element byte array. + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv6Addr; + /// + /// let addr = Ipv6Addr::from([ + /// 25u8, 24u8, 23u8, 22u8, 21u8, 20u8, 19u8, 18u8, + /// 17u8, 16u8, 15u8, 14u8, 13u8, 12u8, 11u8, 10u8, + /// ]); + /// assert_eq!( + /// Ipv6Addr::new( + /// 0x1918, 0x1716, + /// 0x1514, 0x1312, + /// 0x1110, 0x0f0e, + /// 0x0d0c, 0x0b0a + /// ), + /// addr + /// ); + /// ``` + #[inline] + fn from(octets: [u8; 16]) -> Ipv6Addr { + Ipv6Addr { octets } + } +} + +#[cfg_attr(staged_api, stable(feature = "ipv6_from_segments", since = "1.16.0"))] +impl From<[u16; 8]> for Ipv6Addr { + /// Creates an `Ipv6Addr` from an eight element 16-bit array. + /// + /// # Examples + /// + /// ``` + /// use std::net::Ipv6Addr; + /// + /// let addr = Ipv6Addr::from([ + /// 525u16, 524u16, 523u16, 522u16, + /// 521u16, 520u16, 519u16, 518u16, + /// ]); + /// assert_eq!( + /// Ipv6Addr::new( + /// 0x20d, 0x20c, + /// 0x20b, 0x20a, + /// 0x209, 0x208, + /// 0x207, 0x206 + /// ), + /// addr + /// ); + /// ``` + #[inline] + fn from(segments: [u16; 8]) -> Ipv6Addr { + let [a, b, c, d, e, f, g, h] = segments; + Ipv6Addr::new(a, b, c, d, e, f, g, h) + } +} + +#[cfg_attr(staged_api, stable(feature = "ip_from_slice", since = "1.17.0"))] +impl From<[u8; 16]> for IpAddr { + /// Creates an `IpAddr::V6` from a sixteen element byte array. + /// + /// # Examples + /// + /// ``` + /// use std::net::{IpAddr, Ipv6Addr}; + /// + /// let addr = IpAddr::from([ + /// 25u8, 24u8, 23u8, 22u8, 21u8, 20u8, 19u8, 18u8, + /// 17u8, 16u8, 15u8, 14u8, 13u8, 12u8, 11u8, 10u8, + /// ]); + /// assert_eq!( + /// IpAddr::V6(Ipv6Addr::new( + /// 0x1918, 0x1716, + /// 0x1514, 0x1312, + /// 0x1110, 0x0f0e, + /// 0x0d0c, 0x0b0a + /// )), + /// addr + /// ); + /// ``` + #[inline] + fn from(octets: [u8; 16]) -> IpAddr { + IpAddr::V6(Ipv6Addr::from(octets)) + } +} + +#[cfg_attr(staged_api, stable(feature = "ip_from_slice", since = "1.17.0"))] +impl From<[u16; 8]> for IpAddr { + /// Creates an `IpAddr::V6` from an eight element 16-bit array. + /// + /// # Examples + /// + /// ``` + /// use std::net::{IpAddr, Ipv6Addr}; + /// + /// let addr = IpAddr::from([ + /// 525u16, 524u16, 523u16, 522u16, + /// 521u16, 520u16, 519u16, 518u16, + /// ]); + /// assert_eq!( + /// IpAddr::V6(Ipv6Addr::new( + /// 0x20d, 0x20c, + /// 0x20b, 0x20a, + /// 0x209, 0x208, + /// 0x207, 0x206 + /// )), + /// addr + /// ); + /// ``` + #[inline] + fn from(segments: [u16; 8]) -> IpAddr { + IpAddr::V6(Ipv6Addr::from(segments)) + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/net/mod.rs temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/net/mod.rs --- temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/net/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/net/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,5 @@ +mod ip_addr; +mod socket_addr; + +pub use self::ip_addr::{IpAddr, Ipv4Addr, Ipv6Addr, Ipv6MulticastScope}; +pub use self::socket_addr::{SocketAddr, SocketAddrV4, SocketAddrV6}; diff -Nru temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/net/socket_addr.rs temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/net/socket_addr.rs --- temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/net/socket_addr.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/net/socket_addr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,641 @@ +//! The following is derived from Rust's +//! library/std/src/net/socket_addr.rs at revision +//! bd20fc1fd657b32f7aa1d70d8723f04c87f21606. +//! +//! All code in this file is licensed MIT or Apache 2.0 at your option. +//! +//! This defines `SocketAddr`, `SocketAddrV4`, and `SocketAddrV6` in a +//! platform-independent way. It is not the native representation. + +use super::ip_addr::{IpAddr, Ipv4Addr, Ipv6Addr}; +use core::cmp::Ordering; +use core::hash; + +/// An internet socket address, either IPv4 or IPv6. +/// +/// Internet socket addresses consist of an [IP address], a 16-bit port number, as well +/// as possibly some version-dependent additional information. See [`SocketAddrV4`]'s and +/// [`SocketAddrV6`]'s respective documentation for more details. +/// +/// The size of a `SocketAddr` instance may vary depending on the target operating +/// system. +/// +/// [IP address]: IpAddr +/// +/// # Examples +/// +/// ``` +/// use std::net::{IpAddr, Ipv4Addr, SocketAddr}; +/// +/// let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080); +/// +/// assert_eq!("127.0.0.1:8080".parse(), Ok(socket)); +/// assert_eq!(socket.port(), 8080); +/// assert_eq!(socket.is_ipv4(), true); +/// ``` +#[derive(Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] +#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] +pub enum SocketAddr { + /// An IPv4 socket address. + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + V4(#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] SocketAddrV4), + /// An IPv6 socket address. + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + V6(#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] SocketAddrV6), +} + +/// An IPv4 socket address. +/// +/// IPv4 socket addresses consist of an [`IPv4` address] and a 16-bit port number, as +/// stated in [IETF RFC 793]. +/// +/// See [`SocketAddr`] for a type encompassing both IPv4 and IPv6 socket addresses. +/// +/// The size of a `SocketAddrV4` struct may vary depending on the target operating +/// system. Do not assume that this type has the same memory layout as the underlying +/// system representation. +/// +/// [IETF RFC 793]: https://tools.ietf.org/html/rfc793 +/// [`IPv4` address]: Ipv4Addr +/// +/// # Examples +/// +/// ``` +/// use std::net::{Ipv4Addr, SocketAddrV4}; +/// +/// let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080); +/// +/// assert_eq!("127.0.0.1:8080".parse(), Ok(socket)); +/// assert_eq!(socket.ip(), &Ipv4Addr::new(127, 0, 0, 1)); +/// assert_eq!(socket.port(), 8080); +/// ``` +#[derive(Copy, Clone, Eq, PartialEq)] +#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] +pub struct SocketAddrV4 { + ip: Ipv4Addr, + port: u16, +} + +/// An IPv6 socket address. +/// +/// IPv6 socket addresses consist of an [`IPv6` address], a 16-bit port number, as well +/// as fields containing the traffic class, the flow label, and a scope identifier +/// (see [IETF RFC 2553, Section 3.3] for more details). +/// +/// See [`SocketAddr`] for a type encompassing both IPv4 and IPv6 socket addresses. +/// +/// The size of a `SocketAddrV6` struct may vary depending on the target operating +/// system. Do not assume that this type has the same memory layout as the underlying +/// system representation. +/// +/// [IETF RFC 2553, Section 3.3]: https://tools.ietf.org/html/rfc2553#section-3.3 +/// [`IPv6` address]: Ipv6Addr +/// +/// # Examples +/// +/// ``` +/// use std::net::{Ipv6Addr, SocketAddrV6}; +/// +/// let socket = SocketAddrV6::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1), 8080, 0, 0); +/// +/// assert_eq!("[2001:db8::1]:8080".parse(), Ok(socket)); +/// assert_eq!(socket.ip(), &Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1)); +/// assert_eq!(socket.port(), 8080); +/// ``` +#[derive(Copy, Clone, Eq, PartialEq)] +#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] +pub struct SocketAddrV6 { + ip: Ipv6Addr, + port: u16, + flowinfo: u32, + scope_id: u32, +} + +impl SocketAddr { + /// Creates a new socket address from an [IP address] and a port number. + /// + /// [IP address]: IpAddr + /// + /// # Examples + /// + /// ``` + /// use std::net::{IpAddr, Ipv4Addr, SocketAddr}; + /// + /// let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080); + /// assert_eq!(socket.ip(), IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1))); + /// assert_eq!(socket.port(), 8080); + /// ``` + #[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))] + #[must_use] + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_socketaddr", issue = "82485") + )] + pub const fn new(ip: IpAddr, port: u16) -> SocketAddr { + match ip { + IpAddr::V4(a) => SocketAddr::V4(SocketAddrV4::new(a, port)), + IpAddr::V6(a) => SocketAddr::V6(SocketAddrV6::new(a, port, 0, 0)), + } + } + + /// Returns the IP address associated with this socket address. + /// + /// # Examples + /// + /// ``` + /// use std::net::{IpAddr, Ipv4Addr, SocketAddr}; + /// + /// let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080); + /// assert_eq!(socket.ip(), IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1))); + /// ``` + #[must_use] + #[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))] + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_socketaddr", issue = "82485") + )] + pub const fn ip(&self) -> IpAddr { + match *self { + SocketAddr::V4(ref a) => IpAddr::V4(*a.ip()), + SocketAddr::V6(ref a) => IpAddr::V6(*a.ip()), + } + } + + /// Changes the IP address associated with this socket address. + /// + /// # Examples + /// + /// ``` + /// use std::net::{IpAddr, Ipv4Addr, SocketAddr}; + /// + /// let mut socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080); + /// socket.set_ip(IpAddr::V4(Ipv4Addr::new(10, 10, 0, 1))); + /// assert_eq!(socket.ip(), IpAddr::V4(Ipv4Addr::new(10, 10, 0, 1))); + /// ``` + #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))] + pub fn set_ip(&mut self, new_ip: IpAddr) { + // `match (*self, new_ip)` would have us mutate a copy of self only to throw it away. + match (self, new_ip) { + (&mut SocketAddr::V4(ref mut a), IpAddr::V4(new_ip)) => a.set_ip(new_ip), + (&mut SocketAddr::V6(ref mut a), IpAddr::V6(new_ip)) => a.set_ip(new_ip), + (self_, new_ip) => *self_ = Self::new(new_ip, self_.port()), + } + } + + /// Returns the port number associated with this socket address. + /// + /// # Examples + /// + /// ``` + /// use std::net::{IpAddr, Ipv4Addr, SocketAddr}; + /// + /// let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080); + /// assert_eq!(socket.port(), 8080); + /// ``` + #[must_use] + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_socketaddr", issue = "82485") + )] + pub const fn port(&self) -> u16 { + match *self { + SocketAddr::V4(ref a) => a.port(), + SocketAddr::V6(ref a) => a.port(), + } + } + + /// Changes the port number associated with this socket address. + /// + /// # Examples + /// + /// ``` + /// use std::net::{IpAddr, Ipv4Addr, SocketAddr}; + /// + /// let mut socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080); + /// socket.set_port(1025); + /// assert_eq!(socket.port(), 1025); + /// ``` + #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))] + pub fn set_port(&mut self, new_port: u16) { + match *self { + SocketAddr::V4(ref mut a) => a.set_port(new_port), + SocketAddr::V6(ref mut a) => a.set_port(new_port), + } + } + + /// Returns [`true`] if the [IP address] in this `SocketAddr` is an + /// [`IPv4` address], and [`false`] otherwise. + /// + /// [IP address]: IpAddr + /// [`IPv4` address]: IpAddr::V4 + /// + /// # Examples + /// + /// ``` + /// use std::net::{IpAddr, Ipv4Addr, SocketAddr}; + /// + /// let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080); + /// assert_eq!(socket.is_ipv4(), true); + /// assert_eq!(socket.is_ipv6(), false); + /// ``` + #[must_use] + #[cfg_attr(staged_api, stable(feature = "sockaddr_checker", since = "1.16.0"))] + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_socketaddr", issue = "82485") + )] + pub const fn is_ipv4(&self) -> bool { + matches!(*self, SocketAddr::V4(_)) + } + + /// Returns [`true`] if the [IP address] in this `SocketAddr` is an + /// [`IPv6` address], and [`false`] otherwise. + /// + /// [IP address]: IpAddr + /// [`IPv6` address]: IpAddr::V6 + /// + /// # Examples + /// + /// ``` + /// use std::net::{IpAddr, Ipv6Addr, SocketAddr}; + /// + /// let socket = SocketAddr::new(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 65535, 0, 1)), 8080); + /// assert_eq!(socket.is_ipv4(), false); + /// assert_eq!(socket.is_ipv6(), true); + /// ``` + #[must_use] + #[cfg_attr(staged_api, stable(feature = "sockaddr_checker", since = "1.16.0"))] + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_socketaddr", issue = "82485") + )] + pub const fn is_ipv6(&self) -> bool { + matches!(*self, SocketAddr::V6(_)) + } +} + +impl SocketAddrV4 { + /// Creates a new socket address from an [`IPv4` address] and a port number. + /// + /// [`IPv4` address]: Ipv4Addr + /// + /// # Examples + /// + /// ``` + /// use std::net::{SocketAddrV4, Ipv4Addr}; + /// + /// let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080); + /// ``` + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + #[must_use] + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_socketaddr", issue = "82485") + )] + pub const fn new(ip: Ipv4Addr, port: u16) -> SocketAddrV4 { + SocketAddrV4 { ip, port } + } + + /// Returns the IP address associated with this socket address. + /// + /// # Examples + /// + /// ``` + /// use std::net::{SocketAddrV4, Ipv4Addr}; + /// + /// let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080); + /// assert_eq!(socket.ip(), &Ipv4Addr::new(127, 0, 0, 1)); + /// ``` + #[must_use] + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_socketaddr", issue = "82485") + )] + pub const fn ip(&self) -> &Ipv4Addr { + &self.ip + } + + /// Changes the IP address associated with this socket address. + /// + /// # Examples + /// + /// ``` + /// use std::net::{SocketAddrV4, Ipv4Addr}; + /// + /// let mut socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080); + /// socket.set_ip(Ipv4Addr::new(192, 168, 0, 1)); + /// assert_eq!(socket.ip(), &Ipv4Addr::new(192, 168, 0, 1)); + /// ``` + #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))] + pub fn set_ip(&mut self, new_ip: Ipv4Addr) { + self.ip = new_ip; + } + + /// Returns the port number associated with this socket address. + /// + /// # Examples + /// + /// ``` + /// use std::net::{SocketAddrV4, Ipv4Addr}; + /// + /// let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080); + /// assert_eq!(socket.port(), 8080); + /// ``` + #[must_use] + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_socketaddr", issue = "82485") + )] + pub const fn port(&self) -> u16 { + self.port + } + + /// Changes the port number associated with this socket address. + /// + /// # Examples + /// + /// ``` + /// use std::net::{SocketAddrV4, Ipv4Addr}; + /// + /// let mut socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080); + /// socket.set_port(4242); + /// assert_eq!(socket.port(), 4242); + /// ``` + #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))] + pub fn set_port(&mut self, new_port: u16) { + self.port = new_port; + } +} + +impl SocketAddrV6 { + /// Creates a new socket address from an [`IPv6` address], a 16-bit port number, + /// and the `flowinfo` and `scope_id` fields. + /// + /// For more information on the meaning and layout of the `flowinfo` and `scope_id` + /// parameters, see [IETF RFC 2553, Section 3.3]. + /// + /// [IETF RFC 2553, Section 3.3]: https://tools.ietf.org/html/rfc2553#section-3.3 + /// [`IPv6` address]: Ipv6Addr + /// + /// # Examples + /// + /// ``` + /// use std::net::{SocketAddrV6, Ipv6Addr}; + /// + /// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0); + /// ``` + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + #[must_use] + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_socketaddr", issue = "82485") + )] + pub const fn new(ip: Ipv6Addr, port: u16, flowinfo: u32, scope_id: u32) -> SocketAddrV6 { + SocketAddrV6 { + ip, + port, + flowinfo, + scope_id, + } + } + + /// Returns the IP address associated with this socket address. + /// + /// # Examples + /// + /// ``` + /// use std::net::{SocketAddrV6, Ipv6Addr}; + /// + /// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0); + /// assert_eq!(socket.ip(), &Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1)); + /// ``` + #[must_use] + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_socketaddr", issue = "82485") + )] + pub const fn ip(&self) -> &Ipv6Addr { + &self.ip + } + + /// Changes the IP address associated with this socket address. + /// + /// # Examples + /// + /// ``` + /// use std::net::{SocketAddrV6, Ipv6Addr}; + /// + /// let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0); + /// socket.set_ip(Ipv6Addr::new(76, 45, 0, 0, 0, 0, 0, 0)); + /// assert_eq!(socket.ip(), &Ipv6Addr::new(76, 45, 0, 0, 0, 0, 0, 0)); + /// ``` + #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))] + pub fn set_ip(&mut self, new_ip: Ipv6Addr) { + self.ip = new_ip; + } + + /// Returns the port number associated with this socket address. + /// + /// # Examples + /// + /// ``` + /// use std::net::{SocketAddrV6, Ipv6Addr}; + /// + /// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0); + /// assert_eq!(socket.port(), 8080); + /// ``` + #[must_use] + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_socketaddr", issue = "82485") + )] + pub const fn port(&self) -> u16 { + self.port + } + + /// Changes the port number associated with this socket address. + /// + /// # Examples + /// + /// ``` + /// use std::net::{SocketAddrV6, Ipv6Addr}; + /// + /// let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0); + /// socket.set_port(4242); + /// assert_eq!(socket.port(), 4242); + /// ``` + #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))] + pub fn set_port(&mut self, new_port: u16) { + self.port = new_port; + } + + /// Returns the flow information associated with this address. + /// + /// This information corresponds to the `sin6_flowinfo` field in C's `netinet/in.h`, + /// as specified in [IETF RFC 2553, Section 3.3]. + /// It combines information about the flow label and the traffic class as specified + /// in [IETF RFC 2460], respectively [Section 6] and [Section 7]. + /// + /// [IETF RFC 2553, Section 3.3]: https://tools.ietf.org/html/rfc2553#section-3.3 + /// [IETF RFC 2460]: https://tools.ietf.org/html/rfc2460 + /// [Section 6]: https://tools.ietf.org/html/rfc2460#section-6 + /// [Section 7]: https://tools.ietf.org/html/rfc2460#section-7 + /// + /// # Examples + /// + /// ``` + /// use std::net::{SocketAddrV6, Ipv6Addr}; + /// + /// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 10, 0); + /// assert_eq!(socket.flowinfo(), 10); + /// ``` + #[must_use] + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_socketaddr", issue = "82485") + )] + pub const fn flowinfo(&self) -> u32 { + self.flowinfo + } + + /// Changes the flow information associated with this socket address. + /// + /// See [`SocketAddrV6::flowinfo`]'s documentation for more details. + /// + /// # Examples + /// + /// ``` + /// use std::net::{SocketAddrV6, Ipv6Addr}; + /// + /// let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 10, 0); + /// socket.set_flowinfo(56); + /// assert_eq!(socket.flowinfo(), 56); + /// ``` + #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))] + pub fn set_flowinfo(&mut self, new_flowinfo: u32) { + self.flowinfo = new_flowinfo; + } + + /// Returns the scope ID associated with this address. + /// + /// This information corresponds to the `sin6_scope_id` field in C's `netinet/in.h`, + /// as specified in [IETF RFC 2553, Section 3.3]. + /// + /// [IETF RFC 2553, Section 3.3]: https://tools.ietf.org/html/rfc2553#section-3.3 + /// + /// # Examples + /// + /// ``` + /// use std::net::{SocketAddrV6, Ipv6Addr}; + /// + /// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 78); + /// assert_eq!(socket.scope_id(), 78); + /// ``` + #[must_use] + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + #[cfg_attr( + staged_api, + rustc_const_unstable(feature = "const_socketaddr", issue = "82485") + )] + pub const fn scope_id(&self) -> u32 { + self.scope_id + } + + /// Changes the scope ID associated with this socket address. + /// + /// See [`SocketAddrV6::scope_id`]'s documentation for more details. + /// + /// # Examples + /// + /// ``` + /// use std::net::{SocketAddrV6, Ipv6Addr}; + /// + /// let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 78); + /// socket.set_scope_id(42); + /// assert_eq!(socket.scope_id(), 42); + /// ``` + #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))] + pub fn set_scope_id(&mut self, new_scope_id: u32) { + self.scope_id = new_scope_id; + } +} + +#[cfg_attr(staged_api, stable(feature = "ip_from_ip", since = "1.16.0"))] +impl From for SocketAddr { + /// Converts a [`SocketAddrV4`] into a [`SocketAddr::V4`]. + fn from(sock4: SocketAddrV4) -> SocketAddr { + SocketAddr::V4(sock4) + } +} + +#[cfg_attr(staged_api, stable(feature = "ip_from_ip", since = "1.16.0"))] +impl From for SocketAddr { + /// Converts a [`SocketAddrV6`] into a [`SocketAddr::V6`]. + fn from(sock6: SocketAddrV6) -> SocketAddr { + SocketAddr::V6(sock6) + } +} + +#[cfg_attr(staged_api, stable(feature = "addr_from_into_ip", since = "1.17.0"))] +impl> From<(I, u16)> for SocketAddr { + /// Converts a tuple struct (Into<[`IpAddr`]>, `u16`) into a [`SocketAddr`]. + /// + /// This conversion creates a [`SocketAddr::V4`] for an [`IpAddr::V4`] + /// and creates a [`SocketAddr::V6`] for an [`IpAddr::V6`]. + /// + /// `u16` is treated as port of the newly created [`SocketAddr`]. + fn from(pieces: (I, u16)) -> SocketAddr { + SocketAddr::new(pieces.0.into(), pieces.1) + } +} + +#[cfg_attr(staged_api, stable(feature = "socketaddr_ordering", since = "1.45.0"))] +impl PartialOrd for SocketAddrV4 { + fn partial_cmp(&self, other: &SocketAddrV4) -> Option { + Some(self.cmp(other)) + } +} + +#[cfg_attr(staged_api, stable(feature = "socketaddr_ordering", since = "1.45.0"))] +impl PartialOrd for SocketAddrV6 { + fn partial_cmp(&self, other: &SocketAddrV6) -> Option { + Some(self.cmp(other)) + } +} + +#[cfg_attr(staged_api, stable(feature = "socketaddr_ordering", since = "1.45.0"))] +impl Ord for SocketAddrV4 { + fn cmp(&self, other: &SocketAddrV4) -> Ordering { + self.ip() + .cmp(other.ip()) + .then(self.port().cmp(&other.port())) + } +} + +#[cfg_attr(staged_api, stable(feature = "socketaddr_ordering", since = "1.45.0"))] +impl Ord for SocketAddrV6 { + fn cmp(&self, other: &SocketAddrV6) -> Ordering { + self.ip() + .cmp(other.ip()) + .then(self.port().cmp(&other.port())) + } +} + +#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] +impl hash::Hash for SocketAddrV4 { + fn hash(&self, s: &mut H) { + (self.port, self.ip).hash(s) + } +} +#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] +impl hash::Hash for SocketAddrV6 { + fn hash(&self, s: &mut H) { + (self.port, &self.ip, self.flowinfo, self.scope_id).hash(s) + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/fd/mod.rs temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/fd/mod.rs --- temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/fd/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/fd/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,19 @@ +//! The following is derived from Rust's +//! library/std/src/os/fd/mod.rs at revision +//! fa68e73e9947be8ffc5b3b46d899e4953a44e7e9. +//! +//! All code in this file is licensed MIT or Apache 2.0 at your option. +//! +//! Owned and borrowed Unix-like file descriptors. + +#![cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] +#![deny(unsafe_op_in_unsafe_fn)] + +// `RawFd`, `AsRawFd`, etc. +mod raw; + +// `OwnedFd`, `AsFd`, etc. +mod owned; + +pub use owned::*; +pub use raw::*; diff -Nru temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/fd/owned.rs temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/fd/owned.rs --- temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/fd/owned.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/fd/owned.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,254 @@ +//! The following is derived from Rust's +//! library/std/src/os/fd/owned.rs at revision +//! fa68e73e9947be8ffc5b3b46d899e4953a44e7e9. +//! +//! All code in this file is licensed MIT or Apache 2.0 at your option. +//! +//! Owned and borrowed Unix-like file descriptors. + +#![cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] +#![deny(unsafe_op_in_unsafe_fn)] +#![allow(unsafe_code)] + +use super::raw::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; +use crate::io::close; +use core::fmt; +use core::marker::PhantomData; +use core::mem::forget; + +/// A borrowed file descriptor. +/// +/// This has a lifetime parameter to tie it to the lifetime of something that +/// owns the file descriptor. +/// +/// This uses `repr(transparent)` and has the representation of a host file +/// descriptor, so it can be used in FFI in places where a file descriptor is +/// passed as an argument, it is not captured or consumed, and it never has the +/// value `-1`. +/// +/// This type's `.to_owned()` implementation returns another `BorrowedFd` +/// rather than an `OwnedFd`. It just makes a trivial copy of the raw file +/// descriptor, which is then borrowed under the same lifetime. +#[derive(Copy, Clone)] +#[repr(transparent)] +#[cfg_attr(rustc_attrs, rustc_layout_scalar_valid_range_start(0))] +// libstd/os/raw/mod.rs assures me that every libstd-supported platform has a +// 32-bit c_int. Below is -2, in two's complement, but that only works out +// because c_int is 32 bits. +#[cfg_attr(rustc_attrs, rustc_layout_scalar_valid_range_end(0xFF_FF_FF_FE))] +#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] +#[cfg_attr(rustc_attrs, rustc_nonnull_optimization_guaranteed)] +pub struct BorrowedFd<'fd> { + fd: RawFd, + _phantom: PhantomData<&'fd OwnedFd>, +} + +/// An owned file descriptor. +/// +/// This closes the file descriptor on drop. +/// +/// This uses `repr(transparent)` and has the representation of a host file +/// descriptor, so it can be used in FFI in places where a file descriptor is +/// passed as a consumed argument or returned as an owned value, and it never +/// has the value `-1`. +#[repr(transparent)] +#[cfg_attr(rustc_attrs, rustc_layout_scalar_valid_range_start(0))] +// libstd/os/raw/mod.rs assures me that every libstd-supported platform has a +// 32-bit c_int. Below is -2, in two's complement, but that only works out +// because c_int is 32 bits. +#[cfg_attr(rustc_attrs, rustc_layout_scalar_valid_range_end(0xFF_FF_FF_FE))] +#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] +#[cfg_attr(rustc_attrs, rustc_nonnull_optimization_guaranteed)] +pub struct OwnedFd { + fd: RawFd, +} + +impl BorrowedFd<'_> { + /// Return a `BorrowedFd` holding the given raw file descriptor. + /// + /// # Safety + /// + /// The resource pointed to by `fd` must remain open for the duration of + /// the returned `BorrowedFd`, and it must not have the value `-1`. + #[inline] + #[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] + pub const unsafe fn borrow_raw(fd: RawFd) -> Self { + assert!(fd != u32::MAX as RawFd); + // SAFETY: we just asserted that the value is in the valid range and isn't `-1` (the only value bigger than `0xFF_FF_FF_FE` unsigned) + #[allow(unused_unsafe)] + unsafe { + Self { + fd, + _phantom: PhantomData, + } + } + } +} + +impl OwnedFd { + /// Creates a new `OwnedFd` instance that shares the same underlying file handle + /// as the existing `OwnedFd` instance. + #[cfg(not(target_arch = "wasm32"))] + pub fn try_clone(&self) -> crate::io::Result { + // We want to atomically duplicate this file descriptor and set the + // CLOEXEC flag, and currently that's done via F_DUPFD_CLOEXEC. This + // is a POSIX flag that was added to Linux in 2.6.24. + #[cfg(not(target_os = "espidf"))] + let fd = crate::io::fcntl_dupfd_cloexec(self, 0)?; + + // For ESP-IDF, F_DUPFD is used instead, because the CLOEXEC semantics + // will never be supported, as this is a bare metal framework with + // no capabilities for multi-process execution. While F_DUPFD is also + // not supported yet, it might be (currently it returns ENOSYS). + #[cfg(target_os = "espidf")] + let fd = crate::io::fcntl_dupfd(self)?; + + Ok(fd.into()) + } + + #[cfg(target_arch = "wasm32")] + pub fn try_clone(&self) -> crate::io::Result { + Err(crate::io::const_io_error!( + crate::io::ErrorKind::Unsupported, + "operation not supported on WASI yet", + )) + } +} + +#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] +impl AsRawFd for BorrowedFd<'_> { + #[inline] + fn as_raw_fd(&self) -> RawFd { + self.fd + } +} + +#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] +impl AsRawFd for OwnedFd { + #[inline] + fn as_raw_fd(&self) -> RawFd { + self.fd + } +} + +#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] +impl IntoRawFd for OwnedFd { + #[inline] + fn into_raw_fd(self) -> RawFd { + let fd = self.fd; + forget(self); + fd + } +} + +#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] +impl FromRawFd for OwnedFd { + /// Constructs a new instance of `Self` from the given raw file descriptor. + /// + /// # Safety + /// + /// The resource pointed to by `fd` must be open and suitable for assuming + /// ownership. The resource must not require any cleanup other than `close`. + #[inline] + unsafe fn from_raw_fd(fd: RawFd) -> Self { + assert_ne!(fd, u32::MAX as RawFd); + // SAFETY: we just asserted that the value is in the valid range and isn't `-1` (the only value bigger than `0xFF_FF_FF_FE` unsigned) + #[allow(unused_unsafe)] + unsafe { + Self { fd } + } + } +} + +#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] +impl Drop for OwnedFd { + #[inline] + fn drop(&mut self) { + unsafe { + // Errors are ignored when closing a file descriptor. The reason + // for this is that if an error occurs we don't actually know if + // the file descriptor was closed or not, and if we retried (for + // something like EINTR), we might close another valid file + // descriptor opened after we closed ours. + close(self.fd as _); + } + } +} + +#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] +impl fmt::Debug for BorrowedFd<'_> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("BorrowedFd").field("fd", &self.fd).finish() + } +} + +#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] +impl fmt::Debug for OwnedFd { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("OwnedFd").field("fd", &self.fd).finish() + } +} + +/// A trait to borrow the file descriptor from an underlying object. +/// +/// This is only available on unix platforms and must be imported in order to +/// call the method. Windows platforms have a corresponding `AsHandle` and +/// `AsSocket` set of traits. +#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] +pub trait AsFd { + /// Borrows the file descriptor. + /// + /// # Example + /// + /// ```no_run + /// # #![feature(io_safety)] + /// use std::fs::File; + /// # use std::io; + /// # #[cfg(target_os = "wasi")] + /// # use std::os::wasi::io::{AsFd, BorrowedFd}; + /// # #[cfg(unix)] + /// # use std::os::unix::io::{AsFd, BorrowedFd}; + /// + /// let mut f = File::open("foo.txt")?; + /// # #[cfg(any(unix, target_os = "wasi"))] + /// let borrowed_fd: BorrowedFd<'_> = f.as_fd(); + /// # Ok::<(), io::Error>(()) + /// ``` + #[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] + fn as_fd(&self) -> BorrowedFd<'_>; +} + +#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] +impl AsFd for &T { + #[inline] + fn as_fd(&self) -> BorrowedFd<'_> { + T::as_fd(self) + } +} + +#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] +impl AsFd for &mut T { + #[inline] + fn as_fd(&self) -> BorrowedFd<'_> { + T::as_fd(self) + } +} + +#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] +impl AsFd for BorrowedFd<'_> { + #[inline] + fn as_fd(&self) -> BorrowedFd<'_> { + *self + } +} + +#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))] +impl AsFd for OwnedFd { + #[inline] + fn as_fd(&self) -> BorrowedFd<'_> { + // SAFETY: `OwnedFd` and `BorrowedFd` have the same validity + // invariants, and the `BorrowedFd` is bounded by the lifetime + // of `&self`. + unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/fd/raw.rs temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/fd/raw.rs --- temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/fd/raw.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/fd/raw.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,161 @@ +//! The following is derived from Rust's +//! library/std/src/os/fd/raw.rs at revision +//! fa68e73e9947be8ffc5b3b46d899e4953a44e7e9. +//! +//! All code in this file is licensed MIT or Apache 2.0 at your option. +//! +//! Raw Unix-like file descriptors. + +#![cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] +#![allow(unsafe_code)] + +use crate::backend::c; + +/// Raw file descriptors. +#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] +pub type RawFd = c::c_int; + +/// A trait to extract the raw file descriptor from an underlying object. +/// +/// This is only available on unix and WASI platforms and must be imported in +/// order to call the method. Windows platforms have a corresponding +/// `AsRawHandle` and `AsRawSocket` set of traits. +#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] +pub trait AsRawFd { + /// Extracts the raw file descriptor. + /// + /// This function is typically used to **borrow** an owned file descriptor. + /// When used in this way, this method does **not** pass ownership of the + /// raw file descriptor to the caller, and the file descriptor is only + /// guaranteed to be valid while the original object has not yet been + /// destroyed. + /// + /// However, borrowing is not strictly required. See [`AsFd::as_fd`] + /// for an API which strictly borrows a file descriptor. + /// + /// # Example + /// + /// ```no_run + /// use std::fs::File; + /// # use std::io; + /// #[cfg(unix)] + /// use std::os::unix::io::{AsRawFd, RawFd}; + /// #[cfg(target_os = "wasi")] + /// use std::os::wasi::io::{AsRawFd, RawFd}; + /// + /// let mut f = File::open("foo.txt")?; + /// // `raw_fd` is only valid as long as `f` exists. + /// #[cfg(any(unix, target_os = "wasi"))] + /// let raw_fd: RawFd = f.as_raw_fd(); + /// # Ok::<(), io::Error>(()) + /// ``` + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + fn as_raw_fd(&self) -> RawFd; +} + +/// A trait to express the ability to construct an object from a raw file +/// descriptor. +#[cfg_attr(staged_api, stable(feature = "from_raw_os", since = "1.1.0"))] +pub trait FromRawFd { + /// Constructs a new instance of `Self` from the given raw file + /// descriptor. + /// + /// This function is typically used to **consume ownership** of the + /// specified file descriptor. When used in this way, the returned object + /// will take responsibility for closing it when the object goes out of + /// scope. + /// + /// However, consuming ownership is not strictly required. Use a + /// [`From::from`] implementation for an API which strictly + /// consumes ownership. + /// + /// # Safety + /// + /// The `fd` passed in must be a valid an open file descriptor. + /// + /// # Example + /// + /// ```no_run + /// use std::fs::File; + /// # use std::io; + /// #[cfg(unix)] + /// use std::os::unix::io::{FromRawFd, IntoRawFd, RawFd}; + /// #[cfg(target_os = "wasi")] + /// use std::os::wasi::io::{FromRawFd, IntoRawFd, RawFd}; + /// + /// let f = File::open("foo.txt")?; + /// # #[cfg(any(unix, target_os = "wasi"))] + /// let raw_fd: RawFd = f.into_raw_fd(); + /// // SAFETY: no other functions should call `from_raw_fd`, so there + /// // is only one owner for the file descriptor. + /// # #[cfg(any(unix, target_os = "wasi"))] + /// let f = unsafe { File::from_raw_fd(raw_fd) }; + /// # Ok::<(), io::Error>(()) + /// ``` + #[cfg_attr(staged_api, stable(feature = "from_raw_os", since = "1.1.0"))] + unsafe fn from_raw_fd(fd: RawFd) -> Self; +} + +/// A trait to express the ability to consume an object and acquire ownership of +/// its raw file descriptor. +#[cfg_attr(staged_api, stable(feature = "into_raw_os", since = "1.4.0"))] +pub trait IntoRawFd { + /// Consumes this object, returning the raw underlying file descriptor. + /// + /// This function is typically used to **transfer ownership** of the underlying + /// file descriptor to the caller. When used in this way, callers are then the unique + /// owners of the file descriptor and must close it once it's no longer needed. + /// + /// However, transferring ownership is not strictly required. Use a + /// [`Into::into`] implementation for an API which strictly + /// transfers ownership. + /// + /// # Example + /// + /// ```no_run + /// use std::fs::File; + /// # use std::io; + /// #[cfg(unix)] + /// use std::os::unix::io::{IntoRawFd, RawFd}; + /// #[cfg(target_os = "wasi")] + /// use std::os::wasi::io::{IntoRawFd, RawFd}; + /// + /// let f = File::open("foo.txt")?; + /// #[cfg(any(unix, target_os = "wasi"))] + /// let raw_fd: RawFd = f.into_raw_fd(); + /// # Ok::<(), io::Error>(()) + /// ``` + #[cfg_attr(staged_api, stable(feature = "into_raw_os", since = "1.4.0"))] + fn into_raw_fd(self) -> RawFd; +} + +#[cfg_attr( + staged_api, + stable(feature = "raw_fd_reflexive_traits", since = "1.48.0") +)] +impl AsRawFd for RawFd { + #[inline] + fn as_raw_fd(&self) -> RawFd { + *self + } +} +#[cfg_attr( + staged_api, + stable(feature = "raw_fd_reflexive_traits", since = "1.48.0") +)] +impl IntoRawFd for RawFd { + #[inline] + fn into_raw_fd(self) -> RawFd { + self + } +} +#[cfg_attr( + staged_api, + stable(feature = "raw_fd_reflexive_traits", since = "1.48.0") +)] +impl FromRawFd for RawFd { + #[inline] + unsafe fn from_raw_fd(fd: RawFd) -> RawFd { + fd + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/mod.rs temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/mod.rs --- temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,4 @@ +#[cfg(any(unix, target_os = "wasi"))] +pub mod fd; +#[cfg(windows)] +pub mod windows; diff -Nru temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/windows/io/mod.rs temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/windows/io/mod.rs --- temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/windows/io/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/windows/io/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,5 @@ +mod raw; +mod socket; + +pub use raw::{AsRawSocket, FromRawSocket, IntoRawSocket, RawSocket}; +pub use socket::{AsSocket, BorrowedSocket, OwnedSocket}; diff -Nru temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/windows/io/raw.rs temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/windows/io/raw.rs --- temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/windows/io/raw.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/windows/io/raw.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,71 @@ +//! The following is derived from Rust's +//! library/std/src/os/windows/io/raw.rs +//! at revision +//! 4f9b394c8a24803e57ba892fa00e539742ebafc0. +//! +//! All code in this file is licensed MIT or Apache 2.0 at your option. + +use super::super::raw; + +/// Raw SOCKETs. +#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] +pub type RawSocket = raw::SOCKET; + +/// Extracts raw sockets. +#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] +pub trait AsRawSocket { + /// Extracts the raw socket. + /// + /// This function is typically used to **borrow** an owned socket. + /// When used in this way, this method does **not** pass ownership of the + /// raw socket to the caller, and the socket is only guaranteed + /// to be valid while the original object has not yet been destroyed. + /// + /// However, borrowing is not strictly required. See [`AsSocket::as_socket`] + /// for an API which strictly borrows a socket. + #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] + fn as_raw_socket(&self) -> RawSocket; +} + +/// Creates I/O objects from raw sockets. +#[cfg_attr(staged_api, stable(feature = "from_raw_os", since = "1.1.0"))] +pub trait FromRawSocket { + /// Constructs a new I/O object from the specified raw socket. + /// + /// This function is typically used to **consume ownership** of the socket + /// given, passing responsibility for closing the socket to the returned + /// object. When used in this way, the returned object + /// will take responsibility for closing it when the object goes out of + /// scope. + /// + /// However, consuming ownership is not strictly required. Use a + /// `From::from` implementation for an API which strictly + /// consumes ownership. + /// + /// # Safety + /// + /// The `socket` passed in must: + /// - be a valid an open socket, + /// - be a socket that may be freed via [`closesocket`]. + /// + /// [`closesocket`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-closesocket + #[cfg_attr(staged_api, stable(feature = "from_raw_os", since = "1.1.0"))] + unsafe fn from_raw_socket(sock: RawSocket) -> Self; +} + +/// A trait to express the ability to consume an object and acquire ownership of +/// its raw `SOCKET`. +#[cfg_attr(staged_api, stable(feature = "into_raw_os", since = "1.4.0"))] +pub trait IntoRawSocket { + /// Consumes this object, returning the raw underlying socket. + /// + /// This function is typically used to **transfer ownership** of the underlying + /// socket to the caller. When used in this way, callers are then the unique + /// owners of the socket and must close it once it's no longer needed. + /// + /// However, transferring ownership is not strictly required. Use a + /// `Into::into` implementation for an API which strictly + /// transfers ownership. + #[cfg_attr(staged_api, stable(feature = "into_raw_os", since = "1.4.0"))] + fn into_raw_socket(self) -> RawSocket; +} diff -Nru temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/windows/io/socket.rs temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/windows/io/socket.rs --- temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/windows/io/socket.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/windows/io/socket.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,199 @@ +//! The following is derived from Rust's +//! library/std/src/os/windows/io/socket.rs +//! at revision +//! 4f9b394c8a24803e57ba892fa00e539742ebafc0. +//! +//! All code in this file is licensed MIT or Apache 2.0 at your option. + +use super::raw::*; +use crate::backend::c; +use crate::backend::fd::LibcFd as LibcSocket; +use core::fmt; +use core::marker::PhantomData; +use core::mem::forget; + +/// A borrowed socket. +/// +/// This has a lifetime parameter to tie it to the lifetime of something that +/// owns the socket. +/// +/// This uses `repr(transparent)` and has the representation of a host socket, +/// so it can be used in FFI in places where a socket is passed as an argument, +/// it is not captured or consumed, and it never has the value +/// `INVALID_SOCKET`. +/// +/// This type's `.to_owned()` implementation returns another `BorrowedSocket` +/// rather than an `OwnedSocket`. It just makes a trivial copy of the raw +/// socket, which is then borrowed under the same lifetime. +#[derive(Copy, Clone)] +#[repr(transparent)] +#[cfg_attr(staged_api, rustc_layout_scalar_valid_range_start(0))] +// This is -2, in two's complement. -1 is `INVALID_SOCKET`. +#[cfg_attr( + all(staged_api, target_pointer_width = "32"), + rustc_layout_scalar_valid_range_end(0xFF_FF_FF_FE) +)] +#[cfg_attr( + all(staged_api, target_pointer_width = "64"), + rustc_layout_scalar_valid_range_end(0xFF_FF_FF_FF_FF_FF_FF_FE) +)] +#[cfg_attr(staged_api, rustc_nonnull_optimization_guaranteed)] +#[cfg_attr(staged_api, stable(feature = "io_safety", since = "1.63.0"))] +pub struct BorrowedSocket<'socket> { + socket: RawSocket, + _phantom: PhantomData<&'socket OwnedSocket>, +} + +/// An owned socket. +/// +/// This closes the socket on drop. +/// +/// This uses `repr(transparent)` and has the representation of a host socket, +/// so it can be used in FFI in places where a socket is passed as a consumed +/// argument or returned as an owned value, and it never has the value +/// `INVALID_SOCKET`. +#[repr(transparent)] +#[cfg_attr(staged_api, rustc_layout_scalar_valid_range_start(0))] +// This is -2, in two's complement. -1 is `INVALID_SOCKET`. +#[cfg_attr( + all(staged_api, target_pointer_width = "32"), + rustc_layout_scalar_valid_range_end(0xFF_FF_FF_FE) +)] +#[cfg_attr( + all(staged_api, target_pointer_width = "64"), + rustc_layout_scalar_valid_range_end(0xFF_FF_FF_FF_FF_FF_FF_FE) +)] +#[cfg_attr(staged_api, rustc_nonnull_optimization_guaranteed)] +#[cfg_attr(staged_api, stable(feature = "io_safety", since = "1.63.0"))] +pub struct OwnedSocket { + socket: RawSocket, +} + +impl BorrowedSocket<'_> { + /// Return a `BorrowedSocket` holding the given raw socket. + /// + /// # Safety + /// + /// The resource pointed to by `raw` must remain open for the duration of + /// the returned `BorrowedSocket`, and it must not have the value + /// `INVALID_SOCKET`. + #[inline] + #[cfg_attr( + staged_api, + rustc_const_stable(feature = "io_safety", since = "1.63.0") + )] + #[cfg_attr(staged_api, stable(feature = "io_safety", since = "1.63.0"))] + pub const unsafe fn borrow_raw(socket: RawSocket) -> Self { + assert!(socket != c::INVALID_SOCKET as RawSocket); + Self { + socket, + _phantom: PhantomData, + } + } +} + +#[cfg_attr(staged_api, stable(feature = "io_safety", since = "1.63.0"))] +impl AsRawSocket for BorrowedSocket<'_> { + #[inline] + fn as_raw_socket(&self) -> RawSocket { + self.socket + } +} + +#[cfg_attr(staged_api, stable(feature = "io_safety", since = "1.63.0"))] +impl AsRawSocket for OwnedSocket { + #[inline] + fn as_raw_socket(&self) -> RawSocket { + self.socket + } +} + +#[cfg_attr(staged_api, stable(feature = "io_safety", since = "1.63.0"))] +impl IntoRawSocket for OwnedSocket { + #[inline] + fn into_raw_socket(self) -> RawSocket { + let socket = self.socket; + forget(self); + socket + } +} + +#[cfg_attr(staged_api, stable(feature = "io_safety", since = "1.63.0"))] +impl FromRawSocket for OwnedSocket { + #[inline] + unsafe fn from_raw_socket(socket: RawSocket) -> Self { + debug_assert_ne!(socket, c::INVALID_SOCKET as RawSocket); + Self { socket } + } +} + +#[cfg_attr(staged_api, stable(feature = "io_safety", since = "1.63.0"))] +impl Drop for OwnedSocket { + #[inline] + fn drop(&mut self) { + unsafe { + let _ = c::closesocket(self.socket as LibcSocket); + } + } +} + +#[cfg_attr(staged_api, stable(feature = "io_safety", since = "1.63.0"))] +impl fmt::Debug for BorrowedSocket<'_> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("BorrowedSocket") + .field("socket", &self.socket) + .finish() + } +} + +#[cfg_attr(staged_api, stable(feature = "io_safety", since = "1.63.0"))] +impl fmt::Debug for OwnedSocket { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("OwnedSocket") + .field("socket", &self.socket) + .finish() + } +} + +/// A trait to borrow the socket from an underlying object. +#[cfg_attr(staged_api, stable(feature = "io_safety", since = "1.63.0"))] +pub trait AsSocket { + /// Borrows the socket. + #[cfg_attr(staged_api, stable(feature = "io_safety", since = "1.63.0"))] + fn as_socket(&self) -> BorrowedSocket<'_>; +} + +#[cfg_attr(staged_api, stable(feature = "io_safety", since = "1.63.0"))] +impl AsSocket for &T { + #[inline] + fn as_socket(&self) -> BorrowedSocket<'_> { + T::as_socket(self) + } +} + +#[cfg_attr(staged_api, stable(feature = "io_safety", since = "1.63.0"))] +impl AsSocket for &mut T { + #[inline] + fn as_socket(&self) -> BorrowedSocket<'_> { + T::as_socket(self) + } +} + +#[cfg_attr(staged_api, stable(feature = "io_safety", since = "1.63.0"))] +impl AsSocket for BorrowedSocket<'_> { + #[inline] + fn as_socket(&self) -> BorrowedSocket<'_> { + *self + } +} + +#[cfg_attr(staged_api, stable(feature = "io_safety", since = "1.63.0"))] +impl AsSocket for OwnedSocket { + #[inline] + fn as_socket(&self) -> BorrowedSocket<'_> { + // Safety: `OwnedSocket` and `BorrowedSocket` have the same validity + // invariants, and the `BorrowdSocket` is bounded by the lifetime + // of `&self`. + unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/windows/mod.rs temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/windows/mod.rs --- temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/windows/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/no_std/os/windows/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,19 @@ +//! The following is derived from Rust's +//! library/std/src/os/windows/raw.rs, +//! library/std/src/os/windows/io/raw.rs and +//! library/std/src/os/windows/io/socket.rs +//! at revision +//! 4f9b394c8a24803e57ba892fa00e539742ebafc0. +//! +//! All code in this file is licensed MIT or Apache 2.0 at your option. + +mod raw { + #[cfg(target_pointer_width = "32")] + #[cfg_attr(staged_api, stable(feature = "raw_ext", since = "1.1.0"))] + pub type SOCKET = u32; + #[cfg(target_pointer_width = "64")] + #[cfg_attr(staged_api, stable(feature = "raw_ext", since = "1.1.0"))] + pub type SOCKET = u64; +} + +pub mod io; diff -Nru temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/std/mod.rs temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/std/mod.rs --- temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/std/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/maybe_polyfill/std/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,43 @@ +//! Imports from `std` that would be polyfilled for `no_std` builds (see +//! `src/polyfill/no_std`). +//! +//! This implementation is used when `std` is available and just imports the +//! necessary items from `std`. For `no_std` builds, the file +//! `src/polyfill/no_std` is used instead, which doesn't depend on the standard +//! library. + +#[cfg(not(windows))] +pub mod io { + pub use std::io::{IoSlice, IoSliceMut}; +} + +#[cfg(not(any(target_os = "redox", target_os = "wasi")))] +#[cfg(feature = "net")] +pub mod net { + pub use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6}; +} + +pub mod os { + pub mod fd { + // Change to use `std::os::fd` when MSRV becomes 1.66 or higher. + + #[cfg(unix)] + pub use std::os::unix::io::{ + AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd, + }; + #[cfg(target_os = "wasi")] + pub use std::os::wasi::io::{ + AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd, + }; + } + + #[cfg(windows)] + pub mod windows { + pub mod io { + pub use std::os::windows::io::{ + AsRawSocket, AsSocket, BorrowedSocket, FromRawSocket, IntoRawSocket, OwnedSocket, + RawSocket, + }; + } + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/mm/mmap.rs temporalio-1.3.0/vendor/rustix/src/mm/mmap.rs --- temporalio-1.3.0/vendor/rustix/src/mm/mmap.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/mm/mmap.rs 2023-10-30 19:40:00.000000000 +0000 @@ -222,7 +222,8 @@ /// /// Some implementations implicitly round the memory region out to the nearest /// page boundaries, so this function may lock more memory than explicitly -/// requested if the memory isn't page-aligned. +/// requested if the memory isn't page-aligned. Other implementations fail if +/// the memory isn't page-aligned. /// /// # References /// - [POSIX] diff -Nru temporalio-1.3.0/vendor/rustix/src/mount/fsopen.rs temporalio-1.3.0/vendor/rustix/src/mount/fsopen.rs --- temporalio-1.3.0/vendor/rustix/src/mount/fsopen.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/mount/fsopen.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,219 @@ +//! `fsopen` and related functions in Linux's `mount` API. + +use crate::backend::mount::types::{ + FsMountFlags, FsOpenFlags, FsPickFlags, MountAttrFlags, MoveMountFlags, OpenTreeFlags, +}; +use crate::fd::{BorrowedFd, OwnedFd}; +use crate::{backend, io, path}; + +/// `fsopen(fs_name, flags)` +/// +/// # References +/// - [Unfinished draft] +/// +/// [Unfinished draft]: https://github.com/sunfishcode/linux-mount-api-documentation/blob/main/fsopen.md +#[inline] +pub fn fsopen(fs_name: Fs, flags: FsOpenFlags) -> io::Result { + fs_name.into_with_c_str(|fs_name| backend::mount::syscalls::fsopen(fs_name, flags)) +} + +/// `fsmount(fs_fd, flags, attr_flags)` +/// +/// # References +/// - [Unfinished draft] +/// +/// [Unfinished draft]: https://github.com/sunfishcode/linux-mount-api-documentation/blob/main/fsmount.md +#[inline] +pub fn fsmount( + fs_fd: BorrowedFd<'_>, + flags: FsMountFlags, + attr_flags: MountAttrFlags, +) -> io::Result<()> { + backend::mount::syscalls::fsmount(fs_fd, flags, attr_flags) +} + +/// `move_mount(from_dfd, from_pathname, to_dfd, to_pathname, flags)` +/// +/// This is not the same as `mount` with the `MS_MOVE` flag. If you want to +/// use that, use [`mount_move`] instead. +/// +/// # References +/// - [Unfinished draft] +/// +/// [`mount_move`]: crate::mount::mount_move +/// [Unfinished draft]: https://github.com/sunfishcode/linux-mount-api-documentation/blob/main/move_mount.md +#[inline] +pub fn move_mount( + from_dfd: BorrowedFd<'_>, + from_pathname: From, + to_dfd: BorrowedFd<'_>, + to_pathname: To, + flags: MoveMountFlags, +) -> io::Result<()> { + from_pathname.into_with_c_str(|from_pathname| { + to_pathname.into_with_c_str(|to_pathname| { + backend::mount::syscalls::move_mount( + from_dfd, + from_pathname, + to_dfd, + to_pathname, + flags, + ) + }) + }) +} + +/// `open_tree(dfd, filename, flags)` +/// +/// # References +/// - [Unfinished draft] +/// +/// [Unfinished draft]: https://github.com/sunfishcode/linux-mount-api-documentation/blob/main/open_tree.md +#[inline] +pub fn open_tree( + dfd: BorrowedFd<'_>, + filename: Path, + flags: OpenTreeFlags, +) -> io::Result { + filename.into_with_c_str(|filename| backend::mount::syscalls::open_tree(dfd, filename, flags)) +} + +/// `fspick(dfd, path, flags)` +/// +/// # References +/// - [Unfinished draft] +/// +/// [Unfinished draft]: https://github.com/sunfishcode/linux-mount-api-documentation/blob/main/fspick.md +#[inline] +pub fn fspick( + dfd: BorrowedFd<'_>, + path: Path, + flags: FsPickFlags, +) -> io::Result { + path.into_with_c_str(|path| backend::mount::syscalls::fspick(dfd, path, flags)) +} + +/// `fsconfig(fs_fd, FSCONFIG_SET_FLAG, key, NULL, 0)` +/// +/// # References +/// - [Unfinished draft] +/// +/// [Unfinished draft]: https://github.com/sunfishcode/linux-mount-api-documentation/blob/main/fsconfig.md +#[inline] +#[doc(alias = "fsconfig")] +pub fn fsconfig_set_flag(fs_fd: BorrowedFd<'_>, key: Key) -> io::Result<()> { + key.into_with_c_str(|key| backend::mount::syscalls::fsconfig_set_flag(fs_fd, key)) +} + +/// `fsconfig(fs_fd, FSCONFIG_SET_STRING, key, value, 0)` +/// +/// # References +/// - [Unfinished draft] +/// +/// [Unfinished draft]: https://github.com/sunfishcode/linux-mount-api-documentation/blob/main/fsconfig.md +#[inline] +#[doc(alias = "fsconfig")] +pub fn fsconfig_set_string( + fs_fd: BorrowedFd<'_>, + key: Key, + value: Value, +) -> io::Result<()> { + key.into_with_c_str(|key| { + value.into_with_c_str(|value| { + backend::mount::syscalls::fsconfig_set_string(fs_fd, key, value) + }) + }) +} + +/// `fsconfig(fs_fd, FSCONFIG_SET_BINARY, key, value, value.len())` +/// +/// # References +/// - [Unfinished draft] +/// +/// [Unfinished draft]: https://github.com/sunfishcode/linux-mount-api-documentation/blob/main/fsconfig.md +#[inline] +#[doc(alias = "fsconfig")] +pub fn fsconfig_set_binary( + fs_fd: BorrowedFd<'_>, + key: Key, + value: &[u8], +) -> io::Result<()> { + key.into_with_c_str(|key| backend::mount::syscalls::fsconfig_set_binary(fs_fd, key, value)) +} + +/// `fsconfig(fs_fd, FSCONFIG_SET_PATH, key, path, fd)` +/// +/// # References +/// - [Unfinished draft] +/// +/// [Unfinished draft]: https://github.com/sunfishcode/linux-mount-api-documentation/blob/main/fsconfig.md +#[inline] +#[doc(alias = "fsconfig")] +pub fn fsconfig_set_path( + fs_fd: BorrowedFd<'_>, + key: Key, + path: Path, + fd: BorrowedFd<'_>, +) -> io::Result<()> { + key.into_with_c_str(|key| { + path.into_with_c_str(|path| { + backend::mount::syscalls::fsconfig_set_path(fs_fd, key, path, fd) + }) + }) +} + +/// `fsconfig(fs_fd, FSCONFIG_SET_PATH_EMPTY, key, "", fd)` +/// +/// # References +/// - [Unfinished draft] +/// +/// [Unfinished draft]: https://github.com/sunfishcode/linux-mount-api-documentation/blob/main/fsconfig.md +#[inline] +#[doc(alias = "fsconfig")] +pub fn fsconfig_set_path_empty( + fs_fd: BorrowedFd<'_>, + key: Key, + fd: BorrowedFd<'_>, +) -> io::Result<()> { + key.into_with_c_str(|key| backend::mount::syscalls::fsconfig_set_path_empty(fs_fd, key, fd)) +} + +/// `fsconfig(fs_fd, FSCONFIG_SET_FD, key, NULL, fd)` +/// +/// # References +/// - [Unfinished draft] +/// +/// [Unfinished draft]: https://github.com/sunfishcode/linux-mount-api-documentation/blob/main/fsconfig.md +#[inline] +#[doc(alias = "fsconfig")] +pub fn fsconfig_set_fd( + fs_fd: BorrowedFd<'_>, + key: Key, + fd: BorrowedFd<'_>, +) -> io::Result<()> { + key.into_with_c_str(|key| backend::mount::syscalls::fsconfig_set_fd(fs_fd, key, fd)) +} + +/// `fsconfig(fs_fd, FSCONFIG_CMD_CREATE, key, NULL, 0)` +/// +/// # References +/// - [Unfinished draft] +/// +/// [Unfinished draft]: https://github.com/sunfishcode/linux-mount-api-documentation/blob/main/fsconfig.md +#[inline] +#[doc(alias = "fsconfig")] +pub fn fsconfig_create(fs_fd: BorrowedFd<'_>) -> io::Result<()> { + backend::mount::syscalls::fsconfig_create(fs_fd) +} + +/// `fsconfig(fs_fd, FSCONFIG_CMD_RECONFIGURE, key, NULL, 0)` +/// +/// # References +/// - [Unfinished draft] +/// +/// [Unfinished draft]: https://github.com/sunfishcode/linux-mount-api-documentation/blob/main/fsconfig.md +#[inline] +#[doc(alias = "fsconfig")] +pub fn fsconfig_reconfigure(fs_fd: BorrowedFd<'_>) -> io::Result<()> { + backend::mount::syscalls::fsconfig_reconfigure(fs_fd) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/mount/mod.rs temporalio-1.3.0/vendor/rustix/src/mount/mod.rs --- temporalio-1.3.0/vendor/rustix/src/mount/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/mount/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,19 @@ +//! Linux `mount` API. + +// The `mount` module includes the `mount` function and related +// functions which were originally defined in `rustix::fs` but are +// now replaced by deprecated aliases. After the next semver bump, +// we can remove the aliases and all the `#[cfg(feature = "mount")]` +// here and in src/backend/*/mount. +// +// The `fsopen` module includes `fsopen` and related functions. + +#[cfg(feature = "mount")] +mod fsopen; +mod mount_unmount; +mod types; + +#[cfg(feature = "mount")] +pub use fsopen::*; +pub use mount_unmount::*; +pub use types::*; diff -Nru temporalio-1.3.0/vendor/rustix/src/mount/mount_unmount.rs temporalio-1.3.0/vendor/rustix/src/mount/mount_unmount.rs --- temporalio-1.3.0/vendor/rustix/src/mount/mount_unmount.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/mount/mount_unmount.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,175 @@ +//! Linux `mount`. + +use crate::backend::mount::types::{ + InternalMountFlags, MountFlags, MountFlagsArg, MountPropagationFlags, UnmountFlags, +}; +use crate::{backend, io, path}; + +/// `mount(source, target, filesystemtype, mountflags, data)` +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man2/mount.2.html +#[inline] +pub fn mount( + source: Source, + target: Target, + file_system_type: Fs, + flags: MountFlags, + data: Data, +) -> io::Result<()> { + source.into_with_c_str(|source| { + target.into_with_c_str(|target| { + file_system_type.into_with_c_str(|file_system_type| { + data.into_with_c_str(|data| { + backend::mount::syscalls::mount( + Some(source), + target, + Some(file_system_type), + MountFlagsArg(flags.bits()), + Some(data), + ) + }) + }) + }) + }) +} + +/// `mount(NULL, target, NULL, MS_REMOUNT | mountflags, data)` +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man2/mount.2.html +#[inline] +#[doc(alias = "mount")] +#[doc(alias = "MS_REMOUNT")] +pub fn mount_remount( + target: Target, + flags: MountFlags, + data: Data, +) -> io::Result<()> { + target.into_with_c_str(|target| { + data.into_with_c_str(|data| { + backend::mount::syscalls::mount( + None, + target, + None, + MountFlagsArg(InternalMountFlags::REMOUNT.bits() | flags.bits()), + Some(data), + ) + }) + }) +} + +/// `mount(source, target, NULL, MS_BIND, NULL)` +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man2/mount.2.html +#[inline] +#[doc(alias = "mount")] +#[doc(alias = "MS_BIND")] +pub fn mount_bind( + source: Source, + target: Target, +) -> io::Result<()> { + source.into_with_c_str(|source| { + target.into_with_c_str(|target| { + backend::mount::syscalls::mount( + Some(source), + target, + None, + MountFlagsArg(MountFlags::BIND.bits()), + None, + ) + }) + }) +} + +/// `mount(source, target, NULL, MS_BIND | MS_REC, NULL)` +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man2/mount.2.html +#[inline] +#[doc(alias = "mount")] +#[doc(alias = "MS_REC")] +pub fn mount_recursive_bind( + source: Source, + target: Target, +) -> io::Result<()> { + source.into_with_c_str(|source| { + target.into_with_c_str(|target| { + backend::mount::syscalls::mount( + Some(source), + target, + None, + MountFlagsArg(MountFlags::BIND.bits() | MountPropagationFlags::REC.bits()), + None, + ) + }) + }) +} + +/// `mount(NULL, target, NULL, mountflags, NULL)` +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man2/mount.2.html +#[inline] +#[doc(alias = "mount")] +pub fn mount_change( + target: Target, + flags: MountPropagationFlags, +) -> io::Result<()> { + target.into_with_c_str(|target| { + backend::mount::syscalls::mount(None, target, None, MountFlagsArg(flags.bits()), None) + }) +} + +/// `mount(source, target, NULL, MS_MOVE, NULL)` +/// +/// This is not the same as the `move_mount` syscall. If you want to use that, +/// use [`move_mount`] instead. +/// +/// # References +/// - [Linux] +/// +/// [`move_mount`]: crate::mount::move_mount +/// [Linux]: https://man7.org/linux/man-pages/man2/mount.2.html +#[inline] +#[doc(alias = "mount")] +#[doc(alias = "MS_MOVE")] +pub fn mount_move( + source: Source, + target: Target, +) -> io::Result<()> { + source.into_with_c_str(|source| { + target.into_with_c_str(|target| { + backend::mount::syscalls::mount( + Some(source), + target, + None, + MountFlagsArg(InternalMountFlags::MOVE.bits()), + None, + ) + }) + }) +} + +/// `umount2(target, flags)` +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man2/umount.2.html +#[inline] +#[doc(alias = "umount", alias = "umount2")] +pub fn unmount(target: Target, flags: UnmountFlags) -> io::Result<()> { + target.into_with_c_str(|target| backend::mount::syscalls::unmount(target, flags)) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/mount/types.rs temporalio-1.3.0/vendor/rustix/src/mount/types.rs --- temporalio-1.3.0/vendor/rustix/src/mount/types.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/mount/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +pub use crate::backend::mount::types::*; diff -Nru temporalio-1.3.0/vendor/rustix/src/net/addr.rs temporalio-1.3.0/vendor/rustix/src/net/addr.rs --- temporalio-1.3.0/vendor/rustix/src/net/addr.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/net/addr.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,641 +0,0 @@ -//! The following is derived from Rust's -//! library/std/src/net/socket_addr.rs at revision -//! bd20fc1fd657b32f7aa1d70d8723f04c87f21606. -//! -//! All code in this file is licensed MIT or Apache 2.0 at your option. -//! -//! This defines `SocketAddr`, `SocketAddrV4`, and `SocketAddrV6` in a -//! platform-independent way. It is not the native representation. - -use crate::net::ip::{IpAddr, Ipv4Addr, Ipv6Addr}; -use core::cmp::Ordering; -use core::hash; - -/// An internet socket address, either IPv4 or IPv6. -/// -/// Internet socket addresses consist of an [IP address], a 16-bit port number, as well -/// as possibly some version-dependent additional information. See [`SocketAddrV4`]'s and -/// [`SocketAddrV6`]'s respective documentation for more details. -/// -/// The size of a `SocketAddr` instance may vary depending on the target operating -/// system. -/// -/// [IP address]: IpAddr -/// -/// # Examples -/// -/// ``` -/// use std::net::{IpAddr, Ipv4Addr, SocketAddr}; -/// -/// let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080); -/// -/// assert_eq!("127.0.0.1:8080".parse(), Ok(socket)); -/// assert_eq!(socket.port(), 8080); -/// assert_eq!(socket.is_ipv4(), true); -/// ``` -#[derive(Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] -#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] -pub enum SocketAddr { - /// An IPv4 socket address. - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - V4(#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] SocketAddrV4), - /// An IPv6 socket address. - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - V6(#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] SocketAddrV6), -} - -/// An IPv4 socket address. -/// -/// IPv4 socket addresses consist of an [`IPv4` address] and a 16-bit port number, as -/// stated in [IETF RFC 793]. -/// -/// See [`SocketAddr`] for a type encompassing both IPv4 and IPv6 socket addresses. -/// -/// The size of a `SocketAddrV4` struct may vary depending on the target operating -/// system. Do not assume that this type has the same memory layout as the underlying -/// system representation. -/// -/// [IETF RFC 793]: https://tools.ietf.org/html/rfc793 -/// [`IPv4` address]: Ipv4Addr -/// -/// # Examples -/// -/// ``` -/// use std::net::{Ipv4Addr, SocketAddrV4}; -/// -/// let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080); -/// -/// assert_eq!("127.0.0.1:8080".parse(), Ok(socket)); -/// assert_eq!(socket.ip(), &Ipv4Addr::new(127, 0, 0, 1)); -/// assert_eq!(socket.port(), 8080); -/// ``` -#[derive(Copy, Clone, Eq, PartialEq)] -#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] -pub struct SocketAddrV4 { - ip: Ipv4Addr, - port: u16, -} - -/// An IPv6 socket address. -/// -/// IPv6 socket addresses consist of an [`IPv6` address], a 16-bit port number, as well -/// as fields containing the traffic class, the flow label, and a scope identifier -/// (see [IETF RFC 2553, Section 3.3] for more details). -/// -/// See [`SocketAddr`] for a type encompassing both IPv4 and IPv6 socket addresses. -/// -/// The size of a `SocketAddrV6` struct may vary depending on the target operating -/// system. Do not assume that this type has the same memory layout as the underlying -/// system representation. -/// -/// [IETF RFC 2553, Section 3.3]: https://tools.ietf.org/html/rfc2553#section-3.3 -/// [`IPv6` address]: Ipv6Addr -/// -/// # Examples -/// -/// ``` -/// use std::net::{Ipv6Addr, SocketAddrV6}; -/// -/// let socket = SocketAddrV6::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1), 8080, 0, 0); -/// -/// assert_eq!("[2001:db8::1]:8080".parse(), Ok(socket)); -/// assert_eq!(socket.ip(), &Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1)); -/// assert_eq!(socket.port(), 8080); -/// ``` -#[derive(Copy, Clone, Eq, PartialEq)] -#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] -pub struct SocketAddrV6 { - ip: Ipv6Addr, - port: u16, - flowinfo: u32, - scope_id: u32, -} - -impl SocketAddr { - /// Creates a new socket address from an [IP address] and a port number. - /// - /// [IP address]: IpAddr - /// - /// # Examples - /// - /// ``` - /// use std::net::{IpAddr, Ipv4Addr, SocketAddr}; - /// - /// let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080); - /// assert_eq!(socket.ip(), IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1))); - /// assert_eq!(socket.port(), 8080); - /// ``` - #[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))] - #[must_use] - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_socketaddr", issue = "82485") - )] - pub const fn new(ip: IpAddr, port: u16) -> SocketAddr { - match ip { - IpAddr::V4(a) => SocketAddr::V4(SocketAddrV4::new(a, port)), - IpAddr::V6(a) => SocketAddr::V6(SocketAddrV6::new(a, port, 0, 0)), - } - } - - /// Returns the IP address associated with this socket address. - /// - /// # Examples - /// - /// ``` - /// use std::net::{IpAddr, Ipv4Addr, SocketAddr}; - /// - /// let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080); - /// assert_eq!(socket.ip(), IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1))); - /// ``` - #[must_use] - #[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))] - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_socketaddr", issue = "82485") - )] - pub const fn ip(&self) -> IpAddr { - match *self { - SocketAddr::V4(ref a) => IpAddr::V4(*a.ip()), - SocketAddr::V6(ref a) => IpAddr::V6(*a.ip()), - } - } - - /// Changes the IP address associated with this socket address. - /// - /// # Examples - /// - /// ``` - /// use std::net::{IpAddr, Ipv4Addr, SocketAddr}; - /// - /// let mut socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080); - /// socket.set_ip(IpAddr::V4(Ipv4Addr::new(10, 10, 0, 1))); - /// assert_eq!(socket.ip(), IpAddr::V4(Ipv4Addr::new(10, 10, 0, 1))); - /// ``` - #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))] - pub fn set_ip(&mut self, new_ip: IpAddr) { - // `match (*self, new_ip)` would have us mutate a copy of self only to throw it away. - match (self, new_ip) { - (&mut SocketAddr::V4(ref mut a), IpAddr::V4(new_ip)) => a.set_ip(new_ip), - (&mut SocketAddr::V6(ref mut a), IpAddr::V6(new_ip)) => a.set_ip(new_ip), - (self_, new_ip) => *self_ = Self::new(new_ip, self_.port()), - } - } - - /// Returns the port number associated with this socket address. - /// - /// # Examples - /// - /// ``` - /// use std::net::{IpAddr, Ipv4Addr, SocketAddr}; - /// - /// let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080); - /// assert_eq!(socket.port(), 8080); - /// ``` - #[must_use] - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_socketaddr", issue = "82485") - )] - pub const fn port(&self) -> u16 { - match *self { - SocketAddr::V4(ref a) => a.port(), - SocketAddr::V6(ref a) => a.port(), - } - } - - /// Changes the port number associated with this socket address. - /// - /// # Examples - /// - /// ``` - /// use std::net::{IpAddr, Ipv4Addr, SocketAddr}; - /// - /// let mut socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080); - /// socket.set_port(1025); - /// assert_eq!(socket.port(), 1025); - /// ``` - #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))] - pub fn set_port(&mut self, new_port: u16) { - match *self { - SocketAddr::V4(ref mut a) => a.set_port(new_port), - SocketAddr::V6(ref mut a) => a.set_port(new_port), - } - } - - /// Returns [`true`] if the [IP address] in this `SocketAddr` is an - /// [`IPv4` address], and [`false`] otherwise. - /// - /// [IP address]: IpAddr - /// [`IPv4` address]: IpAddr::V4 - /// - /// # Examples - /// - /// ``` - /// use std::net::{IpAddr, Ipv4Addr, SocketAddr}; - /// - /// let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080); - /// assert_eq!(socket.is_ipv4(), true); - /// assert_eq!(socket.is_ipv6(), false); - /// ``` - #[must_use] - #[cfg_attr(staged_api, stable(feature = "sockaddr_checker", since = "1.16.0"))] - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_socketaddr", issue = "82485") - )] - pub const fn is_ipv4(&self) -> bool { - matches!(*self, SocketAddr::V4(_)) - } - - /// Returns [`true`] if the [IP address] in this `SocketAddr` is an - /// [`IPv6` address], and [`false`] otherwise. - /// - /// [IP address]: IpAddr - /// [`IPv6` address]: IpAddr::V6 - /// - /// # Examples - /// - /// ``` - /// use std::net::{IpAddr, Ipv6Addr, SocketAddr}; - /// - /// let socket = SocketAddr::new(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 65535, 0, 1)), 8080); - /// assert_eq!(socket.is_ipv4(), false); - /// assert_eq!(socket.is_ipv6(), true); - /// ``` - #[must_use] - #[cfg_attr(staged_api, stable(feature = "sockaddr_checker", since = "1.16.0"))] - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_socketaddr", issue = "82485") - )] - pub const fn is_ipv6(&self) -> bool { - matches!(*self, SocketAddr::V6(_)) - } -} - -impl SocketAddrV4 { - /// Creates a new socket address from an [`IPv4` address] and a port number. - /// - /// [`IPv4` address]: Ipv4Addr - /// - /// # Examples - /// - /// ``` - /// use std::net::{SocketAddrV4, Ipv4Addr}; - /// - /// let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080); - /// ``` - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - #[must_use] - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_socketaddr", issue = "82485") - )] - pub const fn new(ip: Ipv4Addr, port: u16) -> SocketAddrV4 { - SocketAddrV4 { ip, port } - } - - /// Returns the IP address associated with this socket address. - /// - /// # Examples - /// - /// ``` - /// use std::net::{SocketAddrV4, Ipv4Addr}; - /// - /// let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080); - /// assert_eq!(socket.ip(), &Ipv4Addr::new(127, 0, 0, 1)); - /// ``` - #[must_use] - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_socketaddr", issue = "82485") - )] - pub const fn ip(&self) -> &Ipv4Addr { - &self.ip - } - - /// Changes the IP address associated with this socket address. - /// - /// # Examples - /// - /// ``` - /// use std::net::{SocketAddrV4, Ipv4Addr}; - /// - /// let mut socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080); - /// socket.set_ip(Ipv4Addr::new(192, 168, 0, 1)); - /// assert_eq!(socket.ip(), &Ipv4Addr::new(192, 168, 0, 1)); - /// ``` - #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))] - pub fn set_ip(&mut self, new_ip: Ipv4Addr) { - self.ip = new_ip; - } - - /// Returns the port number associated with this socket address. - /// - /// # Examples - /// - /// ``` - /// use std::net::{SocketAddrV4, Ipv4Addr}; - /// - /// let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080); - /// assert_eq!(socket.port(), 8080); - /// ``` - #[must_use] - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_socketaddr", issue = "82485") - )] - pub const fn port(&self) -> u16 { - self.port - } - - /// Changes the port number associated with this socket address. - /// - /// # Examples - /// - /// ``` - /// use std::net::{SocketAddrV4, Ipv4Addr}; - /// - /// let mut socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080); - /// socket.set_port(4242); - /// assert_eq!(socket.port(), 4242); - /// ``` - #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))] - pub fn set_port(&mut self, new_port: u16) { - self.port = new_port; - } -} - -impl SocketAddrV6 { - /// Creates a new socket address from an [`IPv6` address], a 16-bit port number, - /// and the `flowinfo` and `scope_id` fields. - /// - /// For more information on the meaning and layout of the `flowinfo` and `scope_id` - /// parameters, see [IETF RFC 2553, Section 3.3]. - /// - /// [IETF RFC 2553, Section 3.3]: https://tools.ietf.org/html/rfc2553#section-3.3 - /// [`IPv6` address]: Ipv6Addr - /// - /// # Examples - /// - /// ``` - /// use std::net::{SocketAddrV6, Ipv6Addr}; - /// - /// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0); - /// ``` - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - #[must_use] - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_socketaddr", issue = "82485") - )] - pub const fn new(ip: Ipv6Addr, port: u16, flowinfo: u32, scope_id: u32) -> SocketAddrV6 { - SocketAddrV6 { - ip, - port, - flowinfo, - scope_id, - } - } - - /// Returns the IP address associated with this socket address. - /// - /// # Examples - /// - /// ``` - /// use std::net::{SocketAddrV6, Ipv6Addr}; - /// - /// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0); - /// assert_eq!(socket.ip(), &Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1)); - /// ``` - #[must_use] - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_socketaddr", issue = "82485") - )] - pub const fn ip(&self) -> &Ipv6Addr { - &self.ip - } - - /// Changes the IP address associated with this socket address. - /// - /// # Examples - /// - /// ``` - /// use std::net::{SocketAddrV6, Ipv6Addr}; - /// - /// let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0); - /// socket.set_ip(Ipv6Addr::new(76, 45, 0, 0, 0, 0, 0, 0)); - /// assert_eq!(socket.ip(), &Ipv6Addr::new(76, 45, 0, 0, 0, 0, 0, 0)); - /// ``` - #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))] - pub fn set_ip(&mut self, new_ip: Ipv6Addr) { - self.ip = new_ip; - } - - /// Returns the port number associated with this socket address. - /// - /// # Examples - /// - /// ``` - /// use std::net::{SocketAddrV6, Ipv6Addr}; - /// - /// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0); - /// assert_eq!(socket.port(), 8080); - /// ``` - #[must_use] - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_socketaddr", issue = "82485") - )] - pub const fn port(&self) -> u16 { - self.port - } - - /// Changes the port number associated with this socket address. - /// - /// # Examples - /// - /// ``` - /// use std::net::{SocketAddrV6, Ipv6Addr}; - /// - /// let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0); - /// socket.set_port(4242); - /// assert_eq!(socket.port(), 4242); - /// ``` - #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))] - pub fn set_port(&mut self, new_port: u16) { - self.port = new_port; - } - - /// Returns the flow information associated with this address. - /// - /// This information corresponds to the `sin6_flowinfo` field in C's `netinet/in.h`, - /// as specified in [IETF RFC 2553, Section 3.3]. - /// It combines information about the flow label and the traffic class as specified - /// in [IETF RFC 2460], respectively [Section 6] and [Section 7]. - /// - /// [IETF RFC 2553, Section 3.3]: https://tools.ietf.org/html/rfc2553#section-3.3 - /// [IETF RFC 2460]: https://tools.ietf.org/html/rfc2460 - /// [Section 6]: https://tools.ietf.org/html/rfc2460#section-6 - /// [Section 7]: https://tools.ietf.org/html/rfc2460#section-7 - /// - /// # Examples - /// - /// ``` - /// use std::net::{SocketAddrV6, Ipv6Addr}; - /// - /// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 10, 0); - /// assert_eq!(socket.flowinfo(), 10); - /// ``` - #[must_use] - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_socketaddr", issue = "82485") - )] - pub const fn flowinfo(&self) -> u32 { - self.flowinfo - } - - /// Changes the flow information associated with this socket address. - /// - /// See [`SocketAddrV6::flowinfo`]'s documentation for more details. - /// - /// # Examples - /// - /// ``` - /// use std::net::{SocketAddrV6, Ipv6Addr}; - /// - /// let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 10, 0); - /// socket.set_flowinfo(56); - /// assert_eq!(socket.flowinfo(), 56); - /// ``` - #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))] - pub fn set_flowinfo(&mut self, new_flowinfo: u32) { - self.flowinfo = new_flowinfo; - } - - /// Returns the scope ID associated with this address. - /// - /// This information corresponds to the `sin6_scope_id` field in C's `netinet/in.h`, - /// as specified in [IETF RFC 2553, Section 3.3]. - /// - /// [IETF RFC 2553, Section 3.3]: https://tools.ietf.org/html/rfc2553#section-3.3 - /// - /// # Examples - /// - /// ``` - /// use std::net::{SocketAddrV6, Ipv6Addr}; - /// - /// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 78); - /// assert_eq!(socket.scope_id(), 78); - /// ``` - #[must_use] - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_socketaddr", issue = "82485") - )] - pub const fn scope_id(&self) -> u32 { - self.scope_id - } - - /// Changes the scope ID associated with this socket address. - /// - /// See [`SocketAddrV6::scope_id`]'s documentation for more details. - /// - /// # Examples - /// - /// ``` - /// use std::net::{SocketAddrV6, Ipv6Addr}; - /// - /// let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 78); - /// socket.set_scope_id(42); - /// assert_eq!(socket.scope_id(), 42); - /// ``` - #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))] - pub fn set_scope_id(&mut self, new_scope_id: u32) { - self.scope_id = new_scope_id; - } -} - -#[cfg_attr(staged_api, stable(feature = "ip_from_ip", since = "1.16.0"))] -impl From for SocketAddr { - /// Converts a [`SocketAddrV4`] into a [`SocketAddr::V4`]. - fn from(sock4: SocketAddrV4) -> SocketAddr { - SocketAddr::V4(sock4) - } -} - -#[cfg_attr(staged_api, stable(feature = "ip_from_ip", since = "1.16.0"))] -impl From for SocketAddr { - /// Converts a [`SocketAddrV6`] into a [`SocketAddr::V6`]. - fn from(sock6: SocketAddrV6) -> SocketAddr { - SocketAddr::V6(sock6) - } -} - -#[cfg_attr(staged_api, stable(feature = "addr_from_into_ip", since = "1.17.0"))] -impl> From<(I, u16)> for SocketAddr { - /// Converts a tuple struct (Into<[`IpAddr`]>, `u16`) into a [`SocketAddr`]. - /// - /// This conversion creates a [`SocketAddr::V4`] for an [`IpAddr::V4`] - /// and creates a [`SocketAddr::V6`] for an [`IpAddr::V6`]. - /// - /// `u16` is treated as port of the newly created [`SocketAddr`]. - fn from(pieces: (I, u16)) -> SocketAddr { - SocketAddr::new(pieces.0.into(), pieces.1) - } -} - -#[cfg_attr(staged_api, stable(feature = "socketaddr_ordering", since = "1.45.0"))] -impl PartialOrd for SocketAddrV4 { - fn partial_cmp(&self, other: &SocketAddrV4) -> Option { - Some(self.cmp(other)) - } -} - -#[cfg_attr(staged_api, stable(feature = "socketaddr_ordering", since = "1.45.0"))] -impl PartialOrd for SocketAddrV6 { - fn partial_cmp(&self, other: &SocketAddrV6) -> Option { - Some(self.cmp(other)) - } -} - -#[cfg_attr(staged_api, stable(feature = "socketaddr_ordering", since = "1.45.0"))] -impl Ord for SocketAddrV4 { - fn cmp(&self, other: &SocketAddrV4) -> Ordering { - self.ip() - .cmp(other.ip()) - .then(self.port().cmp(&other.port())) - } -} - -#[cfg_attr(staged_api, stable(feature = "socketaddr_ordering", since = "1.45.0"))] -impl Ord for SocketAddrV6 { - fn cmp(&self, other: &SocketAddrV6) -> Ordering { - self.ip() - .cmp(other.ip()) - .then(self.port().cmp(&other.port())) - } -} - -#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] -impl hash::Hash for SocketAddrV4 { - fn hash(&self, s: &mut H) { - (self.port, self.ip).hash(s) - } -} -#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] -impl hash::Hash for SocketAddrV6 { - fn hash(&self, s: &mut H) { - (self.port, &self.ip, self.flowinfo, self.scope_id).hash(s) - } -} diff -Nru temporalio-1.3.0/vendor/rustix/src/net/ip.rs temporalio-1.3.0/vendor/rustix/src/net/ip.rs --- temporalio-1.3.0/vendor/rustix/src/net/ip.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/net/ip.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,2068 +0,0 @@ -//! The following is derived from Rust's -//! library/std/src/net/ip_addr.rs at revision -//! bd20fc1fd657b32f7aa1d70d8723f04c87f21606. -//! -//! All code in this file is licensed MIT or Apache 2.0 at your option. -//! -//! This defines `IpAddr`, `Ipv4Addr`, and `Ipv6Addr`. Ideally, these should be -//! defined in `core`. See [RFC 2832]. -//! -//! [RFC 2832]: https://github.com/rust-lang/rfcs/pull/2832 - -#![allow(unsafe_code)] - -use core::cmp::Ordering; -use core::mem::transmute; - -/// An IP address, either IPv4 or IPv6. -/// -/// This enum can contain either an [`Ipv4Addr`] or an [`Ipv6Addr`], see their -/// respective documentation for more details. -/// -/// # Examples -/// -/// ``` -/// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; -/// -/// let localhost_v4 = IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)); -/// let localhost_v6 = IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1)); -/// -/// assert_eq!("127.0.0.1".parse(), Ok(localhost_v4)); -/// assert_eq!("::1".parse(), Ok(localhost_v6)); -/// -/// assert_eq!(localhost_v4.is_ipv6(), false); -/// assert_eq!(localhost_v4.is_ipv4(), true); -/// ``` -#[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))] -#[derive(Copy, Clone, Eq, PartialEq, Hash, PartialOrd, Ord)] -pub enum IpAddr { - /// An IPv4 address. - #[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))] - V4(#[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))] Ipv4Addr), - /// An IPv6 address. - #[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))] - V6(#[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))] Ipv6Addr), -} - -/// An IPv4 address. -/// -/// IPv4 addresses are defined as 32-bit integers in [IETF RFC 791]. -/// They are usually represented as four octets. -/// -/// See [`IpAddr`] for a type encompassing both IPv4 and IPv6 addresses. -/// -/// [IETF RFC 791]: https://tools.ietf.org/html/rfc791 -/// -/// # Textual representation -/// -/// `Ipv4Addr` provides a [`FromStr`] implementation. The four octets are in decimal -/// notation, divided by `.` (this is called "dot-decimal notation"). -/// Notably, octal numbers (which are indicated with a leading `0`) and hexadecimal numbers (which -/// are indicated with a leading `0x`) are not allowed per [IETF RFC 6943]. -/// -/// [IETF RFC 6943]: https://tools.ietf.org/html/rfc6943#section-3.1.1 -/// [`FromStr`]: core::str::FromStr -/// -/// # Examples -/// -/// ``` -/// use std::net::Ipv4Addr; -/// -/// let localhost = Ipv4Addr::new(127, 0, 0, 1); -/// assert_eq!("127.0.0.1".parse(), Ok(localhost)); -/// assert_eq!(localhost.is_loopback(), true); -/// assert!("012.004.002.000".parse::().is_err()); // all octets are in octal -/// assert!("0000000.0.0.0".parse::().is_err()); // first octet is a zero in octal -/// assert!("0xcb.0x0.0x71.0x00".parse::().is_err()); // all octets are in hex -/// ``` -#[derive(Copy, Clone, PartialEq, Eq, Hash)] -#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] -pub struct Ipv4Addr { - octets: [u8; 4], -} - -/// An IPv6 address. -/// -/// IPv6 addresses are defined as 128-bit integers in [IETF RFC 4291]. -/// They are usually represented as eight 16-bit segments. -/// -/// [IETF RFC 4291]: https://tools.ietf.org/html/rfc4291 -/// -/// # Embedding IPv4 Addresses -/// -/// See [`IpAddr`] for a type encompassing both IPv4 and IPv6 addresses. -/// -/// To assist in the transition from IPv4 to IPv6 two types of IPv6 addresses that embed an IPv4 address were defined: -/// IPv4-compatible and IPv4-mapped addresses. Of these IPv4-compatible addresses have been officially deprecated. -/// -/// Both types of addresses are not assigned any special meaning by this implementation, -/// other than what the relevant standards prescribe. This means that an address like `::ffff:127.0.0.1`, -/// while representing an IPv4 loopback address, is not itself an IPv6 loopback address; only `::1` is. -/// To handle these so called "IPv4-in-IPv6" addresses, they have to first be converted to their canonical IPv4 address. -/// -/// ### IPv4-Compatible IPv6 Addresses -/// -/// IPv4-compatible IPv6 addresses are defined in [IETF RFC 4291 Section 2.5.5.1], and have been officially deprecated. -/// The RFC describes the format of an "IPv4-Compatible IPv6 address" as follows: -/// -/// ```text -/// | 80 bits | 16 | 32 bits | -/// +--------------------------------------+--------------------------+ -/// |0000..............................0000|0000| IPv4 address | -/// +--------------------------------------+----+---------------------+ -/// ``` -/// So `::a.b.c.d` would be an IPv4-compatible IPv6 address representing the IPv4 address `a.b.c.d`. -/// -/// To convert from an IPv4 address to an IPv4-compatible IPv6 address, use [`Ipv4Addr::to_ipv6_compatible`]. -/// Use [`Ipv6Addr::to_ipv4`] to convert an IPv4-compatible IPv6 address to the canonical IPv4 address. -/// -/// [IETF RFC 4291 Section 2.5.5.1]: https://datatracker.ietf.org/doc/html/rfc4291#section-2.5.5.1 -/// -/// ### IPv4-Mapped IPv6 Addresses -/// -/// IPv4-mapped IPv6 addresses are defined in [IETF RFC 4291 Section 2.5.5.2]. -/// The RFC describes the format of an "IPv4-Mapped IPv6 address" as follows: -/// -/// ```text -/// | 80 bits | 16 | 32 bits | -/// +--------------------------------------+--------------------------+ -/// |0000..............................0000|FFFF| IPv4 address | -/// +--------------------------------------+----+---------------------+ -/// ``` -/// So `::ffff:a.b.c.d` would be an IPv4-mapped IPv6 address representing the IPv4 address `a.b.c.d`. -/// -/// To convert from an IPv4 address to an IPv4-mapped IPv6 address, use [`Ipv4Addr::to_ipv6_mapped`]. -/// Use [`Ipv6Addr::to_ipv4`] to convert an IPv4-mapped IPv6 address to the canonical IPv4 address. -/// Note that this will also convert the IPv6 loopback address `::1` to `0.0.0.1`. Use -/// [`Ipv6Addr::to_ipv4_mapped`] to avoid this. -/// -/// [IETF RFC 4291 Section 2.5.5.2]: https://datatracker.ietf.org/doc/html/rfc4291#section-2.5.5.2 -/// -/// # Textual representation -/// -/// `Ipv6Addr` provides a [`FromStr`] implementation. There are many ways to represent -/// an IPv6 address in text, but in general, each segments is written in hexadecimal -/// notation, and segments are separated by `:`. For more information, see -/// [IETF RFC 5952]. -/// -/// [`FromStr`]: core::str::FromStr -/// [IETF RFC 5952]: https://tools.ietf.org/html/rfc5952 -/// -/// # Examples -/// -/// ``` -/// use std::net::Ipv6Addr; -/// -/// let localhost = Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1); -/// assert_eq!("::1".parse(), Ok(localhost)); -/// assert_eq!(localhost.is_loopback(), true); -/// ``` -#[derive(Copy, Clone, PartialEq, Eq, Hash)] -#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] -pub struct Ipv6Addr { - octets: [u8; 16], -} - -/// Scope of an [IPv6 multicast address] as defined in [IETF RFC 7346 section 2]. -/// -/// # Stability Guarantees -/// -/// Not all possible values for a multicast scope have been assigned. -/// Future RFCs may introduce new scopes, which will be added as variants to this enum; -/// because of this the enum is marked as `#[non_exhaustive]`. -/// -/// # Examples -/// ``` -/// #![feature(ip)] -/// -/// use std::net::Ipv6Addr; -/// use std::net::Ipv6MulticastScope::*; -/// -/// // An IPv6 multicast address with global scope (`ff0e::`). -/// let address = Ipv6Addr::new(0xff0e, 0, 0, 0, 0, 0, 0, 0); -/// -/// // Will print "Global scope". -/// match address.multicast_scope() { -/// Some(InterfaceLocal) => println!("Interface-Local scope"), -/// Some(LinkLocal) => println!("Link-Local scope"), -/// Some(RealmLocal) => println!("Realm-Local scope"), -/// Some(AdminLocal) => println!("Admin-Local scope"), -/// Some(SiteLocal) => println!("Site-Local scope"), -/// Some(OrganizationLocal) => println!("Organization-Local scope"), -/// Some(Global) => println!("Global scope"), -/// Some(_) => println!("Unknown scope"), -/// None => println!("Not a multicast address!") -/// } -/// -/// ``` -/// -/// [IPv6 multicast address]: Ipv6Addr -/// [IETF RFC 7346 section 2]: https://tools.ietf.org/html/rfc7346#section-2 -#[derive(Copy, PartialEq, Eq, Clone, Hash, Debug)] -#[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] -#[non_exhaustive] -pub enum Ipv6MulticastScope { - /// Interface-Local scope. - InterfaceLocal, - /// Link-Local scope. - LinkLocal, - /// Realm-Local scope. - RealmLocal, - /// Admin-Local scope. - AdminLocal, - /// Site-Local scope. - SiteLocal, - /// Organization-Local scope. - OrganizationLocal, - /// Global scope. - Global, -} - -impl IpAddr { - /// Returns [`true`] for the special 'unspecified' address. - /// - /// See the documentation for [`Ipv4Addr::is_unspecified()`] and - /// [`Ipv6Addr::is_unspecified()`] for more details. - /// - /// # Examples - /// - /// ``` - /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; - /// - /// assert_eq!(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)).is_unspecified(), true); - /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0)).is_unspecified(), true); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(feature = "ip_shared", since = "1.12.0"))] - #[must_use] - #[inline] - pub const fn is_unspecified(&self) -> bool { - match self { - IpAddr::V4(ip) => ip.is_unspecified(), - IpAddr::V6(ip) => ip.is_unspecified(), - } - } - - /// Returns [`true`] if this is a loopback address. - /// - /// See the documentation for [`Ipv4Addr::is_loopback()`] and - /// [`Ipv6Addr::is_loopback()`] for more details. - /// - /// # Examples - /// - /// ``` - /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; - /// - /// assert_eq!(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)).is_loopback(), true); - /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0x1)).is_loopback(), true); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(feature = "ip_shared", since = "1.12.0"))] - #[must_use] - #[inline] - pub const fn is_loopback(&self) -> bool { - match self { - IpAddr::V4(ip) => ip.is_loopback(), - IpAddr::V6(ip) => ip.is_loopback(), - } - } - - /// Returns [`true`] if the address appears to be globally routable. - /// - /// See the documentation for [`Ipv4Addr::is_global()`] and - /// [`Ipv6Addr::is_global()`] for more details. - /// - /// # Examples - /// - /// ``` - /// #![feature(ip)] - /// - /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; - /// - /// assert_eq!(IpAddr::V4(Ipv4Addr::new(80, 9, 12, 3)).is_global(), true); - /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0x1c9, 0, 0, 0xafc8, 0, 0x1)).is_global(), true); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_ip", issue = "76205") - )] - #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] - #[must_use] - #[inline] - pub const fn is_global(&self) -> bool { - match self { - IpAddr::V4(ip) => ip.is_global(), - IpAddr::V6(ip) => ip.is_global(), - } - } - - /// Returns [`true`] if this is a multicast address. - /// - /// See the documentation for [`Ipv4Addr::is_multicast()`] and - /// [`Ipv6Addr::is_multicast()`] for more details. - /// - /// # Examples - /// - /// ``` - /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; - /// - /// assert_eq!(IpAddr::V4(Ipv4Addr::new(224, 254, 0, 0)).is_multicast(), true); - /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0)).is_multicast(), true); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(feature = "ip_shared", since = "1.12.0"))] - #[must_use] - #[inline] - pub const fn is_multicast(&self) -> bool { - match self { - IpAddr::V4(ip) => ip.is_multicast(), - IpAddr::V6(ip) => ip.is_multicast(), - } - } - - /// Returns [`true`] if this address is in a range designated for documentation. - /// - /// See the documentation for [`Ipv4Addr::is_documentation()`] and - /// [`Ipv6Addr::is_documentation()`] for more details. - /// - /// # Examples - /// - /// ``` - /// #![feature(ip)] - /// - /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; - /// - /// assert_eq!(IpAddr::V4(Ipv4Addr::new(203, 0, 113, 6)).is_documentation(), true); - /// assert_eq!( - /// IpAddr::V6(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0)).is_documentation(), - /// true - /// ); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_ip", issue = "76205") - )] - #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] - #[must_use] - #[inline] - pub const fn is_documentation(&self) -> bool { - match self { - IpAddr::V4(ip) => ip.is_documentation(), - IpAddr::V6(ip) => ip.is_documentation(), - } - } - - /// Returns [`true`] if this address is in a range designated for benchmarking. - /// - /// See the documentation for [`Ipv4Addr::is_benchmarking()`] and - /// [`Ipv6Addr::is_benchmarking()`] for more details. - /// - /// # Examples - /// - /// ``` - /// #![feature(ip)] - /// - /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; - /// - /// assert_eq!(IpAddr::V4(Ipv4Addr::new(198, 19, 255, 255)).is_benchmarking(), true); - /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0x2001, 0x2, 0, 0, 0, 0, 0, 0)).is_benchmarking(), true); - /// ``` - #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] - #[must_use] - #[inline] - pub const fn is_benchmarking(&self) -> bool { - match self { - IpAddr::V4(ip) => ip.is_benchmarking(), - IpAddr::V6(ip) => ip.is_benchmarking(), - } - } - - /// Returns [`true`] if this address is an [`IPv4` address], and [`false`] - /// otherwise. - /// - /// [`IPv4` address]: IpAddr::V4 - /// - /// # Examples - /// - /// ``` - /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; - /// - /// assert_eq!(IpAddr::V4(Ipv4Addr::new(203, 0, 113, 6)).is_ipv4(), true); - /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0)).is_ipv4(), false); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(feature = "ipaddr_checker", since = "1.16.0"))] - #[must_use] - #[inline] - pub const fn is_ipv4(&self) -> bool { - matches!(self, IpAddr::V4(_)) - } - - /// Returns [`true`] if this address is an [`IPv6` address], and [`false`] - /// otherwise. - /// - /// [`IPv6` address]: IpAddr::V6 - /// - /// # Examples - /// - /// ``` - /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; - /// - /// assert_eq!(IpAddr::V4(Ipv4Addr::new(203, 0, 113, 6)).is_ipv6(), false); - /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0)).is_ipv6(), true); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(feature = "ipaddr_checker", since = "1.16.0"))] - #[must_use] - #[inline] - pub const fn is_ipv6(&self) -> bool { - matches!(self, IpAddr::V6(_)) - } - - /// Converts this address to an `IpAddr::V4` if it is an IPv4-mapped IPv6 addresses, otherwise it - /// return `self` as-is. - /// - /// # Examples - /// - /// ``` - /// #![feature(ip)] - /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; - /// - /// assert_eq!(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)).to_canonical().is_loopback(), true); - /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0x7f00, 0x1)).is_loopback(), false); - /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0x7f00, 0x1)).to_canonical().is_loopback(), true); - /// ``` - #[inline] - #[must_use = "this returns the result of the operation, \ - without modifying the original"] - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_ip", issue = "76205") - )] - #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] - pub const fn to_canonical(&self) -> IpAddr { - match self { - &v4 @ IpAddr::V4(_) => v4, - IpAddr::V6(v6) => v6.to_canonical(), - } - } -} - -impl Ipv4Addr { - /// Creates a new IPv4 address from four eight-bit octets. - /// - /// The result will represent the IP address `a`.`b`.`c`.`d`. - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv4Addr; - /// - /// let addr = Ipv4Addr::new(127, 0, 0, 1); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_32", since = "1.32.0") - )] - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - #[must_use] - #[inline] - pub const fn new(a: u8, b: u8, c: u8, d: u8) -> Ipv4Addr { - Ipv4Addr { - octets: [a, b, c, d], - } - } - - /// An IPv4 address with the address pointing to localhost: `127.0.0.1` - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv4Addr; - /// - /// let addr = Ipv4Addr::LOCALHOST; - /// assert_eq!(addr, Ipv4Addr::new(127, 0, 0, 1)); - /// ``` - #[cfg_attr(staged_api, stable(feature = "ip_constructors", since = "1.30.0"))] - pub const LOCALHOST: Self = Ipv4Addr::new(127, 0, 0, 1); - - /// An IPv4 address representing an unspecified address: `0.0.0.0` - /// - /// This corresponds to the constant `INADDR_ANY` in other languages. - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv4Addr; - /// - /// let addr = Ipv4Addr::UNSPECIFIED; - /// assert_eq!(addr, Ipv4Addr::new(0, 0, 0, 0)); - /// ``` - #[doc(alias = "INADDR_ANY")] - #[cfg_attr(staged_api, stable(feature = "ip_constructors", since = "1.30.0"))] - pub const UNSPECIFIED: Self = Ipv4Addr::new(0, 0, 0, 0); - - /// An IPv4 address representing the broadcast address: `255.255.255.255` - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv4Addr; - /// - /// let addr = Ipv4Addr::BROADCAST; - /// assert_eq!(addr, Ipv4Addr::new(255, 255, 255, 255)); - /// ``` - #[cfg_attr(staged_api, stable(feature = "ip_constructors", since = "1.30.0"))] - pub const BROADCAST: Self = Ipv4Addr::new(255, 255, 255, 255); - - /// Returns the four eight-bit integers that make up this address. - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv4Addr; - /// - /// let addr = Ipv4Addr::new(127, 0, 0, 1); - /// assert_eq!(addr.octets(), [127, 0, 0, 1]); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - #[must_use] - #[inline] - pub const fn octets(&self) -> [u8; 4] { - self.octets - } - - /// Returns [`true`] for the special 'unspecified' address (`0.0.0.0`). - /// - /// This property is defined in _UNIX Network Programming, Second Edition_, - /// W. Richard Stevens, p. 891; see also [ip7]. - /// - /// [ip7]: https://man7.org/linux/man-pages/man7/ip.7.html - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv4Addr; - /// - /// assert_eq!(Ipv4Addr::new(0, 0, 0, 0).is_unspecified(), true); - /// assert_eq!(Ipv4Addr::new(45, 22, 13, 197).is_unspecified(), false); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_32", since = "1.32.0") - )] - #[cfg_attr(staged_api, stable(feature = "ip_shared", since = "1.12.0"))] - #[must_use] - #[inline] - pub const fn is_unspecified(&self) -> bool { - u32::from_be_bytes(self.octets) == 0 - } - - /// Returns [`true`] if this is a loopback address (`127.0.0.0/8`). - /// - /// This property is defined by [IETF RFC 1122]. - /// - /// [IETF RFC 1122]: https://tools.ietf.org/html/rfc1122 - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv4Addr; - /// - /// assert_eq!(Ipv4Addr::new(127, 0, 0, 1).is_loopback(), true); - /// assert_eq!(Ipv4Addr::new(45, 22, 13, 197).is_loopback(), false); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))] - #[must_use] - #[inline] - pub const fn is_loopback(&self) -> bool { - self.octets()[0] == 127 - } - - /// Returns [`true`] if this is a private address. - /// - /// The private address ranges are defined in [IETF RFC 1918] and include: - /// - /// - `10.0.0.0/8` - /// - `172.16.0.0/12` - /// - `192.168.0.0/16` - /// - /// [IETF RFC 1918]: https://tools.ietf.org/html/rfc1918 - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv4Addr; - /// - /// assert_eq!(Ipv4Addr::new(10, 0, 0, 1).is_private(), true); - /// assert_eq!(Ipv4Addr::new(10, 10, 10, 10).is_private(), true); - /// assert_eq!(Ipv4Addr::new(172, 16, 10, 10).is_private(), true); - /// assert_eq!(Ipv4Addr::new(172, 29, 45, 14).is_private(), true); - /// assert_eq!(Ipv4Addr::new(172, 32, 0, 2).is_private(), false); - /// assert_eq!(Ipv4Addr::new(192, 168, 0, 2).is_private(), true); - /// assert_eq!(Ipv4Addr::new(192, 169, 0, 2).is_private(), false); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))] - #[must_use] - #[inline] - pub const fn is_private(&self) -> bool { - match self.octets() { - [10, ..] => true, - [172, b, ..] if b >= 16 && b <= 31 => true, - [192, 168, ..] => true, - _ => false, - } - } - - /// Returns [`true`] if the address is link-local (`169.254.0.0/16`). - /// - /// This property is defined by [IETF RFC 3927]. - /// - /// [IETF RFC 3927]: https://tools.ietf.org/html/rfc3927 - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv4Addr; - /// - /// assert_eq!(Ipv4Addr::new(169, 254, 0, 0).is_link_local(), true); - /// assert_eq!(Ipv4Addr::new(169, 254, 10, 65).is_link_local(), true); - /// assert_eq!(Ipv4Addr::new(16, 89, 10, 65).is_link_local(), false); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))] - #[must_use] - #[inline] - pub const fn is_link_local(&self) -> bool { - matches!(self.octets(), [169, 254, ..]) - } - - /// Returns [`true`] if the address appears to be globally reachable - /// as specified by the [IANA IPv4 Special-Purpose Address Registry]. - /// Whether or not an address is practically reachable will depend on your network configuration. - /// - /// Most IPv4 addresses are globally reachable; - /// unless they are specifically defined as *not* globally reachable. - /// - /// Non-exhaustive list of notable addresses that are not globally reachable: - /// - /// - The [unspecified address] ([`is_unspecified`](Ipv4Addr::is_unspecified)) - /// - Addresses reserved for private use ([`is_private`](Ipv4Addr::is_private)) - /// - Addresses in the shared address space ([`is_shared`](Ipv4Addr::is_shared)) - /// - Loopback addresses ([`is_loopback`](Ipv4Addr::is_loopback)) - /// - Link-local addresses ([`is_link_local`](Ipv4Addr::is_link_local)) - /// - Addresses reserved for documentation ([`is_documentation`](Ipv4Addr::is_documentation)) - /// - Addresses reserved for benchmarking ([`is_benchmarking`](Ipv4Addr::is_benchmarking)) - /// - Reserved addresses ([`is_reserved`](Ipv4Addr::is_reserved)) - /// - The [broadcast address] ([`is_broadcast`](Ipv4Addr::is_broadcast)) - /// - /// For the complete overview of which addresses are globally reachable, see the table at the [IANA IPv4 Special-Purpose Address Registry]. - /// - /// [IANA IPv4 Special-Purpose Address Registry]: https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml - /// [unspecified address]: Ipv4Addr::UNSPECIFIED - /// [broadcast address]: Ipv4Addr::BROADCAST - - /// - /// # Examples - /// - /// ``` - /// #![feature(ip)] - /// - /// use std::net::Ipv4Addr; - /// - /// // Most IPv4 addresses are globally reachable: - /// assert_eq!(Ipv4Addr::new(80, 9, 12, 3).is_global(), true); - /// - /// // However some addresses have been assigned a special meaning - /// // that makes them not globally reachable. Some examples are: - /// - /// // The unspecified address (`0.0.0.0`) - /// assert_eq!(Ipv4Addr::UNSPECIFIED.is_global(), false); - /// - /// // Addresses reserved for private use (`10.0.0.0/8`, `172.16.0.0/12`, 192.168.0.0/16) - /// assert_eq!(Ipv4Addr::new(10, 254, 0, 0).is_global(), false); - /// assert_eq!(Ipv4Addr::new(192, 168, 10, 65).is_global(), false); - /// assert_eq!(Ipv4Addr::new(172, 16, 10, 65).is_global(), false); - /// - /// // Addresses in the shared address space (`100.64.0.0/10`) - /// assert_eq!(Ipv4Addr::new(100, 100, 0, 0).is_global(), false); - /// - /// // The loopback addresses (`127.0.0.0/8`) - /// assert_eq!(Ipv4Addr::LOCALHOST.is_global(), false); - /// - /// // Link-local addresses (`169.254.0.0/16`) - /// assert_eq!(Ipv4Addr::new(169, 254, 45, 1).is_global(), false); - /// - /// // Addresses reserved for documentation (`192.0.2.0/24`, `198.51.100.0/24`, `203.0.113.0/24`) - /// assert_eq!(Ipv4Addr::new(192, 0, 2, 255).is_global(), false); - /// assert_eq!(Ipv4Addr::new(198, 51, 100, 65).is_global(), false); - /// assert_eq!(Ipv4Addr::new(203, 0, 113, 6).is_global(), false); - /// - /// // Addresses reserved for benchmarking (`198.18.0.0/15`) - /// assert_eq!(Ipv4Addr::new(198, 18, 0, 0).is_global(), false); - /// - /// // Reserved addresses (`240.0.0.0/4`) - /// assert_eq!(Ipv4Addr::new(250, 10, 20, 30).is_global(), false); - /// - /// // The broadcast address (`255.255.255.255`) - /// assert_eq!(Ipv4Addr::BROADCAST.is_global(), false); - /// - /// // For a complete overview see the IANA IPv4 Special-Purpose Address Registry. - /// ``` - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_ipv4", issue = "76205") - )] - #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] - #[must_use] - #[inline] - pub const fn is_global(&self) -> bool { - !(self.octets()[0] == 0 // "This network" - || self.is_private() - || self.is_shared() - || self.is_loopback() - || self.is_link_local() - // addresses reserved for future protocols (`192.0.0.0/24`) - ||(self.octets()[0] == 192 && self.octets()[1] == 0 && self.octets()[2] == 0) - || self.is_documentation() - || self.is_benchmarking() - || self.is_reserved() - || self.is_broadcast()) - } - - /// Returns [`true`] if this address is part of the Shared Address Space defined in - /// [IETF RFC 6598] (`100.64.0.0/10`). - /// - /// [IETF RFC 6598]: https://tools.ietf.org/html/rfc6598 - /// - /// # Examples - /// - /// ``` - /// #![feature(ip)] - /// use std::net::Ipv4Addr; - /// - /// assert_eq!(Ipv4Addr::new(100, 64, 0, 0).is_shared(), true); - /// assert_eq!(Ipv4Addr::new(100, 127, 255, 255).is_shared(), true); - /// assert_eq!(Ipv4Addr::new(100, 128, 0, 0).is_shared(), false); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_ipv4", issue = "76205") - )] - #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] - #[must_use] - #[inline] - pub const fn is_shared(&self) -> bool { - self.octets()[0] == 100 && (self.octets()[1] & 0b1100_0000 == 0b0100_0000) - } - - /// Returns [`true`] if this address part of the `198.18.0.0/15` range, which is reserved for - /// network devices benchmarking. This range is defined in [IETF RFC 2544] as `192.18.0.0` - /// through `198.19.255.255` but [errata 423] corrects it to `198.18.0.0/15`. - /// - /// [IETF RFC 2544]: https://tools.ietf.org/html/rfc2544 - /// [errata 423]: https://www.rfc-editor.org/errata/eid423 - /// - /// # Examples - /// - /// ``` - /// #![feature(ip)] - /// use std::net::Ipv4Addr; - /// - /// assert_eq!(Ipv4Addr::new(198, 17, 255, 255).is_benchmarking(), false); - /// assert_eq!(Ipv4Addr::new(198, 18, 0, 0).is_benchmarking(), true); - /// assert_eq!(Ipv4Addr::new(198, 19, 255, 255).is_benchmarking(), true); - /// assert_eq!(Ipv4Addr::new(198, 20, 0, 0).is_benchmarking(), false); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_ipv4", issue = "76205") - )] - #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] - #[must_use] - #[inline] - pub const fn is_benchmarking(&self) -> bool { - self.octets()[0] == 198 && (self.octets()[1] & 0xfe) == 18 - } - - /// Returns [`true`] if this address is reserved by IANA for future use. [IETF RFC 1112] - /// defines the block of reserved addresses as `240.0.0.0/4`. This range normally includes the - /// broadcast address `255.255.255.255`, but this implementation explicitly excludes it, since - /// it is obviously not reserved for future use. - /// - /// [IETF RFC 1112]: https://tools.ietf.org/html/rfc1112 - /// - /// # Warning - /// - /// As IANA assigns new addresses, this method will be - /// updated. This may result in non-reserved addresses being - /// treated as reserved in code that relies on an outdated version - /// of this method. - /// - /// # Examples - /// - /// ``` - /// #![feature(ip)] - /// use std::net::Ipv4Addr; - /// - /// assert_eq!(Ipv4Addr::new(240, 0, 0, 0).is_reserved(), true); - /// assert_eq!(Ipv4Addr::new(255, 255, 255, 254).is_reserved(), true); - /// - /// assert_eq!(Ipv4Addr::new(239, 255, 255, 255).is_reserved(), false); - /// // The broadcast address is not considered as reserved for future use by this implementation - /// assert_eq!(Ipv4Addr::new(255, 255, 255, 255).is_reserved(), false); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_ipv4", issue = "76205") - )] - #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] - #[must_use] - #[inline] - pub const fn is_reserved(&self) -> bool { - self.octets()[0] & 240 == 240 && !self.is_broadcast() - } - - /// Returns [`true`] if this is a multicast address (`224.0.0.0/4`). - /// - /// Multicast addresses have a most significant octet between `224` and `239`, - /// and is defined by [IETF RFC 5771]. - /// - /// [IETF RFC 5771]: https://tools.ietf.org/html/rfc5771 - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv4Addr; - /// - /// assert_eq!(Ipv4Addr::new(224, 254, 0, 0).is_multicast(), true); - /// assert_eq!(Ipv4Addr::new(236, 168, 10, 65).is_multicast(), true); - /// assert_eq!(Ipv4Addr::new(172, 16, 10, 65).is_multicast(), false); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))] - #[must_use] - #[inline] - pub const fn is_multicast(&self) -> bool { - self.octets()[0] >= 224 && self.octets()[0] <= 239 - } - - /// Returns [`true`] if this is a broadcast address (`255.255.255.255`). - /// - /// A broadcast address has all octets set to `255` as defined in [IETF RFC 919]. - /// - /// [IETF RFC 919]: https://tools.ietf.org/html/rfc919 - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv4Addr; - /// - /// assert_eq!(Ipv4Addr::new(255, 255, 255, 255).is_broadcast(), true); - /// assert_eq!(Ipv4Addr::new(236, 168, 10, 65).is_broadcast(), false); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))] - #[must_use] - #[inline] - pub const fn is_broadcast(&self) -> bool { - u32::from_be_bytes(self.octets()) == u32::from_be_bytes(Self::BROADCAST.octets()) - } - - /// Returns [`true`] if this address is in a range designated for documentation. - /// - /// This is defined in [IETF RFC 5737]: - /// - /// - `192.0.2.0/24` (TEST-NET-1) - /// - `198.51.100.0/24` (TEST-NET-2) - /// - `203.0.113.0/24` (TEST-NET-3) - /// - /// [IETF RFC 5737]: https://tools.ietf.org/html/rfc5737 - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv4Addr; - /// - /// assert_eq!(Ipv4Addr::new(192, 0, 2, 255).is_documentation(), true); - /// assert_eq!(Ipv4Addr::new(198, 51, 100, 65).is_documentation(), true); - /// assert_eq!(Ipv4Addr::new(203, 0, 113, 6).is_documentation(), true); - /// assert_eq!(Ipv4Addr::new(193, 34, 17, 19).is_documentation(), false); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))] - #[must_use] - #[inline] - pub const fn is_documentation(&self) -> bool { - matches!( - self.octets(), - [192, 0, 2, _] | [198, 51, 100, _] | [203, 0, 113, _] - ) - } - - /// Converts this address to an [IPv4-compatible] [`IPv6` address]. - /// - /// `a.b.c.d` becomes `::a.b.c.d` - /// - /// Note that IPv4-compatible addresses have been officially deprecated. - /// If you don't explicitly need an IPv4-compatible address for legacy reasons, consider using `to_ipv6_mapped` instead. - /// - /// [IPv4-compatible]: Ipv6Addr#ipv4-compatible-ipv6-addresses - /// [`IPv6` address]: Ipv6Addr - /// - /// # Examples - /// - /// ``` - /// use std::net::{Ipv4Addr, Ipv6Addr}; - /// - /// assert_eq!( - /// Ipv4Addr::new(192, 0, 2, 255).to_ipv6_compatible(), - /// Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0xc000, 0x2ff) - /// ); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - #[must_use = "this returns the result of the operation, \ - without modifying the original"] - #[inline] - pub const fn to_ipv6_compatible(&self) -> Ipv6Addr { - let [a, b, c, d] = self.octets(); - Ipv6Addr { - octets: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, a, b, c, d], - } - } - - /// Converts this address to an [IPv4-mapped] [`IPv6` address]. - /// - /// `a.b.c.d` becomes `::ffff:a.b.c.d` - /// - /// [IPv4-mapped]: Ipv6Addr#ipv4-mapped-ipv6-addresses - /// [`IPv6` address]: Ipv6Addr - /// - /// # Examples - /// - /// ``` - /// use std::net::{Ipv4Addr, Ipv6Addr}; - /// - /// assert_eq!(Ipv4Addr::new(192, 0, 2, 255).to_ipv6_mapped(), - /// Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc000, 0x2ff)); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - #[must_use = "this returns the result of the operation, \ - without modifying the original"] - #[inline] - pub const fn to_ipv6_mapped(&self) -> Ipv6Addr { - let [a, b, c, d] = self.octets(); - Ipv6Addr { - octets: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xFF, 0xFF, a, b, c, d], - } - } -} - -#[cfg_attr(staged_api, stable(feature = "ip_from_ip", since = "1.16.0"))] -impl From for IpAddr { - /// Copies this address to a new `IpAddr::V4`. - /// - /// # Examples - /// - /// ``` - /// use std::net::{IpAddr, Ipv4Addr}; - /// - /// let addr = Ipv4Addr::new(127, 0, 0, 1); - /// - /// assert_eq!( - /// IpAddr::V4(addr), - /// IpAddr::from(addr) - /// ) - /// ``` - #[inline] - fn from(ipv4: Ipv4Addr) -> IpAddr { - IpAddr::V4(ipv4) - } -} - -#[cfg_attr(staged_api, stable(feature = "ip_from_ip", since = "1.16.0"))] -impl From for IpAddr { - /// Copies this address to a new `IpAddr::V6`. - /// - /// # Examples - /// - /// ``` - /// use std::net::{IpAddr, Ipv6Addr}; - /// - /// let addr = Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff); - /// - /// assert_eq!( - /// IpAddr::V6(addr), - /// IpAddr::from(addr) - /// ); - /// ``` - #[inline] - fn from(ipv6: Ipv6Addr) -> IpAddr { - IpAddr::V6(ipv6) - } -} - -#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))] -impl PartialEq for IpAddr { - #[inline] - fn eq(&self, other: &Ipv4Addr) -> bool { - match self { - IpAddr::V4(v4) => v4 == other, - IpAddr::V6(_) => false, - } - } -} - -#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))] -impl PartialEq for Ipv4Addr { - #[inline] - fn eq(&self, other: &IpAddr) -> bool { - match other { - IpAddr::V4(v4) => self == v4, - IpAddr::V6(_) => false, - } - } -} - -#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] -impl PartialOrd for Ipv4Addr { - #[inline] - fn partial_cmp(&self, other: &Ipv4Addr) -> Option { - Some(self.cmp(other)) - } -} - -#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))] -impl PartialOrd for IpAddr { - #[inline] - fn partial_cmp(&self, other: &Ipv4Addr) -> Option { - match self { - IpAddr::V4(v4) => v4.partial_cmp(other), - IpAddr::V6(_) => Some(Ordering::Greater), - } - } -} - -#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))] -impl PartialOrd for Ipv4Addr { - #[inline] - fn partial_cmp(&self, other: &IpAddr) -> Option { - match other { - IpAddr::V4(v4) => self.partial_cmp(v4), - IpAddr::V6(_) => Some(Ordering::Less), - } - } -} - -#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] -impl Ord for Ipv4Addr { - #[inline] - fn cmp(&self, other: &Ipv4Addr) -> Ordering { - self.octets.cmp(&other.octets) - } -} - -#[cfg_attr(staged_api, stable(feature = "ip_u32", since = "1.1.0"))] -impl From for u32 { - /// Converts an `Ipv4Addr` into a host byte order `u32`. - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv4Addr; - /// - /// let addr = Ipv4Addr::new(0x12, 0x34, 0x56, 0x78); - /// assert_eq!(0x12345678, u32::from(addr)); - /// ``` - #[inline] - fn from(ip: Ipv4Addr) -> u32 { - u32::from_be_bytes(ip.octets) - } -} - -#[cfg_attr(staged_api, stable(feature = "ip_u32", since = "1.1.0"))] -impl From for Ipv4Addr { - /// Converts a host byte order `u32` into an `Ipv4Addr`. - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv4Addr; - /// - /// let addr = Ipv4Addr::from(0x12345678); - /// assert_eq!(Ipv4Addr::new(0x12, 0x34, 0x56, 0x78), addr); - /// ``` - #[inline] - fn from(ip: u32) -> Ipv4Addr { - Ipv4Addr { - octets: ip.to_be_bytes(), - } - } -} - -#[cfg_attr(staged_api, stable(feature = "from_slice_v4", since = "1.9.0"))] -impl From<[u8; 4]> for Ipv4Addr { - /// Creates an `Ipv4Addr` from a four element byte array. - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv4Addr; - /// - /// let addr = Ipv4Addr::from([13u8, 12u8, 11u8, 10u8]); - /// assert_eq!(Ipv4Addr::new(13, 12, 11, 10), addr); - /// ``` - #[inline] - fn from(octets: [u8; 4]) -> Ipv4Addr { - Ipv4Addr { octets } - } -} - -#[cfg_attr(staged_api, stable(feature = "ip_from_slice", since = "1.17.0"))] -impl From<[u8; 4]> for IpAddr { - /// Creates an `IpAddr::V4` from a four element byte array. - /// - /// # Examples - /// - /// ``` - /// use std::net::{IpAddr, Ipv4Addr}; - /// - /// let addr = IpAddr::from([13u8, 12u8, 11u8, 10u8]); - /// assert_eq!(IpAddr::V4(Ipv4Addr::new(13, 12, 11, 10)), addr); - /// ``` - #[inline] - fn from(octets: [u8; 4]) -> IpAddr { - IpAddr::V4(Ipv4Addr::from(octets)) - } -} - -impl Ipv6Addr { - /// Creates a new IPv6 address from eight 16-bit segments. - /// - /// The result will represent the IP address `a:b:c:d:e:f:g:h`. - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv6Addr; - /// - /// let addr = Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_32", since = "1.32.0") - )] - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - #[allow(clippy::too_many_arguments)] - #[must_use] - #[inline] - pub const fn new(a: u16, b: u16, c: u16, d: u16, e: u16, f: u16, g: u16, h: u16) -> Ipv6Addr { - let addr16 = [ - a.to_be(), - b.to_be(), - c.to_be(), - d.to_be(), - e.to_be(), - f.to_be(), - g.to_be(), - h.to_be(), - ]; - Ipv6Addr { - // All elements in `addr16` are big endian. - // SAFETY: `[u16; 8]` is always safe to transmute to `[u8; 16]`. - octets: unsafe { transmute::<_, [u8; 16]>(addr16) }, - } - } - - /// An IPv6 address representing localhost: `::1`. - /// - /// This corresponds to constant `IN6ADDR_LOOPBACK_INIT` or `in6addr_loopback` in other - /// languages. - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv6Addr; - /// - /// let addr = Ipv6Addr::LOCALHOST; - /// assert_eq!(addr, Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1)); - /// ``` - #[doc(alias = "IN6ADDR_LOOPBACK_INIT")] - #[doc(alias = "in6addr_loopback")] - #[cfg_attr(staged_api, stable(feature = "ip_constructors", since = "1.30.0"))] - pub const LOCALHOST: Self = Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1); - - /// An IPv6 address representing the unspecified address: `::` - /// - /// This corresponds to constant `IN6ADDR_ANY_INIT` or `in6addr_any` in other languages. - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv6Addr; - /// - /// let addr = Ipv6Addr::UNSPECIFIED; - /// assert_eq!(addr, Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0)); - /// ``` - #[doc(alias = "IN6ADDR_ANY_INIT")] - #[doc(alias = "in6addr_any")] - #[cfg_attr(staged_api, stable(feature = "ip_constructors", since = "1.30.0"))] - pub const UNSPECIFIED: Self = Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0); - - /// Returns the eight 16-bit segments that make up this address. - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv6Addr; - /// - /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).segments(), - /// [0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff]); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - #[must_use] - #[inline] - pub const fn segments(&self) -> [u16; 8] { - // All elements in `self.octets` must be big endian. - // SAFETY: `[u8; 16]` is always safe to transmute to `[u16; 8]`. - let [a, b, c, d, e, f, g, h] = unsafe { transmute::<_, [u16; 8]>(self.octets) }; - // We want native endian u16 - [ - u16::from_be(a), - u16::from_be(b), - u16::from_be(c), - u16::from_be(d), - u16::from_be(e), - u16::from_be(f), - u16::from_be(g), - u16::from_be(h), - ] - } - - /// Returns [`true`] for the special 'unspecified' address (`::`). - /// - /// This property is defined in [IETF RFC 4291]. - /// - /// [IETF RFC 4291]: https://tools.ietf.org/html/rfc4291 - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv6Addr; - /// - /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_unspecified(), false); - /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0).is_unspecified(), true); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))] - #[must_use] - #[inline] - pub const fn is_unspecified(&self) -> bool { - u128::from_be_bytes(self.octets()) == u128::from_be_bytes(Ipv6Addr::UNSPECIFIED.octets()) - } - - /// Returns [`true`] if this is the [loopback address] (`::1`), - /// as defined in [IETF RFC 4291 section 2.5.3]. - /// - /// Contrary to IPv4, in IPv6 there is only one loopback address. - /// - /// [loopback address]: Ipv6Addr::LOCALHOST - /// [IETF RFC 4291 section 2.5.3]: https://tools.ietf.org/html/rfc4291#section-2.5.3 - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv6Addr; - /// - /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_loopback(), false); - /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0x1).is_loopback(), true); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))] - #[must_use] - #[inline] - pub const fn is_loopback(&self) -> bool { - u128::from_be_bytes(self.octets()) == u128::from_be_bytes(Ipv6Addr::LOCALHOST.octets()) - } - - /// Returns [`true`] if the address appears to be globally reachable - /// as specified by the [IANA IPv6 Special-Purpose Address Registry]. - /// Whether or not an address is practically reachable will depend on your network configuration. - /// - /// Most IPv6 addresses are globally reachable; - /// unless they are specifically defined as *not* globally reachable. - /// - /// Non-exhaustive list of notable addresses that are not globally reachable: - /// - The [unspecified address] ([`is_unspecified`](Ipv6Addr::is_unspecified)) - /// - The [loopback address] ([`is_loopback`](Ipv6Addr::is_loopback)) - /// - IPv4-mapped addresses - /// - Addresses reserved for benchmarking - /// - Addresses reserved for documentation ([`is_documentation`](Ipv6Addr::is_documentation)) - /// - Unique local addresses ([`is_unique_local`](Ipv6Addr::is_unique_local)) - /// - Unicast addresses with link-local scope ([`is_unicast_link_local`](Ipv6Addr::is_unicast_link_local)) - /// - /// For the complete overview of which addresses are globally reachable, see the table at the [IANA IPv6 Special-Purpose Address Registry]. - /// - /// Note that an address having global scope is not the same as being globally reachable, - /// and there is no direct relation between the two concepts: There exist addresses with global scope - /// that are not globally reachable (for example unique local addresses), - /// and addresses that are globally reachable without having global scope - /// (multicast addresses with non-global scope). - /// - /// [IANA IPv6 Special-Purpose Address Registry]: https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml - /// [unspecified address]: Ipv6Addr::UNSPECIFIED - /// [loopback address]: Ipv6Addr::LOCALHOST - /// - /// # Examples - /// - /// ``` - /// #![feature(ip)] - /// - /// use std::net::Ipv6Addr; - /// - /// // Most IPv6 addresses are globally reachable: - /// assert_eq!(Ipv6Addr::new(0x26, 0, 0x1c9, 0, 0, 0xafc8, 0x10, 0x1).is_global(), true); - /// - /// // However some addresses have been assigned a special meaning - /// // that makes them not globally reachable. Some examples are: - /// - /// // The unspecified address (`::`) - /// assert_eq!(Ipv6Addr::UNSPECIFIED.is_global(), false); - /// - /// // The loopback address (`::1`) - /// assert_eq!(Ipv6Addr::LOCALHOST.is_global(), false); - /// - /// // IPv4-mapped addresses (`::ffff:0:0/96`) - /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_global(), false); - /// - /// // Addresses reserved for benchmarking (`2001:2::/48`) - /// assert_eq!(Ipv6Addr::new(0x2001, 2, 0, 0, 0, 0, 0, 1,).is_global(), false); - /// - /// // Addresses reserved for documentation (`2001:db8::/32`) - /// assert_eq!(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1).is_global(), false); - /// - /// // Unique local addresses (`fc00::/7`) - /// assert_eq!(Ipv6Addr::new(0xfc02, 0, 0, 0, 0, 0, 0, 1).is_global(), false); - /// - /// // Unicast addresses with link-local scope (`fe80::/10`) - /// assert_eq!(Ipv6Addr::new(0xfe81, 0, 0, 0, 0, 0, 0, 1).is_global(), false); - /// - /// // For a complete overview see the IANA IPv6 Special-Purpose Address Registry. - /// ``` - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_ipv6", issue = "76205") - )] - #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] - #[must_use] - #[inline] - pub const fn is_global(&self) -> bool { - !(self.is_unspecified() - || self.is_loopback() - // IPv4-mapped Address (`::ffff:0:0/96`) - || matches!(self.segments(), [0, 0, 0, 0, 0, 0xffff, _, _]) - // IPv4-IPv6 Translat. (`64:ff9b:1::/48`) - || matches!(self.segments(), [0x64, 0xff9b, 1, _, _, _, _, _]) - // Discard-Only Address Block (`100::/64`) - || matches!(self.segments(), [0x100, 0, 0, 0, _, _, _, _]) - // IETF Protocol Assignments (`2001::/23`) - || (matches!(self.segments(), [0x2001, b, _, _, _, _, _, _] if b < 0x200) - && !( - // Port Control Protocol Anycast (`2001:1::1`) - u128::from_be_bytes(self.octets()) == 0x2001_0001_0000_0000_0000_0000_0000_0001 - // Traversal Using Relays around NAT Anycast (`2001:1::2`) - || u128::from_be_bytes(self.octets()) == 0x2001_0001_0000_0000_0000_0000_0000_0002 - // AMT (`2001:3::/32`) - || matches!(self.segments(), [0x2001, 3, _, _, _, _, _, _]) - // AS112-v6 (`2001:4:112::/48`) - || matches!(self.segments(), [0x2001, 4, 0x112, _, _, _, _, _]) - // ORCHIDv2 (`2001:20::/28`) - || matches!(self.segments(), [0x2001, b, _, _, _, _, _, _] if b >= 0x20 && b <= 0x2F) - )) - || self.is_documentation() - || self.is_unique_local() - || self.is_unicast_link_local()) - } - - /// Returns [`true`] if this is a unique local address (`fc00::/7`). - /// - /// This property is defined in [IETF RFC 4193]. - /// - /// [IETF RFC 4193]: https://tools.ietf.org/html/rfc4193 - /// - /// # Examples - /// - /// ``` - /// #![feature(ip)] - /// - /// use std::net::Ipv6Addr; - /// - /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_unique_local(), false); - /// assert_eq!(Ipv6Addr::new(0xfc02, 0, 0, 0, 0, 0, 0, 0).is_unique_local(), true); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_ipv6", issue = "76205") - )] - #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] - #[must_use] - #[inline] - pub const fn is_unique_local(&self) -> bool { - (self.segments()[0] & 0xfe00) == 0xfc00 - } - - /// Returns [`true`] if this is a unicast address, as defined by [IETF RFC 4291]. - /// Any address that is not a [multicast address] (`ff00::/8`) is unicast. - /// - /// [IETF RFC 4291]: https://tools.ietf.org/html/rfc4291 - /// [multicast address]: Ipv6Addr::is_multicast - /// - /// # Examples - /// - /// ``` - /// #![feature(ip)] - /// - /// use std::net::Ipv6Addr; - /// - /// // The unspecified and loopback addresses are unicast. - /// assert_eq!(Ipv6Addr::UNSPECIFIED.is_unicast(), true); - /// assert_eq!(Ipv6Addr::LOCALHOST.is_unicast(), true); - /// - /// // Any address that is not a multicast address (`ff00::/8`) is unicast. - /// assert_eq!(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0).is_unicast(), true); - /// assert_eq!(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0).is_unicast(), false); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_ipv6", issue = "76205") - )] - #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] - #[must_use] - #[inline] - pub const fn is_unicast(&self) -> bool { - !self.is_multicast() - } - - /// Returns `true` if the address is a unicast address with link-local scope, - /// as defined in [RFC 4291]. - /// - /// A unicast address has link-local scope if it has the prefix `fe80::/10`, as per [RFC 4291 section 2.4]. - /// Note that this encompasses more addresses than those defined in [RFC 4291 section 2.5.6], - /// which describes "Link-Local IPv6 Unicast Addresses" as having the following stricter format: - /// - /// ```text - /// | 10 bits | 54 bits | 64 bits | - /// +----------+-------------------------+----------------------------+ - /// |1111111010| 0 | interface ID | - /// +----------+-------------------------+----------------------------+ - /// ``` - /// So while currently the only addresses with link-local scope an application will encounter are all in `fe80::/64`, - /// this might change in the future with the publication of new standards. More addresses in `fe80::/10` could be allocated, - /// and those addresses will have link-local scope. - /// - /// Also note that while [RFC 4291 section 2.5.3] mentions about the [loopback address] (`::1`) that "it is treated as having Link-Local scope", - /// this does not mean that the loopback address actually has link-local scope and this method will return `false` on it. - /// - /// [RFC 4291]: https://tools.ietf.org/html/rfc4291 - /// [RFC 4291 section 2.4]: https://tools.ietf.org/html/rfc4291#section-2.4 - /// [RFC 4291 section 2.5.3]: https://tools.ietf.org/html/rfc4291#section-2.5.3 - /// [RFC 4291 section 2.5.6]: https://tools.ietf.org/html/rfc4291#section-2.5.6 - /// [loopback address]: Ipv6Addr::LOCALHOST - /// - /// # Examples - /// - /// ``` - /// #![feature(ip)] - /// - /// use std::net::Ipv6Addr; - /// - /// // The loopback address (`::1`) does not actually have link-local scope. - /// assert_eq!(Ipv6Addr::LOCALHOST.is_unicast_link_local(), false); - /// - /// // Only addresses in `fe80::/10` have link-local scope. - /// assert_eq!(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0).is_unicast_link_local(), false); - /// assert_eq!(Ipv6Addr::new(0xfe80, 0, 0, 0, 0, 0, 0, 0).is_unicast_link_local(), true); - /// - /// // Addresses outside the stricter `fe80::/64` also have link-local scope. - /// assert_eq!(Ipv6Addr::new(0xfe80, 0, 0, 1, 0, 0, 0, 0).is_unicast_link_local(), true); - /// assert_eq!(Ipv6Addr::new(0xfe81, 0, 0, 0, 0, 0, 0, 0).is_unicast_link_local(), true); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_ipv6", issue = "76205") - )] - #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] - #[must_use] - #[inline] - pub const fn is_unicast_link_local(&self) -> bool { - (self.segments()[0] & 0xffc0) == 0xfe80 - } - - /// Returns [`true`] if this is an address reserved for documentation - /// (`2001:db8::/32`). - /// - /// This property is defined in [IETF RFC 3849]. - /// - /// [IETF RFC 3849]: https://tools.ietf.org/html/rfc3849 - /// - /// # Examples - /// - /// ``` - /// #![feature(ip)] - /// - /// use std::net::Ipv6Addr; - /// - /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_documentation(), false); - /// assert_eq!(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0).is_documentation(), true); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_ipv6", issue = "76205") - )] - #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] - #[must_use] - #[inline] - pub const fn is_documentation(&self) -> bool { - (self.segments()[0] == 0x2001) && (self.segments()[1] == 0xdb8) - } - - /// Returns [`true`] if this is an address reserved for benchmarking (`2001:2::/48`). - /// - /// This property is defined in [IETF RFC 5180], where it is mistakenly specified as covering the range `2001:0200::/48`. - /// This is corrected in [IETF RFC Errata 1752] to `2001:0002::/48`. - /// - /// [IETF RFC 5180]: https://tools.ietf.org/html/rfc5180 - /// [IETF RFC Errata 1752]: https://www.rfc-editor.org/errata_search.php?eid=1752 - /// - /// ``` - /// #![feature(ip)] - /// - /// use std::net::Ipv6Addr; - /// - /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc613, 0x0).is_benchmarking(), false); - /// assert_eq!(Ipv6Addr::new(0x2001, 0x2, 0, 0, 0, 0, 0, 0).is_benchmarking(), true); - /// ``` - #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] - #[must_use] - #[inline] - pub const fn is_benchmarking(&self) -> bool { - (self.segments()[0] == 0x2001) && (self.segments()[1] == 0x2) && (self.segments()[2] == 0) - } - - /// Returns [`true`] if the address is a globally routable unicast address. - /// - /// The following return false: - /// - /// - the loopback address - /// - the link-local addresses - /// - unique local addresses - /// - the unspecified address - /// - the address range reserved for documentation - /// - /// This method returns [`true`] for site-local addresses as per [RFC 4291 section 2.5.7] - /// - /// ```no_rust - /// The special behavior of [the site-local unicast] prefix defined in [RFC3513] must no longer - /// be supported in new implementations (i.e., new implementations must treat this prefix as - /// Global Unicast). - /// ``` - /// - /// [RFC 4291 section 2.5.7]: https://tools.ietf.org/html/rfc4291#section-2.5.7 - /// - /// # Examples - /// - /// ``` - /// #![feature(ip)] - /// - /// use std::net::Ipv6Addr; - /// - /// assert_eq!(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0).is_unicast_global(), false); - /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_unicast_global(), true); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_ipv6", issue = "76205") - )] - #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] - #[must_use] - #[inline] - pub const fn is_unicast_global(&self) -> bool { - self.is_unicast() - && !self.is_loopback() - && !self.is_unicast_link_local() - && !self.is_unique_local() - && !self.is_unspecified() - && !self.is_documentation() - && !self.is_benchmarking() - } - - /// Returns the address's multicast scope if the address is multicast. - /// - /// # Examples - /// - /// ``` - /// #![feature(ip)] - /// - /// use std::net::{Ipv6Addr, Ipv6MulticastScope}; - /// - /// assert_eq!( - /// Ipv6Addr::new(0xff0e, 0, 0, 0, 0, 0, 0, 0).multicast_scope(), - /// Some(Ipv6MulticastScope::Global) - /// ); - /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).multicast_scope(), None); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_ipv6", issue = "76205") - )] - #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] - #[must_use] - #[inline] - pub const fn multicast_scope(&self) -> Option { - if self.is_multicast() { - match self.segments()[0] & 0x000f { - 1 => Some(Ipv6MulticastScope::InterfaceLocal), - 2 => Some(Ipv6MulticastScope::LinkLocal), - 3 => Some(Ipv6MulticastScope::RealmLocal), - 4 => Some(Ipv6MulticastScope::AdminLocal), - 5 => Some(Ipv6MulticastScope::SiteLocal), - 8 => Some(Ipv6MulticastScope::OrganizationLocal), - 14 => Some(Ipv6MulticastScope::Global), - _ => None, - } - } else { - None - } - } - - /// Returns [`true`] if this is a multicast address (`ff00::/8`). - /// - /// This property is defined by [IETF RFC 4291]. - /// - /// [IETF RFC 4291]: https://tools.ietf.org/html/rfc4291 - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv6Addr; - /// - /// assert_eq!(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0).is_multicast(), true); - /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_multicast(), false); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))] - #[must_use] - #[inline] - pub const fn is_multicast(&self) -> bool { - (self.segments()[0] & 0xff00) == 0xff00 - } - - /// Converts this address to an [`IPv4` address] if it's an [IPv4-mapped] address, - /// as defined in [IETF RFC 4291 section 2.5.5.2], otherwise returns [`None`]. - /// - /// `::ffff:a.b.c.d` becomes `a.b.c.d`. - /// All addresses *not* starting with `::ffff` will return `None`. - /// - /// [`IPv4` address]: Ipv4Addr - /// [IPv4-mapped]: Ipv6Addr - /// [IETF RFC 4291 section 2.5.5.2]: https://tools.ietf.org/html/rfc4291#section-2.5.5.2 - /// - /// # Examples - /// - /// ``` - /// use std::net::{Ipv4Addr, Ipv6Addr}; - /// - /// assert_eq!(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0).to_ipv4_mapped(), None); - /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).to_ipv4_mapped(), - /// Some(Ipv4Addr::new(192, 10, 2, 255))); - /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1).to_ipv4_mapped(), None); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_ipv6", issue = "76205") - )] - #[cfg_attr(staged_api, stable(feature = "ipv6_to_ipv4_mapped", since = "1.63.0"))] - #[must_use = "this returns the result of the operation, \ - without modifying the original"] - #[inline] - pub const fn to_ipv4_mapped(&self) -> Option { - match self.octets() { - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, a, b, c, d] => { - Some(Ipv4Addr::new(a, b, c, d)) - } - _ => None, - } - } - - /// Converts this address to an [`IPv4` address] if it is either - /// an [IPv4-compatible] address as defined in [IETF RFC 4291 section 2.5.5.1], - /// or an [IPv4-mapped] address as defined in [IETF RFC 4291 section 2.5.5.2], - /// otherwise returns [`None`]. - /// - /// Note that this will return an [`IPv4` address] for the IPv6 loopback address `::1`. Use - /// [`Ipv6Addr::to_ipv4_mapped`] to avoid this. - /// - /// `::a.b.c.d` and `::ffff:a.b.c.d` become `a.b.c.d`. `::1` becomes `0.0.0.1`. - /// All addresses *not* starting with either all zeroes or `::ffff` will return `None`. - /// - /// [`IPv4` address]: Ipv4Addr - /// [IPv4-compatible]: Ipv6Addr#ipv4-compatible-ipv6-addresses - /// [IPv4-mapped]: Ipv6Addr#ipv4-mapped-ipv6-addresses - /// [IETF RFC 4291 section 2.5.5.1]: https://tools.ietf.org/html/rfc4291#section-2.5.5.1 - /// [IETF RFC 4291 section 2.5.5.2]: https://tools.ietf.org/html/rfc4291#section-2.5.5.2 - /// - /// # Examples - /// - /// ``` - /// use std::net::{Ipv4Addr, Ipv6Addr}; - /// - /// assert_eq!(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0).to_ipv4(), None); - /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).to_ipv4(), - /// Some(Ipv4Addr::new(192, 10, 2, 255))); - /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1).to_ipv4(), - /// Some(Ipv4Addr::new(0, 0, 0, 1))); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_50", since = "1.50.0") - )] - #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] - #[must_use = "this returns the result of the operation, \ - without modifying the original"] - #[inline] - pub const fn to_ipv4(&self) -> Option { - if let [0, 0, 0, 0, 0, 0 | 0xffff, ab, cd] = self.segments() { - let [a, b] = ab.to_be_bytes(); - let [c, d] = cd.to_be_bytes(); - Some(Ipv4Addr::new(a, b, c, d)) - } else { - None - } - } - - /// Converts this address to an `IpAddr::V4` if it is an IPv4-mapped addresses, otherwise it - /// returns self wrapped in an `IpAddr::V6`. - /// - /// # Examples - /// - /// ``` - /// #![feature(ip)] - /// use std::net::Ipv6Addr; - /// - /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0x7f00, 0x1).is_loopback(), false); - /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0x7f00, 0x1).to_canonical().is_loopback(), true); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_unstable(feature = "const_ipv6", issue = "76205") - )] - #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))] - #[must_use = "this returns the result of the operation, \ - without modifying the original"] - #[inline] - pub const fn to_canonical(&self) -> IpAddr { - if let Some(mapped) = self.to_ipv4_mapped() { - return IpAddr::V4(mapped); - } - IpAddr::V6(*self) - } - - /// Returns the sixteen eight-bit integers the IPv6 address consists of. - /// - /// ``` - /// use std::net::Ipv6Addr; - /// - /// assert_eq!(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0).octets(), - /// [255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); - /// ``` - #[cfg_attr( - staged_api, - rustc_const_stable(feature = "const_ip_32", since = "1.32.0") - )] - #[cfg_attr(staged_api, stable(feature = "ipv6_to_octets", since = "1.12.0"))] - #[must_use] - #[inline] - pub const fn octets(&self) -> [u8; 16] { - self.octets - } -} - -#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))] -impl PartialEq for Ipv6Addr { - #[inline] - fn eq(&self, other: &IpAddr) -> bool { - match other { - IpAddr::V4(_) => false, - IpAddr::V6(v6) => self == v6, - } - } -} - -#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))] -impl PartialEq for IpAddr { - #[inline] - fn eq(&self, other: &Ipv6Addr) -> bool { - match self { - IpAddr::V4(_) => false, - IpAddr::V6(v6) => v6 == other, - } - } -} - -#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] -impl PartialOrd for Ipv6Addr { - #[inline] - fn partial_cmp(&self, other: &Ipv6Addr) -> Option { - Some(self.cmp(other)) - } -} - -#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))] -impl PartialOrd for IpAddr { - #[inline] - fn partial_cmp(&self, other: &Ipv6Addr) -> Option { - match self { - IpAddr::V4(_) => Some(Ordering::Less), - IpAddr::V6(v6) => v6.partial_cmp(other), - } - } -} - -#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))] -impl PartialOrd for Ipv6Addr { - #[inline] - fn partial_cmp(&self, other: &IpAddr) -> Option { - match other { - IpAddr::V4(_) => Some(Ordering::Greater), - IpAddr::V6(v6) => self.partial_cmp(v6), - } - } -} - -#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] -impl Ord for Ipv6Addr { - #[inline] - fn cmp(&self, other: &Ipv6Addr) -> Ordering { - self.segments().cmp(&other.segments()) - } -} - -#[cfg_attr(staged_api, stable(feature = "i128", since = "1.26.0"))] -impl From for u128 { - /// Convert an `Ipv6Addr` into a host byte order `u128`. - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv6Addr; - /// - /// let addr = Ipv6Addr::new( - /// 0x1020, 0x3040, 0x5060, 0x7080, - /// 0x90A0, 0xB0C0, 0xD0E0, 0xF00D, - /// ); - /// assert_eq!(0x102030405060708090A0B0C0D0E0F00D_u128, u128::from(addr)); - /// ``` - #[inline] - fn from(ip: Ipv6Addr) -> u128 { - u128::from_be_bytes(ip.octets) - } -} -#[cfg_attr(staged_api, stable(feature = "i128", since = "1.26.0"))] -impl From for Ipv6Addr { - /// Convert a host byte order `u128` into an `Ipv6Addr`. - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv6Addr; - /// - /// let addr = Ipv6Addr::from(0x102030405060708090A0B0C0D0E0F00D_u128); - /// assert_eq!( - /// Ipv6Addr::new( - /// 0x1020, 0x3040, 0x5060, 0x7080, - /// 0x90A0, 0xB0C0, 0xD0E0, 0xF00D, - /// ), - /// addr); - /// ``` - #[inline] - fn from(ip: u128) -> Ipv6Addr { - Ipv6Addr::from(ip.to_be_bytes()) - } -} - -#[cfg_attr(staged_api, stable(feature = "ipv6_from_octets", since = "1.9.0"))] -impl From<[u8; 16]> for Ipv6Addr { - /// Creates an `Ipv6Addr` from a sixteen element byte array. - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv6Addr; - /// - /// let addr = Ipv6Addr::from([ - /// 25u8, 24u8, 23u8, 22u8, 21u8, 20u8, 19u8, 18u8, - /// 17u8, 16u8, 15u8, 14u8, 13u8, 12u8, 11u8, 10u8, - /// ]); - /// assert_eq!( - /// Ipv6Addr::new( - /// 0x1918, 0x1716, - /// 0x1514, 0x1312, - /// 0x1110, 0x0f0e, - /// 0x0d0c, 0x0b0a - /// ), - /// addr - /// ); - /// ``` - #[inline] - fn from(octets: [u8; 16]) -> Ipv6Addr { - Ipv6Addr { octets } - } -} - -#[cfg_attr(staged_api, stable(feature = "ipv6_from_segments", since = "1.16.0"))] -impl From<[u16; 8]> for Ipv6Addr { - /// Creates an `Ipv6Addr` from an eight element 16-bit array. - /// - /// # Examples - /// - /// ``` - /// use std::net::Ipv6Addr; - /// - /// let addr = Ipv6Addr::from([ - /// 525u16, 524u16, 523u16, 522u16, - /// 521u16, 520u16, 519u16, 518u16, - /// ]); - /// assert_eq!( - /// Ipv6Addr::new( - /// 0x20d, 0x20c, - /// 0x20b, 0x20a, - /// 0x209, 0x208, - /// 0x207, 0x206 - /// ), - /// addr - /// ); - /// ``` - #[inline] - fn from(segments: [u16; 8]) -> Ipv6Addr { - let [a, b, c, d, e, f, g, h] = segments; - Ipv6Addr::new(a, b, c, d, e, f, g, h) - } -} - -#[cfg_attr(staged_api, stable(feature = "ip_from_slice", since = "1.17.0"))] -impl From<[u8; 16]> for IpAddr { - /// Creates an `IpAddr::V6` from a sixteen element byte array. - /// - /// # Examples - /// - /// ``` - /// use std::net::{IpAddr, Ipv6Addr}; - /// - /// let addr = IpAddr::from([ - /// 25u8, 24u8, 23u8, 22u8, 21u8, 20u8, 19u8, 18u8, - /// 17u8, 16u8, 15u8, 14u8, 13u8, 12u8, 11u8, 10u8, - /// ]); - /// assert_eq!( - /// IpAddr::V6(Ipv6Addr::new( - /// 0x1918, 0x1716, - /// 0x1514, 0x1312, - /// 0x1110, 0x0f0e, - /// 0x0d0c, 0x0b0a - /// )), - /// addr - /// ); - /// ``` - #[inline] - fn from(octets: [u8; 16]) -> IpAddr { - IpAddr::V6(Ipv6Addr::from(octets)) - } -} - -#[cfg_attr(staged_api, stable(feature = "ip_from_slice", since = "1.17.0"))] -impl From<[u16; 8]> for IpAddr { - /// Creates an `IpAddr::V6` from an eight element 16-bit array. - /// - /// # Examples - /// - /// ``` - /// use std::net::{IpAddr, Ipv6Addr}; - /// - /// let addr = IpAddr::from([ - /// 525u16, 524u16, 523u16, 522u16, - /// 521u16, 520u16, 519u16, 518u16, - /// ]); - /// assert_eq!( - /// IpAddr::V6(Ipv6Addr::new( - /// 0x20d, 0x20c, - /// 0x20b, 0x20a, - /// 0x209, 0x208, - /// 0x207, 0x206 - /// )), - /// addr - /// ); - /// ``` - #[inline] - fn from(segments: [u16; 8]) -> IpAddr { - IpAddr::V6(Ipv6Addr::from(segments)) - } -} diff -Nru temporalio-1.3.0/vendor/rustix/src/net/mod.rs temporalio-1.3.0/vendor/rustix/src/net/mod.rs --- temporalio-1.3.0/vendor/rustix/src/net/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/net/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -7,31 +7,25 @@ //! [`wsa_startup`]: https://docs.rs/rustix/*/x86_64-pc-windows-msvc/rustix/net/fn.wsa_startup.html //! [`wsa_cleanup`]: https://docs.rs/rustix/*/x86_64-pc-windows-msvc/rustix/net/fn.wsa_cleanup.html -#[cfg(not(feature = "std"))] -mod addr; -#[cfg(not(feature = "std"))] -mod ip; mod send_recv; mod socket; mod socket_addr_any; #[cfg(not(any(windows, target_os = "wasi")))] mod socketpair; +mod types; #[cfg(windows)] mod wsa; pub mod sockopt; +pub use crate::maybe_polyfill::net::{ + IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6, +}; pub use send_recv::*; pub use socket::*; pub use socket_addr_any::{SocketAddrAny, SocketAddrStorage}; #[cfg(not(any(windows, target_os = "wasi")))] pub use socketpair::socketpair; -#[cfg(feature = "std")] -pub use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6}; +pub use types::*; #[cfg(windows)] pub use wsa::{wsa_cleanup, wsa_startup}; -#[cfg(not(feature = "std"))] -pub use { - addr::{SocketAddr, SocketAddrV4, SocketAddrV6}, - ip::{IpAddr, Ipv4Addr, Ipv6Addr, Ipv6MulticastScope}, -}; diff -Nru temporalio-1.3.0/vendor/rustix/src/net/send_recv/mod.rs temporalio-1.3.0/vendor/rustix/src/net/send_recv/mod.rs --- temporalio-1.3.0/vendor/rustix/src/net/send_recv/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/net/send_recv/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -//! `recv` and `send`, and variants. +//! `recv`, `send`, and variants. #[cfg(unix)] use crate::net::SocketAddrUnix; @@ -8,10 +8,10 @@ pub use backend::net::send_recv::{RecvFlags, SendFlags}; -#[cfg(not(any(windows, target_os = "redox", target_os = "wasi")))] +#[cfg(not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")))] mod msg; -#[cfg(not(any(windows, target_os = "redox", target_os = "wasi")))] +#[cfg(not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")))] pub use msg::*; /// `recv(fd, buf, flags)`—Reads data from a socket. diff -Nru temporalio-1.3.0/vendor/rustix/src/net/send_recv/msg.rs temporalio-1.3.0/vendor/rustix/src/net/send_recv/msg.rs --- temporalio-1.3.0/vendor/rustix/src/net/send_recv/msg.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/net/send_recv/msg.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -//! [`recvmsg`], [`sendmsg_noaddr`], and related functions. +//! [`recvmsg`], [`sendmsg`], and related functions. #![allow(unsafe_code)] @@ -6,8 +6,7 @@ use crate::fd::{AsFd, BorrowedFd, OwnedFd}; use crate::io::{self, IoSlice, IoSliceMut}; -use core::convert::{TryFrom, TryInto}; -use core::iter::{FromIterator, FusedIterator}; +use core::iter::FusedIterator; use core::marker::PhantomData; use core::mem::{size_of, size_of_val, take}; use core::{ptr, slice}; @@ -38,7 +37,7 @@ unsafe { c::CMSG_SPACE(len.try_into().expect("CMSG_SPACE size overflow")) as usize } } -/// Ancillary message for [`sendmsg_noaddr`], [`sendmsg_v4`], [`sendmsg_v6`], +/// Ancillary message for [`sendmsg`], [`sendmsg_v4`], [`sendmsg_v6`], /// [`sendmsg_unix`], and [`sendmsg_any`]. #[non_exhaustive] pub enum SendAncillaryMessage<'slice, 'fd> { @@ -108,11 +107,15 @@ /// Returns a pointer to the message data. pub(crate) fn as_control_ptr(&mut self) -> *mut u8 { - if self.length > 0 { - self.buffer.as_mut_ptr() - } else { - ptr::null_mut() + // When the length is zero, we may be using a `&[]` address, which may + // be an invalid but non-null pointer, and on some platforms, that + // causes `sendmsg` to fail with `EFAULT` or `EINVAL` + #[cfg(not(linux_kernel))] + if self.length == 0 { + return core::ptr::null_mut(); } + + self.buffer.as_mut_ptr() } /// Returns the length of the message data. @@ -158,13 +161,7 @@ let buffer = leap!(self.buffer.get_mut(..new_length)); // Fill the new part of the buffer with zeroes. - // TODO: In Rust 1.50 we can use `fill` here. - unsafe { - buffer - .as_mut_ptr() - .add(self.length) - .write_bytes(0, new_length - self.length); - } + buffer[self.length..new_length].fill(0); self.length = new_length; // Get the last header in the buffer. @@ -230,6 +227,14 @@ /// Returns a pointer to the message data. pub(crate) fn as_control_ptr(&mut self) -> *mut u8 { + // When the length is zero, we may be using a `&[]` address, which may + // be an invalid but non-null pointer, and on some platforms, that + // causes `sendmsg` to fail with `EFAULT` or `EINVAL` + #[cfg(not(linux_kernel))] + if self.buffer.is_empty() { + return core::ptr::null_mut(); + } + self.buffer.as_mut_ptr() } @@ -396,13 +401,13 @@ /// [DragonFly BSD]: https://man.dragonflybsd.org/?command=sendmsg§ion=2 /// [illumos]: https://illumos.org/man/3SOCKET/sendmsg #[inline] -pub fn sendmsg_noaddr( +pub fn sendmsg( socket: impl AsFd, iov: &[IoSlice<'_>], control: &mut SendAncillaryBuffer<'_, '_, '_>, flags: SendFlags, ) -> io::Result { - backend::net::syscalls::sendmsg_noaddr(socket.as_fd(), iov, control, flags) + backend::net::syscalls::sendmsg(socket.as_fd(), iov, control, flags) } /// `sendmsg(msghdr)`—Sends a message on a socket to a specific IPv4 address. @@ -529,7 +534,7 @@ flags: SendFlags, ) -> io::Result { match addr { - None => backend::net::syscalls::sendmsg_noaddr(socket.as_fd(), iov, control, flags), + None => backend::net::syscalls::sendmsg(socket.as_fd(), iov, control, flags), Some(SocketAddrAny::V4(addr)) => { backend::net::syscalls::sendmsg_v4(socket.as_fd(), addr, iov, control, flags) } @@ -681,10 +686,9 @@ mod messages { use crate::backend::c; - use core::convert::TryInto; + use crate::backend::net::msghdr; use core::iter::FusedIterator; use core::marker::PhantomData; - use core::mem::zeroed; use core::ptr::NonNull; /// An iterator over the messages in an ancillary buffer. @@ -705,7 +709,7 @@ /// Create a new iterator over messages from a byte buffer. pub(super) fn new(buf: &'buf mut [u8]) -> Self { let msghdr = { - let mut h: c::msghdr = unsafe { zeroed() }; + let mut h = msghdr::zero_msghdr(); h.msg_control = buf.as_mut_ptr().cast(); h.msg_controllen = buf.len().try_into().expect("buffer too large for msghdr"); h diff -Nru temporalio-1.3.0/vendor/rustix/src/net/socket_addr_any.rs temporalio-1.3.0/vendor/rustix/src/net/socket_addr_any.rs --- temporalio-1.3.0/vendor/rustix/src/net/socket_addr_any.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/net/socket_addr_any.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,7 @@ //! A socket address for any kind of socket. //! //! This is similar to [`std::net::SocketAddr`], but also supports Unix-domain -//! socket addresses. +//! socket addresses on Unix. //! //! # Safety //! diff -Nru temporalio-1.3.0/vendor/rustix/src/net/socketpair.rs temporalio-1.3.0/vendor/rustix/src/net/socketpair.rs --- temporalio-1.3.0/vendor/rustix/src/net/socketpair.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/net/socketpair.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,8 @@ use crate::net::{AddressFamily, Protocol, SocketFlags, SocketType}; use crate::{backend, io}; -/// `socketpair(domain, type_ | accept_flags, protocol)` +/// `socketpair(domain, type_ | accept_flags, protocol)`—Create a pair of +/// sockets that are connected to each other. /// /// # References /// - [POSIX] @@ -29,7 +30,7 @@ domain: AddressFamily, type_: SocketType, flags: SocketFlags, - protocol: Protocol, + protocol: Option, ) -> io::Result<(OwnedFd, OwnedFd)> { backend::net::syscalls::socketpair(domain, type_, flags, protocol) } diff -Nru temporalio-1.3.0/vendor/rustix/src/net/socket.rs temporalio-1.3.0/vendor/rustix/src/net/socket.rs --- temporalio-1.3.0/vendor/rustix/src/net/socket.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/net/socket.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,19 +3,9 @@ use crate::{backend, io}; use backend::fd::{AsFd, BorrowedFd}; +pub use crate::net::{AddressFamily, Protocol, Shutdown, SocketFlags, SocketType}; #[cfg(unix)] pub use backend::net::addr::SocketAddrUnix; -pub use backend::net::types::{AddressFamily, Protocol, Shutdown, SocketFlags, SocketType}; - -/// Compatibility alias for `SocketFlags`. Use `SocketFlags` instead of this. -pub type AcceptFlags = SocketFlags; - -impl Default for Protocol { - #[inline] - fn default() -> Self { - Self::IP - } -} /// `socket(domain, type_, protocol)`—Creates a socket. /// @@ -50,7 +40,11 @@ /// [illumos]: https://illumos.org/man/3SOCKET/socket /// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Creating-a-Socket.html #[inline] -pub fn socket(domain: AddressFamily, type_: SocketType, protocol: Protocol) -> io::Result { +pub fn socket( + domain: AddressFamily, + type_: SocketType, + protocol: Option, +) -> io::Result { backend::net::syscalls::socket(domain, type_, protocol) } @@ -93,7 +87,7 @@ domain: AddressFamily, type_: SocketType, flags: SocketFlags, - protocol: Protocol, + protocol: Option, ) -> io::Result { backend::net::syscalls::socket_with(domain, type_, flags, protocol) } diff -Nru temporalio-1.3.0/vendor/rustix/src/net/sockopt.rs temporalio-1.3.0/vendor/rustix/src/net/sockopt.rs --- temporalio-1.3.0/vendor/rustix/src/net/sockopt.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/net/sockopt.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,12 +6,39 @@ #![doc(alias = "getsockopt")] #![doc(alias = "setsockopt")] +#[cfg(not(any( + apple, + solarish, + windows, + target_os = "dragonfly", + target_os = "emscripten", + target_os = "espidf", + target_os = "haiku", + target_os = "netbsd", + target_os = "nto", + target_os = "openbsd" +)))] +use crate::net::AddressFamily; use crate::net::{Ipv4Addr, Ipv6Addr, SocketType}; use crate::{backend, io}; +use backend::c; use backend::fd::AsFd; use core::time::Duration; -pub use backend::net::types::Timeout; +/// Timeout identifier for use with [`set_socket_timeout`] and +/// [`get_socket_timeout`]. +/// +/// [`set_socket_timeout`]: crate::net::sockopt::set_socket_timeout. +/// [`get_socket_timeout`]: crate::net::sockopt::get_socket_timeout. +#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] +#[repr(u32)] +pub enum Timeout { + /// `SO_RCVTIMEO`—Timeout for receiving. + Recv = c::SO_RCVTIMEO as _, + + /// `SO_SNDTIMEO`—Timeout for sending. + Send = c::SO_SNDTIMEO as _, +} /// `getsockopt(fd, SOL_SOCKET, SO_TYPE)`—Returns the type of a socket. /// @@ -427,8 +454,8 @@ #[cfg(any(apple, target_os = "freebsd"))] #[doc(alias = "SO_NOSIGPIPE")] #[inline] -pub fn getsockopt_nosigpipe(fd: Fd) -> io::Result { - backend::net::syscalls::sockopt::getsockopt_nosigpipe(fd.as_fd()) +pub fn get_socket_nosigpipe(fd: Fd) -> io::Result { + backend::net::syscalls::sockopt::get_socket_nosigpipe(fd.as_fd()) } /// `setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, val)` @@ -466,8 +493,8 @@ #[cfg(any(apple, target_os = "freebsd"))] #[doc(alias = "SO_NOSIGPIPE")] #[inline] -pub fn setsockopt_nosigpipe(fd: Fd, val: bool) -> io::Result<()> { - backend::net::syscalls::sockopt::setsockopt_nosigpipe(fd.as_fd(), val) +pub fn set_socket_nosigpipe(fd: Fd, val: bool) -> io::Result<()> { + backend::net::syscalls::sockopt::set_socket_nosigpipe(fd.as_fd(), val) } /// `setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, keepalive)` @@ -698,6 +725,57 @@ backend::net::syscalls::sockopt::get_socket_send_buffer_size(fd.as_fd()) } +/// `getsockopt(fd, SOL_SOCKET, SO_DOMAIN)` +/// +/// # References +/// - [POSIX `getsockopt`] +/// - [POSIX `sys/socket.h`] +/// - [Linux `getsockopt`] +/// - [Linux `socket`] +/// - [Winsock2 `getsockopt`] +/// - [Winsock2 `SOL_SOCKET` options] +/// - [Apple] +/// - [FreeBSD] +/// - [NetBSD] +/// - [OpenBSD] +/// - [DragonFly BSD] +/// - [illumos] +/// - [glibc `getsockopt`] +/// - [glibc `SOL_SOCKET` Options] +/// +/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html +/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html +/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html +/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html +/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt +/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options +/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2 +/// [NetBSD]: https://man.netbsd.org/getsockopt.2 +/// [OpenBSD]: https://man.openbsd.org/getsockopt.2 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=getsockopt§ion=2 +/// [illumos]: https://illumos.org/man/3SOCKET/getsockopt +/// [glibc `getsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html +/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html +// TODO: OpenBSD and Solarish support submitted upstream: https://github.com/rust-lang/libc/pull/3316 +#[cfg(not(any( + apple, + solarish, + windows, + target_os = "dragonfly", + target_os = "emscripten", + target_os = "espidf", + target_os = "haiku", + target_os = "netbsd", + target_os = "nto", + target_os = "openbsd" +)))] +#[inline] +#[doc(alias = "SO_DOMAIN")] +pub fn get_socket_domain(fd: Fd) -> io::Result { + backend::net::syscalls::sockopt::get_socket_domain(fd.as_fd()) +} + /// `setsockopt(fd, IPPROTO_IP, IP_TTL, ttl)` /// /// # References @@ -1614,3 +1692,12 @@ pub fn get_tcp_nodelay(fd: Fd) -> io::Result { backend::net::syscalls::sockopt::get_tcp_nodelay(fd.as_fd()) } + +#[test] +fn test_sizes() { + use c::c_int; + + // Backend code needs to cast these to `c_int` so make sure that cast + // isn't lossy. + assert_eq_size!(Timeout, c_int); +} diff -Nru temporalio-1.3.0/vendor/rustix/src/net/types.rs temporalio-1.3.0/vendor/rustix/src/net/types.rs --- temporalio-1.3.0/vendor/rustix/src/net/types.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/net/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1299 @@ +//! Types and constants for `rustix::net`. + +use crate::backend::c; +use bitflags::bitflags; + +/// A type for holding raw integer socket types. +#[doc(hidden)] +pub type RawSocketType = u32; + +/// `SOCK_*` constants for use with [`socket`]. +/// +/// [`socket`]: crate::net::socket() +#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] +#[repr(transparent)] +pub struct SocketType(pub(crate) RawSocketType); + +#[rustfmt::skip] +impl SocketType { + /// `SOCK_STREAM` + pub const STREAM: Self = Self(c::SOCK_STREAM as _); + + /// `SOCK_DGRAM` + pub const DGRAM: Self = Self(c::SOCK_DGRAM as _); + + /// `SOCK_SEQPACKET` + #[cfg(not(target_os = "espidf"))] + pub const SEQPACKET: Self = Self(c::SOCK_SEQPACKET as _); + + /// `SOCK_RAW` + #[cfg(not(target_os = "espidf"))] + pub const RAW: Self = Self(c::SOCK_RAW as _); + + /// `SOCK_RDM` + #[cfg(not(any(target_os = "espidf", target_os = "haiku")))] + pub const RDM: Self = Self(c::SOCK_RDM as _); + + /// Constructs a `SocketType` from a raw integer. + #[inline] + pub const fn from_raw(raw: RawSocketType) -> Self { + Self(raw) + } + + /// Returns the raw integer for this `SocketType`. + #[inline] + pub const fn as_raw(self) -> RawSocketType { + self.0 + } +} + +/// A type for holding raw integer address families. +#[doc(hidden)] +pub type RawAddressFamily = c::sa_family_t; + +/// `AF_*` constants for use with [`socket`], [`socket_with`], and +/// [`socketpair`]. +#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] +#[repr(transparent)] +pub struct AddressFamily(pub(crate) RawAddressFamily); + +#[rustfmt::skip] +#[allow(non_upper_case_globals)] +impl AddressFamily { + /// `AF_UNSPEC` + pub const UNSPEC: Self = Self(c::AF_UNSPEC as _); + /// `AF_INET` + /// + /// # References + /// - [Linux] + /// + /// [Linux]: https://man7.org/linux/man-pages/man7/ip.7.html> + pub const INET: Self = Self(c::AF_INET as _); + /// `AF_INET6` + /// + /// # References + /// - [Linux] + /// + /// [Linux]: https://man7.org/linux/man-pages/man7/ipv6.7.html + pub const INET6: Self = Self(c::AF_INET6 as _); + /// `AF_NETLINK` + /// + /// # References + /// - [Linux] + /// + /// [Linux]: https://man7.org/linux/man-pages/man7/netlink.7.html + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const NETLINK: Self = Self(c::AF_NETLINK as _); + /// `AF_UNIX`, aka `AF_LOCAL` + #[doc(alias = "LOCAL")] + pub const UNIX: Self = Self(c::AF_UNIX as _); + /// `AF_AX25` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const AX25: Self = Self(c::AF_AX25 as _); + /// `AF_IPX` + #[cfg(not(target_os = "espidf"))] + pub const IPX: Self = Self(c::AF_IPX as _); + /// `AF_APPLETALK` + #[cfg(not(target_os = "espidf"))] + pub const APPLETALK: Self = Self(c::AF_APPLETALK as _); + /// `AF_NETROM` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const NETROM: Self = Self(c::AF_NETROM as _); + /// `AF_BRIDGE` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const BRIDGE: Self = Self(c::AF_BRIDGE as _); + /// `AF_ATMPVC` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const ATMPVC: Self = Self(c::AF_ATMPVC as _); + /// `AF_X25` + #[cfg(not(any( + bsd, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const X25: Self = Self(c::AF_X25 as _); + /// `AF_ROSE` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const ROSE: Self = Self(c::AF_ROSE as _); + /// `AF_DECnet` + #[cfg(not(any(target_os = "espidf", target_os = "haiku")))] + pub const DECnet: Self = Self(c::AF_DECnet as _); + /// `AF_NETBEUI` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const NETBEUI: Self = Self(c::AF_NETBEUI as _); + /// `AF_SECURITY` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const SECURITY: Self = Self(c::AF_SECURITY as _); + /// `AF_KEY` + #[cfg(not(any( + bsd, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const KEY: Self = Self(c::AF_KEY as _); + /// `AF_PACKET` + /// + /// # References + /// - [Linux] + /// + /// [Linux]: https://man7.org/linux/man-pages/man7/packet.7.html + #[cfg(not(any( + bsd, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const PACKET: Self = Self(c::AF_PACKET as _); + /// `AF_ASH` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const ASH: Self = Self(c::AF_ASH as _); + /// `AF_ECONET` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const ECONET: Self = Self(c::AF_ECONET as _); + /// `AF_ATMSVC` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const ATMSVC: Self = Self(c::AF_ATMSVC as _); + /// `AF_RDS` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const RDS: Self = Self(c::AF_RDS as _); + /// `AF_SNA` + #[cfg(not(any(target_os = "espidf", target_os = "haiku")))] + pub const SNA: Self = Self(c::AF_SNA as _); + /// `AF_IRDA` + #[cfg(not(any( + bsd, + solarish, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const IRDA: Self = Self(c::AF_IRDA as _); + /// `AF_PPPOX` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const PPPOX: Self = Self(c::AF_PPPOX as _); + /// `AF_WANPIPE` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const WANPIPE: Self = Self(c::AF_WANPIPE as _); + /// `AF_LLC` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const LLC: Self = Self(c::AF_LLC as _); + /// `AF_CAN` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const CAN: Self = Self(c::AF_CAN as _); + /// `AF_TIPC` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const TIPC: Self = Self(c::AF_TIPC as _); + /// `AF_BLUETOOTH` + #[cfg(not(any(apple, solarish, windows, target_os = "espidf")))] + pub const BLUETOOTH: Self = Self(c::AF_BLUETOOTH as _); + /// `AF_IUCV` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const IUCV: Self = Self(c::AF_IUCV as _); + /// `AF_RXRPC` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const RXRPC: Self = Self(c::AF_RXRPC as _); + /// `AF_ISDN` + #[cfg(not(any(solarish, windows, target_os = "espidf", target_os = "haiku")))] + pub const ISDN: Self = Self(c::AF_ISDN as _); + /// `AF_PHONET` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const PHONET: Self = Self(c::AF_PHONET as _); + /// `AF_IEEE802154` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const IEEE802154: Self = Self(c::AF_IEEE802154 as _); + /// `AF_802` + #[cfg(solarish)] + pub const EIGHT_ZERO_TWO: Self = Self(c::AF_802 as _); + #[cfg(target_os = "fuchsia")] + /// `AF_ALG` + pub const ALG: Self = Self(c::AF_ALG as _); + #[cfg(any(target_os = "freebsd", target_os = "netbsd", target_os = "nto"))] + /// `AF_ARP` + pub const ARP: Self = Self(c::AF_ARP as _); + /// `AF_ATM` + #[cfg(freebsdlike)] + pub const ATM: Self = Self(c::AF_ATM as _); + /// `AF_CAIF` + #[cfg(any(target_os = "android", target_os = "emscripten", target_os = "fuchsia"))] + pub const CAIF: Self = Self(c::AF_CAIF as _); + /// `AF_CCITT` + #[cfg(any(bsd, solarish, target_os = "aix", target_os = "nto"))] + pub const CCITT: Self = Self(c::AF_CCITT as _); + /// `AF_CHAOS` + #[cfg(any(bsd, solarish, target_os = "aix", target_os = "nto"))] + pub const CHAOS: Self = Self(c::AF_CHAOS as _); + /// `AF_CNT` + #[cfg(any(bsd, target_os = "nto"))] + pub const CNT: Self = Self(c::AF_CNT as _); + /// `AF_COIP` + #[cfg(any(bsd, target_os = "nto"))] + pub const COIP: Self = Self(c::AF_COIP as _); + /// `AF_DATAKIT` + #[cfg(any(bsd, solarish, target_os = "aix", target_os = "nto"))] + pub const DATAKIT: Self = Self(c::AF_DATAKIT as _); + /// `AF_DLI` + #[cfg(any(bsd, solarish, target_os = "aix", target_os = "haiku", target_os = "nto"))] + pub const DLI: Self = Self(c::AF_DLI as _); + /// `AF_E164` + #[cfg(any(bsd, target_os = "nto"))] + pub const E164: Self = Self(c::AF_E164 as _); + /// `AF_ECMA` + #[cfg(any(apple, freebsdlike, solarish, target_os = "aix", target_os = "nto", target_os = "openbsd"))] + pub const ECMA: Self = Self(c::AF_ECMA as _); + /// `AF_ENCAP` + #[cfg(target_os = "openbsd")] + pub const ENCAP: Self = Self(c::AF_ENCAP as _); + /// `AF_FILE` + #[cfg(solarish)] + pub const FILE: Self = Self(c::AF_FILE as _); + /// `AF_GOSIP` + #[cfg(solarish)] + pub const GOSIP: Self = Self(c::AF_GOSIP as _); + /// `AF_HYLINK` + #[cfg(any(bsd, solarish, target_os = "aix", target_os = "nto"))] + pub const HYLINK: Self = Self(c::AF_HYLINK as _); + /// `AF_IB` + #[cfg(any(target_os = "emscripten", target_os = "fuchsia"))] + pub const IB: Self = Self(c::AF_IB as _); + /// `AF_IMPLINK` + #[cfg(any(bsd, solarish, target_os = "aix", target_os = "nto"))] + pub const IMPLINK: Self = Self(c::AF_IMPLINK as _); + /// `AF_IEEE80211` + #[cfg(any(apple, freebsdlike, linuxlike, target_os = "netbsd"))] + pub const IEEE80211: Self = Self(c::AF_IEEE80211 as _); + /// `AF_INET6_SDP` + #[cfg(target_os = "freebsd")] + pub const INET6_SDP: Self = Self(c::AF_INET6_SDP as _); + /// `AF_INET_OFFLOAD` + #[cfg(solarish)] + pub const INET_OFFLOAD: Self = Self(c::AF_INET_OFFLOAD as _); + /// `AF_INET_SDP` + #[cfg(target_os = "freebsd")] + pub const INET_SDP: Self = Self(c::AF_INET_SDP as _); + /// `AF_INTF` + #[cfg(target_os = "aix")] + pub const INTF: Self = Self(c::AF_INTF as _); + /// `AF_ISO` + #[cfg(any(bsd, target_os = "aix", target_os = "nto"))] + pub const ISO: Self = Self(c::AF_ISO as _); + /// `AF_LAT` + #[cfg(any(bsd, solarish, target_os = "aix", target_os = "nto"))] + pub const LAT: Self = Self(c::AF_LAT as _); + /// `AF_LINK` + #[cfg(any(bsd, solarish, target_os = "aix", target_os = "haiku", target_os = "nto"))] + pub const LINK: Self = Self(c::AF_LINK as _); + /// `AF_MPLS` + #[cfg(any(netbsdlike, target_os = "dragonfly", target_os = "emscripten", target_os = "fuchsia"))] + pub const MPLS: Self = Self(c::AF_MPLS as _); + /// `AF_NATM` + #[cfg(any(bsd, target_os = "aix", target_os = "nto"))] + pub const NATM: Self = Self(c::AF_NATM as _); + /// `AF_NBS` + #[cfg(solarish)] + pub const NBS: Self = Self(c::AF_NBS as _); + /// `AF_NCA` + #[cfg(solarish)] + pub const NCA: Self = Self(c::AF_NCA as _); + /// `AF_NDD` + #[cfg(target_os = "aix")] + pub const NDD: Self = Self(c::AF_NDD as _); + /// `AF_NDRV` + #[cfg(apple)] + pub const NDRV: Self = Self(c::AF_NDRV as _); + /// `AF_NETBIOS` + #[cfg(any(apple, freebsdlike))] + pub const NETBIOS: Self = Self(c::AF_NETBIOS as _); + /// `AF_NETGRAPH` + #[cfg(freebsdlike)] + pub const NETGRAPH: Self = Self(c::AF_NETGRAPH as _); + /// `AF_NIT` + #[cfg(solarish)] + pub const NIT: Self = Self(c::AF_NIT as _); + /// `AF_NOTIFY` + #[cfg(target_os = "haiku")] + pub const NOTIFY: Self = Self(c::AF_NOTIFY as _); + /// `AF_NFC` + #[cfg(any(target_os = "emscripten", target_os = "fuchsia"))] + pub const NFC: Self = Self(c::AF_NFC as _); + /// `AF_NS` + #[cfg(any(apple, solarish, netbsdlike, target_os = "aix", target_os = "nto"))] + pub const NS: Self = Self(c::AF_NS as _); + /// `AF_OROUTE` + #[cfg(target_os = "netbsd")] + pub const OROUTE: Self = Self(c::AF_OROUTE as _); + /// `AF_OSI` + #[cfg(any(bsd, solarish, target_os = "aix", target_os = "nto"))] + pub const OSI: Self = Self(c::AF_OSI as _); + /// `AF_OSINET` + #[cfg(solarish)] + pub const OSINET: Self = Self(c::AF_OSINET as _); + /// `AF_POLICY` + #[cfg(solarish)] + pub const POLICY: Self = Self(c::AF_POLICY as _); + /// `AF_PPP` + #[cfg(apple)] + pub const PPP: Self = Self(c::AF_PPP as _); + /// `AF_PUP` + #[cfg(any(bsd, solarish, target_os = "aix", target_os = "nto"))] + pub const PUP: Self = Self(c::AF_PUP as _); + /// `AF_RIF` + #[cfg(target_os = "aix")] + pub const RIF: Self = Self(c::AF_RIF as _); + /// `AF_ROUTE` + #[cfg(any(bsd, solarish, target_os = "android", target_os = "emscripten", target_os = "fuchsia", target_os = "haiku", target_os = "nto"))] + pub const ROUTE: Self = Self(c::AF_ROUTE as _); + /// `AF_SCLUSTER` + #[cfg(target_os = "freebsd")] + pub const SCLUSTER: Self = Self(c::AF_SCLUSTER as _); + /// `AF_SIP` + #[cfg(any(apple, target_os = "freebsd", target_os = "opensbd"))] + pub const SIP: Self = Self(c::AF_SIP as _); + /// `AF_SLOW` + #[cfg(target_os = "freebsd")] + pub const SLOW: Self = Self(c::AF_SLOW as _); + /// `AF_SYS_CONTROL` + #[cfg(apple)] + pub const SYS_CONTROL: Self = Self(c::AF_SYS_CONTROL as _); + /// `AF_SYSTEM` + #[cfg(apple)] + pub const SYSTEM: Self = Self(c::AF_SYSTEM as _); + /// `AF_TRILL` + #[cfg(solarish)] + pub const TRILL: Self = Self(c::AF_TRILL as _); + /// `AF_UTUN` + #[cfg(apple)] + pub const UTUN: Self = Self(c::AF_UTUN as _); + /// `AF_VSOCK` + #[cfg(any(apple, target_os = "emscripten", target_os = "fuchsia"))] + pub const VSOCK: Self = Self(c::AF_VSOCK as _); + + /// Constructs a `AddressFamily` from a raw integer. + #[inline] + pub const fn from_raw(raw: RawAddressFamily) -> Self { + Self(raw) + } + + /// Returns the raw integer for this `AddressFamily`. + #[inline] + pub const fn as_raw(self) -> RawAddressFamily { + self.0 + } +} + +/// A type for holding raw integer protocols. +#[doc(hidden)] +pub type RawProtocol = core::num::NonZeroU32; + +const fn new_raw_protocol(u: u32) -> RawProtocol { + match RawProtocol::new(u) { + Some(p) => p, + None => panic!("new_raw_protocol: protocol must be non-zero"), + } +} + +/// `IPPROTO_*` and other constants for use with [`socket`], [`socket_with`], +/// and [`socketpair`] when a nondefault value is desired. See the [`ipproto`], +/// [`sysproto`], and [`netlink`] modules for possible values. +/// +/// For the default values, such as `IPPROTO_IP` or `NETLINK_ROUTE`, pass +/// `None` as the `protocol` argument in these functions. +/// +/// [`socket`]: crate::net::socket() +/// [`socket_with`]: crate::net::socket_with +/// [`socketpair`]: crate::net::socketpair() +#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] +#[repr(transparent)] +#[doc(alias = "IPPROTO_IP")] +#[doc(alias = "NETLINK_ROUTE")] +pub struct Protocol(pub(crate) RawProtocol); + +/// `IPPROTO_*` constants. +/// +/// For `IPPROTO_IP`, pass `None` as the `protocol` argument. +pub mod ipproto { + use super::{new_raw_protocol, Protocol}; + use crate::backend::c; + + /// `IPPROTO_ICMP` + pub const ICMP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_ICMP as _)); + /// `IPPROTO_IGMP` + #[cfg(not(any(solarish, target_os = "espidf", target_os = "haiku")))] + pub const IGMP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_IGMP as _)); + /// `IPPROTO_IPIP` + #[cfg(not(any(solarish, windows, target_os = "espidf", target_os = "haiku")))] + pub const IPIP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_IPIP as _)); + /// `IPPROTO_TCP` + pub const TCP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_TCP as _)); + /// `IPPROTO_EGP` + #[cfg(not(any(solarish, target_os = "espidf", target_os = "haiku")))] + pub const EGP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_EGP as _)); + /// `IPPROTO_PUP` + #[cfg(not(any(solarish, target_os = "espidf", target_os = "haiku")))] + pub const PUP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_PUP as _)); + /// `IPPROTO_UDP` + pub const UDP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_UDP as _)); + /// `IPPROTO_IDP` + #[cfg(not(any(solarish, target_os = "espidf", target_os = "haiku")))] + pub const IDP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_IDP as _)); + /// `IPPROTO_TP` + #[cfg(not(any(solarish, windows, target_os = "espidf", target_os = "haiku")))] + pub const TP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_TP as _)); + /// `IPPROTO_DCCP` + #[cfg(not(any( + apple, + solarish, + windows, + target_os = "dragonfly", + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + target_os = "openbsd", + )))] + pub const DCCP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_DCCP as _)); + /// `IPPROTO_IPV6` + pub const IPV6: Protocol = Protocol(new_raw_protocol(c::IPPROTO_IPV6 as _)); + /// `IPPROTO_RSVP` + #[cfg(not(any(solarish, windows, target_os = "espidf", target_os = "haiku")))] + pub const RSVP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_RSVP as _)); + /// `IPPROTO_GRE` + #[cfg(not(any(solarish, windows, target_os = "espidf", target_os = "haiku")))] + pub const GRE: Protocol = Protocol(new_raw_protocol(c::IPPROTO_GRE as _)); + /// `IPPROTO_ESP` + #[cfg(not(any(solarish, target_os = "espidf", target_os = "haiku")))] + pub const ESP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_ESP as _)); + /// `IPPROTO_AH` + #[cfg(not(any(solarish, target_os = "espidf", target_os = "haiku")))] + pub const AH: Protocol = Protocol(new_raw_protocol(c::IPPROTO_AH as _)); + /// `IPPROTO_MTP` + #[cfg(not(any( + solarish, + netbsdlike, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const MTP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_MTP as _)); + /// `IPPROTO_BEETPH` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto" + )))] + pub const BEETPH: Protocol = Protocol(new_raw_protocol(c::IPPROTO_BEETPH as _)); + /// `IPPROTO_ENCAP` + #[cfg(not(any(solarish, windows, target_os = "espidf", target_os = "haiku")))] + pub const ENCAP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_ENCAP as _)); + /// `IPPROTO_PIM` + #[cfg(not(any(solarish, target_os = "espidf", target_os = "haiku")))] + pub const PIM: Protocol = Protocol(new_raw_protocol(c::IPPROTO_PIM as _)); + /// `IPPROTO_COMP` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "nto" + )))] + pub const COMP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_COMP as _)); + /// `IPPROTO_SCTP` + #[cfg(not(any( + solarish, + target_os = "dragonfly", + target_os = "espidf", + target_os = "haiku", + target_os = "openbsd" + )))] + pub const SCTP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_SCTP as _)); + /// `IPPROTO_UDPLITE` + #[cfg(not(any( + apple, + netbsdlike, + solarish, + windows, + target_os = "dragonfly", + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const UDPLITE: Protocol = Protocol(new_raw_protocol(c::IPPROTO_UDPLITE as _)); + /// `IPPROTO_MPLS` + #[cfg(not(any( + apple, + solarish, + windows, + target_os = "dragonfly", + target_os = "espidf", + target_os = "haiku", + target_os = "netbsd", + target_os = "nto", + )))] + pub const MPLS: Protocol = Protocol(new_raw_protocol(c::IPPROTO_MPLS as _)); + /// `IPPROTO_ETHERNET` + #[cfg(linux_kernel)] + pub const ETHERNET: Protocol = Protocol(new_raw_protocol(c::IPPROTO_ETHERNET as _)); + /// `IPPROTO_RAW` + #[cfg(not(target_os = "espidf"))] + pub const RAW: Protocol = Protocol(new_raw_protocol(c::IPPROTO_RAW as _)); + /// `IPPROTO_MPTCP` + #[cfg(not(any( + bsd, + solarish, + windows, + target_os = "emscripten", + target_os = "espidf", + target_os = "fuchsia", + target_os = "haiku", + target_os = "nto", + )))] + pub const MPTCP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_MPTCP as _)); + /// `IPPROTO_FRAGMENT` + #[cfg(not(any(solarish, target_os = "espidf", target_os = "haiku")))] + pub const FRAGMENT: Protocol = Protocol(new_raw_protocol(c::IPPROTO_FRAGMENT as _)); + /// `IPPROTO_ICMPV6` + pub const ICMPV6: Protocol = Protocol(new_raw_protocol(c::IPPROTO_ICMPV6 as _)); + /// `IPPROTO_MH` + #[cfg(not(any( + apple, + netbsdlike, + solarish, + windows, + target_os = "dragonfly", + target_os = "espidf", + target_os = "haiku", + target_os = "nto", + )))] + pub const MH: Protocol = Protocol(new_raw_protocol(c::IPPROTO_MH as _)); + /// `IPPROTO_ROUTING` + #[cfg(not(any(solarish, target_os = "espidf", target_os = "haiku")))] + pub const ROUTING: Protocol = Protocol(new_raw_protocol(c::IPPROTO_ROUTING as _)); +} + +/// `SYSPROTO_*` constants. +pub mod sysproto { + #[cfg(apple)] + use { + super::{new_raw_protocol, Protocol}, + crate::backend::c, + }; + + /// `SYSPROTO_EVENT` + #[cfg(apple)] + pub const EVENT: Protocol = Protocol(new_raw_protocol(c::SYSPROTO_EVENT as _)); + + /// `SYSPROTO_CONTROL` + #[cfg(apple)] + pub const CONTROL: Protocol = Protocol(new_raw_protocol(c::SYSPROTO_CONTROL as _)); +} + +/// `NETLINK_*` constants. +/// +/// For `NETLINK_ROUTE`, pass `None` as the `protocol` argument. +pub mod netlink { + #[cfg(linux_kernel)] + use { + super::{new_raw_protocol, Protocol}, + crate::backend::c, + }; + + /// `NETLINK_UNUSED` + #[cfg(linux_kernel)] + pub const UNUSED: Protocol = Protocol(new_raw_protocol(c::NETLINK_UNUSED as _)); + /// `NETLINK_USERSOCK` + #[cfg(linux_kernel)] + pub const USERSOCK: Protocol = Protocol(new_raw_protocol(c::NETLINK_USERSOCK as _)); + /// `NETLINK_FIREWALL` + #[cfg(linux_kernel)] + pub const FIREWALL: Protocol = Protocol(new_raw_protocol(c::NETLINK_FIREWALL as _)); + /// `NETLINK_SOCK_DIAG` + #[cfg(linux_kernel)] + pub const SOCK_DIAG: Protocol = Protocol(new_raw_protocol(c::NETLINK_SOCK_DIAG as _)); + /// `NETLINK_NFLOG` + #[cfg(linux_kernel)] + pub const NFLOG: Protocol = Protocol(new_raw_protocol(c::NETLINK_NFLOG as _)); + /// `NETLINK_XFRM` + #[cfg(linux_kernel)] + pub const XFRM: Protocol = Protocol(new_raw_protocol(c::NETLINK_XFRM as _)); + /// `NETLINK_SELINUX` + #[cfg(linux_kernel)] + pub const SELINUX: Protocol = Protocol(new_raw_protocol(c::NETLINK_SELINUX as _)); + /// `NETLINK_ISCSI` + #[cfg(linux_kernel)] + pub const ISCSI: Protocol = Protocol(new_raw_protocol(c::NETLINK_ISCSI as _)); + /// `NETLINK_AUDIT` + #[cfg(linux_kernel)] + pub const AUDIT: Protocol = Protocol(new_raw_protocol(c::NETLINK_AUDIT as _)); + /// `NETLINK_FIB_LOOKUP` + #[cfg(linux_kernel)] + pub const FIB_LOOKUP: Protocol = Protocol(new_raw_protocol(c::NETLINK_FIB_LOOKUP as _)); + /// `NETLINK_CONNECTOR` + #[cfg(linux_kernel)] + pub const CONNECTOR: Protocol = Protocol(new_raw_protocol(c::NETLINK_CONNECTOR as _)); + /// `NETLINK_NETFILTER` + #[cfg(linux_kernel)] + pub const NETFILTER: Protocol = Protocol(new_raw_protocol(c::NETLINK_NETFILTER as _)); + /// `NETLINK_IP6_FW` + #[cfg(linux_kernel)] + pub const IP6_FW: Protocol = Protocol(new_raw_protocol(c::NETLINK_IP6_FW as _)); + /// `NETLINK_DNRTMSG` + #[cfg(linux_kernel)] + pub const DNRTMSG: Protocol = Protocol(new_raw_protocol(c::NETLINK_DNRTMSG as _)); + /// `NETLINK_KOBJECT_UEVENT` + #[cfg(linux_kernel)] + pub const KOBJECT_UEVENT: Protocol = Protocol(new_raw_protocol(c::NETLINK_KOBJECT_UEVENT as _)); + /// `NETLINK_GENERIC` + // This is defined on FreeBSD too, but it has the value 0, so it doesn't + // fit in or `NonZeroU32`. It's unclear whether FreeBSD intends + // `NETLINK_GENERIC` to be the default when Linux has `NETLINK_ROUTE` + // as the default. + #[cfg(linux_kernel)] + pub const GENERIC: Protocol = Protocol(new_raw_protocol(c::NETLINK_GENERIC as _)); + /// `NETLINK_SCSITRANSPORT` + #[cfg(linux_kernel)] + pub const SCSITRANSPORT: Protocol = Protocol(new_raw_protocol(c::NETLINK_SCSITRANSPORT as _)); + /// `NETLINK_ECRYPTFS` + #[cfg(linux_kernel)] + pub const ECRYPTFS: Protocol = Protocol(new_raw_protocol(c::NETLINK_ECRYPTFS as _)); + /// `NETLINK_RDMA` + #[cfg(linux_kernel)] + pub const RDMA: Protocol = Protocol(new_raw_protocol(c::NETLINK_RDMA as _)); + /// `NETLINK_CRYPTO` + #[cfg(linux_kernel)] + pub const CRYPTO: Protocol = Protocol(new_raw_protocol(c::NETLINK_CRYPTO as _)); + /// `NETLINK_INET_DIAG` + #[cfg(linux_kernel)] + pub const INET_DIAG: Protocol = Protocol(new_raw_protocol(c::NETLINK_INET_DIAG as _)); + /// `NETLINK_ADD_MEMBERSHIP` + #[cfg(linux_kernel)] + pub const ADD_MEMBERSHIP: Protocol = Protocol(new_raw_protocol(c::NETLINK_ADD_MEMBERSHIP as _)); + /// `NETLINK_DROP_MEMBERSHIP` + #[cfg(linux_kernel)] + pub const DROP_MEMBERSHIP: Protocol = + Protocol(new_raw_protocol(c::NETLINK_DROP_MEMBERSHIP as _)); + /// `NETLINK_PKTINFO` + #[cfg(linux_kernel)] + pub const PKTINFO: Protocol = Protocol(new_raw_protocol(c::NETLINK_PKTINFO as _)); + /// `NETLINK_BROADCAST_ERROR` + #[cfg(linux_kernel)] + pub const BROADCAST_ERROR: Protocol = + Protocol(new_raw_protocol(c::NETLINK_BROADCAST_ERROR as _)); + /// `NETLINK_NO_ENOBUFS` + #[cfg(linux_kernel)] + pub const NO_ENOBUFS: Protocol = Protocol(new_raw_protocol(c::NETLINK_NO_ENOBUFS as _)); + /// `NETLINK_RX_RING` + #[cfg(linux_kernel)] + pub const RX_RING: Protocol = Protocol(new_raw_protocol(c::NETLINK_RX_RING as _)); + /// `NETLINK_TX_RING` + #[cfg(linux_kernel)] + pub const TX_RING: Protocol = Protocol(new_raw_protocol(c::NETLINK_TX_RING as _)); + /// `NETLINK_LISTEN_ALL_NSID` + #[cfg(linux_kernel)] + pub const LISTEN_ALL_NSID: Protocol = + Protocol(new_raw_protocol(c::NETLINK_LISTEN_ALL_NSID as _)); + /// `NETLINK_LIST_MEMBERSHIPS` + #[cfg(linux_kernel)] + pub const LIST_MEMBERSHIPS: Protocol = + Protocol(new_raw_protocol(c::NETLINK_LIST_MEMBERSHIPS as _)); + /// `NETLINK_CAP_ACK` + #[cfg(linux_kernel)] + pub const CAP_ACK: Protocol = Protocol(new_raw_protocol(c::NETLINK_CAP_ACK as _)); + /// `NETLINK_EXT_ACK` + #[cfg(linux_kernel)] + pub const EXT_ACK: Protocol = Protocol(new_raw_protocol(c::NETLINK_EXT_ACK as _)); + /// `NETLINK_GET_STRICT_CHK` + #[cfg(linux_kernel)] + pub const GET_STRICT_CHK: Protocol = Protocol(new_raw_protocol(c::NETLINK_GET_STRICT_CHK as _)); +} + +/// `ETH_P_*` constants. +// These are translated into 16-bit big-endian form because that's what the +// [`AddressFamily::PACKET`] address family [expects]. +// +// [expects]: https://man7.org/linux/man-pages/man7/packet.7.html +pub mod eth { + #[cfg(linux_kernel)] + use { + super::{new_raw_protocol, Protocol}, + crate::backend::c, + }; + + /// `ETH_P_LOOP` + #[cfg(linux_kernel)] + pub const LOOP: Protocol = Protocol(new_raw_protocol((c::ETH_P_LOOP as u16).to_be() as u32)); + /// `ETH_P_PUP` + #[cfg(linux_kernel)] + pub const PUP: Protocol = Protocol(new_raw_protocol((c::ETH_P_PUP as u16).to_be() as u32)); + /// `ETH_P_PUPAT` + #[cfg(linux_kernel)] + pub const PUPAT: Protocol = Protocol(new_raw_protocol((c::ETH_P_PUPAT as u16).to_be() as u32)); + /// `ETH_P_TSN` + #[cfg(linux_kernel)] + pub const TSN: Protocol = Protocol(new_raw_protocol((c::ETH_P_TSN as u16).to_be() as u32)); + /// `ETH_P_ERSPAN2` + #[cfg(linux_kernel)] + pub const ERSPAN2: Protocol = + Protocol(new_raw_protocol((c::ETH_P_ERSPAN2 as u16).to_be() as u32)); + /// `ETH_P_IP` + #[cfg(linux_kernel)] + pub const IP: Protocol = Protocol(new_raw_protocol((c::ETH_P_IP as u16).to_be() as u32)); + /// `ETH_P_X25` + #[cfg(linux_kernel)] + pub const X25: Protocol = Protocol(new_raw_protocol((c::ETH_P_X25 as u16).to_be() as u32)); + /// `ETH_P_ARP` + #[cfg(linux_kernel)] + pub const ARP: Protocol = Protocol(new_raw_protocol((c::ETH_P_ARP as u16).to_be() as u32)); + /// `ETH_P_BPQ` + #[cfg(linux_kernel)] + pub const BPQ: Protocol = Protocol(new_raw_protocol((c::ETH_P_BPQ as u16).to_be() as u32)); + /// `ETH_P_IEEEPUP` + #[cfg(linux_kernel)] + pub const IEEEPUP: Protocol = + Protocol(new_raw_protocol((c::ETH_P_IEEEPUP as u16).to_be() as u32)); + /// `ETH_P_IEEEPUPAT` + #[cfg(linux_kernel)] + pub const IEEEPUPAT: Protocol = + Protocol(new_raw_protocol((c::ETH_P_IEEEPUPAT as u16).to_be() as u32)); + /// `ETH_P_BATMAN` + #[cfg(linux_kernel)] + pub const BATMAN: Protocol = + Protocol(new_raw_protocol((c::ETH_P_BATMAN as u16).to_be() as u32)); + /// `ETH_P_DEC` + #[cfg(linux_kernel)] + pub const DEC: Protocol = Protocol(new_raw_protocol((c::ETH_P_DEC as u16).to_be() as u32)); + /// `ETH_P_DNA_DL` + #[cfg(linux_kernel)] + pub const DNA_DL: Protocol = + Protocol(new_raw_protocol((c::ETH_P_DNA_DL as u16).to_be() as u32)); + /// `ETH_P_DNA_RC` + #[cfg(linux_kernel)] + pub const DNA_RC: Protocol = + Protocol(new_raw_protocol((c::ETH_P_DNA_RC as u16).to_be() as u32)); + /// `ETH_P_DNA_RT` + #[cfg(linux_kernel)] + pub const DNA_RT: Protocol = + Protocol(new_raw_protocol((c::ETH_P_DNA_RT as u16).to_be() as u32)); + /// `ETH_P_LAT` + #[cfg(linux_kernel)] + pub const LAT: Protocol = Protocol(new_raw_protocol((c::ETH_P_LAT as u16).to_be() as u32)); + /// `ETH_P_DIAG` + #[cfg(linux_kernel)] + pub const DIAG: Protocol = Protocol(new_raw_protocol((c::ETH_P_DIAG as u16).to_be() as u32)); + /// `ETH_P_CUST` + #[cfg(linux_kernel)] + pub const CUST: Protocol = Protocol(new_raw_protocol((c::ETH_P_CUST as u16).to_be() as u32)); + /// `ETH_P_SCA` + #[cfg(linux_kernel)] + pub const SCA: Protocol = Protocol(new_raw_protocol((c::ETH_P_SCA as u16).to_be() as u32)); + /// `ETH_P_TEB` + #[cfg(linux_kernel)] + pub const TEB: Protocol = Protocol(new_raw_protocol((c::ETH_P_TEB as u16).to_be() as u32)); + /// `ETH_P_RARP` + #[cfg(linux_kernel)] + pub const RARP: Protocol = Protocol(new_raw_protocol((c::ETH_P_RARP as u16).to_be() as u32)); + /// `ETH_P_ATALK` + #[cfg(linux_kernel)] + pub const ATALK: Protocol = Protocol(new_raw_protocol((c::ETH_P_ATALK as u16).to_be() as u32)); + /// `ETH_P_AARP` + #[cfg(linux_kernel)] + pub const AARP: Protocol = Protocol(new_raw_protocol((c::ETH_P_AARP as u16).to_be() as u32)); + /// `ETH_P_8021Q` + #[cfg(linux_kernel)] + pub const P_8021Q: Protocol = + Protocol(new_raw_protocol((c::ETH_P_8021Q as u16).to_be() as u32)); + /// `ETH_P_ERSPAN` + #[cfg(linux_kernel)] + pub const ERSPAN: Protocol = + Protocol(new_raw_protocol((c::ETH_P_ERSPAN as u16).to_be() as u32)); + /// `ETH_P_IPX` + #[cfg(linux_kernel)] + pub const IPX: Protocol = Protocol(new_raw_protocol((c::ETH_P_IPX as u16).to_be() as u32)); + /// `ETH_P_IPV6` + #[cfg(linux_kernel)] + pub const IPV6: Protocol = Protocol(new_raw_protocol((c::ETH_P_IPV6 as u16).to_be() as u32)); + /// `ETH_P_PAUSE` + #[cfg(linux_kernel)] + pub const PAUSE: Protocol = Protocol(new_raw_protocol((c::ETH_P_PAUSE as u16).to_be() as u32)); + /// `ETH_P_SLOW` + #[cfg(linux_kernel)] + pub const SLOW: Protocol = Protocol(new_raw_protocol((c::ETH_P_SLOW as u16).to_be() as u32)); + /// `ETH_P_WCCP` + #[cfg(linux_kernel)] + pub const WCCP: Protocol = Protocol(new_raw_protocol((c::ETH_P_WCCP as u16).to_be() as u32)); + /// `ETH_P_MPLS_UC` + #[cfg(linux_kernel)] + pub const MPLS_UC: Protocol = + Protocol(new_raw_protocol((c::ETH_P_MPLS_UC as u16).to_be() as u32)); + /// `ETH_P_MPLS_MC` + #[cfg(linux_kernel)] + pub const MPLS_MC: Protocol = + Protocol(new_raw_protocol((c::ETH_P_MPLS_MC as u16).to_be() as u32)); + /// `ETH_P_ATMMPOA` + #[cfg(linux_kernel)] + pub const ATMMPOA: Protocol = + Protocol(new_raw_protocol((c::ETH_P_ATMMPOA as u16).to_be() as u32)); + /// `ETH_P_PPP_DISC` + #[cfg(linux_kernel)] + pub const PPP_DISC: Protocol = + Protocol(new_raw_protocol((c::ETH_P_PPP_DISC as u16).to_be() as u32)); + /// `ETH_P_PPP_SES` + #[cfg(linux_kernel)] + pub const PPP_SES: Protocol = + Protocol(new_raw_protocol((c::ETH_P_PPP_SES as u16).to_be() as u32)); + /// `ETH_P_LINK_CTL` + #[cfg(linux_kernel)] + pub const LINK_CTL: Protocol = + Protocol(new_raw_protocol((c::ETH_P_LINK_CTL as u16).to_be() as u32)); + /// `ETH_P_ATMFATE` + #[cfg(linux_kernel)] + pub const ATMFATE: Protocol = + Protocol(new_raw_protocol((c::ETH_P_ATMFATE as u16).to_be() as u32)); + /// `ETH_P_PAE` + #[cfg(linux_kernel)] + pub const PAE: Protocol = Protocol(new_raw_protocol((c::ETH_P_PAE as u16).to_be() as u32)); + /// `ETH_P_PROFINET` + #[cfg(linux_kernel)] + pub const PROFINET: Protocol = + Protocol(new_raw_protocol((c::ETH_P_PROFINET as u16).to_be() as u32)); + /// `ETH_P_REALTEK` + #[cfg(linux_kernel)] + pub const REALTEK: Protocol = + Protocol(new_raw_protocol((c::ETH_P_REALTEK as u16).to_be() as u32)); + /// `ETH_P_AOE` + #[cfg(linux_kernel)] + pub const AOE: Protocol = Protocol(new_raw_protocol((c::ETH_P_AOE as u16).to_be() as u32)); + /// `ETH_P_ETHERCAT` + #[cfg(linux_kernel)] + pub const ETHERCAT: Protocol = + Protocol(new_raw_protocol((c::ETH_P_ETHERCAT as u16).to_be() as u32)); + /// `ETH_P_8021AD` + #[cfg(linux_kernel)] + pub const P_8021AD: Protocol = + Protocol(new_raw_protocol((c::ETH_P_8021AD as u16).to_be() as u32)); + /// `ETH_P_802_EX1` + #[cfg(linux_kernel)] + pub const P_802_EX1: Protocol = + Protocol(new_raw_protocol((c::ETH_P_802_EX1 as u16).to_be() as u32)); + /// `ETH_P_PREAUTH` + #[cfg(linux_kernel)] + pub const PREAUTH: Protocol = + Protocol(new_raw_protocol((c::ETH_P_PREAUTH as u16).to_be() as u32)); + /// `ETH_P_TIPC` + #[cfg(linux_kernel)] + pub const TIPC: Protocol = Protocol(new_raw_protocol((c::ETH_P_TIPC as u16).to_be() as u32)); + /// `ETH_P_LLDP` + #[cfg(linux_kernel)] + pub const LLDP: Protocol = Protocol(new_raw_protocol((c::ETH_P_LLDP as u16).to_be() as u32)); + /// `ETH_P_MRP` + #[cfg(linux_kernel)] + pub const MRP: Protocol = Protocol(new_raw_protocol((c::ETH_P_MRP as u16).to_be() as u32)); + /// `ETH_P_MACSEC` + #[cfg(linux_kernel)] + pub const MACSEC: Protocol = + Protocol(new_raw_protocol((c::ETH_P_MACSEC as u16).to_be() as u32)); + /// `ETH_P_8021AH` + #[cfg(linux_kernel)] + pub const P_8021AH: Protocol = + Protocol(new_raw_protocol((c::ETH_P_8021AH as u16).to_be() as u32)); + /// `ETH_P_MVRP` + #[cfg(linux_kernel)] + pub const MVRP: Protocol = Protocol(new_raw_protocol((c::ETH_P_MVRP as u16).to_be() as u32)); + /// `ETH_P_1588` + #[cfg(linux_kernel)] + pub const P_1588: Protocol = Protocol(new_raw_protocol((c::ETH_P_1588 as u16).to_be() as u32)); + /// `ETH_P_NCSI` + #[cfg(linux_kernel)] + pub const NCSI: Protocol = Protocol(new_raw_protocol((c::ETH_P_NCSI as u16).to_be() as u32)); + /// `ETH_P_PRP` + #[cfg(linux_kernel)] + pub const PRP: Protocol = Protocol(new_raw_protocol((c::ETH_P_PRP as u16).to_be() as u32)); + /// `ETH_P_CFM` + #[cfg(linux_kernel)] + pub const CFM: Protocol = Protocol(new_raw_protocol((c::ETH_P_CFM as u16).to_be() as u32)); + /// `ETH_P_FCOE` + #[cfg(linux_kernel)] + pub const FCOE: Protocol = Protocol(new_raw_protocol((c::ETH_P_FCOE as u16).to_be() as u32)); + /// `ETH_P_IBOE` + #[cfg(linux_kernel)] + pub const IBOE: Protocol = Protocol(new_raw_protocol((c::ETH_P_IBOE as u16).to_be() as u32)); + /// `ETH_P_TDLS` + #[cfg(linux_kernel)] + pub const TDLS: Protocol = Protocol(new_raw_protocol((c::ETH_P_TDLS as u16).to_be() as u32)); + /// `ETH_P_FIP` + #[cfg(linux_kernel)] + pub const FIP: Protocol = Protocol(new_raw_protocol((c::ETH_P_FIP as u16).to_be() as u32)); + /// `ETH_P_80221` + #[cfg(linux_kernel)] + pub const P_80221: Protocol = + Protocol(new_raw_protocol((c::ETH_P_80221 as u16).to_be() as u32)); + /// `ETH_P_HSR` + #[cfg(linux_kernel)] + pub const HSR: Protocol = Protocol(new_raw_protocol((c::ETH_P_HSR as u16).to_be() as u32)); + /// `ETH_P_NSH` + #[cfg(linux_kernel)] + pub const NSH: Protocol = Protocol(new_raw_protocol((c::ETH_P_NSH as u16).to_be() as u32)); + /// `ETH_P_LOOPBACK` + #[cfg(linux_kernel)] + pub const LOOPBACK: Protocol = + Protocol(new_raw_protocol((c::ETH_P_LOOPBACK as u16).to_be() as u32)); + /// `ETH_P_QINQ1` + #[cfg(linux_kernel)] + pub const QINQ1: Protocol = Protocol(new_raw_protocol((c::ETH_P_QINQ1 as u16).to_be() as u32)); + /// `ETH_P_QINQ2` + #[cfg(linux_kernel)] + pub const QINQ2: Protocol = Protocol(new_raw_protocol((c::ETH_P_QINQ2 as u16).to_be() as u32)); + /// `ETH_P_QINQ3` + #[cfg(linux_kernel)] + pub const QINQ3: Protocol = Protocol(new_raw_protocol((c::ETH_P_QINQ3 as u16).to_be() as u32)); + /// `ETH_P_EDSA` + #[cfg(linux_kernel)] + pub const EDSA: Protocol = Protocol(new_raw_protocol((c::ETH_P_EDSA as u16).to_be() as u32)); + /// `ETH_P_DSA_8021Q` + #[cfg(linux_kernel)] + pub const DSA_8021Q: Protocol = + Protocol(new_raw_protocol((c::ETH_P_DSA_8021Q as u16).to_be() as u32)); + /// `ETH_P_DSA_A5PSW` + #[cfg(linux_kernel)] + pub const DSA_A5PSW: Protocol = + Protocol(new_raw_protocol((c::ETH_P_DSA_A5PSW as u16).to_be() as u32)); + /// `ETH_P_IFE` + #[cfg(linux_kernel)] + pub const IFE: Protocol = Protocol(new_raw_protocol((c::ETH_P_IFE as u16).to_be() as u32)); + /// `ETH_P_AF_IUCV` + #[cfg(linux_kernel)] + pub const AF_IUCV: Protocol = + Protocol(new_raw_protocol((c::ETH_P_AF_IUCV as u16).to_be() as u32)); + /// `ETH_P_802_3_MIN` + #[cfg(linux_kernel)] + pub const P_802_3_MIN: Protocol = + Protocol(new_raw_protocol((c::ETH_P_802_3_MIN as u16).to_be() as u32)); + /// `ETH_P_802_3` + #[cfg(linux_kernel)] + pub const P_802_3: Protocol = + Protocol(new_raw_protocol((c::ETH_P_802_3 as u16).to_be() as u32)); + /// `ETH_P_AX25` + #[cfg(linux_kernel)] + pub const AX25: Protocol = Protocol(new_raw_protocol((c::ETH_P_AX25 as u16).to_be() as u32)); + /// `ETH_P_ALL` + #[cfg(linux_kernel)] + pub const ALL: Protocol = Protocol(new_raw_protocol((c::ETH_P_ALL as u16).to_be() as u32)); + /// `ETH_P_802_2` + #[cfg(linux_kernel)] + pub const P_802_2: Protocol = + Protocol(new_raw_protocol((c::ETH_P_802_2 as u16).to_be() as u32)); + /// `ETH_P_SNAP` + #[cfg(linux_kernel)] + pub const SNAP: Protocol = Protocol(new_raw_protocol((c::ETH_P_SNAP as u16).to_be() as u32)); + /// `ETH_P_DDCMP` + #[cfg(linux_kernel)] + pub const DDCMP: Protocol = Protocol(new_raw_protocol((c::ETH_P_DDCMP as u16).to_be() as u32)); + /// `ETH_P_WAN_PPP` + #[cfg(linux_kernel)] + pub const WAN_PPP: Protocol = + Protocol(new_raw_protocol((c::ETH_P_WAN_PPP as u16).to_be() as u32)); + /// `ETH_P_PPP_MP` + #[cfg(linux_kernel)] + pub const PPP_MP: Protocol = + Protocol(new_raw_protocol((c::ETH_P_PPP_MP as u16).to_be() as u32)); + /// `ETH_P_LOCALTALK` + #[cfg(linux_kernel)] + pub const LOCALTALK: Protocol = + Protocol(new_raw_protocol((c::ETH_P_LOCALTALK as u16).to_be() as u32)); + /// `ETH_P_CAN` + #[cfg(linux_kernel)] + pub const CAN: Protocol = Protocol(new_raw_protocol((c::ETH_P_CAN as u16).to_be() as u32)); + /// `ETH_P_CANFD` + #[cfg(linux_kernel)] + pub const CANFD: Protocol = Protocol(new_raw_protocol((c::ETH_P_CANFD as u16).to_be() as u32)); + /// `ETH_P_CANXL` + #[cfg(linux_kernel)] + pub const CANXL: Protocol = Protocol(new_raw_protocol((c::ETH_P_CANXL as u16).to_be() as u32)); + /// `ETH_P_PPPTALK` + #[cfg(linux_kernel)] + pub const PPPTALK: Protocol = + Protocol(new_raw_protocol((c::ETH_P_PPPTALK as u16).to_be() as u32)); + /// `ETH_P_TR_802_2` + #[cfg(linux_kernel)] + pub const TR_802_2: Protocol = + Protocol(new_raw_protocol((c::ETH_P_TR_802_2 as u16).to_be() as u32)); + /// `ETH_P_MOBITEX` + #[cfg(linux_kernel)] + pub const MOBITEX: Protocol = + Protocol(new_raw_protocol((c::ETH_P_MOBITEX as u16).to_be() as u32)); + /// `ETH_P_CONTROL` + #[cfg(linux_kernel)] + pub const CONTROL: Protocol = + Protocol(new_raw_protocol((c::ETH_P_CONTROL as u16).to_be() as u32)); + /// `ETH_P_IRDA` + #[cfg(linux_kernel)] + pub const IRDA: Protocol = Protocol(new_raw_protocol((c::ETH_P_IRDA as u16).to_be() as u32)); + /// `ETH_P_ECONET` + #[cfg(linux_kernel)] + pub const ECONET: Protocol = + Protocol(new_raw_protocol((c::ETH_P_ECONET as u16).to_be() as u32)); + /// `ETH_P_HDLC` + #[cfg(linux_kernel)] + pub const HDLC: Protocol = Protocol(new_raw_protocol((c::ETH_P_HDLC as u16).to_be() as u32)); + /// `ETH_P_ARCNET` + #[cfg(linux_kernel)] + pub const ARCNET: Protocol = + Protocol(new_raw_protocol((c::ETH_P_ARCNET as u16).to_be() as u32)); + /// `ETH_P_DSA` + #[cfg(linux_kernel)] + pub const DSA: Protocol = Protocol(new_raw_protocol((c::ETH_P_DSA as u16).to_be() as u32)); + /// `ETH_P_TRAILER` + #[cfg(linux_kernel)] + pub const TRAILER: Protocol = + Protocol(new_raw_protocol((c::ETH_P_TRAILER as u16).to_be() as u32)); + /// `ETH_P_PHONET` + #[cfg(linux_kernel)] + pub const PHONET: Protocol = + Protocol(new_raw_protocol((c::ETH_P_PHONET as u16).to_be() as u32)); + /// `ETH_P_IEEE802154` + #[cfg(linux_kernel)] + pub const IEEE802154: Protocol = + Protocol(new_raw_protocol((c::ETH_P_IEEE802154 as u16).to_be() as u32)); + /// `ETH_P_CAIF` + #[cfg(linux_kernel)] + pub const CAIF: Protocol = Protocol(new_raw_protocol((c::ETH_P_CAIF as u16).to_be() as u32)); + /// `ETH_P_XDSA` + #[cfg(linux_kernel)] + pub const XDSA: Protocol = Protocol(new_raw_protocol((c::ETH_P_XDSA as u16).to_be() as u32)); + /// `ETH_P_MAP` + #[cfg(linux_kernel)] + pub const MAP: Protocol = Protocol(new_raw_protocol((c::ETH_P_MAP as u16).to_be() as u32)); + /// `ETH_P_MCTP` + #[cfg(linux_kernel)] + pub const MCTP: Protocol = Protocol(new_raw_protocol((c::ETH_P_MCTP as u16).to_be() as u32)); +} + +#[rustfmt::skip] +impl Protocol { + /// Constructs a `Protocol` from a raw integer. + #[inline] + pub const fn from_raw(raw: RawProtocol) -> Self { + Self(raw) + } + + /// Returns the raw integer for this `Protocol`. + #[inline] + pub const fn as_raw(self) -> RawProtocol { + self.0 + } +} + +/// `SHUT_*` constants for use with [`shutdown`]. +/// +/// [`shutdown`]: crate::net::shutdown +#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] +#[repr(u32)] +pub enum Shutdown { + /// `SHUT_RD`—Disable further read operations. + Read = c::SHUT_RD as _, + /// `SHUT_WR`—Disable further write operations. + Write = c::SHUT_WR as _, + /// `SHUT_RDWR`—Disable further read and write operations. + ReadWrite = c::SHUT_RDWR as _, +} + +bitflags! { + /// `SOCK_*` constants for use with [`socket_with`], [`accept_with`] and + /// [`acceptfrom_with`]. + /// + /// [`socket_with`]: crate::net::socket_with + /// [`accept_with`]: crate::net::accept_with + /// [`acceptfrom_with`]: crate::net::acceptfrom_with + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct SocketFlags: c::c_uint { + /// `SOCK_NONBLOCK` + #[cfg(not(any(apple, windows, target_os = "espidf", target_os = "haiku", target_os = "nto")))] + const NONBLOCK = bitcast!(c::SOCK_NONBLOCK); + + /// `SOCK_CLOEXEC` + #[cfg(not(any(apple, windows, target_os = "haiku")))] + const CLOEXEC = bitcast!(c::SOCK_CLOEXEC); + } +} + +#[test] +fn test_sizes() { + use c::c_int; + use core::mem::transmute; + + // Backend code needs to cast these to `c_int` so make sure that cast isn't + // lossy. + assert_eq_size!(RawProtocol, c_int); + assert_eq_size!(Protocol, c_int); + assert_eq_size!(Option, c_int); + assert_eq_size!(Option, c_int); + assert_eq_size!(RawSocketType, c_int); + assert_eq_size!(SocketType, c_int); + assert_eq_size!(SocketFlags, c_int); + + // Rustix doesn't depend on `Option` matching the ABI of a raw + // integer for correctness, but it should work nonetheless. + #[allow(unsafe_code)] + unsafe { + let t: Option = None; + assert_eq!(0_u32, transmute::, u32>(t)); + + let t: Option = Some(Protocol::from_raw(RawProtocol::new(4567).unwrap())); + assert_eq!(4567_u32, transmute::, u32>(t)); + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/param/mod.rs temporalio-1.3.0/vendor/rustix/src/param/mod.rs --- temporalio-1.3.0/vendor/rustix/src/param/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/param/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,12 +5,10 @@ //! parameters; they're *process* configuration parameters, as they may differ //! between different processes on the same system. -#[cfg(feature = "param")] mod auxv; #[cfg(target_vendor = "mustang")] mod init; -#[cfg(feature = "param")] pub use auxv::*; #[cfg(target_vendor = "mustang")] pub use init::init; diff -Nru temporalio-1.3.0/vendor/rustix/src/path/arg.rs temporalio-1.3.0/vendor/rustix/src/path/arg.rs --- temporalio-1.3.0/vendor/rustix/src/path/arg.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/path/arg.rs 2023-10-30 19:40:00.000000000 +0000 @@ -65,8 +65,8 @@ /// Returns a view of this string as a string slice. fn as_str(&self) -> io::Result<&str>; - /// Returns a potentially-lossy rendering of this string as a `Cow<'_, - /// str>`. + /// Returns a potentially-lossy rendering of this string as a + /// `Cow<'_, str>`. fn to_string_lossy(&self) -> Cow<'_, str>; /// Returns a view of this string as a maybe-owned [`CStr`]. @@ -968,8 +968,8 @@ } } -/// The slow path which handles any length. In theory OS's only support up -/// to `PATH_MAX`, but we let the OS enforce that. +/// The slow path which handles any length. In theory OS's only support up to +/// `PATH_MAX`, but we let the OS enforce that. #[cold] fn with_c_str_slow_path(bytes: &[u8], f: F) -> io::Result where diff -Nru temporalio-1.3.0/vendor/rustix/src/pid.rs temporalio-1.3.0/vendor/rustix/src/pid.rs --- temporalio-1.3.0/vendor/rustix/src/pid.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/pid.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,105 @@ +//! The `Pid` type. + +#![allow(unsafe_code)] + +use crate::backend::c; +use core::num::NonZeroI32; + +/// A process identifier as a raw integer. +pub type RawPid = c::pid_t; + +/// `pid_t`—A non-zero Unix process ID. +/// +/// This is a pid, and not a pidfd. It is not a file descriptor, and the +/// process it refers to could disappear at any time and be replaced by +/// another, unrelated, process. +#[repr(transparent)] +#[derive(Copy, Clone, Eq, PartialEq, Debug, Hash)] +pub struct Pid(NonZeroI32); + +impl Pid { + /// A `Pid` corresponding to the init process (pid 1). + pub const INIT: Self = Self(match NonZeroI32::new(1) { + Some(n) => n, + None => panic!("unreachable"), + }); + + /// Converts a `RawPid` into a `Pid`. + /// + /// Returns `Some` for strictly positive `RawPid`s. Otherwise, returns + /// `None`. + /// + /// This is safe because a `Pid` is a number without any guarantees for the + /// kernel. Non-child `Pid`s are always racy for any syscalls, but can only + /// cause logic errors. If you want race-free access to or control of + /// non-child processes, please consider other mechanisms like [pidfd] on + /// Linux. + /// + /// [pidfd]: https://man7.org/linux/man-pages/man2/pidfd_open.2.html + #[inline] + pub const fn from_raw(raw: RawPid) -> Option { + if raw > 0 { + // SAFETY: raw > 0. + unsafe { Some(Self::from_raw_unchecked(raw)) } + } else { + None + } + } + + /// Converts a known strictly positive `RawPid` into a `Pid`. + /// + /// # Safety + /// + /// The caller must guarantee `raw` is strictly positive. + #[inline] + pub const unsafe fn from_raw_unchecked(raw: RawPid) -> Self { + debug_assert!(raw > 0); + Self(NonZeroI32::new_unchecked(raw)) + } + + /// Creates a `Pid` holding the ID of the given child process. + #[cfg(feature = "std")] + #[inline] + pub fn from_child(child: &std::process::Child) -> Self { + let id = child.id(); + // SAFETY: We know the returned ID is valid because it came directly + // from an OS API. + unsafe { Self::from_raw_unchecked(id as i32) } + } + + /// Converts a `Pid` into a `NonZeroI32`. + #[inline] + pub const fn as_raw_nonzero(self) -> NonZeroI32 { + self.0 + } + + /// Converts an `Option` into a `RawPid`. + #[inline] + pub fn as_raw(pid: Option) -> RawPid { + pid.map_or(0, |pid| pid.0.get()) + } + + /// Test whether this pid represents the init process (pid 1). + #[inline] + pub const fn is_init(self) -> bool { + self.0.get() == Self::INIT.0.get() + } +} + +#[test] +fn test_sizes() { + use core::mem::transmute; + + assert_eq_size!(RawPid, NonZeroI32); + assert_eq_size!(RawPid, Pid); + assert_eq_size!(RawPid, Option); + + // Rustix doesn't depend on `Option` matching the ABI of a raw integer + // for correctness, but it should work nonetheless. + const_assert_eq!(0 as RawPid, unsafe { + transmute::, RawPid>(None) + }); + const_assert_eq!(4567 as RawPid, unsafe { + transmute::, RawPid>(Some(Pid::from_raw_unchecked(4567))) + }); +} diff -Nru temporalio-1.3.0/vendor/rustix/src/pipe.rs temporalio-1.3.0/vendor/rustix/src/pipe.rs --- temporalio-1.3.0/vendor/rustix/src/pipe.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/pipe.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,217 @@ +//! `pipe` and related APIs. +//! +//! # Safety +//! +//! `vmsplice` is an unsafe function. + +#![allow(unsafe_code)] + +use crate::fd::OwnedFd; +use crate::{backend, io}; +#[cfg(not(any( + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "redox", + target_os = "wasi", +)))] +use backend::c; +#[cfg(linux_kernel)] +use backend::fd::AsFd; + +#[cfg(not(apple))] +pub use backend::pipe::types::PipeFlags; + +#[cfg(linux_kernel)] +pub use backend::pipe::types::{IoSliceRaw, SpliceFlags}; + +/// `PIPE_BUF`—The maximum length at which writes to a pipe are atomic. +/// +/// # References +/// - [Linux] +/// - [POSIX] +/// +/// [Linux]: https://man7.org/linux/man-pages/man7/pipe.7.html +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html +#[cfg(not(any( + solarish, + windows, + target_os = "espidf", + target_os = "haiku", + target_os = "redox", + target_os = "wasi", +)))] +pub const PIPE_BUF: usize = c::PIPE_BUF; + +/// `pipe()`—Creates a pipe. +/// +/// This function creates a pipe and returns two file descriptors, for the +/// reading and writing ends of the pipe, respectively. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// - [Apple] +/// - [FreeBSD] +/// - [NetBSD] +/// - [OpenBSD] +/// - [DragonFly BSD] +/// - [illumos] +/// - [glibc] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/pipe.html +/// [Linux]: https://man7.org/linux/man-pages/man2/pipe.2.html +/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/pipe.2.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=pipe&sektion=2 +/// [NetBSD]: https://man.netbsd.org/pipe.2 +/// [OpenBSD]: https://man.openbsd.org/pipe.2 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=pipe§ion=2 +/// [illumos]: https://illumos.org/man/2/pipe +/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Creating-a-Pipe.html +#[inline] +pub fn pipe() -> io::Result<(OwnedFd, OwnedFd)> { + backend::pipe::syscalls::pipe() +} + +/// `pipe2(flags)`—Creates a pipe, with flags. +/// +/// This function creates a pipe and returns two file descriptors, for the +/// reading and writing ends of the pipe, respectively. +/// +/// # References +/// - [Linux] +/// - [FreeBSD] +/// - [NetBSD] +/// - [OpenBSD] +/// - [DragonFly BSD] +/// - [illumos] +/// +/// [Linux]: https://man7.org/linux/man-pages/man2/pipe2.2.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=pipe2&sektion=2 +/// [NetBSD]: https://man.netbsd.org/pipe2.2 +/// [OpenBSD]: https://man.openbsd.org/pipe2.2 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=pipe2§ion=2 +/// [illumos]: https://illumos.org/man/2/pipe2 +#[cfg(not(any( + apple, + target_os = "aix", + target_os = "espidf", + target_os = "haiku", + target_os = "nto" +)))] +#[inline] +#[doc(alias = "pipe2")] +pub fn pipe_with(flags: PipeFlags) -> io::Result<(OwnedFd, OwnedFd)> { + backend::pipe::syscalls::pipe_with(flags) +} + +/// `splice(fd_in, off_in, fd_out, off_out, len, flags)`—Transfer data +/// between a file and a pipe. +/// +/// This function transfers up to `len` bytes of data from the file descriptor +/// `fd_in` to the file descriptor `fd_out`, where one of the file descriptors +/// must refer to a pipe. +/// +/// `off_*` must be `None` if the corresponding fd refers to a pipe. +/// Otherwise its value points to the starting offset to the file, from which +/// the data is read/written. On success, the number of bytes read/written is +/// added to the offset. +/// +/// Passing `None` causes the read/write to start from the file offset, and the +/// file offset is adjusted appropriately. +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man2/splice.2.html +#[cfg(linux_kernel)] +#[inline] +pub fn splice( + fd_in: FdIn, + off_in: Option<&mut u64>, + fd_out: FdOut, + off_out: Option<&mut u64>, + len: usize, + flags: SpliceFlags, +) -> io::Result { + backend::pipe::syscalls::splice(fd_in.as_fd(), off_in, fd_out.as_fd(), off_out, len, flags) +} + +/// `vmsplice(fd, bufs, flags)`—Transfer data between memory and a pipe. +/// +/// If `fd` is the write end of the pipe, +/// the function maps the memory pointer at by `bufs` to the pipe. +/// +/// If `fd` is the read end of the pipe, +/// the function writes data from the pipe to said memory. +/// +/// # Safety +/// +/// If the memory must not be mutated (such as when `bufs` were originally +/// immutable slices), it is up to the caller to ensure that the write end of +/// the pipe is placed in `fd`. +/// +/// Additionally if `SpliceFlags::GIFT` is set, the caller must also ensure +/// that the contents of `bufs` in never modified following the call, +/// and that all of the pointers in `bufs` are page aligned, +/// and the lengths are multiples of a page size in bytes. +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man2/vmsplice.2.html +#[cfg(linux_kernel)] +#[inline] +pub unsafe fn vmsplice( + fd: PipeFd, + bufs: &[IoSliceRaw], + flags: SpliceFlags, +) -> io::Result { + backend::pipe::syscalls::vmsplice(fd.as_fd(), bufs, flags) +} + +/// `tee(fd_in, fd_out, len, flags)`—Copy data between pipes without +/// consuming it. +/// +/// This reads up to `len` bytes from `in_fd` without consuming them, and +/// writes them to `out_fd`. +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man2/tee.2.html +#[cfg(linux_kernel)] +#[inline] +pub fn tee( + fd_in: FdIn, + fd_out: FdOut, + len: usize, + flags: SpliceFlags, +) -> io::Result { + backend::pipe::syscalls::tee(fd_in.as_fd(), fd_out.as_fd(), len, flags) +} + +/// `ioctl(fd, F_GETPIPE_SZ)`—Return the buffer capacity of a pipe. +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man2/fcntl.2.html +#[cfg(linux_kernel)] +#[inline] +pub fn fcntl_getpipe_size(fd: Fd) -> io::Result { + backend::pipe::syscalls::fcntl_getpipe_sz(fd.as_fd()) +} + +/// `ioctl(fd, F_SETPIPE_SZ)`—Set the buffer capacity of a pipe. +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man2/fcntl.2.html +#[cfg(linux_kernel)] +#[inline] +pub fn fcntl_setpipe_size(fd: Fd, size: usize) -> io::Result<()> { + backend::pipe::syscalls::fcntl_setpipe_sz(fd.as_fd(), size) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/prctl.rs temporalio-1.3.0/vendor/rustix/src/prctl.rs --- temporalio-1.3.0/vendor/rustix/src/prctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,68 @@ +//! Helper functions for `prctl` syscalls. + +#![allow(unsafe_code)] + +use crate::backend::c::{c_int, c_void}; +use crate::backend::prctl::syscalls; +use crate::io; +use crate::utils::as_mut_ptr; +use bitflags::bitflags; +use core::mem::MaybeUninit; +use core::ptr::null_mut; + +bitflags! { + /// `PR_PAC_AP*`. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct PointerAuthenticationKeys: u32 { + /// `PR_PAC_APIAKEY`—Instruction authentication key `A`. + const INSTRUCTION_AUTHENTICATION_KEY_A = linux_raw_sys::prctl::PR_PAC_APIAKEY; + /// `PR_PAC_APIBKEY`—Instruction authentication key `B`. + const INSTRUCTION_AUTHENTICATION_KEY_B = linux_raw_sys::prctl::PR_PAC_APIBKEY; + /// `PR_PAC_APDAKEY`—Data authentication key `A`. + const DATA_AUTHENTICATION_KEY_A = linux_raw_sys::prctl::PR_PAC_APDAKEY; + /// `PR_PAC_APDBKEY`—Data authentication key `B`. + const DATA_AUTHENTICATION_KEY_B = linux_raw_sys::prctl::PR_PAC_APDBKEY; + /// `PR_PAC_APGAKEY`—Generic authentication `A` key. + const GENERIC_AUTHENTICATION_KEY_A = linux_raw_sys::prctl::PR_PAC_APGAKEY; + } +} + +#[inline] +pub(crate) unsafe fn prctl_1arg(option: c_int) -> io::Result { + const NULL: *mut c_void = null_mut(); + syscalls::prctl(option, NULL, NULL, NULL, NULL) +} + +#[inline] +pub(crate) unsafe fn prctl_2args(option: c_int, arg2: *mut c_void) -> io::Result { + const NULL: *mut c_void = null_mut(); + syscalls::prctl(option, arg2, NULL, NULL, NULL) +} + +#[inline] +pub(crate) unsafe fn prctl_3args( + option: c_int, + arg2: *mut c_void, + arg3: *mut c_void, +) -> io::Result { + syscalls::prctl(option, arg2, arg3, null_mut(), null_mut()) +} + +#[inline] +pub(crate) unsafe fn prctl_get_at_arg2_optional

(option: i32) -> io::Result

{ + let mut value: MaybeUninit

= MaybeUninit::uninit(); + prctl_2args(option, value.as_mut_ptr().cast())?; + Ok(value.assume_init()) +} + +#[inline] +pub(crate) unsafe fn prctl_get_at_arg2(option: i32) -> io::Result +where + P: Default, + T: TryFrom, +{ + let mut value: P = Default::default(); + prctl_2args(option, as_mut_ptr(&mut value).cast())?; + TryFrom::try_from(value) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/process/chdir.rs temporalio-1.3.0/vendor/rustix/src/process/chdir.rs --- temporalio-1.3.0/vendor/rustix/src/process/chdir.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/process/chdir.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,13 @@ -use crate::ffi::CString; -use crate::path::SMALL_PATH_BUFFER_SIZE; -use crate::{backend, io, path}; -use alloc::vec::Vec; #[cfg(not(target_os = "fuchsia"))] -use backend::fd::AsFd; +use crate::backend::fd::AsFd; +#[cfg(any(feature = "fs", not(target_os = "fuchsia")))] +use crate::{backend, io}; +#[cfg(feature = "fs")] +use { + crate::ffi::{CStr, CString}, + crate::path::{self, SMALL_PATH_BUFFER_SIZE}, + alloc::vec::Vec, +}; /// `chdir(path)`—Change the current working directory. /// @@ -14,6 +18,8 @@ /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/chdir.html /// [Linux]: https://man7.org/linux/man-pages/man2/chdir.2.html #[inline] +#[cfg(feature = "fs")] +#[cfg_attr(doc_cfg, doc(cfg(feature = "fs")))] pub fn chdir(path: P) -> io::Result<()> { path.into_with_c_str(backend::process::syscalls::chdir) } @@ -32,9 +38,9 @@ backend::process::syscalls::fchdir(fd.as_fd()) } -/// `getcwd()`—Return the current working directory. +/// `getCWD`—Return the current working directory. /// -/// If `reuse` is non-empty, reuse its buffer to store the result if possible. +/// If `reuse` already has available capacity, reuse it if possible. /// /// # References /// - [POSIX] @@ -42,29 +48,43 @@ /// /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getcwd.html /// [Linux]: https://man7.org/linux/man-pages/man3/getcwd.3.html +#[cfg(feature = "fs")] #[cfg(not(target_os = "wasi"))] +#[cfg_attr(doc_cfg, doc(cfg(feature = "fs")))] #[inline] pub fn getcwd>>(reuse: B) -> io::Result { _getcwd(reuse.into()) } +#[cfg(feature = "fs")] +#[allow(unsafe_code)] fn _getcwd(mut buffer: Vec) -> io::Result { - // This code would benefit from having a better way to read into - // uninitialized memory, but that requires `unsafe`. buffer.clear(); buffer.reserve(SMALL_PATH_BUFFER_SIZE); - buffer.resize(buffer.capacity(), 0_u8); loop { - match backend::process::syscalls::getcwd(&mut buffer) { + match backend::process::syscalls::getcwd(buffer.spare_capacity_mut()) { Err(io::Errno::RANGE) => { - buffer.reserve(1); // use `Vec` reallocation strategy to grow capacity exponentially - buffer.resize(buffer.capacity(), 0_u8); + buffer.reserve(buffer.capacity() + 1); // use `Vec` reallocation strategy to grow capacity exponentially } Ok(_) => { - let len = buffer.iter().position(|x| *x == b'\0').unwrap(); - buffer.resize(len, 0_u8); - return Ok(CString::new(buffer).unwrap()); + // SAFETY: + // - "These functions return a null-terminated string" + // - [POSIX definition 3.375: String]: "A contiguous sequence of bytes + // terminated by and including the first null byte." + // + // Thus, there will be a single NUL byte at the end of the string. + // + // [POSIX definition 3.375: String]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_375 + unsafe { + buffer.set_len( + CStr::from_ptr(buffer.as_ptr().cast()) + .to_bytes_with_nul() + .len(), + ); + + return Ok(CString::from_vec_with_nul_unchecked(buffer)); + } } Err(errno) => return Err(errno), } diff -Nru temporalio-1.3.0/vendor/rustix/src/process/chroot.rs temporalio-1.3.0/vendor/rustix/src/process/chroot.rs --- temporalio-1.3.0/vendor/rustix/src/process/chroot.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/process/chroot.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,5 @@ +#[cfg(feature = "fs")] +#[cfg_attr(doc_cfg, doc(cfg(feature = "fs")))] use crate::{backend, io, path}; /// `chroot(path)`—Change the process root directory. @@ -6,6 +8,8 @@ /// - [Linux] /// /// [Linux]: https://man7.org/linux/man-pages/man2/chroot.2.html +#[cfg(feature = "fs")] +#[cfg_attr(doc_cfg, doc(cfg(feature = "fs")))] #[inline] pub fn chroot(path: P) -> io::Result<()> { path.into_with_c_str(backend::process::syscalls::chroot) diff -Nru temporalio-1.3.0/vendor/rustix/src/process/exit.rs temporalio-1.3.0/vendor/rustix/src/process/exit.rs --- temporalio-1.3.0/vendor/rustix/src/process/exit.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/process/exit.rs 2023-10-30 19:40:00.000000000 +0000 @@ -32,5 +32,5 @@ /// /// [Linux]: https://tldp.org/LDP/abs/html/exitcodes.html /// [`Signal::Abort`]: crate::process::Signal::Abort -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] pub const EXIT_SIGNALED_SIGABRT: i32 = backend::process::types::EXIT_SIGNALED_SIGABRT; diff -Nru temporalio-1.3.0/vendor/rustix/src/process/id.rs temporalio-1.3.0/vendor/rustix/src/process/id.rs --- temporalio-1.3.0/vendor/rustix/src/process/id.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/process/id.rs 2023-10-30 19:40:00.000000000 +0000 @@ -13,35 +13,16 @@ use backend::process::types::RawCpuid; /// The raw integer value of a Unix user ID. -pub use backend::process::types::RawUid; +pub use crate::ugid::RawUid; /// The raw integer value of a Unix group ID. -pub use backend::process::types::RawGid; +pub use crate::ugid::RawGid; /// The raw integer value of a Unix process ID. -pub use backend::process::types::RawPid; +pub use crate::pid::RawPid; -/// The raw integer value of a Unix process ID. -pub use backend::process::types::RawNonZeroPid; - -/// `uid_t`—A Unix user ID. -#[repr(transparent)] -#[derive(Copy, Clone, Eq, PartialEq, Debug, Hash)] -pub struct Uid(RawUid); - -/// `gid_t`—A Unix group ID. -#[repr(transparent)] -#[derive(Copy, Clone, Eq, PartialEq, Debug, Hash)] -pub struct Gid(RawGid); - -/// `pid_t`—A non-zero Unix process ID. -/// -/// This is a pid, and not a pidfd. It is not a file descriptor, and the -/// process it refers to could disappear at any time and be replaced by -/// another, unrelated, process. -#[repr(transparent)] -#[derive(Copy, Clone, Eq, PartialEq, Debug, Hash)] -pub struct Pid(RawNonZeroPid); +pub use crate::pid::Pid; +pub use crate::ugid::{Gid, Uid}; /// A Linux CPU ID. #[cfg(linux_kernel)] @@ -49,122 +30,6 @@ #[derive(Copy, Clone, Eq, PartialEq, Debug, Hash)] pub struct Cpuid(RawCpuid); -impl Uid { - /// A `Uid` corresponding to the root user (uid 0). - pub const ROOT: Self = Self(0); - - /// Converts a `RawUid` into a `Uid`. - /// - /// # Safety - /// - /// `raw` must be the value of a valid Unix user ID. - #[inline] - pub const unsafe fn from_raw(raw: RawUid) -> Self { - Self(raw) - } - - /// Converts a `Uid` into a `RawUid`. - #[inline] - pub const fn as_raw(self) -> RawUid { - self.0 - } - - /// Test whether this uid represents the root user (uid 0). - #[inline] - pub const fn is_root(self) -> bool { - self.0 == Self::ROOT.0 - } -} - -impl Gid { - /// A `Gid` corresponding to the root group (gid 0). - pub const ROOT: Self = Self(0); - - /// Converts a `RawGid` into a `Gid`. - /// - /// # Safety - /// - /// `raw` must be the value of a valid Unix group ID. - #[inline] - pub const unsafe fn from_raw(raw: RawGid) -> Self { - Self(raw) - } - - /// Converts a `Gid` into a `RawGid`. - #[inline] - pub const fn as_raw(self) -> RawGid { - self.0 - } - - /// Test whether this gid represents the root group (gid 0). - #[inline] - pub const fn is_root(self) -> bool { - self.0 == Self::ROOT.0 - } -} - -impl Pid { - /// A `Pid` corresponding to the init process (pid 1). - pub const INIT: Self = Self( - // SAFETY: The init process' pid is always valid. - unsafe { RawNonZeroPid::new_unchecked(1) }, - ); - - /// Converts a `RawPid` into a `Pid`. - /// - /// # Safety - /// - /// `raw` must be the value of a valid Unix process ID, or zero. - #[inline] - pub const unsafe fn from_raw(raw: RawPid) -> Option { - match RawNonZeroPid::new(raw) { - Some(pid) => Some(Self(pid)), - None => None, - } - } - - /// Converts a known non-zero `RawPid` into a `Pid`. - /// - /// # Safety - /// - /// `raw` must be the value of a valid Unix process ID. It must not be - /// zero. - #[inline] - pub const unsafe fn from_raw_nonzero(raw: RawNonZeroPid) -> Self { - Self(raw) - } - - /// Creates a `Pid` holding the ID of the given child process. - #[cfg(feature = "std")] - #[inline] - pub fn from_child(child: &std::process::Child) -> Self { - let id = child.id(); - debug_assert_ne!(id, 0); - - // SAFETY: We know the returned ID is valid because it came directly - // from an OS API. - unsafe { Self::from_raw_nonzero(RawNonZeroPid::new_unchecked(id as _)) } - } - - /// Converts a `Pid` into a `RawNonZeroPid`. - #[inline] - pub const fn as_raw_nonzero(self) -> RawNonZeroPid { - self.0 - } - - /// Converts an `Option` into a `RawPid`. - #[inline] - pub fn as_raw(pid: Option) -> RawPid { - pid.map_or(0, |pid| pid.0.get()) - } - - /// Test whether this pid represents the init process (pid 0). - #[inline] - pub const fn is_init(self) -> bool { - self.0.get() == Self::INIT.0.get() - } -} - #[cfg(linux_kernel)] impl Cpuid { /// Converts a `RawCpuid` into a `Cpuid`. @@ -195,7 +60,7 @@ #[inline] #[must_use] pub fn getuid() -> Uid { - backend::process::syscalls::getuid() + backend::ugid::syscalls::getuid() } /// `geteuid()`—Returns the process' effective user ID. @@ -209,7 +74,7 @@ #[inline] #[must_use] pub fn geteuid() -> Uid { - backend::process::syscalls::geteuid() + backend::ugid::syscalls::geteuid() } /// `getgid()`—Returns the process' real group ID. @@ -223,7 +88,7 @@ #[inline] #[must_use] pub fn getgid() -> Gid { - backend::process::syscalls::getgid() + backend::ugid::syscalls::getgid() } /// `getegid()`—Returns the process' effective group ID. @@ -237,7 +102,7 @@ #[inline] #[must_use] pub fn getegid() -> Gid { - backend::process::syscalls::getegid() + backend::ugid::syscalls::getegid() } /// `getpid()`—Returns the process' ID. @@ -251,7 +116,7 @@ #[inline] #[must_use] pub fn getpid() -> Pid { - backend::process::syscalls::getpid() + backend::pid::syscalls::getpid() } /// `getppid()`—Returns the parent process' ID. @@ -364,20 +229,3 @@ buffer.resize(buffer.capacity(), Gid::ROOT); } } - -// Return the raw value of the IDs. In case of `None` it returns `u32::MAX` -// since it has the same bit pattern as `-1` indicating no change to the -// owner/group ID. -pub(crate) fn translate_fchown_args(owner: Option, group: Option) -> (u32, u32) { - let ow = match owner { - Some(o) => o.as_raw(), - None => u32::MAX, - }; - - let gr = match group { - Some(g) => g.as_raw(), - None => u32::MAX, - }; - - (ow, gr) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/process/ioctl.rs temporalio-1.3.0/vendor/rustix/src/process/ioctl.rs --- temporalio-1.3.0/vendor/rustix/src/process/ioctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/process/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ /// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=tty&sektion=4 /// [NetBSD]: https://man.netbsd.org/tty.4 /// [OpenBSD]: https://man.openbsd.org/tty.4 -#[cfg(not(any(windows, target_os = "haiku", target_os = "redox", target_os = "wasi")))] +#[cfg(not(any(windows, target_os = "aix", target_os = "redox", target_os = "wasi")))] #[inline] #[doc(alias = "TIOCSCTTY")] pub fn ioctl_tiocsctty(fd: Fd) -> io::Result<()> { diff -Nru temporalio-1.3.0/vendor/rustix/src/process/kill.rs temporalio-1.3.0/vendor/rustix/src/process/kill.rs --- temporalio-1.3.0/vendor/rustix/src/process/kill.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/process/kill.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,7 @@ use crate::process::Pid; use crate::{backend, io}; -pub use backend::process::types::Signal; +pub use crate::signal::Signal; /// `kill(pid, sig)`—Sends a signal to a process. /// diff -Nru temporalio-1.3.0/vendor/rustix/src/process/membarrier.rs temporalio-1.3.0/vendor/rustix/src/process/membarrier.rs --- temporalio-1.3.0/vendor/rustix/src/process/membarrier.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/process/membarrier.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,4 @@ //! The Linux `membarrier` syscall. -//! -//! # Safety -//! -//! This file defines an enum and a bitflags type that represent the same -//! set of values and are kept in sync. -#![allow(unsafe_code)] use crate::process::Cpuid; use crate::{backend, io}; @@ -17,6 +11,8 @@ /// /// These flags correspond to values of [`MembarrierCommand`] which are /// supported in the OS. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct MembarrierQuery: u32 { /// `MEMBARRIER_CMD_GLOBAL` (also known as `MEMBARRIER_CMD_SHARED`) #[doc(alias = "SHARED")] @@ -46,18 +42,18 @@ /// Test whether this query result contains the given command. #[inline] pub fn contains_command(self, cmd: MembarrierCommand) -> bool { - // SAFETY: `MembarrierCommand` is an enum that only contains values - // also valid in `MembarrierQuery`. - self.contains(unsafe { Self::from_bits_unchecked(cmd as _) }) + // `MembarrierCommand` is an enum that only contains values also valid + // in `MembarrierQuery`. + self.contains(Self::from_bits_retain(cmd as _)) } } /// `membarrier(MEMBARRIER_CMD_QUERY, 0, 0)`—Query the supported `membarrier` /// commands. /// -/// This function doesn't return a `Result` because it always succeeds; if -/// the underlying OS doesn't support the `membarrier` syscall, it returns -/// an empty `MembarrierQuery` value. +/// This function doesn't return a `Result` because it always succeeds; if the +/// underlying OS doesn't support the `membarrier` syscall, it returns an empty +/// `MembarrierQuery` value. /// /// # References /// - [Linux] diff -Nru temporalio-1.3.0/vendor/rustix/src/process/mod.rs temporalio-1.3.0/vendor/rustix/src/process/mod.rs --- temporalio-1.3.0/vendor/rustix/src/process/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/process/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -7,29 +7,35 @@ mod exit; #[cfg(not(target_os = "wasi"))] // WASI doesn't have get[gpu]id. mod id; +#[cfg(not(target_os = "espidf"))] mod ioctl; -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] mod kill; #[cfg(linux_kernel)] mod membarrier; #[cfg(target_os = "linux")] mod pidfd; +#[cfg(target_os = "linux")] +mod pidfd_getfd; #[cfg(linux_kernel)] mod prctl; #[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))] // WASI doesn't have [gs]etpriority. mod priority; -#[cfg(target_os = "freebsd")] +#[cfg(freebsdlike)] mod procctl; -#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))] +#[cfg(not(any( + target_os = "espidf", + target_os = "fuchsia", + target_os = "redox", + target_os = "wasi" +)))] mod rlimit; #[cfg(any(linux_kernel, target_os = "dragonfly", target_os = "fuchsia"))] mod sched; mod sched_yield; -#[cfg(not(target_os = "wasi"))] // WASI doesn't have uname. -mod system; #[cfg(not(target_os = "wasi"))] // WASI doesn't have umask. mod umask; -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] mod wait; #[cfg(not(target_os = "wasi"))] @@ -39,31 +45,33 @@ pub use exit::*; #[cfg(not(target_os = "wasi"))] pub use id::*; +#[cfg(not(target_os = "espidf"))] pub use ioctl::*; -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] pub use kill::*; #[cfg(linux_kernel)] pub use membarrier::*; #[cfg(target_os = "linux")] pub use pidfd::*; +#[cfg(target_os = "linux")] +pub use pidfd_getfd::*; #[cfg(linux_kernel)] pub use prctl::*; #[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))] pub use priority::*; -#[cfg(target_os = "freebsd")] +#[cfg(freebsdlike)] pub use procctl::*; -#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))] +#[cfg(not(any( + target_os = "espidf", + target_os = "fuchsia", + target_os = "redox", + target_os = "wasi" +)))] pub use rlimit::*; #[cfg(any(linux_kernel, target_os = "dragonfly", target_os = "fuchsia"))] pub use sched::*; pub use sched_yield::sched_yield; #[cfg(not(target_os = "wasi"))] -pub use system::*; -#[cfg(not(target_os = "wasi"))] pub use umask::*; -#[cfg(not(target_os = "wasi"))] +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] pub use wait::*; - -#[cfg(not(target_os = "wasi"))] -#[cfg(feature = "fs")] -pub(crate) use id::translate_fchown_args; diff -Nru temporalio-1.3.0/vendor/rustix/src/process/pidfd_getfd.rs temporalio-1.3.0/vendor/rustix/src/process/pidfd_getfd.rs --- temporalio-1.3.0/vendor/rustix/src/process/pidfd_getfd.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/process/pidfd_getfd.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,53 @@ +//! The [`pidfd_getfd`] function and supporting types. + +#![allow(unsafe_code)] +use crate::fd::OwnedFd; +use crate::{backend, io}; +use backend::fd::{AsFd, RawFd}; + +/// Raw file descriptor in another process. +/// +/// A distinct type alias is used here to inform the user that normal file +/// descriptors from the calling process should not be used. The provided file +/// descriptor is used by the kernel as the index into the file descriptor +/// table of an entirely different process. +pub type ForeignRawFd = RawFd; + +bitflags::bitflags! { + /// All flags are reserved for future use. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct PidfdGetfdFlags: backend::c::c_uint {} +} + +/// `syscall(SYS_pidfd_getfd, pidfd, flags)`—Obtain a duplicate of another +/// process' file descriptor. +/// +/// # References +/// - [Linux] +/// +/// # Warning +/// +/// This function is generally safe for the calling process, but it can impact +/// the target process in unexpected ways. If you want to ensure that Rust I/O +/// safety assumptions continue to hold in the target process, then the target +/// process must have communicated the file description number to the calling +/// process from a value of a type that implements `AsRawFd`, and the target +/// process must not drop that value until after the calling process has +/// returned from `pidfd_getfd`. +/// +/// When `pidfd_getfd` is used to debug the target, or the target is not a Rust +/// aplication, or `pidfd_getfd` is used in any other way, then extra care +/// should be taken to avoid unexpected behaviour or crashes. +/// +/// For further details, see the references above. +/// +/// [Linux]: https://man7.org/linux/man-pages/man2/pidfd_getfd.2.html +#[inline] +pub fn pidfd_getfd( + pidfd: Fd, + targetfd: ForeignRawFd, + flags: PidfdGetfdFlags, +) -> io::Result { + backend::process::syscalls::pidfd_getfd(pidfd.as_fd(), targetfd, flags) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/process/pidfd.rs temporalio-1.3.0/vendor/rustix/src/process/pidfd.rs --- temporalio-1.3.0/vendor/rustix/src/process/pidfd.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/process/pidfd.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,14 +6,16 @@ /// `PIDFD_*` flags for use with [`pidfd_open`]. /// /// [`pidfd_open`]: crate::process::pidfd_open + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct PidfdFlags: backend::c::c_uint { /// `PIDFD_NONBLOCK`. const NONBLOCK = backend::c::PIDFD_NONBLOCK; } } -/// `syscall(SYS_pidfd_open, pid, flags)`—Creates a file descriptor for -/// a process. +/// `syscall(SYS_pidfd_open, pid, flags)`—Creates a file descriptor for a +/// process. /// /// # References /// - [Linux] diff -Nru temporalio-1.3.0/vendor/rustix/src/process/prctl.rs temporalio-1.3.0/vendor/rustix/src/process/prctl.rs --- temporalio-1.3.0/vendor/rustix/src/process/prctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/process/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,65 +5,22 @@ #![allow(unsafe_code)] -use core::convert::{TryFrom, TryInto}; -use core::mem::{size_of, MaybeUninit}; +use core::mem::size_of; use core::ptr::{null, null_mut, NonNull}; use bitflags::bitflags; use crate::backend::c::{c_int, c_uint, c_void}; -use crate::backend::process::syscalls; -use crate::backend::process::types::Signal; +use crate::backend::prctl::syscalls; use crate::fd::{AsRawFd, BorrowedFd}; use crate::ffi::CStr; use crate::io; +use crate::prctl::*; use crate::process::{Pid, RawPid}; +use crate::signal::Signal; use crate::utils::{as_mut_ptr, as_ptr}; // -// Helper functions. -// - -#[inline] -pub(crate) unsafe fn prctl_1arg(option: c_int) -> io::Result { - const NULL: *mut c_void = null_mut(); - syscalls::prctl(option, NULL, NULL, NULL, NULL) -} - -#[inline] -pub(crate) unsafe fn prctl_2args(option: c_int, arg2: *mut c_void) -> io::Result { - const NULL: *mut c_void = null_mut(); - syscalls::prctl(option, arg2, NULL, NULL, NULL) -} - -#[inline] -pub(crate) unsafe fn prctl_3args( - option: c_int, - arg2: *mut c_void, - arg3: *mut c_void, -) -> io::Result { - syscalls::prctl(option, arg2, arg3, null_mut(), null_mut()) -} - -#[inline] -pub(crate) unsafe fn prctl_get_at_arg2_optional

(option: i32) -> io::Result

{ - let mut value: MaybeUninit

= MaybeUninit::uninit(); - prctl_2args(option, value.as_mut_ptr().cast())?; - Ok(value.assume_init()) -} - -#[inline] -pub(crate) unsafe fn prctl_get_at_arg2(option: i32) -> io::Result -where - P: Default, - T: TryFrom, -{ - let mut value: P = Default::default(); - prctl_2args(option, as_mut_ptr(&mut value).cast())?; - TryFrom::try_from(value) -} - -// // PR_GET_PDEATHSIG/PR_SET_PDEATHSIG // @@ -139,7 +96,7 @@ } } -/// Get the current state of the calling process's `dumpable` attribute. +/// Get the current state of the calling process' `dumpable` attribute. /// /// # References /// - [`prctl(PR_GET_DUMPABLE,...)`] @@ -180,6 +137,9 @@ bitflags! { /// `PR_UNALIGN_*` flags for use with [`unaligned_access_control`] and + /// [`set_unaligned_access_control`]. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct UnalignedAccessControl: u32 { /// Silently fix up unaligned user accesses. #[doc(alias = "NOPRINT")] @@ -227,6 +187,8 @@ bitflags! { /// `PR_FPEMU_*` flags for use with [`floating_point_emulation_control`] /// and [`set_floating_point_emulation_control`]. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct FloatingPointEmulationControl: u32 { /// Silently emulate floating point operations accesses. #[doc(alias = "PR_UNALIGN_NOPRINT")] @@ -275,6 +237,8 @@ bitflags! { /// Zero means floating point exceptions are disabled. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct FloatingPointExceptionMode: u32 { /// Async non-recoverable exception mode. const NONRECOV = 1; @@ -986,6 +950,8 @@ bitflags! { /// `PR_SPEC_*` flags for use with [`control_speculative_feature`]. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct SpeculationFeatureControl: u32 { /// The speculation feature is enabled, mitigation is disabled. const ENABLE = 1_u32 << 1; @@ -1000,6 +966,8 @@ bitflags! { /// Zero means the processors are not vulnerable. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct SpeculationFeatureState: u32 { /// Mitigation can be controlled per thread by `PR_SET_SPECULATION_CTRL`. const PRCTL = 1_u32 << 0; @@ -1087,22 +1055,6 @@ const PR_PAC_GET_ENABLED_KEYS: c_int = 61; -bitflags! { - /// `PR_PAC_AP*`. - pub struct PointerAuthenticationKeys: u32 { - /// Instruction authentication key `A`. - const INSTRUCTION_AUTHENTICATION_KEY_A = 1_u32 << 0; - /// Instruction authentication key `B`. - const INSTRUCTION_AUTHENTICATION_KEY_B = 1_u32 << 1; - /// Data authentication key `A`. - const DATA_AUTHENTICATION_KEY_A = 1_u32 << 2; - /// Data authentication key `B`. - const DATA_AUTHENTICATION_KEY_B = 1_u32 << 3; - /// Generic authentication `A` key. - const GENERIC_AUTHENTICATION_KEY_A = 1_u32 << 4; - } -} - /// Get enabled pointer authentication keys. /// /// # References diff -Nru temporalio-1.3.0/vendor/rustix/src/process/priority.rs temporalio-1.3.0/vendor/rustix/src/process/priority.rs --- temporalio-1.3.0/vendor/rustix/src/process/priority.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/process/priority.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,4 @@ +#[cfg(not(target_os = "espidf"))] use crate::process::{Pid, Uid}; use crate::{backend, io}; @@ -25,6 +26,7 @@ /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpriority.html /// [Linux]: https://man7.org/linux/man-pages/man2/getpriority.2.html /// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setpriority.2.html +#[cfg(not(target_os = "espidf"))] #[inline] #[doc(alias = "getpriority")] pub fn getpriority_user(uid: Uid) -> io::Result { @@ -44,6 +46,7 @@ /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpriority.html /// [Linux]: https://man7.org/linux/man-pages/man2/getpriority.2.html /// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setpriority.2.html +#[cfg(not(target_os = "espidf"))] #[inline] #[doc(alias = "getpriority")] pub fn getpriority_pgrp(pgid: Option) -> io::Result { @@ -63,6 +66,7 @@ /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpriority.html /// [Linux]: https://man7.org/linux/man-pages/man2/getpriority.2.html /// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setpriority.2.html +#[cfg(not(target_os = "espidf"))] #[inline] #[doc(alias = "getpriority")] pub fn getpriority_process(pid: Option) -> io::Result { @@ -80,6 +84,7 @@ /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setpriority.html /// [Linux]: https://man7.org/linux/man-pages/man2/setpriority.2.html /// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setpriority.2.html +#[cfg(not(target_os = "espidf"))] #[inline] #[doc(alias = "setpriority")] pub fn setpriority_user(uid: Uid, priority: i32) -> io::Result<()> { @@ -99,6 +104,7 @@ /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setpriority.html /// [Linux]: https://man7.org/linux/man-pages/man2/setpriority.2.html /// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setpriority.2.html +#[cfg(not(target_os = "espidf"))] #[inline] #[doc(alias = "setpriority")] pub fn setpriority_pgrp(pgid: Option, priority: i32) -> io::Result<()> { @@ -118,6 +124,7 @@ /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setpriority.html /// [Linux]: https://man7.org/linux/man-pages/man2/setpriority.2.html /// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setpriority.2.html +#[cfg(not(target_os = "espidf"))] #[inline] #[doc(alias = "setpriority")] pub fn setpriority_process(pid: Option, priority: i32) -> io::Result<()> { diff -Nru temporalio-1.3.0/vendor/rustix/src/process/procctl.rs temporalio-1.3.0/vendor/rustix/src/process/procctl.rs --- temporalio-1.3.0/vendor/rustix/src/process/procctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/process/procctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -14,9 +14,10 @@ use crate::backend::c::{c_int, c_uint, c_void}; use crate::backend::process::syscalls; -use crate::backend::process::types::{RawId, Signal}; +use crate::backend::process::types::RawId; use crate::io; use crate::process::{Pid, RawPid}; +use crate::signal::Signal; use crate::utils::{as_mut_ptr, as_ptr}; // @@ -183,7 +184,7 @@ -1 => Ok(TracingStatus::NotTraceble), 0 => Ok(TracingStatus::Tracable), pid => { - let pid = unsafe { Pid::from_raw(pid as RawPid) }.ok_or(io::Errno::RANGE)?; + let pid = Pid::from_raw(pid as RawPid).ok_or(io::Errno::RANGE)?; Ok(TracingStatus::BeingTraced(pid)) } } @@ -221,6 +222,8 @@ bitflags! { /// `REAPER_STATUS_*`. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct ReaperStatusFlags: c_uint { /// The process has acquired reaper status. const OWNED = 1; @@ -252,7 +255,7 @@ /// The pid of the reaper for the specified process id. pub reaper: Pid, /// The pid of one reaper child if there are any descendants. - pub pid: Pid, + pub pid: Option, } /// Get information about the reaper of the specified process (or the process @@ -266,11 +269,15 @@ pub fn get_reaper_status(process: ProcSelector) -> io::Result { let raw = unsafe { procctl_get_optional::(PROC_REAP_STATUS, process) }?; Ok(ReaperStatus { - flags: ReaperStatusFlags::from_bits_truncate(raw.rs_flags), + flags: ReaperStatusFlags::from_bits_retain(raw.rs_flags), children: raw.rs_children as _, descendants: raw.rs_descendants as _, - reaper: unsafe { Pid::from_raw(raw.rs_reaper) }.ok_or(io::Errno::RANGE)?, - pid: unsafe { Pid::from_raw(raw.rs_pid) }.ok_or(io::Errno::RANGE)?, + reaper: Pid::from_raw(raw.rs_reaper).ok_or(io::Errno::RANGE)?, + pid: if raw.rs_pid == -1 { + None + } else { + Some(Pid::from_raw(raw.rs_pid).ok_or(io::Errno::RANGE)?) + }, }) } @@ -278,6 +285,8 @@ bitflags! { /// `REAPER_PIDINFO_*`. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct PidInfoFlags: c_uint { /// This structure was filled by the kernel. const VALID = 1; @@ -342,14 +351,14 @@ unsafe { procctl(PROC_REAP_GETPIDS, process, as_mut_ptr(&mut pinfo).cast())? }; let mut result = Vec::new(); for raw in pids.into_iter() { - let flags = PidInfoFlags::from_bits_truncate(raw.pi_flags); + let flags = PidInfoFlags::from_bits_retain(raw.pi_flags); if !flags.contains(PidInfoFlags::VALID) { break; } result.push(PidInfo { flags, - subtree: unsafe { Pid::from_raw(raw.pi_subtree) }.ok_or(io::Errno::RANGE)?, - pid: unsafe { Pid::from_raw(raw.pi_pid) }.ok_or(io::Errno::RANGE)?, + subtree: Pid::from_raw(raw.pi_subtree).ok_or(io::Errno::RANGE)?, + pid: Pid::from_raw(raw.pi_pid).ok_or(io::Errno::RANGE)?, }); } Ok(result) @@ -359,6 +368,8 @@ bitflags! { /// `REAPER_KILL_*`. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] struct KillFlags: c_uint { const CHILDREN = 1; const SUBTREE = 2; @@ -410,11 +421,7 @@ unsafe { procctl(PROC_REAP_KILL, process, as_mut_ptr(&mut req).cast())? }; Ok(KillResult { killed: req.rk_killed as _, - first_failed: if req.rk_fpid == -1 { - None - } else { - unsafe { Pid::from_raw(req.rk_fpid) } - }, + first_failed: Pid::from_raw(req.rk_fpid), }) } diff -Nru temporalio-1.3.0/vendor/rustix/src/process/system.rs temporalio-1.3.0/vendor/rustix/src/process/system.rs --- temporalio-1.3.0/vendor/rustix/src/process/system.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/process/system.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,137 +0,0 @@ -//! Uname and other system-level functions. -//! -//! # Safety -//! -//! This function converts from `struct utsname` fields provided from the -//! kernel into `&str` references, which assumes that they're NUL-terminated. -#![allow(unsafe_code)] - -use crate::backend; -use crate::ffi::CStr; -#[cfg(not(target_os = "emscripten"))] -use crate::io; -use core::fmt; - -#[cfg(linux_kernel)] -pub use backend::process::types::Sysinfo; - -/// `uname()`—Returns high-level information about the runtime OS and -/// hardware. -/// -/// # References -/// - [POSIX] -/// - [Linux] -/// -/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/uname.html -/// [Linux]: https://man7.org/linux/man-pages/man2/uname.2.html -#[inline] -pub fn uname() -> Uname { - Uname(backend::process::syscalls::uname()) -} - -/// `struct utsname`—Return type for [`uname`]. -#[doc(alias = "utsname")] -pub struct Uname(backend::process::types::RawUname); - -impl Uname { - /// `sysname`—Operating system release name - #[inline] - pub fn sysname(&self) -> &CStr { - Self::to_cstr(self.0.sysname.as_ptr().cast()) - } - - /// `nodename`—Name with vague meaning - /// - /// This is intended to be a network name, however it's unable to convey - /// information about hosts that have multiple names, or any information - /// about where the names are visible. - #[inline] - pub fn nodename(&self) -> &CStr { - Self::to_cstr(self.0.nodename.as_ptr().cast()) - } - - /// `release`—Operating system release version string - #[inline] - pub fn release(&self) -> &CStr { - Self::to_cstr(self.0.release.as_ptr().cast()) - } - - /// `version`—Operating system build identifiers - #[inline] - pub fn version(&self) -> &CStr { - Self::to_cstr(self.0.version.as_ptr().cast()) - } - - /// `machine`—Hardware architecture identifier - #[inline] - pub fn machine(&self) -> &CStr { - Self::to_cstr(self.0.machine.as_ptr().cast()) - } - - /// `domainname`—NIS or YP domain identifier - #[cfg(linux_kernel)] - #[inline] - pub fn domainname(&self) -> &CStr { - Self::to_cstr(self.0.domainname.as_ptr().cast()) - } - - #[inline] - fn to_cstr<'a>(ptr: *const u8) -> &'a CStr { - // SAFETY: Strings returned from the kernel are always NUL-terminated. - unsafe { CStr::from_ptr(ptr.cast()) } - } -} - -impl fmt::Debug for Uname { - fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { - #[cfg(not(linux_kernel))] - { - write!( - fmt, - "{} {} {} {} {}", - self.sysname().to_string_lossy(), - self.nodename().to_string_lossy(), - self.release().to_string_lossy(), - self.version().to_string_lossy(), - self.machine().to_string_lossy(), - ) - } - #[cfg(linux_kernel)] - { - write!( - fmt, - "{} {} {} {} {} {}", - self.sysname().to_string_lossy(), - self.nodename().to_string_lossy(), - self.release().to_string_lossy(), - self.version().to_string_lossy(), - self.machine().to_string_lossy(), - self.domainname().to_string_lossy(), - ) - } - } -} - -/// `sysinfo()`—Returns status information about the runtime OS. -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man2/uname.2.html -#[cfg(linux_kernel)] -#[inline] -pub fn sysinfo() -> Sysinfo { - backend::process::syscalls::sysinfo() -} - -/// `sethostname(name)`—Sets the system host name. -/// -/// # References -/// - [Linux] -/// -/// [Linux]: https://man7.org/linux/man-pages/man2/sethostname.2.html -#[cfg(not(any(target_os = "emscripten", target_os = "redox", target_os = "wasi")))] -#[inline] -pub fn sethostname(name: &[u8]) -> io::Result<()> { - backend::process::syscalls::sethostname(name) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/process/wait.rs temporalio-1.3.0/vendor/rustix/src/process/wait.rs --- temporalio-1.3.0/vendor/rustix/src/process/wait.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/process/wait.rs 2023-10-30 19:40:00.000000000 +0000 @@ -10,34 +10,38 @@ bitflags! { /// Options for modifying the behavior of wait/waitpid + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct WaitOptions: u32 { /// Return immediately if no child has exited. - const NOHANG = backend::process::wait::WNOHANG as _; + const NOHANG = bitcast!(backend::process::wait::WNOHANG); /// Return if a child has stopped (but not traced via [`ptrace`]) /// /// [`ptrace`]: https://man7.org/linux/man-pages/man2/ptrace.2.html - const UNTRACED = backend::process::wait::WUNTRACED as _; + const UNTRACED = bitcast!(backend::process::wait::WUNTRACED); /// Return if a stopped child has been resumed by delivery of /// [`Signal::Cont`]. - const CONTINUED = backend::process::wait::WCONTINUED as _; + const CONTINUED = bitcast!(backend::process::wait::WCONTINUED); } } -#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))] +#[cfg(not(any(target_os = "openbsd", target_os = "redox", target_os = "wasi")))] bitflags! { /// Options for modifying the behavior of waitid + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct WaitidOptions: u32 { /// Return immediately if no child has exited. - const NOHANG = backend::process::wait::WNOHANG as _; + const NOHANG = bitcast!(backend::process::wait::WNOHANG); /// Return if a stopped child has been resumed by delivery of /// [`Signal::Cont`] - const CONTINUED = backend::process::wait::WCONTINUED as _; + const CONTINUED = bitcast!(backend::process::wait::WCONTINUED); /// Wait for processed that have exited. - const EXITED = backend::process::wait::WEXITED as _; + const EXITED = bitcast!(backend::process::wait::WEXITED); /// Keep processed in a waitable state. - const NOWAIT = backend::process::wait::WNOWAIT as _; + const NOWAIT = bitcast!(backend::process::wait::WNOWAIT); /// Wait for processes that have been stopped. - const STOPPED = backend::process::wait::WSTOPPED as _; + const STOPPED = bitcast!(backend::process::wait::WSTOPPED); } } @@ -120,10 +124,10 @@ /// The status of a process after calling [`waitid`]. #[derive(Clone, Copy)] #[repr(transparent)] -#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))] +#[cfg(not(any(target_os = "openbsd", target_os = "redox", target_os = "wasi")))] pub struct WaitidStatus(pub(crate) backend::c::siginfo_t); -#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))] +#[cfg(not(any(target_os = "openbsd", target_os = "redox", target_os = "wasi")))] impl WaitidStatus { /// Returns whether the process is currently stopped. #[inline] @@ -239,7 +243,7 @@ } /// The identifier to wait on in a call to [`waitid`]. -#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))] +#[cfg(not(any(target_os = "openbsd", target_os = "redox", target_os = "wasi")))] #[derive(Debug, Clone)] #[non_exhaustive] pub enum WaitId<'a> { @@ -313,7 +317,7 @@ /// `waitid(_, _, _, opts)`—Wait for the specified child process to change /// state. -#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))] +#[cfg(not(any(target_os = "openbsd", target_os = "redox", target_os = "wasi")))] #[inline] pub fn waitid<'a>( id: impl Into>, diff -Nru temporalio-1.3.0/vendor/rustix/src/procfs.rs temporalio-1.3.0/vendor/rustix/src/procfs.rs --- temporalio-1.3.0/vendor/rustix/src/procfs.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/procfs.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,468 @@ +//! Utilities for working with `/proc`, where Linux's `procfs` is typically +//! mounted. +//! +//! `/proc` serves as an adjunct to Linux's main syscall surface area, +//! providing additional features with an awkward interface. +//! +//! This module does a considerable amount of work to determine whether `/proc` +//! is mounted, with actual `procfs`, and without any additional mount points +//! on top of the paths we open. +//! +//! Why all the effort to detect bind mount points? People are doing all kinds +//! of things with Linux containers these days, with many different privilege +//! schemes, and we want to avoid making any unnecessary assumptions. Rustix +//! and its users will sometimes use procfs *implicitly* (when Linux gives them +//! no better options), in ways that aren't obvious from their public APIs. +//! These filesystem accesses might not be visible to someone auditing the main +//! code of an application for places which may be influenced by the filesystem +//! namespace. So with the checking here, they may fail, but they won't be able +//! to succeed with bogus results. + +use crate::backend::pid::syscalls::getpid; +use crate::fd::{AsFd, BorrowedFd, OwnedFd}; +use crate::ffi::CStr; +use crate::fs::{ + fstat, fstatfs, major, openat, renameat, Dir, FileType, Mode, OFlags, Stat, CWD, + PROC_SUPER_MAGIC, +}; +use crate::io; +use crate::path::DecInt; +#[cfg(feature = "rustc-dep-of-std")] +use core::lazy::OnceCell; +#[cfg(not(feature = "rustc-dep-of-std"))] +use once_cell::sync::OnceCell; + +/// Linux's procfs always uses inode 1 for its root directory. +const PROC_ROOT_INO: u64 = 1; + +// Identify an entry within "/proc", to determine which anomalies to check for. +#[derive(Copy, Clone, Debug)] +enum Kind { + Proc, + Pid, + Fd, + File, +} + +/// Check a subdirectory of "/proc" for anomalies. +fn check_proc_entry( + kind: Kind, + entry: BorrowedFd<'_>, + proc_stat: Option<&Stat>, +) -> io::Result { + let entry_stat = fstat(entry)?; + check_proc_entry_with_stat(kind, entry, entry_stat, proc_stat) +} + +/// Check a subdirectory of "/proc" for anomalies, using the provided `Stat`. +fn check_proc_entry_with_stat( + kind: Kind, + entry: BorrowedFd<'_>, + entry_stat: Stat, + proc_stat: Option<&Stat>, +) -> io::Result { + // Check the filesystem magic. + check_procfs(entry)?; + + match kind { + Kind::Proc => check_proc_root(entry, &entry_stat)?, + Kind::Pid | Kind::Fd => check_proc_subdir(entry, &entry_stat, proc_stat)?, + Kind::File => check_proc_file(&entry_stat, proc_stat)?, + } + + // "/proc" directories are typically mounted r-xr-xr-x. + // "/proc/self/fd" is r-x------. Allow them to have fewer permissions, but + // not more. + let expected_mode = if let Kind::Fd = kind { 0o500 } else { 0o555 }; + if entry_stat.st_mode & 0o777 & !expected_mode != 0 { + return Err(io::Errno::NOTSUP); + } + + match kind { + Kind::Fd => { + // Check that the "/proc/self/fd" directory doesn't have any + // extraneous links into it (which might include unexpected + // subdirectories). + if entry_stat.st_nlink != 2 { + return Err(io::Errno::NOTSUP); + } + } + Kind::Pid | Kind::Proc => { + // Check that the "/proc" and "/proc/self" directories aren't + // empty. + if entry_stat.st_nlink <= 2 { + return Err(io::Errno::NOTSUP); + } + } + Kind::File => { + // Check that files in procfs don't have extraneous hard links to + // them (which might indicate hard links to other things). + if entry_stat.st_nlink != 1 { + return Err(io::Errno::NOTSUP); + } + } + } + + Ok(entry_stat) +} + +fn check_proc_root(entry: BorrowedFd<'_>, stat: &Stat) -> io::Result<()> { + // We use `O_DIRECTORY` for proc directories, so open should fail if we + // don't get a directory when we expect one. + assert_eq!(FileType::from_raw_mode(stat.st_mode), FileType::Directory); + + // Check the root inode number. + if stat.st_ino != PROC_ROOT_INO { + return Err(io::Errno::NOTSUP); + } + + // Proc is a non-device filesystem, so check for major number 0. + // + if major(stat.st_dev) != 0 { + return Err(io::Errno::NOTSUP); + } + + // Check that "/proc" is a mountpoint. + if !is_mountpoint(entry) { + return Err(io::Errno::NOTSUP); + } + + Ok(()) +} + +fn check_proc_subdir( + entry: BorrowedFd<'_>, + stat: &Stat, + proc_stat: Option<&Stat>, +) -> io::Result<()> { + // We use `O_DIRECTORY` for proc directories, so open should fail if we + // don't get a directory when we expect one. + assert_eq!(FileType::from_raw_mode(stat.st_mode), FileType::Directory); + + check_proc_nonroot(stat, proc_stat)?; + + // Check that subdirectories of "/proc" are not mount points. + if is_mountpoint(entry) { + return Err(io::Errno::NOTSUP); + } + + Ok(()) +} + +fn check_proc_file(stat: &Stat, proc_stat: Option<&Stat>) -> io::Result<()> { + // Check that we have a regular file. + if FileType::from_raw_mode(stat.st_mode) != FileType::RegularFile { + return Err(io::Errno::NOTSUP); + } + + check_proc_nonroot(stat, proc_stat)?; + + Ok(()) +} + +fn check_proc_nonroot(stat: &Stat, proc_stat: Option<&Stat>) -> io::Result<()> { + // Check that we haven't been linked back to the root of "/proc". + if stat.st_ino == PROC_ROOT_INO { + return Err(io::Errno::NOTSUP); + } + + // Check that we're still in procfs. + if stat.st_dev != proc_stat.unwrap().st_dev { + return Err(io::Errno::NOTSUP); + } + + Ok(()) +} + +/// Check that `file` is opened on a `procfs` filesystem. +fn check_procfs(file: BorrowedFd<'_>) -> io::Result<()> { + let statfs = fstatfs(file)?; + let f_type = statfs.f_type; + if f_type != PROC_SUPER_MAGIC.into() { + return Err(io::Errno::NOTSUP); + } + + Ok(()) +} + +/// Check whether the given directory handle is a mount point. +fn is_mountpoint(file: BorrowedFd<'_>) -> bool { + // We use a `renameat` call that would otherwise fail, but which fails with + // `XDEV` first if it would cross a mount point. + let err = renameat(file, cstr!("../."), file, cstr!(".")).unwrap_err(); + match err { + io::Errno::XDEV => true, // the rename failed due to crossing a mount point + io::Errno::BUSY => false, // the rename failed normally + _ => panic!("Unexpected error from `renameat`: {:?}", err), + } +} + +/// Open a directory in `/proc`, mapping all errors to `io::Errno::NOTSUP`. +fn proc_opendirat(dirfd: Fd, path: P) -> io::Result { + // We could add `PATH`|`NOATIME` here but Linux 2.6.32 doesn't support it. + // Also for `NOATIME` see the comment in `open_and_check_file`. + let oflags = OFlags::NOFOLLOW | OFlags::DIRECTORY | OFlags::CLOEXEC | OFlags::NOCTTY; + openat(dirfd, path, oflags, Mode::empty()).map_err(|_err| io::Errno::NOTSUP) +} + +/// Returns a handle to Linux's `/proc` directory. +/// +/// This ensures that `/proc` is procfs, that nothing is mounted on top of it, +/// and that it looks normal. It also returns the `Stat` of `/proc`. +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html +fn proc() -> io::Result<(BorrowedFd<'static>, &'static Stat)> { + static PROC: StaticFd = StaticFd::new(); + + // `OnceBox` is "racey" in that the initialization function may run + // multiple times. We're ok with that, since the initialization function + // has no side effects. + PROC.get_or_try_init(|| { + // Open "/proc". + let proc = proc_opendirat(CWD, cstr!("/proc"))?; + let proc_stat = + check_proc_entry(Kind::Proc, proc.as_fd(), None).map_err(|_err| io::Errno::NOTSUP)?; + + Ok(new_static_fd(proc, proc_stat)) + }) + .map(|(fd, stat)| (fd.as_fd(), stat)) +} + +/// Returns a handle to Linux's `/proc/self` directory. +/// +/// This ensures that `/proc/self` is procfs, that nothing is mounted on top of +/// it, and that it looks normal. It also returns the `Stat` of `/proc/self`. +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html +fn proc_self() -> io::Result<(BorrowedFd<'static>, &'static Stat)> { + static PROC_SELF: StaticFd = StaticFd::new(); + + // The init function here may run multiple times; see above. + PROC_SELF + .get_or_try_init(|| { + let (proc, proc_stat) = proc()?; + + let pid = getpid(); + + // Open "/proc/self". Use our pid to compute the name rather than + // literally using "self", as "self" is a symlink. + let proc_self = proc_opendirat(proc, DecInt::new(pid.as_raw_nonzero().get()))?; + let proc_self_stat = check_proc_entry(Kind::Pid, proc_self.as_fd(), Some(proc_stat)) + .map_err(|_err| io::Errno::NOTSUP)?; + + Ok(new_static_fd(proc_self, proc_self_stat)) + }) + .map(|(owned, stat)| (owned.as_fd(), stat)) +} + +/// Returns a handle to Linux's `/proc/self/fd` directory. +/// +/// This ensures that `/proc/self/fd` is `procfs`, that nothing is mounted on +/// top of it, and that it looks normal. +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html +#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))] +pub fn proc_self_fd() -> io::Result> { + static PROC_SELF_FD: StaticFd = StaticFd::new(); + + // The init function here may run multiple times; see above. + PROC_SELF_FD + .get_or_try_init(|| { + let (_, proc_stat) = proc()?; + + let (proc_self, _proc_self_stat) = proc_self()?; + + // Open "/proc/self/fd". + let proc_self_fd = proc_opendirat(proc_self, cstr!("fd"))?; + let proc_self_fd_stat = + check_proc_entry(Kind::Fd, proc_self_fd.as_fd(), Some(proc_stat)) + .map_err(|_err| io::Errno::NOTSUP)?; + + Ok(new_static_fd(proc_self_fd, proc_self_fd_stat)) + }) + .map(|(owned, _stat)| owned.as_fd()) +} + +type StaticFd = OnceCell<(OwnedFd, Stat)>; + +#[inline] +fn new_static_fd(fd: OwnedFd, stat: Stat) -> (OwnedFd, Stat) { + (fd, stat) +} + +/// Returns a handle to Linux's `/proc/self/fdinfo` directory. +/// +/// This ensures that `/proc/self/fdinfo` is `procfs`, that nothing is mounted +/// on top of it, and that it looks normal. It also returns the `Stat` of +/// `/proc/self/fd`. +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html +fn proc_self_fdinfo() -> io::Result<(BorrowedFd<'static>, &'static Stat)> { + static PROC_SELF_FDINFO: StaticFd = StaticFd::new(); + + PROC_SELF_FDINFO + .get_or_try_init(|| { + let (_, proc_stat) = proc()?; + + let (proc_self, _proc_self_stat) = proc_self()?; + + // Open "/proc/self/fdinfo". + let proc_self_fdinfo = proc_opendirat(proc_self, cstr!("fdinfo"))?; + let proc_self_fdinfo_stat = + check_proc_entry(Kind::Fd, proc_self_fdinfo.as_fd(), Some(proc_stat)) + .map_err(|_err| io::Errno::NOTSUP)?; + + Ok((proc_self_fdinfo, proc_self_fdinfo_stat)) + }) + .map(|(owned, stat)| (owned.as_fd(), stat)) +} + +/// Returns a handle to a Linux `/proc/self/fdinfo/` file. +/// +/// This ensures that `/proc/self/fdinfo/` is `procfs`, that nothing is +/// mounted on top of it, and that it looks normal. +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html +#[inline] +#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))] +pub fn proc_self_fdinfo_fd(fd: Fd) -> io::Result { + _proc_self_fdinfo(fd.as_fd()) +} + +fn _proc_self_fdinfo(fd: BorrowedFd<'_>) -> io::Result { + let (proc_self_fdinfo, proc_self_fdinfo_stat) = proc_self_fdinfo()?; + let fd_str = DecInt::from_fd(fd); + open_and_check_file(proc_self_fdinfo, proc_self_fdinfo_stat, fd_str.as_c_str()) +} + +/// Returns a handle to a Linux `/proc/self/pagemap` file. +/// +/// This ensures that `/proc/self/pagemap` is `procfs`, that nothing is +/// mounted on top of it, and that it looks normal. +/// +/// # References +/// - [Linux] +/// - [Linux pagemap] +/// +/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html +/// [Linux pagemap]: https://www.kernel.org/doc/Documentation/vm/pagemap.txt +#[inline] +#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))] +pub fn proc_self_pagemap() -> io::Result { + proc_self_file(cstr!("pagemap")) +} + +/// Returns a handle to a Linux `/proc/self/maps` file. +/// +/// This ensures that `/proc/self/maps` is `procfs`, that nothing is +/// mounted on top of it, and that it looks normal. +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html +#[inline] +#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))] +pub fn proc_self_maps() -> io::Result { + proc_self_file(cstr!("maps")) +} + +/// Returns a handle to a Linux `/proc/self/status` file. +/// +/// This ensures that `/proc/self/status` is `procfs`, that nothing is +/// mounted on top of it, and that it looks normal. +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html +#[inline] +#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))] +pub fn proc_self_status() -> io::Result { + proc_self_file(cstr!("status")) +} + +/// Open a file under `/proc/self`. +fn proc_self_file(name: &CStr) -> io::Result { + let (proc_self, proc_self_stat) = proc_self()?; + open_and_check_file(proc_self, proc_self_stat, name) +} + +/// Open a procfs file within in `dir` and check it for bind mounts. +fn open_and_check_file(dir: BorrowedFd, dir_stat: &Stat, name: &CStr) -> io::Result { + let (_, proc_stat) = proc()?; + + // Don't use `NOATIME`, because it [requires us to own the file], and when + // a process sets itself non-dumpable Linux changes the user:group of its + // `/proc/` files [to root:root]. + // + // [requires us to own the file]: https://man7.org/linux/man-pages/man2/openat.2.html + // [to root:root]: https://man7.org/linux/man-pages/man5/proc.5.html + let oflags = OFlags::RDONLY | OFlags::CLOEXEC | OFlags::NOFOLLOW | OFlags::NOCTTY; + let file = openat(dir, name, oflags, Mode::empty()).map_err(|_err| io::Errno::NOTSUP)?; + let file_stat = fstat(&file)?; + + // `is_mountpoint` only works on directory mount points, not file mount + // points. To detect file mount points, scan the parent directory to see if + // we can find a regular file with an inode and name that matches the file + // we just opened. If we can't find it, there could be a file bind mount on + // top of the file we want. + // + // As we scan, we also check for ".", to make sure it's the same directory + // as our original directory, to detect mount points, since + // `Dir::read_from` reopens ".". + // + // TODO: With Linux 5.8 we might be able to use `statx` and + // `STATX_ATTR_MOUNT_ROOT` to detect mountpoints directly instead of doing + // this scanning. + let dir = Dir::read_from(dir).map_err(|_err| io::Errno::NOTSUP)?; + + // Confirm that we got the same inode. + let dot_stat = dir.stat().map_err(|_err| io::Errno::NOTSUP)?; + if (dot_stat.st_dev, dot_stat.st_ino) != (dir_stat.st_dev, dir_stat.st_ino) { + return Err(io::Errno::NOTSUP); + } + + let mut found_file = false; + let mut found_dot = false; + for entry in dir { + let entry = entry.map_err(|_err| io::Errno::NOTSUP)?; + if entry.ino() == file_stat.st_ino + && entry.file_type() == FileType::RegularFile + && entry.file_name() == name + { + // We found the file. Proceed to check the file handle. + let _ = + check_proc_entry_with_stat(Kind::File, file.as_fd(), file_stat, Some(proc_stat))?; + + found_file = true; + } else if entry.ino() == dir_stat.st_ino + && entry.file_type() == FileType::Directory + && entry.file_name() == cstr!(".") + { + // We found ".", and it's the right ".". + found_dot = true; + } + } + + if found_file && found_dot { + Ok(file) + } else { + Err(io::Errno::NOTSUP) + } +} diff -Nru temporalio-1.3.0/vendor/rustix/src/pty.rs temporalio-1.3.0/vendor/rustix/src/pty.rs --- temporalio-1.3.0/vendor/rustix/src/pty.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/pty.rs 2023-10-30 19:40:00.000000000 +0000 @@ -16,12 +16,14 @@ /// `O_*` flags for use with [`openpt`] and [`ioctl_tiocgptpeer`]. /// /// [`ioctl_tiocgtpeer`]: https://docs.rs/rustix/*/x86_64-unknown-linux-gnu/rustix/pty/fn.ioctl_tiocgtpeer.html + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct OpenptFlags: u32 { /// `O_RDWR` const RDWR = c::O_RDWR as c::c_uint; /// `O_NOCTTY` - #[cfg(not(target_os = "redox"))] + #[cfg(not(any(target_os = "espidf", target_os = "l4re", target_os = "redox")))] const NOCTTY = c::O_NOCTTY as c::c_uint; /// `O_CLOEXEC` @@ -36,11 +38,8 @@ impl From for OFlags { #[inline] fn from(flags: OpenptFlags) -> Self { - // SAFETY: `OpenptFlags` is a subset of `OFlags`. - #[allow(unsafe_code)] - unsafe { - Self::from_bits_unchecked(flags.bits() as _) - } + // `OpenptFlags` is a subset of `OFlags`. + Self::from_bits_retain(flags.bits() as _) } } @@ -78,8 +77,8 @@ // On Linux, open the device ourselves so that we can support `CLOEXEC`. #[cfg(linux_kernel)] { - use crate::fs::{cwd, openat, Mode}; - match openat(cwd(), cstr!("/dev/ptmx"), flags.into(), Mode::empty()) { + use crate::fs::{open, Mode}; + match open(cstr!("/dev/ptmx"), flags.into(), Mode::empty()) { // Match libc `openat` behavior with `ENOSPC`. Err(io::Errno::NOSPC) => Err(io::Errno::AGAIN), otherwise => otherwise, diff -Nru temporalio-1.3.0/vendor/rustix/src/rand/getrandom.rs temporalio-1.3.0/vendor/rustix/src/rand/getrandom.rs --- temporalio-1.3.0/vendor/rustix/src/rand/getrandom.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/rand/getrandom.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ use crate::{backend, io}; -/// `GRND_*` constants for use with `getrandom`. +/// `GRND_*` constants for use with [`getrandom`]. pub use backend::rand::types::GetRandomFlags; /// `getrandom(buf, flags)`—Reads a sequence of random bytes. diff -Nru temporalio-1.3.0/vendor/rustix/src/runtime.rs temporalio-1.3.0/vendor/rustix/src/runtime.rs --- temporalio-1.3.0/vendor/rustix/src/runtime.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/runtime.rs 2023-10-30 19:40:00.000000000 +0000 @@ -32,7 +32,9 @@ #[cfg(linux_raw)] use crate::io; #[cfg(linux_raw)] -use crate::process::{Pid, Signal}; +use crate::pid::Pid; +#[cfg(linux_raw)] +use crate::signal::Signal; #[cfg(linux_raw)] #[cfg(feature = "fs")] use backend::fd::AsFd; @@ -55,7 +57,7 @@ #[cfg(linux_raw)] pub type Siginfo = linux_raw_sys::general::siginfo_t; -pub use backend::time::types::{Nsecs, Secs, Timespec}; +pub use crate::timespec::{Nsecs, Secs, Timespec}; /// `SIG_*` constants for use with [`sigprocmask`]. #[cfg(linux_raw)] @@ -71,14 +73,12 @@ SETMASK = linux_raw_sys::general::SIG_SETMASK, } -#[cfg(linux_raw)] #[cfg(target_arch = "x86")] #[inline] pub unsafe fn set_thread_area(u_info: &mut UserDesc) -> io::Result<()> { backend::runtime::syscalls::tls::set_thread_area(u_info) } -#[cfg(linux_raw)] #[cfg(target_arch = "arm")] #[inline] pub unsafe fn arm_set_tls(data: *mut c_void) -> io::Result<()> { @@ -91,7 +91,6 @@ /// /// This is a very low-level feature for implementing threading libraries. /// See the references links above. -#[cfg(linux_raw)] #[cfg(target_arch = "x86_64")] #[inline] pub unsafe fn set_fs(data: *mut c_void) { @@ -104,7 +103,6 @@ /// /// This is a very low-level feature for implementing threading libraries. /// See the references links above. -#[cfg(linux_raw)] #[inline] pub unsafe fn set_tid_address(data: *mut c_void) -> Pid { backend::runtime::syscalls::tls::set_tid_address(data) @@ -121,7 +119,6 @@ /// See the references links above. /// /// [Linux]: https://man7.org/linux/man-pages/man2/prctl.2.html -#[cfg(linux_raw)] #[inline] pub unsafe fn set_thread_name(name: &CStr) -> io::Result<()> { backend::runtime::syscalls::tls::set_thread_name(name) @@ -136,7 +133,6 @@ /// # Safety /// /// This is a very low-level feature for implementing threading libraries. -#[cfg(linux_raw)] #[inline] pub unsafe fn exit_thread(status: i32) -> ! { backend::runtime::syscalls::tls::exit_thread(status) @@ -162,12 +158,11 @@ #[doc(alias = "_Exit")] #[inline] pub fn exit_group(status: i32) -> ! { - backend::process::syscalls::exit_group(status) + backend::runtime::syscalls::exit_group(status) } /// Return fields from the main executable segment headers ("phdrs") relevant /// to initializing TLS provided to the program at startup. -#[cfg(linux_raw)] #[inline] pub fn startup_tls_info() -> StartupTlsInfo { backend::runtime::tls::startup_tls_info() @@ -180,8 +175,6 @@ /// - [Linux] /// /// [Linux]: https://man7.org/linux/man-pages/man3/getauxval.3.html -#[cfg(linux_raw)] -#[cfg(linux_kernel)] #[inline] pub fn exe_phdrs() -> (*const c_void, usize) { backend::param::auxv::exe_phdrs() @@ -267,7 +260,6 @@ /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fork.html /// [Linux]: https://man7.org/linux/man-pages/man2/fork.2.html /// [async-signal-safe]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_04_03 -#[cfg(linux_raw)] pub unsafe fn fork() -> io::Result> { backend::runtime::syscalls::fork() } @@ -284,7 +276,6 @@ /// - [Linux] /// /// [Linux]: https://man7.org/linux/man-pages/man2/execveat.2.html -#[cfg(linux_raw)] #[inline] #[cfg(feature = "fs")] #[cfg_attr(doc_cfg, doc(cfg(feature = "fs")))] @@ -310,7 +301,6 @@ /// - [Linux] /// /// [Linux]: https://man7.org/linux/man-pages/man2/execve.2.html -#[cfg(linux_raw)] #[inline] pub unsafe fn execve(path: &CStr, argv: *const *const u8, envp: *const *const u8) -> io::Errno { backend::runtime::syscalls::execve(path, argv, envp) @@ -330,7 +320,6 @@ /// /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigaction.html /// [Linux]: https://man7.org/linux/man-pages/man2/sigaction.2.html -#[cfg(linux_raw)] #[inline] pub unsafe fn sigaction(signal: Signal, new: Option) -> io::Result { backend::runtime::syscalls::sigaction(signal, new) @@ -349,7 +338,6 @@ /// /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigaltstack.html /// [Linux]: https://man7.org/linux/man-pages/man2/sigaltstack.2.html -#[cfg(linux_raw)] #[inline] pub unsafe fn sigaltstack(new: Option) -> io::Result { backend::runtime::syscalls::sigaltstack(new) @@ -367,7 +355,6 @@ /// - [Linux] /// /// [Linux]: https://man7.org/linux/man-pages/man2/tkill.2.html -#[cfg(linux_raw)] #[inline] pub unsafe fn tkill(tid: Pid, sig: Signal) -> io::Result<()> { backend::runtime::syscalls::tkill(tid, sig) @@ -387,7 +374,6 @@ /// /// [Linux `sigprocmask`]: https://man7.org/linux/man-pages/man2/sigprocmask.2.html /// [Linux `pthread_sigmask`]: https://man7.org/linux/man-pages/man3/pthread_sigmask.3.html -#[cfg(linux_raw)] #[inline] #[doc(alias = "pthread_sigmask")] pub unsafe fn sigprocmask(how: How, set: Option<&Sigset>) -> io::Result { @@ -406,7 +392,6 @@ /// - [Linux] /// /// [Linux]: https://man7.org/linux/man-pages/man3/sigwait.3.html -#[cfg(linux_raw)] #[inline] pub unsafe fn sigwait(set: &Sigset) -> io::Result { backend::runtime::syscalls::sigwait(set) @@ -424,7 +409,6 @@ /// - [Linux] /// /// [Linux]: https://man7.org/linux/man-pages/man2/sigwaitinfo.2.html -#[cfg(linux_raw)] #[inline] pub unsafe fn sigwaitinfo(set: &Sigset) -> io::Result { backend::runtime::syscalls::sigwaitinfo(set) @@ -442,7 +426,6 @@ /// - [Linux] /// /// [Linux]: https://man7.org/linux/man-pages/man2/sigtimedwait.2.html -#[cfg(linux_raw)] #[inline] pub unsafe fn sigtimedwait(set: &Sigset, timeout: Option) -> io::Result { backend::runtime::syscalls::sigtimedwait(set, timeout) diff -Nru temporalio-1.3.0/vendor/rustix/src/signal.rs temporalio-1.3.0/vendor/rustix/src/signal.rs --- temporalio-1.3.0/vendor/rustix/src/signal.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/signal.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,220 @@ +use crate::backend::c; + +/// A signal number for use with [`kill_process`], [`kill_process_group`], +/// and [`kill_current_process_group`]. +/// +/// [`kill_process`]: crate::process::kill_process +/// [`kill_process_group`]: crate::process::kill_process_group +/// [`kill_current_process_group`]: crate::process::kill_current_process_group +#[derive(Copy, Clone, Debug, Eq, PartialEq)] +#[repr(i32)] +pub enum Signal { + /// `SIGHUP` + Hup = c::SIGHUP, + /// `SIGINT` + Int = c::SIGINT, + /// `SIGQUIT` + Quit = c::SIGQUIT, + /// `SIGILL` + Ill = c::SIGILL, + /// `SIGTRAP` + Trap = c::SIGTRAP, + /// `SIGABRT`, aka `SIGIOT` + #[doc(alias = "Iot")] + #[doc(alias = "Abrt")] + Abort = c::SIGABRT, + /// `SIGBUS` + Bus = c::SIGBUS, + /// `SIGFPE` + Fpe = c::SIGFPE, + /// `SIGKILL` + Kill = c::SIGKILL, + /// `SIGUSR1` + Usr1 = c::SIGUSR1, + /// `SIGSEGV` + Segv = c::SIGSEGV, + /// `SIGUSR2` + Usr2 = c::SIGUSR2, + /// `SIGPIPE` + Pipe = c::SIGPIPE, + /// `SIGALRM` + #[doc(alias = "Alrm")] + Alarm = c::SIGALRM, + /// `SIGTERM` + Term = c::SIGTERM, + /// `SIGSTKFLT` + #[cfg(not(any( + bsd, + solarish, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + all( + linux_kernel, + any( + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6", + target_arch = "sparc", + target_arch = "sparc64" + ), + ) + )))] + Stkflt = c::SIGSTKFLT, + /// `SIGCHLD` + #[doc(alias = "Chld")] + Child = c::SIGCHLD, + /// `SIGCONT` + Cont = c::SIGCONT, + /// `SIGSTOP` + Stop = c::SIGSTOP, + /// `SIGTSTP` + Tstp = c::SIGTSTP, + /// `SIGTTIN` + Ttin = c::SIGTTIN, + /// `SIGTTOU` + Ttou = c::SIGTTOU, + /// `SIGURG` + Urg = c::SIGURG, + /// `SIGXCPU` + Xcpu = c::SIGXCPU, + /// `SIGXFSZ` + Xfsz = c::SIGXFSZ, + /// `SIGVTALRM` + #[doc(alias = "Vtalrm")] + Vtalarm = c::SIGVTALRM, + /// `SIGPROF` + Prof = c::SIGPROF, + /// `SIGWINCH` + Winch = c::SIGWINCH, + /// `SIGIO`, aka `SIGPOLL` + #[doc(alias = "Poll")] + #[cfg(not(target_os = "haiku"))] + Io = c::SIGIO, + /// `SIGPWR` + #[cfg(not(any(bsd, target_os = "haiku")))] + #[doc(alias = "Pwr")] + Power = c::SIGPWR, + /// `SIGSYS`, aka `SIGUNUSED` + #[doc(alias = "Unused")] + Sys = c::SIGSYS, + /// `SIGEMT` + #[cfg(any( + bsd, + solarish, + target_os = "aix", + target_os = "hermit", + all( + linux_kernel, + any( + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6", + target_arch = "sparc", + target_arch = "sparc64" + ) + ) + ))] + Emt = c::SIGEMT, + /// `SIGINFO` + #[cfg(bsd)] + Info = c::SIGINFO, + /// `SIGTHR` + #[cfg(target_os = "freebsd")] + #[doc(alias = "Lwp")] + Thr = c::SIGTHR, + /// `SIGLIBRT` + #[cfg(target_os = "freebsd")] + Librt = c::SIGLIBRT, +} + +impl Signal { + /// Convert a raw signal number into a `Signal`, if possible. + pub fn from_raw(sig: c::c_int) -> Option { + match sig { + c::SIGHUP => Some(Self::Hup), + c::SIGINT => Some(Self::Int), + c::SIGQUIT => Some(Self::Quit), + c::SIGILL => Some(Self::Ill), + c::SIGTRAP => Some(Self::Trap), + c::SIGABRT => Some(Self::Abort), + c::SIGBUS => Some(Self::Bus), + c::SIGFPE => Some(Self::Fpe), + c::SIGKILL => Some(Self::Kill), + c::SIGUSR1 => Some(Self::Usr1), + c::SIGSEGV => Some(Self::Segv), + c::SIGUSR2 => Some(Self::Usr2), + c::SIGPIPE => Some(Self::Pipe), + c::SIGALRM => Some(Self::Alarm), + c::SIGTERM => Some(Self::Term), + #[cfg(not(any( + bsd, + solarish, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + all( + linux_kernel, + any( + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6", + target_arch = "sparc", + target_arch = "sparc64" + ), + ) + )))] + c::SIGSTKFLT => Some(Self::Stkflt), + c::SIGCHLD => Some(Self::Child), + c::SIGCONT => Some(Self::Cont), + c::SIGSTOP => Some(Self::Stop), + c::SIGTSTP => Some(Self::Tstp), + c::SIGTTIN => Some(Self::Ttin), + c::SIGTTOU => Some(Self::Ttou), + c::SIGURG => Some(Self::Urg), + c::SIGXCPU => Some(Self::Xcpu), + c::SIGXFSZ => Some(Self::Xfsz), + c::SIGVTALRM => Some(Self::Vtalarm), + c::SIGPROF => Some(Self::Prof), + c::SIGWINCH => Some(Self::Winch), + #[cfg(not(target_os = "haiku"))] + c::SIGIO => Some(Self::Io), + #[cfg(not(any(bsd, target_os = "haiku")))] + c::SIGPWR => Some(Self::Power), + c::SIGSYS => Some(Self::Sys), + #[cfg(any( + bsd, + solarish, + target_os = "aix", + target_os = "hermit", + all( + linux_kernel, + any( + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6", + target_arch = "sparc", + target_arch = "sparc64" + ) + ) + ))] + c::SIGEMT => Some(Self::Emt), + #[cfg(bsd)] + c::SIGINFO => Some(Self::Info), + #[cfg(target_os = "freebsd")] + c::SIGTHR => Some(Self::Thr), + #[cfg(target_os = "freebsd")] + c::SIGLIBRT => Some(Self::Librt), + _ => None, + } + } +} + +#[test] +fn test_sizes() { + assert_eq_size!(Signal, c::c_int); +} diff -Nru temporalio-1.3.0/vendor/rustix/src/static_assertions.rs temporalio-1.3.0/vendor/rustix/src/static_assertions.rs --- temporalio-1.3.0/vendor/rustix/src/static_assertions.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/static_assertions.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,37 @@ +//! Workarounds for Rust 1.63 where some things in the `static_assertions` +//! crate do things that don't work in const contexts. We want to call them +//! in const contexts in Rust versions where that's supported so that +//! problems are caught at compile time, and fall back to dynamic asserts +//! in Rust 1.63. + +#![allow(unused_macros)] + +macro_rules! assert_eq_size { + ($x:ty, $y:ty) => { + assert_eq!(core::mem::size_of::<$x>(), core::mem::size_of::<$y>()); + }; +} + +macro_rules! assert_eq_align { + ($x:ty, $y:ty) => { + assert_eq!(core::mem::align_of::<$x>(), core::mem::align_of::<$y>()); + }; +} + +macro_rules! const_assert_eq { + ($x:expr, $y:expr) => { + assert_eq!($x, $y); + }; +} + +macro_rules! const_assert_ne { + ($x:expr, $y:expr) => { + assert_ne!($x, $y); + }; +} + +macro_rules! const_assert { + ($x:expr) => { + assert!($x); + }; +} diff -Nru temporalio-1.3.0/vendor/rustix/src/stdio.rs temporalio-1.3.0/vendor/rustix/src/stdio.rs --- temporalio-1.3.0/vendor/rustix/src/stdio.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/stdio.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,511 @@ +//! Functions returning the stdio file descriptors. +//! +//! # Safety +//! +//! These access the file descriptors by absolute index value, and nothing +//! prevents them from being closed and reused. They should only be used in +//! `main` or other situations where one is in control of the process' +//! stdio streams. +#![allow(unsafe_code)] + +use crate::backend; +use crate::fd::OwnedFd; +use backend::c; +use backend::fd::{BorrowedFd, FromRawFd, RawFd}; + +#[cfg(not(any(windows, target_os = "wasi")))] +use {crate::io, backend::fd::AsFd, core::mem::forget}; + +/// `STDIN_FILENO`—Standard input, borrowed. +/// +/// In `std`-using configurations, this is a safe function, because the +/// standard library already assumes that the stdin file descriptor is always +/// valid. In `no_std` configurations, it is `unsafe`. +/// +/// # Warning +/// +/// This function allows reading directly from stdin without coordinating +/// with the buffering performed by [`std::io::Stdin`], so it could cause +/// corrupted input. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// - [FreeBSD] +/// - [NetBSD] +/// - [OpenBSD] +/// - [DragonFly BSD] +/// - [illumos] +/// - [glibc] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdin.html +/// [Linux]: https://man7.org/linux/man-pages/man3/stdin.3.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stdin&sektion=4 +/// [NetBSD]: https://man.netbsd.org/stdin.4 +/// [OpenBSD]: https://man.openbsd.org/stdin.4 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stdin§ion=4 +/// [illumos]: https://illumos.org/man/4FS/stdin +/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stdin +#[cfg(feature = "std")] +#[doc(alias = "STDIN_FILENO")] +#[inline] +pub const fn stdin() -> BorrowedFd<'static> { + // SAFETY: When "std" is enabled, the standard library assumes that the + // stdio file descriptors are all valid. + unsafe { BorrowedFd::borrow_raw(c::STDIN_FILENO as RawFd) } +} + +/// `STDIN_FILENO`—Standard input, borrowed. +/// +/// In `std`-using configurations, this is a safe function, because the +/// standard library already assumes that the stdin file descriptor is always +/// valid. In `no_std` configurations, it is `unsafe`. +/// +/// # Safety +/// +/// In `no_std` configurations, the stdin file descriptor can be closed, +/// potentially on other threads, in which case the file descriptor index +/// value could be dynamically reused for other purposes, potentially on +/// different threads. +/// +/// # Warning +/// +/// This function allows reading directly from stdin without coordinating +/// with the buffering performed by [`std::io::Stdin`], so it could cause +/// corrupted input. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// - [FreeBSD] +/// - [NetBSD] +/// - [OpenBSD] +/// - [DragonFly BSD] +/// - [illumos] +/// - [glibc] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdin.html +/// [Linux]: https://man7.org/linux/man-pages/man3/stdin.3.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stdin&sektion=4 +/// [NetBSD]: https://man.netbsd.org/stdin.4 +/// [OpenBSD]: https://man.openbsd.org/stdin.4 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stdin§ion=4 +/// [illumos]: https://illumos.org/man/4FS/stdin +/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stdin +#[cfg(not(feature = "std"))] +#[doc(alias = "STDIN_FILENO")] +#[inline] +pub const unsafe fn stdin() -> BorrowedFd<'static> { + BorrowedFd::borrow_raw(c::STDIN_FILENO as RawFd) +} + +/// `STDIN_FILENO`—Standard input, owned. +/// +/// This is similar to [`stdin`], however it returns an `OwnedFd` which closes +/// standard input when it is dropped. +/// +/// # Safety +/// +/// Safe `std`-using Rust code is permitted to assume that the stdin file +/// descriptor is always valid. This function returns an `OwnedFd` which will +/// close the stdin file descriptor when dropped. +/// +/// # Warning +/// +/// This has the same hazards as [`stdin`]. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// - [FreeBSD] +/// - [NetBSD] +/// - [OpenBSD] +/// - [DragonFly BSD] +/// - [illumos] +/// - [glibc] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdin.html +/// [Linux]: https://man7.org/linux/man-pages/man3/stdin.3.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stdin&sektion=4 +/// [NetBSD]: https://man.netbsd.org/stdin.4 +/// [OpenBSD]: https://man.openbsd.org/stdin.4 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stdin§ion=4 +/// [illumos]: https://illumos.org/man/4FS/stdin +/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stdin +#[doc(alias = "STDIN_FILENO")] +#[inline] +pub unsafe fn take_stdin() -> OwnedFd { + backend::fd::OwnedFd::from_raw_fd(c::STDIN_FILENO as RawFd) +} + +/// `STDOUT_FILENO`—Standard output, borrowed. +/// +/// In `std`-using configurations, this is a safe function, because the +/// standard library already assumes that the stdout file descriptor is always +/// valid. In `no_std` configurations, it is `unsafe`. +/// +/// # Warning +/// +/// This function allows reading directly from stdout without coordinating +/// with the buffering performed by [`std::io::Stdout`], so it could cause +/// corrupted input. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// - [FreeBSD] +/// - [NetBSD] +/// - [OpenBSD] +/// - [DragonFly BSD] +/// - [illumos] +/// - [glibc] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdout.html +/// [Linux]: https://man7.org/linux/man-pages/man3/stdout.3.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stdout&sektion=4 +/// [NetBSD]: https://man.netbsd.org/stdout.4 +/// [OpenBSD]: https://man.openbsd.org/stdout.4 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stdout§ion=4 +/// [illumos]: https://illumos.org/man/4FS/stdout +/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stdout +#[cfg(feature = "std")] +#[doc(alias = "STDOUT_FILENO")] +#[inline] +pub const fn stdout() -> BorrowedFd<'static> { + // SAFETY: When "std" is enabled, the standard library assumes that the + // stdio file descriptors are all valid. + unsafe { BorrowedFd::borrow_raw(c::STDOUT_FILENO as RawFd) } +} + +/// `STDOUT_FILENO`—Standard output, borrowed. +/// +/// In `std`-using configurations, this is a safe function, because the +/// standard library already assumes that the stdout file descriptor is always +/// valid. In `no_std` configurations, it is `unsafe`. +/// +/// # Safety +/// +/// In `no_std` configurations, the stdout file descriptor can be closed, +/// potentially on other threads, in which case the file descriptor index +/// value could be dynamically reused for other purposes, potentially on +/// different threads. +/// +/// # Warning +/// +/// This function allows reading directly from stdout without coordinating +/// with the buffering performed by [`std::io::Stdout`], so it could cause +/// corrupted input. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// - [FreeBSD] +/// - [NetBSD] +/// - [OpenBSD] +/// - [DragonFly BSD] +/// - [illumos] +/// - [glibc] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdout.html +/// [Linux]: https://man7.org/linux/man-pages/man3/stdout.3.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stdout&sektion=4 +/// [NetBSD]: https://man.netbsd.org/stdout.4 +/// [OpenBSD]: https://man.openbsd.org/stdout.4 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stdout§ion=4 +/// [illumos]: https://illumos.org/man/4FS/stdout +/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stdout +#[cfg(not(feature = "std"))] +#[doc(alias = "STDOUT_FILENO")] +#[inline] +pub const unsafe fn stdout() -> BorrowedFd<'static> { + BorrowedFd::borrow_raw(c::STDOUT_FILENO as RawFd) +} + +/// `STDOUT_FILENO`—Standard output, owned. +/// +/// This is similar to [`stdout`], however it returns an `OwnedFd` which closes +/// standard output when it is dropped. +/// +/// # Safety +/// +/// Safe `std`-using Rust code is permitted to assume that the stdout file +/// descriptor is always valid. This function returns an `OwnedFd` which will +/// close the stdout file descriptor when dropped. +/// +/// # Warning +/// +/// This has the same hazards as [`stdout`]. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// - [FreeBSD] +/// - [NetBSD] +/// - [OpenBSD] +/// - [DragonFly BSD] +/// - [illumos] +/// - [glibc] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdout.html +/// [Linux]: https://man7.org/linux/man-pages/man3/stdout.3.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stdout&sektion=4 +/// [NetBSD]: https://man.netbsd.org/stdout.4 +/// [OpenBSD]: https://man.openbsd.org/stdout.4 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stdout§ion=4 +/// [illumos]: https://illumos.org/man/4FS/stdout +/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stdout +#[doc(alias = "STDOUT_FILENO")] +#[inline] +pub unsafe fn take_stdout() -> OwnedFd { + backend::fd::OwnedFd::from_raw_fd(c::STDOUT_FILENO as RawFd) +} + +/// `STDERR_FILENO`—Standard error, borrowed. +/// +/// In `std`-using configurations, this is a safe function, because the +/// standard library already assumes that the stderr file descriptor is always +/// valid. In `no_std` configurations, it is `unsafe`. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// - [FreeBSD] +/// - [NetBSD] +/// - [OpenBSD] +/// - [DragonFly BSD] +/// - [illumos] +/// - [glibc] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stderr.html +/// [Linux]: https://man7.org/linux/man-pages/man3/stderr.3.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stderr&sektion=4 +/// [NetBSD]: https://man.netbsd.org/stderr.4 +/// [OpenBSD]: https://man.openbsd.org/stderr.4 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stderr§ion=4 +/// [illumos]: https://illumos.org/man/4FS/stderr +/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stderr +#[cfg(feature = "std")] +#[doc(alias = "STDERR_FILENO")] +#[inline] +pub const fn stderr() -> BorrowedFd<'static> { + // SAFETY: When "std" is enabled, the standard library assumes that the + // stdio file descriptors are all valid. + unsafe { BorrowedFd::borrow_raw(c::STDERR_FILENO as RawFd) } +} + +/// `STDERR_FILENO`—Standard error, borrowed. +/// +/// In `std`-using configurations, this is a safe function, because the +/// standard library already assumes that the stderr file descriptor is always +/// valid. In `no_std` configurations, it is `unsafe`. +/// +/// # Safety +/// +/// In `no_std` configurations, the stderr file descriptor can be closed, +/// potentially on other threads, in which case the file descriptor index +/// value could be dynamically reused for other purposes, potentially on +/// different threads. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// - [FreeBSD] +/// - [NetBSD] +/// - [OpenBSD] +/// - [DragonFly BSD] +/// - [illumos] +/// - [glibc] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stderr.html +/// [Linux]: https://man7.org/linux/man-pages/man3/stderr.3.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stderr&sektion=4 +/// [NetBSD]: https://man.netbsd.org/stderr.4 +/// [OpenBSD]: https://man.openbsd.org/stderr.4 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stderr§ion=4 +/// [illumos]: https://illumos.org/man/4FS/stderr +/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stderr +#[cfg(not(feature = "std"))] +#[doc(alias = "STDERR_FILENO")] +#[inline] +pub const unsafe fn stderr() -> BorrowedFd<'static> { + BorrowedFd::borrow_raw(c::STDERR_FILENO as RawFd) +} + +/// `STDERR_FILENO`—Standard error, owned. +/// +/// This is similar to [`stderr`], however it returns an `OwnedFd` which closes +/// standard output when it is dropped. +/// +/// # Safety +/// +/// Safe std-using Rust code is permitted to assume that the stderr file +/// descriptor is always valid. This function returns an `OwnedFd` which will +/// close the stderr file descriptor when dropped. +/// +/// # Other hazards +/// +/// This has the same hazards as [`stderr`]. +/// +/// And, when the `OwnedFd` is dropped, subsequent newly created file +/// descriptors may unknowingly reuse the stderr file descriptor number, which +/// may break common assumptions, so it should typically only be dropped at the +/// end of a program when no more file descriptors will be created. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// - [FreeBSD] +/// - [NetBSD] +/// - [OpenBSD] +/// - [DragonFly BSD] +/// - [illumos] +/// - [glibc] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stderr.html +/// [Linux]: https://man7.org/linux/man-pages/man3/stderr.3.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stderr&sektion=4 +/// [NetBSD]: https://man.netbsd.org/stderr.4 +/// [OpenBSD]: https://man.openbsd.org/stderr.4 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stderr§ion=4 +/// [illumos]: https://illumos.org/man/4FS/stderr +/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stderr +#[doc(alias = "STDERR_FILENO")] +#[inline] +pub unsafe fn take_stderr() -> OwnedFd { + backend::fd::OwnedFd::from_raw_fd(c::STDERR_FILENO as RawFd) +} + +/// `STDIN_FILENO`—Standard input, raw. +/// +/// This is similar to [`stdin`], however it returns a `RawFd`. +/// +/// # Other hazards +/// +/// This has the same hazards as [`stdin`]. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// - [FreeBSD] +/// - [NetBSD] +/// - [OpenBSD] +/// - [DragonFly BSD] +/// - [illumos] +/// - [glibc] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdin.html +/// [Linux]: https://man7.org/linux/man-pages/man3/stdin.3.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stdin&sektion=4 +/// [NetBSD]: https://man.netbsd.org/stdin.4 +/// [OpenBSD]: https://man.openbsd.org/stdin.4 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stdin§ion=4 +/// [illumos]: https://illumos.org/man/4FS/stdin +/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stdin +#[doc(alias = "STDIN_FILENO")] +#[inline] +pub const fn raw_stdin() -> RawFd { + c::STDIN_FILENO as RawFd +} + +/// `STDOUT_FILENO`—Standard output, raw. +/// +/// This is similar to [`stdout`], however it returns a `RawFd`. +/// +/// # Other hazards +/// +/// This has the same hazards as [`stdout`]. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// - [FreeBSD] +/// - [NetBSD] +/// - [OpenBSD] +/// - [DragonFly BSD] +/// - [illumos] +/// - [glibc] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdout.html +/// [Linux]: https://man7.org/linux/man-pages/man3/stdout.3.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stdout&sektion=4 +/// [NetBSD]: https://man.netbsd.org/stdout.4 +/// [OpenBSD]: https://man.openbsd.org/stdout.4 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stdout§ion=4 +/// [illumos]: https://illumos.org/man/4FS/stdout +/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stdout +#[doc(alias = "STDOUT_FILENO")] +#[inline] +pub const fn raw_stdout() -> RawFd { + c::STDOUT_FILENO as RawFd +} + +/// `STDERR_FILENO`—Standard error, raw. +/// +/// This is similar to [`stderr`], however it returns a `RawFd`. +/// +/// # Other hazards +/// +/// This has the same hazards as [`stderr`]. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// - [FreeBSD] +/// - [NetBSD] +/// - [OpenBSD] +/// - [DragonFly BSD] +/// - [illumos] +/// - [glibc] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stderr.html +/// [Linux]: https://man7.org/linux/man-pages/man3/stderr.3.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=stderr&sektion=4 +/// [NetBSD]: https://man.netbsd.org/stderr.4 +/// [OpenBSD]: https://man.openbsd.org/stderr.4 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=stderr§ion=4 +/// [illumos]: https://illumos.org/man/4FS/stderr +/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#index-stderr +#[doc(alias = "STDERR_FILENO")] +#[inline] +pub const fn raw_stderr() -> RawFd { + c::STDERR_FILENO as RawFd +} + +/// Utility function to safely `dup2` over stdin (fd 0). +#[cfg(not(any(windows, target_os = "wasi")))] +#[allow(clippy::mem_forget)] +#[inline] +pub fn dup2_stdin(fd: Fd) -> io::Result<()> { + // SAFETY: We pass the returned `OwnedFd` to `forget` so that it isn't + // dropped. + let mut target = unsafe { take_stdin() }; + backend::io::syscalls::dup2(fd.as_fd(), &mut target)?; + forget(target); + Ok(()) +} + +/// Utility function to safely `dup2` over stdout (fd 1). +#[cfg(not(any(windows, target_os = "wasi")))] +#[allow(clippy::mem_forget)] +#[inline] +pub fn dup2_stdout(fd: Fd) -> io::Result<()> { + // SAFETY: We pass the returned `OwnedFd` to `forget` so that it isn't + // dropped. + let mut target = unsafe { take_stdout() }; + backend::io::syscalls::dup2(fd.as_fd(), &mut target)?; + forget(target); + Ok(()) +} + +/// Utility function to safely `dup2` over stderr (fd 2). +#[cfg(not(any(windows, target_os = "wasi")))] +#[allow(clippy::mem_forget)] +#[inline] +pub fn dup2_stderr(fd: Fd) -> io::Result<()> { + // SAFETY: We pass the returned `OwnedFd` to `forget` so that it isn't + // dropped. + let mut target = unsafe { take_stderr() }; + backend::io::syscalls::dup2(fd.as_fd(), &mut target)?; + forget(target); + Ok(()) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/system.rs temporalio-1.3.0/vendor/rustix/src/system.rs --- temporalio-1.3.0/vendor/rustix/src/system.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/system.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,156 @@ +//! Uname and other system-level functions. +//! +//! # Safety +//! +//! This function converts from `struct utsname` fields provided from the +//! kernel into `&str` references, which assumes that they're NUL-terminated. +#![allow(unsafe_code)] + +use crate::backend; +use crate::ffi::CStr; +#[cfg(not(any(target_os = "espidf", target_os = "emscripten")))] +use crate::io; +use core::fmt; + +#[cfg(linux_kernel)] +pub use backend::system::types::Sysinfo; + +/// `uname()`—Returns high-level information about the runtime OS and +/// hardware. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// - [Apple] +/// - [NetBSD] +/// - [FreeBSD] +/// - [OpenBSD] +/// - [DragonFly BSD] +/// - [illumos] +/// - [glibc] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/uname.html +/// [Linux]: https://man7.org/linux/man-pages/man2/uname.2.html +/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/uname.3.html +/// [NetBSD]: https://man.netbsd.org/uname.3 +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=uname&sektion=3 +/// [OpenBSD]: https://man.openbsd.org/uname.3 +/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=uname§ion=3 +/// [illumos]: https://illumos.org/man/2/uname +/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Platform-Type.html +#[inline] +pub fn uname() -> Uname { + Uname(backend::system::syscalls::uname()) +} + +/// `struct utsname`—Return type for [`uname`]. +#[doc(alias = "utsname")] +pub struct Uname(backend::system::types::RawUname); + +impl Uname { + /// `sysname`—Operating system release name + #[inline] + pub fn sysname(&self) -> &CStr { + Self::to_cstr(self.0.sysname.as_ptr().cast()) + } + + /// `nodename`—Name with vague meaning + /// + /// This is intended to be a network name, however it's unable to convey + /// information about hosts that have multiple names, or any information + /// about where the names are visible. + #[inline] + pub fn nodename(&self) -> &CStr { + Self::to_cstr(self.0.nodename.as_ptr().cast()) + } + + /// `release`—Operating system release version string + #[inline] + pub fn release(&self) -> &CStr { + Self::to_cstr(self.0.release.as_ptr().cast()) + } + + /// `version`—Operating system build identifiers + #[inline] + pub fn version(&self) -> &CStr { + Self::to_cstr(self.0.version.as_ptr().cast()) + } + + /// `machine`—Hardware architecture identifier + #[inline] + pub fn machine(&self) -> &CStr { + Self::to_cstr(self.0.machine.as_ptr().cast()) + } + + /// `domainname`—NIS or YP domain identifier + #[cfg(linux_kernel)] + #[inline] + pub fn domainname(&self) -> &CStr { + Self::to_cstr(self.0.domainname.as_ptr().cast()) + } + + #[inline] + fn to_cstr<'a>(ptr: *const u8) -> &'a CStr { + // SAFETY: Strings returned from the kernel are always NUL-terminated. + unsafe { CStr::from_ptr(ptr.cast()) } + } +} + +impl fmt::Debug for Uname { + fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { + #[cfg(not(linux_kernel))] + { + write!( + fmt, + "{} {} {} {} {}", + self.sysname().to_string_lossy(), + self.nodename().to_string_lossy(), + self.release().to_string_lossy(), + self.version().to_string_lossy(), + self.machine().to_string_lossy(), + ) + } + #[cfg(linux_kernel)] + { + write!( + fmt, + "{} {} {} {} {} {}", + self.sysname().to_string_lossy(), + self.nodename().to_string_lossy(), + self.release().to_string_lossy(), + self.version().to_string_lossy(), + self.machine().to_string_lossy(), + self.domainname().to_string_lossy(), + ) + } + } +} + +/// `sysinfo()`—Returns status information about the runtime OS. +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man2/uname.2.html +#[cfg(linux_kernel)] +#[inline] +pub fn sysinfo() -> Sysinfo { + backend::system::syscalls::sysinfo() +} + +/// `sethostname(name)`—Sets the system host name. +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man2/sethostname.2.html +#[cfg(not(any( + target_os = "emscripten", + target_os = "espidf", + target_os = "redox", + target_os = "wasi" +)))] +#[inline] +pub fn sethostname(name: &[u8]) -> io::Result<()> { + backend::system::syscalls::sethostname(name) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/termios/cf.rs temporalio-1.3.0/vendor/rustix/src/termios/cf.rs --- temporalio-1.3.0/vendor/rustix/src/termios/cf.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/termios/cf.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -use crate::termios::{Speed, Termios}; -use crate::{backend, io}; - -/// `cfgetospeed(termios)` -#[inline] -#[must_use] -pub fn cfgetospeed(termios: &Termios) -> Speed { - backend::termios::syscalls::cfgetospeed(termios) -} - -/// `cfgetispeed(termios)` -#[inline] -#[must_use] -pub fn cfgetispeed(termios: &Termios) -> Speed { - backend::termios::syscalls::cfgetispeed(termios) -} - -/// `cfmakeraw(termios)` -#[inline] -pub fn cfmakeraw(termios: &mut Termios) { - backend::termios::syscalls::cfmakeraw(termios) -} - -/// `cfsetospeed(termios, speed)` -#[inline] -pub fn cfsetospeed(termios: &mut Termios, speed: Speed) -> io::Result<()> { - backend::termios::syscalls::cfsetospeed(termios, speed) -} - -/// `cfsetispeed(termios, speed)` -#[inline] -pub fn cfsetispeed(termios: &mut Termios, speed: Speed) -> io::Result<()> { - backend::termios::syscalls::cfsetispeed(termios, speed) -} - -/// `cfsetspeed(termios, speed)` -#[inline] -pub fn cfsetspeed(termios: &mut Termios, speed: Speed) -> io::Result<()> { - backend::termios::syscalls::cfsetspeed(termios, speed) -} diff -Nru temporalio-1.3.0/vendor/rustix/src/termios/constants.rs temporalio-1.3.0/vendor/rustix/src/termios/constants.rs --- temporalio-1.3.0/vendor/rustix/src/termios/constants.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/termios/constants.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,101 +0,0 @@ -use crate::backend; - -pub use backend::termios::types::*; - -/// Translate from a `Speed` code to a speed value `u32`. -/// -/// ``` -/// let speed = rustix::termios::speed_value(rustix::termios::B57600); -/// assert_eq!(speed, Some(57600)); -/// ``` -pub fn speed_value(speed: backend::termios::types::Speed) -> Option { - match speed { - backend::termios::types::B0 => Some(0), - backend::termios::types::B50 => Some(50), - backend::termios::types::B75 => Some(75), - backend::termios::types::B110 => Some(110), - backend::termios::types::B134 => Some(134), - backend::termios::types::B150 => Some(150), - backend::termios::types::B200 => Some(200), - backend::termios::types::B300 => Some(300), - backend::termios::types::B600 => Some(600), - backend::termios::types::B1200 => Some(1200), - backend::termios::types::B1800 => Some(1800), - backend::termios::types::B2400 => Some(2400), - backend::termios::types::B4800 => Some(4800), - backend::termios::types::B9600 => Some(9600), - backend::termios::types::B19200 => Some(19200), - backend::termios::types::B38400 => Some(38400), - #[cfg(not(target_os = "aix"))] - backend::termios::types::B57600 => Some(57600), - #[cfg(not(target_os = "aix"))] - backend::termios::types::B115200 => Some(115_200), - #[cfg(not(target_os = "aix"))] - backend::termios::types::B230400 => Some(230_400), - #[cfg(not(any( - apple, - target_os = "aix", - target_os = "dragonfly", - target_os = "haiku", - target_os = "openbsd" - )))] - backend::termios::types::B460800 => Some(460_800), - #[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))] - backend::termios::types::B500000 => Some(500_000), - #[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))] - backend::termios::types::B576000 => Some(576_000), - #[cfg(not(any( - apple, - target_os = "aix", - target_os = "dragonfly", - target_os = "haiku", - target_os = "openbsd" - )))] - backend::termios::types::B921600 => Some(921_600), - #[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))] - backend::termios::types::B1000000 => Some(1_000_000), - #[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))] - backend::termios::types::B1152000 => Some(1_152_000), - #[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))] - backend::termios::types::B1500000 => Some(1_500_000), - #[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))] - backend::termios::types::B2000000 => Some(2_000_000), - #[cfg(not(any( - target_arch = "sparc", - target_arch = "sparc64", - bsd, - target_os = "aix", - target_os = "haiku", - target_os = "solaris", - )))] - backend::termios::types::B2500000 => Some(2_500_000), - #[cfg(not(any( - target_arch = "sparc", - target_arch = "sparc64", - bsd, - target_os = "aix", - target_os = "haiku", - target_os = "solaris", - )))] - backend::termios::types::B3000000 => Some(3_000_000), - #[cfg(not(any( - target_arch = "sparc", - target_arch = "sparc64", - bsd, - target_os = "aix", - target_os = "haiku", - target_os = "solaris", - )))] - backend::termios::types::B3500000 => Some(3_500_000), - #[cfg(not(any( - target_arch = "sparc", - target_arch = "sparc64", - bsd, - target_os = "aix", - target_os = "haiku", - target_os = "solaris", - )))] - backend::termios::types::B4000000 => Some(4_000_000), - _ => None, - } -} diff -Nru temporalio-1.3.0/vendor/rustix/src/termios/ioctl.rs temporalio-1.3.0/vendor/rustix/src/termios/ioctl.rs --- temporalio-1.3.0/vendor/rustix/src/termios/ioctl.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/termios/ioctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,42 @@ +//! Terminal-related `ioctl` functions. + +use crate::fd::AsFd; +use crate::{backend, io}; + +/// `ioctl(fd, TIOCEXCL)`—Enables exclusive mode on a terminal. +/// +/// # References +/// - [Linux] +/// - [FreeBSD] +/// - [NetBSD] +/// - [OpenBSD] +/// +/// [Linux]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=tty&sektion=4 +/// [NetBSD]: https://man.netbsd.org/tty.4 +/// [OpenBSD]: https://man.openbsd.org/tty.4 +#[cfg(not(any(windows, target_os = "redox", target_os = "wasi")))] +#[inline] +#[doc(alias = "TIOCEXCL")] +pub fn ioctl_tiocexcl(fd: Fd) -> io::Result<()> { + backend::termios::syscalls::ioctl_tiocexcl(fd.as_fd()) +} + +/// `ioctl(fd, TIOCNXCL)`—Disables exclusive mode on a terminal. +/// +/// # References +/// - [Linux] +/// - [FreeBSD] +/// - [NetBSD] +/// - [OpenBSD] +/// +/// [Linux]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html +/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=tty&sektion=4 +/// [NetBSD]: https://man.netbsd.org/tty.4 +/// [OpenBSD]: https://man.openbsd.org/tty.4 +#[cfg(not(any(windows, target_os = "redox", target_os = "wasi")))] +#[inline] +#[doc(alias = "TIOCNXCL")] +pub fn ioctl_tiocnxcl(fd: Fd) -> io::Result<()> { + backend::termios::syscalls::ioctl_tiocnxcl(fd.as_fd()) +} diff -Nru temporalio-1.3.0/vendor/rustix/src/termios/mod.rs temporalio-1.3.0/vendor/rustix/src/termios/mod.rs --- temporalio-1.3.0/vendor/rustix/src/termios/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/termios/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,19 +1,27 @@ //! Terminal I/O stream operations. +//! +//! This API automatically supports setting arbitrary I/O speeds, on any +//! platform that supports them, including Linux and the BSDs. +//! +//! The [`speed`] module contains various predefined speed constants which +//! are more likely to be portable, however any `u32` value can be passed to +//! [`Termios::set_input_speed`], and it will simply fail if the speed is not +//! supported by the platform. -#[cfg(not(target_os = "wasi"))] -mod cf; -#[cfg(not(target_os = "wasi"))] -mod constants; +#[cfg(not(any(target_os = "espidf", target_os = "haiku", target_os = "wasi")))] +mod ioctl; #[cfg(not(target_os = "wasi"))] mod tc; #[cfg(not(windows))] mod tty; +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] +mod types; -#[cfg(not(target_os = "wasi"))] -pub use cf::*; -#[cfg(not(target_os = "wasi"))] -pub use constants::*; +#[cfg(not(any(target_os = "espidf", target_os = "haiku", target_os = "wasi")))] +pub use ioctl::*; #[cfg(not(target_os = "wasi"))] pub use tc::*; #[cfg(not(windows))] pub use tty::*; +#[cfg(not(any(target_os = "espidf", target_os = "wasi")))] +pub use types::*; diff -Nru temporalio-1.3.0/vendor/rustix/src/termios/tc.rs temporalio-1.3.0/vendor/rustix/src/termios/tc.rs --- temporalio-1.3.0/vendor/rustix/src/termios/tc.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/termios/tc.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,28 +1,12 @@ use crate::fd::AsFd; -use crate::process::Pid; +use crate::pid::Pid; +#[cfg(not(target_os = "espidf"))] +use crate::termios::{Action, OptionalActions, QueueSelector, Termios, Winsize}; use crate::{backend, io}; -#[cfg(all( - linux_kernel, - any( - target_arch = "x86", - target_arch = "x86_64", - target_arch = "x32", - target_arch = "riscv64", - target_arch = "aarch64", - target_arch = "arm", - target_arch = "mips", - target_arch = "mips64", - ) -))] -pub use backend::termios::types::Termios2; -pub use backend::termios::types::{ - Action, OptionalActions, QueueSelector, Speed, Tcflag, Termios, Winsize, -}; - /// `tcgetattr(fd)`—Get terminal attributes. /// -/// Also known as the `TCGETS` operation with `ioctl`. +/// Also known as the `TCGETS` (or `TCGETS2` on Linux) operation with `ioctl`. /// /// # References /// - [POSIX `tcgetattr`] @@ -32,44 +16,15 @@ /// [POSIX `tcgetattr`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcgetattr.html /// [Linux `ioctl_tty`]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html /// [Linux `termios`]: https://man7.org/linux/man-pages/man3/termios.3.html -#[cfg(not(any(windows, target_os = "wasi")))] +#[cfg(not(any(windows, target_os = "espidf", target_os = "wasi")))] #[inline] #[doc(alias = "TCGETS")] +#[doc(alias = "TCGETS2")] +#[doc(alias = "tcgetattr2")] pub fn tcgetattr(fd: Fd) -> io::Result { backend::termios::syscalls::tcgetattr(fd.as_fd()) } -/// `tcgetattr2(fd)`—Get terminal attributes. -/// -/// Also known as the `TCGETS2` operation with `ioctl`. -/// -/// # References -/// - [POSIX `tcgetattr`] -/// - [Linux `ioctl_tty`] -/// - [Linux `termios`] -/// -/// [POSIX `tcgetattr`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcgetattr.html -/// [Linux `ioctl_tty`]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html -/// [Linux `termios`]: https://man7.org/linux/man-pages/man3/termios.3.html -#[inline] -#[doc(alias = "TCGETS2")] -#[cfg(all( - linux_kernel, - any( - target_arch = "x86", - target_arch = "x86_64", - target_arch = "x32", - target_arch = "riscv64", - target_arch = "aarch64", - target_arch = "arm", - target_arch = "mips", - target_arch = "mips64", - ) -))] -pub fn tcgetattr2(fd: Fd) -> io::Result { - backend::termios::syscalls::tcgetattr2(fd.as_fd()) -} - /// `tcgetwinsize(fd)`—Get the current terminal window size. /// /// Also known as the `TIOCGWINSZ` operation with `ioctl`. @@ -78,7 +33,7 @@ /// - [Linux] /// /// [Linux]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html -#[cfg(not(any(windows, target_os = "wasi")))] +#[cfg(not(any(windows, target_os = "espidf", target_os = "wasi")))] #[inline] #[doc(alias = "TIOCGWINSZ")] pub fn tcgetwinsize(fd: Fd) -> io::Result { @@ -121,7 +76,7 @@ /// `tcsetattr(fd)`—Set terminal attributes. /// -/// Also known as the `TCSETS` operation with `ioctl`. +/// Also known as the `TCSETS` (or `TCSETS2 on Linux) operation with `ioctl`. /// /// # References /// - [POSIX `tcsetattr`] @@ -131,8 +86,11 @@ /// [POSIX `tcsetattr`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcsetattr.html /// [Linux `ioctl_tty`]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html /// [Linux `termios`]: https://man7.org/linux/man-pages/man3/termios.3.html +#[cfg(not(target_os = "espidf"))] #[inline] #[doc(alias = "TCSETS")] +#[doc(alias = "TCSETS2")] +#[doc(alias = "tcsetattr2")] pub fn tcsetattr( fd: Fd, optional_actions: OptionalActions, @@ -141,41 +99,6 @@ backend::termios::syscalls::tcsetattr(fd.as_fd(), optional_actions, termios) } -/// `tcsetattr2(fd)`—Set terminal attributes. -/// -/// Also known as the `TCSETS2` operation with `ioctl`. -/// -/// # References -/// - [POSIX `tcsetattr`] -/// - [Linux `ioctl_tty`] -/// - [Linux `termios`] -/// -/// [POSIX `tcsetattr`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcsetattr.html -/// [Linux `ioctl_tty`]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html -/// [Linux `termios`]: https://man7.org/linux/man-pages/man3/termios.3.html -#[inline] -#[doc(alias = "TCSETS2")] -#[cfg(all( - linux_kernel, - any( - target_arch = "x86", - target_arch = "x86_64", - target_arch = "x32", - target_arch = "riscv64", - target_arch = "aarch64", - target_arch = "arm", - target_arch = "mips", - target_arch = "mips64", - ) -))] -pub fn tcsetattr2( - fd: Fd, - optional_actions: OptionalActions, - termios: &Termios2, -) -> io::Result<()> { - backend::termios::syscalls::tcsetattr2(fd.as_fd(), optional_actions, termios) -} - /// `tcsendbreak(fd, 0)`—Transmit zero-valued bits. /// /// Also known as the `TCSBRK` operation with `ioctl`, with a duration of 0. @@ -208,6 +131,7 @@ /// [POSIX `tcsetattr`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcdrain.html /// [Linux `ioctl_tty`]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html /// [Linux `termios`]: https://man7.org/linux/man-pages/man3/termios.3.html +#[cfg(not(target_os = "espidf"))] #[inline] pub fn tcdrain(fd: Fd) -> io::Result<()> { backend::termios::syscalls::tcdrain(fd.as_fd()) @@ -224,6 +148,7 @@ /// [POSIX `tcflush`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcflush.html /// [Linux `ioctl_tty`]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html /// [Linux `termios`]: https://man7.org/linux/man-pages/man3/termios.3.html +#[cfg(not(target_os = "espidf"))] #[inline] #[doc(alias = "TCFLSH")] pub fn tcflush(fd: Fd, queue_selector: QueueSelector) -> io::Result<()> { @@ -240,6 +165,7 @@ /// [POSIX `tcflow`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcflow.html /// [Linux `ioctl_tty`]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html /// [Linux `termios`]: https://man7.org/linux/man-pages/man3/termios.3.html +#[cfg(not(target_os = "espidf"))] #[inline] #[doc(alias = "TCXONC")] pub fn tcflow(fd: Fd, action: Action) -> io::Result<()> { @@ -269,6 +195,7 @@ /// - [Linux] /// /// [Linux]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html +#[cfg(not(target_os = "espidf"))] #[inline] #[doc(alias = "TIOCSWINSZ")] pub fn tcsetwinsize(fd: Fd, winsize: Winsize) -> io::Result<()> { diff -Nru temporalio-1.3.0/vendor/rustix/src/termios/tty.rs temporalio-1.3.0/vendor/rustix/src/termios/tty.rs --- temporalio-1.3.0/vendor/rustix/src/termios/tty.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/termios/tty.rs 2023-10-30 19:40:00.000000000 +0000 @@ -24,7 +24,7 @@ /// `ttyname_r(fd)` /// -/// If `reuse` is non-empty, reuse its buffer to store the result if possible. +/// If `reuse` already has available capacity, reuse it if possible. /// /// # References /// - [POSIX] @@ -43,22 +43,36 @@ #[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))] #[cfg(feature = "procfs")] +#[allow(unsafe_code)] fn _ttyname(dirfd: BorrowedFd<'_>, mut buffer: Vec) -> io::Result { - // This code would benefit from having a better way to read into - // uninitialized memory, but that requires `unsafe`. buffer.clear(); buffer.reserve(SMALL_PATH_BUFFER_SIZE); - buffer.resize(buffer.capacity(), 0_u8); loop { - match backend::termios::syscalls::ttyname(dirfd, &mut buffer) { + match backend::termios::syscalls::ttyname(dirfd, buffer.spare_capacity_mut()) { Err(io::Errno::RANGE) => { - buffer.reserve(1); // use `Vec` reallocation strategy to grow capacity exponentially - buffer.resize(buffer.capacity(), 0_u8); + buffer.reserve(buffer.capacity() + 1); // use `Vec` reallocation strategy to grow capacity exponentially } Ok(len) => { - buffer.resize(len, 0_u8); - return Ok(CString::new(buffer).unwrap()); + // SAFETY: assume the backend returns the length of the string + unsafe { + buffer.set_len(len); + } + + // SAFETY: + // - "ttyname_r stores this pathname in the buffer buf" + // - [POSIX definition 3.271: Pathname]: "A string that is used to identify a + // file." + // - [POSIX definition 3.375: String]: "A contiguous sequence of bytes + // terminated by and including the first null byte." + // + // Thus, there will be a single NUL byte at the end of the string. + // + // [POSIX definition 3.271: Pathname]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_271 + // [POSIX definition 3.375: String]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_375 + unsafe { + return Ok(CString::from_vec_with_nul_unchecked(buffer)); + } } Err(errno) => return Err(errno), } diff -Nru temporalio-1.3.0/vendor/rustix/src/termios/types.rs temporalio-1.3.0/vendor/rustix/src/termios/types.rs --- temporalio-1.3.0/vendor/rustix/src/termios/types.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/termios/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1424 @@ +use crate::backend::c; +use crate::{backend, io}; +use bitflags::bitflags; + +/// `struct termios` for use with [`tcgetattr`] and [`tcsetattr`]. +/// +/// [`tcgetattr`]: crate::termios::tcgetattr +/// [`tcsetattr`]: crate::termios::tcsetattr +#[repr(C)] +#[derive(Clone)] +pub struct Termios { + /// How is input interpreted? + #[doc(alias = "c_iflag")] + pub input_modes: InputModes, + + /// How is output translated? + #[doc(alias = "c_oflag")] + pub output_modes: OutputModes, + + /// Low-level configuration flags. + #[doc(alias = "c_cflag")] + pub control_modes: ControlModes, + + /// High-level configuration flags. + #[doc(alias = "c_lflag")] + pub local_modes: LocalModes, + + /// Line discipline. + #[doc(alias = "c_line")] + #[cfg(not(all(linux_raw, any(target_arch = "powerpc", target_arch = "powerpc64"))))] + #[cfg(any( + linux_like, + target_env = "newlib", + target_os = "fuchsia", + target_os = "haiku", + target_os = "redox" + ))] + pub line_discipline: c::cc_t, + + /// How are various special control codes handled? + #[doc(alias = "c_cc")] + #[cfg(not(target_os = "haiku"))] + pub special_codes: SpecialCodes, + + #[cfg(target_os = "nto")] + pub(crate) __reserved: [c::c_uint; 3], + + /// Line discipline. + // On PowerPC, this field comes after `c_cc`. + #[doc(alias = "c_line")] + #[cfg(all(linux_raw, any(target_arch = "powerpc", target_arch = "powerpc64")))] + pub line_discipline: c::cc_t, + + /// See the `input_speed` and `set_input_seed` functions. + /// + /// On Linux and BSDs, this is the arbitrary integer speed value. On all + /// other platforms, this is the encoded speed value. + #[cfg(not(any(solarish, all(libc, target_env = "newlib"), target_os = "aix")))] + pub(crate) input_speed: c::speed_t, + + /// See the `output_speed` and `set_output_seed` functions. + /// + /// On Linux and BSDs, this is the integer speed value. On all other + /// platforms, this is the encoded speed value. + #[cfg(not(any(solarish, all(libc, target_env = "newlib"), target_os = "aix")))] + pub(crate) output_speed: c::speed_t, + + /// How are various special control codes handled? + #[doc(alias = "c_cc")] + #[cfg(target_os = "haiku")] + pub special_codes: SpecialCodes, +} + +impl Termios { + /// `cfmakeraw(self)`—Set a `Termios` value to the settings for “raw†mode. + /// + /// In raw mode, input is available a byte at a time, echoing is disabled, + /// and special terminal input and output codes are disabled. + #[cfg(not(target_os = "nto"))] + #[doc(alias = "cfmakeraw")] + #[inline] + pub fn make_raw(&mut self) { + backend::termios::syscalls::cfmakeraw(self) + } + + /// Return the input communication speed. + /// + /// Unlike the `c_ispeed` field in GLIBC and others, this returns the + /// integer value of the speed, rather than the `B*` encoded constant + /// value. + #[doc(alias = "c_ispeed")] + #[doc(alias = "cfgetispeed")] + #[doc(alias = "cfgetspeed")] + #[inline] + pub fn input_speed(&self) -> u32 { + // On Linux and BSDs, `input_speed` is the arbitrary integer speed. + #[cfg(any(linux_kernel, bsd))] + { + debug_assert!(u32::try_from(self.input_speed).is_ok()); + self.input_speed as u32 + } + + // On illumos, `input_speed` is not present. + #[cfg(any(solarish, all(libc, target_env = "newlib"), target_os = "aix"))] + unsafe { + speed::decode(c::cfgetispeed(crate::utils::as_ptr(self).cast())).unwrap() + } + + // On other platforms, it's the encoded speed. + #[cfg(not(any( + linux_kernel, + bsd, + solarish, + all(libc, target_env = "newlib"), + target_os = "aix" + )))] + { + speed::decode(self.input_speed).unwrap() + } + } + + /// Return the output communication speed. + /// + /// Unlike the `c_ospeed` field in GLIBC and others, this returns the + /// arbitrary integer value of the speed, rather than the `B*` encoded + /// constant value. + #[inline] + pub fn output_speed(&self) -> u32 { + // On Linux and BSDs, `input_speed` is the arbitrary integer speed. + #[cfg(any(linux_kernel, bsd))] + { + debug_assert!(u32::try_from(self.output_speed).is_ok()); + self.output_speed as u32 + } + + // On illumos, `output_speed` is not present. + #[cfg(any(solarish, all(libc, target_env = "newlib"), target_os = "aix"))] + unsafe { + speed::decode(c::cfgetospeed(crate::utils::as_ptr(self).cast())).unwrap() + } + + // On other platforms, it's the encoded speed. + #[cfg(not(any( + linux_kernel, + bsd, + solarish, + all(libc, target_env = "newlib"), + target_os = "aix" + )))] + { + speed::decode(self.output_speed).unwrap() + } + } + + /// Set the input and output communication speeds. + /// + /// Unlike the `c_ispeed` and `c_ospeed` fields in GLIBC and others, this + /// takes the arbitrary integer value of the speed, rather than the `B*` + /// encoded constant value. Not all implementations support all integer + /// values; use the constants in the [`speed`] module for likely-supported + /// speeds. + #[cfg(not(target_os = "nto"))] + #[doc(alias = "cfsetspeed")] + #[doc(alias = "CBAUD")] + #[doc(alias = "CBAUDEX")] + #[doc(alias = "CIBAUD")] + #[doc(alias = "CIBAUDEX")] + #[inline] + pub fn set_speed(&mut self, new_speed: u32) -> io::Result<()> { + backend::termios::syscalls::set_speed(self, new_speed) + } + + /// Set the input communication speed. + /// + /// Unlike the `c_ispeed` field in GLIBC and others, this takes the + /// arbitrary integer value of the speed, rather than the `B*` encoded + /// constant value. Not all implementations support all integer values; use + /// the constants in the [`speed`] module for known-supported speeds. + /// + /// On some platforms, changing the input speed changes the output speed + /// to the same speed. + #[doc(alias = "c_ispeed")] + #[doc(alias = "cfsetispeed")] + #[doc(alias = "CIBAUD")] + #[doc(alias = "CIBAUDEX")] + #[inline] + pub fn set_input_speed(&mut self, new_speed: u32) -> io::Result<()> { + backend::termios::syscalls::set_input_speed(self, new_speed) + } + + /// Set the output communication speed. + /// + /// Unlike the `c_ospeed` field in GLIBC and others, this takes the + /// arbitrary integer value of the speed, rather than the `B*` encoded + /// constant value. Not all implementations support all integer values; use + /// the constants in the [`speed`] module for known-supported speeds. + /// + /// On some platforms, changing the output speed changes the input speed + /// to the same speed. + #[doc(alias = "c_ospeed")] + #[doc(alias = "cfsetospeed")] + #[doc(alias = "CBAUD")] + #[doc(alias = "CBAUDEX")] + #[inline] + pub fn set_output_speed(&mut self, new_speed: u32) -> io::Result<()> { + backend::termios::syscalls::set_output_speed(self, new_speed) + } +} + +impl core::fmt::Debug for Termios { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut d = f.debug_struct("Termios"); + d.field("input_modes", &self.input_modes); + d.field("output_modes", &self.output_modes); + d.field("control_modes", &self.control_modes); + d.field("local_modes", &self.local_modes); + #[cfg(any( + linux_like, + target_env = "newlib", + target_os = "fuchsia", + target_os = "haiku", + target_os = "redox" + ))] + { + d.field("line_discipline", &self.line_discipline); + } + d.field("special_codes", &self.special_codes); + d.field("input_speed", &self.input_speed()); + d.field("output_speed", &self.output_speed()); + d.finish() + } +} + +bitflags! { + /// Flags controlling terminal input. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct InputModes: c::tcflag_t { + /// `IGNBRK` + const IGNBRK = c::IGNBRK; + + /// `BRKINT` + const BRKINT = c::BRKINT; + + /// `IGNPAR` + const IGNPAR = c::IGNPAR; + + /// `PARMRK` + const PARMRK = c::PARMRK; + + /// `INPCK` + const INPCK = c::INPCK; + + /// `ISTRIP` + const ISTRIP = c::ISTRIP; + + /// `INLCR` + const INLCR = c::INLCR; + + /// `IGNCR` + const IGNCR = c::IGNCR; + + /// `ICRNL` + const ICRNL = c::ICRNL; + + /// `IUCLC` + #[cfg(any(linux_kernel, solarish, target_os = "aix", target_os = "haiku", target_os = "nto"))] + const IUCLC = c::IUCLC; + + /// `IXON` + const IXON = c::IXON; + + /// `IXANY` + #[cfg(not(target_os = "redox"))] + const IXANY = c::IXANY; + + /// `IXOFF` + const IXOFF = c::IXOFF; + + /// `IMAXBEL` + #[cfg(not(any(target_os = "haiku", target_os = "redox")))] + const IMAXBEL = c::IMAXBEL; + + /// `IUTF8` + #[cfg(not(any( + freebsdlike, + netbsdlike, + solarish, + target_os = "aix", + target_os = "emscripten", + target_os = "haiku", + target_os = "redox", + )))] + const IUTF8 = c::IUTF8; + } +} + +bitflags! { + /// Flags controlling terminal output. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct OutputModes: c::tcflag_t { + /// `OPOST` + const OPOST = c::OPOST; + + /// `OLCUC` + #[cfg(not(any( + apple, + freebsdlike, + target_os = "aix", + target_os = "netbsd", + target_os = "redox", + )))] + const OLCUC = c::OLCUC; + + /// `ONLCR` + const ONLCR = c::ONLCR; + + /// `OCRNL` + const OCRNL = c::OCRNL; + + /// `ONOCR` + const ONOCR = c::ONOCR; + + /// `ONLRET` + const ONLRET = c::ONLRET; + + /// `OFILL` + #[cfg(not(bsd))] + const OFILL = c::OFILL; + + /// `OFDEL` + #[cfg(not(bsd))] + const OFDEL = c::OFDEL; + + /// `NLDLY` + #[cfg(not(any(bsd, solarish, target_os = "redox")))] + const NLDLY = c::NLDLY; + + /// `NL0` + #[cfg(not(any(bsd, solarish, target_os = "fuchsia", target_os = "redox")))] + const NL0 = c::NL0; + + /// `NL1` + #[cfg(not(any(bsd, solarish, target_os = "fuchsia", target_os = "redox")))] + const NL1 = c::NL1; + + /// `CRDLY` + #[cfg(not(any(bsd, solarish, target_os = "redox")))] + const CRDLY = c::CRDLY; + + /// `CR0` + #[cfg(not(any(bsd, solarish, target_os = "fuchsia", target_os = "redox")))] + const CR0 = c::CR0; + + /// `CR1` + #[cfg(not(any( + target_env = "musl", + bsd, + solarish, + target_os = "emscripten", + target_os = "fuchsia", + target_os = "redox", + )))] + const CR1 = c::CR1; + + /// `CR2` + #[cfg(not(any( + target_env = "musl", + bsd, + solarish, + target_os = "emscripten", + target_os = "fuchsia", + target_os = "redox", + )))] + const CR2 = c::CR2; + + /// `CR3` + #[cfg(not(any( + target_env = "musl", + bsd, + solarish, + target_os = "emscripten", + target_os = "fuchsia", + target_os = "redox", + )))] + const CR3 = c::CR3; + + /// `TABDLY` + #[cfg(not(any( + netbsdlike, + solarish, + target_os = "dragonfly", + target_os = "redox", + )))] + const TABDLY = c::TABDLY; + + /// `TAB0` + #[cfg(not(any( + netbsdlike, + solarish, + target_os = "dragonfly", + target_os = "fuchsia", + target_os = "redox", + )))] + const TAB0 = c::TAB0; + + /// `TAB1` + #[cfg(not(any( + target_env = "musl", + bsd, + solarish, + target_os = "emscripten", + target_os = "fuchsia", + target_os = "redox", + )))] + const TAB1 = c::TAB1; + + /// `TAB2` + #[cfg(not(any( + target_env = "musl", + bsd, + solarish, + target_os = "emscripten", + target_os = "fuchsia", + target_os = "redox", + )))] + const TAB2 = c::TAB2; + + /// `TAB3` + #[cfg(not(any( + target_env = "musl", + bsd, + solarish, + target_os = "emscripten", + target_os = "fuchsia", + target_os = "redox", + )))] + const TAB3 = c::TAB3; + + /// `XTABS` + #[cfg(not(any( + bsd, + solarish, + target_os = "aix", + target_os = "haiku", + target_os = "redox", + )))] + const XTABS = c::XTABS; + + /// `BSDLY` + #[cfg(not(any(bsd, solarish, target_os = "redox")))] + const BSDLY = c::BSDLY; + + /// `BS0` + #[cfg(not(any(bsd, solarish, target_os = "fuchsia", target_os = "redox")))] + const BS0 = c::BS0; + + /// `BS1` + #[cfg(not(any( + target_env = "musl", + bsd, + solarish, + target_os = "emscripten", + target_os = "fuchsia", + target_os = "redox", + )))] + const BS1 = c::BS1; + + /// `FFDLY` + #[cfg(not(any(bsd, solarish, target_os = "redox")))] + const FFDLY = c::FFDLY; + + /// `FF0` + #[cfg(not(any(bsd, solarish, target_os = "fuchsia", target_os = "redox")))] + const FF0 = c::FF0; + + /// `FF1` + #[cfg(not(any( + target_env = "musl", + bsd, + solarish, + target_os = "emscripten", + target_os = "fuchsia", + target_os = "redox", + )))] + const FF1 = c::FF1; + + /// `VTDLY` + #[cfg(not(any(bsd, solarish, target_os = "redox")))] + const VTDLY = c::VTDLY; + + /// `VT0` + #[cfg(not(any(bsd, solarish, target_os = "fuchsia", target_os = "redox")))] + const VT0 = c::VT0; + + /// `VT1` + #[cfg(not(any( + target_env = "musl", + bsd, + solarish, + target_os = "emscripten", + target_os = "fuchsia", + target_os = "redox", + )))] + const VT1 = c::VT1; + } +} + +bitflags! { + /// Flags controlling special terminal modes. + /// + /// `CBAUD`, `CBAUDEX`, `CIBAUD`, and `CIBAUDEX` are not defined here, + /// because they're handled automatically by [`Termios::set_speed`] and + /// related functions. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct ControlModes: c::tcflag_t { + /// `CSIZE` + const CSIZE = c::CSIZE; + + /// `CS5` + const CS5 = c::CS5; + + /// `CS6` + const CS6 = c::CS6; + + /// `CS7` + const CS7 = c::CS7; + + /// `CS8` + const CS8 = c::CS8; + + /// `CSTOPB` + const CSTOPB = c::CSTOPB; + + /// `CREAD` + const CREAD = c::CREAD; + + /// `PARENB` + const PARENB = c::PARENB; + + /// `PARODD` + const PARODD = c::PARODD; + + /// `HUPCL` + const HUPCL = c::HUPCL; + + /// `CLOCAL` + const CLOCAL = c::CLOCAL; + + /// `CRTSCTS` + #[cfg(not(any(target_os = "aix", target_os = "nto", target_os = "redox")))] + const CRTSCTS = c::CRTSCTS; + + /// `CMSPAR` + #[cfg(not(any( + bsd, + solarish, + target_os = "aix", + target_os = "emscripten", + target_os = "haiku", + target_os = "nto", + target_os = "redox", + )))] + const CMSPAR = c::CMSPAR; + } +} + +bitflags! { + /// Flags controlling “local†terminal modes. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] + pub struct LocalModes: c::tcflag_t { + /// `XCASE` + #[cfg(any(linux_kernel, target_arch = "s390x", target_os = "haiku"))] + const XCASE = c::XCASE; + + /// `ECHOCTL` + #[cfg(not(target_os = "redox"))] + const ECHOCTL = c::ECHOCTL; + + /// `ECHOPRT` + #[cfg(not(any(target_os = "nto", target_os = "redox")))] + const ECHOPRT = c::ECHOPRT; + + /// `ECHOKE` + #[cfg(not(target_os = "redox"))] + const ECHOKE = c::ECHOKE; + + /// `FLUSHO` + #[cfg(not(any(target_os = "nto", target_os = "redox")))] + const FLUSHO = c::FLUSHO; + + /// `PENDIN` + #[cfg(not(any(target_os = "nto", target_os = "redox")))] + const PENDIN = c::PENDIN; + + /// `EXTPROC` + #[cfg(not(any(target_os = "aix", target_os = "haiku", target_os = "nto", target_os = "redox")))] + const EXTPROC = c::EXTPROC; + + /// `ISIG` + const ISIG = c::ISIG; + + /// `ICANON`—A flag for the `c_lflag` field of [`Termios`] indicating + /// canonical mode. + const ICANON = c::ICANON; + + /// `ECHO` + const ECHO = c::ECHO; + + /// `ECHOE` + const ECHOE = c::ECHOE; + + /// `ECHOK` + const ECHOK = c::ECHOK; + + /// `ECHONL` + const ECHONL = c::ECHONL; + + /// `NOFLSH` + const NOFLSH = c::NOFLSH; + + /// `TOSTOP` + const TOSTOP = c::TOSTOP; + + /// `IEXTEN` + const IEXTEN = c::IEXTEN; + } +} + +/// Speeds for use with [`Termios::set_input_speed`] and +/// [`Termios::set_output_speed`]. +/// +/// Unlike in some platforms' libc APIs, these always have the same numerical +/// value as their names; for example, `B50` has the value `50`, and so on. +/// Consequently, it's not necessary to use them. They are provided here +/// because they help identify speeds which are likely to be supported, on +/// platforms which don't support arbitrary speeds. +pub mod speed { + #[cfg(not(bsd))] + use crate::backend::c; + + /// `B0` + pub const B0: u32 = 0; + + /// `B50` + pub const B50: u32 = 50; + + /// `B75` + pub const B75: u32 = 75; + + /// `B110` + pub const B110: u32 = 110; + + /// `B134` + pub const B134: u32 = 134; + + /// `B150` + pub const B150: u32 = 150; + + /// `B200` + pub const B200: u32 = 200; + + /// `B300` + pub const B300: u32 = 300; + + /// `B600` + pub const B600: u32 = 600; + + /// `B1200` + pub const B1200: u32 = 1200; + + /// `B1800` + pub const B1800: u32 = 1800; + + /// `B2400` + pub const B2400: u32 = 2400; + + /// `B4800` + pub const B4800: u32 = 4800; + + /// `B9600` + pub const B9600: u32 = 9600; + + /// `B19200` + #[doc(alias = "EXTA")] + pub const B19200: u32 = 19200; + + /// `B38400` + #[doc(alias = "EXTB")] + pub const B38400: u32 = 38400; + + /// `B57600` + #[cfg(not(target_os = "aix"))] + pub const B57600: u32 = 57600; + + /// `B115200` + #[cfg(not(target_os = "aix"))] + pub const B115200: u32 = 115_200; + + /// `B230400` + #[cfg(not(target_os = "aix"))] + pub const B230400: u32 = 230_400; + + /// `B460800` + #[cfg(not(any( + apple, + target_os = "aix", + target_os = "dragonfly", + target_os = "haiku", + target_os = "openbsd" + )))] + pub const B460800: u32 = 460_800; + + /// `B500000` + #[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))] + pub const B500000: u32 = 500_000; + + /// `B576000` + #[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))] + pub const B576000: u32 = 576_000; + + /// `B921600` + #[cfg(not(any( + apple, + target_os = "aix", + target_os = "dragonfly", + target_os = "haiku", + target_os = "openbsd" + )))] + pub const B921600: u32 = 921_600; + + /// `B1000000` + #[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))] + pub const B1000000: u32 = 1_000_000; + + /// `B1152000` + #[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))] + pub const B1152000: u32 = 1_152_000; + + /// `B1500000` + #[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))] + pub const B1500000: u32 = 1_500_000; + + /// `B2000000` + #[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))] + pub const B2000000: u32 = 2_000_000; + + /// `B2500000` + #[cfg(not(any( + target_arch = "sparc", + target_arch = "sparc64", + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "solaris", + )))] + pub const B2500000: u32 = 2_500_000; + + /// `B3000000` + #[cfg(not(any( + target_arch = "sparc", + target_arch = "sparc64", + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "solaris", + )))] + pub const B3000000: u32 = 3_000_000; + + /// `B3500000` + #[cfg(not(any( + target_arch = "sparc", + target_arch = "sparc64", + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "solaris", + )))] + pub const B3500000: u32 = 3_500_000; + + /// `B4000000` + #[cfg(not(any( + target_arch = "sparc", + target_arch = "sparc64", + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "solaris", + )))] + pub const B4000000: u32 = 4_000_000; + + /// Translate from a `c::speed_t` code to an arbitrary integer speed value + /// `u32`. + #[cfg(not(any(linux_kernel, bsd)))] + pub(crate) const fn decode(encoded_speed: c::speed_t) -> Option { + match encoded_speed { + c::B0 => Some(0), + c::B50 => Some(50), + c::B75 => Some(75), + c::B110 => Some(110), + c::B134 => Some(134), + c::B150 => Some(150), + c::B200 => Some(200), + c::B300 => Some(300), + c::B600 => Some(600), + c::B1200 => Some(1200), + c::B1800 => Some(1800), + c::B2400 => Some(2400), + c::B4800 => Some(4800), + c::B9600 => Some(9600), + c::B19200 => Some(19200), + c::B38400 => Some(38400), + #[cfg(not(target_os = "aix"))] + c::B57600 => Some(57600), + #[cfg(not(target_os = "aix"))] + c::B115200 => Some(115_200), + #[cfg(not(any(target_os = "aix", target_os = "nto")))] + c::B230400 => Some(230_400), + #[cfg(not(any( + apple, + target_os = "aix", + target_os = "dragonfly", + target_os = "haiku", + target_os = "nto", + target_os = "openbsd" + )))] + c::B460800 => Some(460_800), + #[cfg(not(any( + bsd, + solarish, + target_os = "aix", + target_os = "haiku", + target_os = "nto" + )))] + c::B500000 => Some(500_000), + #[cfg(not(any( + bsd, + solarish, + target_os = "aix", + target_os = "haiku", + target_os = "nto" + )))] + c::B576000 => Some(576_000), + #[cfg(not(any( + apple, + target_os = "aix", + target_os = "dragonfly", + target_os = "haiku", + target_os = "nto", + target_os = "openbsd" + )))] + c::B921600 => Some(921_600), + #[cfg(not(any( + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + target_os = "solaris" + )))] + c::B1000000 => Some(1_000_000), + #[cfg(not(any( + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + target_os = "solaris" + )))] + c::B1152000 => Some(1_152_000), + #[cfg(not(any( + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + target_os = "solaris" + )))] + c::B1500000 => Some(1_500_000), + #[cfg(not(any( + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + target_os = "solaris" + )))] + c::B2000000 => Some(2_000_000), + #[cfg(not(any( + target_arch = "sparc", + target_arch = "sparc64", + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + target_os = "solaris", + )))] + c::B2500000 => Some(2_500_000), + #[cfg(not(any( + target_arch = "sparc", + target_arch = "sparc64", + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + target_os = "solaris", + )))] + c::B3000000 => Some(3_000_000), + #[cfg(not(any( + target_arch = "sparc", + target_arch = "sparc64", + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + target_os = "solaris", + )))] + c::B3500000 => Some(3_500_000), + #[cfg(not(any( + target_arch = "sparc", + target_arch = "sparc64", + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + target_os = "solaris", + )))] + c::B4000000 => Some(4_000_000), + _ => None, + } + } + + /// Translate from an arbitrary `u32` arbitrary integer speed value to a + /// `c::speed_t` code. + #[cfg(not(bsd))] + pub(crate) const fn encode(speed: u32) -> Option { + match speed { + 0 => Some(c::B0), + 50 => Some(c::B50), + 75 => Some(c::B75), + 110 => Some(c::B110), + 134 => Some(c::B134), + 150 => Some(c::B150), + 200 => Some(c::B200), + 300 => Some(c::B300), + 600 => Some(c::B600), + 1200 => Some(c::B1200), + 1800 => Some(c::B1800), + 2400 => Some(c::B2400), + 4800 => Some(c::B4800), + 9600 => Some(c::B9600), + 19200 => Some(c::B19200), + 38400 => Some(c::B38400), + #[cfg(not(target_os = "aix"))] + 57600 => Some(c::B57600), + #[cfg(not(target_os = "aix"))] + 115_200 => Some(c::B115200), + #[cfg(not(any(target_os = "aix", target_os = "nto")))] + 230_400 => Some(c::B230400), + #[cfg(not(any( + apple, + target_os = "aix", + target_os = "dragonfly", + target_os = "haiku", + target_os = "nto", + target_os = "openbsd", + )))] + 460_800 => Some(c::B460800), + #[cfg(not(any( + bsd, + solarish, + target_os = "aix", + target_os = "haiku", + target_os = "nto" + )))] + 500_000 => Some(c::B500000), + #[cfg(not(any( + bsd, + solarish, + target_os = "aix", + target_os = "haiku", + target_os = "nto" + )))] + 576_000 => Some(c::B576000), + #[cfg(not(any( + apple, + target_os = "aix", + target_os = "dragonfly", + target_os = "haiku", + target_os = "nto", + target_os = "openbsd" + )))] + 921_600 => Some(c::B921600), + #[cfg(not(any( + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + target_os = "solaris" + )))] + 1_000_000 => Some(c::B1000000), + #[cfg(not(any( + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + target_os = "solaris" + )))] + 1_152_000 => Some(c::B1152000), + #[cfg(not(any( + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + target_os = "solaris" + )))] + 1_500_000 => Some(c::B1500000), + #[cfg(not(any( + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + target_os = "solaris" + )))] + 2_000_000 => Some(c::B2000000), + #[cfg(not(any( + target_arch = "sparc", + target_arch = "sparc64", + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + target_os = "solaris", + )))] + 2_500_000 => Some(c::B2500000), + #[cfg(not(any( + target_arch = "sparc", + target_arch = "sparc64", + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + target_os = "solaris", + )))] + 3_000_000 => Some(c::B3000000), + #[cfg(not(any( + target_arch = "sparc", + target_arch = "sparc64", + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + target_os = "solaris", + )))] + 3_500_000 => Some(c::B3500000), + #[cfg(not(any( + target_arch = "sparc", + target_arch = "sparc64", + bsd, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + target_os = "solaris", + )))] + 4_000_000 => Some(c::B4000000), + _ => None, + } + } +} + +/// An array indexed by [`SpecialCodeIndex`] indicating the current values +/// of various special control codes. +#[repr(transparent)] +#[derive(Clone, Debug)] +pub struct SpecialCodes(pub(crate) [c::cc_t; c::NCCS as usize]); + +impl core::ops::Index for SpecialCodes { + type Output = c::cc_t; + + fn index(&self, index: SpecialCodeIndex) -> &Self::Output { + &self.0[index.0] + } +} + +impl core::ops::IndexMut for SpecialCodes { + fn index_mut(&mut self, index: SpecialCodeIndex) -> &mut Self::Output { + &mut self.0[index.0] + } +} + +/// Indices for use with [`Termios::special_codes`]. +pub struct SpecialCodeIndex(usize); + +#[rustfmt::skip] +impl SpecialCodeIndex { + /// `VINTR` + pub const VINTR: Self = Self(c::VINTR as usize); + + /// `VQUIT` + pub const VQUIT: Self = Self(c::VQUIT as usize); + + /// `VERASE` + pub const VERASE: Self = Self(c::VERASE as usize); + + /// `VKILL` + pub const VKILL: Self = Self(c::VKILL as usize); + + /// `VEOF` + pub const VEOF: Self = Self(c::VEOF as usize); + + /// `VTIME` + pub const VTIME: Self = Self(c::VTIME as usize); + + /// `VMIN` + pub const VMIN: Self = Self(c::VMIN as usize); + + /// `VSWTC` + #[cfg(not(any( + bsd, + solarish, + target_os = "aix", + target_os = "haiku", + target_os = "nto", + )))] + pub const VSWTC: Self = Self(c::VSWTC as usize); + + /// `VSTART` + pub const VSTART: Self = Self(c::VSTART as usize); + + /// `VSTOP` + pub const VSTOP: Self = Self(c::VSTOP as usize); + + /// `VSUSP` + pub const VSUSP: Self = Self(c::VSUSP as usize); + + /// `VEOL` + pub const VEOL: Self = Self(c::VEOL as usize); + + /// `VREPRINT` + #[cfg(not(target_os = "haiku"))] + pub const VREPRINT: Self = Self(c::VREPRINT as usize); + + /// `VDISCARD` + #[cfg(not(any(target_os = "aix", target_os = "haiku")))] + pub const VDISCARD: Self = Self(c::VDISCARD as usize); + + /// `VWERASE` + #[cfg(not(any(target_os = "aix", target_os = "haiku")))] + pub const VWERASE: Self = Self(c::VWERASE as usize); + + /// `VLNEXT` + #[cfg(not(target_os = "haiku"))] + pub const VLNEXT: Self = Self(c::VLNEXT as usize); + + /// `VEOL2` + pub const VEOL2: Self = Self(c::VEOL2 as usize); +} + +/// `TCSA*` values for use with [`tcsetattr`]. +/// +/// [`tcsetattr`]: crate::termios::tcsetattr +#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] +#[repr(u32)] +pub enum OptionalActions { + /// `TCSANOW`—Make the change immediately. + #[doc(alias = "TCSANOW")] + Now = c::TCSANOW as u32, + + /// `TCSADRAIN`—Make the change after all output has been transmitted. + #[doc(alias = "TCSADRAIN")] + Drain = c::TCSADRAIN as u32, + + /// `TCSAFLUSH`—Discard any pending input and then make the change + /// after all output has been transmitted. + #[doc(alias = "TCSAFLUSH")] + Flush = c::TCSAFLUSH as u32, +} + +/// `TC*` values for use with [`tcflush`]. +/// +/// [`tcflush`]: crate::termios::tcflush +#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] +#[repr(u32)] +pub enum QueueSelector { + /// `TCIFLUSH`—Flush data received but not read. + #[doc(alias = "TCIFLUSH")] + IFlush = c::TCIFLUSH as u32, + + /// `TCOFLUSH`—Flush data written but not transmitted. + #[doc(alias = "TCOFLUSH")] + OFlush = c::TCOFLUSH as u32, + + /// `TCIOFLUSH`—`IFlush` and `OFlush` combined. + #[doc(alias = "TCIOFLUSH")] + IOFlush = c::TCIOFLUSH as u32, +} + +/// `TC*` values for use with [`tcflow`]. +/// +/// [`tcflow`]: crate::termios::tcflow +#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] +#[repr(u32)] +pub enum Action { + /// `TCOOFF`—Suspend output. + #[doc(alias = "TCOOFF")] + OOff = c::TCOOFF as u32, + + /// `TCOON`—Restart suspended output. + #[doc(alias = "TCOON")] + OOn = c::TCOON as u32, + + /// `TCIOFF`—Transmits a STOP byte. + #[doc(alias = "TCIOFF")] + IOff = c::TCIOFF as u32, + + /// `TCION`—Transmits a START byte. + #[doc(alias = "TCION")] + IOn = c::TCION as u32, +} + +/// `struct winsize` for use with [`tcgetwinsize`]. +/// +/// [`tcgetwinsize`]: crate::termios::tcgetwinsize +#[doc(alias = "winsize")] +pub type Winsize = c::winsize; + +#[test] +fn termios_layouts() { + check_renamed_type!(InputModes, tcflag_t); + check_renamed_type!(OutputModes, tcflag_t); + check_renamed_type!(ControlModes, tcflag_t); + check_renamed_type!(LocalModes, tcflag_t); + + // On platforms with a termios/termios2 split, check `termios`. + #[cfg(linux_raw)] + { + check_renamed_type!(Termios, termios2); + check_renamed_struct_renamed_field!(Termios, termios2, input_modes, c_iflag); + check_renamed_struct_renamed_field!(Termios, termios2, output_modes, c_oflag); + check_renamed_struct_renamed_field!(Termios, termios2, control_modes, c_cflag); + check_renamed_struct_renamed_field!(Termios, termios2, local_modes, c_lflag); + check_renamed_struct_renamed_field!(Termios, termios2, line_discipline, c_line); + check_renamed_struct_renamed_field!(Termios, termios2, special_codes, c_cc); + check_renamed_struct_renamed_field!(Termios, termios2, input_speed, c_ispeed); + check_renamed_struct_renamed_field!(Termios, termios2, output_speed, c_ospeed); + + // We assume that `termios` has the same layout as `termios2` minus the + // `c_ispeed` and `c_ospeed` fields. + check_renamed_struct_renamed_field!(Termios, termios, input_modes, c_iflag); + check_renamed_struct_renamed_field!(Termios, termios, output_modes, c_oflag); + check_renamed_struct_renamed_field!(Termios, termios, control_modes, c_cflag); + check_renamed_struct_renamed_field!(Termios, termios, local_modes, c_lflag); + check_renamed_struct_renamed_field!(Termios, termios, special_codes, c_cc); + + // On everything except PowerPC, `termios` matches `termios2` except for + // the addition of `c_ispeed` and `c_ospeed`. + #[cfg(not(any(target_arch = "powerpc", target_arch = "powerpc64")))] + const_assert_eq!( + memoffset::offset_of!(Termios, input_speed), + core::mem::size_of::() + ); + + // On PowerPC, `termios2` is `termios`. + #[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))] + assert_eq_size!(c::termios2, c::termios); + } + + #[cfg(not(linux_raw))] + { + // On Mips, Sparc, and Android, the libc lacks the ospeed and ispeed + // fields. + #[cfg(all( + not(all( + target_env = "gnu", + any( + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6", + target_arch = "sparc", + target_arch = "sparc64" + ) + )), + not(all(libc, target_os = "android")) + ))] + check_renamed_type!(Termios, termios); + #[cfg(not(all( + not(all( + target_env = "gnu", + any( + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6", + target_arch = "sparc", + target_arch = "sparc64" + ) + )), + not(all(libc, target_os = "android")) + )))] + const_assert!(core::mem::size_of::() >= core::mem::size_of::()); + + check_renamed_struct_renamed_field!(Termios, termios, input_modes, c_iflag); + check_renamed_struct_renamed_field!(Termios, termios, output_modes, c_oflag); + check_renamed_struct_renamed_field!(Termios, termios, control_modes, c_cflag); + check_renamed_struct_renamed_field!(Termios, termios, local_modes, c_lflag); + #[cfg(any( + linux_like, + target_env = "newlib", + target_os = "fuchsia", + target_os = "haiku", + target_os = "redox" + ))] + check_renamed_struct_renamed_field!(Termios, termios, line_discipline, c_line); + check_renamed_struct_renamed_field!(Termios, termios, special_codes, c_cc); + #[cfg(not(any( + linux_kernel, + solarish, + target_os = "emscripten", + target_os = "fuchsia" + )))] + { + check_renamed_struct_renamed_field!(Termios, termios, input_speed, c_ispeed); + check_renamed_struct_renamed_field!(Termios, termios, output_speed, c_ospeed); + } + #[cfg(any(target_env = "musl", target_os = "fuchsia"))] + { + check_renamed_struct_renamed_field!(Termios, termios, input_speed, __c_ispeed); + check_renamed_struct_renamed_field!(Termios, termios, output_speed, __c_ospeed); + } + } + + check_renamed_type!(OptionalActions, c_int); + check_renamed_type!(QueueSelector, c_int); + check_renamed_type!(Action, c_int); +} + +#[test] +#[cfg(not(any( + solarish, + target_os = "emscripten", + target_os = "haiku", + target_os = "redox" +)))] +fn termios_legacy() { + // Check that our doc aliases above are correct. + const_assert_eq!(c::EXTA, c::B19200); + const_assert_eq!(c::EXTB, c::B38400); +} + +#[cfg(bsd)] +#[test] +fn termios_bsd() { + // On BSD platforms we can assume that the `B*` constants have their + // arbitrary integer speed value. Confirm this. + const_assert_eq!(c::B0, 0); + const_assert_eq!(c::B50, 50); + const_assert_eq!(c::B19200, 19200); + const_assert_eq!(c::B38400, 38400); +} + +#[test] +#[cfg(not(bsd))] +fn termios_speed_encoding() { + assert_eq!(speed::encode(0), Some(c::B0)); + assert_eq!(speed::encode(50), Some(c::B50)); + assert_eq!(speed::encode(19200), Some(c::B19200)); + assert_eq!(speed::encode(38400), Some(c::B38400)); + assert_eq!(speed::encode(1), None); + assert_eq!(speed::encode(!0), None); + + #[cfg(not(linux_kernel))] + { + assert_eq!(speed::decode(c::B0), Some(0)); + assert_eq!(speed::decode(c::B50), Some(50)); + assert_eq!(speed::decode(c::B19200), Some(19200)); + assert_eq!(speed::decode(c::B38400), Some(38400)); + } +} + +#[cfg(linux_kernel)] +#[test] +fn termios_ioctl_contiguity() { + // When using `termios2`, we assume that we can add the optional actions + // value to the ioctl request code. Test this assumption. + + const_assert_eq!(c::TCSETS2, c::TCSETS2 + 0); + const_assert_eq!(c::TCSETSW2, c::TCSETS2 + 1); + const_assert_eq!(c::TCSETSF2, c::TCSETS2 + 2); + + const_assert_eq!(c::TCSANOW - c::TCSANOW, 0); + const_assert_eq!(c::TCSADRAIN - c::TCSANOW, 1); + const_assert_eq!(c::TCSAFLUSH - c::TCSANOW, 2); + + // MIPS is different here. + #[cfg(any( + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6" + ))] + { + assert_eq!(i128::from(c::TCSANOW) - i128::from(c::TCSETS), 0); + assert_eq!(i128::from(c::TCSADRAIN) - i128::from(c::TCSETS), 1); + assert_eq!(i128::from(c::TCSAFLUSH) - i128::from(c::TCSETS), 2); + } + #[cfg(not(any( + target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6" + )))] + { + const_assert_eq!(c::TCSANOW, 0); + const_assert_eq!(c::TCSADRAIN, 1); + const_assert_eq!(c::TCSAFLUSH, 2); + } +} + +#[cfg(linux_kernel)] +#[test] +fn termios_cibaud() { + // Test an assumption. + const_assert_eq!(c::CIBAUD, c::CBAUD << c::IBSHIFT); +} diff -Nru temporalio-1.3.0/vendor/rustix/src/thread/clock.rs temporalio-1.3.0/vendor/rustix/src/thread/clock.rs --- temporalio-1.3.0/vendor/rustix/src/thread/clock.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/thread/clock.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,17 +1,17 @@ use crate::{backend, io}; -pub use backend::time::types::Timespec; +pub use crate::timespec::Timespec; #[cfg(not(any( apple, target_os = "dragonfly", - target_os = "emscripten", + target_os = "espidf", target_os = "freebsd", // FreeBSD 12 has clock_nanosleep, but libc targets FreeBSD 11. target_os = "openbsd", target_os = "redox", target_os = "wasi", )))] -pub use backend::time::types::ClockId; +pub use crate::clockid::ClockId; /// `clock_nanosleep(id, 0, request, remain)`—Sleeps for a duration on a /// given clock. @@ -29,6 +29,7 @@ apple, target_os = "dragonfly", target_os = "emscripten", + target_os = "espidf", target_os = "freebsd", // FreeBSD 12 has clock_nanosleep, but libc targets FreeBSD 11. target_os = "haiku", target_os = "openbsd", @@ -56,6 +57,7 @@ apple, target_os = "dragonfly", target_os = "emscripten", + target_os = "espidf", target_os = "freebsd", // FreeBSD 12 has clock_nanosleep, but libc targets FreeBSD 11. target_os = "haiku", target_os = "openbsd", diff -Nru temporalio-1.3.0/vendor/rustix/src/thread/id.rs temporalio-1.3.0/vendor/rustix/src/thread/id.rs --- temporalio-1.3.0/vendor/rustix/src/thread/id.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/thread/id.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,5 @@ -use crate::process::{Gid, Pid, Uid}; +use crate::pid::Pid; +use crate::ugid::{Gid, Uid}; use crate::{backend, io}; /// `gettid()`—Returns the thread ID. @@ -20,7 +21,7 @@ /// /// # Warning /// -/// This is not the setxid you are looking for... POSIX requires xids to be +/// This is not the setxid you are looking for… POSIX requires xids to be /// process granular, but on Linux they are per-thread. Thus, this call only /// changes the xid for the current *thread*, not the entire process even /// though that is in violation of the POSIX standard. @@ -45,7 +46,7 @@ /// /// # Warning /// -/// This is not the setresxid you are looking for... POSIX requires xids to be +/// This is not the setresxid you are looking for… POSIX requires xids to be /// process granular, but on Linux they are per-thread. Thus, this call only /// changes the xid for the current *thread*, not the entire process even /// though that is in violation of the POSIX standard. diff -Nru temporalio-1.3.0/vendor/rustix/src/thread/libcap.rs temporalio-1.3.0/vendor/rustix/src/thread/libcap.rs --- temporalio-1.3.0/vendor/rustix/src/thread/libcap.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/thread/libcap.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,7 @@ use bitflags::bitflags; use core::mem::MaybeUninit; -use crate::process::Pid; +use crate::pid::Pid; use crate::{backend, io}; /// `__user_cap_data_struct` @@ -17,6 +17,8 @@ bitflags! { /// `CAP_*` constants. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct CapabilityFlags: u64 { /// `CAP_CHOWN` const CHOWN = 1 << linux_raw_sys::general::CAP_CHOWN; @@ -145,28 +147,20 @@ unsafe { (data[0].assume_init(), data[1].assume_init()) } }; - { - // TODO: With Rust 1.53, we can use u32::BITS in the shifts. - const BITS: u32 = 32; - let effective = u64::from(data.0.effective) | (u64::from(data.1.effective) << BITS); - let permitted = u64::from(data.0.permitted) | (u64::from(data.1.permitted) << BITS); - let inheritable = u64::from(data.0.inheritable) | (u64::from(data.1.inheritable) << BITS); - - // SAFETY: The kernel returns a partitioned bitset that we just - // combined above. - Ok(CapabilitySets { - effective: unsafe { CapabilityFlags::from_bits_unchecked(effective) }, - permitted: unsafe { CapabilityFlags::from_bits_unchecked(permitted) }, - inheritable: unsafe { CapabilityFlags::from_bits_unchecked(inheritable) }, - }) - } + let effective = u64::from(data.0.effective) | (u64::from(data.1.effective) << u32::BITS); + let permitted = u64::from(data.0.permitted) | (u64::from(data.1.permitted) << u32::BITS); + let inheritable = u64::from(data.0.inheritable) | (u64::from(data.1.inheritable) << u32::BITS); + + // The kernel returns a partitioned bitset that we just combined above. + Ok(CapabilitySets { + effective: CapabilityFlags::from_bits_retain(effective), + permitted: CapabilityFlags::from_bits_retain(permitted), + inheritable: CapabilityFlags::from_bits_retain(inheritable), + }) } #[inline] fn capset(pid: Option, sets: CapabilitySets) -> io::Result<()> { - // TODO: With Rust 1.53, we can use u32::BITS in the shifts. - const BITS: u32 = 32; - let mut header = linux_raw_sys::general::__user_cap_header_struct { version: linux_raw_sys::general::_LINUX_CAPABILITY_VERSION_3, pid: Pid::as_raw(pid) as backend::c::c_int, @@ -178,9 +172,9 @@ inheritable: sets.inheritable.bits() as u32, }, linux_raw_sys::general::__user_cap_data_struct { - effective: (sets.effective.bits() >> BITS) as u32, - permitted: (sets.permitted.bits() >> BITS) as u32, - inheritable: (sets.inheritable.bits() >> BITS) as u32, + effective: (sets.effective.bits() >> u32::BITS) as u32, + permitted: (sets.permitted.bits() >> u32::BITS) as u32, + inheritable: (sets.inheritable.bits() >> u32::BITS) as u32, }, ]; diff -Nru temporalio-1.3.0/vendor/rustix/src/thread/prctl.rs temporalio-1.3.0/vendor/rustix/src/thread/prctl.rs --- temporalio-1.3.0/vendor/rustix/src/thread/prctl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/thread/prctl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -9,7 +9,6 @@ //! correctly. #![allow(unsafe_code)] -use core::convert::TryFrom; use core::mem::MaybeUninit; use core::num::NonZeroU64; use core::ptr; @@ -19,12 +18,12 @@ use bitflags::bitflags; use crate::backend::c::{c_int, c_uint, c_void}; -use crate::backend::process::syscalls; +use crate::backend::prctl::syscalls; use crate::ffi::{CStr, CString}; use crate::io; -use crate::process::{ - prctl_1arg, prctl_2args, prctl_3args, prctl_get_at_arg2_optional, Pid, - PointerAuthenticationKeys, +use crate::pid::Pid; +use crate::prctl::{ + prctl_1arg, prctl_2args, prctl_3args, prctl_get_at_arg2_optional, PointerAuthenticationKeys, }; use crate::utils::as_ptr; @@ -135,8 +134,8 @@ /// computing mode, then this call will cause a [`Signal::Kill`] signal to be /// sent to the process. If the caller is in filter mode, and this system call /// is allowed by the seccomp filters, it returns -/// [`SecureComputingMode::Filter`]; otherwise, the process is killed with -/// a [`Signal::Kill`] signal. +/// [`SecureComputingMode::Filter`]; otherwise, the process is killed with a +/// [`Signal::Kill`] signal. /// /// Since Linux 3.8, the Seccomp field of the `/proc/[pid]/status` file /// provides a method of obtaining the same information, without the risk that @@ -412,26 +411,30 @@ bitflags! { /// `SECBIT_*`. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct CapabilitiesSecureBits: u32 { - /// If this bit is set, then the kernel does not grant capabilities when - /// a `set-user-ID-root` program is executed, or when a process with an effective or real - /// UID of 0 calls `execve`. + /// If this bit is set, then the kernel does not grant capabilities + /// when a `set-user-ID-root` program is executed, or when a process + /// with an effective or real UID of 0 calls `execve`. const NO_ROOT = 1_u32 << 0; /// Set [`NO_ROOT`] irreversibly. const NO_ROOT_LOCKED = 1_u32 << 1; - /// Setting this flag stops the kernel from adjusting the process's permitted, effective, - /// and ambient capability sets when the thread's effective and filesystem UIDs are switched - /// between zero and nonzero values. + /// Setting this flag stops the kernel from adjusting the process' + /// permitted, effective, and ambient capability sets when the thread's + /// effective and filesystem UIDs are switched between zero and nonzero + /// values. const NO_SETUID_FIXUP = 1_u32 << 2; /// Set [`NO_SETUID_FIXUP`] irreversibly. const NO_SETUID_FIXUP_LOCKED = 1_u32 << 3; - /// Setting this flag allows a thread that has one or more 0 UIDs to retain capabilities in - /// its permitted set when it switches all of its UIDs to nonzero values. + /// Setting this flag allows a thread that has one or more 0 UIDs to + /// retain capabilities in its permitted set when it switches all of + /// its UIDs to nonzero values. const KEEP_CAPS = 1_u32 << 4; /// Set [`KEEP_CAPS`] irreversibly. const KEEP_CAPS_LOCKED = 1_u32 << 5; - /// Setting this flag disallows raising ambient capabilities via the `prctl`'s - /// `PR_CAP_AMBIENT_RAISE` operation. + /// Setting this flag disallows raising ambient capabilities via the + /// `prctl`'s `PR_CAP_AMBIENT_RAISE` operation. const NO_CAP_AMBIENT_RAISE = 1_u32 << 6; /// Set [`NO_CAP_AMBIENT_RAISE`] irreversibly. const NO_CAP_AMBIENT_RAISE_LOCKED = 1_u32 << 7; @@ -733,6 +736,8 @@ bitflags! { /// Zero means addresses that are passed for the purpose of being dereferenced by the kernel must be untagged. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct TaggedAddressMode: u32 { /// Addresses that are passed for the purpose of being dereferenced by the kernel may be tagged. const ENABLED = 1_u32 << 0; diff -Nru temporalio-1.3.0/vendor/rustix/src/thread/setns.rs temporalio-1.3.0/vendor/rustix/src/thread/setns.rs --- temporalio-1.3.0/vendor/rustix/src/thread/setns.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/thread/setns.rs 2023-10-30 19:40:00.000000000 +0000 @@ -11,6 +11,8 @@ bitflags! { /// Thread name space type. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct ThreadNameSpaceType: u32 { /// Time name space. const TIME = CLONE_NEWTIME; @@ -55,13 +57,15 @@ bitflags! { /// `CLONE_*` for use with [`unshare`]. + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct UnshareFlags: u32 { /// `CLONE_FILES`. const FILES = CLONE_FILES; /// `CLONE_FS`. const FS = CLONE_FS; /// `CLONE_NEWCGROUP`. - const NWCGROUP = CLONE_NEWCGROUP; + const NEWCGROUP = CLONE_NEWCGROUP; /// `CLONE_NEWIPC`. const NEWIPC = CLONE_NEWIPC; /// `CLONE_NEWNET`. @@ -74,6 +78,8 @@ const NEWTIME = CLONE_NEWTIME; /// `CLONE_NEWUSER`. const NEWUSER = CLONE_NEWUSER; + /// `CLONE_NEWUTS` + const NEWUTS = CLONE_NEWUTS; /// `CLONE_SYSVSEM`. const SYSVSEM = CLONE_SYSVSEM; } diff -Nru temporalio-1.3.0/vendor/rustix/src/time/clock.rs temporalio-1.3.0/vendor/rustix/src/time/clock.rs --- temporalio-1.3.0/vendor/rustix/src/time/clock.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/time/clock.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,10 @@ use crate::{backend, io}; -pub use backend::time::types::{Nsecs, Secs, Timespec}; +pub use crate::timespec::{Nsecs, Secs, Timespec}; /// `clockid_t` #[cfg(not(target_os = "wasi"))] -pub use backend::time::types::{ClockId, DynamicClockId}; +pub use crate::clockid::{ClockId, DynamicClockId}; /// `clock_getres(id)`—Returns the resolution of a clock. /// diff -Nru temporalio-1.3.0/vendor/rustix/src/timespec.rs temporalio-1.3.0/vendor/rustix/src/timespec.rs --- temporalio-1.3.0/vendor/rustix/src/timespec.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/timespec.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,110 @@ +//! `Timespec` and related types, which are used by multiple public API +//! modules. + +use crate::backend::c; + +/// `struct timespec` +#[cfg(not(fix_y2038))] +pub type Timespec = c::timespec; + +/// `struct timespec` +#[cfg(fix_y2038)] +#[derive(Debug, Clone, Copy)] +#[repr(C)] +pub struct Timespec { + /// Seconds. + pub tv_sec: Secs, + + /// Nanoseconds. Must be less than 1_000_000_000. + pub tv_nsec: Nsecs, +} + +/// A type for the `tv_sec` field of [`Timespec`]. +#[cfg(not(fix_y2038))] +#[allow(deprecated)] +pub type Secs = c::time_t; + +/// A type for the `tv_sec` field of [`Timespec`]. +#[cfg(fix_y2038)] +pub type Secs = i64; + +/// A type for the `tv_nsec` field of [`Timespec`]. +#[cfg(all(libc, target_arch = "x86_64", target_pointer_width = "32"))] +pub type Nsecs = i64; + +/// A type for the `tv_nsec` field of [`Timespec`]. +#[cfg(all(libc, not(all(target_arch = "x86_64", target_pointer_width = "32"))))] +pub type Nsecs = c::c_long; + +/// A type for the `tv_nsec` field of [`Timespec`]. +#[cfg(linux_raw)] +pub type Nsecs = i64; + +/// On 32-bit glibc platforms, `timespec` has anonymous padding fields, which +/// Rust doesn't support yet (see `unnamed_fields`), so we define our own +/// struct with explicit padding, with bidirectional `From` impls. +#[cfg(fix_y2038)] +#[repr(C)] +#[derive(Debug, Clone)] +pub(crate) struct LibcTimespec { + pub(crate) tv_sec: Secs, + + #[cfg(target_endian = "big")] + padding: core::mem::MaybeUninit, + + pub(crate) tv_nsec: Nsecs, + + #[cfg(target_endian = "little")] + padding: core::mem::MaybeUninit, +} + +#[cfg(fix_y2038)] +impl From for Timespec { + #[inline] + fn from(t: LibcTimespec) -> Self { + Self { + tv_sec: t.tv_sec, + tv_nsec: t.tv_nsec, + } + } +} + +#[cfg(fix_y2038)] +impl From for LibcTimespec { + #[inline] + fn from(t: Timespec) -> Self { + Self { + tv_sec: t.tv_sec, + tv_nsec: t.tv_nsec, + padding: core::mem::MaybeUninit::uninit(), + } + } +} + +#[test] +fn test_sizes() { + assert_eq_size!(Secs, u64); + const_assert!(core::mem::size_of::() >= core::mem::size_of::<(u64, u32)>()); + const_assert!(core::mem::size_of::() >= 4); + + let mut t = Timespec { + tv_sec: 0, + tv_nsec: 0, + }; + + // `tv_nsec` needs to be able to hold nanoseconds up to a second. + t.tv_nsec = 999_999_999_u32 as _; + assert_eq!(t.tv_nsec as u64, 999_999_999_u64); + + // `tv_sec` needs to be able to hold more than 32-bits of seconds. + t.tv_sec = 0x1_0000_0000_u64 as _; + assert_eq!(t.tv_sec as u64, 0x1_0000_0000_u64); +} + +// Test that our workarounds are needed. +#[cfg(fix_y2038)] +#[test] +#[allow(deprecated)] +fn test_fix_y2038() { + assert_eq_size!(libc::time_t, u32); +} diff -Nru temporalio-1.3.0/vendor/rustix/src/ugid.rs temporalio-1.3.0/vendor/rustix/src/ugid.rs --- temporalio-1.3.0/vendor/rustix/src/ugid.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/ugid.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,98 @@ +//! User and Group ID types. + +#![allow(unsafe_code)] + +use crate::backend::c; + +/// A group identifier as a raw integer. +#[cfg(not(target_os = "wasi"))] +pub type RawGid = c::gid_t; +/// A user identifier as a raw integer. +#[cfg(not(target_os = "wasi"))] +pub type RawUid = c::uid_t; + +/// `uid_t`—A Unix user ID. +#[repr(transparent)] +#[derive(Copy, Clone, Eq, PartialEq, Debug, Hash)] +pub struct Uid(RawUid); + +/// `gid_t`—A Unix group ID. +#[repr(transparent)] +#[derive(Copy, Clone, Eq, PartialEq, Debug, Hash)] +pub struct Gid(RawGid); + +impl Uid { + /// A `Uid` corresponding to the root user (uid 0). + pub const ROOT: Self = Self(0); + + /// Converts a `RawUid` into a `Uid`. + /// + /// # Safety + /// + /// `raw` must be the value of a valid Unix user ID. + #[inline] + pub const unsafe fn from_raw(raw: RawUid) -> Self { + Self(raw) + } + + /// Converts a `Uid` into a `RawUid`. + #[inline] + pub const fn as_raw(self) -> RawUid { + self.0 + } + + /// Test whether this uid represents the root user (uid 0). + #[inline] + pub const fn is_root(self) -> bool { + self.0 == Self::ROOT.0 + } +} + +impl Gid { + /// A `Gid` corresponding to the root group (gid 0). + pub const ROOT: Self = Self(0); + + /// Converts a `RawGid` into a `Gid`. + /// + /// # Safety + /// + /// `raw` must be the value of a valid Unix group ID. + #[inline] + pub const unsafe fn from_raw(raw: RawGid) -> Self { + Self(raw) + } + + /// Converts a `Gid` into a `RawGid`. + #[inline] + pub const fn as_raw(self) -> RawGid { + self.0 + } + + /// Test whether this gid represents the root group (gid 0). + #[inline] + pub const fn is_root(self) -> bool { + self.0 == Self::ROOT.0 + } +} + +// Return the raw value of the IDs. In case of `None` it returns `!0` since it +// has the same bit pattern as `-1` indicating no change to the owner/group ID. +pub(crate) fn translate_fchown_args(owner: Option, group: Option) -> (RawUid, RawGid) { + let ow = match owner { + Some(o) => o.as_raw(), + None => !0, + }; + + let gr = match group { + Some(g) => g.as_raw(), + None => !0, + }; + + (ow, gr) +} + +#[test] +fn test_sizes() { + assert_eq_size!(RawUid, u32); + assert_eq_size!(RawGid, u32); +} diff -Nru temporalio-1.3.0/vendor/rustix/src/utils.rs temporalio-1.3.0/vendor/rustix/src/utils.rs --- temporalio-1.3.0/vendor/rustix/src/utils.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/utils.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,7 @@ +//! Miscellaneous minor utilities. + #![allow(dead_code)] +#![allow(unused_macros)] use core::ffi::c_void; use core::mem::{align_of, size_of}; @@ -18,7 +21,7 @@ /// Convert an `Option<&T>` into a possibly-null `*const T`. #[inline] -pub(crate) const fn optional_as_ptr(t: Option<&T>) -> *const T { +pub(crate) const fn option_as_ptr(t: Option<&T>) -> *const T { match t { Some(t) => t, None => null(), @@ -27,7 +30,7 @@ /// Convert an `Option<&mut T>` into a possibly-null `*mut T`. #[inline] -pub(crate) fn optional_as_mut_ptr(t: Option<&mut T>) -> *mut T { +pub(crate) fn option_as_mut_ptr(t: Option<&mut T>) -> *mut T { match t { Some(t) => t, None => null_mut(), @@ -46,3 +49,34 @@ NonNull::new(value.cast()) } + +/// Create an array value containing all default values, inferring the type. +#[inline] +pub(crate) fn default_array() -> [T; N] { + [T::default(); N] +} + +/// Create a union value containing a default value in one of its arms. +/// +/// The field names a union field which must have the same size as the union +/// itself. +macro_rules! default_union { + ($union:ident, $field:ident) => {{ + let u = $union { + $field: Default::default(), + }; + + // Assert that the given field initializes the whole union. + #[cfg(test)] + unsafe { + let field_value = u.$field; + assert_eq!( + core::mem::size_of_val(&u), + core::mem::size_of_val(&field_value) + ); + const_assert_eq!(memoffset::offset_of_union!($union, $field), 0); + } + + u + }}; +} diff -Nru temporalio-1.3.0/vendor/rustix/src/weak.rs temporalio-1.3.0/vendor/rustix/src/weak.rs --- temporalio-1.3.0/vendor/rustix/src/weak.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustix/src/weak.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,7 +3,7 @@ // fd0cb0cdc21dd9c06025277d772108f8d42cb25f. // // Ideally we should update to a newer version which doesn't need `dlsym`, -// however that depends on the `extern_weak` feature which is currrently +// however that depends on the `extern_weak` feature which is currently // unstable. #![cfg_attr(linux_raw, allow(unsafe_code))] @@ -112,12 +112,35 @@ } } +// To avoid having the `linux_raw` backend depend on the libc crate, just +// declare the few things we need in a module called `libc` so that `fetch` +// uses it. +#[cfg(linux_raw)] +mod libc { + use core::ptr; + use linux_raw_sys::ctypes::{c_char, c_void}; + + #[cfg(all(target_os = "android", target_pointer_width = "32"))] + pub(super) const RTLD_DEFAULT: *mut c_void = -1isize as *mut c_void; + #[cfg(not(all(target_os = "android", target_pointer_width = "32")))] + pub(super) const RTLD_DEFAULT: *mut c_void = ptr::null_mut(); + + extern "C" { + pub(super) fn dlsym(handle: *mut c_void, symbol: *const c_char) -> *mut c_void; + } + + #[test] + fn test_abi() { + assert_eq!(self::RTLD_DEFAULT, ::libc::RTLD_DEFAULT); + } +} + unsafe fn fetch(name: &str) -> *mut c_void { let name = match CStr::from_bytes_with_nul(name.as_bytes()) { Ok(c_str) => c_str, Err(..) => return null_mut(), }; - libc::dlsym(libc::RTLD_DEFAULT, name.as_ptr()) + libc::dlsym(libc::RTLD_DEFAULT, name.as_ptr().cast()) } #[cfg(not(linux_kernel))] @@ -161,23 +184,52 @@ // Pass `BorrowedFd` values as the integer value. impl AsSyscallArg for $crate::fd::BorrowedFd<'_> { - type SyscallArgType = c::c_long; + type SyscallArgType = ::libc::c_long; fn into_syscall_arg(self) -> Self::SyscallArgType { $crate::fd::AsRawFd::as_raw_fd(&self) as _ } } // Coerce integer values into `c_long`. + impl AsSyscallArg for i8 { + type SyscallArgType = ::libc::c_long; + fn into_syscall_arg(self) -> Self::SyscallArgType { self as _ } + } + impl AsSyscallArg for u8 { + type SyscallArgType = ::libc::c_long; + fn into_syscall_arg(self) -> Self::SyscallArgType { self as _ } + } + impl AsSyscallArg for i16 { + type SyscallArgType = ::libc::c_long; + fn into_syscall_arg(self) -> Self::SyscallArgType { self as _ } + } + impl AsSyscallArg for u16 { + type SyscallArgType = ::libc::c_long; + fn into_syscall_arg(self) -> Self::SyscallArgType { self as _ } + } impl AsSyscallArg for i32 { - type SyscallArgType = c::c_long; + type SyscallArgType = ::libc::c_long; fn into_syscall_arg(self) -> Self::SyscallArgType { self as _ } } impl AsSyscallArg for u32 { - type SyscallArgType = c::c_long; + type SyscallArgType = ::libc::c_long; fn into_syscall_arg(self) -> Self::SyscallArgType { self as _ } } impl AsSyscallArg for usize { - type SyscallArgType = c::c_long; + type SyscallArgType = ::libc::c_long; + fn into_syscall_arg(self) -> Self::SyscallArgType { self as _ } + } + + // On 64-bit platforms, also coerce `i64` and `u64` since `c_long` + // is 64-bit and can hold those values. + #[cfg(target_pointer_width = "64")] + impl AsSyscallArg for i64 { + type SyscallArgType = ::libc::c_long; + fn into_syscall_arg(self) -> Self::SyscallArgType { self as _ } + } + #[cfg(target_pointer_width = "64")] + impl AsSyscallArg for u64 { + type SyscallArgType = ::libc::c_long; fn into_syscall_arg(self) -> Self::SyscallArgType { self as _ } } diff -Nru temporalio-1.3.0/vendor/rustls/.cargo-checksum.json temporalio-1.3.0/vendor/rustls/.cargo-checksum.json --- temporalio-1.3.0/vendor/rustls/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.lock":"43b46217dd12db30bbec6143ca5b926fe47550fc8a02ded0cde8810cfda04ba0","Cargo.toml":"88916ab860cc5f7e0bbe10ff7cbd6bea9a224d9240e463543f8b0a4e26f55c4c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-ISC":"7cfafc877eccc46c0e346ccbaa5c51bb6b894d2b818e617d970211e232785ad4","LICENSE-MIT":"709e3175b4212f7b13aa93971c9f62ff8c69ec45ad8c6532a7e0c41d7a7d6f8c","README.md":"722eb7b4f38248794232e70da3a0099070fbf694b29a01eff7e24f59122e4beb","benches/benchmarks.rs":"2fd0c1535ba25d700318a8a032a7b646b8c426867f0dbb993b3d450f42995956","build.rs":"83af94fa10c4be7653b2b69e1a4656239ecf6fbdfc225341f10e1ec7121b383e","examples/internal/bench.rs":"5733637ad4c1bb5d8690471a6b1434167ed28919fab260a8bbcf85c4a1c433fa","examples/internal/bogo_shim.rs":"aaa5a56465753241a86f0f314ae8349619e6b4d67a1c55808164101879f0d302","src/anchors.rs":"9c7bc40a809a2c0d1c0774d6167837e69fbc0ac04b8afb487ead420d1d9aa0b3","src/bs_debug.rs":"6a209655cea0ced94f4fc6341bf654a05ca1aa162c67361b3b2c8e28d179b156","src/builder.rs":"d017e40f1fc28e802ee7c7a7b6b1d513f3fca712a05223f24defe62dfe8b95ac","src/check.rs":"a22af9344a7b884c271370625f0498de6f99521348ab87e9c1184d993bea1b30","src/cipher.rs":"b98ae327ad0e957587d59fb6e1888a66dc5e2e1e33d20cca267e3a4d24010986","src/client/builder.rs":"70459194f786ced200586bc04d871b23f09c385d8c32ee463e24ed57c37682b9","src/client/client_conn.rs":"5f63ecee0826cce80e719cd82bfb6b13d7eed8d6b2ee4dbdb231199fd912ccac","src/client/common.rs":"c03ceb060bb3e157f1615722321bc4f3956f406b65a4a619c7cefe5ee87cec70","src/client/handy.rs":"6c578a5927efb77134a03cee331f369bc9de42f24850b2a2595e4ec7f577e193","src/client/hs.rs":"8af4b40182b9da856ccab8cab38095fec4dfe54094454048bb332d01ecadae95","src/client/tls12.rs":"dba12d36bd07a4b3b0881f7c5d40537ad18445880305eefac083c0a3a8a0fc72","src/client/tls13.rs":"5dbcea41341b1c3e9a02d5b9e568d58d20a271b7906df428d4bb8d6c8c1ef3f6","src/common_state.rs":"0a07a75871d967f34cb85c496ccc90dc726e7c40de289b6c34e1230f722f6831","src/conn.rs":"5b26a6d0498898b4f8e2bf04726f0318077a68b7bf559eb4c6a917757aa34c76","src/dns_name.rs":"de1da7a79e454f76ee434984213217a335dfa725def7bcdb0c479d0cbd43c29d","src/enums.rs":"c8ce03d80d080fc7c00dc1b4a4714efcbae7ac3db659bf1e0c3dc5516cfca839","src/error.rs":"728e9b4c85849229f4ade35037d5b94a4870bb998f29c0f1692f99f03b37ac18","src/hash_hs.rs":"4adfdc3caadf97dfa49c33cede24f92e0a51e9dd4e56f7bc78c5c48f1e4fe1da","src/key.rs":"ec9242bead53ea83e48c7e8a62b82c9c67660674c846d94325dc37eb788e5d11","src/key_log.rs":"781a86f2e9e07d82288f3c130ce3cfe36f3c17743c28bd5d8036d7b5afa1d5f7","src/key_log_file.rs":"d9f68aa1d30af89e22986ac9e0b3d619e511ae254d12600cf0f22865592ed889","src/kx.rs":"7e77f5f0942a9b017b5ef2f844a37eb9cfd526bd3df260a523b6868b08d42ab0","src/lib.rs":"6d3b4a32755337e9c5f6642060480c3a846f8096c5318584fae935e56cc11070","src/limited_cache.rs":"38b045abde34c532d8cbf7d781b33b4ca87d5ec7233933071f651f90bd90f474","src/manual/defaults.rs":"d4d44d094c8dee1e595988674c1f7e19c3d73ae51b8c7aa9921fd8a1a33ad015","src/manual/features.rs":"5aef65271e980cef6ab3be21cd2bfcf18eb4fcb8e7bca1c46788d4fdbd951a22","src/manual/howto.rs":"cded032780c8f7eb48620bf9bfd5f02482f720da9146b2c87c6e4d926d29234a","src/manual/implvulns.rs":"d023ad1183f57bc9bfa20f1fa3c5048f4378548cbb23cbe5bf238fcba598a1ef","src/manual/mod.rs":"8348373cb7d6f21da000ceeba4e39f79e2e81a3a8d01841847d8e54e3a7b6dba","src/manual/tlsvulns.rs":"e9b756bbc9c880a1c754365f361cfc334bfcbc0d457b4c7e50147a0ca181d686","src/msgs/alert.rs":"41f96e4bcb061e4c6eff6cd814b259c2778006c523155f5875eba55abdaf858b","src/msgs/base.rs":"f85c33ab3c24eff00f3496c752ba00af0ae8bc9808362d99244485a3a2164f6b","src/msgs/ccs.rs":"29fc4288688c99699a4b879aff908d8aef704a1de36b8cf1dcef571168bd32dd","src/msgs/codec.rs":"5e562c282623416d6b6bdf63e4d253780c0c6c0a2209cb341c1c74e0832b7402","src/msgs/deframer.rs":"0b5660157b3d6f71704df86ecbaa5dba8985dd590b69daba0bf81d24fe4b72ee","src/msgs/enums.rs":"d4c7614bb6683ef9c0f0401bcb76824021dafc6906cde73e496a38ed280bb4f3","src/msgs/fragmenter.rs":"e820d8e7f33f411d8cbd2ca57e1eed6aca828b83da8877f2d9660ed7634a6819","src/msgs/handshake-test.1.bin":"dfc0687f3b9902e7a0dfd2ebf59d73745b23b103e1d2b337ff555dfe42c5d1dd","src/msgs/handshake.rs":"9b9c574fbd779d90fc50d4abec62105045e01e5393fdd723e3bdf7861037712f","src/msgs/handshake_test.rs":"19ba44038446303938572103a560dd98c23a288044bdef34d225516a23cf08d0","src/msgs/hello-api.devicecheck.apple.com.bin":"2bc3d61745598bf03d412fbcf482152d6810f674f6f6e7dab4fca90b71797c93","src/msgs/macros.rs":"c273ea05c5d31933b03dc1411a8fc2534dee5026f8c7d211e683b7bd49848367","src/msgs/message.rs":"3334d82edb38f65e674bf9d8a7c7da50c06fbd832a2921571de1bc79c409c825","src/msgs/message_test.rs":"379fcb0b8e2aba4c55a40c641965149e7803b00c609b549a88523bc38004ca17","src/msgs/mod.rs":"278efbfe4cf25557d495f48f457e504a4ad70998cd7f435f90fe8be2b74eca53","src/msgs/persist.rs":"ec825deae9529d8aaf763f376b611cd1710f1aac9fe4f2ebb257097561345cad","src/quic.rs":"d07c084e19187bdc1428da1f6f7acb65880823abf68b92036bafd201360aa170","src/rand.rs":"a573eff543d11f5a9009dc7929d426e7e87a5680bd03beb86666588b3301dd88","src/record_layer.rs":"451e2f82ce0242597876fd8a642519e607c28d0a0fb48f324709970dca184a84","src/server/builder.rs":"c1b3e51856190e092b902f28053bc7e3fba14e82e9f7abe5eb136f8f4eb6b7ac","src/server/common.rs":"41d15562492bbe402960fac598f5c9f48702bb18c6038b3649eb398f620b5e89","src/server/handy.rs":"499be48e074e9e3d72fd5bf0df0b15552bc5e7a89f83de9cd1fb224e191badee","src/server/hs.rs":"95ece66642b0f0fbbf8c9b6c0a19e63f5230da48e7897b8c7a0529e4a7febd70","src/server/server_conn.rs":"8b54ca26b011cb36686865686ad6d91e054571248c0a5f8d4c4039bf5651a435","src/server/tls12.rs":"8c11a4066214f64944c09067f4887b55aded6569bce9ec75c6a5a9d6204a234f","src/server/tls13.rs":"83a5578b67cc9c7b86050b894ba1038ac08eb6027a08a1875df92070a8aa6096","src/sign.rs":"f550a7df5716f4ccef7149c88f11eeec8719f0947de73072fdad191686e842ac","src/stream.rs":"57b86f568c8f479e59c3f5d1bac94308290aa7a8e61ff6e5dc82b047ad7aac83","src/suites.rs":"76c2b1804a02493e495986a238d3b74d704eaf791eb544f3968c210b87833181","src/testdata/cert-arstechnica.0.der":"46aabc708067403be19c801e364b3d74d142fa34f0d236bd5ebb78b6ea92ee09","src/testdata/cert-arstechnica.1.der":"f55f9ffcb83c73453261601c7e044db15a0f034b93c05830f28635ef889cf670","src/testdata/cert-arstechnica.2.der":"87dcd4dc74640a322cd205552506d1be64f12596258096544986b4850bc72706","src/testdata/cert-arstechnica.3.der":"28689b30e4c306aab53b027b29e36ad6dd1dcf4b953994482ca84bdc1ecac996","src/testdata/cert-duckduckgo.0.der":"a5d67800ebb234db3814a0fa562d57ddc6f3d55fe999012d67ccce96eedec9d5","src/testdata/cert-duckduckgo.1.der":"52274c57ce4dee3b49db7a7ff708c040f771898b3be88725a86fb4430182fe14","src/testdata/cert-github.0.der":"0ae384bfd4dde9d13e50c5857c05a442c93f8e01445ee4b34540d22bd1e37f1b","src/testdata/cert-github.1.der":"74eab573da7db195097be0e90f334934c7a4c89e8083759db4333a00edd243d9","src/testdata/cert-google.0.der":"41204cc6d81b76f1ec47cc3ec42dd8beca364cfc3d60eef23426aba6d2fb527f","src/testdata/cert-google.1.der":"23ecb03eec17338c4e33a6b48a41dc3cda12281bbc3ff813c0589d6cc2387522","src/testdata/cert-google.2.der":"3ee0278df71fa3c125c4cd487f01d774694e6fc57e0cd94c24efd769133918e5","src/testdata/cert-hn.0.der":"34556ed249da9c079c6ab4394a7ec0faeb58802ade1131a21952655e2f9c601e","src/testdata/cert-hn.1.der":"52274c57ce4dee3b49db7a7ff708c040f771898b3be88725a86fb4430182fe14","src/testdata/cert-reddit.0.der":"c6691fc719fb3afe21ee36ff30c34270a26bec774cde6c5359de960b95efb542","src/testdata/cert-reddit.1.der":"52274c57ce4dee3b49db7a7ff708c040f771898b3be88725a86fb4430182fe14","src/testdata/cert-rustlang.0.der":"8b9884fd898113bcc1158665b8799dcc916b0439154bdb1fb1a34aac90f70740","src/testdata/cert-rustlang.1.der":"f55f9ffcb83c73453261601c7e044db15a0f034b93c05830f28635ef889cf670","src/testdata/cert-rustlang.2.der":"87dcd4dc74640a322cd205552506d1be64f12596258096544986b4850bc72706","src/testdata/cert-rustlang.3.der":"28689b30e4c306aab53b027b29e36ad6dd1dcf4b953994482ca84bdc1ecac996","src/testdata/cert-servo.0.der":"eb197f28ce58d8d0fa3d92e2e2d7be5b98de354410aa66ddd3016e3f24a7250a","src/testdata/cert-servo.1.der":"3abbe63daf756c5016b6b85f52015fd8e8acbe277c5087b127a60563a841ed8a","src/testdata/cert-stackoverflow.0.der":"f4abeb331e28cceb20da7fc18ca95590c0ed1f4e63f52b637b23b9bc06665e64","src/testdata/cert-stackoverflow.1.der":"67add1166b020ae61b8f5fc96813c04c2aa589960796865572a3c7e737613dfd","src/testdata/cert-stackoverflow.2.der":"6d99fb265eb1c5b3744765fcbc648f3cd8e1bffafdc4c2f99b9d47cf7ff1c24f","src/testdata/cert-twitter.0.der":"fe7c6283d9f01487f3637a9d3f51dbe89c12ae6a8ba072bb39392045d403c770","src/testdata/cert-twitter.1.der":"25768713d3b459f9382d2a594f85f34709fd2a8930731542a4146ffb246bec69","src/testdata/cert-wapo.0.der":"babb936bd25e338826c345561b93f8acf15c643a7d6ef07a2168bcc10ad99bb3","src/testdata/cert-wapo.1.der":"75c5b3f01fd1f51a2c447ab7c785d72e69fa9c472c08571e7eadf3b8eabae70c","src/testdata/cert-wikipedia.0.der":"570a5629103e749596336c7ba750d385ed124db5ddbdd6461546500fe81653f2","src/testdata/cert-wikipedia.1.der":"f7a9a1b2fd964a3f2670bd668d561fb7c55d3aa9ab8391e7e169702db8a3dbcf","src/testdata/deframer-empty-applicationdata.bin":"b86ffa54a7c45e93a27d6255cb5037a3d51c6714077883601f06b619892aa0bb","src/testdata/deframer-invalid-contenttype.bin":"5b7e3b73fd67dcd7de3853ba6c1bdc91d5c46936845520744d610254b68b4826","src/testdata/deframer-invalid-empty.bin":"1d4a7cb76d38591ca1d062056e6bb4e409097663d2bf4866e91094e4e317a7a3","src/testdata/deframer-invalid-length.bin":"400f1998d0f76b4e40c030508e779dfbcb3e3359b79704737c9cf36f67221b8b","src/testdata/deframer-invalid-version.bin":"7e9f00a1ada82bbd42c3482e7d0245f657beeaaa2d297342d3a8fbeb58db5ebe","src/testdata/deframer-test.1.bin":"33e15a17ebdee1f2c2c7918f114791492058df12c8c9fc497876ff9d6f7ebb55","src/testdata/deframer-test.2.bin":"a850ca71fdd1cb5a26324bd204d7179aa320ac5324e2b02d1499c87bc8f9689e","src/testdata/eddsakey.der":"606bc208c72f30d11ce19e3d2b93365f6d3e12ccaf87055589f349f390c26a03","src/testdata/nistp256key.der":"02147f779ac9234e561753715383cff4339d142a674a456071b40a63f657673a","src/testdata/nistp256key.pkcs8.der":"8ac0d1f37d827866d4396497b4016c1cdadfb740248bfe1eea24f73a9f1d4d86","src/testdata/nistp384key.der":"ed67accafd2fc24881f9200fd438c10ddd586f9a7d672981c42eb5f7f17abfeb","src/testdata/nistp384key.pkcs8.der":"469e695487cc8aaf5109907b1d201be54f0ee768ce8c0e90b9d63bde98a27980","src/testdata/prf-result.1.bin":"ba86827dfe61b8dd2037e4e8f094d15f1bb574850ae205c8b412814f8ec1284e","src/testdata/prf-result.2.bin":"b46941b6e44dfe3e6b49fef860bc976b1cd6f8829d784991928f1b7ba119716f","src/testdata/rsa2048key.pkcs1.der":"1ba5d98f8477176468664b7b2120566dc3b7e955119cba6c56f7a19a31267bcb","src/testdata/rsa2048key.pkcs8.der":"2e2a42e8e9bfed26a7836244a89cd5fc440b612ae08655b21c8e4b126440d873","src/ticketer.rs":"93c8ed2256ad1520eb8fad01f427e2f811f44efa88cc4ace63e0fe46859bfab0","src/tls12/cipher.rs":"34da69091e5729e12547ba157aba9262c70589b091515f8069fd3885e4d4d11f","src/tls12/mod.rs":"d4c943087252a7dd63463cfc4045bd237d649ba32a1bf492389e5c291e606174","src/tls12/prf.rs":"355f41b9f1e2f423b8b4e9912338f260036c7a97c5ee04d70922234726e91d1d","src/tls13/key_schedule.rs":"69289a057852db7dcb43427b329473adfee6ac9e4cba6f434defb95eb52c823d","src/tls13/mod.rs":"3a17b6a17847d972c385c9edfedace01c7374d5d9399f93b6498a45f29bff339","src/vecbuf.rs":"af52479b29390779d77f59a9f5b60863988ab1610d33a4b87a577f1934d478f6","src/verify.rs":"7c5be8a41c84e10cf28b47fa6af70d6e0a7eb7b83a83a0af2973453db276b12f","src/verifybench.rs":"c9eb1cce34744beb4d4a1b17288b323a2ad132396b6f5306759477c21d59cb09","src/versions.rs":"e1aa0ff42f0026b11450d03cf82dae70b9507447165ca8a30988ebd0b19b0a1e","src/x509.rs":"99230c9042731f4be98a7d07a89229dd675840aed30165e6dc8b191949b71079","tests/api.rs":"fa3db426349721fa3aca07f64bfd4aa2d5a5ec52edb8a77d2ff344198d9d9f90","tests/bogo.rs":"34b9ce193d93b69a40ec3c529b3a225f2de40fc666f69c26df483fca453f0dd6","tests/client_cert_verifier.rs":"8a3df319c7e44922553abee3cdfc67ccf6647d8643e397150744ea7ba08c455a","tests/common/mod.rs":"1a19dd7bd932cd6dae6bd61f02bd45725aba026d1f83e389dc7869722771bf20","tests/key_log_file_env.rs":"e2823c2e31c769c0ada203cf4415a8bd3f71176ee60cb00153537d51f2537278","tests/server_cert_verifier.rs":"78fc9542797713304b5a3a5c9644fc0e8856b15a3de191949633ce5b47d81b7a"},"package":"b19faa85ecb5197342b54f987b142fb3e30d0c90da40f80ef4fa9a726e6676ed"} \ No newline at end of file +{"files":{"Cargo.lock":"15901aaf1c07a653d9de91084bfb07d207432d3563b849adac8d8c301c35f773","Cargo.toml":"a7837bc1b27060df2bb509cdeeca2d577438f709c84b0bd29230051311e64e1c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-ISC":"7cfafc877eccc46c0e346ccbaa5c51bb6b894d2b818e617d970211e232785ad4","LICENSE-MIT":"709e3175b4212f7b13aa93971c9f62ff8c69ec45ad8c6532a7e0c41d7a7d6f8c","README.md":"d266ea49e83b7cc6c0e8326fff39eb227fe6cefd851e302a03a8311e16bf37c9","benches/benchmarks.rs":"2fd0c1535ba25d700318a8a032a7b646b8c426867f0dbb993b3d450f42995956","build.rs":"83af94fa10c4be7653b2b69e1a4656239ecf6fbdfc225341f10e1ec7121b383e","examples/internal/bench.rs":"5f6dcfa4ae2926a26f81dabff0e5ad2a6dd01b9eba79bc7d32de6063433821a9","examples/internal/bogo_shim.rs":"e1923dfa779da50a20bef2623073045dfe37cbaadad4cc1529ab65a95a51ac27","src/anchors.rs":"bff9f3d6bae9ebe5247efa2f8528853541642d56cd19794e2f12e902d767941a","src/bs_debug.rs":"6a209655cea0ced94f4fc6341bf654a05ca1aa162c67361b3b2c8e28d179b156","src/builder.rs":"64964e17fa77cb1eaf9f81ac481115f8c26134bb828adde349db786a8083462d","src/check.rs":"a22af9344a7b884c271370625f0498de6f99521348ab87e9c1184d993bea1b30","src/cipher.rs":"b98ae327ad0e957587d59fb6e1888a66dc5e2e1e33d20cca267e3a4d24010986","src/client/builder.rs":"f7d89cb3d1bc966573e213ed08f4abb2e76af63b5d80f767f99afb0670cb40eb","src/client/client_conn.rs":"6c773faca8c92d01690f06f967150aa496fad96d998fe605f79ea4513b7ed936","src/client/common.rs":"c03ceb060bb3e157f1615722321bc4f3956f406b65a4a619c7cefe5ee87cec70","src/client/handy.rs":"6c578a5927efb77134a03cee331f369bc9de42f24850b2a2595e4ec7f577e193","src/client/hs.rs":"2da9e773f5b39b59471ffb8c1a429fa52515f63e40dac32c6ba010ea5751dee2","src/client/tls12.rs":"5ce1295e641deac2579bdfd6dae36da2823063ee8c36fdd8c3a18cc6701ff810","src/client/tls13.rs":"ea2251c8caba27b6af254ae8cb2fe32fb689f70741fd9bf9792935c402bb0199","src/common_state.rs":"0a07a75871d967f34cb85c496ccc90dc726e7c40de289b6c34e1230f722f6831","src/conn.rs":"ac3470327b406c1e67c86a081caef4e32f1bb977ccb6189bb571f1701a823fc8","src/dns_name.rs":"de1da7a79e454f76ee434984213217a335dfa725def7bcdb0c479d0cbd43c29d","src/enums.rs":"c8ce03d80d080fc7c00dc1b4a4714efcbae7ac3db659bf1e0c3dc5516cfca839","src/error.rs":"d41042e72c3b16192131f1dbfed87f7ad8b87dea52986a4960279f4537a92a35","src/hash_hs.rs":"4adfdc3caadf97dfa49c33cede24f92e0a51e9dd4e56f7bc78c5c48f1e4fe1da","src/key.rs":"ec9242bead53ea83e48c7e8a62b82c9c67660674c846d94325dc37eb788e5d11","src/key_log.rs":"781a86f2e9e07d82288f3c130ce3cfe36f3c17743c28bd5d8036d7b5afa1d5f7","src/key_log_file.rs":"d9f68aa1d30af89e22986ac9e0b3d619e511ae254d12600cf0f22865592ed889","src/kx.rs":"386bc27a852325f8c1185527d4eb6d4f41fcdcd66d4d19caf1c7188a3568d860","src/lib.rs":"d844e78e7eab018d0111f0af962d869bbb86728c560b66884b2a018aec0b1d72","src/limited_cache.rs":"38b045abde34c532d8cbf7d781b33b4ca87d5ec7233933071f651f90bd90f474","src/manual/defaults.rs":"d4d44d094c8dee1e595988674c1f7e19c3d73ae51b8c7aa9921fd8a1a33ad015","src/manual/features.rs":"5aef65271e980cef6ab3be21cd2bfcf18eb4fcb8e7bca1c46788d4fdbd951a22","src/manual/howto.rs":"cded032780c8f7eb48620bf9bfd5f02482f720da9146b2c87c6e4d926d29234a","src/manual/implvulns.rs":"d023ad1183f57bc9bfa20f1fa3c5048f4378548cbb23cbe5bf238fcba598a1ef","src/manual/mod.rs":"8348373cb7d6f21da000ceeba4e39f79e2e81a3a8d01841847d8e54e3a7b6dba","src/manual/tlsvulns.rs":"e9b756bbc9c880a1c754365f361cfc334bfcbc0d457b4c7e50147a0ca181d686","src/msgs/alert.rs":"41f96e4bcb061e4c6eff6cd814b259c2778006c523155f5875eba55abdaf858b","src/msgs/base.rs":"f85c33ab3c24eff00f3496c752ba00af0ae8bc9808362d99244485a3a2164f6b","src/msgs/ccs.rs":"29fc4288688c99699a4b879aff908d8aef704a1de36b8cf1dcef571168bd32dd","src/msgs/codec.rs":"5e562c282623416d6b6bdf63e4d253780c0c6c0a2209cb341c1c74e0832b7402","src/msgs/deframer.rs":"0b5660157b3d6f71704df86ecbaa5dba8985dd590b69daba0bf81d24fe4b72ee","src/msgs/enums.rs":"d4c7614bb6683ef9c0f0401bcb76824021dafc6906cde73e496a38ed280bb4f3","src/msgs/fragmenter.rs":"e820d8e7f33f411d8cbd2ca57e1eed6aca828b83da8877f2d9660ed7634a6819","src/msgs/handshake-test.1.bin":"dfc0687f3b9902e7a0dfd2ebf59d73745b23b103e1d2b337ff555dfe42c5d1dd","src/msgs/handshake.rs":"9b9c574fbd779d90fc50d4abec62105045e01e5393fdd723e3bdf7861037712f","src/msgs/handshake_test.rs":"19ba44038446303938572103a560dd98c23a288044bdef34d225516a23cf08d0","src/msgs/hello-api.devicecheck.apple.com.bin":"2bc3d61745598bf03d412fbcf482152d6810f674f6f6e7dab4fca90b71797c93","src/msgs/macros.rs":"c273ea05c5d31933b03dc1411a8fc2534dee5026f8c7d211e683b7bd49848367","src/msgs/message.rs":"3334d82edb38f65e674bf9d8a7c7da50c06fbd832a2921571de1bc79c409c825","src/msgs/message_test.rs":"379fcb0b8e2aba4c55a40c641965149e7803b00c609b549a88523bc38004ca17","src/msgs/mod.rs":"278efbfe4cf25557d495f48f457e504a4ad70998cd7f435f90fe8be2b74eca53","src/msgs/persist.rs":"ec825deae9529d8aaf763f376b611cd1710f1aac9fe4f2ebb257097561345cad","src/quic.rs":"d07c084e19187bdc1428da1f6f7acb65880823abf68b92036bafd201360aa170","src/rand.rs":"a573eff543d11f5a9009dc7929d426e7e87a5680bd03beb86666588b3301dd88","src/record_layer.rs":"451e2f82ce0242597876fd8a642519e607c28d0a0fb48f324709970dca184a84","src/server/builder.rs":"c1b3e51856190e092b902f28053bc7e3fba14e82e9f7abe5eb136f8f4eb6b7ac","src/server/common.rs":"41d15562492bbe402960fac598f5c9f48702bb18c6038b3649eb398f620b5e89","src/server/handy.rs":"499be48e074e9e3d72fd5bf0df0b15552bc5e7a89f83de9cd1fb224e191badee","src/server/hs.rs":"95ece66642b0f0fbbf8c9b6c0a19e63f5230da48e7897b8c7a0529e4a7febd70","src/server/server_conn.rs":"71d7cd1091ada4b2db6fa2d4e1cdecd74650774010aee6431af1eee61660a5d8","src/server/tls12.rs":"8c11a4066214f64944c09067f4887b55aded6569bce9ec75c6a5a9d6204a234f","src/server/tls13.rs":"47553a8b77899f18a902718aac8183e394c4ce5559db1cf2f51b2ac711fcd0ce","src/sign.rs":"c6fa6d0f70874f0cfe9243203d39cceb9918ca93b3c6dcb8abf2b4d76aad554a","src/stream.rs":"57b86f568c8f479e59c3f5d1bac94308290aa7a8e61ff6e5dc82b047ad7aac83","src/suites.rs":"76c2b1804a02493e495986a238d3b74d704eaf791eb544f3968c210b87833181","src/testdata/cert-arstechnica.0.der":"46aabc708067403be19c801e364b3d74d142fa34f0d236bd5ebb78b6ea92ee09","src/testdata/cert-arstechnica.1.der":"f55f9ffcb83c73453261601c7e044db15a0f034b93c05830f28635ef889cf670","src/testdata/cert-arstechnica.2.der":"87dcd4dc74640a322cd205552506d1be64f12596258096544986b4850bc72706","src/testdata/cert-arstechnica.3.der":"28689b30e4c306aab53b027b29e36ad6dd1dcf4b953994482ca84bdc1ecac996","src/testdata/cert-duckduckgo.0.der":"a5d67800ebb234db3814a0fa562d57ddc6f3d55fe999012d67ccce96eedec9d5","src/testdata/cert-duckduckgo.1.der":"52274c57ce4dee3b49db7a7ff708c040f771898b3be88725a86fb4430182fe14","src/testdata/cert-github.0.der":"0ae384bfd4dde9d13e50c5857c05a442c93f8e01445ee4b34540d22bd1e37f1b","src/testdata/cert-github.1.der":"74eab573da7db195097be0e90f334934c7a4c89e8083759db4333a00edd243d9","src/testdata/cert-google.0.der":"41204cc6d81b76f1ec47cc3ec42dd8beca364cfc3d60eef23426aba6d2fb527f","src/testdata/cert-google.1.der":"23ecb03eec17338c4e33a6b48a41dc3cda12281bbc3ff813c0589d6cc2387522","src/testdata/cert-google.2.der":"3ee0278df71fa3c125c4cd487f01d774694e6fc57e0cd94c24efd769133918e5","src/testdata/cert-hn.0.der":"34556ed249da9c079c6ab4394a7ec0faeb58802ade1131a21952655e2f9c601e","src/testdata/cert-hn.1.der":"52274c57ce4dee3b49db7a7ff708c040f771898b3be88725a86fb4430182fe14","src/testdata/cert-reddit.0.der":"c6691fc719fb3afe21ee36ff30c34270a26bec774cde6c5359de960b95efb542","src/testdata/cert-reddit.1.der":"52274c57ce4dee3b49db7a7ff708c040f771898b3be88725a86fb4430182fe14","src/testdata/cert-rustlang.0.der":"8b9884fd898113bcc1158665b8799dcc916b0439154bdb1fb1a34aac90f70740","src/testdata/cert-rustlang.1.der":"f55f9ffcb83c73453261601c7e044db15a0f034b93c05830f28635ef889cf670","src/testdata/cert-rustlang.2.der":"87dcd4dc74640a322cd205552506d1be64f12596258096544986b4850bc72706","src/testdata/cert-rustlang.3.der":"28689b30e4c306aab53b027b29e36ad6dd1dcf4b953994482ca84bdc1ecac996","src/testdata/cert-servo.0.der":"eb197f28ce58d8d0fa3d92e2e2d7be5b98de354410aa66ddd3016e3f24a7250a","src/testdata/cert-servo.1.der":"3abbe63daf756c5016b6b85f52015fd8e8acbe277c5087b127a60563a841ed8a","src/testdata/cert-stackoverflow.0.der":"f4abeb331e28cceb20da7fc18ca95590c0ed1f4e63f52b637b23b9bc06665e64","src/testdata/cert-stackoverflow.1.der":"67add1166b020ae61b8f5fc96813c04c2aa589960796865572a3c7e737613dfd","src/testdata/cert-stackoverflow.2.der":"6d99fb265eb1c5b3744765fcbc648f3cd8e1bffafdc4c2f99b9d47cf7ff1c24f","src/testdata/cert-twitter.0.der":"fe7c6283d9f01487f3637a9d3f51dbe89c12ae6a8ba072bb39392045d403c770","src/testdata/cert-twitter.1.der":"25768713d3b459f9382d2a594f85f34709fd2a8930731542a4146ffb246bec69","src/testdata/cert-wapo.0.der":"babb936bd25e338826c345561b93f8acf15c643a7d6ef07a2168bcc10ad99bb3","src/testdata/cert-wapo.1.der":"75c5b3f01fd1f51a2c447ab7c785d72e69fa9c472c08571e7eadf3b8eabae70c","src/testdata/cert-wikipedia.0.der":"570a5629103e749596336c7ba750d385ed124db5ddbdd6461546500fe81653f2","src/testdata/cert-wikipedia.1.der":"f7a9a1b2fd964a3f2670bd668d561fb7c55d3aa9ab8391e7e169702db8a3dbcf","src/testdata/deframer-empty-applicationdata.bin":"b86ffa54a7c45e93a27d6255cb5037a3d51c6714077883601f06b619892aa0bb","src/testdata/deframer-invalid-contenttype.bin":"5b7e3b73fd67dcd7de3853ba6c1bdc91d5c46936845520744d610254b68b4826","src/testdata/deframer-invalid-empty.bin":"1d4a7cb76d38591ca1d062056e6bb4e409097663d2bf4866e91094e4e317a7a3","src/testdata/deframer-invalid-length.bin":"400f1998d0f76b4e40c030508e779dfbcb3e3359b79704737c9cf36f67221b8b","src/testdata/deframer-invalid-version.bin":"7e9f00a1ada82bbd42c3482e7d0245f657beeaaa2d297342d3a8fbeb58db5ebe","src/testdata/deframer-test.1.bin":"33e15a17ebdee1f2c2c7918f114791492058df12c8c9fc497876ff9d6f7ebb55","src/testdata/deframer-test.2.bin":"a850ca71fdd1cb5a26324bd204d7179aa320ac5324e2b02d1499c87bc8f9689e","src/testdata/eddsakey.der":"606bc208c72f30d11ce19e3d2b93365f6d3e12ccaf87055589f349f390c26a03","src/testdata/nistp256key.der":"02147f779ac9234e561753715383cff4339d142a674a456071b40a63f657673a","src/testdata/nistp256key.pkcs8.der":"8ac0d1f37d827866d4396497b4016c1cdadfb740248bfe1eea24f73a9f1d4d86","src/testdata/nistp384key.der":"ed67accafd2fc24881f9200fd438c10ddd586f9a7d672981c42eb5f7f17abfeb","src/testdata/nistp384key.pkcs8.der":"469e695487cc8aaf5109907b1d201be54f0ee768ce8c0e90b9d63bde98a27980","src/testdata/prf-result.1.bin":"ba86827dfe61b8dd2037e4e8f094d15f1bb574850ae205c8b412814f8ec1284e","src/testdata/prf-result.2.bin":"b46941b6e44dfe3e6b49fef860bc976b1cd6f8829d784991928f1b7ba119716f","src/testdata/rsa2048key.pkcs1.der":"1ba5d98f8477176468664b7b2120566dc3b7e955119cba6c56f7a19a31267bcb","src/testdata/rsa2048key.pkcs8.der":"2e2a42e8e9bfed26a7836244a89cd5fc440b612ae08655b21c8e4b126440d873","src/ticketer.rs":"93c8ed2256ad1520eb8fad01f427e2f811f44efa88cc4ace63e0fe46859bfab0","src/tls12/cipher.rs":"34da69091e5729e12547ba157aba9262c70589b091515f8069fd3885e4d4d11f","src/tls12/mod.rs":"258d7a7c6845f58384733856740932d66ad7e3e88ba72fe03a671bce3d160183","src/tls12/prf.rs":"28703996f07d480aef0a29ad892eb0112b6ac1742fa4eeb5e6b16768e6aa990e","src/tls13/key_schedule.rs":"69289a057852db7dcb43427b329473adfee6ac9e4cba6f434defb95eb52c823d","src/tls13/mod.rs":"3e0ca6f44d79d979f89a0f367a05da7771c301b8923abc2786edb314971dd93d","src/vecbuf.rs":"af52479b29390779d77f59a9f5b60863988ab1610d33a4b87a577f1934d478f6","src/verify.rs":"04bbd5f181b4fa6e0f963f86350baf283c99f086ea9f49964766e6de4af14202","src/verifybench.rs":"a2f46c6cf319a64a66f8928eca08edf2802c07b9166564416d669478454be954","src/versions.rs":"e1aa0ff42f0026b11450d03cf82dae70b9507447165ca8a30988ebd0b19b0a1e","src/x509.rs":"99230c9042731f4be98a7d07a89229dd675840aed30165e6dc8b191949b71079","tests/api.rs":"028827aeb507a2da046413cc166461669826dc92de59ef5fd41af5399dbe13aa","tests/bogo.rs":"34b9ce193d93b69a40ec3c529b3a225f2de40fc666f69c26df483fca453f0dd6","tests/client_cert_verifier.rs":"8a3df319c7e44922553abee3cdfc67ccf6647d8643e397150744ea7ba08c455a","tests/common/mod.rs":"bd8132a83e204eb122ae2e1a7fa23ebf74ba91075de6441a5d5825f5e6066dfd","tests/key_log_file_env.rs":"e2823c2e31c769c0ada203cf4415a8bd3f71176ee60cb00153537d51f2537278","tests/server_cert_verifier.rs":"78fc9542797713304b5a3a5c9644fc0e8856b15a3de191949633ce5b47d81b7a"},"package":"446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/rustls/Cargo.lock temporalio-1.3.0/vendor/rustls/Cargo.lock --- temporalio-1.3.0/vendor/rustls/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -4,18 +4,18 @@ [[package]] name = "aho-corasick" -version = "1.0.2" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] [[package]] name = "base64" -version = "0.21.2" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "bencher" @@ -25,21 +25,24 @@ [[package]] name = "bitflags" -version = "2.3.3" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "cc" -version = "1.0.79" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] [[package]] name = "cfg-if" @@ -62,30 +65,30 @@ [[package]] name = "errno" -version = "0.3.1" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" dependencies = [ - "errno-dragonfly", "libc", "windows-sys", ] [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "getrandom" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ - "cc", + "cfg-if", "libc", + "wasi", ] [[package]] name = "hermit-abi" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "humantime" @@ -95,9 +98,9 @@ [[package]] name = "is-terminal" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24fddda5af7e54bf7da53067d6e802dbcc381d0a8eef629df528e3ebf68755cb" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ "hermit-abi", "rustix", @@ -115,27 +118,27 @@ [[package]] name = "libc" -version = "0.2.147" +version = "0.2.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" [[package]] name = "linux-raw-sys" -version = "0.4.3" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" +checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "once_cell" @@ -145,27 +148,27 @@ [[package]] name = "proc-macro2" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.29" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] [[package]] name = "regex" -version = "1.9.0" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89089e897c013b3deb627116ae56a6955a72b8bed395c9526af31c9fe528b484" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", @@ -175,9 +178,9 @@ [[package]] name = "regex-automata" -version = "0.3.0" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa250384981ea14565685dea16a9ccc4d1c541a13f82b9c168572264d1df8c56" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", @@ -186,9 +189,9 @@ [[package]] name = "regex-syntax" -version = "0.7.3" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab07dc67230e4a4718e70fd5c20055a4334b121f1f9db8fe63ef39ce9b8c846" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "ring" @@ -199,17 +202,31 @@ "cc", "libc", "once_cell", - "spin", - "untrusted", + "spin 0.5.2", + "untrusted 0.7.1", "web-sys", "winapi", ] [[package]] +name = "ring" +version = "0.17.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" +dependencies = [ + "cc", + "getrandom", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys", +] + +[[package]] name = "rustix" -version = "0.38.3" +version = "0.38.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac5ffa1efe7548069688cd7028f32591853cd7b5b756d41bcffd2353e4fc75b4" +checksum = "67ce50cb2e16c2903e30d1cbccfd8387a74b9d4c938b6a4c5ec6cc7556f7a8a0" dependencies = [ "bitflags", "errno", @@ -220,15 +237,15 @@ [[package]] name = "rustls" -version = "0.21.3" +version = "0.21.8" dependencies = [ "base64", "bencher", "env_logger", "log", - "ring", + "ring 0.17.5", "rustls-pemfile", - "rustls-webpki 0.101.0", + "rustls-webpki", "rustversion", "sct", "webpki-roots", @@ -245,29 +262,19 @@ [[package]] name = "rustls-webpki" -version = "0.100.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6207cd5ed3d8dca7816f8f3725513a34609c0c765bf652b8c3cb4cfd87db46b" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "rustls-webpki" -version = "0.101.0" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89efed4bd0af2a8de0feb22ba38030244c93db56112b8aa67d27022286852b1c" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring", - "untrusted", + "ring 0.17.5", + "untrusted 0.9.0", ] [[package]] name = "rustversion" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc31bd9b61a32c31f9650d18add92aa83a49ba979c143eefd27fe7177b05bd5f" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "sct" @@ -275,8 +282,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" dependencies = [ - "ring", - "untrusted", + "ring 0.16.20", + "untrusted 0.7.1", ] [[package]] @@ -286,10 +293,16 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] name = "syn" -version = "2.0.23" +version = "2.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" dependencies = [ "proc-macro2", "quote", @@ -298,18 +311,18 @@ [[package]] name = "termcolor" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" dependencies = [ "winapi-util", ] [[package]] name = "unicode-ident" -version = "1.0.10" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "untrusted" @@ -318,6 +331,18 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] name = "wasm-bindgen" version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -383,12 +408,9 @@ [[package]] name = "webpki-roots" -version = "0.23.1" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" -dependencies = [ - "rustls-webpki 0.100.1", -] +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" [[package]] name = "winapi" @@ -408,9 +430,9 @@ [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -432,9 +454,9 @@ [[package]] name = "windows-targets" -version = "0.48.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -447,42 +469,42 @@ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" diff -Nru temporalio-1.3.0/vendor/rustls/Cargo.toml temporalio-1.3.0/vendor/rustls/Cargo.toml --- temporalio-1.3.0/vendor/rustls/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,9 +11,9 @@ [package] edition = "2021" -rust-version = "1.60" +rust-version = "1.61" name = "rustls" -version = "0.21.3" +version = "0.21.8" build = "build.rs" autobenches = false description = "Rustls is a modern TLS library written in Rust." @@ -55,13 +55,13 @@ optional = true [dependencies.ring] -version = "0.16.20" +version = "0.17" [dependencies.sct] version = "0.7.0" [dependencies.webpki] -version = "0.101.0" +version = "0.101.7" features = [ "alloc", "std", @@ -84,7 +84,7 @@ version = "1.0.3" [dev-dependencies.webpki-roots] -version = "0.23.0" +version = "0.25.0" [build-dependencies.rustversion] version = "1.0.6" diff -Nru temporalio-1.3.0/vendor/rustls/examples/internal/bench.rs temporalio-1.3.0/vendor/rustls/examples/internal/bench.rs --- temporalio-1.3.0/vendor/rustls/examples/internal/bench.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/examples/internal/bench.rs 2023-10-30 19:40:00.000000000 +0000 @@ -348,7 +348,7 @@ .with_root_certificates(root_store); let mut cfg = if clientauth == ClientAuth::Yes { - cfg.with_single_cert( + cfg.with_client_auth_cert( params.key_type.get_client_chain(), params.key_type.get_client_key(), ) diff -Nru temporalio-1.3.0/vendor/rustls/examples/internal/bogo_shim.rs temporalio-1.3.0/vendor/rustls/examples/internal/bogo_shim.rs --- temporalio-1.3.0/vendor/rustls/examples/internal/bogo_shim.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/examples/internal/bogo_shim.rs 2023-10-30 19:40:00.000000000 +0000 @@ -545,7 +545,8 @@ let mut cfg = if !opts.cert_file.is_empty() && !opts.key_file.is_empty() { let cert = load_cert(&opts.cert_file); let key = load_key(&opts.key_file); - cfg.with_single_cert(cert, key).unwrap() + cfg.with_client_auth_cert(cert, key) + .unwrap() } else { cfg.with_no_client_auth() }; diff -Nru temporalio-1.3.0/vendor/rustls/README.md temporalio-1.3.0/vendor/rustls/README.md --- temporalio-1.3.0/vendor/rustls/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -20,72 +20,7 @@ ## Release history -* Release 0.21.3 (2023-07-05) - - Added `with_crls` function to `AllowAnyAuthenticatedClient` and - `AllowAnyAnonymousOrAuthenticatedClient` client certificate verifiers to - support revocation checking of client certificates using certificate - revocation lists (CRLs). - - Exposed `verify_signed_by_trust_anchor` and `verify_server_name` certificate - validation helper functions when using the "dangerous_configuration" - feature. -* Release 0.21.2 (2023-06-14) - - Bump MSRV to 1.60 to track similar change in dependencies. - - Differentiate between unexpected and expected EOF in `Stream` and `OwnedStream`. - - `RootCertStore::add_parsable_certificates` now takes a `&[impl AsRef<[u8]>]`. - - Add QUIC V2 support. -* Release 0.21.1 (2023-05-01) - - Remove `warn`-level logging from code paths that also return a `rustls::Error` with - the same information. - - Bug fix: ensure `ConnectionCommon::complete_io` flushes pending writes. - - Bug fix: correct encoding of acceptable issuer subjects when rustls operates as a server - requesting client authentication. This was a regression introduced in 0.21.0. -* Release 0.21.0 (2023-03-29) - - Support for connecting to peers named with IP addresses. This means - rustls now depends on a fork of webpki - `rustls-webpki` - with a suitably - extended API. - - *Breaking change*: `StoresClientSessions` trait renamed to `ClientSessionStore` and - reworked to allow storage of multiple TLS1.3 tickets and avoid reuse of them. - This is a privacy improvement, see RFC8446 appendix C.4. - - *Breaking change*: the `DistinguishedNames` type alias no longer exists; the public - API now exports a `DistinguishedName` type, and the - `ClientCertVerifier::client_auth_root_subjects()` method now returns a - `&[DistinguishedName]` instead (with the lifetime constrained to the - verifier's). - - *Breaking change*: the `ClientCertVerifier` methods `client_auth_mandatory()` - and `client_auth_root_subjects()` no longer return an `Option`. You can now - use an `Acceptor` to decide whether to accept the connection based on information - from the `ClientHello` (like server name). - - *Breaking change*: rework `rustls::Error` to avoid String usage in - `PeerMisbehavedError`, `PeerIncompatibleError` and certificate errors. - Especially note that custom certificate verifiers should move to use the - new certificate errors. `Error` is now `non_exhaustive`, and so are the - inner enums used in its variants. - - *Breaking change*: replace `webpki::Error` appearing in the public API - in `RootCertStore::add`. - - The number of tickets sent by a TLS1.3 server is now configurable via - `ServerConfig::send_tls13_tickets`. Previously one ticket was sent, now - the default is four. - - *Breaking change*: remove deprecated methods from `Acceptor`. - - *Breaking change*: `AllowAnyAuthenticatedClient` and `AllowAnyAnonymousOrAuthenticatedClient` - `new` functions now return `Self`. A `boxed` function was added to both types to easily acquire - an `Arc`. - - *Breaking change*: `NoClientAuth::new` was renamed to `boxed`. - - *Breaking change*: the QUIC API has changed to provide QUIC-specific `ClientConnection` and - `ServerConnection` types, instead of using an extension trait. - - *Breaking change*: the QUIC `Secrets` constructor was changed to take - a `Side` instead of `bool`. - - *Breaking change*: the `export_keying_material` function on a `Connection` - was changed from returning `Result<(), Error>` to `Result` where - `T: AsMut<[u8]>`. - - *Breaking change*: the `sni_hostname` function on a `Connection` was renamed - to `server_name`. - - *Breaking change*: remove alternative type names deprecated in 0.20.0 (`RSASigningKey` vs. - `RsaSigningKey` etc.) - - *Breaking change*: the client config `session_storage` and `enable_tickets` - fields have been replaced by a more misuse resistant `Resumption` type that - combines the two options. - -See [RELEASE_NOTES.md](RELEASE_NOTES.md) for further change history. +Release history can be found [on GitHub](https://github.com/rustls/rustls/releases). # Documentation Lives here: https://docs.rs/rustls/ @@ -151,11 +86,15 @@ While Rustls itself is platform independent it uses [`ring`](https://crates.io/crates/ring) for implementing the cryptography in TLS. As a result, rustls only runs on platforms -supported by `ring`. At the time of writing this means x86, x86-64, armv7, and -aarch64. For more information see [the supported `ring` CI -targets](https://github.com/briansmith/ring/blob/9cc0d45f4d8521f467bb3a621e74b1535e118188/.github/workflows/ci.yml#L151-L167). +supported by `ring`. At the time of writing, this means 32-bit ARM, Aarch64 (64-bit ARM), +x86, x86-64, LoongArch64, 32-bit & 64-bit Little Endian MIPS, 32-bit PowerPC (Big Endian), +64-bit PowerPC (Big and Little Endian), 64-bit RISC-V, and s390x. We do not presently +support WebAssembly. +For more information, see [the supported `ring` target platforms][ring-target-platforms]. + +Rustls requires Rust 1.61 or later. -Rustls requires Rust 1.60 or later. +[ring-target-platforms]: https://github.com/briansmith/ring/blob/2e8363b433fa3b3962c877d9ed2e9145612f3160/include/ring-core/target.h#L18-L64 # Example code There are two example programs which use diff -Nru temporalio-1.3.0/vendor/rustls/src/anchors.rs temporalio-1.3.0/vendor/rustls/src/anchors.rs --- temporalio-1.3.0/vendor/rustls/src/anchors.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/anchors.rs 2023-10-30 19:40:00.000000000 +0000 @@ -110,11 +110,18 @@ /// Adds all the given TrustAnchors `anchors`. This does not /// fail. + pub fn add_trust_anchors(&mut self, trust_anchors: impl Iterator) { + self.roots.extend(trust_anchors); + } + + /// Adds all the given TrustAnchors `anchors`. This does not + /// fail. + #[deprecated(since = "0.21.6", note = "Please use `add_trust_anchors` instead")] pub fn add_server_trust_anchors( &mut self, trust_anchors: impl Iterator, ) { - self.roots.extend(trust_anchors); + self.add_trust_anchors(trust_anchors); } /// Parse the given DER-encoded certificates and add all that can be parsed diff -Nru temporalio-1.3.0/vendor/rustls/src/builder.rs temporalio-1.3.0/vendor/rustls/src/builder.rs --- temporalio-1.3.0/vendor/rustls/src/builder.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/builder.rs 2023-10-30 19:40:00.000000000 +0000 @@ -58,7 +58,7 @@ /// .with_safe_default_protocol_versions() /// .unwrap() /// .with_root_certificates(root_certs) -/// .with_single_cert(certs, private_key) +/// .with_client_auth_cert(certs, private_key) /// .expect("bad certificate/key"); /// ``` /// diff -Nru temporalio-1.3.0/vendor/rustls/src/client/builder.rs temporalio-1.3.0/vendor/rustls/src/client/builder.rs --- temporalio-1.3.0/vendor/rustls/src/client/builder.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/client/builder.rs 2023-10-30 19:40:00.000000000 +0000 @@ -17,14 +17,14 @@ /// Choose how to verify server certificates. pub fn with_root_certificates( self, - root_store: anchors::RootCertStore, + root_store: impl Into>, ) -> ConfigBuilder { ConfigBuilder { state: WantsTransparencyPolicyOrClientCert { cipher_suites: self.state.cipher_suites, kx_groups: self.state.kx_groups, versions: self.state.versions, - root_store, + root_store: root_store.into(), }, side: PhantomData, } @@ -43,7 +43,7 @@ versions: self.state.versions, verifier, }, - side: PhantomData::default(), + side: PhantomData, } } } @@ -60,7 +60,7 @@ cipher_suites: Vec, kx_groups: Vec<&'static SupportedKxGroup>, versions: versions::EnabledVersions, - root_store: anchors::RootCertStore, + root_store: Arc, } impl ConfigBuilder { @@ -89,13 +89,29 @@ /// `key_der` is a DER-encoded RSA, ECDSA, or Ed25519 private key. /// /// This function fails if `key_der` is invalid. - pub fn with_single_cert( + pub fn with_client_auth_cert( self, cert_chain: Vec, key_der: key::PrivateKey, ) -> Result { self.with_logs(None) - .with_single_cert(cert_chain, key_der) + .with_client_auth_cert(cert_chain, key_der) + } + + /// Sets a single certificate chain and matching private key for use + /// in client authentication. + /// + /// `cert_chain` is a vector of DER-encoded certificates. + /// `key_der` is a DER-encoded RSA, ECDSA, or Ed25519 private key. + /// + /// This function fails if `key_der` is invalid. + #[deprecated(since = "0.21.4", note = "Use `with_client_auth_cert` instead")] + pub fn with_single_cert( + self, + cert_chain: Vec, + key_der: key::PrivateKey, + ) -> Result { + self.with_client_auth_cert(cert_chain, key_der) } /// Do not support client auth. @@ -152,7 +168,7 @@ /// `key_der` is a DER-encoded RSA, ECDSA, or Ed25519 private key. /// /// This function fails if `key_der` is invalid. - pub fn with_single_cert( + pub fn with_client_auth_cert( self, cert_chain: Vec, key_der: key::PrivateKey, @@ -161,6 +177,22 @@ Ok(self.with_client_cert_resolver(Arc::new(resolver))) } + /// Sets a single certificate chain and matching private key for use + /// in client authentication. + /// + /// `cert_chain` is a vector of DER-encoded certificates. + /// `key_der` is a DER-encoded RSA, ECDSA, or Ed25519 private key. + /// + /// This function fails if `key_der` is invalid. + #[deprecated(since = "0.21.4", note = "Use `with_client_auth_cert` instead")] + pub fn with_single_cert( + self, + cert_chain: Vec, + key_der: key::PrivateKey, + ) -> Result { + self.with_client_auth_cert(cert_chain, key_der) + } + /// Do not support client auth. pub fn with_no_client_auth(self) -> ClientConfig { self.with_client_cert_resolver(Arc::new(handy::FailResolveClientCert {})) diff -Nru temporalio-1.3.0/vendor/rustls/src/client/client_conn.rs temporalio-1.3.0/vendor/rustls/src/client/client_conn.rs --- temporalio-1.3.0/vendor/rustls/src/client/client_conn.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/client/client_conn.rs 2023-10-30 19:40:00.000000000 +0000 @@ -106,11 +106,12 @@ fn has_certs(&self) -> bool; } -/// Common configuration for (typically) all connections made by -/// a program. +/// Common configuration for (typically) all connections made by a program. /// -/// Making one of these can be expensive, and should be -/// once per process rather than once per connection. +/// Making one of these is cheap, though one of the inputs may be expensive: gathering trust roots +/// from the operating system to add to the [`RootCertStore`] passed to `with_root_certificates()` +/// (the rustls-native-certs crate is often used for this) may take on the order of a few hundred +/// milliseconds. /// /// These must be created via the [`ClientConfig::builder()`] function. /// @@ -121,6 +122,8 @@ /// ids or tickets, with a max of eight tickets per server. /// * [`ClientConfig::alpn_protocols`]: the default is empty -- no ALPN protocol is negotiated. /// * [`ClientConfig::key_log`]: key material is not logged. +/// +/// [`RootCertStore`]: crate::RootCertStore #[derive(Clone)] pub struct ClientConfig { /// List of ciphersuites, in preference order. diff -Nru temporalio-1.3.0/vendor/rustls/src/client/hs.rs temporalio-1.3.0/vendor/rustls/src/client/hs.rs --- temporalio-1.3.0/vendor/rustls/src/client/hs.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/client/hs.rs 2023-10-30 19:40:00.000000000 +0000 @@ -755,6 +755,28 @@ }); } + // Or does not echo the session_id from our ClientHello: + // + // > the HelloRetryRequest has the same format as a ServerHello message, + // > and the legacy_version, legacy_session_id_echo, cipher_suite, and + // > legacy_compression_method fields have the same meaning + // + // + // and + // + // > A client which receives a legacy_session_id_echo field that does not + // > match what it sent in the ClientHello MUST abort the handshake with an + // > "illegal_parameter" alert. + // + if hrr.session_id != self.next.input.session_id { + return Err({ + cx.common.send_fatal_alert( + AlertDescription::IllegalParameter, + PeerMisbehaved::IllegalHelloRetryRequestWithWrongSessionId, + ) + }); + } + // Or asks us to talk a protocol we didn't offer, or doesn't support HRR at all. match hrr.get_supported_versions() { Some(ProtocolVersion::TLSv1_3) => { diff -Nru temporalio-1.3.0/vendor/rustls/src/client/tls12.rs temporalio-1.3.0/vendor/rustls/src/client/tls12.rs --- temporalio-1.3.0/vendor/rustls/src/client/tls12.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/client/tls12.rs 2023-10-30 19:40:00.000000000 +0000 @@ -980,7 +980,7 @@ impl ExpectFinished { // -- Waiting for their finished -- - fn save_session(&mut self, cx: &mut ClientContext<'_>) { + fn save_session(&mut self, cx: &ClientContext<'_>) { // Save a ticket. If we got a new ticket, save that. Otherwise, save the // original ticket again. let (mut ticket, lifetime) = match self.ticket.take() { diff -Nru temporalio-1.3.0/vendor/rustls/src/client/tls13.rs temporalio-1.3.0/vendor/rustls/src/client/tls13.rs --- temporalio-1.3.0/vendor/rustls/src/client/tls13.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/client/tls13.rs 2023-10-30 19:40:00.000000000 +0000 @@ -148,7 +148,7 @@ }; let key_schedule = our_key_share.complete(&their_key_share.payload.0, |secret| { - Ok(key_schedule_pre_handshake.into_handshake(secret)) + key_schedule_pre_handshake.into_handshake(secret) })?; // Remember what KX group the server liked for next time. @@ -277,7 +277,7 @@ let binder_len = resuming_suite .hash_algorithm() - .output_len; + .output_len(); let binder = vec![0u8; binder_len]; let psk_identity = diff -Nru temporalio-1.3.0/vendor/rustls/src/conn.rs temporalio-1.3.0/vendor/rustls/src/conn.rs --- temporalio-1.3.0/vendor/rustls/src/conn.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/conn.rs 2023-10-30 19:40:00.000000000 +0000 @@ -324,8 +324,8 @@ let common = &mut self.core.common_state; Reader { received_plaintext: &mut common.received_plaintext, - /// Are we done? i.e., have we processed all received messages, and received a - /// close_notify to indicate that no new messages will arrive? + // Are we done? i.e., have we processed all received messages, and received a + // close_notify to indicate that no new messages will arrive? peer_cleanly_closed: common.has_received_close_notify && !self.core.message_deframer.has_pending(), has_seen_eof: common.has_seen_eof, @@ -381,6 +381,7 @@ while self.wants_write() { wrlen += self.write_tls(io)?; } + io.flush()?; if !until_handshaked && wrlen > 0 { return Ok((rdlen, wrlen)); @@ -411,6 +412,7 @@ // try a last-gasp write -- but don't predate the primary // error. let _ignored = self.write_tls(io); + let _ignored = io.flush(); return Err(io::Error::new(io::ErrorKind::InvalidData, e)); } diff -Nru temporalio-1.3.0/vendor/rustls/src/error.rs temporalio-1.3.0/vendor/rustls/src/error.rs --- temporalio-1.3.0/vendor/rustls/src/error.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/error.rs 2023-10-30 19:40:00.000000000 +0000 @@ -183,6 +183,7 @@ IllegalHelloRetryRequestWithUnofferedCipherSuite, IllegalHelloRetryRequestWithUnofferedNamedGroup, IllegalHelloRetryRequestWithUnsupportedVersion, + IllegalHelloRetryRequestWithWrongSessionId, IllegalMiddleboxChangeCipherSpec, IllegalTlsInnerPlaintext, IncorrectBinder, @@ -424,7 +425,7 @@ /// The CRL contained a revoked certificate with an unsupported revocation reason. /// See RFC 5280 Section 5.3.1[^1] for a list of supported revocation reasons. /// - /// [^1]: https://www.rfc-editor.org/rfc/rfc5280#section-5.3.1 + /// [^1]: UnsupportedRevocationReason, } diff -Nru temporalio-1.3.0/vendor/rustls/src/kx.rs temporalio-1.3.0/vendor/rustls/src/kx.rs --- temporalio-1.3.0/vendor/rustls/src/kx.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/kx.rs 2023-10-30 19:40:00.000000000 +0000 @@ -49,14 +49,10 @@ /// /// The shared secret is passed into the closure passed down in `f`, and the result of calling /// `f` is returned to the caller. - pub(crate) fn complete( - self, - peer: &[u8], - f: impl FnOnce(&[u8]) -> Result, - ) -> Result { + pub(crate) fn complete(self, peer: &[u8], f: impl FnOnce(&[u8]) -> T) -> Result { let peer_key = ring::agreement::UnparsedPublicKey::new(self.skxg.agreement_algorithm, peer); - ring::agreement::agree_ephemeral(self.privkey, &peer_key, (), f) - .map_err(|()| PeerMisbehaved::InvalidKeyShare.into()) + ring::agreement::agree_ephemeral(self.privkey, &peer_key, f) + .map_err(|_| PeerMisbehaved::InvalidKeyShare.into()) } } diff -Nru temporalio-1.3.0/vendor/rustls/src/lib.rs temporalio-1.3.0/vendor/rustls/src/lib.rs --- temporalio-1.3.0/vendor/rustls/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -59,11 +59,15 @@ //! While Rustls itself is platform independent it uses //! [`ring`](https://crates.io/crates/ring) for implementing the cryptography in //! TLS. As a result, rustls only runs on platforms -//! supported by `ring`. At the time of writing this means x86, x86-64, armv7, and -//! aarch64. For more information see [the supported `ring` CI -//! targets](https://github.com/briansmith/ring/blob/9cc0d45f4d8521f467bb3a621e74b1535e118188/.github/workflows/ci.yml#L151-L167). +//! supported by `ring`. At the time of writing, this means 32-bit ARM, Aarch64 (64-bit ARM), +//! x86, x86-64, LoongArch64, 32-bit & 64-bit Little Endian MIPS, 32-bit PowerPC (Big Endian), +//! 64-bit PowerPC (Big and Little Endian), 64-bit RISC-V, and s390x. We do not presently +//! support WebAssembly. +//! For more information, see [the supported `ring` target platforms][ring-target-platforms]. //! -//! Rustls requires Rust 1.60 or later. +//! Rustls requires Rust 1.61 or later. +//! +//! [ring-target-platforms]: https://github.com/briansmith/ring/blob/2e8363b433fa3b3962c877d9ed2e9145612f3160/include/ring-core/target.h#L18-L64 //! //! ## Design Overview //! ### Rustls does not take care of network IO @@ -105,9 +109,8 @@ //! //! ```rust,no_run //! let mut root_store = rustls::RootCertStore::empty(); -//! root_store.add_server_trust_anchors( +//! root_store.add_trust_anchors( //! webpki_roots::TLS_SERVER_ROOTS -//! .0 //! .iter() //! .map(|ta| { //! rustls::OwnedTrustAnchor::from_subject_spki_name_constraints( @@ -138,9 +141,8 @@ //! # use webpki; //! # use std::sync::Arc; //! # let mut root_store = rustls::RootCertStore::empty(); -//! # root_store.add_server_trust_anchors( +//! # root_store.add_trust_anchors( //! # webpki_roots::TLS_SERVER_ROOTS -//! # .0 //! # .iter() //! # .map(|ta| { //! # rustls::OwnedTrustAnchor::from_subject_spki_name_constraints( @@ -384,7 +386,10 @@ AlertDescription, CipherSuite, ContentType, HandshakeType, ProtocolVersion, SignatureAlgorithm, SignatureScheme, }; -pub use crate::error::{CertificateError, Error, InvalidMessage, PeerIncompatible, PeerMisbehaved}; +pub use crate::error::{ + CertRevocationListError, CertificateError, Error, InvalidMessage, PeerIncompatible, + PeerMisbehaved, +}; pub use crate::key::{Certificate, PrivateKey}; pub use crate::key_log::{KeyLog, NoKeyLog}; pub use crate::key_log_file::KeyLogFile; diff -Nru temporalio-1.3.0/vendor/rustls/src/server/server_conn.rs temporalio-1.3.0/vendor/rustls/src/server/server_conn.rs --- temporalio-1.3.0/vendor/rustls/src/server/server_conn.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/server/server_conn.rs 2023-10-30 19:40:00.000000000 +0000 @@ -184,8 +184,9 @@ /// Common configuration for a set of server sessions. /// -/// Making one of these can be expensive, and should be -/// once per process rather than once per connection. +/// Making one of these is cheap, though one of the inputs may be expensive: gathering trust roots +/// from the operating system to add to the [`RootCertStore`] passed to a `ClientCertVerifier` +/// builder may take on the order of a few hundred milliseconds. /// /// These must be created via the [`ServerConfig::builder()`] function. /// @@ -196,6 +197,8 @@ /// * [`ServerConfig::alpn_protocols`]: the default is empty -- no ALPN protocol is negotiated. /// * [`ServerConfig::key_log`]: key material is not logged. /// * [`ServerConfig::send_tls13_tickets`]: 4 tickets are sent. +/// +/// [`RootCertStore`]: crate::RootCertStore #[derive(Clone)] pub struct ServerConfig { /// List of ciphersuites, in preference order. @@ -529,7 +532,7 @@ /// // Proceed with handling the ServerConnection. /// } /// # } -//// ``` +/// ``` pub struct Acceptor { inner: Option>, } diff -Nru temporalio-1.3.0/vendor/rustls/src/server/tls13.rs temporalio-1.3.0/vendor/rustls/src/server/tls13.rs --- temporalio-1.3.0/vendor/rustls/src/server/tls13.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/server/tls13.rs 2023-10-30 19:40:00.000000000 +0000 @@ -235,6 +235,7 @@ emit_hello_retry_request( &mut self.transcript, self.suite, + client_hello.session_id, cx.common, group.name, ); @@ -542,7 +543,7 @@ // Do key exchange let key_schedule = kx.complete(&share.payload.0, |secret| { - Ok(key_schedule_pre_handshake.into_handshake(secret)) + key_schedule_pre_handshake.into_handshake(secret) })?; let handshake_hash = transcript.get_current_hash(); @@ -570,12 +571,13 @@ fn emit_hello_retry_request( transcript: &mut HandshakeHash, suite: &'static Tls13CipherSuite, + session_id: SessionId, common: &mut CommonState, group: NamedGroup, ) { let mut req = HelloRetryRequest { legacy_version: ProtocolVersion::TLSv1_2, - session_id: SessionId::empty(), + session_id, cipher_suite: suite.common.suite, extensions: Vec::new(), }; @@ -601,6 +603,7 @@ common.send_msg(m, false); } + #[allow(clippy::needless_pass_by_ref_mut)] // cx only mutated if cfg(feature = "quic") fn decide_if_early_data_allowed( cx: &mut ServerContext<'_>, client_hello: &ClientHelloPayload, diff -Nru temporalio-1.3.0/vendor/rustls/src/sign.rs temporalio-1.3.0/vendor/rustls/src/sign.rs --- temporalio-1.3.0/vendor/rustls/src/sign.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/sign.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,6 +4,7 @@ use crate::x509::{wrap_in_asn1_len, wrap_in_sequence}; use ring::io::der; +use ring::rand::{SecureRandom, SystemRandom}; use ring::signature::{self, EcdsaKeyPair, Ed25519KeyPair, RsaKeyPair}; use std::error::Error as StdError; @@ -67,7 +68,7 @@ /// The end-entity certificate. pub fn end_entity_cert(&self) -> Result<&key::Certificate, SignError> { - self.cert.get(0).ok_or(SignError(())) + self.cert.first().ok_or(SignError(())) } } @@ -188,7 +189,7 @@ impl Signer for RsaSigner { fn sign(&self, message: &[u8]) -> Result, Error> { - let mut sig = vec![0; self.key.public_modulus_len()]; + let mut sig = vec![0; self.key.public().modulus_len()]; let rng = ring::rand::SystemRandom::new(); self.key @@ -227,9 +228,10 @@ scheme: SignatureScheme, sigalg: &'static signature::EcdsaSigningAlgorithm, ) -> Result { - EcdsaKeyPair::from_pkcs8(sigalg, &der.0) + let rng = SystemRandom::new(); + EcdsaKeyPair::from_pkcs8(sigalg, &der.0, &rng) .map_err(|_| ()) - .or_else(|_| Self::convert_sec1_to_pkcs8(scheme, sigalg, &der.0)) + .or_else(|_| Self::convert_sec1_to_pkcs8(scheme, sigalg, &der.0, &rng)) .map(|kp| Self { key: Arc::new(kp), scheme, @@ -243,6 +245,7 @@ scheme: SignatureScheme, sigalg: &'static signature::EcdsaSigningAlgorithm, maybe_sec1_der: &[u8], + rng: &dyn SecureRandom, ) -> Result { let pkcs8_prefix = match scheme { SignatureScheme::ECDSA_NISTP256_SHA256 => &PKCS8_PREFIX_ECDSA_NISTP256, @@ -261,7 +264,7 @@ pkcs8.extend_from_slice(&sec1_wrap); wrap_in_sequence(&mut pkcs8); - EcdsaKeyPair::from_pkcs8(sigalg, &pkcs8).map_err(|_| ()) + EcdsaKeyPair::from_pkcs8(sigalg, &pkcs8, rng).map_err(|_| ()) } } diff -Nru temporalio-1.3.0/vendor/rustls/src/tls12/mod.rs temporalio-1.3.0/vendor/rustls/src/tls12/mod.rs --- temporalio-1.3.0/vendor/rustls/src/tls12/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/tls12/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -171,7 +171,7 @@ } /// Which hash function to use with this suite. - pub fn hash_algorithm(&self) -> &'static ring::digest::Algorithm { + pub(crate) fn hash_algorithm(&self) -> &'static ring::digest::Algorithm { self.hmac_algorithm.digest_algorithm() } } @@ -234,7 +234,6 @@ label.as_bytes(), seed.as_ref(), ); - Ok(()) })?; Ok(ret) @@ -313,8 +312,7 @@ let len = (common.aead_algorithm.key_len() + suite.fixed_iv_len) * 2 + suite.explicit_nonce_len; - let mut out = Vec::new(); - out.resize(len, 0u8); + let mut out = vec![0u8; len]; // NOTE: opposite order to above for no good reason. // Don't design security protocols on drugs, kids. @@ -341,8 +339,7 @@ } fn make_verify_data(&self, handshake_hash: &Digest, label: &[u8]) -> Vec { - let mut out = Vec::new(); - out.resize(12, 0u8); + let mut out = vec![0u8; 12]; prf::prf( &mut out, diff -Nru temporalio-1.3.0/vendor/rustls/src/tls12/prf.rs temporalio-1.3.0/vendor/rustls/src/tls12/prf.rs --- temporalio-1.3.0/vendor/rustls/src/tls12/prf.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/tls12/prf.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ // A(1) let mut current_a = hmac::sign(&hmac_key, seed); - let chunk_size = alg.digest_algorithm().output_len; + let chunk_size = alg.digest_algorithm().output_len(); for chunk in out.chunks_mut(chunk_size) { // P_hash[i] = HMAC_hash(secret, A(i) + seed) let p_term = concat_sign(&hmac_key, current_a.as_ref(), seed); diff -Nru temporalio-1.3.0/vendor/rustls/src/tls13/mod.rs temporalio-1.3.0/vendor/rustls/src/tls13/mod.rs --- temporalio-1.3.0/vendor/rustls/src/tls13/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/tls13/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -76,7 +76,7 @@ impl Tls13CipherSuite { /// Which hash function to use with this suite. - pub fn hash_algorithm(&self) -> &'static ring::digest::Algorithm { + pub(crate) fn hash_algorithm(&self) -> &'static ring::digest::Algorithm { self.hkdf_algorithm .hmac_algorithm() .digest_algorithm() diff -Nru temporalio-1.3.0/vendor/rustls/src/verifybench.rs temporalio-1.3.0/vendor/rustls/src/verifybench.rs --- temporalio-1.3.0/vendor/rustls/src/verifybench.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/verifybench.rs 2023-10-30 19:40:00.000000000 +0000 @@ -187,9 +187,8 @@ impl Context { fn new(name: &'static str, domain: &'static str, certs: &[&'static [u8]]) -> Self { let mut roots = anchors::RootCertStore::empty(); - roots.add_server_trust_anchors( + roots.add_trust_anchors( webpki_roots::TLS_SERVER_ROOTS - .0 .iter() .map(|ta| { OwnedTrustAnchor::from_subject_spki_name_constraints( diff -Nru temporalio-1.3.0/vendor/rustls/src/verify.rs temporalio-1.3.0/vendor/rustls/src/verify.rs --- temporalio-1.3.0/vendor/rustls/src/verify.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/src/verify.rs 2023-10-30 19:40:00.000000000 +0000 @@ -343,11 +343,13 @@ let webpki_now = webpki::Time::try_from(now).map_err(|_| Error::FailedToGetCurrentTime)?; cert.0 - .verify_is_valid_tls_server_cert( + .verify_for_usage( SUPPORTED_SIG_ALGS, - &webpki::TlsServerTrustAnchors(&trust_roots), + &trust_roots, &chain, webpki_now, + webpki::KeyUsage::server_auth(), + &[], // no CRLs ) .map_err(pki_error) .map(|_| ()) @@ -417,7 +419,7 @@ #[allow(unreachable_pub)] #[cfg_attr(docsrs, doc(cfg(feature = "dangerous_configuration")))] pub struct WebPkiVerifier { - roots: RootCertStore, + roots: Arc, ct_policy: Option, } @@ -430,8 +432,14 @@ /// `ct_logs` is the list of logs that are trusted for Certificate /// Transparency. Currently CT log enforcement is opportunistic; see /// . - pub fn new(roots: RootCertStore, ct_policy: Option) -> Self { - Self { roots, ct_policy } + pub fn new( + roots: impl Into>, + ct_policy: Option, + ) -> Self { + Self { + roots: roots.into(), + ct_policy, + } } /// Returns the signature verification methods supported by @@ -633,11 +641,12 @@ .collect::>(); cert.0 - .verify_is_valid_tls_client_cert( + .verify_for_usage( SUPPORTED_SIG_ALGS, - &webpki::TlsClientTrustAnchors(&trust_roots), + &trust_roots, &chain, now, + webpki::KeyUsage::client_auth(), crls.as_slice(), ) .map_err(pki_error) diff -Nru temporalio-1.3.0/vendor/rustls/tests/api.rs temporalio-1.3.0/vendor/rustls/tests/api.rs --- temporalio-1.3.0/vendor/rustls/tests/api.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/tests/api.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1324,6 +1324,8 @@ fail_ok: bool, pub short_writes: bool, pub last_error: Option, + pub buffered: bool, + buffer: Vec>, } impl<'a, C, S> OtherSession<'a, C, S> @@ -1339,41 +1341,24 @@ fail_ok: false, short_writes: false, last_error: None, + buffered: false, + buffer: vec![], } } - fn new_fails(sess: &'a mut C) -> OtherSession<'a, C, S> { + fn new_buffered(sess: &'a mut C) -> OtherSession<'a, C, S> { let mut os = OtherSession::new(sess); - os.fail_ok = true; + os.buffered = true; os } -} - -impl<'a, C, S> io::Read for OtherSession<'a, C, S> -where - C: DerefMut + Deref>, - S: SideData, -{ - fn read(&mut self, mut b: &mut [u8]) -> io::Result { - self.reads += 1; - self.sess.write_tls(b.by_ref()) - } -} -impl<'a, C, S> io::Write for OtherSession<'a, C, S> -where - C: DerefMut + Deref>, - S: SideData, -{ - fn write(&mut self, _: &[u8]) -> io::Result { - unreachable!() - } - - fn flush(&mut self) -> io::Result<()> { - Ok(()) + fn new_fails(sess: &'a mut C) -> OtherSession<'a, C, S> { + let mut os = OtherSession::new(sess); + os.fail_ok = true; + os } - fn write_vectored<'b>(&mut self, b: &[io::IoSlice<'b>]) -> io::Result { + fn flush_vectored(&mut self, b: &[io::IoSlice<'_>]) -> io::Result { let mut total = 0; let mut lengths = vec![]; for bytes in b { @@ -1409,6 +1394,48 @@ } } +impl<'a, C, S> io::Read for OtherSession<'a, C, S> +where + C: DerefMut + Deref>, + S: SideData, +{ + fn read(&mut self, mut b: &mut [u8]) -> io::Result { + self.reads += 1; + self.sess.write_tls(b.by_ref()) + } +} + +impl<'a, C, S> io::Write for OtherSession<'a, C, S> +where + C: DerefMut + Deref>, + S: SideData, +{ + fn write(&mut self, _: &[u8]) -> io::Result { + unreachable!() + } + + fn flush(&mut self) -> io::Result<()> { + if !self.buffer.is_empty() { + let buffer = mem::take(&mut self.buffer); + let slices = buffer + .iter() + .map(|b| io::IoSlice::new(b)) + .collect::>(); + self.flush_vectored(&slices)?; + } + Ok(()) + } + + fn write_vectored(&mut self, b: &[io::IoSlice<'_>]) -> io::Result { + if self.buffered { + self.buffer + .extend(b.iter().map(|s| s.to_vec())); + return Ok(b.iter().map(|s| s.len()).sum()); + } + self.flush_vectored(b) + } +} + #[test] fn server_read_returns_wouldblock_when_no_data() { let (_, mut server) = make_pair(KeyType::Rsa); @@ -1457,6 +1484,19 @@ } #[test] +fn buffered_client_complete_io_for_handshake() { + let (mut client, mut server) = make_pair(KeyType::Rsa); + + assert!(client.is_handshaking()); + let (rdlen, wrlen) = client + .complete_io(&mut OtherSession::new_buffered(&mut server)) + .unwrap(); + assert!(rdlen > 0 && wrlen > 0); + assert!(!client.is_handshaking()); + assert!(!client.wants_write()); +} + +#[test] fn client_complete_io_for_handshake_eof() { let (mut client, _) = make_pair(KeyType::Rsa); let mut input = io::Cursor::new(Vec::new()); @@ -1498,6 +1538,35 @@ } #[test] +fn buffered_client_complete_io_for_write() { + for kt in ALL_KEY_TYPES.iter() { + let (mut client, mut server) = make_pair(*kt); + + do_handshake(&mut client, &mut server); + + client + .writer() + .write_all(b"01234567890123456789") + .unwrap(); + client + .writer() + .write_all(b"01234567890123456789") + .unwrap(); + { + let mut pipe = OtherSession::new_buffered(&mut server); + let (rdlen, wrlen) = client.complete_io(&mut pipe).unwrap(); + assert!(rdlen == 0 && wrlen > 0); + println!("{:?}", pipe.writevs); + assert_eq!(pipe.writevs, vec![vec![42, 42]]); + } + check_read( + &mut server.reader(), + b"0123456789012345678901234567890123456789", + ); + } +} + +#[test] fn client_complete_io_for_read() { for kt in ALL_KEY_TYPES.iter() { let (mut client, mut server) = make_pair(*kt); @@ -3958,6 +4027,69 @@ )); } +#[test] +fn test_client_rejects_hrr_with_varied_session_id() { + use rustls::internal::msgs::handshake::SessionId; + let different_session_id = SessionId::random().unwrap(); + + let assert_client_sends_hello_with_secp384 = |msg: &mut Message| -> Altered { + if let MessagePayload::Handshake { parsed, encoded } = &mut msg.payload { + if let HandshakePayload::ClientHello(ch) = &mut parsed.payload { + let keyshares = ch + .get_keyshare_extension() + .expect("missing key share extension"); + assert_eq!(keyshares.len(), 1); + assert_eq!(keyshares[0].group, rustls::NamedGroup::secp384r1); + + ch.session_id = different_session_id; + *encoded = Payload::new(parsed.get_encoding()); + } + } + Altered::InPlace + }; + + let assert_server_requests_retry_and_echoes_session_id = |msg: &mut Message| -> Altered { + if let MessagePayload::Handshake { parsed, .. } = &mut msg.payload { + if let HandshakePayload::HelloRetryRequest(hrr) = &mut parsed.payload { + let group = hrr.get_requested_key_share_group(); + assert_eq!(group, Some(rustls::NamedGroup::X25519)); + + assert_eq!(hrr.session_id, different_session_id); + } + } + Altered::InPlace + }; + + // client prefers a secp384r1 key share, server only accepts x25519 + let client_config = make_client_config_with_kx_groups( + KeyType::Rsa, + &[&rustls::kx_group::SECP384R1, &rustls::kx_group::X25519], + ); + + let server_config = + make_server_config_with_kx_groups(KeyType::Rsa, &[&rustls::kx_group::X25519]); + + let (client, server) = make_pair_for_configs(client_config, server_config); + let (mut client, mut server) = (client.into(), server.into()); + transfer_altered( + &mut client, + assert_client_sends_hello_with_secp384, + &mut server, + ); + server.process_new_packets().unwrap(); + transfer_altered( + &mut server, + assert_server_requests_retry_and_echoes_session_id, + &mut client, + ); + assert_eq!( + client.process_new_packets(), + Err(Error::PeerMisbehaved( + PeerMisbehaved::IllegalHelloRetryRequestWithWrongSessionId + )) + ); +} + #[cfg(feature = "tls12")] #[test] fn test_client_attempts_to_use_unsupported_kx_group() { diff -Nru temporalio-1.3.0/vendor/rustls/tests/common/mod.rs temporalio-1.3.0/vendor/rustls/tests/common/mod.rs --- temporalio-1.3.0/vendor/rustls/tests/common/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls/tests/common/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -359,7 +359,7 @@ config .with_root_certificates(root_store) - .with_single_cert(kt.get_client_chain(), kt.get_client_key()) + .with_client_auth_cert(kt.get_client_chain(), kt.get_client_key()) .unwrap() } diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/benches/benchmarks.rs temporalio-1.3.0/vendor/rustls-0.20.8/benches/benchmarks.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/benches/benchmarks.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/benches/benchmarks.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -use criterion::criterion_group; -use criterion::criterion_main; -/// Microbenchmarks go here. Larger benchmarks of (e.g..) protocol -/// performance go in examples/internal/bench.rs. -use criterion::Criterion; - -#[path = "../tests/common/mod.rs"] -mod test_utils; -use test_utils::*; - -use rustls::ServerConnection; - -use std::io; -use std::sync::Arc; - -fn bench_ewouldblock(c: &mut Criterion) { - let server_config = make_server_config(KeyType::Rsa); - let mut server = ServerConnection::new(Arc::new(server_config)).unwrap(); - let mut read_ewouldblock = FailsReads::new(io::ErrorKind::WouldBlock); - c.bench_function("read_tls with EWOULDBLOCK", move |b| { - b.iter(|| server.read_tls(&mut read_ewouldblock)) - }); -} - -criterion_group!(benches, bench_ewouldblock); -criterion_main!(benches); diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/build.rs temporalio-1.3.0/vendor/rustls-0.20.8/build.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/build.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/build.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -/// This build script allows us to enable the `read_buf` language feature only -/// for Rust Nightly. -/// -/// See the comment in lib.rs to understand why we need this. - -#[cfg_attr(feature = "read_buf", rustversion::not(nightly))] -fn main() {} - -#[cfg(feature = "read_buf")] -#[rustversion::nightly] -fn main() { - println!("cargo:rustc-cfg=read_buf"); -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/.cargo-checksum.json temporalio-1.3.0/vendor/rustls-0.20.8/.cargo-checksum.json --- temporalio-1.3.0/vendor/rustls-0.20.8/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -{"files":{"Cargo.lock":"8f989fb7b5bb2831298dc5a2660153292efd0dcdcbb03a397e995df2c4e532f9","Cargo.toml":"681e55389f08a3d7eeacd3f0af758cd8e502c397ce359b8339a370eeca595e6d","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-ISC":"7cfafc877eccc46c0e346ccbaa5c51bb6b894d2b818e617d970211e232785ad4","LICENSE-MIT":"709e3175b4212f7b13aa93971c9f62ff8c69ec45ad8c6532a7e0c41d7a7d6f8c","README.md":"3e4f54cee7b4b46e1ea1054e7002a50a7a2c714184486611fdc5cded2954d2f4","benches/benchmarks.rs":"0b2c93b68fd4085aaf9748c6f764838b1c070c903564c69f0222a0bb10ded0cc","build.rs":"83af94fa10c4be7653b2b69e1a4656239ecf6fbdfc225341f10e1ec7121b383e","examples/internal/bench.rs":"e94d4db55bc91be6ac1467f56364a3d36a4e4d81b85a8f2c75f859a419615a3a","examples/internal/bogo_shim.rs":"6d6847f5ebdc6372253fa5099ca16d5adc19bcfdd0f01907fb15b9a3f410f6dd","examples/internal/trytls_shim.rs":"88376622d4beeadd3e23fec02cd78df1faf654f306b778d601e24fd32f89c763","src/anchors.rs":"6d665459ff6471cbdeb8dd718542de40bd907d4b6eab5a9cb0f968f7fe7d432a","src/bs_debug.rs":"6a209655cea0ced94f4fc6341bf654a05ca1aa162c67361b3b2c8e28d179b156","src/builder.rs":"d017e40f1fc28e802ee7c7a7b6b1d513f3fca712a05223f24defe62dfe8b95ac","src/check.rs":"8bb5b2e2ac11edaee8ef43620bd3d39911f863e6e436740287a47b00d0c5a0d1","src/cipher.rs":"7345962dc4a4e8ff2826f01285b56f85f04dcec514f92067006bea69ebebbdcb","src/client/builder.rs":"82f38272e392e5192d5580d30d323488b811876566dbe1503fbe0161829810fa","src/client/client_conn.rs":"fa72d619c82af615142cb474ec268bfad14f37a455e5ae5ba682d274707a004b","src/client/common.rs":"d8dcdeb142968308c488e7f04b8c8aa04948168c7cd4024f5b29fe653c460930","src/client/handy.rs":"59803ee39e936996a397f8efc5870c1ed2aba5bd94a54d998ca37ff57904a555","src/client/hs.rs":"0ab6de0d5f8607c2393d74644d65bb13a0ec84df1dd00e75eeb1982a603f44bc","src/client/tls12.rs":"a892e37ed8bc61de4338ade907b6e5a4d2a69b99f4a0ececc5b31e0b5440f2f5","src/client/tls13.rs":"17723e1e2d31de3d677e3112de9ca8b7bea996299bd110f51ccfec54bdb8845b","src/conn.rs":"3c7b2f24096ac2b778e9038c18e1387557cf1acae8f48b998dc48f8dbf2a696c","src/enums.rs":"40155db4b732a0010a72fcc028450b6679e73f470d37a6cc99ddd00268267270","src/error.rs":"b5e31d234abac5cf6c4e7701a717ca0afaabbe65c8c53b55d12cd117f46c9ae8","src/hash_hs.rs":"4adfdc3caadf97dfa49c33cede24f92e0a51e9dd4e56f7bc78c5c48f1e4fe1da","src/key.rs":"2e6369d60bc7c3fdfe2afbd070b47fb6a961c724f5ffabf74e5eb0f16ea763d5","src/key_log.rs":"781a86f2e9e07d82288f3c130ce3cfe36f3c17743c28bd5d8036d7b5afa1d5f7","src/key_log_file.rs":"d9f68aa1d30af89e22986ac9e0b3d619e511ae254d12600cf0f22865592ed889","src/kx.rs":"ad5a1143153406f019372db51f83cfe64ac6df61d59c4f36f9f88aaaa6ef5c23","src/lib.rs":"8d69f1886fd8b62aa78236c00cbc5bc5720ec6fbd50bbf6799cf3741ce1b0b8c","src/limited_cache.rs":"88303c7b3cb78c77682c1d930793d8b5fca5b22383bd4a1c11ddebadfa93ab5e","src/manual/defaults.rs":"d4d44d094c8dee1e595988674c1f7e19c3d73ae51b8c7aa9921fd8a1a33ad015","src/manual/features.rs":"5aef65271e980cef6ab3be21cd2bfcf18eb4fcb8e7bca1c46788d4fdbd951a22","src/manual/howto.rs":"cded032780c8f7eb48620bf9bfd5f02482f720da9146b2c87c6e4d926d29234a","src/manual/implvulns.rs":"d023ad1183f57bc9bfa20f1fa3c5048f4378548cbb23cbe5bf238fcba598a1ef","src/manual/mod.rs":"8348373cb7d6f21da000ceeba4e39f79e2e81a3a8d01841847d8e54e3a7b6dba","src/manual/tlsvulns.rs":"e9b756bbc9c880a1c754365f361cfc334bfcbc0d457b4c7e50147a0ca181d686","src/msgs/alert.rs":"f121ec448e2144c7759ffd1be7e304c65187bb9f4405a899ee7f33d29ea2c75f","src/msgs/base.rs":"3e7a531287a0ce9a01fb849157cc8351f99dbd41802725629ce09e12383bb7ed","src/msgs/ccs.rs":"616c8ec0b25f5e0562a216144fc94c9c90b963e1742f46a797fe2ed62c3a0b1a","src/msgs/codec.rs":"46a6e8f5d583be2aa9b75fb464c09b1492d4e95a925b24cc2f8f62f731745339","src/msgs/deframer.rs":"e67a3b880cd6bfb1e6f844f8ed60e2c63cac71b771df5bbb0cf256ca96e0bc5f","src/msgs/enums.rs":"413e5f827f7466db4170262b4cd66f7075cb2617f1ac6ab19f7018907efe2c97","src/msgs/enums_test.rs":"efac5515d5b5a745113e52fc707dfa1a6ae37e591337e3dab94476370767eac9","src/msgs/fragmenter.rs":"52d0a455454ab9b504f1f2cd990ec62d47622bb188c8a542f0b1bc903e2b04ae","src/msgs/handshake-test.1.bin":"dfc0687f3b9902e7a0dfd2ebf59d73745b23b103e1d2b337ff555dfe42c5d1dd","src/msgs/handshake.rs":"c8a346180a81799ee5e48ff270b4941b67f57924f7f095283b77dbc31154021d","src/msgs/handshake_test.rs":"ba6d1e31f0401b77a8130ca41a972c2285c2d23c73e60ecc2cfe7178d815deb3","src/msgs/hello-api.devicecheck.apple.com.bin":"2bc3d61745598bf03d412fbcf482152d6810f674f6f6e7dab4fca90b71797c93","src/msgs/hsjoiner.rs":"18da4b1be91ef81a7c7e6b9b6a2908e5c2d2eeec8b92a7bdd5388d42fc9ee9ab","src/msgs/macros.rs":"f82d96fea54ca8e4a1dc3fba2dbb4b80ded4914fd0624cbe952cc357dcb756d7","src/msgs/message.rs":"a6dca50ed6b298aa8db94d08d1f66e019511cb88fcb273d816342061555e3367","src/msgs/message_test.rs":"25767c8b27bf4a49dc73c77788172dbd728e2ab845fa628ee11168d4c359abca","src/msgs/mod.rs":"a081e7409db440221965acad745ca92dc8769c4f73b7b4f19739b50482010a81","src/msgs/persist.rs":"3ec96774c4e01888b36b604f0fd1febd2979dedf3ff2fa7ff7e9b23160a48049","src/msgs/persist_test.rs":"f24e719d27f223eb964eab80d5ea2b585cdf26363011a79eb6dad91c678b4631","src/quic.rs":"09b5860ecc1419aed5c5d74cc529adb76c36d13b3f6eb4f9875e02470e6a1f80","src/rand.rs":"cca10f00636b43298df18bdf25987000e962fda1c8cb4ebbdc26fdc1ecf8a086","src/record_layer.rs":"ccb14f17ed1767b192f1bfc571a4f33b32f9d506a68fc6277815c91af8d3b0cf","src/server/builder.rs":"30c277de5e66f1be836d20a235ccb94789ece81b25d9caa814909625b412b7d1","src/server/common.rs":"41d15562492bbe402960fac598f5c9f48702bb18c6038b3649eb398f620b5e89","src/server/handy.rs":"84428dfd7f3b5f8df00e30fea9b23132793ff9a220b135b36f04998510950a57","src/server/hs.rs":"994b62d6059c8a887f7dc4928ea3912dc58b6c39a4760e56523ccf75cd6402d3","src/server/server_conn.rs":"14bde61dcb69e608fcb142ec8db1f3946b6cc8fcc7bc7c93817e7929c37bffdd","src/server/tls12.rs":"42ea16f6d19c98aaddd8dd59b3365d27a5f454b97bdd6ee57431f3a7e444417f","src/server/tls13.rs":"30d9d51206655909e51a3ef9c4573ba958f93a1ec16747dc64954d0f842f99b0","src/sign.rs":"e3e5c6aa1acd271d0432d90429322d604fc0753b69ae3b2f0185c05731271b0b","src/stream.rs":"88e6f54e1c7c5d629bf2ea7f1a8c453ffc8f799921b3ebcf9d2f05f621f69235","src/suites.rs":"e7bba571a5ecbd904b2424f86dd3acc1b155dca5338d20394af49c0bb5c716b2","src/testdata/cert-arstechnica.0.der":"46aabc708067403be19c801e364b3d74d142fa34f0d236bd5ebb78b6ea92ee09","src/testdata/cert-arstechnica.1.der":"f55f9ffcb83c73453261601c7e044db15a0f034b93c05830f28635ef889cf670","src/testdata/cert-arstechnica.2.der":"87dcd4dc74640a322cd205552506d1be64f12596258096544986b4850bc72706","src/testdata/cert-arstechnica.3.der":"28689b30e4c306aab53b027b29e36ad6dd1dcf4b953994482ca84bdc1ecac996","src/testdata/cert-duckduckgo.0.der":"a5d67800ebb234db3814a0fa562d57ddc6f3d55fe999012d67ccce96eedec9d5","src/testdata/cert-duckduckgo.1.der":"52274c57ce4dee3b49db7a7ff708c040f771898b3be88725a86fb4430182fe14","src/testdata/cert-github.0.der":"0ae384bfd4dde9d13e50c5857c05a442c93f8e01445ee4b34540d22bd1e37f1b","src/testdata/cert-github.1.der":"74eab573da7db195097be0e90f334934c7a4c89e8083759db4333a00edd243d9","src/testdata/cert-google.0.der":"41204cc6d81b76f1ec47cc3ec42dd8beca364cfc3d60eef23426aba6d2fb527f","src/testdata/cert-google.1.der":"23ecb03eec17338c4e33a6b48a41dc3cda12281bbc3ff813c0589d6cc2387522","src/testdata/cert-google.2.der":"3ee0278df71fa3c125c4cd487f01d774694e6fc57e0cd94c24efd769133918e5","src/testdata/cert-hn.0.der":"34556ed249da9c079c6ab4394a7ec0faeb58802ade1131a21952655e2f9c601e","src/testdata/cert-hn.1.der":"52274c57ce4dee3b49db7a7ff708c040f771898b3be88725a86fb4430182fe14","src/testdata/cert-reddit.0.der":"c6691fc719fb3afe21ee36ff30c34270a26bec774cde6c5359de960b95efb542","src/testdata/cert-reddit.1.der":"52274c57ce4dee3b49db7a7ff708c040f771898b3be88725a86fb4430182fe14","src/testdata/cert-rustlang.0.der":"8b9884fd898113bcc1158665b8799dcc916b0439154bdb1fb1a34aac90f70740","src/testdata/cert-rustlang.1.der":"f55f9ffcb83c73453261601c7e044db15a0f034b93c05830f28635ef889cf670","src/testdata/cert-rustlang.2.der":"87dcd4dc74640a322cd205552506d1be64f12596258096544986b4850bc72706","src/testdata/cert-rustlang.3.der":"28689b30e4c306aab53b027b29e36ad6dd1dcf4b953994482ca84bdc1ecac996","src/testdata/cert-servo.0.der":"eb197f28ce58d8d0fa3d92e2e2d7be5b98de354410aa66ddd3016e3f24a7250a","src/testdata/cert-servo.1.der":"3abbe63daf756c5016b6b85f52015fd8e8acbe277c5087b127a60563a841ed8a","src/testdata/cert-stackoverflow.0.der":"f4abeb331e28cceb20da7fc18ca95590c0ed1f4e63f52b637b23b9bc06665e64","src/testdata/cert-stackoverflow.1.der":"67add1166b020ae61b8f5fc96813c04c2aa589960796865572a3c7e737613dfd","src/testdata/cert-stackoverflow.2.der":"6d99fb265eb1c5b3744765fcbc648f3cd8e1bffafdc4c2f99b9d47cf7ff1c24f","src/testdata/cert-twitter.0.der":"fe7c6283d9f01487f3637a9d3f51dbe89c12ae6a8ba072bb39392045d403c770","src/testdata/cert-twitter.1.der":"25768713d3b459f9382d2a594f85f34709fd2a8930731542a4146ffb246bec69","src/testdata/cert-wapo.0.der":"babb936bd25e338826c345561b93f8acf15c643a7d6ef07a2168bcc10ad99bb3","src/testdata/cert-wapo.1.der":"75c5b3f01fd1f51a2c447ab7c785d72e69fa9c472c08571e7eadf3b8eabae70c","src/testdata/cert-wikipedia.0.der":"570a5629103e749596336c7ba750d385ed124db5ddbdd6461546500fe81653f2","src/testdata/cert-wikipedia.1.der":"f7a9a1b2fd964a3f2670bd668d561fb7c55d3aa9ab8391e7e169702db8a3dbcf","src/testdata/deframer-empty-applicationdata.bin":"b86ffa54a7c45e93a27d6255cb5037a3d51c6714077883601f06b619892aa0bb","src/testdata/deframer-invalid-contenttype.bin":"5b7e3b73fd67dcd7de3853ba6c1bdc91d5c46936845520744d610254b68b4826","src/testdata/deframer-invalid-empty.bin":"1d4a7cb76d38591ca1d062056e6bb4e409097663d2bf4866e91094e4e317a7a3","src/testdata/deframer-invalid-length.bin":"400f1998d0f76b4e40c030508e779dfbcb3e3359b79704737c9cf36f67221b8b","src/testdata/deframer-invalid-version.bin":"7e9f00a1ada82bbd42c3482e7d0245f657beeaaa2d297342d3a8fbeb58db5ebe","src/testdata/deframer-test.1.bin":"33e15a17ebdee1f2c2c7918f114791492058df12c8c9fc497876ff9d6f7ebb55","src/testdata/deframer-test.2.bin":"a850ca71fdd1cb5a26324bd204d7179aa320ac5324e2b02d1499c87bc8f9689e","src/testdata/eddsakey.der":"606bc208c72f30d11ce19e3d2b93365f6d3e12ccaf87055589f349f390c26a03","src/testdata/nistp256key.der":"02147f779ac9234e561753715383cff4339d142a674a456071b40a63f657673a","src/testdata/nistp256key.pkcs8.der":"8ac0d1f37d827866d4396497b4016c1cdadfb740248bfe1eea24f73a9f1d4d86","src/testdata/nistp384key.der":"ed67accafd2fc24881f9200fd438c10ddd586f9a7d672981c42eb5f7f17abfeb","src/testdata/nistp384key.pkcs8.der":"469e695487cc8aaf5109907b1d201be54f0ee768ce8c0e90b9d63bde98a27980","src/testdata/prf-result.1.bin":"ba86827dfe61b8dd2037e4e8f094d15f1bb574850ae205c8b412814f8ec1284e","src/testdata/prf-result.2.bin":"b46941b6e44dfe3e6b49fef860bc976b1cd6f8829d784991928f1b7ba119716f","src/testdata/rsa2048key.pkcs1.der":"1ba5d98f8477176468664b7b2120566dc3b7e955119cba6c56f7a19a31267bcb","src/testdata/rsa2048key.pkcs8.der":"2e2a42e8e9bfed26a7836244a89cd5fc440b612ae08655b21c8e4b126440d873","src/ticketer.rs":"93c8ed2256ad1520eb8fad01f427e2f811f44efa88cc4ace63e0fe46859bfab0","src/tls12/cipher.rs":"8ed836583e58f86bafaee1faabbd72ff1cfed5f79132345843eb6a72fdd885d8","src/tls12/mod.rs":"f81ccd16aeb72395fa3427a2bed68a17cb7003808fef9ecccf4662240e1e59c7","src/tls12/prf.rs":"03d3d6e08a0a5daf0f6b1d05bcc76c271c7497024f4ac007560cf00b046f03e0","src/tls13/key_schedule.rs":"2ecf3dee35fcc9fe952b8f7737f642699e6fa89bde56c1123b39156449e2301d","src/tls13/mod.rs":"04d715ee7c37e1152fbc8918b74b9b382d354df76fa83c48a51c9e0633e60b20","src/vecbuf.rs":"af52479b29390779d77f59a9f5b60863988ab1610d33a4b87a577f1934d478f6","src/verify.rs":"68c39f7a381a214bcab32188c3441235315a3561384db0f9613ef0859bd72082","src/verifybench.rs":"d7b30c313b73600a0d9b4a15cc55900fb808a4f7eebd76ad7b57f6f38de72ad1","src/versions.rs":"cdafa85b8af2c9452aa26c4d2e532dd71243676a9df256184eb8c5da5db37be1","src/x509.rs":"99230c9042731f4be98a7d07a89229dd675840aed30165e6dc8b191949b71079","tests/api.rs":"67a9a13dd3d9628278581d7dd1d28de360ba75143ed9da8af96a1ed23dadebbe","tests/bogo.rs":"34b9ce193d93b69a40ec3c529b3a225f2de40fc666f69c26df483fca453f0dd6","tests/client_cert_verifier.rs":"0ed04ee0b066551eeb1f9fc23d3a366662236985e87bee76cc82788b72856f6d","tests/common/mod.rs":"1cc2ebf1706604582f57026a21fd8a130f62b257245aee2005087dc6cdcbf4d2","tests/key_log_file_env.rs":"e2823c2e31c769c0ada203cf4415a8bd3f71176ee60cb00153537d51f2537278","tests/server_cert_verifier.rs":"f36fad333ced9cf58e221d4a2e0dc9042a581a5b06276ffc350112a8270e314d"},"package":"fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/Cargo.lock temporalio-1.3.0/vendor/rustls-0.20.8/Cargo.lock --- temporalio-1.3.0/vendor/rustls-0.20.8/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/Cargo.lock 1970-01-01 00:00:00.000000000 +0000 @@ -1,735 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "aho-corasick" -version = "0.7.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" -dependencies = [ - "memchr", -] - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bstr" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" -dependencies = [ - "lazy_static", - "memchr", - "regex-automata", - "serde", -] - -[[package]] -name = "bumpalo" -version = "3.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" - -[[package]] -name = "cast" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" - -[[package]] -name = "cc" -version = "1.0.78" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "clap" -version = "2.34.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" -dependencies = [ - "bitflags", - "textwrap", - "unicode-width", -] - -[[package]] -name = "criterion" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f" -dependencies = [ - "atty", - "cast", - "clap", - "criterion-plot", - "csv", - "itertools", - "lazy_static", - "num-traits", - "oorandom", - "plotters", - "rayon", - "regex", - "serde", - "serde_cbor", - "serde_derive", - "serde_json", - "tinytemplate", - "walkdir", -] - -[[package]] -name = "criterion-plot" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876" -dependencies = [ - "cast", - "itertools", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" -dependencies = [ - "cfg-if", - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" -dependencies = [ - "autocfg", - "cfg-if", - "crossbeam-utils", - "memoffset", - "scopeguard", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "csv" -version = "1.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" -dependencies = [ - "bstr", - "csv-core", - "itoa 0.4.8", - "ryu", - "serde", -] - -[[package]] -name = "csv-core" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" -dependencies = [ - "memchr", -] - -[[package]] -name = "either" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" - -[[package]] -name = "env_logger" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" -dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", -] - -[[package]] -name = "half" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - -[[package]] -name = "itoa" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" - -[[package]] -name = "js-sys" -version = "0.3.60" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.139" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" - -[[package]] -name = "log" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num-traits" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" -dependencies = [ - "hermit-abi 0.2.6", - "libc", -] - -[[package]] -name = "once_cell" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" - -[[package]] -name = "oorandom" -version = "11.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" - -[[package]] -name = "plotters" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" -dependencies = [ - "num-traits", - "plotters-backend", - "plotters-svg", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "plotters-backend" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" - -[[package]] -name = "plotters-svg" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" -dependencies = [ - "plotters-backend", -] - -[[package]] -name = "proc-macro2" -version = "1.0.49" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rayon" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cac410af5d00ab6884528b4ab69d1e8e146e8d471201800fa1b4524126de6ad3" -dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-utils", - "num_cpus", -] - -[[package]] -name = "regex" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" - -[[package]] -name = "regex-syntax" -version = "0.6.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" - -[[package]] -name = "ring" -version = "0.16.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin", - "untrusted", - "web-sys", - "winapi", -] - -[[package]] -name = "rustls" -version = "0.20.8" -dependencies = [ - "base64 0.13.1", - "criterion", - "env_logger", - "log", - "ring", - "rustls-pemfile", - "rustversion", - "sct", - "webpki", - "webpki-roots", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" -dependencies = [ - "base64 0.21.0", -] - -[[package]] -name = "rustversion" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" - -[[package]] -name = "ryu" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "sct" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "serde" -version = "1.0.152" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" - -[[package]] -name = "serde_cbor" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" -dependencies = [ - "half", - "serde", -] - -[[package]] -name = "serde_derive" -version = "1.0.152" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" -dependencies = [ - "itoa 1.0.5", - "ryu", - "serde", -] - -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - -[[package]] -name = "syn" -version = "1.0.107" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "termcolor" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "tinytemplate" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "unicode-ident" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" - -[[package]] -name = "unicode-width" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" - -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - -[[package]] -name = "walkdir" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" -dependencies = [ - "same-file", - "winapi", - "winapi-util", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" - -[[package]] -name = "web-sys" -version = "0.3.60" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "webpki-roots" -version = "0.22.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" -dependencies = [ - "webpki", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/Cargo.toml temporalio-1.3.0/vendor/rustls-0.20.8/Cargo.toml --- temporalio-1.3.0/vendor/rustls-0.20.8/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 @@ -1,107 +0,0 @@ -# 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.57" -name = "rustls" -version = "0.20.8" -build = "build.rs" -autobenches = false -description = "Rustls is a modern TLS library written in Rust." -homepage = "https://github.com/rustls/rustls" -readme = "README.md" -categories = [ - "network-programming", - "cryptography", -] -license = "Apache-2.0/ISC/MIT" -repository = "https://github.com/rustls/rustls" -resolver = "2" - -[package.metadata.docs.rs] -all-features = true -rustdoc-args = [ - "--cfg", - "docsrs", -] - -[[example]] -name = "bogo_shim" -path = "examples/internal/bogo_shim.rs" -required-features = [ - "dangerous_configuration", - "quic", -] - -[[example]] -name = "trytls_shim" -path = "examples/internal/trytls_shim.rs" - -[[example]] -name = "bench" -path = "examples/internal/bench.rs" - -[[bench]] -name = "benchmarks" -path = "benches/benchmarks.rs" -harness = false - -[dependencies.log] -version = "0.4.4" -optional = true - -[dependencies.ring] -version = "0.16.20" - -[dependencies.sct] -version = "0.7.0" - -[dependencies.webpki] -version = "0.22.0" -features = [ - "alloc", - "std", -] - -[dev-dependencies.base64] -version = "0.13.0" - -[dev-dependencies.criterion] -version = "0.3.0" - -[dev-dependencies.env_logger] -version = "0.9.0" - -[dev-dependencies.log] -version = "0.4.4" - -[dev-dependencies.rustls-pemfile] -version = "1.0.0" - -[dev-dependencies.webpki-roots] -version = "0.22.0" - -[build-dependencies.rustversion] -version = "1.0.6" -optional = true - -[features] -dangerous_configuration = [] -default = [ - "logging", - "tls12", -] -logging = ["log"] -quic = [] -read_buf = ["rustversion"] -secret_extraction = [] -tls12 = [] diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/examples/internal/bench.rs temporalio-1.3.0/vendor/rustls-0.20.8/examples/internal/bench.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/examples/internal/bench.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/examples/internal/bench.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,664 +0,0 @@ -// This program does assorted benchmarking of rustls. -// -// Note: we don't use any of the standard 'cargo bench', 'test::Bencher', -// etc. because it's unstable at the time of writing. - -use std::convert::TryInto; -use std::env; -use std::fs; -use std::io::{self, Read, Write}; -use std::ops::Deref; -use std::ops::DerefMut; -use std::sync::Arc; -use std::time::{Duration, Instant}; - -use rustls::client::{ClientSessionMemoryCache, NoClientSessionStorage}; -use rustls::server::{ - AllowAnyAuthenticatedClient, NoClientAuth, NoServerSessionStorage, ServerSessionMemoryCache, -}; -use rustls::RootCertStore; -use rustls::Ticketer; -use rustls::{ClientConfig, ClientConnection}; -use rustls::{ConnectionCommon, SideData}; -use rustls::{ServerConfig, ServerConnection}; - -fn duration_nanos(d: Duration) -> f64 { - (d.as_secs() as f64) + f64::from(d.subsec_nanos()) / 1e9 -} - -fn _bench(count: usize, name: &'static str, f_setup: Fsetup, f_test: Ftest) -where - Fsetup: Fn() -> S, - Ftest: Fn(S), -{ - let mut times = Vec::new(); - - for _ in 0..count { - let state = f_setup(); - let start = Instant::now(); - f_test(state); - times.push(duration_nanos(Instant::now().duration_since(start))); - } - - println!("{}", name); - println!("{:?}", times); -} - -fn time(mut f: F) -> f64 -where - F: FnMut(), -{ - let start = Instant::now(); - f(); - let end = Instant::now(); - duration_nanos(end.duration_since(start)) -} - -fn transfer(left: &mut L, right: &mut R, expect_data: Option) -> f64 -where - L: DerefMut + Deref>, - R: DerefMut + Deref>, - LS: SideData, - RS: SideData, -{ - let mut tls_buf = [0u8; 262144]; - let mut read_time = 0f64; - let mut data_left = expect_data; - let mut data_buf = [0u8; 8192]; - - loop { - let mut sz = 0; - - while left.wants_write() { - let written = left - .write_tls(&mut tls_buf[sz..].as_mut()) - .unwrap(); - if written == 0 { - break; - } - - sz += written; - } - - if sz == 0 { - return read_time; - } - - let mut offs = 0; - loop { - let start = Instant::now(); - match right.read_tls(&mut tls_buf[offs..sz].as_ref()) { - Ok(read) => { - right.process_new_packets().unwrap(); - offs += read; - } - Err(err) => { - panic!("error on transfer {}..{}: {}", offs, sz, err); - } - } - - if let Some(left) = &mut data_left { - loop { - let sz = match right.reader().read(&mut data_buf) { - Ok(sz) => sz, - Err(err) if err.kind() == io::ErrorKind::WouldBlock => break, - Err(err) => panic!("failed to read data: {}", err), - }; - - *left -= sz; - if *left == 0 { - break; - } - } - } - - let end = Instant::now(); - read_time += duration_nanos(end.duration_since(start)); - if sz == offs { - break; - } - } - } -} - -#[derive(PartialEq, Clone, Copy)] -enum ClientAuth { - No, - Yes, -} - -#[derive(PartialEq, Clone, Copy)] -enum Resumption { - No, - SessionID, - Tickets, -} - -impl Resumption { - fn label(&self) -> &'static str { - match *self { - Resumption::No => "no-resume", - Resumption::SessionID => "sessionid", - Resumption::Tickets => "tickets", - } - } -} - -// copied from tests/api.rs -#[derive(PartialEq, Clone, Copy, Debug)] -enum KeyType { - Rsa, - Ecdsa, - Ed25519, -} - -struct BenchmarkParam { - key_type: KeyType, - ciphersuite: rustls::SupportedCipherSuite, - version: &'static rustls::SupportedProtocolVersion, -} - -impl BenchmarkParam { - const fn new( - key_type: KeyType, - ciphersuite: rustls::SupportedCipherSuite, - version: &'static rustls::SupportedProtocolVersion, - ) -> BenchmarkParam { - BenchmarkParam { - key_type, - ciphersuite, - version, - } - } -} - -static ALL_BENCHMARKS: &[BenchmarkParam] = &[ - #[cfg(feature = "tls12")] - BenchmarkParam::new( - KeyType::Rsa, - rustls::cipher_suite::TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, - &rustls::version::TLS12, - ), - #[cfg(feature = "tls12")] - BenchmarkParam::new( - KeyType::Ecdsa, - rustls::cipher_suite::TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, - &rustls::version::TLS12, - ), - #[cfg(feature = "tls12")] - BenchmarkParam::new( - KeyType::Rsa, - rustls::cipher_suite::TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, - &rustls::version::TLS12, - ), - #[cfg(feature = "tls12")] - BenchmarkParam::new( - KeyType::Rsa, - rustls::cipher_suite::TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, - &rustls::version::TLS12, - ), - #[cfg(feature = "tls12")] - BenchmarkParam::new( - KeyType::Rsa, - rustls::cipher_suite::TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, - &rustls::version::TLS12, - ), - #[cfg(feature = "tls12")] - BenchmarkParam::new( - KeyType::Ecdsa, - rustls::cipher_suite::TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, - &rustls::version::TLS12, - ), - #[cfg(feature = "tls12")] - BenchmarkParam::new( - KeyType::Ecdsa, - rustls::cipher_suite::TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, - &rustls::version::TLS12, - ), - BenchmarkParam::new( - KeyType::Rsa, - rustls::cipher_suite::TLS13_CHACHA20_POLY1305_SHA256, - &rustls::version::TLS13, - ), - BenchmarkParam::new( - KeyType::Rsa, - rustls::cipher_suite::TLS13_AES_256_GCM_SHA384, - &rustls::version::TLS13, - ), - BenchmarkParam::new( - KeyType::Rsa, - rustls::cipher_suite::TLS13_AES_128_GCM_SHA256, - &rustls::version::TLS13, - ), - BenchmarkParam::new( - KeyType::Ecdsa, - rustls::cipher_suite::TLS13_AES_128_GCM_SHA256, - &rustls::version::TLS13, - ), - BenchmarkParam::new( - KeyType::Ed25519, - rustls::cipher_suite::TLS13_AES_128_GCM_SHA256, - &rustls::version::TLS13, - ), -]; - -impl KeyType { - fn path_for(&self, part: &str) -> String { - match self { - KeyType::Rsa => format!("test-ca/rsa/{}", part), - KeyType::Ecdsa => format!("test-ca/ecdsa/{}", part), - KeyType::Ed25519 => format!("test-ca/eddsa/{}", part), - } - } - - fn get_chain(&self) -> Vec { - rustls_pemfile::certs(&mut io::BufReader::new( - fs::File::open(self.path_for("end.fullchain")).unwrap(), - )) - .unwrap() - .iter() - .map(|v| rustls::Certificate(v.clone())) - .collect() - } - - fn get_key(&self) -> rustls::PrivateKey { - rustls::PrivateKey( - rustls_pemfile::pkcs8_private_keys(&mut io::BufReader::new( - fs::File::open(self.path_for("end.key")).unwrap(), - )) - .unwrap()[0] - .clone(), - ) - } - - fn get_client_chain(&self) -> Vec { - rustls_pemfile::certs(&mut io::BufReader::new( - fs::File::open(self.path_for("client.fullchain")).unwrap(), - )) - .unwrap() - .iter() - .map(|v| rustls::Certificate(v.clone())) - .collect() - } - - fn get_client_key(&self) -> rustls::PrivateKey { - rustls::PrivateKey( - rustls_pemfile::pkcs8_private_keys(&mut io::BufReader::new( - fs::File::open(self.path_for("client.key")).unwrap(), - )) - .unwrap()[0] - .clone(), - ) - } -} - -fn make_server_config( - params: &BenchmarkParam, - client_auth: ClientAuth, - resume: Resumption, - max_fragment_size: Option, -) -> ServerConfig { - let client_auth = match client_auth { - ClientAuth::Yes => { - let roots = params.key_type.get_chain(); - let mut client_auth_roots = RootCertStore::empty(); - for root in roots { - client_auth_roots.add(&root).unwrap(); - } - AllowAnyAuthenticatedClient::new(client_auth_roots) - } - ClientAuth::No => NoClientAuth::new(), - }; - - let mut cfg = ServerConfig::builder() - .with_safe_default_cipher_suites() - .with_safe_default_kx_groups() - .with_protocol_versions(&[params.version]) - .unwrap() - .with_client_cert_verifier(client_auth) - .with_single_cert(params.key_type.get_chain(), params.key_type.get_key()) - .expect("bad certs/private key?"); - - if resume == Resumption::SessionID { - cfg.session_storage = ServerSessionMemoryCache::new(128); - } else if resume == Resumption::Tickets { - cfg.ticketer = Ticketer::new().unwrap(); - } else { - cfg.session_storage = Arc::new(NoServerSessionStorage {}); - } - - cfg.max_fragment_size = max_fragment_size; - cfg -} - -fn make_client_config( - params: &BenchmarkParam, - clientauth: ClientAuth, - resume: Resumption, -) -> ClientConfig { - let mut root_store = RootCertStore::empty(); - let mut rootbuf = - io::BufReader::new(fs::File::open(params.key_type.path_for("ca.cert")).unwrap()); - root_store.add_parsable_certificates(&rustls_pemfile::certs(&mut rootbuf).unwrap()); - - let cfg = ClientConfig::builder() - .with_cipher_suites(&[params.ciphersuite]) - .with_safe_default_kx_groups() - .with_protocol_versions(&[params.version]) - .unwrap() - .with_root_certificates(root_store); - - let mut cfg = if clientauth == ClientAuth::Yes { - cfg.with_single_cert( - params.key_type.get_client_chain(), - params.key_type.get_client_key(), - ) - .unwrap() - } else { - cfg.with_no_client_auth() - }; - - if resume != Resumption::No { - cfg.session_storage = ClientSessionMemoryCache::new(128); - } else { - cfg.session_storage = Arc::new(NoClientSessionStorage {}); - } - - cfg -} - -fn apply_work_multiplier(work: u64) -> u64 { - let mul = match env::var("BENCH_MULTIPLIER") { - Ok(val) => val - .parse::() - .expect("invalid BENCH_MULTIPLIER value"), - Err(_) => 1., - }; - - ((work as f64) * mul).round() as u64 -} - -fn bench_handshake(params: &BenchmarkParam, clientauth: ClientAuth, resume: Resumption) { - let client_config = Arc::new(make_client_config(params, clientauth, resume)); - let server_config = Arc::new(make_server_config(params, clientauth, resume, None)); - - assert!(params.ciphersuite.version() == params.version); - - let rounds = apply_work_multiplier(if resume == Resumption::No { 512 } else { 4096 }); - let mut client_time = 0f64; - let mut server_time = 0f64; - - for _ in 0..rounds { - let server_name = "localhost".try_into().unwrap(); - let mut client = ClientConnection::new(Arc::clone(&client_config), server_name).unwrap(); - let mut server = ServerConnection::new(Arc::clone(&server_config)).unwrap(); - - server_time += time(|| { - transfer(&mut client, &mut server, None); - }); - client_time += time(|| { - transfer(&mut server, &mut client, None); - }); - server_time += time(|| { - transfer(&mut client, &mut server, None); - }); - client_time += time(|| { - transfer(&mut server, &mut client, None); - }); - } - - println!( - "handshakes\t{:?}\t{:?}\t{:?}\tclient\t{}\t{}\t{:.2}\thandshake/s", - params.version, - params.key_type, - params.ciphersuite.suite(), - if clientauth == ClientAuth::Yes { - "mutual" - } else { - "server-auth" - }, - resume.label(), - (rounds as f64) / client_time - ); - println!( - "handshakes\t{:?}\t{:?}\t{:?}\tserver\t{}\t{}\t{:.2}\thandshake/s", - params.version, - params.key_type, - params.ciphersuite.suite(), - if clientauth == ClientAuth::Yes { - "mutual" - } else { - "server-auth" - }, - resume.label(), - (rounds as f64) / server_time - ); -} - -fn do_handshake_step(client: &mut ClientConnection, server: &mut ServerConnection) -> bool { - if server.is_handshaking() || client.is_handshaking() { - transfer(client, server, None); - transfer(server, client, None); - true - } else { - false - } -} - -fn do_handshake(client: &mut ClientConnection, server: &mut ServerConnection) { - while do_handshake_step(client, server) {} -} - -fn bench_bulk(params: &BenchmarkParam, plaintext_size: u64, max_fragment_size: Option) { - let client_config = Arc::new(make_client_config(params, ClientAuth::No, Resumption::No)); - let server_config = Arc::new(make_server_config( - params, - ClientAuth::No, - Resumption::No, - max_fragment_size, - )); - - let server_name = "localhost".try_into().unwrap(); - let mut client = ClientConnection::new(client_config, server_name).unwrap(); - client.set_buffer_limit(None); - let mut server = ServerConnection::new(Arc::clone(&server_config)).unwrap(); - server.set_buffer_limit(None); - - do_handshake(&mut client, &mut server); - - let mut buf = Vec::new(); - buf.resize(plaintext_size as usize, 0u8); - - let total_data = apply_work_multiplier(if plaintext_size < 8192 { - 64 * 1024 * 1024 - } else { - 1024 * 1024 * 1024 - }); - let rounds = total_data / plaintext_size; - let mut time_send = 0f64; - let mut time_recv = 0f64; - - for _ in 0..rounds { - time_send += time(|| { - server.writer().write_all(&buf).unwrap(); - }); - - time_recv += transfer(&mut server, &mut client, Some(buf.len())); - } - - let mfs_str = format!( - "max_fragment_size:{}", - max_fragment_size - .map(|v| v.to_string()) - .unwrap_or_else(|| "default".to_string()) - ); - let total_mbs = ((plaintext_size * rounds) as f64) / (1024. * 1024.); - println!( - "bulk\t{:?}\t{:?}\t{}\tsend\t{:.2}\tMB/s", - params.version, - params.ciphersuite.suite(), - mfs_str, - total_mbs / time_send - ); - println!( - "bulk\t{:?}\t{:?}\t{}\trecv\t{:.2}\tMB/s", - params.version, - params.ciphersuite.suite(), - mfs_str, - total_mbs / time_recv - ); -} - -fn bench_memory(params: &BenchmarkParam, conn_count: u64) { - let client_config = Arc::new(make_client_config(params, ClientAuth::No, Resumption::No)); - let server_config = Arc::new(make_server_config( - params, - ClientAuth::No, - Resumption::No, - None, - )); - - // The target here is to end up with conn_count post-handshake - // server and client sessions. - let conn_count = (conn_count / 2) as usize; - let mut servers = Vec::with_capacity(conn_count); - let mut clients = Vec::with_capacity(conn_count); - - for _i in 0..conn_count { - servers.push(ServerConnection::new(Arc::clone(&server_config)).unwrap()); - let server_name = "localhost".try_into().unwrap(); - clients.push(ClientConnection::new(Arc::clone(&client_config), server_name).unwrap()); - } - - for _step in 0..5 { - for (client, server) in clients - .iter_mut() - .zip(servers.iter_mut()) - { - do_handshake_step(client, server); - } - } - - for client in clients.iter_mut() { - client - .writer() - .write_all(&[0u8; 1024]) - .unwrap(); - } - - for (client, server) in clients - .iter_mut() - .zip(servers.iter_mut()) - { - transfer(client, server, Some(1024)); - } -} - -fn lookup_matching_benches(name: &str) -> Vec<&BenchmarkParam> { - let r: Vec<&BenchmarkParam> = ALL_BENCHMARKS - .iter() - .filter(|params| { - format!("{:?}", params.ciphersuite.suite()).to_lowercase() == name.to_lowercase() - }) - .collect(); - - if r.is_empty() { - panic!("unknown suite {:?}", name); - } - - r -} - -fn selected_tests(mut args: env::Args) { - let mode = args - .next() - .expect("first argument must be mode"); - - match mode.as_ref() { - "bulk" => match args.next() { - Some(suite) => { - let len = args - .next() - .map(|arg| { - arg.parse::() - .expect("3rd arg must be plaintext size integer") - }) - .unwrap_or(1048576); - let mfs = args.next().map(|arg| { - arg.parse::() - .expect("4th arg must be max_fragment_size integer") - }); - for param in lookup_matching_benches(&suite).iter() { - bench_bulk(param, len, mfs); - } - } - None => { - panic!("bulk needs ciphersuite argument"); - } - }, - - "handshake" | "handshake-resume" | "handshake-ticket" => match args.next() { - Some(suite) => { - let resume = if mode == "handshake" { - Resumption::No - } else if mode == "handshake-resume" { - Resumption::SessionID - } else { - Resumption::Tickets - }; - - for param in lookup_matching_benches(&suite).iter() { - bench_handshake(param, ClientAuth::No, resume); - } - } - None => { - panic!("handshake* needs ciphersuite argument"); - } - }, - - "memory" => match args.next() { - Some(suite) => { - let count = args - .next() - .map(|arg| { - arg.parse::() - .expect("3rd arg must be connection count integer") - }) - .unwrap_or(1000000); - for param in lookup_matching_benches(&suite).iter() { - bench_memory(param, count); - } - } - None => { - panic!("memory needs ciphersuite argument"); - } - }, - - _ => { - panic!("unsupported mode {:?}", mode); - } - } -} - -fn all_tests() { - for test in ALL_BENCHMARKS.iter() { - bench_bulk(test, 1024 * 1024, None); - bench_bulk(test, 1024 * 1024, Some(10000)); - bench_handshake(test, ClientAuth::No, Resumption::No); - bench_handshake(test, ClientAuth::Yes, Resumption::No); - bench_handshake(test, ClientAuth::No, Resumption::SessionID); - bench_handshake(test, ClientAuth::Yes, Resumption::SessionID); - bench_handshake(test, ClientAuth::No, Resumption::Tickets); - bench_handshake(test, ClientAuth::Yes, Resumption::Tickets); - } -} - -fn main() { - let mut args = env::args(); - if args.len() > 1 { - args.next(); - selected_tests(args); - } else { - all_tests(); - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/examples/internal/bogo_shim.rs temporalio-1.3.0/vendor/rustls-0.20.8/examples/internal/bogo_shim.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/examples/internal/bogo_shim.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/examples/internal/bogo_shim.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,1195 +0,0 @@ -// This is a test shim for the BoringSSL-Go ('bogo') TLS -// test suite. See bogo/ for this in action. -// -// https://boringssl.googlesource.com/boringssl/+/master/ssl/test -// - -use base64; -use env_logger; -use rustls; - -use rustls::internal::msgs::codec::{Codec, Reader}; -use rustls::internal::msgs::persist; -use rustls::quic::{self, ClientQuicExt, QuicExt, ServerQuicExt}; -use rustls::server::ClientHello; -use rustls::{CipherSuite, ProtocolVersion}; -use rustls::{ClientConnection, Connection, ServerConnection}; - -use std::convert::TryInto; -use std::env; -use std::fs; -use std::io; -use std::io::BufReader; -use std::io::{Read, Write}; -use std::net; -use std::process; -use std::sync::Arc; -use std::time::SystemTime; - -static BOGO_NACK: i32 = 89; - -macro_rules! println_err( - ($($arg:tt)*) => { { - writeln!(&mut ::std::io::stderr(), $($arg)*).unwrap(); - } } -); - -#[derive(Debug)] -struct Options { - port: u16, - server: bool, - max_fragment: Option, - resumes: usize, - verify_peer: bool, - require_any_client_cert: bool, - offer_no_client_cas: bool, - tickets: bool, - resume_with_tickets_disabled: bool, - queue_data: bool, - queue_data_on_resume: bool, - only_write_one_byte_after_handshake: bool, - only_write_one_byte_after_handshake_on_resume: bool, - shut_down_after_handshake: bool, - check_close_notify: bool, - host_name: String, - use_sni: bool, - send_sct: bool, - key_file: String, - cert_file: String, - protocols: Vec, - support_tls13: bool, - support_tls12: bool, - min_version: Option, - max_version: Option, - server_ocsp_response: Vec, - server_sct_list: Vec, - use_signing_scheme: u16, - curves: Option>, - export_keying_material: usize, - export_keying_material_label: String, - export_keying_material_context: String, - export_keying_material_context_used: bool, - read_size: usize, - quic_transport_params: Vec, - expect_quic_transport_params: Vec, - enable_early_data: bool, - expect_ticket_supports_early_data: bool, - expect_accept_early_data: bool, - expect_reject_early_data: bool, - expect_version: u16, - resumption_delay: u32, -} - -impl Options { - fn new() -> Self { - Options { - port: 0, - server: false, - max_fragment: None, - resumes: 0, - verify_peer: false, - tickets: true, - resume_with_tickets_disabled: false, - host_name: "example.com".to_string(), - use_sni: false, - send_sct: false, - queue_data: false, - queue_data_on_resume: false, - only_write_one_byte_after_handshake: false, - only_write_one_byte_after_handshake_on_resume: false, - shut_down_after_handshake: false, - check_close_notify: false, - require_any_client_cert: false, - offer_no_client_cas: false, - key_file: "".to_string(), - cert_file: "".to_string(), - protocols: vec![], - support_tls13: true, - support_tls12: true, - min_version: None, - max_version: None, - server_ocsp_response: vec![], - server_sct_list: vec![], - use_signing_scheme: 0, - curves: None, - export_keying_material: 0, - export_keying_material_label: "".to_string(), - export_keying_material_context: "".to_string(), - export_keying_material_context_used: false, - read_size: 512, - quic_transport_params: vec![], - expect_quic_transport_params: vec![], - enable_early_data: false, - expect_ticket_supports_early_data: false, - expect_accept_early_data: false, - expect_reject_early_data: false, - expect_version: 0, - resumption_delay: 0, - } - } - - fn version_allowed(&self, vers: ProtocolVersion) -> bool { - (self.min_version.is_none() || vers.get_u16() >= self.min_version.unwrap().get_u16()) - && (self.max_version.is_none() || vers.get_u16() <= self.max_version.unwrap().get_u16()) - } - - fn tls13_supported(&self) -> bool { - self.support_tls13 && self.version_allowed(ProtocolVersion::TLSv1_3) - } - - fn tls12_supported(&self) -> bool { - self.support_tls12 && self.version_allowed(ProtocolVersion::TLSv1_2) - } - - fn supported_versions(&self) -> Vec<&'static rustls::SupportedProtocolVersion> { - let mut versions = vec![]; - - if self.tls12_supported() { - versions.push(&rustls::version::TLS12); - } - - if self.tls13_supported() { - versions.push(&rustls::version::TLS13); - } - versions - } -} - -fn load_cert(filename: &str) -> Vec { - let certfile = fs::File::open(filename).expect("cannot open certificate file"); - let mut reader = BufReader::new(certfile); - rustls_pemfile::certs(&mut reader) - .unwrap() - .iter() - .map(|v| rustls::Certificate(v.clone())) - .collect() -} - -fn load_key(filename: &str) -> rustls::PrivateKey { - let keyfile = fs::File::open(filename).expect("cannot open private key file"); - let mut reader = BufReader::new(keyfile); - let keys = rustls_pemfile::pkcs8_private_keys(&mut reader).unwrap(); - assert!(keys.len() == 1); - rustls::PrivateKey(keys[0].clone()) -} - -fn split_protocols(protos: &str) -> Vec { - let mut ret = Vec::new(); - - let mut offs = 0; - while offs < protos.len() { - let len = protos.as_bytes()[offs] as usize; - let item = protos[offs + 1..offs + 1 + len].to_string(); - ret.push(item); - offs += 1 + len; - } - - ret -} - -struct DummyClientAuth { - mandatory: bool, -} - -impl rustls::server::ClientCertVerifier for DummyClientAuth { - fn offer_client_auth(&self) -> bool { - true - } - - fn client_auth_mandatory(&self) -> Option { - Some(self.mandatory) - } - - fn client_auth_root_subjects(&self) -> Option { - Some(rustls::DistinguishedNames::new()) - } - - fn verify_client_cert( - &self, - _end_entity: &rustls::Certificate, - _intermediates: &[rustls::Certificate], - _now: SystemTime, - ) -> Result { - Ok(rustls::server::ClientCertVerified::assertion()) - } -} - -struct DummyServerAuth { - send_sct: bool, -} - -impl rustls::client::ServerCertVerifier for DummyServerAuth { - fn verify_server_cert( - &self, - _end_entity: &rustls::Certificate, - _certs: &[rustls::Certificate], - _hostname: &rustls::ServerName, - _scts: &mut dyn Iterator, - _ocsp: &[u8], - _now: SystemTime, - ) -> Result { - Ok(rustls::client::ServerCertVerified::assertion()) - } - - fn request_scts(&self) -> bool { - self.send_sct - } -} - -struct FixedSignatureSchemeSigningKey { - key: Arc, - scheme: rustls::SignatureScheme, -} - -impl rustls::sign::SigningKey for FixedSignatureSchemeSigningKey { - fn choose_scheme( - &self, - offered: &[rustls::SignatureScheme], - ) -> Option> { - if offered.contains(&self.scheme) { - self.key.choose_scheme(&[self.scheme]) - } else { - self.key.choose_scheme(&[]) - } - } - fn algorithm(&self) -> rustls::SignatureAlgorithm { - self.key.algorithm() - } -} - -struct FixedSignatureSchemeServerCertResolver { - resolver: Arc, - scheme: rustls::SignatureScheme, -} - -impl rustls::server::ResolvesServerCert for FixedSignatureSchemeServerCertResolver { - fn resolve(&self, client_hello: ClientHello) -> Option> { - let mut certkey = self.resolver.resolve(client_hello)?; - Arc::make_mut(&mut certkey).key = Arc::new(FixedSignatureSchemeSigningKey { - key: certkey.key.clone(), - scheme: self.scheme, - }); - Some(certkey) - } -} - -struct FixedSignatureSchemeClientCertResolver { - resolver: Arc, - scheme: rustls::SignatureScheme, -} - -impl rustls::client::ResolvesClientCert for FixedSignatureSchemeClientCertResolver { - fn resolve( - &self, - acceptable_issuers: &[&[u8]], - sigschemes: &[rustls::SignatureScheme], - ) -> Option> { - if !sigschemes.contains(&self.scheme) { - quit(":NO_COMMON_SIGNATURE_ALGORITHMS:"); - } - let mut certkey = self - .resolver - .resolve(acceptable_issuers, sigschemes)?; - Arc::make_mut(&mut certkey).key = Arc::new(FixedSignatureSchemeSigningKey { - key: certkey.key.clone(), - scheme: self.scheme, - }); - Some(certkey) - } - - fn has_certs(&self) -> bool { - self.resolver.has_certs() - } -} - -fn lookup_scheme(scheme: u16) -> rustls::SignatureScheme { - match scheme { - 0x0401 => rustls::SignatureScheme::RSA_PKCS1_SHA256, - 0x0501 => rustls::SignatureScheme::RSA_PKCS1_SHA384, - 0x0601 => rustls::SignatureScheme::RSA_PKCS1_SHA512, - 0x0403 => rustls::SignatureScheme::ECDSA_NISTP256_SHA256, - 0x0503 => rustls::SignatureScheme::ECDSA_NISTP384_SHA384, - 0x0804 => rustls::SignatureScheme::RSA_PSS_SHA256, - 0x0805 => rustls::SignatureScheme::RSA_PSS_SHA384, - 0x0806 => rustls::SignatureScheme::RSA_PSS_SHA512, - 0x0807 => rustls::SignatureScheme::ED25519, - // TODO: add support for Ed448 - // 0x0808 => rustls::SignatureScheme::ED448, - _ => { - println_err!("Unsupported signature scheme {:04x}", scheme); - process::exit(BOGO_NACK); - } - } -} - -fn lookup_kx_group(group: u16) -> &'static rustls::SupportedKxGroup { - match group { - 0x001d => &rustls::kx_group::X25519, - 0x0017 => &rustls::kx_group::SECP256R1, - 0x0018 => &rustls::kx_group::SECP384R1, - _ => { - println_err!("Unsupported kx group {:04x}", group); - process::exit(BOGO_NACK); - } - } -} - -struct ServerCacheWithResumptionDelay { - delay: u32, - storage: Arc, -} - -impl ServerCacheWithResumptionDelay { - fn new(delay: u32) -> Arc { - Arc::new(Self { - delay, - storage: rustls::server::ServerSessionMemoryCache::new(32), - }) - } -} - -fn align_time() { - /* we don't have an injectable clock source in rustls' public api, and - * resumption timing is in seconds resolution, so tests that use - * resumption_delay tend to be flickery if the seconds time ticks - * during this. - * - * this function delays until a fresh second ticks, which alleviates - * this. gross! - */ - use std::{thread, time}; - - fn sample() -> u64 { - time::SystemTime::now() - .duration_since(time::SystemTime::UNIX_EPOCH) - .unwrap() - .as_secs() - } - - let start_secs = sample(); - while start_secs == sample() { - thread::sleep(time::Duration::from_millis(20)); - } -} - -impl rustls::server::StoresServerSessions for ServerCacheWithResumptionDelay { - fn put(&self, key: Vec, value: Vec) -> bool { - let mut ssv = persist::ServerSessionValue::read_bytes(&value).unwrap(); - ssv.creation_time_sec -= self.delay as u64; - - self.storage - .put(key, ssv.get_encoding()) - } - - fn get(&self, key: &[u8]) -> Option> { - self.storage.get(key) - } - - fn take(&self, key: &[u8]) -> Option> { - self.storage.take(key) - } - - fn can_cache(&self) -> bool { - self.storage.can_cache() - } -} - -fn make_server_cfg(opts: &Options) -> Arc { - let client_auth = - if opts.verify_peer || opts.offer_no_client_cas || opts.require_any_client_cert { - Arc::new(DummyClientAuth { - mandatory: opts.require_any_client_cert, - }) - } else { - rustls::server::NoClientAuth::new() - }; - - let cert = load_cert(&opts.cert_file); - let key = load_key(&opts.key_file); - - let kx_groups = if let Some(curves) = &opts.curves { - curves - .iter() - .map(|curveid| lookup_kx_group(*curveid)) - .collect() - } else { - rustls::ALL_KX_GROUPS.to_vec() - }; - - let mut cfg = rustls::ServerConfig::builder() - .with_safe_default_cipher_suites() - .with_kx_groups(&kx_groups) - .with_protocol_versions(&opts.supported_versions()) - .unwrap() - .with_client_cert_verifier(client_auth) - .with_single_cert_with_ocsp_and_sct( - cert.clone(), - key, - opts.server_ocsp_response.clone(), - opts.server_sct_list.clone(), - ) - .unwrap(); - - cfg.session_storage = ServerCacheWithResumptionDelay::new(opts.resumption_delay); - cfg.max_fragment_size = opts.max_fragment; - - if opts.use_signing_scheme > 0 { - let scheme = lookup_scheme(opts.use_signing_scheme); - cfg.cert_resolver = Arc::new(FixedSignatureSchemeServerCertResolver { - resolver: cfg.cert_resolver.clone(), - scheme, - }); - } - - if opts.tickets { - cfg.ticketer = rustls::Ticketer::new().unwrap(); - } else if opts.resumes == 0 { - cfg.session_storage = Arc::new(rustls::server::NoServerSessionStorage {}); - } - - if !opts.protocols.is_empty() { - cfg.alpn_protocols = opts - .protocols - .iter() - .map(|proto| proto.as_bytes().to_vec()) - .collect::>(); - } - - if opts.enable_early_data { - // see kMaxEarlyDataAccepted in boringssl, which bogo validates - cfg.max_early_data_size = 14336; - cfg.send_half_rtt_data = true; - } - - Arc::new(cfg) -} - -struct ClientCacheWithoutKxHints { - delay: u32, - storage: Arc, -} - -impl ClientCacheWithoutKxHints { - fn new(delay: u32) -> Arc { - Arc::new(ClientCacheWithoutKxHints { - delay, - storage: rustls::client::ClientSessionMemoryCache::new(32), - }) - } -} - -impl rustls::client::StoresClientSessions for ClientCacheWithoutKxHints { - fn put(&self, key: Vec, value: Vec) -> bool { - if key.len() > 2 && key[0] == b'k' && key[1] == b'x' { - return true; - } - - let mut reader = Reader::init(&value[2..]); - let csv = CipherSuite::read_bytes(&value[..2]) - .and_then(|suite| { - persist::ClientSessionValue::read(&mut reader, suite, &rustls::ALL_CIPHER_SUITES) - }) - .unwrap(); - - let value = match csv { - persist::ClientSessionValue::Tls13(mut tls13) => { - tls13.common.rewind_epoch(self.delay); - tls13.get_encoding() - } - persist::ClientSessionValue::Tls12(mut tls12) => { - tls12.common.rewind_epoch(self.delay); - tls12.get_encoding() - } - }; - - self.storage.put(key, value) - } - - fn get(&self, key: &[u8]) -> Option> { - self.storage.get(key) - } -} - -fn make_client_cfg(opts: &Options) -> Arc { - let kx_groups = if let Some(curves) = &opts.curves { - curves - .iter() - .map(|curveid| lookup_kx_group(*curveid)) - .collect() - } else { - rustls::ALL_KX_GROUPS.to_vec() - }; - - let cfg = rustls::ClientConfig::builder() - .with_safe_default_cipher_suites() - .with_kx_groups(&kx_groups) - .with_protocol_versions(&opts.supported_versions()) - .expect("inconsistent settings") - .with_custom_certificate_verifier(Arc::new(DummyServerAuth { - send_sct: opts.send_sct, - })); - - let mut cfg = if !opts.cert_file.is_empty() && !opts.key_file.is_empty() { - let cert = load_cert(&opts.cert_file); - let key = load_key(&opts.key_file); - cfg.with_single_cert(cert, key).unwrap() - } else { - cfg.with_no_client_auth() - }; - - if !opts.cert_file.is_empty() && opts.use_signing_scheme > 0 { - let scheme = lookup_scheme(opts.use_signing_scheme); - cfg.client_auth_cert_resolver = Arc::new(FixedSignatureSchemeClientCertResolver { - resolver: cfg.client_auth_cert_resolver.clone(), - scheme, - }); - } - - let persist = ClientCacheWithoutKxHints::new(opts.resumption_delay); - cfg.session_storage = persist; - cfg.enable_sni = opts.use_sni; - cfg.max_fragment_size = opts.max_fragment; - - if !opts.protocols.is_empty() { - cfg.alpn_protocols = opts - .protocols - .iter() - .map(|proto| proto.as_bytes().to_vec()) - .collect(); - } - - if opts.enable_early_data { - cfg.enable_early_data = true; - } - - Arc::new(cfg) -} - -fn quit(why: &str) -> ! { - println_err!("{}", why); - process::exit(0) -} - -fn quit_err(why: &str) -> ! { - println_err!("{}", why); - process::exit(1) -} - -fn handle_err(err: rustls::Error) -> ! { - use rustls::Error; - use rustls::{AlertDescription, ContentType}; - use std::{thread, time}; - - println!("TLS error: {:?}", err); - thread::sleep(time::Duration::from_millis(100)); - - match err { - Error::InappropriateHandshakeMessage { .. } | Error::InappropriateMessage { .. } => { - quit(":UNEXPECTED_MESSAGE:") - } - Error::AlertReceived(AlertDescription::RecordOverflow) => { - quit(":TLSV1_ALERT_RECORD_OVERFLOW:") - } - Error::AlertReceived(AlertDescription::HandshakeFailure) => quit(":HANDSHAKE_FAILURE:"), - Error::AlertReceived(AlertDescription::ProtocolVersion) => quit(":WRONG_VERSION:"), - Error::AlertReceived(AlertDescription::InternalError) => { - quit(":PEER_ALERT_INTERNAL_ERROR:") - } - Error::CorruptMessagePayload(ContentType::Alert) => quit(":BAD_ALERT:"), - Error::CorruptMessagePayload(ContentType::ChangeCipherSpec) => { - quit(":BAD_CHANGE_CIPHER_SPEC:") - } - Error::CorruptMessagePayload(ContentType::Handshake) => quit(":BAD_HANDSHAKE_MSG:"), - Error::CorruptMessagePayload(ContentType::Unknown(42)) => quit(":GARBAGE:"), - Error::CorruptMessage => quit(":GARBAGE:"), - Error::DecryptError => quit(":DECRYPTION_FAILED_OR_BAD_RECORD_MAC:"), - Error::PeerIncompatibleError(_) => quit(":INCOMPATIBLE:"), - Error::PeerMisbehavedError(s) if s == "too much early_data received" => { - quit(":TOO_MUCH_READ_EARLY_DATA:") - } - Error::PeerMisbehavedError(_) => quit(":PEER_MISBEHAVIOUR:"), - Error::NoCertificatesPresented => quit(":NO_CERTS:"), - Error::AlertReceived(AlertDescription::UnexpectedMessage) => quit(":BAD_ALERT:"), - Error::AlertReceived(AlertDescription::DecompressionFailure) => { - quit_err(":SSLV3_ALERT_DECOMPRESSION_FAILURE:") - } - Error::InvalidCertificateEncoding => quit(":CANNOT_PARSE_LEAF_CERT:"), - Error::InvalidCertificateSignature => quit(":BAD_SIGNATURE:"), - Error::InvalidCertificateSignatureType => quit(":WRONG_SIGNATURE_TYPE:"), - Error::PeerSentOversizedRecord => quit(":DATA_LENGTH_TOO_LONG:"), - _ => { - println_err!("unhandled error: {:?}", err); - quit(":FIXME:") - } - } -} - -fn flush(sess: &mut Connection, conn: &mut net::TcpStream) { - while sess.wants_write() { - match sess.write_tls(conn) { - Err(err) => { - println!("IO error: {:?}", err); - process::exit(0); - } - Ok(_) => {} - } - } - conn.flush().unwrap(); -} - -fn client(conn: &mut Connection) -> &mut ClientConnection { - conn.try_into().unwrap() -} - -fn server(conn: &mut Connection) -> &mut ServerConnection { - match conn { - Connection::Server(s) => s, - _ => panic!("Connection is not a ServerConnection"), - } -} - -fn exec(opts: &Options, mut sess: Connection, count: usize) { - let mut sent_message = false; - - if opts.queue_data || (opts.queue_data_on_resume && count > 0) { - if count > 0 && opts.enable_early_data { - let len = client(&mut sess) - .early_data() - .expect("0rtt not available") - .write(b"hello") - .expect("0rtt write failed"); - sess.writer() - .write_all(&b"hello"[len..]) - .unwrap(); - sent_message = true; - } else if !opts.only_write_one_byte_after_handshake { - let _ = sess.writer().write_all(b"hello"); - sent_message = true; - } - } - - let addrs = [ - net::SocketAddr::from((net::Ipv6Addr::LOCALHOST, opts.port)), - net::SocketAddr::from((net::Ipv4Addr::LOCALHOST, opts.port)), - ]; - let mut conn = net::TcpStream::connect(&addrs[..]).expect("cannot connect"); - let mut sent_shutdown = false; - let mut sent_exporter = false; - let mut quench_writes = false; - - loop { - if !quench_writes { - flush(&mut sess, &mut conn); - } - - if sess.wants_read() { - match sess.read_tls(&mut conn) { - Ok(_) => {} - Err(ref err) if err.kind() == io::ErrorKind::ConnectionReset => {} - Err(err) => panic!("invalid read: {}", err), - }; - - if let Err(err) = sess.process_new_packets() { - flush(&mut sess, &mut conn); /* send any alerts before exiting */ - handle_err(err); - } - } - - if opts.server && opts.enable_early_data { - if let Some(ref mut ed) = server(&mut sess).early_data() { - let mut data = Vec::new(); - let data_len = ed - .read_to_end(&mut data) - .expect("cannot read early_data"); - - for b in data.iter_mut() { - *b ^= 0xff; - } - - sess.writer() - .write_all(&data[..data_len]) - .expect("cannot echo early_data in 1rtt data"); - } - } - - if !sess.is_handshaking() && opts.export_keying_material > 0 && !sent_exporter { - let mut export = Vec::new(); - export.resize(opts.export_keying_material, 0u8); - sess.export_keying_material( - &mut export, - opts.export_keying_material_label - .as_bytes(), - if opts.export_keying_material_context_used { - Some( - opts.export_keying_material_context - .as_bytes(), - ) - } else { - None - }, - ) - .unwrap(); - sess.writer() - .write_all(&export) - .unwrap(); - sent_exporter = true; - } - - if !sess.is_handshaking() && opts.only_write_one_byte_after_handshake && !sent_message { - println!("writing message and then only one byte of its tls frame"); - flush(&mut sess, &mut conn); - - sess.writer() - .write_all(b"hello") - .unwrap(); - sent_message = true; - - let mut one_byte = [0u8]; - let mut cursor = io::Cursor::new(&mut one_byte[..]); - sess.write_tls(&mut cursor).unwrap(); - conn.write(&one_byte).expect("IO error"); - - quench_writes = true; - } - - if opts.enable_early_data && !opts.server && !sess.is_handshaking() && count > 0 { - if opts.expect_accept_early_data && !client(&mut sess).is_early_data_accepted() { - quit_err("Early data was not accepted, but we expect the opposite"); - } else if opts.expect_reject_early_data && client(&mut sess).is_early_data_accepted() { - quit_err("Early data was accepted, but we expect the opposite"); - } - if opts.expect_version == 0x0304 { - match sess.protocol_version() { - Some(ProtocolVersion::TLSv1_3) | Some(ProtocolVersion::Unknown(0x7f17)) => {} - _ => quit_err("wrong protocol version"), - } - } - } - - if !sess.is_handshaking() - && !opts - .expect_quic_transport_params - .is_empty() - { - let their_transport_params = sess - .quic_transport_parameters() - .expect("missing peer quic transport params"); - assert_eq!(opts.expect_quic_transport_params, their_transport_params); - } - - let mut buf = [0u8; 1024]; - let len = match sess - .reader() - .read(&mut buf[..opts.read_size]) - { - Ok(0) => { - if opts.check_close_notify { - println!("close notify ok"); - } - println!("EOF (tls)"); - return; - } - Ok(len) => len, - Err(err) if err.kind() == io::ErrorKind::WouldBlock => 0, - Err(err) if err.kind() == io::ErrorKind::UnexpectedEof => { - if opts.check_close_notify { - quit_err(":CLOSE_WITHOUT_CLOSE_NOTIFY:"); - } - println!("EOF (tcp)"); - return; - } - Err(err) => panic!("unhandled read error {:?}", err), - }; - - if opts.shut_down_after_handshake && !sent_shutdown && !sess.is_handshaking() { - sess.send_close_notify(); - sent_shutdown = true; - } - - if quench_writes && len > 0 { - println!("unquenching writes after {:?}", len); - quench_writes = false; - } - - for b in buf.iter_mut() { - *b ^= 0xff; - } - - sess.writer() - .write_all(&buf[..len]) - .unwrap(); - } -} - -fn main() { - let mut args: Vec<_> = env::args().collect(); - env_logger::init(); - - args.remove(0); - - if !args.is_empty() && args[0] == "-is-handshaker-supported" { - println!("No"); - process::exit(0); - } - println!("options: {:?}", args); - - let mut opts = Options::new(); - - while !args.is_empty() { - let arg = args.remove(0); - match arg.as_ref() { - "-port" => { - opts.port = args.remove(0).parse::().unwrap(); - } - "-server" => { - opts.server = true; - } - "-key-file" => { - opts.key_file = args.remove(0); - } - "-cert-file" => { - opts.cert_file = args.remove(0); - } - "-resume-count" => { - opts.resumes = args.remove(0).parse::().unwrap(); - } - "-no-tls13" => { - opts.support_tls13 = false; - } - "-no-tls12" => { - opts.support_tls12 = false; - } - "-min-version" => { - let min = args.remove(0).parse::().unwrap(); - opts.min_version = Some(ProtocolVersion::Unknown(min)); - } - "-max-version" => { - let max = args.remove(0).parse::().unwrap(); - opts.max_version = Some(ProtocolVersion::Unknown(max)); - } - "-max-send-fragment" => { - let max_fragment = args.remove(0).parse::().unwrap(); - opts.max_fragment = Some(max_fragment + 5); // ours includes header - } - "-read-size" => { - let rdsz = args.remove(0).parse::().unwrap(); - opts.read_size = rdsz; - } - "-tls13-variant" => { - let variant = args.remove(0).parse::().unwrap(); - if variant != 1 { - println!("NYI TLS1.3 variant selection: {:?} {:?}", arg, variant); - process::exit(BOGO_NACK); - } - } - "-no-ticket" => { - opts.tickets = false; - } - "-on-resume-no-ticket" => { - opts.resume_with_tickets_disabled = true; - } - "-signing-prefs" => { - let alg = args.remove(0).parse::().unwrap(); - opts.use_signing_scheme = alg; - } - "-max-cert-list" | - "-expect-curve-id" | - "-expect-resume-curve-id" | - "-expect-peer-signature-algorithm" | - "-expect-peer-verify-pref" | - "-expect-advertised-alpn" | - "-expect-alpn" | - "-on-initial-expect-alpn" | - "-on-resume-expect-alpn" | - "-on-retry-expect-alpn" | - "-expect-server-name" | - "-expect-ocsp-response" | - "-expect-signed-cert-timestamps" | - "-expect-certificate-types" | - "-expect-client-ca-list" | - "-on-retry-expect-early-data-reason" | - "-on-resume-expect-early-data-reason" | - "-on-initial-expect-early-data-reason" | - "-on-initial-expect-cipher" | - "-on-resume-expect-cipher" | - "-on-retry-expect-cipher" | - "-expect-ticket-age-skew" | - "-handshaker-path" | - "-application-settings" | - "-expect-msg-callback" => { - println!("not checking {} {}; NYI", arg, args.remove(0)); - } - - "-expect-secure-renegotiation" | - "-expect-no-session-id" | - "-enable-ed25519" | - "-expect-hrr" | - "-expect-no-hrr" | - "-on-resume-expect-no-offer-early-data" | - "-key-update" | //< we could implement an API for this - "-expect-tls13-downgrade" | - "-expect-session-id" => { - println!("not checking {}; NYI", arg); - } - - "-export-keying-material" => { - opts.export_keying_material = args.remove(0).parse::().unwrap(); - } - "-export-label" => { - opts.export_keying_material_label = args.remove(0); - } - "-export-context" => { - opts.export_keying_material_context = args.remove(0); - } - "-use-export-context" => { - opts.export_keying_material_context_used = true; - } - "-quic-transport-params" => { - opts.quic_transport_params = base64::decode(args.remove(0).as_bytes()) - .expect("invalid base64"); - } - "-expect-quic-transport-params" => { - opts.expect_quic_transport_params = base64::decode(args.remove(0).as_bytes()) - .expect("invalid base64"); - } - - "-ocsp-response" => { - opts.server_ocsp_response = base64::decode(args.remove(0).as_bytes()) - .expect("invalid base64"); - } - "-signed-cert-timestamps" => { - opts.server_sct_list = base64::decode(args.remove(0).as_bytes()) - .expect("invalid base64"); - - if opts.server_sct_list.len() == 2 && - opts.server_sct_list[0] == 0x00 && - opts.server_sct_list[1] == 0x00 { - quit(":INVALID_SCT_LIST:"); - } - } - "-select-alpn" => { - opts.protocols.push(args.remove(0)); - } - "-require-any-client-certificate" => { - opts.require_any_client_cert = true; - } - "-verify-peer" => { - opts.verify_peer = true; - } - "-shim-writes-first" => { - opts.queue_data = true; - } - "-read-with-unfinished-write" => { - opts.queue_data = true; - opts.only_write_one_byte_after_handshake = true; - } - "-shim-shuts-down" => { - opts.shut_down_after_handshake = true; - } - "-check-close-notify" => { - opts.check_close_notify = true; - } - "-host-name" => { - opts.host_name = args.remove(0); - opts.use_sni = true; - } - "-advertise-alpn" => { - opts.protocols = split_protocols(&args.remove(0)); - } - "-use-null-client-ca-list" => { - opts.offer_no_client_cas = true; - } - "-enable-signed-cert-timestamps" => { - opts.send_sct = true; - } - "-enable-early-data" => { - opts.tickets = false; - opts.enable_early_data = true; - } - "-on-resume-shim-writes-first" => { - opts.queue_data_on_resume = true; - } - "-on-resume-read-with-unfinished-write" => { - opts.queue_data_on_resume = true; - opts.only_write_one_byte_after_handshake_on_resume = true; - } - "-expect-ticket-supports-early-data" => { - opts.expect_ticket_supports_early_data = true; - } - "-expect-accept-early-data" | - "-on-resume-expect-accept-early-data" => { - opts.expect_accept_early_data = true; - } - "-expect-early-data-reason" | - "-on-resume-expect-reject-early-data-reason" => { - let reason = args.remove(0); - match reason.as_str() { - "disabled" | "protocol_version" => { - opts.expect_reject_early_data = true; - } - _ => { - println!("NYI early data reason: {}", reason); - process::exit(1); - } - } - } - "-expect-reject-early-data" | - "-on-resume-expect-reject-early-data" => { - opts.expect_reject_early_data = true; - } - "-expect-version" => { - opts.expect_version = args.remove(0).parse::().unwrap(); - } - "-curves" => { - let curve = args.remove(0).parse::().unwrap(); - if let Some(mut curves) = opts.curves.take() { - curves.push(curve); - } else { - opts.curves = Some(vec![ curve ]); - } - } - "-resumption-delay" => { - opts.resumption_delay = args.remove(0).parse::().unwrap(); - align_time(); - } - - // defaults: - "-enable-all-curves" | - "-renegotiate-ignore" | - "-no-tls11" | - "-no-tls1" | - "-no-ssl3" | - "-handoff" | - "-decline-alpn" | - "-expect-no-session" | - "-expect-session-miss" | - "-expect-extended-master-secret" | - "-expect-ticket-renewal" | - "-enable-ocsp-stapling" | - // internal openssl details: - "-async" | - "-implicit-handshake" | - "-use-old-client-cert-callback" | - "-use-early-callback" => {} - - // Not implemented things - "-dtls" | - "-cipher" | - "-psk" | - "-renegotiate-freely" | - "-false-start" | - "-fallback-scsv" | - "-fail-early-callback" | - "-fail-cert-callback" | - "-install-ddos-callback" | - "-advertise-npn" | - "-verify-fail" | - "-expect-channel-id" | - "-send-channel-id" | - "-select-next-proto" | - "-expect-verify-result" | - "-send-alert" | - "-digest-prefs" | - "-use-exporter-between-reads" | - "-ticket-key" | - "-tls-unique" | - "-enable-server-custom-extension" | - "-enable-client-custom-extension" | - "-expect-dhe-group-size" | - "-use-ticket-callback" | - "-enable-grease" | - "-enable-channel-id" | - "-expect-early-data-info" | - "-expect-cipher-aes" | - "-retain-only-sha256-client-cert-initial" | - "-use-client-ca-list" | - "-expect-draft-downgrade" | - "-allow-unknown-alpn-protos" | - "-on-initial-tls13-variant" | - "-on-initial-expect-curve-id" | - "-on-resume-export-early-keying-material" | - "-on-resume-enable-early-data" | - "-export-early-keying-material" | - "-handshake-twice" | - "-on-resume-verify-fail" | - "-reverify-on-resume" | - "-verify-prefs" | - "-no-op-extra-handshake" | - "-expect-peer-cert-file" | - "-no-rsa-pss-rsae-certs" | - "-ignore-tls13-downgrade" | - "-on-initial-expect-peer-cert-file" => { - println!("NYI option {:?}", arg); - process::exit(BOGO_NACK); - } - - _ => { - println!("unhandled option {:?}", arg); - process::exit(1); - } - } - } - - println!("opts {:?}", opts); - - let mut server_cfg = if opts.server { - Some(make_server_cfg(&opts)) - } else { - None - }; - let client_cfg = if !opts.server { - Some(make_client_cfg(&opts)) - } else { - None - }; - - fn make_session( - opts: &Options, - scfg: &Option>, - ccfg: &Option>, - ) -> Connection { - if opts.server { - let scfg = Arc::clone(scfg.as_ref().unwrap()); - let s = if opts.quic_transport_params.is_empty() { - rustls::ServerConnection::new(scfg).unwrap() - } else { - rustls::ServerConnection::new_quic( - scfg, - quic::Version::V1, - opts.quic_transport_params.clone(), - ) - .unwrap() - }; - s.into() - } else { - let server_name = opts - .host_name - .as_str() - .try_into() - .unwrap(); - let ccfg = Arc::clone(ccfg.as_ref().unwrap()); - let c = if opts.quic_transport_params.is_empty() { - rustls::ClientConnection::new(ccfg, server_name) - } else { - rustls::ClientConnection::new_quic( - ccfg, - quic::Version::V1, - server_name, - opts.quic_transport_params.clone(), - ) - } - .unwrap(); - c.into() - } - } - - for i in 0..opts.resumes + 1 { - let sess = make_session(&opts, &server_cfg, &client_cfg); - exec(&opts, sess, i); - - if opts.resume_with_tickets_disabled { - opts.tickets = false; - server_cfg = Some(make_server_cfg(&opts)); - } - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/examples/internal/trytls_shim.rs temporalio-1.3.0/vendor/rustls-0.20.8/examples/internal/trytls_shim.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/examples/internal/trytls_shim.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/examples/internal/trytls_shim.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,120 +0,0 @@ -// A Rustls stub for TryTLS -// -// Author: Joachim Viide -// See: https://github.com/HowNetWorks/trytls-rustls-stub -// - -use rustls::{ClientConfig, ClientConnection, Error, OwnedTrustAnchor, RootCertStore}; -use std::convert::TryInto; -use std::env; -use std::error::Error as StdError; -use std::fs::File; -use std::io::{BufReader, Read, Write}; -use std::net::TcpStream; -use std::process; -use std::sync::Arc; - -enum Verdict { - Accept, - Reject(Error), -} - -fn parse_args(args: &[String]) -> Result<(String, u16, ClientConfig), Box> { - let mut root_store = RootCertStore::empty(); - match args.len() { - 3 => { - root_store.add_server_trust_anchors( - webpki_roots::TLS_SERVER_ROOTS - .0 - .iter() - .map(|ta| { - OwnedTrustAnchor::from_subject_spki_name_constraints( - ta.subject, - ta.spki, - ta.name_constraints, - ) - }), - ); - } - 4 => { - let f = File::open(&args[3])?; - root_store - .add_parsable_certificates(&rustls_pemfile::certs(&mut BufReader::new(f)).unwrap()); - } - _ => { - return Err(From::from("Incorrect number of arguments")); - } - }; - let config = rustls::ClientConfig::builder() - .with_safe_defaults() - .with_root_certificates(root_store) - .with_no_client_auth(); - - let port = args[2].parse()?; - Ok((args[1].clone(), port, config)) -} - -fn communicate( - host: String, - port: u16, - config: ClientConfig, -) -> Result> { - let server_name = host.as_str().try_into().unwrap(); - let rc_config = Arc::new(config); - let mut client = ClientConnection::new(rc_config, server_name).unwrap(); - let mut stream = TcpStream::connect((&*host, port))?; - - client - .writer() - .write_all(b"GET / HTTP/1.0\r\nConnection: close\r\nContent-Length: 0\r\n\r\n")?; - loop { - while client.wants_write() { - client.write_tls(&mut stream)?; - } - - if client.wants_read() { - if client.read_tls(&mut stream)? == 0 { - return Err(From::from("Connection closed")); - } - - if let Err(err) = client.process_new_packets() { - return match err { - Error::InvalidCertificateData(_) - | Error::InvalidCertificateSignature - | Error::InvalidCertificateSignatureType - | Error::InvalidCertificateEncoding - | Error::AlertReceived(_) => Ok(Verdict::Reject(err)), - _ => Err(From::from(format!("{:?}", err))), - }; - } - - if client.reader().read(&mut [0])? > 0 { - return Ok(Verdict::Accept); - } - } - } -} - -fn main() { - let args: Vec = env::args().collect(); - let (host, port, config) = parse_args(&args).unwrap_or_else(|err| { - println!("Argument error: {}", err); - process::exit(2); - }); - - match communicate(host, port, config) { - Ok(Verdict::Accept) => { - println!("ACCEPT"); - process::exit(0); - } - Ok(Verdict::Reject(reason)) => { - println!("{:?}", reason); - println!("REJECT"); - process::exit(0); - } - Err(err) => { - println!("{}", err); - process::exit(1); - } - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/LICENSE-APACHE temporalio-1.3.0/vendor/rustls-0.20.8/LICENSE-APACHE --- temporalio-1.3.0/vendor/rustls-0.20.8/LICENSE-APACHE 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/LICENSE-APACHE 1970-01-01 00:00:00.000000000 +0000 @@ -1,201 +0,0 @@ - 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 -Nru temporalio-1.3.0/vendor/rustls-0.20.8/LICENSE-ISC temporalio-1.3.0/vendor/rustls-0.20.8/LICENSE-ISC --- temporalio-1.3.0/vendor/rustls-0.20.8/LICENSE-ISC 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/LICENSE-ISC 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -ISC License (ISC) -Copyright (c) 2016, Joseph Birr-Pixton - -Permission to use, copy, modify, and/or distribute this software for -any purpose with or without fee is hereby granted, provided that the -above copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL -WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE -AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL -DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR -PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS -ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF -THIS SOFTWARE. diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/LICENSE-MIT temporalio-1.3.0/vendor/rustls-0.20.8/LICENSE-MIT --- temporalio-1.3.0/vendor/rustls-0.20.8/LICENSE-MIT 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/LICENSE-MIT 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -Copyright (c) 2016 Joseph Birr-Pixton - -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 -Nru temporalio-1.3.0/vendor/rustls-0.20.8/README.md temporalio-1.3.0/vendor/rustls-0.20.8/README.md --- temporalio-1.3.0/vendor/rustls-0.20.8/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/README.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,298 +0,0 @@ -

- -

- -

-Rustls is a modern TLS library written in Rust. It uses ring for cryptography and webpki for certificate -verification. -

- -# Status -Rustls is ready for use. There are no major breaking interface changes -envisioned after the set included in the 0.20 release. - -If you'd like to help out, please see [CONTRIBUTING.md](CONTRIBUTING.md). - -[![Build Status](https://github.com/rustls/rustls/actions/workflows/build.yml/badge.svg?branch=main)](https://github.com/rustls/rustls/actions/workflows/build.yml?query=branch%3Amain) -[![Coverage Status (codecov.io)](https://codecov.io/gh/rustls/rustls/branch/main/graph/badge.svg)](https://codecov.io/gh/rustls/rustls/) -[![Documentation](https://docs.rs/rustls/badge.svg)](https://docs.rs/rustls/) -[![Chat](https://img.shields.io/discord/976380008299917365?logo=discord)](https://discord.gg/MCSB76RU96) - -## Release history - -* Next release - - Planned: removal of unused signature verification schemes at link-time. -* 0.20.8 (2023-01-12) - - Yield an error from `ConnectionCommon::read_tls()` if buffers are full. - Both a full deframer buffer and a full incoming plaintext buffer will - now cause an error to be returned. Callers should call `process_new_packets()` - and read out the plaintext data from `reader()` after each successful call to `read_tls()`. - - The minimum supported Rust version is now 1.57.0 due to some dependencies - requiring it. -* 0.20.7 (2022-10-18) - - Expose secret extraction API under the `secret_extraction` cargo feature. - This is designed to enable switching from rustls to kTLS (kernel TLS - offload) after a successful TLS 1.2/1.3 handshake, for example. - - Move filtering of signature schemes after config selection, avoiding the need - for linking in encryption/decryption code for all cipher suites at the cost of - exposing more signature schemes in the `ClientHello` emitted by the `Acceptor`. - - Expose AlertDescription, ContentType, and HandshakeType, - SignatureAlgorithm, and NamedGroup as part of the stable API. Previously they - were part of the unstable internals API, but were referenced by parts of the - stable API. - - We now have a [Discord channel](https://discord.gg/MCSB76RU96) for community - discussions. - - The minimum supported Rust version is now 1.56.0 due to several dependencies - requiring it. -* 0.20.6 (2022-05-18) - - 0.20.5 included a change to track more context for the `Error::CorruptMessage` - which made API-incompatible changes to the `Error` type. We yanked 0.20.5 - and have reverted that change as part of 0.20.6. -* 0.20.5 (2022-05-14) - - Correct compatbility with servers which return no TLS extensions and take - advantage of a special case encoding. - - Remove spurious warn-level logging introduced in 0.20.3. - - Expose cipher suites in `ClientHello` type. - - Allow verification of IP addresses with `dangerous_config` enabled. - - Retry I/O operations in `ConnectionCommon::complete_io()` when interrupted. - - Fix server::ResolvesServerCertUsingSni case sensitivity. -* 0.20.4 (2022-02-19) - - Correct regression in QUIC 0-RTT support. -* 0.20.3 (2022-02-13) - - Support loading ECDSA keys in SEC1 format. - - Support receipt of 0-RTT "early data" in TLS1.3 servers. It is not enabled - by default; opt in by setting `ServerConfig::max_early_data_size` to a non-zero - value. - - Support sending of data with the first server flight. This is also not - enabled by default either: opt in by setting `ServerConfig::send_half_rtt_data`. - - Support `read_buf` interface when compiled with nightly. This means - data can be safely read out of a rustls connection into a buffer without - the buffer requiring initialisation first. Set the `read_buf` feature to - use this. - - Improve efficiency when writing vectors of TLS types. - - Reduce copying and improve efficiency in TLS1.2 handshake. -* 0.20.2 (2021-11-21) - - Fix `CipherSuite::as_str()` value (as introduced in 0.20.1). -* 0.20.1 (2021-11-14) - - Allow cipher suite enum items to be stringified. - - Improve documentation of configuration builder types. - - Ensure unused cipher suites can be removed at link-time. - - Ensure single-use error types implement `std::error::Error`, and are public. - -See [RELEASE_NOTES.md](RELEASE_NOTES.md) for further change history. - -# Documentation -Lives here: https://docs.rs/rustls/ - -# Approach -Rustls is a TLS library that aims to provide a good level of cryptographic security, -requires no configuration to achieve that security, and provides no unsafe features or -obsolete cryptography. - -## Current features - -* TLS1.2 and TLS1.3. -* ECDSA, Ed25519 or RSA server authentication by clients. -* ECDSA, Ed25519 or RSA server authentication by servers. -* Forward secrecy using ECDHE; with curve25519, nistp256 or nistp384 curves. -* AES128-GCM and AES256-GCM bulk encryption, with safe nonces. -* ChaCha20-Poly1305 bulk encryption ([RFC7905](https://tools.ietf.org/html/rfc7905)). -* ALPN support. -* SNI support. -* Tunable fragment size to make TLS messages match size of underlying transport. -* Optional use of vectored IO to minimise system calls. -* TLS1.2 session resumption. -* TLS1.2 resumption via tickets ([RFC5077](https://tools.ietf.org/html/rfc5077)). -* TLS1.3 resumption via tickets or session storage. -* TLS1.3 0-RTT data for clients. -* TLS1.3 0-RTT data for servers. -* Client authentication by clients. -* Client authentication by servers. -* Extended master secret support ([RFC7627](https://tools.ietf.org/html/rfc7627)). -* Exporters ([RFC5705](https://tools.ietf.org/html/rfc5705)). -* OCSP stapling by servers. -* SCT stapling by servers. -* SCT verification by clients. - -## Possible future features - -* PSK support. -* OCSP verification by clients. -* Certificate pinning. - -## Non-features - -For reasons [explained in the manual](https://docs.rs/rustls/latest/rustls/manual/_02_tls_vulnerabilities/index.html), -rustls does not and will not support: - -* SSL1, SSL2, SSL3, TLS1 or TLS1.1. -* RC4. -* DES or triple DES. -* EXPORT ciphersuites. -* MAC-then-encrypt ciphersuites. -* Ciphersuites without forward secrecy. -* Renegotiation. -* Kerberos. -* Compression. -* Discrete-log Diffie-Hellman. -* Automatic protocol version downgrade. - -There are plenty of other libraries that provide these features should you -need them. - -### Platform support - -Rustls uses [`ring`](https://crates.io/crates/ring) for implementing the -cryptography in TLS. As a result, rustls only runs on platforms -[supported by `ring`](https://github.com/briansmith/ring#online-automated-testing). -At the time of writing this means x86, x86-64, armv7, and aarch64. - -Rustls requires Rust 1.56 or later. - -# Example code -There are two example programs which use -[mio](https://github.com/carllerche/mio) to do asynchronous IO. - -## Client example program -The client example program is named `tlsclient-mio`. The interface looks like: - -```tlsclient-mio -Connects to the TLS server at hostname:PORT. The default PORT -is 443. By default, this reads a request from stdin (to EOF) -before making the connection. --http replaces this with a -basic HTTP GET request for /. - -If --cafile is not supplied, a built-in set of CA certificates -are used from the webpki-roots crate. - -Usage: - tlsclient-mio [options] [--suite SUITE ...] [--proto PROTO ...] [--protover PROTOVER ...] - tlsclient-mio (--version | -v) - tlsclient-mio (--help | -h) - -Options: - -p, --port PORT Connect to PORT [default: 443]. - --http Send a basic HTTP GET request for /. - --cafile CAFILE Read root certificates from CAFILE. - --auth-key KEY Read client authentication key from KEY. - --auth-certs CERTS Read client authentication certificates from CERTS. - CERTS must match up with KEY. - --protover VERSION Disable default TLS version list, and use - VERSION instead. May be used multiple times. - --suite SUITE Disable default cipher suite list, and use - SUITE instead. May be used multiple times. - --proto PROTOCOL Send ALPN extension containing PROTOCOL. - May be used multiple times to offer several protocols. - --cache CACHE Save session cache to file CACHE. - --no-tickets Disable session ticket support. - --no-sni Disable server name indication support. - --insecure Disable certificate verification. - --verbose Emit log output. - --max-frag-size M Limit outgoing messages to M bytes. - --version, -v Show tool version. - --help, -h Show this screen. -``` - -Some sample runs: - -``` -$ cargo run --bin tlsclient-mio -- --http mozilla-modern.badssl.com -HTTP/1.1 200 OK -Server: nginx/1.6.2 (Ubuntu) -Date: Wed, 01 Jun 2016 18:44:00 GMT -Content-Type: text/html -Content-Length: 644 -(...) -``` - -or - -``` -$ cargo run --bin tlsclient-mio -- --http expired.badssl.com -TLS error: WebPkiError(CertExpired, ValidateServerCert) -Connection closed -``` - -## Server example program -The server example program is named `tlsserver-mio`. The interface looks like: - -```tlsserver-mio -Runs a TLS server on :PORT. The default PORT is 443. - -`echo' mode means the server echoes received data on each connection. - -`http' mode means the server blindly sends a HTTP response on each -connection. - -`forward' means the server forwards plaintext to a connection made to -localhost:fport. - -`--certs' names the full certificate chain, `--key' provides the -RSA private key. - -Usage: - tlsserver-mio --certs CERTFILE --key KEYFILE [--suite SUITE ...] [--proto PROTO ...] [--protover PROTOVER ...] [options] echo - tlsserver-mio --certs CERTFILE --key KEYFILE [--suite SUITE ...] [--proto PROTO ...] [--protover PROTOVER ...] [options] http - tlsserver-mio --certs CERTFILE --key KEYFILE [--suite SUITE ...] [--proto PROTO ...] [--protover PROTOVER ...] [options] forward - tlsserver-mio (--version | -v) - tlsserver-mio (--help | -h) - -Options: - -p, --port PORT Listen on PORT [default: 443]. - --certs CERTFILE Read server certificates from CERTFILE. - This should contain PEM-format certificates - in the right order (the first certificate should - certify KEYFILE, the last should be a root CA). - --key KEYFILE Read private key from KEYFILE. This should be a RSA - private key or PKCS8-encoded private key, in PEM format. - --ocsp OCSPFILE Read DER-encoded OCSP response from OCSPFILE and staple - to certificate. Optional. - --auth CERTFILE Enable client authentication, and accept certificates - signed by those roots provided in CERTFILE. - --require-auth Send a fatal alert if the client does not complete client - authentication. - --resumption Support session resumption. - --tickets Support tickets. - --protover VERSION Disable default TLS version list, and use - VERSION instead. May be used multiple times. - --suite SUITE Disable default cipher suite list, and use - SUITE instead. May be used multiple times. - --proto PROTOCOL Negotiate PROTOCOL using ALPN. - May be used multiple times. - --verbose Emit log output. - --version, -v Show tool version. - --help, -h Show this screen. -``` - -Here's a sample run; we start a TLS echo server, then connect to it with -`openssl` and `tlsclient-mio`: - -``` -$ cargo run --bin tlsserver-mio -- --certs test-ca/rsa/end.fullchain --key test-ca/rsa/end.rsa -p 8443 echo & -$ echo hello world | openssl s_client -ign_eof -quiet -connect localhost:8443 -depth=2 CN = ponytown RSA CA -verify error:num=19:self signed certificate in certificate chain -hello world -^C -$ echo hello world | cargo run --bin tlsclient-mio -- --cafile test-ca/rsa/ca.cert -p 8443 localhost -hello world -^C -``` - -# License - -Rustls is distributed under the following three licenses: - -- Apache License version 2.0. -- MIT license. -- ISC license. - -These are included as LICENSE-APACHE, LICENSE-MIT and LICENSE-ISC -respectively. You may use this software under the terms of any -of these licenses, at your option. - -# Code of conduct - -This project adopts the [Rust Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct). -Please email rustls-mod@googlegroups.com to report any instance of misconduct, or if you -have any comments or questions on the Code of Conduct. diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/anchors.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/anchors.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/anchors.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/anchors.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,154 +0,0 @@ -use crate::key; -#[cfg(feature = "logging")] -use crate::log::{debug, trace}; -use crate::msgs::handshake::{DistinguishedName, DistinguishedNames}; -use crate::x509; - -/// A trust anchor, commonly known as a "Root Certificate." -#[derive(Debug, Clone)] -pub struct OwnedTrustAnchor { - subject: Vec, - spki: Vec, - name_constraints: Option>, -} - -impl OwnedTrustAnchor { - /// Get a `webpki::TrustAnchor` by borrowing the owned elements. - pub(crate) fn to_trust_anchor(&self) -> webpki::TrustAnchor { - webpki::TrustAnchor { - subject: &self.subject, - spki: &self.spki, - name_constraints: self.name_constraints.as_deref(), - } - } - - /// Constructs an `OwnedTrustAnchor` from its components. - /// - /// All inputs are DER-encoded. - /// - /// `subject` is the [Subject] field of the trust anchor. - /// - /// `spki` is the [SubjectPublicKeyInfo] field of the trust anchor. - /// - /// `name_constraints` is the [Name Constraints] to - /// apply for this trust anchor, if any. - /// - /// [Subject]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6 - /// [SubjectPublicKeyInfo]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.7 - /// [Name Constraints]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.10 - pub fn from_subject_spki_name_constraints( - subject: impl Into>, - spki: impl Into>, - name_constraints: Option>>, - ) -> Self { - Self { - subject: subject.into(), - spki: spki.into(), - name_constraints: name_constraints.map(|x| x.into()), - } - } - - /// Return the subject field. - /// - /// This can be decoded using [x509-parser's FromDer trait](https://docs.rs/x509-parser/latest/x509_parser/traits/trait.FromDer.html). - /// - /// ```ignore - /// use x509_parser::traits::FromDer; - /// println!("{}", x509_parser::x509::X509Name::from_der(anchor.subject())?.1); - /// ``` - pub fn subject(&self) -> &[u8] { - &self.subject - } -} - -/// A container for root certificates able to provide a root-of-trust -/// for connection authentication. -#[derive(Debug, Clone)] -pub struct RootCertStore { - /// The list of roots. - pub roots: Vec, -} - -impl RootCertStore { - /// Make a new, empty `RootCertStore`. - pub fn empty() -> Self { - Self { roots: Vec::new() } - } - - /// Return true if there are no certificates. - pub fn is_empty(&self) -> bool { - self.len() == 0 - } - - /// Say how many certificates are in the container. - pub fn len(&self) -> usize { - self.roots.len() - } - - /// Return the Subject Names for certificates in the container. - #[deprecated(since = "0.20.7", note = "Use OwnedTrustAnchor::subject() instead")] - pub fn subjects(&self) -> DistinguishedNames { - let mut r = DistinguishedNames::new(); - - for ota in &self.roots { - let mut name = Vec::new(); - name.extend_from_slice(&ota.subject); - x509::wrap_in_sequence(&mut name); - r.push(DistinguishedName::new(name)); - } - - r - } - - /// Add a single DER-encoded certificate to the store. - pub fn add(&mut self, der: &key::Certificate) -> Result<(), webpki::Error> { - let ta = webpki::TrustAnchor::try_from_cert_der(&der.0)?; - let ota = OwnedTrustAnchor::from_subject_spki_name_constraints( - ta.subject, - ta.spki, - ta.name_constraints, - ); - self.roots.push(ota); - Ok(()) - } - - /// Adds all the given TrustAnchors `anchors`. This does not - /// fail. - pub fn add_server_trust_anchors( - &mut self, - trust_anchors: impl Iterator, - ) { - self.roots.extend(trust_anchors) - } - - /// Parse the given DER-encoded certificates and add all that can be parsed - /// in a best-effort fashion. - /// - /// This is because large collections of root certificates often - /// include ancient or syntactically invalid certificates. - /// - /// Returns the number of certificates added, and the number that were ignored. - pub fn add_parsable_certificates(&mut self, der_certs: &[Vec]) -> (usize, usize) { - let mut valid_count = 0; - let mut invalid_count = 0; - - for der_cert in der_certs { - #[cfg_attr(not(feature = "logging"), allow(unused_variables))] - match self.add(&key::Certificate(der_cert.clone())) { - Ok(_) => valid_count += 1, - Err(err) => { - trace!("invalid cert der {:?}", der_cert); - debug!("certificate parsing failed: {:?}", err); - invalid_count += 1 - } - } - } - - debug!( - "add_parsable_certificates processed {} valid and {} invalid certs", - valid_count, invalid_count - ); - - (valid_count, invalid_count) - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/bs_debug.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/bs_debug.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/bs_debug.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/bs_debug.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -use std::fmt; - -/// Alternative implementation of `fmt::Debug` for byte slice. -/// -/// Standard `Debug` implementation for `[u8]` is comma separated -/// list of numbers. Since large amount of byte strings are in fact -/// ASCII strings or contain a lot of ASCII strings (e. g. HTTP), -/// it is convenient to print strings as ASCII when possible. -/// -/// This struct wraps `&[u8]` just to override `fmt::Debug`. -/// -/// `BsDebug` is not a part of public API of bytes crate. -pub(crate) struct BsDebug<'a>(pub(crate) &'a [u8]); - -impl<'a> fmt::Debug for BsDebug<'a> { - fn fmt(&self, fmt: &mut fmt::Formatter) -> Result<(), fmt::Error> { - write!(fmt, "b\"")?; - for &c in self.0 { - // https://doc.rust-lang.org/reference.html#byte-escapes - if c == b'\n' { - write!(fmt, "\\n")?; - } else if c == b'\r' { - write!(fmt, "\\r")?; - } else if c == b'\t' { - write!(fmt, "\\t")?; - } else if c == b'\\' || c == b'"' { - write!(fmt, "\\{}", c as char)?; - } else if c == b'\0' { - write!(fmt, "\\0")?; - // ASCII printable - } else if (0x20..0x7f).contains(&c) { - write!(fmt, "{}", c as char)?; - } else { - write!(fmt, "\\x{:02x}", c)?; - } - } - write!(fmt, "\"")?; - Ok(()) - } -} - -#[cfg(test)] -mod test { - use super::BsDebug; - - #[test] - fn debug() { - let vec: Vec<_> = (0..0x100).map(|b| b as u8).collect(); - - let expected = "b\"\ - \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07\ - \\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\ - \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\ - \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f\ - \x20!\\\"#$%&'()*+,-./0123456789:;<=>?\ - @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_\ - `abcdefghijklmnopqrstuvwxyz{|}~\\x7f\ - \\x80\\x81\\x82\\x83\\x84\\x85\\x86\\x87\ - \\x88\\x89\\x8a\\x8b\\x8c\\x8d\\x8e\\x8f\ - \\x90\\x91\\x92\\x93\\x94\\x95\\x96\\x97\ - \\x98\\x99\\x9a\\x9b\\x9c\\x9d\\x9e\\x9f\ - \\xa0\\xa1\\xa2\\xa3\\xa4\\xa5\\xa6\\xa7\ - \\xa8\\xa9\\xaa\\xab\\xac\\xad\\xae\\xaf\ - \\xb0\\xb1\\xb2\\xb3\\xb4\\xb5\\xb6\\xb7\ - \\xb8\\xb9\\xba\\xbb\\xbc\\xbd\\xbe\\xbf\ - \\xc0\\xc1\\xc2\\xc3\\xc4\\xc5\\xc6\\xc7\ - \\xc8\\xc9\\xca\\xcb\\xcc\\xcd\\xce\\xcf\ - \\xd0\\xd1\\xd2\\xd3\\xd4\\xd5\\xd6\\xd7\ - \\xd8\\xd9\\xda\\xdb\\xdc\\xdd\\xde\\xdf\ - \\xe0\\xe1\\xe2\\xe3\\xe4\\xe5\\xe6\\xe7\ - \\xe8\\xe9\\xea\\xeb\\xec\\xed\\xee\\xef\ - \\xf0\\xf1\\xf2\\xf3\\xf4\\xf5\\xf6\\xf7\ - \\xf8\\xf9\\xfa\\xfb\\xfc\\xfd\\xfe\\xff\""; - - assert_eq!(expected, format!("{:?}", BsDebug(&vec))); - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/builder.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/builder.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/builder.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/builder.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,268 +0,0 @@ -use crate::error::Error; -use crate::kx::{SupportedKxGroup, ALL_KX_GROUPS}; -use crate::suites::{SupportedCipherSuite, DEFAULT_CIPHER_SUITES}; -use crate::versions; - -use std::fmt; -use std::marker::PhantomData; - -/// Building a [`ServerConfig`] or [`ClientConfig`] in a linker-friendly and -/// complete way. -/// -/// Linker-friendly: meaning unused cipher suites, protocol -/// versions, key exchange mechanisms, etc. can be discarded -/// by the linker as they'll be unreferenced. -/// -/// Complete: the type system ensures all decisions required to run a -/// server or client have been made by the time the process finishes. -/// -/// Example, to make a [`ServerConfig`]: -/// -/// ```no_run -/// # use rustls::ServerConfig; -/// # let certs = vec![]; -/// # let private_key = rustls::PrivateKey(vec![]); -/// ServerConfig::builder() -/// .with_safe_default_cipher_suites() -/// .with_safe_default_kx_groups() -/// .with_safe_default_protocol_versions() -/// .unwrap() -/// .with_no_client_auth() -/// .with_single_cert(certs, private_key) -/// .expect("bad certificate/key"); -/// ``` -/// -/// This may be shortened to: -/// -/// ```no_run -/// # use rustls::ServerConfig; -/// # let certs = vec![]; -/// # let private_key = rustls::PrivateKey(vec![]); -/// ServerConfig::builder() -/// .with_safe_defaults() -/// .with_no_client_auth() -/// .with_single_cert(certs, private_key) -/// .expect("bad certificate/key"); -/// ``` -/// -/// To make a [`ClientConfig`]: -/// -/// ```no_run -/// # use rustls::ClientConfig; -/// # let root_certs = rustls::RootCertStore::empty(); -/// # let certs = vec![]; -/// # let private_key = rustls::PrivateKey(vec![]); -/// ClientConfig::builder() -/// .with_safe_default_cipher_suites() -/// .with_safe_default_kx_groups() -/// .with_safe_default_protocol_versions() -/// .unwrap() -/// .with_root_certificates(root_certs) -/// .with_single_cert(certs, private_key) -/// .expect("bad certificate/key"); -/// ``` -/// -/// This may be shortened to: -/// -/// ``` -/// # use rustls::ClientConfig; -/// # let root_certs = rustls::RootCertStore::empty(); -/// ClientConfig::builder() -/// .with_safe_defaults() -/// .with_root_certificates(root_certs) -/// .with_no_client_auth(); -/// ``` -/// -/// The types used here fit together like this: -/// -/// 1. Call [`ClientConfig::builder()`] or [`ServerConfig::builder()`] to initialize a builder. -/// 1. You must make a decision on which cipher suites to use, typically -/// by calling [`ConfigBuilder::with_safe_default_cipher_suites()`]. -/// 2. Now you must make a decision -/// on key exchange groups: typically by calling -/// [`ConfigBuilder::with_safe_default_kx_groups()`]. -/// 3. Now you must make -/// a decision on which protocol versions to support, typically by calling -/// [`ConfigBuilder::with_safe_default_protocol_versions()`]. -/// 5. Now see [`ConfigBuilder`] or -/// [`ConfigBuilder`] for further steps. -/// -/// [`ServerConfig`]: crate::ServerConfig -/// [`ClientConfig`]: crate::ClientConfig -/// [`ClientConfig::builder()`]: crate::ClientConfig::builder() -/// [`ServerConfig::builder()`]: crate::ServerConfig::builder() -/// [`ConfigBuilder`]: struct.ConfigBuilder.html#impl-3 -/// [`ConfigBuilder`]: struct.ConfigBuilder.html#impl-6 -#[derive(Clone)] -pub struct ConfigBuilder { - pub(crate) state: State, - pub(crate) side: PhantomData, -} - -impl fmt::Debug for ConfigBuilder { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let side_name = std::any::type_name::(); - let side_name = side_name - .split("::") - .last() - .unwrap_or(side_name); - f.debug_struct(&format!("ConfigBuilder<{}, _>", side_name)) - .field("state", &self.state) - .finish() - } -} - -/// Config builder state where the caller must supply cipher suites. -/// -/// For more information, see the [`ConfigBuilder`] documentation. -#[derive(Clone, Debug)] -pub struct WantsCipherSuites(pub(crate) ()); - -impl ConfigBuilder { - /// Start side-specific config with defaults for underlying cryptography. - /// - /// If used, this will enable all safe supported cipher suites ([`DEFAULT_CIPHER_SUITES`]), all - /// safe supported key exchange groups ([`ALL_KX_GROUPS`]) and all safe supported protocol - /// versions ([`DEFAULT_VERSIONS`]). - /// - /// These are safe defaults, useful for 99% of applications. - /// - /// [`DEFAULT_VERSIONS`]: versions::DEFAULT_VERSIONS - pub fn with_safe_defaults(self) -> ConfigBuilder { - ConfigBuilder { - state: WantsVerifier { - cipher_suites: DEFAULT_CIPHER_SUITES.to_vec(), - kx_groups: ALL_KX_GROUPS.to_vec(), - versions: versions::EnabledVersions::new(versions::DEFAULT_VERSIONS), - }, - side: self.side, - } - } - - /// Choose a specific set of cipher suites. - pub fn with_cipher_suites( - self, - cipher_suites: &[SupportedCipherSuite], - ) -> ConfigBuilder { - ConfigBuilder { - state: WantsKxGroups { - cipher_suites: cipher_suites.to_vec(), - }, - side: self.side, - } - } - - /// Choose the default set of cipher suites ([`DEFAULT_CIPHER_SUITES`]). - /// - /// Note that this default provides only high-quality suites: there is no need - /// to filter out low-, export- or NULL-strength cipher suites: rustls does not - /// implement these. - pub fn with_safe_default_cipher_suites(self) -> ConfigBuilder { - self.with_cipher_suites(DEFAULT_CIPHER_SUITES) - } -} - -/// Config builder state where the caller must supply key exchange groups. -/// -/// For more information, see the [`ConfigBuilder`] documentation. -#[derive(Clone, Debug)] -pub struct WantsKxGroups { - cipher_suites: Vec, -} - -impl ConfigBuilder { - /// Choose a specific set of key exchange groups. - pub fn with_kx_groups( - self, - kx_groups: &[&'static SupportedKxGroup], - ) -> ConfigBuilder { - ConfigBuilder { - state: WantsVersions { - cipher_suites: self.state.cipher_suites, - kx_groups: kx_groups.to_vec(), - }, - side: self.side, - } - } - - /// Choose the default set of key exchange groups ([`ALL_KX_GROUPS`]). - /// - /// This is a safe default: rustls doesn't implement any poor-quality groups. - pub fn with_safe_default_kx_groups(self) -> ConfigBuilder { - self.with_kx_groups(&ALL_KX_GROUPS) - } -} - -/// Config builder state where the caller must supply TLS protocol versions. -/// -/// For more information, see the [`ConfigBuilder`] documentation. -#[derive(Clone, Debug)] -pub struct WantsVersions { - cipher_suites: Vec, - kx_groups: Vec<&'static SupportedKxGroup>, -} - -impl ConfigBuilder { - /// Accept the default protocol versions: both TLS1.2 and TLS1.3 are enabled. - pub fn with_safe_default_protocol_versions( - self, - ) -> Result, Error> { - self.with_protocol_versions(versions::DEFAULT_VERSIONS) - } - - /// Use a specific set of protocol versions. - pub fn with_protocol_versions( - self, - versions: &[&'static versions::SupportedProtocolVersion], - ) -> Result, Error> { - let mut any_usable_suite = false; - for suite in &self.state.cipher_suites { - if versions.contains(&suite.version()) { - any_usable_suite = true; - break; - } - } - - if !any_usable_suite { - return Err(Error::General("no usable cipher suites configured".into())); - } - - if self.state.kx_groups.is_empty() { - return Err(Error::General("no kx groups configured".into())); - } - - Ok(ConfigBuilder { - state: WantsVerifier { - cipher_suites: self.state.cipher_suites, - kx_groups: self.state.kx_groups, - versions: versions::EnabledVersions::new(versions), - }, - side: self.side, - }) - } -} - -/// Config builder state where the caller must supply a verifier. -/// -/// For more information, see the [`ConfigBuilder`] documentation. -#[derive(Clone, Debug)] -pub struct WantsVerifier { - pub(crate) cipher_suites: Vec, - pub(crate) kx_groups: Vec<&'static SupportedKxGroup>, - pub(crate) versions: versions::EnabledVersions, -} - -/// Helper trait to abstract [`ConfigBuilder`] over building a [`ClientConfig`] or [`ServerConfig`]. -/// -/// [`ClientConfig`]: crate::ClientConfig -/// [`ServerConfig`]: crate::ServerConfig -pub trait ConfigSide: sealed::Sealed {} - -impl ConfigSide for crate::ClientConfig {} -impl ConfigSide for crate::ServerConfig {} - -mod sealed { - pub trait Sealed {} - impl Sealed for crate::ClientConfig {} - impl Sealed for crate::ServerConfig {} -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/check.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/check.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/check.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/check.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -use crate::error::Error; -#[cfg(feature = "logging")] -use crate::log::warn; -use crate::msgs::enums::{ContentType, HandshakeType}; -use crate::msgs::message::MessagePayload; - -/// For a Message $m, and a HandshakePayload enum member $payload_type, -/// return Ok(payload) if $m is both a handshake message and one that -/// has the given $payload_type. If not, return Err(rustls::Error) quoting -/// $handshake_type as the expected handshake type. -macro_rules! require_handshake_msg( - ( $m:expr, $handshake_type:path, $payload_type:path ) => ( - match &$m.payload { - MessagePayload::Handshake { parsed: $crate::msgs::handshake::HandshakeMessagePayload { - payload: $payload_type(hm), - .. - }, .. } => Ok(hm), - payload => Err($crate::check::inappropriate_handshake_message( - payload, - &[$crate::msgs::enums::ContentType::Handshake], - &[$handshake_type])) - } - ) -); - -/// Like require_handshake_msg, but moves the payload out of $m. -#[cfg(feature = "tls12")] -macro_rules! require_handshake_msg_move( - ( $m:expr, $handshake_type:path, $payload_type:path ) => ( - match $m.payload { - MessagePayload::Handshake { parsed: $crate::msgs::handshake::HandshakeMessagePayload { - payload: $payload_type(hm), - .. - }, .. } => Ok(hm), - payload => - Err($crate::check::inappropriate_handshake_message( - &payload, - &[$crate::msgs::enums::ContentType::Handshake], - &[$handshake_type])) - } - ) -); - -pub(crate) fn inappropriate_message( - payload: &MessagePayload, - content_types: &[ContentType], -) -> Error { - warn!( - "Received a {:?} message while expecting {:?}", - payload.content_type(), - content_types - ); - Error::InappropriateMessage { - expect_types: content_types.to_vec(), - got_type: payload.content_type(), - } -} - -pub(crate) fn inappropriate_handshake_message( - payload: &MessagePayload, - content_types: &[ContentType], - handshake_types: &[HandshakeType], -) -> Error { - match payload { - MessagePayload::Handshake { parsed, .. } => { - warn!( - "Received a {:?} handshake message while expecting {:?}", - parsed.typ, handshake_types - ); - Error::InappropriateHandshakeMessage { - expect_types: handshake_types.to_vec(), - got_type: parsed.typ, - } - } - payload => inappropriate_message(payload, content_types), - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/cipher.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/cipher.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/cipher.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/cipher.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,101 +0,0 @@ -use crate::error::Error; -use crate::msgs::codec; -use crate::msgs::message::{BorrowedPlainMessage, OpaqueMessage, PlainMessage}; - -use ring::{aead, hkdf}; - -/// Objects with this trait can decrypt TLS messages. -pub trait MessageDecrypter: Send + Sync { - /// Perform the decryption over the concerned TLS message. - - fn decrypt(&self, m: OpaqueMessage, seq: u64) -> Result; -} - -/// Objects with this trait can encrypt TLS messages. -pub(crate) trait MessageEncrypter: Send + Sync { - fn encrypt(&self, m: BorrowedPlainMessage, seq: u64) -> Result; -} - -impl dyn MessageEncrypter { - pub(crate) fn invalid() -> Box { - Box::new(InvalidMessageEncrypter {}) - } -} - -impl dyn MessageDecrypter { - pub(crate) fn invalid() -> Box { - Box::new(InvalidMessageDecrypter {}) - } -} - -/// A write or read IV. -#[derive(Default)] -pub(crate) struct Iv(pub(crate) [u8; ring::aead::NONCE_LEN]); - -impl Iv { - #[cfg(feature = "tls12")] - fn new(value: [u8; ring::aead::NONCE_LEN]) -> Self { - Self(value) - } - - #[cfg(feature = "tls12")] - pub(crate) fn copy(value: &[u8]) -> Self { - debug_assert_eq!(value.len(), ring::aead::NONCE_LEN); - let mut iv = Self::new(Default::default()); - iv.0.copy_from_slice(value); - iv - } - - #[cfg(test)] - pub(crate) fn value(&self) -> &[u8; 12] { - &self.0 - } -} - -pub(crate) struct IvLen; - -impl hkdf::KeyType for IvLen { - fn len(&self) -> usize { - aead::NONCE_LEN - } -} - -impl From> for Iv { - fn from(okm: hkdf::Okm) -> Self { - let mut r = Self(Default::default()); - okm.fill(&mut r.0[..]).unwrap(); - r - } -} - -pub(crate) fn make_nonce(iv: &Iv, seq: u64) -> ring::aead::Nonce { - let mut nonce = [0u8; ring::aead::NONCE_LEN]; - codec::put_u64(seq, &mut nonce[4..]); - - nonce - .iter_mut() - .zip(iv.0.iter()) - .for_each(|(nonce, iv)| { - *nonce ^= *iv; - }); - - aead::Nonce::assume_unique_for_key(nonce) -} - -/// A `MessageEncrypter` which doesn't work. -struct InvalidMessageEncrypter {} - -impl MessageEncrypter for InvalidMessageEncrypter { - fn encrypt(&self, _m: BorrowedPlainMessage, _seq: u64) -> Result { - Err(Error::General("encrypt not yet available".to_string())) - } -} - -/// A `MessageDecrypter` which doesn't work. -struct InvalidMessageDecrypter {} - -impl MessageDecrypter for InvalidMessageDecrypter { - fn decrypt(&self, _m: OpaqueMessage, _seq: u64) -> Result { - Err(Error::DecryptError) - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/client/builder.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/client/builder.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/client/builder.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/client/builder.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,192 +0,0 @@ -use crate::anchors; -use crate::builder::{ConfigBuilder, WantsVerifier}; -use crate::client::handy; -use crate::client::{ClientConfig, ResolvesClientCert}; -use crate::error::Error; -use crate::key; -use crate::kx::SupportedKxGroup; -use crate::suites::SupportedCipherSuite; -use crate::verify::{self, CertificateTransparencyPolicy}; -use crate::versions; -use crate::NoKeyLog; - -use std::marker::PhantomData; -use std::sync::Arc; -use std::time::SystemTime; - -impl ConfigBuilder { - /// Choose how to verify client certificates. - pub fn with_root_certificates( - self, - root_store: anchors::RootCertStore, - ) -> ConfigBuilder { - ConfigBuilder { - state: WantsTransparencyPolicyOrClientCert { - cipher_suites: self.state.cipher_suites, - kx_groups: self.state.kx_groups, - versions: self.state.versions, - root_store, - }, - side: PhantomData::default(), - } - } - - #[cfg(feature = "dangerous_configuration")] - /// Set a custom certificate verifier. - pub fn with_custom_certificate_verifier( - self, - verifier: Arc, - ) -> ConfigBuilder { - ConfigBuilder { - state: WantsClientCert { - cipher_suites: self.state.cipher_suites, - kx_groups: self.state.kx_groups, - versions: self.state.versions, - verifier, - }, - side: PhantomData::default(), - } - } -} - -/// A config builder state where the caller needs to supply a certificate transparency policy or -/// client certificate resolver. -/// -/// In this state, the caller can optionally enable certificate transparency, or ignore CT and -/// invoke one of the methods related to client certificates (as in the [`WantsClientCert`] state). -/// -/// For more information, see the [`ConfigBuilder`] documentation. -#[derive(Clone, Debug)] -pub struct WantsTransparencyPolicyOrClientCert { - cipher_suites: Vec, - kx_groups: Vec<&'static SupportedKxGroup>, - versions: versions::EnabledVersions, - root_store: anchors::RootCertStore, -} - -impl ConfigBuilder { - /// Set Certificate Transparency logs to use for server certificate validation. - /// - /// Because Certificate Transparency logs are sharded on a per-year basis and can be trusted or - /// distrusted relatively quickly, rustls stores a validation deadline. Server certificates will - /// be validated against the configured CT logs until the deadline expires. After the deadline, - /// certificates will no longer be validated, and a warning message will be logged. The deadline - /// may vary depending on how often you deploy builds with updated dependencies. - pub fn with_certificate_transparency_logs( - self, - logs: &'static [&'static sct::Log], - validation_deadline: SystemTime, - ) -> ConfigBuilder { - self.with_logs(Some(CertificateTransparencyPolicy::new( - logs, - validation_deadline, - ))) - } - - /// Sets a single certificate chain and matching private key for use - /// in client authentication. - /// - /// `cert_chain` is a vector of DER-encoded certificates. - /// `key_der` is a DER-encoded RSA, ECDSA, or Ed25519 private key. - /// - /// This function fails if `key_der` is invalid. - pub fn with_single_cert( - self, - cert_chain: Vec, - key_der: key::PrivateKey, - ) -> Result { - self.with_logs(None) - .with_single_cert(cert_chain, key_der) - } - - /// Do not support client auth. - pub fn with_no_client_auth(self) -> ClientConfig { - self.with_logs(None) - .with_client_cert_resolver(Arc::new(handy::FailResolveClientCert {})) - } - - /// Sets a custom [`ResolvesClientCert`]. - pub fn with_client_cert_resolver( - self, - client_auth_cert_resolver: Arc, - ) -> ClientConfig { - self.with_logs(None) - .with_client_cert_resolver(client_auth_cert_resolver) - } - - fn with_logs( - self, - ct_policy: Option, - ) -> ConfigBuilder { - ConfigBuilder { - state: WantsClientCert { - cipher_suites: self.state.cipher_suites, - kx_groups: self.state.kx_groups, - versions: self.state.versions, - verifier: Arc::new(verify::WebPkiVerifier::new( - self.state.root_store, - ct_policy, - )), - }, - side: PhantomData, - } - } -} - -/// A config builder state where the caller needs to supply whether and how to provide a client -/// certificate. -/// -/// For more information, see the [`ConfigBuilder`] documentation. -#[derive(Clone, Debug)] -pub struct WantsClientCert { - cipher_suites: Vec, - kx_groups: Vec<&'static SupportedKxGroup>, - versions: versions::EnabledVersions, - verifier: Arc, -} - -impl ConfigBuilder { - /// Sets a single certificate chain and matching private key for use - /// in client authentication. - /// - /// `cert_chain` is a vector of DER-encoded certificates. - /// `key_der` is a DER-encoded RSA, ECDSA, or Ed25519 private key. - /// - /// This function fails if `key_der` is invalid. - pub fn with_single_cert( - self, - cert_chain: Vec, - key_der: key::PrivateKey, - ) -> Result { - let resolver = handy::AlwaysResolvesClientCert::new(cert_chain, &key_der)?; - Ok(self.with_client_cert_resolver(Arc::new(resolver))) - } - - /// Do not support client auth. - pub fn with_no_client_auth(self) -> ClientConfig { - self.with_client_cert_resolver(Arc::new(handy::FailResolveClientCert {})) - } - - /// Sets a custom [`ResolvesClientCert`]. - pub fn with_client_cert_resolver( - self, - client_auth_cert_resolver: Arc, - ) -> ClientConfig { - ClientConfig { - cipher_suites: self.state.cipher_suites, - kx_groups: self.state.kx_groups, - alpn_protocols: Vec::new(), - session_storage: handy::ClientSessionMemoryCache::new(256), - max_fragment_size: None, - client_auth_cert_resolver, - enable_tickets: true, - versions: self.state.versions, - enable_sni: true, - verifier: self.state.verifier, - key_log: Arc::new(NoKeyLog {}), - #[cfg(feature = "secret_extraction")] - enable_secret_extraction: false, - enable_early_data: false, - } - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/client/client_conn.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/client/client_conn.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/client/client_conn.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/client/client_conn.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,667 +0,0 @@ -use crate::builder::{ConfigBuilder, WantsCipherSuites}; -use crate::conn::{CommonState, ConnectionCommon, Protocol, Side}; -use crate::enums::{CipherSuite, ProtocolVersion, SignatureScheme}; -use crate::error::Error; -use crate::kx::SupportedKxGroup; -#[cfg(feature = "logging")] -use crate::log::trace; -#[cfg(feature = "quic")] -use crate::msgs::enums::AlertDescription; -use crate::msgs::handshake::ClientExtension; -use crate::sign; -use crate::suites::SupportedCipherSuite; -use crate::verify; -use crate::versions; -#[cfg(feature = "secret_extraction")] -use crate::ExtractedSecrets; -use crate::KeyLog; - -use super::hs; -#[cfg(feature = "quic")] -use crate::quic; - -use std::convert::TryFrom; -use std::error::Error as StdError; -use std::marker::PhantomData; -use std::net::IpAddr; -use std::ops::{Deref, DerefMut}; -use std::sync::Arc; -use std::{fmt, io, mem}; - -/// A trait for the ability to store client session data. -/// The keys and values are opaque. -/// -/// Both the keys and values should be treated as -/// **highly sensitive data**, containing enough key material -/// to break all security of the corresponding session. -/// -/// `put` is a mutating operation; this isn't expressed -/// in the type system to allow implementations freedom in -/// how to achieve interior mutability. `Mutex` is a common -/// choice. -pub trait StoresClientSessions: Send + Sync { - /// Stores a new `value` for `key`. Returns `true` - /// if the value was stored. - fn put(&self, key: Vec, value: Vec) -> bool; - - /// Returns the latest value for `key`. Returns `None` - /// if there's no such value. - fn get(&self, key: &[u8]) -> Option>; -} - -/// A trait for the ability to choose a certificate chain and -/// private key for the purposes of client authentication. -pub trait ResolvesClientCert: Send + Sync { - /// With the server-supplied acceptable issuers in `acceptable_issuers`, - /// the server's supported signature schemes in `sigschemes`, - /// return a certificate chain and signing key to authenticate. - /// - /// `acceptable_issuers` is undecoded and unverified by the rustls - /// library, but it should be expected to contain a DER encodings - /// of X501 NAMEs. - /// - /// Return None to continue the handshake without any client - /// authentication. The server may reject the handshake later - /// if it requires authentication. - fn resolve( - &self, - acceptable_issuers: &[&[u8]], - sigschemes: &[SignatureScheme], - ) -> Option>; - - /// Return true if any certificates at all are available. - fn has_certs(&self) -> bool; -} - -/// Common configuration for (typically) all connections made by -/// a program. -/// -/// Making one of these can be expensive, and should be -/// once per process rather than once per connection. -/// -/// These must be created via the [`ClientConfig::builder()`] function. -/// -/// # Defaults -/// -/// * [`ClientConfig::max_fragment_size`]: the default is `None`: TLS packets are not fragmented to a specific size. -/// * [`ClientConfig::session_storage`]: the default stores 256 sessions in memory. -/// * [`ClientConfig::alpn_protocols`]: the default is empty -- no ALPN protocol is negotiated. -/// * [`ClientConfig::key_log`]: key material is not logged. -#[derive(Clone)] -pub struct ClientConfig { - /// List of ciphersuites, in preference order. - pub(super) cipher_suites: Vec, - - /// List of supported key exchange algorithms, in preference order -- the - /// first element is the highest priority. - /// - /// The first element in this list is the _default key share algorithm_, - /// and in TLS1.3 a key share for it is sent in the client hello. - pub(super) kx_groups: Vec<&'static SupportedKxGroup>, - - /// Which ALPN protocols we include in our client hello. - /// If empty, no ALPN extension is sent. - pub alpn_protocols: Vec>, - - /// How we store session data or tickets. - pub session_storage: Arc, - - /// The maximum size of TLS message we'll emit. If None, we don't limit TLS - /// message lengths except to the 2**16 limit specified in the standard. - /// - /// rustls enforces an arbitrary minimum of 32 bytes for this field. - /// Out of range values are reported as errors from ClientConnection::new. - /// - /// Setting this value to the TCP MSS may improve latency for stream-y workloads. - pub max_fragment_size: Option, - - /// How to decide what client auth certificate/keys to use. - pub client_auth_cert_resolver: Arc, - - /// Whether to support RFC5077 tickets. You must provide a working - /// `session_storage` member for this to have any meaningful - /// effect. - /// - /// The default is true. - pub enable_tickets: bool, - - /// Supported versions, in no particular order. The default - /// is all supported versions. - pub(super) versions: versions::EnabledVersions, - - /// Whether to send the Server Name Indication (SNI) extension - /// during the client handshake. - /// - /// The default is true. - pub enable_sni: bool, - - /// How to verify the server certificate chain. - pub(super) verifier: Arc, - - /// How to output key material for debugging. The default - /// does nothing. - pub key_log: Arc, - - /// Allows traffic secrets to be extracted after the handshake, - /// e.g. for kTLS setup. - #[cfg(feature = "secret_extraction")] - pub enable_secret_extraction: bool, - - /// Whether to send data on the first flight ("early data") in - /// TLS 1.3 handshakes. - /// - /// The default is false. - pub enable_early_data: bool, -} - -impl fmt::Debug for ClientConfig { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("ClientConfig") - .field("alpn_protocols", &self.alpn_protocols) - .field("max_fragment_size", &self.max_fragment_size) - .field("enable_tickets", &self.enable_tickets) - .field("enable_sni", &self.enable_sni) - .field("enable_early_data", &self.enable_early_data) - .finish_non_exhaustive() - } -} - -impl ClientConfig { - /// Create a builder to build up the client configuration. - /// - /// For more information, see the [`ConfigBuilder`] documentation. - pub fn builder() -> ConfigBuilder { - ConfigBuilder { - state: WantsCipherSuites(()), - side: PhantomData::default(), - } - } - - #[doc(hidden)] - /// We support a given TLS version if it's quoted in the configured - /// versions *and* at least one ciphersuite for this version is - /// also configured. - pub fn supports_version(&self, v: ProtocolVersion) -> bool { - self.versions.contains(v) - && self - .cipher_suites - .iter() - .any(|cs| cs.version().version == v) - } - - /// Access configuration options whose use is dangerous and requires - /// extra care. - #[cfg(feature = "dangerous_configuration")] - pub fn dangerous(&mut self) -> danger::DangerousClientConfig { - danger::DangerousClientConfig { cfg: self } - } - - pub(super) fn find_cipher_suite(&self, suite: CipherSuite) -> Option { - self.cipher_suites - .iter() - .copied() - .find(|&scs| scs.suite() == suite) - } -} - -/// Encodes ways a client can know the expected name of the server. -/// -/// This currently covers knowing the DNS name of the server, but -/// will be extended in the future to supporting privacy-preserving names -/// for the server ("ECH"). For this reason this enum is `non_exhaustive`. -/// -/// # Making one -/// -/// If you have a DNS name as a `&str`, this type implements `TryFrom<&str>`, -/// so you can do: -/// -/// ``` -/// # use std::convert::{TryInto, TryFrom}; -/// # use rustls::ServerName; -/// ServerName::try_from("example.com").expect("invalid DNS name"); -/// -/// // or, alternatively... -/// -/// let x = "example.com".try_into().expect("invalid DNS name"); -/// # let _: ServerName = x; -/// ``` -#[non_exhaustive] -#[derive(Clone, Debug, Eq, Hash, PartialEq)] -pub enum ServerName { - /// The server is identified by a DNS name. The name - /// is sent in the TLS Server Name Indication (SNI) - /// extension. - DnsName(verify::DnsName), - - /// The server is identified by an IP address. SNI is not - /// done. - IpAddress(IpAddr), -} - -impl ServerName { - /// Return the name that should go in the SNI extension. - /// If [`None`] is returned, the SNI extension is not included - /// in the handshake. - pub(crate) fn for_sni(&self) -> Option { - match self { - Self::DnsName(dns_name) => Some(dns_name.0.as_ref()), - Self::IpAddress(_) => None, - } - } - - /// Return a prefix-free, unique encoding for the name. - pub(crate) fn encode(&self) -> Vec { - enum UniqueTypeCode { - DnsName = 0x01, - IpAddr = 0x02, - } - - match self { - Self::DnsName(dns_name) => { - let bytes = dns_name.0.as_ref(); - - let mut r = Vec::with_capacity(2 + bytes.as_ref().len()); - r.push(UniqueTypeCode::DnsName as u8); - r.push(bytes.as_ref().len() as u8); - r.extend_from_slice(bytes.as_ref()); - - r - } - Self::IpAddress(address) => { - let string = address.to_string(); - let bytes = string.as_bytes(); - - let mut r = Vec::with_capacity(2 + bytes.len()); - r.push(UniqueTypeCode::IpAddr as u8); - r.push(bytes.len() as u8); - r.extend_from_slice(bytes); - - r - } - } - } -} - -/// Attempt to make a ServerName from a string by parsing -/// it as a DNS name. -impl TryFrom<&str> for ServerName { - type Error = InvalidDnsNameError; - fn try_from(s: &str) -> Result { - match webpki::DnsNameRef::try_from_ascii_str(s) { - Ok(dns) => Ok(Self::DnsName(verify::DnsName(dns.into()))), - Err(webpki::InvalidDnsNameError) => match s.parse() { - Ok(ip) => Ok(Self::IpAddress(ip)), - Err(_) => Err(InvalidDnsNameError), - }, - } - } -} - -/// The provided input could not be parsed because -/// it is not a syntactically-valid DNS Name. -#[derive(Debug)] -pub struct InvalidDnsNameError; - -impl fmt::Display for InvalidDnsNameError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - f.write_str("invalid dns name") - } -} - -impl StdError for InvalidDnsNameError {} - -/// Container for unsafe APIs -#[cfg(feature = "dangerous_configuration")] -pub(super) mod danger { - use std::sync::Arc; - - use super::verify::ServerCertVerifier; - use super::ClientConfig; - - /// Accessor for dangerous configuration options. - #[derive(Debug)] - #[cfg_attr(docsrs, doc(cfg(feature = "dangerous_configuration")))] - pub struct DangerousClientConfig<'a> { - /// The underlying ClientConfig - pub cfg: &'a mut ClientConfig, - } - - impl<'a> DangerousClientConfig<'a> { - /// Overrides the default `ServerCertVerifier` with something else. - pub fn set_certificate_verifier(&mut self, verifier: Arc) { - self.cfg.verifier = verifier; - } - } -} - -#[derive(Debug, PartialEq)] -enum EarlyDataState { - Disabled, - Ready, - Accepted, - AcceptedFinished, - Rejected, -} - -pub(super) struct EarlyData { - state: EarlyDataState, - left: usize, -} - -impl EarlyData { - fn new() -> Self { - Self { - left: 0, - state: EarlyDataState::Disabled, - } - } - - pub(super) fn is_enabled(&self) -> bool { - matches!(self.state, EarlyDataState::Ready | EarlyDataState::Accepted) - } - - fn is_accepted(&self) -> bool { - matches!( - self.state, - EarlyDataState::Accepted | EarlyDataState::AcceptedFinished - ) - } - - pub(super) fn enable(&mut self, max_data: usize) { - assert_eq!(self.state, EarlyDataState::Disabled); - self.state = EarlyDataState::Ready; - self.left = max_data; - } - - pub(super) fn rejected(&mut self) { - trace!("EarlyData rejected"); - self.state = EarlyDataState::Rejected; - } - - pub(super) fn accepted(&mut self) { - trace!("EarlyData accepted"); - assert_eq!(self.state, EarlyDataState::Ready); - self.state = EarlyDataState::Accepted; - } - - pub(super) fn finished(&mut self) { - trace!("EarlyData finished"); - self.state = match self.state { - EarlyDataState::Accepted => EarlyDataState::AcceptedFinished, - _ => panic!("bad EarlyData state"), - } - } - - fn check_write(&mut self, sz: usize) -> io::Result { - match self.state { - EarlyDataState::Disabled => unreachable!(), - EarlyDataState::Ready | EarlyDataState::Accepted => { - let take = if self.left < sz { - mem::replace(&mut self.left, 0) - } else { - self.left -= sz; - sz - }; - - Ok(take) - } - EarlyDataState::Rejected | EarlyDataState::AcceptedFinished => { - Err(io::Error::from(io::ErrorKind::InvalidInput)) - } - } - } - - fn bytes_left(&self) -> usize { - self.left - } -} - -/// Stub that implements io::Write and dispatches to `write_early_data`. -pub struct WriteEarlyData<'a> { - sess: &'a mut ClientConnection, -} - -impl<'a> WriteEarlyData<'a> { - fn new(sess: &'a mut ClientConnection) -> WriteEarlyData<'a> { - WriteEarlyData { sess } - } - - /// How many bytes you may send. Writes will become short - /// once this reaches zero. - pub fn bytes_left(&self) -> usize { - self.sess - .inner - .data - .early_data - .bytes_left() - } -} - -impl<'a> io::Write for WriteEarlyData<'a> { - fn write(&mut self, buf: &[u8]) -> io::Result { - self.sess.write_early_data(buf) - } - - fn flush(&mut self) -> io::Result<()> { - Ok(()) - } -} - -/// This represents a single TLS client connection. -pub struct ClientConnection { - inner: ConnectionCommon, -} - -impl fmt::Debug for ClientConnection { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - f.debug_struct("ClientConnection") - .finish() - } -} - -impl ClientConnection { - /// Make a new ClientConnection. `config` controls how - /// we behave in the TLS protocol, `name` is the - /// name of the server we want to talk to. - pub fn new(config: Arc, name: ServerName) -> Result { - Self::new_inner(config, name, Vec::new(), Protocol::Tcp) - } - - fn new_inner( - config: Arc, - name: ServerName, - extra_exts: Vec, - proto: Protocol, - ) -> Result { - let mut common_state = CommonState::new(Side::Client); - common_state.set_max_fragment_size(config.max_fragment_size)?; - common_state.protocol = proto; - #[cfg(feature = "secret_extraction")] - { - common_state.enable_secret_extraction = config.enable_secret_extraction; - } - let mut data = ClientConnectionData::new(); - - let mut cx = hs::ClientContext { - common: &mut common_state, - data: &mut data, - }; - - let state = hs::start_handshake(name, extra_exts, config, &mut cx)?; - let inner = ConnectionCommon::new(state, data, common_state); - - Ok(Self { inner }) - } - - /// Returns an `io::Write` implementer you can write bytes to - /// to send TLS1.3 early data (a.k.a. "0-RTT data") to the server. - /// - /// This returns None in many circumstances when the capability to - /// send early data is not available, including but not limited to: - /// - /// - The server hasn't been talked to previously. - /// - The server does not support resumption. - /// - The server does not support early data. - /// - The resumption data for the server has expired. - /// - /// The server specifies a maximum amount of early data. You can - /// learn this limit through the returned object, and writes through - /// it will process only this many bytes. - /// - /// The server can choose not to accept any sent early data -- - /// in this case the data is lost but the connection continues. You - /// can tell this happened using `is_early_data_accepted`. - pub fn early_data(&mut self) -> Option { - if self.inner.data.early_data.is_enabled() { - Some(WriteEarlyData::new(self)) - } else { - None - } - } - - /// Returns True if the server signalled it will process early data. - /// - /// If you sent early data and this returns false at the end of the - /// handshake then the server will not process the data. This - /// is not an error, but you may wish to resend the data. - pub fn is_early_data_accepted(&self) -> bool { - self.inner.data.early_data.is_accepted() - } - - fn write_early_data(&mut self, data: &[u8]) -> io::Result { - self.inner - .data - .early_data - .check_write(data.len()) - .map(|sz| { - self.inner - .common_state - .send_early_plaintext(&data[..sz]) - }) - } - - /// Extract secrets, so they can be used when configuring kTLS, for example. - #[cfg(feature = "secret_extraction")] - pub fn extract_secrets(self) -> Result { - self.inner.extract_secrets() - } -} - -impl Deref for ClientConnection { - type Target = ConnectionCommon; - - fn deref(&self) -> &Self::Target { - &self.inner - } -} - -impl DerefMut for ClientConnection { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.inner - } -} - -#[doc(hidden)] -impl<'a> TryFrom<&'a mut crate::Connection> for &'a mut ClientConnection { - type Error = (); - - fn try_from(value: &'a mut crate::Connection) -> Result { - use crate::Connection::*; - match value { - Client(conn) => Ok(conn), - Server(_) => Err(()), - } - } -} - -impl From for crate::Connection { - fn from(conn: ClientConnection) -> Self { - Self::Client(conn) - } -} - -/// State associated with a client connection. -pub struct ClientConnectionData { - pub(super) early_data: EarlyData, - pub(super) resumption_ciphersuite: Option, -} - -impl ClientConnectionData { - fn new() -> Self { - Self { - early_data: EarlyData::new(), - resumption_ciphersuite: None, - } - } -} - -impl crate::conn::SideData for ClientConnectionData {} - -#[cfg(feature = "quic")] -impl quic::QuicExt for ClientConnection { - fn quic_transport_parameters(&self) -> Option<&[u8]> { - self.inner - .common_state - .quic - .params - .as_ref() - .map(|v| v.as_ref()) - } - - fn zero_rtt_keys(&self) -> Option { - Some(quic::DirectionalKeys::new( - self.inner - .data - .resumption_ciphersuite - .and_then(|suite| suite.tls13())?, - self.inner - .common_state - .quic - .early_secret - .as_ref()?, - )) - } - - fn read_hs(&mut self, plaintext: &[u8]) -> Result<(), Error> { - self.inner.read_quic_hs(plaintext) - } - - fn write_hs(&mut self, buf: &mut Vec) -> Option { - quic::write_hs(&mut self.inner.common_state, buf) - } - - fn alert(&self) -> Option { - self.inner.common_state.quic.alert - } -} - -/// Methods specific to QUIC client sessions -#[cfg(feature = "quic")] -#[cfg_attr(docsrs, doc(cfg(feature = "quic")))] -pub trait ClientQuicExt { - /// Make a new QUIC ClientConnection. This differs from `ClientConnection::new()` - /// in that it takes an extra argument, `params`, which contains the - /// TLS-encoded transport parameters to send. - fn new_quic( - config: Arc, - quic_version: quic::Version, - name: ServerName, - params: Vec, - ) -> Result { - if !config.supports_version(ProtocolVersion::TLSv1_3) { - return Err(Error::General( - "TLS 1.3 support is required for QUIC".into(), - )); - } - - let ext = match quic_version { - quic::Version::V1Draft => ClientExtension::TransportParametersDraft(params), - quic::Version::V1 => ClientExtension::TransportParameters(params), - }; - - ClientConnection::new_inner(config, name, vec![ext], Protocol::Quic) - } -} - -#[cfg(feature = "quic")] -impl ClientQuicExt for ClientConnection {} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/client/common.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/client/common.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/client/common.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/client/common.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,114 +0,0 @@ -use super::ResolvesClientCert; -#[cfg(feature = "logging")] -use crate::log::{debug, trace}; -use crate::msgs::enums::ExtensionType; -use crate::msgs::handshake::CertificatePayload; -use crate::msgs::handshake::SCTList; -use crate::msgs::handshake::ServerExtension; -use crate::{sign, DistinguishedNames, SignatureScheme}; - -use std::sync::Arc; - -#[derive(Debug)] -pub(super) struct ServerCertDetails { - pub(super) cert_chain: CertificatePayload, - pub(super) ocsp_response: Vec, - pub(super) scts: Option, -} - -impl ServerCertDetails { - pub(super) fn new( - cert_chain: CertificatePayload, - ocsp_response: Vec, - scts: Option, - ) -> Self { - Self { - cert_chain, - ocsp_response, - scts, - } - } - - pub(super) fn scts(&self) -> impl Iterator { - self.scts - .as_deref() - .unwrap_or(&[]) - .iter() - .map(|payload| payload.0.as_slice()) - } -} - -pub(super) struct ClientHelloDetails { - pub(super) sent_extensions: Vec, -} - -impl ClientHelloDetails { - pub(super) fn new() -> Self { - Self { - sent_extensions: Vec::new(), - } - } - - pub(super) fn server_may_send_sct_list(&self) -> bool { - self.sent_extensions - .contains(&ExtensionType::SCT) - } - - pub(super) fn server_sent_unsolicited_extensions( - &self, - received_exts: &[ServerExtension], - allowed_unsolicited: &[ExtensionType], - ) -> bool { - for ext in received_exts { - let ext_type = ext.get_type(); - if !self.sent_extensions.contains(&ext_type) && !allowed_unsolicited.contains(&ext_type) - { - trace!("Unsolicited extension {:?}", ext_type); - return true; - } - } - - false - } -} - -pub(super) enum ClientAuthDetails { - /// Send an empty `Certificate` and no `CertificateVerify`. - Empty { auth_context_tls13: Option> }, - /// Send a non-empty `Certificate` and a `CertificateVerify`. - Verify { - certkey: Arc, - signer: Box, - auth_context_tls13: Option>, - }, -} - -impl ClientAuthDetails { - pub(super) fn resolve( - resolver: &dyn ResolvesClientCert, - canames: Option<&DistinguishedNames>, - sigschemes: &[SignatureScheme], - auth_context_tls13: Option>, - ) -> Self { - let acceptable_issuers = canames - .map(Vec::as_slice) - .unwrap_or_default() - .iter() - .map(|p| p.0.as_slice()) - .collect::>(); - - if let Some(certkey) = resolver.resolve(&acceptable_issuers, sigschemes) { - if let Some(signer) = certkey.key.choose_scheme(sigschemes) { - debug!("Attempting client auth"); - return Self::Verify { - certkey, - signer, - auth_context_tls13, - }; - } - } - - debug!("Client auth requested but no cert/sigscheme available"); - Self::Empty { auth_context_tls13 } - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/client/handy.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/client/handy.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/client/handy.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/client/handy.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,161 +0,0 @@ -use crate::client; -use crate::enums::SignatureScheme; -use crate::error::Error; -use crate::key; -use crate::limited_cache; -use crate::sign; - -use std::sync::{Arc, Mutex}; - -/// An implementer of `StoresClientSessions` which does nothing. -pub struct NoClientSessionStorage {} - -impl client::StoresClientSessions for NoClientSessionStorage { - fn put(&self, _key: Vec, _value: Vec) -> bool { - false - } - - fn get(&self, _key: &[u8]) -> Option> { - None - } -} - -/// An implementer of `StoresClientSessions` that stores everything -/// in memory. It enforces a limit on the number of entries -/// to bound memory usage. -pub struct ClientSessionMemoryCache { - cache: Mutex, Vec>>, -} - -impl ClientSessionMemoryCache { - /// Make a new ClientSessionMemoryCache. `size` is the - /// maximum number of stored sessions. - pub fn new(size: usize) -> Arc { - debug_assert!(size > 0); - Arc::new(Self { - cache: Mutex::new(limited_cache::LimitedCache::new(size)), - }) - } -} - -impl client::StoresClientSessions for ClientSessionMemoryCache { - fn put(&self, key: Vec, value: Vec) -> bool { - self.cache - .lock() - .unwrap() - .insert(key, value); - true - } - - fn get(&self, key: &[u8]) -> Option> { - self.cache - .lock() - .unwrap() - .get(key) - .cloned() - } -} - -pub(super) struct FailResolveClientCert {} - -impl client::ResolvesClientCert for FailResolveClientCert { - fn resolve( - &self, - _acceptable_issuers: &[&[u8]], - _sigschemes: &[SignatureScheme], - ) -> Option> { - None - } - - fn has_certs(&self) -> bool { - false - } -} - -pub(super) struct AlwaysResolvesClientCert(Arc); - -impl AlwaysResolvesClientCert { - pub(super) fn new( - chain: Vec, - priv_key: &key::PrivateKey, - ) -> Result { - let key = sign::any_supported_type(priv_key) - .map_err(|_| Error::General("invalid private key".into()))?; - Ok(Self(Arc::new(sign::CertifiedKey::new(chain, key)))) - } -} - -impl client::ResolvesClientCert for AlwaysResolvesClientCert { - fn resolve( - &self, - _acceptable_issuers: &[&[u8]], - _sigschemes: &[SignatureScheme], - ) -> Option> { - Some(Arc::clone(&self.0)) - } - - fn has_certs(&self) -> bool { - true - } -} - -#[cfg(test)] -mod test { - use super::*; - use crate::client::StoresClientSessions; - - #[test] - fn test_noclientsessionstorage_drops_put() { - let c = NoClientSessionStorage {}; - assert!(!c.put(vec![0x01], vec![0x02])); - } - - #[test] - fn test_noclientsessionstorage_denies_gets() { - let c = NoClientSessionStorage {}; - c.put(vec![0x01], vec![0x02]); - assert_eq!(c.get(&[]), None); - assert_eq!(c.get(&[0x01]), None); - assert_eq!(c.get(&[0x02]), None); - } - - #[test] - fn test_clientsessionmemorycache_accepts_put() { - let c = ClientSessionMemoryCache::new(4); - assert!(c.put(vec![0x01], vec![0x02])); - } - - #[test] - fn test_clientsessionmemorycache_persists_put() { - let c = ClientSessionMemoryCache::new(4); - assert!(c.put(vec![0x01], vec![0x02])); - assert_eq!(c.get(&[0x01]), Some(vec![0x02])); - assert_eq!(c.get(&[0x01]), Some(vec![0x02])); - } - - #[test] - fn test_clientsessionmemorycache_overwrites_put() { - let c = ClientSessionMemoryCache::new(4); - assert!(c.put(vec![0x01], vec![0x02])); - assert!(c.put(vec![0x01], vec![0x04])); - assert_eq!(c.get(&[0x01]), Some(vec![0x04])); - } - - #[test] - fn test_clientsessionmemorycache_drops_to_maintain_size_invariant() { - let c = ClientSessionMemoryCache::new(2); - assert!(c.put(vec![0x01], vec![0x02])); - assert!(c.put(vec![0x03], vec![0x04])); - assert!(c.put(vec![0x05], vec![0x06])); - assert!(c.put(vec![0x07], vec![0x08])); - assert!(c.put(vec![0x09], vec![0x0a])); - - let count = c.get(&[0x01]).iter().count() - + c.get(&[0x03]).iter().count() - + c.get(&[0x05]).iter().count() - + c.get(&[0x07]).iter().count() - + c.get(&[0x09]).iter().count(); - - assert!(count < 5); - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/client/hs.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/client/hs.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/client/hs.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/client/hs.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,835 +0,0 @@ -#[cfg(feature = "logging")] -use crate::bs_debug; -use crate::check::inappropriate_handshake_message; -use crate::conn::{CommonState, ConnectionRandoms, State}; -use crate::enums::{CipherSuite, ProtocolVersion}; -use crate::error::Error; -use crate::hash_hs::HandshakeHashBuffer; -use crate::kx; -#[cfg(feature = "logging")] -use crate::log::{debug, trace}; -use crate::msgs::base::Payload; -#[cfg(feature = "quic")] -use crate::msgs::base::PayloadU16; -use crate::msgs::codec::{Codec, Reader}; -use crate::msgs::enums::{AlertDescription, Compression, ContentType}; -use crate::msgs::enums::{ECPointFormat, PSKKeyExchangeMode}; -use crate::msgs::enums::{ExtensionType, HandshakeType}; -use crate::msgs::handshake::{CertificateStatusRequest, ClientSessionTicket, SCTList}; -use crate::msgs::handshake::{ClientExtension, HasServerExtensions}; -use crate::msgs::handshake::{ClientHelloPayload, HandshakeMessagePayload, HandshakePayload}; -use crate::msgs::handshake::{ConvertProtocolNameList, ProtocolNameList}; -use crate::msgs::handshake::{ECPointFormatList, SupportedPointFormats}; -use crate::msgs::handshake::{HelloRetryRequest, KeyShareEntry}; -use crate::msgs::handshake::{Random, SessionID}; -use crate::msgs::message::{Message, MessagePayload}; -use crate::msgs::persist; -use crate::ticketer::TimeBase; -use crate::tls13::key_schedule::KeyScheduleEarly; -use crate::SupportedCipherSuite; - -#[cfg(feature = "tls12")] -use super::tls12; -use crate::client::client_conn::ClientConnectionData; -use crate::client::common::ClientHelloDetails; -use crate::client::{tls13, ClientConfig, ServerName}; - -use std::sync::Arc; - -pub(super) type NextState = Box>; -pub(super) type NextStateOrError = Result; -pub(super) type ClientContext<'a> = crate::conn::Context<'a, ClientConnectionData>; - -fn find_session( - server_name: &ServerName, - config: &ClientConfig, - #[cfg(feature = "quic")] cx: &mut ClientContext<'_>, -) -> Option> { - let key = persist::ClientSessionKey::session_for_server_name(server_name); - let key_buf = key.get_encoding(); - - let value = config - .session_storage - .get(&key_buf) - .or_else(|| { - debug!("No cached session for {:?}", server_name); - None - })?; - - #[allow(unused_mut)] - let mut reader = Reader::init(&value[2..]); - #[allow(clippy::bind_instead_of_map)] // https://github.com/rust-lang/rust-clippy/issues/8082 - CipherSuite::read_bytes(&value[..2]) - .and_then(|suite| { - persist::ClientSessionValue::read(&mut reader, suite, &config.cipher_suites) - }) - .and_then(|resuming| { - let retrieved = persist::Retrieved::new(resuming, TimeBase::now().ok()?); - match retrieved.has_expired() { - false => Some(retrieved), - true => None, - } - }) - .and_then(|resuming| { - #[cfg(feature = "quic")] - if cx.common.is_quic() { - let params = PayloadU16::read(&mut reader)?; - cx.common.quic.params = Some(params.0); - } - Some(resuming) - }) -} - -pub(super) fn start_handshake( - server_name: ServerName, - extra_exts: Vec, - config: Arc, - cx: &mut ClientContext<'_>, -) -> NextStateOrError { - let mut transcript_buffer = HandshakeHashBuffer::new(); - if config - .client_auth_cert_resolver - .has_certs() - { - transcript_buffer.set_client_auth_enabled(); - } - - let support_tls13 = config.supports_version(ProtocolVersion::TLSv1_3); - - let mut session_id: Option = None; - let mut resuming_session = find_session( - &server_name, - &config, - #[cfg(feature = "quic")] - cx, - ); - - let key_share = if support_tls13 { - Some(tls13::initial_key_share(&config, &server_name)?) - } else { - None - }; - - if let Some(_resuming) = &mut resuming_session { - #[cfg(feature = "tls12")] - if let persist::ClientSessionValue::Tls12(inner) = &mut _resuming.value { - // If we have a ticket, we use the sessionid as a signal that - // we're doing an abbreviated handshake. See section 3.4 in - // RFC5077. - if !inner.ticket().is_empty() { - inner.session_id = SessionID::random()?; - } - session_id = Some(inner.session_id); - } - - debug!("Resuming session"); - } else { - debug!("Not resuming any session"); - } - - // https://tools.ietf.org/html/rfc8446#appendix-D.4 - // https://tools.ietf.org/html/draft-ietf-quic-tls-34#section-8.4 - if session_id.is_none() && !cx.common.is_quic() { - session_id = Some(SessionID::random()?); - } - - let random = Random::new()?; - let hello_details = ClientHelloDetails::new(); - let sent_tls13_fake_ccs = false; - let may_send_sct_list = config.verifier.request_scts(); - Ok(emit_client_hello_for_retry( - config, - cx, - resuming_session, - random, - false, - transcript_buffer, - sent_tls13_fake_ccs, - hello_details, - session_id, - None, - server_name, - key_share, - extra_exts, - may_send_sct_list, - None, - )) -} - -struct ExpectServerHello { - config: Arc, - resuming_session: Option>, - server_name: ServerName, - random: Random, - using_ems: bool, - transcript_buffer: HandshakeHashBuffer, - early_key_schedule: Option, - hello: ClientHelloDetails, - offered_key_share: Option, - session_id: SessionID, - sent_tls13_fake_ccs: bool, - suite: Option, -} - -struct ExpectServerHelloOrHelloRetryRequest { - next: ExpectServerHello, - extra_exts: Vec, -} - -fn emit_client_hello_for_retry( - config: Arc, - cx: &mut ClientContext<'_>, - resuming_session: Option>, - random: Random, - using_ems: bool, - mut transcript_buffer: HandshakeHashBuffer, - mut sent_tls13_fake_ccs: bool, - mut hello: ClientHelloDetails, - session_id: Option, - retryreq: Option<&HelloRetryRequest>, - server_name: ServerName, - key_share: Option, - extra_exts: Vec, - may_send_sct_list: bool, - suite: Option, -) -> NextState { - // Do we have a SessionID or ticket cached for this host? - let (ticket, resume_version) = if let Some(resuming) = &resuming_session { - match &resuming.value { - persist::ClientSessionValue::Tls13(inner) => { - (inner.ticket().to_vec(), ProtocolVersion::TLSv1_3) - } - #[cfg(feature = "tls12")] - persist::ClientSessionValue::Tls12(inner) => { - (inner.ticket().to_vec(), ProtocolVersion::TLSv1_2) - } - } - } else { - (Vec::new(), ProtocolVersion::Unknown(0)) - }; - - let support_tls12 = config.supports_version(ProtocolVersion::TLSv1_2) && !cx.common.is_quic(); - let support_tls13 = config.supports_version(ProtocolVersion::TLSv1_3); - - let mut supported_versions = Vec::new(); - if support_tls13 { - supported_versions.push(ProtocolVersion::TLSv1_3); - } - - if support_tls12 { - supported_versions.push(ProtocolVersion::TLSv1_2); - } - - // should be unreachable thanks to config builder - assert!(!supported_versions.is_empty()); - - let mut exts = vec![ - ClientExtension::SupportedVersions(supported_versions), - ClientExtension::ECPointFormats(ECPointFormatList::supported()), - ClientExtension::NamedGroups( - config - .kx_groups - .iter() - .map(|skxg| skxg.name) - .collect(), - ), - ClientExtension::SignatureAlgorithms( - config - .verifier - .supported_verify_schemes(), - ), - ClientExtension::ExtendedMasterSecretRequest, - ClientExtension::CertificateStatusRequest(CertificateStatusRequest::build_ocsp()), - ]; - - if let (Some(sni_name), true) = (server_name.for_sni(), config.enable_sni) { - exts.push(ClientExtension::make_sni(sni_name)); - } - - if may_send_sct_list { - exts.push(ClientExtension::SignedCertificateTimestampRequest); - } - - if let Some(key_share) = &key_share { - debug_assert!(support_tls13); - let key_share = KeyShareEntry::new(key_share.group(), key_share.pubkey.as_ref()); - exts.push(ClientExtension::KeyShare(vec![key_share])); - } - - if let Some(cookie) = retryreq.and_then(HelloRetryRequest::get_cookie) { - exts.push(ClientExtension::Cookie(cookie.clone())); - } - - if support_tls13 && config.enable_tickets { - // We could support PSK_KE here too. Such connections don't - // have forward secrecy, and are similar to TLS1.2 resumption. - let psk_modes = vec![PSKKeyExchangeMode::PSK_DHE_KE]; - exts.push(ClientExtension::PresharedKeyModes(psk_modes)); - } - - if !config.alpn_protocols.is_empty() { - exts.push(ClientExtension::Protocols(ProtocolNameList::from_slices( - &config - .alpn_protocols - .iter() - .map(|proto| &proto[..]) - .collect::>(), - ))); - } - - // Extra extensions must be placed before the PSK extension - exts.extend(extra_exts.iter().cloned()); - - let fill_in_binder = if support_tls13 - && config.enable_tickets - && resume_version == ProtocolVersion::TLSv1_3 - && !ticket.is_empty() - { - resuming_session - .as_ref() - .and_then(|resuming| match (suite, resuming.tls13()) { - (Some(suite), Some(resuming)) => { - suite - .tls13()? - .can_resume_from(resuming.suite())?; - Some(resuming) - } - (None, Some(resuming)) => Some(resuming), - _ => None, - }) - .map(|resuming| { - tls13::prepare_resumption( - &config, - cx, - ticket, - &resuming, - &mut exts, - retryreq.is_some(), - ); - resuming - }) - } else if config.enable_tickets { - // If we have a ticket, include it. Otherwise, request one. - if ticket.is_empty() { - exts.push(ClientExtension::SessionTicket(ClientSessionTicket::Request)); - } else { - exts.push(ClientExtension::SessionTicket(ClientSessionTicket::Offer( - Payload::new(ticket), - ))); - } - None - } else { - None - }; - - // Note what extensions we sent. - hello.sent_extensions = exts - .iter() - .map(ClientExtension::get_type) - .collect(); - - let session_id = session_id.unwrap_or_else(SessionID::empty); - let mut cipher_suites: Vec<_> = config - .cipher_suites - .iter() - .map(|cs| cs.suite()) - .collect(); - // We don't do renegotiation at all, in fact. - cipher_suites.push(CipherSuite::TLS_EMPTY_RENEGOTIATION_INFO_SCSV); - - let mut chp = HandshakeMessagePayload { - typ: HandshakeType::ClientHello, - payload: HandshakePayload::ClientHello(ClientHelloPayload { - client_version: ProtocolVersion::TLSv1_2, - random, - session_id, - cipher_suites, - compression_methods: vec![Compression::Null], - extensions: exts, - }), - }; - - let early_key_schedule = if let Some(resuming) = fill_in_binder { - let schedule = tls13::fill_in_psk_binder(&resuming, &transcript_buffer, &mut chp); - Some((resuming.suite(), schedule)) - } else { - None - }; - - let ch = Message { - // "This value MUST be set to 0x0303 for all records generated - // by a TLS 1.3 implementation other than an initial ClientHello - // (i.e., one not generated after a HelloRetryRequest)" - version: if retryreq.is_some() { - ProtocolVersion::TLSv1_2 - } else { - ProtocolVersion::TLSv1_0 - }, - payload: MessagePayload::handshake(chp), - }; - - if retryreq.is_some() { - // send dummy CCS to fool middleboxes prior - // to second client hello - tls13::emit_fake_ccs(&mut sent_tls13_fake_ccs, cx.common); - } - - trace!("Sending ClientHello {:#?}", ch); - - transcript_buffer.add_message(&ch); - cx.common.send_msg(ch, false); - - // Calculate the hash of ClientHello and use it to derive EarlyTrafficSecret - let early_key_schedule = early_key_schedule.map(|(resuming_suite, schedule)| { - if !cx.data.early_data.is_enabled() { - return schedule; - } - - tls13::derive_early_traffic_secret( - &*config.key_log, - cx, - resuming_suite, - &schedule, - &mut sent_tls13_fake_ccs, - &transcript_buffer, - &random.0, - ); - schedule - }); - - let next = ExpectServerHello { - config, - resuming_session, - server_name, - random, - using_ems, - transcript_buffer, - early_key_schedule, - hello, - offered_key_share: key_share, - session_id, - sent_tls13_fake_ccs, - suite, - }; - - if support_tls13 && retryreq.is_none() { - Box::new(ExpectServerHelloOrHelloRetryRequest { next, extra_exts }) - } else { - Box::new(next) - } -} - -pub(super) fn process_alpn_protocol( - common: &mut CommonState, - config: &ClientConfig, - proto: Option<&[u8]>, -) -> Result<(), Error> { - common.alpn_protocol = proto.map(ToOwned::to_owned); - - if let Some(alpn_protocol) = &common.alpn_protocol { - if !config - .alpn_protocols - .contains(alpn_protocol) - { - return Err(common.illegal_param("server sent non-offered ALPN protocol")); - } - } - - #[cfg(feature = "quic")] - { - // RFC 9001 says: "While ALPN only specifies that servers use this alert, QUIC clients MUST - // use error 0x0178 to terminate a connection when ALPN negotiation fails." We judge that - // the user intended to use ALPN (rather than some out-of-band protocol negotiation - // mechanism) iff any ALPN protocols were configured. This defends against badly-behaved - // servers which accept a connection that requires an application-layer protocol they do not - // understand. - if common.is_quic() && common.alpn_protocol.is_none() && !config.alpn_protocols.is_empty() { - common.send_fatal_alert(AlertDescription::NoApplicationProtocol); - return Err(Error::NoApplicationProtocol); - } - } - - debug!( - "ALPN protocol is {:?}", - common - .alpn_protocol - .as_ref() - .map(|v| bs_debug::BsDebug(v)) - ); - Ok(()) -} - -pub(super) fn sct_list_is_invalid(scts: &SCTList) -> bool { - scts.is_empty() || scts.iter().any(|sct| sct.0.is_empty()) -} - -impl State for ExpectServerHello { - fn handle(mut self: Box, cx: &mut ClientContext<'_>, m: Message) -> NextStateOrError { - let server_hello = - require_handshake_msg!(m, HandshakeType::ServerHello, HandshakePayload::ServerHello)?; - trace!("We got ServerHello {:#?}", server_hello); - - use crate::ProtocolVersion::{TLSv1_2, TLSv1_3}; - let tls13_supported = self.config.supports_version(TLSv1_3); - - let server_version = if server_hello.legacy_version == TLSv1_2 { - server_hello - .get_supported_versions() - .unwrap_or(server_hello.legacy_version) - } else { - server_hello.legacy_version - }; - - let version = match server_version { - TLSv1_3 if tls13_supported => TLSv1_3, - TLSv1_2 if self.config.supports_version(TLSv1_2) => { - if cx.data.early_data.is_enabled() && cx.common.early_traffic { - // The client must fail with a dedicated error code if the server - // responds with TLS 1.2 when offering 0-RTT. - return Err(Error::PeerMisbehavedError( - "server chose v1.2 when offering 0-rtt".to_string(), - )); - } - - if server_hello - .get_supported_versions() - .is_some() - { - return Err(cx - .common - .illegal_param("server chose v1.2 using v1.3 extension")); - } - - TLSv1_2 - } - _ => { - cx.common - .send_fatal_alert(AlertDescription::ProtocolVersion); - let msg = match server_version { - TLSv1_2 | TLSv1_3 => "server's TLS version is disabled in client", - _ => "server does not support TLS v1.2/v1.3", - }; - return Err(Error::PeerIncompatibleError(msg.to_string())); - } - }; - - if server_hello.compression_method != Compression::Null { - return Err(cx - .common - .illegal_param("server chose non-Null compression")); - } - - if server_hello.has_duplicate_extension() { - cx.common - .send_fatal_alert(AlertDescription::DecodeError); - return Err(Error::PeerMisbehavedError( - "server sent duplicate extensions".to_string(), - )); - } - - let allowed_unsolicited = [ExtensionType::RenegotiationInfo]; - if self - .hello - .server_sent_unsolicited_extensions(&server_hello.extensions, &allowed_unsolicited) - { - cx.common - .send_fatal_alert(AlertDescription::UnsupportedExtension); - return Err(Error::PeerMisbehavedError( - "server sent unsolicited extension".to_string(), - )); - } - - cx.common.negotiated_version = Some(version); - - // Extract ALPN protocol - if !cx.common.is_tls13() { - process_alpn_protocol(cx.common, &self.config, server_hello.get_alpn_protocol())?; - } - - // If ECPointFormats extension is supplied by the server, it must contain - // Uncompressed. But it's allowed to be omitted. - if let Some(point_fmts) = server_hello.get_ecpoints_extension() { - if !point_fmts.contains(&ECPointFormat::Uncompressed) { - cx.common - .send_fatal_alert(AlertDescription::HandshakeFailure); - return Err(Error::PeerMisbehavedError( - "server does not support uncompressed points".to_string(), - )); - } - } - - let suite = self - .config - .find_cipher_suite(server_hello.cipher_suite) - .ok_or_else(|| { - cx.common - .send_fatal_alert(AlertDescription::HandshakeFailure); - Error::PeerMisbehavedError("server chose non-offered ciphersuite".to_string()) - })?; - - if version != suite.version().version { - return Err(cx - .common - .illegal_param("server chose unusable ciphersuite for version")); - } - - match self.suite { - Some(prev_suite) if prev_suite != suite => { - return Err(cx - .common - .illegal_param("server varied selected ciphersuite")); - } - _ => { - debug!("Using ciphersuite {:?}", suite); - self.suite = Some(suite); - cx.common.suite = Some(suite); - } - } - - // Start our handshake hash, and input the server-hello. - let mut transcript = self - .transcript_buffer - .start_hash(suite.hash_algorithm()); - transcript.add_message(&m); - - let randoms = ConnectionRandoms::new(self.random, server_hello.random); - // For TLS1.3, start message encryption using - // handshake_traffic_secret. - match suite { - SupportedCipherSuite::Tls13(suite) => { - let resuming_session = self - .resuming_session - .and_then(|resuming| match resuming.value { - persist::ClientSessionValue::Tls13(inner) => Some(inner), - #[cfg(feature = "tls12")] - persist::ClientSessionValue::Tls12(_) => None, - }); - - tls13::handle_server_hello( - self.config, - cx, - server_hello, - resuming_session, - self.server_name, - randoms, - suite, - transcript, - self.early_key_schedule, - self.hello, - // We always send a key share when TLS 1.3 is enabled. - self.offered_key_share.unwrap(), - self.sent_tls13_fake_ccs, - ) - } - #[cfg(feature = "tls12")] - SupportedCipherSuite::Tls12(suite) => { - let resuming_session = self - .resuming_session - .and_then(|resuming| match resuming.value { - persist::ClientSessionValue::Tls12(inner) => Some(inner), - persist::ClientSessionValue::Tls13(_) => None, - }); - - tls12::CompleteServerHelloHandling { - config: self.config, - resuming_session, - server_name: self.server_name, - randoms, - using_ems: self.using_ems, - transcript, - } - .handle_server_hello(cx, suite, server_hello, tls13_supported) - } - } - } -} - -impl ExpectServerHelloOrHelloRetryRequest { - fn into_expect_server_hello(self) -> NextState { - Box::new(self.next) - } - - fn handle_hello_retry_request( - self, - cx: &mut ClientContext<'_>, - m: Message, - ) -> NextStateOrError { - let hrr = require_handshake_msg!( - m, - HandshakeType::HelloRetryRequest, - HandshakePayload::HelloRetryRequest - )?; - trace!("Got HRR {:?}", hrr); - - cx.common.check_aligned_handshake()?; - - let cookie = hrr.get_cookie(); - let req_group = hrr.get_requested_key_share_group(); - - // We always send a key share when TLS 1.3 is enabled. - let offered_key_share = self.next.offered_key_share.unwrap(); - - // A retry request is illegal if it contains no cookie and asks for - // retry of a group we already sent. - if cookie.is_none() && req_group == Some(offered_key_share.group()) { - return Err(cx - .common - .illegal_param("server requested hrr with our group")); - } - - // Or has an empty cookie. - if let Some(cookie) = cookie { - if cookie.0.is_empty() { - return Err(cx - .common - .illegal_param("server requested hrr with empty cookie")); - } - } - - // Or has something unrecognised - if hrr.has_unknown_extension() { - cx.common - .send_fatal_alert(AlertDescription::UnsupportedExtension); - return Err(Error::PeerIncompatibleError( - "server sent hrr with unhandled extension".to_string(), - )); - } - - // Or has the same extensions more than once - if hrr.has_duplicate_extension() { - return Err(cx - .common - .illegal_param("server send duplicate hrr extensions")); - } - - // Or asks us to change nothing. - if cookie.is_none() && req_group.is_none() { - return Err(cx - .common - .illegal_param("server requested hrr with no changes")); - } - - // Or asks us to talk a protocol we didn't offer, or doesn't support HRR at all. - match hrr.get_supported_versions() { - Some(ProtocolVersion::TLSv1_3) => { - cx.common.negotiated_version = Some(ProtocolVersion::TLSv1_3); - } - _ => { - return Err(cx - .common - .illegal_param("server requested unsupported version in hrr")); - } - } - - // Or asks us to use a ciphersuite we didn't offer. - let maybe_cs = self - .next - .config - .find_cipher_suite(hrr.cipher_suite); - let cs = match maybe_cs { - Some(cs) => cs, - None => { - return Err(cx - .common - .illegal_param("server requested unsupported cs in hrr")); - } - }; - - // HRR selects the ciphersuite. - cx.common.suite = Some(cs); - - // This is the draft19 change where the transcript became a tree - let transcript = self - .next - .transcript_buffer - .start_hash(cs.hash_algorithm()); - let mut transcript_buffer = transcript.into_hrr_buffer(); - transcript_buffer.add_message(&m); - - // Early data is not allowed after HelloRetryrequest - if cx.data.early_data.is_enabled() { - cx.data.early_data.rejected(); - } - - let may_send_sct_list = self - .next - .hello - .server_may_send_sct_list(); - - let key_share = match req_group { - Some(group) if group != offered_key_share.group() => { - let group = kx::KeyExchange::choose(group, &self.next.config.kx_groups) - .ok_or_else(|| { - cx.common - .illegal_param("server requested hrr with bad group") - })?; - kx::KeyExchange::start(group).ok_or(Error::FailedToGetRandomBytes)? - } - _ => offered_key_share, - }; - - Ok(emit_client_hello_for_retry( - self.next.config, - cx, - self.next.resuming_session, - self.next.random, - self.next.using_ems, - transcript_buffer, - self.next.sent_tls13_fake_ccs, - self.next.hello, - Some(self.next.session_id), - Some(hrr), - self.next.server_name, - Some(key_share), - self.extra_exts, - may_send_sct_list, - Some(cs), - )) - } -} - -impl State for ExpectServerHelloOrHelloRetryRequest { - fn handle(self: Box, cx: &mut ClientContext<'_>, m: Message) -> NextStateOrError { - match m.payload { - MessagePayload::Handshake { - parsed: - HandshakeMessagePayload { - payload: HandshakePayload::ServerHello(..), - .. - }, - .. - } => self - .into_expect_server_hello() - .handle(cx, m), - MessagePayload::Handshake { - parsed: - HandshakeMessagePayload { - payload: HandshakePayload::HelloRetryRequest(..), - .. - }, - .. - } => self.handle_hello_retry_request(cx, m), - payload => Err(inappropriate_handshake_message( - &payload, - &[ContentType::Handshake], - &[HandshakeType::ServerHello, HandshakeType::HelloRetryRequest], - )), - } - } -} - -pub(super) fn send_cert_error_alert(common: &mut CommonState, err: Error) -> Error { - match err { - Error::InvalidCertificateEncoding => { - common.send_fatal_alert(AlertDescription::DecodeError); - } - Error::PeerMisbehavedError(_) => { - common.send_fatal_alert(AlertDescription::IllegalParameter); - } - _ => { - common.send_fatal_alert(AlertDescription::BadCertificate); - } - }; - - err -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/client/tls12.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/client/tls12.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/client/tls12.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/client/tls12.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,1118 +0,0 @@ -use crate::check::{inappropriate_handshake_message, inappropriate_message}; -use crate::conn::{CommonState, ConnectionRandoms, Side, State}; -use crate::enums::ProtocolVersion; -use crate::error::Error; -use crate::hash_hs::HandshakeHash; -#[cfg(feature = "logging")] -use crate::log::{debug, trace}; -use crate::msgs::base::{Payload, PayloadU8}; -use crate::msgs::ccs::ChangeCipherSpecPayload; -use crate::msgs::codec::Codec; -use crate::msgs::enums::AlertDescription; -use crate::msgs::enums::{ContentType, HandshakeType}; -use crate::msgs::handshake::{ - CertificatePayload, DecomposedSignatureScheme, DigitallySignedStruct, HandshakeMessagePayload, - HandshakePayload, NewSessionTicketPayload, SCTList, ServerECDHParams, SessionID, -}; -use crate::msgs::message::{Message, MessagePayload}; -use crate::msgs::persist; -use crate::sign::Signer; -#[cfg(feature = "secret_extraction")] -use crate::suites::PartiallyExtractedSecrets; -use crate::suites::SupportedCipherSuite; -use crate::ticketer::TimeBase; -use crate::tls12::{self, ConnectionSecrets, Tls12CipherSuite}; -use crate::{kx, verify}; - -use super::client_conn::ClientConnectionData; -use super::hs::ClientContext; -use crate::client::common::ClientAuthDetails; -use crate::client::common::ServerCertDetails; -use crate::client::{hs, ClientConfig, ServerName}; - -use ring::agreement::PublicKey; -use ring::constant_time; - -use std::sync::Arc; - -pub(super) use server_hello::CompleteServerHelloHandling; - -mod server_hello { - use crate::msgs::enums::ExtensionType; - use crate::msgs::handshake::HasServerExtensions; - use crate::msgs::handshake::ServerHelloPayload; - - use super::*; - - pub(in crate::client) struct CompleteServerHelloHandling { - pub(in crate::client) config: Arc, - pub(in crate::client) resuming_session: Option, - pub(in crate::client) server_name: ServerName, - pub(in crate::client) randoms: ConnectionRandoms, - pub(in crate::client) using_ems: bool, - pub(in crate::client) transcript: HandshakeHash, - } - - impl CompleteServerHelloHandling { - pub(in crate::client) fn handle_server_hello( - mut self, - cx: &mut ClientContext, - suite: &'static Tls12CipherSuite, - server_hello: &ServerHelloPayload, - tls13_supported: bool, - ) -> hs::NextStateOrError { - server_hello - .random - .write_slice(&mut self.randoms.server); - - // Look for TLS1.3 downgrade signal in server random - // both the server random and TLS12_DOWNGRADE_SENTINEL are - // public values and don't require constant time comparison - let has_downgrade_marker = self.randoms.server[24..] == tls12::DOWNGRADE_SENTINEL; - if tls13_supported && has_downgrade_marker { - return Err(cx - .common - .illegal_param("downgrade to TLS1.2 when TLS1.3 is supported")); - } - - // Doing EMS? - self.using_ems = server_hello.ems_support_acked(); - - // Might the server send a ticket? - let must_issue_new_ticket = if server_hello - .find_extension(ExtensionType::SessionTicket) - .is_some() - { - debug!("Server supports tickets"); - true - } else { - false - }; - - // Might the server send a CertificateStatus between Certificate and - // ServerKeyExchange? - let may_send_cert_status = server_hello - .find_extension(ExtensionType::StatusRequest) - .is_some(); - if may_send_cert_status { - debug!("Server may staple OCSP response"); - } - - // Save any sent SCTs for verification against the certificate. - let server_cert_sct_list = if let Some(sct_list) = server_hello.get_sct_list() { - debug!("Server sent {:?} SCTs", sct_list.len()); - - if hs::sct_list_is_invalid(sct_list) { - let error_msg = "server sent invalid SCT list".to_string(); - return Err(Error::PeerMisbehavedError(error_msg)); - } - Some(sct_list.clone()) - } else { - None - }; - - // See if we're successfully resuming. - if let Some(ref resuming) = self.resuming_session { - if resuming.session_id == server_hello.session_id { - debug!("Server agreed to resume"); - - // Is the server telling lies about the ciphersuite? - if resuming.suite() != suite { - let error_msg = - "abbreviated handshake offered, but with varied cs".to_string(); - return Err(Error::PeerMisbehavedError(error_msg)); - } - - // And about EMS support? - if resuming.extended_ms() != self.using_ems { - let error_msg = "server varied ems support over resume".to_string(); - return Err(Error::PeerMisbehavedError(error_msg)); - } - - let secrets = - ConnectionSecrets::new_resume(self.randoms, suite, resuming.secret()); - self.config.key_log.log( - "CLIENT_RANDOM", - &secrets.randoms.client, - &secrets.master_secret, - ); - cx.common - .start_encryption_tls12(&secrets, Side::Client); - - // Since we're resuming, we verified the certificate and - // proof of possession in the prior session. - cx.common.peer_certificates = Some(resuming.server_cert_chain().to_vec()); - let cert_verified = verify::ServerCertVerified::assertion(); - let sig_verified = verify::HandshakeSignatureValid::assertion(); - - return if must_issue_new_ticket { - Ok(Box::new(ExpectNewTicket { - config: self.config, - secrets, - resuming_session: self.resuming_session, - session_id: server_hello.session_id, - server_name: self.server_name, - using_ems: self.using_ems, - transcript: self.transcript, - resuming: true, - cert_verified, - sig_verified, - })) - } else { - Ok(Box::new(ExpectCcs { - config: self.config, - secrets, - resuming_session: self.resuming_session, - session_id: server_hello.session_id, - server_name: self.server_name, - using_ems: self.using_ems, - transcript: self.transcript, - ticket: None, - resuming: true, - cert_verified, - sig_verified, - })) - }; - } - } - - Ok(Box::new(ExpectCertificate { - config: self.config, - resuming_session: self.resuming_session, - session_id: server_hello.session_id, - server_name: self.server_name, - randoms: self.randoms, - using_ems: self.using_ems, - transcript: self.transcript, - suite, - may_send_cert_status, - must_issue_new_ticket, - server_cert_sct_list, - })) - } - } -} - -struct ExpectCertificate { - config: Arc, - resuming_session: Option, - session_id: SessionID, - server_name: ServerName, - randoms: ConnectionRandoms, - using_ems: bool, - transcript: HandshakeHash, - pub(super) suite: &'static Tls12CipherSuite, - may_send_cert_status: bool, - must_issue_new_ticket: bool, - server_cert_sct_list: Option, -} - -impl State for ExpectCertificate { - fn handle( - mut self: Box, - _cx: &mut ClientContext<'_>, - m: Message, - ) -> hs::NextStateOrError { - self.transcript.add_message(&m); - let server_cert_chain = require_handshake_msg_move!( - m, - HandshakeType::Certificate, - HandshakePayload::Certificate - )?; - - if self.may_send_cert_status { - Ok(Box::new(ExpectCertificateStatusOrServerKx { - config: self.config, - resuming_session: self.resuming_session, - session_id: self.session_id, - server_name: self.server_name, - randoms: self.randoms, - using_ems: self.using_ems, - transcript: self.transcript, - suite: self.suite, - server_cert_sct_list: self.server_cert_sct_list, - server_cert_chain, - must_issue_new_ticket: self.must_issue_new_ticket, - })) - } else { - let server_cert = - ServerCertDetails::new(server_cert_chain, vec![], self.server_cert_sct_list); - - Ok(Box::new(ExpectServerKx { - config: self.config, - resuming_session: self.resuming_session, - session_id: self.session_id, - server_name: self.server_name, - randoms: self.randoms, - using_ems: self.using_ems, - transcript: self.transcript, - suite: self.suite, - server_cert, - must_issue_new_ticket: self.must_issue_new_ticket, - })) - } - } -} - -struct ExpectCertificateStatusOrServerKx { - config: Arc, - resuming_session: Option, - session_id: SessionID, - server_name: ServerName, - randoms: ConnectionRandoms, - using_ems: bool, - transcript: HandshakeHash, - suite: &'static Tls12CipherSuite, - server_cert_sct_list: Option, - server_cert_chain: CertificatePayload, - must_issue_new_ticket: bool, -} - -impl State for ExpectCertificateStatusOrServerKx { - fn handle(self: Box, cx: &mut ClientContext<'_>, m: Message) -> hs::NextStateOrError { - match m.payload { - MessagePayload::Handshake { - parsed: - HandshakeMessagePayload { - payload: HandshakePayload::ServerKeyExchange(..), - .. - }, - .. - } => Box::new(ExpectServerKx { - config: self.config, - resuming_session: self.resuming_session, - session_id: self.session_id, - server_name: self.server_name, - randoms: self.randoms, - using_ems: self.using_ems, - transcript: self.transcript, - suite: self.suite, - server_cert: ServerCertDetails::new( - self.server_cert_chain, - vec![], - self.server_cert_sct_list, - ), - must_issue_new_ticket: self.must_issue_new_ticket, - }) - .handle(cx, m), - MessagePayload::Handshake { - parsed: - HandshakeMessagePayload { - payload: HandshakePayload::CertificateStatus(..), - .. - }, - .. - } => Box::new(ExpectCertificateStatus { - config: self.config, - resuming_session: self.resuming_session, - session_id: self.session_id, - server_name: self.server_name, - randoms: self.randoms, - using_ems: self.using_ems, - transcript: self.transcript, - suite: self.suite, - server_cert_sct_list: self.server_cert_sct_list, - server_cert_chain: self.server_cert_chain, - must_issue_new_ticket: self.must_issue_new_ticket, - }) - .handle(cx, m), - payload => Err(inappropriate_handshake_message( - &payload, - &[ContentType::Handshake], - &[ - HandshakeType::ServerKeyExchange, - HandshakeType::CertificateStatus, - ], - )), - } - } -} - -struct ExpectCertificateStatus { - config: Arc, - resuming_session: Option, - session_id: SessionID, - server_name: ServerName, - randoms: ConnectionRandoms, - using_ems: bool, - transcript: HandshakeHash, - suite: &'static Tls12CipherSuite, - server_cert_sct_list: Option, - server_cert_chain: CertificatePayload, - must_issue_new_ticket: bool, -} - -impl State for ExpectCertificateStatus { - fn handle( - mut self: Box, - _cx: &mut ClientContext<'_>, - m: Message, - ) -> hs::NextStateOrError { - self.transcript.add_message(&m); - let server_cert_ocsp_response = require_handshake_msg_move!( - m, - HandshakeType::CertificateStatus, - HandshakePayload::CertificateStatus - )? - .into_inner(); - - trace!( - "Server stapled OCSP response is {:?}", - &server_cert_ocsp_response - ); - - let server_cert = ServerCertDetails::new( - self.server_cert_chain, - server_cert_ocsp_response, - self.server_cert_sct_list, - ); - - Ok(Box::new(ExpectServerKx { - config: self.config, - resuming_session: self.resuming_session, - session_id: self.session_id, - server_name: self.server_name, - randoms: self.randoms, - using_ems: self.using_ems, - transcript: self.transcript, - suite: self.suite, - server_cert, - must_issue_new_ticket: self.must_issue_new_ticket, - })) - } -} - -struct ExpectServerKx { - config: Arc, - resuming_session: Option, - session_id: SessionID, - server_name: ServerName, - randoms: ConnectionRandoms, - using_ems: bool, - transcript: HandshakeHash, - suite: &'static Tls12CipherSuite, - server_cert: ServerCertDetails, - must_issue_new_ticket: bool, -} - -impl State for ExpectServerKx { - fn handle(mut self: Box, cx: &mut ClientContext<'_>, m: Message) -> hs::NextStateOrError { - let opaque_kx = require_handshake_msg!( - m, - HandshakeType::ServerKeyExchange, - HandshakePayload::ServerKeyExchange - )?; - self.transcript.add_message(&m); - - let ecdhe = opaque_kx - .unwrap_given_kxa(&self.suite.kx) - .ok_or_else(|| { - cx.common - .send_fatal_alert(AlertDescription::DecodeError); - Error::CorruptMessagePayload(ContentType::Handshake) - })?; - - // Save the signature and signed parameters for later verification. - let mut kx_params = Vec::new(); - ecdhe.params.encode(&mut kx_params); - let server_kx = ServerKxDetails::new(kx_params, ecdhe.dss); - - #[cfg_attr(not(feature = "logging"), allow(unused_variables))] - { - debug!("ECDHE curve is {:?}", ecdhe.params.curve_params); - } - - Ok(Box::new(ExpectServerDoneOrCertReq { - config: self.config, - resuming_session: self.resuming_session, - session_id: self.session_id, - server_name: self.server_name, - randoms: self.randoms, - using_ems: self.using_ems, - transcript: self.transcript, - suite: self.suite, - server_cert: self.server_cert, - server_kx, - must_issue_new_ticket: self.must_issue_new_ticket, - })) - } -} - -fn emit_certificate( - transcript: &mut HandshakeHash, - cert_chain: CertificatePayload, - common: &mut CommonState, -) { - let cert = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::Certificate, - payload: HandshakePayload::Certificate(cert_chain), - }), - }; - - transcript.add_message(&cert); - common.send_msg(cert, false); -} - -fn emit_clientkx(transcript: &mut HandshakeHash, common: &mut CommonState, pubkey: &PublicKey) { - let mut buf = Vec::new(); - let ecpoint = PayloadU8::new(Vec::from(pubkey.as_ref())); - ecpoint.encode(&mut buf); - let pubkey = Payload::new(buf); - - let ckx = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::ClientKeyExchange, - payload: HandshakePayload::ClientKeyExchange(pubkey), - }), - }; - - transcript.add_message(&ckx); - common.send_msg(ckx, false); -} - -fn emit_certverify( - transcript: &mut HandshakeHash, - signer: &dyn Signer, - common: &mut CommonState, -) -> Result<(), Error> { - let message = transcript - .take_handshake_buf() - .ok_or_else(|| Error::General("Expected transcript".to_owned()))?; - - let scheme = signer.scheme(); - let sig = signer.sign(&message)?; - let body = DigitallySignedStruct::new(scheme, sig); - - let m = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::CertificateVerify, - payload: HandshakePayload::CertificateVerify(body), - }), - }; - - transcript.add_message(&m); - common.send_msg(m, false); - Ok(()) -} - -fn emit_ccs(common: &mut CommonState) { - let ccs = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::ChangeCipherSpec(ChangeCipherSpecPayload {}), - }; - - common.send_msg(ccs, false); -} - -fn emit_finished( - secrets: &ConnectionSecrets, - transcript: &mut HandshakeHash, - common: &mut CommonState, -) { - let vh = transcript.get_current_hash(); - let verify_data = secrets.client_verify_data(&vh); - let verify_data_payload = Payload::new(verify_data); - - let f = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::Finished, - payload: HandshakePayload::Finished(verify_data_payload), - }), - }; - - transcript.add_message(&f); - common.send_msg(f, true); -} - -struct ServerKxDetails { - kx_params: Vec, - kx_sig: DigitallySignedStruct, -} - -impl ServerKxDetails { - fn new(params: Vec, sig: DigitallySignedStruct) -> Self { - Self { - kx_params: params, - kx_sig: sig, - } - } -} - -// --- Either a CertificateRequest, or a ServerHelloDone. --- -// Existence of the CertificateRequest tells us the server is asking for -// client auth. Otherwise we go straight to ServerHelloDone. -struct ExpectServerDoneOrCertReq { - config: Arc, - resuming_session: Option, - session_id: SessionID, - server_name: ServerName, - randoms: ConnectionRandoms, - using_ems: bool, - transcript: HandshakeHash, - suite: &'static Tls12CipherSuite, - server_cert: ServerCertDetails, - server_kx: ServerKxDetails, - must_issue_new_ticket: bool, -} - -impl State for ExpectServerDoneOrCertReq { - fn handle(mut self: Box, cx: &mut ClientContext<'_>, m: Message) -> hs::NextStateOrError { - if matches!( - m.payload, - MessagePayload::Handshake { - parsed: HandshakeMessagePayload { - payload: HandshakePayload::CertificateRequest(_), - .. - }, - .. - } - ) { - Box::new(ExpectCertificateRequest { - config: self.config, - resuming_session: self.resuming_session, - session_id: self.session_id, - server_name: self.server_name, - randoms: self.randoms, - using_ems: self.using_ems, - transcript: self.transcript, - suite: self.suite, - server_cert: self.server_cert, - server_kx: self.server_kx, - must_issue_new_ticket: self.must_issue_new_ticket, - }) - .handle(cx, m) - } else { - self.transcript.abandon_client_auth(); - - Box::new(ExpectServerDone { - config: self.config, - resuming_session: self.resuming_session, - session_id: self.session_id, - server_name: self.server_name, - randoms: self.randoms, - using_ems: self.using_ems, - transcript: self.transcript, - suite: self.suite, - server_cert: self.server_cert, - server_kx: self.server_kx, - client_auth: None, - must_issue_new_ticket: self.must_issue_new_ticket, - }) - .handle(cx, m) - } - } -} - -struct ExpectCertificateRequest { - config: Arc, - resuming_session: Option, - session_id: SessionID, - server_name: ServerName, - randoms: ConnectionRandoms, - using_ems: bool, - transcript: HandshakeHash, - suite: &'static Tls12CipherSuite, - server_cert: ServerCertDetails, - server_kx: ServerKxDetails, - must_issue_new_ticket: bool, -} - -impl State for ExpectCertificateRequest { - fn handle( - mut self: Box, - _cx: &mut ClientContext<'_>, - m: Message, - ) -> hs::NextStateOrError { - let certreq = require_handshake_msg!( - m, - HandshakeType::CertificateRequest, - HandshakePayload::CertificateRequest - )?; - self.transcript.add_message(&m); - debug!("Got CertificateRequest {:?}", certreq); - - // The RFC jovially describes the design here as 'somewhat complicated' - // and 'somewhat underspecified'. So thanks for that. - // - // We ignore certreq.certtypes as a result, since the information it contains - // is entirely duplicated in certreq.sigschemes. - - const NO_CONTEXT: Option> = None; // TLS 1.2 doesn't use a context. - let client_auth = ClientAuthDetails::resolve( - self.config - .client_auth_cert_resolver - .as_ref(), - Some(&certreq.canames), - &certreq.sigschemes, - NO_CONTEXT, - ); - - Ok(Box::new(ExpectServerDone { - config: self.config, - resuming_session: self.resuming_session, - session_id: self.session_id, - server_name: self.server_name, - randoms: self.randoms, - using_ems: self.using_ems, - transcript: self.transcript, - suite: self.suite, - server_cert: self.server_cert, - server_kx: self.server_kx, - client_auth: Some(client_auth), - must_issue_new_ticket: self.must_issue_new_ticket, - })) - } -} - -struct ExpectServerDone { - config: Arc, - resuming_session: Option, - session_id: SessionID, - server_name: ServerName, - randoms: ConnectionRandoms, - using_ems: bool, - transcript: HandshakeHash, - suite: &'static Tls12CipherSuite, - server_cert: ServerCertDetails, - server_kx: ServerKxDetails, - client_auth: Option, - must_issue_new_ticket: bool, -} - -impl State for ExpectServerDone { - fn handle(self: Box, cx: &mut ClientContext<'_>, m: Message) -> hs::NextStateOrError { - match m.payload { - MessagePayload::Handshake { - parsed: - HandshakeMessagePayload { - payload: HandshakePayload::ServerHelloDone, - .. - }, - .. - } => {} - payload => { - return Err(inappropriate_handshake_message( - &payload, - &[ContentType::Handshake], - &[HandshakeType::ServerHelloDone], - )); - } - } - - let mut st = *self; - st.transcript.add_message(&m); - - cx.common.check_aligned_handshake()?; - - trace!("Server cert is {:?}", st.server_cert.cert_chain); - debug!("Server DNS name is {:?}", st.server_name); - - let suite = st.suite; - - // 1. Verify the cert chain. - // 2. Verify any SCTs provided with the certificate. - // 3. Verify that the top certificate signed their kx. - // 4. If doing client auth, send our Certificate. - // 5. Complete the key exchange: - // a) generate our kx pair - // b) emit a ClientKeyExchange containing it - // c) if doing client auth, emit a CertificateVerify - // d) emit a CCS - // e) derive the shared keys, and start encryption - // 6. emit a Finished, our first encrypted message under the new keys. - - // 1. - let (end_entity, intermediates) = st - .server_cert - .cert_chain - .split_first() - .ok_or(Error::NoCertificatesPresented)?; - let now = std::time::SystemTime::now(); - let cert_verified = st - .config - .verifier - .verify_server_cert( - end_entity, - intermediates, - &st.server_name, - &mut st.server_cert.scts(), - &st.server_cert.ocsp_response, - now, - ) - .map_err(|err| hs::send_cert_error_alert(cx.common, err))?; - - // 3. - // Build up the contents of the signed message. - // It's ClientHello.random || ServerHello.random || ServerKeyExchange.params - let sig_verified = { - let mut message = Vec::new(); - message.extend_from_slice(&st.randoms.client); - message.extend_from_slice(&st.randoms.server); - message.extend_from_slice(&st.server_kx.kx_params); - - // Check the signature is compatible with the ciphersuite. - let sig = &st.server_kx.kx_sig; - if !SupportedCipherSuite::from(suite).usable_for_signature_algorithm(sig.scheme.sign()) - { - let error_message = format!( - "peer signed kx with wrong algorithm (got {:?} expect {:?})", - sig.scheme.sign(), - suite.sign - ); - return Err(Error::PeerMisbehavedError(error_message)); - } - - st.config - .verifier - .verify_tls12_signature(&message, &st.server_cert.cert_chain[0], sig) - .map_err(|err| hs::send_cert_error_alert(cx.common, err))? - }; - cx.common.peer_certificates = Some(st.server_cert.cert_chain); - - // 4. - if let Some(client_auth) = &st.client_auth { - let certs = match client_auth { - ClientAuthDetails::Empty { .. } => Vec::new(), - ClientAuthDetails::Verify { certkey, .. } => certkey.cert.clone(), - }; - emit_certificate(&mut st.transcript, certs, cx.common); - } - - // 5a. - let ecdh_params = - tls12::decode_ecdh_params::(cx.common, &st.server_kx.kx_params)?; - let group = - kx::KeyExchange::choose(ecdh_params.curve_params.named_group, &st.config.kx_groups) - .ok_or_else(|| { - Error::PeerMisbehavedError("peer chose an unsupported group".to_string()) - })?; - let kx = kx::KeyExchange::start(group).ok_or(Error::FailedToGetRandomBytes)?; - - // 5b. - let mut transcript = st.transcript; - emit_clientkx(&mut transcript, cx.common, &kx.pubkey); - // nb. EMS handshake hash only runs up to ClientKeyExchange. - let ems_seed = st - .using_ems - .then(|| transcript.get_current_hash()); - - // 5c. - if let Some(ClientAuthDetails::Verify { signer, .. }) = &st.client_auth { - emit_certverify(&mut transcript, signer.as_ref(), cx.common)?; - } - - // 5d. - emit_ccs(cx.common); - - // 5e. Now commit secrets. - let secrets = ConnectionSecrets::from_key_exchange( - kx, - &ecdh_params.public.0, - ems_seed, - st.randoms, - suite, - )?; - - st.config.key_log.log( - "CLIENT_RANDOM", - &secrets.randoms.client, - &secrets.master_secret, - ); - cx.common - .start_encryption_tls12(&secrets, Side::Client); - cx.common - .record_layer - .start_encrypting(); - - // 6. - emit_finished(&secrets, &mut transcript, cx.common); - - if st.must_issue_new_ticket { - Ok(Box::new(ExpectNewTicket { - config: st.config, - secrets, - resuming_session: st.resuming_session, - session_id: st.session_id, - server_name: st.server_name, - using_ems: st.using_ems, - transcript, - resuming: false, - cert_verified, - sig_verified, - })) - } else { - Ok(Box::new(ExpectCcs { - config: st.config, - secrets, - resuming_session: st.resuming_session, - session_id: st.session_id, - server_name: st.server_name, - using_ems: st.using_ems, - transcript, - ticket: None, - resuming: false, - cert_verified, - sig_verified, - })) - } - } -} - -struct ExpectNewTicket { - config: Arc, - secrets: ConnectionSecrets, - resuming_session: Option, - session_id: SessionID, - server_name: ServerName, - using_ems: bool, - transcript: HandshakeHash, - resuming: bool, - cert_verified: verify::ServerCertVerified, - sig_verified: verify::HandshakeSignatureValid, -} - -impl State for ExpectNewTicket { - fn handle( - mut self: Box, - _cx: &mut ClientContext<'_>, - m: Message, - ) -> hs::NextStateOrError { - self.transcript.add_message(&m); - - let nst = require_handshake_msg_move!( - m, - HandshakeType::NewSessionTicket, - HandshakePayload::NewSessionTicket - )?; - - Ok(Box::new(ExpectCcs { - config: self.config, - secrets: self.secrets, - resuming_session: self.resuming_session, - session_id: self.session_id, - server_name: self.server_name, - using_ems: self.using_ems, - transcript: self.transcript, - ticket: Some(nst), - resuming: self.resuming, - cert_verified: self.cert_verified, - sig_verified: self.sig_verified, - })) - } -} - -// -- Waiting for their CCS -- -struct ExpectCcs { - config: Arc, - secrets: ConnectionSecrets, - resuming_session: Option, - session_id: SessionID, - server_name: ServerName, - using_ems: bool, - transcript: HandshakeHash, - ticket: Option, - resuming: bool, - cert_verified: verify::ServerCertVerified, - sig_verified: verify::HandshakeSignatureValid, -} - -impl State for ExpectCcs { - fn handle(self: Box, cx: &mut ClientContext<'_>, m: Message) -> hs::NextStateOrError { - match m.payload { - MessagePayload::ChangeCipherSpec(..) => {} - payload => { - return Err(inappropriate_message( - &payload, - &[ContentType::ChangeCipherSpec], - )); - } - } - // CCS should not be received interleaved with fragmented handshake-level - // message. - cx.common.check_aligned_handshake()?; - - // nb. msgs layer validates trivial contents of CCS - cx.common - .record_layer - .start_decrypting(); - - Ok(Box::new(ExpectFinished { - config: self.config, - secrets: self.secrets, - resuming_session: self.resuming_session, - session_id: self.session_id, - server_name: self.server_name, - using_ems: self.using_ems, - transcript: self.transcript, - ticket: self.ticket, - resuming: self.resuming, - cert_verified: self.cert_verified, - sig_verified: self.sig_verified, - })) - } -} - -struct ExpectFinished { - config: Arc, - resuming_session: Option, - session_id: SessionID, - server_name: ServerName, - using_ems: bool, - transcript: HandshakeHash, - ticket: Option, - secrets: ConnectionSecrets, - resuming: bool, - cert_verified: verify::ServerCertVerified, - sig_verified: verify::HandshakeSignatureValid, -} - -impl ExpectFinished { - // -- Waiting for their finished -- - fn save_session(&mut self, cx: &mut ClientContext<'_>) { - // Save a ticket. If we got a new ticket, save that. Otherwise, save the - // original ticket again. - let (mut ticket, lifetime) = match self.ticket.take() { - Some(nst) => (nst.ticket.0, nst.lifetime_hint), - None => (Vec::new(), 0), - }; - - if ticket.is_empty() { - if let Some(resuming_session) = &mut self.resuming_session { - ticket = resuming_session.take_ticket(); - } - } - - if self.session_id.is_empty() && ticket.is_empty() { - debug!("Session not saved: server didn't allocate id or ticket"); - return; - } - - let time_now = match TimeBase::now() { - Ok(time_now) => time_now, - #[allow(unused_variables)] - Err(e) => { - debug!("Session not saved: {}", e); - return; - } - }; - - let key = persist::ClientSessionKey::session_for_server_name(&self.server_name); - let value = persist::Tls12ClientSessionValue::new( - self.secrets.suite(), - self.session_id, - ticket, - self.secrets.get_master_secret(), - cx.common - .peer_certificates - .clone() - .unwrap_or_default(), - time_now, - lifetime, - self.using_ems, - ); - - let worked = self - .config - .session_storage - .put(key.get_encoding(), value.get_encoding()); - - if worked { - debug!("Session saved"); - } else { - debug!("Session not saved"); - } - } -} - -impl State for ExpectFinished { - fn handle(self: Box, cx: &mut ClientContext<'_>, m: Message) -> hs::NextStateOrError { - let mut st = *self; - let finished = - require_handshake_msg!(m, HandshakeType::Finished, HandshakePayload::Finished)?; - - cx.common.check_aligned_handshake()?; - - // Work out what verify_data we expect. - let vh = st.transcript.get_current_hash(); - let expect_verify_data = st.secrets.server_verify_data(&vh); - - // Constant-time verification of this is relatively unimportant: they only - // get one chance. But it can't hurt. - let _fin_verified = - constant_time::verify_slices_are_equal(&expect_verify_data, &finished.0) - .map_err(|_| { - cx.common - .send_fatal_alert(AlertDescription::DecryptError); - Error::DecryptError - }) - .map(|_| verify::FinishedMessageVerified::assertion())?; - - // Hash this message too. - st.transcript.add_message(&m); - - st.save_session(cx); - - if st.resuming { - emit_ccs(cx.common); - cx.common - .record_layer - .start_encrypting(); - emit_finished(&st.secrets, &mut st.transcript, cx.common); - } - - cx.common.start_traffic(); - Ok(Box::new(ExpectTraffic { - secrets: st.secrets, - _cert_verified: st.cert_verified, - _sig_verified: st.sig_verified, - _fin_verified, - })) - } -} - -// -- Traffic transit state -- -struct ExpectTraffic { - secrets: ConnectionSecrets, - _cert_verified: verify::ServerCertVerified, - _sig_verified: verify::HandshakeSignatureValid, - _fin_verified: verify::FinishedMessageVerified, -} - -impl State for ExpectTraffic { - fn handle(self: Box, cx: &mut ClientContext<'_>, m: Message) -> hs::NextStateOrError { - match m.payload { - MessagePayload::ApplicationData(payload) => cx - .common - .take_received_plaintext(payload), - payload => { - return Err(inappropriate_message( - &payload, - &[ContentType::ApplicationData], - )); - } - } - Ok(self) - } - - fn export_keying_material( - &self, - output: &mut [u8], - label: &[u8], - context: Option<&[u8]>, - ) -> Result<(), Error> { - self.secrets - .export_keying_material(output, label, context); - Ok(()) - } - - #[cfg(feature = "secret_extraction")] - fn extract_secrets(&self) -> Result { - self.secrets - .extract_secrets(Side::Client) - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/client/tls13.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/client/tls13.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/client/tls13.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/client/tls13.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,1191 +0,0 @@ -use crate::check::inappropriate_handshake_message; -use crate::conn::{CommonState, ConnectionRandoms, State}; -use crate::enums::{ProtocolVersion, SignatureScheme}; -use crate::error::Error; -use crate::hash_hs::{HandshakeHash, HandshakeHashBuffer}; -use crate::kx; -#[cfg(feature = "logging")] -use crate::log::{debug, trace, warn}; -use crate::msgs::base::{Payload, PayloadU8}; -use crate::msgs::ccs::ChangeCipherSpecPayload; -use crate::msgs::codec::Codec; -use crate::msgs::enums::KeyUpdateRequest; -use crate::msgs::enums::{AlertDescription, NamedGroup}; -use crate::msgs::enums::{ContentType, ExtensionType, HandshakeType}; -use crate::msgs::handshake::ClientExtension; -use crate::msgs::handshake::DigitallySignedStruct; -use crate::msgs::handshake::EncryptedExtensions; -use crate::msgs::handshake::NewSessionTicketPayloadTLS13; -use crate::msgs::handshake::{CertificateEntry, CertificatePayloadTLS13}; -use crate::msgs::handshake::{HandshakeMessagePayload, HandshakePayload}; -use crate::msgs::handshake::{HasServerExtensions, ServerHelloPayload}; -use crate::msgs::handshake::{PresharedKeyIdentity, PresharedKeyOffer}; -use crate::msgs::message::{Message, MessagePayload}; -use crate::msgs::persist; -use crate::tls13::key_schedule::{ - KeyScheduleEarly, KeyScheduleHandshake, KeySchedulePreHandshake, KeyScheduleTraffic, -}; -use crate::tls13::Tls13CipherSuite; -use crate::verify; -#[cfg(feature = "quic")] -use crate::{conn::Protocol, msgs::base::PayloadU16, quic}; -#[cfg(feature = "secret_extraction")] -use crate::{conn::Side, suites::PartiallyExtractedSecrets}; -use crate::{sign, KeyLog}; - -use super::client_conn::ClientConnectionData; -use super::hs::ClientContext; -use crate::client::common::ServerCertDetails; -use crate::client::common::{ClientAuthDetails, ClientHelloDetails}; -use crate::client::{hs, ClientConfig, ServerName, StoresClientSessions}; - -use crate::ticketer::TimeBase; -use ring::constant_time; - -use crate::sign::{CertifiedKey, Signer}; -use std::sync::Arc; - -// Extensions we expect in plaintext in the ServerHello. -static ALLOWED_PLAINTEXT_EXTS: &[ExtensionType] = &[ - ExtensionType::KeyShare, - ExtensionType::PreSharedKey, - ExtensionType::SupportedVersions, -]; - -// Only the intersection of things we offer, and those disallowed -// in TLS1.3 -static DISALLOWED_TLS13_EXTS: &[ExtensionType] = &[ - ExtensionType::ECPointFormats, - ExtensionType::SessionTicket, - ExtensionType::RenegotiationInfo, - ExtensionType::ExtendedMasterSecret, -]; - -pub(super) fn handle_server_hello( - config: Arc, - cx: &mut ClientContext, - server_hello: &ServerHelloPayload, - mut resuming_session: Option, - server_name: ServerName, - randoms: ConnectionRandoms, - suite: &'static Tls13CipherSuite, - transcript: HandshakeHash, - early_key_schedule: Option, - hello: ClientHelloDetails, - our_key_share: kx::KeyExchange, - mut sent_tls13_fake_ccs: bool, -) -> hs::NextStateOrError { - validate_server_hello(cx.common, server_hello)?; - - let their_key_share = server_hello - .get_key_share() - .ok_or_else(|| { - cx.common - .send_fatal_alert(AlertDescription::MissingExtension); - Error::PeerMisbehavedError("missing key share".to_string()) - })?; - - if our_key_share.group() != their_key_share.group { - return Err(cx - .common - .illegal_param("wrong group for key share")); - } - - let key_schedule_pre_handshake = if let (Some(selected_psk), Some(early_key_schedule)) = - (server_hello.get_psk_index(), early_key_schedule) - { - if let Some(ref resuming) = resuming_session { - let resuming_suite = match suite.can_resume_from(resuming.suite()) { - Some(resuming) => resuming, - None => { - return Err(cx - .common - .illegal_param("server resuming incompatible suite")); - } - }; - - // If the server varies the suite here, we will have encrypted early data with - // the wrong suite. - if cx.data.early_data.is_enabled() && resuming_suite != suite { - return Err(cx - .common - .illegal_param("server varied suite with early data")); - } - - if selected_psk != 0 { - return Err(cx - .common - .illegal_param("server selected invalid psk")); - } - - debug!("Resuming using PSK"); - // The key schedule has been initialized and set in fill_in_psk_binder() - } else { - return Err(Error::PeerMisbehavedError( - "server selected unoffered psk".to_string(), - )); - } - KeySchedulePreHandshake::from(early_key_schedule) - } else { - debug!("Not resuming"); - // Discard the early data key schedule. - cx.data.early_data.rejected(); - cx.common.early_traffic = false; - resuming_session.take(); - KeySchedulePreHandshake::new(suite.hkdf_algorithm) - }; - - let key_schedule = our_key_share.complete(&their_key_share.payload.0, |secret| { - Ok(key_schedule_pre_handshake.into_handshake(secret)) - })?; - - // Remember what KX group the server liked for next time. - save_kx_hint(&config, &server_name, their_key_share.group); - - // If we change keying when a subsequent handshake message is being joined, - // the two halves will have different record layer protections. Disallow this. - cx.common.check_aligned_handshake()?; - - let hash_at_client_recvd_server_hello = transcript.get_current_hash(); - - let (key_schedule, client_key, server_key) = key_schedule.derive_handshake_secrets( - hash_at_client_recvd_server_hello, - &*config.key_log, - &randoms.client, - ); - - // Decrypt with the peer's key, encrypt with our own key - cx.common - .record_layer - .set_message_decrypter(suite.derive_decrypter(&server_key)); - - if !cx.data.early_data.is_enabled() { - // Set the client encryption key for handshakes if early data is not used - cx.common - .record_layer - .set_message_encrypter(suite.derive_encrypter(&client_key)); - } - - #[cfg(feature = "quic")] - if cx.common.is_quic() { - cx.common.quic.hs_secrets = Some(quic::Secrets::new(client_key, server_key, suite, true)); - } - - emit_fake_ccs(&mut sent_tls13_fake_ccs, cx.common); - - Ok(Box::new(ExpectEncryptedExtensions { - config, - resuming_session, - server_name, - randoms, - suite, - transcript, - key_schedule, - hello, - })) -} - -fn validate_server_hello( - common: &mut CommonState, - server_hello: &ServerHelloPayload, -) -> Result<(), Error> { - for ext in &server_hello.extensions { - if !ALLOWED_PLAINTEXT_EXTS.contains(&ext.get_type()) { - common.send_fatal_alert(AlertDescription::UnsupportedExtension); - return Err(Error::PeerMisbehavedError( - "server sent unexpected cleartext ext".to_string(), - )); - } - } - - Ok(()) -} - -pub(super) fn initial_key_share( - config: &ClientConfig, - server_name: &ServerName, -) -> Result { - let key = persist::ClientSessionKey::hint_for_server_name(server_name); - let key_buf = key.get_encoding(); - - let maybe_value = config.session_storage.get(&key_buf); - - let group = maybe_value - .and_then(|enc| NamedGroup::read_bytes(&enc)) - .and_then(|group| kx::KeyExchange::choose(group, &config.kx_groups)) - .unwrap_or_else(|| { - config - .kx_groups - .first() - .expect("No kx groups configured") - }); - - kx::KeyExchange::start(group).ok_or(Error::FailedToGetRandomBytes) -} - -fn save_kx_hint(config: &ClientConfig, server_name: &ServerName, group: NamedGroup) { - let key = persist::ClientSessionKey::hint_for_server_name(server_name); - - config - .session_storage - .put(key.get_encoding(), group.get_encoding()); -} - -/// This implements the horrifying TLS1.3 hack where PSK binders have a -/// data dependency on the message they are contained within. -pub(super) fn fill_in_psk_binder( - resuming: &persist::Tls13ClientSessionValue, - transcript: &HandshakeHashBuffer, - hmp: &mut HandshakeMessagePayload, -) -> KeyScheduleEarly { - // We need to know the hash function of the suite we're trying to resume into. - let hkdf_alg = resuming.suite().hkdf_algorithm; - let suite_hash = resuming.suite().hash_algorithm(); - - // The binder is calculated over the clienthello, but doesn't include itself or its - // length, or the length of its container. - let binder_plaintext = hmp.get_encoding_for_binder_signing(); - let handshake_hash = transcript.get_hash_given(suite_hash, &binder_plaintext); - - // Run a fake key_schedule to simulate what the server will do if it chooses - // to resume. - let key_schedule = KeyScheduleEarly::new(hkdf_alg, resuming.secret()); - let real_binder = key_schedule.resumption_psk_binder_key_and_sign_verify_data(&handshake_hash); - - if let HandshakePayload::ClientHello(ref mut ch) = hmp.payload { - ch.set_psk_binder(real_binder.as_ref()); - }; - - key_schedule -} - -pub(super) fn prepare_resumption( - config: &ClientConfig, - cx: &mut ClientContext<'_>, - ticket: Vec, - resuming_session: &persist::Retrieved<&persist::Tls13ClientSessionValue>, - exts: &mut Vec, - doing_retry: bool, -) { - let resuming_suite = resuming_session.suite(); - cx.common.suite = Some(resuming_suite.into()); - cx.data.resumption_ciphersuite = Some(resuming_suite.into()); - // The EarlyData extension MUST be supplied together with the - // PreSharedKey extension. - let max_early_data_size = resuming_session.max_early_data_size(); - if config.enable_early_data && max_early_data_size > 0 && !doing_retry { - cx.data - .early_data - .enable(max_early_data_size as usize); - exts.push(ClientExtension::EarlyData); - } - - // Finally, and only for TLS1.3 with a ticket resumption, include a binder - // for our ticket. This must go last. - // - // Include an empty binder. It gets filled in below because it depends on - // the message it's contained in (!!!). - let obfuscated_ticket_age = resuming_session.obfuscated_ticket_age(); - - let binder_len = resuming_suite - .hash_algorithm() - .output_len; - let binder = vec![0u8; binder_len]; - - let psk_identity = PresharedKeyIdentity::new(ticket, obfuscated_ticket_age); - let psk_ext = PresharedKeyOffer::new(psk_identity, binder); - exts.push(ClientExtension::PresharedKey(psk_ext)); -} - -pub(super) fn derive_early_traffic_secret( - key_log: &dyn KeyLog, - cx: &mut ClientContext<'_>, - resuming_suite: &'static Tls13CipherSuite, - early_key_schedule: &KeyScheduleEarly, - sent_tls13_fake_ccs: &mut bool, - transcript_buffer: &HandshakeHashBuffer, - client_random: &[u8; 32], -) { - // For middlebox compatibility - emit_fake_ccs(sent_tls13_fake_ccs, cx.common); - - let client_hello_hash = transcript_buffer.get_hash_given(resuming_suite.hash_algorithm(), &[]); - let client_early_traffic_secret = - early_key_schedule.client_early_traffic_secret(&client_hello_hash, key_log, client_random); - // Set early data encryption key - cx.common - .record_layer - .set_message_encrypter(resuming_suite.derive_encrypter(&client_early_traffic_secret)); - - #[cfg(feature = "quic")] - if cx.common.is_quic() { - cx.common.quic.early_secret = Some(client_early_traffic_secret); - } - - // Now the client can send encrypted early data - cx.common.early_traffic = true; - trace!("Starting early data traffic"); -} - -pub(super) fn emit_fake_ccs(sent_tls13_fake_ccs: &mut bool, common: &mut CommonState) { - if common.is_quic() { - return; - } - - if std::mem::replace(sent_tls13_fake_ccs, true) { - return; - } - - let m = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::ChangeCipherSpec(ChangeCipherSpecPayload {}), - }; - common.send_msg(m, false); -} - -fn validate_encrypted_extensions( - common: &mut CommonState, - hello: &ClientHelloDetails, - exts: &EncryptedExtensions, -) -> Result<(), Error> { - if exts.has_duplicate_extension() { - common.send_fatal_alert(AlertDescription::DecodeError); - return Err(Error::PeerMisbehavedError( - "server sent duplicate encrypted extensions".to_string(), - )); - } - - if hello.server_sent_unsolicited_extensions(exts, &[]) { - common.send_fatal_alert(AlertDescription::UnsupportedExtension); - let msg = "server sent unsolicited encrypted extension".to_string(); - return Err(Error::PeerMisbehavedError(msg)); - } - - for ext in exts { - if ALLOWED_PLAINTEXT_EXTS.contains(&ext.get_type()) - || DISALLOWED_TLS13_EXTS.contains(&ext.get_type()) - { - common.send_fatal_alert(AlertDescription::UnsupportedExtension); - let msg = "server sent inappropriate encrypted extension".to_string(); - return Err(Error::PeerMisbehavedError(msg)); - } - } - - Ok(()) -} - -struct ExpectEncryptedExtensions { - config: Arc, - resuming_session: Option, - server_name: ServerName, - randoms: ConnectionRandoms, - suite: &'static Tls13CipherSuite, - transcript: HandshakeHash, - key_schedule: KeyScheduleHandshake, - hello: ClientHelloDetails, -} - -impl State for ExpectEncryptedExtensions { - fn handle(mut self: Box, cx: &mut ClientContext<'_>, m: Message) -> hs::NextStateOrError { - let exts = require_handshake_msg!( - m, - HandshakeType::EncryptedExtensions, - HandshakePayload::EncryptedExtensions - )?; - debug!("TLS1.3 encrypted extensions: {:?}", exts); - self.transcript.add_message(&m); - - validate_encrypted_extensions(cx.common, &self.hello, exts)?; - hs::process_alpn_protocol(cx.common, &self.config, exts.get_alpn_protocol())?; - - #[cfg(feature = "quic")] - { - // QUIC transport parameters - if cx.common.is_quic() { - match exts.get_quic_params_extension() { - Some(params) => cx.common.quic.params = Some(params), - None => { - return Err(cx - .common - .missing_extension("QUIC transport parameters not found")); - } - } - } - } - - if let Some(resuming_session) = self.resuming_session { - let was_early_traffic = cx.common.early_traffic; - if was_early_traffic { - if exts.early_data_extension_offered() { - cx.data.early_data.accepted(); - } else { - cx.data.early_data.rejected(); - cx.common.early_traffic = false; - } - } - - if was_early_traffic && !cx.common.early_traffic { - // If no early traffic, set the encryption key for handshakes - cx.common - .record_layer - .set_message_encrypter( - self.suite - .derive_encrypter(self.key_schedule.client_key()), - ); - } - - cx.common.peer_certificates = Some( - resuming_session - .server_cert_chain() - .to_vec(), - ); - - // We *don't* reverify the certificate chain here: resumption is a - // continuation of the previous session in terms of security policy. - let cert_verified = verify::ServerCertVerified::assertion(); - let sig_verified = verify::HandshakeSignatureValid::assertion(); - Ok(Box::new(ExpectFinished { - config: self.config, - server_name: self.server_name, - randoms: self.randoms, - suite: self.suite, - transcript: self.transcript, - key_schedule: self.key_schedule, - client_auth: None, - cert_verified, - sig_verified, - })) - } else { - if exts.early_data_extension_offered() { - let msg = "server sent early data extension without resumption".to_string(); - return Err(Error::PeerMisbehavedError(msg)); - } - Ok(Box::new(ExpectCertificateOrCertReq { - config: self.config, - server_name: self.server_name, - randoms: self.randoms, - suite: self.suite, - transcript: self.transcript, - key_schedule: self.key_schedule, - may_send_sct_list: self.hello.server_may_send_sct_list(), - })) - } - } -} - -struct ExpectCertificateOrCertReq { - config: Arc, - server_name: ServerName, - randoms: ConnectionRandoms, - suite: &'static Tls13CipherSuite, - transcript: HandshakeHash, - key_schedule: KeyScheduleHandshake, - may_send_sct_list: bool, -} - -impl State for ExpectCertificateOrCertReq { - fn handle(self: Box, cx: &mut ClientContext<'_>, m: Message) -> hs::NextStateOrError { - match m.payload { - MessagePayload::Handshake { - parsed: - HandshakeMessagePayload { - payload: HandshakePayload::CertificateTLS13(..), - .. - }, - .. - } => Box::new(ExpectCertificate { - config: self.config, - server_name: self.server_name, - randoms: self.randoms, - suite: self.suite, - transcript: self.transcript, - key_schedule: self.key_schedule, - may_send_sct_list: self.may_send_sct_list, - client_auth: None, - }) - .handle(cx, m), - MessagePayload::Handshake { - parsed: - HandshakeMessagePayload { - payload: HandshakePayload::CertificateRequestTLS13(..), - .. - }, - .. - } => Box::new(ExpectCertificateRequest { - config: self.config, - server_name: self.server_name, - randoms: self.randoms, - suite: self.suite, - transcript: self.transcript, - key_schedule: self.key_schedule, - may_send_sct_list: self.may_send_sct_list, - }) - .handle(cx, m), - payload => Err(inappropriate_handshake_message( - &payload, - &[ContentType::Handshake], - &[ - HandshakeType::Certificate, - HandshakeType::CertificateRequest, - ], - )), - } - } -} - -// TLS1.3 version of CertificateRequest handling. We then move to expecting the server -// Certificate. Unfortunately the CertificateRequest type changed in an annoying way -// in TLS1.3. -struct ExpectCertificateRequest { - config: Arc, - server_name: ServerName, - randoms: ConnectionRandoms, - suite: &'static Tls13CipherSuite, - transcript: HandshakeHash, - key_schedule: KeyScheduleHandshake, - may_send_sct_list: bool, -} - -impl State for ExpectCertificateRequest { - fn handle(mut self: Box, cx: &mut ClientContext<'_>, m: Message) -> hs::NextStateOrError { - let certreq = &require_handshake_msg!( - m, - HandshakeType::CertificateRequest, - HandshakePayload::CertificateRequestTLS13 - )?; - self.transcript.add_message(&m); - debug!("Got CertificateRequest {:?}", certreq); - - // Fortunately the problems here in TLS1.2 and prior are corrected in - // TLS1.3. - - // Must be empty during handshake. - if !certreq.context.0.is_empty() { - warn!("Server sent non-empty certreq context"); - cx.common - .send_fatal_alert(AlertDescription::DecodeError); - return Err(Error::CorruptMessagePayload(ContentType::Handshake)); - } - - let tls13_sign_schemes = sign::supported_sign_tls13(); - let no_sigschemes = Vec::new(); - let compat_sigschemes = certreq - .get_sigalgs_extension() - .unwrap_or(&no_sigschemes) - .iter() - .cloned() - .filter(|scheme| tls13_sign_schemes.contains(scheme)) - .collect::>(); - - if compat_sigschemes.is_empty() { - cx.common - .send_fatal_alert(AlertDescription::HandshakeFailure); - return Err(Error::PeerIncompatibleError( - "server sent bad certreq schemes".to_string(), - )); - } - - let client_auth = ClientAuthDetails::resolve( - self.config - .client_auth_cert_resolver - .as_ref(), - certreq.get_authorities_extension(), - &compat_sigschemes, - Some(certreq.context.0.clone()), - ); - - Ok(Box::new(ExpectCertificate { - config: self.config, - server_name: self.server_name, - randoms: self.randoms, - suite: self.suite, - transcript: self.transcript, - key_schedule: self.key_schedule, - may_send_sct_list: self.may_send_sct_list, - client_auth: Some(client_auth), - })) - } -} - -struct ExpectCertificate { - config: Arc, - server_name: ServerName, - randoms: ConnectionRandoms, - suite: &'static Tls13CipherSuite, - transcript: HandshakeHash, - key_schedule: KeyScheduleHandshake, - may_send_sct_list: bool, - client_auth: Option, -} - -impl State for ExpectCertificate { - fn handle(mut self: Box, cx: &mut ClientContext<'_>, m: Message) -> hs::NextStateOrError { - let cert_chain = require_handshake_msg!( - m, - HandshakeType::Certificate, - HandshakePayload::CertificateTLS13 - )?; - self.transcript.add_message(&m); - - // This is only non-empty for client auth. - if !cert_chain.context.0.is_empty() { - warn!("certificate with non-empty context during handshake"); - cx.common - .send_fatal_alert(AlertDescription::DecodeError); - return Err(Error::CorruptMessagePayload(ContentType::Handshake)); - } - - if cert_chain.any_entry_has_duplicate_extension() - || cert_chain.any_entry_has_unknown_extension() - { - warn!("certificate chain contains unsolicited/unknown extension"); - cx.common - .send_fatal_alert(AlertDescription::UnsupportedExtension); - return Err(Error::PeerMisbehavedError( - "bad cert chain extensions".to_string(), - )); - } - - let server_cert = ServerCertDetails::new( - cert_chain.convert(), - cert_chain.get_end_entity_ocsp(), - cert_chain.get_end_entity_scts(), - ); - - if let Some(sct_list) = server_cert.scts.as_ref() { - if hs::sct_list_is_invalid(sct_list) { - let error_msg = "server sent invalid SCT list".to_string(); - return Err(Error::PeerMisbehavedError(error_msg)); - } - - if !self.may_send_sct_list { - let error_msg = "server sent unsolicited SCT list".to_string(); - return Err(Error::PeerMisbehavedError(error_msg)); - } - } - - Ok(Box::new(ExpectCertificateVerify { - config: self.config, - server_name: self.server_name, - randoms: self.randoms, - suite: self.suite, - transcript: self.transcript, - key_schedule: self.key_schedule, - server_cert, - client_auth: self.client_auth, - })) - } -} - -// --- TLS1.3 CertificateVerify --- -struct ExpectCertificateVerify { - config: Arc, - server_name: ServerName, - randoms: ConnectionRandoms, - suite: &'static Tls13CipherSuite, - transcript: HandshakeHash, - key_schedule: KeyScheduleHandshake, - server_cert: ServerCertDetails, - client_auth: Option, -} - -impl State for ExpectCertificateVerify { - fn handle(mut self: Box, cx: &mut ClientContext<'_>, m: Message) -> hs::NextStateOrError { - let cert_verify = require_handshake_msg!( - m, - HandshakeType::CertificateVerify, - HandshakePayload::CertificateVerify - )?; - - trace!("Server cert is {:?}", self.server_cert.cert_chain); - - // 1. Verify the certificate chain. - let (end_entity, intermediates) = self - .server_cert - .cert_chain - .split_first() - .ok_or(Error::NoCertificatesPresented)?; - let now = std::time::SystemTime::now(); - let cert_verified = self - .config - .verifier - .verify_server_cert( - end_entity, - intermediates, - &self.server_name, - &mut self.server_cert.scts(), - &self.server_cert.ocsp_response, - now, - ) - .map_err(|err| hs::send_cert_error_alert(cx.common, err))?; - - // 2. Verify their signature on the handshake. - let handshake_hash = self.transcript.get_current_hash(); - let sig_verified = self - .config - .verifier - .verify_tls13_signature( - &verify::construct_tls13_server_verify_message(&handshake_hash), - &self.server_cert.cert_chain[0], - cert_verify, - ) - .map_err(|err| hs::send_cert_error_alert(cx.common, err))?; - - cx.common.peer_certificates = Some(self.server_cert.cert_chain); - self.transcript.add_message(&m); - - Ok(Box::new(ExpectFinished { - config: self.config, - server_name: self.server_name, - randoms: self.randoms, - suite: self.suite, - transcript: self.transcript, - key_schedule: self.key_schedule, - client_auth: self.client_auth, - cert_verified, - sig_verified, - })) - } -} - -fn emit_certificate_tls13( - transcript: &mut HandshakeHash, - certkey: Option<&CertifiedKey>, - auth_context: Option>, - common: &mut CommonState, -) { - let context = auth_context.unwrap_or_default(); - - let mut cert_payload = CertificatePayloadTLS13 { - context: PayloadU8::new(context), - entries: Vec::new(), - }; - - if let Some(certkey) = certkey { - for cert in &certkey.cert { - cert_payload - .entries - .push(CertificateEntry::new(cert.clone())); - } - } - - let m = Message { - version: ProtocolVersion::TLSv1_3, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::Certificate, - payload: HandshakePayload::CertificateTLS13(cert_payload), - }), - }; - transcript.add_message(&m); - common.send_msg(m, true); -} - -fn emit_certverify_tls13( - transcript: &mut HandshakeHash, - signer: &dyn Signer, - common: &mut CommonState, -) -> Result<(), Error> { - let message = verify::construct_tls13_client_verify_message(&transcript.get_current_hash()); - - let scheme = signer.scheme(); - let sig = signer.sign(&message)?; - let dss = DigitallySignedStruct::new(scheme, sig); - - let m = Message { - version: ProtocolVersion::TLSv1_3, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::CertificateVerify, - payload: HandshakePayload::CertificateVerify(dss), - }), - }; - - transcript.add_message(&m); - common.send_msg(m, true); - Ok(()) -} - -fn emit_finished_tls13( - transcript: &mut HandshakeHash, - verify_data: ring::hmac::Tag, - common: &mut CommonState, -) { - let verify_data_payload = Payload::new(verify_data.as_ref()); - - let m = Message { - version: ProtocolVersion::TLSv1_3, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::Finished, - payload: HandshakePayload::Finished(verify_data_payload), - }), - }; - - transcript.add_message(&m); - common.send_msg(m, true); -} - -fn emit_end_of_early_data_tls13(transcript: &mut HandshakeHash, common: &mut CommonState) { - if common.is_quic() { - return; - } - - let m = Message { - version: ProtocolVersion::TLSv1_3, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::EndOfEarlyData, - payload: HandshakePayload::EndOfEarlyData, - }), - }; - - transcript.add_message(&m); - common.send_msg(m, true); -} - -struct ExpectFinished { - config: Arc, - server_name: ServerName, - randoms: ConnectionRandoms, - suite: &'static Tls13CipherSuite, - transcript: HandshakeHash, - key_schedule: KeyScheduleHandshake, - client_auth: Option, - cert_verified: verify::ServerCertVerified, - sig_verified: verify::HandshakeSignatureValid, -} - -impl State for ExpectFinished { - fn handle(self: Box, cx: &mut ClientContext<'_>, m: Message) -> hs::NextStateOrError { - let mut st = *self; - let finished = - require_handshake_msg!(m, HandshakeType::Finished, HandshakePayload::Finished)?; - - let handshake_hash = st.transcript.get_current_hash(); - let expect_verify_data = st - .key_schedule - .sign_server_finish(&handshake_hash); - - let fin = constant_time::verify_slices_are_equal(expect_verify_data.as_ref(), &finished.0) - .map_err(|_| { - cx.common - .send_fatal_alert(AlertDescription::DecryptError); - Error::DecryptError - }) - .map(|_| verify::FinishedMessageVerified::assertion())?; - - st.transcript.add_message(&m); - - let hash_after_handshake = st.transcript.get_current_hash(); - /* The EndOfEarlyData message to server is still encrypted with early data keys, - * but appears in the transcript after the server Finished. */ - if cx.common.early_traffic { - emit_end_of_early_data_tls13(&mut st.transcript, cx.common); - cx.common.early_traffic = false; - cx.data.early_data.finished(); - cx.common - .record_layer - .set_message_encrypter( - st.suite - .derive_encrypter(st.key_schedule.client_key()), - ); - } - - /* Send our authentication/finished messages. These are still encrypted - * with our handshake keys. */ - if let Some(client_auth) = st.client_auth { - match client_auth { - ClientAuthDetails::Empty { - auth_context_tls13: auth_context, - } => { - emit_certificate_tls13(&mut st.transcript, None, auth_context, cx.common); - } - ClientAuthDetails::Verify { - certkey, - signer, - auth_context_tls13: auth_context, - } => { - emit_certificate_tls13( - &mut st.transcript, - Some(&certkey), - auth_context, - cx.common, - ); - emit_certverify_tls13(&mut st.transcript, signer.as_ref(), cx.common)?; - } - } - } - - let (key_schedule_finished, client_key, server_key) = st - .key_schedule - .into_traffic_with_client_finished_pending( - hash_after_handshake, - &*st.config.key_log, - &st.randoms.client, - ); - let handshake_hash = st.transcript.get_current_hash(); - let (key_schedule_traffic, verify_data, _) = - key_schedule_finished.sign_client_finish(&handshake_hash); - emit_finished_tls13(&mut st.transcript, verify_data, cx.common); - - /* Now move to our application traffic keys. */ - cx.common.check_aligned_handshake()?; - - cx.common - .record_layer - .set_message_decrypter(st.suite.derive_decrypter(&server_key)); - - cx.common - .record_layer - .set_message_encrypter(st.suite.derive_encrypter(&client_key)); - - cx.common.start_traffic(); - - let st = ExpectTraffic { - session_storage: Arc::clone(&st.config.session_storage), - server_name: st.server_name, - suite: st.suite, - transcript: st.transcript, - key_schedule: key_schedule_traffic, - want_write_key_update: false, - _cert_verified: st.cert_verified, - _sig_verified: st.sig_verified, - _fin_verified: fin, - }; - - #[cfg(feature = "quic")] - { - if cx.common.protocol == Protocol::Quic { - cx.common.quic.traffic_secrets = - Some(quic::Secrets::new(client_key, server_key, st.suite, true)); - return Ok(Box::new(ExpectQuicTraffic(st))); - } - } - - Ok(Box::new(st)) - } -} - -// -- Traffic transit state (TLS1.3) -- -// In this state we can be sent tickets, key updates, -// and application data. -struct ExpectTraffic { - session_storage: Arc, - server_name: ServerName, - suite: &'static Tls13CipherSuite, - transcript: HandshakeHash, - key_schedule: KeyScheduleTraffic, - want_write_key_update: bool, - _cert_verified: verify::ServerCertVerified, - _sig_verified: verify::HandshakeSignatureValid, - _fin_verified: verify::FinishedMessageVerified, -} - -impl ExpectTraffic { - #[allow(clippy::unnecessary_wraps)] // returns Err for #[cfg(feature = "quic")] - fn handle_new_ticket_tls13( - &mut self, - cx: &mut ClientContext<'_>, - nst: &NewSessionTicketPayloadTLS13, - ) -> Result<(), Error> { - if nst.has_duplicate_extension() { - cx.common - .send_fatal_alert(AlertDescription::IllegalParameter); - return Err(Error::PeerMisbehavedError( - "peer sent duplicate NewSessionTicket extensions".into(), - )); - } - - let handshake_hash = self.transcript.get_current_hash(); - let secret = self - .key_schedule - .resumption_master_secret_and_derive_ticket_psk(&handshake_hash, &nst.nonce.0); - - let time_now = match TimeBase::now() { - Ok(t) => t, - #[allow(unused_variables)] - Err(e) => { - debug!("Session not saved: {}", e); - return Ok(()); - } - }; - - let value = persist::Tls13ClientSessionValue::new( - self.suite, - nst.ticket.0.clone(), - secret, - cx.common - .peer_certificates - .clone() - .unwrap_or_default(), - time_now, - nst.lifetime, - nst.age_add, - nst.get_max_early_data_size() - .unwrap_or_default(), - ); - - #[cfg(feature = "quic")] - if let Some(sz) = nst.get_max_early_data_size() { - if cx.common.protocol == Protocol::Quic && sz != 0 && sz != 0xffff_ffff { - return Err(Error::PeerMisbehavedError( - "invalid max_early_data_size".into(), - )); - } - } - - let key = persist::ClientSessionKey::session_for_server_name(&self.server_name); - #[allow(unused_mut)] - let mut ticket = value.get_encoding(); - - #[cfg(feature = "quic")] - if let (Protocol::Quic, Some(ref quic_params)) = - (cx.common.protocol, &cx.common.quic.params) - { - PayloadU16::encode_slice(quic_params, &mut ticket); - } - - let worked = self - .session_storage - .put(key.get_encoding(), ticket); - - if worked { - debug!("Ticket saved"); - } else { - debug!("Ticket not saved"); - } - Ok(()) - } - - fn handle_key_update( - &mut self, - common: &mut CommonState, - kur: &KeyUpdateRequest, - ) -> Result<(), Error> { - #[cfg(feature = "quic")] - { - if let Protocol::Quic = common.protocol { - common.send_fatal_alert(AlertDescription::UnexpectedMessage); - let msg = "KeyUpdate received in QUIC connection".to_string(); - warn!("{}", msg); - return Err(Error::PeerMisbehavedError(msg)); - } - } - - // Mustn't be interleaved with other handshake messages. - common.check_aligned_handshake()?; - - match kur { - KeyUpdateRequest::UpdateNotRequested => {} - KeyUpdateRequest::UpdateRequested => { - self.want_write_key_update = true; - } - _ => { - common.send_fatal_alert(AlertDescription::IllegalParameter); - return Err(Error::CorruptMessagePayload(ContentType::Handshake)); - } - } - - // Update our read-side keys. - let new_read_key = self - .key_schedule - .next_server_application_traffic_secret(); - common - .record_layer - .set_message_decrypter( - self.suite - .derive_decrypter(&new_read_key), - ); - - Ok(()) - } -} - -impl State for ExpectTraffic { - fn handle(mut self: Box, cx: &mut ClientContext<'_>, m: Message) -> hs::NextStateOrError { - match m.payload { - MessagePayload::ApplicationData(payload) => cx - .common - .take_received_plaintext(payload), - MessagePayload::Handshake { - parsed: - HandshakeMessagePayload { - payload: HandshakePayload::NewSessionTicketTLS13(ref new_ticket), - .. - }, - .. - } => self.handle_new_ticket_tls13(cx, new_ticket)?, - MessagePayload::Handshake { - parsed: - HandshakeMessagePayload { - payload: HandshakePayload::KeyUpdate(ref key_update), - .. - }, - .. - } => self.handle_key_update(cx.common, key_update)?, - payload => { - return Err(inappropriate_handshake_message( - &payload, - &[ContentType::ApplicationData, ContentType::Handshake], - &[HandshakeType::NewSessionTicket, HandshakeType::KeyUpdate], - )); - } - } - - Ok(self) - } - - fn export_keying_material( - &self, - output: &mut [u8], - label: &[u8], - context: Option<&[u8]>, - ) -> Result<(), Error> { - self.key_schedule - .export_keying_material(output, label, context) - } - - fn perhaps_write_key_update(&mut self, common: &mut CommonState) { - if self.want_write_key_update { - self.want_write_key_update = false; - common.send_msg_encrypt(Message::build_key_update_notify().into()); - - let write_key = self - .key_schedule - .next_client_application_traffic_secret(); - common - .record_layer - .set_message_encrypter(self.suite.derive_encrypter(&write_key)); - } - } - - #[cfg(feature = "secret_extraction")] - fn extract_secrets(&self) -> Result { - self.key_schedule - .extract_secrets(self.suite.common.aead_algorithm, Side::Client) - } -} - -#[cfg(feature = "quic")] -struct ExpectQuicTraffic(ExpectTraffic); - -#[cfg(feature = "quic")] -impl State for ExpectQuicTraffic { - fn handle(mut self: Box, cx: &mut ClientContext<'_>, m: Message) -> hs::NextStateOrError { - let nst = require_handshake_msg!( - m, - HandshakeType::NewSessionTicket, - HandshakePayload::NewSessionTicketTLS13 - )?; - self.0 - .handle_new_ticket_tls13(cx, nst)?; - Ok(self) - } - - fn export_keying_material( - &self, - output: &mut [u8], - label: &[u8], - context: Option<&[u8]>, - ) -> Result<(), Error> { - self.0 - .export_keying_material(output, label, context) - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/conn.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/conn.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/conn.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/conn.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,1466 +0,0 @@ -use crate::enums::ProtocolVersion; -use crate::error::Error; -use crate::key; -#[cfg(feature = "logging")] -use crate::log::{debug, error, trace, warn}; -use crate::msgs::alert::AlertMessagePayload; -use crate::msgs::base::Payload; -use crate::msgs::deframer::MessageDeframer; -use crate::msgs::enums::HandshakeType; -use crate::msgs::enums::{AlertDescription, AlertLevel, ContentType}; -use crate::msgs::fragmenter::MessageFragmenter; -use crate::msgs::handshake::Random; -use crate::msgs::hsjoiner::{HandshakeJoiner, JoinerError}; -use crate::msgs::message::{ - BorrowedPlainMessage, Message, MessagePayload, OpaqueMessage, PlainMessage, -}; -#[cfg(feature = "quic")] -use crate::quic; -use crate::record_layer; -use crate::suites::SupportedCipherSuite; -#[cfg(feature = "secret_extraction")] -use crate::suites::{ExtractedSecrets, PartiallyExtractedSecrets}; -#[cfg(feature = "tls12")] -use crate::tls12::ConnectionSecrets; -use crate::vecbuf::ChunkVecBuffer; -#[cfg(feature = "quic")] -use std::collections::VecDeque; - -use std::convert::TryFrom; -use std::fmt::Debug; -use std::io; -use std::mem; -use std::ops::{Deref, DerefMut}; - -/// A client or server connection. -#[derive(Debug)] -pub enum Connection { - /// A client connection - Client(crate::client::ClientConnection), - /// A server connection - Server(crate::server::ServerConnection), -} - -impl Connection { - /// Read TLS content from `rd`. - /// - /// See [`ConnectionCommon::read_tls()`] for more information. - pub fn read_tls(&mut self, rd: &mut dyn io::Read) -> Result { - match self { - Self::Client(conn) => conn.read_tls(rd), - Self::Server(conn) => conn.read_tls(rd), - } - } - - /// Returns an object that allows reading plaintext. - pub fn reader(&mut self) -> Reader { - match self { - Self::Client(conn) => conn.reader(), - Self::Server(conn) => conn.reader(), - } - } - - /// Returns an object that allows writing plaintext. - pub fn writer(&mut self) -> Writer { - match self { - Self::Client(conn) => Writer::new(&mut **conn), - Self::Server(conn) => Writer::new(&mut **conn), - } - } - - /// Processes any new packets read by a previous call to [`Connection::read_tls`]. - /// - /// See [`ConnectionCommon::process_new_packets()`] for more information. - pub fn process_new_packets(&mut self) -> Result { - match self { - Self::Client(conn) => conn.process_new_packets(), - Self::Server(conn) => conn.process_new_packets(), - } - } - - /// Derives key material from the agreed connection secrets. - /// - /// See [`ConnectionCommon::export_keying_material()`] for more information. - pub fn export_keying_material( - &self, - output: &mut [u8], - label: &[u8], - context: Option<&[u8]>, - ) -> Result<(), Error> { - match self { - Self::Client(conn) => conn.export_keying_material(output, label, context), - Self::Server(conn) => conn.export_keying_material(output, label, context), - } - } - - /// Extract secrets, to set up kTLS for example - #[cfg(feature = "secret_extraction")] - pub fn extract_secrets(self) -> Result { - match self { - Self::Client(conn) => conn.extract_secrets(), - Self::Server(conn) => conn.extract_secrets(), - } - } - - /// This function uses `io` to complete any outstanding IO for this connection. - /// - /// See [`ConnectionCommon::complete_io()`] for more information. - pub fn complete_io(&mut self, io: &mut T) -> Result<(usize, usize), io::Error> - where - Self: Sized, - T: io::Read + io::Write, - { - match self { - Self::Client(conn) => conn.complete_io(io), - Self::Server(conn) => conn.complete_io(io), - } - } -} - -#[cfg(feature = "quic")] -impl crate::quic::QuicExt for Connection { - fn quic_transport_parameters(&self) -> Option<&[u8]> { - match self { - Self::Client(conn) => conn.quic_transport_parameters(), - Self::Server(conn) => conn.quic_transport_parameters(), - } - } - - fn zero_rtt_keys(&self) -> Option { - match self { - Self::Client(conn) => conn.zero_rtt_keys(), - Self::Server(conn) => conn.zero_rtt_keys(), - } - } - - fn read_hs(&mut self, plaintext: &[u8]) -> Result<(), Error> { - match self { - Self::Client(conn) => conn.read_quic_hs(plaintext), - Self::Server(conn) => conn.read_quic_hs(plaintext), - } - } - - fn write_hs(&mut self, buf: &mut Vec) -> Option { - match self { - Self::Client(conn) => quic::write_hs(conn, buf), - Self::Server(conn) => quic::write_hs(conn, buf), - } - } - - fn alert(&self) -> Option { - match self { - Self::Client(conn) => conn.alert(), - Self::Server(conn) => conn.alert(), - } - } -} - -impl Deref for Connection { - type Target = CommonState; - - fn deref(&self) -> &Self::Target { - match self { - Self::Client(conn) => &conn.common_state, - Self::Server(conn) => &conn.common_state, - } - } -} - -impl DerefMut for Connection { - fn deref_mut(&mut self) -> &mut Self::Target { - match self { - Self::Client(conn) => &mut conn.common_state, - Self::Server(conn) => &mut conn.common_state, - } - } -} - -/// Values of this structure are returned from [`Connection::process_new_packets`] -/// and tell the caller the current I/O state of the TLS connection. -#[derive(Debug, Eq, PartialEq)] -pub struct IoState { - tls_bytes_to_write: usize, - plaintext_bytes_to_read: usize, - peer_has_closed: bool, -} - -impl IoState { - /// How many bytes could be written by [`CommonState::write_tls`] if called - /// right now. A non-zero value implies [`CommonState::wants_write`]. - pub fn tls_bytes_to_write(&self) -> usize { - self.tls_bytes_to_write - } - - /// How many plaintext bytes could be obtained via [`std::io::Read`] - /// without further I/O. - pub fn plaintext_bytes_to_read(&self) -> usize { - self.plaintext_bytes_to_read - } - - /// True if the peer has sent us a close_notify alert. This is - /// the TLS mechanism to securely half-close a TLS connection, - /// and signifies that the peer will not send any further data - /// on this connection. - /// - /// This is also signalled via returning `Ok(0)` from - /// [`std::io::Read`], after all the received bytes have been - /// retrieved. - pub fn peer_has_closed(&self) -> bool { - self.peer_has_closed - } -} - -/// A structure that implements [`std::io::Read`] for reading plaintext. -pub struct Reader<'a> { - received_plaintext: &'a mut ChunkVecBuffer, - peer_cleanly_closed: bool, - has_seen_eof: bool, -} - -impl<'a> io::Read for Reader<'a> { - /// Obtain plaintext data received from the peer over this TLS connection. - /// - /// If the peer closes the TLS session cleanly, this returns `Ok(0)` once all - /// the pending data has been read. No further data can be received on that - /// connection, so the underlying TCP connection should be half-closed too. - /// - /// If the peer closes the TLS session uncleanly (a TCP EOF without sending a - /// `close_notify` alert) this function returns `Err(ErrorKind::UnexpectedEof.into())` - /// once any pending data has been read. - /// - /// Note that support for `close_notify` varies in peer TLS libraries: many do not - /// support it and uncleanly close the TCP connection (this might be - /// vulnerable to truncation attacks depending on the application protocol). - /// This means applications using rustls must both handle EOF - /// from this function, *and* unexpected EOF of the underlying TCP connection. - /// - /// If there are no bytes to read, this returns `Err(ErrorKind::WouldBlock.into())`. - /// - /// You may learn the number of bytes available at any time by inspecting - /// the return of [`Connection::process_new_packets`]. - fn read(&mut self, buf: &mut [u8]) -> io::Result { - let len = self.received_plaintext.read(buf)?; - - if len == 0 && !buf.is_empty() { - // No bytes available: - match (self.peer_cleanly_closed, self.has_seen_eof) { - // cleanly closed; don't care about TCP EOF: express this as Ok(0) - (true, _) => {} - // unclean closure - (false, true) => return Err(io::ErrorKind::UnexpectedEof.into()), - // connection still going, but need more data: signal `WouldBlock` so that - // the caller knows this - (false, false) => return Err(io::ErrorKind::WouldBlock.into()), - } - } - - Ok(len) - } - - /// Obtain plaintext data received from the peer over this TLS connection. - /// - /// If the peer closes the TLS session, this returns `Ok(())` without filling - /// any more of the buffer once all the pending data has been read. No further - /// data can be received on that connection, so the underlying TCP connection - /// should be half-closed too. - /// - /// If the peer closes the TLS session uncleanly (a TCP EOF without sending a - /// `close_notify` alert) this function returns `Err(ErrorKind::UnexpectedEof.into())` - /// once any pending data has been read. - /// - /// Note that support for `close_notify` varies in peer TLS libraries: many do not - /// support it and uncleanly close the TCP connection (this might be - /// vulnerable to truncation attacks depending on the application protocol). - /// This means applications using rustls must both handle EOF - /// from this function, *and* unexpected EOF of the underlying TCP connection. - /// - /// If there are no bytes to read, this returns `Err(ErrorKind::WouldBlock.into())`. - /// - /// You may learn the number of bytes available at any time by inspecting - /// the return of [`Connection::process_new_packets`]. - #[cfg(read_buf)] - fn read_buf(&mut self, mut cursor: io::BorrowedCursor<'_>) -> io::Result<()> { - let before = cursor.written(); - self.received_plaintext - .read_buf(cursor.reborrow())?; - let len = cursor.written() - before; - - if len == 0 && cursor.capacity() > 0 { - // No bytes available: - match (self.peer_cleanly_closed, self.has_seen_eof) { - // cleanly closed; don't care about TCP EOF: express this as Ok(0) - (true, _) => {} - // unclean closure - (false, true) => return Err(io::ErrorKind::UnexpectedEof.into()), - // connection still going, but need more data: signal `WouldBlock` so that - // the caller knows this - (false, false) => return Err(io::ErrorKind::WouldBlock.into()), - } - } - - Ok(()) - } -} - -/// Internal trait implemented by the [`ServerConnection`]/[`ClientConnection`] -/// allowing them to be the subject of a [`Writer`]. -pub trait PlaintextSink { - fn write(&mut self, buf: &[u8]) -> io::Result; - fn write_vectored(&mut self, bufs: &[io::IoSlice<'_>]) -> io::Result; - fn flush(&mut self) -> io::Result<()>; -} - -impl PlaintextSink for ConnectionCommon { - fn write(&mut self, buf: &[u8]) -> io::Result { - Ok(self.send_some_plaintext(buf)) - } - - fn write_vectored(&mut self, bufs: &[io::IoSlice<'_>]) -> io::Result { - let mut sz = 0; - for buf in bufs { - sz += self.send_some_plaintext(buf); - } - Ok(sz) - } - - fn flush(&mut self) -> io::Result<()> { - Ok(()) - } -} - -/// A structure that implements [`std::io::Write`] for writing plaintext. -pub struct Writer<'a> { - sink: &'a mut dyn PlaintextSink, -} - -impl<'a> Writer<'a> { - /// Create a new Writer. - /// - /// This is not an external interface. Get one of these objects - /// from [`Connection::writer`]. - #[doc(hidden)] - pub fn new(sink: &'a mut dyn PlaintextSink) -> Writer<'a> { - Writer { sink } - } -} - -impl<'a> io::Write for Writer<'a> { - /// Send the plaintext `buf` to the peer, encrypting - /// and authenticating it. Once this function succeeds - /// you should call [`CommonState::write_tls`] which will output the - /// corresponding TLS records. - /// - /// This function buffers plaintext sent before the - /// TLS handshake completes, and sends it as soon - /// as it can. See [`CommonState::set_buffer_limit`] to control - /// the size of this buffer. - fn write(&mut self, buf: &[u8]) -> io::Result { - self.sink.write(buf) - } - - fn write_vectored(&mut self, bufs: &[io::IoSlice<'_>]) -> io::Result { - self.sink.write_vectored(bufs) - } - - fn flush(&mut self) -> io::Result<()> { - self.sink.flush() - } -} - -#[derive(Copy, Clone, Eq, PartialEq, Debug)] -pub(crate) enum Protocol { - Tcp, - #[cfg(feature = "quic")] - Quic, -} - -#[derive(Debug)] -pub(crate) struct ConnectionRandoms { - pub(crate) client: [u8; 32], - pub(crate) server: [u8; 32], -} - -/// How many ChangeCipherSpec messages we accept and drop in TLS1.3 handshakes. -/// The spec says 1, but implementations (namely the boringssl test suite) get -/// this wrong. BoringSSL itself accepts up to 32. -static TLS13_MAX_DROPPED_CCS: u8 = 2u8; - -impl ConnectionRandoms { - pub(crate) fn new(client: Random, server: Random) -> Self { - Self { - client: client.0, - server: server.0, - } - } -} - -// --- Common (to client and server) connection functions --- - -fn is_valid_ccs(msg: &OpaqueMessage) -> bool { - // nb. this is prior to the record layer, so is unencrypted. see - // third paragraph of section 5 in RFC8446. - msg.typ == ContentType::ChangeCipherSpec && msg.payload.0 == [0x01] -} - -enum Limit { - Yes, - No, -} - -/// Interface shared by client and server connections. -pub struct ConnectionCommon { - state: Result>, Error>, - pub(crate) data: Data, - pub(crate) common_state: CommonState, - message_deframer: MessageDeframer, - handshake_joiner: HandshakeJoiner, -} - -impl ConnectionCommon { - pub(crate) fn new(state: Box>, data: Data, common_state: CommonState) -> Self { - Self { - state: Ok(state), - data, - common_state, - message_deframer: MessageDeframer::new(), - handshake_joiner: HandshakeJoiner::new(), - } - } - - /// Returns an object that allows reading plaintext. - pub fn reader(&mut self) -> Reader { - Reader { - received_plaintext: &mut self.common_state.received_plaintext, - /// Are we done? i.e., have we processed all received messages, and received a - /// close_notify to indicate that no new messages will arrive? - peer_cleanly_closed: self - .common_state - .has_received_close_notify - && !self.message_deframer.has_pending(), - has_seen_eof: self.common_state.has_seen_eof, - } - } - - /// Returns an object that allows writing plaintext. - pub fn writer(&mut self) -> Writer { - Writer::new(self) - } - - /// This function uses `io` to complete any outstanding IO for - /// this connection. - /// - /// This is a convenience function which solely uses other parts - /// of the public API. - /// - /// What this means depends on the connection state: - /// - /// - If the connection [`is_handshaking`], then IO is performed until - /// the handshake is complete. - /// - Otherwise, if [`wants_write`] is true, [`write_tls`] is invoked - /// until it is all written. - /// - Otherwise, if [`wants_read`] is true, [`read_tls`] is invoked - /// once. - /// - /// The return value is the number of bytes read from and written - /// to `io`, respectively. - /// - /// This function will block if `io` blocks. - /// - /// Errors from TLS record handling (i.e., from [`process_new_packets`]) - /// are wrapped in an `io::ErrorKind::InvalidData`-kind error. - /// - /// [`is_handshaking`]: CommonState::is_handshaking - /// [`wants_read`]: CommonState::wants_read - /// [`wants_write`]: CommonState::wants_write - /// [`write_tls`]: CommonState::write_tls - /// [`read_tls`]: ConnectionCommon::read_tls - /// [`process_new_packets`]: ConnectionCommon::process_new_packets - pub fn complete_io(&mut self, io: &mut T) -> Result<(usize, usize), io::Error> - where - Self: Sized, - T: io::Read + io::Write, - { - let until_handshaked = self.is_handshaking(); - let mut eof = false; - let mut wrlen = 0; - let mut rdlen = 0; - - loop { - while self.wants_write() { - wrlen += self.write_tls(io)?; - } - - if !until_handshaked && wrlen > 0 { - return Ok((rdlen, wrlen)); - } - - while !eof && self.wants_read() { - let read_size = match self.read_tls(io) { - Ok(0) => { - eof = true; - Some(0) - } - Ok(n) => { - rdlen += n; - Some(n) - } - Err(ref err) if err.kind() == io::ErrorKind::Interrupted => None, // nothing to do - Err(err) => return Err(err), - }; - if read_size.is_some() { - break; - } - } - - match self.process_new_packets() { - Ok(_) => {} - Err(e) => { - // In case we have an alert to send describing this error, - // try a last-gasp write -- but don't predate the primary - // error. - let _ignored = self.write_tls(io); - - return Err(io::Error::new(io::ErrorKind::InvalidData, e)); - } - }; - - match (eof, until_handshaked, self.is_handshaking()) { - (_, true, false) => return Ok((rdlen, wrlen)), - (_, false, _) => return Ok((rdlen, wrlen)), - (true, true, true) => return Err(io::Error::from(io::ErrorKind::UnexpectedEof)), - (..) => {} - } - } - } - - /// Extract the first handshake message. - /// - /// This is a shortcut to the `process_new_packets()` -> `process_msg()` -> - /// `process_handshake_messages()` path, specialized for the first handshake message. - pub(crate) fn first_handshake_message(&mut self) -> Result, Error> { - let msg = match self.message_deframer.pop()? { - Some(msg) => msg, - None => return Ok(None), - }; - - let msg = msg.into_plain_message(); - self.handshake_joiner - .push(msg) - .and_then(|aligned| { - self.common_state.aligned_handshake = aligned; - self.handshake_joiner.pop() - }) - .map_err(|_| { - self.common_state - .send_fatal_alert(AlertDescription::DecodeError); - Error::CorruptMessagePayload(ContentType::Handshake) - }) - } - - pub(crate) fn replace_state(&mut self, new: Box>) { - self.state = Ok(new); - } - - fn process_msg( - &mut self, - msg: OpaqueMessage, - state: Box>, - ) -> Result>, Error> { - // Drop CCS messages during handshake in TLS1.3 - if msg.typ == ContentType::ChangeCipherSpec - && !self - .common_state - .may_receive_application_data - && self.common_state.is_tls13() - { - if !is_valid_ccs(&msg) - || self.common_state.received_middlebox_ccs > TLS13_MAX_DROPPED_CCS - { - // "An implementation which receives any other change_cipher_spec value or - // which receives a protected change_cipher_spec record MUST abort the - // handshake with an "unexpected_message" alert." - self.common_state - .send_fatal_alert(AlertDescription::UnexpectedMessage); - return Err(Error::PeerMisbehavedError( - "illegal middlebox CCS received".into(), - )); - } else { - self.common_state.received_middlebox_ccs += 1; - trace!("Dropping CCS"); - return Ok(state); - } - } - - // Decrypt if demanded by current state. - let msg = match self - .common_state - .record_layer - .is_decrypting() - { - true => match self.common_state.decrypt_incoming(msg) { - Ok(None) => { - // message dropped - return Ok(state); - } - Err(e) => { - return Err(e); - } - Ok(Some(msg)) => msg, - }, - false => msg.into_plain_message(), - }; - - // For handshake messages, we need to join them before parsing and processing. - let msg = match self.handshake_joiner.push(msg) { - // Handshake message, we handle these in another method. - Ok(aligned) => { - self.common_state.aligned_handshake = aligned; - - // First decryptable handshake message concludes trial decryption - self.common_state - .record_layer - .finish_trial_decryption(); - - return self.process_new_handshake_messages(state); - } - // Not a handshake message, continue to handle it here. - Err(JoinerError::Unwanted(msg)) => msg, - // Decoding the handshake message failed, yield an error. - Err(JoinerError::Decode) => { - self.common_state - .send_fatal_alert(AlertDescription::DecodeError); - return Err(Error::CorruptMessagePayload(ContentType::Handshake)); - } - }; - - // Now we can fully parse the message payload. - let msg = Message::try_from(msg)?; - - // For alerts, we have separate logic. - if let MessagePayload::Alert(alert) = &msg.payload { - self.common_state.process_alert(alert)?; - return Ok(state); - } - - self.common_state - .process_main_protocol(msg, state, &mut self.data) - } - - /// Processes any new packets read by a previous call to - /// [`Connection::read_tls`]. - /// - /// Errors from this function relate to TLS protocol errors, and - /// are fatal to the connection. Future calls after an error will do - /// no new work and will return the same error. After an error is - /// received from [`process_new_packets`], you should not call [`read_tls`] - /// any more (it will fill up buffers to no purpose). However, you - /// may call the other methods on the connection, including `write`, - /// `send_close_notify`, and `write_tls`. Most likely you will want to - /// call `write_tls` to send any alerts queued by the error and then - /// close the underlying connection. - /// - /// Success from this function comes with some sundry state data - /// about the connection. - /// - /// [`read_tls`]: Connection::read_tls - /// [`process_new_packets`]: Connection::process_new_packets - pub fn process_new_packets(&mut self) -> Result { - let mut state = match mem::replace(&mut self.state, Err(Error::HandshakeNotComplete)) { - Ok(state) => state, - Err(e) => { - self.state = Err(e.clone()); - return Err(e); - } - }; - - while let Some(msg) = self.message_deframer.pop()? { - match self.process_msg(msg, state) { - Ok(new) => state = new, - Err(e) => { - self.state = Err(e.clone()); - return Err(e); - } - } - } - - self.state = Ok(state); - Ok(self.common_state.current_io_state()) - } - - fn process_new_handshake_messages( - &mut self, - mut state: Box>, - ) -> Result>, Error> { - loop { - match self.handshake_joiner.pop() { - Ok(Some(msg)) => { - state = self - .common_state - .process_main_protocol(msg, state, &mut self.data)?; - } - Ok(None) => return Ok(state), - Err(_) => { - #[cfg(feature = "quic")] - if self.common_state.is_quic() { - self.common_state.quic.alert = Some(AlertDescription::DecodeError); - } - - if !self.common_state.is_quic() { - self.common_state - .send_fatal_alert(AlertDescription::DecodeError); - } - - return Err(Error::CorruptMessagePayload(ContentType::Handshake)); - } - } - } - } - - pub(crate) fn send_some_plaintext(&mut self, buf: &[u8]) -> usize { - if let Ok(st) = &mut self.state { - st.perhaps_write_key_update(&mut self.common_state); - } - self.common_state - .send_some_plaintext(buf) - } - - /// Read TLS content from `rd` into the internal buffer. - /// - /// Due to the internal buffering, `rd` can supply TLS messages in arbitrary-sized chunks (like - /// a socket or pipe might). - /// - /// You should call [`process_new_packets()`] each time a call to this function succeeds in order - /// to empty the incoming TLS data buffer. - /// - /// This function returns `Ok(0)` when the underlying `rd` does so. This typically happens when - /// a socket is cleanly closed, or a file is at EOF. Errors may result from the IO done through - /// `rd`; additionally, errors of `ErrorKind::Other` are emitted to signal backpressure: - /// - /// * In order to empty the incoming TLS data buffer, you should call [`process_new_packets()`] - /// each time a call to this function succeeds. - /// * In order to empty the incoming plaintext data buffer, you should empty it through - /// the [`reader()`] after the call to [`process_new_packets()`]. - /// - /// [`process_new_packets()`]: ConnectionCommon::process_new_packets - /// [`reader()`]: ConnectionCommon::reader - pub fn read_tls(&mut self, rd: &mut dyn io::Read) -> Result { - if self.received_plaintext.is_full() { - return Err(io::Error::new( - io::ErrorKind::Other, - "received plaintext buffer full", - )); - } - - let res = self.message_deframer.read(rd); - if let Ok(0) = res { - self.common_state.has_seen_eof = true; - } - res - } - - /// Derives key material from the agreed connection secrets. - /// - /// This function fills in `output` with `output.len()` bytes of key - /// material derived from the master session secret using `label` - /// and `context` for diversification. - /// - /// See RFC5705 for more details on what this does and is for. - /// - /// For TLS1.3 connections, this function does not use the - /// "early" exporter at any point. - /// - /// This function fails if called prior to the handshake completing; - /// check with [`CommonState::is_handshaking`] first. - pub fn export_keying_material( - &self, - output: &mut [u8], - label: &[u8], - context: Option<&[u8]>, - ) -> Result<(), Error> { - match self.state.as_ref() { - Ok(st) => st.export_keying_material(output, label, context), - Err(e) => Err(e.clone()), - } - } - - /// Extract secrets, so they can be used when configuring kTLS, for example. - #[cfg(feature = "secret_extraction")] - pub fn extract_secrets(self) -> Result { - if !self.enable_secret_extraction { - return Err(Error::General("Secret extraction is disabled".into())); - } - - let st = self.state?; - - let record_layer = self.common_state.record_layer; - let PartiallyExtractedSecrets { tx, rx } = st.extract_secrets()?; - Ok(ExtractedSecrets { - tx: (record_layer.write_seq(), tx), - rx: (record_layer.read_seq(), rx), - }) - } -} - -#[cfg(feature = "quic")] -impl ConnectionCommon { - pub(crate) fn read_quic_hs(&mut self, plaintext: &[u8]) -> Result<(), Error> { - let state = match mem::replace(&mut self.state, Err(Error::HandshakeNotComplete)) { - Ok(state) => state, - Err(e) => { - self.state = Err(e.clone()); - return Err(e); - } - }; - - let msg = PlainMessage { - typ: ContentType::Handshake, - version: ProtocolVersion::TLSv1_3, - payload: Payload::new(plaintext.to_vec()), - }; - - if self.handshake_joiner.push(msg).is_err() { - self.common_state.quic.alert = Some(AlertDescription::DecodeError); - return Err(Error::CorruptMessage); - } - - self.process_new_handshake_messages(state) - .map(|state| self.state = Ok(state)) - } -} - -impl Deref for ConnectionCommon { - type Target = CommonState; - - fn deref(&self) -> &Self::Target { - &self.common_state - } -} - -impl DerefMut for ConnectionCommon { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.common_state - } -} - -/// Connection state common to both client and server connections. -pub struct CommonState { - pub(crate) negotiated_version: Option, - pub(crate) side: Side, - pub(crate) record_layer: record_layer::RecordLayer, - pub(crate) suite: Option, - pub(crate) alpn_protocol: Option>, - aligned_handshake: bool, - pub(crate) may_send_application_data: bool, - pub(crate) may_receive_application_data: bool, - pub(crate) early_traffic: bool, - sent_fatal_alert: bool, - /// If the peer has signaled end of stream. - has_received_close_notify: bool, - has_seen_eof: bool, - received_middlebox_ccs: u8, - pub(crate) peer_certificates: Option>, - message_fragmenter: MessageFragmenter, - received_plaintext: ChunkVecBuffer, - sendable_plaintext: ChunkVecBuffer, - pub(crate) sendable_tls: ChunkVecBuffer, - #[allow(dead_code)] // only read for QUIC - /// Protocol whose key schedule should be used. Unused for TLS < 1.3. - pub(crate) protocol: Protocol, - #[cfg(feature = "quic")] - pub(crate) quic: Quic, - #[cfg(feature = "secret_extraction")] - pub(crate) enable_secret_extraction: bool, -} - -impl CommonState { - pub(crate) fn new(side: Side) -> Self { - Self { - negotiated_version: None, - side, - record_layer: record_layer::RecordLayer::new(), - suite: None, - alpn_protocol: None, - aligned_handshake: true, - may_send_application_data: false, - may_receive_application_data: false, - early_traffic: false, - sent_fatal_alert: false, - has_received_close_notify: false, - has_seen_eof: false, - received_middlebox_ccs: 0, - peer_certificates: None, - message_fragmenter: MessageFragmenter::default(), - received_plaintext: ChunkVecBuffer::new(Some(DEFAULT_RECEIVED_PLAINTEXT_LIMIT)), - sendable_plaintext: ChunkVecBuffer::new(Some(DEFAULT_BUFFER_LIMIT)), - sendable_tls: ChunkVecBuffer::new(Some(DEFAULT_BUFFER_LIMIT)), - - protocol: Protocol::Tcp, - #[cfg(feature = "quic")] - quic: Quic::new(), - #[cfg(feature = "secret_extraction")] - enable_secret_extraction: false, - } - } - - /// Returns true if the caller should call [`CommonState::write_tls`] as soon - /// as possible. - pub fn wants_write(&self) -> bool { - !self.sendable_tls.is_empty() - } - - /// Returns true if the connection is currently performing the TLS handshake. - /// - /// During this time plaintext written to the connection is buffered in memory. After - /// [`Connection::process_new_packets`] has been called, this might start to return `false` - /// while the final handshake packets still need to be extracted from the connection's buffers. - pub fn is_handshaking(&self) -> bool { - !(self.may_send_application_data && self.may_receive_application_data) - } - - /// Retrieves the certificate chain used by the peer to authenticate. - /// - /// The order of the certificate chain is as it appears in the TLS - /// protocol: the first certificate relates to the peer, the - /// second certifies the first, the third certifies the second, and - /// so on. - /// - /// This is made available for both full and resumed handshakes. - /// - /// For clients, this is the certificate chain of the server. - /// - /// For servers, this is the certificate chain of the client, - /// if client authentication was completed. - /// - /// The return value is None until this value is available. - pub fn peer_certificates(&self) -> Option<&[key::Certificate]> { - self.peer_certificates.as_deref() - } - - /// Retrieves the protocol agreed with the peer via ALPN. - /// - /// A return value of `None` after handshake completion - /// means no protocol was agreed (because no protocols - /// were offered or accepted by the peer). - pub fn alpn_protocol(&self) -> Option<&[u8]> { - self.get_alpn_protocol() - } - - /// Retrieves the ciphersuite agreed with the peer. - /// - /// This returns None until the ciphersuite is agreed. - pub fn negotiated_cipher_suite(&self) -> Option { - self.suite - } - - /// Retrieves the protocol version agreed with the peer. - /// - /// This returns `None` until the version is agreed. - pub fn protocol_version(&self) -> Option { - self.negotiated_version - } - - pub(crate) fn is_tls13(&self) -> bool { - matches!(self.negotiated_version, Some(ProtocolVersion::TLSv1_3)) - } - - fn process_main_protocol( - &mut self, - msg: Message, - mut state: Box>, - data: &mut Data, - ) -> Result>, Error> { - // For TLS1.2, outside of the handshake, send rejection alerts for - // renegotiation requests. These can occur any time. - if self.may_receive_application_data && !self.is_tls13() { - let reject_ty = match self.side { - Side::Client => HandshakeType::HelloRequest, - Side::Server => HandshakeType::ClientHello, - }; - if msg.is_handshake_type(reject_ty) { - self.send_warning_alert(AlertDescription::NoRenegotiation); - return Ok(state); - } - } - - let mut cx = Context { common: self, data }; - match state.handle(&mut cx, msg) { - Ok(next) => { - state = next; - Ok(state) - } - Err(e @ Error::InappropriateMessage { .. }) - | Err(e @ Error::InappropriateHandshakeMessage { .. }) => { - self.send_fatal_alert(AlertDescription::UnexpectedMessage); - Err(e) - } - Err(e) => Err(e), - } - } - - /// Send plaintext application data, fragmenting and - /// encrypting it as it goes out. - /// - /// If internal buffers are too small, this function will not accept - /// all the data. - pub(crate) fn send_some_plaintext(&mut self, data: &[u8]) -> usize { - self.send_plain(data, Limit::Yes) - } - - pub(crate) fn send_early_plaintext(&mut self, data: &[u8]) -> usize { - debug_assert!(self.early_traffic); - debug_assert!(self.record_layer.is_encrypting()); - - if data.is_empty() { - // Don't send empty fragments. - return 0; - } - - self.send_appdata_encrypt(data, Limit::Yes) - } - - // Changing the keys must not span any fragmented handshake - // messages. Otherwise the defragmented messages will have - // been protected with two different record layer protections, - // which is illegal. Not mentioned in RFC. - pub(crate) fn check_aligned_handshake(&mut self) -> Result<(), Error> { - if !self.aligned_handshake { - self.send_fatal_alert(AlertDescription::UnexpectedMessage); - Err(Error::PeerMisbehavedError( - "key epoch or handshake flight with pending fragment".to_string(), - )) - } else { - Ok(()) - } - } - - pub(crate) fn illegal_param(&mut self, why: &str) -> Error { - self.send_fatal_alert(AlertDescription::IllegalParameter); - Error::PeerMisbehavedError(why.to_string()) - } - - pub(crate) fn decrypt_incoming( - &mut self, - encr: OpaqueMessage, - ) -> Result, Error> { - if self - .record_layer - .wants_close_before_decrypt() - { - self.send_close_notify(); - } - - let encrypted_len = encr.payload.0.len(); - let plain = self.record_layer.decrypt_incoming(encr); - - match plain { - Err(Error::PeerSentOversizedRecord) => { - self.send_fatal_alert(AlertDescription::RecordOverflow); - Err(Error::PeerSentOversizedRecord) - } - Err(Error::DecryptError) - if self - .record_layer - .doing_trial_decryption(encrypted_len) => - { - trace!("Dropping undecryptable message after aborted early_data"); - Ok(None) - } - Err(Error::DecryptError) => { - self.send_fatal_alert(AlertDescription::BadRecordMac); - Err(Error::DecryptError) - } - Err(e) => Err(e), - Ok(plain) => Ok(Some(plain)), - } - } - - /// Fragment `m`, encrypt the fragments, and then queue - /// the encrypted fragments for sending. - pub(crate) fn send_msg_encrypt(&mut self, m: PlainMessage) { - let iter = self - .message_fragmenter - .fragment_message(&m); - for m in iter { - self.send_single_fragment(m); - } - } - - /// Like send_msg_encrypt, but operate on an appdata directly. - fn send_appdata_encrypt(&mut self, payload: &[u8], limit: Limit) -> usize { - // Here, the limit on sendable_tls applies to encrypted data, - // but we're respecting it for plaintext data -- so we'll - // be out by whatever the cipher+record overhead is. That's a - // constant and predictable amount, so it's not a terrible issue. - let len = match limit { - Limit::Yes => self - .sendable_tls - .apply_limit(payload.len()), - Limit::No => payload.len(), - }; - - let iter = self.message_fragmenter.fragment_slice( - ContentType::ApplicationData, - ProtocolVersion::TLSv1_2, - &payload[..len], - ); - for m in iter { - self.send_single_fragment(m); - } - - len - } - - fn send_single_fragment(&mut self, m: BorrowedPlainMessage) { - // Close connection once we start to run out of - // sequence space. - if self - .record_layer - .wants_close_before_encrypt() - { - self.send_close_notify(); - } - - // Refuse to wrap counter at all costs. This - // is basically untestable unfortunately. - if self.record_layer.encrypt_exhausted() { - return; - } - - let em = self.record_layer.encrypt_outgoing(m); - self.queue_tls_message(em); - } - - /// Writes TLS messages to `wr`. - /// - /// On success, this function returns `Ok(n)` where `n` is a number of bytes written to `wr` - /// (after encoding and encryption). - /// - /// After this function returns, the connection buffer may not yet be fully flushed. The - /// [`CommonState::wants_write`] function can be used to check if the output buffer is empty. - pub fn write_tls(&mut self, wr: &mut dyn io::Write) -> Result { - self.sendable_tls.write_to(wr) - } - - /// Encrypt and send some plaintext `data`. `limit` controls - /// whether the per-connection buffer limits apply. - /// - /// Returns the number of bytes written from `data`: this might - /// be less than `data.len()` if buffer limits were exceeded. - fn send_plain(&mut self, data: &[u8], limit: Limit) -> usize { - if !self.may_send_application_data { - // If we haven't completed handshaking, buffer - // plaintext to send once we do. - let len = match limit { - Limit::Yes => self - .sendable_plaintext - .append_limited_copy(data), - Limit::No => self - .sendable_plaintext - .append(data.to_vec()), - }; - return len; - } - - debug_assert!(self.record_layer.is_encrypting()); - - if data.is_empty() { - // Don't send empty fragments. - return 0; - } - - self.send_appdata_encrypt(data, limit) - } - - pub(crate) fn start_outgoing_traffic(&mut self) { - self.may_send_application_data = true; - self.flush_plaintext(); - } - - pub(crate) fn start_traffic(&mut self) { - self.may_receive_application_data = true; - self.start_outgoing_traffic(); - } - - /// Sets a limit on the internal buffers used to buffer - /// unsent plaintext (prior to completing the TLS handshake) - /// and unsent TLS records. This limit acts only on application - /// data written through [`Connection::writer`]. - /// - /// By default the limit is 64KB. The limit can be set - /// at any time, even if the current buffer use is higher. - /// - /// [`None`] means no limit applies, and will mean that written - /// data is buffered without bound -- it is up to the application - /// to appropriately schedule its plaintext and TLS writes to bound - /// memory usage. - /// - /// For illustration: `Some(1)` means a limit of one byte applies: - /// [`Connection::writer`] will accept only one byte, encrypt it and - /// add a TLS header. Once this is sent via [`CommonState::write_tls`], - /// another byte may be sent. - /// - /// # Internal write-direction buffering - /// rustls has two buffers whose size are bounded by this setting: - /// - /// ## Buffering of unsent plaintext data prior to handshake completion - /// - /// Calls to [`Connection::writer`] before or during the handshake - /// are buffered (up to the limit specified here). Once the - /// handshake completes this data is encrypted and the resulting - /// TLS records are added to the outgoing buffer. - /// - /// ## Buffering of outgoing TLS records - /// - /// This buffer is used to store TLS records that rustls needs to - /// send to the peer. It is used in these two circumstances: - /// - /// - by [`Connection::process_new_packets`] when a handshake or alert - /// TLS record needs to be sent. - /// - by [`Connection::writer`] post-handshake: the plaintext is - /// encrypted and the resulting TLS record is buffered. - /// - /// This buffer is emptied by [`CommonState::write_tls`]. - pub fn set_buffer_limit(&mut self, limit: Option) { - self.sendable_plaintext.set_limit(limit); - self.sendable_tls.set_limit(limit); - } - - /// Send any buffered plaintext. Plaintext is buffered if - /// written during handshake. - fn flush_plaintext(&mut self) { - if !self.may_send_application_data { - return; - } - - while let Some(buf) = self.sendable_plaintext.pop() { - self.send_plain(&buf, Limit::No); - } - } - - // Put m into sendable_tls for writing. - fn queue_tls_message(&mut self, m: OpaqueMessage) { - self.sendable_tls.append(m.encode()); - } - - /// Send a raw TLS message, fragmenting it if needed. - pub(crate) fn send_msg(&mut self, m: Message, must_encrypt: bool) { - #[cfg(feature = "quic")] - { - if let Protocol::Quic = self.protocol { - if let MessagePayload::Alert(alert) = m.payload { - self.quic.alert = Some(alert.description); - } else { - debug_assert!( - matches!(m.payload, MessagePayload::Handshake { .. }), - "QUIC uses TLS for the cryptographic handshake only" - ); - let mut bytes = Vec::new(); - m.payload.encode(&mut bytes); - self.quic - .hs_queue - .push_back((must_encrypt, bytes)); - } - return; - } - } - if !must_encrypt { - let msg = &m.into(); - let iter = self - .message_fragmenter - .fragment_message(msg); - for m in iter { - self.queue_tls_message(m.to_unencrypted_opaque()); - } - } else { - self.send_msg_encrypt(m.into()); - } - } - - pub(crate) fn take_received_plaintext(&mut self, bytes: Payload) { - self.received_plaintext.append(bytes.0); - } - - #[cfg(feature = "tls12")] - pub(crate) fn start_encryption_tls12(&mut self, secrets: &ConnectionSecrets, side: Side) { - let (dec, enc) = secrets.make_cipher_pair(side); - self.record_layer - .prepare_message_encrypter(enc); - self.record_layer - .prepare_message_decrypter(dec); - } - - #[cfg(feature = "quic")] - pub(crate) fn missing_extension(&mut self, why: &str) -> Error { - self.send_fatal_alert(AlertDescription::MissingExtension); - Error::PeerMisbehavedError(why.to_string()) - } - - fn send_warning_alert(&mut self, desc: AlertDescription) { - warn!("Sending warning alert {:?}", desc); - self.send_warning_alert_no_log(desc); - } - - fn process_alert(&mut self, alert: &AlertMessagePayload) -> Result<(), Error> { - // Reject unknown AlertLevels. - if let AlertLevel::Unknown(_) = alert.level { - self.send_fatal_alert(AlertDescription::IllegalParameter); - } - - // If we get a CloseNotify, make a note to declare EOF to our - // caller. - if alert.description == AlertDescription::CloseNotify { - self.has_received_close_notify = true; - return Ok(()); - } - - // Warnings are nonfatal for TLS1.2, but outlawed in TLS1.3 - // (except, for no good reason, user_cancelled). - if alert.level == AlertLevel::Warning { - if self.is_tls13() && alert.description != AlertDescription::UserCanceled { - self.send_fatal_alert(AlertDescription::DecodeError); - } else { - warn!("TLS alert warning received: {:#?}", alert); - return Ok(()); - } - } - - error!("TLS alert received: {:#?}", alert); - Err(Error::AlertReceived(alert.description)) - } - - pub(crate) fn send_fatal_alert(&mut self, desc: AlertDescription) { - warn!("Sending fatal alert {:?}", desc); - debug_assert!(!self.sent_fatal_alert); - let m = Message::build_alert(AlertLevel::Fatal, desc); - self.send_msg(m, self.record_layer.is_encrypting()); - self.sent_fatal_alert = true; - } - - /// Queues a close_notify warning alert to be sent in the next - /// [`CommonState::write_tls`] call. This informs the peer that the - /// connection is being closed. - pub fn send_close_notify(&mut self) { - debug!("Sending warning alert {:?}", AlertDescription::CloseNotify); - self.send_warning_alert_no_log(AlertDescription::CloseNotify); - } - - fn send_warning_alert_no_log(&mut self, desc: AlertDescription) { - let m = Message::build_alert(AlertLevel::Warning, desc); - self.send_msg(m, self.record_layer.is_encrypting()); - } - - pub(crate) fn set_max_fragment_size(&mut self, new: Option) -> Result<(), Error> { - self.message_fragmenter - .set_max_fragment_size(new) - } - - pub(crate) fn get_alpn_protocol(&self) -> Option<&[u8]> { - self.alpn_protocol - .as_ref() - .map(AsRef::as_ref) - } - - /// Returns true if the caller should call [`Connection::read_tls`] as soon - /// as possible. - /// - /// If there is pending plaintext data to read with [`Connection::reader`], - /// this returns false. If your application respects this mechanism, - /// only one full TLS message will be buffered by rustls. - pub fn wants_read(&self) -> bool { - // We want to read more data all the time, except when we have unprocessed plaintext. - // This provides back-pressure to the TCP buffers. We also don't want to read more after - // the peer has sent us a close notification. - // - // In the handshake case we don't have readable plaintext before the handshake has - // completed, but also don't want to read if we still have sendable tls. - self.received_plaintext.is_empty() - && !self.has_received_close_notify - && (self.may_send_application_data || self.sendable_tls.is_empty()) - } - - fn current_io_state(&self) -> IoState { - IoState { - tls_bytes_to_write: self.sendable_tls.len(), - plaintext_bytes_to_read: self.received_plaintext.len(), - peer_has_closed: self.has_received_close_notify, - } - } - - pub(crate) fn is_quic(&self) -> bool { - #[cfg(feature = "quic")] - { - self.protocol == Protocol::Quic - } - #[cfg(not(feature = "quic"))] - false - } -} - -pub(crate) trait State: Send + Sync { - fn handle( - self: Box, - cx: &mut Context<'_, Data>, - message: Message, - ) -> Result>, Error>; - - fn export_keying_material( - &self, - _output: &mut [u8], - _label: &[u8], - _context: Option<&[u8]>, - ) -> Result<(), Error> { - Err(Error::HandshakeNotComplete) - } - - #[cfg(feature = "secret_extraction")] - fn extract_secrets(&self) -> Result { - Err(Error::HandshakeNotComplete) - } - - fn perhaps_write_key_update(&mut self, _cx: &mut CommonState) {} -} - -pub(crate) struct Context<'a, Data> { - pub(crate) common: &'a mut CommonState, - pub(crate) data: &'a mut Data, -} - -#[cfg(feature = "quic")] -pub(crate) struct Quic { - /// QUIC transport parameters received from the peer during the handshake - pub(crate) params: Option>, - pub(crate) alert: Option, - pub(crate) hs_queue: VecDeque<(bool, Vec)>, - pub(crate) early_secret: Option, - pub(crate) hs_secrets: Option, - pub(crate) traffic_secrets: Option, - /// Whether keys derived from traffic_secrets have been passed to the QUIC implementation - pub(crate) returned_traffic_keys: bool, -} - -#[cfg(feature = "quic")] -impl Quic { - fn new() -> Self { - Self { - params: None, - alert: None, - hs_queue: VecDeque::new(), - early_secret: None, - hs_secrets: None, - traffic_secrets: None, - returned_traffic_keys: false, - } - } -} - -#[derive(Clone, Copy, Debug, PartialEq)] -pub(crate) enum Side { - Client, - Server, -} - -/// Data specific to the peer's side (client or server). -pub trait SideData {} - -const DEFAULT_RECEIVED_PLAINTEXT_LIMIT: usize = 16 * 1024; -const DEFAULT_BUFFER_LIMIT: usize = 64 * 1024; diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/enums.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/enums.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/enums.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/enums.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,431 +0,0 @@ -#![allow(non_camel_case_types)] -#![allow(missing_docs)] -use crate::msgs::codec::{Codec, Reader}; - -enum_builder! { - /// The `ProtocolVersion` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U16 - EnumName: ProtocolVersion; - EnumVal{ - SSLv2 => 0x0200, - SSLv3 => 0x0300, - TLSv1_0 => 0x0301, - TLSv1_1 => 0x0302, - TLSv1_2 => 0x0303, - TLSv1_3 => 0x0304, - DTLSv1_0 => 0xFEFF, - DTLSv1_2 => 0xFEFD, - DTLSv1_3 => 0xFEFC - } -} - -enum_builder! { - /// The `CipherSuite` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U16 - EnumName: CipherSuite; - EnumVal{ - TLS_NULL_WITH_NULL_NULL => 0x0000, - TLS_RSA_WITH_NULL_MD5 => 0x0001, - TLS_RSA_WITH_NULL_SHA => 0x0002, - TLS_RSA_EXPORT_WITH_RC4_40_MD5 => 0x0003, - TLS_RSA_WITH_RC4_128_MD5 => 0x0004, - TLS_RSA_WITH_RC4_128_SHA => 0x0005, - TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 => 0x0006, - TLS_RSA_WITH_IDEA_CBC_SHA => 0x0007, - TLS_RSA_EXPORT_WITH_DES40_CBC_SHA => 0x0008, - TLS_RSA_WITH_DES_CBC_SHA => 0x0009, - TLS_RSA_WITH_3DES_EDE_CBC_SHA => 0x000a, - TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA => 0x000b, - TLS_DH_DSS_WITH_DES_CBC_SHA => 0x000c, - TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA => 0x000d, - TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA => 0x000e, - TLS_DH_RSA_WITH_DES_CBC_SHA => 0x000f, - TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA => 0x0010, - TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA => 0x0011, - TLS_DHE_DSS_WITH_DES_CBC_SHA => 0x0012, - TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA => 0x0013, - TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA => 0x0014, - TLS_DHE_RSA_WITH_DES_CBC_SHA => 0x0015, - TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA => 0x0016, - TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 => 0x0017, - TLS_DH_anon_WITH_RC4_128_MD5 => 0x0018, - TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA => 0x0019, - TLS_DH_anon_WITH_DES_CBC_SHA => 0x001a, - TLS_DH_anon_WITH_3DES_EDE_CBC_SHA => 0x001b, - SSL_FORTEZZA_KEA_WITH_NULL_SHA => 0x001c, - SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA => 0x001d, - TLS_KRB5_WITH_DES_CBC_SHA_or_SSL_FORTEZZA_KEA_WITH_RC4_128_SHA => 0x001e, - TLS_KRB5_WITH_3DES_EDE_CBC_SHA => 0x001f, - TLS_KRB5_WITH_RC4_128_SHA => 0x0020, - TLS_KRB5_WITH_IDEA_CBC_SHA => 0x0021, - TLS_KRB5_WITH_DES_CBC_MD5 => 0x0022, - TLS_KRB5_WITH_3DES_EDE_CBC_MD5 => 0x0023, - TLS_KRB5_WITH_RC4_128_MD5 => 0x0024, - TLS_KRB5_WITH_IDEA_CBC_MD5 => 0x0025, - TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA => 0x0026, - TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA => 0x0027, - TLS_KRB5_EXPORT_WITH_RC4_40_SHA => 0x0028, - TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5 => 0x0029, - TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5 => 0x002a, - TLS_KRB5_EXPORT_WITH_RC4_40_MD5 => 0x002b, - TLS_PSK_WITH_NULL_SHA => 0x002c, - TLS_DHE_PSK_WITH_NULL_SHA => 0x002d, - TLS_RSA_PSK_WITH_NULL_SHA => 0x002e, - TLS_RSA_WITH_AES_128_CBC_SHA => 0x002f, - TLS_DH_DSS_WITH_AES_128_CBC_SHA => 0x0030, - TLS_DH_RSA_WITH_AES_128_CBC_SHA => 0x0031, - TLS_DHE_DSS_WITH_AES_128_CBC_SHA => 0x0032, - TLS_DHE_RSA_WITH_AES_128_CBC_SHA => 0x0033, - TLS_DH_anon_WITH_AES_128_CBC_SHA => 0x0034, - TLS_RSA_WITH_AES_256_CBC_SHA => 0x0035, - TLS_DH_DSS_WITH_AES_256_CBC_SHA => 0x0036, - TLS_DH_RSA_WITH_AES_256_CBC_SHA => 0x0037, - TLS_DHE_DSS_WITH_AES_256_CBC_SHA => 0x0038, - TLS_DHE_RSA_WITH_AES_256_CBC_SHA => 0x0039, - TLS_DH_anon_WITH_AES_256_CBC_SHA => 0x003a, - TLS_RSA_WITH_NULL_SHA256 => 0x003b, - TLS_RSA_WITH_AES_128_CBC_SHA256 => 0x003c, - TLS_RSA_WITH_AES_256_CBC_SHA256 => 0x003d, - TLS_DH_DSS_WITH_AES_128_CBC_SHA256 => 0x003e, - TLS_DH_RSA_WITH_AES_128_CBC_SHA256 => 0x003f, - TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 => 0x0040, - TLS_RSA_WITH_CAMELLIA_128_CBC_SHA => 0x0041, - TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA => 0x0042, - TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA => 0x0043, - TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA => 0x0044, - TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA => 0x0045, - TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA => 0x0046, - TLS_ECDH_ECDSA_WITH_NULL_SHA_draft => 0x0047, - TLS_ECDH_ECDSA_WITH_RC4_128_SHA_draft => 0x0048, - TLS_ECDH_ECDSA_WITH_DES_CBC_SHA_draft => 0x0049, - TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA_draft => 0x004a, - TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA_draft => 0x004b, - TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA_draft => 0x004c, - TLS_ECDH_ECNRA_WITH_DES_CBC_SHA_draft => 0x004d, - TLS_ECDH_ECNRA_WITH_3DES_EDE_CBC_SHA_draft => 0x004e, - TLS_ECMQV_ECDSA_NULL_SHA_draft => 0x004f, - TLS_ECMQV_ECDSA_WITH_RC4_128_SHA_draft => 0x0050, - TLS_ECMQV_ECDSA_WITH_DES_CBC_SHA_draft => 0x0051, - TLS_ECMQV_ECDSA_WITH_3DES_EDE_CBC_SHA_draft => 0x0052, - TLS_ECMQV_ECNRA_NULL_SHA_draft => 0x0053, - TLS_ECMQV_ECNRA_WITH_RC4_128_SHA_draft => 0x0054, - TLS_ECMQV_ECNRA_WITH_DES_CBC_SHA_draft => 0x0055, - TLS_ECMQV_ECNRA_WITH_3DES_EDE_CBC_SHA_draft => 0x0056, - TLS_ECDH_anon_NULL_WITH_SHA_draft => 0x0057, - TLS_ECDH_anon_WITH_RC4_128_SHA_draft => 0x0058, - TLS_ECDH_anon_WITH_DES_CBC_SHA_draft => 0x0059, - TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA_draft => 0x005a, - TLS_ECDH_anon_EXPORT_WITH_DES40_CBC_SHA_draft => 0x005b, - TLS_ECDH_anon_EXPORT_WITH_RC4_40_SHA_draft => 0x005c, - TLS_RSA_EXPORT1024_WITH_RC4_56_MD5 => 0x0060, - TLS_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 => 0x0061, - TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA => 0x0062, - TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA => 0x0063, - TLS_RSA_EXPORT1024_WITH_RC4_56_SHA => 0x0064, - TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA => 0x0065, - TLS_DHE_DSS_WITH_RC4_128_SHA => 0x0066, - TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 => 0x0067, - TLS_DH_DSS_WITH_AES_256_CBC_SHA256 => 0x0068, - TLS_DH_RSA_WITH_AES_256_CBC_SHA256 => 0x0069, - TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 => 0x006a, - TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 => 0x006b, - TLS_DH_anon_WITH_AES_128_CBC_SHA256 => 0x006c, - TLS_DH_anon_WITH_AES_256_CBC_SHA256 => 0x006d, - TLS_DHE_DSS_WITH_3DES_EDE_CBC_RMD => 0x0072, - TLS_DHE_DSS_WITH_AES_128_CBC_RMD => 0x0073, - TLS_DHE_DSS_WITH_AES_256_CBC_RMD => 0x0074, - TLS_DHE_RSA_WITH_3DES_EDE_CBC_RMD => 0x0077, - TLS_DHE_RSA_WITH_AES_128_CBC_RMD => 0x0078, - TLS_DHE_RSA_WITH_AES_256_CBC_RMD => 0x0079, - TLS_RSA_WITH_3DES_EDE_CBC_RMD => 0x007c, - TLS_RSA_WITH_AES_128_CBC_RMD => 0x007d, - TLS_RSA_WITH_AES_256_CBC_RMD => 0x007e, - TLS_GOSTR341094_WITH_28147_CNT_IMIT => 0x0080, - TLS_GOSTR341001_WITH_28147_CNT_IMIT => 0x0081, - TLS_GOSTR341094_WITH_NULL_GOSTR3411 => 0x0082, - TLS_GOSTR341001_WITH_NULL_GOSTR3411 => 0x0083, - TLS_RSA_WITH_CAMELLIA_256_CBC_SHA => 0x0084, - TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA => 0x0085, - TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA => 0x0086, - TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA => 0x0087, - TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA => 0x0088, - TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA => 0x0089, - TLS_PSK_WITH_RC4_128_SHA => 0x008a, - TLS_PSK_WITH_3DES_EDE_CBC_SHA => 0x008b, - TLS_PSK_WITH_AES_128_CBC_SHA => 0x008c, - TLS_PSK_WITH_AES_256_CBC_SHA => 0x008d, - TLS_DHE_PSK_WITH_RC4_128_SHA => 0x008e, - TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA => 0x008f, - TLS_DHE_PSK_WITH_AES_128_CBC_SHA => 0x0090, - TLS_DHE_PSK_WITH_AES_256_CBC_SHA => 0x0091, - TLS_RSA_PSK_WITH_RC4_128_SHA => 0x0092, - TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA => 0x0093, - TLS_RSA_PSK_WITH_AES_128_CBC_SHA => 0x0094, - TLS_RSA_PSK_WITH_AES_256_CBC_SHA => 0x0095, - TLS_RSA_WITH_SEED_CBC_SHA => 0x0096, - TLS_DH_DSS_WITH_SEED_CBC_SHA => 0x0097, - TLS_DH_RSA_WITH_SEED_CBC_SHA => 0x0098, - TLS_DHE_DSS_WITH_SEED_CBC_SHA => 0x0099, - TLS_DHE_RSA_WITH_SEED_CBC_SHA => 0x009a, - TLS_DH_anon_WITH_SEED_CBC_SHA => 0x009b, - TLS_RSA_WITH_AES_128_GCM_SHA256 => 0x009c, - TLS_RSA_WITH_AES_256_GCM_SHA384 => 0x009d, - TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 => 0x009e, - TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 => 0x009f, - TLS_DH_RSA_WITH_AES_128_GCM_SHA256 => 0x00a0, - TLS_DH_RSA_WITH_AES_256_GCM_SHA384 => 0x00a1, - TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 => 0x00a2, - TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 => 0x00a3, - TLS_DH_DSS_WITH_AES_128_GCM_SHA256 => 0x00a4, - TLS_DH_DSS_WITH_AES_256_GCM_SHA384 => 0x00a5, - TLS_DH_anon_WITH_AES_128_GCM_SHA256 => 0x00a6, - TLS_DH_anon_WITH_AES_256_GCM_SHA384 => 0x00a7, - TLS_PSK_WITH_AES_128_GCM_SHA256 => 0x00a8, - TLS_PSK_WITH_AES_256_GCM_SHA384 => 0x00a9, - TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 => 0x00aa, - TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 => 0x00ab, - TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 => 0x00ac, - TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 => 0x00ad, - TLS_PSK_WITH_AES_128_CBC_SHA256 => 0x00ae, - TLS_PSK_WITH_AES_256_CBC_SHA384 => 0x00af, - TLS_PSK_WITH_NULL_SHA256 => 0x00b0, - TLS_PSK_WITH_NULL_SHA384 => 0x00b1, - TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 => 0x00b2, - TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 => 0x00b3, - TLS_DHE_PSK_WITH_NULL_SHA256 => 0x00b4, - TLS_DHE_PSK_WITH_NULL_SHA384 => 0x00b5, - TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 => 0x00b6, - TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 => 0x00b7, - TLS_RSA_PSK_WITH_NULL_SHA256 => 0x00b8, - TLS_RSA_PSK_WITH_NULL_SHA384 => 0x00b9, - TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 => 0x00ba, - TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 => 0x00bb, - TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 => 0x00bc, - TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 => 0x00bd, - TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 => 0x00be, - TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256 => 0x00bf, - TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 => 0x00c0, - TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 => 0x00c1, - TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 => 0x00c2, - TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 => 0x00c3, - TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 => 0x00c4, - TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256 => 0x00c5, - TLS_EMPTY_RENEGOTIATION_INFO_SCSV => 0x00ff, - TLS13_AES_128_GCM_SHA256 => 0x1301, - TLS13_AES_256_GCM_SHA384 => 0x1302, - TLS13_CHACHA20_POLY1305_SHA256 => 0x1303, - TLS13_AES_128_CCM_SHA256 => 0x1304, - TLS13_AES_128_CCM_8_SHA256 => 0x1305, - TLS_ECDH_ECDSA_WITH_NULL_SHA => 0xc001, - TLS_ECDH_ECDSA_WITH_RC4_128_SHA => 0xc002, - TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA => 0xc003, - TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA => 0xc004, - TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA => 0xc005, - TLS_ECDHE_ECDSA_WITH_NULL_SHA => 0xc006, - TLS_ECDHE_ECDSA_WITH_RC4_128_SHA => 0xc007, - TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA => 0xc008, - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA => 0xc009, - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA => 0xc00a, - TLS_ECDH_RSA_WITH_NULL_SHA => 0xc00b, - TLS_ECDH_RSA_WITH_RC4_128_SHA => 0xc00c, - TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA => 0xc00d, - TLS_ECDH_RSA_WITH_AES_128_CBC_SHA => 0xc00e, - TLS_ECDH_RSA_WITH_AES_256_CBC_SHA => 0xc00f, - TLS_ECDHE_RSA_WITH_NULL_SHA => 0xc010, - TLS_ECDHE_RSA_WITH_RC4_128_SHA => 0xc011, - TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA => 0xc012, - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA => 0xc013, - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA => 0xc014, - TLS_ECDH_anon_WITH_NULL_SHA => 0xc015, - TLS_ECDH_anon_WITH_RC4_128_SHA => 0xc016, - TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA => 0xc017, - TLS_ECDH_anon_WITH_AES_128_CBC_SHA => 0xc018, - TLS_ECDH_anon_WITH_AES_256_CBC_SHA => 0xc019, - TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA => 0xc01a, - TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA => 0xc01b, - TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA => 0xc01c, - TLS_SRP_SHA_WITH_AES_128_CBC_SHA => 0xc01d, - TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA => 0xc01e, - TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA => 0xc01f, - TLS_SRP_SHA_WITH_AES_256_CBC_SHA => 0xc020, - TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA => 0xc021, - TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA => 0xc022, - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 => 0xc023, - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 => 0xc024, - TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 => 0xc025, - TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 => 0xc026, - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 => 0xc027, - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 => 0xc028, - TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 => 0xc029, - TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 => 0xc02a, - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 => 0xc02b, - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 => 0xc02c, - TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 => 0xc02d, - TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 => 0xc02e, - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 => 0xc02f, - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 => 0xc030, - TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 => 0xc031, - TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 => 0xc032, - TLS_ECDHE_PSK_WITH_RC4_128_SHA => 0xc033, - TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA => 0xc034, - TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA => 0xc035, - TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA => 0xc036, - TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 => 0xc037, - TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 => 0xc038, - TLS_ECDHE_PSK_WITH_NULL_SHA => 0xc039, - TLS_ECDHE_PSK_WITH_NULL_SHA256 => 0xc03a, - TLS_ECDHE_PSK_WITH_NULL_SHA384 => 0xc03b, - TLS_RSA_WITH_ARIA_128_CBC_SHA256 => 0xc03c, - TLS_RSA_WITH_ARIA_256_CBC_SHA384 => 0xc03d, - TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256 => 0xc03e, - TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384 => 0xc03f, - TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256 => 0xc040, - TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384 => 0xc041, - TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256 => 0xc042, - TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384 => 0xc043, - TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 => 0xc044, - TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 => 0xc045, - TLS_DH_anon_WITH_ARIA_128_CBC_SHA256 => 0xc046, - TLS_DH_anon_WITH_ARIA_256_CBC_SHA384 => 0xc047, - TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 => 0xc048, - TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 => 0xc049, - TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 => 0xc04a, - TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 => 0xc04b, - TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 => 0xc04c, - TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 => 0xc04d, - TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 => 0xc04e, - TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 => 0xc04f, - TLS_RSA_WITH_ARIA_128_GCM_SHA256 => 0xc050, - TLS_RSA_WITH_ARIA_256_GCM_SHA384 => 0xc051, - TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 => 0xc052, - TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 => 0xc053, - TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256 => 0xc054, - TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384 => 0xc055, - TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256 => 0xc056, - TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384 => 0xc057, - TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256 => 0xc058, - TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384 => 0xc059, - TLS_DH_anon_WITH_ARIA_128_GCM_SHA256 => 0xc05a, - TLS_DH_anon_WITH_ARIA_256_GCM_SHA384 => 0xc05b, - TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 => 0xc05c, - TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 => 0xc05d, - TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 => 0xc05e, - TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 => 0xc05f, - TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 => 0xc060, - TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 => 0xc061, - TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 => 0xc062, - TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 => 0xc063, - TLS_PSK_WITH_ARIA_128_CBC_SHA256 => 0xc064, - TLS_PSK_WITH_ARIA_256_CBC_SHA384 => 0xc065, - TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 => 0xc066, - TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 => 0xc067, - TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 => 0xc068, - TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 => 0xc069, - TLS_PSK_WITH_ARIA_128_GCM_SHA256 => 0xc06a, - TLS_PSK_WITH_ARIA_256_GCM_SHA384 => 0xc06b, - TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 => 0xc06c, - TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 => 0xc06d, - TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 => 0xc06e, - TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 => 0xc06f, - TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256 => 0xc070, - TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384 => 0xc071, - TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 => 0xc072, - TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 => 0xc073, - TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 => 0xc074, - TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 => 0xc075, - TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 => 0xc076, - TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 => 0xc077, - TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 => 0xc078, - TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 => 0xc079, - TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 => 0xc07a, - TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 => 0xc07b, - TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 => 0xc07c, - TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 => 0xc07d, - TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256 => 0xc07e, - TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384 => 0xc07f, - TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256 => 0xc080, - TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384 => 0xc081, - TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256 => 0xc082, - TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384 => 0xc083, - TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256 => 0xc084, - TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384 => 0xc085, - TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 => 0xc086, - TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 => 0xc087, - TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 => 0xc088, - TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 => 0xc089, - TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 => 0xc08a, - TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 => 0xc08b, - TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 => 0xc08c, - TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 => 0xc08d, - TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 => 0xc08e, - TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 => 0xc08f, - TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 => 0xc090, - TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 => 0xc091, - TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 => 0xc092, - TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 => 0xc093, - TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 => 0xc094, - TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 => 0xc095, - TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 => 0xc096, - TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 => 0xc097, - TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 => 0xc098, - TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 => 0xc099, - TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 => 0xc09a, - TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 => 0xc09b, - TLS_RSA_WITH_AES_128_CCM => 0xc09c, - TLS_RSA_WITH_AES_256_CCM => 0xc09d, - TLS_DHE_RSA_WITH_AES_128_CCM => 0xc09e, - TLS_DHE_RSA_WITH_AES_256_CCM => 0xc09f, - TLS_RSA_WITH_AES_128_CCM_8 => 0xc0a0, - TLS_RSA_WITH_AES_256_CCM_8 => 0xc0a1, - TLS_DHE_RSA_WITH_AES_128_CCM_8 => 0xc0a2, - TLS_DHE_RSA_WITH_AES_256_CCM_8 => 0xc0a3, - TLS_PSK_WITH_AES_128_CCM => 0xc0a4, - TLS_PSK_WITH_AES_256_CCM => 0xc0a5, - TLS_DHE_PSK_WITH_AES_128_CCM => 0xc0a6, - TLS_DHE_PSK_WITH_AES_256_CCM => 0xc0a7, - TLS_PSK_WITH_AES_128_CCM_8 => 0xc0a8, - TLS_PSK_WITH_AES_256_CCM_8 => 0xc0a9, - TLS_PSK_DHE_WITH_AES_128_CCM_8 => 0xc0aa, - TLS_PSK_DHE_WITH_AES_256_CCM_8 => 0xc0ab, - TLS_ECDHE_ECDSA_WITH_AES_128_CCM => 0xc0ac, - TLS_ECDHE_ECDSA_WITH_AES_256_CCM => 0xc0ad, - TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 => 0xc0ae, - TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 => 0xc0af, - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 => 0xcca8, - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 => 0xcca9, - TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 => 0xccaa, - TLS_PSK_WITH_CHACHA20_POLY1305_SHA256 => 0xccab, - TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 => 0xccac, - TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256 => 0xccad, - TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256 => 0xccae, - SSL_RSA_FIPS_WITH_DES_CBC_SHA => 0xfefe, - SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA => 0xfeff - } -} - -enum_builder! { - /// The `SignatureScheme` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U16 - EnumName: SignatureScheme; - EnumVal{ - RSA_PKCS1_SHA1 => 0x0201, - ECDSA_SHA1_Legacy => 0x0203, - RSA_PKCS1_SHA256 => 0x0401, - ECDSA_NISTP256_SHA256 => 0x0403, - RSA_PKCS1_SHA384 => 0x0501, - ECDSA_NISTP384_SHA384 => 0x0503, - RSA_PKCS1_SHA512 => 0x0601, - ECDSA_NISTP521_SHA512 => 0x0603, - RSA_PSS_SHA256 => 0x0804, - RSA_PSS_SHA384 => 0x0805, - RSA_PSS_SHA512 => 0x0806, - ED25519 => 0x0807, - ED448 => 0x0808 - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/error.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/error.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/error.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/error.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,245 +0,0 @@ -use crate::msgs::enums::{AlertDescription, ContentType, HandshakeType}; -use crate::rand; - -use std::error::Error as StdError; -use std::fmt; -use std::time::SystemTimeError; - -/// rustls reports protocol errors using this type. -#[derive(Debug, PartialEq, Clone)] -pub enum Error { - /// We received a TLS message that isn't valid right now. - /// `expect_types` lists the message types we can expect right now. - /// `got_type` is the type we found. This error is typically - /// caused by a buggy TLS stack (the peer or this one), a broken - /// network, or an attack. - InappropriateMessage { - /// Which types we expected - expect_types: Vec, - /// What type we received - got_type: ContentType, - }, - - /// We received a TLS handshake message that isn't valid right now. - /// `expect_types` lists the handshake message types we can expect - /// right now. `got_type` is the type we found. - InappropriateHandshakeMessage { - /// Which handshake type we expected - expect_types: Vec, - /// What handshake type we received - got_type: HandshakeType, - }, - - /// The peer sent us a syntactically incorrect TLS message. - CorruptMessage, - - /// The peer sent us a TLS message with invalid contents. - CorruptMessagePayload(ContentType), - - /// The peer didn't give us any certificates. - NoCertificatesPresented, - - /// The certificate verifier doesn't support the given type of name. - UnsupportedNameType, - - /// We couldn't decrypt a message. This is invariably fatal. - DecryptError, - - /// We couldn't encrypt a message because it was larger than the allowed message size. - /// This should never happen if the application is using valid record sizes. - EncryptError, - - /// The peer doesn't support a protocol version/feature we require. - /// The parameter gives a hint as to what version/feature it is. - PeerIncompatibleError(String), - - /// The peer deviated from the standard TLS protocol. - /// The parameter gives a hint where. - PeerMisbehavedError(String), - - /// We received a fatal alert. This means the peer is unhappy. - AlertReceived(AlertDescription), - - /// We received an invalidly encoded certificate from the peer. - InvalidCertificateEncoding, - - /// We received a certificate with invalid signature type. - InvalidCertificateSignatureType, - - /// We received a certificate with invalid signature. - InvalidCertificateSignature, - - /// We received a certificate which includes invalid data. - InvalidCertificateData(String), - - /// The presented SCT(s) were invalid. - InvalidSct(sct::Error), - - /// A catch-all error for unlikely errors. - General(String), - - /// We failed to figure out what time it currently is. - FailedToGetCurrentTime, - - /// We failed to acquire random bytes from the system. - FailedToGetRandomBytes, - - /// This function doesn't work until the TLS handshake - /// is complete. - HandshakeNotComplete, - - /// The peer sent an oversized record/fragment. - PeerSentOversizedRecord, - - /// An incoming connection did not support any known application protocol. - NoApplicationProtocol, - - /// The `max_fragment_size` value supplied in configuration was too small, - /// or too large. - BadMaxFragmentSize, -} - -fn join(items: &[T]) -> String { - items - .iter() - .map(|x| format!("{:?}", x)) - .collect::>() - .join(" or ") -} - -impl fmt::Display for Error { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match *self { - Self::InappropriateMessage { - ref expect_types, - ref got_type, - } => write!( - f, - "received unexpected message: got {:?} when expecting {}", - got_type, - join::(expect_types) - ), - Self::InappropriateHandshakeMessage { - ref expect_types, - ref got_type, - } => write!( - f, - "received unexpected handshake message: got {:?} when expecting {}", - got_type, - join::(expect_types) - ), - Self::CorruptMessagePayload(ref typ) => { - write!(f, "received corrupt message of type {:?}", typ) - } - Self::PeerIncompatibleError(ref why) => write!(f, "peer is incompatible: {}", why), - Self::PeerMisbehavedError(ref why) => write!(f, "peer misbehaved: {}", why), - Self::AlertReceived(ref alert) => write!(f, "received fatal alert: {:?}", alert), - Self::InvalidCertificateEncoding => { - write!(f, "invalid peer certificate encoding") - } - Self::InvalidCertificateSignatureType => { - write!(f, "invalid peer certificate signature type") - } - Self::InvalidCertificateSignature => { - write!(f, "invalid peer certificate signature") - } - Self::InvalidCertificateData(ref reason) => { - write!(f, "invalid peer certificate contents: {}", reason) - } - Self::CorruptMessage => write!(f, "received corrupt message"), - Self::NoCertificatesPresented => write!(f, "peer sent no certificates"), - Self::UnsupportedNameType => write!(f, "presented server name type wasn't supported"), - Self::DecryptError => write!(f, "cannot decrypt peer's message"), - Self::EncryptError => write!(f, "cannot encrypt message"), - Self::PeerSentOversizedRecord => write!(f, "peer sent excess record size"), - Self::HandshakeNotComplete => write!(f, "handshake not complete"), - Self::NoApplicationProtocol => write!(f, "peer doesn't support any known protocol"), - Self::InvalidSct(ref err) => write!(f, "invalid certificate timestamp: {:?}", err), - Self::FailedToGetCurrentTime => write!(f, "failed to get current time"), - Self::FailedToGetRandomBytes => write!(f, "failed to get random bytes"), - Self::BadMaxFragmentSize => { - write!(f, "the supplied max_fragment_size was too small or large") - } - Self::General(ref err) => write!(f, "unexpected error: {}", err), - } - } -} - -impl From for Error { - #[inline] - fn from(_: SystemTimeError) -> Self { - Self::FailedToGetCurrentTime - } -} - -impl StdError for Error {} - -impl From for Error { - fn from(_: rand::GetRandomFailed) -> Self { - Self::FailedToGetRandomBytes - } -} - -#[cfg(test)] -mod tests { - use super::Error; - - #[test] - fn smoke() { - use crate::msgs::enums::{AlertDescription, ContentType, HandshakeType}; - use sct; - - let all = vec![ - Error::InappropriateMessage { - expect_types: vec![ContentType::Alert], - got_type: ContentType::Handshake, - }, - Error::InappropriateHandshakeMessage { - expect_types: vec![HandshakeType::ClientHello, HandshakeType::Finished], - got_type: HandshakeType::ServerHello, - }, - Error::CorruptMessage, - Error::CorruptMessagePayload(ContentType::Alert), - Error::NoCertificatesPresented, - Error::DecryptError, - Error::PeerIncompatibleError("no tls1.2".to_string()), - Error::PeerMisbehavedError("inconsistent something".to_string()), - Error::AlertReceived(AlertDescription::ExportRestriction), - Error::InvalidCertificateEncoding, - Error::InvalidCertificateSignatureType, - Error::InvalidCertificateSignature, - Error::InvalidCertificateData("Data".into()), - Error::InvalidSct(sct::Error::MalformedSct), - Error::General("undocumented error".to_string()), - Error::FailedToGetCurrentTime, - Error::FailedToGetRandomBytes, - Error::HandshakeNotComplete, - Error::PeerSentOversizedRecord, - Error::NoApplicationProtocol, - Error::BadMaxFragmentSize, - ]; - - for err in all { - println!("{:?}:", err); - println!(" fmt '{}'", err); - } - } - - #[test] - fn rand_error_mapping() { - use super::rand; - let err: Error = rand::GetRandomFailed.into(); - assert_eq!(err, Error::FailedToGetRandomBytes); - } - - #[test] - fn time_error_mapping() { - use std::time::SystemTime; - - let time_error = SystemTime::UNIX_EPOCH - .duration_since(SystemTime::now()) - .unwrap_err(); - let err: Error = time_error.into(); - assert_eq!(err, Error::FailedToGetCurrentTime); - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/hash_hs.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/hash_hs.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/hash_hs.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/hash_hs.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,240 +0,0 @@ -use crate::msgs::codec::Codec; -use crate::msgs::handshake::HandshakeMessagePayload; -use crate::msgs::message::{Message, MessagePayload}; -use ring::digest; -use std::mem; - -/// Early stage buffering of handshake payloads. -/// -/// Before we know the hash algorithm to use to verify the handshake, we just buffer the messages. -/// During the handshake, we may restart the transcript due to a HelloRetryRequest, reverting -/// from the `HandshakeHash` to a `HandshakeHashBuffer` again. -pub(crate) struct HandshakeHashBuffer { - buffer: Vec, - client_auth_enabled: bool, -} - -impl HandshakeHashBuffer { - pub(crate) fn new() -> Self { - Self { - buffer: Vec::new(), - client_auth_enabled: false, - } - } - - /// We might be doing client auth, so need to keep a full - /// log of the handshake. - pub(crate) fn set_client_auth_enabled(&mut self) { - self.client_auth_enabled = true; - } - - /// Hash/buffer a handshake message. - pub(crate) fn add_message(&mut self, m: &Message) { - if let MessagePayload::Handshake { encoded, .. } = &m.payload { - self.buffer - .extend_from_slice(&encoded.0); - } - } - - /// Hash or buffer a byte slice. - #[cfg(test)] - fn update_raw(&mut self, buf: &[u8]) { - self.buffer.extend_from_slice(buf); - } - - /// Get the hash value if we were to hash `extra` too. - pub(crate) fn get_hash_given( - &self, - hash: &'static digest::Algorithm, - extra: &[u8], - ) -> digest::Digest { - let mut ctx = digest::Context::new(hash); - ctx.update(&self.buffer); - ctx.update(extra); - ctx.finish() - } - - /// We now know what hash function the verify_data will use. - pub(crate) fn start_hash(self, alg: &'static digest::Algorithm) -> HandshakeHash { - let mut ctx = digest::Context::new(alg); - ctx.update(&self.buffer); - HandshakeHash { - ctx, - client_auth: match self.client_auth_enabled { - true => Some(self.buffer), - false => None, - }, - } - } -} - -/// This deals with keeping a running hash of the handshake -/// payloads. This is computed by buffering initially. Once -/// we know what hash function we need to use we switch to -/// incremental hashing. -/// -/// For client auth, we also need to buffer all the messages. -/// This is disabled in cases where client auth is not possible. -pub(crate) struct HandshakeHash { - /// None before we know what hash function we're using - ctx: digest::Context, - - /// buffer for client-auth. - client_auth: Option>, -} - -impl HandshakeHash { - /// We decided not to do client auth after all, so discard - /// the transcript. - pub(crate) fn abandon_client_auth(&mut self) { - self.client_auth = None; - } - - /// Hash/buffer a handshake message. - pub(crate) fn add_message(&mut self, m: &Message) -> &mut Self { - if let MessagePayload::Handshake { encoded, .. } = &m.payload { - self.update_raw(&encoded.0); - } - self - } - - /// Hash or buffer a byte slice. - fn update_raw(&mut self, buf: &[u8]) -> &mut Self { - self.ctx.update(buf); - - if let Some(buffer) = &mut self.client_auth { - buffer.extend_from_slice(buf); - } - - self - } - - /// Get the hash value if we were to hash `extra` too, - /// using hash function `hash`. - pub(crate) fn get_hash_given(&self, extra: &[u8]) -> digest::Digest { - let mut ctx = self.ctx.clone(); - ctx.update(extra); - ctx.finish() - } - - pub(crate) fn into_hrr_buffer(self) -> HandshakeHashBuffer { - let old_hash = self.ctx.finish(); - let old_handshake_hash_msg = - HandshakeMessagePayload::build_handshake_hash(old_hash.as_ref()); - - HandshakeHashBuffer { - client_auth_enabled: self.client_auth.is_some(), - buffer: old_handshake_hash_msg.get_encoding(), - } - } - - /// Take the current hash value, and encapsulate it in a - /// 'handshake_hash' handshake message. Start this hash - /// again, with that message at the front. - pub(crate) fn rollup_for_hrr(&mut self) { - let ctx = &mut self.ctx; - - let old_ctx = mem::replace(ctx, digest::Context::new(ctx.algorithm())); - let old_hash = old_ctx.finish(); - let old_handshake_hash_msg = - HandshakeMessagePayload::build_handshake_hash(old_hash.as_ref()); - - self.update_raw(&old_handshake_hash_msg.get_encoding()); - } - - /// Get the current hash value. - pub(crate) fn get_current_hash(&self) -> digest::Digest { - self.ctx.clone().finish() - } - - /// Takes this object's buffer containing all handshake messages - /// so far. This method only works once; it resets the buffer - /// to empty. - #[cfg(feature = "tls12")] - pub(crate) fn take_handshake_buf(&mut self) -> Option> { - self.client_auth.take() - } - - /// The digest algorithm - pub(crate) fn algorithm(&self) -> &'static digest::Algorithm { - self.ctx.algorithm() - } -} - -#[cfg(test)] -mod test { - use super::HandshakeHashBuffer; - use ring::digest; - - #[test] - fn hashes_correctly() { - let mut hhb = HandshakeHashBuffer::new(); - hhb.update_raw(b"hello"); - assert_eq!(hhb.buffer.len(), 5); - let mut hh = hhb.start_hash(&digest::SHA256); - assert!(hh.client_auth.is_none()); - hh.update_raw(b"world"); - let h = hh.get_current_hash(); - let h = h.as_ref(); - assert_eq!(h[0], 0x93); - assert_eq!(h[1], 0x6a); - assert_eq!(h[2], 0x18); - assert_eq!(h[3], 0x5c); - } - - #[cfg(feature = "tls12")] - #[test] - fn buffers_correctly() { - let mut hhb = HandshakeHashBuffer::new(); - hhb.set_client_auth_enabled(); - hhb.update_raw(b"hello"); - assert_eq!(hhb.buffer.len(), 5); - let mut hh = hhb.start_hash(&digest::SHA256); - assert_eq!( - hh.client_auth - .as_ref() - .map(|buf| buf.len()), - Some(5) - ); - hh.update_raw(b"world"); - assert_eq!( - hh.client_auth - .as_ref() - .map(|buf| buf.len()), - Some(10) - ); - let h = hh.get_current_hash(); - let h = h.as_ref(); - assert_eq!(h[0], 0x93); - assert_eq!(h[1], 0x6a); - assert_eq!(h[2], 0x18); - assert_eq!(h[3], 0x5c); - let buf = hh.take_handshake_buf(); - assert_eq!(Some(b"helloworld".to_vec()), buf); - } - - #[test] - fn abandon() { - let mut hhb = HandshakeHashBuffer::new(); - hhb.set_client_auth_enabled(); - hhb.update_raw(b"hello"); - assert_eq!(hhb.buffer.len(), 5); - let mut hh = hhb.start_hash(&digest::SHA256); - assert_eq!( - hh.client_auth - .as_ref() - .map(|buf| buf.len()), - Some(5) - ); - hh.abandon_client_auth(); - assert_eq!(hh.client_auth, None); - hh.update_raw(b"world"); - assert_eq!(hh.client_auth, None); - let h = hh.get_current_hash(); - let h = h.as_ref(); - assert_eq!(h[0], 0x93); - assert_eq!(h[1], 0x6a); - assert_eq!(h[2], 0x18); - assert_eq!(h[3], 0x5c); - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/key_log_file.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/key_log_file.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/key_log_file.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/key_log_file.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,154 +0,0 @@ -#[cfg(feature = "logging")] -use crate::log::warn; -use crate::KeyLog; -use std::env; -use std::fs::{File, OpenOptions}; -use std::io; -use std::io::Write; -use std::path::Path; -use std::sync::Mutex; - -// Internal mutable state for KeyLogFile -struct KeyLogFileInner { - file: Option, - buf: Vec, -} - -impl KeyLogFileInner { - fn new(var: Result) -> Self { - let path = match var { - Ok(ref s) => Path::new(s), - Err(env::VarError::NotUnicode(ref s)) => Path::new(s), - Err(env::VarError::NotPresent) => { - return Self { - file: None, - buf: Vec::new(), - }; - } - }; - - #[cfg_attr(not(feature = "logging"), allow(unused_variables))] - let file = match OpenOptions::new() - .append(true) - .create(true) - .open(path) - { - Ok(f) => Some(f), - Err(e) => { - warn!("unable to create key log file {:?}: {}", path, e); - None - } - }; - - Self { - file, - buf: Vec::new(), - } - } - - fn try_write(&mut self, label: &str, client_random: &[u8], secret: &[u8]) -> io::Result<()> { - let mut file = match self.file { - None => { - return Ok(()); - } - Some(ref f) => f, - }; - - self.buf.truncate(0); - write!(self.buf, "{} ", label)?; - for b in client_random.iter() { - write!(self.buf, "{:02x}", b)?; - } - write!(self.buf, " ")?; - for b in secret.iter() { - write!(self.buf, "{:02x}", b)?; - } - writeln!(self.buf)?; - file.write_all(&self.buf) - } -} - -/// [`KeyLog`] implementation that opens a file whose name is -/// given by the `SSLKEYLOGFILE` environment variable, and writes -/// keys into it. -/// -/// If `SSLKEYLOGFILE` is not set, this does nothing. -/// -/// If such a file cannot be opened, or cannot be written then -/// this does nothing but logs errors at warning-level. -pub struct KeyLogFile(Mutex); - -impl KeyLogFile { - /// Makes a new `KeyLogFile`. The environment variable is - /// inspected and the named file is opened during this call. - pub fn new() -> Self { - let var = env::var("SSLKEYLOGFILE"); - Self(Mutex::new(KeyLogFileInner::new(var))) - } -} - -impl KeyLog for KeyLogFile { - fn log(&self, label: &str, client_random: &[u8], secret: &[u8]) { - #[cfg_attr(not(feature = "logging"), allow(unused_variables))] - match self - .0 - .lock() - .unwrap() - .try_write(label, client_random, secret) - { - Ok(()) => {} - Err(e) => { - warn!("error writing to key log file: {}", e); - } - } - } -} - -#[cfg(all(test, target_os = "linux"))] -mod test { - use super::*; - - fn init() { - let _ = env_logger::builder() - .is_test(true) - .try_init(); - } - - #[test] - fn test_env_var_is_not_unicode() { - init(); - let mut inner = KeyLogFileInner::new(Err(env::VarError::NotUnicode( - "/tmp/keylogfileinnertest".into(), - ))); - assert!(inner - .try_write("label", b"random", b"secret") - .is_ok()); - } - - #[test] - fn test_env_var_is_not_set() { - init(); - let mut inner = KeyLogFileInner::new(Err(env::VarError::NotPresent)); - assert!(inner - .try_write("label", b"random", b"secret") - .is_ok()); - } - - #[test] - fn test_env_var_cannot_be_opened() { - init(); - let mut inner = KeyLogFileInner::new(Ok("/dev/does-not-exist".into())); - assert!(inner - .try_write("label", b"random", b"secret") - .is_ok()); - } - - #[test] - fn test_env_var_cannot_be_written() { - init(); - let mut inner = KeyLogFileInner::new(Ok("/dev/full".into())); - assert!(inner - .try_write("label", b"random", b"secret") - .is_err()); - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/key_log.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/key_log.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/key_log.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/key_log.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -/// This trait represents the ability to do something useful -/// with key material, such as logging it to a file for debugging. -/// -/// Naturally, secrets passed over the interface are *extremely* -/// sensitive and can break the security of past, present and -/// future sessions. -/// -/// You'll likely want some interior mutability in your -/// implementation to make this useful. -/// -/// See [`KeyLogFile`](crate::KeyLogFile) that implements the standard -/// `SSLKEYLOGFILE` environment variable behaviour. -pub trait KeyLog: Send + Sync { - /// Log the given `secret`. `client_random` is provided for - /// session identification. `label` describes precisely what - /// `secret` means: - /// - /// - `CLIENT_RANDOM`: `secret` is the master secret for a TLSv1.2 session. - /// - `CLIENT_EARLY_TRAFFIC_SECRET`: `secret` encrypts early data - /// transmitted by a client - /// - `SERVER_HANDSHAKE_TRAFFIC_SECRET`: `secret` encrypts - /// handshake messages from the server during a TLSv1.3 handshake. - /// - `CLIENT_HANDSHAKE_TRAFFIC_SECRET`: `secret` encrypts - /// handshake messages from the client during a TLSv1.3 handshake. - /// - `SERVER_TRAFFIC_SECRET_0`: `secret` encrypts post-handshake data - /// from the server in a TLSv1.3 session. - /// - `CLIENT_TRAFFIC_SECRET_0`: `secret` encrypts post-handshake data - /// from the client in a TLSv1.3 session. - /// - `EXPORTER_SECRET`: `secret` is the post-handshake exporter secret - /// in a TLSv1.3 session. - /// - /// These strings are selected to match the NSS key log format: - /// - fn log(&self, label: &str, client_random: &[u8], secret: &[u8]); - - /// Indicates whether the secret with label `label` will be logged. - /// - /// If `will_log` returns true then `log` will be called with the secret. - /// Otherwise, `log` will not be called for the secret. This is a - /// performance optimization. - fn will_log(&self, _label: &str) -> bool { - true - } -} - -/// KeyLog that does exactly nothing. -pub struct NoKeyLog; - -impl KeyLog for NoKeyLog { - fn log(&self, _: &str, _: &[u8], _: &[u8]) {} - #[inline] - fn will_log(&self, _label: &str) -> bool { - false - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/key.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/key.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/key.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/key.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -use std::fmt; - -/// This type contains a private key by value. -/// -/// The private key must be DER-encoded ASN.1 in either -/// PKCS#8 or PKCS#1 format. -/// -/// The `rustls-pemfile` crate can be used to extract -/// private keys from a PEM file in these formats. -#[derive(Debug, Clone, Eq, PartialEq)] -pub struct PrivateKey(pub Vec); - -/// This type contains a single certificate by value. -/// -/// The certificate must be DER-encoded X.509. -/// -/// The `rustls-pemfile` crate can be used to parse a PEM file. -/// -/// ## Note -/// -/// If you are receiving certificates from an untrusted client or server, the contents -/// must be validated manually. -#[derive(Clone, Eq, Hash, Ord, PartialEq, PartialOrd)] -pub struct Certificate(pub Vec); - -impl AsRef<[u8]> for Certificate { - fn as_ref(&self) -> &[u8] { - &self.0 - } -} - -impl fmt::Debug for Certificate { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - use super::bs_debug::BsDebug; - f.debug_tuple("Certificate") - .field(&BsDebug(&self.0)) - .finish() - } -} - -#[cfg(test)] -mod test { - use super::Certificate; - - #[test] - fn certificate_debug() { - assert_eq!( - "Certificate(b\"ab\")", - format!("{:?}", Certificate(b"ab".to_vec())) - ); - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/kx.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/kx.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/kx.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/kx.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,100 +0,0 @@ -use std::fmt; - -use crate::error::Error; -use crate::msgs::enums::NamedGroup; - -/// An in-progress key exchange. This has the algorithm, -/// our private key, and our public key. -pub(crate) struct KeyExchange { - skxg: &'static SupportedKxGroup, - privkey: ring::agreement::EphemeralPrivateKey, - pub(crate) pubkey: ring::agreement::PublicKey, -} - -impl KeyExchange { - /// Choose a SupportedKxGroup by name, from a list of supported groups. - pub(crate) fn choose( - name: NamedGroup, - supported: &[&'static SupportedKxGroup], - ) -> Option<&'static SupportedKxGroup> { - supported - .iter() - .find(|skxg| skxg.name == name) - .cloned() - } - - /// Start a key exchange, using the given SupportedKxGroup. - /// - /// This generates an ephemeral key pair and stores it in the returned KeyExchange object. - pub(crate) fn start(skxg: &'static SupportedKxGroup) -> Option { - let rng = ring::rand::SystemRandom::new(); - let ours = - ring::agreement::EphemeralPrivateKey::generate(skxg.agreement_algorithm, &rng).ok()?; - - let pubkey = ours.compute_public_key().ok()?; - - Some(Self { - skxg, - privkey: ours, - pubkey, - }) - } - - /// Return the group being used. - pub(crate) fn group(&self) -> NamedGroup { - self.skxg.name - } - - /// Completes the key exchange, given the peer's public key. - /// - /// The shared secret is passed into the closure passed down in `f`, and the result of calling - /// `f` is returned to the caller. - pub(crate) fn complete( - self, - peer: &[u8], - f: impl FnOnce(&[u8]) -> Result, - ) -> Result { - let peer_key = ring::agreement::UnparsedPublicKey::new(self.skxg.agreement_algorithm, peer); - ring::agreement::agree_ephemeral(self.privkey, &peer_key, (), f) - .map_err(|()| Error::PeerMisbehavedError("key agreement failed".to_string())) - } -} - -/// A key-exchange group supported by rustls. -/// -/// All possible instances of this class are provided by the library in -/// the `ALL_KX_GROUPS` array. -pub struct SupportedKxGroup { - /// The IANA "TLS Supported Groups" name of the group - pub name: NamedGroup, - - /// The corresponding ring agreement::Algorithm - agreement_algorithm: &'static ring::agreement::Algorithm, -} - -impl fmt::Debug for SupportedKxGroup { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - self.name.fmt(f) - } -} - -/// Ephemeral ECDH on curve25519 (see RFC7748) -pub static X25519: SupportedKxGroup = SupportedKxGroup { - name: NamedGroup::X25519, - agreement_algorithm: &ring::agreement::X25519, -}; - -/// Ephemeral ECDH on secp256r1 (aka NIST-P256) -pub static SECP256R1: SupportedKxGroup = SupportedKxGroup { - name: NamedGroup::secp256r1, - agreement_algorithm: &ring::agreement::ECDH_P256, -}; - -/// Ephemeral ECDH on secp384r1 (aka NIST-P384) -pub static SECP384R1: SupportedKxGroup = SupportedKxGroup { - name: NamedGroup::secp384r1, - agreement_algorithm: &ring::agreement::ECDH_P384, -}; - -/// A list of all the key exchange groups supported by rustls. -pub static ALL_KX_GROUPS: [&SupportedKxGroup; 3] = [&X25519, &SECP256R1, &SECP384R1]; diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/lib.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/lib.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,529 +0,0 @@ -//! # Rustls - a modern TLS library -//! Rustls is a TLS library that aims to provide a good level of cryptographic security, -//! requires no configuration to achieve that security, and provides no unsafe features or -//! obsolete cryptography. -//! -//! ## Current features -//! -//! * TLS1.2 and TLS1.3. -//! * ECDSA, Ed25519 or RSA server authentication by clients. -//! * ECDSA, Ed25519 or RSA server authentication by servers. -//! * Forward secrecy using ECDHE; with curve25519, nistp256 or nistp384 curves. -//! * AES128-GCM and AES256-GCM bulk encryption, with safe nonces. -//! * ChaCha20-Poly1305 bulk encryption ([RFC7905](https://tools.ietf.org/html/rfc7905)). -//! * ALPN support. -//! * SNI support. -//! * Tunable fragment size to make TLS messages match size of underlying transport. -//! * Optional use of vectored IO to minimise system calls. -//! * TLS1.2 session resumption. -//! * TLS1.2 resumption via tickets ([RFC5077](https://tools.ietf.org/html/rfc5077)). -//! * TLS1.3 resumption via tickets or session storage. -//! * TLS1.3 0-RTT data for clients. -//! * TLS1.3 0-RTT data for servers. -//! * Client authentication by clients. -//! * Client authentication by servers. -//! * Extended master secret support ([RFC7627](https://tools.ietf.org/html/rfc7627)). -//! * Exporters ([RFC5705](https://tools.ietf.org/html/rfc5705)). -//! * OCSP stapling by servers. -//! * SCT stapling by servers. -//! * SCT verification by clients. -//! -//! ## Possible future features -//! -//! * PSK support. -//! * OCSP verification by clients. -//! * Certificate pinning. -//! -//! ## Non-features -//! -//! For reasons [explained in the manual](manual), -//! rustls does not and will not support: -//! -//! * SSL1, SSL2, SSL3, TLS1 or TLS1.1. -//! * RC4. -//! * DES or triple DES. -//! * EXPORT ciphersuites. -//! * MAC-then-encrypt ciphersuites. -//! * Ciphersuites without forward secrecy. -//! * Renegotiation. -//! * Kerberos. -//! * Compression. -//! * Discrete-log Diffie-Hellman. -//! * Automatic protocol version downgrade. -//! -//! There are plenty of other libraries that provide these features should you -//! need them. -//! -//! ### Platform support -//! -//! Rustls uses [`ring`](https://crates.io/crates/ring) for implementing the -//! cryptography in TLS. As a result, rustls only runs on platforms -//! [supported by `ring`](https://github.com/briansmith/ring#online-automated-testing). -//! At the time of writing this means x86, x86-64, armv7, and aarch64. -//! -//! ## Design Overview -//! ### Rustls does not take care of network IO -//! It doesn't make or accept TCP connections, or do DNS, or read or write files. -//! -//! There's example client and server code which uses mio to do all needed network -//! IO. -//! -//! ### Rustls provides encrypted pipes -//! These are the [`ServerConnection`] and [`ClientConnection`] types. You supply raw TLS traffic -//! on the left (via the [`read_tls()`] and [`write_tls()`] methods) and then read/write the -//! plaintext on the right: -//! -//! [`read_tls()`]: Connection::read_tls -//! [`write_tls()`]: Connection::read_tls -//! -//! ```text -//! TLS Plaintext -//! === ========= -//! read_tls() +-----------------------+ reader() as io::Read -//! | | -//! +---------> ClientConnection +---------> -//! | or | -//! <---------+ ServerConnection <---------+ -//! | | -//! write_tls() +-----------------------+ writer() as io::Write -//! ``` -//! -//! ### Rustls takes care of server certificate verification -//! You do not need to provide anything other than a set of root certificates to trust. -//! Certificate verification cannot be turned off or disabled in the main API. -//! -//! ## Getting started -//! This is the minimum you need to do to make a TLS client connection. -//! -//! First we load some root certificates. These are used to authenticate the server. -//! The recommended way is to depend on the `webpki_roots` crate which contains -//! the Mozilla set of root certificates. -//! -//! ```rust,no_run -//! let mut root_store = rustls::RootCertStore::empty(); -//! root_store.add_server_trust_anchors( -//! webpki_roots::TLS_SERVER_ROOTS -//! .0 -//! .iter() -//! .map(|ta| { -//! rustls::OwnedTrustAnchor::from_subject_spki_name_constraints( -//! ta.subject, -//! ta.spki, -//! ta.name_constraints, -//! ) -//! }) -//! ); -//! ``` -//! -//! Next, we make a `ClientConfig`. You're likely to make one of these per process, -//! and use it for all connections made by that process. -//! -//! ```rust,no_run -//! # let root_store: rustls::RootCertStore = panic!(); -//! let config = rustls::ClientConfig::builder() -//! .with_safe_defaults() -//! .with_root_certificates(root_store) -//! .with_no_client_auth(); -//! ``` -//! -//! Now we can make a connection. You need to provide the server's hostname so we -//! know what to expect to find in the server's certificate. -//! -//! ```rust -//! # use rustls; -//! # use webpki; -//! # use std::sync::Arc; -//! # use std::convert::TryInto; -//! # let mut root_store = rustls::RootCertStore::empty(); -//! # root_store.add_server_trust_anchors( -//! # webpki_roots::TLS_SERVER_ROOTS -//! # .0 -//! # .iter() -//! # .map(|ta| { -//! # rustls::OwnedTrustAnchor::from_subject_spki_name_constraints( -//! # ta.subject, -//! # ta.spki, -//! # ta.name_constraints, -//! # ) -//! # }) -//! # ); -//! # let config = rustls::ClientConfig::builder() -//! # .with_safe_defaults() -//! # .with_root_certificates(root_store) -//! # .with_no_client_auth(); -//! let rc_config = Arc::new(config); -//! let example_com = "example.com".try_into().unwrap(); -//! let mut client = rustls::ClientConnection::new(rc_config, example_com); -//! ``` -//! -//! Now you should do appropriate IO for the `client` object. If `client.wants_read()` yields -//! true, you should call `client.read_tls()` when the underlying connection has data. -//! Likewise, if `client.wants_write()` yields true, you should call `client.write_tls()` -//! when the underlying connection is able to send data. You should continue doing this -//! as long as the connection is valid. -//! -//! The return types of `read_tls()` and `write_tls()` only tell you if the IO worked. No -//! parsing or processing of the TLS messages is done. After each `read_tls()` you should -//! therefore call `client.process_new_packets()` which parses and processes the messages. -//! Any error returned from `process_new_packets` is fatal to the connection, and will tell you -//! why. For example, if the server's certificate is expired `process_new_packets` will -//! return `Err(WebPkiError(CertExpired, ValidateServerCert))`. From this point on, -//! `process_new_packets` will not do any new work and will return that error continually. -//! -//! You can extract newly received data by calling `client.reader()` (which implements the -//! `io::Read` trait). You can send data to the peer by calling `client.writer()` (which -//! implements `io::Write` trait). Note that `client.writer().write()` buffers data you -//! send if the TLS connection is not yet established: this is useful for writing (say) a -//! HTTP request, but this is buffered so avoid large amounts of data. -//! -//! The following code uses a fictional socket IO API for illustration, and does not handle -//! errors. -//! -//! ```rust,no_run -//! # let mut client = rustls::ClientConnection::new(panic!(), panic!()).unwrap(); -//! # struct Socket { } -//! # impl Socket { -//! # fn ready_for_write(&self) -> bool { false } -//! # fn ready_for_read(&self) -> bool { false } -//! # fn wait_for_something_to_happen(&self) { } -//! # } -//! # -//! # use std::io::{Read, Write, Result}; -//! # impl Read for Socket { -//! # fn read(&mut self, buf: &mut [u8]) -> Result { panic!() } -//! # } -//! # impl Write for Socket { -//! # fn write(&mut self, buf: &[u8]) -> Result { panic!() } -//! # fn flush(&mut self) -> Result<()> { panic!() } -//! # } -//! # -//! # fn connect(_address: &str, _port: u16) -> Socket { -//! # panic!(); -//! # } -//! use std::io; -//! use rustls::Connection; -//! -//! client.writer().write(b"GET / HTTP/1.0\r\n\r\n").unwrap(); -//! let mut socket = connect("example.com", 443); -//! loop { -//! if client.wants_read() && socket.ready_for_read() { -//! client.read_tls(&mut socket).unwrap(); -//! client.process_new_packets().unwrap(); -//! -//! let mut plaintext = Vec::new(); -//! client.reader().read_to_end(&mut plaintext).unwrap(); -//! io::stdout().write(&plaintext).unwrap(); -//! } -//! -//! if client.wants_write() && socket.ready_for_write() { -//! client.write_tls(&mut socket).unwrap(); -//! } -//! -//! socket.wait_for_something_to_happen(); -//! } -//! ``` -//! -//! # Examples -//! [`tlsserver`](https://github.com/rustls/rustls/blob/main/examples/src/bin/tlsserver-mio.rs) -//! and [`tlsclient`](https://github.com/rustls/rustls/blob/main/examples/src/bin/tlsclient-mio.rs) -//! are full worked examples. These both use mio. -//! -//! # Crate features -//! Here's a list of what features are exposed by the rustls crate and what -//! they mean. -//! -//! - `logging`: this makes the rustls crate depend on the `log` crate. -//! rustls outputs interesting protocol-level messages at `trace!` and `debug!` -//! level, and protocol-level errors at `warn!` and `error!` level. The log -//! messages do not contain secret key data, and so are safe to archive without -//! affecting session security. This feature is in the default set. -//! -//! - `dangerous_configuration`: this feature enables a `dangerous()` method on -//! `ClientConfig` and `ServerConfig` that allows setting inadvisable options, -//! such as replacing the certificate verification process. Applications -//! requesting this feature should be reviewed carefully. -//! -//! - `quic`: this feature exposes additional constructors and functions -//! for using rustls as a TLS library for QUIC. See the `quic` module for -//! details of these. You will only need this if you're writing a QUIC -//! implementation. -//! -//! - `tls12`: enables support for TLS version 1.2. This feature is in the default -//! set. Note that, due to the additive nature of Cargo features and because it -//! is enabled by default, other crates in your dependency graph could re-enable -//! it for your application. If you want to disable TLS 1.2 for security reasons, -//! consider explicitly enabling TLS 1.3 only in the config builder API. -//! -//! - `read_buf`: When building with Rust Nightly, adds support for the unstable -//! `std::io::ReadBuf` and related APIs. This reduces costs from initializing -//! buffers. Will do nothing on non-Nightly releases. - -// Require docs for public APIs, deny unsafe code, etc. -#![forbid(unsafe_code, unused_must_use)] -#![cfg_attr(not(read_buf), forbid(unstable_features))] -#![deny( - clippy::clone_on_ref_ptr, - clippy::use_self, - trivial_casts, - trivial_numeric_casts, - missing_docs, - unreachable_pub, - unused_import_braces, - unused_extern_crates, - unused_qualifications -)] -// Relax these clippy lints: -// - ptr_arg: this triggers on references to type aliases that are Vec -// underneath. -// - too_many_arguments: some things just need a lot of state, wrapping it -// doesn't necessarily make it easier to follow what's going on -// - new_ret_no_self: we sometimes return `Arc`, which seems fine -// - single_component_path_imports: our top-level `use log` import causes -// a false positive, https://github.com/rust-lang/rust-clippy/issues/5210 -// - new_without_default: for internal constructors, the indirection is not -// helpful -#![allow( - clippy::too_many_arguments, - clippy::new_ret_no_self, - clippy::ptr_arg, - clippy::single_component_path_imports, - clippy::new_without_default -)] -// Enable documentation for all features on docs.rs -#![cfg_attr(docsrs, feature(doc_cfg))] -// XXX: Because of https://github.com/rust-lang/rust/issues/54726, we cannot -// write `#![rustversion::attr(nightly, feature(read_buf))]` here. Instead, -// build.rs set `read_buf` for (only) Rust Nightly to get the same effect. -// -// All the other conditional logic in the crate could use -// `#[rustversion::nightly]` instead of `#[cfg(read_buf)]`; `#[cfg(read_buf)]` -// is used to avoid needing `rustversion` to be compiled twice during -// cross-compiling. -#![cfg_attr(read_buf, feature(read_buf))] - -// log for logging (optional). -#[cfg(feature = "logging")] -use log; - -#[cfg(not(feature = "logging"))] -#[macro_use] -mod log { - macro_rules! trace ( ($($tt:tt)*) => {{}} ); - macro_rules! debug ( ($($tt:tt)*) => {{}} ); - macro_rules! warn ( ($($tt:tt)*) => {{}} ); - macro_rules! error ( ($($tt:tt)*) => {{}} ); -} - -#[macro_use] -mod msgs; -mod anchors; -mod cipher; -mod conn; -mod error; -mod hash_hs; -mod limited_cache; -mod rand; -mod record_layer; -mod stream; -#[cfg(feature = "tls12")] -mod tls12; -mod tls13; -mod vecbuf; -mod verify; -#[cfg(test)] -mod verifybench; -mod x509; -#[macro_use] -mod check; -mod bs_debug; -mod builder; -mod enums; -mod key; -mod key_log; -mod key_log_file; -mod kx; -mod suites; -mod ticketer; -mod versions; - -/// Internal classes which may be useful outside the library. -/// The contents of this section DO NOT form part of the stable interface. -pub mod internal { - /// Low-level TLS message parsing and encoding functions. - pub mod msgs { - pub use crate::msgs::*; - } - /// Low-level TLS message decryption functions. - pub mod cipher { - pub use crate::cipher::MessageDecrypter; - } -} - -// The public interface is: -pub use crate::anchors::{OwnedTrustAnchor, RootCertStore}; -pub use crate::builder::{ - ConfigBuilder, ConfigSide, WantsCipherSuites, WantsKxGroups, WantsVerifier, WantsVersions, -}; -pub use crate::conn::{ - CommonState, Connection, ConnectionCommon, IoState, Reader, SideData, Writer, -}; -pub use crate::enums::{CipherSuite, ProtocolVersion, SignatureScheme}; -pub use crate::error::Error; -pub use crate::key::{Certificate, PrivateKey}; -pub use crate::key_log::{KeyLog, NoKeyLog}; -pub use crate::key_log_file::KeyLogFile; -pub use crate::kx::{SupportedKxGroup, ALL_KX_GROUPS}; -pub use crate::msgs::enums::{ - AlertDescription, ContentType, HandshakeType, NamedGroup, SignatureAlgorithm, -}; -pub use crate::msgs::handshake::{DigitallySignedStruct, DistinguishedNames}; -pub use crate::stream::{Stream, StreamOwned}; -pub use crate::suites::{ - BulkAlgorithm, SupportedCipherSuite, ALL_CIPHER_SUITES, DEFAULT_CIPHER_SUITES, -}; -#[cfg(feature = "secret_extraction")] -pub use crate::suites::{ConnectionTrafficSecrets, ExtractedSecrets}; -pub use crate::ticketer::Ticketer; -#[cfg(feature = "tls12")] -pub use crate::tls12::Tls12CipherSuite; -pub use crate::tls13::Tls13CipherSuite; -pub use crate::versions::{SupportedProtocolVersion, ALL_VERSIONS, DEFAULT_VERSIONS}; - -/// Items for use in a client. -pub mod client { - pub(super) mod builder; - mod client_conn; - mod common; - pub(super) mod handy; - mod hs; - #[cfg(feature = "tls12")] - mod tls12; - mod tls13; - - pub use builder::{WantsClientCert, WantsTransparencyPolicyOrClientCert}; - #[cfg(feature = "quic")] - pub use client_conn::ClientQuicExt; - pub use client_conn::InvalidDnsNameError; - pub use client_conn::ResolvesClientCert; - pub use client_conn::ServerName; - pub use client_conn::StoresClientSessions; - pub use client_conn::{ClientConfig, ClientConnection, ClientConnectionData, WriteEarlyData}; - pub use handy::{ClientSessionMemoryCache, NoClientSessionStorage}; - - #[cfg(feature = "dangerous_configuration")] - pub use crate::verify::{ - CertificateTransparencyPolicy, HandshakeSignatureValid, ServerCertVerified, - ServerCertVerifier, WebPkiVerifier, - }; - #[cfg(feature = "dangerous_configuration")] - pub use client_conn::danger::DangerousClientConfig; -} - -pub use client::{ClientConfig, ClientConnection, ServerName}; - -/// Items for use in a server. -pub mod server { - pub(crate) mod builder; - mod common; - pub(crate) mod handy; - mod hs; - mod server_conn; - #[cfg(feature = "tls12")] - mod tls12; - mod tls13; - - pub use crate::verify::{ - AllowAnyAnonymousOrAuthenticatedClient, AllowAnyAuthenticatedClient, NoClientAuth, - }; - pub use builder::WantsServerCert; - pub use handy::ResolvesServerCertUsingSni; - pub use handy::{NoServerSessionStorage, ServerSessionMemoryCache}; - #[cfg(feature = "quic")] - pub use server_conn::ServerQuicExt; - pub use server_conn::StoresServerSessions; - pub use server_conn::{ - Accepted, Acceptor, ReadEarlyData, ServerConfig, ServerConnection, ServerConnectionData, - }; - pub use server_conn::{ClientHello, ProducesTickets, ResolvesServerCert}; - - #[cfg(feature = "dangerous_configuration")] - pub use crate::verify::{ClientCertVerified, ClientCertVerifier, DnsName}; -} - -pub use server::{ServerConfig, ServerConnection}; - -/// All defined ciphersuites appear in this module. -/// -/// [`ALL_CIPHER_SUITES`] is provided as an array of all of these values. -pub mod cipher_suite { - pub use crate::suites::CipherSuiteCommon; - #[cfg(feature = "tls12")] - pub use crate::tls12::TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256; - #[cfg(feature = "tls12")] - pub use crate::tls12::TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384; - #[cfg(feature = "tls12")] - pub use crate::tls12::TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256; - #[cfg(feature = "tls12")] - pub use crate::tls12::TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256; - #[cfg(feature = "tls12")] - pub use crate::tls12::TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384; - #[cfg(feature = "tls12")] - pub use crate::tls12::TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256; - pub use crate::tls13::TLS13_AES_128_GCM_SHA256; - pub use crate::tls13::TLS13_AES_256_GCM_SHA384; - pub use crate::tls13::TLS13_CHACHA20_POLY1305_SHA256; -} - -/// All defined protocol versions appear in this module. -/// -/// ALL_VERSIONS is a provided as an array of all of these values. -pub mod version { - #[cfg(feature = "tls12")] - pub use crate::versions::TLS12; - pub use crate::versions::TLS13; -} - -/// All defined key exchange groups appear in this module. -/// -/// ALL_KX_GROUPS is provided as an array of all of these values. -pub mod kx_group { - pub use crate::kx::SECP256R1; - pub use crate::kx::SECP384R1; - pub use crate::kx::X25519; -} - -/// Message signing interfaces and implementations. -pub mod sign; - -#[cfg(feature = "quic")] -#[cfg_attr(docsrs, doc(cfg(feature = "quic")))] -/// APIs for implementing QUIC TLS -pub mod quic; - -/// This is the rustls manual. -pub mod manual; - -/** Type renames. */ -#[allow(clippy::upper_case_acronyms)] -#[doc(hidden)] -#[deprecated(since = "0.20.0", note = "Use ResolvesServerCertUsingSni")] -pub type ResolvesServerCertUsingSNI = server::ResolvesServerCertUsingSni; -#[allow(clippy::upper_case_acronyms)] -#[cfg(feature = "dangerous_configuration")] -#[doc(hidden)] -#[deprecated(since = "0.20.0", note = "Use client::WebPkiVerifier")] -pub type WebPKIVerifier = client::WebPkiVerifier; -#[allow(clippy::upper_case_acronyms)] -#[doc(hidden)] -#[deprecated(since = "0.20.0", note = "Use Error")] -pub type TLSError = Error; -#[doc(hidden)] -#[deprecated(since = "0.20.0", note = "Use ClientConnection")] -pub type ClientSession = ClientConnection; -#[doc(hidden)] -#[deprecated(since = "0.20.0", note = "Use ServerConnection")] -pub type ServerSession = ServerConnection; - -/* Apologies: would make a trait alias here, but those remain unstable. -pub trait Session = Connection; -*/ diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/limited_cache.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/limited_cache.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/limited_cache.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/limited_cache.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,175 +0,0 @@ -use std::borrow::Borrow; -use std::collections::hash_map::Entry; -use std::collections::{HashMap, VecDeque}; -use std::hash::Hash; - -/// A HashMap-alike, which never gets larger than a specified -/// capacity, and evicts the oldest insertion to maintain this. -/// -/// The requested capacity may be rounded up by the underlying -/// collections. This implementation uses all the allocated -/// storage. -/// -/// This is inefficient: it stores keys twice. -pub(crate) struct LimitedCache { - map: HashMap, - - // first item is the oldest key - oldest: VecDeque, -} - -impl LimitedCache -where - K: Eq + Hash + Clone + std::fmt::Debug, -{ - /// Create a new LimitedCache with the given rough capacity. - pub(crate) fn new(capacity_order_of_magnitude: usize) -> Self { - Self { - map: HashMap::with_capacity(capacity_order_of_magnitude), - oldest: VecDeque::with_capacity(capacity_order_of_magnitude), - } - } - - pub(crate) fn insert(&mut self, k: K, v: V) { - let inserted_new_item = match self.map.entry(k) { - Entry::Occupied(mut old) => { - // nb. does not freshen entry in `oldest` - old.insert(v); - false - } - - entry @ Entry::Vacant(_) => { - self.oldest - .push_back(entry.key().clone()); - entry.or_insert(v); - true - } - }; - - // ensure next insert() does not require a realloc - if inserted_new_item && self.oldest.capacity() == self.oldest.len() { - if let Some(oldest_key) = self.oldest.pop_front() { - self.map.remove(&oldest_key); - } - } - } - - pub(crate) fn get(&self, k: &Q) -> Option<&V> - where - K: Borrow, - Q: Hash + Eq, - { - self.map.get(k) - } - - pub(crate) fn remove(&mut self, k: &Q) -> Option - where - K: Borrow, - Q: Hash + Eq, - { - if let Some(value) = self.map.remove(k) { - // O(N) search, followed by O(N) removal - if let Some(index) = self - .oldest - .iter() - .position(|item| item.borrow() == k) - { - self.oldest.remove(index); - } - Some(value) - } else { - None - } - } -} - -#[cfg(test)] -mod test { - type Test = super::LimitedCache; - - #[test] - fn test_updates_existing_item() { - let mut t = Test::new(3); - t.insert("abc".into(), 1); - t.insert("abc".into(), 2); - assert_eq!(t.get("abc"), Some(&2)); - } - - #[test] - fn test_evicts_oldest_item() { - let mut t = Test::new(3); - t.insert("abc".into(), 1); - t.insert("def".into(), 2); - t.insert("ghi".into(), 3); - - assert_eq!(t.get("abc"), None); - assert_eq!(t.get("def"), Some(&2)); - assert_eq!(t.get("ghi"), Some(&3)); - } - - #[test] - fn test_evicts_second_oldest_item_if_first_removed() { - let mut t = Test::new(3); - t.insert("abc".into(), 1); - t.insert("def".into(), 2); - - assert_eq!(t.remove("abc"), Some(1)); - - t.insert("ghi".into(), 3); - t.insert("jkl".into(), 4); - - assert_eq!(t.get("abc"), None); - assert_eq!(t.get("def"), None); - assert_eq!(t.get("ghi"), Some(&3)); - assert_eq!(t.get("jkl"), Some(&4)); - } - - #[test] - fn test_evicts_after_second_oldest_item_removed() { - let mut t = Test::new(3); - t.insert("abc".into(), 1); - t.insert("def".into(), 2); - - assert_eq!(t.remove("def"), Some(2)); - assert_eq!(t.get("abc"), Some(&1)); - - t.insert("ghi".into(), 3); - t.insert("jkl".into(), 4); - - assert_eq!(t.get("abc"), None); - assert_eq!(t.get("def"), None); - assert_eq!(t.get("ghi"), Some(&3)); - assert_eq!(t.get("jkl"), Some(&4)); - } - - #[test] - fn test_removes_all_items() { - let mut t = Test::new(3); - t.insert("abc".into(), 1); - t.insert("def".into(), 2); - - assert_eq!(t.remove("def"), Some(2)); - assert_eq!(t.remove("abc"), Some(1)); - - t.insert("ghi".into(), 3); - t.insert("jkl".into(), 4); - t.insert("mno".into(), 5); - - assert_eq!(t.get("abc"), None); - assert_eq!(t.get("def"), None); - assert_eq!(t.get("ghi"), None); - assert_eq!(t.get("jkl"), Some(&4)); - assert_eq!(t.get("mno"), Some(&5)); - } - - #[test] - fn test_inserts_many_items() { - let mut t = Test::new(3); - - for _ in 0..10000 { - t.insert("abc".into(), 1); - t.insert("def".into(), 2); - t.insert("ghi".into(), 3); - } - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/defaults.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/defaults.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/defaults.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/defaults.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,29 +0,0 @@ -/*! - -## Rationale for defaults - -### Why is AES-256 preferred over AES-128? - -This is a trade-off between: - -1. classical security level: searching a 2^128 key space is as implausible as 2^256. -2. post-quantum security level: the difference is more meaningful, and AES-256 seems like the conservative choice. -3. performance: AES-256 is around 40% slower than AES-128, though hardware acceleration typically narrows this gap. - -The choice is frankly quite marginal. - -### Why is AES-GCM preferred over chacha20-poly1305? - -Hardware support for accelerating AES-GCM is widespread, and hardware-accelerated AES-GCM -is quicker than un-accelerated chacha20-poly1305. - -However, if you know your application will run on a platform without that, you should -_definitely_ change the default order to prefer chacha20-poly1305: both the performance and -the implementation security will be improved. We think this is an uncommon case. - -### Why is x25519 preferred for key exchange over nistp256? - -Both provide roughly the same classical security level, but x25519 has better performance and -it's _much_ more likely that both peers will have good quality implementations. - -*/ diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/features.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/features.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/features.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/features.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -/*! - -## Current features - -* TLS1.2 and TLS1.3. -* ECDSA, Ed25519 or RSA server authentication by clients. -* ECDSA, Ed25519 or RSA server authentication by servers. -* Forward secrecy using ECDHE; with curve25519, nistp256 or nistp384 curves. -* AES128-GCM and AES256-GCM bulk encryption, with safe nonces. -* ChaCha20-Poly1305 bulk encryption ([RFC7905](https://tools.ietf.org/html/rfc7905)). -* ALPN support. -* SNI support. -* Tunable MTU to make TLS messages match size of underlying transport. -* Optional use of vectored IO to minimise system calls. -* TLS1.2 session resumption. -* TLS1.2 resumption via tickets (RFC5077). -* TLS1.3 resumption via tickets or session storage. -* TLS1.3 0-RTT data for clients. -* Client authentication by clients. -* Client authentication by servers. -* Extended master secret support (RFC7627). -* Exporters (RFC5705). -* OCSP stapling by servers. -* SCT stapling by servers. -* SCT verification by clients. - -## Possible future features - -* PSK support. -* OCSP verification by clients. -* Certificate pinning. - -## Non-features - -For reasons explained in the other sections of this manual, rustls does not -and will not support: - -* SSL1, SSL2, SSL3, TLS1 or TLS1.1. -* RC4. -* DES or triple DES. -* EXPORT ciphersuites. -* MAC-then-encrypt ciphersuites. -* Ciphersuites without forward secrecy. -* Renegotiation. -* Kerberos. -* Compression. -* Discrete-log Diffie-Hellman. -* Automatic protocol version downgrade. - -*/ diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/howto.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/howto.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/howto.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/howto.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -/*! # Customising private key usage - -By default rustls supports PKCS#8-format[^1] RSA or ECDSA keys, plus PKCS#1-format RSA keys. - -However, if your private key resides in a HSM, or in another process, or perhaps -another machine, rustls has some extension points to support this: - -The main trait you must implement is [`sign::SigningKey`][signing_key]. The primary method here -is [`choose_scheme`][choose_scheme] where you are given a set of [`SignatureScheme`s][sig_scheme] the client says -it supports: you must choose one (or return `None` -- this aborts the handshake). Having -done that, you return an implementation of the [`sign::Signer`][signer] trait. -The [`sign()`][sign_method] performs the signature and returns it. - -(Unfortunately this is currently designed for keys with low latency access, like in a -PKCS#11 provider, Microsoft CryptoAPI, etc. so is blocking rather than asynchronous. -It's a TODO to make these and other extension points async.) - -Once you have these two pieces, configuring a server to use them involves, briefly: - -- packaging your `sign::SigningKey` with the matching certificate chain into a [`sign::CertifiedKey`][certified_key] -- making a [`ResolvesServerCertUsingSni`][cert_using_sni] and feeding in your `sign::CertifiedKey` for all SNI hostnames you want to use it for, -- setting that as your `ServerConfig`'s [`cert_resolver`][cert_resolver] - -[signing_key]: ../../sign/trait.SigningKey.html -[choose_scheme]: ../../sign/trait.SigningKey.html#tymethod.choose_scheme -[sig_scheme]: ../../enum.SignatureScheme.html -[signer]: ../../sign/trait.Signer.html -[sign_method]: ../../sign/trait.Signer.html#tymethod.sign -[certified_key]: ../../sign/struct.CertifiedKey.html -[cert_using_sni]: ../../struct.ResolvesServerCertUsingSni.html -[cert_resolver]: ../../struct.ServerConfig.html#structfield.cert_resolver - -[^1]: For PKCS#8 it does not support password encryption -- there's not a meaningful threat - model addressed by this, and the encryption supported is typically extremely poor. - -*/ diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/implvulns.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/implvulns.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/implvulns.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/implvulns.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,104 +0,0 @@ -/*! # A review of TLS Implementation Vulnerabilities - -An important part of engineering involves studying and learning from the mistakes of the past. -It would be tremendously unfortunate to spend effort re-discovering and re-fixing the same -vulnerabilities that were discovered in the past. - -## Memory safety - -Being written entirely in the safe-subset of Rust immediately offers us freedom from the entire -class of memory safety vulnerabilities. There are too many to exhaustively list, and there will -certainly be more in the future. - -Examples: - -- Heartbleed [CVE-2014-0160](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0160) (OpenSSL) -- Memory corruption in ASN.1 decoder [CVE-2016-2108](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2108) (OpenSSL) -- Buffer overflow in read_server_hello [CVE-2014-3466](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3466) (GnuTLS) - -## `goto fail` - -This is the name of a vulnerability in Apple Secure Transport [CVE-2014-1266](https://nvd.nist.gov/vuln/detail/CVE-2014-1266). -This boiled down to the following code, which validates the server's signature on the key exchange: - -```c - if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0) - goto fail; - if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0) - goto fail; -> goto fail; - if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0) - goto fail; -``` - -The marked line was duplicated, likely accidentally during a merge. This meant -the remaining part of the function (including the actual signature validation) -was unconditionally skipped. - -Ultimately the one countermeasure to this type of bug is basic testing: that a -valid signature returns success, and that an invalid one does not. rustls -has such testing, but this is really table stakes for security code. - -Further than this, though, we could consider that the *lack* of an error from -this function is a poor indicator that the signature was valid. rustls, instead, -has zero-size and non-copyable types that indicate a particular signature validation -has been performed. These types can be thought of as *capabilities* originated only -by designated signature verification functions -- such functions can then be a focus -of manual code review. Like capabilities, values of these types are otherwise unforgeable, -and are communicable only by Rust's move semantics. - -Values of these types are threaded through the protocol state machine, leading to terminal -states that look like: - -```ignore -struct ExpectTraffic { - (...) - _cert_verified: verify::ServerCertVerified, - _sig_verified: verify::HandshakeSignatureValid, - _fin_verified: verify::FinishedMessageVerified, -} -``` - -Since this state requires a value of these types, it will be a compile-time error to -reach that state without performing the requisite security-critical operations. - -This approach is not infallible, but it has zero runtime cost. - -## State machine attacks: EarlyCCS and SMACK/SKIP/FREAK - -EarlyCCS [CVE-2014-0224](https://nvd.nist.gov/vuln/detail/CVE-2014-0224) was a vulnerability in OpenSSL -found in 2014. The TLS `ChangeCipherSpec` message would be processed at inappropriate times, leading -to data being encrypted with the wrong keys (specifically, keys which were not secret). This resulted -from OpenSSL taking a *reactive* strategy to incoming messages ("when I get a message X, I should do Y") -which allows it to diverge from the proper state machine under attacker control. - -[SMACK](https://mitls.org/pages/attacks/SMACK) is a similar suite of vulnerabilities found in JSSE, -CyaSSL, OpenSSL, Mono and axTLS. "SKIP-TLS" demonstrated that some implementations allowed handshake -messages (and in one case, the entire handshake!) to be skipped leading to breaks in security. "FREAK" -found that some implementations incorrectly allowed export-only state transitions (i.e., transitions that -were only valid when an export ciphersuite was in use). - -rustls represents its protocol state machine carefully to avoid these defects. We model the handshake, -CCS and application data subprotocols in the same single state machine. Each state in this machine is -represented with a single struct, and transitions are modelled as functions that consume the current state -plus one TLS message[^1] and return a struct representing the next state. These functions fully validate -the message type before further operations. - -A sample sequence for a full TLSv1.2 handshake by a client looks like: - -- `hs::ExpectServerHello` (nb. ClientHello is logically sent before this state); transition to `tls12::ExpectCertificate` -- `tls12::ExpectCertificate`; transition to `tls12::ExpectServerKX` -- `tls12::ExpectServerKX`; transition to `tls12::ExpectServerDoneOrCertReq` -- `tls12::ExpectServerDoneOrCertReq`; delegates to `tls12::ExpectCertificateRequest` or `tls12::ExpectServerDone` depending on incoming message. - - `tls12::ExpectServerDone`; transition to `tls12::ExpectCCS` -- `tls12::ExpectCCS`; transition to `tls12::ExpectFinished` -- `tls12::ExpectFinished`; transition to `tls12::ExpectTraffic` -- `tls12::ExpectTraffic`; terminal state; transitions to `tls12::ExpectTraffic` - -In the future we plan to formally prove that all possible transitions modelled in this system of types -are correct with respect to the standard(s). At the moment we rely merely on exhaustive testing. - -[^1]: a logical TLS message: post-decryption, post-fragmentation. - - -*/ diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/mod.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/mod.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -/*! - -This documentation primarily aims to explain design decisions taken in rustls. - -It does this from a few aspects: how rustls attempts to avoid construction errors -that occurred in other TLS libraries, how rustls attempts to avoid past TLS -protocol vulnerabilities, and assorted advice for achieving common tasks with rustls. -*/ -#![allow(non_snake_case)] - -/// This section discusses vulnerabilities in other TLS implementations, theorising their -/// root cause and how we aim to avoid them in rustls. -#[path = "implvulns.rs"] -pub mod _01_impl_vulnerabilities; - -/// This section discusses vulnerabilities and design errors in the TLS protocol. -#[path = "tlsvulns.rs"] -pub mod _02_tls_vulnerabilities; - -/// This section collects together goal-oriented documentation. -#[path = "howto.rs"] -pub mod _03_howto; - -/// This section documents rustls itself: what protocol features are and are not implemented. -#[path = "features.rs"] -pub mod _04_features; - -/// This section provides rationale for the defaults in rustls. -#[path = "defaults.rs"] -pub mod _05_defaults; diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/tlsvulns.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/tlsvulns.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/tlsvulns.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/manual/tlsvulns.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,173 +0,0 @@ -/*! # A review of protocol vulnerabilities - -## CBC MAC-then-encrypt ciphersuites - -Back in 2000 [Bellare and Namprempre](https://eprint.iacr.org/2000/025) discussed how to make authenticated -encryption by composing separate encryption and authentication primitives. That paper included this table: - -| Composition Method | Privacy || Integrity || -|--------------------|---------||-----------|| -|| IND-CPA | IND-CCA | NM-CPA | INT-PTXT | INT-CTXT | -| Encrypt-and-MAC | insecure | insecure | insecure | secure | insecure | -| MAC-then-encrypt | secure | insecure | insecure | secure | insecure | -| Encrypt-then-MAC | secure | secure | secure | secure | secure | - -One may assume from this fairly clear result that encrypt-and-MAC and MAC-then-encrypt compositions would be quickly abandoned -in favour of the remaining proven-secure option. But that didn't happen, not in TLSv1.1 (2006) nor in TLSv1.2 (2008). Worse, -both RFCs included incorrect advice on countermeasures for implementers, suggesting that the flaw was "not believed to be large -enough to be exploitable". - -[Lucky 13](http://www.isg.rhul.ac.uk/tls/Lucky13.html) (2013) exploited this flaw and affected all implementations, including -those written [after discovery](https://aws.amazon.com/blogs/security/s2n-and-lucky-13/). OpenSSL even had a -[memory safety vulnerability in the fix for Lucky 13](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2107), which -gives a flavour of the kind of complexity required to remove the side channel. - -rustls does not implement CBC MAC-then-encrypt ciphersuites for these reasons. TLSv1.3 removed support for these -ciphersuites in 2018. - -There are some further rejected options worth mentioning: [RFC7366](https://tools.ietf.org/html/rfc7366) defines -Encrypt-then-MAC for TLS, but unfortunately cannot be negotiated without also supporting MAC-then-encrypt -(clients cannot express "I offer CBC, but only EtM and not MtE"). - -## RSA PKCS#1 encryption - -"RSA key exchange" in TLS involves the client choosing a large random value and encrypting it using the server's -public key. This has two overall problems: - -1. It provides no _forward secrecy_: later compromise of the server's private key breaks confidentiality of - *all* past sessions using that key. This is a crucial property in the presence of software that is often - [poor at keeping a secret](http://heartbleed.com/). -2. The padding used in practice in TLS ("PKCS#1", or fully "RSAES-PKCS1-v1_5") has been known to be broken since - [1998](http://archiv.infsec.ethz.ch/education/fs08/secsem/bleichenbacher98.pdf). - -In a similar pattern to the MAC-then-encrypt problem discussed above, TLSv1.0 (1999), TLSv1.1 (2006) and TLSv1.2 (2008) -continued to specify use of PKCS#1 encryption, again with incrementally more complex and incorrect advice on countermeasures. - -[ROBOT](https://robotattack.org/) (2018) showed that implementations were still vulnerable to these attacks twenty years later. - -rustls does not support RSA key exchange. TLSv1.3 also removed support. - -## BEAST - -[BEAST](https://vnhacker.blogspot.com/2011/09/beast.html) ([CVE-2011-3389](https://nvd.nist.gov/vuln/detail/CVE-2011-3389)) -was demonstrated in 2011 by Thai Duong and Juliano Rizzo, -and was another vulnerability in CBC-based ciphersuites in SSLv3.0 and TLSv1.0. CBC mode is vulnerable to adaptive -chosen-plaintext attacks if the IV is predictable. In the case of these protocol versions, the IV was the previous -block of ciphertext (as if the entire TLS session was one CBC ciphertext, albeit revealed incrementally). This was -obviously predictable, since it was published on the wire. - -OpenSSL contained a countermeasure for this problem from 2002 onwards: it encrypts an empty message before each real -one, so that the IV used in the real message is unpredictable. This was turned off by default due to bugs in IE6. - -TLSv1.1 fix this vulnerability, but not any of the other deficiencies of CBC mode (see above). - -rustls does not support these ciphersuites. - -## CRIME - -In 2002 [John Kelsey](https://www.iacr.org/cryptodb/archive/2002/FSE/3091/3091.pdf) discussed the length side channel -as applied to compression of combined secret and attacker-chosen strings. - -Compression continued to be an option in TLSv1.1 (2006) and in TLSv1.2 (2008). Support in libraries was widespread. - -[CRIME](http://netifera.com/research/crime/CRIME_ekoparty2012.pdf) ([CVE-2012-4929](https://nvd.nist.gov/vuln/detail/CVE-2012-4929)) -was demonstrated in 2012, again by Thai Duong and Juliano Rizzo. It attacked several protocols offering transparent -compression of application data, allowing quick adaptive chosen-plaintext attacks against secret values like cookies. - -rustls does not implement compression. TLSv1.3 also removed support. - -## Logjam / FREAK - -Way back when SSL was first being born, circa 1995, the US government considered cryptography a munition requiring -export control. SSL contained specific ciphersuites with dramatically small key sizes that were not subject -to export control. These controls were dropped in 2000. - -Since the "export-grade" ciphersuites no longer fulfilled any purpose, and because they were actively harmful to users, -one may have expected software support to disappear quickly. This did not happen. - -In 2015 [the FREAK attack](https://mitls.org/pages/attacks/SMACK#freak) ([CVE-2015-0204](https://nvd.nist.gov/vuln/detail/CVE-2015-0204)) -and [the Logjam attack](https://weakdh.org/) ([CVE-2015-4000](https://nvd.nist.gov/vuln/detail/CVE-2015-4000)) both -demonstrated total breaks of security in the presence of servers that accepted export ciphersuites. FREAK factored -512-bit RSA keys, while Logjam optimised solving discrete logs in the 512-bit group used by many different servers. - -Naturally, rustls does not implement any of these ciphersuites. - -## SWEET32 - -Block ciphers are vulnerable to birthday attacks, where the probability of repeating a block increases dramatically -once a particular key has been used for many blocks. For block ciphers with 64-bit blocks, this becomes probable -once a given key encrypts the order of 32GB of data. - -[Sweet32](https://sweet32.info/) ([CVE-2016-2183](https://nvd.nist.gov/vuln/detail/CVE-2016-2183)) attacked this fact -in the context of TLS support for 3DES, breaking confidentiality by analysing a large amount of attacker-induced traffic -in one session. - -rustls does not support any 64-bit block ciphers. - -## DROWN - -[DROWN](https://drownattack.com/) ([CVE-2016-0800](https://nvd.nist.gov/vuln/detail/CVE-2016-0800)) is a cross-protocol -attack that breaks the security of TLSv1.2 and earlier (when used with RSA key exchange) by using SSLv2. It is required -that the server uses the same key for both protocol versions. - -rustls naturally does not support SSLv2, but most importantly does not support RSA key exchange for TLSv1.2. - -## Poodle - -[POODLE](https://www.openssl.org/~bodo/ssl-poodle.pdf) ([CVE-2014-3566](https://nvd.nist.gov/vuln/detail/CVE-2014-3566)) -is an attack against CBC mode ciphersuites in SSLv3. This was possible in most cases because some clients willingly -downgraded to SSLv3 after failed handshakes for later versions. - -rustls does not support CBC mode ciphersuites, or SSLv3. Note that rustls does not need to implement `TLS_FALLBACK_SCSV` -introduced as a countermeasure because it contains no ability to downgrade to earlier protocol versions. - -## GCM nonces - -[RFC5288](https://tools.ietf.org/html/rfc5288) introduced GCM-based ciphersuites for use in TLS. Unfortunately -the design was poor; it reused design for an unrelated security setting proposed in RFC5116. - -GCM is a typical nonce-based AEAD: it requires a unique (but not necessarily unpredictable) 96-bit nonce for each encryption -with a given key. The design specified by RFC5288 left two-thirds of the nonce construction up to implementations: - -- wasting 8 bytes per TLS ciphertext, -- meaning correct operation cannot be tested for (e.g., in protocol-level test vectors). - -There were no trade-offs here: TLS has a 64-bit sequence number that is not allowed to wrap and would make an ideal nonce. - -As a result, a [2016 study](https://eprint.iacr.org/2016/475.pdf) found: - -- implementations from IBM, A10 and Citrix used randomly-chosen nonces, which are unlikely to be unique over long connections, -- an implementation from Radware used the same nonce for the first two messages. - -rustls uses a counter from a random starting point for GCM nonces. TLSv1.3 and the Chacha20-Poly1305 TLSv1.2 ciphersuite -standardise this method. - -## Renegotiation - -In 2009 Marsh Ray and Steve Dispensa [discovered](https://kryptera.se/Renegotiating%20TLS.pdf) that the renegotiation -feature of all versions of TLS allows a MitM to splice a request of their choice onto the front of the client's real HTTP -request. A countermeasure was proposed and widely implemented to bind renegotiations to their previous negotiations; -unfortunately this was insufficient. - -rustls does not support renegotiation in TLSv1.2. TLSv1.3 also no longer supports renegotiation. - -## 3SHAKE - -[3SHAKE](https://www.mitls.org/pages/attacks/3SHAKE) (2014) described a complex attack that broke the "Secure Renegotiation" extension -introduced as a countermeasure to the previous protocol flaw. - -rustls does not support renegotiation for TLSv1.2 connections, or RSA key exchange, and both are required for this attack -to work. rustls implements the "Extended Master Secret" (RFC7627) extension for TLSv1.2 which was standardised as a countermeasure. - -TLSv1.3 no longer supports renegotiation and RSA key exchange. It also effectively incorporates the improvements made in RFC7627. - -## KCI - -[This vulnerability](https://kcitls.org/) makes use of TLS ciphersuites (those offering static DH) which were standardised -yet not widely used. However, they were implemented by libraries, and as a result enabled for various clients. It coupled -this with misconfigured certificates (on services including facebook.com) which allowed their misuse to MitM connections. - -rustls does not support static DH/EC-DH ciphersuites. We assert that it is misissuance to sign an EC certificate -with the keyUsage extension allowing both signatures and key exchange. That it isn't is probably a failure -of CAB Forum baseline requirements. -*/ diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/alert.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/alert.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/alert.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/alert.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -use crate::msgs::codec::{Codec, Reader}; -use crate::msgs::enums::{AlertDescription, AlertLevel}; - -#[derive(Debug)] -pub struct AlertMessagePayload { - pub level: AlertLevel, - pub description: AlertDescription, -} - -impl Codec for AlertMessagePayload { - fn encode(&self, bytes: &mut Vec) { - self.level.encode(bytes); - self.description.encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - let level = AlertLevel::read(r)?; - let description = AlertDescription::read(r)?; - - Some(Self { level, description }) - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/base.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/base.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/base.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/base.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,170 +0,0 @@ -use std::fmt; - -use crate::key; -use crate::msgs::codec; -use crate::msgs::codec::{Codec, Reader}; - -/// An externally length'd payload -#[derive(Clone, Eq, PartialEq)] -pub struct Payload(pub Vec); - -impl Codec for Payload { - fn encode(&self, bytes: &mut Vec) { - bytes.extend_from_slice(&self.0); - } - - fn read(r: &mut Reader) -> Option { - Some(Self::read(r)) - } -} - -impl Payload { - pub fn new(bytes: impl Into>) -> Self { - Self(bytes.into()) - } - - pub fn empty() -> Self { - Self::new(Vec::new()) - } - - pub fn read(r: &mut Reader) -> Self { - Self(r.rest().to_vec()) - } -} - -impl Codec for key::Certificate { - fn encode(&self, bytes: &mut Vec) { - codec::u24(self.0.len() as u32).encode(bytes); - bytes.extend_from_slice(&self.0); - } - - fn read(r: &mut Reader) -> Option { - let len = codec::u24::read(r)?.0 as usize; - let mut sub = r.sub(len)?; - let body = sub.rest().to_vec(); - Some(Self(body)) - } -} - -impl fmt::Debug for Payload { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - hex(f, &self.0) - } -} - -/// An arbitrary, unknown-content, u24-length-prefixed payload -#[derive(Clone, Eq, PartialEq)] -pub struct PayloadU24(pub Vec); - -impl PayloadU24 { - pub fn new(bytes: Vec) -> Self { - Self(bytes) - } -} - -impl Codec for PayloadU24 { - fn encode(&self, bytes: &mut Vec) { - codec::u24(self.0.len() as u32).encode(bytes); - bytes.extend_from_slice(&self.0); - } - - fn read(r: &mut Reader) -> Option { - let len = codec::u24::read(r)?.0 as usize; - let mut sub = r.sub(len)?; - let body = sub.rest().to_vec(); - Some(Self(body)) - } -} - -impl fmt::Debug for PayloadU24 { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - hex(f, &self.0) - } -} - -/// An arbitrary, unknown-content, u16-length-prefixed payload -#[derive(Clone, Eq, PartialEq)] -pub struct PayloadU16(pub Vec); - -impl PayloadU16 { - pub fn new(bytes: Vec) -> Self { - Self(bytes) - } - - pub fn empty() -> Self { - Self::new(Vec::new()) - } - - pub fn encode_slice(slice: &[u8], bytes: &mut Vec) { - (slice.len() as u16).encode(bytes); - bytes.extend_from_slice(slice); - } -} - -impl Codec for PayloadU16 { - fn encode(&self, bytes: &mut Vec) { - Self::encode_slice(&self.0, bytes); - } - - fn read(r: &mut Reader) -> Option { - let len = u16::read(r)? as usize; - let mut sub = r.sub(len)?; - let body = sub.rest().to_vec(); - Some(Self(body)) - } -} - -impl fmt::Debug for PayloadU16 { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - hex(f, &self.0) - } -} - -/// An arbitrary, unknown-content, u8-length-prefixed payload -#[derive(Clone, Eq, PartialEq)] -pub struct PayloadU8(pub Vec); - -impl PayloadU8 { - pub fn new(bytes: Vec) -> Self { - Self(bytes) - } - - pub fn empty() -> Self { - Self(Vec::new()) - } - - pub fn into_inner(self) -> Vec { - self.0 - } -} - -impl Codec for PayloadU8 { - fn encode(&self, bytes: &mut Vec) { - (self.0.len() as u8).encode(bytes); - bytes.extend_from_slice(&self.0); - } - - fn read(r: &mut Reader) -> Option { - let len = u8::read(r)? as usize; - let mut sub = r.sub(len)?; - let body = sub.rest().to_vec(); - Some(Self(body)) - } -} - -impl fmt::Debug for PayloadU8 { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - hex(f, &self.0) - } -} - -// Format an iterator of u8 into a hex string -pub(super) fn hex<'a>( - f: &mut fmt::Formatter<'_>, - payload: impl IntoIterator, -) -> fmt::Result { - for b in payload { - write!(f, "{:02x}", b)? - } - Ok(()) -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/ccs.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/ccs.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/ccs.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/ccs.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -use crate::msgs::codec::{Codec, Reader}; - -#[derive(Debug)] -pub struct ChangeCipherSpecPayload; - -impl Codec for ChangeCipherSpecPayload { - fn encode(&self, bytes: &mut Vec) { - 1u8.encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - let typ = u8::read(r)?; - - if typ == 1 && !r.any_left() { - Some(Self {}) - } else { - None - } - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/codec.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/codec.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/codec.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/codec.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,290 +0,0 @@ -use std::convert::TryInto; -use std::fmt::Debug; - -/// Wrapper over a slice of bytes that allows reading chunks from -/// with the current position state held using a cursor. -/// -/// A new reader for a sub section of the the buffer can be created -/// using the `sub` function or a section of a certain length can -/// be obtained using the `take` function -pub struct Reader<'a> { - /// The underlying buffer storing the readers content - buffer: &'a [u8], - /// Stores the current reading position for the buffer - cursor: usize, -} - -impl<'a> Reader<'a> { - /// Creates a new Reader of the provided `bytes` slice with - /// the initial cursor position of zero. - pub fn init(bytes: &[u8]) -> Reader { - Reader { - buffer: bytes, - cursor: 0, - } - } - - /// Attempts to create a new Reader on a sub section of this - /// readers bytes by taking a slice of the provided `length` - /// will return None if there is not enough bytes - pub fn sub(&mut self, length: usize) -> Option { - self.take(length).map(Reader::init) - } - - /// Borrows a slice of all the remaining bytes - /// that appear after the cursor position. - /// - /// Moves the cursor to the end of the buffer length. - pub fn rest(&mut self) -> &[u8] { - let rest = &self.buffer[self.cursor..]; - self.cursor = self.buffer.len(); - rest - } - - /// Attempts to borrow a slice of bytes from the current - /// cursor position of `length` if there is not enough - /// bytes remaining after the cursor to take the length - /// then None is returned instead. - pub fn take(&mut self, length: usize) -> Option<&[u8]> { - if self.left() < length { - return None; - } - let current = self.cursor; - self.cursor += length; - Some(&self.buffer[current..current + length]) - } - - /// Used to check whether the reader has any content left - /// after the cursor (cursor has not reached end of buffer) - pub fn any_left(&self) -> bool { - self.cursor < self.buffer.len() - } - - /// Returns the cursor position which is also the number - /// of bytes that have been read from the buffer. - pub fn used(&self) -> usize { - self.cursor - } - - /// Returns the number of bytes that are still able to be - /// read (The number of remaining takes) - pub fn left(&self) -> usize { - self.buffer.len() - self.cursor - } -} - -/// Trait for implementing encoding and decoding functionality -/// on something. -pub trait Codec: Debug + Sized { - /// Function for encoding itself by appending itself to - /// the provided vec of bytes. - fn encode(&self, bytes: &mut Vec); - - /// Function for decoding itself from the provided reader - /// will return Some if the decoding was successful or - /// None if it was not. - fn read(_: &mut Reader) -> Option; - - /// Convenience function for encoding the implementation - /// into a vec and returning it - fn get_encoding(&self) -> Vec { - let mut bytes = Vec::new(); - self.encode(&mut bytes); - bytes - } - - /// Function for wrapping a call to the read function in - /// a Reader for the slice of bytes provided - fn read_bytes(bytes: &[u8]) -> Option { - let mut reader = Reader::init(bytes); - Self::read(&mut reader) - } -} - -fn decode_u8(bytes: &[u8]) -> Option { - let [value]: [u8; 1] = bytes.try_into().ok()?; - Some(value) -} - -impl Codec for u8 { - fn encode(&self, bytes: &mut Vec) { - bytes.push(*self); - } - - fn read(r: &mut Reader) -> Option { - r.take(1).and_then(decode_u8) - } -} - -pub fn put_u16(v: u16, out: &mut [u8]) { - let out: &mut [u8; 2] = (&mut out[..2]).try_into().unwrap(); - *out = u16::to_be_bytes(v); -} - -pub fn decode_u16(bytes: &[u8]) -> Option { - Some(u16::from_be_bytes(bytes.try_into().ok()?)) -} - -impl Codec for u16 { - fn encode(&self, bytes: &mut Vec) { - let mut b16 = [0u8; 2]; - put_u16(*self, &mut b16); - bytes.extend_from_slice(&b16); - } - - fn read(r: &mut Reader) -> Option { - r.take(2).and_then(decode_u16) - } -} - -// Make a distinct type for u24, even though it's a u32 underneath -#[allow(non_camel_case_types)] -#[derive(Debug, Copy, Clone)] -pub struct u24(pub u32); - -impl u24 { - pub fn decode(bytes: &[u8]) -> Option { - let [a, b, c]: [u8; 3] = bytes.try_into().ok()?; - Some(Self(u32::from_be_bytes([0, a, b, c]))) - } -} - -#[cfg(any(target_pointer_width = "32", target_pointer_width = "64"))] -impl From for usize { - #[inline] - fn from(v: u24) -> Self { - v.0 as Self - } -} - -impl Codec for u24 { - fn encode(&self, bytes: &mut Vec) { - let be_bytes = u32::to_be_bytes(self.0); - bytes.extend_from_slice(&be_bytes[1..]) - } - - fn read(r: &mut Reader) -> Option { - r.take(3).and_then(Self::decode) - } -} - -pub fn decode_u32(bytes: &[u8]) -> Option { - Some(u32::from_be_bytes(bytes.try_into().ok()?)) -} - -impl Codec for u32 { - fn encode(&self, bytes: &mut Vec) { - bytes.extend(Self::to_be_bytes(*self)) - } - - fn read(r: &mut Reader) -> Option { - r.take(4).and_then(decode_u32) - } -} - -pub fn put_u64(v: u64, bytes: &mut [u8]) { - let bytes: &mut [u8; 8] = (&mut bytes[..8]).try_into().unwrap(); - *bytes = u64::to_be_bytes(v) -} - -pub fn decode_u64(bytes: &[u8]) -> Option { - Some(u64::from_be_bytes(bytes.try_into().ok()?)) -} - -impl Codec for u64 { - fn encode(&self, bytes: &mut Vec) { - let mut b64 = [0u8; 8]; - put_u64(*self, &mut b64); - bytes.extend_from_slice(&b64); - } - - fn read(r: &mut Reader) -> Option { - r.take(8).and_then(decode_u64) - } -} - -pub fn encode_vec_u8(bytes: &mut Vec, items: &[T]) { - let len_offset = bytes.len(); - bytes.push(0); - - for i in items { - i.encode(bytes); - } - - let len = bytes.len() - len_offset - 1; - debug_assert!(len <= 0xff); - bytes[len_offset] = len as u8; -} - -pub fn encode_vec_u16(bytes: &mut Vec, items: &[T]) { - let len_offset = bytes.len(); - bytes.extend([0, 0]); - - for i in items { - i.encode(bytes); - } - - let len = bytes.len() - len_offset - 2; - debug_assert!(len <= 0xffff); - let out: &mut [u8; 2] = (&mut bytes[len_offset..len_offset + 2]) - .try_into() - .unwrap(); - *out = u16::to_be_bytes(len as u16); -} - -pub fn encode_vec_u24(bytes: &mut Vec, items: &[T]) { - let len_offset = bytes.len(); - bytes.extend([0, 0, 0]); - - for i in items { - i.encode(bytes); - } - - let len = bytes.len() - len_offset - 3; - debug_assert!(len <= 0xff_ffff); - let len_bytes = u32::to_be_bytes(len as u32); - let out: &mut [u8; 3] = (&mut bytes[len_offset..len_offset + 3]) - .try_into() - .unwrap(); - out.copy_from_slice(&len_bytes[1..]); -} - -pub fn read_vec_u8(r: &mut Reader) -> Option> { - let mut ret: Vec = Vec::new(); - let len = usize::from(u8::read(r)?); - let mut sub = r.sub(len)?; - - while sub.any_left() { - ret.push(T::read(&mut sub)?); - } - - Some(ret) -} - -pub fn read_vec_u16(r: &mut Reader) -> Option> { - let mut ret: Vec = Vec::new(); - let len = usize::from(u16::read(r)?); - let mut sub = r.sub(len)?; - - while sub.any_left() { - ret.push(T::read(&mut sub)?); - } - - Some(ret) -} - -pub fn read_vec_u24_limited(r: &mut Reader, max_bytes: usize) -> Option> { - let mut ret: Vec = Vec::new(); - let len = u24::read(r)?.0 as usize; - if len > max_bytes { - return None; - } - - let mut sub = r.sub(len)?; - - while sub.any_left() { - ret.push(T::read(&mut sub)?); - } - - Some(ret) -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/deframer.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/deframer.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/deframer.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/deframer.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,425 +0,0 @@ -use std::collections::VecDeque; -use std::io; - -use crate::error::Error; -use crate::msgs::codec; -use crate::msgs::message::{MessageError, OpaqueMessage}; - -/// This deframer works to reconstruct TLS messages -/// from arbitrary-sized reads, buffering as necessary. -/// The input is `read()`, get the output from `pop()`. -pub struct MessageDeframer { - /// Completed frames for output. - frames: VecDeque, - - /// Set to true if the peer is not talking TLS, but some other - /// protocol. The caller should abort the connection, because - /// the deframer cannot recover. - desynced: bool, - - /// A fixed-size buffer containing the currently-accumulating - /// TLS message. - buf: Box<[u8; OpaqueMessage::MAX_WIRE_SIZE]>, - - /// What size prefix of `buf` is used. - used: usize, -} - -impl Default for MessageDeframer { - fn default() -> Self { - Self::new() - } -} - -impl MessageDeframer { - pub fn new() -> Self { - Self { - frames: VecDeque::new(), - desynced: false, - buf: Box::new([0u8; OpaqueMessage::MAX_WIRE_SIZE]), - used: 0, - } - } - - /// Return any complete messages that the deframer has been able to parse. - /// - /// Returns an `Error` if the deframer failed to parse some message contents, - /// `Ok(None)` if no full message is buffered, and `Ok(Some(_))` if a valid message was found. - pub fn pop(&mut self) -> Result, Error> { - if self.desynced { - return Err(Error::CorruptMessage); - } else if let Some(msg) = self.frames.pop_front() { - return Ok(Some(msg)); - } - - let mut taken = 0; - loop { - // Does our `buf` contain a full message? It does if it is big enough to - // contain a header, and that header has a length which falls within `buf`. - // If so, deframe it and place the message onto the frames output queue. - let mut rd = codec::Reader::init(&self.buf[taken..self.used]); - let m = match OpaqueMessage::read(&mut rd) { - Ok(m) => m, - Err(MessageError::TooShortForHeader | MessageError::TooShortForLength) => break, - Err(_) => { - self.desynced = true; - return Err(Error::CorruptMessage); - } - }; - - taken += rd.used(); - self.frames.push_back(m); - } - - #[allow(clippy::comparison_chain)] - if taken < self.used { - /* Before: - * +----------+----------+----------+ - * | taken | pending |xxxxxxxxxx| - * +----------+----------+----------+ - * 0 ^ taken ^ self.used - * - * After: - * +----------+----------+----------+ - * | pending |xxxxxxxxxxxxxxxxxxxxx| - * +----------+----------+----------+ - * 0 ^ self.used - */ - - self.buf - .copy_within(taken..self.used, 0); - self.used -= taken; - } else if taken == self.used { - self.used = 0; - } - - Ok(self.frames.pop_front()) - } - - /// Read some bytes from `rd`, and add them to our internal buffer. - #[allow(clippy::comparison_chain)] - pub fn read(&mut self, rd: &mut dyn io::Read) -> io::Result { - if self.used == OpaqueMessage::MAX_WIRE_SIZE { - return Err(io::Error::new(io::ErrorKind::Other, "message buffer full")); - } - - // Try to do the largest reads possible. Note that if - // we get a message with a length field out of range here, - // we do a zero length read. That looks like an EOF to - // the next layer up, which is fine. - debug_assert!(self.used <= OpaqueMessage::MAX_WIRE_SIZE); - let new_bytes = rd.read(&mut self.buf[self.used..])?; - self.used += new_bytes; - Ok(new_bytes) - } - - /// Returns true if we have messages for the caller - /// to process, either whole messages in our output - /// queue or partial messages in our buffer. - pub fn has_pending(&self) -> bool { - !self.frames.is_empty() || self.used > 0 - } -} - -#[cfg(test)] -mod tests { - use super::MessageDeframer; - use crate::msgs::message::{Message, OpaqueMessage}; - use crate::{msgs, Error}; - use std::convert::TryFrom; - use std::io; - - const FIRST_MESSAGE: &[u8] = include_bytes!("../testdata/deframer-test.1.bin"); - const SECOND_MESSAGE: &[u8] = include_bytes!("../testdata/deframer-test.2.bin"); - - const EMPTY_APPLICATIONDATA_MESSAGE: &[u8] = - include_bytes!("../testdata/deframer-empty-applicationdata.bin"); - - const INVALID_EMPTY_MESSAGE: &[u8] = include_bytes!("../testdata/deframer-invalid-empty.bin"); - const INVALID_CONTENTTYPE_MESSAGE: &[u8] = - include_bytes!("../testdata/deframer-invalid-contenttype.bin"); - const INVALID_VERSION_MESSAGE: &[u8] = - include_bytes!("../testdata/deframer-invalid-version.bin"); - const INVALID_LENGTH_MESSAGE: &[u8] = include_bytes!("../testdata/deframer-invalid-length.bin"); - - struct ByteRead<'a> { - buf: &'a [u8], - offs: usize, - } - - impl<'a> ByteRead<'a> { - fn new(bytes: &'a [u8]) -> Self { - ByteRead { - buf: bytes, - offs: 0, - } - } - } - - impl<'a> io::Read for ByteRead<'a> { - fn read(&mut self, buf: &mut [u8]) -> io::Result { - let mut len = 0; - - while len < buf.len() && len < self.buf.len() - self.offs { - buf[len] = self.buf[self.offs + len]; - len += 1; - } - - self.offs += len; - - Ok(len) - } - } - - fn input_bytes(d: &mut MessageDeframer, bytes: &[u8]) -> io::Result { - let mut rd = ByteRead::new(bytes); - d.read(&mut rd) - } - - fn input_bytes_concat( - d: &mut MessageDeframer, - bytes1: &[u8], - bytes2: &[u8], - ) -> io::Result { - let mut bytes = vec![0u8; bytes1.len() + bytes2.len()]; - bytes[..bytes1.len()].clone_from_slice(bytes1); - bytes[bytes1.len()..].clone_from_slice(bytes2); - let mut rd = ByteRead::new(&bytes); - d.read(&mut rd) - } - - struct ErrorRead { - error: Option, - } - - impl ErrorRead { - fn new(error: io::Error) -> Self { - Self { error: Some(error) } - } - } - - impl io::Read for ErrorRead { - fn read(&mut self, buf: &mut [u8]) -> io::Result { - for (i, b) in buf.iter_mut().enumerate() { - *b = i as u8; - } - - let error = self.error.take().unwrap(); - Err(error) - } - } - - fn input_error(d: &mut MessageDeframer) { - let error = io::Error::from(io::ErrorKind::TimedOut); - let mut rd = ErrorRead::new(error); - d.read(&mut rd) - .expect_err("error not propagated"); - } - - fn input_whole_incremental(d: &mut MessageDeframer, bytes: &[u8]) { - let before = d.used; - - for i in 0..bytes.len() { - assert_len(1, input_bytes(d, &bytes[i..i + 1])); - assert!(d.has_pending()); - } - - assert_eq!(before + bytes.len(), d.used); - } - - fn assert_len(want: usize, got: io::Result) { - if let Ok(gotval) = got { - assert_eq!(gotval, want); - } else { - panic!("read failed, expected {:?} bytes", want); - } - } - - fn pop_first(d: &mut MessageDeframer) { - let m = d.pop().unwrap().unwrap(); - assert_eq!(m.typ, msgs::enums::ContentType::Handshake); - Message::try_from(m.into_plain_message()).unwrap(); - } - - fn pop_second(d: &mut MessageDeframer) { - let m = d.pop().unwrap().unwrap(); - assert_eq!(m.typ, msgs::enums::ContentType::Alert); - Message::try_from(m.into_plain_message()).unwrap(); - } - - #[test] - fn check_incremental() { - let mut d = MessageDeframer::new(); - assert!(!d.has_pending()); - input_whole_incremental(&mut d, FIRST_MESSAGE); - assert!(d.has_pending()); - assert_eq!(0, d.frames.len()); - pop_first(&mut d); - assert!(!d.has_pending()); - assert!(!d.desynced); - } - - #[test] - fn check_incremental_2() { - let mut d = MessageDeframer::new(); - assert!(!d.has_pending()); - input_whole_incremental(&mut d, FIRST_MESSAGE); - assert!(d.has_pending()); - input_whole_incremental(&mut d, SECOND_MESSAGE); - assert!(d.has_pending()); - assert_eq!(0, d.frames.len()); - pop_first(&mut d); - assert!(d.has_pending()); - assert_eq!(1, d.frames.len()); - pop_second(&mut d); - assert!(!d.has_pending()); - assert!(!d.desynced); - } - - #[test] - fn check_whole() { - let mut d = MessageDeframer::new(); - assert!(!d.has_pending()); - assert_len(FIRST_MESSAGE.len(), input_bytes(&mut d, FIRST_MESSAGE)); - assert!(d.has_pending()); - assert_eq!(d.frames.len(), 0); - pop_first(&mut d); - assert!(!d.has_pending()); - assert!(!d.desynced); - } - - #[test] - fn check_whole_2() { - let mut d = MessageDeframer::new(); - assert!(!d.has_pending()); - assert_len(FIRST_MESSAGE.len(), input_bytes(&mut d, FIRST_MESSAGE)); - assert_len(SECOND_MESSAGE.len(), input_bytes(&mut d, SECOND_MESSAGE)); - assert_eq!(d.frames.len(), 0); - pop_first(&mut d); - assert_eq!(d.frames.len(), 1); - pop_second(&mut d); - assert!(!d.has_pending()); - assert!(!d.desynced); - } - - #[test] - fn test_two_in_one_read() { - let mut d = MessageDeframer::new(); - assert!(!d.has_pending()); - assert_len( - FIRST_MESSAGE.len() + SECOND_MESSAGE.len(), - input_bytes_concat(&mut d, FIRST_MESSAGE, SECOND_MESSAGE), - ); - assert_eq!(d.frames.len(), 0); - pop_first(&mut d); - assert_eq!(d.frames.len(), 1); - pop_second(&mut d); - assert!(!d.has_pending()); - assert!(!d.desynced); - } - - #[test] - fn test_two_in_one_read_shortest_first() { - let mut d = MessageDeframer::new(); - assert!(!d.has_pending()); - assert_len( - FIRST_MESSAGE.len() + SECOND_MESSAGE.len(), - input_bytes_concat(&mut d, SECOND_MESSAGE, FIRST_MESSAGE), - ); - assert_eq!(d.frames.len(), 0); - pop_second(&mut d); - assert_eq!(d.frames.len(), 1); - pop_first(&mut d); - assert!(!d.has_pending()); - assert!(!d.desynced); - } - - #[test] - fn test_incremental_with_nonfatal_read_error() { - let mut d = MessageDeframer::new(); - assert_len(3, input_bytes(&mut d, &FIRST_MESSAGE[..3])); - input_error(&mut d); - assert_len( - FIRST_MESSAGE.len() - 3, - input_bytes(&mut d, &FIRST_MESSAGE[3..]), - ); - assert_eq!(d.frames.len(), 0); - pop_first(&mut d); - assert!(!d.has_pending()); - assert!(!d.desynced); - } - - #[test] - fn test_invalid_contenttype_errors() { - let mut d = MessageDeframer::new(); - assert_len( - INVALID_CONTENTTYPE_MESSAGE.len(), - input_bytes(&mut d, INVALID_CONTENTTYPE_MESSAGE), - ); - assert_eq!(d.pop().unwrap_err(), Error::CorruptMessage); - } - - #[test] - fn test_invalid_version_errors() { - let mut d = MessageDeframer::new(); - assert_len( - INVALID_VERSION_MESSAGE.len(), - input_bytes(&mut d, INVALID_VERSION_MESSAGE), - ); - assert_eq!(d.pop().unwrap_err(), Error::CorruptMessage); - } - - #[test] - fn test_invalid_length_errors() { - let mut d = MessageDeframer::new(); - assert_len( - INVALID_LENGTH_MESSAGE.len(), - input_bytes(&mut d, INVALID_LENGTH_MESSAGE), - ); - assert_eq!(d.pop().unwrap_err(), Error::CorruptMessage); - } - - #[test] - fn test_empty_applicationdata() { - let mut d = MessageDeframer::new(); - assert_len( - EMPTY_APPLICATIONDATA_MESSAGE.len(), - input_bytes(&mut d, EMPTY_APPLICATIONDATA_MESSAGE), - ); - let m = d.pop().unwrap().unwrap(); - assert_eq!(m.typ, msgs::enums::ContentType::ApplicationData); - assert_eq!(m.payload.0.len(), 0); - assert!(!d.has_pending()); - assert!(!d.desynced); - } - - #[test] - fn test_invalid_empty_errors() { - let mut d = MessageDeframer::new(); - assert_len( - INVALID_EMPTY_MESSAGE.len(), - input_bytes(&mut d, INVALID_EMPTY_MESSAGE), - ); - assert_eq!(d.pop().unwrap_err(), Error::CorruptMessage); - // CorruptMessage has been fused - assert_eq!(d.pop().unwrap_err(), Error::CorruptMessage); - } - - #[test] - fn test_limited_buffer() { - const PAYLOAD_LEN: usize = 16_384; - let mut message = Vec::with_capacity(8192); - message.push(0x17); // ApplicationData - message.extend(&[0x03, 0x04]); // ProtocolVersion - message.extend((PAYLOAD_LEN as u16).to_be_bytes()); // payload length - message.extend(&[0; PAYLOAD_LEN]); - - let mut d = MessageDeframer::new(); - assert_len(message.len(), input_bytes(&mut d, &message)); - assert_len( - OpaqueMessage::MAX_WIRE_SIZE - 16_389, - input_bytes(&mut d, &message), - ); - assert!(input_bytes(&mut d, &message).is_err()); - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/enums.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/enums.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/enums.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/enums.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,375 +0,0 @@ -#![allow(clippy::upper_case_acronyms)] -#![allow(non_camel_case_types)] -/// This file is autogenerated. See https://github.com/ctz/tls-hacking/ -use crate::msgs::codec::{Codec, Reader}; - -enum_builder! { - /// The `HashAlgorithm` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U8 - EnumName: HashAlgorithm; - EnumVal{ - NONE => 0x00, - MD5 => 0x01, - SHA1 => 0x02, - SHA224 => 0x03, - SHA256 => 0x04, - SHA384 => 0x05, - SHA512 => 0x06 - } -} - -enum_builder! { - /// The `SignatureAlgorithm` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U8 - EnumName: SignatureAlgorithm; - EnumVal{ - Anonymous => 0x00, - RSA => 0x01, - DSA => 0x02, - ECDSA => 0x03, - ED25519 => 0x07, - ED448 => 0x08 - } -} - -enum_builder! { - /// The `ClientCertificateType` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U8 - EnumName: ClientCertificateType; - EnumVal{ - RSASign => 0x01, - DSSSign => 0x02, - RSAFixedDH => 0x03, - DSSFixedDH => 0x04, - RSAEphemeralDH => 0x05, - DSSEphemeralDH => 0x06, - FortezzaDMS => 0x14, - ECDSASign => 0x40, - RSAFixedECDH => 0x41, - ECDSAFixedECDH => 0x42 - } -} - -enum_builder! { - /// The `Compression` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U8 - EnumName: Compression; - EnumVal{ - Null => 0x00, - Deflate => 0x01, - LSZ => 0x40 - } -} - -enum_builder! { - /// The `ContentType` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U8 - EnumName: ContentType; - EnumVal{ - ChangeCipherSpec => 0x14, - Alert => 0x15, - Handshake => 0x16, - ApplicationData => 0x17, - Heartbeat => 0x18 - } -} - -enum_builder! { - /// The `HandshakeType` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U8 - EnumName: HandshakeType; - EnumVal{ - HelloRequest => 0x00, - ClientHello => 0x01, - ServerHello => 0x02, - HelloVerifyRequest => 0x03, - NewSessionTicket => 0x04, - EndOfEarlyData => 0x05, - HelloRetryRequest => 0x06, - EncryptedExtensions => 0x08, - Certificate => 0x0b, - ServerKeyExchange => 0x0c, - CertificateRequest => 0x0d, - ServerHelloDone => 0x0e, - CertificateVerify => 0x0f, - ClientKeyExchange => 0x10, - Finished => 0x14, - CertificateURL => 0x15, - CertificateStatus => 0x16, - KeyUpdate => 0x18, - MessageHash => 0xfe - } -} - -enum_builder! { - /// The `AlertLevel` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U8 - EnumName: AlertLevel; - EnumVal{ - Warning => 0x01, - Fatal => 0x02 - } -} - -enum_builder! { - /// The `AlertDescription` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U8 - EnumName: AlertDescription; - EnumVal{ - CloseNotify => 0x00, - UnexpectedMessage => 0x0a, - BadRecordMac => 0x14, - DecryptionFailed => 0x15, - RecordOverflow => 0x16, - DecompressionFailure => 0x1e, - HandshakeFailure => 0x28, - NoCertificate => 0x29, - BadCertificate => 0x2a, - UnsupportedCertificate => 0x2b, - CertificateRevoked => 0x2c, - CertificateExpired => 0x2d, - CertificateUnknown => 0x2e, - IllegalParameter => 0x2f, - UnknownCA => 0x30, - AccessDenied => 0x31, - DecodeError => 0x32, - DecryptError => 0x33, - ExportRestriction => 0x3c, - ProtocolVersion => 0x46, - InsufficientSecurity => 0x47, - InternalError => 0x50, - InappropriateFallback => 0x56, - UserCanceled => 0x5a, - NoRenegotiation => 0x64, - MissingExtension => 0x6d, - UnsupportedExtension => 0x6e, - CertificateUnobtainable => 0x6f, - UnrecognisedName => 0x70, - BadCertificateStatusResponse => 0x71, - BadCertificateHashValue => 0x72, - UnknownPSKIdentity => 0x73, - CertificateRequired => 0x74, - NoApplicationProtocol => 0x78 - } -} - -enum_builder! { - /// The `HeartbeatMessageType` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U8 - EnumName: HeartbeatMessageType; - EnumVal{ - Request => 0x01, - Response => 0x02 - } -} - -enum_builder! { - /// The `ExtensionType` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U16 - EnumName: ExtensionType; - EnumVal{ - ServerName => 0x0000, - MaxFragmentLength => 0x0001, - ClientCertificateUrl => 0x0002, - TrustedCAKeys => 0x0003, - TruncatedHMAC => 0x0004, - StatusRequest => 0x0005, - UserMapping => 0x0006, - ClientAuthz => 0x0007, - ServerAuthz => 0x0008, - CertificateType => 0x0009, - EllipticCurves => 0x000a, - ECPointFormats => 0x000b, - SRP => 0x000c, - SignatureAlgorithms => 0x000d, - UseSRTP => 0x000e, - Heartbeat => 0x000f, - ALProtocolNegotiation => 0x0010, - SCT => 0x0012, - Padding => 0x0015, - ExtendedMasterSecret => 0x0017, - SessionTicket => 0x0023, - PreSharedKey => 0x0029, - EarlyData => 0x002a, - SupportedVersions => 0x002b, - Cookie => 0x002c, - PSKKeyExchangeModes => 0x002d, - TicketEarlyDataInfo => 0x002e, - CertificateAuthorities => 0x002f, - OIDFilters => 0x0030, - PostHandshakeAuth => 0x0031, - SignatureAlgorithmsCert => 0x0032, - KeyShare => 0x0033, - TransportParameters => 0x0039, - NextProtocolNegotiation => 0x3374, - ChannelId => 0x754f, - RenegotiationInfo => 0xff01, - TransportParametersDraft => 0xffa5 - } -} - -enum_builder! { - /// The `ServerNameType` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U8 - EnumName: ServerNameType; - EnumVal{ - HostName => 0x00 - } -} - -enum_builder! { - /// The `NamedCurve` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U16 - EnumName: NamedCurve; - EnumVal{ - sect163k1 => 0x0001, - sect163r1 => 0x0002, - sect163r2 => 0x0003, - sect193r1 => 0x0004, - sect193r2 => 0x0005, - sect233k1 => 0x0006, - sect233r1 => 0x0007, - sect239k1 => 0x0008, - sect283k1 => 0x0009, - sect283r1 => 0x000a, - sect409k1 => 0x000b, - sect409r1 => 0x000c, - sect571k1 => 0x000d, - sect571r1 => 0x000e, - secp160k1 => 0x000f, - secp160r1 => 0x0010, - secp160r2 => 0x0011, - secp192k1 => 0x0012, - secp192r1 => 0x0013, - secp224k1 => 0x0014, - secp224r1 => 0x0015, - secp256k1 => 0x0016, - secp256r1 => 0x0017, - secp384r1 => 0x0018, - secp521r1 => 0x0019, - brainpoolp256r1 => 0x001a, - brainpoolp384r1 => 0x001b, - brainpoolp512r1 => 0x001c, - X25519 => 0x001d, - X448 => 0x001e, - arbitrary_explicit_prime_curves => 0xff01, - arbitrary_explicit_char2_curves => 0xff02 - } -} - -enum_builder! { - /// The `NamedGroup` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U16 - EnumName: NamedGroup; - EnumVal{ - secp256r1 => 0x0017, - secp384r1 => 0x0018, - secp521r1 => 0x0019, - X25519 => 0x001d, - X448 => 0x001e, - FFDHE2048 => 0x0100, - FFDHE3072 => 0x0101, - FFDHE4096 => 0x0102, - FFDHE6144 => 0x0103, - FFDHE8192 => 0x0104 - } -} - -enum_builder! { - /// The `ECPointFormat` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U8 - EnumName: ECPointFormat; - EnumVal{ - Uncompressed => 0x00, - ANSIX962CompressedPrime => 0x01, - ANSIX962CompressedChar2 => 0x02 - } -} - -enum_builder! { - /// The `HeartbeatMode` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U8 - EnumName: HeartbeatMode; - EnumVal{ - PeerAllowedToSend => 0x01, - PeerNotAllowedToSend => 0x02 - } -} - -enum_builder! { - /// The `ECCurveType` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U8 - EnumName: ECCurveType; - EnumVal{ - ExplicitPrime => 0x01, - ExplicitChar2 => 0x02, - NamedCurve => 0x03 - } -} - -enum_builder! { - /// The `PSKKeyExchangeMode` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U8 - EnumName: PSKKeyExchangeMode; - EnumVal{ - PSK_KE => 0x00, - PSK_DHE_KE => 0x01 - } -} - -enum_builder! { - /// The `KeyUpdateRequest` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U8 - EnumName: KeyUpdateRequest; - EnumVal{ - UpdateNotRequested => 0x00, - UpdateRequested => 0x01 - } -} - -enum_builder! { - /// The `CertificateStatusType` TLS protocol enum. Values in this enum are taken - /// from the various RFCs covering TLS, and are listed by IANA. - /// The `Unknown` item is used when processing unrecognised ordinals. - @U8 - EnumName: CertificateStatusType; - EnumVal{ - OCSP => 0x01 - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/enums_test.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/enums_test.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/enums_test.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/enums_test.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ -/// These tests are intended to provide coverage and -/// check panic-safety of relatively unused values. -use super::codec::Codec; -use super::enums::*; - -fn get8(enum_value: &T) -> u8 { - let enc = enum_value.get_encoding(); - assert_eq!(enc.len(), 1); - enc[0] -} - -fn get16(enum_value: &T) -> u16 { - let enc = enum_value.get_encoding(); - assert_eq!(enc.len(), 2); - (enc[0] as u16 >> 8) | (enc[1] as u16) -} - -fn test_enum16(first: T, last: T) { - let first_v = get16(&first); - let last_v = get16(&last); - - for val in first_v..last_v + 1 { - let mut buf = Vec::new(); - val.encode(&mut buf); - assert_eq!(buf.len(), 2); - - let t = T::read_bytes(&buf).unwrap(); - assert_eq!(val, get16(&t)); - } -} - -fn test_enum8(first: T, last: T) { - let first_v = get8(&first); - let last_v = get8(&last); - - for val in first_v..last_v + 1 { - let mut buf = Vec::new(); - val.encode(&mut buf); - assert_eq!(buf.len(), 1); - - let t = T::read_bytes(&buf).unwrap(); - assert_eq!(val, get8(&t)); - } -} - -#[test] -fn test_enums() { - test_enum8::(HashAlgorithm::NONE, HashAlgorithm::SHA512); - test_enum8::(SignatureAlgorithm::Anonymous, SignatureAlgorithm::ECDSA); - test_enum8::( - ClientCertificateType::RSASign, - ClientCertificateType::ECDSAFixedECDH, - ); - test_enum8::(Compression::Null, Compression::LSZ); - test_enum8::(ContentType::ChangeCipherSpec, ContentType::Heartbeat); - test_enum8::(HandshakeType::HelloRequest, HandshakeType::MessageHash); - test_enum8::(AlertLevel::Warning, AlertLevel::Fatal); - test_enum8::( - AlertDescription::CloseNotify, - AlertDescription::NoApplicationProtocol, - ); - test_enum8::( - HeartbeatMessageType::Request, - HeartbeatMessageType::Response, - ); - test_enum16::(ExtensionType::ServerName, ExtensionType::RenegotiationInfo); - test_enum8::(ServerNameType::HostName, ServerNameType::HostName); - test_enum16::( - NamedCurve::sect163k1, - NamedCurve::arbitrary_explicit_char2_curves, - ); - test_enum16::(NamedGroup::secp256r1, NamedGroup::FFDHE8192); - test_enum8::( - ECPointFormat::Uncompressed, - ECPointFormat::ANSIX962CompressedChar2, - ); - test_enum8::( - HeartbeatMode::PeerAllowedToSend, - HeartbeatMode::PeerNotAllowedToSend, - ); - test_enum8::(ECCurveType::ExplicitPrime, ECCurveType::NamedCurve); - test_enum8::(PSKKeyExchangeMode::PSK_KE, PSKKeyExchangeMode::PSK_DHE_KE); - test_enum8::( - KeyUpdateRequest::UpdateNotRequested, - KeyUpdateRequest::UpdateRequested, - ); - test_enum8::(CertificateStatusType::OCSP, CertificateStatusType::OCSP); -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/fragmenter.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/fragmenter.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/fragmenter.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/fragmenter.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,162 +0,0 @@ -use crate::enums::ProtocolVersion; -use crate::msgs::enums::ContentType; -use crate::msgs::message::{BorrowedPlainMessage, PlainMessage}; -use crate::Error; -pub const MAX_FRAGMENT_LEN: usize = 16384; -pub const PACKET_OVERHEAD: usize = 1 + 2 + 2; -pub const MAX_FRAGMENT_SIZE: usize = MAX_FRAGMENT_LEN + PACKET_OVERHEAD; - -pub struct MessageFragmenter { - max_frag: usize, -} - -impl Default for MessageFragmenter { - fn default() -> Self { - Self { - max_frag: MAX_FRAGMENT_LEN, - } - } -} - -impl MessageFragmenter { - /// Take the Message `msg` and re-fragment it into new - /// messages whose fragment is no more than max_frag. - /// Return an iterator across those messages. - /// Payloads are borrowed. - pub fn fragment_message<'a>( - &self, - msg: &'a PlainMessage, - ) -> impl Iterator> + 'a { - self.fragment_slice(msg.typ, msg.version, &msg.payload.0) - } - - /// Enqueue borrowed fragments of (version, typ, payload) which - /// are no longer than max_frag onto the `out` deque. - pub fn fragment_slice<'a>( - &self, - typ: ContentType, - version: ProtocolVersion, - payload: &'a [u8], - ) -> impl Iterator> + 'a { - payload - .chunks(self.max_frag) - .map(move |c| BorrowedPlainMessage { - typ, - version, - payload: c, - }) - } - - /// Set the maximum fragment size that will be produced. - /// - /// This includes overhead. A `max_fragment_size` of 10 will produce TLS fragments - /// up to 10 bytes long. - /// - /// A `max_fragment_size` of `None` sets the highest allowable fragment size. - /// - /// Returns BadMaxFragmentSize if the size is smaller than 32 or larger than 16389. - pub fn set_max_fragment_size(&mut self, max_fragment_size: Option) -> Result<(), Error> { - self.max_frag = match max_fragment_size { - Some(sz @ 32..=MAX_FRAGMENT_SIZE) => sz - PACKET_OVERHEAD, - None => MAX_FRAGMENT_LEN, - _ => return Err(Error::BadMaxFragmentSize), - }; - Ok(()) - } -} - -#[cfg(test)] -mod tests { - use super::{MessageFragmenter, PACKET_OVERHEAD}; - use crate::enums::ProtocolVersion; - use crate::msgs::base::Payload; - use crate::msgs::enums::ContentType; - use crate::msgs::message::{BorrowedPlainMessage, PlainMessage}; - - fn msg_eq( - m: &BorrowedPlainMessage, - total_len: usize, - typ: &ContentType, - version: &ProtocolVersion, - bytes: &[u8], - ) { - assert_eq!(&m.typ, typ); - assert_eq!(&m.version, version); - assert_eq!(m.payload, bytes); - - let buf = m.to_unencrypted_opaque().encode(); - - assert_eq!(total_len, buf.len()); - } - - #[test] - fn smoke() { - let typ = ContentType::Handshake; - let version = ProtocolVersion::TLSv1_2; - let data: Vec = (1..70u8).collect(); - let m = PlainMessage { - typ, - version, - payload: Payload::new(data), - }; - - let mut frag = MessageFragmenter::default(); - frag.set_max_fragment_size(Some(32)) - .unwrap(); - let q = frag - .fragment_message(&m) - .collect::>(); - assert_eq!(q.len(), 3); - msg_eq( - &q[0], - 32, - &typ, - &version, - &[ - 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, - ], - ); - msg_eq( - &q[1], - 32, - &typ, - &version, - &[ - 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, - ], - ); - msg_eq( - &q[2], - 20, - &typ, - &version, - &[55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69], - ); - } - - #[test] - fn non_fragment() { - let m = PlainMessage { - typ: ContentType::Handshake, - version: ProtocolVersion::TLSv1_2, - payload: Payload::new(b"\x01\x02\x03\x04\x05\x06\x07\x08".to_vec()), - }; - - let mut frag = MessageFragmenter::default(); - frag.set_max_fragment_size(Some(32)) - .unwrap(); - let q = frag - .fragment_message(&m) - .collect::>(); - assert_eq!(q.len(), 1); - msg_eq( - &q[0], - PACKET_OVERHEAD + 8, - &ContentType::Handshake, - &ProtocolVersion::TLSv1_2, - b"\x01\x02\x03\x04\x05\x06\x07\x08", - ); - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/handshake.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/handshake.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/handshake.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/handshake.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,2371 +0,0 @@ -#![allow(non_camel_case_types)] -use crate::enums::{CipherSuite, ProtocolVersion, SignatureScheme}; -use crate::key; -use crate::msgs::base::{Payload, PayloadU16, PayloadU24, PayloadU8}; -use crate::msgs::codec; -use crate::msgs::codec::{Codec, Reader}; -use crate::msgs::enums::{ - CertificateStatusType, ClientCertificateType, Compression, ECCurveType, ECPointFormat, - ExtensionType, HandshakeType, HashAlgorithm, KeyUpdateRequest, NamedGroup, PSKKeyExchangeMode, - ServerNameType, SignatureAlgorithm, -}; -use crate::rand; - -#[cfg(feature = "logging")] -use crate::log::warn; - -use std::collections; -use std::fmt; - -macro_rules! declare_u8_vec( - ($name:ident, $itemtype:ty) => { - pub type $name = Vec<$itemtype>; - - impl Codec for $name { - fn encode(&self, bytes: &mut Vec) { - codec::encode_vec_u8(bytes, self); - } - - fn read(r: &mut Reader) -> Option { - codec::read_vec_u8::<$itemtype>(r) - } - } - } -); - -macro_rules! declare_u16_vec( - ($name:ident, $itemtype:ty) => { - pub type $name = Vec<$itemtype>; - - impl Codec for $name { - fn encode(&self, bytes: &mut Vec) { - codec::encode_vec_u16(bytes, self); - } - - fn read(r: &mut Reader) -> Option { - codec::read_vec_u16::<$itemtype>(r) - } - } - } -); - -declare_u16_vec!(VecU16OfPayloadU8, PayloadU8); -declare_u16_vec!(VecU16OfPayloadU16, PayloadU16); - -#[derive(Clone, Copy, Eq, PartialEq)] -pub struct Random(pub [u8; 32]); - -impl fmt::Debug for Random { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - super::base::hex(f, &self.0) - } -} - -static HELLO_RETRY_REQUEST_RANDOM: Random = Random([ - 0xcf, 0x21, 0xad, 0x74, 0xe5, 0x9a, 0x61, 0x11, 0xbe, 0x1d, 0x8c, 0x02, 0x1e, 0x65, 0xb8, 0x91, - 0xc2, 0xa2, 0x11, 0x16, 0x7a, 0xbb, 0x8c, 0x5e, 0x07, 0x9e, 0x09, 0xe2, 0xc8, 0xa8, 0x33, 0x9c, -]); - -static ZERO_RANDOM: Random = Random([0u8; 32]); - -impl Codec for Random { - fn encode(&self, bytes: &mut Vec) { - bytes.extend_from_slice(&self.0); - } - - fn read(r: &mut Reader) -> Option { - let bytes = r.take(32)?; - let mut opaque = [0; 32]; - opaque.clone_from_slice(bytes); - - Some(Self(opaque)) - } -} - -impl Random { - pub fn new() -> Result { - let mut data = [0u8; 32]; - rand::fill_random(&mut data)?; - Ok(Self(data)) - } - - pub fn write_slice(&self, bytes: &mut [u8]) { - let buf = self.get_encoding(); - bytes.copy_from_slice(&buf); - } -} - -impl From<[u8; 32]> for Random { - #[inline] - fn from(bytes: [u8; 32]) -> Self { - Self(bytes) - } -} - -#[derive(Copy, Clone)] -pub struct SessionID { - len: usize, - data: [u8; 32], -} - -impl fmt::Debug for SessionID { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - super::base::hex(f, &self.data[..self.len]) - } -} - -impl PartialEq for SessionID { - fn eq(&self, other: &Self) -> bool { - if self.len != other.len { - return false; - } - - let mut diff = 0u8; - for i in 0..self.len { - diff |= self.data[i] ^ other.data[i] - } - - diff == 0u8 - } -} - -impl Codec for SessionID { - fn encode(&self, bytes: &mut Vec) { - debug_assert!(self.len <= 32); - bytes.push(self.len as u8); - bytes.extend_from_slice(&self.data[..self.len]); - } - - fn read(r: &mut Reader) -> Option { - let len = u8::read(r)? as usize; - if len > 32 { - return None; - } - - let bytes = r.take(len)?; - let mut out = [0u8; 32]; - out[..len].clone_from_slice(&bytes[..len]); - - Some(Self { data: out, len }) - } -} - -impl SessionID { - pub fn random() -> Result { - let mut data = [0u8; 32]; - rand::fill_random(&mut data)?; - Ok(Self { data, len: 32 }) - } - - pub fn empty() -> Self { - Self { - data: [0u8; 32], - len: 0, - } - } - - pub fn len(&self) -> usize { - self.len - } - - pub fn is_empty(&self) -> bool { - self.len == 0 - } -} - -#[derive(Clone, Debug)] -pub struct UnknownExtension { - pub typ: ExtensionType, - pub payload: Payload, -} - -impl UnknownExtension { - fn encode(&self, bytes: &mut Vec) { - self.payload.encode(bytes); - } - - fn read(typ: ExtensionType, r: &mut Reader) -> Self { - let payload = Payload::read(r); - Self { typ, payload } - } -} - -declare_u8_vec!(ECPointFormatList, ECPointFormat); - -pub trait SupportedPointFormats { - fn supported() -> ECPointFormatList; -} - -impl SupportedPointFormats for ECPointFormatList { - fn supported() -> ECPointFormatList { - vec![ECPointFormat::Uncompressed] - } -} - -declare_u16_vec!(NamedGroups, NamedGroup); - -declare_u16_vec!(SupportedSignatureSchemes, SignatureScheme); - -pub trait DecomposedSignatureScheme { - fn sign(&self) -> SignatureAlgorithm; - fn make(alg: SignatureAlgorithm, hash: HashAlgorithm) -> SignatureScheme; -} - -impl DecomposedSignatureScheme for SignatureScheme { - fn sign(&self) -> SignatureAlgorithm { - match *self { - Self::RSA_PKCS1_SHA1 - | Self::RSA_PKCS1_SHA256 - | Self::RSA_PKCS1_SHA384 - | Self::RSA_PKCS1_SHA512 - | Self::RSA_PSS_SHA256 - | Self::RSA_PSS_SHA384 - | Self::RSA_PSS_SHA512 => SignatureAlgorithm::RSA, - Self::ECDSA_NISTP256_SHA256 - | Self::ECDSA_NISTP384_SHA384 - | Self::ECDSA_NISTP521_SHA512 => SignatureAlgorithm::ECDSA, - _ => SignatureAlgorithm::Unknown(0), - } - } - - fn make(alg: SignatureAlgorithm, hash: HashAlgorithm) -> SignatureScheme { - use crate::msgs::enums::HashAlgorithm::{SHA1, SHA256, SHA384, SHA512}; - use crate::msgs::enums::SignatureAlgorithm::{ECDSA, RSA}; - - match (alg, hash) { - (RSA, SHA1) => Self::RSA_PKCS1_SHA1, - (RSA, SHA256) => Self::RSA_PKCS1_SHA256, - (RSA, SHA384) => Self::RSA_PKCS1_SHA384, - (RSA, SHA512) => Self::RSA_PKCS1_SHA512, - (ECDSA, SHA256) => Self::ECDSA_NISTP256_SHA256, - (ECDSA, SHA384) => Self::ECDSA_NISTP384_SHA384, - (ECDSA, SHA512) => Self::ECDSA_NISTP521_SHA512, - (_, _) => unreachable!(), - } - } -} - -#[derive(Clone, Debug)] -pub enum ServerNamePayload { - // Stored twice, bytes so we can round-trip, and DnsName for use - HostName((PayloadU16, webpki::DnsName)), - Unknown(Payload), -} - -impl ServerNamePayload { - pub fn new_hostname(hostname: webpki::DnsName) -> Self { - let raw = { - let s: &str = hostname.as_ref().into(); - PayloadU16::new(s.as_bytes().into()) - }; - Self::HostName((raw, hostname)) - } - - fn read_hostname(r: &mut Reader) -> Option { - let raw = PayloadU16::read(r)?; - - let dns_name = { - match webpki::DnsNameRef::try_from_ascii(&raw.0) { - Ok(dns_name) => dns_name.into(), - Err(_) => { - warn!("Illegal SNI hostname received {:?}", raw.0); - return None; - } - } - }; - Some(Self::HostName((raw, dns_name))) - } - - fn encode(&self, bytes: &mut Vec) { - match *self { - Self::HostName((ref r, _)) => r.encode(bytes), - Self::Unknown(ref r) => r.encode(bytes), - } - } -} - -#[derive(Clone, Debug)] -pub struct ServerName { - pub typ: ServerNameType, - pub payload: ServerNamePayload, -} - -impl Codec for ServerName { - fn encode(&self, bytes: &mut Vec) { - self.typ.encode(bytes); - self.payload.encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - let typ = ServerNameType::read(r)?; - - let payload = match typ { - ServerNameType::HostName => ServerNamePayload::read_hostname(r)?, - _ => ServerNamePayload::Unknown(Payload::read(r)), - }; - - Some(Self { typ, payload }) - } -} - -declare_u16_vec!(ServerNameRequest, ServerName); - -pub trait ConvertServerNameList { - fn has_duplicate_names_for_type(&self) -> bool; - fn get_single_hostname(&self) -> Option; -} - -impl ConvertServerNameList for ServerNameRequest { - /// RFC6066: "The ServerNameList MUST NOT contain more than one name of the same name_type." - fn has_duplicate_names_for_type(&self) -> bool { - let mut seen = collections::HashSet::new(); - - for name in self { - if !seen.insert(name.typ.get_u8()) { - return true; - } - } - - false - } - - fn get_single_hostname(&self) -> Option { - fn only_dns_hostnames(name: &ServerName) -> Option { - if let ServerNamePayload::HostName((_, ref dns)) = name.payload { - Some(dns.as_ref()) - } else { - None - } - } - - self.iter() - .filter_map(only_dns_hostnames) - .next() - } -} - -pub type ProtocolNameList = VecU16OfPayloadU8; - -pub trait ConvertProtocolNameList { - fn from_slices(names: &[&[u8]]) -> Self; - fn to_slices(&self) -> Vec<&[u8]>; - fn as_single_slice(&self) -> Option<&[u8]>; -} - -impl ConvertProtocolNameList for ProtocolNameList { - fn from_slices(names: &[&[u8]]) -> Self { - let mut ret = Self::new(); - - for name in names { - ret.push(PayloadU8::new(name.to_vec())); - } - - ret - } - - fn to_slices(&self) -> Vec<&[u8]> { - self.iter() - .map(|proto| -> &[u8] { &proto.0 }) - .collect::>() - } - - fn as_single_slice(&self) -> Option<&[u8]> { - if self.len() == 1 { - Some(&self[0].0) - } else { - None - } - } -} - -// --- TLS 1.3 Key shares --- -#[derive(Clone, Debug)] -pub struct KeyShareEntry { - pub group: NamedGroup, - pub payload: PayloadU16, -} - -impl KeyShareEntry { - pub fn new(group: NamedGroup, payload: &[u8]) -> Self { - Self { - group, - payload: PayloadU16::new(payload.to_vec()), - } - } -} - -impl Codec for KeyShareEntry { - fn encode(&self, bytes: &mut Vec) { - self.group.encode(bytes); - self.payload.encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - let group = NamedGroup::read(r)?; - let payload = PayloadU16::read(r)?; - - Some(Self { group, payload }) - } -} - -// --- TLS 1.3 PresharedKey offers --- -#[derive(Clone, Debug)] -pub struct PresharedKeyIdentity { - pub identity: PayloadU16, - pub obfuscated_ticket_age: u32, -} - -impl PresharedKeyIdentity { - pub fn new(id: Vec, age: u32) -> Self { - Self { - identity: PayloadU16::new(id), - obfuscated_ticket_age: age, - } - } -} - -impl Codec for PresharedKeyIdentity { - fn encode(&self, bytes: &mut Vec) { - self.identity.encode(bytes); - self.obfuscated_ticket_age.encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - Some(Self { - identity: PayloadU16::read(r)?, - obfuscated_ticket_age: u32::read(r)?, - }) - } -} - -declare_u16_vec!(PresharedKeyIdentities, PresharedKeyIdentity); -pub type PresharedKeyBinder = PayloadU8; -pub type PresharedKeyBinders = VecU16OfPayloadU8; - -#[derive(Clone, Debug)] -pub struct PresharedKeyOffer { - pub identities: PresharedKeyIdentities, - pub binders: PresharedKeyBinders, -} - -impl PresharedKeyOffer { - /// Make a new one with one entry. - pub fn new(id: PresharedKeyIdentity, binder: Vec) -> Self { - Self { - identities: vec![id], - binders: vec![PresharedKeyBinder::new(binder)], - } - } -} - -impl Codec for PresharedKeyOffer { - fn encode(&self, bytes: &mut Vec) { - self.identities.encode(bytes); - self.binders.encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - Some(Self { - identities: PresharedKeyIdentities::read(r)?, - binders: PresharedKeyBinders::read(r)?, - }) - } -} - -// --- RFC6066 certificate status request --- -type ResponderIDs = VecU16OfPayloadU16; - -#[derive(Clone, Debug)] -pub struct OCSPCertificateStatusRequest { - pub responder_ids: ResponderIDs, - pub extensions: PayloadU16, -} - -impl Codec for OCSPCertificateStatusRequest { - fn encode(&self, bytes: &mut Vec) { - CertificateStatusType::OCSP.encode(bytes); - self.responder_ids.encode(bytes); - self.extensions.encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - Some(Self { - responder_ids: ResponderIDs::read(r)?, - extensions: PayloadU16::read(r)?, - }) - } -} - -#[derive(Clone, Debug)] -pub enum CertificateStatusRequest { - OCSP(OCSPCertificateStatusRequest), - Unknown((CertificateStatusType, Payload)), -} - -impl Codec for CertificateStatusRequest { - fn encode(&self, bytes: &mut Vec) { - match self { - Self::OCSP(ref r) => r.encode(bytes), - Self::Unknown((typ, payload)) => { - typ.encode(bytes); - payload.encode(bytes); - } - } - } - - fn read(r: &mut Reader) -> Option { - let typ = CertificateStatusType::read(r)?; - - match typ { - CertificateStatusType::OCSP => { - let ocsp_req = OCSPCertificateStatusRequest::read(r)?; - Some(Self::OCSP(ocsp_req)) - } - _ => { - let data = Payload::read(r); - Some(Self::Unknown((typ, data))) - } - } - } -} - -impl CertificateStatusRequest { - pub fn build_ocsp() -> Self { - let ocsp = OCSPCertificateStatusRequest { - responder_ids: ResponderIDs::new(), - extensions: PayloadU16::empty(), - }; - Self::OCSP(ocsp) - } -} - -// --- -// SCTs - -pub type SCTList = VecU16OfPayloadU16; - -// --- - -declare_u8_vec!(PSKKeyExchangeModes, PSKKeyExchangeMode); -declare_u16_vec!(KeyShareEntries, KeyShareEntry); -declare_u8_vec!(ProtocolVersions, ProtocolVersion); - -#[derive(Clone, Debug)] -pub enum ClientExtension { - ECPointFormats(ECPointFormatList), - NamedGroups(NamedGroups), - SignatureAlgorithms(SupportedSignatureSchemes), - ServerName(ServerNameRequest), - SessionTicket(ClientSessionTicket), - Protocols(ProtocolNameList), - SupportedVersions(ProtocolVersions), - KeyShare(KeyShareEntries), - PresharedKeyModes(PSKKeyExchangeModes), - PresharedKey(PresharedKeyOffer), - Cookie(PayloadU16), - ExtendedMasterSecretRequest, - CertificateStatusRequest(CertificateStatusRequest), - SignedCertificateTimestampRequest, - TransportParameters(Vec), - TransportParametersDraft(Vec), - EarlyData, - Unknown(UnknownExtension), -} - -impl ClientExtension { - pub fn get_type(&self) -> ExtensionType { - match *self { - Self::ECPointFormats(_) => ExtensionType::ECPointFormats, - Self::NamedGroups(_) => ExtensionType::EllipticCurves, - Self::SignatureAlgorithms(_) => ExtensionType::SignatureAlgorithms, - Self::ServerName(_) => ExtensionType::ServerName, - Self::SessionTicket(_) => ExtensionType::SessionTicket, - Self::Protocols(_) => ExtensionType::ALProtocolNegotiation, - Self::SupportedVersions(_) => ExtensionType::SupportedVersions, - Self::KeyShare(_) => ExtensionType::KeyShare, - Self::PresharedKeyModes(_) => ExtensionType::PSKKeyExchangeModes, - Self::PresharedKey(_) => ExtensionType::PreSharedKey, - Self::Cookie(_) => ExtensionType::Cookie, - Self::ExtendedMasterSecretRequest => ExtensionType::ExtendedMasterSecret, - Self::CertificateStatusRequest(_) => ExtensionType::StatusRequest, - Self::SignedCertificateTimestampRequest => ExtensionType::SCT, - Self::TransportParameters(_) => ExtensionType::TransportParameters, - Self::TransportParametersDraft(_) => ExtensionType::TransportParametersDraft, - Self::EarlyData => ExtensionType::EarlyData, - Self::Unknown(ref r) => r.typ, - } - } -} - -impl Codec for ClientExtension { - fn encode(&self, bytes: &mut Vec) { - self.get_type().encode(bytes); - - let mut sub: Vec = Vec::new(); - match *self { - Self::ECPointFormats(ref r) => r.encode(&mut sub), - Self::NamedGroups(ref r) => r.encode(&mut sub), - Self::SignatureAlgorithms(ref r) => r.encode(&mut sub), - Self::ServerName(ref r) => r.encode(&mut sub), - Self::SessionTicket(ClientSessionTicket::Request) - | Self::ExtendedMasterSecretRequest - | Self::SignedCertificateTimestampRequest - | Self::EarlyData => {} - Self::SessionTicket(ClientSessionTicket::Offer(ref r)) => r.encode(&mut sub), - Self::Protocols(ref r) => r.encode(&mut sub), - Self::SupportedVersions(ref r) => r.encode(&mut sub), - Self::KeyShare(ref r) => r.encode(&mut sub), - Self::PresharedKeyModes(ref r) => r.encode(&mut sub), - Self::PresharedKey(ref r) => r.encode(&mut sub), - Self::Cookie(ref r) => r.encode(&mut sub), - Self::CertificateStatusRequest(ref r) => r.encode(&mut sub), - Self::TransportParameters(ref r) | Self::TransportParametersDraft(ref r) => { - sub.extend_from_slice(r) - } - Self::Unknown(ref r) => r.encode(&mut sub), - } - - (sub.len() as u16).encode(bytes); - bytes.append(&mut sub); - } - - fn read(r: &mut Reader) -> Option { - let typ = ExtensionType::read(r)?; - let len = u16::read(r)? as usize; - let mut sub = r.sub(len)?; - - let ext = match typ { - ExtensionType::ECPointFormats => { - Self::ECPointFormats(ECPointFormatList::read(&mut sub)?) - } - ExtensionType::EllipticCurves => Self::NamedGroups(NamedGroups::read(&mut sub)?), - ExtensionType::SignatureAlgorithms => { - let schemes = SupportedSignatureSchemes::read(&mut sub)?; - Self::SignatureAlgorithms(schemes) - } - ExtensionType::ServerName => Self::ServerName(ServerNameRequest::read(&mut sub)?), - ExtensionType::SessionTicket => { - if sub.any_left() { - let contents = Payload::read(&mut sub); - Self::SessionTicket(ClientSessionTicket::Offer(contents)) - } else { - Self::SessionTicket(ClientSessionTicket::Request) - } - } - ExtensionType::ALProtocolNegotiation => { - Self::Protocols(ProtocolNameList::read(&mut sub)?) - } - ExtensionType::SupportedVersions => { - Self::SupportedVersions(ProtocolVersions::read(&mut sub)?) - } - ExtensionType::KeyShare => Self::KeyShare(KeyShareEntries::read(&mut sub)?), - ExtensionType::PSKKeyExchangeModes => { - Self::PresharedKeyModes(PSKKeyExchangeModes::read(&mut sub)?) - } - ExtensionType::PreSharedKey => Self::PresharedKey(PresharedKeyOffer::read(&mut sub)?), - ExtensionType::Cookie => Self::Cookie(PayloadU16::read(&mut sub)?), - ExtensionType::ExtendedMasterSecret if !sub.any_left() => { - Self::ExtendedMasterSecretRequest - } - ExtensionType::StatusRequest => { - let csr = CertificateStatusRequest::read(&mut sub)?; - Self::CertificateStatusRequest(csr) - } - ExtensionType::SCT if !sub.any_left() => Self::SignedCertificateTimestampRequest, - ExtensionType::TransportParameters => Self::TransportParameters(sub.rest().to_vec()), - ExtensionType::TransportParametersDraft => { - Self::TransportParametersDraft(sub.rest().to_vec()) - } - ExtensionType::EarlyData if !sub.any_left() => Self::EarlyData, - _ => Self::Unknown(UnknownExtension::read(typ, &mut sub)), - }; - - if sub.any_left() { - None - } else { - Some(ext) - } - } -} - -fn trim_hostname_trailing_dot_for_sni(dns_name: webpki::DnsNameRef) -> webpki::DnsName { - let dns_name_str: &str = dns_name.into(); - - // RFC6066: "The hostname is represented as a byte string using - // ASCII encoding without a trailing dot" - if dns_name_str.ends_with('.') { - let trimmed = &dns_name_str[0..dns_name_str.len() - 1]; - webpki::DnsNameRef::try_from_ascii_str(trimmed) - .unwrap() - .to_owned() - } else { - dns_name.to_owned() - } -} - -impl ClientExtension { - /// Make a basic SNI ServerNameRequest quoting `hostname`. - pub fn make_sni(dns_name: webpki::DnsNameRef) -> Self { - let name = ServerName { - typ: ServerNameType::HostName, - payload: ServerNamePayload::new_hostname(trim_hostname_trailing_dot_for_sni(dns_name)), - }; - - Self::ServerName(vec![name]) - } -} - -#[derive(Clone, Debug)] -pub enum ClientSessionTicket { - Request, - Offer(Payload), -} - -#[derive(Clone, Debug)] -pub enum ServerExtension { - ECPointFormats(ECPointFormatList), - ServerNameAck, - SessionTicketAck, - RenegotiationInfo(PayloadU8), - Protocols(ProtocolNameList), - KeyShare(KeyShareEntry), - PresharedKey(u16), - ExtendedMasterSecretAck, - CertificateStatusAck, - SignedCertificateTimestamp(SCTList), - SupportedVersions(ProtocolVersion), - TransportParameters(Vec), - TransportParametersDraft(Vec), - EarlyData, - Unknown(UnknownExtension), -} - -impl ServerExtension { - pub fn get_type(&self) -> ExtensionType { - match *self { - Self::ECPointFormats(_) => ExtensionType::ECPointFormats, - Self::ServerNameAck => ExtensionType::ServerName, - Self::SessionTicketAck => ExtensionType::SessionTicket, - Self::RenegotiationInfo(_) => ExtensionType::RenegotiationInfo, - Self::Protocols(_) => ExtensionType::ALProtocolNegotiation, - Self::KeyShare(_) => ExtensionType::KeyShare, - Self::PresharedKey(_) => ExtensionType::PreSharedKey, - Self::ExtendedMasterSecretAck => ExtensionType::ExtendedMasterSecret, - Self::CertificateStatusAck => ExtensionType::StatusRequest, - Self::SignedCertificateTimestamp(_) => ExtensionType::SCT, - Self::SupportedVersions(_) => ExtensionType::SupportedVersions, - Self::TransportParameters(_) => ExtensionType::TransportParameters, - Self::TransportParametersDraft(_) => ExtensionType::TransportParametersDraft, - Self::EarlyData => ExtensionType::EarlyData, - Self::Unknown(ref r) => r.typ, - } - } -} - -impl Codec for ServerExtension { - fn encode(&self, bytes: &mut Vec) { - self.get_type().encode(bytes); - - let mut sub: Vec = Vec::new(); - match *self { - Self::ECPointFormats(ref r) => r.encode(&mut sub), - Self::ServerNameAck - | Self::SessionTicketAck - | Self::ExtendedMasterSecretAck - | Self::CertificateStatusAck - | Self::EarlyData => {} - Self::RenegotiationInfo(ref r) => r.encode(&mut sub), - Self::Protocols(ref r) => r.encode(&mut sub), - Self::KeyShare(ref r) => r.encode(&mut sub), - Self::PresharedKey(r) => r.encode(&mut sub), - Self::SignedCertificateTimestamp(ref r) => r.encode(&mut sub), - Self::SupportedVersions(ref r) => r.encode(&mut sub), - Self::TransportParameters(ref r) | Self::TransportParametersDraft(ref r) => { - sub.extend_from_slice(r) - } - Self::Unknown(ref r) => r.encode(&mut sub), - } - - (sub.len() as u16).encode(bytes); - bytes.append(&mut sub); - } - - fn read(r: &mut Reader) -> Option { - let typ = ExtensionType::read(r)?; - let len = u16::read(r)? as usize; - let mut sub = r.sub(len)?; - - let ext = match typ { - ExtensionType::ECPointFormats => { - Self::ECPointFormats(ECPointFormatList::read(&mut sub)?) - } - ExtensionType::ServerName => Self::ServerNameAck, - ExtensionType::SessionTicket => Self::SessionTicketAck, - ExtensionType::StatusRequest => Self::CertificateStatusAck, - ExtensionType::RenegotiationInfo => Self::RenegotiationInfo(PayloadU8::read(&mut sub)?), - ExtensionType::ALProtocolNegotiation => { - Self::Protocols(ProtocolNameList::read(&mut sub)?) - } - ExtensionType::KeyShare => Self::KeyShare(KeyShareEntry::read(&mut sub)?), - ExtensionType::PreSharedKey => Self::PresharedKey(u16::read(&mut sub)?), - ExtensionType::ExtendedMasterSecret => Self::ExtendedMasterSecretAck, - ExtensionType::SCT => { - let scts = SCTList::read(&mut sub)?; - Self::SignedCertificateTimestamp(scts) - } - ExtensionType::SupportedVersions => { - Self::SupportedVersions(ProtocolVersion::read(&mut sub)?) - } - ExtensionType::TransportParameters => Self::TransportParameters(sub.rest().to_vec()), - ExtensionType::TransportParametersDraft => { - Self::TransportParametersDraft(sub.rest().to_vec()) - } - ExtensionType::EarlyData => Self::EarlyData, - _ => Self::Unknown(UnknownExtension::read(typ, &mut sub)), - }; - - if sub.any_left() { - None - } else { - Some(ext) - } - } -} - -impl ServerExtension { - pub fn make_alpn(proto: &[&[u8]]) -> Self { - Self::Protocols(ProtocolNameList::from_slices(proto)) - } - - pub fn make_empty_renegotiation_info() -> Self { - let empty = Vec::new(); - Self::RenegotiationInfo(PayloadU8::new(empty)) - } - - pub fn make_sct(sctl: Vec) -> Self { - let scts = SCTList::read_bytes(&sctl).expect("invalid SCT list"); - Self::SignedCertificateTimestamp(scts) - } -} - -#[derive(Debug)] -pub struct ClientHelloPayload { - pub client_version: ProtocolVersion, - pub random: Random, - pub session_id: SessionID, - pub cipher_suites: Vec, - pub compression_methods: Vec, - pub extensions: Vec, -} - -impl Codec for ClientHelloPayload { - fn encode(&self, bytes: &mut Vec) { - self.client_version.encode(bytes); - self.random.encode(bytes); - self.session_id.encode(bytes); - codec::encode_vec_u16(bytes, &self.cipher_suites); - codec::encode_vec_u8(bytes, &self.compression_methods); - - if !self.extensions.is_empty() { - codec::encode_vec_u16(bytes, &self.extensions); - } - } - - fn read(r: &mut Reader) -> Option { - let mut ret = Self { - client_version: ProtocolVersion::read(r)?, - random: Random::read(r)?, - session_id: SessionID::read(r)?, - cipher_suites: codec::read_vec_u16::(r)?, - compression_methods: codec::read_vec_u8::(r)?, - extensions: Vec::new(), - }; - - if r.any_left() { - ret.extensions = codec::read_vec_u16::(r)?; - } - - if r.any_left() || ret.extensions.is_empty() { - None - } else { - Some(ret) - } - } -} - -impl ClientHelloPayload { - /// Returns true if there is more than one extension of a given - /// type. - pub fn has_duplicate_extension(&self) -> bool { - let mut seen = collections::HashSet::new(); - - for ext in &self.extensions { - let typ = ext.get_type().get_u16(); - - if seen.contains(&typ) { - return true; - } - seen.insert(typ); - } - - false - } - - pub fn find_extension(&self, ext: ExtensionType) -> Option<&ClientExtension> { - self.extensions - .iter() - .find(|x| x.get_type() == ext) - } - - pub fn get_sni_extension(&self) -> Option<&ServerNameRequest> { - let ext = self.find_extension(ExtensionType::ServerName)?; - match *ext { - ClientExtension::ServerName(ref req) => Some(req), - _ => None, - } - } - - pub fn get_sigalgs_extension(&self) -> Option<&SupportedSignatureSchemes> { - let ext = self.find_extension(ExtensionType::SignatureAlgorithms)?; - match *ext { - ClientExtension::SignatureAlgorithms(ref req) => Some(req), - _ => None, - } - } - - pub fn get_namedgroups_extension(&self) -> Option<&NamedGroups> { - let ext = self.find_extension(ExtensionType::EllipticCurves)?; - match *ext { - ClientExtension::NamedGroups(ref req) => Some(req), - _ => None, - } - } - - pub fn get_ecpoints_extension(&self) -> Option<&ECPointFormatList> { - let ext = self.find_extension(ExtensionType::ECPointFormats)?; - match *ext { - ClientExtension::ECPointFormats(ref req) => Some(req), - _ => None, - } - } - - pub fn get_alpn_extension(&self) -> Option<&ProtocolNameList> { - let ext = self.find_extension(ExtensionType::ALProtocolNegotiation)?; - match *ext { - ClientExtension::Protocols(ref req) => Some(req), - _ => None, - } - } - - pub fn get_quic_params_extension(&self) -> Option> { - let ext = self - .find_extension(ExtensionType::TransportParameters) - .or_else(|| self.find_extension(ExtensionType::TransportParametersDraft))?; - match *ext { - ClientExtension::TransportParameters(ref bytes) - | ClientExtension::TransportParametersDraft(ref bytes) => Some(bytes.to_vec()), - _ => None, - } - } - - pub fn get_ticket_extension(&self) -> Option<&ClientExtension> { - self.find_extension(ExtensionType::SessionTicket) - } - - pub fn get_versions_extension(&self) -> Option<&ProtocolVersions> { - let ext = self.find_extension(ExtensionType::SupportedVersions)?; - match *ext { - ClientExtension::SupportedVersions(ref vers) => Some(vers), - _ => None, - } - } - - pub fn get_keyshare_extension(&self) -> Option<&KeyShareEntries> { - let ext = self.find_extension(ExtensionType::KeyShare)?; - match *ext { - ClientExtension::KeyShare(ref shares) => Some(shares), - _ => None, - } - } - - pub fn has_keyshare_extension_with_duplicates(&self) -> bool { - if let Some(entries) = self.get_keyshare_extension() { - let mut seen = collections::HashSet::new(); - - for kse in entries { - let grp = kse.group.get_u16(); - - if !seen.insert(grp) { - return true; - } - } - } - - false - } - - pub fn get_psk(&self) -> Option<&PresharedKeyOffer> { - let ext = self.find_extension(ExtensionType::PreSharedKey)?; - match *ext { - ClientExtension::PresharedKey(ref psk) => Some(psk), - _ => None, - } - } - - pub fn check_psk_ext_is_last(&self) -> bool { - self.extensions - .last() - .map_or(false, |ext| ext.get_type() == ExtensionType::PreSharedKey) - } - - pub fn get_psk_modes(&self) -> Option<&PSKKeyExchangeModes> { - let ext = self.find_extension(ExtensionType::PSKKeyExchangeModes)?; - match *ext { - ClientExtension::PresharedKeyModes(ref psk_modes) => Some(psk_modes), - _ => None, - } - } - - pub fn psk_mode_offered(&self, mode: PSKKeyExchangeMode) -> bool { - self.get_psk_modes() - .map(|modes| modes.contains(&mode)) - .unwrap_or(false) - } - - pub fn set_psk_binder(&mut self, binder: impl Into>) { - let last_extension = self.extensions.last_mut(); - if let Some(ClientExtension::PresharedKey(ref mut offer)) = last_extension { - offer.binders[0] = PresharedKeyBinder::new(binder.into()); - } - } - - pub fn ems_support_offered(&self) -> bool { - self.find_extension(ExtensionType::ExtendedMasterSecret) - .is_some() - } - - pub fn early_data_extension_offered(&self) -> bool { - self.find_extension(ExtensionType::EarlyData) - .is_some() - } -} - -#[derive(Debug)] -pub enum HelloRetryExtension { - KeyShare(NamedGroup), - Cookie(PayloadU16), - SupportedVersions(ProtocolVersion), - Unknown(UnknownExtension), -} - -impl HelloRetryExtension { - pub fn get_type(&self) -> ExtensionType { - match *self { - Self::KeyShare(_) => ExtensionType::KeyShare, - Self::Cookie(_) => ExtensionType::Cookie, - Self::SupportedVersions(_) => ExtensionType::SupportedVersions, - Self::Unknown(ref r) => r.typ, - } - } -} - -impl Codec for HelloRetryExtension { - fn encode(&self, bytes: &mut Vec) { - self.get_type().encode(bytes); - - let mut sub: Vec = Vec::new(); - match *self { - Self::KeyShare(ref r) => r.encode(&mut sub), - Self::Cookie(ref r) => r.encode(&mut sub), - Self::SupportedVersions(ref r) => r.encode(&mut sub), - Self::Unknown(ref r) => r.encode(&mut sub), - } - - (sub.len() as u16).encode(bytes); - bytes.append(&mut sub); - } - - fn read(r: &mut Reader) -> Option { - let typ = ExtensionType::read(r)?; - let len = u16::read(r)? as usize; - let mut sub = r.sub(len)?; - - let ext = match typ { - ExtensionType::KeyShare => Self::KeyShare(NamedGroup::read(&mut sub)?), - ExtensionType::Cookie => Self::Cookie(PayloadU16::read(&mut sub)?), - ExtensionType::SupportedVersions => { - Self::SupportedVersions(ProtocolVersion::read(&mut sub)?) - } - _ => Self::Unknown(UnknownExtension::read(typ, &mut sub)), - }; - - if sub.any_left() { - None - } else { - Some(ext) - } - } -} - -#[derive(Debug)] -pub struct HelloRetryRequest { - pub legacy_version: ProtocolVersion, - pub session_id: SessionID, - pub cipher_suite: CipherSuite, - pub extensions: Vec, -} - -impl Codec for HelloRetryRequest { - fn encode(&self, bytes: &mut Vec) { - self.legacy_version.encode(bytes); - HELLO_RETRY_REQUEST_RANDOM.encode(bytes); - self.session_id.encode(bytes); - self.cipher_suite.encode(bytes); - Compression::Null.encode(bytes); - codec::encode_vec_u16(bytes, &self.extensions); - } - - fn read(r: &mut Reader) -> Option { - let session_id = SessionID::read(r)?; - let cipher_suite = CipherSuite::read(r)?; - let compression = Compression::read(r)?; - - if compression != Compression::Null { - return None; - } - - Some(Self { - legacy_version: ProtocolVersion::Unknown(0), - session_id, - cipher_suite, - extensions: codec::read_vec_u16::(r)?, - }) - } -} - -impl HelloRetryRequest { - /// Returns true if there is more than one extension of a given - /// type. - pub fn has_duplicate_extension(&self) -> bool { - let mut seen = collections::HashSet::new(); - - for ext in &self.extensions { - let typ = ext.get_type().get_u16(); - - if seen.contains(&typ) { - return true; - } - seen.insert(typ); - } - - false - } - - pub fn has_unknown_extension(&self) -> bool { - self.extensions.iter().any(|ext| { - ext.get_type() != ExtensionType::KeyShare - && ext.get_type() != ExtensionType::SupportedVersions - && ext.get_type() != ExtensionType::Cookie - }) - } - - fn find_extension(&self, ext: ExtensionType) -> Option<&HelloRetryExtension> { - self.extensions - .iter() - .find(|x| x.get_type() == ext) - } - - pub fn get_requested_key_share_group(&self) -> Option { - let ext = self.find_extension(ExtensionType::KeyShare)?; - match *ext { - HelloRetryExtension::KeyShare(grp) => Some(grp), - _ => None, - } - } - - pub fn get_cookie(&self) -> Option<&PayloadU16> { - let ext = self.find_extension(ExtensionType::Cookie)?; - match *ext { - HelloRetryExtension::Cookie(ref ck) => Some(ck), - _ => None, - } - } - - pub fn get_supported_versions(&self) -> Option { - let ext = self.find_extension(ExtensionType::SupportedVersions)?; - match *ext { - HelloRetryExtension::SupportedVersions(ver) => Some(ver), - _ => None, - } - } -} - -#[derive(Debug)] -pub struct ServerHelloPayload { - pub legacy_version: ProtocolVersion, - pub random: Random, - pub session_id: SessionID, - pub cipher_suite: CipherSuite, - pub compression_method: Compression, - pub extensions: Vec, -} - -impl Codec for ServerHelloPayload { - fn encode(&self, bytes: &mut Vec) { - self.legacy_version.encode(bytes); - self.random.encode(bytes); - - self.session_id.encode(bytes); - self.cipher_suite.encode(bytes); - self.compression_method.encode(bytes); - - if !self.extensions.is_empty() { - codec::encode_vec_u16(bytes, &self.extensions); - } - } - - // minus version and random, which have already been read. - fn read(r: &mut Reader) -> Option { - let session_id = SessionID::read(r)?; - let suite = CipherSuite::read(r)?; - let compression = Compression::read(r)?; - - // RFC5246: - // "The presence of extensions can be detected by determining whether - // there are bytes following the compression_method field at the end of - // the ServerHello." - let extensions = if r.any_left() { - codec::read_vec_u16::(r)? - } else { - vec![] - }; - - let ret = Self { - legacy_version: ProtocolVersion::Unknown(0), - random: ZERO_RANDOM, - session_id, - cipher_suite: suite, - compression_method: compression, - extensions, - }; - - if r.any_left() { - None - } else { - Some(ret) - } - } -} - -impl HasServerExtensions for ServerHelloPayload { - fn get_extensions(&self) -> &[ServerExtension] { - &self.extensions - } -} - -impl ServerHelloPayload { - pub fn get_key_share(&self) -> Option<&KeyShareEntry> { - let ext = self.find_extension(ExtensionType::KeyShare)?; - match *ext { - ServerExtension::KeyShare(ref share) => Some(share), - _ => None, - } - } - - pub fn get_psk_index(&self) -> Option { - let ext = self.find_extension(ExtensionType::PreSharedKey)?; - match *ext { - ServerExtension::PresharedKey(ref index) => Some(*index), - _ => None, - } - } - - pub fn get_ecpoints_extension(&self) -> Option<&ECPointFormatList> { - let ext = self.find_extension(ExtensionType::ECPointFormats)?; - match *ext { - ServerExtension::ECPointFormats(ref fmts) => Some(fmts), - _ => None, - } - } - - pub fn ems_support_acked(&self) -> bool { - self.find_extension(ExtensionType::ExtendedMasterSecret) - .is_some() - } - - pub fn get_sct_list(&self) -> Option<&SCTList> { - let ext = self.find_extension(ExtensionType::SCT)?; - match *ext { - ServerExtension::SignedCertificateTimestamp(ref sctl) => Some(sctl), - _ => None, - } - } - - pub fn get_supported_versions(&self) -> Option { - let ext = self.find_extension(ExtensionType::SupportedVersions)?; - match *ext { - ServerExtension::SupportedVersions(vers) => Some(vers), - _ => None, - } - } -} - -pub type CertificatePayload = Vec; - -impl Codec for CertificatePayload { - fn encode(&self, bytes: &mut Vec) { - codec::encode_vec_u24(bytes, self); - } - - fn read(r: &mut Reader) -> Option { - // 64KB of certificates is plenty, 16MB is obviously silly - codec::read_vec_u24_limited(r, 0x10000) - } -} - -// TLS1.3 changes the Certificate payload encoding. -// That's annoying. It means the parsing is not -// context-free any more. - -#[derive(Debug)] -pub enum CertificateExtension { - CertificateStatus(CertificateStatus), - SignedCertificateTimestamp(SCTList), - Unknown(UnknownExtension), -} - -impl CertificateExtension { - pub fn get_type(&self) -> ExtensionType { - match *self { - Self::CertificateStatus(_) => ExtensionType::StatusRequest, - Self::SignedCertificateTimestamp(_) => ExtensionType::SCT, - Self::Unknown(ref r) => r.typ, - } - } - - pub fn make_sct(sct_list: Vec) -> Self { - let sctl = SCTList::read_bytes(&sct_list).expect("invalid SCT list"); - Self::SignedCertificateTimestamp(sctl) - } - - pub fn get_cert_status(&self) -> Option<&Vec> { - match *self { - Self::CertificateStatus(ref cs) => Some(&cs.ocsp_response.0), - _ => None, - } - } - - pub fn get_sct_list(&self) -> Option<&SCTList> { - match *self { - Self::SignedCertificateTimestamp(ref sctl) => Some(sctl), - _ => None, - } - } -} - -impl Codec for CertificateExtension { - fn encode(&self, bytes: &mut Vec) { - self.get_type().encode(bytes); - - let mut sub: Vec = Vec::new(); - match *self { - Self::CertificateStatus(ref r) => r.encode(&mut sub), - Self::SignedCertificateTimestamp(ref r) => r.encode(&mut sub), - Self::Unknown(ref r) => r.encode(&mut sub), - } - - (sub.len() as u16).encode(bytes); - bytes.append(&mut sub); - } - - fn read(r: &mut Reader) -> Option { - let typ = ExtensionType::read(r)?; - let len = u16::read(r)? as usize; - let mut sub = r.sub(len)?; - - let ext = match typ { - ExtensionType::StatusRequest => { - let st = CertificateStatus::read(&mut sub)?; - Self::CertificateStatus(st) - } - ExtensionType::SCT => { - let scts = SCTList::read(&mut sub)?; - Self::SignedCertificateTimestamp(scts) - } - _ => Self::Unknown(UnknownExtension::read(typ, &mut sub)), - }; - - if sub.any_left() { - None - } else { - Some(ext) - } - } -} - -declare_u16_vec!(CertificateExtensions, CertificateExtension); - -#[derive(Debug)] -pub struct CertificateEntry { - pub cert: key::Certificate, - pub exts: CertificateExtensions, -} - -impl Codec for CertificateEntry { - fn encode(&self, bytes: &mut Vec) { - self.cert.encode(bytes); - self.exts.encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - Some(Self { - cert: key::Certificate::read(r)?, - exts: CertificateExtensions::read(r)?, - }) - } -} - -impl CertificateEntry { - pub fn new(cert: key::Certificate) -> Self { - Self { - cert, - exts: Vec::new(), - } - } - - pub fn has_duplicate_extension(&self) -> bool { - let mut seen = collections::HashSet::new(); - - for ext in &self.exts { - let typ = ext.get_type().get_u16(); - - if seen.contains(&typ) { - return true; - } - seen.insert(typ); - } - - false - } - - pub fn has_unknown_extension(&self) -> bool { - self.exts.iter().any(|ext| { - ext.get_type() != ExtensionType::StatusRequest && ext.get_type() != ExtensionType::SCT - }) - } - - pub fn get_ocsp_response(&self) -> Option<&Vec> { - self.exts - .iter() - .find(|ext| ext.get_type() == ExtensionType::StatusRequest) - .and_then(CertificateExtension::get_cert_status) - } - - pub fn get_scts(&self) -> Option<&SCTList> { - self.exts - .iter() - .find(|ext| ext.get_type() == ExtensionType::SCT) - .and_then(CertificateExtension::get_sct_list) - } -} - -#[derive(Debug)] -pub struct CertificatePayloadTLS13 { - pub context: PayloadU8, - pub entries: Vec, -} - -impl Codec for CertificatePayloadTLS13 { - fn encode(&self, bytes: &mut Vec) { - self.context.encode(bytes); - codec::encode_vec_u24(bytes, &self.entries); - } - - fn read(r: &mut Reader) -> Option { - Some(Self { - context: PayloadU8::read(r)?, - entries: codec::read_vec_u24_limited::(r, 0x10000)?, - }) - } -} - -impl CertificatePayloadTLS13 { - pub fn new(entries: Vec) -> Self { - Self { - context: PayloadU8::empty(), - entries, - } - } - - pub fn any_entry_has_duplicate_extension(&self) -> bool { - for entry in &self.entries { - if entry.has_duplicate_extension() { - return true; - } - } - - false - } - - pub fn any_entry_has_unknown_extension(&self) -> bool { - for entry in &self.entries { - if entry.has_unknown_extension() { - return true; - } - } - - false - } - - pub fn any_entry_has_extension(&self) -> bool { - for entry in &self.entries { - if !entry.exts.is_empty() { - return true; - } - } - - false - } - - pub fn get_end_entity_ocsp(&self) -> Vec { - self.entries - .first() - .and_then(CertificateEntry::get_ocsp_response) - .cloned() - .unwrap_or_default() - } - - pub fn get_end_entity_scts(&self) -> Option { - self.entries - .first() - .and_then(CertificateEntry::get_scts) - .cloned() - } - - pub fn convert(&self) -> CertificatePayload { - let mut ret = Vec::new(); - for entry in &self.entries { - ret.push(entry.cert.clone()); - } - ret - } -} - -#[derive(Debug)] -pub enum KeyExchangeAlgorithm { - BulkOnly, - DH, - DHE, - RSA, - ECDH, - ECDHE, -} - -// We don't support arbitrary curves. It's a terrible -// idea and unnecessary attack surface. Please, -// get a grip. -#[derive(Debug)] -pub struct ECParameters { - pub curve_type: ECCurveType, - pub named_group: NamedGroup, -} - -impl Codec for ECParameters { - fn encode(&self, bytes: &mut Vec) { - self.curve_type.encode(bytes); - self.named_group.encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - let ct = ECCurveType::read(r)?; - - if ct != ECCurveType::NamedCurve { - return None; - } - - let grp = NamedGroup::read(r)?; - - Some(Self { - curve_type: ct, - named_group: grp, - }) - } -} - -#[derive(Debug, Clone)] -pub struct DigitallySignedStruct { - pub scheme: SignatureScheme, - #[deprecated(since = "0.20.7", note = "Use signature() accessor")] - pub sig: PayloadU16, -} - -impl DigitallySignedStruct { - #![allow(deprecated)] - pub fn new(scheme: SignatureScheme, sig: Vec) -> Self { - Self { - scheme, - sig: PayloadU16::new(sig), - } - } - - pub fn signature(&self) -> &[u8] { - &self.sig.0 - } -} - -impl Codec for DigitallySignedStruct { - #![allow(deprecated)] - fn encode(&self, bytes: &mut Vec) { - self.scheme.encode(bytes); - self.sig.encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - let scheme = SignatureScheme::read(r)?; - let sig = PayloadU16::read(r)?; - - Some(Self { scheme, sig }) - } -} - -#[derive(Debug)] -pub struct ClientECDHParams { - pub public: PayloadU8, -} - -impl Codec for ClientECDHParams { - fn encode(&self, bytes: &mut Vec) { - self.public.encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - let pb = PayloadU8::read(r)?; - Some(Self { public: pb }) - } -} - -#[derive(Debug)] -pub struct ServerECDHParams { - pub curve_params: ECParameters, - pub public: PayloadU8, -} - -impl ServerECDHParams { - pub fn new(named_group: NamedGroup, pubkey: &[u8]) -> Self { - Self { - curve_params: ECParameters { - curve_type: ECCurveType::NamedCurve, - named_group, - }, - public: PayloadU8::new(pubkey.to_vec()), - } - } -} - -impl Codec for ServerECDHParams { - fn encode(&self, bytes: &mut Vec) { - self.curve_params.encode(bytes); - self.public.encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - let cp = ECParameters::read(r)?; - let pb = PayloadU8::read(r)?; - - Some(Self { - curve_params: cp, - public: pb, - }) - } -} - -#[derive(Debug)] -pub struct ECDHEServerKeyExchange { - pub params: ServerECDHParams, - pub dss: DigitallySignedStruct, -} - -impl Codec for ECDHEServerKeyExchange { - fn encode(&self, bytes: &mut Vec) { - self.params.encode(bytes); - self.dss.encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - let params = ServerECDHParams::read(r)?; - let dss = DigitallySignedStruct::read(r)?; - - Some(Self { params, dss }) - } -} - -#[derive(Debug)] -pub enum ServerKeyExchangePayload { - ECDHE(ECDHEServerKeyExchange), - Unknown(Payload), -} - -impl Codec for ServerKeyExchangePayload { - fn encode(&self, bytes: &mut Vec) { - match *self { - Self::ECDHE(ref x) => x.encode(bytes), - Self::Unknown(ref x) => x.encode(bytes), - } - } - - fn read(r: &mut Reader) -> Option { - // read as Unknown, fully parse when we know the - // KeyExchangeAlgorithm - Some(Self::Unknown(Payload::read(r))) - } -} - -impl ServerKeyExchangePayload { - pub fn unwrap_given_kxa(&self, kxa: &KeyExchangeAlgorithm) -> Option { - if let Self::Unknown(ref unk) = *self { - let mut rd = Reader::init(&unk.0); - - let result = match *kxa { - KeyExchangeAlgorithm::ECDHE => ECDHEServerKeyExchange::read(&mut rd), - _ => None, - }; - - if !rd.any_left() { - return result; - }; - } - - None - } -} - -// -- EncryptedExtensions (TLS1.3 only) -- -declare_u16_vec!(EncryptedExtensions, ServerExtension); - -pub trait HasServerExtensions { - fn get_extensions(&self) -> &[ServerExtension]; - - /// Returns true if there is more than one extension of a given - /// type. - fn has_duplicate_extension(&self) -> bool { - let mut seen = collections::HashSet::new(); - - for ext in self.get_extensions() { - let typ = ext.get_type().get_u16(); - - if seen.contains(&typ) { - return true; - } - seen.insert(typ); - } - - false - } - - fn find_extension(&self, ext: ExtensionType) -> Option<&ServerExtension> { - self.get_extensions() - .iter() - .find(|x| x.get_type() == ext) - } - - fn get_alpn_protocol(&self) -> Option<&[u8]> { - let ext = self.find_extension(ExtensionType::ALProtocolNegotiation)?; - match *ext { - ServerExtension::Protocols(ref protos) => protos.as_single_slice(), - _ => None, - } - } - - fn get_quic_params_extension(&self) -> Option> { - let ext = self - .find_extension(ExtensionType::TransportParameters) - .or_else(|| self.find_extension(ExtensionType::TransportParametersDraft))?; - match *ext { - ServerExtension::TransportParameters(ref bytes) - | ServerExtension::TransportParametersDraft(ref bytes) => Some(bytes.to_vec()), - _ => None, - } - } - - fn early_data_extension_offered(&self) -> bool { - self.find_extension(ExtensionType::EarlyData) - .is_some() - } -} - -impl HasServerExtensions for EncryptedExtensions { - fn get_extensions(&self) -> &[ServerExtension] { - self - } -} - -// -- CertificateRequest and sundries -- -declare_u8_vec!(ClientCertificateTypes, ClientCertificateType); -pub type DistinguishedName = PayloadU16; -/// DistinguishedNames is a `Vec>` wrapped in internal types. Each element contains the -/// DER or BER encoded [`Subject` field from RFC 5280](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) -/// for a single certificate. The Subject field is -/// [encoded as an RFC 5280 `Name`](https://datatracker.ietf.org/doc/html/rfc5280#page-116). -/// It can be decoded using [x509-parser's FromDer trait](https://docs.rs/x509-parser/latest/x509_parser/traits/trait.FromDer.html). -/// -/// ```ignore -/// for name in distinguished_names { -/// use x509_parser::traits::FromDer; -/// println!("{}", x509_parser::x509::X509Name::from_der(&name.0)?.1); -/// } -/// ``` -pub type DistinguishedNames = VecU16OfPayloadU16; - -#[derive(Debug)] -pub struct CertificateRequestPayload { - pub certtypes: ClientCertificateTypes, - pub sigschemes: SupportedSignatureSchemes, - pub canames: DistinguishedNames, -} - -impl Codec for CertificateRequestPayload { - fn encode(&self, bytes: &mut Vec) { - self.certtypes.encode(bytes); - self.sigschemes.encode(bytes); - self.canames.encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - let certtypes = ClientCertificateTypes::read(r)?; - let sigschemes = SupportedSignatureSchemes::read(r)?; - let canames = DistinguishedNames::read(r)?; - - if sigschemes.is_empty() { - warn!("meaningless CertificateRequest message"); - None - } else { - Some(Self { - certtypes, - sigschemes, - canames, - }) - } - } -} - -#[derive(Debug)] -pub enum CertReqExtension { - SignatureAlgorithms(SupportedSignatureSchemes), - AuthorityNames(DistinguishedNames), - Unknown(UnknownExtension), -} - -impl CertReqExtension { - pub fn get_type(&self) -> ExtensionType { - match *self { - Self::SignatureAlgorithms(_) => ExtensionType::SignatureAlgorithms, - Self::AuthorityNames(_) => ExtensionType::CertificateAuthorities, - Self::Unknown(ref r) => r.typ, - } - } -} - -impl Codec for CertReqExtension { - fn encode(&self, bytes: &mut Vec) { - self.get_type().encode(bytes); - - let mut sub: Vec = Vec::new(); - match *self { - Self::SignatureAlgorithms(ref r) => r.encode(&mut sub), - Self::AuthorityNames(ref r) => r.encode(&mut sub), - Self::Unknown(ref r) => r.encode(&mut sub), - } - - (sub.len() as u16).encode(bytes); - bytes.append(&mut sub); - } - - fn read(r: &mut Reader) -> Option { - let typ = ExtensionType::read(r)?; - let len = u16::read(r)? as usize; - let mut sub = r.sub(len)?; - - let ext = match typ { - ExtensionType::SignatureAlgorithms => { - let schemes = SupportedSignatureSchemes::read(&mut sub)?; - if schemes.is_empty() { - return None; - } - Self::SignatureAlgorithms(schemes) - } - ExtensionType::CertificateAuthorities => { - let cas = DistinguishedNames::read(&mut sub)?; - Self::AuthorityNames(cas) - } - _ => Self::Unknown(UnknownExtension::read(typ, &mut sub)), - }; - - if sub.any_left() { - None - } else { - Some(ext) - } - } -} - -declare_u16_vec!(CertReqExtensions, CertReqExtension); - -#[derive(Debug)] -pub struct CertificateRequestPayloadTLS13 { - pub context: PayloadU8, - pub extensions: CertReqExtensions, -} - -impl Codec for CertificateRequestPayloadTLS13 { - fn encode(&self, bytes: &mut Vec) { - self.context.encode(bytes); - self.extensions.encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - let context = PayloadU8::read(r)?; - let extensions = CertReqExtensions::read(r)?; - - Some(Self { - context, - extensions, - }) - } -} - -impl CertificateRequestPayloadTLS13 { - pub fn find_extension(&self, ext: ExtensionType) -> Option<&CertReqExtension> { - self.extensions - .iter() - .find(|x| x.get_type() == ext) - } - - pub fn get_sigalgs_extension(&self) -> Option<&SupportedSignatureSchemes> { - let ext = self.find_extension(ExtensionType::SignatureAlgorithms)?; - match *ext { - CertReqExtension::SignatureAlgorithms(ref sa) => Some(sa), - _ => None, - } - } - - pub fn get_authorities_extension(&self) -> Option<&DistinguishedNames> { - let ext = self.find_extension(ExtensionType::CertificateAuthorities)?; - match *ext { - CertReqExtension::AuthorityNames(ref an) => Some(an), - _ => None, - } - } -} - -// -- NewSessionTicket -- -#[derive(Debug)] -pub struct NewSessionTicketPayload { - pub lifetime_hint: u32, - pub ticket: PayloadU16, -} - -impl NewSessionTicketPayload { - pub fn new(lifetime_hint: u32, ticket: Vec) -> Self { - Self { - lifetime_hint, - ticket: PayloadU16::new(ticket), - } - } -} - -impl Codec for NewSessionTicketPayload { - fn encode(&self, bytes: &mut Vec) { - self.lifetime_hint.encode(bytes); - self.ticket.encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - let lifetime = u32::read(r)?; - let ticket = PayloadU16::read(r)?; - - Some(Self { - lifetime_hint: lifetime, - ticket, - }) - } -} - -// -- NewSessionTicket electric boogaloo -- -#[derive(Debug)] -pub enum NewSessionTicketExtension { - EarlyData(u32), - Unknown(UnknownExtension), -} - -impl NewSessionTicketExtension { - pub fn get_type(&self) -> ExtensionType { - match *self { - Self::EarlyData(_) => ExtensionType::EarlyData, - Self::Unknown(ref r) => r.typ, - } - } -} - -impl Codec for NewSessionTicketExtension { - fn encode(&self, bytes: &mut Vec) { - self.get_type().encode(bytes); - - let mut sub: Vec = Vec::new(); - match *self { - Self::EarlyData(r) => r.encode(&mut sub), - Self::Unknown(ref r) => r.encode(&mut sub), - } - - (sub.len() as u16).encode(bytes); - bytes.append(&mut sub); - } - - fn read(r: &mut Reader) -> Option { - let typ = ExtensionType::read(r)?; - let len = u16::read(r)? as usize; - let mut sub = r.sub(len)?; - - let ext = match typ { - ExtensionType::EarlyData => Self::EarlyData(u32::read(&mut sub)?), - _ => Self::Unknown(UnknownExtension::read(typ, &mut sub)), - }; - - if sub.any_left() { - None - } else { - Some(ext) - } - } -} - -declare_u16_vec!(NewSessionTicketExtensions, NewSessionTicketExtension); - -#[derive(Debug)] -pub struct NewSessionTicketPayloadTLS13 { - pub lifetime: u32, - pub age_add: u32, - pub nonce: PayloadU8, - pub ticket: PayloadU16, - pub exts: NewSessionTicketExtensions, -} - -impl NewSessionTicketPayloadTLS13 { - pub fn new(lifetime: u32, age_add: u32, nonce: Vec, ticket: Vec) -> Self { - Self { - lifetime, - age_add, - nonce: PayloadU8::new(nonce), - ticket: PayloadU16::new(ticket), - exts: vec![], - } - } - - pub fn has_duplicate_extension(&self) -> bool { - let mut seen = collections::HashSet::new(); - - for ext in &self.exts { - let typ = ext.get_type().get_u16(); - - if seen.contains(&typ) { - return true; - } - seen.insert(typ); - } - - false - } - - pub fn find_extension(&self, ext: ExtensionType) -> Option<&NewSessionTicketExtension> { - self.exts - .iter() - .find(|x| x.get_type() == ext) - } - - pub fn get_max_early_data_size(&self) -> Option { - let ext = self.find_extension(ExtensionType::EarlyData)?; - match *ext { - NewSessionTicketExtension::EarlyData(ref sz) => Some(*sz), - _ => None, - } - } -} - -impl Codec for NewSessionTicketPayloadTLS13 { - fn encode(&self, bytes: &mut Vec) { - self.lifetime.encode(bytes); - self.age_add.encode(bytes); - self.nonce.encode(bytes); - self.ticket.encode(bytes); - self.exts.encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - let lifetime = u32::read(r)?; - let age_add = u32::read(r)?; - let nonce = PayloadU8::read(r)?; - let ticket = PayloadU16::read(r)?; - let exts = NewSessionTicketExtensions::read(r)?; - - Some(Self { - lifetime, - age_add, - nonce, - ticket, - exts, - }) - } -} - -// -- RFC6066 certificate status types - -/// Only supports OCSP -#[derive(Debug)] -pub struct CertificateStatus { - pub ocsp_response: PayloadU24, -} - -impl Codec for CertificateStatus { - fn encode(&self, bytes: &mut Vec) { - CertificateStatusType::OCSP.encode(bytes); - self.ocsp_response.encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - let typ = CertificateStatusType::read(r)?; - - match typ { - CertificateStatusType::OCSP => Some(Self { - ocsp_response: PayloadU24::read(r)?, - }), - _ => None, - } - } -} - -impl CertificateStatus { - pub fn new(ocsp: Vec) -> Self { - Self { - ocsp_response: PayloadU24::new(ocsp), - } - } - - pub fn into_inner(self) -> Vec { - self.ocsp_response.0 - } -} - -#[derive(Debug)] -pub enum HandshakePayload { - HelloRequest, - ClientHello(ClientHelloPayload), - ServerHello(ServerHelloPayload), - HelloRetryRequest(HelloRetryRequest), - Certificate(CertificatePayload), - CertificateTLS13(CertificatePayloadTLS13), - ServerKeyExchange(ServerKeyExchangePayload), - CertificateRequest(CertificateRequestPayload), - CertificateRequestTLS13(CertificateRequestPayloadTLS13), - CertificateVerify(DigitallySignedStruct), - ServerHelloDone, - EndOfEarlyData, - ClientKeyExchange(Payload), - NewSessionTicket(NewSessionTicketPayload), - NewSessionTicketTLS13(NewSessionTicketPayloadTLS13), - EncryptedExtensions(EncryptedExtensions), - KeyUpdate(KeyUpdateRequest), - Finished(Payload), - CertificateStatus(CertificateStatus), - MessageHash(Payload), - Unknown(Payload), -} - -impl HandshakePayload { - fn encode(&self, bytes: &mut Vec) { - use self::HandshakePayload::*; - match *self { - HelloRequest | ServerHelloDone | EndOfEarlyData => {} - ClientHello(ref x) => x.encode(bytes), - ServerHello(ref x) => x.encode(bytes), - HelloRetryRequest(ref x) => x.encode(bytes), - Certificate(ref x) => x.encode(bytes), - CertificateTLS13(ref x) => x.encode(bytes), - ServerKeyExchange(ref x) => x.encode(bytes), - ClientKeyExchange(ref x) => x.encode(bytes), - CertificateRequest(ref x) => x.encode(bytes), - CertificateRequestTLS13(ref x) => x.encode(bytes), - CertificateVerify(ref x) => x.encode(bytes), - NewSessionTicket(ref x) => x.encode(bytes), - NewSessionTicketTLS13(ref x) => x.encode(bytes), - EncryptedExtensions(ref x) => x.encode(bytes), - KeyUpdate(ref x) => x.encode(bytes), - Finished(ref x) => x.encode(bytes), - CertificateStatus(ref x) => x.encode(bytes), - MessageHash(ref x) => x.encode(bytes), - Unknown(ref x) => x.encode(bytes), - } - } -} - -#[derive(Debug)] -pub struct HandshakeMessagePayload { - pub typ: HandshakeType, - pub payload: HandshakePayload, -} - -impl Codec for HandshakeMessagePayload { - fn encode(&self, bytes: &mut Vec) { - // encode payload to learn length - let mut sub: Vec = Vec::new(); - self.payload.encode(&mut sub); - - // output type, length, and encoded payload - match self.typ { - HandshakeType::HelloRetryRequest => HandshakeType::ServerHello, - _ => self.typ, - } - .encode(bytes); - codec::u24(sub.len() as u32).encode(bytes); - bytes.append(&mut sub); - } - - fn read(r: &mut Reader) -> Option { - Self::read_version(r, ProtocolVersion::TLSv1_2) - } -} - -impl HandshakeMessagePayload { - pub fn read_version(r: &mut Reader, vers: ProtocolVersion) -> Option { - let mut typ = HandshakeType::read(r)?; - let len = codec::u24::read(r)?.0 as usize; - let mut sub = r.sub(len)?; - - let payload = match typ { - HandshakeType::HelloRequest if sub.left() == 0 => HandshakePayload::HelloRequest, - HandshakeType::ClientHello => { - HandshakePayload::ClientHello(ClientHelloPayload::read(&mut sub)?) - } - HandshakeType::ServerHello => { - let version = ProtocolVersion::read(&mut sub)?; - let random = Random::read(&mut sub)?; - - if random == HELLO_RETRY_REQUEST_RANDOM { - let mut hrr = HelloRetryRequest::read(&mut sub)?; - hrr.legacy_version = version; - typ = HandshakeType::HelloRetryRequest; - HandshakePayload::HelloRetryRequest(hrr) - } else { - let mut shp = ServerHelloPayload::read(&mut sub)?; - shp.legacy_version = version; - shp.random = random; - HandshakePayload::ServerHello(shp) - } - } - HandshakeType::Certificate if vers == ProtocolVersion::TLSv1_3 => { - let p = CertificatePayloadTLS13::read(&mut sub)?; - HandshakePayload::CertificateTLS13(p) - } - HandshakeType::Certificate => { - HandshakePayload::Certificate(CertificatePayload::read(&mut sub)?) - } - HandshakeType::ServerKeyExchange => { - let p = ServerKeyExchangePayload::read(&mut sub)?; - HandshakePayload::ServerKeyExchange(p) - } - HandshakeType::ServerHelloDone => { - if sub.any_left() { - return None; - } - HandshakePayload::ServerHelloDone - } - HandshakeType::ClientKeyExchange => { - HandshakePayload::ClientKeyExchange(Payload::read(&mut sub)) - } - HandshakeType::CertificateRequest if vers == ProtocolVersion::TLSv1_3 => { - let p = CertificateRequestPayloadTLS13::read(&mut sub)?; - HandshakePayload::CertificateRequestTLS13(p) - } - HandshakeType::CertificateRequest => { - let p = CertificateRequestPayload::read(&mut sub)?; - HandshakePayload::CertificateRequest(p) - } - HandshakeType::CertificateVerify => { - HandshakePayload::CertificateVerify(DigitallySignedStruct::read(&mut sub)?) - } - HandshakeType::NewSessionTicket if vers == ProtocolVersion::TLSv1_3 => { - let p = NewSessionTicketPayloadTLS13::read(&mut sub)?; - HandshakePayload::NewSessionTicketTLS13(p) - } - HandshakeType::NewSessionTicket => { - let p = NewSessionTicketPayload::read(&mut sub)?; - HandshakePayload::NewSessionTicket(p) - } - HandshakeType::EncryptedExtensions => { - HandshakePayload::EncryptedExtensions(EncryptedExtensions::read(&mut sub)?) - } - HandshakeType::KeyUpdate => { - HandshakePayload::KeyUpdate(KeyUpdateRequest::read(&mut sub)?) - } - HandshakeType::EndOfEarlyData => { - if sub.any_left() { - return None; - } - HandshakePayload::EndOfEarlyData - } - HandshakeType::Finished => HandshakePayload::Finished(Payload::read(&mut sub)), - HandshakeType::CertificateStatus => { - HandshakePayload::CertificateStatus(CertificateStatus::read(&mut sub)?) - } - HandshakeType::MessageHash => { - // does not appear on the wire - return None; - } - HandshakeType::HelloRetryRequest => { - // not legal on wire - return None; - } - _ => HandshakePayload::Unknown(Payload::read(&mut sub)), - }; - - if sub.any_left() { - None - } else { - Some(Self { typ, payload }) - } - } - - pub fn build_key_update_notify() -> Self { - Self { - typ: HandshakeType::KeyUpdate, - payload: HandshakePayload::KeyUpdate(KeyUpdateRequest::UpdateNotRequested), - } - } - - pub fn get_encoding_for_binder_signing(&self) -> Vec { - let mut ret = self.get_encoding(); - - let binder_len = match self.payload { - HandshakePayload::ClientHello(ref ch) => match ch.extensions.last() { - Some(ClientExtension::PresharedKey(ref offer)) => { - let mut binders_encoding = Vec::new(); - offer - .binders - .encode(&mut binders_encoding); - binders_encoding.len() - } - _ => 0, - }, - _ => 0, - }; - - let ret_len = ret.len() - binder_len; - ret.truncate(ret_len); - ret - } - - pub fn build_handshake_hash(hash: &[u8]) -> Self { - Self { - typ: HandshakeType::MessageHash, - payload: HandshakePayload::MessageHash(Payload::new(hash.to_vec())), - } - } -} Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/handshake-test.1.bin and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/handshake-test.1.bin differ diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/handshake_test.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/handshake_test.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/handshake_test.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/handshake_test.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,1247 +0,0 @@ -use crate::enums::{CipherSuite, ProtocolVersion, SignatureScheme}; -use crate::key::Certificate; -use crate::msgs::base::{Payload, PayloadU16, PayloadU24, PayloadU8}; -use crate::msgs::codec::{put_u16, Codec, Reader}; -use crate::msgs::enums::{ - ClientCertificateType, Compression, ECCurveType, ExtensionType, HandshakeType, HashAlgorithm, - KeyUpdateRequest, NamedGroup, PSKKeyExchangeMode, ServerNameType, SignatureAlgorithm, -}; -use crate::msgs::handshake::{ - CertReqExtension, CertificateEntry, CertificateExtension, CertificatePayloadTLS13, - CertificateRequestPayload, CertificateRequestPayloadTLS13, CertificateStatus, - CertificateStatusRequest, ClientExtension, ClientHelloPayload, ClientSessionTicket, - ConvertProtocolNameList, ConvertServerNameList, DecomposedSignatureScheme, - DigitallySignedStruct, ECDHEServerKeyExchange, ECParameters, ECPointFormatList, - EncryptedExtensions, HandshakeMessagePayload, HandshakePayload, HasServerExtensions, - HelloRetryExtension, HelloRetryRequest, KeyShareEntry, NewSessionTicketExtension, - NewSessionTicketPayload, NewSessionTicketPayloadTLS13, PresharedKeyBinder, - PresharedKeyIdentity, PresharedKeyOffer, Random, ServerECDHParams, ServerExtension, - ServerHelloPayload, ServerKeyExchangePayload, SessionID, SupportedPointFormats, - UnknownExtension, -}; -use webpki::DnsNameRef; - -#[test] -fn rejects_short_random() { - let bytes = [0x01; 31]; - let mut rd = Reader::init(&bytes); - assert_eq!(Random::read(&mut rd), None); -} - -#[test] -fn reads_random() { - let bytes = [0x01; 32]; - let mut rd = Reader::init(&bytes); - let rnd = Random::read(&mut rd).unwrap(); - println!("{:?}", rnd); - - assert!(!rd.any_left()); -} - -#[test] -fn debug_random() { - assert_eq!( - "0101010101010101010101010101010101010101010101010101010101010101", - format!("{:?}", Random::from([1; 32])) - ); -} - -#[test] -fn rejects_truncated_sessionid() { - let bytes = [32; 32]; - let mut rd = Reader::init(&bytes); - assert_eq!(SessionID::read(&mut rd), None); -} - -#[test] -fn rejects_sessionid_with_bad_length() { - let bytes = [33; 33]; - let mut rd = Reader::init(&bytes); - assert_eq!(SessionID::read(&mut rd), None); -} - -#[test] -fn sessionid_with_different_lengths_are_unequal() { - let a = SessionID::read(&mut Reader::init(&[1u8, 1])).unwrap(); - let b = SessionID::read(&mut Reader::init(&[2u8, 1, 2])).unwrap(); - assert_ne!(a, b); -} - -#[test] -fn accepts_short_sessionid() { - let bytes = [1; 2]; - let mut rd = Reader::init(&bytes); - let sess = SessionID::read(&mut rd).unwrap(); - println!("{:?}", sess); - - assert!(!sess.is_empty()); - assert_eq!(sess.len(), 1); - assert!(!rd.any_left()); -} - -#[test] -fn accepts_empty_sessionid() { - let bytes = [0; 1]; - let mut rd = Reader::init(&bytes); - let sess = SessionID::read(&mut rd).unwrap(); - println!("{:?}", sess); - - assert!(sess.is_empty()); - assert_eq!(sess.len(), 0); - assert!(!rd.any_left()); -} - -#[test] -fn debug_sessionid() { - let bytes = [ - 32, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, - ]; - let mut rd = Reader::init(&bytes); - let sess = SessionID::read(&mut rd).unwrap(); - assert_eq!( - "0101010101010101010101010101010101010101010101010101010101010101", - format!("{:?}", sess) - ); -} - -#[test] -fn can_roundtrip_unknown_client_ext() { - let bytes = [0x12u8, 0x34u8, 0, 3, 1, 2, 3]; - let mut rd = Reader::init(&bytes); - let ext = ClientExtension::read(&mut rd).unwrap(); - - println!("{:?}", ext); - assert_eq!(ext.get_type(), ExtensionType::Unknown(0x1234)); - assert_eq!(bytes.to_vec(), ext.get_encoding()); -} - -#[test] -fn refuses_client_ext_with_unparsed_bytes() { - let bytes = [0x00u8, 0x0b, 0x00, 0x04, 0x02, 0xf8, 0x01, 0x02]; - let mut rd = Reader::init(&bytes); - assert!(ClientExtension::read(&mut rd).is_none()); -} - -#[test] -fn refuses_server_ext_with_unparsed_bytes() { - let bytes = [0x00u8, 0x0b, 0x00, 0x04, 0x02, 0xf8, 0x01, 0x02]; - let mut rd = Reader::init(&bytes); - assert!(ServerExtension::read(&mut rd).is_none()); -} - -#[test] -fn refuses_certificate_ext_with_unparsed_bytes() { - let bytes = [0x00u8, 0x12, 0x00, 0x03, 0x00, 0x00, 0x01]; - let mut rd = Reader::init(&bytes); - assert!(CertificateExtension::read(&mut rd).is_none()); -} - -#[test] -fn refuses_certificate_req_ext_with_unparsed_bytes() { - let bytes = [0x00u8, 0x0d, 0x00, 0x05, 0x00, 0x02, 0x01, 0x02, 0xff]; - let mut rd = Reader::init(&bytes); - assert!(CertReqExtension::read(&mut rd).is_none()); -} - -#[test] -fn refuses_helloreq_ext_with_unparsed_bytes() { - let bytes = [0x00u8, 0x2b, 0x00, 0x03, 0x00, 0x00, 0x01]; - let mut rd = Reader::init(&bytes); - assert!(HelloRetryExtension::read(&mut rd).is_none()); -} - -#[test] -fn refuses_newsessionticket_ext_with_unparsed_bytes() { - let bytes = [0x00u8, 0x2a, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x01]; - let mut rd = Reader::init(&bytes); - assert!(NewSessionTicketExtension::read(&mut rd).is_none()); -} - -#[test] -fn can_roundtrip_single_sni() { - let bytes = [0, 0, 0, 7, 0, 5, 0, 0, 2, 0x6c, 0x6f]; - let mut rd = Reader::init(&bytes); - let ext = ClientExtension::read(&mut rd).unwrap(); - println!("{:?}", ext); - - assert_eq!(ext.get_type(), ExtensionType::ServerName); - assert_eq!(bytes.to_vec(), ext.get_encoding()); -} - -#[test] -fn can_round_trip_mixed_case_sni() { - let bytes = [0, 0, 0, 7, 0, 5, 0, 0, 2, 0x4c, 0x6f]; - let mut rd = Reader::init(&bytes); - let ext = ClientExtension::read(&mut rd).unwrap(); - println!("{:?}", ext); - - assert_eq!(ext.get_type(), ExtensionType::ServerName); - assert_eq!(bytes.to_vec(), ext.get_encoding()); -} - -#[test] -fn can_roundtrip_other_sni_name_types() { - let bytes = [0, 0, 0, 7, 0, 5, 1, 0, 2, 0x6c, 0x6f]; - let mut rd = Reader::init(&bytes); - let ext = ClientExtension::read(&mut rd).unwrap(); - println!("{:?}", ext); - - assert_eq!(ext.get_type(), ExtensionType::ServerName); - assert_eq!(bytes.to_vec(), ext.get_encoding()); -} - -#[test] -fn get_single_hostname_returns_none_for_other_sni_name_types() { - let bytes = [0, 0, 0, 7, 0, 5, 1, 0, 2, 0x6c, 0x6f]; - let mut rd = Reader::init(&bytes); - let ext = ClientExtension::read(&mut rd).unwrap(); - println!("{:?}", ext); - - assert_eq!(ext.get_type(), ExtensionType::ServerName); - if let ClientExtension::ServerName(snr) = ext { - assert!(!snr.has_duplicate_names_for_type()); - assert!(snr.get_single_hostname().is_none()); - } else { - unreachable!(); - } -} - -#[test] -fn can_roundtrip_multiname_sni() { - let bytes = [0, 0, 0, 12, 0, 10, 0, 0, 2, 0x68, 0x69, 0, 0, 2, 0x6c, 0x6f]; - let mut rd = Reader::init(&bytes); - let ext = ClientExtension::read(&mut rd).unwrap(); - println!("{:?}", ext); - - assert_eq!(ext.get_type(), ExtensionType::ServerName); - assert_eq!(bytes.to_vec(), ext.get_encoding()); - match ext { - ClientExtension::ServerName(req) => { - assert_eq!(2, req.len()); - - assert!(req.has_duplicate_names_for_type()); - - let dns_name_str: &str = req - .get_single_hostname() - .unwrap() - .into(); - assert_eq!(dns_name_str, "hi"); - - assert_eq!(req[0].typ, ServerNameType::HostName); - assert_eq!(req[1].typ, ServerNameType::HostName); - } - _ => unreachable!(), - } -} - -#[test] -fn rejects_truncated_sni() { - let bytes = [0, 0, 0, 1, 0]; - assert!(ClientExtension::read(&mut Reader::init(&bytes)).is_none()); - - let bytes = [0, 0, 0, 2, 0, 1]; - assert!(ClientExtension::read(&mut Reader::init(&bytes)).is_none()); - - let bytes = [0, 0, 0, 3, 0, 1, 0]; - assert!(ClientExtension::read(&mut Reader::init(&bytes)).is_none()); - - let bytes = [0, 0, 0, 4, 0, 2, 0, 0]; - assert!(ClientExtension::read(&mut Reader::init(&bytes)).is_none()); - - let bytes = [0, 0, 0, 5, 0, 3, 0, 0, 0]; - assert!(ClientExtension::read(&mut Reader::init(&bytes)).is_none()); - - let bytes = [0, 0, 0, 5, 0, 3, 0, 0, 1]; - assert!(ClientExtension::read(&mut Reader::init(&bytes)).is_none()); - - let bytes = [0, 0, 0, 6, 0, 4, 0, 0, 2, 0x68]; - assert!(ClientExtension::read(&mut Reader::init(&bytes)).is_none()); -} - -#[test] -fn can_roundtrip_psk_identity() { - let bytes = [0, 0, 0x11, 0x22, 0x33, 0x44]; - let psk_id = PresharedKeyIdentity::read(&mut Reader::init(&bytes)).unwrap(); - println!("{:?}", psk_id); - assert_eq!(psk_id.obfuscated_ticket_age, 0x11223344); - assert_eq!(psk_id.get_encoding(), bytes.to_vec()); - - let bytes = [0, 5, 0x1, 0x2, 0x3, 0x4, 0x5, 0x11, 0x22, 0x33, 0x44]; - let psk_id = PresharedKeyIdentity::read(&mut Reader::init(&bytes)).unwrap(); - println!("{:?}", psk_id); - assert_eq!(psk_id.identity.0, vec![0x1, 0x2, 0x3, 0x4, 0x5]); - assert_eq!(psk_id.obfuscated_ticket_age, 0x11223344); - assert_eq!(psk_id.get_encoding(), bytes.to_vec()); -} - -#[test] -fn can_roundtrip_psk_offer() { - let bytes = [ - 0, 7, 0, 1, 0x99, 0x11, 0x22, 0x33, 0x44, 0, 4, 3, 0x01, 0x02, 0x3, - ]; - let psko = PresharedKeyOffer::read(&mut Reader::init(&bytes)).unwrap(); - println!("{:?}", psko); - - assert_eq!(psko.identities.len(), 1); - assert_eq!(psko.identities[0].identity.0, vec![0x99]); - assert_eq!(psko.identities[0].obfuscated_ticket_age, 0x11223344); - assert_eq!(psko.binders.len(), 1); - assert_eq!(psko.binders[0].0, vec![1, 2, 3]); - assert_eq!(psko.get_encoding(), bytes.to_vec()); -} - -#[test] -fn can_roundtrip_certstatusreq_for_ocsp() { - let ext = ClientExtension::CertificateStatusRequest(CertificateStatusRequest::build_ocsp()); - println!("{:?}", ext); - - let bytes = [ - 0, 5, // CertificateStatusRequest - 0, 11, 1, // OCSP - 0, 5, 0, 3, 0, 1, 1, 0, 1, 2, - ]; - - let csr = ClientExtension::read(&mut Reader::init(&bytes)).unwrap(); - println!("{:?}", csr); - assert_eq!(csr.get_encoding(), bytes.to_vec()); -} - -#[test] -fn can_roundtrip_certstatusreq_for_other() { - let bytes = [ - 0, 5, // CertificateStatusRequest - 0, 5, 2, // !OCSP - 1, 2, 3, 4, - ]; - - let csr = ClientExtension::read(&mut Reader::init(&bytes)).unwrap(); - println!("{:?}", csr); - assert_eq!(csr.get_encoding(), bytes.to_vec()); -} - -#[test] -fn can_roundtrip_multi_proto() { - let bytes = [0, 16, 0, 8, 0, 6, 2, 0x68, 0x69, 2, 0x6c, 0x6f]; - let mut rd = Reader::init(&bytes); - let ext = ClientExtension::read(&mut rd).unwrap(); - println!("{:?}", ext); - - assert_eq!(ext.get_type(), ExtensionType::ALProtocolNegotiation); - assert_eq!(ext.get_encoding(), bytes.to_vec()); - match ext { - ClientExtension::Protocols(prot) => { - assert_eq!(2, prot.len()); - assert_eq!(vec![b"hi", b"lo"], prot.to_slices()); - assert_eq!(prot.as_single_slice(), None); - } - _ => unreachable!(), - } -} - -#[test] -fn can_roundtrip_single_proto() { - let bytes = [0, 16, 0, 5, 0, 3, 2, 0x68, 0x69]; - let mut rd = Reader::init(&bytes); - let ext = ClientExtension::read(&mut rd).unwrap(); - println!("{:?}", ext); - - assert_eq!(ext.get_type(), ExtensionType::ALProtocolNegotiation); - assert_eq!(bytes.to_vec(), ext.get_encoding()); - match ext { - ClientExtension::Protocols(prot) => { - assert_eq!(1, prot.len()); - assert_eq!(vec![b"hi"], prot.to_slices()); - assert_eq!(prot.as_single_slice(), Some(&b"hi"[..])); - } - _ => unreachable!(), - } -} - -#[test] -fn decomposed_signature_scheme_has_correct_mappings() { - assert_eq!( - SignatureScheme::make(SignatureAlgorithm::RSA, HashAlgorithm::SHA1), - SignatureScheme::RSA_PKCS1_SHA1 - ); - assert_eq!( - SignatureScheme::make(SignatureAlgorithm::RSA, HashAlgorithm::SHA256), - SignatureScheme::RSA_PKCS1_SHA256 - ); - assert_eq!( - SignatureScheme::make(SignatureAlgorithm::RSA, HashAlgorithm::SHA384), - SignatureScheme::RSA_PKCS1_SHA384 - ); - assert_eq!( - SignatureScheme::make(SignatureAlgorithm::RSA, HashAlgorithm::SHA512), - SignatureScheme::RSA_PKCS1_SHA512 - ); - - assert_eq!( - SignatureScheme::make(SignatureAlgorithm::ECDSA, HashAlgorithm::SHA256), - SignatureScheme::ECDSA_NISTP256_SHA256 - ); - assert_eq!( - SignatureScheme::make(SignatureAlgorithm::ECDSA, HashAlgorithm::SHA384), - SignatureScheme::ECDSA_NISTP384_SHA384 - ); - assert_eq!( - SignatureScheme::make(SignatureAlgorithm::ECDSA, HashAlgorithm::SHA512), - SignatureScheme::ECDSA_NISTP521_SHA512 - ); -} - -fn get_sample_clienthellopayload() -> ClientHelloPayload { - ClientHelloPayload { - client_version: ProtocolVersion::TLSv1_2, - random: Random::from([0; 32]), - session_id: SessionID::empty(), - cipher_suites: vec![CipherSuite::TLS_NULL_WITH_NULL_NULL], - compression_methods: vec![Compression::Null], - extensions: vec![ - ClientExtension::ECPointFormats(ECPointFormatList::supported()), - ClientExtension::NamedGroups(vec![NamedGroup::X25519]), - ClientExtension::SignatureAlgorithms(vec![SignatureScheme::ECDSA_NISTP256_SHA256]), - ClientExtension::make_sni(DnsNameRef::try_from_ascii_str("hello").unwrap()), - ClientExtension::SessionTicket(ClientSessionTicket::Request), - ClientExtension::SessionTicket(ClientSessionTicket::Offer(Payload(vec![]))), - ClientExtension::Protocols(vec![PayloadU8(vec![0])]), - ClientExtension::SupportedVersions(vec![ProtocolVersion::TLSv1_3]), - ClientExtension::KeyShare(vec![KeyShareEntry::new(NamedGroup::X25519, &[1, 2, 3])]), - ClientExtension::PresharedKeyModes(vec![PSKKeyExchangeMode::PSK_DHE_KE]), - ClientExtension::PresharedKey(PresharedKeyOffer { - identities: vec![ - PresharedKeyIdentity::new(vec![3, 4, 5], 123456), - PresharedKeyIdentity::new(vec![6, 7, 8], 7891011), - ], - binders: vec![ - PresharedKeyBinder::new(vec![1, 2, 3]), - PresharedKeyBinder::new(vec![3, 4, 5]), - ], - }), - ClientExtension::Cookie(PayloadU16(vec![1, 2, 3])), - ClientExtension::ExtendedMasterSecretRequest, - ClientExtension::CertificateStatusRequest(CertificateStatusRequest::build_ocsp()), - ClientExtension::SignedCertificateTimestampRequest, - ClientExtension::TransportParameters(vec![1, 2, 3]), - ClientExtension::Unknown(UnknownExtension { - typ: ExtensionType::Unknown(12345), - payload: Payload(vec![1, 2, 3]), - }), - ], - } -} - -#[test] -fn can_print_all_clientextensions() { - println!("client hello {:?}", get_sample_clienthellopayload()); -} - -#[test] -fn can_clone_all_clientextensions() { - let _ = get_sample_serverhellopayload().extensions; -} - -#[test] -fn client_has_duplicate_extensions_works() { - let mut chp = get_sample_clienthellopayload(); - assert!(chp.has_duplicate_extension()); // due to SessionTicketRequest/SessionTicketOffer - - chp.extensions.drain(1..); - assert!(!chp.has_duplicate_extension()); - - chp.extensions = vec![]; - assert!(!chp.has_duplicate_extension()); -} - -#[test] -fn test_truncated_psk_offer() { - let ext = ClientExtension::PresharedKey(PresharedKeyOffer { - identities: vec![PresharedKeyIdentity::new(vec![3, 4, 5], 123456)], - binders: vec![PresharedKeyBinder::new(vec![1, 2, 3])], - }); - - let mut enc = ext.get_encoding(); - println!("testing {:?} enc {:?}", ext, enc); - for l in 0..enc.len() { - if l == 9 { - continue; - } - put_u16(l as u16, &mut enc[4..]); - let rc = ClientExtension::read_bytes(&enc); - assert!(rc.is_none()); - } -} - -#[test] -fn test_truncated_client_hello_is_detected() { - let ch = get_sample_clienthellopayload(); - let enc = ch.get_encoding(); - println!("testing {:?} enc {:?}", ch, enc); - - for l in 0..enc.len() { - println!("len {:?} enc {:?}", l, &enc[..l]); - if l == 41 { - continue; // where extensions are empty - } - assert!(ClientHelloPayload::read_bytes(&enc[..l]).is_none()); - } -} - -#[test] -fn test_truncated_client_extension_is_detected() { - let chp = get_sample_clienthellopayload(); - - for ext in &chp.extensions { - let mut enc = ext.get_encoding(); - println!("testing {:?} enc {:?}", ext, enc); - - // "outer" truncation, i.e., where the extension-level length is longer than - // the input - for l in 0..enc.len() { - assert!(ClientExtension::read_bytes(&enc[..l]).is_none()); - } - - // these extension types don't have any internal encoding that rustls validates: - match ext.get_type() { - ExtensionType::TransportParameters | ExtensionType::Unknown(_) => { - continue; - } - _ => {} - }; - - // "inner" truncation, where the extension-level length agrees with the input - // length, but isn't long enough for the type of extension - for l in 0..(enc.len() - 4) { - put_u16(l as u16, &mut enc[2..]); - println!(" encoding {:?} len {:?}", enc, l); - assert!(ClientExtension::read_bytes(&enc).is_none()); - } - } -} - -fn test_client_extension_getter(typ: ExtensionType, getter: fn(&ClientHelloPayload) -> bool) { - let mut chp = get_sample_clienthellopayload(); - let ext = chp.find_extension(typ).unwrap().clone(); - - chp.extensions = vec![]; - assert!(!getter(&chp)); - - chp.extensions = vec![ext]; - assert!(getter(&chp)); - - chp.extensions = vec![ClientExtension::Unknown(UnknownExtension { - typ, - payload: Payload(vec![]), - })]; - assert!(!getter(&chp)); -} - -#[test] -fn client_get_sni_extension() { - test_client_extension_getter(ExtensionType::ServerName, |chp| { - chp.get_sni_extension().is_some() - }); -} - -#[test] -fn client_get_sigalgs_extension() { - test_client_extension_getter(ExtensionType::SignatureAlgorithms, |chp| { - chp.get_sigalgs_extension().is_some() - }); -} - -#[test] -fn client_get_namedgroups_extension() { - test_client_extension_getter(ExtensionType::EllipticCurves, |chp| { - chp.get_namedgroups_extension() - .is_some() - }); -} - -#[test] -fn client_get_ecpoints_extension() { - test_client_extension_getter(ExtensionType::ECPointFormats, |chp| { - chp.get_ecpoints_extension().is_some() - }); -} - -#[test] -fn client_get_alpn_extension() { - test_client_extension_getter(ExtensionType::ALProtocolNegotiation, |chp| { - chp.get_alpn_extension().is_some() - }); -} - -#[test] -fn client_get_quic_params_extension() { - test_client_extension_getter(ExtensionType::TransportParameters, |chp| { - chp.get_quic_params_extension() - .is_some() - }); -} - -#[test] -fn client_get_versions_extension() { - test_client_extension_getter(ExtensionType::SupportedVersions, |chp| { - chp.get_versions_extension().is_some() - }); -} - -#[test] -fn client_get_keyshare_extension() { - test_client_extension_getter(ExtensionType::KeyShare, |chp| { - chp.get_keyshare_extension().is_some() - }); -} - -#[test] -fn client_get_psk() { - test_client_extension_getter(ExtensionType::PreSharedKey, |chp| chp.get_psk().is_some()); -} - -#[test] -fn client_get_psk_modes() { - test_client_extension_getter(ExtensionType::PSKKeyExchangeModes, |chp| { - chp.get_psk_modes().is_some() - }); -} - -#[test] -fn test_truncated_helloretry_extension_is_detected() { - let hrr = get_sample_helloretryrequest(); - - for ext in &hrr.extensions { - let mut enc = ext.get_encoding(); - println!("testing {:?} enc {:?}", ext, enc); - - // "outer" truncation, i.e., where the extension-level length is longer than - // the input - for l in 0..enc.len() { - assert!(HelloRetryExtension::read_bytes(&enc[..l]).is_none()); - } - - // these extension types don't have any internal encoding that rustls validates: - if let ExtensionType::Unknown(_) = ext.get_type() { - continue; - } - - // "inner" truncation, where the extension-level length agrees with the input - // length, but isn't long enough for the type of extension - for l in 0..(enc.len() - 4) { - put_u16(l as u16, &mut enc[2..]); - println!(" encoding {:?} len {:?}", enc, l); - assert!(HelloRetryExtension::read_bytes(&enc).is_none()); - } - } -} - -fn test_helloretry_extension_getter(typ: ExtensionType, getter: fn(&HelloRetryRequest) -> bool) { - let mut hrr = get_sample_helloretryrequest(); - let mut exts = std::mem::take(&mut hrr.extensions); - exts.retain(|ext| ext.get_type() == typ); - - assert!(!getter(&hrr)); - - hrr.extensions = exts; - assert!(getter(&hrr)); - - hrr.extensions = vec![HelloRetryExtension::Unknown(UnknownExtension { - typ, - payload: Payload(vec![]), - })]; - assert!(!getter(&hrr)); -} - -#[test] -fn helloretry_get_requested_key_share_group() { - test_helloretry_extension_getter(ExtensionType::KeyShare, |hrr| { - hrr.get_requested_key_share_group() - .is_some() - }); -} - -#[test] -fn helloretry_get_cookie() { - test_helloretry_extension_getter(ExtensionType::Cookie, |hrr| hrr.get_cookie().is_some()); -} - -#[test] -fn helloretry_get_supported_versions() { - test_helloretry_extension_getter(ExtensionType::SupportedVersions, |hrr| { - hrr.get_supported_versions().is_some() - }); -} - -#[test] -fn test_truncated_server_extension_is_detected() { - let shp = get_sample_serverhellopayload(); - - for ext in &shp.extensions { - let mut enc = ext.get_encoding(); - println!("testing {:?} enc {:?}", ext, enc); - - // "outer" truncation, i.e., where the extension-level length is longer than - // the input - for l in 0..enc.len() { - assert!(ServerExtension::read_bytes(&enc[..l]).is_none()); - } - - // these extension types don't have any internal encoding that rustls validates: - match ext.get_type() { - ExtensionType::TransportParameters | ExtensionType::Unknown(_) => { - continue; - } - _ => {} - }; - - // "inner" truncation, where the extension-level length agrees with the input - // length, but isn't long enough for the type of extension - for l in 0..(enc.len() - 4) { - put_u16(l as u16, &mut enc[2..]); - println!(" encoding {:?} len {:?}", enc, l); - assert!(ServerExtension::read_bytes(&enc).is_none()); - } - } -} - -fn test_server_extension_getter(typ: ExtensionType, getter: fn(&ServerHelloPayload) -> bool) { - let mut shp = get_sample_serverhellopayload(); - let ext = shp.find_extension(typ).unwrap().clone(); - - shp.extensions = vec![]; - assert!(!getter(&shp)); - - shp.extensions = vec![ext]; - assert!(getter(&shp)); - - shp.extensions = vec![ServerExtension::Unknown(UnknownExtension { - typ, - payload: Payload(vec![]), - })]; - assert!(!getter(&shp)); -} - -#[test] -fn server_get_key_share() { - test_server_extension_getter(ExtensionType::KeyShare, |shp| shp.get_key_share().is_some()); -} - -#[test] -fn server_get_psk_index() { - test_server_extension_getter(ExtensionType::PreSharedKey, |shp| { - shp.get_psk_index().is_some() - }); -} - -#[test] -fn server_get_ecpoints_extension() { - test_server_extension_getter(ExtensionType::ECPointFormats, |shp| { - shp.get_ecpoints_extension().is_some() - }); -} - -#[test] -fn server_get_sct_list() { - test_server_extension_getter(ExtensionType::SCT, |shp| shp.get_sct_list().is_some()); -} - -#[test] -fn server_get_supported_versions() { - test_server_extension_getter(ExtensionType::SupportedVersions, |shp| { - shp.get_supported_versions().is_some() - }); -} - -fn test_cert_extension_getter(typ: ExtensionType, getter: fn(&CertificateEntry) -> bool) { - let mut ce = get_sample_certificatepayloadtls13() - .entries - .remove(0); - let mut exts = std::mem::take(&mut ce.exts); - exts.retain(|ext| ext.get_type() == typ); - - assert!(!getter(&ce)); - - ce.exts = exts; - assert!(getter(&ce)); - - ce.exts = vec![CertificateExtension::Unknown(UnknownExtension { - typ, - payload: Payload(vec![]), - })]; - assert!(!getter(&ce)); -} - -#[test] -fn certentry_get_ocsp_response() { - test_cert_extension_getter(ExtensionType::StatusRequest, |ce| { - ce.get_ocsp_response().is_some() - }); -} - -#[test] -fn certentry_get_scts() { - test_cert_extension_getter(ExtensionType::SCT, |ce| ce.get_scts().is_some()); -} - -fn get_sample_serverhellopayload() -> ServerHelloPayload { - ServerHelloPayload { - legacy_version: ProtocolVersion::TLSv1_2, - random: Random::from([0; 32]), - session_id: SessionID::empty(), - cipher_suite: CipherSuite::TLS_NULL_WITH_NULL_NULL, - compression_method: Compression::Null, - extensions: vec![ - ServerExtension::ECPointFormats(ECPointFormatList::supported()), - ServerExtension::ServerNameAck, - ServerExtension::SessionTicketAck, - ServerExtension::RenegotiationInfo(PayloadU8(vec![0])), - ServerExtension::Protocols(vec![PayloadU8(vec![0])]), - ServerExtension::KeyShare(KeyShareEntry::new(NamedGroup::X25519, &[1, 2, 3])), - ServerExtension::PresharedKey(3), - ServerExtension::ExtendedMasterSecretAck, - ServerExtension::CertificateStatusAck, - ServerExtension::SignedCertificateTimestamp(vec![PayloadU16(vec![0])]), - ServerExtension::SupportedVersions(ProtocolVersion::TLSv1_2), - ServerExtension::TransportParameters(vec![1, 2, 3]), - ServerExtension::Unknown(UnknownExtension { - typ: ExtensionType::Unknown(12345), - payload: Payload(vec![1, 2, 3]), - }), - ], - } -} - -#[test] -fn can_print_all_serverextensions() { - println!("server hello {:?}", get_sample_serverhellopayload()); -} - -#[test] -fn can_clone_all_serverextensions() { - let _ = get_sample_serverhellopayload().extensions; -} - -fn get_sample_helloretryrequest() -> HelloRetryRequest { - HelloRetryRequest { - legacy_version: ProtocolVersion::TLSv1_2, - session_id: SessionID::empty(), - cipher_suite: CipherSuite::TLS_NULL_WITH_NULL_NULL, - extensions: vec![ - HelloRetryExtension::KeyShare(NamedGroup::X25519), - HelloRetryExtension::Cookie(PayloadU16(vec![0])), - HelloRetryExtension::SupportedVersions(ProtocolVersion::TLSv1_2), - HelloRetryExtension::Unknown(UnknownExtension { - typ: ExtensionType::Unknown(12345), - payload: Payload(vec![1, 2, 3]), - }), - ], - } -} - -fn get_sample_certificatepayloadtls13() -> CertificatePayloadTLS13 { - CertificatePayloadTLS13 { - context: PayloadU8(vec![1, 2, 3]), - entries: vec![CertificateEntry { - cert: Certificate(vec![3, 4, 5]), - exts: vec![ - CertificateExtension::CertificateStatus(CertificateStatus { - ocsp_response: PayloadU24(vec![1, 2, 3]), - }), - CertificateExtension::SignedCertificateTimestamp(vec![PayloadU16(vec![0])]), - CertificateExtension::Unknown(UnknownExtension { - typ: ExtensionType::Unknown(12345), - payload: Payload(vec![1, 2, 3]), - }), - ], - }], - } -} - -fn get_sample_serverkeyexchangepayload_ecdhe() -> ServerKeyExchangePayload { - ServerKeyExchangePayload::ECDHE(ECDHEServerKeyExchange { - params: ServerECDHParams { - curve_params: ECParameters { - curve_type: ECCurveType::NamedCurve, - named_group: NamedGroup::X25519, - }, - public: PayloadU8(vec![1, 2, 3]), - }, - dss: DigitallySignedStruct::new(SignatureScheme::RSA_PSS_SHA256, vec![1, 2, 3]), - }) -} - -fn get_sample_serverkeyexchangepayload_unknown() -> ServerKeyExchangePayload { - ServerKeyExchangePayload::Unknown(Payload(vec![1, 2, 3])) -} - -fn get_sample_certificaterequestpayload() -> CertificateRequestPayload { - CertificateRequestPayload { - certtypes: vec![ClientCertificateType::RSASign], - sigschemes: vec![SignatureScheme::ECDSA_NISTP256_SHA256], - canames: vec![PayloadU16(vec![1, 2, 3])], - } -} - -fn get_sample_certificaterequestpayloadtls13() -> CertificateRequestPayloadTLS13 { - CertificateRequestPayloadTLS13 { - context: PayloadU8(vec![1, 2, 3]), - extensions: vec![ - CertReqExtension::SignatureAlgorithms(vec![SignatureScheme::ECDSA_NISTP256_SHA256]), - CertReqExtension::AuthorityNames(vec![PayloadU16(vec![1, 2, 3])]), - CertReqExtension::Unknown(UnknownExtension { - typ: ExtensionType::Unknown(12345), - payload: Payload(vec![1, 2, 3]), - }), - ], - } -} - -fn get_sample_newsessionticketpayload() -> NewSessionTicketPayload { - NewSessionTicketPayload { - lifetime_hint: 1234, - ticket: PayloadU16(vec![1, 2, 3]), - } -} - -fn get_sample_newsessionticketpayloadtls13() -> NewSessionTicketPayloadTLS13 { - NewSessionTicketPayloadTLS13 { - lifetime: 123, - age_add: 1234, - nonce: PayloadU8(vec![1, 2, 3]), - ticket: PayloadU16(vec![4, 5, 6]), - exts: vec![NewSessionTicketExtension::Unknown(UnknownExtension { - typ: ExtensionType::Unknown(12345), - payload: Payload(vec![1, 2, 3]), - })], - } -} - -fn get_sample_encryptedextensions() -> EncryptedExtensions { - get_sample_serverhellopayload().extensions -} - -fn get_sample_certificatestatus() -> CertificateStatus { - CertificateStatus { - ocsp_response: PayloadU24(vec![1, 2, 3]), - } -} - -fn get_all_tls12_handshake_payloads() -> Vec { - vec![ - HandshakeMessagePayload { - typ: HandshakeType::HelloRequest, - payload: HandshakePayload::HelloRequest, - }, - HandshakeMessagePayload { - typ: HandshakeType::ClientHello, - payload: HandshakePayload::ClientHello(get_sample_clienthellopayload()), - }, - HandshakeMessagePayload { - typ: HandshakeType::ServerHello, - payload: HandshakePayload::ServerHello(get_sample_serverhellopayload()), - }, - HandshakeMessagePayload { - typ: HandshakeType::HelloRetryRequest, - payload: HandshakePayload::HelloRetryRequest(get_sample_helloretryrequest()), - }, - HandshakeMessagePayload { - typ: HandshakeType::Certificate, - payload: HandshakePayload::Certificate(vec![Certificate(vec![1, 2, 3])]), - }, - HandshakeMessagePayload { - typ: HandshakeType::ServerKeyExchange, - payload: HandshakePayload::ServerKeyExchange( - get_sample_serverkeyexchangepayload_ecdhe(), - ), - }, - HandshakeMessagePayload { - typ: HandshakeType::ServerKeyExchange, - payload: HandshakePayload::ServerKeyExchange( - get_sample_serverkeyexchangepayload_unknown(), - ), - }, - HandshakeMessagePayload { - typ: HandshakeType::CertificateRequest, - payload: HandshakePayload::CertificateRequest(get_sample_certificaterequestpayload()), - }, - HandshakeMessagePayload { - typ: HandshakeType::ServerHelloDone, - payload: HandshakePayload::ServerHelloDone, - }, - HandshakeMessagePayload { - typ: HandshakeType::ClientKeyExchange, - payload: HandshakePayload::ClientKeyExchange(Payload(vec![1, 2, 3])), - }, - HandshakeMessagePayload { - typ: HandshakeType::NewSessionTicket, - payload: HandshakePayload::NewSessionTicket(get_sample_newsessionticketpayload()), - }, - HandshakeMessagePayload { - typ: HandshakeType::EncryptedExtensions, - payload: HandshakePayload::EncryptedExtensions(get_sample_encryptedextensions()), - }, - HandshakeMessagePayload { - typ: HandshakeType::KeyUpdate, - payload: HandshakePayload::KeyUpdate(KeyUpdateRequest::UpdateRequested), - }, - HandshakeMessagePayload { - typ: HandshakeType::KeyUpdate, - payload: HandshakePayload::KeyUpdate(KeyUpdateRequest::UpdateNotRequested), - }, - HandshakeMessagePayload { - typ: HandshakeType::Finished, - payload: HandshakePayload::Finished(Payload(vec![1, 2, 3])), - }, - HandshakeMessagePayload { - typ: HandshakeType::CertificateStatus, - payload: HandshakePayload::CertificateStatus(get_sample_certificatestatus()), - }, - HandshakeMessagePayload { - typ: HandshakeType::Unknown(99), - payload: HandshakePayload::Unknown(Payload(vec![1, 2, 3])), - }, - ] -} - -#[test] -fn can_roundtrip_all_tls12_handshake_payloads() { - for ref hm in get_all_tls12_handshake_payloads().iter() { - println!("{:?}", hm.typ); - let bytes = hm.get_encoding(); - let mut rd = Reader::init(&bytes); - let other = HandshakeMessagePayload::read(&mut rd).unwrap(); - assert!(!rd.any_left()); - assert_eq!(hm.get_encoding(), other.get_encoding()); - - println!("{:?}", hm); - println!("{:?}", other); - } -} - -#[test] -fn can_detect_truncation_of_all_tls12_handshake_payloads() { - for hm in get_all_tls12_handshake_payloads().iter() { - let mut enc = hm.get_encoding(); - println!("test {:?} enc {:?}", hm, enc); - - // outer truncation - for l in 0..enc.len() { - assert!(HandshakeMessagePayload::read_bytes(&enc[..l]).is_none()) - } - - // inner truncation - for l in 0..enc.len() - 4 { - put_u24(l as u32, &mut enc[1..]); - println!(" check len {:?} enc {:?}", l, enc); - - match (hm.typ, l) { - (HandshakeType::ClientHello, 41) - | (HandshakeType::ServerHello, 38) - | (HandshakeType::ServerKeyExchange, _) - | (HandshakeType::ClientKeyExchange, _) - | (HandshakeType::Finished, _) - | (HandshakeType::Unknown(_), _) => continue, - _ => {} - }; - - assert!(HandshakeMessagePayload::read_version( - &mut Reader::init(&enc), - ProtocolVersion::TLSv1_2 - ) - .is_none()); - assert!(HandshakeMessagePayload::read_bytes(&enc).is_none()); - } - } -} - -fn get_all_tls13_handshake_payloads() -> Vec { - vec![ - HandshakeMessagePayload { - typ: HandshakeType::HelloRequest, - payload: HandshakePayload::HelloRequest, - }, - HandshakeMessagePayload { - typ: HandshakeType::ClientHello, - payload: HandshakePayload::ClientHello(get_sample_clienthellopayload()), - }, - HandshakeMessagePayload { - typ: HandshakeType::ServerHello, - payload: HandshakePayload::ServerHello(get_sample_serverhellopayload()), - }, - HandshakeMessagePayload { - typ: HandshakeType::HelloRetryRequest, - payload: HandshakePayload::HelloRetryRequest(get_sample_helloretryrequest()), - }, - HandshakeMessagePayload { - typ: HandshakeType::Certificate, - payload: HandshakePayload::CertificateTLS13(get_sample_certificatepayloadtls13()), - }, - HandshakeMessagePayload { - typ: HandshakeType::ServerKeyExchange, - payload: HandshakePayload::ServerKeyExchange( - get_sample_serverkeyexchangepayload_ecdhe(), - ), - }, - HandshakeMessagePayload { - typ: HandshakeType::ServerKeyExchange, - payload: HandshakePayload::ServerKeyExchange( - get_sample_serverkeyexchangepayload_unknown(), - ), - }, - HandshakeMessagePayload { - typ: HandshakeType::CertificateRequest, - payload: HandshakePayload::CertificateRequestTLS13( - get_sample_certificaterequestpayloadtls13(), - ), - }, - HandshakeMessagePayload { - typ: HandshakeType::CertificateVerify, - payload: HandshakePayload::CertificateVerify(DigitallySignedStruct::new( - SignatureScheme::ECDSA_NISTP256_SHA256, - vec![1, 2, 3], - )), - }, - HandshakeMessagePayload { - typ: HandshakeType::ServerHelloDone, - payload: HandshakePayload::ServerHelloDone, - }, - HandshakeMessagePayload { - typ: HandshakeType::ClientKeyExchange, - payload: HandshakePayload::ClientKeyExchange(Payload(vec![1, 2, 3])), - }, - HandshakeMessagePayload { - typ: HandshakeType::NewSessionTicket, - payload: HandshakePayload::NewSessionTicketTLS13( - get_sample_newsessionticketpayloadtls13(), - ), - }, - HandshakeMessagePayload { - typ: HandshakeType::EncryptedExtensions, - payload: HandshakePayload::EncryptedExtensions(get_sample_encryptedextensions()), - }, - HandshakeMessagePayload { - typ: HandshakeType::KeyUpdate, - payload: HandshakePayload::KeyUpdate(KeyUpdateRequest::UpdateRequested), - }, - HandshakeMessagePayload { - typ: HandshakeType::KeyUpdate, - payload: HandshakePayload::KeyUpdate(KeyUpdateRequest::UpdateNotRequested), - }, - HandshakeMessagePayload { - typ: HandshakeType::Finished, - payload: HandshakePayload::Finished(Payload(vec![1, 2, 3])), - }, - HandshakeMessagePayload { - typ: HandshakeType::CertificateStatus, - payload: HandshakePayload::CertificateStatus(get_sample_certificatestatus()), - }, - HandshakeMessagePayload { - typ: HandshakeType::Unknown(99), - payload: HandshakePayload::Unknown(Payload(vec![1, 2, 3])), - }, - ] -} - -#[test] -fn can_roundtrip_all_tls13_handshake_payloads() { - for ref hm in get_all_tls13_handshake_payloads().iter() { - println!("{:?}", hm.typ); - let bytes = hm.get_encoding(); - let mut rd = Reader::init(&bytes); - - let other = - HandshakeMessagePayload::read_version(&mut rd, ProtocolVersion::TLSv1_3).unwrap(); - assert!(!rd.any_left()); - assert_eq!(hm.get_encoding(), other.get_encoding()); - - println!("{:?}", hm); - println!("{:?}", other); - } -} - -fn put_u24(u: u32, b: &mut [u8]) { - b[0] = (u >> 16) as u8; - b[1] = (u >> 8) as u8; - b[2] = u as u8; -} - -#[test] -fn can_detect_truncation_of_all_tls13_handshake_payloads() { - for hm in get_all_tls13_handshake_payloads().iter() { - let mut enc = hm.get_encoding(); - println!("test {:?} enc {:?}", hm, enc); - - // outer truncation - for l in 0..enc.len() { - assert!(HandshakeMessagePayload::read_bytes(&enc[..l]).is_none()) - } - - // inner truncation - for l in 0..enc.len() - 4 { - put_u24(l as u32, &mut enc[1..]); - println!(" check len {:?} enc {:?}", l, enc); - - match (hm.typ, l) { - (HandshakeType::ClientHello, 41) - | (HandshakeType::ServerHello, 38) - | (HandshakeType::ServerKeyExchange, _) - | (HandshakeType::ClientKeyExchange, _) - | (HandshakeType::Finished, _) - | (HandshakeType::Unknown(_), _) => continue, - _ => {} - }; - - assert!(HandshakeMessagePayload::read_version( - &mut Reader::init(&enc), - ProtocolVersion::TLSv1_3 - ) - .is_none()); - } - } -} - -#[test] -fn cannot_read_messagehash_from_network() { - let mh = HandshakeMessagePayload { - typ: HandshakeType::MessageHash, - payload: HandshakePayload::MessageHash(Payload::new(vec![1, 2, 3])), - }; - println!("mh {:?}", mh); - let enc = mh.get_encoding(); - assert!(HandshakeMessagePayload::read_bytes(&enc).is_none()); -} - -#[test] -fn cannot_decode_huge_certificate() { - let mut buf = [0u8; 65 * 1024]; - // exactly 64KB decodes fine - buf[0] = 0x0b; - buf[1] = 0x01; - buf[2] = 0x00; - buf[3] = 0x03; - buf[4] = 0x01; - buf[5] = 0x00; - buf[6] = 0x00; - buf[7] = 0x00; - buf[8] = 0xff; - buf[9] = 0xfd; - HandshakeMessagePayload::read_bytes(&buf).unwrap(); - - // however 64KB + 1 byte does not - buf[1] = 0x01; - buf[2] = 0x00; - buf[3] = 0x04; - buf[4] = 0x01; - buf[5] = 0x00; - buf[6] = 0x01; - assert!(HandshakeMessagePayload::read_bytes(&buf).is_none()); -} - -#[test] -fn can_decode_server_hello_from_api_devicecheck_apple_com() { - let data = include_bytes!("hello-api.devicecheck.apple.com.bin"); - let mut r = Reader::init(data); - let hm = HandshakeMessagePayload::read(&mut r).unwrap(); - println!("msg: {:?}", hm); -} Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/hello-api.devicecheck.apple.com.bin and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/hello-api.devicecheck.apple.com.bin differ diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/hsjoiner.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/hsjoiner.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/hsjoiner.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/hsjoiner.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,281 +0,0 @@ -use std::collections::VecDeque; - -use crate::enums::ProtocolVersion; -use crate::msgs::base::Payload; -use crate::msgs::codec; -use crate::msgs::enums::ContentType; -use crate::msgs::handshake::HandshakeMessagePayload; -use crate::msgs::message::{Message, MessagePayload, PlainMessage}; - -const HEADER_SIZE: usize = 1 + 3; - -/// TLS allows for handshake messages of up to 16MB. We -/// restrict that to 64KB to limit potential for denial-of- -/// service. -const MAX_HANDSHAKE_SIZE: u32 = 0xffff; - -/// This works to reconstruct TLS handshake messages -/// from individual TLS messages. It's guaranteed that -/// TLS messages output from this layer contain precisely -/// one handshake payload. -pub struct HandshakeJoiner { - /// The message payload(s) we're currently accumulating. - buf: Vec, - - /// Sizes of messages currently in the buffer. - /// - /// The buffer can be larger than the sum of the sizes in this queue, because it might contain - /// the start of a message that hasn't fully been received yet as its suffix. - sizes: VecDeque, - - /// Version of the protocol we're currently parsing. - version: ProtocolVersion, -} - -impl HandshakeJoiner { - /// Make a new HandshakeJoiner. - pub fn new() -> Self { - Self { - buf: Vec::new(), - sizes: VecDeque::new(), - version: ProtocolVersion::TLSv1_2, - } - } - - /// Take the message, and join/split it as needed. - /// - /// Returns `Err(JoinerError::Unwanted(msg))` if `msg`'s type is not `ContentType::Handshake` or - /// `JoinerError::Decode` if a received payload has an advertised size larger than we accept. - /// - /// Otherwise, yields a `bool` to indicate whether the handshake is "aligned": if the buffer currently - /// only contains complete payloads (that is, no incomplete message in the suffix). - pub fn push(&mut self, msg: PlainMessage) -> Result { - if msg.typ != ContentType::Handshake { - return Err(JoinerError::Unwanted(msg)); - } - - // The vast majority of the time `self.buf` will be empty since most - // handshake messages arrive in a single fragment. Avoid allocating and - // copying in that common case. - if self.buf.is_empty() { - self.buf = msg.payload.0; - } else { - self.buf - .extend_from_slice(&msg.payload.0[..]); - } - - if msg.version == ProtocolVersion::TLSv1_3 { - self.version = msg.version; - } - - // Check the suffix of the buffer that hasn't been covered by `sizes` so far - // for complete messages. If we find any, update `self.sizes` and `complete`. - let mut complete = self.sizes.iter().copied().sum(); - while let Some(size) = payload_size(&self.buf[complete..])? { - self.sizes.push_back(size); - complete += size; - } - - // Use the value of `complete` to determine if the buffer currently contains any - // incomplete messages. If not, an incoming message is said to be "aligned". - Ok(complete == self.buf.len()) - } - - /// Parse the first received message out of the buffer. - /// - /// Returns `Ok(None)` if we don't have a complete message in the buffer, or `Err` if we - /// fail to parse the first message in the buffer. - pub fn pop(&mut self) -> Result, JoinerError> { - let len = match self.sizes.pop_front() { - Some(len) => len, - None => return Ok(None), - }; - - // Parse the first part of the buffer as a handshake buffer. - // If we get `None` back, we've failed to parse the message. - // If we succeed, drain the relevant bytes from the buffer. - - let buf = &self.buf[..len]; - let mut rd = codec::Reader::init(buf); - let parsed = match HandshakeMessagePayload::read_version(&mut rd, self.version) { - Some(p) => p, - None => return Err(JoinerError::Decode), - }; - - let message = Message { - version: self.version, - payload: MessagePayload::Handshake { - parsed, - encoded: Payload::new(buf), - }, - }; - - self.buf.drain(..len); - Ok(Some(message)) - } -} - -/// Does `buf` contain a full handshake payload? -/// -/// Returns `Ok(Some(_))` with the length of the payload (including header) if it does, -/// `Ok(None)` if the buffer is too small to contain a message with the length advertised in the -/// header, or `Err` if the advertised length is larger than what we want to accept -/// (`MAX_HANDSHAKE_SIZE`). -fn payload_size(buf: &[u8]) -> Result, JoinerError> { - if buf.len() < HEADER_SIZE { - return Ok(None); - } - - let (header, rest) = buf.split_at(HEADER_SIZE); - match codec::u24::decode(&header[1..]) { - Some(len) if len.0 > MAX_HANDSHAKE_SIZE => Err(JoinerError::Decode), - Some(len) if rest.get(..len.into()).is_some() => Ok(Some(HEADER_SIZE + usize::from(len))), - _ => Ok(None), - } -} - -#[derive(Debug)] -pub enum JoinerError { - Unwanted(PlainMessage), - Decode, -} - -#[cfg(test)] -mod tests { - use super::HandshakeJoiner; - use crate::enums::ProtocolVersion; - use crate::msgs::base::Payload; - use crate::msgs::codec::Codec; - use crate::msgs::enums::{ContentType, HandshakeType}; - use crate::msgs::handshake::{HandshakeMessagePayload, HandshakePayload}; - use crate::msgs::message::{Message, MessagePayload, PlainMessage}; - - #[test] - fn want() { - let mut hj = HandshakeJoiner::new(); - let wanted = PlainMessage { - typ: ContentType::Handshake, - version: ProtocolVersion::TLSv1_2, - payload: Payload::new(b"\x00\x00\x00\x00".to_vec()), - }; - - let unwanted = PlainMessage { - typ: ContentType::Alert, - version: ProtocolVersion::TLSv1_2, - payload: Payload::new(b"ponytown".to_vec()), - }; - - hj.push(wanted).unwrap(); - hj.push(unwanted).unwrap_err(); - } - - fn pop_eq(expect: &PlainMessage, hj: &mut HandshakeJoiner) { - let got = hj.pop().unwrap().unwrap(); - assert_eq!(got.payload.content_type(), expect.typ); - assert_eq!(got.version, expect.version); - - let (mut left, mut right) = (Vec::new(), Vec::new()); - got.payload.encode(&mut left); - expect.payload.encode(&mut right); - - assert_eq!(left, right); - } - - #[test] - fn split() { - // Check we split two handshake messages within one PDU. - let mut hj = HandshakeJoiner::new(); - - // two HelloRequests - assert!(hj - .push(PlainMessage { - typ: ContentType::Handshake, - version: ProtocolVersion::TLSv1_2, - payload: Payload::new(b"\x00\x00\x00\x00\x00\x00\x00\x00".to_vec()), - }) - .unwrap()); - - let expect = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::HelloRequest, - payload: HandshakePayload::HelloRequest, - }), - } - .into(); - - pop_eq(&expect, &mut hj); - pop_eq(&expect, &mut hj); - } - - #[test] - fn broken() { - // Check obvious crap payloads are reported as errors, not panics. - let mut hj = HandshakeJoiner::new(); - - // short ClientHello - hj.push(PlainMessage { - typ: ContentType::Handshake, - version: ProtocolVersion::TLSv1_2, - payload: Payload::new(b"\x01\x00\x00\x02\xff\xff".to_vec()), - }) - .unwrap(); - - hj.pop().unwrap_err(); - } - - #[test] - fn join() { - // Check we join one handshake message split over two PDUs. - let mut hj = HandshakeJoiner::new(); - - // Introduce Finished of 16 bytes, providing 4. - hj.push(PlainMessage { - typ: ContentType::Handshake, - version: ProtocolVersion::TLSv1_2, - payload: Payload::new(b"\x14\x00\x00\x10\x00\x01\x02\x03\x04".to_vec()), - }) - .unwrap(); - - // 11 more bytes. - assert!(!hj - .push(PlainMessage { - typ: ContentType::Handshake, - version: ProtocolVersion::TLSv1_2, - payload: Payload::new(b"\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e".to_vec()), - }) - .unwrap()); - - // Final 1 byte. - assert!(hj - .push(PlainMessage { - typ: ContentType::Handshake, - version: ProtocolVersion::TLSv1_2, - payload: Payload::new(b"\x0f".to_vec()), - }) - .unwrap()); - - let payload = b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f".to_vec(); - let expect = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::Finished, - payload: HandshakePayload::Finished(Payload::new(payload)), - }), - } - .into(); - - pop_eq(&expect, &mut hj); - } - - #[test] - fn test_rejects_giant_certs() { - let mut hj = HandshakeJoiner::new(); - hj.push(PlainMessage { - typ: ContentType::Handshake, - version: ProtocolVersion::TLSv1_2, - payload: Payload::new(b"\x0b\x01\x00\x04\x01\x00\x01\x00\xff\xfe".to_vec()), - }) - .unwrap_err(); - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/macros.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/macros.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/macros.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/macros.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ -/// A macro which defines an enum type. -macro_rules! enum_builder { - ( - $(#[$comment:meta])* - @U8 - EnumName: $enum_name: ident; - EnumVal { $( $enum_var: ident => $enum_val: expr ),* } - ) => { - $(#[$comment])* - #[derive(Debug, PartialEq, Eq, Clone, Copy)] - pub enum $enum_name { - $( $enum_var),* - ,Unknown(u8) - } - impl $enum_name { - pub fn get_u8(&self) -> u8 { - let x = self.clone(); - match x { - $( $enum_name::$enum_var => $enum_val),* - ,$enum_name::Unknown(x) => x - } - } - } - impl Codec for $enum_name { - fn encode(&self, bytes: &mut Vec) { - self.get_u8().encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - u8::read(r).map($enum_name::from) - } - } - impl From for $enum_name { - fn from(x: u8) -> Self { - match x { - $($enum_val => $enum_name::$enum_var),* - , x => $enum_name::Unknown(x), - } - } - } - }; - ( - $(#[$comment:meta])* - @U16 - EnumName: $enum_name: ident; - EnumVal { $( $enum_var: ident => $enum_val: expr ),* } - ) => { - $(#[$comment])* - #[derive(Debug, PartialEq, Eq, Clone, Copy)] - pub enum $enum_name { - $( $enum_var),* - ,Unknown(u16) - } - impl $enum_name { - pub fn get_u16(&self) -> u16 { - let x = self.clone(); - match x { - $( $enum_name::$enum_var => $enum_val),* - ,$enum_name::Unknown(x) => x - } - } - - pub fn as_str(&self) -> Option<&'static str> { - match self { - $( $enum_name::$enum_var => Some(stringify!($enum_var))),* - ,$enum_name::Unknown(_) => None, - } - } - } - impl Codec for $enum_name { - fn encode(&self, bytes: &mut Vec) { - self.get_u16().encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - u16::read(r).map($enum_name::from) - } - } - impl From for $enum_name { - fn from(x: u16) -> Self { - match x { - $($enum_val => $enum_name::$enum_var),* - , x => $enum_name::Unknown(x), - } - } - } - }; -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/message.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/message.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/message.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/message.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,292 +0,0 @@ -use crate::enums::ProtocolVersion; -use crate::error::Error; -use crate::msgs::alert::AlertMessagePayload; -use crate::msgs::base::Payload; -use crate::msgs::ccs::ChangeCipherSpecPayload; -use crate::msgs::codec::{Codec, Reader}; -use crate::msgs::enums::{AlertDescription, AlertLevel, ContentType, HandshakeType}; -use crate::msgs::handshake::HandshakeMessagePayload; - -use std::convert::TryFrom; - -#[derive(Debug)] -pub enum MessagePayload { - Alert(AlertMessagePayload), - Handshake { - parsed: HandshakeMessagePayload, - encoded: Payload, - }, - ChangeCipherSpec(ChangeCipherSpecPayload), - ApplicationData(Payload), -} - -impl MessagePayload { - pub fn encode(&self, bytes: &mut Vec) { - match self { - Self::Alert(x) => x.encode(bytes), - Self::Handshake { encoded, .. } => bytes.extend(&encoded.0), - Self::ChangeCipherSpec(x) => x.encode(bytes), - Self::ApplicationData(x) => x.encode(bytes), - } - } - - pub fn handshake(parsed: HandshakeMessagePayload) -> Self { - Self::Handshake { - encoded: Payload::new(parsed.get_encoding()), - parsed, - } - } - - pub fn new(typ: ContentType, vers: ProtocolVersion, payload: Payload) -> Result { - let mut r = Reader::init(&payload.0); - let parsed = match typ { - ContentType::ApplicationData => return Ok(Self::ApplicationData(payload)), - ContentType::Alert => AlertMessagePayload::read(&mut r) - .filter(|_| !r.any_left()) - .map(MessagePayload::Alert), - ContentType::Handshake => HandshakeMessagePayload::read_version(&mut r, vers) - .filter(|_| !r.any_left()) - .map(|parsed| Self::Handshake { - parsed, - encoded: payload, - }), - ContentType::ChangeCipherSpec => ChangeCipherSpecPayload::read(&mut r) - .filter(|_| !r.any_left()) - .map(MessagePayload::ChangeCipherSpec), - _ => None, - }; - - parsed.ok_or(Error::CorruptMessagePayload(typ)) - } - - pub fn content_type(&self) -> ContentType { - match self { - Self::Alert(_) => ContentType::Alert, - Self::Handshake { .. } => ContentType::Handshake, - Self::ChangeCipherSpec(_) => ContentType::ChangeCipherSpec, - Self::ApplicationData(_) => ContentType::ApplicationData, - } - } -} - -/// A TLS frame, named TLSPlaintext in the standard. -/// -/// This type owns all memory for its interior parts. It is used to read/write from/to I/O -/// buffers as well as for fragmenting, joining and encryption/decryption. It can be converted -/// into a `Message` by decoding the payload. -#[derive(Clone, Debug)] -pub struct OpaqueMessage { - pub typ: ContentType, - pub version: ProtocolVersion, - pub payload: Payload, -} - -impl OpaqueMessage { - /// `MessageError` allows callers to distinguish between valid prefixes (might - /// become valid if we read more data) and invalid data. - pub fn read(r: &mut Reader) -> Result { - let typ = ContentType::read(r).ok_or(MessageError::TooShortForHeader)?; - let version = ProtocolVersion::read(r).ok_or(MessageError::TooShortForHeader)?; - let len = u16::read(r).ok_or(MessageError::TooShortForHeader)?; - - // Reject undersize messages - // implemented per section 5.1 of RFC8446 (TLSv1.3) - // per section 6.2.1 of RFC5246 (TLSv1.2) - if typ != ContentType::ApplicationData && len == 0 { - return Err(MessageError::IllegalLength); - } - - // Reject oversize messages - if len >= Self::MAX_PAYLOAD { - return Err(MessageError::IllegalLength); - } - - // Don't accept any new content-types. - if let ContentType::Unknown(_) = typ { - return Err(MessageError::IllegalContentType); - } - - // Accept only versions 0x03XX for any XX. - match version { - ProtocolVersion::Unknown(ref v) if (v & 0xff00) != 0x0300 => { - return Err(MessageError::IllegalProtocolVersion); - } - _ => {} - }; - - let mut sub = r - .sub(len as usize) - .ok_or(MessageError::TooShortForLength)?; - let payload = Payload::read(&mut sub); - - Ok(Self { - typ, - version, - payload, - }) - } - - pub fn encode(self) -> Vec { - let mut buf = Vec::new(); - self.typ.encode(&mut buf); - self.version.encode(&mut buf); - (self.payload.0.len() as u16).encode(&mut buf); - self.payload.encode(&mut buf); - buf - } - - /// Force conversion into a plaintext message. - /// - /// This should only be used for messages that are known to be in plaintext. Otherwise, the - /// `OpaqueMessage` should be decrypted into a `PlainMessage` using a `MessageDecrypter`. - pub fn into_plain_message(self) -> PlainMessage { - PlainMessage { - version: self.version, - typ: self.typ, - payload: self.payload, - } - } - - /// This is the maximum on-the-wire size of a TLSCiphertext. - /// That's 2^14 payload bytes, a header, and a 2KB allowance - /// for ciphertext overheads. - const MAX_PAYLOAD: u16 = 16384 + 2048; - - /// Content type, version and size. - const HEADER_SIZE: u16 = 1 + 2 + 2; - - /// Maximum on-wire message size. - pub const MAX_WIRE_SIZE: usize = (Self::MAX_PAYLOAD + Self::HEADER_SIZE) as usize; -} - -impl From for PlainMessage { - fn from(msg: Message) -> Self { - let typ = msg.payload.content_type(); - let payload = match msg.payload { - MessagePayload::ApplicationData(payload) => payload, - _ => { - let mut buf = Vec::new(); - msg.payload.encode(&mut buf); - Payload(buf) - } - }; - - Self { - typ, - version: msg.version, - payload, - } - } -} - -/// A decrypted TLS frame -/// -/// This type owns all memory for its interior parts. It can be decrypted from an OpaqueMessage -/// or encrypted into an OpaqueMessage, and it is also used for joining and fragmenting. -#[derive(Clone, Debug)] -pub struct PlainMessage { - pub typ: ContentType, - pub version: ProtocolVersion, - pub payload: Payload, -} - -impl PlainMessage { - pub fn into_unencrypted_opaque(self) -> OpaqueMessage { - OpaqueMessage { - version: self.version, - typ: self.typ, - payload: self.payload, - } - } - - pub fn borrow(&self) -> BorrowedPlainMessage<'_> { - BorrowedPlainMessage { - version: self.version, - typ: self.typ, - payload: &self.payload.0, - } - } -} - -/// A message with decoded payload -#[derive(Debug)] -pub struct Message { - pub version: ProtocolVersion, - pub payload: MessagePayload, -} - -impl Message { - pub fn is_handshake_type(&self, hstyp: HandshakeType) -> bool { - // Bit of a layering violation, but OK. - if let MessagePayload::Handshake { parsed, .. } = &self.payload { - parsed.typ == hstyp - } else { - false - } - } - - pub fn build_alert(level: AlertLevel, desc: AlertDescription) -> Self { - Self { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::Alert(AlertMessagePayload { - level, - description: desc, - }), - } - } - - pub fn build_key_update_notify() -> Self { - Self { - version: ProtocolVersion::TLSv1_3, - payload: MessagePayload::handshake(HandshakeMessagePayload::build_key_update_notify()), - } - } -} - -/// Parses a plaintext message into a well-typed [`Message`]. -/// -/// A [`PlainMessage`] must contain plaintext content. Encrypted content should be stored in an -/// [`OpaqueMessage`] and decrypted before being stored into a [`PlainMessage`]. -impl TryFrom for Message { - type Error = Error; - - fn try_from(plain: PlainMessage) -> Result { - Ok(Self { - version: plain.version, - payload: MessagePayload::new(plain.typ, plain.version, plain.payload)?, - }) - } -} - -/// A TLS frame, named TLSPlaintext in the standard. -/// -/// This type differs from `OpaqueMessage` because it borrows -/// its payload. You can make a `OpaqueMessage` from an -/// `BorrowMessage`, but this involves a copy. -/// -/// This type also cannot decode its internals and -/// cannot be read/encoded; only `OpaqueMessage` can do that. -pub struct BorrowedPlainMessage<'a> { - pub typ: ContentType, - pub version: ProtocolVersion, - pub payload: &'a [u8], -} - -impl<'a> BorrowedPlainMessage<'a> { - pub fn to_unencrypted_opaque(&self) -> OpaqueMessage { - OpaqueMessage { - version: self.version, - typ: self.typ, - payload: Payload(self.payload.to_vec()), - } - } -} - -#[derive(Debug)] -pub enum MessageError { - TooShortForHeader, - TooShortForLength, - IllegalLength, - IllegalContentType, - IllegalProtocolVersion, -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/message_test.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/message_test.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/message_test.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/message_test.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,113 +0,0 @@ -use crate::msgs::base::{PayloadU16, PayloadU24, PayloadU8}; - -use super::base::Payload; -use super::codec::Reader; -use super::enums::{AlertDescription, AlertLevel, HandshakeType}; -use super::message::{Message, OpaqueMessage, PlainMessage}; - -use std::convert::TryFrom; -use std::fs; -use std::io::Read; -use std::path::{Path, PathBuf}; - -#[test] -fn test_read_fuzz_corpus() { - fn corpus_dir() -> PathBuf { - let from_subcrate = Path::new("../fuzz/corpus/message"); - let from_root = Path::new("fuzz/corpus/message"); - - if from_root.is_dir() { - from_root.to_path_buf() - } else { - from_subcrate.to_path_buf() - } - } - - for file in fs::read_dir(corpus_dir()).unwrap() { - let mut f = fs::File::open(file.unwrap().path()).unwrap(); - let mut bytes = Vec::new(); - f.read_to_end(&mut bytes).unwrap(); - - let mut rd = Reader::init(&bytes); - let msg = OpaqueMessage::read(&mut rd) - .unwrap() - .into_plain_message(); - println!("{:?}", msg); - - let msg = match Message::try_from(msg) { - Ok(msg) => msg, - Err(_) => continue, - }; - - let enc = PlainMessage::from(msg) - .into_unencrypted_opaque() - .encode(); - assert_eq!(bytes.to_vec(), enc); - assert_eq!(bytes[..rd.used()].to_vec(), enc); - } -} - -#[test] -fn can_read_safari_client_hello() { - let _ = env_logger::Builder::new() - .filter(None, log::LevelFilter::Trace) - .try_init(); - - let bytes = b"\ - \x16\x03\x01\x00\xeb\x01\x00\x00\xe7\x03\x03\xb6\x1f\xe4\x3a\x55\ - \x90\x3e\xc0\x28\x9c\x12\xe0\x5c\x84\xea\x90\x1b\xfb\x11\xfc\xbd\ - \x25\x55\xda\x9f\x51\x93\x1b\x8d\x92\x66\xfd\x00\x00\x2e\xc0\x2c\ - \xc0\x2b\xc0\x24\xc0\x23\xc0\x0a\xc0\x09\xcc\xa9\xc0\x30\xc0\x2f\ - \xc0\x28\xc0\x27\xc0\x14\xc0\x13\xcc\xa8\x00\x9d\x00\x9c\x00\x3d\ - \x00\x3c\x00\x35\x00\x2f\xc0\x08\xc0\x12\x00\x0a\x01\x00\x00\x90\ - \xff\x01\x00\x01\x00\x00\x00\x00\x0e\x00\x0c\x00\x00\x09\x31\x32\ - \x37\x2e\x30\x2e\x30\x2e\x31\x00\x17\x00\x00\x00\x0d\x00\x18\x00\ - \x16\x04\x03\x08\x04\x04\x01\x05\x03\x02\x03\x08\x05\x08\x05\x05\ - \x01\x08\x06\x06\x01\x02\x01\x00\x05\x00\x05\x01\x00\x00\x00\x00\ - \x33\x74\x00\x00\x00\x12\x00\x00\x00\x10\x00\x30\x00\x2e\x02\x68\ - \x32\x05\x68\x32\x2d\x31\x36\x05\x68\x32\x2d\x31\x35\x05\x68\x32\ - \x2d\x31\x34\x08\x73\x70\x64\x79\x2f\x33\x2e\x31\x06\x73\x70\x64\ - \x79\x2f\x33\x08\x68\x74\x74\x70\x2f\x31\x2e\x31\x00\x0b\x00\x02\ - \x01\x00\x00\x0a\x00\x0a\x00\x08\x00\x1d\x00\x17\x00\x18\x00\x19"; - let mut rd = Reader::init(bytes); - let m = OpaqueMessage::read(&mut rd).unwrap(); - println!("m = {:?}", m); - assert!(Message::try_from(m.into_plain_message()).is_err()); -} - -#[test] -fn alert_is_not_handshake() { - let m = Message::build_alert(AlertLevel::Fatal, AlertDescription::DecodeError); - assert!(!m.is_handshake_type(HandshakeType::ClientHello)); -} - -#[test] -fn alert_is_not_opaque() { - let m = Message::build_alert(AlertLevel::Fatal, AlertDescription::DecodeError); - assert!(Message::try_from(m).is_ok()); -} - -#[test] -fn construct_all_types() { - let samples = [ - &b"\x14\x03\x04\x00\x01\x01"[..], - &b"\x15\x03\x04\x00\x02\x01\x16"[..], - &b"\x16\x03\x04\x00\x05\x18\x00\x00\x01\x00"[..], - &b"\x17\x03\x04\x00\x04\x11\x22\x33\x44"[..], - &b"\x18\x03\x04\x00\x04\x11\x22\x33\x44"[..], - ]; - for &bytes in samples.iter() { - let m = OpaqueMessage::read(&mut Reader::init(bytes)).unwrap(); - println!("m = {:?}", m); - let m = Message::try_from(m.into_plain_message()); - println!("m' = {:?}", m); - } -} - -#[test] -fn debug_payload() { - assert_eq!("01020304", format!("{:?}", Payload(vec![1, 2, 3, 4]))); - assert_eq!("01020304", format!("{:?}", PayloadU8(vec![1, 2, 3, 4]))); - assert_eq!("01020304", format!("{:?}", PayloadU16(vec![1, 2, 3, 4]))); - assert_eq!("01020304", format!("{:?}", PayloadU24(vec![1, 2, 3, 4]))); -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/mod.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/mod.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ -#![allow(clippy::upper_case_acronyms)] -#![allow(missing_docs)] - -#[macro_use] -mod macros; - -pub mod alert; -pub mod base; -pub mod ccs; -pub mod codec; -pub mod deframer; -pub mod enums; -pub mod fragmenter; -pub mod handshake; -pub mod hsjoiner; -pub mod message; -pub mod persist; - -#[cfg(test)] -mod handshake_test; - -#[cfg(test)] -mod persist_test; - -#[cfg(test)] -pub(crate) mod enums_test; - -#[cfg(test)] -mod message_test; - -#[cfg(test)] -mod test { - use std::convert::TryFrom; - - #[test] - fn smoketest() { - use super::codec::Reader; - use super::message::{Message, OpaqueMessage}; - let bytes = include_bytes!("handshake-test.1.bin"); - let mut r = Reader::init(bytes); - - while r.any_left() { - let m = OpaqueMessage::read(&mut r).unwrap(); - - let out = m.clone().encode(); - assert!(!out.is_empty()); - - Message::try_from(m.into_plain_message()).unwrap(); - } - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/persist.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/persist.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/persist.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/persist.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,543 +0,0 @@ -use crate::client::ServerName; -use crate::enums::{CipherSuite, ProtocolVersion}; -use crate::key; -use crate::msgs::base::{PayloadU16, PayloadU8}; -use crate::msgs::codec::{Codec, Reader}; -use crate::msgs::handshake::CertificatePayload; -use crate::msgs::handshake::SessionID; -use crate::suites::SupportedCipherSuite; -use crate::ticketer::TimeBase; -#[cfg(feature = "tls12")] -use crate::tls12::Tls12CipherSuite; -use crate::tls13::Tls13CipherSuite; - -use std::cmp; -#[cfg(feature = "tls12")] -use std::mem; - -// These are the keys and values we store in session storage. - -// --- Client types --- -/// Keys for session resumption and tickets. -/// Matching value is a `ClientSessionValue`. -#[derive(Debug)] -pub struct ClientSessionKey { - kind: &'static [u8], - name: Vec, -} - -impl Codec for ClientSessionKey { - fn encode(&self, bytes: &mut Vec) { - bytes.extend_from_slice(self.kind); - bytes.extend_from_slice(&self.name); - } - - // Don't need to read these. - fn read(_r: &mut Reader) -> Option { - None - } -} - -impl ClientSessionKey { - pub fn session_for_server_name(server_name: &ServerName) -> Self { - Self { - kind: b"session", - name: server_name.encode(), - } - } - - pub fn hint_for_server_name(server_name: &ServerName) -> Self { - Self { - kind: b"kx-hint", - name: server_name.encode(), - } - } -} - -#[derive(Debug)] -pub enum ClientSessionValue { - Tls13(Tls13ClientSessionValue), - #[cfg(feature = "tls12")] - Tls12(Tls12ClientSessionValue), -} - -impl ClientSessionValue { - pub fn read( - reader: &mut Reader<'_>, - suite: CipherSuite, - supported: &[SupportedCipherSuite], - ) -> Option { - match supported - .iter() - .find(|s| s.suite() == suite)? - { - SupportedCipherSuite::Tls13(inner) => { - Tls13ClientSessionValue::read(inner, reader).map(ClientSessionValue::Tls13) - } - #[cfg(feature = "tls12")] - SupportedCipherSuite::Tls12(inner) => { - Tls12ClientSessionValue::read(inner, reader).map(ClientSessionValue::Tls12) - } - } - } - - fn common(&self) -> &ClientSessionCommon { - match self { - Self::Tls13(inner) => &inner.common, - #[cfg(feature = "tls12")] - Self::Tls12(inner) => &inner.common, - } - } -} - -impl From for ClientSessionValue { - fn from(v: Tls13ClientSessionValue) -> Self { - Self::Tls13(v) - } -} - -#[cfg(feature = "tls12")] -impl From for ClientSessionValue { - fn from(v: Tls12ClientSessionValue) -> Self { - Self::Tls12(v) - } -} - -pub struct Retrieved { - pub value: T, - retrieved_at: TimeBase, -} - -impl Retrieved { - pub fn new(value: T, retrieved_at: TimeBase) -> Self { - Self { - value, - retrieved_at, - } - } -} - -impl Retrieved<&Tls13ClientSessionValue> { - pub fn obfuscated_ticket_age(&self) -> u32 { - let age_secs = self - .retrieved_at - .as_secs() - .saturating_sub(self.value.common.epoch); - let age_millis = age_secs as u32 * 1000; - age_millis.wrapping_add(self.value.age_add) - } -} - -impl Retrieved { - pub fn tls13(&self) -> Option> { - match &self.value { - ClientSessionValue::Tls13(value) => Some(Retrieved::new(value, self.retrieved_at)), - #[cfg(feature = "tls12")] - ClientSessionValue::Tls12(_) => None, - } - } - - pub fn has_expired(&self) -> bool { - let common = self.value.common(); - common.lifetime_secs != 0 - && common - .epoch - .saturating_add(u64::from(common.lifetime_secs)) - < self.retrieved_at.as_secs() - } -} - -impl std::ops::Deref for Retrieved { - type Target = T; - - fn deref(&self) -> &Self::Target { - &self.value - } -} - -#[derive(Debug)] -pub struct Tls13ClientSessionValue { - suite: &'static Tls13CipherSuite, - age_add: u32, - max_early_data_size: u32, - pub common: ClientSessionCommon, -} - -impl Tls13ClientSessionValue { - pub fn new( - suite: &'static Tls13CipherSuite, - ticket: Vec, - secret: Vec, - server_cert_chain: Vec, - time_now: TimeBase, - lifetime_secs: u32, - age_add: u32, - max_early_data_size: u32, - ) -> Self { - Self { - suite, - age_add, - max_early_data_size, - common: ClientSessionCommon::new( - ticket, - secret, - time_now, - lifetime_secs, - server_cert_chain, - ), - } - } - - /// [`Codec::read()`] with an extra `suite` argument. - /// - /// We decode the `suite` argument separately because it allows us to - /// decide whether we're decoding an 1.2 or 1.3 session value. - pub fn read(suite: &'static Tls13CipherSuite, r: &mut Reader) -> Option { - Some(Self { - suite, - age_add: u32::read(r)?, - max_early_data_size: u32::read(r)?, - common: ClientSessionCommon::read(r)?, - }) - } - - /// Inherent implementation of the [`Codec::get_encoding()`] method. - /// - /// (See `read()` for why this is inherent here.) - pub fn get_encoding(&self) -> Vec { - let mut bytes = Vec::with_capacity(16); - self.suite - .common - .suite - .encode(&mut bytes); - self.age_add.encode(&mut bytes); - self.max_early_data_size - .encode(&mut bytes); - self.common.encode(&mut bytes); - bytes - } - - pub fn max_early_data_size(&self) -> u32 { - self.max_early_data_size - } - - pub fn suite(&self) -> &'static Tls13CipherSuite { - self.suite - } -} - -impl std::ops::Deref for Tls13ClientSessionValue { - type Target = ClientSessionCommon; - - fn deref(&self) -> &Self::Target { - &self.common - } -} - -#[cfg(feature = "tls12")] -#[derive(Debug)] -pub struct Tls12ClientSessionValue { - suite: &'static Tls12CipherSuite, - pub session_id: SessionID, - extended_ms: bool, - pub common: ClientSessionCommon, -} - -#[cfg(feature = "tls12")] -impl Tls12ClientSessionValue { - pub fn new( - suite: &'static Tls12CipherSuite, - session_id: SessionID, - ticket: Vec, - master_secret: Vec, - server_cert_chain: Vec, - time_now: TimeBase, - lifetime_secs: u32, - extended_ms: bool, - ) -> Self { - Self { - suite, - session_id, - extended_ms, - common: ClientSessionCommon::new( - ticket, - master_secret, - time_now, - lifetime_secs, - server_cert_chain, - ), - } - } - - /// [`Codec::read()`] with an extra `suite` argument. - /// - /// We decode the `suite` argument separately because it allows us to - /// decide whether we're decoding an 1.2 or 1.3 session value. - fn read(suite: &'static Tls12CipherSuite, r: &mut Reader) -> Option { - Some(Self { - suite, - session_id: SessionID::read(r)?, - extended_ms: u8::read(r)? == 1, - common: ClientSessionCommon::read(r)?, - }) - } - - /// Inherent implementation of the [`Codec::get_encoding()`] method. - /// - /// (See `read()` for why this is inherent here.) - pub fn get_encoding(&self) -> Vec { - let mut bytes = Vec::with_capacity(16); - self.suite - .common - .suite - .encode(&mut bytes); - self.session_id.encode(&mut bytes); - (u8::from(self.extended_ms)).encode(&mut bytes); - self.common.encode(&mut bytes); - bytes - } - - pub fn take_ticket(&mut self) -> Vec { - mem::take(&mut self.common.ticket.0) - } - - pub fn extended_ms(&self) -> bool { - self.extended_ms - } - - pub fn suite(&self) -> &'static Tls12CipherSuite { - self.suite - } -} - -#[cfg(feature = "tls12")] -impl std::ops::Deref for Tls12ClientSessionValue { - type Target = ClientSessionCommon; - - fn deref(&self) -> &Self::Target { - &self.common - } -} - -#[derive(Debug)] -pub struct ClientSessionCommon { - ticket: PayloadU16, - secret: PayloadU8, - epoch: u64, - lifetime_secs: u32, - server_cert_chain: CertificatePayload, -} - -impl ClientSessionCommon { - fn new( - ticket: Vec, - secret: Vec, - time_now: TimeBase, - lifetime_secs: u32, - server_cert_chain: Vec, - ) -> Self { - Self { - ticket: PayloadU16(ticket), - secret: PayloadU8(secret), - epoch: time_now.as_secs(), - lifetime_secs: cmp::min(lifetime_secs, MAX_TICKET_LIFETIME), - server_cert_chain, - } - } - - /// [`Codec::read()`] is inherent here to avoid leaking the [`Codec`] - /// implementation through [`Deref`] implementations on - /// [`Tls12ClientSessionValue`] and [`Tls13ClientSessionValue`]. - fn read(r: &mut Reader) -> Option { - Some(Self { - ticket: PayloadU16::read(r)?, - secret: PayloadU8::read(r)?, - epoch: u64::read(r)?, - lifetime_secs: u32::read(r)?, - server_cert_chain: CertificatePayload::read(r)?, - }) - } - - /// [`Codec::encode()`] is inherent here to avoid leaking the [`Codec`] - /// implementation through [`Deref`] implementations on - /// [`Tls12ClientSessionValue`] and [`Tls13ClientSessionValue`]. - fn encode(&self, bytes: &mut Vec) { - self.ticket.encode(bytes); - self.secret.encode(bytes); - self.epoch.encode(bytes); - self.lifetime_secs.encode(bytes); - self.server_cert_chain.encode(bytes); - } - - pub fn server_cert_chain(&self) -> &[key::Certificate] { - self.server_cert_chain.as_ref() - } - - pub fn secret(&self) -> &[u8] { - self.secret.0.as_ref() - } - - pub fn ticket(&self) -> &[u8] { - self.ticket.0.as_ref() - } - - /// Test only: wind back epoch by delta seconds. - pub fn rewind_epoch(&mut self, delta: u32) { - self.epoch -= delta as u64; - } -} - -static MAX_TICKET_LIFETIME: u32 = 7 * 24 * 60 * 60; - -/// This is the maximum allowed skew between server and client clocks, over -/// the maximum ticket lifetime period. This encompasses TCP retransmission -/// times in case packet loss occurs when the client sends the ClientHello -/// or receives the NewSessionTicket, _and_ actual clock skew over this period. -static MAX_FRESHNESS_SKEW_MS: u32 = 60 * 1000; - -// --- Server types --- -pub type ServerSessionKey = SessionID; - -#[derive(Debug)] -pub struct ServerSessionValue { - pub sni: Option, - pub version: ProtocolVersion, - pub cipher_suite: CipherSuite, - pub master_secret: PayloadU8, - pub extended_ms: bool, - pub client_cert_chain: Option, - pub alpn: Option, - pub application_data: PayloadU16, - pub creation_time_sec: u64, - pub age_obfuscation_offset: u32, - freshness: Option, -} - -impl Codec for ServerSessionValue { - fn encode(&self, bytes: &mut Vec) { - if let Some(ref sni) = self.sni { - 1u8.encode(bytes); - let sni_bytes: &str = sni.as_ref().into(); - PayloadU8::new(Vec::from(sni_bytes)).encode(bytes); - } else { - 0u8.encode(bytes); - } - self.version.encode(bytes); - self.cipher_suite.encode(bytes); - self.master_secret.encode(bytes); - (u8::from(self.extended_ms)).encode(bytes); - if let Some(ref chain) = self.client_cert_chain { - 1u8.encode(bytes); - chain.encode(bytes); - } else { - 0u8.encode(bytes); - } - if let Some(ref alpn) = self.alpn { - 1u8.encode(bytes); - alpn.encode(bytes); - } else { - 0u8.encode(bytes); - } - self.application_data.encode(bytes); - self.creation_time_sec.encode(bytes); - self.age_obfuscation_offset - .encode(bytes); - } - - fn read(r: &mut Reader) -> Option { - let has_sni = u8::read(r)?; - let sni = if has_sni == 1 { - let dns_name = PayloadU8::read(r)?; - let dns_name = webpki::DnsNameRef::try_from_ascii(&dns_name.0).ok()?; - Some(dns_name.into()) - } else { - None - }; - let v = ProtocolVersion::read(r)?; - let cs = CipherSuite::read(r)?; - let ms = PayloadU8::read(r)?; - let ems = u8::read(r)?; - let has_ccert = u8::read(r)? == 1; - let ccert = if has_ccert { - Some(CertificatePayload::read(r)?) - } else { - None - }; - let has_alpn = u8::read(r)? == 1; - let alpn = if has_alpn { - Some(PayloadU8::read(r)?) - } else { - None - }; - let application_data = PayloadU16::read(r)?; - let creation_time_sec = u64::read(r)?; - let age_obfuscation_offset = u32::read(r)?; - - Some(Self { - sni, - version: v, - cipher_suite: cs, - master_secret: ms, - extended_ms: ems == 1u8, - client_cert_chain: ccert, - alpn, - application_data, - creation_time_sec, - age_obfuscation_offset, - freshness: None, - }) - } -} - -impl ServerSessionValue { - pub fn new( - sni: Option<&webpki::DnsName>, - v: ProtocolVersion, - cs: CipherSuite, - ms: Vec, - client_cert_chain: Option, - alpn: Option>, - application_data: Vec, - creation_time: TimeBase, - age_obfuscation_offset: u32, - ) -> Self { - Self { - sni: sni.cloned(), - version: v, - cipher_suite: cs, - master_secret: PayloadU8::new(ms), - extended_ms: false, - client_cert_chain, - alpn: alpn.map(PayloadU8::new), - application_data: PayloadU16::new(application_data), - creation_time_sec: creation_time.as_secs(), - age_obfuscation_offset, - freshness: None, - } - } - - pub fn set_extended_ms_used(&mut self) { - self.extended_ms = true; - } - - pub fn set_freshness(mut self, obfuscated_client_age_ms: u32, time_now: TimeBase) -> Self { - let client_age_ms = obfuscated_client_age_ms.wrapping_sub(self.age_obfuscation_offset); - let server_age_ms = (time_now - .as_secs() - .saturating_sub(self.creation_time_sec) as u32) - .saturating_mul(1000); - - let age_difference = if client_age_ms < server_age_ms { - server_age_ms - client_age_ms - } else { - client_age_ms - server_age_ms - }; - - self.freshness = Some(age_difference <= MAX_FRESHNESS_SKEW_MS); - self - } - - pub fn is_fresh(&self) -> bool { - self.freshness.unwrap_or_default() - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/persist_test.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/persist_test.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/persist_test.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/msgs/persist_test.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,78 +0,0 @@ -use super::codec::{Codec, Reader}; -use super::persist::*; -use crate::enums::*; - -use crate::key::Certificate; -use crate::ticketer::TimeBase; -use crate::tls13::TLS13_AES_128_GCM_SHA256; - -use std::convert::TryInto; - -#[test] -fn clientsessionkey_is_debug() { - let name = "hello".try_into().unwrap(); - let csk = ClientSessionKey::session_for_server_name(&name); - println!("{:?}", csk); -} - -#[test] -fn clientsessionkey_cannot_be_read() { - let bytes = [0; 1]; - let mut rd = Reader::init(&bytes); - assert!(ClientSessionKey::read(&mut rd).is_none()); -} - -#[test] -fn clientsessionvalue_is_debug() { - let csv = ClientSessionValue::from(Tls13ClientSessionValue::new( - TLS13_AES_128_GCM_SHA256 - .tls13() - .unwrap(), - vec![], - vec![1, 2, 3], - vec![Certificate(b"abc".to_vec()), Certificate(b"def".to_vec())], - TimeBase::now().unwrap(), - 15, - 10, - 128, - )); - println!("{:?}", csv); -} - -#[test] -fn serversessionvalue_is_debug() { - let ssv = ServerSessionValue::new( - None, - ProtocolVersion::TLSv1_3, - CipherSuite::TLS13_AES_128_GCM_SHA256, - vec![1, 2, 3], - None, - None, - vec![4, 5, 6], - TimeBase::now().unwrap(), - 0x12345678, - ); - println!("{:?}", ssv); -} - -#[test] -fn serversessionvalue_no_sni() { - let bytes = [ - 0x00, 0x03, 0x03, 0xc0, 0x23, 0x03, 0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, - 0x23, 0x34, 0x45, 0x56, 0x67, 0x78, 0x89, 0xfe, 0xed, 0xf0, 0x0d, - ]; - let mut rd = Reader::init(&bytes); - let ssv = ServerSessionValue::read(&mut rd).unwrap(); - assert_eq!(ssv.get_encoding(), bytes); -} - -#[test] -fn serversessionvalue_with_cert() { - let bytes = [ - 0x00, 0x03, 0x03, 0xc0, 0x23, 0x03, 0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, - 0x23, 0x34, 0x45, 0x56, 0x67, 0x78, 0x89, 0xfe, 0xed, 0xf0, 0x0d, - ]; - let mut rd = Reader::init(&bytes); - let ssv = ServerSessionValue::read(&mut rd).unwrap(); - assert_eq!(ssv.get_encoding(), bytes); -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/quic.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/quic.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/quic.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/quic.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,620 +0,0 @@ -/// This module contains optional APIs for implementing QUIC TLS. -use crate::cipher::{Iv, IvLen}; -pub use crate::client::ClientQuicExt; -use crate::conn::CommonState; -use crate::error::Error; -use crate::msgs::enums::AlertDescription; -pub use crate::server::ServerQuicExt; -use crate::suites::BulkAlgorithm; -use crate::tls13::key_schedule::hkdf_expand; -use crate::tls13::{Tls13CipherSuite, TLS13_AES_128_GCM_SHA256_INTERNAL}; -use std::fmt::Debug; - -use ring::{aead, hkdf}; - -/// Secrets used to encrypt/decrypt traffic -#[derive(Clone, Debug)] -pub struct Secrets { - /// Secret used to encrypt packets transmitted by the client - client: hkdf::Prk, - /// Secret used to encrypt packets transmitted by the server - server: hkdf::Prk, - /// Cipher suite used with these secrets - suite: &'static Tls13CipherSuite, - is_client: bool, -} - -impl Secrets { - pub(crate) fn new( - client: hkdf::Prk, - server: hkdf::Prk, - suite: &'static Tls13CipherSuite, - is_client: bool, - ) -> Self { - Self { - client, - server, - suite, - is_client, - } - } - - /// Derive the next set of packet keys - pub fn next_packet_keys(&mut self) -> PacketKeySet { - let keys = PacketKeySet::new(self); - self.update(); - keys - } - - fn update(&mut self) { - let hkdf_alg = self.suite.hkdf_algorithm; - self.client = hkdf_expand(&self.client, hkdf_alg, b"quic ku", &[]); - self.server = hkdf_expand(&self.server, hkdf_alg, b"quic ku", &[]); - } - - fn local_remote(&self) -> (&hkdf::Prk, &hkdf::Prk) { - if self.is_client { - (&self.client, &self.server) - } else { - (&self.server, &self.client) - } - } -} - -/// Generic methods for QUIC sessions -pub trait QuicExt { - /// Return the TLS-encoded transport parameters for the session's peer. - /// - /// While the transport parameters are technically available prior to the - /// completion of the handshake, they cannot be fully trusted until the - /// handshake completes, and reliance on them should be minimized. - /// However, any tampering with the parameters will cause the handshake - /// to fail. - fn quic_transport_parameters(&self) -> Option<&[u8]>; - - /// Compute the keys for encrypting/decrypting 0-RTT packets, if available - fn zero_rtt_keys(&self) -> Option; - - /// Consume unencrypted TLS handshake data. - /// - /// Handshake data obtained from separate encryption levels should be supplied in separate calls. - fn read_hs(&mut self, plaintext: &[u8]) -> Result<(), Error>; - - /// Emit unencrypted TLS handshake data. - /// - /// When this returns `Some(_)`, the new keys must be used for future handshake data. - fn write_hs(&mut self, buf: &mut Vec) -> Option; - - /// Emit the TLS description code of a fatal alert, if one has arisen. - /// - /// Check after `read_hs` returns `Err(_)`. - fn alert(&self) -> Option; -} - -/// Keys used to communicate in a single direction -pub struct DirectionalKeys { - /// Encrypts or decrypts a packet's headers - pub header: HeaderProtectionKey, - /// Encrypts or decrypts the payload of a packet - pub packet: PacketKey, -} - -impl DirectionalKeys { - pub(crate) fn new(suite: &'static Tls13CipherSuite, secret: &hkdf::Prk) -> Self { - Self { - header: HeaderProtectionKey::new(suite, secret), - packet: PacketKey::new(suite, secret), - } - } -} - -/// A QUIC header protection key -pub struct HeaderProtectionKey(aead::quic::HeaderProtectionKey); - -impl HeaderProtectionKey { - fn new(suite: &'static Tls13CipherSuite, secret: &hkdf::Prk) -> Self { - let alg = match suite.common.bulk { - BulkAlgorithm::Aes128Gcm => &aead::quic::AES_128, - BulkAlgorithm::Aes256Gcm => &aead::quic::AES_256, - BulkAlgorithm::Chacha20Poly1305 => &aead::quic::CHACHA20, - }; - - Self(hkdf_expand(secret, alg, b"quic hp", &[])) - } - - /// Adds QUIC Header Protection. - /// - /// `sample` must contain the sample of encrypted payload; see - /// [Header Protection Sample]. - /// - /// `first` must reference the first byte of the header, referred to as - /// `packet[0]` in [Header Protection Application]. - /// - /// `packet_number` must reference the Packet Number field; this is - /// `packet[pn_offset:pn_offset+pn_length]` in [Header Protection Application]. - /// - /// Returns an error without modifying anything if `sample` is not - /// the correct length (see [Header Protection Sample] and [`Self::sample_len()`]), - /// or `packet_number` is longer than allowed (see [Packet Number Encoding and Decoding]). - /// - /// Otherwise, `first` and `packet_number` will have the header protection added. - /// - /// [Header Protection Application]: https://datatracker.ietf.org/doc/html/rfc9001#section-5.4.1 - /// [Header Protection Sample]: https://datatracker.ietf.org/doc/html/rfc9001#section-5.4.2 - /// [Packet Number Encoding and Decoding]: https://datatracker.ietf.org/doc/html/rfc9000#section-17.1 - #[inline] - pub fn encrypt_in_place( - &self, - sample: &[u8], - first: &mut u8, - packet_number: &mut [u8], - ) -> Result<(), Error> { - self.xor_in_place(sample, first, packet_number, false) - } - - /// Removes QUIC Header Protection. - /// - /// `sample` must contain the sample of encrypted payload; see - /// [Header Protection Sample]. - /// - /// `first` must reference the first byte of the header, referred to as - /// `packet[0]` in [Header Protection Application]. - /// - /// `packet_number` must reference the Packet Number field; this is - /// `packet[pn_offset:pn_offset+pn_length]` in [Header Protection Application]. - /// - /// Returns an error without modifying anything if `sample` is not - /// the correct length (see [Header Protection Sample] and [`Self::sample_len()`]), - /// or `packet_number` is longer than allowed (see - /// [Packet Number Encoding and Decoding]). - /// - /// Otherwise, `first` and `packet_number` will have the header protection removed. - /// - /// [Header Protection Application]: https://datatracker.ietf.org/doc/html/rfc9001#section-5.4.1 - /// [Header Protection Sample]: https://datatracker.ietf.org/doc/html/rfc9001#section-5.4.2 - /// [Packet Number Encoding and Decoding]: https://datatracker.ietf.org/doc/html/rfc9000#section-17.1 - #[inline] - pub fn decrypt_in_place( - &self, - sample: &[u8], - first: &mut u8, - packet_number: &mut [u8], - ) -> Result<(), Error> { - self.xor_in_place(sample, first, packet_number, true) - } - - fn xor_in_place( - &self, - sample: &[u8], - first: &mut u8, - packet_number: &mut [u8], - masked: bool, - ) -> Result<(), Error> { - // This implements [Header Protection Application] almost verbatim. - - let mask = self - .0 - .new_mask(sample) - .map_err(|_| Error::General("sample of invalid length".into()))?; - - // The `unwrap()` will not panic because `new_mask` returns a - // non-empty result. - let (first_mask, pn_mask) = mask.split_first().unwrap(); - - // It is OK for the `mask` to be longer than `packet_number`, - // but a valid `packet_number` will never be longer than `mask`. - if packet_number.len() > pn_mask.len() { - return Err(Error::General("packet number too long".into())); - } - - // Infallible from this point on. Before this point, `first` and - // `packet_number` are unchanged. - - const LONG_HEADER_FORM: u8 = 0x80; - let bits = match *first & LONG_HEADER_FORM == LONG_HEADER_FORM { - true => 0x0f, // Long header: 4 bits masked - false => 0x1f, // Short header: 5 bits masked - }; - - let first_plain = match masked { - // When unmasking, use the packet length bits after unmasking - true => *first ^ (first_mask & bits), - // When masking, use the packet length bits before masking - false => *first, - }; - let pn_len = (first_plain & 0x03) as usize + 1; - - *first ^= first_mask & bits; - for (dst, m) in packet_number - .iter_mut() - .zip(pn_mask) - .take(pn_len) - { - *dst ^= m; - } - - Ok(()) - } - - /// Expected sample length for the key's algorithm - #[inline] - pub fn sample_len(&self) -> usize { - self.0.algorithm().sample_len() - } -} - -/// Keys to encrypt or decrypt the payload of a packet -pub struct PacketKey { - /// Encrypts or decrypts a packet's payload - key: aead::LessSafeKey, - /// Computes unique nonces for each packet - iv: Iv, - /// The cipher suite used for this packet key - suite: &'static Tls13CipherSuite, -} - -impl PacketKey { - fn new(suite: &'static Tls13CipherSuite, secret: &hkdf::Prk) -> Self { - Self { - key: aead::LessSafeKey::new(hkdf_expand( - secret, - suite.common.aead_algorithm, - b"quic key", - &[], - )), - iv: hkdf_expand(secret, IvLen, b"quic iv", &[]), - suite, - } - } - - /// Encrypt a QUIC packet - /// - /// Takes a `packet_number`, used to derive the nonce; the packet `header`, which is used as - /// the additional authenticated data; and the `payload`. The authentication tag is returned if - /// encryption succeeds. - /// - /// Fails iff the payload is longer than allowed by the cipher suite's AEAD algorithm. - pub fn encrypt_in_place( - &self, - packet_number: u64, - header: &[u8], - payload: &mut [u8], - ) -> Result { - let aad = aead::Aad::from(header); - let nonce = nonce_for(packet_number, &self.iv); - let tag = self - .key - .seal_in_place_separate_tag(nonce, aad, payload) - .map_err(|_| Error::EncryptError)?; - Ok(Tag(tag)) - } - - /// Decrypt a QUIC packet - /// - /// Takes the packet `header`, which is used as the additional authenticated data, and the - /// `payload`, which includes the authentication tag. - /// - /// If the return value is `Ok`, the decrypted payload can be found in `payload`, up to the - /// length found in the return value. - pub fn decrypt_in_place<'a>( - &self, - packet_number: u64, - header: &[u8], - payload: &'a mut [u8], - ) -> Result<&'a [u8], Error> { - let payload_len = payload.len(); - let aad = aead::Aad::from(header); - let nonce = nonce_for(packet_number, &self.iv); - self.key - .open_in_place(nonce, aad, payload) - .map_err(|_| Error::DecryptError)?; - - let plain_len = payload_len - self.key.algorithm().tag_len(); - Ok(&payload[..plain_len]) - } - - /// Number of times the packet key can be used without sacrificing confidentiality - /// - /// See . - #[inline] - pub fn confidentiality_limit(&self) -> u64 { - self.suite.confidentiality_limit - } - - /// Number of times the packet key can be used without sacrificing integrity - /// - /// See . - #[inline] - pub fn integrity_limit(&self) -> u64 { - self.suite.integrity_limit - } - - /// Tag length for the underlying AEAD algorithm - #[inline] - pub fn tag_len(&self) -> usize { - self.key.algorithm().tag_len() - } -} - -/// AEAD tag, must be appended to encrypted cipher text -pub struct Tag(aead::Tag); - -impl AsRef<[u8]> for Tag { - #[inline] - fn as_ref(&self) -> &[u8] { - self.0.as_ref() - } -} - -/// Packet protection keys for bidirectional 1-RTT communication -pub struct PacketKeySet { - /// Encrypts outgoing packets - pub local: PacketKey, - /// Decrypts incoming packets - pub remote: PacketKey, -} - -impl PacketKeySet { - fn new(secrets: &Secrets) -> Self { - let (local, remote) = secrets.local_remote(); - Self { - local: PacketKey::new(secrets.suite, local), - remote: PacketKey::new(secrets.suite, remote), - } - } -} - -/// Complete set of keys used to communicate with the peer -pub struct Keys { - /// Encrypts outgoing packets - pub local: DirectionalKeys, - /// Decrypts incoming packets - pub remote: DirectionalKeys, -} - -impl Keys { - /// Construct keys for use with initial packets - pub fn initial(version: Version, client_dst_connection_id: &[u8], is_client: bool) -> Self { - const CLIENT_LABEL: &[u8] = b"client in"; - const SERVER_LABEL: &[u8] = b"server in"; - let salt = version.initial_salt(); - let hs_secret = hkdf::Salt::new(hkdf::HKDF_SHA256, salt).extract(client_dst_connection_id); - - let secrets = Secrets { - client: hkdf_expand(&hs_secret, hkdf::HKDF_SHA256, CLIENT_LABEL, &[]), - server: hkdf_expand(&hs_secret, hkdf::HKDF_SHA256, SERVER_LABEL, &[]), - suite: TLS13_AES_128_GCM_SHA256_INTERNAL, - is_client, - }; - Self::new(&secrets) - } - - fn new(secrets: &Secrets) -> Self { - let (local, remote) = secrets.local_remote(); - Self { - local: DirectionalKeys::new(secrets.suite, local), - remote: DirectionalKeys::new(secrets.suite, remote), - } - } -} - -pub(crate) fn write_hs(this: &mut CommonState, buf: &mut Vec) -> Option { - while let Some((_, msg)) = this.quic.hs_queue.pop_front() { - buf.extend_from_slice(&msg); - if let Some(&(true, _)) = this.quic.hs_queue.front() { - if this.quic.hs_secrets.is_some() { - // Allow the caller to switch keys before proceeding. - break; - } - } - } - - if let Some(secrets) = this.quic.hs_secrets.take() { - return Some(KeyChange::Handshake { - keys: Keys::new(&secrets), - }); - } - - if let Some(mut secrets) = this.quic.traffic_secrets.take() { - if !this.quic.returned_traffic_keys { - this.quic.returned_traffic_keys = true; - let keys = Keys::new(&secrets); - secrets.update(); - return Some(KeyChange::OneRtt { - keys, - next: secrets, - }); - } - } - - None -} - -/// Key material for use in QUIC packet spaces -/// -/// QUIC uses 4 different sets of keys (and progressive key updates for long-running connections): -/// -/// * Initial: these can be created from [`Keys::initial()`] -/// * 0-RTT keys: can be retrieved from [`QuicExt::zero_rtt_keys()`] -/// * Handshake: these are returned from [`QuicExt::write_hs()`] after `ClientHello` and -/// `ServerHello` messages have been exchanged -/// * 1-RTT keys: these are returned from [`QuicExt::write_hs()`] after the handshake is done -/// -/// Once the 1-RTT keys have been exchanged, either side may initiate a key update. Progressive -/// update keys can be obtained from the [`Secrets`] returned in [`KeyChange::OneRtt`]. Note that -/// only packet keys are updated by key updates; header protection keys remain the same. -#[allow(clippy::large_enum_variant)] -pub enum KeyChange { - /// Keys for the handshake space - Handshake { - /// Header and packet keys for the handshake space - keys: Keys, - }, - /// Keys for 1-RTT data - OneRtt { - /// Header and packet keys for 1-RTT data - keys: Keys, - /// Secrets to derive updated keys from - next: Secrets, - }, -} - -/// Compute the nonce to use for encrypting or decrypting `packet_number` -fn nonce_for(packet_number: u64, iv: &Iv) -> ring::aead::Nonce { - let mut out = [0; aead::NONCE_LEN]; - out[4..].copy_from_slice(&packet_number.to_be_bytes()); - for (out, inp) in out.iter_mut().zip(iv.0.iter()) { - *out ^= inp; - } - aead::Nonce::assume_unique_for_key(out) -} - -/// QUIC protocol version -/// -/// Governs version-specific behavior in the TLS layer -#[non_exhaustive] -#[derive(Clone, Copy, Debug)] -pub enum Version { - /// Draft versions 29, 30, 31 and 32 - V1Draft, - /// First stable RFC - V1, -} - -impl Version { - fn initial_salt(self) -> &'static [u8; 20] { - match self { - Self::V1Draft => &[ - // https://datatracker.ietf.org/doc/html/draft-ietf-quic-tls-32#section-5.2 - 0xaf, 0xbf, 0xec, 0x28, 0x99, 0x93, 0xd2, 0x4c, 0x9e, 0x97, 0x86, 0xf1, 0x9c, 0x61, - 0x11, 0xe0, 0x43, 0x90, 0xa8, 0x99, - ], - Self::V1 => &[ - // https://www.rfc-editor.org/rfc/rfc9001.html#name-initial-secrets - 0x38, 0x76, 0x2c, 0xf7, 0xf5, 0x59, 0x34, 0xb3, 0x4d, 0x17, 0x9a, 0xe6, 0xa4, 0xc8, - 0x0c, 0xad, 0xcc, 0xbb, 0x7f, 0x0a, - ], - } - } -} - -#[cfg(test)] -mod test { - use super::*; - - #[test] - fn short_packet_header_protection() { - // https://www.rfc-editor.org/rfc/rfc9001.html#name-chacha20-poly1305-short-hea - - const PN: u64 = 654360564; - const SECRET: &[u8] = &[ - 0x9a, 0xc3, 0x12, 0xa7, 0xf8, 0x77, 0x46, 0x8e, 0xbe, 0x69, 0x42, 0x27, 0x48, 0xad, - 0x00, 0xa1, 0x54, 0x43, 0xf1, 0x82, 0x03, 0xa0, 0x7d, 0x60, 0x60, 0xf6, 0x88, 0xf3, - 0x0f, 0x21, 0x63, 0x2b, - ]; - - let secret = hkdf::Prk::new_less_safe(hkdf::HKDF_SHA256, SECRET); - use crate::tls13::TLS13_CHACHA20_POLY1305_SHA256_INTERNAL; - let hpk = HeaderProtectionKey::new(TLS13_CHACHA20_POLY1305_SHA256_INTERNAL, &secret); - let packet = PacketKey::new(TLS13_CHACHA20_POLY1305_SHA256_INTERNAL, &secret); - - const PLAIN: &[u8] = &[0x42, 0x00, 0xbf, 0xf4, 0x01]; - - let mut buf = PLAIN.to_vec(); - let (header, payload) = buf.split_at_mut(4); - let tag = packet - .encrypt_in_place(PN, &*header, payload) - .unwrap(); - buf.extend(tag.as_ref()); - - let pn_offset = 1; - let (header, sample) = buf.split_at_mut(pn_offset + 4); - let (first, rest) = header.split_at_mut(1); - let sample = &sample[..hpk.sample_len()]; - hpk.encrypt_in_place(sample, &mut first[0], dbg!(rest)) - .unwrap(); - - const PROTECTED: &[u8] = &[ - 0x4c, 0xfe, 0x41, 0x89, 0x65, 0x5e, 0x5c, 0xd5, 0x5c, 0x41, 0xf6, 0x90, 0x80, 0x57, - 0x5d, 0x79, 0x99, 0xc2, 0x5a, 0x5b, 0xfb, - ]; - - assert_eq!(&buf, PROTECTED); - - let (header, sample) = buf.split_at_mut(pn_offset + 4); - let (first, rest) = header.split_at_mut(1); - let sample = &sample[..hpk.sample_len()]; - hpk.decrypt_in_place(sample, &mut first[0], rest) - .unwrap(); - - let (header, payload_tag) = buf.split_at_mut(4); - let plain = packet - .decrypt_in_place(PN, &*header, payload_tag) - .unwrap(); - - assert_eq!(plain, &PLAIN[4..]); - } - - #[test] - fn key_update_test_vector() { - fn equal_prk(x: &hkdf::Prk, y: &hkdf::Prk) -> bool { - let mut x_data = [0; 16]; - let mut y_data = [0; 16]; - let x_okm = x - .expand(&[b"info"], &aead::quic::AES_128) - .unwrap(); - x_okm.fill(&mut x_data[..]).unwrap(); - let y_okm = y - .expand(&[b"info"], &aead::quic::AES_128) - .unwrap(); - y_okm.fill(&mut y_data[..]).unwrap(); - x_data == y_data - } - - let mut secrets = Secrets { - // Constant dummy values for reproducibility - client: hkdf::Prk::new_less_safe( - hkdf::HKDF_SHA256, - &[ - 0xb8, 0x76, 0x77, 0x08, 0xf8, 0x77, 0x23, 0x58, 0xa6, 0xea, 0x9f, 0xc4, 0x3e, - 0x4a, 0xdd, 0x2c, 0x96, 0x1b, 0x3f, 0x52, 0x87, 0xa6, 0xd1, 0x46, 0x7e, 0xe0, - 0xae, 0xab, 0x33, 0x72, 0x4d, 0xbf, - ], - ), - server: hkdf::Prk::new_less_safe( - hkdf::HKDF_SHA256, - &[ - 0x42, 0xdc, 0x97, 0x21, 0x40, 0xe0, 0xf2, 0xe3, 0x98, 0x45, 0xb7, 0x67, 0x61, - 0x34, 0x39, 0xdc, 0x67, 0x58, 0xca, 0x43, 0x25, 0x9b, 0x87, 0x85, 0x06, 0x82, - 0x4e, 0xb1, 0xe4, 0x38, 0xd8, 0x55, - ], - ), - suite: TLS13_AES_128_GCM_SHA256_INTERNAL, - is_client: true, - }; - secrets.update(); - - assert!(equal_prk( - &secrets.client, - &hkdf::Prk::new_less_safe( - hkdf::HKDF_SHA256, - &[ - 0x42, 0xca, 0xc8, 0xc9, 0x1c, 0xd5, 0xeb, 0x40, 0x68, 0x2e, 0x43, 0x2e, 0xdf, - 0x2d, 0x2b, 0xe9, 0xf4, 0x1a, 0x52, 0xca, 0x6b, 0x22, 0xd8, 0xe6, 0xcd, 0xb1, - 0xe8, 0xac, 0xa9, 0x6, 0x1f, 0xce - ] - ) - )); - assert!(equal_prk( - &secrets.server, - &hkdf::Prk::new_less_safe( - hkdf::HKDF_SHA256, - &[ - 0xeb, 0x7f, 0x5e, 0x2a, 0x12, 0x3f, 0x40, 0x7d, 0xb4, 0x99, 0xe3, 0x61, 0xca, - 0xe5, 0x90, 0xd4, 0xd9, 0x92, 0xe1, 0x4b, 0x7a, 0xce, 0x3, 0xc2, 0x44, 0xe0, - 0x42, 0x21, 0x15, 0xb6, 0xd3, 0x8a - ] - ) - )); - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/rand.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/rand.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/rand.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/rand.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -use crate::msgs::codec; -/// The single place where we generate random material -/// for our own use. These functions never fail, -/// they panic on error. -use ring::rand::{SecureRandom, SystemRandom}; - -/// Fill the whole slice with random material. -pub(crate) fn fill_random(bytes: &mut [u8]) -> Result<(), GetRandomFailed> { - SystemRandom::new() - .fill(bytes) - .map_err(|_| GetRandomFailed) -} - -/// Make a Vec of the given size -/// containing random material. -pub(crate) fn random_vec(len: usize) -> Result, GetRandomFailed> { - let mut v = vec![0; len]; - fill_random(&mut v)?; - Ok(v) -} - -/// Return a uniformly random u32. -pub(crate) fn random_u32() -> Result { - let mut buf = [0u8; 4]; - fill_random(&mut buf)?; - codec::decode_u32(&buf).ok_or(GetRandomFailed) -} - -#[derive(Debug)] -pub struct GetRandomFailed; diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/record_layer.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/record_layer.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/record_layer.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/record_layer.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,192 +0,0 @@ -use crate::cipher::{MessageDecrypter, MessageEncrypter}; -use crate::error::Error; -use crate::msgs::message::{BorrowedPlainMessage, OpaqueMessage, PlainMessage}; - -static SEQ_SOFT_LIMIT: u64 = 0xffff_ffff_ffff_0000u64; -static SEQ_HARD_LIMIT: u64 = 0xffff_ffff_ffff_fffeu64; - -#[derive(PartialEq)] -enum DirectionState { - /// No keying material. - Invalid, - - /// Keying material present, but not yet in use. - Prepared, - - /// Keying material in use. - Active, -} - -pub(crate) struct RecordLayer { - message_encrypter: Box, - message_decrypter: Box, - write_seq: u64, - read_seq: u64, - encrypt_state: DirectionState, - decrypt_state: DirectionState, - - // Message encrypted with other keys may be encountered, so failures - // should be swallowed by the caller. This struct tracks the amount - // of message size this is allowed for. - trial_decryption_len: Option, -} - -impl RecordLayer { - pub(crate) fn new() -> Self { - Self { - message_encrypter: ::invalid(), - message_decrypter: ::invalid(), - write_seq: 0, - read_seq: 0, - encrypt_state: DirectionState::Invalid, - decrypt_state: DirectionState::Invalid, - trial_decryption_len: None, - } - } - - pub(crate) fn is_encrypting(&self) -> bool { - self.encrypt_state == DirectionState::Active - } - - pub(crate) fn is_decrypting(&self) -> bool { - self.decrypt_state == DirectionState::Active - } - - #[cfg(feature = "secret_extraction")] - pub(crate) fn write_seq(&self) -> u64 { - self.write_seq - } - - #[cfg(feature = "secret_extraction")] - pub(crate) fn read_seq(&self) -> u64 { - self.read_seq - } - - pub(crate) fn doing_trial_decryption(&mut self, requested: usize) -> bool { - match self - .trial_decryption_len - .and_then(|value| value.checked_sub(requested)) - { - Some(remaining) => { - self.trial_decryption_len = Some(remaining); - true - } - _ => false, - } - } - - /// Prepare to use the given `MessageEncrypter` for future message encryption. - /// It is not used until you call `start_encrypting`. - pub(crate) fn prepare_message_encrypter(&mut self, cipher: Box) { - self.message_encrypter = cipher; - self.write_seq = 0; - self.encrypt_state = DirectionState::Prepared; - } - - /// Prepare to use the given `MessageDecrypter` for future message decryption. - /// It is not used until you call `start_decrypting`. - pub(crate) fn prepare_message_decrypter(&mut self, cipher: Box) { - self.message_decrypter = cipher; - self.read_seq = 0; - self.decrypt_state = DirectionState::Prepared; - } - - /// Start using the `MessageEncrypter` previously provided to the previous - /// call to `prepare_message_encrypter`. - pub(crate) fn start_encrypting(&mut self) { - debug_assert!(self.encrypt_state == DirectionState::Prepared); - self.encrypt_state = DirectionState::Active; - } - - /// Start using the `MessageDecrypter` previously provided to the previous - /// call to `prepare_message_decrypter`. - pub(crate) fn start_decrypting(&mut self) { - debug_assert!(self.decrypt_state == DirectionState::Prepared); - self.decrypt_state = DirectionState::Active; - } - - /// Set and start using the given `MessageEncrypter` for future outgoing - /// message encryption. - pub(crate) fn set_message_encrypter(&mut self, cipher: Box) { - self.prepare_message_encrypter(cipher); - self.start_encrypting(); - } - - /// Set and start using the given `MessageDecrypter` for future incoming - /// message decryption. - pub(crate) fn set_message_decrypter(&mut self, cipher: Box) { - self.prepare_message_decrypter(cipher); - self.start_decrypting(); - self.trial_decryption_len = None; - } - - /// Set and start using the given `MessageDecrypter` for future incoming - /// message decryption, and enable "trial decryption" mode for when TLS1.3 - /// 0-RTT is attempted but rejected by the server. - pub(crate) fn set_message_decrypter_with_trial_decryption( - &mut self, - cipher: Box, - max_length: usize, - ) { - self.prepare_message_decrypter(cipher); - self.start_decrypting(); - self.trial_decryption_len = Some(max_length); - } - - pub(crate) fn finish_trial_decryption(&mut self) { - self.trial_decryption_len = None; - } - - /// Return true if the peer appears to getting close to encrypting - /// too many messages with this key. - /// - /// Perhaps if we send an alert well before their counter wraps, a - /// buggy peer won't make a terrible mistake here? - /// - /// Note that there's no reason to refuse to decrypt: the security - /// failure has already happened. - pub(crate) fn wants_close_before_decrypt(&self) -> bool { - self.read_seq == SEQ_SOFT_LIMIT - } - - /// Return true if we are getting close to encrypting too many - /// messages with our encryption key. - pub(crate) fn wants_close_before_encrypt(&self) -> bool { - self.write_seq == SEQ_SOFT_LIMIT - } - - /// Return true if we outright refuse to do anything with the - /// encryption key. - pub(crate) fn encrypt_exhausted(&self) -> bool { - self.write_seq >= SEQ_HARD_LIMIT - } - - /// Decrypt a TLS message. - /// - /// `encr` is a decoded message allegedly received from the peer. - /// If it can be decrypted, its decryption is returned. Otherwise, - /// an error is returned. - pub(crate) fn decrypt_incoming(&mut self, encr: OpaqueMessage) -> Result { - debug_assert!(self.is_decrypting()); - let seq = self.read_seq; - let msg = self - .message_decrypter - .decrypt(encr, seq)?; - self.read_seq += 1; - Ok(msg) - } - - /// Encrypt a TLS message. - /// - /// `plain` is a TLS message we'd like to send. This function - /// panics if the requisite keying material hasn't been established yet. - pub(crate) fn encrypt_outgoing(&mut self, plain: BorrowedPlainMessage) -> OpaqueMessage { - debug_assert!(self.encrypt_state == DirectionState::Active); - assert!(!self.encrypt_exhausted()); - let seq = self.write_seq; - self.write_seq += 1; - self.message_encrypter - .encrypt(plain, seq) - .unwrap() - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/server/builder.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/server/builder.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/server/builder.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/server/builder.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,116 +0,0 @@ -use crate::builder::{ConfigBuilder, WantsVerifier}; -use crate::error::Error; -use crate::key; -use crate::kx::SupportedKxGroup; -use crate::server::handy; -use crate::server::{ResolvesServerCert, ServerConfig}; -use crate::suites::SupportedCipherSuite; -use crate::verify; -use crate::versions; -use crate::NoKeyLog; - -use std::marker::PhantomData; -use std::sync::Arc; - -impl ConfigBuilder { - /// Choose how to verify client certificates. - pub fn with_client_cert_verifier( - self, - client_cert_verifier: Arc, - ) -> ConfigBuilder { - ConfigBuilder { - state: WantsServerCert { - cipher_suites: self.state.cipher_suites, - kx_groups: self.state.kx_groups, - versions: self.state.versions, - verifier: client_cert_verifier, - }, - side: PhantomData::default(), - } - } - - /// Disable client authentication. - pub fn with_no_client_auth(self) -> ConfigBuilder { - self.with_client_cert_verifier(verify::NoClientAuth::new()) - } -} - -/// A config builder state where the caller must supply how to provide a server certificate to -/// the connecting peer. -/// -/// For more information, see the [`ConfigBuilder`] documentation. -#[derive(Clone, Debug)] -pub struct WantsServerCert { - cipher_suites: Vec, - kx_groups: Vec<&'static SupportedKxGroup>, - versions: versions::EnabledVersions, - verifier: Arc, -} - -impl ConfigBuilder { - /// Sets a single certificate chain and matching private key. This - /// certificate and key is used for all subsequent connections, - /// irrespective of things like SNI hostname. - /// - /// Note that the end-entity certificate must have the - /// [Subject Alternative Name](https://tools.ietf.org/html/rfc6125#section-4.1) - /// extension to describe, e.g., the valid DNS name. The `commonName` field is - /// disregarded. - /// - /// `cert_chain` is a vector of DER-encoded certificates. - /// `key_der` is a DER-encoded RSA, ECDSA, or Ed25519 private key. - /// - /// This function fails if `key_der` is invalid. - pub fn with_single_cert( - self, - cert_chain: Vec, - key_der: key::PrivateKey, - ) -> Result { - let resolver = handy::AlwaysResolvesChain::new(cert_chain, &key_der)?; - Ok(self.with_cert_resolver(Arc::new(resolver))) - } - - /// Sets a single certificate chain, matching private key, OCSP - /// response and SCTs. This certificate and key is used for all - /// subsequent connections, irrespective of things like SNI hostname. - /// - /// `cert_chain` is a vector of DER-encoded certificates. - /// `key_der` is a DER-encoded RSA, ECDSA, or Ed25519 private key. - /// `ocsp` is a DER-encoded OCSP response. Ignored if zero length. - /// `scts` is an `SignedCertificateTimestampList` encoding (see RFC6962) - /// and is ignored if empty. - /// - /// This function fails if `key_der` is invalid. - pub fn with_single_cert_with_ocsp_and_sct( - self, - cert_chain: Vec, - key_der: key::PrivateKey, - ocsp: Vec, - scts: Vec, - ) -> Result { - let resolver = - handy::AlwaysResolvesChain::new_with_extras(cert_chain, &key_der, ocsp, scts)?; - Ok(self.with_cert_resolver(Arc::new(resolver))) - } - - /// Sets a custom [`ResolvesServerCert`]. - pub fn with_cert_resolver(self, cert_resolver: Arc) -> ServerConfig { - ServerConfig { - cipher_suites: self.state.cipher_suites, - kx_groups: self.state.kx_groups, - verifier: self.state.verifier, - cert_resolver, - ignore_client_order: false, - max_fragment_size: None, - session_storage: handy::ServerSessionMemoryCache::new(256), - ticketer: Arc::new(handy::NeverProducesTickets {}), - alpn_protocols: Vec::new(), - versions: self.state.versions, - key_log: Arc::new(NoKeyLog {}), - #[cfg(feature = "secret_extraction")] - enable_secret_extraction: false, - max_early_data_size: 0, - send_half_rtt_data: false, - } - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/server/common.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/server/common.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/server/common.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/server/common.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ -use crate::{key, sign}; - -/// ActiveCertifiedKey wraps CertifiedKey and tracks OSCP and SCT state -/// in a single handshake. -pub(super) struct ActiveCertifiedKey<'a> { - key: &'a sign::CertifiedKey, - ocsp: Option<&'a [u8]>, - sct_list: Option<&'a [u8]>, -} - -impl<'a> ActiveCertifiedKey<'a> { - pub(super) fn from_certified_key(key: &sign::CertifiedKey) -> ActiveCertifiedKey { - ActiveCertifiedKey { - key, - ocsp: key.ocsp.as_deref(), - sct_list: key.sct_list.as_deref(), - } - } - - /// Get the certificate chain - #[inline] - pub(super) fn get_cert(&self) -> &[key::Certificate] { - &self.key.cert - } - - /// Get the signing key - #[inline] - pub(super) fn get_key(&self) -> &dyn sign::SigningKey { - &*self.key.key - } - - #[inline] - pub(super) fn get_ocsp(&self) -> Option<&[u8]> { - self.ocsp - } - - #[inline] - pub(super) fn get_sct_list(&self) -> Option<&[u8]> { - self.sct_list - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/server/handy.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/server/handy.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/server/handy.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/server/handy.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,278 +0,0 @@ -use crate::error::Error; -use crate::key; -use crate::limited_cache; -use crate::server; -use crate::server::ClientHello; -use crate::sign; - -use std::collections; -use std::sync::{Arc, Mutex}; - -/// Something which never stores sessions. -pub struct NoServerSessionStorage {} - -impl server::StoresServerSessions for NoServerSessionStorage { - fn put(&self, _id: Vec, _sec: Vec) -> bool { - false - } - fn get(&self, _id: &[u8]) -> Option> { - None - } - fn take(&self, _id: &[u8]) -> Option> { - None - } - fn can_cache(&self) -> bool { - false - } -} - -/// An implementer of `StoresServerSessions` that stores everything -/// in memory. If enforces a limit on the number of stored sessions -/// to bound memory usage. -pub struct ServerSessionMemoryCache { - cache: Mutex, Vec>>, -} - -impl ServerSessionMemoryCache { - /// Make a new ServerSessionMemoryCache. `size` is the maximum - /// number of stored sessions, and may be rounded-up for - /// efficiency. - pub fn new(size: usize) -> Arc { - Arc::new(Self { - cache: Mutex::new(limited_cache::LimitedCache::new(size)), - }) - } -} - -impl server::StoresServerSessions for ServerSessionMemoryCache { - fn put(&self, key: Vec, value: Vec) -> bool { - self.cache - .lock() - .unwrap() - .insert(key, value); - true - } - - fn get(&self, key: &[u8]) -> Option> { - self.cache - .lock() - .unwrap() - .get(key) - .cloned() - } - - fn take(&self, key: &[u8]) -> Option> { - self.cache.lock().unwrap().remove(key) - } - - fn can_cache(&self) -> bool { - true - } -} - -/// Something which never produces tickets. -pub(super) struct NeverProducesTickets {} - -impl server::ProducesTickets for NeverProducesTickets { - fn enabled(&self) -> bool { - false - } - fn lifetime(&self) -> u32 { - 0 - } - fn encrypt(&self, _bytes: &[u8]) -> Option> { - None - } - fn decrypt(&self, _bytes: &[u8]) -> Option> { - None - } -} - -/// Something which always resolves to the same cert chain. -pub(super) struct AlwaysResolvesChain(Arc); - -impl AlwaysResolvesChain { - /// Creates an `AlwaysResolvesChain`, auto-detecting the underlying private - /// key type and encoding. - pub(super) fn new( - chain: Vec, - priv_key: &key::PrivateKey, - ) -> Result { - let key = sign::any_supported_type(priv_key) - .map_err(|_| Error::General("invalid private key".into()))?; - Ok(Self(Arc::new(sign::CertifiedKey::new(chain, key)))) - } - - /// Creates an `AlwaysResolvesChain`, auto-detecting the underlying private - /// key type and encoding. - /// - /// If non-empty, the given OCSP response and SCTs are attached. - pub(super) fn new_with_extras( - chain: Vec, - priv_key: &key::PrivateKey, - ocsp: Vec, - scts: Vec, - ) -> Result { - let mut r = Self::new(chain, priv_key)?; - - { - let cert = Arc::make_mut(&mut r.0); - if !ocsp.is_empty() { - cert.ocsp = Some(ocsp); - } - if !scts.is_empty() { - cert.sct_list = Some(scts); - } - } - - Ok(r) - } -} - -impl server::ResolvesServerCert for AlwaysResolvesChain { - fn resolve(&self, _client_hello: ClientHello) -> Option> { - Some(Arc::clone(&self.0)) - } -} - -/// Something that resolves do different cert chains/keys based -/// on client-supplied server name (via SNI). -pub struct ResolvesServerCertUsingSni { - by_name: collections::HashMap>, -} - -impl ResolvesServerCertUsingSni { - /// Create a new and empty (i.e., knows no certificates) resolver. - pub fn new() -> Self { - Self { - by_name: collections::HashMap::new(), - } - } - - /// Add a new `sign::CertifiedKey` to be used for the given SNI `name`. - /// - /// This function fails if `name` is not a valid DNS name, or if - /// it's not valid for the supplied certificate, or if the certificate - /// chain is syntactically faulty. - pub fn add(&mut self, name: &str, ck: sign::CertifiedKey) -> Result<(), Error> { - let checked_name = webpki::DnsNameRef::try_from_ascii_str(name) - .map_err(|_| Error::General("Bad DNS name".into()))? - .to_owned(); - - ck.cross_check_end_entity_cert(Some(checked_name.as_ref()))?; - let as_str: &str = checked_name.as_ref().into(); - self.by_name - .insert(as_str.to_string(), Arc::new(ck)); - Ok(()) - } -} - -impl server::ResolvesServerCert for ResolvesServerCertUsingSni { - fn resolve(&self, client_hello: ClientHello) -> Option> { - if let Some(name) = client_hello.server_name() { - self.by_name.get(name).map(Arc::clone) - } else { - // This kind of resolver requires SNI - None - } - } -} - -#[cfg(test)] -mod test { - use super::*; - use crate::server::ProducesTickets; - use crate::server::ResolvesServerCert; - use crate::server::StoresServerSessions; - - #[test] - fn test_noserversessionstorage_drops_put() { - let c = NoServerSessionStorage {}; - assert!(!c.put(vec![0x01], vec![0x02])); - } - - #[test] - fn test_noserversessionstorage_denies_gets() { - let c = NoServerSessionStorage {}; - c.put(vec![0x01], vec![0x02]); - assert_eq!(c.get(&[]), None); - assert_eq!(c.get(&[0x01]), None); - assert_eq!(c.get(&[0x02]), None); - } - - #[test] - fn test_noserversessionstorage_denies_takes() { - let c = NoServerSessionStorage {}; - assert_eq!(c.take(&[]), None); - assert_eq!(c.take(&[0x01]), None); - assert_eq!(c.take(&[0x02]), None); - } - - #[test] - fn test_serversessionmemorycache_accepts_put() { - let c = ServerSessionMemoryCache::new(4); - assert!(c.put(vec![0x01], vec![0x02])); - } - - #[test] - fn test_serversessionmemorycache_persists_put() { - let c = ServerSessionMemoryCache::new(4); - assert!(c.put(vec![0x01], vec![0x02])); - assert_eq!(c.get(&[0x01]), Some(vec![0x02])); - assert_eq!(c.get(&[0x01]), Some(vec![0x02])); - } - - #[test] - fn test_serversessionmemorycache_overwrites_put() { - let c = ServerSessionMemoryCache::new(4); - assert!(c.put(vec![0x01], vec![0x02])); - assert!(c.put(vec![0x01], vec![0x04])); - assert_eq!(c.get(&[0x01]), Some(vec![0x04])); - } - - #[test] - fn test_serversessionmemorycache_drops_to_maintain_size_invariant() { - let c = ServerSessionMemoryCache::new(2); - assert!(c.put(vec![0x01], vec![0x02])); - assert!(c.put(vec![0x03], vec![0x04])); - assert!(c.put(vec![0x05], vec![0x06])); - assert!(c.put(vec![0x07], vec![0x08])); - assert!(c.put(vec![0x09], vec![0x0a])); - - let count = c.get(&[0x01]).iter().count() - + c.get(&[0x03]).iter().count() - + c.get(&[0x05]).iter().count() - + c.get(&[0x07]).iter().count() - + c.get(&[0x09]).iter().count(); - - assert!(count < 5); - } - - #[test] - fn test_neverproducestickets_does_nothing() { - let npt = NeverProducesTickets {}; - assert!(!npt.enabled()); - assert_eq!(0, npt.lifetime()); - assert_eq!(None, npt.encrypt(&[])); - assert_eq!(None, npt.decrypt(&[])); - } - - #[test] - fn test_resolvesservercertusingsni_requires_sni() { - let rscsni = ResolvesServerCertUsingSni::new(); - assert!(rscsni - .resolve(ClientHello::new(&None, &[], None, &[])) - .is_none()); - } - - #[test] - fn test_resolvesservercertusingsni_handles_unknown_name() { - let rscsni = ResolvesServerCertUsingSni::new(); - let name = webpki::DnsNameRef::try_from_ascii_str("hello.com") - .unwrap() - .to_owned(); - assert!(rscsni - .resolve(ClientHello::new(&Some(name), &[], None, &[])) - .is_none()); - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/server/hs.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/server/hs.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/server/hs.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/server/hs.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,522 +0,0 @@ -use crate::conn::{CommonState, ConnectionRandoms, State}; -#[cfg(feature = "tls12")] -use crate::enums::CipherSuite; -use crate::enums::{ProtocolVersion, SignatureScheme}; -use crate::error::Error; -use crate::hash_hs::{HandshakeHash, HandshakeHashBuffer}; -#[cfg(feature = "logging")] -use crate::log::{debug, trace}; -use crate::msgs::enums::HandshakeType; -use crate::msgs::enums::{AlertDescription, Compression, ExtensionType}; -#[cfg(feature = "tls12")] -use crate::msgs::handshake::SessionID; -use crate::msgs::handshake::{ClientHelloPayload, Random, ServerExtension}; -use crate::msgs::handshake::{ConvertProtocolNameList, ConvertServerNameList, HandshakePayload}; -use crate::msgs::message::{Message, MessagePayload}; -use crate::msgs::persist; -use crate::server::{ClientHello, ServerConfig}; -use crate::suites; -use crate::SupportedCipherSuite; - -use super::server_conn::ServerConnectionData; -#[cfg(feature = "tls12")] -use super::tls12; -use crate::server::common::ActiveCertifiedKey; -use crate::server::tls13; - -use std::sync::Arc; - -pub(super) type NextState = Box>; -pub(super) type NextStateOrError = Result; -pub(super) type ServerContext<'a> = crate::conn::Context<'a, ServerConnectionData>; - -pub(super) fn incompatible(common: &mut CommonState, why: &str) -> Error { - common.send_fatal_alert(AlertDescription::HandshakeFailure); - Error::PeerIncompatibleError(why.to_string()) -} - -fn bad_version(common: &mut CommonState, why: &str) -> Error { - common.send_fatal_alert(AlertDescription::ProtocolVersion); - Error::PeerIncompatibleError(why.to_string()) -} - -pub(super) fn decode_error(common: &mut CommonState, why: &str) -> Error { - common.send_fatal_alert(AlertDescription::DecodeError); - Error::PeerMisbehavedError(why.to_string()) -} - -pub(super) fn can_resume( - suite: SupportedCipherSuite, - sni: &Option, - using_ems: bool, - resumedata: &persist::ServerSessionValue, -) -> bool { - // The RFCs underspecify what happens if we try to resume to - // an unoffered/varying suite. We merely don't resume in weird cases. - // - // RFC 6066 says "A server that implements this extension MUST NOT accept - // the request to resume the session if the server_name extension contains - // a different name. Instead, it proceeds with a full handshake to - // establish a new session." - resumedata.cipher_suite == suite.suite() - && (resumedata.extended_ms == using_ems || (resumedata.extended_ms && !using_ems)) - && &resumedata.sni == sni -} - -#[derive(Default)] -pub(super) struct ExtensionProcessing { - // extensions to reply with - pub(super) exts: Vec, - #[cfg(feature = "tls12")] - pub(super) send_ticket: bool, -} - -impl ExtensionProcessing { - pub(super) fn new() -> Self { - Default::default() - } - - pub(super) fn process_common( - &mut self, - config: &ServerConfig, - cx: &mut ServerContext<'_>, - ocsp_response: &mut Option<&[u8]>, - sct_list: &mut Option<&[u8]>, - hello: &ClientHelloPayload, - resumedata: Option<&persist::ServerSessionValue>, - extra_exts: Vec, - ) -> Result<(), Error> { - // ALPN - let our_protocols = &config.alpn_protocols; - let maybe_their_protocols = hello.get_alpn_extension(); - if let Some(their_protocols) = maybe_their_protocols { - let their_protocols = their_protocols.to_slices(); - - if their_protocols - .iter() - .any(|protocol| protocol.is_empty()) - { - return Err(Error::PeerMisbehavedError( - "client offered empty ALPN protocol".to_string(), - )); - } - - cx.common.alpn_protocol = our_protocols - .iter() - .find(|protocol| their_protocols.contains(&protocol.as_slice())) - .cloned(); - if let Some(ref selected_protocol) = cx.common.alpn_protocol { - debug!("Chosen ALPN protocol {:?}", selected_protocol); - self.exts - .push(ServerExtension::make_alpn(&[selected_protocol])); - } else if !our_protocols.is_empty() { - cx.common - .send_fatal_alert(AlertDescription::NoApplicationProtocol); - return Err(Error::NoApplicationProtocol); - } - } - - #[cfg(feature = "quic")] - { - if cx.common.is_quic() { - // QUIC has strict ALPN, unlike TLS's more backwards-compatible behavior. RFC 9001 - // says: "The server MUST treat the inability to select a compatible application - // protocol as a connection error of type 0x0178". We judge that ALPN was desired - // (rather than some out-of-band protocol negotiation mechanism) iff any ALPN - // protocols were configured locally or offered by the client. This helps prevent - // successful establishment of connections between peers that can't understand - // each other. - if cx.common.alpn_protocol.is_none() - && (!our_protocols.is_empty() || maybe_their_protocols.is_some()) - { - cx.common - .send_fatal_alert(AlertDescription::NoApplicationProtocol); - return Err(Error::NoApplicationProtocol); - } - - match hello.get_quic_params_extension() { - Some(params) => cx.common.quic.params = Some(params), - None => { - return Err(cx - .common - .missing_extension("QUIC transport parameters not found")); - } - } - } - } - - let for_resume = resumedata.is_some(); - // SNI - if !for_resume && hello.get_sni_extension().is_some() { - self.exts - .push(ServerExtension::ServerNameAck); - } - - // Send status_request response if we have one. This is not allowed - // if we're resuming, and is only triggered if we have an OCSP response - // to send. - if !for_resume - && hello - .find_extension(ExtensionType::StatusRequest) - .is_some() - { - if ocsp_response.is_some() && !cx.common.is_tls13() { - // Only TLS1.2 sends confirmation in ServerHello - self.exts - .push(ServerExtension::CertificateStatusAck); - } - } else { - // Throw away any OCSP response so we don't try to send it later. - ocsp_response.take(); - } - - if !for_resume - && hello - .find_extension(ExtensionType::SCT) - .is_some() - { - if !cx.common.is_tls13() { - // Take the SCT list, if any, so we don't send it later, - // and put it in the legacy extension. - if let Some(sct_list) = sct_list.take() { - self.exts - .push(ServerExtension::make_sct(sct_list.to_vec())); - } - } - } else { - // Throw away any SCT list so we don't send it later. - sct_list.take(); - } - - self.exts.extend(extra_exts); - - Ok(()) - } - - #[cfg(feature = "tls12")] - pub(super) fn process_tls12( - &mut self, - config: &ServerConfig, - hello: &ClientHelloPayload, - using_ems: bool, - ) { - // Renegotiation. - // (We don't do reneg at all, but would support the secure version if we did.) - let secure_reneg_offered = hello - .find_extension(ExtensionType::RenegotiationInfo) - .is_some() - || hello - .cipher_suites - .contains(&CipherSuite::TLS_EMPTY_RENEGOTIATION_INFO_SCSV); - - if secure_reneg_offered { - self.exts - .push(ServerExtension::make_empty_renegotiation_info()); - } - - // Tickets: - // If we get any SessionTicket extension and have tickets enabled, - // we send an ack. - if hello - .find_extension(ExtensionType::SessionTicket) - .is_some() - && config.ticketer.enabled() - { - self.send_ticket = true; - self.exts - .push(ServerExtension::SessionTicketAck); - } - - // Confirm use of EMS if offered. - if using_ems { - self.exts - .push(ServerExtension::ExtendedMasterSecretAck); - } - } -} - -pub(super) struct ExpectClientHello { - pub(super) config: Arc, - pub(super) extra_exts: Vec, - pub(super) transcript: HandshakeHashOrBuffer, - #[cfg(feature = "tls12")] - pub(super) session_id: SessionID, - #[cfg(feature = "tls12")] - pub(super) using_ems: bool, - pub(super) done_retry: bool, - pub(super) send_ticket: bool, -} - -impl ExpectClientHello { - pub(super) fn new(config: Arc, extra_exts: Vec) -> Self { - let mut transcript_buffer = HandshakeHashBuffer::new(); - - if config.verifier.offer_client_auth() { - transcript_buffer.set_client_auth_enabled(); - } - - Self { - config, - extra_exts, - transcript: HandshakeHashOrBuffer::Buffer(transcript_buffer), - #[cfg(feature = "tls12")] - session_id: SessionID::empty(), - #[cfg(feature = "tls12")] - using_ems: false, - done_retry: false, - send_ticket: false, - } - } - - /// Continues handling of a `ClientHello` message once config and certificate are available. - pub(super) fn with_certified_key( - self, - mut sig_schemes: Vec, - client_hello: &ClientHelloPayload, - m: &Message, - cx: &mut ServerContext<'_>, - ) -> NextStateOrError { - let tls13_enabled = self - .config - .supports_version(ProtocolVersion::TLSv1_3); - let tls12_enabled = self - .config - .supports_version(ProtocolVersion::TLSv1_2); - - // Are we doing TLS1.3? - let maybe_versions_ext = client_hello.get_versions_extension(); - let version = if let Some(versions) = maybe_versions_ext { - if versions.contains(&ProtocolVersion::TLSv1_3) && tls13_enabled { - ProtocolVersion::TLSv1_3 - } else if !versions.contains(&ProtocolVersion::TLSv1_2) || !tls12_enabled { - return Err(bad_version(cx.common, "TLS1.2 not offered/enabled")); - } else if cx.common.is_quic() { - return Err(bad_version( - cx.common, - "Expecting QUIC connection, but client does not support TLSv1_3", - )); - } else { - ProtocolVersion::TLSv1_2 - } - } else if client_hello.client_version.get_u16() < ProtocolVersion::TLSv1_2.get_u16() { - return Err(bad_version(cx.common, "Client does not support TLSv1_2")); - } else if !tls12_enabled && tls13_enabled { - return Err(bad_version( - cx.common, - "Server requires TLS1.3, but client omitted versions ext", - )); - } else if cx.common.is_quic() { - return Err(bad_version( - cx.common, - "Expecting QUIC connection, but client does not support TLSv1_3", - )); - } else { - ProtocolVersion::TLSv1_2 - }; - - cx.common.negotiated_version = Some(version); - - // We communicate to the upper layer what kind of key they should choose - // via the sigschemes value. Clients tend to treat this extension - // orthogonally to offered ciphersuites (even though, in TLS1.2 it is not). - // So: reduce the offered sigschemes to those compatible with the - // intersection of ciphersuites. - let client_suites = self - .config - .cipher_suites - .iter() - .copied() - .filter(|scs| { - client_hello - .cipher_suites - .contains(&scs.suite()) - }) - .collect::>(); - - sig_schemes - .retain(|scheme| suites::compatible_sigscheme_for_suites(*scheme, &client_suites)); - - // Choose a certificate. - let certkey = { - let client_hello = ClientHello::new( - &cx.data.sni, - &sig_schemes, - client_hello.get_alpn_extension(), - &client_hello.cipher_suites, - ); - - let certkey = self - .config - .cert_resolver - .resolve(client_hello); - - certkey.ok_or_else(|| { - cx.common - .send_fatal_alert(AlertDescription::AccessDenied); - Error::General("no server certificate chain resolved".to_string()) - })? - }; - let certkey = ActiveCertifiedKey::from_certified_key(&certkey); - - // Reduce our supported ciphersuites by the certificate. - // (no-op for TLS1.3) - let suitable_suites = - suites::reduce_given_sigalg(&self.config.cipher_suites, certkey.get_key().algorithm()); - - // And version - let suitable_suites = suites::reduce_given_version(&suitable_suites, version); - - let suite = if self.config.ignore_client_order { - suites::choose_ciphersuite_preferring_server( - &client_hello.cipher_suites, - &suitable_suites, - ) - } else { - suites::choose_ciphersuite_preferring_client( - &client_hello.cipher_suites, - &suitable_suites, - ) - } - .ok_or_else(|| incompatible(cx.common, "no ciphersuites in common"))?; - - debug!("decided upon suite {:?}", suite); - cx.common.suite = Some(suite); - - // Start handshake hash. - let starting_hash = suite.hash_algorithm(); - let transcript = match self.transcript { - HandshakeHashOrBuffer::Buffer(inner) => inner.start_hash(starting_hash), - HandshakeHashOrBuffer::Hash(inner) if inner.algorithm() == starting_hash => inner, - _ => { - return Err(cx - .common - .illegal_param("hash differed on retry")); - } - }; - - // Save their Random. - let randoms = ConnectionRandoms::new(client_hello.random, Random::new()?); - match suite { - SupportedCipherSuite::Tls13(suite) => tls13::CompleteClientHelloHandling { - config: self.config, - transcript, - suite, - randoms, - done_retry: self.done_retry, - send_ticket: self.send_ticket, - extra_exts: self.extra_exts, - } - .handle_client_hello(cx, certkey, m, client_hello, sig_schemes), - #[cfg(feature = "tls12")] - SupportedCipherSuite::Tls12(suite) => tls12::CompleteClientHelloHandling { - config: self.config, - transcript, - session_id: self.session_id, - suite, - using_ems: self.using_ems, - randoms, - send_ticket: self.send_ticket, - extra_exts: self.extra_exts, - } - .handle_client_hello( - cx, - certkey, - m, - client_hello, - sig_schemes, - tls13_enabled, - ), - } - } -} - -impl State for ExpectClientHello { - fn handle(self: Box, cx: &mut ServerContext<'_>, m: Message) -> NextStateOrError { - let (client_hello, sig_schemes) = - process_client_hello(&m, self.done_retry, cx.common, cx.data)?; - self.with_certified_key(sig_schemes, client_hello, &m, cx) - } -} - -/// Configuration-independent validation of a `ClientHello` message. -/// -/// This represents the first part of the `ClientHello` handling, where we do all validation that -/// doesn't depend on a `ServerConfig` being available and extract everything needed to build a -/// [`ClientHello`] value for a [`ResolvesServerConfig`]/`ResolvesServerCert`]. -/// -/// Note that this will modify `data.sni` even if config or certificate resolution fail. -pub(super) fn process_client_hello<'a>( - m: &'a Message, - done_retry: bool, - common: &mut CommonState, - data: &mut ServerConnectionData, -) -> Result<(&'a ClientHelloPayload, Vec), Error> { - let client_hello = - require_handshake_msg!(m, HandshakeType::ClientHello, HandshakePayload::ClientHello)?; - trace!("we got a clienthello {:?}", client_hello); - - if !client_hello - .compression_methods - .contains(&Compression::Null) - { - common.send_fatal_alert(AlertDescription::IllegalParameter); - return Err(Error::PeerIncompatibleError( - "client did not offer Null compression".to_string(), - )); - } - - if client_hello.has_duplicate_extension() { - return Err(decode_error(common, "client sent duplicate extensions")); - } - - // No handshake messages should follow this one in this flight. - common.check_aligned_handshake()?; - - // Extract and validate the SNI DNS name, if any, before giving it to - // the cert resolver. In particular, if it is invalid then we should - // send an Illegal Parameter alert instead of the Internal Error alert - // (or whatever) that we'd send if this were checked later or in a - // different way. - let sni: Option = match client_hello.get_sni_extension() { - Some(sni) => { - if sni.has_duplicate_names_for_type() { - return Err(decode_error( - common, - "ClientHello SNI contains duplicate name types", - )); - } - - if let Some(hostname) = sni.get_single_hostname() { - Some(hostname.into()) - } else { - return Err(common.illegal_param("ClientHello SNI did not contain a hostname")); - } - } - None => None, - }; - - // save only the first SNI - if let (Some(sni), false) = (&sni, done_retry) { - // Save the SNI into the session. - // The SNI hostname is immutable once set. - assert!(data.sni.is_none()); - data.sni = Some(sni.clone()) - } else if data.sni != sni { - return Err(Error::PeerIncompatibleError( - "SNI differed on retry".to_string(), - )); - } - - let sig_schemes = client_hello - .get_sigalgs_extension() - .ok_or_else(|| incompatible(common, "client didn't describe signature schemes"))? - .clone(); - - Ok((client_hello, sig_schemes)) -} - -#[allow(clippy::large_enum_variant)] -pub(crate) enum HandshakeHashOrBuffer { - Buffer(HandshakeHashBuffer), - Hash(HandshakeHash), -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/server/server_conn.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/server/server_conn.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/server/server_conn.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/server/server_conn.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,849 +0,0 @@ -use crate::builder::{ConfigBuilder, WantsCipherSuites}; -use crate::conn::{CommonState, ConnectionCommon, Side, State}; -use crate::enums::{CipherSuite, ProtocolVersion, SignatureScheme}; -use crate::error::Error; -use crate::kx::SupportedKxGroup; -#[cfg(feature = "logging")] -use crate::log::trace; -use crate::msgs::base::{Payload, PayloadU8}; -#[cfg(feature = "quic")] -use crate::msgs::enums::AlertDescription; -use crate::msgs::handshake::{ClientHelloPayload, ServerExtension}; -use crate::msgs::message::Message; -use crate::sign; -use crate::suites::SupportedCipherSuite; -use crate::vecbuf::ChunkVecBuffer; -use crate::verify; -#[cfg(feature = "secret_extraction")] -use crate::ExtractedSecrets; -use crate::KeyLog; -#[cfg(feature = "quic")] -use crate::{conn::Protocol, quic}; - -use super::hs; - -use std::marker::PhantomData; -use std::ops::{Deref, DerefMut}; -use std::sync::Arc; -use std::{fmt, io}; - -/// A trait for the ability to store server session data. -/// -/// The keys and values are opaque. -/// -/// Both the keys and values should be treated as -/// **highly sensitive data**, containing enough key material -/// to break all security of the corresponding sessions. -/// -/// Implementations can be lossy (in other words, forgetting -/// key/value pairs) without any negative security consequences. -/// -/// However, note that `take` **must** reliably delete a returned -/// value. If it does not, there may be security consequences. -/// -/// `put` and `take` are mutating operations; this isn't expressed -/// in the type system to allow implementations freedom in -/// how to achieve interior mutability. `Mutex` is a common -/// choice. -pub trait StoresServerSessions: Send + Sync { - /// Store session secrets encoded in `value` against `key`, - /// overwrites any existing value against `key`. Returns `true` - /// if the value was stored. - fn put(&self, key: Vec, value: Vec) -> bool; - - /// Find a value with the given `key`. Return it, or None - /// if it doesn't exist. - fn get(&self, key: &[u8]) -> Option>; - - /// Find a value with the given `key`. Return it and delete it; - /// or None if it doesn't exist. - fn take(&self, key: &[u8]) -> Option>; - - /// Whether the store can cache another session. This is used to indicate to clients - /// whether their session can be resumed; the implementation is not required to remember - /// a session even if it returns `true` here. - fn can_cache(&self) -> bool; -} - -/// A trait for the ability to encrypt and decrypt tickets. -pub trait ProducesTickets: Send + Sync { - /// Returns true if this implementation will encrypt/decrypt - /// tickets. Should return false if this is a dummy - /// implementation: the server will not send the SessionTicket - /// extension and will not call the other functions. - fn enabled(&self) -> bool; - - /// Returns the lifetime in seconds of tickets produced now. - /// The lifetime is provided as a hint to clients that the - /// ticket will not be useful after the given time. - /// - /// This lifetime must be implemented by key rolling and - /// erasure, *not* by storing a lifetime in the ticket. - /// - /// The objective is to limit damage to forward secrecy caused - /// by tickets, not just limiting their lifetime. - fn lifetime(&self) -> u32; - - /// Encrypt and authenticate `plain`, returning the resulting - /// ticket. Return None if `plain` cannot be encrypted for - /// some reason: an empty ticket will be sent and the connection - /// will continue. - fn encrypt(&self, plain: &[u8]) -> Option>; - - /// Decrypt `cipher`, validating its authenticity protection - /// and recovering the plaintext. `cipher` is fully attacker - /// controlled, so this decryption must be side-channel free, - /// panic-proof, and otherwise bullet-proof. If the decryption - /// fails, return None. - fn decrypt(&self, cipher: &[u8]) -> Option>; -} - -/// How to choose a certificate chain and signing key for use -/// in server authentication. -pub trait ResolvesServerCert: Send + Sync { - /// Choose a certificate chain and matching key given simplified - /// ClientHello information. - /// - /// Return `None` to abort the handshake. - fn resolve(&self, client_hello: ClientHello) -> Option>; -} - -/// A struct representing the received Client Hello -pub struct ClientHello<'a> { - server_name: &'a Option, - signature_schemes: &'a [SignatureScheme], - alpn: Option<&'a Vec>, - cipher_suites: &'a [CipherSuite], -} - -impl<'a> ClientHello<'a> { - /// Creates a new ClientHello - pub(super) fn new( - server_name: &'a Option, - signature_schemes: &'a [SignatureScheme], - alpn: Option<&'a Vec>, - cipher_suites: &'a [CipherSuite], - ) -> Self { - trace!("sni {:?}", server_name); - trace!("sig schemes {:?}", signature_schemes); - trace!("alpn protocols {:?}", alpn); - trace!("cipher suites {:?}", cipher_suites); - - ClientHello { - server_name, - signature_schemes, - alpn, - cipher_suites, - } - } - - /// Get the server name indicator. - /// - /// Returns `None` if the client did not supply a SNI. - pub fn server_name(&self) -> Option<&str> { - self.server_name - .as_ref() - .map(>::as_ref) - } - - /// Get the compatible signature schemes. - /// - /// Returns standard-specified default if the client omitted this extension. - pub fn signature_schemes(&self) -> &[SignatureScheme] { - self.signature_schemes - } - - /// Get the ALPN protocol identifiers submitted by the client. - /// - /// Returns `None` if the client did not include an ALPN extension. - /// - /// Application Layer Protocol Negotiation (ALPN) is a TLS extension that lets a client - /// submit a set of identifiers that each a represent an application-layer protocol. - /// The server will then pick its preferred protocol from the set submitted by the client. - /// Each identifier is represented as a byte array, although common values are often ASCII-encoded. - /// See the official RFC-7301 specifications at - /// for more information on ALPN. - /// - /// For example, a HTTP client might specify "http/1.1" and/or "h2". Other well-known values - /// are listed in the at IANA registry at - /// . - /// - /// The server can specify supported ALPN protocols by setting [`ServerConfig::alpn_protocols`]. - /// During the handshake, the server will select the first protocol configured that the client supports. - pub fn alpn(&self) -> Option> { - self.alpn.map(|protocols| { - protocols - .iter() - .map(|proto| proto.0.as_slice()) - }) - } - - /// Get cipher suites. - pub fn cipher_suites(&self) -> &[CipherSuite] { - self.cipher_suites - } -} - -/// Common configuration for a set of server sessions. -/// -/// Making one of these can be expensive, and should be -/// once per process rather than once per connection. -/// -/// These must be created via the [`ServerConfig::builder()`] function. -/// -/// # Defaults -/// -/// * [`ServerConfig::max_fragment_size`]: the default is `None`: TLS packets are not fragmented to a specific size. -/// * [`ServerConfig::session_storage`]: the default stores 256 sessions in memory. -/// * [`ServerConfig::alpn_protocols`]: the default is empty -- no ALPN protocol is negotiated. -/// * [`ServerConfig::key_log`]: key material is not logged. -#[derive(Clone)] -pub struct ServerConfig { - /// List of ciphersuites, in preference order. - pub(super) cipher_suites: Vec, - - /// List of supported key exchange groups. - /// - /// The first is the highest priority: they will be - /// offered to the client in this order. - pub(super) kx_groups: Vec<&'static SupportedKxGroup>, - - /// Ignore the client's ciphersuite order. Instead, - /// choose the top ciphersuite in the server list - /// which is supported by the client. - pub ignore_client_order: bool, - - /// The maximum size of TLS message we'll emit. If None, we don't limit TLS - /// message lengths except to the 2**16 limit specified in the standard. - /// - /// rustls enforces an arbitrary minimum of 32 bytes for this field. - /// Out of range values are reported as errors from ServerConnection::new. - /// - /// Setting this value to the TCP MSS may improve latency for stream-y workloads. - pub max_fragment_size: Option, - - /// How to store client sessions. - pub session_storage: Arc, - - /// How to produce tickets. - pub ticketer: Arc, - - /// How to choose a server cert and key. - pub cert_resolver: Arc, - - /// Protocol names we support, most preferred first. - /// If empty we don't do ALPN at all. - pub alpn_protocols: Vec>, - - /// Supported protocol versions, in no particular order. - /// The default is all supported versions. - pub(super) versions: crate::versions::EnabledVersions, - - /// How to verify client certificates. - pub(super) verifier: Arc, - - /// How to output key material for debugging. The default - /// does nothing. - pub key_log: Arc, - - /// Allows traffic secrets to be extracted after the handshake, - /// e.g. for kTLS setup. - #[cfg(feature = "secret_extraction")] - pub enable_secret_extraction: bool, - - /// Amount of early data to accept for sessions created by - /// this config. Specify 0 to disable early data. The - /// default is 0. - /// - /// Read the early data via [`ServerConnection::early_data`]. - /// - /// The units for this are _both_ plaintext bytes, _and_ ciphertext - /// bytes, depending on whether the server accepts a client's early_data - /// or not. It is therefore recommended to include some slop in - /// this value to account for the unknown amount of ciphertext - /// expansion in the latter case. - pub max_early_data_size: u32, - - /// Whether the server should send "0.5RTT" data. This means the server - /// sends data after its first flight of handshake messages, without - /// waiting for the client to complete the handshake. - /// - /// This can improve TTFB latency for either server-speaks-first protocols, - /// or client-speaks-first protocols when paired with "0RTT" data. This - /// comes at the cost of a subtle weakening of the normal handshake - /// integrity guarantees that TLS provides. Note that the initial - /// `ClientHello` is indirectly authenticated because it is included - /// in the transcript used to derive the keys used to encrypt the data. - /// - /// This only applies to TLS1.3 connections. TLS1.2 connections cannot - /// do this optimisation and this setting is ignored for them. It is - /// also ignored for TLS1.3 connections that even attempt client - /// authentication. - /// - /// This defaults to false. This means the first application data - /// sent by the server comes after receiving and validating the client's - /// handshake up to the `Finished` message. This is the safest option. - pub send_half_rtt_data: bool, -} - -impl fmt::Debug for ServerConfig { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("ServerConfig") - .field("ignore_client_order", &self.ignore_client_order) - .field("max_fragment_size", &self.max_fragment_size) - .field("alpn_protocols", &self.alpn_protocols) - .field("max_early_data_size", &self.max_early_data_size) - .field("send_half_rtt_data", &self.send_half_rtt_data) - .finish_non_exhaustive() - } -} - -impl ServerConfig { - /// Create builder to build up the server configuration. - /// - /// For more information, see the [`ConfigBuilder`] documentation. - pub fn builder() -> ConfigBuilder { - ConfigBuilder { - state: WantsCipherSuites(()), - side: PhantomData::default(), - } - } - - #[doc(hidden)] - /// We support a given TLS version if it's quoted in the configured - /// versions *and* at least one ciphersuite for this version is - /// also configured. - pub fn supports_version(&self, v: ProtocolVersion) -> bool { - self.versions.contains(v) - && self - .cipher_suites - .iter() - .any(|cs| cs.version().version == v) - } -} - -/// Allows reading of early data in resumed TLS1.3 connections. -/// -/// "Early data" is also known as "0-RTT data". -/// -/// This structure implements [`std::io::Read`]. -pub struct ReadEarlyData<'a> { - early_data: &'a mut EarlyDataState, -} - -impl<'a> ReadEarlyData<'a> { - fn new(early_data: &'a mut EarlyDataState) -> Self { - ReadEarlyData { early_data } - } -} - -impl<'a> std::io::Read for ReadEarlyData<'a> { - fn read(&mut self, buf: &mut [u8]) -> io::Result { - self.early_data.read(buf) - } - - #[cfg(read_buf)] - fn read_buf(&mut self, cursor: io::BorrowedCursor<'_>) -> io::Result<()> { - self.early_data.read_buf(cursor) - } -} - -/// This represents a single TLS server connection. -/// -/// Send TLS-protected data to the peer using the `io::Write` trait implementation. -/// Read data from the peer using the `io::Read` trait implementation. -pub struct ServerConnection { - inner: ConnectionCommon, -} - -impl ServerConnection { - /// Make a new ServerConnection. `config` controls how - /// we behave in the TLS protocol. - pub fn new(config: Arc) -> Result { - Self::from_config(config, vec![]) - } - - fn from_config( - config: Arc, - extra_exts: Vec, - ) -> Result { - let mut common = CommonState::new(Side::Server); - common.set_max_fragment_size(config.max_fragment_size)?; - #[cfg(feature = "secret_extraction")] - { - common.enable_secret_extraction = config.enable_secret_extraction; - } - Ok(Self { - inner: ConnectionCommon::new( - Box::new(hs::ExpectClientHello::new(config, extra_exts)), - ServerConnectionData::default(), - common, - ), - }) - } - - /// Retrieves the SNI hostname, if any, used to select the certificate and - /// private key. - /// - /// This returns `None` until some time after the client's SNI extension - /// value is processed during the handshake. It will never be `None` when - /// the connection is ready to send or process application data, unless the - /// client does not support SNI. - /// - /// This is useful for application protocols that need to enforce that the - /// SNI hostname matches an application layer protocol hostname. For - /// example, HTTP/1.1 servers commonly expect the `Host:` header field of - /// every request on a connection to match the hostname in the SNI extension - /// when the client provides the SNI extension. - /// - /// The SNI hostname is also used to match sessions during session - /// resumption. - pub fn sni_hostname(&self) -> Option<&str> { - self.inner.data.get_sni_str() - } - - /// Application-controlled portion of the resumption ticket supplied by the client, if any. - /// - /// Recovered from the prior session's `set_resumption_data`. Integrity is guaranteed by rustls. - /// - /// Returns `Some` iff a valid resumption ticket has been received from the client. - pub fn received_resumption_data(&self) -> Option<&[u8]> { - self.inner - .data - .received_resumption_data - .as_ref() - .map(|x| &x[..]) - } - - /// Set the resumption data to embed in future resumption tickets supplied to the client. - /// - /// Defaults to the empty byte string. Must be less than 2^15 bytes to allow room for other - /// data. Should be called while `is_handshaking` returns true to ensure all transmitted - /// resumption tickets are affected. - /// - /// Integrity will be assured by rustls, but the data will be visible to the client. If secrecy - /// from the client is desired, encrypt the data separately. - pub fn set_resumption_data(&mut self, data: &[u8]) { - assert!(data.len() < 2usize.pow(15)); - self.inner.data.resumption_data = data.into(); - } - - /// Explicitly discard early data, notifying the client - /// - /// Useful if invariants encoded in `received_resumption_data()` cannot be respected. - /// - /// Must be called while `is_handshaking` is true. - pub fn reject_early_data(&mut self) { - assert!( - self.is_handshaking(), - "cannot retroactively reject early data" - ); - self.inner.data.early_data.reject(); - } - - /// Returns an `io::Read` implementer you can read bytes from that are - /// received from a client as TLS1.3 0RTT/"early" data, during the handshake. - /// - /// This returns `None` in many circumstances, such as : - /// - /// - Early data is disabled if [`ServerConfig::max_early_data_size`] is zero (the default). - /// - The session negotiated with the client is not TLS1.3. - /// - The client just doesn't support early data. - /// - The connection doesn't resume an existing session. - /// - The client hasn't sent a full ClientHello yet. - pub fn early_data(&mut self) -> Option { - if self - .inner - .data - .early_data - .was_accepted() - { - Some(ReadEarlyData::new(&mut self.inner.data.early_data)) - } else { - None - } - } - - /// Extract secrets, so they can be used when configuring kTLS, for example. - #[cfg(feature = "secret_extraction")] - pub fn extract_secrets(self) -> Result { - self.inner.extract_secrets() - } -} - -impl fmt::Debug for ServerConnection { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - f.debug_struct("ServerConnection") - .finish() - } -} - -impl Deref for ServerConnection { - type Target = ConnectionCommon; - - fn deref(&self) -> &Self::Target { - &self.inner - } -} - -impl DerefMut for ServerConnection { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.inner - } -} - -impl From for crate::Connection { - fn from(conn: ServerConnection) -> Self { - Self::Server(conn) - } -} - -/// Handle on a server-side connection before configuration is available. -/// -/// The `Acceptor` allows the caller to provide a [`ServerConfig`] based on the [`ClientHello`] of -/// the incoming connection. -pub struct Acceptor { - inner: Option>, -} - -impl Default for Acceptor { - fn default() -> Self { - Self { - inner: Some(ConnectionCommon::new( - Box::new(Accepting), - ServerConnectionData::default(), - CommonState::new(Side::Server), - )), - } - } -} - -impl Acceptor { - /// Create a new `Acceptor`. - #[deprecated( - since = "0.20.7", - note = "Use Acceptor::default instead for an infallible constructor" - )] - pub fn new() -> Result { - Ok(Self::default()) - } - - /// Returns true if the caller should call [`Connection::read_tls()`] as soon as possible. - /// - /// Since the purpose of an Acceptor is to read and then parse TLS bytes, this always returns true. - /// - /// [`Connection::read_tls()`]: crate::Connection::read_tls - #[deprecated(since = "0.20.7", note = "Always returns true")] - pub fn wants_read(&self) -> bool { - self.inner - .as_ref() - .map(|conn| conn.common_state.wants_read()) - .unwrap_or(false) - } - - /// Read TLS content from `rd`. - /// - /// Returns an error if this `Acceptor` has already yielded an [`Accepted`]. For more details, - /// refer to [`Connection::read_tls()`]. - /// - /// [`Connection::read_tls()`]: crate::Connection::read_tls - pub fn read_tls(&mut self, rd: &mut dyn io::Read) -> Result { - match &mut self.inner { - Some(conn) => conn.read_tls(rd), - None => Err(io::Error::new( - io::ErrorKind::Other, - "acceptor cannot read after successful acceptance", - )), - } - } - - /// Check if a `ClientHello` message has been received. - /// - /// Returns `Ok(None)` if the complete `ClientHello` has not yet been received. - /// Do more I/O and then call this function again. - /// - /// Returns `Ok(Some(accepted))` if the connection has been accepted. Call - /// `accepted.into_connection()` to continue. Do not call this function again. - /// - /// Returns `Err(err)` if an error occurred. Do not call this function again. - pub fn accept(&mut self) -> Result, Error> { - let mut connection = match self.inner.take() { - Some(conn) => conn, - None => { - return Err(Error::General("Acceptor polled after completion".into())); - } - }; - - let message = match connection.first_handshake_message()? { - Some(msg) => msg, - None => { - self.inner = Some(connection); - return Ok(None); - } - }; - - let (_, sig_schemes) = hs::process_client_hello( - &message, - false, - &mut connection.common_state, - &mut connection.data, - )?; - - Ok(Some(Accepted { - connection, - message, - sig_schemes, - })) - } -} - -/// Represents a `ClientHello` message received through the [`Acceptor`]. -/// -/// Contains the state required to resume the connection through [`Accepted::into_connection()`]. -pub struct Accepted { - connection: ConnectionCommon, - message: Message, - sig_schemes: Vec, -} - -impl Accepted { - /// Get the [`ClientHello`] for this connection. - pub fn client_hello(&self) -> ClientHello<'_> { - let payload = Self::client_hello_payload(&self.message); - ClientHello::new( - &self.connection.data.sni, - &self.sig_schemes, - payload.get_alpn_extension(), - &payload.cipher_suites, - ) - } - - /// Convert the [`Accepted`] into a [`ServerConnection`]. - /// - /// Takes the state returned from [`Acceptor::accept()`] as well as the [`ServerConfig`] and - /// [`sign::CertifiedKey`] that should be used for the session. Returns an error if - /// configuration-dependent validation of the received `ClientHello` message fails. - pub fn into_connection(mut self, config: Arc) -> Result { - self.connection - .common_state - .set_max_fragment_size(config.max_fragment_size)?; - - #[cfg(feature = "secret_extraction")] - { - self.connection - .common_state - .enable_secret_extraction = config.enable_secret_extraction; - } - - let state = hs::ExpectClientHello::new(config, Vec::new()); - let mut cx = hs::ServerContext { - common: &mut self.connection.common_state, - data: &mut self.connection.data, - }; - - let new = state.with_certified_key( - self.sig_schemes, - Self::client_hello_payload(&self.message), - &self.message, - &mut cx, - )?; - - self.connection.replace_state(new); - Ok(ServerConnection { - inner: self.connection, - }) - } - - fn client_hello_payload(message: &Message) -> &ClientHelloPayload { - match &message.payload { - crate::msgs::message::MessagePayload::Handshake { parsed, .. } => match &parsed.payload - { - crate::msgs::handshake::HandshakePayload::ClientHello(ch) => ch, - _ => unreachable!(), - }, - _ => unreachable!(), - } - } -} - -struct Accepting; - -impl State for Accepting { - fn handle( - self: Box, - _cx: &mut hs::ServerContext<'_>, - _m: Message, - ) -> Result>, Error> { - Err(Error::General("unreachable state".into())) - } -} - -pub(super) enum EarlyDataState { - New, - Accepted(ChunkVecBuffer), - Rejected, -} - -impl Default for EarlyDataState { - fn default() -> Self { - Self::New - } -} - -impl EarlyDataState { - pub(super) fn reject(&mut self) { - *self = Self::Rejected; - } - - pub(super) fn accept(&mut self, max_size: usize) { - *self = Self::Accepted(ChunkVecBuffer::new(Some(max_size))); - } - - fn was_accepted(&self) -> bool { - matches!(self, Self::Accepted(_)) - } - - pub(super) fn was_rejected(&self) -> bool { - matches!(self, Self::Rejected) - } - - fn read(&mut self, buf: &mut [u8]) -> io::Result { - match self { - Self::Accepted(ref mut received) => received.read(buf), - _ => Err(io::Error::from(io::ErrorKind::BrokenPipe)), - } - } - - #[cfg(read_buf)] - fn read_buf(&mut self, cursor: io::BorrowedCursor<'_>) -> io::Result<()> { - match self { - Self::Accepted(ref mut received) => received.read_buf(cursor), - _ => Err(io::Error::from(io::ErrorKind::BrokenPipe)), - } - } - - pub(super) fn take_received_plaintext(&mut self, bytes: Payload) -> bool { - let available = bytes.0.len(); - match self { - Self::Accepted(ref mut received) if received.apply_limit(available) == available => { - received.append(bytes.0); - true - } - _ => false, - } - } -} - -// these branches not reachable externally, unless something else goes wrong. -#[test] -fn test_read_in_new_state() { - assert_eq!( - format!("{:?}", EarlyDataState::default().read(&mut [0u8; 5])), - "Err(Kind(BrokenPipe))" - ); -} - -#[cfg(read_buf)] -#[test] -fn test_read_buf_in_new_state() { - use std::io::BorrowedBuf; - - let mut buf = [0u8; 5]; - let mut buf: BorrowedBuf<'_> = buf.as_mut_slice().into(); - assert_eq!( - format!("{:?}", EarlyDataState::default().read_buf(buf.unfilled())), - "Err(Kind(BrokenPipe))" - ); -} - -/// State associated with a server connection. -#[derive(Default)] -pub struct ServerConnectionData { - pub(super) sni: Option, - pub(super) received_resumption_data: Option>, - pub(super) resumption_data: Vec, - pub(super) early_data: EarlyDataState, -} - -impl ServerConnectionData { - pub(super) fn get_sni_str(&self) -> Option<&str> { - self.sni.as_ref().map(AsRef::as_ref) - } -} - -impl crate::conn::SideData for ServerConnectionData {} - -#[cfg(feature = "quic")] -impl quic::QuicExt for ServerConnection { - fn quic_transport_parameters(&self) -> Option<&[u8]> { - self.inner - .common_state - .quic - .params - .as_ref() - .map(|v| v.as_ref()) - } - - fn zero_rtt_keys(&self) -> Option { - Some(quic::DirectionalKeys::new( - self.inner - .common_state - .suite - .and_then(|suite| suite.tls13())?, - self.inner - .common_state - .quic - .early_secret - .as_ref()?, - )) - } - - fn read_hs(&mut self, plaintext: &[u8]) -> Result<(), Error> { - self.inner.read_quic_hs(plaintext) - } - - fn write_hs(&mut self, buf: &mut Vec) -> Option { - quic::write_hs(&mut self.inner.common_state, buf) - } - - fn alert(&self) -> Option { - self.inner.common_state.quic.alert - } -} - -/// Methods specific to QUIC server sessions -#[cfg(feature = "quic")] -#[cfg_attr(docsrs, doc(cfg(feature = "quic")))] -pub trait ServerQuicExt { - /// Make a new QUIC ServerConnection. This differs from `ServerConnection::new()` - /// in that it takes an extra argument, `params`, which contains the - /// TLS-encoded transport parameters to send. - fn new_quic( - config: Arc, - quic_version: quic::Version, - params: Vec, - ) -> Result { - if !config.supports_version(ProtocolVersion::TLSv1_3) { - return Err(Error::General( - "TLS 1.3 support is required for QUIC".into(), - )); - } - - if config.max_early_data_size != 0 && config.max_early_data_size != 0xffff_ffff { - return Err(Error::General( - "QUIC sessions must set a max early data of 0 or 2^32-1".into(), - )); - } - - let ext = match quic_version { - quic::Version::V1Draft => ServerExtension::TransportParametersDraft(params), - quic::Version::V1 => ServerExtension::TransportParameters(params), - }; - let mut new = ServerConnection::from_config(config, vec![ext])?; - new.inner.common_state.protocol = Protocol::Quic; - Ok(new) - } -} - -#[cfg(feature = "quic")] -impl ServerQuicExt for ServerConnection {} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/server/tls12.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/server/tls12.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/server/tls12.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/server/tls12.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,941 +0,0 @@ -use crate::check::inappropriate_message; -use crate::conn::{CommonState, ConnectionRandoms, Side, State}; -use crate::enums::ProtocolVersion; -use crate::error::Error; -use crate::hash_hs::HandshakeHash; -use crate::key::Certificate; -#[cfg(feature = "logging")] -use crate::log::{debug, trace}; -use crate::msgs::base::Payload; -use crate::msgs::ccs::ChangeCipherSpecPayload; -use crate::msgs::codec::Codec; -use crate::msgs::enums::{AlertDescription, ContentType, HandshakeType}; -use crate::msgs::handshake::{ClientECDHParams, HandshakeMessagePayload, HandshakePayload}; -use crate::msgs::handshake::{NewSessionTicketPayload, SessionID}; -use crate::msgs::message::{Message, MessagePayload}; -use crate::msgs::persist; -#[cfg(feature = "secret_extraction")] -use crate::suites::PartiallyExtractedSecrets; -use crate::tls12::{self, ConnectionSecrets, Tls12CipherSuite}; -use crate::{kx, ticketer, verify}; - -use super::common::ActiveCertifiedKey; -use super::hs::{self, ServerContext}; -use super::server_conn::{ProducesTickets, ServerConfig, ServerConnectionData}; - -use ring::constant_time; - -use std::sync::Arc; - -pub(super) use client_hello::CompleteClientHelloHandling; - -mod client_hello { - use crate::enums::SignatureScheme; - use crate::msgs::enums::ECPointFormat; - use crate::msgs::enums::{ClientCertificateType, Compression}; - use crate::msgs::handshake::{CertificateRequestPayload, ClientSessionTicket, Random}; - use crate::msgs::handshake::{ - CertificateStatus, DigitallySignedStruct, ECDHEServerKeyExchange, - }; - use crate::msgs::handshake::{ClientExtension, SessionID}; - use crate::msgs::handshake::{ClientHelloPayload, ServerHelloPayload}; - use crate::msgs::handshake::{ECPointFormatList, ServerECDHParams, SupportedPointFormats}; - use crate::msgs::handshake::{ServerExtension, ServerKeyExchangePayload}; - use crate::sign; - - use super::*; - - pub(in crate::server) struct CompleteClientHelloHandling { - pub(in crate::server) config: Arc, - pub(in crate::server) transcript: HandshakeHash, - pub(in crate::server) session_id: SessionID, - pub(in crate::server) suite: &'static Tls12CipherSuite, - pub(in crate::server) using_ems: bool, - pub(in crate::server) randoms: ConnectionRandoms, - pub(in crate::server) send_ticket: bool, - pub(in crate::server) extra_exts: Vec, - } - - impl CompleteClientHelloHandling { - pub(in crate::server) fn handle_client_hello( - mut self, - cx: &mut ServerContext<'_>, - server_key: ActiveCertifiedKey, - chm: &Message, - client_hello: &ClientHelloPayload, - sigschemes_ext: Vec, - tls13_enabled: bool, - ) -> hs::NextStateOrError { - // -- TLS1.2 only from hereon in -- - self.transcript.add_message(chm); - - if client_hello.ems_support_offered() { - self.using_ems = true; - } - - let groups_ext = client_hello - .get_namedgroups_extension() - .ok_or_else(|| hs::incompatible(cx.common, "client didn't describe groups"))?; - let ecpoints_ext = client_hello - .get_ecpoints_extension() - .ok_or_else(|| hs::incompatible(cx.common, "client didn't describe ec points"))?; - - trace!("namedgroups {:?}", groups_ext); - trace!("ecpoints {:?}", ecpoints_ext); - - if !ecpoints_ext.contains(&ECPointFormat::Uncompressed) { - cx.common - .send_fatal_alert(AlertDescription::IllegalParameter); - return Err(Error::PeerIncompatibleError( - "client didn't support uncompressed ec points".to_string(), - )); - } - - // -- If TLS1.3 is enabled, signal the downgrade in the server random - if tls13_enabled { - self.randoms.server[24..].copy_from_slice(&tls12::DOWNGRADE_SENTINEL); - } - - // -- Check for resumption -- - // We can do this either by (in order of preference): - // 1. receiving a ticket that decrypts - // 2. receiving a sessionid that is in our cache - // - // If we receive a ticket, the sessionid won't be in our - // cache, so don't check. - // - // If either works, we end up with a ServerConnectionValue - // which is passed to start_resumption and concludes - // our handling of the ClientHello. - // - let mut ticket_received = false; - let resume_data = client_hello - .get_ticket_extension() - .and_then(|ticket_ext| match ticket_ext { - ClientExtension::SessionTicket(ClientSessionTicket::Offer(ticket)) => { - Some(ticket) - } - _ => None, - }) - .and_then(|ticket| { - ticket_received = true; - debug!("Ticket received"); - let data = self.config.ticketer.decrypt(&ticket.0); - if data.is_none() { - debug!("Ticket didn't decrypt"); - } - data - }) - .or_else(|| { - // Perhaps resume? If we received a ticket, the sessionid - // does not correspond to a real session. - if client_hello.session_id.is_empty() || ticket_received { - return None; - } - - self.config - .session_storage - .get(&client_hello.session_id.get_encoding()) - }) - .and_then(|x| persist::ServerSessionValue::read_bytes(&x)) - .filter(|resumedata| { - hs::can_resume(self.suite.into(), &cx.data.sni, self.using_ems, resumedata) - }); - - if let Some(data) = resume_data { - return self.start_resumption(cx, client_hello, &client_hello.session_id, data); - } - - // Now we have chosen a ciphersuite, we can make kx decisions. - let sigschemes = self - .suite - .resolve_sig_schemes(&sigschemes_ext); - - if sigschemes.is_empty() { - return Err(hs::incompatible(cx.common, "no overlapping sigschemes")); - } - - let group = self - .config - .kx_groups - .iter() - .find(|skxg| groups_ext.contains(&skxg.name)) - .cloned() - .ok_or_else(|| hs::incompatible(cx.common, "no supported group"))?; - - let ecpoint = ECPointFormatList::supported() - .iter() - .find(|format| ecpoints_ext.contains(format)) - .cloned() - .ok_or_else(|| hs::incompatible(cx.common, "no supported point format"))?; - - debug_assert_eq!(ecpoint, ECPointFormat::Uncompressed); - - let (mut ocsp_response, mut sct_list) = - (server_key.get_ocsp(), server_key.get_sct_list()); - - // If we're not offered a ticket or a potential session ID, allocate a session ID. - if !self.config.session_storage.can_cache() { - self.session_id = SessionID::empty(); - } else if self.session_id.is_empty() && !ticket_received { - self.session_id = SessionID::random()?; - } - - self.send_ticket = emit_server_hello( - &self.config, - &mut self.transcript, - cx, - self.session_id, - self.suite, - self.using_ems, - &mut ocsp_response, - &mut sct_list, - client_hello, - None, - &self.randoms, - self.extra_exts, - )?; - emit_certificate(&mut self.transcript, cx.common, server_key.get_cert()); - if let Some(ocsp_response) = ocsp_response { - emit_cert_status(&mut self.transcript, cx.common, ocsp_response); - } - let server_kx = emit_server_kx( - &mut self.transcript, - cx.common, - sigschemes, - group, - server_key.get_key(), - &self.randoms, - )?; - let doing_client_auth = emit_certificate_req(&self.config, &mut self.transcript, cx)?; - emit_server_hello_done(&mut self.transcript, cx.common); - - if doing_client_auth { - Ok(Box::new(ExpectCertificate { - config: self.config, - transcript: self.transcript, - randoms: self.randoms, - session_id: self.session_id, - suite: self.suite, - using_ems: self.using_ems, - server_kx, - send_ticket: self.send_ticket, - })) - } else { - Ok(Box::new(ExpectClientKx { - config: self.config, - transcript: self.transcript, - randoms: self.randoms, - session_id: self.session_id, - suite: self.suite, - using_ems: self.using_ems, - server_kx, - client_cert: None, - send_ticket: self.send_ticket, - })) - } - } - - fn start_resumption( - mut self, - cx: &mut ServerContext<'_>, - client_hello: &ClientHelloPayload, - id: &SessionID, - resumedata: persist::ServerSessionValue, - ) -> hs::NextStateOrError { - debug!("Resuming connection"); - - if resumedata.extended_ms && !self.using_ems { - return Err(cx - .common - .illegal_param("refusing to resume without ems")); - } - - self.session_id = *id; - self.send_ticket = emit_server_hello( - &self.config, - &mut self.transcript, - cx, - self.session_id, - self.suite, - self.using_ems, - &mut None, - &mut None, - client_hello, - Some(&resumedata), - &self.randoms, - self.extra_exts, - )?; - - let secrets = ConnectionSecrets::new_resume( - self.randoms, - self.suite, - &resumedata.master_secret.0, - ); - self.config.key_log.log( - "CLIENT_RANDOM", - &secrets.randoms.client, - &secrets.master_secret, - ); - cx.common - .start_encryption_tls12(&secrets, Side::Server); - cx.common.peer_certificates = resumedata.client_cert_chain; - - if self.send_ticket { - emit_ticket( - &secrets, - &mut self.transcript, - self.using_ems, - cx, - &*self.config.ticketer, - )?; - } - emit_ccs(cx.common); - cx.common - .record_layer - .start_encrypting(); - emit_finished(&secrets, &mut self.transcript, cx.common); - - Ok(Box::new(ExpectCcs { - config: self.config, - secrets, - transcript: self.transcript, - session_id: self.session_id, - using_ems: self.using_ems, - resuming: true, - send_ticket: self.send_ticket, - })) - } - } - - fn emit_server_hello( - config: &ServerConfig, - transcript: &mut HandshakeHash, - cx: &mut ServerContext<'_>, - session_id: SessionID, - suite: &'static Tls12CipherSuite, - using_ems: bool, - ocsp_response: &mut Option<&[u8]>, - sct_list: &mut Option<&[u8]>, - hello: &ClientHelloPayload, - resumedata: Option<&persist::ServerSessionValue>, - randoms: &ConnectionRandoms, - extra_exts: Vec, - ) -> Result { - let mut ep = hs::ExtensionProcessing::new(); - ep.process_common( - config, - cx, - ocsp_response, - sct_list, - hello, - resumedata, - extra_exts, - )?; - ep.process_tls12(config, hello, using_ems); - - let sh = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::ServerHello, - payload: HandshakePayload::ServerHello(ServerHelloPayload { - legacy_version: ProtocolVersion::TLSv1_2, - random: Random::from(randoms.server), - session_id, - cipher_suite: suite.common.suite, - compression_method: Compression::Null, - extensions: ep.exts, - }), - }), - }; - - trace!("sending server hello {:?}", sh); - transcript.add_message(&sh); - cx.common.send_msg(sh, false); - Ok(ep.send_ticket) - } - - fn emit_certificate( - transcript: &mut HandshakeHash, - common: &mut CommonState, - cert_chain: &[Certificate], - ) { - let c = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::Certificate, - payload: HandshakePayload::Certificate(cert_chain.to_owned()), - }), - }; - - transcript.add_message(&c); - common.send_msg(c, false); - } - - fn emit_cert_status(transcript: &mut HandshakeHash, common: &mut CommonState, ocsp: &[u8]) { - let st = CertificateStatus::new(ocsp.to_owned()); - - let c = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::CertificateStatus, - payload: HandshakePayload::CertificateStatus(st), - }), - }; - - transcript.add_message(&c); - common.send_msg(c, false); - } - - fn emit_server_kx( - transcript: &mut HandshakeHash, - common: &mut CommonState, - sigschemes: Vec, - skxg: &'static kx::SupportedKxGroup, - signing_key: &dyn sign::SigningKey, - randoms: &ConnectionRandoms, - ) -> Result { - let kx = kx::KeyExchange::start(skxg).ok_or(Error::FailedToGetRandomBytes)?; - let secdh = ServerECDHParams::new(skxg.name, kx.pubkey.as_ref()); - - let mut msg = Vec::new(); - msg.extend(randoms.client); - msg.extend(randoms.server); - secdh.encode(&mut msg); - - let signer = signing_key - .choose_scheme(&sigschemes) - .ok_or_else(|| Error::General("incompatible signing key".to_string()))?; - let sigscheme = signer.scheme(); - let sig = signer.sign(&msg)?; - - let skx = ServerKeyExchangePayload::ECDHE(ECDHEServerKeyExchange { - params: secdh, - dss: DigitallySignedStruct::new(sigscheme, sig), - }); - - let m = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::ServerKeyExchange, - payload: HandshakePayload::ServerKeyExchange(skx), - }), - }; - - transcript.add_message(&m); - common.send_msg(m, false); - Ok(kx) - } - - fn emit_certificate_req( - config: &ServerConfig, - transcript: &mut HandshakeHash, - cx: &mut ServerContext<'_>, - ) -> Result { - let client_auth = &config.verifier; - - if !client_auth.offer_client_auth() { - return Ok(false); - } - - let verify_schemes = client_auth.supported_verify_schemes(); - - let names = client_auth - .client_auth_root_subjects() - .ok_or_else(|| { - debug!("could not determine root subjects based on SNI"); - cx.common - .send_fatal_alert(AlertDescription::AccessDenied); - Error::General("client rejected by client_auth_root_subjects".into()) - })?; - - let cr = CertificateRequestPayload { - certtypes: vec![ - ClientCertificateType::RSASign, - ClientCertificateType::ECDSASign, - ], - sigschemes: verify_schemes, - canames: names, - }; - - let m = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::CertificateRequest, - payload: HandshakePayload::CertificateRequest(cr), - }), - }; - - trace!("Sending CertificateRequest {:?}", m); - transcript.add_message(&m); - cx.common.send_msg(m, false); - Ok(true) - } - - fn emit_server_hello_done(transcript: &mut HandshakeHash, common: &mut CommonState) { - let m = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::ServerHelloDone, - payload: HandshakePayload::ServerHelloDone, - }), - }; - - transcript.add_message(&m); - common.send_msg(m, false); - } -} - -// --- Process client's Certificate for client auth --- -struct ExpectCertificate { - config: Arc, - transcript: HandshakeHash, - randoms: ConnectionRandoms, - session_id: SessionID, - suite: &'static Tls12CipherSuite, - using_ems: bool, - server_kx: kx::KeyExchange, - send_ticket: bool, -} - -impl State for ExpectCertificate { - fn handle(mut self: Box, cx: &mut ServerContext<'_>, m: Message) -> hs::NextStateOrError { - self.transcript.add_message(&m); - let cert_chain = require_handshake_msg_move!( - m, - HandshakeType::Certificate, - HandshakePayload::Certificate - )?; - - // If we can't determine if the auth is mandatory, abort - let mandatory = self - .config - .verifier - .client_auth_mandatory() - .ok_or_else(|| { - debug!("could not determine if client auth is mandatory based on SNI"); - cx.common - .send_fatal_alert(AlertDescription::AccessDenied); - Error::General("client rejected by client_auth_mandatory".into()) - })?; - - trace!("certs {:?}", cert_chain); - - let client_cert = match cert_chain.split_first() { - None if mandatory => { - cx.common - .send_fatal_alert(AlertDescription::CertificateRequired); - return Err(Error::NoCertificatesPresented); - } - None => { - debug!("client auth requested but no certificate supplied"); - self.transcript.abandon_client_auth(); - None - } - Some((end_entity, intermediates)) => { - let now = std::time::SystemTime::now(); - self.config - .verifier - .verify_client_cert(end_entity, intermediates, now) - .map_err(|err| { - hs::incompatible(cx.common, "certificate invalid"); - err - })?; - - Some(cert_chain) - } - }; - - Ok(Box::new(ExpectClientKx { - config: self.config, - transcript: self.transcript, - randoms: self.randoms, - session_id: self.session_id, - suite: self.suite, - using_ems: self.using_ems, - server_kx: self.server_kx, - client_cert, - send_ticket: self.send_ticket, - })) - } -} - -// --- Process client's KeyExchange --- -struct ExpectClientKx { - config: Arc, - transcript: HandshakeHash, - randoms: ConnectionRandoms, - session_id: SessionID, - suite: &'static Tls12CipherSuite, - using_ems: bool, - server_kx: kx::KeyExchange, - client_cert: Option>, - send_ticket: bool, -} - -impl State for ExpectClientKx { - fn handle(mut self: Box, cx: &mut ServerContext<'_>, m: Message) -> hs::NextStateOrError { - let client_kx = require_handshake_msg!( - m, - HandshakeType::ClientKeyExchange, - HandshakePayload::ClientKeyExchange - )?; - self.transcript.add_message(&m); - let ems_seed = self - .using_ems - .then(|| self.transcript.get_current_hash()); - - // Complete key agreement, and set up encryption with the - // resulting premaster secret. - let peer_kx_params = - tls12::decode_ecdh_params::(cx.common, &client_kx.0)?; - let secrets = ConnectionSecrets::from_key_exchange( - self.server_kx, - &peer_kx_params.public.0, - ems_seed, - self.randoms, - self.suite, - )?; - - self.config.key_log.log( - "CLIENT_RANDOM", - &secrets.randoms.client, - &secrets.master_secret, - ); - cx.common - .start_encryption_tls12(&secrets, Side::Server); - - if let Some(client_cert) = self.client_cert { - Ok(Box::new(ExpectCertificateVerify { - config: self.config, - secrets, - transcript: self.transcript, - session_id: self.session_id, - using_ems: self.using_ems, - client_cert, - send_ticket: self.send_ticket, - })) - } else { - Ok(Box::new(ExpectCcs { - config: self.config, - secrets, - transcript: self.transcript, - session_id: self.session_id, - using_ems: self.using_ems, - resuming: false, - send_ticket: self.send_ticket, - })) - } - } -} - -// --- Process client's certificate proof --- -struct ExpectCertificateVerify { - config: Arc, - secrets: ConnectionSecrets, - transcript: HandshakeHash, - session_id: SessionID, - using_ems: bool, - client_cert: Vec, - send_ticket: bool, -} - -impl State for ExpectCertificateVerify { - fn handle(mut self: Box, cx: &mut ServerContext<'_>, m: Message) -> hs::NextStateOrError { - let rc = { - let sig = require_handshake_msg!( - m, - HandshakeType::CertificateVerify, - HandshakePayload::CertificateVerify - )?; - - match self.transcript.take_handshake_buf() { - Some(msgs) => { - let certs = &self.client_cert; - self.config - .verifier - .verify_tls12_signature(&msgs, &certs[0], sig) - } - None => { - // This should be unreachable; the handshake buffer was initialized with - // client authentication if the verifier wants to offer it. - // `transcript.abandon_client_auth()` can extract it, but its only caller in - // this flow will also set `ExpectClientKx::client_cert` to `None`, making it - // impossible to reach this state. - cx.common - .send_fatal_alert(AlertDescription::AccessDenied); - Err(Error::General("client authentication not set up".into())) - } - } - }; - - if let Err(e) = rc { - cx.common - .send_fatal_alert(AlertDescription::AccessDenied); - return Err(e); - } - - trace!("client CertificateVerify OK"); - cx.common.peer_certificates = Some(self.client_cert); - - self.transcript.add_message(&m); - Ok(Box::new(ExpectCcs { - config: self.config, - secrets: self.secrets, - transcript: self.transcript, - session_id: self.session_id, - using_ems: self.using_ems, - resuming: false, - send_ticket: self.send_ticket, - })) - } -} - -// --- Process client's ChangeCipherSpec --- -struct ExpectCcs { - config: Arc, - secrets: ConnectionSecrets, - transcript: HandshakeHash, - session_id: SessionID, - using_ems: bool, - resuming: bool, - send_ticket: bool, -} - -impl State for ExpectCcs { - fn handle(self: Box, cx: &mut ServerContext<'_>, m: Message) -> hs::NextStateOrError { - match m.payload { - MessagePayload::ChangeCipherSpec(..) => {} - payload => { - return Err(inappropriate_message( - &payload, - &[ContentType::ChangeCipherSpec], - )) - } - } - - // CCS should not be received interleaved with fragmented handshake-level - // message. - cx.common.check_aligned_handshake()?; - - cx.common - .record_layer - .start_decrypting(); - Ok(Box::new(ExpectFinished { - config: self.config, - secrets: self.secrets, - transcript: self.transcript, - session_id: self.session_id, - using_ems: self.using_ems, - resuming: self.resuming, - send_ticket: self.send_ticket, - })) - } -} - -// --- Process client's Finished --- -fn get_server_connection_value_tls12( - secrets: &ConnectionSecrets, - using_ems: bool, - cx: &ServerContext<'_>, - time_now: ticketer::TimeBase, -) -> persist::ServerSessionValue { - let version = ProtocolVersion::TLSv1_2; - let secret = secrets.get_master_secret(); - - let mut v = persist::ServerSessionValue::new( - cx.data.sni.as_ref(), - version, - secrets.suite().common.suite, - secret, - cx.common.peer_certificates.clone(), - cx.common.alpn_protocol.clone(), - cx.data.resumption_data.clone(), - time_now, - 0, - ); - - if using_ems { - v.set_extended_ms_used(); - } - - v -} - -fn emit_ticket( - secrets: &ConnectionSecrets, - transcript: &mut HandshakeHash, - using_ems: bool, - cx: &mut ServerContext<'_>, - ticketer: &dyn ProducesTickets, -) -> Result<(), Error> { - let time_now = ticketer::TimeBase::now()?; - let plain = get_server_connection_value_tls12(secrets, using_ems, cx, time_now).get_encoding(); - - // If we can't produce a ticket for some reason, we can't - // report an error. Send an empty one. - let ticket = ticketer - .encrypt(&plain) - .unwrap_or_default(); - let ticket_lifetime = ticketer.lifetime(); - - let m = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::NewSessionTicket, - payload: HandshakePayload::NewSessionTicket(NewSessionTicketPayload::new( - ticket_lifetime, - ticket, - )), - }), - }; - - transcript.add_message(&m); - cx.common.send_msg(m, false); - Ok(()) -} - -fn emit_ccs(common: &mut CommonState) { - let m = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::ChangeCipherSpec(ChangeCipherSpecPayload {}), - }; - - common.send_msg(m, false); -} - -fn emit_finished( - secrets: &ConnectionSecrets, - transcript: &mut HandshakeHash, - common: &mut CommonState, -) { - let vh = transcript.get_current_hash(); - let verify_data = secrets.server_verify_data(&vh); - let verify_data_payload = Payload::new(verify_data); - - let f = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::Finished, - payload: HandshakePayload::Finished(verify_data_payload), - }), - }; - - transcript.add_message(&f); - common.send_msg(f, true); -} - -struct ExpectFinished { - config: Arc, - secrets: ConnectionSecrets, - transcript: HandshakeHash, - session_id: SessionID, - using_ems: bool, - resuming: bool, - send_ticket: bool, -} - -impl State for ExpectFinished { - fn handle(mut self: Box, cx: &mut ServerContext<'_>, m: Message) -> hs::NextStateOrError { - let finished = - require_handshake_msg!(m, HandshakeType::Finished, HandshakePayload::Finished)?; - - cx.common.check_aligned_handshake()?; - - let vh = self.transcript.get_current_hash(); - let expect_verify_data = self.secrets.client_verify_data(&vh); - - let _fin_verified = - constant_time::verify_slices_are_equal(&expect_verify_data, &finished.0) - .map_err(|_| { - cx.common - .send_fatal_alert(AlertDescription::DecryptError); - Error::DecryptError - }) - .map(|_| verify::FinishedMessageVerified::assertion())?; - - // Save connection, perhaps - if !self.resuming && !self.session_id.is_empty() { - let time_now = ticketer::TimeBase::now()?; - let value = - get_server_connection_value_tls12(&self.secrets, self.using_ems, cx, time_now); - - let worked = self - .config - .session_storage - .put(self.session_id.get_encoding(), value.get_encoding()); - if worked { - debug!("Session saved"); - } else { - debug!("Session not saved"); - } - } - - // Send our CCS and Finished. - self.transcript.add_message(&m); - if !self.resuming { - if self.send_ticket { - emit_ticket( - &self.secrets, - &mut self.transcript, - self.using_ems, - cx, - &*self.config.ticketer, - )?; - } - emit_ccs(cx.common); - cx.common - .record_layer - .start_encrypting(); - emit_finished(&self.secrets, &mut self.transcript, cx.common); - } - - cx.common.start_traffic(); - Ok(Box::new(ExpectTraffic { - secrets: self.secrets, - _fin_verified, - })) - } -} - -// --- Process traffic --- -struct ExpectTraffic { - secrets: ConnectionSecrets, - _fin_verified: verify::FinishedMessageVerified, -} - -impl ExpectTraffic {} - -impl State for ExpectTraffic { - fn handle(self: Box, cx: &mut ServerContext<'_>, m: Message) -> hs::NextStateOrError { - match m.payload { - MessagePayload::ApplicationData(payload) => cx - .common - .take_received_plaintext(payload), - payload => { - return Err(inappropriate_message( - &payload, - &[ContentType::ApplicationData], - )); - } - } - Ok(self) - } - - fn export_keying_material( - &self, - output: &mut [u8], - label: &[u8], - context: Option<&[u8]>, - ) -> Result<(), Error> { - self.secrets - .export_keying_material(output, label, context); - Ok(()) - } - - #[cfg(feature = "secret_extraction")] - fn extract_secrets(&self) -> Result { - self.secrets - .extract_secrets(Side::Server) - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/server/tls13.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/server/tls13.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/server/tls13.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/server/tls13.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,1386 +0,0 @@ -use crate::check::inappropriate_handshake_message; -use crate::conn::{CommonState, ConnectionRandoms, State}; -use crate::enums::ProtocolVersion; -use crate::error::Error; -use crate::hash_hs::HandshakeHash; -use crate::key::Certificate; -#[cfg(feature = "logging")] -use crate::log::{debug, trace, warn}; -use crate::msgs::codec::Codec; -use crate::msgs::enums::{AlertDescription, KeyUpdateRequest}; -use crate::msgs::enums::{ContentType, HandshakeType}; -use crate::msgs::handshake::HandshakeMessagePayload; -use crate::msgs::handshake::HandshakePayload; -use crate::msgs::handshake::{NewSessionTicketExtension, NewSessionTicketPayloadTLS13}; -use crate::msgs::message::{Message, MessagePayload}; -use crate::msgs::persist; -use crate::rand; -use crate::server::ServerConfig; -use crate::ticketer; -use crate::tls13::key_schedule::{KeyScheduleTraffic, KeyScheduleTrafficWithClientFinishedPending}; -use crate::tls13::Tls13CipherSuite; -use crate::verify; -#[cfg(feature = "quic")] -use crate::{check::inappropriate_message, conn::Protocol}; -#[cfg(feature = "secret_extraction")] -use crate::{conn::Side, suites::PartiallyExtractedSecrets}; - -use super::hs::{self, HandshakeHashOrBuffer, ServerContext}; -use super::server_conn::ServerConnectionData; - -use std::sync::Arc; - -use ring::constant_time; - -pub(super) use client_hello::CompleteClientHelloHandling; - -mod client_hello { - use crate::enums::SignatureScheme; - use crate::kx; - use crate::msgs::base::{Payload, PayloadU8}; - use crate::msgs::ccs::ChangeCipherSpecPayload; - use crate::msgs::enums::NamedGroup; - use crate::msgs::enums::{Compression, PSKKeyExchangeMode}; - use crate::msgs::handshake::CertReqExtension; - use crate::msgs::handshake::CertificateEntry; - use crate::msgs::handshake::CertificateExtension; - use crate::msgs::handshake::CertificatePayloadTLS13; - use crate::msgs::handshake::CertificateRequestPayloadTLS13; - use crate::msgs::handshake::CertificateStatus; - use crate::msgs::handshake::ClientHelloPayload; - use crate::msgs::handshake::DigitallySignedStruct; - use crate::msgs::handshake::HelloRetryExtension; - use crate::msgs::handshake::HelloRetryRequest; - use crate::msgs::handshake::KeyShareEntry; - use crate::msgs::handshake::Random; - use crate::msgs::handshake::ServerExtension; - use crate::msgs::handshake::ServerHelloPayload; - use crate::msgs::handshake::SessionID; - #[cfg(feature = "quic")] - use crate::quic; - use crate::server::common::ActiveCertifiedKey; - use crate::sign; - use crate::tls13::key_schedule::{ - KeyScheduleEarly, KeyScheduleHandshake, KeySchedulePreHandshake, - }; - - use super::*; - - #[derive(PartialEq)] - pub(super) enum EarlyDataDecision { - Disabled, - RequestedButRejected, - Accepted, - } - - pub(in crate::server) struct CompleteClientHelloHandling { - pub(in crate::server) config: Arc, - pub(in crate::server) transcript: HandshakeHash, - pub(in crate::server) suite: &'static Tls13CipherSuite, - pub(in crate::server) randoms: ConnectionRandoms, - pub(in crate::server) done_retry: bool, - pub(in crate::server) send_ticket: bool, - pub(in crate::server) extra_exts: Vec, - } - - fn max_early_data_size(configured: u32) -> usize { - if configured != 0 { - configured as usize - } else { - // The relevant max_early_data_size may in fact be unknowable: if - // we (the server) have turned off early_data but the client has - // a stale ticket from when we allowed early_data: we'll naturally - // reject early_data but need an upper bound on the amount of data - // to drop. - // - // Use a single maximum-sized message. - 16384 - } - } - - impl CompleteClientHelloHandling { - fn check_binder( - &self, - suite: &'static Tls13CipherSuite, - client_hello: &Message, - psk: &[u8], - binder: &[u8], - ) -> bool { - let binder_plaintext = match &client_hello.payload { - MessagePayload::Handshake { parsed, .. } => { - parsed.get_encoding_for_binder_signing() - } - _ => unreachable!(), - }; - - let handshake_hash = self - .transcript - .get_hash_given(&binder_plaintext); - - let key_schedule = KeyScheduleEarly::new(suite.hkdf_algorithm, psk); - let real_binder = - key_schedule.resumption_psk_binder_key_and_sign_verify_data(&handshake_hash); - - constant_time::verify_slices_are_equal(real_binder.as_ref(), binder).is_ok() - } - - fn attempt_tls13_ticket_decryption( - &mut self, - ticket: &[u8], - ) -> Option { - if self.config.ticketer.enabled() { - self.config - .ticketer - .decrypt(ticket) - .and_then(|plain| persist::ServerSessionValue::read_bytes(&plain)) - } else { - self.config - .session_storage - .take(ticket) - .and_then(|plain| persist::ServerSessionValue::read_bytes(&plain)) - } - } - - pub(in crate::server) fn handle_client_hello( - mut self, - cx: &mut ServerContext<'_>, - server_key: ActiveCertifiedKey, - chm: &Message, - client_hello: &ClientHelloPayload, - mut sigschemes_ext: Vec, - ) -> hs::NextStateOrError { - if client_hello.compression_methods.len() != 1 { - return Err(cx - .common - .illegal_param("client offered wrong compressions")); - } - - let groups_ext = client_hello - .get_namedgroups_extension() - .ok_or_else(|| hs::incompatible(cx.common, "client didn't describe groups"))?; - - let tls13_schemes = sign::supported_sign_tls13(); - sigschemes_ext.retain(|scheme| tls13_schemes.contains(scheme)); - - let shares_ext = client_hello - .get_keyshare_extension() - .ok_or_else(|| hs::incompatible(cx.common, "client didn't send keyshares"))?; - - if client_hello.has_keyshare_extension_with_duplicates() { - return Err(cx - .common - .illegal_param("client sent duplicate keyshares")); - } - - let early_data_requested = client_hello.early_data_extension_offered(); - - // EarlyData extension is illegal in second ClientHello - if self.done_retry && early_data_requested { - return Err(cx - .common - .illegal_param("client sent EarlyData in second ClientHello")); - } - - // choose a share that we support - let chosen_share = self - .config - .kx_groups - .iter() - .find_map(|group| { - shares_ext - .iter() - .find(|share| share.group == group.name) - }); - - let chosen_share = match chosen_share { - Some(s) => s, - None => { - // We don't have a suitable key share. Choose a suitable group and - // send a HelloRetryRequest. - let retry_group_maybe = self - .config - .kx_groups - .iter() - .find(|group| groups_ext.contains(&group.name)) - .cloned(); - - self.transcript.add_message(chm); - - if let Some(group) = retry_group_maybe { - if self.done_retry { - return Err(cx - .common - .illegal_param("did not follow retry request")); - } - - emit_hello_retry_request( - &mut self.transcript, - self.suite, - cx.common, - group.name, - ); - emit_fake_ccs(cx.common); - - let skip_early_data = max_early_data_size(self.config.max_early_data_size); - - let next = Box::new(hs::ExpectClientHello { - config: self.config, - transcript: HandshakeHashOrBuffer::Hash(self.transcript), - #[cfg(feature = "tls12")] - session_id: SessionID::empty(), - #[cfg(feature = "tls12")] - using_ems: false, - done_retry: true, - send_ticket: self.send_ticket, - extra_exts: self.extra_exts, - }); - - return if early_data_requested { - Ok(Box::new(ExpectAndSkipRejectedEarlyData { - skip_data_left: skip_early_data, - next, - })) - } else { - Ok(next) - }; - } - - return Err(hs::incompatible( - cx.common, - "no kx group overlap with client", - )); - } - }; - - let mut chosen_psk_index = None; - let mut resumedata = None; - let time_now = ticketer::TimeBase::now()?; - - if let Some(psk_offer) = client_hello.get_psk() { - if !client_hello.check_psk_ext_is_last() { - return Err(cx - .common - .illegal_param("psk extension in wrong position")); - } - - if psk_offer.binders.is_empty() { - return Err(hs::decode_error(cx.common, "psk extension missing binder")); - } - - if psk_offer.binders.len() != psk_offer.identities.len() { - return Err(cx - .common - .illegal_param("psk extension mismatched ids/binders")); - } - - for (i, psk_id) in psk_offer.identities.iter().enumerate() { - let resume = match self - .attempt_tls13_ticket_decryption(&psk_id.identity.0) - .map(|resumedata| { - resumedata.set_freshness(psk_id.obfuscated_ticket_age, time_now) - }) - .filter(|resumedata| { - hs::can_resume(self.suite.into(), &cx.data.sni, false, resumedata) - }) { - Some(resume) => resume, - None => continue, - }; - - if !self.check_binder( - self.suite, - chm, - &resume.master_secret.0, - &psk_offer.binders[i].0, - ) { - cx.common - .send_fatal_alert(AlertDescription::DecryptError); - return Err(Error::PeerMisbehavedError( - "client sent wrong binder".to_string(), - )); - } - - chosen_psk_index = Some(i); - resumedata = Some(resume); - break; - } - } - - if !client_hello.psk_mode_offered(PSKKeyExchangeMode::PSK_DHE_KE) { - debug!("Client unwilling to resume, DHE_KE not offered"); - self.send_ticket = false; - chosen_psk_index = None; - resumedata = None; - } else { - self.send_ticket = true; - } - - if let Some(ref resume) = resumedata { - cx.data.received_resumption_data = Some(resume.application_data.0.clone()); - cx.common.peer_certificates = resume.client_cert_chain.clone(); - } - - let full_handshake = resumedata.is_none(); - self.transcript.add_message(chm); - let key_schedule = emit_server_hello( - &mut self.transcript, - &self.randoms, - self.suite, - cx, - &client_hello.session_id, - chosen_share, - chosen_psk_index, - resumedata - .as_ref() - .map(|x| &x.master_secret.0[..]), - &self.config, - )?; - if !self.done_retry { - emit_fake_ccs(cx.common); - } - - let (mut ocsp_response, mut sct_list) = - (server_key.get_ocsp(), server_key.get_sct_list()); - let doing_early_data = emit_encrypted_extensions( - &mut self.transcript, - self.suite, - cx, - &mut ocsp_response, - &mut sct_list, - client_hello, - resumedata.as_ref(), - self.extra_exts, - &self.config, - )?; - - let doing_client_auth = if full_handshake { - let client_auth = - emit_certificate_req_tls13(&mut self.transcript, cx, &self.config)?; - emit_certificate_tls13( - &mut self.transcript, - cx.common, - server_key.get_cert(), - ocsp_response, - sct_list, - ); - emit_certificate_verify_tls13( - &mut self.transcript, - cx.common, - server_key.get_key(), - &sigschemes_ext, - )?; - client_auth - } else { - false - }; - - // If we're not doing early data, then the next messages we receive - // are encrypted with the handshake keys. - match doing_early_data { - EarlyDataDecision::Disabled => { - cx.common - .record_layer - .set_message_decrypter( - self.suite - .derive_decrypter(key_schedule.client_key()), - ); - cx.data.early_data.reject(); - } - EarlyDataDecision::RequestedButRejected => { - debug!("Client requested early_data, but not accepted: switching to handshake keys with trial decryption"); - cx.common - .record_layer - .set_message_decrypter_with_trial_decryption( - self.suite - .derive_decrypter(key_schedule.client_key()), - max_early_data_size(self.config.max_early_data_size), - ); - cx.data.early_data.reject(); - } - EarlyDataDecision::Accepted => { - cx.data - .early_data - .accept(self.config.max_early_data_size as usize); - } - } - - cx.common.check_aligned_handshake()?; - let key_schedule_traffic = emit_finished_tls13( - &mut self.transcript, - self.suite, - &self.randoms, - cx, - key_schedule, - &self.config, - ); - - if !doing_client_auth && self.config.send_half_rtt_data { - // Application data can be sent immediately after Finished, in one - // flight. However, if client auth is enabled, we don't want to send - // application data to an unauthenticated peer. - cx.common.start_outgoing_traffic(); - } - - if doing_client_auth { - Ok(Box::new(ExpectCertificate { - config: self.config, - transcript: self.transcript, - suite: self.suite, - key_schedule: key_schedule_traffic, - send_ticket: self.send_ticket, - })) - } else if doing_early_data == EarlyDataDecision::Accepted && !cx.common.is_quic() { - // Not used for QUIC: RFC 9001 §8.3: Clients MUST NOT send the EndOfEarlyData - // message. A server MUST treat receipt of a CRYPTO frame in a 0-RTT packet as a - // connection error of type PROTOCOL_VIOLATION. - Ok(Box::new(ExpectEarlyData { - config: self.config, - transcript: self.transcript, - suite: self.suite, - key_schedule: key_schedule_traffic, - send_ticket: self.send_ticket, - })) - } else { - Ok(Box::new(ExpectFinished { - config: self.config, - transcript: self.transcript, - suite: self.suite, - key_schedule: key_schedule_traffic, - send_ticket: self.send_ticket, - })) - } - } - } - - fn emit_server_hello( - transcript: &mut HandshakeHash, - randoms: &ConnectionRandoms, - suite: &'static Tls13CipherSuite, - cx: &mut ServerContext<'_>, - session_id: &SessionID, - share: &KeyShareEntry, - chosen_psk_idx: Option, - resuming_psk: Option<&[u8]>, - config: &ServerConfig, - ) -> Result { - let mut extensions = Vec::new(); - - // Prepare key exchange - let kx = kx::KeyExchange::choose(share.group, &config.kx_groups) - .and_then(kx::KeyExchange::start) - .ok_or(Error::FailedToGetRandomBytes)?; - - let kse = KeyShareEntry::new(share.group, kx.pubkey.as_ref()); - extensions.push(ServerExtension::KeyShare(kse)); - extensions.push(ServerExtension::SupportedVersions(ProtocolVersion::TLSv1_3)); - - if let Some(psk_idx) = chosen_psk_idx { - extensions.push(ServerExtension::PresharedKey(psk_idx as u16)); - } - - let sh = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::ServerHello, - payload: HandshakePayload::ServerHello(ServerHelloPayload { - legacy_version: ProtocolVersion::TLSv1_2, - random: Random::from(randoms.server), - session_id: *session_id, - cipher_suite: suite.common.suite, - compression_method: Compression::Null, - extensions, - }), - }), - }; - - cx.common.check_aligned_handshake()?; - - let client_hello_hash = transcript.get_hash_given(&[]); - - trace!("sending server hello {:?}", sh); - transcript.add_message(&sh); - cx.common.send_msg(sh, false); - - // Start key schedule - let (key_schedule_pre_handshake, early_data_client_key) = if let Some(psk) = resuming_psk { - let early_key_schedule = KeyScheduleEarly::new(suite.hkdf_algorithm, psk); - let client_early_traffic_secret = early_key_schedule.client_early_traffic_secret( - &client_hello_hash, - &*config.key_log, - &randoms.client, - ); - - ( - KeySchedulePreHandshake::from(early_key_schedule), - Some(client_early_traffic_secret), - ) - } else { - (KeySchedulePreHandshake::new(suite.hkdf_algorithm), None) - }; - - // Do key exchange - let key_schedule = kx.complete(&share.payload.0, |secret| { - Ok(key_schedule_pre_handshake.into_handshake(secret)) - })?; - - let handshake_hash = transcript.get_current_hash(); - let (key_schedule, _client_key, server_key) = key_schedule.derive_handshake_secrets( - handshake_hash, - &*config.key_log, - &randoms.client, - ); - - // Set up to encrypt with handshake secrets, but decrypt with early_data keys. - // If not doing early_data after all, this is corrected later to the handshake - // keys (now stored in key_schedule). - cx.common - .record_layer - .set_message_encrypter(suite.derive_encrypter(&server_key)); - - if let Some(key) = &early_data_client_key { - cx.common - .record_layer - .set_message_decrypter(suite.derive_decrypter(key)); - } - - #[cfg(feature = "quic")] - if cx.common.is_quic() { - // If 0-RTT should be rejected, this will be clobbered by ExtensionProcessing - // before the application can see. - cx.common.quic.early_secret = early_data_client_key; - cx.common.quic.hs_secrets = - Some(quic::Secrets::new(_client_key, server_key, suite, false)); - } - - Ok(key_schedule) - } - - fn emit_fake_ccs(common: &mut CommonState) { - if common.is_quic() { - return; - } - let m = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::ChangeCipherSpec(ChangeCipherSpecPayload {}), - }; - common.send_msg(m, false); - } - - fn emit_hello_retry_request( - transcript: &mut HandshakeHash, - suite: &'static Tls13CipherSuite, - common: &mut CommonState, - group: NamedGroup, - ) { - let mut req = HelloRetryRequest { - legacy_version: ProtocolVersion::TLSv1_2, - session_id: SessionID::empty(), - cipher_suite: suite.common.suite, - extensions: Vec::new(), - }; - - req.extensions - .push(HelloRetryExtension::KeyShare(group)); - req.extensions - .push(HelloRetryExtension::SupportedVersions( - ProtocolVersion::TLSv1_3, - )); - - let m = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::HelloRetryRequest, - payload: HandshakePayload::HelloRetryRequest(req), - }), - }; - - trace!("Requesting retry {:?}", m); - transcript.rollup_for_hrr(); - transcript.add_message(&m); - common.send_msg(m, false); - } - - fn decide_if_early_data_allowed( - cx: &mut ServerContext<'_>, - client_hello: &ClientHelloPayload, - resumedata: Option<&persist::ServerSessionValue>, - suite: &'static Tls13CipherSuite, - config: &ServerConfig, - ) -> EarlyDataDecision { - let early_data_requested = client_hello.early_data_extension_offered(); - let rejected_or_disabled = match early_data_requested { - true => EarlyDataDecision::RequestedButRejected, - false => EarlyDataDecision::Disabled, - }; - - let resume = match resumedata { - Some(resume) => resume, - None => { - // never any early data if not resuming. - return rejected_or_disabled; - } - }; - - /* Non-zero max_early_data_size controls whether early_data is allowed at all. - * We also require stateful resumption. */ - let early_data_configured = config.max_early_data_size > 0 && !config.ticketer.enabled(); - - /* "For PSKs provisioned via NewSessionTicket, a server MUST validate - * that the ticket age for the selected PSK identity (computed by - * subtracting ticket_age_add from PskIdentity.obfuscated_ticket_age - * modulo 2^32) is within a small tolerance of the time since the ticket - * was issued (see Section 8)." -- this is implemented in ServerSessionValue::set_freshness() - * and related. - * - * "In order to accept early data, the server [...] MUST verify that the - * following values are the same as those associated with the - * selected PSK: - * - * - The TLS version number - * - The selected cipher suite - * - The selected ALPN [RFC7301] protocol, if any" - * - * (RFC8446, 4.2.10) */ - let early_data_possible = early_data_requested - && resume.is_fresh() - && Some(resume.version) == cx.common.negotiated_version - && resume.cipher_suite == suite.common.suite - && resume.alpn.as_ref().map(|x| &x.0) == cx.common.alpn_protocol.as_ref(); - - if early_data_configured && early_data_possible && !cx.data.early_data.was_rejected() { - EarlyDataDecision::Accepted - } else { - #[cfg(feature = "quic")] - if cx.common.is_quic() { - // Clobber value set in tls13::emit_server_hello - cx.common.quic.early_secret = None; - } - - rejected_or_disabled - } - } - - fn emit_encrypted_extensions( - transcript: &mut HandshakeHash, - suite: &'static Tls13CipherSuite, - cx: &mut ServerContext<'_>, - ocsp_response: &mut Option<&[u8]>, - sct_list: &mut Option<&[u8]>, - hello: &ClientHelloPayload, - resumedata: Option<&persist::ServerSessionValue>, - extra_exts: Vec, - config: &ServerConfig, - ) -> Result { - let mut ep = hs::ExtensionProcessing::new(); - ep.process_common( - config, - cx, - ocsp_response, - sct_list, - hello, - resumedata, - extra_exts, - )?; - - let early_data = decide_if_early_data_allowed(cx, hello, resumedata, suite, config); - if early_data == EarlyDataDecision::Accepted { - ep.exts.push(ServerExtension::EarlyData); - } - - let ee = Message { - version: ProtocolVersion::TLSv1_3, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::EncryptedExtensions, - payload: HandshakePayload::EncryptedExtensions(ep.exts), - }), - }; - - trace!("sending encrypted extensions {:?}", ee); - transcript.add_message(&ee); - cx.common.send_msg(ee, true); - Ok(early_data) - } - - fn emit_certificate_req_tls13( - transcript: &mut HandshakeHash, - cx: &mut ServerContext<'_>, - config: &ServerConfig, - ) -> Result { - if !config.verifier.offer_client_auth() { - return Ok(false); - } - - let mut cr = CertificateRequestPayloadTLS13 { - context: PayloadU8::empty(), - extensions: Vec::new(), - }; - - let schemes = config - .verifier - .supported_verify_schemes(); - cr.extensions - .push(CertReqExtension::SignatureAlgorithms(schemes.to_vec())); - - let names = config - .verifier - .client_auth_root_subjects() - .ok_or_else(|| { - debug!("could not determine root subjects based on SNI"); - cx.common - .send_fatal_alert(AlertDescription::AccessDenied); - Error::General("client rejected by client_auth_root_subjects".into()) - })?; - - if !names.is_empty() { - cr.extensions - .push(CertReqExtension::AuthorityNames(names)); - } - - let m = Message { - version: ProtocolVersion::TLSv1_3, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::CertificateRequest, - payload: HandshakePayload::CertificateRequestTLS13(cr), - }), - }; - - trace!("Sending CertificateRequest {:?}", m); - transcript.add_message(&m); - cx.common.send_msg(m, true); - Ok(true) - } - - fn emit_certificate_tls13( - transcript: &mut HandshakeHash, - common: &mut CommonState, - cert_chain: &[Certificate], - ocsp_response: Option<&[u8]>, - sct_list: Option<&[u8]>, - ) { - let mut cert_entries = vec![]; - for cert in cert_chain { - let entry = CertificateEntry { - cert: cert.to_owned(), - exts: Vec::new(), - }; - - cert_entries.push(entry); - } - - if let Some(end_entity_cert) = cert_entries.first_mut() { - // Apply OCSP response to first certificate (we don't support OCSP - // except for leaf certs). - if let Some(ocsp) = ocsp_response { - let cst = CertificateStatus::new(ocsp.to_owned()); - end_entity_cert - .exts - .push(CertificateExtension::CertificateStatus(cst)); - } - - // Likewise, SCT - if let Some(sct_list) = sct_list { - end_entity_cert - .exts - .push(CertificateExtension::make_sct(sct_list.to_owned())); - } - } - - let cert_body = CertificatePayloadTLS13::new(cert_entries); - let c = Message { - version: ProtocolVersion::TLSv1_3, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::Certificate, - payload: HandshakePayload::CertificateTLS13(cert_body), - }), - }; - - trace!("sending certificate {:?}", c); - transcript.add_message(&c); - common.send_msg(c, true); - } - - fn emit_certificate_verify_tls13( - transcript: &mut HandshakeHash, - common: &mut CommonState, - signing_key: &dyn sign::SigningKey, - schemes: &[SignatureScheme], - ) -> Result<(), Error> { - let message = verify::construct_tls13_server_verify_message(&transcript.get_current_hash()); - - let signer = signing_key - .choose_scheme(schemes) - .ok_or_else(|| hs::incompatible(common, "no overlapping sigschemes"))?; - - let scheme = signer.scheme(); - let sig = signer.sign(&message)?; - - let cv = DigitallySignedStruct::new(scheme, sig); - - let m = Message { - version: ProtocolVersion::TLSv1_3, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::CertificateVerify, - payload: HandshakePayload::CertificateVerify(cv), - }), - }; - - trace!("sending certificate-verify {:?}", m); - transcript.add_message(&m); - common.send_msg(m, true); - Ok(()) - } - - fn emit_finished_tls13( - transcript: &mut HandshakeHash, - suite: &'static Tls13CipherSuite, - randoms: &ConnectionRandoms, - cx: &mut ServerContext<'_>, - key_schedule: KeyScheduleHandshake, - config: &ServerConfig, - ) -> KeyScheduleTrafficWithClientFinishedPending { - let handshake_hash = transcript.get_current_hash(); - let verify_data = key_schedule.sign_server_finish(&handshake_hash); - let verify_data_payload = Payload::new(verify_data.as_ref()); - - let m = Message { - version: ProtocolVersion::TLSv1_3, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::Finished, - payload: HandshakePayload::Finished(verify_data_payload), - }), - }; - - trace!("sending finished {:?}", m); - transcript.add_message(&m); - let hash_at_server_fin = transcript.get_current_hash(); - cx.common.send_msg(m, true); - - // Now move to application data keys. Read key change is deferred until - // the Finish message is received & validated. - let (key_schedule_traffic, _client_key, server_key) = key_schedule - .into_traffic_with_client_finished_pending( - hash_at_server_fin, - &*config.key_log, - &randoms.client, - ); - cx.common - .record_layer - .set_message_encrypter(suite.derive_encrypter(&server_key)); - - #[cfg(feature = "quic")] - { - cx.common.quic.traffic_secrets = - Some(quic::Secrets::new(_client_key, server_key, suite, false)); - } - - key_schedule_traffic - } -} - -struct ExpectAndSkipRejectedEarlyData { - skip_data_left: usize, - next: Box, -} - -impl State for ExpectAndSkipRejectedEarlyData { - fn handle(mut self: Box, cx: &mut ServerContext<'_>, m: Message) -> hs::NextStateOrError { - /* "The server then ignores early data by skipping all records with an external - * content type of "application_data" (indicating that they are encrypted), - * up to the configured max_early_data_size." - * (RFC8446, 14.2.10) */ - if let MessagePayload::ApplicationData(ref skip_data) = m.payload { - if skip_data.0.len() <= self.skip_data_left { - self.skip_data_left -= skip_data.0.len(); - return Ok(self); - } - } - - self.next.handle(cx, m) - } -} - -struct ExpectCertificate { - config: Arc, - transcript: HandshakeHash, - suite: &'static Tls13CipherSuite, - key_schedule: KeyScheduleTrafficWithClientFinishedPending, - send_ticket: bool, -} - -impl State for ExpectCertificate { - fn handle(mut self: Box, cx: &mut ServerContext<'_>, m: Message) -> hs::NextStateOrError { - let certp = require_handshake_msg!( - m, - HandshakeType::Certificate, - HandshakePayload::CertificateTLS13 - )?; - self.transcript.add_message(&m); - - // We don't send any CertificateRequest extensions, so any extensions - // here are illegal. - if certp.any_entry_has_extension() { - return Err(Error::PeerMisbehavedError( - "client sent unsolicited cert extension".to_string(), - )); - } - - let client_cert = certp.convert(); - - let mandatory = self - .config - .verifier - .client_auth_mandatory() - .ok_or_else(|| { - debug!("could not determine if client auth is mandatory based on SNI"); - cx.common - .send_fatal_alert(AlertDescription::AccessDenied); - Error::General("client rejected by client_auth_mandatory".into()) - })?; - - let (end_entity, intermediates) = match client_cert.split_first() { - None => { - if !mandatory { - debug!("client auth requested but no certificate supplied"); - self.transcript.abandon_client_auth(); - return Ok(Box::new(ExpectFinished { - config: self.config, - suite: self.suite, - key_schedule: self.key_schedule, - transcript: self.transcript, - send_ticket: self.send_ticket, - })); - } - - cx.common - .send_fatal_alert(AlertDescription::CertificateRequired); - return Err(Error::NoCertificatesPresented); - } - Some(chain) => chain, - }; - - let now = std::time::SystemTime::now(); - self.config - .verifier - .verify_client_cert(end_entity, intermediates, now) - .map_err(|err| { - hs::incompatible(cx.common, "certificate invalid"); - err - })?; - - Ok(Box::new(ExpectCertificateVerify { - config: self.config, - suite: self.suite, - transcript: self.transcript, - key_schedule: self.key_schedule, - client_cert, - send_ticket: self.send_ticket, - })) - } -} - -struct ExpectCertificateVerify { - config: Arc, - transcript: HandshakeHash, - suite: &'static Tls13CipherSuite, - key_schedule: KeyScheduleTrafficWithClientFinishedPending, - client_cert: Vec, - send_ticket: bool, -} - -impl State for ExpectCertificateVerify { - fn handle(mut self: Box, cx: &mut ServerContext<'_>, m: Message) -> hs::NextStateOrError { - let rc = { - let sig = require_handshake_msg!( - m, - HandshakeType::CertificateVerify, - HandshakePayload::CertificateVerify - )?; - let handshake_hash = self.transcript.get_current_hash(); - self.transcript.abandon_client_auth(); - let certs = &self.client_cert; - let msg = verify::construct_tls13_client_verify_message(&handshake_hash); - - self.config - .verifier - .verify_tls13_signature(&msg, &certs[0], sig) - }; - - if let Err(e) = rc { - cx.common - .send_fatal_alert(AlertDescription::AccessDenied); - return Err(e); - } - - trace!("client CertificateVerify OK"); - cx.common.peer_certificates = Some(self.client_cert); - - self.transcript.add_message(&m); - Ok(Box::new(ExpectFinished { - config: self.config, - suite: self.suite, - key_schedule: self.key_schedule, - transcript: self.transcript, - send_ticket: self.send_ticket, - })) - } -} - -// --- Process (any number of) early ApplicationData messages, -// followed by a terminating handshake EndOfEarlyData message --- - -struct ExpectEarlyData { - config: Arc, - transcript: HandshakeHash, - suite: &'static Tls13CipherSuite, - key_schedule: KeyScheduleTrafficWithClientFinishedPending, - send_ticket: bool, -} - -impl State for ExpectEarlyData { - fn handle(mut self: Box, cx: &mut ServerContext<'_>, m: Message) -> hs::NextStateOrError { - match m.payload { - MessagePayload::ApplicationData(payload) => { - match cx - .data - .early_data - .take_received_plaintext(payload) - { - true => Ok(self), - false => { - cx.common - .send_fatal_alert(AlertDescription::UnexpectedMessage); - Err(Error::PeerMisbehavedError( - "too much early_data received".into(), - )) - } - } - } - MessagePayload::Handshake { - parsed: - HandshakeMessagePayload { - typ: HandshakeType::EndOfEarlyData, - payload: HandshakePayload::EndOfEarlyData, - }, - .. - } => { - cx.common - .record_layer - .set_message_decrypter( - self.suite - .derive_decrypter(self.key_schedule.client_key()), - ); - - self.transcript.add_message(&m); - Ok(Box::new(ExpectFinished { - config: self.config, - suite: self.suite, - key_schedule: self.key_schedule, - transcript: self.transcript, - send_ticket: self.send_ticket, - })) - } - payload => Err(inappropriate_handshake_message( - &payload, - &[ContentType::ApplicationData, ContentType::Handshake], - &[HandshakeType::EndOfEarlyData], - )), - } - } -} - -// --- Process client's Finished --- -fn get_server_session_value( - transcript: &mut HandshakeHash, - suite: &'static Tls13CipherSuite, - key_schedule: &KeyScheduleTraffic, - cx: &ServerContext<'_>, - nonce: &[u8], - time_now: ticketer::TimeBase, - age_obfuscation_offset: u32, -) -> persist::ServerSessionValue { - let version = ProtocolVersion::TLSv1_3; - - let handshake_hash = transcript.get_current_hash(); - let secret = - key_schedule.resumption_master_secret_and_derive_ticket_psk(&handshake_hash, nonce); - - persist::ServerSessionValue::new( - cx.data.sni.as_ref(), - version, - suite.common.suite, - secret, - cx.common.peer_certificates.clone(), - cx.common.alpn_protocol.clone(), - cx.data.resumption_data.clone(), - time_now, - age_obfuscation_offset, - ) -} - -struct ExpectFinished { - config: Arc, - transcript: HandshakeHash, - suite: &'static Tls13CipherSuite, - key_schedule: KeyScheduleTrafficWithClientFinishedPending, - send_ticket: bool, -} - -impl ExpectFinished { - fn emit_ticket( - transcript: &mut HandshakeHash, - suite: &'static Tls13CipherSuite, - cx: &mut ServerContext<'_>, - key_schedule: &KeyScheduleTraffic, - config: &ServerConfig, - ) -> Result<(), Error> { - let nonce = rand::random_vec(32)?; - let now = ticketer::TimeBase::now()?; - let age_add = rand::random_u32()?; - let plain = - get_server_session_value(transcript, suite, key_schedule, cx, &nonce, now, age_add) - .get_encoding(); - - let stateless = config.ticketer.enabled(); - let (ticket, lifetime) = if stateless { - let ticket = match config.ticketer.encrypt(&plain) { - Some(t) => t, - None => return Ok(()), - }; - (ticket, config.ticketer.lifetime()) - } else { - let id = rand::random_vec(32)?; - let stored = config - .session_storage - .put(id.clone(), plain); - if !stored { - trace!("resumption not available; not issuing ticket"); - return Ok(()); - } - let stateful_lifetime = 24 * 60 * 60; // this is a bit of a punt - (id, stateful_lifetime) - }; - - let mut payload = NewSessionTicketPayloadTLS13::new(lifetime, age_add, nonce, ticket); - - if config.max_early_data_size > 0 { - if !stateless { - payload - .exts - .push(NewSessionTicketExtension::EarlyData( - config.max_early_data_size, - )); - } else { - // We implement RFC8446 section 8.1: by enforcing that 0-RTT is - // only possible if using stateful resumption - warn!("early_data with stateless resumption is not allowed"); - } - } - - let m = Message { - version: ProtocolVersion::TLSv1_3, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::NewSessionTicket, - payload: HandshakePayload::NewSessionTicketTLS13(payload), - }), - }; - - trace!("sending new ticket {:?} (stateless: {})", m, stateless); - transcript.add_message(&m); - cx.common.send_msg(m, true); - Ok(()) - } -} - -impl State for ExpectFinished { - fn handle(mut self: Box, cx: &mut ServerContext<'_>, m: Message) -> hs::NextStateOrError { - let finished = - require_handshake_msg!(m, HandshakeType::Finished, HandshakePayload::Finished)?; - - let handshake_hash = self.transcript.get_current_hash(); - let (key_schedule_traffic, expect_verify_data, client_key) = self - .key_schedule - .sign_client_finish(&handshake_hash); - - let fin = constant_time::verify_slices_are_equal(expect_verify_data.as_ref(), &finished.0) - .map_err(|_| { - cx.common - .send_fatal_alert(AlertDescription::DecryptError); - warn!("Finished wrong"); - Error::DecryptError - }) - .map(|_| verify::FinishedMessageVerified::assertion())?; - - // nb. future derivations include Client Finished, but not the - // main application data keying. - self.transcript.add_message(&m); - - cx.common.check_aligned_handshake()?; - - // Install keying to read future messages. - cx.common - .record_layer - .set_message_decrypter(self.suite.derive_decrypter(&client_key)); - - if self.send_ticket { - Self::emit_ticket( - &mut self.transcript, - self.suite, - cx, - &key_schedule_traffic, - &self.config, - )?; - } - - // Application data may now flow, even if we have client auth enabled. - cx.common.start_traffic(); - - #[cfg(feature = "quic")] - { - if cx.common.protocol == Protocol::Quic { - return Ok(Box::new(ExpectQuicTraffic { - key_schedule: key_schedule_traffic, - _fin_verified: fin, - })); - } - } - - Ok(Box::new(ExpectTraffic { - suite: self.suite, - key_schedule: key_schedule_traffic, - want_write_key_update: false, - _fin_verified: fin, - })) - } -} - -// --- Process traffic --- -struct ExpectTraffic { - suite: &'static Tls13CipherSuite, - key_schedule: KeyScheduleTraffic, - want_write_key_update: bool, - _fin_verified: verify::FinishedMessageVerified, -} - -impl ExpectTraffic { - fn handle_key_update( - &mut self, - common: &mut CommonState, - kur: &KeyUpdateRequest, - ) -> Result<(), Error> { - #[cfg(feature = "quic")] - { - if let Protocol::Quic = common.protocol { - common.send_fatal_alert(AlertDescription::UnexpectedMessage); - let msg = "KeyUpdate received in QUIC connection".to_string(); - warn!("{}", msg); - return Err(Error::PeerMisbehavedError(msg)); - } - } - - common.check_aligned_handshake()?; - - match kur { - KeyUpdateRequest::UpdateNotRequested => {} - KeyUpdateRequest::UpdateRequested => { - self.want_write_key_update = true; - } - _ => { - common.send_fatal_alert(AlertDescription::IllegalParameter); - return Err(Error::CorruptMessagePayload(ContentType::Handshake)); - } - } - - // Update our read-side keys. - let new_read_key = self - .key_schedule - .next_client_application_traffic_secret(); - common - .record_layer - .set_message_decrypter( - self.suite - .derive_decrypter(&new_read_key), - ); - - Ok(()) - } -} - -impl State for ExpectTraffic { - fn handle(mut self: Box, cx: &mut ServerContext, m: Message) -> hs::NextStateOrError { - match m.payload { - MessagePayload::ApplicationData(payload) => cx - .common - .take_received_plaintext(payload), - MessagePayload::Handshake { - parsed: - HandshakeMessagePayload { - payload: HandshakePayload::KeyUpdate(key_update), - .. - }, - .. - } => self.handle_key_update(cx.common, &key_update)?, - payload => { - return Err(inappropriate_handshake_message( - &payload, - &[ContentType::ApplicationData, ContentType::Handshake], - &[HandshakeType::KeyUpdate], - )); - } - } - - Ok(self) - } - - fn export_keying_material( - &self, - output: &mut [u8], - label: &[u8], - context: Option<&[u8]>, - ) -> Result<(), Error> { - self.key_schedule - .export_keying_material(output, label, context) - } - - fn perhaps_write_key_update(&mut self, common: &mut CommonState) { - if self.want_write_key_update { - self.want_write_key_update = false; - common.send_msg_encrypt(Message::build_key_update_notify().into()); - - let write_key = self - .key_schedule - .next_server_application_traffic_secret(); - common - .record_layer - .set_message_encrypter(self.suite.derive_encrypter(&write_key)); - } - } - - #[cfg(feature = "secret_extraction")] - fn extract_secrets(&self) -> Result { - self.key_schedule - .extract_secrets(self.suite.common.aead_algorithm, Side::Server) - } -} - -#[cfg(feature = "quic")] -struct ExpectQuicTraffic { - key_schedule: KeyScheduleTraffic, - _fin_verified: verify::FinishedMessageVerified, -} - -#[cfg(feature = "quic")] -impl State for ExpectQuicTraffic { - fn handle(self: Box, _cx: &mut ServerContext<'_>, m: Message) -> hs::NextStateOrError { - // reject all messages - Err(inappropriate_message(&m.payload, &[])) - } - - fn export_keying_material( - &self, - output: &mut [u8], - label: &[u8], - context: Option<&[u8]>, - ) -> Result<(), Error> { - self.key_schedule - .export_keying_material(output, label, context) - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/sign.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/sign.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/sign.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/sign.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,523 +0,0 @@ -use crate::enums::SignatureScheme; -use crate::error::Error; -use crate::key; -use crate::msgs::enums::SignatureAlgorithm; -use crate::x509::{wrap_in_asn1_len, wrap_in_sequence}; - -use ring::io::der; -use ring::signature::{self, EcdsaKeyPair, Ed25519KeyPair, RsaKeyPair}; - -use std::convert::TryFrom; -use std::error::Error as StdError; -use std::fmt; -use std::sync::Arc; - -/// An abstract signing key. -pub trait SigningKey: Send + Sync { - /// Choose a `SignatureScheme` from those offered. - /// - /// Expresses the choice by returning something that implements `Signer`, - /// using the chosen scheme. - fn choose_scheme(&self, offered: &[SignatureScheme]) -> Option>; - - /// What kind of key we have. - fn algorithm(&self) -> SignatureAlgorithm; -} - -/// A thing that can sign a message. -pub trait Signer: Send + Sync { - /// Signs `message` using the selected scheme. - fn sign(&self, message: &[u8]) -> Result, Error>; - - /// Reveals which scheme will be used when you call `sign()`. - fn scheme(&self) -> SignatureScheme; -} - -/// A packaged-together certificate chain, matching `SigningKey` and -/// optional stapled OCSP response and/or SCT list. -#[derive(Clone)] -pub struct CertifiedKey { - /// The certificate chain. - pub cert: Vec, - - /// The certified key. - pub key: Arc, - - /// An optional OCSP response from the certificate issuer, - /// attesting to its continued validity. - pub ocsp: Option>, - - /// An optional collection of SCTs from CT logs, proving the - /// certificate is included on those logs. This must be - /// a `SignedCertificateTimestampList` encoding; see RFC6962. - pub sct_list: Option>, -} - -impl CertifiedKey { - /// Make a new CertifiedKey, with the given chain and key. - /// - /// The cert chain must not be empty. The first certificate in the chain - /// must be the end-entity certificate. - pub fn new(cert: Vec, key: Arc) -> Self { - Self { - cert, - key, - ocsp: None, - sct_list: None, - } - } - - /// The end-entity certificate. - pub fn end_entity_cert(&self) -> Result<&key::Certificate, SignError> { - self.cert.get(0).ok_or(SignError(())) - } - - /// Check the certificate chain for validity: - /// - it should be non-empty list - /// - the first certificate should be parsable as a x509v3, - /// - the first certificate should quote the given server name - /// (if provided) - /// - /// These checks are not security-sensitive. They are the - /// *server* attempting to detect accidental misconfiguration. - pub(crate) fn cross_check_end_entity_cert( - &self, - name: Option, - ) -> Result<(), Error> { - // Always reject an empty certificate chain. - let end_entity_cert = self - .end_entity_cert() - .map_err(|SignError(())| { - Error::General("No end-entity certificate in certificate chain".to_string()) - })?; - - // Reject syntactically-invalid end-entity certificates. - let end_entity_cert = - webpki::EndEntityCert::try_from(end_entity_cert.as_ref()).map_err(|_| { - Error::General( - "End-entity certificate in certificate \ - chain is syntactically invalid" - .to_string(), - ) - })?; - - if let Some(name) = name { - // If SNI was offered then the certificate must be valid for - // that hostname. Note that this doesn't fully validate that the - // certificate is valid; it only validates that the name is one - // that the certificate is valid for, if the certificate is - // valid. - if end_entity_cert - .verify_is_valid_for_dns_name(name) - .is_err() - { - return Err(Error::General( - "The server certificate is not \ - valid for the given name" - .to_string(), - )); - } - } - - Ok(()) - } -} - -/// Parse `der` as any supported key encoding/type, returning -/// the first which works. -pub fn any_supported_type(der: &key::PrivateKey) -> Result, SignError> { - if let Ok(rsa) = RsaSigningKey::new(der) { - Ok(Arc::new(rsa)) - } else if let Ok(ecdsa) = any_ecdsa_type(der) { - Ok(ecdsa) - } else { - any_eddsa_type(der) - } -} - -/// Parse `der` as any ECDSA key type, returning the first which works. -/// -/// Both SEC1 (PEM section starting with 'BEGIN EC PRIVATE KEY') and PKCS8 -/// (PEM section starting with 'BEGIN PRIVATE KEY') encodings are supported. -pub fn any_ecdsa_type(der: &key::PrivateKey) -> Result, SignError> { - if let Ok(ecdsa_p256) = EcdsaSigningKey::new( - der, - SignatureScheme::ECDSA_NISTP256_SHA256, - &signature::ECDSA_P256_SHA256_ASN1_SIGNING, - ) { - return Ok(Arc::new(ecdsa_p256)); - } - - if let Ok(ecdsa_p384) = EcdsaSigningKey::new( - der, - SignatureScheme::ECDSA_NISTP384_SHA384, - &signature::ECDSA_P384_SHA384_ASN1_SIGNING, - ) { - return Ok(Arc::new(ecdsa_p384)); - } - - Err(SignError(())) -} - -/// Parse `der` as any EdDSA key type, returning the first which works. -pub fn any_eddsa_type(der: &key::PrivateKey) -> Result, SignError> { - if let Ok(ed25519) = Ed25519SigningKey::new(der, SignatureScheme::ED25519) { - return Ok(Arc::new(ed25519)); - } - - // TODO: Add support for Ed448 - - Err(SignError(())) -} - -/// A `SigningKey` for RSA-PKCS1 or RSA-PSS. -/// -/// This is used by the test suite, so it must be `pub`, but it isn't part of -/// the public, stable, API. -#[doc(hidden)] -pub struct RsaSigningKey { - key: Arc, -} - -static ALL_RSA_SCHEMES: &[SignatureScheme] = &[ - SignatureScheme::RSA_PSS_SHA512, - SignatureScheme::RSA_PSS_SHA384, - SignatureScheme::RSA_PSS_SHA256, - SignatureScheme::RSA_PKCS1_SHA512, - SignatureScheme::RSA_PKCS1_SHA384, - SignatureScheme::RSA_PKCS1_SHA256, -]; - -impl RsaSigningKey { - /// Make a new `RsaSigningKey` from a DER encoding, in either - /// PKCS#1 or PKCS#8 format. - pub fn new(der: &key::PrivateKey) -> Result { - RsaKeyPair::from_der(&der.0) - .or_else(|_| RsaKeyPair::from_pkcs8(&der.0)) - .map(|s| Self { key: Arc::new(s) }) - .map_err(|_| SignError(())) - } -} - -impl SigningKey for RsaSigningKey { - fn choose_scheme(&self, offered: &[SignatureScheme]) -> Option> { - ALL_RSA_SCHEMES - .iter() - .find(|scheme| offered.contains(scheme)) - .map(|scheme| RsaSigner::new(Arc::clone(&self.key), *scheme)) - } - - fn algorithm(&self) -> SignatureAlgorithm { - SignatureAlgorithm::RSA - } -} - -#[allow(clippy::upper_case_acronyms)] -#[doc(hidden)] -#[deprecated(since = "0.20.0", note = "Use RsaSigningKey")] -pub type RSASigningKey = RsaSigningKey; - -struct RsaSigner { - key: Arc, - scheme: SignatureScheme, - encoding: &'static dyn signature::RsaEncoding, -} - -impl RsaSigner { - fn new(key: Arc, scheme: SignatureScheme) -> Box { - let encoding: &dyn signature::RsaEncoding = match scheme { - SignatureScheme::RSA_PKCS1_SHA256 => &signature::RSA_PKCS1_SHA256, - SignatureScheme::RSA_PKCS1_SHA384 => &signature::RSA_PKCS1_SHA384, - SignatureScheme::RSA_PKCS1_SHA512 => &signature::RSA_PKCS1_SHA512, - SignatureScheme::RSA_PSS_SHA256 => &signature::RSA_PSS_SHA256, - SignatureScheme::RSA_PSS_SHA384 => &signature::RSA_PSS_SHA384, - SignatureScheme::RSA_PSS_SHA512 => &signature::RSA_PSS_SHA512, - _ => unreachable!(), - }; - - Box::new(Self { - key, - scheme, - encoding, - }) - } -} - -impl Signer for RsaSigner { - fn sign(&self, message: &[u8]) -> Result, Error> { - let mut sig = vec![0; self.key.public_modulus_len()]; - - let rng = ring::rand::SystemRandom::new(); - self.key - .sign(self.encoding, &rng, message, &mut sig) - .map(|_| sig) - .map_err(|_| Error::General("signing failed".to_string())) - } - - fn scheme(&self) -> SignatureScheme { - self.scheme - } -} - -/// A SigningKey that uses exactly one TLS-level SignatureScheme -/// and one ring-level signature::SigningAlgorithm. -/// -/// Compare this to RsaSigningKey, which for a particular key is -/// willing to sign with several algorithms. This is quite poor -/// cryptography practice, but is necessary because a given RSA key -/// is expected to work in TLS1.2 (PKCS#1 signatures) and TLS1.3 -/// (PSS signatures) -- nobody is willing to obtain certificates for -/// different protocol versions. -/// -/// Currently this is only implemented for ECDSA keys. -struct EcdsaSigningKey { - key: Arc, - scheme: SignatureScheme, -} - -impl EcdsaSigningKey { - /// Make a new `ECDSASigningKey` from a DER encoding in PKCS#8 or SEC1 - /// format, expecting a key usable with precisely the given signature - /// scheme. - fn new( - der: &key::PrivateKey, - scheme: SignatureScheme, - sigalg: &'static signature::EcdsaSigningAlgorithm, - ) -> Result { - EcdsaKeyPair::from_pkcs8(sigalg, &der.0) - .map_err(|_| ()) - .or_else(|_| Self::convert_sec1_to_pkcs8(scheme, sigalg, &der.0)) - .map(|kp| Self { - key: Arc::new(kp), - scheme, - }) - } - - /// Convert a SEC1 encoding to PKCS8, and ask ring to parse it. This - /// can be removed once https://github.com/briansmith/ring/pull/1456 - /// (or equivalent) is landed. - fn convert_sec1_to_pkcs8( - scheme: SignatureScheme, - sigalg: &'static signature::EcdsaSigningAlgorithm, - maybe_sec1_der: &[u8], - ) -> Result { - let pkcs8_prefix = match scheme { - SignatureScheme::ECDSA_NISTP256_SHA256 => &PKCS8_PREFIX_ECDSA_NISTP256, - SignatureScheme::ECDSA_NISTP384_SHA384 => &PKCS8_PREFIX_ECDSA_NISTP384, - _ => unreachable!(), // all callers are in this file - }; - - // wrap sec1 encoding in an OCTET STRING - let mut sec1_wrap = Vec::with_capacity(maybe_sec1_der.len() + 8); - sec1_wrap.extend_from_slice(maybe_sec1_der); - wrap_in_asn1_len(&mut sec1_wrap); - sec1_wrap.insert(0, der::Tag::OctetString as u8); - - let mut pkcs8 = Vec::with_capacity(pkcs8_prefix.len() + sec1_wrap.len() + 4); - pkcs8.extend_from_slice(pkcs8_prefix); - pkcs8.extend_from_slice(&sec1_wrap); - wrap_in_sequence(&mut pkcs8); - - EcdsaKeyPair::from_pkcs8(sigalg, &pkcs8).map_err(|_| ()) - } -} - -// This is (line-by-line): -// - INTEGER Version = 0 -// - SEQUENCE (privateKeyAlgorithm) -// - id-ecPublicKey OID -// - prime256v1 OID -const PKCS8_PREFIX_ECDSA_NISTP256: &[u8] = b"\x02\x01\x00\ - \x30\x13\ - \x06\x07\x2a\x86\x48\xce\x3d\x02\x01\ - \x06\x08\x2a\x86\x48\xce\x3d\x03\x01\x07"; - -// This is (line-by-line): -// - INTEGER Version = 0 -// - SEQUENCE (privateKeyAlgorithm) -// - id-ecPublicKey OID -// - secp384r1 OID -const PKCS8_PREFIX_ECDSA_NISTP384: &[u8] = b"\x02\x01\x00\ - \x30\x10\ - \x06\x07\x2a\x86\x48\xce\x3d\x02\x01\ - \x06\x05\x2b\x81\x04\x00\x22"; - -impl SigningKey for EcdsaSigningKey { - fn choose_scheme(&self, offered: &[SignatureScheme]) -> Option> { - if offered.contains(&self.scheme) { - Some(Box::new(EcdsaSigner { - key: Arc::clone(&self.key), - scheme: self.scheme, - })) - } else { - None - } - } - - fn algorithm(&self) -> SignatureAlgorithm { - use crate::msgs::handshake::DecomposedSignatureScheme; - self.scheme.sign() - } -} - -struct EcdsaSigner { - key: Arc, - scheme: SignatureScheme, -} - -impl Signer for EcdsaSigner { - fn sign(&self, message: &[u8]) -> Result, Error> { - let rng = ring::rand::SystemRandom::new(); - self.key - .sign(&rng, message) - .map_err(|_| Error::General("signing failed".into())) - .map(|sig| sig.as_ref().into()) - } - - fn scheme(&self) -> SignatureScheme { - self.scheme - } -} - -/// A SigningKey that uses exactly one TLS-level SignatureScheme -/// and one ring-level signature::SigningAlgorithm. -/// -/// Compare this to RsaSigningKey, which for a particular key is -/// willing to sign with several algorithms. This is quite poor -/// cryptography practice, but is necessary because a given RSA key -/// is expected to work in TLS1.2 (PKCS#1 signatures) and TLS1.3 -/// (PSS signatures) -- nobody is willing to obtain certificates for -/// different protocol versions. -/// -/// Currently this is only implemented for Ed25519 keys. -struct Ed25519SigningKey { - key: Arc, - scheme: SignatureScheme, -} - -impl Ed25519SigningKey { - /// Make a new `Ed25519SigningKey` from a DER encoding in PKCS#8 format, - /// expecting a key usable with precisely the given signature scheme. - fn new(der: &key::PrivateKey, scheme: SignatureScheme) -> Result { - Ed25519KeyPair::from_pkcs8_maybe_unchecked(&der.0) - .map(|kp| Self { - key: Arc::new(kp), - scheme, - }) - .map_err(|_| SignError(())) - } -} - -impl SigningKey for Ed25519SigningKey { - fn choose_scheme(&self, offered: &[SignatureScheme]) -> Option> { - if offered.contains(&self.scheme) { - Some(Box::new(Ed25519Signer { - key: Arc::clone(&self.key), - scheme: self.scheme, - })) - } else { - None - } - } - - fn algorithm(&self) -> SignatureAlgorithm { - use crate::msgs::handshake::DecomposedSignatureScheme; - self.scheme.sign() - } -} - -struct Ed25519Signer { - key: Arc, - scheme: SignatureScheme, -} - -impl Signer for Ed25519Signer { - fn sign(&self, message: &[u8]) -> Result, Error> { - Ok(self.key.sign(message).as_ref().into()) - } - - fn scheme(&self) -> SignatureScheme { - self.scheme - } -} - -/// The set of schemes we support for signatures and -/// that are allowed for TLS1.3. -pub fn supported_sign_tls13() -> &'static [SignatureScheme] { - &[ - SignatureScheme::ECDSA_NISTP384_SHA384, - SignatureScheme::ECDSA_NISTP256_SHA256, - SignatureScheme::RSA_PSS_SHA512, - SignatureScheme::RSA_PSS_SHA384, - SignatureScheme::RSA_PSS_SHA256, - SignatureScheme::ED25519, - ] -} - -/// Errors while signing -#[derive(Debug)] -pub struct SignError(()); - -impl fmt::Display for SignError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - f.write_str("sign error") - } -} - -impl StdError for SignError {} - -#[test] -fn can_load_ecdsa_nistp256_pkcs8() { - let key = key::PrivateKey(include_bytes!("testdata/nistp256key.pkcs8.der").to_vec()); - assert!(any_supported_type(&key).is_ok()); - assert!(any_ecdsa_type(&key).is_ok()); - assert!(any_eddsa_type(&key).is_err()); -} - -#[test] -fn can_load_ecdsa_nistp256_sec1() { - let key = key::PrivateKey(include_bytes!("testdata/nistp256key.der").to_vec()); - assert!(any_supported_type(&key).is_ok()); - assert!(any_ecdsa_type(&key).is_ok()); - assert!(any_eddsa_type(&key).is_err()); -} - -#[test] -fn can_load_ecdsa_nistp384_pkcs8() { - let key = key::PrivateKey(include_bytes!("testdata/nistp384key.pkcs8.der").to_vec()); - assert!(any_supported_type(&key).is_ok()); - assert!(any_ecdsa_type(&key).is_ok()); - assert!(any_eddsa_type(&key).is_err()); -} - -#[test] -fn can_load_ecdsa_nistp384_sec1() { - let key = key::PrivateKey(include_bytes!("testdata/nistp384key.der").to_vec()); - assert!(any_supported_type(&key).is_ok()); - assert!(any_ecdsa_type(&key).is_ok()); - assert!(any_eddsa_type(&key).is_err()); -} - -#[test] -fn can_load_eddsa_pkcs8() { - let key = key::PrivateKey(include_bytes!("testdata/eddsakey.der").to_vec()); - assert!(any_supported_type(&key).is_ok()); - assert!(any_eddsa_type(&key).is_ok()); - assert!(any_ecdsa_type(&key).is_err()); -} - -#[test] -fn can_load_rsa2048_pkcs8() { - let key = key::PrivateKey(include_bytes!("testdata/rsa2048key.pkcs8.der").to_vec()); - assert!(any_supported_type(&key).is_ok()); - assert!(any_eddsa_type(&key).is_err()); - assert!(any_ecdsa_type(&key).is_err()); -} - -#[test] -fn can_load_rsa2048_pkcs1() { - let key = key::PrivateKey(include_bytes!("testdata/rsa2048key.pkcs1.der").to_vec()); - assert!(any_supported_type(&key).is_ok()); - assert!(any_eddsa_type(&key).is_err()); - assert!(any_ecdsa_type(&key).is_err()); -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/stream.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/stream.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/stream.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/stream.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,254 +0,0 @@ -use crate::conn::{ConnectionCommon, SideData}; - -use std::io::{IoSlice, Read, Result, Write}; -use std::ops::{Deref, DerefMut}; - -/// This type implements `io::Read` and `io::Write`, encapsulating -/// a Connection `C` and an underlying transport `T`, such as a socket. -/// -/// This allows you to use a rustls Connection like a normal stream. -#[derive(Debug)] -pub struct Stream<'a, C: 'a + ?Sized, T: 'a + Read + Write + ?Sized> { - /// Our TLS connection - pub conn: &'a mut C, - - /// The underlying transport, like a socket - pub sock: &'a mut T, -} - -impl<'a, C, T, S> Stream<'a, C, T> -where - C: 'a + DerefMut + Deref>, - T: 'a + Read + Write, - S: SideData, -{ - /// Make a new Stream using the Connection `conn` and socket-like object - /// `sock`. This does not fail and does no IO. - pub fn new(conn: &'a mut C, sock: &'a mut T) -> Self { - Self { conn, sock } - } - - /// If we're handshaking, complete all the IO for that. - /// If we have data to write, write it all. - fn complete_prior_io(&mut self) -> Result<()> { - if self.conn.is_handshaking() { - self.conn.complete_io(self.sock)?; - } - - if self.conn.wants_write() { - self.conn.complete_io(self.sock)?; - } - - Ok(()) - } -} - -impl<'a, C, T, S> Read for Stream<'a, C, T> -where - C: 'a + DerefMut + Deref>, - T: 'a + Read + Write, - S: SideData, -{ - fn read(&mut self, buf: &mut [u8]) -> Result { - self.complete_prior_io()?; - - // We call complete_io() in a loop since a single call may read only - // a partial packet from the underlying transport. A full packet is - // needed to get more plaintext, which we must do if EOF has not been - // hit. Otherwise, we will prematurely signal EOF by returning 0. We - // determine if EOF has actually been hit by checking if 0 bytes were - // read from the underlying transport. - while self.conn.wants_read() { - let at_eof = self.conn.complete_io(self.sock)?.0 == 0; - if at_eof { - if let Ok(io_state) = self.conn.process_new_packets() { - if at_eof && io_state.plaintext_bytes_to_read() == 0 { - return Ok(0); - } - } - break; - } - } - - self.conn.reader().read(buf) - } - - #[cfg(read_buf)] - fn read_buf(&mut self, cursor: std::io::BorrowedCursor<'_>) -> Result<()> { - self.complete_prior_io()?; - - // We call complete_io() in a loop since a single call may read only - // a partial packet from the underlying transport. A full packet is - // needed to get more plaintext, which we must do if EOF has not been - // hit. Otherwise, we will prematurely signal EOF by returning without - // writing anything. We determine if EOF has actually been hit by - // checking if 0 bytes were read from the underlying transport. - while self.conn.wants_read() { - let at_eof = self.conn.complete_io(self.sock)?.0 == 0; - if at_eof { - if let Ok(io_state) = self.conn.process_new_packets() { - if at_eof && io_state.plaintext_bytes_to_read() == 0 { - return Ok(()); - } - } - break; - } - } - - self.conn.reader().read_buf(cursor) - } -} - -impl<'a, C, T, S> Write for Stream<'a, C, T> -where - C: 'a + DerefMut + Deref>, - T: 'a + Read + Write, - S: SideData, -{ - fn write(&mut self, buf: &[u8]) -> Result { - self.complete_prior_io()?; - - let len = self.conn.writer().write(buf)?; - - // Try to write the underlying transport here, but don't let - // any errors mask the fact we've consumed `len` bytes. - // Callers will learn of permanent errors on the next call. - let _ = self.conn.complete_io(self.sock); - - Ok(len) - } - - fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result { - self.complete_prior_io()?; - - let len = self - .conn - .writer() - .write_vectored(bufs)?; - - // Try to write the underlying transport here, but don't let - // any errors mask the fact we've consumed `len` bytes. - // Callers will learn of permanent errors on the next call. - let _ = self.conn.complete_io(self.sock); - - Ok(len) - } - - fn flush(&mut self) -> Result<()> { - self.complete_prior_io()?; - - self.conn.writer().flush()?; - if self.conn.wants_write() { - self.conn.complete_io(self.sock)?; - } - Ok(()) - } -} - -/// This type implements `io::Read` and `io::Write`, encapsulating -/// and owning a Connection `C` and an underlying blocking transport -/// `T`, such as a socket. -/// -/// This allows you to use a rustls Connection like a normal stream. -#[derive(Debug)] -pub struct StreamOwned { - /// Our connection - pub conn: C, - - /// The underlying transport, like a socket - pub sock: T, -} - -impl StreamOwned -where - C: DerefMut + Deref>, - T: Read + Write, - S: SideData, -{ - /// Make a new StreamOwned taking the Connection `conn` and socket-like - /// object `sock`. This does not fail and does no IO. - /// - /// This is the same as `Stream::new` except `conn` and `sock` are - /// moved into the StreamOwned. - pub fn new(conn: C, sock: T) -> Self { - Self { conn, sock } - } - - /// Get a reference to the underlying socket - pub fn get_ref(&self) -> &T { - &self.sock - } - - /// Get a mutable reference to the underlying socket - pub fn get_mut(&mut self) -> &mut T { - &mut self.sock - } -} - -impl<'a, C, T, S> StreamOwned -where - C: DerefMut + Deref>, - T: Read + Write, - S: SideData, -{ - fn as_stream(&'a mut self) -> Stream<'a, C, T> { - Stream { - conn: &mut self.conn, - sock: &mut self.sock, - } - } -} - -impl Read for StreamOwned -where - C: DerefMut + Deref>, - T: Read + Write, - S: SideData, -{ - fn read(&mut self, buf: &mut [u8]) -> Result { - self.as_stream().read(buf) - } - - #[cfg(read_buf)] - fn read_buf(&mut self, cursor: std::io::BorrowedCursor<'_>) -> Result<()> { - self.as_stream().read_buf(cursor) - } -} - -impl Write for StreamOwned -where - C: DerefMut + Deref>, - T: Read + Write, - S: SideData, -{ - fn write(&mut self, buf: &[u8]) -> Result { - self.as_stream().write(buf) - } - - fn flush(&mut self) -> Result<()> { - self.as_stream().flush() - } -} - -#[cfg(test)] -mod tests { - use super::{Stream, StreamOwned}; - use crate::client::ClientConnection; - use crate::server::ServerConnection; - use std::net::TcpStream; - - #[test] - fn stream_can_be_created_for_connection_and_tcpstream() { - type _Test<'a> = Stream<'a, ClientConnection, TcpStream>; - } - - #[test] - fn streamowned_can_be_created_for_client_and_tcpstream() { - type _Test = StreamOwned; - } - - #[test] - fn streamowned_can_be_created_for_server_and_tcpstream() { - type _Test = StreamOwned; - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/suites.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/suites.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/suites.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/suites.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,340 +0,0 @@ -use std::fmt; - -use crate::enums::{CipherSuite, ProtocolVersion, SignatureScheme}; -use crate::msgs::enums::SignatureAlgorithm; -use crate::msgs::handshake::DecomposedSignatureScheme; -#[cfg(feature = "tls12")] -use crate::tls12::Tls12CipherSuite; -#[cfg(feature = "tls12")] -use crate::tls12::{ - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, - // TLS1.2 suites - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, -}; -use crate::tls13::Tls13CipherSuite; -use crate::tls13::{ - TLS13_AES_128_GCM_SHA256, TLS13_AES_256_GCM_SHA384, TLS13_CHACHA20_POLY1305_SHA256, -}; -#[cfg(feature = "tls12")] -use crate::versions::TLS12; -use crate::versions::{SupportedProtocolVersion, TLS13}; - -/// Bulk symmetric encryption scheme used by a cipher suite. -#[allow(non_camel_case_types)] -#[derive(Debug, Eq, PartialEq)] -pub enum BulkAlgorithm { - /// AES with 128-bit keys in Galois counter mode. - Aes128Gcm, - - /// AES with 256-bit keys in Galois counter mode. - Aes256Gcm, - - /// Chacha20 for confidentiality with poly1305 for authenticity. - Chacha20Poly1305, -} - -/// Common state for cipher suites (both for TLS 1.2 and TLS 1.3) -#[derive(Debug)] -pub struct CipherSuiteCommon { - /// The TLS enumeration naming this cipher suite. - pub suite: CipherSuite, - - /// How to do bulk encryption. - pub bulk: BulkAlgorithm, - - pub(crate) aead_algorithm: &'static ring::aead::Algorithm, -} - -/// A cipher suite supported by rustls. -/// -/// All possible instances of this type are provided by the library in -/// the [`ALL_CIPHER_SUITES`] array. -#[derive(Clone, Copy, PartialEq)] -pub enum SupportedCipherSuite { - /// A TLS 1.2 cipher suite - #[cfg(feature = "tls12")] - Tls12(&'static Tls12CipherSuite), - /// A TLS 1.3 cipher suite - Tls13(&'static Tls13CipherSuite), -} - -impl fmt::Debug for SupportedCipherSuite { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - self.suite().fmt(f) - } -} - -impl SupportedCipherSuite { - /// Which hash function to use with this suite. - pub fn hash_algorithm(&self) -> &'static ring::digest::Algorithm { - match self { - #[cfg(feature = "tls12")] - Self::Tls12(inner) => inner.hash_algorithm(), - Self::Tls13(inner) => inner.hash_algorithm(), - } - } - - /// The cipher suite's identifier - pub fn suite(&self) -> CipherSuite { - self.common().suite - } - - pub(crate) fn common(&self) -> &CipherSuiteCommon { - match self { - #[cfg(feature = "tls12")] - Self::Tls12(inner) => &inner.common, - Self::Tls13(inner) => &inner.common, - } - } - - pub(crate) fn tls13(&self) -> Option<&'static Tls13CipherSuite> { - match self { - #[cfg(feature = "tls12")] - Self::Tls12(_) => None, - Self::Tls13(inner) => Some(inner), - } - } - - /// Return supported protocol version for the cipher suite. - pub fn version(&self) -> &'static SupportedProtocolVersion { - match self { - #[cfg(feature = "tls12")] - Self::Tls12(_) => &TLS12, - Self::Tls13(_) => &TLS13, - } - } - - /// Return true if this suite is usable for a key only offering `sig_alg` - /// signatures. This resolves to true for all TLS1.3 suites. - pub fn usable_for_signature_algorithm(&self, _sig_alg: SignatureAlgorithm) -> bool { - match self { - Self::Tls13(_) => true, // no constraint expressed by ciphersuite (e.g., TLS1.3) - #[cfg(feature = "tls12")] - Self::Tls12(inner) => inner - .sign - .iter() - .any(|scheme| scheme.sign() == _sig_alg), - } - } -} - -/// A list of all the cipher suites supported by rustls. -pub static ALL_CIPHER_SUITES: &[SupportedCipherSuite] = &[ - // TLS1.3 suites - TLS13_AES_256_GCM_SHA384, - TLS13_AES_128_GCM_SHA256, - TLS13_CHACHA20_POLY1305_SHA256, - // TLS1.2 suites - #[cfg(feature = "tls12")] - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, - #[cfg(feature = "tls12")] - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, - #[cfg(feature = "tls12")] - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, - #[cfg(feature = "tls12")] - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, - #[cfg(feature = "tls12")] - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, - #[cfg(feature = "tls12")] - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, -]; - -/// The cipher suite configuration that an application should use by default. -/// -/// This will be [`ALL_CIPHER_SUITES`] sans any supported cipher suites that -/// shouldn't be enabled by most applications. -pub static DEFAULT_CIPHER_SUITES: &[SupportedCipherSuite] = ALL_CIPHER_SUITES; - -// These both O(N^2)! -pub(crate) fn choose_ciphersuite_preferring_client( - client_suites: &[CipherSuite], - server_suites: &[SupportedCipherSuite], -) -> Option { - for client_suite in client_suites { - if let Some(selected) = server_suites - .iter() - .find(|x| *client_suite == x.suite()) - { - return Some(*selected); - } - } - - None -} - -pub(crate) fn choose_ciphersuite_preferring_server( - client_suites: &[CipherSuite], - server_suites: &[SupportedCipherSuite], -) -> Option { - if let Some(selected) = server_suites - .iter() - .find(|x| client_suites.contains(&x.suite())) - { - return Some(*selected); - } - - None -} - -/// Return a list of the ciphersuites in `all` with the suites -/// incompatible with `SignatureAlgorithm` `sigalg` removed. -pub(crate) fn reduce_given_sigalg( - all: &[SupportedCipherSuite], - sigalg: SignatureAlgorithm, -) -> Vec { - all.iter() - .filter(|&&suite| suite.usable_for_signature_algorithm(sigalg)) - .copied() - .collect() -} - -/// Return a list of the ciphersuites in `all` with the suites -/// incompatible with the chosen `version` removed. -pub(crate) fn reduce_given_version( - all: &[SupportedCipherSuite], - version: ProtocolVersion, -) -> Vec { - all.iter() - .filter(|&&suite| suite.version().version == version) - .copied() - .collect() -} - -/// Return true if `sigscheme` is usable by any of the given suites. -pub(crate) fn compatible_sigscheme_for_suites( - sigscheme: SignatureScheme, - common_suites: &[SupportedCipherSuite], -) -> bool { - let sigalg = sigscheme.sign(); - common_suites - .iter() - .any(|&suite| suite.usable_for_signature_algorithm(sigalg)) -} - -/// Secrets for transmitting/receiving data over a TLS session. -/// -/// After performing a handshake with rustls, these secrets can be extracted -/// to configure kTLS for a socket, and have the kernel take over encryption -/// and/or decryption. -#[cfg(feature = "secret_extraction")] -pub struct ExtractedSecrets { - /// sequence number and secrets for the "tx" (transmit) direction - pub tx: (u64, ConnectionTrafficSecrets), - - /// sequence number and secrets for the "rx" (receive) direction - pub rx: (u64, ConnectionTrafficSecrets), -} - -/// [ExtractedSecrets] minus the sequence numbers -#[cfg(feature = "secret_extraction")] -pub(crate) struct PartiallyExtractedSecrets { - /// secrets for the "tx" (transmit) direction - pub(crate) tx: ConnectionTrafficSecrets, - - /// secrets for the "rx" (receive) direction - pub(crate) rx: ConnectionTrafficSecrets, -} - -/// Secrets used to encrypt/decrypt data in a TLS session. -/// -/// These can be used to configure kTLS for a socket in one direction. -/// The only other piece of information needed is the sequence number, -/// which is in [ExtractedSecrets]. -#[cfg(feature = "secret_extraction")] -#[non_exhaustive] -pub enum ConnectionTrafficSecrets { - /// Secrets for the AES_128_GCM AEAD algorithm - Aes128Gcm { - /// key (16 bytes) - key: [u8; 16], - /// salt (4 bytes) - salt: [u8; 4], - /// initialization vector (8 bytes, chopped from key block) - iv: [u8; 8], - }, - - /// Secrets for the AES_256_GCM AEAD algorithm - Aes256Gcm { - /// key (32 bytes) - key: [u8; 32], - /// salt (4 bytes) - salt: [u8; 4], - /// initialization vector (8 bytes, chopped from key block) - iv: [u8; 8], - }, - - /// Secrets for the CHACHA20_POLY1305 AEAD algorithm - Chacha20Poly1305 { - /// key (32 bytes) - key: [u8; 32], - /// initialization vector (12 bytes) - iv: [u8; 12], - }, -} - -#[cfg(test)] -mod test { - use super::*; - use crate::enums::CipherSuite; - - #[test] - fn test_client_pref() { - let client = vec![ - CipherSuite::TLS13_AES_128_GCM_SHA256, - CipherSuite::TLS13_AES_256_GCM_SHA384, - ]; - let server = vec![TLS13_AES_256_GCM_SHA384, TLS13_AES_128_GCM_SHA256]; - let chosen = choose_ciphersuite_preferring_client(&client, &server); - assert!(chosen.is_some()); - assert_eq!(chosen.unwrap(), TLS13_AES_128_GCM_SHA256); - } - - #[test] - fn test_server_pref() { - let client = vec![ - CipherSuite::TLS13_AES_128_GCM_SHA256, - CipherSuite::TLS13_AES_256_GCM_SHA384, - ]; - let server = vec![TLS13_AES_256_GCM_SHA384, TLS13_AES_128_GCM_SHA256]; - let chosen = choose_ciphersuite_preferring_server(&client, &server); - assert!(chosen.is_some()); - assert_eq!(chosen.unwrap(), TLS13_AES_256_GCM_SHA384); - } - - #[test] - fn test_pref_fails() { - assert!(choose_ciphersuite_preferring_client( - &[CipherSuite::TLS_NULL_WITH_NULL_NULL], - ALL_CIPHER_SUITES - ) - .is_none()); - assert!(choose_ciphersuite_preferring_server( - &[CipherSuite::TLS_NULL_WITH_NULL_NULL], - ALL_CIPHER_SUITES - ) - .is_none()); - } - - #[test] - fn test_scs_is_debug() { - println!("{:?}", ALL_CIPHER_SUITES); - } - - #[test] - fn test_can_resume_to() { - assert!(TLS13_AES_128_GCM_SHA256 - .tls13() - .unwrap() - .can_resume_from(crate::tls13::TLS13_CHACHA20_POLY1305_SHA256_INTERNAL) - .is_some()); - assert!(TLS13_AES_256_GCM_SHA384 - .tls13() - .unwrap() - .can_resume_from(crate::tls13::TLS13_CHACHA20_POLY1305_SHA256_INTERNAL) - .is_none()); - } -} Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-arstechnica.0.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-arstechnica.0.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-arstechnica.1.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-arstechnica.1.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-arstechnica.2.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-arstechnica.2.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-arstechnica.3.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-arstechnica.3.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-duckduckgo.0.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-duckduckgo.0.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-duckduckgo.1.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-duckduckgo.1.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-github.0.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-github.0.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-github.1.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-github.1.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-google.0.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-google.0.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-google.1.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-google.1.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-google.2.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-google.2.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-hn.0.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-hn.0.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-hn.1.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-hn.1.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-reddit.0.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-reddit.0.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-reddit.1.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-reddit.1.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-rustlang.0.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-rustlang.0.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-rustlang.1.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-rustlang.1.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-rustlang.2.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-rustlang.2.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-rustlang.3.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-rustlang.3.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-servo.0.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-servo.0.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-servo.1.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-servo.1.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-stackoverflow.0.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-stackoverflow.0.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-stackoverflow.1.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-stackoverflow.1.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-stackoverflow.2.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-stackoverflow.2.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-twitter.0.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-twitter.0.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-twitter.1.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-twitter.1.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-wapo.0.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-wapo.0.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-wapo.1.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-wapo.1.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-wikipedia.0.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-wikipedia.0.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-wikipedia.1.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/cert-wikipedia.1.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/deframer-empty-applicationdata.bin and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/deframer-empty-applicationdata.bin differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/deframer-invalid-contenttype.bin and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/deframer-invalid-contenttype.bin differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/deframer-invalid-empty.bin and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/deframer-invalid-empty.bin differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/deframer-invalid-length.bin and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/deframer-invalid-length.bin differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/deframer-invalid-version.bin and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/deframer-invalid-version.bin differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/deframer-test.1.bin and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/deframer-test.1.bin differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/deframer-test.2.bin and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/deframer-test.2.bin differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/eddsakey.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/eddsakey.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/nistp256key.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/nistp256key.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/nistp256key.pkcs8.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/nistp256key.pkcs8.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/nistp384key.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/nistp384key.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/nistp384key.pkcs8.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/nistp384key.pkcs8.der differ diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/prf-result.1.bin temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/prf-result.1.bin --- temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/prf-result.1.bin 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/prf-result.1.bin 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -ãò)ºr{á{& U|ÔSª²ÃÔ•2›RÔæÛZk0‘é 5ÉɤkNºù¯ "÷}ï«ý7—ÀVK«O¼‘fnï›—üãOyg‰º¤€‚Ñ"îBŧ.ZQÿ÷‡4{f \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/prf-result.2.bin temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/prf-result.2.bin --- temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/prf-result.2.bin 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/prf-result.2.bin 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -aõˆÇ˜ÅÂÿnzœµíÍãùLfš*F8×Õ²ƒ-öx˜uÇ~m†‹Ç\Eâ´ ô¡q;'7hC%’÷ÜŽ¨ï">ê…„¿he= ü@VØð%Ä]ߦæþÇðT´ ÖòУ#>I¤>uÅcí¾"þ%N3¡°éö¹‚fu¾ÇЄVXÜœ9uE@@¹ôlz@á¸ø ¦ 9z(¿õÒïPfhBû¤v2½µOöc?†»È6æ@Ôؘ \ No newline at end of file Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/rsa2048key.pkcs1.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/rsa2048key.pkcs1.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/rsa2048key.pkcs8.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-0.20.8/src/testdata/rsa2048key.pkcs8.der differ diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/ticketer.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/ticketer.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/ticketer.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/ticketer.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,338 +0,0 @@ -use crate::rand; -use crate::server::ProducesTickets; -use crate::Error; - -use ring::aead; -use std::mem; -use std::sync::{Arc, Mutex, MutexGuard}; -use std::time; - -/// The timebase for expiring and rolling tickets and ticketing -/// keys. This is UNIX wall time in seconds. -/// -/// This is guaranteed to be on or after the UNIX epoch. -#[derive(Clone, Copy, Debug)] -pub struct TimeBase(time::Duration); - -impl TimeBase { - #[inline] - pub fn now() -> Result { - Ok(Self( - time::SystemTime::now().duration_since(time::UNIX_EPOCH)?, - )) - } - - #[inline] - pub fn as_secs(&self) -> u64 { - self.0.as_secs() - } -} - -/// This is a `ProducesTickets` implementation which uses -/// any *ring* `aead::Algorithm` to encrypt and authentication -/// the ticket payload. It does not enforce any lifetime -/// constraint. -struct AeadTicketer { - alg: &'static aead::Algorithm, - key: aead::LessSafeKey, - lifetime: u32, -} - -impl AeadTicketer { - /// Make a ticketer with recommended configuration and a random key. - fn new() -> Result { - let mut key = [0u8; 32]; - rand::fill_random(&mut key)?; - - let alg = &aead::CHACHA20_POLY1305; - let key = aead::UnboundKey::new(alg, &key).unwrap(); - - Ok(Self { - alg, - key: aead::LessSafeKey::new(key), - lifetime: 60 * 60 * 12, - }) - } -} - -impl ProducesTickets for AeadTicketer { - fn enabled(&self) -> bool { - true - } - fn lifetime(&self) -> u32 { - self.lifetime - } - - /// Encrypt `message` and return the ciphertext. - fn encrypt(&self, message: &[u8]) -> Option> { - // Random nonce, because a counter is a privacy leak. - let mut nonce_buf = [0u8; 12]; - rand::fill_random(&mut nonce_buf).ok()?; - let nonce = ring::aead::Nonce::assume_unique_for_key(nonce_buf); - let aad = ring::aead::Aad::empty(); - - let mut ciphertext = - Vec::with_capacity(nonce_buf.len() + message.len() + self.key.algorithm().tag_len()); - ciphertext.extend(nonce_buf); - ciphertext.extend(message); - self.key - .seal_in_place_separate_tag(nonce, aad, &mut ciphertext[nonce_buf.len()..]) - .map(|tag| { - ciphertext.extend(tag.as_ref()); - ciphertext - }) - .ok() - } - - /// Decrypt `ciphertext` and recover the original message. - fn decrypt(&self, ciphertext: &[u8]) -> Option> { - // Non-panicking `let (nonce, ciphertext) = ciphertext.split_at(...)`. - let nonce = ciphertext.get(..self.alg.nonce_len())?; - let ciphertext = ciphertext.get(nonce.len()..)?; - - // This won't fail since `nonce` has the required length. - let nonce = ring::aead::Nonce::try_assume_unique_for_key(nonce).ok()?; - - let mut out = Vec::from(ciphertext); - - let plain_len = self - .key - .open_in_place(nonce, aead::Aad::empty(), &mut out) - .ok()? - .len(); - out.truncate(plain_len); - - Some(out) - } -} - -struct TicketSwitcherState { - next: Option>, - current: Box, - previous: Option>, - next_switch_time: u64, -} - -/// A ticketer that has a 'current' sub-ticketer and a single -/// 'previous' ticketer. It creates a new ticketer every so -/// often, demoting the current ticketer. -struct TicketSwitcher { - generator: fn() -> Result, rand::GetRandomFailed>, - lifetime: u32, - state: Mutex, -} - -impl TicketSwitcher { - /// `lifetime` is in seconds, and is how long the current ticketer - /// is used to generate new tickets. Tickets are accepted for no - /// longer than twice this duration. `generator` produces a new - /// `ProducesTickets` implementation. - fn new( - lifetime: u32, - generator: fn() -> Result, rand::GetRandomFailed>, - ) -> Result { - let now = TimeBase::now()?; - Ok(Self { - generator, - lifetime, - state: Mutex::new(TicketSwitcherState { - next: Some(generator()?), - current: generator()?, - previous: None, - next_switch_time: now - .as_secs() - .saturating_add(u64::from(lifetime)), - }), - }) - } - - /// If it's time, demote the `current` ticketer to `previous` (so it - /// does no new encryptions but can do decryption) and use next for a - /// new `current` ticketer. - /// - /// Calling this regularly will ensure timely key erasure. Otherwise, - /// key erasure will be delayed until the next encrypt/decrypt call. - /// - /// For efficiency, this is also responsible for locking the state mutex - /// and returning the mutexguard. - fn maybe_roll(&self, now: TimeBase) -> Option> { - // The code below aims to make switching as efficient as possible - // in the common case that the generator never fails. To achieve this - // we run the following steps: - // 1. If no switch is necessary, just return the mutexguard - // 2. Shift over all of the ticketers (so current becomes previous, - // and next becomes current). After this, other threads can - // start using the new current ticketer. - // 3. unlock mutex and generate new ticketer. - // 4. Place new ticketer in next and return current - // - // There are a few things to note here. First, we don't check whether - // a new switch might be needed in step 4, even though, due to locking - // and entropy collection, significant amounts of time may have passed. - // This is to guarantee that the thread doing the switch will eventually - // make progress. - // - // Second, because next may be None, step 2 can fail. In that case - // we enter a recovery mode where we generate 2 new ticketers, one for - // next and one for the current ticketer. We then take the mutex a - // second time and redo the time check to see if a switch is still - // necessary. - // - // This somewhat convoluted approach ensures good availability of the - // mutex, by ensuring that the state is usable and the mutex not held - // during generation. It also ensures that, so long as the inner - // ticketer never generates panics during encryption/decryption, - // we are guaranteed to never panic when holding the mutex. - - let now = now.as_secs(); - let mut are_recovering = false; // Are we recovering from previous failure? - { - // Scope the mutex so we only take it for as long as needed - let mut state = self.state.lock().ok()?; - - // Fast path in case we do not need to switch to the next ticketer yet - if now <= state.next_switch_time { - return Some(state); - } - - // Make the switch, or mark for recovery if not possible - if let Some(next) = state.next.take() { - state.previous = Some(mem::replace(&mut state.current, next)); - state.next_switch_time = now.saturating_add(u64::from(self.lifetime)); - } else { - are_recovering = true; - } - } - - // We always need a next, so generate it now - let next = (self.generator)().ok()?; - if !are_recovering { - // Normal path, generate new next and place it in the state - let mut state = self.state.lock().ok()?; - state.next = Some(next); - Some(state) - } else { - // Recovering, generate also a new current ticketer, and modify state - // as needed. (we need to redo the time check, otherwise this might - // result in very rapid switching of ticketers) - let new_current = (self.generator)().ok()?; - let mut state = self.state.lock().ok()?; - state.next = Some(next); - if now > state.next_switch_time { - state.previous = Some(mem::replace(&mut state.current, new_current)); - state.next_switch_time = now.saturating_add(u64::from(self.lifetime)); - } - Some(state) - } - } -} - -impl ProducesTickets for TicketSwitcher { - fn lifetime(&self) -> u32 { - self.lifetime * 2 - } - - fn enabled(&self) -> bool { - true - } - - fn encrypt(&self, message: &[u8]) -> Option> { - let state = self.maybe_roll(TimeBase::now().ok()?)?; - - state.current.encrypt(message) - } - - fn decrypt(&self, ciphertext: &[u8]) -> Option> { - let state = self.maybe_roll(TimeBase::now().ok()?)?; - - // Decrypt with the current key; if that fails, try with the previous. - state - .current - .decrypt(ciphertext) - .or_else(|| { - state - .previous - .as_ref() - .and_then(|previous| previous.decrypt(ciphertext)) - }) - } -} - -/// A concrete, safe ticket creation mechanism. -pub struct Ticketer {} - -fn generate_inner() -> Result, rand::GetRandomFailed> { - Ok(Box::new(AeadTicketer::new()?)) -} - -impl Ticketer { - /// Make the recommended Ticketer. This produces tickets - /// with a 12 hour life and randomly generated keys. - /// - /// The encryption mechanism used in Chacha20Poly1305. - pub fn new() -> Result, Error> { - Ok(Arc::new(TicketSwitcher::new(6 * 60 * 60, generate_inner)?)) - } -} - -#[test] -fn basic_pairwise_test() { - let t = Ticketer::new().unwrap(); - assert!(t.enabled()); - let cipher = t.encrypt(b"hello world").unwrap(); - let plain = t.decrypt(&cipher).unwrap(); - assert_eq!(plain, b"hello world"); -} - -#[test] -fn ticketswitcher_switching_test() { - let t = Arc::new(TicketSwitcher::new(1, generate_inner).unwrap()); - let now = TimeBase::now().unwrap(); - let cipher1 = t.encrypt(b"ticket 1").unwrap(); - assert_eq!(t.decrypt(&cipher1).unwrap(), b"ticket 1"); - { - // Trigger new ticketer - t.maybe_roll(TimeBase(now.0 + std::time::Duration::from_secs(10))); - } - let cipher2 = t.encrypt(b"ticket 2").unwrap(); - assert_eq!(t.decrypt(&cipher1).unwrap(), b"ticket 1"); - assert_eq!(t.decrypt(&cipher2).unwrap(), b"ticket 2"); - { - // Trigger new ticketer - t.maybe_roll(TimeBase(now.0 + std::time::Duration::from_secs(20))); - } - let cipher3 = t.encrypt(b"ticket 3").unwrap(); - assert!(t.decrypt(&cipher1).is_none()); - assert_eq!(t.decrypt(&cipher2).unwrap(), b"ticket 2"); - assert_eq!(t.decrypt(&cipher3).unwrap(), b"ticket 3"); -} - -#[cfg(test)] -fn fail_generator() -> Result, rand::GetRandomFailed> { - Err(rand::GetRandomFailed) -} - -#[test] -fn ticketswitcher_recover_test() { - let mut t = TicketSwitcher::new(1, generate_inner).unwrap(); - let now = TimeBase::now().unwrap(); - let cipher1 = t.encrypt(b"ticket 1").unwrap(); - assert_eq!(t.decrypt(&cipher1).unwrap(), b"ticket 1"); - t.generator = fail_generator; - { - // Failed new ticketer - t.maybe_roll(TimeBase(now.0 + std::time::Duration::from_secs(10))); - } - t.generator = generate_inner; - let cipher2 = t.encrypt(b"ticket 2").unwrap(); - assert_eq!(t.decrypt(&cipher1).unwrap(), b"ticket 1"); - assert_eq!(t.decrypt(&cipher2).unwrap(), b"ticket 2"); - { - // recover - t.maybe_roll(TimeBase(now.0 + std::time::Duration::from_secs(20))); - } - let cipher3 = t.encrypt(b"ticket 3").unwrap(); - assert!(t.decrypt(&cipher1).is_none()); - assert_eq!(t.decrypt(&cipher2).unwrap(), b"ticket 2"); - assert_eq!(t.decrypt(&cipher3).unwrap(), b"ticket 3"); -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/tls12/cipher.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/tls12/cipher.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/tls12/cipher.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/tls12/cipher.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,236 +0,0 @@ -use crate::cipher::{make_nonce, Iv, MessageDecrypter, MessageEncrypter}; -use crate::enums::ProtocolVersion; -use crate::error::Error; -use crate::msgs::base::Payload; -use crate::msgs::codec; -use crate::msgs::enums::ContentType; -use crate::msgs::fragmenter::MAX_FRAGMENT_LEN; -use crate::msgs::message::{BorrowedPlainMessage, OpaqueMessage, PlainMessage}; - -use ring::aead; - -const TLS12_AAD_SIZE: usize = 8 + 1 + 2 + 2; - -fn make_tls12_aad( - seq: u64, - typ: ContentType, - vers: ProtocolVersion, - len: usize, -) -> ring::aead::Aad<[u8; TLS12_AAD_SIZE]> { - let mut out = [0; TLS12_AAD_SIZE]; - codec::put_u64(seq, &mut out[0..]); - out[8] = typ.get_u8(); - codec::put_u16(vers.get_u16(), &mut out[9..]); - codec::put_u16(len as u16, &mut out[11..]); - ring::aead::Aad::from(out) -} - -pub(crate) struct AesGcm; - -impl Tls12AeadAlgorithm for AesGcm { - fn decrypter(&self, dec_key: aead::LessSafeKey, dec_iv: &[u8]) -> Box { - let mut ret = GcmMessageDecrypter { - dec_key, - dec_salt: [0u8; 4], - }; - - debug_assert_eq!(dec_iv.len(), 4); - ret.dec_salt.copy_from_slice(dec_iv); - Box::new(ret) - } - - fn encrypter( - &self, - enc_key: aead::LessSafeKey, - write_iv: &[u8], - explicit: &[u8], - ) -> Box { - debug_assert_eq!(write_iv.len(), 4); - debug_assert_eq!(explicit.len(), 8); - - // The GCM nonce is constructed from a 32-bit 'salt' derived - // from the master-secret, and a 64-bit explicit part, - // with no specified construction. Thanks for that. - // - // We use the same construction as TLS1.3/ChaCha20Poly1305: - // a starting point extracted from the key block, xored with - // the sequence number. - let mut iv = Iv(Default::default()); - iv.0[..4].copy_from_slice(write_iv); - iv.0[4..].copy_from_slice(explicit); - - Box::new(GcmMessageEncrypter { enc_key, iv }) - } -} - -pub(crate) struct ChaCha20Poly1305; - -impl Tls12AeadAlgorithm for ChaCha20Poly1305 { - fn decrypter(&self, dec_key: aead::LessSafeKey, iv: &[u8]) -> Box { - Box::new(ChaCha20Poly1305MessageDecrypter { - dec_key, - dec_offset: Iv::copy(iv), - }) - } - - fn encrypter( - &self, - enc_key: aead::LessSafeKey, - enc_iv: &[u8], - _: &[u8], - ) -> Box { - Box::new(ChaCha20Poly1305MessageEncrypter { - enc_key, - enc_offset: Iv::copy(enc_iv), - }) - } -} - -pub(crate) trait Tls12AeadAlgorithm: Send + Sync + 'static { - fn decrypter(&self, key: aead::LessSafeKey, iv: &[u8]) -> Box; - fn encrypter( - &self, - key: aead::LessSafeKey, - iv: &[u8], - extra: &[u8], - ) -> Box; -} - -/// A `MessageEncrypter` for AES-GCM AEAD ciphersuites. TLS 1.2 only. -struct GcmMessageEncrypter { - enc_key: aead::LessSafeKey, - iv: Iv, -} - -/// A `MessageDecrypter` for AES-GCM AEAD ciphersuites. TLS1.2 only. -struct GcmMessageDecrypter { - dec_key: aead::LessSafeKey, - dec_salt: [u8; 4], -} - -const GCM_EXPLICIT_NONCE_LEN: usize = 8; -const GCM_OVERHEAD: usize = GCM_EXPLICIT_NONCE_LEN + 16; - -impl MessageDecrypter for GcmMessageDecrypter { - fn decrypt(&self, mut msg: OpaqueMessage, seq: u64) -> Result { - let payload = &mut msg.payload.0; - if payload.len() < GCM_OVERHEAD { - return Err(Error::DecryptError); - } - - let nonce = { - let mut nonce = [0u8; 12]; - nonce[..4].copy_from_slice(&self.dec_salt); - nonce[4..].copy_from_slice(&payload[..8]); - aead::Nonce::assume_unique_for_key(nonce) - }; - - let aad = make_tls12_aad(seq, msg.typ, msg.version, payload.len() - GCM_OVERHEAD); - - let plain_len = self - .dec_key - .open_within(nonce, aad, payload, GCM_EXPLICIT_NONCE_LEN..) - .map_err(|_| Error::DecryptError)? - .len(); - - if plain_len > MAX_FRAGMENT_LEN { - return Err(Error::PeerSentOversizedRecord); - } - - payload.truncate(plain_len); - Ok(msg.into_plain_message()) - } -} - -impl MessageEncrypter for GcmMessageEncrypter { - fn encrypt(&self, msg: BorrowedPlainMessage, seq: u64) -> Result { - let nonce = make_nonce(&self.iv, seq); - let aad = make_tls12_aad(seq, msg.typ, msg.version, msg.payload.len()); - - let total_len = msg.payload.len() + self.enc_key.algorithm().tag_len(); - let mut payload = Vec::with_capacity(GCM_EXPLICIT_NONCE_LEN + total_len); - payload.extend_from_slice(&nonce.as_ref()[4..]); - payload.extend_from_slice(msg.payload); - - self.enc_key - .seal_in_place_separate_tag(nonce, aad, &mut payload[GCM_EXPLICIT_NONCE_LEN..]) - .map(|tag| payload.extend(tag.as_ref())) - .map_err(|_| Error::General("encrypt failed".to_string()))?; - - Ok(OpaqueMessage { - typ: msg.typ, - version: msg.version, - payload: Payload::new(payload), - }) - } -} - -/// The RFC7905/RFC7539 ChaCha20Poly1305 construction. -/// This implementation does the AAD construction required in TLS1.2. -/// TLS1.3 uses `TLS13MessageEncrypter`. -struct ChaCha20Poly1305MessageEncrypter { - enc_key: aead::LessSafeKey, - enc_offset: Iv, -} - -/// The RFC7905/RFC7539 ChaCha20Poly1305 construction. -/// This implementation does the AAD construction required in TLS1.2. -/// TLS1.3 uses `TLS13MessageDecrypter`. -struct ChaCha20Poly1305MessageDecrypter { - dec_key: aead::LessSafeKey, - dec_offset: Iv, -} - -const CHACHAPOLY1305_OVERHEAD: usize = 16; - -impl MessageDecrypter for ChaCha20Poly1305MessageDecrypter { - fn decrypt(&self, mut msg: OpaqueMessage, seq: u64) -> Result { - let payload = &mut msg.payload.0; - - if payload.len() < CHACHAPOLY1305_OVERHEAD { - return Err(Error::DecryptError); - } - - let nonce = make_nonce(&self.dec_offset, seq); - let aad = make_tls12_aad( - seq, - msg.typ, - msg.version, - payload.len() - CHACHAPOLY1305_OVERHEAD, - ); - - let plain_len = self - .dec_key - .open_in_place(nonce, aad, payload) - .map_err(|_| Error::DecryptError)? - .len(); - - if plain_len > MAX_FRAGMENT_LEN { - return Err(Error::PeerSentOversizedRecord); - } - - payload.truncate(plain_len); - Ok(msg.into_plain_message()) - } -} - -impl MessageEncrypter for ChaCha20Poly1305MessageEncrypter { - fn encrypt(&self, msg: BorrowedPlainMessage, seq: u64) -> Result { - let nonce = make_nonce(&self.enc_offset, seq); - let aad = make_tls12_aad(seq, msg.typ, msg.version, msg.payload.len()); - - let total_len = msg.payload.len() + self.enc_key.algorithm().tag_len(); - let mut buf = Vec::with_capacity(total_len); - buf.extend_from_slice(msg.payload); - - self.enc_key - .seal_in_place_append_tag(nonce, aad, &mut buf) - .map_err(|_| Error::General("encrypt failed".to_string()))?; - - Ok(OpaqueMessage { - typ: msg.typ, - version: msg.version, - payload: Payload::new(buf), - }) - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/tls12/mod.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/tls12/mod.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/tls12/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/tls12/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,537 +0,0 @@ -use crate::cipher::{MessageDecrypter, MessageEncrypter}; -use crate::conn::{CommonState, ConnectionRandoms, Side}; -use crate::enums::{CipherSuite, SignatureScheme}; -use crate::kx; -use crate::msgs::codec::{Codec, Reader}; -use crate::msgs::enums::{AlertDescription, ContentType}; -use crate::msgs::handshake::KeyExchangeAlgorithm; -use crate::suites::{BulkAlgorithm, CipherSuiteCommon, SupportedCipherSuite}; -#[cfg(feature = "secret_extraction")] -use crate::suites::{ConnectionTrafficSecrets, PartiallyExtractedSecrets}; -use crate::Error; - -use ring::aead; -use ring::digest::Digest; - -use std::fmt; - -mod cipher; -pub(crate) use cipher::{AesGcm, ChaCha20Poly1305, Tls12AeadAlgorithm}; - -mod prf; - -/// The TLS1.2 ciphersuite TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256. -pub static TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256: SupportedCipherSuite = - SupportedCipherSuite::Tls12(&Tls12CipherSuite { - common: CipherSuiteCommon { - suite: CipherSuite::TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, - bulk: BulkAlgorithm::Chacha20Poly1305, - aead_algorithm: &ring::aead::CHACHA20_POLY1305, - }, - kx: KeyExchangeAlgorithm::ECDHE, - sign: TLS12_ECDSA_SCHEMES, - fixed_iv_len: 12, - explicit_nonce_len: 0, - aead_alg: &ChaCha20Poly1305, - hmac_algorithm: ring::hmac::HMAC_SHA256, - }); - -/// The TLS1.2 ciphersuite TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 -pub static TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256: SupportedCipherSuite = - SupportedCipherSuite::Tls12(&Tls12CipherSuite { - common: CipherSuiteCommon { - suite: CipherSuite::TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, - bulk: BulkAlgorithm::Chacha20Poly1305, - aead_algorithm: &ring::aead::CHACHA20_POLY1305, - }, - kx: KeyExchangeAlgorithm::ECDHE, - sign: TLS12_RSA_SCHEMES, - fixed_iv_len: 12, - explicit_nonce_len: 0, - aead_alg: &ChaCha20Poly1305, - hmac_algorithm: ring::hmac::HMAC_SHA256, - }); - -/// The TLS1.2 ciphersuite TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 -pub static TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: SupportedCipherSuite = - SupportedCipherSuite::Tls12(&Tls12CipherSuite { - common: CipherSuiteCommon { - suite: CipherSuite::TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, - bulk: BulkAlgorithm::Aes128Gcm, - aead_algorithm: &ring::aead::AES_128_GCM, - }, - kx: KeyExchangeAlgorithm::ECDHE, - sign: TLS12_RSA_SCHEMES, - fixed_iv_len: 4, - explicit_nonce_len: 8, - aead_alg: &AesGcm, - hmac_algorithm: ring::hmac::HMAC_SHA256, - }); - -/// The TLS1.2 ciphersuite TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 -pub static TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384: SupportedCipherSuite = - SupportedCipherSuite::Tls12(&Tls12CipherSuite { - common: CipherSuiteCommon { - suite: CipherSuite::TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, - bulk: BulkAlgorithm::Aes256Gcm, - aead_algorithm: &ring::aead::AES_256_GCM, - }, - kx: KeyExchangeAlgorithm::ECDHE, - sign: TLS12_RSA_SCHEMES, - fixed_iv_len: 4, - explicit_nonce_len: 8, - aead_alg: &AesGcm, - hmac_algorithm: ring::hmac::HMAC_SHA384, - }); - -/// The TLS1.2 ciphersuite TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 -pub static TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: SupportedCipherSuite = - SupportedCipherSuite::Tls12(&Tls12CipherSuite { - common: CipherSuiteCommon { - suite: CipherSuite::TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, - bulk: BulkAlgorithm::Aes128Gcm, - aead_algorithm: &ring::aead::AES_128_GCM, - }, - kx: KeyExchangeAlgorithm::ECDHE, - sign: TLS12_ECDSA_SCHEMES, - fixed_iv_len: 4, - explicit_nonce_len: 8, - aead_alg: &AesGcm, - hmac_algorithm: ring::hmac::HMAC_SHA256, - }); - -/// The TLS1.2 ciphersuite TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 -pub static TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384: SupportedCipherSuite = - SupportedCipherSuite::Tls12(&Tls12CipherSuite { - common: CipherSuiteCommon { - suite: CipherSuite::TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, - bulk: BulkAlgorithm::Aes256Gcm, - aead_algorithm: &ring::aead::AES_256_GCM, - }, - kx: KeyExchangeAlgorithm::ECDHE, - sign: TLS12_ECDSA_SCHEMES, - fixed_iv_len: 4, - explicit_nonce_len: 8, - aead_alg: &AesGcm, - hmac_algorithm: ring::hmac::HMAC_SHA384, - }); - -static TLS12_ECDSA_SCHEMES: &[SignatureScheme] = &[ - SignatureScheme::ED25519, - SignatureScheme::ECDSA_NISTP521_SHA512, - SignatureScheme::ECDSA_NISTP384_SHA384, - SignatureScheme::ECDSA_NISTP256_SHA256, -]; - -static TLS12_RSA_SCHEMES: &[SignatureScheme] = &[ - SignatureScheme::RSA_PSS_SHA512, - SignatureScheme::RSA_PSS_SHA384, - SignatureScheme::RSA_PSS_SHA256, - SignatureScheme::RSA_PKCS1_SHA512, - SignatureScheme::RSA_PKCS1_SHA384, - SignatureScheme::RSA_PKCS1_SHA256, -]; - -/// A TLS 1.2 cipher suite supported by rustls. -pub struct Tls12CipherSuite { - /// Common cipher suite fields. - pub common: CipherSuiteCommon, - pub(crate) hmac_algorithm: ring::hmac::Algorithm, - /// How to exchange/agree keys. - pub kx: KeyExchangeAlgorithm, - - /// How to sign messages for authentication. - pub sign: &'static [SignatureScheme], - - /// How long the fixed part of the 'IV' is. - /// - /// This isn't usually an IV, but we continue the - /// terminology misuse to match the standard. - pub fixed_iv_len: usize, - - /// This is a non-standard extension which extends the - /// key block to provide an initial explicit nonce offset, - /// in a deterministic and safe way. GCM needs this, - /// chacha20poly1305 works this way by design. - pub explicit_nonce_len: usize, - - pub(crate) aead_alg: &'static dyn Tls12AeadAlgorithm, -} - -impl Tls12CipherSuite { - /// Resolve the set of supported `SignatureScheme`s from the - /// offered `SupportedSignatureSchemes`. If we return an empty - /// set, the handshake terminates. - pub fn resolve_sig_schemes(&self, offered: &[SignatureScheme]) -> Vec { - self.sign - .iter() - .filter(|pref| offered.contains(pref)) - .cloned() - .collect() - } - - /// Which hash function to use with this suite. - pub fn hash_algorithm(&self) -> &'static ring::digest::Algorithm { - self.hmac_algorithm.digest_algorithm() - } -} - -impl From<&'static Tls12CipherSuite> for SupportedCipherSuite { - fn from(s: &'static Tls12CipherSuite) -> Self { - Self::Tls12(s) - } -} - -impl PartialEq for Tls12CipherSuite { - fn eq(&self, other: &Self) -> bool { - self.common.suite == other.common.suite - } -} - -impl fmt::Debug for Tls12CipherSuite { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("Tls12CipherSuite") - .field("suite", &self.common.suite) - .field("bulk", &self.common.bulk) - .finish() - } -} - -/// TLS1.2 per-connection keying material -pub(crate) struct ConnectionSecrets { - pub(crate) randoms: ConnectionRandoms, - suite: &'static Tls12CipherSuite, - pub(crate) master_secret: [u8; 48], -} - -impl ConnectionSecrets { - pub(crate) fn from_key_exchange( - kx: kx::KeyExchange, - peer_pub_key: &[u8], - ems_seed: Option, - randoms: ConnectionRandoms, - suite: &'static Tls12CipherSuite, - ) -> Result { - let mut ret = Self { - randoms, - suite, - master_secret: [0u8; 48], - }; - - let (label, seed) = match ems_seed { - Some(seed) => ("extended master secret", Seed::Ems(seed)), - None => ( - "master secret", - Seed::Randoms(join_randoms(&ret.randoms.client, &ret.randoms.server)), - ), - }; - - kx.complete(peer_pub_key, |secret| { - prf::prf( - &mut ret.master_secret, - suite.hmac_algorithm, - secret, - label.as_bytes(), - seed.as_ref(), - ); - Ok(()) - })?; - - Ok(ret) - } - - pub(crate) fn new_resume( - randoms: ConnectionRandoms, - suite: &'static Tls12CipherSuite, - master_secret: &[u8], - ) -> Self { - let mut ret = Self { - randoms, - suite, - master_secret: [0u8; 48], - }; - ret.master_secret - .copy_from_slice(master_secret); - ret - } - - /// Make a `MessageCipherPair` based on the given supported ciphersuite `scs`, - /// and the session's `secrets`. - pub(crate) fn make_cipher_pair(&self, side: Side) -> MessageCipherPair { - fn split_key<'a>( - key_block: &'a [u8], - alg: &'static aead::Algorithm, - ) -> (aead::LessSafeKey, &'a [u8]) { - // Might panic if the key block is too small. - let (key, rest) = key_block.split_at(alg.key_len()); - // Won't panic because its only prerequisite is that `key` is `alg.key_len()` bytes long. - let key = aead::UnboundKey::new(alg, key).unwrap(); - (aead::LessSafeKey::new(key), rest) - } - - // Make a key block, and chop it up. - // nb. we don't implement any ciphersuites with nonzero mac_key_len. - let key_block = self.make_key_block(); - - let suite = self.suite; - let scs = &suite.common; - - let (client_write_key, key_block) = split_key(&key_block, scs.aead_algorithm); - let (server_write_key, key_block) = split_key(key_block, scs.aead_algorithm); - let (client_write_iv, key_block) = key_block.split_at(suite.fixed_iv_len); - let (server_write_iv, extra) = key_block.split_at(suite.fixed_iv_len); - - let (write_key, write_iv, read_key, read_iv) = match side { - Side::Client => ( - client_write_key, - client_write_iv, - server_write_key, - server_write_iv, - ), - Side::Server => ( - server_write_key, - server_write_iv, - client_write_key, - client_write_iv, - ), - }; - - ( - suite - .aead_alg - .decrypter(read_key, read_iv), - suite - .aead_alg - .encrypter(write_key, write_iv, extra), - ) - } - - fn make_key_block(&self) -> Vec { - let suite = &self.suite; - let common = &self.suite.common; - - let len = - (common.aead_algorithm.key_len() + suite.fixed_iv_len) * 2 + suite.explicit_nonce_len; - - let mut out = Vec::new(); - out.resize(len, 0u8); - - // NOTE: opposite order to above for no good reason. - // Don't design security protocols on drugs, kids. - let randoms = join_randoms(&self.randoms.server, &self.randoms.client); - prf::prf( - &mut out, - self.suite.hmac_algorithm, - &self.master_secret, - b"key expansion", - &randoms, - ); - - out - } - - pub(crate) fn suite(&self) -> &'static Tls12CipherSuite { - self.suite - } - - pub(crate) fn get_master_secret(&self) -> Vec { - let mut ret = Vec::new(); - ret.extend_from_slice(&self.master_secret); - ret - } - - fn make_verify_data(&self, handshake_hash: &Digest, label: &[u8]) -> Vec { - let mut out = Vec::new(); - out.resize(12, 0u8); - - prf::prf( - &mut out, - self.suite.hmac_algorithm, - &self.master_secret, - label, - handshake_hash.as_ref(), - ); - out - } - - pub(crate) fn client_verify_data(&self, handshake_hash: &Digest) -> Vec { - self.make_verify_data(handshake_hash, b"client finished") - } - - pub(crate) fn server_verify_data(&self, handshake_hash: &Digest) -> Vec { - self.make_verify_data(handshake_hash, b"server finished") - } - - pub(crate) fn export_keying_material( - &self, - output: &mut [u8], - label: &[u8], - context: Option<&[u8]>, - ) { - let mut randoms = Vec::new(); - randoms.extend_from_slice(&self.randoms.client); - randoms.extend_from_slice(&self.randoms.server); - if let Some(context) = context { - assert!(context.len() <= 0xffff); - (context.len() as u16).encode(&mut randoms); - randoms.extend_from_slice(context); - } - - prf::prf( - output, - self.suite.hmac_algorithm, - &self.master_secret, - label, - &randoms, - ) - } - - #[cfg(feature = "secret_extraction")] - pub(crate) fn extract_secrets(&self, side: Side) -> Result { - // Make a key block, and chop it up - let key_block = self.make_key_block(); - - let suite = self.suite; - let algo = suite.common.aead_algorithm; - - let (client_key, key_block) = key_block.split_at(algo.key_len()); - let (server_key, key_block) = key_block.split_at(algo.key_len()); - let (client_iv, key_block) = key_block.split_at(suite.fixed_iv_len); - let (server_iv, extra) = key_block.split_at(suite.fixed_iv_len); - - // A key/IV pair (fixed IV len is 4 for GCM, 12 for Chacha) - struct Pair<'a> { - key: &'a [u8], - iv: &'a [u8], - } - - let client_pair = Pair { - key: client_key, - iv: client_iv, - }; - let server_pair = Pair { - key: server_key, - iv: server_iv, - }; - - let (client_secrets, server_secrets) = if algo == &ring::aead::AES_128_GCM { - let extract = |pair: Pair| -> ConnectionTrafficSecrets { - let mut key = [0u8; 16]; - key.copy_from_slice(pair.key); - - let mut salt = [0u8; 4]; - salt.copy_from_slice(pair.iv); - - let mut iv = [0u8; 8]; - iv.copy_from_slice(&extra[..8]); - - ConnectionTrafficSecrets::Aes128Gcm { key, salt, iv } - }; - - (extract(client_pair), extract(server_pair)) - } else if algo == &ring::aead::AES_256_GCM { - let extract = |pair: Pair| -> ConnectionTrafficSecrets { - let mut key = [0u8; 32]; - key.copy_from_slice(pair.key); - - let mut salt = [0u8; 4]; - salt.copy_from_slice(pair.iv); - - let mut iv = [0u8; 8]; - iv.copy_from_slice(&extra[..8]); - - ConnectionTrafficSecrets::Aes256Gcm { key, salt, iv } - }; - - (extract(client_pair), extract(server_pair)) - } else if algo == &ring::aead::CHACHA20_POLY1305 { - let extract = |pair: Pair| -> ConnectionTrafficSecrets { - let mut key = [0u8; 32]; - key.copy_from_slice(pair.key); - - let mut iv = [0u8; 12]; - iv.copy_from_slice(pair.iv); - - ConnectionTrafficSecrets::Chacha20Poly1305 { key, iv } - }; - - (extract(client_pair), extract(server_pair)) - } else { - return Err(Error::General(format!( - "exporting secrets for {:?}: unimplemented", - algo - ))); - }; - - let (tx, rx) = match side { - Side::Client => (client_secrets, server_secrets), - Side::Server => (server_secrets, client_secrets), - }; - Ok(PartiallyExtractedSecrets { tx, rx }) - } -} - -enum Seed { - Ems(Digest), - Randoms([u8; 64]), -} - -impl AsRef<[u8]> for Seed { - fn as_ref(&self) -> &[u8] { - match self { - Self::Ems(seed) => seed.as_ref(), - Self::Randoms(randoms) => randoms.as_ref(), - } - } -} - -fn join_randoms(first: &[u8; 32], second: &[u8; 32]) -> [u8; 64] { - let mut randoms = [0u8; 64]; - randoms[..32].copy_from_slice(first); - randoms[32..].copy_from_slice(second); - randoms -} - -type MessageCipherPair = (Box, Box); - -pub(crate) fn decode_ecdh_params( - common: &mut CommonState, - kx_params: &[u8], -) -> Result { - decode_ecdh_params_::(kx_params).ok_or_else(|| { - common.send_fatal_alert(AlertDescription::DecodeError); - Error::CorruptMessagePayload(ContentType::Handshake) - }) -} - -fn decode_ecdh_params_(kx_params: &[u8]) -> Option { - let mut rd = Reader::init(kx_params); - let ecdh_params = T::read(&mut rd)?; - match rd.any_left() { - false => Some(ecdh_params), - true => None, - } -} - -pub(crate) const DOWNGRADE_SENTINEL: [u8; 8] = [0x44, 0x4f, 0x57, 0x4e, 0x47, 0x52, 0x44, 0x01]; - -#[cfg(test)] -mod tests { - use super::*; - use crate::msgs::handshake::{ClientECDHParams, ServerECDHParams}; - - #[test] - fn server_ecdhe_remaining_bytes() { - let key = kx::KeyExchange::start(&kx::X25519).unwrap(); - let server_params = ServerECDHParams::new(key.group(), key.pubkey.as_ref()); - let mut server_buf = Vec::new(); - server_params.encode(&mut server_buf); - server_buf.push(34); - assert!(decode_ecdh_params_::(&server_buf).is_none()); - } - - #[test] - fn client_ecdhe_invalid() { - assert!(decode_ecdh_params_::(&[34]).is_none()); - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/tls12/prf.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/tls12/prf.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/tls12/prf.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/tls12/prf.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -use ring::hmac; - -fn concat_sign(key: &hmac::Key, a: &[u8], b: &[u8]) -> hmac::Tag { - let mut ctx = hmac::Context::with_key(key); - ctx.update(a); - ctx.update(b); - ctx.sign() -} - -fn p(out: &mut [u8], alg: hmac::Algorithm, secret: &[u8], seed: &[u8]) { - let hmac_key = hmac::Key::new(alg, secret); - - // A(1) - let mut current_a = hmac::sign(&hmac_key, seed); - let chunk_size = alg.digest_algorithm().output_len; - for chunk in out.chunks_mut(chunk_size) { - // P_hash[i] = HMAC_hash(secret, A(i) + seed) - let p_term = concat_sign(&hmac_key, current_a.as_ref(), seed); - chunk.copy_from_slice(&p_term.as_ref()[..chunk.len()]); - - // A(i+1) = HMAC_hash(secret, A(i)) - current_a = hmac::sign(&hmac_key, current_a.as_ref()); - } -} - -fn concat(a: &[u8], b: &[u8]) -> Vec { - let mut ret = Vec::new(); - ret.extend_from_slice(a); - ret.extend_from_slice(b); - ret -} - -pub(crate) fn prf(out: &mut [u8], alg: hmac::Algorithm, secret: &[u8], label: &[u8], seed: &[u8]) { - let joined_seed = concat(label, seed); - p(out, alg, secret, &joined_seed); -} - -#[cfg(test)] -mod tests { - use ring::hmac::{HMAC_SHA256, HMAC_SHA512}; - - #[test] - fn check_sha256() { - let secret = b"\x9b\xbe\x43\x6b\xa9\x40\xf0\x17\xb1\x76\x52\x84\x9a\x71\xdb\x35"; - let seed = b"\xa0\xba\x9f\x93\x6c\xda\x31\x18\x27\xa6\xf7\x96\xff\xd5\x19\x8c"; - let label = b"test label"; - let expect = include_bytes!("../testdata/prf-result.1.bin"); - let mut output = [0u8; 100]; - - super::prf(&mut output, HMAC_SHA256, secret, label, seed); - assert_eq!(expect.len(), output.len()); - assert_eq!(expect.to_vec(), output.to_vec()); - } - - #[test] - fn check_sha512() { - let secret = b"\xb0\x32\x35\x23\xc1\x85\x35\x99\x58\x4d\x88\x56\x8b\xbb\x05\xeb"; - let seed = b"\xd4\x64\x0e\x12\xe4\xbc\xdb\xfb\x43\x7f\x03\xe6\xae\x41\x8e\xe5"; - let label = b"test label"; - let expect = include_bytes!("../testdata/prf-result.2.bin"); - let mut output = [0u8; 196]; - - super::prf(&mut output, HMAC_SHA512, secret, label, seed); - assert_eq!(expect.len(), output.len()); - assert_eq!(expect.to_vec(), output.to_vec()); - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/tls13/key_schedule.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/tls13/key_schedule.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/tls13/key_schedule.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/tls13/key_schedule.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,800 +0,0 @@ -use crate::cipher::{Iv, IvLen}; -use crate::error::Error; -use crate::msgs::base::PayloadU8; -use crate::KeyLog; -#[cfg(feature = "secret_extraction")] -use crate::{ - conn::Side, - suites::{ConnectionTrafficSecrets, PartiallyExtractedSecrets}, -}; - -/// Key schedule maintenance for TLS1.3 -use ring::{ - aead, - digest::{self, Digest}, - hkdf::{self, KeyType as _}, - hmac, -}; - -/// The kinds of secret we can extract from `KeySchedule`. -#[derive(Debug, Clone, Copy, PartialEq)] -enum SecretKind { - ResumptionPskBinderKey, - ClientEarlyTrafficSecret, - ClientHandshakeTrafficSecret, - ServerHandshakeTrafficSecret, - ClientApplicationTrafficSecret, - ServerApplicationTrafficSecret, - ExporterMasterSecret, - ResumptionMasterSecret, - DerivedSecret, -} - -impl SecretKind { - fn to_bytes(self) -> &'static [u8] { - use self::SecretKind::*; - match self { - ResumptionPskBinderKey => b"res binder", - ClientEarlyTrafficSecret => b"c e traffic", - ClientHandshakeTrafficSecret => b"c hs traffic", - ServerHandshakeTrafficSecret => b"s hs traffic", - ClientApplicationTrafficSecret => b"c ap traffic", - ServerApplicationTrafficSecret => b"s ap traffic", - ExporterMasterSecret => b"exp master", - ResumptionMasterSecret => b"res master", - DerivedSecret => b"derived", - } - } - - fn log_label(self) -> Option<&'static str> { - use self::SecretKind::*; - Some(match self { - ClientEarlyTrafficSecret => "CLIENT_EARLY_TRAFFIC_SECRET", - ClientHandshakeTrafficSecret => "CLIENT_HANDSHAKE_TRAFFIC_SECRET", - ServerHandshakeTrafficSecret => "SERVER_HANDSHAKE_TRAFFIC_SECRET", - ClientApplicationTrafficSecret => "CLIENT_TRAFFIC_SECRET_0", - ServerApplicationTrafficSecret => "SERVER_TRAFFIC_SECRET_0", - ExporterMasterSecret => "EXPORTER_SECRET", - _ => { - return None; - } - }) - } -} - -/// This is the TLS1.3 key schedule. It stores the current secret and -/// the type of hash. This isn't used directly; but only through the -/// typestates. -struct KeySchedule { - current: hkdf::Prk, - algorithm: ring::hkdf::Algorithm, -} - -// We express the state of a contained KeySchedule using these -// typestates. This means we can write code that cannot accidentally -// (e.g.) encrypt application data using a KeySchedule solely constructed -// with an empty or trivial secret, or extract the wrong kind of secrets -// at a given point. - -/// KeySchedule for early data stage. -pub(crate) struct KeyScheduleEarly { - ks: KeySchedule, -} - -impl KeyScheduleEarly { - pub(crate) fn new(algorithm: hkdf::Algorithm, secret: &[u8]) -> Self { - Self { - ks: KeySchedule::new(algorithm, secret), - } - } - - pub(crate) fn client_early_traffic_secret( - &self, - hs_hash: &Digest, - key_log: &dyn KeyLog, - client_random: &[u8; 32], - ) -> hkdf::Prk { - self.ks.derive_logged_secret( - SecretKind::ClientEarlyTrafficSecret, - hs_hash.as_ref(), - key_log, - client_random, - ) - } - - pub(crate) fn resumption_psk_binder_key_and_sign_verify_data( - &self, - hs_hash: &Digest, - ) -> hmac::Tag { - let resumption_psk_binder_key = self - .ks - .derive_for_empty_hash(SecretKind::ResumptionPskBinderKey); - self.ks - .sign_verify_data(&resumption_psk_binder_key, hs_hash) - } -} - -/// Pre-handshake key schedule -/// -/// The inner `KeySchedule` is either constructed without any secrets based on ths HKDF algorithm -/// or is extracted from a `KeyScheduleEarly`. This can then be used to derive the `KeyScheduleHandshakeStart`. -pub(crate) struct KeySchedulePreHandshake { - ks: KeySchedule, -} - -impl KeySchedulePreHandshake { - pub(crate) fn new(algorithm: hkdf::Algorithm) -> Self { - Self { - ks: KeySchedule::new_with_empty_secret(algorithm), - } - } - - pub(crate) fn into_handshake(mut self, secret: &[u8]) -> KeyScheduleHandshakeStart { - self.ks.input_secret(secret); - KeyScheduleHandshakeStart { ks: self.ks } - } -} - -impl From for KeySchedulePreHandshake { - fn from(KeyScheduleEarly { ks }: KeyScheduleEarly) -> Self { - Self { ks } - } -} - -/// KeySchedule during handshake. -pub(crate) struct KeyScheduleHandshakeStart { - ks: KeySchedule, -} - -impl KeyScheduleHandshakeStart { - pub(crate) fn derive_handshake_secrets( - self, - hs_hash: Digest, - key_log: &dyn KeyLog, - client_random: &[u8; 32], - ) -> (KeyScheduleHandshake, hkdf::Prk, hkdf::Prk) { - // Use an empty handshake hash for the initial handshake. - let client_secret = self.ks.derive_logged_secret( - SecretKind::ClientHandshakeTrafficSecret, - hs_hash.as_ref(), - key_log, - client_random, - ); - - let server_secret = self.ks.derive_logged_secret( - SecretKind::ServerHandshakeTrafficSecret, - hs_hash.as_ref(), - key_log, - client_random, - ); - - let new = KeyScheduleHandshake { - ks: self.ks, - client_handshake_traffic_secret: client_secret.clone(), - server_handshake_traffic_secret: server_secret.clone(), - }; - - (new, client_secret, server_secret) - } -} - -pub(crate) struct KeyScheduleHandshake { - ks: KeySchedule, - client_handshake_traffic_secret: hkdf::Prk, - server_handshake_traffic_secret: hkdf::Prk, -} - -impl KeyScheduleHandshake { - pub(crate) fn sign_server_finish(&self, hs_hash: &Digest) -> hmac::Tag { - self.ks - .sign_finish(&self.server_handshake_traffic_secret, hs_hash) - } - - pub(crate) fn client_key(&self) -> &hkdf::Prk { - &self.client_handshake_traffic_secret - } - - pub(crate) fn into_traffic_with_client_finished_pending( - self, - hs_hash: Digest, - key_log: &dyn KeyLog, - client_random: &[u8; 32], - ) -> ( - KeyScheduleTrafficWithClientFinishedPending, - hkdf::Prk, - hkdf::Prk, - ) { - let traffic = KeyScheduleTraffic::new(self.ks, hs_hash, key_log, client_random); - - let client_secret = traffic - .current_client_traffic_secret - .clone(); - let server_secret = traffic - .current_server_traffic_secret - .clone(); - - let new = KeyScheduleTrafficWithClientFinishedPending { - handshake_client_traffic_secret: self.client_handshake_traffic_secret, - traffic, - }; - - (new, client_secret, server_secret) - } -} - -/// KeySchedule during traffic stage, retaining the ability to calculate the client's -/// finished verify_data. The traffic stage key schedule can be extracted from it -/// through signing the client finished hash. -pub(crate) struct KeyScheduleTrafficWithClientFinishedPending { - handshake_client_traffic_secret: hkdf::Prk, - traffic: KeyScheduleTraffic, -} - -impl KeyScheduleTrafficWithClientFinishedPending { - pub(crate) fn client_key(&self) -> &hkdf::Prk { - &self.handshake_client_traffic_secret - } - - pub(crate) fn sign_client_finish( - self, - hs_hash: &Digest, - ) -> (KeyScheduleTraffic, hmac::Tag, hkdf::Prk) { - let tag = self - .traffic - .ks - .sign_finish(&self.handshake_client_traffic_secret, hs_hash); - - let client_secret = self - .traffic - .current_client_traffic_secret - .clone(); - - (self.traffic, tag, client_secret) - } -} - -/// KeySchedule during traffic stage. All traffic & exporter keys are guaranteed -/// to be available. -pub(crate) struct KeyScheduleTraffic { - ks: KeySchedule, - current_client_traffic_secret: hkdf::Prk, - current_server_traffic_secret: hkdf::Prk, - current_exporter_secret: hkdf::Prk, -} - -impl KeyScheduleTraffic { - fn new( - mut ks: KeySchedule, - hs_hash: Digest, - key_log: &dyn KeyLog, - client_random: &[u8; 32], - ) -> Self { - ks.input_empty(); - - let current_client_traffic_secret = ks.derive_logged_secret( - SecretKind::ClientApplicationTrafficSecret, - hs_hash.as_ref(), - key_log, - client_random, - ); - - let current_server_traffic_secret = ks.derive_logged_secret( - SecretKind::ServerApplicationTrafficSecret, - hs_hash.as_ref(), - key_log, - client_random, - ); - - let current_exporter_secret = ks.derive_logged_secret( - SecretKind::ExporterMasterSecret, - hs_hash.as_ref(), - key_log, - client_random, - ); - - Self { - ks, - current_client_traffic_secret, - current_server_traffic_secret, - current_exporter_secret, - } - } - - pub(crate) fn next_server_application_traffic_secret(&mut self) -> hkdf::Prk { - let secret = self - .ks - .derive_next(&self.current_server_traffic_secret); - self.current_server_traffic_secret = secret.clone(); - secret - } - - pub(crate) fn next_client_application_traffic_secret(&mut self) -> hkdf::Prk { - let secret = self - .ks - .derive_next(&self.current_client_traffic_secret); - self.current_client_traffic_secret = secret.clone(); - secret - } - - pub(crate) fn resumption_master_secret_and_derive_ticket_psk( - &self, - hs_hash: &Digest, - nonce: &[u8], - ) -> Vec { - let resumption_master_secret = self.ks.derive( - self.ks.algorithm(), - SecretKind::ResumptionMasterSecret, - hs_hash.as_ref(), - ); - self.ks - .derive_ticket_psk(&resumption_master_secret, nonce) - } - - pub(crate) fn export_keying_material( - &self, - out: &mut [u8], - label: &[u8], - context: Option<&[u8]>, - ) -> Result<(), Error> { - self.ks - .export_keying_material(&self.current_exporter_secret, out, label, context) - } - - #[cfg(feature = "secret_extraction")] - pub(crate) fn extract_secrets( - &self, - algo: &ring::aead::Algorithm, - side: Side, - ) -> Result { - fn expand( - secret: &hkdf::Prk, - ) -> Result<([u8; KEY_LEN], [u8; IV_LEN]), Error> { - let mut key = [0u8; KEY_LEN]; - let mut iv = [0u8; IV_LEN]; - - hkdf_expand_info(secret, PayloadU8Len(key.len()), b"key", &[], |okm| { - okm.fill(&mut key) - }) - .map_err(|_| Error::General("hkdf_expand_info failed".to_string()))?; - - hkdf_expand_info(secret, PayloadU8Len(iv.len()), b"iv", &[], |okm| { - okm.fill(&mut iv) - }) - .map_err(|_| Error::General("hkdf_expand_info failed".to_string()))?; - - Ok((key, iv)) - } - - let client_secrets; - let server_secrets; - - if algo == &ring::aead::AES_128_GCM { - let extract = |secret: &hkdf::Prk| -> Result { - let (key, iv_in) = expand::<16, 12>(secret)?; - - let mut salt = [0u8; 4]; - salt.copy_from_slice(&iv_in[..4]); - - let mut iv = [0u8; 8]; - iv.copy_from_slice(&iv_in[4..]); - - Ok(ConnectionTrafficSecrets::Aes128Gcm { key, salt, iv }) - }; - - client_secrets = extract(&self.current_client_traffic_secret)?; - server_secrets = extract(&self.current_server_traffic_secret)?; - } else if algo == &ring::aead::AES_256_GCM { - let extract = |secret: &hkdf::Prk| -> Result { - let (key, iv_in) = expand::<32, 12>(secret)?; - - let mut salt = [0u8; 4]; - salt.copy_from_slice(&iv_in[..4]); - - let mut iv = [0u8; 8]; - iv.copy_from_slice(&iv_in[4..]); - - Ok(ConnectionTrafficSecrets::Aes256Gcm { key, salt, iv }) - }; - - client_secrets = extract(&self.current_client_traffic_secret)?; - server_secrets = extract(&self.current_server_traffic_secret)?; - } else if algo == &ring::aead::CHACHA20_POLY1305 { - let extract = |secret: &hkdf::Prk| -> Result { - let (key, iv) = expand::<32, 12>(secret)?; - Ok(ConnectionTrafficSecrets::Chacha20Poly1305 { key, iv }) - }; - - client_secrets = extract(&self.current_client_traffic_secret)?; - server_secrets = extract(&self.current_server_traffic_secret)?; - } else { - return Err(Error::General(format!( - "exporting secrets for {:?}: unimplemented", - algo - ))); - } - - let (tx, rx) = match side { - crate::conn::Side::Client => (client_secrets, server_secrets), - crate::conn::Side::Server => (server_secrets, client_secrets), - }; - Ok(PartiallyExtractedSecrets { tx, rx }) - } -} - -impl KeySchedule { - fn new(algorithm: hkdf::Algorithm, secret: &[u8]) -> Self { - let zeroes = [0u8; digest::MAX_OUTPUT_LEN]; - let salt = hkdf::Salt::new(algorithm, &zeroes[..algorithm.len()]); - Self { - current: salt.extract(secret), - algorithm, - } - } - - #[inline] - fn algorithm(&self) -> hkdf::Algorithm { - self.algorithm - } - - fn new_with_empty_secret(algorithm: hkdf::Algorithm) -> Self { - let zeroes = [0u8; digest::MAX_OUTPUT_LEN]; - Self::new(algorithm, &zeroes[..algorithm.len()]) - } - - /// Input the empty secret. - fn input_empty(&mut self) { - let zeroes = [0u8; digest::MAX_OUTPUT_LEN]; - self.input_secret(&zeroes[..self.algorithm.len()]); - } - - /// Input the given secret. - fn input_secret(&mut self, secret: &[u8]) { - let salt: hkdf::Salt = self.derive_for_empty_hash(SecretKind::DerivedSecret); - self.current = salt.extract(secret); - } - - /// Derive a secret of given `kind`, using current handshake hash `hs_hash`. - fn derive(&self, key_type: L, kind: SecretKind, hs_hash: &[u8]) -> T - where - T: for<'a> From>, - L: hkdf::KeyType, - { - hkdf_expand(&self.current, key_type, kind.to_bytes(), hs_hash) - } - - fn derive_logged_secret( - &self, - kind: SecretKind, - hs_hash: &[u8], - key_log: &dyn KeyLog, - client_random: &[u8; 32], - ) -> hkdf::Prk { - let log_label = kind - .log_label() - .expect("not a loggable secret"); - if key_log.will_log(log_label) { - let secret = self - .derive::(PayloadU8Len(self.algorithm.len()), kind, hs_hash) - .into_inner(); - key_log.log(log_label, client_random, &secret); - } - self.derive(self.algorithm, kind, hs_hash) - } - - /// Derive a secret of given `kind` using the hash of the empty string - /// for the handshake hash. Useful only for - /// `SecretKind::ResumptionPSKBinderKey` and - /// `SecretKind::DerivedSecret`. - fn derive_for_empty_hash(&self, kind: SecretKind) -> T - where - T: for<'a> From>, - { - let digest_alg = self - .algorithm - .hmac_algorithm() - .digest_algorithm(); - let empty_hash = digest::digest(digest_alg, &[]); - self.derive(self.algorithm, kind, empty_hash.as_ref()) - } - - /// Sign the finished message consisting of `hs_hash` using a current - /// traffic secret. - fn sign_finish(&self, base_key: &hkdf::Prk, hs_hash: &Digest) -> hmac::Tag { - self.sign_verify_data(base_key, hs_hash) - } - - /// Sign the finished message consisting of `hs_hash` using the key material - /// `base_key`. - fn sign_verify_data(&self, base_key: &hkdf::Prk, hs_hash: &Digest) -> hmac::Tag { - let hmac_alg = self.algorithm.hmac_algorithm(); - let hmac_key = hkdf_expand(base_key, hmac_alg, b"finished", &[]); - hmac::sign(&hmac_key, hs_hash.as_ref()) - } - - /// Derive the next application traffic secret, returning it. - fn derive_next(&self, base_key: &hkdf::Prk) -> hkdf::Prk { - hkdf_expand(base_key, self.algorithm, b"traffic upd", &[]) - } - - /// Derive the PSK to use given a resumption_master_secret and - /// ticket_nonce. - fn derive_ticket_psk(&self, rms: &hkdf::Prk, nonce: &[u8]) -> Vec { - let payload: PayloadU8 = hkdf_expand( - rms, - PayloadU8Len(self.algorithm.len()), - b"resumption", - nonce, - ); - payload.into_inner() - } - - fn export_keying_material( - &self, - current_exporter_secret: &hkdf::Prk, - out: &mut [u8], - label: &[u8], - context: Option<&[u8]>, - ) -> Result<(), Error> { - let digest_alg = self - .algorithm - .hmac_algorithm() - .digest_algorithm(); - - let h_empty = digest::digest(digest_alg, &[]); - let secret: hkdf::Prk = hkdf_expand( - current_exporter_secret, - self.algorithm, - label, - h_empty.as_ref(), - ); - - let h_context = digest::digest(digest_alg, context.unwrap_or(&[])); - - // TODO: Test what happens when this fails - hkdf_expand_info( - &secret, - PayloadU8Len(out.len()), - b"exporter", - h_context.as_ref(), - |okm| okm.fill(out), - ) - .map_err(|_| Error::General("exporting too much".to_string())) - } -} - -pub(crate) fn hkdf_expand(secret: &hkdf::Prk, key_type: L, label: &[u8], context: &[u8]) -> T -where - T: for<'a> From>, - L: hkdf::KeyType, -{ - hkdf_expand_info(secret, key_type, label, context, |okm| okm.into()) -} - -fn hkdf_expand_info( - secret: &hkdf::Prk, - key_type: L, - label: &[u8], - context: &[u8], - f: F, -) -> T -where - F: for<'b> FnOnce(hkdf::Okm<'b, L>) -> T, - L: hkdf::KeyType, -{ - const LABEL_PREFIX: &[u8] = b"tls13 "; - - let output_len = u16::to_be_bytes(key_type.len() as u16); - let label_len = u8::to_be_bytes((LABEL_PREFIX.len() + label.len()) as u8); - let context_len = u8::to_be_bytes(context.len() as u8); - - let info = &[ - &output_len[..], - &label_len[..], - LABEL_PREFIX, - label, - &context_len[..], - context, - ]; - let okm = secret.expand(info, key_type).unwrap(); - - f(okm) -} - -pub(crate) struct PayloadU8Len(pub(crate) usize); -impl hkdf::KeyType for PayloadU8Len { - fn len(&self) -> usize { - self.0 - } -} - -impl From> for PayloadU8 { - fn from(okm: hkdf::Okm) -> Self { - let mut r = vec![0u8; okm.len().0]; - okm.fill(&mut r[..]).unwrap(); - Self::new(r) - } -} - -pub(crate) fn derive_traffic_key( - secret: &hkdf::Prk, - aead_algorithm: &'static aead::Algorithm, -) -> aead::UnboundKey { - hkdf_expand(secret, aead_algorithm, b"key", &[]) -} - -pub(crate) fn derive_traffic_iv(secret: &hkdf::Prk) -> Iv { - hkdf_expand(secret, IvLen, b"iv", &[]) -} - -#[cfg(test)] -mod test { - use super::{derive_traffic_iv, derive_traffic_key, KeySchedule, SecretKind}; - use crate::KeyLog; - use ring::{aead, hkdf}; - - #[test] - fn test_vectors() { - /* These test vectors generated with OpenSSL. */ - let hs_start_hash = [ - 0xec, 0x14, 0x7a, 0x06, 0xde, 0xa3, 0xc8, 0x84, 0x6c, 0x02, 0xb2, 0x23, 0x8e, 0x41, - 0xbd, 0xdc, 0x9d, 0x89, 0xf9, 0xae, 0xa1, 0x7b, 0x5e, 0xfd, 0x4d, 0x74, 0x82, 0xaf, - 0x75, 0x88, 0x1c, 0x0a, - ]; - - let hs_full_hash = [ - 0x75, 0x1a, 0x3d, 0x4a, 0x14, 0xdf, 0xab, 0xeb, 0x68, 0xe9, 0x2c, 0xa5, 0x91, 0x8e, - 0x24, 0x08, 0xb9, 0xbc, 0xb0, 0x74, 0x89, 0x82, 0xec, 0x9c, 0x32, 0x30, 0xac, 0x30, - 0xbb, 0xeb, 0x23, 0xe2, - ]; - - let ecdhe_secret = [ - 0xe7, 0xb8, 0xfe, 0xf8, 0x90, 0x3b, 0x52, 0x0c, 0xb9, 0xa1, 0x89, 0x71, 0xb6, 0x9d, - 0xd4, 0x5d, 0xca, 0x53, 0xce, 0x2f, 0x12, 0xbf, 0x3b, 0xef, 0x93, 0x15, 0xe3, 0x12, - 0x71, 0xdf, 0x4b, 0x40, - ]; - - let client_hts = [ - 0x61, 0x7b, 0x35, 0x07, 0x6b, 0x9d, 0x0e, 0x08, 0xcf, 0x73, 0x1d, 0x94, 0xa8, 0x66, - 0x14, 0x78, 0x41, 0x09, 0xef, 0x25, 0x55, 0x51, 0x92, 0x1d, 0xd4, 0x6e, 0x04, 0x01, - 0x35, 0xcf, 0x46, 0xab, - ]; - - let client_hts_key = [ - 0x62, 0xd0, 0xdd, 0x00, 0xf6, 0x96, 0x19, 0xd3, 0xb8, 0x19, 0x3a, 0xb4, 0xa0, 0x95, - 0x85, 0xa7, - ]; - - let client_hts_iv = [ - 0xff, 0xf7, 0x5d, 0xf5, 0xad, 0x35, 0xd5, 0xcb, 0x3c, 0x53, 0xf3, 0xa9, - ]; - - let server_hts = [ - 0xfc, 0xf7, 0xdf, 0xe6, 0x4f, 0xa2, 0xc0, 0x4f, 0x62, 0x35, 0x38, 0x7f, 0x43, 0x4e, - 0x01, 0x42, 0x23, 0x36, 0xd9, 0xc0, 0x39, 0xde, 0x68, 0x47, 0xa0, 0xb9, 0xdd, 0xcf, - 0x29, 0xa8, 0x87, 0x59, - ]; - - let server_hts_key = [ - 0x04, 0x67, 0xf3, 0x16, 0xa8, 0x05, 0xb8, 0xc4, 0x97, 0xee, 0x67, 0x04, 0x7b, 0xbc, - 0xbc, 0x54, - ]; - - let server_hts_iv = [ - 0xde, 0x83, 0xa7, 0x3e, 0x9d, 0x81, 0x4b, 0x04, 0xc4, 0x8b, 0x78, 0x09, - ]; - - let client_ats = [ - 0xc1, 0x4a, 0x6d, 0x79, 0x76, 0xd8, 0x10, 0x2b, 0x5a, 0x0c, 0x99, 0x51, 0x49, 0x3f, - 0xee, 0x87, 0xdc, 0xaf, 0xf8, 0x2c, 0x24, 0xca, 0xb2, 0x14, 0xe8, 0xbe, 0x71, 0xa8, - 0x20, 0x6d, 0xbd, 0xa5, - ]; - - let client_ats_key = [ - 0xcc, 0x9f, 0x5f, 0x98, 0x0b, 0x5f, 0x10, 0x30, 0x6c, 0xba, 0xd7, 0xbe, 0x98, 0xd7, - 0x57, 0x2e, - ]; - - let client_ats_iv = [ - 0xb8, 0x09, 0x29, 0xe8, 0xd0, 0x2c, 0x70, 0xf6, 0x11, 0x62, 0xed, 0x6b, - ]; - - let server_ats = [ - 0x2c, 0x90, 0x77, 0x38, 0xd3, 0xf8, 0x37, 0x02, 0xd1, 0xe4, 0x59, 0x8f, 0x48, 0x48, - 0x53, 0x1d, 0x9f, 0x93, 0x65, 0x49, 0x1b, 0x9f, 0x7f, 0x52, 0xc8, 0x22, 0x29, 0x0d, - 0x4c, 0x23, 0x21, 0x92, - ]; - - let server_ats_key = [ - 0x0c, 0xb2, 0x95, 0x62, 0xd8, 0xd8, 0x8f, 0x48, 0xb0, 0x2c, 0xbf, 0xbe, 0xd7, 0xe6, - 0x2b, 0xb3, - ]; - - let server_ats_iv = [ - 0x0d, 0xb2, 0x8f, 0x98, 0x85, 0x86, 0xa1, 0xb7, 0xe4, 0xd5, 0xc6, 0x9c, - ]; - - let hkdf = hkdf::HKDF_SHA256; - let mut ks = KeySchedule::new_with_empty_secret(hkdf); - ks.input_secret(&ecdhe_secret); - - assert_traffic_secret( - &ks, - SecretKind::ClientHandshakeTrafficSecret, - &hs_start_hash, - &client_hts, - &client_hts_key, - &client_hts_iv, - ); - - assert_traffic_secret( - &ks, - SecretKind::ServerHandshakeTrafficSecret, - &hs_start_hash, - &server_hts, - &server_hts_key, - &server_hts_iv, - ); - - ks.input_empty(); - - assert_traffic_secret( - &ks, - SecretKind::ClientApplicationTrafficSecret, - &hs_full_hash, - &client_ats, - &client_ats_key, - &client_ats_iv, - ); - - assert_traffic_secret( - &ks, - SecretKind::ServerApplicationTrafficSecret, - &hs_full_hash, - &server_ats, - &server_ats_key, - &server_ats_iv, - ); - } - - fn assert_traffic_secret( - ks: &KeySchedule, - kind: SecretKind, - hash: &[u8], - expected_traffic_secret: &[u8], - expected_key: &[u8], - expected_iv: &[u8], - ) { - struct Log<'a>(&'a [u8]); - impl KeyLog for Log<'_> { - fn log(&self, _label: &str, _client_random: &[u8], secret: &[u8]) { - assert_eq!(self.0, secret); - } - } - let log = Log(expected_traffic_secret); - let traffic_secret = ks.derive_logged_secret(kind, hash, &log, &[0; 32]); - - // Since we can't test key equality, we test the output of sealing with the key instead. - let aead_alg = &aead::AES_128_GCM; - let key = derive_traffic_key(&traffic_secret, aead_alg); - let seal_output = seal_zeroes(key); - let expected_key = aead::UnboundKey::new(aead_alg, expected_key).unwrap(); - let expected_seal_output = seal_zeroes(expected_key); - assert_eq!(seal_output, expected_seal_output); - assert!(seal_output.len() >= 48); // Sanity check. - - let iv = derive_traffic_iv(&traffic_secret); - assert_eq!(iv.value(), expected_iv); - } - - fn seal_zeroes(key: aead::UnboundKey) -> Vec { - let key = aead::LessSafeKey::new(key); - let mut seal_output = vec![0; 32]; - key.seal_in_place_append_tag( - aead::Nonce::assume_unique_for_key([0; aead::NONCE_LEN]), - aead::Aad::empty(), - &mut seal_output, - ) - .unwrap(); - seal_output - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/tls13/mod.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/tls13/mod.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/tls13/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/tls13/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,224 +0,0 @@ -use crate::cipher::{make_nonce, Iv, MessageDecrypter, MessageEncrypter}; -use crate::enums::{CipherSuite, ProtocolVersion}; -use crate::error::Error; -use crate::msgs::base::Payload; -use crate::msgs::codec::Codec; -use crate::msgs::enums::ContentType; -use crate::msgs::fragmenter::MAX_FRAGMENT_LEN; -use crate::msgs::message::{BorrowedPlainMessage, OpaqueMessage, PlainMessage}; -use crate::suites::{BulkAlgorithm, CipherSuiteCommon, SupportedCipherSuite}; - -use ring::{aead, hkdf}; - -use std::fmt; - -pub(crate) mod key_schedule; -use key_schedule::{derive_traffic_iv, derive_traffic_key}; - -/// The TLS1.3 ciphersuite TLS_CHACHA20_POLY1305_SHA256 -pub static TLS13_CHACHA20_POLY1305_SHA256: SupportedCipherSuite = - SupportedCipherSuite::Tls13(TLS13_CHACHA20_POLY1305_SHA256_INTERNAL); - -pub(crate) static TLS13_CHACHA20_POLY1305_SHA256_INTERNAL: &Tls13CipherSuite = &Tls13CipherSuite { - common: CipherSuiteCommon { - suite: CipherSuite::TLS13_CHACHA20_POLY1305_SHA256, - bulk: BulkAlgorithm::Chacha20Poly1305, - aead_algorithm: &ring::aead::CHACHA20_POLY1305, - }, - hkdf_algorithm: ring::hkdf::HKDF_SHA256, - #[cfg(feature = "quic")] - confidentiality_limit: u64::MAX, - #[cfg(feature = "quic")] - integrity_limit: 1 << 36, -}; - -/// The TLS1.3 ciphersuite TLS_AES_256_GCM_SHA384 -pub static TLS13_AES_256_GCM_SHA384: SupportedCipherSuite = - SupportedCipherSuite::Tls13(&Tls13CipherSuite { - common: CipherSuiteCommon { - suite: CipherSuite::TLS13_AES_256_GCM_SHA384, - bulk: BulkAlgorithm::Aes256Gcm, - aead_algorithm: &ring::aead::AES_256_GCM, - }, - hkdf_algorithm: ring::hkdf::HKDF_SHA384, - #[cfg(feature = "quic")] - confidentiality_limit: 1 << 23, - #[cfg(feature = "quic")] - integrity_limit: 1 << 52, - }); - -/// The TLS1.3 ciphersuite TLS_AES_128_GCM_SHA256 -pub static TLS13_AES_128_GCM_SHA256: SupportedCipherSuite = - SupportedCipherSuite::Tls13(TLS13_AES_128_GCM_SHA256_INTERNAL); - -pub(crate) static TLS13_AES_128_GCM_SHA256_INTERNAL: &Tls13CipherSuite = &Tls13CipherSuite { - common: CipherSuiteCommon { - suite: CipherSuite::TLS13_AES_128_GCM_SHA256, - bulk: BulkAlgorithm::Aes128Gcm, - aead_algorithm: &ring::aead::AES_128_GCM, - }, - hkdf_algorithm: ring::hkdf::HKDF_SHA256, - #[cfg(feature = "quic")] - confidentiality_limit: 1 << 23, - #[cfg(feature = "quic")] - integrity_limit: 1 << 52, -}; - -/// A TLS 1.3 cipher suite supported by rustls. -pub struct Tls13CipherSuite { - /// Common cipher suite fields. - pub common: CipherSuiteCommon, - pub(crate) hkdf_algorithm: ring::hkdf::Algorithm, - #[cfg(feature = "quic")] - pub(crate) confidentiality_limit: u64, - #[cfg(feature = "quic")] - pub(crate) integrity_limit: u64, -} - -impl Tls13CipherSuite { - pub(crate) fn derive_encrypter(&self, secret: &hkdf::Prk) -> Box { - let key = derive_traffic_key(secret, self.common.aead_algorithm); - let iv = derive_traffic_iv(secret); - - Box::new(Tls13MessageEncrypter { - enc_key: aead::LessSafeKey::new(key), - iv, - }) - } - - /// Derive a `MessageDecrypter` object from the concerned TLS 1.3 - /// cipher suite. - pub fn derive_decrypter(&self, secret: &hkdf::Prk) -> Box { - let key = derive_traffic_key(secret, self.common.aead_algorithm); - let iv = derive_traffic_iv(secret); - - Box::new(Tls13MessageDecrypter { - dec_key: aead::LessSafeKey::new(key), - iv, - }) - } - - /// Which hash function to use with this suite. - pub fn hash_algorithm(&self) -> &'static ring::digest::Algorithm { - self.hkdf_algorithm - .hmac_algorithm() - .digest_algorithm() - } - - /// Can a session using suite self resume from suite prev? - pub fn can_resume_from(&self, prev: &'static Self) -> Option<&'static Self> { - (prev.hash_algorithm() == self.hash_algorithm()).then(|| prev) - } -} - -impl From<&'static Tls13CipherSuite> for SupportedCipherSuite { - fn from(s: &'static Tls13CipherSuite) -> Self { - Self::Tls13(s) - } -} - -impl PartialEq for Tls13CipherSuite { - fn eq(&self, other: &Self) -> bool { - self.common.suite == other.common.suite - } -} - -impl fmt::Debug for Tls13CipherSuite { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("Tls13CipherSuite") - .field("suite", &self.common.suite) - .field("bulk", &self.common.bulk) - .finish() - } -} - -struct Tls13MessageEncrypter { - enc_key: aead::LessSafeKey, - iv: Iv, -} - -struct Tls13MessageDecrypter { - dec_key: aead::LessSafeKey, - iv: Iv, -} - -fn unpad_tls13(v: &mut Vec) -> ContentType { - loop { - match v.pop() { - Some(0) => {} - Some(content_type) => return ContentType::from(content_type), - None => return ContentType::Unknown(0), - } - } -} - -fn make_tls13_aad(len: usize) -> ring::aead::Aad<[u8; TLS13_AAD_SIZE]> { - ring::aead::Aad::from([ - 0x17, // ContentType::ApplicationData - 0x3, // ProtocolVersion (major) - 0x3, // ProtocolVersion (minor) - (len >> 8) as u8, - len as u8, - ]) -} - -// https://datatracker.ietf.org/doc/html/rfc8446#section-5.2 -const TLS13_AAD_SIZE: usize = 1 + 2 + 2; - -impl MessageEncrypter for Tls13MessageEncrypter { - fn encrypt(&self, msg: BorrowedPlainMessage, seq: u64) -> Result { - let total_len = msg.payload.len() + 1 + self.enc_key.algorithm().tag_len(); - let mut payload = Vec::with_capacity(total_len); - payload.extend_from_slice(msg.payload); - msg.typ.encode(&mut payload); - - let nonce = make_nonce(&self.iv, seq); - let aad = make_tls13_aad(total_len); - - self.enc_key - .seal_in_place_append_tag(nonce, aad, &mut payload) - .map_err(|_| Error::General("encrypt failed".to_string()))?; - - Ok(OpaqueMessage { - typ: ContentType::ApplicationData, - version: ProtocolVersion::TLSv1_2, - payload: Payload::new(payload), - }) - } -} - -impl MessageDecrypter for Tls13MessageDecrypter { - fn decrypt(&self, mut msg: OpaqueMessage, seq: u64) -> Result { - let payload = &mut msg.payload.0; - if payload.len() < self.dec_key.algorithm().tag_len() { - return Err(Error::DecryptError); - } - - let nonce = make_nonce(&self.iv, seq); - let aad = make_tls13_aad(payload.len()); - let plain_len = self - .dec_key - .open_in_place(nonce, aad, payload) - .map_err(|_| Error::DecryptError)? - .len(); - - payload.truncate(plain_len); - - if payload.len() > MAX_FRAGMENT_LEN + 1 { - return Err(Error::PeerSentOversizedRecord); - } - - msg.typ = unpad_tls13(payload); - if msg.typ == ContentType::Unknown(0) { - let msg = "peer sent bad TLSInnerPlaintext".to_string(); - return Err(Error::PeerMisbehavedError(msg)); - } - - if payload.len() > MAX_FRAGMENT_LEN { - return Err(Error::PeerSentOversizedRecord); - } - - msg.version = ProtocolVersion::TLSv1_3; - Ok(msg.into_plain_message()) - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/vecbuf.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/vecbuf.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/vecbuf.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/vecbuf.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,200 +0,0 @@ -use std::cmp; -use std::collections::VecDeque; -use std::io; -use std::io::Read; - -/// This is a byte buffer that is built from a vector -/// of byte vectors. This avoids extra copies when -/// appending a new byte vector, at the expense of -/// more complexity when reading out. -pub(crate) struct ChunkVecBuffer { - chunks: VecDeque>, - limit: Option, -} - -impl ChunkVecBuffer { - pub(crate) fn new(limit: Option) -> Self { - Self { - chunks: VecDeque::new(), - limit, - } - } - - /// Sets the upper limit on how many bytes this - /// object can store. - /// - /// Setting a lower limit than the currently stored - /// data is not an error. - /// - /// A [`None`] limit is interpreted as no limit. - pub(crate) fn set_limit(&mut self, new_limit: Option) { - self.limit = new_limit; - } - - /// If we're empty - pub(crate) fn is_empty(&self) -> bool { - self.chunks.is_empty() - } - - pub(crate) fn is_full(&self) -> bool { - self.limit - .map(|limit| self.len() > limit) - .unwrap_or_default() - } - - /// How many bytes we're storing - pub(crate) fn len(&self) -> usize { - let mut len = 0; - for ch in &self.chunks { - len += ch.len(); - } - len - } - - /// For a proposed append of `len` bytes, how many - /// bytes should we actually append to adhere to the - /// currently set `limit`? - pub(crate) fn apply_limit(&self, len: usize) -> usize { - if let Some(limit) = self.limit { - let space = limit.saturating_sub(self.len()); - cmp::min(len, space) - } else { - len - } - } - - /// Append a copy of `bytes`, perhaps a prefix if - /// we're near the limit. - pub(crate) fn append_limited_copy(&mut self, bytes: &[u8]) -> usize { - let take = self.apply_limit(bytes.len()); - self.append(bytes[..take].to_vec()); - take - } - - /// Take and append the given `bytes`. - pub(crate) fn append(&mut self, bytes: Vec) -> usize { - let len = bytes.len(); - - if !bytes.is_empty() { - self.chunks.push_back(bytes); - } - - len - } - - /// Take one of the chunks from this object. This - /// function panics if the object `is_empty`. - pub(crate) fn pop(&mut self) -> Option> { - self.chunks.pop_front() - } - - /// Read data out of this object, writing it into `buf` - /// and returning how many bytes were written there. - pub(crate) fn read(&mut self, buf: &mut [u8]) -> io::Result { - let mut offs = 0; - - while offs < buf.len() && !self.is_empty() { - let used = self.chunks[0] - .as_slice() - .read(&mut buf[offs..])?; - - self.consume(used); - offs += used; - } - - Ok(offs) - } - - #[cfg(read_buf)] - /// Read data out of this object, writing it into `cursor`. - pub(crate) fn read_buf(&mut self, mut cursor: io::BorrowedCursor<'_>) -> io::Result<()> { - while !self.is_empty() && cursor.capacity() > 0 { - let chunk = self.chunks[0].as_slice(); - let used = std::cmp::min(chunk.len(), cursor.capacity()); - cursor.append(&chunk[..used]); - self.consume(used); - } - - Ok(()) - } - - fn consume(&mut self, mut used: usize) { - while let Some(mut buf) = self.chunks.pop_front() { - if used < buf.len() { - self.chunks - .push_front(buf.split_off(used)); - break; - } else { - used -= buf.len(); - } - } - } - - /// Read data out of this object, passing it `wr` - pub(crate) fn write_to(&mut self, wr: &mut dyn io::Write) -> io::Result { - if self.is_empty() { - return Ok(0); - } - - let mut bufs = [io::IoSlice::new(&[]); 64]; - for (iov, chunk) in bufs.iter_mut().zip(self.chunks.iter()) { - *iov = io::IoSlice::new(chunk); - } - let len = cmp::min(bufs.len(), self.chunks.len()); - let used = wr.write_vectored(&bufs[..len])?; - self.consume(used); - Ok(used) - } -} - -#[cfg(test)] -mod test { - use super::ChunkVecBuffer; - - #[test] - fn short_append_copy_with_limit() { - let mut cvb = ChunkVecBuffer::new(Some(12)); - assert_eq!(cvb.append_limited_copy(b"hello"), 5); - assert_eq!(cvb.append_limited_copy(b"world"), 5); - assert_eq!(cvb.append_limited_copy(b"hello"), 2); - assert_eq!(cvb.append_limited_copy(b"world"), 0); - - let mut buf = [0u8; 12]; - assert_eq!(cvb.read(&mut buf).unwrap(), 12); - assert_eq!(buf.to_vec(), b"helloworldhe".to_vec()); - } - - #[cfg(read_buf)] - #[test] - fn read_buf() { - use std::{io::BorrowedBuf, mem::MaybeUninit}; - - { - let mut cvb = ChunkVecBuffer::new(None); - cvb.append(b"test ".to_vec()); - cvb.append(b"fixture ".to_vec()); - cvb.append(b"data".to_vec()); - - let mut buf = [MaybeUninit::::uninit(); 8]; - let mut buf: BorrowedBuf<'_> = buf.as_mut_slice().into(); - cvb.read_buf(buf.unfilled()).unwrap(); - assert_eq!(buf.filled(), b"test fix"); - buf.clear(); - cvb.read_buf(buf.unfilled()).unwrap(); - assert_eq!(buf.filled(), b"ture dat"); - buf.clear(); - cvb.read_buf(buf.unfilled()).unwrap(); - assert_eq!(buf.filled(), b"a"); - } - - { - let mut cvb = ChunkVecBuffer::new(None); - cvb.append(b"short message".to_vec()); - - let mut buf = [MaybeUninit::::uninit(); 1024]; - let mut buf: BorrowedBuf<'_> = buf.as_mut_slice().into(); - cvb.read_buf(buf.unfilled()).unwrap(); - assert_eq!(buf.filled(), b"short message"); - } - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/verifybench.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/verifybench.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/verifybench.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/verifybench.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,245 +0,0 @@ -// This program does benchmarking of the functions in verify.rs, -// that do certificate chain validation and signature verification. -// -// Note: we don't use any of the standard 'cargo bench', 'test::Bencher', -// etc. because it's unstable at the time of writing. - -use std::convert::TryInto; -use std::time::{Duration, Instant, SystemTime}; - -use crate::key; -use crate::verify; -use crate::verify::ServerCertVerifier; -use crate::{anchors, OwnedTrustAnchor}; - -use webpki_roots; - -fn duration_nanos(d: Duration) -> u64 { - ((d.as_secs() as f64) * 1e9 + (d.subsec_nanos() as f64)) as u64 -} - -#[test] -fn test_reddit_cert() { - Context::new( - "reddit", - "reddit.com", - &[ - include_bytes!("testdata/cert-reddit.0.der"), - include_bytes!("testdata/cert-reddit.1.der"), - ], - ) - .bench(100) -} - -#[test] -fn test_github_cert() { - Context::new( - "github", - "github.com", - &[ - include_bytes!("testdata/cert-github.0.der"), - include_bytes!("testdata/cert-github.1.der"), - ], - ) - .bench(100) -} - -#[test] -fn test_arstechnica_cert() { - Context::new( - "arstechnica", - "arstechnica.com", - &[ - include_bytes!("testdata/cert-arstechnica.0.der"), - include_bytes!("testdata/cert-arstechnica.1.der"), - include_bytes!("testdata/cert-arstechnica.2.der"), - include_bytes!("testdata/cert-arstechnica.3.der"), - ], - ) - .bench(100) -} - -#[test] -fn test_servo_cert() { - Context::new( - "servo", - "servo.org", - &[ - include_bytes!("testdata/cert-servo.0.der"), - include_bytes!("testdata/cert-servo.1.der"), - ], - ) - .bench(100) -} - -#[test] -fn test_twitter_cert() { - Context::new( - "twitter", - "twitter.com", - &[ - include_bytes!("testdata/cert-twitter.0.der"), - include_bytes!("testdata/cert-twitter.1.der"), - ], - ) - .bench(100) -} - -#[test] -fn test_wikipedia_cert() { - Context::new( - "wikipedia", - "wikipedia.org", - &[ - include_bytes!("testdata/cert-wikipedia.0.der"), - include_bytes!("testdata/cert-wikipedia.1.der"), - ], - ) - .bench(100) -} - -#[test] -fn test_google_cert() { - Context::new( - "google", - "www.google.com", - &[ - include_bytes!("testdata/cert-google.0.der"), - include_bytes!("testdata/cert-google.1.der"), - ], - ) - .bench(100) -} - -#[test] -fn test_hn_cert() { - Context::new( - "hn", - "news.ycombinator.com", - &[ - include_bytes!("testdata/cert-hn.0.der"), - include_bytes!("testdata/cert-hn.1.der"), - ], - ) - .bench(100) -} - -#[test] -fn test_stackoverflow_cert() { - Context::new( - "stackoverflow", - "stackoverflow.com", - &[ - include_bytes!("testdata/cert-stackoverflow.0.der"), - include_bytes!("testdata/cert-stackoverflow.1.der"), - ], - ) - .bench(100) -} - -#[test] -fn test_duckduckgo_cert() { - Context::new( - "duckduckgo", - "duckduckgo.com", - &[ - include_bytes!("testdata/cert-duckduckgo.0.der"), - include_bytes!("testdata/cert-duckduckgo.1.der"), - ], - ) - .bench(100) -} - -#[test] -fn test_rustlang_cert() { - Context::new( - "rustlang", - "www.rust-lang.org", - &[ - include_bytes!("testdata/cert-rustlang.0.der"), - include_bytes!("testdata/cert-rustlang.1.der"), - include_bytes!("testdata/cert-rustlang.2.der"), - ], - ) - .bench(100) -} - -#[test] -fn test_wapo_cert() { - Context::new( - "wapo", - "www.washingtonpost.com", - &[ - include_bytes!("testdata/cert-wapo.0.der"), - include_bytes!("testdata/cert-wapo.1.der"), - ], - ) - .bench(100) -} - -struct Context { - name: &'static str, - domain: &'static str, - roots: anchors::RootCertStore, - chain: Vec, - now: SystemTime, -} - -impl Context { - fn new(name: &'static str, domain: &'static str, certs: &[&'static [u8]]) -> Self { - let mut roots = anchors::RootCertStore::empty(); - roots.add_server_trust_anchors( - webpki_roots::TLS_SERVER_ROOTS - .0 - .iter() - .map(|ta| { - OwnedTrustAnchor::from_subject_spki_name_constraints( - ta.subject, - ta.spki, - ta.name_constraints, - ) - }), - ); - Self { - name, - domain, - roots, - chain: certs - .iter() - .copied() - .map(|bytes| key::Certificate(bytes.to_vec())) - .collect(), - now: SystemTime::UNIX_EPOCH + Duration::from_secs(1640870720), - } - } - - fn bench(&self, count: usize) { - let verifier = verify::WebPkiVerifier::new(self.roots.clone(), None); - const SCTS: &[&[u8]] = &[]; - const OCSP_RESPONSE: &[u8] = &[]; - let mut times = Vec::new(); - - let (end_entity, intermediates) = self.chain.split_first().unwrap(); - for _ in 0..count { - let start = Instant::now(); - let server_name = self.domain.try_into().unwrap(); - verifier - .verify_server_cert( - end_entity, - intermediates, - &server_name, - &mut SCTS.iter().copied(), - OCSP_RESPONSE, - self.now, - ) - .unwrap(); - times.push(duration_nanos(Instant::now().duration_since(start))); - } - - println!( - "verify_server_cert({}): min {:?}us", - self.name, - times.iter().min().unwrap() / 1000 - ); - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/verify.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/verify.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/verify.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/verify.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,809 +0,0 @@ -use std::fmt; - -use crate::anchors::{OwnedTrustAnchor, RootCertStore}; -use crate::client::ServerName; -use crate::enums::SignatureScheme; -use crate::error::Error; -use crate::key::Certificate; -#[cfg(feature = "logging")] -use crate::log::{debug, trace, warn}; -use crate::msgs::handshake::{DigitallySignedStruct, DistinguishedNames}; - -use ring::digest::Digest; - -use std::convert::TryFrom; -use std::sync::Arc; -use std::time::SystemTime; - -type SignatureAlgorithms = &'static [&'static webpki::SignatureAlgorithm]; - -/// Which signature verification mechanisms we support. No particular -/// order. -static SUPPORTED_SIG_ALGS: SignatureAlgorithms = &[ - &webpki::ECDSA_P256_SHA256, - &webpki::ECDSA_P256_SHA384, - &webpki::ECDSA_P384_SHA256, - &webpki::ECDSA_P384_SHA384, - &webpki::ED25519, - &webpki::RSA_PSS_2048_8192_SHA256_LEGACY_KEY, - &webpki::RSA_PSS_2048_8192_SHA384_LEGACY_KEY, - &webpki::RSA_PSS_2048_8192_SHA512_LEGACY_KEY, - &webpki::RSA_PKCS1_2048_8192_SHA256, - &webpki::RSA_PKCS1_2048_8192_SHA384, - &webpki::RSA_PKCS1_2048_8192_SHA512, - &webpki::RSA_PKCS1_3072_8192_SHA384, -]; - -// Marker types. These are used to bind the fact some verification -// (certificate chain or handshake signature) has taken place into -// protocol states. We use this to have the compiler check that there -// are no 'goto fail'-style elisions of important checks before we -// reach the traffic stage. -// -// These types are public, but cannot be directly constructed. This -// means their origins can be precisely determined by looking -// for their `assertion` constructors. - -/// Zero-sized marker type representing verification of a signature. -#[derive(Debug)] -#[cfg_attr(docsrs, doc(cfg(feature = "dangerous_configuration")))] -pub struct HandshakeSignatureValid(()); - -impl HandshakeSignatureValid { - /// Make a `HandshakeSignatureValid` - pub fn assertion() -> Self { - Self(()) - } -} - -#[derive(Debug)] -pub(crate) struct FinishedMessageVerified(()); - -impl FinishedMessageVerified { - pub(crate) fn assertion() -> Self { - Self(()) - } -} - -/// Zero-sized marker type representing verification of a server cert chain. -#[allow(unreachable_pub)] -#[derive(Debug)] -#[cfg_attr(docsrs, doc(cfg(feature = "dangerous_configuration")))] -pub struct ServerCertVerified(()); - -#[allow(unreachable_pub)] -impl ServerCertVerified { - /// Make a `ServerCertVerified` - pub fn assertion() -> Self { - Self(()) - } -} - -/// Zero-sized marker type representing verification of a client cert chain. -#[derive(Debug)] -#[cfg_attr(docsrs, doc(cfg(feature = "dangerous_configuration")))] -pub struct ClientCertVerified(()); - -impl ClientCertVerified { - /// Make a `ClientCertVerified` - pub fn assertion() -> Self { - Self(()) - } -} - -/// Something that can verify a server certificate chain, and verify -/// signatures made by certificates. -#[allow(unreachable_pub)] -#[cfg_attr(docsrs, doc(cfg(feature = "dangerous_configuration")))] -pub trait ServerCertVerifier: Send + Sync { - /// Verify the end-entity certificate `end_entity` is valid for the - /// hostname `dns_name` and chains to at least one trust anchor. - /// - /// `intermediates` contains all certificates other than `end_entity` that - /// were sent as part of the server's [Certificate] message. It is in the - /// same order that the server sent them and may be empty. - /// - /// Note that none of the certificates have been parsed yet, so it is the responsibility of - /// the implementor to handle invalid data. It is recommended that the implementor returns - /// [`Error::InvalidCertificateEncoding`] when these cases are encountered. - /// - /// `scts` contains the Signed Certificate Timestamps (SCTs) the server - /// sent with the end-entity certificate, if any. - /// - /// [Certificate]: https://datatracker.ietf.org/doc/html/rfc8446#section-4.4.2 - fn verify_server_cert( - &self, - end_entity: &Certificate, - intermediates: &[Certificate], - server_name: &ServerName, - scts: &mut dyn Iterator, - ocsp_response: &[u8], - now: SystemTime, - ) -> Result; - - /// Verify a signature allegedly by the given server certificate. - /// - /// `message` is not hashed, and needs hashing during the verification. - /// The signature and algorithm are within `dss`. `cert` contains the - /// public key to use. - /// - /// `cert` has already been validated by [`ServerCertVerifier::verify_server_cert`]. - /// - /// If and only if the signature is valid, return `Ok(HandshakeSignatureValid)`. - /// Otherwise, return an error -- rustls will send an alert and abort the - /// connection. - /// - /// This method is only called for TLS1.2 handshakes. Note that, in TLS1.2, - /// SignatureSchemes such as `SignatureScheme::ECDSA_NISTP256_SHA256` are not - /// in fact bound to the specific curve implied in their name. - /// - /// This trait method has a default implementation that uses webpki to verify - /// the signature. - fn verify_tls12_signature( - &self, - message: &[u8], - cert: &Certificate, - dss: &DigitallySignedStruct, - ) -> Result { - verify_signed_struct(message, cert, dss) - } - - /// Verify a signature allegedly by the given server certificate. - /// - /// This method is only called for TLS1.3 handshakes. - /// - /// This method is very similar to `verify_tls12_signature`: but note the - /// tighter ECDSA SignatureScheme semantics -- e.g. `SignatureScheme::ECDSA_NISTP256_SHA256` - /// must only validate signatures using public keys on the right curve -- - /// rustls does not enforce this requirement for you. - /// - /// `cert` has already been validated by [`ServerCertVerifier::verify_server_cert`]. - /// - /// If and only if the signature is valid, return `Ok(HandshakeSignatureValid)`. - /// Otherwise, return an error -- rustls will send an alert and abort the - /// connection. - /// - /// This trait method has a default implementation that uses webpki to verify - /// the signature. - fn verify_tls13_signature( - &self, - message: &[u8], - cert: &Certificate, - dss: &DigitallySignedStruct, - ) -> Result { - verify_tls13(message, cert, dss) - } - - /// Return the list of SignatureSchemes that this verifier will handle, - /// in `verify_tls12_signature` and `verify_tls13_signature` calls. - /// - /// This should be in priority order, with the most preferred first. - /// - /// This trait method has a default implementation that reflects the schemes - /// supported by webpki. - fn supported_verify_schemes(&self) -> Vec { - WebPkiVerifier::verification_schemes() - } - - /// Returns `true` if Rustls should ask the server to send SCTs. - /// - /// Signed Certificate Timestamps (SCTs) are used for Certificate - /// Transparency validation. - /// - /// The default implementation of this function returns true. - fn request_scts(&self) -> bool { - true - } -} - -impl fmt::Debug for dyn ServerCertVerifier { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "dyn ServerCertVerifier") - } -} - -/// A type which encapsulates a string that is a syntactically valid DNS name. -#[derive(Clone, Debug, Eq, Hash, PartialEq)] -#[cfg_attr(docsrs, doc(cfg(feature = "dangerous_configuration")))] -pub struct DnsName(pub(crate) webpki::DnsName); - -impl AsRef for DnsName { - fn as_ref(&self) -> &str { - AsRef::::as_ref(&self.0) - } -} - -/// Something that can verify a client certificate chain -#[allow(unreachable_pub)] -#[cfg_attr(docsrs, doc(cfg(feature = "dangerous_configuration")))] -pub trait ClientCertVerifier: Send + Sync { - /// Returns `true` to enable the server to request a client certificate and - /// `false` to skip requesting a client certificate. Defaults to `true`. - fn offer_client_auth(&self) -> bool { - true - } - - /// Return `Some(true)` to require a client certificate and `Some(false)` to make - /// client authentication optional. Return `None` to abort the connection. - /// Defaults to `Some(self.offer_client_auth())`. - fn client_auth_mandatory(&self) -> Option { - Some(self.offer_client_auth()) - } - - /// Returns the [Subjects] of the client authentication trust anchors to - /// share with the client when requesting client authentication. - /// - /// These must be DER-encoded X.500 distinguished names, per RFC 5280. - /// They are sent in the [`certificate_authorities`] extension of a - /// [`CertificateRequest`] message. - /// - /// [Subjects]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6 - /// [`CertificateRequest`]: https://datatracker.ietf.org/doc/html/rfc8446#section-4.3.2 - /// [`certificate_authorities`]: https://datatracker.ietf.org/doc/html/rfc8446#section-4.2.4 - /// - /// Return `None` to abort the connection. Return an empty `Vec` to continue - /// the handshake without sending a CertificateRequest message. - fn client_auth_root_subjects(&self) -> Option; - - /// Verify the end-entity certificate `end_entity` is valid, acceptable, - /// and chains to at least one of the trust anchors trusted by - /// this verifier. - /// - /// `intermediates` contains the intermediate certificates the - /// client sent along with the end-entity certificate; it is in the same - /// order that the peer sent them and may be empty. - /// - /// Note that none of the certificates have been parsed yet, so it is the responsibility of - /// the implementor to handle invalid data. It is recommended that the implementor returns - /// [`Error::InvalidCertificateEncoding`] when these cases are encountered. - fn verify_client_cert( - &self, - end_entity: &Certificate, - intermediates: &[Certificate], - now: SystemTime, - ) -> Result; - - /// Verify a signature allegedly by the given client certificate. - /// - /// `message` is not hashed, and needs hashing during the verification. - /// The signature and algorithm are within `dss`. `cert` contains the - /// public key to use. - /// - /// `cert` has already been validated by [`ClientCertVerifier::verify_client_cert`]. - /// - /// If and only if the signature is valid, return `Ok(HandshakeSignatureValid)`. - /// Otherwise, return an error -- rustls will send an alert and abort the - /// connection. - /// - /// This method is only called for TLS1.2 handshakes. Note that, in TLS1.2, - /// SignatureSchemes such as `SignatureScheme::ECDSA_NISTP256_SHA256` are not - /// in fact bound to the specific curve implied in their name. - /// - /// This trait method has a default implementation that uses webpki to verify - /// the signature. - fn verify_tls12_signature( - &self, - message: &[u8], - cert: &Certificate, - dss: &DigitallySignedStruct, - ) -> Result { - verify_signed_struct(message, cert, dss) - } - - /// Verify a signature allegedly by the given client certificate. - /// - /// This method is only called for TLS1.3 handshakes. - /// - /// This method is very similar to `verify_tls12_signature`, but note the - /// tighter ECDSA SignatureScheme semantics in TLS 1.3. For example, - /// `SignatureScheme::ECDSA_NISTP256_SHA256` - /// must only validate signatures using public keys on the right curve -- - /// rustls does not enforce this requirement for you. - /// - /// This trait method has a default implementation that uses webpki to verify - /// the signature. - fn verify_tls13_signature( - &self, - message: &[u8], - cert: &Certificate, - dss: &DigitallySignedStruct, - ) -> Result { - verify_tls13(message, cert, dss) - } - - /// Return the list of SignatureSchemes that this verifier will handle, - /// in `verify_tls12_signature` and `verify_tls13_signature` calls. - /// - /// This should be in priority order, with the most preferred first. - /// - /// This trait method has a default implementation that reflects the schemes - /// supported by webpki. - fn supported_verify_schemes(&self) -> Vec { - WebPkiVerifier::verification_schemes() - } -} - -impl fmt::Debug for dyn ClientCertVerifier { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "dyn ClientCertVerifier") - } -} - -impl ServerCertVerifier for WebPkiVerifier { - /// Will verify the certificate is valid in the following ways: - /// - Signed by a trusted `RootCertStore` CA - /// - Not Expired - /// - Valid for DNS entry - fn verify_server_cert( - &self, - end_entity: &Certificate, - intermediates: &[Certificate], - server_name: &ServerName, - scts: &mut dyn Iterator, - ocsp_response: &[u8], - now: SystemTime, - ) -> Result { - let (cert, chain, trustroots) = prepare(end_entity, intermediates, &self.roots)?; - let webpki_now = webpki::Time::try_from(now).map_err(|_| Error::FailedToGetCurrentTime)?; - - let dns_name = match server_name { - ServerName::DnsName(dns_name) => dns_name, - ServerName::IpAddress(_) => { - return Err(Error::UnsupportedNameType); - } - }; - - let cert = cert - .verify_is_valid_tls_server_cert( - SUPPORTED_SIG_ALGS, - &webpki::TlsServerTrustAnchors(&trustroots), - &chain, - webpki_now, - ) - .map_err(pki_error) - .map(|_| cert)?; - - if let Some(policy) = &self.ct_policy { - policy.verify(end_entity, now, scts)?; - } - - if !ocsp_response.is_empty() { - trace!("Unvalidated OCSP response: {:?}", ocsp_response.to_vec()); - } - - cert.verify_is_valid_for_dns_name(dns_name.0.as_ref()) - .map_err(pki_error) - .map(|_| ServerCertVerified::assertion()) - } -} - -/// Default `ServerCertVerifier`, see the trait impl for more information. -#[allow(unreachable_pub)] -#[cfg_attr(docsrs, doc(cfg(feature = "dangerous_configuration")))] -pub struct WebPkiVerifier { - roots: RootCertStore, - ct_policy: Option, -} - -#[allow(unreachable_pub)] -impl WebPkiVerifier { - /// Constructs a new `WebPkiVerifier`. - /// - /// `roots` is the set of trust anchors to trust for issuing server certs. - /// - /// `ct_logs` is the list of logs that are trusted for Certificate - /// Transparency. Currently CT log enforcement is opportunistic; see - /// . - pub fn new(roots: RootCertStore, ct_policy: Option) -> Self { - Self { roots, ct_policy } - } - - /// Returns the signature verification methods supported by - /// webpki. - pub fn verification_schemes() -> Vec { - vec![ - SignatureScheme::ECDSA_NISTP384_SHA384, - SignatureScheme::ECDSA_NISTP256_SHA256, - SignatureScheme::ED25519, - SignatureScheme::RSA_PSS_SHA512, - SignatureScheme::RSA_PSS_SHA384, - SignatureScheme::RSA_PSS_SHA256, - SignatureScheme::RSA_PKCS1_SHA512, - SignatureScheme::RSA_PKCS1_SHA384, - SignatureScheme::RSA_PKCS1_SHA256, - ] - } -} - -/// Policy for enforcing Certificate Transparency. -/// -/// Because Certificate Transparency logs are sharded on a per-year basis and can be trusted or -/// distrusted relatively quickly, rustls stores a validation deadline. Server certificates will -/// be validated against the configured CT logs until the deadline expires. After the deadline, -/// certificates will no longer be validated, and a warning message will be logged. The deadline -/// may vary depending on how often you deploy builds with updated dependencies. -#[allow(unreachable_pub)] -#[cfg_attr(docsrs, doc(cfg(feature = "dangerous_configuration")))] -pub struct CertificateTransparencyPolicy { - logs: &'static [&'static sct::Log<'static>], - validation_deadline: SystemTime, -} - -impl CertificateTransparencyPolicy { - /// Create a new policy. - #[allow(unreachable_pub)] - pub fn new( - logs: &'static [&'static sct::Log<'static>], - validation_deadline: SystemTime, - ) -> Self { - Self { - logs, - validation_deadline, - } - } - - fn verify( - &self, - cert: &Certificate, - now: SystemTime, - scts: &mut dyn Iterator, - ) -> Result<(), Error> { - if self.logs.is_empty() { - return Ok(()); - } else if self - .validation_deadline - .duration_since(now) - .is_err() - { - warn!("certificate transparency logs have expired, validation disabled"); - return Ok(()); - } - - let now = unix_time_millis(now)?; - let mut last_sct_error = None; - for sct in scts { - #[cfg_attr(not(feature = "logging"), allow(unused_variables))] - match sct::verify_sct(&cert.0, sct, now, self.logs) { - Ok(index) => { - debug!( - "Valid SCT signed by {} on {}", - self.logs[index].operated_by, self.logs[index].description - ); - return Ok(()); - } - Err(e) => { - if e.should_be_fatal() { - return Err(Error::InvalidSct(e)); - } - debug!("SCT ignored because {:?}", e); - last_sct_error = Some(e); - } - } - } - - /* If we were supplied with some logs, and some SCTs, - * but couldn't verify any of them, fail the handshake. */ - if let Some(last_sct_error) = last_sct_error { - warn!("No valid SCTs provided"); - return Err(Error::InvalidSct(last_sct_error)); - } - - Ok(()) - } -} - -type CertChainAndRoots<'a, 'b> = ( - webpki::EndEntityCert<'a>, - Vec<&'a [u8]>, - Vec>, -); - -fn prepare<'a, 'b>( - end_entity: &'a Certificate, - intermediates: &'a [Certificate], - roots: &'b RootCertStore, -) -> Result, Error> { - // EE cert must appear first. - let cert = webpki::EndEntityCert::try_from(end_entity.0.as_ref()).map_err(pki_error)?; - - let intermediates: Vec<&'a [u8]> = intermediates - .iter() - .map(|cert| cert.0.as_ref()) - .collect(); - - let trustroots: Vec = roots - .roots - .iter() - .map(OwnedTrustAnchor::to_trust_anchor) - .collect(); - - Ok((cert, intermediates, trustroots)) -} - -/// A `ClientCertVerifier` that will ensure that every client provides a trusted -/// certificate, without any name checking. -pub struct AllowAnyAuthenticatedClient { - roots: RootCertStore, -} - -impl AllowAnyAuthenticatedClient { - /// Construct a new `AllowAnyAuthenticatedClient`. - /// - /// `roots` is the list of trust anchors to use for certificate validation. - pub fn new(roots: RootCertStore) -> Arc { - Arc::new(Self { roots }) - } -} - -impl ClientCertVerifier for AllowAnyAuthenticatedClient { - fn offer_client_auth(&self) -> bool { - true - } - - #[allow(deprecated)] - fn client_auth_root_subjects(&self) -> Option { - Some(self.roots.subjects()) - } - - fn verify_client_cert( - &self, - end_entity: &Certificate, - intermediates: &[Certificate], - now: SystemTime, - ) -> Result { - let (cert, chain, trustroots) = prepare(end_entity, intermediates, &self.roots)?; - let now = webpki::Time::try_from(now).map_err(|_| Error::FailedToGetCurrentTime)?; - cert.verify_is_valid_tls_client_cert( - SUPPORTED_SIG_ALGS, - &webpki::TlsClientTrustAnchors(&trustroots), - &chain, - now, - ) - .map_err(pki_error) - .map(|_| ClientCertVerified::assertion()) - } -} - -/// A `ClientCertVerifier` that will allow both anonymous and authenticated -/// clients, without any name checking. -/// -/// Client authentication will be requested during the TLS handshake. If the -/// client offers a certificate then this acts like -/// `AllowAnyAuthenticatedClient`, otherwise this acts like `NoClientAuth`. -pub struct AllowAnyAnonymousOrAuthenticatedClient { - inner: AllowAnyAuthenticatedClient, -} - -impl AllowAnyAnonymousOrAuthenticatedClient { - /// Construct a new `AllowAnyAnonymousOrAuthenticatedClient`. - /// - /// `roots` is the list of trust anchors to use for certificate validation. - pub fn new(roots: RootCertStore) -> Arc { - Arc::new(Self { - inner: AllowAnyAuthenticatedClient { roots }, - }) - } -} - -impl ClientCertVerifier for AllowAnyAnonymousOrAuthenticatedClient { - fn offer_client_auth(&self) -> bool { - self.inner.offer_client_auth() - } - - fn client_auth_mandatory(&self) -> Option { - Some(false) - } - - fn client_auth_root_subjects(&self) -> Option { - self.inner.client_auth_root_subjects() - } - - fn verify_client_cert( - &self, - end_entity: &Certificate, - intermediates: &[Certificate], - now: SystemTime, - ) -> Result { - self.inner - .verify_client_cert(end_entity, intermediates, now) - } -} - -fn pki_error(error: webpki::Error) -> Error { - use webpki::Error::*; - match error { - BadDer | BadDerTime => Error::InvalidCertificateEncoding, - InvalidSignatureForPublicKey => Error::InvalidCertificateSignature, - UnsupportedSignatureAlgorithm | UnsupportedSignatureAlgorithmForPublicKey => { - Error::InvalidCertificateSignatureType - } - e => Error::InvalidCertificateData(format!("invalid peer certificate: {}", e)), - } -} - -/// Turns off client authentication. -pub struct NoClientAuth; - -impl NoClientAuth { - /// Constructs a `NoClientAuth` and wraps it in an `Arc`. - pub fn new() -> Arc { - Arc::new(Self) - } -} - -impl ClientCertVerifier for NoClientAuth { - fn offer_client_auth(&self) -> bool { - false - } - - fn client_auth_root_subjects(&self) -> Option { - unimplemented!(); - } - - fn verify_client_cert( - &self, - _end_entity: &Certificate, - _intermediates: &[Certificate], - _now: SystemTime, - ) -> Result { - unimplemented!(); - } -} - -static ECDSA_SHA256: SignatureAlgorithms = - &[&webpki::ECDSA_P256_SHA256, &webpki::ECDSA_P384_SHA256]; - -static ECDSA_SHA384: SignatureAlgorithms = - &[&webpki::ECDSA_P256_SHA384, &webpki::ECDSA_P384_SHA384]; - -static ED25519: SignatureAlgorithms = &[&webpki::ED25519]; - -static RSA_SHA256: SignatureAlgorithms = &[&webpki::RSA_PKCS1_2048_8192_SHA256]; -static RSA_SHA384: SignatureAlgorithms = &[&webpki::RSA_PKCS1_2048_8192_SHA384]; -static RSA_SHA512: SignatureAlgorithms = &[&webpki::RSA_PKCS1_2048_8192_SHA512]; -static RSA_PSS_SHA256: SignatureAlgorithms = &[&webpki::RSA_PSS_2048_8192_SHA256_LEGACY_KEY]; -static RSA_PSS_SHA384: SignatureAlgorithms = &[&webpki::RSA_PSS_2048_8192_SHA384_LEGACY_KEY]; -static RSA_PSS_SHA512: SignatureAlgorithms = &[&webpki::RSA_PSS_2048_8192_SHA512_LEGACY_KEY]; - -fn convert_scheme(scheme: SignatureScheme) -> Result { - match scheme { - // nb. for TLS1.2 the curve is not fixed by SignatureScheme. - SignatureScheme::ECDSA_NISTP256_SHA256 => Ok(ECDSA_SHA256), - SignatureScheme::ECDSA_NISTP384_SHA384 => Ok(ECDSA_SHA384), - - SignatureScheme::ED25519 => Ok(ED25519), - - SignatureScheme::RSA_PKCS1_SHA256 => Ok(RSA_SHA256), - SignatureScheme::RSA_PKCS1_SHA384 => Ok(RSA_SHA384), - SignatureScheme::RSA_PKCS1_SHA512 => Ok(RSA_SHA512), - - SignatureScheme::RSA_PSS_SHA256 => Ok(RSA_PSS_SHA256), - SignatureScheme::RSA_PSS_SHA384 => Ok(RSA_PSS_SHA384), - SignatureScheme::RSA_PSS_SHA512 => Ok(RSA_PSS_SHA512), - - _ => { - let error_msg = format!("received unadvertised sig scheme {:?}", scheme); - Err(Error::PeerMisbehavedError(error_msg)) - } - } -} - -fn verify_sig_using_any_alg( - cert: &webpki::EndEntityCert, - algs: SignatureAlgorithms, - message: &[u8], - sig: &[u8], -) -> Result<(), webpki::Error> { - // TLS doesn't itself give us enough info to map to a single webpki::SignatureAlgorithm. - // Therefore, convert_algs maps to several and we try them all. - for alg in algs { - match cert.verify_signature(alg, message, sig) { - Err(webpki::Error::UnsupportedSignatureAlgorithmForPublicKey) => continue, - res => return res, - } - } - - Err(webpki::Error::UnsupportedSignatureAlgorithmForPublicKey) -} - -fn verify_signed_struct( - message: &[u8], - cert: &Certificate, - dss: &DigitallySignedStruct, -) -> Result { - let possible_algs = convert_scheme(dss.scheme)?; - let cert = webpki::EndEntityCert::try_from(cert.0.as_ref()).map_err(pki_error)?; - - verify_sig_using_any_alg(&cert, possible_algs, message, dss.signature()) - .map_err(pki_error) - .map(|_| HandshakeSignatureValid::assertion()) -} - -fn convert_alg_tls13( - scheme: SignatureScheme, -) -> Result<&'static webpki::SignatureAlgorithm, Error> { - use crate::enums::SignatureScheme::*; - - match scheme { - ECDSA_NISTP256_SHA256 => Ok(&webpki::ECDSA_P256_SHA256), - ECDSA_NISTP384_SHA384 => Ok(&webpki::ECDSA_P384_SHA384), - ED25519 => Ok(&webpki::ED25519), - RSA_PSS_SHA256 => Ok(&webpki::RSA_PSS_2048_8192_SHA256_LEGACY_KEY), - RSA_PSS_SHA384 => Ok(&webpki::RSA_PSS_2048_8192_SHA384_LEGACY_KEY), - RSA_PSS_SHA512 => Ok(&webpki::RSA_PSS_2048_8192_SHA512_LEGACY_KEY), - _ => { - let error_msg = format!("received unsupported sig scheme {:?}", scheme); - Err(Error::PeerMisbehavedError(error_msg)) - } - } -} - -/// Constructs the signature message specified in section 4.4.3 of RFC8446. -pub(crate) fn construct_tls13_client_verify_message(handshake_hash: &Digest) -> Vec { - construct_tls13_verify_message(handshake_hash, b"TLS 1.3, client CertificateVerify\x00") -} - -/// Constructs the signature message specified in section 4.4.3 of RFC8446. -pub(crate) fn construct_tls13_server_verify_message(handshake_hash: &Digest) -> Vec { - construct_tls13_verify_message(handshake_hash, b"TLS 1.3, server CertificateVerify\x00") -} - -fn construct_tls13_verify_message( - handshake_hash: &Digest, - context_string_with_0: &[u8], -) -> Vec { - let mut msg = Vec::new(); - msg.resize(64, 0x20u8); - msg.extend_from_slice(context_string_with_0); - msg.extend_from_slice(handshake_hash.as_ref()); - msg -} - -fn verify_tls13( - msg: &[u8], - cert: &Certificate, - dss: &DigitallySignedStruct, -) -> Result { - let alg = convert_alg_tls13(dss.scheme)?; - - let cert = webpki::EndEntityCert::try_from(cert.0.as_ref()).map_err(pki_error)?; - - cert.verify_signature(alg, msg, dss.signature()) - .map_err(pki_error) - .map(|_| HandshakeSignatureValid::assertion()) -} - -fn unix_time_millis(now: SystemTime) -> Result { - now.duration_since(std::time::UNIX_EPOCH) - .map(|dur| dur.as_secs()) - .map_err(|_| Error::FailedToGetCurrentTime) - .and_then(|secs| { - secs.checked_mul(1000) - .ok_or(Error::FailedToGetCurrentTime) - }) -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn assertions_are_debug() { - assert_eq!( - format!("{:?}", ClientCertVerified::assertion()), - "ClientCertVerified(())" - ); - assert_eq!( - format!("{:?}", HandshakeSignatureValid::assertion()), - "HandshakeSignatureValid(())" - ); - assert_eq!( - format!("{:?}", FinishedMessageVerified::assertion()), - "FinishedMessageVerified(())" - ); - assert_eq!( - format!("{:?}", ServerCertVerified::assertion()), - "ServerCertVerified(())" - ); - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/versions.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/versions.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/versions.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/versions.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,99 +0,0 @@ -use std::fmt; - -use crate::enums::ProtocolVersion; - -/// A TLS protocol version supported by rustls. -/// -/// All possible instances of this class are provided by the library in -/// the [`ALL_VERSIONS`] array, as well as individually as [`TLS12`] -/// and [`TLS13`]. -#[derive(Eq, PartialEq)] -pub struct SupportedProtocolVersion { - /// The TLS enumeration naming this version. - pub version: ProtocolVersion, - is_private: (), -} - -impl fmt::Debug for SupportedProtocolVersion { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - self.version.fmt(f) - } -} - -/// TLS1.2 -#[cfg(feature = "tls12")] -pub static TLS12: SupportedProtocolVersion = SupportedProtocolVersion { - version: ProtocolVersion::TLSv1_2, - is_private: (), -}; - -/// TLS1.3 -pub static TLS13: SupportedProtocolVersion = SupportedProtocolVersion { - version: ProtocolVersion::TLSv1_3, - is_private: (), -}; - -/// A list of all the protocol versions supported by rustls. -pub static ALL_VERSIONS: &[&SupportedProtocolVersion] = &[ - &TLS13, - #[cfg(feature = "tls12")] - &TLS12, -]; - -/// The version configuration that an application should use by default. -/// -/// This will be [`ALL_VERSIONS`] for now, but gives space in the future -/// to remove a version from here and require users to opt-in to older -/// versions. -pub static DEFAULT_VERSIONS: &[&SupportedProtocolVersion] = ALL_VERSIONS; - -#[derive(Clone)] -pub(crate) struct EnabledVersions { - #[cfg(feature = "tls12")] - tls12: Option<&'static SupportedProtocolVersion>, - tls13: Option<&'static SupportedProtocolVersion>, -} - -impl fmt::Debug for EnabledVersions { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let mut list = &mut f.debug_list(); - #[cfg(feature = "tls12")] - if let Some(v) = self.tls12 { - list = list.entry(v) - } - if let Some(v) = self.tls13 { - list = list.entry(v) - } - list.finish() - } -} - -impl EnabledVersions { - pub(crate) fn new(versions: &[&'static SupportedProtocolVersion]) -> Self { - let mut ev = Self { - #[cfg(feature = "tls12")] - tls12: None, - tls13: None, - }; - - for v in versions { - match v.version { - #[cfg(feature = "tls12")] - ProtocolVersion::TLSv1_2 => ev.tls12 = Some(v), - ProtocolVersion::TLSv1_3 => ev.tls13 = Some(v), - _ => {} - } - } - - ev - } - - pub(crate) fn contains(&self, version: ProtocolVersion) -> bool { - match version { - #[cfg(feature = "tls12")] - ProtocolVersion::TLSv1_2 => self.tls12.is_some(), - ProtocolVersion::TLSv1_3 => self.tls13.is_some(), - _ => false, - } - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/src/x509.rs temporalio-1.3.0/vendor/rustls-0.20.8/src/x509.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/src/x509.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/src/x509.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ -// Additional x509/asn1 functions to those provided in webpki/ring. - -use ring::io::der; - -pub(crate) fn wrap_in_asn1_len(bytes: &mut Vec) { - let len = bytes.len(); - - if len <= 0x7f { - bytes.insert(0, len as u8); - } else { - bytes.insert(0, 0x80u8); - let mut left = len; - while left > 0 { - let byte = (left & 0xff) as u8; - bytes.insert(1, byte); - bytes[0] += 1; - left >>= 8; - } - } -} - -/// Prepend stuff to `bytes` to put it in a DER SEQUENCE. -pub(crate) fn wrap_in_sequence(bytes: &mut Vec) { - wrap_in_asn1_len(bytes); - bytes.insert(0, der::Tag::Sequence as u8); -} - -#[test] -fn test_empty() { - let mut val = Vec::new(); - wrap_in_sequence(&mut val); - assert_eq!(vec![0x30, 0x00], val); -} - -#[test] -fn test_small() { - let mut val = Vec::new(); - val.insert(0, 0x00); - val.insert(1, 0x11); - val.insert(2, 0x22); - val.insert(3, 0x33); - wrap_in_sequence(&mut val); - assert_eq!(vec![0x30, 0x04, 0x00, 0x11, 0x22, 0x33], val); -} - -#[test] -fn test_medium() { - let mut val = Vec::new(); - val.resize(255, 0x12); - wrap_in_sequence(&mut val); - assert_eq!(vec![0x30, 0x81, 0xff, 0x12, 0x12, 0x12], val[..6].to_vec()); -} - -#[test] -fn test_large() { - let mut val = Vec::new(); - val.resize(4660, 0x12); - wrap_in_sequence(&mut val); - assert_eq!(vec![0x30, 0x82, 0x12, 0x34, 0x12, 0x12], val[..6].to_vec()); -} - -#[test] -fn test_huge() { - let mut val = Vec::new(); - val.resize(0xffff, 0x12); - wrap_in_sequence(&mut val); - assert_eq!(vec![0x30, 0x82, 0xff, 0xff, 0x12, 0x12], val[..6].to_vec()); - assert_eq!(val.len(), 0xffff + 4); -} - -#[test] -fn test_gigantic() { - let mut val = Vec::new(); - val.resize(0x100000, 0x12); - wrap_in_sequence(&mut val); - assert_eq!( - vec![0x30, 0x83, 0x10, 0x00, 0x00, 0x12, 0x12], - val[..7].to_vec() - ); - assert_eq!(val.len(), 0x100000 + 5); -} - -#[test] -fn test_ludicrous() { - let mut val = Vec::new(); - val.resize(0x1000000, 0x12); - wrap_in_sequence(&mut val); - assert_eq!( - vec![0x30, 0x84, 0x01, 0x00, 0x00, 0x00, 0x12, 0x12], - val[..8].to_vec() - ); - assert_eq!(val.len(), 0x1000000 + 6); -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/tests/api.rs temporalio-1.3.0/vendor/rustls-0.20.8/tests/api.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/tests/api.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/tests/api.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,4382 +0,0 @@ -//! Assorted public API tests. -use std::cell::RefCell; -use std::convert::TryFrom; -#[cfg(feature = "tls12")] -use std::convert::TryInto; -use std::fmt; -use std::io::{self, IoSlice, Read, Write}; -use std::mem; -use std::ops::{Deref, DerefMut}; -use std::sync::atomic::{AtomicUsize, Ordering}; -use std::sync::Arc; -use std::sync::Mutex; - -use log; - -use rustls::client::ResolvesClientCert; -use rustls::internal::msgs::base::Payload; -use rustls::internal::msgs::codec::Codec; -#[cfg(feature = "quic")] -use rustls::quic::{self, ClientQuicExt, QuicExt, ServerQuicExt}; -use rustls::server::{AllowAnyAnonymousOrAuthenticatedClient, ClientHello, ResolvesServerCert}; -#[cfg(feature = "secret_extraction")] -use rustls::ConnectionTrafficSecrets; -use rustls::{sign, ConnectionCommon, Error, KeyLog, SideData}; -use rustls::{CipherSuite, ProtocolVersion, SignatureScheme}; -use rustls::{ClientConfig, ClientConnection}; -use rustls::{ServerConfig, ServerConnection}; -use rustls::{Stream, StreamOwned}; -use rustls::{SupportedCipherSuite, ALL_CIPHER_SUITES}; - -mod common; -use crate::common::*; - -fn alpn_test_error( - server_protos: Vec>, - client_protos: Vec>, - agreed: Option<&[u8]>, - expected_error: Option, -) { - let mut server_config = make_server_config(KeyType::Rsa); - server_config.alpn_protocols = server_protos; - - let server_config = Arc::new(server_config); - - for version in rustls::ALL_VERSIONS { - let mut client_config = make_client_config_with_versions(KeyType::Rsa, &[version]); - client_config.alpn_protocols = client_protos.clone(); - - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - - assert_eq!(client.alpn_protocol(), None); - assert_eq!(server.alpn_protocol(), None); - let error = do_handshake_until_error(&mut client, &mut server); - assert_eq!(client.alpn_protocol(), agreed); - assert_eq!(server.alpn_protocol(), agreed); - assert_eq!(error.err(), expected_error); - } -} - -fn alpn_test(server_protos: Vec>, client_protos: Vec>, agreed: Option<&[u8]>) { - alpn_test_error(server_protos, client_protos, agreed, None) -} - -#[test] -fn alpn() { - // no support - alpn_test(vec![], vec![], None); - - // server support - alpn_test(vec![b"server-proto".to_vec()], vec![], None); - - // client support - alpn_test(vec![], vec![b"client-proto".to_vec()], None); - - // no overlap - alpn_test_error( - vec![b"server-proto".to_vec()], - vec![b"client-proto".to_vec()], - None, - Some(ErrorFromPeer::Server(Error::NoApplicationProtocol)), - ); - - // server chooses preference - alpn_test( - vec![b"server-proto".to_vec(), b"client-proto".to_vec()], - vec![b"client-proto".to_vec(), b"server-proto".to_vec()], - Some(b"server-proto"), - ); - - // case sensitive - alpn_test_error( - vec![b"PROTO".to_vec()], - vec![b"proto".to_vec()], - None, - Some(ErrorFromPeer::Server(Error::NoApplicationProtocol)), - ); -} - -fn version_test( - client_versions: &[&'static rustls::SupportedProtocolVersion], - server_versions: &[&'static rustls::SupportedProtocolVersion], - result: Option, -) { - let client_versions = if client_versions.is_empty() { - &rustls::ALL_VERSIONS - } else { - client_versions - }; - let server_versions = if server_versions.is_empty() { - &rustls::ALL_VERSIONS - } else { - server_versions - }; - - let client_config = make_client_config_with_versions(KeyType::Rsa, client_versions); - let server_config = make_server_config_with_versions(KeyType::Rsa, server_versions); - - println!( - "version {:?} {:?} -> {:?}", - client_versions, server_versions, result - ); - - let (mut client, mut server) = make_pair_for_configs(client_config, server_config); - - assert_eq!(client.protocol_version(), None); - assert_eq!(server.protocol_version(), None); - if result.is_none() { - let err = do_handshake_until_error(&mut client, &mut server); - assert!(err.is_err()); - } else { - do_handshake(&mut client, &mut server); - assert_eq!(client.protocol_version(), result); - assert_eq!(server.protocol_version(), result); - } -} - -#[test] -fn versions() { - // default -> 1.3 - version_test(&[], &[], Some(ProtocolVersion::TLSv1_3)); - - // client default, server 1.2 -> 1.2 - #[cfg(feature = "tls12")] - version_test( - &[], - &[&rustls::version::TLS12], - Some(ProtocolVersion::TLSv1_2), - ); - - // client 1.2, server default -> 1.2 - #[cfg(feature = "tls12")] - version_test( - &[&rustls::version::TLS12], - &[], - Some(ProtocolVersion::TLSv1_2), - ); - - // client 1.2, server 1.3 -> fail - #[cfg(feature = "tls12")] - version_test(&[&rustls::version::TLS12], &[&rustls::version::TLS13], None); - - // client 1.3, server 1.2 -> fail - #[cfg(feature = "tls12")] - version_test(&[&rustls::version::TLS13], &[&rustls::version::TLS12], None); - - // client 1.3, server 1.2+1.3 -> 1.3 - #[cfg(feature = "tls12")] - version_test( - &[&rustls::version::TLS13], - &[&rustls::version::TLS12, &rustls::version::TLS13], - Some(ProtocolVersion::TLSv1_3), - ); - - // client 1.2+1.3, server 1.2 -> 1.2 - #[cfg(feature = "tls12")] - version_test( - &[&rustls::version::TLS13, &rustls::version::TLS12], - &[&rustls::version::TLS12], - Some(ProtocolVersion::TLSv1_2), - ); -} - -fn check_read(reader: &mut dyn io::Read, bytes: &[u8]) { - let mut buf = vec![0u8; bytes.len() + 1]; - assert_eq!(bytes.len(), reader.read(&mut buf).unwrap()); - assert_eq!(bytes, &buf[..bytes.len()]); -} - -#[test] -fn config_builder_for_client_rejects_empty_kx_groups() { - assert_eq!( - ClientConfig::builder() - .with_safe_default_cipher_suites() - .with_kx_groups(&[]) - .with_safe_default_protocol_versions() - .err(), - Some(Error::General("no kx groups configured".into())) - ); -} - -#[test] -fn config_builder_for_client_rejects_empty_cipher_suites() { - assert_eq!( - ClientConfig::builder() - .with_cipher_suites(&[]) - .with_safe_default_kx_groups() - .with_safe_default_protocol_versions() - .err(), - Some(Error::General("no usable cipher suites configured".into())) - ); -} - -#[cfg(feature = "tls12")] -#[test] -fn config_builder_for_client_rejects_incompatible_cipher_suites() { - assert_eq!( - ClientConfig::builder() - .with_cipher_suites(&[rustls::cipher_suite::TLS13_AES_256_GCM_SHA384]) - .with_safe_default_kx_groups() - .with_protocol_versions(&[&rustls::version::TLS12]) - .err(), - Some(Error::General("no usable cipher suites configured".into())) - ); -} - -#[test] -fn config_builder_for_server_rejects_empty_kx_groups() { - assert_eq!( - ServerConfig::builder() - .with_safe_default_cipher_suites() - .with_kx_groups(&[]) - .with_safe_default_protocol_versions() - .err(), - Some(Error::General("no kx groups configured".into())) - ); -} - -#[test] -fn config_builder_for_server_rejects_empty_cipher_suites() { - assert_eq!( - ServerConfig::builder() - .with_cipher_suites(&[]) - .with_safe_default_kx_groups() - .with_safe_default_protocol_versions() - .err(), - Some(Error::General("no usable cipher suites configured".into())) - ); -} - -#[cfg(feature = "tls12")] -#[test] -fn config_builder_for_server_rejects_incompatible_cipher_suites() { - assert_eq!( - ServerConfig::builder() - .with_cipher_suites(&[rustls::cipher_suite::TLS13_AES_256_GCM_SHA384]) - .with_safe_default_kx_groups() - .with_protocol_versions(&[&rustls::version::TLS12]) - .err(), - Some(Error::General("no usable cipher suites configured".into())) - ); -} - -#[test] -fn buffered_client_data_sent() { - let server_config = Arc::new(make_server_config(KeyType::Rsa)); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions(KeyType::Rsa, &[version]); - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - - assert_eq!(5, client.writer().write(b"hello").unwrap()); - - do_handshake(&mut client, &mut server); - transfer(&mut client, &mut server); - server.process_new_packets().unwrap(); - - check_read(&mut server.reader(), b"hello"); - } -} - -#[test] -fn buffered_server_data_sent() { - let server_config = Arc::new(make_server_config(KeyType::Rsa)); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions(KeyType::Rsa, &[version]); - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - - assert_eq!(5, server.writer().write(b"hello").unwrap()); - - do_handshake(&mut client, &mut server); - transfer(&mut server, &mut client); - client.process_new_packets().unwrap(); - - check_read(&mut client.reader(), b"hello"); - } -} - -#[test] -fn buffered_both_data_sent() { - let server_config = Arc::new(make_server_config(KeyType::Rsa)); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions(KeyType::Rsa, &[version]); - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - - assert_eq!( - 12, - server - .writer() - .write(b"from-server!") - .unwrap() - ); - assert_eq!( - 12, - client - .writer() - .write(b"from-client!") - .unwrap() - ); - - do_handshake(&mut client, &mut server); - - transfer(&mut server, &mut client); - client.process_new_packets().unwrap(); - transfer(&mut client, &mut server); - server.process_new_packets().unwrap(); - - check_read(&mut client.reader(), b"from-server!"); - check_read(&mut server.reader(), b"from-client!"); - } -} - -#[test] -fn client_can_get_server_cert() { - for kt in ALL_KEY_TYPES.iter() { - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions(*kt, &[version]); - let (mut client, mut server) = - make_pair_for_configs(client_config, make_server_config(*kt)); - do_handshake(&mut client, &mut server); - - let certs = client.peer_certificates(); - assert_eq!(certs, Some(kt.get_chain().as_slice())); - } - } -} - -#[test] -fn client_can_get_server_cert_after_resumption() { - for kt in ALL_KEY_TYPES.iter() { - let server_config = make_server_config(*kt); - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions(*kt, &[version]); - let (mut client, mut server) = - make_pair_for_configs(client_config.clone(), server_config.clone()); - do_handshake(&mut client, &mut server); - - let original_certs = client.peer_certificates(); - - let (mut client, mut server) = - make_pair_for_configs(client_config.clone(), server_config.clone()); - do_handshake(&mut client, &mut server); - - let resumed_certs = client.peer_certificates(); - - assert_eq!(original_certs, resumed_certs); - } - } -} - -#[test] -fn server_can_get_client_cert() { - for kt in ALL_KEY_TYPES.iter() { - let server_config = Arc::new(make_server_config_with_mandatory_client_auth(*kt)); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions_with_auth(*kt, &[version]); - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - do_handshake(&mut client, &mut server); - - let certs = server.peer_certificates(); - assert_eq!(certs, Some(kt.get_client_chain().as_slice())); - } - } -} - -#[test] -fn server_can_get_client_cert_after_resumption() { - for kt in ALL_KEY_TYPES.iter() { - let server_config = Arc::new(make_server_config_with_mandatory_client_auth(*kt)); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions_with_auth(*kt, &[version]); - let client_config = Arc::new(client_config); - let (mut client, mut server) = - make_pair_for_arc_configs(&client_config, &server_config); - do_handshake(&mut client, &mut server); - let original_certs = server.peer_certificates(); - - let (mut client, mut server) = - make_pair_for_arc_configs(&client_config, &server_config); - do_handshake(&mut client, &mut server); - let resumed_certs = server.peer_certificates(); - assert_eq!(original_certs, resumed_certs); - } - } -} - -#[test] -fn test_config_builders_debug() { - let b = ServerConfig::builder(); - assert_eq!( - "ConfigBuilder { state: WantsCipherSuites(()) }", - format!("{:?}", b) - ); - let b = b.with_cipher_suites(&[rustls::cipher_suite::TLS13_CHACHA20_POLY1305_SHA256]); - assert_eq!("ConfigBuilder { state: WantsKxGroups { cipher_suites: [TLS13_CHACHA20_POLY1305_SHA256] } }", format!("{:?}", b)); - let b = b.with_kx_groups(&[&rustls::kx_group::X25519]); - assert_eq!("ConfigBuilder { state: WantsVersions { cipher_suites: [TLS13_CHACHA20_POLY1305_SHA256], kx_groups: [X25519] } }", format!("{:?}", b)); - let b = b - .with_protocol_versions(&[&rustls::version::TLS13]) - .unwrap(); - let b = b.with_no_client_auth(); - assert_eq!("ConfigBuilder { state: WantsServerCert { cipher_suites: [TLS13_CHACHA20_POLY1305_SHA256], kx_groups: [X25519], versions: [TLSv1_3], verifier: dyn ClientCertVerifier } }", format!("{:?}", b)); - - let b = ClientConfig::builder(); - assert_eq!( - "ConfigBuilder { state: WantsCipherSuites(()) }", - format!("{:?}", b) - ); - let b = b.with_cipher_suites(&[rustls::cipher_suite::TLS13_CHACHA20_POLY1305_SHA256]); - assert_eq!("ConfigBuilder { state: WantsKxGroups { cipher_suites: [TLS13_CHACHA20_POLY1305_SHA256] } }", format!("{:?}", b)); - let b = b.with_kx_groups(&[&rustls::kx_group::X25519]); - assert_eq!("ConfigBuilder { state: WantsVersions { cipher_suites: [TLS13_CHACHA20_POLY1305_SHA256], kx_groups: [X25519] } }", format!("{:?}", b)); - let b = b - .with_protocol_versions(&[&rustls::version::TLS13]) - .unwrap(); - assert_eq!("ConfigBuilder { state: WantsVerifier { cipher_suites: [TLS13_CHACHA20_POLY1305_SHA256], kx_groups: [X25519], versions: [TLSv1_3] } }", format!("{:?}", b)); -} - -/// Test that the server handles combination of `offer_client_auth()` returning true -/// and `client_auth_mandatory` returning `Some(false)`. This exercises both the -/// client's and server's ability to "recover" from the server asking for a client -/// certificate and not being given one. This also covers the implementation -/// of `AllowAnyAnonymousOrAuthenticatedClient`. -#[test] -fn server_allow_any_anonymous_or_authenticated_client() { - let kt = KeyType::Rsa; - for client_cert_chain in [None, Some(kt.get_client_chain())].iter() { - let client_auth_roots = get_client_root_store(kt); - let client_auth = AllowAnyAnonymousOrAuthenticatedClient::new(client_auth_roots); - - let server_config = ServerConfig::builder() - .with_safe_defaults() - .with_client_cert_verifier(client_auth) - .with_single_cert(kt.get_chain(), kt.get_key()) - .unwrap(); - let server_config = Arc::new(server_config); - - for version in rustls::ALL_VERSIONS { - let client_config = if client_cert_chain.is_some() { - make_client_config_with_versions_with_auth(kt, &[version]) - } else { - make_client_config_with_versions(kt, &[version]) - }; - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - do_handshake(&mut client, &mut server); - - let certs = server.peer_certificates(); - assert_eq!(certs, client_cert_chain.as_deref()); - } - } -} - -fn check_read_and_close(reader: &mut dyn io::Read, expect: &[u8]) { - check_read(reader, expect); - assert!(matches!(reader.read(&mut [0u8; 5]), Ok(0))); -} - -#[test] -fn server_close_notify() { - let kt = KeyType::Rsa; - let server_config = Arc::new(make_server_config_with_mandatory_client_auth(kt)); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions_with_auth(kt, &[version]); - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - do_handshake(&mut client, &mut server); - - // check that alerts don't overtake appdata - assert_eq!( - 12, - server - .writer() - .write(b"from-server!") - .unwrap() - ); - assert_eq!( - 12, - client - .writer() - .write(b"from-client!") - .unwrap() - ); - server.send_close_notify(); - - transfer(&mut server, &mut client); - let io_state = client.process_new_packets().unwrap(); - assert!(io_state.peer_has_closed()); - check_read_and_close(&mut client.reader(), b"from-server!"); - - transfer(&mut client, &mut server); - server.process_new_packets().unwrap(); - check_read(&mut server.reader(), b"from-client!"); - } -} - -#[test] -fn client_close_notify() { - let kt = KeyType::Rsa; - let server_config = Arc::new(make_server_config_with_mandatory_client_auth(kt)); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions_with_auth(kt, &[version]); - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - do_handshake(&mut client, &mut server); - - // check that alerts don't overtake appdata - assert_eq!( - 12, - server - .writer() - .write(b"from-server!") - .unwrap() - ); - assert_eq!( - 12, - client - .writer() - .write(b"from-client!") - .unwrap() - ); - client.send_close_notify(); - - transfer(&mut client, &mut server); - let io_state = server.process_new_packets().unwrap(); - assert!(io_state.peer_has_closed()); - check_read_and_close(&mut server.reader(), b"from-client!"); - - transfer(&mut server, &mut client); - client.process_new_packets().unwrap(); - check_read(&mut client.reader(), b"from-server!"); - } -} - -#[test] -fn server_closes_uncleanly() { - let kt = KeyType::Rsa; - let server_config = Arc::new(make_server_config(kt)); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions(kt, &[version]); - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - do_handshake(&mut client, &mut server); - - // check that unclean EOF reporting does not overtake appdata - assert_eq!( - 12, - server - .writer() - .write(b"from-server!") - .unwrap() - ); - assert_eq!( - 12, - client - .writer() - .write(b"from-client!") - .unwrap() - ); - - transfer(&mut server, &mut client); - transfer_eof(&mut client); - let io_state = client.process_new_packets().unwrap(); - assert!(!io_state.peer_has_closed()); - check_read(&mut client.reader(), b"from-server!"); - - assert!(matches!(client.reader().read(&mut [0u8; 1]), - Err(err) if err.kind() == io::ErrorKind::UnexpectedEof)); - - // may still transmit pending frames - transfer(&mut client, &mut server); - server.process_new_packets().unwrap(); - check_read(&mut server.reader(), b"from-client!"); - } -} - -#[test] -fn client_closes_uncleanly() { - let kt = KeyType::Rsa; - let server_config = Arc::new(make_server_config(kt)); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions(kt, &[version]); - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - do_handshake(&mut client, &mut server); - - // check that unclean EOF reporting does not overtake appdata - assert_eq!( - 12, - server - .writer() - .write(b"from-server!") - .unwrap() - ); - assert_eq!( - 12, - client - .writer() - .write(b"from-client!") - .unwrap() - ); - - transfer(&mut client, &mut server); - transfer_eof(&mut server); - let io_state = server.process_new_packets().unwrap(); - assert!(!io_state.peer_has_closed()); - check_read(&mut server.reader(), b"from-client!"); - - assert!(matches!(server.reader().read(&mut [0u8; 1]), - Err(err) if err.kind() == io::ErrorKind::UnexpectedEof)); - - // may still transmit pending frames - transfer(&mut server, &mut client); - client.process_new_packets().unwrap(); - check_read(&mut client.reader(), b"from-server!"); - } -} - -#[derive(Default)] -struct ServerCheckCertResolve { - expected_sni: Option, - expected_sigalgs: Option>, - expected_alpn: Option>>, - expected_cipher_suites: Option>, -} - -impl ResolvesServerCert for ServerCheckCertResolve { - fn resolve(&self, client_hello: ClientHello) -> Option> { - if client_hello - .signature_schemes() - .is_empty() - { - panic!("no signature schemes shared by client"); - } - - if client_hello.cipher_suites().is_empty() { - panic!("no cipher suites shared by client"); - } - - if let Some(expected_sni) = &self.expected_sni { - let sni: &str = client_hello - .server_name() - .expect("sni unexpectedly absent"); - assert_eq!(expected_sni, sni); - } - - if let Some(expected_sigalgs) = &self.expected_sigalgs { - assert_eq!( - expected_sigalgs, - client_hello.signature_schemes(), - "unexpected signature schemes" - ); - } - - if let Some(expected_alpn) = &self.expected_alpn { - let alpn = client_hello - .alpn() - .expect("alpn unexpectedly absent") - .collect::>(); - assert_eq!(alpn.len(), expected_alpn.len()); - - for (got, wanted) in alpn.iter().zip(expected_alpn.iter()) { - assert_eq!(got, &wanted.as_slice()); - } - } - - if let Some(expected_cipher_suites) = &self.expected_cipher_suites { - assert_eq!( - expected_cipher_suites, - client_hello.cipher_suites(), - "unexpected cipher suites" - ); - } - - None - } -} - -#[test] -fn server_cert_resolve_with_sni() { - for kt in ALL_KEY_TYPES.iter() { - let client_config = make_client_config(*kt); - let mut server_config = make_server_config(*kt); - - server_config.cert_resolver = Arc::new(ServerCheckCertResolve { - expected_sni: Some("the-value-from-sni".into()), - ..Default::default() - }); - - let mut client = - ClientConnection::new(Arc::new(client_config), dns_name("the-value-from-sni")).unwrap(); - let mut server = ServerConnection::new(Arc::new(server_config)).unwrap(); - - let err = do_handshake_until_error(&mut client, &mut server); - assert!(err.is_err()); - } -} - -#[test] -fn server_cert_resolve_with_alpn() { - for kt in ALL_KEY_TYPES.iter() { - let mut client_config = make_client_config(*kt); - client_config.alpn_protocols = vec!["foo".into(), "bar".into()]; - - let mut server_config = make_server_config(*kt); - server_config.cert_resolver = Arc::new(ServerCheckCertResolve { - expected_alpn: Some(vec![b"foo".to_vec(), b"bar".to_vec()]), - ..Default::default() - }); - - let mut client = - ClientConnection::new(Arc::new(client_config), dns_name("sni-value")).unwrap(); - let mut server = ServerConnection::new(Arc::new(server_config)).unwrap(); - - let err = do_handshake_until_error(&mut client, &mut server); - assert!(err.is_err()); - } -} - -#[test] -fn client_trims_terminating_dot() { - for kt in ALL_KEY_TYPES.iter() { - let client_config = make_client_config(*kt); - let mut server_config = make_server_config(*kt); - - server_config.cert_resolver = Arc::new(ServerCheckCertResolve { - expected_sni: Some("some-host.com".into()), - ..Default::default() - }); - - let mut client = - ClientConnection::new(Arc::new(client_config), dns_name("some-host.com.")).unwrap(); - let mut server = ServerConnection::new(Arc::new(server_config)).unwrap(); - - let err = do_handshake_until_error(&mut client, &mut server); - assert!(err.is_err()); - } -} - -#[cfg(feature = "tls12")] -fn check_sigalgs_reduced_by_ciphersuite( - kt: KeyType, - suite: CipherSuite, - expected_sigalgs: Vec, -) { - let client_config = finish_client_config( - kt, - ClientConfig::builder() - .with_cipher_suites(&[find_suite(suite)]) - .with_safe_default_kx_groups() - .with_safe_default_protocol_versions() - .unwrap(), - ); - - let mut server_config = make_server_config(kt); - - server_config.cert_resolver = Arc::new(ServerCheckCertResolve { - expected_sigalgs: Some(expected_sigalgs), - expected_cipher_suites: Some(vec![suite, CipherSuite::TLS_EMPTY_RENEGOTIATION_INFO_SCSV]), - ..Default::default() - }); - - let mut client = ClientConnection::new(Arc::new(client_config), dns_name("localhost")).unwrap(); - let mut server = ServerConnection::new(Arc::new(server_config)).unwrap(); - - let err = do_handshake_until_error(&mut client, &mut server); - assert!(err.is_err()); -} - -#[cfg(feature = "tls12")] -#[test] -fn server_cert_resolve_reduces_sigalgs_for_rsa_ciphersuite() { - check_sigalgs_reduced_by_ciphersuite( - KeyType::Rsa, - CipherSuite::TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, - vec![ - SignatureScheme::RSA_PSS_SHA512, - SignatureScheme::RSA_PSS_SHA384, - SignatureScheme::RSA_PSS_SHA256, - SignatureScheme::RSA_PKCS1_SHA512, - SignatureScheme::RSA_PKCS1_SHA384, - SignatureScheme::RSA_PKCS1_SHA256, - ], - ); -} - -#[cfg(feature = "tls12")] -#[test] -fn server_cert_resolve_reduces_sigalgs_for_ecdsa_ciphersuite() { - check_sigalgs_reduced_by_ciphersuite( - KeyType::Ecdsa, - CipherSuite::TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, - vec![ - SignatureScheme::ECDSA_NISTP384_SHA384, - SignatureScheme::ECDSA_NISTP256_SHA256, - SignatureScheme::ED25519, - ], - ); -} - -struct ServerCheckNoSNI {} - -impl ResolvesServerCert for ServerCheckNoSNI { - fn resolve(&self, client_hello: ClientHello) -> Option> { - assert!(client_hello.server_name().is_none()); - - None - } -} - -#[test] -fn client_with_sni_disabled_does_not_send_sni() { - for kt in ALL_KEY_TYPES.iter() { - let mut server_config = make_server_config(*kt); - server_config.cert_resolver = Arc::new(ServerCheckNoSNI {}); - let server_config = Arc::new(server_config); - - for version in rustls::ALL_VERSIONS { - let mut client_config = make_client_config_with_versions(*kt, &[version]); - client_config.enable_sni = false; - - let mut client = - ClientConnection::new(Arc::new(client_config), dns_name("value-not-sent")).unwrap(); - let mut server = ServerConnection::new(Arc::clone(&server_config)).unwrap(); - - let err = do_handshake_until_error(&mut client, &mut server); - assert!(err.is_err()); - } - } -} - -#[test] -fn client_checks_server_certificate_with_given_name() { - for kt in ALL_KEY_TYPES.iter() { - let server_config = Arc::new(make_server_config(*kt)); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions(*kt, &[version]); - let mut client = ClientConnection::new( - Arc::new(client_config), - dns_name("not-the-right-hostname.com"), - ) - .unwrap(); - let mut server = ServerConnection::new(Arc::clone(&server_config)).unwrap(); - - let err = do_handshake_until_error(&mut client, &mut server); - assert_eq!( - err, - Err(ErrorFromPeer::Client(Error::InvalidCertificateData( - "invalid peer certificate: CertNotValidForName".into(), - ))) - ); - } - } -} - -struct ClientCheckCertResolve { - query_count: AtomicUsize, - expect_queries: usize, -} - -impl ClientCheckCertResolve { - fn new(expect_queries: usize) -> Self { - ClientCheckCertResolve { - query_count: AtomicUsize::new(0), - expect_queries, - } - } -} - -impl Drop for ClientCheckCertResolve { - fn drop(&mut self) { - if !std::thread::panicking() { - let count = self.query_count.load(Ordering::SeqCst); - assert_eq!(count, self.expect_queries); - } - } -} - -impl ResolvesClientCert for ClientCheckCertResolve { - fn resolve( - &self, - acceptable_issuers: &[&[u8]], - sigschemes: &[SignatureScheme], - ) -> Option> { - self.query_count - .fetch_add(1, Ordering::SeqCst); - - if acceptable_issuers.is_empty() { - panic!("no issuers offered by server"); - } - - if sigschemes.is_empty() { - panic!("no signature schemes shared by server"); - } - - None - } - - fn has_certs(&self) -> bool { - true - } -} - -#[test] -fn client_cert_resolve() { - for kt in ALL_KEY_TYPES.iter() { - let server_config = Arc::new(make_server_config_with_mandatory_client_auth(*kt)); - - for version in rustls::ALL_VERSIONS { - let mut client_config = make_client_config_with_versions(*kt, &[version]); - client_config.client_auth_cert_resolver = Arc::new(ClientCheckCertResolve::new(1)); - - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - - assert_eq!( - do_handshake_until_error(&mut client, &mut server), - Err(ErrorFromPeer::Server(Error::NoCertificatesPresented)) - ); - } - } -} - -#[test] -fn client_auth_works() { - for kt in ALL_KEY_TYPES.iter() { - let server_config = Arc::new(make_server_config_with_mandatory_client_auth(*kt)); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions_with_auth(*kt, &[version]); - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - do_handshake(&mut client, &mut server); - } - } -} - -#[test] -fn client_error_is_sticky() { - let (mut client, _) = make_pair(KeyType::Rsa); - client - .read_tls(&mut b"\x16\x03\x03\x00\x08\x0f\x00\x00\x04junk".as_ref()) - .unwrap(); - let mut err = client.process_new_packets(); - assert!(err.is_err()); - err = client.process_new_packets(); - assert!(err.is_err()); -} - -#[test] -fn server_error_is_sticky() { - let (_, mut server) = make_pair(KeyType::Rsa); - server - .read_tls(&mut b"\x16\x03\x03\x00\x08\x0f\x00\x00\x04junk".as_ref()) - .unwrap(); - let mut err = server.process_new_packets(); - assert!(err.is_err()); - err = server.process_new_packets(); - assert!(err.is_err()); -} - -#[test] -fn server_flush_does_nothing() { - let (_, mut server) = make_pair(KeyType::Rsa); - assert!(matches!(server.writer().flush(), Ok(()))); -} - -#[test] -fn client_flush_does_nothing() { - let (mut client, _) = make_pair(KeyType::Rsa); - assert!(matches!(client.writer().flush(), Ok(()))); -} - -#[test] -fn server_is_send_and_sync() { - let (_, server) = make_pair(KeyType::Rsa); - &server as &dyn Send; - &server as &dyn Sync; -} - -#[test] -fn client_is_send_and_sync() { - let (client, _) = make_pair(KeyType::Rsa); - &client as &dyn Send; - &client as &dyn Sync; -} - -#[test] -fn server_respects_buffer_limit_pre_handshake() { - let (mut client, mut server) = make_pair(KeyType::Rsa); - - server.set_buffer_limit(Some(32)); - - assert_eq!( - server - .writer() - .write(b"01234567890123456789") - .unwrap(), - 20 - ); - assert_eq!( - server - .writer() - .write(b"01234567890123456789") - .unwrap(), - 12 - ); - - do_handshake(&mut client, &mut server); - transfer(&mut server, &mut client); - client.process_new_packets().unwrap(); - - check_read(&mut client.reader(), b"01234567890123456789012345678901"); -} - -#[test] -fn server_respects_buffer_limit_pre_handshake_with_vectored_write() { - let (mut client, mut server) = make_pair(KeyType::Rsa); - - server.set_buffer_limit(Some(32)); - - assert_eq!( - server - .writer() - .write_vectored(&[ - IoSlice::new(b"01234567890123456789"), - IoSlice::new(b"01234567890123456789") - ]) - .unwrap(), - 32 - ); - - do_handshake(&mut client, &mut server); - transfer(&mut server, &mut client); - client.process_new_packets().unwrap(); - - check_read(&mut client.reader(), b"01234567890123456789012345678901"); -} - -#[test] -fn server_respects_buffer_limit_post_handshake() { - let (mut client, mut server) = make_pair(KeyType::Rsa); - - // this test will vary in behaviour depending on the default suites - do_handshake(&mut client, &mut server); - server.set_buffer_limit(Some(48)); - - assert_eq!( - server - .writer() - .write(b"01234567890123456789") - .unwrap(), - 20 - ); - assert_eq!( - server - .writer() - .write(b"01234567890123456789") - .unwrap(), - 6 - ); - - transfer(&mut server, &mut client); - client.process_new_packets().unwrap(); - - check_read(&mut client.reader(), b"01234567890123456789012345"); -} - -#[test] -fn client_respects_buffer_limit_pre_handshake() { - let (mut client, mut server) = make_pair(KeyType::Rsa); - - client.set_buffer_limit(Some(32)); - - assert_eq!( - client - .writer() - .write(b"01234567890123456789") - .unwrap(), - 20 - ); - assert_eq!( - client - .writer() - .write(b"01234567890123456789") - .unwrap(), - 12 - ); - - do_handshake(&mut client, &mut server); - transfer(&mut client, &mut server); - server.process_new_packets().unwrap(); - - check_read(&mut server.reader(), b"01234567890123456789012345678901"); -} - -#[test] -fn client_respects_buffer_limit_pre_handshake_with_vectored_write() { - let (mut client, mut server) = make_pair(KeyType::Rsa); - - client.set_buffer_limit(Some(32)); - - assert_eq!( - client - .writer() - .write_vectored(&[ - IoSlice::new(b"01234567890123456789"), - IoSlice::new(b"01234567890123456789") - ]) - .unwrap(), - 32 - ); - - do_handshake(&mut client, &mut server); - transfer(&mut client, &mut server); - server.process_new_packets().unwrap(); - - check_read(&mut server.reader(), b"01234567890123456789012345678901"); -} - -#[test] -fn client_respects_buffer_limit_post_handshake() { - let (mut client, mut server) = make_pair(KeyType::Rsa); - - do_handshake(&mut client, &mut server); - client.set_buffer_limit(Some(48)); - - assert_eq!( - client - .writer() - .write(b"01234567890123456789") - .unwrap(), - 20 - ); - assert_eq!( - client - .writer() - .write(b"01234567890123456789") - .unwrap(), - 6 - ); - - transfer(&mut client, &mut server); - server.process_new_packets().unwrap(); - - check_read(&mut server.reader(), b"01234567890123456789012345"); -} - -struct OtherSession<'a, C, S> -where - C: DerefMut + Deref>, - S: SideData, -{ - sess: &'a mut C, - pub reads: usize, - pub writevs: Vec>, - fail_ok: bool, - pub short_writes: bool, - pub last_error: Option, -} - -impl<'a, C, S> OtherSession<'a, C, S> -where - C: DerefMut + Deref>, - S: SideData, -{ - fn new(sess: &'a mut C) -> OtherSession<'a, C, S> { - OtherSession { - sess, - reads: 0, - writevs: vec![], - fail_ok: false, - short_writes: false, - last_error: None, - } - } - - fn new_fails(sess: &'a mut C) -> OtherSession<'a, C, S> { - let mut os = OtherSession::new(sess); - os.fail_ok = true; - os - } -} - -impl<'a, C, S> io::Read for OtherSession<'a, C, S> -where - C: DerefMut + Deref>, - S: SideData, -{ - fn read(&mut self, mut b: &mut [u8]) -> io::Result { - self.reads += 1; - self.sess.write_tls(b.by_ref()) - } -} - -impl<'a, C, S> io::Write for OtherSession<'a, C, S> -where - C: DerefMut + Deref>, - S: SideData, -{ - fn write(&mut self, _: &[u8]) -> io::Result { - unreachable!() - } - - fn flush(&mut self) -> io::Result<()> { - Ok(()) - } - - fn write_vectored<'b>(&mut self, b: &[io::IoSlice<'b>]) -> io::Result { - let mut total = 0; - let mut lengths = vec![]; - for bytes in b { - let write_len = if self.short_writes { - if bytes.len() > 5 { - bytes.len() / 2 - } else { - bytes.len() - } - } else { - bytes.len() - }; - - let l = self - .sess - .read_tls(&mut io::Cursor::new(&bytes[..write_len]))?; - lengths.push(l); - total += l; - if bytes.len() != l { - break; - } - } - - let rc = self.sess.process_new_packets(); - if !self.fail_ok { - rc.unwrap(); - } else if rc.is_err() { - self.last_error = rc.err(); - } - - self.writevs.push(lengths); - Ok(total) - } -} - -#[test] -fn server_read_returns_wouldblock_when_no_data() { - let (_, mut server) = make_pair(KeyType::Rsa); - assert!(matches!(server.reader().read(&mut [0u8; 1]), - Err(err) if err.kind() == io::ErrorKind::WouldBlock)); -} - -#[test] -fn client_read_returns_wouldblock_when_no_data() { - let (mut client, _) = make_pair(KeyType::Rsa); - assert!(matches!(client.reader().read(&mut [0u8; 1]), - Err(err) if err.kind() == io::ErrorKind::WouldBlock)); -} - -#[test] -fn new_server_returns_initial_io_state() { - let (_, mut server) = make_pair(KeyType::Rsa); - let io_state = server.process_new_packets().unwrap(); - println!("IoState is Debug {:?}", io_state); - assert_eq!(io_state.plaintext_bytes_to_read(), 0); - assert!(!io_state.peer_has_closed()); - assert_eq!(io_state.tls_bytes_to_write(), 0); -} - -#[test] -fn new_client_returns_initial_io_state() { - let (mut client, _) = make_pair(KeyType::Rsa); - let io_state = client.process_new_packets().unwrap(); - println!("IoState is Debug {:?}", io_state); - assert_eq!(io_state.plaintext_bytes_to_read(), 0); - assert!(!io_state.peer_has_closed()); - assert!(io_state.tls_bytes_to_write() > 200); -} - -#[test] -fn client_complete_io_for_handshake() { - let (mut client, mut server) = make_pair(KeyType::Rsa); - - assert!(client.is_handshaking()); - let (rdlen, wrlen) = client - .complete_io(&mut OtherSession::new(&mut server)) - .unwrap(); - assert!(rdlen > 0 && wrlen > 0); - assert!(!client.is_handshaking()); -} - -#[test] -fn client_complete_io_for_handshake_eof() { - let (mut client, _) = make_pair(KeyType::Rsa); - let mut input = io::Cursor::new(Vec::new()); - - assert!(client.is_handshaking()); - let err = client - .complete_io(&mut input) - .unwrap_err(); - assert_eq!(io::ErrorKind::UnexpectedEof, err.kind()); -} - -#[test] -fn client_complete_io_for_write() { - for kt in ALL_KEY_TYPES.iter() { - let (mut client, mut server) = make_pair(*kt); - - do_handshake(&mut client, &mut server); - - client - .writer() - .write_all(b"01234567890123456789") - .unwrap(); - client - .writer() - .write_all(b"01234567890123456789") - .unwrap(); - { - let mut pipe = OtherSession::new(&mut server); - let (rdlen, wrlen) = client.complete_io(&mut pipe).unwrap(); - assert!(rdlen == 0 && wrlen > 0); - println!("{:?}", pipe.writevs); - assert_eq!(pipe.writevs, vec![vec![42, 42]]); - } - check_read( - &mut server.reader(), - b"0123456789012345678901234567890123456789", - ); - } -} - -#[test] -fn client_complete_io_for_read() { - for kt in ALL_KEY_TYPES.iter() { - let (mut client, mut server) = make_pair(*kt); - - do_handshake(&mut client, &mut server); - - server - .writer() - .write_all(b"01234567890123456789") - .unwrap(); - { - let mut pipe = OtherSession::new(&mut server); - let (rdlen, wrlen) = client.complete_io(&mut pipe).unwrap(); - assert!(rdlen > 0 && wrlen == 0); - assert_eq!(pipe.reads, 1); - } - check_read(&mut client.reader(), b"01234567890123456789"); - } -} - -#[test] -fn server_complete_io_for_handshake() { - for kt in ALL_KEY_TYPES.iter() { - let (mut client, mut server) = make_pair(*kt); - - assert!(server.is_handshaking()); - let (rdlen, wrlen) = server - .complete_io(&mut OtherSession::new(&mut client)) - .unwrap(); - assert!(rdlen > 0 && wrlen > 0); - assert!(!server.is_handshaking()); - } -} - -#[test] -fn server_complete_io_for_handshake_eof() { - let (_, mut server) = make_pair(KeyType::Rsa); - let mut input = io::Cursor::new(Vec::new()); - - assert!(server.is_handshaking()); - let err = server - .complete_io(&mut input) - .unwrap_err(); - assert_eq!(io::ErrorKind::UnexpectedEof, err.kind()); -} - -#[test] -fn server_complete_io_for_write() { - for kt in ALL_KEY_TYPES.iter() { - let (mut client, mut server) = make_pair(*kt); - - do_handshake(&mut client, &mut server); - - server - .writer() - .write_all(b"01234567890123456789") - .unwrap(); - server - .writer() - .write_all(b"01234567890123456789") - .unwrap(); - { - let mut pipe = OtherSession::new(&mut client); - let (rdlen, wrlen) = server.complete_io(&mut pipe).unwrap(); - assert!(rdlen == 0 && wrlen > 0); - assert_eq!(pipe.writevs, vec![vec![42, 42]]); - } - check_read( - &mut client.reader(), - b"0123456789012345678901234567890123456789", - ); - } -} - -#[test] -fn server_complete_io_for_read() { - for kt in ALL_KEY_TYPES.iter() { - let (mut client, mut server) = make_pair(*kt); - - do_handshake(&mut client, &mut server); - - client - .writer() - .write_all(b"01234567890123456789") - .unwrap(); - { - let mut pipe = OtherSession::new(&mut client); - let (rdlen, wrlen) = server.complete_io(&mut pipe).unwrap(); - assert!(rdlen > 0 && wrlen == 0); - assert_eq!(pipe.reads, 1); - } - check_read(&mut server.reader(), b"01234567890123456789"); - } -} - -#[test] -fn client_stream_write() { - for kt in ALL_KEY_TYPES.iter() { - let (mut client, mut server) = make_pair(*kt); - - { - let mut pipe = OtherSession::new(&mut server); - let mut stream = Stream::new(&mut client, &mut pipe); - assert_eq!(stream.write(b"hello").unwrap(), 5); - } - check_read(&mut server.reader(), b"hello"); - } -} - -#[test] -fn client_streamowned_write() { - for kt in ALL_KEY_TYPES.iter() { - let (client, mut server) = make_pair(*kt); - - { - let pipe = OtherSession::new(&mut server); - let mut stream = StreamOwned::new(client, pipe); - assert_eq!(stream.write(b"hello").unwrap(), 5); - } - check_read(&mut server.reader(), b"hello"); - } -} - -#[test] -fn client_stream_read() { - for kt in ALL_KEY_TYPES.iter() { - let (mut client, mut server) = make_pair(*kt); - - server - .writer() - .write_all(b"world") - .unwrap(); - - { - let mut pipe = OtherSession::new(&mut server); - let mut stream = Stream::new(&mut client, &mut pipe); - check_read(&mut stream, b"world"); - } - } -} - -#[test] -fn client_streamowned_read() { - for kt in ALL_KEY_TYPES.iter() { - let (client, mut server) = make_pair(*kt); - - server - .writer() - .write_all(b"world") - .unwrap(); - - { - let pipe = OtherSession::new(&mut server); - let mut stream = StreamOwned::new(client, pipe); - check_read(&mut stream, b"world"); - } - } -} - -#[test] -fn server_stream_write() { - for kt in ALL_KEY_TYPES.iter() { - let (mut client, mut server) = make_pair(*kt); - - { - let mut pipe = OtherSession::new(&mut client); - let mut stream = Stream::new(&mut server, &mut pipe); - assert_eq!(stream.write(b"hello").unwrap(), 5); - } - check_read(&mut client.reader(), b"hello"); - } -} - -#[test] -fn server_streamowned_write() { - for kt in ALL_KEY_TYPES.iter() { - let (mut client, server) = make_pair(*kt); - - { - let pipe = OtherSession::new(&mut client); - let mut stream = StreamOwned::new(server, pipe); - assert_eq!(stream.write(b"hello").unwrap(), 5); - } - check_read(&mut client.reader(), b"hello"); - } -} - -#[test] -fn server_stream_read() { - for kt in ALL_KEY_TYPES.iter() { - let (mut client, mut server) = make_pair(*kt); - - client - .writer() - .write_all(b"world") - .unwrap(); - - { - let mut pipe = OtherSession::new(&mut client); - let mut stream = Stream::new(&mut server, &mut pipe); - check_read(&mut stream, b"world"); - } - } -} - -#[test] -fn server_streamowned_read() { - for kt in ALL_KEY_TYPES.iter() { - let (mut client, server) = make_pair(*kt); - - client - .writer() - .write_all(b"world") - .unwrap(); - - { - let pipe = OtherSession::new(&mut client); - let mut stream = StreamOwned::new(server, pipe); - check_read(&mut stream, b"world"); - } - } -} - -struct FailsWrites { - errkind: io::ErrorKind, - after: usize, -} - -impl io::Read for FailsWrites { - fn read(&mut self, _b: &mut [u8]) -> io::Result { - Ok(0) - } -} - -impl io::Write for FailsWrites { - fn write(&mut self, b: &[u8]) -> io::Result { - if self.after > 0 { - self.after -= 1; - Ok(b.len()) - } else { - Err(io::Error::new(self.errkind, "oops")) - } - } - - fn flush(&mut self) -> io::Result<()> { - Ok(()) - } -} - -#[test] -fn stream_write_reports_underlying_io_error_before_plaintext_processed() { - let (mut client, mut server) = make_pair(KeyType::Rsa); - do_handshake(&mut client, &mut server); - - let mut pipe = FailsWrites { - errkind: io::ErrorKind::ConnectionAborted, - after: 0, - }; - client - .writer() - .write_all(b"hello") - .unwrap(); - let mut client_stream = Stream::new(&mut client, &mut pipe); - let rc = client_stream.write(b"world"); - assert!(rc.is_err()); - let err = rc.err().unwrap(); - assert_eq!(err.kind(), io::ErrorKind::ConnectionAborted); -} - -#[test] -fn stream_write_swallows_underlying_io_error_after_plaintext_processed() { - let (mut client, mut server) = make_pair(KeyType::Rsa); - do_handshake(&mut client, &mut server); - - let mut pipe = FailsWrites { - errkind: io::ErrorKind::ConnectionAborted, - after: 1, - }; - client - .writer() - .write_all(b"hello") - .unwrap(); - let mut client_stream = Stream::new(&mut client, &mut pipe); - let rc = client_stream.write(b"world"); - assert_eq!(format!("{:?}", rc), "Ok(5)"); -} - -fn make_disjoint_suite_configs() -> (ClientConfig, ServerConfig) { - let kt = KeyType::Rsa; - let server_config = finish_server_config( - kt, - ServerConfig::builder() - .with_cipher_suites(&[rustls::cipher_suite::TLS13_CHACHA20_POLY1305_SHA256]) - .with_safe_default_kx_groups() - .with_safe_default_protocol_versions() - .unwrap(), - ); - - let client_config = finish_client_config( - kt, - ClientConfig::builder() - .with_cipher_suites(&[rustls::cipher_suite::TLS13_AES_256_GCM_SHA384]) - .with_safe_default_kx_groups() - .with_safe_default_protocol_versions() - .unwrap(), - ); - - (client_config, server_config) -} - -#[test] -fn client_stream_handshake_error() { - let (client_config, server_config) = make_disjoint_suite_configs(); - let (mut client, mut server) = make_pair_for_configs(client_config, server_config); - - { - let mut pipe = OtherSession::new_fails(&mut server); - let mut client_stream = Stream::new(&mut client, &mut pipe); - let rc = client_stream.write(b"hello"); - assert!(rc.is_err()); - assert_eq!( - format!("{:?}", rc), - "Err(Custom { kind: InvalidData, error: AlertReceived(HandshakeFailure) })" - ); - let rc = client_stream.write(b"hello"); - assert!(rc.is_err()); - assert_eq!( - format!("{:?}", rc), - "Err(Custom { kind: InvalidData, error: AlertReceived(HandshakeFailure) })" - ); - } -} - -#[test] -fn client_streamowned_handshake_error() { - let (client_config, server_config) = make_disjoint_suite_configs(); - let (client, mut server) = make_pair_for_configs(client_config, server_config); - - let pipe = OtherSession::new_fails(&mut server); - let mut client_stream = StreamOwned::new(client, pipe); - let rc = client_stream.write(b"hello"); - assert!(rc.is_err()); - assert_eq!( - format!("{:?}", rc), - "Err(Custom { kind: InvalidData, error: AlertReceived(HandshakeFailure) })" - ); - let rc = client_stream.write(b"hello"); - assert!(rc.is_err()); - assert_eq!( - format!("{:?}", rc), - "Err(Custom { kind: InvalidData, error: AlertReceived(HandshakeFailure) })" - ); -} - -#[test] -fn server_stream_handshake_error() { - let (client_config, server_config) = make_disjoint_suite_configs(); - let (mut client, mut server) = make_pair_for_configs(client_config, server_config); - - client - .writer() - .write_all(b"world") - .unwrap(); - - { - let mut pipe = OtherSession::new_fails(&mut client); - let mut server_stream = Stream::new(&mut server, &mut pipe); - let mut bytes = [0u8; 5]; - let rc = server_stream.read(&mut bytes); - assert!(rc.is_err()); - assert_eq!( - format!("{:?}", rc), - "Err(Custom { kind: InvalidData, error: PeerIncompatibleError(\"no ciphersuites in common\") })" - ); - } -} - -#[test] -fn server_streamowned_handshake_error() { - let (client_config, server_config) = make_disjoint_suite_configs(); - let (mut client, server) = make_pair_for_configs(client_config, server_config); - - client - .writer() - .write_all(b"world") - .unwrap(); - - let pipe = OtherSession::new_fails(&mut client); - let mut server_stream = StreamOwned::new(server, pipe); - let mut bytes = [0u8; 5]; - let rc = server_stream.read(&mut bytes); - assert!(rc.is_err()); - assert_eq!( - format!("{:?}", rc), - "Err(Custom { kind: InvalidData, error: PeerIncompatibleError(\"no ciphersuites in common\") })" - ); -} - -#[test] -fn server_config_is_clone() { - let _ = make_server_config(KeyType::Rsa); -} - -#[test] -fn client_config_is_clone() { - let _ = make_client_config(KeyType::Rsa); -} - -#[test] -fn client_connection_is_debug() { - let (client, _) = make_pair(KeyType::Rsa); - println!("{:?}", client); -} - -#[test] -fn server_connection_is_debug() { - let (_, server) = make_pair(KeyType::Rsa); - println!("{:?}", server); -} - -#[test] -fn server_complete_io_for_handshake_ending_with_alert() { - let (client_config, server_config) = make_disjoint_suite_configs(); - let (mut client, mut server) = make_pair_for_configs(client_config, server_config); - - assert!(server.is_handshaking()); - - let mut pipe = OtherSession::new_fails(&mut client); - let rc = server.complete_io(&mut pipe); - assert!(rc.is_err(), "server io failed due to handshake failure"); - assert!(!server.wants_write(), "but server did send its alert"); - assert_eq!( - format!("{:?}", pipe.last_error), - "Some(AlertReceived(HandshakeFailure))", - "which was received by client" - ); -} - -#[test] -fn server_exposes_offered_sni() { - let kt = KeyType::Rsa; - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions(kt, &[version]); - let mut client = - ClientConnection::new(Arc::new(client_config), dns_name("second.testserver.com")) - .unwrap(); - let mut server = ServerConnection::new(Arc::new(make_server_config(kt))).unwrap(); - - assert_eq!(None, server.sni_hostname()); - do_handshake(&mut client, &mut server); - assert_eq!(Some("second.testserver.com"), server.sni_hostname()); - } -} - -#[test] -fn server_exposes_offered_sni_smashed_to_lowercase() { - // webpki actually does this for us in its DnsName type - let kt = KeyType::Rsa; - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions(kt, &[version]); - let mut client = - ClientConnection::new(Arc::new(client_config), dns_name("SECOND.TESTServer.com")) - .unwrap(); - let mut server = ServerConnection::new(Arc::new(make_server_config(kt))).unwrap(); - - assert_eq!(None, server.sni_hostname()); - do_handshake(&mut client, &mut server); - assert_eq!(Some("second.testserver.com"), server.sni_hostname()); - } -} - -#[test] -fn server_exposes_offered_sni_even_if_resolver_fails() { - let kt = KeyType::Rsa; - let resolver = rustls::server::ResolvesServerCertUsingSni::new(); - - let mut server_config = make_server_config(kt); - server_config.cert_resolver = Arc::new(resolver); - let server_config = Arc::new(server_config); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions(kt, &[version]); - let mut server = ServerConnection::new(Arc::clone(&server_config)).unwrap(); - let mut client = - ClientConnection::new(Arc::new(client_config), dns_name("thisdoesNOTexist.com")) - .unwrap(); - - assert_eq!(None, server.sni_hostname()); - transfer(&mut client, &mut server); - assert_eq!( - server.process_new_packets(), - Err(Error::General( - "no server certificate chain resolved".to_string() - )) - ); - assert_eq!(Some("thisdoesnotexist.com"), server.sni_hostname()); - } -} - -#[test] -fn sni_resolver_works() { - let kt = KeyType::Rsa; - let mut resolver = rustls::server::ResolvesServerCertUsingSni::new(); - let signing_key = sign::RsaSigningKey::new(&kt.get_key()).unwrap(); - let signing_key: Arc = Arc::new(signing_key); - resolver - .add( - "localhost", - sign::CertifiedKey::new(kt.get_chain(), signing_key.clone()), - ) - .unwrap(); - - let mut server_config = make_server_config(kt); - server_config.cert_resolver = Arc::new(resolver); - let server_config = Arc::new(server_config); - - let mut server1 = ServerConnection::new(Arc::clone(&server_config)).unwrap(); - let mut client1 = - ClientConnection::new(Arc::new(make_client_config(kt)), dns_name("localhost")).unwrap(); - let err = do_handshake_until_error(&mut client1, &mut server1); - assert_eq!(err, Ok(())); - - let mut server2 = ServerConnection::new(Arc::clone(&server_config)).unwrap(); - let mut client2 = - ClientConnection::new(Arc::new(make_client_config(kt)), dns_name("notlocalhost")).unwrap(); - let err = do_handshake_until_error(&mut client2, &mut server2); - assert_eq!( - err, - Err(ErrorFromPeer::Server(Error::General( - "no server certificate chain resolved".into() - ))) - ); -} - -#[test] -fn sni_resolver_rejects_wrong_names() { - let kt = KeyType::Rsa; - let mut resolver = rustls::server::ResolvesServerCertUsingSni::new(); - let signing_key = sign::RsaSigningKey::new(&kt.get_key()).unwrap(); - let signing_key: Arc = Arc::new(signing_key); - - assert_eq!( - Ok(()), - resolver.add( - "localhost", - sign::CertifiedKey::new(kt.get_chain(), signing_key.clone()) - ) - ); - assert_eq!( - Err(Error::General( - "The server certificate is not valid for the given name".into() - )), - resolver.add( - "not-localhost", - sign::CertifiedKey::new(kt.get_chain(), signing_key.clone()) - ) - ); - assert_eq!( - Err(Error::General("Bad DNS name".into())), - resolver.add( - "not ascii 🦀", - sign::CertifiedKey::new(kt.get_chain(), signing_key.clone()) - ) - ); -} - -#[test] -fn sni_resolver_lower_cases_configured_names() { - let kt = KeyType::Rsa; - let mut resolver = rustls::server::ResolvesServerCertUsingSni::new(); - let signing_key = sign::RsaSigningKey::new(&kt.get_key()).unwrap(); - let signing_key: Arc = Arc::new(signing_key); - - assert_eq!( - Ok(()), - resolver.add( - "LOCALHOST", - sign::CertifiedKey::new(kt.get_chain(), signing_key.clone()) - ) - ); - - let mut server_config = make_server_config(kt); - server_config.cert_resolver = Arc::new(resolver); - let server_config = Arc::new(server_config); - - let mut server1 = ServerConnection::new(Arc::clone(&server_config)).unwrap(); - let mut client1 = - ClientConnection::new(Arc::new(make_client_config(kt)), dns_name("localhost")).unwrap(); - let err = do_handshake_until_error(&mut client1, &mut server1); - assert_eq!(err, Ok(())); -} - -#[test] -fn sni_resolver_lower_cases_queried_names() { - // actually, the handshake parser does this, but the effect is the same. - let kt = KeyType::Rsa; - let mut resolver = rustls::server::ResolvesServerCertUsingSni::new(); - let signing_key = sign::RsaSigningKey::new(&kt.get_key()).unwrap(); - let signing_key: Arc = Arc::new(signing_key); - - assert_eq!( - Ok(()), - resolver.add( - "localhost", - sign::CertifiedKey::new(kt.get_chain(), signing_key.clone()) - ) - ); - - let mut server_config = make_server_config(kt); - server_config.cert_resolver = Arc::new(resolver); - let server_config = Arc::new(server_config); - - let mut server1 = ServerConnection::new(Arc::clone(&server_config)).unwrap(); - let mut client1 = - ClientConnection::new(Arc::new(make_client_config(kt)), dns_name("LOCALHOST")).unwrap(); - let err = do_handshake_until_error(&mut client1, &mut server1); - assert_eq!(err, Ok(())); -} - -#[test] -fn sni_resolver_rejects_bad_certs() { - let kt = KeyType::Rsa; - let mut resolver = rustls::server::ResolvesServerCertUsingSni::new(); - let signing_key = sign::RsaSigningKey::new(&kt.get_key()).unwrap(); - let signing_key: Arc = Arc::new(signing_key); - - assert_eq!( - Err(Error::General( - "No end-entity certificate in certificate chain".into() - )), - resolver.add( - "localhost", - sign::CertifiedKey::new(vec![], signing_key.clone()) - ) - ); - - let bad_chain = vec![rustls::Certificate(vec![0xa0])]; - assert_eq!( - Err(Error::General( - "End-entity certificate in certificate chain is syntactically invalid".into() - )), - resolver.add( - "localhost", - sign::CertifiedKey::new(bad_chain, signing_key.clone()) - ) - ); -} - -fn do_exporter_test(client_config: ClientConfig, server_config: ServerConfig) { - let mut client_secret = [0u8; 64]; - let mut server_secret = [0u8; 64]; - - let (mut client, mut server) = make_pair_for_configs(client_config, server_config); - - assert_eq!( - Err(Error::HandshakeNotComplete), - client.export_keying_material(&mut client_secret, b"label", Some(b"context")) - ); - assert_eq!( - Err(Error::HandshakeNotComplete), - server.export_keying_material(&mut server_secret, b"label", Some(b"context")) - ); - do_handshake(&mut client, &mut server); - - assert_eq!( - Ok(()), - client.export_keying_material(&mut client_secret, b"label", Some(b"context")) - ); - assert_eq!( - Ok(()), - server.export_keying_material(&mut server_secret, b"label", Some(b"context")) - ); - assert_eq!(client_secret.to_vec(), server_secret.to_vec()); - - assert_eq!( - Ok(()), - client.export_keying_material(&mut client_secret, b"label", None) - ); - assert_ne!(client_secret.to_vec(), server_secret.to_vec()); - assert_eq!( - Ok(()), - server.export_keying_material(&mut server_secret, b"label", None) - ); - assert_eq!(client_secret.to_vec(), server_secret.to_vec()); -} - -#[cfg(feature = "tls12")] -#[test] -fn test_tls12_exporter() { - for kt in ALL_KEY_TYPES.iter() { - let client_config = make_client_config_with_versions(*kt, &[&rustls::version::TLS12]); - let server_config = make_server_config(*kt); - - do_exporter_test(client_config, server_config); - } -} - -#[test] -fn test_tls13_exporter() { - for kt in ALL_KEY_TYPES.iter() { - let client_config = make_client_config_with_versions(*kt, &[&rustls::version::TLS13]); - let server_config = make_server_config(*kt); - - do_exporter_test(client_config, server_config); - } -} - -fn do_suite_test( - client_config: ClientConfig, - server_config: ServerConfig, - expect_suite: SupportedCipherSuite, - expect_version: ProtocolVersion, -) { - println!( - "do_suite_test {:?} {:?}", - expect_version, - expect_suite.suite() - ); - let (mut client, mut server) = make_pair_for_configs(client_config, server_config); - - assert_eq!(None, client.negotiated_cipher_suite()); - assert_eq!(None, server.negotiated_cipher_suite()); - assert_eq!(None, client.protocol_version()); - assert_eq!(None, server.protocol_version()); - assert!(client.is_handshaking()); - assert!(server.is_handshaking()); - - transfer(&mut client, &mut server); - server.process_new_packets().unwrap(); - - assert!(client.is_handshaking()); - assert!(server.is_handshaking()); - assert_eq!(None, client.protocol_version()); - assert_eq!(Some(expect_version), server.protocol_version()); - assert_eq!(None, client.negotiated_cipher_suite()); - assert_eq!(Some(expect_suite), server.negotiated_cipher_suite()); - - transfer(&mut server, &mut client); - client.process_new_packets().unwrap(); - - assert_eq!(Some(expect_suite), client.negotiated_cipher_suite()); - assert_eq!(Some(expect_suite), server.negotiated_cipher_suite()); - - transfer(&mut client, &mut server); - server.process_new_packets().unwrap(); - transfer(&mut server, &mut client); - client.process_new_packets().unwrap(); - - assert!(!client.is_handshaking()); - assert!(!server.is_handshaking()); - assert_eq!(Some(expect_version), client.protocol_version()); - assert_eq!(Some(expect_version), server.protocol_version()); - assert_eq!(Some(expect_suite), client.negotiated_cipher_suite()); - assert_eq!(Some(expect_suite), server.negotiated_cipher_suite()); -} - -fn find_suite(suite: CipherSuite) -> SupportedCipherSuite { - for scs in ALL_CIPHER_SUITES.iter().copied() { - if scs.suite() == suite { - return scs; - } - } - - panic!("find_suite given unsupported suite"); -} - -static TEST_CIPHERSUITES: &[(&rustls::SupportedProtocolVersion, KeyType, CipherSuite)] = &[ - ( - &rustls::version::TLS13, - KeyType::Rsa, - CipherSuite::TLS13_CHACHA20_POLY1305_SHA256, - ), - ( - &rustls::version::TLS13, - KeyType::Rsa, - CipherSuite::TLS13_AES_256_GCM_SHA384, - ), - ( - &rustls::version::TLS13, - KeyType::Rsa, - CipherSuite::TLS13_AES_128_GCM_SHA256, - ), - #[cfg(feature = "tls12")] - ( - &rustls::version::TLS12, - KeyType::Ecdsa, - CipherSuite::TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, - ), - #[cfg(feature = "tls12")] - ( - &rustls::version::TLS12, - KeyType::Rsa, - CipherSuite::TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, - ), - #[cfg(feature = "tls12")] - ( - &rustls::version::TLS12, - KeyType::Ecdsa, - CipherSuite::TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, - ), - #[cfg(feature = "tls12")] - ( - &rustls::version::TLS12, - KeyType::Ecdsa, - CipherSuite::TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, - ), - #[cfg(feature = "tls12")] - ( - &rustls::version::TLS12, - KeyType::Rsa, - CipherSuite::TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, - ), - #[cfg(feature = "tls12")] - ( - &rustls::version::TLS12, - KeyType::Rsa, - CipherSuite::TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, - ), -]; - -#[test] -fn negotiated_ciphersuite_default() { - for kt in ALL_KEY_TYPES.iter() { - do_suite_test( - make_client_config(*kt), - make_server_config(*kt), - find_suite(CipherSuite::TLS13_AES_256_GCM_SHA384), - ProtocolVersion::TLSv1_3, - ); - } -} - -#[test] -fn all_suites_covered() { - assert_eq!(ALL_CIPHER_SUITES.len(), TEST_CIPHERSUITES.len()); -} - -#[test] -fn negotiated_ciphersuite_client() { - for item in TEST_CIPHERSUITES.iter() { - let (version, kt, suite) = *item; - let scs = find_suite(suite); - let client_config = finish_client_config( - kt, - ClientConfig::builder() - .with_cipher_suites(&[scs]) - .with_safe_default_kx_groups() - .with_protocol_versions(&[version]) - .unwrap(), - ); - - do_suite_test(client_config, make_server_config(kt), scs, version.version); - } -} - -#[test] -fn negotiated_ciphersuite_server() { - for item in TEST_CIPHERSUITES.iter() { - let (version, kt, suite) = *item; - let scs = find_suite(suite); - let server_config = finish_server_config( - kt, - ServerConfig::builder() - .with_cipher_suites(&[scs]) - .with_safe_default_kx_groups() - .with_protocol_versions(&[version]) - .unwrap(), - ); - - do_suite_test(make_client_config(kt), server_config, scs, version.version); - } -} - -#[derive(Debug, PartialEq)] -struct KeyLogItem { - label: String, - client_random: Vec, - secret: Vec, -} - -struct KeyLogToVec { - label: &'static str, - items: Mutex>, -} - -impl KeyLogToVec { - fn new(who: &'static str) -> Self { - KeyLogToVec { - label: who, - items: Mutex::new(vec![]), - } - } - - fn take(&self) -> Vec { - std::mem::take(&mut self.items.lock().unwrap()) - } -} - -impl KeyLog for KeyLogToVec { - fn log(&self, label: &str, client: &[u8], secret: &[u8]) { - let value = KeyLogItem { - label: label.into(), - client_random: client.into(), - secret: secret.into(), - }; - - println!("key log {:?}: {:?}", self.label, value); - - self.items.lock().unwrap().push(value); - } -} - -#[cfg(feature = "tls12")] -#[test] -fn key_log_for_tls12() { - let client_key_log = Arc::new(KeyLogToVec::new("client")); - let server_key_log = Arc::new(KeyLogToVec::new("server")); - - let kt = KeyType::Rsa; - let mut client_config = make_client_config_with_versions(kt, &[&rustls::version::TLS12]); - client_config.key_log = client_key_log.clone(); - let client_config = Arc::new(client_config); - - let mut server_config = make_server_config(kt); - server_config.key_log = server_key_log.clone(); - let server_config = Arc::new(server_config); - - // full handshake - let (mut client, mut server) = make_pair_for_arc_configs(&client_config, &server_config); - do_handshake(&mut client, &mut server); - - let client_full_log = client_key_log.take(); - let server_full_log = server_key_log.take(); - assert_eq!(client_full_log, server_full_log); - assert_eq!(1, client_full_log.len()); - assert_eq!("CLIENT_RANDOM", client_full_log[0].label); - - // resumed - let (mut client, mut server) = make_pair_for_arc_configs(&client_config, &server_config); - do_handshake(&mut client, &mut server); - - let client_resume_log = client_key_log.take(); - let server_resume_log = server_key_log.take(); - assert_eq!(client_resume_log, server_resume_log); - assert_eq!(1, client_resume_log.len()); - assert_eq!("CLIENT_RANDOM", client_resume_log[0].label); - assert_eq!(client_full_log[0].secret, client_resume_log[0].secret); -} - -#[test] -fn key_log_for_tls13() { - let client_key_log = Arc::new(KeyLogToVec::new("client")); - let server_key_log = Arc::new(KeyLogToVec::new("server")); - - let kt = KeyType::Rsa; - let mut client_config = make_client_config_with_versions(kt, &[&rustls::version::TLS13]); - client_config.key_log = client_key_log.clone(); - let client_config = Arc::new(client_config); - - let mut server_config = make_server_config(kt); - server_config.key_log = server_key_log.clone(); - let server_config = Arc::new(server_config); - - // full handshake - let (mut client, mut server) = make_pair_for_arc_configs(&client_config, &server_config); - do_handshake(&mut client, &mut server); - - let client_full_log = client_key_log.take(); - let server_full_log = server_key_log.take(); - - assert_eq!(5, client_full_log.len()); - assert_eq!("CLIENT_HANDSHAKE_TRAFFIC_SECRET", client_full_log[0].label); - assert_eq!("SERVER_HANDSHAKE_TRAFFIC_SECRET", client_full_log[1].label); - assert_eq!("CLIENT_TRAFFIC_SECRET_0", client_full_log[2].label); - assert_eq!("SERVER_TRAFFIC_SECRET_0", client_full_log[3].label); - assert_eq!("EXPORTER_SECRET", client_full_log[4].label); - - assert_eq!(client_full_log[0], server_full_log[0]); - assert_eq!(client_full_log[1], server_full_log[1]); - assert_eq!(client_full_log[2], server_full_log[2]); - assert_eq!(client_full_log[3], server_full_log[3]); - assert_eq!(client_full_log[4], server_full_log[4]); - - // resumed - let (mut client, mut server) = make_pair_for_arc_configs(&client_config, &server_config); - do_handshake(&mut client, &mut server); - - let client_resume_log = client_key_log.take(); - let server_resume_log = server_key_log.take(); - - assert_eq!(5, client_resume_log.len()); - assert_eq!( - "CLIENT_HANDSHAKE_TRAFFIC_SECRET", - client_resume_log[0].label - ); - assert_eq!( - "SERVER_HANDSHAKE_TRAFFIC_SECRET", - client_resume_log[1].label - ); - assert_eq!("CLIENT_TRAFFIC_SECRET_0", client_resume_log[2].label); - assert_eq!("SERVER_TRAFFIC_SECRET_0", client_resume_log[3].label); - assert_eq!("EXPORTER_SECRET", client_resume_log[4].label); - - assert_eq!(6, server_resume_log.len()); - assert_eq!("CLIENT_EARLY_TRAFFIC_SECRET", server_resume_log[0].label); - assert_eq!( - "CLIENT_HANDSHAKE_TRAFFIC_SECRET", - server_resume_log[1].label - ); - assert_eq!( - "SERVER_HANDSHAKE_TRAFFIC_SECRET", - server_resume_log[2].label - ); - assert_eq!("CLIENT_TRAFFIC_SECRET_0", server_resume_log[3].label); - assert_eq!("SERVER_TRAFFIC_SECRET_0", server_resume_log[4].label); - assert_eq!("EXPORTER_SECRET", server_resume_log[5].label); - - assert_eq!(client_resume_log[0], server_resume_log[1]); - assert_eq!(client_resume_log[1], server_resume_log[2]); - assert_eq!(client_resume_log[2], server_resume_log[3]); - assert_eq!(client_resume_log[3], server_resume_log[4]); - assert_eq!(client_resume_log[4], server_resume_log[5]); -} - -#[test] -fn vectored_write_for_server_appdata() { - let (mut client, mut server) = make_pair(KeyType::Rsa); - do_handshake(&mut client, &mut server); - - server - .writer() - .write_all(b"01234567890123456789") - .unwrap(); - server - .writer() - .write_all(b"01234567890123456789") - .unwrap(); - { - let mut pipe = OtherSession::new(&mut client); - let wrlen = server.write_tls(&mut pipe).unwrap(); - assert_eq!(84, wrlen); - assert_eq!(pipe.writevs, vec![vec![42, 42]]); - } - check_read( - &mut client.reader(), - b"0123456789012345678901234567890123456789", - ); -} - -#[test] -fn vectored_write_for_client_appdata() { - let (mut client, mut server) = make_pair(KeyType::Rsa); - do_handshake(&mut client, &mut server); - - client - .writer() - .write_all(b"01234567890123456789") - .unwrap(); - client - .writer() - .write_all(b"01234567890123456789") - .unwrap(); - { - let mut pipe = OtherSession::new(&mut server); - let wrlen = client.write_tls(&mut pipe).unwrap(); - assert_eq!(84, wrlen); - assert_eq!(pipe.writevs, vec![vec![42, 42]]); - } - check_read( - &mut server.reader(), - b"0123456789012345678901234567890123456789", - ); -} - -#[test] -fn vectored_write_for_server_handshake_with_half_rtt_data() { - let mut server_config = make_server_config(KeyType::Rsa); - server_config.send_half_rtt_data = true; - let (mut client, mut server) = - make_pair_for_configs(make_client_config_with_auth(KeyType::Rsa), server_config); - - server - .writer() - .write_all(b"01234567890123456789") - .unwrap(); - server - .writer() - .write_all(b"0123456789") - .unwrap(); - - transfer(&mut client, &mut server); - server.process_new_packets().unwrap(); - { - let mut pipe = OtherSession::new(&mut client); - let wrlen = server.write_tls(&mut pipe).unwrap(); - // don't assert exact sizes here, to avoid a brittle test - assert!(wrlen > 4000); // its pretty big (contains cert chain) - assert_eq!(pipe.writevs.len(), 1); // only one writev - assert_eq!(pipe.writevs[0].len(), 8); // at least a server hello/ccs/cert/serverkx/0.5rtt data - } - - client.process_new_packets().unwrap(); - transfer(&mut client, &mut server); - server.process_new_packets().unwrap(); - { - let mut pipe = OtherSession::new(&mut client); - let wrlen = server.write_tls(&mut pipe).unwrap(); - assert_eq!(wrlen, 103); - assert_eq!(pipe.writevs, vec![vec![103]]); - } - - assert!(!server.is_handshaking()); - assert!(!client.is_handshaking()); - check_read(&mut client.reader(), b"012345678901234567890123456789"); -} - -fn check_half_rtt_does_not_work(server_config: ServerConfig) { - let (mut client, mut server) = - make_pair_for_configs(make_client_config_with_auth(KeyType::Rsa), server_config); - - server - .writer() - .write_all(b"01234567890123456789") - .unwrap(); - server - .writer() - .write_all(b"0123456789") - .unwrap(); - - transfer(&mut client, &mut server); - server.process_new_packets().unwrap(); - { - let mut pipe = OtherSession::new(&mut client); - let wrlen = server.write_tls(&mut pipe).unwrap(); - // don't assert exact sizes here, to avoid a brittle test - assert!(wrlen > 4000); // its pretty big (contains cert chain) - assert_eq!(pipe.writevs.len(), 1); // only one writev - assert!(pipe.writevs[0].len() >= 6); // at least a server hello/ccs/cert/serverkx data - } - - // client second flight - client.process_new_packets().unwrap(); - transfer(&mut client, &mut server); - - // when client auth is enabled, we don't sent 0.5-rtt data, as we'd be sending - // it to an unauthenticated peer. so it happens here, in the server's second - // flight (42 and 32 are lengths of appdata sent above). - server.process_new_packets().unwrap(); - { - let mut pipe = OtherSession::new(&mut client); - let wrlen = server.write_tls(&mut pipe).unwrap(); - assert_eq!(wrlen, 177); - assert_eq!(pipe.writevs, vec![vec![103, 42, 32]]); - } - - assert!(!server.is_handshaking()); - assert!(!client.is_handshaking()); - check_read(&mut client.reader(), b"012345678901234567890123456789"); -} - -#[test] -fn vectored_write_for_server_handshake_no_half_rtt_with_client_auth() { - let mut server_config = make_server_config_with_mandatory_client_auth(KeyType::Rsa); - server_config.send_half_rtt_data = true; // ask even though it will be ignored - check_half_rtt_does_not_work(server_config); -} - -#[test] -fn vectored_write_for_server_handshake_no_half_rtt_by_default() { - let server_config = make_server_config(KeyType::Rsa); - assert!(!server_config.send_half_rtt_data); - check_half_rtt_does_not_work(server_config); -} - -#[test] -fn vectored_write_for_client_handshake() { - let (mut client, mut server) = make_pair(KeyType::Rsa); - - client - .writer() - .write_all(b"01234567890123456789") - .unwrap(); - client - .writer() - .write_all(b"0123456789") - .unwrap(); - { - let mut pipe = OtherSession::new(&mut server); - let wrlen = client.write_tls(&mut pipe).unwrap(); - // don't assert exact sizes here, to avoid a brittle test - assert!(wrlen > 200); // just the client hello - assert_eq!(pipe.writevs.len(), 1); // only one writev - assert!(pipe.writevs[0].len() == 1); // only a client hello - } - - transfer(&mut server, &mut client); - client.process_new_packets().unwrap(); - - { - let mut pipe = OtherSession::new(&mut server); - let wrlen = client.write_tls(&mut pipe).unwrap(); - assert_eq!(wrlen, 154); - // CCS, finished, then two application datas - assert_eq!(pipe.writevs, vec![vec![6, 74, 42, 32]]); - } - - assert!(!server.is_handshaking()); - assert!(!client.is_handshaking()); - check_read(&mut server.reader(), b"012345678901234567890123456789"); -} - -#[test] -fn vectored_write_with_slow_client() { - let (mut client, mut server) = make_pair(KeyType::Rsa); - - client.set_buffer_limit(Some(32)); - - do_handshake(&mut client, &mut server); - server - .writer() - .write_all(b"01234567890123456789") - .unwrap(); - - { - let mut pipe = OtherSession::new(&mut client); - pipe.short_writes = true; - let wrlen = server.write_tls(&mut pipe).unwrap() - + server.write_tls(&mut pipe).unwrap() - + server.write_tls(&mut pipe).unwrap() - + server.write_tls(&mut pipe).unwrap() - + server.write_tls(&mut pipe).unwrap() - + server.write_tls(&mut pipe).unwrap(); - assert_eq!(42, wrlen); - assert_eq!( - pipe.writevs, - vec![vec![21], vec![10], vec![5], vec![3], vec![3]] - ); - } - check_read(&mut client.reader(), b"01234567890123456789"); -} - -struct ServerStorage { - storage: Arc, - put_count: AtomicUsize, - get_count: AtomicUsize, - take_count: AtomicUsize, -} - -impl ServerStorage { - fn new() -> Self { - ServerStorage { - storage: rustls::server::ServerSessionMemoryCache::new(1024), - put_count: AtomicUsize::new(0), - get_count: AtomicUsize::new(0), - take_count: AtomicUsize::new(0), - } - } - - fn puts(&self) -> usize { - self.put_count.load(Ordering::SeqCst) - } - fn gets(&self) -> usize { - self.get_count.load(Ordering::SeqCst) - } - fn takes(&self) -> usize { - self.take_count.load(Ordering::SeqCst) - } -} - -impl fmt::Debug for ServerStorage { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!( - f, - "(put: {:?}, get: {:?}, take: {:?})", - self.put_count, self.get_count, self.take_count - ) - } -} - -impl rustls::server::StoresServerSessions for ServerStorage { - fn put(&self, key: Vec, value: Vec) -> bool { - self.put_count - .fetch_add(1, Ordering::SeqCst); - self.storage.put(key, value) - } - - fn get(&self, key: &[u8]) -> Option> { - self.get_count - .fetch_add(1, Ordering::SeqCst); - self.storage.get(key) - } - - fn take(&self, key: &[u8]) -> Option> { - self.take_count - .fetch_add(1, Ordering::SeqCst); - self.storage.take(key) - } - - fn can_cache(&self) -> bool { - true - } -} - -struct ClientStorage { - storage: Arc, - put_count: AtomicUsize, - get_count: AtomicUsize, - last_put_key: Mutex>>, -} - -impl ClientStorage { - fn new() -> Self { - ClientStorage { - storage: rustls::client::ClientSessionMemoryCache::new(1024), - put_count: AtomicUsize::new(0), - get_count: AtomicUsize::new(0), - last_put_key: Mutex::new(None), - } - } - - fn puts(&self) -> usize { - self.put_count.load(Ordering::SeqCst) - } - fn gets(&self) -> usize { - self.get_count.load(Ordering::SeqCst) - } -} - -impl fmt::Debug for ClientStorage { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!( - f, - "(puts: {:?}, gets: {:?} )", - self.put_count, self.get_count - ) - } -} - -impl rustls::client::StoresClientSessions for ClientStorage { - fn put(&self, key: Vec, value: Vec) -> bool { - self.put_count - .fetch_add(1, Ordering::SeqCst); - *self.last_put_key.lock().unwrap() = Some(key.clone()); - self.storage.put(key, value) - } - - fn get(&self, key: &[u8]) -> Option> { - self.get_count - .fetch_add(1, Ordering::SeqCst); - self.storage.get(key) - } -} - -#[test] -fn tls13_stateful_resumption() { - let kt = KeyType::Rsa; - let client_config = make_client_config_with_versions(kt, &[&rustls::version::TLS13]); - let client_config = Arc::new(client_config); - - let mut server_config = make_server_config(kt); - let storage = Arc::new(ServerStorage::new()); - server_config.session_storage = storage.clone(); - let server_config = Arc::new(server_config); - - // full handshake - let (mut client, mut server) = make_pair_for_arc_configs(&client_config, &server_config); - let (full_c2s, full_s2c) = do_handshake(&mut client, &mut server); - assert_eq!(storage.puts(), 1); - assert_eq!(storage.gets(), 0); - assert_eq!(storage.takes(), 0); - assert_eq!( - client - .peer_certificates() - .map(|certs| certs.len()), - Some(3) - ); - - // resumed - let (mut client, mut server) = make_pair_for_arc_configs(&client_config, &server_config); - let (resume_c2s, resume_s2c) = do_handshake(&mut client, &mut server); - assert!(resume_c2s > full_c2s); - assert!(resume_s2c < full_s2c); - assert_eq!(storage.puts(), 2); - assert_eq!(storage.gets(), 0); - assert_eq!(storage.takes(), 1); - assert_eq!( - client - .peer_certificates() - .map(|certs| certs.len()), - Some(3) - ); - - // resumed again - let (mut client, mut server) = make_pair_for_arc_configs(&client_config, &server_config); - let (resume2_c2s, resume2_s2c) = do_handshake(&mut client, &mut server); - assert_eq!(resume_s2c, resume2_s2c); - assert_eq!(resume_c2s, resume2_c2s); - assert_eq!(storage.puts(), 3); - assert_eq!(storage.gets(), 0); - assert_eq!(storage.takes(), 2); - assert_eq!( - client - .peer_certificates() - .map(|certs| certs.len()), - Some(3) - ); -} - -#[test] -fn tls13_stateless_resumption() { - let kt = KeyType::Rsa; - let client_config = make_client_config_with_versions(kt, &[&rustls::version::TLS13]); - let client_config = Arc::new(client_config); - - let mut server_config = make_server_config(kt); - server_config.ticketer = rustls::Ticketer::new().unwrap(); - let storage = Arc::new(ServerStorage::new()); - server_config.session_storage = storage.clone(); - let server_config = Arc::new(server_config); - - // full handshake - let (mut client, mut server) = make_pair_for_arc_configs(&client_config, &server_config); - let (full_c2s, full_s2c) = do_handshake(&mut client, &mut server); - assert_eq!(storage.puts(), 0); - assert_eq!(storage.gets(), 0); - assert_eq!(storage.takes(), 0); - assert_eq!( - client - .peer_certificates() - .map(|certs| certs.len()), - Some(3) - ); - - // resumed - let (mut client, mut server) = make_pair_for_arc_configs(&client_config, &server_config); - let (resume_c2s, resume_s2c) = do_handshake(&mut client, &mut server); - assert!(resume_c2s > full_c2s); - assert!(resume_s2c < full_s2c); - assert_eq!(storage.puts(), 0); - assert_eq!(storage.gets(), 0); - assert_eq!(storage.takes(), 0); - assert_eq!( - client - .peer_certificates() - .map(|certs| certs.len()), - Some(3) - ); - - // resumed again - let (mut client, mut server) = make_pair_for_arc_configs(&client_config, &server_config); - let (resume2_c2s, resume2_s2c) = do_handshake(&mut client, &mut server); - assert_eq!(resume_s2c, resume2_s2c); - assert_eq!(resume_c2s, resume2_c2s); - assert_eq!(storage.puts(), 0); - assert_eq!(storage.gets(), 0); - assert_eq!(storage.takes(), 0); - assert_eq!( - client - .peer_certificates() - .map(|certs| certs.len()), - Some(3) - ); -} - -#[test] -fn early_data_not_available() { - let (mut client, _) = make_pair(KeyType::Rsa); - assert!(client.early_data().is_none()); -} - -fn early_data_configs() -> (Arc, Arc) { - let kt = KeyType::Rsa; - let mut client_config = make_client_config(kt); - client_config.enable_early_data = true; - client_config.session_storage = Arc::new(ClientStorage::new()); - - let mut server_config = make_server_config(kt); - server_config.max_early_data_size = 1234; - (Arc::new(client_config), Arc::new(server_config)) -} - -#[test] -fn early_data_is_available_on_resumption() { - let (client_config, server_config) = early_data_configs(); - - let (mut client, mut server) = make_pair_for_arc_configs(&client_config, &server_config); - do_handshake(&mut client, &mut server); - - let (mut client, mut server) = make_pair_for_arc_configs(&client_config, &server_config); - assert!(client.early_data().is_some()); - assert_eq!( - client - .early_data() - .unwrap() - .bytes_left(), - 1234 - ); - client - .early_data() - .unwrap() - .flush() - .unwrap(); - assert_eq!( - client - .early_data() - .unwrap() - .write(b"hello") - .unwrap(), - 5 - ); - do_handshake(&mut client, &mut server); - - let mut received_early_data = [0u8; 5]; - assert_eq!( - server - .early_data() - .expect("early_data didn't happen") - .read(&mut received_early_data) - .expect("early_data failed unexpectedly"), - 5 - ); - assert_eq!(&received_early_data[..], b"hello"); -} - -#[test] -fn early_data_not_available_on_server_before_client_hello() { - let mut server = ServerConnection::new(Arc::new(make_server_config(KeyType::Rsa))).unwrap(); - assert!(server.early_data().is_none()); -} - -#[test] -fn early_data_can_be_rejected_by_server() { - let (client_config, server_config) = early_data_configs(); - - let (mut client, mut server) = make_pair_for_arc_configs(&client_config, &server_config); - do_handshake(&mut client, &mut server); - - let (mut client, mut server) = make_pair_for_arc_configs(&client_config, &server_config); - assert!(client.early_data().is_some()); - assert_eq!( - client - .early_data() - .unwrap() - .bytes_left(), - 1234 - ); - client - .early_data() - .unwrap() - .flush() - .unwrap(); - assert_eq!( - client - .early_data() - .unwrap() - .write(b"hello") - .unwrap(), - 5 - ); - server.reject_early_data(); - do_handshake(&mut client, &mut server); - - assert!(!client.is_early_data_accepted()); -} - -#[cfg(feature = "quic")] -mod test_quic { - use super::*; - use rustls::Connection; - - // Returns the sender's next secrets to use, or the receiver's error. - fn step( - send: &mut dyn QuicExt, - recv: &mut dyn QuicExt, - ) -> Result, Error> { - let mut buf = Vec::new(); - let change = loop { - let prev = buf.len(); - if let Some(x) = send.write_hs(&mut buf) { - break Some(x); - } - if prev == buf.len() { - break None; - } - }; - if let Err(e) = recv.read_hs(&buf) { - return Err(e); - } else { - assert_eq!(recv.alert(), None); - } - - Ok(change) - } - - #[test] - fn test_quic_handshake() { - fn equal_packet_keys(x: &quic::PacketKey, y: &quic::PacketKey) -> bool { - // Check that these two sets of keys are equal. - let mut buf = vec![0; 32]; - let (header, payload_tag) = buf.split_at_mut(8); - let (payload, tag_buf) = payload_tag.split_at_mut(8); - let tag = x - .encrypt_in_place(42, &*header, payload) - .unwrap(); - tag_buf.copy_from_slice(tag.as_ref()); - - let result = y.decrypt_in_place(42, &*header, payload_tag); - match result { - Ok(payload) => payload == &[0; 8], - Err(_) => false, - } - } - - fn compatible_keys(x: &quic::KeyChange, y: &quic::KeyChange) -> bool { - fn keys(kc: &quic::KeyChange) -> &quic::Keys { - match kc { - quic::KeyChange::Handshake { keys } => keys, - quic::KeyChange::OneRtt { keys, .. } => keys, - } - } - - let (x, y) = (keys(x), keys(y)); - equal_packet_keys(&x.local.packet, &y.remote.packet) - && equal_packet_keys(&x.remote.packet, &y.local.packet) - } - - let kt = KeyType::Rsa; - let mut client_config = make_client_config_with_versions(kt, &[&rustls::version::TLS13]); - client_config.enable_early_data = true; - let client_config = Arc::new(client_config); - let mut server_config = make_server_config_with_versions(kt, &[&rustls::version::TLS13]); - server_config.max_early_data_size = 0xffffffff; - let server_config = Arc::new(server_config); - let client_params = &b"client params"[..]; - let server_params = &b"server params"[..]; - - // full handshake - let mut client = Connection::from( - ClientConnection::new_quic( - Arc::clone(&client_config), - quic::Version::V1, - dns_name("localhost"), - client_params.into(), - ) - .unwrap(), - ); - - let mut server = Connection::from( - ServerConnection::new_quic( - Arc::clone(&server_config), - quic::Version::V1, - server_params.into(), - ) - .unwrap(), - ); - - let client_initial = step(&mut client, &mut server).unwrap(); - assert!(client_initial.is_none()); - assert!(client.zero_rtt_keys().is_none()); - assert_eq!(server.quic_transport_parameters(), Some(client_params)); - let server_hs = step(&mut server, &mut client) - .unwrap() - .unwrap(); - assert!(server.zero_rtt_keys().is_none()); - let client_hs = step(&mut client, &mut server) - .unwrap() - .unwrap(); - assert!(compatible_keys(&server_hs, &client_hs)); - assert!(client.is_handshaking()); - let server_1rtt = step(&mut server, &mut client) - .unwrap() - .unwrap(); - assert!(!client.is_handshaking()); - assert_eq!(client.quic_transport_parameters(), Some(server_params)); - assert!(server.is_handshaking()); - let client_1rtt = step(&mut client, &mut server) - .unwrap() - .unwrap(); - assert!(!server.is_handshaking()); - assert!(compatible_keys(&server_1rtt, &client_1rtt)); - assert!(!compatible_keys(&server_hs, &server_1rtt)); - assert!(step(&mut client, &mut server) - .unwrap() - .is_none()); - assert!(step(&mut server, &mut client) - .unwrap() - .is_none()); - - // 0-RTT handshake - let mut client = ClientConnection::new_quic( - Arc::clone(&client_config), - quic::Version::V1, - dns_name("localhost"), - client_params.into(), - ) - .unwrap(); - assert!(client - .negotiated_cipher_suite() - .is_some()); - - let mut server = ServerConnection::new_quic( - Arc::clone(&server_config), - quic::Version::V1, - server_params.into(), - ) - .unwrap(); - - step(&mut client, &mut server).unwrap(); - assert_eq!(client.quic_transport_parameters(), Some(server_params)); - { - let client_early = client.zero_rtt_keys().unwrap(); - let server_early = server.zero_rtt_keys().unwrap(); - assert!(equal_packet_keys( - &client_early.packet, - &server_early.packet - )); - } - step(&mut server, &mut client) - .unwrap() - .unwrap(); - step(&mut client, &mut server) - .unwrap() - .unwrap(); - step(&mut server, &mut client) - .unwrap() - .unwrap(); - assert!(client.is_early_data_accepted()); - - // 0-RTT rejection - { - let client_config = (*client_config).clone(); - let mut client = ClientConnection::new_quic( - Arc::new(client_config), - quic::Version::V1, - dns_name("localhost"), - client_params.into(), - ) - .unwrap(); - - let mut server = ServerConnection::new_quic( - Arc::clone(&server_config), - quic::Version::V1, - server_params.into(), - ) - .unwrap(); - - step(&mut client, &mut server).unwrap(); - assert_eq!(client.quic_transport_parameters(), Some(server_params)); - assert!(client.zero_rtt_keys().is_some()); - assert!(server.zero_rtt_keys().is_none()); - step(&mut server, &mut client) - .unwrap() - .unwrap(); - step(&mut client, &mut server) - .unwrap() - .unwrap(); - step(&mut server, &mut client) - .unwrap() - .unwrap(); - assert!(!client.is_early_data_accepted()); - } - - // failed handshake - let mut client = ClientConnection::new_quic( - client_config, - quic::Version::V1, - dns_name("example.com"), - client_params.into(), - ) - .unwrap(); - - let mut server = - ServerConnection::new_quic(server_config, quic::Version::V1, server_params.into()) - .unwrap(); - - step(&mut client, &mut server).unwrap(); - step(&mut server, &mut client) - .unwrap() - .unwrap(); - assert!(step(&mut server, &mut client).is_err()); - assert_eq!( - client.alert(), - Some(rustls::AlertDescription::BadCertificate) - ); - - // Key updates - - let (mut client_secrets, mut server_secrets) = match (client_1rtt, server_1rtt) { - (quic::KeyChange::OneRtt { next: c, .. }, quic::KeyChange::OneRtt { next: s, .. }) => { - (c, s) - } - _ => unreachable!(), - }; - - let mut client_next = client_secrets.next_packet_keys(); - let mut server_next = server_secrets.next_packet_keys(); - assert!(equal_packet_keys(&client_next.local, &server_next.remote)); - assert!(equal_packet_keys(&server_next.local, &client_next.remote)); - - client_next = client_secrets.next_packet_keys(); - server_next = server_secrets.next_packet_keys(); - assert!(equal_packet_keys(&client_next.local, &server_next.remote)); - assert!(equal_packet_keys(&server_next.local, &client_next.remote)); - } - - #[test] - fn test_quic_rejects_missing_alpn() { - let client_params = &b"client params"[..]; - let server_params = &b"server params"[..]; - - for &kt in ALL_KEY_TYPES.iter() { - let client_config = make_client_config_with_versions(kt, &[&rustls::version::TLS13]); - let client_config = Arc::new(client_config); - - let mut server_config = - make_server_config_with_versions(kt, &[&rustls::version::TLS13]); - server_config.alpn_protocols = vec!["foo".into()]; - let server_config = Arc::new(server_config); - - let mut client = ClientConnection::new_quic( - client_config, - quic::Version::V1, - dns_name("localhost"), - client_params.into(), - ) - .unwrap(); - let mut server = - ServerConnection::new_quic(server_config, quic::Version::V1, server_params.into()) - .unwrap(); - - assert_eq!( - step(&mut client, &mut server) - .err() - .unwrap(), - Error::NoApplicationProtocol - ); - - assert_eq!( - server.alert(), - Some(rustls::AlertDescription::NoApplicationProtocol) - ); - } - } - - #[cfg(feature = "tls12")] - #[test] - fn test_quic_no_tls13_error() { - let mut client_config = - make_client_config_with_versions(KeyType::Ed25519, &[&rustls::version::TLS12]); - client_config.alpn_protocols = vec!["foo".into()]; - let client_config = Arc::new(client_config); - - assert!(ClientConnection::new_quic( - client_config, - quic::Version::V1, - dns_name("localhost"), - b"client params".to_vec(), - ) - .is_err()); - - let mut server_config = - make_server_config_with_versions(KeyType::Ed25519, &[&rustls::version::TLS12]); - server_config.alpn_protocols = vec!["foo".into()]; - let server_config = Arc::new(server_config); - - assert!(ServerConnection::new_quic( - server_config, - quic::Version::V1, - b"server params".to_vec(), - ) - .is_err()); - } - - #[test] - fn test_quic_invalid_early_data_size() { - let mut server_config = - make_server_config_with_versions(KeyType::Ed25519, &[&rustls::version::TLS13]); - server_config.alpn_protocols = vec!["foo".into()]; - - let cases = [ - (None, true), - (Some(0u32), true), - (Some(5), false), - (Some(0xffff_ffff), true), - ]; - - for &(size, ok) in cases.iter() { - println!("early data size case: {:?}", size); - if let Some(new) = size { - server_config.max_early_data_size = new; - } - - let wrapped = Arc::new(server_config.clone()); - assert_eq!( - ServerConnection::new_quic(wrapped, quic::Version::V1, b"server params".to_vec(),) - .is_ok(), - ok - ); - } - } - - #[test] - fn test_quic_server_no_params_received() { - let server_config = - make_server_config_with_versions(KeyType::Ed25519, &[&rustls::version::TLS13]); - let server_config = Arc::new(server_config); - - let mut server = - ServerConnection::new_quic(server_config, quic::Version::V1, b"server params".to_vec()) - .unwrap(); - - use ring::rand::SecureRandom; - use rustls::internal::msgs::base::PayloadU16; - use rustls::internal::msgs::enums::{Compression, HandshakeType, NamedGroup}; - use rustls::internal::msgs::handshake::{ - ClientHelloPayload, HandshakeMessagePayload, KeyShareEntry, Random, SessionID, - }; - use rustls::internal::msgs::message::PlainMessage; - use rustls::{CipherSuite, SignatureScheme}; - - let rng = ring::rand::SystemRandom::new(); - let mut random = [0; 32]; - rng.fill(&mut random).unwrap(); - let random = Random::from(random); - - let kx = ring::agreement::EphemeralPrivateKey::generate(&ring::agreement::X25519, &rng) - .unwrap() - .compute_public_key() - .unwrap(); - - let client_hello = Message { - version: ProtocolVersion::TLSv1_3, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::ClientHello, - payload: HandshakePayload::ClientHello(ClientHelloPayload { - client_version: ProtocolVersion::TLSv1_3, - random, - session_id: SessionID::random().unwrap(), - cipher_suites: vec![CipherSuite::TLS13_AES_128_GCM_SHA256], - compression_methods: vec![Compression::Null], - extensions: vec![ - ClientExtension::SupportedVersions(vec![ProtocolVersion::TLSv1_3]), - ClientExtension::NamedGroups(vec![NamedGroup::X25519]), - ClientExtension::SignatureAlgorithms(vec![SignatureScheme::ED25519]), - ClientExtension::KeyShare(vec![KeyShareEntry { - group: NamedGroup::X25519, - payload: PayloadU16::new(kx.as_ref().to_vec()), - }]), - ], - }), - }), - }; - - let buf = PlainMessage::from(client_hello) - .into_unencrypted_opaque() - .encode(); - server - .read_tls(&mut buf.as_slice()) - .unwrap(); - assert_eq!( - server.process_new_packets().err(), - Some(Error::PeerMisbehavedError( - "QUIC transport parameters not found".into(), - )), - ); - } - - #[test] - fn test_quic_server_no_tls12() { - let mut server_config = - make_server_config_with_versions(KeyType::Ed25519, &[&rustls::version::TLS13]); - server_config.alpn_protocols = vec!["foo".into()]; - let server_config = Arc::new(server_config); - - use ring::rand::SecureRandom; - use rustls::internal::msgs::base::PayloadU16; - use rustls::internal::msgs::enums::{Compression, HandshakeType, NamedGroup}; - use rustls::internal::msgs::handshake::{ - ClientHelloPayload, HandshakeMessagePayload, KeyShareEntry, Random, SessionID, - }; - use rustls::internal::msgs::message::PlainMessage; - use rustls::{CipherSuite, SignatureScheme}; - - let rng = ring::rand::SystemRandom::new(); - let mut random = [0; 32]; - rng.fill(&mut random).unwrap(); - let random = Random::from(random); - - let kx = ring::agreement::EphemeralPrivateKey::generate(&ring::agreement::X25519, &rng) - .unwrap() - .compute_public_key() - .unwrap(); - - let mut server = - ServerConnection::new_quic(server_config, quic::Version::V1, b"server params".to_vec()) - .unwrap(); - - let client_hello = Message { - version: ProtocolVersion::TLSv1_2, - payload: MessagePayload::handshake(HandshakeMessagePayload { - typ: HandshakeType::ClientHello, - payload: HandshakePayload::ClientHello(ClientHelloPayload { - client_version: ProtocolVersion::TLSv1_2, - random: random.clone(), - session_id: SessionID::random().unwrap(), - cipher_suites: vec![CipherSuite::TLS13_AES_128_GCM_SHA256], - compression_methods: vec![Compression::Null], - extensions: vec![ - ClientExtension::NamedGroups(vec![NamedGroup::X25519]), - ClientExtension::SignatureAlgorithms(vec![SignatureScheme::ED25519]), - ClientExtension::KeyShare(vec![KeyShareEntry { - group: NamedGroup::X25519, - payload: PayloadU16::new(kx.as_ref().to_vec()), - }]), - ], - }), - }), - }; - - let buf = PlainMessage::from(client_hello) - .into_unencrypted_opaque() - .encode(); - server - .read_tls(&mut buf.as_slice()) - .unwrap(); - assert_eq!( - server.process_new_packets().err(), - Some(Error::PeerIncompatibleError( - "Server requires TLS1.3, but client omitted versions ext".into(), - )), - ); - } - - #[test] - fn packet_key_api() { - use rustls::quic::{Keys, Version}; - - // Test vectors: https://www.rfc-editor.org/rfc/rfc9001.html#name-client-initial - const CONNECTION_ID: &[u8] = &[0x83, 0x94, 0xc8, 0xf0, 0x3e, 0x51, 0x57, 0x08]; - const PACKET_NUMBER: u64 = 2; - const PLAIN_HEADER: &[u8] = &[ - 0xc3, 0x00, 0x00, 0x00, 0x01, 0x08, 0x83, 0x94, 0xc8, 0xf0, 0x3e, 0x51, 0x57, 0x08, - 0x00, 0x00, 0x44, 0x9e, 0x00, 0x00, 0x00, 0x02, - ]; - - const PAYLOAD: &[u8] = &[ - 0x06, 0x00, 0x40, 0xf1, 0x01, 0x00, 0x00, 0xed, 0x03, 0x03, 0xeb, 0xf8, 0xfa, 0x56, - 0xf1, 0x29, 0x39, 0xb9, 0x58, 0x4a, 0x38, 0x96, 0x47, 0x2e, 0xc4, 0x0b, 0xb8, 0x63, - 0xcf, 0xd3, 0xe8, 0x68, 0x04, 0xfe, 0x3a, 0x47, 0xf0, 0x6a, 0x2b, 0x69, 0x48, 0x4c, - 0x00, 0x00, 0x04, 0x13, 0x01, 0x13, 0x02, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x0e, 0x00, 0x00, 0x0b, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, - 0x63, 0x6f, 0x6d, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x06, - 0x00, 0x1d, 0x00, 0x17, 0x00, 0x18, 0x00, 0x10, 0x00, 0x07, 0x00, 0x05, 0x04, 0x61, - 0x6c, 0x70, 0x6e, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, - 0x00, 0x26, 0x00, 0x24, 0x00, 0x1d, 0x00, 0x20, 0x93, 0x70, 0xb2, 0xc9, 0xca, 0xa4, - 0x7f, 0xba, 0xba, 0xf4, 0x55, 0x9f, 0xed, 0xba, 0x75, 0x3d, 0xe1, 0x71, 0xfa, 0x71, - 0xf5, 0x0f, 0x1c, 0xe1, 0x5d, 0x43, 0xe9, 0x94, 0xec, 0x74, 0xd7, 0x48, 0x00, 0x2b, - 0x00, 0x03, 0x02, 0x03, 0x04, 0x00, 0x0d, 0x00, 0x10, 0x00, 0x0e, 0x04, 0x03, 0x05, - 0x03, 0x06, 0x03, 0x02, 0x03, 0x08, 0x04, 0x08, 0x05, 0x08, 0x06, 0x00, 0x2d, 0x00, - 0x02, 0x01, 0x01, 0x00, 0x1c, 0x00, 0x02, 0x40, 0x01, 0x00, 0x39, 0x00, 0x32, 0x04, - 0x08, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x05, 0x04, 0x80, 0x00, 0xff, - 0xff, 0x07, 0x04, 0x80, 0x00, 0xff, 0xff, 0x08, 0x01, 0x10, 0x01, 0x04, 0x80, 0x00, - 0x75, 0x30, 0x09, 0x01, 0x10, 0x0f, 0x08, 0x83, 0x94, 0xc8, 0xf0, 0x3e, 0x51, 0x57, - 0x08, 0x06, 0x04, 0x80, 0x00, 0xff, 0xff, - ]; - - let client_keys = Keys::initial(Version::V1, &CONNECTION_ID, true); - assert_eq!( - client_keys - .local - .packet - .confidentiality_limit(), - 2u64.pow(23) - ); - assert_eq!( - client_keys - .local - .packet - .integrity_limit(), - 2u64.pow(52) - ); - assert_eq!(client_keys.local.packet.tag_len(), 16); - - let mut buf = Vec::new(); - buf.extend(PLAIN_HEADER); - buf.extend(PAYLOAD); - let header_len = PLAIN_HEADER.len(); - let tag_len = client_keys.local.packet.tag_len(); - let padding_len = 1200 - header_len - PAYLOAD.len() - tag_len; - buf.extend(std::iter::repeat(0).take(padding_len)); - let (header, payload) = buf.split_at_mut(header_len); - let tag = client_keys - .local - .packet - .encrypt_in_place(PACKET_NUMBER, &*header, payload) - .unwrap(); - - let sample_len = client_keys.local.header.sample_len(); - let sample = &payload[..sample_len]; - let (first, rest) = header.split_at_mut(1); - client_keys - .local - .header - .encrypt_in_place(sample, &mut first[0], &mut rest[17..21]) - .unwrap(); - buf.extend_from_slice(tag.as_ref()); - - const PROTECTED: &[u8] = &[ - 0xc0, 0x00, 0x00, 0x00, 0x01, 0x08, 0x83, 0x94, 0xc8, 0xf0, 0x3e, 0x51, 0x57, 0x08, - 0x00, 0x00, 0x44, 0x9e, 0x7b, 0x9a, 0xec, 0x34, 0xd1, 0xb1, 0xc9, 0x8d, 0xd7, 0x68, - 0x9f, 0xb8, 0xec, 0x11, 0xd2, 0x42, 0xb1, 0x23, 0xdc, 0x9b, 0xd8, 0xba, 0xb9, 0x36, - 0xb4, 0x7d, 0x92, 0xec, 0x35, 0x6c, 0x0b, 0xab, 0x7d, 0xf5, 0x97, 0x6d, 0x27, 0xcd, - 0x44, 0x9f, 0x63, 0x30, 0x00, 0x99, 0xf3, 0x99, 0x1c, 0x26, 0x0e, 0xc4, 0xc6, 0x0d, - 0x17, 0xb3, 0x1f, 0x84, 0x29, 0x15, 0x7b, 0xb3, 0x5a, 0x12, 0x82, 0xa6, 0x43, 0xa8, - 0xd2, 0x26, 0x2c, 0xad, 0x67, 0x50, 0x0c, 0xad, 0xb8, 0xe7, 0x37, 0x8c, 0x8e, 0xb7, - 0x53, 0x9e, 0xc4, 0xd4, 0x90, 0x5f, 0xed, 0x1b, 0xee, 0x1f, 0xc8, 0xaa, 0xfb, 0xa1, - 0x7c, 0x75, 0x0e, 0x2c, 0x7a, 0xce, 0x01, 0xe6, 0x00, 0x5f, 0x80, 0xfc, 0xb7, 0xdf, - 0x62, 0x12, 0x30, 0xc8, 0x37, 0x11, 0xb3, 0x93, 0x43, 0xfa, 0x02, 0x8c, 0xea, 0x7f, - 0x7f, 0xb5, 0xff, 0x89, 0xea, 0xc2, 0x30, 0x82, 0x49, 0xa0, 0x22, 0x52, 0x15, 0x5e, - 0x23, 0x47, 0xb6, 0x3d, 0x58, 0xc5, 0x45, 0x7a, 0xfd, 0x84, 0xd0, 0x5d, 0xff, 0xfd, - 0xb2, 0x03, 0x92, 0x84, 0x4a, 0xe8, 0x12, 0x15, 0x46, 0x82, 0xe9, 0xcf, 0x01, 0x2f, - 0x90, 0x21, 0xa6, 0xf0, 0xbe, 0x17, 0xdd, 0xd0, 0xc2, 0x08, 0x4d, 0xce, 0x25, 0xff, - 0x9b, 0x06, 0xcd, 0xe5, 0x35, 0xd0, 0xf9, 0x20, 0xa2, 0xdb, 0x1b, 0xf3, 0x62, 0xc2, - 0x3e, 0x59, 0x6d, 0x11, 0xa4, 0xf5, 0xa6, 0xcf, 0x39, 0x48, 0x83, 0x8a, 0x3a, 0xec, - 0x4e, 0x15, 0xda, 0xf8, 0x50, 0x0a, 0x6e, 0xf6, 0x9e, 0xc4, 0xe3, 0xfe, 0xb6, 0xb1, - 0xd9, 0x8e, 0x61, 0x0a, 0xc8, 0xb7, 0xec, 0x3f, 0xaf, 0x6a, 0xd7, 0x60, 0xb7, 0xba, - 0xd1, 0xdb, 0x4b, 0xa3, 0x48, 0x5e, 0x8a, 0x94, 0xdc, 0x25, 0x0a, 0xe3, 0xfd, 0xb4, - 0x1e, 0xd1, 0x5f, 0xb6, 0xa8, 0xe5, 0xeb, 0xa0, 0xfc, 0x3d, 0xd6, 0x0b, 0xc8, 0xe3, - 0x0c, 0x5c, 0x42, 0x87, 0xe5, 0x38, 0x05, 0xdb, 0x05, 0x9a, 0xe0, 0x64, 0x8d, 0xb2, - 0xf6, 0x42, 0x64, 0xed, 0x5e, 0x39, 0xbe, 0x2e, 0x20, 0xd8, 0x2d, 0xf5, 0x66, 0xda, - 0x8d, 0xd5, 0x99, 0x8c, 0xca, 0xbd, 0xae, 0x05, 0x30, 0x60, 0xae, 0x6c, 0x7b, 0x43, - 0x78, 0xe8, 0x46, 0xd2, 0x9f, 0x37, 0xed, 0x7b, 0x4e, 0xa9, 0xec, 0x5d, 0x82, 0xe7, - 0x96, 0x1b, 0x7f, 0x25, 0xa9, 0x32, 0x38, 0x51, 0xf6, 0x81, 0xd5, 0x82, 0x36, 0x3a, - 0xa5, 0xf8, 0x99, 0x37, 0xf5, 0xa6, 0x72, 0x58, 0xbf, 0x63, 0xad, 0x6f, 0x1a, 0x0b, - 0x1d, 0x96, 0xdb, 0xd4, 0xfa, 0xdd, 0xfc, 0xef, 0xc5, 0x26, 0x6b, 0xa6, 0x61, 0x17, - 0x22, 0x39, 0x5c, 0x90, 0x65, 0x56, 0xbe, 0x52, 0xaf, 0xe3, 0xf5, 0x65, 0x63, 0x6a, - 0xd1, 0xb1, 0x7d, 0x50, 0x8b, 0x73, 0xd8, 0x74, 0x3e, 0xeb, 0x52, 0x4b, 0xe2, 0x2b, - 0x3d, 0xcb, 0xc2, 0xc7, 0x46, 0x8d, 0x54, 0x11, 0x9c, 0x74, 0x68, 0x44, 0x9a, 0x13, - 0xd8, 0xe3, 0xb9, 0x58, 0x11, 0xa1, 0x98, 0xf3, 0x49, 0x1d, 0xe3, 0xe7, 0xfe, 0x94, - 0x2b, 0x33, 0x04, 0x07, 0xab, 0xf8, 0x2a, 0x4e, 0xd7, 0xc1, 0xb3, 0x11, 0x66, 0x3a, - 0xc6, 0x98, 0x90, 0xf4, 0x15, 0x70, 0x15, 0x85, 0x3d, 0x91, 0xe9, 0x23, 0x03, 0x7c, - 0x22, 0x7a, 0x33, 0xcd, 0xd5, 0xec, 0x28, 0x1c, 0xa3, 0xf7, 0x9c, 0x44, 0x54, 0x6b, - 0x9d, 0x90, 0xca, 0x00, 0xf0, 0x64, 0xc9, 0x9e, 0x3d, 0xd9, 0x79, 0x11, 0xd3, 0x9f, - 0xe9, 0xc5, 0xd0, 0xb2, 0x3a, 0x22, 0x9a, 0x23, 0x4c, 0xb3, 0x61, 0x86, 0xc4, 0x81, - 0x9e, 0x8b, 0x9c, 0x59, 0x27, 0x72, 0x66, 0x32, 0x29, 0x1d, 0x6a, 0x41, 0x82, 0x11, - 0xcc, 0x29, 0x62, 0xe2, 0x0f, 0xe4, 0x7f, 0xeb, 0x3e, 0xdf, 0x33, 0x0f, 0x2c, 0x60, - 0x3a, 0x9d, 0x48, 0xc0, 0xfc, 0xb5, 0x69, 0x9d, 0xbf, 0xe5, 0x89, 0x64, 0x25, 0xc5, - 0xba, 0xc4, 0xae, 0xe8, 0x2e, 0x57, 0xa8, 0x5a, 0xaf, 0x4e, 0x25, 0x13, 0xe4, 0xf0, - 0x57, 0x96, 0xb0, 0x7b, 0xa2, 0xee, 0x47, 0xd8, 0x05, 0x06, 0xf8, 0xd2, 0xc2, 0x5e, - 0x50, 0xfd, 0x14, 0xde, 0x71, 0xe6, 0xc4, 0x18, 0x55, 0x93, 0x02, 0xf9, 0x39, 0xb0, - 0xe1, 0xab, 0xd5, 0x76, 0xf2, 0x79, 0xc4, 0xb2, 0xe0, 0xfe, 0xb8, 0x5c, 0x1f, 0x28, - 0xff, 0x18, 0xf5, 0x88, 0x91, 0xff, 0xef, 0x13, 0x2e, 0xef, 0x2f, 0xa0, 0x93, 0x46, - 0xae, 0xe3, 0x3c, 0x28, 0xeb, 0x13, 0x0f, 0xf2, 0x8f, 0x5b, 0x76, 0x69, 0x53, 0x33, - 0x41, 0x13, 0x21, 0x19, 0x96, 0xd2, 0x00, 0x11, 0xa1, 0x98, 0xe3, 0xfc, 0x43, 0x3f, - 0x9f, 0x25, 0x41, 0x01, 0x0a, 0xe1, 0x7c, 0x1b, 0xf2, 0x02, 0x58, 0x0f, 0x60, 0x47, - 0x47, 0x2f, 0xb3, 0x68, 0x57, 0xfe, 0x84, 0x3b, 0x19, 0xf5, 0x98, 0x40, 0x09, 0xdd, - 0xc3, 0x24, 0x04, 0x4e, 0x84, 0x7a, 0x4f, 0x4a, 0x0a, 0xb3, 0x4f, 0x71, 0x95, 0x95, - 0xde, 0x37, 0x25, 0x2d, 0x62, 0x35, 0x36, 0x5e, 0x9b, 0x84, 0x39, 0x2b, 0x06, 0x10, - 0x85, 0x34, 0x9d, 0x73, 0x20, 0x3a, 0x4a, 0x13, 0xe9, 0x6f, 0x54, 0x32, 0xec, 0x0f, - 0xd4, 0xa1, 0xee, 0x65, 0xac, 0xcd, 0xd5, 0xe3, 0x90, 0x4d, 0xf5, 0x4c, 0x1d, 0xa5, - 0x10, 0xb0, 0xff, 0x20, 0xdc, 0xc0, 0xc7, 0x7f, 0xcb, 0x2c, 0x0e, 0x0e, 0xb6, 0x05, - 0xcb, 0x05, 0x04, 0xdb, 0x87, 0x63, 0x2c, 0xf3, 0xd8, 0xb4, 0xda, 0xe6, 0xe7, 0x05, - 0x76, 0x9d, 0x1d, 0xe3, 0x54, 0x27, 0x01, 0x23, 0xcb, 0x11, 0x45, 0x0e, 0xfc, 0x60, - 0xac, 0x47, 0x68, 0x3d, 0x7b, 0x8d, 0x0f, 0x81, 0x13, 0x65, 0x56, 0x5f, 0xd9, 0x8c, - 0x4c, 0x8e, 0xb9, 0x36, 0xbc, 0xab, 0x8d, 0x06, 0x9f, 0xc3, 0x3b, 0xd8, 0x01, 0xb0, - 0x3a, 0xde, 0xa2, 0xe1, 0xfb, 0xc5, 0xaa, 0x46, 0x3d, 0x08, 0xca, 0x19, 0x89, 0x6d, - 0x2b, 0xf5, 0x9a, 0x07, 0x1b, 0x85, 0x1e, 0x6c, 0x23, 0x90, 0x52, 0x17, 0x2f, 0x29, - 0x6b, 0xfb, 0x5e, 0x72, 0x40, 0x47, 0x90, 0xa2, 0x18, 0x10, 0x14, 0xf3, 0xb9, 0x4a, - 0x4e, 0x97, 0xd1, 0x17, 0xb4, 0x38, 0x13, 0x03, 0x68, 0xcc, 0x39, 0xdb, 0xb2, 0xd1, - 0x98, 0x06, 0x5a, 0xe3, 0x98, 0x65, 0x47, 0x92, 0x6c, 0xd2, 0x16, 0x2f, 0x40, 0xa2, - 0x9f, 0x0c, 0x3c, 0x87, 0x45, 0xc0, 0xf5, 0x0f, 0xba, 0x38, 0x52, 0xe5, 0x66, 0xd4, - 0x45, 0x75, 0xc2, 0x9d, 0x39, 0xa0, 0x3f, 0x0c, 0xda, 0x72, 0x19, 0x84, 0xb6, 0xf4, - 0x40, 0x59, 0x1f, 0x35, 0x5e, 0x12, 0xd4, 0x39, 0xff, 0x15, 0x0a, 0xab, 0x76, 0x13, - 0x49, 0x9d, 0xbd, 0x49, 0xad, 0xab, 0xc8, 0x67, 0x6e, 0xef, 0x02, 0x3b, 0x15, 0xb6, - 0x5b, 0xfc, 0x5c, 0xa0, 0x69, 0x48, 0x10, 0x9f, 0x23, 0xf3, 0x50, 0xdb, 0x82, 0x12, - 0x35, 0x35, 0xeb, 0x8a, 0x74, 0x33, 0xbd, 0xab, 0xcb, 0x90, 0x92, 0x71, 0xa6, 0xec, - 0xbc, 0xb5, 0x8b, 0x93, 0x6a, 0x88, 0xcd, 0x4e, 0x8f, 0x2e, 0x6f, 0xf5, 0x80, 0x01, - 0x75, 0xf1, 0x13, 0x25, 0x3d, 0x8f, 0xa9, 0xca, 0x88, 0x85, 0xc2, 0xf5, 0x52, 0xe6, - 0x57, 0xdc, 0x60, 0x3f, 0x25, 0x2e, 0x1a, 0x8e, 0x30, 0x8f, 0x76, 0xf0, 0xbe, 0x79, - 0xe2, 0xfb, 0x8f, 0x5d, 0x5f, 0xbb, 0xe2, 0xe3, 0x0e, 0xca, 0xdd, 0x22, 0x07, 0x23, - 0xc8, 0xc0, 0xae, 0xa8, 0x07, 0x8c, 0xdf, 0xcb, 0x38, 0x68, 0x26, 0x3f, 0xf8, 0xf0, - 0x94, 0x00, 0x54, 0xda, 0x48, 0x78, 0x18, 0x93, 0xa7, 0xe4, 0x9a, 0xd5, 0xaf, 0xf4, - 0xaf, 0x30, 0x0c, 0xd8, 0x04, 0xa6, 0xb6, 0x27, 0x9a, 0xb3, 0xff, 0x3a, 0xfb, 0x64, - 0x49, 0x1c, 0x85, 0x19, 0x4a, 0xab, 0x76, 0x0d, 0x58, 0xa6, 0x06, 0x65, 0x4f, 0x9f, - 0x44, 0x00, 0xe8, 0xb3, 0x85, 0x91, 0x35, 0x6f, 0xbf, 0x64, 0x25, 0xac, 0xa2, 0x6d, - 0xc8, 0x52, 0x44, 0x25, 0x9f, 0xf2, 0xb1, 0x9c, 0x41, 0xb9, 0xf9, 0x6f, 0x3c, 0xa9, - 0xec, 0x1d, 0xde, 0x43, 0x4d, 0xa7, 0xd2, 0xd3, 0x92, 0xb9, 0x05, 0xdd, 0xf3, 0xd1, - 0xf9, 0xaf, 0x93, 0xd1, 0xaf, 0x59, 0x50, 0xbd, 0x49, 0x3f, 0x5a, 0xa7, 0x31, 0xb4, - 0x05, 0x6d, 0xf3, 0x1b, 0xd2, 0x67, 0xb6, 0xb9, 0x0a, 0x07, 0x98, 0x31, 0xaa, 0xf5, - 0x79, 0xbe, 0x0a, 0x39, 0x01, 0x31, 0x37, 0xaa, 0xc6, 0xd4, 0x04, 0xf5, 0x18, 0xcf, - 0xd4, 0x68, 0x40, 0x64, 0x7e, 0x78, 0xbf, 0xe7, 0x06, 0xca, 0x4c, 0xf5, 0xe9, 0xc5, - 0x45, 0x3e, 0x9f, 0x7c, 0xfd, 0x2b, 0x8b, 0x4c, 0x8d, 0x16, 0x9a, 0x44, 0xe5, 0x5c, - 0x88, 0xd4, 0xa9, 0xa7, 0xf9, 0x47, 0x42, 0x41, 0xe2, 0x21, 0xaf, 0x44, 0x86, 0x00, - 0x18, 0xab, 0x08, 0x56, 0x97, 0x2e, 0x19, 0x4c, 0xd9, 0x34, - ]; - - assert_eq!(&buf, PROTECTED); - - let (header, payload) = buf.split_at_mut(header_len); - let (first, rest) = header.split_at_mut(1); - let sample = &payload[..sample_len]; - - let server_keys = Keys::initial(Version::V1, &CONNECTION_ID, false); - server_keys - .remote - .header - .decrypt_in_place(sample, &mut first[0], &mut rest[17..21]) - .unwrap(); - let payload = server_keys - .remote - .packet - .decrypt_in_place(PACKET_NUMBER, &*header, payload) - .unwrap(); - - assert_eq!(&payload[..PAYLOAD.len()], PAYLOAD); - assert_eq!(payload.len(), buf.len() - header_len - tag_len); - } - - #[test] - fn test_quic_exporter() { - for &kt in ALL_KEY_TYPES.iter() { - let client_config = make_client_config_with_versions(kt, &[&rustls::version::TLS13]); - let server_config = make_server_config_with_versions(kt, &[&rustls::version::TLS13]); - - do_exporter_test(client_config, server_config); - } - } -} // mod test_quic - -#[test] -fn test_client_does_not_offer_sha1() { - use rustls::internal::msgs::{ - codec::Reader, enums::HandshakeType, handshake::HandshakePayload, message::MessagePayload, - message::OpaqueMessage, - }; - - for kt in ALL_KEY_TYPES.iter() { - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions(*kt, &[version]); - let (mut client, _) = make_pair_for_configs(client_config, make_server_config(*kt)); - - assert!(client.wants_write()); - let mut buf = [0u8; 262144]; - let sz = client - .write_tls(&mut buf.as_mut()) - .unwrap(); - let msg = OpaqueMessage::read(&mut Reader::init(&buf[..sz])).unwrap(); - let msg = Message::try_from(msg.into_plain_message()).unwrap(); - assert!(msg.is_handshake_type(HandshakeType::ClientHello)); - - let client_hello = match msg.payload { - MessagePayload::Handshake { parsed, .. } => match parsed.payload { - HandshakePayload::ClientHello(ch) => ch, - _ => unreachable!(), - }, - _ => unreachable!(), - }; - - let sigalgs = client_hello - .get_sigalgs_extension() - .unwrap(); - assert!( - !sigalgs.contains(&SignatureScheme::RSA_PKCS1_SHA1), - "sha1 unexpectedly offered" - ); - } - } -} - -#[test] -fn test_client_config_keyshare() { - let client_config = - make_client_config_with_kx_groups(KeyType::Rsa, &[&rustls::kx_group::SECP384R1]); - let server_config = - make_server_config_with_kx_groups(KeyType::Rsa, &[&rustls::kx_group::SECP384R1]); - let (mut client, mut server) = make_pair_for_configs(client_config, server_config); - do_handshake_until_error(&mut client, &mut server).unwrap(); -} - -#[test] -fn test_client_config_keyshare_mismatch() { - let client_config = - make_client_config_with_kx_groups(KeyType::Rsa, &[&rustls::kx_group::SECP384R1]); - let server_config = - make_server_config_with_kx_groups(KeyType::Rsa, &[&rustls::kx_group::X25519]); - let (mut client, mut server) = make_pair_for_configs(client_config, server_config); - assert!(do_handshake_until_error(&mut client, &mut server).is_err()); -} - -#[test] -fn test_client_sends_helloretryrequest() { - // client sends a secp384r1 key share - let mut client_config = make_client_config_with_kx_groups( - KeyType::Rsa, - &[&rustls::kx_group::SECP384R1, &rustls::kx_group::X25519], - ); - - let storage = Arc::new(ClientStorage::new()); - client_config.session_storage = storage.clone(); - - // but server only accepts x25519, so a HRR is required - let server_config = - make_server_config_with_kx_groups(KeyType::Rsa, &[&rustls::kx_group::X25519]); - - let (mut client, mut server) = make_pair_for_configs(client_config, server_config); - - // client sends hello - { - let mut pipe = OtherSession::new(&mut server); - let wrlen = client.write_tls(&mut pipe).unwrap(); - assert!(wrlen > 200); - assert_eq!(pipe.writevs.len(), 1); - assert!(pipe.writevs[0].len() == 1); - } - - // server sends HRR - { - let mut pipe = OtherSession::new(&mut client); - let wrlen = server.write_tls(&mut pipe).unwrap(); - assert!(wrlen < 100); // just the hello retry request - assert_eq!(pipe.writevs.len(), 1); // only one writev - assert!(pipe.writevs[0].len() == 2); // hello retry request and CCS - } - - // client sends fixed hello - { - let mut pipe = OtherSession::new(&mut server); - let wrlen = client.write_tls(&mut pipe).unwrap(); - assert!(wrlen > 200); // just the client hello retry - assert_eq!(pipe.writevs.len(), 1); // only one writev - assert!(pipe.writevs[0].len() == 2); // only a CCS & client hello retry - } - - // server completes handshake - { - let mut pipe = OtherSession::new(&mut client); - let wrlen = server.write_tls(&mut pipe).unwrap(); - assert!(wrlen > 200); - assert_eq!(pipe.writevs.len(), 1); - assert!(pipe.writevs[0].len() == 5); // server hello / encrypted exts / cert / cert-verify / finished - } - - do_handshake_until_error(&mut client, &mut server).unwrap(); - - // client only did two storage queries: one for a session, another for a kx type - assert_eq!(storage.gets(), 2); - assert_eq!(storage.puts(), 2); -} - -#[test] -fn test_client_attempts_to_use_unsupported_kx_group() { - // common to both client configs - let shared_storage = Arc::new(ClientStorage::new()); - - // first, client sends a x25519 and server agrees. x25519 is inserted - // into kx group cache. - let mut client_config_1 = - make_client_config_with_kx_groups(KeyType::Rsa, &[&rustls::kx_group::X25519]); - client_config_1.session_storage = shared_storage.clone(); - - // second, client only supports secp-384 and so kx group cache - // contains an unusable value. - let mut client_config_2 = - make_client_config_with_kx_groups(KeyType::Rsa, &[&rustls::kx_group::SECP384R1]); - client_config_2.session_storage = shared_storage; - - let server_config = make_server_config(KeyType::Rsa); - - // first handshake - let (mut client_1, mut server) = make_pair_for_configs(client_config_1, server_config.clone()); - do_handshake_until_error(&mut client_1, &mut server).unwrap(); - - // second handshake - let (mut client_2, mut server) = make_pair_for_configs(client_config_2, server_config); - do_handshake_until_error(&mut client_2, &mut server).unwrap(); -} - -#[test] -fn test_client_mtu_reduction() { - struct CollectWrites { - writevs: Vec>, - } - - impl io::Write for CollectWrites { - fn write(&mut self, _: &[u8]) -> io::Result { - panic!() - } - fn flush(&mut self) -> io::Result<()> { - panic!() - } - fn write_vectored<'b>(&mut self, b: &[io::IoSlice<'b>]) -> io::Result { - let writes = b - .iter() - .map(|slice| slice.len()) - .collect::>(); - let len = writes.iter().sum(); - self.writevs.push(writes); - Ok(len) - } - } - - fn collect_write_lengths(client: &mut ClientConnection) -> Vec { - let mut collector = CollectWrites { writevs: vec![] }; - - client - .write_tls(&mut collector) - .unwrap(); - assert_eq!(collector.writevs.len(), 1); - collector.writevs[0].clone() - } - - for kt in ALL_KEY_TYPES.iter() { - let mut client_config = make_client_config(*kt); - client_config.max_fragment_size = Some(64); - let mut client = - ClientConnection::new(Arc::new(client_config), dns_name("localhost")).unwrap(); - let writes = collect_write_lengths(&mut client); - println!("writes at mtu=64: {:?}", writes); - assert!(writes.iter().all(|x| *x <= 64)); - assert!(writes.len() > 1); - } -} - -#[test] -fn test_server_mtu_reduction() { - let mut server_config = make_server_config(KeyType::Rsa); - server_config.max_fragment_size = Some(64); - server_config.send_half_rtt_data = true; - let (mut client, mut server) = - make_pair_for_configs(make_client_config(KeyType::Rsa), server_config); - - let big_data = [0u8; 2048]; - server - .writer() - .write_all(&big_data) - .unwrap(); - - let encryption_overhead = 20; // FIXME: see issue #991 - - transfer(&mut client, &mut server); - server.process_new_packets().unwrap(); - { - let mut pipe = OtherSession::new(&mut client); - server.write_tls(&mut pipe).unwrap(); - - assert_eq!(pipe.writevs.len(), 1); - assert!(pipe.writevs[0] - .iter() - .all(|x| *x <= 64 + encryption_overhead)); - } - - client.process_new_packets().unwrap(); - transfer(&mut client, &mut server); - server.process_new_packets().unwrap(); - { - let mut pipe = OtherSession::new(&mut client); - server.write_tls(&mut pipe).unwrap(); - assert_eq!(pipe.writevs.len(), 1); - assert!(pipe.writevs[0] - .iter() - .all(|x| *x <= 64 + encryption_overhead)); - } - - client.process_new_packets().unwrap(); - check_read(&mut client.reader(), &big_data); -} - -fn check_client_max_fragment_size(size: usize) -> Option { - let mut client_config = make_client_config(KeyType::Ed25519); - client_config.max_fragment_size = Some(size); - ClientConnection::new(Arc::new(client_config), dns_name("localhost")).err() -} - -#[test] -fn bad_client_max_fragment_sizes() { - assert_eq!( - check_client_max_fragment_size(31), - Some(Error::BadMaxFragmentSize) - ); - assert_eq!(check_client_max_fragment_size(32), None); - assert_eq!(check_client_max_fragment_size(64), None); - assert_eq!(check_client_max_fragment_size(1460), None); - assert_eq!(check_client_max_fragment_size(0x4000), None); - assert_eq!(check_client_max_fragment_size(0x4005), None); - assert_eq!( - check_client_max_fragment_size(0x4006), - Some(Error::BadMaxFragmentSize) - ); - assert_eq!( - check_client_max_fragment_size(0xffff), - Some(Error::BadMaxFragmentSize) - ); -} - -fn assert_lt(left: usize, right: usize) { - if left >= right { - panic!("expected {} < {}", left, right); - } -} - -#[test] -fn connection_types_are_not_huge() { - // Arbitrary sizes - assert_lt(mem::size_of::(), 1600); - assert_lt(mem::size_of::(), 1600); -} - -use rustls::internal::msgs::{ - handshake::ClientExtension, handshake::HandshakePayload, message::Message, - message::MessagePayload, -}; - -#[test] -fn test_server_rejects_duplicate_sni_names() { - fn duplicate_sni_payload(msg: &mut Message) -> Altered { - if let MessagePayload::Handshake { parsed, encoded } = &mut msg.payload { - if let HandshakePayload::ClientHello(ch) = &mut parsed.payload { - for mut ext in ch.extensions.iter_mut() { - if let ClientExtension::ServerName(snr) = &mut ext { - snr.push(snr[0].clone()); - } - } - } - - *encoded = Payload::new(parsed.get_encoding()); - } - Altered::InPlace - } - - let (client, server) = make_pair(KeyType::Rsa); - let (mut client, mut server) = (client.into(), server.into()); - transfer_altered(&mut client, duplicate_sni_payload, &mut server); - assert_eq!( - server.process_new_packets(), - Err(Error::PeerMisbehavedError( - "ClientHello SNI contains duplicate name types".into() - )) - ); -} - -#[test] -fn test_server_rejects_empty_sni_extension() { - fn empty_sni_payload(msg: &mut Message) -> Altered { - if let MessagePayload::Handshake { parsed, encoded } = &mut msg.payload { - if let HandshakePayload::ClientHello(ch) = &mut parsed.payload { - for mut ext in ch.extensions.iter_mut() { - if let ClientExtension::ServerName(snr) = &mut ext { - snr.clear(); - } - } - } - - *encoded = Payload::new(parsed.get_encoding()); - } - - Altered::InPlace - } - - let (client, server) = make_pair(KeyType::Rsa); - let (mut client, mut server) = (client.into(), server.into()); - transfer_altered(&mut client, empty_sni_payload, &mut server); - assert_eq!( - server.process_new_packets(), - Err(Error::PeerMisbehavedError( - "ClientHello SNI did not contain a hostname".into() - )) - ); -} - -#[test] -fn test_server_rejects_clients_without_any_kx_group_overlap() { - fn different_kx_group(msg: &mut Message) -> Altered { - if let MessagePayload::Handshake { parsed, encoded } = &mut msg.payload { - if let HandshakePayload::ClientHello(ch) = &mut parsed.payload { - for mut ext in ch.extensions.iter_mut() { - if let ClientExtension::NamedGroups(ngs) = &mut ext { - ngs.clear(); - } - if let ClientExtension::KeyShare(ks) = &mut ext { - ks.clear(); - } - } - } - - *encoded = Payload::new(parsed.get_encoding()); - } - Altered::InPlace - } - - let (client, server) = make_pair(KeyType::Rsa); - let (mut client, mut server) = (client.into(), server.into()); - transfer_altered(&mut client, different_kx_group, &mut server); - assert_eq!( - server.process_new_packets(), - Err(Error::PeerIncompatibleError( - "no kx group overlap with client".into() - )) - ); -} - -#[test] -fn test_client_rejects_illegal_tls13_ccs() { - fn corrupt_ccs(msg: &mut Message) -> Altered { - if let MessagePayload::ChangeCipherSpec(_) = &mut msg.payload { - println!("seen CCS {:?}", msg); - return Altered::Raw(vec![0x14, 0x03, 0x03, 0x00, 0x02, 0x01, 0x02]); - } - Altered::InPlace - } - - let (mut client, mut server) = make_pair(KeyType::Rsa); - transfer(&mut client, &mut server); - server.process_new_packets().unwrap(); - - let (mut server, mut client) = (server.into(), client.into()); - - transfer_altered(&mut server, corrupt_ccs, &mut client); - assert_eq!( - client.process_new_packets(), - Err(Error::PeerMisbehavedError( - "illegal middlebox CCS received".into() - )) - ); -} - -/// https://github.com/rustls/rustls/issues/797 -#[cfg(feature = "tls12")] -#[test] -fn test_client_tls12_no_resume_after_server_downgrade() { - let mut client_config = common::make_client_config(KeyType::Ed25519); - let client_storage = Arc::new(ClientStorage::new()); - client_config.session_storage = client_storage.clone(); - let client_config = Arc::new(client_config); - - let server_config_1 = Arc::new(common::finish_server_config( - KeyType::Ed25519, - ServerConfig::builder() - .with_safe_default_cipher_suites() - .with_safe_default_kx_groups() - .with_protocol_versions(&[&rustls::version::TLS13]) - .unwrap(), - )); - - let mut server_config_2 = common::finish_server_config( - KeyType::Ed25519, - ServerConfig::builder() - .with_safe_default_cipher_suites() - .with_safe_default_kx_groups() - .with_protocol_versions(&[&rustls::version::TLS12]) - .unwrap(), - ); - server_config_2.session_storage = Arc::new(rustls::server::NoServerSessionStorage {}); - - dbg!("handshake 1"); - let mut client_1 = - ClientConnection::new(client_config.clone(), "localhost".try_into().unwrap()).unwrap(); - let mut server_1 = ServerConnection::new(server_config_1).unwrap(); - common::do_handshake(&mut client_1, &mut server_1); - assert_eq!(client_storage.puts(), 2); - - dbg!("handshake 2"); - let mut client_2 = - ClientConnection::new(client_config, "localhost".try_into().unwrap()).unwrap(); - let mut server_2 = ServerConnection::new(Arc::new(server_config_2)).unwrap(); - common::do_handshake(&mut client_2, &mut server_2); - assert_eq!(client_storage.puts(), 2); -} - -#[test] -fn test_acceptor() { - use rustls::server::Acceptor; - - let client_config = Arc::new(make_client_config(KeyType::Ed25519)); - let mut client = ClientConnection::new(client_config, dns_name("localhost")).unwrap(); - let mut buf = Vec::new(); - client.write_tls(&mut buf).unwrap(); - - let server_config = Arc::new(make_server_config(KeyType::Ed25519)); - let mut acceptor = Acceptor::default(); - acceptor - .read_tls(&mut buf.as_slice()) - .unwrap(); - let accepted = acceptor.accept().unwrap().unwrap(); - let ch = accepted.client_hello(); - assert_eq!(ch.server_name(), Some("localhost")); - - let server = accepted - .into_connection(server_config) - .unwrap(); - assert!(server.wants_write()); - - // Reusing an acceptor is not allowed - assert_eq!( - acceptor - .read_tls(&mut [0u8].as_ref()) - .err() - .unwrap() - .kind(), - io::ErrorKind::Other, - ); - assert_eq!( - acceptor.accept().err(), - Some(Error::General("Acceptor polled after completion".into())) - ); - - let mut acceptor = Acceptor::default(); - assert!(acceptor.accept().unwrap().is_none()); - acceptor - .read_tls(&mut &buf[..3]) - .unwrap(); // incomplete message - assert!(acceptor.accept().unwrap().is_none()); - acceptor - .read_tls(&mut [0x80, 0x00].as_ref()) - .unwrap(); // invalid message (len = 32k bytes) - assert!(acceptor.accept().is_err()); - - let mut acceptor = Acceptor::default(); - // Minimal valid 1-byte application data message is not a handshake message - acceptor - .read_tls(&mut [0x17, 0x03, 0x03, 0x00, 0x01, 0x00].as_ref()) - .unwrap(); - assert!(acceptor.accept().is_err()); - - let mut acceptor = Acceptor::default(); - // Minimal 1-byte ClientHello message is not a legal handshake message - acceptor - .read_tls(&mut [0x16, 0x03, 0x03, 0x00, 0x05, 0x01, 0x00, 0x00, 0x01, 0x00].as_ref()) - .unwrap(); - assert!(acceptor.accept().is_err()); -} - -#[derive(Default, Debug)] -struct LogCounts { - trace: usize, - debug: usize, - info: usize, - warn: usize, - error: usize, -} - -impl LogCounts { - fn new() -> Self { - Self { - ..Default::default() - } - } - - fn reset(&mut self) { - *self = Self::new(); - } - - fn add(&mut self, level: log::Level) { - match level { - log::Level::Trace => self.trace += 1, - log::Level::Debug => self.debug += 1, - log::Level::Info => self.info += 1, - log::Level::Warn => self.warn += 1, - log::Level::Error => self.error += 1, - } - } -} - -thread_local!(static COUNTS: RefCell = RefCell::new(LogCounts::new())); - -struct CountingLogger; - -static LOGGER: CountingLogger = CountingLogger; - -impl CountingLogger { - fn install() { - log::set_logger(&LOGGER).unwrap(); - log::set_max_level(log::LevelFilter::Trace); - } - - fn reset() { - COUNTS.with(|c| { - c.borrow_mut().reset(); - }); - } -} - -impl log::Log for CountingLogger { - fn enabled(&self, _metadata: &log::Metadata) -> bool { - true - } - - fn log(&self, record: &log::Record) { - println!("logging at {:?}: {:?}", record.level(), record.args()); - - COUNTS.with(|c| { - c.borrow_mut().add(record.level()); - }); - } - - fn flush(&self) {} -} - -#[test] -fn test_no_warning_logging_during_successful_sessions() { - CountingLogger::install(); - CountingLogger::reset(); - - for kt in ALL_KEY_TYPES.iter() { - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions(*kt, &[version]); - let (mut client, mut server) = - make_pair_for_configs(client_config, make_server_config(*kt)); - do_handshake(&mut client, &mut server); - } - } - - if cfg!(feature = "logging") { - COUNTS.with(|c| { - println!("After tests: {:?}", c.borrow()); - assert_eq!(c.borrow().warn, 0); - assert_eq!(c.borrow().error, 0); - assert_eq!(c.borrow().info, 0); - assert!(c.borrow().trace > 0); - assert!(c.borrow().debug > 0); - }); - } else { - COUNTS.with(|c| { - println!("After tests: {:?}", c.borrow()); - assert_eq!(c.borrow().warn, 0); - assert_eq!(c.borrow().error, 0); - assert_eq!(c.borrow().info, 0); - assert_eq!(c.borrow().trace, 0); - assert_eq!(c.borrow().debug, 0); - }); - } -} - -/// Test that secrets can be extracted and used for encryption/decryption. -#[cfg(feature = "secret_extraction")] -#[test] -fn test_secret_extraction_enabled() { - // Normally, secret extraction would be used to configure kTLS (TLS offload - // to the kernel). We want this test to run on any platform, though, so - // instead we just compare secrets for equality. - - // TLS 1.2 and 1.3 have different mechanisms for key exchange and handshake, - // and secrets are stored/extracted differently, so we want to test them both. - // We support 3 different AEAD algorithms (AES-128-GCM mode, AES-256-GCM, and - // Chacha20Poly1305), so that's 2*3 = 6 combinations to test. - let kt = KeyType::Rsa; - for suite in [ - rustls::cipher_suite::TLS13_AES_128_GCM_SHA256, - rustls::cipher_suite::TLS13_AES_256_GCM_SHA384, - rustls::cipher_suite::TLS13_CHACHA20_POLY1305_SHA256, - rustls::cipher_suite::TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, - rustls::cipher_suite::TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, - rustls::cipher_suite::TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, - ] { - let version = suite.version(); - println!("Testing suite {:?}", suite.suite().as_str()); - - // Only offer the cipher suite (and protocol version) that we're testing - let mut server_config = ServerConfig::builder() - .with_cipher_suites(&[suite]) - .with_safe_default_kx_groups() - .with_protocol_versions(&[version]) - .unwrap() - .with_no_client_auth() - .with_single_cert(kt.get_chain(), kt.get_key()) - .unwrap(); - // Opt into secret extraction from both sides - server_config.enable_secret_extraction = true; - let server_config = Arc::new(server_config); - - let mut client_config = make_client_config(kt); - client_config.enable_secret_extraction = true; - - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - - do_handshake(&mut client, &mut server); - - // The handshake is finished, we're now able to extract traffic secrets - let client_secrets = client.extract_secrets().unwrap(); - let server_secrets = server.extract_secrets().unwrap(); - - // Comparing secrets for equality is something you should never have to - // do in production code, so ConnectionTrafficSecrets doesn't implement - // PartialEq/Eq on purpose. Instead, we have to get creative. - fn explode_secrets(s: &ConnectionTrafficSecrets) -> (&[u8], &[u8], &[u8]) { - match s { - ConnectionTrafficSecrets::Aes128Gcm { key, salt, iv } => (key, salt, iv), - ConnectionTrafficSecrets::Aes256Gcm { key, salt, iv } => (key, salt, iv), - ConnectionTrafficSecrets::Chacha20Poly1305 { key, iv } => (key, &[], iv), - _ => panic!("unexpected secret type"), - } - } - - fn assert_secrets_equal( - (l_seq, l_sec): (u64, ConnectionTrafficSecrets), - (r_seq, r_sec): (u64, ConnectionTrafficSecrets), - ) { - assert_eq!(l_seq, r_seq); - assert_eq!(explode_secrets(&l_sec), explode_secrets(&r_sec)); - } - - assert_secrets_equal(client_secrets.tx, server_secrets.rx); - assert_secrets_equal(client_secrets.rx, server_secrets.tx); - } -} - -/// Test that secrets cannot be extracted unless explicitly enabled, and until -/// the handshake is done. -#[cfg(feature = "secret_extraction")] -#[test] -fn test_secret_extraction_disabled_or_too_early() { - let suite = rustls::cipher_suite::TLS13_AES_128_GCM_SHA256; - let kt = KeyType::Rsa; - - for (server_enable, client_enable) in [(true, false), (false, true)] { - let mut server_config = ServerConfig::builder() - .with_cipher_suites(&[suite]) - .with_safe_default_kx_groups() - .with_safe_default_protocol_versions() - .unwrap() - .with_no_client_auth() - .with_single_cert(kt.get_chain(), kt.get_key()) - .unwrap(); - server_config.enable_secret_extraction = server_enable; - let server_config = Arc::new(server_config); - - let mut client_config = make_client_config(kt); - client_config.enable_secret_extraction = client_enable; - - let client_config = Arc::new(client_config); - - let (client, server) = make_pair_for_arc_configs(&client_config, &server_config); - - assert!( - client.extract_secrets().is_err(), - "extraction should fail until handshake completes" - ); - assert!( - server.extract_secrets().is_err(), - "extraction should fail until handshake completes" - ); - - let (mut client, mut server) = make_pair_for_arc_configs(&client_config, &server_config); - - do_handshake(&mut client, &mut server); - - assert_eq!(server_enable, server.extract_secrets().is_ok()); - assert_eq!(client_enable, client.extract_secrets().is_ok()); - } -} - -#[test] -fn test_received_plaintext_backpressure() { - let suite = rustls::cipher_suite::TLS13_AES_128_GCM_SHA256; - let kt = KeyType::Rsa; - - let server_config = Arc::new( - ServerConfig::builder() - .with_cipher_suites(&[suite]) - .with_safe_default_kx_groups() - .with_safe_default_protocol_versions() - .unwrap() - .with_no_client_auth() - .with_single_cert(kt.get_chain(), kt.get_key()) - .unwrap(), - ); - - let client_config = Arc::new(make_client_config(kt)); - let (mut client, mut server) = make_pair_for_arc_configs(&client_config, &server_config); - do_handshake(&mut client, &mut server); - - // Fill the server's received plaintext buffer with 16k bytes - let client_buf = [0; 16_385]; - dbg!(client - .writer() - .write(&client_buf) - .unwrap()); - let mut network_buf = Vec::with_capacity(32_768); - let sent = dbg!(client - .write_tls(&mut network_buf) - .unwrap()); - assert_eq!( - sent, - dbg!(server - .read_tls(&mut &network_buf[..sent]) - .unwrap()) - ); - server.process_new_packets().unwrap(); - - // Send two more bytes from client to server - dbg!(client - .writer() - .write(&client_buf[..2]) - .unwrap()); - let sent = dbg!(client - .write_tls(&mut network_buf) - .unwrap()); - - // Get an error because the received plaintext buffer is full - assert!(server - .read_tls(&mut &network_buf[..sent]) - .is_err()); - - // Read out some of the plaintext - server - .reader() - .read_exact(&mut [0; 2]) - .unwrap(); - - // Now there's room again in the plaintext buffer - assert_eq!( - server - .read_tls(&mut &network_buf[..sent]) - .unwrap(), - 24 - ); -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/tests/bogo.rs temporalio-1.3.0/vendor/rustls-0.20.8/tests/bogo.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/tests/bogo.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/tests/bogo.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -// Runs the bogo test suite, in the form of a rust test. -// Note that bogo requires a golang environment to build -// and run. - -#[test] -#[cfg(all(coverage, feature = "quic", feature = "dangerous_configuration"))] -fn run_bogo_tests() { - use std::process::Command; - - let rc = Command::new("./runme") - .current_dir("../bogo") - .spawn() - .expect("cannot run bogo/runme") - .wait() - .expect("cannot wait for bogo"); - - assert!(rc.success(), "bogo exited non-zero"); -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/tests/client_cert_verifier.rs temporalio-1.3.0/vendor/rustls-0.20.8/tests/client_cert_verifier.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/tests/client_cert_verifier.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/tests/client_cert_verifier.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,324 +0,0 @@ -//! Tests for configuring and using a [`ClientCertVerifier`] for a server. - -#![cfg(feature = "dangerous_configuration")] - -mod common; - -use crate::common::{ - dns_name, do_handshake_until_both_error, do_handshake_until_error, get_client_root_store, - make_client_config_with_versions, make_client_config_with_versions_with_auth, - make_pair_for_arc_configs, ErrorFromPeer, KeyType, ALL_KEY_TYPES, -}; -use rustls::client::WebPkiVerifier; -use rustls::internal::msgs::base::PayloadU16; -use rustls::server::{ClientCertVerified, ClientCertVerifier}; -use rustls::AlertDescription; -use rustls::ContentType; -use rustls::{ - Certificate, ClientConnection, DistinguishedNames, Error, ServerConfig, ServerConnection, - SignatureScheme, -}; -use std::sync::Arc; - -// Client is authorized! -fn ver_ok() -> Result { - Ok(rustls::server::ClientCertVerified::assertion()) -} - -// Use when we shouldn't even attempt verification -fn ver_unreachable() -> Result { - unreachable!() -} - -// Verifier that returns an error that we can expect -fn ver_err() -> Result { - Err(Error::General("test err".to_string())) -} - -fn server_config_with_verifier( - kt: KeyType, - client_cert_verifier: MockClientVerifier, -) -> ServerConfig { - ServerConfig::builder() - .with_safe_defaults() - .with_client_cert_verifier(Arc::new(client_cert_verifier)) - .with_single_cert(kt.get_chain(), kt.get_key()) - .unwrap() -} - -#[test] -// Happy path, we resolve to a root, it is verified OK, should be able to connect -fn client_verifier_works() { - for kt in ALL_KEY_TYPES.iter() { - let client_verifier = MockClientVerifier { - verified: ver_ok, - subjects: Some( - get_client_root_store(*kt) - .roots - .iter() - .map(|r| PayloadU16(r.subject().to_vec())) - .collect(), - ), - mandatory: Some(true), - offered_schemes: None, - }; - - let server_config = server_config_with_verifier(*kt, client_verifier); - let server_config = Arc::new(server_config); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions_with_auth(*kt, &[version]); - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config.clone()), &server_config); - let err = do_handshake_until_error(&mut client, &mut server); - assert_eq!(err, Ok(())); - } - } -} - -// Server offers no verification schemes -#[test] -fn client_verifier_no_schemes() { - for kt in ALL_KEY_TYPES.iter() { - let client_verifier = MockClientVerifier { - verified: ver_ok, - subjects: Some( - get_client_root_store(*kt) - .roots - .iter() - .map(|r| PayloadU16(r.subject().to_vec())) - .collect(), - ), - mandatory: Some(true), - offered_schemes: Some(vec![]), - }; - - let server_config = server_config_with_verifier(*kt, client_verifier); - let server_config = Arc::new(server_config); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions_with_auth(*kt, &[version]); - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config.clone()), &server_config); - let err = do_handshake_until_error(&mut client, &mut server); - assert_eq!( - err, - Err(ErrorFromPeer::Client(Error::CorruptMessagePayload( - ContentType::Handshake - ))) - ); - } - } -} - -// Common case, we do not find a root store to resolve to -#[test] -fn client_verifier_no_root() { - for kt in ALL_KEY_TYPES.iter() { - let client_verifier = MockClientVerifier { - verified: ver_ok, - subjects: None, - mandatory: Some(true), - offered_schemes: None, - }; - - let server_config = server_config_with_verifier(*kt, client_verifier); - let server_config = Arc::new(server_config); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions_with_auth(*kt, &[version]); - let mut server = ServerConnection::new(Arc::clone(&server_config)).unwrap(); - let mut client = - ClientConnection::new(Arc::new(client_config), dns_name("notlocalhost")).unwrap(); - let errs = do_handshake_until_both_error(&mut client, &mut server); - assert_eq!( - errs, - Err(vec![ - ErrorFromPeer::Server(Error::General( - "client rejected by client_auth_root_subjects".into() - )), - ErrorFromPeer::Client(Error::AlertReceived(AlertDescription::AccessDenied)) - ]) - ); - } - } -} - -// If we cannot resolve a root, we cannot decide if auth is mandatory -#[test] -fn client_verifier_no_auth_no_root() { - for kt in ALL_KEY_TYPES.iter() { - let client_verifier = MockClientVerifier { - verified: ver_unreachable, - subjects: None, - mandatory: Some(true), - offered_schemes: None, - }; - - let server_config = server_config_with_verifier(*kt, client_verifier); - let server_config = Arc::new(server_config); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions(*kt, &[version]); - let mut server = ServerConnection::new(Arc::clone(&server_config)).unwrap(); - let mut client = - ClientConnection::new(Arc::new(client_config), dns_name("notlocalhost")).unwrap(); - let errs = do_handshake_until_both_error(&mut client, &mut server); - assert_eq!( - errs, - Err(vec![ - ErrorFromPeer::Server(Error::General( - "client rejected by client_auth_root_subjects".into() - )), - ErrorFromPeer::Client(Error::AlertReceived(AlertDescription::AccessDenied)) - ]) - ); - } - } -} - -// If we do have a root, we must do auth -#[test] -fn client_verifier_no_auth_yes_root() { - for kt in ALL_KEY_TYPES.iter() { - let client_verifier = MockClientVerifier { - verified: ver_unreachable, - subjects: Some( - get_client_root_store(*kt) - .roots - .iter() - .map(|r| PayloadU16(r.subject().to_vec())) - .collect(), - ), - mandatory: Some(true), - offered_schemes: None, - }; - - let server_config = server_config_with_verifier(*kt, client_verifier); - let server_config = Arc::new(server_config); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions(*kt, &[version]); - let mut server = ServerConnection::new(Arc::clone(&server_config)).unwrap(); - let mut client = - ClientConnection::new(Arc::new(client_config), dns_name("localhost")).unwrap(); - let errs = do_handshake_until_both_error(&mut client, &mut server); - assert_eq!( - errs, - Err(vec![ - ErrorFromPeer::Server(Error::NoCertificatesPresented), - ErrorFromPeer::Client(Error::AlertReceived( - AlertDescription::CertificateRequired - )) - ]) - ); - } - } -} - -#[test] -// Triple checks we propagate the rustls::Error through -fn client_verifier_fails_properly() { - for kt in ALL_KEY_TYPES.iter() { - let client_verifier = MockClientVerifier { - verified: ver_err, - subjects: Some( - get_client_root_store(*kt) - .roots - .iter() - .map(|r| PayloadU16(r.subject().to_vec())) - .collect(), - ), - mandatory: Some(true), - offered_schemes: None, - }; - - let server_config = server_config_with_verifier(*kt, client_verifier); - let server_config = Arc::new(server_config); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions_with_auth(*kt, &[version]); - let mut server = ServerConnection::new(Arc::clone(&server_config)).unwrap(); - let mut client = - ClientConnection::new(Arc::new(client_config), dns_name("localhost")).unwrap(); - let err = do_handshake_until_error(&mut client, &mut server); - assert_eq!( - err, - Err(ErrorFromPeer::Server(Error::General("test err".into()))) - ); - } - } -} - -#[test] -// If a verifier returns a None on Mandatory-ness, then we error out -fn client_verifier_must_determine_client_auth_requirement_to_continue() { - for kt in ALL_KEY_TYPES.iter() { - let client_verifier = MockClientVerifier { - verified: ver_ok, - subjects: Some( - get_client_root_store(*kt) - .roots - .iter() - .map(|r| PayloadU16(r.subject().to_vec())) - .collect(), - ), - mandatory: None, - offered_schemes: None, - }; - - let server_config = server_config_with_verifier(*kt, client_verifier); - let server_config = Arc::new(server_config); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions_with_auth(*kt, &[version]); - let mut server = ServerConnection::new(Arc::clone(&server_config)).unwrap(); - let mut client = - ClientConnection::new(Arc::new(client_config), dns_name("localhost")).unwrap(); - let errs = do_handshake_until_both_error(&mut client, &mut server); - assert_eq!( - errs, - Err(vec![ - ErrorFromPeer::Server(Error::General( - "client rejected by client_auth_mandatory".into() - )), - ErrorFromPeer::Client(Error::AlertReceived(AlertDescription::AccessDenied)) - ]) - ); - } - } -} - -pub struct MockClientVerifier { - pub verified: fn() -> Result, - pub subjects: Option, - pub mandatory: Option, - pub offered_schemes: Option>, -} - -impl ClientCertVerifier for MockClientVerifier { - fn client_auth_mandatory(&self) -> Option { - self.mandatory - } - - fn client_auth_root_subjects(&self) -> Option { - self.subjects.as_ref().cloned() - } - - fn verify_client_cert( - &self, - _end_entity: &Certificate, - _intermediates: &[Certificate], - _now: std::time::SystemTime, - ) -> Result { - (self.verified)() - } - - fn supported_verify_schemes(&self) -> Vec { - if let Some(schemes) = &self.offered_schemes { - schemes.clone() - } else { - WebPkiVerifier::verification_schemes() - } - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/tests/common/mod.rs temporalio-1.3.0/vendor/rustls-0.20.8/tests/common/mod.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/tests/common/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/tests/common/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,474 +0,0 @@ -#![allow(dead_code)] - -use std::convert::{TryFrom, TryInto}; -use std::io; -use std::ops::{Deref, DerefMut}; -use std::sync::Arc; - -use rustls::internal::msgs::codec::Reader; -use rustls::internal::msgs::message::{Message, OpaqueMessage, PlainMessage}; -use rustls::server::AllowAnyAuthenticatedClient; -use rustls::Connection; -use rustls::Error; -use rustls::RootCertStore; -use rustls::{Certificate, PrivateKey}; -use rustls::{ClientConfig, ClientConnection}; -use rustls::{ConnectionCommon, ServerConfig, ServerConnection, SideData}; - -macro_rules! embed_files { - ( - $( - ($name:ident, $keytype:expr, $path:expr); - )+ - ) => { - $( - const $name: &'static [u8] = include_bytes!( - concat!("../../../test-ca/", $keytype, "/", $path)); - )+ - - pub fn bytes_for(keytype: &str, path: &str) -> &'static [u8] { - match (keytype, path) { - $( - ($keytype, $path) => $name, - )+ - _ => panic!("unknown keytype {} with path {}", keytype, path), - } - } - } -} - -embed_files! { - (ECDSA_CA_CERT, "ecdsa", "ca.cert"); - (ECDSA_CA_DER, "ecdsa", "ca.der"); - (ECDSA_CA_KEY, "ecdsa", "ca.key"); - (ECDSA_CLIENT_CERT, "ecdsa", "client.cert"); - (ECDSA_CLIENT_CHAIN, "ecdsa", "client.chain"); - (ECDSA_CLIENT_FULLCHAIN, "ecdsa", "client.fullchain"); - (ECDSA_CLIENT_KEY, "ecdsa", "client.key"); - (ECDSA_CLIENT_REQ, "ecdsa", "client.req"); - (ECDSA_END_CERT, "ecdsa", "end.cert"); - (ECDSA_END_CHAIN, "ecdsa", "end.chain"); - (ECDSA_END_FULLCHAIN, "ecdsa", "end.fullchain"); - (ECDSA_END_KEY, "ecdsa", "end.key"); - (ECDSA_END_REQ, "ecdsa", "end.req"); - (ECDSA_INTER_CERT, "ecdsa", "inter.cert"); - (ECDSA_INTER_KEY, "ecdsa", "inter.key"); - (ECDSA_INTER_REQ, "ecdsa", "inter.req"); - (ECDSA_NISTP256_PEM, "ecdsa", "nistp256.pem"); - (ECDSA_NISTP384_PEM, "ecdsa", "nistp384.pem"); - - (EDDSA_CA_CERT, "eddsa", "ca.cert"); - (EDDSA_CA_DER, "eddsa", "ca.der"); - (EDDSA_CA_KEY, "eddsa", "ca.key"); - (EDDSA_CLIENT_CERT, "eddsa", "client.cert"); - (EDDSA_CLIENT_CHAIN, "eddsa", "client.chain"); - (EDDSA_CLIENT_FULLCHAIN, "eddsa", "client.fullchain"); - (EDDSA_CLIENT_KEY, "eddsa", "client.key"); - (EDDSA_CLIENT_REQ, "eddsa", "client.req"); - (EDDSA_END_CERT, "eddsa", "end.cert"); - (EDDSA_END_CHAIN, "eddsa", "end.chain"); - (EDDSA_END_FULLCHAIN, "eddsa", "end.fullchain"); - (EDDSA_END_KEY, "eddsa", "end.key"); - (EDDSA_END_REQ, "eddsa", "end.req"); - (EDDSA_INTER_CERT, "eddsa", "inter.cert"); - (EDDSA_INTER_KEY, "eddsa", "inter.key"); - (EDDSA_INTER_REQ, "eddsa", "inter.req"); - - (RSA_CA_CERT, "rsa", "ca.cert"); - (RSA_CA_DER, "rsa", "ca.der"); - (RSA_CA_KEY, "rsa", "ca.key"); - (RSA_CLIENT_CERT, "rsa", "client.cert"); - (RSA_CLIENT_CHAIN, "rsa", "client.chain"); - (RSA_CLIENT_FULLCHAIN, "rsa", "client.fullchain"); - (RSA_CLIENT_KEY, "rsa", "client.key"); - (RSA_CLIENT_REQ, "rsa", "client.req"); - (RSA_CLIENT_RSA, "rsa", "client.rsa"); - (RSA_END_CERT, "rsa", "end.cert"); - (RSA_END_CHAIN, "rsa", "end.chain"); - (RSA_END_FULLCHAIN, "rsa", "end.fullchain"); - (RSA_END_KEY, "rsa", "end.key"); - (RSA_END_REQ, "rsa", "end.req"); - (RSA_END_RSA, "rsa", "end.rsa"); - (RSA_INTER_CERT, "rsa", "inter.cert"); - (RSA_INTER_KEY, "rsa", "inter.key"); - (RSA_INTER_REQ, "rsa", "inter.req"); -} - -pub fn transfer( - left: &mut (impl DerefMut + Deref>), - right: &mut (impl DerefMut + Deref>), -) -> usize { - let mut buf = [0u8; 262144]; - let mut total = 0; - - while left.wants_write() { - let sz = { - let into_buf: &mut dyn io::Write = &mut &mut buf[..]; - left.write_tls(into_buf).unwrap() - }; - total += sz; - if sz == 0 { - return total; - } - - let mut offs = 0; - loop { - let from_buf: &mut dyn io::Read = &mut &buf[offs..sz]; - offs += right.read_tls(from_buf).unwrap(); - if sz == offs { - break; - } - } - } - - total -} - -pub fn transfer_eof(conn: &mut (impl DerefMut + Deref>)) { - let empty_buf = [0u8; 0]; - let empty_cursor: &mut dyn io::Read = &mut &empty_buf[..]; - let sz = conn.read_tls(empty_cursor).unwrap(); - assert_eq!(sz, 0); -} - -pub enum Altered { - /// message has been edited in-place (or is unchanged) - InPlace, - /// send these raw bytes instead of the message. - Raw(Vec), -} - -pub fn transfer_altered(left: &mut Connection, filter: F, right: &mut Connection) -> usize -where - F: Fn(&mut Message) -> Altered, -{ - let mut buf = [0u8; 262144]; - let mut total = 0; - - while left.wants_write() { - let sz = { - let into_buf: &mut dyn io::Write = &mut &mut buf[..]; - left.write_tls(into_buf).unwrap() - }; - total += sz; - if sz == 0 { - return total; - } - - let mut reader = Reader::init(&buf[..sz]); - while reader.any_left() { - let message = OpaqueMessage::read(&mut reader).unwrap(); - let mut message = Message::try_from(message.into_plain_message()).unwrap(); - let message_enc = match filter(&mut message) { - Altered::InPlace => PlainMessage::from(message) - .into_unencrypted_opaque() - .encode(), - Altered::Raw(data) => data, - }; - - let message_enc_reader: &mut dyn io::Read = &mut &message_enc[..]; - let len = right - .read_tls(message_enc_reader) - .unwrap(); - assert_eq!(len, message_enc.len()); - } - } - - total -} - -#[derive(Clone, Copy, PartialEq)] -pub enum KeyType { - Rsa, - Ecdsa, - Ed25519, -} - -pub static ALL_KEY_TYPES: [KeyType; 3] = [KeyType::Rsa, KeyType::Ecdsa, KeyType::Ed25519]; - -impl KeyType { - fn bytes_for(&self, part: &str) -> &'static [u8] { - match self { - KeyType::Rsa => bytes_for("rsa", part), - KeyType::Ecdsa => bytes_for("ecdsa", part), - KeyType::Ed25519 => bytes_for("eddsa", part), - } - } - - pub fn get_chain(&self) -> Vec { - rustls_pemfile::certs(&mut io::BufReader::new(self.bytes_for("end.fullchain"))) - .unwrap() - .iter() - .map(|v| Certificate(v.clone())) - .collect() - } - - pub fn get_key(&self) -> PrivateKey { - PrivateKey( - rustls_pemfile::pkcs8_private_keys(&mut io::BufReader::new(self.bytes_for("end.key"))) - .unwrap()[0] - .clone(), - ) - } - - pub fn get_client_chain(&self) -> Vec { - rustls_pemfile::certs(&mut io::BufReader::new(self.bytes_for("client.fullchain"))) - .unwrap() - .iter() - .map(|v| Certificate(v.clone())) - .collect() - } - - fn get_client_key(&self) -> PrivateKey { - PrivateKey( - rustls_pemfile::pkcs8_private_keys(&mut io::BufReader::new( - self.bytes_for("client.key"), - )) - .unwrap()[0] - .clone(), - ) - } -} - -pub fn finish_server_config( - kt: KeyType, - conf: rustls::ConfigBuilder, -) -> ServerConfig { - conf.with_no_client_auth() - .with_single_cert(kt.get_chain(), kt.get_key()) - .unwrap() -} - -pub fn make_server_config(kt: KeyType) -> ServerConfig { - finish_server_config(kt, ServerConfig::builder().with_safe_defaults()) -} - -pub fn make_server_config_with_versions( - kt: KeyType, - versions: &[&'static rustls::SupportedProtocolVersion], -) -> ServerConfig { - finish_server_config( - kt, - ServerConfig::builder() - .with_safe_default_cipher_suites() - .with_safe_default_kx_groups() - .with_protocol_versions(versions) - .unwrap(), - ) -} - -pub fn make_server_config_with_kx_groups( - kt: KeyType, - kx_groups: &[&'static rustls::SupportedKxGroup], -) -> ServerConfig { - finish_server_config( - kt, - ServerConfig::builder() - .with_safe_default_cipher_suites() - .with_kx_groups(kx_groups) - .with_safe_default_protocol_versions() - .unwrap(), - ) -} - -pub fn get_client_root_store(kt: KeyType) -> RootCertStore { - let roots = kt.get_chain(); - let mut client_auth_roots = RootCertStore::empty(); - for root in roots { - client_auth_roots.add(&root).unwrap(); - } - client_auth_roots -} - -pub fn make_server_config_with_mandatory_client_auth(kt: KeyType) -> ServerConfig { - let client_auth_roots = get_client_root_store(kt); - - let client_auth = AllowAnyAuthenticatedClient::new(client_auth_roots); - - ServerConfig::builder() - .with_safe_defaults() - .with_client_cert_verifier(client_auth) - .with_single_cert(kt.get_chain(), kt.get_key()) - .unwrap() -} - -pub fn finish_client_config( - kt: KeyType, - config: rustls::ConfigBuilder, -) -> ClientConfig { - let mut root_store = RootCertStore::empty(); - let mut rootbuf = io::BufReader::new(kt.bytes_for("ca.cert")); - root_store.add_parsable_certificates(&rustls_pemfile::certs(&mut rootbuf).unwrap()); - - config - .with_root_certificates(root_store) - .with_no_client_auth() -} - -pub fn finish_client_config_with_creds( - kt: KeyType, - config: rustls::ConfigBuilder, -) -> ClientConfig { - let mut root_store = RootCertStore::empty(); - let mut rootbuf = io::BufReader::new(kt.bytes_for("ca.cert")); - root_store.add_parsable_certificates(&rustls_pemfile::certs(&mut rootbuf).unwrap()); - - config - .with_root_certificates(root_store) - .with_single_cert(kt.get_client_chain(), kt.get_client_key()) - .unwrap() -} - -pub fn make_client_config(kt: KeyType) -> ClientConfig { - finish_client_config(kt, ClientConfig::builder().with_safe_defaults()) -} - -pub fn make_client_config_with_kx_groups( - kt: KeyType, - kx_groups: &[&'static rustls::SupportedKxGroup], -) -> ClientConfig { - let builder = ClientConfig::builder() - .with_safe_default_cipher_suites() - .with_kx_groups(kx_groups) - .with_safe_default_protocol_versions() - .unwrap(); - finish_client_config(kt, builder) -} - -pub fn make_client_config_with_versions( - kt: KeyType, - versions: &[&'static rustls::SupportedProtocolVersion], -) -> ClientConfig { - let builder = ClientConfig::builder() - .with_safe_default_cipher_suites() - .with_safe_default_kx_groups() - .with_protocol_versions(versions) - .unwrap(); - finish_client_config(kt, builder) -} - -pub fn make_client_config_with_auth(kt: KeyType) -> ClientConfig { - finish_client_config_with_creds(kt, ClientConfig::builder().with_safe_defaults()) -} - -pub fn make_client_config_with_versions_with_auth( - kt: KeyType, - versions: &[&'static rustls::SupportedProtocolVersion], -) -> ClientConfig { - let builder = ClientConfig::builder() - .with_safe_default_cipher_suites() - .with_safe_default_kx_groups() - .with_protocol_versions(versions) - .unwrap(); - finish_client_config_with_creds(kt, builder) -} - -pub fn make_pair(kt: KeyType) -> (ClientConnection, ServerConnection) { - make_pair_for_configs(make_client_config(kt), make_server_config(kt)) -} - -pub fn make_pair_for_configs( - client_config: ClientConfig, - server_config: ServerConfig, -) -> (ClientConnection, ServerConnection) { - make_pair_for_arc_configs(&Arc::new(client_config), &Arc::new(server_config)) -} - -pub fn make_pair_for_arc_configs( - client_config: &Arc, - server_config: &Arc, -) -> (ClientConnection, ServerConnection) { - ( - ClientConnection::new(Arc::clone(client_config), dns_name("localhost")).unwrap(), - ServerConnection::new(Arc::clone(server_config)).unwrap(), - ) -} - -pub fn do_handshake( - client: &mut (impl DerefMut + Deref>), - server: &mut (impl DerefMut + Deref>), -) -> (usize, usize) { - let (mut to_client, mut to_server) = (0, 0); - while server.is_handshaking() || client.is_handshaking() { - to_server += transfer(client, server); - server.process_new_packets().unwrap(); - to_client += transfer(server, client); - client.process_new_packets().unwrap(); - } - (to_server, to_client) -} - -#[derive(PartialEq, Debug)] -pub enum ErrorFromPeer { - Client(Error), - Server(Error), -} - -pub fn do_handshake_until_error( - client: &mut ClientConnection, - server: &mut ServerConnection, -) -> Result<(), ErrorFromPeer> { - while server.is_handshaking() || client.is_handshaking() { - transfer(client, server); - server - .process_new_packets() - .map_err(ErrorFromPeer::Server)?; - transfer(server, client); - client - .process_new_packets() - .map_err(ErrorFromPeer::Client)?; - } - - Ok(()) -} - -pub fn do_handshake_until_both_error( - client: &mut ClientConnection, - server: &mut ServerConnection, -) -> Result<(), Vec> { - match do_handshake_until_error(client, server) { - Err(server_err @ ErrorFromPeer::Server(_)) => { - let mut errors = vec![server_err]; - transfer(server, client); - let client_err = client - .process_new_packets() - .map_err(ErrorFromPeer::Client) - .expect_err("client didn't produce error after server error"); - errors.push(client_err); - Err(errors) - } - - Err(client_err @ ErrorFromPeer::Client(_)) => { - let mut errors = vec![client_err]; - transfer(client, server); - let server_err = server - .process_new_packets() - .map_err(ErrorFromPeer::Server) - .expect_err("server didn't produce error after client error"); - errors.push(server_err); - Err(errors) - } - - Ok(()) => Ok(()), - } -} - -pub fn dns_name(name: &'static str) -> rustls::ServerName { - name.try_into().unwrap() -} - -pub struct FailsReads { - errkind: io::ErrorKind, -} - -impl FailsReads { - pub fn new(errkind: io::ErrorKind) -> Self { - FailsReads { errkind } - } -} - -impl io::Read for FailsReads { - fn read(&mut self, _b: &mut [u8]) -> io::Result { - Err(io::Error::from(self.errkind)) - } -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/tests/key_log_file_env.rs temporalio-1.3.0/vendor/rustls-0.20.8/tests/key_log_file_env.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/tests/key_log_file_env.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/tests/key_log_file_env.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,104 +0,0 @@ -//! Tests of [`rustls::KeyLogFile`] that require us to set environment variables. -//! -//! vvvv -//! Every test you add to this file MUST execute through `serialized()`. -//! ^^^^ -//! -//! See https://github.com/rust-lang/rust/issues/90308; despite not being marked -//! `unsafe`, `env::var::set_var` is an unsafe function. These tests are separated -//! from the rest of the tests so that their use of `set_ver` is less likely to -//! affect them; as of the time these tests were moved to this file, Cargo will -//! compile each test suite file to a separate executable, so these will be run -//! in a completely separate process. This way, executing every test through -//! `serialized()` will cause them to be run one at a time. -//! -//! Note: If/when we add new constructors to `KeyLogFile` to allow constructing -//! one from a path directly (without using an environment variable), then those -//! tests SHOULD NOT go in this file. -//! -//! XXX: These tests don't actually test the functionality; they just ensure -//! the code coverage doesn't complain it isn't covered. TODO: Verify that the -//! file was created successfully, with the right permissions, etc., and that it -//! contains something like what we expect. - -#[allow(dead_code)] -mod common; - -use crate::common::{ - do_handshake, make_client_config_with_versions, make_pair_for_arc_configs, make_server_config, - transfer, KeyType, -}; -use std::{ - env, - io::Write, - sync::{Arc, Mutex, Once}, -}; - -/// Approximates `#[serial]` from the `serial_test` crate. -/// -/// No attempt is made to recover from a poisoned mutex, which will -/// happen when `f` panics. In other words, all the tests that use -/// `serialized` will start failing after one test panics. -fn serialized(f: impl FnOnce()) { - // Ensure every test is run serialized - // TODO: Use `std::sync::Lazy` once that is stable. - static mut MUTEX: Option> = None; - static ONCE: Once = Once::new(); - ONCE.call_once(|| unsafe { - MUTEX = Some(Mutex::new(())); - }); - let mutex = unsafe { MUTEX.as_mut() }; - - let _guard = mutex.unwrap().lock().unwrap(); - - // XXX: NOT thread safe. - env::set_var("SSLKEYLOGFILE", "./sslkeylogfile.txt"); - - f() -} - -#[test] -fn exercise_key_log_file_for_client() { - serialized(|| { - let server_config = Arc::new(make_server_config(KeyType::Rsa)); - env::set_var("SSLKEYLOGFILE", "./sslkeylogfile.txt"); - - for version in rustls::ALL_VERSIONS { - let mut client_config = make_client_config_with_versions(KeyType::Rsa, &[version]); - client_config.key_log = Arc::new(rustls::KeyLogFile::new()); - - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - - assert_eq!(5, client.writer().write(b"hello").unwrap()); - - do_handshake(&mut client, &mut server); - transfer(&mut client, &mut server); - server.process_new_packets().unwrap(); - } - }) -} - -#[test] -fn exercise_key_log_file_for_server() { - serialized(|| { - let mut server_config = make_server_config(KeyType::Rsa); - - env::set_var("SSLKEYLOGFILE", "./sslkeylogfile.txt"); - server_config.key_log = Arc::new(rustls::KeyLogFile::new()); - - let server_config = Arc::new(server_config); - - for version in rustls::ALL_VERSIONS { - let client_config = make_client_config_with_versions(KeyType::Rsa, &[version]); - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - - assert_eq!(5, client.writer().write(b"hello").unwrap()); - - do_handshake(&mut client, &mut server); - transfer(&mut client, &mut server); - server.process_new_packets().unwrap(); - } - }) -} diff -Nru temporalio-1.3.0/vendor/rustls-0.20.8/tests/server_cert_verifier.rs temporalio-1.3.0/vendor/rustls-0.20.8/tests/server_cert_verifier.rs --- temporalio-1.3.0/vendor/rustls-0.20.8/tests/server_cert_verifier.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-0.20.8/tests/server_cert_verifier.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,272 +0,0 @@ -//! Tests for configuring and using a [`ServerCertVerifier`] for a client. - -#![cfg(feature = "dangerous_configuration")] - -mod common; -use crate::common::{ - do_handshake, do_handshake_until_both_error, make_client_config_with_versions, - make_pair_for_arc_configs, make_server_config, ErrorFromPeer, ALL_KEY_TYPES, -}; -use rustls::client::{ - HandshakeSignatureValid, ServerCertVerified, ServerCertVerifier, WebPkiVerifier, -}; -use rustls::internal::msgs::handshake::DigitallySignedStruct; -use rustls::AlertDescription; -use rustls::{Certificate, Error, SignatureScheme}; -use std::sync::Arc; - -#[test] -fn client_can_override_certificate_verification() { - for kt in ALL_KEY_TYPES.iter() { - let verifier = Arc::new(MockServerVerifier::accepts_anything()); - - let server_config = Arc::new(make_server_config(*kt)); - - for version in rustls::ALL_VERSIONS { - let mut client_config = make_client_config_with_versions(*kt, &[version]); - client_config - .dangerous() - .set_certificate_verifier(verifier.clone()); - - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - do_handshake(&mut client, &mut server); - } - } -} - -#[test] -fn client_can_override_certificate_verification_and_reject_certificate() { - for kt in ALL_KEY_TYPES.iter() { - let verifier = Arc::new(MockServerVerifier::rejects_certificate( - Error::CorruptMessage, - )); - - let server_config = Arc::new(make_server_config(*kt)); - - for version in rustls::ALL_VERSIONS { - let mut client_config = make_client_config_with_versions(*kt, &[version]); - client_config - .dangerous() - .set_certificate_verifier(verifier.clone()); - - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - let errs = do_handshake_until_both_error(&mut client, &mut server); - assert_eq!( - errs, - Err(vec![ - ErrorFromPeer::Client(Error::CorruptMessage), - ErrorFromPeer::Server(Error::AlertReceived(AlertDescription::BadCertificate)) - ]) - ); - } - } -} - -#[cfg(feature = "tls12")] -#[test] -fn client_can_override_certificate_verification_and_reject_tls12_signatures() { - for kt in ALL_KEY_TYPES.iter() { - let mut client_config = make_client_config_with_versions(*kt, &[&rustls::version::TLS12]); - let verifier = Arc::new(MockServerVerifier::rejects_tls12_signatures( - Error::CorruptMessage, - )); - - client_config - .dangerous() - .set_certificate_verifier(verifier); - - let server_config = Arc::new(make_server_config(*kt)); - - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - let errs = do_handshake_until_both_error(&mut client, &mut server); - assert_eq!( - errs, - Err(vec![ - ErrorFromPeer::Client(Error::CorruptMessage), - ErrorFromPeer::Server(Error::AlertReceived(AlertDescription::BadCertificate)) - ]) - ); - } -} - -#[test] -fn client_can_override_certificate_verification_and_reject_tls13_signatures() { - for kt in ALL_KEY_TYPES.iter() { - let mut client_config = make_client_config_with_versions(*kt, &[&rustls::version::TLS13]); - let verifier = Arc::new(MockServerVerifier::rejects_tls13_signatures( - Error::CorruptMessage, - )); - - client_config - .dangerous() - .set_certificate_verifier(verifier); - - let server_config = Arc::new(make_server_config(*kt)); - - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - let errs = do_handshake_until_both_error(&mut client, &mut server); - assert_eq!( - errs, - Err(vec![ - ErrorFromPeer::Client(Error::CorruptMessage), - ErrorFromPeer::Server(Error::AlertReceived(AlertDescription::BadCertificate)) - ]) - ); - } -} - -#[test] -fn client_can_override_certificate_verification_and_offer_no_signature_schemes() { - for kt in ALL_KEY_TYPES.iter() { - let verifier = Arc::new(MockServerVerifier::offers_no_signature_schemes()); - - let server_config = Arc::new(make_server_config(*kt)); - - for version in rustls::ALL_VERSIONS { - let mut client_config = make_client_config_with_versions(*kt, &[version]); - client_config - .dangerous() - .set_certificate_verifier(verifier.clone()); - - let (mut client, mut server) = - make_pair_for_arc_configs(&Arc::new(client_config), &server_config); - let errs = do_handshake_until_both_error(&mut client, &mut server); - assert_eq!( - errs, - Err(vec![ - ErrorFromPeer::Server(Error::PeerIncompatibleError( - "no overlapping sigschemes".into() - )), - ErrorFromPeer::Client(Error::AlertReceived(AlertDescription::HandshakeFailure)), - ]) - ); - } - } -} - -pub struct MockServerVerifier { - cert_rejection_error: Option, - tls12_signature_error: Option, - tls13_signature_error: Option, - wants_scts: bool, - signature_schemes: Vec, -} - -impl ServerCertVerifier for MockServerVerifier { - fn verify_server_cert( - &self, - end_entity: &rustls::Certificate, - intermediates: &[rustls::Certificate], - server_name: &rustls::ServerName, - scts: &mut dyn Iterator, - oscp_response: &[u8], - now: std::time::SystemTime, - ) -> Result { - let scts: Vec> = scts.map(|x| x.to_owned()).collect(); - println!( - "verify_server_cert({:?}, {:?}, {:?}, {:?}, {:?}, {:?})", - end_entity, intermediates, server_name, scts, oscp_response, now - ); - if let Some(error) = &self.cert_rejection_error { - Err(error.clone()) - } else { - Ok(ServerCertVerified::assertion()) - } - } - - fn verify_tls12_signature( - &self, - message: &[u8], - cert: &Certificate, - dss: &DigitallySignedStruct, - ) -> Result { - println!( - "verify_tls12_signature({:?}, {:?}, {:?})", - message, cert, dss - ); - if let Some(error) = &self.tls12_signature_error { - Err(error.clone()) - } else { - Ok(HandshakeSignatureValid::assertion()) - } - } - - fn verify_tls13_signature( - &self, - message: &[u8], - cert: &Certificate, - dss: &DigitallySignedStruct, - ) -> Result { - println!( - "verify_tls13_signature({:?}, {:?}, {:?})", - message, cert, dss - ); - if let Some(error) = &self.tls13_signature_error { - Err(error.clone()) - } else { - Ok(HandshakeSignatureValid::assertion()) - } - } - - fn supported_verify_schemes(&self) -> Vec { - self.signature_schemes.clone() - } - - fn request_scts(&self) -> bool { - println!("request_scts? {:?}", self.wants_scts); - self.wants_scts - } -} - -impl MockServerVerifier { - pub fn accepts_anything() -> Self { - MockServerVerifier { - cert_rejection_error: None, - ..Default::default() - } - } - - pub fn rejects_certificate(err: Error) -> Self { - MockServerVerifier { - cert_rejection_error: Some(err), - ..Default::default() - } - } - - pub fn rejects_tls12_signatures(err: Error) -> Self { - MockServerVerifier { - tls12_signature_error: Some(err), - ..Default::default() - } - } - - pub fn rejects_tls13_signatures(err: Error) -> Self { - MockServerVerifier { - tls13_signature_error: Some(err), - ..Default::default() - } - } - - pub fn offers_no_signature_schemes() -> Self { - MockServerVerifier { - signature_schemes: vec![], - ..Default::default() - } - } -} - -impl Default for MockServerVerifier { - fn default() -> Self { - MockServerVerifier { - cert_rejection_error: None, - tls12_signature_error: None, - tls13_signature_error: None, - wants_scts: false, - signature_schemes: WebPkiVerifier::verification_schemes(), - } - } -} diff -Nru temporalio-1.3.0/vendor/rustls-webpki/.cargo-checksum.json temporalio-1.3.0/vendor/rustls-webpki/.cargo-checksum.json --- temporalio-1.3.0/vendor/rustls-webpki/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"e0af190e99f6a8b47776d076a1d58ca1d2334ce1db14171aaf92b53cf1c92e3b","LICENSE":"5b698ca13897be3afdb7174256fa1574f8c6892b8bea1a66dd6469d3fe27885a","README.md":"0877adbbc7f473bfeeb7e4833463ba56f16c5598fc966dc0244bcb2fc115438e","src/calendar.rs":"df963c446419f91b3ed340f859273cd191153b3fe0746338179c193da7bfa370","src/cert.rs":"130e504fe219d49a15853d19f12db9c3dc46c95be39607e2b3e4396585a23873","src/crl.rs":"5c103cceb0be8479a6788357972259ac5a8c19af259443992ec5367ea40ab899","src/data/README.md":"d11d9e6adfe7c9e84d9c5956e5257eb656640f817aab391d3eef4878a73aeb20","src/data/alg-ecdsa-p256.der":"431ab0da5859f972141d7a6b17bfff1006ec2465878890eecacf4764748f999a","src/data/alg-ecdsa-p384.der":"a6307e2efeff1b4db45622b626b9a0f2b6395be5dd4024a899c057e512a0207e","src/data/alg-ecdsa-sha256.der":"8748ad98184c8f81b5db874ef1b7d3599afe05e2f92dac215a77f45e9b0699bc","src/data/alg-ecdsa-sha384.der":"5f6e0dc69f6930ca890ebcafaf7677254640b931439cd5bcad7688b1a06aaf92","src/data/alg-ed25519.der":"0b6d661fe75a1ce7a832d515b39b504032f1a6cbb67a5113fa74d635d038f4d9","src/data/alg-rsa-encryption.der":"7bc023427767a2f2e156f8ae030d06d19f862e326b952116649b423c3ff7110e","src/data/alg-rsa-pkcs1-sha256.der":"c0d1c5108d05adfdf58c73697af5c4e644d1a09fb2e4a76361c048eb0ec7a219","src/data/alg-rsa-pkcs1-sha384.der":"d3e50513620bac7e02f5c1821c569cf4fc2ca5a891fd1103e36574c77e6a888a","src/data/alg-rsa-pkcs1-sha512.der":"3705399877ad5d5bb559e5b5ed3cd80b352166511c2fd2b8f8959e1176ed72f8","src/data/alg-rsa-pss-sha256.der":"6eeb65499d8c64c3ef3e74305f2daaca0d947e7fca735ad072b5581392d73068","src/data/alg-rsa-pss-sha384.der":"b6e27adae679feb8f49925f4457da316657a6b7a55a1bfd164c66eec59d7d090","src/data/alg-rsa-pss-sha512.der":"60cea04c0dcb23c248eb644fe036d1b6b883004f73c68785895c885c8fa5d688","src/der.rs":"32dc48ae40ab8cb46d9ef7f5732b74270c5ada66ad8759f1365f679bc87b5eeb","src/end_entity.rs":"0476dcaeca3dab7762bc2c6909b66a4933ff1e5179816a6b8410a0c53a080dfb","src/error.rs":"c353785a6f8f48aac1371d38a73b820ea3042369d363c099bfcbeeb52f01be05","src/lib.rs":"0dd9d72fc883c79c443d1abdb60898c460e3edd637c47dee839ad0b21686c95d","src/signed_data.rs":"f89dba5c907dae8d74c942c81b5abbcde8b70d033b61d0a0e2d907f3f43d2886","src/subject_name/dns_name.rs":"c8f1ba67c6dd7cafa625fd7c62e38f83fa4afcf79aa577801e2c3535f8eac943","src/subject_name/ip_address.rs":"0d4349c13d733c9dc8d627801249e841090bc856a256ba3993b6acd88f79561e","src/subject_name/mod.rs":"d0933652196705254bc62cfc033c22f210edda4d2667711088b223b53db4b53d","src/subject_name/name.rs":"444271ffd4fe5887b007837418b8d2445c1774d2fe68e67fecd832fc167309a3","src/subject_name/verify.rs":"9e02578175a7feb1d59a1195f177136495e4365c1fd53d51657994fc7cf79530","src/time.rs":"8a8b5b58b6965fd4e99a19bb30c9a555f1ca0381f655b12de897ef8e4876b718","src/trust_anchor.rs":"0a3dc9379ba9aabd1d4a87b1fd696157e85a49fdc774c8f4aeaa6c8646126645","src/verify_cert.rs":"01ca2a8819a063b9b3e854d06155b38b1b41793bec35292a136bf39ed713703d","src/x509.rs":"6eb8d9a08e01c4929e6525be7d5116a305116a734d85b2b1caeb1ee5a4a80480","tests/cert_v1.der":"279525aad39bc81a5acf2c627465efcbae27c99e1a5592bc54eae2dd42e21202","tests/cert_v1_unsupported.rs":"b726441de36f4c835bb69540cd1834ae5bde1ae59b4027654022dc4fc8b1b89e","tests/cert_without_extensions.der":"e4e3026c9d34b95c0cf2195c27129a9a1f554cb70a3d98842ef98adc6a93840d","tests/cert_without_extensions.rs":"b27b85333a917ac7123cfcf36ca84493166ebced5264741db23baddee0507f9d","tests/client_auth.rs":"4700510e469c3fc79dd90d040fd4fd4f22e347af2e821e5ad1e98b7368590b77","tests/client_auth/cert_with_both_ekus_accepted_for_client_auth.ca.der":"ee258d486061e3aec52f3b9247c3bbd0f58ef4844a4c14747f13c5b0af2404fd","tests/client_auth/cert_with_both_ekus_accepted_for_client_auth.ee.der":"862e83148171e2657be2b1649156ccec9a95cb3633cd3f134483bbb15e133201","tests/client_auth/cert_with_clientauth_eku_accepted_for_client_auth.ca.der":"91beefbba3ae4b05ffb3929e90f99de544e1846b095d7ef6b6433e757cb8009c","tests/client_auth/cert_with_clientauth_eku_accepted_for_client_auth.ee.der":"8aa5a5be63ca3e88ddd20e09eb2038ebe70bb58d3d147160d4eefda72dfe6eab","tests/client_auth/cert_with_no_eku_accepted_for_client_auth.ca.der":"d8f82020f500c88864aae535d9541b6849c5cead5aa1877118d6406e87568c3f","tests/client_auth/cert_with_no_eku_accepted_for_client_auth.ee.der":"cee23b40cbc953a4385d59106af6a4c47721e43b3dd79090a92f6c54aa839332","tests/client_auth/cert_with_serverauth_eku_rejected_for_client_auth.ca.der":"76cf496eb4253045bcc963acba7821281dd80a3001b19095859bf7b0e40c5aec","tests/client_auth/cert_with_serverauth_eku_rejected_for_client_auth.ee.der":"d42007af062e5a3d32ae1477e8406ff9c105b49d1c6d04bbcfc20b91aeb4551c","tests/client_auth_revocation.rs":"d983d4dd2d08ebb655aebe514a43b2a3a943d7be851dfd5b635cae3bacfc32bd","tests/client_auth_revocation/ee_not_revoked_ee_depth.crl.der":"303fb87cb139f8be8c8ddc637427ec3406f896c2d64288359886823c2cbf625e","tests/client_auth_revocation/ee_not_revoked_wrong_ku_ee_depth.crl.der":"0a8f095121f33f6d99b6f274795dd1e85ef924da9d768e5ebbdd65c6b65599b3","tests/client_auth_revocation/ee_revoked_badsig_ee_depth.crl.der":"cc27f7f7d69be76db8afacc46d05721c6558894769549839b195cfb880706580","tests/client_auth_revocation/ee_revoked_chain_depth.crl.der":"053fa7fc5d4beffef4ff51eeca6b64ec42c4c31d6d806a2053ae0d01c67fbdd2","tests/client_auth_revocation/ee_revoked_crl_ku_ee_depth.crl.der":"b3dd5ff5af766fbe3593daf46f3ec828ef570890c0e6aca95964402304056731","tests/client_auth_revocation/ee_revoked_no_ku_ee_depth.crl.der":"34dc28b1176fe12fa094633f1ef727868f97237799dfb244e505d310864e6de4","tests/client_auth_revocation/ee_revoked_wrong_ku_ee_depth.crl.der":"e1422e5e348562940534ad5f1e0a356ac4e969346310ca788b7919cf9b029e3f","tests/client_auth_revocation/int_not_revoked_chain_depth.crl.der":"fad7b34665a84b16f8a3c33b297f20788b820d94d78a856a6eca2e24c29add9f","tests/client_auth_revocation/int_revoked_badsig_chain_depth.crl.der":"4125202e895a92cbb31ac3788241b88d8ff77ce0cbc37ed67e2223962ef02e47","tests/client_auth_revocation/int_revoked_crl_ku_chain_depth.crl.der":"c93d63fd171622716930aa5fab7db0005c4b9eed35ebcc089ea509ee3255cbd6","tests/client_auth_revocation/int_revoked_ee_depth.crl.der":"62e0157668bb2a0ab1f9f8a9ee4ac263c3f2344c6c3536251e91e647339814fd","tests/client_auth_revocation/int_revoked_no_ku_chain_depth.crl.der":"c9f8caa75b349e5da8fede55c7ceb33069c94ed022f36c74fb6b272752c22305","tests/client_auth_revocation/int_revoked_wrong_ku_chain_depth.crl.der":"26ca449f086055e9f926cb939ef5aea216be3efca6c2d0df920f91875e9cef47","tests/client_auth_revocation/ku_chain.ee.der":"679a8e5d807eabeeec154e547af796721340fb781dbdfb07e1b520e8636de92d","tests/client_auth_revocation/ku_chain.int.a.ca.der":"663ee65f93c57999d3b7ded965b81e9640fc2100175e222c49fe8bcc660b2e71","tests/client_auth_revocation/ku_chain.int.b.ca.der":"8acd437d90a4ab2ef6b83c2e506dbe37fee82b4a38040facea566d84362d79e9","tests/client_auth_revocation/ku_chain.root.ca.der":"2281c1b7f961034a2e7d5eb1e1d4ef9c8a3b0f87c82ac3da23bdbd9f15298978","tests/client_auth_revocation/no_crl_ku_chain.ee.der":"04c2608c4a55e5e7833943e3251018a0442b5061d6107a79da0ca44c2cd0a6c5","tests/client_auth_revocation/no_crl_ku_chain.int.a.ca.der":"84f6fee8930feb7e67e22f153483c8672a89e6b0ef4c93e6ca2c13e985a25337","tests/client_auth_revocation/no_crl_ku_chain.int.b.ca.der":"26544f14f63f00e775bf5456b4f477e6b613bae708a59dc3fb34662ddc6e1832","tests/client_auth_revocation/no_crl_ku_chain.root.ca.der":"1ac0732b641fdcf0942e4a3638ad23059b63925c33a0ae3a1ce2814a6197e5cb","tests/client_auth_revocation/no_ku_chain.ee.der":"4702bb81ca729a34c6c3d96bdec1be039c1965a710ee3697cd1fc7bbd2b0f766","tests/client_auth_revocation/no_ku_chain.int.a.ca.der":"b23f157b321b599457041040b4e807a52ba237f05607c35ae2e755287b5e3002","tests/client_auth_revocation/no_ku_chain.int.b.ca.der":"186aa49d88f5bd2906103e0e291120e75ca7826e1eee8d26e8e89cf0db6e50a2","tests/client_auth_revocation/no_ku_chain.root.ca.der":"42160d65ae389a3735997e0a89158a3e5489d574043d80a40cfecd238927e93a","tests/client_auth_revocation/no_relevant_crl_chain_depth.crl.der":"76abac308fc66ab483007c49d46b7fecfd5d3d6ef1fcbb696890cc389ec14790","tests/client_auth_revocation/no_relevant_crl_ee_depth.crl.der":"4d963f40b27337fc21a55cdb5e9735b4b2cba2efff6a2853f2786c6ff35b623d","tests/cloudflare_dns/ca.der":"4348a0e9444c78cb265e058d5e8944b4d84f9662bd26db257f8934a443c70161","tests/cloudflare_dns/ee.der":"c93386adf01223e637a3aca7c68988bb8240c4afd5d204c206bc35d7a4358dd1","tests/cloudflare_dns/inter.der":"f7a9a1b2fd964a3f2670bd668d561fb7c55d3aa9ab8391e7e169702db8a3dbcf","tests/critical_extensions/ca-cert.der":"c831adbef65eef4471fe080fdddd014f9c7e9f0a74dfcae9d006845779c28f18","tests/critical_extensions/ee-cert-crit-unknown-ext.der":"ad2f19e1c6ef15ee2454dc6389136c9d10e39042d9d8a780e7dbf1f776f49bcb","tests/critical_extensions/ee-cert-noncrit-unknown-ext.der":"ac0940abccf9d5b306e8249fa81192c5860ed7f100bbb21958bd4159f959fd66","tests/critical_extensions/root-cert.der":"bb84c781924c01365e65ae27ce26dfd5d4b8f2fd5760cd27d30fe78e5ab73f1a","tests/crl_tests.rs":"482571c6dd93739e02efae318cf94567e316ff0b43746377747f94528d7c4399","tests/crls/crl.delta.der":"4db8e3afdb4bc3294df99c4272d9576870444ae78a99fd74c8c6be06275dc910","tests/crls/crl.empty.der":"3b7cbd19ad57c6d13954a9391af5b71667373ffae3972a34506a9bfbd3dc531c","tests/crls/crl.entry.empty.ext.seq.der":"c8c61b5c7c72b23cd567663b9b96c930db7ce11ab5b50c5f4a8cc2968a308ecf","tests/crls/crl.entry.invalid.reason.der":"1985e315682f94a8c64d00024f7d0713724c8ed5d60ac5942740a3b9b28806fe","tests/crls/crl.entry.invalidity.date.der":"1891a1f988b8c0fc7cacbef676aeb21cbbf09ca9fac4286ec419882435cf7b0f","tests/crls/crl.entry.issuer.ext.der":"87686302b0181224568164fde1b9afcfe641109488e08f642f4ef80147b29318","tests/crls/crl.entry.unknown.crit.ext.der":"9637ab7f628712403e6522c13c9ff1e525f5631279ae979f33a6a155f781be01","tests/crls/crl.invalid.this.update.time.der":"59c10f7b1e166e70b42e82170e6434e93b84878b09c8f4001c102cea9622b9fb","tests/crls/crl.mismatched.sigalg.der":"db9cee4f2a8de9a82cc6648fa5e87737a274ab9d63e6134ad58a4ef322b06771","tests/crls/crl.missing.exts.der":"b567ff704a3386c67f2dc31926c4bc906f90b5317e4aed17d89aaa698baaa225","tests/crls/crl.missing.next.update.der":"151a3b36b114ed421771b41a38dd7c5b4a6f2beebca1267fadb1b19f6a519d64","tests/crls/crl.negative.crl.number.der":"17686b88515b10cb526de6713e9f08ccd0ef6ac728fd03078d2e08a539ba3f1c","tests/crls/crl.negative.serial.der":"66c255ea61419edecc3bb1edff9bd2f463373abba7b3e3fc45e0367ba59088d0","tests/crls/crl.no.entry.exts.der":"44b5bcf39fb8e51aba2d1ac5e80dca8fc995ee2611a82dea2285a73529aeb631","tests/crls/crl.unknown.crit.ext.der":"733d6f91d4add170b228ac5d6eba4f1f7ee545d9fc5f173d5b190864bfa4baff","tests/crls/crl.valid.der":"53be7efd30bbf5e41827477c9b8f70fd27ec9dc66082457f833ac1890e04493a","tests/crls/crl.wrong.version.der":"e23c4392fe9bf4f11706cf7f7c3b9cc055c8b96644b84eb4c2d63fcb4fedfb6a","tests/dns_name_tests.rs":"21c6d8d98b3e8171af411fe665a53a4cbbbecc6c1ec83f956e1f1bb49b283783","tests/ed25519/ca.der":"57c4b8e513e17954a5e0e4e11a63937c52507d1ffd36436e2b76e9b789ff1a2b","tests/ed25519/ee.der":"f32db7607b3c15ca3203d1c93064a47c5977288c5b2faa6ca2b11bf22b02911a","tests/generate.py":"79adb6d4d4a0e97603bd8f2bb360e39f9ad79a9a82234130634550cad6ad0e2e","tests/integration.rs":"bcf9c3996acd9a0d0ec535863146584720311851cc18c7129177ca6b85caa755","tests/misc/dns_names_and_wildcards.der":"c91649143ab3b802122680aae43081861fd516893619adb1a1ebe743dc4a8433","tests/misc/invalid_subject_alternative_name.der":"6d5b2c95741aaa137bf85f432f7fe9075f8453aee4c011f048c9d19022130502","tests/misc/no_subject_alternative_name.der":"d0f636166e7ed117b71210e8ef35d366dcdbb99c3115963de3d9bfa9434a6e2b","tests/misc/serial_large_positive.der":"fabcf5197cdd7f458ac33832d3284021db2425fd6bea7a2e69b7486e8f51f9cc","tests/misc/serial_neg.der":"88497f01602f3154246ae28c4d5aef10f1d87ebb76626f4ae0b7f95ba7968799","tests/misc/serial_neg_ca.der":"ecb494255fd4bc67d84885745cb94a73257ece659a6463b1c8e285dabf2a5f3f","tests/misc/serial_neg_ee.der":"9ca51eef5122dfaaae657557b6666e110b959586100a27a2930c98b95bfbc889","tests/misc/serial_zero.der":"c3846bf24b9e93ca64274c0ec67c1ecc5e024ffcacd2d74019350e81fe546ae4","tests/name_tests.rs":"0c78fa8681459f0fc5becb49c00a2d24a5a0c8eda2d13e293dbfabf5881042c5","tests/netflix/ca.der":"eb04cf5eb1f39afa762f2bb120f296cba520c1b97db1589565b81cb9a17b7244","tests/netflix/ee.der":"d58b0dcbd15594693041633bbc788af700df3f8f243a1e09afe8cc585010322c","tests/netflix/inter.der":"564dbc6a76550fd2d4f4bac6448a1157b33cbd8e0b3fd76d72107540964a85b5","tests/signatures.rs":"9b18ca98291850f2718d3b60bb6ffc7d328f5f1c0eb75f4f3f88dd93d6d03d1f","tests/signatures/ecdsa_p256.ee.der":"247ae99780fadd57eebe39105bf38db6654e3caf067dcfa0bdbed76a4d6cfefa","tests/signatures/ecdsa_p256_key_and_ecdsa_p256_sha256_detects_bad_signature.sig.bin":"8d7cd91f0d149b71b2ad1d83516bb501e826250194ac7eb02f6ad3f5a5936aaf","tests/signatures/ecdsa_p256_key_and_ecdsa_p256_sha256_good_signature.sig.bin":"e8ca79cb3c644ca90582fe00138f53d5b56bb422c2b008eeea27b748a99cc1b4","tests/signatures/ecdsa_p256_key_and_ecdsa_p256_sha384_detects_bad_signature.sig.bin":"12401478c6103aa61d75c3bdfb07464dc37e9d120de0292149293432a7d2b262","tests/signatures/ecdsa_p256_key_and_ecdsa_p256_sha384_good_signature.sig.bin":"18b02e1c63bd0ed494d465fa9e9665b7f646b51f7f3be68cdabcd25f17adb211","tests/signatures/ecdsa_p384.ee.der":"4525a2191d596fc9ebd5e83d145b7634f4616e91c6a59ea25afbf1f01fc43960","tests/signatures/ecdsa_p384_key_and_ecdsa_p384_sha256_detects_bad_signature.sig.bin":"abe9843b6bd0fb9b2ed49b6c8d763a19bd3a889eb9799975741dd89d66ecc663","tests/signatures/ecdsa_p384_key_and_ecdsa_p384_sha256_good_signature.sig.bin":"eac03df587e98cd50de9059bc53c24f9a579cb7b1dbf5c86a4746469f28098e9","tests/signatures/ecdsa_p384_key_and_ecdsa_p384_sha384_detects_bad_signature.sig.bin":"06c3bcc3aa84fb9a1596eb96e7d25ebb2facb5aee623c87c477cd3acdeaa373f","tests/signatures/ecdsa_p384_key_and_ecdsa_p384_sha384_good_signature.sig.bin":"14184ee58a0a59b1e6f6dff97abe87f934e5223f2d0feeb039de5f48b0603557","tests/signatures/ecdsa_p521_not_supported.ee.der":"a40e20f2bf01ac22389342e5ecf34c6758d406cef0171e8d80cf7f88ebb1b87e","tests/signatures/ed25519.ee.der":"9602946381ff96e3079f7730987fdc1bf7f3d189675395fd1d8279dda2af1d6f","tests/signatures/ed25519_key_and_ed25519_detects_bad_signature.sig.bin":"175b5b979eee573e174cbc83e9e070d99a31479534682cb6f23c0636d8c01f08","tests/signatures/ed25519_key_and_ed25519_good_signature.sig.bin":"de87cd2bd2862e8fb0f20443d259e2175dd328707d1c6972b608271f47e9c8cb","tests/signatures/message.bin":"7509e5bda0c762d2bac7f90d758b5b2263fa01ccbc542ab5e3df163be08e6ca9","tests/signatures/rsa_1024_not_supported.ee.der":"ed18047742825851e7be563c8a17f554e41e43e4a85589a5c7cd07a443bf959c","tests/signatures/rsa_2048.ee.der":"3d86c053a608a9a973095be383defe7c8696aba329f0a5ece7ec80323a3839f5","tests/signatures/rsa_2048_key_and_rsa_pkcs1_2048_8192_sha256_detects_bad_signature.sig.bin":"abd83fd5aaa6565a5afc61fd2c6c1117a935a454479f2cb098880b1ff0c1db5c","tests/signatures/rsa_2048_key_and_rsa_pkcs1_2048_8192_sha256_good_signature.sig.bin":"a5871e373a49321bfc891f1400aa27170edc4dd4af982ee3dceda0660a39c920","tests/signatures/rsa_2048_key_and_rsa_pkcs1_2048_8192_sha384_detects_bad_signature.sig.bin":"e2ba0affee0fc1746d73537e935ec199a26f97252d5e0b96231afc531b6934d2","tests/signatures/rsa_2048_key_and_rsa_pkcs1_2048_8192_sha384_good_signature.sig.bin":"3dfd030dfc00f9d2db5d547cdbe18cb00cd7b3fad39cc49f25dde096cc8b3d0c","tests/signatures/rsa_2048_key_and_rsa_pkcs1_2048_8192_sha512_detects_bad_signature.sig.bin":"5dedc525f0025c5cf8295ca05f58b4a4124b3a3793cc976357b0b00bfa237a47","tests/signatures/rsa_2048_key_and_rsa_pkcs1_2048_8192_sha512_good_signature.sig.bin":"85c33ec108ef52537f07f7a430249a13fb7591e0ad6a366fdabf66997cf5bfc0","tests/signatures/rsa_2048_key_and_rsa_pss_2048_8192_sha256_legacy_key_detects_bad_signature.sig.bin":"a8d0773427211933e47f7a3f55b6ac287744ae084ce058a00a9b221dce0d8224","tests/signatures/rsa_2048_key_and_rsa_pss_2048_8192_sha256_legacy_key_good_signature.sig.bin":"d8b45d0822518e4ba1a134359027d8868050db72917b14083adbf20eb539b91b","tests/signatures/rsa_2048_key_and_rsa_pss_2048_8192_sha384_legacy_key_detects_bad_signature.sig.bin":"153e9949ee514974fbbcb780b7870f64484cdf0fac66eb307e75174f18e782d2","tests/signatures/rsa_2048_key_and_rsa_pss_2048_8192_sha384_legacy_key_good_signature.sig.bin":"fd3d686d731585a74347665577e4f6351ee71a16bb1d4364c67865c2121c4c74","tests/signatures/rsa_2048_key_and_rsa_pss_2048_8192_sha512_legacy_key_detects_bad_signature.sig.bin":"095d875e557f129200ca4aaa89a4780d85213d24ef9a3ba86a84befb629b8f6c","tests/signatures/rsa_2048_key_and_rsa_pss_2048_8192_sha512_legacy_key_good_signature.sig.bin":"0bcd71ae8043056a4c9dbbb7f7e248e61b63acf189bb4347442adb0c52b1174c","tests/signatures/rsa_2048_key_rejected_by_rsa_pkcs1_3072_8192_sha384.sig.bin":"3dfd030dfc00f9d2db5d547cdbe18cb00cd7b3fad39cc49f25dde096cc8b3d0c","tests/signatures/rsa_3072.ee.der":"199f0ca68362b48936efa223681b17835f695fbbe967f71613ae19a2e781cd4e","tests/signatures/rsa_3072_key_and_rsa_pkcs1_2048_8192_sha256_detects_bad_signature.sig.bin":"767329aeaadd1364a8b846716eafcc5e0ae0b09c4f0ac94fd5e188e35d84ff36","tests/signatures/rsa_3072_key_and_rsa_pkcs1_2048_8192_sha256_good_signature.sig.bin":"e3041546169ebde10e83a80c86d72911e40487e70cf3a87f4f8e10a3a19e5e75","tests/signatures/rsa_3072_key_and_rsa_pkcs1_2048_8192_sha384_detects_bad_signature.sig.bin":"26b5d03a7ab35b166cd7be6db7609612d54d534c8dcbbd4f55227afd881a9c3c","tests/signatures/rsa_3072_key_and_rsa_pkcs1_2048_8192_sha384_good_signature.sig.bin":"32b84eb763b5a8332088987a262de8a4c16ec23d4dca494c96c0157caf5fcd92","tests/signatures/rsa_3072_key_and_rsa_pkcs1_2048_8192_sha512_detects_bad_signature.sig.bin":"8656cc19b5a253dfb719905673224e5a0dd2dfdb6973edc7a96a7b53a5814230","tests/signatures/rsa_3072_key_and_rsa_pkcs1_2048_8192_sha512_good_signature.sig.bin":"bf3896ae6b36d0f2d838c06324f9ac17adc0ae7ad079953840c6a027ead6b5ec","tests/signatures/rsa_3072_key_and_rsa_pkcs1_3072_8192_sha384_detects_bad_signature.sig.bin":"26b5d03a7ab35b166cd7be6db7609612d54d534c8dcbbd4f55227afd881a9c3c","tests/signatures/rsa_3072_key_and_rsa_pkcs1_3072_8192_sha384_good_signature.sig.bin":"32b84eb763b5a8332088987a262de8a4c16ec23d4dca494c96c0157caf5fcd92","tests/signatures/rsa_3072_key_and_rsa_pss_2048_8192_sha256_legacy_key_detects_bad_signature.sig.bin":"b3e32f62def998b2fbd35274b8a3b5369462dce77ade58ebbde36593215933da","tests/signatures/rsa_3072_key_and_rsa_pss_2048_8192_sha256_legacy_key_good_signature.sig.bin":"321aa39d1bf66f7c79d275fcb672d50055f29d773da88e87803cfc07cc660abd","tests/signatures/rsa_3072_key_and_rsa_pss_2048_8192_sha384_legacy_key_detects_bad_signature.sig.bin":"b112217db3d27175f644f3fea327cd8edc0899fbb7902a162bc18079252cee1d","tests/signatures/rsa_3072_key_and_rsa_pss_2048_8192_sha384_legacy_key_good_signature.sig.bin":"8071a922c1b1f1fde67443b4466b04ebde663293367a9bd4cf15727ad069a778","tests/signatures/rsa_3072_key_and_rsa_pss_2048_8192_sha512_legacy_key_detects_bad_signature.sig.bin":"1960a573f2b64d3297561ce79e089b2c595c057ff2ca9cb6f1285ffb43285768","tests/signatures/rsa_3072_key_and_rsa_pss_2048_8192_sha512_legacy_key_good_signature.sig.bin":"03c73563bf35871f786672db96ead3d700b394bcd5db101fff6adea415d70163","tests/signatures/rsa_4096.ee.der":"124068fd0d1afcfe60a90e93dcc435eb3d66c67d72573bdfc42433c84478ff78","tests/signatures/rsa_4096_key_and_rsa_pkcs1_2048_8192_sha256_detects_bad_signature.sig.bin":"eea072745f379064b29fc2cfaa4adc569b5c85de327655776f078240ffd44a21","tests/signatures/rsa_4096_key_and_rsa_pkcs1_2048_8192_sha256_good_signature.sig.bin":"d9ef47fd19d51f7087623b2a1982fc55ca63e601f4bf3c9383d03cdb73ded83f","tests/signatures/rsa_4096_key_and_rsa_pkcs1_2048_8192_sha384_detects_bad_signature.sig.bin":"6728efa93127b24d9048cf966a9002336368faaa6e4b8181c61046c2bf646601","tests/signatures/rsa_4096_key_and_rsa_pkcs1_2048_8192_sha384_good_signature.sig.bin":"61cae3e754bbbdfee2dedca44b8d9cee5deab3cdf12c675e354221e252d7bcf5","tests/signatures/rsa_4096_key_and_rsa_pkcs1_2048_8192_sha512_detects_bad_signature.sig.bin":"aee8915b1715f90e71dc0d5ce802cd0174776330b0982d275b93b93e824c54b0","tests/signatures/rsa_4096_key_and_rsa_pkcs1_2048_8192_sha512_good_signature.sig.bin":"92d004eeff2e13ed180ab40a4766c0d40fda7dd0a46df3891b5a1469c5d5c06a","tests/signatures/rsa_4096_key_and_rsa_pkcs1_3072_8192_sha384_detects_bad_signature.sig.bin":"6728efa93127b24d9048cf966a9002336368faaa6e4b8181c61046c2bf646601","tests/signatures/rsa_4096_key_and_rsa_pkcs1_3072_8192_sha384_good_signature.sig.bin":"61cae3e754bbbdfee2dedca44b8d9cee5deab3cdf12c675e354221e252d7bcf5","tests/signatures/rsa_4096_key_and_rsa_pss_2048_8192_sha256_legacy_key_detects_bad_signature.sig.bin":"978f5cda5e488c6f6291c0e6758f8a52b21740a58dd893d96fb835b1ef7ca3e6","tests/signatures/rsa_4096_key_and_rsa_pss_2048_8192_sha256_legacy_key_good_signature.sig.bin":"ab4f834a8eca3fac7ee6678e26bcb73d02adfdf42f140eee05dca0296a4940a5","tests/signatures/rsa_4096_key_and_rsa_pss_2048_8192_sha384_legacy_key_detects_bad_signature.sig.bin":"7b4708e454550ad0401cd21495baa57184db241545efb4d0d24cb1ac670b33e3","tests/signatures/rsa_4096_key_and_rsa_pss_2048_8192_sha384_legacy_key_good_signature.sig.bin":"8af52539761dd5e302a8e28d1d4efcdad6a0d3ad8fca6946d0af3b7603469eb4","tests/signatures/rsa_4096_key_and_rsa_pss_2048_8192_sha512_legacy_key_detects_bad_signature.sig.bin":"8dbc4f1f687c0b562de89ca66e68828bf2c50f16040624dae4cb786244ce4d65","tests/signatures/rsa_4096_key_and_rsa_pss_2048_8192_sha512_legacy_key_good_signature.sig.bin":"6d0eb19350f668d98ebac9174888245f98afd7a102b77ee6832ce6aaafc0aa7e","tests/tls_server_certs.rs":"238fc299498b74bad0f03cf7396e8898c61c32478eb0745e1a7ac1ee8b6019dc","tests/tls_server_certs/additional_dns_labels.ca.der":"79f4227e5ff8187325547275613ad1b697b2f3608a3bf840795168de155a3e6b","tests/tls_server_certs/additional_dns_labels.ee.der":"2668307c76b65fb5e4c6aa744478a53c54d338b89e7fd5463e400830de458149","tests/tls_server_certs/allow_dns_san.ca.der":"f7e202fb879754970fe7a9b327c3948e0bba07f59f6d2e6c9c99c905db999d1c","tests/tls_server_certs/allow_dns_san.ee.der":"3f79e00f1a19af366dbd3b213092e366e231156ec450bd365e4baabae937e336","tests/tls_server_certs/allow_dns_san_and_disallow_subject_common_name.ca.der":"e3c498a39587874453521c7e83b82459514371f12d1a6c571f9a8d85af1316a7","tests/tls_server_certs/allow_dns_san_and_disallow_subject_common_name.ee.der":"0ba82bb96f13c8e84d3fe1d17554ea763ddcabc96b16a98bcccb0a0cdf4ee0dd","tests/tls_server_certs/allow_dns_san_and_subject_common_name.ca.der":"fa5a095891c729f5e8a688c2042d5e03e4399d0496d2a1345ec1245adeb619d0","tests/tls_server_certs/allow_dns_san_and_subject_common_name.ee.der":"f09453a4c352628039bdf28bd753c1f50b0fc5b5a73041af76771205c183ace2","tests/tls_server_certs/allow_subject_common_name.ca.der":"8aee2d67281fa86dfe92eb02208f5a4b56fe4eb679f962db6e331c209cf6c0dc","tests/tls_server_certs/allow_subject_common_name.ee.der":"729259d639402c8519e244f129482baef4d30113bba46845e53794352e78ff98","tests/tls_server_certs/disallow_dns_san.ca.der":"bc055f4d1110e8ef3f7b2f93fabb33fc4279bcd95118e72175be3f7d3e17be8a","tests/tls_server_certs/disallow_dns_san.ee.der":"6fb57671d8456b18504e87638818dcb4ed545603b331cb8e18a33018d1260e90","tests/tls_server_certs/disallow_dns_san_and_allow_subject_common_name.ca.der":"80b8df7570df8488d9f8bec965960b5a92e3bd6e4bd3f90b2a0d22a93aab2d12","tests/tls_server_certs/disallow_dns_san_and_allow_subject_common_name.ee.der":"9f8c95f2db0a234f78287f831e911973f10cfb9a8cb0dff1bf3472ae51cdad32","tests/tls_server_certs/disallow_subject_common_name.ca.der":"761a3d7184ba6f6c0d12fa45964a882f3dd69323e262b2d4b1584fbb58a8d71c","tests/tls_server_certs/disallow_subject_common_name.ee.der":"c81a9c9064494fe43bd6f29d1e5f73c1d6e29cc16dd65fe178ee03c8412d10a6","tests/tls_server_certs/exclude_directory_name_not_implemented.ca.der":"e0a7e465bb517e053e031bf0d79bc19124cec86cd1524e8f8966504abc7f0b6f","tests/tls_server_certs/exclude_directory_name_not_implemented.ee.der":"3e0c37fe4cc500e10198dac6069d4f556a69792ae4fc39f95e466366c7fb8fd3","tests/tls_server_certs/ignore_name_constraints_on_unimplemented_names.ca.der":"280ef32a0bc1d430defd536429af2517b4c30c26dafda7c2d2c570000ec5d366","tests/tls_server_certs/ignore_name_constraints_on_unimplemented_names.ee.der":"e5897402a8889a1a0510cb94333ce478b4b20e9153cfddffd0e7a179dc998961","tests/tls_server_certs/invalid_dns_name_matching.ca.der":"02cca02df01b4b97c3ed042e6c05e7e881324ecf1ea6dd568cf792f72ede3ce9","tests/tls_server_certs/invalid_dns_name_matching.ee.der":"6c1170c6a5c310bc09355c7c9ed70941777f1c86eb50dfd1a4679e3321e2cf85","tests/tls_server_certs/ip46_mixed_address_san_allowed.ca.der":"65da5c82fe5f9b0221c32f639243e058fa2da25c20c03480c49a86f5a6375e23","tests/tls_server_certs/ip46_mixed_address_san_allowed.ee.der":"3dc2726d01a293b25f8e520a83cb97cb9660ae959bb8a22de4d3324f39c06c88","tests/tls_server_certs/ip4_address_san_allowed.ca.der":"b3a89091eb5fc1777dc024c0f8b2f4114556ec878813528df387486c9d215689","tests/tls_server_certs/ip4_address_san_allowed.ee.der":"633cd3177f87584858d97e8e42ea099b1f07c70685f09f3b8e3de78d377400bd","tests/tls_server_certs/ip4_address_san_allowed_if_outside_excluded_subtree.ca.der":"5852b0dc726f6043581b750af112656a905d685b58b9ab4c58c0cd3c296b2911","tests/tls_server_certs/ip4_address_san_allowed_if_outside_excluded_subtree.ee.der":"83dcaf01c427943bc87688aa5b36031445b196c224b217ccd7cdaf6a43d4ea0f","tests/tls_server_certs/ip4_address_san_rejected_if_excluded_is_sparse_cidr_mask.ca.der":"992c9cadbb0ef5a870c20722bfaa34c568cca614f18e924e01007181d3c70b18","tests/tls_server_certs/ip4_address_san_rejected_if_excluded_is_sparse_cidr_mask.ee.der":"258d362b838c118e059864bdc7712a1494c2fddb8e4aadec48fd73fb31231bf3","tests/tls_server_certs/ip4_address_san_rejected_if_in_excluded_subtree.ca.der":"257292ee5aed1ff2a66bec8150ede6054d99304be20f434c87f9974a62d9f86a","tests/tls_server_certs/ip4_address_san_rejected_if_in_excluded_subtree.ee.der":"795d096429d39b7c4bf6f4e2ce68203591f061bfd91e82333cfc39b323866120","tests/tls_server_certs/ip6_address_san_allowed.ca.der":"de9c4ef0662eb276638fa3a67a2f6a2ef182027039a5fb41271bfbe5109b1606","tests/tls_server_certs/ip6_address_san_allowed.ee.der":"c3c00431c244bca7691f02eb06e562a74de4dd7f84b56a477f32ba24c770eb2b","tests/tls_server_certs/ip6_address_san_allowed_if_outside_excluded_subtree.ca.der":"63267151e4556fee2323b2b71a4b58cc5c5cadf77cbb784d6dc7020534088f37","tests/tls_server_certs/ip6_address_san_allowed_if_outside_excluded_subtree.ee.der":"9a572d3101d9a6f1e05a59b3b257a4bb0adaf4b75f9d252c1639fbb94ab57e45","tests/tls_server_certs/ip6_address_san_rejected_if_in_excluded_subtree.ca.der":"b05bf6010a10763b3d18d9e046b61b73f001a40e018372931d50010fb47bc0dc","tests/tls_server_certs/ip6_address_san_rejected_if_in_excluded_subtree.ee.der":"04d303b3840ef7289f1d589669e24ba185fe53f2db1940bf725ae013f5989f8e","tests/tls_server_certs/no_name_constraints.ca.der":"11cdf0add140c9dd5734f98384402dec08ef52c6244a3c47537b2656e93051a2","tests/tls_server_certs/no_name_constraints.ee.der":"c3ec6ed03ba539d12922149b6caa2275b8db267817874d1db7c6890fea3f8c27","tests/tls_server_certs/permit_directory_name_not_implemented.ca.der":"1789a18b9556e3ca7e94f9048074f68fc526f7d44c3a553a30f12b822c150bf2","tests/tls_server_certs/permit_directory_name_not_implemented.ee.der":"39d4eb091a4311d6c5c7bb3fa34971a3c25b9ef70b1380afa48c575e694ad495","tests/tls_server_certs/reject_constraints_on_unimplemented_names.ca.der":"90bc444cfa3323b4f40d836dcbcecda870c0ba4cf4975508a940012b4038474d","tests/tls_server_certs/reject_constraints_on_unimplemented_names.ee.der":"15c52eed42355800a93ece3db907ac44f3617f1751b6f9e570a9cf2f5dc29835","tests/tls_server_certs/reject_unimplemented_name_constraints.ca.der":"b221a050ba22bde5f1571bd916628335c13b0f50e14412aa27f0484699118c44","tests/tls_server_certs/reject_unimplemented_name_constraints.ee.der":"fc114e10031eb00f79412aabf20849cdcb6adee95b6438ab4b9274f77ec48e1c","tests/tls_server_certs/we_ignore_constraints_on_names_that_do_not_appear_in_cert.ca.der":"0d93dd2ce481daa1cab06f4e5c91f82f500efad716ad3279e622db4fd136a598","tests/tls_server_certs/we_ignore_constraints_on_names_that_do_not_appear_in_cert.ee.der":"fb1e2421e6f2bada83730ed07edc8cf1cb4123ee88c224c5c0aa957566aa08c8","tests/tls_server_certs/we_incorrectly_ignore_name_constraints_on_name_in_subject.ca.der":"ef23514152f858ccb94707dafd3e01c17d7a40b4db4d06292860dbeb927b9657","tests/tls_server_certs/we_incorrectly_ignore_name_constraints_on_name_in_subject.ee.der":"5b9180eafdd8f1355c38703709dacf165aa98a40e40b9df3376b4193923c934e","tests/tls_server_certs/wildcard_san_accepted_if_in_subtree.ca.der":"150cf9479975fe781823762dc6bb5b61a763767ee9c1706bfa715a4054c7220a","tests/tls_server_certs/wildcard_san_accepted_if_in_subtree.ee.der":"0666a1de480710afdf09470ef93c4bdfeff97f2c2324fe29116b92ba4a5af26f","tests/tls_server_certs/wildcard_san_rejected_if_in_excluded_subtree.ca.der":"783288567e54f0122927d90c8369304bd403e36175c8843c798b065696a2498a","tests/tls_server_certs/wildcard_san_rejected_if_in_excluded_subtree.ee.der":"ba39da26934884e01a15a19590d16185953de2b60d6e5d14fa825861198fe86d","tests/wpt/ca.der":"d2d38f5c7ce32127361f269145006c88fa0706868139d528182b2d153ef47fd0","tests/wpt/ee.der":"46aec06a7a43456c98ca33e74b3b8dd73d709d14ea2c9eee730e1b724afe9469"},"package":"89efed4bd0af2a8de0feb22ba38030244c93db56112b8aa67d27022286852b1c"} \ No newline at end of file +{"files":{"Cargo.toml":"ceb738c523411383a3545742f310753d2041aad77a658d70f1ff3f9b9dce7b07","LICENSE":"5b698ca13897be3afdb7174256fa1574f8c6892b8bea1a66dd6469d3fe27885a","README.md":"d7e5ef7c9b447cde530b46bdf71b3dffc35cdbc3f0e56c39945ff8d9e69446c6","src/calendar.rs":"df963c446419f91b3ed340f859273cd191153b3fe0746338179c193da7bfa370","src/cert.rs":"0361e62d80eb9c55f67719508fd1d7e89ac260d399fc7030f56c389cde95cf88","src/crl.rs":"d33c45ebd6422cd264e3eb3abad3a0c152209e2feb266e2c09eb3ab3bb98f35c","src/data/README.md":"d11d9e6adfe7c9e84d9c5956e5257eb656640f817aab391d3eef4878a73aeb20","src/data/alg-ecdsa-p256.der":"431ab0da5859f972141d7a6b17bfff1006ec2465878890eecacf4764748f999a","src/data/alg-ecdsa-p384.der":"a6307e2efeff1b4db45622b626b9a0f2b6395be5dd4024a899c057e512a0207e","src/data/alg-ecdsa-sha256.der":"8748ad98184c8f81b5db874ef1b7d3599afe05e2f92dac215a77f45e9b0699bc","src/data/alg-ecdsa-sha384.der":"5f6e0dc69f6930ca890ebcafaf7677254640b931439cd5bcad7688b1a06aaf92","src/data/alg-ed25519.der":"0b6d661fe75a1ce7a832d515b39b504032f1a6cbb67a5113fa74d635d038f4d9","src/data/alg-rsa-encryption.der":"7bc023427767a2f2e156f8ae030d06d19f862e326b952116649b423c3ff7110e","src/data/alg-rsa-pkcs1-sha256.der":"c0d1c5108d05adfdf58c73697af5c4e644d1a09fb2e4a76361c048eb0ec7a219","src/data/alg-rsa-pkcs1-sha384.der":"d3e50513620bac7e02f5c1821c569cf4fc2ca5a891fd1103e36574c77e6a888a","src/data/alg-rsa-pkcs1-sha512.der":"3705399877ad5d5bb559e5b5ed3cd80b352166511c2fd2b8f8959e1176ed72f8","src/data/alg-rsa-pss-sha256.der":"6eeb65499d8c64c3ef3e74305f2daaca0d947e7fca735ad072b5581392d73068","src/data/alg-rsa-pss-sha384.der":"b6e27adae679feb8f49925f4457da316657a6b7a55a1bfd164c66eec59d7d090","src/data/alg-rsa-pss-sha512.der":"60cea04c0dcb23c248eb644fe036d1b6b883004f73c68785895c885c8fa5d688","src/der.rs":"37a8b54d89851bb9860cc190e42a25423cb874f8e614e32a1077b6ea8aedb15e","src/end_entity.rs":"d328129979733f0cc952420eddc040e005b58d7e2d78e1f23f21dbbbe450e459","src/error.rs":"eb638fd4df5aae2b3824203538f7d5a30d1a20e0ee8cfac0c3f1945f02cc0358","src/lib.rs":"d2f6cdb9de1b07de0c67588b683f2969752d3fa98a84ca57ce25cd35c72cddad","src/signed_data.rs":"139619ba80f5b8a6ae58acab31b1f53a450212c4e338a03ab4e46e4bb5e0b870","src/subject_name/dns_name.rs":"350922c0821d459389961047f9ae4485c90ab77e6a1525b10e06586040261afb","src/subject_name/ip_address.rs":"d1496266d629956b0578f8e293c2ed1db35e99f42575af73c0c1d6bd4b0c49c8","src/subject_name/mod.rs":"5162f59af218f7e7b80cefb7121243c54f29e1cb9482fb54c34f315cf039d96d","src/subject_name/name.rs":"444271ffd4fe5887b007837418b8d2445c1774d2fe68e67fecd832fc167309a3","src/subject_name/verify.rs":"99e7c350dd93b469901bc27f8a70851972c70f181fcc9cfc4977f4c177d02459","src/time.rs":"d75eea7bc7a7605738ff2b463a1d7773f9378dc3e8b6216adaa2bc9c7ce6a715","src/trust_anchor.rs":"04bb512e888345e1eee1657bd6eee32d21a8fe92c7bfdc0008be8cb9a0558224","src/verify_cert.rs":"a577b130ef329c3e8d10c90ac01ebbb6ce2af475f015874feb7fa760f3cd5ebf","src/x509.rs":"6eb8d9a08e01c4929e6525be7d5116a305116a734d85b2b1caeb1ee5a4a80480","tests/better_tls.rs":"f0ea7c70d2a3b7d6cc6c0a76a9fb909ec1c5f6cb499a1dc06d4588d7bb29d9e9","tests/cert_v1.der":"279525aad39bc81a5acf2c627465efcbae27c99e1a5592bc54eae2dd42e21202","tests/cert_v1_unsupported.rs":"b726441de36f4c835bb69540cd1834ae5bde1ae59b4027654022dc4fc8b1b89e","tests/cert_without_extensions.der":"e4e3026c9d34b95c0cf2195c27129a9a1f554cb70a3d98842ef98adc6a93840d","tests/cert_without_extensions.rs":"b27b85333a917ac7123cfcf36ca84493166ebced5264741db23baddee0507f9d","tests/client_auth.rs":"d642bb55da7c34a21b65693f0d77dfa9f1715480172bf92220ddebe92b8e6e99","tests/client_auth/cert_with_both_ekus_accepted_for_client_auth.ca.der":"ee258d486061e3aec52f3b9247c3bbd0f58ef4844a4c14747f13c5b0af2404fd","tests/client_auth/cert_with_both_ekus_accepted_for_client_auth.ee.der":"862e83148171e2657be2b1649156ccec9a95cb3633cd3f134483bbb15e133201","tests/client_auth/cert_with_clientauth_eku_accepted_for_client_auth.ca.der":"91beefbba3ae4b05ffb3929e90f99de544e1846b095d7ef6b6433e757cb8009c","tests/client_auth/cert_with_clientauth_eku_accepted_for_client_auth.ee.der":"8aa5a5be63ca3e88ddd20e09eb2038ebe70bb58d3d147160d4eefda72dfe6eab","tests/client_auth/cert_with_no_eku_accepted_for_client_auth.ca.der":"d8f82020f500c88864aae535d9541b6849c5cead5aa1877118d6406e87568c3f","tests/client_auth/cert_with_no_eku_accepted_for_client_auth.ee.der":"cee23b40cbc953a4385d59106af6a4c47721e43b3dd79090a92f6c54aa839332","tests/client_auth/cert_with_serverauth_eku_rejected_for_client_auth.ca.der":"76cf496eb4253045bcc963acba7821281dd80a3001b19095859bf7b0e40c5aec","tests/client_auth/cert_with_serverauth_eku_rejected_for_client_auth.ee.der":"d42007af062e5a3d32ae1477e8406ff9c105b49d1c6d04bbcfc20b91aeb4551c","tests/client_auth_revocation.rs":"45879b1c68a1d4673e376530db4215b4c08ffb4f53cb7ed7749f50f17ec23f17","tests/client_auth_revocation/ee_not_revoked_ee_depth.crl.der":"11eab10e60cc9e86730f1f4439648e3bef54719eae1ed08ff551ee463ffa3a2f","tests/client_auth_revocation/ee_not_revoked_wrong_ku_ee_depth.crl.der":"677b14f2b8f5e2dd2762e7772ddbf397d6f2292cd78a0fc981807df6f78544f7","tests/client_auth_revocation/ee_revoked_badsig_ee_depth.crl.der":"819f24f122032194fc1e48d54df5c465755614261c23a890481a47fab3d32f6f","tests/client_auth_revocation/ee_revoked_chain_depth.crl.der":"af7d16e5e4edf2eb3f536d16c526ca60d958297a191078fc56daf4a2575b3f5b","tests/client_auth_revocation/ee_revoked_crl_ku_ee_depth.crl.der":"05e719b1b9487c436f06a45f8b8adc40c2d958a9da85e9ff35d9fc7806dffe65","tests/client_auth_revocation/ee_revoked_no_ku_ee_depth.crl.der":"58177ba866ce7faab494b4d4678f6e09e7e4893335881e3b9ae3be05ffabf9fb","tests/client_auth_revocation/ee_revoked_wrong_ku_ee_depth.crl.der":"265e7167fb872b10710266167f4eefd577c8c9e9d3d71302bf7049ff26ea3446","tests/client_auth_revocation/ee_with_top_bit_set_serial_revoked.crl.der":"2099f7d59b6c0691bef53faaa2719187c76310979397c45c66b5f85d7797966d","tests/client_auth_revocation/int_not_revoked_chain_depth.crl.der":"da9594b4fea768de5922e5ee9719174c167ad4d24db2f5eaff7c8726da38c5bf","tests/client_auth_revocation/int_revoked_badsig_chain_depth.crl.der":"fe411a6f590b990ef3f124a82cc13cecf1b0e5ef1bf557269c914f167c480e1c","tests/client_auth_revocation/int_revoked_crl_ku_chain_depth.crl.der":"5eecebf03113da35bd79a6b783f95da0a5cccc2dc088fc3f852638ccf4734b3a","tests/client_auth_revocation/int_revoked_ee_depth.crl.der":"62e0157668bb2a0ab1f9f8a9ee4ac263c3f2344c6c3536251e91e647339814fd","tests/client_auth_revocation/int_revoked_no_ku_chain_depth.crl.der":"6bc68165b3e74bace4f7440b855f6a78416401e766b2f41973495e92f5c6c3fd","tests/client_auth_revocation/int_revoked_wrong_ku_chain_depth.crl.der":"4991fff6b3f291d4916f121993eed47a3d72ef8784330390bb390f64e27eb43d","tests/client_auth_revocation/ku_chain.ee.der":"c92604a4f4071f2802e0eab65b063a5b3670a933c452bf7bb1303ce985c7f9e6","tests/client_auth_revocation/ku_chain.int.a.ca.der":"484a14e6a833981abd131ac01abacfd088ec9cdb47dd059d554c8f534b655e40","tests/client_auth_revocation/ku_chain.int.b.ca.der":"aeb0cb06a909e5f89c26debb7ffe12da943cdc7bf8812de570afee22872ef5f2","tests/client_auth_revocation/ku_chain.root.ca.der":"158ff6563675a9f0057153ab94193235a60d602de503385e6f34bf8ab2f684fe","tests/client_auth_revocation/ku_chain.topbit.ee.der":"644f93e9ee57791c55916fa82f0388e729d0e1a168f24a1478eaa126477a5b48","tests/client_auth_revocation/no_crl_ku_chain.ee.der":"d9029e0381862259855659a6e38d758340ee7d8235db9cb0eb72f7d605b41a98","tests/client_auth_revocation/no_crl_ku_chain.int.a.ca.der":"f790fdd5492e713e2560a1673a685c9b8972d1e154a8329d38c393ce6dec43ce","tests/client_auth_revocation/no_crl_ku_chain.int.b.ca.der":"5c84edb9bef9b2252d607c7a2418dadd4fbd0fa0f1486140710a8c02bcade5eb","tests/client_auth_revocation/no_crl_ku_chain.root.ca.der":"08bf452786529ad7886679307d3efc6da59f4e5325038a0734bf080fde5ac653","tests/client_auth_revocation/no_crl_ku_chain.topbit.ee.der":"f25707b0a3a960151b8b49bb2b55a841aee01707ce59d469c985ee67651f86b7","tests/client_auth_revocation/no_ku_chain.ee.der":"77acfcabe0edd18ea7f9aff179e2c00604aa19e8aa2213a8305fb0133bedd1cb","tests/client_auth_revocation/no_ku_chain.int.a.ca.der":"92e5c6cbb6db4910c6a6e3cc2d9abe61825e6be434c16d02159a5af63b8e90e1","tests/client_auth_revocation/no_ku_chain.int.b.ca.der":"be299806a8472c10c21d422b64156375babb32ed79404c6f6301ae6808dccbab","tests/client_auth_revocation/no_ku_chain.root.ca.der":"ac93f0cbc8ca6b76cd0aa49eace244577ad1b5dd530e50120fe28ce48bcb1699","tests/client_auth_revocation/no_ku_chain.topbit.ee.der":"5c8b6bbff0bf86519a6c3ceefc6ba6a335827e7b2c72ffb10ad0e5841097fc72","tests/client_auth_revocation/no_relevant_crl_chain_depth.crl.der":"1e22895514f02788412670a99e4aaf19e4627fb1774fc1c92dad3595fb7405e5","tests/client_auth_revocation/no_relevant_crl_ee_depth.crl.der":"9583884c965b9d6379c0f6ceb7e8a7c5df77f976594a1d9f344d51027554e1c4","tests/cloudflare_dns/ca.der":"4348a0e9444c78cb265e058d5e8944b4d84f9662bd26db257f8934a443c70161","tests/cloudflare_dns/ee.der":"c93386adf01223e637a3aca7c68988bb8240c4afd5d204c206bc35d7a4358dd1","tests/cloudflare_dns/inter.der":"f7a9a1b2fd964a3f2670bd668d561fb7c55d3aa9ab8391e7e169702db8a3dbcf","tests/critical_extensions/ca-cert.der":"c831adbef65eef4471fe080fdddd014f9c7e9f0a74dfcae9d006845779c28f18","tests/critical_extensions/ee-cert-crit-unknown-ext.der":"ad2f19e1c6ef15ee2454dc6389136c9d10e39042d9d8a780e7dbf1f776f49bcb","tests/critical_extensions/ee-cert-noncrit-unknown-ext.der":"ac0940abccf9d5b306e8249fa81192c5860ed7f100bbb21958bd4159f959fd66","tests/critical_extensions/root-cert.der":"bb84c781924c01365e65ae27ce26dfd5d4b8f2fd5760cd27d30fe78e5ab73f1a","tests/crl_tests.rs":"42e6192f9190a281b6de5bd916e02fe6a03d0d7e4a06eba7b347cba656ba6987","tests/crls/crl.delta.der":"4db8e3afdb4bc3294df99c4272d9576870444ae78a99fd74c8c6be06275dc910","tests/crls/crl.empty.der":"3b7cbd19ad57c6d13954a9391af5b71667373ffae3972a34506a9bfbd3dc531c","tests/crls/crl.entry.empty.ext.seq.der":"c8c61b5c7c72b23cd567663b9b96c930db7ce11ab5b50c5f4a8cc2968a308ecf","tests/crls/crl.entry.invalid.reason.der":"1985e315682f94a8c64d00024f7d0713724c8ed5d60ac5942740a3b9b28806fe","tests/crls/crl.entry.invalidity.date.der":"1891a1f988b8c0fc7cacbef676aeb21cbbf09ca9fac4286ec419882435cf7b0f","tests/crls/crl.entry.issuer.ext.der":"87686302b0181224568164fde1b9afcfe641109488e08f642f4ef80147b29318","tests/crls/crl.entry.unknown.crit.ext.der":"9637ab7f628712403e6522c13c9ff1e525f5631279ae979f33a6a155f781be01","tests/crls/crl.invalid.this.update.time.der":"59c10f7b1e166e70b42e82170e6434e93b84878b09c8f4001c102cea9622b9fb","tests/crls/crl.mismatched.sigalg.der":"db9cee4f2a8de9a82cc6648fa5e87737a274ab9d63e6134ad58a4ef322b06771","tests/crls/crl.missing.exts.der":"b567ff704a3386c67f2dc31926c4bc906f90b5317e4aed17d89aaa698baaa225","tests/crls/crl.missing.next.update.der":"151a3b36b114ed421771b41a38dd7c5b4a6f2beebca1267fadb1b19f6a519d64","tests/crls/crl.negative.crl.number.der":"17686b88515b10cb526de6713e9f08ccd0ef6ac728fd03078d2e08a539ba3f1c","tests/crls/crl.negative.serial.der":"66c255ea61419edecc3bb1edff9bd2f463373abba7b3e3fc45e0367ba59088d0","tests/crls/crl.no.entry.exts.der":"44b5bcf39fb8e51aba2d1ac5e80dca8fc995ee2611a82dea2285a73529aeb631","tests/crls/crl.too.long.crl.number.der":"058b3fc552d0dfd415790e99ab4f1411c5b0270fb0219b0bdeebcc9e24b7a256","tests/crls/crl.topbit.serial.der":"9184df9710602a23ea3c32f321d2729984050b002d3f65a75a1ae413abae5b60","tests/crls/crl.topbit.serial.txt":"f507eacebf0333b87e5c83da4c057b92729ccd078c92d30aba3fb77ed838471c","tests/crls/crl.unknown.crit.ext.der":"733d6f91d4add170b228ac5d6eba4f1f7ee545d9fc5f173d5b190864bfa4baff","tests/crls/crl.valid.der":"53be7efd30bbf5e41827477c9b8f70fd27ec9dc66082457f833ac1890e04493a","tests/crls/crl.wrong.version.der":"e23c4392fe9bf4f11706cf7f7c3b9cc055c8b96644b84eb4c2d63fcb4fedfb6a","tests/custom_ekus.rs":"607f6b7a6a06a7e66c26d0fb5a46145fcb96566092db089b78fa11a6f896d473","tests/dns_name_tests.rs":"21c6d8d98b3e8171af411fe665a53a4cbbbecc6c1ec83f956e1f1bb49b283783","tests/ed25519/ca.der":"57c4b8e513e17954a5e0e4e11a63937c52507d1ffd36436e2b76e9b789ff1a2b","tests/ed25519/ee.der":"f32db7607b3c15ca3203d1c93064a47c5977288c5b2faa6ca2b11bf22b02911a","tests/generate.py":"9c05c0c71e4c2cf437489b1d0bb16097d52e43c1c58f580c8f47bbcbe02881f0","tests/integration.rs":"74373fa3687ee1d4716ae629130602cf1dedbde6cde20c2c54315d1f9b68283a","tests/misc/dns_names_and_wildcards.der":"c91649143ab3b802122680aae43081861fd516893619adb1a1ebe743dc4a8433","tests/misc/empty_sequence_common_name.der":"2997ecd75ae6a6737953ff5795bc9802cf58c518561582c75eb2078139e5ca9b","tests/misc/empty_sequence_common_name.der.txt":"a80acfd6ce96baa17ee4a3568a4c1c9b184a683182c58a5ec210a0dcba201604","tests/misc/invalid_subject_alternative_name.der":"6d5b2c95741aaa137bf85f432f7fe9075f8453aee4c011f048c9d19022130502","tests/misc/mdoc_eku.ca.der":"6bdac7eb36008bafe71f199e5da3cf498c35c16100d748ddb1044f6643c0f829","tests/misc/mdoc_eku.ee.der":"b79798ebbc0cafb406683b60a75ad78df735bc3535e31151db0e2dfc4bb98d3b","tests/misc/no_subject_alternative_name.der":"d0f636166e7ed117b71210e8ef35d366dcdbb99c3115963de3d9bfa9434a6e2b","tests/misc/serial_large_positive.der":"fabcf5197cdd7f458ac33832d3284021db2425fd6bea7a2e69b7486e8f51f9cc","tests/misc/serial_neg.der":"88497f01602f3154246ae28c4d5aef10f1d87ebb76626f4ae0b7f95ba7968799","tests/misc/serial_neg_ca.der":"ecb494255fd4bc67d84885745cb94a73257ece659a6463b1c8e285dabf2a5f3f","tests/misc/serial_neg_ee.der":"9ca51eef5122dfaaae657557b6666e110b959586100a27a2930c98b95bfbc889","tests/misc/serial_zero.der":"c3846bf24b9e93ca64274c0ec67c1ecc5e024ffcacd2d74019350e81fe546ae4","tests/name_tests.rs":"0c78fa8681459f0fc5becb49c00a2d24a5a0c8eda2d13e293dbfabf5881042c5","tests/netflix/ca.der":"eb04cf5eb1f39afa762f2bb120f296cba520c1b97db1589565b81cb9a17b7244","tests/netflix/ee.der":"d58b0dcbd15594693041633bbc788af700df3f8f243a1e09afe8cc585010322c","tests/netflix/inter.der":"564dbc6a76550fd2d4f4bac6448a1157b33cbd8e0b3fd76d72107540964a85b5","tests/signatures.rs":"9b18ca98291850f2718d3b60bb6ffc7d328f5f1c0eb75f4f3f88dd93d6d03d1f","tests/signatures/ecdsa_p256.ee.der":"247ae99780fadd57eebe39105bf38db6654e3caf067dcfa0bdbed76a4d6cfefa","tests/signatures/ecdsa_p256_key_and_ecdsa_p256_sha256_detects_bad_signature.sig.bin":"8d7cd91f0d149b71b2ad1d83516bb501e826250194ac7eb02f6ad3f5a5936aaf","tests/signatures/ecdsa_p256_key_and_ecdsa_p256_sha256_good_signature.sig.bin":"e8ca79cb3c644ca90582fe00138f53d5b56bb422c2b008eeea27b748a99cc1b4","tests/signatures/ecdsa_p256_key_and_ecdsa_p256_sha384_detects_bad_signature.sig.bin":"12401478c6103aa61d75c3bdfb07464dc37e9d120de0292149293432a7d2b262","tests/signatures/ecdsa_p256_key_and_ecdsa_p256_sha384_good_signature.sig.bin":"18b02e1c63bd0ed494d465fa9e9665b7f646b51f7f3be68cdabcd25f17adb211","tests/signatures/ecdsa_p384.ee.der":"4525a2191d596fc9ebd5e83d145b7634f4616e91c6a59ea25afbf1f01fc43960","tests/signatures/ecdsa_p384_key_and_ecdsa_p384_sha256_detects_bad_signature.sig.bin":"abe9843b6bd0fb9b2ed49b6c8d763a19bd3a889eb9799975741dd89d66ecc663","tests/signatures/ecdsa_p384_key_and_ecdsa_p384_sha256_good_signature.sig.bin":"eac03df587e98cd50de9059bc53c24f9a579cb7b1dbf5c86a4746469f28098e9","tests/signatures/ecdsa_p384_key_and_ecdsa_p384_sha384_detects_bad_signature.sig.bin":"06c3bcc3aa84fb9a1596eb96e7d25ebb2facb5aee623c87c477cd3acdeaa373f","tests/signatures/ecdsa_p384_key_and_ecdsa_p384_sha384_good_signature.sig.bin":"14184ee58a0a59b1e6f6dff97abe87f934e5223f2d0feeb039de5f48b0603557","tests/signatures/ecdsa_p521_not_supported.ee.der":"a40e20f2bf01ac22389342e5ecf34c6758d406cef0171e8d80cf7f88ebb1b87e","tests/signatures/ed25519.ee.der":"9602946381ff96e3079f7730987fdc1bf7f3d189675395fd1d8279dda2af1d6f","tests/signatures/ed25519_key_and_ed25519_detects_bad_signature.sig.bin":"175b5b979eee573e174cbc83e9e070d99a31479534682cb6f23c0636d8c01f08","tests/signatures/ed25519_key_and_ed25519_good_signature.sig.bin":"de87cd2bd2862e8fb0f20443d259e2175dd328707d1c6972b608271f47e9c8cb","tests/signatures/message.bin":"7509e5bda0c762d2bac7f90d758b5b2263fa01ccbc542ab5e3df163be08e6ca9","tests/signatures/rsa_1024_not_supported.ee.der":"ed18047742825851e7be563c8a17f554e41e43e4a85589a5c7cd07a443bf959c","tests/signatures/rsa_2048.ee.der":"3d86c053a608a9a973095be383defe7c8696aba329f0a5ece7ec80323a3839f5","tests/signatures/rsa_2048_key_and_rsa_pkcs1_2048_8192_sha256_detects_bad_signature.sig.bin":"abd83fd5aaa6565a5afc61fd2c6c1117a935a454479f2cb098880b1ff0c1db5c","tests/signatures/rsa_2048_key_and_rsa_pkcs1_2048_8192_sha256_good_signature.sig.bin":"a5871e373a49321bfc891f1400aa27170edc4dd4af982ee3dceda0660a39c920","tests/signatures/rsa_2048_key_and_rsa_pkcs1_2048_8192_sha384_detects_bad_signature.sig.bin":"e2ba0affee0fc1746d73537e935ec199a26f97252d5e0b96231afc531b6934d2","tests/signatures/rsa_2048_key_and_rsa_pkcs1_2048_8192_sha384_good_signature.sig.bin":"3dfd030dfc00f9d2db5d547cdbe18cb00cd7b3fad39cc49f25dde096cc8b3d0c","tests/signatures/rsa_2048_key_and_rsa_pkcs1_2048_8192_sha512_detects_bad_signature.sig.bin":"5dedc525f0025c5cf8295ca05f58b4a4124b3a3793cc976357b0b00bfa237a47","tests/signatures/rsa_2048_key_and_rsa_pkcs1_2048_8192_sha512_good_signature.sig.bin":"85c33ec108ef52537f07f7a430249a13fb7591e0ad6a366fdabf66997cf5bfc0","tests/signatures/rsa_2048_key_and_rsa_pss_2048_8192_sha256_legacy_key_detects_bad_signature.sig.bin":"a8d0773427211933e47f7a3f55b6ac287744ae084ce058a00a9b221dce0d8224","tests/signatures/rsa_2048_key_and_rsa_pss_2048_8192_sha256_legacy_key_good_signature.sig.bin":"d8b45d0822518e4ba1a134359027d8868050db72917b14083adbf20eb539b91b","tests/signatures/rsa_2048_key_and_rsa_pss_2048_8192_sha384_legacy_key_detects_bad_signature.sig.bin":"153e9949ee514974fbbcb780b7870f64484cdf0fac66eb307e75174f18e782d2","tests/signatures/rsa_2048_key_and_rsa_pss_2048_8192_sha384_legacy_key_good_signature.sig.bin":"fd3d686d731585a74347665577e4f6351ee71a16bb1d4364c67865c2121c4c74","tests/signatures/rsa_2048_key_and_rsa_pss_2048_8192_sha512_legacy_key_detects_bad_signature.sig.bin":"095d875e557f129200ca4aaa89a4780d85213d24ef9a3ba86a84befb629b8f6c","tests/signatures/rsa_2048_key_and_rsa_pss_2048_8192_sha512_legacy_key_good_signature.sig.bin":"0bcd71ae8043056a4c9dbbb7f7e248e61b63acf189bb4347442adb0c52b1174c","tests/signatures/rsa_2048_key_rejected_by_rsa_pkcs1_3072_8192_sha384.sig.bin":"3dfd030dfc00f9d2db5d547cdbe18cb00cd7b3fad39cc49f25dde096cc8b3d0c","tests/signatures/rsa_3072.ee.der":"199f0ca68362b48936efa223681b17835f695fbbe967f71613ae19a2e781cd4e","tests/signatures/rsa_3072_key_and_rsa_pkcs1_2048_8192_sha256_detects_bad_signature.sig.bin":"767329aeaadd1364a8b846716eafcc5e0ae0b09c4f0ac94fd5e188e35d84ff36","tests/signatures/rsa_3072_key_and_rsa_pkcs1_2048_8192_sha256_good_signature.sig.bin":"e3041546169ebde10e83a80c86d72911e40487e70cf3a87f4f8e10a3a19e5e75","tests/signatures/rsa_3072_key_and_rsa_pkcs1_2048_8192_sha384_detects_bad_signature.sig.bin":"26b5d03a7ab35b166cd7be6db7609612d54d534c8dcbbd4f55227afd881a9c3c","tests/signatures/rsa_3072_key_and_rsa_pkcs1_2048_8192_sha384_good_signature.sig.bin":"32b84eb763b5a8332088987a262de8a4c16ec23d4dca494c96c0157caf5fcd92","tests/signatures/rsa_3072_key_and_rsa_pkcs1_2048_8192_sha512_detects_bad_signature.sig.bin":"8656cc19b5a253dfb719905673224e5a0dd2dfdb6973edc7a96a7b53a5814230","tests/signatures/rsa_3072_key_and_rsa_pkcs1_2048_8192_sha512_good_signature.sig.bin":"bf3896ae6b36d0f2d838c06324f9ac17adc0ae7ad079953840c6a027ead6b5ec","tests/signatures/rsa_3072_key_and_rsa_pkcs1_3072_8192_sha384_detects_bad_signature.sig.bin":"26b5d03a7ab35b166cd7be6db7609612d54d534c8dcbbd4f55227afd881a9c3c","tests/signatures/rsa_3072_key_and_rsa_pkcs1_3072_8192_sha384_good_signature.sig.bin":"32b84eb763b5a8332088987a262de8a4c16ec23d4dca494c96c0157caf5fcd92","tests/signatures/rsa_3072_key_and_rsa_pss_2048_8192_sha256_legacy_key_detects_bad_signature.sig.bin":"b3e32f62def998b2fbd35274b8a3b5369462dce77ade58ebbde36593215933da","tests/signatures/rsa_3072_key_and_rsa_pss_2048_8192_sha256_legacy_key_good_signature.sig.bin":"321aa39d1bf66f7c79d275fcb672d50055f29d773da88e87803cfc07cc660abd","tests/signatures/rsa_3072_key_and_rsa_pss_2048_8192_sha384_legacy_key_detects_bad_signature.sig.bin":"b112217db3d27175f644f3fea327cd8edc0899fbb7902a162bc18079252cee1d","tests/signatures/rsa_3072_key_and_rsa_pss_2048_8192_sha384_legacy_key_good_signature.sig.bin":"8071a922c1b1f1fde67443b4466b04ebde663293367a9bd4cf15727ad069a778","tests/signatures/rsa_3072_key_and_rsa_pss_2048_8192_sha512_legacy_key_detects_bad_signature.sig.bin":"1960a573f2b64d3297561ce79e089b2c595c057ff2ca9cb6f1285ffb43285768","tests/signatures/rsa_3072_key_and_rsa_pss_2048_8192_sha512_legacy_key_good_signature.sig.bin":"03c73563bf35871f786672db96ead3d700b394bcd5db101fff6adea415d70163","tests/signatures/rsa_4096.ee.der":"124068fd0d1afcfe60a90e93dcc435eb3d66c67d72573bdfc42433c84478ff78","tests/signatures/rsa_4096_key_and_rsa_pkcs1_2048_8192_sha256_detects_bad_signature.sig.bin":"eea072745f379064b29fc2cfaa4adc569b5c85de327655776f078240ffd44a21","tests/signatures/rsa_4096_key_and_rsa_pkcs1_2048_8192_sha256_good_signature.sig.bin":"d9ef47fd19d51f7087623b2a1982fc55ca63e601f4bf3c9383d03cdb73ded83f","tests/signatures/rsa_4096_key_and_rsa_pkcs1_2048_8192_sha384_detects_bad_signature.sig.bin":"6728efa93127b24d9048cf966a9002336368faaa6e4b8181c61046c2bf646601","tests/signatures/rsa_4096_key_and_rsa_pkcs1_2048_8192_sha384_good_signature.sig.bin":"61cae3e754bbbdfee2dedca44b8d9cee5deab3cdf12c675e354221e252d7bcf5","tests/signatures/rsa_4096_key_and_rsa_pkcs1_2048_8192_sha512_detects_bad_signature.sig.bin":"aee8915b1715f90e71dc0d5ce802cd0174776330b0982d275b93b93e824c54b0","tests/signatures/rsa_4096_key_and_rsa_pkcs1_2048_8192_sha512_good_signature.sig.bin":"92d004eeff2e13ed180ab40a4766c0d40fda7dd0a46df3891b5a1469c5d5c06a","tests/signatures/rsa_4096_key_and_rsa_pkcs1_3072_8192_sha384_detects_bad_signature.sig.bin":"6728efa93127b24d9048cf966a9002336368faaa6e4b8181c61046c2bf646601","tests/signatures/rsa_4096_key_and_rsa_pkcs1_3072_8192_sha384_good_signature.sig.bin":"61cae3e754bbbdfee2dedca44b8d9cee5deab3cdf12c675e354221e252d7bcf5","tests/signatures/rsa_4096_key_and_rsa_pss_2048_8192_sha256_legacy_key_detects_bad_signature.sig.bin":"978f5cda5e488c6f6291c0e6758f8a52b21740a58dd893d96fb835b1ef7ca3e6","tests/signatures/rsa_4096_key_and_rsa_pss_2048_8192_sha256_legacy_key_good_signature.sig.bin":"ab4f834a8eca3fac7ee6678e26bcb73d02adfdf42f140eee05dca0296a4940a5","tests/signatures/rsa_4096_key_and_rsa_pss_2048_8192_sha384_legacy_key_detects_bad_signature.sig.bin":"7b4708e454550ad0401cd21495baa57184db241545efb4d0d24cb1ac670b33e3","tests/signatures/rsa_4096_key_and_rsa_pss_2048_8192_sha384_legacy_key_good_signature.sig.bin":"8af52539761dd5e302a8e28d1d4efcdad6a0d3ad8fca6946d0af3b7603469eb4","tests/signatures/rsa_4096_key_and_rsa_pss_2048_8192_sha512_legacy_key_detects_bad_signature.sig.bin":"8dbc4f1f687c0b562de89ca66e68828bf2c50f16040624dae4cb786244ce4d65","tests/signatures/rsa_4096_key_and_rsa_pss_2048_8192_sha512_legacy_key_good_signature.sig.bin":"6d0eb19350f668d98ebac9174888245f98afd7a102b77ee6832ce6aaafc0aa7e","tests/tls_server_certs.rs":"d0f66b1ca11e5f3d9a1d0eecae84fc30177821be89281480026b22e2f2dbbb5c","tests/tls_server_certs/additional_dns_labels.ca.der":"79f4227e5ff8187325547275613ad1b697b2f3608a3bf840795168de155a3e6b","tests/tls_server_certs/additional_dns_labels.ee.der":"2668307c76b65fb5e4c6aa744478a53c54d338b89e7fd5463e400830de458149","tests/tls_server_certs/allow_dns_san.ca.der":"f7e202fb879754970fe7a9b327c3948e0bba07f59f6d2e6c9c99c905db999d1c","tests/tls_server_certs/allow_dns_san.ee.der":"3f79e00f1a19af366dbd3b213092e366e231156ec450bd365e4baabae937e336","tests/tls_server_certs/allow_dns_san_and_disallow_subject_common_name.ca.der":"e3c498a39587874453521c7e83b82459514371f12d1a6c571f9a8d85af1316a7","tests/tls_server_certs/allow_dns_san_and_disallow_subject_common_name.ee.der":"0ba82bb96f13c8e84d3fe1d17554ea763ddcabc96b16a98bcccb0a0cdf4ee0dd","tests/tls_server_certs/allow_dns_san_and_subject_common_name.ca.der":"fa5a095891c729f5e8a688c2042d5e03e4399d0496d2a1345ec1245adeb619d0","tests/tls_server_certs/allow_dns_san_and_subject_common_name.ee.der":"f09453a4c352628039bdf28bd753c1f50b0fc5b5a73041af76771205c183ace2","tests/tls_server_certs/allow_subject_common_name.ca.der":"8aee2d67281fa86dfe92eb02208f5a4b56fe4eb679f962db6e331c209cf6c0dc","tests/tls_server_certs/allow_subject_common_name.ee.der":"729259d639402c8519e244f129482baef4d30113bba46845e53794352e78ff98","tests/tls_server_certs/disallow_dns_san.ca.der":"bc055f4d1110e8ef3f7b2f93fabb33fc4279bcd95118e72175be3f7d3e17be8a","tests/tls_server_certs/disallow_dns_san.ee.der":"6fb57671d8456b18504e87638818dcb4ed545603b331cb8e18a33018d1260e90","tests/tls_server_certs/disallow_dns_san_and_allow_subject_common_name.ca.der":"80b8df7570df8488d9f8bec965960b5a92e3bd6e4bd3f90b2a0d22a93aab2d12","tests/tls_server_certs/disallow_dns_san_and_allow_subject_common_name.ee.der":"9f8c95f2db0a234f78287f831e911973f10cfb9a8cb0dff1bf3472ae51cdad32","tests/tls_server_certs/disallow_subject_common_name.ca.der":"761a3d7184ba6f6c0d12fa45964a882f3dd69323e262b2d4b1584fbb58a8d71c","tests/tls_server_certs/disallow_subject_common_name.ee.der":"c81a9c9064494fe43bd6f29d1e5f73c1d6e29cc16dd65fe178ee03c8412d10a6","tests/tls_server_certs/exclude_directory_name_not_implemented.ca.der":"e0a7e465bb517e053e031bf0d79bc19124cec86cd1524e8f8966504abc7f0b6f","tests/tls_server_certs/exclude_directory_name_not_implemented.ee.der":"3e0c37fe4cc500e10198dac6069d4f556a69792ae4fc39f95e466366c7fb8fd3","tests/tls_server_certs/ignore_name_constraints_on_unimplemented_names.ca.der":"280ef32a0bc1d430defd536429af2517b4c30c26dafda7c2d2c570000ec5d366","tests/tls_server_certs/ignore_name_constraints_on_unimplemented_names.ee.der":"e5897402a8889a1a0510cb94333ce478b4b20e9153cfddffd0e7a179dc998961","tests/tls_server_certs/invalid_dns_name_matching.ca.der":"02cca02df01b4b97c3ed042e6c05e7e881324ecf1ea6dd568cf792f72ede3ce9","tests/tls_server_certs/invalid_dns_name_matching.ee.der":"6c1170c6a5c310bc09355c7c9ed70941777f1c86eb50dfd1a4679e3321e2cf85","tests/tls_server_certs/ip46_mixed_address_san_allowed.ca.der":"65da5c82fe5f9b0221c32f639243e058fa2da25c20c03480c49a86f5a6375e23","tests/tls_server_certs/ip46_mixed_address_san_allowed.ee.der":"3dc2726d01a293b25f8e520a83cb97cb9660ae959bb8a22de4d3324f39c06c88","tests/tls_server_certs/ip4_address_san_allowed.ca.der":"b3a89091eb5fc1777dc024c0f8b2f4114556ec878813528df387486c9d215689","tests/tls_server_certs/ip4_address_san_allowed.ee.der":"633cd3177f87584858d97e8e42ea099b1f07c70685f09f3b8e3de78d377400bd","tests/tls_server_certs/ip4_address_san_allowed_if_outside_excluded_subtree.ca.der":"5852b0dc726f6043581b750af112656a905d685b58b9ab4c58c0cd3c296b2911","tests/tls_server_certs/ip4_address_san_allowed_if_outside_excluded_subtree.ee.der":"83dcaf01c427943bc87688aa5b36031445b196c224b217ccd7cdaf6a43d4ea0f","tests/tls_server_certs/ip4_address_san_rejected_if_excluded_is_sparse_cidr_mask.ca.der":"992c9cadbb0ef5a870c20722bfaa34c568cca614f18e924e01007181d3c70b18","tests/tls_server_certs/ip4_address_san_rejected_if_excluded_is_sparse_cidr_mask.ee.der":"258d362b838c118e059864bdc7712a1494c2fddb8e4aadec48fd73fb31231bf3","tests/tls_server_certs/ip4_address_san_rejected_if_in_excluded_subtree.ca.der":"257292ee5aed1ff2a66bec8150ede6054d99304be20f434c87f9974a62d9f86a","tests/tls_server_certs/ip4_address_san_rejected_if_in_excluded_subtree.ee.der":"795d096429d39b7c4bf6f4e2ce68203591f061bfd91e82333cfc39b323866120","tests/tls_server_certs/ip6_address_san_allowed.ca.der":"de9c4ef0662eb276638fa3a67a2f6a2ef182027039a5fb41271bfbe5109b1606","tests/tls_server_certs/ip6_address_san_allowed.ee.der":"c3c00431c244bca7691f02eb06e562a74de4dd7f84b56a477f32ba24c770eb2b","tests/tls_server_certs/ip6_address_san_allowed_if_outside_excluded_subtree.ca.der":"63267151e4556fee2323b2b71a4b58cc5c5cadf77cbb784d6dc7020534088f37","tests/tls_server_certs/ip6_address_san_allowed_if_outside_excluded_subtree.ee.der":"9a572d3101d9a6f1e05a59b3b257a4bb0adaf4b75f9d252c1639fbb94ab57e45","tests/tls_server_certs/ip6_address_san_rejected_if_in_excluded_subtree.ca.der":"b05bf6010a10763b3d18d9e046b61b73f001a40e018372931d50010fb47bc0dc","tests/tls_server_certs/ip6_address_san_rejected_if_in_excluded_subtree.ee.der":"04d303b3840ef7289f1d589669e24ba185fe53f2db1940bf725ae013f5989f8e","tests/tls_server_certs/no_name_constraints.ca.der":"11cdf0add140c9dd5734f98384402dec08ef52c6244a3c47537b2656e93051a2","tests/tls_server_certs/no_name_constraints.ee.der":"c3ec6ed03ba539d12922149b6caa2275b8db267817874d1db7c6890fea3f8c27","tests/tls_server_certs/permit_directory_name_not_implemented.ca.der":"1789a18b9556e3ca7e94f9048074f68fc526f7d44c3a553a30f12b822c150bf2","tests/tls_server_certs/permit_directory_name_not_implemented.ee.der":"39d4eb091a4311d6c5c7bb3fa34971a3c25b9ef70b1380afa48c575e694ad495","tests/tls_server_certs/reject_constraints_on_unimplemented_names.ca.der":"90bc444cfa3323b4f40d836dcbcecda870c0ba4cf4975508a940012b4038474d","tests/tls_server_certs/reject_constraints_on_unimplemented_names.ee.der":"15c52eed42355800a93ece3db907ac44f3617f1751b6f9e570a9cf2f5dc29835","tests/tls_server_certs/reject_unimplemented_name_constraints.ca.der":"b221a050ba22bde5f1571bd916628335c13b0f50e14412aa27f0484699118c44","tests/tls_server_certs/reject_unimplemented_name_constraints.ee.der":"fc114e10031eb00f79412aabf20849cdcb6adee95b6438ab4b9274f77ec48e1c","tests/tls_server_certs/we_ignore_constraints_on_names_that_do_not_appear_in_cert.ca.der":"0d93dd2ce481daa1cab06f4e5c91f82f500efad716ad3279e622db4fd136a598","tests/tls_server_certs/we_ignore_constraints_on_names_that_do_not_appear_in_cert.ee.der":"fb1e2421e6f2bada83730ed07edc8cf1cb4123ee88c224c5c0aa957566aa08c8","tests/tls_server_certs/we_incorrectly_ignore_name_constraints_on_name_in_subject.ca.der":"ef23514152f858ccb94707dafd3e01c17d7a40b4db4d06292860dbeb927b9657","tests/tls_server_certs/we_incorrectly_ignore_name_constraints_on_name_in_subject.ee.der":"5b9180eafdd8f1355c38703709dacf165aa98a40e40b9df3376b4193923c934e","tests/tls_server_certs/wildcard_san_accepted_if_in_subtree.ca.der":"150cf9479975fe781823762dc6bb5b61a763767ee9c1706bfa715a4054c7220a","tests/tls_server_certs/wildcard_san_accepted_if_in_subtree.ee.der":"0666a1de480710afdf09470ef93c4bdfeff97f2c2324fe29116b92ba4a5af26f","tests/tls_server_certs/wildcard_san_rejected_if_in_excluded_subtree.ca.der":"783288567e54f0122927d90c8369304bd403e36175c8843c798b065696a2498a","tests/tls_server_certs/wildcard_san_rejected_if_in_excluded_subtree.ee.der":"ba39da26934884e01a15a19590d16185953de2b60d6e5d14fa825861198fe86d","tests/wpt/ca.der":"d2d38f5c7ce32127361f269145006c88fa0706868139d528182b2d153ef47fd0","tests/wpt/ee.der":"46aec06a7a43456c98ca33e74b3b8dd73d709d14ea2c9eee730e1b724afe9469","third-party/bettertls/README.md":"4270e6ccb626095d638cb1f8c880d3c7cad7a85cc0d39525dee6aed22aeb48e1"},"package":"8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/rustls-webpki/Cargo.toml temporalio-1.3.0/vendor/rustls-webpki/Cargo.toml --- temporalio-1.3.0/vendor/rustls-webpki/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,9 +11,9 @@ [package] edition = "2021" -rust-version = "1.57" +rust-version = "1.61" name = "rustls-webpki" -version = "0.101.0" +version = "0.101.7" include = [ "Cargo.toml", "/LICENSE", @@ -51,12 +51,16 @@ [package.metadata.docs.rs] all-features = true +rustdoc-args = [ + "--cfg", + "docsrs", +] [profile.bench] opt-level = 3 lto = true codegen-units = 1 -debug = false +debug = 0 debug-assertions = false rpath = false @@ -64,22 +68,44 @@ opt-level = 3 lto = true codegen-units = 1 -debug = false +debug = 0 debug-assertions = false rpath = false [lib] name = "webpki" +[[bench]] +name = "benchmarks" +path = "benches/benchmark.rs" +harness = false + [dependencies.ring] -version = "0.16.19" +version = "0.17" default-features = false [dependencies.untrusted] -version = "0.7.1" +version = "0.9" [dev-dependencies.base64] -version = "0.13" +version = "0.21" + +[dev-dependencies.bencher] +version = "0.1.5" + +[dev-dependencies.once_cell] +version = "1.17.2" + +[dev-dependencies.rcgen] +version = "0.11.3" +default-features = false + +[dev-dependencies.serde] +version = "1.0" +features = ["derive"] + +[dev-dependencies.serde_json] +version = "1.0" [features] alloc = ["ring/alloc"] diff -Nru temporalio-1.3.0/vendor/rustls-webpki/README.md temporalio-1.3.0/vendor/rustls-webpki/README.md --- temporalio-1.3.0/vendor/rustls-webpki/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -34,7 +34,7 @@ a given DNS name or IP address by considering the allowed usage of the certificate and additional constraints. - + Limitations =============== @@ -54,36 +54,7 @@ Changelog ========= -* 0.101.0 (2023-07-04) - - *Breaking change*: added `EndEntity::verify_is_valid_tls_client_cert` - argument for certificate revocation lists. - - *Breaking change*: removed `Time::try_from`. - - *Breaking change*: removed `From` impl for `DnsName`. - - *Breaking change*: replaced `AsRef<[u8]>` with `AsRef` for `DnsNameRef`. - - Added certificate revocation list (CRL) support. - - Improved specificity of errors returned from - `EndEntityCert::verify_is_valid_tls_client_cert` and - `EndEntityCert::verify_is_valid_tls_server_cert`. - - Improved error specificity for malformed subject alternate names. - - Added `EndEntityCert::dns_names` method for returning a list of DNS subject - alternate names from an end entity cert. - - Changed `EndEntityCert::verify_is_valid_for_subject_name` to ignore invalid - names when verifying cert is valid for a provided subject. - - MSRV increased to Rust 1.57. -* 0.100.1 (2023-03-28) - - Relax constraint on serial number length. -* 0.100.0 (2023-03-13) - first release of `rustls-webpki` crate. - - Allow verification of certificates with IP address subjectAltNames. - `EndEntityCert::verify_is_valid_for_subject_name` was added, and - `EndEntityCert::verify_is_valid_for_dns_name` was removed. - - Make `Error` type non-exhaustive. - - Reject non-contiguous netmasks in IP address name constraints. - - Name constraints of type dNSName and iPAddress now work and are tested. - directoryName name constraints are not implemented and will prevent - path building where they appear. - - Relax requirement that serial numbers are positive to deal with issuers - that cannot generate correct ASN.1 but nevertheless persist in doing so. -* 0.22.0 (2021-04-10) - last upstream release of `webpki` crate. +Release history can be found [on GitHub](https://github.com/rustls/webpki/releases). Demo diff -Nru temporalio-1.3.0/vendor/rustls-webpki/src/cert.rs temporalio-1.3.0/vendor/rustls-webpki/src/cert.rs --- temporalio-1.3.0/vendor/rustls-webpki/src/cert.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/src/cert.rs 2023-10-30 19:40:00.000000000 +0000 @@ -13,8 +13,9 @@ // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. use crate::der::Tag; +use crate::signed_data::SignedData; use crate::x509::{remember_extension, set_extension_once, Extension}; -use crate::{der, signed_data, Error}; +use crate::{der, public_values_eq, Error}; /// An enumeration indicating whether a [`Cert`] is a leaf end-entity cert, or a linked /// list node from the CA `Cert` to a child `Cert` it issued. @@ -31,7 +32,7 @@ pub(crate) ee_or_ca: EndEntityOrCa<'a>, pub(crate) serial: untrusted::Input<'a>, - pub(crate) signed_data: signed_data::SignedData<'a>, + pub(crate) signed_data: SignedData<'a>, pub(crate) issuer: untrusted::Input<'a>, pub(crate) validity: untrusted::Input<'a>, pub(crate) subject: untrusted::Input<'a>, @@ -49,6 +50,80 @@ } impl<'a> Cert<'a> { + pub(crate) fn from_der( + cert_der: untrusted::Input<'a>, + ee_or_ca: EndEntityOrCa<'a>, + ) -> Result { + let (tbs, signed_data) = cert_der.read_all(Error::BadDer, |cert_der| { + der::nested(cert_der, der::Tag::Sequence, Error::BadDer, |der| { + // limited to SEQUENCEs of size 2^16 or less. + SignedData::from_der(der, der::TWO_BYTE_DER_SIZE) + }) + })?; + + tbs.read_all(Error::BadDer, |tbs| { + version3(tbs)?; + + let serial = lenient_certificate_serial_number(tbs)?; + + let signature = der::expect_tag_and_get_value(tbs, der::Tag::Sequence)?; + // TODO: In mozilla::pkix, the comparison is done based on the + // normalized value (ignoring whether or not there is an optional NULL + // parameter for RSA-based algorithms), so this may be too strict. + if !public_values_eq(signature, signed_data.algorithm) { + return Err(Error::SignatureAlgorithmMismatch); + } + + let issuer = der::expect_tag_and_get_value(tbs, der::Tag::Sequence)?; + let validity = der::expect_tag_and_get_value(tbs, der::Tag::Sequence)?; + let subject = der::expect_tag_and_get_value(tbs, der::Tag::Sequence)?; + let spki = der::expect_tag(tbs, der::Tag::Sequence)?; + + // In theory there could be fields [1] issuerUniqueID and [2] + // subjectUniqueID, but in practice there never are, and to keep the + // code small and simple we don't accept any certificates that do + // contain them. + + let mut cert = Cert { + ee_or_ca, + + signed_data, + serial, + issuer, + validity, + subject, + spki, + + basic_constraints: None, + key_usage: None, + eku: None, + name_constraints: None, + subject_alt_name: None, + }; + + if !tbs.at_end() { + der::nested( + tbs, + der::Tag::ContextSpecificConstructed3, + Error::MalformedExtensions, + |tagged| { + der::nested_of_mut( + tagged, + der::Tag::Sequence, + der::Tag::Sequence, + Error::BadDer, + |extension| { + remember_cert_extension(&mut cert, &Extension::parse(extension)?) + }, + ) + }, + )?; + } + + Ok(cert) + }) + } + /// Raw DER encoded certificate serial number. pub fn serial(&self) -> &[u8] { self.serial.as_slice_less_safe() @@ -71,80 +146,6 @@ } } -pub(crate) fn parse_cert<'a>( - cert_der: untrusted::Input<'a>, - ee_or_ca: EndEntityOrCa<'a>, -) -> Result, Error> { - let (tbs, signed_data) = cert_der.read_all(Error::BadDer, |cert_der| { - der::nested(cert_der, der::Tag::Sequence, Error::BadDer, |der| { - // limited to SEQUENCEs of size 2^16 or less. - signed_data::parse_signed_data(der, der::TWO_BYTE_DER_SIZE) - }) - })?; - - tbs.read_all(Error::BadDer, |tbs| { - version3(tbs)?; - - let serial = lenient_certificate_serial_number(tbs)?; - - let signature = der::expect_tag_and_get_value(tbs, der::Tag::Sequence)?; - // TODO: In mozilla::pkix, the comparison is done based on the - // normalized value (ignoring whether or not there is an optional NULL - // parameter for RSA-based algorithms), so this may be too strict. - if signature != signed_data.algorithm { - return Err(Error::SignatureAlgorithmMismatch); - } - - let issuer = der::expect_tag_and_get_value(tbs, der::Tag::Sequence)?; - let validity = der::expect_tag_and_get_value(tbs, der::Tag::Sequence)?; - let subject = der::expect_tag_and_get_value(tbs, der::Tag::Sequence)?; - let spki = der::expect_tag(tbs, der::Tag::Sequence)?; - - // In theory there could be fields [1] issuerUniqueID and [2] - // subjectUniqueID, but in practice there never are, and to keep the - // code small and simple we don't accept any certificates that do - // contain them. - - let mut cert = Cert { - ee_or_ca, - - signed_data, - serial, - issuer, - validity, - subject, - spki, - - basic_constraints: None, - key_usage: None, - eku: None, - name_constraints: None, - subject_alt_name: None, - }; - - if !tbs.at_end() { - der::nested( - tbs, - der::Tag::ContextSpecificConstructed3, - Error::MalformedExtensions, - |tagged| { - der::nested_of_mut( - tagged, - der::Tag::Sequence, - der::Tag::Sequence, - Error::BadDer, - |extension| { - remember_cert_extension(&mut cert, &Extension::parse(extension)?) - }, - ) - }, - )?; - } - - Ok(cert) - }) -} - // mozilla::pkix supports v1, v2, v3, and v4, including both the implicit // (correct) and explicit (incorrect) encoding of v1. We allow only v3. fn version3(input: &mut untrusted::Reader) -> Result<(), Error> { @@ -222,7 +223,7 @@ #[cfg(test)] mod tests { - use crate::cert::{self, EndEntityOrCa}; + use crate::cert::{Cert, EndEntityOrCa}; #[test] // Note: cert::parse_cert is crate-local visibility, and EndEntityCert doesn't expose the @@ -230,12 +231,12 @@ // is read correctly here instead of in tests/integration.rs. fn test_serial_read() { let ee = include_bytes!("../tests/misc/serial_neg_ee.der"); - let cert = cert::parse_cert(untrusted::Input::from(ee), EndEntityOrCa::EndEntity) + let cert = Cert::from_der(untrusted::Input::from(ee), EndEntityOrCa::EndEntity) .expect("failed to parse certificate"); assert_eq!(cert.serial.as_slice_less_safe(), &[255, 33, 82, 65, 17]); let ee = include_bytes!("../tests/misc/serial_large_positive.der"); - let cert = cert::parse_cert(untrusted::Input::from(ee), EndEntityOrCa::EndEntity) + let cert = Cert::from_der(untrusted::Input::from(ee), EndEntityOrCa::EndEntity) .expect("failed to parse certificate"); assert_eq!( cert.serial.as_slice_less_safe(), diff -Nru temporalio-1.3.0/vendor/rustls-webpki/src/crl.rs temporalio-1.3.0/vendor/rustls-webpki/src/crl.rs --- temporalio-1.3.0/vendor/rustls-webpki/src/crl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/src/crl.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,9 +12,12 @@ // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +use crate::cert::lenient_certificate_serial_number; use crate::der::Tag; +use crate::signed_data::{self, SignedData}; +use crate::verify_cert::Budget; use crate::x509::{remember_extension, set_extension_once, Extension}; -use crate::{der, signed_data, Error, SignatureAlgorithm, Time}; +use crate::{der, public_values_eq, Error, SignatureAlgorithm, Time}; #[cfg(feature = "alloc")] use std::collections::HashMap; @@ -45,11 +48,11 @@ /// Owned representation of a RFC 5280[^1] profile Certificate Revocation List (CRL). /// -/// This type is only available when using the `alloc` feature. -/// /// [^1]: #[cfg(feature = "alloc")] +#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))] #[allow(dead_code)] // we parse some fields we don't expose now, but may choose to expose in the future. +#[derive(Debug, Clone)] pub struct OwnedCertRevocationList { /// A map of the revoked certificates contained in then CRL, keyed by the DER encoding /// of the revoked cert's serial number. @@ -88,6 +91,7 @@ supported_sig_algs, untrusted::Input::from(issuer_spki), &self.signed_data.borrow(), + &mut Budget::default(), ) } } @@ -95,9 +99,10 @@ /// Borrowed representation of a RFC 5280[^1] profile Certificate Revocation List (CRL). /// /// [^1]: +#[derive(Debug)] pub struct BorrowedCertRevocationList<'a> { /// A `SignedData` structure that can be passed to `verify_signed_data`. - signed_data: signed_data::SignedData<'a>, + signed_data: SignedData<'a>, /// Identifies the entity that has signed and issued this /// CRL. @@ -126,7 +131,7 @@ crl_der, Tag::Sequence, Error::BadDer, - |signed_der| signed_data::parse_signed_data(signed_der, der::MAX_DER_SIZE), + |signed_der| SignedData::from_der(signed_der, der::MAX_DER_SIZE), der::MAX_DER_SIZE, ) })?; @@ -150,7 +155,7 @@ // This field MUST contain the same algorithm identifier as the // signatureAlgorithm field in the sequence CertificateList let signature = der::expect_tag_and_get_value(tbs_cert_list, Tag::Sequence)?; - if signature != signed_data.algorithm { + if !public_values_eq(signature, signed_data.algorithm) { return Err(Error::SignatureAlgorithmMismatch); } @@ -229,9 +234,8 @@ /// Convert the CRL to an [`OwnedCertRevocationList`]. This may error if any of the revoked /// certificates in the CRL are malformed or contain unsupported features. - /// - /// This function is only available when the "alloc" feature is enabled. #[cfg(feature = "alloc")] + #[cfg_attr(docsrs, doc(cfg(feature = "alloc")))] pub fn to_owned(&self) -> Result { // Parse and collect the CRL's revoked cert entries, ensuring there are no errors. With // the full set in-hand, create a lookup map by serial number for fast revocation checking. @@ -332,6 +336,7 @@ supported_sig_algs, untrusted::Input::from(issuer_spki), &self.signed_data, + &mut Budget::default(), ) } } @@ -347,6 +352,7 @@ } } +#[derive(Debug)] pub struct RevokedCerts<'a> { reader: untrusted::Reader<'a>, } @@ -366,6 +372,7 @@ /// /// [^1]: #[cfg(feature = "alloc")] +#[derive(Clone, Debug)] pub struct OwnedRevokedCert { /// Serial number of the revoked certificate. pub serial_number: Vec, @@ -402,6 +409,7 @@ /// certificate entry. /// /// [^1]: +#[derive(Debug)] pub struct BorrowedRevokedCert<'a> { /// Serial number of the revoked certificate. pub serial_number: &'a [u8], @@ -423,9 +431,8 @@ impl<'a> BorrowedRevokedCert<'a> { /// Construct an owned representation of the revoked certificate. - /// - /// Only available when the "alloc" feature is enabled. #[cfg(feature = "alloc")] + #[cfg_attr(docsrs, doc(cfg(feature = "alloc")))] pub fn to_owned(&self) -> OwnedRevokedCert { OwnedRevokedCert { serial_number: self.serial_number.to_vec(), @@ -446,9 +453,9 @@ // gracefully handle such certificates. // Like the handling in cert.rs we choose to be lenient here, not enforcing the length // of a CRL revoked certificate's serial number is less than 20 octets in encoded form. - let serial_number = ring::io::der::positive_integer(der) + let serial_number = lenient_certificate_serial_number(der) .map_err(|_| Error::InvalidSerialNumber)? - .big_endian_without_leading_zero(); + .as_slice_less_safe(); let revocation_date = der::time_choice(der)?; @@ -613,10 +620,41 @@ let actual = >::try_into(*id) .expect("unexpected reason code conversion error"); assert_eq!(actual, *expected); + #[cfg(feature = "alloc")] + { + // revocation reasons should be Debug. + println!("{:?}", actual); + } } // Unsupported/unknown revocation reason codes should produce an error. let res = >::try_into(7); assert!(matches!(res, Err(Error::UnsupportedRevocationReason))); } + + #[test] + #[cfg(feature = "alloc")] + // redundant clone, clone_on_copy allowed to verify derived traits. + #[allow(clippy::redundant_clone, clippy::clone_on_copy)] + fn test_derived_traits() { + let crl = crate::crl::BorrowedCertRevocationList::from_der(include_bytes!( + "../tests/crls/crl.valid.der" + )) + .unwrap(); + println!("{:?}", crl); // BorrowedCertRevocationList should be debug. + + let owned_crl = crl.to_owned().unwrap(); + println!("{:?}", owned_crl); // OwnedCertRevocationList should be debug. + let _ = owned_crl.clone(); // OwnedCertRevocationList should be clone. + + let mut revoked_certs = crl.into_iter(); + println!("{:?}", revoked_certs); // RevokedCert should be debug. + + let revoked_cert = revoked_certs.next().unwrap().unwrap(); + println!("{:?}", revoked_cert); // BorrowedRevokedCert should be debug. + + let owned_revoked_cert = revoked_cert.to_owned(); + println!("{:?}", owned_revoked_cert); // OwnedRevokedCert should be debug. + let _ = owned_revoked_cert.clone(); // OwnedRevokedCert should be clone. + } } diff -Nru temporalio-1.3.0/vendor/rustls-webpki/src/der.rs temporalio-1.3.0/vendor/rustls-webpki/src/der.rs --- temporalio-1.3.0/vendor/rustls-webpki/src/der.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/src/der.rs 2023-10-30 19:40:00.000000000 +0000 @@ -26,9 +26,7 @@ OctetString = 0x04, OID = 0x06, Enum = 0x0A, - UTF8String = 0x0C, Sequence = CONSTRUCTED | 0x10, // 0x30 - Set = CONSTRUCTED | 0x11, // 0x31 UTCTime = 0x17, GeneralizedTime = 0x18, @@ -225,25 +223,25 @@ const LONG_FORM_LEN_ONE_BYTE: u8 = 0x81; // Maximum size that can be expressed in a one byte long form len. -const LONG_FORM_LEN_ONE_BYTE_MAX: usize = (1 << 8) - 1; +const LONG_FORM_LEN_ONE_BYTE_MAX: usize = 0xff; // Leading octet for long definite form DER length expressed in subsequent two bytes. const LONG_FORM_LEN_TWO_BYTES: u8 = 0x82; // Maximum size that can be expressed in a two byte long form len. -const LONG_FORM_LEN_TWO_BYTES_MAX: usize = (1 << (8 * 2)) - 1; +const LONG_FORM_LEN_TWO_BYTES_MAX: usize = 0xff_ff; // Leading octet for long definite form DER length expressed in subsequent three bytes. const LONG_FORM_LEN_THREE_BYTES: u8 = 0x83; // Maximum size that can be expressed in a three byte long form len. -const LONG_FORM_LEN_THREE_BYTES_MAX: usize = (1 << (8 * 3)) - 1; +const LONG_FORM_LEN_THREE_BYTES_MAX: usize = 0xff_ff_ff; // Leading octet for long definite form DER length expressed in subsequent four bytes. const LONG_FORM_LEN_FOUR_BYTES: u8 = 0x84; // Maximum size that can be expressed in a four byte long form der len. -const LONG_FORM_LEN_FOUR_BYTES_MAX: usize = (1 << (8 * 4)) - 1; +const LONG_FORM_LEN_FOUR_BYTES_MAX: usize = 0xff_ff_ff_ff; // TODO: investigate taking decoder as a reference to reduce generated code // size. @@ -428,8 +426,8 @@ // Only 0x00 and 0xff are accepted values assert_eq!( - Err(Error::BadDer), - optional_boolean(&mut bytes_reader(&[0x01, 0x01, 0x42])) + optional_boolean(&mut bytes_reader(&[0x01, 0x01, 0x42])).unwrap_err(), + Error::BadDer, ); // True @@ -445,33 +443,35 @@ // Unexpected type assert_eq!( - Err(Error::BadDer), - bit_string_with_no_unused_bits(&mut bytes_reader(&[0x01, 0x01, 0xff])) + bit_string_with_no_unused_bits(&mut bytes_reader(&[0x01, 0x01, 0xff])).unwrap_err(), + Error::BadDer, ); // Unexpected nonexistent type assert_eq!( - Err(Error::BadDer), - bit_string_with_no_unused_bits(&mut bytes_reader(&[0x42, 0xff, 0xff])) + bit_string_with_no_unused_bits(&mut bytes_reader(&[0x42, 0xff, 0xff])).unwrap_err(), + Error::BadDer, ); // Unexpected empty input assert_eq!( - Err(Error::BadDer), - bit_string_with_no_unused_bits(&mut bytes_reader(&[])) + bit_string_with_no_unused_bits(&mut bytes_reader(&[])).unwrap_err(), + Error::BadDer, ); // Valid input with non-zero unused bits assert_eq!( - Err(Error::BadDer), bit_string_with_no_unused_bits(&mut bytes_reader(&[0x03, 0x03, 0x04, 0x12, 0x34])) + .unwrap_err(), + Error::BadDer, ); // Valid input assert_eq!( - untrusted::Input::from(&[0x12, 0x34]), bit_string_with_no_unused_bits(&mut bytes_reader(&[0x03, 0x03, 0x00, 0x12, 0x34])) .unwrap() + .as_slice_less_safe(), + &[0x12, 0x34], ); } diff -Nru temporalio-1.3.0/vendor/rustls-webpki/src/end_entity.rs temporalio-1.3.0/vendor/rustls-webpki/src/end_entity.rs --- temporalio-1.3.0/vendor/rustls-webpki/src/end_entity.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/src/end_entity.rs 2023-10-30 19:40:00.000000000 +0000 @@ -15,9 +15,11 @@ #[cfg(feature = "alloc")] use crate::subject_name::GeneralDnsNameRef; use crate::{ - cert, signed_data, subject_name, verify_cert, CertRevocationList, Error, SignatureAlgorithm, - SubjectNameRef, Time, TlsClientTrustAnchors, TlsServerTrustAnchors, + cert, signed_data, subject_name, verify_cert, CertRevocationList, Error, KeyUsage, + SignatureAlgorithm, SubjectNameRef, Time, TrustAnchor, }; +#[allow(deprecated)] +use crate::{TlsClientTrustAnchors, TlsServerTrustAnchors}; /// An end-entity certificate. /// @@ -61,7 +63,7 @@ /// `cert_der`. fn try_from(cert_der: &'a [u8]) -> Result { Ok(Self { - inner: cert::parse_cert( + inner: cert::Cert::from_der( untrusted::Input::from(cert_der), cert::EndEntityOrCa::EndEntity, )?, @@ -74,6 +76,62 @@ &self.inner } + fn verify_is_valid_cert( + &self, + supported_sig_algs: &[&SignatureAlgorithm], + trust_anchors: &[TrustAnchor], + intermediate_certs: &[&[u8]], + time: Time, + eku: KeyUsage, + crls: &[&dyn CertRevocationList], + ) -> Result<(), Error> { + verify_cert::build_chain( + &verify_cert::ChainOptions { + eku, + supported_sig_algs, + trust_anchors, + intermediate_certs, + crls, + }, + &self.inner, + time, + ) + } + + /// Verifies that the end-entity certificate is valid for use against the + /// specified Extended Key Usage (EKU). + /// + /// * `supported_sig_algs` is the list of signature algorithms that are + /// trusted for use in certificate signatures; the end-entity certificate's + /// public key is not validated against this list. + /// * `trust_anchors` is the list of root CAs to trust + /// * `intermediate_certs` is the sequence of intermediate certificates that + /// the server sent in the TLS handshake. + /// * `time` is the time for which the validation is effective (usually the + /// current time). + /// * `usage` is the intended usage of the certificate, indicating what kind + /// of usage we're verifying the certificate for. + /// * `crls` is the list of certificate revocation lists to check + /// the certificate against. + pub fn verify_for_usage( + &self, + supported_sig_algs: &[&SignatureAlgorithm], + trust_anchors: &[TrustAnchor], + intermediate_certs: &[&[u8]], + time: Time, + usage: KeyUsage, + crls: &[&dyn CertRevocationList], + ) -> Result<(), Error> { + self.verify_is_valid_cert( + supported_sig_algs, + trust_anchors, + intermediate_certs, + time, + usage, + crls, + ) + } + /// Verifies that the end-entity certificate is valid for use by a TLS /// server. /// @@ -84,6 +142,14 @@ /// intermediate certificates that the server sent in the TLS handshake. /// `time` is the time for which the validation is effective (usually the /// current time). + #[allow(deprecated)] + #[deprecated( + since = "0.101.2", + note = "The per-usage trust anchor representations and verification functions are deprecated in \ + favor of the general-purpose `TrustAnchor` type and `EndEntity::verify_for_usage` function. \ + The new `verify_for_usage` function expresses trust anchor and end entity purpose with the \ + key usage argument." + )] pub fn verify_is_valid_tls_server_cert( &self, supported_sig_algs: &[&SignatureAlgorithm], @@ -91,16 +157,13 @@ intermediate_certs: &[&[u8]], time: Time, ) -> Result<(), Error> { - verify_cert::build_chain( - &verify_cert::ChainOptions { - required_eku_if_present: verify_cert::EKU_SERVER_AUTH, - supported_sig_algs, - trust_anchors, - intermediate_certs, - crls: &[], - }, - &self.inner, + self.verify_is_valid_cert( + supported_sig_algs, + trust_anchors, + intermediate_certs, time, + KeyUsage::server_auth(), + &[], ) } @@ -115,6 +178,14 @@ /// `cert` is the purported end-entity certificate of the client. `time` is /// the time for which the validation is effective (usually the current /// time). + #[allow(deprecated)] + #[deprecated( + since = "0.101.2", + note = "The per-usage trust anchor representations and verification functions are deprecated in \ + favor of the general-purpose `TrustAnchor` type and `EndEntity::verify_for_usage` function. \ + The new `verify_for_usage` function expresses trust anchor and end entity purpose with the \ + key usage argument." + )] pub fn verify_is_valid_tls_client_cert( &self, supported_sig_algs: &[&SignatureAlgorithm], @@ -123,16 +194,13 @@ time: Time, crls: &[&dyn CertRevocationList], ) -> Result<(), Error> { - verify_cert::build_chain( - &verify_cert::ChainOptions { - required_eku_if_present: verify_cert::EKU_CLIENT_AUTH, - supported_sig_algs, - trust_anchors, - intermediate_certs, - crls, - }, - &self.inner, + self.verify_is_valid_cert( + supported_sig_algs, + trust_anchors, + intermediate_certs, time, + KeyUsage::client_auth(), + crls, ) } @@ -183,11 +251,65 @@ /// This function must not be used to implement custom DNS name verification. /// Verification functions are already provided as `verify_is_valid_for_dns_name` /// and `verify_is_valid_for_at_least_one_dns_name`. - /// - /// Requires the `alloc` default feature; i.e. this isn't available in - /// `#![no_std]` configurations. #[cfg(feature = "alloc")] + #[cfg_attr(docsrs, doc(cfg(feature = "alloc")))] pub fn dns_names(&'a self) -> Result>, Error> { subject_name::list_cert_dns_names(self) } } + +#[cfg(feature = "alloc")] +#[cfg(test)] +mod tests { + use super::*; + use crate::test_utils; + + // This test reproduces https://github.com/rustls/webpki/issues/167 --- an + // end-entity cert where the common name is a `PrintableString` rather than + // a `UTF8String` cannot iterate over its subject alternative names. + #[test] + fn printable_string_common_name() { + const DNS_NAME: &str = "test.example.com"; + + let issuer = test_utils::make_issuer("Test", None); + + let ee_cert_der = { + let mut params = rcgen::CertificateParams::new(vec![DNS_NAME.to_string()]); + // construct a certificate that uses `PrintableString` as the + // common name value, rather than `UTF8String`. + params.distinguished_name.push( + rcgen::DnType::CommonName, + rcgen::DnValue::PrintableString("example.com".to_string()), + ); + params.is_ca = rcgen::IsCa::ExplicitNoCa; + params.alg = test_utils::RCGEN_SIGNATURE_ALG; + let cert = rcgen::Certificate::from_params(params) + .expect("failed to make ee cert (this is a test bug)"); + cert.serialize_der_with_signer(&issuer) + .expect("failed to serialize signed ee cert (this is a test bug)") + }; + + expect_dns_name(&ee_cert_der, DNS_NAME); + } + + // This test reproduces https://github.com/rustls/webpki/issues/167 --- an + // end-entity cert where the common name is an empty SEQUENCE. + #[test] + fn empty_sequence_common_name() { + // handcrafted cert DER produced using `ascii2der`, since `rcgen` is + // unwilling to generate this particular weird cert. + let ee_cert_der = include_bytes!("../tests/misc/empty_sequence_common_name.der").as_slice(); + expect_dns_name(ee_cert_der, "example.com"); + } + + fn expect_dns_name(der: &[u8], name: &str) { + let cert = + EndEntityCert::try_from(der).expect("should parse end entity certificate correctly"); + + let mut names = cert + .dns_names() + .expect("should get all DNS names correctly for end entity cert"); + assert_eq!(names.next().map(<&str>::from), Some(name)); + assert_eq!(names.next().map(<&str>::from), None); + } +} diff -Nru temporalio-1.3.0/vendor/rustls-webpki/src/error.rs temporalio-1.3.0/vendor/rustls-webpki/src/error.rs --- temporalio-1.3.0/vendor/rustls-webpki/src/error.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/src/error.rs 2023-10-30 19:40:00.000000000 +0000 @@ -13,6 +13,7 @@ // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. use core::fmt; +use core::ops::ControlFlow; /// An error that occurs during certificate validation or name validation. #[derive(Clone, Copy, Debug, PartialEq, Eq)] @@ -93,6 +94,18 @@ /// invalid labels. MalformedNameConstraint, + /// The maximum number of name constraint comparisons has been reached. + MaximumNameConstraintComparisonsExceeded, + + /// The maximum number of internal path building calls has been reached. Path complexity is too great. + MaximumPathBuildCallsExceeded, + + /// The path search was terminated because it became too deep. + MaximumPathDepthExceeded, + + /// The maximum number of signature checks has been reached. Path complexity is too great. + MaximumSignatureChecksExceeded, + /// The certificate violates one or more name constraints. NameConstraintViolation, @@ -182,48 +195,80 @@ pub(crate) fn rank(&self) -> u32 { match &self { // Errors related to certificate validity - Error::CertNotValidYet | Error::CertExpired => 27, - Error::CertNotValidForName => 26, - Error::CertRevoked => 25, - Error::InvalidCrlSignatureForPublicKey | Error::InvalidSignatureForPublicKey => 24, - Error::SignatureAlgorithmMismatch => 23, - Error::RequiredEkuNotFound => 22, - Error::NameConstraintViolation => 21, - Error::PathLenConstraintViolated => 20, - Error::CaUsedAsEndEntity | Error::EndEntityUsedAsCa => 19, - Error::IssuerNotCrlSigner => 18, + Error::CertNotValidYet | Error::CertExpired => 290, + Error::CertNotValidForName => 280, + Error::CertRevoked => 270, + Error::InvalidCrlSignatureForPublicKey | Error::InvalidSignatureForPublicKey => 260, + Error::SignatureAlgorithmMismatch => 250, + Error::RequiredEkuNotFound => 240, + Error::NameConstraintViolation => 230, + Error::PathLenConstraintViolated => 220, + Error::CaUsedAsEndEntity | Error::EndEntityUsedAsCa => 210, + Error::IssuerNotCrlSigner => 200, // Errors related to supported features used in an invalid way. - Error::InvalidCertValidity => 17, - Error::InvalidNetworkMaskConstraint => 16, - Error::InvalidSerialNumber => 15, - Error::InvalidCrlNumber => 14, + Error::InvalidCertValidity => 190, + Error::InvalidNetworkMaskConstraint => 180, + Error::InvalidSerialNumber => 170, + Error::InvalidCrlNumber => 160, // Errors related to unsupported features. Error::UnsupportedCrlSignatureAlgorithmForPublicKey - | Error::UnsupportedSignatureAlgorithmForPublicKey => 13, - Error::UnsupportedCrlSignatureAlgorithm | Error::UnsupportedSignatureAlgorithm => 12, - Error::UnsupportedCriticalExtension => 11, - Error::UnsupportedCertVersion => 11, - Error::UnsupportedCrlVersion => 10, - Error::UnsupportedDeltaCrl => 9, - Error::UnsupportedIndirectCrl => 8, - Error::UnsupportedRevocationReason => 7, + | Error::UnsupportedSignatureAlgorithmForPublicKey => 150, + Error::UnsupportedCrlSignatureAlgorithm | Error::UnsupportedSignatureAlgorithm => 140, + Error::UnsupportedCriticalExtension => 130, + Error::UnsupportedCertVersion => 130, + Error::UnsupportedCrlVersion => 120, + Error::UnsupportedDeltaCrl => 110, + Error::UnsupportedIndirectCrl => 100, + Error::UnsupportedRevocationReason => 90, + // Reserved for webpki 0.102.0+ usages: + // Error::UnsupportedRevocationReasonsPartitioning => 80, + // Error::UnsupportedCrlIssuingDistributionPoint => 70, + Error::MaximumPathDepthExceeded => 61, // Errors related to malformed data. - Error::MalformedDnsIdentifier => 6, - Error::MalformedNameConstraint => 5, - Error::MalformedExtensions => 4, - Error::ExtensionValueInvalid => 3, + Error::MalformedDnsIdentifier => 60, + Error::MalformedNameConstraint => 50, + Error::MalformedExtensions => 40, + Error::ExtensionValueInvalid => 30, // Generic DER errors. - Error::BadDerTime => 2, - Error::BadDer => 1, + Error::BadDerTime => 20, + Error::BadDer => 10, + + // Special case errors - not subject to ranking. + Error::MaximumSignatureChecksExceeded => 0, + Error::MaximumPathBuildCallsExceeded => 0, + Error::MaximumNameConstraintComparisonsExceeded => 0, // Default catch all error - should be renamed in the future. Error::UnknownIssuer => 0, } } + + /// Returns true for errors that should be considered fatal during path building. Errors of + /// this class should halt any further path building and be returned immediately. + #[inline] + pub(crate) fn is_fatal(&self) -> bool { + matches!( + self, + Error::MaximumSignatureChecksExceeded + | Error::MaximumPathBuildCallsExceeded + | Error::MaximumNameConstraintComparisonsExceeded + ) + } +} + +impl From for ControlFlow { + fn from(value: Error) -> Self { + match value { + // If an error is fatal, we've exhausted the potential for continued search. + err if err.is_fatal() => Self::Break(err), + // Otherwise we've rejected one candidate chain, but may continue to search for others. + err => Self::Continue(err), + } + } } impl fmt::Display for Error { @@ -232,8 +277,8 @@ } } -/// Requires the `std` feature. #[cfg(feature = "std")] +#[cfg_attr(docsrs, doc(cfg(feature = "std")))] impl ::std::error::Error for Error {} impl From for Error { diff -Nru temporalio-1.3.0/vendor/rustls-webpki/src/lib.rs temporalio-1.3.0/vendor/rustls-webpki/src/lib.rs --- temporalio-1.3.0/vendor/rustls-webpki/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -35,6 +35,8 @@ clippy::type_complexity, clippy::upper_case_acronyms )] +// Enable documentation for all features on docs.rs +#![cfg_attr(docsrs, feature(doc_cfg))] #[cfg(any(test, feature = "alloc"))] #[cfg_attr(test, macro_use)] @@ -56,6 +58,12 @@ mod verify_cert; mod x509; +#[allow(deprecated)] +pub use trust_anchor::{TlsClientTrustAnchors, TlsServerTrustAnchors}; + +#[cfg(test)] +pub(crate) mod test_utils; + pub use { cert::{Cert, EndEntityOrCa}, crl::{BorrowedCertRevocationList, BorrowedRevokedCert, CertRevocationList, RevocationReason}, @@ -65,20 +73,15 @@ SignatureAlgorithm, ECDSA_P256_SHA256, ECDSA_P256_SHA384, ECDSA_P384_SHA256, ECDSA_P384_SHA384, ED25519, }, + subject_name::{ + AddrParseError, DnsNameRef, InvalidDnsNameError, InvalidSubjectNameError, IpAddrRef, + SubjectNameRef, + }, time::Time, - trust_anchor::{TlsClientTrustAnchors, TlsServerTrustAnchors, TrustAnchor}, + trust_anchor::TrustAnchor, + verify_cert::KeyUsage, }; -// TODO(XXX): An interaction between Rust 1.57 and clippy requires working around 'unreachable_pub' -// false positives by breaking out these 'pub use' statements individually. Once MSRV -// increases they can be collapsed into one as part of the larger 'pub use' above. -pub use subject_name::AddrParseError; -pub use subject_name::DnsNameRef; -pub use subject_name::InvalidDnsNameError; -pub use subject_name::InvalidSubjectNameError; -pub use subject_name::IpAddrRef; -pub use subject_name::SubjectNameRef; - #[cfg(feature = "alloc")] pub use { crl::{OwnedCertRevocationList, OwnedRevokedCert}, @@ -87,9 +90,9 @@ RSA_PKCS1_3072_8192_SHA384, RSA_PSS_2048_8192_SHA256_LEGACY_KEY, RSA_PSS_2048_8192_SHA384_LEGACY_KEY, RSA_PSS_2048_8192_SHA512_LEGACY_KEY, }, - subject_name::IpAddr, + subject_name::{DnsName, IpAddr}, }; -// TODO(XXX): Similar to above, we break this individual 'pub use' for Rust 1.57. -#[cfg(feature = "alloc")] -pub use subject_name::DnsName; +fn public_values_eq(a: untrusted::Input<'_>, b: untrusted::Input<'_>) -> bool { + a.as_slice_less_safe() == b.as_slice_less_safe() +} diff -Nru temporalio-1.3.0/vendor/rustls-webpki/src/signed_data.rs temporalio-1.3.0/vendor/rustls-webpki/src/signed_data.rs --- temporalio-1.3.0/vendor/rustls-webpki/src/signed_data.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/src/signed_data.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,15 +12,19 @@ // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -use crate::{der, Error}; +use crate::verify_cert::Budget; +use crate::{der, public_values_eq, Error}; use ring::signature; +#[cfg(feature = "alloc")] +use alloc::vec::Vec; + /// X.509 certificates and related items that are signed are almost always /// encoded in the format "tbs||signatureAlgorithm||signature". This structure /// captures this pattern as an owned data type. -/// -/// This type is only available when the "alloc" feature is enabled. +#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))] #[cfg(feature = "alloc")] +#[derive(Clone, Debug)] pub(crate) struct OwnedSignedData { /// The signed data. This would be `tbsCertificate` in the case of an X.509 /// certificate, `tbsResponseData` in the case of an OCSP response, `tbsCertList` @@ -55,6 +59,7 @@ /// X.509 certificates and related items that are signed are almost always /// encoded in the format "tbs||signatureAlgorithm||signature". This structure /// captures this pattern. +#[derive(Debug)] pub(crate) struct SignedData<'a> { /// The signed data. This would be `tbsCertificate` in the case of an X.509 /// certificate, `tbsResponseData` in the case of an OCSP response, `tbsCertList` @@ -74,9 +79,61 @@ signature: untrusted::Input<'a>, } -#[cfg(feature = "alloc")] impl<'a> SignedData<'a> { + /// Parses the concatenation of "tbs||signatureAlgorithm||signature" that + /// is common in the X.509 certificate and OCSP response syntaxes. + /// + /// X.509 Certificates (RFC 5280) look like this: + /// + /// ```ASN.1 + /// Certificate (SEQUENCE) { + /// tbsCertificate TBSCertificate, + /// signatureAlgorithm AlgorithmIdentifier, + /// signatureValue BIT STRING + /// } + /// + /// OCSP responses (RFC 6960) look like this: + /// ```ASN.1 + /// BasicOCSPResponse { + /// tbsResponseData ResponseData, + /// signatureAlgorithm AlgorithmIdentifier, + /// signature BIT STRING, + /// certs [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL + /// } + /// ``` + /// + /// Note that this function does NOT parse the outermost `SEQUENCE` or the + /// `certs` value. + /// + /// The return value's first component is the contents of + /// `tbsCertificate`/`tbsResponseData`; the second component is a `SignedData` + /// structure that can be passed to `verify_signed_data`. + /// + /// The provided size_limit will enforce the largest possible outermost `SEQUENCE` this + /// function will read. + pub(crate) fn from_der( + der: &mut untrusted::Reader<'a>, + size_limit: usize, + ) -> Result<(untrusted::Input<'a>, Self), Error> { + let (data, tbs) = der.read_partial(|input| { + der::expect_tag_and_get_value_limited(input, der::Tag::Sequence, size_limit) + })?; + let algorithm = der::expect_tag_and_get_value(der, der::Tag::Sequence)?; + let signature = der::bit_string_with_no_unused_bits(der)?; + + Ok(( + tbs, + SignedData { + data, + algorithm, + signature, + }, + )) + } + /// Convert the borrowed signed data to an [`OwnedSignedData`]. + #[cfg(feature = "alloc")] + #[cfg_attr(docsrs, doc(cfg(feature = "alloc")))] pub(crate) fn to_owned(&self) -> OwnedSignedData { OwnedSignedData { data: self.data.as_slice_less_safe().to_vec(), @@ -86,57 +143,6 @@ } } -/// Parses the concatenation of "tbs||signatureAlgorithm||signature" that -/// is common in the X.509 certificate and OCSP response syntaxes. -/// -/// X.509 Certificates (RFC 5280) look like this: -/// -/// ```ASN.1 -/// Certificate (SEQUENCE) { -/// tbsCertificate TBSCertificate, -/// signatureAlgorithm AlgorithmIdentifier, -/// signatureValue BIT STRING -/// } -/// -/// OCSP responses (RFC 6960) look like this: -/// ```ASN.1 -/// BasicOCSPResponse { -/// tbsResponseData ResponseData, -/// signatureAlgorithm AlgorithmIdentifier, -/// signature BIT STRING, -/// certs [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL -/// } -/// ``` -/// -/// Note that this function does NOT parse the outermost `SEQUENCE` or the -/// `certs` value. -/// -/// The return value's first component is the contents of -/// `tbsCertificate`/`tbsResponseData`; the second component is a `SignedData` -/// structure that can be passed to `verify_signed_data`. -/// -/// The provided size_limit will enforce the largest possible outermost `SEQUENCE` this -/// function will read. -pub(crate) fn parse_signed_data<'a>( - der: &mut untrusted::Reader<'a>, - size_limit: usize, -) -> Result<(untrusted::Input<'a>, SignedData<'a>), Error> { - let (data, tbs) = der.read_partial(|input| { - der::expect_tag_and_get_value_limited(input, der::Tag::Sequence, size_limit) - })?; - let algorithm = der::expect_tag_and_get_value(der, der::Tag::Sequence)?; - let signature = der::bit_string_with_no_unused_bits(der)?; - - Ok(( - tbs, - SignedData { - data, - algorithm, - signature, - }, - )) -} - /// Verify `signed_data` using the public key in the DER-encoded /// SubjectPublicKeyInfo `spki` using one of the algorithms in /// `supported_algorithms`. @@ -150,7 +156,10 @@ supported_algorithms: &[&SignatureAlgorithm], spki_value: untrusted::Input, signed_data: &SignedData, + budget: &mut Budget, ) -> Result<(), Error> { + budget.consume_signature()?; + // We need to verify the signature in `signed_data` using the public key // in `public_key`. In order to know which *ring* signature verification // algorithm to use, we need to know the public key algorithm (ECDSA, @@ -204,7 +213,7 @@ msg: untrusted::Input, signature: untrusted::Input, ) -> Result<(), Error> { - let spki = parse_spki_value(spki_value)?; + let spki = SubjectPublicKeyInfo::from_der(spki_value)?; if !signature_alg .public_key_alg_id .matches_algorithm_id_value(spki.algorithm_id_value) @@ -224,19 +233,21 @@ key_value: untrusted::Input<'a>, } -// Parse the public key into an algorithm OID, an optional curve OID, and the -// key value. The caller needs to check whether these match the -// `PublicKeyAlgorithm` for the `SignatureAlgorithm` that is matched when -// parsing the signature. -fn parse_spki_value(input: untrusted::Input) -> Result { - input.read_all(Error::BadDer, |input| { - let algorithm_id_value = der::expect_tag_and_get_value(input, der::Tag::Sequence)?; - let key_value = der::bit_string_with_no_unused_bits(input)?; - Ok(SubjectPublicKeyInfo { - algorithm_id_value, - key_value, +impl<'a> SubjectPublicKeyInfo<'a> { + // Parse the public key into an algorithm OID, an optional curve OID, and the + // key value. The caller needs to check whether these match the + // `PublicKeyAlgorithm` for the `SignatureAlgorithm` that is matched when + // parsing the signature. + fn from_der(input: untrusted::Input<'a>) -> Result { + input.read_all(Error::BadDer, |input| { + let algorithm_id_value = der::expect_tag_and_get_value(input, der::Tag::Sequence)?; + let key_value = der::bit_string_with_no_unused_bits(input)?; + Ok(SubjectPublicKeyInfo { + algorithm_id_value, + key_value, + }) }) - }) + } } /// A signature algorithm. @@ -366,7 +377,7 @@ impl AlgorithmIdentifier { fn matches_algorithm_id_value(&self, encoded: untrusted::Input) -> bool { - encoded == self.asn1_id_value + public_values_eq(encoded, self.asn1_id_value) } } @@ -429,6 +440,8 @@ #[cfg(test)] mod tests { + use base64::{engine::general_purpose, Engine as _}; + use crate::{der, signed_data, Error}; use alloc::{string::String, vec::Vec}; @@ -492,7 +505,8 @@ signed_data::verify_signed_data( SUPPORTED_ALGORITHMS_IN_TESTS, spki_value, - &signed_data + &signed_data, + &mut Budget::default() ) ); } @@ -514,10 +528,12 @@ let tsd = parse_test_signed_data(file_contents); let signature = untrusted::Input::from(&tsd.signature); assert_eq!( - Err(expected_error), - signature.read_all(Error::BadDer, |input| { - der::bit_string_with_no_unused_bits(input) - }) + signature + .read_all(Error::BadDer, |input| { + der::bit_string_with_no_unused_bits(input) + }) + .unwrap_err(), + expected_error ); } @@ -535,10 +551,11 @@ let tsd = parse_test_signed_data(file_contents); let spki = untrusted::Input::from(&tsd.spki); assert_eq!( - Err(expected_error), spki.read_all(Error::BadDer, |input| { der::expect_tag_and_get_value(input, der::Tag::Sequence) }) + .unwrap_err(), + expected_error, ); } @@ -789,6 +806,7 @@ } } + use crate::verify_cert::Budget; use alloc::str::Lines; fn read_pem_section(lines: &mut Lines, section_name: &str) -> Vec { @@ -812,7 +830,7 @@ base64.push_str(line); } - base64::decode(&base64).unwrap() + general_purpose::STANDARD.decode(&base64).unwrap() } static SUPPORTED_ALGORITHMS_IN_TESTS: &[&signed_data::SignatureAlgorithm] = &[ diff -Nru temporalio-1.3.0/vendor/rustls-webpki/src/subject_name/dns_name.rs temporalio-1.3.0/vendor/rustls-webpki/src/subject_name/dns_name.rs --- temporalio-1.3.0/vendor/rustls-webpki/src/subject_name/dns_name.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/src/subject_name/dns_name.rs 2023-10-30 19:40:00.000000000 +0000 @@ -33,11 +33,12 @@ /// /// Requires the `alloc` feature. #[cfg(feature = "alloc")] +#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))] #[derive(Clone, Debug, Eq, PartialEq, Hash)] pub struct DnsName(String); -/// Requires the `alloc` feature. #[cfg(feature = "alloc")] +#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))] impl DnsName { /// Returns a `DnsNameRef` that refers to this `DnsName`. pub fn as_ref(&self) -> DnsNameRef { @@ -45,8 +46,8 @@ } } -/// Requires the `alloc` feature. #[cfg(feature = "alloc")] +#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))] impl AsRef for DnsName { fn as_ref(&self) -> &str { self.0.as_ref() @@ -85,8 +86,8 @@ } } -/// Requires the `std` feature. #[cfg(feature = "std")] +#[cfg_attr(docsrs, doc(cfg(feature = "std")))] impl ::std::error::Error for InvalidDnsNameError {} impl<'a> DnsNameRef<'a> { @@ -111,9 +112,8 @@ } /// Constructs a `DnsName` from this `DnsNameRef` - /// - /// Requires the `alloc` feature. #[cfg(feature = "alloc")] + #[cfg_attr(docsrs, doc(cfg(feature = "alloc")))] pub fn to_owned(&self) -> DnsName { // DnsNameRef is already guaranteed to be valid ASCII, which is a // subset of UTF-8. diff -Nru temporalio-1.3.0/vendor/rustls-webpki/src/subject_name/ip_address.rs temporalio-1.3.0/vendor/rustls-webpki/src/subject_name/ip_address.rs --- temporalio-1.3.0/vendor/rustls-webpki/src/subject_name/ip_address.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/src/subject_name/ip_address.rs 2023-10-30 19:40:00.000000000 +0000 @@ -24,6 +24,7 @@ /// Either a IPv4 or IPv6 address, plus its owned string representation #[cfg(feature = "alloc")] +#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))] #[derive(Clone, Debug, Eq, PartialEq, Hash)] pub enum IpAddr { /// An IPv4 address and its owned string representation @@ -33,6 +34,7 @@ } #[cfg(feature = "alloc")] +#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))] impl AsRef for IpAddr { fn as_ref(&self) -> &str { match self { @@ -51,6 +53,7 @@ } #[cfg(feature = "alloc")] +#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))] impl<'a> From> for IpAddr { fn from(ip_address: IpAddrRef<'a>) -> IpAddr { match ip_address { @@ -67,6 +70,7 @@ } #[cfg(feature = "alloc")] +#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))] impl<'a> From<&'a IpAddr> for IpAddrRef<'a> { fn from(ip_address: &'a IpAddr) -> IpAddrRef<'a> { match ip_address { @@ -91,8 +95,8 @@ } } -/// Requires the `std` feature. #[cfg(feature = "std")] +#[cfg_attr(docsrs, doc(cfg(feature = "std")))] impl ::std::error::Error for AddrParseError {} impl<'a> IpAddrRef<'a> { @@ -115,9 +119,8 @@ } /// Constructs an `IpAddr` from this `IpAddrRef` - /// - /// Requires the `alloc` feature. #[cfg(feature = "alloc")] + #[cfg_attr(docsrs, doc(cfg(feature = "alloc")))] pub fn to_owned(&self) -> IpAddr { match self { IpAddrRef::V4(ip_address, ip_address_octets) => IpAddr::V4( @@ -152,6 +155,7 @@ } #[cfg(feature = "std")] +#[cfg_attr(docsrs, doc(cfg(feature = "std")))] impl From for IpAddr { fn from(ip_address: std::net::IpAddr) -> IpAddr { match ip_address { diff -Nru temporalio-1.3.0/vendor/rustls-webpki/src/subject_name/mod.rs temporalio-1.3.0/vendor/rustls-webpki/src/subject_name/mod.rs --- temporalio-1.3.0/vendor/rustls-webpki/src/subject_name/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/src/subject_name/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -33,6 +33,4 @@ mod verify; #[cfg(feature = "alloc")] pub(super) use verify::list_cert_dns_names; -pub(super) use verify::{ - check_name_constraints, verify_cert_subject_name, SubjectCommonNameContents, -}; +pub(super) use verify::{check_name_constraints, verify_cert_subject_name}; diff -Nru temporalio-1.3.0/vendor/rustls-webpki/src/subject_name/verify.rs temporalio-1.3.0/vendor/rustls-webpki/src/subject_name/verify.rs --- temporalio-1.3.0/vendor/rustls-webpki/src/subject_name/verify.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/src/subject_name/verify.rs 2023-10-30 19:40:00.000000000 +0000 @@ -19,7 +19,9 @@ }; use crate::{ cert::{Cert, EndEntityOrCa}, - der, Error, + der, + verify_cert::Budget, + Error, }; #[cfg(feature = "alloc")] use { @@ -36,7 +38,6 @@ iterate_names( Some(cert.subject), cert.subject_alt_name, - SubjectCommonNameContents::Ignore, Err(Error::CertNotValidForName), &mut |name| { if let GeneralName::DnsName(presented_id) = name { @@ -70,7 +71,6 @@ // only against Subject Alternative Names. None, cert.inner().subject_alt_name, - SubjectCommonNameContents::Ignore, Err(Error::CertNotValidForName), &mut |name| { if let GeneralName::IpAddress(presented_id) = name { @@ -88,7 +88,7 @@ pub(crate) fn check_name_constraints( input: Option<&mut untrusted::Reader>, subordinate_certs: &Cert, - subject_common_name_contents: SubjectCommonNameContents, + budget: &mut Budget, ) -> Result<(), Error> { let input = match input { Some(input) => input, @@ -115,13 +115,13 @@ iterate_names( Some(child.subject), child.subject_alt_name, - subject_common_name_contents, Ok(()), &mut |name| { check_presented_id_conforms_to_constraints( name, permitted_subtrees, excluded_subtrees, + budget, ) }, )?; @@ -141,11 +141,13 @@ name: GeneralName, permitted_subtrees: Option, excluded_subtrees: Option, + budget: &mut Budget, ) -> NameIteration { match check_presented_id_conforms_to_constraints_in_subtree( name, Subtrees::PermittedSubtrees, permitted_subtrees, + budget, ) { stop @ NameIteration::Stop(..) => { return stop; @@ -157,6 +159,7 @@ name, Subtrees::ExcludedSubtrees, excluded_subtrees, + budget, ) } @@ -170,6 +173,7 @@ name: GeneralName, subtrees: Subtrees, constraints: Option, + budget: &mut Budget, ) -> NameIteration { let mut constraints = match constraints { Some(constraints) => untrusted::Reader::new(constraints), @@ -182,6 +186,10 @@ let mut has_permitted_subtrees_mismatch = false; while !constraints.at_end() { + if let Err(e) = budget.consume_name_constraint_comparison() { + return NameIteration::Stop(Err(e)); + } + // http://tools.ietf.org/html/rfc5280#section-4.2.1.10: "Within this // profile, the minimum and maximum fields are not used with any name // forms, thus, the minimum MUST be zero, and maximum MUST be absent." @@ -193,7 +201,7 @@ input: &mut untrusted::Reader<'b>, ) -> Result, Error> { let general_subtree = der::expect_tag_and_get_value(input, der::Tag::Sequence)?; - general_subtree.read_all(Error::BadDer, general_name) + general_subtree.read_all(Error::BadDer, GeneralName::from_der) } let base = match general_subtree(&mut constraints) { @@ -298,16 +306,9 @@ Stop(Result<(), Error>), } -#[derive(Clone, Copy)] -pub(crate) enum SubjectCommonNameContents { - DnsName, - Ignore, -} - fn iterate_names<'names>( subject: Option>, subject_alt_name: Option>, - subject_common_name_contents: SubjectCommonNameContents, result_if_never_stopped_early: Result<(), Error>, f: &mut impl FnMut(GeneralName<'names>) -> NameIteration, ) -> Result<(), Error> { @@ -320,7 +321,7 @@ // attempting to parse the first entry allows us to return a better // error code. while !subject_alt_name.at_end() { - let name = general_name(&mut subject_alt_name)?; + let name = GeneralName::from_der(&mut subject_alt_name)?; match f(name) { NameIteration::Stop(result) => { return result; @@ -337,20 +338,7 @@ }; } - if let (SubjectCommonNameContents::DnsName, Some(subject)) = - (subject_common_name_contents, subject) - { - match common_name(subject) { - Ok(Some(cn)) => match f(GeneralName::DnsName(cn)) { - NameIteration::Stop(result) => result, - NameIteration::KeepGoing => result_if_never_stopped_early, - }, - Ok(None) => result_if_never_stopped_early, - Err(err) => Err(err), - } - } else { - result_if_never_stopped_early - } + result_if_never_stopped_early } #[cfg(feature = "alloc")] @@ -363,7 +351,6 @@ iterate_names( Some(cert.subject), cert.subject_alt_name, - SubjectCommonNameContents::DnsName, Ok(()), &mut |name| { if let GeneralName::DnsName(presented_id) = name { @@ -403,53 +390,36 @@ Unsupported(u8), } -fn general_name<'a>(input: &mut untrusted::Reader<'a>) -> Result, Error> { - use ring::io::der::{CONSTRUCTED, CONTEXT_SPECIFIC}; - #[allow(clippy::identity_op)] - const OTHER_NAME_TAG: u8 = CONTEXT_SPECIFIC | CONSTRUCTED | 0; - const RFC822_NAME_TAG: u8 = CONTEXT_SPECIFIC | 1; - const DNS_NAME_TAG: u8 = CONTEXT_SPECIFIC | 2; - const X400_ADDRESS_TAG: u8 = CONTEXT_SPECIFIC | CONSTRUCTED | 3; - const DIRECTORY_NAME_TAG: u8 = CONTEXT_SPECIFIC | CONSTRUCTED | 4; - const EDI_PARTY_NAME_TAG: u8 = CONTEXT_SPECIFIC | CONSTRUCTED | 5; - const UNIFORM_RESOURCE_IDENTIFIER_TAG: u8 = CONTEXT_SPECIFIC | 6; - const IP_ADDRESS_TAG: u8 = CONTEXT_SPECIFIC | 7; - const REGISTERED_ID_TAG: u8 = CONTEXT_SPECIFIC | 8; - - let (tag, value) = der::read_tag_and_get_value(input)?; - let name = match tag { - DNS_NAME_TAG => GeneralName::DnsName(value), - DIRECTORY_NAME_TAG => GeneralName::DirectoryName(value), - IP_ADDRESS_TAG => GeneralName::IpAddress(value), - - OTHER_NAME_TAG - | RFC822_NAME_TAG - | X400_ADDRESS_TAG - | EDI_PARTY_NAME_TAG - | UNIFORM_RESOURCE_IDENTIFIER_TAG - | REGISTERED_ID_TAG => GeneralName::Unsupported(tag & !(CONTEXT_SPECIFIC | CONSTRUCTED)), - - _ => return Err(Error::BadDer), - }; - Ok(name) -} - -static COMMON_NAME: untrusted::Input = untrusted::Input::from(&[85, 4, 3]); - -fn common_name(input: untrusted::Input) -> Result, Error> { - let inner = &mut untrusted::Reader::new(input); - der::nested(inner, der::Tag::Set, Error::BadDer, |tagged| { - der::nested(tagged, der::Tag::Sequence, Error::BadDer, |tagged| { - while !tagged.at_end() { - let name_oid = der::expect_tag_and_get_value(tagged, der::Tag::OID)?; - if name_oid == COMMON_NAME { - return der::expect_tag_and_get_value(tagged, der::Tag::UTF8String).map(Some); - } else { - // discard unused name value - der::read_tag_and_get_value(tagged)?; - } +impl<'a> GeneralName<'a> { + fn from_der(input: &mut untrusted::Reader<'a>) -> Result { + use ring::io::der::{CONSTRUCTED, CONTEXT_SPECIFIC}; + #[allow(clippy::identity_op)] + const OTHER_NAME_TAG: u8 = CONTEXT_SPECIFIC | CONSTRUCTED | 0; + const RFC822_NAME_TAG: u8 = CONTEXT_SPECIFIC | 1; + const DNS_NAME_TAG: u8 = CONTEXT_SPECIFIC | 2; + const X400_ADDRESS_TAG: u8 = CONTEXT_SPECIFIC | CONSTRUCTED | 3; + const DIRECTORY_NAME_TAG: u8 = CONTEXT_SPECIFIC | CONSTRUCTED | 4; + const EDI_PARTY_NAME_TAG: u8 = CONTEXT_SPECIFIC | CONSTRUCTED | 5; + const UNIFORM_RESOURCE_IDENTIFIER_TAG: u8 = CONTEXT_SPECIFIC | 6; + const IP_ADDRESS_TAG: u8 = CONTEXT_SPECIFIC | 7; + const REGISTERED_ID_TAG: u8 = CONTEXT_SPECIFIC | 8; + + let (tag, value) = der::read_tag_and_get_value(input)?; + Ok(match tag { + DNS_NAME_TAG => GeneralName::DnsName(value), + DIRECTORY_NAME_TAG => GeneralName::DirectoryName(value), + IP_ADDRESS_TAG => GeneralName::IpAddress(value), + + OTHER_NAME_TAG + | RFC822_NAME_TAG + | X400_ADDRESS_TAG + | EDI_PARTY_NAME_TAG + | UNIFORM_RESOURCE_IDENTIFIER_TAG + | REGISTERED_ID_TAG => { + GeneralName::Unsupported(tag & !(CONTEXT_SPECIFIC | CONSTRUCTED)) } - Ok(None) + + _ => return Err(Error::BadDer), }) - }) + } } diff -Nru temporalio-1.3.0/vendor/rustls-webpki/src/time.rs temporalio-1.3.0/vendor/rustls-webpki/src/time.rs --- temporalio-1.3.0/vendor/rustls-webpki/src/time.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/src/time.rs 2023-10-30 19:40:00.000000000 +0000 @@ -36,6 +36,7 @@ } #[cfg(feature = "std")] +#[cfg_attr(docsrs, doc(cfg(feature = "std")))] impl TryFrom for Time { type Error = std::time::SystemTimeError; diff -Nru temporalio-1.3.0/vendor/rustls-webpki/src/trust_anchor.rs temporalio-1.3.0/vendor/rustls-webpki/src/trust_anchor.rs --- temporalio-1.3.0/vendor/rustls-webpki/src/trust_anchor.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/src/trust_anchor.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,5 @@ -use crate::cert::{lenient_certificate_serial_number, Cert}; -use crate::{ - cert::{parse_cert, EndEntityOrCa}, - der, Error, -}; +use crate::cert::{lenient_certificate_serial_number, Cert, EndEntityOrCa}; +use crate::{der, Error}; /// A trust anchor (a.k.a. root CA). /// @@ -27,10 +24,24 @@ } /// Trust anchors which may be used for authenticating servers. +#[deprecated( + since = "0.101.2", + note = "The per-usage trust anchor representations and verification functions are deprecated in \ + favor of the general-purpose `TrustAnchor` type and `EndEntity::verify_for_usage` function. \ + The new `verify_for_usage` function expresses trust anchor and end entity purpose with the \ + key usage argument." +)] #[derive(Debug)] pub struct TlsServerTrustAnchors<'a>(pub &'a [TrustAnchor<'a>]); /// Trust anchors which may be used for authenticating clients. +#[deprecated( + since = "0.101.2", + note = "The per-usage trust anchor representations and verification functions are deprecated in \ + favor of the general-purpose `TrustAnchor` type and `EndEntity::verify_for_usage` function. \ + The new `verify_for_usage` function expresses trust anchor and end entity purpose with the \ + key usage argument." +)] #[derive(Debug)] pub struct TlsClientTrustAnchors<'a>(pub &'a [TrustAnchor<'a>]); @@ -51,12 +62,45 @@ // certificate using a special parser for v1 certificates. Notably, that // parser doesn't allow extensions, so there's no need to worry about // embedded name constraints in a v1 certificate. - match parse_cert(cert_der, EndEntityOrCa::EndEntity) { + match Cert::from_der(cert_der, EndEntityOrCa::EndEntity) { Ok(cert) => Ok(Self::from(cert)), - Err(Error::UnsupportedCertVersion) => parse_cert_v1(cert_der).or(Err(Error::BadDer)), + Err(Error::UnsupportedCertVersion) => { + Self::from_v1_der(cert_der).or(Err(Error::BadDer)) + } Err(err) => Err(err), } } + + /// Parses a v1 certificate directly into a TrustAnchor. + fn from_v1_der(cert_der: untrusted::Input<'a>) -> Result { + // X.509 Certificate: https://tools.ietf.org/html/rfc5280#section-4.1. + cert_der.read_all(Error::BadDer, |cert_der| { + der::nested(cert_der, der::Tag::Sequence, Error::BadDer, |cert_der| { + let anchor = der::nested(cert_der, der::Tag::Sequence, Error::BadDer, |tbs| { + // The version number field does not appear in v1 certificates. + lenient_certificate_serial_number(tbs)?; + + skip(tbs, der::Tag::Sequence)?; // signature. + skip(tbs, der::Tag::Sequence)?; // issuer. + skip(tbs, der::Tag::Sequence)?; // validity. + let subject = der::expect_tag_and_get_value(tbs, der::Tag::Sequence)?; + let spki = der::expect_tag_and_get_value(tbs, der::Tag::Sequence)?; + + Ok(TrustAnchor { + subject: subject.as_slice_less_safe(), + spki: spki.as_slice_less_safe(), + name_constraints: None, + }) + }); + + // read and discard signatureAlgorithm + signature + skip(cert_der, der::Tag::Sequence)?; + skip(cert_der, der::Tag::BitString)?; + + anchor + }) + }) + } } impl<'a> From> for TrustAnchor<'a> { @@ -69,37 +113,6 @@ } } -/// Parses a v1 certificate directly into a TrustAnchor. -fn parse_cert_v1(cert_der: untrusted::Input) -> Result { - // X.509 Certificate: https://tools.ietf.org/html/rfc5280#section-4.1. - cert_der.read_all(Error::BadDer, |cert_der| { - der::nested(cert_der, der::Tag::Sequence, Error::BadDer, |cert_der| { - let anchor = der::nested(cert_der, der::Tag::Sequence, Error::BadDer, |tbs| { - // The version number field does not appear in v1 certificates. - lenient_certificate_serial_number(tbs)?; - - skip(tbs, der::Tag::Sequence)?; // signature. - skip(tbs, der::Tag::Sequence)?; // issuer. - skip(tbs, der::Tag::Sequence)?; // validity. - let subject = der::expect_tag_and_get_value(tbs, der::Tag::Sequence)?; - let spki = der::expect_tag_and_get_value(tbs, der::Tag::Sequence)?; - - Ok(TrustAnchor { - subject: subject.as_slice_less_safe(), - spki: spki.as_slice_less_safe(), - name_constraints: None, - }) - }); - - // read and discard signatureAlgorithm + signature - skip(cert_der, der::Tag::Sequence)?; - skip(cert_der, der::Tag::BitString)?; - - anchor - }) - }) -} - fn skip(input: &mut untrusted::Reader, tag: der::Tag) -> Result<(), Error> { der::expect_tag_and_get_value(input, tag).map(|_| ()) } diff -Nru temporalio-1.3.0/vendor/rustls-webpki/src/verify_cert.rs temporalio-1.3.0/vendor/rustls-webpki/src/verify_cert.rs --- temporalio-1.3.0/vendor/rustls-webpki/src/verify_cert.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/src/verify_cert.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,14 +12,17 @@ // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +use core::default::Default; +use core::ops::ControlFlow; + use crate::{ - cert::{self, Cert, EndEntityOrCa}, - der, signed_data, subject_name, time, CertRevocationList, Error, SignatureAlgorithm, - TrustAnchor, + cert::{Cert, EndEntityOrCa}, + der, public_values_eq, signed_data, subject_name, time, CertRevocationList, Error, + SignatureAlgorithm, TrustAnchor, }; pub(crate) struct ChainOptions<'a> { - pub(crate) required_eku_if_present: KeyPurposeId, + pub(crate) eku: KeyUsage, pub(crate) supported_sig_algs: &'a [&'a SignatureAlgorithm], pub(crate) trust_anchors: &'a [TrustAnchor<'a>], pub(crate) intermediate_certs: &'a [&'a [u8]], @@ -27,7 +30,10 @@ } pub(crate) fn build_chain(opts: &ChainOptions, cert: &Cert, time: time::Time) -> Result<(), Error> { - build_chain_inner(opts, cert, time, 0) + build_chain_inner(opts, cert, time, 0, &mut Budget::default()).map_err(|e| match e { + ControlFlow::Break(err) => err, + ControlFlow::Continue(err) => err, + }) } fn build_chain_inner( @@ -35,16 +41,11 @@ cert: &Cert, time: time::Time, sub_ca_count: usize, -) -> Result<(), Error> { + budget: &mut Budget, +) -> Result<(), ControlFlow> { let used_as_ca = used_as_ca(&cert.ee_or_ca); - check_issuer_independent_properties( - cert, - time, - used_as_ca, - sub_ca_count, - opts.required_eku_if_present, - )?; + check_issuer_independent_properties(cert, time, used_as_ca, sub_ca_count, opts.eku.inner)?; // TODO: HPKP checks. @@ -53,8 +54,7 @@ const MAX_SUB_CA_COUNT: usize = 6; if sub_ca_count >= MAX_SUB_CA_COUNT { - // TODO(XXX): Candidate for a more specific error - Error::PathTooDeep? - return Err(Error::UnknownIssuer); + return Err(Error::MaximumPathDepthExceeded.into()); } } UsedAsCa::No => { @@ -62,34 +62,26 @@ } } - // for the purpose of name constraints checking, only end-entity server certificates - // could plausibly have a DNS name as a subject commonName that could contribute to - // path validity - let subject_common_name_contents = - if opts.required_eku_if_present == EKU_SERVER_AUTH && used_as_ca == UsedAsCa::No { - subject_name::SubjectCommonNameContents::DnsName - } else { - subject_name::SubjectCommonNameContents::Ignore - }; - let result = loop_while_non_fatal_error( Error::UnknownIssuer, opts.trust_anchors, |trust_anchor: &TrustAnchor| { let trust_anchor_subject = untrusted::Input::from(trust_anchor.subject); - if cert.issuer != trust_anchor_subject { - return Err(Error::UnknownIssuer); + if !public_values_eq(cert.issuer, trust_anchor_subject) { + return Err(Error::UnknownIssuer.into()); } - let name_constraints = trust_anchor.name_constraints.map(untrusted::Input::from); - - untrusted::read_all_optional(name_constraints, Error::BadDer, |value| { - subject_name::check_name_constraints(value, cert, subject_common_name_contents) - })?; - // TODO: check_distrust(trust_anchor_subject, trust_anchor_spki)?; - check_signatures(opts.supported_sig_algs, cert, trust_anchor, opts.crls)?; + check_signed_chain( + opts.supported_sig_algs, + cert, + trust_anchor, + opts.crls, + budget, + )?; + + check_signed_chain_name_constraints(cert, trust_anchor, budget)?; Ok(()) }, @@ -97,24 +89,29 @@ let err = match result { Ok(()) => return Ok(()), - Err(err) => err, + // Fatal errors should halt further path building. + res @ Err(ControlFlow::Break(_)) => return res, + // Non-fatal errors should be carried forward as the default_error for subsequent + // loop_while_non_fatal_error processing and only returned once all other path-building + // options have been exhausted. + Err(ControlFlow::Continue(err)) => err, }; loop_while_non_fatal_error(err, opts.intermediate_certs, |cert_der| { let potential_issuer = - cert::parse_cert(untrusted::Input::from(cert_der), EndEntityOrCa::Ca(cert))?; + Cert::from_der(untrusted::Input::from(cert_der), EndEntityOrCa::Ca(cert))?; - if potential_issuer.subject != cert.issuer { - return Err(Error::UnknownIssuer); + if !public_values_eq(potential_issuer.subject, cert.issuer) { + return Err(Error::UnknownIssuer.into()); } // Prevent loops; see RFC 4158 section 5.2. let mut prev = cert; loop { - if potential_issuer.spki.value() == prev.spki.value() - && potential_issuer.subject == prev.subject + if public_values_eq(potential_issuer.spki.value(), prev.spki.value()) + && public_values_eq(potential_issuer.subject, prev.subject) { - return Err(Error::UnknownIssuer); + return Err(Error::UnknownIssuer.into()); } match &prev.ee_or_ca { EndEntityOrCa::EndEntity => { @@ -126,31 +123,29 @@ } } - untrusted::read_all_optional(potential_issuer.name_constraints, Error::BadDer, |value| { - subject_name::check_name_constraints(value, cert, subject_common_name_contents) - })?; - let next_sub_ca_count = match used_as_ca { UsedAsCa::No => sub_ca_count, UsedAsCa::Yes => sub_ca_count + 1, }; - build_chain_inner(opts, &potential_issuer, time, next_sub_ca_count) + budget.consume_build_chain_call()?; + build_chain_inner(opts, &potential_issuer, time, next_sub_ca_count, budget) }) } -fn check_signatures( +fn check_signed_chain( supported_sig_algs: &[&SignatureAlgorithm], cert_chain: &Cert, trust_anchor: &TrustAnchor, crls: &[&dyn CertRevocationList], -) -> Result<(), Error> { + budget: &mut Budget, +) -> Result<(), ControlFlow> { let mut spki_value = untrusted::Input::from(trust_anchor.spki); let mut issuer_subject = untrusted::Input::from(trust_anchor.subject); let mut issuer_key_usage = None; // TODO(XXX): Consider whether to track TrustAnchor KU. let mut cert = cert_chain; loop { - signed_data::verify_signed_data(supported_sig_algs, spki_value, &cert.signed_data)?; + signed_data::verify_signed_data(supported_sig_algs, spki_value, &cert.signed_data, budget)?; if !crls.is_empty() { check_crls( @@ -160,6 +155,7 @@ spki_value, issuer_key_usage, crls, + budget, )?; } @@ -179,6 +175,91 @@ Ok(()) } +fn check_signed_chain_name_constraints( + cert_chain: &Cert, + trust_anchor: &TrustAnchor, + budget: &mut Budget, +) -> Result<(), ControlFlow> { + let mut cert = cert_chain; + let mut name_constraints = trust_anchor + .name_constraints + .as_ref() + .map(|der| untrusted::Input::from(der)); + + loop { + untrusted::read_all_optional(name_constraints, Error::BadDer, |value| { + subject_name::check_name_constraints(value, cert, budget) + })?; + + match &cert.ee_or_ca { + EndEntityOrCa::Ca(child_cert) => { + name_constraints = cert.name_constraints; + cert = child_cert; + } + EndEntityOrCa::EndEntity => { + break; + } + } + } + + Ok(()) +} + +pub(crate) struct Budget { + signatures: usize, + build_chain_calls: usize, + name_constraint_comparisons: usize, +} + +impl Budget { + #[inline] + pub(crate) fn consume_signature(&mut self) -> Result<(), Error> { + self.signatures = self + .signatures + .checked_sub(1) + .ok_or(Error::MaximumSignatureChecksExceeded)?; + Ok(()) + } + + #[inline] + fn consume_build_chain_call(&mut self) -> Result<(), Error> { + self.build_chain_calls = self + .build_chain_calls + .checked_sub(1) + .ok_or(Error::MaximumPathBuildCallsExceeded)?; + Ok(()) + } + + #[inline] + pub(crate) fn consume_name_constraint_comparison(&mut self) -> Result<(), Error> { + self.name_constraint_comparisons = self + .name_constraint_comparisons + .checked_sub(1) + .ok_or(Error::MaximumNameConstraintComparisonsExceeded)?; + Ok(()) + } +} + +impl Default for Budget { + fn default() -> Self { + Self { + // This limit is taken from the remediation for golang CVE-2018-16875. However, + // note that golang subsequently implemented AKID matching due to this limit + // being hit in real applications (see ). + // So this may actually be too aggressive. + signatures: 100, + + // This limit is taken from NSS libmozpkix, see: + // + build_chain_calls: 200_000, + + // This limit is taken from golang crypto/x509's default, see: + // + name_constraint_comparisons: 250_000, + } + } +} + // Zero-sized marker type representing positive assertion that revocation status was checked // for a certificate and the result was that the certificate is not revoked. struct CertNotRevoked(()); @@ -197,8 +278,9 @@ issuer_spki: untrusted::Input, issuer_ku: Option, crls: &[&dyn CertRevocationList], + budget: &mut Budget, ) -> Result, Error> { - assert_eq!(cert.issuer, issuer_subject); + assert!(public_values_eq(cert.issuer, issuer_subject)); let crl = match crls .iter() @@ -212,11 +294,15 @@ // TODO(XXX): consider whether we can refactor so this happens once up-front, instead // of per-lookup. // https://github.com/rustls/webpki/issues/81 + // Note: The `verify_signature` method is part of a public trait in the exported API. + // We can't add a budget argument to that fn in a semver compatible way and so must + // consume signature budget here before calling verify_signature. + budget.consume_signature()?; crl.verify_signature(supported_sig_algs, issuer_spki.as_slice_less_safe()) .map_err(crl_signature_err)?; // Verify that if the issuer has a KeyUsage bitstring it asserts cRLSign. - check_key_usage(issuer_ku, KeyUsageMode::CrlSign)?; + KeyUsageMode::CrlSign.check(issuer_ku)?; // Try to find the cert serial in the verified CRL contents. let cert_serial = cert.serial.as_slice_less_safe(); @@ -245,7 +331,7 @@ time: time::Time, used_as_ca: UsedAsCa, sub_ca_count: usize, - required_eku_if_present: KeyPurposeId, + eku: ExtendedKeyUsage, ) -> Result<(), Error> { // TODO: check_distrust(trust_anchor_subject, trust_anchor_spki)?; // TODO: Check signature algorithm like mozilla::pkix. @@ -263,9 +349,7 @@ untrusted::read_all_optional(cert.basic_constraints, Error::BadDer, |value| { check_basic_constraints(value, used_as_ca, sub_ca_count) })?; - untrusted::read_all_optional(cert.eku, Error::BadDer, |value| { - check_eku(value, required_eku_if_present) - })?; + untrusted::read_all_optional(cert.eku, Error::BadDer, |value| eku.check(value))?; Ok(()) } @@ -341,72 +425,131 @@ } } -#[derive(Clone, Copy, PartialEq, Eq)] -pub(crate) struct KeyPurposeId { - oid_value: untrusted::Input<'static>, +/// The expected key usage of a certificate. +/// +/// This type represents the expected key usage of an end entity certificate. Although for most +/// kinds of certificates the extended key usage extension is optional (and so certificates +/// not carrying a particular value in the EKU extension are acceptable). If the extension +/// is present, the certificate MUST only be used for one of the purposes indicated. +/// +/// +#[derive(Clone, Copy)] +pub struct KeyUsage { + inner: ExtendedKeyUsage, } -// id-pkix OBJECT IDENTIFIER ::= { 1 3 6 1 5 5 7 } -// id-kp OBJECT IDENTIFIER ::= { id-pkix 3 } +impl KeyUsage { + /// Construct a new [`KeyUsage`] as appropriate for server certificate authentication. + /// + /// As specified in , this does not require the certificate to specify the eKU extension. + pub const fn server_auth() -> Self { + Self { + inner: ExtendedKeyUsage::RequiredIfPresent(EKU_SERVER_AUTH), + } + } -// id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 } -#[allow(clippy::identity_op)] // TODO: Make this clearer -pub(crate) static EKU_SERVER_AUTH: KeyPurposeId = KeyPurposeId { - oid_value: untrusted::Input::from(&[(40 * 1) + 3, 6, 1, 5, 5, 7, 3, 1]), -}; + /// Construct a new [`KeyUsage`] as appropriate for client certificate authentication. + /// + /// As specified in <>, this does not require the certificate to specify the eKU extension. + pub const fn client_auth() -> Self { + Self { + inner: ExtendedKeyUsage::RequiredIfPresent(EKU_CLIENT_AUTH), + } + } -// id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 } -#[allow(clippy::identity_op)] // TODO: Make this clearer -pub(crate) static EKU_CLIENT_AUTH: KeyPurposeId = KeyPurposeId { - oid_value: untrusted::Input::from(&[(40 * 1) + 3, 6, 1, 5, 5, 7, 3, 2]), -}; + /// Construct a new [`KeyUsage`] requiring a certificate to support the specified OID. + pub const fn required(oid: &'static [u8]) -> Self { + Self { + inner: ExtendedKeyUsage::Required(KeyPurposeId::new(oid)), + } + } +} -// id-kp-OCSPSigning OBJECT IDENTIFIER ::= { id-kp 9 } -#[allow(clippy::identity_op)] // TODO: Make this clearer -pub(crate) static EKU_OCSP_SIGNING: KeyPurposeId = KeyPurposeId { - oid_value: untrusted::Input::from(&[(40 * 1) + 3, 6, 1, 5, 5, 7, 3, 9]), -}; +/// Extended Key Usage (EKU) of a certificate. +#[derive(Clone, Copy)] +enum ExtendedKeyUsage { + /// The certificate must contain the specified [`KeyPurposeId`] as EKU. + Required(KeyPurposeId), -// https://tools.ietf.org/html/rfc5280#section-4.2.1.12 -fn check_eku( - input: Option<&mut untrusted::Reader>, - required_eku_if_present: KeyPurposeId, -) -> Result<(), Error> { - match input { - Some(input) => { - loop { - let value = der::expect_tag_and_get_value(input, der::Tag::OID)?; - if value == required_eku_if_present.oid_value { - input.skip_to_end(); - break; - } - if input.at_end() { - return Err(Error::RequiredEkuNotFound); - } + /// If the certificate has EKUs, then the specified [`KeyPurposeId`] must be included. + RequiredIfPresent(KeyPurposeId), +} + +impl ExtendedKeyUsage { + // https://tools.ietf.org/html/rfc5280#section-4.2.1.12 + fn check(&self, input: Option<&mut untrusted::Reader>) -> Result<(), Error> { + let input = match (input, self) { + (Some(input), _) => input, + (None, Self::RequiredIfPresent(_)) => return Ok(()), + (None, Self::Required(_)) => return Err(Error::RequiredEkuNotFound), + }; + + loop { + let value = der::expect_tag_and_get_value(input, der::Tag::OID)?; + if self.key_purpose_id_equals(value) { + input.skip_to_end(); + break; } - Ok(()) - } - None => { - // http://tools.ietf.org/html/rfc6960#section-4.2.2.2: - // "OCSP signing delegation SHALL be designated by the inclusion of - // id-kp-OCSPSigning in an extended key usage certificate extension - // included in the OCSP response signer's certificate." - // - // A missing EKU extension generally means "any EKU", but it is - // important that id-kp-OCSPSigning is explicit so that a normal - // end-entity certificate isn't able to sign trusted OCSP responses - // for itself or for other certificates issued by its issuing CA. - if required_eku_if_present.oid_value == EKU_OCSP_SIGNING.oid_value { + + if input.at_end() { return Err(Error::RequiredEkuNotFound); } + } - Ok(()) + Ok(()) + } + + fn key_purpose_id_equals(&self, value: untrusted::Input<'_>) -> bool { + public_values_eq( + match self { + ExtendedKeyUsage::Required(eku) => *eku, + ExtendedKeyUsage::RequiredIfPresent(eku) => *eku, + } + .oid_value, + value, + ) + } +} + +/// An OID value indicating an Extended Key Usage (EKU) key purpose. +#[derive(Clone, Copy)] +struct KeyPurposeId { + oid_value: untrusted::Input<'static>, +} + +impl KeyPurposeId { + /// Construct a new [`KeyPurposeId`]. + /// + /// `oid` is the OBJECT IDENTIFIER in bytes. + const fn new(oid: &'static [u8]) -> Self { + Self { + oid_value: untrusted::Input::from(oid), } } } +impl PartialEq for KeyPurposeId { + fn eq(&self, other: &Self) -> bool { + public_values_eq(self.oid_value, other.oid_value) + } +} + +impl Eq for KeyPurposeId {} + +// id-pkix OBJECT IDENTIFIER ::= { 1 3 6 1 5 5 7 } +// id-kp OBJECT IDENTIFIER ::= { id-pkix 3 } + +// id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 } +#[allow(clippy::identity_op)] // TODO: Make this clearer +const EKU_SERVER_AUTH: KeyPurposeId = KeyPurposeId::new(&[(40 * 1) + 3, 6, 1, 5, 5, 7, 3, 1]); + +// id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 } +#[allow(clippy::identity_op)] // TODO: Make this clearer +const EKU_CLIENT_AUTH: KeyPurposeId = KeyPurposeId::new(&[(40 * 1) + 3, 6, 1, 5, 5, 7, 3, 2]); + // https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.3 #[repr(u8)] +#[derive(Clone, Copy)] enum KeyUsageMode { // DigitalSignature = 0, // ContentCommitment = 1, @@ -419,32 +562,31 @@ // DecipherOnly = 8, } -// https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.3 -fn check_key_usage( - input: Option, - required_ku_bit_if_present: KeyUsageMode, -) -> Result<(), Error> { - let bit_string = match input { - Some(input) => input, - // While RFC 5280 requires KeyUsage be present, historically the absence of a KeyUsage - // has been treated as "Any Usage". We follow that convention here and assume the absence - // of KeyUsage implies the required_ku_bit_if_present we're checking for. - None => return Ok(()), - }; +impl KeyUsageMode { + // https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.3 + fn check(self, input: Option) -> Result<(), Error> { + let bit_string = match input { + Some(input) => input, + // While RFC 5280 requires KeyUsage be present, historically the absence of a KeyUsage + // has been treated as "Any Usage". We follow that convention here and assume the absence + // of KeyUsage implies the required_ku_bit_if_present we're checking for. + None => return Ok(()), + }; - let flags = der::bit_string_flags(&mut untrusted::Reader::new(bit_string))?; - #[allow(clippy::as_conversions)] // u8 always fits in usize. - match flags.bit_set(required_ku_bit_if_present as usize) { - true => Ok(()), - false => Err(Error::IssuerNotCrlSigner), + let flags = der::bit_string_flags(&mut untrusted::Reader::new(bit_string))?; + #[allow(clippy::as_conversions)] // u8 always fits in usize. + match flags.bit_set(self as usize) { + true => Ok(()), + false => Err(Error::IssuerNotCrlSigner), + } } } fn loop_while_non_fatal_error( default_error: Error, values: V, - f: impl Fn(V::Item) -> Result<(), Error>, -) -> Result<(), Error> + mut f: impl FnMut(V::Item) -> Result<(), ControlFlow>, +) -> Result<(), ControlFlow> where V: IntoIterator, { @@ -452,8 +594,244 @@ for v in values { match f(v) { Ok(()) => return Ok(()), - Err(new_error) => error = error.most_specific(new_error), - } + // Fatal errors should halt further looping. + res @ Err(ControlFlow::Break(_)) => return res, + // Non-fatal errors should be ranked by specificity and only returned + // once all other path-building options have been exhausted. + Err(ControlFlow::Continue(new_error)) => error = error.most_specific(new_error), + } + } + Err(error.into()) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[cfg(feature = "alloc")] + use crate::test_utils::{make_end_entity, make_issuer}; + + #[test] + fn eku_key_purpose_id() { + assert!(ExtendedKeyUsage::RequiredIfPresent(EKU_SERVER_AUTH) + .key_purpose_id_equals(EKU_SERVER_AUTH.oid_value)) + } + + #[cfg(feature = "alloc")] + enum TrustAnchorIsActualIssuer { + Yes, + No, + } + + #[cfg(feature = "alloc")] + fn build_degenerate_chain( + intermediate_count: usize, + trust_anchor_is_actual_issuer: TrustAnchorIsActualIssuer, + budget: Option, + ) -> ControlFlow { + let ca_cert = make_issuer("Bogus Subject", None); + let ca_cert_der = ca_cert.serialize_der().unwrap(); + + let mut intermediates = Vec::with_capacity(intermediate_count); + let mut issuer = ca_cert; + for _ in 0..intermediate_count { + let intermediate = make_issuer("Bogus Subject", None); + let intermediate_der = intermediate.serialize_der_with_signer(&issuer).unwrap(); + intermediates.push(intermediate_der); + issuer = intermediate; + } + + if let TrustAnchorIsActualIssuer::No = trust_anchor_is_actual_issuer { + intermediates.pop(); + } + + verify_chain( + &ca_cert_der, + &intermediates, + &make_end_entity(&issuer), + budget, + ) + .unwrap_err() + } + + #[test] + #[cfg(feature = "alloc")] + fn test_too_many_signatures() { + assert!(matches!( + build_degenerate_chain(5, TrustAnchorIsActualIssuer::Yes, None), + ControlFlow::Break(Error::MaximumSignatureChecksExceeded) + )); + } + + #[test] + #[cfg(feature = "alloc")] + fn test_too_many_path_calls() { + assert!(matches!( + build_degenerate_chain( + 10, + TrustAnchorIsActualIssuer::No, + Some(Budget { + // Crafting a chain that will expend the build chain calls budget without + // first expending the signature checks budget is tricky, so we artificially + // inflate the signature limit to make this test easier to write. + signatures: usize::MAX, + ..Budget::default() + }) + ), + ControlFlow::Break(Error::MaximumPathBuildCallsExceeded) + )); + } + + #[cfg(feature = "alloc")] + fn build_linear_chain(chain_length: usize) -> Result<(), ControlFlow> { + let ca_cert = make_issuer(format!("Bogus Subject {chain_length}"), None); + let ca_cert_der = ca_cert.serialize_der().unwrap(); + + let mut intermediates = Vec::with_capacity(chain_length); + let mut issuer = ca_cert; + for i in 0..chain_length { + let intermediate = make_issuer(format!("Bogus Subject {i}"), None); + let intermediate_der = intermediate.serialize_der_with_signer(&issuer).unwrap(); + intermediates.push(intermediate_der); + issuer = intermediate; + } + + verify_chain( + &ca_cert_der, + &intermediates, + &make_end_entity(&issuer), + None, + ) + } + + #[test] + #[cfg(feature = "alloc")] + fn longest_allowed_path() { + assert!(build_linear_chain(1).is_ok()); + assert!(build_linear_chain(2).is_ok()); + assert!(build_linear_chain(3).is_ok()); + assert!(build_linear_chain(4).is_ok()); + assert!(build_linear_chain(5).is_ok()); + assert!(build_linear_chain(6).is_ok()); + } + + #[test] + #[cfg(feature = "alloc")] + fn path_too_long() { + assert!(matches!( + build_linear_chain(7), + Err(ControlFlow::Continue(Error::MaximumPathDepthExceeded)) + )); + } + + #[test] + #[cfg(feature = "alloc")] + fn name_constraint_budget() { + // Issue a trust anchor that imposes name constraints. The constraint should match + // the end entity certificate SAN. + let ca_cert = make_issuer( + "Constrained Root", + Some(rcgen::NameConstraints { + permitted_subtrees: vec![rcgen::GeneralSubtree::DnsName(".com".into())], + excluded_subtrees: vec![], + }), + ); + let ca_cert_der = ca_cert.serialize_der().unwrap(); + + // Create a series of intermediate issuers. We'll only use one in the actual built path, + // helping demonstrate that the name constraint budget is not expended checking certificates + // that are not part of the path we compute. + const NUM_INTERMEDIATES: usize = 5; + let mut intermediates = Vec::with_capacity(NUM_INTERMEDIATES); + for i in 0..NUM_INTERMEDIATES { + intermediates.push(make_issuer(format!("Intermediate {i}"), None)); + } + + // Each intermediate should be issued by the trust anchor. + let mut intermediates_der = Vec::with_capacity(NUM_INTERMEDIATES); + for intermediate in &intermediates { + intermediates_der.push(intermediate.serialize_der_with_signer(&ca_cert).unwrap()); + } + + // Create an end-entity cert that is issued by the last of the intermediates. + let ee_cert = make_end_entity(intermediates.last().unwrap()); + + // We use a custom budget to make it easier to write a test, otherwise it is tricky to + // stuff enough names/constraints into the potential chains while staying within the path + // depth limit and the build chain call limit. + let passing_budget = Budget { + // One comparison against the intermediate's distinguished name. + // One comparison against the EE's distinguished name. + // One comparison against the EE's SAN. + // = 3 total comparisons. + name_constraint_comparisons: 3, + ..Budget::default() + }; + + // Validation should succeed with the name constraint comparison budget allocated above. + // This shows that we're not consuming budget on unused intermediates: we didn't budget + // enough comparisons for that to pass the overall chain building. + assert!(verify_chain( + &ca_cert_der, + &intermediates_der, + &ee_cert, + Some(passing_budget), + ) + .is_ok()); + + let failing_budget = Budget { + // See passing_budget: 2 comparisons is not sufficient. + name_constraint_comparisons: 2, + ..Budget::default() + }; + // Validation should fail when the budget is smaller than the number of comparisons performed + // on the validated path. This demonstrates we properly fail path building when too many + // name constraint comparisons occur. + let result = verify_chain( + &ca_cert_der, + &intermediates_der, + &ee_cert, + Some(failing_budget), + ); + + assert!(matches!( + result, + Err(ControlFlow::Break( + Error::MaximumNameConstraintComparisonsExceeded + )) + )); + } + + #[cfg(feature = "alloc")] + fn verify_chain( + trust_anchor_der: &[u8], + intermediates_der: &[Vec], + ee_cert_der: &[u8], + budget: Option, + ) -> Result<(), ControlFlow> { + use crate::ECDSA_P256_SHA256; + use crate::{EndEntityCert, Time}; + + let anchors = &[TrustAnchor::try_from_cert_der(trust_anchor_der).unwrap()]; + let time = Time::from_seconds_since_unix_epoch(0x1fed_f00d); + let cert = EndEntityCert::try_from(ee_cert_der).unwrap(); + let intermediates_der = intermediates_der + .iter() + .map(|x| x.as_ref()) + .collect::>(); + + build_chain_inner( + &ChainOptions { + eku: KeyUsage::server_auth(), + supported_sig_algs: &[&ECDSA_P256_SHA256], + trust_anchors: anchors, + intermediate_certs: &intermediates_der, + crls: &[], + }, + cert.inner(), + time, + 0, + &mut budget.unwrap_or_default(), + ) } - Err(error) } diff -Nru temporalio-1.3.0/vendor/rustls-webpki/tests/better_tls.rs temporalio-1.3.0/vendor/rustls-webpki/tests/better_tls.rs --- temporalio-1.3.0/vendor/rustls-webpki/tests/better_tls.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/tests/better_tls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,103 @@ +use base64::{engine::general_purpose, Engine as _}; +use serde::Deserialize; +use std::collections::HashMap; +use webpki::{KeyUsage, TrustAnchor}; + +#[test] +pub fn path_building() { + let raw_json = include_bytes!("../third-party/bettertls/pathbuilding.tests.json"); + let better_tls: BetterTls = serde_json::from_slice(raw_json).expect("invalid test JSON"); + println!("Testing BetterTLS revision {:?}", better_tls.revision); + + let root_der = &better_tls.root_der(); + let roots = &[TrustAnchor::try_from_cert_der(root_der).expect("invalid trust anchor")]; + + let path_building_suite = better_tls + .suites + .get("pathbuilding") + .unwrap_or_else(|| panic!("missing pathbuilding suite")); + + for testcase in &path_building_suite.test_cases { + println!("Testing path building test case {:?}", testcase.id); + + let certs_der = testcase.certs_der(); + let ee_der = &certs_der[0]; + let intermediates = &certs_der[1..] + .iter() + .map(|cert| cert.as_slice()) + .collect::>(); + + let ee_cert = + webpki::EndEntityCert::try_from(ee_der.as_slice()).expect("invalid end entity cert"); + + // Set the time to the time of test case generation. This ensures that the test case + // certificates won't expire. + let now = webpki::Time::from_seconds_since_unix_epoch(1_688_651_734); + + let result = ee_cert.verify_for_usage( + &[&webpki::ECDSA_P256_SHA256], // All of the BetterTLS testcases use P256 keys. + roots, + intermediates, + now, + KeyUsage::server_auth(), + &[], + ); + + match testcase.expected { + ExpectedResult::Accept => assert!(result.is_ok(), "expected success, got {:?}", result), + ExpectedResult::Reject => { + assert!(result.is_err(), "expected failure, got {:?}", result) + } + } + } +} + +#[derive(Deserialize, Debug)] +struct BetterTls { + #[serde(rename(deserialize = "betterTlsRevision"))] + revision: String, + #[serde(rename(deserialize = "trustRoot"))] + root: String, + suites: HashMap, +} + +impl BetterTls { + fn root_der(&self) -> Vec { + general_purpose::STANDARD + .decode(&self.root) + .expect("invalid trust anchor base64") + } +} + +#[derive(Deserialize, Debug)] +struct BetterTlsSuite { + #[serde(rename(deserialize = "testCases"))] + test_cases: Vec, +} + +#[derive(Deserialize, Debug)] +struct BetterTlsTest { + id: u32, + certificates: Vec, + expected: ExpectedResult, +} + +impl BetterTlsTest { + fn certs_der(&self) -> Vec> { + self.certificates + .iter() + .map(|cert| { + general_purpose::STANDARD + .decode(cert) + .expect("invalid cert base64") + }) + .collect() + } +} + +#[derive(Deserialize, Debug)] +#[serde(rename_all = "UPPERCASE")] +enum ExpectedResult { + Accept, + Reject, +} Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ee_not_revoked_ee_depth.crl.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ee_not_revoked_ee_depth.crl.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ee_not_revoked_wrong_ku_ee_depth.crl.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ee_not_revoked_wrong_ku_ee_depth.crl.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ee_revoked_badsig_ee_depth.crl.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ee_revoked_badsig_ee_depth.crl.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ee_revoked_chain_depth.crl.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ee_revoked_chain_depth.crl.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ee_revoked_crl_ku_ee_depth.crl.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ee_revoked_crl_ku_ee_depth.crl.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ee_revoked_no_ku_ee_depth.crl.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ee_revoked_no_ku_ee_depth.crl.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ee_revoked_wrong_ku_ee_depth.crl.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ee_revoked_wrong_ku_ee_depth.crl.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ee_with_top_bit_set_serial_revoked.crl.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ee_with_top_bit_set_serial_revoked.crl.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/int_not_revoked_chain_depth.crl.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/int_not_revoked_chain_depth.crl.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/int_revoked_badsig_chain_depth.crl.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/int_revoked_badsig_chain_depth.crl.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/int_revoked_crl_ku_chain_depth.crl.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/int_revoked_crl_ku_chain_depth.crl.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/int_revoked_no_ku_chain_depth.crl.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/int_revoked_no_ku_chain_depth.crl.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/int_revoked_wrong_ku_chain_depth.crl.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/int_revoked_wrong_ku_chain_depth.crl.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ku_chain.ee.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ku_chain.ee.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ku_chain.int.a.ca.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ku_chain.int.a.ca.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ku_chain.int.b.ca.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ku_chain.int.b.ca.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ku_chain.root.ca.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ku_chain.root.ca.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ku_chain.topbit.ee.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/ku_chain.topbit.ee.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_crl_ku_chain.ee.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_crl_ku_chain.ee.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_crl_ku_chain.int.a.ca.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_crl_ku_chain.int.a.ca.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_crl_ku_chain.int.b.ca.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_crl_ku_chain.int.b.ca.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_crl_ku_chain.root.ca.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_crl_ku_chain.root.ca.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_crl_ku_chain.topbit.ee.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_crl_ku_chain.topbit.ee.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_ku_chain.ee.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_ku_chain.ee.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_ku_chain.int.a.ca.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_ku_chain.int.a.ca.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_ku_chain.int.b.ca.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_ku_chain.int.b.ca.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_ku_chain.root.ca.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_ku_chain.root.ca.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_ku_chain.topbit.ee.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_ku_chain.topbit.ee.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_relevant_crl_chain_depth.crl.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_relevant_crl_chain_depth.crl.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_relevant_crl_ee_depth.crl.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation/no_relevant_crl_ee_depth.crl.der differ diff -Nru temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation.rs temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation.rs --- temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth_revocation.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -extern crate webpki; +use webpki::KeyUsage; fn check_cert( ee: &[u8], @@ -21,15 +21,15 @@ crls: &[&dyn webpki::CertRevocationList], ) -> Result<(), webpki::Error> { let anchors = &[webpki::TrustAnchor::try_from_cert_der(ca).unwrap()]; - let anchors = webpki::TlsClientTrustAnchors(anchors.as_slice()); let cert = webpki::EndEntityCert::try_from(ee).unwrap(); let time = webpki::Time::from_seconds_since_unix_epoch(0x1fed_f00d); - cert.verify_is_valid_tls_client_cert( + cert.verify_for_usage( &[&webpki::ECDSA_P256_SHA256], - &anchors, + anchors, intermediates, time, + KeyUsage::client_auth(), crls, ) } @@ -48,6 +48,19 @@ assert_eq!(check_cert(ee, intermediates, ca, crls), Ok(())); } +#[cfg(feature = "alloc")] +#[test] +fn no_crls_test_ee_depth_owned() { + let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); + let intermediates = &[ + include_bytes!("client_auth_revocation/no_ku_chain.int.a.ca.der").as_slice(), + include_bytes!("client_auth_revocation/no_ku_chain.int.b.ca.der").as_slice(), + ]; + let ca = include_bytes!("client_auth_revocation/no_ku_chain.root.ca.der"); + let crls = &[]; + assert_eq!(check_cert(ee, intermediates, ca, crls), Ok(())); +} + #[test] fn no_relevant_crl_ee_depth() { let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); @@ -63,6 +76,24 @@ assert_eq!(check_cert(ee, intermediates, ca, crls), Ok(())); } +#[cfg(feature = "alloc")] +#[test] +fn no_relevant_crl_ee_depth_owned() { + let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); + let intermediates = &[ + include_bytes!("client_auth_revocation/no_ku_chain.int.a.ca.der").as_slice(), + include_bytes!("client_auth_revocation/no_ku_chain.int.b.ca.der").as_slice(), + ]; + let ca = include_bytes!("client_auth_revocation/no_ku_chain.root.ca.der"); + let crls = &[&webpki::BorrowedCertRevocationList::from_der( + include_bytes!("client_auth_revocation/no_relevant_crl_ee_depth.crl.der").as_slice(), + ) + .unwrap() + .to_owned() + .unwrap() as &dyn webpki::CertRevocationList]; + assert_eq!(check_cert(ee, intermediates, ca, crls), Ok(())); +} + #[test] fn ee_not_revoked_ee_depth() { let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); @@ -78,6 +109,24 @@ assert_eq!(check_cert(ee, intermediates, ca, crls), Ok(())); } +#[cfg(feature = "alloc")] +#[test] +fn ee_not_revoked_ee_depth_owned() { + let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); + let intermediates = &[ + include_bytes!("client_auth_revocation/no_ku_chain.int.a.ca.der").as_slice(), + include_bytes!("client_auth_revocation/no_ku_chain.int.b.ca.der").as_slice(), + ]; + let ca = include_bytes!("client_auth_revocation/no_ku_chain.root.ca.der"); + let crls = &[&webpki::BorrowedCertRevocationList::from_der( + include_bytes!("client_auth_revocation/ee_not_revoked_ee_depth.crl.der").as_slice(), + ) + .unwrap() + .to_owned() + .unwrap() as &dyn webpki::CertRevocationList]; + assert_eq!(check_cert(ee, intermediates, ca, crls), Ok(())); +} + #[test] fn ee_revoked_badsig_ee_depth() { let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); @@ -96,6 +145,27 @@ ); } +#[cfg(feature = "alloc")] +#[test] +fn ee_revoked_badsig_ee_depth_owned() { + let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); + let intermediates = &[ + include_bytes!("client_auth_revocation/no_ku_chain.int.a.ca.der").as_slice(), + include_bytes!("client_auth_revocation/no_ku_chain.int.b.ca.der").as_slice(), + ]; + let ca = include_bytes!("client_auth_revocation/no_ku_chain.root.ca.der"); + let crls = &[&webpki::BorrowedCertRevocationList::from_der( + include_bytes!("client_auth_revocation/ee_revoked_badsig_ee_depth.crl.der").as_slice(), + ) + .unwrap() + .to_owned() + .unwrap() as &dyn webpki::CertRevocationList]; + assert_eq!( + check_cert(ee, intermediates, ca, crls), + Err(webpki::Error::InvalidCrlSignatureForPublicKey) + ); +} + #[test] fn ee_revoked_wrong_ku_ee_depth() { let ee = include_bytes!("client_auth_revocation/no_crl_ku_chain.ee.der"); @@ -114,6 +184,27 @@ ); } +#[cfg(feature = "alloc")] +#[test] +fn ee_revoked_wrong_ku_ee_depth_owned() { + let ee = include_bytes!("client_auth_revocation/no_crl_ku_chain.ee.der"); + let intermediates = &[ + include_bytes!("client_auth_revocation/no_crl_ku_chain.int.a.ca.der").as_slice(), + include_bytes!("client_auth_revocation/no_crl_ku_chain.int.b.ca.der").as_slice(), + ]; + let ca = include_bytes!("client_auth_revocation/no_crl_ku_chain.root.ca.der"); + let crls = &[&webpki::BorrowedCertRevocationList::from_der( + include_bytes!("client_auth_revocation/ee_revoked_wrong_ku_ee_depth.crl.der").as_slice(), + ) + .unwrap() + .to_owned() + .unwrap() as &dyn webpki::CertRevocationList]; + assert_eq!( + check_cert(ee, intermediates, ca, crls), + Err(webpki::Error::IssuerNotCrlSigner) + ); +} + #[test] fn ee_not_revoked_wrong_ku_ee_depth() { let ee = include_bytes!("client_auth_revocation/no_crl_ku_chain.ee.der"); @@ -133,6 +224,28 @@ ); } +#[cfg(feature = "alloc")] +#[test] +fn ee_not_revoked_wrong_ku_ee_depth_owned() { + let ee = include_bytes!("client_auth_revocation/no_crl_ku_chain.ee.der"); + let intermediates = &[ + include_bytes!("client_auth_revocation/no_crl_ku_chain.int.a.ca.der").as_slice(), + include_bytes!("client_auth_revocation/no_crl_ku_chain.int.b.ca.der").as_slice(), + ]; + let ca = include_bytes!("client_auth_revocation/no_crl_ku_chain.root.ca.der"); + let crls = &[&webpki::BorrowedCertRevocationList::from_der( + include_bytes!("client_auth_revocation/ee_not_revoked_wrong_ku_ee_depth.crl.der") + .as_slice(), + ) + .unwrap() + .to_owned() + .unwrap() as &dyn webpki::CertRevocationList]; + assert_eq!( + check_cert(ee, intermediates, ca, crls), + Err(webpki::Error::IssuerNotCrlSigner) + ); +} + #[test] fn ee_revoked_no_ku_ee_depth() { let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); @@ -151,6 +264,27 @@ ); } +#[cfg(feature = "alloc")] +#[test] +fn ee_revoked_no_ku_ee_depth_owned() { + let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); + let intermediates = &[ + include_bytes!("client_auth_revocation/no_ku_chain.int.a.ca.der").as_slice(), + include_bytes!("client_auth_revocation/no_ku_chain.int.b.ca.der").as_slice(), + ]; + let ca = include_bytes!("client_auth_revocation/no_ku_chain.root.ca.der"); + let crls = &[&webpki::BorrowedCertRevocationList::from_der( + include_bytes!("client_auth_revocation/ee_revoked_no_ku_ee_depth.crl.der").as_slice(), + ) + .unwrap() + .to_owned() + .unwrap() as &dyn webpki::CertRevocationList]; + assert_eq!( + check_cert(ee, intermediates, ca, crls), + Err(webpki::Error::CertRevoked) + ); +} + #[test] fn ee_revoked_crl_ku_ee_depth() { let ee = include_bytes!("client_auth_revocation/ku_chain.ee.der"); @@ -169,6 +303,27 @@ ); } +#[cfg(feature = "alloc")] +#[test] +fn ee_revoked_crl_ku_ee_depth_owned() { + let ee = include_bytes!("client_auth_revocation/ku_chain.ee.der"); + let intermediates = &[ + include_bytes!("client_auth_revocation/ku_chain.int.a.ca.der").as_slice(), + include_bytes!("client_auth_revocation/ku_chain.int.b.ca.der").as_slice(), + ]; + let ca = include_bytes!("client_auth_revocation/ku_chain.root.ca.der"); + let crls = &[&webpki::BorrowedCertRevocationList::from_der( + include_bytes!("client_auth_revocation/ee_revoked_crl_ku_ee_depth.crl.der").as_slice(), + ) + .unwrap() + .to_owned() + .unwrap() as &dyn webpki::CertRevocationList]; + assert_eq!( + check_cert(ee, intermediates, ca, crls), + Err(webpki::Error::CertRevoked) + ); +} + #[test] fn no_crls_test_chain_depth() { let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); @@ -196,6 +351,24 @@ assert_eq!(check_cert(ee, intermediates, ca, crls), Ok(())); } +#[cfg(feature = "alloc")] +#[test] +fn no_relevant_crl_chain_depth_owned() { + let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); + let intermediates = &[ + include_bytes!("client_auth_revocation/no_ku_chain.int.a.ca.der").as_slice(), + include_bytes!("client_auth_revocation/no_ku_chain.int.b.ca.der").as_slice(), + ]; + let ca = include_bytes!("client_auth_revocation/no_ku_chain.root.ca.der"); + let crls = &[&webpki::BorrowedCertRevocationList::from_der( + include_bytes!("client_auth_revocation/no_relevant_crl_chain_depth.crl.der").as_slice(), + ) + .unwrap() + .to_owned() + .unwrap() as &dyn webpki::CertRevocationList]; + assert_eq!(check_cert(ee, intermediates, ca, crls), Ok(())); +} + #[test] fn int_not_revoked_chain_depth() { let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); @@ -211,6 +384,24 @@ assert_eq!(check_cert(ee, intermediates, ca, crls), Ok(())); } +#[cfg(feature = "alloc")] +#[test] +fn int_not_revoked_chain_depth_owned() { + let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); + let intermediates = &[ + include_bytes!("client_auth_revocation/no_ku_chain.int.a.ca.der").as_slice(), + include_bytes!("client_auth_revocation/no_ku_chain.int.b.ca.der").as_slice(), + ]; + let ca = include_bytes!("client_auth_revocation/no_ku_chain.root.ca.der"); + let crls = &[&webpki::BorrowedCertRevocationList::from_der( + include_bytes!("client_auth_revocation/int_not_revoked_chain_depth.crl.der").as_slice(), + ) + .unwrap() + .to_owned() + .unwrap() as &dyn webpki::CertRevocationList]; + assert_eq!(check_cert(ee, intermediates, ca, crls), Ok(())); +} + #[test] fn int_revoked_badsig_chain_depth() { let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); @@ -229,6 +420,27 @@ ); } +#[cfg(feature = "alloc")] +#[test] +fn int_revoked_badsig_chain_depth_owned() { + let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); + let intermediates = &[ + include_bytes!("client_auth_revocation/no_ku_chain.int.a.ca.der").as_slice(), + include_bytes!("client_auth_revocation/no_ku_chain.int.b.ca.der").as_slice(), + ]; + let ca = include_bytes!("client_auth_revocation/no_ku_chain.root.ca.der"); + let crls = &[&webpki::BorrowedCertRevocationList::from_der( + include_bytes!("client_auth_revocation/int_revoked_badsig_chain_depth.crl.der").as_slice(), + ) + .unwrap() + .to_owned() + .unwrap() as &dyn webpki::CertRevocationList]; + assert_eq!( + check_cert(ee, intermediates, ca, crls), + Err(webpki::Error::InvalidCrlSignatureForPublicKey) + ); +} + #[test] fn int_revoked_wrong_ku_chain_depth() { let ee = include_bytes!("client_auth_revocation/no_crl_ku_chain.ee.der"); @@ -248,6 +460,28 @@ ); } +#[cfg(feature = "alloc")] +#[test] +fn int_revoked_wrong_ku_chain_depth_owned() { + let ee = include_bytes!("client_auth_revocation/no_crl_ku_chain.ee.der"); + let intermediates = &[ + include_bytes!("client_auth_revocation/no_crl_ku_chain.int.a.ca.der").as_slice(), + include_bytes!("client_auth_revocation/no_crl_ku_chain.int.b.ca.der").as_slice(), + ]; + let ca = include_bytes!("client_auth_revocation/no_crl_ku_chain.root.ca.der"); + let crls = &[&webpki::BorrowedCertRevocationList::from_der( + include_bytes!("client_auth_revocation/int_revoked_wrong_ku_chain_depth.crl.der") + .as_slice(), + ) + .unwrap() + .to_owned() + .unwrap() as &dyn webpki::CertRevocationList]; + assert_eq!( + check_cert(ee, intermediates, ca, crls), + Err(webpki::Error::IssuerNotCrlSigner) + ); +} + #[test] fn ee_revoked_chain_depth() { let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); @@ -266,6 +500,27 @@ ); } +#[cfg(feature = "alloc")] +#[test] +fn ee_revoked_chain_depth_owned() { + let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); + let intermediates = &[ + include_bytes!("client_auth_revocation/no_ku_chain.int.a.ca.der").as_slice(), + include_bytes!("client_auth_revocation/no_ku_chain.int.b.ca.der").as_slice(), + ]; + let ca = include_bytes!("client_auth_revocation/no_ku_chain.root.ca.der"); + let crls = &[&webpki::BorrowedCertRevocationList::from_der( + include_bytes!("client_auth_revocation/ee_revoked_chain_depth.crl.der").as_slice(), + ) + .unwrap() + .to_owned() + .unwrap() as &dyn webpki::CertRevocationList]; + assert_eq!( + check_cert(ee, intermediates, ca, crls), + Err(webpki::Error::CertRevoked) + ); +} + #[test] fn int_revoked_no_ku_chain_depth() { let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); @@ -284,6 +539,27 @@ ); } +#[cfg(feature = "alloc")] +#[test] +fn int_revoked_no_ku_chain_depth_owned() { + let ee = include_bytes!("client_auth_revocation/no_ku_chain.ee.der"); + let intermediates = &[ + include_bytes!("client_auth_revocation/no_ku_chain.int.a.ca.der").as_slice(), + include_bytes!("client_auth_revocation/no_ku_chain.int.b.ca.der").as_slice(), + ]; + let ca = include_bytes!("client_auth_revocation/no_ku_chain.root.ca.der"); + let crls = &[&webpki::BorrowedCertRevocationList::from_der( + include_bytes!("client_auth_revocation/int_revoked_no_ku_chain_depth.crl.der").as_slice(), + ) + .unwrap() + .to_owned() + .unwrap() as &dyn webpki::CertRevocationList]; + assert_eq!( + check_cert(ee, intermediates, ca, crls), + Err(webpki::Error::CertRevoked) + ); +} + #[test] fn int_revoked_crl_ku_chain_depth() { let ee = include_bytes!("client_auth_revocation/ku_chain.ee.der"); @@ -298,6 +574,68 @@ .unwrap() as &dyn webpki::CertRevocationList]; assert_eq!( check_cert(ee, intermediates, ca, crls), + Err(webpki::Error::CertRevoked) + ); +} + +#[cfg(feature = "alloc")] +#[test] +fn int_revoked_crl_ku_chain_depth_owned() { + let ee = include_bytes!("client_auth_revocation/ku_chain.ee.der"); + let intermediates = &[ + include_bytes!("client_auth_revocation/ku_chain.int.a.ca.der").as_slice(), + include_bytes!("client_auth_revocation/ku_chain.int.b.ca.der").as_slice(), + ]; + let ca = include_bytes!("client_auth_revocation/ku_chain.root.ca.der"); + let crls = &[&webpki::BorrowedCertRevocationList::from_der( + include_bytes!("client_auth_revocation/int_revoked_crl_ku_chain_depth.crl.der").as_slice(), + ) + .unwrap() + .to_owned() + .unwrap() as &dyn webpki::CertRevocationList]; + assert_eq!( + check_cert(ee, intermediates, ca, crls), + Err(webpki::Error::CertRevoked) + ); +} + +#[test] +fn ee_with_top_bit_set_serial_revoked() { + let ee = include_bytes!("client_auth_revocation/ku_chain.topbit.ee.der"); + let intermediates = &[ + include_bytes!("client_auth_revocation/ku_chain.int.a.ca.der").as_slice(), + include_bytes!("client_auth_revocation/ku_chain.int.b.ca.der").as_slice(), + ]; + let ca = include_bytes!("client_auth_revocation/ku_chain.root.ca.der"); + let crls = &[&webpki::BorrowedCertRevocationList::from_der( + include_bytes!("client_auth_revocation/ee_with_top_bit_set_serial_revoked.crl.der") + .as_slice(), + ) + .unwrap() as &dyn webpki::CertRevocationList]; + assert_eq!( + check_cert(ee, intermediates, ca, crls), + Err(webpki::Error::CertRevoked) + ); +} + +#[cfg(feature = "alloc")] +#[test] +fn ee_with_top_bit_set_serial_revoked_owned() { + let ee = include_bytes!("client_auth_revocation/ku_chain.topbit.ee.der"); + let intermediates = &[ + include_bytes!("client_auth_revocation/ku_chain.int.a.ca.der").as_slice(), + include_bytes!("client_auth_revocation/ku_chain.int.b.ca.der").as_slice(), + ]; + let ca = include_bytes!("client_auth_revocation/ku_chain.root.ca.der"); + let crls = &[&webpki::BorrowedCertRevocationList::from_der( + include_bytes!("client_auth_revocation/ee_with_top_bit_set_serial_revoked.crl.der") + .as_slice(), + ) + .unwrap() + .to_owned() + .unwrap() as &dyn webpki::CertRevocationList]; + assert_eq!( + check_cert(ee, intermediates, ca, crls), Err(webpki::Error::CertRevoked) ); } diff -Nru temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth.rs temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth.rs --- temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/tests/client_auth.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,8 @@ // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -extern crate webpki; +#[cfg(feature = "alloc")] +use webpki::KeyUsage; #[cfg(feature = "alloc")] static ALL_SIGALGS: &[&webpki::SignatureAlgorithm] = &[ @@ -29,12 +30,18 @@ #[cfg(feature = "alloc")] fn check_cert(ee: &[u8], ca: &[u8]) -> Result<(), webpki::Error> { - let anchors = vec![webpki::TrustAnchor::try_from_cert_der(ca).unwrap()]; - let anchors = webpki::TlsClientTrustAnchors(&anchors); + let anchors = &[webpki::TrustAnchor::try_from_cert_der(ca).unwrap()]; let time = webpki::Time::from_seconds_since_unix_epoch(0x1fed_f00d); let cert = webpki::EndEntityCert::try_from(ee).unwrap(); - cert.verify_is_valid_tls_client_cert(ALL_SIGALGS, &anchors, &[], time, &[]) + cert.verify_for_usage( + ALL_SIGALGS, + anchors, + &[], + time, + KeyUsage::client_auth(), + &[], + ) } // DO NOT EDIT BELOW: generated by tests/generate.py Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/crls/crl.too.long.crl.number.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/crls/crl.too.long.crl.number.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/crls/crl.topbit.serial.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/crls/crl.topbit.serial.der differ diff -Nru temporalio-1.3.0/vendor/rustls-webpki/tests/crls/crl.topbit.serial.txt temporalio-1.3.0/vendor/rustls-webpki/tests/crls/crl.topbit.serial.txt --- temporalio-1.3.0/vendor/rustls-webpki/tests/crls/crl.topbit.serial.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/tests/crls/crl.topbit.serial.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,95 @@ +SEQUENCE { + SEQUENCE { + INTEGER { 1 } + SEQUENCE { + # ecdsa-with-SHA384 + OBJECT_IDENTIFIER { 1.2.840.10045.4.3.3 } + } + SEQUENCE { + SET { + SEQUENCE { + # countryName + OBJECT_IDENTIFIER { 2.5.4.6 } + PrintableString { "XX" } + } + } + SET { + SEQUENCE { + # organizationName + OBJECT_IDENTIFIER { 2.5.4.10 } + PrintableString { "Boulder Test" } + } + } + SET { + SEQUENCE { + # commonName + OBJECT_IDENTIFIER { 2.5.4.3 } + PrintableString { "(TEST) Elegant Elephant E1" } + } + } + } + UTCTime { "221010201207Z" } + UTCTime { "221019201206Z" } + SEQUENCE { + SEQUENCE { + INTEGER { `0080feedf00d` } + UTCTime { "221010191207Z" } + SEQUENCE { + SEQUENCE { + # reasonCode + OBJECT_IDENTIFIER { 2.5.29.21 } + OCTET_STRING { + ENUMERATED { `01` } + } + } + } + } + } + [0] { + SEQUENCE { + SEQUENCE { + # authorityKeyIdentifier + OBJECT_IDENTIFIER { 2.5.29.35 } + OCTET_STRING { + SEQUENCE { + [0 PRIMITIVE] { `01dabb7acb25208e5e79d6f996422f02412907be` } + } + } + } + SEQUENCE { + # cRLNumber + OBJECT_IDENTIFIER { 2.5.29.20 } + OCTET_STRING { + INTEGER { `171cce3de482ba61` } + } + } + SEQUENCE { + # issuingDistributionPoint + OBJECT_IDENTIFIER { 2.5.29.28 } + BOOLEAN { TRUE } + OCTET_STRING { + SEQUENCE { + [0] { + [0] { + [6 PRIMITIVE] { "http://c.boulder.test/66283756913588288/0.crl" } + } + } + [1 PRIMITIVE] { `ff` } + } + } + } + } + } + } + SEQUENCE { + # ecdsa-with-SHA384 + OBJECT_IDENTIFIER { 1.2.840.10045.4.3.3 } + } + BIT_STRING { + `00` + SEQUENCE { + INTEGER { `2f0e42149d361abc9ea1f3ad3a303c85876bb0fdc17e3959cce2c13c9d4746cb45d88348467db478318fa44714506b22` } + INTEGER { `57903e972922bd33817a4fea5517534adc2d2bdab6e69e41256bdb89c68d9ecfcb4bdcf78c349fb89d67cc237b9fbf33` } + } + } +} diff -Nru temporalio-1.3.0/vendor/rustls-webpki/tests/crl_tests.rs temporalio-1.3.0/vendor/rustls-webpki/tests/crl_tests.rs --- temporalio-1.3.0/vendor/rustls-webpki/tests/crl_tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/tests/crl_tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,24 +2,40 @@ const REVOKED_SERIAL: &[u8] = &[0x03, 0xAE, 0x51, 0xDB, 0x51, 0x15, 0x5A, 0x3C]; +const REVOKED_SERIAL_NEGATIVE: &[u8] = &[0xfd, 0x78, 0xa8, 0x4e]; + +// because cert::Cert::serial is the raw DER integer encoding, this includes a leading +// zero if one is required to make the twos complement representation positive. in this case +// one is required. +const REVOKED_SERIAL_WITH_TOP_BIT_SET: &[u8] = &[0x00, 0x80, 0xfe, 0xed, 0xf0, 0x0d]; + #[test] fn parse_valid_crl() { - // We should be able to parse a valid CRL without error. + // We should be able to parse a valid CRL without error, and find the revoked serial. let crl = include_bytes!("crls/crl.valid.der"); let crl = BorrowedCertRevocationList::from_der(&crl[..]).expect("failed to parse valid crl"); + assert!(crl.find_serial(REVOKED_SERIAL).unwrap().is_some()); - // We should find the expected revoked certificate with the expected serial number. - assert!(crl.find_serial(REVOKED_SERIAL).unwrap().is_some()) + #[cfg(feature = "alloc")] + { + let crl = crl.to_owned().unwrap(); + assert!(crl.find_serial(REVOKED_SERIAL).unwrap().is_some()); + } } #[test] fn parse_empty_crl() { - // We should be able to parse an empty CRL without error. + // We should be able to parse an empty CRL without error, and find no revoked certs. let crl = include_bytes!("crls/crl.empty.der"); let crl = BorrowedCertRevocationList::from_der(&crl[..]).expect("failed to parse empty crl"); - - // We should find no revoked certificates. assert!(crl.into_iter().next().is_none()); + + #[cfg(feature = "alloc")] + { + // We should also be able to create an owned empty CRL without error. + let res = crl.to_owned(); + assert!(res.is_ok()); + } } #[test] @@ -87,32 +103,88 @@ } #[test] +fn parse_too_long_crl_number_crl() { + // Parsing a CRL with a CRL number > 20 octets should error. + let crl = include_bytes!("crls/crl.too.long.crl.number.der"); + let res = BorrowedCertRevocationList::from_der(&crl[..]); + assert!(matches!(res, Err(Error::InvalidCrlNumber))); +} + +#[test] fn parse_entry_negative_serial_crl() { - // Parsing a CRL that includes a revoked entry with a negative serial number shouldn't error - // up-front since the error is with a revoked entry. let crl = include_bytes!("crls/crl.negative.serial.der"); let crl = BorrowedCertRevocationList::from_der(&crl[..]).unwrap(); - // but searching for a revoked cert should error due to the entry with the negative serial number. - let res = crl.find_serial(REVOKED_SERIAL); - assert!(matches!(res, Err(Error::InvalidSerialNumber))); + assert!(crl + .find_serial(REVOKED_SERIAL) + .expect("looking for REVOKED_SERIAL failed") + .is_none()); + assert!(crl + .find_serial(REVOKED_SERIAL_NEGATIVE) + .expect("looking for REVOKED_SERIAL_NEGATIVE failed") + .is_some()); + + #[cfg(feature = "alloc")] + { + let crl = crl.to_owned().unwrap(); + assert!(crl + .find_serial(REVOKED_SERIAL) + .expect("looking for REVOKED_SERIAL failed") + .is_none()); + assert!(crl + .find_serial(REVOKED_SERIAL_NEGATIVE) + .expect("looking for REVOKED_SERIAL_NEGATIVE failed") + .is_some()); + } +} + +#[test] +fn parse_entry_topbit_serial_crl() { + let crl = include_bytes!("crls/crl.topbit.serial.der"); + let crl = BorrowedCertRevocationList::from_der(&crl[..]).unwrap(); + + assert!(crl + .find_serial(REVOKED_SERIAL_WITH_TOP_BIT_SET) + .expect("failed to look for REVOKED_SERIAL_WITH_TOP_BIT_SET") + .is_some()); + + #[cfg(feature = "alloc")] + { + let crl = crl.to_owned().unwrap(); + assert!(crl + .find_serial(REVOKED_SERIAL_WITH_TOP_BIT_SET) + .expect("failed to look for REVOKED_SERIAL_WITH_TOP_BIT_SET") + .is_some()); + } } #[test] fn parse_entry_without_exts_crl() { - // Parsing a CRL that includes a revoked entry that has no extensions shouldn't error. + // Parsing a CRL that includes a revoked entry that has no extensions shouldn't error, and we + // should find the expected revoked certificate. let crl = include_bytes!("crls/crl.no.entry.exts.der"); let crl = BorrowedCertRevocationList::from_der(&crl[..]).expect("unexpected error parsing crl"); - // We should find the expected revoked certificate with the expected serial number. assert!(crl.find_serial(REVOKED_SERIAL).unwrap().is_some()); + + #[cfg(feature = "alloc")] + { + let crl = crl.to_owned().unwrap(); + assert!(crl.find_serial(REVOKED_SERIAL).unwrap().is_some()); + } } #[test] fn parse_entry_with_empty_exts_seq() { + // Parsing a CRL that has a revoked cert entry with an empty extensions sequence shouldn't error. let crl = include_bytes!("crls/crl.entry.empty.ext.seq.der"); let res = BorrowedCertRevocationList::from_der(&crl[..]); - assert!(res.is_ok()); + + #[cfg(feature = "alloc")] + { + let res = res.unwrap().to_owned(); + assert!(res.is_ok()); + } } #[test] @@ -126,6 +198,13 @@ // critical ext. let res = crl.find_serial(REVOKED_SERIAL); assert!(matches!(res, Err(Error::UnsupportedCriticalExtension))); + + #[cfg(feature = "alloc")] + { + // Parsing the CRL as an owned CRL should error since it will process the revoked certs. + let res = crl.to_owned(); + assert!(matches!(res, Err(Error::UnsupportedCriticalExtension))); + } } #[test] @@ -138,21 +217,38 @@ // But searching for a serial should error due to the revoked cert with the unknown reason. let res = crl.find_serial(REVOKED_SERIAL); assert!(matches!(res, Err(Error::UnsupportedRevocationReason))); + + #[cfg(feature = "alloc")] + { + // Parsing the CRL as an owned CRL should error since it will process the revoked certs. + let res = crl.to_owned(); + assert!(matches!(res, Err(Error::UnsupportedRevocationReason))); + } } #[test] fn parse_entry_invalidity_date_crl() { - // Parsing a CRL that includes a revoked entry that has an invalidity date ext shouldn't error. + // Parsing a CRL that includes a revoked entry that has an invalidity date ext shouldn't error + // and we should find the expected revoked cert with an invalidity date. let crl = include_bytes!("crls/crl.entry.invalidity.date.der"); let crl = BorrowedCertRevocationList::from_der(&crl[..]).expect("unexpected err parsing CRL"); - - // We should find the expected revoked cert, and it should have a parsed invalidity date. assert!(crl .find_serial(REVOKED_SERIAL) .unwrap() .unwrap() .invalidity_date .is_some()); + + #[cfg(feature = "alloc")] + { + let crl = crl.to_owned().unwrap(); + assert!(crl + .find_serial(REVOKED_SERIAL) + .unwrap() + .unwrap() + .invalidity_date + .is_some()); + } } #[test] @@ -163,8 +259,13 @@ let crl = include_bytes!("crls/crl.entry.issuer.ext.der"); let crl = BorrowedCertRevocationList::from_der(&crl[..]).unwrap(); - // But searching for a serial should error because the CRL contains a revoked cert with an - // issuer certificate extension indicating this is an "indirect" CRL that we do not support. let res = crl.find_serial(REVOKED_SERIAL); assert!(matches!(res, Err(Error::UnsupportedIndirectCrl))); + + #[cfg(feature = "alloc")] + { + // Building an owned CRL should error up front since it will process the revoked certs. + let res = crl.to_owned(); + assert!(matches!(res, Err(Error::UnsupportedIndirectCrl))); + } } diff -Nru temporalio-1.3.0/vendor/rustls-webpki/tests/custom_ekus.rs temporalio-1.3.0/vendor/rustls-webpki/tests/custom_ekus.rs --- temporalio-1.3.0/vendor/rustls-webpki/tests/custom_ekus.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/tests/custom_ekus.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,53 @@ +#![cfg(feature = "alloc")] + +use webpki::KeyUsage; + +fn check_cert( + ee: &[u8], + ca: &[u8], + eku: KeyUsage, + time: webpki::Time, + result: Result<(), webpki::Error>, +) { + let anchors = [webpki::TrustAnchor::try_from_cert_der(ca).unwrap()]; + let algs = &[ + &webpki::RSA_PKCS1_2048_8192_SHA256, + &webpki::ECDSA_P256_SHA256, + ]; + + let cert = webpki::EndEntityCert::try_from(ee).unwrap(); + + assert_eq!( + cert.verify_for_usage(algs, &anchors, &[], time, eku, &[]), + result + ); +} + +#[test] +pub fn verify_custom_eku_mdoc() { + let err = Err(webpki::Error::RequiredEkuNotFound); + let time = webpki::Time::from_seconds_since_unix_epoch(1609459200); // Jan 1 01:00:00 CET 2021 + + let ee = include_bytes!("misc/mdoc_eku.ee.der"); + let ca = include_bytes!("misc/mdoc_eku.ca.der"); + + let eku_mdoc = KeyUsage::required(&[40, 129, 140, 93, 5, 1, 2]); + check_cert(ee, ca, eku_mdoc, time, Ok(())); + check_cert(ee, ca, KeyUsage::server_auth(), time, err); + check_cert(ee, ca, eku_mdoc, time, Ok(())); + check_cert(ee, ca, KeyUsage::server_auth(), time, err); +} + +#[test] +pub fn verify_custom_eku_client() { + let time = webpki::Time::from_seconds_since_unix_epoch(0x1fed_f00d); + + let ee = include_bytes!("client_auth/cert_with_no_eku_accepted_for_client_auth.ee.der"); + let ca = include_bytes!("client_auth/cert_with_no_eku_accepted_for_client_auth.ca.der"); + check_cert(ee, ca, KeyUsage::client_auth(), time, Ok(())); + + let ee = include_bytes!("client_auth/cert_with_both_ekus_accepted_for_client_auth.ee.der"); + let ca = include_bytes!("client_auth/cert_with_both_ekus_accepted_for_client_auth.ca.der"); + check_cert(ee, ca, KeyUsage::client_auth(), time, Ok(())); + check_cert(ee, ca, KeyUsage::server_auth(), time, Ok(())); +} diff -Nru temporalio-1.3.0/vendor/rustls-webpki/tests/generate.py temporalio-1.3.0/vendor/rustls-webpki/tests/generate.py --- temporalio-1.3.0/vendor/rustls-webpki/tests/generate.py 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/tests/generate.py 2023-10-30 19:40:00.000000000 +0000 @@ -86,6 +86,7 @@ subject_key: Optional[ANY_PRIV_KEY] = None, sans: Optional[Iterable[x509.GeneralName]] = None, ekus: Optional[Iterable[x509.ObjectIdentifier]] = None, + serial: Optional[int] = None, ) -> x509.Certificate: subject_priv_key = key_or_generate(subject_key) subject_key_pub: ANY_PUB_KEY = subject_priv_key.public_key() @@ -95,7 +96,9 @@ ee_builder = ee_builder.issuer_name(issuer_name) ee_builder = ee_builder.not_valid_before(NOT_BEFORE) ee_builder = ee_builder.not_valid_after(NOT_AFTER) - ee_builder = ee_builder.serial_number(x509.random_serial_number()) + ee_builder = ee_builder.serial_number( + x509.random_serial_number() if serial is None else serial + ) ee_builder = ee_builder.public_key(subject_key_pub) if sans: ee_builder = ee_builder.add_extension( @@ -311,13 +314,6 @@ generate_tls_server_cert_test( output, - "disallow_subject_common_name", - expected_error="NameConstraintViolation", - subject_common_name="disallowed.example.com", - excluded_subtrees=[x509.DNSName("disallowed.example.com")], - ) - generate_tls_server_cert_test( - output, "disallow_dns_san", expected_error="NameConstraintViolation", sans=[x509.DNSName("disallowed.example.com")], @@ -352,15 +348,6 @@ ) generate_tls_server_cert_test( output, - "allow_dns_san_and_disallow_subject_common_name", - expected_error="NameConstraintViolation", - sans=[x509.DNSName("allowed-san.example.com")], - subject_common_name="disallowed-cn.example.com", - permitted_subtrees=[x509.DNSName("allowed-san.example.com")], - excluded_subtrees=[x509.DNSName("disallowed-cn.example.com")], - ) - generate_tls_server_cert_test( - output, "disallow_dns_san_and_allow_subject_common_name", expected_error="NameConstraintViolation", sans=[ @@ -929,6 +916,18 @@ ee_cert_path: str = os.path.join(output_dir, f"{chain_name}.ee.der") write_der(ee_cert_path, ee_cert.public_bytes(Encoding.DER), force) + # Second EE cert issued by intermediate, with top-bit set in serial. + ee_cert_topbit: x509.Certificate = end_entity_cert( + subject_name=ee_subj, + issuer_name=int_a_subj, + issuer_key=int_a_key, + serial=0x80DEADBEEFF00D, + ) + ee_cert_topbit_path: str = os.path.join( + output_dir, f"{chain_name}.topbit.ee.der" + ) + write_der(ee_cert_topbit_path, ee_cert_topbit.public_bytes(Encoding.DER), force) + # intermediate a cert issued by intermediate b. int_a_cert: x509.Certificate = ca_cert( subject_name=int_a_subj, @@ -965,6 +964,7 @@ (int_a_cert, int_a_cert_path, int_a_key), (int_b_cert, int_b_cert_path, int_b_key), (root_cert, root_cert_path, root_key), + (ee_cert_topbit, ee_cert_topbit_path, ee_key), ] def _crl( @@ -1013,7 +1013,9 @@ test_name: str, chain: list[tuple[x509.Certificate, str, ANY_PRIV_KEY]], crl_paths: Iterable[str], + owned: bool, expected_error: Optional[str], + ee_topbit_serial: bool = False, ) -> None: """ Generate a Rust unit test for a revocation checking scenario and write it to the output file. @@ -1021,12 +1023,13 @@ :param test_name: the name of the unit test. :param chain: the certificate chain to use for validation. :param crl_paths: paths to zero or more CRLs. + :param owned: whether to use the owned or borrowed CRL representation. :param expected_error: an optional error to expect to be returned from validation. """ - if len(chain) != 4: + if len(chain) != 5: raise RuntimeError("invalid chain length") - ee_cert, ee_cert_path, _ = chain[0] + ee_cert, ee_cert_path, _ = chain[4] if ee_topbit_serial else chain[0] int_a_cert, int_a_cert_path, _ = chain[1] int_b_cert, int_b_cert_path, _ = chain[2] root_cert, root_cert_path, _ = chain[3] @@ -1034,11 +1037,13 @@ int_a_str = f'include_bytes!("{int_a_cert_path}").as_slice()' int_b_str = f'include_bytes!("{int_b_cert_path}").as_slice()' intermediates_str: str = f"&[{int_a_str}, {int_b_str}]" + owned_convert: str = ".to_owned().unwrap()" if owned else "" crl_includes: str = "\n".join( [ f""" &webpki::BorrowedCertRevocationList::from_der(include_bytes!("{path}").as_slice()) .unwrap() + {owned_convert} as &dyn webpki::CertRevocationList, """ for path in crl_paths @@ -1048,9 +1053,11 @@ expected: str = ( f"Err(webpki::Error::{expected_error})" if expected_error else "Ok(())" ) + feature_gate = '#[cfg(feature = "alloc")]' if owned else "" print( """ + %(feature_gate)s #[test] fn %(test_name)s() { let ee = include_bytes!("%(ee_cert_path)s"); @@ -1080,6 +1087,14 @@ test_name="no_crls_test_ee_depth", chain=no_ku_chain, crl_paths=[], + owned=False, + expected_error=None, + ) + _revocation_test( + test_name="no_crls_test_ee_depth_owned", + chain=no_ku_chain, + crl_paths=[], + owned=True, expected_error=None, ) @@ -1100,6 +1115,14 @@ test_name=test_name, chain=no_ku_chain, crl_paths=[no_match_crl_path], + owned=False, + expected_error=None, + ) + _revocation_test( + test_name=test_name + "_owned", + chain=no_ku_chain, + crl_paths=[no_match_crl_path], + owned=True, expected_error=None, ) @@ -1126,6 +1149,14 @@ test_name=test_name, chain=no_ku_chain, crl_paths=[ee_not_revoked_crl_path], + owned=False, + expected_error=None, + ) + _revocation_test( + test_name=test_name + "_owned", + chain=no_ku_chain, + crl_paths=[ee_not_revoked_crl_path], + owned=True, expected_error=None, ) @@ -1152,6 +1183,14 @@ test_name=test_name, chain=no_ku_chain, crl_paths=[ee_revoked_badsig_path], + owned=False, + expected_error="InvalidCrlSignatureForPublicKey", + ) + _revocation_test( + test_name=test_name + "_owned", + chain=no_ku_chain, + crl_paths=[ee_revoked_badsig_path], + owned=True, expected_error="InvalidCrlSignatureForPublicKey", ) @@ -1175,6 +1214,14 @@ test_name=test_name, chain=no_crl_ku_chain, crl_paths=[ee_revoked_crl_path], + owned=False, + expected_error="IssuerNotCrlSigner", + ) + _revocation_test( + test_name=test_name + "_owned", + chain=no_crl_ku_chain, + crl_paths=[ee_revoked_crl_path], + owned=True, expected_error="IssuerNotCrlSigner", ) @@ -1201,6 +1248,14 @@ test_name=test_name, chain=no_crl_ku_chain, crl_paths=[ee_not_revoked_crl_path], + owned=False, + expected_error="IssuerNotCrlSigner", + ) + _revocation_test( + test_name=test_name + "_owned", + chain=no_crl_ku_chain, + crl_paths=[ee_not_revoked_crl_path], + owned=True, expected_error="IssuerNotCrlSigner", ) @@ -1224,6 +1279,14 @@ test_name=test_name, chain=no_ku_chain, crl_paths=[ee_revoked_crl_path], + owned=False, + expected_error="CertRevoked", + ) + _revocation_test( + test_name=test_name + "_owned", + chain=no_ku_chain, + crl_paths=[ee_revoked_crl_path], + owned=True, expected_error="CertRevoked", ) @@ -1247,6 +1310,14 @@ test_name=test_name, chain=crl_ku_chain, crl_paths=[ee_revoked_crl_path], + owned=False, + expected_error="CertRevoked", + ) + _revocation_test( + test_name=test_name + "_owned", + chain=crl_ku_chain, + crl_paths=[ee_revoked_crl_path], + owned=True, expected_error="CertRevoked", ) @@ -1256,6 +1327,7 @@ test_name="no_crls_test_chain_depth", chain=no_ku_chain, crl_paths=[], + owned=False, expected_error=None, ) @@ -1276,6 +1348,14 @@ test_name=test_name, chain=no_ku_chain, crl_paths=[no_match_crl_path], + owned=False, + expected_error=None, + ) + _revocation_test( + test_name=test_name + "_owned", + chain=no_ku_chain, + crl_paths=[no_match_crl_path], + owned=True, expected_error=None, ) @@ -1302,6 +1382,14 @@ test_name=test_name, chain=no_ku_chain, crl_paths=[int_not_revoked_crl_path], + owned=False, + expected_error=None, + ) + _revocation_test( + test_name=test_name + "_owned", + chain=no_ku_chain, + crl_paths=[int_not_revoked_crl_path], + owned=True, expected_error=None, ) @@ -1330,6 +1418,14 @@ test_name=test_name, chain=no_ku_chain, crl_paths=[int_revoked_badsig_path], + owned=False, + expected_error="InvalidCrlSignatureForPublicKey", + ) + _revocation_test( + test_name=test_name + "_owned", + chain=no_ku_chain, + crl_paths=[int_revoked_badsig_path], + owned=True, expected_error="InvalidCrlSignatureForPublicKey", ) @@ -1355,6 +1451,14 @@ test_name=test_name, chain=no_crl_ku_chain, crl_paths=[int_revoked_crl_path], + owned=False, + expected_error="IssuerNotCrlSigner", + ) + _revocation_test( + test_name=test_name + "_owned", + chain=no_crl_ku_chain, + crl_paths=[int_revoked_crl_path], + owned=True, expected_error="IssuerNotCrlSigner", ) @@ -1378,6 +1482,14 @@ test_name=test_name, chain=no_ku_chain, crl_paths=[ee_revoked_crl_path], + owned=False, + expected_error="CertRevoked", + ) + _revocation_test( + test_name=test_name + "_owned", + chain=no_ku_chain, + crl_paths=[ee_revoked_crl_path], + owned=True, expected_error="CertRevoked", ) @@ -1403,6 +1515,14 @@ test_name=test_name, chain=no_ku_chain, crl_paths=[int_revoked_crl_path], + owned=False, + expected_error="CertRevoked", + ) + _revocation_test( + test_name=test_name + "_owned", + chain=no_ku_chain, + crl_paths=[int_revoked_crl_path], + owned=True, expected_error="CertRevoked", ) @@ -1428,6 +1548,45 @@ test_name=test_name, chain=crl_ku_chain, crl_paths=[int_revoked_crl_path], + owned=False, + expected_error="CertRevoked", + ) + _revocation_test( + test_name=test_name + "_owned", + chain=crl_ku_chain, + crl_paths=[int_revoked_crl_path], + owned=True, + expected_error="CertRevoked", + ) + + def _ee_with_top_bit_set_serial_revoked() -> None: + test_name = "ee_with_top_bit_set_serial_revoked" + ee_cert_topbit = crl_ku_chain[4][0] + int_a_key = crl_ku_chain[1][2] + + ee_revoked_crl = _crl( + serials=[ee_cert_topbit.serial_number], + issuer_name=ee_cert_topbit.issuer, + issuer_key=int_a_key, + ) + + ee_revoked_crl_path = os.path.join(output_dir, f"{test_name}.crl.der") + write_der(ee_revoked_crl_path, ee_revoked_crl.public_bytes(Encoding.DER), force) + + _revocation_test( + test_name=test_name, + chain=crl_ku_chain, + crl_paths=[ee_revoked_crl_path], + owned=False, + ee_topbit_serial=True, + expected_error="CertRevoked", + ) + _revocation_test( + test_name=test_name + "_owned", + chain=crl_ku_chain, + crl_paths=[ee_revoked_crl_path], + owned=True, + ee_topbit_serial=True, expected_error="CertRevoked", ) @@ -1448,6 +1607,7 @@ _ee_revoked_chain_depth() _int_revoked_no_ku_chain_depth() _int_revoked_crl_ku_chain_depth() + _ee_with_top_bit_set_serial_revoked() if __name__ == "__main__": diff -Nru temporalio-1.3.0/vendor/rustls-webpki/tests/integration.rs temporalio-1.3.0/vendor/rustls-webpki/tests/integration.rs --- temporalio-1.3.0/vendor/rustls-webpki/tests/integration.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/tests/integration.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -extern crate webpki; +use webpki::KeyUsage; static ALL_SIGALGS: &[&webpki::SignatureAlgorithm] = &[ &webpki::ECDSA_P256_SHA256, @@ -39,15 +39,21 @@ let inter = include_bytes!("netflix/inter.der"); let ca = include_bytes!("netflix/ca.der"); - let anchors = vec![webpki::TrustAnchor::try_from_cert_der(ca).unwrap()]; - let anchors = webpki::TlsServerTrustAnchors(&anchors); + let anchors = [webpki::TrustAnchor::try_from_cert_der(ca).unwrap()]; let time = webpki::Time::from_seconds_since_unix_epoch(1_492_441_716); // 2017-04-17T15:08:36Z let cert = webpki::EndEntityCert::try_from(ee).unwrap(); assert_eq!( Ok(()), - cert.verify_is_valid_tls_server_cert(ALL_SIGALGS, &anchors, &[inter], time) + cert.verify_for_usage( + ALL_SIGALGS, + &anchors, + &[inter], + time, + KeyUsage::server_auth(), + &[] + ) ); } @@ -59,15 +65,21 @@ let inter = include_bytes!("cloudflare_dns/inter.der"); let ca = include_bytes!("cloudflare_dns/ca.der"); - let anchors = vec![webpki::TrustAnchor::try_from_cert_der(ca).unwrap()]; - let anchors = webpki::TlsServerTrustAnchors(&anchors); + let anchors = [webpki::TrustAnchor::try_from_cert_der(ca).unwrap()]; let time = webpki::Time::from_seconds_since_unix_epoch(1_663_495_771); let cert = webpki::EndEntityCert::try_from(ee).unwrap(); assert_eq!( Ok(()), - cert.verify_is_valid_tls_server_cert(ALL_SIGALGS, &anchors, &[inter], time) + cert.verify_for_usage( + ALL_SIGALGS, + &anchors, + &[inter], + time, + KeyUsage::server_auth(), + &[] + ) ); let check_name = |name: &str| { @@ -107,15 +119,21 @@ let ee: &[u8] = include_bytes!("wpt/ee.der"); let ca = include_bytes!("wpt/ca.der"); - let anchors = vec![webpki::TrustAnchor::try_from_cert_der(ca).unwrap()]; - let anchors = webpki::TlsServerTrustAnchors(&anchors); + let anchors = [webpki::TrustAnchor::try_from_cert_der(ca).unwrap()]; let time = webpki::Time::from_seconds_since_unix_epoch(1_619_256_684); // 2021-04-24T09:31:24Z let cert = webpki::EndEntityCert::try_from(ee).unwrap(); assert_eq!( Ok(()), - cert.verify_is_valid_tls_server_cert(ALL_SIGALGS, &anchors, &[], time) + cert.verify_for_usage( + ALL_SIGALGS, + &anchors, + &[], + time, + KeyUsage::server_auth(), + &[] + ) ); } @@ -124,15 +142,21 @@ let ee: &[u8] = include_bytes!("ed25519/ee.der"); let ca = include_bytes!("ed25519/ca.der"); - let anchors = vec![webpki::TrustAnchor::try_from_cert_der(ca).unwrap()]; - let anchors = webpki::TlsServerTrustAnchors(&anchors); + let anchors = [webpki::TrustAnchor::try_from_cert_der(ca).unwrap()]; let time = webpki::Time::from_seconds_since_unix_epoch(1_547_363_522); // 2019-01-13T07:12:02Z let cert = webpki::EndEntityCert::try_from(ee).unwrap(); assert_eq!( Ok(()), - cert.verify_is_valid_tls_server_cert(ALL_SIGALGS, &anchors, &[], time) + cert.verify_for_usage( + ALL_SIGALGS, + &anchors, + &[], + time, + KeyUsage::server_auth(), + &[] + ) ); } @@ -144,16 +168,31 @@ let time = webpki::Time::from_seconds_since_unix_epoch(1_670_779_098); let anchors = [webpki::TrustAnchor::try_from_cert_der(root).unwrap()]; - let anchors = webpki::TlsServerTrustAnchors(&anchors); let ee = include_bytes!("critical_extensions/ee-cert-noncrit-unknown-ext.der"); - let res = webpki::EndEntityCert::try_from(&ee[..]) - .and_then(|cert| cert.verify_is_valid_tls_server_cert(ALL_SIGALGS, &anchors, &[ca], time)); + let res = webpki::EndEntityCert::try_from(&ee[..]).and_then(|cert| { + cert.verify_for_usage( + ALL_SIGALGS, + &anchors, + &[ca], + time, + KeyUsage::server_auth(), + &[], + ) + }); assert_eq!(res, Ok(()), "accept non-critical unknown extension"); let ee = include_bytes!("critical_extensions/ee-cert-crit-unknown-ext.der"); - let res = webpki::EndEntityCert::try_from(&ee[..]) - .and_then(|cert| cert.verify_is_valid_tls_server_cert(ALL_SIGALGS, &anchors, &[ca], time)); + let res = webpki::EndEntityCert::try_from(&ee[..]).and_then(|cert| { + cert.verify_for_usage( + ALL_SIGALGS, + &anchors, + &[ca], + time, + KeyUsage::server_auth(), + &[], + ) + }); assert_eq!( res, Err(webpki::Error::UnsupportedCriticalExtension), @@ -180,15 +219,21 @@ let ca: &[u8] = include_bytes!("misc/serial_neg_ca.der"); let ee: &[u8] = include_bytes!("misc/serial_neg_ee.der"); - let anchors = vec![webpki::TrustAnchor::try_from_cert_der(ca).unwrap()]; - let anchors = webpki::TlsServerTrustAnchors(&anchors); + let anchors = [webpki::TrustAnchor::try_from_cert_der(ca).unwrap()]; let time = webpki::Time::from_seconds_since_unix_epoch(1_667_401_500); // 2022-11-02T15:05:00Z let cert = webpki::EndEntityCert::try_from(ee).unwrap(); assert_eq!( Ok(()), - cert.verify_is_valid_tls_server_cert(ALL_SIGALGS, &anchors, &[], time) + cert.verify_for_usage( + ALL_SIGALGS, + &anchors, + &[], + time, + KeyUsage::server_auth(), + &[] + ) ); } Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/misc/empty_sequence_common_name.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/misc/empty_sequence_common_name.der differ diff -Nru temporalio-1.3.0/vendor/rustls-webpki/tests/misc/empty_sequence_common_name.der.txt temporalio-1.3.0/vendor/rustls-webpki/tests/misc/empty_sequence_common_name.der.txt --- temporalio-1.3.0/vendor/rustls-webpki/tests/misc/empty_sequence_common_name.der.txt 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/tests/misc/empty_sequence_common_name.der.txt 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,104 @@ +SEQUENCE { + SEQUENCE { + [0] { + INTEGER { 2 } + } + INTEGER { `7214c2cb574538a4d63af28bb25140821cd3c528` } + SEQUENCE { + # ecdsa-with-SHA256 + OBJECT_IDENTIFIER { 1.2.840.10045.4.3.2 } + } + SEQUENCE { + SET { + SEQUENCE { + # organizationUnitName + OBJECT_IDENTIFIER { 2.5.4.11 } + PrintableString { "None" } + } + } + } + SEQUENCE { + UTCTime { "230906172100Z" } + UTCTime { "330903172100Z" } + } + SEQUENCE {} + SEQUENCE { + SEQUENCE { + # ecPublicKey + OBJECT_IDENTIFIER { 1.2.840.10045.2.1 } + # secp256r1 + OBJECT_IDENTIFIER { 1.2.840.10045.3.1.7 } + } + BIT_STRING { `00` `04681e0d5d4e66ff6f0cc3a9f0e1ba6114d647e9dfc2ee23418d56ad58edfb78cfe4ec8dadf856fde5a890799753bcd2a9380896701b7c13e49ec2e097f8ee3421` } + } + [3] { + SEQUENCE { + SEQUENCE { + # keyUsage + OBJECT_IDENTIFIER { 2.5.29.15 } + BOOLEAN { TRUE } + OCTET_STRING { + BIT_STRING { b`101` } + } + } + SEQUENCE { + # extKeyUsage + OBJECT_IDENTIFIER { 2.5.29.37 } + OCTET_STRING { + SEQUENCE { + # serverAuth + OBJECT_IDENTIFIER { 1.3.6.1.5.5.7.3.1 } + # clientAuth + OBJECT_IDENTIFIER { 1.3.6.1.5.5.7.3.2 } + } + } + } + SEQUENCE { + # basicConstraints + OBJECT_IDENTIFIER { 2.5.29.19 } + BOOLEAN { TRUE } + OCTET_STRING { + SEQUENCE {} + } + } + SEQUENCE { + # subjectKeyIdentifier + OBJECT_IDENTIFIER { 2.5.29.14 } + OCTET_STRING { + OCTET_STRING { `8f8c61be7ce4c34689e2618034581e34ef88b24c` } + } + } + SEQUENCE { + # authorityKeyIdentifier + OBJECT_IDENTIFIER { 2.5.29.35 } + OCTET_STRING { + SEQUENCE { + [0 PRIMITIVE] { `c9a3daf11d035f6eab28e2ea195c677568b0adea` } + } + } + } + SEQUENCE { + # subjectAltName + OBJECT_IDENTIFIER { 2.5.29.17 } + BOOLEAN { TRUE } + OCTET_STRING { + SEQUENCE { + [2 PRIMITIVE] { "example.com" } + } + } + } + } + } + } + SEQUENCE { + # ecdsa-with-SHA256 + OBJECT_IDENTIFIER { 1.2.840.10045.4.3.2 } + } + BIT_STRING { + `00` + SEQUENCE { + INTEGER { `00f1891fc58e16c37752bf64d58999f703c8d458b1d22d8291292ce2ad87042990` } + INTEGER { `00a6f16e39c83ba001f7f6aae73aaad0aea46d596800746887fe4567a4ffe88f9b` } + } + } +} Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/misc/mdoc_eku.ca.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/misc/mdoc_eku.ca.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/rustls-webpki/tests/misc/mdoc_eku.ee.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/rustls-webpki/tests/misc/mdoc_eku.ee.der differ diff -Nru temporalio-1.3.0/vendor/rustls-webpki/tests/tls_server_certs.rs temporalio-1.3.0/vendor/rustls-webpki/tests/tls_server_certs.rs --- temporalio-1.3.0/vendor/rustls-webpki/tests/tls_server_certs.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/tests/tls_server_certs.rs 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #![cfg(feature = "alloc")] -extern crate webpki; +use webpki::KeyUsage; static ALL_SIGALGS: &[&webpki::SignatureAlgorithm] = &[ &webpki::ECDSA_P256_SHA256, @@ -33,12 +33,18 @@ valid_names: &[&str], invalid_names: &[&str], ) -> Result<(), webpki::Error> { - let anchors = vec![webpki::TrustAnchor::try_from_cert_der(ca).unwrap()]; - let anchors = webpki::TlsServerTrustAnchors(&anchors); + let anchors = [webpki::TrustAnchor::try_from_cert_der(ca).unwrap()]; let time = webpki::Time::from_seconds_since_unix_epoch(0x1fed_f00d); let cert = webpki::EndEntityCert::try_from(ee).unwrap(); - cert.verify_is_valid_tls_server_cert(ALL_SIGALGS, &anchors, &[], time)?; + cert.verify_for_usage( + ALL_SIGALGS, + &anchors, + &[], + time, + KeyUsage::server_auth(), + &[], + )?; for valid in valid_names { let name = webpki::SubjectNameRef::try_from_ascii_str(valid).unwrap(); @@ -84,16 +90,6 @@ } #[test] -fn disallow_subject_common_name() { - let ee = include_bytes!("tls_server_certs/disallow_subject_common_name.ee.der"); - let ca = include_bytes!("tls_server_certs/disallow_subject_common_name.ca.der"); - assert_eq!( - check_cert(ee, ca, &[], &[]), - Err(webpki::Error::NameConstraintViolation) - ); -} - -#[test] fn disallow_dns_san() { let ee = include_bytes!("tls_server_certs/disallow_dns_san.ee.der"); let ca = include_bytes!("tls_server_certs/disallow_dns_san.ca.der"); @@ -132,18 +128,6 @@ ); } -#[test] -fn allow_dns_san_and_disallow_subject_common_name() { - let ee = - include_bytes!("tls_server_certs/allow_dns_san_and_disallow_subject_common_name.ee.der"); - let ca = - include_bytes!("tls_server_certs/allow_dns_san_and_disallow_subject_common_name.ca.der"); - assert_eq!( - check_cert(ee, ca, &[], &[]), - Err(webpki::Error::NameConstraintViolation) - ); -} - #[test] fn disallow_dns_san_and_allow_subject_common_name() { let ee = diff -Nru temporalio-1.3.0/vendor/rustls-webpki/third-party/bettertls/README.md temporalio-1.3.0/vendor/rustls-webpki/third-party/bettertls/README.md --- temporalio-1.3.0/vendor/rustls-webpki/third-party/bettertls/README.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/rustls-webpki/third-party/bettertls/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,17 @@ +# BetterTLS Test Suite + +Generated using the Netflix [bettertls] project. + +[bettertls]: https://github.com/Netflix/bettertls + +## Pathbuilding + +To regenerate pathbuilding test data: + +1. Install Go +2. Generate the JSON testdata export for the path building suite: + +```bash +GOBIN=$PWD go install github.com/Netflix/bettertls/test-suites/cmd/bettertls@latest +./bettertls export-tests --suite pathbuilding --out ./pathbuilding.tests.json +``` diff -Nru temporalio-1.3.0/vendor/rustversion/.cargo-checksum.json temporalio-1.3.0/vendor/rustversion/.cargo-checksum.json --- temporalio-1.3.0/vendor/rustversion/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustversion/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"1c409cd0c3e8e8ad381dbf9618fc60e56a0779c124a6b114763a587bfb83baa7","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"9ba51325297bd22446d8cc89b60e10aaedc0a248ddaad9f12322e233032ac595","build/build.rs":"a5ac3f88a152167bdf624d18346b6db6459828bdbd1162a275fcde9c36e3ade6","build/rustc.rs":"0de80a0590facf36d76fa89c566789c774f5bfc3b787fe8d5b61f668deaed3f9","src/attr.rs":"9301cd4aff5a9648c057d5d8de9eb66921f0c3a715c51ada4459576bd49c8b19","src/bound.rs":"44bda74d3aacfeeeac9dae2f7eef3acc844d4c3c7eaa9d3e6288e5aeff269dff","src/constfn.rs":"613b8f53b21cc06b4f619fce9000993d3e7873b650701ca01cef1e53bed5b40a","src/date.rs":"454c749a60db8144a706a813e06fe3ae39c981920ba9832ef82f3f9debe1f052","src/error.rs":"cb37102f03ebbaca313d80f9714fe08dfef92fe956789ee87d93eb6121705f4f","src/expand.rs":"cfd1772b1af090532de1f318e1b61cc79c8004941a8c56a1a7f4962324b81c9d","src/expr.rs":"8e8ca76f4f5838436d9d7273f499c698bb41f6c15bc07d32ec5c1cb8bd3dd731","src/iter.rs":"8d4b817b9abc4e817105b673e15f29ef9bb8284a010ce01ac2d83387fe136947","src/lib.rs":"0a7cb0bbc1173614657e348df4343b0b6b5be7672ec906e1d86b2cc0f69aeb29","src/release.rs":"abb8ddd877c39a023bf5e7bd67063d6e4144e79758a8bafa338167f9d15b89f1","src/time.rs":"bdd05a743b07a6bbfa0dbc9d4e415e051aba4a51a430c3be1e23447eae298c8b","src/token.rs":"824ce765f692db73afa02d3ebb0281c750748035efc98fa547be29d3072665ce","src/version.rs":"afdb048bba95bbb885945eba5527b6bf0eca0105642bfc304c2f82a8b7d556df","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/test_const.rs":"44d72ea92a81544692ccabe7e93f5d560d29828e79835e9f9839fbb40acc499a","tests/test_eval.rs":"6f0ee3f49c9a0d0c374a4d0e9a9dce753cd9fc2ca7725e000a435dbd5f4a9ce3","tests/test_parse.rs":"a9d262ea18109f792da719c29f3434a2f6a5e5723286385a099359795495b6fb","tests/ui/bad-bound.rs":"25bde278fcaabf62868417148a5e5f2006bf589d7ebd7bf6004fb8d78e47594f","tests/ui/bad-bound.stderr":"96b5549a312cd64d503c560026a6f0e97ac2173fe7c136a14425f19dcb5968e3","tests/ui/bad-date.rs":"6e23714dae8b6346fefe50dacd4abba3265248bbadfdd60c739138aa8a0037ba","tests/ui/bad-date.stderr":"3cc6d10572b80d397954737340d444c541d2c0e54e7d26495861d6189b6b2a55","tests/ui/bad-not.rs":"f003df8bd245e9dd8edc3a6d94078ee5162fac7a98db881271f0f5b6db98d45d","tests/ui/bad-not.stderr":"1aebb3121d067d432a32dd95ff380ceac15a0531c34f90cee950582558841c56","tests/ui/bad-version.rs":"f4ea2cd038e6c63deb9c2e3ceffce93dbf179d9ce18c16d88f3b6cd7138a8c8e","tests/ui/bad-version.stderr":"e9421586d59cb9135123bd97710655014f95cc5f55b0f9611e1d2e8ce9e29a5d","tests/ui/const-not-fn.rs":"10bbe38f0d89391fff0698756e4cfd4e72a41090360393a0c951b67df14d1c35","tests/ui/const-not-fn.stderr":"1180662fd3b8c4426d46923918a2e58dd9b6259f1a364469ae13d5fc3d69ce6c"},"package":"dc31bd9b61a32c31f9650d18add92aa83a49ba979c143eefd27fe7177b05bd5f"} \ No newline at end of file +{"files":{"Cargo.toml":"9c8ebdae8c4ca651ae8a15b4438668c74cb8e0bf6cd06b785e540f6117852d2a","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"9ba51325297bd22446d8cc89b60e10aaedc0a248ddaad9f12322e233032ac595","build/build.rs":"a5ac3f88a152167bdf624d18346b6db6459828bdbd1162a275fcde9c36e3ade6","build/rustc.rs":"0de80a0590facf36d76fa89c566789c774f5bfc3b787fe8d5b61f668deaed3f9","src/attr.rs":"9301cd4aff5a9648c057d5d8de9eb66921f0c3a715c51ada4459576bd49c8b19","src/bound.rs":"44bda74d3aacfeeeac9dae2f7eef3acc844d4c3c7eaa9d3e6288e5aeff269dff","src/constfn.rs":"613b8f53b21cc06b4f619fce9000993d3e7873b650701ca01cef1e53bed5b40a","src/date.rs":"454c749a60db8144a706a813e06fe3ae39c981920ba9832ef82f3f9debe1f052","src/error.rs":"cb37102f03ebbaca313d80f9714fe08dfef92fe956789ee87d93eb6121705f4f","src/expand.rs":"cfd1772b1af090532de1f318e1b61cc79c8004941a8c56a1a7f4962324b81c9d","src/expr.rs":"8e8ca76f4f5838436d9d7273f499c698bb41f6c15bc07d32ec5c1cb8bd3dd731","src/iter.rs":"8d4b817b9abc4e817105b673e15f29ef9bb8284a010ce01ac2d83387fe136947","src/lib.rs":"39d1d6b9c7837f15a5028d225d3538d33e6331e880b7844f7e3c1c0a2be0de06","src/release.rs":"abb8ddd877c39a023bf5e7bd67063d6e4144e79758a8bafa338167f9d15b89f1","src/time.rs":"bdd05a743b07a6bbfa0dbc9d4e415e051aba4a51a430c3be1e23447eae298c8b","src/token.rs":"824ce765f692db73afa02d3ebb0281c750748035efc98fa547be29d3072665ce","src/version.rs":"afdb048bba95bbb885945eba5527b6bf0eca0105642bfc304c2f82a8b7d556df","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/test_const.rs":"44d72ea92a81544692ccabe7e93f5d560d29828e79835e9f9839fbb40acc499a","tests/test_eval.rs":"6f0ee3f49c9a0d0c374a4d0e9a9dce753cd9fc2ca7725e000a435dbd5f4a9ce3","tests/test_parse.rs":"a9d262ea18109f792da719c29f3434a2f6a5e5723286385a099359795495b6fb","tests/ui/bad-bound.rs":"25bde278fcaabf62868417148a5e5f2006bf589d7ebd7bf6004fb8d78e47594f","tests/ui/bad-bound.stderr":"96b5549a312cd64d503c560026a6f0e97ac2173fe7c136a14425f19dcb5968e3","tests/ui/bad-date.rs":"6e23714dae8b6346fefe50dacd4abba3265248bbadfdd60c739138aa8a0037ba","tests/ui/bad-date.stderr":"3cc6d10572b80d397954737340d444c541d2c0e54e7d26495861d6189b6b2a55","tests/ui/bad-not.rs":"f003df8bd245e9dd8edc3a6d94078ee5162fac7a98db881271f0f5b6db98d45d","tests/ui/bad-not.stderr":"1aebb3121d067d432a32dd95ff380ceac15a0531c34f90cee950582558841c56","tests/ui/bad-version.rs":"f4ea2cd038e6c63deb9c2e3ceffce93dbf179d9ce18c16d88f3b6cd7138a8c8e","tests/ui/bad-version.stderr":"e9421586d59cb9135123bd97710655014f95cc5f55b0f9611e1d2e8ce9e29a5d","tests/ui/const-not-fn.rs":"10bbe38f0d89391fff0698756e4cfd4e72a41090360393a0c951b67df14d1c35","tests/ui/const-not-fn.stderr":"1180662fd3b8c4426d46923918a2e58dd9b6259f1a364469ae13d5fc3d69ce6c"},"package":"7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/rustversion/Cargo.toml temporalio-1.3.0/vendor/rustversion/Cargo.toml --- temporalio-1.3.0/vendor/rustversion/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustversion/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ edition = "2018" rust-version = "1.31" name = "rustversion" -version = "1.0.13" +version = "1.0.14" authors = ["David Tolnay "] build = "build/build.rs" description = "Conditional compilation according to rustc compiler version" @@ -28,6 +28,7 @@ repository = "https://github.com/dtolnay/rustversion" [package.metadata.docs.rs] +rustdoc-args = ["--generate-link-to-definition"] targets = ["x86_64-unknown-linux-gnu"] [lib] diff -Nru temporalio-1.3.0/vendor/rustversion/src/lib.rs temporalio-1.3.0/vendor/rustversion/src/lib.rs --- temporalio-1.3.0/vendor/rustversion/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/rustversion/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -145,7 +145,7 @@ //! //!
-#![doc(html_root_url = "https://docs.rs/rustversion/1.0.13")] +#![doc(html_root_url = "https://docs.rs/rustversion/1.0.14")] #![allow( clippy::cast_lossless, clippy::cast_possible_truncation, diff -Nru temporalio-1.3.0/vendor/ryu/.cargo-checksum.json temporalio-1.3.0/vendor/ryu/.cargo-checksum.json --- temporalio-1.3.0/vendor/ryu/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ryu/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.lock":"820c49881d8c6667809570b3c801f86b78c204460a4552031e6a169cffbcbda0","Cargo.toml":"419a6b0dc028bf0d76a4bf17f2f2f034e51fcff188405c9a06711d74668f7dc6","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-BOOST":"c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566","README.md":"df6a7a024b604ad98dd7603ad261150ef73a94a9de691bd5d2510e12a200021a","benches/bench.rs":"703521c8cb9c6959ee305776a9971d24754b6fff5c1737741be04f956a3692e8","examples/upstream_benchmark.rs":"f702d3598a8fac59134a8058ebf74ba90163b1f23ebbd6c5978a7bd8a888d357","src/buffer/mod.rs":"0db0bba7c39db07284592881e25bc1fdf5f40019376b0f83d37d706d849ffbdb","src/common.rs":"cae347e97fc30c50a964f80425e8c3e69ece2b8ab81f9b81b9baa7fcec64a001","src/d2s.rs":"83f821f17fd8d2cf72bcc47cc8c603ab24f2377db6cd0f08638031716f8dc17c","src/d2s_full_table.rs":"9b0186acbc6d65dc55c17e16125be707a2bfb920d22b35d33234b4cc38566a36","src/d2s_intrinsics.rs":"658d00a64ce2aca7f0780a1acc5939167e4a66d836b51c46de1047820992fec1","src/d2s_small_table.rs":"7b25cfbf0793d0662d83f5d92a9f880295652db9979b5acf702b313359996508","src/digit_table.rs":"02351ca54cb8cb3679f635115dd094f32fd91750e9f66103c1ee9ec3db507072","src/f2s.rs":"55320c2301680d8be3a908620cccd9d103b0cd3ad7a7d3378589e274ffc2587b","src/f2s_intrinsics.rs":"97bab98093838e30c60f5135f54f5ccb039ff7d9f35553ac8e74437743ca47e2","src/lib.rs":"d9db84c4c85a82cef7e9ca0589c8888bebb15c931ada8907e78d4a650622e90d","src/parse.rs":"7f8aa7e007caf5dcb03abdc4238157724bb742d0823a3b8a01646fa1f1129154","src/pretty/exponent.rs":"6c9aa1c707c567ae338647056e37557a94e5120781ee9f6f64e9c7071ffb50d0","src/pretty/mantissa.rs":"5e8d0a6bfdfd04e599a9fc8aefd638e3288651279e870e7cd44820717c3b6438","src/pretty/mod.rs":"731798246d414ca54df739c212f1cb8e05991a0472a7a1c28771e24d7a1cf09b","src/s2d.rs":"2f572603eedaa9efbe864105999a1ceac8aa4ff4e1d2fbd96127692460194d16","src/s2f.rs":"6ae7430fba61f59aa6010d446f5c1043974b6fadb8e4c75ce2ad56f73ee48f4a","tests/common_test.rs":"275184cf366f80c11e5f33c2d53065a073e20d81bf71ca70478c89e47fb8da36","tests/d2s_table_test.rs":"54b3a7d40aa9bec03e9dc555d15fb4512ee16a16398b3098a97819fab50c81f3","tests/d2s_test.rs":"39014777edd6e3231095186174c4ef341fd9c12ecc5510765761713b6cac3bb4","tests/exhaustive.rs":"f475ed9008a2cd86ce95abb577a4b01e9fed23fc16f7e217ccffb3b834005fa0","tests/f2s_test.rs":"10940f005e73a42bb106ff498e7a6cc4665d04d82829fef8dc7d0eb36f574e6f","tests/macros/mod.rs":"8e90a674b3960f9516cb38f4eea0e0981ff902c3b33572ebdb6c5528d3ffa72c","tests/s2d_test.rs":"75c3a1044881718db65e05f25c9f6e1d005392dddb2e8dafb799668bb6a9a5c3","tests/s2f_test.rs":"1ec06646cb65229bfe866ec913901a0d8d736668f30b812fc4b00136a43f5142"},"package":"fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9"} \ No newline at end of file +{"files":{"Cargo.lock":"d8c23cf47b22f0772a437e1512b0b945ffcef6436de5c09d7f6a4e07e0fc04de","Cargo.toml":"caa22411e1b41329adc79e850e5406dd1875b3fd73c8cb8053806ee314dd8eb4","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-BOOST":"c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566","README.md":"df6a7a024b604ad98dd7603ad261150ef73a94a9de691bd5d2510e12a200021a","benches/bench.rs":"703521c8cb9c6959ee305776a9971d24754b6fff5c1737741be04f956a3692e8","examples/upstream_benchmark.rs":"f702d3598a8fac59134a8058ebf74ba90163b1f23ebbd6c5978a7bd8a888d357","src/buffer/mod.rs":"0db0bba7c39db07284592881e25bc1fdf5f40019376b0f83d37d706d849ffbdb","src/common.rs":"cae347e97fc30c50a964f80425e8c3e69ece2b8ab81f9b81b9baa7fcec64a001","src/d2s.rs":"83f821f17fd8d2cf72bcc47cc8c603ab24f2377db6cd0f08638031716f8dc17c","src/d2s_full_table.rs":"9b0186acbc6d65dc55c17e16125be707a2bfb920d22b35d33234b4cc38566a36","src/d2s_intrinsics.rs":"658d00a64ce2aca7f0780a1acc5939167e4a66d836b51c46de1047820992fec1","src/d2s_small_table.rs":"7b25cfbf0793d0662d83f5d92a9f880295652db9979b5acf702b313359996508","src/digit_table.rs":"02351ca54cb8cb3679f635115dd094f32fd91750e9f66103c1ee9ec3db507072","src/f2s.rs":"55320c2301680d8be3a908620cccd9d103b0cd3ad7a7d3378589e274ffc2587b","src/f2s_intrinsics.rs":"97bab98093838e30c60f5135f54f5ccb039ff7d9f35553ac8e74437743ca47e2","src/lib.rs":"8e47233142880b9dd60b4d518a5a0b2393e69d48f723346884279c7b59bbd0e1","src/parse.rs":"7f8aa7e007caf5dcb03abdc4238157724bb742d0823a3b8a01646fa1f1129154","src/pretty/exponent.rs":"6c9aa1c707c567ae338647056e37557a94e5120781ee9f6f64e9c7071ffb50d0","src/pretty/mantissa.rs":"5e8d0a6bfdfd04e599a9fc8aefd638e3288651279e870e7cd44820717c3b6438","src/pretty/mod.rs":"731798246d414ca54df739c212f1cb8e05991a0472a7a1c28771e24d7a1cf09b","src/s2d.rs":"2f572603eedaa9efbe864105999a1ceac8aa4ff4e1d2fbd96127692460194d16","src/s2f.rs":"6ae7430fba61f59aa6010d446f5c1043974b6fadb8e4c75ce2ad56f73ee48f4a","tests/common_test.rs":"275184cf366f80c11e5f33c2d53065a073e20d81bf71ca70478c89e47fb8da36","tests/d2s_table_test.rs":"54b3a7d40aa9bec03e9dc555d15fb4512ee16a16398b3098a97819fab50c81f3","tests/d2s_test.rs":"39014777edd6e3231095186174c4ef341fd9c12ecc5510765761713b6cac3bb4","tests/exhaustive.rs":"f475ed9008a2cd86ce95abb577a4b01e9fed23fc16f7e217ccffb3b834005fa0","tests/f2s_test.rs":"10940f005e73a42bb106ff498e7a6cc4665d04d82829fef8dc7d0eb36f574e6f","tests/macros/mod.rs":"8e90a674b3960f9516cb38f4eea0e0981ff902c3b33572ebdb6c5528d3ffa72c","tests/s2d_test.rs":"75c3a1044881718db65e05f25c9f6e1d005392dddb2e8dafb799668bb6a9a5c3","tests/s2f_test.rs":"1ec06646cb65229bfe866ec913901a0d8d736668f30b812fc4b00136a43f5142"},"package":"1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/ryu/Cargo.lock temporalio-1.3.0/vendor/ryu/Cargo.lock --- temporalio-1.3.0/vendor/ryu/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ryu/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -21,9 +21,9 @@ [[package]] name = "hermit-abi" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" [[package]] name = "libc" @@ -33,9 +33,9 @@ [[package]] name = "no-panic" -version = "0.1.23" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a10f40e1ad2a8330c9a69e6fcbc2ddd9727a4548510811b2fa4d29b845bc156" +checksum = "8161c7068adae143e7ff96fd09f0835b5cdf55fdf3ba3f5933bfc3ff557119f2" dependencies = [ "proc-macro2", "quote", @@ -60,18 +60,18 @@ [[package]] name = "proc-macro2" -version = "1.0.63" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +checksum = "92de25114670a878b1261c79c9f8f729fb97e95bac93f6312f583c60dd6a1dfe" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.29" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" +checksum = "5907a1b7c277254a8b15170f6e7c97cfa60ee7872a3217663bb81151e48184bb" dependencies = [ "proc-macro2", ] @@ -117,7 +117,7 @@ [[package]] name = "ryu" -version = "1.0.14" +version = "1.0.15" dependencies = [ "no-panic", "num_cpus", @@ -127,9 +127,9 @@ [[package]] name = "syn" -version = "2.0.23" +version = "2.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737" +checksum = "45c3457aacde3c65315de5031ec191ce46604304d2446e803d71ade03308d970" dependencies = [ "proc-macro2", "quote", @@ -138,9 +138,9 @@ [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "wasi" diff -Nru temporalio-1.3.0/vendor/ryu/Cargo.toml temporalio-1.3.0/vendor/ryu/Cargo.toml --- temporalio-1.3.0/vendor/ryu/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ryu/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ edition = "2018" rust-version = "1.36" name = "ryu" -version = "1.0.14" +version = "1.0.15" authors = ["David Tolnay "] exclude = [ "performance.png", @@ -32,6 +32,7 @@ repository = "https://github.com/dtolnay/ryu" [package.metadata.docs.rs] +rustdoc-args = ["--generate-link-to-definition"] targets = ["x86_64-unknown-linux-gnu"] [lib] diff -Nru temporalio-1.3.0/vendor/ryu/src/lib.rs temporalio-1.3.0/vendor/ryu/src/lib.rs --- temporalio-1.3.0/vendor/ryu/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/ryu/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -81,7 +81,7 @@ //! notation. #![no_std] -#![doc(html_root_url = "https://docs.rs/ryu/1.0.14")] +#![doc(html_root_url = "https://docs.rs/ryu/1.0.15")] #![allow( clippy::cast_lossless, clippy::cast_possible_truncation, diff -Nru temporalio-1.3.0/vendor/scopeguard/.cargo-checksum.json temporalio-1.3.0/vendor/scopeguard/.cargo-checksum.json --- temporalio-1.3.0/vendor/scopeguard/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/scopeguard/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.lock":"6fdc13a4ac088ef8f084acdd4b60829c154e4064516d0bb9729e05fa521a756b","Cargo.toml":"9e3bdbf6b410b9d82c84d60249a4e3ee7dc9a95e2ee41221da2fbd627214b030","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"fb77f0a9c53e473abe5103c8632ef9f0f2874d4fb3f17cb2d8c661aab9cee9d7","README.rst":"67d8fa211a9c7d4b856ebcf822318ae5ae0192f3bd141d8b608677010ea7842f","examples/readme.rs":"d00fe19aecd7ca1632bcf176306f7a13ed8fdefa890761aa2c532f8c97532a33","src/lib.rs":"29a60ae468881edbdebc30e8f4c87101ede6e7e669482419b1c52a35e4c7f5ed"},"package":"d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"} \ No newline at end of file +{"files":{"Cargo.lock":"684e99cc5938e7e51e1c5808214f9125ccfe66efa6ca5392303a7ee5337e1294","Cargo.toml":"68899251551903e2e1ba03c927f12e4c19fc8a15e8bd3756610f53f5ec075b48","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"fb77f0a9c53e473abe5103c8632ef9f0f2874d4fb3f17cb2d8c661aab9cee9d7","README.md":"68d5a7beebf814cffaaf6fe5758984fd06554b3bb5a49b2e13fc101522909b91","examples/readme.rs":"c6b1b458a130e091b1465040184759f1cc7d4e8de8d9cb893def0107238c2964","src/lib.rs":"3fb8bba1227724954c01cf98ec984bcf49ee74624faa74eb1bcea9018682751c"},"package":"94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/scopeguard/Cargo.lock temporalio-1.3.0/vendor/scopeguard/Cargo.lock --- temporalio-1.3.0/vendor/scopeguard/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/scopeguard/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,7 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" diff -Nru temporalio-1.3.0/vendor/scopeguard/Cargo.toml temporalio-1.3.0/vendor/scopeguard/Cargo.toml --- temporalio-1.3.0/vendor/scopeguard/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/scopeguard/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -3,23 +3,38 @@ # 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 +# to registry (e.g., crates.io) dependencies. # -# If you believe there's an error in this file please file an -# issue against the rust-lang/cargo repository. If you're -# editing this file be aware that the upstream Cargo.toml -# will likely look very different (and much more reasonable) +# 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] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" authors = ["bluss"] -description = "A RAII scope guard that will run a given closure when it goes out of scope,\neven if the code between panics (assuming unwinding panic).\n\nDefines the macros `defer!`, `defer_on_unwind!`, `defer_on_success!` as\nshorthands for guards with one of the implemented strategies.\n" +description = """ +A RAII scope guard that will run a given closure when it goes out of scope, +even if the code between panics (assuming unwinding panic). + +Defines the macros `defer!`, `defer_on_unwind!`, `defer_on_success!` as +shorthands for guards with one of the implemented strategies. +""" documentation = "https://docs.rs/scopeguard/" -keywords = ["scope-guard", "defer", "panic", "unwind"] -categories = ["rust-patterns", "no-std"] -license = "MIT/Apache-2.0" +readme = "README.md" +keywords = [ + "scope-guard", + "defer", + "panic", + "unwind", +] +categories = [ + "rust-patterns", + "no-std", +] +license = "MIT OR Apache-2.0" repository = "https://github.com/bluss/scopeguard" + [package.metadata.release] no-dev-version = true diff -Nru temporalio-1.3.0/vendor/scopeguard/examples/readme.rs temporalio-1.3.0/vendor/scopeguard/examples/readme.rs --- temporalio-1.3.0/vendor/scopeguard/examples/readme.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/scopeguard/examples/readme.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,12 @@ - -#[macro_use(defer)] extern crate scopeguard; +#[macro_use(defer)] +extern crate scopeguard; use scopeguard::guard; fn f() { - defer!(println!("Called at return or panic")); + defer! { + println!("Called at return or panic"); + } panic!(); } @@ -17,7 +19,7 @@ // write file at return or panic let _ = f.sync_all(); }); - // Access the file through the scope guard itself + // access the file through the scope guard itself file.write_all(b"test me\n").unwrap(); } diff -Nru temporalio-1.3.0/vendor/scopeguard/README.md temporalio-1.3.0/vendor/scopeguard/README.md --- temporalio-1.3.0/vendor/scopeguard/README.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/scopeguard/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,102 @@ +# scopeguard + +Rust crate for a convenient RAII scope guard that will run a given closure when +it goes out of scope, even if the code between panics (assuming unwinding panic). + +The `defer!` macro and `guard` are `no_std` compatible (require only `core`), +but the on unwinding / not on unwinding strategies require linking to `std`. +By default, the `use_std` crate feature is enabled. Disable the default features +for `no_std` support. + +Please read the [API documentation here](https://docs.rs/scopeguard/). + +Minimum supported Rust version: 1.20 + +[![build_status](https://github.com/bluss/scopeguard/actions/workflows/ci.yaml/badge.svg)](https://github.com/bluss/scopeguard/actions/workflows/ci.yaml) +[![crates](https://img.shields.io/crates/v/scopeguard.svg)](https://crates.io/crates/scopeguard) + +## How to use + +```rs +#[macro_use(defer)] +extern crate scopeguard; + +use scopeguard::guard; + +fn f() { + defer! { + println!("Called at return or panic"); + } + panic!(); +} + +use std::fs::File; +use std::io::Write; + +fn g() { + let f = File::create("newfile.txt").unwrap(); + let mut file = guard(f, |f| { + // write file at return or panic + let _ = f.sync_all(); + }); + // access the file through the scope guard itself + file.write_all(b"test me\n").unwrap(); +} +``` + +## Recent Changes + +- 1.2.0 + + - Use ManuallyDrop instead of mem::forget in into_inner. (by @willtunnels) + - Warn if the guard is not assigned to a variable and is dropped immediately + instead of at the scope's end. (by @sergey-v-galtsev) + +- 1.1.0 + + - Change macros (`defer!`, `defer_on_success!` and `defer_on_unwind!`) + to accept statements. (by @konsumlamm) + +- 1.0.0 + + - Change the closure type from `FnMut(&mut T)` to `FnOnce(T)`: + Passing the inner value by value instead of a mutable reference is a + breaking change, but allows the guard closure to consume it. (by @tormol) + + - Add `defer_on_success!`, `guard_on_success()` and `OnSuccess` + strategy, which triggers when scope is exited *without* panic. It's the + opposite to `defer_on_unwind!` / `guard_on_unwind()` / `OnUnwind`. + + - Add `ScopeGuard::into_inner()`, which "defuses" the guard and returns the + guarded value. (by @tormol) + + - Implement `Sync` for guards with non-`Sync` closures. + + - Require Rust 1.20 + +- 0.3.3 + + - Use `#[inline]` on a few more functions by @stjepang (#14) + - Add examples to crate documentation + +- 0.3.2 + + - Add crate categories + +- 0.3.1 + + - Add `defer_on_unwind!`, `Strategy` trait + - Rename `Guard` → `ScopeGuard` + - Add `ScopeGuard::with_strategy`. + - `ScopeGuard` now implements `Debug`. + - Require Rust 1.11 + +- 0.2.0 + + - Require Rust 1.6 + - Use `no_std` unconditionally + - No other changes + +- 0.1.2 + + - Add macro `defer!` diff -Nru temporalio-1.3.0/vendor/scopeguard/README.rst temporalio-1.3.0/vendor/scopeguard/README.rst --- temporalio-1.3.0/vendor/scopeguard/README.rst 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/scopeguard/README.rst 1970-01-01 00:00:00.000000000 +0000 @@ -1,103 +0,0 @@ - -scopeguard -========== - -Rust crate for a convenient RAII scope guard that will run a given closure when -it goes out of scope, even if the code between panics (assuming unwinding panic). - -The `defer!` macro and `guard` are `no_std` compatible (require only core), -but the on unwinding / not on uwinding strategies requires linking to `std`. - -Requires Rust 1.20. - - -Please read the `API documentation here`__ - -__ https://docs.rs/scopeguard/ - -|build_status|_ |crates|_ - -.. |build_status| image:: https://travis-ci.org/bluss/scopeguard.svg -.. _build_status: https://travis-ci.org/bluss/scopeguard - -.. |crates| image:: http://meritbadge.herokuapp.com/scopeguard -.. _crates: https://crates.io/crates/scopeguard - -How to use ----------- - -.. code:: rust - - #[macro_use(defer)] extern crate scopeguard; - - use scopeguard::guard; - - fn f() { - defer!(println!("Called at return or panic")); - panic!(); - } - - use std::fs::File; - use std::io::Write; - - fn g() { - let f = File::create("newfile.txt").unwrap(); - let mut file = guard(f, |f| { - // write file at return or panic - let _ = f.sync_all(); - }); - // Access the file through the scope guard itself - file.write_all(b"test me\n").unwrap(); - } - -Recent Changes --------------- - -- 1.1.0 - - - Change macros (``defer!``, ``defer_on_success!`` and ``defer_on_unwind!``) - to accept statements. (by @konsumlamm) - -- 1.0.0 - - - Change the closure type from ``FnMut(&mut T)`` to ``FnOnce(T)``: - Passing the inner value by value instead of a mutable reference is a - breaking change, but allows the guard closure to consume it. (by @tormol) - - - Add ``defer_on_success!{}``, ``guard_on_success()`` and ``OnSuccess`` - strategy, which triggers when scope is exited *without* panic. It's the - opposite to ``OnUnwind`` / ``guard_on_unwind()`` / ``defer_on_unwind!{}``. - - - Add ``ScopeGuard::into_inner()``, which "defuses" the guard and returns the - guarded value. (by @tormol) - - - Implement ``Sync`` for guards with non-``Sync`` closures. - - - Require Rust 1.20 - -- 0.3.3 - - - Use ``#[inline]`` on a few more functions by @stjepang (#14) - - Add examples to crate documentation - -- 0.3.2 - - - Add crate categories - -- 0.3.1 - - - Add ``defer_on_unwind!``, ``Strategy`` trait - - Rename ``Guard`` → ``ScopeGuard`` - - Add ``ScopeGuard::with_strategy``. - - ``ScopeGuard`` now implements ``Debug``. - - Require Rust 1.11 - -- 0.2.0 - - - Require Rust 1.6 - - Use `no_std` unconditionally - - No other changes - -- 0.1.2 - - - Add macro ``defer!()`` diff -Nru temporalio-1.3.0/vendor/scopeguard/src/lib.rs temporalio-1.3.0/vendor/scopeguard/src/lib.rs --- temporalio-1.3.0/vendor/scopeguard/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/scopeguard/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -153,7 +153,7 @@ //! if *hole_guard.value >= hole_guard.v[i] { //! // move the element back and the hole forward //! let index = hole_guard.index; -//! ptr::copy_nonoverlapping(&hole_guard.v[index + 1], &mut hole_guard.v[index], 1); +//! hole_guard.v.swap(index, index + 1); //! hole_guard.index += 1; //! } else { //! break; @@ -193,7 +193,7 @@ use std::fmt; use std::marker::PhantomData; -use std::mem::{self, ManuallyDrop}; +use std::mem::ManuallyDrop; use std::ops::{Deref, DerefMut}; use std::ptr; @@ -228,19 +228,25 @@ impl Strategy for Always { #[inline(always)] - fn should_run() -> bool { true } + fn should_run() -> bool { + true + } } #[cfg(feature = "use_std")] impl Strategy for OnUnwind { #[inline] - fn should_run() -> bool { std::thread::panicking() } + fn should_run() -> bool { + std::thread::panicking() + } } #[cfg(feature = "use_std")] impl Strategy for OnSuccess { #[inline] - fn should_run() -> bool { !std::thread::panicking() } + fn should_run() -> bool { + !std::thread::panicking() + } } /// Macro to create a `ScopeGuard` (always run). @@ -296,8 +302,9 @@ /// /// The `ScopeGuard` implements `Deref` so that you can access the inner value. pub struct ScopeGuard - where F: FnOnce(T), - S: Strategy, +where + F: FnOnce(T), + S: Strategy, { value: ManuallyDrop, dropfn: ManuallyDrop, @@ -306,14 +313,16 @@ } impl ScopeGuard - where F: FnOnce(T), - S: Strategy, +where + F: FnOnce(T), + S: Strategy, { /// Create a `ScopeGuard` that owns `v` (accessible through deref) and calls /// `dropfn` when its destructor runs. /// /// The `Strategy` decides whether the scope guard's closure should run. #[inline] + #[must_use] pub fn with_strategy(v: T, dropfn: F) -> ScopeGuard { ScopeGuard { value: ManuallyDrop::new(v), @@ -334,7 +343,7 @@ /// fn main() { /// let mut guard = guard(Vec::new(), |mut v| v.clear()); /// guard.push(1); - /// + /// /// if conditional() { /// // a condition maybe makes us decide to /// // “defuse†the guard and get back its inner parts @@ -346,26 +355,26 @@ /// ``` #[inline] pub fn into_inner(guard: Self) -> T { - // Cannot move out of Drop-implementing types, so - // ptr::read the value and forget the guard. + // Cannot move out of `Drop`-implementing types, + // so `ptr::read` the value and forget the guard. + let mut guard = ManuallyDrop::new(guard); unsafe { let value = ptr::read(&*guard.value); - // read the closure so that it is dropped, and assign it to a local - // variable to ensure that it is only dropped after the guard has - // been forgotten. (In case the Drop impl of the closure, or that - // of any consumed captured variable, panics). - let _dropfn = ptr::read(&*guard.dropfn); - mem::forget(guard); + // Drop the closure after `value` has been read, so that if the + // closure's `drop` function panics, unwinding still tries to drop + // `value`. + ManuallyDrop::drop(&mut guard.dropfn); value } } } - /// Create a new `ScopeGuard` owning `v` and with deferred closure `dropfn`. #[inline] +#[must_use] pub fn guard(v: T, dropfn: F) -> ScopeGuard - where F: FnOnce(T) +where + F: FnOnce(T), { ScopeGuard::with_strategy(v, dropfn) } @@ -375,8 +384,10 @@ /// Requires crate feature `use_std`. #[cfg(feature = "use_std")] #[inline] +#[must_use] pub fn guard_on_success(v: T, dropfn: F) -> ScopeGuard - where F: FnOnce(T) +where + F: FnOnce(T), { ScopeGuard::with_strategy(v, dropfn) } @@ -410,8 +421,10 @@ /// ``` #[cfg(feature = "use_std")] #[inline] +#[must_use] pub fn guard_on_unwind(v: T, dropfn: F) -> ScopeGuard - where F: FnOnce(T) +where + F: FnOnce(T), { ScopeGuard::with_strategy(v, dropfn) } @@ -420,14 +433,17 @@ // not accessible from references. // The guard does not store any instance of S, so it is also irrelevant. unsafe impl Sync for ScopeGuard - where T: Sync, - F: FnOnce(T), - S: Strategy -{} +where + T: Sync, + F: FnOnce(T), + S: Strategy, +{ +} impl Deref for ScopeGuard - where F: FnOnce(T), - S: Strategy +where + F: FnOnce(T), + S: Strategy, { type Target = T; @@ -437,8 +453,9 @@ } impl DerefMut for ScopeGuard - where F: FnOnce(T), - S: Strategy +where + F: FnOnce(T), + S: Strategy, { fn deref_mut(&mut self) -> &mut T { &mut *self.value @@ -446,15 +463,14 @@ } impl Drop for ScopeGuard - where F: FnOnce(T), - S: Strategy +where + F: FnOnce(T), + S: Strategy, { fn drop(&mut self) { // This is OK because the fields are `ManuallyDrop`s // which will not be dropped by the compiler. - let (value, dropfn) = unsafe { - (ptr::read(&*self.value), ptr::read(&*self.dropfn)) - }; + let (value, dropfn) = unsafe { (ptr::read(&*self.value), ptr::read(&*self.dropfn)) }; if S::should_run() { dropfn(value); } @@ -462,14 +478,15 @@ } impl fmt::Debug for ScopeGuard - where T: fmt::Debug, - F: FnOnce(T), - S: Strategy +where + T: fmt::Debug, + F: FnOnce(T), + S: Strategy, { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { f.debug_struct(stringify!(ScopeGuard)) - .field("value", &*self.value) - .finish() + .field("value", &*self.value) + .finish() } } diff -Nru temporalio-1.3.0/vendor/sct/.cargo-checksum.json temporalio-1.3.0/vendor/sct/.cargo-checksum.json --- temporalio-1.3.0/vendor/sct/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/sct/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"1319ae0c304b1fddc3f5fbfe3f8e241aebe5003cfceab0dbcccaf6a62f3f9e14","LICENSE":"772e36c6caff6d6027363b043cd3e8fdcba69301b65291301e7d9f0cbff0d5fe","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-ISC":"7cfafc877eccc46c0e346ccbaa5c51bb6b894d2b818e617d970211e232785ad4","LICENSE-MIT":"709e3175b4212f7b13aa93971c9f62ff8c69ec45ad8c6532a7e0c41d7a7d6f8c","README.md":"a67f8228c0f5ee2c56694273f60f13c102337c2683ebde5f31c5c21820893d25","src/lib.rs":"879f484d3fc261c22cf22392d8eefbf9580e5d5ba77a5294af04ffe5a98a7e76","src/testdata/ecdsa-prime256v1-pub.raw":"131348429e0270f386de35047a6f245ba4e6bd4105ade208154714b89911b152","src/testdata/ecdsa-secp384r1-pub.raw":"5131ec8635d9b66380c547a885b9892c66ad1df9964b3e392ce8ad28338d7ddc","src/testdata/ecdsa_p256-badsigalg-sct.bin":"1d08960afb1b5e69bf7c4fa9dd7151adf59f939c8e2192453b3dae2d7e1a7eaf","src/testdata/ecdsa_p256-basic-sct.bin":"5622a0f32d487f113c57aa9900df5ae43af3467c81c297f014593ae0d18e9a40","src/testdata/ecdsa_p256-future-sct.bin":"424bd3c4131cc9205763fe03cb4ebc5e88c11c8ac4731de41606f40dbba7db4a","src/testdata/ecdsa_p256-junk-sct.bin":"c40c2c4af1b61a5b4ee2f5e0b2a0974dae6b7809de9ffb03bfe734eb6f430567","src/testdata/ecdsa_p256-short-sct.bin":"68d58fb1e8e375343f838bcd648983eff1dd9b74ee426efd34a1f1b562ca5d68","src/testdata/ecdsa_p256-version-sct.bin":"4a686ed407a3b3966622677e88b711e427b1959bcfff46604a0e2c05ea94ccfb","src/testdata/ecdsa_p256-wrongcert-sct.bin":"15f1e648c02d32b94e164f3fd1ddcbc8676577f4f61de614019cb4c8291bc9c7","src/testdata/ecdsa_p256-wrongext-sct.bin":"51fdfca6f446a2a8a444ce351914ab085cd40562c2dc2fc9a3af6c9f8f831342","src/testdata/ecdsa_p256-wrongid-sct.bin":"7767ac0198be4a544442b7c6979991a9e7b8e2c240dbda322fc92f1dfccbbfbf","src/testdata/ecdsa_p256-wrongtime-sct.bin":"5af276305d2e8d2c12ead37ec70d8e66937fbd867690bf108cb7fd5593ebf609","src/testdata/ecdsa_p384-basic-sct.bin":"25b6a065ca18f9b55099293868c7dac8eeea1dcc227ebfdca1c66c513c479a69","src/testdata/ecdsa_p384-wrongcert-sct.bin":"9b34f7d28a09b0531e1c10c1bfc213747be264e669d6e22ffac8d15af5b6937b","src/testdata/ecdsa_p384-wrongtime-sct.bin":"d37d251205d0a0af87374088b13f939427b8f25dabdf74c8e8839533d799b0bc","src/testdata/google-cert.bin":"6269b0cde1ea3bd92bd9ec8c11b1a15ffe16bcbc3bc78c05288cb1327330c5a0","src/testdata/google-pilot-pubkey.bin":"ffe0eefe8bc2a1b4e90313d692b4613eedfccc82126ec96bd39ad487833bc89b","src/testdata/google-sct0.bin":"f830623e8e0fa8f06058f74d5da4f4ce4ae9abd5dad55ab9574db2b737b26dbe","src/testdata/google-sct1.bin":"48fcb4282bb82a56225b38b8141cafc2e8ed1cf4773093d898e3c608590f3681","src/testdata/rsa-2048-pub.raw":"5cc12e8103427cbb8690f3b5fbda4c774116a418cf70025173225c1656ee00ac","src/testdata/rsa-3072-pub.raw":"e27b0411f1bd6ccca8e820e2fe5f4b6585aaf3933158ccdc76edd36f11976a54","src/testdata/rsa-4096-pub.raw":"4c810aa608d9391dd3d9fef50d2343ca224cd464735012a55c7d205e1a9bb831","src/testdata/rsa2048-basic-sct.bin":"36ca82b0de91997144f03d9dedaacc8ec2ec414f5a2815e5968f59c5def4c16a","src/testdata/rsa2048-wrongcert-sct.bin":"db17d73cdd0a6b4e9f7b54eaf830dc36cfef0d68b55dfd85c3a0e5cfc5d330b2","src/testdata/rsa2048-wrongtime-sct.bin":"777f6a9f4530d9207829eaed11474127671b740c0ba95830b28c9fd3f3e69b4d","src/testdata/rsa3072-basic-sct.bin":"fe95072b279dd7f4137dbb91e68d246fa79bef12f15daa4cf7e497f3cf87a4b9","src/testdata/rsa3072-wrongcert-sct.bin":"9167c4a9e707e96f580b036671cd7f6a72dd5e03c6b808673668ff72bbf560aa","src/testdata/rsa3072-wrongtime-sct.bin":"489d67cbc67e06f3b4e93f71d1b8841990392b64362f7ec567f63a8bc20aff63","src/testdata/rsa4096-basic-sct.bin":"79e5181e52e11a3dda3af03516248e840cb2399b2bf9fd70ce64d1c812ea044e","src/testdata/rsa4096-wrongcert-sct.bin":"117cccc126f9c500b88cbd0071c0515dbd32ab636a341a59ce259cc9ed8d4bf8","src/testdata/rsa4096-wrongtime-sct.bin":"d67ad170b4b97d199a6c6e00a52746e833dea01c8c1790c4546e9c1ea65abe97","src/testdata/symantec-log-pubkey.bin":"42e0a50847d062d8567f209e515dcb419815702ac90d0793f80228505803804a","src/tests.rs":"54f9ea975cbd2e18563ebd1d7c113b02ecf3c0b606a0e8395eaa8a12b98e80b3","src/tests_generated.rs":"a0a2605cbee855bcf1e02403a676fb9b2e33f2215b284f3b8d0967c560af327f","src/tests_google.rs":"1df0397ca6332ef30ce473191931a7c5c366eab6a1358b401ec82852ea4f6929","test/ecdsa-prime256v1-priv.pem":"ed34408479bd65a16c9b3b76ccc75bd9ab7c547984f976a39fb03e5f07d16a1c","test/ecdsa-prime256v1-pub.pem":"e47f3536a21abd35c945a65782a713d0b0248f2e7b038caa15614b2e8dd6582c","test/ecdsa-secp384r1-priv.pem":"bb00ef427c0920b55619071f2aaf411a3e63a69ad6a9d4e9f68caa5f7216376d","test/ecdsa-secp384r1-pub.pem":"4575d5f2bc5de4bff40f56f8ceaf2e3905a063326033ea0a94da2ddad6de3909","test/mktest.py":"553b56f3638208992b662547da0e7311fc842939c985396af1619fca1e7d8c1c","test/rsa-2048-priv.pem":"f52243b2d25127402a60a94d7cfc68a77308b9515d0b22481f6bae33740b1719","test/rsa-2048-pub.pem":"454e97e72fa2db6617d317a1401a7f54bc067c987242eeb44f6ffd26ee9c0f0b","test/rsa-3072-priv.pem":"015cb61466cc230c4ffb0c001ab607b7f240048117e3e377353462c8ba3dc56d","test/rsa-3072-pub.pem":"6917111121dc288d8bf1255a9af75596048ecce4fafe4a6709b37272473923fb","test/rsa-4096-priv.pem":"062de346569fe6c0a5d8eb5e88d21c58b7d999acf96876fcfaa7dd5ba4774c8c","test/rsa-4096-pub.pem":"476f306edefdb22d95cdb70babae39219d3e95940cfdc97fcbc7fc2c62fcab36"},"package":"d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4"} \ No newline at end of file +{"files":{"Cargo.toml":"fbfeb0685f6efe5cf6afba8ad555ed3385ebc1982ad16fbb83a56d28fd991ac1","LICENSE":"772e36c6caff6d6027363b043cd3e8fdcba69301b65291301e7d9f0cbff0d5fe","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-ISC":"7cfafc877eccc46c0e346ccbaa5c51bb6b894d2b818e617d970211e232785ad4","LICENSE-MIT":"709e3175b4212f7b13aa93971c9f62ff8c69ec45ad8c6532a7e0c41d7a7d6f8c","README.md":"7ca96c6dd095a714ce15b2e5e46d6a1158965e7936332f4dc5ad676f1da5625f","src/lib.rs":"ef5ab98225ba3b617e39bbd891a6a5b34d46cda5f2f063d4dcfe6a8ce71208b9","src/testdata/ecdsa-prime256v1-pub.raw":"131348429e0270f386de35047a6f245ba4e6bd4105ade208154714b89911b152","src/testdata/ecdsa-secp384r1-pub.raw":"5131ec8635d9b66380c547a885b9892c66ad1df9964b3e392ce8ad28338d7ddc","src/testdata/ecdsa_p256-badsigalg-sct.bin":"1d08960afb1b5e69bf7c4fa9dd7151adf59f939c8e2192453b3dae2d7e1a7eaf","src/testdata/ecdsa_p256-basic-sct.bin":"5622a0f32d487f113c57aa9900df5ae43af3467c81c297f014593ae0d18e9a40","src/testdata/ecdsa_p256-future-sct.bin":"424bd3c4131cc9205763fe03cb4ebc5e88c11c8ac4731de41606f40dbba7db4a","src/testdata/ecdsa_p256-junk-sct.bin":"c40c2c4af1b61a5b4ee2f5e0b2a0974dae6b7809de9ffb03bfe734eb6f430567","src/testdata/ecdsa_p256-short-sct.bin":"68d58fb1e8e375343f838bcd648983eff1dd9b74ee426efd34a1f1b562ca5d68","src/testdata/ecdsa_p256-version-sct.bin":"4a686ed407a3b3966622677e88b711e427b1959bcfff46604a0e2c05ea94ccfb","src/testdata/ecdsa_p256-wrongcert-sct.bin":"15f1e648c02d32b94e164f3fd1ddcbc8676577f4f61de614019cb4c8291bc9c7","src/testdata/ecdsa_p256-wrongext-sct.bin":"51fdfca6f446a2a8a444ce351914ab085cd40562c2dc2fc9a3af6c9f8f831342","src/testdata/ecdsa_p256-wrongid-sct.bin":"7767ac0198be4a544442b7c6979991a9e7b8e2c240dbda322fc92f1dfccbbfbf","src/testdata/ecdsa_p256-wrongtime-sct.bin":"5af276305d2e8d2c12ead37ec70d8e66937fbd867690bf108cb7fd5593ebf609","src/testdata/ecdsa_p384-basic-sct.bin":"25b6a065ca18f9b55099293868c7dac8eeea1dcc227ebfdca1c66c513c479a69","src/testdata/ecdsa_p384-wrongcert-sct.bin":"9b34f7d28a09b0531e1c10c1bfc213747be264e669d6e22ffac8d15af5b6937b","src/testdata/ecdsa_p384-wrongtime-sct.bin":"d37d251205d0a0af87374088b13f939427b8f25dabdf74c8e8839533d799b0bc","src/testdata/google-cert.bin":"6269b0cde1ea3bd92bd9ec8c11b1a15ffe16bcbc3bc78c05288cb1327330c5a0","src/testdata/google-pilot-pubkey.bin":"ffe0eefe8bc2a1b4e90313d692b4613eedfccc82126ec96bd39ad487833bc89b","src/testdata/google-sct0.bin":"f830623e8e0fa8f06058f74d5da4f4ce4ae9abd5dad55ab9574db2b737b26dbe","src/testdata/google-sct1.bin":"48fcb4282bb82a56225b38b8141cafc2e8ed1cf4773093d898e3c608590f3681","src/testdata/rsa-2048-pub.raw":"5cc12e8103427cbb8690f3b5fbda4c774116a418cf70025173225c1656ee00ac","src/testdata/rsa-3072-pub.raw":"e27b0411f1bd6ccca8e820e2fe5f4b6585aaf3933158ccdc76edd36f11976a54","src/testdata/rsa-4096-pub.raw":"4c810aa608d9391dd3d9fef50d2343ca224cd464735012a55c7d205e1a9bb831","src/testdata/rsa2048-basic-sct.bin":"36ca82b0de91997144f03d9dedaacc8ec2ec414f5a2815e5968f59c5def4c16a","src/testdata/rsa2048-wrongcert-sct.bin":"db17d73cdd0a6b4e9f7b54eaf830dc36cfef0d68b55dfd85c3a0e5cfc5d330b2","src/testdata/rsa2048-wrongtime-sct.bin":"777f6a9f4530d9207829eaed11474127671b740c0ba95830b28c9fd3f3e69b4d","src/testdata/rsa3072-basic-sct.bin":"fe95072b279dd7f4137dbb91e68d246fa79bef12f15daa4cf7e497f3cf87a4b9","src/testdata/rsa3072-wrongcert-sct.bin":"9167c4a9e707e96f580b036671cd7f6a72dd5e03c6b808673668ff72bbf560aa","src/testdata/rsa3072-wrongtime-sct.bin":"489d67cbc67e06f3b4e93f71d1b8841990392b64362f7ec567f63a8bc20aff63","src/testdata/rsa4096-basic-sct.bin":"79e5181e52e11a3dda3af03516248e840cb2399b2bf9fd70ce64d1c812ea044e","src/testdata/rsa4096-wrongcert-sct.bin":"117cccc126f9c500b88cbd0071c0515dbd32ab636a341a59ce259cc9ed8d4bf8","src/testdata/rsa4096-wrongtime-sct.bin":"d67ad170b4b97d199a6c6e00a52746e833dea01c8c1790c4546e9c1ea65abe97","src/testdata/symantec-log-pubkey.bin":"42e0a50847d062d8567f209e515dcb419815702ac90d0793f80228505803804a","src/tests.rs":"553c2b966c018d67ff34072d352a54cc0865927dbe583e2141358de42316d34b","src/tests_generated.rs":"a0a2605cbee855bcf1e02403a676fb9b2e33f2215b284f3b8d0967c560af327f","src/tests_google.rs":"1df0397ca6332ef30ce473191931a7c5c366eab6a1358b401ec82852ea4f6929","test/ecdsa-prime256v1-priv.pem":"ed34408479bd65a16c9b3b76ccc75bd9ab7c547984f976a39fb03e5f07d16a1c","test/ecdsa-prime256v1-pub.pem":"e47f3536a21abd35c945a65782a713d0b0248f2e7b038caa15614b2e8dd6582c","test/ecdsa-secp384r1-priv.pem":"bb00ef427c0920b55619071f2aaf411a3e63a69ad6a9d4e9f68caa5f7216376d","test/ecdsa-secp384r1-pub.pem":"4575d5f2bc5de4bff40f56f8ceaf2e3905a063326033ea0a94da2ddad6de3909","test/mktest.py":"553b56f3638208992b662547da0e7311fc842939c985396af1619fca1e7d8c1c","test/rsa-2048-priv.pem":"f52243b2d25127402a60a94d7cfc68a77308b9515d0b22481f6bae33740b1719","test/rsa-2048-pub.pem":"454e97e72fa2db6617d317a1401a7f54bc067c987242eeb44f6ffd26ee9c0f0b","test/rsa-3072-priv.pem":"015cb61466cc230c4ffb0c001ab607b7f240048117e3e377353462c8ba3dc56d","test/rsa-3072-pub.pem":"6917111121dc288d8bf1255a9af75596048ecce4fafe4a6709b37272473923fb","test/rsa-4096-priv.pem":"062de346569fe6c0a5d8eb5e88d21c58b7d999acf96876fcfaa7dd5ba4774c8c","test/rsa-4096-pub.pem":"476f306edefdb22d95cdb70babae39219d3e95940cfdc97fcbc7fc2c62fcab36"},"package":"da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/sct/Cargo.toml temporalio-1.3.0/vendor/sct/Cargo.toml --- temporalio-1.3.0/vendor/sct/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/sct/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -3,27 +3,31 @@ # 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 +# to registry (e.g., crates.io) dependencies. # -# If you believe there's an error in this file please file an -# issue against the rust-lang/cargo repository. If you're -# editing this file be aware that the upstream Cargo.toml -# will likely look very different (and much more reasonable) +# 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" +edition = "2021" +rust-version = "1.61" name = "sct" -version = "0.7.0" +version = "0.7.1" authors = ["Joseph Birr-Pixton "] exclude = ["/admin/"] description = "Certificate transparency SCT verification library" -homepage = "https://github.com/ctz/sct.rs" +homepage = "https://github.com/rustls/sct.rs" readme = "README.md" -categories = ["network-programming", "cryptography"] -license = "Apache-2.0/ISC/MIT" -repository = "https://github.com/ctz/sct.rs" +categories = [ + "network-programming", + "cryptography", +] +license = "Apache-2.0 OR ISC OR MIT" +repository = "https://github.com/rustls/sct.rs" + [dependencies.ring] -version = "0.16.20" +version = "0.17.0" [dependencies.untrusted] -version = "0.7.0" +version = "0.9.0" diff -Nru temporalio-1.3.0/vendor/sct/README.md temporalio-1.3.0/vendor/sct/README.md --- temporalio-1.3.0/vendor/sct/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/sct/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,11 +1,11 @@ # SCT.rs -SCT.rs is a certificate transparency SCT verifier in rust. +SCT.rs is a certificate transparency SCT verifier in Rust. It uses [*ring*](https://github.com/briansmith/ring) for cryptography. -[![Build Status](https://github.com/ctz/sct.rs/workflows/sct.rs/badge.svg)](https://github.com/ctz/sct.rs/actions) -[![Coverage Status (codecov.io)](https://codecov.io/gh/ctz/sct.rs/branch/main/graph/badge.svg)](https://codecov.io/gh/ctz/sct.rs/) -[![Documentation](https://docs.rs/sct/badge.svg)](https://docs.rs/sct/) -[![Crates.io](https://img.shields.io/crates/v/sct.svg)](https://crates.io/crates/sct) +[![Build Status](https://github.com/rustls/sct.rs/workflows/sct.rs/badge.svg)](https://github.com/rustls/sct.rs/actions) +[![Coverage Status (codecov.io)](https://codecov.io/gh/rustls/sct.rs/branch/main/graph/badge.svg)](https://codecov.io/gh/rustls/sct.rs/) +[![Documentation](https://docs.rs/sct/badge.svg)](https://docs.rs/sct) +[![crates.io](https://img.shields.io/crates/v/sct.svg)](https://crates.io/crates/sct) # Status Ready for use: diff -Nru temporalio-1.3.0/vendor/sct/src/lib.rs temporalio-1.3.0/vendor/sct/src/lib.rs --- temporalio-1.3.0/vendor/sct/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/sct/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -186,16 +186,12 @@ let inp = untrusted::Input::from(enc); inp.read_all(Error::MalformedSct, |rd| { - let version = rd - .read_byte() - .map_err(|_| Error::MalformedSct)?; + let version = rd.read_byte().map_err(|_| Error::MalformedSct)?; if version != 0 { return Err(Error::UnsupportedSctVersion); } - let id = rd - .read_bytes(32) - .map_err(|_| Error::MalformedSct)?; + let id = rd.read_bytes(32).map_err(|_| Error::MalformedSct)?; let timestamp = rd .read_bytes(8) .map_err(|_| Error::MalformedSct) @@ -243,7 +239,7 @@ /// Otherwise, it returns an `Error`. pub fn verify_sct(cert: &[u8], sct: &[u8], at_time: u64, logs: &[&Log]) -> Result { let sct = Sct::parse(sct)?; - let i = lookup(logs, &sct.log_id)?; + let i = lookup(logs, sct.log_id)?; let log = logs[i]; sct.verify(log.key, cert)?; diff -Nru temporalio-1.3.0/vendor/sct/src/tests.rs temporalio-1.3.0/vendor/sct/src/tests.rs --- temporalio-1.3.0/vendor/sct/src/tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/sct/src/tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,17 +2,17 @@ #[test] fn test_unknown_log_is_not_fatal() { - assert_eq!(false, Error::UnknownLog.should_be_fatal()); + assert!(!Error::UnknownLog.should_be_fatal()); } #[test] fn test_unknown_sct_version_is_not_fatal() { - assert_eq!(false, Error::UnsupportedSctVersion.should_be_fatal()); + assert!(!Error::UnsupportedSctVersion.should_be_fatal()); } #[test] fn test_other_errors_are_fatal() { - assert_eq!(true, Error::MalformedSct.should_be_fatal()); - assert_eq!(true, Error::InvalidSignature.should_be_fatal()); - assert_eq!(true, Error::TimestampInFuture.should_be_fatal()); + assert!(Error::MalformedSct.should_be_fatal()); + assert!(Error::InvalidSignature.should_be_fatal()); + assert!(Error::TimestampInFuture.should_be_fatal()); } diff -Nru temporalio-1.3.0/vendor/security-framework/.cargo-checksum.json temporalio-1.3.0/vendor/security-framework/.cargo-checksum.json --- temporalio-1.3.0/vendor/security-framework/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/security-framework/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.lock":"b58a2937ac34c0c2994f27ce4c3a9b05591d3f558b386b1c73e88e83dbca68f7","Cargo.toml":"405e5f8757f0b6b29a353eef6b4af78dd4a626e463fc56373453b96b5d7194cf","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"91e934255ba3b2f21103d68c5581c23ef34aa95c4628e4405b8c901935e11c69","README.md":"ff1d022f35ff76531a361ad421ba7ee61ce186dc6516f72fc819ec4b2a5567a4","THIRD_PARTY":"522fccc56dcbadbe90ab5524a17b8127cde3f951c30c17002641caf44959c22a","examples/client.rs":"63cbec24a63ceb2ab7e37e7dce1122797183cdab7cf65158c1f5f1eb6fa5f904","examples/find_internet_password.rs":"e8beeabe59087a3d11cd0a75a7dbcddf673e40c28497f2b7e1a11fb121cb05c2","examples/set_internet_password.rs":"bf79fb83607bd196e39614703e6c77c02974d171d4bb2a1dc21fba0ec1100ac9","src/access_control.rs":"3f7547747d78c11f65efd068c69663f8ca1fd7147e455c7c685cad953f3cabf8","src/authorization.rs":"84be74a6676e2a82d4be0131cd624c6f6598a087f7e1cad6b8374b5f6ad45e93","src/base.rs":"aa375e8ff01ad0f8268967c896ecd7562f8c0b98913aead6012a17f325d13d94","src/certificate.rs":"9e8c05f53aa2d84439f25354e5fe8e166aae542c84b63e09436fd811925646b2","src/cipher_suite.rs":"9395ee4ea08e04e1b28ece703ab0854907b997a6cc7cb4165bb6fbcc0e6ad861","src/dlsym.rs":"0f66bb4843e4c82fe597168ccd153a7275d18ab849df18ce57210ecf43ffe6ff","src/identity.rs":"f6c1c5f7744aa5e41dbeac4c602dd32a52f35f351df2c459346415b9c4df3e0b","src/import_export.rs":"0fe9fd1c411cbacf1b821965958f53d88c22320171efb37ebc9f5f4660803ac7","src/item.rs":"87cd13755ed9a4f17c731d6b64199450fbe8fe6b64b6e2aa437c57b69c2ad739","src/key.rs":"bf532f55b1097799bf046be4fbb3f8a413452517644ec8900dda183eb31a2490","src/lib.rs":"1ead1568d2e2ccbb3f0cd4efe2d246623a06b791c1141b6fbbabc561a72f4fc3","src/os/macos/access.rs":"b03fa782757510d683b1123d27be37b522fc465ec2b5ec3183085f9417c587d5","src/os/macos/certificate.rs":"6fe4966256cea1430c431fcaae870e8eab99e6b76b6ed74587bd595d6bc92b49","src/os/macos/certificate_oids.rs":"f36f07134d1f035f9fabc62aaf8a4be3f542a5d97dfbd866010e2056216e2e30","src/os/macos/code_signing.rs":"8097e52baaf8907f42f21dd881778a78db8df22d0cba6c6102353abc4cfde69b","src/os/macos/digest_transform.rs":"25b6d2e00aad81785ae032cd3ea73a4e4c560a45f99ea8f1c58b26b2d5e21f70","src/os/macos/encrypt_transform.rs":"730a54e9d77ce41626838dce2e2a6ad637cb9810eacc38c50b0db4755cdfabaa","src/os/macos/identity.rs":"4bc211bfc97d873d91ac046100867ab2c3dbb0b51bfb081cba28a4fde0bac337","src/os/macos/import_export.rs":"3871117749d81ad69067edf20c35f46afec389fe596350f7b584233112aa3f29","src/os/macos/item.rs":"46e31889d7648d461fa35a1f87a1c3f45c57f85220c25cfa6480097ac7101b85","src/os/macos/key.rs":"1ebde4066795a80857987d471c9e43d62eedf1fa81da963e6ca73f140dc03412","src/os/macos/keychain.rs":"1bf7a02f545823f72a91928e5664bd5dc63425386a515818e50e22000fbbeb18","src/os/macos/keychain_item.rs":"fb2352bf631dcc4a8ebbd4377a1d5ccdfb01d6525dcaf0147a7d5989be8c2e42","src/os/macos/mod.rs":"28e68e8bbc4053db35dd0455315f8c70999c21a8db1771878285fe293d669d3c","src/os/macos/passwords.rs":"084068ace872ef57348b92ecafd9877f470dd018dfb621e926684175d8363c31","src/os/macos/secure_transport.rs":"0671624515400dc0e31a76ddcd7091387bc772e531058d111b98e74195979abf","src/os/macos/transform.rs":"00e25dd4e729883f4bc7b07e003fe7e7f1e4957dcadd7f72f712835cb59e58d9","src/os/mod.rs":"287f2cd9a3b93f5db523974ac5f395cd6e5d1245d96c9782300d35bc5762c2f3","src/passwords.rs":"ca9edd609765891b61712ccc1af5fccbf43e815f72cf59863c67d932181e776c","src/passwords_options.rs":"b7b8d43f84c33e4f3d7152d70906c331e314bc9f887118d7f16dbedd9085e27e","src/policy.rs":"89149de585c80ec928f81eb0ba1a7d8d02411a067671ef8372c738bd8d062e0e","src/random.rs":"28cba598834f47ace69a2e7f69469809278c96178422ee9e2b4a2bb3e418cf87","src/secure_transport.rs":"6ee6188deebcf42a496c4586b9e5c3463d1328b6d6a90378031bd4acbf777ab4","src/trust.rs":"c6fd8cc0515020efe68ef5ee8e70132941c27ebff920c79f43a9f8c61a3b35b7","src/trust_settings.rs":"1b4398d08615f92d7d1fccb1bc3e1d0977dd7eac1eaf3eff9ae99f75157373cc"},"package":"1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8"} \ No newline at end of file +{"files":{"Cargo.lock":"db386751ea759fd41dd3e01f50fbde8abc3abea6b686bc6d7e5e8d2288e255cb","Cargo.toml":"223949daaf6dd1f112046f8e4a903c262e691aad7fa4f4a85ca68d232df73893","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"91e934255ba3b2f21103d68c5581c23ef34aa95c4628e4405b8c901935e11c69","README.md":"ff1d022f35ff76531a361ad421ba7ee61ce186dc6516f72fc819ec4b2a5567a4","THIRD_PARTY":"522fccc56dcbadbe90ab5524a17b8127cde3f951c30c17002641caf44959c22a","examples/client.rs":"63cbec24a63ceb2ab7e37e7dce1122797183cdab7cf65158c1f5f1eb6fa5f904","examples/find_internet_password.rs":"e8beeabe59087a3d11cd0a75a7dbcddf673e40c28497f2b7e1a11fb121cb05c2","examples/set_internet_password.rs":"bf79fb83607bd196e39614703e6c77c02974d171d4bb2a1dc21fba0ec1100ac9","src/access_control.rs":"3f7547747d78c11f65efd068c69663f8ca1fd7147e455c7c685cad953f3cabf8","src/authorization.rs":"84be74a6676e2a82d4be0131cd624c6f6598a087f7e1cad6b8374b5f6ad45e93","src/base.rs":"aa375e8ff01ad0f8268967c896ecd7562f8c0b98913aead6012a17f325d13d94","src/certificate.rs":"016e09cd6cf523d0e3a3f89123e63f21dcbf4d00e5feb4bb770bda630975440d","src/cipher_suite.rs":"9395ee4ea08e04e1b28ece703ab0854907b997a6cc7cb4165bb6fbcc0e6ad861","src/dlsym.rs":"0f66bb4843e4c82fe597168ccd153a7275d18ab849df18ce57210ecf43ffe6ff","src/identity.rs":"f6c1c5f7744aa5e41dbeac4c602dd32a52f35f351df2c459346415b9c4df3e0b","src/import_export.rs":"0fe9fd1c411cbacf1b821965958f53d88c22320171efb37ebc9f5f4660803ac7","src/item.rs":"87cd13755ed9a4f17c731d6b64199450fbe8fe6b64b6e2aa437c57b69c2ad739","src/key.rs":"bf532f55b1097799bf046be4fbb3f8a413452517644ec8900dda183eb31a2490","src/lib.rs":"1ead1568d2e2ccbb3f0cd4efe2d246623a06b791c1141b6fbbabc561a72f4fc3","src/os/macos/access.rs":"b03fa782757510d683b1123d27be37b522fc465ec2b5ec3183085f9417c587d5","src/os/macos/certificate.rs":"6fe4966256cea1430c431fcaae870e8eab99e6b76b6ed74587bd595d6bc92b49","src/os/macos/certificate_oids.rs":"f36f07134d1f035f9fabc62aaf8a4be3f542a5d97dfbd866010e2056216e2e30","src/os/macos/code_signing.rs":"8097e52baaf8907f42f21dd881778a78db8df22d0cba6c6102353abc4cfde69b","src/os/macos/digest_transform.rs":"25b6d2e00aad81785ae032cd3ea73a4e4c560a45f99ea8f1c58b26b2d5e21f70","src/os/macos/encrypt_transform.rs":"730a54e9d77ce41626838dce2e2a6ad637cb9810eacc38c50b0db4755cdfabaa","src/os/macos/identity.rs":"4bc211bfc97d873d91ac046100867ab2c3dbb0b51bfb081cba28a4fde0bac337","src/os/macos/import_export.rs":"3871117749d81ad69067edf20c35f46afec389fe596350f7b584233112aa3f29","src/os/macos/item.rs":"46e31889d7648d461fa35a1f87a1c3f45c57f85220c25cfa6480097ac7101b85","src/os/macos/key.rs":"1ebde4066795a80857987d471c9e43d62eedf1fa81da963e6ca73f140dc03412","src/os/macos/keychain.rs":"1bf7a02f545823f72a91928e5664bd5dc63425386a515818e50e22000fbbeb18","src/os/macos/keychain_item.rs":"fb2352bf631dcc4a8ebbd4377a1d5ccdfb01d6525dcaf0147a7d5989be8c2e42","src/os/macos/mod.rs":"28e68e8bbc4053db35dd0455315f8c70999c21a8db1771878285fe293d669d3c","src/os/macos/passwords.rs":"084068ace872ef57348b92ecafd9877f470dd018dfb621e926684175d8363c31","src/os/macos/secure_transport.rs":"0671624515400dc0e31a76ddcd7091387bc772e531058d111b98e74195979abf","src/os/macos/transform.rs":"00e25dd4e729883f4bc7b07e003fe7e7f1e4957dcadd7f72f712835cb59e58d9","src/os/mod.rs":"287f2cd9a3b93f5db523974ac5f395cd6e5d1245d96c9782300d35bc5762c2f3","src/passwords.rs":"ca9edd609765891b61712ccc1af5fccbf43e815f72cf59863c67d932181e776c","src/passwords_options.rs":"b7b8d43f84c33e4f3d7152d70906c331e314bc9f887118d7f16dbedd9085e27e","src/policy.rs":"89149de585c80ec928f81eb0ba1a7d8d02411a067671ef8372c738bd8d062e0e","src/random.rs":"28cba598834f47ace69a2e7f69469809278c96178422ee9e2b4a2bb3e418cf87","src/secure_transport.rs":"6ee6188deebcf42a496c4586b9e5c3463d1328b6d6a90378031bd4acbf777ab4","src/trust.rs":"c6fd8cc0515020efe68ef5ee8e70132941c27ebff920c79f43a9f8c61a3b35b7","src/trust_settings.rs":"0abffec991509b03ac40936985fd9e9122040a0f83d65373fa45ae114983be6b"},"package":"05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/security-framework/Cargo.lock temporalio-1.3.0/vendor/security-framework/Cargo.lock --- temporalio-1.3.0/vendor/security-framework/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/security-framework/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -377,7 +377,7 @@ [[package]] name = "security-framework" -version = "2.9.1" +version = "2.9.2" dependencies = [ "bitflags", "core-foundation", @@ -395,9 +395,9 @@ [[package]] name = "security-framework-sys" -version = "2.9.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" dependencies = [ "core-foundation-sys", "libc", diff -Nru temporalio-1.3.0/vendor/security-framework/Cargo.toml temporalio-1.3.0/vendor/security-framework/Cargo.toml --- temporalio-1.3.0/vendor/security-framework/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/security-framework/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ edition = "2021" rust-version = "1.60" name = "security-framework" -version = "2.9.1" +version = "2.9.2" authors = [ "Steven Fackler ", "Kornel ", @@ -130,4 +130,4 @@ session-tickets = [] [badges.maintenance] -status = "passively-maintained" +status = "looking-for-maintainer" diff -Nru temporalio-1.3.0/vendor/security-framework/src/certificate.rs temporalio-1.3.0/vendor/security-framework/src/certificate.rs --- temporalio-1.3.0/vendor/security-framework/src/certificate.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/security-framework/src/certificate.rs 2023-10-30 19:40:00.000000000 +0000 @@ -18,6 +18,8 @@ use crate::cvt; #[cfg(any(feature = "OSX_10_12", target_os = "ios"))] use crate::key; +#[cfg(target_os = "macos")] +use crate::os::macos::keychain::SecKeychain; #[cfg(any(feature = "OSX_10_12", target_os = "ios"))] use core_foundation::base::FromVoid; #[cfg(any(feature = "OSX_10_13", target_os = "ios"))] @@ -72,6 +74,18 @@ } } + /// Adds a certificate to a keychain. + #[cfg(target_os="macos")] + pub fn add_to_keychain(&self, keychain: Option) -> Result<()> { + let kch = match keychain { + Some(kch) => kch, + _ => SecKeychain::default()?, + }; + cvt(unsafe { + SecCertificateAddToKeychain(self.as_CFTypeRef() as *mut _, kch.as_CFTypeRef() as *mut _) + }) + } + /// Returns a human readable summary of this certificate. #[must_use] pub fn subject_summary(&self) -> String { diff -Nru temporalio-1.3.0/vendor/security-framework/src/trust_settings.rs temporalio-1.3.0/vendor/security-framework/src/trust_settings.rs --- temporalio-1.3.0/vendor/security-framework/src/trust_settings.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/security-framework/src/trust_settings.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,6 +6,7 @@ use core_foundation::number::CFNumber; use core_foundation::string::CFString; +use core_foundation_sys::base::CFTypeRef; use security_framework_sys::base::errSecNoTrustSettings; use security_framework_sys::base::errSecSuccess; use security_framework_sys::trust_settings::*; @@ -113,6 +114,32 @@ Ok(TrustSettingsIter { index: 0, array }) } + ///set trust settings to ""always trust this root certificate regardless of use.". + /// Sets the trust settings for the provided certificate to "always trust this root certificate + /// regardless of use." + /// + /// This method configures the trust settings for the specified certificate, indicating that it should + /// always be trusted as a TLS root certificate, regardless of its usage. + /// + /// If successful, the trust settings are updated for the certificate in the given domain. If the + /// certificate had no previous trust settings in the domain, new trust settings are created. If the + /// certificate had existing trust settings, they are replaced with the new settings. + /// + /// It is not possible to modify per-user trust settings when not running in a GUI + /// environment, if you try it will return error `2070: errSecInternalComponent` + #[cfg(target_os="macos")] + pub fn set_trust_settings_always(&self, cert: &SecCertificate) -> Result<()> { + let domain = self.domain; + let trust_settings: CFTypeRef = ptr::null_mut(); + cvt(unsafe { + SecTrustSettingsSetTrustSettings( + cert.as_CFTypeRef() as *mut _, + domain.into(), + trust_settings, + ) + }) + } + /// Returns the aggregate trust setting for the given certificate. /// /// This tells you whether the certificate should be trusted as a TLS @@ -275,3 +302,4 @@ Some("The specified item could not be found in the keychain.".into())); } } + diff -Nru temporalio-1.3.0/vendor/security-framework-sys/.cargo-checksum.json temporalio-1.3.0/vendor/security-framework-sys/.cargo-checksum.json --- temporalio-1.3.0/vendor/security-framework-sys/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/security-framework-sys/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"20e20b7fc4f390987e5610851e872cabe3bca0b67a0740278fe7f89fc304fcc5","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"91e934255ba3b2f21103d68c5581c23ef34aa95c4628e4405b8c901935e11c69","README.md":"ff1d022f35ff76531a361ad421ba7ee61ce186dc6516f72fc819ec4b2a5567a4","src/access.rs":"5a3793ee3b77360f183404c1543111d6e96f5a0728f7ebdf3f6112594d9c4deb","src/access_control.rs":"097eb2ac649fed2e4b9eca8e5115ab0cb7e72cb148c2bed44f056c786d2d4691","src/authorization.rs":"82823dc5a60a7cd23bd5ee551685dd2fdc3744ab6563d838a9def393b4bba235","src/base.rs":"d4451e5dc4bb152bec38933a57de4779de491dd113308907fa39bd9720e55e7d","src/certificate.rs":"789a17be2f930fd5083e01c815551174d8cebd2435b238865724295c1580deb0","src/certificate_oids.rs":"67f6b691925133c2501e0be31aea514b3ef0e9d382281cb283bd9aa6614dc580","src/cipher_suite.rs":"d86cad8b3e48240642595b2e1518d36ecffd0fc5bcb09fbff22d6b211cde93da","src/code_signing.rs":"1120f85df71179a2261afcbbd4cf6d0c0c18c164f9b6d2c1f912fb58194ed23a","src/digest_transform.rs":"230c1ca843df534de6d5ea33d623781c0e5fac6063f472b727b118a5abea99d2","src/encrypt_transform.rs":"0992ad3ac4da00e31bc3fc481ec94e35b37f2816903872bfe9a7ef0e7547c318","src/identity.rs":"90d90db56ae650113bdb09743882b62cd426bca50be5ac2fb99e9375a932d91b","src/import_export.rs":"4efb4c41581ccdc16411e2b3a068a02a0b0ef68ebf689014240e4916ebab768e","src/item.rs":"adc4ae21067f8b65954dab3e2b71aee64715200c565ceb2222e5dac6c8fe1e1a","src/key.rs":"d9afccbeaa42c2ae2ad2f8b9f762a39239b960da7826124b610ef949a0b8be8b","src/keychain.rs":"b1c1a5d5bab31e3658b4bcfa501d8e96f15cb76f38e15d1b86ed1edfc728b992","src/keychain_item.rs":"ac7be52b5e055f934379048623c0d68cd5e24a0cf9436fa0dcd9d66c2a0598ec","src/lib.rs":"6740d2c9b3f11cc21005f021c9f4b21fcba11018b67e23dec1b34882a7758c3d","src/policy.rs":"cc33c34452cdcceb88e6d9bb890a552b8d0fc1db5ac7db98df2c418c7cca6ac8","src/random.rs":"4a9104ef3644d870d50cf3239bf690cd448225fc267214538c4f5bdb1e669052","src/secure_transport.rs":"bb1a5aa05cb6d565e312cc62dbec53305e4ad4a542ec37de4bb5a92021458de9","src/transform.rs":"4768b1f14ad8e72c696c5c68bfddc7cc39caa223caf081c1ff119feeddc9733f","src/trust.rs":"d6ae4ac02466949a7960c470b62f05d865783e4a1010bb76fff0c99ace476d30","src/trust_settings.rs":"21b89cbf485be9c40fd0418553167bfa75a00a7bfc697df558dc4fd86a692239"},"package":"f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7"} \ No newline at end of file +{"files":{"Cargo.toml":"f4a50cb4b4329cd4bf3e8267b8cffb9f8d717624330e602afcac873cd98216e9","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"91e934255ba3b2f21103d68c5581c23ef34aa95c4628e4405b8c901935e11c69","README.md":"ff1d022f35ff76531a361ad421ba7ee61ce186dc6516f72fc819ec4b2a5567a4","src/access.rs":"5a3793ee3b77360f183404c1543111d6e96f5a0728f7ebdf3f6112594d9c4deb","src/access_control.rs":"62791223617cfb55a2bc944e687da85798a6c7cd363ce2c5d3474f998f63e503","src/authorization.rs":"82823dc5a60a7cd23bd5ee551685dd2fdc3744ab6563d838a9def393b4bba235","src/base.rs":"4668b229fae9530d5fece1766749f4d75eb49955eab35490a2ea14edd067d8d6","src/certificate.rs":"789a17be2f930fd5083e01c815551174d8cebd2435b238865724295c1580deb0","src/certificate_oids.rs":"67f6b691925133c2501e0be31aea514b3ef0e9d382281cb283bd9aa6614dc580","src/cipher_suite.rs":"d86cad8b3e48240642595b2e1518d36ecffd0fc5bcb09fbff22d6b211cde93da","src/code_signing.rs":"1120f85df71179a2261afcbbd4cf6d0c0c18c164f9b6d2c1f912fb58194ed23a","src/digest_transform.rs":"230c1ca843df534de6d5ea33d623781c0e5fac6063f472b727b118a5abea99d2","src/encrypt_transform.rs":"0992ad3ac4da00e31bc3fc481ec94e35b37f2816903872bfe9a7ef0e7547c318","src/identity.rs":"90d90db56ae650113bdb09743882b62cd426bca50be5ac2fb99e9375a932d91b","src/import_export.rs":"4efb4c41581ccdc16411e2b3a068a02a0b0ef68ebf689014240e4916ebab768e","src/item.rs":"adc4ae21067f8b65954dab3e2b71aee64715200c565ceb2222e5dac6c8fe1e1a","src/key.rs":"d9afccbeaa42c2ae2ad2f8b9f762a39239b960da7826124b610ef949a0b8be8b","src/keychain.rs":"b1c1a5d5bab31e3658b4bcfa501d8e96f15cb76f38e15d1b86ed1edfc728b992","src/keychain_item.rs":"ac7be52b5e055f934379048623c0d68cd5e24a0cf9436fa0dcd9d66c2a0598ec","src/lib.rs":"6740d2c9b3f11cc21005f021c9f4b21fcba11018b67e23dec1b34882a7758c3d","src/policy.rs":"cc33c34452cdcceb88e6d9bb890a552b8d0fc1db5ac7db98df2c418c7cca6ac8","src/random.rs":"4a9104ef3644d870d50cf3239bf690cd448225fc267214538c4f5bdb1e669052","src/secure_transport.rs":"bb1a5aa05cb6d565e312cc62dbec53305e4ad4a542ec37de4bb5a92021458de9","src/transform.rs":"4768b1f14ad8e72c696c5c68bfddc7cc39caa223caf081c1ff119feeddc9733f","src/trust.rs":"d6ae4ac02466949a7960c470b62f05d865783e4a1010bb76fff0c99ace476d30","src/trust_settings.rs":"21b89cbf485be9c40fd0418553167bfa75a00a7bfc697df558dc4fd86a692239"},"package":"e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/security-framework-sys/Cargo.toml temporalio-1.3.0/vendor/security-framework-sys/Cargo.toml --- temporalio-1.3.0/vendor/security-framework-sys/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/security-framework-sys/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,9 +10,9 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" +edition = "2021" name = "security-framework-sys" -version = "2.9.0" +version = "2.9.1" authors = [ "Steven Fackler ", "Kornel ", @@ -33,6 +33,7 @@ ] license = "MIT OR Apache-2.0" repository = "https://github.com/kornelski/rust-security-framework" +resolver = "1" [package.metadata.docs.rs] targets = [ @@ -57,4 +58,4 @@ default = ["OSX_10_9"] [badges.maintenance] -status = "passively-maintained" +status = "looking-for-maintainer" diff -Nru temporalio-1.3.0/vendor/security-framework-sys/src/access_control.rs temporalio-1.3.0/vendor/security-framework-sys/src/access_control.rs --- temporalio-1.3.0/vendor/security-framework-sys/src/access_control.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/security-framework-sys/src/access_control.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,7 @@ use core_foundation_sys::base::CFOptionFlags; use core_foundation_sys::base::{CFAllocatorRef, CFTypeID, CFTypeRef}; use core_foundation_sys::error::CFErrorRef; +use core_foundation_sys::string::CFStringRef; use crate::base::SecAccessControlRef; @@ -24,6 +25,15 @@ pub use access_control_flags::*; extern "C" { + pub static kSecAttrAccessibleWhenUnlocked: CFStringRef; + pub static kSecAttrAccessibleAfterFirstUnlock: CFStringRef; + pub static kSecAttrAccessibleAlways: CFStringRef; + pub static kSecAttrAccessibleWhenUnlockedThisDeviceOnly: CFStringRef; + pub static kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly: CFStringRef; + pub static kSecAttrAccessibleAlwaysThisDeviceOnly: CFStringRef; +} + +extern "C" { pub fn SecAccessControlGetTypeID() -> CFTypeID; pub fn SecAccessControlCreateWithFlags( diff -Nru temporalio-1.3.0/vendor/security-framework-sys/src/base.rs temporalio-1.3.0/vendor/security-framework-sys/src/base.rs --- temporalio-1.3.0/vendor/security-framework-sys/src/base.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/security-framework-sys/src/base.rs 2023-10-30 19:40:00.000000000 +0000 @@ -60,6 +60,7 @@ pub const errSecTrustSettingDeny: OSStatus = -67654; pub const errSecCertificateRevoked: OSStatus = -67820; pub const errSecNotTrusted: OSStatus = -67843; +pub const errSecInternalComponent: OSStatus = -2070; extern "C" { // this is available on iOS 11.3+, MacOS 10.3+ diff -Nru temporalio-1.3.0/vendor/semver/.cargo-checksum.json temporalio-1.3.0/vendor/semver/.cargo-checksum.json --- temporalio-1.3.0/vendor/semver/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/semver/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"dfbbc0d6c0d8edad66364be43e171797ceade541b13543fbafec7369fae849da","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"de1a03443ab8f147676199856a975ec00f3f7334fc5d5d5e056ec8f3fcb61dd5","benches/parse.rs":"6531f66f80ce2fc83878f9bf84f94c42e96f1e709466f2b88be8d95a3cec1511","build.rs":"9a3d42e37b665745044b5d91c6e02dd458152e336a7013654972f4a1a0b562d9","src/backport.rs":"66db55d15d0e2808bffe4cde7cd1d99bda999b26cbe40bb6b5e43b94f9b631d2","src/display.rs":"9ba42f7a6579aa9c7dd72f2380036f5c9664592f3eacd09ea25cef291a3e64e5","src/error.rs":"895e11a9e454cab207415186b15a29dac1f0a5bf9b8dba7bd45da5bb5a6ace31","src/eval.rs":"b7e7ec976051b9f87ddf5cfdbaad64654d98d86ae0763f7d88b14eeaeac6013c","src/identifier.rs":"459725383cbd0e2d769aa947decd1f031bdc8732339783ad24eb2b44f0f5d040","src/impls.rs":"79b5a2ac6ca3d4cb46adfb1494756079f53bef780dd81c3a8d3adf86f91395c8","src/lib.rs":"6446e36a6aef141237968e3e4e6ba6fc9d6bae115256883188eda3e8923b91fe","src/parse.rs":"920f8327a1ba0c16a28f518f2d50998faf1d6a8db379b92cb72976f176650f09","src/serde.rs":"e2a9b9dc3cd2cccc250eaffad049de418ef791bf8c4a34111a48f068353e0a37","tests/node/mod.rs":"2710d9b8daace2038b66db0f8f4cc522dee938e7cbc42d7739c31995343c32f4","tests/test_autotrait.rs":"2631b78c9c63f1829c814fa88fcab0c5d77eb4e2d9c0c418d50c33e12a511e90","tests/test_identifier.rs":"6c3da46c73df210527b60f1069131b15e2c65eb7b5d11793940d00cf66812f4d","tests/test_version.rs":"4f45827cdab1d965f73b93662b84007d056135c97d5ffaa9973c1d9f58666785","tests/test_version_req.rs":"b6eea0258cc3b6d567a9f6c42693a97316345083495236c47e85374fd45f7cf0","tests/util/mod.rs":"db61c2cd86af864d8be4f2a3d5f25c86d7712201cc6ab47b715facf5f7f275b7"},"package":"bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed"} \ No newline at end of file +{"files":{"Cargo.toml":"b596875460fd9bbd7c3bd1d3f13f4dd70ccf88ee25fae4bc996f99b179148588","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"de1a03443ab8f147676199856a975ec00f3f7334fc5d5d5e056ec8f3fcb61dd5","benches/parse.rs":"6531f66f80ce2fc83878f9bf84f94c42e96f1e709466f2b88be8d95a3cec1511","build.rs":"9a3d42e37b665745044b5d91c6e02dd458152e336a7013654972f4a1a0b562d9","src/backport.rs":"66db55d15d0e2808bffe4cde7cd1d99bda999b26cbe40bb6b5e43b94f9b631d2","src/display.rs":"9ba42f7a6579aa9c7dd72f2380036f5c9664592f3eacd09ea25cef291a3e64e5","src/error.rs":"895e11a9e454cab207415186b15a29dac1f0a5bf9b8dba7bd45da5bb5a6ace31","src/eval.rs":"b7e7ec976051b9f87ddf5cfdbaad64654d98d86ae0763f7d88b14eeaeac6013c","src/identifier.rs":"459725383cbd0e2d769aa947decd1f031bdc8732339783ad24eb2b44f0f5d040","src/impls.rs":"79b5a2ac6ca3d4cb46adfb1494756079f53bef780dd81c3a8d3adf86f91395c8","src/lib.rs":"280ffdd4bda1aa7fed6c32e5ff57aac382d3619283a675fd23e6f9951f4bd001","src/parse.rs":"920f8327a1ba0c16a28f518f2d50998faf1d6a8db379b92cb72976f176650f09","src/serde.rs":"e2a9b9dc3cd2cccc250eaffad049de418ef791bf8c4a34111a48f068353e0a37","tests/node/mod.rs":"2710d9b8daace2038b66db0f8f4cc522dee938e7cbc42d7739c31995343c32f4","tests/test_autotrait.rs":"2631b78c9c63f1829c814fa88fcab0c5d77eb4e2d9c0c418d50c33e12a511e90","tests/test_identifier.rs":"6c3da46c73df210527b60f1069131b15e2c65eb7b5d11793940d00cf66812f4d","tests/test_version.rs":"4f45827cdab1d965f73b93662b84007d056135c97d5ffaa9973c1d9f58666785","tests/test_version_req.rs":"b6eea0258cc3b6d567a9f6c42693a97316345083495236c47e85374fd45f7cf0","tests/util/mod.rs":"db61c2cd86af864d8be4f2a3d5f25c86d7712201cc6ab47b715facf5f7f275b7"},"package":"b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/semver/Cargo.toml temporalio-1.3.0/vendor/semver/Cargo.toml --- temporalio-1.3.0/vendor/semver/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/semver/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ edition = "2018" rust-version = "1.31" name = "semver" -version = "1.0.17" +version = "1.0.18" authors = ["David Tolnay "] description = "Parser and evaluator for Cargo's flavor of Semantic Versioning" documentation = "https://docs.rs/semver" @@ -30,6 +30,7 @@ rustdoc-args = [ "--cfg", "doc_cfg", + "--generate-link-to-definition", ] targets = ["x86_64-unknown-linux-gnu"] diff -Nru temporalio-1.3.0/vendor/semver/src/lib.rs temporalio-1.3.0/vendor/semver/src/lib.rs --- temporalio-1.3.0/vendor/semver/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/semver/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -60,7 +60,7 @@ //! //! [Specifying Dependencies]: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html -#![doc(html_root_url = "https://docs.rs/semver/1.0.17")] +#![doc(html_root_url = "https://docs.rs/semver/1.0.18")] #![cfg_attr(doc_cfg, feature(doc_cfg))] #![cfg_attr(all(not(feature = "std"), not(no_alloc_crate)), no_std)] #![cfg_attr(not(no_unsafe_op_in_unsafe_fn_lint), deny(unsafe_op_in_unsafe_fn))] diff -Nru temporalio-1.3.0/vendor/serde/build.rs temporalio-1.3.0/vendor/serde/build.rs --- temporalio-1.3.0/vendor/serde/build.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/build.rs 2023-10-30 19:40:00.000000000 +0000 @@ -16,68 +16,6 @@ let target = env::var("TARGET").unwrap(); let emscripten = target == "asmjs-unknown-emscripten" || target == "wasm32-unknown-emscripten"; - // std::collections::Bound was stabilized in Rust 1.17 - // but it was moved to core::ops later in Rust 1.26: - // https://doc.rust-lang.org/core/ops/enum.Bound.html - if minor < 26 { - println!("cargo:rustc-cfg=no_ops_bound"); - if minor < 17 { - println!("cargo:rustc-cfg=no_collections_bound"); - } - } - - // core::cmp::Reverse stabilized in Rust 1.19: - // https://doc.rust-lang.org/stable/core/cmp/struct.Reverse.html - if minor < 19 { - println!("cargo:rustc-cfg=no_core_reverse"); - } - - // CString::into_boxed_c_str and PathBuf::into_boxed_path stabilized in Rust 1.20: - // https://doc.rust-lang.org/std/ffi/struct.CString.html#method.into_boxed_c_str - // https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.into_boxed_path - if minor < 20 { - println!("cargo:rustc-cfg=no_de_boxed_c_str"); - println!("cargo:rustc-cfg=no_de_boxed_path"); - } - - // From> for Rc / Arc stabilized in Rust 1.21: - // https://doc.rust-lang.org/std/rc/struct.Rc.html#impl-From> - // https://doc.rust-lang.org/std/sync/struct.Arc.html#impl-From> - if minor < 21 { - println!("cargo:rustc-cfg=no_de_rc_dst"); - } - - // Duration available in core since Rust 1.25: - // https://blog.rust-lang.org/2018/03/29/Rust-1.25.html#library-stabilizations - if minor < 25 { - println!("cargo:rustc-cfg=no_core_duration"); - } - - // 128-bit integers stabilized in Rust 1.26: - // https://blog.rust-lang.org/2018/05/10/Rust-1.26.html - // - // Disabled on Emscripten targets before Rust 1.40 since - // Emscripten did not support 128-bit integers until Rust 1.40 - // (https://github.com/rust-lang/rust/pull/65251) - if minor < 26 || emscripten && minor < 40 { - println!("cargo:rustc-cfg=no_integer128"); - } - - // Inclusive ranges methods stabilized in Rust 1.27: - // https://github.com/rust-lang/rust/pull/50758 - // Also Iterator::try_for_each: - // https://blog.rust-lang.org/2018/06/21/Rust-1.27.html#library-stabilizations - if minor < 27 { - println!("cargo:rustc-cfg=no_range_inclusive"); - println!("cargo:rustc-cfg=no_iterator_try_fold"); - } - - // Non-zero integers stabilized in Rust 1.28: - // https://blog.rust-lang.org/2018/08/02/Rust-1.28.html#library-stabilizations - if minor < 28 { - println!("cargo:rustc-cfg=no_num_nonzero"); - } - // TryFrom, Atomic types, non-zero signed integers, and SystemTime::checked_add // stabilized in Rust 1.34: // https://blog.rust-lang.org/2019/04/11/Rust-1.34.0.html#tryfrom-and-tryinto @@ -89,6 +27,13 @@ println!("cargo:rustc-cfg=no_relaxed_trait_bounds"); } + // Disabled on Emscripten targets before Rust 1.40 since + // Emscripten did not support 128-bit integers until Rust 1.40 + // (https://github.com/rust-lang/rust/pull/65251) + if emscripten && minor < 40 { + println!("cargo:rustc-cfg=no_integer128"); + } + // Current minimum supported version of serde_derive crate is Rust 1.56. if minor < 56 { println!("cargo:rustc-cfg=no_serde_derive"); diff -Nru temporalio-1.3.0/vendor/serde/.cargo-checksum.json temporalio-1.3.0/vendor/serde/.cargo-checksum.json --- temporalio-1.3.0/vendor/serde/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"b23a9733cd518d1be5fb4ff99f771b765a9bfde270be577d56849c3f810ff1e8","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"13c66875efb67f64fdec817725f34ceb07913e1ebea4adc240868d2ed581d3da","build.rs":"976e089a5f74fc03e23465744bcc02b3b600a59f1c098da60c29d3979c5b35df","crates-io.md":"ee22254ee64c3189eef3e707c8d75dc66a8df2a7ee9e518d95238950780ec387","src/de/format.rs":"84f902fd4c3be66e81ac01d5b21cd876113c16f9890ff8bab5faa0d085386294","src/de/ignored_any.rs":"967184c86707c99b77a1cfb218dfc823f560fae227b6635aee6af19ee82962f5","src/de/impls.rs":"531fbbab5c8807959831b81908313e9fc0cf4d52ac820824ac6fe16d460fc947","src/de/mod.rs":"71198e80e4c64aa686b5ceb6e8bce10db20845a87a30fa14227ecbe365a046d5","src/de/seed.rs":"e8cf0233afe0af5b8fb9e4c94f301c92729c5ba417280af9e2201b732e374a72","src/de/utf8.rs":"bee9c5cbfec2457b49d51bcc486972cda634bd1d2c7b7d83029c32f0c8eec0c0","src/de/value.rs":"016e96a836bfce023548e87abc88e6006874b2d1f84b9cdfd8b61ccc18825c1a","src/integer128.rs":"ca49591abde2d8c4f582174533fee28f0fa9139e5d71bf22b25a6b175f8abccc","src/lib.rs":"835fc5da697760beb39dc181fb83f7a38b6e1c1455364b0f0513b052cdc65876","src/macros.rs":"3d695a51f0a07f9f719dcb5620012c21a1b084c06a6283349cabf574ceba8123","src/private/de.rs":"e5a33132ee47ba328b91731de10f9eb9a906e964900c260500943bc53c071499","src/private/doc.rs":"e9801a43c3088fccd5f1fac76416698f948e65b647024aa9da17d673e1e8c217","src/private/mod.rs":"37b204775e572396515477b393ce793b2579de48e5971e6f596ba3723c489fd6","src/private/ser.rs":"23f9e39edb6b620569e5cb3b33270b5d11b71b8901fcdf04385d7792f52355e0","src/private/size_hint.rs":"605521227e9ba3100fbb9d5ea7fd5853385097c35015ce6908bd5f1ea20d59ad","src/ser/fmt.rs":"7827ed07fd8897e6324f75625ba0c926a4c4e7ec2914cd067391ce54d942ac7b","src/ser/impls.rs":"d60fffc772735924b7cc804f5312bd0bc4a0929c4d358067d7338bac4955df1c","src/ser/impossible.rs":"db17913522c1c27389c5a085113911353b9813c1b116518681362e7c8b692c3a","src/ser/mod.rs":"e1e6c764837c70b6410dcf1949a0dae1b4b4ffce65b87607d3d173b612e9bccf","src/std_error.rs":"3aac687856c035517fae44ed2906dd4a1e3184bae4bf613adcdeb73f74126c57"},"package":"d01b7404f9d441d3ad40e6a636a7782c377d2abdbe4fa2440e2edcc2f4f10db8"} \ No newline at end of file +{"files":{"Cargo.toml":"a3afbb6f2324fb0489d86fdb42d3e0ce6d230d5b0e51341316ab9acaf0b9ac4d","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"c3ece10a36d19b4e857a770eaf74a2164d220f55fa11947065a3898c1697ecef","build.rs":"7a01eef82b6868208976e3dd96a6bf69ae968855f87d8514825fc2281dbd7b57","crates-io.md":"56e988ac4944c45f5bf5051e3827892ed8fb817853d99d9df1fff6621108e270","src/de/format.rs":"c85071b016df643b161859682d21ce34fa0ebf2a3bdbeeea69859da48f5d934f","src/de/ignored_any.rs":"b991c390d45bce988593946f50da9b67138bfc7fb31777abf0fcdc4611e61cd7","src/de/impls.rs":"494f4a34bfab95c544476501d3fe3b43956b61c52aecbbaf725c8f26a712d3d9","src/de/mod.rs":"f58587a0bd627af4d868e2e73534d676d20e2c48ff978de8042fd33c6ab8239d","src/de/seed.rs":"045d890712a04eb33ffc5a021e5d948a63c89402b8ffeea749df2171b7484f8f","src/de/size_hint.rs":"fff83dc39d30e75e8e611991f9c5399188a1aad23a6462dbca2c8b62655cfedb","src/de/value.rs":"7c7c50519d15aca2afe0cf96df97fabea145a9e1dd4d67afca0a2bcabb452553","src/integer128.rs":"12e5834455e78c3917f8417865141d1bfbf6a25f64273b7551661d75abe8b9d1","src/lib.rs":"610a79c6dc586c3c74eb5f2d53722886ad082bbc614f5babd2b3dd1f3415ab5c","src/macros.rs":"75df6143d4566437a8349d4352a706882a95f946c5d1d7d6fbe0c29a9ab542cb","src/private/de.rs":"6557a124fdaf61f9c7cd80163e40f4a453354e45b63a4eb55dafdfe0159f6881","src/private/doc.rs":"9ad740e9ea2eedf861b77116eda9a6fb74bc8553541cd17d1bc5791a3ef3271a","src/private/mod.rs":"b8f0c348621d91dd9da3db83d8877e70bc61ad0a2dc2d6fb57c6fc2c2cbafa26","src/private/ser.rs":"656613691bd8d40cb70a52d4ebe3ee96a993c8a1292d50822d9ca5bdad84426b","src/ser/fmt.rs":"95fe0beaf0b0e7b0d04faab463677f8bc05ed67308aa508bbb86fe721fe709ca","src/ser/impls.rs":"f785c48f1dc302c839e740c5add2346b89b5e1535edbcc4b46cdb55af6f776a3","src/ser/impossible.rs":"e11b37689ec1395378d546fce74221ca9046d0761744301f12029102fd07e30e","src/ser/mod.rs":"e0f77d73ef09b2cba888bc13f6c17fddf4c51d4575c65b14f3df8151f5b5c465","src/std_error.rs":"25a07149e2e468747ffa5a58051c7f93d7b3c0fa0372f012a96c97ec8ab03b97"},"package":"9f5db24220c009de9bd45e69fb2938f4b6d2df856aa9304ce377b3180f83b7c1"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/serde/Cargo.toml temporalio-1.3.0/vendor/serde/Cargo.toml --- temporalio-1.3.0/vendor/serde/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,22 +10,15 @@ # See Cargo.toml.orig for the original contents. [package] -rust-version = "1.19" +edition = "2018" +rust-version = "1.31" name = "serde" -version = "1.0.166" +version = "1.0.186" authors = [ "Erick Tryzelaar ", "David Tolnay ", ] build = "build.rs" -include = [ - "build.rs", - "src/**/*.rs", - "crates-io.md", - "README.md", - "LICENSE-APACHE", - "LICENSE-MIT", -] description = "A generic serialization/deserialization framework" homepage = "https://serde.rs" documentation = "https://docs.rs/serde" @@ -45,6 +38,7 @@ [package.metadata.docs.rs] features = ["derive"] +rustdoc-args = ["--generate-link-to-definition"] targets = ["x86_64-unknown-linux-gnu"] [package.metadata.playground] @@ -57,11 +51,11 @@ doc-scrape-examples = false [dependencies.serde_derive] -version = "=1.0.166" +version = "1" optional = true [dev-dependencies.serde_derive] -version = "1.0" +version = "1" [features] alloc = [] @@ -70,3 +64,6 @@ rc = [] std = [] unstable = [] + +[target."cfg(any())".dependencies.serde_derive] +version = "=1.0.186" diff -Nru temporalio-1.3.0/vendor/serde/crates-io.md temporalio-1.3.0/vendor/serde/crates-io.md --- temporalio-1.3.0/vendor/serde/crates-io.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/crates-io.md 2023-10-30 19:40:00.000000000 +0000 @@ -16,7 +16,7 @@ ## Serde in action ```rust -use serde::{Serialize, Deserialize}; +use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Debug)] struct Point { diff -Nru temporalio-1.3.0/vendor/serde/README.md temporalio-1.3.0/vendor/serde/README.md --- temporalio-1.3.0/vendor/serde/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,12 +1,12 @@ -# Serde   [![Build Status]][actions] [![Latest Version]][crates.io] [![serde: rustc 1.19+]][Rust 1.19] [![serde_derive: rustc 1.56+]][Rust 1.56] +# Serde   [![Build Status]][actions] [![Latest Version]][crates.io] [![serde: rustc 1.31+]][Rust 1.31] [![serde_derive: rustc 1.56+]][Rust 1.56] [Build Status]: https://img.shields.io/github/actions/workflow/status/serde-rs/serde/ci.yml?branch=master [actions]: https://github.com/serde-rs/serde/actions?query=branch%3Amaster [Latest Version]: https://img.shields.io/crates/v/serde.svg [crates.io]: https://crates.io/crates/serde -[serde: rustc 1.19+]: https://img.shields.io/badge/serde-rustc_1.19+-lightgray.svg +[serde: rustc 1.31+]: https://img.shields.io/badge/serde-rustc_1.31+-lightgray.svg [serde_derive: rustc 1.56+]: https://img.shields.io/badge/serde_derive-rustc_1.56+-lightgray.svg -[Rust 1.19]: https://blog.rust-lang.org/2017/07/20/Rust-1.19.html +[Rust 1.31]: https://blog.rust-lang.org/2018/12/06/Rust-1.31-and-rust-2018.html [Rust 1.56]: https://blog.rust-lang.org/2021/10/21/Rust-1.56.0.html **Serde is a framework for *ser*ializing and *de*serializing Rust data structures efficiently and generically.** @@ -48,7 +48,7 @@

```rust -use serde::{Serialize, Deserialize}; +use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Debug)] struct Point { diff -Nru temporalio-1.3.0/vendor/serde/src/de/format.rs temporalio-1.3.0/vendor/serde/src/de/format.rs --- temporalio-1.3.0/vendor/serde/src/de/format.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/de/format.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ -use lib::fmt::{self, Write}; -use lib::str; +use crate::lib::fmt::{self, Write}; +use crate::lib::str; pub(super) struct Buf<'a> { bytes: &'a mut [u8], diff -Nru temporalio-1.3.0/vendor/serde/src/de/ignored_any.rs temporalio-1.3.0/vendor/serde/src/de/ignored_any.rs --- temporalio-1.3.0/vendor/serde/src/de/ignored_any.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/de/ignored_any.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ -use lib::*; +use crate::lib::*; -use de::{ +use crate::de::{ Deserialize, Deserializer, EnumAccess, Error, MapAccess, SeqAccess, VariantAccess, Visitor, }; @@ -10,13 +10,12 @@ /// any type, except that it does not store any information about the data that /// gets deserialized. /// -/// ```edition2018 -/// use std::fmt; -/// use std::marker::PhantomData; -/// +/// ```edition2021 /// use serde::de::{ /// self, Deserialize, DeserializeSeed, Deserializer, IgnoredAny, SeqAccess, Visitor, /// }; +/// use std::fmt; +/// use std::marker::PhantomData; /// /// /// A seed that can be used to deserialize only the `n`th element of a sequence /// /// while efficiently discarding elements of any type before or after index `n`. @@ -108,7 +107,7 @@ /// # Ok(()) /// # } /// ``` -#[derive(Copy, Clone, Debug, Default)] +#[derive(Copy, Clone, Debug, Default, PartialEq)] pub struct IgnoredAny; impl<'de> Visitor<'de> for IgnoredAny { @@ -198,7 +197,7 @@ where A: SeqAccess<'de>, { - while let Some(IgnoredAny) = try!(seq.next_element()) { + while let Some(IgnoredAny) = tri!(seq.next_element()) { // Gobble } Ok(IgnoredAny) @@ -209,7 +208,7 @@ where A: MapAccess<'de>, { - while let Some((IgnoredAny, IgnoredAny)) = try!(map.next_entry()) { + while let Some((IgnoredAny, IgnoredAny)) = tri!(map.next_entry()) { // Gobble } Ok(IgnoredAny) @@ -228,7 +227,7 @@ where A: EnumAccess<'de>, { - try!(data.variant::()).1.newtype_variant() + tri!(data.variant::()).1.newtype_variant() } } diff -Nru temporalio-1.3.0/vendor/serde/src/de/impls.rs temporalio-1.3.0/vendor/serde/src/de/impls.rs --- temporalio-1.3.0/vendor/serde/src/de/impls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/de/impls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,16 +1,14 @@ -use lib::*; +use crate::lib::*; -use de::{ - Deserialize, Deserializer, EnumAccess, Error, SeqAccess, Unexpected, VariantAccess, Visitor, +use crate::de::{ + Deserialize, Deserializer, EnumAccess, Error, MapAccess, SeqAccess, Unexpected, VariantAccess, + Visitor, }; -#[cfg(any(feature = "std", feature = "alloc", not(no_core_duration)))] -use de::MapAccess; - -use seed::InPlaceSeed; +use crate::seed::InPlaceSeed; #[cfg(any(feature = "std", feature = "alloc"))] -use __private::size_hint; +use crate::de::size_hint; //////////////////////////////////////////////////////////////////////////////// @@ -84,7 +82,7 @@ ($primitive:ident, $nonzero:ident $(cfg($($cfg:tt)*))*, $deserialize:ident $($method:ident!($($val:ident : $visit:ident)*);)*) => { impl_deserialize_num!($primitive, $deserialize $($method!($($val : $visit)*);)*); - #[cfg(all(not(no_num_nonzero), $($($cfg)*)*))] + $(#[cfg($($cfg)*)])* impl<'de> Deserialize<'de> for num::$nonzero { fn deserialize(deserializer: D) -> Result where @@ -681,10 +679,10 @@ where A: SeqAccess<'de>, { - let len = size_hint::cautious(seq.size_hint()); - let mut values = Vec::with_capacity(len); + let capacity = size_hint::cautious::(seq.size_hint()); + let mut values = Vec::::with_capacity(capacity); - while let Some(value) = try!(seq.next_element()) { + while let Some(value) = tri!(seq.next_element()) { values.push(value); } @@ -747,13 +745,9 @@ } } -#[cfg(all( - any(feature = "std", all(not(no_core_cstr), feature = "alloc")), - not(no_de_boxed_c_str) -))] +#[cfg(any(feature = "std", all(not(no_core_cstr), feature = "alloc")))] forwarded_impl!((), Box, CString::into_boxed_c_str); -#[cfg(not(no_core_reverse))] forwarded_impl!((T), Reverse, Reverse); //////////////////////////////////////////////////////////////////////////////// @@ -901,7 +895,7 @@ { let mut values = $with_capacity; - while let Some(value) = try!($access.next_element()) { + while let Some(value) = tri!($access.next_element()) { $insert(&mut values, value); } @@ -936,10 +930,10 @@ A: SeqAccess<'de>, { $clear(&mut self.0); - $reserve(&mut self.0, size_hint::cautious($access.size_hint())); + $reserve(&mut self.0, size_hint::cautious::($access.size_hint())); // FIXME: try to overwrite old values here? (Vec, VecDeque, LinkedList) - while let Some(value) = try!($access.next_element()) { + while let Some(value) = tri!($access.next_element()) { $insert(&mut self.0, value); } @@ -962,7 +956,7 @@ BinaryHeap, seq, BinaryHeap::clear, - BinaryHeap::with_capacity(size_hint::cautious(seq.size_hint())), + BinaryHeap::with_capacity(size_hint::cautious::(seq.size_hint())), BinaryHeap::reserve, BinaryHeap::push ); @@ -992,7 +986,7 @@ HashSet, seq, HashSet::clear, - HashSet::with_capacity_and_hasher(size_hint::cautious(seq.size_hint()), S::default()), + HashSet::with_capacity_and_hasher(size_hint::cautious::(seq.size_hint()), S::default()), HashSet::reserve, HashSet::insert ); @@ -1002,7 +996,7 @@ VecDeque, seq, VecDeque::clear, - VecDeque::with_capacity(size_hint::cautious(seq.size_hint())), + VecDeque::with_capacity(size_hint::cautious::(seq.size_hint())), VecDeque::reserve, VecDeque::push_back ); @@ -1036,9 +1030,10 @@ where A: SeqAccess<'de>, { - let mut values = Vec::with_capacity(size_hint::cautious(seq.size_hint())); + let capacity = size_hint::cautious::(seq.size_hint()); + let mut values = Vec::::with_capacity(capacity); - while let Some(value) = try!(seq.next_element()) { + while let Some(value) = tri!(seq.next_element()) { values.push(value); } @@ -1072,7 +1067,7 @@ where A: SeqAccess<'de>, { - let hint = size_hint::cautious(seq.size_hint()); + let hint = size_hint::cautious::(seq.size_hint()); if let Some(additional) = hint.checked_sub(self.0.len()) { self.0.reserve(additional); } @@ -1080,7 +1075,7 @@ for i in 0..self.0.len() { let next = { let next_place = InPlaceSeed(&mut self.0[i]); - try!(seq.next_element_seed(next_place)) + tri!(seq.next_element_seed(next_place)) }; if next.is_none() { self.0.truncate(i); @@ -1088,7 +1083,7 @@ } } - while let Some(value) = try!(seq.next_element()) { + while let Some(value) = tri!(seq.next_element()) { self.0.push(value); } @@ -1160,7 +1155,7 @@ A: SeqAccess<'de>, { Ok([$( - match try!(seq.next_element()) { + match tri!(seq.next_element()) { Some(val) => val, None => return Err(Error::invalid_length($n, &self)), } @@ -1185,7 +1180,7 @@ { let mut fail_idx = None; for (idx, dest) in self.0[..].iter_mut().enumerate() { - if try!(seq.next_element_seed(InPlaceSeed(dest))).is_none() { + if tri!(seq.next_element_seed(InPlaceSeed(dest))).is_none() { fail_idx = Some(idx); break; } @@ -1283,7 +1278,7 @@ A: SeqAccess<'de>, { $( - let $name = match try!(seq.next_element()) { + let $name = match tri!(seq.next_element()) { Some(value) => value, None => return Err(Error::invalid_length($n, &self)), }; @@ -1317,7 +1312,7 @@ A: SeqAccess<'de>, { $( - if try!(seq.next_element_seed(InPlaceSeed(&mut (self.0).$n))).is_none() { + if tri!(seq.next_element_seed(InPlaceSeed(&mut (self.0).$n))).is_none() { return Err(Error::invalid_length($n, &self)); } )+ @@ -1394,7 +1389,7 @@ { let mut values = $with_capacity; - while let Some((key, value)) = try!($access.next_entry()) { + while let Some((key, value)) = tri!($access.next_entry()) { values.insert(key, value); } @@ -1416,7 +1411,7 @@ map_impl!( HashMap, map, - HashMap::with_capacity_and_hasher(size_hint::cautious(map.size_hint()), S::default()) + HashMap::with_capacity_and_hasher(size_hint::cautious::<(K, V)>(map.size_hint()), S::default()) ); //////////////////////////////////////////////////////////////////////////////// @@ -1450,7 +1445,7 @@ $($variant),* } - static $variants_name: &'static [&'static str] = &[$(stringify!($variant)),*]; + static $variants_name: &[&str] = &[$(stringify!($variant)),*]; impl<'de> Deserialize<'de> for $name_kind { fn deserialize(deserializer: D) -> Result @@ -1540,7 +1535,7 @@ where A: EnumAccess<'de>, { - match try!(data.variant()) { + match tri!(data.variant()) { $( ($name_kind :: $variant, v) => v.newtype_variant().map($name :: $variant), )* @@ -1560,7 +1555,7 @@ if deserializer.is_human_readable() { deserializer.deserialize_str(FromStrVisitor::new("IP address")) } else { - use lib::net::IpAddr; + use crate::lib::net::IpAddr; deserialize_enum! { IpAddr IpAddrKind (V4; b"V4"; 0, V6; b"V6"; 1) "`V4` or `V6`", @@ -1603,7 +1598,7 @@ if deserializer.is_human_readable() { deserializer.deserialize_str(FromStrVisitor::new("socket address")) } else { - use lib::net::SocketAddr; + use crate::lib::net::SocketAddr; deserialize_enum! { SocketAddr SocketAddrKind (V4; b"V4"; 0, V6; b"V6"; 1) "`V4` or `V6`", @@ -1713,7 +1708,7 @@ } } -#[cfg(all(feature = "std", not(no_de_boxed_path)))] +#[cfg(feature = "std")] forwarded_impl!((), Box, PathBuf::into_boxed_path); //////////////////////////////////////////////////////////////////////////////// @@ -1747,7 +1742,7 @@ { use std::os::unix::ffi::OsStringExt; - match try!(data.variant()) { + match tri!(data.variant()) { (OsStringKind::Unix, v) => v.newtype_variant().map(OsString::from_vec), (OsStringKind::Windows, _) => Err(Error::custom( "cannot deserialize Windows OS string on Unix", @@ -1762,7 +1757,7 @@ { use std::os::windows::ffi::OsStringExt; - match try!(data.variant()) { + match tri!(data.variant()) { (OsStringKind::Windows, v) => v .newtype_variant::>() .map(|vec| OsString::from_wide(&vec)), @@ -1794,29 +1789,8 @@ #[cfg(any(feature = "std", feature = "alloc"))] forwarded_impl!((), Box, String::into_boxed_str); -#[cfg(all(no_de_rc_dst, feature = "rc", any(feature = "std", feature = "alloc")))] -forwarded_impl! { - /// This impl requires the [`"rc"`] Cargo feature of Serde. - /// - /// Deserializing a data structure containing `Arc` will not attempt to - /// deduplicate `Arc` references to the same data. Every deserialized `Arc` - /// will end up with a strong count of 1. - /// - /// [`"rc"`]: https://serde.rs/feature-flags.html#-features-rc - (T), Arc, Arc::new -} - -#[cfg(all(no_de_rc_dst, feature = "rc", any(feature = "std", feature = "alloc")))] -forwarded_impl! { - /// This impl requires the [`"rc"`] Cargo feature of Serde. - /// - /// Deserializing a data structure containing `Rc` will not attempt to - /// deduplicate `Rc` references to the same data. Every deserialized `Rc` - /// will end up with a strong count of 1. - /// - /// [`"rc"`]: https://serde.rs/feature-flags.html#-features-rc - (T), Rc, Rc::new -} +#[cfg(all(feature = "std", any(unix, windows)))] +forwarded_impl!((), Box, OsString::into_boxed_os_str); #[cfg(any(feature = "std", feature = "alloc"))] impl<'de, 'a, T: ?Sized> Deserialize<'de> for Cow<'a, T> @@ -1848,7 +1822,7 @@ where D: Deserializer<'de>, { - try!(Option::::deserialize(deserializer)); + tri!(Option::::deserialize(deserializer)); Ok(RcWeak::new()) } } @@ -1866,18 +1840,14 @@ where D: Deserializer<'de>, { - try!(Option::::deserialize(deserializer)); + tri!(Option::::deserialize(deserializer)); Ok(ArcWeak::new()) } } //////////////////////////////////////////////////////////////////////////////// -#[cfg(all( - not(no_de_rc_dst), - feature = "rc", - any(feature = "std", feature = "alloc") -))] +#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))] macro_rules! box_forwarded_impl { ( $(#[doc = $doc:tt])* @@ -1898,11 +1868,7 @@ }; } -#[cfg(all( - not(no_de_rc_dst), - feature = "rc", - any(feature = "std", feature = "alloc") -))] +#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))] box_forwarded_impl! { /// This impl requires the [`"rc"`] Cargo feature of Serde. /// @@ -1914,11 +1880,7 @@ Rc } -#[cfg(all( - not(no_de_rc_dst), - feature = "rc", - any(feature = "std", feature = "alloc") -))] +#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))] box_forwarded_impl! { /// This impl requires the [`"rc"`] Cargo feature of Serde. /// @@ -1962,7 +1924,6 @@ // secs: u64, // nanos: u32, // } -#[cfg(any(feature = "std", not(no_core_duration)))] impl<'de> Deserialize<'de> for Duration { fn deserialize(deserializer: D) -> Result where @@ -2010,7 +1971,7 @@ b"secs" => Ok(Field::Secs), b"nanos" => Ok(Field::Nanos), _ => { - let value = ::__private::from_utf8_lossy(value); + let value = crate::__private::from_utf8_lossy(value); Err(Error::unknown_field(&*value, FIELDS)) } } @@ -2045,19 +2006,19 @@ where A: SeqAccess<'de>, { - let secs: u64 = match try!(seq.next_element()) { + let secs: u64 = match tri!(seq.next_element()) { Some(value) => value, None => { return Err(Error::invalid_length(0, &self)); } }; - let nanos: u32 = match try!(seq.next_element()) { + let nanos: u32 = match tri!(seq.next_element()) { Some(value) => value, None => { return Err(Error::invalid_length(1, &self)); } }; - try!(check_overflow(secs, nanos)); + tri!(check_overflow(secs, nanos)); Ok(Duration::new(secs, nanos)) } @@ -2067,19 +2028,19 @@ { let mut secs: Option = None; let mut nanos: Option = None; - while let Some(key) = try!(map.next_key()) { + while let Some(key) = tri!(map.next_key()) { match key { Field::Secs => { if secs.is_some() { return Err(::duplicate_field("secs")); } - secs = Some(try!(map.next_value())); + secs = Some(tri!(map.next_value())); } Field::Nanos => { if nanos.is_some() { return Err(::duplicate_field("nanos")); } - nanos = Some(try!(map.next_value())); + nanos = Some(tri!(map.next_value())); } } } @@ -2091,7 +2052,7 @@ Some(nanos) => nanos, None => return Err(::missing_field("nanos")), }; - try!(check_overflow(secs, nanos)); + tri!(check_overflow(secs, nanos)); Ok(Duration::new(secs, nanos)) } } @@ -2183,19 +2144,19 @@ where A: SeqAccess<'de>, { - let secs: u64 = match try!(seq.next_element()) { + let secs: u64 = match tri!(seq.next_element()) { Some(value) => value, None => { return Err(Error::invalid_length(0, &self)); } }; - let nanos: u32 = match try!(seq.next_element()) { + let nanos: u32 = match tri!(seq.next_element()) { Some(value) => value, None => { return Err(Error::invalid_length(1, &self)); } }; - try!(check_overflow(secs, nanos)); + tri!(check_overflow(secs, nanos)); Ok(Duration::new(secs, nanos)) } @@ -2205,7 +2166,7 @@ { let mut secs: Option = None; let mut nanos: Option = None; - while let Some(key) = try!(map.next_key()) { + while let Some(key) = tri!(map.next_key()) { match key { Field::Secs => { if secs.is_some() { @@ -2213,7 +2174,7 @@ "secs_since_epoch", )); } - secs = Some(try!(map.next_value())); + secs = Some(tri!(map.next_value())); } Field::Nanos => { if nanos.is_some() { @@ -2221,7 +2182,7 @@ "nanos_since_epoch", )); } - nanos = Some(try!(map.next_value())); + nanos = Some(tri!(map.next_value())); } } } @@ -2233,13 +2194,13 @@ Some(nanos) => nanos, None => return Err(::missing_field("nanos_since_epoch")), }; - try!(check_overflow(secs, nanos)); + tri!(check_overflow(secs, nanos)); Ok(Duration::new(secs, nanos)) } } const FIELDS: &[&str] = &["secs_since_epoch", "nanos_since_epoch"]; - let duration = try!(deserializer.deserialize_struct("SystemTime", FIELDS, DurationVisitor)); + let duration = tri!(deserializer.deserialize_struct("SystemTime", FIELDS, DurationVisitor)); #[cfg(not(no_systemtime_checked_add))] let ret = UNIX_EPOCH .checked_add(duration) @@ -2256,9 +2217,9 @@ // // #[derive(Deserialize)] // #[serde(deny_unknown_fields)] -// struct Range { -// start: u64, -// end: u32, +// struct Range { +// start: Idx, +// end: Idx, // } impl<'de, Idx> Deserialize<'de> for Range where @@ -2268,7 +2229,7 @@ where D: Deserializer<'de>, { - let (start, end) = try!(deserializer.deserialize_struct( + let (start, end) = tri!(deserializer.deserialize_struct( "Range", range::FIELDS, range::RangeVisitor { @@ -2280,7 +2241,6 @@ } } -#[cfg(not(no_range_inclusive))] impl<'de, Idx> Deserialize<'de> for RangeInclusive where Idx: Deserialize<'de>, @@ -2289,7 +2249,7 @@ where D: Deserializer<'de>, { - let (start, end) = try!(deserializer.deserialize_struct( + let (start, end) = tri!(deserializer.deserialize_struct( "RangeInclusive", range::FIELDS, range::RangeVisitor { @@ -2302,9 +2262,9 @@ } mod range { - use lib::*; + use crate::lib::*; - use de::{Deserialize, Deserializer, Error, MapAccess, SeqAccess, Visitor}; + use crate::de::{Deserialize, Deserializer, Error, MapAccess, SeqAccess, Visitor}; pub const FIELDS: &[&str] = &["start", "end"]; @@ -2350,7 +2310,7 @@ b"start" => Ok(Field::Start), b"end" => Ok(Field::End), _ => { - let value = ::__private::from_utf8_lossy(value); + let value = crate::__private::from_utf8_lossy(value); Err(Error::unknown_field(&*value, FIELDS)) } } @@ -2380,13 +2340,13 @@ where A: SeqAccess<'de>, { - let start: Idx = match try!(seq.next_element()) { + let start: Idx = match tri!(seq.next_element()) { Some(value) => value, None => { return Err(Error::invalid_length(0, &self)); } }; - let end: Idx = match try!(seq.next_element()) { + let end: Idx = match tri!(seq.next_element()) { Some(value) => value, None => { return Err(Error::invalid_length(1, &self)); @@ -2401,19 +2361,19 @@ { let mut start: Option = None; let mut end: Option = None; - while let Some(key) = try!(map.next_key()) { + while let Some(key) = tri!(map.next_key()) { match key { Field::Start => { if start.is_some() { return Err(::duplicate_field("start")); } - start = Some(try!(map.next_value())); + start = Some(tri!(map.next_value())); } Field::End => { if end.is_some() { return Err(::duplicate_field("end")); } - end = Some(try!(map.next_value())); + end = Some(tri!(map.next_value())); } } } @@ -2432,7 +2392,282 @@ //////////////////////////////////////////////////////////////////////////////// -#[cfg(any(not(no_ops_bound), all(feature = "std", not(no_collections_bound))))] +// Similar to: +// +// #[derive(Deserialize)] +// #[serde(deny_unknown_fields)] +// struct RangeFrom { +// start: Idx, +// } +impl<'de, Idx> Deserialize<'de> for RangeFrom +where + Idx: Deserialize<'de>, +{ + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let start = tri!(deserializer.deserialize_struct( + "RangeFrom", + range_from::FIELDS, + range_from::RangeFromVisitor { + expecting: "struct RangeFrom", + phantom: PhantomData, + }, + )); + Ok(start..) + } +} + +mod range_from { + use crate::lib::*; + + use crate::de::{Deserialize, Deserializer, Error, MapAccess, SeqAccess, Visitor}; + + pub const FIELDS: &[&str] = &["end"]; + + // If this were outside of the serde crate, it would just use: + // + // #[derive(Deserialize)] + // #[serde(field_identifier, rename_all = "lowercase")] + enum Field { + End, + } + + impl<'de> Deserialize<'de> for Field { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct FieldVisitor; + + impl<'de> Visitor<'de> for FieldVisitor { + type Value = Field; + + fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { + formatter.write_str("`end`") + } + + fn visit_str(self, value: &str) -> Result + where + E: Error, + { + match value { + "end" => Ok(Field::End), + _ => Err(Error::unknown_field(value, FIELDS)), + } + } + + fn visit_bytes(self, value: &[u8]) -> Result + where + E: Error, + { + match value { + b"end" => Ok(Field::End), + _ => { + let value = crate::__private::from_utf8_lossy(value); + Err(Error::unknown_field(&*value, FIELDS)) + } + } + } + } + + deserializer.deserialize_identifier(FieldVisitor) + } + } + + pub struct RangeFromVisitor { + pub expecting: &'static str, + pub phantom: PhantomData, + } + + impl<'de, Idx> Visitor<'de> for RangeFromVisitor + where + Idx: Deserialize<'de>, + { + type Value = Idx; + + fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { + formatter.write_str(self.expecting) + } + + fn visit_seq(self, mut seq: A) -> Result + where + A: SeqAccess<'de>, + { + let end: Idx = match tri!(seq.next_element()) { + Some(value) => value, + None => { + return Err(Error::invalid_length(0, &self)); + } + }; + Ok(end) + } + + fn visit_map(self, mut map: A) -> Result + where + A: MapAccess<'de>, + { + let mut end: Option = None; + while let Some(key) = tri!(map.next_key()) { + match key { + Field::End => { + if end.is_some() { + return Err(::duplicate_field("end")); + } + end = Some(tri!(map.next_value())); + } + } + } + let end = match end { + Some(end) => end, + None => return Err(::missing_field("end")), + }; + Ok(end) + } + } +} + +//////////////////////////////////////////////////////////////////////////////// + +// Similar to: +// +// #[derive(Deserialize)] +// #[serde(deny_unknown_fields)] +// struct RangeTo { +// start: Idx, +// } +impl<'de, Idx> Deserialize<'de> for RangeTo +where + Idx: Deserialize<'de>, +{ + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let end = tri!(deserializer.deserialize_struct( + "RangeTo", + range_to::FIELDS, + range_to::RangeToVisitor { + expecting: "struct RangeTo", + phantom: PhantomData, + }, + )); + Ok(..end) + } +} + +mod range_to { + use crate::lib::*; + + use crate::de::{Deserialize, Deserializer, Error, MapAccess, SeqAccess, Visitor}; + + pub const FIELDS: &[&str] = &["start"]; + + // If this were outside of the serde crate, it would just use: + // + // #[derive(Deserialize)] + // #[serde(field_identifier, rename_all = "lowercase")] + enum Field { + Start, + } + + impl<'de> Deserialize<'de> for Field { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct FieldVisitor; + + impl<'de> Visitor<'de> for FieldVisitor { + type Value = Field; + + fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { + formatter.write_str("`start`") + } + + fn visit_str(self, value: &str) -> Result + where + E: Error, + { + match value { + "start" => Ok(Field::Start), + _ => Err(Error::unknown_field(value, FIELDS)), + } + } + + fn visit_bytes(self, value: &[u8]) -> Result + where + E: Error, + { + match value { + b"start" => Ok(Field::Start), + _ => { + let value = crate::__private::from_utf8_lossy(value); + Err(Error::unknown_field(&*value, FIELDS)) + } + } + } + } + + deserializer.deserialize_identifier(FieldVisitor) + } + } + + pub struct RangeToVisitor { + pub expecting: &'static str, + pub phantom: PhantomData, + } + + impl<'de, Idx> Visitor<'de> for RangeToVisitor + where + Idx: Deserialize<'de>, + { + type Value = Idx; + + fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { + formatter.write_str(self.expecting) + } + + fn visit_seq(self, mut seq: A) -> Result + where + A: SeqAccess<'de>, + { + let start: Idx = match tri!(seq.next_element()) { + Some(value) => value, + None => { + return Err(Error::invalid_length(0, &self)); + } + }; + Ok(start) + } + + fn visit_map(self, mut map: A) -> Result + where + A: MapAccess<'de>, + { + let mut start: Option = None; + while let Some(key) = tri!(map.next_key()) { + match key { + Field::Start => { + if start.is_some() { + return Err(::duplicate_field("start")); + } + start = Some(tri!(map.next_value())); + } + } + } + let start = match start { + Some(start) => start, + None => return Err(::missing_field("start")), + }; + Ok(start) + } + } +} + +//////////////////////////////////////////////////////////////////////////////// + impl<'de, T> Deserialize<'de> for Bound where T: Deserialize<'de>, @@ -2524,7 +2759,7 @@ where A: EnumAccess<'de>, { - match try!(data.variant()) { + match tri!(data.variant()) { (Field::Unbounded, v) => v.unit_variant().map(|()| Bound::Unbounded), (Field::Included, v) => v.newtype_variant().map(Bound::Included), (Field::Excluded, v) => v.newtype_variant().map(Bound::Excluded), @@ -2633,7 +2868,7 @@ where A: EnumAccess<'de>, { - match try!(data.variant()) { + match tri!(data.variant()) { (Field::Ok, v) => v.newtype_variant().map(Ok), (Field::Err, v) => v.newtype_variant().map(Err), } diff -Nru temporalio-1.3.0/vendor/serde/src/de/mod.rs temporalio-1.3.0/vendor/serde/src/de/mod.rs --- temporalio-1.3.0/vendor/serde/src/de/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/de/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -112,7 +112,7 @@ //! [derive section of the manual]: https://serde.rs/derive.html //! [data formats]: https://serde.rs/#data-formats -use lib::*; +use crate::lib::*; //////////////////////////////////////////////////////////////////////////////// @@ -122,16 +122,19 @@ mod format; mod ignored_any; mod impls; -mod utf8; +pub(crate) mod size_hint; pub use self::ignored_any::IgnoredAny; +#[cfg(not(any(feature = "std", feature = "unstable")))] +#[doc(no_inline)] +pub use crate::std_error::Error as StdError; +#[cfg(all(feature = "unstable", not(feature = "std")))] +#[doc(no_inline)] +pub use core::error::Error as StdError; #[cfg(feature = "std")] #[doc(no_inline)] pub use std::error::Error as StdError; -#[cfg(not(feature = "std"))] -#[doc(no_inline)] -pub use std_error::Error as StdError; //////////////////////////////////////////////////////////////////////////////// @@ -162,7 +165,7 @@ /// /// The message should not be capitalized and should not end with a period. /// - /// ```edition2018 + /// ```edition2021 /// # use std::str::FromStr; /// # /// # struct IpAddr; @@ -307,7 +310,7 @@ /// This is used as an argument to the `invalid_type`, `invalid_value`, and /// `invalid_length` methods of the `Error` trait to build error messages. /// -/// ```edition2018 +/// ```edition2021 /// # use std::fmt; /// # /// # use serde::de::{self, Unexpected, Visitor}; @@ -432,10 +435,9 @@ /// Within the context of a `Visitor` implementation, the `Visitor` itself /// (`&self`) is an implementation of this trait. /// -/// ```edition2018 -/// # use std::fmt; -/// # +/// ```edition2021 /// # use serde::de::{self, Unexpected, Visitor}; +/// # use std::fmt; /// # /// # struct Example; /// # @@ -457,7 +459,7 @@ /// /// Outside of a `Visitor`, `&"..."` can be used. /// -/// ```edition2018 +/// ```edition2021 /// # use serde::de::{self, Unexpected}; /// # /// # fn example() -> Result<(), E> @@ -465,7 +467,10 @@ /// # E: de::Error, /// # { /// # let v = true; -/// return Err(de::Error::invalid_type(Unexpected::Bool(v), &"a negative integer")); +/// return Err(de::Error::invalid_type( +/// Unexpected::Bool(v), +/// &"a negative integer", +/// )); /// # } /// ``` pub trait Expected { @@ -564,7 +569,7 @@ D: Deserializer<'de>, { // Default implementation just delegates to `deserialize` impl. - *place = try!(Deserialize::deserialize(deserializer)); + *place = tri!(Deserialize::deserialize(deserializer)); Ok(()) } } @@ -577,7 +582,7 @@ /// from the input string, but a `from_reader` function may only deserialize /// owned data. /// -/// ```edition2018 +/// ```edition2021 /// # use serde::de::{Deserialize, DeserializeOwned}; /// # use std::io::{Read, Result}; /// # @@ -616,7 +621,7 @@ /// /// The canonical API for stateless deserialization looks like this: /// -/// ```edition2018 +/// ```edition2021 /// # use serde::Deserialize; /// # /// # enum Error {} @@ -630,7 +635,7 @@ /// Adjusting an API like this to support stateful deserialization is a matter /// of accepting a seed as input: /// -/// ```edition2018 +/// ```edition2021 /// # use serde::de::DeserializeSeed; /// # /// # enum Error {} @@ -663,12 +668,11 @@ /// into it. This requires stateful deserialization using the `DeserializeSeed` /// trait. /// -/// ```edition2018 +/// ```edition2021 +/// use serde::de::{Deserialize, DeserializeSeed, Deserializer, SeqAccess, Visitor}; /// use std::fmt; /// use std::marker::PhantomData; /// -/// use serde::de::{Deserialize, DeserializeSeed, Deserializer, SeqAccess, Visitor}; -/// /// // A DeserializeSeed implementation that uses stateful deserialization to /// // append array elements onto the end of an existing vector. The preexisting /// // state ("seed") in this case is the Vec. The `deserialize` method of @@ -709,7 +713,7 @@ /// { /// // Decrease the number of reallocations if there are many elements /// if let Some(size_hint) = seq.size_hint() { -/// self.0.reserve(size_hint); +/// self.0.reserve(size_hint); /// } /// /// // Visit each element in the inner array and push it onto @@ -1158,7 +1162,7 @@ /// human-readable one and binary formats like Postcard will prefer the /// compact one. /// - /// ```edition2018 + /// ```edition2021 /// # use std::ops::Add; /// # use std::str::FromStr; /// # @@ -1225,11 +1229,11 @@ #[doc(hidden)] fn __deserialize_content( self, - _: ::actually_private::T, + _: crate::actually_private::T, visitor: V, - ) -> Result<::private::de::Content<'de>, Self::Error> + ) -> Result, Self::Error> where - V: Visitor<'de, Value = ::private::de::Content<'de>>, + V: Visitor<'de, Value = crate::__private::de::Content<'de>>, { self.deserialize_any(visitor) } @@ -1249,10 +1253,9 @@ /// /// # Example /// -/// ```edition2018 -/// # use std::fmt; -/// # +/// ```edition2021 /// # use serde::de::{self, Unexpected, Visitor}; +/// # use std::fmt; /// # /// /// A visitor that deserializes a long string - a string containing at least /// /// some minimum number of bytes. @@ -1290,7 +1293,7 @@ /// "an integer between 0 and 64". The message should not be capitalized and /// should not end with a period. /// - /// ```edition2018 + /// ```edition2021 /// # use std::fmt; /// # /// # struct S { @@ -1474,7 +1477,7 @@ where E: Error, { - self.visit_str(utf8::encode(v).as_str()) + self.visit_str(v.encode_utf8(&mut [0u8; 4])) } /// The input contains a string. The lifetime of the string is ephemeral and @@ -1551,7 +1554,6 @@ where E: Error, { - let _ = v; Err(Error::invalid_type(Unexpected::Bytes(v), &self)) } @@ -1831,9 +1833,9 @@ K: DeserializeSeed<'de>, V: DeserializeSeed<'de>, { - match try!(self.next_key_seed(kseed)) { + match tri!(self.next_key_seed(kseed)) { Some(key) => { - let value = try!(self.next_value_seed(vseed)); + let value = tri!(self.next_value_seed(vseed)); Ok(Some((key, value))) } None => Ok(None), @@ -2035,7 +2037,7 @@ /// If the data contains a different type of variant, the following /// `invalid_type` error should be constructed: /// - /// ```edition2018 + /// ```edition2021 /// # use serde::de::{self, value, DeserializeSeed, Visitor, VariantAccess, Unexpected}; /// # /// # struct X; @@ -2075,7 +2077,7 @@ /// If the data contains a different type of variant, the following /// `invalid_type` error should be constructed: /// - /// ```edition2018 + /// ```edition2021 /// # use serde::de::{self, value, DeserializeSeed, Visitor, VariantAccess, Unexpected}; /// # /// # struct X; @@ -2131,7 +2133,7 @@ /// If the data contains a different type of variant, the following /// `invalid_type` error should be constructed: /// - /// ```edition2018 + /// ```edition2021 /// # use serde::de::{self, value, DeserializeSeed, Visitor, VariantAccess, Unexpected}; /// # /// # struct X; @@ -2148,11 +2150,7 @@ /// # T: DeserializeSeed<'de>, /// # { unimplemented!() } /// # - /// fn tuple_variant( - /// self, - /// _len: usize, - /// _visitor: V, - /// ) -> Result + /// fn tuple_variant(self, _len: usize, _visitor: V) -> Result /// where /// V: Visitor<'de>, /// { @@ -2178,7 +2176,7 @@ /// If the data contains a different type of variant, the following /// `invalid_type` error should be constructed: /// - /// ```edition2018 + /// ```edition2021 /// # use serde::de::{self, value, DeserializeSeed, Visitor, VariantAccess, Unexpected}; /// # /// # struct X; @@ -2238,10 +2236,10 @@ /// /// # Example /// -/// ```edition2018 +/// ```edition2021 +/// use serde::de::{value, Deserialize, IntoDeserializer}; +/// use serde_derive::Deserialize; /// use std::str::FromStr; -/// use serde::Deserialize; -/// use serde::de::{value, IntoDeserializer}; /// /// #[derive(Deserialize)] /// enum Setting { @@ -2285,12 +2283,12 @@ 1 => write!(formatter, "`{}`", self.names[0]), 2 => write!(formatter, "`{}` or `{}`", self.names[0], self.names[1]), _ => { - try!(write!(formatter, "one of ")); + tri!(write!(formatter, "one of ")); for (i, alt) in self.names.iter().enumerate() { if i > 0 { - try!(write!(formatter, ", ")); + tri!(write!(formatter, ", ")); } - try!(write!(formatter, "`{}`", alt)); + tri!(write!(formatter, "`{}`", alt)); } Ok(()) } diff -Nru temporalio-1.3.0/vendor/serde/src/de/seed.rs temporalio-1.3.0/vendor/serde/src/de/seed.rs --- temporalio-1.3.0/vendor/serde/src/de/seed.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/de/seed.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -use de::{Deserialize, DeserializeSeed, Deserializer}; +use crate::de::{Deserialize, DeserializeSeed, Deserializer}; /// A DeserializeSeed helper for implementing deserialize_in_place Visitors. /// diff -Nru temporalio-1.3.0/vendor/serde/src/de/size_hint.rs temporalio-1.3.0/vendor/serde/src/de/size_hint.rs --- temporalio-1.3.0/vendor/serde/src/de/size_hint.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/de/size_hint.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,29 @@ +use crate::lib::*; + +pub fn from_bounds(iter: &I) -> Option +where + I: Iterator, +{ + helper(iter.size_hint()) +} + +#[cfg(any(feature = "std", feature = "alloc"))] +pub fn cautious(hint: Option) -> usize { + const MAX_PREALLOC_BYTES: usize = 1024 * 1024; + + if mem::size_of::() == 0 { + 0 + } else { + cmp::min( + hint.unwrap_or(0), + MAX_PREALLOC_BYTES / mem::size_of::(), + ) + } +} + +fn helper(bounds: (usize, Option)) -> Option { + match bounds { + (lower, Some(upper)) if lower == upper => Some(upper), + _ => None, + } +} diff -Nru temporalio-1.3.0/vendor/serde/src/de/utf8.rs temporalio-1.3.0/vendor/serde/src/de/utf8.rs --- temporalio-1.3.0/vendor/serde/src/de/utf8.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/de/utf8.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -use lib::*; - -const TAG_CONT: u8 = 0b1000_0000; -const TAG_TWO_B: u8 = 0b1100_0000; -const TAG_THREE_B: u8 = 0b1110_0000; -const TAG_FOUR_B: u8 = 0b1111_0000; -const MAX_ONE_B: u32 = 0x80; -const MAX_TWO_B: u32 = 0x800; -const MAX_THREE_B: u32 = 0x10000; - -#[inline] -pub fn encode(c: char) -> Encode { - let code = c as u32; - let mut buf = [0; 4]; - let pos = if code < MAX_ONE_B { - buf[3] = code as u8; - 3 - } else if code < MAX_TWO_B { - buf[2] = (code >> 6 & 0x1F) as u8 | TAG_TWO_B; - buf[3] = (code & 0x3F) as u8 | TAG_CONT; - 2 - } else if code < MAX_THREE_B { - buf[1] = (code >> 12 & 0x0F) as u8 | TAG_THREE_B; - buf[2] = (code >> 6 & 0x3F) as u8 | TAG_CONT; - buf[3] = (code & 0x3F) as u8 | TAG_CONT; - 1 - } else { - buf[0] = (code >> 18 & 0x07) as u8 | TAG_FOUR_B; - buf[1] = (code >> 12 & 0x3F) as u8 | TAG_CONT; - buf[2] = (code >> 6 & 0x3F) as u8 | TAG_CONT; - buf[3] = (code & 0x3F) as u8 | TAG_CONT; - 0 - }; - Encode { buf, pos } -} - -pub struct Encode { - buf: [u8; 4], - pos: usize, -} - -impl Encode { - pub fn as_str(&self) -> &str { - str::from_utf8(&self.buf[self.pos..]).unwrap() - } -} diff -Nru temporalio-1.3.0/vendor/serde/src/de/value.rs temporalio-1.3.0/vendor/serde/src/de/value.rs --- temporalio-1.3.0/vendor/serde/src/de/value.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/de/value.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,10 @@ //! Building blocks for deserializing basic values using the `IntoDeserializer` //! trait. //! -//! ```edition2018 +//! ```edition2021 +//! use serde::de::{value, Deserialize, IntoDeserializer}; +//! use serde_derive::Deserialize; //! use std::str::FromStr; -//! use serde::Deserialize; -//! use serde::de::{value, IntoDeserializer}; //! //! #[derive(Deserialize)] //! enum Setting { @@ -21,12 +21,11 @@ //! } //! ``` -use lib::*; +use crate::lib::*; use self::private::{First, Second}; -use __private::size_hint; -use de::{self, Deserializer, Expected, IntoDeserializer, SeqAccess, Visitor}; -use ser; +use crate::de::{self, size_hint, Deserializer, Expected, IntoDeserializer, SeqAccess, Visitor}; +use crate::ser; //////////////////////////////////////////////////////////////////////////////// @@ -937,8 +936,8 @@ where V: de::Visitor<'de>, { - let v = try!(visitor.visit_seq(&mut self)); - try!(self.end()); + let v = tri!(visitor.visit_seq(&mut self)); + tri!(self.end()); Ok(v) } @@ -1162,8 +1161,8 @@ where V: de::Visitor<'de>, { - let value = try!(visitor.visit_map(&mut self)); - try!(self.end()); + let value = tri!(visitor.visit_map(&mut self)); + tri!(self.end()); Ok(value) } @@ -1171,8 +1170,8 @@ where V: de::Visitor<'de>, { - let value = try!(visitor.visit_seq(&mut self)); - try!(self.end()); + let value = tri!(visitor.visit_seq(&mut self)); + tri!(self.end()); Ok(value) } @@ -1236,8 +1235,8 @@ { match self.next_pair() { Some((key, value)) => { - let key = try!(kseed.deserialize(key.into_deserializer())); - let value = try!(vseed.deserialize(value.into_deserializer())); + let key = tri!(kseed.deserialize(key.into_deserializer())); + let value = tri!(vseed.deserialize(value.into_deserializer())); Ok(Some((key, value))) } None => Ok(None), @@ -1341,7 +1340,7 @@ V: de::Visitor<'de>, { let mut pair_visitor = PairVisitor(Some(self.0), Some(self.1), PhantomData); - let pair = try!(visitor.visit_seq(&mut pair_visitor)); + let pair = tri!(visitor.visit_seq(&mut pair_visitor)); if pair_visitor.1.is_none() { Ok(pair) } else { @@ -1501,7 +1500,7 @@ where T: de::DeserializeSeed<'de>, { - match try!(self.map.next_key_seed(seed)) { + match tri!(self.map.next_key_seed(seed)) { Some(key) => Ok((key, private::map_as_enum(self.map))), None => Err(de::Error::invalid_type(de::Unexpected::Map, &"enum")), } @@ -1546,9 +1545,11 @@ //////////////////////////////////////////////////////////////////////////////// mod private { - use lib::*; + use crate::lib::*; - use de::{self, DeserializeSeed, Deserializer, MapAccess, Unexpected, VariantAccess, Visitor}; + use crate::de::{ + self, DeserializeSeed, Deserializer, MapAccess, Unexpected, VariantAccess, Visitor, + }; pub struct UnitOnly { marker: PhantomData, diff -Nru temporalio-1.3.0/vendor/serde/src/integer128.rs temporalio-1.3.0/vendor/serde/src/integer128.rs --- temporalio-1.3.0/vendor/serde/src/integer128.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/integer128.rs 2023-10-30 19:40:00.000000000 +0000 @@ -9,7 +9,7 @@ /// or do not target platforms that lack 128-bit integers, do not need to /// bother with this macro and may assume support for 128-bit integers. /// -/// ```edition2018 +/// ```edition2021 /// # use serde::__private::doc::Error; /// # /// # struct MySerializer; @@ -50,7 +50,7 @@ /// When Serde is built with support for 128-bit integers, this macro expands /// transparently into just the input tokens. /// -/// ```edition2018 +/// ```edition2021 /// macro_rules! serde_if_integer128 { /// ($($tt:tt)*) => { /// $($tt)* @@ -61,7 +61,7 @@ /// When built without support for 128-bit integers, this macro expands to /// nothing. /// -/// ```edition2018 +/// ```edition2021 /// macro_rules! serde_if_integer128 { /// ($($tt:tt)*) => {}; /// } diff -Nru temporalio-1.3.0/vendor/serde/src/lib.rs temporalio-1.3.0/vendor/serde/src/lib.rs --- temporalio-1.3.0/vendor/serde/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -93,7 +93,7 @@ //////////////////////////////////////////////////////////////////////////////// // Serde types in rustdoc of other crates get linked to here. -#![doc(html_root_url = "https://docs.rs/serde/1.0.166")] +#![doc(html_root_url = "https://docs.rs/serde/1.0.186")] // Support using Serde without the standard library! #![cfg_attr(not(feature = "std"), no_std)] // Unstable functionality only if the user asks for it. For tracking and @@ -102,53 +102,51 @@ // https://github.com/serde-rs/serde/issues/812 #![cfg_attr(feature = "unstable", feature(error_in_core, never_type))] #![allow(unknown_lints, bare_trait_objects, deprecated)] -#![cfg_attr(feature = "cargo-clippy", allow(renamed_and_removed_lints))] // Ignored clippy and clippy_pedantic lints -#![cfg_attr( - feature = "cargo-clippy", - allow( - // clippy bug: https://github.com/rust-lang/rust-clippy/issues/5704 - unnested_or_patterns, - // clippy bug: https://github.com/rust-lang/rust-clippy/issues/7768 - semicolon_if_nothing_returned, - // not available in our oldest supported compiler - empty_enum, - type_repetition_in_bounds, // https://github.com/rust-lang/rust-clippy/issues/8772 - // integer and float ser/de requires these sorts of casts - cast_possible_truncation, - cast_possible_wrap, - cast_sign_loss, - // things are often more readable this way - cast_lossless, - module_name_repetitions, - option_if_let_else, - single_match_else, - type_complexity, - use_self, - zero_prefixed_literal, - // correctly used - derive_partial_eq_without_eq, - enum_glob_use, - explicit_auto_deref, - let_underscore_untyped, - map_err_ignore, - new_without_default, - result_unit_err, - wildcard_imports, - // not practical - needless_pass_by_value, - similar_names, - too_many_lines, - // preference - doc_markdown, - unseparated_literal_suffix, - // false positive - needless_doctest_main, - // noisy - missing_errors_doc, - must_use_candidate, - ) +#![allow( + // clippy bug: https://github.com/rust-lang/rust-clippy/issues/5704 + clippy::unnested_or_patterns, + // clippy bug: https://github.com/rust-lang/rust-clippy/issues/7768 + clippy::semicolon_if_nothing_returned, + // not available in our oldest supported compiler + clippy::empty_enum, + clippy::type_repetition_in_bounds, // https://github.com/rust-lang/rust-clippy/issues/8772 + // integer and float ser/de requires these sorts of casts + clippy::cast_possible_truncation, + clippy::cast_possible_wrap, + clippy::cast_sign_loss, + // things are often more readable this way + clippy::cast_lossless, + clippy::module_name_repetitions, + clippy::option_if_let_else, + clippy::single_match_else, + clippy::type_complexity, + clippy::use_self, + clippy::zero_prefixed_literal, + // correctly used + clippy::derive_partial_eq_without_eq, + clippy::enum_glob_use, + clippy::explicit_auto_deref, + clippy::let_underscore_untyped, + clippy::map_err_ignore, + clippy::new_without_default, + clippy::result_unit_err, + clippy::wildcard_imports, + // not practical + clippy::needless_pass_by_value, + clippy::similar_names, + clippy::too_many_lines, + // preference + clippy::doc_markdown, + clippy::unseparated_literal_suffix, + // false positive + clippy::needless_doctest_main, + // noisy + clippy::missing_errors_doc, + clippy::must_use_candidate, )] +// Restrictions +#![deny(clippy::question_mark_used)] // Rustc lints. #![deny(missing_docs, unused_imports)] @@ -175,14 +173,16 @@ pub use self::core::cell::{Cell, RefCell}; pub use self::core::clone::{self, Clone}; + pub use self::core::cmp::Reverse; pub use self::core::convert::{self, From, Into}; pub use self::core::default::{self, Default}; pub use self::core::fmt::{self, Debug, Display}; pub use self::core::marker::{self, PhantomData}; pub use self::core::num::Wrapping; - pub use self::core::ops::Range; + pub use self::core::ops::{Bound, Range, RangeFrom, RangeInclusive, RangeTo}; pub use self::core::option::{self, Option}; pub use self::core::result::{self, Result}; + pub use self::core::time::Duration; #[cfg(all(feature = "alloc", not(feature = "std")))] pub use alloc::borrow::{Cow, ToOwned}; @@ -220,7 +220,7 @@ pub use std::collections::{BTreeMap, BTreeSet, BinaryHeap, LinkedList, VecDeque}; #[cfg(all(not(no_core_cstr), not(feature = "std")))] - pub use core::ffi::CStr; + pub use self::core::ffi::CStr; #[cfg(feature = "std")] pub use std::ffi::CStr; @@ -247,18 +247,6 @@ #[cfg(feature = "std")] pub use std::time::{SystemTime, UNIX_EPOCH}; - #[cfg(all(feature = "std", not(no_collections_bound), no_ops_bound))] - pub use std::collections::Bound; - - #[cfg(not(no_core_reverse))] - pub use self::core::cmp::Reverse; - - #[cfg(not(no_ops_bound))] - pub use self::core::ops::Bound; - - #[cfg(not(no_range_inclusive))] - pub use self::core::ops::RangeInclusive; - #[cfg(all(feature = "std", no_target_has_atomic, not(no_std_atomic)))] pub use std::sync::atomic::{ AtomicBool, AtomicI16, AtomicI32, AtomicI8, AtomicIsize, AtomicU16, AtomicU32, AtomicU8, @@ -279,16 +267,13 @@ pub use std::sync::atomic::{AtomicI64, AtomicU64}; #[cfg(all(feature = "std", not(no_target_has_atomic), target_has_atomic = "ptr"))] pub use std::sync::atomic::{AtomicIsize, AtomicUsize}; - - #[cfg(any(feature = "std", not(no_core_duration)))] - pub use self::core::time::Duration; } // None of this crate's error handling needs the `From::from` error conversion // performed implicitly by the `?` operator or the standard library's `try!` // macro. This simplified macro gives a 5.5% improvement in compile time // compared to standard `try!`, and 9% improvement compared to `?`. -macro_rules! try { +macro_rules! tri { ($expr:expr) => { match $expr { Ok(val) => val, @@ -309,20 +294,15 @@ pub mod ser; #[doc(inline)] -pub use de::{Deserialize, Deserializer}; +pub use crate::de::{Deserialize, Deserializer}; #[doc(inline)] -pub use ser::{Serialize, Serializer}; +pub use crate::ser::{Serialize, Serializer}; // Used by generated code and doc tests. Not public API. #[doc(hidden)] #[path = "private/mod.rs"] pub mod __private; -#[allow(unused_imports)] -use self::__private as export; -#[allow(unused_imports)] -use self::__private as private; - #[path = "de/seed.rs"] mod seed; @@ -335,8 +315,6 @@ // be annoying for crates that provide handwritten impls or data formats. They // would need to disable default features and then explicitly re-enable std. #[cfg(feature = "serde_derive")] -#[allow(unused_imports)] -#[macro_use] extern crate serde_derive; /// Derive macro available if serde is built with `features = ["derive"]`. diff -Nru temporalio-1.3.0/vendor/serde/src/macros.rs temporalio-1.3.0/vendor/serde/src/macros.rs --- temporalio-1.3.0/vendor/serde/src/macros.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/macros.rs 2023-10-30 19:40:00.000000000 +0000 @@ -11,7 +11,7 @@ /// input. This requires repetitive implementations of all the [`Deserializer`] /// trait methods. /// -/// ```edition2018 +/// ```edition2021 /// # use serde::forward_to_deserialize_any; /// # use serde::de::{value, Deserializer, Visitor}; /// # @@ -47,7 +47,7 @@ /// methods so that they forward directly to [`Deserializer::deserialize_any`]. /// You can choose which methods to forward. /// -/// ```edition2018 +/// ```edition2021 /// # use serde::forward_to_deserialize_any; /// # use serde::de::{value, Deserializer, Visitor}; /// # @@ -78,11 +78,10 @@ /// called `V`. A different type parameter and a different lifetime can be /// specified explicitly if necessary. /// -/// ```edition2018 -/// # use std::marker::PhantomData; -/// # +/// ```edition2021 /// # use serde::forward_to_deserialize_any; /// # use serde::de::{value, Deserializer, Visitor}; +/// # use std::marker::PhantomData; /// # /// # struct MyDeserializer(PhantomData); /// # diff -Nru temporalio-1.3.0/vendor/serde/src/private/de.rs temporalio-1.3.0/vendor/serde/src/private/de.rs --- temporalio-1.3.0/vendor/serde/src/private/de.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/private/de.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,13 @@ -use lib::*; +use crate::lib::*; -use de::value::{BorrowedBytesDeserializer, BytesDeserializer}; -use de::{Deserialize, Deserializer, Error, IntoDeserializer, Visitor}; +use crate::de::value::{BorrowedBytesDeserializer, BytesDeserializer}; +use crate::de::{ + Deserialize, DeserializeSeed, Deserializer, EnumAccess, Error, IntoDeserializer, VariantAccess, + Visitor, +}; #[cfg(any(feature = "std", feature = "alloc"))] -use de::{DeserializeSeed, MapAccess, Unexpected}; +use crate::de::{MapAccess, Unexpected}; #[cfg(any(feature = "std", feature = "alloc"))] pub use self::content::{ @@ -13,7 +16,7 @@ TagOrContentField, TagOrContentFieldVisitor, TaggedContentVisitor, UntaggedUnitVisitor, }; -pub use seed::InPlaceSeed; +pub use crate::seed::InPlaceSeed; /// If the missing field is of type `Option` then treat is as `None`, /// otherwise it is an error. @@ -203,13 +206,13 @@ // This issue is tracking making some of this stuff public: // https://github.com/serde-rs/serde/issues/741 - use lib::*; + use crate::lib::*; - use __private::size_hint; - use actually_private; - use de::{ - self, Deserialize, DeserializeSeed, Deserializer, EnumAccess, Expected, IgnoredAny, - MapAccess, SeqAccess, Unexpected, Visitor, + use crate::actually_private; + use crate::de::value::{MapDeserializer, SeqDeserializer}; + use crate::de::{ + self, size_hint, Deserialize, DeserializeSeed, Deserializer, EnumAccess, Expected, + IgnoredAny, MapAccess, SeqAccess, Unexpected, Visitor, }; /// Used from generated code to buffer the contents of the Deserializer when @@ -299,6 +302,17 @@ } } + impl<'de, E> de::IntoDeserializer<'de, E> for Content<'de> + where + E: de::Error, + { + type Deserializer = ContentDeserializer<'de, E>; + + fn into_deserializer(self) -> Self::Deserializer { + ContentDeserializer::new(self) + } + } + struct ContentVisitor<'de> { value: PhantomData>, } @@ -474,8 +488,9 @@ where V: SeqAccess<'de>, { - let mut vec = Vec::with_capacity(size_hint::cautious(visitor.size_hint())); - while let Some(e) = try!(visitor.next_element()) { + let mut vec = + Vec::::with_capacity(size_hint::cautious::(visitor.size_hint())); + while let Some(e) = tri!(visitor.next_element()) { vec.push(e); } Ok(Content::Seq(vec)) @@ -485,8 +500,11 @@ where V: MapAccess<'de>, { - let mut vec = Vec::with_capacity(size_hint::cautious(visitor.size_hint())); - while let Some(kv) = try!(visitor.next_entry()) { + let mut vec = + Vec::<(Content, Content)>::with_capacity( + size_hint::cautious::<(Content, Content)>(visitor.size_hint()), + ); + while let Some(kv) = tri!(visitor.next_entry()) { vec.push(kv); } Ok(Content::Map(vec)) @@ -797,19 +815,13 @@ /// Used by generated code to deserialize an internally tagged enum. /// /// Not public API. - pub struct TaggedContent<'de, T> { - pub tag: T, - pub content: Content<'de>, - } - - /// Not public API. - pub struct TaggedContentVisitor<'de, T> { + pub struct TaggedContentVisitor { tag_name: &'static str, expecting: &'static str, - value: PhantomData>, + value: PhantomData, } - impl<'de, T> TaggedContentVisitor<'de, T> { + impl TaggedContentVisitor { /// Visitor for the content of an internally tagged enum with the given /// tag name. pub fn new(name: &'static str, expecting: &'static str) -> Self { @@ -821,27 +833,11 @@ } } - impl<'de, T> DeserializeSeed<'de> for TaggedContentVisitor<'de, T> + impl<'de, T> Visitor<'de> for TaggedContentVisitor where T: Deserialize<'de>, { - type Value = TaggedContent<'de, T>; - - fn deserialize(self, deserializer: D) -> Result - where - D: Deserializer<'de>, - { - // Internally tagged enums are only supported in self-describing - // formats. - deserializer.deserialize_any(self) - } - } - - impl<'de, T> Visitor<'de> for TaggedContentVisitor<'de, T> - where - T: Deserialize<'de>, - { - type Value = TaggedContent<'de, T>; + type Value = (T, Content<'de>); fn expecting(&self, fmt: &mut fmt::Formatter) -> fmt::Result { fmt.write_str(self.expecting) @@ -851,17 +847,14 @@ where S: SeqAccess<'de>, { - let tag = match try!(seq.next_element()) { + let tag = match tri!(seq.next_element()) { Some(tag) => tag, None => { return Err(de::Error::missing_field(self.tag_name)); } }; let rest = de::value::SeqAccessDeserializer::new(seq); - Ok(TaggedContent { - tag, - content: try!(Content::deserialize(rest)), - }) + Ok((tag, tri!(Content::deserialize(rest)))) } fn visit_map(self, mut map: M) -> Result @@ -869,27 +862,27 @@ M: MapAccess<'de>, { let mut tag = None; - let mut vec = Vec::with_capacity(size_hint::cautious(map.size_hint())); - while let Some(k) = try!(map.next_key_seed(TagOrContentVisitor::new(self.tag_name))) { + let mut vec = Vec::<(Content, Content)>::with_capacity(size_hint::cautious::<( + Content, + Content, + )>(map.size_hint())); + while let Some(k) = tri!(map.next_key_seed(TagOrContentVisitor::new(self.tag_name))) { match k { TagOrContent::Tag => { if tag.is_some() { return Err(de::Error::duplicate_field(self.tag_name)); } - tag = Some(try!(map.next_value())); + tag = Some(tri!(map.next_value())); } TagOrContent::Content(k) => { - let v = try!(map.next_value()); + let v = tri!(map.next_value()); vec.push((k, v)); } } } match tag { None => Err(de::Error::missing_field(self.tag_name)), - Some(tag) => Ok(TaggedContent { - tag, - content: Content::Map(vec), - }), + Some(tag) => Ok((tag, Content::Map(vec))), } } } @@ -915,7 +908,7 @@ where D: Deserializer<'de>, { - deserializer.deserialize_str(self) + deserializer.deserialize_identifier(self) } } @@ -926,6 +919,20 @@ write!(formatter, "{:?} or {:?}", self.tag, self.content) } + fn visit_u64(self, field_index: u64) -> Result + where + E: de::Error, + { + match field_index { + 0 => Ok(TagOrContentField::Tag), + 1 => Ok(TagOrContentField::Content), + _ => Err(de::Error::invalid_value( + Unexpected::Unsigned(field_index), + &self, + )), + } + } + fn visit_str(self, field: &str) -> Result where E: de::Error, @@ -938,6 +945,19 @@ Err(de::Error::invalid_value(Unexpected::Str(field), &self)) } } + + fn visit_bytes(self, field: &[u8]) -> Result + where + E: de::Error, + { + if field == self.tag.as_bytes() { + Ok(TagOrContentField::Tag) + } else if field == self.content.as_bytes() { + Ok(TagOrContentField::Content) + } else { + Err(de::Error::invalid_value(Unexpected::Bytes(field), &self)) + } + } } /// Used by generated code to deserialize an adjacently tagged enum when @@ -963,7 +983,7 @@ where D: Deserializer<'de>, { - deserializer.deserialize_str(self) + deserializer.deserialize_identifier(self) } } @@ -978,6 +998,17 @@ ) } + fn visit_u64(self, field_index: u64) -> Result + where + E: de::Error, + { + match field_index { + 0 => Ok(TagContentOtherField::Tag), + 1 => Ok(TagContentOtherField::Content), + _ => Ok(TagContentOtherField::Other), + } + } + fn visit_str(self, field: &str) -> Result where E: de::Error, @@ -1057,9 +1088,9 @@ E: de::Error, { let seq = content.into_iter().map(ContentDeserializer::new); - let mut seq_visitor = de::value::SeqDeserializer::new(seq); - let value = try!(visitor.visit_seq(&mut seq_visitor)); - try!(seq_visitor.end()); + let mut seq_visitor = SeqDeserializer::new(seq); + let value = tri!(visitor.visit_seq(&mut seq_visitor)); + tri!(seq_visitor.end()); Ok(value) } @@ -1074,9 +1105,9 @@ let map = content .into_iter() .map(|(k, v)| (ContentDeserializer::new(k), ContentDeserializer::new(v))); - let mut map_visitor = de::value::MapDeserializer::new(map); - let value = try!(visitor.visit_map(&mut map_visitor)); - try!(map_visitor.end()); + let mut map_visitor = MapDeserializer::new(map); + let value = tri!(visitor.visit_map(&mut map_visitor)); + tri!(map_visitor.end()); Ok(value) } @@ -1552,7 +1583,7 @@ { match self.value { Some(Content::Seq(v)) => { - de::Deserializer::deserialize_any(SeqDeserializer::new(v), visitor) + de::Deserializer::deserialize_any(SeqDeserializer::new(v.into_iter()), visitor) } Some(other) => Err(de::Error::invalid_type( other.unexpected(), @@ -1575,10 +1606,10 @@ { match self.value { Some(Content::Map(v)) => { - de::Deserializer::deserialize_any(MapDeserializer::new(v), visitor) + de::Deserializer::deserialize_any(MapDeserializer::new(v.into_iter()), visitor) } Some(Content::Seq(v)) => { - de::Deserializer::deserialize_any(SeqDeserializer::new(v), visitor) + de::Deserializer::deserialize_any(SeqDeserializer::new(v.into_iter()), visitor) } Some(other) => Err(de::Error::invalid_type( other.unexpected(), @@ -1592,156 +1623,6 @@ } } - struct SeqDeserializer<'de, E> - where - E: de::Error, - { - iter: > as IntoIterator>::IntoIter, - err: PhantomData, - } - - impl<'de, E> SeqDeserializer<'de, E> - where - E: de::Error, - { - fn new(vec: Vec>) -> Self { - SeqDeserializer { - iter: vec.into_iter(), - err: PhantomData, - } - } - } - - impl<'de, E> de::Deserializer<'de> for SeqDeserializer<'de, E> - where - E: de::Error, - { - type Error = E; - - #[inline] - fn deserialize_any(mut self, visitor: V) -> Result - where - V: de::Visitor<'de>, - { - let len = self.iter.len(); - if len == 0 { - visitor.visit_unit() - } else { - let ret = try!(visitor.visit_seq(&mut self)); - let remaining = self.iter.len(); - if remaining == 0 { - Ok(ret) - } else { - Err(de::Error::invalid_length(len, &"fewer elements in array")) - } - } - } - - forward_to_deserialize_any! { - bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string - bytes byte_buf option unit unit_struct newtype_struct seq tuple - tuple_struct map struct enum identifier ignored_any - } - } - - impl<'de, E> de::SeqAccess<'de> for SeqDeserializer<'de, E> - where - E: de::Error, - { - type Error = E; - - fn next_element_seed(&mut self, seed: T) -> Result, Self::Error> - where - T: de::DeserializeSeed<'de>, - { - match self.iter.next() { - Some(value) => seed.deserialize(ContentDeserializer::new(value)).map(Some), - None => Ok(None), - } - } - - fn size_hint(&self) -> Option { - size_hint::from_bounds(&self.iter) - } - } - - struct MapDeserializer<'de, E> - where - E: de::Error, - { - iter: , Content<'de>)> as IntoIterator>::IntoIter, - value: Option>, - err: PhantomData, - } - - impl<'de, E> MapDeserializer<'de, E> - where - E: de::Error, - { - fn new(map: Vec<(Content<'de>, Content<'de>)>) -> Self { - MapDeserializer { - iter: map.into_iter(), - value: None, - err: PhantomData, - } - } - } - - impl<'de, E> de::MapAccess<'de> for MapDeserializer<'de, E> - where - E: de::Error, - { - type Error = E; - - fn next_key_seed(&mut self, seed: T) -> Result, Self::Error> - where - T: de::DeserializeSeed<'de>, - { - match self.iter.next() { - Some((key, value)) => { - self.value = Some(value); - seed.deserialize(ContentDeserializer::new(key)).map(Some) - } - None => Ok(None), - } - } - - fn next_value_seed(&mut self, seed: T) -> Result - where - T: de::DeserializeSeed<'de>, - { - match self.value.take() { - Some(value) => seed.deserialize(ContentDeserializer::new(value)), - None => Err(de::Error::custom("value is missing")), - } - } - - fn size_hint(&self) -> Option { - size_hint::from_bounds(&self.iter) - } - } - - impl<'de, E> de::Deserializer<'de> for MapDeserializer<'de, E> - where - E: de::Error, - { - type Error = E; - - #[inline] - fn deserialize_any(self, visitor: V) -> Result - where - V: de::Visitor<'de>, - { - visitor.visit_map(self) - } - - forward_to_deserialize_any! { - bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string - bytes byte_buf option unit unit_struct newtype_struct seq tuple - tuple_struct map struct enum identifier ignored_any - } - } - /// Not public API. pub struct ContentRefDeserializer<'a, 'de: 'a, E> { content: &'a Content<'de>, @@ -1803,9 +1684,9 @@ E: de::Error, { let seq = content.iter().map(ContentRefDeserializer::new); - let mut seq_visitor = de::value::SeqDeserializer::new(seq); - let value = try!(visitor.visit_seq(&mut seq_visitor)); - try!(seq_visitor.end()); + let mut seq_visitor = SeqDeserializer::new(seq); + let value = tri!(visitor.visit_seq(&mut seq_visitor)); + tri!(seq_visitor.end()); Ok(value) } @@ -1823,9 +1704,9 @@ ContentRefDeserializer::new(v), ) }); - let mut map_visitor = de::value::MapDeserializer::new(map); - let value = try!(visitor.visit_map(&mut map_visitor)); - try!(map_visitor.end()); + let mut map_visitor = MapDeserializer::new(map); + let value = tri!(visitor.visit_map(&mut map_visitor)); + tri!(map_visitor.end()); Ok(value) } @@ -2345,7 +2226,7 @@ if len == 0 { visitor.visit_unit() } else { - let ret = try!(visitor.visit_seq(&mut self)); + let ret = tri!(visitor.visit_seq(&mut self)); let remaining = self.iter.len(); if remaining == 0 { Ok(ret) @@ -2524,7 +2405,7 @@ where M: MapAccess<'de>, { - while try!(access.next_entry::()).is_some() {} + while tri!(access.next_entry::()).is_some() {} Ok(()) } } @@ -2822,6 +2703,13 @@ visitor.visit_unit() } + fn deserialize_ignored_any(self, visitor: V) -> Result + where + V: Visitor<'de>, + { + visitor.visit_unit() + } + forward_to_deserialize_other! { deserialize_bool() deserialize_i8() @@ -2844,7 +2732,6 @@ deserialize_tuple(usize) deserialize_tuple_struct(&'static str, usize) deserialize_identifier() - deserialize_ignored_any() } } @@ -2951,3 +2838,55 @@ None } } + +pub struct AdjacentlyTaggedEnumVariantSeed { + pub enum_name: &'static str, + pub variants: &'static [&'static str], + pub fields_enum: PhantomData, +} + +pub struct AdjacentlyTaggedEnumVariantVisitor { + enum_name: &'static str, + fields_enum: PhantomData, +} + +impl<'de, F> Visitor<'de> for AdjacentlyTaggedEnumVariantVisitor +where + F: Deserialize<'de>, +{ + type Value = F; + + fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { + write!(formatter, "variant of enum {}", self.enum_name) + } + + fn visit_enum(self, data: A) -> Result + where + A: EnumAccess<'de>, + { + let (variant, variant_access) = tri!(data.variant()); + tri!(variant_access.unit_variant()); + Ok(variant) + } +} + +impl<'de, F> DeserializeSeed<'de> for AdjacentlyTaggedEnumVariantSeed +where + F: Deserialize<'de>, +{ + type Value = F; + + fn deserialize(self, deserializer: D) -> Result + where + D: Deserializer<'de>, + { + deserializer.deserialize_enum( + self.enum_name, + self.variants, + AdjacentlyTaggedEnumVariantVisitor { + enum_name: self.enum_name, + fields_enum: PhantomData, + }, + ) + } +} diff -Nru temporalio-1.3.0/vendor/serde/src/private/doc.rs temporalio-1.3.0/vendor/serde/src/private/doc.rs --- temporalio-1.3.0/vendor/serde/src/private/doc.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/private/doc.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,8 @@ // Used only by Serde doc tests. Not public API. -use lib::*; +use crate::lib::*; -use ser; +use crate::ser; #[doc(hidden)] #[derive(Debug)] diff -Nru temporalio-1.3.0/vendor/serde/src/private/mod.rs temporalio-1.3.0/vendor/serde/src/private/mod.rs --- temporalio-1.3.0/vendor/serde/src/private/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/private/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,30 +3,28 @@ #[cfg(not(no_serde_derive))] pub mod ser; -pub mod size_hint; - // FIXME: #[cfg(doctest)] once https://github.com/rust-lang/rust/issues/67295 is fixed. pub mod doc; -pub use lib::clone::Clone; -pub use lib::convert::{From, Into}; -pub use lib::default::Default; -pub use lib::fmt::{self, Formatter}; -pub use lib::marker::PhantomData; -pub use lib::option::Option::{self, None, Some}; -pub use lib::ptr; -pub use lib::result::Result::{self, Err, Ok}; +pub use crate::lib::clone::Clone; +pub use crate::lib::convert::{From, Into}; +pub use crate::lib::default::Default; +pub use crate::lib::fmt::{self, Formatter}; +pub use crate::lib::marker::PhantomData; +pub use crate::lib::option::Option::{self, None, Some}; +pub use crate::lib::ptr; +pub use crate::lib::result::Result::{self, Err, Ok}; pub use self::string::from_utf8_lossy; #[cfg(any(feature = "alloc", feature = "std"))] -pub use lib::{ToString, Vec}; +pub use crate::lib::{ToString, Vec}; #[cfg(not(no_core_try_from))] -pub use lib::convert::TryFrom; +pub use crate::lib::convert::TryFrom; mod string { - use lib::*; + use crate::lib::*; #[cfg(any(feature = "std", feature = "alloc"))] pub fn from_utf8_lossy(bytes: &[u8]) -> Cow { diff -Nru temporalio-1.3.0/vendor/serde/src/private/ser.rs temporalio-1.3.0/vendor/serde/src/private/ser.rs --- temporalio-1.3.0/vendor/serde/src/private/ser.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/private/ser.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ -use lib::*; +use crate::lib::*; -use ser::{self, Impossible, Serialize, SerializeMap, SerializeStruct, Serializer}; +use crate::ser::{self, Impossible, Serialize, SerializeMap, SerializeStruct, Serializer}; #[cfg(any(feature = "std", feature = "alloc"))] use self::content::{ @@ -182,14 +182,14 @@ } fn serialize_unit(self) -> Result { - let mut map = try!(self.delegate.serialize_map(Some(1))); - try!(map.serialize_entry(self.tag, self.variant_name)); + let mut map = tri!(self.delegate.serialize_map(Some(1))); + tri!(map.serialize_entry(self.tag, self.variant_name)); map.end() } fn serialize_unit_struct(self, _: &'static str) -> Result { - let mut map = try!(self.delegate.serialize_map(Some(1))); - try!(map.serialize_entry(self.tag, self.variant_name)); + let mut map = tri!(self.delegate.serialize_map(Some(1))); + tri!(map.serialize_entry(self.tag, self.variant_name)); map.end() } @@ -199,9 +199,9 @@ _: u32, inner_variant: &'static str, ) -> Result { - let mut map = try!(self.delegate.serialize_map(Some(2))); - try!(map.serialize_entry(self.tag, self.variant_name)); - try!(map.serialize_entry(inner_variant, &())); + let mut map = tri!(self.delegate.serialize_map(Some(2))); + tri!(map.serialize_entry(self.tag, self.variant_name)); + tri!(map.serialize_entry(inner_variant, &())); map.end() } @@ -226,9 +226,9 @@ where T: Serialize, { - let mut map = try!(self.delegate.serialize_map(Some(2))); - try!(map.serialize_entry(self.tag, self.variant_name)); - try!(map.serialize_entry(inner_variant, inner_value)); + let mut map = tri!(self.delegate.serialize_map(Some(2))); + tri!(map.serialize_entry(self.tag, self.variant_name)); + tri!(map.serialize_entry(inner_variant, inner_value)); map.end() } @@ -269,9 +269,9 @@ inner_variant: &'static str, len: usize, ) -> Result { - let mut map = try!(self.delegate.serialize_map(Some(2))); - try!(map.serialize_entry(self.tag, self.variant_name)); - try!(map.serialize_key(inner_variant)); + let mut map = tri!(self.delegate.serialize_map(Some(2))); + tri!(map.serialize_entry(self.tag, self.variant_name)); + tri!(map.serialize_key(inner_variant)); Ok(SerializeTupleVariantAsMapValue::new( map, inner_variant, @@ -280,8 +280,8 @@ } fn serialize_map(self, len: Option) -> Result { - let mut map = try!(self.delegate.serialize_map(len.map(|len| len + 1))); - try!(map.serialize_entry(self.tag, self.variant_name)); + let mut map = tri!(self.delegate.serialize_map(len.map(|len| len + 1))); + tri!(map.serialize_entry(self.tag, self.variant_name)); Ok(map) } @@ -290,8 +290,8 @@ name: &'static str, len: usize, ) -> Result { - let mut state = try!(self.delegate.serialize_struct(name, len + 1)); - try!(state.serialize_field(self.tag, self.variant_name)); + let mut state = tri!(self.delegate.serialize_struct(name, len + 1)); + tri!(state.serialize_field(self.tag, self.variant_name)); Ok(state) } @@ -316,9 +316,9 @@ inner_variant: &'static str, len: usize, ) -> Result { - let mut map = try!(self.delegate.serialize_map(Some(2))); - try!(map.serialize_entry(self.tag, self.variant_name)); - try!(map.serialize_key(inner_variant)); + let mut map = tri!(self.delegate.serialize_map(Some(2))); + tri!(map.serialize_entry(self.tag, self.variant_name)); + tri!(map.serialize_key(inner_variant)); Ok(SerializeStructVariantAsMapValue::new( map, inner_variant, @@ -337,9 +337,9 @@ #[cfg(any(feature = "std", feature = "alloc"))] mod content { - use lib::*; + use crate::lib::*; - use ser::{self, Serialize, Serializer}; + use crate::ser::{self, Serialize, Serializer}; pub struct SerializeTupleVariantAsMapValue { map: M, @@ -368,13 +368,13 @@ where T: Serialize, { - let value = try!(value.serialize(ContentSerializer::::new())); + let value = tri!(value.serialize(ContentSerializer::::new())); self.fields.push(value); Ok(()) } fn end(mut self) -> Result { - try!(self + tri!(self .map .serialize_value(&Content::TupleStruct(self.name, self.fields))); self.map.end() @@ -412,13 +412,13 @@ where T: Serialize, { - let value = try!(value.serialize(ContentSerializer::::new())); + let value = tri!(value.serialize(ContentSerializer::::new())); self.fields.push((key, value)); Ok(()) } fn end(mut self) -> Result { - try!(self + tri!(self .map .serialize_value(&Content::Struct(self.name, self.fields))); self.map.end() @@ -499,50 +499,50 @@ } Content::Seq(ref elements) => elements.serialize(serializer), Content::Tuple(ref elements) => { - use ser::SerializeTuple; - let mut tuple = try!(serializer.serialize_tuple(elements.len())); + use crate::ser::SerializeTuple; + let mut tuple = tri!(serializer.serialize_tuple(elements.len())); for e in elements { - try!(tuple.serialize_element(e)); + tri!(tuple.serialize_element(e)); } tuple.end() } Content::TupleStruct(n, ref fields) => { - use ser::SerializeTupleStruct; - let mut ts = try!(serializer.serialize_tuple_struct(n, fields.len())); + use crate::ser::SerializeTupleStruct; + let mut ts = tri!(serializer.serialize_tuple_struct(n, fields.len())); for f in fields { - try!(ts.serialize_field(f)); + tri!(ts.serialize_field(f)); } ts.end() } Content::TupleVariant(n, i, v, ref fields) => { - use ser::SerializeTupleVariant; - let mut tv = try!(serializer.serialize_tuple_variant(n, i, v, fields.len())); + use crate::ser::SerializeTupleVariant; + let mut tv = tri!(serializer.serialize_tuple_variant(n, i, v, fields.len())); for f in fields { - try!(tv.serialize_field(f)); + tri!(tv.serialize_field(f)); } tv.end() } Content::Map(ref entries) => { - use ser::SerializeMap; - let mut map = try!(serializer.serialize_map(Some(entries.len()))); + use crate::ser::SerializeMap; + let mut map = tri!(serializer.serialize_map(Some(entries.len()))); for (k, v) in entries { - try!(map.serialize_entry(k, v)); + tri!(map.serialize_entry(k, v)); } map.end() } Content::Struct(n, ref fields) => { - use ser::SerializeStruct; - let mut s = try!(serializer.serialize_struct(n, fields.len())); + use crate::ser::SerializeStruct; + let mut s = tri!(serializer.serialize_struct(n, fields.len())); for &(k, ref v) in fields { - try!(s.serialize_field(k, v)); + tri!(s.serialize_field(k, v)); } s.end() } Content::StructVariant(n, i, v, ref fields) => { - use ser::SerializeStructVariant; - let mut sv = try!(serializer.serialize_struct_variant(n, i, v, fields.len())); + use crate::ser::SerializeStructVariant; + let mut sv = tri!(serializer.serialize_struct_variant(n, i, v, fields.len())); for &(k, ref v) in fields { - try!(sv.serialize_field(k, v)); + tri!(sv.serialize_field(k, v)); } sv.end() } @@ -639,7 +639,7 @@ where T: Serialize, { - Ok(Content::Some(Box::new(try!(value.serialize(self))))) + Ok(Content::Some(Box::new(tri!(value.serialize(self))))) } fn serialize_unit(self) -> Result { @@ -669,7 +669,7 @@ { Ok(Content::NewtypeStruct( name, - Box::new(try!(value.serialize(self))), + Box::new(tri!(value.serialize(self))), )) } @@ -687,7 +687,7 @@ name, variant_index, variant, - Box::new(try!(value.serialize(self))), + Box::new(tri!(value.serialize(self))), )) } @@ -786,7 +786,7 @@ where T: Serialize, { - let value = try!(value.serialize(ContentSerializer::::new())); + let value = tri!(value.serialize(ContentSerializer::::new())); self.elements.push(value); Ok(()) } @@ -812,7 +812,7 @@ where T: Serialize, { - let value = try!(value.serialize(ContentSerializer::::new())); + let value = tri!(value.serialize(ContentSerializer::::new())); self.elements.push(value); Ok(()) } @@ -839,7 +839,7 @@ where T: Serialize, { - let value = try!(value.serialize(ContentSerializer::::new())); + let value = tri!(value.serialize(ContentSerializer::::new())); self.fields.push(value); Ok(()) } @@ -868,7 +868,7 @@ where T: Serialize, { - let value = try!(value.serialize(ContentSerializer::::new())); + let value = tri!(value.serialize(ContentSerializer::::new())); self.fields.push(value); Ok(()) } @@ -900,7 +900,7 @@ where T: Serialize, { - let key = try!(key.serialize(ContentSerializer::::new())); + let key = tri!(key.serialize(ContentSerializer::::new())); self.key = Some(key); Ok(()) } @@ -913,7 +913,7 @@ .key .take() .expect("serialize_value called before serialize_key"); - let value = try!(value.serialize(ContentSerializer::::new())); + let value = tri!(value.serialize(ContentSerializer::::new())); self.entries.push((key, value)); Ok(()) } @@ -927,8 +927,8 @@ K: Serialize, V: Serialize, { - let key = try!(key.serialize(ContentSerializer::::new())); - let value = try!(value.serialize(ContentSerializer::::new())); + let key = tri!(key.serialize(ContentSerializer::::new())); + let value = tri!(value.serialize(ContentSerializer::::new())); self.entries.push((key, value)); Ok(()) } @@ -951,7 +951,7 @@ where T: Serialize, { - let value = try!(value.serialize(ContentSerializer::::new())); + let value = tri!(value.serialize(ContentSerializer::::new())); self.fields.push((key, value)); Ok(()) } @@ -980,7 +980,7 @@ where T: Serialize, { - let value = try!(value.serialize(ContentSerializer::::new())); + let value = tri!(value.serialize(ContentSerializer::::new())); self.fields.push((key, value)); Ok(()) } @@ -1025,7 +1025,7 @@ type SerializeTupleStruct = Impossible; type SerializeMap = FlatMapSerializeMap<'a, M>; type SerializeStruct = FlatMapSerializeStruct<'a, M>; - type SerializeTupleVariant = Impossible; + type SerializeTupleVariant = FlatMapSerializeTupleVariantAsMapValue<'a, M>; type SerializeStructVariant = FlatMapSerializeStructVariantAsMapValue<'a, M>; fn serialize_bool(self, _: bool) -> Result { @@ -1133,7 +1133,7 @@ where T: Serialize, { - try!(self.0.serialize_key(variant)); + tri!(self.0.serialize_key(variant)); self.0.serialize_value(value) } @@ -1157,10 +1157,11 @@ self, _: &'static str, _: u32, - _: &'static str, + variant: &'static str, _: usize, ) -> Result { - Err(Self::bad_type(Unsupported::Enum)) + tri!(self.0.serialize_key(variant)); + Ok(FlatMapSerializeTupleVariantAsMapValue::new(self.0)) } fn serialize_map(self, _: Option) -> Result { @@ -1182,7 +1183,7 @@ inner_variant: &'static str, _: usize, ) -> Result { - try!(self.0.serialize_key(inner_variant)); + tri!(self.0.serialize_key(inner_variant)); Ok(FlatMapSerializeStructVariantAsMapValue::new( self.0, inner_variant, @@ -1259,6 +1260,52 @@ } } +//////////////////////////////////////////////////////////////////////////////////////////////////// + +#[cfg(any(feature = "std", feature = "alloc"))] +pub struct FlatMapSerializeTupleVariantAsMapValue<'a, M: 'a> { + map: &'a mut M, + fields: Vec, +} + +#[cfg(any(feature = "std", feature = "alloc"))] +impl<'a, M> FlatMapSerializeTupleVariantAsMapValue<'a, M> +where + M: SerializeMap + 'a, +{ + fn new(map: &'a mut M) -> Self { + FlatMapSerializeTupleVariantAsMapValue { + map, + fields: Vec::new(), + } + } +} + +#[cfg(any(feature = "std", feature = "alloc"))] +impl<'a, M> ser::SerializeTupleVariant for FlatMapSerializeTupleVariantAsMapValue<'a, M> +where + M: SerializeMap + 'a, +{ + type Ok = (); + type Error = M::Error; + + fn serialize_field(&mut self, value: &T) -> Result<(), Self::Error> + where + T: Serialize, + { + let value = tri!(value.serialize(ContentSerializer::::new())); + self.fields.push(value); + Ok(()) + } + + fn end(self) -> Result<(), Self::Error> { + tri!(self.map.serialize_value(&Content::Seq(self.fields))); + Ok(()) + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + #[cfg(any(feature = "std", feature = "alloc"))] pub struct FlatMapSerializeStructVariantAsMapValue<'a, M: 'a> { map: &'a mut M, @@ -1296,15 +1343,43 @@ where T: Serialize, { - let value = try!(value.serialize(ContentSerializer::::new())); + let value = tri!(value.serialize(ContentSerializer::::new())); self.fields.push((key, value)); Ok(()) } fn end(self) -> Result<(), Self::Error> { - try!(self + tri!(self .map .serialize_value(&Content::Struct(self.name, self.fields))); Ok(()) } } + +pub struct AdjacentlyTaggedEnumVariant { + pub enum_name: &'static str, + pub variant_index: u32, + pub variant_name: &'static str, +} + +impl Serialize for AdjacentlyTaggedEnumVariant { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + serializer.serialize_unit_variant(self.enum_name, self.variant_index, self.variant_name) + } +} + +// Error when Serialize for a non_exhaustive remote enum encounters a variant +// that is not recognized. +pub struct CannotSerializeVariant(pub T); + +impl Display for CannotSerializeVariant +where + T: Debug, +{ + fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { + write!(formatter, "enum variant cannot be serialized: {:?}", self.0) + } +} diff -Nru temporalio-1.3.0/vendor/serde/src/private/size_hint.rs temporalio-1.3.0/vendor/serde/src/private/size_hint.rs --- temporalio-1.3.0/vendor/serde/src/private/size_hint.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/private/size_hint.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -use lib::*; - -pub fn from_bounds(iter: &I) -> Option -where - I: Iterator, -{ - helper(iter.size_hint()) -} - -#[cfg(any(feature = "std", feature = "alloc"))] -#[inline] -pub fn cautious(hint: Option) -> usize { - cmp::min(hint.unwrap_or(0), 4096) -} - -fn helper(bounds: (usize, Option)) -> Option { - match bounds { - (lower, Some(upper)) if lower == upper => Some(upper), - _ => None, - } -} diff -Nru temporalio-1.3.0/vendor/serde/src/ser/fmt.rs temporalio-1.3.0/vendor/serde/src/ser/fmt.rs --- temporalio-1.3.0/vendor/serde/src/ser/fmt.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/ser/fmt.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ -use lib::*; -use ser::{Error, Impossible, Serialize, Serializer}; +use crate::lib::*; +use crate::ser::{Error, Impossible, Serialize, Serializer}; impl Error for fmt::Error { fn custom(_msg: T) -> Self { @@ -17,8 +17,9 @@ }; } -/// ```edition2018 -/// use serde::Serialize; +/// ```edition2021 +/// use serde::ser::Serialize; +/// use serde_derive::Serialize; /// use std::fmt::{self, Display}; /// /// #[derive(Serialize)] diff -Nru temporalio-1.3.0/vendor/serde/src/ser/impls.rs temporalio-1.3.0/vendor/serde/src/ser/impls.rs --- temporalio-1.3.0/vendor/serde/src/ser/impls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/ser/impls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ -use lib::*; +use crate::lib::*; -use ser::{Error, Serialize, SerializeTuple, Serializer}; +use crate::ser::{Error, Serialize, SerializeTuple, Serializer}; //////////////////////////////////////////////////////////////////////////////// @@ -133,7 +133,7 @@ where S: Serializer, { - try!(serializer.serialize_tuple(0)).end() + tri!(serializer.serialize_tuple(0)).end() } } @@ -149,9 +149,9 @@ where S: Serializer, { - let mut seq = try!(serializer.serialize_tuple($len)); + let mut seq = tri!(serializer.serialize_tuple($len)); for e in self { - try!(seq.serialize_element(e)); + tri!(seq.serialize_element(e)); } seq.end() } @@ -248,16 +248,32 @@ S: Serializer, { use super::SerializeStruct; - let mut state = try!(serializer.serialize_struct("Range", 2)); - try!(state.serialize_field("start", &self.start)); - try!(state.serialize_field("end", &self.end)); + let mut state = tri!(serializer.serialize_struct("Range", 2)); + tri!(state.serialize_field("start", &self.start)); + tri!(state.serialize_field("end", &self.end)); + state.end() + } +} + +//////////////////////////////////////////////////////////////////////////////// + +impl Serialize for RangeFrom +where + Idx: Serialize, +{ + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + use super::SerializeStruct; + let mut state = tri!(serializer.serialize_struct("RangeFrom", 1)); + tri!(state.serialize_field("start", &self.start)); state.end() } } //////////////////////////////////////////////////////////////////////////////// -#[cfg(not(no_range_inclusive))] impl Serialize for RangeInclusive where Idx: Serialize, @@ -267,16 +283,32 @@ S: Serializer, { use super::SerializeStruct; - let mut state = try!(serializer.serialize_struct("RangeInclusive", 2)); - try!(state.serialize_field("start", &self.start())); - try!(state.serialize_field("end", &self.end())); + let mut state = tri!(serializer.serialize_struct("RangeInclusive", 2)); + tri!(state.serialize_field("start", &self.start())); + tri!(state.serialize_field("end", &self.end())); + state.end() + } +} + +//////////////////////////////////////////////////////////////////////////////// + +impl Serialize for RangeTo +where + Idx: Serialize, +{ + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + use super::SerializeStruct; + let mut state = tri!(serializer.serialize_struct("RangeTo", 1)); + tri!(state.serialize_field("end", &self.end)); state.end() } } //////////////////////////////////////////////////////////////////////////////// -#[cfg(any(not(no_ops_bound), all(feature = "std", not(no_collections_bound))))] impl Serialize for Bound where T: Serialize, @@ -333,9 +365,9 @@ where S: Serializer, { - let mut tuple = try!(serializer.serialize_tuple($len)); + let mut tuple = tri!(serializer.serialize_tuple($len)); $( - try!(tuple.serialize_element(&self.$n)); + tri!(tuple.serialize_element(&self.$n)); )+ tuple.end() } @@ -504,7 +536,6 @@ macro_rules! nonzero_integers { ($($T:ident,)+) => { $( - #[cfg(not(no_num_nonzero))] impl Serialize for num::$T { fn serialize(&self, serializer: S) -> Result where @@ -628,16 +659,15 @@ //////////////////////////////////////////////////////////////////////////////// -#[cfg(any(feature = "std", not(no_core_duration)))] impl Serialize for Duration { fn serialize(&self, serializer: S) -> Result where S: Serializer, { use super::SerializeStruct; - let mut state = try!(serializer.serialize_struct("Duration", 2)); - try!(state.serialize_field("secs", &self.as_secs())); - try!(state.serialize_field("nanos", &self.subsec_nanos())); + let mut state = tri!(serializer.serialize_struct("Duration", 2)); + tri!(state.serialize_field("secs", &self.as_secs())); + tri!(state.serialize_field("nanos", &self.subsec_nanos())); state.end() } } @@ -655,9 +685,9 @@ Ok(duration_since_epoch) => duration_since_epoch, Err(_) => return Err(S::Error::custom("SystemTime must be later than UNIX_EPOCH")), }; - let mut state = try!(serializer.serialize_struct("SystemTime", 2)); - try!(state.serialize_field("secs_since_epoch", &duration_since_epoch.as_secs())); - try!(state.serialize_field("nanos_since_epoch", &duration_since_epoch.subsec_nanos())); + let mut state = tri!(serializer.serialize_struct("SystemTime", 2)); + tri!(state.serialize_field("secs_since_epoch", &duration_since_epoch.as_secs())); + tri!(state.serialize_field("nanos_since_epoch", &duration_since_epoch.subsec_nanos())); state.end() } } @@ -929,7 +959,6 @@ } } -#[cfg(not(no_core_reverse))] impl Serialize for Reverse where T: Serialize, diff -Nru temporalio-1.3.0/vendor/serde/src/ser/impossible.rs temporalio-1.3.0/vendor/serde/src/ser/impossible.rs --- temporalio-1.3.0/vendor/serde/src/ser/impossible.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/ser/impossible.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,8 @@ //! This module contains `Impossible` serializer and its implementations. -use lib::*; +use crate::lib::*; -use ser::{ +use crate::ser::{ self, Serialize, SerializeMap, SerializeSeq, SerializeStruct, SerializeStructVariant, SerializeTuple, SerializeTupleStruct, SerializeTupleVariant, }; @@ -15,7 +15,7 @@ /// [`SerializeTuple`], [`SerializeTupleStruct`], [`SerializeTupleVariant`], /// [`SerializeMap`], [`SerializeStruct`], and [`SerializeStructVariant`]. /// -/// ```edition2018 +/// ```edition2021 /// # use serde::ser::{Serializer, Impossible}; /// # use serde::__private::doc::Error; /// # diff -Nru temporalio-1.3.0/vendor/serde/src/ser/mod.rs temporalio-1.3.0/vendor/serde/src/ser/mod.rs --- temporalio-1.3.0/vendor/serde/src/ser/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/ser/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -107,7 +107,7 @@ //! [derive section of the manual]: https://serde.rs/derive.html //! [data formats]: https://serde.rs/#data-formats -use lib::*; +use crate::lib::*; mod fmt; mod impls; @@ -115,15 +115,15 @@ pub use self::impossible::Impossible; +#[cfg(not(any(feature = "std", feature = "unstable")))] +#[doc(no_inline)] +pub use crate::std_error::Error as StdError; #[cfg(all(feature = "unstable", not(feature = "std")))] -#[doc(inline)] +#[doc(no_inline)] pub use core::error::Error as StdError; #[cfg(feature = "std")] #[doc(no_inline)] pub use std::error::Error as StdError; -#[cfg(not(any(feature = "std", feature = "unstable")))] -#[doc(no_inline)] -pub use std_error::Error as StdError; //////////////////////////////////////////////////////////////////////////////// @@ -149,7 +149,7 @@ /// For example, a filesystem [`Path`] may refuse to serialize /// itself if it contains invalid UTF-8 data. /// - /// ```edition2018 + /// ```edition2021 /// # struct Path; /// # /// # impl Path { @@ -221,7 +221,7 @@ /// See the [Implementing `Serialize`] section of the manual for more /// information about how to implement this method. /// - /// ```edition2018 + /// ```edition2021 /// use serde::ser::{Serialize, SerializeStruct, Serializer}; /// /// struct Person { @@ -388,7 +388,7 @@ /// Serialize a `bool` value. /// - /// ```edition2018 + /// ```edition2021 /// # use serde::Serializer; /// # /// # serde::__private_serialize!(); @@ -410,7 +410,7 @@ /// reasonable implementation would be to cast the value to `i64` and /// forward to `serialize_i64`. /// - /// ```edition2018 + /// ```edition2021 /// # use serde::Serializer; /// # /// # serde::__private_serialize!(); @@ -432,7 +432,7 @@ /// reasonable implementation would be to cast the value to `i64` and /// forward to `serialize_i64`. /// - /// ```edition2018 + /// ```edition2021 /// # use serde::Serializer; /// # /// # serde::__private_serialize!(); @@ -454,7 +454,7 @@ /// reasonable implementation would be to cast the value to `i64` and /// forward to `serialize_i64`. /// - /// ```edition2018 + /// ```edition2021 /// # use serde::Serializer; /// # /// # serde::__private_serialize!(); @@ -472,7 +472,7 @@ /// Serialize an `i64` value. /// - /// ```edition2018 + /// ```edition2021 /// # use serde::Serializer; /// # /// # serde::__private_serialize!(); @@ -491,7 +491,7 @@ serde_if_integer128! { /// Serialize an `i128` value. /// - /// ```edition2018 + /// ```edition2021 /// # use serde::Serializer; /// # /// # serde::__private_serialize!(); @@ -520,7 +520,7 @@ /// reasonable implementation would be to cast the value to `u64` and /// forward to `serialize_u64`. /// - /// ```edition2018 + /// ```edition2021 /// # use serde::Serializer; /// # /// # serde::__private_serialize!(); @@ -542,7 +542,7 @@ /// reasonable implementation would be to cast the value to `u64` and /// forward to `serialize_u64`. /// - /// ```edition2018 + /// ```edition2021 /// # use serde::Serializer; /// # /// # serde::__private_serialize!(); @@ -564,7 +564,7 @@ /// reasonable implementation would be to cast the value to `u64` and /// forward to `serialize_u64`. /// - /// ```edition2018 + /// ```edition2021 /// # use serde::Serializer; /// # /// # serde::__private_serialize!(); @@ -582,7 +582,7 @@ /// Serialize a `u64` value. /// - /// ```edition2018 + /// ```edition2021 /// # use serde::Serializer; /// # /// # serde::__private_serialize!(); @@ -601,7 +601,7 @@ serde_if_integer128! { /// Serialize a `u128` value. /// - /// ```edition2018 + /// ```edition2021 /// # use serde::Serializer; /// # /// # serde::__private_serialize!(); @@ -630,7 +630,7 @@ /// reasonable implementation would be to cast the value to `f64` and /// forward to `serialize_f64`. /// - /// ```edition2018 + /// ```edition2021 /// # use serde::Serializer; /// # /// # serde::__private_serialize!(); @@ -648,7 +648,7 @@ /// Serialize an `f64` value. /// - /// ```edition2018 + /// ```edition2021 /// # use serde::Serializer; /// # /// # serde::__private_serialize!(); @@ -669,7 +669,7 @@ /// If the format does not support characters, it is reasonable to serialize /// it as a single element `str` or a `u32`. /// - /// ```edition2018 + /// ```edition2021 /// # use serde::Serializer; /// # /// # serde::__private_serialize!(); @@ -687,7 +687,7 @@ /// Serialize a `&str`. /// - /// ```edition2018 + /// ```edition2021 /// # use serde::Serializer; /// # /// # serde::__private_serialize!(); @@ -711,7 +711,7 @@ /// `serialize_seq`. If forwarded, the implementation looks usually just /// like this: /// - /// ```edition2018 + /// ```edition2021 /// # use serde::ser::{Serializer, SerializeSeq}; /// # use serde::__private::doc::Error; /// # @@ -740,7 +740,7 @@ /// Serialize a [`None`] value. /// - /// ```edition2018 + /// ```edition2021 /// # use serde::{Serialize, Serializer}; /// # /// # enum Option { @@ -773,7 +773,7 @@ /// Serialize a [`Some(T)`] value. /// - /// ```edition2018 + /// ```edition2021 /// # use serde::{Serialize, Serializer}; /// # /// # enum Option { @@ -808,7 +808,7 @@ /// Serialize a `()` value. /// - /// ```edition2018 + /// ```edition2021 /// # use serde::Serializer; /// # /// # serde::__private_serialize!(); @@ -828,7 +828,7 @@ /// /// A reasonable implementation would be to forward to `serialize_unit`. /// - /// ```edition2018 + /// ```edition2021 /// use serde::{Serialize, Serializer}; /// /// struct Nothing; @@ -850,7 +850,7 @@ /// this variant within the enum, and the `variant` is the name of the /// variant. /// - /// ```edition2018 + /// ```edition2021 /// use serde::{Serialize, Serializer}; /// /// enum E { @@ -883,7 +883,7 @@ /// wrappers around the data they contain. A reasonable implementation would /// be to forward to `value.serialize(self)`. /// - /// ```edition2018 + /// ```edition2021 /// use serde::{Serialize, Serializer}; /// /// struct Millimeters(u8); @@ -911,7 +911,7 @@ /// this variant within the enum, and the `variant` is the name of the /// variant. The `value` is the data contained within this newtype variant. /// - /// ```edition2018 + /// ```edition2021 /// use serde::{Serialize, Serializer}; /// /// enum E { @@ -949,7 +949,7 @@ /// not be computable before the sequence is iterated. Some serializers only /// support sequences whose length is known up front. /// - /// ```edition2018 + /// ```edition2021 /// # use std::marker::PhantomData; /// # /// # struct Vec(PhantomData); @@ -962,14 +962,14 @@ /// # /// # impl<'a, T> IntoIterator for &'a Vec { /// # type Item = &'a T; - /// # type IntoIter = Box>; + /// # type IntoIter = Box>; /// # /// # fn into_iter(self) -> Self::IntoIter { /// # unimplemented!() /// # } /// # } /// # - /// use serde::ser::{Serialize, Serializer, SerializeSeq}; + /// use serde::ser::{Serialize, SerializeSeq, Serializer}; /// /// impl Serialize for Vec /// where @@ -994,8 +994,8 @@ /// This call must be followed by zero or more calls to `serialize_element`, /// then a call to `end`. /// - /// ```edition2018 - /// use serde::ser::{Serialize, Serializer, SerializeTuple}; + /// ```edition2021 + /// use serde::ser::{Serialize, SerializeTuple, Serializer}; /// /// # mod fool { /// # trait Serialize {} @@ -1024,7 +1024,7 @@ /// } /// ``` /// - /// ```edition2018 + /// ```edition2021 /// use serde::ser::{Serialize, SerializeTuple, Serializer}; /// /// const VRAM_SIZE: usize = 386; @@ -1052,7 +1052,7 @@ /// The `name` is the name of the tuple struct and the `len` is the number /// of data fields that will be serialized. /// - /// ```edition2018 + /// ```edition2021 /// use serde::ser::{Serialize, SerializeTupleStruct, Serializer}; /// /// struct Rgb(u8, u8, u8); @@ -1084,7 +1084,7 @@ /// this variant within the enum, the `variant` is the name of the variant, /// and the `len` is the number of data fields that will be serialized. /// - /// ```edition2018 + /// ```edition2021 /// use serde::ser::{Serialize, SerializeTupleVariant, Serializer}; /// /// enum E { @@ -1130,7 +1130,7 @@ /// be computable before the map is iterated. Some serializers only support /// maps whose length is known up front. /// - /// ```edition2018 + /// ```edition2021 /// # use std::marker::PhantomData; /// # /// # struct HashMap(PhantomData, PhantomData); @@ -1143,14 +1143,14 @@ /// # /// # impl<'a, K, V> IntoIterator for &'a HashMap { /// # type Item = (&'a K, &'a V); - /// # type IntoIter = Box>; + /// # type IntoIter = Box>; /// # /// # fn into_iter(self) -> Self::IntoIter { /// # unimplemented!() /// # } /// # } /// # - /// use serde::ser::{Serialize, Serializer, SerializeMap}; + /// use serde::ser::{Serialize, SerializeMap, Serializer}; /// /// impl Serialize for HashMap /// where @@ -1178,7 +1178,7 @@ /// The `name` is the name of the struct and the `len` is the number of /// data fields that will be serialized. /// - /// ```edition2018 + /// ```edition2021 /// use serde::ser::{Serialize, SerializeStruct, Serializer}; /// /// struct Rgb { @@ -1214,7 +1214,7 @@ /// this variant within the enum, the `variant` is the name of the variant, /// and the `len` is the number of data fields that will be serialized. /// - /// ```edition2018 + /// ```edition2021 /// use serde::ser::{Serialize, SerializeStructVariant, Serializer}; /// /// enum E { @@ -1256,7 +1256,7 @@ /// using [`serialize_seq`]. Implementors should not need to override this /// method. /// - /// ```edition2018 + /// ```edition2021 /// use serde::{Serialize, Serializer}; /// /// struct SecretlyOneHigher { @@ -1279,22 +1279,9 @@ I: IntoIterator, ::Item: Serialize, { - let iter = iter.into_iter(); - let mut serializer = try!(self.serialize_seq(iterator_len_hint(&iter))); - - #[cfg(not(no_iterator_try_fold))] - { - let mut iter = iter; - try!(iter.try_for_each(|item| serializer.serialize_element(&item))); - } - - #[cfg(no_iterator_try_fold)] - { - for item in iter { - try!(serializer.serialize_element(&item)); - } - } - + let mut iter = iter.into_iter(); + let mut serializer = tri!(self.serialize_seq(iterator_len_hint(&iter))); + tri!(iter.try_for_each(|item| serializer.serialize_element(&item))); serializer.end() } @@ -1304,7 +1291,7 @@ /// using [`serialize_map`]. Implementors should not need to override this /// method. /// - /// ```edition2018 + /// ```edition2021 /// use serde::{Serialize, Serializer}; /// use std::collections::BTreeSet; /// @@ -1330,22 +1317,9 @@ V: Serialize, I: IntoIterator, { - let iter = iter.into_iter(); - let mut serializer = try!(self.serialize_map(iterator_len_hint(&iter))); - - #[cfg(not(no_iterator_try_fold))] - { - let mut iter = iter; - try!(iter.try_for_each(|(key, value)| serializer.serialize_entry(&key, &value))); - } - - #[cfg(no_iterator_try_fold)] - { - for (key, value) in iter { - try!(serializer.serialize_entry(&key, &value)); - } - } - + let mut iter = iter.into_iter(); + let mut serializer = tri!(self.serialize_map(iterator_len_hint(&iter))); + tri!(iter.try_for_each(|(key, value)| serializer.serialize_entry(&key, &value))); serializer.end() } @@ -1355,7 +1329,7 @@ /// delegates to [`serialize_str`]. Serializers are encouraged to provide a /// more efficient implementation if possible. /// - /// ```edition2018 + /// ```edition2021 /// # struct DateTime; /// # /// # impl DateTime { @@ -1370,9 +1344,7 @@ /// where /// S: Serializer, /// { - /// serializer.collect_str(&format_args!("{:?}{:?}", - /// self.naive_local(), - /// self.offset())) + /// serializer.collect_str(&format_args!("{:?}{:?}", self.naive_local(), self.offset())) /// } /// } /// ``` @@ -1393,7 +1365,7 @@ /// of this method. If no more sensible behavior is possible, the /// implementation is expected to return an error. /// - /// ```edition2018 + /// ```edition2021 /// # struct DateTime; /// # /// # impl DateTime { @@ -1408,9 +1380,7 @@ /// where /// S: Serializer, /// { - /// serializer.collect_str(&format_args!("{:?}{:?}", - /// self.naive_local(), - /// self.offset())) + /// serializer.collect_str(&format_args!("{:?}{:?}", self.naive_local(), self.offset())) /// } /// } /// ``` @@ -1428,7 +1398,7 @@ /// human-readable one and binary formats like Postcard will prefer the /// compact one. /// - /// ```edition2018 + /// ```edition2021 /// # use std::fmt::{self, Display}; /// # /// # struct Timestamp; @@ -1477,7 +1447,7 @@ /// /// # Example use /// -/// ```edition2018 +/// ```edition2021 /// # use std::marker::PhantomData; /// # /// # struct Vec(PhantomData); @@ -1490,13 +1460,13 @@ /// # /// # impl<'a, T> IntoIterator for &'a Vec { /// # type Item = &'a T; -/// # type IntoIter = Box>; +/// # type IntoIter = Box>; /// # fn into_iter(self) -> Self::IntoIter { /// # unimplemented!() /// # } /// # } /// # -/// use serde::ser::{Serialize, Serializer, SerializeSeq}; +/// use serde::ser::{Serialize, SerializeSeq, Serializer}; /// /// impl Serialize for Vec /// where @@ -1541,8 +1511,8 @@ /// /// # Example use /// -/// ```edition2018 -/// use serde::ser::{Serialize, Serializer, SerializeTuple}; +/// ```edition2021 +/// use serde::ser::{Serialize, SerializeTuple, Serializer}; /// /// # mod fool { /// # trait Serialize {} @@ -1571,7 +1541,7 @@ /// } /// ``` /// -/// ```edition2018 +/// ```edition2021 /// # use std::marker::PhantomData; /// # /// # struct Array(PhantomData); @@ -1584,13 +1554,13 @@ /// # /// # impl<'a, T> IntoIterator for &'a Array { /// # type Item = &'a T; -/// # type IntoIter = Box>; +/// # type IntoIter = Box>; /// # fn into_iter(self) -> Self::IntoIter { /// # unimplemented!() /// # } /// # } /// # -/// use serde::ser::{Serialize, Serializer, SerializeTuple}; +/// use serde::ser::{Serialize, SerializeTuple, Serializer}; /// /// # mod fool { /// # trait Serialize {} @@ -1641,7 +1611,7 @@ /// /// # Example use /// -/// ```edition2018 +/// ```edition2021 /// use serde::ser::{Serialize, SerializeTupleStruct, Serializer}; /// /// struct Rgb(u8, u8, u8); @@ -1686,7 +1656,7 @@ /// /// # Example use /// -/// ```edition2018 +/// ```edition2021 /// use serde::ser::{Serialize, SerializeTupleVariant, Serializer}; /// /// enum E { @@ -1744,7 +1714,7 @@ /// /// # Example use /// -/// ```edition2018 +/// ```edition2021 /// # use std::marker::PhantomData; /// # /// # struct HashMap(PhantomData, PhantomData); @@ -1757,14 +1727,14 @@ /// # /// # impl<'a, K, V> IntoIterator for &'a HashMap { /// # type Item = (&'a K, &'a V); -/// # type IntoIter = Box>; +/// # type IntoIter = Box>; /// # /// # fn into_iter(self) -> Self::IntoIter { /// # unimplemented!() /// # } /// # } /// # -/// use serde::ser::{Serialize, Serializer, SerializeMap}; +/// use serde::ser::{Serialize, SerializeMap, Serializer}; /// /// impl Serialize for HashMap /// where @@ -1843,7 +1813,7 @@ K: Serialize, V: Serialize, { - try!(self.serialize_key(key)); + tri!(self.serialize_key(key)); self.serialize_value(value) } @@ -1855,7 +1825,7 @@ /// /// # Example use /// -/// ```edition2018 +/// ```edition2021 /// use serde::ser::{Serialize, SerializeStruct, Serializer}; /// /// struct Rgb { @@ -1915,7 +1885,7 @@ /// /// # Example use /// -/// ```edition2018 +/// ```edition2021 /// use serde::ser::{Serialize, SerializeStructVariant, Serializer}; /// /// enum E { diff -Nru temporalio-1.3.0/vendor/serde/src/std_error.rs temporalio-1.3.0/vendor/serde/src/std_error.rs --- temporalio-1.3.0/vendor/serde/src/std_error.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde/src/std_error.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -use lib::{Debug, Display}; +use crate::lib::{Debug, Display}; /// Either a re-export of std::error::Error or a new identical trait, depending /// on whether Serde's "std" feature is enabled. @@ -9,7 +9,7 @@ /// generally provide their error types with a `std::error::Error` impl /// directly: /// -/// ```edition2018 +/// ```edition2021 /// #[derive(Debug)] /// struct MySerError {...} /// @@ -29,7 +29,7 @@ /// std = ["serde/std"] /// ``` /// -/// ```edition2018 +/// ```edition2021 /// #[cfg(feature = "std")] /// impl std::error::Error for MySerError {} /// ``` @@ -37,7 +37,7 @@ /// ... or else provide the std Error impl unconditionally via Serde's /// re-export: /// -/// ```edition2018 +/// ```edition2021 /// impl serde::ser::StdError for MySerError {} /// ``` pub trait Error: Debug + Display { diff -Nru temporalio-1.3.0/vendor/serde_derive/.cargo-checksum.json temporalio-1.3.0/vendor/serde_derive/.cargo-checksum.json --- temporalio-1.3.0/vendor/serde_derive/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"d41d267612646903d5f32d00644a219c401a770c5f8d0d7198af3dce808ff8f6","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"13c66875efb67f64fdec817725f34ceb07913e1ebea4adc240868d2ed581d3da","crates-io.md":"ee22254ee64c3189eef3e707c8d75dc66a8df2a7ee9e518d95238950780ec387","src/bound.rs":"fee590a67ca956d7a2fca50a2dc069e71d27fa9adacde98670a88245a8841cf6","src/de.rs":"554977ef2f6b0e3af3418498e0bd79a3b5ac4a859ae5c858e10f844cc95764bf","src/dummy.rs":"1b7de5bfe1158ea7e70d668d4f76fdccf7f63144ac7869e82e8bf1e7ea0db13c","src/fragment.rs":"5548ba65a53d90a296f60c1328a7a7fb040db467f59c2f5210b2fb320457145d","src/internals/ast.rs":"07dfd9a789cd6268c2cff2889e738193d24e68c93873792a0548d5e6b3c94ca4","src/internals/attr.rs":"b9f7a99895f4e9dbec433e14f647eb9ac1457ed7eb47180aaac3b4e8c6420be3","src/internals/case.rs":"9492f0c5142d7b7e8cd39c86d13a855e5ce4489425adb2b96aed89e1b7851ac0","src/internals/check.rs":"41f4725b20919b8828850529d8d395dbb55f54ca4069a9cd0bf37109e9b93172","src/internals/ctxt.rs":"c403db8260a533e58af06e8d0a2bb962edb13a250424ab1f1fd2719902affc37","src/internals/mod.rs":"f32138ff19d57eb00f88ba11f6b015efab2102657804f71ebbf386a3698dad91","src/internals/receiver.rs":"6b016351b8294539039095863d8c99e81dd4530d7f769003d12d4ca73cca172c","src/internals/respan.rs":"899753859c58ce5f532a3ec4584796a52f13ed5a0533191e48c953ba5c1b52ff","src/internals/symbol.rs":"2bf0287da64d28da7e8673af60f66aaf6b29efe33131e56b24d6fa55edb533ad","src/lib.rs":"d1578826467b491db2530b6ffda06ec22d98a46899e164fbebe9f3127e252249","src/pretend.rs":"0e570faf787015535ea6b6683ebc271633c1ca945d3ee1d072c497a1a920c380","src/ser.rs":"e435dc7ef8ee9dca02913f43b4162d22c664061510089745b6278a63df7d30fe","src/this.rs":"a2c128955324c2994ed7cdc3fe4eeceb7ad8a0f9d071665a8378c85c8df64ce2","src/try.rs":"b171b0088c23ebf4bfa07ba457881b41ac5e547d55dd16f737ea988d34badf61"},"package":"5dd83d6dde2b6b2d466e14d9d1acce8816dedee94f735eac6395808b3483c6d6"} \ No newline at end of file +{"files":{"Cargo.toml":"4db5f2b436c12465529a2972c8fd592ae42e3409eb938db71b511f58eba9acf0","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"c3ece10a36d19b4e857a770eaf74a2164d220f55fa11947065a3898c1697ecef","crates-io.md":"56e988ac4944c45f5bf5051e3827892ed8fb817853d99d9df1fff6621108e270","src/bound.rs":"1b4504ae82ec3dc287eeb4262a57380af484f483c1d6b6c8ebb121370fda135a","src/de.rs":"d82c3bc1c7aec8aa7d513ceae65646421910781a3c277c817cf2e15e8e116dcf","src/dummy.rs":"9533dfee23f20d92ea75734c739022820c2787ded0d54f459feacdeb770ec912","src/fragment.rs":"6757cb4c3131d4300f093572efc273c4ab5a20e3e1efb54a311dcfa52d0bd6eb","src/internals/ast.rs":"7dc997e4090033bbd1d0bdd870e8bb87b096b7f66cfd02047f6b85ebdd569b12","src/internals/attr.rs":"7ec05ffad5b049ba2c91cfb9eedc5d472030682d9c8bcd81040f646525dcc7cd","src/internals/case.rs":"10c8dda2b32d8c6c6b63cf09cdc63d02375af7e95ecefe8fecb34f93b65191bb","src/internals/check.rs":"11275a0889c41323306f5de737f7aacb341adf1dcec298ce40860615be898b3f","src/internals/ctxt.rs":"83a4e6fbe0e439d578478883594407e03f2f340541be479bdf0b04a202633a37","src/internals/mod.rs":"ed021ca635c18132a0e5c3d90f21b7f65def0a61e946421a30200b5b9ab6ad43","src/internals/receiver.rs":"105d72145d1e6a45cdccee3694fcba599ece59194d2e070e8c5669c6f18c81da","src/internals/respan.rs":"899753859c58ce5f532a3ec4584796a52f13ed5a0533191e48c953ba5c1b52ff","src/internals/symbol.rs":"d619e88caa3c7a09b03014257f2b349ee922290062d9b97b4dd19d0e64532690","src/lib.rs":"cc5567a13b884989c5e8903cf8b6be799b91839e63cfb7eadebecf051a8863b7","src/pretend.rs":"2c79785bc42e975534d7d88c04b46377cefd3db948b63a32234707531c55b099","src/ser.rs":"e3341471cea9d7e2fb4043e5d1746862beb9a4e25196170879eeac529d460920","src/this.rs":"87818dc80cbb521b51938a653d09daf10aafc220bb10425948de82ad670fcb85"},"package":"5ad697f7e0b65af4983a4ce8f56ed5b357e8d3c36651bf6a7e13639c17b8e670"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/serde_derive/Cargo.toml temporalio-1.3.0/vendor/serde_derive/Cargo.toml --- temporalio-1.3.0/vendor/serde_derive/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,19 +12,11 @@ [package] rust-version = "1.56" name = "serde_derive" -version = "1.0.166" +version = "1.0.186" authors = [ "Erick Tryzelaar ", "David Tolnay ", ] -include = [ - "build.rs", - "src/**/*.rs", - "crates-io.md", - "README.md", - "LICENSE-APACHE", - "LICENSE-MIT", -] description = "Macros 1.1 implementation of #[derive(Serialize, Deserialize)]" homepage = "https://serde.rs" documentation = "https://serde.rs/derive.html" @@ -35,11 +27,15 @@ "no_std", "derive", ] -categories = ["no-std"] +categories = [ + "no-std", + "no-std::no-alloc", +] license = "MIT OR Apache-2.0" repository = "https://github.com/serde-rs/serde" [package.metadata.docs.rs] +rustdoc-args = ["--generate-link-to-definition"] targets = ["x86_64-unknown-linux-gnu"] [lib] @@ -53,10 +49,10 @@ version = "1.0" [dependencies.syn] -version = "2.0.21" +version = "2.0.28" [dev-dependencies.serde] -version = "1.0" +version = "1" [features] default = [] diff -Nru temporalio-1.3.0/vendor/serde_derive/crates-io.md temporalio-1.3.0/vendor/serde_derive/crates-io.md --- temporalio-1.3.0/vendor/serde_derive/crates-io.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/crates-io.md 2023-10-30 19:40:00.000000000 +0000 @@ -16,7 +16,7 @@ ## Serde in action ```rust -use serde::{Serialize, Deserialize}; +use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Debug)] struct Point { diff -Nru temporalio-1.3.0/vendor/serde_derive/README.md temporalio-1.3.0/vendor/serde_derive/README.md --- temporalio-1.3.0/vendor/serde_derive/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,12 +1,12 @@ -# Serde   [![Build Status]][actions] [![Latest Version]][crates.io] [![serde: rustc 1.19+]][Rust 1.19] [![serde_derive: rustc 1.56+]][Rust 1.56] +# Serde   [![Build Status]][actions] [![Latest Version]][crates.io] [![serde: rustc 1.31+]][Rust 1.31] [![serde_derive: rustc 1.56+]][Rust 1.56] [Build Status]: https://img.shields.io/github/actions/workflow/status/serde-rs/serde/ci.yml?branch=master [actions]: https://github.com/serde-rs/serde/actions?query=branch%3Amaster [Latest Version]: https://img.shields.io/crates/v/serde.svg [crates.io]: https://crates.io/crates/serde -[serde: rustc 1.19+]: https://img.shields.io/badge/serde-rustc_1.19+-lightgray.svg +[serde: rustc 1.31+]: https://img.shields.io/badge/serde-rustc_1.31+-lightgray.svg [serde_derive: rustc 1.56+]: https://img.shields.io/badge/serde_derive-rustc_1.56+-lightgray.svg -[Rust 1.19]: https://blog.rust-lang.org/2017/07/20/Rust-1.19.html +[Rust 1.31]: https://blog.rust-lang.org/2018/12/06/Rust-1.31-and-rust-2018.html [Rust 1.56]: https://blog.rust-lang.org/2021/10/21/Rust-1.56.0.html **Serde is a framework for *ser*ializing and *de*serializing Rust data structures efficiently and generically.** @@ -48,7 +48,7 @@

```rust -use serde::{Serialize, Deserialize}; +use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Debug)] struct Point { diff -Nru temporalio-1.3.0/vendor/serde_derive/src/bound.rs temporalio-1.3.0/vendor/serde_derive/src/bound.rs --- temporalio-1.3.0/vendor/serde_derive/src/bound.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/src/bound.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,12 +1,9 @@ +use crate::internals::ast::{Container, Data}; +use crate::internals::{attr, ungroup}; +use proc_macro2::Span; use std::collections::HashSet; - -use syn; use syn::punctuated::{Pair, Punctuated}; - -use internals::ast::{Container, Data}; -use internals::{attr, ungroup}; - -use proc_macro2::Span; +use syn::Token; // Remove the default from every type parameter because in the generated impls // they look like associated types: "error: associated type bindings are not diff -Nru temporalio-1.3.0/vendor/serde_derive/src/de.rs temporalio-1.3.0/vendor/serde_derive/src/de.rs --- temporalio-1.3.0/vendor/serde_derive/src/de.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/src/de.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,19 +1,14 @@ +use crate::fragment::{Expr, Fragment, Match, Stmts}; +use crate::internals::ast::{Container, Data, Field, Style, Variant}; +use crate::internals::{attr, replace_receiver, ungroup, Ctxt, Derive}; +use crate::{bound, dummy, pretend, this}; use proc_macro2::{Literal, Span, TokenStream}; -use quote::ToTokens; -use syn::punctuated::Punctuated; -use syn::spanned::Spanned; -use syn::{self, Ident, Index, Member}; - -use bound; -use dummy; -use fragment::{Expr, Fragment, Match, Stmts}; -use internals::ast::{Container, Data, Field, Style, Variant}; -use internals::{attr, replace_receiver, ungroup, Ctxt, Derive}; -use pretend; -use this; - +use quote::{quote, quote_spanned, ToTokens}; use std::collections::BTreeSet; use std::ptr; +use syn::punctuated::Punctuated; +use syn::spanned::Spanned; +use syn::{parse_quote, Ident, Index, Member}; pub fn expand_derive_deserialize(input: &mut syn::DeriveInput) -> syn::Result { replace_receiver(input); @@ -287,10 +282,10 @@ match &cont.data { Data::Enum(variants) => deserialize_enum(params, variants, &cont.attrs), Data::Struct(Style::Struct, fields) => { - deserialize_struct(None, params, fields, &cont.attrs, None, &Untagged::No) + deserialize_struct(params, fields, &cont.attrs, StructForm::Struct) } Data::Struct(Style::Tuple, fields) | Data::Struct(Style::Newtype, fields) => { - deserialize_tuple(None, params, fields, &cont.attrs, None) + deserialize_tuple(params, fields, &cont.attrs, TupleForm::Tuple) } Data::Struct(Style::Unit, _) => deserialize_unit_struct(params, &cont.attrs), } @@ -322,10 +317,10 @@ let code = match &cont.data { Data::Struct(Style::Struct, fields) => { - deserialize_struct_in_place(None, params, fields, &cont.attrs, None)? + deserialize_struct_in_place(params, fields, &cont.attrs)? } Data::Struct(Style::Tuple, fields) | Data::Struct(Style::Newtype, fields) => { - deserialize_tuple_in_place(None, params, fields, &cont.attrs, None) + deserialize_tuple_in_place(params, fields, &cont.attrs) } Data::Enum(_) | Data::Struct(Style::Unit, _) => { return None; @@ -410,16 +405,22 @@ let this_type = ¶ms.this_type; let this_value = ¶ms.this_value; let type_name = cattrs.name().deserialize_name(); + let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = + split_with_de_lifetime(params); + let delife = params.borrowed.de_lifetime(); let expecting = format!("unit struct {}", params.type_name()); let expecting = cattrs.expecting().unwrap_or(&expecting); quote_block! { #[doc(hidden)] - struct __Visitor; + struct __Visitor #de_impl_generics #where_clause { + marker: _serde::__private::PhantomData<#this_type #ty_generics>, + lifetime: _serde::__private::PhantomData<&#delife ()>, + } - impl<'de> _serde::de::Visitor<'de> for __Visitor { - type Value = #this_type; + impl #de_impl_generics _serde::de::Visitor<#delife> for __Visitor #de_ty_generics #where_clause { + type Value = #this_type #ty_generics; fn expecting(&self, __formatter: &mut _serde::__private::Formatter) -> _serde::__private::fmt::Result { _serde::__private::Formatter::write_str(__formatter, #expecting) @@ -434,16 +435,31 @@ } } - _serde::Deserializer::deserialize_unit_struct(__deserializer, #type_name, __Visitor) + _serde::Deserializer::deserialize_unit_struct( + __deserializer, + #type_name, + __Visitor { + marker: _serde::__private::PhantomData::<#this_type #ty_generics>, + lifetime: _serde::__private::PhantomData, + }, + ) } } +enum TupleForm<'a> { + Tuple, + /// Contains a variant name + ExternallyTagged(&'a syn::Ident), + /// Contains a variant name and an intermediate deserializer from which actual + /// deserialization will be performed + Untagged(&'a syn::Ident, TokenStream), +} + fn deserialize_tuple( - variant_ident: Option<&syn::Ident>, params: &Parameters, fields: &[Field], cattrs: &attr::Container, - deserializer: Option, + form: TupleForm, ) -> Fragment { assert!(!cattrs.has_flatten()); @@ -468,23 +484,27 @@ quote!(#this_value) }; - let is_enum = variant_ident.is_some(); - let type_path = match variant_ident { - Some(variant_ident) => quote!(#construct::#variant_ident), - None => construct, - }; - let expecting = match variant_ident { - Some(variant_ident) => format!("tuple variant {}::{}", params.type_name(), variant_ident), - None => format!("tuple struct {}", params.type_name()), + let type_path = match form { + TupleForm::Tuple => construct, + TupleForm::ExternallyTagged(variant_ident) | TupleForm::Untagged(variant_ident, _) => { + quote!(#construct::#variant_ident) + } + }; + let expecting = match form { + TupleForm::Tuple => format!("tuple struct {}", params.type_name()), + TupleForm::ExternallyTagged(variant_ident) | TupleForm::Untagged(variant_ident, _) => { + format!("tuple variant {}::{}", params.type_name(), variant_ident) + } }; let expecting = cattrs.expecting().unwrap_or(&expecting); let nfields = fields.len(); - let visit_newtype_struct = if !is_enum && nfields == 1 { - Some(deserialize_newtype_struct(&type_path, params, &fields[0])) - } else { - None + let visit_newtype_struct = match form { + TupleForm::Tuple if nfields == 1 => { + Some(deserialize_newtype_struct(&type_path, params, &fields[0])) + } + _ => None, }; let visit_seq = Stmts(deserialize_seq( @@ -497,16 +517,25 @@ lifetime: _serde::__private::PhantomData, } }; - let dispatch = if let Some(deserializer) = deserializer { - quote!(_serde::Deserializer::deserialize_tuple(#deserializer, #field_count, #visitor_expr)) - } else if is_enum { - quote!(_serde::de::VariantAccess::tuple_variant(__variant, #field_count, #visitor_expr)) - } else if nfields == 1 { - let type_name = cattrs.name().deserialize_name(); - quote!(_serde::Deserializer::deserialize_newtype_struct(__deserializer, #type_name, #visitor_expr)) - } else { - let type_name = cattrs.name().deserialize_name(); - quote!(_serde::Deserializer::deserialize_tuple_struct(__deserializer, #type_name, #field_count, #visitor_expr)) + let dispatch = match form { + TupleForm::Tuple if nfields == 1 => { + let type_name = cattrs.name().deserialize_name(); + quote! { + _serde::Deserializer::deserialize_newtype_struct(__deserializer, #type_name, #visitor_expr) + } + } + TupleForm::Tuple => { + let type_name = cattrs.name().deserialize_name(); + quote! { + _serde::Deserializer::deserialize_tuple_struct(__deserializer, #type_name, #field_count, #visitor_expr) + } + } + TupleForm::ExternallyTagged(_) => quote! { + _serde::de::VariantAccess::tuple_variant(__variant, #field_count, #visitor_expr) + }, + TupleForm::Untagged(_, deserializer) => quote! { + _serde::Deserializer::deserialize_tuple(#deserializer, #field_count, #visitor_expr) + }, }; let visitor_var = if field_count == 0 { @@ -546,11 +575,9 @@ #[cfg(feature = "deserialize_in_place")] fn deserialize_tuple_in_place( - variant_ident: Option, params: &Parameters, fields: &[Field], cattrs: &attr::Container, - deserializer: Option, ) -> Fragment { assert!(!cattrs.has_flatten()); @@ -564,17 +591,25 @@ split_with_de_lifetime(params); let delife = params.borrowed.de_lifetime(); - let is_enum = variant_ident.is_some(); - let expecting = match variant_ident { - Some(variant_ident) => format!("tuple variant {}::{}", params.type_name(), variant_ident), - None => format!("tuple struct {}", params.type_name()), - }; + let expecting = format!("tuple struct {}", params.type_name()); let expecting = cattrs.expecting().unwrap_or(&expecting); let nfields = fields.len(); - let visit_newtype_struct = if !is_enum && nfields == 1 { - Some(deserialize_newtype_struct_in_place(params, &fields[0])) + let visit_newtype_struct = if nfields == 1 { + // We do not generate deserialize_in_place if every field has a + // deserialize_with. + assert!(fields[0].attrs.deserialize_with().is_none()); + + Some(quote! { + #[inline] + fn visit_newtype_struct<__E>(self, __e: __E) -> _serde::__private::Result + where + __E: _serde::Deserializer<#delife>, + { + _serde::Deserialize::deserialize_in_place(__e, &mut self.place.0) + } + }) } else { None }; @@ -588,15 +623,10 @@ } }; - let dispatch = if let Some(deserializer) = deserializer { - quote!(_serde::Deserializer::deserialize_tuple(#deserializer, #field_count, #visitor_expr)) - } else if is_enum { - quote!(_serde::de::VariantAccess::tuple_variant(__variant, #field_count, #visitor_expr)) - } else if nfields == 1 { - let type_name = cattrs.name().deserialize_name(); + let type_name = cattrs.name().deserialize_name(); + let dispatch = if nfields == 1 { quote!(_serde::Deserializer::deserialize_newtype_struct(__deserializer, #type_name, #visitor_expr)) } else { - let type_name = cattrs.name().deserialize_name(); quote!(_serde::Deserializer::deserialize_tuple_struct(__deserializer, #type_name, #field_count, #visitor_expr)) }; @@ -674,31 +704,23 @@ let span = field.original.span(); let func = quote_spanned!(span=> _serde::de::SeqAccess::next_element::<#field_ty>); - quote!(try!(#func(&mut __seq))) + quote!(#func(&mut __seq)?) } Some(path) => { let (wrapper, wrapper_ty) = wrap_deserialize_field_with(params, field.ty, path); quote!({ #wrapper _serde::__private::Option::map( - try!(_serde::de::SeqAccess::next_element::<#wrapper_ty>(&mut __seq)), + _serde::de::SeqAccess::next_element::<#wrapper_ty>(&mut __seq)?, |__wrap| __wrap.value) }) } }; - let value_if_none = match field.attrs.default() { - attr::Default::Default => quote!(_serde::__private::Default::default()), - attr::Default::Path(path) => quote!(#path()), - attr::Default::None => quote!( - return _serde::__private::Err(_serde::de::Error::invalid_length(#index_in_seq, &#expecting)); - ), - }; + let value_if_none = expr_is_missing_seq(None, index_in_seq, field, cattrs, expecting); let assign = quote! { let #var = match #visit { _serde::__private::Some(__value) => __value, - _serde::__private::None => { - #value_if_none - } + _serde::__private::None => #value_if_none, }; }; index_in_seq += 1; @@ -774,24 +796,14 @@ self.place.#member = #default; } } else { - let value_if_none = match field.attrs.default() { - attr::Default::Default => quote!( - self.place.#member = _serde::__private::Default::default(); - ), - attr::Default::Path(path) => quote!( - self.place.#member = #path(); - ), - attr::Default::None => quote!( - return _serde::__private::Err(_serde::de::Error::invalid_length(#index_in_seq, &#expecting)); - ), - }; + let value_if_none = expr_is_missing_seq(Some(quote!(self.place.#member = )), index_in_seq, field, cattrs, expecting); let write = match field.attrs.deserialize_with() { None => { quote! { - if let _serde::__private::None = try!(_serde::de::SeqAccess::next_element_seed(&mut __seq, - _serde::__private::de::InPlaceSeed(&mut self.place.#member))) + if let _serde::__private::None = _serde::de::SeqAccess::next_element_seed(&mut __seq, + _serde::__private::de::InPlaceSeed(&mut self.place.#member))? { - #value_if_none + #value_if_none; } } } @@ -799,12 +811,12 @@ let (wrapper, wrapper_ty) = wrap_deserialize_field_with(params, field.ty, path); quote!({ #wrapper - match try!(_serde::de::SeqAccess::next_element::<#wrapper_ty>(&mut __seq)) { + match _serde::de::SeqAccess::next_element::<#wrapper_ty>(&mut __seq)? { _serde::__private::Some(__wrap) => { self.place.#member = __wrap.value; } _serde::__private::None => { - #value_if_none + #value_if_none; } } }) @@ -851,12 +863,12 @@ let span = field.original.span(); let func = quote_spanned!(span=> <#field_ty as _serde::Deserialize>::deserialize); quote! { - try!(#func(__e)) + #func(__e)? } } Some(path) => { quote! { - try!(#path(__e)) + #path(__e)? } } }; @@ -882,40 +894,24 @@ } } -#[cfg(feature = "deserialize_in_place")] -fn deserialize_newtype_struct_in_place(params: &Parameters, field: &Field) -> TokenStream { - // We do not generate deserialize_in_place if every field has a - // deserialize_with. - assert!(field.attrs.deserialize_with().is_none()); - - let delife = params.borrowed.de_lifetime(); - - quote! { - #[inline] - fn visit_newtype_struct<__E>(self, __e: __E) -> _serde::__private::Result - where - __E: _serde::Deserializer<#delife>, - { - _serde::Deserialize::deserialize_in_place(__e, &mut self.place.0) - } - } -} - -enum Untagged { - Yes, - No, +enum StructForm<'a> { + Struct, + /// Contains a variant name + ExternallyTagged(&'a syn::Ident), + /// Contains a variant name and an intermediate deserializer from which actual + /// deserialization will be performed + InternallyTagged(&'a syn::Ident, TokenStream), + /// Contains a variant name and an intermediate deserializer from which actual + /// deserialization will be performed + Untagged(&'a syn::Ident, TokenStream), } fn deserialize_struct( - variant_ident: Option<&syn::Ident>, params: &Parameters, fields: &[Field], cattrs: &attr::Container, - deserializer: Option, - untagged: &Untagged, + form: StructForm, ) -> Fragment { - let is_enum = variant_ident.is_some(); - let this_type = ¶ms.this_type; let this_value = ¶ms.this_value; let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = @@ -932,83 +928,69 @@ quote!(#this_value) }; - let type_path = match variant_ident { - Some(variant_ident) => quote!(#construct::#variant_ident), - None => construct, - }; - let expecting = match variant_ident { - Some(variant_ident) => format!("struct variant {}::{}", params.type_name(), variant_ident), - None => format!("struct {}", params.type_name()), - }; - let expecting = cattrs.expecting().unwrap_or(&expecting); - - let visit_seq = Stmts(deserialize_seq( - &type_path, params, fields, true, cattrs, expecting, - )); - - let (field_visitor, fields_stmt, visit_map) = if cattrs.has_flatten() { - deserialize_struct_as_map_visitor(&type_path, params, fields, cattrs) - } else { - deserialize_struct_as_struct_visitor(&type_path, params, fields, cattrs) - }; - let field_visitor = Stmts(field_visitor); - let fields_stmt = fields_stmt.map(Stmts); - let visit_map = Stmts(visit_map); - - let visitor_expr = quote! { - __Visitor { - marker: _serde::__private::PhantomData::<#this_type #ty_generics>, - lifetime: _serde::__private::PhantomData, - } - }; - let need_seed = deserializer.is_none(); - let dispatch = if let Some(deserializer) = deserializer { - quote! { - _serde::Deserializer::deserialize_any(#deserializer, #visitor_expr) - } - } else if is_enum && cattrs.has_flatten() { - quote! { - _serde::de::VariantAccess::newtype_variant_seed(__variant, #visitor_expr) - } - } else if is_enum { - quote! { - _serde::de::VariantAccess::struct_variant(__variant, FIELDS, #visitor_expr) - } - } else if cattrs.has_flatten() { - quote! { - _serde::Deserializer::deserialize_map(__deserializer, #visitor_expr) - } - } else { - let type_name = cattrs.name().deserialize_name(); - quote! { - _serde::Deserializer::deserialize_struct(__deserializer, #type_name, FIELDS, #visitor_expr) + let type_path = match form { + StructForm::Struct => construct, + StructForm::ExternallyTagged(variant_ident) + | StructForm::InternallyTagged(variant_ident, _) + | StructForm::Untagged(variant_ident, _) => quote!(#construct::#variant_ident), + }; + let expecting = match form { + StructForm::Struct => format!("struct {}", params.type_name()), + StructForm::ExternallyTagged(variant_ident) + | StructForm::InternallyTagged(variant_ident, _) + | StructForm::Untagged(variant_ident, _) => { + format!("struct variant {}::{}", params.type_name(), variant_ident) } }; + let expecting = cattrs.expecting().unwrap_or(&expecting); - let all_skipped = fields.iter().all(|field| field.attrs.skip_deserializing()); - let visitor_var = if all_skipped { - quote!(_) - } else { - quote!(mut __seq) - }; + let field_names_idents: Vec<_> = fields + .iter() + .enumerate() + // Skip fields that shouldn't be deserialized or that were flattened, + // so they don't appear in the storage in their literal form + .filter(|&(_, field)| !field.attrs.skip_deserializing() && !field.attrs.flatten()) + .map(|(i, field)| { + ( + field.attrs.name().deserialize_name(), + field_i(i), + field.attrs.aliases(), + ) + }) + .collect(); + let field_visitor = deserialize_field_identifier(&field_names_idents, cattrs); // untagged struct variants do not get a visit_seq method. The same applies to // structs that only have a map representation. - let visit_seq = match *untagged { - Untagged::No if !cattrs.has_flatten() => Some(quote! { - #[inline] - fn visit_seq<__A>(self, #visitor_var: __A) -> _serde::__private::Result - where - __A: _serde::de::SeqAccess<#delife>, - { - #visit_seq - } - }), - _ => None, + let visit_seq = match form { + StructForm::Untagged(..) => None, + _ if cattrs.has_flatten() => None, + _ => { + let mut_seq = if field_names_idents.is_empty() { + quote!(_) + } else { + quote!(mut __seq) + }; + + let visit_seq = Stmts(deserialize_seq( + &type_path, params, fields, true, cattrs, expecting, + )); + + Some(quote! { + #[inline] + fn visit_seq<__A>(self, #mut_seq: __A) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<#delife>, + { + #visit_seq + } + }) + } }; + let visit_map = Stmts(deserialize_map(&type_path, params, fields, cattrs)); - let visitor_seed = if need_seed && is_enum && cattrs.has_flatten() { - Some(quote! { + let visitor_seed = match form { + StructForm::ExternallyTagged(..) if cattrs.has_flatten() => Some(quote! { impl #de_impl_generics _serde::de::DeserializeSeed<#delife> for __Visitor #de_ty_generics #where_clause { type Value = #this_type #ty_generics; @@ -1019,9 +1001,51 @@ _serde::Deserializer::deserialize_map(__deserializer, self) } } - }) - } else { + }), + _ => None, + }; + + let fields_stmt = if cattrs.has_flatten() { None + } else { + let field_names = field_names_idents + .iter() + .flat_map(|&(_, _, aliases)| aliases); + + Some(quote! { + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ #(#field_names),* ]; + }) + }; + + let visitor_expr = quote! { + __Visitor { + marker: _serde::__private::PhantomData::<#this_type #ty_generics>, + lifetime: _serde::__private::PhantomData, + } + }; + let dispatch = match form { + StructForm::Struct if cattrs.has_flatten() => quote! { + _serde::Deserializer::deserialize_map(__deserializer, #visitor_expr) + }, + StructForm::Struct => { + let type_name = cattrs.name().deserialize_name(); + quote! { + _serde::Deserializer::deserialize_struct(__deserializer, #type_name, FIELDS, #visitor_expr) + } + } + StructForm::ExternallyTagged(_) if cattrs.has_flatten() => quote! { + _serde::de::VariantAccess::newtype_variant_seed(__variant, #visitor_expr) + }, + StructForm::ExternallyTagged(_) => quote! { + _serde::de::VariantAccess::struct_variant(__variant, FIELDS, #visitor_expr) + }, + StructForm::InternallyTagged(_, deserializer) => quote! { + _serde::Deserializer::deserialize_any(#deserializer, #visitor_expr) + }, + StructForm::Untagged(_, deserializer) => quote! { + _serde::Deserializer::deserialize_any(#deserializer, #visitor_expr) + }, }; quote_block! { @@ -1061,14 +1085,10 @@ #[cfg(feature = "deserialize_in_place")] fn deserialize_struct_in_place( - variant_ident: Option, params: &Parameters, fields: &[Field], cattrs: &attr::Container, - deserializer: Option, ) -> Option { - let is_enum = variant_ident.is_some(); - // for now we do not support in_place deserialization for structs that // are represented as map. if cattrs.has_flatten() { @@ -1080,58 +1100,35 @@ split_with_de_lifetime(params); let delife = params.borrowed.de_lifetime(); - let expecting = match variant_ident { - Some(variant_ident) => format!("struct variant {}::{}", params.type_name(), variant_ident), - None => format!("struct {}", params.type_name()), - }; + let expecting = format!("struct {}", params.type_name()); let expecting = cattrs.expecting().unwrap_or(&expecting); - let visit_seq = Stmts(deserialize_seq_in_place(params, fields, cattrs, expecting)); - - let (field_visitor, fields_stmt, visit_map) = - deserialize_struct_as_struct_in_place_visitor(params, fields, cattrs); - - let field_visitor = Stmts(field_visitor); - let fields_stmt = Stmts(fields_stmt); - let visit_map = Stmts(visit_map); + let field_names_idents: Vec<_> = fields + .iter() + .enumerate() + .filter(|&(_, field)| !field.attrs.skip_deserializing()) + .map(|(i, field)| { + ( + field.attrs.name().deserialize_name(), + field_i(i), + field.attrs.aliases(), + ) + }) + .collect(); - let visitor_expr = quote! { - __Visitor { - place: __place, - lifetime: _serde::__private::PhantomData, - } - }; - let dispatch = if let Some(deserializer) = deserializer { - quote! { - _serde::Deserializer::deserialize_any(#deserializer, #visitor_expr) - } - } else if is_enum { - quote! { - _serde::de::VariantAccess::struct_variant(__variant, FIELDS, #visitor_expr) - } - } else { - let type_name = cattrs.name().deserialize_name(); - quote! { - _serde::Deserializer::deserialize_struct(__deserializer, #type_name, FIELDS, #visitor_expr) - } - }; + let field_visitor = deserialize_field_identifier(&field_names_idents, cattrs); - let all_skipped = fields.iter().all(|field| field.attrs.skip_deserializing()); - let visitor_var = if all_skipped { + let mut_seq = if field_names_idents.is_empty() { quote!(_) } else { quote!(mut __seq) }; - - let visit_seq = quote! { - #[inline] - fn visit_seq<__A>(self, #visitor_var: __A) -> _serde::__private::Result - where - __A: _serde::de::SeqAccess<#delife>, - { - #visit_seq - } - }; + let visit_seq = Stmts(deserialize_seq_in_place(params, fields, cattrs, expecting)); + let visit_map = Stmts(deserialize_map_in_place(params, fields, cattrs)); + let field_names = field_names_idents + .iter() + .flat_map(|&(_, _, aliases)| aliases); + let type_name = cattrs.name().deserialize_name(); let in_place_impl_generics = de_impl_generics.in_place(); let in_place_ty_generics = de_ty_generics.in_place(); @@ -1153,7 +1150,13 @@ _serde::__private::Formatter::write_str(__formatter, #expecting) } - #visit_seq + #[inline] + fn visit_seq<__A>(self, #mut_seq: __A) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<#delife>, + { + #visit_seq + } #[inline] fn visit_map<__A>(self, mut __map: __A) -> _serde::__private::Result @@ -1164,9 +1167,13 @@ } } - #fields_stmt + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ #(#field_names),* ]; - #dispatch + _serde::Deserializer::deserialize_struct(__deserializer, #type_name, FIELDS, __Visitor { + place: __place, + lifetime: _serde::__private::PhantomData, + }) }) } @@ -1223,7 +1230,12 @@ }) .collect(); - let other_idx = deserialized_variants.position(|(_, variant)| variant.attrs.other()); + let fallthrough = deserialized_variants + .position(|(_, variant)| variant.attrs.other()) + .map(|other_idx| { + let ignore_variant = variant_names_idents[other_idx].1.clone(); + quote!(_serde::__private::Ok(__Field::#ignore_variant)) + }); let variants_stmt = { let variant_names = variant_names_idents.iter().map(|(name, _, _)| name); @@ -1237,7 +1249,8 @@ &variant_names_idents, cattrs, true, - other_idx, + None, + fallthrough, )); (variants_stmt, variant_visitor) @@ -1292,7 +1305,7 @@ } } else { quote! { - match try!(_serde::de::EnumAccess::variant(__data)) { + match _serde::de::EnumAccess::variant(__data)? { #(#variant_arms)* } } @@ -1356,9 +1369,7 @@ params, variant, cattrs, - quote! { - _serde::__private::de::ContentDeserializer::<__D::Error>::new(__tagged.content) - }, + quote!(__deserializer), )); quote! { @@ -1374,11 +1385,12 @@ #variants_stmt - let __tagged = try!(_serde::Deserializer::deserialize_any( + let (__tag, __content) = _serde::Deserializer::deserialize_any( __deserializer, - _serde::__private::de::TaggedContentVisitor::<__Field>::new(#tag, #expecting))); + _serde::__private::de::TaggedContentVisitor::<__Field>::new(#tag, #expecting))?; + let __deserializer = _serde::__private::de::ContentDeserializer::<__D::Error>::new(__content); - match __tagged.tag { + match __tag { #(#variant_arms)* } } @@ -1419,7 +1431,8 @@ }) .collect(); - let expecting = format!("adjacently tagged enum {}", params.type_name()); + let rust_name = params.type_name(); + let expecting = format!("adjacently tagged enum {}", rust_name); let expecting = cattrs.expecting().unwrap_or(&expecting); let type_name = cattrs.name().deserialize_name(); let deny_unknown_fields = cattrs.deny_unknown_fields(); @@ -1439,6 +1452,14 @@ } }; + let variant_seed = quote! { + _serde::__private::de::AdjacentlyTaggedEnumVariantSeed::<__Field> { + enum_name: #rust_name, + variants: VARIANTS, + fields_enum: _serde::__private::PhantomData + } + }; + let mut missing_content = quote! { _serde::__private::Err(<__A::Error as _serde::de::Error>::missing_field(#content)) }; @@ -1483,7 +1504,11 @@ // Advance the map by one key, returning early in case of error. let next_key = quote! { - try!(_serde::de::MapAccess::next_key_seed(&mut __map, #tag_or_content)) + _serde::de::MapAccess::next_key_seed(&mut __map, #tag_or_content)? + }; + + let variant_from_map = quote! { + _serde::de::MapAccess::next_value_seed(&mut __map, #variant_seed)? }; // When allowing unknown fields, we want to transparently step through keys @@ -1496,7 +1521,7 @@ while let _serde::__private::Some(__k) = #next_key { match __k { _serde::__private::de::TagContentOtherField::Other => { - let _ = try!(_serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)); + let _ = _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?; continue; }, _serde::__private::de::TagContentOtherField::Tag => { @@ -1531,14 +1556,14 @@ let finish_content_then_tag = if variant_arms.is_empty() { quote! { - match try!(_serde::de::MapAccess::next_value::<__Field>(&mut __map)) {} + match #variant_from_map {} } } else { quote! { - let __ret = try!(match try!(_serde::de::MapAccess::next_value(&mut __map)) { + let __ret = match #variant_from_map { // Deserialize the buffered content now that we know the variant. #(#variant_arms)* - }); + }?; // Visit remaining keys, looking for duplicates. #visit_remaining_keys } @@ -1591,7 +1616,7 @@ // First key is the tag. _serde::__private::Some(_serde::__private::de::TagOrContentField::Tag) => { // Parse the tag. - let __field = try!(_serde::de::MapAccess::next_value(&mut __map)); + let __field = #variant_from_map; // Visit the second key. match #next_relevant_key { // Second key is a duplicate of the tag. @@ -1600,12 +1625,12 @@ } // Second key is the content. _serde::__private::Some(_serde::__private::de::TagOrContentField::Content) => { - let __ret = try!(_serde::de::MapAccess::next_value_seed(&mut __map, + let __ret = _serde::de::MapAccess::next_value_seed(&mut __map, __Seed { field: __field, marker: _serde::__private::PhantomData, lifetime: _serde::__private::PhantomData, - })); + })?; // Visit remaining keys, looking for duplicates. #visit_remaining_keys } @@ -1616,7 +1641,7 @@ // First key is the content. _serde::__private::Some(_serde::__private::de::TagOrContentField::Content) => { // Buffer up the content. - let __content = try!(_serde::de::MapAccess::next_value::<_serde::__private::de::Content>(&mut __map)); + let __content = _serde::de::MapAccess::next_value::<_serde::__private::de::Content>(&mut __map)?; // Visit the second key. match #next_relevant_key { // Second key is the tag. @@ -1646,17 +1671,17 @@ __A: _serde::de::SeqAccess<#delife>, { // Visit the first element - the tag. - match try!(_serde::de::SeqAccess::next_element(&mut __seq)) { + match _serde::de::SeqAccess::next_element(&mut __seq)? { _serde::__private::Some(__field) => { // Visit the second element - the content. - match try!(_serde::de::SeqAccess::next_element_seed( + match _serde::de::SeqAccess::next_element_seed( &mut __seq, __Seed { field: __field, marker: _serde::__private::PhantomData, lifetime: _serde::__private::PhantomData, }, - )) { + )? { _serde::__private::Some(__ret) => _serde::__private::Ok(__ret), // There is no second element. _serde::__private::None => { @@ -1726,7 +1751,7 @@ let fallthrough_msg = cattrs.expecting().unwrap_or(&fallthrough_msg); quote_block! { - let __content = try!(<_serde::__private::de::Content as _serde::Deserialize>::deserialize(__deserializer)); + let __content = <_serde::__private::de::Content as _serde::Deserialize>::deserialize(__deserializer)?; let __deserializer = _serde::__private::de::ContentRefDeserializer::<__D::Error>::new(&__content); #( @@ -1759,7 +1784,7 @@ Style::Unit => { let this_value = ¶ms.this_value; quote_block! { - try!(_serde::de::VariantAccess::unit_variant(__variant)); + _serde::de::VariantAccess::unit_variant(__variant)?; _serde::__private::Ok(#this_value::#variant_ident) } } @@ -1769,16 +1794,17 @@ &variant.fields[0], cattrs, ), - Style::Tuple => { - deserialize_tuple(Some(variant_ident), params, &variant.fields, cattrs, None) - } + Style::Tuple => deserialize_tuple( + params, + &variant.fields, + cattrs, + TupleForm::ExternallyTagged(variant_ident), + ), Style::Struct => deserialize_struct( - Some(variant_ident), params, &variant.fields, cattrs, - None, - &Untagged::No, + StructForm::ExternallyTagged(variant_ident), ), } } @@ -1807,7 +1833,7 @@ quote!((#default)) }); quote_block! { - try!(_serde::Deserializer::deserialize_any(#deserializer, _serde::__private::de::InternallyTaggedUnitVisitor::new(#type_name, #variant_name))); + _serde::Deserializer::deserialize_any(#deserializer, _serde::__private::de::InternallyTaggedUnitVisitor::new(#type_name, #variant_name))?; _serde::__private::Ok(#this_value::#variant_ident #default) } } @@ -1818,12 +1844,10 @@ &deserializer, ), Style::Struct => deserialize_struct( - Some(variant_ident), params, &variant.fields, cattrs, - Some(deserializer), - &Untagged::No, + StructForm::InternallyTagged(variant_ident, deserializer), ), Style::Tuple => unreachable!("checked in serde_derive_internals"), } @@ -1870,19 +1894,16 @@ &deserializer, ), Style::Tuple => deserialize_tuple( - Some(variant_ident), params, &variant.fields, cattrs, - Some(deserializer), + TupleForm::Untagged(variant_ident, deserializer), ), Style::Struct => deserialize_struct( - Some(variant_ident), params, &variant.fields, cattrs, - Some(deserializer), - &Untagged::Yes, + StructForm::Untagged(variant_ident, deserializer), ), } } @@ -1898,7 +1919,7 @@ if field.attrs.skip_deserializing() { let default = Expr(expr_is_missing(field, cattrs)); return quote_block! { - try!(_serde::de::VariantAccess::unit_variant(__variant)); + _serde::de::VariantAccess::unit_variant(__variant)?; _serde::__private::Ok(#this_value::#variant_ident(#default)) }; } @@ -1951,30 +1972,15 @@ } fn deserialize_generated_identifier( - fields: &[(String, Ident, Vec)], + fields: &[(&str, Ident, &BTreeSet)], cattrs: &attr::Container, is_variant: bool, - other_idx: Option, + ignore_variant: Option, + fallthrough: Option, ) -> Fragment { let this_value = quote!(__Field); let field_idents: &Vec<_> = &fields.iter().map(|(_, ident, _)| ident).collect(); - let (ignore_variant, fallthrough) = if !is_variant && cattrs.has_flatten() { - let ignore_variant = quote!(__other(_serde::__private::de::Content<'de>),); - let fallthrough = quote!(_serde::__private::Ok(__Field::__other(__value))); - (Some(ignore_variant), Some(fallthrough)) - } else if let Some(other_idx) = other_idx { - let ignore_variant = fields[other_idx].1.clone(); - let fallthrough = quote!(_serde::__private::Ok(__Field::#ignore_variant)); - (None, Some(fallthrough)) - } else if is_variant || cattrs.deny_unknown_fields() { - (None, None) - } else { - let ignore_variant = quote!(__ignore,); - let fallthrough = quote!(_serde::__private::Ok(__Field::__ignore)); - (Some(ignore_variant), Some(fallthrough)) - }; - let visitor_impl = Stmts(deserialize_identifier( &this_value, fields, @@ -2020,6 +2026,33 @@ } } +/// Generates enum and its `Deserialize` implementation that represents each +/// non-skipped field of the struct +fn deserialize_field_identifier( + fields: &[(&str, Ident, &BTreeSet)], + cattrs: &attr::Container, +) -> Stmts { + let (ignore_variant, fallthrough) = if cattrs.has_flatten() { + let ignore_variant = quote!(__other(_serde::__private::de::Content<'de>),); + let fallthrough = quote!(_serde::__private::Ok(__Field::__other(__value))); + (Some(ignore_variant), Some(fallthrough)) + } else if cattrs.deny_unknown_fields() { + (None, None) + } else { + let ignore_variant = quote!(__ignore,); + let fallthrough = quote!(_serde::__private::Ok(__Field::__ignore)); + (Some(ignore_variant), Some(fallthrough)) + }; + + Stmts(deserialize_generated_identifier( + fields, + cattrs, + false, + ignore_variant, + fallthrough, + )) +} + // Generates `Deserialize::deserialize` body for an enum with // `serde(field_identifier)` or `serde(variant_identifier)` attribute. fn deserialize_custom_identifier( @@ -2081,7 +2114,7 @@ }) .collect(); - let names = names_idents.iter().map(|(name, _, _)| name); + let names = names_idents.iter().flat_map(|&(_, _, aliases)| aliases); let names_const = if fallthrough.is_some() { None @@ -2137,32 +2170,24 @@ fn deserialize_identifier( this_value: &TokenStream, - fields: &[(String, Ident, Vec)], + fields: &[(&str, Ident, &BTreeSet)], is_variant: bool, fallthrough: Option, fallthrough_borrowed: Option, collect_other_fields: bool, expecting: Option<&str>, ) -> Fragment { - let mut flat_fields = Vec::new(); - for (_, ident, aliases) in fields { - flat_fields.extend(aliases.iter().map(|alias| (alias, ident))); - } - - let field_strs: &Vec<_> = &flat_fields.iter().map(|(name, _)| name).collect(); - let field_bytes: &Vec<_> = &flat_fields - .iter() - .map(|(name, _)| Literal::byte_string(name.as_bytes())) - .collect(); - - let constructors: &Vec<_> = &flat_fields - .iter() - .map(|(_, ident)| quote!(#this_value::#ident)) - .collect(); - let main_constructors: &Vec<_> = &fields - .iter() - .map(|(_, ident, _)| quote!(#this_value::#ident)) - .collect(); + let str_mapping = fields.iter().map(|(_, ident, aliases)| { + // `aliases` also contains a main name + quote!(#(#aliases)|* => _serde::__private::Ok(#this_value::#ident)) + }); + let bytes_mapping = fields.iter().map(|(_, ident, aliases)| { + // `aliases` also contains a main name + let aliases = aliases + .iter() + .map(|alias| Literal::byte_string(alias.as_bytes())); + quote!(#(#aliases)|* => _serde::__private::Ok(#this_value::#ident)) + }); let expecting = expecting.unwrap_or(if is_variant { "variant identifier" @@ -2170,8 +2195,6 @@ "field identifier" }); - let index_expecting = if is_variant { "variant" } else { "field" }; - let bytes_to_str = if fallthrough.is_some() || collect_other_fields { None } else { @@ -2219,21 +2242,6 @@ &fallthrough_arm_tokens }; - let u64_fallthrough_arm_tokens; - let u64_fallthrough_arm = if let Some(fallthrough) = &fallthrough { - fallthrough - } else { - let fallthrough_msg = format!("{} index 0 <= i < {}", index_expecting, fields.len()); - u64_fallthrough_arm_tokens = quote! { - _serde::__private::Err(_serde::de::Error::invalid_value( - _serde::de::Unexpected::Unsigned(__value), - &#fallthrough_msg, - )) - }; - &u64_fallthrough_arm_tokens - }; - - let variant_indices = 0_u64..; let visit_other = if collect_other_fields { quote! { fn visit_bool<__E>(self, __value: bool) -> _serde::__private::Result @@ -2328,15 +2336,33 @@ } } } else { + let u64_mapping = fields.iter().enumerate().map(|(i, (_, ident, _))| { + let i = i as u64; + quote!(#i => _serde::__private::Ok(#this_value::#ident)) + }); + + let u64_fallthrough_arm_tokens; + let u64_fallthrough_arm = if let Some(fallthrough) = &fallthrough { + fallthrough + } else { + let index_expecting = if is_variant { "variant" } else { "field" }; + let fallthrough_msg = format!("{} index 0 <= i < {}", index_expecting, fields.len()); + u64_fallthrough_arm_tokens = quote! { + _serde::__private::Err(_serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &#fallthrough_msg, + )) + }; + &u64_fallthrough_arm_tokens + }; + quote! { fn visit_u64<__E>(self, __value: u64) -> _serde::__private::Result where __E: _serde::de::Error, { match __value { - #( - #variant_indices => _serde::__private::Ok(#main_constructors), - )* + #(#u64_mapping,)* _ => #u64_fallthrough_arm, } } @@ -2344,6 +2370,8 @@ }; let visit_borrowed = if fallthrough_borrowed.is_some() || collect_other_fields { + let str_mapping = str_mapping.clone(); + let bytes_mapping = bytes_mapping.clone(); let fallthrough_borrowed_arm = fallthrough_borrowed.as_ref().unwrap_or(fallthrough_arm); Some(quote! { fn visit_borrowed_str<__E>(self, __value: &'de str) -> _serde::__private::Result @@ -2351,9 +2379,7 @@ __E: _serde::de::Error, { match __value { - #( - #field_strs => _serde::__private::Ok(#constructors), - )* + #(#str_mapping,)* _ => { #value_as_borrowed_str_content #fallthrough_borrowed_arm @@ -2366,9 +2392,7 @@ __E: _serde::de::Error, { match __value { - #( - #field_bytes => _serde::__private::Ok(#constructors), - )* + #(#bytes_mapping,)* _ => { #bytes_to_str #value_as_borrowed_bytes_content @@ -2393,9 +2417,7 @@ __E: _serde::de::Error, { match __value { - #( - #field_strs => _serde::__private::Ok(#constructors), - )* + #(#str_mapping,)* _ => { #value_as_str_content #fallthrough_arm @@ -2408,9 +2430,7 @@ __E: _serde::de::Error, { match __value { - #( - #field_bytes => _serde::__private::Ok(#constructors), - )* + #(#bytes_mapping,)* _ => { #bytes_to_str #value_as_bytes_content @@ -2423,71 +2443,6 @@ } } -fn deserialize_struct_as_struct_visitor( - struct_path: &TokenStream, - params: &Parameters, - fields: &[Field], - cattrs: &attr::Container, -) -> (Fragment, Option, Fragment) { - assert!(!cattrs.has_flatten()); - - let field_names_idents: Vec<_> = fields - .iter() - .enumerate() - .filter(|&(_, field)| !field.attrs.skip_deserializing()) - .map(|(i, field)| { - ( - field.attrs.name().deserialize_name(), - field_i(i), - field.attrs.aliases(), - ) - }) - .collect(); - - let fields_stmt = { - let field_names = field_names_idents - .iter() - .flat_map(|(_, _, aliases)| aliases); - - quote_block! { - #[doc(hidden)] - const FIELDS: &'static [&'static str] = &[ #(#field_names),* ]; - } - }; - - let field_visitor = deserialize_generated_identifier(&field_names_idents, cattrs, false, None); - - let visit_map = deserialize_map(struct_path, params, fields, cattrs); - - (field_visitor, Some(fields_stmt), visit_map) -} - -fn deserialize_struct_as_map_visitor( - struct_path: &TokenStream, - params: &Parameters, - fields: &[Field], - cattrs: &attr::Container, -) -> (Fragment, Option, Fragment) { - let field_names_idents: Vec<_> = fields - .iter() - .enumerate() - .filter(|&(_, field)| !field.attrs.skip_deserializing() && !field.attrs.flatten()) - .map(|(i, field)| { - ( - field.attrs.name().deserialize_name(), - field_i(i), - field.attrs.aliases(), - ) - }) - .collect(); - - let field_visitor = deserialize_generated_identifier(&field_names_idents, cattrs, false, None); - - let visit_map = deserialize_map(struct_path, params, fields, cattrs); - - (field_visitor, None, visit_map) -} - fn deserialize_map( struct_path: &TokenStream, params: &Parameters, @@ -2538,7 +2493,7 @@ let func = quote_spanned!(span=> _serde::de::MapAccess::next_value::<#field_ty>); quote! { - try!(#func(&mut __map)) + #func(&mut __map)? } } Some(path) => { @@ -2570,14 +2525,14 @@ __Field::__other(__name) => { __collect.push(_serde::__private::Some(( __name, - try!(_serde::de::MapAccess::next_value(&mut __map))))); + _serde::de::MapAccess::next_value(&mut __map)?))); } }) } else if cattrs.deny_unknown_fields() { None } else { Some(quote! { - _ => { let _ = try!(_serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)); } + _ => { let _ = _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?; } }) }; @@ -2585,14 +2540,14 @@ let match_keys = if cattrs.deny_unknown_fields() && all_skipped { quote! { // FIXME: Once feature(exhaustive_patterns) is stable: - // let _serde::__private::None::<__Field> = try!(_serde::de::MapAccess::next_key(&mut __map)); + // let _serde::__private::None::<__Field> = _serde::de::MapAccess::next_key(&mut __map)?; _serde::__private::Option::map( - try!(_serde::de::MapAccess::next_key::<__Field>(&mut __map)), + _serde::de::MapAccess::next_key::<__Field>(&mut __map)?, |__impossible| match __impossible {}); } } else { quote! { - while let _serde::__private::Some(__key) = try!(_serde::de::MapAccess::next_key::<__Field>(&mut __map)) { + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::<__Field>(&mut __map)? { match __key { #(#value_arms)* #ignored_arm @@ -2628,10 +2583,10 @@ Some(path) => quote!(#path), }; quote! { - let #name: #field_ty = try!(#func( + let #name: #field_ty = #func( _serde::__private::de::FlatMapDeserializer( &mut __collect, - _serde::__private::PhantomData))); + _serde::__private::PhantomData))?; } }); @@ -2706,42 +2661,6 @@ } #[cfg(feature = "deserialize_in_place")] -fn deserialize_struct_as_struct_in_place_visitor( - params: &Parameters, - fields: &[Field], - cattrs: &attr::Container, -) -> (Fragment, Fragment, Fragment) { - assert!(!cattrs.has_flatten()); - - let field_names_idents: Vec<_> = fields - .iter() - .enumerate() - .filter(|&(_, field)| !field.attrs.skip_deserializing()) - .map(|(i, field)| { - ( - field.attrs.name().deserialize_name(), - field_i(i), - field.attrs.aliases(), - ) - }) - .collect(); - - let fields_stmt = { - let field_names = field_names_idents.iter().map(|(name, _, _)| name); - quote_block! { - #[doc(hidden)] - const FIELDS: &'static [&'static str] = &[ #(#field_names),* ]; - } - }; - - let field_visitor = deserialize_generated_identifier(&field_names_idents, cattrs, false, None); - - let visit_map = deserialize_map_in_place(params, fields, cattrs); - - (field_visitor, fields_stmt, visit_map) -} - -#[cfg(feature = "deserialize_in_place")] fn deserialize_map_in_place( params: &Parameters, fields: &[Field], @@ -2778,7 +2697,7 @@ let visit = match field.attrs.deserialize_with() { None => { quote! { - try!(_serde::de::MapAccess::next_value_seed(&mut __map, _serde::__private::de::InPlaceSeed(&mut self.place.#member))) + _serde::de::MapAccess::next_value_seed(&mut __map, _serde::__private::de::InPlaceSeed(&mut self.place.#member))? } } Some(path) => { @@ -2810,7 +2729,7 @@ None } else { Some(quote! { - _ => { let _ = try!(_serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)); } + _ => { let _ = _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?; } }) }; @@ -2819,14 +2738,14 @@ let match_keys = if cattrs.deny_unknown_fields() && all_skipped { quote! { // FIXME: Once feature(exhaustive_patterns) is stable: - // let _serde::__private::None::<__Field> = try!(_serde::de::MapAccess::next_key(&mut __map)); + // let _serde::__private::None::<__Field> = _serde::de::MapAccess::next_key(&mut __map)?; _serde::__private::Option::map( - try!(_serde::de::MapAccess::next_key::<__Field>(&mut __map)), + _serde::de::MapAccess::next_key::<__Field>(&mut __map)?, |__impossible| match __impossible {}); } } else { quote! { - while let _serde::__private::Some(__key) = try!(_serde::de::MapAccess::next_key::<__Field>(&mut __map)) { + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::<__Field>(&mut __map)? { match __key { #(#value_arms_from)* #ignored_arm @@ -2923,7 +2842,7 @@ __D: _serde::Deserializer<#delife>, { _serde::__private::Ok(__DeserializeWith { - value: try!(#deserialize_with(__deserializer)), + value: #deserialize_with(__deserializer)?, phantom: _serde::__private::PhantomData, lifetime: _serde::__private::PhantomData, }) @@ -3033,7 +2952,7 @@ let span = field.original.span(); let func = quote_spanned!(span=> _serde::__private::de::missing_field); quote_expr! { - try!(#func(#name)) + #func(#name)? } } Some(_) => { @@ -3044,6 +2963,35 @@ } } +fn expr_is_missing_seq( + assign_to: Option, + index: usize, + field: &Field, + cattrs: &attr::Container, + expecting: &str, +) -> TokenStream { + match field.attrs.default() { + attr::Default::Default => { + let span = field.original.span(); + return quote_spanned!(span=> #assign_to _serde::__private::Default::default()); + } + attr::Default::Path(path) => { + return quote_spanned!(path.span()=> #assign_to #path()); + } + attr::Default::None => { /* below */ } + } + + match *cattrs.default() { + attr::Default::Default | attr::Default::Path(_) => { + let member = &field.member; + quote!(#assign_to __default.#member) + } + attr::Default::None => quote!( + return _serde::__private::Err(_serde::de::Error::invalid_length(#index, &#expecting)) + ), + } +} + fn effective_style(variant: &Variant) -> Style { match variant.style { Style::Newtype if variant.fields[0].attrs.skip_deserializing() => Style::Unit, diff -Nru temporalio-1.3.0/vendor/serde_derive/src/dummy.rs temporalio-1.3.0/vendor/serde_derive/src/dummy.rs --- temporalio-1.3.0/vendor/serde_derive/src/dummy.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/src/dummy.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,11 +1,7 @@ use proc_macro2::TokenStream; - -use syn; -use try; +use quote::quote; pub fn wrap_in_const(serde_path: Option<&syn::Path>, code: TokenStream) -> TokenStream { - let try_replacement = try::replacement(); - let use_serde = match serde_path { Some(path) => quote! { use #path as _serde; @@ -21,7 +17,6 @@ #[allow(non_upper_case_globals, unused_attributes, unused_qualifications)] const _: () = { #use_serde - #try_replacement #code }; } diff -Nru temporalio-1.3.0/vendor/serde_derive/src/fragment.rs temporalio-1.3.0/vendor/serde_derive/src/fragment.rs --- temporalio-1.3.0/vendor/serde_derive/src/fragment.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/src/fragment.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ use proc_macro2::TokenStream; use quote::ToTokens; -use syn::token; +use syn::{token, Token}; pub enum Fragment { /// Tokens that can be used as an expression. diff -Nru temporalio-1.3.0/vendor/serde_derive/src/internals/ast.rs temporalio-1.3.0/vendor/serde_derive/src/internals/ast.rs --- temporalio-1.3.0/vendor/serde_derive/src/internals/ast.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/src/internals/ast.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,8 @@ //! A Serde ast, parsed from the Syn ast and ready to generate Rust code. -use internals::attr; -use internals::check; -use internals::{Ctxt, Derive}; -use syn; +use crate::internals::{attr, check, Ctxt, Derive}; use syn::punctuated::Punctuated; +use syn::Token; /// A source data structure annotated with `#[derive(Serialize)]` and/or `#[derive(Deserialize)]`, /// parsed into an internal representation. @@ -88,9 +86,12 @@ if field.attrs.flatten() { has_flatten = true; } - field - .attrs - .rename_by_rules(variant.attrs.rename_all_rules()); + field.attrs.rename_by_rules( + variant + .attrs + .rename_all_rules() + .or(attrs.rename_all_fields_rules()), + ); } } } @@ -121,7 +122,7 @@ } impl<'a> Data<'a> { - pub fn all_fields(&'a self) -> Box> + 'a> { + pub fn all_fields(&'a self) -> Box> + 'a> { match self { Data::Enum(variants) => { Box::new(variants.iter().flat_map(|variant| variant.fields.iter())) diff -Nru temporalio-1.3.0/vendor/serde_derive/src/internals/attr.rs temporalio-1.3.0/vendor/serde_derive/src/internals/attr.rs --- temporalio-1.3.0/vendor/serde_derive/src/internals/attr.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/src/internals/attr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,15 +1,14 @@ -use internals::symbol::*; -use internals::{ungroup, Ctxt}; +use crate::internals::symbol::*; +use crate::internals::{ungroup, Ctxt}; use proc_macro2::{Spacing, Span, TokenStream, TokenTree}; use quote::ToTokens; use std::borrow::Cow; use std::collections::BTreeSet; use std::iter::FromIterator; -use syn; use syn::meta::ParseNestedMeta; use syn::parse::ParseStream; use syn::punctuated::Punctuated; -use syn::{token, Ident, Lifetime}; +use syn::{parse_quote, token, Ident, Lifetime, Token}; // This module handles parsing of `#[serde(...)]` attributes. The entrypoints // are `attr::Container::from_ast`, `attr::Variant::from_ast`, and @@ -19,7 +18,7 @@ // user will see errors simultaneously for all bad attributes in the crate // rather than just the first. -pub use internals::case::RenameRule; +pub use crate::internals::case::RenameRule; struct Attr<'c, T> { cx: &'c Ctxt, @@ -135,7 +134,7 @@ serialize_renamed: bool, deserialize: String, deserialize_renamed: bool, - deserialize_aliases: Vec, + deserialize_aliases: BTreeSet, } fn unraw(ident: &Ident) -> String { @@ -149,16 +148,12 @@ de_name: Attr, de_aliases: Option>, ) -> Name { - let deserialize_aliases = match de_aliases { - Some(de_aliases) => { - let mut alias_list = BTreeSet::new(); - for alias_name in de_aliases.get() { - alias_list.insert(alias_name); - } - alias_list.into_iter().collect() + let mut alias_set = BTreeSet::new(); + if let Some(de_aliases) = de_aliases { + for alias_name in de_aliases.get() { + alias_set.insert(alias_name); } - None => Vec::new(), - }; + } let ser_name = ser_name.get(); let ser_renamed = ser_name.is_some(); @@ -169,35 +164,42 @@ serialize_renamed: ser_renamed, deserialize: de_name.unwrap_or(source_name), deserialize_renamed: de_renamed, - deserialize_aliases, + deserialize_aliases: alias_set, } } /// Return the container name for the container when serializing. - pub fn serialize_name(&self) -> String { - self.serialize.clone() + pub fn serialize_name(&self) -> &str { + &self.serialize } /// Return the container name for the container when deserializing. - pub fn deserialize_name(&self) -> String { - self.deserialize.clone() + pub fn deserialize_name(&self) -> &str { + &self.deserialize } - fn deserialize_aliases(&self) -> Vec { - let mut aliases = self.deserialize_aliases.clone(); - let main_name = self.deserialize_name(); - if !aliases.contains(&main_name) { - aliases.push(main_name); - } - aliases + fn deserialize_aliases(&self) -> &BTreeSet { + &self.deserialize_aliases } } +#[derive(Copy, Clone)] pub struct RenameAllRules { serialize: RenameRule, deserialize: RenameRule, } +impl RenameAllRules { + /// Returns a new `RenameAllRules` with the individual rules of `self` and + /// `other_rules` joined by `RenameRules::or`. + pub fn or(self, other_rules: Self) -> Self { + Self { + serialize: self.serialize.or(other_rules.serialize), + deserialize: self.deserialize.or(other_rules.deserialize), + } + } +} + /// Represents struct or enum attribute information. pub struct Container { name: Name, @@ -205,6 +207,7 @@ deny_unknown_fields: bool, default: Default, rename_all_rules: RenameAllRules, + rename_all_fields_rules: RenameAllRules, ser_bound: Option>, de_bound: Option>, tag: TagType, @@ -218,6 +221,7 @@ is_packed: bool, /// Error message generated when type can't be deserialized expecting: Option, + non_exhaustive: bool, } /// Styles of representing an enum. @@ -288,6 +292,8 @@ let mut default = Attr::none(cx, DEFAULT); let mut rename_all_ser_rule = Attr::none(cx, RENAME_ALL); let mut rename_all_de_rule = Attr::none(cx, RENAME_ALL); + let mut rename_all_fields_ser_rule = Attr::none(cx, RENAME_ALL_FIELDS); + let mut rename_all_fields_de_rule = Attr::none(cx, RENAME_ALL_FIELDS); let mut ser_bound = Attr::none(cx, BOUND); let mut de_bound = Attr::none(cx, BOUND); let mut untagged = BoolAttr::none(cx, UNTAGGED); @@ -301,9 +307,12 @@ let mut variant_identifier = BoolAttr::none(cx, VARIANT_IDENTIFIER); let mut serde_path = Attr::none(cx, CRATE); let mut expecting = Attr::none(cx, EXPECTING); + let mut non_exhaustive = false; for attr in &item.attrs { if attr.path() != SERDE { + non_exhaustive |= + matches!(&attr.meta, syn::Meta::Path(path) if path == NON_EXHAUSTIVE); continue; } @@ -341,6 +350,44 @@ } } } + } else if meta.path == RENAME_ALL_FIELDS { + // #[serde(rename_all_fields = "foo")] + // #[serde(rename_all_fields(serialize = "foo", deserialize = "bar"))] + let one_name = meta.input.peek(Token![=]); + let (ser, de) = get_renames(cx, RENAME_ALL_FIELDS, &meta)?; + + match item.data { + syn::Data::Enum(_) => { + if let Some(ser) = ser { + match RenameRule::from_str(&ser.value()) { + Ok(rename_rule) => { + rename_all_fields_ser_rule.set(&meta.path, rename_rule); + } + Err(err) => cx.error_spanned_by(ser, err), + } + } + if let Some(de) = de { + match RenameRule::from_str(&de.value()) { + Ok(rename_rule) => { + rename_all_fields_de_rule.set(&meta.path, rename_rule); + } + Err(err) => { + if !one_name { + cx.error_spanned_by(de, err); + } + } + } + } + } + syn::Data::Struct(_) => { + let msg = "#[serde(rename_all_fields)] can only be used on enums"; + cx.syn_error(meta.error(msg)); + } + syn::Data::Union(_) => { + let msg = "#[serde(rename_all_fields)] can only be used on enums"; + cx.syn_error(meta.error(msg)); + } + } } else if meta.path == TRANSPARENT { // #[serde(transparent)] transparent.set_true(meta.path); @@ -353,21 +400,21 @@ if let Some(path) = parse_lit_into_expr_path(cx, DEFAULT, &meta)? { match &item.data { syn::Data::Struct(syn::DataStruct { fields, .. }) => match fields { - syn::Fields::Named(_) => { + syn::Fields::Named(_) | syn::Fields::Unnamed(_) => { default.set(&meta.path, Default::Path(path)); } - syn::Fields::Unnamed(_) | syn::Fields::Unit => { - let msg = "#[serde(default = \"...\")] can only be used on structs with named fields"; - cx.error_spanned_by(fields, msg); + syn::Fields::Unit => { + let msg = "#[serde(default = \"...\")] can only be used on structs that have fields"; + cx.syn_error(meta.error(msg)); } }, - syn::Data::Enum(syn::DataEnum { enum_token, .. }) => { - let msg = "#[serde(default = \"...\")] can only be used on structs with named fields"; - cx.error_spanned_by(enum_token, msg); + syn::Data::Enum(_) => { + let msg = "#[serde(default = \"...\")] can only be used on structs"; + cx.syn_error(meta.error(msg)); } - syn::Data::Union(syn::DataUnion { union_token, .. }) => { - let msg = "#[serde(default = \"...\")] can only be used on structs with named fields"; - cx.error_spanned_by(union_token, msg); + syn::Data::Union(_) => { + let msg = "#[serde(default = \"...\")] can only be used on structs"; + cx.syn_error(meta.error(msg)); } } } @@ -375,21 +422,21 @@ // #[serde(default)] match &item.data { syn::Data::Struct(syn::DataStruct { fields, .. }) => match fields { - syn::Fields::Named(_) => { + syn::Fields::Named(_) | syn::Fields::Unnamed(_) => { default.set(meta.path, Default::Default); } - syn::Fields::Unnamed(_) | syn::Fields::Unit => { - let msg = "#[serde(default)] can only be used on structs with named fields"; + syn::Fields::Unit => { + let msg = "#[serde(default)] can only be used on structs that have fields"; cx.error_spanned_by(fields, msg); } }, - syn::Data::Enum(syn::DataEnum { enum_token, .. }) => { - let msg = "#[serde(default)] can only be used on structs with named fields"; - cx.error_spanned_by(enum_token, msg); + syn::Data::Enum(_) => { + let msg = "#[serde(default)] can only be used on structs"; + cx.syn_error(meta.error(msg)); } - syn::Data::Union(syn::DataUnion { union_token, .. }) => { - let msg = "#[serde(default)] can only be used on structs with named fields"; - cx.error_spanned_by(union_token, msg); + syn::Data::Union(_) => { + let msg = "#[serde(default)] can only be used on structs"; + cx.syn_error(meta.error(msg)); } } } @@ -405,13 +452,13 @@ syn::Data::Enum(_) => { untagged.set_true(&meta.path); } - syn::Data::Struct(syn::DataStruct { struct_token, .. }) => { + syn::Data::Struct(_) => { let msg = "#[serde(untagged)] can only be used on enums"; - cx.error_spanned_by(struct_token, msg); + cx.syn_error(meta.error(msg)); } - syn::Data::Union(syn::DataUnion { union_token, .. }) => { + syn::Data::Union(_) => { let msg = "#[serde(untagged)] can only be used on enums"; - cx.error_spanned_by(union_token, msg); + cx.syn_error(meta.error(msg)); } } } else if meta.path == TAG { @@ -427,12 +474,12 @@ } syn::Fields::Unnamed(_) | syn::Fields::Unit => { let msg = "#[serde(tag = \"...\")] can only be used on enums and structs with named fields"; - cx.error_spanned_by(fields, msg); + cx.syn_error(meta.error(msg)); } }, - syn::Data::Union(syn::DataUnion { union_token, .. }) => { + syn::Data::Union(_) => { let msg = "#[serde(tag = \"...\")] can only be used on enums and structs with named fields"; - cx.error_spanned_by(union_token, msg); + cx.syn_error(meta.error(msg)); } } } @@ -443,13 +490,13 @@ syn::Data::Enum(_) => { content.set(&meta.path, s.value()); } - syn::Data::Struct(syn::DataStruct { struct_token, .. }) => { + syn::Data::Struct(_) => { let msg = "#[serde(content = \"...\")] can only be used on enums"; - cx.error_spanned_by(struct_token, msg); + cx.syn_error(meta.error(msg)); } - syn::Data::Union(syn::DataUnion { union_token, .. }) => { + syn::Data::Union(_) => { let msg = "#[serde(content = \"...\")] can only be used on enums"; - cx.error_spanned_by(union_token, msg); + cx.syn_error(meta.error(msg)); } } } @@ -528,6 +575,10 @@ serialize: rename_all_ser_rule.get().unwrap_or(RenameRule::None), deserialize: rename_all_de_rule.get().unwrap_or(RenameRule::None), }, + rename_all_fields_rules: RenameAllRules { + serialize: rename_all_fields_ser_rule.get().unwrap_or(RenameRule::None), + deserialize: rename_all_fields_de_rule.get().unwrap_or(RenameRule::None), + }, ser_bound: ser_bound.get(), de_bound: de_bound.get(), tag: decide_tag(cx, item, untagged, internal_tag, content), @@ -540,6 +591,7 @@ serde_path: serde_path.get(), is_packed, expecting: expecting.get(), + non_exhaustive, } } @@ -547,8 +599,12 @@ &self.name } - pub fn rename_all_rules(&self) -> &RenameAllRules { - &self.rename_all_rules + pub fn rename_all_rules(&self) -> RenameAllRules { + self.rename_all_rules + } + + pub fn rename_all_fields_rules(&self) -> RenameAllRules { + self.rename_all_fields_rules } pub fn transparent(&self) -> bool { @@ -621,6 +677,10 @@ pub fn expecting(&self) -> Option<&str> { self.expecting.as_ref().map(String::as_ref) } + + pub fn non_exhaustive(&self) -> bool { + self.non_exhaustive + } } fn decide_tag( @@ -656,7 +716,7 @@ } TagType::Internal { tag } } - (Some((untagged_tokens, _)), Some((tag_tokens, _)), None) => { + (Some((untagged_tokens, ())), Some((tag_tokens, _)), None) => { let msg = "enum cannot be both untagged and internally tagged"; cx.error_spanned_by(untagged_tokens, msg); cx.error_spanned_by(tag_tokens, msg); @@ -667,14 +727,14 @@ cx.error_spanned_by(content_tokens, msg); TagType::External } - (Some((untagged_tokens, _)), None, Some((content_tokens, _))) => { + (Some((untagged_tokens, ())), None, Some((content_tokens, _))) => { let msg = "untagged enum cannot have #[serde(content = \"...\")]"; cx.error_spanned_by(untagged_tokens, msg); cx.error_spanned_by(content_tokens, msg); TagType::External } (None, Some((_, tag)), Some((_, content))) => TagType::Adjacent { tag, content }, - (Some((untagged_tokens, _)), Some((tag_tokens, _)), Some((content_tokens, _))) => { + (Some((untagged_tokens, ())), Some((tag_tokens, _)), Some((content_tokens, _))) => { let msg = "untagged enum cannot have #[serde(tag = \"...\", content = \"...\")]"; cx.error_spanned_by(untagged_tokens, msg); cx.error_spanned_by(tag_tokens, msg); @@ -696,7 +756,7 @@ variant_identifier.0.get_with_tokens(), ) { (_, None, None) => Identifier::No, - (_, Some((field_identifier_tokens, _)), Some((variant_identifier_tokens, _))) => { + (_, Some((field_identifier_tokens, ())), Some((variant_identifier_tokens, ()))) => { let msg = "#[serde(field_identifier)] and #[serde(variant_identifier)] cannot both be set"; cx.error_spanned_by(field_identifier_tokens, msg); @@ -917,21 +977,24 @@ &self.name } - pub fn aliases(&self) -> Vec { + pub fn aliases(&self) -> &BTreeSet { self.name.deserialize_aliases() } - pub fn rename_by_rules(&mut self, rules: &RenameAllRules) { + pub fn rename_by_rules(&mut self, rules: RenameAllRules) { if !self.name.serialize_renamed { self.name.serialize = rules.serialize.apply_to_variant(&self.name.serialize); } if !self.name.deserialize_renamed { self.name.deserialize = rules.deserialize.apply_to_variant(&self.name.deserialize); } + self.name + .deserialize_aliases + .insert(self.name.deserialize.clone()); } - pub fn rename_all_rules(&self) -> &RenameAllRules { - &self.rename_all_rules + pub fn rename_all_rules(&self) -> RenameAllRules { + self.rename_all_rules } pub fn ser_bound(&self) -> Option<&[syn::WherePredicate]> { @@ -1256,17 +1319,20 @@ &self.name } - pub fn aliases(&self) -> Vec { + pub fn aliases(&self) -> &BTreeSet { self.name.deserialize_aliases() } - pub fn rename_by_rules(&mut self, rules: &RenameAllRules) { + pub fn rename_by_rules(&mut self, rules: RenameAllRules) { if !self.name.serialize_renamed { self.name.serialize = rules.serialize.apply_to_field(&self.name.serialize); } if !self.name.deserialize_renamed { self.name.deserialize = rules.deserialize.apply_to_field(&self.name.deserialize); } + self.name + .deserialize_aliases + .insert(self.name.deserialize.clone()); } pub fn skip_serializing(&self) -> bool { @@ -1418,6 +1484,13 @@ .. }) = value { + let suffix = lit.suffix(); + if !suffix.is_empty() { + cx.error_spanned_by( + lit, + format!("unexpected suffix `{}` on string literal", suffix), + ); + } Ok(Some(lit.clone())) } else { cx.error_spanned_by( diff -Nru temporalio-1.3.0/vendor/serde_derive/src/internals/case.rs temporalio-1.3.0/vendor/serde_derive/src/internals/case.rs --- temporalio-1.3.0/vendor/serde_derive/src/internals/case.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/src/internals/case.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,13 +1,8 @@ //! Code to convert the Rust-styled field/variant (e.g. `my_field`, `MyType`) to the //! case of the source (e.g. `my-field`, `MY_FIELD`). -// See https://users.rust-lang.org/t/psa-dealing-with-warning-unused-import-std-ascii-asciiext-in-today-s-nightly/13726 -#[allow(deprecated, unused_imports)] -use std::ascii::AsciiExt; - -use std::fmt::{self, Debug, Display}; - use self::RenameRule::*; +use std::fmt::{self, Debug, Display}; /// The different possible ways to change case of fields in a struct, or variants in an enum. #[derive(Copy, Clone, PartialEq)] @@ -59,8 +54,8 @@ } /// Apply a renaming rule to an enum variant, returning the version expected in the source. - pub fn apply_to_variant(&self, variant: &str) -> String { - match *self { + pub fn apply_to_variant(self, variant: &str) -> String { + match self { None | PascalCase => variant.to_owned(), LowerCase => variant.to_ascii_lowercase(), UpperCase => variant.to_ascii_uppercase(), @@ -84,8 +79,8 @@ } /// Apply a renaming rule to a struct field, returning the version expected in the source. - pub fn apply_to_field(&self, field: &str) -> String { - match *self { + pub fn apply_to_field(self, field: &str) -> String { + match self { None | LowerCase | SnakeCase => field.to_owned(), UpperCase => field.to_ascii_uppercase(), PascalCase => { @@ -112,6 +107,14 @@ ScreamingKebabCase => ScreamingSnakeCase.apply_to_field(field).replace('_', "-"), } } + + /// Returns the `RenameRule` if it is not `None`, `rule_b` otherwise. + pub fn or(self, rule_b: Self) -> Self { + match self { + None => rule_b, + _ => self, + } + } } pub struct ParseError<'a> { diff -Nru temporalio-1.3.0/vendor/serde_derive/src/internals/check.rs temporalio-1.3.0/vendor/serde_derive/src/internals/check.rs --- temporalio-1.3.0/vendor/serde_derive/src/internals/check.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/src/internals/check.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,11 +1,12 @@ -use internals::ast::{Container, Data, Field, Style}; -use internals::attr::{Identifier, TagType}; -use internals::{ungroup, Ctxt, Derive}; +use crate::internals::ast::{Container, Data, Field, Style}; +use crate::internals::attr::{Default, Identifier, TagType}; +use crate::internals::{ungroup, Ctxt, Derive}; use syn::{Member, Type}; // Cross-cutting checks that require looking at more than a single attrs object. // Simpler checks should happen when parsing and building the attrs. pub fn check(cx: &Ctxt, cont: &mut Container, derive: Derive) { + check_default_on_tuple(cx, cont); check_remote_generic(cx, cont); check_getter(cx, cont); check_flatten(cx, cont); @@ -17,6 +18,39 @@ check_from_and_try_from(cx, cont); } +// If some field of a tuple struct is marked #[serde(default)] then all fields +// after it must also be marked with that attribute, or the struct must have a +// container-level serde(default) attribute. A field's default value is only +// used for tuple fields if the sequence is exhausted at that point; that means +// all subsequent fields will fail to deserialize if they don't have their own +// default. +fn check_default_on_tuple(cx: &Ctxt, cont: &Container) { + if let Default::None = cont.attrs.default() { + if let Data::Struct(Style::Tuple, fields) = &cont.data { + let mut first_default_index = None; + for (i, field) in fields.iter().enumerate() { + // Skipped fields automatically get the #[serde(default)] + // attribute. We are interested only on non-skipped fields here. + if field.attrs.skip_deserializing() { + continue; + } + if let Default::None = field.attrs.default() { + if let Some(first) = first_default_index { + cx.error_spanned_by( + field.ty, + format!("field must have #[serde(default)] because previous field {} has #[serde(default)]", first), + ); + } + continue; + } + if first_default_index.is_none() { + first_default_index = Some(i); + } + } + } + } +} + // Remote derive definition type must have either all of the generics of the // remote type: // @@ -285,8 +319,10 @@ match variant.style { Style::Struct => { for field in &variant.fields { - let check_ser = !field.attrs.skip_serializing(); - let check_de = !field.attrs.skip_deserializing(); + let check_ser = + !(field.attrs.skip_serializing() || variant.attrs.skip_serializing()); + let check_de = + !(field.attrs.skip_deserializing() || variant.attrs.skip_deserializing()); let name = field.attrs.name(); let ser_name = name.serialize_name(); diff -Nru temporalio-1.3.0/vendor/serde_derive/src/internals/ctxt.rs temporalio-1.3.0/vendor/serde_derive/src/internals/ctxt.rs --- temporalio-1.3.0/vendor/serde_derive/src/internals/ctxt.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/src/internals/ctxt.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,6 @@ use std::cell::RefCell; use std::fmt::Display; use std::thread; -use syn; /// A type to collect errors together and format them. /// diff -Nru temporalio-1.3.0/vendor/serde_derive/src/internals/mod.rs temporalio-1.3.0/vendor/serde_derive/src/internals/mod.rs --- temporalio-1.3.0/vendor/serde_derive/src/internals/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/src/internals/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,19 +1,18 @@ pub mod ast; pub mod attr; -mod ctxt; -pub use self::ctxt::Ctxt; - -mod receiver; -pub use self::receiver::replace_receiver; - mod case; mod check; +mod ctxt; +mod receiver; mod respan; mod symbol; use syn::Type; +pub use self::ctxt::Ctxt; +pub use self::receiver::replace_receiver; + #[derive(Copy, Clone)] pub enum Derive { Serialize, diff -Nru temporalio-1.3.0/vendor/serde_derive/src/internals/receiver.rs temporalio-1.3.0/vendor/serde_derive/src/internals/receiver.rs --- temporalio-1.3.0/vendor/serde_derive/src/internals/receiver.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/src/internals/receiver.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,11 +1,11 @@ -use internals::respan::respan; +use crate::internals::respan::respan; use proc_macro2::Span; use quote::ToTokens; use std::mem; use syn::punctuated::Punctuated; use syn::{ parse_quote, Data, DeriveInput, Expr, ExprPath, GenericArgument, GenericParam, Generics, Macro, - Path, PathArguments, QSelf, ReturnType, Type, TypeParamBound, TypePath, WherePredicate, + Path, PathArguments, QSelf, ReturnType, Token, Type, TypeParamBound, TypePath, WherePredicate, }; pub fn replace_receiver(input: &mut DeriveInput) { diff -Nru temporalio-1.3.0/vendor/serde_derive/src/internals/symbol.rs temporalio-1.3.0/vendor/serde_derive/src/internals/symbol.rs --- temporalio-1.3.0/vendor/serde_derive/src/internals/symbol.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/src/internals/symbol.rs 2023-10-30 19:40:00.000000000 +0000 @@ -19,10 +19,12 @@ pub const FROM: Symbol = Symbol("from"); pub const GETTER: Symbol = Symbol("getter"); pub const INTO: Symbol = Symbol("into"); +pub const NON_EXHAUSTIVE: Symbol = Symbol("non_exhaustive"); pub const OTHER: Symbol = Symbol("other"); pub const REMOTE: Symbol = Symbol("remote"); pub const RENAME: Symbol = Symbol("rename"); pub const RENAME_ALL: Symbol = Symbol("rename_all"); +pub const RENAME_ALL_FIELDS: Symbol = Symbol("rename_all_fields"); pub const REPR: Symbol = Symbol("repr"); pub const SERDE: Symbol = Symbol("serde"); pub const SERIALIZE: Symbol = Symbol("serialize"); diff -Nru temporalio-1.3.0/vendor/serde_derive/src/lib.rs temporalio-1.3.0/vendor/serde_derive/src/lib.rs --- temporalio-1.3.0/vendor/serde_derive/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,7 @@ //! This crate provides Serde's two derive macros. //! -//! ```edition2018 -//! # use serde_derive::{Serialize, Deserialize}; +//! ```edition2021 +//! # use serde_derive::{Deserialize, Serialize}; //! # //! #[derive(Serialize, Deserialize)] //! # struct S; @@ -13,8 +13,7 @@ //! //! [https://serde.rs/derive.html]: https://serde.rs/derive.html -#![doc(html_root_url = "https://docs.rs/serde_derive/1.0.166")] -#![allow(unknown_lints, bare_trait_objects)] +#![doc(html_root_url = "https://docs.rs/serde_derive/1.0.186")] // Ignored clippy lints #![allow( // clippy false positive: https://github.com/rust-lang/rust-clippy/issues/7054 @@ -63,17 +62,16 @@ )] #![cfg_attr(all(test, exhaustive), feature(non_exhaustive_omitted_patterns_lint))] -#[macro_use] +extern crate proc_macro2; extern crate quote; -#[macro_use] extern crate syn; extern crate proc_macro; -extern crate proc_macro2; mod internals; use proc_macro::TokenStream; +use syn::parse_macro_input; use syn::DeriveInput; #[macro_use] @@ -86,7 +84,6 @@ mod pretend; mod ser; mod this; -mod try; #[proc_macro_derive(Serialize, attributes(serde))] pub fn derive_serialize(input: TokenStream) -> TokenStream { diff -Nru temporalio-1.3.0/vendor/serde_derive/src/pretend.rs temporalio-1.3.0/vendor/serde_derive/src/pretend.rs --- temporalio-1.3.0/vendor/serde_derive/src/pretend.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/src/pretend.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,6 @@ +use crate::internals::ast::{Container, Data, Field, Style, Variant}; use proc_macro2::TokenStream; -use quote::format_ident; - -use internals::ast::{Container, Data, Field, Style, Variant}; +use quote::{format_ident, quote}; // Suppress dead_code warnings that would otherwise appear when using a remote // derive. Other than this pretend code, a struct annotated with remote derive diff -Nru temporalio-1.3.0/vendor/serde_derive/src/ser.rs temporalio-1.3.0/vendor/serde_derive/src/ser.rs --- temporalio-1.3.0/vendor/serde_derive/src/ser.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/src/ser.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,14 +1,11 @@ +use crate::fragment::{Fragment, Match, Stmts}; +use crate::internals::ast::{Container, Data, Field, Style, Variant}; +use crate::internals::{attr, replace_receiver, Ctxt, Derive}; +use crate::{bound, dummy, pretend, this}; use proc_macro2::{Span, TokenStream}; +use quote::{quote, quote_spanned}; use syn::spanned::Spanned; -use syn::{self, Ident, Index, Member}; - -use bound; -use dummy; -use fragment::{Fragment, Match, Stmts}; -use internals::ast::{Container, Data, Field, Style, Variant}; -use internals::{attr, replace_receiver, Ctxt, Derive}; -use pretend; -use this; +use syn::{parse_quote, Ident, Index, Member}; pub fn expand_derive_serialize(input: &mut syn::DeriveInput) -> syn::Result { replace_receiver(input); @@ -285,7 +282,7 @@ .fold(quote!(0), |sum, expr| quote!(#sum + #expr)); quote_block! { - let #let_mut __serde_state = try!(_serde::Serializer::serialize_tuple_struct(__serializer, #type_name, #len)); + let #let_mut __serde_state = _serde::Serializer::serialize_tuple_struct(__serializer, #type_name, #len)?; #(#serialize_stmts)* _serde::ser::SerializeTupleStruct::end(__serde_state) } @@ -307,7 +304,7 @@ let type_name = cattrs.name().serialize_name(); let func = struct_trait.serialize_field(Span::call_site()); quote! { - try!(#func(&mut __serde_state, #tag, #type_name)); + #func(&mut __serde_state, #tag, #type_name)?; } } _ => quote! {}, @@ -348,7 +345,7 @@ ); quote_block! { - let #let_mut __serde_state = try!(_serde::Serializer::serialize_struct(__serializer, #type_name, #len)); + let #let_mut __serde_state = _serde::Serializer::serialize_struct(__serializer, #type_name, #len)?; #tag_field #(#serialize_fields)* _serde::ser::SerializeStruct::end(__serde_state) @@ -392,7 +389,7 @@ }; quote_block! { - let #let_mut __serde_state = try!(_serde::Serializer::serialize_map(__serializer, #len)); + let #let_mut __serde_state = _serde::Serializer::serialize_map(__serializer, #len)?; #tag_field #(#serialize_fields)* _serde::ser::SerializeMap::end(__serde_state) @@ -404,7 +401,7 @@ let self_var = ¶ms.self_var; - let arms: Vec<_> = variants + let mut arms: Vec<_> = variants .iter() .enumerate() .map(|(variant_index, variant)| { @@ -412,6 +409,12 @@ }) .collect(); + if cattrs.remote().is_some() && cattrs.non_exhaustive() { + arms.push(quote! { + ref unrecognized => _serde::__private::Err(_serde::ser::Error::custom(_serde::__private::ser::CannotSerializeVariant(unrecognized))), + }); + } + quote_expr! { match *#self_var { #(#arms)* @@ -481,7 +484,14 @@ serialize_internally_tagged_variant(params, variant, cattrs, tag) } (attr::TagType::Adjacent { tag, content }, false) => { - serialize_adjacently_tagged_variant(params, variant, cattrs, tag, content) + serialize_adjacently_tagged_variant( + params, + variant, + cattrs, + variant_index, + tag, + content, + ) } (attr::TagType::None, _) | (_, true) => { serialize_untagged_variant(params, variant, cattrs) @@ -562,7 +572,7 @@ }, params, &variant.fields, - &type_name, + type_name, ), } } @@ -596,10 +606,10 @@ match effective_style(variant) { Style::Unit => { quote_block! { - let mut __struct = try!(_serde::Serializer::serialize_struct( - __serializer, #type_name, 1)); - try!(_serde::ser::SerializeStruct::serialize_field( - &mut __struct, #tag, #variant_name)); + let mut __struct = _serde::Serializer::serialize_struct( + __serializer, #type_name, 1)?; + _serde::ser::SerializeStruct::serialize_field( + &mut __struct, #tag, #variant_name)?; _serde::ser::SerializeStruct::end(__struct) } } @@ -627,7 +637,7 @@ StructVariant::InternallyTagged { tag, variant_name }, params, &variant.fields, - &type_name, + type_name, ), Style::Tuple => unreachable!("checked in serde_derive_internals"), } @@ -637,12 +647,20 @@ params: &Parameters, variant: &Variant, cattrs: &attr::Container, + variant_index: u32, tag: &str, content: &str, ) -> Fragment { let this_type = ¶ms.this_type; let type_name = cattrs.name().serialize_name(); let variant_name = variant.attrs.name().serialize_name(); + let serialize_variant = quote! { + &_serde::__private::ser::AdjacentlyTaggedEnumVariant { + enum_name: #type_name, + variant_index: #variant_index, + variant_name: #variant_name, + } + }; let inner = Stmts(if let Some(path) = variant.attrs.serialize_with() { let ser = wrap_serialize_variant_with(params, path, variant); @@ -653,10 +671,10 @@ match effective_style(variant) { Style::Unit => { return quote_block! { - let mut __struct = try!(_serde::Serializer::serialize_struct( - __serializer, #type_name, 1)); - try!(_serde::ser::SerializeStruct::serialize_field( - &mut __struct, #tag, #variant_name)); + let mut __struct = _serde::Serializer::serialize_struct( + __serializer, #type_name, 1)?; + _serde::ser::SerializeStruct::serialize_field( + &mut __struct, #tag, #serialize_variant)?; _serde::ser::SerializeStruct::end(__struct) }; } @@ -670,12 +688,12 @@ let span = field.original.span(); let func = quote_spanned!(span=> _serde::ser::SerializeStruct::serialize_field); return quote_block! { - let mut __struct = try!(_serde::Serializer::serialize_struct( - __serializer, #type_name, 2)); - try!(_serde::ser::SerializeStruct::serialize_field( - &mut __struct, #tag, #variant_name)); - try!(#func( - &mut __struct, #content, #field_expr)); + let mut __struct = _serde::Serializer::serialize_struct( + __serializer, #type_name, 2)?; + _serde::ser::SerializeStruct::serialize_field( + &mut __struct, #tag, #serialize_variant)?; + #func( + &mut __struct, #content, #field_expr)?; _serde::ser::SerializeStruct::end(__struct) }; } @@ -686,13 +704,13 @@ StructVariant::Untagged, params, &variant.fields, - &variant_name, + variant_name, ), } }); let fields_ty = variant.fields.iter().map(|f| &f.ty); - let fields_ident: &Vec<_> = &match variant.style { + let fields_ident: &[_] = &match variant.style { Style::Unit => { if variant.attrs.serialize_with().is_some() { vec![] @@ -735,15 +753,15 @@ } } - let mut __struct = try!(_serde::Serializer::serialize_struct( - __serializer, #type_name, 2)); - try!(_serde::ser::SerializeStruct::serialize_field( - &mut __struct, #tag, #variant_name)); - try!(_serde::ser::SerializeStruct::serialize_field( + let mut __struct = _serde::Serializer::serialize_struct( + __serializer, #type_name, 2)?; + _serde::ser::SerializeStruct::serialize_field( + &mut __struct, #tag, #serialize_variant)?; + _serde::ser::SerializeStruct::serialize_field( &mut __struct, #content, &__AdjacentlyTagged { data: (#(#fields_ident,)*), phantom: _serde::__private::PhantomData::<#this_type #ty_generics>, - })); + })?; _serde::ser::SerializeStruct::end(__struct) } } @@ -782,16 +800,16 @@ Style::Tuple => serialize_tuple_variant(TupleVariant::Untagged, params, &variant.fields), Style::Struct => { let type_name = cattrs.name().serialize_name(); - serialize_struct_variant(StructVariant::Untagged, params, &variant.fields, &type_name) + serialize_struct_variant(StructVariant::Untagged, params, &variant.fields, type_name) } } } -enum TupleVariant { +enum TupleVariant<'a> { ExternallyTagged { - type_name: String, + type_name: &'a str, variant_index: u32, - variant_name: String, + variant_name: &'a str, }, Untagged, } @@ -833,21 +851,21 @@ variant_name, } => { quote_block! { - let #let_mut __serde_state = try!(_serde::Serializer::serialize_tuple_variant( + let #let_mut __serde_state = _serde::Serializer::serialize_tuple_variant( __serializer, #type_name, #variant_index, #variant_name, - #len)); + #len)?; #(#serialize_stmts)* _serde::ser::SerializeTupleVariant::end(__serde_state) } } TupleVariant::Untagged => { quote_block! { - let #let_mut __serde_state = try!(_serde::Serializer::serialize_tuple( + let #let_mut __serde_state = _serde::Serializer::serialize_tuple( __serializer, - #len)); + #len)?; #(#serialize_stmts)* _serde::ser::SerializeTuple::end(__serde_state) } @@ -858,11 +876,11 @@ enum StructVariant<'a> { ExternallyTagged { variant_index: u32, - variant_name: String, + variant_name: &'a str, }, InternallyTagged { tag: &'a str, - variant_name: String, + variant_name: &'a str, }, Untagged, } @@ -910,40 +928,40 @@ variant_name, } => { quote_block! { - let #let_mut __serde_state = try!(_serde::Serializer::serialize_struct_variant( + let #let_mut __serde_state = _serde::Serializer::serialize_struct_variant( __serializer, #name, #variant_index, #variant_name, #len, - )); + )?; #(#serialize_fields)* _serde::ser::SerializeStructVariant::end(__serde_state) } } StructVariant::InternallyTagged { tag, variant_name } => { quote_block! { - let mut __serde_state = try!(_serde::Serializer::serialize_struct( + let mut __serde_state = _serde::Serializer::serialize_struct( __serializer, #name, #len + 1, - )); - try!(_serde::ser::SerializeStruct::serialize_field( + )?; + _serde::ser::SerializeStruct::serialize_field( &mut __serde_state, #tag, #variant_name, - )); + )?; #(#serialize_fields)* _serde::ser::SerializeStruct::end(__serde_state) } } StructVariant::Untagged => { quote_block! { - let #let_mut __serde_state = try!(_serde::Serializer::serialize_struct( + let #let_mut __serde_state = _serde::Serializer::serialize_struct( __serializer, #name, #len, - )); + )?; #(#serialize_fields)* _serde::ser::SerializeStruct::end(__serde_state) } @@ -993,9 +1011,9 @@ __S: _serde::Serializer, { let (#(#members,)*) = self.data; - let #let_mut __serde_state = try!(_serde::Serializer::serialize_map( + let #let_mut __serde_state = _serde::Serializer::serialize_map( __serializer, - _serde::__private::None)); + _serde::__private::None)?; #(#serialize_fields)* _serde::ser::SerializeMap::end(__serde_state) } @@ -1014,23 +1032,23 @@ } StructVariant::InternallyTagged { tag, variant_name } => { quote_block! { - let #let_mut __serde_state = try!(_serde::Serializer::serialize_map( + let #let_mut __serde_state = _serde::Serializer::serialize_map( __serializer, - _serde::__private::None)); - try!(_serde::ser::SerializeMap::serialize_entry( + _serde::__private::None)?; + _serde::ser::SerializeMap::serialize_entry( &mut __serde_state, #tag, #variant_name, - )); + )?; #(#serialize_fields)* _serde::ser::SerializeMap::end(__serde_state) } } StructVariant::Untagged => { quote_block! { - let #let_mut __serde_state = try!(_serde::Serializer::serialize_map( + let #let_mut __serde_state = _serde::Serializer::serialize_map( __serializer, - _serde::__private::None)); + _serde::__private::None)?; #(#serialize_fields)* _serde::ser::SerializeMap::end(__serde_state) } @@ -1075,7 +1093,7 @@ let span = field.original.span(); let func = tuple_trait.serialize_element(span); let ser = quote! { - try!(#func(&mut __serde_state, #field_expr)); + #func(&mut __serde_state, #field_expr)?; }; match skip { @@ -1119,12 +1137,12 @@ let ser = if field.attrs.flatten() { let func = quote_spanned!(span=> _serde::Serialize::serialize); quote! { - try!(#func(&#field_expr, _serde::__private::ser::FlatMapSerializer(&mut __serde_state))); + #func(&#field_expr, _serde::__private::ser::FlatMapSerializer(&mut __serde_state))?; } } else { let func = struct_trait.serialize_field(span); quote! { - try!(#func(&mut __serde_state, #key_expr, #field_expr)); + #func(&mut __serde_state, #key_expr, #field_expr)?; } }; @@ -1136,7 +1154,7 @@ if !#skip { #ser } else { - try!(#skip_func(&mut __serde_state, #key_expr)); + #skip_func(&mut __serde_state, #key_expr)?; } } } else { @@ -1236,7 +1254,7 @@ // Serialization of an empty struct results in code like: // -// let mut __serde_state = try!(serializer.serialize_struct("S", 0)); +// let mut __serde_state = serializer.serialize_struct("S", 0)?; // _serde::ser::SerializeStruct::end(__serde_state) // // where we want to omit the `mut` to avoid a warning. diff -Nru temporalio-1.3.0/vendor/serde_derive/src/this.rs temporalio-1.3.0/vendor/serde_derive/src/this.rs --- temporalio-1.3.0/vendor/serde_derive/src/this.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/src/this.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -use internals::ast::Container; +use crate::internals::ast::Container; use syn::{Path, PathArguments, Token}; pub fn this_type(cont: &Container) -> Path { diff -Nru temporalio-1.3.0/vendor/serde_derive/src/try.rs temporalio-1.3.0/vendor/serde_derive/src/try.rs --- temporalio-1.3.0/vendor/serde_derive/src/try.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_derive/src/try.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -use proc_macro2::{Punct, Spacing, TokenStream}; - -// None of our generated code requires the `From::from` error conversion -// performed by the standard library's `try!` macro. With this simplified macro -// we see a significant improvement in type checking and borrow checking time of -// the generated code and a slight improvement in binary size. -pub fn replacement() -> TokenStream { - // Cannot pass `$expr` to `quote!` prior to Rust 1.17.0 so interpolate it. - let dollar = Punct::new('$', Spacing::Alone); - - quote! { - #[allow(unused_macros)] - macro_rules! try { - (#dollar __expr:expr) => { - match #dollar __expr { - _serde::__private::Ok(__val) => __val, - _serde::__private::Err(__err) => { - return _serde::__private::Err(__err); - } - } - } - } - } -} diff -Nru temporalio-1.3.0/vendor/serde_json/.cargo-checksum.json temporalio-1.3.0/vendor/serde_json/.cargo-checksum.json --- temporalio-1.3.0/vendor/serde_json/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_json/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CONTRIBUTING.md":"f5270cafba66223a7b51ffc0d286075a17bb7cd88762fc80d333d3102629f4d8","Cargo.toml":"7f9d4421a8ecd0934a0efb04a98551d7153aa47ddde42f5b65f65a73209471d7","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"1e5a86e6b5e79f92f9e7226d9a8ba16d4ec70567d153c9cacebcb582770378a1","build.rs":"0dd97b63a07aa2d4bbb4c7d0e73b521da130769da9f49f28a7b63332781eb3de","src/de.rs":"322236fb65fb9d62b21fea19e3115997d7d6bb8a8bc4f16d77003354a64f887d","src/error.rs":"b16e56a5d689edf278f6feac758ad76a79d0f91222b8eec5637b48bf6d7022de","src/features_check/error.rs":"d7359f864afbfe105a38abea9f563dc423036ebc4c956a5695a4beef144dc7ec","src/features_check/mod.rs":"2209f8d5c46b50c8a3b8dc22338dcaf0135d192e8b05d2f456cbe6a73104e958","src/io/core.rs":"60ba28f67a9acaecf8964b611efba416b13f9f2bae4befc329fdf0e037293802","src/io/mod.rs":"fd1ed5080495cab21117f6f7d3c2c9e3687cad0c69a0cd087b08a145a9e672da","src/iter.rs":"f832c469cd7999d26ba9b76baa69b257a212a7edb3dfdf9b1d1bb35e8da85fa9","src/lexical/algorithm.rs":"4fbeb1994049348d1fc388dd1a29e481f8abb8fe1e28bfebf50f3bbce5fa5fbe","src/lexical/bhcomp.rs":"b7c68d74c0055eb67ec2c1bcf27bbc28bef8f1bbc43db8eb94ba69892230add6","src/lexical/bignum.rs":"4230cde10dc8eae456a713cf90ec4e48dff4b1d0c542621ce7f00f39ade2645e","src/lexical/cached.rs":"0e127398691f8042c19cde209e7f4b0161f0f3150342430145929f711e6fdac8","src/lexical/cached_float80.rs":"0f8f74a22cb7d871322a9893bffd0255ca10bf9dffd13afb2462dd3d7f51805f","src/lexical/digit.rs":"a265b9072194a62a67dfc4df3c86d4213097cf3f82280d025e0012a5a262fd9d","src/lexical/errors.rs":"6bc993febceb7dd96ac1c8c5c53b5f5a30297016c0f813ed8ff8d7938d01534d","src/lexical/exponent.rs":"387e945b97dc7ba48a7091c50d228a0dde3a1c4145703d4ab9c31191a91693b0","src/lexical/float.rs":"fe356213c92a049f4bef2f58bc0e3a26866ca06b8c1d74d0f961c5b883852cad","src/lexical/large_powers.rs":"34537f5c701afce1ec2a1fd3c14950381b2e27c9ad74f002c91f3708e8da9ca5","src/lexical/large_powers32.rs":"d533037c6141e6671102aee490c9cdeaba81e667ddca781b2b99db2c455e4a1a","src/lexical/large_powers64.rs":"745dd7c0cbe499eec027ef586248881011d9df20c7efab7929c1807b59886ba1","src/lexical/math.rs":"240804aa030849495fa03a83a0ee8539d5a5c8639b825f2d69d27b7567b06fb3","src/lexical/mod.rs":"4b4c5228779c0f135a4cb018700e3bcd495da48b74421a86f6b8b304acdef924","src/lexical/num.rs":"cf705c62612e31d704f43d94a633ea1243c6befad7ef5792e2e881a7fd21e809","src/lexical/parse.rs":"c2bfac4c70a19938ced61e991f4ec606764887cf12bac1a0978b5b5318a56aac","src/lexical/rounding.rs":"697207248ba17b7f4965aedb11d276261ada5b06d9c6265d8fd6246664ff6e3c","src/lexical/shift.rs":"bc1ed053dd63d45ac9c35302f18de9f00d94027f28af4ab749c9248439de832a","src/lexical/small_powers.rs":"4608dd218b8002435db7e1ec79d2d0fef5f47ae257b93353326d52ecc80cccda","src/lib.rs":"762bcee7a27c12cfb9945cf85fc7c79daf441fdbceee6003e69ed6a8a09266da","src/macros.rs":"516f69976f433bcc5e48c32b3e29c2e0ab7b549810827d7a9c59171cdf11c1e2","src/map.rs":"14fa16650b462ef138bebe1d18cb296b0e1ff404f12f2c212f72ed7c969b3a12","src/number.rs":"50633e05cfa4be84b69eb0321cf176ee0a34f7120046c2f927ebdbb625c60048","src/raw.rs":"6d46836486b8d1c58f2aff563285400b1b0ec163eee34e7be78e0fa7a99aa0e8","src/read.rs":"49b4b1d067b6485cbded28fb961666ab5df82c36661af722dbae756efb6b2891","src/ser.rs":"edd6af71f1a576cac2396966b9de79f717048114e3794a2231dbf1733af03bac","src/value/de.rs":"78f938d960e285f671f3b86ed173d598a815690a14512d6daa94dee43d3ce4cf","src/value/from.rs":"eceab6531422c820a443981c2a71c9ba01e032fbbd38884d1ac6d03175d56244","src/value/index.rs":"8a99d8d50f5674181ced22f6e81dc529eaecb01e543e30346e51fe42cb4b8a5f","src/value/mod.rs":"81c62fcb50e92b2f424e361328df5b02621756781bf80b8e26fd3d13473b57cd","src/value/partial_eq.rs":"b64e1e1dffd50fefe3106ca74499aac01ea3d76b995d3cc1ef3a2b2768d0f1cf","src/value/ser.rs":"e06311be9ace2f3805ec7aacf9a1663ace5494ffae1b7dc16870f96b6d6561e1","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/debug.rs":"a8451217c1e127ad6e653ef11e0513525ee350e1e37dd575758a8ee9301b28fb","tests/lexical.rs":"b65eaef5edbc3294751c6ddc0a51eaf8de9165d65955f87c2e3b2679a49de3b0","tests/lexical/algorithm.rs":"da378df9ee24bfa033968d5c94e91b58e52c39bf6c825dec51c3eb7250cc5874","tests/lexical/exponent.rs":"26ea92abc654a6a88a8281552bca2f76ea1fa4c17d66a1dd6defe14f7d89b666","tests/lexical/float.rs":"0440f2d85c993bcccd925096d7f4136bf624ffd66b3c7ee565d158390685eb11","tests/lexical/math.rs":"4874be2103be5fbe8b8015354414df271ffa00fd815546fc077f15fb4d7a5a37","tests/lexical/num.rs":"6e650c40de85ed72ac06b6bf1487ba161f3824e26d827df6cfdf2bbdb8d05a05","tests/lexical/parse.rs":"17c73e0a59d462716d974b8dd23a291eb6efdc3a933248874e5eab7e7209d67f","tests/lexical/rounding.rs":"6c56e39ba534616c1b2146e8efa6eb57aed322e683bf23183cd32a61fae6447e","tests/macros/mod.rs":"93aa1d54af20bc2c55b6ae8db73c1414cda2626eb9fa7bd57b9d613a3c6e6a19","tests/map.rs":"dcc5212242e4e93703c4335d54f5603b0211b33d6fb5ab410bb630cda6d46b09","tests/regression.rs":"86731134bfb9bb693d9a4fc62393027de80a8bf031109ea6c7ea475b1ebdde8d","tests/regression/issue1004.rs":"38d7e3b6c515b881078ebd21ca8063d2ca105cd319695d29538f879e37f091b5","tests/regression/issue520.rs":"d146be3472db902b48127d65fe83aa9f698143aca9074c83cd1a9d5dd28e3ec3","tests/regression/issue795.rs":"582e2e7c68113f05a4b1d2cb556a2df7cc77f2ce8164a32c5cc58ae68abb60ec","tests/regression/issue845.rs":"8bd64588fc344e119d0e9e5e7604236e7c168c574b0692033f15278e216a6b9c","tests/regression/issue953.rs":"b2cddc761f5ca6639900c173765a8a5868528a896924e5e925db2696469208f7","tests/stream.rs":"c7d91014538ecd8f495b196d40e999ab2745f2e69fa2ff9e52521605dc6ce856","tests/test.rs":"0fb9f0470b9ee1a8dd29c4ff5ded04da84a4d477db75a5e96705950c50e0ade2","tests/ui/missing_colon.rs":"d07e0c34d98eb43465f0a0310f2c0b5d5b0d26d243b352a1c6bbe6ad3b27eda9","tests/ui/missing_colon.stderr":"3732fd8f4e57b84efc07170cda5f9c5b2b17c707e23c1659222b5a46f652a8d8","tests/ui/missing_comma.rs":"b8a9662f99c3e6dd2b6417892c37640578ce91d3a8365bf10c1f686a3227aa87","tests/ui/missing_comma.stderr":"eae626cf93c97abd105066e624ca4e8cb096784413b9d2564cf9414a8492bc4d","tests/ui/missing_value.rs":"bca25d67127fb88e7c191c7b03af5a4ce8a9abb630f3d2e6a6c1e77e213dc9a4","tests/ui/missing_value.stderr":"b0df8add5cf74e5df30eedd3ca347e4862c04a01c54d802ff45392f2032065b1","tests/ui/not_found.rs":"d0a7adb309879ff65aee115b52cc33d36f4bad353cf97c4effc34a6128c2bee3","tests/ui/not_found.stderr":"359b751c0c21fab6d460daef4d5f73a265f7769c9b578f98ea3cb6cbf2387643","tests/ui/parse_expr.rs":"32e6d51f528db3d1ab0ed1e24765b865be393565c26f77413c5aa39d601ac563","tests/ui/parse_expr.stderr":"4fcd0a014fbce31c9266bab8527d6e6b6806a0e21d9e0275ce713137856073ce","tests/ui/parse_key.rs":"18829b2af320d5cf8a0a5cd3aaf84c7e92cc874651c30e45a3acafb76c2d8b93","tests/ui/parse_key.stderr":"fcb44e060b804a4762b7291e128c41d7010ffa8ab820b8828fd13fbe6d405ca6","tests/ui/unexpected_after_array_element.rs":"a343fc3104431720bdfcf330bcc3cfcd98c8dec3e951133b495242478b0b7eb3","tests/ui/unexpected_after_array_element.stderr":"8df615998fa3057bb9ed865981a35cdbb771625337048f0ad3fba7734e607adf","tests/ui/unexpected_after_map_entry.rs":"6e3bd2def435ca610e346bbc75cdbaf61963eb2ef1885bb5f76781ba1fac37ef","tests/ui/unexpected_after_map_entry.stderr":"b1985c89075ab48b2158bd1705ed766d37854b3d4620ab257cc8bc319d224f17","tests/ui/unexpected_colon.rs":"a313cff3fed4be4c33f1eda5d0c5c98147fb835a56d36470d9f367352c1d61ef","tests/ui/unexpected_colon.stderr":"b2288742fa6a4a7eb65d2ae899bcfed8795b57bd04958da227d60928a8df26c5","tests/ui/unexpected_comma.rs":"55a8b684bde1ce905837cce719fd457d8898b61cebc27e5b420d05cb6be97256","tests/ui/unexpected_comma.stderr":"4c103ca63ff15e2ca659242cc0eae0612bf050e7580da62f1cf50de8082aa7dc"},"package":"0f1e14e89be7aa4c4b78bdbdc9eb5bf8517829a600ae8eaa39a6e1d960b5185c"} \ No newline at end of file +{"files":{"CONTRIBUTING.md":"f5270cafba66223a7b51ffc0d286075a17bb7cd88762fc80d333d3102629f4d8","Cargo.toml":"299e588dc56a4f18b4cccbb2501f956bcf2a161ee7831a110c6080f9d8ca90b2","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"1e5a86e6b5e79f92f9e7226d9a8ba16d4ec70567d153c9cacebcb582770378a1","build.rs":"0dd97b63a07aa2d4bbb4c7d0e73b521da130769da9f49f28a7b63332781eb3de","src/de.rs":"8cb56c5168ad52dfff97a0f3bc88c200e3ad0a9278eedaa27629120f8b6e6052","src/error.rs":"c8998e8595127d712c2d2c85f6fc69d59f9fcb567009631b5b029669542dcc75","src/features_check/error.rs":"d7359f864afbfe105a38abea9f563dc423036ebc4c956a5695a4beef144dc7ec","src/features_check/mod.rs":"2209f8d5c46b50c8a3b8dc22338dcaf0135d192e8b05d2f456cbe6a73104e958","src/io/core.rs":"60ba28f67a9acaecf8964b611efba416b13f9f2bae4befc329fdf0e037293802","src/io/mod.rs":"fd1ed5080495cab21117f6f7d3c2c9e3687cad0c69a0cd087b08a145a9e672da","src/iter.rs":"f832c469cd7999d26ba9b76baa69b257a212a7edb3dfdf9b1d1bb35e8da85fa9","src/lexical/algorithm.rs":"bd6106e5d8875c9ff1c1d57256b459a4f0992d14a0df1a5fffcd3d3cbdccee8c","src/lexical/bhcomp.rs":"b7c68d74c0055eb67ec2c1bcf27bbc28bef8f1bbc43db8eb94ba69892230add6","src/lexical/bignum.rs":"4230cde10dc8eae456a713cf90ec4e48dff4b1d0c542621ce7f00f39ade2645e","src/lexical/cached.rs":"0e127398691f8042c19cde209e7f4b0161f0f3150342430145929f711e6fdac8","src/lexical/cached_float80.rs":"0f8f74a22cb7d871322a9893bffd0255ca10bf9dffd13afb2462dd3d7f51805f","src/lexical/digit.rs":"9502805adbc3da059131d1fac0a802e17065b36cd7472606b3af24e3241d5cb8","src/lexical/errors.rs":"3d9f6de6245533bcb101dfd718cfed61d59dc293f6768cedae28aa13ace164f5","src/lexical/exponent.rs":"387e945b97dc7ba48a7091c50d228a0dde3a1c4145703d4ab9c31191a91693b0","src/lexical/float.rs":"fe356213c92a049f4bef2f58bc0e3a26866ca06b8c1d74d0f961c5b883852cad","src/lexical/large_powers.rs":"34537f5c701afce1ec2a1fd3c14950381b2e27c9ad74f002c91f3708e8da9ca5","src/lexical/large_powers32.rs":"d533037c6141e6671102aee490c9cdeaba81e667ddca781b2b99db2c455e4a1a","src/lexical/large_powers64.rs":"745dd7c0cbe499eec027ef586248881011d9df20c7efab7929c1807b59886ba1","src/lexical/math.rs":"240804aa030849495fa03a83a0ee8539d5a5c8639b825f2d69d27b7567b06fb3","src/lexical/mod.rs":"4b4c5228779c0f135a4cb018700e3bcd495da48b74421a86f6b8b304acdef924","src/lexical/num.rs":"cf705c62612e31d704f43d94a633ea1243c6befad7ef5792e2e881a7fd21e809","src/lexical/parse.rs":"c2bfac4c70a19938ced61e991f4ec606764887cf12bac1a0978b5b5318a56aac","src/lexical/rounding.rs":"697207248ba17b7f4965aedb11d276261ada5b06d9c6265d8fd6246664ff6e3c","src/lexical/shift.rs":"bc1ed053dd63d45ac9c35302f18de9f00d94027f28af4ab749c9248439de832a","src/lexical/small_powers.rs":"4608dd218b8002435db7e1ec79d2d0fef5f47ae257b93353326d52ecc80cccda","src/lib.rs":"0c43843f179f928ba8c6a19c4b81c307e54aef2ae90feca88b782ba9e1c853f5","src/macros.rs":"516f69976f433bcc5e48c32b3e29c2e0ab7b549810827d7a9c59171cdf11c1e2","src/map.rs":"b268a714042a3a2ce39878a5ae2eeac305460ccb6615b4b90b96ea38cf7b9e5d","src/number.rs":"21c95a6a8be8df5e2e4e7653984138640c6eb1d3d1b69f2f3841645c25b2226c","src/raw.rs":"d76153f2e8ccb8e770ae9c688c7ca93c3a56c1891c7ef1c0b49a215bb4da52ae","src/read.rs":"49b4b1d067b6485cbded28fb961666ab5df82c36661af722dbae756efb6b2891","src/ser.rs":"ee5b6cb04c2ff7058b52cb5d0383218f484505ce0896e5c7fd5076bd9d90952e","src/value/de.rs":"69d88d0ba8a8fea15964e0c95968e53ab308b143176537bfa6368432a682a65c","src/value/from.rs":"d17ecf4407137d87b1c00b0d3855655923f850c4b668a6c3b670b248e7bf8061","src/value/index.rs":"8a99d8d50f5674181ced22f6e81dc529eaecb01e543e30346e51fe42cb4b8a5f","src/value/mod.rs":"ee7305db19bcf9e9f0bcca8844ce46bf36efe41f6dadc14884d9cf0985f1bf7a","src/value/partial_eq.rs":"b64e1e1dffd50fefe3106ca74499aac01ea3d76b995d3cc1ef3a2b2768d0f1cf","src/value/ser.rs":"6b065423acf88d875d30608d61210a372507c7242d6525e5ef66077296ba32f1","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/debug.rs":"a8451217c1e127ad6e653ef11e0513525ee350e1e37dd575758a8ee9301b28fb","tests/lexical.rs":"b65eaef5edbc3294751c6ddc0a51eaf8de9165d65955f87c2e3b2679a49de3b0","tests/lexical/algorithm.rs":"da378df9ee24bfa033968d5c94e91b58e52c39bf6c825dec51c3eb7250cc5874","tests/lexical/exponent.rs":"26ea92abc654a6a88a8281552bca2f76ea1fa4c17d66a1dd6defe14f7d89b666","tests/lexical/float.rs":"0440f2d85c993bcccd925096d7f4136bf624ffd66b3c7ee565d158390685eb11","tests/lexical/math.rs":"4874be2103be5fbe8b8015354414df271ffa00fd815546fc077f15fb4d7a5a37","tests/lexical/num.rs":"6e650c40de85ed72ac06b6bf1487ba161f3824e26d827df6cfdf2bbdb8d05a05","tests/lexical/parse.rs":"17c73e0a59d462716d974b8dd23a291eb6efdc3a933248874e5eab7e7209d67f","tests/lexical/rounding.rs":"6c56e39ba534616c1b2146e8efa6eb57aed322e683bf23183cd32a61fae6447e","tests/macros/mod.rs":"93aa1d54af20bc2c55b6ae8db73c1414cda2626eb9fa7bd57b9d613a3c6e6a19","tests/map.rs":"dcc5212242e4e93703c4335d54f5603b0211b33d6fb5ab410bb630cda6d46b09","tests/regression.rs":"86731134bfb9bb693d9a4fc62393027de80a8bf031109ea6c7ea475b1ebdde8d","tests/regression/issue1004.rs":"38d7e3b6c515b881078ebd21ca8063d2ca105cd319695d29538f879e37f091b5","tests/regression/issue520.rs":"d146be3472db902b48127d65fe83aa9f698143aca9074c83cd1a9d5dd28e3ec3","tests/regression/issue795.rs":"582e2e7c68113f05a4b1d2cb556a2df7cc77f2ce8164a32c5cc58ae68abb60ec","tests/regression/issue845.rs":"66eb0eeabb744adaad42fd8e2638de22b458a04ec33863e2683b60eb3d500297","tests/regression/issue953.rs":"b2cddc761f5ca6639900c173765a8a5868528a896924e5e925db2696469208f7","tests/stream.rs":"c7d91014538ecd8f495b196d40e999ab2745f2e69fa2ff9e52521605dc6ce856","tests/test.rs":"eff7da41d2e0a89ace8bbfaa3cd731581e1d2a70e40a9a3d11a1ecc4fafafe6e","tests/ui/missing_colon.rs":"d07e0c34d98eb43465f0a0310f2c0b5d5b0d26d243b352a1c6bbe6ad3b27eda9","tests/ui/missing_colon.stderr":"3732fd8f4e57b84efc07170cda5f9c5b2b17c707e23c1659222b5a46f652a8d8","tests/ui/missing_comma.rs":"b8a9662f99c3e6dd2b6417892c37640578ce91d3a8365bf10c1f686a3227aa87","tests/ui/missing_comma.stderr":"eae626cf93c97abd105066e624ca4e8cb096784413b9d2564cf9414a8492bc4d","tests/ui/missing_value.rs":"bca25d67127fb88e7c191c7b03af5a4ce8a9abb630f3d2e6a6c1e77e213dc9a4","tests/ui/missing_value.stderr":"b0df8add5cf74e5df30eedd3ca347e4862c04a01c54d802ff45392f2032065b1","tests/ui/not_found.rs":"d0a7adb309879ff65aee115b52cc33d36f4bad353cf97c4effc34a6128c2bee3","tests/ui/not_found.stderr":"359b751c0c21fab6d460daef4d5f73a265f7769c9b578f98ea3cb6cbf2387643","tests/ui/parse_expr.rs":"32e6d51f528db3d1ab0ed1e24765b865be393565c26f77413c5aa39d601ac563","tests/ui/parse_expr.stderr":"4fcd0a014fbce31c9266bab8527d6e6b6806a0e21d9e0275ce713137856073ce","tests/ui/parse_key.rs":"18829b2af320d5cf8a0a5cd3aaf84c7e92cc874651c30e45a3acafb76c2d8b93","tests/ui/parse_key.stderr":"fcb44e060b804a4762b7291e128c41d7010ffa8ab820b8828fd13fbe6d405ca6","tests/ui/unexpected_after_array_element.rs":"a343fc3104431720bdfcf330bcc3cfcd98c8dec3e951133b495242478b0b7eb3","tests/ui/unexpected_after_array_element.stderr":"8df615998fa3057bb9ed865981a35cdbb771625337048f0ad3fba7734e607adf","tests/ui/unexpected_after_map_entry.rs":"6e3bd2def435ca610e346bbc75cdbaf61963eb2ef1885bb5f76781ba1fac37ef","tests/ui/unexpected_after_map_entry.stderr":"b1985c89075ab48b2158bd1705ed766d37854b3d4620ab257cc8bc319d224f17","tests/ui/unexpected_colon.rs":"a313cff3fed4be4c33f1eda5d0c5c98147fb835a56d36470d9f367352c1d61ef","tests/ui/unexpected_colon.stderr":"b2288742fa6a4a7eb65d2ae899bcfed8795b57bd04958da227d60928a8df26c5","tests/ui/unexpected_comma.rs":"55a8b684bde1ce905837cce719fd457d8898b61cebc27e5b420d05cb6be97256","tests/ui/unexpected_comma.stderr":"4c103ca63ff15e2ca659242cc0eae0612bf050e7580da62f1cf50de8082aa7dc"},"package":"693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/serde_json/Cargo.toml temporalio-1.3.0/vendor/serde_json/Cargo.toml --- temporalio-1.3.0/vendor/serde_json/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_json/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,10 +10,10 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" -rust-version = "1.36" +edition = "2021" +rust-version = "1.56" name = "serde_json" -version = "1.0.100" +version = "1.0.105" authors = [ "Erick Tryzelaar ", "David Tolnay ", @@ -42,6 +42,7 @@ rustdoc-args = [ "--cfg", "docsrs", + "--generate-link-to-definition", ] targets = ["x86_64-unknown-linux-gnu"] diff -Nru temporalio-1.3.0/vendor/serde_json/src/de.rs temporalio-1.3.0/vendor/serde_json/src/de.rs --- temporalio-1.3.0/vendor/serde_json/src/de.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_json/src/de.rs 2023-10-30 19:40:00.000000000 +0000 @@ -209,7 +209,7 @@ self.disable_recursion_limit = true; } - fn peek(&mut self) -> Result> { + pub(crate) fn peek(&mut self) -> Result> { self.read.peek() } @@ -248,7 +248,7 @@ fn parse_whitespace(&mut self) -> Result> { loop { match tri!(self.peek()) { - Some(b' ') | Some(b'\n') | Some(b'\t') | Some(b'\r') => { + Some(b' ' | b'\n' | b'\t' | b'\r') => { self.eat_char(); } other => { @@ -309,9 +309,9 @@ self.fix_position(err) } - fn deserialize_number(&mut self, visitor: V) -> Result + pub(crate) fn deserialize_number<'any, V>(&mut self, visitor: V) -> Result where - V: de::Visitor<'de>, + V: de::Visitor<'any>, { let peek = match tri!(self.parse_whitespace()) { Some(b) => b, @@ -335,6 +335,79 @@ } } + #[cfg(feature = "float_roundtrip")] + pub(crate) fn do_deserialize_f32<'any, V>(&mut self, visitor: V) -> Result + where + V: de::Visitor<'any>, + { + self.single_precision = true; + let val = self.deserialize_number(visitor); + self.single_precision = false; + val + } + + pub(crate) fn do_deserialize_i128<'any, V>(&mut self, visitor: V) -> Result + where + V: de::Visitor<'any>, + { + let mut buf = String::new(); + + match tri!(self.parse_whitespace()) { + Some(b'-') => { + self.eat_char(); + buf.push('-'); + } + Some(_) => {} + None => { + return Err(self.peek_error(ErrorCode::EofWhileParsingValue)); + } + }; + + tri!(self.scan_integer128(&mut buf)); + + let value = match buf.parse() { + Ok(int) => visitor.visit_i128(int), + Err(_) => { + return Err(self.error(ErrorCode::NumberOutOfRange)); + } + }; + + match value { + Ok(value) => Ok(value), + Err(err) => Err(self.fix_position(err)), + } + } + + pub(crate) fn do_deserialize_u128<'any, V>(&mut self, visitor: V) -> Result + where + V: de::Visitor<'any>, + { + match tri!(self.parse_whitespace()) { + Some(b'-') => { + return Err(self.peek_error(ErrorCode::NumberOutOfRange)); + } + Some(_) => {} + None => { + return Err(self.peek_error(ErrorCode::EofWhileParsingValue)); + } + } + + let mut buf = String::new(); + tri!(self.scan_integer128(&mut buf)); + + let value = match buf.parse() { + Ok(int) => visitor.visit_u128(int), + Err(_) => { + return Err(self.error(ErrorCode::NumberOutOfRange)); + } + }; + + match value { + Ok(value) => Ok(value), + Err(err) => Err(self.fix_position(err)), + } + } + fn scan_integer128(&mut self, buf: &mut String) -> Result<()> { match tri!(self.next_char_or_null()) { b'0' => { @@ -860,7 +933,7 @@ if !positive { buf.push('-'); } - self.scan_integer(&mut buf)?; + tri!(self.scan_integer(&mut buf)); if positive { if let Ok(unsigned) = buf.parse() { return Ok(ParserNumber::U64(unsigned)); @@ -913,7 +986,7 @@ fn scan_number(&mut self, buf: &mut String) -> Result<()> { match tri!(self.peek_or_null()) { b'.' => self.scan_decimal(buf), - e @ b'e' | e @ b'E' => self.scan_exponent(e as char, buf), + e @ (b'e' | b'E') => self.scan_exponent(e as char, buf), _ => Ok(()), } } @@ -938,7 +1011,7 @@ } match tri!(self.peek_or_null()) { - e @ b'e' | e @ b'E' => self.scan_exponent(e as char, buf), + e @ (b'e' | b'E') => self.scan_exponent(e as char, buf), _ => Ok(()), } } @@ -1059,7 +1132,7 @@ tri!(self.read.ignore_str()); None } - frame @ b'[' | frame @ b'{' => { + frame @ (b'[' | b'{') => { self.scratch.extend(enclosing.take()); self.eat_char(); Some(frame) @@ -1204,9 +1277,9 @@ where V: de::Visitor<'de>, { - self.parse_whitespace()?; + tri!(self.parse_whitespace()); self.read.begin_raw_buffering(); - self.ignore_value()?; + tri!(self.ignore_value()); self.read.end_raw_buffering(visitor) } } @@ -1258,11 +1331,15 @@ macro_rules! deserialize_number { ($method:ident) => { + deserialize_number!($method, deserialize_number); + }; + + ($method:ident, $using:ident) => { fn $method(self, visitor: V) -> Result where V: de::Visitor<'de>, { - self.deserialize_number(visitor) + self.$using(visitor) } }; } @@ -1424,77 +1501,9 @@ deserialize_number!(deserialize_f64); #[cfg(feature = "float_roundtrip")] - fn deserialize_f32(self, visitor: V) -> Result - where - V: de::Visitor<'de>, - { - self.single_precision = true; - let val = self.deserialize_number(visitor); - self.single_precision = false; - val - } - - fn deserialize_i128(self, visitor: V) -> Result - where - V: de::Visitor<'de>, - { - let mut buf = String::new(); - - match tri!(self.parse_whitespace()) { - Some(b'-') => { - self.eat_char(); - buf.push('-'); - } - Some(_) => {} - None => { - return Err(self.peek_error(ErrorCode::EofWhileParsingValue)); - } - }; - - tri!(self.scan_integer128(&mut buf)); - - let value = match buf.parse() { - Ok(int) => visitor.visit_i128(int), - Err(_) => { - return Err(self.error(ErrorCode::NumberOutOfRange)); - } - }; - - match value { - Ok(value) => Ok(value), - Err(err) => Err(self.fix_position(err)), - } - } - - fn deserialize_u128(self, visitor: V) -> Result - where - V: de::Visitor<'de>, - { - match tri!(self.parse_whitespace()) { - Some(b'-') => { - return Err(self.peek_error(ErrorCode::NumberOutOfRange)); - } - Some(_) => {} - None => { - return Err(self.peek_error(ErrorCode::EofWhileParsingValue)); - } - } - - let mut buf = String::new(); - tri!(self.scan_integer128(&mut buf)); - - let value = match buf.parse() { - Ok(int) => visitor.visit_u128(int), - Err(_) => { - return Err(self.error(ErrorCode::NumberOutOfRange)); - } - }; - - match value { - Ok(value) => Ok(value), - Err(err) => Err(self.fix_position(err)), - } - } + deserialize_number!(deserialize_f32, do_deserialize_f32); + deserialize_number!(deserialize_i128, do_deserialize_i128); + deserialize_number!(deserialize_u128, do_deserialize_u128); fn deserialize_char(self, visitor: V) -> Result where @@ -2118,24 +2127,47 @@ de: &'a mut Deserializer, } -macro_rules! deserialize_integer_key { - ($method:ident => $visit:ident) => { +macro_rules! deserialize_numeric_key { + ($method:ident) => { + fn $method(self, visitor: V) -> Result + where + V: de::Visitor<'de>, + { + self.deserialize_number(visitor) + } + }; + + ($method:ident, $delegate:ident) => { fn $method(self, visitor: V) -> Result where V: de::Visitor<'de>, { self.de.eat_char(); - self.de.scratch.clear(); - let string = tri!(self.de.read.parse_str(&mut self.de.scratch)); - match (string.parse(), string) { - (Ok(integer), _) => visitor.$visit(integer), - (Err(_), Reference::Borrowed(s)) => visitor.visit_borrowed_str(s), - (Err(_), Reference::Copied(s)) => visitor.visit_str(s), + + match tri!(self.de.peek()) { + Some(b'0'..=b'9' | b'-') => {} + _ => return Err(self.de.error(ErrorCode::ExpectedNumericKey)), + } + + let value = tri!(self.de.$delegate(visitor)); + + match tri!(self.de.peek()) { + Some(b'"') => self.de.eat_char(), + _ => return Err(self.de.peek_error(ErrorCode::ExpectedDoubleQuote)), } + + Ok(value) } }; } +impl<'de, 'a, R> MapKey<'a, R> +where + R: Read<'de>, +{ + deserialize_numeric_key!(deserialize_number, deserialize_number); +} + impl<'de, 'a, R> de::Deserializer<'de> for MapKey<'a, R> where R: Read<'de>, @@ -2155,16 +2187,56 @@ } } - deserialize_integer_key!(deserialize_i8 => visit_i8); - deserialize_integer_key!(deserialize_i16 => visit_i16); - deserialize_integer_key!(deserialize_i32 => visit_i32); - deserialize_integer_key!(deserialize_i64 => visit_i64); - deserialize_integer_key!(deserialize_i128 => visit_i128); - deserialize_integer_key!(deserialize_u8 => visit_u8); - deserialize_integer_key!(deserialize_u16 => visit_u16); - deserialize_integer_key!(deserialize_u32 => visit_u32); - deserialize_integer_key!(deserialize_u64 => visit_u64); - deserialize_integer_key!(deserialize_u128 => visit_u128); + deserialize_numeric_key!(deserialize_i8); + deserialize_numeric_key!(deserialize_i16); + deserialize_numeric_key!(deserialize_i32); + deserialize_numeric_key!(deserialize_i64); + deserialize_numeric_key!(deserialize_i128, deserialize_i128); + deserialize_numeric_key!(deserialize_u8); + deserialize_numeric_key!(deserialize_u16); + deserialize_numeric_key!(deserialize_u32); + deserialize_numeric_key!(deserialize_u64); + deserialize_numeric_key!(deserialize_u128, deserialize_u128); + #[cfg(not(feature = "float_roundtrip"))] + deserialize_numeric_key!(deserialize_f32); + #[cfg(feature = "float_roundtrip")] + deserialize_numeric_key!(deserialize_f32, deserialize_f32); + deserialize_numeric_key!(deserialize_f64); + + fn deserialize_bool(self, visitor: V) -> Result + where + V: de::Visitor<'de>, + { + self.de.eat_char(); + + let peek = match tri!(self.de.next_char()) { + Some(b) => b, + None => { + return Err(self.de.peek_error(ErrorCode::EofWhileParsingValue)); + } + }; + + let value = match peek { + b't' => { + tri!(self.de.parse_ident(b"rue\"")); + visitor.visit_bool(true) + } + b'f' => { + tri!(self.de.parse_ident(b"alse\"")); + visitor.visit_bool(false) + } + _ => { + self.de.scratch.clear(); + let s = tri!(self.de.read.parse_str(&mut self.de.scratch)); + Err(de::Error::invalid_type(Unexpected::Str(&s), &visitor)) + } + }; + + match value { + Ok(value) => Ok(value), + Err(err) => Err(self.de.fix_position(err)), + } + } #[inline] fn deserialize_option(self, visitor: V) -> Result @@ -2221,8 +2293,8 @@ } forward_to_deserialize_any! { - bool f32 f64 char str string unit unit_struct seq tuple tuple_struct map - struct identifier ignored_any + char str string unit unit_struct seq tuple tuple_struct map struct + identifier ignored_any } } @@ -2318,8 +2390,8 @@ fn peek_end_of_value(&mut self) -> Result<()> { match tri!(self.de.peek()) { - Some(b' ') | Some(b'\n') | Some(b'\t') | Some(b'\r') | Some(b'"') | Some(b'[') - | Some(b']') | Some(b'{') | Some(b'}') | Some(b',') | Some(b':') | None => Ok(()), + Some(b' ' | b'\n' | b'\t' | b'\r' | b'"' | b'[' | b']' | b'{' | b'}' | b',' | b':') + | None => Ok(()), Some(_) => { let position = self.de.read.peek_position(); Err(Error::syntax( @@ -2369,7 +2441,7 @@ if self_delineated_value { Ok(value) } else { - self.peek_end_of_value().map(|_| value) + self.peek_end_of_value().map(|()| value) } } Err(e) => { diff -Nru temporalio-1.3.0/vendor/serde_json/src/error.rs temporalio-1.3.0/vendor/serde_json/src/error.rs --- temporalio-1.3.0/vendor/serde_json/src/error.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_json/src/error.rs 2023-10-30 19:40:00.000000000 +0000 @@ -64,12 +64,15 @@ | ErrorCode::ExpectedObjectCommaOrEnd | ErrorCode::ExpectedSomeIdent | ErrorCode::ExpectedSomeValue + | ErrorCode::ExpectedDoubleQuote | ErrorCode::InvalidEscape | ErrorCode::InvalidNumber | ErrorCode::NumberOutOfRange | ErrorCode::InvalidUnicodeCodePoint | ErrorCode::ControlCharacterWhileParsingString | ErrorCode::KeyMustBeAString + | ErrorCode::ExpectedNumericKey + | ErrorCode::FloatKeyMustBeFinite | ErrorCode::LoneLeadingSurrogateInHexEscape | ErrorCode::TrailingComma | ErrorCode::TrailingCharacters @@ -264,6 +267,9 @@ /// Expected this character to start a JSON value. ExpectedSomeValue, + /// Expected this character to be a `"`. + ExpectedDoubleQuote, + /// Invalid hex escape code. InvalidEscape, @@ -282,6 +288,12 @@ /// Object key is not a string. KeyMustBeAString, + /// Contents of key were supposed to be a number. + ExpectedNumericKey, + + /// Object key is a non-finite float value. + FloatKeyMustBeFinite, + /// Lone leading surrogate in hex escape. LoneLeadingSurrogateInHexEscape, @@ -348,6 +360,7 @@ ErrorCode::ExpectedObjectCommaOrEnd => f.write_str("expected `,` or `}`"), ErrorCode::ExpectedSomeIdent => f.write_str("expected ident"), ErrorCode::ExpectedSomeValue => f.write_str("expected value"), + ErrorCode::ExpectedDoubleQuote => f.write_str("expected `\"`"), ErrorCode::InvalidEscape => f.write_str("invalid escape"), ErrorCode::InvalidNumber => f.write_str("invalid number"), ErrorCode::NumberOutOfRange => f.write_str("number out of range"), @@ -356,6 +369,12 @@ f.write_str("control character (\\u0000-\\u001F) found while parsing a string") } ErrorCode::KeyMustBeAString => f.write_str("key must be a string"), + ErrorCode::ExpectedNumericKey => { + f.write_str("invalid value: expected key to be a number in quotes") + } + ErrorCode::FloatKeyMustBeFinite => { + f.write_str("float key must be finite (got NaN or +/-inf)") + } ErrorCode::LoneLeadingSurrogateInHexEscape => { f.write_str("lone leading surrogate in hex escape") } diff -Nru temporalio-1.3.0/vendor/serde_json/src/lexical/algorithm.rs temporalio-1.3.0/vendor/serde_json/src/lexical/algorithm.rs --- temporalio-1.3.0/vendor/serde_json/src/lexical/algorithm.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_json/src/lexical/algorithm.rs 2023-10-30 19:40:00.000000000 +0000 @@ -51,7 +51,10 @@ // Compute the product of the power, if it overflows, // prematurely return early, otherwise, if we didn't overshoot, // we can get an exact value. - let value = mantissa.checked_mul(power)?; + let value = match mantissa.checked_mul(power) { + None => return None, + Some(value) => value, + }; if value >> mantissa_size != 0 { None } else { diff -Nru temporalio-1.3.0/vendor/serde_json/src/lexical/digit.rs temporalio-1.3.0/vendor/serde_json/src/lexical/digit.rs --- temporalio-1.3.0/vendor/serde_json/src/lexical/digit.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_json/src/lexical/digit.rs 2023-10-30 19:40:00.000000000 +0000 @@ -11,5 +11,8 @@ // Add digit to mantissa. #[inline] pub(crate) fn add_digit(value: u64, digit: u32) -> Option { - value.checked_mul(10)?.checked_add(digit as u64) + match value.checked_mul(10) { + None => None, + Some(n) => n.checked_add(digit as u64), + } } diff -Nru temporalio-1.3.0/vendor/serde_json/src/lexical/errors.rs temporalio-1.3.0/vendor/serde_json/src/lexical/errors.rs --- temporalio-1.3.0/vendor/serde_json/src/lexical/errors.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_json/src/lexical/errors.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,8 +5,7 @@ //! This estimates the error in a floating-point representation. //! //! This implementation is loosely based off the Golang implementation, -//! found here: -//! https://golang.org/src/strconv/atof.go +//! found here: use super::float::*; use super::num::*; diff -Nru temporalio-1.3.0/vendor/serde_json/src/lib.rs temporalio-1.3.0/vendor/serde_json/src/lib.rs --- temporalio-1.3.0/vendor/serde_json/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_json/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -300,7 +300,7 @@ //! [macro]: crate::json //! [`serde-json-core`]: https://github.com/rust-embedded-community/serde-json-core -#![doc(html_root_url = "https://docs.rs/serde_json/1.0.100")] +#![doc(html_root_url = "https://docs.rs/serde_json/1.0.105")] // Ignored clippy lints #![allow( clippy::collapsible_else_if, @@ -315,18 +315,12 @@ clippy::match_single_binding, clippy::needless_doctest_main, clippy::needless_late_init, - // clippy bug: https://github.com/rust-lang/rust-clippy/issues/8366 - clippy::ptr_arg, clippy::return_self_not_must_use, clippy::transmute_ptr_to_ptr, - clippy::unnecessary_wraps, - // clippy bug: https://github.com/rust-lang/rust-clippy/issues/5704 - clippy::unnested_or_patterns, + clippy::unnecessary_wraps )] // Ignored clippy_pedantic lints #![allow( - // buggy - clippy::iter_not_returning_iterator, // https://github.com/rust-lang/rust-clippy/issues/8285 // Deserializer::from_str, into_iter clippy::should_implement_trait, // integer and float ser/de requires these sorts of casts @@ -362,6 +356,8 @@ clippy::missing_errors_doc, clippy::must_use_candidate, )] +// Restrictions +#![deny(clippy::question_mark_used)] #![allow(non_upper_case_globals)] #![deny(missing_docs)] #![cfg_attr(not(feature = "std"), no_std)] diff -Nru temporalio-1.3.0/vendor/serde_json/src/map.rs temporalio-1.3.0/vendor/serde_json/src/map.rs --- temporalio-1.3.0/vendor/serde_json/src/map.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_json/src/map.rs 2023-10-30 19:40:00.000000000 +0000 @@ -11,7 +11,7 @@ use core::borrow::Borrow; use core::fmt::{self, Debug}; use core::hash::Hash; -use core::iter::{FromIterator, FusedIterator}; +use core::iter::FusedIterator; #[cfg(feature = "preserve_order")] use core::mem; use core::ops; diff -Nru temporalio-1.3.0/vendor/serde_json/src/number.rs temporalio-1.3.0/vendor/serde_json/src/number.rs --- temporalio-1.3.0/vendor/serde_json/src/number.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_json/src/number.rs 2023-10-30 19:40:00.000000000 +0000 @@ -361,8 +361,8 @@ { use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct(TOKEN, 1)?; - s.serialize_field(TOKEN, &self.n)?; + let mut s = tri!(serializer.serialize_struct(TOKEN, 1)); + tri!(s.serialize_field(TOKEN, &self.n)); s.end() } } @@ -406,11 +406,11 @@ where V: de::MapAccess<'de>, { - let value = visitor.next_key::()?; + let value = tri!(visitor.next_key::()); if value.is_none() { return Err(de::Error::invalid_type(Unexpected::Map, &self)); } - let v: NumberFromString = visitor.next_value()?; + let v: NumberFromString = tri!(visitor.next_value()); Ok(v.value) } } @@ -449,7 +449,7 @@ } } - deserializer.deserialize_identifier(FieldVisitor)?; + tri!(deserializer.deserialize_identifier(FieldVisitor)); Ok(NumberKey) } } @@ -552,7 +552,7 @@ where V: de::Visitor<'de>, { - visitor.$visit(self.n.parse().map_err(|_| invalid_number())?) + visitor.$visit(tri!(self.n.parse().map_err(|_| invalid_number()))) } }; } diff -Nru temporalio-1.3.0/vendor/serde_json/src/raw.rs temporalio-1.3.0/vendor/serde_json/src/raw.rs --- temporalio-1.3.0/vendor/serde_json/src/raw.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_json/src/raw.rs 2023-10-30 19:40:00.000000000 +0000 @@ -177,11 +177,9 @@ /// - the input has no leading or trailing whitespace, and /// - the input has capacity equal to its length. pub fn from_string(json: String) -> Result, Error> { - { - let borrowed = crate::from_str::<&Self>(&json)?; - if borrowed.json.len() < json.len() { - return Ok(borrowed.to_owned()); - } + let borrowed = tri!(crate::from_str::<&Self>(&json)); + if borrowed.json.len() < json.len() { + return Ok(borrowed.to_owned()); } Ok(Self::from_owned(json.into_boxed_str())) } @@ -287,7 +285,7 @@ where T: ?Sized + Serialize, { - let json_string = crate::to_string(value)?; + let json_string = tri!(crate::to_string(value)); Ok(RawValue::from_owned(json_string.into_boxed_str())) } @@ -298,8 +296,8 @@ where S: Serializer, { - let mut s = serializer.serialize_struct(TOKEN, 1)?; - s.serialize_field(TOKEN, &self.json)?; + let mut s = tri!(serializer.serialize_struct(TOKEN, 1)); + tri!(s.serialize_field(TOKEN, &self.json)); s.end() } } @@ -322,7 +320,7 @@ where V: MapAccess<'de>, { - let value = visitor.next_key::()?; + let value = tri!(visitor.next_key::()); if value.is_none() { return Err(de::Error::invalid_type(Unexpected::Map, &self)); } @@ -352,7 +350,7 @@ where V: MapAccess<'de>, { - let value = visitor.next_key::()?; + let value = tri!(visitor.next_key::()); if value.is_none() { return Err(de::Error::invalid_type(Unexpected::Map, &self)); } @@ -392,7 +390,7 @@ } } - deserializer.deserialize_identifier(FieldVisitor)?; + tri!(deserializer.deserialize_identifier(FieldVisitor)); Ok(RawKey) } } diff -Nru temporalio-1.3.0/vendor/serde_json/src/ser.rs temporalio-1.3.0/vendor/serde_json/src/ser.rs --- temporalio-1.3.0/vendor/serde_json/src/ser.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_json/src/ser.rs 2023-10-30 19:40:00.000000000 +0000 @@ -189,12 +189,9 @@ #[inline] fn serialize_bytes(self, value: &[u8]) -> Result<()> { - use serde::ser::SerializeSeq; - let mut seq = tri!(self.serialize_seq(Some(value.len()))); - for byte in value { - tri!(seq.serialize_element(byte)); - } - seq.end() + self.formatter + .write_byte_array(&mut self.writer, value) + .map_err(Error::io) } #[inline] @@ -439,17 +436,15 @@ .formatter .begin_string(&mut self.writer) .map_err(Error::io)); - { - let mut adapter = Adapter { - writer: &mut self.writer, - formatter: &mut self.formatter, - error: None, - }; - match write!(adapter, "{}", value) { - Ok(()) => debug_assert!(adapter.error.is_none()), - Err(fmt::Error) => { - return Err(Error::io(adapter.error.expect("there should be an error"))); - } + let mut adapter = Adapter { + writer: &mut self.writer, + formatter: &mut self.formatter, + error: None, + }; + match write!(adapter, "{}", value) { + Ok(()) => debug_assert!(adapter.error.is_none()), + Err(fmt::Error) => { + return Err(Error::io(adapter.error.expect("there should be an error"))); } } self.formatter @@ -789,6 +784,10 @@ Error::syntax(ErrorCode::KeyMustBeAString, 0, 0) } +fn float_key_must_be_finite() -> Error { + Error::syntax(ErrorCode::FloatKeyMustBeFinite, 0, 0) +} + impl<'a, W, F> ser::Serializer for MapKeySerializer<'a, W, F> where W: io::Write, @@ -828,8 +827,21 @@ type SerializeStruct = Impossible<(), Error>; type SerializeStructVariant = Impossible<(), Error>; - fn serialize_bool(self, _value: bool) -> Result<()> { - Err(key_must_be_a_string()) + fn serialize_bool(self, value: bool) -> Result<()> { + tri!(self + .ser + .formatter + .begin_string(&mut self.ser.writer) + .map_err(Error::io)); + tri!(self + .ser + .formatter + .write_bool(&mut self.ser.writer, value) + .map_err(Error::io)); + self.ser + .formatter + .end_string(&mut self.ser.writer) + .map_err(Error::io) } fn serialize_i8(self, value: i8) -> Result<()> { @@ -1002,12 +1014,46 @@ .map_err(Error::io) } - fn serialize_f32(self, _value: f32) -> Result<()> { - Err(key_must_be_a_string()) + fn serialize_f32(self, value: f32) -> Result<()> { + if !value.is_finite() { + return Err(float_key_must_be_finite()); + } + + tri!(self + .ser + .formatter + .begin_string(&mut self.ser.writer) + .map_err(Error::io)); + tri!(self + .ser + .formatter + .write_f32(&mut self.ser.writer, value) + .map_err(Error::io)); + self.ser + .formatter + .end_string(&mut self.ser.writer) + .map_err(Error::io) } - fn serialize_f64(self, _value: f64) -> Result<()> { - Err(key_must_be_a_string()) + fn serialize_f64(self, value: f64) -> Result<()> { + if !value.is_finite() { + return Err(float_key_must_be_finite()); + } + + tri!(self + .ser + .formatter + .begin_string(&mut self.ser.writer) + .map_err(Error::io)); + tri!(self + .ser + .formatter + .write_f64(&mut self.ser.writer, value) + .map_err(Error::io)); + self.ser + .formatter + .end_string(&mut self.ser.writer) + .map_err(Error::io) } fn serialize_char(self, value: char) -> Result<()> { @@ -1734,6 +1780,24 @@ writer.write_all(s) } + /// Writes the representation of a byte array. Formatters can choose whether + /// to represent bytes as a JSON array of integers (the default), or some + /// JSON string encoding like hex or base64. + fn write_byte_array(&mut self, writer: &mut W, value: &[u8]) -> io::Result<()> + where + W: ?Sized + io::Write, + { + tri!(self.begin_array(writer)); + let mut first = true; + for byte in value { + tri!(self.begin_array_value(writer, first)); + tri!(self.write_u8(writer, *byte)); + tri!(self.end_array_value(writer)); + first = false; + } + self.end_array(writer) + } + /// Called before every array. Writes a `[` to the specified /// writer. #[inline] diff -Nru temporalio-1.3.0/vendor/serde_json/src/value/de.rs temporalio-1.3.0/vendor/serde_json/src/value/de.rs --- temporalio-1.3.0/vendor/serde_json/src/value/de.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_json/src/value/de.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -use crate::error::Error; +use crate::error::{Error, ErrorCode}; use crate::map::Map; use crate::number::Number; use crate::value::Value; @@ -106,15 +106,15 @@ where V: MapAccess<'de>, { - match visitor.next_key_seed(KeyClassifier)? { + match tri!(visitor.next_key_seed(KeyClassifier)) { #[cfg(feature = "arbitrary_precision")] Some(KeyClass::Number) => { - let number: NumberFromString = visitor.next_value()?; + let number: NumberFromString = tri!(visitor.next_value()); Ok(Value::Number(number.value)) } #[cfg(feature = "raw_value")] Some(KeyClass::RawValue) => { - let value = visitor.next_value_seed(crate::raw::BoxedFromString)?; + let value = tri!(visitor.next_value_seed(crate::raw::BoxedFromString)); crate::from_str(value.get()).map_err(de::Error::custom) } Some(KeyClass::Map(first_key)) => { @@ -482,6 +482,14 @@ } } +impl<'de> IntoDeserializer<'de, Error> for &'de Value { + type Deserializer = Self; + + fn into_deserializer(self) -> Self::Deserializer { + self + } +} + struct VariantDeserializer { value: Option, } @@ -1120,18 +1128,30 @@ key: Cow<'de, str>, } -macro_rules! deserialize_integer_key { - ($method:ident => $visit:ident) => { +macro_rules! deserialize_numeric_key { + ($method:ident) => { + deserialize_numeric_key!($method, deserialize_number); + }; + + ($method:ident, $using:ident) => { fn $method(self, visitor: V) -> Result where V: Visitor<'de>, { - match (self.key.parse(), self.key) { - (Ok(integer), _) => visitor.$visit(integer), - (Err(_), Cow::Borrowed(s)) => visitor.visit_borrowed_str(s), - #[cfg(any(feature = "std", feature = "alloc"))] - (Err(_), Cow::Owned(s)) => visitor.visit_string(s), + let mut de = crate::Deserializer::from_str(&self.key); + + match tri!(de.peek()) { + Some(b'0'..=b'9' | b'-') => {} + _ => return Err(Error::syntax(ErrorCode::ExpectedNumericKey, 0, 0)), } + + let number = tri!(de.$using(visitor)); + + if tri!(de.peek()).is_some() { + return Err(Error::syntax(ErrorCode::ExpectedNumericKey, 0, 0)); + } + + Ok(number) } }; } @@ -1146,16 +1166,38 @@ BorrowedCowStrDeserializer::new(self.key).deserialize_any(visitor) } - deserialize_integer_key!(deserialize_i8 => visit_i8); - deserialize_integer_key!(deserialize_i16 => visit_i16); - deserialize_integer_key!(deserialize_i32 => visit_i32); - deserialize_integer_key!(deserialize_i64 => visit_i64); - deserialize_integer_key!(deserialize_i128 => visit_i128); - deserialize_integer_key!(deserialize_u8 => visit_u8); - deserialize_integer_key!(deserialize_u16 => visit_u16); - deserialize_integer_key!(deserialize_u32 => visit_u32); - deserialize_integer_key!(deserialize_u64 => visit_u64); - deserialize_integer_key!(deserialize_u128 => visit_u128); + deserialize_numeric_key!(deserialize_i8); + deserialize_numeric_key!(deserialize_i16); + deserialize_numeric_key!(deserialize_i32); + deserialize_numeric_key!(deserialize_i64); + deserialize_numeric_key!(deserialize_u8); + deserialize_numeric_key!(deserialize_u16); + deserialize_numeric_key!(deserialize_u32); + deserialize_numeric_key!(deserialize_u64); + #[cfg(not(feature = "float_roundtrip"))] + deserialize_numeric_key!(deserialize_f32); + deserialize_numeric_key!(deserialize_f64); + + #[cfg(feature = "float_roundtrip")] + deserialize_numeric_key!(deserialize_f32, do_deserialize_f32); + deserialize_numeric_key!(deserialize_i128, do_deserialize_i128); + deserialize_numeric_key!(deserialize_u128, do_deserialize_u128); + + fn deserialize_bool(self, visitor: V) -> Result + where + V: Visitor<'de>, + { + if self.key == "true" { + visitor.visit_bool(true) + } else if self.key == "false" { + visitor.visit_bool(false) + } else { + Err(serde::de::Error::invalid_type( + Unexpected::Str(&self.key), + &visitor, + )) + } + } #[inline] fn deserialize_option(self, visitor: V) -> Result @@ -1193,8 +1235,8 @@ } forward_to_deserialize_any! { - bool f32 f64 char str string bytes byte_buf unit unit_struct seq tuple - tuple_struct map struct identifier ignored_any + char str string bytes byte_buf unit unit_struct seq tuple tuple_struct + map struct identifier ignored_any } } @@ -1327,7 +1369,7 @@ where T: de::DeserializeSeed<'de>, { - let value = seed.deserialize(self)?; + let value = tri!(seed.deserialize(self)); Ok((value, UnitOnly)) } } diff -Nru temporalio-1.3.0/vendor/serde_json/src/value/from.rs temporalio-1.3.0/vendor/serde_json/src/value/from.rs --- temporalio-1.3.0/vendor/serde_json/src/value/from.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_json/src/value/from.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,7 +4,6 @@ use alloc::borrow::Cow; use alloc::string::{String, ToString}; use alloc::vec::Vec; -use core::iter::FromIterator; macro_rules! from_integer { ($($ty:ident)*) => { diff -Nru temporalio-1.3.0/vendor/serde_json/src/value/mod.rs temporalio-1.3.0/vendor/serde_json/src/value/mod.rs --- temporalio-1.3.0/vendor/serde_json/src/value/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_json/src/value/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -182,11 +182,11 @@ Value::Number(number) => Debug::fmt(number, formatter), Value::String(string) => write!(formatter, "String({:?})", string), Value::Array(vec) => { - formatter.write_str("Array ")?; + tri!(formatter.write_str("Array ")); Debug::fmt(vec, formatter) } Value::Object(map) => { - formatter.write_str("Object ")?; + tri!(formatter.write_str("Object ")); Debug::fmt(map, formatter) } } @@ -889,7 +889,6 @@ /// ``` /// use serde::Serialize; /// use serde_json::json; -/// /// use std::error::Error; /// /// #[derive(Serialize)] @@ -898,7 +897,7 @@ /// location: String, /// } /// -/// fn compare_json_values() -> Result<(), Box> { +/// fn compare_json_values() -> Result<(), Box> { /// let u = User { /// fingerprint: "0xF9BA143B95FF6D82".to_owned(), /// location: "Menlo Park, CA".to_owned(), diff -Nru temporalio-1.3.0/vendor/serde_json/src/value/ser.rs temporalio-1.3.0/vendor/serde_json/src/value/ser.rs --- temporalio-1.3.0/vendor/serde_json/src/value/ser.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_json/src/value/ser.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,8 +4,6 @@ use alloc::borrow::ToOwned; use alloc::string::{String, ToString}; use alloc::vec::Vec; -#[cfg(not(feature = "arbitrary_precision"))] -use core::convert::TryFrom; use core::fmt::Display; use core::result; use serde::ser::{Impossible, Serialize}; @@ -451,6 +449,10 @@ Error::syntax(ErrorCode::KeyMustBeAString, 0, 0) } +fn float_key_must_be_finite() -> Error { + Error::syntax(ErrorCode::FloatKeyMustBeFinite, 0, 0) +} + impl serde::Serializer for MapKeySerializer { type Ok = String; type Error = Error; @@ -481,8 +483,8 @@ value.serialize(self) } - fn serialize_bool(self, _value: bool) -> Result { - Err(key_must_be_a_string()) + fn serialize_bool(self, value: bool) -> Result { + Ok(value.to_string()) } fn serialize_i8(self, value: i8) -> Result { @@ -517,12 +519,20 @@ Ok(value.to_string()) } - fn serialize_f32(self, _value: f32) -> Result { - Err(key_must_be_a_string()) + fn serialize_f32(self, value: f32) -> Result { + if value.is_finite() { + Ok(ryu::Buffer::new().format_finite(value).to_owned()) + } else { + Err(float_key_must_be_finite()) + } } - fn serialize_f64(self, _value: f64) -> Result { - Err(key_must_be_a_string()) + fn serialize_f64(self, value: f64) -> Result { + if value.is_finite() { + Ok(ryu::Buffer::new().format_finite(value).to_owned()) + } else { + Err(float_key_must_be_finite()) + } } #[inline] @@ -640,7 +650,7 @@ #[cfg(feature = "arbitrary_precision")] SerializeMap::Number { out_value } => { if key == crate::number::TOKEN { - *out_value = Some(value.serialize(NumberValueEmitter)?); + *out_value = Some(tri!(value.serialize(NumberValueEmitter))); Ok(()) } else { Err(invalid_number()) @@ -649,7 +659,7 @@ #[cfg(feature = "raw_value")] SerializeMap::RawValue { out_value } => { if key == crate::raw::TOKEN { - *out_value = Some(value.serialize(RawValueEmitter)?); + *out_value = Some(tri!(value.serialize(RawValueEmitter))); Ok(()) } else { Err(invalid_raw_value()) diff -Nru temporalio-1.3.0/vendor/serde_json/tests/regression/issue845.rs temporalio-1.3.0/vendor/serde_json/tests/regression/issue845.rs --- temporalio-1.3.0/vendor/serde_json/tests/regression/issue845.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_json/tests/regression/issue845.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,6 @@ #![allow(clippy::trait_duplication_in_bounds)] // https://github.com/rust-lang/rust-clippy/issues/8757 use serde::{Deserialize, Deserializer}; -use std::convert::TryFrom; use std::fmt::{self, Display}; use std::marker::PhantomData; use std::str::FromStr; diff -Nru temporalio-1.3.0/vendor/serde_json/tests/test.rs temporalio-1.3.0/vendor/serde_json/tests/test.rs --- temporalio-1.3.0/vendor/serde_json/tests/test.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/serde_json/tests/test.rs 2023-10-30 19:40:00.000000000 +0000 @@ -53,7 +53,7 @@ () => { BTreeMap::new() }; - ($($k:expr => $v:expr),+) => { + ($($k:expr => $v:expr),+ $(,)?) => { { let mut m = BTreeMap::new(); $( @@ -264,7 +264,7 @@ ( treemap!( "a".to_string() => true, - "b".to_string() => false + "b".to_string() => false, ), "{\"a\":true,\"b\":false}", ), @@ -275,7 +275,7 @@ treemap![ "a".to_string() => treemap![], "b".to_string() => treemap![], - "c".to_string() => treemap![] + "c".to_string() => treemap![], ], "{\"a\":{},\"b\":{},\"c\":{}}", ), @@ -284,10 +284,10 @@ "a".to_string() => treemap![ "a".to_string() => treemap!["a" => vec![1,2,3]], "b".to_string() => treemap![], - "c".to_string() => treemap![] + "c".to_string() => treemap![], ], "b".to_string() => treemap![], - "c".to_string() => treemap![] + "c".to_string() => treemap![], ], "{\"a\":{\"a\":{\"a\":[1,2,3]},\"b\":{},\"c\":{}},\"b\":{},\"c\":{}}", ), @@ -297,9 +297,9 @@ "b".to_string() => treemap![ "a".to_string() => treemap!["a" => vec![1,2,3]], "b".to_string() => treemap![], - "c".to_string() => treemap![] + "c".to_string() => treemap![], ], - "c".to_string() => treemap![] + "c".to_string() => treemap![], ], "{\"a\":{},\"b\":{\"a\":{\"a\":[1,2,3]},\"b\":{},\"c\":{}},\"c\":{}}", ), @@ -310,8 +310,8 @@ "c".to_string() => treemap![ "a".to_string() => treemap!["a" => vec![1,2,3]], "b".to_string() => treemap![], - "c".to_string() => treemap![] - ] + "c".to_string() => treemap![], + ], ], "{\"a\":{},\"b\":{},\"c\":{\"a\":{\"a\":[1,2,3]},\"b\":{},\"c\":{}}}", ), @@ -324,7 +324,7 @@ treemap![ "a".to_string() => treemap![], "b".to_string() => treemap![], - "c".to_string() => treemap![] + "c".to_string() => treemap![], ], pretty_str!({ "a": {}, @@ -337,10 +337,10 @@ "a".to_string() => treemap![ "a".to_string() => treemap!["a" => vec![1,2,3]], "b".to_string() => treemap![], - "c".to_string() => treemap![] + "c".to_string() => treemap![], ], "b".to_string() => treemap![], - "c".to_string() => treemap![] + "c".to_string() => treemap![], ], pretty_str!({ "a": { @@ -364,9 +364,9 @@ "b".to_string() => treemap![ "a".to_string() => treemap!["a" => vec![1,2,3]], "b".to_string() => treemap![], - "c".to_string() => treemap![] + "c".to_string() => treemap![], ], - "c".to_string() => treemap![] + "c".to_string() => treemap![], ], pretty_str!({ "a": {}, @@ -391,8 +391,8 @@ "c".to_string() => treemap![ "a".to_string() => treemap!["a" => vec![1,2,3]], "b".to_string() => treemap![], - "c".to_string() => treemap![] - ] + "c".to_string() => treemap![], + ], ], pretty_str!({ "a": {}, @@ -423,7 +423,7 @@ ( treemap!( "a".to_string() => true, - "b".to_string() => false + "b".to_string() => false, ), pretty_str!( { "a": true, @@ -1192,8 +1192,8 @@ treemap!( "a".to_string() => treemap!( "b".to_string() => 3u64, - "c".to_string() => 4 - ) + "c".to_string() => 4, + ), ), )]); @@ -1369,7 +1369,7 @@ ), treemap!( "a".to_string() => Animal::Dog, - "b".to_string() => Animal::Frog("Henry".to_string(), vec![]) + "b".to_string() => Animal::Frog("Henry".to_string(), vec![]), ), )]); } @@ -1452,7 +1452,6 @@ where T: ser::Serialize, { - #[inline] fn serialize(&self, serializer: S) -> Result where S: ser::Serializer, @@ -1479,7 +1478,6 @@ formatter.write_str("array") } - #[inline] fn visit_unit(self) -> Result, E> where E: de::Error, @@ -1487,7 +1485,6 @@ Ok(MyVec(Vec::new())) } - #[inline] fn visit_seq(self, mut visitor: V) -> Result, V::Error> where V: de::SeqAccess<'de>, @@ -1538,7 +1535,6 @@ K: ser::Serialize + Ord, V: ser::Serialize, { - #[inline] fn serialize(&self, serializer: S) -> Result where S: ser::Serializer, @@ -1566,7 +1562,6 @@ formatter.write_str("map") } - #[inline] fn visit_unit(self) -> Result, E> where E: de::Error, @@ -1574,7 +1569,6 @@ Ok(MyMap(BTreeMap::new())) } - #[inline] fn visit_map(self, mut visitor: Visitor) -> Result, Visitor::Error> where Visitor: de::MapAccess<'de>, @@ -1661,22 +1655,11 @@ } #[test] -fn test_serialize_rejects_bool_keys() { - let map = treemap!( - true => 2, - false => 4 - ); - - let err = to_vec(&map).unwrap_err(); - assert_eq!(err.to_string(), "key must be a string"); -} - -#[test] fn test_serialize_rejects_adt_keys() { let map = treemap!( Some("a") => 2, Some("b") => 4, - None => 6 + None => 6, ); let err = to_vec(&map).unwrap_err(); @@ -1890,23 +1873,41 @@ // map with integer keys let map = treemap!( 1 => 2, - -1 => 6 + -1 => 6, ); let j = r#"{"-1":6,"1":2}"#; test_encode_ok(&[(&map, j)]); test_parse_ok(vec![(j, map)]); - let j = r#"{"x":null}"#; - test_parse_err::>(&[( - j, - "invalid type: string \"x\", expected i32 at line 1 column 4", - )]); + test_parse_err::>(&[ + ( + r#"{"x":null}"#, + "invalid value: expected key to be a number in quotes at line 1 column 2", + ), + ( + r#"{" 123":null}"#, + "invalid value: expected key to be a number in quotes at line 1 column 2", + ), + (r#"{"123 ":null}"#, "expected `\"` at line 1 column 6"), + ]); + + let err = from_value::>(json!({" 123":null})).unwrap_err(); + assert_eq!( + err.to_string(), + "invalid value: expected key to be a number in quotes", + ); + + let err = from_value::>(json!({"123 ":null})).unwrap_err(); + assert_eq!( + err.to_string(), + "invalid value: expected key to be a number in quotes", + ); } #[test] fn test_integer128_key() { let map = treemap! { - 100000000000000000000000000000000000000u128 => () + 100000000000000000000000000000000000000u128 => (), }; let j = r#"{"100000000000000000000000000000000000000":null}"#; assert_eq!(to_string(&map).unwrap(), j); @@ -1914,24 +1915,107 @@ } #[test] -fn test_deny_float_key() { - #[derive(Eq, PartialEq, Ord, PartialOrd)] +fn test_float_key() { + #[derive(Eq, PartialEq, Ord, PartialOrd, Debug, Clone)] struct Float; impl Serialize for Float { fn serialize(&self, serializer: S) -> Result where S: Serializer, { - serializer.serialize_f32(1.0) + serializer.serialize_f32(1.23) + } + } + impl<'de> Deserialize<'de> for Float { + fn deserialize(deserializer: D) -> Result + where + D: de::Deserializer<'de>, + { + f32::deserialize(deserializer).map(|_| Float) } } // map with float key - let map = treemap!(Float => "x"); + let map = treemap!(Float => "x".to_owned()); + let j = r#"{"1.23":"x"}"#; + + test_encode_ok(&[(&map, j)]); + test_parse_ok(vec![(j, map)]); + + let j = r#"{"x": null}"#; + test_parse_err::>(&[( + j, + "invalid value: expected key to be a number in quotes at line 1 column 2", + )]); +} + +#[test] +fn test_deny_non_finite_f32_key() { + // We store float bits so that we can derive Ord, and other traits. In a + // real context the code might involve a crate like ordered-float. + + #[derive(Eq, PartialEq, Ord, PartialOrd, Debug, Clone)] + struct F32Bits(u32); + impl Serialize for F32Bits { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + serializer.serialize_f32(f32::from_bits(self.0)) + } + } + + let map = treemap!(F32Bits(f32::INFINITY.to_bits()) => "x".to_owned()); + assert!(serde_json::to_string(&map).is_err()); + assert!(serde_json::to_value(map).is_err()); + + let map = treemap!(F32Bits(f32::NEG_INFINITY.to_bits()) => "x".to_owned()); + assert!(serde_json::to_string(&map).is_err()); + assert!(serde_json::to_value(map).is_err()); + + let map = treemap!(F32Bits(f32::NAN.to_bits()) => "x".to_owned()); + assert!(serde_json::to_string(&map).is_err()); assert!(serde_json::to_value(map).is_err()); } #[test] +fn test_deny_non_finite_f64_key() { + // We store float bits so that we can derive Ord, and other traits. In a + // real context the code might involve a crate like ordered-float. + + #[derive(Eq, PartialEq, Ord, PartialOrd, Debug, Clone)] + struct F64Bits(u64); + impl Serialize for F64Bits { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + serializer.serialize_f64(f64::from_bits(self.0)) + } + } + + let map = treemap!(F64Bits(f64::INFINITY.to_bits()) => "x".to_owned()); + assert!(serde_json::to_string(&map).is_err()); + assert!(serde_json::to_value(map).is_err()); + + let map = treemap!(F64Bits(f64::NEG_INFINITY.to_bits()) => "x".to_owned()); + assert!(serde_json::to_string(&map).is_err()); + assert!(serde_json::to_value(map).is_err()); + + let map = treemap!(F64Bits(f64::NAN.to_bits()) => "x".to_owned()); + assert!(serde_json::to_string(&map).is_err()); + assert!(serde_json::to_value(map).is_err()); +} + +#[test] +fn test_boolean_key() { + let map = treemap!(false => 0, true => 1); + let j = r#"{"false":0,"true":1}"#; + test_encode_ok(&[(&map, j)]); + test_parse_ok(vec![(j, map)]); +} + +#[test] fn test_borrowed_key() { let map: BTreeMap<&str, ()> = from_str("{\"borrowed\":null}").unwrap(); let expected = treemap! { "borrowed" => () }; @@ -1954,7 +2038,7 @@ } let map = treemap! { Enum::One => 1, - Enum::Two => 2 + Enum::Two => 2, }; let expected = r#"{"One":1,"Two":2}"#; test_encode_ok(&[(&map, expected)]); @@ -1964,7 +2048,7 @@ struct Wrapper(String); let map = treemap! { Wrapper("zero".to_owned()) => 0, - Wrapper("one".to_owned()) => 1 + Wrapper("one".to_owned()) => 1, }; let expected = r#"{"one":1,"zero":0}"#; test_encode_ok(&[(&map, expected)]); @@ -2385,6 +2469,12 @@ let mut map = BTreeMap::new(); map.insert("inner", json!({ "string": "Hello World" })); + let outer = Outer::deserialize(serde::de::value::MapDeserializer::new( + map.iter().map(|(k, v)| (*k, v)), + )) + .unwrap(); + assert_eq!(outer.inner.string, "Hello World"); + let outer = Outer::deserialize(map.into_deserializer()).unwrap(); assert_eq!(outer.inner.string, "Hello World"); } diff -Nru temporalio-1.3.0/vendor/siphasher/.cargo-checksum.json temporalio-1.3.0/vendor/siphasher/.cargo-checksum.json --- temporalio-1.3.0/vendor/siphasher/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/siphasher/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"COPYING":"2667c3da82a038bfbbd64cdb0fde6ecabda683e473fc1c10cc2b31c1c65e7fb6","Cargo.toml":"2fbdfdfc2ef4b57aca5b08df1a3bd62b8a05c049f1c8a6f9d138a25873db6a51","README.md":"c0ffa167eca7e8aa8efc05c0514234aff3f522fc2e327edf6f86d4fbfa8502a8","src/lib.rs":"dac421e799bfb49f9721af1083101af6846fef78268362172450f2a2c0f6250c","src/sip.rs":"7efabe8cfd561d743f31decb68af305133ee4f572db8088bb223a3505f23e438","src/sip128.rs":"b6a5308c623257826107adad5795918b241295fc3e84361090b16413e203cc15","src/tests.rs":"18637799bba7e7bac147257f01f0229eae527295d40dc9a03f0cb2f076c2e74b","src/tests128.rs":"b85b8893c14a3b4ea782d2084b6de414456ef6dd0b55d1c29c68a3e46516d07c"},"package":"7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"} \ No newline at end of file +{"files":{"COPYING":"306b56d1a86d1ff32cffdf3bd26d809354f7f06bcc8c4c1697fcb5e28aeedb7a","Cargo.toml":"4a13fe4e2662d4cbca295faf32cd0a627856fb6f92d524d04e244c5831e0ebc6","README.md":"908182615a076b76d64a82fd586af00832c23aed7d9ce36f719b96ba1a12138a","src/lib.rs":"48566f61f177488d88e22d2d3c2bdb9a24201658abf5e97f85a3e32d22dc9ce8","src/sip.rs":"b2f0067642100232f78f046167299972ec4e64bf8b9a48d5283ab9e0101e12da","src/sip128.rs":"eccfff86293b02af3e22a087592afcea08995f54c551e9fe0ec087e13d9e6eea","src/tests.rs":"99c299d1951aee4c70cd01bea8baabc151a7b316904e5d31de847807a671eaf5","src/tests128.rs":"227986a432d65be2c947a500209adb7767a376b49d82e448487db6a2215476cc"},"package":"38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/siphasher/Cargo.toml temporalio-1.3.0/vendor/siphasher/Cargo.toml --- temporalio-1.3.0/vendor/siphasher/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/siphasher/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2018" name = "siphasher" -version = "0.3.10" +version = "0.3.11" authors = ["Frank Denis "] description = "SipHash-2-4, SipHash-1-3 and 128-bit variants in pure Rust" homepage = "https://docs.rs/siphasher" @@ -40,8 +40,9 @@ features = ["derive"] optional = true -[dev-dependencies.serde_json] +[dependencies.serde_json] version = "1.0" +optional = true [features] default = ["std"] diff -Nru temporalio-1.3.0/vendor/siphasher/COPYING temporalio-1.3.0/vendor/siphasher/COPYING --- temporalio-1.3.0/vendor/siphasher/COPYING 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/siphasher/COPYING 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ Copyright 2012-2016 The Rust Project Developers. -Copyright 2016-2021 Frank Denis. +Copyright 2016-2023 Frank Denis. Licensed under the Apache License, Version 2.0 or the MIT license diff -Nru temporalio-1.3.0/vendor/siphasher/README.md temporalio-1.3.0/vendor/siphasher/README.md --- temporalio-1.3.0/vendor/siphasher/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/siphasher/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -13,6 +13,7 @@ Usage ----- + In `Cargo.toml`: ```toml @@ -28,16 +29,65 @@ ``` 64-bit mode: -```rust -extern crate siphasher; +```rust use siphasher::sip::{SipHasher, SipHasher13, SipHasher24}; + +// one-shot: + +let array: &[u8] = &[1, 2, 3]; +let key: &[u8; 16] = &[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; +let hasher = SipHasher13::new_with_key(key); +let h = hasher.hash(array); + +// incremental: + +use core::hash::Hasher; + +let array1: &[u8] = &[1, 2, 3]; +let array2: &[u8] = &[4, 5, 6]; +let key: &[u8; 16] = &[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; +let mut hasher = SipHasher13::new_with_key(key); +hasher.write(array1); +hasher.write(array2); +let h = hasher.finish(); ``` 128-bit mode: + ```rust use siphasher::sip128::{Hasher128, Siphasher, SipHasher13, SipHasher24}; + +// one-shot: + +let array: &[u8] = &[1, 2, 3]; +let key: &[u8; 16] = &[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; +let hasher = SipHasher13::new_with_key(key); +let h = hasher.hash(array).as_bytes(); + +// incremental: + +use core::hash::Hasher; + +let array1: &[u8] = &[1, 2, 3]; +let array2: &[u8] = &[4, 5, 6]; +let key: &[u8; 16] = &[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; +let mut hasher = SipHasher13::new_with_key(key); +hasher.write(array1); +hasher.write(array2); +let h = hasher.finish128().as_bytes(); ``` [API documentation](https://docs.rs/siphasher/) ----------------------------------------------- + +Note +---- + +Due to a confusing and not well documented API, methods from the `Hasher` trait of the standard library (`std::hash::Hasher`, `core::hash::Hasher`) produce non-portable results. + +This is not specific to SipHash, and affects all hash functions. + +The only safe methods in that trait are `write()` and `finish()`. + +It is thus recommended to use SipHash (and all other hash functions, actually) as documented above. \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/siphasher/src/lib.rs temporalio-1.3.0/vendor/siphasher/src/lib.rs --- temporalio-1.3.0/vendor/siphasher/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/siphasher/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -15,10 +15,14 @@ #[cfg(any(feature = "serde", feature = "serde_std", feature = "serde_no_std"))] pub mod reexports { pub use serde; + #[cfg(feature = "serde_json")] + pub use serde_json; } pub mod prelude { - pub use crate::{sip, sip128}; pub use core::hash::Hasher as _; + pub use sip128::Hasher128 as _; + + pub use crate::{sip, sip128}; } diff -Nru temporalio-1.3.0/vendor/siphasher/src/sip128.rs temporalio-1.3.0/vendor/siphasher/src/sip128.rs --- temporalio-1.3.0/vendor/siphasher/src/sip128.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/siphasher/src/sip128.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,6 +12,7 @@ use core::cmp; use core::hash; +use core::hash::Hasher as _; use core::marker::PhantomData; use core::mem; use core::ptr; @@ -199,6 +200,14 @@ bytes[8..16].copy_from_slice(&self.0.hasher.k1.to_le_bytes()); bytes } + + /// Hash a byte array - This is the easiest and safest way to use SipHash. + #[inline] + pub fn hash(&self, bytes: &[u8]) -> Hash128 { + let mut hasher = self.0.hasher; + hasher.write(bytes); + hasher.finish128() + } } impl Hasher128 for SipHasher { @@ -247,6 +256,14 @@ bytes[8..16].copy_from_slice(&self.hasher.k1.to_le_bytes()); bytes } + + /// Hash a byte array - This is the easiest and safest way to use SipHash. + #[inline] + pub fn hash(&self, bytes: &[u8]) -> Hash128 { + let mut hasher = self.hasher; + hasher.write(bytes); + hasher.finish128() + } } impl Hasher128 for SipHasher13 { @@ -295,6 +312,14 @@ bytes[8..16].copy_from_slice(&self.hasher.k1.to_le_bytes()); bytes } + + /// Hash a byte array - This is the easiest and safest way to use SipHash. + #[inline] + pub fn hash(&self, bytes: &[u8]) -> Hash128 { + let mut hasher = self.hasher; + hasher.write(bytes); + hasher.finish128() + } } impl Hasher128 for SipHasher24 { @@ -526,7 +551,7 @@ #[inline] fn write_u64(&mut self, i: u64) { - self.short_write(i, i.to_le() as u64); + self.short_write(i, i.to_le()); } #[inline] diff -Nru temporalio-1.3.0/vendor/siphasher/src/sip.rs temporalio-1.3.0/vendor/siphasher/src/sip.rs --- temporalio-1.3.0/vendor/siphasher/src/sip.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/siphasher/src/sip.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,6 +12,7 @@ use core::cmp; use core::hash; +use core::hash::Hasher as _; use core::marker::PhantomData; use core::mem; use core::ptr; @@ -178,6 +179,14 @@ bytes[8..16].copy_from_slice(&self.0.hasher.k1.to_le_bytes()); bytes } + + /// Hash a byte array - This is the easiest and safest way to use SipHash. + #[inline] + pub fn hash(&self, bytes: &[u8]) -> u64 { + let mut hasher = self.0.hasher; + hasher.write(bytes); + hasher.finish() + } } impl SipHasher13 { @@ -218,6 +227,14 @@ bytes[8..16].copy_from_slice(&self.hasher.k1.to_le_bytes()); bytes } + + /// Hash a byte array - This is the easiest and safest way to use SipHash. + #[inline] + pub fn hash(&self, bytes: &[u8]) -> u64 { + let mut hasher = self.hasher; + hasher.write(bytes); + hasher.finish() + } } impl SipHasher24 { @@ -258,6 +275,14 @@ bytes[8..16].copy_from_slice(&self.hasher.k1.to_le_bytes()); bytes } + + /// Hash a byte array - This is the easiest and safest way to use SipHash. + #[inline] + pub fn hash(&self, bytes: &[u8]) -> u64 { + let mut hasher = self.hasher; + hasher.write(bytes); + hasher.finish() + } } impl Hasher { @@ -458,7 +483,7 @@ #[inline] fn write_u64(&mut self, i: u64) { - self.short_write(i, i.to_le() as u64); + self.short_write(i, i.to_le()); } #[inline] diff -Nru temporalio-1.3.0/vendor/siphasher/src/tests128.rs temporalio-1.3.0/vendor/siphasher/src/tests128.rs --- temporalio-1.3.0/vendor/siphasher/src/tests128.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/siphasher/src/tests128.rs 2023-10-30 19:40:00.000000000 +0000 @@ -8,9 +8,10 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use super::sip128::{Hasher128, SipHasher, SipHasher13, SipHasher24}; use std::hash::{Hash, Hasher}; +use super::sip128::{Hasher128, SipHasher, SipHasher13, SipHasher24}; + // Hash just the bytes of the slice, without length prefix struct Bytes<'a>(&'a [u8]); @@ -32,6 +33,14 @@ } #[test] +fn test_siphash128_idempotent() { + let val64 = 0xdead_beef_dead_beef_u64; + assert_eq!(hash(&val64), hash(&val64)); + let val32 = 0xdeadbeef_u32; + assert_eq!(hash(&val32), hash(&val32)); +} + +#[test] #[allow(unused_must_use)] fn test_siphash128_1_3() { let vecs: [[u8; 16]; 1] = [[ @@ -94,6 +103,28 @@ } #[test] +fn test_siphash128_simple() { + let array: &[u8] = &[1, 2, 3]; + let key: &[u8; 16] = &[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; + let hasher = SipHasher13::new_with_key(key); + let h = hasher.hash(array).as_bytes(); + _ = h; +} + +#[test] +fn test_siphash128_incremental() { + let array1: &[u8] = &[1, 2, 3]; + let array2: &[u8] = &[4, 5, 6]; + let key: &[u8; 16] = &[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; + let mut hasher = SipHasher13::new_with_key(key); + hasher.write(array1); + hasher.write(array2); + let h = hasher.finish128().as_bytes(); + _ = h; +} + +#[test] +#[cfg(all(feature = "serde", feature = "serde_json"))] fn test_siphash128_serde() { let val64 = 0xdead_beef_dead_beef_u64; let hash = hash(&val64); diff -Nru temporalio-1.3.0/vendor/siphasher/src/tests.rs temporalio-1.3.0/vendor/siphasher/src/tests.rs --- temporalio-1.3.0/vendor/siphasher/src/tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/siphasher/src/tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -8,9 +8,10 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use super::sip::{SipHasher, SipHasher13, SipHasher24}; use std::hash::{Hash, Hasher}; +use super::sip::{SipHasher, SipHasher13, SipHasher24}; + // Hash just the bytes of the slice, without length prefix struct Bytes<'a>(&'a [u8]); @@ -300,6 +301,28 @@ } #[test] +fn test_hash_simple() { + let array: &[u8] = &[1, 2, 3]; + let key: &[u8; 16] = &[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; + let hasher = SipHasher13::new_with_key(key); + let h = hasher.hash(array); + _ = h; +} + +#[test] +fn test_hash_incremental() { + let array1: &[u8] = &[1, 2, 3]; + let array2: &[u8] = &[4, 5, 6]; + let key: &[u8; 16] = &[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; + let mut hasher = SipHasher13::new_with_key(key); + hasher.write(array1); + hasher.write(array2); + let h = hasher.finish(); + _ = h; +} + +#[test] +#[cfg(all(feature = "serde", feature = "serde_json"))] fn test_hash_serde() { let val64 = 0xdead_beef_dead_beef_u64; let hash = hash(&val64); diff -Nru temporalio-1.3.0/vendor/slab/.cargo-checksum.json temporalio-1.3.0/vendor/slab/.cargo-checksum.json --- temporalio-1.3.0/vendor/slab/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/slab/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"c882a7b35bdc9c3acaad4b4db53776a0a37a01caa05510a46cb3422628a96061","Cargo.toml":"5e26ff6d3f231db8a60a9d1693556cdb1c14f0dd1266b6c33a445a444ae79248","LICENSE":"8ce0830173fdac609dfb4ea603fdc002c2f4af0dc9b1a005653f5da9cf534b18","README.md":"6e8d6d493aec6526593ae9b05e3b21d3f878c5816a94af9d372598e03406b35f","build.rs":"2c008232a3ae7c83c166f61c2942314717976776a4dba38e9063cd8e57a1b9bd","src/builder.rs":"87e629b1f9853d910389635b27a42391f1681cd5638d81e386215211e8b67847","src/lib.rs":"6f4e73052cb4929231279267450eab3f3b466cb8288c85ed487606d226dd3079","src/serde.rs":"e58650a04644cb732119f50eefe6a3066104b5b41be7074e12525e05e2ad21b7","tests/serde.rs":"bb28112509dbb6949528802d05a1b1e34d2e5ff9d3ba5f62aa801cfb3de7a78e","tests/slab.rs":"8d608a409b8c1543aada79c9817a18e295565e7233df88b412499f27d132c0fe"},"package":"6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"} \ No newline at end of file +{"files":{"CHANGELOG.md":"4ab78a6c79fcce5c853fa02902dc20ab217a41582f2c9204c517da57606e3508","Cargo.toml":"cc4f904c3a853b1b5efe9c36dd973e86ae72094ae27398b7c04ff05606517061","LICENSE":"8ce0830173fdac609dfb4ea603fdc002c2f4af0dc9b1a005653f5da9cf534b18","README.md":"6e8d6d493aec6526593ae9b05e3b21d3f878c5816a94af9d372598e03406b35f","build.rs":"2c008232a3ae7c83c166f61c2942314717976776a4dba38e9063cd8e57a1b9bd","src/builder.rs":"87e629b1f9853d910389635b27a42391f1681cd5638d81e386215211e8b67847","src/lib.rs":"7030188777c9e1a1b1649cc434ebee62b324f1d4212b0982157205892bfb3b5b","src/serde.rs":"e58650a04644cb732119f50eefe6a3066104b5b41be7074e12525e05e2ad21b7","tests/serde.rs":"bb28112509dbb6949528802d05a1b1e34d2e5ff9d3ba5f62aa801cfb3de7a78e","tests/slab.rs":"83f597daf9430d68553738facfd1fd00d9d718888fc5f7dc082ed9eb08a3a18d"},"package":"8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/slab/Cargo.toml temporalio-1.3.0/vendor/slab/Cargo.toml --- temporalio-1.3.0/vendor/slab/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/slab/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ edition = "2018" rust-version = "1.31" name = "slab" -version = "0.4.8" +version = "0.4.9" authors = ["Carl Lerche "] exclude = ["/.*"] description = "Pre-allocated storage for a uniform data type" diff -Nru temporalio-1.3.0/vendor/slab/CHANGELOG.md temporalio-1.3.0/vendor/slab/CHANGELOG.md --- temporalio-1.3.0/vendor/slab/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/slab/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,8 @@ -# 0.4.8 (January 20, 2022) +# 0.4.9 (August 22, 2023) + +* Avoid reallocations in `Slab::clone_from` (#137) + +# 0.4.8 (January 20, 2023) * Fixed documentation about overflow (#124) * Document panic in `get2_mut` (#131) diff -Nru temporalio-1.3.0/vendor/slab/src/lib.rs temporalio-1.3.0/vendor/slab/src/lib.rs --- temporalio-1.3.0/vendor/slab/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/slab/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -129,7 +129,6 @@ /// See the [module documentation] for more details. /// /// [module documentation]: index.html -#[derive(Clone)] pub struct Slab { // Chunk of memory entries: Vec>, @@ -142,6 +141,25 @@ next: usize, } +impl Clone for Slab +where + T: Clone, +{ + fn clone(&self) -> Self { + Self { + entries: self.entries.clone(), + len: self.len, + next: self.next, + } + } + + fn clone_from(&mut self, source: &Self) { + self.entries.clone_from(&source.entries); + self.len = source.len; + self.next = source.next; + } +} + impl Default for Slab { fn default() -> Self { Slab::new() diff -Nru temporalio-1.3.0/vendor/slab/tests/slab.rs temporalio-1.3.0/vendor/slab/tests/slab.rs --- temporalio-1.3.0/vendor/slab/tests/slab.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/slab/tests/slab.rs 2023-10-30 19:40:00.000000000 +0000 @@ -710,3 +710,24 @@ fn const_new() { static _SLAB: Slab<()> = Slab::new(); } + +#[test] +fn clone_from() { + let mut slab1 = Slab::new(); + let mut slab2 = Slab::new(); + for i in 0..5 { + slab1.insert(i); + slab2.insert(2 * i); + slab2.insert(2 * i + 1); + } + slab1.remove(1); + slab1.remove(3); + slab2.clone_from(&slab1); + + let mut iter2 = slab2.iter(); + assert_eq!(iter2.next(), Some((0, &0))); + assert_eq!(iter2.next(), Some((2, &2))); + assert_eq!(iter2.next(), Some((4, &4))); + assert_eq!(iter2.next(), None); + assert!(slab2.capacity() >= 10); +} diff -Nru temporalio-1.3.0/vendor/smallvec/.cargo-checksum.json temporalio-1.3.0/vendor/smallvec/.cargo-checksum.json --- temporalio-1.3.0/vendor/smallvec/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/smallvec/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"e8b7e22c87fa34e053c12b3751ec0c7b25b37bd1285959710321a7a00861f392","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0b28172679e0009b655da42797c03fd163a3379d5cfa67ba1f1655e974a2a1a9","README.md":"a01127c37308457e8d396b176fb790846be0978c173be3f13260b62efcef011b","benches/bench.rs":"e2a235d68be20996014c00468b369887d2041ce95486625de3cef35b8f2e4acd","debug_metadata/README.md":"dc8fbf896055359a94f7bfdfae7604e0bcfc8b10998a218d484d9fffdf83637c","debug_metadata/smallvec.natvis":"68aed2322bdc13ed6fa2021dc9625346174d73590929acbc2f95c98785c8dee4","scripts/run_miri.sh":"74a9f9adc43f986e81977b03846f7dd00122a0150bd8ec3fe4842a1a787e0f07","src/arbitrary.rs":"22e55cfbf60374945b30e6d0855129eff67cd8b878cef6fa997e1f4be67b9e3d","src/lib.rs":"35c60a9d9240853e9f6f84b7a44ff6a3197a87ab404f5ab1cd8ebeeeb72e54da","src/specialization.rs":"46433586203399251cba496d67b88d34e1be3c2b591986b77463513da1c66471","src/tests.rs":"2bcf69dc0597e4e8a59a92566a3dd5c82ec3a1ea563aa006ea0f4a2722cb2d17","tests/debugger_visualizer.rs":"87480900add8579e1285741d5a0041063b6d888328e11854ab2cdc2960d7ddb1","tests/macro.rs":"22ad4f6f104a599fdcba19cad8834105b8656b212fb6c7573a427d447f5db14f"},"package":"a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"} \ No newline at end of file +{"files":{"Cargo.toml":"dd059cc04554e412d3ad325d3cbbd5bfd275428fea1f7930c9b2aaf87c2dcab8","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0b28172679e0009b655da42797c03fd163a3379d5cfa67ba1f1655e974a2a1a9","README.md":"a01127c37308457e8d396b176fb790846be0978c173be3f13260b62efcef011b","benches/bench.rs":"e2a235d68be20996014c00468b369887d2041ce95486625de3cef35b8f2e4acd","debug_metadata/README.md":"4d7f1c1b2c25ce2231ef71864d06e54323867459035b53bc9e00f66a0a44f82e","debug_metadata/smallvec.natvis":"3092ddebd8fffc3486536d7f27f8c5eae3a8a093d45cd8eeb3946ea2b0c35a15","scripts/run_miri.sh":"74a9f9adc43f986e81977b03846f7dd00122a0150bd8ec3fe4842a1a787e0f07","src/arbitrary.rs":"22e55cfbf60374945b30e6d0855129eff67cd8b878cef6fa997e1f4be67b9e3d","src/lib.rs":"f2f20a3dffbde2514044e43626d4d3da73d15e2cbed7cdcc65f310373dd7fae9","src/specialization.rs":"46433586203399251cba496d67b88d34e1be3c2b591986b77463513da1c66471","src/tests.rs":"d0a70bb7b4e1d0a174f2a195c8ab55280a40589bab7028999afd787b3fff6eae","tests/debugger_visualizer.rs":"185456ad253957fc0c9e904ff8a1135397ac991c29fa3c60f75d8d81f7463022","tests/macro.rs":"22ad4f6f104a599fdcba19cad8834105b8656b212fb6c7573a427d447f5db14f"},"package":"62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/smallvec/Cargo.toml temporalio-1.3.0/vendor/smallvec/Cargo.toml --- temporalio-1.3.0/vendor/smallvec/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/smallvec/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2018" name = "smallvec" -version = "1.10.0" +version = "1.11.0" authors = ["The Servo Project Developers"] description = "'Small vector' optimization: store up to a small number of items on the stack" documentation = "https://docs.rs/smallvec/" @@ -63,6 +63,8 @@ const_generics = [] const_new = ["const_generics"] debugger_visualizer = [] +drain_filter = [] +drain_keep_rest = ["drain_filter"] may_dangle = [] specialization = [] union = [] diff -Nru temporalio-1.3.0/vendor/smallvec/debug_metadata/README.md temporalio-1.3.0/vendor/smallvec/debug_metadata/README.md --- temporalio-1.3.0/vendor/smallvec/debug_metadata/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/smallvec/debug_metadata/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -18,7 +18,7 @@ Pretty printers are written as python scripts that describe how a type should be displayed when loaded up in GDB/LLDB. (See: https://sourceware.org/gdb/onlinedocs/gdb/Pretty-Printing.html#Pretty-Printing) The pretty printers provide patterns, which match type names, and for matching -types, descibe how to display those types. (For writing a pretty printer, see: https://sourceware.org/gdb/onlinedocs/gdb/Writing-a-Pretty_002dPrinter.html#Writing-a-Pretty_002dPrinter). +types, describe how to display those types. (For writing a pretty printer, see: https://sourceware.org/gdb/onlinedocs/gdb/Writing-a-Pretty_002dPrinter.html#Writing-a-Pretty_002dPrinter). ### Embedding Visualizers diff -Nru temporalio-1.3.0/vendor/smallvec/debug_metadata/smallvec.natvis temporalio-1.3.0/vendor/smallvec/debug_metadata/smallvec.natvis --- temporalio-1.3.0/vendor/smallvec/debug_metadata/smallvec.natvis 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/smallvec/debug_metadata/smallvec.natvis 2023-10-30 19:40:00.000000000 +0000 @@ -1,13 +1,14 @@ - - - + + + - {{ len={len()} }} + {{ len={len()} is_inline={is_inline()} }} is_inline() ? $T2 : capacity len() + data_ptr() len() @@ -17,11 +18,10 @@ - + - - - {{ len={len()} }} + + {{ len={len()} is_inline={is_inline()} }} is_inline() ? $T2 : capacity len() diff -Nru temporalio-1.3.0/vendor/smallvec/src/lib.rs temporalio-1.3.0/vendor/smallvec/src/lib.rs --- temporalio-1.3.0/vendor/smallvec/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/smallvec/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -56,6 +56,19 @@ //! For details, see the //! [Rust Reference](https://doc.rust-lang.org/reference/const_eval.html#const-functions). //! +//! ### `drain_filter` +//! +//! **This feature is unstable.** It may change to match the unstable `drain_filter` method in libstd. +//! +//! Enables the `drain_filter` method, which produces an iterator that calls a user-provided +//! closure to determine which elements of the vector to remove and yield from the iterator. +//! +//! ### `drain_keep_rest` +//! +//! **This feature is unstable.** It may change to match the unstable `drain_keep_rest` method in libstd. +//! +//! Enables the `DrainFilter::keep_rest` method. +//! //! ### `specialization` //! //! **This feature is unstable and requires a nightly build of the Rust toolchain.** @@ -125,6 +138,9 @@ #[cfg(feature = "write")] use std::io; +#[cfg(feature = "drain_keep_rest")] +use core::mem::ManuallyDrop; + /// Creates a [`SmallVec`] containing the arguments. /// /// `smallvec!` allows `SmallVec`s to be defined with the same syntax as array expressions. @@ -237,10 +253,10 @@ debug_unreachable!("entered unreachable code") }; ($e:expr) => { - if cfg!(not(debug_assertions)) { - unreachable_unchecked(); - } else { + if cfg!(debug_assertions) { panic!($e); + } else { + unreachable_unchecked(); } }; } @@ -321,10 +337,10 @@ Layout::from_size_align(size, align).map_err(|_| CollectionAllocErr::CapacityOverflow) } -unsafe fn deallocate(ptr: *mut T, capacity: usize) { +unsafe fn deallocate(ptr: NonNull, capacity: usize) { // This unwrap should succeed since the same did when allocating. let layout = layout_array::(capacity).unwrap(); - alloc::alloc::dealloc(ptr as *mut u8, layout) + alloc::alloc::dealloc(ptr.as_ptr() as *mut u8, layout) } /// An iterator that removes the items from a `SmallVec` and yields them by value. @@ -410,10 +426,202 @@ } } +#[cfg(feature = "drain_filter")] +/// An iterator which uses a closure to determine if an element should be removed. +/// +/// Returned from [`SmallVec::drain_filter`][1]. +/// +/// [1]: struct.SmallVec.html#method.drain_filter +pub struct DrainFilter<'a, T, F> +where + F: FnMut(&mut T::Item) -> bool, + T: Array, +{ + vec: &'a mut SmallVec, + /// The index of the item that will be inspected by the next call to `next`. + idx: usize, + /// The number of items that have been drained (removed) thus far. + del: usize, + /// The original length of `vec` prior to draining. + old_len: usize, + /// The filter test predicate. + pred: F, + /// A flag that indicates a panic has occurred in the filter test predicate. + /// This is used as a hint in the drop implementation to prevent consumption + /// of the remainder of the `DrainFilter`. Any unprocessed items will be + /// backshifted in the `vec`, but no further items will be dropped or + /// tested by the filter predicate. + panic_flag: bool, +} + +#[cfg(feature = "drain_filter")] +impl fmt::Debug for DrainFilter<'_, T, F> +where + F: FnMut(&mut T::Item) -> bool, + T: Array, + T::Item: fmt::Debug, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_tuple("DrainFilter").field(&self.vec.as_slice()).finish() + } +} + +#[cfg(feature = "drain_filter")] +impl Iterator for DrainFilter<'_, T, F> +where + F: FnMut(&mut T::Item) -> bool, + T: Array, +{ + type Item = T::Item; + + fn next(&mut self) -> Option + { + unsafe { + while self.idx < self.old_len { + let i = self.idx; + let v = slice::from_raw_parts_mut(self.vec.as_mut_ptr(), self.old_len); + self.panic_flag = true; + let drained = (self.pred)(&mut v[i]); + self.panic_flag = false; + // Update the index *after* the predicate is called. If the index + // is updated prior and the predicate panics, the element at this + // index would be leaked. + self.idx += 1; + if drained { + self.del += 1; + return Some(ptr::read(&v[i])); + } else if self.del > 0 { + let del = self.del; + let src: *const Self::Item = &v[i]; + let dst: *mut Self::Item = &mut v[i - del]; + ptr::copy_nonoverlapping(src, dst, 1); + } + } + None + } + } + + fn size_hint(&self) -> (usize, Option) { + (0, Some(self.old_len - self.idx)) + } +} + +#[cfg(feature = "drain_filter")] +impl Drop for DrainFilter<'_, T, F> +where + F: FnMut(&mut T::Item) -> bool, + T: Array, +{ + fn drop(&mut self) { + struct BackshiftOnDrop<'a, 'b, T, F> + where + F: FnMut(&mut T::Item) -> bool, + T: Array + { + drain: &'b mut DrainFilter<'a, T, F>, + } + + impl<'a, 'b, T, F> Drop for BackshiftOnDrop<'a, 'b, T, F> + where + F: FnMut(&mut T::Item) -> bool, + T: Array + { + fn drop(&mut self) { + unsafe { + if self.drain.idx < self.drain.old_len && self.drain.del > 0 { + // This is a pretty messed up state, and there isn't really an + // obviously right thing to do. We don't want to keep trying + // to execute `pred`, so we just backshift all the unprocessed + // elements and tell the vec that they still exist. The backshift + // is required to prevent a double-drop of the last successfully + // drained item prior to a panic in the predicate. + let ptr = self.drain.vec.as_mut_ptr(); + let src = ptr.add(self.drain.idx); + let dst = src.sub(self.drain.del); + let tail_len = self.drain.old_len - self.drain.idx; + src.copy_to(dst, tail_len); + } + self.drain.vec.set_len(self.drain.old_len - self.drain.del); + } + } + } + + let backshift = BackshiftOnDrop { drain: self }; + + // Attempt to consume any remaining elements if the filter predicate + // has not yet panicked. We'll backshift any remaining elements + // whether we've already panicked or if the consumption here panics. + if !backshift.drain.panic_flag { + backshift.drain.for_each(drop); + } + } +} + +#[cfg(feature = "drain_keep_rest")] +impl DrainFilter<'_, T, F> +where + F: FnMut(&mut T::Item) -> bool, + T: Array +{ + /// Keep unyielded elements in the source `Vec`. + /// + /// # Examples + /// + /// ``` + /// # use smallvec::{smallvec, SmallVec}; + /// + /// let mut vec: SmallVec<[char; 2]> = smallvec!['a', 'b', 'c']; + /// let mut drain = vec.drain_filter(|_| true); + /// + /// assert_eq!(drain.next().unwrap(), 'a'); + /// + /// // This call keeps 'b' and 'c' in the vec. + /// drain.keep_rest(); + /// + /// // If we wouldn't call `keep_rest()`, + /// // `vec` would be empty. + /// assert_eq!(vec, SmallVec::<[char; 2]>::from_slice(&['b', 'c'])); + /// ``` + pub fn keep_rest(self) + { + // At this moment layout looks like this: + // + // _____________________/-- old_len + // / \ + // [kept] [yielded] [tail] + // \_______/ ^-- idx + // \-- del + // + // Normally `Drop` impl would drop [tail] (via .for_each(drop), ie still calling `pred`) + // + // 1. Move [tail] after [kept] + // 2. Update length of the original vec to `old_len - del` + // a. In case of ZST, this is the only thing we want to do + // 3. Do *not* drop self, as everything is put in a consistent state already, there is nothing to do + let mut this = ManuallyDrop::new(self); + + unsafe { + // ZSTs have no identity, so we don't need to move them around. + let needs_move = mem::size_of::() != 0; + + if needs_move && this.idx < this.old_len && this.del > 0 { + let ptr = this.vec.as_mut_ptr(); + let src = ptr.add(this.idx); + let dst = src.sub(this.del); + let tail_len = this.old_len - this.idx; + src.copy_to(dst, tail_len); + } + + let new_len = this.old_len - this.del; + this.vec.set_len(new_len); + } + } +} + #[cfg(feature = "union")] union SmallVecData { inline: core::mem::ManuallyDrop>, - heap: (*mut A::Item, usize), + heap: (NonNull, usize), } #[cfg(all(feature = "union", feature = "const_new"))] @@ -430,12 +638,12 @@ #[cfg(feature = "union")] impl SmallVecData
{ #[inline] - unsafe fn inline(&self) -> *const A::Item { - self.inline.as_ptr() as *const A::Item + unsafe fn inline(&self) -> ConstNonNull { + ConstNonNull::new(self.inline.as_ptr() as *const A::Item).unwrap() } #[inline] - unsafe fn inline_mut(&mut self) -> *mut A::Item { - self.inline.as_mut_ptr() as *mut A::Item + unsafe fn inline_mut(&mut self) -> NonNull { + NonNull::new(self.inline.as_mut_ptr() as *mut A::Item).unwrap() } #[inline] fn from_inline(inline: MaybeUninit) -> SmallVecData { @@ -448,15 +656,16 @@ core::mem::ManuallyDrop::into_inner(self.inline) } #[inline] - unsafe fn heap(&self) -> (*mut A::Item, usize) { - self.heap + unsafe fn heap(&self) -> (ConstNonNull, usize) { + (ConstNonNull(self.heap.0), self.heap.1) } #[inline] - unsafe fn heap_mut(&mut self) -> &mut (*mut A::Item, usize) { - &mut self.heap + unsafe fn heap_mut(&mut self) -> (NonNull, &mut usize) { + let h = &mut self.heap; + (h.0, &mut h.1) } #[inline] - fn from_heap(ptr: *mut A::Item, len: usize) -> SmallVecData { + fn from_heap(ptr: NonNull, len: usize) -> SmallVecData { SmallVecData { heap: (ptr, len) } } } @@ -464,7 +673,15 @@ #[cfg(not(feature = "union"))] enum SmallVecData { Inline(MaybeUninit), - Heap((*mut A::Item, usize)), + // Using NonNull and NonZero here allows to reduce size of `SmallVec`. + Heap { + // Since we never allocate on heap + // unless our capacity is bigger than inline capacity + // heap capacity cannot be less than 1. + // Therefore, pointer cannot be null too. + ptr: NonNull, + len: usize, + }, } #[cfg(all(not(feature = "union"), feature = "const_new"))] @@ -479,16 +696,16 @@ #[cfg(not(feature = "union"))] impl SmallVecData { #[inline] - unsafe fn inline(&self) -> *const A::Item { + unsafe fn inline(&self) -> ConstNonNull { match self { - SmallVecData::Inline(a) => a.as_ptr() as *const A::Item, + SmallVecData::Inline(a) => ConstNonNull::new(a.as_ptr() as *const A::Item).unwrap(), _ => debug_unreachable!(), } } #[inline] - unsafe fn inline_mut(&mut self) -> *mut A::Item { + unsafe fn inline_mut(&mut self) -> NonNull { match self { - SmallVecData::Inline(a) => a.as_mut_ptr() as *mut A::Item, + SmallVecData::Inline(a) => NonNull::new(a.as_mut_ptr() as *mut A::Item).unwrap(), _ => debug_unreachable!(), } } @@ -504,22 +721,22 @@ } } #[inline] - unsafe fn heap(&self) -> (*mut A::Item, usize) { + unsafe fn heap(&self) -> (ConstNonNull, usize) { match self { - SmallVecData::Heap(data) => *data, + SmallVecData::Heap { ptr, len } => (ConstNonNull(*ptr), *len), _ => debug_unreachable!(), } } #[inline] - unsafe fn heap_mut(&mut self) -> &mut (*mut A::Item, usize) { + unsafe fn heap_mut(&mut self) -> (NonNull, &mut usize) { match self { - SmallVecData::Heap(data) => data, + SmallVecData::Heap { ptr, len } => (*ptr, len), _ => debug_unreachable!(), } } #[inline] - fn from_heap(ptr: *mut A::Item, len: usize) -> SmallVecData { - SmallVecData::Heap((ptr, len)) + fn from_heap(ptr: NonNull, len: usize) -> SmallVecData { + SmallVecData::Heap { ptr, len } } } @@ -611,11 +828,13 @@ #[inline] pub fn from_vec(mut vec: Vec) -> SmallVec { if vec.capacity() <= Self::inline_capacity() { + // Cannot use Vec with smaller capacity + // because we use value of `Self::capacity` field as indicator. unsafe { let mut data = SmallVecData::::from_inline(MaybeUninit::uninit()); let len = vec.len(); vec.set_len(0); - ptr::copy_nonoverlapping(vec.as_ptr(), data.inline_mut(), len); + ptr::copy_nonoverlapping(vec.as_ptr(), data.inline_mut().as_ptr(), len); SmallVec { capacity: len, @@ -625,6 +844,9 @@ } else { let (ptr, cap, len) = (vec.as_mut_ptr(), vec.capacity(), vec.len()); mem::forget(vec); + let ptr = NonNull::new(ptr) + // See docs: https://doc.rust-lang.org/std/vec/struct.Vec.html#method.as_mut_ptr + .expect("Cannot be null by `Vec` invariant"); SmallVec { capacity: cap, @@ -750,7 +972,7 @@ /// Returns a tuple with (data ptr, len, capacity) /// Useful to get all SmallVec properties with a single check of the current storage variant. #[inline] - fn triple(&self) -> (*const A::Item, usize, usize) { + fn triple(&self) -> (ConstNonNull, usize, usize) { unsafe { if self.spilled() { let (ptr, len) = self.data.heap(); @@ -763,10 +985,10 @@ /// Returns a tuple with (data ptr, len ptr, capacity) #[inline] - fn triple_mut(&mut self) -> (*mut A::Item, &mut usize, usize) { + fn triple_mut(&mut self) -> (NonNull, &mut usize, usize) { unsafe { if self.spilled() { - let &mut (ptr, ref mut len_ptr) = self.data.heap_mut(); + let (ptr, len_ptr) = self.data.heap_mut(); (ptr, len_ptr, self.capacity) } else { ( @@ -833,6 +1055,65 @@ } } + + #[cfg(feature = "drain_filter")] + /// Creates an iterator which uses a closure to determine if an element should be removed. + /// + /// If the closure returns true, the element is removed and yielded. If the closure returns + /// false, the element will remain in the vector and will not be yielded by the iterator. + /// + /// Using this method is equivalent to the following code: + /// ``` + /// # use smallvec::SmallVec; + /// # let some_predicate = |x: &mut i32| { *x == 2 || *x == 3 || *x == 6 }; + /// # let mut vec: SmallVec<[i32; 8]> = SmallVec::from_slice(&[1i32, 2, 3, 4, 5, 6]); + /// let mut i = 0; + /// while i < vec.len() { + /// if some_predicate(&mut vec[i]) { + /// let val = vec.remove(i); + /// // your code here + /// } else { + /// i += 1; + /// } + /// } + /// + /// # assert_eq!(vec, SmallVec::<[i32; 8]>::from_slice(&[1i32, 4, 5])); + /// ``` + /// /// + /// But `drain_filter` is easier to use. `drain_filter` is also more efficient, + /// because it can backshift the elements of the array in bulk. + /// + /// Note that `drain_filter` also lets you mutate every element in the filter closure, + /// regardless of whether you choose to keep or remove it. + /// + /// # Examples + /// + /// Splitting an array into evens and odds, reusing the original allocation: + /// + /// ``` + /// # use smallvec::SmallVec; + /// let mut numbers: SmallVec<[i32; 16]> = SmallVec::from_slice(&[1i32, 2, 3, 4, 5, 6, 8, 9, 11, 13, 14, 15]); + /// + /// let evens = numbers.drain_filter(|x| *x % 2 == 0).collect::>(); + /// let odds = numbers; + /// + /// assert_eq!(evens, SmallVec::<[i32; 16]>::from_slice(&[2i32, 4, 6, 8, 14])); + /// assert_eq!(odds, SmallVec::<[i32; 16]>::from_slice(&[1i32, 3, 5, 9, 11, 13, 15])); + /// ``` + pub fn drain_filter(&mut self, filter: F) -> DrainFilter<'_, A, F,> + where + F: FnMut(&mut A::Item) -> bool, + { + let old_len = self.len(); + + // Guard against us getting leaked (leak amplification) + unsafe { + self.set_len(0); + } + + DrainFilter { vec: self, idx: 0, del: 0, old_len, pred: filter, panic_flag: false } + } + /// Append an item to the vector. #[inline] pub fn push(&mut self, value: A::Item) { @@ -840,11 +1121,11 @@ let (mut ptr, mut len, cap) = self.triple_mut(); if *len == cap { self.reserve(1); - let &mut (heap_ptr, ref mut heap_len) = self.data.heap_mut(); + let (heap_ptr, heap_len) = self.data.heap_mut(); ptr = heap_ptr; len = heap_len; } - ptr::write(ptr.add(*len), value); + ptr::write(ptr.as_ptr().add(*len), value); *len += 1; } } @@ -854,6 +1135,7 @@ pub fn pop(&mut self) -> Option { unsafe { let (ptr, len_ptr, _) = self.triple_mut(); + let ptr: *const _ = ptr.as_ptr(); if *len_ptr == 0 { return None; } @@ -895,15 +1177,15 @@ /// Panics if `new_cap` is less than the vector's length pub fn try_grow(&mut self, new_cap: usize) -> Result<(), CollectionAllocErr> { unsafe { - let (ptr, &mut len, cap) = self.triple_mut(); let unspilled = !self.spilled(); + let (ptr, &mut len, cap) = self.triple_mut(); assert!(new_cap >= len); - if new_cap <= self.inline_size() { + if new_cap <= Self::inline_capacity() { if unspilled { return Ok(()); } self.data = SmallVecData::from_inline(MaybeUninit::uninit()); - ptr::copy_nonoverlapping(ptr, self.data.inline_mut(), len); + ptr::copy_nonoverlapping(ptr.as_ptr(), self.data.inline_mut().as_ptr(), len); self.capacity = len; deallocate(ptr, cap); } else if new_cap != cap { @@ -913,19 +1195,18 @@ if unspilled { new_alloc = NonNull::new(alloc::alloc::alloc(layout)) .ok_or(CollectionAllocErr::AllocErr { layout })? - .cast() - .as_ptr(); - ptr::copy_nonoverlapping(ptr, new_alloc, len); + .cast(); + ptr::copy_nonoverlapping(ptr.as_ptr(), new_alloc.as_ptr(), len); } else { // This should never fail since the same succeeded // when previously allocating `ptr`. let old_layout = layout_array::(cap)?; - let new_ptr = alloc::alloc::realloc(ptr as *mut u8, old_layout, layout.size()); + let new_ptr = + alloc::alloc::realloc(ptr.as_ptr() as *mut u8, old_layout, layout.size()); new_alloc = NonNull::new(new_ptr) .ok_or(CollectionAllocErr::AllocErr { layout })? - .cast() - .as_ptr(); + .cast(); } self.data = SmallVecData::from_heap(new_alloc, len); self.capacity = new_cap; @@ -994,8 +1275,8 @@ unsafe { let (ptr, len) = self.data.heap(); self.data = SmallVecData::from_inline(MaybeUninit::uninit()); - ptr::copy_nonoverlapping(ptr, self.data.inline_mut(), len); - deallocate(ptr, self.capacity); + ptr::copy_nonoverlapping(ptr.as_ptr(), self.data.inline_mut().as_ptr(), len); + deallocate(ptr.0, self.capacity); self.capacity = len; } } else if self.capacity() > len { @@ -1013,6 +1294,7 @@ pub fn truncate(&mut self, len: usize) { unsafe { let (ptr, len_ptr, _) = self.triple_mut(); + let ptr = ptr.as_ptr(); while len < *len_ptr { let last_index = *len_ptr - 1; *len_ptr = last_index; @@ -1060,11 +1342,11 @@ /// Panics if `index` is out of bounds. pub fn remove(&mut self, index: usize) -> A::Item { unsafe { - let (mut ptr, len_ptr, _) = self.triple_mut(); + let (ptr, len_ptr, _) = self.triple_mut(); let len = *len_ptr; assert!(index < len); *len_ptr = len - 1; - ptr = ptr.add(index); + let ptr = ptr.as_ptr().add(index); let item = ptr::read(ptr); ptr::copy(ptr.add(1), ptr, len - index - 1); item @@ -1078,7 +1360,8 @@ self.reserve(1); unsafe { - let (mut ptr, len_ptr, _) = self.triple_mut(); + let (ptr, len_ptr, _) = self.triple_mut(); + let mut ptr = ptr.as_ptr(); let len = *len_ptr; ptr = ptr.add(index); if index < len { @@ -1181,11 +1464,11 @@ /// Convert a SmallVec to a Vec, without reallocating if the SmallVec has already spilled onto /// the heap. - pub fn into_vec(self) -> Vec { + pub fn into_vec(mut self) -> Vec { if self.spilled() { unsafe { - let (ptr, len) = self.data.heap(); - let v = Vec::from_raw_parts(ptr, len, self.capacity); + let (ptr, &mut len) = self.data.heap_mut(); + let v = Vec::from_raw_parts(ptr.as_ptr(), len, self.capacity); mem::forget(self); v } @@ -1407,6 +1690,12 @@ /// } #[inline] pub unsafe fn from_raw_parts(ptr: *mut A::Item, length: usize, capacity: usize) -> SmallVec { + // SAFETY: We require caller to provide same ptr as we alloc + // and we never alloc null pointer. + let ptr = unsafe { + debug_assert!(!ptr.is_null(), "Called `from_raw_parts` with null pointer."); + NonNull::new_unchecked(ptr) + }; assert!(capacity > Self::inline_capacity()); SmallVec { capacity, @@ -1419,7 +1708,7 @@ // We shadow the slice method of the same name to avoid going through // `deref`, which creates an intermediate reference that may place // additional safety constraints on the contents of the slice. - self.triple().0 + self.triple().0.as_ptr() } /// Returns a raw mutable pointer to the vector's buffer. @@ -1427,7 +1716,7 @@ // We shadow the slice method of the same name to avoid going through // `deref_mut`, which creates an intermediate reference that may place // additional safety constraints on the contents of the slice. - self.triple_mut().0 + self.triple_mut().0.as_ptr() } } @@ -1455,7 +1744,8 @@ } } else { let mut b = slice.to_vec(); - let (ptr, cap) = (b.as_mut_ptr(), b.capacity()); + let cap = b.capacity(); + let ptr = NonNull::new(b.as_mut_ptr()).expect("Vec always contain non null pointers."); mem::forget(b); SmallVec { capacity: cap, @@ -1527,6 +1817,7 @@ let mut v = SmallVec::::new(); unsafe { let (ptr, len_ptr, _) = v.triple_mut(); + let ptr = ptr.as_ptr(); let mut local_len = SetLenOnDrop::new(len_ptr); for i in 0..n { @@ -1545,7 +1836,7 @@ fn deref(&self) -> &[A::Item] { unsafe { let (ptr, len, _) = self.triple(); - slice::from_raw_parts(ptr, len) + slice::from_raw_parts(ptr.as_ptr(), len) } } } @@ -1555,7 +1846,7 @@ fn deref_mut(&mut self) -> &mut [A::Item] { unsafe { let (ptr, &mut len, _) = self.triple_mut(); - slice::from_raw_parts_mut(ptr, len) + slice::from_raw_parts_mut(ptr.as_ptr(), len) } } } @@ -1764,6 +2055,7 @@ unsafe { let (ptr, len_ptr, cap) = self.triple_mut(); + let ptr = ptr.as_ptr(); let mut len = SetLenOnDrop::new(len_ptr); while len.get() < cap { if let Some(out) = iter.next() { @@ -1802,8 +2094,8 @@ fn drop(&mut self) { unsafe { if self.spilled() { - let (ptr, len) = self.data.heap(); - Vec::from_raw_parts(ptr, len, self.capacity); + let (ptr, &mut len) = self.data.heap_mut(); + Vec::from_raw_parts(ptr.as_ptr(), len, self.capacity); } else { ptr::drop_in_place(&mut self[..]); } @@ -1816,8 +2108,8 @@ fn drop(&mut self) { unsafe { if self.spilled() { - let (ptr, len) = self.data.heap(); - Vec::from_raw_parts(ptr, len, self.capacity); + let (ptr, &mut len) = self.data.heap_mut(); + drop(Vec::from_raw_parts(ptr.as_ptr(), len, self.capacity)); } else { ptr::drop_in_place(&mut self[..]); } @@ -2130,3 +2422,27 @@ SmallVec::from_slice(self) } } + +// Immutable counterpart for `NonNull`. +#[repr(transparent)] +struct ConstNonNull(NonNull); + +impl ConstNonNull { + #[inline] + fn new(ptr: *const T) -> Option { + NonNull::new(ptr as *mut T).map(Self) + } + #[inline] + fn as_ptr(self) -> *const T { + self.0.as_ptr() + } +} + +impl Clone for ConstNonNull { + #[inline] + fn clone(&self) -> Self { + *self + } +} + +impl Copy for ConstNonNull {} diff -Nru temporalio-1.3.0/vendor/smallvec/src/tests.rs temporalio-1.3.0/vendor/smallvec/src/tests.rs --- temporalio-1.3.0/vendor/smallvec/src/tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/smallvec/src/tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -983,3 +983,34 @@ b.clone_from(&c); assert_eq!(&*b, &[20, 21, 22]); } + +#[test] +fn test_size() { + use core::mem::size_of; + assert_eq!(24, size_of::>()); +} + +#[cfg(feature = "drain_filter")] +#[test] +fn drain_filter() { + let mut a: SmallVec<[u8; 2]> = smallvec![1u8, 2, 3, 4, 5, 6, 7, 8]; + + let b: SmallVec<[u8; 2]> = a.drain_filter(|x| *x % 3 == 0).collect(); + + assert_eq!(a, SmallVec::<[u8; 2]>::from_slice(&[1u8, 2, 4, 5, 7, 8])); + assert_eq!(b, SmallVec::<[u8; 2]>::from_slice(&[3u8, 6])); +} + +#[cfg(feature = "drain_keep_rest")] +#[test] +fn drain_keep_rest() { + let mut a: SmallVec<[i32; 3]> = smallvec![1i32, 2, 3, 4, 5, 6, 7, 8]; + let mut df = a.drain_filter(|x| *x % 2 == 0); + + assert_eq!(df.next().unwrap(), 2); + assert_eq!(df.next().unwrap(), 4); + + df.keep_rest(); + + assert_eq!(a, SmallVec::<[i32; 3]>::from_slice(&[1i32, 3, 5, 6, 7, 8])); +} diff -Nru temporalio-1.3.0/vendor/smallvec/tests/debugger_visualizer.rs temporalio-1.3.0/vendor/smallvec/tests/debugger_visualizer.rs --- temporalio-1.3.0/vendor/smallvec/tests/debugger_visualizer.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/smallvec/tests/debugger_visualizer.rs 2023-10-30 19:40:00.000000000 +0000 @@ -19,14 +19,14 @@ dx sv "#, expected_statements = r#" -sv : { len=0x2 } [Type: smallvec::SmallVec >] +sv : { len=0x2 is_inline=true } [Type: smallvec::SmallVec >] [] [Type: smallvec::SmallVec >] [capacity] : 4 [len] : 0x2 [Type: unsigned __int64] [0] : 1 [Type: int] [1] : 2 [Type: int] -sv : { len=0x5 } [Type: smallvec::SmallVec >] +sv : { len=0x5 is_inline=false } [Type: smallvec::SmallVec >] [] [Type: smallvec::SmallVec >] [capacity] : 0x8 [Type: unsigned __int64] [len] : 0x5 [Type: unsigned __int64] @@ -36,7 +36,7 @@ [3] : 4 [Type: int] [4] : 5 [Type: int] -sv : { len=0x5 } [Type: smallvec::SmallVec >] +sv : { len=0x5 is_inline=false } [Type: smallvec::SmallVec >] [] [Type: smallvec::SmallVec >] [capacity] : 0x8 [Type: unsigned __int64] [len] : 0x5 [Type: unsigned __int64] diff -Nru temporalio-1.3.0/vendor/socket2/.cargo-checksum.json temporalio-1.3.0/vendor/socket2/.cargo-checksum.json --- temporalio-1.3.0/vendor/socket2/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"a923f376ccc72eace3803c02342d6ef8c1d0fde8af4fcdb3e86bc55e4b31e800","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"b3fadb399050f2755504188e81dec8150f6a1eba86b6410a9ce9c1ea0c850287","src/lib.rs":"0805b736e0cde0ae1d064ff1887f8ae37b219d17309d427be122d5ccd51c116b","src/sockaddr.rs":"a2b7f7c8959b8ff1546d1f1b38f305b22607d7a59c0698e5a8f9cfd81e4b8ede","src/socket.rs":"bd938d210a9763b0ed3395b192698c36c4f88e44adb8f3aaf12a6743efeffa2a","src/sockref.rs":"02de263cce039aaddaee5d6c2bb3940bdfae5697a3fc9df47d226fb3cac03cd9","src/sys/unix.rs":"6db80abf67e6a4555280eba076371798cab333fcb4729fab2a460a5d709f9667","src/sys/windows.rs":"d271c768295c0f84e79f6286aa783ce15ab0265f150195824fdcd10003dada33"},"package":"64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"} \ No newline at end of file +{"files":{"Cargo.toml":"295835834de15ff318e7962ae780888a9cc32e7677442cc2f0e9bd1d5ae78579","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"5b9d3a55525334c4abdb992a49f8dd4f9853f3c061e905334c56ab1dba1bb3ff","src/lib.rs":"57b05305e77fc03dcfdbaa2f5309229a4ea5f61f4f29325c7c629e1f8d092b33","src/sockaddr.rs":"ee416fcfbffbf9c423b5e743f634653a905fb8637ba84739bca8050fcf2049ff","src/socket.rs":"49bf1fe386f82735e5fb7de6c1044fc8ad96f74d40cba250351cfe42a72f8d1f","src/sockref.rs":"7e16a5300cdd003e591486cb3bd384bdb92044e940e3ddf327da27935dc51e22","src/sys/unix.rs":"bf3af8d705de88373c542ccca716951896e44026ec366000f4608a2fd59f7861","src/sys/windows.rs":"7e4e700282cb480e99dc0603a7cdcd7111cb60a50cafc28d62247df570b1694b"},"package":"2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/socket2/Cargo.toml temporalio-1.3.0/vendor/socket2/Cargo.toml --- temporalio-1.3.0/vendor/socket2/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,9 +10,10 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" +edition = "2021" +rust-version = "1.63" name = "socket2" -version = "0.4.9" +version = "0.5.3" authors = [ "Alex Crichton ", "Thomas de Zeeuw ", @@ -49,6 +50,22 @@ "--cfg", "docsrs", ] +targets = [ + "aarch64-apple-ios", + "aarch64-linux-android", + "x86_64-apple-darwin", + "x86_64-unknown-fuchsia", + "x86_64-pc-windows-msvc", + "x86_64-pc-solaris", + "x86_64-unknown-freebsd", + "x86_64-unknown-illumos", + "x86_64-unknown-linux-gnu", + "x86_64-unknown-linux-musl", + "x86_64-unknown-netbsd", + "x86_64-unknown-redox", + "armv7-linux-androideabi", + "i686-linux-android", +] [package.metadata.playground] features = ["all"] @@ -57,12 +74,14 @@ all = [] [target."cfg(unix)".dependencies.libc] -version = "0.2.139" +version = "0.2.141" -[target."cfg(windows)".dependencies.winapi] -version = "0.3.9" +[target."cfg(windows)".dependencies.windows-sys] +version = "0.48" features = [ - "handleapi", - "ws2ipdef", - "ws2tcpip", + "Win32_Foundation", + "Win32_Networking_WinSock", + "Win32_System_IO", + "Win32_System_Threading", + "Win32_System_WindowsProgramming", ] diff -Nru temporalio-1.3.0/vendor/socket2/README.md temporalio-1.3.0/vendor/socket2/README.md --- temporalio-1.3.0/vendor/socket2/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -19,12 +19,13 @@ [API documentation]: https://docs.rs/socket2 -# Two branches +# Branches -Currently Socket2 supports two versions: v0.4 and v0.3. Version 0.4 is developed -in the master branch, version 0.3 in the [v0.3.x branch]. +Currently Socket2 supports two versions: v0.5 and v0.4. Version 0.5 is being +developed in the master branch. Version 0.4 is developed in the [v0.4.x branch] +branch. -[v0.3.x branch]: https://github.com/rust-lang/socket2/tree/v0.3.x +[v0.4.x branch]: https://github.com/rust-lang/socket2/tree/v0.4.x # OS support @@ -64,7 +65,7 @@ # Minimum Supported Rust Version (MSRV) -Socket2 uses 1.46.0 as MSRV. +Socket2 uses 1.63.0 as MSRV. # License diff -Nru temporalio-1.3.0/vendor/socket2/src/lib.rs temporalio-1.3.0/vendor/socket2/src/lib.rs --- temporalio-1.3.0/vendor/socket2/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -50,7 +50,6 @@ //! This crate has a single feature `all`, which enables all functions even ones //! that are not available on all OSs. -#![doc(html_root_url = "https://docs.rs/socket2/0.4")] #![deny(missing_docs, missing_debug_implementations, rust_2018_idioms)] // Show required OS/features on docs.rs. #![cfg_attr(docsrs, feature(doc_cfg))] @@ -78,7 +77,7 @@ $(#[$target: meta])* // The flag(s) to check. // Need to specific the libc crate because Windows doesn't use - // `libc` but `winapi`. + // `libc` but `windows_sys`. $libc: ident :: $flag: ident ),+ $(,)* ) => { @@ -89,7 +88,7 @@ $(#[$target])* $libc :: $flag => stringify!($flag), )+ - n => return write!(f, "{}", n), + n => return write!(f, "{n}"), }; f.write_str(string) } @@ -115,6 +114,56 @@ }; } +/// Link to online documentation for (almost) all supported OSs. +#[rustfmt::skip] +macro_rules! man_links { + // Links to all OSs. + ($syscall: tt ( $section: tt ) ) => { + concat!( + man_links!(__ intro), + man_links!(__ unix $syscall($section)), + man_links!(__ windows $syscall($section)), + ) + }; + // Links to Unix-like OSs. + (unix: $syscall: tt ( $section: tt ) ) => { + concat!( + man_links!(__ intro), + man_links!(__ unix $syscall($section)), + ) + }; + // Links to Windows only. + (windows: $syscall: tt ( $section: tt ) ) => { + concat!( + man_links!(__ intro), + man_links!(__ windows $syscall($section)), + ) + }; + // Internals. + (__ intro) => { + "\n\nAdditional documentation can be found in manual of the OS:\n\n" + }; + // List for Unix-like OSs. + (__ unix $syscall: tt ( $section: tt ) ) => { + concat!( + " * DragonFly BSD: \n", + " * FreeBSD: \n", + " * Linux: \n", + " * macOS: (archived, actually for iOS)\n", + " * NetBSD: \n", + " * OpenBSD: \n", + " * iOS: (archived)\n", + " * illumos: \n", + ) + }; + // List for Window (so just Windows). + (__ windows $syscall: tt ( $section: tt ) ) => { + concat!( + " * Windows: \n", + ) + }; +} + mod sockaddr; mod socket; mod sockref; @@ -160,6 +209,9 @@ /// Domain for IPv6 communication, corresponding to `AF_INET6`. pub const IPV6: Domain = Domain(sys::AF_INET6); + /// Domain for Unix socket communication, corresponding to `AF_UNIX`. + pub const UNIX: Domain = Domain(sys::AF_UNIX); + /// Returns the correct domain for `address`. pub const fn for_address(address: SocketAddr) -> Domain { match address { @@ -204,6 +256,13 @@ /// Used for protocols such as UDP. pub const DGRAM: Type = Type(sys::SOCK_DGRAM); + /// Type corresponding to `SOCK_DCCP`. + /// + /// Used for the DCCP protocol. + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub const DCCP: Type = Type(sys::SOCK_DCCP); + /// Type corresponding to `SOCK_SEQPACKET`. #[cfg(feature = "all")] #[cfg_attr(docsrs, doc(cfg(feature = "all")))] @@ -249,6 +308,31 @@ /// Protocol corresponding to `UDP`. pub const UDP: Protocol = Protocol(sys::IPPROTO_UDP); + + #[cfg(target_os = "linux")] + /// Protocol corresponding to `MPTCP`. + pub const MPTCP: Protocol = Protocol(sys::IPPROTO_MPTCP); + + /// Protocol corresponding to `DCCP`. + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub const DCCP: Protocol = Protocol(sys::IPPROTO_DCCP); + + /// Protocol corresponding to `SCTP`. + #[cfg(all(feature = "all", any(target_os = "freebsd", target_os = "linux")))] + pub const SCTP: Protocol = Protocol(sys::IPPROTO_SCTP); + + /// Protocol corresponding to `UDPLITE`. + #[cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "linux", + ) + ))] + pub const UDPLITE: Protocol = Protocol(sys::IPPROTO_UDPLITE); } impl From for Protocol { @@ -394,35 +478,35 @@ /// /// Some platforms specify this value in seconds, so sub-second /// specifications may be omitted. - #[cfg(all( - feature = "all", - any( + #[cfg(any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "ios", + target_os = "linux", + target_os = "macos", + target_os = "netbsd", + target_os = "tvos", + target_os = "watchos", + target_os = "windows", + ))] + #[cfg_attr( + docsrs, + doc(cfg(any( target_os = "android", target_os = "dragonfly", target_os = "freebsd", target_os = "fuchsia", target_os = "illumos", + target_os = "ios", target_os = "linux", + target_os = "macos", target_os = "netbsd", - target_vendor = "apple", - windows, - ) - ))] - #[cfg_attr( - docsrs, - doc(cfg(all( - feature = "all", - any( - target_os = "android", - target_os = "dragonfly", - target_os = "freebsd", - target_os = "fuchsia", - target_os = "illumos", - target_os = "linux", - target_os = "netbsd", - target_vendor = "apple", - windows, - ) + target_os = "tvos", + target_os = "watchos", + target_os = "windows", ))) )] pub const fn with_interval(self, interval: Duration) -> Self { @@ -439,15 +523,17 @@ #[cfg(all( feature = "all", any( - doc, target_os = "android", target_os = "dragonfly", target_os = "freebsd", target_os = "fuchsia", target_os = "illumos", + target_os = "ios", target_os = "linux", + target_os = "macos", target_os = "netbsd", - target_vendor = "apple", + target_os = "tvos", + target_os = "watchos", ) ))] #[cfg_attr( @@ -460,9 +546,12 @@ target_os = "freebsd", target_os = "fuchsia", target_os = "illumos", + target_os = "ios", target_os = "linux", + target_os = "macos", target_os = "netbsd", - target_vendor = "apple", + target_os = "tvos", + target_os = "watchos", ) ))) )] diff -Nru temporalio-1.3.0/vendor/socket2/src/sockaddr.rs temporalio-1.3.0/vendor/socket2/src/sockaddr.rs --- temporalio-1.3.0/vendor/socket2/src/sockaddr.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2/src/sockaddr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,13 +1,17 @@ +use std::hash::Hash; use std::mem::{self, size_of, MaybeUninit}; use std::net::{SocketAddr, SocketAddrV4, SocketAddrV6}; -use std::{fmt, io}; +use std::path::Path; +use std::{fmt, io, ptr}; + +#[cfg(windows)] +use windows_sys::Win32::Networking::WinSock::SOCKADDR_IN6_0; use crate::sys::{ - sa_family_t, sockaddr, sockaddr_in, sockaddr_in6, sockaddr_storage, socklen_t, AF_INET, - AF_INET6, + c_int, sa_family_t, sockaddr, sockaddr_in, sockaddr_in6, sockaddr_storage, socklen_t, AF_INET, + AF_INET6, AF_UNIX, }; -#[cfg(windows)] -use winapi::shared::ws2ipdef::SOCKADDR_IN6_LH_u; +use crate::Domain; /// The address of a socket. /// @@ -100,7 +104,7 @@ /// /// // Initialise a `SocketAddr` byte calling `getsockname(2)`. /// let (_, address) = unsafe { - /// SockAddr::init(|addr_storage, len| { + /// SockAddr::try_init(|addr_storage, len| { /// // The `getsockname(2)` system call will intiliase `storage` for /// // us, setting `len` to the correct length. /// if libc::getsockname(socket.as_raw_fd(), addr_storage.cast(), len) == -1 { @@ -115,7 +119,7 @@ /// # Ok(()) /// # } /// ``` - pub unsafe fn init(init: F) -> io::Result<(T, SockAddr)> + pub unsafe fn try_init(init: F) -> io::Result<(T, SockAddr)> where F: FnOnce(*mut sockaddr_storage, *mut socklen_t) -> io::Result, { @@ -139,11 +143,36 @@ }) } + /// Constructs a `SockAddr` with the family `AF_UNIX` and the provided path. + /// + /// Returns an error if the path is longer than `SUN_LEN`. + pub fn unix

(path: P) -> io::Result + where + P: AsRef, + { + crate::sys::unix_sockaddr(path.as_ref()) + } + + /// Set the length of the address. + /// + /// # Safety + /// + /// Caller must ensure that the address up to `length` bytes are properly + /// initialised. + pub unsafe fn set_length(&mut self, length: socklen_t) { + self.len = length; + } + /// Returns this address's family. pub const fn family(&self) -> sa_family_t { self.storage.ss_family } + /// Returns this address's `Domain`. + pub const fn domain(&self) -> Domain { + Domain(self.storage.ss_family as c_int) + } + /// Returns the size of this address in bytes. pub const fn len(&self) -> socklen_t { self.len @@ -151,7 +180,29 @@ /// Returns a raw pointer to the address. pub const fn as_ptr(&self) -> *const sockaddr { - &self.storage as *const _ as *const _ + ptr::addr_of!(self.storage).cast() + } + + /// Retuns the address as the storage. + pub const fn as_storage(self) -> sockaddr_storage { + self.storage + } + + /// Returns true if this address is in the `AF_INET` (IPv4) family, false otherwise. + pub const fn is_ipv4(&self) -> bool { + self.storage.ss_family == AF_INET as sa_family_t + } + + /// Returns true if this address is in the `AF_INET6` (IPv6) family, false + /// otherwise. + pub const fn is_ipv6(&self) -> bool { + self.storage.ss_family == AF_INET6 as sa_family_t + } + + /// Returns true if this address is of a unix socket (for local interprocess communication), + /// i.e. it is from the `AF_UNIX` family, false otherwise. + pub fn is_unix(&self) -> bool { + self.storage.ss_family == AF_UNIX as sa_family_t } /// Returns a raw pointer to the address storage. @@ -164,16 +215,16 @@ /// or `AF_INET6` (IPv6) family, otherwise returns `None`. pub fn as_socket(&self) -> Option { if self.storage.ss_family == AF_INET as sa_family_t { - // Safety: if the ss_family field is AF_INET then storage must be a sockaddr_in. - let addr = unsafe { &*(&self.storage as *const _ as *const sockaddr_in) }; - + // SAFETY: if the `ss_family` field is `AF_INET` then storage must + // be a `sockaddr_in`. + let addr = unsafe { &*(ptr::addr_of!(self.storage).cast::()) }; let ip = crate::sys::from_in_addr(addr.sin_addr); let port = u16::from_be(addr.sin_port); Some(SocketAddr::V4(SocketAddrV4::new(ip, port))) } else if self.storage.ss_family == AF_INET6 as sa_family_t { - // Safety: if the ss_family field is AF_INET6 then storage must be a sockaddr_in6. - let addr = unsafe { &*(&self.storage as *const _ as *const sockaddr_in6) }; - + // SAFETY: if the `ss_family` field is `AF_INET6` then storage must + // be a `sockaddr_in6`. + let addr = unsafe { &*(ptr::addr_of!(self.storage).cast::()) }; let ip = crate::sys::from_in6_addr(addr.sin6_addr); let port = u16::from_be(addr.sin6_port); Some(SocketAddr::V6(SocketAddrV6::new( @@ -184,7 +235,7 @@ addr.sin6_scope_id, #[cfg(windows)] unsafe { - *addr.u.sin6_scope_id() + addr.Anonymous.sin6_scope_id }, ))) } else { @@ -209,6 +260,14 @@ _ => None, } } + + /// Returns the initialised storage bytes. + fn as_bytes(&self) -> &[u8] { + // SAFETY: `self.storage` is a C struct which can always be treated a + // slice of bytes. Futhermore we ensure we don't read any unitialised + // bytes by using `self.len`. + unsafe { std::slice::from_raw_parts(self.as_ptr().cast(), self.len as usize) } + } } impl From for SockAddr { @@ -222,70 +281,43 @@ impl From for SockAddr { fn from(addr: SocketAddrV4) -> SockAddr { - let sockaddr_in = sockaddr_in { - sin_family: AF_INET as sa_family_t, - sin_port: addr.port().to_be(), - sin_addr: crate::sys::to_in_addr(addr.ip()), - sin_zero: Default::default(), - #[cfg(any( - target_os = "dragonfly", - target_os = "freebsd", - target_os = "haiku", - target_os = "ios", - target_os = "macos", - target_os = "netbsd", - target_os = "openbsd" - ))] - sin_len: 0, + // SAFETY: a `sockaddr_storage` of all zeros is valid. + let mut storage = unsafe { mem::zeroed::() }; + let len = { + let storage = unsafe { &mut *ptr::addr_of_mut!(storage).cast::() }; + storage.sin_family = AF_INET as sa_family_t; + storage.sin_port = addr.port().to_be(); + storage.sin_addr = crate::sys::to_in_addr(addr.ip()); + storage.sin_zero = Default::default(); + mem::size_of::() as socklen_t }; - let mut storage = MaybeUninit::::zeroed(); - // Safety: A `sockaddr_in` is memory compatible with a `sockaddr_storage` - unsafe { (storage.as_mut_ptr() as *mut sockaddr_in).write(sockaddr_in) }; - SockAddr { - storage: unsafe { storage.assume_init() }, - len: mem::size_of::() as socklen_t, - } + SockAddr { storage, len } } } impl From for SockAddr { fn from(addr: SocketAddrV6) -> SockAddr { - #[cfg(windows)] - let u = unsafe { - let mut u = mem::zeroed::(); - *u.sin6_scope_id_mut() = addr.scope_id(); - u - }; - - let sockaddr_in6 = sockaddr_in6 { - sin6_family: AF_INET6 as sa_family_t, - sin6_port: addr.port().to_be(), - sin6_addr: crate::sys::to_in6_addr(addr.ip()), - sin6_flowinfo: addr.flowinfo(), + // SAFETY: a `sockaddr_storage` of all zeros is valid. + let mut storage = unsafe { mem::zeroed::() }; + let len = { + let storage = unsafe { &mut *ptr::addr_of_mut!(storage).cast::() }; + storage.sin6_family = AF_INET6 as sa_family_t; + storage.sin6_port = addr.port().to_be(); + storage.sin6_addr = crate::sys::to_in6_addr(addr.ip()); + storage.sin6_flowinfo = addr.flowinfo(); #[cfg(unix)] - sin6_scope_id: addr.scope_id(), + { + storage.sin6_scope_id = addr.scope_id(); + } #[cfg(windows)] - u, - #[cfg(any( - target_os = "dragonfly", - target_os = "freebsd", - target_os = "haiku", - target_os = "ios", - target_os = "macos", - target_os = "netbsd", - target_os = "openbsd" - ))] - sin6_len: 0, - #[cfg(any(target_os = "solaris", target_os = "illumos"))] - __sin6_src_id: 0, + { + storage.Anonymous = SOCKADDR_IN6_0 { + sin6_scope_id: addr.scope_id(), + }; + } + mem::size_of::() as socklen_t }; - let mut storage = MaybeUninit::::zeroed(); - // Safety: A `sockaddr_in6` is memory compatible with a `sockaddr_storage` - unsafe { (storage.as_mut_ptr() as *mut sockaddr_in6).write(sockaddr_in6) }; - SockAddr { - storage: unsafe { storage.assume_init() }, - len: mem::size_of::() as socklen_t, - } + SockAddr { storage, len } } } @@ -300,9 +332,11 @@ target_os = "ios", target_os = "macos", target_os = "netbsd", + target_os = "nto", target_os = "openbsd", + target_os = "tvos", target_os = "vxworks", - target_os = "nto", + target_os = "watchos", ))] f.field("ss_len", &self.storage.ss_len); f.field("ss_family", &self.storage.ss_family) @@ -311,40 +345,200 @@ } } -#[test] -fn ipv4() { - use std::net::Ipv4Addr; - let std = SocketAddrV4::new(Ipv4Addr::new(1, 2, 3, 4), 9876); - let addr = SockAddr::from(std); - assert_eq!(addr.family(), AF_INET as sa_family_t); - assert_eq!(addr.len(), size_of::() as socklen_t); - assert_eq!(addr.as_socket(), Some(SocketAddr::V4(std))); - assert_eq!(addr.as_socket_ipv4(), Some(std)); - assert!(addr.as_socket_ipv6().is_none()); - - let addr = SockAddr::from(SocketAddr::from(std)); - assert_eq!(addr.family(), AF_INET as sa_family_t); - assert_eq!(addr.len(), size_of::() as socklen_t); - assert_eq!(addr.as_socket(), Some(SocketAddr::V4(std))); - assert_eq!(addr.as_socket_ipv4(), Some(std)); - assert!(addr.as_socket_ipv6().is_none()); +impl PartialEq for SockAddr { + fn eq(&self, other: &Self) -> bool { + self.as_bytes() == other.as_bytes() + } +} + +impl Eq for SockAddr {} + +impl Hash for SockAddr { + fn hash(&self, state: &mut H) { + self.as_bytes().hash(state); + } } -#[test] -fn ipv6() { - use std::net::Ipv6Addr; - let std = SocketAddrV6::new(Ipv6Addr::new(1, 2, 3, 4, 5, 6, 7, 8), 9876, 11, 12); - let addr = SockAddr::from(std); - assert_eq!(addr.family(), AF_INET6 as sa_family_t); - assert_eq!(addr.len(), size_of::() as socklen_t); - assert_eq!(addr.as_socket(), Some(SocketAddr::V6(std))); - assert!(addr.as_socket_ipv4().is_none()); - assert_eq!(addr.as_socket_ipv6(), Some(std)); - - let addr = SockAddr::from(SocketAddr::from(std)); - assert_eq!(addr.family(), AF_INET6 as sa_family_t); - assert_eq!(addr.len(), size_of::() as socklen_t); - assert_eq!(addr.as_socket(), Some(SocketAddr::V6(std))); - assert!(addr.as_socket_ipv4().is_none()); - assert_eq!(addr.as_socket_ipv6(), Some(std)); +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn ipv4() { + use std::net::Ipv4Addr; + let std = SocketAddrV4::new(Ipv4Addr::new(1, 2, 3, 4), 9876); + let addr = SockAddr::from(std); + assert!(addr.is_ipv4()); + assert!(!addr.is_ipv6()); + assert!(!addr.is_unix()); + assert_eq!(addr.family(), AF_INET as sa_family_t); + assert_eq!(addr.domain(), Domain::IPV4); + assert_eq!(addr.len(), size_of::() as socklen_t); + assert_eq!(addr.as_socket(), Some(SocketAddr::V4(std))); + assert_eq!(addr.as_socket_ipv4(), Some(std)); + assert!(addr.as_socket_ipv6().is_none()); + + let addr = SockAddr::from(SocketAddr::from(std)); + assert_eq!(addr.family(), AF_INET as sa_family_t); + assert_eq!(addr.len(), size_of::() as socklen_t); + assert_eq!(addr.as_socket(), Some(SocketAddr::V4(std))); + assert_eq!(addr.as_socket_ipv4(), Some(std)); + assert!(addr.as_socket_ipv6().is_none()); + #[cfg(unix)] + { + assert!(addr.as_pathname().is_none()); + assert!(addr.as_abstract_namespace().is_none()); + } + } + + #[test] + fn ipv6() { + use std::net::Ipv6Addr; + let std = SocketAddrV6::new(Ipv6Addr::new(1, 2, 3, 4, 5, 6, 7, 8), 9876, 11, 12); + let addr = SockAddr::from(std); + assert!(addr.is_ipv6()); + assert!(!addr.is_ipv4()); + assert!(!addr.is_unix()); + assert_eq!(addr.family(), AF_INET6 as sa_family_t); + assert_eq!(addr.domain(), Domain::IPV6); + assert_eq!(addr.len(), size_of::() as socklen_t); + assert_eq!(addr.as_socket(), Some(SocketAddr::V6(std))); + assert!(addr.as_socket_ipv4().is_none()); + assert_eq!(addr.as_socket_ipv6(), Some(std)); + + let addr = SockAddr::from(SocketAddr::from(std)); + assert_eq!(addr.family(), AF_INET6 as sa_family_t); + assert_eq!(addr.len(), size_of::() as socklen_t); + assert_eq!(addr.as_socket(), Some(SocketAddr::V6(std))); + assert!(addr.as_socket_ipv4().is_none()); + assert_eq!(addr.as_socket_ipv6(), Some(std)); + #[cfg(unix)] + { + assert!(addr.as_pathname().is_none()); + assert!(addr.as_abstract_namespace().is_none()); + } + } + + #[test] + fn ipv4_eq() { + use std::net::Ipv4Addr; + + let std1 = SocketAddrV4::new(Ipv4Addr::new(1, 2, 3, 4), 9876); + let std2 = SocketAddrV4::new(Ipv4Addr::new(5, 6, 7, 8), 8765); + + test_eq( + SockAddr::from(std1), + SockAddr::from(std1), + SockAddr::from(std2), + ); + } + + #[test] + fn ipv4_hash() { + use std::net::Ipv4Addr; + + let std1 = SocketAddrV4::new(Ipv4Addr::new(1, 2, 3, 4), 9876); + let std2 = SocketAddrV4::new(Ipv4Addr::new(5, 6, 7, 8), 8765); + + test_hash( + SockAddr::from(std1), + SockAddr::from(std1), + SockAddr::from(std2), + ); + } + + #[test] + fn ipv6_eq() { + use std::net::Ipv6Addr; + + let std1 = SocketAddrV6::new(Ipv6Addr::new(1, 2, 3, 4, 5, 6, 7, 8), 9876, 11, 12); + let std2 = SocketAddrV6::new(Ipv6Addr::new(3, 4, 5, 6, 7, 8, 9, 0), 7654, 13, 14); + + test_eq( + SockAddr::from(std1), + SockAddr::from(std1), + SockAddr::from(std2), + ); + } + + #[test] + fn ipv6_hash() { + use std::net::Ipv6Addr; + + let std1 = SocketAddrV6::new(Ipv6Addr::new(1, 2, 3, 4, 5, 6, 7, 8), 9876, 11, 12); + let std2 = SocketAddrV6::new(Ipv6Addr::new(3, 4, 5, 6, 7, 8, 9, 0), 7654, 13, 14); + + test_hash( + SockAddr::from(std1), + SockAddr::from(std1), + SockAddr::from(std2), + ); + } + + #[test] + fn ipv4_ipv6_eq() { + use std::net::Ipv4Addr; + use std::net::Ipv6Addr; + + let std1 = SocketAddrV4::new(Ipv4Addr::new(1, 2, 3, 4), 9876); + let std2 = SocketAddrV6::new(Ipv6Addr::new(1, 2, 3, 4, 5, 6, 7, 8), 9876, 11, 12); + + test_eq( + SockAddr::from(std1), + SockAddr::from(std1), + SockAddr::from(std2), + ); + + test_eq( + SockAddr::from(std2), + SockAddr::from(std2), + SockAddr::from(std1), + ); + } + + #[test] + fn ipv4_ipv6_hash() { + use std::net::Ipv4Addr; + use std::net::Ipv6Addr; + + let std1 = SocketAddrV4::new(Ipv4Addr::new(1, 2, 3, 4), 9876); + let std2 = SocketAddrV6::new(Ipv6Addr::new(1, 2, 3, 4, 5, 6, 7, 8), 9876, 11, 12); + + test_hash( + SockAddr::from(std1), + SockAddr::from(std1), + SockAddr::from(std2), + ); + + test_hash( + SockAddr::from(std2), + SockAddr::from(std2), + SockAddr::from(std1), + ); + } + + #[allow(clippy::eq_op)] // allow a0 == a0 check + fn test_eq(a0: SockAddr, a1: SockAddr, b: SockAddr) { + assert!(a0 == a0); + assert!(a0 == a1); + assert!(a1 == a0); + assert!(a0 != b); + assert!(b != a0); + } + + fn test_hash(a0: SockAddr, a1: SockAddr, b: SockAddr) { + assert!(calculate_hash(&a0) == calculate_hash(&a0)); + assert!(calculate_hash(&a0) == calculate_hash(&a1)); + // technically unequal values can have the same hash, in this case x != z and both have different hashes + assert!(calculate_hash(&a0) != calculate_hash(&b)); + } + + fn calculate_hash(x: &SockAddr) -> u64 { + use std::collections::hash_map::DefaultHasher; + use std::hash::Hasher; + + let mut hasher = DefaultHasher::new(); + x.hash(&mut hasher); + hasher.finish() + } } diff -Nru temporalio-1.3.0/vendor/socket2/src/socket.rs temporalio-1.3.0/vendor/socket2/src/socket.rs --- temporalio-1.3.0/vendor/socket2/src/socket.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2/src/socket.rs 2023-10-30 19:40:00.000000000 +0000 @@ -57,13 +57,12 @@ /// use std::net::{SocketAddr, TcpListener}; /// use socket2::{Socket, Domain, Type}; /// -/// // create a TCP listener bound to two addresses -/// let socket = Socket::new(Domain::IPV4, Type::STREAM, None)?; +/// // create a TCP listener +/// let socket = Socket::new(Domain::IPV6, Type::STREAM, None)?; /// /// let address: SocketAddr = "[::1]:12345".parse().unwrap(); /// let address = address.into(); /// socket.bind(&address)?; -/// socket.bind(&address)?; /// socket.listen(128)?; /// /// let listener: TcpListener = socket.into(); @@ -126,6 +125,7 @@ /// the socket is made non-inheritable. /// /// [`Socket::new_raw`] can be used if you don't want these flags to be set. + #[doc = man_links!(socket(2))] pub fn new(domain: Domain, ty: Type, protocol: Option) -> io::Result { let ty = set_common_type(ty); Socket::new_raw(domain, ty, protocol).and_then(set_common_flags) @@ -136,7 +136,7 @@ /// This function corresponds to `socket(2)` on Unix and `WSASocketW` on /// Windows and simply creates a new socket, no other configuration is done. pub fn new_raw(domain: Domain, ty: Type, protocol: Option) -> io::Result { - let protocol = protocol.map(|p| p.0).unwrap_or(0); + let protocol = protocol.map_or(0, |p| p.0); sys::socket(domain.0, ty.0, protocol).map(Socket::from_raw) } @@ -146,7 +146,8 @@ /// /// This function sets the same flags as in done for [`Socket::new`], /// [`Socket::pair_raw`] can be used if you don't want to set those flags. - #[cfg(any(doc, all(feature = "all", unix)))] + #[doc = man_links!(unix: socketpair(2))] + #[cfg(all(feature = "all", unix))] #[cfg_attr(docsrs, doc(cfg(all(feature = "all", unix))))] pub fn pair( domain: Domain, @@ -163,14 +164,14 @@ /// Creates a pair of sockets which are connected to each other. /// /// This function corresponds to `socketpair(2)`. - #[cfg(any(doc, all(feature = "all", unix)))] + #[cfg(all(feature = "all", unix))] #[cfg_attr(docsrs, doc(cfg(all(feature = "all", unix))))] pub fn pair_raw( domain: Domain, ty: Type, protocol: Option, ) -> io::Result<(Socket, Socket)> { - let protocol = protocol.map(|p| p.0).unwrap_or(0); + let protocol = protocol.map_or(0, |p| p.0); sys::socketpair(domain.0, ty.0, protocol) .map(|[a, b]| (Socket::from_raw(a), Socket::from_raw(b))) } @@ -179,6 +180,7 @@ /// /// This function directly corresponds to the `bind(2)` function on Windows /// and Unix. + #[doc = man_links!(bind(2))] pub fn bind(&self, address: &SockAddr) -> io::Result<()> { sys::bind(self.as_raw(), address) } @@ -190,6 +192,7 @@ /// /// An error will be returned if `listen` or `connect` has already been /// called on this builder. + #[doc = man_links!(connect(2))] /// /// # Notes /// @@ -244,6 +247,7 @@ /// /// An error will be returned if `listen` or `connect` has already been /// called on this builder. + #[doc = man_links!(listen(2))] pub fn listen(&self, backlog: c_int) -> io::Result<()> { sys::listen(self.as_raw(), backlog) } @@ -255,6 +259,7 @@ /// /// This function sets the same flags as in done for [`Socket::new`], /// [`Socket::accept_raw`] can be used if you don't want to set those flags. + #[doc = man_links!(accept(2))] pub fn accept(&self) -> io::Result<(Socket, SockAddr)> { // Use `accept4` on platforms that support it. #[cfg(any( @@ -301,6 +306,10 @@ /// Returns the socket address of the local half of this socket. /// + /// This function directly corresponds to the `getsockname(2)` function on + /// Windows and Unix. + #[doc = man_links!(getsockname(2))] + /// /// # Notes /// /// Depending on the OS this may return an error if the socket is not @@ -313,6 +322,10 @@ /// Returns the socket address of the remote peer of this socket. /// + /// This function directly corresponds to the `getpeername(2)` function on + /// Windows and Unix. + #[doc = man_links!(getpeername(2))] + /// /// # Notes /// /// This returns an error if the socket is not [`connect`ed]. @@ -345,7 +358,21 @@ sys::try_clone(self.as_raw()).map(Socket::from_raw) } - /// Moves this TCP stream into or out of nonblocking mode. + /// Returns true if this socket is set to nonblocking mode, false otherwise. + /// + /// # Notes + /// + /// On Unix this corresponds to calling `fcntl` returning the value of + /// `O_NONBLOCK`. + /// + /// On Windows it is not possible retrieve the nonblocking mode status. + #[cfg(all(feature = "all", unix))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", unix))))] + pub fn nonblocking(&self) -> io::Result { + sys::nonblocking(self.as_raw()) + } + + /// Moves this socket into or out of nonblocking mode. /// /// # Notes /// @@ -361,6 +388,7 @@ /// /// This function will cause all pending and future I/O on the specified /// portions to return immediately with an appropriate value. + #[doc = man_links!(shutdown(2))] pub fn shutdown(&self, how: Shutdown) -> io::Result<()> { sys::shutdown(self.as_raw(), how) } @@ -370,6 +398,7 @@ /// /// The [`connect`] method will connect this socket to a remote address. /// This method might fail if the socket is not connected. + #[doc = man_links!(recv(2))] /// /// [`connect`]: Socket::connect /// @@ -396,6 +425,7 @@ /// /// [`recv`]: Socket::recv /// [`out_of_band_inline`]: Socket::out_of_band_inline + #[cfg_attr(target_os = "redox", allow(rustdoc::broken_intra_doc_links))] pub fn recv_out_of_band(&self, buf: &mut [MaybeUninit]) -> io::Result { self.recv_with_flags(buf, sys::MSG_OOB) } @@ -421,6 +451,7 @@ /// In addition to the number of bytes read, this function returns the flags /// for the received message. See [`RecvFlags`] for more information about /// the returned flags. + #[doc = man_links!(recvmsg(2))] /// /// [`recv`]: Socket::recv /// [`connect`]: Socket::connect @@ -486,6 +517,7 @@ /// Receives data from the socket. On success, returns the number of bytes /// read and the address from whence the data came. + #[doc = man_links!(recvfrom(2))] /// /// # Safety /// @@ -512,6 +544,7 @@ /// Receives data from the socket. Returns the amount of bytes read, the /// [`RecvFlags`] and the remote address from the data is coming. Unlike /// [`recv_from`] this allows passing multiple buffers. + #[doc = man_links!(recvmsg(2))] /// /// [`recv_from`]: Socket::recv_from /// @@ -600,6 +633,7 @@ /// been connected. /// /// On success returns the number of bytes that were sent. + #[doc = man_links!(send(2))] pub fn send(&self, buf: &[u8]) -> io::Result { self.send_with_flags(buf, 0) } @@ -607,7 +641,7 @@ /// Identical to [`send`] but allows for specification of arbitrary flags to the underlying /// `send` call. /// - /// [`send`]: #method.send + /// [`send`]: Socket::send pub fn send_with_flags(&self, buf: &[u8], flags: c_int) -> io::Result { sys::send(self.as_raw(), buf, flags) } @@ -621,6 +655,7 @@ /// Identical to [`send_vectored`] but allows for specification of arbitrary /// flags to the underlying `sendmsg`/`WSASend` call. + #[doc = man_links!(sendmsg(2))] /// /// [`send_vectored`]: Socket::send_vectored #[cfg(not(target_os = "redox"))] @@ -638,8 +673,9 @@ /// /// For more information, see [`send`], [`out_of_band_inline`]. /// - /// [`send`]: #method.send - /// [`out_of_band_inline`]: #method.out_of_band_inline + /// [`send`]: Socket::send + /// [`out_of_band_inline`]: Socket::out_of_band_inline + #[cfg_attr(target_os = "redox", allow(rustdoc::broken_intra_doc_links))] pub fn send_out_of_band(&self, buf: &[u8]) -> io::Result { self.send_with_flags(buf, sys::MSG_OOB) } @@ -648,6 +684,7 @@ /// number of bytes written. /// /// This is typically used on UDP or datagram-oriented sockets. + #[doc = man_links!(sendto(2))] pub fn send_to(&self, buf: &[u8], addr: &SockAddr) -> io::Result { self.send_to_with_flags(buf, addr, 0) } @@ -667,6 +704,7 @@ /// Send data to a peer listening on `addr`. Returns the amount of bytes /// written. + #[doc = man_links!(sendmsg(2))] #[cfg(not(target_os = "redox"))] #[cfg_attr(docsrs, doc(cfg(not(target_os = "redox"))))] pub fn send_to_vectored(&self, bufs: &[IoSlice<'_>], addr: &SockAddr) -> io::Result { @@ -692,7 +730,7 @@ /// Set `SOCK_CLOEXEC` and `NO_HANDLE_INHERIT` on the `ty`pe on platforms that /// support it. #[inline(always)] -fn set_common_type(ty: Type) -> Type { +const fn set_common_type(ty: Type) -> Type { // On platforms that support it set `SOCK_CLOEXEC`. #[cfg(any( target_os = "android", @@ -734,7 +772,12 @@ socket._set_cloexec(true)?; // On Apple platforms set `NOSIGPIPE`. - #[cfg(target_vendor = "apple")] + #[cfg(any( + target_os = "ios", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", + ))] socket._set_nosigpipe(true)?; Ok(socket) @@ -1010,7 +1053,7 @@ } } -fn from_linger(linger: sys::linger) -> Option { +const fn from_linger(linger: sys::linger) -> Option { if linger.l_onoff == 0 { None } else { @@ -1018,7 +1061,7 @@ } } -fn into_linger(duration: Option) -> sys::linger { +const fn into_linger(duration: Option) -> sys::linger { match duration { Some(duration) => sys::linger { l_onoff: 1, @@ -1043,7 +1086,7 @@ /// /// [`set_header_included`]: Socket::set_header_included #[cfg(all(feature = "all", not(target_os = "redox")))] - #[cfg_attr(docsrs, doc(all(feature = "all", not(target_os = "redox"))))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", not(target_os = "redox")))))] pub fn header_included(&self) -> io::Result { unsafe { getsockopt::(self.as_raw(), sys::IPPROTO_IP, sys::IP_HDRINCL) @@ -1062,8 +1105,12 @@ /// [raw(7)]: https://man7.org/linux/man-pages/man7/raw.7.html /// [`IP_TTL`]: Socket::set_ttl /// [`IP_TOS`]: Socket::set_tos + #[cfg_attr( + any(target_os = "fuchsia", target_os = "illumos", target_os = "solaris"), + allow(rustdoc::broken_intra_doc_links) + )] #[cfg(all(feature = "all", not(target_os = "redox")))] - #[cfg_attr(docsrs, doc(all(feature = "all", not(target_os = "redox"))))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", not(target_os = "redox")))))] pub fn set_header_included(&self, included: bool) -> io::Result<()> { unsafe { setsockopt( @@ -1080,7 +1127,7 @@ /// For more information about this option, see [`set_ip_transparent`]. /// /// [`set_ip_transparent`]: Socket::set_ip_transparent - #[cfg(any(doc, all(feature = "all", target_os = "linux")))] + #[cfg(all(feature = "all", target_os = "linux"))] #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] pub fn ip_transparent(&self) -> io::Result { unsafe { @@ -1104,7 +1151,7 @@ /// /// TProxy redirection with the iptables TPROXY target also /// requires that this option be set on the redirected socket. - #[cfg(any(doc, all(feature = "all", target_os = "linux")))] + #[cfg(all(feature = "all", target_os = "linux"))] #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] pub fn set_ip_transparent(&self, transparent: bool) -> io::Result<()> { unsafe { @@ -1159,6 +1206,7 @@ /// the local interface with which the system should join the multicast /// group. See [`InterfaceIndexOrAddress`]. #[cfg(not(any( + target_os = "aix", target_os = "haiku", target_os = "illumos", target_os = "netbsd", @@ -1189,6 +1237,7 @@ /// /// [`join_multicast_v4_n`]: Socket::join_multicast_v4_n #[cfg(not(any( + target_os = "aix", target_os = "haiku", target_os = "illumos", target_os = "netbsd", @@ -1426,10 +1475,11 @@ /// Set the value of the `IP_RECVTOS` option for this socket. /// - /// If enabled, the IP_TOS ancillary message is passed with + /// If enabled, the `IP_TOS` ancillary message is passed with /// incoming packets. It contains a byte which specifies the /// Type of Service/Precedence field of the packet header. #[cfg(not(any( + target_os = "aix", target_os = "dragonfly", target_os = "fuchsia", target_os = "illumos", @@ -1437,12 +1487,10 @@ target_os = "openbsd", target_os = "redox", target_os = "solaris", - target_os = "windows", + target_os = "haiku", target_os = "nto", )))] pub fn set_recv_tos(&self, recv_tos: bool) -> io::Result<()> { - let recv_tos = if recv_tos { 1 } else { 0 }; - unsafe { setsockopt( self.as_raw(), @@ -1459,6 +1507,7 @@ /// /// [`set_recv_tos`]: Socket::set_recv_tos #[cfg(not(any( + target_os = "aix", target_os = "dragonfly", target_os = "fuchsia", target_os = "illumos", @@ -1466,7 +1515,7 @@ target_os = "openbsd", target_os = "redox", target_os = "solaris", - target_os = "windows", + target_os = "haiku", target_os = "nto", )))] pub fn recv_tos(&self) -> io::Result { @@ -1668,6 +1717,54 @@ ) } } + + /// Get the value of the `IPV6_RECVTCLASS` option for this socket. + /// + /// For more information about this option, see [`set_recv_tclass_v6`]. + /// + /// [`set_recv_tclass_v6`]: Socket::set_recv_tclass_v6 + #[cfg(not(any( + target_os = "dragonfly", + target_os = "fuchsia", + target_os = "illumos", + target_os = "netbsd", + target_os = "openbsd", + target_os = "redox", + target_os = "solaris", + target_os = "haiku", + )))] + pub fn recv_tclass_v6(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::IPPROTO_IPV6, sys::IPV6_RECVTCLASS) + .map(|recv_tclass| recv_tclass > 0) + } + } + + /// Set the value of the `IPV6_RECVTCLASS` option for this socket. + /// + /// If enabled, the `IPV6_TCLASS` ancillary message is passed with incoming + /// packets. It contains a byte which specifies the traffic class field of + /// the packet header. + #[cfg(not(any( + target_os = "dragonfly", + target_os = "fuchsia", + target_os = "illumos", + target_os = "netbsd", + target_os = "openbsd", + target_os = "redox", + target_os = "solaris", + target_os = "haiku", + )))] + pub fn set_recv_tclass_v6(&self, recv_tclass: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IPV6, + sys::IPV6_RECVTCLASS, + recv_tclass as c_int, + ) + } + } } /// Socket options for TCP sockets, get/set using `IPPROTO_TCP`. @@ -1680,12 +1777,9 @@ /// /// This returns the value of `TCP_KEEPALIVE` on macOS and iOS and `TCP_KEEPIDLE` on all other /// supported Unix operating systems. - #[cfg(any( - doc, - all( - feature = "all", - not(any(windows, target_os = "haiku", target_os = "openbsd")) - ) + #[cfg(all( + feature = "all", + not(any(windows, target_os = "haiku", target_os = "openbsd")) ))] #[cfg_attr( docsrs, @@ -1706,15 +1800,17 @@ #[cfg(all( feature = "all", any( - doc, target_os = "android", target_os = "dragonfly", target_os = "freebsd", target_os = "fuchsia", target_os = "illumos", + target_os = "ios", target_os = "linux", + target_os = "macos", target_os = "netbsd", - target_vendor = "apple", + target_os = "tvos", + target_os = "watchos", ) ))] #[cfg_attr( @@ -1727,9 +1823,12 @@ target_os = "freebsd", target_os = "fuchsia", target_os = "illumos", + target_os = "ios", target_os = "linux", + target_os = "macos", target_os = "netbsd", - target_vendor = "apple", + target_os = "tvos", + target_os = "watchos", ) ))) )] @@ -1748,15 +1847,17 @@ #[cfg(all( feature = "all", any( - doc, target_os = "android", target_os = "dragonfly", target_os = "freebsd", target_os = "fuchsia", target_os = "illumos", + target_os = "ios", target_os = "linux", + target_os = "macos", target_os = "netbsd", - target_vendor = "apple", + target_os = "tvos", + target_os = "watchos", ) ))] #[cfg_attr( @@ -1769,9 +1870,12 @@ target_os = "freebsd", target_os = "fuchsia", target_os = "illumos", + target_os = "ios", target_os = "linux", + target_os = "macos", target_os = "netbsd", - target_vendor = "apple", + target_os = "tvos", + target_os = "watchos", ) ))) )] diff -Nru temporalio-1.3.0/vendor/socket2/src/sockref.rs temporalio-1.3.0/vendor/socket2/src/sockref.rs --- temporalio-1.3.0/vendor/socket2/src/sockref.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2/src/sockref.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,9 +3,9 @@ use std::mem::ManuallyDrop; use std::ops::Deref; #[cfg(unix)] -use std::os::unix::io::{AsRawFd, FromRawFd}; +use std::os::unix::io::{AsFd, AsRawFd, FromRawFd}; #[cfg(windows)] -use std::os::windows::io::{AsRawSocket, FromRawSocket}; +use std::os::windows::io::{AsRawSocket, AsSocket, FromRawSocket}; use crate::Socket; @@ -15,14 +15,13 @@ /// This allows for example a [`TcpStream`], found in the standard library, to /// be configured using all the additional methods found in the [`Socket`] API. /// -/// `SockRef` can be created from any socket type that implements [`AsRawFd`] -/// (Unix) or [`AsRawSocket`] (Windows) using the [`From`] implementation, but -/// the caller must ensure the file descriptor/socket is a valid. +/// `SockRef` can be created from any socket type that implements [`AsFd`] +/// (Unix) or [`AsSocket`] (Windows) using the [`From`] implementation. /// /// [`TcpStream`]: std::net::TcpStream // Don't use intra-doc links because they won't build on every platform. -/// [`AsRawFd`]: https://doc.rust-lang.org/stable/std/os/unix/io/trait.AsRawFd.html -/// [`AsRawSocket`]: https://doc.rust-lang.org/stable/std/os/windows/io/trait.AsRawSocket.html +/// [`AsFd`]: https://doc.rust-lang.org/stable/std/os/unix/io/trait.AsFd.html +/// [`AsSocket`]: https://doc.rust-lang.org/stable/std/os/windows/io/trait.AsSocket.html /// /// # Examples /// @@ -59,29 +58,6 @@ /// # Ok(()) /// # } /// ``` -/// -/// Below is an example of **incorrect usage** of `SockRef::from`, which is -/// currently possible (but not intended and will be fixed in future versions). -/// -/// ```compile_fail -/// use socket2::SockRef; -/// -/// # fn main() -> Result<(), Box> { -/// /// THIS USAGE IS NOT VALID! -/// let socket_ref = SockRef::from(&123); -/// // The above line is overseen possibility when using `SockRef::from`, it -/// // uses the `RawFd` (on Unix), which is a type alias for `c_int`/`i32`, -/// // which implements `AsRawFd`. However it may be clear that this usage is -/// // invalid as it doesn't guarantee that `123` is a valid file descriptor. -/// -/// // Using `Socket::set_nodelay` now will call it on a file descriptor we -/// // don't own! We don't even not if the file descriptor is valid or a socket. -/// socket_ref.set_nodelay(true)?; -/// drop(socket_ref); -/// # Ok(()) -/// # } -/// # DO_NOT_COMPILE -/// ``` pub struct SockRef<'s> { /// Because this is a reference we don't own the `Socket`, however `Socket` /// closes itself when dropped, so we use `ManuallyDrop` to prevent it from @@ -100,16 +76,16 @@ } } -/// On Windows, a corresponding `From<&impl AsRawSocket>` implementation exists. +/// On Windows, a corresponding `From<&impl AsSocket>` implementation exists. #[cfg(unix)] #[cfg_attr(docsrs, doc(cfg(unix)))] impl<'s, S> From<&'s S> for SockRef<'s> where - S: AsRawFd, + S: AsFd, { /// The caller must ensure `S` is actually a socket. fn from(socket: &'s S) -> Self { - let fd = socket.as_raw_fd(); + let fd = socket.as_fd().as_raw_fd(); assert!(fd >= 0); SockRef { socket: ManuallyDrop::new(unsafe { Socket::from_raw_fd(fd) }), @@ -118,17 +94,17 @@ } } -/// On Unix, a corresponding `From<&impl AsRawFd>` implementation exists. +/// On Unix, a corresponding `From<&impl AsFd>` implementation exists. #[cfg(windows)] #[cfg_attr(docsrs, doc(cfg(windows)))] impl<'s, S> From<&'s S> for SockRef<'s> where - S: AsRawSocket, + S: AsSocket, { - /// See the `From<&impl AsRawFd>` implementation. + /// See the `From<&impl AsFd>` implementation. fn from(socket: &'s S) -> Self { - let socket = socket.as_raw_socket(); - assert!(socket != winapi::um::winsock2::INVALID_SOCKET as _); + let socket = socket.as_socket().as_raw_socket(); + assert!(socket != windows_sys::Win32::Networking::WinSock::INVALID_SOCKET as _); SockRef { socket: ManuallyDrop::new(unsafe { Socket::from_raw_socket(socket) }), _lifetime: PhantomData, diff -Nru temporalio-1.3.0/vendor/socket2/src/sys/unix.rs temporalio-1.3.0/vendor/socket2/src/sys/unix.rs --- temporalio-1.3.0/vendor/socket2/src/sys/unix.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2/src/sys/unix.rs 2023-10-30 19:40:00.000000000 +0000 @@ -7,49 +7,68 @@ // except according to those terms. use std::cmp::min; +use std::ffi::OsStr; #[cfg(not(target_os = "redox"))] use std::io::IoSlice; use std::marker::PhantomData; use std::mem::{self, size_of, MaybeUninit}; use std::net::Shutdown; use std::net::{Ipv4Addr, Ipv6Addr}; -#[cfg(all(feature = "all", target_vendor = "apple"))] +#[cfg(all( + feature = "all", + any( + target_os = "ios", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", + ) +))] use std::num::NonZeroU32; #[cfg(all( feature = "all", any( + target_os = "aix", target_os = "android", target_os = "freebsd", + target_os = "ios", target_os = "linux", - target_vendor = "apple", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", ) ))] use std::num::NonZeroUsize; -#[cfg(feature = "all")] use std::os::unix::ffi::OsStrExt; #[cfg(all( feature = "all", any( + target_os = "aix", target_os = "android", target_os = "freebsd", + target_os = "ios", target_os = "linux", - target_vendor = "apple", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", ) ))] use std::os::unix::io::RawFd; -use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd}; +use std::os::unix::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd}; #[cfg(feature = "all")] use std::os::unix::net::{UnixDatagram, UnixListener, UnixStream}; -#[cfg(feature = "all")] use std::path::Path; -#[cfg(not(all(target_os = "redox", not(feature = "all"))))] use std::ptr; use std::time::{Duration, Instant}; use std::{io, slice}; -#[cfg(not(target_vendor = "apple"))] +#[cfg(not(any( + target_os = "ios", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", +)))] use libc::ssize_t; -use libc::{c_void, in6_addr, in_addr}; +use libc::{in6_addr, in_addr}; #[cfg(not(target_os = "redox"))] use crate::RecvFlags; @@ -58,14 +77,32 @@ pub(crate) use libc::c_int; // Used in `Domain`. -pub(crate) use libc::{AF_INET, AF_INET6}; +pub(crate) use libc::{AF_INET, AF_INET6, AF_UNIX}; // Used in `Type`. +#[cfg(all(feature = "all", target_os = "linux"))] +pub(crate) use libc::SOCK_DCCP; #[cfg(all(feature = "all", not(target_os = "redox")))] pub(crate) use libc::SOCK_RAW; #[cfg(feature = "all")] pub(crate) use libc::SOCK_SEQPACKET; pub(crate) use libc::{SOCK_DGRAM, SOCK_STREAM}; // Used in `Protocol`. +#[cfg(all(feature = "all", target_os = "linux"))] +pub(crate) use libc::IPPROTO_DCCP; +#[cfg(target_os = "linux")] +pub(crate) use libc::IPPROTO_MPTCP; +#[cfg(all(feature = "all", any(target_os = "freebsd", target_os = "linux")))] +pub(crate) use libc::IPPROTO_SCTP; +#[cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "linux", + ) +))] +pub(crate) use libc::IPPROTO_UDPLITE; pub(crate) use libc::{IPPROTO_ICMP, IPPROTO_ICMPV6, IPPROTO_TCP, IPPROTO_UDP}; // Used in `SockAddr`. pub(crate) use libc::{ @@ -77,9 +114,21 @@ // Used in `Socket`. #[cfg(not(target_os = "nto"))] pub(crate) use libc::ipv6_mreq as Ipv6Mreq; +#[cfg(not(any( + target_os = "dragonfly", + target_os = "fuchsia", + target_os = "illumos", + target_os = "netbsd", + target_os = "openbsd", + target_os = "redox", + target_os = "solaris", + target_os = "haiku", +)))] +pub(crate) use libc::IPV6_RECVTCLASS; #[cfg(all(feature = "all", not(target_os = "redox")))] pub(crate) use libc::IP_HDRINCL; #[cfg(not(any( + target_os = "aix", target_os = "dragonfly", target_os = "fuchsia", target_os = "illumos", @@ -98,9 +147,19 @@ target_os = "illumos", )))] pub(crate) use libc::IP_TOS; -#[cfg(not(target_vendor = "apple"))] +#[cfg(not(any( + target_os = "ios", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", +)))] pub(crate) use libc::SO_LINGER; -#[cfg(target_vendor = "apple")] +#[cfg(any( + target_os = "ios", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", +))] pub(crate) use libc::SO_LINGER_SEC as SO_LINGER; pub(crate) use libc::{ ip_mreq as IpMreq, linger, IPPROTO_IP, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, IPV6_MULTICAST_IF, @@ -126,11 +185,14 @@ target_os = "freebsd", target_os = "haiku", target_os = "illumos", + target_os = "ios", + target_os = "macos", target_os = "netbsd", + target_os = "nto", target_os = "openbsd", target_os = "solaris", - target_os = "nto", - target_vendor = "apple" + target_os = "tvos", + target_os = "watchos", )))] pub(crate) use libc::{IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP}; #[cfg(any( @@ -138,10 +200,13 @@ target_os = "freebsd", target_os = "haiku", target_os = "illumos", + target_os = "ios", + target_os = "macos", target_os = "netbsd", target_os = "openbsd", target_os = "solaris", - target_vendor = "apple", + target_os = "tvos", + target_os = "watchos", ))] pub(crate) use libc::{ IPV6_JOIN_GROUP as IPV6_ADD_MEMBERSHIP, IPV6_LEAVE_GROUP as IPV6_DROP_MEMBERSHIP, @@ -154,9 +219,12 @@ target_os = "freebsd", target_os = "fuchsia", target_os = "illumos", + target_os = "ios", target_os = "linux", + target_os = "macos", target_os = "netbsd", - target_vendor = "apple", + target_os = "tvos", + target_os = "watchos", ) ))] pub(crate) use libc::{TCP_KEEPCNT, TCP_KEEPINTVL}; @@ -164,13 +232,22 @@ // See this type in the Windows file. pub(crate) type Bool = c_int; -#[cfg(any(target_vendor = "apple", target_os = "nto"))] +#[cfg(any( + target_os = "ios", + target_os = "macos", + target_os = "nto", + target_os = "tvos", + target_os = "watchos", +))] use libc::TCP_KEEPALIVE as KEEPALIVE_TIME; #[cfg(not(any( - target_vendor = "apple", target_os = "haiku", - target_os = "openbsd", + target_os = "ios", + target_os = "macos", target_os = "nto", + target_os = "openbsd", + target_os = "tvos", + target_os = "watchos", )))] use libc::TCP_KEEPIDLE as KEEPALIVE_TIME; @@ -188,8 +265,13 @@ } /// Maximum size of a buffer passed to system call like `recv` and `send`. -#[cfg(not(target_vendor = "apple"))] -const MAX_BUF_LEN: usize = ::max_value() as usize; +#[cfg(not(any( + target_os = "ios", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", +)))] +const MAX_BUF_LEN: usize = ssize_t::MAX as usize; // The maximum read limit on most posix-like systems is `SSIZE_MAX`, with the // man page quoting that if the count of bytes to read is greater than @@ -199,8 +281,17 @@ // intentionally showing odd behavior by rejecting any read with a size larger // than or equal to INT_MAX. To handle both of these the read size is capped on // both platforms. -#[cfg(target_vendor = "apple")] -const MAX_BUF_LEN: usize = ::max_value() as usize - 1; +#[cfg(any( + target_os = "ios", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", +))] +const MAX_BUF_LEN: usize = c_int::MAX as usize - 1; + +// TCP_CA_NAME_MAX isn't defined in user space include files(not in libc) +#[cfg(all(feature = "all", any(target_os = "freebsd", target_os = "linux")))] +const TCP_CA_NAME_MAX: usize = 16; #[cfg(any( all( @@ -222,25 +313,25 @@ all(target_env = "uclibc", target_pointer_width = "32") ) ), + target_os = "aix", target_os = "dragonfly", target_os = "freebsd", target_os = "fuchsia", target_os = "haiku", target_os = "illumos", + target_os = "ios", + target_os = "macos", target_os = "netbsd", + target_os = "nto", target_os = "openbsd", target_os = "solaris", - target_os = "nto", - target_vendor = "apple", + target_os = "tvos", + target_os = "watchos", ))] type IovLen = c_int; /// Unix only API. impl Domain { - /// Domain for Unix socket communication, corresponding to `AF_UNIX`. - #[cfg_attr(docsrs, doc(cfg(unix)))] - pub const UNIX: Domain = Domain(libc::AF_UNIX); - /// Domain for low-level packet interface, corresponding to `AF_PACKET`. #[cfg(all( feature = "all", @@ -328,7 +419,9 @@ target_os = "illumos", target_os = "linux", target_os = "netbsd", - target_os = "openbsd" + target_os = "openbsd", + target_os = "redox", + target_os = "solaris", ) ))] #[cfg_attr( @@ -343,7 +436,9 @@ target_os = "illumos", target_os = "linux", target_os = "netbsd", - target_os = "openbsd" + target_os = "openbsd", + target_os = "redox", + target_os = "solaris", ) ))) )] @@ -359,7 +454,9 @@ target_os = "illumos", target_os = "linux", target_os = "netbsd", - target_os = "openbsd" + target_os = "openbsd", + target_os = "redox", + target_os = "solaris", ))] pub(crate) const fn _cloexec(self) -> Type { Type(self.0 | libc::SOCK_CLOEXEC) @@ -370,6 +467,8 @@ Type, libc::SOCK_STREAM, libc::SOCK_DGRAM, + #[cfg(all(feature = "all", target_os = "linux"))] + libc::SOCK_DCCP, #[cfg(not(target_os = "redox"))] libc::SOCK_RAW, #[cfg(not(any(target_os = "redox", target_os = "haiku")))] @@ -405,6 +504,22 @@ libc::IPPROTO_ICMPV6, libc::IPPROTO_TCP, libc::IPPROTO_UDP, + #[cfg(target_os = "linux")] + libc::IPPROTO_MPTCP, + #[cfg(all(feature = "all", target_os = "linux"))] + libc::IPPROTO_DCCP, + #[cfg(all(feature = "all", any(target_os = "freebsd", target_os = "linux")))] + libc::IPPROTO_SCTP, + #[cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "linux", + ) + ))] + libc::IPPROTO_UDPLITE, ); /// Unix-only API. @@ -412,11 +527,13 @@ impl RecvFlags { /// Check if the message terminates a record. /// - /// Not all socket types support the notion of records. - /// For socket types that do support it (such as [`SEQPACKET`][Type::SEQPACKET]), - /// a record is terminated by sending a message with the end-of-record flag set. + /// Not all socket types support the notion of records. For socket types + /// that do support it (such as [`SEQPACKET`]), a record is terminated by + /// sending a message with the end-of-record flag set. /// - /// On Unix this corresponds to the MSG_EOR flag. + /// On Unix this corresponds to the `MSG_EOR` flag. + /// + /// [`SEQPACKET`]: Type::SEQPACKET pub const fn is_end_of_record(self) -> bool { self.0 & libc::MSG_EOR != 0 } @@ -426,7 +543,7 @@ /// This is useful for protocols where you receive out-of-band data /// mixed in with the normal data stream. /// - /// On Unix this corresponds to the MSG_OOB flag. + /// On Unix this corresponds to the `MSG_OOB` flag. pub const fn is_out_of_band(self) -> bool { self.0 & libc::MSG_OOB != 0 } @@ -473,72 +590,59 @@ } } -/// Unix only API. -impl SockAddr { - /// Constructs a `SockAddr` with the family `AF_UNIX` and the provided path. - /// - /// # Failure - /// - /// Returns an error if the path is longer than `SUN_LEN`. - #[cfg(feature = "all")] - #[cfg_attr(docsrs, doc(cfg(all(unix, feature = "all"))))] - #[allow(unused_unsafe)] // TODO: replace with `unsafe_op_in_unsafe_fn` once stable. - pub fn unix

(path: P) -> io::Result - where - P: AsRef, - { - unsafe { - SockAddr::init(|storage, len| { - // Safety: `SockAddr::init` zeros the address, which is a valid - // representation. - let storage: &mut libc::sockaddr_un = unsafe { &mut *storage.cast() }; - let len: &mut socklen_t = unsafe { &mut *len }; - - let bytes = path.as_ref().as_os_str().as_bytes(); - let too_long = match bytes.first() { - None => false, - // linux abstract namespaces aren't null-terminated - Some(&0) => bytes.len() > storage.sun_path.len(), - Some(_) => bytes.len() >= storage.sun_path.len(), - }; - if too_long { - return Err(io::Error::new( - io::ErrorKind::InvalidInput, - "path must be shorter than SUN_LEN", - )); - } - - storage.sun_family = libc::AF_UNIX as sa_family_t; - // Safety: `bytes` and `addr.sun_path` are not overlapping and - // both point to valid memory. - // `SockAddr::init` zeroes the memory, so the path is already - // null terminated. - unsafe { - ptr::copy_nonoverlapping( - bytes.as_ptr(), - storage.sun_path.as_mut_ptr() as *mut u8, - bytes.len(), - ) - }; - - let base = storage as *const _ as usize; - let path = &storage.sun_path as *const _ as usize; - let sun_path_offset = path - base; - let length = sun_path_offset - + bytes.len() - + match bytes.first() { - Some(&0) | None => 0, - Some(_) => 1, - }; - *len = length as socklen_t; - - Ok(()) - }) - } - .map(|(_, addr)| addr) - } +/// Returns the offset of the `sun_path` member of the passed unix socket address. +pub(crate) fn offset_of_path(storage: &libc::sockaddr_un) -> usize { + let base = storage as *const _ as usize; + let path = ptr::addr_of!(storage.sun_path) as usize; + path - base +} + +#[allow(unsafe_op_in_unsafe_fn)] +pub(crate) fn unix_sockaddr(path: &Path) -> io::Result { + // SAFETY: a `sockaddr_storage` of all zeros is valid. + let mut storage = unsafe { mem::zeroed::() }; + let len = { + let storage = unsafe { &mut *ptr::addr_of_mut!(storage).cast::() }; + + let bytes = path.as_os_str().as_bytes(); + let too_long = match bytes.first() { + None => false, + // linux abstract namespaces aren't null-terminated + Some(&0) => bytes.len() > storage.sun_path.len(), + Some(_) => bytes.len() >= storage.sun_path.len(), + }; + if too_long { + return Err(io::Error::new( + io::ErrorKind::InvalidInput, + "path must be shorter than SUN_LEN", + )); + } + + storage.sun_family = libc::AF_UNIX as sa_family_t; + // SAFETY: `bytes` and `addr.sun_path` are not overlapping and + // both point to valid memory. + // `storage` was initialized to zero above, so the path is + // already NULL terminated. + unsafe { + ptr::copy_nonoverlapping( + bytes.as_ptr(), + storage.sun_path.as_mut_ptr().cast(), + bytes.len(), + ); + } + + let sun_path_offset = offset_of_path(storage); + sun_path_offset + + bytes.len() + + match bytes.first() { + Some(&0) | None => 0, + Some(_) => 1, + } + }; + Ok(unsafe { SockAddr::new(storage, len as socklen_t) }) } +/// Unix only API. impl SockAddr { /// Constructs a `SockAddr` with the family `AF_VSOCK` and the provided CID/port. /// @@ -546,30 +650,23 @@ /// /// This function can never fail. In a future version of this library it will be made /// infallible. - #[allow(unused_unsafe)] // TODO: replace with `unsafe_op_in_unsafe_fn` once stable. + #[allow(unsafe_op_in_unsafe_fn)] #[cfg(all(feature = "all", any(target_os = "android", target_os = "linux")))] #[cfg_attr( docsrs, doc(cfg(all(feature = "all", any(target_os = "android", target_os = "linux")))) )] - pub fn vsock(cid: u32, port: u32) -> io::Result { - unsafe { - SockAddr::init(|storage, len| { - // Safety: `SockAddr::init` zeros the address, which is a valid - // representation. - let storage: &mut libc::sockaddr_vm = unsafe { &mut *storage.cast() }; - let len: &mut socklen_t = unsafe { &mut *len }; - - storage.svm_family = libc::AF_VSOCK as sa_family_t; - storage.svm_cid = cid; - storage.svm_port = port; - - *len = mem::size_of::() as socklen_t; - - Ok(()) - }) + pub fn vsock(cid: u32, port: u32) -> SockAddr { + // SAFETY: a `sockaddr_storage` of all zeros is valid. + let mut storage = unsafe { mem::zeroed::() }; + { + let storage: &mut libc::sockaddr_vm = + unsafe { &mut *((&mut storage as *mut sockaddr_storage).cast()) }; + storage.svm_family = libc::AF_VSOCK as sa_family_t; + storage.svm_cid = cid; + storage.svm_port = port; } - .map(|(_, addr)| addr) + unsafe { SockAddr::new(storage, mem::size_of::() as socklen_t) } } /// Returns this address VSOCK CID/port if it is in the `AF_VSOCK` family, @@ -579,7 +676,7 @@ docsrs, doc(cfg(all(feature = "all", any(target_os = "android", target_os = "linux")))) )] - pub fn vsock_address(&self) -> Option<(u32, u32)> { + pub fn as_vsock_address(&self) -> Option<(u32, u32)> { if self.family() == libc::AF_VSOCK as sa_family_t { // Safety: if the ss_family field is AF_VSOCK then storage must be a sockaddr_vm. let addr = unsafe { &*(self.as_ptr() as *const libc::sockaddr_vm) }; @@ -588,6 +685,100 @@ None } } + + /// Returns true if this address is an unnamed address from the `AF_UNIX` family (for local + /// interprocess communication), false otherwise. + pub fn is_unnamed(&self) -> bool { + self.as_sockaddr_un() + .map(|storage| { + self.len() == offset_of_path(storage) as _ + // On some non-linux platforms a zeroed path is returned for unnamed. + // Abstract addresses only exist on Linux. + // NOTE: although Fuchsia does define `AF_UNIX` it's not actually implemented. + // See https://github.com/rust-lang/socket2/pull/403#discussion_r1123557978 + || (cfg!(not(any(target_os = "linux", target_os = "android"))) + && storage.sun_path[0] == 0) + }) + .unwrap_or_default() + } + + /// Returns the underlying `sockaddr_un` object if this addres is from the `AF_UNIX` family, + /// otherwise returns `None`. + pub(crate) fn as_sockaddr_un(&self) -> Option<&libc::sockaddr_un> { + self.is_unix().then(|| { + // SAFETY: if unix socket, i.e. the `ss_family` field is `AF_UNIX` then storage must be + // a `sockaddr_un`. + unsafe { &*self.as_ptr().cast::() } + }) + } + + /// Get the length of the path bytes of the address, not including the terminating or initial + /// (for abstract names) null byte. + /// + /// Should not be called on unnamed addresses. + fn path_len(&self, storage: &libc::sockaddr_un) -> usize { + debug_assert!(!self.is_unnamed()); + self.len() as usize - offset_of_path(storage) - 1 + } + + /// Get a u8 slice for the bytes of the pathname or abstract name. + /// + /// Should not be called on unnamed addresses. + fn path_bytes(&self, storage: &libc::sockaddr_un, abstract_name: bool) -> &[u8] { + debug_assert!(!self.is_unnamed()); + // SAFETY: the pointed objects of type `i8` have the same memory layout as `u8`. The path is + // the last field in the storage and so its length is equal to + // TOTAL_LENGTH - OFFSET_OF_PATH -1 + // Where the 1 is either a terminating null if we have a pathname address, or the initial + // null byte, if it's an abstract name address. In the latter case, the path bytes start + // after the initial null byte, hence the `offset`. + // There is no safe way to convert a `&[i8]` to `&[u8]` + unsafe { + slice::from_raw_parts( + (storage.sun_path.as_ptr() as *const u8).offset(abstract_name as isize), + self.path_len(storage), + ) + } + } + + /// Returns this address as Unix `SocketAddr` if it is an `AF_UNIX` pathname + /// address, otherwise returns `None`. + pub fn as_unix(&self) -> Option { + let path = self.as_pathname()?; + // SAFETY: we can represent this as a valid pathname, then so can the + // standard library. + Some(std::os::unix::net::SocketAddr::from_pathname(path).unwrap()) + } + + /// Returns this address as a `Path` reference if it is an `AF_UNIX` + /// pathname address, otherwise returns `None`. + pub fn as_pathname(&self) -> Option<&Path> { + self.as_sockaddr_un().and_then(|storage| { + (self.len() > offset_of_path(storage) as _ && storage.sun_path[0] != 0).then(|| { + let path_slice = self.path_bytes(storage, false); + Path::new::(OsStrExt::from_bytes(path_slice)) + }) + }) + } + + /// Returns this address as a slice of bytes representing an abstract address if it is an + /// `AF_UNIX` abstract address, otherwise returns `None`. + /// + /// Abstract addresses are a Linux extension, so this method returns `None` on all non-Linux + /// platforms. + pub fn as_abstract_namespace(&self) -> Option<&[u8]> { + // NOTE: although Fuchsia does define `AF_UNIX` it's not actually implemented. + // See https://github.com/rust-lang/socket2/pull/403#discussion_r1123557978 + #[cfg(any(target_os = "linux", target_os = "android"))] + { + self.as_sockaddr_un().and_then(|storage| { + (self.len() > offset_of_path(storage) as _ && storage.sun_path[0] == 0) + .then(|| self.path_bytes(storage, true)) + }) + } + #[cfg(not(any(target_os = "linux", target_os = "android")))] + None + } } pub(crate) type Socket = c_int; @@ -608,7 +799,8 @@ syscall!(socket(family, ty, protocol)) } -#[cfg(feature = "all")] +#[cfg(all(feature = "all", unix))] +#[cfg_attr(docsrs, doc(cfg(all(feature = "all", unix))))] pub(crate) fn socketpair(family: c_int, ty: c_int, protocol: c_int) -> io::Result<[Socket; 2]> { let mut fds = [0, 0]; syscall!(socketpair(family, ty, protocol, fds.as_mut_ptr())).map(|_| fds) @@ -638,7 +830,7 @@ } let timeout = (timeout - elapsed).as_millis(); - let timeout = clamp(timeout, 1, c_int::max_value() as u128) as c_int; + let timeout = timeout.clamp(1, c_int::MAX as u128) as c_int; match syscall!(poll(&mut pollfd, 1, timeout)) { Ok(0) => return Err(io::ErrorKind::TimedOut.into()), @@ -646,14 +838,13 @@ // Error or hang up indicates an error (or failure to connect). if (pollfd.revents & libc::POLLHUP) != 0 || (pollfd.revents & libc::POLLERR) != 0 { match socket.take_error() { - Ok(Some(err)) => return Err(err), + Ok(Some(err)) | Err(err) => return Err(err), Ok(None) => { return Err(io::Error::new( io::ErrorKind::Other, "no error set after POLLHUP", )) } - Err(err) => return Err(err), } } return Ok(()); @@ -665,38 +856,24 @@ } } -// TODO: use clamp from std lib, stable since 1.50. -fn clamp(value: T, min: T, max: T) -> T -where - T: Ord, -{ - if value <= min { - min - } else if value >= max { - max - } else { - value - } -} - pub(crate) fn listen(fd: Socket, backlog: c_int) -> io::Result<()> { syscall!(listen(fd, backlog)).map(|_| ()) } pub(crate) fn accept(fd: Socket) -> io::Result<(Socket, SockAddr)> { // Safety: `accept` initialises the `SockAddr` for us. - unsafe { SockAddr::init(|storage, len| syscall!(accept(fd, storage.cast(), len))) } + unsafe { SockAddr::try_init(|storage, len| syscall!(accept(fd, storage.cast(), len))) } } pub(crate) fn getsockname(fd: Socket) -> io::Result { // Safety: `accept` initialises the `SockAddr` for us. - unsafe { SockAddr::init(|storage, len| syscall!(getsockname(fd, storage.cast(), len))) } + unsafe { SockAddr::try_init(|storage, len| syscall!(getsockname(fd, storage.cast(), len))) } .map(|(_, addr)| addr) } pub(crate) fn getpeername(fd: Socket) -> io::Result { // Safety: `accept` initialises the `SockAddr` for us. - unsafe { SockAddr::init(|storage, len| syscall!(getpeername(fd, storage.cast(), len))) } + unsafe { SockAddr::try_init(|storage, len| syscall!(getpeername(fd, storage.cast(), len))) } .map(|(_, addr)| addr) } @@ -704,6 +881,12 @@ syscall!(fcntl(fd, libc::F_DUPFD_CLOEXEC, 0)) } +#[cfg(all(feature = "all", unix))] +pub(crate) fn nonblocking(fd: Socket) -> io::Result { + let file_status_flags = fcntl_get(fd, libc::F_GETFL)?; + Ok((file_status_flags & libc::O_NONBLOCK) != 0) +} + pub(crate) fn set_nonblocking(fd: Socket, nonblocking: bool) -> io::Result<()> { if nonblocking { fcntl_add(fd, libc::F_GETFL, libc::F_SETFL, libc::O_NONBLOCK) @@ -738,7 +921,7 @@ ) -> io::Result<(usize, SockAddr)> { // Safety: `recvfrom` initialises the `SockAddr` for us. unsafe { - SockAddr::init(|addr, addrlen| { + SockAddr::try_init(|addr, addrlen| { syscall!(recvfrom( fd, buf.as_mut_ptr().cast(), @@ -779,7 +962,7 @@ // Safety: `recvmsg` initialises the address storage and we set the length // manually. unsafe { - SockAddr::init(|storage, len| { + SockAddr::try_init(|storage, len| { recvmsg(fd, storage, bufs, flags).map(|(n, addrlen, recv_flags)| { // Set the correct address length. *len = addrlen; @@ -792,6 +975,7 @@ /// Returns the (bytes received, sending address len, `RecvFlags`). #[cfg(not(target_os = "redox"))] +#[allow(clippy::unnecessary_cast)] // For `IovLen::MAX as usize` (Already `usize` on Linux). fn recvmsg( fd: Socket, msg_name: *mut sockaddr_storage, @@ -852,6 +1036,7 @@ /// Returns the (bytes received, sending address len, `RecvFlags`). #[cfg(not(target_os = "redox"))] +#[allow(clippy::unnecessary_cast)] // For `IovLen::MAX as usize` (Already `usize` on Linux). fn sendmsg( fd: Socket, msg_name: *const sockaddr_storage, @@ -877,7 +1062,7 @@ unsafe { getsockopt(fd, opt, val).map(from_timeval) } } -fn from_timeval(duration: libc::timeval) -> Option { +const fn from_timeval(duration: libc::timeval) -> Option { if duration.tv_sec == 0 && duration.tv_usec == 0 { None } else { @@ -903,7 +1088,7 @@ // https://github.com/rust-lang/libc/issues/1848 #[cfg_attr(target_env = "musl", allow(deprecated))] Some(duration) => libc::timeval { - tv_sec: min(duration.as_secs(), libc::time_t::max_value() as u64) as libc::time_t, + tv_sec: min(duration.as_secs(), libc::time_t::MAX as u64) as libc::time_t, tv_usec: duration.subsec_micros() as libc::suseconds_t, }, None => libc::timeval { @@ -913,8 +1098,11 @@ } } -#[cfg(feature = "all")] -#[cfg(not(any(target_os = "haiku", target_os = "openbsd")))] +#[cfg(all(feature = "all", not(any(target_os = "haiku", target_os = "openbsd"))))] +#[cfg_attr( + docsrs, + doc(cfg(all(feature = "all", not(any(target_os = "haiku", target_os = "openbsd"))))) +)] pub(crate) fn keepalive_time(fd: Socket) -> io::Result { unsafe { getsockopt::(fd, IPPROTO_TCP, KEEPALIVE_TIME) @@ -931,14 +1119,18 @@ } #[cfg(any( + target_os = "aix", target_os = "android", target_os = "dragonfly", target_os = "freebsd", target_os = "fuchsia", target_os = "illumos", + target_os = "ios", target_os = "linux", + target_os = "macos", target_os = "netbsd", - target_vendor = "apple", + target_os = "tvos", + target_os = "watchos", ))] { if let Some(interval) = keepalive.interval { @@ -962,12 +1154,17 @@ #[cfg(not(any(target_os = "haiku", target_os = "openbsd", target_os = "nto")))] fn into_secs(duration: Duration) -> c_int { - min(duration.as_secs(), c_int::max_value() as u64) as c_int + min(duration.as_secs(), c_int::MAX as u64) as c_int +} + +/// Get the flags using `cmd`. +fn fcntl_get(fd: Socket, cmd: c_int) -> io::Result { + syscall!(fcntl(fd, cmd)) } /// Add `flag` to the current set flags of `F_GETFD`. fn fcntl_add(fd: Socket, get_cmd: c_int, set_cmd: c_int, flag: c_int) -> io::Result<()> { - let previous = syscall!(fcntl(fd, get_cmd))?; + let previous = fcntl_get(fd, get_cmd)?; let new = previous | flag; if new != previous { syscall!(fcntl(fd, set_cmd, new)).map(|_| ()) @@ -979,7 +1176,7 @@ /// Remove `flag` to the current set flags of `F_GETFD`. fn fcntl_remove(fd: Socket, get_cmd: c_int, set_cmd: c_int, flag: c_int) -> io::Result<()> { - let previous = syscall!(fcntl(fd, get_cmd))?; + let previous = fcntl_get(fd, get_cmd)?; let new = previous & !flag; if new != previous { syscall!(fcntl(fd, set_cmd, new)).map(|_| ()) @@ -1014,7 +1211,7 @@ val: c_int, payload: T, ) -> io::Result<()> { - let payload = &payload as *const T as *const c_void; + let payload = ptr::addr_of!(payload).cast(); syscall!(setsockopt( fd, opt, @@ -1025,7 +1222,7 @@ .map(|_| ()) } -pub(crate) fn to_in_addr(addr: &Ipv4Addr) -> in_addr { +pub(crate) const fn to_in_addr(addr: &Ipv4Addr) -> in_addr { // `s_addr` is stored as BE on all machines, and the array is in BE order. // So the native endian conversion method is used so that it's never // swapped. @@ -1038,7 +1235,7 @@ Ipv4Addr::from(in_addr.s_addr.to_ne_bytes()) } -pub(crate) fn to_in6_addr(addr: &Ipv6Addr) -> in6_addr { +pub(crate) const fn to_in6_addr(addr: &Ipv6Addr) -> in6_addr { in6_addr { s6_addr: addr.octets(), } @@ -1049,6 +1246,7 @@ } #[cfg(not(any( + target_os = "aix", target_os = "haiku", target_os = "illumos", target_os = "netbsd", @@ -1057,7 +1255,7 @@ target_os = "solaris", target_os = "nto", )))] -pub(crate) fn to_mreqn( +pub(crate) const fn to_mreqn( multiaddr: &Ipv4Addr, interface: &crate::socket::InterfaceIndexOrAddress, ) -> libc::ip_mreqn { @@ -1084,6 +1282,7 @@ /// This function will block the calling thread until a new connection is /// established. When established, the corresponding `Socket` and the remote /// peer's address will be returned. + #[doc = man_links!(unix: accept4(2))] #[cfg(all( feature = "all", any( @@ -1094,7 +1293,7 @@ target_os = "illumos", target_os = "linux", target_os = "netbsd", - target_os = "openbsd" + target_os = "openbsd", ) ))] #[cfg_attr( @@ -1109,7 +1308,7 @@ target_os = "illumos", target_os = "linux", target_os = "netbsd", - target_os = "openbsd" + target_os = "openbsd", ) ))) )] @@ -1125,12 +1324,12 @@ target_os = "illumos", target_os = "linux", target_os = "netbsd", - target_os = "openbsd" + target_os = "openbsd", ))] pub(crate) fn _accept4(&self, flags: c_int) -> io::Result<(crate::Socket, SockAddr)> { // Safety: `accept4` initialises the `SockAddr` for us. unsafe { - SockAddr::init(|storage, len| { + SockAddr::try_init(|storage, len| { syscall!(accept4(self.as_raw(), storage.cast(), len, flags)) .map(crate::Socket::from_raw) }) @@ -1142,6 +1341,15 @@ /// # Notes /// /// On supported platforms you can use [`Type::cloexec`]. + #[cfg_attr( + any( + target_os = "ios", + target_os = "macos", + target_os = "tvos", + target_os = "watchos" + ), + allow(rustdoc::broken_intra_doc_links) + )] #[cfg(feature = "all")] #[cfg_attr(docsrs, doc(cfg(all(feature = "all", unix))))] pub fn set_cloexec(&self, close_on_exec: bool) -> io::Result<()> { @@ -1167,13 +1375,37 @@ } /// Sets `SO_NOSIGPIPE` on the socket. - #[cfg(all(feature = "all", any(doc, target_vendor = "apple")))] - #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_vendor = "apple"))))] + #[cfg(all( + feature = "all", + any( + target_os = "ios", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", + ) + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any( + target_os = "ios", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", + ) + ))) + )] pub fn set_nosigpipe(&self, nosigpipe: bool) -> io::Result<()> { self._set_nosigpipe(nosigpipe) } - #[cfg(target_vendor = "apple")] + #[cfg(any( + target_os = "ios", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", + ))] pub(crate) fn _set_nosigpipe(&self, nosigpipe: bool) -> io::Result<()> { unsafe { setsockopt( @@ -1221,6 +1453,7 @@ #[cfg(all( feature = "all", any( + target_os = "aix", target_os = "android", target_os = "freebsd", target_os = "fuchsia", @@ -1232,6 +1465,7 @@ doc(cfg(all( feature = "all", any( + target_os = "aix", target_os = "android", target_os = "freebsd", target_os = "fuchsia", @@ -1362,7 +1596,7 @@ /// /// For more information about this option, see [`set_cork`]. /// - /// [`set_cork`]: Socket::set_cork + /// [`set_cork`]: crate::Socket::set_cork #[cfg(all( feature = "all", any(target_os = "android", target_os = "fuchsia", target_os = "linux") @@ -1413,7 +1647,7 @@ /// /// For more information about this option, see [`set_quickack`]. /// - /// [`set_quickack`]: Socket::set_quickack + /// [`set_quickack`]: crate::Socket::set_quickack #[cfg(all( feature = "all", any(target_os = "android", target_os = "fuchsia", target_os = "linux") @@ -1464,7 +1698,7 @@ /// /// For more information about this option, see [`set_thin_linear_timeouts`]. /// - /// [`set_thin_linear_timeouts`]: Socket::set_thin_linear_timeouts + /// [`set_thin_linear_timeouts`]: crate::Socket::set_thin_linear_timeouts #[cfg(all( feature = "all", any(target_os = "android", target_os = "fuchsia", target_os = "linux") @@ -1607,12 +1841,31 @@ /// If `interface` is `None`, the binding is removed. If the `interface` /// index is not valid, an error is returned. /// - /// One can use `libc::if_nametoindex` to convert an interface alias to an + /// One can use [`libc::if_nametoindex`] to convert an interface alias to an /// index. - #[cfg(all(feature = "all", target_vendor = "apple"))] - #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_vendor = "apple"))))] + #[cfg(all( + feature = "all", + any( + target_os = "ios", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", + ) + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any( + target_os = "ios", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", + ) + ))) + )] pub fn bind_device_by_index(&self, interface: Option) -> io::Result<()> { - let index = interface.map(NonZeroU32::get).unwrap_or(0); + let index = interface.map_or(0, NonZeroU32::get); unsafe { setsockopt(self.as_raw(), IPPROTO_IP, libc::IP_BOUND_IF, index) } } @@ -1621,8 +1874,27 @@ /// /// Returns `None` if the socket is not bound to any interface, otherwise /// returns an interface index. - #[cfg(all(feature = "all", target_vendor = "apple"))] - #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_vendor = "apple"))))] + #[cfg(all( + feature = "all", + any( + target_os = "ios", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", + ) + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any( + target_os = "ios", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", + ) + ))) + )] pub fn device_index(&self) -> io::Result> { let index = unsafe { getsockopt::(self.as_raw(), IPPROTO_IP, libc::IP_BOUND_IF)? }; @@ -1828,6 +2100,62 @@ } } + /// Get the value for the `SO_ORIGINAL_DST` option on this socket. + /// + /// This value contains the original destination IPv4 address of the connection + /// redirected using `iptables` `REDIRECT` or `TPROXY`. + #[cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))) + )] + pub fn original_dst(&self) -> io::Result { + // Safety: `getsockopt` initialises the `SockAddr` for us. + unsafe { + SockAddr::try_init(|storage, len| { + syscall!(getsockopt( + self.as_raw(), + libc::SOL_IP, + libc::SO_ORIGINAL_DST, + storage.cast(), + len + )) + }) + } + .map(|(_, addr)| addr) + } + + /// Get the value for the `IP6T_SO_ORIGINAL_DST` option on this socket. + /// + /// This value contains the original destination IPv6 address of the connection + /// redirected using `ip6tables` `REDIRECT` or `TPROXY`. + #[cfg(all(feature = "all", any(target_os = "android", target_os = "linux")))] + #[cfg_attr( + docsrs, + doc(cfg(all(feature = "all", any(target_os = "android", target_os = "linux")))) + )] + pub fn original_dst_ipv6(&self) -> io::Result { + // Safety: `getsockopt` initialises the `SockAddr` for us. + unsafe { + SockAddr::try_init(|storage, len| { + syscall!(getsockopt( + self.as_raw(), + libc::SOL_IPV6, + libc::IP6T_SO_ORIGINAL_DST, + storage.cast(), + len + )) + }) + } + .map(|(_, addr)| addr) + } + /// Copies data between a `file` and this socket using the `sendfile(2)` /// system call. Because this copying is done within the kernel, /// `sendfile()` is more efficient than the combination of `read(2)` and @@ -1837,6 +2165,7 @@ /// Different OSs support different kinds of `file`s, see the OS /// documentation for what kind of files are supported. Generally *regular* /// files are supported by all OSs. + #[doc = man_links!(unix: sendfile(2))] /// /// The `offset` is the absolute offset into the `file` to use as starting /// point. @@ -1849,10 +2178,14 @@ #[cfg(all( feature = "all", any( + target_os = "aix", target_os = "android", target_os = "freebsd", + target_os = "ios", target_os = "linux", - target_vendor = "apple", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", ) ))] #[cfg_attr( @@ -1860,10 +2193,14 @@ doc(cfg(all( feature = "all", any( + target_os = "aix", target_os = "android", target_os = "freebsd", + target_os = "ios", target_os = "linux", - target_vendor = "apple", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", ) ))) )] @@ -1879,7 +2216,15 @@ self._sendfile(file.as_raw_fd(), offset as _, length) } - #[cfg(all(feature = "all", target_vendor = "apple"))] + #[cfg(all( + feature = "all", + any( + target_os = "ios", + target_os = "macos", + target_os = "tvos", + target_os = "watchos", + ) + ))] fn _sendfile( &self, file: RawFd, @@ -1945,6 +2290,37 @@ .map(|_| sbytes as usize) } + #[cfg(all(feature = "all", target_os = "aix"))] + fn _sendfile( + &self, + file: RawFd, + offset: libc::off_t, + length: Option, + ) -> io::Result { + let nbytes = match length { + Some(n) => n.get() as i64, + None => -1, + }; + let mut params = libc::sf_parms { + header_data: ptr::null_mut(), + header_length: 0, + file_descriptor: file, + file_size: 0, + file_offset: offset as u64, + file_bytes: nbytes, + trailer_data: ptr::null_mut(), + trailer_length: 0, + bytes_sent: 0, + }; + // AIX doesn't support SF_REUSE, socket will be closed after successful transmission. + syscall!(send_file( + &mut self.as_raw() as *mut _, + &mut params as *mut _, + libc::SF_CLOSE as libc::c_uint, + )) + .map(|_| params.bytes_sent as usize) + } + /// Set the value of the `TCP_USER_TIMEOUT` option on this socket. /// /// If set, this specifies the maximum amount of time that transmitted data may remain @@ -1967,9 +2343,9 @@ ))) )] pub fn set_tcp_user_timeout(&self, timeout: Option) -> io::Result<()> { - let timeout = timeout - .map(|to| min(to.as_millis(), libc::c_uint::MAX as u128) as libc::c_uint) - .unwrap_or(0); + let timeout = timeout.map_or(0, |to| { + min(to.as_millis(), libc::c_uint::MAX as u128) as libc::c_uint + }); unsafe { setsockopt( self.as_raw(), @@ -1984,7 +2360,7 @@ /// /// For more information about this option, see [`set_tcp_user_timeout`]. /// - /// [`set_tcp_user_timeout`]: Socket::set_tcp_user_timeout + /// [`set_tcp_user_timeout`]: crate::Socket::set_tcp_user_timeout #[cfg(all( feature = "all", any(target_os = "android", target_os = "fuchsia", target_os = "linux") @@ -2035,10 +2411,418 @@ /// Detach Berkeley Packet Filter(BPF) from this socket. /// /// For more information about this option, see [`attach_filter`] + /// + /// [`attach_filter`]: crate::Socket::attach_filter #[cfg(all(feature = "all", any(target_os = "linux", target_os = "android")))] pub fn detach_filter(&self) -> io::Result<()> { unsafe { setsockopt(self.as_raw(), libc::SOL_SOCKET, libc::SO_DETACH_FILTER, 0) } } + + /// Gets the value for the `SO_COOKIE` option on this socket. + /// + /// The socket cookie is a unique, kernel-managed identifier tied to each socket. + /// Therefore, there is no corresponding `set` helper. + /// + /// For more information about this option, see [Linux patch](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5daab9db7b65df87da26fd8cfa695fb9546a1ddb) + #[cfg(all(feature = "all", any(target_os = "linux")))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", any(target_os = "linux")))))] + pub fn cookie(&self) -> io::Result { + unsafe { getsockopt::(self.as_raw(), libc::SOL_SOCKET, libc::SO_COOKIE) } + } + + /// Get the value of the `IPV6_TCLASS` option for this socket. + /// + /// For more information about this option, see [`set_tclass_v6`]. + /// + /// [`set_tclass_v6`]: crate::Socket::set_tclass_v6 + #[cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "linux", + target_os = "macos", + target_os = "netbsd", + target_os = "openbsd" + ) + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "linux", + target_os = "macos", + target_os = "netbsd", + target_os = "openbsd" + ) + ))) + )] + pub fn tclass_v6(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), IPPROTO_IPV6, libc::IPV6_TCLASS) + .map(|tclass| tclass as u32) + } + } + + /// Set the value of the `IPV6_TCLASS` option for this socket. + /// + /// Specifies the traffic class field that is used in every packets + /// sent from this socket. + #[cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "linux", + target_os = "macos", + target_os = "netbsd", + target_os = "openbsd" + ) + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "linux", + target_os = "macos", + target_os = "netbsd", + target_os = "openbsd" + ) + ))) + )] + pub fn set_tclass_v6(&self, tclass: u32) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + IPPROTO_IPV6, + libc::IPV6_TCLASS, + tclass as c_int, + ) + } + } + + /// Get the value of the `TCP_CONGESTION` option for this socket. + /// + /// For more information about this option, see [`set_tcp_congestion`]. + /// + /// [`set_tcp_congestion`]: crate::Socket::set_tcp_congestion + #[cfg(all(feature = "all", any(target_os = "freebsd", target_os = "linux")))] + #[cfg_attr( + docsrs, + doc(cfg(all(feature = "all", any(target_os = "freebsd", target_os = "linux")))) + )] + pub fn tcp_congestion(&self) -> io::Result> { + let mut payload: [u8; TCP_CA_NAME_MAX] = [0; TCP_CA_NAME_MAX]; + let mut len = payload.len() as libc::socklen_t; + syscall!(getsockopt( + self.as_raw(), + IPPROTO_TCP, + libc::TCP_CONGESTION, + payload.as_mut_ptr().cast(), + &mut len, + )) + .map(|_| { + let buf = &payload[..len as usize]; + // TODO: use `MaybeUninit::slice_assume_init_ref` once stable. + unsafe { &*(buf as *const [_] as *const [u8]) }.into() + }) + } + + /// Set the value of the `TCP_CONGESTION` option for this socket. + /// + /// Specifies the TCP congestion control algorithm to use for this socket. + /// + /// The value must be a valid TCP congestion control algorithm name of the + /// platform. For example, Linux may supports "reno", "cubic". + #[cfg(all(feature = "all", any(target_os = "freebsd", target_os = "linux")))] + #[cfg_attr( + docsrs, + doc(cfg(all(feature = "all", any(target_os = "freebsd", target_os = "linux")))) + )] + pub fn set_tcp_congestion(&self, tcp_ca_name: &[u8]) -> io::Result<()> { + syscall!(setsockopt( + self.as_raw(), + IPPROTO_TCP, + libc::TCP_CONGESTION, + tcp_ca_name.as_ptr() as *const _, + tcp_ca_name.len() as libc::socklen_t, + )) + .map(|_| ()) + } + + /// Set value for the `DCCP_SOCKOPT_SERVICE` option on this socket. + /// + /// Sets the DCCP service. The specification mandates use of service codes. + /// If this socket option is not set, the socket will fall back to 0 (which + /// means that no meaningful service code is present). On active sockets + /// this is set before [`connect`]. On passive sockets up to 32 service + /// codes can be set before calling [`bind`] + /// + /// [`connect`]: crate::Socket::connect + /// [`bind`]: crate::Socket::bind + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn set_dccp_service(&self, code: u32) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + libc::SOL_DCCP, + libc::DCCP_SOCKOPT_SERVICE, + code, + ) + } + } + + /// Get the value of the `DCCP_SOCKOPT_SERVICE` option on this socket. + /// + /// For more information about this option see [`set_dccp_service`] + /// + /// [`set_dccp_service`]: crate::Socket::set_dccp_service + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn dccp_service(&self) -> io::Result { + unsafe { getsockopt(self.as_raw(), libc::SOL_DCCP, libc::DCCP_SOCKOPT_SERVICE) } + } + + /// Set value for the `DCCP_SOCKOPT_CCID` option on this socket. + /// + /// This option sets both the TX and RX CCIDs at the same time. + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn set_dccp_ccid(&self, ccid: u8) -> io::Result<()> { + unsafe { setsockopt(self.as_raw(), libc::SOL_DCCP, libc::DCCP_SOCKOPT_CCID, ccid) } + } + + /// Get the value of the `DCCP_SOCKOPT_TX_CCID` option on this socket. + /// + /// For more information about this option see [`set_dccp_ccid`]. + /// + /// [`set_dccp_ccid`]: crate::Socket::set_dccp_ccid + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn dccp_tx_ccid(&self) -> io::Result { + unsafe { getsockopt(self.as_raw(), libc::SOL_DCCP, libc::DCCP_SOCKOPT_TX_CCID) } + } + + /// Get the value of the `DCCP_SOCKOPT_RX_CCID` option on this socket. + /// + /// For more information about this option see [`set_dccp_ccid`]. + /// + /// [`set_dccp_ccid`]: crate::Socket::set_dccp_ccid + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn dccp_xx_ccid(&self) -> io::Result { + unsafe { getsockopt(self.as_raw(), libc::SOL_DCCP, libc::DCCP_SOCKOPT_RX_CCID) } + } + + /// Set value for the `DCCP_SOCKOPT_SERVER_TIMEWAIT` option on this socket. + /// + /// Enables a listening socket to hold timewait state when closing the + /// connection. This option must be set after `accept` returns. + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn set_dccp_server_timewait(&self, hold_timewait: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + libc::SOL_DCCP, + libc::DCCP_SOCKOPT_SERVER_TIMEWAIT, + hold_timewait as c_int, + ) + } + } + + /// Get the value of the `DCCP_SOCKOPT_SERVER_TIMEWAIT` option on this socket. + /// + /// For more information see [`set_dccp_server_timewait`] + /// + /// [`set_dccp_server_timewait`]: crate::Socket::set_dccp_server_timewait + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn dccp_server_timewait(&self) -> io::Result { + unsafe { + getsockopt( + self.as_raw(), + libc::SOL_DCCP, + libc::DCCP_SOCKOPT_SERVER_TIMEWAIT, + ) + } + } + + /// Set value for the `DCCP_SOCKOPT_SEND_CSCOV` option on this socket. + /// + /// Both this option and `DCCP_SOCKOPT_RECV_CSCOV` are used for setting the + /// partial checksum coverage. The default is that checksums always cover + /// the entire packet and that only fully covered application data is + /// accepted by the receiver. Hence, when using this feature on the sender, + /// it must be enabled at the receiver too, with suitable choice of CsCov. + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn set_dccp_send_cscov(&self, level: u32) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + libc::SOL_DCCP, + libc::DCCP_SOCKOPT_SEND_CSCOV, + level, + ) + } + } + + /// Get the value of the `DCCP_SOCKOPT_SEND_CSCOV` option on this socket. + /// + /// For more information on this option see [`set_dccp_send_cscov`]. + /// + /// [`set_dccp_send_cscov`]: crate::Socket::set_dccp_send_cscov + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn dccp_send_cscov(&self) -> io::Result { + unsafe { getsockopt(self.as_raw(), libc::SOL_DCCP, libc::DCCP_SOCKOPT_SEND_CSCOV) } + } + + /// Set the value of the `DCCP_SOCKOPT_RECV_CSCOV` option on this socket. + /// + /// This option is only useful when combined with [`set_dccp_send_cscov`]. + /// + /// [`set_dccp_send_cscov`]: crate::Socket::set_dccp_send_cscov + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn set_dccp_recv_cscov(&self, level: u32) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + libc::SOL_DCCP, + libc::DCCP_SOCKOPT_RECV_CSCOV, + level, + ) + } + } + + /// Get the value of the `DCCP_SOCKOPT_RECV_CSCOV` option on this socket. + /// + /// For more information on this option see [`set_dccp_recv_cscov`]. + /// + /// [`set_dccp_recv_cscov`]: crate::Socket::set_dccp_recv_cscov + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn dccp_recv_cscov(&self) -> io::Result { + unsafe { getsockopt(self.as_raw(), libc::SOL_DCCP, libc::DCCP_SOCKOPT_RECV_CSCOV) } + } + + /// Set value for the `DCCP_SOCKOPT_QPOLICY_TXQLEN` option on this socket. + /// + /// This option sets the maximum length of the output queue. A zero value is + /// interpreted as unbounded queue length. + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn set_dccp_qpolicy_txqlen(&self, length: u32) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + libc::SOL_DCCP, + libc::DCCP_SOCKOPT_QPOLICY_TXQLEN, + length, + ) + } + } + + /// Get the value of the `DCCP_SOCKOPT_QPOLICY_TXQLEN` on this socket. + /// + /// For more information on this option see [`set_dccp_qpolicy_txqlen`]. + /// + /// [`set_dccp_qpolicy_txqlen`]: crate::Socket::set_dccp_qpolicy_txqlen + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn dccp_qpolicy_txqlen(&self) -> io::Result { + unsafe { + getsockopt( + self.as_raw(), + libc::SOL_DCCP, + libc::DCCP_SOCKOPT_QPOLICY_TXQLEN, + ) + } + } + + /// Get the value of the `DCCP_SOCKOPT_AVAILABLE_CCIDS` option on this socket. + /// + /// Returns the list of CCIDs supported by the endpoint. + /// + /// The parameter `N` is used to get the maximum number of supported + /// endpoints. The [documentation] recommends a minimum of four at the time + /// of writing. + /// + /// [documentation]: https://www.kernel.org/doc/html/latest/networking/dccp.html + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn dccp_available_ccids(&self) -> io::Result> { + let mut endpoints = [0; N]; + let mut length = endpoints.len() as libc::socklen_t; + syscall!(getsockopt( + self.as_raw(), + libc::SOL_DCCP, + libc::DCCP_SOCKOPT_AVAILABLE_CCIDS, + endpoints.as_mut_ptr().cast(), + &mut length, + ))?; + Ok(CcidEndpoints { endpoints, length }) + } + + /// Get the value of the `DCCP_SOCKOPT_GET_CUR_MPS` option on this socket. + /// + /// This option retrieves the current maximum packet size (application + /// payload size) in bytes. + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn dccp_cur_mps(&self) -> io::Result { + unsafe { + getsockopt( + self.as_raw(), + libc::SOL_DCCP, + libc::DCCP_SOCKOPT_GET_CUR_MPS, + ) + } + } +} + +/// See [`Socket::dccp_available_ccids`]. +#[cfg(all(feature = "all", target_os = "linux"))] +#[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] +#[derive(Debug)] +pub struct CcidEndpoints { + endpoints: [u8; N], + length: u32, +} + +#[cfg(all(feature = "all", target_os = "linux"))] +#[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] +impl std::ops::Deref for CcidEndpoints { + type Target = [u8]; + + fn deref(&self) -> &[u8] { + &self.endpoints[0..self.length as usize] + } +} + +#[cfg_attr(docsrs, doc(cfg(unix)))] +impl AsFd for crate::Socket { + fn as_fd(&self) -> BorrowedFd<'_> { + // SAFETY: lifetime is bound by self. + unsafe { BorrowedFd::borrow_raw(self.as_raw()) } + } } #[cfg_attr(docsrs, doc(cfg(unix)))] @@ -2049,12 +2833,28 @@ } #[cfg_attr(docsrs, doc(cfg(unix)))] +impl From for OwnedFd { + fn from(sock: crate::Socket) -> OwnedFd { + // SAFETY: sock.into_raw() always returns a valid fd. + unsafe { OwnedFd::from_raw_fd(sock.into_raw()) } + } +} + +#[cfg_attr(docsrs, doc(cfg(unix)))] impl IntoRawFd for crate::Socket { fn into_raw_fd(self) -> c_int { self.into_raw() } } +#[cfg_attr(docsrs, doc(cfg(unix)))] +impl From for crate::Socket { + fn from(fd: OwnedFd) -> crate::Socket { + // SAFETY: `OwnedFd` ensures the fd is valid. + unsafe { crate::Socket::from_raw_fd(fd.into_raw_fd()) } + } +} + #[cfg_attr(docsrs, doc(cfg(unix)))] impl FromRawFd for crate::Socket { unsafe fn from_raw_fd(fd: c_int) -> crate::Socket { diff -Nru temporalio-1.3.0/vendor/socket2/src/sys/windows.rs temporalio-1.3.0/vendor/socket2/src/sys/windows.rs --- temporalio-1.3.0/vendor/socket2/src/sys/windows.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2/src/sys/windows.rs 2023-10-30 19:40:00.000000000 +0000 @@ -11,32 +11,27 @@ use std::marker::PhantomData; use std::mem::{self, size_of, MaybeUninit}; use std::net::{self, Ipv4Addr, Ipv6Addr, Shutdown}; -use std::os::windows::prelude::*; +use std::os::windows::io::{ + AsRawSocket, AsSocket, BorrowedSocket, FromRawSocket, IntoRawSocket, OwnedSocket, RawSocket, +}; +use std::path::Path; use std::sync::Once; use std::time::{Duration, Instant}; -use std::{ptr, slice}; +use std::{process, ptr, slice}; -use winapi::ctypes::c_long; -use winapi::shared::in6addr::*; -use winapi::shared::inaddr::*; -use winapi::shared::minwindef::DWORD; -use winapi::shared::minwindef::ULONG; -use winapi::shared::mstcpip::{tcp_keepalive, SIO_KEEPALIVE_VALS}; -use winapi::shared::ntdef::HANDLE; -use winapi::shared::ws2def; -use winapi::shared::ws2def::WSABUF; -use winapi::um::handleapi::SetHandleInformation; -use winapi::um::processthreadsapi::GetCurrentProcessId; -use winapi::um::winbase::{self, INFINITE}; -use winapi::um::winsock2::{ - self as sock, u_long, POLLERR, POLLHUP, POLLRDNORM, POLLWRNORM, SD_BOTH, SD_RECEIVE, SD_SEND, - WSAPOLLFD, +use windows_sys::Win32::Foundation::{SetHandleInformation, HANDLE, HANDLE_FLAG_INHERIT}; +use windows_sys::Win32::Networking::WinSock::{ + self, tcp_keepalive, FIONBIO, IN6_ADDR, IN6_ADDR_0, INVALID_SOCKET, IN_ADDR, IN_ADDR_0, + POLLERR, POLLHUP, POLLRDNORM, POLLWRNORM, SD_BOTH, SD_RECEIVE, SD_SEND, SIO_KEEPALIVE_VALS, + SOCKET_ERROR, WSABUF, WSAEMSGSIZE, WSAESHUTDOWN, WSAPOLLFD, WSAPROTOCOL_INFOW, + WSA_FLAG_NO_HANDLE_INHERIT, WSA_FLAG_OVERLAPPED, }; -use winapi::um::winsock2::{SOCKET_ERROR, WSAEMSGSIZE, WSAESHUTDOWN}; +use windows_sys::Win32::System::Threading::INFINITE; use crate::{RecvFlags, SockAddr, TcpKeepalive, Type}; -pub(crate) use winapi::ctypes::c_int; +#[allow(non_camel_case_types)] +pub(crate) type c_int = std::os::raw::c_int; /// Fake MSG_TRUNC flag for the [`RecvFlags`] struct. /// @@ -45,39 +40,45 @@ pub(crate) const MSG_TRUNC: c_int = 0x01; // Used in `Domain`. -pub(crate) use winapi::shared::ws2def::{AF_INET, AF_INET6}; +pub(crate) const AF_INET: c_int = windows_sys::Win32::Networking::WinSock::AF_INET as c_int; +pub(crate) const AF_INET6: c_int = windows_sys::Win32::Networking::WinSock::AF_INET6 as c_int; +pub(crate) const AF_UNIX: c_int = windows_sys::Win32::Networking::WinSock::AF_UNIX as c_int; +pub(crate) const AF_UNSPEC: c_int = windows_sys::Win32::Networking::WinSock::AF_UNSPEC as c_int; // Used in `Type`. -pub(crate) use winapi::shared::ws2def::{SOCK_DGRAM, SOCK_STREAM}; -#[cfg(feature = "all")] -pub(crate) use winapi::shared::ws2def::{SOCK_RAW, SOCK_SEQPACKET}; +pub(crate) const SOCK_STREAM: c_int = windows_sys::Win32::Networking::WinSock::SOCK_STREAM as c_int; +pub(crate) const SOCK_DGRAM: c_int = windows_sys::Win32::Networking::WinSock::SOCK_DGRAM as c_int; +pub(crate) const SOCK_RAW: c_int = windows_sys::Win32::Networking::WinSock::SOCK_RAW as c_int; +const SOCK_RDM: c_int = windows_sys::Win32::Networking::WinSock::SOCK_RDM as c_int; +pub(crate) const SOCK_SEQPACKET: c_int = + windows_sys::Win32::Networking::WinSock::SOCK_SEQPACKET as c_int; // Used in `Protocol`. -pub(crate) const IPPROTO_ICMP: c_int = winapi::shared::ws2def::IPPROTO_ICMP as c_int; -pub(crate) const IPPROTO_ICMPV6: c_int = winapi::shared::ws2def::IPPROTO_ICMPV6 as c_int; -pub(crate) const IPPROTO_TCP: c_int = winapi::shared::ws2def::IPPROTO_TCP as c_int; -pub(crate) const IPPROTO_UDP: c_int = winapi::shared::ws2def::IPPROTO_UDP as c_int; +pub(crate) use windows_sys::Win32::Networking::WinSock::{ + IPPROTO_ICMP, IPPROTO_ICMPV6, IPPROTO_TCP, IPPROTO_UDP, +}; // Used in `SockAddr`. -pub(crate) use winapi::shared::ws2def::{ - ADDRESS_FAMILY as sa_family_t, SOCKADDR as sockaddr, SOCKADDR_IN as sockaddr_in, +pub(crate) use windows_sys::Win32::Networking::WinSock::{ + SOCKADDR as sockaddr, SOCKADDR_IN as sockaddr_in, SOCKADDR_IN6 as sockaddr_in6, SOCKADDR_STORAGE as sockaddr_storage, }; -pub(crate) use winapi::shared::ws2ipdef::SOCKADDR_IN6_LH as sockaddr_in6; -pub(crate) use winapi::um::ws2tcpip::socklen_t; +#[allow(non_camel_case_types)] +pub(crate) type sa_family_t = windows_sys::Win32::Networking::WinSock::sa_family_t; +#[allow(non_camel_case_types)] +pub(crate) type socklen_t = windows_sys::Win32::Networking::WinSock::socklen_t; // Used in `Socket`. -pub(crate) use winapi::shared::ws2def::{ - IPPROTO_IP, SOL_SOCKET, SO_BROADCAST, SO_ERROR, SO_KEEPALIVE, SO_LINGER, SO_OOBINLINE, - SO_RCVBUF, SO_RCVTIMEO, SO_REUSEADDR, SO_SNDBUF, SO_SNDTIMEO, SO_TYPE, TCP_NODELAY, -}; #[cfg(feature = "all")] -pub(crate) use winapi::shared::ws2ipdef::IP_HDRINCL; -pub(crate) use winapi::shared::ws2ipdef::{ - IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP, IPV6_MREQ as Ipv6Mreq, IPV6_MULTICAST_HOPS, - IPV6_MULTICAST_IF, IPV6_MULTICAST_LOOP, IPV6_UNICAST_HOPS, IPV6_V6ONLY, IP_ADD_MEMBERSHIP, - IP_ADD_SOURCE_MEMBERSHIP, IP_DROP_MEMBERSHIP, IP_DROP_SOURCE_MEMBERSHIP, IP_MREQ as IpMreq, - IP_MREQ_SOURCE as IpMreqSource, IP_MULTICAST_IF, IP_MULTICAST_LOOP, IP_MULTICAST_TTL, IP_TOS, - IP_TTL, +pub(crate) use windows_sys::Win32::Networking::WinSock::IP_HDRINCL; +pub(crate) use windows_sys::Win32::Networking::WinSock::{ + IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP, IPV6_MREQ as Ipv6Mreq, + IPV6_MULTICAST_HOPS, IPV6_MULTICAST_IF, IPV6_MULTICAST_LOOP, IPV6_RECVTCLASS, + IPV6_UNICAST_HOPS, IPV6_V6ONLY, IP_ADD_MEMBERSHIP, IP_ADD_SOURCE_MEMBERSHIP, + IP_DROP_MEMBERSHIP, IP_DROP_SOURCE_MEMBERSHIP, IP_MREQ as IpMreq, + IP_MREQ_SOURCE as IpMreqSource, IP_MULTICAST_IF, IP_MULTICAST_LOOP, IP_MULTICAST_TTL, + IP_RECVTOS, IP_TOS, IP_TTL, LINGER as linger, MSG_OOB, MSG_PEEK, SO_BROADCAST, SO_ERROR, + SO_KEEPALIVE, SO_LINGER, SO_OOBINLINE, SO_RCVBUF, SO_RCVTIMEO, SO_REUSEADDR, SO_SNDBUF, + SO_SNDTIMEO, SO_TYPE, TCP_NODELAY, }; -pub(crate) use winapi::um::winsock2::{linger, MSG_OOB, MSG_PEEK}; -pub(crate) const IPPROTO_IPV6: c_int = winapi::shared::ws2def::IPPROTO_IPV6 as c_int; +pub(crate) const IPPROTO_IP: c_int = windows_sys::Win32::Networking::WinSock::IPPROTO_IP as c_int; +pub(crate) const SOL_SOCKET: c_int = windows_sys::Win32::Networking::WinSock::SOL_SOCKET as c_int; /// Type used in set/getsockopt to retrieve the `TCP_NODELAY` option. /// @@ -86,16 +87,16 @@ /// `BOOL` (alias for `c_int`, 4 bytes), however in practice this turns out to /// be false (or misleading) as a `BOOLEAN` (`c_uchar`, 1 byte) is returned by /// `getsockopt`. -pub(crate) type Bool = winapi::shared::ntdef::BOOLEAN; +pub(crate) type Bool = windows_sys::Win32::Foundation::BOOLEAN; /// Maximum size of a buffer passed to system call like `recv` and `send`. -const MAX_BUF_LEN: usize = ::max_value() as usize; +const MAX_BUF_LEN: usize = c_int::MAX as usize; /// Helper macro to execute a system call that returns an `io::Result`. macro_rules! syscall { ($fn: ident ( $($arg: expr),* $(,)* ), $err_test: path, $err_value: expr) => {{ #[allow(unused_unsafe)] - let res = unsafe { sock::$fn($($arg, )*) }; + let res = unsafe { windows_sys::Win32::Networking::WinSock::$fn($($arg, )*) }; if $err_test(&res, &$err_value) { Err(io::Error::last_os_error()) } else { @@ -106,10 +107,10 @@ impl_debug!( crate::Domain, - ws2def::AF_INET, - ws2def::AF_INET6, - ws2def::AF_UNIX, - ws2def::AF_UNSPEC, // = 0. + self::AF_INET, + self::AF_INET6, + self::AF_UNIX, + self::AF_UNSPEC, ); /// Windows only API. @@ -132,19 +133,19 @@ impl_debug!( crate::Type, - ws2def::SOCK_STREAM, - ws2def::SOCK_DGRAM, - ws2def::SOCK_RAW, - ws2def::SOCK_RDM, - ws2def::SOCK_SEQPACKET, + self::SOCK_STREAM, + self::SOCK_DGRAM, + self::SOCK_RAW, + self::SOCK_RDM, + self::SOCK_SEQPACKET, ); impl_debug!( crate::Protocol, - self::IPPROTO_ICMP, - self::IPPROTO_ICMPV6, - self::IPPROTO_TCP, - self::IPPROTO_UDP, + WinSock::IPPROTO_ICMP, + WinSock::IPPROTO_ICMPV6, + WinSock::IPPROTO_TCP, + WinSock::IPPROTO_UDP, ); impl std::fmt::Debug for RecvFlags { @@ -167,10 +168,10 @@ impl<'a> MaybeUninitSlice<'a> { pub fn new(buf: &'a mut [MaybeUninit]) -> MaybeUninitSlice<'a> { - assert!(buf.len() <= ULONG::MAX as usize); + assert!(buf.len() <= u32::MAX as usize); MaybeUninitSlice { vec: WSABUF { - len: buf.len() as ULONG, + len: buf.len() as u32, buf: buf.as_mut_ptr().cast(), }, _lifetime: PhantomData, @@ -197,7 +198,7 @@ }); } -pub(crate) type Socket = sock::SOCKET; +pub(crate) type Socket = windows_sys::Win32::Networking::WinSock::SOCKET; pub(crate) unsafe fn socket_from_raw(socket: Socket) -> crate::socket::Inner { crate::socket::Inner::from_raw_socket(socket as RawSocket) @@ -217,7 +218,7 @@ // Check if we set our custom flag. let flags = if ty & Type::NO_INHERIT != 0 { ty = ty & !Type::NO_INHERIT; - sock::WSA_FLAG_NO_HANDLE_INHERIT + WSA_FLAG_NO_HANDLE_INHERIT } else { 0 }; @@ -229,10 +230,10 @@ protocol, ptr::null_mut(), 0, - sock::WSA_FLAG_OVERLAPPED | flags, + WSA_FLAG_OVERLAPPED | flags, ), PartialEq::eq, - sock::INVALID_SOCKET + INVALID_SOCKET ) } @@ -249,7 +250,7 @@ let mut fd_array = WSAPOLLFD { fd: socket.as_raw(), - events: POLLRDNORM | POLLWRNORM, + events: (POLLRDNORM | POLLWRNORM) as i16, revents: 0, }; @@ -260,17 +261,19 @@ } let timeout = (timeout - elapsed).as_millis(); - let timeout = clamp(timeout, 1, c_int::max_value() as u128) as c_int; + let timeout = clamp(timeout, 1, c_int::MAX as u128) as c_int; match syscall!( WSAPoll(&mut fd_array, 1, timeout), PartialEq::eq, - sock::SOCKET_ERROR + SOCKET_ERROR ) { Ok(0) => return Err(io::ErrorKind::TimedOut.into()), Ok(_) => { // Error or hang up indicates an error (or failure to connect). - if (fd_array.revents & POLLERR) != 0 || (fd_array.revents & POLLHUP) != 0 { + if (fd_array.revents & POLLERR as i16) != 0 + || (fd_array.revents & POLLHUP as i16) != 0 + { match socket.take_error() { Ok(Some(err)) => return Err(err), Ok(None) => { @@ -312,11 +315,11 @@ pub(crate) fn accept(socket: Socket) -> io::Result<(Socket, SockAddr)> { // Safety: `accept` initialises the `SockAddr` for us. unsafe { - SockAddr::init(|storage, len| { + SockAddr::try_init(|storage, len| { syscall!( accept(socket, storage.cast(), len), PartialEq::eq, - sock::INVALID_SOCKET + INVALID_SOCKET ) }) } @@ -325,11 +328,11 @@ pub(crate) fn getsockname(socket: Socket) -> io::Result { // Safety: `getsockname` initialises the `SockAddr` for us. unsafe { - SockAddr::init(|storage, len| { + SockAddr::try_init(|storage, len| { syscall!( getsockname(socket, storage.cast(), len), PartialEq::eq, - sock::SOCKET_ERROR + SOCKET_ERROR ) }) } @@ -339,11 +342,11 @@ pub(crate) fn getpeername(socket: Socket) -> io::Result { // Safety: `getpeername` initialises the `SockAddr` for us. unsafe { - SockAddr::init(|storage, len| { + SockAddr::try_init(|storage, len| { syscall!( getpeername(socket, storage.cast(), len), PartialEq::eq, - sock::SOCKET_ERROR + SOCKET_ERROR ) }) } @@ -351,11 +354,12 @@ } pub(crate) fn try_clone(socket: Socket) -> io::Result { - let mut info: MaybeUninit = MaybeUninit::uninit(); + let mut info: MaybeUninit = MaybeUninit::uninit(); syscall!( - WSADuplicateSocketW(socket, GetCurrentProcessId(), info.as_mut_ptr()), + // NOTE: `process.id` is the same as `GetCurrentProcessId`. + WSADuplicateSocketW(socket, process::id(), info.as_mut_ptr()), PartialEq::eq, - sock::SOCKET_ERROR + SOCKET_ERROR )?; // Safety: `WSADuplicateSocketW` intialised `info` for us. let mut info = unsafe { info.assume_init() }; @@ -367,16 +371,16 @@ info.iProtocol, &mut info, 0, - sock::WSA_FLAG_OVERLAPPED | sock::WSA_FLAG_NO_HANDLE_INHERIT, + WSA_FLAG_OVERLAPPED | WSA_FLAG_NO_HANDLE_INHERIT, ), PartialEq::eq, - sock::INVALID_SOCKET + INVALID_SOCKET ) } pub(crate) fn set_nonblocking(socket: Socket, nonblocking: bool) -> io::Result<()> { - let mut nonblocking = nonblocking as u_long; - ioctlsocket(socket, sock::FIONBIO, &mut nonblocking) + let mut nonblocking = if nonblocking { 1 } else { 0 }; + ioctlsocket(socket, FIONBIO, &mut nonblocking) } pub(crate) fn shutdown(socket: Socket, how: Shutdown) -> io::Result<()> { @@ -384,8 +388,8 @@ Shutdown::Write => SD_SEND, Shutdown::Read => SD_RECEIVE, Shutdown::Both => SD_BOTH, - }; - syscall!(shutdown(socket, how), PartialEq::eq, sock::SOCKET_ERROR).map(|_| ()) + } as i32; + syscall!(shutdown(socket, how), PartialEq::eq, SOCKET_ERROR).map(|_| ()) } pub(crate) fn recv(socket: Socket, buf: &mut [MaybeUninit], flags: c_int) -> io::Result { @@ -397,11 +401,11 @@ flags, ), PartialEq::eq, - sock::SOCKET_ERROR + SOCKET_ERROR ); match res { Ok(n) => Ok(n as usize), - Err(ref err) if err.raw_os_error() == Some(sock::WSAESHUTDOWN as i32) => Ok(0), + Err(ref err) if err.raw_os_error() == Some(WSAESHUTDOWN as i32) => Ok(0), Err(err) => Err(err), } } @@ -412,26 +416,24 @@ flags: c_int, ) -> io::Result<(usize, RecvFlags)> { let mut nread = 0; - let mut flags = flags as DWORD; + let mut flags = flags as u32; let res = syscall!( WSARecv( socket, bufs.as_mut_ptr().cast(), - min(bufs.len(), DWORD::max_value() as usize) as DWORD, + min(bufs.len(), u32::MAX as usize) as u32, &mut nread, &mut flags, ptr::null_mut(), None, ), PartialEq::eq, - sock::SOCKET_ERROR + SOCKET_ERROR ); match res { Ok(_) => Ok((nread as usize, RecvFlags(0))), - Err(ref err) if err.raw_os_error() == Some(sock::WSAESHUTDOWN as i32) => { - Ok((0, RecvFlags(0))) - } - Err(ref err) if err.raw_os_error() == Some(sock::WSAEMSGSIZE as i32) => { + Err(ref err) if err.raw_os_error() == Some(WSAESHUTDOWN as i32) => Ok((0, RecvFlags(0))), + Err(ref err) if err.raw_os_error() == Some(WSAEMSGSIZE as i32) => { Ok((nread as usize, RecvFlags(MSG_TRUNC))) } Err(err) => Err(err), @@ -445,7 +447,7 @@ ) -> io::Result<(usize, SockAddr)> { // Safety: `recvfrom` initialises the `SockAddr` for us. unsafe { - SockAddr::init(|storage, addrlen| { + SockAddr::try_init(|storage, addrlen| { let res = syscall!( recvfrom( socket, @@ -456,11 +458,11 @@ addrlen, ), PartialEq::eq, - sock::SOCKET_ERROR + SOCKET_ERROR ); match res { Ok(n) => Ok(n as usize), - Err(ref err) if err.raw_os_error() == Some(sock::WSAESHUTDOWN as i32) => Ok(0), + Err(ref err) if err.raw_os_error() == Some(WSAESHUTDOWN as i32) => Ok(0), Err(err) => Err(err), } }) @@ -470,7 +472,7 @@ pub(crate) fn peek_sender(socket: Socket) -> io::Result { // Safety: `recvfrom` initialises the `SockAddr` for us. let ((), sender) = unsafe { - SockAddr::init(|storage, addrlen| { + SockAddr::try_init(|storage, addrlen| { let res = syscall!( recvfrom( socket, @@ -506,14 +508,14 @@ ) -> io::Result<(usize, RecvFlags, SockAddr)> { // Safety: `recvfrom` initialises the `SockAddr` for us. unsafe { - SockAddr::init(|storage, addrlen| { + SockAddr::try_init(|storage, addrlen| { let mut nread = 0; - let mut flags = flags as DWORD; + let mut flags = flags as u32; let res = syscall!( WSARecvFrom( socket, bufs.as_mut_ptr().cast(), - min(bufs.len(), DWORD::max_value() as usize) as DWORD, + min(bufs.len(), u32::MAX as usize) as u32, &mut nread, &mut flags, storage.cast(), @@ -522,14 +524,14 @@ None, ), PartialEq::eq, - sock::SOCKET_ERROR + SOCKET_ERROR ); match res { Ok(_) => Ok((nread as usize, RecvFlags(0))), - Err(ref err) if err.raw_os_error() == Some(sock::WSAESHUTDOWN as i32) => { + Err(ref err) if err.raw_os_error() == Some(WSAESHUTDOWN as i32) => { Ok((nread as usize, RecvFlags(0))) } - Err(ref err) if err.raw_os_error() == Some(sock::WSAEMSGSIZE as i32) => { + Err(ref err) if err.raw_os_error() == Some(WSAEMSGSIZE as i32) => { Ok((nread as usize, RecvFlags(MSG_TRUNC))) } Err(err) => Err(err), @@ -548,7 +550,7 @@ flags, ), PartialEq::eq, - sock::SOCKET_ERROR + SOCKET_ERROR ) .map(|n| n as usize) } @@ -576,14 +578,14 @@ // // [1] https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsasend bufs.as_ptr() as *mut _, - min(bufs.len(), DWORD::max_value() as usize) as DWORD, + min(bufs.len(), u32::MAX as usize) as u32, &mut nsent, - flags as DWORD, + flags as u32, std::ptr::null_mut(), None, ), PartialEq::eq, - sock::SOCKET_ERROR + SOCKET_ERROR ) .map(|_| nsent as usize) } @@ -604,7 +606,7 @@ addr.len(), ), PartialEq::eq, - sock::SOCKET_ERROR + SOCKET_ERROR ) .map(|n| n as usize) } @@ -621,26 +623,26 @@ socket, // FIXME: Same problem as in `send_vectored`. bufs.as_ptr() as *mut _, - bufs.len().min(DWORD::MAX as usize) as DWORD, + bufs.len().min(u32::MAX as usize) as u32, &mut nsent, - flags as DWORD, + flags as u32, addr.as_ptr(), addr.len(), ptr::null_mut(), None, ), PartialEq::eq, - sock::SOCKET_ERROR + SOCKET_ERROR ) .map(|_| nsent as usize) } /// Wrapper around `getsockopt` to deal with platform specific timeouts. -pub(crate) fn timeout_opt(fd: Socket, lvl: c_int, name: c_int) -> io::Result> { +pub(crate) fn timeout_opt(fd: Socket, lvl: c_int, name: i32) -> io::Result> { unsafe { getsockopt(fd, lvl, name).map(from_ms) } } -fn from_ms(duration: DWORD) -> Option { +fn from_ms(duration: u32) -> Option { if duration == 0 { None } else { @@ -652,16 +654,16 @@ /// Wrapper around `setsockopt` to deal with platform specific timeouts. pub(crate) fn set_timeout_opt( - fd: Socket, + socket: Socket, level: c_int, - optname: c_int, + optname: i32, duration: Option, ) -> io::Result<()> { let duration = into_ms(duration); - unsafe { setsockopt(fd, level, optname, duration) } + unsafe { setsockopt(socket, level, optname, duration) } } -fn into_ms(duration: Option) -> DWORD { +fn into_ms(duration: Option) -> u32 { // Note that a duration is a (u64, u32) (seconds, nanoseconds) pair, and the // timeouts in windows APIs are typically u32 milliseconds. To translate, we // have two pieces to take care of: @@ -669,9 +671,9 @@ // * Nanosecond precision is rounded up // * Greater than u32::MAX milliseconds (50 days) is rounded up to // INFINITE (never time out). - duration - .map(|duration| min(duration.as_millis(), INFINITE as u128) as DWORD) - .unwrap_or(0) + duration.map_or(0, |duration| { + min(duration.as_millis(), INFINITE as u128) as u32 + }) } pub(crate) fn set_tcp_keepalive(socket: Socket, keepalive: &TcpKeepalive) -> io::Result<()> { @@ -694,25 +696,26 @@ None, ), PartialEq::eq, - sock::SOCKET_ERROR + SOCKET_ERROR ) .map(|_| ()) } /// Caller must ensure `T` is the correct type for `level` and `optname`. -pub(crate) unsafe fn getsockopt(socket: Socket, level: c_int, optname: c_int) -> io::Result { +// NOTE: `optname` is actually `i32`, but all constants are `u32`. +pub(crate) unsafe fn getsockopt(socket: Socket, level: c_int, optname: i32) -> io::Result { let mut optval: MaybeUninit = MaybeUninit::uninit(); let mut optlen = mem::size_of::() as c_int; syscall!( getsockopt( socket, - level, + level as i32, optname, optval.as_mut_ptr().cast(), &mut optlen, ), PartialEq::eq, - sock::SOCKET_ERROR + SOCKET_ERROR ) .map(|_| { debug_assert_eq!(optlen as usize, mem::size_of::()); @@ -722,57 +725,61 @@ } /// Caller must ensure `T` is the correct type for `level` and `optname`. +// NOTE: `optname` is actually `i32`, but all constants are `u32`. pub(crate) unsafe fn setsockopt( socket: Socket, level: c_int, - optname: c_int, + optname: i32, optval: T, ) -> io::Result<()> { syscall!( setsockopt( socket, - level, + level as i32, optname, (&optval as *const T).cast(), mem::size_of::() as c_int, ), PartialEq::eq, - sock::SOCKET_ERROR + SOCKET_ERROR ) .map(|_| ()) } -fn ioctlsocket(socket: Socket, cmd: c_long, payload: &mut u_long) -> io::Result<()> { +fn ioctlsocket(socket: Socket, cmd: i32, payload: &mut u32) -> io::Result<()> { syscall!( ioctlsocket(socket, cmd, payload), PartialEq::eq, - sock::SOCKET_ERROR + SOCKET_ERROR ) .map(|_| ()) } pub(crate) fn to_in_addr(addr: &Ipv4Addr) -> IN_ADDR { - let mut s_un: in_addr_S_un = unsafe { mem::zeroed() }; - // `S_un` is stored as BE on all machines, and the array is in BE order. So - // the native endian conversion method is used so that it's never swapped. - unsafe { *(s_un.S_addr_mut()) = u32::from_ne_bytes(addr.octets()) }; - IN_ADDR { S_un: s_un } + IN_ADDR { + S_un: IN_ADDR_0 { + // `S_un` is stored as BE on all machines, and the array is in BE + // order. So the native endian conversion method is used so that + // it's never swapped. + S_addr: u32::from_ne_bytes(addr.octets()), + }, + } } pub(crate) fn from_in_addr(in_addr: IN_ADDR) -> Ipv4Addr { - Ipv4Addr::from(unsafe { *in_addr.S_un.S_addr() }.to_ne_bytes()) + Ipv4Addr::from(unsafe { in_addr.S_un.S_addr }.to_ne_bytes()) } -pub(crate) fn to_in6_addr(addr: &Ipv6Addr) -> in6_addr { - let mut ret_addr: in6_addr_u = unsafe { mem::zeroed() }; - unsafe { *(ret_addr.Byte_mut()) = addr.octets() }; - let mut ret: in6_addr = unsafe { mem::zeroed() }; - ret.u = ret_addr; - ret +pub(crate) fn to_in6_addr(addr: &Ipv6Addr) -> IN6_ADDR { + IN6_ADDR { + u: IN6_ADDR_0 { + Byte: addr.octets(), + }, + } } -pub(crate) fn from_in6_addr(addr: in6_addr) -> Ipv6Addr { - Ipv6Addr::from(*unsafe { addr.u.Byte() }) +pub(crate) fn from_in6_addr(addr: IN6_ADDR) -> Ipv6Addr { + Ipv6Addr::from(unsafe { addr.u.Byte }) } pub(crate) fn to_mreqn( @@ -801,6 +808,49 @@ } } +#[allow(unsafe_op_in_unsafe_fn)] +pub(crate) fn unix_sockaddr(path: &Path) -> io::Result { + // SAFETY: a `sockaddr_storage` of all zeros is valid. + let mut storage = unsafe { mem::zeroed::() }; + let len = { + let storage: &mut windows_sys::Win32::Networking::WinSock::SOCKADDR_UN = + unsafe { &mut *(&mut storage as *mut sockaddr_storage).cast() }; + + // Windows expects a UTF-8 path here even though Windows paths are + // usually UCS-2 encoded. If Rust exposed OsStr's Wtf8 encoded + // buffer, this could be used directly, relying on Windows to + // validate the path, but Rust hides this implementation detail. + // + // See . + let bytes = path + .to_str() + .ok_or_else(|| io::Error::new(io::ErrorKind::InvalidInput, "path must be valid UTF-8"))? + .as_bytes(); + + // Windows appears to allow non-null-terminated paths, but this is + // not documented, so do not rely on it yet. + // + // See . + if bytes.len() >= storage.sun_path.len() { + return Err(io::Error::new( + io::ErrorKind::InvalidInput, + "path must be shorter than SUN_LEN", + )); + } + + storage.sun_family = crate::sys::AF_UNIX as sa_family_t; + // `storage` was initialized to zero above, so the path is + // already null terminated. + storage.sun_path[..bytes.len()].copy_from_slice(bytes); + + let base = storage as *const _ as usize; + let path = &storage.sun_path as *const _ as usize; + let sun_path_offset = path - base; + sun_path_offset + bytes.len() + 1 + }; + Ok(unsafe { SockAddr::new(storage, len as socklen_t) }) +} + /// Windows only API. impl crate::Socket { /// Sets `HANDLE_FLAG_INHERIT` using `SetHandleInformation`. @@ -812,11 +862,11 @@ pub(crate) fn _set_no_inherit(&self, no_inherit: bool) -> io::Result<()> { // NOTE: can't use `syscall!` because it expects the function in the - // `sock::` path. + // `windows_sys::Win32::Networking::WinSock::` path. let res = unsafe { SetHandleInformation( self.as_raw() as HANDLE, - winbase::HANDLE_FLAG_INHERIT, + HANDLE_FLAG_INHERIT, !no_inherit as _, ) }; @@ -829,18 +879,45 @@ } } +#[cfg_attr(docsrs, doc(cfg(windows)))] +impl AsSocket for crate::Socket { + fn as_socket(&self) -> BorrowedSocket<'_> { + // SAFETY: lifetime is bound by self. + unsafe { BorrowedSocket::borrow_raw(self.as_raw() as RawSocket) } + } +} + +#[cfg_attr(docsrs, doc(cfg(windows)))] impl AsRawSocket for crate::Socket { fn as_raw_socket(&self) -> RawSocket { self.as_raw() as RawSocket } } +#[cfg_attr(docsrs, doc(cfg(windows)))] +impl From for OwnedSocket { + fn from(sock: crate::Socket) -> OwnedSocket { + // SAFETY: sock.into_raw() always returns a valid fd. + unsafe { OwnedSocket::from_raw_socket(sock.into_raw() as RawSocket) } + } +} + +#[cfg_attr(docsrs, doc(cfg(windows)))] impl IntoRawSocket for crate::Socket { fn into_raw_socket(self) -> RawSocket { self.into_raw() as RawSocket } } +#[cfg_attr(docsrs, doc(cfg(windows)))] +impl From for crate::Socket { + fn from(fd: OwnedSocket) -> crate::Socket { + // SAFETY: `OwnedFd` ensures the fd is valid. + unsafe { crate::Socket::from_raw_socket(fd.into_raw_socket()) } + } +} + +#[cfg_attr(docsrs, doc(cfg(windows)))] impl FromRawSocket for crate::Socket { unsafe fn from_raw_socket(socket: RawSocket) -> crate::Socket { crate::Socket::from_raw(socket as Socket) @@ -851,13 +928,13 @@ fn in_addr_convertion() { let ip = Ipv4Addr::new(127, 0, 0, 1); let raw = to_in_addr(&ip); - assert_eq!(unsafe { *raw.S_un.S_addr() }, 127 << 0 | 1 << 24); + assert_eq!(unsafe { raw.S_un.S_addr }, 127 << 0 | 1 << 24); assert_eq!(from_in_addr(raw), ip); let ip = Ipv4Addr::new(127, 34, 4, 12); let raw = to_in_addr(&ip); assert_eq!( - unsafe { *raw.S_un.S_addr() }, + unsafe { raw.S_un.S_addr }, 127 << 0 | 34 << 8 | 4 << 16 | 12 << 24 ); assert_eq!(from_in_addr(raw), ip); @@ -877,6 +954,6 @@ 6u16.to_be(), 7u16.to_be(), ]; - assert_eq!(unsafe { *raw.u.Word() }, want); + assert_eq!(unsafe { raw.u.Word }, want); assert_eq!(from_in6_addr(raw), ip); } diff -Nru temporalio-1.3.0/vendor/socket2-0.4.9/.cargo-checksum.json temporalio-1.3.0/vendor/socket2-0.4.9/.cargo-checksum.json --- temporalio-1.3.0/vendor/socket2-0.4.9/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2-0.4.9/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +{"files":{"Cargo.toml":"a923f376ccc72eace3803c02342d6ef8c1d0fde8af4fcdb3e86bc55e4b31e800","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"b3fadb399050f2755504188e81dec8150f6a1eba86b6410a9ce9c1ea0c850287","src/lib.rs":"0805b736e0cde0ae1d064ff1887f8ae37b219d17309d427be122d5ccd51c116b","src/sockaddr.rs":"a2b7f7c8959b8ff1546d1f1b38f305b22607d7a59c0698e5a8f9cfd81e4b8ede","src/socket.rs":"bd938d210a9763b0ed3395b192698c36c4f88e44adb8f3aaf12a6743efeffa2a","src/sockref.rs":"02de263cce039aaddaee5d6c2bb3940bdfae5697a3fc9df47d226fb3cac03cd9","src/sys/unix.rs":"6db80abf67e6a4555280eba076371798cab333fcb4729fab2a460a5d709f9667","src/sys/windows.rs":"d271c768295c0f84e79f6286aa783ce15ab0265f150195824fdcd10003dada33"},"package":"64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/socket2-0.4.9/Cargo.toml temporalio-1.3.0/vendor/socket2-0.4.9/Cargo.toml --- temporalio-1.3.0/vendor/socket2-0.4.9/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2-0.4.9/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,68 @@ +# 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 = "socket2" +version = "0.4.9" +authors = [ + "Alex Crichton ", + "Thomas de Zeeuw ", +] +include = [ + "Cargo.toml", + "LICENSE-APACHE", + "LICENSE-MIT", + "README.md", + "src/**/*.rs", +] +description = """ +Utilities for handling networking sockets with a maximal amount of configuration +possible intended. +""" +homepage = "https://github.com/rust-lang/socket2" +documentation = "https://docs.rs/socket2" +readme = "README.md" +keywords = [ + "io", + "socket", + "network", +] +categories = [ + "api-bindings", + "network-programming", +] +license = "MIT OR Apache-2.0" +repository = "https://github.com/rust-lang/socket2" + +[package.metadata.docs.rs] +all-features = true +rustdoc-args = [ + "--cfg", + "docsrs", +] + +[package.metadata.playground] +features = ["all"] + +[features] +all = [] + +[target."cfg(unix)".dependencies.libc] +version = "0.2.139" + +[target."cfg(windows)".dependencies.winapi] +version = "0.3.9" +features = [ + "handleapi", + "ws2ipdef", + "ws2tcpip", +] diff -Nru temporalio-1.3.0/vendor/socket2-0.4.9/LICENSE-APACHE temporalio-1.3.0/vendor/socket2-0.4.9/LICENSE-APACHE --- temporalio-1.3.0/vendor/socket2-0.4.9/LICENSE-APACHE 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2-0.4.9/LICENSE-APACHE 2023-10-30 19:40:00.000000000 +0000 @@ -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 -Nru temporalio-1.3.0/vendor/socket2-0.4.9/LICENSE-MIT temporalio-1.3.0/vendor/socket2-0.4.9/LICENSE-MIT --- temporalio-1.3.0/vendor/socket2-0.4.9/LICENSE-MIT 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2-0.4.9/LICENSE-MIT 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,25 @@ +Copyright (c) 2014 Alex Crichton + +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 -Nru temporalio-1.3.0/vendor/socket2-0.4.9/README.md temporalio-1.3.0/vendor/socket2-0.4.9/README.md --- temporalio-1.3.0/vendor/socket2-0.4.9/README.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2-0.4.9/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,84 @@ +# Socket2 + +Socket2 is a crate that provides utilities for creating and using sockets. + +The goal of this crate is to create and use a socket using advanced +configuration options (those that are not available in the types in the standard +library) without using any unsafe code. + +This crate provides as direct as possible access to the system's functionality +for sockets, this means little effort to provide cross-platform utilities. It is +up to the user to know how to use sockets when using this crate. *If you don't +know how to create a socket using libc/system calls then this crate is not for +you*. Most, if not all, functions directly relate to the equivalent system call +with no error handling applied, so no handling errors such as `EINTR`. As a +result using this crate can be a little wordy, but it should give you maximal +flexibility over configuration of sockets. + +See the [API documentation] for more. + +[API documentation]: https://docs.rs/socket2 + +# Two branches + +Currently Socket2 supports two versions: v0.4 and v0.3. Version 0.4 is developed +in the master branch, version 0.3 in the [v0.3.x branch]. + +[v0.3.x branch]: https://github.com/rust-lang/socket2/tree/v0.3.x + +# OS support + +Socket2 attempts to support the same OS/architectures as Rust does, see +https://doc.rust-lang.org/nightly/rustc/platform-support.html. However this is +not always possible, below is current list of support OSs. + +*If your favorite OS is not on the list consider contributing it! See [issue +#78].* + +[issue #78]: https://github.com/rust-lang/socket2/issues/78 + +### Tier 1 + +These OSs are tested with each commit in the CI and must always pass the tests. +All functions/types/etc., excluding ones behind the `all` feature, must work on +these OSs. + +* Linux +* macOS +* Windows + +### Tier 2 + +These OSs are currently build in the CI, but not tested. Not all +functions/types/etc. may work on these OSs, even ones **not** behind the `all` +feature flag. + +* Android +* FreeBSD +* Fuchsia +* iOS +* illumos +* NetBSD +* Redox +* Solaris + +# Minimum Supported Rust Version (MSRV) + +Socket2 uses 1.46.0 as MSRV. + +# License + +This project is licensed under either of + + * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or + https://www.apache.org/licenses/LICENSE-2.0) + * MIT license ([LICENSE-MIT](LICENSE-MIT) or + https://opensource.org/licenses/MIT) + +at your option. + +### Contribution + +Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in this project by you, as defined in the Apache-2.0 license, +shall be dual licensed as above, without any additional terms or conditions. diff -Nru temporalio-1.3.0/vendor/socket2-0.4.9/src/lib.rs temporalio-1.3.0/vendor/socket2-0.4.9/src/lib.rs --- temporalio-1.3.0/vendor/socket2-0.4.9/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2-0.4.9/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,475 @@ +// Copyright 2015 The Rust Project Developers. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +//! Utilities for creating and using sockets. +//! +//! The goal of this crate is to create and use a socket using advanced +//! configuration options (those that are not available in the types in the +//! standard library) without using any unsafe code. +//! +//! This crate provides as direct as possible access to the system's +//! functionality for sockets, this means little effort to provide +//! cross-platform utilities. It is up to the user to know how to use sockets +//! when using this crate. *If you don't know how to create a socket using +//! libc/system calls then this crate is not for you*. Most, if not all, +//! functions directly relate to the equivalent system call with no error +//! handling applied, so no handling errors such as [`EINTR`]. As a result using +//! this crate can be a little wordy, but it should give you maximal flexibility +//! over configuration of sockets. +//! +//! [`EINTR`]: std::io::ErrorKind::Interrupted +//! +//! # Examples +//! +//! ```no_run +//! # fn main() -> std::io::Result<()> { +//! use std::net::{SocketAddr, TcpListener}; +//! use socket2::{Socket, Domain, Type}; +//! +//! // Create a TCP listener bound to two addresses. +//! let socket = Socket::new(Domain::IPV6, Type::STREAM, None)?; +//! +//! socket.set_only_v6(false)?; +//! let address: SocketAddr = "[::1]:12345".parse().unwrap(); +//! socket.bind(&address.into())?; +//! socket.listen(128)?; +//! +//! let listener: TcpListener = socket.into(); +//! // ... +//! # drop(listener); +//! # Ok(()) } +//! ``` +//! +//! ## Features +//! +//! This crate has a single feature `all`, which enables all functions even ones +//! that are not available on all OSs. + +#![doc(html_root_url = "https://docs.rs/socket2/0.4")] +#![deny(missing_docs, missing_debug_implementations, rust_2018_idioms)] +// Show required OS/features on docs.rs. +#![cfg_attr(docsrs, feature(doc_cfg))] +// Disallow warnings when running tests. +#![cfg_attr(test, deny(warnings))] +// Disallow warnings in examples. +#![doc(test(attr(deny(warnings))))] + +use std::fmt; +use std::mem::MaybeUninit; +use std::net::SocketAddr; +use std::ops::{Deref, DerefMut}; +use std::time::Duration; + +/// Macro to implement `fmt::Debug` for a type, printing the constant names +/// rather than a number. +/// +/// Note this is used in the `sys` module and thus must be defined before +/// defining the modules. +macro_rules! impl_debug { + ( + // Type name for which to implement `fmt::Debug`. + $type: path, + $( + $(#[$target: meta])* + // The flag(s) to check. + // Need to specific the libc crate because Windows doesn't use + // `libc` but `winapi`. + $libc: ident :: $flag: ident + ),+ $(,)* + ) => { + impl std::fmt::Debug for $type { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let string = match self.0 { + $( + $(#[$target])* + $libc :: $flag => stringify!($flag), + )+ + n => return write!(f, "{}", n), + }; + f.write_str(string) + } + } + }; +} + +/// Macro to convert from one network type to another. +macro_rules! from { + ($from: ty, $for: ty) => { + impl From<$from> for $for { + fn from(socket: $from) -> $for { + #[cfg(unix)] + unsafe { + <$for>::from_raw_fd(socket.into_raw_fd()) + } + #[cfg(windows)] + unsafe { + <$for>::from_raw_socket(socket.into_raw_socket()) + } + } + } + }; +} + +mod sockaddr; +mod socket; +mod sockref; + +#[cfg_attr(unix, path = "sys/unix.rs")] +#[cfg_attr(windows, path = "sys/windows.rs")] +mod sys; + +#[cfg(not(any(windows, unix)))] +compile_error!("Socket2 doesn't support the compile target"); + +use sys::c_int; + +pub use sockaddr::SockAddr; +pub use socket::Socket; +pub use sockref::SockRef; + +#[cfg(not(any( + target_os = "haiku", + target_os = "illumos", + target_os = "netbsd", + target_os = "redox", + target_os = "solaris", +)))] +pub use socket::InterfaceIndexOrAddress; + +/// Specification of the communication domain for a socket. +/// +/// This is a newtype wrapper around an integer which provides a nicer API in +/// addition to an injection point for documentation. Convenience constants such +/// as [`Domain::IPV4`], [`Domain::IPV6`], etc, are provided to avoid reaching +/// into libc for various constants. +/// +/// This type is freely interconvertible with C's `int` type, however, if a raw +/// value needs to be provided. +#[derive(Copy, Clone, Eq, PartialEq)] +pub struct Domain(c_int); + +impl Domain { + /// Domain for IPv4 communication, corresponding to `AF_INET`. + pub const IPV4: Domain = Domain(sys::AF_INET); + + /// Domain for IPv6 communication, corresponding to `AF_INET6`. + pub const IPV6: Domain = Domain(sys::AF_INET6); + + /// Returns the correct domain for `address`. + pub const fn for_address(address: SocketAddr) -> Domain { + match address { + SocketAddr::V4(_) => Domain::IPV4, + SocketAddr::V6(_) => Domain::IPV6, + } + } +} + +impl From for Domain { + fn from(d: c_int) -> Domain { + Domain(d) + } +} + +impl From for c_int { + fn from(d: Domain) -> c_int { + d.0 + } +} + +/// Specification of communication semantics on a socket. +/// +/// This is a newtype wrapper around an integer which provides a nicer API in +/// addition to an injection point for documentation. Convenience constants such +/// as [`Type::STREAM`], [`Type::DGRAM`], etc, are provided to avoid reaching +/// into libc for various constants. +/// +/// This type is freely interconvertible with C's `int` type, however, if a raw +/// value needs to be provided. +#[derive(Copy, Clone, Eq, PartialEq)] +pub struct Type(c_int); + +impl Type { + /// Type corresponding to `SOCK_STREAM`. + /// + /// Used for protocols such as TCP. + pub const STREAM: Type = Type(sys::SOCK_STREAM); + + /// Type corresponding to `SOCK_DGRAM`. + /// + /// Used for protocols such as UDP. + pub const DGRAM: Type = Type(sys::SOCK_DGRAM); + + /// Type corresponding to `SOCK_SEQPACKET`. + #[cfg(feature = "all")] + #[cfg_attr(docsrs, doc(cfg(feature = "all")))] + pub const SEQPACKET: Type = Type(sys::SOCK_SEQPACKET); + + /// Type corresponding to `SOCK_RAW`. + #[cfg(all(feature = "all", not(target_os = "redox")))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", not(target_os = "redox")))))] + pub const RAW: Type = Type(sys::SOCK_RAW); +} + +impl From for Type { + fn from(t: c_int) -> Type { + Type(t) + } +} + +impl From for c_int { + fn from(t: Type) -> c_int { + t.0 + } +} + +/// Protocol specification used for creating sockets via `Socket::new`. +/// +/// This is a newtype wrapper around an integer which provides a nicer API in +/// addition to an injection point for documentation. +/// +/// This type is freely interconvertible with C's `int` type, however, if a raw +/// value needs to be provided. +#[derive(Copy, Clone, Eq, PartialEq)] +pub struct Protocol(c_int); + +impl Protocol { + /// Protocol corresponding to `ICMPv4`. + pub const ICMPV4: Protocol = Protocol(sys::IPPROTO_ICMP); + + /// Protocol corresponding to `ICMPv6`. + pub const ICMPV6: Protocol = Protocol(sys::IPPROTO_ICMPV6); + + /// Protocol corresponding to `TCP`. + pub const TCP: Protocol = Protocol(sys::IPPROTO_TCP); + + /// Protocol corresponding to `UDP`. + pub const UDP: Protocol = Protocol(sys::IPPROTO_UDP); +} + +impl From for Protocol { + fn from(p: c_int) -> Protocol { + Protocol(p) + } +} + +impl From for c_int { + fn from(p: Protocol) -> c_int { + p.0 + } +} + +/// Flags for incoming messages. +/// +/// Flags provide additional information about incoming messages. +#[cfg(not(target_os = "redox"))] +#[cfg_attr(docsrs, doc(cfg(not(target_os = "redox"))))] +#[derive(Copy, Clone, Eq, PartialEq)] +pub struct RecvFlags(c_int); + +#[cfg(not(target_os = "redox"))] +impl RecvFlags { + /// Check if the message contains a truncated datagram. + /// + /// This flag is only used for datagram-based sockets, + /// not for stream sockets. + /// + /// On Unix this corresponds to the `MSG_TRUNC` flag. + /// On Windows this corresponds to the `WSAEMSGSIZE` error code. + pub const fn is_truncated(self) -> bool { + self.0 & sys::MSG_TRUNC != 0 + } +} + +/// A version of [`IoSliceMut`] that allows the buffer to be uninitialised. +/// +/// [`IoSliceMut`]: std::io::IoSliceMut +#[repr(transparent)] +pub struct MaybeUninitSlice<'a>(sys::MaybeUninitSlice<'a>); + +impl<'a> fmt::Debug for MaybeUninitSlice<'a> { + fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { + fmt::Debug::fmt(self.0.as_slice(), fmt) + } +} + +impl<'a> MaybeUninitSlice<'a> { + /// Creates a new `MaybeUninitSlice` wrapping a byte slice. + /// + /// # Panics + /// + /// Panics on Windows if the slice is larger than 4GB. + pub fn new(buf: &'a mut [MaybeUninit]) -> MaybeUninitSlice<'a> { + MaybeUninitSlice(sys::MaybeUninitSlice::new(buf)) + } +} + +impl<'a> Deref for MaybeUninitSlice<'a> { + type Target = [MaybeUninit]; + + fn deref(&self) -> &[MaybeUninit] { + self.0.as_slice() + } +} + +impl<'a> DerefMut for MaybeUninitSlice<'a> { + fn deref_mut(&mut self) -> &mut [MaybeUninit] { + self.0.as_mut_slice() + } +} + +/// Configures a socket's TCP keepalive parameters. +/// +/// See [`Socket::set_tcp_keepalive`]. +#[derive(Debug, Clone)] +pub struct TcpKeepalive { + #[cfg_attr(target_os = "openbsd", allow(dead_code))] + time: Option, + #[cfg(not(any( + target_os = "openbsd", + target_os = "redox", + target_os = "solaris", + target_os = "nto", + )))] + interval: Option, + #[cfg(not(any( + target_os = "openbsd", + target_os = "redox", + target_os = "solaris", + target_os = "windows", + target_os = "nto", + )))] + retries: Option, +} + +impl TcpKeepalive { + /// Returns a new, empty set of TCP keepalive parameters. + pub const fn new() -> TcpKeepalive { + TcpKeepalive { + time: None, + #[cfg(not(any( + target_os = "openbsd", + target_os = "redox", + target_os = "solaris", + target_os = "nto", + )))] + interval: None, + #[cfg(not(any( + target_os = "openbsd", + target_os = "redox", + target_os = "solaris", + target_os = "windows", + target_os = "nto", + )))] + retries: None, + } + } + + /// Set the amount of time after which TCP keepalive probes will be sent on + /// idle connections. + /// + /// This will set `TCP_KEEPALIVE` on macOS and iOS, and + /// `TCP_KEEPIDLE` on all other Unix operating systems, except + /// OpenBSD and Haiku which don't support any way to set this + /// option. On Windows, this sets the value of the `tcp_keepalive` + /// struct's `keepalivetime` field. + /// + /// Some platforms specify this value in seconds, so sub-second + /// specifications may be omitted. + pub const fn with_time(self, time: Duration) -> Self { + Self { + time: Some(time), + ..self + } + } + + /// Set the value of the `TCP_KEEPINTVL` option. On Windows, this sets the + /// value of the `tcp_keepalive` struct's `keepaliveinterval` field. + /// + /// Sets the time interval between TCP keepalive probes. + /// + /// Some platforms specify this value in seconds, so sub-second + /// specifications may be omitted. + #[cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_vendor = "apple", + windows, + ) + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_vendor = "apple", + windows, + ) + ))) + )] + pub const fn with_interval(self, interval: Duration) -> Self { + Self { + interval: Some(interval), + ..self + } + } + + /// Set the value of the `TCP_KEEPCNT` option. + /// + /// Set the maximum number of TCP keepalive probes that will be sent before + /// dropping a connection, if TCP keepalive is enabled on this socket. + #[cfg(all( + feature = "all", + any( + doc, + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_vendor = "apple", + ) + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_vendor = "apple", + ) + ))) + )] + pub const fn with_retries(self, retries: u32) -> Self { + Self { + retries: Some(retries), + ..self + } + } +} diff -Nru temporalio-1.3.0/vendor/socket2-0.4.9/src/sockaddr.rs temporalio-1.3.0/vendor/socket2-0.4.9/src/sockaddr.rs --- temporalio-1.3.0/vendor/socket2-0.4.9/src/sockaddr.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2-0.4.9/src/sockaddr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,350 @@ +use std::mem::{self, size_of, MaybeUninit}; +use std::net::{SocketAddr, SocketAddrV4, SocketAddrV6}; +use std::{fmt, io}; + +use crate::sys::{ + sa_family_t, sockaddr, sockaddr_in, sockaddr_in6, sockaddr_storage, socklen_t, AF_INET, + AF_INET6, +}; +#[cfg(windows)] +use winapi::shared::ws2ipdef::SOCKADDR_IN6_LH_u; + +/// The address of a socket. +/// +/// `SockAddr`s may be constructed directly to and from the standard library +/// [`SocketAddr`], [`SocketAddrV4`], and [`SocketAddrV6`] types. +#[derive(Clone)] +pub struct SockAddr { + storage: sockaddr_storage, + len: socklen_t, +} + +#[allow(clippy::len_without_is_empty)] +impl SockAddr { + /// Create a `SockAddr` from the underlying storage and its length. + /// + /// # Safety + /// + /// Caller must ensure that the address family and length match the type of + /// storage address. For example if `storage.ss_family` is set to `AF_INET` + /// the `storage` must be initialised as `sockaddr_in`, setting the content + /// and length appropriately. + /// + /// # Examples + /// + /// ``` + /// # fn main() -> std::io::Result<()> { + /// # #[cfg(unix)] { + /// use std::io; + /// use std::mem; + /// use std::os::unix::io::AsRawFd; + /// + /// use socket2::{SockAddr, Socket, Domain, Type}; + /// + /// let socket = Socket::new(Domain::IPV4, Type::STREAM, None)?; + /// + /// // Initialise a `SocketAddr` byte calling `getsockname(2)`. + /// let mut addr_storage: libc::sockaddr_storage = unsafe { mem::zeroed() }; + /// let mut len = mem::size_of_val(&addr_storage) as libc::socklen_t; + /// + /// // The `getsockname(2)` system call will intiliase `storage` for + /// // us, setting `len` to the correct length. + /// let res = unsafe { + /// libc::getsockname( + /// socket.as_raw_fd(), + /// (&mut addr_storage as *mut libc::sockaddr_storage).cast(), + /// &mut len, + /// ) + /// }; + /// if res == -1 { + /// return Err(io::Error::last_os_error()); + /// } + /// + /// let address = unsafe { SockAddr::new(addr_storage, len) }; + /// # drop(address); + /// # } + /// # Ok(()) + /// # } + /// ``` + pub const unsafe fn new(storage: sockaddr_storage, len: socklen_t) -> SockAddr { + SockAddr { storage, len } + } + + /// Initialise a `SockAddr` by calling the function `init`. + /// + /// The type of the address storage and length passed to the function `init` + /// is OS/architecture specific. + /// + /// The address is zeroed before `init` is called and is thus valid to + /// dereference and read from. The length initialised to the maximum length + /// of the storage. + /// + /// # Safety + /// + /// Caller must ensure that the address family and length match the type of + /// storage address. For example if `storage.ss_family` is set to `AF_INET` + /// the `storage` must be initialised as `sockaddr_in`, setting the content + /// and length appropriately. + /// + /// # Examples + /// + /// ``` + /// # fn main() -> std::io::Result<()> { + /// # #[cfg(unix)] { + /// use std::io; + /// use std::os::unix::io::AsRawFd; + /// + /// use socket2::{SockAddr, Socket, Domain, Type}; + /// + /// let socket = Socket::new(Domain::IPV4, Type::STREAM, None)?; + /// + /// // Initialise a `SocketAddr` byte calling `getsockname(2)`. + /// let (_, address) = unsafe { + /// SockAddr::init(|addr_storage, len| { + /// // The `getsockname(2)` system call will intiliase `storage` for + /// // us, setting `len` to the correct length. + /// if libc::getsockname(socket.as_raw_fd(), addr_storage.cast(), len) == -1 { + /// Err(io::Error::last_os_error()) + /// } else { + /// Ok(()) + /// } + /// }) + /// }?; + /// # drop(address); + /// # } + /// # Ok(()) + /// # } + /// ``` + pub unsafe fn init(init: F) -> io::Result<(T, SockAddr)> + where + F: FnOnce(*mut sockaddr_storage, *mut socklen_t) -> io::Result, + { + const STORAGE_SIZE: socklen_t = size_of::() as socklen_t; + // NOTE: `SockAddr::unix` depends on the storage being zeroed before + // calling `init`. + // NOTE: calling `recvfrom` with an empty buffer also depends on the + // storage being zeroed before calling `init` as the OS might not + // initialise it. + let mut storage = MaybeUninit::::zeroed(); + let mut len = STORAGE_SIZE; + init(storage.as_mut_ptr(), &mut len).map(|res| { + debug_assert!(len <= STORAGE_SIZE, "overflown address storage"); + let addr = SockAddr { + // Safety: zeroed-out `sockaddr_storage` is valid, caller must + // ensure at least `len` bytes are valid. + storage: storage.assume_init(), + len, + }; + (res, addr) + }) + } + + /// Returns this address's family. + pub const fn family(&self) -> sa_family_t { + self.storage.ss_family + } + + /// Returns the size of this address in bytes. + pub const fn len(&self) -> socklen_t { + self.len + } + + /// Returns a raw pointer to the address. + pub const fn as_ptr(&self) -> *const sockaddr { + &self.storage as *const _ as *const _ + } + + /// Returns a raw pointer to the address storage. + #[cfg(all(unix, not(target_os = "redox")))] + pub(crate) const fn as_storage_ptr(&self) -> *const sockaddr_storage { + &self.storage + } + + /// Returns this address as a `SocketAddr` if it is in the `AF_INET` (IPv4) + /// or `AF_INET6` (IPv6) family, otherwise returns `None`. + pub fn as_socket(&self) -> Option { + if self.storage.ss_family == AF_INET as sa_family_t { + // Safety: if the ss_family field is AF_INET then storage must be a sockaddr_in. + let addr = unsafe { &*(&self.storage as *const _ as *const sockaddr_in) }; + + let ip = crate::sys::from_in_addr(addr.sin_addr); + let port = u16::from_be(addr.sin_port); + Some(SocketAddr::V4(SocketAddrV4::new(ip, port))) + } else if self.storage.ss_family == AF_INET6 as sa_family_t { + // Safety: if the ss_family field is AF_INET6 then storage must be a sockaddr_in6. + let addr = unsafe { &*(&self.storage as *const _ as *const sockaddr_in6) }; + + let ip = crate::sys::from_in6_addr(addr.sin6_addr); + let port = u16::from_be(addr.sin6_port); + Some(SocketAddr::V6(SocketAddrV6::new( + ip, + port, + addr.sin6_flowinfo, + #[cfg(unix)] + addr.sin6_scope_id, + #[cfg(windows)] + unsafe { + *addr.u.sin6_scope_id() + }, + ))) + } else { + None + } + } + + /// Returns this address as a [`SocketAddrV4`] if it is in the `AF_INET` + /// family. + pub fn as_socket_ipv4(&self) -> Option { + match self.as_socket() { + Some(SocketAddr::V4(addr)) => Some(addr), + _ => None, + } + } + + /// Returns this address as a [`SocketAddrV6`] if it is in the `AF_INET6` + /// family. + pub fn as_socket_ipv6(&self) -> Option { + match self.as_socket() { + Some(SocketAddr::V6(addr)) => Some(addr), + _ => None, + } + } +} + +impl From for SockAddr { + fn from(addr: SocketAddr) -> SockAddr { + match addr { + SocketAddr::V4(addr) => addr.into(), + SocketAddr::V6(addr) => addr.into(), + } + } +} + +impl From for SockAddr { + fn from(addr: SocketAddrV4) -> SockAddr { + let sockaddr_in = sockaddr_in { + sin_family: AF_INET as sa_family_t, + sin_port: addr.port().to_be(), + sin_addr: crate::sys::to_in_addr(addr.ip()), + sin_zero: Default::default(), + #[cfg(any( + target_os = "dragonfly", + target_os = "freebsd", + target_os = "haiku", + target_os = "ios", + target_os = "macos", + target_os = "netbsd", + target_os = "openbsd" + ))] + sin_len: 0, + }; + let mut storage = MaybeUninit::::zeroed(); + // Safety: A `sockaddr_in` is memory compatible with a `sockaddr_storage` + unsafe { (storage.as_mut_ptr() as *mut sockaddr_in).write(sockaddr_in) }; + SockAddr { + storage: unsafe { storage.assume_init() }, + len: mem::size_of::() as socklen_t, + } + } +} + +impl From for SockAddr { + fn from(addr: SocketAddrV6) -> SockAddr { + #[cfg(windows)] + let u = unsafe { + let mut u = mem::zeroed::(); + *u.sin6_scope_id_mut() = addr.scope_id(); + u + }; + + let sockaddr_in6 = sockaddr_in6 { + sin6_family: AF_INET6 as sa_family_t, + sin6_port: addr.port().to_be(), + sin6_addr: crate::sys::to_in6_addr(addr.ip()), + sin6_flowinfo: addr.flowinfo(), + #[cfg(unix)] + sin6_scope_id: addr.scope_id(), + #[cfg(windows)] + u, + #[cfg(any( + target_os = "dragonfly", + target_os = "freebsd", + target_os = "haiku", + target_os = "ios", + target_os = "macos", + target_os = "netbsd", + target_os = "openbsd" + ))] + sin6_len: 0, + #[cfg(any(target_os = "solaris", target_os = "illumos"))] + __sin6_src_id: 0, + }; + let mut storage = MaybeUninit::::zeroed(); + // Safety: A `sockaddr_in6` is memory compatible with a `sockaddr_storage` + unsafe { (storage.as_mut_ptr() as *mut sockaddr_in6).write(sockaddr_in6) }; + SockAddr { + storage: unsafe { storage.assume_init() }, + len: mem::size_of::() as socklen_t, + } + } +} + +impl fmt::Debug for SockAddr { + fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut f = fmt.debug_struct("SockAddr"); + #[cfg(any( + target_os = "dragonfly", + target_os = "freebsd", + target_os = "haiku", + target_os = "hermit", + target_os = "ios", + target_os = "macos", + target_os = "netbsd", + target_os = "openbsd", + target_os = "vxworks", + target_os = "nto", + ))] + f.field("ss_len", &self.storage.ss_len); + f.field("ss_family", &self.storage.ss_family) + .field("len", &self.len) + .finish() + } +} + +#[test] +fn ipv4() { + use std::net::Ipv4Addr; + let std = SocketAddrV4::new(Ipv4Addr::new(1, 2, 3, 4), 9876); + let addr = SockAddr::from(std); + assert_eq!(addr.family(), AF_INET as sa_family_t); + assert_eq!(addr.len(), size_of::() as socklen_t); + assert_eq!(addr.as_socket(), Some(SocketAddr::V4(std))); + assert_eq!(addr.as_socket_ipv4(), Some(std)); + assert!(addr.as_socket_ipv6().is_none()); + + let addr = SockAddr::from(SocketAddr::from(std)); + assert_eq!(addr.family(), AF_INET as sa_family_t); + assert_eq!(addr.len(), size_of::() as socklen_t); + assert_eq!(addr.as_socket(), Some(SocketAddr::V4(std))); + assert_eq!(addr.as_socket_ipv4(), Some(std)); + assert!(addr.as_socket_ipv6().is_none()); +} + +#[test] +fn ipv6() { + use std::net::Ipv6Addr; + let std = SocketAddrV6::new(Ipv6Addr::new(1, 2, 3, 4, 5, 6, 7, 8), 9876, 11, 12); + let addr = SockAddr::from(std); + assert_eq!(addr.family(), AF_INET6 as sa_family_t); + assert_eq!(addr.len(), size_of::() as socklen_t); + assert_eq!(addr.as_socket(), Some(SocketAddr::V6(std))); + assert!(addr.as_socket_ipv4().is_none()); + assert_eq!(addr.as_socket_ipv6(), Some(std)); + + let addr = SockAddr::from(SocketAddr::from(std)); + assert_eq!(addr.family(), AF_INET6 as sa_family_t); + assert_eq!(addr.len(), size_of::() as socklen_t); + assert_eq!(addr.as_socket(), Some(SocketAddr::V6(std))); + assert!(addr.as_socket_ipv4().is_none()); + assert_eq!(addr.as_socket_ipv6(), Some(std)); +} diff -Nru temporalio-1.3.0/vendor/socket2-0.4.9/src/socket.rs temporalio-1.3.0/vendor/socket2-0.4.9/src/socket.rs --- temporalio-1.3.0/vendor/socket2-0.4.9/src/socket.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2-0.4.9/src/socket.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1938 @@ +// Copyright 2015 The Rust Project Developers. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use std::fmt; +use std::io::{self, Read, Write}; +#[cfg(not(target_os = "redox"))] +use std::io::{IoSlice, IoSliceMut}; +use std::mem::MaybeUninit; +#[cfg(not(target_os = "nto"))] +use std::net::Ipv6Addr; +use std::net::{self, Ipv4Addr, Shutdown}; +#[cfg(unix)] +use std::os::unix::io::{FromRawFd, IntoRawFd}; +#[cfg(windows)] +use std::os::windows::io::{FromRawSocket, IntoRawSocket}; +use std::time::Duration; + +use crate::sys::{self, c_int, getsockopt, setsockopt, Bool}; +use crate::{Domain, Protocol, SockAddr, TcpKeepalive, Type}; +#[cfg(not(target_os = "redox"))] +use crate::{MaybeUninitSlice, RecvFlags}; + +/// Owned wrapper around a system socket. +/// +/// This type simply wraps an instance of a file descriptor (`c_int`) on Unix +/// and an instance of `SOCKET` on Windows. This is the main type exported by +/// this crate and is intended to mirror the raw semantics of sockets on +/// platforms as closely as possible. Almost all methods correspond to +/// precisely one libc or OS API call which is essentially just a "Rustic +/// translation" of what's below. +/// +/// ## Converting to and from other types +/// +/// This type can be freely converted into the network primitives provided by +/// the standard library, such as [`TcpStream`] or [`UdpSocket`], using the +/// [`From`] trait, see the example below. +/// +/// [`TcpStream`]: std::net::TcpStream +/// [`UdpSocket`]: std::net::UdpSocket +/// +/// # Notes +/// +/// Some methods that set options on `Socket` require two system calls to set +/// there options without overwriting previously set options. We do this by +/// first getting the current settings, applying the desired changes and than +/// updating the settings. This means that the operation is **not** atomic. This +/// can lead to a data race when two threads are changing options in parallel. +/// +/// # Examples +/// ```no_run +/// # fn main() -> std::io::Result<()> { +/// use std::net::{SocketAddr, TcpListener}; +/// use socket2::{Socket, Domain, Type}; +/// +/// // create a TCP listener bound to two addresses +/// let socket = Socket::new(Domain::IPV4, Type::STREAM, None)?; +/// +/// let address: SocketAddr = "[::1]:12345".parse().unwrap(); +/// let address = address.into(); +/// socket.bind(&address)?; +/// socket.bind(&address)?; +/// socket.listen(128)?; +/// +/// let listener: TcpListener = socket.into(); +/// // ... +/// # drop(listener); +/// # Ok(()) } +/// ``` +pub struct Socket { + inner: Inner, +} + +/// Store a `TcpStream` internally to take advantage of its niche optimizations on Unix platforms. +pub(crate) type Inner = std::net::TcpStream; + +impl Socket { + /// # Safety + /// + /// The caller must ensure `raw` is a valid file descriptor/socket. NOTE: + /// this should really be marked `unsafe`, but this being an internal + /// function, often passed as mapping function, it's makes it very + /// inconvenient to mark it as `unsafe`. + pub(crate) fn from_raw(raw: sys::Socket) -> Socket { + Socket { + inner: unsafe { + // SAFETY: the caller must ensure that `raw` is a valid file + // descriptor, but when it isn't it could return I/O errors, or + // potentially close a fd it doesn't own. All of that isn't + // memory unsafe, so it's not desired but never memory unsafe or + // causes UB. + // + // However there is one exception. We use `TcpStream` to + // represent the `Socket` internally (see `Inner` type), + // `TcpStream` has a layout optimisation that doesn't allow for + // negative file descriptors (as those are always invalid). + // Violating this assumption (fd never negative) causes UB, + // something we don't want. So check for that we have this + // `assert!`. + #[cfg(unix)] + assert!(raw >= 0, "tried to create a `Socket` with an invalid fd"); + sys::socket_from_raw(raw) + }, + } + } + + pub(crate) fn as_raw(&self) -> sys::Socket { + sys::socket_as_raw(&self.inner) + } + + pub(crate) fn into_raw(self) -> sys::Socket { + sys::socket_into_raw(self.inner) + } + + /// Creates a new socket and sets common flags. + /// + /// This function corresponds to `socket(2)` on Unix and `WSASocketW` on + /// Windows. + /// + /// On Unix-like systems, the close-on-exec flag is set on the new socket. + /// Additionally, on Apple platforms `SOCK_NOSIGPIPE` is set. On Windows, + /// the socket is made non-inheritable. + /// + /// [`Socket::new_raw`] can be used if you don't want these flags to be set. + pub fn new(domain: Domain, ty: Type, protocol: Option) -> io::Result { + let ty = set_common_type(ty); + Socket::new_raw(domain, ty, protocol).and_then(set_common_flags) + } + + /// Creates a new socket ready to be configured. + /// + /// This function corresponds to `socket(2)` on Unix and `WSASocketW` on + /// Windows and simply creates a new socket, no other configuration is done. + pub fn new_raw(domain: Domain, ty: Type, protocol: Option) -> io::Result { + let protocol = protocol.map(|p| p.0).unwrap_or(0); + sys::socket(domain.0, ty.0, protocol).map(Socket::from_raw) + } + + /// Creates a pair of sockets which are connected to each other. + /// + /// This function corresponds to `socketpair(2)`. + /// + /// This function sets the same flags as in done for [`Socket::new`], + /// [`Socket::pair_raw`] can be used if you don't want to set those flags. + #[cfg(any(doc, all(feature = "all", unix)))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", unix))))] + pub fn pair( + domain: Domain, + ty: Type, + protocol: Option, + ) -> io::Result<(Socket, Socket)> { + let ty = set_common_type(ty); + let (a, b) = Socket::pair_raw(domain, ty, protocol)?; + let a = set_common_flags(a)?; + let b = set_common_flags(b)?; + Ok((a, b)) + } + + /// Creates a pair of sockets which are connected to each other. + /// + /// This function corresponds to `socketpair(2)`. + #[cfg(any(doc, all(feature = "all", unix)))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", unix))))] + pub fn pair_raw( + domain: Domain, + ty: Type, + protocol: Option, + ) -> io::Result<(Socket, Socket)> { + let protocol = protocol.map(|p| p.0).unwrap_or(0); + sys::socketpair(domain.0, ty.0, protocol) + .map(|[a, b]| (Socket::from_raw(a), Socket::from_raw(b))) + } + + /// Binds this socket to the specified address. + /// + /// This function directly corresponds to the `bind(2)` function on Windows + /// and Unix. + pub fn bind(&self, address: &SockAddr) -> io::Result<()> { + sys::bind(self.as_raw(), address) + } + + /// Initiate a connection on this socket to the specified address. + /// + /// This function directly corresponds to the `connect(2)` function on + /// Windows and Unix. + /// + /// An error will be returned if `listen` or `connect` has already been + /// called on this builder. + /// + /// # Notes + /// + /// When using a non-blocking connect (by setting the socket into + /// non-blocking mode before calling this function), socket option can't be + /// set *while connecting*. This will cause errors on Windows. Socket + /// options can be safely set before and after connecting the socket. + pub fn connect(&self, address: &SockAddr) -> io::Result<()> { + sys::connect(self.as_raw(), address) + } + + /// Initiate a connection on this socket to the specified address, only + /// only waiting for a certain period of time for the connection to be + /// established. + /// + /// Unlike many other methods on `Socket`, this does *not* correspond to a + /// single C function. It sets the socket to nonblocking mode, connects via + /// connect(2), and then waits for the connection to complete with poll(2) + /// on Unix and select on Windows. When the connection is complete, the + /// socket is set back to blocking mode. On Unix, this will loop over + /// `EINTR` errors. + /// + /// # Warnings + /// + /// The non-blocking state of the socket is overridden by this function - + /// it will be returned in blocking mode on success, and in an indeterminate + /// state on failure. + /// + /// If the connection request times out, it may still be processing in the + /// background - a second call to `connect` or `connect_timeout` may fail. + pub fn connect_timeout(&self, addr: &SockAddr, timeout: Duration) -> io::Result<()> { + self.set_nonblocking(true)?; + let res = self.connect(addr); + self.set_nonblocking(false)?; + + match res { + Ok(()) => return Ok(()), + Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => {} + #[cfg(unix)] + Err(ref e) if e.raw_os_error() == Some(libc::EINPROGRESS) => {} + Err(e) => return Err(e), + } + + sys::poll_connect(self, timeout) + } + + /// Mark a socket as ready to accept incoming connection requests using + /// [`Socket::accept()`]. + /// + /// This function directly corresponds to the `listen(2)` function on + /// Windows and Unix. + /// + /// An error will be returned if `listen` or `connect` has already been + /// called on this builder. + pub fn listen(&self, backlog: c_int) -> io::Result<()> { + sys::listen(self.as_raw(), backlog) + } + + /// Accept a new incoming connection from this listener. + /// + /// This function uses `accept4(2)` on platforms that support it and + /// `accept(2)` platforms that do not. + /// + /// This function sets the same flags as in done for [`Socket::new`], + /// [`Socket::accept_raw`] can be used if you don't want to set those flags. + pub fn accept(&self) -> io::Result<(Socket, SockAddr)> { + // Use `accept4` on platforms that support it. + #[cfg(any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_os = "openbsd", + ))] + return self._accept4(libc::SOCK_CLOEXEC); + + // Fall back to `accept` on platforms that do not support `accept4`. + #[cfg(not(any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_os = "openbsd", + )))] + { + let (socket, addr) = self.accept_raw()?; + let socket = set_common_flags(socket)?; + // `set_common_flags` does not disable inheritance on Windows because `Socket::new` + // unlike `accept` is able to create the socket with inheritance disabled. + #[cfg(windows)] + socket._set_no_inherit(true)?; + Ok((socket, addr)) + } + } + + /// Accept a new incoming connection from this listener. + /// + /// This function directly corresponds to the `accept(2)` function on + /// Windows and Unix. + pub fn accept_raw(&self) -> io::Result<(Socket, SockAddr)> { + sys::accept(self.as_raw()).map(|(inner, addr)| (Socket::from_raw(inner), addr)) + } + + /// Returns the socket address of the local half of this socket. + /// + /// # Notes + /// + /// Depending on the OS this may return an error if the socket is not + /// [bound]. + /// + /// [bound]: Socket::bind + pub fn local_addr(&self) -> io::Result { + sys::getsockname(self.as_raw()) + } + + /// Returns the socket address of the remote peer of this socket. + /// + /// # Notes + /// + /// This returns an error if the socket is not [`connect`ed]. + /// + /// [`connect`ed]: Socket::connect + pub fn peer_addr(&self) -> io::Result { + sys::getpeername(self.as_raw()) + } + + /// Returns the [`Type`] of this socket by checking the `SO_TYPE` option on + /// this socket. + pub fn r#type(&self) -> io::Result { + unsafe { getsockopt::(self.as_raw(), sys::SOL_SOCKET, sys::SO_TYPE).map(Type) } + } + + /// Creates a new independently owned handle to the underlying socket. + /// + /// # Notes + /// + /// On Unix this uses `F_DUPFD_CLOEXEC` and thus sets the `FD_CLOEXEC` on + /// the returned socket. + /// + /// On Windows this uses `WSA_FLAG_NO_HANDLE_INHERIT` setting inheriting to + /// false. + /// + /// On Windows this can **not** be used function cannot be used on a + /// QOS-enabled socket, see + /// . + pub fn try_clone(&self) -> io::Result { + sys::try_clone(self.as_raw()).map(Socket::from_raw) + } + + /// Moves this TCP stream into or out of nonblocking mode. + /// + /// # Notes + /// + /// On Unix this corresponds to calling `fcntl` (un)setting `O_NONBLOCK`. + /// + /// On Windows this corresponds to calling `ioctlsocket` (un)setting + /// `FIONBIO`. + pub fn set_nonblocking(&self, nonblocking: bool) -> io::Result<()> { + sys::set_nonblocking(self.as_raw(), nonblocking) + } + + /// Shuts down the read, write, or both halves of this connection. + /// + /// This function will cause all pending and future I/O on the specified + /// portions to return immediately with an appropriate value. + pub fn shutdown(&self, how: Shutdown) -> io::Result<()> { + sys::shutdown(self.as_raw(), how) + } + + /// Receives data on the socket from the remote address to which it is + /// connected. + /// + /// The [`connect`] method will connect this socket to a remote address. + /// This method might fail if the socket is not connected. + /// + /// [`connect`]: Socket::connect + /// + /// # Safety + /// + /// Normally casting a `&mut [u8]` to `&mut [MaybeUninit]` would be + /// unsound, as that allows us to write uninitialised bytes to the buffer. + /// However this implementation promises to not write uninitialised bytes to + /// the `buf`fer and passes it directly to `recv(2)` system call. This + /// promise ensures that this function can be called using a `buf`fer of + /// type `&mut [u8]`. + /// + /// Note that the [`io::Read::read`] implementation calls this function with + /// a `buf`fer of type `&mut [u8]`, allowing initialised buffers to be used + /// without using `unsafe`. + pub fn recv(&self, buf: &mut [MaybeUninit]) -> io::Result { + self.recv_with_flags(buf, 0) + } + + /// Receives out-of-band (OOB) data on the socket from the remote address to + /// which it is connected by setting the `MSG_OOB` flag for this call. + /// + /// For more information, see [`recv`], [`out_of_band_inline`]. + /// + /// [`recv`]: Socket::recv + /// [`out_of_band_inline`]: Socket::out_of_band_inline + pub fn recv_out_of_band(&self, buf: &mut [MaybeUninit]) -> io::Result { + self.recv_with_flags(buf, sys::MSG_OOB) + } + + /// Identical to [`recv`] but allows for specification of arbitrary flags to + /// the underlying `recv` call. + /// + /// [`recv`]: Socket::recv + pub fn recv_with_flags( + &self, + buf: &mut [MaybeUninit], + flags: sys::c_int, + ) -> io::Result { + sys::recv(self.as_raw(), buf, flags) + } + + /// Receives data on the socket from the remote address to which it is + /// connected. Unlike [`recv`] this allows passing multiple buffers. + /// + /// The [`connect`] method will connect this socket to a remote address. + /// This method might fail if the socket is not connected. + /// + /// In addition to the number of bytes read, this function returns the flags + /// for the received message. See [`RecvFlags`] for more information about + /// the returned flags. + /// + /// [`recv`]: Socket::recv + /// [`connect`]: Socket::connect + /// + /// # Safety + /// + /// Normally casting a `IoSliceMut` to `MaybeUninitSlice` would be unsound, + /// as that allows us to write uninitialised bytes to the buffer. However + /// this implementation promises to not write uninitialised bytes to the + /// `bufs` and passes it directly to `recvmsg(2)` system call. This promise + /// ensures that this function can be called using `bufs` of type `&mut + /// [IoSliceMut]`. + /// + /// Note that the [`io::Read::read_vectored`] implementation calls this + /// function with `buf`s of type `&mut [IoSliceMut]`, allowing initialised + /// buffers to be used without using `unsafe`. + #[cfg(not(target_os = "redox"))] + #[cfg_attr(docsrs, doc(cfg(not(target_os = "redox"))))] + pub fn recv_vectored( + &self, + bufs: &mut [MaybeUninitSlice<'_>], + ) -> io::Result<(usize, RecvFlags)> { + self.recv_vectored_with_flags(bufs, 0) + } + + /// Identical to [`recv_vectored`] but allows for specification of arbitrary + /// flags to the underlying `recvmsg`/`WSARecv` call. + /// + /// [`recv_vectored`]: Socket::recv_vectored + /// + /// # Safety + /// + /// `recv_from_vectored` makes the same safety guarantees regarding `bufs` + /// as [`recv_vectored`]. + /// + /// [`recv_vectored`]: Socket::recv_vectored + #[cfg(not(target_os = "redox"))] + #[cfg_attr(docsrs, doc(cfg(not(target_os = "redox"))))] + pub fn recv_vectored_with_flags( + &self, + bufs: &mut [MaybeUninitSlice<'_>], + flags: c_int, + ) -> io::Result<(usize, RecvFlags)> { + sys::recv_vectored(self.as_raw(), bufs, flags) + } + + /// Receives data on the socket from the remote adress to which it is + /// connected, without removing that data from the queue. On success, + /// returns the number of bytes peeked. + /// + /// Successive calls return the same data. This is accomplished by passing + /// `MSG_PEEK` as a flag to the underlying `recv` system call. + /// + /// # Safety + /// + /// `peek` makes the same safety guarantees regarding the `buf`fer as + /// [`recv`]. + /// + /// [`recv`]: Socket::recv + pub fn peek(&self, buf: &mut [MaybeUninit]) -> io::Result { + self.recv_with_flags(buf, sys::MSG_PEEK) + } + + /// Receives data from the socket. On success, returns the number of bytes + /// read and the address from whence the data came. + /// + /// # Safety + /// + /// `recv_from` makes the same safety guarantees regarding the `buf`fer as + /// [`recv`]. + /// + /// [`recv`]: Socket::recv + pub fn recv_from(&self, buf: &mut [MaybeUninit]) -> io::Result<(usize, SockAddr)> { + self.recv_from_with_flags(buf, 0) + } + + /// Identical to [`recv_from`] but allows for specification of arbitrary + /// flags to the underlying `recvfrom` call. + /// + /// [`recv_from`]: Socket::recv_from + pub fn recv_from_with_flags( + &self, + buf: &mut [MaybeUninit], + flags: c_int, + ) -> io::Result<(usize, SockAddr)> { + sys::recv_from(self.as_raw(), buf, flags) + } + + /// Receives data from the socket. Returns the amount of bytes read, the + /// [`RecvFlags`] and the remote address from the data is coming. Unlike + /// [`recv_from`] this allows passing multiple buffers. + /// + /// [`recv_from`]: Socket::recv_from + /// + /// # Safety + /// + /// `recv_from_vectored` makes the same safety guarantees regarding `bufs` + /// as [`recv_vectored`]. + /// + /// [`recv_vectored`]: Socket::recv_vectored + #[cfg(not(target_os = "redox"))] + #[cfg_attr(docsrs, doc(cfg(not(target_os = "redox"))))] + pub fn recv_from_vectored( + &self, + bufs: &mut [MaybeUninitSlice<'_>], + ) -> io::Result<(usize, RecvFlags, SockAddr)> { + self.recv_from_vectored_with_flags(bufs, 0) + } + + /// Identical to [`recv_from_vectored`] but allows for specification of + /// arbitrary flags to the underlying `recvmsg`/`WSARecvFrom` call. + /// + /// [`recv_from_vectored`]: Socket::recv_from_vectored + /// + /// # Safety + /// + /// `recv_from_vectored` makes the same safety guarantees regarding `bufs` + /// as [`recv_vectored`]. + /// + /// [`recv_vectored`]: Socket::recv_vectored + #[cfg(not(target_os = "redox"))] + #[cfg_attr(docsrs, doc(cfg(not(target_os = "redox"))))] + pub fn recv_from_vectored_with_flags( + &self, + bufs: &mut [MaybeUninitSlice<'_>], + flags: c_int, + ) -> io::Result<(usize, RecvFlags, SockAddr)> { + sys::recv_from_vectored(self.as_raw(), bufs, flags) + } + + /// Receives data from the socket, without removing it from the queue. + /// + /// Successive calls return the same data. This is accomplished by passing + /// `MSG_PEEK` as a flag to the underlying `recvfrom` system call. + /// + /// On success, returns the number of bytes peeked and the address from + /// whence the data came. + /// + /// # Safety + /// + /// `peek_from` makes the same safety guarantees regarding the `buf`fer as + /// [`recv`]. + /// + /// # Note: Datagram Sockets + /// For datagram sockets, the behavior of this method when `buf` is smaller than + /// the datagram at the head of the receive queue differs between Windows and + /// Unix-like platforms (Linux, macOS, BSDs, etc: colloquially termed "*nix"). + /// + /// On *nix platforms, the datagram is truncated to the length of `buf`. + /// + /// On Windows, an error corresponding to `WSAEMSGSIZE` will be returned. + /// + /// For consistency between platforms, be sure to provide a sufficiently large buffer to avoid + /// truncation; the exact size required depends on the underlying protocol. + /// + /// If you just want to know the sender of the data, try [`peek_sender`]. + /// + /// [`recv`]: Socket::recv + /// [`peek_sender`]: Socket::peek_sender + pub fn peek_from(&self, buf: &mut [MaybeUninit]) -> io::Result<(usize, SockAddr)> { + self.recv_from_with_flags(buf, sys::MSG_PEEK) + } + + /// Retrieve the sender for the data at the head of the receive queue. + /// + /// This is equivalent to calling [`peek_from`] with a zero-sized buffer, + /// but suppresses the `WSAEMSGSIZE` error on Windows. + /// + /// [`peek_from`]: Socket::peek_from + pub fn peek_sender(&self) -> io::Result { + sys::peek_sender(self.as_raw()) + } + + /// Sends data on the socket to a connected peer. + /// + /// This is typically used on TCP sockets or datagram sockets which have + /// been connected. + /// + /// On success returns the number of bytes that were sent. + pub fn send(&self, buf: &[u8]) -> io::Result { + self.send_with_flags(buf, 0) + } + + /// Identical to [`send`] but allows for specification of arbitrary flags to the underlying + /// `send` call. + /// + /// [`send`]: #method.send + pub fn send_with_flags(&self, buf: &[u8], flags: c_int) -> io::Result { + sys::send(self.as_raw(), buf, flags) + } + + /// Send data to the connected peer. Returns the amount of bytes written. + #[cfg(not(target_os = "redox"))] + #[cfg_attr(docsrs, doc(cfg(not(target_os = "redox"))))] + pub fn send_vectored(&self, bufs: &[IoSlice<'_>]) -> io::Result { + self.send_vectored_with_flags(bufs, 0) + } + + /// Identical to [`send_vectored`] but allows for specification of arbitrary + /// flags to the underlying `sendmsg`/`WSASend` call. + /// + /// [`send_vectored`]: Socket::send_vectored + #[cfg(not(target_os = "redox"))] + #[cfg_attr(docsrs, doc(cfg(not(target_os = "redox"))))] + pub fn send_vectored_with_flags( + &self, + bufs: &[IoSlice<'_>], + flags: c_int, + ) -> io::Result { + sys::send_vectored(self.as_raw(), bufs, flags) + } + + /// Sends out-of-band (OOB) data on the socket to connected peer + /// by setting the `MSG_OOB` flag for this call. + /// + /// For more information, see [`send`], [`out_of_band_inline`]. + /// + /// [`send`]: #method.send + /// [`out_of_band_inline`]: #method.out_of_band_inline + pub fn send_out_of_band(&self, buf: &[u8]) -> io::Result { + self.send_with_flags(buf, sys::MSG_OOB) + } + + /// Sends data on the socket to the given address. On success, returns the + /// number of bytes written. + /// + /// This is typically used on UDP or datagram-oriented sockets. + pub fn send_to(&self, buf: &[u8], addr: &SockAddr) -> io::Result { + self.send_to_with_flags(buf, addr, 0) + } + + /// Identical to [`send_to`] but allows for specification of arbitrary flags + /// to the underlying `sendto` call. + /// + /// [`send_to`]: Socket::send_to + pub fn send_to_with_flags( + &self, + buf: &[u8], + addr: &SockAddr, + flags: c_int, + ) -> io::Result { + sys::send_to(self.as_raw(), buf, addr, flags) + } + + /// Send data to a peer listening on `addr`. Returns the amount of bytes + /// written. + #[cfg(not(target_os = "redox"))] + #[cfg_attr(docsrs, doc(cfg(not(target_os = "redox"))))] + pub fn send_to_vectored(&self, bufs: &[IoSlice<'_>], addr: &SockAddr) -> io::Result { + self.send_to_vectored_with_flags(bufs, addr, 0) + } + + /// Identical to [`send_to_vectored`] but allows for specification of + /// arbitrary flags to the underlying `sendmsg`/`WSASendTo` call. + /// + /// [`send_to_vectored`]: Socket::send_to_vectored + #[cfg(not(target_os = "redox"))] + #[cfg_attr(docsrs, doc(cfg(not(target_os = "redox"))))] + pub fn send_to_vectored_with_flags( + &self, + bufs: &[IoSlice<'_>], + addr: &SockAddr, + flags: c_int, + ) -> io::Result { + sys::send_to_vectored(self.as_raw(), bufs, addr, flags) + } +} + +/// Set `SOCK_CLOEXEC` and `NO_HANDLE_INHERIT` on the `ty`pe on platforms that +/// support it. +#[inline(always)] +fn set_common_type(ty: Type) -> Type { + // On platforms that support it set `SOCK_CLOEXEC`. + #[cfg(any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_os = "openbsd", + ))] + let ty = ty._cloexec(); + + // On windows set `NO_HANDLE_INHERIT`. + #[cfg(windows)] + let ty = ty._no_inherit(); + + ty +} + +/// Set `FD_CLOEXEC` and `NOSIGPIPE` on the `socket` for platforms that need it. +#[inline(always)] +#[allow(clippy::unnecessary_wraps)] +fn set_common_flags(socket: Socket) -> io::Result { + // On platforms that don't have `SOCK_CLOEXEC` use `FD_CLOEXEC`. + #[cfg(all( + unix, + not(any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_os = "openbsd", + )) + ))] + socket._set_cloexec(true)?; + + // On Apple platforms set `NOSIGPIPE`. + #[cfg(target_vendor = "apple")] + socket._set_nosigpipe(true)?; + + Ok(socket) +} + +/// A local interface specified by its index or an address assigned to it. +/// +/// `Index(0)` and `Address(Ipv4Addr::UNSPECIFIED)` are equivalent and indicate +/// that an appropriate interface should be selected by the system. +#[cfg(not(any( + target_os = "haiku", + target_os = "illumos", + target_os = "netbsd", + target_os = "redox", + target_os = "solaris", +)))] +#[derive(Debug)] +pub enum InterfaceIndexOrAddress { + /// An interface index. + Index(u32), + /// An address assigned to an interface. + Address(Ipv4Addr), +} + +/// Socket options get/set using `SOL_SOCKET`. +/// +/// Additional documentation can be found in documentation of the OS. +/// * Linux: +/// * Windows: +impl Socket { + /// Get the value of the `SO_BROADCAST` option for this socket. + /// + /// For more information about this option, see [`set_broadcast`]. + /// + /// [`set_broadcast`]: Socket::set_broadcast + pub fn broadcast(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::SOL_SOCKET, sys::SO_BROADCAST) + .map(|broadcast| broadcast != 0) + } + } + + /// Set the value of the `SO_BROADCAST` option for this socket. + /// + /// When enabled, this socket is allowed to send packets to a broadcast + /// address. + pub fn set_broadcast(&self, broadcast: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + sys::SOL_SOCKET, + sys::SO_BROADCAST, + broadcast as c_int, + ) + } + } + + /// Get the value of the `SO_ERROR` option on this socket. + /// + /// This will retrieve the stored error in the underlying socket, clearing + /// the field in the process. This can be useful for checking errors between + /// calls. + pub fn take_error(&self) -> io::Result> { + match unsafe { getsockopt::(self.as_raw(), sys::SOL_SOCKET, sys::SO_ERROR) } { + Ok(0) => Ok(None), + Ok(errno) => Ok(Some(io::Error::from_raw_os_error(errno))), + Err(err) => Err(err), + } + } + + /// Get the value of the `SO_KEEPALIVE` option on this socket. + /// + /// For more information about this option, see [`set_keepalive`]. + /// + /// [`set_keepalive`]: Socket::set_keepalive + pub fn keepalive(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::SOL_SOCKET, sys::SO_KEEPALIVE) + .map(|keepalive| keepalive != 0) + } + } + + /// Set value for the `SO_KEEPALIVE` option on this socket. + /// + /// Enable sending of keep-alive messages on connection-oriented sockets. + pub fn set_keepalive(&self, keepalive: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + sys::SOL_SOCKET, + sys::SO_KEEPALIVE, + keepalive as c_int, + ) + } + } + + /// Get the value of the `SO_LINGER` option on this socket. + /// + /// For more information about this option, see [`set_linger`]. + /// + /// [`set_linger`]: Socket::set_linger + pub fn linger(&self) -> io::Result> { + unsafe { + getsockopt::(self.as_raw(), sys::SOL_SOCKET, sys::SO_LINGER) + .map(from_linger) + } + } + + /// Set value for the `SO_LINGER` option on this socket. + /// + /// If `linger` is not `None`, a close(2) or shutdown(2) will not return + /// until all queued messages for the socket have been successfully sent or + /// the linger timeout has been reached. Otherwise, the call returns + /// immediately and the closing is done in the background. When the socket + /// is closed as part of exit(2), it always lingers in the background. + /// + /// # Notes + /// + /// On most OSs the duration only has a precision of seconds and will be + /// silently truncated. + /// + /// On Apple platforms (e.g. macOS, iOS, etc) this uses `SO_LINGER_SEC`. + pub fn set_linger(&self, linger: Option) -> io::Result<()> { + let linger = into_linger(linger); + unsafe { setsockopt(self.as_raw(), sys::SOL_SOCKET, sys::SO_LINGER, linger) } + } + + /// Get value for the `SO_OOBINLINE` option on this socket. + /// + /// For more information about this option, see [`set_out_of_band_inline`]. + /// + /// [`set_out_of_band_inline`]: Socket::set_out_of_band_inline + #[cfg(not(target_os = "redox"))] + #[cfg_attr(docsrs, doc(cfg(not(target_os = "redox"))))] + pub fn out_of_band_inline(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::SOL_SOCKET, sys::SO_OOBINLINE) + .map(|oob_inline| oob_inline != 0) + } + } + + /// Set value for the `SO_OOBINLINE` option on this socket. + /// + /// If this option is enabled, out-of-band data is directly placed into the + /// receive data stream. Otherwise, out-of-band data is passed only when the + /// `MSG_OOB` flag is set during receiving. As per RFC6093, TCP sockets + /// using the Urgent mechanism are encouraged to set this flag. + #[cfg(not(target_os = "redox"))] + #[cfg_attr(docsrs, doc(cfg(not(target_os = "redox"))))] + pub fn set_out_of_band_inline(&self, oob_inline: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + sys::SOL_SOCKET, + sys::SO_OOBINLINE, + oob_inline as c_int, + ) + } + } + + /// Get value for the `SO_RCVBUF` option on this socket. + /// + /// For more information about this option, see [`set_recv_buffer_size`]. + /// + /// [`set_recv_buffer_size`]: Socket::set_recv_buffer_size + pub fn recv_buffer_size(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::SOL_SOCKET, sys::SO_RCVBUF) + .map(|size| size as usize) + } + } + + /// Set value for the `SO_RCVBUF` option on this socket. + /// + /// Changes the size of the operating system's receive buffer associated + /// with the socket. + pub fn set_recv_buffer_size(&self, size: usize) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + sys::SOL_SOCKET, + sys::SO_RCVBUF, + size as c_int, + ) + } + } + + /// Get value for the `SO_RCVTIMEO` option on this socket. + /// + /// If the returned timeout is `None`, then `read` and `recv` calls will + /// block indefinitely. + pub fn read_timeout(&self) -> io::Result> { + sys::timeout_opt(self.as_raw(), sys::SOL_SOCKET, sys::SO_RCVTIMEO) + } + + /// Set value for the `SO_RCVTIMEO` option on this socket. + /// + /// If `timeout` is `None`, then `read` and `recv` calls will block + /// indefinitely. + pub fn set_read_timeout(&self, duration: Option) -> io::Result<()> { + sys::set_timeout_opt(self.as_raw(), sys::SOL_SOCKET, sys::SO_RCVTIMEO, duration) + } + + /// Get the value of the `SO_REUSEADDR` option on this socket. + /// + /// For more information about this option, see [`set_reuse_address`]. + /// + /// [`set_reuse_address`]: Socket::set_reuse_address + pub fn reuse_address(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::SOL_SOCKET, sys::SO_REUSEADDR) + .map(|reuse| reuse != 0) + } + } + + /// Set value for the `SO_REUSEADDR` option on this socket. + /// + /// This indicates that futher calls to `bind` may allow reuse of local + /// addresses. For IPv4 sockets this means that a socket may bind even when + /// there's a socket already listening on this port. + pub fn set_reuse_address(&self, reuse: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + sys::SOL_SOCKET, + sys::SO_REUSEADDR, + reuse as c_int, + ) + } + } + + /// Get the value of the `SO_SNDBUF` option on this socket. + /// + /// For more information about this option, see [`set_send_buffer_size`]. + /// + /// [`set_send_buffer_size`]: Socket::set_send_buffer_size + pub fn send_buffer_size(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::SOL_SOCKET, sys::SO_SNDBUF) + .map(|size| size as usize) + } + } + + /// Set value for the `SO_SNDBUF` option on this socket. + /// + /// Changes the size of the operating system's send buffer associated with + /// the socket. + pub fn set_send_buffer_size(&self, size: usize) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + sys::SOL_SOCKET, + sys::SO_SNDBUF, + size as c_int, + ) + } + } + + /// Get value for the `SO_SNDTIMEO` option on this socket. + /// + /// If the returned timeout is `None`, then `write` and `send` calls will + /// block indefinitely. + pub fn write_timeout(&self) -> io::Result> { + sys::timeout_opt(self.as_raw(), sys::SOL_SOCKET, sys::SO_SNDTIMEO) + } + + /// Set value for the `SO_SNDTIMEO` option on this socket. + /// + /// If `timeout` is `None`, then `write` and `send` calls will block + /// indefinitely. + pub fn set_write_timeout(&self, duration: Option) -> io::Result<()> { + sys::set_timeout_opt(self.as_raw(), sys::SOL_SOCKET, sys::SO_SNDTIMEO, duration) + } +} + +fn from_linger(linger: sys::linger) -> Option { + if linger.l_onoff == 0 { + None + } else { + Some(Duration::from_secs(linger.l_linger as u64)) + } +} + +fn into_linger(duration: Option) -> sys::linger { + match duration { + Some(duration) => sys::linger { + l_onoff: 1, + l_linger: duration.as_secs() as _, + }, + None => sys::linger { + l_onoff: 0, + l_linger: 0, + }, + } +} + +/// Socket options for IPv4 sockets, get/set using `IPPROTO_IP`. +/// +/// Additional documentation can be found in documentation of the OS. +/// * Linux: +/// * Windows: +impl Socket { + /// Get the value of the `IP_HDRINCL` option on this socket. + /// + /// For more information about this option, see [`set_header_included`]. + /// + /// [`set_header_included`]: Socket::set_header_included + #[cfg(all(feature = "all", not(target_os = "redox")))] + #[cfg_attr(docsrs, doc(all(feature = "all", not(target_os = "redox"))))] + pub fn header_included(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::IPPROTO_IP, sys::IP_HDRINCL) + .map(|included| included != 0) + } + } + + /// Set the value of the `IP_HDRINCL` option on this socket. + /// + /// If enabled, the user supplies an IP header in front of the user data. + /// Valid only for [`SOCK_RAW`] sockets; see [raw(7)] for more information. + /// When this flag is enabled, the values set by `IP_OPTIONS`, [`IP_TTL`], + /// and [`IP_TOS`] are ignored. + /// + /// [`SOCK_RAW`]: Type::RAW + /// [raw(7)]: https://man7.org/linux/man-pages/man7/raw.7.html + /// [`IP_TTL`]: Socket::set_ttl + /// [`IP_TOS`]: Socket::set_tos + #[cfg(all(feature = "all", not(target_os = "redox")))] + #[cfg_attr(docsrs, doc(all(feature = "all", not(target_os = "redox"))))] + pub fn set_header_included(&self, included: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IP, + sys::IP_HDRINCL, + included as c_int, + ) + } + } + + /// Get the value of the `IP_TRANSPARENT` option on this socket. + /// + /// For more information about this option, see [`set_ip_transparent`]. + /// + /// [`set_ip_transparent`]: Socket::set_ip_transparent + #[cfg(any(doc, all(feature = "all", target_os = "linux")))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn ip_transparent(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::IPPROTO_IP, libc::IP_TRANSPARENT) + .map(|transparent| transparent != 0) + } + } + + /// Set the value of the `IP_TRANSPARENT` option on this socket. + /// + /// Setting this boolean option enables transparent proxying + /// on this socket. This socket option allows the calling + /// application to bind to a nonlocal IP address and operate + /// both as a client and a server with the foreign address as + /// the local endpoint. NOTE: this requires that routing be + /// set up in a way that packets going to the foreign address + /// are routed through the TProxy box (i.e., the system + /// hosting the application that employs the IP_TRANSPARENT + /// socket option). Enabling this socket option requires + /// superuser privileges (the `CAP_NET_ADMIN` capability). + /// + /// TProxy redirection with the iptables TPROXY target also + /// requires that this option be set on the redirected socket. + #[cfg(any(doc, all(feature = "all", target_os = "linux")))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn set_ip_transparent(&self, transparent: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IP, + libc::IP_TRANSPARENT, + transparent as c_int, + ) + } + } + + /// Join a multicast group using `IP_ADD_MEMBERSHIP` option on this socket. + /// + /// This function specifies a new multicast group for this socket to join. + /// The address must be a valid multicast address, and `interface` is the + /// address of the local interface with which the system should join the + /// multicast group. If it's [`Ipv4Addr::UNSPECIFIED`] (`INADDR_ANY`) then + /// an appropriate interface is chosen by the system. + pub fn join_multicast_v4(&self, multiaddr: &Ipv4Addr, interface: &Ipv4Addr) -> io::Result<()> { + let mreq = sys::IpMreq { + imr_multiaddr: sys::to_in_addr(multiaddr), + imr_interface: sys::to_in_addr(interface), + }; + unsafe { setsockopt(self.as_raw(), sys::IPPROTO_IP, sys::IP_ADD_MEMBERSHIP, mreq) } + } + + /// Leave a multicast group using `IP_DROP_MEMBERSHIP` option on this socket. + /// + /// For more information about this option, see [`join_multicast_v4`]. + /// + /// [`join_multicast_v4`]: Socket::join_multicast_v4 + pub fn leave_multicast_v4(&self, multiaddr: &Ipv4Addr, interface: &Ipv4Addr) -> io::Result<()> { + let mreq = sys::IpMreq { + imr_multiaddr: sys::to_in_addr(multiaddr), + imr_interface: sys::to_in_addr(interface), + }; + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IP, + sys::IP_DROP_MEMBERSHIP, + mreq, + ) + } + } + + /// Join a multicast group using `IP_ADD_MEMBERSHIP` option on this socket. + /// + /// This function specifies a new multicast group for this socket to join. + /// The address must be a valid multicast address, and `interface` specifies + /// the local interface with which the system should join the multicast + /// group. See [`InterfaceIndexOrAddress`]. + #[cfg(not(any( + target_os = "haiku", + target_os = "illumos", + target_os = "netbsd", + target_os = "openbsd", + target_os = "redox", + target_os = "solaris", + target_os = "nto", + )))] + pub fn join_multicast_v4_n( + &self, + multiaddr: &Ipv4Addr, + interface: &InterfaceIndexOrAddress, + ) -> io::Result<()> { + let mreqn = sys::to_mreqn(multiaddr, interface); + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IP, + sys::IP_ADD_MEMBERSHIP, + mreqn, + ) + } + } + + /// Leave a multicast group using `IP_DROP_MEMBERSHIP` option on this socket. + /// + /// For more information about this option, see [`join_multicast_v4_n`]. + /// + /// [`join_multicast_v4_n`]: Socket::join_multicast_v4_n + #[cfg(not(any( + target_os = "haiku", + target_os = "illumos", + target_os = "netbsd", + target_os = "openbsd", + target_os = "redox", + target_os = "solaris", + target_os = "nto", + )))] + pub fn leave_multicast_v4_n( + &self, + multiaddr: &Ipv4Addr, + interface: &InterfaceIndexOrAddress, + ) -> io::Result<()> { + let mreqn = sys::to_mreqn(multiaddr, interface); + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IP, + sys::IP_DROP_MEMBERSHIP, + mreqn, + ) + } + } + + /// Join a multicast SSM channel using `IP_ADD_SOURCE_MEMBERSHIP` option on this socket. + /// + /// This function specifies a new multicast channel for this socket to join. + /// The group must be a valid SSM group address, the source must be the address of the sender + /// and `interface` is the address of the local interface with which the system should join the + /// multicast group. If it's [`Ipv4Addr::UNSPECIFIED`] (`INADDR_ANY`) then + /// an appropriate interface is chosen by the system. + #[cfg(not(any( + target_os = "dragonfly", + target_os = "haiku", + target_os = "netbsd", + target_os = "openbsd", + target_os = "redox", + target_os = "fuchsia", + target_os = "nto", + )))] + pub fn join_ssm_v4( + &self, + source: &Ipv4Addr, + group: &Ipv4Addr, + interface: &Ipv4Addr, + ) -> io::Result<()> { + let mreqs = sys::IpMreqSource { + imr_multiaddr: sys::to_in_addr(group), + imr_interface: sys::to_in_addr(interface), + imr_sourceaddr: sys::to_in_addr(source), + }; + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IP, + sys::IP_ADD_SOURCE_MEMBERSHIP, + mreqs, + ) + } + } + + /// Leave a multicast group using `IP_DROP_SOURCE_MEMBERSHIP` option on this socket. + /// + /// For more information about this option, see [`join_ssm_v4`]. + /// + /// [`join_ssm_v4`]: Socket::join_ssm_v4 + #[cfg(not(any( + target_os = "dragonfly", + target_os = "haiku", + target_os = "netbsd", + target_os = "openbsd", + target_os = "redox", + target_os = "fuchsia", + target_os = "nto", + )))] + pub fn leave_ssm_v4( + &self, + source: &Ipv4Addr, + group: &Ipv4Addr, + interface: &Ipv4Addr, + ) -> io::Result<()> { + let mreqs = sys::IpMreqSource { + imr_multiaddr: sys::to_in_addr(group), + imr_interface: sys::to_in_addr(interface), + imr_sourceaddr: sys::to_in_addr(source), + }; + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IP, + sys::IP_DROP_SOURCE_MEMBERSHIP, + mreqs, + ) + } + } + + /// Get the value of the `IP_MULTICAST_IF` option for this socket. + /// + /// For more information about this option, see [`set_multicast_if_v4`]. + /// + /// [`set_multicast_if_v4`]: Socket::set_multicast_if_v4 + pub fn multicast_if_v4(&self) -> io::Result { + unsafe { + getsockopt(self.as_raw(), sys::IPPROTO_IP, sys::IP_MULTICAST_IF).map(sys::from_in_addr) + } + } + + /// Set the value of the `IP_MULTICAST_IF` option for this socket. + /// + /// Specifies the interface to use for routing multicast packets. + pub fn set_multicast_if_v4(&self, interface: &Ipv4Addr) -> io::Result<()> { + let interface = sys::to_in_addr(interface); + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IP, + sys::IP_MULTICAST_IF, + interface, + ) + } + } + + /// Get the value of the `IP_MULTICAST_LOOP` option for this socket. + /// + /// For more information about this option, see [`set_multicast_loop_v4`]. + /// + /// [`set_multicast_loop_v4`]: Socket::set_multicast_loop_v4 + pub fn multicast_loop_v4(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::IPPROTO_IP, sys::IP_MULTICAST_LOOP) + .map(|loop_v4| loop_v4 != 0) + } + } + + /// Set the value of the `IP_MULTICAST_LOOP` option for this socket. + /// + /// If enabled, multicast packets will be looped back to the local socket. + /// Note that this may not have any affect on IPv6 sockets. + pub fn set_multicast_loop_v4(&self, loop_v4: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IP, + sys::IP_MULTICAST_LOOP, + loop_v4 as c_int, + ) + } + } + + /// Get the value of the `IP_MULTICAST_TTL` option for this socket. + /// + /// For more information about this option, see [`set_multicast_ttl_v4`]. + /// + /// [`set_multicast_ttl_v4`]: Socket::set_multicast_ttl_v4 + pub fn multicast_ttl_v4(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::IPPROTO_IP, sys::IP_MULTICAST_TTL) + .map(|ttl| ttl as u32) + } + } + + /// Set the value of the `IP_MULTICAST_TTL` option for this socket. + /// + /// Indicates the time-to-live value of outgoing multicast packets for + /// this socket. The default value is 1 which means that multicast packets + /// don't leave the local network unless explicitly requested. + /// + /// Note that this may not have any affect on IPv6 sockets. + pub fn set_multicast_ttl_v4(&self, ttl: u32) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IP, + sys::IP_MULTICAST_TTL, + ttl as c_int, + ) + } + } + + /// Get the value of the `IP_TTL` option for this socket. + /// + /// For more information about this option, see [`set_ttl`]. + /// + /// [`set_ttl`]: Socket::set_ttl + pub fn ttl(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::IPPROTO_IP, sys::IP_TTL).map(|ttl| ttl as u32) + } + } + + /// Set the value of the `IP_TTL` option for this socket. + /// + /// This value sets the time-to-live field that is used in every packet sent + /// from this socket. + pub fn set_ttl(&self, ttl: u32) -> io::Result<()> { + unsafe { setsockopt(self.as_raw(), sys::IPPROTO_IP, sys::IP_TTL, ttl as c_int) } + } + + /// Set the value of the `IP_TOS` option for this socket. + /// + /// This value sets the type-of-service field that is used in every packet + /// sent from this socket. + /// + /// NOTE: + /// documents that not all versions of windows support `IP_TOS`. + #[cfg(not(any( + target_os = "fuchsia", + target_os = "redox", + target_os = "solaris", + target_os = "illumos", + )))] + pub fn set_tos(&self, tos: u32) -> io::Result<()> { + unsafe { setsockopt(self.as_raw(), sys::IPPROTO_IP, sys::IP_TOS, tos as c_int) } + } + + /// Get the value of the `IP_TOS` option for this socket. + /// + /// For more information about this option, see [`set_tos`]. + /// + /// NOTE: + /// documents that not all versions of windows support `IP_TOS`. + /// + /// [`set_tos`]: Socket::set_tos + #[cfg(not(any( + target_os = "fuchsia", + target_os = "redox", + target_os = "solaris", + target_os = "illumos", + )))] + pub fn tos(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::IPPROTO_IP, sys::IP_TOS).map(|tos| tos as u32) + } + } + + /// Set the value of the `IP_RECVTOS` option for this socket. + /// + /// If enabled, the IP_TOS ancillary message is passed with + /// incoming packets. It contains a byte which specifies the + /// Type of Service/Precedence field of the packet header. + #[cfg(not(any( + target_os = "dragonfly", + target_os = "fuchsia", + target_os = "illumos", + target_os = "netbsd", + target_os = "openbsd", + target_os = "redox", + target_os = "solaris", + target_os = "windows", + target_os = "nto", + )))] + pub fn set_recv_tos(&self, recv_tos: bool) -> io::Result<()> { + let recv_tos = if recv_tos { 1 } else { 0 }; + + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IP, + sys::IP_RECVTOS, + recv_tos as c_int, + ) + } + } + + /// Get the value of the `IP_RECVTOS` option for this socket. + /// + /// For more information about this option, see [`set_recv_tos`]. + /// + /// [`set_recv_tos`]: Socket::set_recv_tos + #[cfg(not(any( + target_os = "dragonfly", + target_os = "fuchsia", + target_os = "illumos", + target_os = "netbsd", + target_os = "openbsd", + target_os = "redox", + target_os = "solaris", + target_os = "windows", + target_os = "nto", + )))] + pub fn recv_tos(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::IPPROTO_IP, sys::IP_RECVTOS) + .map(|recv_tos| recv_tos > 0) + } + } +} + +/// Socket options for IPv6 sockets, get/set using `IPPROTO_IPV6`. +/// +/// Additional documentation can be found in documentation of the OS. +/// * Linux: +/// * Windows: +impl Socket { + /// Join a multicast group using `IPV6_ADD_MEMBERSHIP` option on this socket. + /// + /// Some OSs use `IPV6_JOIN_GROUP` for this option. + /// + /// This function specifies a new multicast group for this socket to join. + /// The address must be a valid multicast address, and `interface` is the + /// index of the interface to join/leave (or 0 to indicate any interface). + #[cfg(not(target_os = "nto"))] + pub fn join_multicast_v6(&self, multiaddr: &Ipv6Addr, interface: u32) -> io::Result<()> { + let mreq = sys::Ipv6Mreq { + ipv6mr_multiaddr: sys::to_in6_addr(multiaddr), + // NOTE: some OSs use `c_int`, others use `c_uint`. + ipv6mr_interface: interface as _, + }; + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IPV6, + sys::IPV6_ADD_MEMBERSHIP, + mreq, + ) + } + } + + /// Leave a multicast group using `IPV6_DROP_MEMBERSHIP` option on this socket. + /// + /// Some OSs use `IPV6_LEAVE_GROUP` for this option. + /// + /// For more information about this option, see [`join_multicast_v6`]. + /// + /// [`join_multicast_v6`]: Socket::join_multicast_v6 + #[cfg(not(target_os = "nto"))] + pub fn leave_multicast_v6(&self, multiaddr: &Ipv6Addr, interface: u32) -> io::Result<()> { + let mreq = sys::Ipv6Mreq { + ipv6mr_multiaddr: sys::to_in6_addr(multiaddr), + // NOTE: some OSs use `c_int`, others use `c_uint`. + ipv6mr_interface: interface as _, + }; + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IPV6, + sys::IPV6_DROP_MEMBERSHIP, + mreq, + ) + } + } + + /// Get the value of the `IPV6_MULTICAST_HOPS` option for this socket + /// + /// For more information about this option, see [`set_multicast_hops_v6`]. + /// + /// [`set_multicast_hops_v6`]: Socket::set_multicast_hops_v6 + pub fn multicast_hops_v6(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::IPPROTO_IPV6, sys::IPV6_MULTICAST_HOPS) + .map(|hops| hops as u32) + } + } + + /// Set the value of the `IPV6_MULTICAST_HOPS` option for this socket + /// + /// Indicates the number of "routers" multicast packets will transit for + /// this socket. The default value is 1 which means that multicast packets + /// don't leave the local network unless explicitly requested. + pub fn set_multicast_hops_v6(&self, hops: u32) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IPV6, + sys::IPV6_MULTICAST_HOPS, + hops as c_int, + ) + } + } + + /// Get the value of the `IPV6_MULTICAST_IF` option for this socket. + /// + /// For more information about this option, see [`set_multicast_if_v6`]. + /// + /// [`set_multicast_if_v6`]: Socket::set_multicast_if_v6 + pub fn multicast_if_v6(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::IPPROTO_IPV6, sys::IPV6_MULTICAST_IF) + .map(|interface| interface as u32) + } + } + + /// Set the value of the `IPV6_MULTICAST_IF` option for this socket. + /// + /// Specifies the interface to use for routing multicast packets. Unlike + /// ipv4, this is generally required in ipv6 contexts where network routing + /// prefixes may overlap. + pub fn set_multicast_if_v6(&self, interface: u32) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IPV6, + sys::IPV6_MULTICAST_IF, + interface as c_int, + ) + } + } + + /// Get the value of the `IPV6_MULTICAST_LOOP` option for this socket. + /// + /// For more information about this option, see [`set_multicast_loop_v6`]. + /// + /// [`set_multicast_loop_v6`]: Socket::set_multicast_loop_v6 + pub fn multicast_loop_v6(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::IPPROTO_IPV6, sys::IPV6_MULTICAST_LOOP) + .map(|loop_v6| loop_v6 != 0) + } + } + + /// Set the value of the `IPV6_MULTICAST_LOOP` option for this socket. + /// + /// Controls whether this socket sees the multicast packets it sends itself. + /// Note that this may not have any affect on IPv4 sockets. + pub fn set_multicast_loop_v6(&self, loop_v6: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IPV6, + sys::IPV6_MULTICAST_LOOP, + loop_v6 as c_int, + ) + } + } + + /// Get the value of the `IPV6_UNICAST_HOPS` option for this socket. + /// + /// Specifies the hop limit for ipv6 unicast packets + pub fn unicast_hops_v6(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::IPPROTO_IPV6, sys::IPV6_UNICAST_HOPS) + .map(|hops| hops as u32) + } + } + + /// Set the value for the `IPV6_UNICAST_HOPS` option on this socket. + /// + /// Specifies the hop limit for ipv6 unicast packets + pub fn set_unicast_hops_v6(&self, hops: u32) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IPV6, + sys::IPV6_UNICAST_HOPS, + hops as c_int, + ) + } + } + + /// Get the value of the `IPV6_V6ONLY` option for this socket. + /// + /// For more information about this option, see [`set_only_v6`]. + /// + /// [`set_only_v6`]: Socket::set_only_v6 + pub fn only_v6(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::IPPROTO_IPV6, sys::IPV6_V6ONLY) + .map(|only_v6| only_v6 != 0) + } + } + + /// Set the value for the `IPV6_V6ONLY` option on this socket. + /// + /// If this is set to `true` then the socket is restricted to sending and + /// receiving IPv6 packets only. In this case two IPv4 and IPv6 applications + /// can bind the same port at the same time. + /// + /// If this is set to `false` then the socket can be used to send and + /// receive packets from an IPv4-mapped IPv6 address. + pub fn set_only_v6(&self, only_v6: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_IPV6, + sys::IPV6_V6ONLY, + only_v6 as c_int, + ) + } + } +} + +/// Socket options for TCP sockets, get/set using `IPPROTO_TCP`. +/// +/// Additional documentation can be found in documentation of the OS. +/// * Linux: +/// * Windows: +impl Socket { + /// Get the value of the `TCP_KEEPIDLE` option on this socket. + /// + /// This returns the value of `TCP_KEEPALIVE` on macOS and iOS and `TCP_KEEPIDLE` on all other + /// supported Unix operating systems. + #[cfg(any( + doc, + all( + feature = "all", + not(any(windows, target_os = "haiku", target_os = "openbsd")) + ) + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + not(any(windows, target_os = "haiku", target_os = "openbsd")) + ))) + )] + pub fn keepalive_time(&self) -> io::Result { + sys::keepalive_time(self.as_raw()) + } + + /// Get the value of the `TCP_KEEPINTVL` option on this socket. + /// + /// For more information about this option, see [`set_tcp_keepalive`]. + /// + /// [`set_tcp_keepalive`]: Socket::set_tcp_keepalive + #[cfg(all( + feature = "all", + any( + doc, + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_vendor = "apple", + ) + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_vendor = "apple", + ) + ))) + )] + pub fn keepalive_interval(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::IPPROTO_TCP, sys::TCP_KEEPINTVL) + .map(|secs| Duration::from_secs(secs as u64)) + } + } + + /// Get the value of the `TCP_KEEPCNT` option on this socket. + /// + /// For more information about this option, see [`set_tcp_keepalive`]. + /// + /// [`set_tcp_keepalive`]: Socket::set_tcp_keepalive + #[cfg(all( + feature = "all", + any( + doc, + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_vendor = "apple", + ) + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_vendor = "apple", + ) + ))) + )] + pub fn keepalive_retries(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::IPPROTO_TCP, sys::TCP_KEEPCNT) + .map(|retries| retries as u32) + } + } + + /// Set parameters configuring TCP keepalive probes for this socket. + /// + /// The supported parameters depend on the operating system, and are + /// configured using the [`TcpKeepalive`] struct. At a minimum, all systems + /// support configuring the [keepalive time]: the time after which the OS + /// will start sending keepalive messages on an idle connection. + /// + /// [keepalive time]: TcpKeepalive::with_time + /// + /// # Notes + /// + /// * This will enable `SO_KEEPALIVE` on this socket, if it is not already + /// enabled. + /// * On some platforms, such as Windows, any keepalive parameters *not* + /// configured by the `TcpKeepalive` struct passed to this function may be + /// overwritten with their default values. Therefore, this function should + /// either only be called once per socket, or the same parameters should + /// be passed every time it is called. + /// + /// # Examples + /// + /// ``` + /// use std::time::Duration; + /// + /// use socket2::{Socket, TcpKeepalive, Domain, Type}; + /// + /// # fn main() -> std::io::Result<()> { + /// let socket = Socket::new(Domain::IPV4, Type::STREAM, None)?; + /// let keepalive = TcpKeepalive::new() + /// .with_time(Duration::from_secs(4)); + /// // Depending on the target operating system, we may also be able to + /// // configure the keepalive probe interval and/or the number of + /// // retries here as well. + /// + /// socket.set_tcp_keepalive(&keepalive)?; + /// # Ok(()) } + /// ``` + /// + pub fn set_tcp_keepalive(&self, params: &TcpKeepalive) -> io::Result<()> { + self.set_keepalive(true)?; + sys::set_tcp_keepalive(self.as_raw(), params) + } + + /// Get the value of the `TCP_NODELAY` option on this socket. + /// + /// For more information about this option, see [`set_nodelay`]. + /// + /// [`set_nodelay`]: Socket::set_nodelay + pub fn nodelay(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), sys::IPPROTO_TCP, sys::TCP_NODELAY) + .map(|nodelay| nodelay != 0) + } + } + + /// Set the value of the `TCP_NODELAY` option on this socket. + /// + /// If set, this option disables the Nagle algorithm. This means that + /// segments are always sent as soon as possible, even if there is only a + /// small amount of data. When not set, data is buffered until there is a + /// sufficient amount to send out, thereby avoiding the frequent sending of + /// small packets. + pub fn set_nodelay(&self, nodelay: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + sys::IPPROTO_TCP, + sys::TCP_NODELAY, + nodelay as c_int, + ) + } + } +} + +impl Read for Socket { + fn read(&mut self, buf: &mut [u8]) -> io::Result { + // Safety: the `recv` implementation promises not to write uninitialised + // bytes to the `buf`fer, so this casting is safe. + let buf = unsafe { &mut *(buf as *mut [u8] as *mut [MaybeUninit]) }; + self.recv(buf) + } + + #[cfg(not(target_os = "redox"))] + fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> io::Result { + // Safety: both `IoSliceMut` and `MaybeUninitSlice` promise to have the + // same layout, that of `iovec`/`WSABUF`. Furthermore `recv_vectored` + // promises to not write unitialised bytes to the `bufs` and pass it + // directly to the `recvmsg` system call, so this is safe. + let bufs = unsafe { &mut *(bufs as *mut [IoSliceMut<'_>] as *mut [MaybeUninitSlice<'_>]) }; + self.recv_vectored(bufs).map(|(n, _)| n) + } +} + +impl<'a> Read for &'a Socket { + fn read(&mut self, buf: &mut [u8]) -> io::Result { + // Safety: see other `Read::read` impl. + let buf = unsafe { &mut *(buf as *mut [u8] as *mut [MaybeUninit]) }; + self.recv(buf) + } + + #[cfg(not(target_os = "redox"))] + fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> io::Result { + // Safety: see other `Read::read` impl. + let bufs = unsafe { &mut *(bufs as *mut [IoSliceMut<'_>] as *mut [MaybeUninitSlice<'_>]) }; + self.recv_vectored(bufs).map(|(n, _)| n) + } +} + +impl Write for Socket { + fn write(&mut self, buf: &[u8]) -> io::Result { + self.send(buf) + } + + #[cfg(not(target_os = "redox"))] + fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result { + self.send_vectored(bufs) + } + + fn flush(&mut self) -> io::Result<()> { + Ok(()) + } +} + +impl<'a> Write for &'a Socket { + fn write(&mut self, buf: &[u8]) -> io::Result { + self.send(buf) + } + + #[cfg(not(target_os = "redox"))] + fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result { + self.send_vectored(bufs) + } + + fn flush(&mut self) -> io::Result<()> { + Ok(()) + } +} + +impl fmt::Debug for Socket { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("Socket") + .field("raw", &self.as_raw()) + .field("local_addr", &self.local_addr().ok()) + .field("peer_addr", &self.peer_addr().ok()) + .finish() + } +} + +from!(net::TcpStream, Socket); +from!(net::TcpListener, Socket); +from!(net::UdpSocket, Socket); +from!(Socket, net::TcpStream); +from!(Socket, net::TcpListener); +from!(Socket, net::UdpSocket); diff -Nru temporalio-1.3.0/vendor/socket2-0.4.9/src/sockref.rs temporalio-1.3.0/vendor/socket2-0.4.9/src/sockref.rs --- temporalio-1.3.0/vendor/socket2-0.4.9/src/sockref.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2-0.4.9/src/sockref.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,147 @@ +use std::fmt; +use std::marker::PhantomData; +use std::mem::ManuallyDrop; +use std::ops::Deref; +#[cfg(unix)] +use std::os::unix::io::{AsRawFd, FromRawFd}; +#[cfg(windows)] +use std::os::windows::io::{AsRawSocket, FromRawSocket}; + +use crate::Socket; + +/// A reference to a [`Socket`] that can be used to configure socket types other +/// than the `Socket` type itself. +/// +/// This allows for example a [`TcpStream`], found in the standard library, to +/// be configured using all the additional methods found in the [`Socket`] API. +/// +/// `SockRef` can be created from any socket type that implements [`AsRawFd`] +/// (Unix) or [`AsRawSocket`] (Windows) using the [`From`] implementation, but +/// the caller must ensure the file descriptor/socket is a valid. +/// +/// [`TcpStream`]: std::net::TcpStream +// Don't use intra-doc links because they won't build on every platform. +/// [`AsRawFd`]: https://doc.rust-lang.org/stable/std/os/unix/io/trait.AsRawFd.html +/// [`AsRawSocket`]: https://doc.rust-lang.org/stable/std/os/windows/io/trait.AsRawSocket.html +/// +/// # Examples +/// +/// Below is an example of converting a [`TcpStream`] into a [`SockRef`]. +/// +/// ``` +/// use std::net::{TcpStream, SocketAddr}; +/// +/// use socket2::SockRef; +/// +/// # fn main() -> Result<(), Box> { +/// // Create `TcpStream` from the standard library. +/// let address: SocketAddr = "127.0.0.1:1234".parse()?; +/// # let b1 = std::sync::Arc::new(std::sync::Barrier::new(2)); +/// # let b2 = b1.clone(); +/// # let handle = std::thread::spawn(move || { +/// # let listener = std::net::TcpListener::bind(address).unwrap(); +/// # b2.wait(); +/// # let (stream, _) = listener.accept().unwrap(); +/// # std::thread::sleep(std::time::Duration::from_millis(10)); +/// # drop(stream); +/// # }); +/// # b1.wait(); +/// let stream = TcpStream::connect(address)?; +/// +/// // Create a `SockRef`erence to the stream. +/// let socket_ref = SockRef::from(&stream); +/// // Use `Socket::set_nodelay` on the stream. +/// socket_ref.set_nodelay(true)?; +/// drop(socket_ref); +/// +/// assert_eq!(stream.nodelay()?, true); +/// # handle.join().unwrap(); +/// # Ok(()) +/// # } +/// ``` +/// +/// Below is an example of **incorrect usage** of `SockRef::from`, which is +/// currently possible (but not intended and will be fixed in future versions). +/// +/// ```compile_fail +/// use socket2::SockRef; +/// +/// # fn main() -> Result<(), Box> { +/// /// THIS USAGE IS NOT VALID! +/// let socket_ref = SockRef::from(&123); +/// // The above line is overseen possibility when using `SockRef::from`, it +/// // uses the `RawFd` (on Unix), which is a type alias for `c_int`/`i32`, +/// // which implements `AsRawFd`. However it may be clear that this usage is +/// // invalid as it doesn't guarantee that `123` is a valid file descriptor. +/// +/// // Using `Socket::set_nodelay` now will call it on a file descriptor we +/// // don't own! We don't even not if the file descriptor is valid or a socket. +/// socket_ref.set_nodelay(true)?; +/// drop(socket_ref); +/// # Ok(()) +/// # } +/// # DO_NOT_COMPILE +/// ``` +pub struct SockRef<'s> { + /// Because this is a reference we don't own the `Socket`, however `Socket` + /// closes itself when dropped, so we use `ManuallyDrop` to prevent it from + /// closing itself. + socket: ManuallyDrop, + /// Because we don't own the socket we need to ensure the socket remains + /// open while we have a "reference" to it, the lifetime `'s` ensures this. + _lifetime: PhantomData<&'s Socket>, +} + +impl<'s> Deref for SockRef<'s> { + type Target = Socket; + + fn deref(&self) -> &Self::Target { + &self.socket + } +} + +/// On Windows, a corresponding `From<&impl AsRawSocket>` implementation exists. +#[cfg(unix)] +#[cfg_attr(docsrs, doc(cfg(unix)))] +impl<'s, S> From<&'s S> for SockRef<'s> +where + S: AsRawFd, +{ + /// The caller must ensure `S` is actually a socket. + fn from(socket: &'s S) -> Self { + let fd = socket.as_raw_fd(); + assert!(fd >= 0); + SockRef { + socket: ManuallyDrop::new(unsafe { Socket::from_raw_fd(fd) }), + _lifetime: PhantomData, + } + } +} + +/// On Unix, a corresponding `From<&impl AsRawFd>` implementation exists. +#[cfg(windows)] +#[cfg_attr(docsrs, doc(cfg(windows)))] +impl<'s, S> From<&'s S> for SockRef<'s> +where + S: AsRawSocket, +{ + /// See the `From<&impl AsRawFd>` implementation. + fn from(socket: &'s S) -> Self { + let socket = socket.as_raw_socket(); + assert!(socket != winapi::um::winsock2::INVALID_SOCKET as _); + SockRef { + socket: ManuallyDrop::new(unsafe { Socket::from_raw_socket(socket) }), + _lifetime: PhantomData, + } + } +} + +impl fmt::Debug for SockRef<'_> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("SockRef") + .field("raw", &self.socket.as_raw()) + .field("local_addr", &self.socket.local_addr().ok()) + .field("peer_addr", &self.socket.peer_addr().ok()) + .finish() + } +} diff -Nru temporalio-1.3.0/vendor/socket2-0.4.9/src/sys/unix.rs temporalio-1.3.0/vendor/socket2-0.4.9/src/sys/unix.rs --- temporalio-1.3.0/vendor/socket2-0.4.9/src/sys/unix.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2-0.4.9/src/sys/unix.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,2101 @@ +// Copyright 2015 The Rust Project Developers. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use std::cmp::min; +#[cfg(not(target_os = "redox"))] +use std::io::IoSlice; +use std::marker::PhantomData; +use std::mem::{self, size_of, MaybeUninit}; +use std::net::Shutdown; +use std::net::{Ipv4Addr, Ipv6Addr}; +#[cfg(all(feature = "all", target_vendor = "apple"))] +use std::num::NonZeroU32; +#[cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "freebsd", + target_os = "linux", + target_vendor = "apple", + ) +))] +use std::num::NonZeroUsize; +#[cfg(feature = "all")] +use std::os::unix::ffi::OsStrExt; +#[cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "freebsd", + target_os = "linux", + target_vendor = "apple", + ) +))] +use std::os::unix::io::RawFd; +use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd}; +#[cfg(feature = "all")] +use std::os::unix::net::{UnixDatagram, UnixListener, UnixStream}; +#[cfg(feature = "all")] +use std::path::Path; +#[cfg(not(all(target_os = "redox", not(feature = "all"))))] +use std::ptr; +use std::time::{Duration, Instant}; +use std::{io, slice}; + +#[cfg(not(target_vendor = "apple"))] +use libc::ssize_t; +use libc::{c_void, in6_addr, in_addr}; + +#[cfg(not(target_os = "redox"))] +use crate::RecvFlags; +use crate::{Domain, Protocol, SockAddr, TcpKeepalive, Type}; + +pub(crate) use libc::c_int; + +// Used in `Domain`. +pub(crate) use libc::{AF_INET, AF_INET6}; +// Used in `Type`. +#[cfg(all(feature = "all", not(target_os = "redox")))] +pub(crate) use libc::SOCK_RAW; +#[cfg(feature = "all")] +pub(crate) use libc::SOCK_SEQPACKET; +pub(crate) use libc::{SOCK_DGRAM, SOCK_STREAM}; +// Used in `Protocol`. +pub(crate) use libc::{IPPROTO_ICMP, IPPROTO_ICMPV6, IPPROTO_TCP, IPPROTO_UDP}; +// Used in `SockAddr`. +pub(crate) use libc::{ + sa_family_t, sockaddr, sockaddr_in, sockaddr_in6, sockaddr_storage, socklen_t, +}; +// Used in `RecvFlags`. +#[cfg(not(target_os = "redox"))] +pub(crate) use libc::{MSG_TRUNC, SO_OOBINLINE}; +// Used in `Socket`. +#[cfg(not(target_os = "nto"))] +pub(crate) use libc::ipv6_mreq as Ipv6Mreq; +#[cfg(all(feature = "all", not(target_os = "redox")))] +pub(crate) use libc::IP_HDRINCL; +#[cfg(not(any( + target_os = "dragonfly", + target_os = "fuchsia", + target_os = "illumos", + target_os = "netbsd", + target_os = "openbsd", + target_os = "redox", + target_os = "solaris", + target_os = "haiku", + target_os = "nto", +)))] +pub(crate) use libc::IP_RECVTOS; +#[cfg(not(any( + target_os = "fuchsia", + target_os = "redox", + target_os = "solaris", + target_os = "illumos", +)))] +pub(crate) use libc::IP_TOS; +#[cfg(not(target_vendor = "apple"))] +pub(crate) use libc::SO_LINGER; +#[cfg(target_vendor = "apple")] +pub(crate) use libc::SO_LINGER_SEC as SO_LINGER; +pub(crate) use libc::{ + ip_mreq as IpMreq, linger, IPPROTO_IP, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, IPV6_MULTICAST_IF, + IPV6_MULTICAST_LOOP, IPV6_UNICAST_HOPS, IPV6_V6ONLY, IP_ADD_MEMBERSHIP, IP_DROP_MEMBERSHIP, + IP_MULTICAST_IF, IP_MULTICAST_LOOP, IP_MULTICAST_TTL, IP_TTL, MSG_OOB, MSG_PEEK, SOL_SOCKET, + SO_BROADCAST, SO_ERROR, SO_KEEPALIVE, SO_RCVBUF, SO_RCVTIMEO, SO_REUSEADDR, SO_SNDBUF, + SO_SNDTIMEO, SO_TYPE, TCP_NODELAY, +}; +#[cfg(not(any( + target_os = "dragonfly", + target_os = "haiku", + target_os = "netbsd", + target_os = "openbsd", + target_os = "redox", + target_os = "fuchsia", + target_os = "nto", +)))] +pub(crate) use libc::{ + ip_mreq_source as IpMreqSource, IP_ADD_SOURCE_MEMBERSHIP, IP_DROP_SOURCE_MEMBERSHIP, +}; +#[cfg(not(any( + target_os = "dragonfly", + target_os = "freebsd", + target_os = "haiku", + target_os = "illumos", + target_os = "netbsd", + target_os = "openbsd", + target_os = "solaris", + target_os = "nto", + target_vendor = "apple" +)))] +pub(crate) use libc::{IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP}; +#[cfg(any( + target_os = "dragonfly", + target_os = "freebsd", + target_os = "haiku", + target_os = "illumos", + target_os = "netbsd", + target_os = "openbsd", + target_os = "solaris", + target_vendor = "apple", +))] +pub(crate) use libc::{ + IPV6_JOIN_GROUP as IPV6_ADD_MEMBERSHIP, IPV6_LEAVE_GROUP as IPV6_DROP_MEMBERSHIP, +}; +#[cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_vendor = "apple", + ) +))] +pub(crate) use libc::{TCP_KEEPCNT, TCP_KEEPINTVL}; + +// See this type in the Windows file. +pub(crate) type Bool = c_int; + +#[cfg(any(target_vendor = "apple", target_os = "nto"))] +use libc::TCP_KEEPALIVE as KEEPALIVE_TIME; +#[cfg(not(any( + target_vendor = "apple", + target_os = "haiku", + target_os = "openbsd", + target_os = "nto", +)))] +use libc::TCP_KEEPIDLE as KEEPALIVE_TIME; + +/// Helper macro to execute a system call that returns an `io::Result`. +macro_rules! syscall { + ($fn: ident ( $($arg: expr),* $(,)* ) ) => {{ + #[allow(unused_unsafe)] + let res = unsafe { libc::$fn($($arg, )*) }; + if res == -1 { + Err(std::io::Error::last_os_error()) + } else { + Ok(res) + } + }}; +} + +/// Maximum size of a buffer passed to system call like `recv` and `send`. +#[cfg(not(target_vendor = "apple"))] +const MAX_BUF_LEN: usize = ::max_value() as usize; + +// The maximum read limit on most posix-like systems is `SSIZE_MAX`, with the +// man page quoting that if the count of bytes to read is greater than +// `SSIZE_MAX` the result is "unspecified". +// +// On macOS, however, apparently the 64-bit libc is either buggy or +// intentionally showing odd behavior by rejecting any read with a size larger +// than or equal to INT_MAX. To handle both of these the read size is capped on +// both platforms. +#[cfg(target_vendor = "apple")] +const MAX_BUF_LEN: usize = ::max_value() as usize - 1; + +#[cfg(any( + all( + target_os = "linux", + any( + target_env = "gnu", + all(target_env = "uclibc", target_pointer_width = "64") + ) + ), + target_os = "android", +))] +type IovLen = usize; + +#[cfg(any( + all( + target_os = "linux", + any( + target_env = "musl", + all(target_env = "uclibc", target_pointer_width = "32") + ) + ), + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "haiku", + target_os = "illumos", + target_os = "netbsd", + target_os = "openbsd", + target_os = "solaris", + target_os = "nto", + target_vendor = "apple", +))] +type IovLen = c_int; + +/// Unix only API. +impl Domain { + /// Domain for Unix socket communication, corresponding to `AF_UNIX`. + #[cfg_attr(docsrs, doc(cfg(unix)))] + pub const UNIX: Domain = Domain(libc::AF_UNIX); + + /// Domain for low-level packet interface, corresponding to `AF_PACKET`. + #[cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))) + )] + pub const PACKET: Domain = Domain(libc::AF_PACKET); + + /// Domain for low-level VSOCK interface, corresponding to `AF_VSOCK`. + #[cfg(all(feature = "all", any(target_os = "android", target_os = "linux")))] + #[cfg_attr( + docsrs, + doc(cfg(all(feature = "all", any(target_os = "android", target_os = "linux")))) + )] + pub const VSOCK: Domain = Domain(libc::AF_VSOCK); +} + +impl_debug!( + Domain, + libc::AF_INET, + libc::AF_INET6, + libc::AF_UNIX, + #[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))] + #[cfg_attr( + docsrs, + doc(cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))) + )] + libc::AF_PACKET, + #[cfg(any(target_os = "android", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(any(target_os = "android", target_os = "linux"))))] + libc::AF_VSOCK, + libc::AF_UNSPEC, // = 0. +); + +/// Unix only API. +impl Type { + /// Set `SOCK_NONBLOCK` on the `Type`. + #[cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_os = "openbsd" + ) + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_os = "openbsd" + ) + ))) + )] + pub const fn nonblocking(self) -> Type { + Type(self.0 | libc::SOCK_NONBLOCK) + } + + /// Set `SOCK_CLOEXEC` on the `Type`. + #[cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_os = "openbsd" + ) + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_os = "openbsd" + ) + ))) + )] + pub const fn cloexec(self) -> Type { + self._cloexec() + } + + #[cfg(any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_os = "openbsd" + ))] + pub(crate) const fn _cloexec(self) -> Type { + Type(self.0 | libc::SOCK_CLOEXEC) + } +} + +impl_debug!( + Type, + libc::SOCK_STREAM, + libc::SOCK_DGRAM, + #[cfg(not(target_os = "redox"))] + libc::SOCK_RAW, + #[cfg(not(any(target_os = "redox", target_os = "haiku")))] + libc::SOCK_RDM, + libc::SOCK_SEQPACKET, + /* TODO: add these optional bit OR-ed flags: + #[cfg(any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "linux", + target_os = "netbsd", + target_os = "openbsd" + ))] + libc::SOCK_NONBLOCK, + #[cfg(any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "linux", + target_os = "netbsd", + target_os = "openbsd" + ))] + libc::SOCK_CLOEXEC, + */ +); + +impl_debug!( + Protocol, + libc::IPPROTO_ICMP, + libc::IPPROTO_ICMPV6, + libc::IPPROTO_TCP, + libc::IPPROTO_UDP, +); + +/// Unix-only API. +#[cfg(not(target_os = "redox"))] +impl RecvFlags { + /// Check if the message terminates a record. + /// + /// Not all socket types support the notion of records. + /// For socket types that do support it (such as [`SEQPACKET`][Type::SEQPACKET]), + /// a record is terminated by sending a message with the end-of-record flag set. + /// + /// On Unix this corresponds to the MSG_EOR flag. + pub const fn is_end_of_record(self) -> bool { + self.0 & libc::MSG_EOR != 0 + } + + /// Check if the message contains out-of-band data. + /// + /// This is useful for protocols where you receive out-of-band data + /// mixed in with the normal data stream. + /// + /// On Unix this corresponds to the MSG_OOB flag. + pub const fn is_out_of_band(self) -> bool { + self.0 & libc::MSG_OOB != 0 + } +} + +#[cfg(not(target_os = "redox"))] +impl std::fmt::Debug for RecvFlags { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("RecvFlags") + .field("is_end_of_record", &self.is_end_of_record()) + .field("is_out_of_band", &self.is_out_of_band()) + .field("is_truncated", &self.is_truncated()) + .finish() + } +} + +#[repr(transparent)] +pub struct MaybeUninitSlice<'a> { + vec: libc::iovec, + _lifetime: PhantomData<&'a mut [MaybeUninit]>, +} + +unsafe impl<'a> Send for MaybeUninitSlice<'a> {} + +unsafe impl<'a> Sync for MaybeUninitSlice<'a> {} + +impl<'a> MaybeUninitSlice<'a> { + pub(crate) fn new(buf: &'a mut [MaybeUninit]) -> MaybeUninitSlice<'a> { + MaybeUninitSlice { + vec: libc::iovec { + iov_base: buf.as_mut_ptr().cast(), + iov_len: buf.len(), + }, + _lifetime: PhantomData, + } + } + + pub(crate) fn as_slice(&self) -> &[MaybeUninit] { + unsafe { slice::from_raw_parts(self.vec.iov_base.cast(), self.vec.iov_len) } + } + + pub(crate) fn as_mut_slice(&mut self) -> &mut [MaybeUninit] { + unsafe { slice::from_raw_parts_mut(self.vec.iov_base.cast(), self.vec.iov_len) } + } +} + +/// Unix only API. +impl SockAddr { + /// Constructs a `SockAddr` with the family `AF_UNIX` and the provided path. + /// + /// # Failure + /// + /// Returns an error if the path is longer than `SUN_LEN`. + #[cfg(feature = "all")] + #[cfg_attr(docsrs, doc(cfg(all(unix, feature = "all"))))] + #[allow(unused_unsafe)] // TODO: replace with `unsafe_op_in_unsafe_fn` once stable. + pub fn unix

(path: P) -> io::Result + where + P: AsRef, + { + unsafe { + SockAddr::init(|storage, len| { + // Safety: `SockAddr::init` zeros the address, which is a valid + // representation. + let storage: &mut libc::sockaddr_un = unsafe { &mut *storage.cast() }; + let len: &mut socklen_t = unsafe { &mut *len }; + + let bytes = path.as_ref().as_os_str().as_bytes(); + let too_long = match bytes.first() { + None => false, + // linux abstract namespaces aren't null-terminated + Some(&0) => bytes.len() > storage.sun_path.len(), + Some(_) => bytes.len() >= storage.sun_path.len(), + }; + if too_long { + return Err(io::Error::new( + io::ErrorKind::InvalidInput, + "path must be shorter than SUN_LEN", + )); + } + + storage.sun_family = libc::AF_UNIX as sa_family_t; + // Safety: `bytes` and `addr.sun_path` are not overlapping and + // both point to valid memory. + // `SockAddr::init` zeroes the memory, so the path is already + // null terminated. + unsafe { + ptr::copy_nonoverlapping( + bytes.as_ptr(), + storage.sun_path.as_mut_ptr() as *mut u8, + bytes.len(), + ) + }; + + let base = storage as *const _ as usize; + let path = &storage.sun_path as *const _ as usize; + let sun_path_offset = path - base; + let length = sun_path_offset + + bytes.len() + + match bytes.first() { + Some(&0) | None => 0, + Some(_) => 1, + }; + *len = length as socklen_t; + + Ok(()) + }) + } + .map(|(_, addr)| addr) + } +} + +impl SockAddr { + /// Constructs a `SockAddr` with the family `AF_VSOCK` and the provided CID/port. + /// + /// # Errors + /// + /// This function can never fail. In a future version of this library it will be made + /// infallible. + #[allow(unused_unsafe)] // TODO: replace with `unsafe_op_in_unsafe_fn` once stable. + #[cfg(all(feature = "all", any(target_os = "android", target_os = "linux")))] + #[cfg_attr( + docsrs, + doc(cfg(all(feature = "all", any(target_os = "android", target_os = "linux")))) + )] + pub fn vsock(cid: u32, port: u32) -> io::Result { + unsafe { + SockAddr::init(|storage, len| { + // Safety: `SockAddr::init` zeros the address, which is a valid + // representation. + let storage: &mut libc::sockaddr_vm = unsafe { &mut *storage.cast() }; + let len: &mut socklen_t = unsafe { &mut *len }; + + storage.svm_family = libc::AF_VSOCK as sa_family_t; + storage.svm_cid = cid; + storage.svm_port = port; + + *len = mem::size_of::() as socklen_t; + + Ok(()) + }) + } + .map(|(_, addr)| addr) + } + + /// Returns this address VSOCK CID/port if it is in the `AF_VSOCK` family, + /// otherwise return `None`. + #[cfg(all(feature = "all", any(target_os = "android", target_os = "linux")))] + #[cfg_attr( + docsrs, + doc(cfg(all(feature = "all", any(target_os = "android", target_os = "linux")))) + )] + pub fn vsock_address(&self) -> Option<(u32, u32)> { + if self.family() == libc::AF_VSOCK as sa_family_t { + // Safety: if the ss_family field is AF_VSOCK then storage must be a sockaddr_vm. + let addr = unsafe { &*(self.as_ptr() as *const libc::sockaddr_vm) }; + Some((addr.svm_cid, addr.svm_port)) + } else { + None + } + } +} + +pub(crate) type Socket = c_int; + +pub(crate) unsafe fn socket_from_raw(socket: Socket) -> crate::socket::Inner { + crate::socket::Inner::from_raw_fd(socket) +} + +pub(crate) fn socket_as_raw(socket: &crate::socket::Inner) -> Socket { + socket.as_raw_fd() +} + +pub(crate) fn socket_into_raw(socket: crate::socket::Inner) -> Socket { + socket.into_raw_fd() +} + +pub(crate) fn socket(family: c_int, ty: c_int, protocol: c_int) -> io::Result { + syscall!(socket(family, ty, protocol)) +} + +#[cfg(feature = "all")] +pub(crate) fn socketpair(family: c_int, ty: c_int, protocol: c_int) -> io::Result<[Socket; 2]> { + let mut fds = [0, 0]; + syscall!(socketpair(family, ty, protocol, fds.as_mut_ptr())).map(|_| fds) +} + +pub(crate) fn bind(fd: Socket, addr: &SockAddr) -> io::Result<()> { + syscall!(bind(fd, addr.as_ptr(), addr.len() as _)).map(|_| ()) +} + +pub(crate) fn connect(fd: Socket, addr: &SockAddr) -> io::Result<()> { + syscall!(connect(fd, addr.as_ptr(), addr.len())).map(|_| ()) +} + +pub(crate) fn poll_connect(socket: &crate::Socket, timeout: Duration) -> io::Result<()> { + let start = Instant::now(); + + let mut pollfd = libc::pollfd { + fd: socket.as_raw(), + events: libc::POLLIN | libc::POLLOUT, + revents: 0, + }; + + loop { + let elapsed = start.elapsed(); + if elapsed >= timeout { + return Err(io::ErrorKind::TimedOut.into()); + } + + let timeout = (timeout - elapsed).as_millis(); + let timeout = clamp(timeout, 1, c_int::max_value() as u128) as c_int; + + match syscall!(poll(&mut pollfd, 1, timeout)) { + Ok(0) => return Err(io::ErrorKind::TimedOut.into()), + Ok(_) => { + // Error or hang up indicates an error (or failure to connect). + if (pollfd.revents & libc::POLLHUP) != 0 || (pollfd.revents & libc::POLLERR) != 0 { + match socket.take_error() { + Ok(Some(err)) => return Err(err), + Ok(None) => { + return Err(io::Error::new( + io::ErrorKind::Other, + "no error set after POLLHUP", + )) + } + Err(err) => return Err(err), + } + } + return Ok(()); + } + // Got interrupted, try again. + Err(ref err) if err.kind() == io::ErrorKind::Interrupted => continue, + Err(err) => return Err(err), + } + } +} + +// TODO: use clamp from std lib, stable since 1.50. +fn clamp(value: T, min: T, max: T) -> T +where + T: Ord, +{ + if value <= min { + min + } else if value >= max { + max + } else { + value + } +} + +pub(crate) fn listen(fd: Socket, backlog: c_int) -> io::Result<()> { + syscall!(listen(fd, backlog)).map(|_| ()) +} + +pub(crate) fn accept(fd: Socket) -> io::Result<(Socket, SockAddr)> { + // Safety: `accept` initialises the `SockAddr` for us. + unsafe { SockAddr::init(|storage, len| syscall!(accept(fd, storage.cast(), len))) } +} + +pub(crate) fn getsockname(fd: Socket) -> io::Result { + // Safety: `accept` initialises the `SockAddr` for us. + unsafe { SockAddr::init(|storage, len| syscall!(getsockname(fd, storage.cast(), len))) } + .map(|(_, addr)| addr) +} + +pub(crate) fn getpeername(fd: Socket) -> io::Result { + // Safety: `accept` initialises the `SockAddr` for us. + unsafe { SockAddr::init(|storage, len| syscall!(getpeername(fd, storage.cast(), len))) } + .map(|(_, addr)| addr) +} + +pub(crate) fn try_clone(fd: Socket) -> io::Result { + syscall!(fcntl(fd, libc::F_DUPFD_CLOEXEC, 0)) +} + +pub(crate) fn set_nonblocking(fd: Socket, nonblocking: bool) -> io::Result<()> { + if nonblocking { + fcntl_add(fd, libc::F_GETFL, libc::F_SETFL, libc::O_NONBLOCK) + } else { + fcntl_remove(fd, libc::F_GETFL, libc::F_SETFL, libc::O_NONBLOCK) + } +} + +pub(crate) fn shutdown(fd: Socket, how: Shutdown) -> io::Result<()> { + let how = match how { + Shutdown::Write => libc::SHUT_WR, + Shutdown::Read => libc::SHUT_RD, + Shutdown::Both => libc::SHUT_RDWR, + }; + syscall!(shutdown(fd, how)).map(|_| ()) +} + +pub(crate) fn recv(fd: Socket, buf: &mut [MaybeUninit], flags: c_int) -> io::Result { + syscall!(recv( + fd, + buf.as_mut_ptr().cast(), + min(buf.len(), MAX_BUF_LEN), + flags, + )) + .map(|n| n as usize) +} + +pub(crate) fn recv_from( + fd: Socket, + buf: &mut [MaybeUninit], + flags: c_int, +) -> io::Result<(usize, SockAddr)> { + // Safety: `recvfrom` initialises the `SockAddr` for us. + unsafe { + SockAddr::init(|addr, addrlen| { + syscall!(recvfrom( + fd, + buf.as_mut_ptr().cast(), + min(buf.len(), MAX_BUF_LEN), + flags, + addr.cast(), + addrlen + )) + .map(|n| n as usize) + }) + } +} + +pub(crate) fn peek_sender(fd: Socket) -> io::Result { + // Unix-like platforms simply truncate the returned data, so this implementation is trivial. + // However, for Windows this requires suppressing the `WSAEMSGSIZE` error, + // so that requires a different approach. + // NOTE: macOS does not populate `sockaddr` if you pass a zero-sized buffer. + let (_, sender) = recv_from(fd, &mut [MaybeUninit::uninit(); 8], MSG_PEEK)?; + Ok(sender) +} + +#[cfg(not(target_os = "redox"))] +pub(crate) fn recv_vectored( + fd: Socket, + bufs: &mut [crate::MaybeUninitSlice<'_>], + flags: c_int, +) -> io::Result<(usize, RecvFlags)> { + recvmsg(fd, ptr::null_mut(), bufs, flags).map(|(n, _, recv_flags)| (n, recv_flags)) +} + +#[cfg(not(target_os = "redox"))] +pub(crate) fn recv_from_vectored( + fd: Socket, + bufs: &mut [crate::MaybeUninitSlice<'_>], + flags: c_int, +) -> io::Result<(usize, RecvFlags, SockAddr)> { + // Safety: `recvmsg` initialises the address storage and we set the length + // manually. + unsafe { + SockAddr::init(|storage, len| { + recvmsg(fd, storage, bufs, flags).map(|(n, addrlen, recv_flags)| { + // Set the correct address length. + *len = addrlen; + (n, recv_flags) + }) + }) + } + .map(|((n, recv_flags), addr)| (n, recv_flags, addr)) +} + +/// Returns the (bytes received, sending address len, `RecvFlags`). +#[cfg(not(target_os = "redox"))] +fn recvmsg( + fd: Socket, + msg_name: *mut sockaddr_storage, + bufs: &mut [crate::MaybeUninitSlice<'_>], + flags: c_int, +) -> io::Result<(usize, libc::socklen_t, RecvFlags)> { + let msg_namelen = if msg_name.is_null() { + 0 + } else { + size_of::() as libc::socklen_t + }; + // libc::msghdr contains unexported padding fields on Fuchsia. + let mut msg: libc::msghdr = unsafe { mem::zeroed() }; + msg.msg_name = msg_name.cast(); + msg.msg_namelen = msg_namelen; + msg.msg_iov = bufs.as_mut_ptr().cast(); + msg.msg_iovlen = min(bufs.len(), IovLen::MAX as usize) as IovLen; + syscall!(recvmsg(fd, &mut msg, flags)) + .map(|n| (n as usize, msg.msg_namelen, RecvFlags(msg.msg_flags))) +} + +pub(crate) fn send(fd: Socket, buf: &[u8], flags: c_int) -> io::Result { + syscall!(send( + fd, + buf.as_ptr().cast(), + min(buf.len(), MAX_BUF_LEN), + flags, + )) + .map(|n| n as usize) +} + +#[cfg(not(target_os = "redox"))] +pub(crate) fn send_vectored(fd: Socket, bufs: &[IoSlice<'_>], flags: c_int) -> io::Result { + sendmsg(fd, ptr::null(), 0, bufs, flags) +} + +pub(crate) fn send_to(fd: Socket, buf: &[u8], addr: &SockAddr, flags: c_int) -> io::Result { + syscall!(sendto( + fd, + buf.as_ptr().cast(), + min(buf.len(), MAX_BUF_LEN), + flags, + addr.as_ptr(), + addr.len(), + )) + .map(|n| n as usize) +} + +#[cfg(not(target_os = "redox"))] +pub(crate) fn send_to_vectored( + fd: Socket, + bufs: &[IoSlice<'_>], + addr: &SockAddr, + flags: c_int, +) -> io::Result { + sendmsg(fd, addr.as_storage_ptr(), addr.len(), bufs, flags) +} + +/// Returns the (bytes received, sending address len, `RecvFlags`). +#[cfg(not(target_os = "redox"))] +fn sendmsg( + fd: Socket, + msg_name: *const sockaddr_storage, + msg_namelen: socklen_t, + bufs: &[IoSlice<'_>], + flags: c_int, +) -> io::Result { + // libc::msghdr contains unexported padding fields on Fuchsia. + let mut msg: libc::msghdr = unsafe { mem::zeroed() }; + // Safety: we're creating a `*mut` pointer from a reference, which is UB + // once actually used. However the OS should not write to it in the + // `sendmsg` system call. + msg.msg_name = (msg_name as *mut sockaddr_storage).cast(); + msg.msg_namelen = msg_namelen; + // Safety: Same as above about `*const` -> `*mut`. + msg.msg_iov = bufs.as_ptr() as *mut _; + msg.msg_iovlen = min(bufs.len(), IovLen::MAX as usize) as IovLen; + syscall!(sendmsg(fd, &msg, flags)).map(|n| n as usize) +} + +/// Wrapper around `getsockopt` to deal with platform specific timeouts. +pub(crate) fn timeout_opt(fd: Socket, opt: c_int, val: c_int) -> io::Result> { + unsafe { getsockopt(fd, opt, val).map(from_timeval) } +} + +fn from_timeval(duration: libc::timeval) -> Option { + if duration.tv_sec == 0 && duration.tv_usec == 0 { + None + } else { + let sec = duration.tv_sec as u64; + let nsec = (duration.tv_usec as u32) * 1000; + Some(Duration::new(sec, nsec)) + } +} + +/// Wrapper around `setsockopt` to deal with platform specific timeouts. +pub(crate) fn set_timeout_opt( + fd: Socket, + opt: c_int, + val: c_int, + duration: Option, +) -> io::Result<()> { + let duration = into_timeval(duration); + unsafe { setsockopt(fd, opt, val, duration) } +} + +fn into_timeval(duration: Option) -> libc::timeval { + match duration { + // https://github.com/rust-lang/libc/issues/1848 + #[cfg_attr(target_env = "musl", allow(deprecated))] + Some(duration) => libc::timeval { + tv_sec: min(duration.as_secs(), libc::time_t::max_value() as u64) as libc::time_t, + tv_usec: duration.subsec_micros() as libc::suseconds_t, + }, + None => libc::timeval { + tv_sec: 0, + tv_usec: 0, + }, + } +} + +#[cfg(feature = "all")] +#[cfg(not(any(target_os = "haiku", target_os = "openbsd")))] +pub(crate) fn keepalive_time(fd: Socket) -> io::Result { + unsafe { + getsockopt::(fd, IPPROTO_TCP, KEEPALIVE_TIME) + .map(|secs| Duration::from_secs(secs as u64)) + } +} + +#[allow(unused_variables)] +pub(crate) fn set_tcp_keepalive(fd: Socket, keepalive: &TcpKeepalive) -> io::Result<()> { + #[cfg(not(any(target_os = "haiku", target_os = "openbsd", target_os = "nto")))] + if let Some(time) = keepalive.time { + let secs = into_secs(time); + unsafe { setsockopt(fd, libc::IPPROTO_TCP, KEEPALIVE_TIME, secs)? } + } + + #[cfg(any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_vendor = "apple", + ))] + { + if let Some(interval) = keepalive.interval { + let secs = into_secs(interval); + unsafe { setsockopt(fd, libc::IPPROTO_TCP, libc::TCP_KEEPINTVL, secs)? } + } + + if let Some(retries) = keepalive.retries { + unsafe { setsockopt(fd, libc::IPPROTO_TCP, libc::TCP_KEEPCNT, retries as c_int)? } + } + } + + #[cfg(target_os = "nto")] + if let Some(time) = keepalive.time { + let secs = into_timeval(Some(time)); + unsafe { setsockopt(fd, libc::IPPROTO_TCP, KEEPALIVE_TIME, secs)? } + } + + Ok(()) +} + +#[cfg(not(any(target_os = "haiku", target_os = "openbsd", target_os = "nto")))] +fn into_secs(duration: Duration) -> c_int { + min(duration.as_secs(), c_int::max_value() as u64) as c_int +} + +/// Add `flag` to the current set flags of `F_GETFD`. +fn fcntl_add(fd: Socket, get_cmd: c_int, set_cmd: c_int, flag: c_int) -> io::Result<()> { + let previous = syscall!(fcntl(fd, get_cmd))?; + let new = previous | flag; + if new != previous { + syscall!(fcntl(fd, set_cmd, new)).map(|_| ()) + } else { + // Flag was already set. + Ok(()) + } +} + +/// Remove `flag` to the current set flags of `F_GETFD`. +fn fcntl_remove(fd: Socket, get_cmd: c_int, set_cmd: c_int, flag: c_int) -> io::Result<()> { + let previous = syscall!(fcntl(fd, get_cmd))?; + let new = previous & !flag; + if new != previous { + syscall!(fcntl(fd, set_cmd, new)).map(|_| ()) + } else { + // Flag was already set. + Ok(()) + } +} + +/// Caller must ensure `T` is the correct type for `opt` and `val`. +pub(crate) unsafe fn getsockopt(fd: Socket, opt: c_int, val: c_int) -> io::Result { + let mut payload: MaybeUninit = MaybeUninit::uninit(); + let mut len = size_of::() as libc::socklen_t; + syscall!(getsockopt( + fd, + opt, + val, + payload.as_mut_ptr().cast(), + &mut len, + )) + .map(|_| { + debug_assert_eq!(len as usize, size_of::()); + // Safety: `getsockopt` initialised `payload` for us. + payload.assume_init() + }) +} + +/// Caller must ensure `T` is the correct type for `opt` and `val`. +pub(crate) unsafe fn setsockopt( + fd: Socket, + opt: c_int, + val: c_int, + payload: T, +) -> io::Result<()> { + let payload = &payload as *const T as *const c_void; + syscall!(setsockopt( + fd, + opt, + val, + payload, + mem::size_of::() as libc::socklen_t, + )) + .map(|_| ()) +} + +pub(crate) fn to_in_addr(addr: &Ipv4Addr) -> in_addr { + // `s_addr` is stored as BE on all machines, and the array is in BE order. + // So the native endian conversion method is used so that it's never + // swapped. + in_addr { + s_addr: u32::from_ne_bytes(addr.octets()), + } +} + +pub(crate) fn from_in_addr(in_addr: in_addr) -> Ipv4Addr { + Ipv4Addr::from(in_addr.s_addr.to_ne_bytes()) +} + +pub(crate) fn to_in6_addr(addr: &Ipv6Addr) -> in6_addr { + in6_addr { + s6_addr: addr.octets(), + } +} + +pub(crate) fn from_in6_addr(addr: in6_addr) -> Ipv6Addr { + Ipv6Addr::from(addr.s6_addr) +} + +#[cfg(not(any( + target_os = "haiku", + target_os = "illumos", + target_os = "netbsd", + target_os = "openbsd", + target_os = "redox", + target_os = "solaris", + target_os = "nto", +)))] +pub(crate) fn to_mreqn( + multiaddr: &Ipv4Addr, + interface: &crate::socket::InterfaceIndexOrAddress, +) -> libc::ip_mreqn { + match interface { + crate::socket::InterfaceIndexOrAddress::Index(interface) => libc::ip_mreqn { + imr_multiaddr: to_in_addr(multiaddr), + imr_address: to_in_addr(&Ipv4Addr::UNSPECIFIED), + imr_ifindex: *interface as _, + }, + crate::socket::InterfaceIndexOrAddress::Address(interface) => libc::ip_mreqn { + imr_multiaddr: to_in_addr(multiaddr), + imr_address: to_in_addr(interface), + imr_ifindex: 0, + }, + } +} + +/// Unix only API. +impl crate::Socket { + /// Accept a new incoming connection from this listener. + /// + /// This function directly corresponds to the `accept4(2)` function. + /// + /// This function will block the calling thread until a new connection is + /// established. When established, the corresponding `Socket` and the remote + /// peer's address will be returned. + #[cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_os = "openbsd" + ) + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_os = "openbsd" + ) + ))) + )] + pub fn accept4(&self, flags: c_int) -> io::Result<(crate::Socket, SockAddr)> { + self._accept4(flags) + } + + #[cfg(any( + target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "illumos", + target_os = "linux", + target_os = "netbsd", + target_os = "openbsd" + ))] + pub(crate) fn _accept4(&self, flags: c_int) -> io::Result<(crate::Socket, SockAddr)> { + // Safety: `accept4` initialises the `SockAddr` for us. + unsafe { + SockAddr::init(|storage, len| { + syscall!(accept4(self.as_raw(), storage.cast(), len, flags)) + .map(crate::Socket::from_raw) + }) + } + } + + /// Sets `CLOEXEC` on the socket. + /// + /// # Notes + /// + /// On supported platforms you can use [`Type::cloexec`]. + #[cfg(feature = "all")] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", unix))))] + pub fn set_cloexec(&self, close_on_exec: bool) -> io::Result<()> { + self._set_cloexec(close_on_exec) + } + + pub(crate) fn _set_cloexec(&self, close_on_exec: bool) -> io::Result<()> { + if close_on_exec { + fcntl_add( + self.as_raw(), + libc::F_GETFD, + libc::F_SETFD, + libc::FD_CLOEXEC, + ) + } else { + fcntl_remove( + self.as_raw(), + libc::F_GETFD, + libc::F_SETFD, + libc::FD_CLOEXEC, + ) + } + } + + /// Sets `SO_NOSIGPIPE` on the socket. + #[cfg(all(feature = "all", any(doc, target_vendor = "apple")))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_vendor = "apple"))))] + pub fn set_nosigpipe(&self, nosigpipe: bool) -> io::Result<()> { + self._set_nosigpipe(nosigpipe) + } + + #[cfg(target_vendor = "apple")] + pub(crate) fn _set_nosigpipe(&self, nosigpipe: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + libc::SOL_SOCKET, + libc::SO_NOSIGPIPE, + nosigpipe as c_int, + ) + } + } + + /// Gets the value of the `TCP_MAXSEG` option on this socket. + /// + /// For more information about this option, see [`set_mss`]. + /// + /// [`set_mss`]: crate::Socket::set_mss + #[cfg(all(feature = "all", not(target_os = "redox")))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", unix, not(target_os = "redox")))))] + pub fn mss(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), libc::IPPROTO_TCP, libc::TCP_MAXSEG) + .map(|mss| mss as u32) + } + } + + /// Sets the value of the `TCP_MAXSEG` option on this socket. + /// + /// The `TCP_MAXSEG` option denotes the TCP Maximum Segment Size and is only + /// available on TCP sockets. + #[cfg(all(feature = "all", not(target_os = "redox")))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", unix, not(target_os = "redox")))))] + pub fn set_mss(&self, mss: u32) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + libc::IPPROTO_TCP, + libc::TCP_MAXSEG, + mss as c_int, + ) + } + } + + /// Returns `true` if `listen(2)` was called on this socket by checking the + /// `SO_ACCEPTCONN` option on this socket. + #[cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "linux", + ) + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "linux", + ) + ))) + )] + pub fn is_listener(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), libc::SOL_SOCKET, libc::SO_ACCEPTCONN) + .map(|v| v != 0) + } + } + + /// Returns the [`Domain`] of this socket by checking the `SO_DOMAIN` option + /// on this socket. + #[cfg(all( + feature = "all", + any( + target_os = "android", + // TODO: add FreeBSD. + // target_os = "freebsd", + target_os = "fuchsia", + target_os = "linux", + ) + ))] + #[cfg_attr(docsrs, doc(cfg(all( + feature = "all", + any( + target_os = "android", + // TODO: add FreeBSD. + // target_os = "freebsd", + target_os = "fuchsia", + target_os = "linux", + ) + ))))] + pub fn domain(&self) -> io::Result { + unsafe { getsockopt::(self.as_raw(), libc::SOL_SOCKET, libc::SO_DOMAIN).map(Domain) } + } + + /// Returns the [`Protocol`] of this socket by checking the `SO_PROTOCOL` + /// option on this socket. + #[cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "linux", + ) + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "freebsd", + target_os = "fuchsia", + target_os = "linux", + ) + ))) + )] + pub fn protocol(&self) -> io::Result> { + unsafe { + getsockopt::(self.as_raw(), libc::SOL_SOCKET, libc::SO_PROTOCOL).map(|v| match v + { + 0 => None, + p => Some(Protocol(p)), + }) + } + } + + /// Gets the value for the `SO_MARK` option on this socket. + /// + /// This value gets the socket mark field for each packet sent through + /// this socket. + /// + /// On Linux this function requires the `CAP_NET_ADMIN` capability. + #[cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))) + )] + pub fn mark(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), libc::SOL_SOCKET, libc::SO_MARK) + .map(|mark| mark as u32) + } + } + + /// Sets the value for the `SO_MARK` option on this socket. + /// + /// This value sets the socket mark field for each packet sent through + /// this socket. Changing the mark can be used for mark-based routing + /// without netfilter or for packet filtering. + /// + /// On Linux this function requires the `CAP_NET_ADMIN` capability. + #[cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))) + )] + pub fn set_mark(&self, mark: u32) -> io::Result<()> { + unsafe { + setsockopt::( + self.as_raw(), + libc::SOL_SOCKET, + libc::SO_MARK, + mark as c_int, + ) + } + } + + /// Get the value of the `TCP_CORK` option on this socket. + /// + /// For more information about this option, see [`set_cork`]. + /// + /// [`set_cork`]: Socket::set_cork + #[cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))) + )] + pub fn cork(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), libc::IPPROTO_TCP, libc::TCP_CORK) + .map(|cork| cork != 0) + } + } + + /// Set the value of the `TCP_CORK` option on this socket. + /// + /// If set, don't send out partial frames. All queued partial frames are + /// sent when the option is cleared again. There is a 200 millisecond ceiling on + /// the time for which output is corked by `TCP_CORK`. If this ceiling is reached, + /// then queued data is automatically transmitted. + #[cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))) + )] + pub fn set_cork(&self, cork: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + libc::IPPROTO_TCP, + libc::TCP_CORK, + cork as c_int, + ) + } + } + + /// Get the value of the `TCP_QUICKACK` option on this socket. + /// + /// For more information about this option, see [`set_quickack`]. + /// + /// [`set_quickack`]: Socket::set_quickack + #[cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))) + )] + pub fn quickack(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), libc::IPPROTO_TCP, libc::TCP_QUICKACK) + .map(|quickack| quickack != 0) + } + } + + /// Set the value of the `TCP_QUICKACK` option on this socket. + /// + /// If set, acks are sent immediately, rather than delayed if needed in accordance to normal + /// TCP operation. This flag is not permanent, it only enables a switch to or from quickack mode. + /// Subsequent operation of the TCP protocol will once again enter/leave quickack mode depending on + /// internal protocol processing and factors such as delayed ack timeouts occurring and data transfer. + #[cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))) + )] + pub fn set_quickack(&self, quickack: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + libc::IPPROTO_TCP, + libc::TCP_QUICKACK, + quickack as c_int, + ) + } + } + + /// Get the value of the `TCP_THIN_LINEAR_TIMEOUTS` option on this socket. + /// + /// For more information about this option, see [`set_thin_linear_timeouts`]. + /// + /// [`set_thin_linear_timeouts`]: Socket::set_thin_linear_timeouts + #[cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))) + )] + pub fn thin_linear_timeouts(&self) -> io::Result { + unsafe { + getsockopt::( + self.as_raw(), + libc::IPPROTO_TCP, + libc::TCP_THIN_LINEAR_TIMEOUTS, + ) + .map(|timeouts| timeouts != 0) + } + } + + /// Set the value of the `TCP_THIN_LINEAR_TIMEOUTS` option on this socket. + /// + /// If set, the kernel will dynamically detect a thin-stream connection if there are less than four packets in flight. + /// With less than four packets in flight the normal TCP fast retransmission will not be effective. + /// The kernel will modify the retransmission to avoid the very high latencies that thin stream suffer because of exponential backoff. + #[cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))) + )] + pub fn set_thin_linear_timeouts(&self, timeouts: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + libc::IPPROTO_TCP, + libc::TCP_THIN_LINEAR_TIMEOUTS, + timeouts as c_int, + ) + } + } + + /// Gets the value for the `SO_BINDTODEVICE` option on this socket. + /// + /// This value gets the socket binded device's interface name. + #[cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))) + )] + pub fn device(&self) -> io::Result>> { + // TODO: replace with `MaybeUninit::uninit_array` once stable. + let mut buf: [MaybeUninit; libc::IFNAMSIZ] = + unsafe { MaybeUninit::uninit().assume_init() }; + let mut len = buf.len() as libc::socklen_t; + syscall!(getsockopt( + self.as_raw(), + libc::SOL_SOCKET, + libc::SO_BINDTODEVICE, + buf.as_mut_ptr().cast(), + &mut len, + ))?; + if len == 0 { + Ok(None) + } else { + let buf = &buf[..len as usize - 1]; + // TODO: use `MaybeUninit::slice_assume_init_ref` once stable. + Ok(Some(unsafe { &*(buf as *const [_] as *const [u8]) }.into())) + } + } + + /// Sets the value for the `SO_BINDTODEVICE` option on this socket. + /// + /// If a socket is bound to an interface, only packets received from that + /// particular interface are processed by the socket. Note that this only + /// works for some socket types, particularly `AF_INET` sockets. + /// + /// If `interface` is `None` or an empty string it removes the binding. + #[cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))) + )] + pub fn bind_device(&self, interface: Option<&[u8]>) -> io::Result<()> { + let (value, len) = if let Some(interface) = interface { + (interface.as_ptr(), interface.len()) + } else { + (ptr::null(), 0) + }; + syscall!(setsockopt( + self.as_raw(), + libc::SOL_SOCKET, + libc::SO_BINDTODEVICE, + value.cast(), + len as libc::socklen_t, + )) + .map(|_| ()) + } + + /// Sets the value for the `SO_SETFIB` option on this socket. + /// + /// Bind socket to the specified forwarding table (VRF) on a FreeBSD. + #[cfg(all(feature = "all", any(target_os = "freebsd")))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", any(target_os = "freebsd")))))] + pub fn set_fib(&self, fib: u32) -> io::Result<()> { + syscall!(setsockopt( + self.as_raw(), + libc::SOL_SOCKET, + libc::SO_SETFIB, + (&fib as *const u32).cast(), + mem::size_of::() as libc::socklen_t, + )) + .map(|_| ()) + } + + /// Sets the value for `IP_BOUND_IF` option on this socket. + /// + /// If a socket is bound to an interface, only packets received from that + /// particular interface are processed by the socket. + /// + /// If `interface` is `None`, the binding is removed. If the `interface` + /// index is not valid, an error is returned. + /// + /// One can use `libc::if_nametoindex` to convert an interface alias to an + /// index. + #[cfg(all(feature = "all", target_vendor = "apple"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_vendor = "apple"))))] + pub fn bind_device_by_index(&self, interface: Option) -> io::Result<()> { + let index = interface.map(NonZeroU32::get).unwrap_or(0); + unsafe { setsockopt(self.as_raw(), IPPROTO_IP, libc::IP_BOUND_IF, index) } + } + + /// Gets the value for `IP_BOUND_IF` option on this socket, i.e. the index + /// for the interface to which the socket is bound. + /// + /// Returns `None` if the socket is not bound to any interface, otherwise + /// returns an interface index. + #[cfg(all(feature = "all", target_vendor = "apple"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_vendor = "apple"))))] + pub fn device_index(&self) -> io::Result> { + let index = + unsafe { getsockopt::(self.as_raw(), IPPROTO_IP, libc::IP_BOUND_IF)? }; + Ok(NonZeroU32::new(index)) + } + + /// Get the value of the `SO_INCOMING_CPU` option on this socket. + /// + /// For more information about this option, see [`set_cpu_affinity`]. + /// + /// [`set_cpu_affinity`]: crate::Socket::set_cpu_affinity + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn cpu_affinity(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), libc::SOL_SOCKET, libc::SO_INCOMING_CPU) + .map(|cpu| cpu as usize) + } + } + + /// Set value for the `SO_INCOMING_CPU` option on this socket. + /// + /// Sets the CPU affinity of the socket. + #[cfg(all(feature = "all", target_os = "linux"))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", target_os = "linux"))))] + pub fn set_cpu_affinity(&self, cpu: usize) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + libc::SOL_SOCKET, + libc::SO_INCOMING_CPU, + cpu as c_int, + ) + } + } + + /// Get the value of the `SO_REUSEPORT` option on this socket. + /// + /// For more information about this option, see [`set_reuse_port`]. + /// + /// [`set_reuse_port`]: crate::Socket::set_reuse_port + #[cfg(all( + feature = "all", + not(any(target_os = "solaris", target_os = "illumos")) + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + unix, + not(any(target_os = "solaris", target_os = "illumos")) + ))) + )] + pub fn reuse_port(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), libc::SOL_SOCKET, libc::SO_REUSEPORT) + .map(|reuse| reuse != 0) + } + } + + /// Set value for the `SO_REUSEPORT` option on this socket. + /// + /// This indicates that further calls to `bind` may allow reuse of local + /// addresses. For IPv4 sockets this means that a socket may bind even when + /// there's a socket already listening on this port. + #[cfg(all( + feature = "all", + not(any(target_os = "solaris", target_os = "illumos")) + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + unix, + not(any(target_os = "solaris", target_os = "illumos")) + ))) + )] + pub fn set_reuse_port(&self, reuse: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + libc::SOL_SOCKET, + libc::SO_REUSEPORT, + reuse as c_int, + ) + } + } + + /// Get the value of the `IP_FREEBIND` option on this socket. + /// + /// For more information about this option, see [`set_freebind`]. + /// + /// [`set_freebind`]: crate::Socket::set_freebind + #[cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))) + )] + pub fn freebind(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), libc::SOL_IP, libc::IP_FREEBIND) + .map(|freebind| freebind != 0) + } + } + + /// Set value for the `IP_FREEBIND` option on this socket. + /// + /// If enabled, this boolean option allows binding to an IP address that is + /// nonlocal or does not (yet) exist. This permits listening on a socket, + /// without requiring the underlying network interface or the specified + /// dynamic IP address to be up at the time that the application is trying + /// to bind to it. + #[cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))) + )] + pub fn set_freebind(&self, freebind: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + libc::SOL_IP, + libc::IP_FREEBIND, + freebind as c_int, + ) + } + } + + /// Get the value of the `IPV6_FREEBIND` option on this socket. + /// + /// This is an IPv6 counterpart of `IP_FREEBIND` socket option on + /// Android/Linux. For more information about this option, see + /// [`set_freebind`]. + /// + /// [`set_freebind`]: crate::Socket::set_freebind + #[cfg(all(feature = "all", any(target_os = "android", target_os = "linux")))] + #[cfg_attr( + docsrs, + doc(cfg(all(feature = "all", any(target_os = "android", target_os = "linux")))) + )] + pub fn freebind_ipv6(&self) -> io::Result { + unsafe { + getsockopt::(self.as_raw(), libc::SOL_IPV6, libc::IPV6_FREEBIND) + .map(|freebind| freebind != 0) + } + } + + /// Set value for the `IPV6_FREEBIND` option on this socket. + /// + /// This is an IPv6 counterpart of `IP_FREEBIND` socket option on + /// Android/Linux. For more information about this option, see + /// [`set_freebind`]. + /// + /// [`set_freebind`]: crate::Socket::set_freebind + /// + /// # Examples + /// + /// On Linux: + /// + /// ``` + /// use socket2::{Domain, Socket, Type}; + /// use std::io::{self, Error, ErrorKind}; + /// + /// fn enable_freebind(socket: &Socket) -> io::Result<()> { + /// match socket.domain()? { + /// Domain::IPV4 => socket.set_freebind(true)?, + /// Domain::IPV6 => socket.set_freebind_ipv6(true)?, + /// _ => return Err(Error::new(ErrorKind::Other, "unsupported domain")), + /// }; + /// Ok(()) + /// } + /// + /// # fn main() -> io::Result<()> { + /// # let socket = Socket::new(Domain::IPV6, Type::STREAM, None)?; + /// # enable_freebind(&socket) + /// # } + /// ``` + #[cfg(all(feature = "all", any(target_os = "android", target_os = "linux")))] + #[cfg_attr( + docsrs, + doc(cfg(all(feature = "all", any(target_os = "android", target_os = "linux")))) + )] + pub fn set_freebind_ipv6(&self, freebind: bool) -> io::Result<()> { + unsafe { + setsockopt( + self.as_raw(), + libc::SOL_IPV6, + libc::IPV6_FREEBIND, + freebind as c_int, + ) + } + } + + /// Copies data between a `file` and this socket using the `sendfile(2)` + /// system call. Because this copying is done within the kernel, + /// `sendfile()` is more efficient than the combination of `read(2)` and + /// `write(2)`, which would require transferring data to and from user + /// space. + /// + /// Different OSs support different kinds of `file`s, see the OS + /// documentation for what kind of files are supported. Generally *regular* + /// files are supported by all OSs. + /// + /// The `offset` is the absolute offset into the `file` to use as starting + /// point. + /// + /// Depending on the OS this function *may* change the offset of `file`. For + /// the best results reset the offset of the file before using it again. + /// + /// The `length` determines how many bytes to send, where a length of `None` + /// means it will try to send all bytes. + #[cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "freebsd", + target_os = "linux", + target_vendor = "apple", + ) + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any( + target_os = "android", + target_os = "freebsd", + target_os = "linux", + target_vendor = "apple", + ) + ))) + )] + pub fn sendfile( + &self, + file: &F, + offset: usize, + length: Option, + ) -> io::Result + where + F: AsRawFd, + { + self._sendfile(file.as_raw_fd(), offset as _, length) + } + + #[cfg(all(feature = "all", target_vendor = "apple"))] + fn _sendfile( + &self, + file: RawFd, + offset: libc::off_t, + length: Option, + ) -> io::Result { + // On macOS `length` is value-result parameter. It determines the number + // of bytes to write and returns the number of bytes written. + let mut length = match length { + Some(n) => n.get() as libc::off_t, + // A value of `0` means send all bytes. + None => 0, + }; + syscall!(sendfile( + file, + self.as_raw(), + offset, + &mut length, + ptr::null_mut(), + 0, + )) + .map(|_| length as usize) + } + + #[cfg(all(feature = "all", any(target_os = "android", target_os = "linux")))] + fn _sendfile( + &self, + file: RawFd, + offset: libc::off_t, + length: Option, + ) -> io::Result { + let count = match length { + Some(n) => n.get() as libc::size_t, + // The maximum the Linux kernel will write in a single call. + None => 0x7ffff000, // 2,147,479,552 bytes. + }; + let mut offset = offset; + syscall!(sendfile(self.as_raw(), file, &mut offset, count)).map(|n| n as usize) + } + + #[cfg(all(feature = "all", target_os = "freebsd"))] + fn _sendfile( + &self, + file: RawFd, + offset: libc::off_t, + length: Option, + ) -> io::Result { + let nbytes = match length { + Some(n) => n.get() as libc::size_t, + // A value of `0` means send all bytes. + None => 0, + }; + let mut sbytes: libc::off_t = 0; + syscall!(sendfile( + file, + self.as_raw(), + offset, + nbytes, + ptr::null_mut(), + &mut sbytes, + 0, + )) + .map(|_| sbytes as usize) + } + + /// Set the value of the `TCP_USER_TIMEOUT` option on this socket. + /// + /// If set, this specifies the maximum amount of time that transmitted data may remain + /// unacknowledged or buffered data may remain untransmitted before TCP will forcibly close the + /// corresponding connection. + /// + /// Setting `timeout` to `None` or a zero duration causes the system default timeouts to + /// be used. If `timeout` in milliseconds is larger than `c_uint::MAX`, the timeout is clamped + /// to `c_uint::MAX`. For example, when `c_uint` is a 32-bit value, this limits the timeout to + /// approximately 49.71 days. + #[cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))) + )] + pub fn set_tcp_user_timeout(&self, timeout: Option) -> io::Result<()> { + let timeout = timeout + .map(|to| min(to.as_millis(), libc::c_uint::MAX as u128) as libc::c_uint) + .unwrap_or(0); + unsafe { + setsockopt( + self.as_raw(), + libc::IPPROTO_TCP, + libc::TCP_USER_TIMEOUT, + timeout, + ) + } + } + + /// Get the value of the `TCP_USER_TIMEOUT` option on this socket. + /// + /// For more information about this option, see [`set_tcp_user_timeout`]. + /// + /// [`set_tcp_user_timeout`]: Socket::set_tcp_user_timeout + #[cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))] + #[cfg_attr( + docsrs, + doc(cfg(all( + feature = "all", + any(target_os = "android", target_os = "fuchsia", target_os = "linux") + ))) + )] + pub fn tcp_user_timeout(&self) -> io::Result> { + unsafe { + getsockopt::(self.as_raw(), libc::IPPROTO_TCP, libc::TCP_USER_TIMEOUT) + .map(|millis| { + if millis == 0 { + None + } else { + Some(Duration::from_millis(millis as u64)) + } + }) + } + } + + /// Attach Berkeley Packet Filter(BPF) on this socket. + /// + /// BPF allows a user-space program to attach a filter onto any socket + /// and allow or disallow certain types of data to come through the socket. + /// + /// For more information about this option, see [filter](https://www.kernel.org/doc/html/v5.12/networking/filter.html) + #[cfg(all(feature = "all", any(target_os = "linux", target_os = "android")))] + pub fn attach_filter(&self, filters: &[libc::sock_filter]) -> io::Result<()> { + let prog = libc::sock_fprog { + len: filters.len() as u16, + filter: filters.as_ptr() as *mut _, + }; + + unsafe { + setsockopt( + self.as_raw(), + libc::SOL_SOCKET, + libc::SO_ATTACH_FILTER, + prog, + ) + } + } + + /// Detach Berkeley Packet Filter(BPF) from this socket. + /// + /// For more information about this option, see [`attach_filter`] + #[cfg(all(feature = "all", any(target_os = "linux", target_os = "android")))] + pub fn detach_filter(&self) -> io::Result<()> { + unsafe { setsockopt(self.as_raw(), libc::SOL_SOCKET, libc::SO_DETACH_FILTER, 0) } + } +} + +#[cfg_attr(docsrs, doc(cfg(unix)))] +impl AsRawFd for crate::Socket { + fn as_raw_fd(&self) -> c_int { + self.as_raw() + } +} + +#[cfg_attr(docsrs, doc(cfg(unix)))] +impl IntoRawFd for crate::Socket { + fn into_raw_fd(self) -> c_int { + self.into_raw() + } +} + +#[cfg_attr(docsrs, doc(cfg(unix)))] +impl FromRawFd for crate::Socket { + unsafe fn from_raw_fd(fd: c_int) -> crate::Socket { + crate::Socket::from_raw(fd) + } +} + +#[cfg(feature = "all")] +from!(UnixStream, crate::Socket); +#[cfg(feature = "all")] +from!(UnixListener, crate::Socket); +#[cfg(feature = "all")] +from!(UnixDatagram, crate::Socket); +#[cfg(feature = "all")] +from!(crate::Socket, UnixStream); +#[cfg(feature = "all")] +from!(crate::Socket, UnixListener); +#[cfg(feature = "all")] +from!(crate::Socket, UnixDatagram); + +#[test] +fn in_addr_convertion() { + let ip = Ipv4Addr::new(127, 0, 0, 1); + let raw = to_in_addr(&ip); + // NOTE: `in_addr` is packed on NetBSD and it's unsafe to borrow. + let a = raw.s_addr; + assert_eq!(a, u32::from_ne_bytes([127, 0, 0, 1])); + assert_eq!(from_in_addr(raw), ip); + + let ip = Ipv4Addr::new(127, 34, 4, 12); + let raw = to_in_addr(&ip); + let a = raw.s_addr; + assert_eq!(a, u32::from_ne_bytes([127, 34, 4, 12])); + assert_eq!(from_in_addr(raw), ip); +} + +#[test] +fn in6_addr_convertion() { + let ip = Ipv6Addr::new(0x2000, 1, 2, 3, 4, 5, 6, 7); + let raw = to_in6_addr(&ip); + let want = [32, 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7]; + assert_eq!(raw.s6_addr, want); + assert_eq!(from_in6_addr(raw), ip); +} diff -Nru temporalio-1.3.0/vendor/socket2-0.4.9/src/sys/windows.rs temporalio-1.3.0/vendor/socket2-0.4.9/src/sys/windows.rs --- temporalio-1.3.0/vendor/socket2-0.4.9/src/sys/windows.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/socket2-0.4.9/src/sys/windows.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,882 @@ +// Copyright 2015 The Rust Project Developers. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use std::cmp::min; +use std::io::{self, IoSlice}; +use std::marker::PhantomData; +use std::mem::{self, size_of, MaybeUninit}; +use std::net::{self, Ipv4Addr, Ipv6Addr, Shutdown}; +use std::os::windows::prelude::*; +use std::sync::Once; +use std::time::{Duration, Instant}; +use std::{ptr, slice}; + +use winapi::ctypes::c_long; +use winapi::shared::in6addr::*; +use winapi::shared::inaddr::*; +use winapi::shared::minwindef::DWORD; +use winapi::shared::minwindef::ULONG; +use winapi::shared::mstcpip::{tcp_keepalive, SIO_KEEPALIVE_VALS}; +use winapi::shared::ntdef::HANDLE; +use winapi::shared::ws2def; +use winapi::shared::ws2def::WSABUF; +use winapi::um::handleapi::SetHandleInformation; +use winapi::um::processthreadsapi::GetCurrentProcessId; +use winapi::um::winbase::{self, INFINITE}; +use winapi::um::winsock2::{ + self as sock, u_long, POLLERR, POLLHUP, POLLRDNORM, POLLWRNORM, SD_BOTH, SD_RECEIVE, SD_SEND, + WSAPOLLFD, +}; +use winapi::um::winsock2::{SOCKET_ERROR, WSAEMSGSIZE, WSAESHUTDOWN}; + +use crate::{RecvFlags, SockAddr, TcpKeepalive, Type}; + +pub(crate) use winapi::ctypes::c_int; + +/// Fake MSG_TRUNC flag for the [`RecvFlags`] struct. +/// +/// The flag is enabled when a `WSARecv[From]` call returns `WSAEMSGSIZE`. The +/// value of the flag is defined by us. +pub(crate) const MSG_TRUNC: c_int = 0x01; + +// Used in `Domain`. +pub(crate) use winapi::shared::ws2def::{AF_INET, AF_INET6}; +// Used in `Type`. +pub(crate) use winapi::shared::ws2def::{SOCK_DGRAM, SOCK_STREAM}; +#[cfg(feature = "all")] +pub(crate) use winapi::shared::ws2def::{SOCK_RAW, SOCK_SEQPACKET}; +// Used in `Protocol`. +pub(crate) const IPPROTO_ICMP: c_int = winapi::shared::ws2def::IPPROTO_ICMP as c_int; +pub(crate) const IPPROTO_ICMPV6: c_int = winapi::shared::ws2def::IPPROTO_ICMPV6 as c_int; +pub(crate) const IPPROTO_TCP: c_int = winapi::shared::ws2def::IPPROTO_TCP as c_int; +pub(crate) const IPPROTO_UDP: c_int = winapi::shared::ws2def::IPPROTO_UDP as c_int; +// Used in `SockAddr`. +pub(crate) use winapi::shared::ws2def::{ + ADDRESS_FAMILY as sa_family_t, SOCKADDR as sockaddr, SOCKADDR_IN as sockaddr_in, + SOCKADDR_STORAGE as sockaddr_storage, +}; +pub(crate) use winapi::shared::ws2ipdef::SOCKADDR_IN6_LH as sockaddr_in6; +pub(crate) use winapi::um::ws2tcpip::socklen_t; +// Used in `Socket`. +pub(crate) use winapi::shared::ws2def::{ + IPPROTO_IP, SOL_SOCKET, SO_BROADCAST, SO_ERROR, SO_KEEPALIVE, SO_LINGER, SO_OOBINLINE, + SO_RCVBUF, SO_RCVTIMEO, SO_REUSEADDR, SO_SNDBUF, SO_SNDTIMEO, SO_TYPE, TCP_NODELAY, +}; +#[cfg(feature = "all")] +pub(crate) use winapi::shared::ws2ipdef::IP_HDRINCL; +pub(crate) use winapi::shared::ws2ipdef::{ + IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP, IPV6_MREQ as Ipv6Mreq, IPV6_MULTICAST_HOPS, + IPV6_MULTICAST_IF, IPV6_MULTICAST_LOOP, IPV6_UNICAST_HOPS, IPV6_V6ONLY, IP_ADD_MEMBERSHIP, + IP_ADD_SOURCE_MEMBERSHIP, IP_DROP_MEMBERSHIP, IP_DROP_SOURCE_MEMBERSHIP, IP_MREQ as IpMreq, + IP_MREQ_SOURCE as IpMreqSource, IP_MULTICAST_IF, IP_MULTICAST_LOOP, IP_MULTICAST_TTL, IP_TOS, + IP_TTL, +}; +pub(crate) use winapi::um::winsock2::{linger, MSG_OOB, MSG_PEEK}; +pub(crate) const IPPROTO_IPV6: c_int = winapi::shared::ws2def::IPPROTO_IPV6 as c_int; + +/// Type used in set/getsockopt to retrieve the `TCP_NODELAY` option. +/// +/// NOTE: +/// documents that options such as `TCP_NODELAY` and `SO_KEEPALIVE` expect a +/// `BOOL` (alias for `c_int`, 4 bytes), however in practice this turns out to +/// be false (or misleading) as a `BOOLEAN` (`c_uchar`, 1 byte) is returned by +/// `getsockopt`. +pub(crate) type Bool = winapi::shared::ntdef::BOOLEAN; + +/// Maximum size of a buffer passed to system call like `recv` and `send`. +const MAX_BUF_LEN: usize = ::max_value() as usize; + +/// Helper macro to execute a system call that returns an `io::Result`. +macro_rules! syscall { + ($fn: ident ( $($arg: expr),* $(,)* ), $err_test: path, $err_value: expr) => {{ + #[allow(unused_unsafe)] + let res = unsafe { sock::$fn($($arg, )*) }; + if $err_test(&res, &$err_value) { + Err(io::Error::last_os_error()) + } else { + Ok(res) + } + }}; +} + +impl_debug!( + crate::Domain, + ws2def::AF_INET, + ws2def::AF_INET6, + ws2def::AF_UNIX, + ws2def::AF_UNSPEC, // = 0. +); + +/// Windows only API. +impl Type { + /// Our custom flag to set `WSA_FLAG_NO_HANDLE_INHERIT` on socket creation. + /// Trying to mimic `Type::cloexec` on windows. + const NO_INHERIT: c_int = 1 << ((size_of::() * 8) - 1); // Last bit. + + /// Set `WSA_FLAG_NO_HANDLE_INHERIT` on the socket. + #[cfg(feature = "all")] + #[cfg_attr(docsrs, doc(cfg(all(windows, feature = "all"))))] + pub const fn no_inherit(self) -> Type { + self._no_inherit() + } + + pub(crate) const fn _no_inherit(self) -> Type { + Type(self.0 | Type::NO_INHERIT) + } +} + +impl_debug!( + crate::Type, + ws2def::SOCK_STREAM, + ws2def::SOCK_DGRAM, + ws2def::SOCK_RAW, + ws2def::SOCK_RDM, + ws2def::SOCK_SEQPACKET, +); + +impl_debug!( + crate::Protocol, + self::IPPROTO_ICMP, + self::IPPROTO_ICMPV6, + self::IPPROTO_TCP, + self::IPPROTO_UDP, +); + +impl std::fmt::Debug for RecvFlags { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("RecvFlags") + .field("is_truncated", &self.is_truncated()) + .finish() + } +} + +#[repr(transparent)] +pub struct MaybeUninitSlice<'a> { + vec: WSABUF, + _lifetime: PhantomData<&'a mut [MaybeUninit]>, +} + +unsafe impl<'a> Send for MaybeUninitSlice<'a> {} + +unsafe impl<'a> Sync for MaybeUninitSlice<'a> {} + +impl<'a> MaybeUninitSlice<'a> { + pub fn new(buf: &'a mut [MaybeUninit]) -> MaybeUninitSlice<'a> { + assert!(buf.len() <= ULONG::MAX as usize); + MaybeUninitSlice { + vec: WSABUF { + len: buf.len() as ULONG, + buf: buf.as_mut_ptr().cast(), + }, + _lifetime: PhantomData, + } + } + + pub fn as_slice(&self) -> &[MaybeUninit] { + unsafe { slice::from_raw_parts(self.vec.buf.cast(), self.vec.len as usize) } + } + + pub fn as_mut_slice(&mut self) -> &mut [MaybeUninit] { + unsafe { slice::from_raw_parts_mut(self.vec.buf.cast(), self.vec.len as usize) } + } +} + +fn init() { + static INIT: Once = Once::new(); + + INIT.call_once(|| { + // Initialize winsock through the standard library by just creating a + // dummy socket. Whether this is successful or not we drop the result as + // libstd will be sure to have initialized winsock. + let _ = net::UdpSocket::bind("127.0.0.1:34254"); + }); +} + +pub(crate) type Socket = sock::SOCKET; + +pub(crate) unsafe fn socket_from_raw(socket: Socket) -> crate::socket::Inner { + crate::socket::Inner::from_raw_socket(socket as RawSocket) +} + +pub(crate) fn socket_as_raw(socket: &crate::socket::Inner) -> Socket { + socket.as_raw_socket() as Socket +} + +pub(crate) fn socket_into_raw(socket: crate::socket::Inner) -> Socket { + socket.into_raw_socket() as Socket +} + +pub(crate) fn socket(family: c_int, mut ty: c_int, protocol: c_int) -> io::Result { + init(); + + // Check if we set our custom flag. + let flags = if ty & Type::NO_INHERIT != 0 { + ty = ty & !Type::NO_INHERIT; + sock::WSA_FLAG_NO_HANDLE_INHERIT + } else { + 0 + }; + + syscall!( + WSASocketW( + family, + ty, + protocol, + ptr::null_mut(), + 0, + sock::WSA_FLAG_OVERLAPPED | flags, + ), + PartialEq::eq, + sock::INVALID_SOCKET + ) +} + +pub(crate) fn bind(socket: Socket, addr: &SockAddr) -> io::Result<()> { + syscall!(bind(socket, addr.as_ptr(), addr.len()), PartialEq::ne, 0).map(|_| ()) +} + +pub(crate) fn connect(socket: Socket, addr: &SockAddr) -> io::Result<()> { + syscall!(connect(socket, addr.as_ptr(), addr.len()), PartialEq::ne, 0).map(|_| ()) +} + +pub(crate) fn poll_connect(socket: &crate::Socket, timeout: Duration) -> io::Result<()> { + let start = Instant::now(); + + let mut fd_array = WSAPOLLFD { + fd: socket.as_raw(), + events: POLLRDNORM | POLLWRNORM, + revents: 0, + }; + + loop { + let elapsed = start.elapsed(); + if elapsed >= timeout { + return Err(io::ErrorKind::TimedOut.into()); + } + + let timeout = (timeout - elapsed).as_millis(); + let timeout = clamp(timeout, 1, c_int::max_value() as u128) as c_int; + + match syscall!( + WSAPoll(&mut fd_array, 1, timeout), + PartialEq::eq, + sock::SOCKET_ERROR + ) { + Ok(0) => return Err(io::ErrorKind::TimedOut.into()), + Ok(_) => { + // Error or hang up indicates an error (or failure to connect). + if (fd_array.revents & POLLERR) != 0 || (fd_array.revents & POLLHUP) != 0 { + match socket.take_error() { + Ok(Some(err)) => return Err(err), + Ok(None) => { + return Err(io::Error::new( + io::ErrorKind::Other, + "no error set after POLLHUP", + )) + } + Err(err) => return Err(err), + } + } + return Ok(()); + } + // Got interrupted, try again. + Err(ref err) if err.kind() == io::ErrorKind::Interrupted => continue, + Err(err) => return Err(err), + } + } +} + +// TODO: use clamp from std lib, stable since 1.50. +fn clamp(value: T, min: T, max: T) -> T +where + T: Ord, +{ + if value <= min { + min + } else if value >= max { + max + } else { + value + } +} + +pub(crate) fn listen(socket: Socket, backlog: c_int) -> io::Result<()> { + syscall!(listen(socket, backlog), PartialEq::ne, 0).map(|_| ()) +} + +pub(crate) fn accept(socket: Socket) -> io::Result<(Socket, SockAddr)> { + // Safety: `accept` initialises the `SockAddr` for us. + unsafe { + SockAddr::init(|storage, len| { + syscall!( + accept(socket, storage.cast(), len), + PartialEq::eq, + sock::INVALID_SOCKET + ) + }) + } +} + +pub(crate) fn getsockname(socket: Socket) -> io::Result { + // Safety: `getsockname` initialises the `SockAddr` for us. + unsafe { + SockAddr::init(|storage, len| { + syscall!( + getsockname(socket, storage.cast(), len), + PartialEq::eq, + sock::SOCKET_ERROR + ) + }) + } + .map(|(_, addr)| addr) +} + +pub(crate) fn getpeername(socket: Socket) -> io::Result { + // Safety: `getpeername` initialises the `SockAddr` for us. + unsafe { + SockAddr::init(|storage, len| { + syscall!( + getpeername(socket, storage.cast(), len), + PartialEq::eq, + sock::SOCKET_ERROR + ) + }) + } + .map(|(_, addr)| addr) +} + +pub(crate) fn try_clone(socket: Socket) -> io::Result { + let mut info: MaybeUninit = MaybeUninit::uninit(); + syscall!( + WSADuplicateSocketW(socket, GetCurrentProcessId(), info.as_mut_ptr()), + PartialEq::eq, + sock::SOCKET_ERROR + )?; + // Safety: `WSADuplicateSocketW` intialised `info` for us. + let mut info = unsafe { info.assume_init() }; + + syscall!( + WSASocketW( + info.iAddressFamily, + info.iSocketType, + info.iProtocol, + &mut info, + 0, + sock::WSA_FLAG_OVERLAPPED | sock::WSA_FLAG_NO_HANDLE_INHERIT, + ), + PartialEq::eq, + sock::INVALID_SOCKET + ) +} + +pub(crate) fn set_nonblocking(socket: Socket, nonblocking: bool) -> io::Result<()> { + let mut nonblocking = nonblocking as u_long; + ioctlsocket(socket, sock::FIONBIO, &mut nonblocking) +} + +pub(crate) fn shutdown(socket: Socket, how: Shutdown) -> io::Result<()> { + let how = match how { + Shutdown::Write => SD_SEND, + Shutdown::Read => SD_RECEIVE, + Shutdown::Both => SD_BOTH, + }; + syscall!(shutdown(socket, how), PartialEq::eq, sock::SOCKET_ERROR).map(|_| ()) +} + +pub(crate) fn recv(socket: Socket, buf: &mut [MaybeUninit], flags: c_int) -> io::Result { + let res = syscall!( + recv( + socket, + buf.as_mut_ptr().cast(), + min(buf.len(), MAX_BUF_LEN) as c_int, + flags, + ), + PartialEq::eq, + sock::SOCKET_ERROR + ); + match res { + Ok(n) => Ok(n as usize), + Err(ref err) if err.raw_os_error() == Some(sock::WSAESHUTDOWN as i32) => Ok(0), + Err(err) => Err(err), + } +} + +pub(crate) fn recv_vectored( + socket: Socket, + bufs: &mut [crate::MaybeUninitSlice<'_>], + flags: c_int, +) -> io::Result<(usize, RecvFlags)> { + let mut nread = 0; + let mut flags = flags as DWORD; + let res = syscall!( + WSARecv( + socket, + bufs.as_mut_ptr().cast(), + min(bufs.len(), DWORD::max_value() as usize) as DWORD, + &mut nread, + &mut flags, + ptr::null_mut(), + None, + ), + PartialEq::eq, + sock::SOCKET_ERROR + ); + match res { + Ok(_) => Ok((nread as usize, RecvFlags(0))), + Err(ref err) if err.raw_os_error() == Some(sock::WSAESHUTDOWN as i32) => { + Ok((0, RecvFlags(0))) + } + Err(ref err) if err.raw_os_error() == Some(sock::WSAEMSGSIZE as i32) => { + Ok((nread as usize, RecvFlags(MSG_TRUNC))) + } + Err(err) => Err(err), + } +} + +pub(crate) fn recv_from( + socket: Socket, + buf: &mut [MaybeUninit], + flags: c_int, +) -> io::Result<(usize, SockAddr)> { + // Safety: `recvfrom` initialises the `SockAddr` for us. + unsafe { + SockAddr::init(|storage, addrlen| { + let res = syscall!( + recvfrom( + socket, + buf.as_mut_ptr().cast(), + min(buf.len(), MAX_BUF_LEN) as c_int, + flags, + storage.cast(), + addrlen, + ), + PartialEq::eq, + sock::SOCKET_ERROR + ); + match res { + Ok(n) => Ok(n as usize), + Err(ref err) if err.raw_os_error() == Some(sock::WSAESHUTDOWN as i32) => Ok(0), + Err(err) => Err(err), + } + }) + } +} + +pub(crate) fn peek_sender(socket: Socket) -> io::Result { + // Safety: `recvfrom` initialises the `SockAddr` for us. + let ((), sender) = unsafe { + SockAddr::init(|storage, addrlen| { + let res = syscall!( + recvfrom( + socket, + // Windows *appears* not to care if you pass a null pointer. + ptr::null_mut(), + 0, + MSG_PEEK, + storage.cast(), + addrlen, + ), + PartialEq::eq, + SOCKET_ERROR + ); + match res { + Ok(_n) => Ok(()), + Err(e) => match e.raw_os_error() { + Some(code) if code == (WSAESHUTDOWN as i32) || code == (WSAEMSGSIZE as i32) => { + Ok(()) + } + _ => Err(e), + }, + } + }) + }?; + + Ok(sender) +} + +pub(crate) fn recv_from_vectored( + socket: Socket, + bufs: &mut [crate::MaybeUninitSlice<'_>], + flags: c_int, +) -> io::Result<(usize, RecvFlags, SockAddr)> { + // Safety: `recvfrom` initialises the `SockAddr` for us. + unsafe { + SockAddr::init(|storage, addrlen| { + let mut nread = 0; + let mut flags = flags as DWORD; + let res = syscall!( + WSARecvFrom( + socket, + bufs.as_mut_ptr().cast(), + min(bufs.len(), DWORD::max_value() as usize) as DWORD, + &mut nread, + &mut flags, + storage.cast(), + addrlen, + ptr::null_mut(), + None, + ), + PartialEq::eq, + sock::SOCKET_ERROR + ); + match res { + Ok(_) => Ok((nread as usize, RecvFlags(0))), + Err(ref err) if err.raw_os_error() == Some(sock::WSAESHUTDOWN as i32) => { + Ok((nread as usize, RecvFlags(0))) + } + Err(ref err) if err.raw_os_error() == Some(sock::WSAEMSGSIZE as i32) => { + Ok((nread as usize, RecvFlags(MSG_TRUNC))) + } + Err(err) => Err(err), + } + }) + } + .map(|((n, recv_flags), addr)| (n, recv_flags, addr)) +} + +pub(crate) fn send(socket: Socket, buf: &[u8], flags: c_int) -> io::Result { + syscall!( + send( + socket, + buf.as_ptr().cast(), + min(buf.len(), MAX_BUF_LEN) as c_int, + flags, + ), + PartialEq::eq, + sock::SOCKET_ERROR + ) + .map(|n| n as usize) +} + +pub(crate) fn send_vectored( + socket: Socket, + bufs: &[IoSlice<'_>], + flags: c_int, +) -> io::Result { + let mut nsent = 0; + syscall!( + WSASend( + socket, + // FIXME: From the `WSASend` docs [1]: + // > For a Winsock application, once the WSASend function is called, + // > the system owns these buffers and the application may not + // > access them. + // + // So what we're doing is actually UB as `bufs` needs to be `&mut + // [IoSlice<'_>]`. + // + // Tracking issue: https://github.com/rust-lang/socket2-rs/issues/129. + // + // NOTE: `send_to_vectored` has the same problem. + // + // [1] https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsasend + bufs.as_ptr() as *mut _, + min(bufs.len(), DWORD::max_value() as usize) as DWORD, + &mut nsent, + flags as DWORD, + std::ptr::null_mut(), + None, + ), + PartialEq::eq, + sock::SOCKET_ERROR + ) + .map(|_| nsent as usize) +} + +pub(crate) fn send_to( + socket: Socket, + buf: &[u8], + addr: &SockAddr, + flags: c_int, +) -> io::Result { + syscall!( + sendto( + socket, + buf.as_ptr().cast(), + min(buf.len(), MAX_BUF_LEN) as c_int, + flags, + addr.as_ptr(), + addr.len(), + ), + PartialEq::eq, + sock::SOCKET_ERROR + ) + .map(|n| n as usize) +} + +pub(crate) fn send_to_vectored( + socket: Socket, + bufs: &[IoSlice<'_>], + addr: &SockAddr, + flags: c_int, +) -> io::Result { + let mut nsent = 0; + syscall!( + WSASendTo( + socket, + // FIXME: Same problem as in `send_vectored`. + bufs.as_ptr() as *mut _, + bufs.len().min(DWORD::MAX as usize) as DWORD, + &mut nsent, + flags as DWORD, + addr.as_ptr(), + addr.len(), + ptr::null_mut(), + None, + ), + PartialEq::eq, + sock::SOCKET_ERROR + ) + .map(|_| nsent as usize) +} + +/// Wrapper around `getsockopt` to deal with platform specific timeouts. +pub(crate) fn timeout_opt(fd: Socket, lvl: c_int, name: c_int) -> io::Result> { + unsafe { getsockopt(fd, lvl, name).map(from_ms) } +} + +fn from_ms(duration: DWORD) -> Option { + if duration == 0 { + None + } else { + let secs = duration / 1000; + let nsec = (duration % 1000) * 1000000; + Some(Duration::new(secs as u64, nsec as u32)) + } +} + +/// Wrapper around `setsockopt` to deal with platform specific timeouts. +pub(crate) fn set_timeout_opt( + fd: Socket, + level: c_int, + optname: c_int, + duration: Option, +) -> io::Result<()> { + let duration = into_ms(duration); + unsafe { setsockopt(fd, level, optname, duration) } +} + +fn into_ms(duration: Option) -> DWORD { + // Note that a duration is a (u64, u32) (seconds, nanoseconds) pair, and the + // timeouts in windows APIs are typically u32 milliseconds. To translate, we + // have two pieces to take care of: + // + // * Nanosecond precision is rounded up + // * Greater than u32::MAX milliseconds (50 days) is rounded up to + // INFINITE (never time out). + duration + .map(|duration| min(duration.as_millis(), INFINITE as u128) as DWORD) + .unwrap_or(0) +} + +pub(crate) fn set_tcp_keepalive(socket: Socket, keepalive: &TcpKeepalive) -> io::Result<()> { + let mut keepalive = tcp_keepalive { + onoff: 1, + keepalivetime: into_ms(keepalive.time), + keepaliveinterval: into_ms(keepalive.interval), + }; + let mut out = 0; + syscall!( + WSAIoctl( + socket, + SIO_KEEPALIVE_VALS, + &mut keepalive as *mut _ as *mut _, + size_of::() as _, + ptr::null_mut(), + 0, + &mut out, + ptr::null_mut(), + None, + ), + PartialEq::eq, + sock::SOCKET_ERROR + ) + .map(|_| ()) +} + +/// Caller must ensure `T` is the correct type for `level` and `optname`. +pub(crate) unsafe fn getsockopt(socket: Socket, level: c_int, optname: c_int) -> io::Result { + let mut optval: MaybeUninit = MaybeUninit::uninit(); + let mut optlen = mem::size_of::() as c_int; + syscall!( + getsockopt( + socket, + level, + optname, + optval.as_mut_ptr().cast(), + &mut optlen, + ), + PartialEq::eq, + sock::SOCKET_ERROR + ) + .map(|_| { + debug_assert_eq!(optlen as usize, mem::size_of::()); + // Safety: `getsockopt` initialised `optval` for us. + optval.assume_init() + }) +} + +/// Caller must ensure `T` is the correct type for `level` and `optname`. +pub(crate) unsafe fn setsockopt( + socket: Socket, + level: c_int, + optname: c_int, + optval: T, +) -> io::Result<()> { + syscall!( + setsockopt( + socket, + level, + optname, + (&optval as *const T).cast(), + mem::size_of::() as c_int, + ), + PartialEq::eq, + sock::SOCKET_ERROR + ) + .map(|_| ()) +} + +fn ioctlsocket(socket: Socket, cmd: c_long, payload: &mut u_long) -> io::Result<()> { + syscall!( + ioctlsocket(socket, cmd, payload), + PartialEq::eq, + sock::SOCKET_ERROR + ) + .map(|_| ()) +} + +pub(crate) fn to_in_addr(addr: &Ipv4Addr) -> IN_ADDR { + let mut s_un: in_addr_S_un = unsafe { mem::zeroed() }; + // `S_un` is stored as BE on all machines, and the array is in BE order. So + // the native endian conversion method is used so that it's never swapped. + unsafe { *(s_un.S_addr_mut()) = u32::from_ne_bytes(addr.octets()) }; + IN_ADDR { S_un: s_un } +} + +pub(crate) fn from_in_addr(in_addr: IN_ADDR) -> Ipv4Addr { + Ipv4Addr::from(unsafe { *in_addr.S_un.S_addr() }.to_ne_bytes()) +} + +pub(crate) fn to_in6_addr(addr: &Ipv6Addr) -> in6_addr { + let mut ret_addr: in6_addr_u = unsafe { mem::zeroed() }; + unsafe { *(ret_addr.Byte_mut()) = addr.octets() }; + let mut ret: in6_addr = unsafe { mem::zeroed() }; + ret.u = ret_addr; + ret +} + +pub(crate) fn from_in6_addr(addr: in6_addr) -> Ipv6Addr { + Ipv6Addr::from(*unsafe { addr.u.Byte() }) +} + +pub(crate) fn to_mreqn( + multiaddr: &Ipv4Addr, + interface: &crate::socket::InterfaceIndexOrAddress, +) -> IpMreq { + IpMreq { + imr_multiaddr: to_in_addr(multiaddr), + // Per https://docs.microsoft.com/en-us/windows/win32/api/ws2ipdef/ns-ws2ipdef-ip_mreq#members: + // + // imr_interface + // + // The local IPv4 address of the interface or the interface index on + // which the multicast group should be joined or dropped. This value is + // in network byte order. If this member specifies an IPv4 address of + // 0.0.0.0, the default IPv4 multicast interface is used. + // + // To use an interface index of 1 would be the same as an IP address of + // 0.0.0.1. + imr_interface: match interface { + crate::socket::InterfaceIndexOrAddress::Index(interface) => { + to_in_addr(&(*interface).into()) + } + crate::socket::InterfaceIndexOrAddress::Address(interface) => to_in_addr(interface), + }, + } +} + +/// Windows only API. +impl crate::Socket { + /// Sets `HANDLE_FLAG_INHERIT` using `SetHandleInformation`. + #[cfg(feature = "all")] + #[cfg_attr(docsrs, doc(cfg(all(windows, feature = "all"))))] + pub fn set_no_inherit(&self, no_inherit: bool) -> io::Result<()> { + self._set_no_inherit(no_inherit) + } + + pub(crate) fn _set_no_inherit(&self, no_inherit: bool) -> io::Result<()> { + // NOTE: can't use `syscall!` because it expects the function in the + // `sock::` path. + let res = unsafe { + SetHandleInformation( + self.as_raw() as HANDLE, + winbase::HANDLE_FLAG_INHERIT, + !no_inherit as _, + ) + }; + if res == 0 { + // Zero means error. + Err(io::Error::last_os_error()) + } else { + Ok(()) + } + } +} + +impl AsRawSocket for crate::Socket { + fn as_raw_socket(&self) -> RawSocket { + self.as_raw() as RawSocket + } +} + +impl IntoRawSocket for crate::Socket { + fn into_raw_socket(self) -> RawSocket { + self.into_raw() as RawSocket + } +} + +impl FromRawSocket for crate::Socket { + unsafe fn from_raw_socket(socket: RawSocket) -> crate::Socket { + crate::Socket::from_raw(socket as Socket) + } +} + +#[test] +fn in_addr_convertion() { + let ip = Ipv4Addr::new(127, 0, 0, 1); + let raw = to_in_addr(&ip); + assert_eq!(unsafe { *raw.S_un.S_addr() }, 127 << 0 | 1 << 24); + assert_eq!(from_in_addr(raw), ip); + + let ip = Ipv4Addr::new(127, 34, 4, 12); + let raw = to_in_addr(&ip); + assert_eq!( + unsafe { *raw.S_un.S_addr() }, + 127 << 0 | 34 << 8 | 4 << 16 | 12 << 24 + ); + assert_eq!(from_in_addr(raw), ip); +} + +#[test] +fn in6_addr_convertion() { + let ip = Ipv6Addr::new(0x2000, 1, 2, 3, 4, 5, 6, 7); + let raw = to_in6_addr(&ip); + let want = [ + 0x2000u16.to_be(), + 1u16.to_be(), + 2u16.to_be(), + 3u16.to_be(), + 4u16.to_be(), + 5u16.to_be(), + 6u16.to_be(), + 7u16.to_be(), + ]; + assert_eq!(unsafe { *raw.u.Word() }, want); + assert_eq!(from_in6_addr(raw), ip); +} diff -Nru temporalio-1.3.0/vendor/spin/benches/mutex.rs temporalio-1.3.0/vendor/spin/benches/mutex.rs --- temporalio-1.3.0/vendor/spin/benches/mutex.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/spin/benches/mutex.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,126 @@ +#[macro_use] +extern crate criterion; + +use criterion::{Criterion, Bencher, black_box}; +use std::{ + ops::DerefMut, + sync::Arc, +}; + +trait Mutex: Send + Sync + 'static { + type Guard<'a>: DerefMut where Self: 'a; + fn new(x: T) -> Self; + fn lock(&self) -> Self::Guard<'_>; +} + +impl Mutex for spin::mutex::SpinMutex { + type Guard<'a> = spin::mutex::SpinMutexGuard<'a, T> where Self: 'a; + fn new(x: T) -> Self { spin::mutex::SpinMutex::new(x) } + fn lock(&self) -> Self::Guard<'_> { self.lock() } +} + +impl Mutex for spin::mutex::TicketMutex { + type Guard<'a> = spin::mutex::TicketMutexGuard<'a, T> where Self: 'a; + fn new(x: T) -> Self { spin::mutex::TicketMutex::new(x) } + fn lock(&self) -> Self::Guard<'_> { self.lock() } +} + +impl Mutex for std::sync::Mutex { + type Guard<'a> = std::sync::MutexGuard<'a, T> where Self: 'a; + fn new(x: T) -> Self { std::sync::Mutex::new(x) } + fn lock(&self) -> Self::Guard<'_> { self.lock().unwrap() } +} + +fn gen_create>(b: &mut Bencher) { + b.iter(|| { + let n = black_box(42); + M::new(n) + }); +} + +fn gen_lock_unlock>(b: &mut Bencher) { + let m = M::new(0); + b.iter(|| { + let mut m = m.lock(); + *m = m.wrapping_add(1); + drop(m); + }); +} + +fn gen_lock_unlock_read_contention>(b: &mut Bencher) { + let m = Arc::new(M::new(0)); + let thread = std::thread::spawn({ + let m = m.clone(); + move || { + while Arc::strong_count(&m) > 1 { + for _ in 0..1000 { + black_box(*m.lock()); + } + } + } + }); + b.iter(|| { + let mut m = m.lock(); + *m = m.wrapping_add(1); + drop(m); + }); + drop(m); + thread.join().unwrap(); +} + +fn gen_lock_unlock_write_contention>(b: &mut Bencher) { + let m = Arc::new(M::new(0)); + let thread = std::thread::spawn({ + let m = m.clone(); + move || { + while Arc::strong_count(&m) > 1 { + for _ in 0..1000 { + let mut m = m.lock(); + *m = m.wrapping_add(1); + drop(m); + } + } + } + }); + b.iter(|| { + let mut m = m.lock(); + *m = m.wrapping_add(1); + drop(m); + }); + drop(m); + thread.join().unwrap(); +} + +fn create(b: &mut Criterion) { + b.bench_function("create-spin-spinmutex", |b| gen_create::>(b)); + b.bench_function("create-spin-ticketmutex", |b| gen_create::>(b)); + b.bench_function("create-std", |b| gen_create::>(b)); +} + +fn lock_unlock(b: &mut Criterion) { + b.bench_function("lock_unlock-spin-spinmutex", |b| gen_lock_unlock::>(b)); + b.bench_function("lock_unlock-spin-ticketmutex", |b| gen_lock_unlock::>(b)); + b.bench_function("lock_unlock-std", |b| gen_lock_unlock::>(b)); +} + +fn lock_unlock_read_contention(b: &mut Criterion) { + b.bench_function("lock_unlock_read_contention-spin-spinmutex", |b| gen_lock_unlock_read_contention::>(b)); + b.bench_function("lock_unlock_read_contention-spin-ticketmutex", |b| gen_lock_unlock_read_contention::>(b)); + b.bench_function("lock_unlock_read_contention-std", |b| gen_lock_unlock_read_contention::>(b)); +} + +fn lock_unlock_write_contention(b: &mut Criterion) { + b.bench_function("lock_unlock_write_contention-spin-spinmutex", |b| gen_lock_unlock_write_contention::>(b)); + b.bench_function("lock_unlock_write_contention-spin-ticketmutex", |b| gen_lock_unlock_write_contention::>(b)); + b.bench_function("lock_unlock_write_contention-std", |b| gen_lock_unlock_write_contention::>(b)); +} + +criterion_group!( + mutex, + create, + lock_unlock, + lock_unlock_read_contention, + lock_unlock_write_contention, +); + +criterion_main!(mutex); diff -Nru temporalio-1.3.0/vendor/spin/.cargo-checksum.json temporalio-1.3.0/vendor/spin/.cargo-checksum.json --- temporalio-1.3.0/vendor/spin/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/spin/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"5202788831ce65bfa4b67dc3dcdd7698b30f1985dd1319cb31aec6a9afd4bde7","LICENSE":"6ac8711fb340c62ce0a4ecd463342d3fa0e8e70de697c863a2e1c0c53006003c","README.md":"90b21c45b2fd68f8dbf12ec8f61339e8689f031eb806ad90e73f11510e53eb72","examples/debug.rs":"0074651d78f8ed6d6c0274ae832c0d78de6c5c59423936f58e79cb3c98baea2c","script/doc-upload.cfg":"7383ee022197c1dade9a2e6888261def4a80df08ecb72b1b4db47d1e8a6ff8e0","src/lib.rs":"865d4759a7ed4b99b9c68f52ac849e7beb43940a8fb12c853e568d817821949a","src/mutex.rs":"3d2ae66354a799b66e0f1102790fadd1a09c5c6ecaea1290bde1867e91310c5e","src/once.rs":"61d8221858e2bfc41cc0fab802867e5eb05169dd2fa51912696188c31cf1f4ca","src/rw_lock.rs":"1af1974a2aefac645c4d32c85df2257422fa0f655a57ffcf61f7867769c918ed"},"package":"6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"} \ No newline at end of file +{"files":{"CHANGELOG.md":"34b35704b01c68214b27cb20f0c4325b3ce6e40ce8fd5aa3d2b884697a27307b","Cargo.lock":"9d6481d9ffe412e6c4d9445d89c0fa3e33a14b61c56aa5c121d9f28656cacfe4","Cargo.toml":"d2a17df2fa85736364744ea8279c6aed7276cabcc63bca2d25667198504e4be7","LICENSE":"6ac8711fb340c62ce0a4ecd463342d3fa0e8e70de697c863a2e1c0c53006003c","README.md":"78f0456ba0f3fa490d2bf38d79c42b293d551a9951da5bef0e1e5043143abf78","benches/mutex.rs":"2fd79239798e88cab0fd982e04f91a44c7c63282f8703d85fbdd81a8a1e71917","examples/debug.rs":"0074651d78f8ed6d6c0274ae832c0d78de6c5c59423936f58e79cb3c98baea2c","script/doc-upload.cfg":"7383ee022197c1dade9a2e6888261def4a80df08ecb72b1b4db47d1e8a6ff8e0","src/barrier.rs":"f8569a601d870a713344747eb355e6d840db510a599709173ebd0ccba5fc4028","src/lazy.rs":"45cf9174ee607e8a9acfa652b95c9b0ac71d98e89e73b9850041c79c5f3a726e","src/lib.rs":"85fa19874da6518e7ccd0d8bd3a0549fba52afd820789797e0221af1ac62196a","src/mutex.rs":"530039838850a0e71f4af42b9a7cffa0f922874e8f00001d36d67876842ed68f","src/mutex/fair.rs":"74cf2a0b8ab8e7a95564d97e8a66fc5d3d2641dd655de56a94ae4a93458f82c3","src/mutex/spin.rs":"a11e42d58e87a195e5e2110b46bda766f5a62a0c0b75a2b163f1ce37745bf337","src/mutex/ticket.rs":"1711bb02de48cf92f950b8f31946d5003225542ab6521333be1f525b76710f26","src/once.rs":"e4289220d505b7a15e8f9fb3f0d032ee57df6a5ee1d50123d4187e1afc6fb98b","src/relax.rs":"919c345bf55c3b2f9a7d9cd4aec2b2b3db68b6dc40ee2e4de4f6f32027abc290","src/rwlock.rs":"ba3b3dd20cdcd97691f042bcdd6d352e52601db7dc0cc7053c01a5873754b196"},"package":"6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/spin/Cargo.lock temporalio-1.3.0/vendor/spin/Cargo.lock --- temporalio-1.3.0/vendor/spin/Cargo.lock 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/spin/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,623 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bumpalo" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "ciborium" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369" + +[[package]] +name = "ciborium-ll" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "clap" +version = "3.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +dependencies = [ + "bitflags", + "clap_lex", + "indexmap", + "textwrap", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "criterion" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb" +dependencies = [ + "anes", + "atty", + "cast", + "ciborium", + "clap", + "criterion-plot", + "itertools", + "lazy_static", + "num-traits", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +dependencies = [ + "cast", + "itertools", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "either" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" + +[[package]] +name = "half" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" + +[[package]] +name = "js-sys" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "memoffset" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +dependencies = [ + "hermit-abi 0.2.6", + "libc", +] + +[[package]] +name = "once_cell" +version = "1.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" + +[[package]] +name = "oorandom" +version = "11.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" + +[[package]] +name = "os_str_bytes" +version = "6.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267" + +[[package]] +name = "plotters" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" + +[[package]] +name = "plotters-svg" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "portable-atomic" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f602a0d1e09a48e4f8e8b4d4042e32807c3676da31f2ecabeac9f96226ec6c45" + +[[package]] +name = "proc-macro2" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rayon" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] +name = "regex" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "ryu" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "serde" +version = "1.0.159" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.159" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.13", +] + +[[package]] +name = "serde_json" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d721eca97ac802aa7777b701877c8004d950fc142651367300d21c1cc0194744" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "spin" +version = "0.9.8" +dependencies = [ + "criterion", + "lock_api", + "portable-atomic", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c9da457c5285ac1f936ebd076af6dac17a61cfe7826f2076b4d015cf47bc8ec" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "textwrap" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" + +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "unicode-ident" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" + +[[package]] +name = "walkdir" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" + +[[package]] +name = "web-sys" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff -Nru temporalio-1.3.0/vendor/spin/Cargo.toml temporalio-1.3.0/vendor/spin/Cargo.toml --- temporalio-1.3.0/vendor/spin/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/spin/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -3,19 +3,78 @@ # 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 +# to registry (e.g., crates.io) dependencies. # -# If you believe there's an error in this file please file an -# issue against the rust-lang/cargo repository. If you're -# editing this file be aware that the upstream Cargo.toml -# will likely look very different (and much more reasonable) +# 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] +rust-version = "1.38" name = "spin" -version = "0.5.2" -authors = ["Mathijs van de Nes ", "John Ericson "] -description = "Synchronization primitives based on spinning.\nThey may contain data, are usable without `std`,\nand static initializers are available.\n" -documentation = "https://mvdnes.github.io/rust-docs/spin-rs/spin/index.html" -keywords = ["spinlock", "mutex", "rwlock"] +version = "0.9.8" +authors = [ + "Mathijs van de Nes ", + "John Ericson ", + "Joshua Barretto ", +] +description = "Spin-based synchronization primitives" +readme = "README.md" +keywords = [ + "spinlock", + "mutex", + "rwlock", +] license = "MIT" repository = "https://github.com/mvdnes/spin-rs.git" + +[package.metadata.docs.rs] +all-features = true +rustdoc-args = [ + "--cfg", + "docsrs", +] + +[[bench]] +name = "mutex" +harness = false +required-features = ["ticket_mutex"] + +[dependencies.lock_api_crate] +version = "0.4" +optional = true +package = "lock_api" + +[dependencies.portable-atomic] +version = "1" +optional = true +default-features = false + +[dev-dependencies.criterion] +version = "0.4" + +[features] +barrier = ["mutex"] +default = [ + "lock_api", + "mutex", + "spin_mutex", + "rwlock", + "once", + "lazy", + "barrier", +] +fair_mutex = ["mutex"] +lazy = ["once"] +lock_api = ["lock_api_crate"] +mutex = [] +once = [] +portable_atomic = ["portable-atomic"] +rwlock = [] +spin_mutex = ["mutex"] +std = [] +ticket_mutex = ["mutex"] +use_ticket_mutex = [ + "mutex", + "ticket_mutex", +] diff -Nru temporalio-1.3.0/vendor/spin/CHANGELOG.md temporalio-1.3.0/vendor/spin/CHANGELOG.md --- temporalio-1.3.0/vendor/spin/CHANGELOG.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/spin/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,146 @@ +# 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). + +# Unreleased + +### Added + +### Changed + +### Fixed + +# [0.9.8] - 2023-04-03 + +### Fixed + +- Unsoundness in `Once::try_call_once` caused by an `Err(_)` result + +# [0.9.7] - 2023-03-27 + +### Fixed + +- Relaxed accidentally restricted `Send`/`Sync` bounds for `Mutex` guards + +# [0.9.6] - 2023-03-13 + +### Fixed + +- Relaxed accidentally restricted `Send`/`Sync` bounds for `RwLock` guards + +# [0.9.5] - 2023-02-07 + +### Added + +- `FairMutex`, a new mutex implementation that reduces writer starvation. +- A MSRV policy: Rust 1.38 is currently required + +### Changed + +- The crate's CI now has full MIRI integration, further improving the confidence you can have in the implementation. + +### Fixed + +- Ensured that the crate's abstractions comply with stacked borrows rules. +- Unsoundness in the `RwLock` that could be triggered via a reader overflow +- Relaxed various `Send`/`Sync` bound requirements to make the crate more flexible + +# [0.9.4] - 2022-07-14 + +### Fixed + +- Fixed unsoundness in `RwLock` on reader overflow +- Relaxed `Send`/`Sync` bounds for `SpinMutex` and `TicketMutex` (doesn't affect `Mutex` itself) + +# [0.9.3] - 2022-04-17 + +### Added + +- Implemented `Default` for `Once` +- `Once::try_call_once` + +### Fixed + +- Fixed bug that caused `Once::call_once` to incorrectly fail + +# [0.9.2] - 2021-07-09 + +### Changed + +- Improved `Once` performance by reducing the memory footprint of internal state to one byte + +### Fixed + +- Improved performance of `Once` by relaxing ordering guarantees and removing redundant checks + +# [0.9.1] - 2021-06-21 + +### Added + +- Default type parameter on `Once` for better ergonomics + +# [0.9.0] - 2021-03-18 + +### Changed + +- Placed all major API features behind feature flags + +### Fixed + +- A compilation bug with the `lock_api` feature + +# [0.8.0] - 2021-03-15 + +### Added + +- `Once::get_unchecked` +- `RelaxStrategy` trait with type parameter on all locks to support switching between relax strategies + +### Changed + +- `lock_api1` feature is now named `lock_api` + +# [0.7.1] - 2021-01-12 + +### Fixed + +- Prevented `Once` leaking the inner value upon drop + +# [0.7.0] - 2020-10-18 + +### Added + +- `Once::initialized` +- `Once::get_mut` +- `Once::try_into_inner` +- `Once::poll` +- `RwLock`, `Mutex` and `Once` now implement `From` +- `Lazy` type for lazy initialization +- `TicketMutex`, an alternative mutex implementation +- `std` feature flag to enable thread yielding instead of spinning +- `Mutex::is_locked`/`SpinMutex::is_locked`/`TicketMutex::is_locked` +- `Barrier` + +### Changed + +- `Once::wait` now spins even if initialization has not yet started +- `Guard::leak` is now an associated function instead of a method +- Improved the performance of `SpinMutex` by relaxing unnecessarily conservative + ordering requirements + +# [0.6.0] - 2020-10-08 + +### Added + +- More dynamic `Send`/`Sync` bounds for lock guards +- `lock_api` compatibility +- `Guard::leak` methods +- `RwLock::reader_count` and `RwLock::writer_count` +- `Display` implementation for guard types + +### Changed + +- Made `Debug` impls of lock guards just show the inner type like `std` diff -Nru temporalio-1.3.0/vendor/spin/README.md temporalio-1.3.0/vendor/spin/README.md --- temporalio-1.3.0/vendor/spin/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/spin/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,64 +1,143 @@ -spin-rs -=========== +# spin-rs -[![Build Status](https://travis-ci.org/mvdnes/spin-rs.svg)](https://travis-ci.org/mvdnes/spin-rs) [![Crates.io version](https://img.shields.io/crates/v/spin.svg)](https://crates.io/crates/spin) [![docs.rs](https://docs.rs/spin/badge.svg)](https://docs.rs/spin/) +[![Build Status](https://travis-ci.org/mvdnes/spin-rs.svg)](https://travis-ci.org/mvdnes/spin-rs) -This Rust library implements a simple -[spinlock](https://en.wikipedia.org/wiki/Spinlock), and is safe for `#[no_std]` environments. +Spin-based synchronization primitives. -Usage ------ +This crate provides [spin-based](https://en.wikipedia.org/wiki/Spinlock) +versions of the primitives in `std::sync`. Because synchronization is done +through spinning, the primitives are suitable for use in `no_std` environments. + +Before deciding to use `spin`, we recommend reading +[this superb blog post](https://matklad.github.io/2020/01/02/spinlocks-considered-harmful.html) +by [@matklad](https://github.com/matklad/) that discusses the pros and cons of +spinlocks. If you have access to `std`, it's likely that the primitives in +`std::sync` will serve you better except in very specific circumstances. + +## Features + +- `Mutex`, `RwLock`, `Once`, `Lazy` and `Barrier` equivalents +- Support for `no_std` environments +- [`lock_api`](https://crates.io/crates/lock_api) compatibility +- Upgradeable `RwLock` guards +- Guards can be sent and shared between threads +- Guard leaking +- Ticket locks +- Different strategies for dealing with contention -Include the following code in your Cargo.toml +## Usage + +Include the following under the `[dependencies]` section in your `Cargo.toml` file. ```toml -[dependencies.spin] -version = "0.5" +spin = "x.y" ``` -Example -------- +## Example -When calling `lock` on a `Mutex` you will get a reference to the data. When this -reference is dropped, the lock will be unlocked. +When calling `lock` on a `Mutex` you will get a guard value that provides access +to the data. When this guard is dropped, the mutex will become available again. ```rust extern crate spin; +use std::{sync::Arc, thread}; + +fn main() { + let counter = Arc::new(spin::Mutex::new(0)); -fn main() -{ - let mutex = spin::Mutex::new(0); - let rw_lock = spin::RwLock::new(0); - - // Modify the data - { - let mut data = mutex.lock(); - *data = 2; - let mut data = rw_lock.write(); - *data = 3; + let thread = thread::spawn({ + let counter = counter.clone(); + move || { + for _ in 0..100 { + *counter.lock() += 1; + } + } + }); + + for _ in 0..100 { + *counter.lock() += 1; } - // Read the data - let answer = - { - let data1 = mutex.lock(); - let data2 = rw_lock.read(); - let data3 = rw_lock.read(); // sharing - (*data1, *data2, *data3) - }; + thread.join().unwrap(); - println!("Answers are {:?}", answer); + assert_eq!(*counter.lock(), 200); } ``` -To share the lock, an `Arc>` may be used. +## Feature flags + +The crate comes with a few feature flags that you may wish to use. + +- `mutex` enables the `Mutex` type. + +- `spin_mutex` enables the `SpinMutex` type. + +- `ticket_mutex` enables the `TicketMutex` type. + +- `use_ticket_mutex` switches to a ticket lock for the implementation of `Mutex`. This + is recommended only on targets for which ordinary spinning locks perform very badly + because it will change the implementation used by other crates that depend on `spin`. + +- `rwlock` enables the `RwLock` type. + +- `once` enables the `Once` type. + +- `lazy` enables the `Lazy` type. + +- `barrier` enables the `Barrier` type. -Remarks -------- +- `lock_api` enables support for [`lock_api`](https://crates.io/crates/lock_api) + +- `std` enables support for thread yielding instead of spinning. + +- `portable_atomic` enables usage of the `portable-atomic` crate + to support platforms without native atomic operations (Cortex-M0, etc.). + The `portable_atomic_unsafe_assume_single_core` cfg or `critical-section` feature + of `portable-atomic` crate must also be set by the final binary crate. + + When using the cfg, this can be done by adapting the following snippet to the `.cargo/config` file: + ``` + [target.] + rustflags = [ "--cfg", "portable_atomic_unsafe_assume_single_core" ] + ``` + Note that this cfg is unsafe by nature, and enabling it for multicore systems is unsound. + + When using the `critical-section` feature, you need to implement the critical-section + implementation that sound for your system by implementing an unsafe trait. + See [the documentation for the `portable-atomic` crate](https://docs.rs/portable-atomic/latest/portable_atomic/#optional-cfg) + for more information. + +## Remarks + +It is often desirable to have a lock shared between threads. Wrapping the lock in an +`std::sync::Arc` is route through which this might be achieved. + +Locks provide zero-overhead access to their data when accessed through a mutable +reference by using their `get_mut` methods. The behaviour of these lock is similar to their namesakes in `std::sync`. they differ on the following: - - The lock will not be poisoned in case of failure; +- Locks will not be poisoned in case of failure. +- Threads will not yield to the OS scheduler when encounter a lock that cannot be + accessed. Instead, they will 'spin' in a busy loop until the lock becomes available. + +Many of the feature flags listed above are enabled by default. If you're writing a +library, we recommend disabling those that you don't use to avoid increasing compilation +time for your crate's users. You can do this like so: + +``` +[dependencies] +spin = { version = "x.y", default-features = false, features = [...] } +``` + +## Minimum Safe Rust Version (MSRV) + +This crate is guaranteed to compile on a Minimum Safe Rust Version (MSRV) of 1.38.0 and above. +This version will not be changed without a minor version bump. + +## License + +`spin` is distributed under the MIT License, (See `LICENSE`). diff -Nru temporalio-1.3.0/vendor/spin/src/barrier.rs temporalio-1.3.0/vendor/spin/src/barrier.rs --- temporalio-1.3.0/vendor/spin/src/barrier.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/spin/src/barrier.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,239 @@ +//! Synchronization primitive allowing multiple threads to synchronize the +//! beginning of some computation. +//! +//! Implementation adapted from the 'Barrier' type of the standard library. See: +//! +//! +//! Copyright 2014 The Rust Project Developers. See the COPYRIGHT +//! file at the top-level directory of this distribution and at +//! . +//! +//! Licensed under the Apache License, Version 2.0 > or the MIT license +//! >, at your +//! option. This file may not be copied, modified, or distributed +//! except according to those terms. + +use crate::{mutex::Mutex, RelaxStrategy, Spin}; + +/// A primitive that synchronizes the execution of multiple threads. +/// +/// # Example +/// +/// ``` +/// use spin; +/// use std::sync::Arc; +/// use std::thread; +/// +/// let mut handles = Vec::with_capacity(10); +/// let barrier = Arc::new(spin::Barrier::new(10)); +/// for _ in 0..10 { +/// let c = barrier.clone(); +/// // The same messages will be printed together. +/// // You will NOT see any interleaving. +/// handles.push(thread::spawn(move|| { +/// println!("before wait"); +/// c.wait(); +/// println!("after wait"); +/// })); +/// } +/// // Wait for other threads to finish. +/// for handle in handles { +/// handle.join().unwrap(); +/// } +/// ``` +pub struct Barrier { + lock: Mutex, + num_threads: usize, +} + +// The inner state of a double barrier +struct BarrierState { + count: usize, + generation_id: usize, +} + +/// A `BarrierWaitResult` is returned by [`wait`] when all threads in the [`Barrier`] +/// have rendezvoused. +/// +/// [`wait`]: struct.Barrier.html#method.wait +/// [`Barrier`]: struct.Barrier.html +/// +/// # Examples +/// +/// ``` +/// use spin; +/// +/// let barrier = spin::Barrier::new(1); +/// let barrier_wait_result = barrier.wait(); +/// ``` +pub struct BarrierWaitResult(bool); + +impl Barrier { + /// Blocks the current thread until all threads have rendezvoused here. + /// + /// Barriers are re-usable after all threads have rendezvoused once, and can + /// be used continuously. + /// + /// A single (arbitrary) thread will receive a [`BarrierWaitResult`] that + /// returns `true` from [`is_leader`] when returning from this function, and + /// all other threads will receive a result that will return `false` from + /// [`is_leader`]. + /// + /// [`BarrierWaitResult`]: struct.BarrierWaitResult.html + /// [`is_leader`]: struct.BarrierWaitResult.html#method.is_leader + /// + /// # Examples + /// + /// ``` + /// use spin; + /// use std::sync::Arc; + /// use std::thread; + /// + /// let mut handles = Vec::with_capacity(10); + /// let barrier = Arc::new(spin::Barrier::new(10)); + /// for _ in 0..10 { + /// let c = barrier.clone(); + /// // The same messages will be printed together. + /// // You will NOT see any interleaving. + /// handles.push(thread::spawn(move|| { + /// println!("before wait"); + /// c.wait(); + /// println!("after wait"); + /// })); + /// } + /// // Wait for other threads to finish. + /// for handle in handles { + /// handle.join().unwrap(); + /// } + /// ``` + pub fn wait(&self) -> BarrierWaitResult { + let mut lock = self.lock.lock(); + lock.count += 1; + + if lock.count < self.num_threads { + // not the leader + let local_gen = lock.generation_id; + + while local_gen == lock.generation_id && lock.count < self.num_threads { + drop(lock); + R::relax(); + lock = self.lock.lock(); + } + BarrierWaitResult(false) + } else { + // this thread is the leader, + // and is responsible for incrementing the generation + lock.count = 0; + lock.generation_id = lock.generation_id.wrapping_add(1); + BarrierWaitResult(true) + } + } +} + +impl Barrier { + /// Creates a new barrier that can block a given number of threads. + /// + /// A barrier will block `n`-1 threads which call [`wait`] and then wake up + /// all threads at once when the `n`th thread calls [`wait`]. A Barrier created + /// with n = 0 will behave identically to one created with n = 1. + /// + /// [`wait`]: #method.wait + /// + /// # Examples + /// + /// ``` + /// use spin; + /// + /// let barrier = spin::Barrier::new(10); + /// ``` + pub const fn new(n: usize) -> Self { + Self { + lock: Mutex::new(BarrierState { + count: 0, + generation_id: 0, + }), + num_threads: n, + } + } +} + +impl BarrierWaitResult { + /// Returns whether this thread from [`wait`] is the "leader thread". + /// + /// Only one thread will have `true` returned from their result, all other + /// threads will have `false` returned. + /// + /// [`wait`]: struct.Barrier.html#method.wait + /// + /// # Examples + /// + /// ``` + /// use spin; + /// + /// let barrier = spin::Barrier::new(1); + /// let barrier_wait_result = barrier.wait(); + /// println!("{:?}", barrier_wait_result.is_leader()); + /// ``` + pub fn is_leader(&self) -> bool { + self.0 + } +} + +#[cfg(test)] +mod tests { + use std::prelude::v1::*; + + use std::sync::mpsc::{channel, TryRecvError}; + use std::sync::Arc; + use std::thread; + + type Barrier = super::Barrier; + + fn use_barrier(n: usize, barrier: Arc) { + let (tx, rx) = channel(); + + let mut ts = Vec::new(); + for _ in 0..n - 1 { + let c = barrier.clone(); + let tx = tx.clone(); + ts.push(thread::spawn(move || { + tx.send(c.wait().is_leader()).unwrap(); + })); + } + + // At this point, all spawned threads should be blocked, + // so we shouldn't get anything from the port + assert!(match rx.try_recv() { + Err(TryRecvError::Empty) => true, + _ => false, + }); + + let mut leader_found = barrier.wait().is_leader(); + + // Now, the barrier is cleared and we should get data. + for _ in 0..n - 1 { + if rx.recv().unwrap() { + assert!(!leader_found); + leader_found = true; + } + } + assert!(leader_found); + + for t in ts { + t.join().unwrap(); + } + } + + #[test] + fn test_barrier() { + const N: usize = 10; + + let barrier = Arc::new(Barrier::new(N)); + + use_barrier(N, barrier.clone()); + + // use barrier twice to ensure it is reusable + use_barrier(N, barrier.clone()); + } +} diff -Nru temporalio-1.3.0/vendor/spin/src/lazy.rs temporalio-1.3.0/vendor/spin/src/lazy.rs --- temporalio-1.3.0/vendor/spin/src/lazy.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/spin/src/lazy.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,118 @@ +//! Synchronization primitives for lazy evaluation. +//! +//! Implementation adapted from the `SyncLazy` type of the standard library. See: +//! + +use crate::{once::Once, RelaxStrategy, Spin}; +use core::{cell::Cell, fmt, ops::Deref}; + +/// A value which is initialized on the first access. +/// +/// This type is a thread-safe `Lazy`, and can be used in statics. +/// +/// # Examples +/// +/// ``` +/// use std::collections::HashMap; +/// use spin::Lazy; +/// +/// static HASHMAP: Lazy> = Lazy::new(|| { +/// println!("initializing"); +/// let mut m = HashMap::new(); +/// m.insert(13, "Spica".to_string()); +/// m.insert(74, "Hoyten".to_string()); +/// m +/// }); +/// +/// fn main() { +/// println!("ready"); +/// std::thread::spawn(|| { +/// println!("{:?}", HASHMAP.get(&13)); +/// }).join().unwrap(); +/// println!("{:?}", HASHMAP.get(&74)); +/// +/// // Prints: +/// // ready +/// // initializing +/// // Some("Spica") +/// // Some("Hoyten") +/// } +/// ``` +pub struct Lazy T, R = Spin> { + cell: Once, + init: Cell>, +} + +impl fmt::Debug for Lazy { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("Lazy") + .field("cell", &self.cell) + .field("init", &"..") + .finish() + } +} + +// We never create a `&F` from a `&Lazy` so it is fine +// to not impl `Sync` for `F` +// we do create a `&mut Option` in `force`, but this is +// properly synchronized, so it only happens once +// so it also does not contribute to this impl. +unsafe impl Sync for Lazy where Once: Sync {} +// auto-derived `Send` impl is OK. + +impl Lazy { + /// Creates a new lazy value with the given initializing + /// function. + pub const fn new(f: F) -> Self { + Self { + cell: Once::new(), + init: Cell::new(Some(f)), + } + } + /// Retrieves a mutable pointer to the inner data. + /// + /// This is especially useful when interfacing with low level code or FFI where the caller + /// explicitly knows that it has exclusive access to the inner data. Note that reading from + /// this pointer is UB until initialized or directly written to. + pub fn as_mut_ptr(&self) -> *mut T { + self.cell.as_mut_ptr() + } +} + +impl T, R: RelaxStrategy> Lazy { + /// Forces the evaluation of this lazy value and + /// returns a reference to result. This is equivalent + /// to the `Deref` impl, but is explicit. + /// + /// # Examples + /// + /// ``` + /// use spin::Lazy; + /// + /// let lazy = Lazy::new(|| 92); + /// + /// assert_eq!(Lazy::force(&lazy), &92); + /// assert_eq!(&*lazy, &92); + /// ``` + pub fn force(this: &Self) -> &T { + this.cell.call_once(|| match this.init.take() { + Some(f) => f(), + None => panic!("Lazy instance has previously been poisoned"), + }) + } +} + +impl T, R: RelaxStrategy> Deref for Lazy { + type Target = T; + + fn deref(&self) -> &T { + Self::force(self) + } +} + +impl Default for Lazy T, R> { + /// Creates a new lazy value using `Default` as the initializing function. + fn default() -> Self { + Self::new(T::default) + } +} diff -Nru temporalio-1.3.0/vendor/spin/src/lib.rs temporalio-1.3.0/vendor/spin/src/lib.rs --- temporalio-1.3.0/vendor/spin/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/spin/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,18 +1,221 @@ -#![crate_type = "lib"] -#![warn(missing_docs)] +#![cfg_attr(all(not(feature = "std"), not(test)), no_std)] +#![cfg_attr(docsrs, feature(doc_cfg))] +#![deny(missing_docs)] -//! Synchronization primitives based on spinning +//! This crate provides [spin-based](https://en.wikipedia.org/wiki/Spinlock) versions of the +//! primitives in `std::sync` and `std::lazy`. Because synchronization is done through spinning, +//! the primitives are suitable for use in `no_std` environments. +//! +//! # Features +//! +//! - `Mutex`, `RwLock`, `Once`/`SyncOnceCell`, and `SyncLazy` equivalents +//! +//! - Support for `no_std` environments +//! +//! - [`lock_api`](https://crates.io/crates/lock_api) compatibility +//! +//! - Upgradeable `RwLock` guards +//! +//! - Guards can be sent and shared between threads +//! +//! - Guard leaking +//! +//! - Ticket locks +//! +//! - Different strategies for dealing with contention +//! +//! # Relationship with `std::sync` +//! +//! While `spin` is not a drop-in replacement for `std::sync` (and +//! [should not be considered as such](https://matklad.github.io/2020/01/02/spinlocks-considered-harmful.html)) +//! an effort is made to keep this crate reasonably consistent with `std::sync`. +//! +//! Many of the types defined in this crate have 'additional capabilities' when compared to `std::sync`: +//! +//! - Because spinning does not depend on the thread-driven model of `std::sync`, guards ([`MutexGuard`], +//! [`RwLockReadGuard`], [`RwLockWriteGuard`], etc.) may be sent and shared between threads. +//! +//! - [`RwLockUpgradableGuard`] supports being upgraded into a [`RwLockWriteGuard`]. +//! +//! - Guards support [leaking](https://doc.rust-lang.org/nomicon/leaking.html). +//! +//! - [`Once`] owns the value returned by its `call_once` initializer. +//! +//! - [`RwLock`] supports counting readers and writers. +//! +//! Conversely, the types in this crate do not have some of the features `std::sync` has: +//! +//! - Locks do not track [panic poisoning](https://doc.rust-lang.org/nomicon/poisoning.html). +//! +//! ## Feature flags +//! +//! The crate comes with a few feature flags that you may wish to use. +//! +//! - `lock_api` enables support for [`lock_api`](https://crates.io/crates/lock_api) +//! +//! - `ticket_mutex` uses a ticket lock for the implementation of `Mutex` +//! +//! - `fair_mutex` enables a fairer implementation of `Mutex` that uses eventual fairness to avoid +//! starvation +//! +//! - `std` enables support for thread yielding instead of spinning -#![no_std] +#[cfg(any(test, feature = "std"))] +extern crate core; -#[cfg(test)] -#[macro_use] -extern crate std; +#[cfg(feature = "portable_atomic")] +extern crate portable_atomic; -pub use mutex::*; -pub use rw_lock::*; -pub use once::*; +#[cfg(not(feature = "portable_atomic"))] +use core::sync::atomic; +#[cfg(feature = "portable_atomic")] +use portable_atomic as atomic; -mod mutex; -mod rw_lock; -mod once; +#[cfg(feature = "barrier")] +#[cfg_attr(docsrs, doc(cfg(feature = "barrier")))] +pub mod barrier; +#[cfg(feature = "lazy")] +#[cfg_attr(docsrs, doc(cfg(feature = "lazy")))] +pub mod lazy; +#[cfg(feature = "mutex")] +#[cfg_attr(docsrs, doc(cfg(feature = "mutex")))] +pub mod mutex; +#[cfg(feature = "once")] +#[cfg_attr(docsrs, doc(cfg(feature = "once")))] +pub mod once; +pub mod relax; +#[cfg(feature = "rwlock")] +#[cfg_attr(docsrs, doc(cfg(feature = "rwlock")))] +pub mod rwlock; + +#[cfg(feature = "mutex")] +#[cfg_attr(docsrs, doc(cfg(feature = "mutex")))] +pub use mutex::MutexGuard; +#[cfg(feature = "std")] +#[cfg_attr(docsrs, doc(cfg(feature = "std")))] +pub use relax::Yield; +pub use relax::{RelaxStrategy, Spin}; +#[cfg(feature = "rwlock")] +#[cfg_attr(docsrs, doc(cfg(feature = "rwlock")))] +pub use rwlock::RwLockReadGuard; + +// Avoid confusing inference errors by aliasing away the relax strategy parameter. Users that need to use a different +// relax strategy can do so by accessing the types through their fully-qualified path. This is a little bit horrible +// but sadly adding a default type parameter is *still* a breaking change in Rust (for understandable reasons). + +/// A primitive that synchronizes the execution of multiple threads. See [`barrier::Barrier`] for documentation. +/// +/// A note for advanced users: this alias exists to avoid subtle type inference errors due to the default relax +/// strategy type parameter. If you need a non-default relax strategy, use the fully-qualified path. +#[cfg(feature = "barrier")] +#[cfg_attr(docsrs, doc(cfg(feature = "barrier")))] +pub type Barrier = crate::barrier::Barrier; + +/// A value which is initialized on the first access. See [`lazy::Lazy`] for documentation. +/// +/// A note for advanced users: this alias exists to avoid subtle type inference errors due to the default relax +/// strategy type parameter. If you need a non-default relax strategy, use the fully-qualified path. +#[cfg(feature = "lazy")] +#[cfg_attr(docsrs, doc(cfg(feature = "lazy")))] +pub type Lazy T> = crate::lazy::Lazy; + +/// A primitive that synchronizes the execution of multiple threads. See [`mutex::Mutex`] for documentation. +/// +/// A note for advanced users: this alias exists to avoid subtle type inference errors due to the default relax +/// strategy type parameter. If you need a non-default relax strategy, use the fully-qualified path. +#[cfg(feature = "mutex")] +#[cfg_attr(docsrs, doc(cfg(feature = "mutex")))] +pub type Mutex = crate::mutex::Mutex; + +/// A primitive that provides lazy one-time initialization. See [`once::Once`] for documentation. +/// +/// A note for advanced users: this alias exists to avoid subtle type inference errors due to the default relax +/// strategy type parameter. If you need a non-default relax strategy, use the fully-qualified path. +#[cfg(feature = "once")] +#[cfg_attr(docsrs, doc(cfg(feature = "once")))] +pub type Once = crate::once::Once; + +/// A lock that provides data access to either one writer or many readers. See [`rwlock::RwLock`] for documentation. +/// +/// A note for advanced users: this alias exists to avoid subtle type inference errors due to the default relax +/// strategy type parameter. If you need a non-default relax strategy, use the fully-qualified path. +#[cfg(feature = "rwlock")] +#[cfg_attr(docsrs, doc(cfg(feature = "rwlock")))] +pub type RwLock = crate::rwlock::RwLock; + +/// A guard that provides immutable data access but can be upgraded to [`RwLockWriteGuard`]. See +/// [`rwlock::RwLockUpgradableGuard`] for documentation. +/// +/// A note for advanced users: this alias exists to avoid subtle type inference errors due to the default relax +/// strategy type parameter. If you need a non-default relax strategy, use the fully-qualified path. +#[cfg(feature = "rwlock")] +#[cfg_attr(docsrs, doc(cfg(feature = "rwlock")))] +pub type RwLockUpgradableGuard<'a, T> = crate::rwlock::RwLockUpgradableGuard<'a, T>; + +/// A guard that provides mutable data access. See [`rwlock::RwLockWriteGuard`] for documentation. +/// +/// A note for advanced users: this alias exists to avoid subtle type inference errors due to the default relax +/// strategy type parameter. If you need a non-default relax strategy, use the fully-qualified path. +#[cfg(feature = "rwlock")] +#[cfg_attr(docsrs, doc(cfg(feature = "rwlock")))] +pub type RwLockWriteGuard<'a, T> = crate::rwlock::RwLockWriteGuard<'a, T>; + +/// Spin synchronisation primitives, but compatible with [`lock_api`](https://crates.io/crates/lock_api). +#[cfg(feature = "lock_api")] +#[cfg_attr(docsrs, doc(cfg(feature = "lock_api")))] +pub mod lock_api { + /// A lock that provides mutually exclusive data access (compatible with [`lock_api`](https://crates.io/crates/lock_api)). + #[cfg(feature = "mutex")] + #[cfg_attr(docsrs, doc(cfg(feature = "mutex")))] + pub type Mutex = lock_api_crate::Mutex, T>; + + /// A guard that provides mutable data access (compatible with [`lock_api`](https://crates.io/crates/lock_api)). + #[cfg(feature = "mutex")] + #[cfg_attr(docsrs, doc(cfg(feature = "mutex")))] + pub type MutexGuard<'a, T> = lock_api_crate::MutexGuard<'a, crate::Mutex<()>, T>; + + /// A lock that provides data access to either one writer or many readers (compatible with [`lock_api`](https://crates.io/crates/lock_api)). + #[cfg(feature = "rwlock")] + #[cfg_attr(docsrs, doc(cfg(feature = "rwlock")))] + pub type RwLock = lock_api_crate::RwLock, T>; + + /// A guard that provides immutable data access (compatible with [`lock_api`](https://crates.io/crates/lock_api)). + #[cfg(feature = "rwlock")] + #[cfg_attr(docsrs, doc(cfg(feature = "rwlock")))] + pub type RwLockReadGuard<'a, T> = lock_api_crate::RwLockReadGuard<'a, crate::RwLock<()>, T>; + + /// A guard that provides mutable data access (compatible with [`lock_api`](https://crates.io/crates/lock_api)). + #[cfg(feature = "rwlock")] + #[cfg_attr(docsrs, doc(cfg(feature = "rwlock")))] + pub type RwLockWriteGuard<'a, T> = lock_api_crate::RwLockWriteGuard<'a, crate::RwLock<()>, T>; + + /// A guard that provides immutable data access but can be upgraded to [`RwLockWriteGuard`] (compatible with [`lock_api`](https://crates.io/crates/lock_api)). + #[cfg(feature = "rwlock")] + #[cfg_attr(docsrs, doc(cfg(feature = "rwlock")))] + pub type RwLockUpgradableReadGuard<'a, T> = + lock_api_crate::RwLockUpgradableReadGuard<'a, crate::RwLock<()>, T>; +} + +/// In the event of an invalid operation, it's best to abort the current process. +#[cfg(feature = "fair_mutex")] +fn abort() -> ! { + #[cfg(not(feature = "std"))] + { + // Panicking while panicking is defined by Rust to result in an abort. + struct Panic; + + impl Drop for Panic { + fn drop(&mut self) { + panic!("aborting due to invalid operation"); + } + } + + let _panic = Panic; + panic!("aborting due to invalid operation"); + } + + #[cfg(feature = "std")] + { + std::process::abort(); + } +} diff -Nru temporalio-1.3.0/vendor/spin/src/mutex/fair.rs temporalio-1.3.0/vendor/spin/src/mutex/fair.rs --- temporalio-1.3.0/vendor/spin/src/mutex/fair.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/spin/src/mutex/fair.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,735 @@ +//! A spinning mutex with a fairer unlock algorithm. +//! +//! This mutex is similar to the `SpinMutex` in that it uses spinning to avoid +//! context switches. However, it uses a fairer unlock algorithm that avoids +//! starvation of threads that are waiting for the lock. + +use crate::{ + atomic::{AtomicUsize, Ordering}, + RelaxStrategy, Spin, +}; +use core::{ + cell::UnsafeCell, + fmt, + marker::PhantomData, + mem::ManuallyDrop, + ops::{Deref, DerefMut}, +}; + +// The lowest bit of `lock` is used to indicate whether the mutex is locked or not. The rest of the bits are used to +// store the number of starving threads. +const LOCKED: usize = 1; +const STARVED: usize = 2; + +/// Number chosen by fair roll of the dice, adjust as needed. +const STARVATION_SPINS: usize = 1024; + +/// A [spin lock](https://en.m.wikipedia.org/wiki/Spinlock) providing mutually exclusive access to data, but with a fairer +/// algorithm. +/// +/// # Example +/// +/// ``` +/// use spin; +/// +/// let lock = spin::mutex::FairMutex::<_>::new(0); +/// +/// // Modify the data +/// *lock.lock() = 2; +/// +/// // Read the data +/// let answer = *lock.lock(); +/// assert_eq!(answer, 2); +/// ``` +/// +/// # Thread safety example +/// +/// ``` +/// use spin; +/// use std::sync::{Arc, Barrier}; +/// +/// let thread_count = 1000; +/// let spin_mutex = Arc::new(spin::mutex::FairMutex::<_>::new(0)); +/// +/// // We use a barrier to ensure the readout happens after all writing +/// let barrier = Arc::new(Barrier::new(thread_count + 1)); +/// +/// for _ in (0..thread_count) { +/// let my_barrier = barrier.clone(); +/// let my_lock = spin_mutex.clone(); +/// std::thread::spawn(move || { +/// let mut guard = my_lock.lock(); +/// *guard += 1; +/// +/// // Release the lock to prevent a deadlock +/// drop(guard); +/// my_barrier.wait(); +/// }); +/// } +/// +/// barrier.wait(); +/// +/// let answer = { *spin_mutex.lock() }; +/// assert_eq!(answer, thread_count); +/// ``` +pub struct FairMutex { + phantom: PhantomData, + pub(crate) lock: AtomicUsize, + data: UnsafeCell, +} + +/// A guard that provides mutable data access. +/// +/// When the guard falls out of scope it will release the lock. +pub struct FairMutexGuard<'a, T: ?Sized + 'a> { + lock: &'a AtomicUsize, + data: *mut T, +} + +/// A handle that indicates that we have been trying to acquire the lock for a while. +/// +/// This handle is used to prevent starvation. +pub struct Starvation<'a, T: ?Sized + 'a, R> { + lock: &'a FairMutex, +} + +/// Indicates whether a lock was rejected due to the lock being held by another thread or due to starvation. +#[derive(Debug)] +pub enum LockRejectReason { + /// The lock was rejected due to the lock being held by another thread. + Locked, + + /// The lock was rejected due to starvation. + Starved, +} + +// Same unsafe impls as `std::sync::Mutex` +unsafe impl Sync for FairMutex {} +unsafe impl Send for FairMutex {} + +unsafe impl Sync for FairMutexGuard<'_, T> {} +unsafe impl Send for FairMutexGuard<'_, T> {} + +impl FairMutex { + /// Creates a new [`FairMutex`] wrapping the supplied data. + /// + /// # Example + /// + /// ``` + /// use spin::mutex::FairMutex; + /// + /// static MUTEX: FairMutex<()> = FairMutex::<_>::new(()); + /// + /// fn demo() { + /// let lock = MUTEX.lock(); + /// // do something with lock + /// drop(lock); + /// } + /// ``` + #[inline(always)] + pub const fn new(data: T) -> Self { + FairMutex { + lock: AtomicUsize::new(0), + data: UnsafeCell::new(data), + phantom: PhantomData, + } + } + + /// Consumes this [`FairMutex`] and unwraps the underlying data. + /// + /// # Example + /// + /// ``` + /// let lock = spin::mutex::FairMutex::<_>::new(42); + /// assert_eq!(42, lock.into_inner()); + /// ``` + #[inline(always)] + pub fn into_inner(self) -> T { + // We know statically that there are no outstanding references to + // `self` so there's no need to lock. + let FairMutex { data, .. } = self; + data.into_inner() + } + + /// Returns a mutable pointer to the underlying data. + /// + /// This is mostly meant to be used for applications which require manual unlocking, but where + /// storing both the lock and the pointer to the inner data gets inefficient. + /// + /// # Example + /// ``` + /// let lock = spin::mutex::FairMutex::<_>::new(42); + /// + /// unsafe { + /// core::mem::forget(lock.lock()); + /// + /// assert_eq!(lock.as_mut_ptr().read(), 42); + /// lock.as_mut_ptr().write(58); + /// + /// lock.force_unlock(); + /// } + /// + /// assert_eq!(*lock.lock(), 58); + /// + /// ``` + #[inline(always)] + pub fn as_mut_ptr(&self) -> *mut T { + self.data.get() + } +} + +impl FairMutex { + /// Locks the [`FairMutex`] and returns a guard that permits access to the inner data. + /// + /// The returned value may be dereferenced for data access + /// and the lock will be dropped when the guard falls out of scope. + /// + /// ``` + /// let lock = spin::mutex::FairMutex::<_>::new(0); + /// { + /// let mut data = lock.lock(); + /// // The lock is now locked and the data can be accessed + /// *data += 1; + /// // The lock is implicitly dropped at the end of the scope + /// } + /// ``` + #[inline(always)] + pub fn lock(&self) -> FairMutexGuard { + // Can fail to lock even if the spinlock is not locked. May be more efficient than `try_lock` + // when called in a loop. + let mut spins = 0; + while self + .lock + .compare_exchange_weak(0, 1, Ordering::Acquire, Ordering::Relaxed) + .is_err() + { + // Wait until the lock looks unlocked before retrying + while self.is_locked() { + R::relax(); + + // If we've been spinning for a while, switch to a fairer strategy that will prevent + // newer users from stealing our lock from us. + if spins > STARVATION_SPINS { + return self.starve().lock(); + } + spins += 1; + } + } + + FairMutexGuard { + lock: &self.lock, + data: unsafe { &mut *self.data.get() }, + } + } +} + +impl FairMutex { + /// Returns `true` if the lock is currently held. + /// + /// # Safety + /// + /// This function provides no synchronization guarantees and so its result should be considered 'out of date' + /// the instant it is called. Do not use it for synchronization purposes. However, it may be useful as a heuristic. + #[inline(always)] + pub fn is_locked(&self) -> bool { + self.lock.load(Ordering::Relaxed) & LOCKED != 0 + } + + /// Force unlock this [`FairMutex`]. + /// + /// # Safety + /// + /// This is *extremely* unsafe if the lock is not held by the current + /// thread. However, this can be useful in some instances for exposing the + /// lock to FFI that doesn't know how to deal with RAII. + #[inline(always)] + pub unsafe fn force_unlock(&self) { + self.lock.fetch_and(!LOCKED, Ordering::Release); + } + + /// Try to lock this [`FairMutex`], returning a lock guard if successful. + /// + /// # Example + /// + /// ``` + /// let lock = spin::mutex::FairMutex::<_>::new(42); + /// + /// let maybe_guard = lock.try_lock(); + /// assert!(maybe_guard.is_some()); + /// + /// // `maybe_guard` is still held, so the second call fails + /// let maybe_guard2 = lock.try_lock(); + /// assert!(maybe_guard2.is_none()); + /// ``` + #[inline(always)] + pub fn try_lock(&self) -> Option> { + self.try_lock_starver().ok() + } + + /// Tries to lock this [`FairMutex`] and returns a result that indicates whether the lock was + /// rejected due to a starver or not. + #[inline(always)] + pub fn try_lock_starver(&self) -> Result, LockRejectReason> { + match self + .lock + .compare_exchange(0, LOCKED, Ordering::Acquire, Ordering::Relaxed) + .unwrap_or_else(|x| x) + { + 0 => Ok(FairMutexGuard { + lock: &self.lock, + data: unsafe { &mut *self.data.get() }, + }), + LOCKED => Err(LockRejectReason::Locked), + _ => Err(LockRejectReason::Starved), + } + } + + /// Indicates that the current user has been waiting for the lock for a while + /// and that the lock should yield to this thread over a newly arriving thread. + /// + /// # Example + /// + /// ``` + /// let lock = spin::mutex::FairMutex::<_>::new(42); + /// + /// // Lock the mutex to simulate it being used by another user. + /// let guard1 = lock.lock(); + /// + /// // Try to lock the mutex. + /// let guard2 = lock.try_lock(); + /// assert!(guard2.is_none()); + /// + /// // Wait for a while. + /// wait_for_a_while(); + /// + /// // We are now starved, indicate as such. + /// let starve = lock.starve(); + /// + /// // Once the lock is released, another user trying to lock it will + /// // fail. + /// drop(guard1); + /// let guard3 = lock.try_lock(); + /// assert!(guard3.is_none()); + /// + /// // However, we will be able to lock it. + /// let guard4 = starve.try_lock(); + /// assert!(guard4.is_ok()); + /// + /// # fn wait_for_a_while() {} + /// ``` + pub fn starve(&self) -> Starvation<'_, T, R> { + // Add a new starver to the state. + if self.lock.fetch_add(STARVED, Ordering::Relaxed) > (core::isize::MAX - 1) as usize { + // In the event of a potential lock overflow, abort. + crate::abort(); + } + + Starvation { lock: self } + } + + /// Returns a mutable reference to the underlying data. + /// + /// Since this call borrows the [`FairMutex`] mutably, and a mutable reference is guaranteed to be exclusive in + /// Rust, no actual locking needs to take place -- the mutable borrow statically guarantees no locks exist. As + /// such, this is a 'zero-cost' operation. + /// + /// # Example + /// + /// ``` + /// let mut lock = spin::mutex::FairMutex::<_>::new(0); + /// *lock.get_mut() = 10; + /// assert_eq!(*lock.lock(), 10); + /// ``` + #[inline(always)] + pub fn get_mut(&mut self) -> &mut T { + // We know statically that there are no other references to `self`, so + // there's no need to lock the inner mutex. + unsafe { &mut *self.data.get() } + } +} + +impl fmt::Debug for FairMutex { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + struct LockWrapper<'a, T: ?Sized + fmt::Debug>(Option>); + + impl fmt::Debug for LockWrapper<'_, T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match &self.0 { + Some(guard) => fmt::Debug::fmt(guard, f), + None => f.write_str(""), + } + } + } + + f.debug_struct("FairMutex") + .field("data", &LockWrapper(self.try_lock())) + .finish() + } +} + +impl Default for FairMutex { + fn default() -> Self { + Self::new(Default::default()) + } +} + +impl From for FairMutex { + fn from(data: T) -> Self { + Self::new(data) + } +} + +impl<'a, T: ?Sized> FairMutexGuard<'a, T> { + /// Leak the lock guard, yielding a mutable reference to the underlying data. + /// + /// Note that this function will permanently lock the original [`FairMutex`]. + /// + /// ``` + /// let mylock = spin::mutex::FairMutex::<_>::new(0); + /// + /// let data: &mut i32 = spin::mutex::FairMutexGuard::leak(mylock.lock()); + /// + /// *data = 1; + /// assert_eq!(*data, 1); + /// ``` + #[inline(always)] + pub fn leak(this: Self) -> &'a mut T { + // Use ManuallyDrop to avoid stacked-borrow invalidation + let mut this = ManuallyDrop::new(this); + // We know statically that only we are referencing data + unsafe { &mut *this.data } + } +} + +impl<'a, T: ?Sized + fmt::Debug> fmt::Debug for FairMutexGuard<'a, T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Debug::fmt(&**self, f) + } +} + +impl<'a, T: ?Sized + fmt::Display> fmt::Display for FairMutexGuard<'a, T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Display::fmt(&**self, f) + } +} + +impl<'a, T: ?Sized> Deref for FairMutexGuard<'a, T> { + type Target = T; + fn deref(&self) -> &T { + // We know statically that only we are referencing data + unsafe { &*self.data } + } +} + +impl<'a, T: ?Sized> DerefMut for FairMutexGuard<'a, T> { + fn deref_mut(&mut self) -> &mut T { + // We know statically that only we are referencing data + unsafe { &mut *self.data } + } +} + +impl<'a, T: ?Sized> Drop for FairMutexGuard<'a, T> { + /// The dropping of the MutexGuard will release the lock it was created from. + fn drop(&mut self) { + self.lock.fetch_and(!LOCKED, Ordering::Release); + } +} + +impl<'a, T: ?Sized, R> Starvation<'a, T, R> { + /// Attempts the lock the mutex if we are the only starving user. + /// + /// This allows another user to lock the mutex if they are starving as well. + pub fn try_lock_fair(self) -> Result, Self> { + // Try to lock the mutex. + if self + .lock + .lock + .compare_exchange( + STARVED, + STARVED | LOCKED, + Ordering::Acquire, + Ordering::Relaxed, + ) + .is_ok() + { + // We are the only starving user, lock the mutex. + Ok(FairMutexGuard { + lock: &self.lock.lock, + data: self.lock.data.get(), + }) + } else { + // Another user is starving, fail. + Err(self) + } + } + + /// Attempts to lock the mutex. + /// + /// If the lock is currently held by another thread, this will return `None`. + /// + /// # Example + /// + /// ``` + /// let lock = spin::mutex::FairMutex::<_>::new(42); + /// + /// // Lock the mutex to simulate it being used by another user. + /// let guard1 = lock.lock(); + /// + /// // Try to lock the mutex. + /// let guard2 = lock.try_lock(); + /// assert!(guard2.is_none()); + /// + /// // Wait for a while. + /// wait_for_a_while(); + /// + /// // We are now starved, indicate as such. + /// let starve = lock.starve(); + /// + /// // Once the lock is released, another user trying to lock it will + /// // fail. + /// drop(guard1); + /// let guard3 = lock.try_lock(); + /// assert!(guard3.is_none()); + /// + /// // However, we will be able to lock it. + /// let guard4 = starve.try_lock(); + /// assert!(guard4.is_ok()); + /// + /// # fn wait_for_a_while() {} + /// ``` + pub fn try_lock(self) -> Result, Self> { + // Try to lock the mutex. + if self.lock.lock.fetch_or(LOCKED, Ordering::Acquire) & LOCKED == 0 { + // We have successfully locked the mutex. + // By dropping `self` here, we decrement the starvation count. + Ok(FairMutexGuard { + lock: &self.lock.lock, + data: self.lock.data.get(), + }) + } else { + Err(self) + } + } +} + +impl<'a, T: ?Sized, R: RelaxStrategy> Starvation<'a, T, R> { + /// Locks the mutex. + pub fn lock(mut self) -> FairMutexGuard<'a, T> { + // Try to lock the mutex. + loop { + match self.try_lock() { + Ok(lock) => return lock, + Err(starve) => self = starve, + } + + // Relax until the lock is released. + while self.lock.is_locked() { + R::relax(); + } + } + } +} + +impl<'a, T: ?Sized, R> Drop for Starvation<'a, T, R> { + fn drop(&mut self) { + // As there is no longer a user being starved, we decrement the starver count. + self.lock.lock.fetch_sub(STARVED, Ordering::Release); + } +} + +impl fmt::Display for LockRejectReason { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self { + LockRejectReason::Locked => write!(f, "locked"), + LockRejectReason::Starved => write!(f, "starved"), + } + } +} + +#[cfg(feature = "std")] +impl std::error::Error for LockRejectReason {} + +#[cfg(feature = "lock_api")] +unsafe impl lock_api_crate::RawMutex for FairMutex<(), R> { + type GuardMarker = lock_api_crate::GuardSend; + + const INIT: Self = Self::new(()); + + fn lock(&self) { + // Prevent guard destructor running + core::mem::forget(Self::lock(self)); + } + + fn try_lock(&self) -> bool { + // Prevent guard destructor running + Self::try_lock(self).map(core::mem::forget).is_some() + } + + unsafe fn unlock(&self) { + self.force_unlock(); + } + + fn is_locked(&self) -> bool { + Self::is_locked(self) + } +} + +#[cfg(test)] +mod tests { + use std::prelude::v1::*; + + use std::sync::atomic::{AtomicUsize, Ordering}; + use std::sync::mpsc::channel; + use std::sync::Arc; + use std::thread; + + type FairMutex = super::FairMutex; + + #[derive(Eq, PartialEq, Debug)] + struct NonCopy(i32); + + #[test] + fn smoke() { + let m = FairMutex::<_>::new(()); + drop(m.lock()); + drop(m.lock()); + } + + #[test] + fn lots_and_lots() { + static M: FairMutex<()> = FairMutex::<_>::new(()); + static mut CNT: u32 = 0; + const J: u32 = 1000; + const K: u32 = 3; + + fn inc() { + for _ in 0..J { + unsafe { + let _g = M.lock(); + CNT += 1; + } + } + } + + let (tx, rx) = channel(); + for _ in 0..K { + let tx2 = tx.clone(); + thread::spawn(move || { + inc(); + tx2.send(()).unwrap(); + }); + let tx2 = tx.clone(); + thread::spawn(move || { + inc(); + tx2.send(()).unwrap(); + }); + } + + drop(tx); + for _ in 0..2 * K { + rx.recv().unwrap(); + } + assert_eq!(unsafe { CNT }, J * K * 2); + } + + #[test] + fn try_lock() { + let mutex = FairMutex::<_>::new(42); + + // First lock succeeds + let a = mutex.try_lock(); + assert_eq!(a.as_ref().map(|r| **r), Some(42)); + + // Additional lock fails + let b = mutex.try_lock(); + assert!(b.is_none()); + + // After dropping lock, it succeeds again + ::core::mem::drop(a); + let c = mutex.try_lock(); + assert_eq!(c.as_ref().map(|r| **r), Some(42)); + } + + #[test] + fn test_into_inner() { + let m = FairMutex::<_>::new(NonCopy(10)); + assert_eq!(m.into_inner(), NonCopy(10)); + } + + #[test] + fn test_into_inner_drop() { + struct Foo(Arc); + impl Drop for Foo { + fn drop(&mut self) { + self.0.fetch_add(1, Ordering::SeqCst); + } + } + let num_drops = Arc::new(AtomicUsize::new(0)); + let m = FairMutex::<_>::new(Foo(num_drops.clone())); + assert_eq!(num_drops.load(Ordering::SeqCst), 0); + { + let _inner = m.into_inner(); + assert_eq!(num_drops.load(Ordering::SeqCst), 0); + } + assert_eq!(num_drops.load(Ordering::SeqCst), 1); + } + + #[test] + fn test_mutex_arc_nested() { + // Tests nested mutexes and access + // to underlying data. + let arc = Arc::new(FairMutex::<_>::new(1)); + let arc2 = Arc::new(FairMutex::<_>::new(arc)); + let (tx, rx) = channel(); + let _t = thread::spawn(move || { + let lock = arc2.lock(); + let lock2 = lock.lock(); + assert_eq!(*lock2, 1); + tx.send(()).unwrap(); + }); + rx.recv().unwrap(); + } + + #[test] + fn test_mutex_arc_access_in_unwind() { + let arc = Arc::new(FairMutex::<_>::new(1)); + let arc2 = arc.clone(); + let _ = thread::spawn(move || -> () { + struct Unwinder { + i: Arc>, + } + impl Drop for Unwinder { + fn drop(&mut self) { + *self.i.lock() += 1; + } + } + let _u = Unwinder { i: arc2 }; + panic!(); + }) + .join(); + let lock = arc.lock(); + assert_eq!(*lock, 2); + } + + #[test] + fn test_mutex_unsized() { + let mutex: &FairMutex<[i32]> = &FairMutex::<_>::new([1, 2, 3]); + { + let b = &mut *mutex.lock(); + b[0] = 4; + b[2] = 5; + } + let comp: &[i32] = &[4, 2, 5]; + assert_eq!(&*mutex.lock(), comp); + } + + #[test] + fn test_mutex_force_lock() { + let lock = FairMutex::<_>::new(()); + ::std::mem::forget(lock.lock()); + unsafe { + lock.force_unlock(); + } + assert!(lock.try_lock().is_some()); + } +} diff -Nru temporalio-1.3.0/vendor/spin/src/mutex/spin.rs temporalio-1.3.0/vendor/spin/src/mutex/spin.rs --- temporalio-1.3.0/vendor/spin/src/mutex/spin.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/spin/src/mutex/spin.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,543 @@ +//! A naïve spinning mutex. +//! +//! Waiting threads hammer an atomic variable until it becomes available. Best-case latency is low, but worst-case +//! latency is theoretically infinite. + +use crate::{ + atomic::{AtomicBool, Ordering}, + RelaxStrategy, Spin, +}; +use core::{ + cell::UnsafeCell, + fmt, + marker::PhantomData, + mem::ManuallyDrop, + ops::{Deref, DerefMut}, +}; + +/// A [spin lock](https://en.m.wikipedia.org/wiki/Spinlock) providing mutually exclusive access to data. +/// +/// # Example +/// +/// ``` +/// use spin; +/// +/// let lock = spin::mutex::SpinMutex::<_>::new(0); +/// +/// // Modify the data +/// *lock.lock() = 2; +/// +/// // Read the data +/// let answer = *lock.lock(); +/// assert_eq!(answer, 2); +/// ``` +/// +/// # Thread safety example +/// +/// ``` +/// use spin; +/// use std::sync::{Arc, Barrier}; +/// +/// let thread_count = 1000; +/// let spin_mutex = Arc::new(spin::mutex::SpinMutex::<_>::new(0)); +/// +/// // We use a barrier to ensure the readout happens after all writing +/// let barrier = Arc::new(Barrier::new(thread_count + 1)); +/// +/// # let mut ts = Vec::new(); +/// for _ in (0..thread_count) { +/// let my_barrier = barrier.clone(); +/// let my_lock = spin_mutex.clone(); +/// # let t = +/// std::thread::spawn(move || { +/// let mut guard = my_lock.lock(); +/// *guard += 1; +/// +/// // Release the lock to prevent a deadlock +/// drop(guard); +/// my_barrier.wait(); +/// }); +/// # ts.push(t); +/// } +/// +/// barrier.wait(); +/// +/// let answer = { *spin_mutex.lock() }; +/// assert_eq!(answer, thread_count); +/// +/// # for t in ts { +/// # t.join().unwrap(); +/// # } +/// ``` +pub struct SpinMutex { + phantom: PhantomData, + pub(crate) lock: AtomicBool, + data: UnsafeCell, +} + +/// A guard that provides mutable data access. +/// +/// When the guard falls out of scope it will release the lock. +pub struct SpinMutexGuard<'a, T: ?Sized + 'a> { + lock: &'a AtomicBool, + data: *mut T, +} + +// Same unsafe impls as `std::sync::Mutex` +unsafe impl Sync for SpinMutex {} +unsafe impl Send for SpinMutex {} + +unsafe impl Sync for SpinMutexGuard<'_, T> {} +unsafe impl Send for SpinMutexGuard<'_, T> {} + +impl SpinMutex { + /// Creates a new [`SpinMutex`] wrapping the supplied data. + /// + /// # Example + /// + /// ``` + /// use spin::mutex::SpinMutex; + /// + /// static MUTEX: SpinMutex<()> = SpinMutex::<_>::new(()); + /// + /// fn demo() { + /// let lock = MUTEX.lock(); + /// // do something with lock + /// drop(lock); + /// } + /// ``` + #[inline(always)] + pub const fn new(data: T) -> Self { + SpinMutex { + lock: AtomicBool::new(false), + data: UnsafeCell::new(data), + phantom: PhantomData, + } + } + + /// Consumes this [`SpinMutex`] and unwraps the underlying data. + /// + /// # Example + /// + /// ``` + /// let lock = spin::mutex::SpinMutex::<_>::new(42); + /// assert_eq!(42, lock.into_inner()); + /// ``` + #[inline(always)] + pub fn into_inner(self) -> T { + // We know statically that there are no outstanding references to + // `self` so there's no need to lock. + let SpinMutex { data, .. } = self; + data.into_inner() + } + + /// Returns a mutable pointer to the underlying data. + /// + /// This is mostly meant to be used for applications which require manual unlocking, but where + /// storing both the lock and the pointer to the inner data gets inefficient. + /// + /// # Example + /// ``` + /// let lock = spin::mutex::SpinMutex::<_>::new(42); + /// + /// unsafe { + /// core::mem::forget(lock.lock()); + /// + /// assert_eq!(lock.as_mut_ptr().read(), 42); + /// lock.as_mut_ptr().write(58); + /// + /// lock.force_unlock(); + /// } + /// + /// assert_eq!(*lock.lock(), 58); + /// + /// ``` + #[inline(always)] + pub fn as_mut_ptr(&self) -> *mut T { + self.data.get() + } +} + +impl SpinMutex { + /// Locks the [`SpinMutex`] and returns a guard that permits access to the inner data. + /// + /// The returned value may be dereferenced for data access + /// and the lock will be dropped when the guard falls out of scope. + /// + /// ``` + /// let lock = spin::mutex::SpinMutex::<_>::new(0); + /// { + /// let mut data = lock.lock(); + /// // The lock is now locked and the data can be accessed + /// *data += 1; + /// // The lock is implicitly dropped at the end of the scope + /// } + /// ``` + #[inline(always)] + pub fn lock(&self) -> SpinMutexGuard { + // Can fail to lock even if the spinlock is not locked. May be more efficient than `try_lock` + // when called in a loop. + while self + .lock + .compare_exchange_weak(false, true, Ordering::Acquire, Ordering::Relaxed) + .is_err() + { + // Wait until the lock looks unlocked before retrying + while self.is_locked() { + R::relax(); + } + } + + SpinMutexGuard { + lock: &self.lock, + data: unsafe { &mut *self.data.get() }, + } + } +} + +impl SpinMutex { + /// Returns `true` if the lock is currently held. + /// + /// # Safety + /// + /// This function provides no synchronization guarantees and so its result should be considered 'out of date' + /// the instant it is called. Do not use it for synchronization purposes. However, it may be useful as a heuristic. + #[inline(always)] + pub fn is_locked(&self) -> bool { + self.lock.load(Ordering::Relaxed) + } + + /// Force unlock this [`SpinMutex`]. + /// + /// # Safety + /// + /// This is *extremely* unsafe if the lock is not held by the current + /// thread. However, this can be useful in some instances for exposing the + /// lock to FFI that doesn't know how to deal with RAII. + #[inline(always)] + pub unsafe fn force_unlock(&self) { + self.lock.store(false, Ordering::Release); + } + + /// Try to lock this [`SpinMutex`], returning a lock guard if successful. + /// + /// # Example + /// + /// ``` + /// let lock = spin::mutex::SpinMutex::<_>::new(42); + /// + /// let maybe_guard = lock.try_lock(); + /// assert!(maybe_guard.is_some()); + /// + /// // `maybe_guard` is still held, so the second call fails + /// let maybe_guard2 = lock.try_lock(); + /// assert!(maybe_guard2.is_none()); + /// ``` + #[inline(always)] + pub fn try_lock(&self) -> Option> { + // The reason for using a strong compare_exchange is explained here: + // https://github.com/Amanieu/parking_lot/pull/207#issuecomment-575869107 + if self + .lock + .compare_exchange(false, true, Ordering::Acquire, Ordering::Relaxed) + .is_ok() + { + Some(SpinMutexGuard { + lock: &self.lock, + data: unsafe { &mut *self.data.get() }, + }) + } else { + None + } + } + + /// Returns a mutable reference to the underlying data. + /// + /// Since this call borrows the [`SpinMutex`] mutably, and a mutable reference is guaranteed to be exclusive in + /// Rust, no actual locking needs to take place -- the mutable borrow statically guarantees no locks exist. As + /// such, this is a 'zero-cost' operation. + /// + /// # Example + /// + /// ``` + /// let mut lock = spin::mutex::SpinMutex::<_>::new(0); + /// *lock.get_mut() = 10; + /// assert_eq!(*lock.lock(), 10); + /// ``` + #[inline(always)] + pub fn get_mut(&mut self) -> &mut T { + // We know statically that there are no other references to `self`, so + // there's no need to lock the inner mutex. + unsafe { &mut *self.data.get() } + } +} + +impl fmt::Debug for SpinMutex { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self.try_lock() { + Some(guard) => write!(f, "Mutex {{ data: ") + .and_then(|()| (&*guard).fmt(f)) + .and_then(|()| write!(f, "}}")), + None => write!(f, "Mutex {{ }}"), + } + } +} + +impl Default for SpinMutex { + fn default() -> Self { + Self::new(Default::default()) + } +} + +impl From for SpinMutex { + fn from(data: T) -> Self { + Self::new(data) + } +} + +impl<'a, T: ?Sized> SpinMutexGuard<'a, T> { + /// Leak the lock guard, yielding a mutable reference to the underlying data. + /// + /// Note that this function will permanently lock the original [`SpinMutex`]. + /// + /// ``` + /// let mylock = spin::mutex::SpinMutex::<_>::new(0); + /// + /// let data: &mut i32 = spin::mutex::SpinMutexGuard::leak(mylock.lock()); + /// + /// *data = 1; + /// assert_eq!(*data, 1); + /// ``` + #[inline(always)] + pub fn leak(this: Self) -> &'a mut T { + // Use ManuallyDrop to avoid stacked-borrow invalidation + let mut this = ManuallyDrop::new(this); + // We know statically that only we are referencing data + unsafe { &mut *this.data } + } +} + +impl<'a, T: ?Sized + fmt::Debug> fmt::Debug for SpinMutexGuard<'a, T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Debug::fmt(&**self, f) + } +} + +impl<'a, T: ?Sized + fmt::Display> fmt::Display for SpinMutexGuard<'a, T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Display::fmt(&**self, f) + } +} + +impl<'a, T: ?Sized> Deref for SpinMutexGuard<'a, T> { + type Target = T; + fn deref(&self) -> &T { + // We know statically that only we are referencing data + unsafe { &*self.data } + } +} + +impl<'a, T: ?Sized> DerefMut for SpinMutexGuard<'a, T> { + fn deref_mut(&mut self) -> &mut T { + // We know statically that only we are referencing data + unsafe { &mut *self.data } + } +} + +impl<'a, T: ?Sized> Drop for SpinMutexGuard<'a, T> { + /// The dropping of the MutexGuard will release the lock it was created from. + fn drop(&mut self) { + self.lock.store(false, Ordering::Release); + } +} + +#[cfg(feature = "lock_api")] +unsafe impl lock_api_crate::RawMutex for SpinMutex<(), R> { + type GuardMarker = lock_api_crate::GuardSend; + + const INIT: Self = Self::new(()); + + fn lock(&self) { + // Prevent guard destructor running + core::mem::forget(Self::lock(self)); + } + + fn try_lock(&self) -> bool { + // Prevent guard destructor running + Self::try_lock(self).map(core::mem::forget).is_some() + } + + unsafe fn unlock(&self) { + self.force_unlock(); + } + + fn is_locked(&self) -> bool { + Self::is_locked(self) + } +} + +#[cfg(test)] +mod tests { + use std::prelude::v1::*; + + use std::sync::atomic::{AtomicUsize, Ordering}; + use std::sync::mpsc::channel; + use std::sync::Arc; + use std::thread; + + type SpinMutex = super::SpinMutex; + + #[derive(Eq, PartialEq, Debug)] + struct NonCopy(i32); + + #[test] + fn smoke() { + let m = SpinMutex::<_>::new(()); + drop(m.lock()); + drop(m.lock()); + } + + #[test] + fn lots_and_lots() { + static M: SpinMutex<()> = SpinMutex::<_>::new(()); + static mut CNT: u32 = 0; + const J: u32 = 1000; + const K: u32 = 3; + + fn inc() { + for _ in 0..J { + unsafe { + let _g = M.lock(); + CNT += 1; + } + } + } + + let (tx, rx) = channel(); + let mut ts = Vec::new(); + for _ in 0..K { + let tx2 = tx.clone(); + ts.push(thread::spawn(move || { + inc(); + tx2.send(()).unwrap(); + })); + let tx2 = tx.clone(); + ts.push(thread::spawn(move || { + inc(); + tx2.send(()).unwrap(); + })); + } + + drop(tx); + for _ in 0..2 * K { + rx.recv().unwrap(); + } + assert_eq!(unsafe { CNT }, J * K * 2); + + for t in ts { + t.join().unwrap(); + } + } + + #[test] + fn try_lock() { + let mutex = SpinMutex::<_>::new(42); + + // First lock succeeds + let a = mutex.try_lock(); + assert_eq!(a.as_ref().map(|r| **r), Some(42)); + + // Additional lock fails + let b = mutex.try_lock(); + assert!(b.is_none()); + + // After dropping lock, it succeeds again + ::core::mem::drop(a); + let c = mutex.try_lock(); + assert_eq!(c.as_ref().map(|r| **r), Some(42)); + } + + #[test] + fn test_into_inner() { + let m = SpinMutex::<_>::new(NonCopy(10)); + assert_eq!(m.into_inner(), NonCopy(10)); + } + + #[test] + fn test_into_inner_drop() { + struct Foo(Arc); + impl Drop for Foo { + fn drop(&mut self) { + self.0.fetch_add(1, Ordering::SeqCst); + } + } + let num_drops = Arc::new(AtomicUsize::new(0)); + let m = SpinMutex::<_>::new(Foo(num_drops.clone())); + assert_eq!(num_drops.load(Ordering::SeqCst), 0); + { + let _inner = m.into_inner(); + assert_eq!(num_drops.load(Ordering::SeqCst), 0); + } + assert_eq!(num_drops.load(Ordering::SeqCst), 1); + } + + #[test] + fn test_mutex_arc_nested() { + // Tests nested mutexes and access + // to underlying data. + let arc = Arc::new(SpinMutex::<_>::new(1)); + let arc2 = Arc::new(SpinMutex::<_>::new(arc)); + let (tx, rx) = channel(); + let t = thread::spawn(move || { + let lock = arc2.lock(); + let lock2 = lock.lock(); + assert_eq!(*lock2, 1); + tx.send(()).unwrap(); + }); + rx.recv().unwrap(); + t.join().unwrap(); + } + + #[test] + fn test_mutex_arc_access_in_unwind() { + let arc = Arc::new(SpinMutex::<_>::new(1)); + let arc2 = arc.clone(); + let _ = thread::spawn(move || -> () { + struct Unwinder { + i: Arc>, + } + impl Drop for Unwinder { + fn drop(&mut self) { + *self.i.lock() += 1; + } + } + let _u = Unwinder { i: arc2 }; + panic!(); + }) + .join(); + let lock = arc.lock(); + assert_eq!(*lock, 2); + } + + #[test] + fn test_mutex_unsized() { + let mutex: &SpinMutex<[i32]> = &SpinMutex::<_>::new([1, 2, 3]); + { + let b = &mut *mutex.lock(); + b[0] = 4; + b[2] = 5; + } + let comp: &[i32] = &[4, 2, 5]; + assert_eq!(&*mutex.lock(), comp); + } + + #[test] + fn test_mutex_force_lock() { + let lock = SpinMutex::<_>::new(()); + ::std::mem::forget(lock.lock()); + unsafe { + lock.force_unlock(); + } + assert!(lock.try_lock().is_some()); + } +} diff -Nru temporalio-1.3.0/vendor/spin/src/mutex/ticket.rs temporalio-1.3.0/vendor/spin/src/mutex/ticket.rs --- temporalio-1.3.0/vendor/spin/src/mutex/ticket.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/spin/src/mutex/ticket.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,537 @@ +//! A ticket-based mutex. +//! +//! Waiting threads take a 'ticket' from the lock in the order they arrive and gain access to the lock when their +//! ticket is next in the queue. Best-case latency is slightly worse than a regular spinning mutex, but worse-case +//! latency is infinitely better. Waiting threads simply need to wait for all threads that come before them in the +//! queue to finish. + +use crate::{ + atomic::{AtomicUsize, Ordering}, + RelaxStrategy, Spin, +}; +use core::{ + cell::UnsafeCell, + fmt, + marker::PhantomData, + ops::{Deref, DerefMut}, +}; + +/// A spin-based [ticket lock](https://en.wikipedia.org/wiki/Ticket_lock) providing mutually exclusive access to data. +/// +/// A ticket lock is analogous to a queue management system for lock requests. When a thread tries to take a lock, it +/// is assigned a 'ticket'. It then spins until its ticket becomes next in line. When the lock guard is released, the +/// next ticket will be processed. +/// +/// Ticket locks significantly reduce the worse-case performance of locking at the cost of slightly higher average-time +/// overhead. +/// +/// # Example +/// +/// ``` +/// use spin; +/// +/// let lock = spin::mutex::TicketMutex::<_>::new(0); +/// +/// // Modify the data +/// *lock.lock() = 2; +/// +/// // Read the data +/// let answer = *lock.lock(); +/// assert_eq!(answer, 2); +/// ``` +/// +/// # Thread safety example +/// +/// ``` +/// use spin; +/// use std::sync::{Arc, Barrier}; +/// +/// let thread_count = 1000; +/// let spin_mutex = Arc::new(spin::mutex::TicketMutex::<_>::new(0)); +/// +/// // We use a barrier to ensure the readout happens after all writing +/// let barrier = Arc::new(Barrier::new(thread_count + 1)); +/// +/// for _ in (0..thread_count) { +/// let my_barrier = barrier.clone(); +/// let my_lock = spin_mutex.clone(); +/// std::thread::spawn(move || { +/// let mut guard = my_lock.lock(); +/// *guard += 1; +/// +/// // Release the lock to prevent a deadlock +/// drop(guard); +/// my_barrier.wait(); +/// }); +/// } +/// +/// barrier.wait(); +/// +/// let answer = { *spin_mutex.lock() }; +/// assert_eq!(answer, thread_count); +/// ``` +pub struct TicketMutex { + phantom: PhantomData, + next_ticket: AtomicUsize, + next_serving: AtomicUsize, + data: UnsafeCell, +} + +/// A guard that protects some data. +/// +/// When the guard is dropped, the next ticket will be processed. +pub struct TicketMutexGuard<'a, T: ?Sized + 'a> { + next_serving: &'a AtomicUsize, + ticket: usize, + data: &'a mut T, +} + +unsafe impl Sync for TicketMutex {} +unsafe impl Send for TicketMutex {} + +impl TicketMutex { + /// Creates a new [`TicketMutex`] wrapping the supplied data. + /// + /// # Example + /// + /// ``` + /// use spin::mutex::TicketMutex; + /// + /// static MUTEX: TicketMutex<()> = TicketMutex::<_>::new(()); + /// + /// fn demo() { + /// let lock = MUTEX.lock(); + /// // do something with lock + /// drop(lock); + /// } + /// ``` + #[inline(always)] + pub const fn new(data: T) -> Self { + Self { + phantom: PhantomData, + next_ticket: AtomicUsize::new(0), + next_serving: AtomicUsize::new(0), + data: UnsafeCell::new(data), + } + } + + /// Consumes this [`TicketMutex`] and unwraps the underlying data. + /// + /// # Example + /// + /// ``` + /// let lock = spin::mutex::TicketMutex::<_>::new(42); + /// assert_eq!(42, lock.into_inner()); + /// ``` + #[inline(always)] + pub fn into_inner(self) -> T { + self.data.into_inner() + } + /// Returns a mutable pointer to the underying data. + /// + /// This is mostly meant to be used for applications which require manual unlocking, but where + /// storing both the lock and the pointer to the inner data gets inefficient. + /// + /// # Example + /// ``` + /// let lock = spin::mutex::SpinMutex::<_>::new(42); + /// + /// unsafe { + /// core::mem::forget(lock.lock()); + /// + /// assert_eq!(lock.as_mut_ptr().read(), 42); + /// lock.as_mut_ptr().write(58); + /// + /// lock.force_unlock(); + /// } + /// + /// assert_eq!(*lock.lock(), 58); + /// + /// ``` + #[inline(always)] + pub fn as_mut_ptr(&self) -> *mut T { + self.data.get() + } +} + +impl fmt::Debug for TicketMutex { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self.try_lock() { + Some(guard) => write!(f, "Mutex {{ data: ") + .and_then(|()| (&*guard).fmt(f)) + .and_then(|()| write!(f, "}}")), + None => write!(f, "Mutex {{ }}"), + } + } +} + +impl TicketMutex { + /// Locks the [`TicketMutex`] and returns a guard that permits access to the inner data. + /// + /// The returned data may be dereferenced for data access + /// and the lock will be dropped when the guard falls out of scope. + /// + /// ``` + /// let lock = spin::mutex::TicketMutex::<_>::new(0); + /// { + /// let mut data = lock.lock(); + /// // The lock is now locked and the data can be accessed + /// *data += 1; + /// // The lock is implicitly dropped at the end of the scope + /// } + /// ``` + #[inline(always)] + pub fn lock(&self) -> TicketMutexGuard { + let ticket = self.next_ticket.fetch_add(1, Ordering::Relaxed); + + while self.next_serving.load(Ordering::Acquire) != ticket { + R::relax(); + } + + TicketMutexGuard { + next_serving: &self.next_serving, + ticket, + // Safety + // We know that we are the next ticket to be served, + // so there's no other thread accessing the data. + // + // Every other thread has another ticket number so it's + // definitely stuck in the spin loop above. + data: unsafe { &mut *self.data.get() }, + } + } +} + +impl TicketMutex { + /// Returns `true` if the lock is currently held. + /// + /// # Safety + /// + /// This function provides no synchronization guarantees and so its result should be considered 'out of date' + /// the instant it is called. Do not use it for synchronization purposes. However, it may be useful as a heuristic. + #[inline(always)] + pub fn is_locked(&self) -> bool { + let ticket = self.next_ticket.load(Ordering::Relaxed); + self.next_serving.load(Ordering::Relaxed) != ticket + } + + /// Force unlock this [`TicketMutex`], by serving the next ticket. + /// + /// # Safety + /// + /// This is *extremely* unsafe if the lock is not held by the current + /// thread. However, this can be useful in some instances for exposing the + /// lock to FFI that doesn't know how to deal with RAII. + #[inline(always)] + pub unsafe fn force_unlock(&self) { + self.next_serving.fetch_add(1, Ordering::Release); + } + + /// Try to lock this [`TicketMutex`], returning a lock guard if successful. + /// + /// # Example + /// + /// ``` + /// let lock = spin::mutex::TicketMutex::<_>::new(42); + /// + /// let maybe_guard = lock.try_lock(); + /// assert!(maybe_guard.is_some()); + /// + /// // `maybe_guard` is still held, so the second call fails + /// let maybe_guard2 = lock.try_lock(); + /// assert!(maybe_guard2.is_none()); + /// ``` + #[inline(always)] + pub fn try_lock(&self) -> Option> { + let ticket = self + .next_ticket + .fetch_update(Ordering::SeqCst, Ordering::SeqCst, |ticket| { + if self.next_serving.load(Ordering::Acquire) == ticket { + Some(ticket + 1) + } else { + None + } + }); + + ticket.ok().map(|ticket| TicketMutexGuard { + next_serving: &self.next_serving, + ticket, + // Safety + // We have a ticket that is equal to the next_serving ticket, so we know: + // - that no other thread can have the same ticket id as this thread + // - that we are the next one to be served so we have exclusive access to the data + data: unsafe { &mut *self.data.get() }, + }) + } + + /// Returns a mutable reference to the underlying data. + /// + /// Since this call borrows the [`TicketMutex`] mutably, and a mutable reference is guaranteed to be exclusive in + /// Rust, no actual locking needs to take place -- the mutable borrow statically guarantees no locks exist. As + /// such, this is a 'zero-cost' operation. + /// + /// # Example + /// + /// ``` + /// let mut lock = spin::mutex::TicketMutex::<_>::new(0); + /// *lock.get_mut() = 10; + /// assert_eq!(*lock.lock(), 10); + /// ``` + #[inline(always)] + pub fn get_mut(&mut self) -> &mut T { + // Safety: + // We know that there are no other references to `self`, + // so it's safe to return a exclusive reference to the data. + unsafe { &mut *self.data.get() } + } +} + +impl Default for TicketMutex { + fn default() -> Self { + Self::new(Default::default()) + } +} + +impl From for TicketMutex { + fn from(data: T) -> Self { + Self::new(data) + } +} + +impl<'a, T: ?Sized> TicketMutexGuard<'a, T> { + /// Leak the lock guard, yielding a mutable reference to the underlying data. + /// + /// Note that this function will permanently lock the original [`TicketMutex`]. + /// + /// ``` + /// let mylock = spin::mutex::TicketMutex::<_>::new(0); + /// + /// let data: &mut i32 = spin::mutex::TicketMutexGuard::leak(mylock.lock()); + /// + /// *data = 1; + /// assert_eq!(*data, 1); + /// ``` + #[inline(always)] + pub fn leak(this: Self) -> &'a mut T { + let data = this.data as *mut _; // Keep it in pointer form temporarily to avoid double-aliasing + core::mem::forget(this); + unsafe { &mut *data } + } +} + +impl<'a, T: ?Sized + fmt::Debug> fmt::Debug for TicketMutexGuard<'a, T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Debug::fmt(&**self, f) + } +} + +impl<'a, T: ?Sized + fmt::Display> fmt::Display for TicketMutexGuard<'a, T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Display::fmt(&**self, f) + } +} + +impl<'a, T: ?Sized> Deref for TicketMutexGuard<'a, T> { + type Target = T; + fn deref(&self) -> &T { + self.data + } +} + +impl<'a, T: ?Sized> DerefMut for TicketMutexGuard<'a, T> { + fn deref_mut(&mut self) -> &mut T { + self.data + } +} + +impl<'a, T: ?Sized> Drop for TicketMutexGuard<'a, T> { + fn drop(&mut self) { + let new_ticket = self.ticket + 1; + self.next_serving.store(new_ticket, Ordering::Release); + } +} + +#[cfg(feature = "lock_api")] +unsafe impl lock_api_crate::RawMutex for TicketMutex<(), R> { + type GuardMarker = lock_api_crate::GuardSend; + + const INIT: Self = Self::new(()); + + fn lock(&self) { + // Prevent guard destructor running + core::mem::forget(Self::lock(self)); + } + + fn try_lock(&self) -> bool { + // Prevent guard destructor running + Self::try_lock(self).map(core::mem::forget).is_some() + } + + unsafe fn unlock(&self) { + self.force_unlock(); + } + + fn is_locked(&self) -> bool { + Self::is_locked(self) + } +} + +#[cfg(test)] +mod tests { + use std::prelude::v1::*; + + use std::sync::atomic::{AtomicUsize, Ordering}; + use std::sync::mpsc::channel; + use std::sync::Arc; + use std::thread; + + type TicketMutex = super::TicketMutex; + + #[derive(Eq, PartialEq, Debug)] + struct NonCopy(i32); + + #[test] + fn smoke() { + let m = TicketMutex::<_>::new(()); + drop(m.lock()); + drop(m.lock()); + } + + #[test] + fn lots_and_lots() { + static M: TicketMutex<()> = TicketMutex::<_>::new(()); + static mut CNT: u32 = 0; + const J: u32 = 1000; + const K: u32 = 3; + + fn inc() { + for _ in 0..J { + unsafe { + let _g = M.lock(); + CNT += 1; + } + } + } + + let (tx, rx) = channel(); + for _ in 0..K { + let tx2 = tx.clone(); + thread::spawn(move || { + inc(); + tx2.send(()).unwrap(); + }); + let tx2 = tx.clone(); + thread::spawn(move || { + inc(); + tx2.send(()).unwrap(); + }); + } + + drop(tx); + for _ in 0..2 * K { + rx.recv().unwrap(); + } + assert_eq!(unsafe { CNT }, J * K * 2); + } + + #[test] + fn try_lock() { + let mutex = TicketMutex::<_>::new(42); + + // First lock succeeds + let a = mutex.try_lock(); + assert_eq!(a.as_ref().map(|r| **r), Some(42)); + + // Additional lock fails + let b = mutex.try_lock(); + assert!(b.is_none()); + + // After dropping lock, it succeeds again + ::core::mem::drop(a); + let c = mutex.try_lock(); + assert_eq!(c.as_ref().map(|r| **r), Some(42)); + } + + #[test] + fn test_into_inner() { + let m = TicketMutex::<_>::new(NonCopy(10)); + assert_eq!(m.into_inner(), NonCopy(10)); + } + + #[test] + fn test_into_inner_drop() { + struct Foo(Arc); + impl Drop for Foo { + fn drop(&mut self) { + self.0.fetch_add(1, Ordering::SeqCst); + } + } + let num_drops = Arc::new(AtomicUsize::new(0)); + let m = TicketMutex::<_>::new(Foo(num_drops.clone())); + assert_eq!(num_drops.load(Ordering::SeqCst), 0); + { + let _inner = m.into_inner(); + assert_eq!(num_drops.load(Ordering::SeqCst), 0); + } + assert_eq!(num_drops.load(Ordering::SeqCst), 1); + } + + #[test] + fn test_mutex_arc_nested() { + // Tests nested mutexes and access + // to underlying data. + let arc = Arc::new(TicketMutex::<_>::new(1)); + let arc2 = Arc::new(TicketMutex::<_>::new(arc)); + let (tx, rx) = channel(); + let _t = thread::spawn(move || { + let lock = arc2.lock(); + let lock2 = lock.lock(); + assert_eq!(*lock2, 1); + tx.send(()).unwrap(); + }); + rx.recv().unwrap(); + } + + #[test] + fn test_mutex_arc_access_in_unwind() { + let arc = Arc::new(TicketMutex::<_>::new(1)); + let arc2 = arc.clone(); + let _ = thread::spawn(move || -> () { + struct Unwinder { + i: Arc>, + } + impl Drop for Unwinder { + fn drop(&mut self) { + *self.i.lock() += 1; + } + } + let _u = Unwinder { i: arc2 }; + panic!(); + }) + .join(); + let lock = arc.lock(); + assert_eq!(*lock, 2); + } + + #[test] + fn test_mutex_unsized() { + let mutex: &TicketMutex<[i32]> = &TicketMutex::<_>::new([1, 2, 3]); + { + let b = &mut *mutex.lock(); + b[0] = 4; + b[2] = 5; + } + let comp: &[i32] = &[4, 2, 5]; + assert_eq!(&*mutex.lock(), comp); + } + + #[test] + fn is_locked() { + let mutex = TicketMutex::<_>::new(()); + assert!(!mutex.is_locked()); + let lock = mutex.lock(); + assert!(mutex.is_locked()); + drop(lock); + assert!(!mutex.is_locked()); + } +} diff -Nru temporalio-1.3.0/vendor/spin/src/mutex.rs temporalio-1.3.0/vendor/spin/src/mutex.rs --- temporalio-1.3.0/vendor/spin/src/mutex.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/spin/src/mutex.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,60 +1,96 @@ -use core::sync::atomic::{AtomicBool, Ordering, spin_loop_hint as cpu_relax}; -use core::cell::UnsafeCell; -use core::marker::Sync; -use core::ops::{Drop, Deref, DerefMut}; -use core::fmt; -use core::option::Option::{self, None, Some}; -use core::default::Default; +//! Locks that have the same behaviour as a mutex. +//! +//! The [`Mutex`] in the root of the crate, can be configured using the `ticket_mutex` feature. +//! If it's enabled, [`TicketMutex`] and [`TicketMutexGuard`] will be re-exported as [`Mutex`] +//! and [`MutexGuard`], otherwise the [`SpinMutex`] and guard will be re-exported. +//! +//! `ticket_mutex` is disabled by default. +//! +//! [`Mutex`]: ../struct.Mutex.html +//! [`MutexGuard`]: ../struct.MutexGuard.html +//! [`TicketMutex`]: ./struct.TicketMutex.html +//! [`TicketMutexGuard`]: ./struct.TicketMutexGuard.html +//! [`SpinMutex`]: ./struct.SpinMutex.html +//! [`SpinMutexGuard`]: ./struct.SpinMutexGuard.html + +#[cfg(feature = "spin_mutex")] +#[cfg_attr(docsrs, doc(cfg(feature = "spin_mutex")))] +pub mod spin; +#[cfg(feature = "spin_mutex")] +#[cfg_attr(docsrs, doc(cfg(feature = "spin_mutex")))] +pub use self::spin::{SpinMutex, SpinMutexGuard}; + +#[cfg(feature = "ticket_mutex")] +#[cfg_attr(docsrs, doc(cfg(feature = "ticket_mutex")))] +pub mod ticket; +#[cfg(feature = "ticket_mutex")] +#[cfg_attr(docsrs, doc(cfg(feature = "ticket_mutex")))] +pub use self::ticket::{TicketMutex, TicketMutexGuard}; + +#[cfg(feature = "fair_mutex")] +#[cfg_attr(docsrs, doc(cfg(feature = "fair_mutex")))] +pub mod fair; +#[cfg(feature = "fair_mutex")] +#[cfg_attr(docsrs, doc(cfg(feature = "fair_mutex")))] +pub use self::fair::{FairMutex, FairMutexGuard, Starvation}; + +use crate::{RelaxStrategy, Spin}; +use core::{ + fmt, + ops::{Deref, DerefMut}, +}; + +#[cfg(all(not(feature = "spin_mutex"), not(feature = "use_ticket_mutex")))] +compile_error!("The `mutex` feature flag was used (perhaps through another feature?) without either `spin_mutex` or `use_ticket_mutex`. One of these is required."); + +#[cfg(all(not(feature = "use_ticket_mutex"), feature = "spin_mutex"))] +type InnerMutex = self::spin::SpinMutex; +#[cfg(all(not(feature = "use_ticket_mutex"), feature = "spin_mutex"))] +type InnerMutexGuard<'a, T> = self::spin::SpinMutexGuard<'a, T>; + +#[cfg(feature = "use_ticket_mutex")] +type InnerMutex = self::ticket::TicketMutex; +#[cfg(feature = "use_ticket_mutex")] +type InnerMutexGuard<'a, T> = self::ticket::TicketMutexGuard<'a, T>; -/// This type provides MUTual EXclusion based on spinning. +/// A spin-based lock providing mutually exclusive access to data. /// -/// # Description +/// The implementation uses either a ticket mutex or a regular spin mutex depending on whether the `spin_mutex` or +/// `ticket_mutex` feature flag is enabled. /// -/// The behaviour of these lock is similar to their namesakes in `std::sync`. they -/// differ on the following: -/// -/// - The lock will not be poisoned in case of failure; -/// -/// # Simple examples +/// # Example /// /// ``` /// use spin; -/// let spin_mutex = spin::Mutex::new(0); +/// +/// let lock = spin::Mutex::new(0); /// /// // Modify the data -/// { -/// let mut data = spin_mutex.lock(); -/// *data = 2; -/// } +/// *lock.lock() = 2; /// /// // Read the data -/// let answer = -/// { -/// let data = spin_mutex.lock(); -/// *data -/// }; -/// +/// let answer = *lock.lock(); /// assert_eq!(answer, 2); /// ``` /// -/// # Thread-safety example +/// # Thread safety example /// /// ``` /// use spin; /// use std::sync::{Arc, Barrier}; /// -/// let numthreads = 1000; +/// let thread_count = 1000; /// let spin_mutex = Arc::new(spin::Mutex::new(0)); /// /// // We use a barrier to ensure the readout happens after all writing -/// let barrier = Arc::new(Barrier::new(numthreads + 1)); +/// let barrier = Arc::new(Barrier::new(thread_count + 1)); /// -/// for _ in (0..numthreads) -/// { +/// # let mut ts = Vec::new(); +/// for _ in (0..thread_count) { /// let my_barrier = barrier.clone(); /// let my_lock = spin_mutex.clone(); -/// std::thread::spawn(move|| -/// { +/// # let t = +/// std::thread::spawn(move || { /// let mut guard = my_lock.lock(); /// *guard += 1; /// @@ -62,43 +98,45 @@ /// drop(guard); /// my_barrier.wait(); /// }); +/// # ts.push(t); /// } /// /// barrier.wait(); /// /// let answer = { *spin_mutex.lock() }; -/// assert_eq!(answer, numthreads); +/// assert_eq!(answer, thread_count); +/// +/// # for t in ts { +/// # t.join().unwrap(); +/// # } /// ``` -pub struct Mutex -{ - lock: AtomicBool, - data: UnsafeCell, +pub struct Mutex { + inner: InnerMutex, } -/// A guard to which the protected data can be accessed +unsafe impl Sync for Mutex {} +unsafe impl Send for Mutex {} + +/// A generic guard that will protect some data access and +/// uses either a ticket lock or a normal spin mutex. /// -/// When the guard falls out of scope it will release the lock. -#[derive(Debug)] -pub struct MutexGuard<'a, T: ?Sized + 'a> -{ - lock: &'a AtomicBool, - data: &'a mut T, +/// For more info see [`TicketMutexGuard`] or [`SpinMutexGuard`]. +/// +/// [`TicketMutexGuard`]: ./struct.TicketMutexGuard.html +/// [`SpinMutexGuard`]: ./struct.SpinMutexGuard.html +pub struct MutexGuard<'a, T: 'a + ?Sized> { + inner: InnerMutexGuard<'a, T>, } -// Same unsafe impls as `std::sync::Mutex` -unsafe impl Sync for Mutex {} -unsafe impl Send for Mutex {} - -impl Mutex -{ - /// Creates a new spinlock wrapping the supplied data. +impl Mutex { + /// Creates a new [`Mutex`] wrapping the supplied data. /// - /// May be used statically: + /// # Example /// /// ``` - /// use spin; + /// use spin::Mutex; /// - /// static MUTEX: spin::Mutex<()> = spin::Mutex::new(()); + /// static MUTEX: Mutex<()> = Mutex::new(()); /// /// fn demo() { /// let lock = MUTEX.lock(); @@ -106,283 +144,197 @@ /// drop(lock); /// } /// ``` - pub const fn new(user_data: T) -> Mutex - { - Mutex - { - lock: AtomicBool::new(false), - data: UnsafeCell::new(user_data), + #[inline(always)] + pub const fn new(value: T) -> Self { + Self { + inner: InnerMutex::new(value), } } - /// Consumes this mutex, returning the underlying data. + /// Consumes this [`Mutex`] and unwraps the underlying data. + /// + /// # Example + /// + /// ``` + /// let lock = spin::Mutex::new(42); + /// assert_eq!(42, lock.into_inner()); + /// ``` + #[inline(always)] pub fn into_inner(self) -> T { - // We know statically that there are no outstanding references to - // `self` so there's no need to lock. - let Mutex { data, .. } = self; - data.into_inner() + self.inner.into_inner() } } -impl Mutex -{ - fn obtain_lock(&self) - { - while self.lock.compare_and_swap(false, true, Ordering::Acquire) != false - { - // Wait until the lock looks unlocked before retrying - while self.lock.load(Ordering::Relaxed) - { - cpu_relax(); - } - } - } - - /// Locks the spinlock and returns a guard. +impl Mutex { + /// Locks the [`Mutex`] and returns a guard that permits access to the inner data. /// /// The returned value may be dereferenced for data access /// and the lock will be dropped when the guard falls out of scope. /// /// ``` - /// let mylock = spin::Mutex::new(0); + /// let lock = spin::Mutex::new(0); /// { - /// let mut data = mylock.lock(); + /// let mut data = lock.lock(); /// // The lock is now locked and the data can be accessed /// *data += 1; - /// // The lock is implicitly dropped + /// // The lock is implicitly dropped at the end of the scope /// } - /// /// ``` - pub fn lock(&self) -> MutexGuard - { - self.obtain_lock(); - MutexGuard - { - lock: &self.lock, - data: unsafe { &mut *self.data.get() }, + #[inline(always)] + pub fn lock(&self) -> MutexGuard { + MutexGuard { + inner: self.inner.lock(), } } +} + +impl Mutex { + /// Returns `true` if the lock is currently held. + /// + /// # Safety + /// + /// This function provides no synchronization guarantees and so its result should be considered 'out of date' + /// the instant it is called. Do not use it for synchronization purposes. However, it may be useful as a heuristic. + #[inline(always)] + pub fn is_locked(&self) -> bool { + self.inner.is_locked() + } - /// Force unlock the spinlock. + /// Force unlock this [`Mutex`]. + /// + /// # Safety /// /// This is *extremely* unsafe if the lock is not held by the current /// thread. However, this can be useful in some instances for exposing the /// lock to FFI that doesn't know how to deal with RAII. - /// - /// If the lock isn't held, this is a no-op. + #[inline(always)] pub unsafe fn force_unlock(&self) { - self.lock.store(false, Ordering::Release); + self.inner.force_unlock() } - /// Tries to lock the mutex. If it is already locked, it will return None. Otherwise it returns - /// a guard within Some. - pub fn try_lock(&self) -> Option> - { - if self.lock.compare_and_swap(false, true, Ordering::Acquire) == false - { - Some( - MutexGuard { - lock: &self.lock, - data: unsafe { &mut *self.data.get() }, - } - ) - } - else - { - None - } + /// Try to lock this [`Mutex`], returning a lock guard if successful. + /// + /// # Example + /// + /// ``` + /// let lock = spin::Mutex::new(42); + /// + /// let maybe_guard = lock.try_lock(); + /// assert!(maybe_guard.is_some()); + /// + /// // `maybe_guard` is still held, so the second call fails + /// let maybe_guard2 = lock.try_lock(); + /// assert!(maybe_guard2.is_none()); + /// ``` + #[inline(always)] + pub fn try_lock(&self) -> Option> { + self.inner + .try_lock() + .map(|guard| MutexGuard { inner: guard }) } -} -impl fmt::Debug for Mutex -{ - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result - { - match self.try_lock() - { - Some(guard) => write!(f, "Mutex {{ data: ") - .and_then(|()| (&*guard).fmt(f)) - .and_then(|()| write!(f, "}}")), - None => write!(f, "Mutex {{ }}"), - } + /// Returns a mutable reference to the underlying data. + /// + /// Since this call borrows the [`Mutex`] mutably, and a mutable reference is guaranteed to be exclusive in Rust, + /// no actual locking needs to take place -- the mutable borrow statically guarantees no locks exist. As such, + /// this is a 'zero-cost' operation. + /// + /// # Example + /// + /// ``` + /// let mut lock = spin::Mutex::new(0); + /// *lock.get_mut() = 10; + /// assert_eq!(*lock.lock(), 10); + /// ``` + #[inline(always)] + pub fn get_mut(&mut self) -> &mut T { + self.inner.get_mut() } } -impl Default for Mutex { - fn default() -> Mutex { - Mutex::new(Default::default()) +impl fmt::Debug for Mutex { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Debug::fmt(&self.inner, f) } } -impl<'a, T: ?Sized> Deref for MutexGuard<'a, T> -{ - type Target = T; - fn deref<'b>(&'b self) -> &'b T { &*self.data } +impl Default for Mutex { + fn default() -> Self { + Self::new(Default::default()) + } } -impl<'a, T: ?Sized> DerefMut for MutexGuard<'a, T> -{ - fn deref_mut<'b>(&'b mut self) -> &'b mut T { &mut *self.data } +impl From for Mutex { + fn from(data: T) -> Self { + Self::new(data) + } } -impl<'a, T: ?Sized> Drop for MutexGuard<'a, T> -{ - /// The dropping of the MutexGuard will release the lock it was created from. - fn drop(&mut self) - { - self.lock.store(false, Ordering::Release); +impl<'a, T: ?Sized> MutexGuard<'a, T> { + /// Leak the lock guard, yielding a mutable reference to the underlying data. + /// + /// Note that this function will permanently lock the original [`Mutex`]. + /// + /// ``` + /// let mylock = spin::Mutex::new(0); + /// + /// let data: &mut i32 = spin::MutexGuard::leak(mylock.lock()); + /// + /// *data = 1; + /// assert_eq!(*data, 1); + /// ``` + #[inline(always)] + pub fn leak(this: Self) -> &'a mut T { + InnerMutexGuard::leak(this.inner) } } -#[cfg(test)] -mod tests { - use std::prelude::v1::*; - - use std::sync::mpsc::channel; - use std::sync::Arc; - use std::sync::atomic::{AtomicUsize, Ordering}; - use std::thread; - - use super::*; - - #[derive(Eq, PartialEq, Debug)] - struct NonCopy(i32); - - #[test] - fn smoke() { - let m = Mutex::new(()); - drop(m.lock()); - drop(m.lock()); +impl<'a, T: ?Sized + fmt::Debug> fmt::Debug for MutexGuard<'a, T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Debug::fmt(&**self, f) } +} - #[test] - fn lots_and_lots() { - static M: Mutex<()> = Mutex::new(()); - static mut CNT: u32 = 0; - const J: u32 = 1000; - const K: u32 = 3; - - fn inc() { - for _ in 0..J { - unsafe { - let _g = M.lock(); - CNT += 1; - } - } - } - - let (tx, rx) = channel(); - for _ in 0..K { - let tx2 = tx.clone(); - thread::spawn(move|| { inc(); tx2.send(()).unwrap(); }); - let tx2 = tx.clone(); - thread::spawn(move|| { inc(); tx2.send(()).unwrap(); }); - } - - drop(tx); - for _ in 0..2 * K { - rx.recv().unwrap(); - } - assert_eq!(unsafe {CNT}, J * K * 2); +impl<'a, T: ?Sized + fmt::Display> fmt::Display for MutexGuard<'a, T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Display::fmt(&**self, f) } +} - #[test] - fn try_lock() { - let mutex = Mutex::new(42); +impl<'a, T: ?Sized> Deref for MutexGuard<'a, T> { + type Target = T; + fn deref(&self) -> &T { + &*self.inner + } +} - // First lock succeeds - let a = mutex.try_lock(); - assert_eq!(a.as_ref().map(|r| **r), Some(42)); +impl<'a, T: ?Sized> DerefMut for MutexGuard<'a, T> { + fn deref_mut(&mut self) -> &mut T { + &mut *self.inner + } +} - // Additional lock failes - let b = mutex.try_lock(); - assert!(b.is_none()); +#[cfg(feature = "lock_api")] +unsafe impl lock_api_crate::RawMutex for Mutex<(), R> { + type GuardMarker = lock_api_crate::GuardSend; - // After dropping lock, it succeeds again - ::core::mem::drop(a); - let c = mutex.try_lock(); - assert_eq!(c.as_ref().map(|r| **r), Some(42)); - } + const INIT: Self = Self::new(()); - #[test] - fn test_into_inner() { - let m = Mutex::new(NonCopy(10)); - assert_eq!(m.into_inner(), NonCopy(10)); + fn lock(&self) { + // Prevent guard destructor running + core::mem::forget(Self::lock(self)); } - #[test] - fn test_into_inner_drop() { - struct Foo(Arc); - impl Drop for Foo { - fn drop(&mut self) { - self.0.fetch_add(1, Ordering::SeqCst); - } - } - let num_drops = Arc::new(AtomicUsize::new(0)); - let m = Mutex::new(Foo(num_drops.clone())); - assert_eq!(num_drops.load(Ordering::SeqCst), 0); - { - let _inner = m.into_inner(); - assert_eq!(num_drops.load(Ordering::SeqCst), 0); - } - assert_eq!(num_drops.load(Ordering::SeqCst), 1); + fn try_lock(&self) -> bool { + // Prevent guard destructor running + Self::try_lock(self).map(core::mem::forget).is_some() } - #[test] - fn test_mutex_arc_nested() { - // Tests nested mutexes and access - // to underlying data. - let arc = Arc::new(Mutex::new(1)); - let arc2 = Arc::new(Mutex::new(arc)); - let (tx, rx) = channel(); - let _t = thread::spawn(move|| { - let lock = arc2.lock(); - let lock2 = lock.lock(); - assert_eq!(*lock2, 1); - tx.send(()).unwrap(); - }); - rx.recv().unwrap(); - } - - #[test] - fn test_mutex_arc_access_in_unwind() { - let arc = Arc::new(Mutex::new(1)); - let arc2 = arc.clone(); - let _ = thread::spawn(move|| -> () { - struct Unwinder { - i: Arc>, - } - impl Drop for Unwinder { - fn drop(&mut self) { - *self.i.lock() += 1; - } - } - let _u = Unwinder { i: arc2 }; - panic!(); - }).join(); - let lock = arc.lock(); - assert_eq!(*lock, 2); - } - - #[test] - fn test_mutex_unsized() { - let mutex: &Mutex<[i32]> = &Mutex::new([1, 2, 3]); - { - let b = &mut *mutex.lock(); - b[0] = 4; - b[2] = 5; - } - let comp: &[i32] = &[4, 2, 5]; - assert_eq!(&*mutex.lock(), comp); + unsafe fn unlock(&self) { + self.force_unlock(); } - #[test] - fn test_mutex_force_lock() { - let lock = Mutex::new(()); - ::std::mem::forget(lock.lock()); - unsafe { - lock.force_unlock(); - } - assert!(lock.try_lock().is_some()); + fn is_locked(&self) -> bool { + self.inner.is_locked() } } diff -Nru temporalio-1.3.0/vendor/spin/src/once.rs temporalio-1.3.0/vendor/spin/src/once.rs --- temporalio-1.3.0/vendor/spin/src/once.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/spin/src/once.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,72 +1,136 @@ -use core::cell::UnsafeCell; -use core::sync::atomic::{AtomicUsize, Ordering, spin_loop_hint as cpu_relax}; -use core::fmt; - -/// A synchronization primitive which can be used to run a one-time global -/// initialization. Unlike its std equivalent, this is generalized so that the -/// closure returns a value and it is stored. Once therefore acts something like -/// a future, too. +//! Synchronization primitives for one-time evaluation. + +use crate::{ + atomic::{AtomicU8, Ordering}, + RelaxStrategy, Spin, +}; +use core::{cell::UnsafeCell, fmt, marker::PhantomData, mem::MaybeUninit}; + +/// A primitive that provides lazy one-time initialization. +/// +/// Unlike its `std::sync` equivalent, this is generalized such that the closure returns a +/// value to be stored by the [`Once`] (`std::sync::Once` can be trivially emulated with +/// `Once`). +/// +/// Because [`Once::new`] is `const`, this primitive may be used to safely initialize statics. /// /// # Examples /// /// ``` /// use spin; /// -/// static START: spin::Once<()> = spin::Once::new(); +/// static START: spin::Once = spin::Once::new(); /// /// START.call_once(|| { /// // run initialization here /// }); /// ``` -pub struct Once { - state: AtomicUsize, - data: UnsafeCell>, // TODO remove option and use mem::uninitialized +pub struct Once { + phantom: PhantomData, + status: AtomicStatus, + data: UnsafeCell>, +} + +impl Default for Once { + fn default() -> Self { + Self::new() + } } -impl fmt::Debug for Once { +impl fmt::Debug for Once { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match self.try() { + match self.get() { Some(s) => write!(f, "Once {{ data: ") - .and_then(|()| s.fmt(f)) - .and_then(|()| write!(f, "}}")), - None => write!(f, "Once {{ }}") + .and_then(|()| s.fmt(f)) + .and_then(|()| write!(f, "}}")), + None => write!(f, "Once {{ }}"), } } } // Same unsafe impls as `std::sync::RwLock`, because this also allows for // concurrent reads. -unsafe impl Sync for Once {} -unsafe impl Send for Once {} +unsafe impl Sync for Once {} +unsafe impl Send for Once {} -// Four states that a Once can be in, encoded into the lower bits of `state` in -// the Once structure. -const INCOMPLETE: usize = 0x0; -const RUNNING: usize = 0x1; -const COMPLETE: usize = 0x2; -const PANICKED: usize = 0x3; - -use core::hint::unreachable_unchecked as unreachable; - -impl Once { - /// Initialization constant of `Once`. - pub const INIT: Self = Once { - state: AtomicUsize::new(INCOMPLETE), - data: UnsafeCell::new(None), - }; +mod status { + use super::*; - /// Creates a new `Once` value. - pub const fn new() -> Once { - Self::INIT + // SAFETY: This structure has an invariant, namely that the inner atomic u8 must *always* have + // a value for which there exists a valid Status. This means that users of this API must only + // be allowed to load and store `Status`es. + #[repr(transparent)] + pub struct AtomicStatus(AtomicU8); + + // Four states that a Once can be in, encoded into the lower bits of `status` in + // the Once structure. + #[repr(u8)] + #[derive(Clone, Copy, Debug, PartialEq)] + pub enum Status { + Incomplete = 0x00, + Running = 0x01, + Complete = 0x02, + Panicked = 0x03, + } + impl Status { + // Construct a status from an inner u8 integer. + // + // # Safety + // + // For this to be safe, the inner number must have a valid corresponding enum variant. + unsafe fn new_unchecked(inner: u8) -> Self { + core::mem::transmute(inner) + } } - fn force_get<'a>(&'a self) -> &'a T { - match unsafe { &*self.data.get() }.as_ref() { - None => unsafe { unreachable() }, - Some(p) => p, + impl AtomicStatus { + #[inline(always)] + pub const fn new(status: Status) -> Self { + // SAFETY: We got the value directly from status, so transmuting back is fine. + Self(AtomicU8::new(status as u8)) + } + #[inline(always)] + pub fn load(&self, ordering: Ordering) -> Status { + // SAFETY: We know that the inner integer must have been constructed from a Status in + // the first place. + unsafe { Status::new_unchecked(self.0.load(ordering)) } + } + #[inline(always)] + pub fn store(&self, status: Status, ordering: Ordering) { + // SAFETY: While not directly unsafe, this is safe because the value was retrieved from + // a status, thus making transmutation safe. + self.0.store(status as u8, ordering); + } + #[inline(always)] + pub fn compare_exchange( + &self, + old: Status, + new: Status, + success: Ordering, + failure: Ordering, + ) -> Result { + match self + .0 + .compare_exchange(old as u8, new as u8, success, failure) + { + // SAFETY: A compare exchange will always return a value that was later stored into + // the atomic u8, but due to the invariant that it must be a valid Status, we know + // that both Ok(_) and Err(_) will be safely transmutable. + Ok(ok) => Ok(unsafe { Status::new_unchecked(ok) }), + Err(err) => Err(unsafe { Status::new_unchecked(err) }), + } + } + #[inline(always)] + pub fn get_mut(&mut self) -> &mut Status { + // SAFETY: Since we know that the u8 inside must be a valid Status, we can safely cast + // it to a &mut Status. + unsafe { &mut *((self.0.get_mut() as *mut u8).cast::()) } } } +} +use self::status::{AtomicStatus, Status}; +impl Once { /// Performs an initialization routine once and only once. The given closure /// will be executed if this is the first time `call_once` has been called, /// and otherwise the routine will *not* be invoked. @@ -79,6 +143,12 @@ /// returned pointer will point to the result from the closure that was /// run. /// + /// # Panics + /// + /// This function will panic if the [`Once`] previously panicked while attempting + /// to initialize. This is similar to the poisoning behaviour of `std::sync`'s + /// primitives. + /// /// # Examples /// /// ``` @@ -95,76 +165,360 @@ /// # 2 /// } /// ``` - pub fn call_once<'a, F>(&'a self, builder: F) -> &'a T - where F: FnOnce() -> T - { - let mut status = self.state.load(Ordering::SeqCst); - - if status == INCOMPLETE { - status = self.state.compare_and_swap(INCOMPLETE, - RUNNING, - Ordering::SeqCst); - if status == INCOMPLETE { // We init - // We use a guard (Finish) to catch panics caused by builder - let mut finish = Finish { state: &self.state, panicked: true }; - unsafe { *self.data.get() = Some(builder()) }; - finish.panicked = false; - - status = COMPLETE; - self.state.store(status, Ordering::SeqCst); + pub fn call_once T>(&self, f: F) -> &T { + match self.try_call_once(|| Ok::(f())) { + Ok(x) => x, + Err(void) => match void {}, + } + } - // This next line is strictly an optimization - return self.force_get(); - } + /// This method is similar to `call_once`, but allows the given closure to + /// fail, and lets the `Once` in a uninitialized state if it does. + /// + /// This method will block the calling thread if another initialization + /// routine is currently running. + /// + /// When this function returns without error, it is guaranteed that some + /// initialization has run and completed (it may not be the closure + /// specified). The returned reference will point to the result from the + /// closure that was run. + /// + /// # Panics + /// + /// This function will panic if the [`Once`] previously panicked while attempting + /// to initialize. This is similar to the poisoning behaviour of `std::sync`'s + /// primitives. + /// + /// # Examples + /// + /// ``` + /// use spin; + /// + /// static INIT: spin::Once = spin::Once::new(); + /// + /// fn get_cached_val() -> Result { + /// INIT.try_call_once(expensive_fallible_computation).map(|x| *x) + /// } + /// + /// fn expensive_fallible_computation() -> Result { + /// // ... + /// # Ok(2) + /// } + /// ``` + pub fn try_call_once Result, E>(&self, f: F) -> Result<&T, E> { + if let Some(value) = self.get() { + Ok(value) + } else { + self.try_call_once_slow(f) } + } + #[cold] + fn try_call_once_slow Result, E>(&self, f: F) -> Result<&T, E> { loop { - match status { - INCOMPLETE => unreachable!(), - RUNNING => { // We spin - cpu_relax(); - status = self.state.load(Ordering::SeqCst) + let xchg = self.status.compare_exchange( + Status::Incomplete, + Status::Running, + Ordering::Acquire, + Ordering::Acquire, + ); + + match xchg { + Ok(_must_be_state_incomplete) => { + // Impl is defined after the match for readability + } + Err(Status::Panicked) => panic!("Once panicked"), + Err(Status::Running) => match self.poll() { + Some(v) => return Ok(v), + None => continue, }, - PANICKED => panic!("Once has panicked"), - COMPLETE => return self.force_get(), - _ => unsafe { unreachable() }, + Err(Status::Complete) => { + return Ok(unsafe { + // SAFETY: The status is Complete + self.force_get() + }); + } + Err(Status::Incomplete) => { + // The compare_exchange failed, so this shouldn't ever be reached, + // however if we decide to switch to compare_exchange_weak it will + // be safer to leave this here than hit an unreachable + continue; + } } + + // The compare-exchange succeeded, so we shall initialize it. + + // We use a guard (Finish) to catch panics caused by builder + let finish = Finish { + status: &self.status, + }; + let val = match f() { + Ok(val) => val, + Err(err) => { + // If an error occurs, clean up everything and leave. + core::mem::forget(finish); + self.status.store(Status::Incomplete, Ordering::Release); + return Err(err); + } + }; + unsafe { + // SAFETY: + // `UnsafeCell`/deref: currently the only accessor, mutably + // and immutably by cas exclusion. + // `write`: pointer comes from `MaybeUninit`. + (*self.data.get()).as_mut_ptr().write(val); + }; + // If there were to be a panic with unwind enabled, the code would + // short-circuit and never reach the point where it writes the inner data. + // The destructor for Finish will run, and poison the Once to ensure that other + // threads accessing it do not exhibit unwanted behavior, if there were to be + // any inconsistency in data structures caused by the panicking thread. + // + // However, f() is expected in the general case not to panic. In that case, we + // simply forget the guard, bypassing its destructor. We could theoretically + // clear a flag instead, but this eliminates the call to the destructor at + // compile time, and unconditionally poisons during an eventual panic, if + // unwinding is enabled. + core::mem::forget(finish); + + // SAFETY: Release is required here, so that all memory accesses done in the + // closure when initializing, become visible to other threads that perform Acquire + // loads. + // + // And, we also know that the changes this thread has done will not magically + // disappear from our cache, so it does not need to be AcqRel. + self.status.store(Status::Complete, Ordering::Release); + + // This next line is mainly an optimization. + return unsafe { Ok(self.force_get()) }; } } - /// Returns a pointer iff the `Once` was previously initialized - pub fn try<'a>(&'a self) -> Option<&'a T> { - match self.state.load(Ordering::SeqCst) { - COMPLETE => Some(self.force_get()), - _ => None, + /// Spins until the [`Once`] contains a value. + /// + /// Note that in releases prior to `0.7`, this function had the behaviour of [`Once::poll`]. + /// + /// # Panics + /// + /// This function will panic if the [`Once`] previously panicked while attempting + /// to initialize. This is similar to the poisoning behaviour of `std::sync`'s + /// primitives. + pub fn wait(&self) -> &T { + loop { + match self.poll() { + Some(x) => break x, + None => R::relax(), + } } } - /// Like try, but will spin if the `Once` is in the process of being - /// initialized - pub fn wait<'a>(&'a self) -> Option<&'a T> { + /// Like [`Once::get`], but will spin if the [`Once`] is in the process of being + /// initialized. If initialization has not even begun, `None` will be returned. + /// + /// Note that in releases prior to `0.7`, this function was named `wait`. + /// + /// # Panics + /// + /// This function will panic if the [`Once`] previously panicked while attempting + /// to initialize. This is similar to the poisoning behaviour of `std::sync`'s + /// primitives. + pub fn poll(&self) -> Option<&T> { loop { - match self.state.load(Ordering::SeqCst) { - INCOMPLETE => return None, - RUNNING => cpu_relax(), // We spin - COMPLETE => return Some(self.force_get()), - PANICKED => panic!("Once has panicked"), - _ => unsafe { unreachable() }, + // SAFETY: Acquire is safe here, because if the status is COMPLETE, then we want to make + // sure that all memory accessed done while initializing that value, are visible when + // we return a reference to the inner data after this load. + match self.status.load(Ordering::Acquire) { + Status::Incomplete => return None, + Status::Running => R::relax(), // We spin + Status::Complete => return Some(unsafe { self.force_get() }), + Status::Panicked => panic!("Once previously poisoned by a panicked"), + } + } + } +} + +impl Once { + /// Initialization constant of [`Once`]. + #[allow(clippy::declare_interior_mutable_const)] + pub const INIT: Self = Self { + phantom: PhantomData, + status: AtomicStatus::new(Status::Incomplete), + data: UnsafeCell::new(MaybeUninit::uninit()), + }; + + /// Creates a new [`Once`]. + pub const fn new() -> Self { + Self::INIT + } + + /// Creates a new initialized [`Once`]. + pub const fn initialized(data: T) -> Self { + Self { + phantom: PhantomData, + status: AtomicStatus::new(Status::Complete), + data: UnsafeCell::new(MaybeUninit::new(data)), + } + } + + /// Retrieve a pointer to the inner data. + /// + /// While this method itself is safe, accessing the pointer before the [`Once`] has been + /// initialized is UB, unless this method has already been written to from a pointer coming + /// from this method. + pub fn as_mut_ptr(&self) -> *mut T { + // SAFETY: + // * MaybeUninit always has exactly the same layout as T + self.data.get().cast::() + } + + /// Get a reference to the initialized instance. Must only be called once COMPLETE. + unsafe fn force_get(&self) -> &T { + // SAFETY: + // * `UnsafeCell`/inner deref: data never changes again + // * `MaybeUninit`/outer deref: data was initialized + &*(*self.data.get()).as_ptr() + } + + /// Get a reference to the initialized instance. Must only be called once COMPLETE. + unsafe fn force_get_mut(&mut self) -> &mut T { + // SAFETY: + // * `UnsafeCell`/inner deref: data never changes again + // * `MaybeUninit`/outer deref: data was initialized + &mut *(*self.data.get()).as_mut_ptr() + } + + /// Get a reference to the initialized instance. Must only be called once COMPLETE. + unsafe fn force_into_inner(self) -> T { + // SAFETY: + // * `UnsafeCell`/inner deref: data never changes again + // * `MaybeUninit`/outer deref: data was initialized + (*self.data.get()).as_ptr().read() + } + + /// Returns a reference to the inner value if the [`Once`] has been initialized. + pub fn get(&self) -> Option<&T> { + // SAFETY: Just as with `poll`, Acquire is safe here because we want to be able to see the + // nonatomic stores done when initializing, once we have loaded and checked the status. + match self.status.load(Ordering::Acquire) { + Status::Complete => Some(unsafe { self.force_get() }), + _ => None, + } + } + + /// Returns a reference to the inner value on the unchecked assumption that the [`Once`] has been initialized. + /// + /// # Safety + /// + /// This is *extremely* unsafe if the `Once` has not already been initialized because a reference to uninitialized + /// memory will be returned, immediately triggering undefined behaviour (even if the reference goes unused). + /// However, this can be useful in some instances for exposing the `Once` to FFI or when the overhead of atomically + /// checking initialization is unacceptable and the `Once` has already been initialized. + pub unsafe fn get_unchecked(&self) -> &T { + debug_assert_eq!( + self.status.load(Ordering::SeqCst), + Status::Complete, + "Attempted to access an uninitialized Once. If this was run without debug checks, this would be undefined behaviour. This is a serious bug and you must fix it.", + ); + self.force_get() + } + + /// Returns a mutable reference to the inner value if the [`Once`] has been initialized. + /// + /// Because this method requires a mutable reference to the [`Once`], no synchronization + /// overhead is required to access the inner value. In effect, it is zero-cost. + pub fn get_mut(&mut self) -> Option<&mut T> { + match *self.status.get_mut() { + Status::Complete => Some(unsafe { self.force_get_mut() }), + _ => None, + } + } + + /// Returns a mutable reference to the inner value + /// + /// # Safety + /// + /// This is *extremely* unsafe if the `Once` has not already been initialized because a reference to uninitialized + /// memory will be returned, immediately triggering undefined behaviour (even if the reference goes unused). + /// However, this can be useful in some instances for exposing the `Once` to FFI or when the overhead of atomically + /// checking initialization is unacceptable and the `Once` has already been initialized. + pub unsafe fn get_mut_unchecked(&mut self) -> &mut T { + debug_assert_eq!( + self.status.load(Ordering::SeqCst), + Status::Complete, + "Attempted to access an unintialized Once. If this was to run without debug checks, this would be undefined behavior. This is a serious bug and you must fix it.", + ); + self.force_get_mut() + } + + /// Returns a the inner value if the [`Once`] has been initialized. + /// + /// Because this method requires ownership of the [`Once`], no synchronization overhead + /// is required to access the inner value. In effect, it is zero-cost. + pub fn try_into_inner(mut self) -> Option { + match *self.status.get_mut() { + Status::Complete => Some(unsafe { self.force_into_inner() }), + _ => None, + } + } + + /// Returns a the inner value if the [`Once`] has been initialized. + /// # Safety + /// + /// This is *extremely* unsafe if the `Once` has not already been initialized because a reference to uninitialized + /// memory will be returned, immediately triggering undefined behaviour (even if the reference goes unused) + /// This can be useful, if `Once` has already been initialized, and you want to bypass an + /// option check. + pub unsafe fn into_inner_unchecked(self) -> T { + debug_assert_eq!( + self.status.load(Ordering::SeqCst), + Status::Complete, + "Attempted to access an unintialized Once. If this was to run without debug checks, this would be undefined behavior. This is a serious bug and you must fix it.", + ); + self.force_into_inner() + } + + /// Checks whether the value has been initialized. + /// + /// This is done using [`Acquire`](core::sync::atomic::Ordering::Acquire) ordering, and + /// therefore it is safe to access the value directly via + /// [`get_unchecked`](Self::get_unchecked) if this returns true. + pub fn is_completed(&self) -> bool { + // TODO: Add a similar variant for Relaxed? + self.status.load(Ordering::Acquire) == Status::Complete + } +} + +impl From for Once { + fn from(data: T) -> Self { + Self::initialized(data) + } +} + +impl Drop for Once { + fn drop(&mut self) { + // No need to do any atomic access here, we have &mut! + if *self.status.get_mut() == Status::Complete { + unsafe { + //TODO: Use MaybeUninit::assume_init_drop once stabilised + core::ptr::drop_in_place((*self.data.get()).as_mut_ptr()); } } } } struct Finish<'a> { - state: &'a AtomicUsize, - panicked: bool, + status: &'a AtomicStatus, } impl<'a> Drop for Finish<'a> { fn drop(&mut self) { - if self.panicked { - self.state.store(PANICKED, Ordering::SeqCst); - } + // While using Relaxed here would most likely not be an issue, we use SeqCst anyway. + // This is mainly because panics are not meant to be fast at all, but also because if + // there were to be a compiler bug which reorders accesses within the same thread, + // where it should not, we want to be sure that the panic really is handled, and does + // not cause additional problems. SeqCst will therefore help guarding against such + // bugs. + self.status.store(Status::Panicked, Ordering::SeqCst); } } @@ -172,13 +526,16 @@ mod tests { use std::prelude::v1::*; + use std::sync::atomic::AtomicU32; use std::sync::mpsc::channel; + use std::sync::Arc; use std::thread; - use super::Once; + + use super::*; #[test] fn smoke_once() { - static O: Once<()> = Once::new(); + static O: Once = Once::new(); let mut a = 0; O.call_once(|| a += 1); assert_eq!(a, 1); @@ -197,14 +554,17 @@ #[test] fn stampede_once() { - static O: Once<()> = Once::new(); + static O: Once = Once::new(); static mut RUN: bool = false; let (tx, rx) = channel(); + let mut ts = Vec::new(); for _ in 0..10 { let tx = tx.clone(); - thread::spawn(move|| { - for _ in 0..4 { thread::yield_now() } + ts.push(thread::spawn(move || { + for _ in 0..4 { + thread::yield_now() + } unsafe { O.call_once(|| { assert!(!RUN); @@ -213,7 +573,7 @@ assert!(RUN); } tx.send(()).unwrap(); - }); + })); } unsafe { @@ -227,43 +587,70 @@ for _ in 0..10 { rx.recv().unwrap(); } + + for t in ts { + t.join().unwrap(); + } } #[test] - fn try() { + fn get() { static INIT: Once = Once::new(); - assert!(INIT.try().is_none()); + assert!(INIT.get().is_none()); INIT.call_once(|| 2); - assert_eq!(INIT.try().map(|r| *r), Some(2)); + assert_eq!(INIT.get().map(|r| *r), Some(2)); } #[test] - fn try_no_wait() { + fn get_no_wait() { static INIT: Once = Once::new(); - assert!(INIT.try().is_none()); - thread::spawn(move|| { - INIT.call_once(|| loop { }); + assert!(INIT.get().is_none()); + let t = thread::spawn(move || { + INIT.call_once(|| { + thread::sleep(std::time::Duration::from_secs(3)); + 42 + }); }); - assert!(INIT.try().is_none()); + assert!(INIT.get().is_none()); + + t.join().unwrap(); } + #[test] + fn poll() { + static INIT: Once = Once::new(); + + assert!(INIT.poll().is_none()); + INIT.call_once(|| 3); + assert_eq!(INIT.poll().map(|r| *r), Some(3)); + } #[test] fn wait() { static INIT: Once = Once::new(); - assert!(INIT.wait().is_none()); + let t = std::thread::spawn(|| { + assert_eq!(*INIT.wait(), 3); + assert!(INIT.is_completed()); + }); + + for _ in 0..4 { + thread::yield_now() + } + + assert!(INIT.poll().is_none()); INIT.call_once(|| 3); - assert_eq!(INIT.wait().map(|r| *r), Some(3)); + + t.join().unwrap(); } #[test] fn panic() { - use ::std::panic; + use std::panic; - static INIT: Once<()> = Once::new(); + static INIT: Once = Once::new(); // poison the once let t = panic::catch_unwind(|| { @@ -280,11 +667,123 @@ #[test] fn init_constant() { - static O: Once<()> = Once::INIT; + static O: Once = Once::INIT; let mut a = 0; O.call_once(|| a += 1); assert_eq!(a, 1); O.call_once(|| a += 1); assert_eq!(a, 1); } + + static mut CALLED: bool = false; + + struct DropTest {} + + impl Drop for DropTest { + fn drop(&mut self) { + unsafe { + CALLED = true; + } + } + } + + #[test] + fn try_call_once_err() { + let once = Once::<_, Spin>::new(); + let shared = Arc::new((once, AtomicU32::new(0))); + + let (tx, rx) = channel(); + + let t0 = { + let shared = shared.clone(); + thread::spawn(move || { + let (once, called) = &*shared; + + once.try_call_once(|| { + called.fetch_add(1, Ordering::AcqRel); + tx.send(()).unwrap(); + thread::sleep(std::time::Duration::from_millis(50)); + Err(()) + }) + .ok(); + }) + }; + + let t1 = { + let shared = shared.clone(); + thread::spawn(move || { + rx.recv().unwrap(); + let (once, called) = &*shared; + assert_eq!( + called.load(Ordering::Acquire), + 1, + "leader thread did not run first" + ); + + once.call_once(|| { + called.fetch_add(1, Ordering::AcqRel); + }); + }) + }; + + t0.join().unwrap(); + t1.join().unwrap(); + + assert_eq!(shared.1.load(Ordering::Acquire), 2); + } + + // This is sort of two test cases, but if we write them as separate test methods + // they can be executed concurrently and then fail some small fraction of the + // time. + #[test] + fn drop_occurs_and_skip_uninit_drop() { + unsafe { + CALLED = false; + } + + { + let once = Once::<_>::new(); + once.call_once(|| DropTest {}); + } + + assert!(unsafe { CALLED }); + // Now test that we skip drops for the uninitialized case. + unsafe { + CALLED = false; + } + + let once = Once::::new(); + drop(once); + + assert!(unsafe { !CALLED }); + } + + #[test] + fn call_once_test() { + for _ in 0..20 { + use std::sync::atomic::AtomicUsize; + use std::sync::Arc; + use std::time::Duration; + let share = Arc::new(AtomicUsize::new(0)); + let once = Arc::new(Once::<_, Spin>::new()); + let mut hs = Vec::new(); + for _ in 0..8 { + let h = thread::spawn({ + let share = share.clone(); + let once = once.clone(); + move || { + thread::sleep(Duration::from_millis(10)); + once.call_once(|| { + share.fetch_add(1, Ordering::SeqCst); + }); + } + }); + hs.push(h); + } + for h in hs { + h.join().unwrap(); + } + assert_eq!(1, share.load(Ordering::SeqCst)); + } + } } diff -Nru temporalio-1.3.0/vendor/spin/src/relax.rs temporalio-1.3.0/vendor/spin/src/relax.rs --- temporalio-1.3.0/vendor/spin/src/relax.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/spin/src/relax.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,61 @@ +//! Strategies that determine the behaviour of locks when encountering contention. + +/// A trait implemented by spinning relax strategies. +pub trait RelaxStrategy { + /// Perform the relaxing operation during a period of contention. + fn relax(); +} + +/// A strategy that rapidly spins while informing the CPU that it should power down non-essential components via +/// [`core::hint::spin_loop`]. +/// +/// Note that spinning is a 'dumb' strategy and most schedulers cannot correctly differentiate it from useful work, +/// thereby misallocating even more CPU time to the spinning process. This is known as +/// ['priority inversion'](https://matklad.github.io/2020/01/02/spinlocks-considered-harmful.html). +/// +/// If you see signs that priority inversion is occurring, consider switching to [`Yield`] or, even better, not using a +/// spinlock at all and opting for a proper scheduler-aware lock. Remember also that different targets, operating +/// systems, schedulers, and even the same scheduler with different workloads will exhibit different behaviour. Just +/// because priority inversion isn't occurring in your tests does not mean that it will not occur. Use a scheduler- +/// aware lock if at all possible. +pub struct Spin; + +impl RelaxStrategy for Spin { + #[inline(always)] + fn relax() { + // Use the deprecated spin_loop_hint() to ensure that we don't get + // a higher MSRV than we need to. + #[allow(deprecated)] + core::sync::atomic::spin_loop_hint(); + } +} + +/// A strategy that yields the current time slice to the scheduler in favour of other threads or processes. +/// +/// This is generally used as a strategy for minimising power consumption and priority inversion on targets that have a +/// standard library available. Note that such targets have scheduler-integrated concurrency primitives available, and +/// you should generally use these instead, except in rare circumstances. +#[cfg(feature = "std")] +#[cfg_attr(docsrs, doc(cfg(feature = "std")))] +pub struct Yield; + +#[cfg(feature = "std")] +#[cfg_attr(docsrs, doc(cfg(feature = "std")))] +impl RelaxStrategy for Yield { + #[inline(always)] + fn relax() { + std::thread::yield_now(); + } +} + +/// A strategy that rapidly spins, without telling the CPU to do any powering down. +/// +/// You almost certainly do not want to use this. Use [`Spin`] instead. It exists for completeness and for targets +/// that, for some reason, miscompile or do not support spin hint intrinsics despite attempting to generate code for +/// them (i.e: this is a workaround for possible compiler bugs). +pub struct Loop; + +impl RelaxStrategy for Loop { + #[inline(always)] + fn relax() {} +} diff -Nru temporalio-1.3.0/vendor/spin/src/rw_lock.rs temporalio-1.3.0/vendor/spin/src/rw_lock.rs --- temporalio-1.3.0/vendor/spin/src/rw_lock.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/spin/src/rw_lock.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,777 +0,0 @@ -use core::cell::UnsafeCell; -use core::default::Default; -use core::fmt; -use core::marker::PhantomData; -use core::mem; -use core::ops::{Deref, DerefMut}; -use core::ptr::NonNull; -use core::sync::atomic::{spin_loop_hint as cpu_relax, AtomicUsize, Ordering}; - -/// A reader-writer lock -/// -/// This type of lock allows a number of readers or at most one writer at any -/// point in time. The write portion of this lock typically allows modification -/// of the underlying data (exclusive access) and the read portion of this lock -/// typically allows for read-only access (shared access). -/// -/// The type parameter `T` represents the data that this lock protects. It is -/// required that `T` satisfies `Send` to be shared across tasks and `Sync` to -/// allow concurrent access through readers. The RAII guards returned from the -/// locking methods implement `Deref` (and `DerefMut` for the `write` methods) -/// to allow access to the contained of the lock. -/// -/// An [`RwLockUpgradeableGuard`](RwLockUpgradeableGuard) can be upgraded to a -/// writable guard through the [`RwLockUpgradeableGuard::upgrade`](RwLockUpgradeableGuard::upgrade) -/// [`RwLockUpgradeableGuard::try_upgrade`](RwLockUpgradeableGuard::try_upgrade) functions. -/// Writable or upgradeable guards can be downgraded through their respective `downgrade` -/// functions. -/// -/// Based on Facebook's -/// [`folly/RWSpinLock.h`](https://github.com/facebook/folly/blob/a0394d84f2d5c3e50ebfd0566f9d3acb52cfab5a/folly/synchronization/RWSpinLock.h). -/// This implementation is unfair to writers - if the lock always has readers, then no writers will -/// ever get a chance. Using an upgradeable lock guard can *somewhat* alleviate this issue as no -/// new readers are allowed when an upgradeable guard is held, but upgradeable guards can be taken -/// when there are existing readers. However if the lock is that highly contended and writes are -/// crucial then this implementation may be a poor choice. -/// -/// # Examples -/// -/// ``` -/// use spin; -/// -/// let lock = spin::RwLock::new(5); -/// -/// // many reader locks can be held at once -/// { -/// let r1 = lock.read(); -/// let r2 = lock.read(); -/// assert_eq!(*r1, 5); -/// assert_eq!(*r2, 5); -/// } // read locks are dropped at this point -/// -/// // only one write lock may be held, however -/// { -/// let mut w = lock.write(); -/// *w += 1; -/// assert_eq!(*w, 6); -/// } // write lock is dropped here -/// ``` -pub struct RwLock { - lock: AtomicUsize, - data: UnsafeCell, -} - -const READER: usize = 1 << 2; -const UPGRADED: usize = 1 << 1; -const WRITER: usize = 1; - -/// A guard from which the protected data can be read -/// -/// When the guard falls out of scope it will decrement the read count, -/// potentially releasing the lock. -#[derive(Debug)] -pub struct RwLockReadGuard<'a, T: 'a + ?Sized> { - lock: &'a AtomicUsize, - data: NonNull, -} - -/// A guard to which the protected data can be written -/// -/// When the guard falls out of scope it will release the lock. -#[derive(Debug)] -pub struct RwLockWriteGuard<'a, T: 'a + ?Sized> { - lock: &'a AtomicUsize, - data: NonNull, - #[doc(hidden)] - _invariant: PhantomData<&'a mut T>, -} - -/// A guard from which the protected data can be read, and can be upgraded -/// to a writable guard if needed -/// -/// No writers or other upgradeable guards can exist while this is in scope. New reader -/// creation is prevented (to alleviate writer starvation) but there may be existing readers -/// when the lock is acquired. -/// -/// When the guard falls out of scope it will release the lock. -#[derive(Debug)] -pub struct RwLockUpgradeableGuard<'a, T: 'a + ?Sized> { - lock: &'a AtomicUsize, - data: NonNull, - #[doc(hidden)] - _invariant: PhantomData<&'a mut T>, -} - -// Same unsafe impls as `std::sync::RwLock` -unsafe impl Send for RwLock {} -unsafe impl Sync for RwLock {} - -impl RwLock { - /// Creates a new spinlock wrapping the supplied data. - /// - /// May be used statically: - /// - /// ``` - /// use spin; - /// - /// static RW_LOCK: spin::RwLock<()> = spin::RwLock::new(()); - /// - /// fn demo() { - /// let lock = RW_LOCK.read(); - /// // do something with lock - /// drop(lock); - /// } - /// ``` - #[inline] - pub const fn new(user_data: T) -> RwLock { - RwLock { - lock: AtomicUsize::new(0), - data: UnsafeCell::new(user_data), - } - } - - /// Consumes this `RwLock`, returning the underlying data. - #[inline] - pub fn into_inner(self) -> T { - // We know statically that there are no outstanding references to - // `self` so there's no need to lock. - let RwLock { data, .. } = self; - data.into_inner() - } -} - -impl RwLock { - /// Locks this rwlock with shared read access, blocking the current thread - /// until it can be acquired. - /// - /// The calling thread will be blocked until there are no more writers which - /// hold the lock. There may be other readers currently inside the lock when - /// this method returns. This method does not provide any guarantees with - /// respect to the ordering of whether contentious readers or writers will - /// acquire the lock first. - /// - /// Returns an RAII guard which will release this thread's shared access - /// once it is dropped. - /// - /// ``` - /// let mylock = spin::RwLock::new(0); - /// { - /// let mut data = mylock.read(); - /// // The lock is now locked and the data can be read - /// println!("{}", *data); - /// // The lock is dropped - /// } - /// ``` - #[inline] - pub fn read(&self) -> RwLockReadGuard { - loop { - match self.try_read() { - Some(guard) => return guard, - None => cpu_relax(), - } - } - } - - /// Attempt to acquire this lock with shared read access. - /// - /// This function will never block and will return immediately if `read` - /// would otherwise succeed. Returns `Some` of an RAII guard which will - /// release the shared access of this thread when dropped, or `None` if the - /// access could not be granted. This method does not provide any - /// guarantees with respect to the ordering of whether contentious readers - /// or writers will acquire the lock first. - /// - /// ``` - /// let mylock = spin::RwLock::new(0); - /// { - /// match mylock.try_read() { - /// Some(data) => { - /// // The lock is now locked and the data can be read - /// println!("{}", *data); - /// // The lock is dropped - /// }, - /// None => (), // no cigar - /// }; - /// } - /// ``` - #[inline] - pub fn try_read(&self) -> Option> { - let value = self.lock.fetch_add(READER, Ordering::Acquire); - - // We check the UPGRADED bit here so that new readers are prevented when an UPGRADED lock is held. - // This helps reduce writer starvation. - if value & (WRITER | UPGRADED) != 0 { - // Lock is taken, undo. - self.lock.fetch_sub(READER, Ordering::Release); - None - } else { - Some(RwLockReadGuard { - lock: &self.lock, - data: unsafe { NonNull::new_unchecked(self.data.get()) }, - }) - } - } - - /// Force decrement the reader count. - /// - /// This is *extremely* unsafe if there are outstanding `RwLockReadGuard`s - /// live, or if called more times than `read` has been called, but can be - /// useful in FFI contexts where the caller doesn't know how to deal with - /// RAII. The underlying atomic operation uses `Ordering::Release`. - #[inline] - pub unsafe fn force_read_decrement(&self) { - debug_assert!(self.lock.load(Ordering::Relaxed) & !WRITER > 0); - self.lock.fetch_sub(READER, Ordering::Release); - } - - /// Force unlock exclusive write access. - /// - /// This is *extremely* unsafe if there are outstanding `RwLockWriteGuard`s - /// live, or if called when there are current readers, but can be useful in - /// FFI contexts where the caller doesn't know how to deal with RAII. The - /// underlying atomic operation uses `Ordering::Release`. - #[inline] - pub unsafe fn force_write_unlock(&self) { - debug_assert_eq!(self.lock.load(Ordering::Relaxed) & !(WRITER | UPGRADED), 0); - self.lock.fetch_and(!(WRITER | UPGRADED), Ordering::Release); - } - - #[inline(always)] - fn try_write_internal(&self, strong: bool) -> Option> { - if compare_exchange( - &self.lock, - 0, - WRITER, - Ordering::Acquire, - Ordering::Relaxed, - strong, - ) - .is_ok() - { - Some(RwLockWriteGuard { - lock: &self.lock, - data: unsafe { NonNull::new_unchecked(self.data.get()) }, - _invariant: PhantomData, - }) - } else { - None - } - } - - /// Lock this rwlock with exclusive write access, blocking the current - /// thread until it can be acquired. - /// - /// This function will not return while other writers or other readers - /// currently have access to the lock. - /// - /// Returns an RAII guard which will drop the write access of this rwlock - /// when dropped. - /// - /// ``` - /// let mylock = spin::RwLock::new(0); - /// { - /// let mut data = mylock.write(); - /// // The lock is now locked and the data can be written - /// *data += 1; - /// // The lock is dropped - /// } - /// ``` - #[inline] - pub fn write(&self) -> RwLockWriteGuard { - loop { - match self.try_write_internal(false) { - Some(guard) => return guard, - None => cpu_relax(), - } - } - } - - /// Attempt to lock this rwlock with exclusive write access. - /// - /// This function does not ever block, and it will return `None` if a call - /// to `write` would otherwise block. If successful, an RAII guard is - /// returned. - /// - /// ``` - /// let mylock = spin::RwLock::new(0); - /// { - /// match mylock.try_write() { - /// Some(mut data) => { - /// // The lock is now locked and the data can be written - /// *data += 1; - /// // The lock is implicitly dropped - /// }, - /// None => (), // no cigar - /// }; - /// } - /// ``` - #[inline] - pub fn try_write(&self) -> Option> { - self.try_write_internal(true) - } - - /// Obtain a readable lock guard that can later be upgraded to a writable lock guard. - /// Upgrades can be done through the [`RwLockUpgradeableGuard::upgrade`](RwLockUpgradeableGuard::upgrade) method. - #[inline] - pub fn upgradeable_read(&self) -> RwLockUpgradeableGuard { - loop { - match self.try_upgradeable_read() { - Some(guard) => return guard, - None => cpu_relax(), - } - } - } - - /// Tries to obtain an upgradeable lock guard. - #[inline] - pub fn try_upgradeable_read(&self) -> Option> { - if self.lock.fetch_or(UPGRADED, Ordering::Acquire) & (WRITER | UPGRADED) == 0 { - Some(RwLockUpgradeableGuard { - lock: &self.lock, - data: unsafe { NonNull::new_unchecked(self.data.get()) }, - _invariant: PhantomData, - }) - } else { - // We can't unflip the UPGRADED bit back just yet as there is another upgradeable or write lock. - // When they unlock, they will clear the bit. - None - } - } -} - -impl fmt::Debug for RwLock { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match self.try_read() { - Some(guard) => write!(f, "RwLock {{ data: ") - .and_then(|()| (&*guard).fmt(f)) - .and_then(|()| write!(f, "}}")), - None => write!(f, "RwLock {{ }}"), - } - } -} - -impl Default for RwLock { - fn default() -> RwLock { - RwLock::new(Default::default()) - } -} - -impl<'rwlock, T: ?Sized> RwLockUpgradeableGuard<'rwlock, T> { - #[inline(always)] - fn try_upgrade_internal(self, strong: bool) -> Result, Self> { - if compare_exchange( - &self.lock, - UPGRADED, - WRITER, - Ordering::Acquire, - Ordering::Relaxed, - strong, - ) - .is_ok() - { - // Upgrade successful - let out = Ok(RwLockWriteGuard { - lock: &self.lock, - data: self.data, - _invariant: PhantomData, - }); - - // Forget the old guard so its destructor doesn't run - mem::forget(self); - - out - } else { - Err(self) - } - } - - /// Upgrades an upgradeable lock guard to a writable lock guard. - /// - /// ``` - /// let mylock = spin::RwLock::new(0); - /// - /// let upgradeable = mylock.upgradeable_read(); // Readable, but not yet writable - /// let writable = upgradeable.upgrade(); - /// ``` - #[inline] - pub fn upgrade(mut self) -> RwLockWriteGuard<'rwlock, T> { - loop { - self = match self.try_upgrade_internal(false) { - Ok(guard) => return guard, - Err(e) => e, - }; - - cpu_relax(); - } - } - - /// Tries to upgrade an upgradeable lock guard to a writable lock guard. - /// - /// ``` - /// let mylock = spin::RwLock::new(0); - /// let upgradeable = mylock.upgradeable_read(); // Readable, but not yet writable - /// - /// match upgradeable.try_upgrade() { - /// Ok(writable) => /* upgrade successful - use writable lock guard */ (), - /// Err(upgradeable) => /* upgrade unsuccessful */ (), - /// }; - /// ``` - #[inline] - pub fn try_upgrade(self) -> Result, Self> { - self.try_upgrade_internal(true) - } - - #[inline] - /// Downgrades the upgradeable lock guard to a readable, shared lock guard. Cannot fail and is guaranteed not to spin. - /// - /// ``` - /// let mylock = spin::RwLock::new(1); - /// - /// let upgradeable = mylock.upgradeable_read(); - /// assert!(mylock.try_read().is_none()); - /// assert_eq!(*upgradeable, 1); - /// - /// let readable = upgradeable.downgrade(); // This is guaranteed not to spin - /// assert!(mylock.try_read().is_some()); - /// assert_eq!(*readable, 1); - /// ``` - pub fn downgrade(self) -> RwLockReadGuard<'rwlock, T> { - // Reserve the read guard for ourselves - self.lock.fetch_add(READER, Ordering::Acquire); - - RwLockReadGuard { - lock: &self.lock, - data: self.data, - } - - // Dropping self removes the UPGRADED bit - } -} - -impl<'rwlock, T: ?Sized> RwLockWriteGuard<'rwlock, T> { - /// Downgrades the writable lock guard to a readable, shared lock guard. Cannot fail and is guaranteed not to spin. - /// - /// ``` - /// let mylock = spin::RwLock::new(0); - /// - /// let mut writable = mylock.write(); - /// *writable = 1; - /// - /// let readable = writable.downgrade(); // This is guaranteed not to spin - /// # let readable_2 = mylock.try_read().unwrap(); - /// assert_eq!(*readable, 1); - /// ``` - #[inline] - pub fn downgrade(self) -> RwLockReadGuard<'rwlock, T> { - // Reserve the read guard for ourselves - self.lock.fetch_add(READER, Ordering::Acquire); - - RwLockReadGuard { - lock: &self.lock, - data: self.data, - } - - // Dropping self removes the WRITER bit - } -} - -impl<'rwlock, T: ?Sized> Deref for RwLockReadGuard<'rwlock, T> { - type Target = T; - - fn deref(&self) -> &T { - unsafe { self.data.as_ref() } - } -} - -impl<'rwlock, T: ?Sized> Deref for RwLockUpgradeableGuard<'rwlock, T> { - type Target = T; - - fn deref(&self) -> &T { - unsafe { self.data.as_ref() } - } -} - -impl<'rwlock, T: ?Sized> Deref for RwLockWriteGuard<'rwlock, T> { - type Target = T; - - fn deref(&self) -> &T { - unsafe { self.data.as_ref() } - } -} - -impl<'rwlock, T: ?Sized> DerefMut for RwLockWriteGuard<'rwlock, T> { - fn deref_mut(&mut self) -> &mut T { - unsafe { self.data.as_mut() } - } -} - -impl<'rwlock, T: ?Sized> Drop for RwLockReadGuard<'rwlock, T> { - fn drop(&mut self) { - debug_assert!(self.lock.load(Ordering::Relaxed) & !(WRITER | UPGRADED) > 0); - self.lock.fetch_sub(READER, Ordering::Release); - } -} - -impl<'rwlock, T: ?Sized> Drop for RwLockUpgradeableGuard<'rwlock, T> { - fn drop(&mut self) { - debug_assert_eq!( - self.lock.load(Ordering::Relaxed) & (WRITER | UPGRADED), - UPGRADED - ); - self.lock.fetch_sub(UPGRADED, Ordering::AcqRel); - } -} - -impl<'rwlock, T: ?Sized> Drop for RwLockWriteGuard<'rwlock, T> { - fn drop(&mut self) { - debug_assert_eq!(self.lock.load(Ordering::Relaxed) & WRITER, WRITER); - - // Writer is responsible for clearing both WRITER and UPGRADED bits. - // The UPGRADED bit may be set if an upgradeable lock attempts an upgrade while this lock is held. - self.lock.fetch_and(!(WRITER | UPGRADED), Ordering::Release); - } -} - -#[inline(always)] -fn compare_exchange( - atomic: &AtomicUsize, - current: usize, - new: usize, - success: Ordering, - failure: Ordering, - strong: bool, -) -> Result { - if strong { - atomic.compare_exchange(current, new, success, failure) - } else { - atomic.compare_exchange_weak(current, new, success, failure) - } -} - -#[cfg(test)] -mod tests { - use std::prelude::v1::*; - - use std::sync::atomic::{AtomicUsize, Ordering}; - use std::sync::mpsc::channel; - use std::sync::Arc; - use std::thread; - - use super::*; - - #[derive(Eq, PartialEq, Debug)] - struct NonCopy(i32); - - #[test] - fn smoke() { - let l = RwLock::new(()); - drop(l.read()); - drop(l.write()); - drop((l.read(), l.read())); - drop(l.write()); - } - - // TODO: needs RNG - //#[test] - //fn frob() { - // static R: RwLock = RwLock::new(); - // const N: usize = 10; - // const M: usize = 1000; - // - // let (tx, rx) = channel::<()>(); - // for _ in 0..N { - // let tx = tx.clone(); - // thread::spawn(move|| { - // let mut rng = rand::thread_rng(); - // for _ in 0..M { - // if rng.gen_weighted_bool(N) { - // drop(R.write()); - // } else { - // drop(R.read()); - // } - // } - // drop(tx); - // }); - // } - // drop(tx); - // let _ = rx.recv(); - // unsafe { R.destroy(); } - //} - - #[test] - fn test_rw_arc() { - let arc = Arc::new(RwLock::new(0)); - let arc2 = arc.clone(); - let (tx, rx) = channel(); - - thread::spawn(move || { - let mut lock = arc2.write(); - for _ in 0..10 { - let tmp = *lock; - *lock = -1; - thread::yield_now(); - *lock = tmp + 1; - } - tx.send(()).unwrap(); - }); - - // Readers try to catch the writer in the act - let mut children = Vec::new(); - for _ in 0..5 { - let arc3 = arc.clone(); - children.push(thread::spawn(move || { - let lock = arc3.read(); - assert!(*lock >= 0); - })); - } - - // Wait for children to pass their asserts - for r in children { - assert!(r.join().is_ok()); - } - - // Wait for writer to finish - rx.recv().unwrap(); - let lock = arc.read(); - assert_eq!(*lock, 10); - } - - #[test] - fn test_rw_access_in_unwind() { - let arc = Arc::new(RwLock::new(1)); - let arc2 = arc.clone(); - let _ = thread::spawn(move || -> () { - struct Unwinder { - i: Arc>, - } - impl Drop for Unwinder { - fn drop(&mut self) { - let mut lock = self.i.write(); - *lock += 1; - } - } - let _u = Unwinder { i: arc2 }; - panic!(); - }) - .join(); - let lock = arc.read(); - assert_eq!(*lock, 2); - } - - #[test] - fn test_rwlock_unsized() { - let rw: &RwLock<[i32]> = &RwLock::new([1, 2, 3]); - { - let b = &mut *rw.write(); - b[0] = 4; - b[2] = 5; - } - let comp: &[i32] = &[4, 2, 5]; - assert_eq!(&*rw.read(), comp); - } - - #[test] - fn test_rwlock_try_write() { - use std::mem::drop; - - let lock = RwLock::new(0isize); - let read_guard = lock.read(); - - let write_result = lock.try_write(); - match write_result { - None => (), - Some(_) => assert!( - false, - "try_write should not succeed while read_guard is in scope" - ), - } - - drop(read_guard); - } - - #[test] - fn test_rw_try_read() { - let m = RwLock::new(0); - mem::forget(m.write()); - assert!(m.try_read().is_none()); - } - - #[test] - fn test_into_inner() { - let m = RwLock::new(NonCopy(10)); - assert_eq!(m.into_inner(), NonCopy(10)); - } - - #[test] - fn test_into_inner_drop() { - struct Foo(Arc); - impl Drop for Foo { - fn drop(&mut self) { - self.0.fetch_add(1, Ordering::SeqCst); - } - } - let num_drops = Arc::new(AtomicUsize::new(0)); - let m = RwLock::new(Foo(num_drops.clone())); - assert_eq!(num_drops.load(Ordering::SeqCst), 0); - { - let _inner = m.into_inner(); - assert_eq!(num_drops.load(Ordering::SeqCst), 0); - } - assert_eq!(num_drops.load(Ordering::SeqCst), 1); - } - - #[test] - fn test_force_read_decrement() { - let m = RwLock::new(()); - ::std::mem::forget(m.read()); - ::std::mem::forget(m.read()); - ::std::mem::forget(m.read()); - assert!(m.try_write().is_none()); - unsafe { - m.force_read_decrement(); - m.force_read_decrement(); - } - assert!(m.try_write().is_none()); - unsafe { - m.force_read_decrement(); - } - assert!(m.try_write().is_some()); - } - - #[test] - fn test_force_write_unlock() { - let m = RwLock::new(()); - ::std::mem::forget(m.write()); - assert!(m.try_read().is_none()); - unsafe { - m.force_write_unlock(); - } - assert!(m.try_read().is_some()); - } - - #[test] - fn test_upgrade_downgrade() { - let m = RwLock::new(()); - { - let _r = m.read(); - let upg = m.try_upgradeable_read().unwrap(); - assert!(m.try_read().is_none()); - assert!(m.try_write().is_none()); - assert!(upg.try_upgrade().is_err()); - } - { - let w = m.write(); - assert!(m.try_upgradeable_read().is_none()); - let _r = w.downgrade(); - assert!(m.try_upgradeable_read().is_some()); - assert!(m.try_read().is_some()); - assert!(m.try_write().is_none()); - } - { - let _u = m.upgradeable_read(); - assert!(m.try_upgradeable_read().is_none()); - } - - assert!(m.try_upgradeable_read().unwrap().try_upgrade().is_ok()); - } -} diff -Nru temporalio-1.3.0/vendor/spin/src/rwlock.rs temporalio-1.3.0/vendor/spin/src/rwlock.rs --- temporalio-1.3.0/vendor/spin/src/rwlock.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/spin/src/rwlock.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1165 @@ +//! A lock that provides data access to either one writer or many readers. + +use crate::{ + atomic::{AtomicUsize, Ordering}, + RelaxStrategy, Spin, +}; +use core::{ + cell::UnsafeCell, + fmt, + marker::PhantomData, + mem, + mem::ManuallyDrop, + ops::{Deref, DerefMut}, +}; + +/// A lock that provides data access to either one writer or many readers. +/// +/// This lock behaves in a similar manner to its namesake `std::sync::RwLock` but uses +/// spinning for synchronisation instead. Unlike its namespace, this lock does not +/// track lock poisoning. +/// +/// This type of lock allows a number of readers or at most one writer at any +/// point in time. The write portion of this lock typically allows modification +/// of the underlying data (exclusive access) and the read portion of this lock +/// typically allows for read-only access (shared access). +/// +/// The type parameter `T` represents the data that this lock protects. It is +/// required that `T` satisfies `Send` to be shared across tasks and `Sync` to +/// allow concurrent access through readers. The RAII guards returned from the +/// locking methods implement `Deref` (and `DerefMut` for the `write` methods) +/// to allow access to the contained of the lock. +/// +/// An [`RwLockUpgradableGuard`](RwLockUpgradableGuard) can be upgraded to a +/// writable guard through the [`RwLockUpgradableGuard::upgrade`](RwLockUpgradableGuard::upgrade) +/// [`RwLockUpgradableGuard::try_upgrade`](RwLockUpgradableGuard::try_upgrade) functions. +/// Writable or upgradeable guards can be downgraded through their respective `downgrade` +/// functions. +/// +/// Based on Facebook's +/// [`folly/RWSpinLock.h`](https://github.com/facebook/folly/blob/a0394d84f2d5c3e50ebfd0566f9d3acb52cfab5a/folly/synchronization/RWSpinLock.h). +/// This implementation is unfair to writers - if the lock always has readers, then no writers will +/// ever get a chance. Using an upgradeable lock guard can *somewhat* alleviate this issue as no +/// new readers are allowed when an upgradeable guard is held, but upgradeable guards can be taken +/// when there are existing readers. However if the lock is that highly contended and writes are +/// crucial then this implementation may be a poor choice. +/// +/// # Examples +/// +/// ``` +/// use spin; +/// +/// let lock = spin::RwLock::new(5); +/// +/// // many reader locks can be held at once +/// { +/// let r1 = lock.read(); +/// let r2 = lock.read(); +/// assert_eq!(*r1, 5); +/// assert_eq!(*r2, 5); +/// } // read locks are dropped at this point +/// +/// // only one write lock may be held, however +/// { +/// let mut w = lock.write(); +/// *w += 1; +/// assert_eq!(*w, 6); +/// } // write lock is dropped here +/// ``` +pub struct RwLock { + phantom: PhantomData, + lock: AtomicUsize, + data: UnsafeCell, +} + +const READER: usize = 1 << 2; +const UPGRADED: usize = 1 << 1; +const WRITER: usize = 1; + +/// A guard that provides immutable data access. +/// +/// When the guard falls out of scope it will decrement the read count, +/// potentially releasing the lock. +pub struct RwLockReadGuard<'a, T: 'a + ?Sized> { + lock: &'a AtomicUsize, + data: *const T, +} + +/// A guard that provides mutable data access. +/// +/// When the guard falls out of scope it will release the lock. +pub struct RwLockWriteGuard<'a, T: 'a + ?Sized, R = Spin> { + phantom: PhantomData, + inner: &'a RwLock, + data: *mut T, +} + +/// A guard that provides immutable data access but can be upgraded to [`RwLockWriteGuard`]. +/// +/// No writers or other upgradeable guards can exist while this is in scope. New reader +/// creation is prevented (to alleviate writer starvation) but there may be existing readers +/// when the lock is acquired. +/// +/// When the guard falls out of scope it will release the lock. +pub struct RwLockUpgradableGuard<'a, T: 'a + ?Sized, R = Spin> { + phantom: PhantomData, + inner: &'a RwLock, + data: *const T, +} + +// Same unsafe impls as `std::sync::RwLock` +unsafe impl Send for RwLock {} +unsafe impl Sync for RwLock {} + +unsafe impl Send for RwLockWriteGuard<'_, T, R> {} +unsafe impl Sync for RwLockWriteGuard<'_, T, R> {} + +unsafe impl Send for RwLockReadGuard<'_, T> {} +unsafe impl Sync for RwLockReadGuard<'_, T> {} + +unsafe impl Send for RwLockUpgradableGuard<'_, T, R> {} +unsafe impl Sync for RwLockUpgradableGuard<'_, T, R> {} + +impl RwLock { + /// Creates a new spinlock wrapping the supplied data. + /// + /// May be used statically: + /// + /// ``` + /// use spin; + /// + /// static RW_LOCK: spin::RwLock<()> = spin::RwLock::new(()); + /// + /// fn demo() { + /// let lock = RW_LOCK.read(); + /// // do something with lock + /// drop(lock); + /// } + /// ``` + #[inline] + pub const fn new(data: T) -> Self { + RwLock { + phantom: PhantomData, + lock: AtomicUsize::new(0), + data: UnsafeCell::new(data), + } + } + + /// Consumes this `RwLock`, returning the underlying data. + #[inline] + pub fn into_inner(self) -> T { + // We know statically that there are no outstanding references to + // `self` so there's no need to lock. + let RwLock { data, .. } = self; + data.into_inner() + } + /// Returns a mutable pointer to the underying data. + /// + /// This is mostly meant to be used for applications which require manual unlocking, but where + /// storing both the lock and the pointer to the inner data gets inefficient. + /// + /// While this is safe, writing to the data is undefined behavior unless the current thread has + /// acquired a write lock, and reading requires either a read or write lock. + /// + /// # Example + /// ``` + /// let lock = spin::RwLock::new(42); + /// + /// unsafe { + /// core::mem::forget(lock.write()); + /// + /// assert_eq!(lock.as_mut_ptr().read(), 42); + /// lock.as_mut_ptr().write(58); + /// + /// lock.force_write_unlock(); + /// } + /// + /// assert_eq!(*lock.read(), 58); + /// + /// ``` + #[inline(always)] + pub fn as_mut_ptr(&self) -> *mut T { + self.data.get() + } +} + +impl RwLock { + /// Locks this rwlock with shared read access, blocking the current thread + /// until it can be acquired. + /// + /// The calling thread will be blocked until there are no more writers which + /// hold the lock. There may be other readers currently inside the lock when + /// this method returns. This method does not provide any guarantees with + /// respect to the ordering of whether contentious readers or writers will + /// acquire the lock first. + /// + /// Returns an RAII guard which will release this thread's shared access + /// once it is dropped. + /// + /// ``` + /// let mylock = spin::RwLock::new(0); + /// { + /// let mut data = mylock.read(); + /// // The lock is now locked and the data can be read + /// println!("{}", *data); + /// // The lock is dropped + /// } + /// ``` + #[inline] + pub fn read(&self) -> RwLockReadGuard { + loop { + match self.try_read() { + Some(guard) => return guard, + None => R::relax(), + } + } + } + + /// Lock this rwlock with exclusive write access, blocking the current + /// thread until it can be acquired. + /// + /// This function will not return while other writers or other readers + /// currently have access to the lock. + /// + /// Returns an RAII guard which will drop the write access of this rwlock + /// when dropped. + /// + /// ``` + /// let mylock = spin::RwLock::new(0); + /// { + /// let mut data = mylock.write(); + /// // The lock is now locked and the data can be written + /// *data += 1; + /// // The lock is dropped + /// } + /// ``` + #[inline] + pub fn write(&self) -> RwLockWriteGuard { + loop { + match self.try_write_internal(false) { + Some(guard) => return guard, + None => R::relax(), + } + } + } + + /// Obtain a readable lock guard that can later be upgraded to a writable lock guard. + /// Upgrades can be done through the [`RwLockUpgradableGuard::upgrade`](RwLockUpgradableGuard::upgrade) method. + #[inline] + pub fn upgradeable_read(&self) -> RwLockUpgradableGuard { + loop { + match self.try_upgradeable_read() { + Some(guard) => return guard, + None => R::relax(), + } + } + } +} + +impl RwLock { + // Acquire a read lock, returning the new lock value. + fn acquire_reader(&self) -> usize { + // An arbitrary cap that allows us to catch overflows long before they happen + const MAX_READERS: usize = core::usize::MAX / READER / 2; + + let value = self.lock.fetch_add(READER, Ordering::Acquire); + + if value > MAX_READERS * READER { + self.lock.fetch_sub(READER, Ordering::Relaxed); + panic!("Too many lock readers, cannot safely proceed"); + } else { + value + } + } + + /// Attempt to acquire this lock with shared read access. + /// + /// This function will never block and will return immediately if `read` + /// would otherwise succeed. Returns `Some` of an RAII guard which will + /// release the shared access of this thread when dropped, or `None` if the + /// access could not be granted. This method does not provide any + /// guarantees with respect to the ordering of whether contentious readers + /// or writers will acquire the lock first. + /// + /// ``` + /// let mylock = spin::RwLock::new(0); + /// { + /// match mylock.try_read() { + /// Some(data) => { + /// // The lock is now locked and the data can be read + /// println!("{}", *data); + /// // The lock is dropped + /// }, + /// None => (), // no cigar + /// }; + /// } + /// ``` + #[inline] + pub fn try_read(&self) -> Option> { + let value = self.acquire_reader(); + + // We check the UPGRADED bit here so that new readers are prevented when an UPGRADED lock is held. + // This helps reduce writer starvation. + if value & (WRITER | UPGRADED) != 0 { + // Lock is taken, undo. + self.lock.fetch_sub(READER, Ordering::Release); + None + } else { + Some(RwLockReadGuard { + lock: &self.lock, + data: unsafe { &*self.data.get() }, + }) + } + } + + /// Return the number of readers that currently hold the lock (including upgradable readers). + /// + /// # Safety + /// + /// This function provides no synchronization guarantees and so its result should be considered 'out of date' + /// the instant it is called. Do not use it for synchronization purposes. However, it may be useful as a heuristic. + pub fn reader_count(&self) -> usize { + let state = self.lock.load(Ordering::Relaxed); + state / READER + (state & UPGRADED) / UPGRADED + } + + /// Return the number of writers that currently hold the lock. + /// + /// Because [`RwLock`] guarantees exclusive mutable access, this function may only return either `0` or `1`. + /// + /// # Safety + /// + /// This function provides no synchronization guarantees and so its result should be considered 'out of date' + /// the instant it is called. Do not use it for synchronization purposes. However, it may be useful as a heuristic. + pub fn writer_count(&self) -> usize { + (self.lock.load(Ordering::Relaxed) & WRITER) / WRITER + } + + /// Force decrement the reader count. + /// + /// # Safety + /// + /// This is *extremely* unsafe if there are outstanding `RwLockReadGuard`s + /// live, or if called more times than `read` has been called, but can be + /// useful in FFI contexts where the caller doesn't know how to deal with + /// RAII. The underlying atomic operation uses `Ordering::Release`. + #[inline] + pub unsafe fn force_read_decrement(&self) { + debug_assert!(self.lock.load(Ordering::Relaxed) & !WRITER > 0); + self.lock.fetch_sub(READER, Ordering::Release); + } + + /// Force unlock exclusive write access. + /// + /// # Safety + /// + /// This is *extremely* unsafe if there are outstanding `RwLockWriteGuard`s + /// live, or if called when there are current readers, but can be useful in + /// FFI contexts where the caller doesn't know how to deal with RAII. The + /// underlying atomic operation uses `Ordering::Release`. + #[inline] + pub unsafe fn force_write_unlock(&self) { + debug_assert_eq!(self.lock.load(Ordering::Relaxed) & !(WRITER | UPGRADED), 0); + self.lock.fetch_and(!(WRITER | UPGRADED), Ordering::Release); + } + + #[inline(always)] + fn try_write_internal(&self, strong: bool) -> Option> { + if compare_exchange( + &self.lock, + 0, + WRITER, + Ordering::Acquire, + Ordering::Relaxed, + strong, + ) + .is_ok() + { + Some(RwLockWriteGuard { + phantom: PhantomData, + inner: self, + data: unsafe { &mut *self.data.get() }, + }) + } else { + None + } + } + + /// Attempt to lock this rwlock with exclusive write access. + /// + /// This function does not ever block, and it will return `None` if a call + /// to `write` would otherwise block. If successful, an RAII guard is + /// returned. + /// + /// ``` + /// let mylock = spin::RwLock::new(0); + /// { + /// match mylock.try_write() { + /// Some(mut data) => { + /// // The lock is now locked and the data can be written + /// *data += 1; + /// // The lock is implicitly dropped + /// }, + /// None => (), // no cigar + /// }; + /// } + /// ``` + #[inline] + pub fn try_write(&self) -> Option> { + self.try_write_internal(true) + } + + /// Tries to obtain an upgradeable lock guard. + #[inline] + pub fn try_upgradeable_read(&self) -> Option> { + if self.lock.fetch_or(UPGRADED, Ordering::Acquire) & (WRITER | UPGRADED) == 0 { + Some(RwLockUpgradableGuard { + phantom: PhantomData, + inner: self, + data: unsafe { &*self.data.get() }, + }) + } else { + // We can't unflip the UPGRADED bit back just yet as there is another upgradeable or write lock. + // When they unlock, they will clear the bit. + None + } + } + + /// Returns a mutable reference to the underlying data. + /// + /// Since this call borrows the `RwLock` mutably, no actual locking needs to + /// take place -- the mutable borrow statically guarantees no locks exist. + /// + /// # Examples + /// + /// ``` + /// let mut lock = spin::RwLock::new(0); + /// *lock.get_mut() = 10; + /// assert_eq!(*lock.read(), 10); + /// ``` + pub fn get_mut(&mut self) -> &mut T { + // We know statically that there are no other references to `self`, so + // there's no need to lock the inner lock. + unsafe { &mut *self.data.get() } + } +} + +impl fmt::Debug for RwLock { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self.try_read() { + Some(guard) => write!(f, "RwLock {{ data: ") + .and_then(|()| (&*guard).fmt(f)) + .and_then(|()| write!(f, "}}")), + None => write!(f, "RwLock {{ }}"), + } + } +} + +impl Default for RwLock { + fn default() -> Self { + Self::new(Default::default()) + } +} + +impl From for RwLock { + fn from(data: T) -> Self { + Self::new(data) + } +} + +impl<'rwlock, T: ?Sized> RwLockReadGuard<'rwlock, T> { + /// Leak the lock guard, yielding a reference to the underlying data. + /// + /// Note that this function will permanently lock the original lock for all but reading locks. + /// + /// ``` + /// let mylock = spin::RwLock::new(0); + /// + /// let data: &i32 = spin::RwLockReadGuard::leak(mylock.read()); + /// + /// assert_eq!(*data, 0); + /// ``` + #[inline] + pub fn leak(this: Self) -> &'rwlock T { + let this = ManuallyDrop::new(this); + // Safety: We know statically that only we are referencing data + unsafe { &*this.data } + } +} + +impl<'rwlock, T: ?Sized + fmt::Debug> fmt::Debug for RwLockReadGuard<'rwlock, T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Debug::fmt(&**self, f) + } +} + +impl<'rwlock, T: ?Sized + fmt::Display> fmt::Display for RwLockReadGuard<'rwlock, T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Display::fmt(&**self, f) + } +} + +impl<'rwlock, T: ?Sized, R: RelaxStrategy> RwLockUpgradableGuard<'rwlock, T, R> { + /// Upgrades an upgradeable lock guard to a writable lock guard. + /// + /// ``` + /// let mylock = spin::RwLock::new(0); + /// + /// let upgradeable = mylock.upgradeable_read(); // Readable, but not yet writable + /// let writable = upgradeable.upgrade(); + /// ``` + #[inline] + pub fn upgrade(mut self) -> RwLockWriteGuard<'rwlock, T, R> { + loop { + self = match self.try_upgrade_internal(false) { + Ok(guard) => return guard, + Err(e) => e, + }; + + R::relax(); + } + } +} + +impl<'rwlock, T: ?Sized, R> RwLockUpgradableGuard<'rwlock, T, R> { + #[inline(always)] + fn try_upgrade_internal(self, strong: bool) -> Result, Self> { + if compare_exchange( + &self.inner.lock, + UPGRADED, + WRITER, + Ordering::Acquire, + Ordering::Relaxed, + strong, + ) + .is_ok() + { + let inner = self.inner; + + // Forget the old guard so its destructor doesn't run (before mutably aliasing data below) + mem::forget(self); + + // Upgrade successful + Ok(RwLockWriteGuard { + phantom: PhantomData, + inner, + data: unsafe { &mut *inner.data.get() }, + }) + } else { + Err(self) + } + } + + /// Tries to upgrade an upgradeable lock guard to a writable lock guard. + /// + /// ``` + /// let mylock = spin::RwLock::new(0); + /// let upgradeable = mylock.upgradeable_read(); // Readable, but not yet writable + /// + /// match upgradeable.try_upgrade() { + /// Ok(writable) => /* upgrade successful - use writable lock guard */ (), + /// Err(upgradeable) => /* upgrade unsuccessful */ (), + /// }; + /// ``` + #[inline] + pub fn try_upgrade(self) -> Result, Self> { + self.try_upgrade_internal(true) + } + + #[inline] + /// Downgrades the upgradeable lock guard to a readable, shared lock guard. Cannot fail and is guaranteed not to spin. + /// + /// ``` + /// let mylock = spin::RwLock::new(1); + /// + /// let upgradeable = mylock.upgradeable_read(); + /// assert!(mylock.try_read().is_none()); + /// assert_eq!(*upgradeable, 1); + /// + /// let readable = upgradeable.downgrade(); // This is guaranteed not to spin + /// assert!(mylock.try_read().is_some()); + /// assert_eq!(*readable, 1); + /// ``` + pub fn downgrade(self) -> RwLockReadGuard<'rwlock, T> { + // Reserve the read guard for ourselves + self.inner.acquire_reader(); + + let inner = self.inner; + + // Dropping self removes the UPGRADED bit + mem::drop(self); + + RwLockReadGuard { + lock: &inner.lock, + data: unsafe { &*inner.data.get() }, + } + } + + /// Leak the lock guard, yielding a reference to the underlying data. + /// + /// Note that this function will permanently lock the original lock. + /// + /// ``` + /// let mylock = spin::RwLock::new(0); + /// + /// let data: &i32 = spin::RwLockUpgradableGuard::leak(mylock.upgradeable_read()); + /// + /// assert_eq!(*data, 0); + /// ``` + #[inline] + pub fn leak(this: Self) -> &'rwlock T { + let this = ManuallyDrop::new(this); + // Safety: We know statically that only we are referencing data + unsafe { &*this.data } + } +} + +impl<'rwlock, T: ?Sized + fmt::Debug, R> fmt::Debug for RwLockUpgradableGuard<'rwlock, T, R> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Debug::fmt(&**self, f) + } +} + +impl<'rwlock, T: ?Sized + fmt::Display, R> fmt::Display for RwLockUpgradableGuard<'rwlock, T, R> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Display::fmt(&**self, f) + } +} + +impl<'rwlock, T: ?Sized, R> RwLockWriteGuard<'rwlock, T, R> { + /// Downgrades the writable lock guard to a readable, shared lock guard. Cannot fail and is guaranteed not to spin. + /// + /// ``` + /// let mylock = spin::RwLock::new(0); + /// + /// let mut writable = mylock.write(); + /// *writable = 1; + /// + /// let readable = writable.downgrade(); // This is guaranteed not to spin + /// # let readable_2 = mylock.try_read().unwrap(); + /// assert_eq!(*readable, 1); + /// ``` + #[inline] + pub fn downgrade(self) -> RwLockReadGuard<'rwlock, T> { + // Reserve the read guard for ourselves + self.inner.acquire_reader(); + + let inner = self.inner; + + // Dropping self removes the UPGRADED bit + mem::drop(self); + + RwLockReadGuard { + lock: &inner.lock, + data: unsafe { &*inner.data.get() }, + } + } + + /// Downgrades the writable lock guard to an upgradable, shared lock guard. Cannot fail and is guaranteed not to spin. + /// + /// ``` + /// let mylock = spin::RwLock::new(0); + /// + /// let mut writable = mylock.write(); + /// *writable = 1; + /// + /// let readable = writable.downgrade_to_upgradeable(); // This is guaranteed not to spin + /// assert_eq!(*readable, 1); + /// ``` + #[inline] + pub fn downgrade_to_upgradeable(self) -> RwLockUpgradableGuard<'rwlock, T, R> { + debug_assert_eq!( + self.inner.lock.load(Ordering::Acquire) & (WRITER | UPGRADED), + WRITER + ); + + // Reserve the read guard for ourselves + self.inner.lock.store(UPGRADED, Ordering::Release); + + let inner = self.inner; + + // Dropping self removes the UPGRADED bit + mem::forget(self); + + RwLockUpgradableGuard { + phantom: PhantomData, + inner, + data: unsafe { &*inner.data.get() }, + } + } + + /// Leak the lock guard, yielding a mutable reference to the underlying data. + /// + /// Note that this function will permanently lock the original lock. + /// + /// ``` + /// let mylock = spin::RwLock::new(0); + /// + /// let data: &mut i32 = spin::RwLockWriteGuard::leak(mylock.write()); + /// + /// *data = 1; + /// assert_eq!(*data, 1); + /// ``` + #[inline] + pub fn leak(this: Self) -> &'rwlock mut T { + let mut this = ManuallyDrop::new(this); + // Safety: We know statically that only we are referencing data + unsafe { &mut *this.data } + } +} + +impl<'rwlock, T: ?Sized + fmt::Debug, R> fmt::Debug for RwLockWriteGuard<'rwlock, T, R> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Debug::fmt(&**self, f) + } +} + +impl<'rwlock, T: ?Sized + fmt::Display, R> fmt::Display for RwLockWriteGuard<'rwlock, T, R> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Display::fmt(&**self, f) + } +} + +impl<'rwlock, T: ?Sized> Deref for RwLockReadGuard<'rwlock, T> { + type Target = T; + + fn deref(&self) -> &T { + // Safety: We know statically that only we are referencing data + unsafe { &*self.data } + } +} + +impl<'rwlock, T: ?Sized, R> Deref for RwLockUpgradableGuard<'rwlock, T, R> { + type Target = T; + + fn deref(&self) -> &T { + // Safety: We know statically that only we are referencing data + unsafe { &*self.data } + } +} + +impl<'rwlock, T: ?Sized, R> Deref for RwLockWriteGuard<'rwlock, T, R> { + type Target = T; + + fn deref(&self) -> &T { + // Safety: We know statically that only we are referencing data + unsafe { &*self.data } + } +} + +impl<'rwlock, T: ?Sized, R> DerefMut for RwLockWriteGuard<'rwlock, T, R> { + fn deref_mut(&mut self) -> &mut T { + // Safety: We know statically that only we are referencing data + unsafe { &mut *self.data } + } +} + +impl<'rwlock, T: ?Sized> Drop for RwLockReadGuard<'rwlock, T> { + fn drop(&mut self) { + debug_assert!(self.lock.load(Ordering::Relaxed) & !(WRITER | UPGRADED) > 0); + self.lock.fetch_sub(READER, Ordering::Release); + } +} + +impl<'rwlock, T: ?Sized, R> Drop for RwLockUpgradableGuard<'rwlock, T, R> { + fn drop(&mut self) { + debug_assert_eq!( + self.inner.lock.load(Ordering::Relaxed) & (WRITER | UPGRADED), + UPGRADED + ); + self.inner.lock.fetch_sub(UPGRADED, Ordering::AcqRel); + } +} + +impl<'rwlock, T: ?Sized, R> Drop for RwLockWriteGuard<'rwlock, T, R> { + fn drop(&mut self) { + debug_assert_eq!(self.inner.lock.load(Ordering::Relaxed) & WRITER, WRITER); + + // Writer is responsible for clearing both WRITER and UPGRADED bits. + // The UPGRADED bit may be set if an upgradeable lock attempts an upgrade while this lock is held. + self.inner + .lock + .fetch_and(!(WRITER | UPGRADED), Ordering::Release); + } +} + +#[inline(always)] +fn compare_exchange( + atomic: &AtomicUsize, + current: usize, + new: usize, + success: Ordering, + failure: Ordering, + strong: bool, +) -> Result { + if strong { + atomic.compare_exchange(current, new, success, failure) + } else { + atomic.compare_exchange_weak(current, new, success, failure) + } +} + +#[cfg(feature = "lock_api")] +unsafe impl lock_api_crate::RawRwLock for RwLock<(), R> { + type GuardMarker = lock_api_crate::GuardSend; + + const INIT: Self = Self::new(()); + + #[inline(always)] + fn lock_exclusive(&self) { + // Prevent guard destructor running + core::mem::forget(self.write()); + } + + #[inline(always)] + fn try_lock_exclusive(&self) -> bool { + // Prevent guard destructor running + self.try_write().map(|g| core::mem::forget(g)).is_some() + } + + #[inline(always)] + unsafe fn unlock_exclusive(&self) { + drop(RwLockWriteGuard { + inner: self, + data: &mut (), + phantom: PhantomData, + }); + } + + #[inline(always)] + fn lock_shared(&self) { + // Prevent guard destructor running + core::mem::forget(self.read()); + } + + #[inline(always)] + fn try_lock_shared(&self) -> bool { + // Prevent guard destructor running + self.try_read().map(|g| core::mem::forget(g)).is_some() + } + + #[inline(always)] + unsafe fn unlock_shared(&self) { + drop(RwLockReadGuard { + lock: &self.lock, + data: &(), + }); + } + + #[inline(always)] + fn is_locked(&self) -> bool { + self.lock.load(Ordering::Relaxed) != 0 + } +} + +#[cfg(feature = "lock_api")] +unsafe impl lock_api_crate::RawRwLockUpgrade for RwLock<(), R> { + #[inline(always)] + fn lock_upgradable(&self) { + // Prevent guard destructor running + core::mem::forget(self.upgradeable_read()); + } + + #[inline(always)] + fn try_lock_upgradable(&self) -> bool { + // Prevent guard destructor running + self.try_upgradeable_read() + .map(|g| core::mem::forget(g)) + .is_some() + } + + #[inline(always)] + unsafe fn unlock_upgradable(&self) { + drop(RwLockUpgradableGuard { + inner: self, + data: &(), + phantom: PhantomData, + }); + } + + #[inline(always)] + unsafe fn upgrade(&self) { + let tmp_guard = RwLockUpgradableGuard { + inner: self, + data: &(), + phantom: PhantomData, + }; + core::mem::forget(tmp_guard.upgrade()); + } + + #[inline(always)] + unsafe fn try_upgrade(&self) -> bool { + let tmp_guard = RwLockUpgradableGuard { + inner: self, + data: &(), + phantom: PhantomData, + }; + tmp_guard + .try_upgrade() + .map(|g| core::mem::forget(g)) + .is_ok() + } +} + +#[cfg(feature = "lock_api")] +unsafe impl lock_api_crate::RawRwLockDowngrade for RwLock<(), R> { + unsafe fn downgrade(&self) { + let tmp_guard = RwLockWriteGuard { + inner: self, + data: &mut (), + phantom: PhantomData, + }; + core::mem::forget(tmp_guard.downgrade()); + } +} + +#[cfg(feature = "lock_api1")] +unsafe impl lock_api::RawRwLockUpgradeDowngrade for RwLock<()> { + unsafe fn downgrade_upgradable(&self) { + let tmp_guard = RwLockUpgradableGuard { + inner: self, + data: &(), + phantom: PhantomData, + }; + core::mem::forget(tmp_guard.downgrade()); + } + + unsafe fn downgrade_to_upgradable(&self) { + let tmp_guard = RwLockWriteGuard { + inner: self, + data: &mut (), + phantom: PhantomData, + }; + core::mem::forget(tmp_guard.downgrade_to_upgradeable()); + } +} + +#[cfg(test)] +mod tests { + use std::prelude::v1::*; + + use std::sync::atomic::{AtomicUsize, Ordering}; + use std::sync::mpsc::channel; + use std::sync::Arc; + use std::thread; + + type RwLock = super::RwLock; + + #[derive(Eq, PartialEq, Debug)] + struct NonCopy(i32); + + #[test] + fn smoke() { + let l = RwLock::new(()); + drop(l.read()); + drop(l.write()); + drop((l.read(), l.read())); + drop(l.write()); + } + + // TODO: needs RNG + //#[test] + //fn frob() { + // static R: RwLock = RwLock::new(); + // const N: usize = 10; + // const M: usize = 1000; + // + // let (tx, rx) = channel::<()>(); + // for _ in 0..N { + // let tx = tx.clone(); + // thread::spawn(move|| { + // let mut rng = rand::thread_rng(); + // for _ in 0..M { + // if rng.gen_weighted_bool(N) { + // drop(R.write()); + // } else { + // drop(R.read()); + // } + // } + // drop(tx); + // }); + // } + // drop(tx); + // let _ = rx.recv(); + // unsafe { R.destroy(); } + //} + + #[test] + fn test_rw_arc() { + let arc = Arc::new(RwLock::new(0)); + let arc2 = arc.clone(); + let (tx, rx) = channel(); + + let t = thread::spawn(move || { + let mut lock = arc2.write(); + for _ in 0..10 { + let tmp = *lock; + *lock = -1; + thread::yield_now(); + *lock = tmp + 1; + } + tx.send(()).unwrap(); + }); + + // Readers try to catch the writer in the act + let mut children = Vec::new(); + for _ in 0..5 { + let arc3 = arc.clone(); + children.push(thread::spawn(move || { + let lock = arc3.read(); + assert!(*lock >= 0); + })); + } + + // Wait for children to pass their asserts + for r in children { + assert!(r.join().is_ok()); + } + + // Wait for writer to finish + rx.recv().unwrap(); + let lock = arc.read(); + assert_eq!(*lock, 10); + + assert!(t.join().is_ok()); + } + + #[test] + fn test_rw_access_in_unwind() { + let arc = Arc::new(RwLock::new(1)); + let arc2 = arc.clone(); + let _ = thread::spawn(move || -> () { + struct Unwinder { + i: Arc>, + } + impl Drop for Unwinder { + fn drop(&mut self) { + let mut lock = self.i.write(); + *lock += 1; + } + } + let _u = Unwinder { i: arc2 }; + panic!(); + }) + .join(); + let lock = arc.read(); + assert_eq!(*lock, 2); + } + + #[test] + fn test_rwlock_unsized() { + let rw: &RwLock<[i32]> = &RwLock::new([1, 2, 3]); + { + let b = &mut *rw.write(); + b[0] = 4; + b[2] = 5; + } + let comp: &[i32] = &[4, 2, 5]; + assert_eq!(&*rw.read(), comp); + } + + #[test] + fn test_rwlock_try_write() { + use std::mem::drop; + + let lock = RwLock::new(0isize); + let read_guard = lock.read(); + + let write_result = lock.try_write(); + match write_result { + None => (), + Some(_) => assert!( + false, + "try_write should not succeed while read_guard is in scope" + ), + } + + drop(read_guard); + } + + #[test] + fn test_rw_try_read() { + let m = RwLock::new(0); + ::std::mem::forget(m.write()); + assert!(m.try_read().is_none()); + } + + #[test] + fn test_into_inner() { + let m = RwLock::new(NonCopy(10)); + assert_eq!(m.into_inner(), NonCopy(10)); + } + + #[test] + fn test_into_inner_drop() { + struct Foo(Arc); + impl Drop for Foo { + fn drop(&mut self) { + self.0.fetch_add(1, Ordering::SeqCst); + } + } + let num_drops = Arc::new(AtomicUsize::new(0)); + let m = RwLock::new(Foo(num_drops.clone())); + assert_eq!(num_drops.load(Ordering::SeqCst), 0); + { + let _inner = m.into_inner(); + assert_eq!(num_drops.load(Ordering::SeqCst), 0); + } + assert_eq!(num_drops.load(Ordering::SeqCst), 1); + } + + #[test] + fn test_force_read_decrement() { + let m = RwLock::new(()); + ::std::mem::forget(m.read()); + ::std::mem::forget(m.read()); + ::std::mem::forget(m.read()); + assert!(m.try_write().is_none()); + unsafe { + m.force_read_decrement(); + m.force_read_decrement(); + } + assert!(m.try_write().is_none()); + unsafe { + m.force_read_decrement(); + } + assert!(m.try_write().is_some()); + } + + #[test] + fn test_force_write_unlock() { + let m = RwLock::new(()); + ::std::mem::forget(m.write()); + assert!(m.try_read().is_none()); + unsafe { + m.force_write_unlock(); + } + assert!(m.try_read().is_some()); + } + + #[test] + fn test_upgrade_downgrade() { + let m = RwLock::new(()); + { + let _r = m.read(); + let upg = m.try_upgradeable_read().unwrap(); + assert!(m.try_read().is_none()); + assert!(m.try_write().is_none()); + assert!(upg.try_upgrade().is_err()); + } + { + let w = m.write(); + assert!(m.try_upgradeable_read().is_none()); + let _r = w.downgrade(); + assert!(m.try_upgradeable_read().is_some()); + assert!(m.try_read().is_some()); + assert!(m.try_write().is_none()); + } + { + let _u = m.upgradeable_read(); + assert!(m.try_upgradeable_read().is_none()); + } + + assert!(m.try_upgradeable_read().unwrap().try_upgrade().is_ok()); + } +} diff -Nru temporalio-1.3.0/vendor/syn/benches/rust.rs temporalio-1.3.0/vendor/syn/benches/rust.rs --- temporalio-1.3.0/vendor/syn/benches/rust.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/benches/rust.rs 2023-10-30 19:40:00.000000000 +0000 @@ -80,7 +80,7 @@ rustc_span::create_session_if_not_set_then(Edition::Edition2018, |_| { let cm = Lrc::new(SourceMap::new(FilePathMapping::empty())); let emitter = Box::new(SilentEmitter); - let handler = Handler::with_emitter(false, None, emitter); + let handler = Handler::with_emitter(emitter); let sess = ParseSess::with_span_handler(handler, cm); if let Err(diagnostic) = rustc_parse::parse_crate_from_source_str( FileName::Custom("bench".to_owned()), diff -Nru temporalio-1.3.0/vendor/syn/.cargo-checksum.json temporalio-1.3.0/vendor/syn/.cargo-checksum.json --- temporalio-1.3.0/vendor/syn/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"dcef8b2dc9773c99e7bee29a21e4c627c24c853893e62204808a16bd9cb9004e","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"f6904878f9082d7d267b6d0d737ef211ff165cfd039a4d45ad88e9861f3e217f","benches/file.rs":"0a0527c78d849148cbb6118b4d36f72da7d4add865ba1a410e0a1be9e8dbfe0e","benches/rust.rs":"cc2f7ce7b547b746b02215c8eabeb82697bff9d54fabec70156b54f6dc6492cd","src/attr.rs":"bd5ffae18a363162f7d9c12a1b6c1d023070cbf1b060c98ebc38ef79f1de9c67","src/bigint.rs":"0299829b2f7a1a798fe2f7bc1680e4a10f9b6f4a852d09af4da2deab466c4242","src/buffer.rs":"3ef1c3302acc4f9976484fd11c28981a5ff245cf4f3b8b888b7f065c8614881e","src/custom_keyword.rs":"b82199b98f67ed5c0025f5e8791b8c9a755522e54aa5ab8fbab2b01b36fdb400","src/custom_punctuation.rs":"39b38bc18553aa902a5ce842f503390c30e259b4404d5fb63d2401af7c73b527","src/data.rs":"7d217b0252a0d14b2db308ac00f48ba24a831e01a49b893f5b3ee6b580dab4cb","src/derive.rs":"3132e7f064725c7ca43f26daee93ec78037d46a935c6b0758af905cff450c15c","src/discouraged.rs":"482970b03bdee3cbc30c034f644e3293b25387db46300da5d8d8efd97dad8507","src/drops.rs":"013385f1dd95663f1afab41abc1e2eea04181998644828935ca564c74d6462ae","src/error.rs":"8dbb17978f688e12bcce58232f05c0ca9ed9de1fe511440793fb958da2fc93b9","src/export.rs":"db5b1c71686d2788935ec30fa47d86efe949cc628bea88b6bc2f29cdc833f2e8","src/expr.rs":"82fe9ee906a725be3106abe4f9af3964d6a8199540b8333d915839af719a1737","src/ext.rs":"3cf2d869812e5be894aa1c48bf074da262143fb2df1c9ac1b5ee965bf2a96a1c","src/file.rs":"a4d510dd0e2756bd54983dfa747601918c801e987cbf92deab44cdca6a201aeb","src/gen/clone.rs":"46540509dc99bb849014948a0c5b02ea372d5feceae5ea391c29f226f06516eb","src/gen/debug.rs":"32b2076b755f021428a0fb268a94057e1bcb1cd400feb895946703d7919b843a","src/gen/eq.rs":"aa5455b2cc0d9846d119ce001e821872df911f65133b993e3801a42e8f635f2a","src/gen/fold.rs":"45ac5b6915d5214fa1e9af84621584443f599f838ed936fa8bda3b68a9cc4b6a","src/gen/hash.rs":"4ca8239c681ea5fd7b16bb61bff9034bff09680c088f5a16e90e99013e55742f","src/gen/visit.rs":"0a10ef3a2c5cae7aed83e8ffb5da9f9c85e0fdbae82025cc411f6328bf7fda9e","src/gen/visit_mut.rs":"1f6cfa463da0f970063e70831e3ff6b07d725c77c6e20ece17c0731d90d5b4a4","src/gen_helper.rs":"750caab67ba0ba11a95ea28cd38026485227bb4aa114cdb497472386f60fdb35","src/generics.rs":"cb1a0374c523a469d48b1db7316166559034d437fb4f6cc5661511edb8aba32c","src/group.rs":"fb7f24019ab612ba85f091c4edda3b2f0154f39caa18c9a139ee600afffbeefa","src/ident.rs":"711647537aee87d7249bbcdeb2cc90d146937998dd435395c85c6b18a10b5e07","src/item.rs":"68b2fbbf908460617dd7cf017478638ab6232a5bb2597868d67f1c809aea0232","src/lib.rs":"2ee626b0a8c72516896ec2f874c9ef782fa94bf8dec376eb78b7d46a49e1a210","src/lifetime.rs":"531ef74507eaf942a3aedfac83bbdbc17463102a6c806f675a83a0d6dc612c52","src/lit.rs":"5181d2495a169ac518d5406bef5018b46d4f54edd459c363f6abd4d4322ac35c","src/lookahead.rs":"376092f91a1c32e1b277db0a6790fdda151c9ec51bd971fe6a6545b5b9e73b5d","src/mac.rs":"b1cf73f34a27a8f1429125e726623a524fb5dce875eb68ead3beaffa976442c3","src/macros.rs":"4e464104c590200213635624706d83e4a0ddd5aedd826ab4aabb390000f35ae0","src/meta.rs":"9df61ebaa405ef743ba1629b39ee5e806f9ead77694a1027f192da860270c83d","src/op.rs":"fe5db7c3373b956234ea8a1a7d129a06e5aef5db77c44c1c2fedb4aaa667ac56","src/parse.rs":"e57637899f8533da26e16d41575c3489fd1bf3560cea427ba57b3c966d891d8e","src/parse_macro_input.rs":"4a753b2a6dbfefd6dc93852d66b4f6d73ebd6b8b9be74019fc476f429b9a892d","src/parse_quote.rs":"60eff4d03bf4f5977be86f49faad16d6713121f69bedd868f951bbcabf443d66","src/pat.rs":"4d99c5ed6a08e6adfd0f6c31438befd3f03e48982a36bb2544962d9db7805a4a","src/path.rs":"22a3d05f92b02a81fc704479168154782226c201f394d8a4605cc8d1a0c5921d","src/print.rs":"22910bf0521ab868ebd7c62601c55912d12cfb400c65723e08e5cfa3a2d111c0","src/punctuated.rs":"6c072f20c5ff0eda8916e94c415c8fd62e113faf87316be4b6e5ca64042b6b01","src/restriction.rs":"62efbc127d7e7316dd1070c0e976872de6238b2602bba1fb35df18511b4e7199","src/sealed.rs":"6ece3b3dcb30f6bb98b93d83759ca7712ee8592bef9c0511141039c38765db0e","src/span.rs":"4c13579eaf94803bcdb98696e4c3e26fd5cfb7ad46e5a727ed087e5935530a59","src/spanned.rs":"311f4ca8ab9d436df8861a8ea3411d8eff0920354457e124ac85d0579c074981","src/stmt.rs":"321d445f681c46ac30644504df2a8afc333a1dde0371159e9e077a17eed16548","src/thread.rs":"1f1deb1272525ab2af9a36aac4bce8f65b0e315adb1656641fd7075662f49222","src/token.rs":"8b0b4535972fb7b3640e27cb54f80d0e61f27334f2c4c2226c6bae7958299527","src/tt.rs":"32490509abcc4a5a3c7eb5628337172b3b49d30697d2f7b7df4d8045255c13da","src/ty.rs":"1d11c614298f25a8fa42165a01d6545fc699a446d7f3f8630162c7f478b26886","src/verbatim.rs":"87cbe82a90f48efb57ffd09141042698b3e011a21d0d5412154d80324b0a5ef0","src/whitespace.rs":"718a80c12cdd145358e2690f0f68ff7779a91ec17ce9fde9bb755f635fce69ad","tests/common/eq.rs":"cd40d0811394f153db6e3a233cb1cb82f81a64570f7cde860e87ac71ff500a98","tests/common/mod.rs":"432ad35577f836a20b517d8c26ed994ac25fe73ef2f461c67688b61b99762015","tests/common/parse.rs":"246ddf1d303a9dbbc380e8d0689bd851cef3c3146d09d2627175deb9203b003d","tests/debug/gen.rs":"0b689be01a4f4a0d168617b0f867f248a9e3d211e259926e6ec6c10a59776d81","tests/debug/mod.rs":"dd87563bbd359401790a9c4185178539929ff9fa35a6998657af82a85731fe4c","tests/macros/mod.rs":"aff805b35cfd55aef6a1359ff747e4023afcb08d69d86aff4c19465d29dda088","tests/regression.rs":"e9565ea0efecb4136f099164ffcfa26e1996b0a27fb9c6659e90ad9bdd42e7b6","tests/regression/issue1108.rs":"f32db35244a674e22ff824ca9e5bbec2184e287b59f022db68c418b5878a2edc","tests/regression/issue1235.rs":"a2266b10c3f7c7af5734817ab0a3e8b309b51e7d177b63f26e67e6b744d280b0","tests/repo/mod.rs":"2887a2a0a8119e31a8962c1601c13f2f6db57bd415a50f89147295655e098c37","tests/repo/progress.rs":"c08d0314a7f3ecf760d471f27da3cd2a500aeb9f1c8331bffb2aa648f9fabf3f","tests/test_asyncness.rs":"3868181f25f7470476077f80a442a7804b6b9b371ad5917f4fd18b1002714c64","tests/test_attribute.rs":"b35550a43bbd187bb330997ba36f90c65d8fc489135b1d32ef4547f145cb7612","tests/test_derive_input.rs":"c215245c4d09052661ac5b65b34e950ea47622847bdffe648d380470f12db8f2","tests/test_expr.rs":"1d8688c51d4e8dd5a288722ec8c074320081756fcc83812f23109dffe0caddbf","tests/test_generics.rs":"b77741aa38e6ac7e1a9082faf168e7b7b92fbabf9f3fd07306676339a67394df","tests/test_grouping.rs":"ecbe3324878b2e2be42640a3dec198620cff18731fcb95ee7e94eacd11d2fec1","tests/test_ident.rs":"9eb53d1e21edf23e7c9e14dc74dcc2b2538e9221e19dbcc0a44e3acc2e90f3f6","tests/test_item.rs":"7f0255b61d0a6921313c09aaba470beefc55f1d4e66d1e24cfac7a3f63b035d8","tests/test_iterators.rs":"f4dacb5f3a8e0473dfb0d27f05270d41e79eddb4759b1fad3e88e379b4731e17","tests/test_lit.rs":"7297fed48ca248689f112f67b6f024f2f2784e29c6cd33185ac659c350834b01","tests/test_meta.rs":"3e1bb60b4bd56adb1e04b0e2d867404f0d81f7bf69caf7d8a70fc7090e079e84","tests/test_parse_buffer.rs":"3ed83ea2e50f84b80c0b543aac4bfbd379610d0911c0baa1eb94bb925bda7341","tests/test_parse_stream.rs":"a7e186272c89a239cae03053b5a039cdc073cdb46fad64b178fe76fde98405d5","tests/test_pat.rs":"fe94e084ee478d41cccea4eeb3e975386a70d36ff7cbb902ba0c767d536aab6e","tests/test_path.rs":"0033e1082b576bb3217ebd4546423d6f86fde7ee7ba3aba8c57bf137d2b42f47","tests/test_precedence.rs":"1395b213a1aa953a3b2eacc922853f8d0e3afba552325440bfbe4df6b62102a1","tests/test_receiver.rs":"af64117acd66fbf42edc476f731ecd20c88009d9cb641dbd7a1d6384ae99ae73","tests/test_round_trip.rs":"61183de56bf70c628659b9529f794b9f138904959f919f08f3b8176ba62c76ef","tests/test_shebang.rs":"06d3acabed004767d8b3a0389bde7485a6719cad6a0d0b4ac2c7439b03586651","tests/test_should_parse.rs":"1d3535698a446e2755bfc360676bdb161841a1f454cdef6e7556c6d06a95c89d","tests/test_size.rs":"78c14995718c2f8d5a7296c8f524601c30f91a5586e1402c0775977a4f814406","tests/test_stmt.rs":"42a3707056da0ce3a01f8fb13e8b7631f9be6066627ac376e1874742419ad2cc","tests/test_token_trees.rs":"d012da9c3c861073711b006bf6ffdc073821fb9fb0a08733628cdae57124d1f5","tests/test_ty.rs":"f7f21f76e9e798669f09a95c380e26ae5959ee8ac5f3b765b1a799cc9505d075","tests/test_visibility.rs":"cf4c93997cd88821ef7f8e2dd5d1586175cce4614407cd3bdf371ecc4d8abc44","tests/zzz_stable.rs":"2a862e59cb446235ed99aec0e6ada8e16d3ecc30229b29d825b7c0bbc2602989"},"package":"59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737"} \ No newline at end of file +{"files":{"Cargo.toml":"1fe7cdf292faefe74cebc20883bc16e98f7b1a0324824582a7362c75c0516034","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"f6904878f9082d7d267b6d0d737ef211ff165cfd039a4d45ad88e9861f3e217f","benches/file.rs":"0a0527c78d849148cbb6118b4d36f72da7d4add865ba1a410e0a1be9e8dbfe0e","benches/rust.rs":"c006f01aacf95f61e5d6f4064be4040896a37a9632fb3dcfd9bc2a7ab171741d","src/attr.rs":"bd5ffae18a363162f7d9c12a1b6c1d023070cbf1b060c98ebc38ef79f1de9c67","src/bigint.rs":"0299829b2f7a1a798fe2f7bc1680e4a10f9b6f4a852d09af4da2deab466c4242","src/buffer.rs":"3ef1c3302acc4f9976484fd11c28981a5ff245cf4f3b8b888b7f065c8614881e","src/custom_keyword.rs":"f2704d15a337def453bdb337359fffdd014d62ae875cd6dbd442691c932f89c9","src/custom_punctuation.rs":"4227e8f9c6d78be776db0cf67d6cf836ee2ad39848984c11c1e44febc34ab375","src/data.rs":"7d217b0252a0d14b2db308ac00f48ba24a831e01a49b893f5b3ee6b580dab4cb","src/derive.rs":"3132e7f064725c7ca43f26daee93ec78037d46a935c6b0758af905cff450c15c","src/discouraged.rs":"482970b03bdee3cbc30c034f644e3293b25387db46300da5d8d8efd97dad8507","src/drops.rs":"013385f1dd95663f1afab41abc1e2eea04181998644828935ca564c74d6462ae","src/error.rs":"8dbb17978f688e12bcce58232f05c0ca9ed9de1fe511440793fb958da2fc93b9","src/export.rs":"6b519b1c17967cdd1519f52f981022435fcf940834fc8a705923426b65f21eac","src/expr.rs":"388348e9404a53331fe84d670bc0da889e1e9471461a8dc0a2e010a377103ecf","src/ext.rs":"3cf2d869812e5be894aa1c48bf074da262143fb2df1c9ac1b5ee965bf2a96a1c","src/file.rs":"a4d510dd0e2756bd54983dfa747601918c801e987cbf92deab44cdca6a201aeb","src/gen/clone.rs":"46540509dc99bb849014948a0c5b02ea372d5feceae5ea391c29f226f06516eb","src/gen/debug.rs":"32b2076b755f021428a0fb268a94057e1bcb1cd400feb895946703d7919b843a","src/gen/eq.rs":"aa5455b2cc0d9846d119ce001e821872df911f65133b993e3801a42e8f635f2a","src/gen/fold.rs":"305fe1db2b5b7039e79104a6e8ead11b1ee3c009f31f2a2bbebca10e494188cd","src/gen/hash.rs":"4ca8239c681ea5fd7b16bb61bff9034bff09680c088f5a16e90e99013e55742f","src/gen/visit.rs":"cbd0ebe18da62614c66a7900ef67350a5efee261bcdfff6cffc1ea6c4e754e34","src/gen/visit_mut.rs":"1b2a260ab3a6465eed6164f6d2c0cec977f9c3ca912f6bed81f8599b4d8f5cb0","src/gen_helper.rs":"750caab67ba0ba11a95ea28cd38026485227bb4aa114cdb497472386f60fdb35","src/generics.rs":"cb1a0374c523a469d48b1db7316166559034d437fb4f6cc5661511edb8aba32c","src/group.rs":"f5911e9cf2dc2dffab546590167c48de30409cb7708aa3307d22be143df720e4","src/ident.rs":"c26102f3dd66c85e05dbc9e41fb8c6ff3cf227e1ec84152b7ac920584a866578","src/item.rs":"68b2fbbf908460617dd7cf017478638ab6232a5bb2597868d67f1c809aea0232","src/lib.rs":"8c67ef153c56a2552c027256ad99407b7a6ae3a4dd43fda80ec9070780348da7","src/lifetime.rs":"531ef74507eaf942a3aedfac83bbdbc17463102a6c806f675a83a0d6dc612c52","src/lit.rs":"f7d5029e33a49d400a52027540134a86565cbcb5362f15097ffdc63d3a057380","src/lookahead.rs":"376092f91a1c32e1b277db0a6790fdda151c9ec51bd971fe6a6545b5b9e73b5d","src/mac.rs":"b1cf73f34a27a8f1429125e726623a524fb5dce875eb68ead3beaffa976442c3","src/macros.rs":"4e464104c590200213635624706d83e4a0ddd5aedd826ab4aabb390000f35ae0","src/meta.rs":"9df61ebaa405ef743ba1629b39ee5e806f9ead77694a1027f192da860270c83d","src/op.rs":"fe5db7c3373b956234ea8a1a7d129a06e5aef5db77c44c1c2fedb4aaa667ac56","src/parse.rs":"e57637899f8533da26e16d41575c3489fd1bf3560cea427ba57b3c966d891d8e","src/parse_macro_input.rs":"4a753b2a6dbfefd6dc93852d66b4f6d73ebd6b8b9be74019fc476f429b9a892d","src/parse_quote.rs":"08c8f4eaedeffaac73170b59921d140f63f4a01c243993dff050b4b848d0ac1f","src/pat.rs":"4d99c5ed6a08e6adfd0f6c31438befd3f03e48982a36bb2544962d9db7805a4a","src/path.rs":"f53bd51c4049630c9c28ba5a07276f110d87ef9da737a143fe4c2aa2e92d1fd3","src/print.rs":"22910bf0521ab868ebd7c62601c55912d12cfb400c65723e08e5cfa3a2d111c0","src/punctuated.rs":"dffaab15b9215c70d7db416e8d4c44b78c43ba2f255485e6211363f0f0fea063","src/restriction.rs":"62efbc127d7e7316dd1070c0e976872de6238b2602bba1fb35df18511b4e7199","src/sealed.rs":"6ece3b3dcb30f6bb98b93d83759ca7712ee8592bef9c0511141039c38765db0e","src/span.rs":"0a48e375e5c9768f6f64174a91ba6a255f4b021e2fb3548d8494e617f142601b","src/spanned.rs":"1bba75d73dd4dc5be6c4e11fdd72686d340fb25b5808830bd603ddc840beabdc","src/stmt.rs":"321d445f681c46ac30644504df2a8afc333a1dde0371159e9e077a17eed16548","src/thread.rs":"1f1deb1272525ab2af9a36aac4bce8f65b0e315adb1656641fd7075662f49222","src/token.rs":"94cca416e38225dc8e7ca5033a33f2edc216cb0680696ac81127351d3b2d7785","src/tt.rs":"32490509abcc4a5a3c7eb5628337172b3b49d30697d2f7b7df4d8045255c13da","src/ty.rs":"1d11c614298f25a8fa42165a01d6545fc699a446d7f3f8630162c7f478b26886","src/verbatim.rs":"87cbe82a90f48efb57ffd09141042698b3e011a21d0d5412154d80324b0a5ef0","src/whitespace.rs":"718a80c12cdd145358e2690f0f68ff7779a91ec17ce9fde9bb755f635fce69ad","tests/common/eq.rs":"add52aa28c339853660cea002b80aaf56f919757266c68873fb117a20ddd66f5","tests/common/mod.rs":"432ad35577f836a20b517d8c26ed994ac25fe73ef2f461c67688b61b99762015","tests/common/parse.rs":"246ddf1d303a9dbbc380e8d0689bd851cef3c3146d09d2627175deb9203b003d","tests/debug/gen.rs":"0b689be01a4f4a0d168617b0f867f248a9e3d211e259926e6ec6c10a59776d81","tests/debug/mod.rs":"dd87563bbd359401790a9c4185178539929ff9fa35a6998657af82a85731fe4c","tests/macros/mod.rs":"4c84bd9e82df255258671b6a57b0f2a3e4bef2127a2e8b842a4b6f3037b7fc5c","tests/regression.rs":"e9565ea0efecb4136f099164ffcfa26e1996b0a27fb9c6659e90ad9bdd42e7b6","tests/regression/issue1108.rs":"f32db35244a674e22ff824ca9e5bbec2184e287b59f022db68c418b5878a2edc","tests/regression/issue1235.rs":"a2266b10c3f7c7af5734817ab0a3e8b309b51e7d177b63f26e67e6b744d280b0","tests/repo/mod.rs":"a857b13b258846a5f2b25c66e8db149c703ab7f623505dc18206eec4244ffba2","tests/repo/progress.rs":"c08d0314a7f3ecf760d471f27da3cd2a500aeb9f1c8331bffb2aa648f9fabf3f","tests/test_asyncness.rs":"3868181f25f7470476077f80a442a7804b6b9b371ad5917f4fd18b1002714c64","tests/test_attribute.rs":"b35550a43bbd187bb330997ba36f90c65d8fc489135b1d32ef4547f145cb7612","tests/test_derive_input.rs":"c215245c4d09052661ac5b65b34e950ea47622847bdffe648d380470f12db8f2","tests/test_expr.rs":"2de81f6171bcde3db8d36ce90b9c77ce672f93dcb1e03b6a44290b039246132b","tests/test_generics.rs":"b77741aa38e6ac7e1a9082faf168e7b7b92fbabf9f3fd07306676339a67394df","tests/test_grouping.rs":"ecbe3324878b2e2be42640a3dec198620cff18731fcb95ee7e94eacd11d2fec1","tests/test_ident.rs":"9eb53d1e21edf23e7c9e14dc74dcc2b2538e9221e19dbcc0a44e3acc2e90f3f6","tests/test_item.rs":"7f0255b61d0a6921313c09aaba470beefc55f1d4e66d1e24cfac7a3f63b035d8","tests/test_iterators.rs":"f4dacb5f3a8e0473dfb0d27f05270d41e79eddb4759b1fad3e88e379b4731e17","tests/test_lit.rs":"7297fed48ca248689f112f67b6f024f2f2784e29c6cd33185ac659c350834b01","tests/test_meta.rs":"3e1bb60b4bd56adb1e04b0e2d867404f0d81f7bf69caf7d8a70fc7090e079e84","tests/test_parse_buffer.rs":"3ed83ea2e50f84b80c0b543aac4bfbd379610d0911c0baa1eb94bb925bda7341","tests/test_parse_stream.rs":"a7e186272c89a239cae03053b5a039cdc073cdb46fad64b178fe76fde98405d5","tests/test_pat.rs":"fe94e084ee478d41cccea4eeb3e975386a70d36ff7cbb902ba0c767d536aab6e","tests/test_path.rs":"0033e1082b576bb3217ebd4546423d6f86fde7ee7ba3aba8c57bf137d2b42f47","tests/test_precedence.rs":"1395b213a1aa953a3b2eacc922853f8d0e3afba552325440bfbe4df6b62102a1","tests/test_receiver.rs":"af64117acd66fbf42edc476f731ecd20c88009d9cb641dbd7a1d6384ae99ae73","tests/test_round_trip.rs":"61183de56bf70c628659b9529f794b9f138904959f919f08f3b8176ba62c76ef","tests/test_shebang.rs":"06d3acabed004767d8b3a0389bde7485a6719cad6a0d0b4ac2c7439b03586651","tests/test_should_parse.rs":"1d3535698a446e2755bfc360676bdb161841a1f454cdef6e7556c6d06a95c89d","tests/test_size.rs":"78c14995718c2f8d5a7296c8f524601c30f91a5586e1402c0775977a4f814406","tests/test_stmt.rs":"42a3707056da0ce3a01f8fb13e8b7631f9be6066627ac376e1874742419ad2cc","tests/test_token_trees.rs":"d012da9c3c861073711b006bf6ffdc073821fb9fb0a08733628cdae57124d1f5","tests/test_ty.rs":"f7f21f76e9e798669f09a95c380e26ae5959ee8ac5f3b765b1a799cc9505d075","tests/test_visibility.rs":"cf4c93997cd88821ef7f8e2dd5d1586175cce4614407cd3bdf371ecc4d8abc44","tests/zzz_stable.rs":"2a862e59cb446235ed99aec0e6ada8e16d3ecc30229b29d825b7c0bbc2602989"},"package":"c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/syn/Cargo.toml temporalio-1.3.0/vendor/syn/Cargo.toml --- temporalio-1.3.0/vendor/syn/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ edition = "2021" rust-version = "1.56" name = "syn" -version = "2.0.23" +version = "2.0.29" authors = ["David Tolnay "] include = [ "/benches/**", @@ -43,6 +43,7 @@ rustdoc-args = [ "--cfg", "doc_cfg", + "--generate-link-to-definition", ] targets = ["x86_64-unknown-linux-gnu"] diff -Nru temporalio-1.3.0/vendor/syn/src/custom_keyword.rs temporalio-1.3.0/vendor/syn/src/custom_keyword.rs --- temporalio-1.3.0/vendor/syn/src/custom_keyword.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/src/custom_keyword.rs 2023-10-30 19:40:00.000000000 +0000 @@ -224,7 +224,7 @@ macro_rules! impl_extra_traits_for_custom_keyword { ($ident:ident) => { impl $crate::__private::Debug for $ident { - fn fmt(&self, f: &mut $crate::__private::Formatter) -> $crate::__private::fmt::Result { + fn fmt(&self, f: &mut $crate::__private::Formatter) -> $crate::__private::FmtResult { $crate::__private::Formatter::write_str( f, $crate::__private::concat!( diff -Nru temporalio-1.3.0/vendor/syn/src/custom_punctuation.rs temporalio-1.3.0/vendor/syn/src/custom_punctuation.rs --- temporalio-1.3.0/vendor/syn/src/custom_punctuation.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/src/custom_punctuation.rs 2023-10-30 19:40:00.000000000 +0000 @@ -195,7 +195,7 @@ macro_rules! impl_extra_traits_for_custom_punctuation { ($ident:ident, $($tt:tt)+) => { impl $crate::__private::Debug for $ident { - fn fmt(&self, f: &mut $crate::__private::Formatter) -> $crate::__private::fmt::Result { + fn fmt(&self, f: &mut $crate::__private::Formatter) -> $crate::__private::FmtResult { $crate::__private::Formatter::write_str(f, $crate::__private::stringify!($ident)) } } diff -Nru temporalio-1.3.0/vendor/syn/src/export.rs temporalio-1.3.0/vendor/syn/src/export.rs --- temporalio-1.3.0/vendor/syn/src/export.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/src/export.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,47 +1,69 @@ +#[doc(hidden)] pub use std::clone::Clone; +#[doc(hidden)] pub use std::cmp::{Eq, PartialEq}; +#[doc(hidden)] pub use std::concat; +#[doc(hidden)] pub use std::default::Default; -pub use std::fmt::{self, Debug, Formatter}; +#[doc(hidden)] +pub use std::fmt::Debug; +#[doc(hidden)] pub use std::hash::{Hash, Hasher}; +#[doc(hidden)] pub use std::marker::Copy; +#[doc(hidden)] pub use std::option::Option::{None, Some}; +#[doc(hidden)] pub use std::result::Result::{Err, Ok}; +#[doc(hidden)] pub use std::stringify; +#[doc(hidden)] +pub type Formatter<'a> = std::fmt::Formatter<'a>; +#[doc(hidden)] +pub type FmtResult = std::fmt::Result; + +#[doc(hidden)] +pub type bool = std::primitive::bool; +#[doc(hidden)] +pub type str = std::primitive::str; + #[cfg(feature = "printing")] +#[doc(hidden)] pub use quote; -pub use proc_macro2::{Span, TokenStream as TokenStream2}; +#[doc(hidden)] +pub type Span = proc_macro2::Span; +#[doc(hidden)] +pub type TokenStream2 = proc_macro2::TokenStream; #[cfg(feature = "parsing")] +#[doc(hidden)] pub use crate::group::{parse_braces, parse_brackets, parse_parens}; +#[doc(hidden)] pub use crate::span::IntoSpans; #[cfg(all(feature = "parsing", feature = "printing"))] +#[doc(hidden)] pub use crate::parse_quote::parse as parse_quote; #[cfg(feature = "parsing")] +#[doc(hidden)] pub use crate::token::parsing::{peek_punct, punct as parse_punct}; #[cfg(feature = "printing")] +#[doc(hidden)] pub use crate::token::printing::punct as print_punct; #[cfg(feature = "proc-macro")] -pub use proc_macro::TokenStream; +#[doc(hidden)] +pub type TokenStream = proc_macro::TokenStream; #[cfg(feature = "printing")] +#[doc(hidden)] pub use quote::{ToTokens, TokenStreamExt}; -#[allow(non_camel_case_types)] -pub type bool = help::Bool; -#[allow(non_camel_case_types)] -pub type str = help::Str; - -mod help { - pub type Bool = bool; - pub type Str = str; -} - +#[doc(hidden)] pub struct private(pub(crate) ()); diff -Nru temporalio-1.3.0/vendor/syn/src/expr.rs temporalio-1.3.0/vendor/syn/src/expr.rs --- temporalio-1.3.0/vendor/syn/src/expr.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/src/expr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1663,7 +1663,7 @@ } Ok(expr) } else { - Err(input.error("expected expression")) + Err(input.error("expected an expression")) } } diff -Nru temporalio-1.3.0/vendor/syn/src/gen/fold.rs temporalio-1.3.0/vendor/syn/src/gen/fold.rs --- temporalio-1.3.0/vendor/syn/src/gen/fold.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/src/gen/fold.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,11 @@ // It is not intended for manual editing. #![allow(unreachable_code, unused_variables)] -#![allow(clippy::match_wildcard_for_single_variants, clippy::needless_match)] +#![allow( + clippy::match_wildcard_for_single_variants, + clippy::needless_match, + clippy::needless_pass_by_ref_mut, +)] #[cfg(any(feature = "full", feature = "derive"))] use crate::gen::helper::fold::*; use crate::*; diff -Nru temporalio-1.3.0/vendor/syn/src/gen/visit_mut.rs temporalio-1.3.0/vendor/syn/src/gen/visit_mut.rs --- temporalio-1.3.0/vendor/syn/src/gen/visit_mut.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/src/gen/visit_mut.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,6 +2,7 @@ // It is not intended for manual editing. #![allow(unused_variables)] +#![allow(clippy::needless_pass_by_ref_mut)] #[cfg(any(feature = "full", feature = "derive"))] use crate::punctuated::Punctuated; use crate::*; diff -Nru temporalio-1.3.0/vendor/syn/src/gen/visit.rs temporalio-1.3.0/vendor/syn/src/gen/visit.rs --- temporalio-1.3.0/vendor/syn/src/gen/visit.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/src/gen/visit.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,6 +2,7 @@ // It is not intended for manual editing. #![allow(unused_variables)] +#![allow(clippy::needless_pass_by_ref_mut)] #[cfg(any(feature = "full", feature = "derive"))] use crate::punctuated::Punctuated; use crate::*; diff -Nru temporalio-1.3.0/vendor/syn/src/group.rs temporalio-1.3.0/vendor/syn/src/group.rs --- temporalio-1.3.0/vendor/syn/src/group.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/src/group.rs 2023-10-30 19:40:00.000000000 +0000 @@ -7,21 +7,27 @@ // Not public API. #[doc(hidden)] pub struct Parens<'a> { + #[doc(hidden)] pub token: token::Paren, + #[doc(hidden)] pub content: ParseBuffer<'a>, } // Not public API. #[doc(hidden)] pub struct Braces<'a> { + #[doc(hidden)] pub token: token::Brace, + #[doc(hidden)] pub content: ParseBuffer<'a>, } // Not public API. #[doc(hidden)] pub struct Brackets<'a> { + #[doc(hidden)] pub token: token::Bracket, + #[doc(hidden)] pub content: ParseBuffer<'a>, } @@ -29,7 +35,9 @@ #[cfg(any(feature = "full", feature = "derive"))] #[doc(hidden)] pub struct Group<'a> { + #[doc(hidden)] pub token: token::Group, + #[doc(hidden)] pub content: ParseBuffer<'a>, } diff -Nru temporalio-1.3.0/vendor/syn/src/ident.rs temporalio-1.3.0/vendor/syn/src/ident.rs --- temporalio-1.3.0/vendor/syn/src/ident.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/src/ident.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,7 +3,6 @@ pub use proc_macro2::Ident; -#[cfg(not(doc))] // rustdoc bug: https://github.com/rust-lang/rust/issues/105735 #[cfg(feature = "parsing")] #[doc(hidden)] #[allow(non_snake_case)] diff -Nru temporalio-1.3.0/vendor/syn/src/lib.rs temporalio-1.3.0/vendor/syn/src/lib.rs --- temporalio-1.3.0/vendor/syn/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -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.23")] +#![doc(html_root_url = "https://docs.rs/syn/2.0.29")] #![cfg_attr(doc_cfg, feature(doc_cfg))] #![allow(non_camel_case_types)] #![allow( @@ -373,6 +373,7 @@ pub use crate::generics::{ImplGenerics, Turbofish, TypeGenerics}; mod ident; +#[doc(inline)] pub use crate::ident::Ident; #[cfg(feature = "full")] @@ -388,9 +389,11 @@ }; mod lifetime; +#[doc(inline)] pub use crate::lifetime::Lifetime; mod lit; +#[doc(inline)] pub use crate::lit::{ Lit, LitBool, LitByte, LitByteStr, LitChar, LitFloat, LitInt, LitStr, StrStyle, }; diff -Nru temporalio-1.3.0/vendor/syn/src/lit.rs temporalio-1.3.0/vendor/syn/src/lit.rs --- temporalio-1.3.0/vendor/syn/src/lit.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/src/lit.rs 2023-10-30 19:40:00.000000000 +0000 @@ -228,7 +228,17 @@ let mut tokens = TokenStream::from_str(&self.value())?; tokens = respan_token_stream(tokens, self.span()); - parser.parse2(tokens) + let result = parser.parse2(tokens)?; + + let suffix = self.suffix(); + if !suffix.is_empty() { + return Err(Error::new( + self.span(), + format!("unexpected suffix `{}` on string literal", suffix), + )); + } + + Ok(result) } pub fn span(&self) -> Span { diff -Nru temporalio-1.3.0/vendor/syn/src/parse_quote.rs temporalio-1.3.0/vendor/syn/src/parse_quote.rs --- temporalio-1.3.0/vendor/syn/src/parse_quote.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/src/parse_quote.rs 2023-10-30 19:40:00.000000000 +0000 @@ -120,6 +120,7 @@ } } +#[doc(hidden)] pub trait ParseQuote: Sized { fn parse(input: ParseStream) -> Result; } diff -Nru temporalio-1.3.0/vendor/syn/src/path.rs temporalio-1.3.0/vendor/syn/src/path.rs --- temporalio-1.3.0/vendor/syn/src/path.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/src/path.rs 2023-10-30 19:40:00.000000000 +0000 @@ -53,8 +53,9 @@ /// } /// } /// ``` - pub fn is_ident(&self, ident: &I) -> bool + pub fn is_ident(&self, ident: &I) -> bool where + I: ?Sized, Ident: PartialEq, { match self.get_ident() { @@ -368,7 +369,6 @@ return Ok(Expr::Lit(lit)); } - #[cfg(feature = "full")] if input.peek(Ident) { let ident: Ident = input.parse()?; return Ok(Expr::Path(ExprPath { @@ -649,6 +649,10 @@ pub(crate) mod printing { use super::*; use crate::print::TokensOrDefault; + #[cfg(feature = "parsing")] + use crate::spanned::Spanned; + #[cfg(feature = "parsing")] + use proc_macro2::Span; use proc_macro2::TokenStream; use quote::ToTokens; use std::cmp; @@ -692,10 +696,21 @@ GenericArgument::Lifetime(lt) => lt.to_tokens(tokens), GenericArgument::Type(ty) => ty.to_tokens(tokens), GenericArgument::Const(expr) => match expr { - Expr::Lit(_) => expr.to_tokens(tokens), + Expr::Lit(expr) => expr.to_tokens(tokens), + + Expr::Path(expr) + if expr.attrs.is_empty() + && expr.qself.is_none() + && expr.path.get_ident().is_some() => + { + expr.to_tokens(tokens); + } #[cfg(feature = "full")] - Expr::Block(_) => expr.to_tokens(tokens), + Expr::Block(expr) => expr.to_tokens(tokens), + + #[cfg(not(feature = "full"))] + Expr::Verbatim(expr) => expr.to_tokens(tokens), // ERROR CORRECTION: Add braces to make sure that the // generated code is valid. @@ -826,4 +841,21 @@ segment.to_tokens(tokens); } } + + #[cfg(feature = "parsing")] + #[cfg_attr(doc_cfg, doc(cfg(all(feature = "parsing", feature = "printing"))))] + impl Spanned for QSelf { + fn span(&self) -> Span { + struct QSelfDelimiters<'a>(&'a QSelf); + + impl<'a> ToTokens for QSelfDelimiters<'a> { + fn to_tokens(&self, tokens: &mut TokenStream) { + self.0.lt_token.to_tokens(tokens); + self.0.gt_token.to_tokens(tokens); + } + } + + QSelfDelimiters(self).span() + } + } } diff -Nru temporalio-1.3.0/vendor/syn/src/punctuated.rs temporalio-1.3.0/vendor/syn/src/punctuated.rs --- temporalio-1.3.0/vendor/syn/src/punctuated.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/src/punctuated.rs 2023-10-30 19:40:00.000000000 +0000 @@ -369,6 +369,11 @@ last: self.last.clone(), } } + + fn clone_from(&mut self, other: &Self) { + self.inner.clone_from(&other.inner); + self.last.clone_from(&other.last); + } } #[cfg(feature = "extra-traits")] diff -Nru temporalio-1.3.0/vendor/syn/src/spanned.rs temporalio-1.3.0/vendor/syn/src/spanned.rs --- temporalio-1.3.0/vendor/syn/src/spanned.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/src/spanned.rs 2023-10-30 19:40:00.000000000 +0000 @@ -112,4 +112,7 @@ pub trait Sealed {} impl Sealed for T {} + + #[cfg(any(feature = "full", feature = "derive"))] + impl Sealed for crate::QSelf {} } diff -Nru temporalio-1.3.0/vendor/syn/src/span.rs temporalio-1.3.0/vendor/syn/src/span.rs --- temporalio-1.3.0/vendor/syn/src/span.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/src/span.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,7 @@ use proc_macro2::extra::DelimSpan; use proc_macro2::{Delimiter, Group, Span, TokenStream}; +#[doc(hidden)] pub trait IntoSpans { fn into_spans(self) -> S; } diff -Nru temporalio-1.3.0/vendor/syn/src/token.rs temporalio-1.3.0/vendor/syn/src/token.rs --- temporalio-1.3.0/vendor/syn/src/token.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/src/token.rs 2023-10-30 19:40:00.000000000 +0000 @@ -974,6 +974,7 @@ } } + #[doc(hidden)] pub fn punct(input: ParseStream, token: &str) -> Result<[Span; N]> { let mut spans = [input.span(); N]; punct_helper(input, token, &mut spans)?; @@ -1006,6 +1007,7 @@ }) } + #[doc(hidden)] pub fn peek_punct(mut cursor: Cursor, token: &str) -> bool { for (i, ch) in token.chars().enumerate() { match cursor.punct() { @@ -1033,6 +1035,7 @@ use proc_macro2::{Delimiter, Group, Ident, Punct, Spacing, Span, TokenStream}; use quote::TokenStreamExt; + #[doc(hidden)] pub fn punct(s: &str, spans: &[Span], tokens: &mut TokenStream) { assert_eq!(s.len(), spans.len()); diff -Nru temporalio-1.3.0/vendor/syn/tests/common/eq.rs temporalio-1.3.0/vendor/syn/tests/common/eq.rs --- temporalio-1.3.0/vendor/syn/tests/common/eq.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/tests/common/eq.rs 2023-10-30 19:40:00.000000000 +0000 @@ -93,7 +93,6 @@ use rustc_ast::ast::LocalKind; use rustc_ast::ast::MacCall; use rustc_ast::ast::MacCallStmt; -use rustc_ast::ast::MacDelimiter; use rustc_ast::ast::MacStmtStyle; use rustc_ast::ast::MacroDef; use rustc_ast::ast::MetaItemLit; @@ -457,7 +456,7 @@ spanless_eq_struct!(BindingAnnotation; 0 1); spanless_eq_struct!(Block; stmts id rules span tokens could_be_bare_literal); spanless_eq_struct!(Closure; binder capture_clause constness asyncness movability fn_decl body !fn_decl_span !fn_arg_span); -spanless_eq_struct!(ConstItem; defaultness ty expr); +spanless_eq_struct!(ConstItem; defaultness generics ty expr); spanless_eq_struct!(Crate; attrs items spans id is_placeholder); spanless_eq_struct!(DelimArgs; dspan delim tokens); spanless_eq_struct!(EnumDef; variants); @@ -558,7 +557,6 @@ spanless_eq_enum!(LitFloatType; Suffixed(0) Unsuffixed); spanless_eq_enum!(LitIntType; Signed(0) Unsigned(0) Unsuffixed); spanless_eq_enum!(LocalKind; Decl Init(0) InitElse(0 1)); -spanless_eq_enum!(MacDelimiter; Parenthesis Bracket Brace); spanless_eq_enum!(MacStmtStyle; Semicolon Braces NoBraces); spanless_eq_enum!(ModKind; Loaded(0 1 2) Unloaded); spanless_eq_enum!(Movability; Static Movable); @@ -584,7 +582,7 @@ Tup(0) Binary(0 1 2) Unary(0 1) Lit(0) Cast(0 1) Type(0 1) Let(0 1 2) If(0 1 2) While(0 1 2) ForLoop(0 1 2 3) Loop(0 1 2) Match(0 1) Closure(0) Block(0 1) Async(0 1) Await(0 1) TryBlock(0) Assign(0 1 2) AssignOp(0 1 2) - Field(0 1) Index(0 1) Underscore Range(0 1 2) Path(0 1) AddrOf(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) Err); diff -Nru temporalio-1.3.0/vendor/syn/tests/macros/mod.rs temporalio-1.3.0/vendor/syn/tests/macros/mod.rs --- temporalio-1.3.0/vendor/syn/tests/macros/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/tests/macros/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -38,14 +38,20 @@ let $expr = crate::macros::Tokens::parse::<$t>($expr).unwrap(); let debug = crate::macros::debug::Lite(&$expr); if !cfg!(miri) { - insta::assert_debug_snapshot!(debug, @$snapshot); + #[allow(clippy::needless_raw_string_hashes)] // https://github.com/mitsuhiko/insta/issues/389 + { + insta::assert_debug_snapshot!(debug, @$snapshot); + } } }; (($($expr:tt)*) as $t:ty, @$snapshot:literal) => {{ let syntax_tree = crate::macros::Tokens::parse::<$t>($($expr)*).unwrap(); let debug = crate::macros::debug::Lite(&syntax_tree); if !cfg!(miri) { - insta::assert_debug_snapshot!(debug, @$snapshot); + #[allow(clippy::needless_raw_string_hashes)] + { + insta::assert_debug_snapshot!(debug, @$snapshot); + } } syntax_tree }}; @@ -53,7 +59,10 @@ let syntax_tree = $($expr)*; let debug = crate::macros::debug::Lite(&syntax_tree); if !cfg!(miri) { - insta::assert_debug_snapshot!(debug, @$snapshot); + #[allow(clippy::needless_raw_string_hashes)] + { + insta::assert_debug_snapshot!(debug, @$snapshot); + } } syntax_tree }}; diff -Nru temporalio-1.3.0/vendor/syn/tests/repo/mod.rs temporalio-1.3.0/vendor/syn/tests/repo/mod.rs --- temporalio-1.3.0/vendor/syn/tests/repo/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/tests/repo/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -13,10 +13,17 @@ use tar::Archive; use walkdir::{DirEntry, WalkDir}; -const REVISION: &str = "fe7454bf439c93cbe9ac8a8f7fcfacd5a40244c2"; +const REVISION: &str = "85bf07972a1041b9e25393b803d0e006bec3eaaf"; #[rustfmt::skip] static EXCLUDE_FILES: &[&str] = &[ + // CStr literals (c"…") are not yet supported by rustc's lexer + // https://github.com/rust-lang/rust/issues/113333 + "src/tools/clippy/tests/ui/needless_raw_string_hashes.rs", + "src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0085_expr_literals.rs", + "src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0085_expr_literals.rs", + "tests/ui/explicit-tail-calls/return-lifetime-sub.rs", + // TODO: non-lifetime binders: `where for<'a, T> &'a Struct: Trait` // https://github.com/dtolnay/syn/issues/1435 "tests/rustdoc-json/non_lifetime_binders.rs", diff -Nru temporalio-1.3.0/vendor/syn/tests/test_expr.rs temporalio-1.3.0/vendor/syn/tests/test_expr.rs --- temporalio-1.3.0/vendor/syn/tests/test_expr.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/syn/tests/test_expr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -85,7 +85,7 @@ assert_eq!(expected, syn::parse_str(input).unwrap()); } - for tokens in vec![ + for tokens in [ quote!(tuple.0.0), quote!(tuple .0.0), quote!(tuple. 0.0), diff -Nru temporalio-1.3.0/vendor/tar/.cargo-checksum.json temporalio-1.3.0/vendor/tar/.cargo-checksum.json --- temporalio-1.3.0/vendor/tar/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tar/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.lock":"9872bf9e41b9cadee45b688c9537030a993ca49a266fc7859029d8c74810d1d5","Cargo.toml":"8353c71aa4d394efa7aaeac3004d0a16fd0c7124b7bd57ea91ba87a7b2015f15","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"71079f1a0962c2cf288058f38d24735bddabd1427ac2dee72ec18cc5ae4bceed","examples/extract_file.rs":"dc487f6631d824175afc3ee33de99e80718a8ca3f9e57fddd7cac0a46c07d3ae","examples/list.rs":"36e412205eaffea8ab7f39be4173594b74e36acb369e091362b1975ee4a7a14b","examples/raw_list.rs":"0a735576ac354457d6d5a4d395d044fae99bf67a7c69960ca784a6f6a1743651","examples/write.rs":"419ac3e4155035e32b52cd8e6ae987a2d99cf82f60abbfb315c2a2c4f8e8fd19","src/archive.rs":"85a0091e02690c62379137988cd9b2689009536a0b941f1ab0581db26e9ebce6","src/builder.rs":"2914f394d44c133557532bf5765fe63e0def30ec0b447f8f2bc620e932a2036a","src/entry.rs":"705016636f7fdcad4fe20d7d2672be2b94cc53bb05e47628f5212b89e17a40fe","src/entry_type.rs":"0786688729a96b4a3135b28d40b95c3d4feaad66b9574c490cbea14814ab975f","src/error.rs":"a20813fbc52f1f2e3a79654f62de6001759f6504a06acee5b0819d4865398587","src/header.rs":"fb2b1fa943c19635826b3f2becfb82527be7d08fdac115af840da3ff06152908","src/lib.rs":"5468e413205c907c367c35d28a528389103d68fd6a5b5979bbedba7c9e6b6c99","src/pax.rs":"54002e31151f9c50e02a3da26b3cacd1d3c9a3902daee008ab76d112cf5a2430","tests/all.rs":"567a05d54e369d22efe40f3507a26e21f7878b95bd05c811250b2c350761791b","tests/entry.rs":"c1411ee09da9edb659b508867f0960e804966dfd33801f4a7afaefda331479dd","tests/header/mod.rs":"02b05639f63c39a47559650c7209817bb60282deb4f679d5b001ed936343d9de"},"package":"4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6"} \ No newline at end of file +{"files":{"Cargo.lock":"734d770757fa895a8c4e215b8063840d33083d007e02d70dfb47a07cd348b933","Cargo.toml":"1e1da319c4d28693a3e42e014ed00828480994b55b15003052f21f2342a346bb","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"71079f1a0962c2cf288058f38d24735bddabd1427ac2dee72ec18cc5ae4bceed","examples/extract_file.rs":"dc487f6631d824175afc3ee33de99e80718a8ca3f9e57fddd7cac0a46c07d3ae","examples/list.rs":"36e412205eaffea8ab7f39be4173594b74e36acb369e091362b1975ee4a7a14b","examples/raw_list.rs":"0a735576ac354457d6d5a4d395d044fae99bf67a7c69960ca784a6f6a1743651","examples/write.rs":"419ac3e4155035e32b52cd8e6ae987a2d99cf82f60abbfb315c2a2c4f8e8fd19","src/archive.rs":"e38b876270e3e4e7bac24fc4bf74e05df362102113cf0e024334a853a824f61e","src/builder.rs":"2914f394d44c133557532bf5765fe63e0def30ec0b447f8f2bc620e932a2036a","src/entry.rs":"0e4b0438cbc4cbec30a821ce8f23619fe9e53c17022a022de609d642e220193c","src/entry_type.rs":"0786688729a96b4a3135b28d40b95c3d4feaad66b9574c490cbea14814ab975f","src/error.rs":"a20813fbc52f1f2e3a79654f62de6001759f6504a06acee5b0819d4865398587","src/header.rs":"fb2b1fa943c19635826b3f2becfb82527be7d08fdac115af840da3ff06152908","src/lib.rs":"5468e413205c907c367c35d28a528389103d68fd6a5b5979bbedba7c9e6b6c99","src/pax.rs":"0509d9afa47ae9f1658bf7d02d12a9791f717971736c4e2041c5fb5f7c5354c8","tests/all.rs":"81bfe5fb71e8d2dd7455c126fc77aa40c2011a2cd5871d785e39e6fb053bf352","tests/entry.rs":"af12d84160e5459ebaee6ecdd68e0c811438c37c0cb881ad210e7f94132b9739","tests/header/mod.rs":"02b05639f63c39a47559650c7209817bb60282deb4f679d5b001ed936343d9de"},"package":"b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/tar/Cargo.lock temporalio-1.3.0/vendor/tar/Cargo.lock --- temporalio-1.3.0/vendor/tar/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tar/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -9,107 +9,102 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] -name = "cfg-if" -version = "1.0.0" +name = "bitflags" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" [[package]] -name = "filetime" -version = "0.2.15" +name = "cc" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "975ccf83d8d9d0d84682850a38c8169027be83368805971cc4f238c2b245bc98" +checksum = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01" dependencies = [ - "cfg-if", "libc", - "redox_syscall", - "winapi", ] [[package]] -name = "getrandom" -version = "0.2.3" +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "errno" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" dependencies = [ - "cfg-if", + "errno-dragonfly", "libc", - "wasi", + "windows-sys", ] [[package]] -name = "libc" -version = "0.2.103" +name = "errno-dragonfly" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] [[package]] -name = "ppv-lite86" -version = "0.2.10" +name = "fastrand" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" +checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" [[package]] -name = "rand" -version = "0.8.4" +name = "filetime" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" +checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" dependencies = [ + "cfg-if", "libc", - "rand_chacha", - "rand_core", - "rand_hc", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", + "redox_syscall", + "windows-sys", ] [[package]] -name = "rand_core" -version = "0.6.3" +name = "libc" +version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" -dependencies = [ - "getrandom", -] +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] -name = "rand_hc" -version = "0.3.1" +name = "linux-raw-sys" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" -dependencies = [ - "rand_core", -] +checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" [[package]] name = "redox_syscall" -version = "0.2.10" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] -name = "remove_dir_all" -version = "0.5.3" +name = "rustix" +version = "0.38.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +checksum = "172891ebdceb05aa0005f533a6cbfca599ddd7d966f6f5d4d9b2e70478e70399" dependencies = [ - "winapi", + "bitflags 2.3.3", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", ] [[package]] name = "tar" -version = "0.4.38" +version = "0.4.40" dependencies = [ "filetime", "libc", @@ -119,51 +114,88 @@ [[package]] name = "tempfile" -version = "3.2.0" +version = "3.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" +checksum = "dc02fddf48964c42031a0b3fe0428320ecf3a73c401040fc0096f97794310651" dependencies = [ "cfg-if", - "libc", - "rand", + "fastrand", "redox_syscall", - "remove_dir_all", - "winapi", + "rustix", + "windows-sys", ] [[package]] -name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" +name = "windows-sys" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] [[package]] -name = "winapi" -version = "0.3.9" +name = "windows-targets" +version = "0.48.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] [[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" [[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" +name = "windows_x86_64_msvc" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] name = "xattr" -version = "0.2.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" +checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" dependencies = [ "libc", ] diff -Nru temporalio-1.3.0/vendor/tar/Cargo.toml temporalio-1.3.0/vendor/tar/Cargo.toml --- temporalio-1.3.0/vendor/tar/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tar/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,26 +12,38 @@ [package] edition = "2018" name = "tar" -version = "0.4.38" +version = "0.4.40" authors = ["Alex Crichton "] exclude = ["tests/archives/*"] -description = "A Rust implementation of a TAR file reader and writer. This library does not\ncurrently handle compression, but it is abstract over all I/O readers and\nwriters. Additionally, great lengths are taken to ensure that the entire\ncontents are never required to be entirely resident in memory all at once.\n" +description = """ +A Rust implementation of a TAR file reader and writer. This library does not +currently handle compression, but it is abstract over all I/O readers and +writers. Additionally, great lengths are taken to ensure that the entire +contents are never required to be entirely resident in memory all at once. +""" homepage = "https://github.com/alexcrichton/tar-rs" documentation = "https://docs.rs/tar" readme = "README.md" -keywords = ["tar", "tarfile", "encoding"] +keywords = [ + "tar", + "tarfile", + "encoding", +] license = "MIT/Apache-2.0" repository = "https://github.com/alexcrichton/tar-rs" + [dependencies.filetime] version = "0.2.8" + [dev-dependencies.tempfile] version = "3" [features] default = ["xattr"] + [target."cfg(unix)".dependencies.libc] version = "0.2" [target."cfg(unix)".dependencies.xattr] -version = "0.2" +version = "1.0" optional = true diff -Nru temporalio-1.3.0/vendor/tar/src/archive.rs temporalio-1.3.0/vendor/tar/src/archive.rs --- temporalio-1.3.0/vendor/tar/src/archive.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tar/src/archive.rs 2023-10-30 19:40:00.000000000 +0000 @@ -10,7 +10,7 @@ use crate::entry::{EntryFields, EntryIo}; use crate::error::TarError; use crate::other; -use crate::pax::pax_extensions_size; +use crate::pax::*; use crate::{Entry, GnuExtSparseHeader, GnuSparseHeader, Header}; /// A top-level representation of an archive file. @@ -22,8 +22,10 @@ pub struct ArchiveInner { pos: Cell, + mask: u32, unpack_xattrs: bool, preserve_permissions: bool, + preserve_ownerships: bool, preserve_mtime: bool, overwrite: bool, ignore_zeros: bool, @@ -52,8 +54,10 @@ pub fn new(obj: R) -> Archive { Archive { inner: ArchiveInner { + mask: u32::MIN, unpack_xattrs: false, preserve_permissions: false, + preserve_ownerships: false, preserve_mtime: true, overwrite: true, ignore_zeros: false, @@ -106,6 +110,20 @@ me._unpack(dst.as_ref()) } + /// Set the mask of the permission bits when unpacking this entry. + /// + /// The mask will be inverted when applying against a mode, similar to how + /// `umask` works on Unix. In logical notation it looks like: + /// + /// ```text + /// new_mode = old_mode & (~mask) + /// ``` + /// + /// The mask is 0 by default and is currently only implemented on Unix. + pub fn set_mask(&mut self, mask: u32) { + self.inner.mask = mask; + } + /// Indicate whether extended file attributes (xattrs on Unix) are preserved /// when unpacking this archive. /// @@ -126,6 +144,15 @@ self.inner.preserve_permissions = preserve; } + /// Indicate whether numeric ownership ids (like uid and gid on Unix) + /// are preserved when unpacking this entry. + /// + /// This flag is disabled by default and is currently only implemented on + /// Unix. + pub fn set_preserve_ownerships(&mut self, preserve: bool) { + self.inner.preserve_ownerships = preserve; + } + /// Indicate whether files and symlinks should be overwritten on extraction. pub fn set_overwrite(&mut self, overwrite: bool) { self.inner.overwrite = overwrite; @@ -248,7 +275,7 @@ impl<'a> EntriesFields<'a> { fn next_entry_raw( &mut self, - pax_size: Option, + pax_extensions: Option<&[u8]>, ) -> io::Result>> { let mut header = Header::new_old(); let mut header_pos = self.next; @@ -288,6 +315,19 @@ return Err(other("archive header checksum mismatch")); } + let mut pax_size: Option = None; + if let Some(pax_extensions_ref) = &pax_extensions { + pax_size = pax_extensions_value(pax_extensions_ref, PAX_SIZE); + + if let Some(pax_uid) = pax_extensions_value(pax_extensions_ref, PAX_UID) { + header.set_uid(pax_uid); + } + + if let Some(pax_gid) = pax_extensions_value(pax_extensions_ref, PAX_GID) { + header.set_gid(pax_gid); + } + } + let file_pos = self.next; let mut size = header.entry_size()?; if size == 0 { @@ -304,10 +344,12 @@ long_pathname: None, long_linkname: None, pax_extensions: None, + mask: self.archive.inner.mask, unpack_xattrs: self.archive.inner.unpack_xattrs, preserve_permissions: self.archive.inner.preserve_permissions, preserve_mtime: self.archive.inner.preserve_mtime, overwrite: self.archive.inner.overwrite, + preserve_ownerships: self.archive.inner.preserve_ownerships, }; // Store where the next entry is, rounding up by 512 bytes (the size of @@ -331,11 +373,10 @@ let mut gnu_longname = None; let mut gnu_longlink = None; let mut pax_extensions = None; - let mut pax_size = None; let mut processed = 0; loop { processed += 1; - let entry = match self.next_entry_raw(pax_size)? { + let entry = match self.next_entry_raw(pax_extensions.as_deref())? { Some(entry) => entry, None if processed > 1 => { return Err(other( @@ -379,9 +420,6 @@ )); } pax_extensions = Some(EntryFields::from(entry).read_all()?); - if let Some(pax_extensions_ref) = &pax_extensions { - pax_size = pax_extensions_size(pax_extensions_ref); - } continue; } diff -Nru temporalio-1.3.0/vendor/tar/src/entry.rs temporalio-1.3.0/vendor/tar/src/entry.rs --- temporalio-1.3.0/vendor/tar/src/entry.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tar/src/entry.rs 2023-10-30 19:40:00.000000000 +0000 @@ -31,6 +31,7 @@ pub long_pathname: Option>, pub long_linkname: Option>, pub pax_extensions: Option>, + pub mask: u32, pub header: Header, pub size: u64, pub header_pos: u64, @@ -38,6 +39,7 @@ pub data: Vec>, pub unpack_xattrs: bool, pub preserve_permissions: bool, + pub preserve_ownerships: bool, pub preserve_mtime: bool, pub overwrite: bool, } @@ -230,6 +232,20 @@ self.fields.unpack_in(dst.as_ref()) } + /// Set the mask of the permission bits when unpacking this entry. + /// + /// The mask will be inverted when applying against a mode, similar to how + /// `umask` works on Unix. In logical notation it looks like: + /// + /// ```text + /// new_mode = old_mode & (~mask) + /// ``` + /// + /// The mask is 0 by default and is currently only implemented on Unix. + pub fn set_mask(&mut self, mask: u32) { + self.fields.mask = mask; + } + /// Indicate whether extended file attributes (xattrs on Unix) are preserved /// when unpacking this entry. /// @@ -444,13 +460,51 @@ /// Returns access to the header of this entry in the archive. fn unpack(&mut self, target_base: Option<&Path>, dst: &Path) -> io::Result { + fn set_perms_ownerships( + dst: &Path, + f: Option<&mut std::fs::File>, + header: &Header, + mask: u32, + perms: bool, + ownerships: bool, + ) -> io::Result<()> { + // ownerships need to be set first to avoid stripping SUID bits in the permissions ... + if ownerships { + set_ownerships(dst, &f, header.uid()?, header.gid()?)?; + } + // ... then set permissions, SUID bits set here is kept + if let Ok(mode) = header.mode() { + set_perms(dst, f, mode, mask, perms)?; + } + + Ok(()) + } + + fn get_mtime(header: &Header) -> Option { + header.mtime().ok().map(|mtime| { + // For some more information on this see the comments in + // `Header::fill_platform_from`, but the general idea is that + // we're trying to avoid 0-mtime files coming out of archives + // since some tools don't ingest them well. Perhaps one day + // when Cargo stops working with 0-mtime archives we can remove + // this. + let mtime = if mtime == 0 { 1 } else { mtime }; + FileTime::from_unix_time(mtime as i64, 0) + }) + } + let kind = self.header.entry_type(); if kind.is_dir() { self.unpack_dir(dst)?; - if let Ok(mode) = self.header.mode() { - set_perms(dst, None, mode, self.preserve_permissions)?; - } + set_perms_ownerships( + dst, + None, + &self.header, + self.mask, + self.preserve_permissions, + self.preserve_ownerships, + )?; return Ok(Unpacked::__Nonexhaustive); } else if kind.is_hard_link() || kind.is_symlink() { let src = match self.link_name()? { @@ -522,7 +576,14 @@ ), ) })?; - }; + if self.preserve_mtime { + if let Some(mtime) = get_mtime(&self.header) { + filetime::set_symlink_file_times(dst, mtime, mtime).map_err(|e| { + TarError::new(format!("failed to set mtime for `{}`", dst.display()), e) + })?; + } + } + } return Ok(Unpacked::__Nonexhaustive); #[cfg(target_arch = "wasm32")] @@ -553,9 +614,14 @@ // Only applies to old headers. if self.header.as_ustar().is_none() && self.path_bytes().ends_with(b"/") { self.unpack_dir(dst)?; - if let Ok(mode) = self.header.mode() { - set_perms(dst, None, mode, self.preserve_permissions)?; - } + set_perms_ownerships( + dst, + None, + &self.header, + self.mask, + self.preserve_permissions, + self.preserve_ownerships, + )?; return Ok(Unpacked::__Nonexhaustive); } @@ -618,35 +684,105 @@ })?; if self.preserve_mtime { - if let Ok(mtime) = self.header.mtime() { - // For some more information on this see the comments in - // `Header::fill_platform_from`, but the general idea is that - // we're trying to avoid 0-mtime files coming out of archives - // since some tools don't ingest them well. Perhaps one day - // when Cargo stops working with 0-mtime archives we can remove - // this. - let mtime = if mtime == 0 { 1 } else { mtime }; - let mtime = FileTime::from_unix_time(mtime as i64, 0); + if let Some(mtime) = get_mtime(&self.header) { filetime::set_file_handle_times(&f, Some(mtime), Some(mtime)).map_err(|e| { TarError::new(format!("failed to set mtime for `{}`", dst.display()), e) })?; } } - if let Ok(mode) = self.header.mode() { - set_perms(dst, Some(&mut f), mode, self.preserve_permissions)?; - } + set_perms_ownerships( + dst, + Some(&mut f), + &self.header, + self.mask, + self.preserve_permissions, + self.preserve_ownerships, + )?; if self.unpack_xattrs { set_xattrs(self, dst)?; } return Ok(Unpacked::File(f)); + fn set_ownerships( + dst: &Path, + f: &Option<&mut std::fs::File>, + uid: u64, + gid: u64, + ) -> Result<(), TarError> { + _set_ownerships(dst, f, uid, gid).map_err(|e| { + TarError::new( + format!( + "failed to set ownerships to uid={:?}, gid={:?} \ + for `{}`", + uid, + gid, + dst.display() + ), + e, + ) + }) + } + + #[cfg(unix)] + fn _set_ownerships( + dst: &Path, + f: &Option<&mut std::fs::File>, + uid: u64, + gid: u64, + ) -> io::Result<()> { + use std::convert::TryInto; + use std::os::unix::prelude::*; + + let uid: libc::uid_t = uid.try_into().map_err(|_| { + io::Error::new(io::ErrorKind::Other, format!("UID {} is too large!", uid)) + })?; + let gid: libc::gid_t = gid.try_into().map_err(|_| { + io::Error::new(io::ErrorKind::Other, format!("GID {} is too large!", gid)) + })?; + match f { + Some(f) => unsafe { + let fd = f.as_raw_fd(); + if libc::fchown(fd, uid, gid) != 0 { + Err(io::Error::last_os_error()) + } else { + Ok(()) + } + }, + None => unsafe { + let path = std::ffi::CString::new(dst.as_os_str().as_bytes()).map_err(|e| { + io::Error::new( + io::ErrorKind::Other, + format!("path contains null character: {:?}", e), + ) + })?; + if libc::lchown(path.as_ptr(), uid, gid) != 0 { + Err(io::Error::last_os_error()) + } else { + Ok(()) + } + }, + } + } + + // Windows does not support posix numeric ownership IDs + #[cfg(any(windows, target_arch = "wasm32"))] + fn _set_ownerships( + _: &Path, + _: &Option<&mut std::fs::File>, + _: u64, + _: u64, + ) -> io::Result<()> { + Ok(()) + } + fn set_perms( dst: &Path, f: Option<&mut std::fs::File>, mode: u32, + mask: u32, preserve: bool, ) -> Result<(), TarError> { - _set_perms(dst, f, mode, preserve).map_err(|e| { + _set_perms(dst, f, mode, mask, preserve).map_err(|e| { TarError::new( format!( "failed to set permissions to {:o} \ @@ -664,11 +800,13 @@ dst: &Path, f: Option<&mut std::fs::File>, mode: u32, + mask: u32, preserve: bool, ) -> io::Result<()> { use std::os::unix::prelude::*; let mode = if preserve { mode } else { mode & 0o777 }; + let mode = mode & !mask; let perm = fs::Permissions::from_mode(mode as _); match f { Some(f) => f.set_permissions(perm), @@ -681,6 +819,7 @@ dst: &Path, f: Option<&mut std::fs::File>, mode: u32, + _mask: u32, _preserve: bool, ) -> io::Result<()> { if mode & 0o200 == 0o200 { @@ -706,6 +845,7 @@ dst: &Path, f: Option<&mut std::fs::File>, mode: u32, + mask: u32, _preserve: bool, ) -> io::Result<()> { Err(io::Error::new(io::ErrorKind::Other, "Not implemented")) diff -Nru temporalio-1.3.0/vendor/tar/src/pax.rs temporalio-1.3.0/vendor/tar/src/pax.rs --- temporalio-1.3.0/vendor/tar/src/pax.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tar/src/pax.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,39 @@ +#![allow(dead_code)] use std::io; use std::slice; use std::str; use crate::other; +// Keywords for PAX extended header records. +pub const PAX_NONE: &str = ""; // Indicates that no PAX key is suitable +pub const PAX_PATH: &str = "path"; +pub const PAX_LINKPATH: &str = "linkpath"; +pub const PAX_SIZE: &str = "size"; +pub const PAX_UID: &str = "uid"; +pub const PAX_GID: &str = "gid"; +pub const PAX_UNAME: &str = "uname"; +pub const PAX_GNAME: &str = "gname"; +pub const PAX_MTIME: &str = "mtime"; +pub const PAX_ATIME: &str = "atime"; +pub const PAX_CTIME: &str = "ctime"; // Removed from later revision of PAX spec, but was valid +pub const PAX_CHARSET: &str = "charset"; // Currently unused +pub const PAX_COMMENT: &str = "comment"; // Currently unused + +pub const PAX_SCHILYXATTR: &str = "SCHILY.xattr."; + +// Keywords for GNU sparse files in a PAX extended header. +pub const PAX_GNUSPARSE: &str = "GNU.sparse."; +pub const PAX_GNUSPARSENUMBLOCKS: &str = "GNU.sparse.numblocks"; +pub const PAX_GNUSPARSEOFFSET: &str = "GNU.sparse.offset"; +pub const PAX_GNUSPARSENUMBYTES: &str = "GNU.sparse.numbytes"; +pub const PAX_GNUSPARSEMAP: &str = "GNU.sparse.map"; +pub const PAX_GNUSPARSENAME: &str = "GNU.sparse.name"; +pub const PAX_GNUSPARSEMAJOR: &str = "GNU.sparse.major"; +pub const PAX_GNUSPARSEMINOR: &str = "GNU.sparse.minor"; +pub const PAX_GNUSPARSESIZE: &str = "GNU.sparse.size"; +pub const PAX_GNUSPARSEREALSIZE: &str = "GNU.sparse.realsize"; + /// An iterator over the pax extensions in an archive entry. /// /// This iterator yields structures which can themselves be parsed into @@ -30,13 +60,13 @@ value: &'entry [u8], } -pub fn pax_extensions_size(a: &[u8]) -> Option { +pub fn pax_extensions_value(a: &[u8], key: &str) -> Option { for extension in PaxExtensions::new(a) { let current_extension = match extension { Ok(ext) => ext, Err(_) => return None, }; - if current_extension.key() != Ok("size") { + if current_extension.key() != Ok(key) { continue; } @@ -44,11 +74,11 @@ Ok(value) => value, Err(_) => return None, }; - let size = match value.parse::() { - Ok(size) => size, + let result = match value.parse::() { + Ok(result) => result, Err(_) => return None, }; - return Some(size); + return Some(result); } None } diff -Nru temporalio-1.3.0/vendor/tar/tests/all.rs temporalio-1.3.0/vendor/tar/tests/all.rs --- temporalio-1.3.0/vendor/tar/tests/all.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tar/tests/all.rs 2023-10-30 19:40:00.000000000 +0000 @@ -579,10 +579,21 @@ t!(a.append(&header, io::repeat(1).take(1))); }; append("/tmp/abs_evil.txt"); - append("//tmp/abs_evil2.txt"); + // std parse `//` as UNC path, see rust-lang/rust#100833 + append( + #[cfg(not(windows))] + "//tmp/abs_evil2.txt", + #[cfg(windows)] + "C://tmp/abs_evil2.txt", + ); append("///tmp/abs_evil3.txt"); append("/./tmp/abs_evil4.txt"); - append("//./tmp/abs_evil5.txt"); + append( + #[cfg(not(windows))] + "//./tmp/abs_evil5.txt", + #[cfg(windows)] + "C://./tmp/abs_evil5.txt", + ); append("///./tmp/abs_evil6.txt"); append("/../tmp/rel_evil.txt"); append("../rel_evil2.txt"); @@ -757,6 +768,40 @@ assert!(fs::metadata(td.path().join("foo\\bar")).is_ok()); } +#[test] +#[cfg(unix)] +fn set_mask() { + use ::std::os::unix::fs::PermissionsExt; + let mut ar = tar::Builder::new(Vec::new()); + + let mut header = tar::Header::new_gnu(); + header.set_size(0); + header.set_entry_type(tar::EntryType::Regular); + t!(header.set_path("foo")); + header.set_mode(0o777); + header.set_cksum(); + t!(ar.append(&header, &[][..])); + + let mut header = tar::Header::new_gnu(); + header.set_size(0); + header.set_entry_type(tar::EntryType::Regular); + t!(header.set_path("bar")); + header.set_mode(0o421); + header.set_cksum(); + t!(ar.append(&header, &[][..])); + + let td = t!(TempBuilder::new().prefix("tar-rs").tempdir()); + let bytes = t!(ar.into_inner()); + let mut ar = tar::Archive::new(&bytes[..]); + ar.set_mask(0o211); + t!(ar.unpack(td.path())); + + let md = t!(fs::metadata(td.path().join("foo"))); + assert_eq!(md.permissions().mode(), 0o100566); + let md = t!(fs::metadata(td.path().join("bar"))); + assert_eq!(md.permissions().mode(), 0o100420); +} + #[cfg(unix)] #[test] fn nul_bytes_in_path() { @@ -792,6 +837,10 @@ let md = t!(fs::symlink_metadata(td.path().join("lnk"))); assert!(md.file_type().is_symlink()); + + let mtime = FileTime::from_last_modification_time(&md); + assert_eq!(mtime.unix_seconds(), 1448291033); + assert_eq!( &*t!(fs::read_link(td.path().join("lnk"))), Path::new("file") @@ -1385,3 +1434,84 @@ err ); } + +#[test] +#[cfg(unix)] +fn ownership_preserving() { + use std::os::unix::prelude::*; + + let mut rdr = Vec::new(); + let mut ar = Builder::new(&mut rdr); + let data: &[u8] = &[]; + let mut header = Header::new_gnu(); + // file 1 with uid = 580800000, gid = 580800000 + header.set_gid(580800000); + header.set_uid(580800000); + t!(header.set_path("iamuid580800000")); + header.set_size(0); + header.set_cksum(); + t!(ar.append(&header, data)); + // file 2 with uid = 580800001, gid = 580800000 + header.set_uid(580800001); + t!(header.set_path("iamuid580800001")); + header.set_cksum(); + t!(ar.append(&header, data)); + // file 3 with uid = 580800002, gid = 580800002 + header.set_gid(580800002); + header.set_uid(580800002); + t!(header.set_path("iamuid580800002")); + header.set_cksum(); + t!(ar.append(&header, data)); + t!(ar.finish()); + + let rdr = Cursor::new(t!(ar.into_inner())); + let td = t!(TempBuilder::new().prefix("tar-rs").tempdir()); + let mut ar = Archive::new(rdr); + ar.set_preserve_ownerships(true); + + if unsafe { libc::getuid() } == 0 { + assert!(ar.unpack(td.path()).is_ok()); + // validate against premade files + // iamuid580800001 has this ownership: 580800001:580800000 + let meta = std::fs::metadata(td.path().join("iamuid580800000")).unwrap(); + assert_eq!(meta.uid(), 580800000); + assert_eq!(meta.gid(), 580800000); + let meta = std::fs::metadata(td.path().join("iamuid580800001")).unwrap(); + assert_eq!(meta.uid(), 580800001); + assert_eq!(meta.gid(), 580800000); + let meta = std::fs::metadata(td.path().join("iamuid580800002")).unwrap(); + assert_eq!(meta.uid(), 580800002); + assert_eq!(meta.gid(), 580800002); + } else { + // it's not possible to unpack tar while preserving ownership + // without root permissions + assert!(ar.unpack(td.path()).is_err()); + } +} + +#[test] +#[cfg(unix)] +fn pax_and_gnu_uid_gid() { + let tarlist = [tar!("biguid_gnu.tar"), tar!("biguid_pax.tar")]; + + for file in &tarlist { + let td = t!(TempBuilder::new().prefix("tar-rs").tempdir()); + let rdr = Cursor::new(file); + let mut ar = Archive::new(rdr); + ar.set_preserve_ownerships(true); + + if unsafe { libc::getuid() } == 0 { + t!(ar.unpack(td.path())); + let meta = fs::metadata(td.path().join("test.txt")).unwrap(); + let uid = std::os::unix::prelude::MetadataExt::uid(&meta); + let gid = std::os::unix::prelude::MetadataExt::gid(&meta); + // 4294967294 = u32::MAX - 1 + assert_eq!(uid, 4294967294); + assert_eq!(gid, 4294967294); + } else { + // it's not possible to unpack tar while preserving ownership + // without root permissions + assert!(ar.unpack(td.path()).is_err()); + } + } +} diff -Nru temporalio-1.3.0/vendor/tar/tests/entry.rs temporalio-1.3.0/vendor/tar/tests/entry.rs --- temporalio-1.3.0/vendor/tar/tests/entry.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tar/tests/entry.rs 2023-10-30 19:40:00.000000000 +0000 @@ -181,6 +181,37 @@ } #[test] +#[cfg(unix)] +fn set_entry_mask() { + use ::std::os::unix::fs::PermissionsExt; + + let mut ar = tar::Builder::new(Vec::new()); + + let mut header = tar::Header::new_gnu(); + header.set_size(0); + header.set_entry_type(tar::EntryType::Regular); + t!(header.set_path("foo")); + header.set_mode(0o777); + header.set_cksum(); + t!(ar.append(&header, &[][..])); + + let bytes = t!(ar.into_inner()); + let mut ar = tar::Archive::new(&bytes[..]); + let td = t!(Builder::new().prefix("tar").tempdir()); + let foo_path = td.path().join("foo"); + + let mut entries = t!(ar.entries()); + let mut foo = t!(entries.next().unwrap()); + foo.set_mask(0o027); + t!(foo.unpack(&foo_path)); + + let f = t!(File::open(foo_path)); + let md = t!(f.metadata()); + assert!(md.is_file()); + assert_eq!(md.permissions().mode(), 0o100750); +} + +#[test] #[cfg(not(windows))] // dangling symlinks have weird permissions fn modify_link_just_created() { let mut ar = tar::Builder::new(Vec::new()); diff -Nru temporalio-1.3.0/vendor/target-lexicon/.cargo-checksum.json temporalio-1.3.0/vendor/target-lexicon/.cargo-checksum.json --- temporalio-1.3.0/vendor/target-lexicon/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/target-lexicon/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.lock":"9f03fdef062a24cd8121c065b6dc414d82735fc64d80ff611f8541bf40b2f0d5","Cargo.toml":"795619048a281e39cd2d1b47e98569cdda8983bb603c77221de9f9a270da8613","LICENSE":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","README.md":"c3467056d91be3f59562158ee9604c729b5b5f473efbefb036032803eb76809e","build.rs":"678ba872ef2254e8901d6a00536f64d74d375d919f845113bd3ded709b6edb4a","examples/host.rs":"503bafddfb372123fe4dc0e7b8037808beb5bfe6df60c00d3315922bd3792c6c","examples/misc.rs":"49a579845450b7b020ed5c97dca142fc548725893cbc82f6f750ee0caab2beca","scripts/rust-targets.sh":"89564342916321c5bc35e772d374a7f0af22cc9ae6dcc0027eca48d2269f18cb","src/data_model.rs":"38c0c184ee65b882872298127d9c6878292bd12c139792e82328a5facc2428ae","src/host.rs":"d742406eba58f35c4c9f1041e506bb63d6c0eb752c2e88f4a6646538ef1aba38","src/lib.rs":"d18401920ad8b1bd1bce505c2c9f8bf8724f123919234d6007f80634b3d306d5","src/parse_error.rs":"b3735eabc0fd0a9dfdd6375662f20ec96a79852a00a05a98fb2e421545285e53","src/targets.rs":"73c6e3a5c164cef2fedba90ab3cd2578c177d35002e0f1376d2dde62c3b0e66f","src/triple.rs":"9c895dd10057242f5861f603ab60645223fe1d9539cd29b9a9fc77fd5ebbb629"},"package":"1b1c7f239eb94671427157bd93b3694320f3668d4e1eff08c7285366fd777fac"} \ No newline at end of file +{"files":{"Cargo.lock":"5bcb176ac7da0238ae235571a00a527140e221761f51f557370568e797804af3","Cargo.toml":"87b7daec5106f369f35f90144be03641b504db718c4733304202c683d83d64e6","LICENSE":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","README.md":"c3467056d91be3f59562158ee9604c729b5b5f473efbefb036032803eb76809e","build.rs":"678ba872ef2254e8901d6a00536f64d74d375d919f845113bd3ded709b6edb4a","examples/host.rs":"503bafddfb372123fe4dc0e7b8037808beb5bfe6df60c00d3315922bd3792c6c","examples/misc.rs":"49a579845450b7b020ed5c97dca142fc548725893cbc82f6f750ee0caab2beca","scripts/rust-targets.sh":"89564342916321c5bc35e772d374a7f0af22cc9ae6dcc0027eca48d2269f18cb","src/data_model.rs":"38c0c184ee65b882872298127d9c6878292bd12c139792e82328a5facc2428ae","src/host.rs":"d742406eba58f35c4c9f1041e506bb63d6c0eb752c2e88f4a6646538ef1aba38","src/lib.rs":"d18401920ad8b1bd1bce505c2c9f8bf8724f123919234d6007f80634b3d306d5","src/parse_error.rs":"b3735eabc0fd0a9dfdd6375662f20ec96a79852a00a05a98fb2e421545285e53","src/targets.rs":"5ae76162c6e8746ae63f6ba73ad0f3971531b7ccae6f916ad3d368caedd889fb","src/triple.rs":"aa8cec103b077bf679daab97f0a23c85476aece2ef18f117bf8d69d55bbd6ea0"},"package":"9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/target-lexicon/Cargo.lock temporalio-1.3.0/vendor/target-lexicon/Cargo.lock --- temporalio-1.3.0/vendor/target-lexicon/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/target-lexicon/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -33,7 +33,7 @@ [[package]] name = "target-lexicon" -version = "0.12.8" +version = "0.12.11" dependencies = [ "serde", "serde_json", diff -Nru temporalio-1.3.0/vendor/target-lexicon/Cargo.toml temporalio-1.3.0/vendor/target-lexicon/Cargo.toml --- temporalio-1.3.0/vendor/target-lexicon/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/target-lexicon/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2018" name = "target-lexicon" -version = "0.12.8" +version = "0.12.11" authors = ["Dan Gohman "] description = "Targeting utilities for compilers and related tools" documentation = "https://docs.rs/target-lexicon/" diff -Nru temporalio-1.3.0/vendor/target-lexicon/src/targets.rs temporalio-1.3.0/vendor/target-lexicon/src/targets.rs --- temporalio-1.3.0/vendor/target-lexicon/src/targets.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/target-lexicon/src/targets.rs 2023-10-30 19:40:00.000000000 +0000 @@ -43,6 +43,8 @@ Wasm32, Wasm64, X86_64, + /// x86_64 target that only supports Haswell-compatible Intel chips. + X86_64h, XTensa, Clever(CleverArchitecture), } @@ -839,6 +841,7 @@ | Wasm32 | Wasm64 | X86_64 + | X86_64h | XTensa | Clever(_) => Ok(Endianness::Little), Bpfeb @@ -883,6 +886,7 @@ | Powerpc64le | Riscv64(_) | X86_64 + | X86_64h | Mips64(_) | Nvptx64 | Powerpc64 @@ -936,6 +940,7 @@ Wasm32 => Cow::Borrowed("wasm32"), Wasm64 => Cow::Borrowed("wasm64"), X86_64 => Cow::Borrowed("x86_64"), + X86_64h => Cow::Borrowed("x86_64h"), XTensa => Cow::Borrowed("xtensa"), Clever(ver) => ver.into_str(), } @@ -1211,6 +1216,7 @@ "wasm32" => Wasm32, "wasm64" => Wasm64, "x86_64" => X86_64, + "x86_64h" => X86_64h, "xtensa" => XTensa, _ => { if let Ok(arm) = ArmArchitecture::from_str(s) { @@ -1493,6 +1499,7 @@ "aarch64-apple-watchos-sim", "aarch64_be-unknown-linux-gnu", "aarch64_be-unknown-linux-gnu_ilp32", + "aarch64_be-unknown-netbsd", "aarch64-fuchsia", "aarch64-kmc-solid_asp3", "aarch64-linux-android", @@ -1630,6 +1637,7 @@ "riscv64gc-unknown-freebsd", "riscv64gc-unknown-linux-gnu", "riscv64gc-unknown-linux-musl", + "riscv64gc-unknown-netbsd", "riscv64gc-unknown-none-elf", "riscv64gc-unknown-openbsd", "riscv64imac-unknown-none-elf", @@ -1661,6 +1669,7 @@ "wasm64-unknown-unknown", "wasm64-wasi", "x86_64-apple-darwin", + "x86_64h-apple-darwin", "x86_64-apple-ios", "x86_64-apple-ios-macabi", "x86_64-apple-tvos", diff -Nru temporalio-1.3.0/vendor/target-lexicon/src/triple.rs temporalio-1.3.0/vendor/target-lexicon/src/triple.rs --- temporalio-1.3.0/vendor/target-lexicon/src/triple.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/target-lexicon/src/triple.rs 2023-10-30 19:40:00.000000000 +0000 @@ -401,7 +401,7 @@ #[macro_export] macro_rules! triple { ($str:tt) => { - target_lexicon::Triple::from_str($str).expect("invalid triple literal") + <$crate::Triple as core::str::FromStr>::from_str($str).expect("invalid triple literal") }; } diff -Nru temporalio-1.3.0/vendor/tempfile/build.rs temporalio-1.3.0/vendor/tempfile/build.rs --- temporalio-1.3.0/vendor/tempfile/build.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tempfile/build.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -fn main() { - let ac = autocfg::new(); - - #[cfg(unix)] - ac.emit_trait_cfg("std::os::fd::AsFd", "fd"); - #[cfg(windows)] - ac.emit_trait_cfg("std::os::windows::io::AsHandle", "fd"); - - autocfg::rerun_path("build.rs"); -} diff -Nru temporalio-1.3.0/vendor/tempfile/.cargo-checksum.json temporalio-1.3.0/vendor/tempfile/.cargo-checksum.json --- temporalio-1.3.0/vendor/tempfile/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tempfile/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"eeb596e82d73d7c439c4380711f21cace57d2bb3b27c8d3ca85e416a9d938f3c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"8b427f5bc501764575e52ba4f9d95673cf8f6d80a86d0d06599852e1a9a20a36","NEWS":"7e7ee38b4831754dafaec2d9228e63695d7f12dd804cb14f0f0ae8cfb6a7fa27","README.md":"5fb03bad7838354c686bab80e30323385f07efeb2aa1c5c35bdff7ec203dc5fa","build.rs":"722b5256228f84e6f0da87143303c76a51def2b48c1f68e2c6c448e70a879cd4","src/dir.rs":"b555ff1d4ace32c5ce9deba77113b95969145bba16e43a88efe22d8f3ab049e5","src/error.rs":"cc7d8eace0fff11cb342158d2885d5637bfb14b24ef30755e808554772039c5f","src/file/imp/mod.rs":"f6da9fcd93f11889670a251fdd8231b5f4614e5a971b7b183f52b44af68568d5","src/file/imp/other.rs":"501cd1b444a5821127ea831fc8018706148f2d9f47c478f502b069963a42a2c7","src/file/imp/unix.rs":"c27c8c4e8b00e8a0e06c7243f072265eba8bc8e519e7b28ddf64d02cb4d99d01","src/file/imp/windows.rs":"fa4211087c36290064de9a41b5e533e4e8c24a10fb8f8908835a67e00555c06e","src/file/mod.rs":"12364fdd4e898a9dd62cf9d6a100cce055358b2d294c4dfc6385fe7df17475ab","src/lib.rs":"6303e7470c680ad785f32eb717de2e512b88c2c5da0e1684e3704471fabd7398","src/spooled.rs":"de848218bb7c0733d9c46e337564137673c95f5a6cf9f6bb28baf218b2503247","src/util.rs":"63737b9180cb769c1fcac56f1fa928221ae41a8917872d3e878d0a915e877710","tests/namedtempfile.rs":"a37c82908ed5df89cd2800c55abadf631d04caa55f09c966c8d1fd7a559a0ba6","tests/spooled.rs":"29e797d486d867cb6ac46d4cf126eb5868a069a4070c3f50ffa02fbb0b887934","tests/tempdir.rs":"abf08594f9d9ddc6c417de413bf63f9026150378af319d857e5ac8578f3fb665","tests/tempfile.rs":"9a2f8142151a6aa2fd047aa3749f9982ece4b080a3ace0d3c58d6bdb3f883c81"},"package":"31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6"} \ No newline at end of file +{"files":{"CHANGELOG.md":"14cb935001b72d1da431865d0e618b58ca962cc17c8be6bcd9cf4e1699f58b7d","Cargo.toml":"285d4565218bd4a8e5d36cb9b12ece4b8bb9c91d3357e75708acb0ca2f414b49","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"8b427f5bc501764575e52ba4f9d95673cf8f6d80a86d0d06599852e1a9a20a36","README.md":"972f1c35ec653943e067fd2c3d09e78f593b2e9e1eafd5b9668bf3653513de3e","src/dir.rs":"3b515f42feb934ba83ba56d506116e5e932c6b863b764fd61d26994eff28700a","src/error.rs":"cc7d8eace0fff11cb342158d2885d5637bfb14b24ef30755e808554772039c5f","src/file/imp/mod.rs":"f6da9fcd93f11889670a251fdd8231b5f4614e5a971b7b183f52b44af68568d5","src/file/imp/other.rs":"501cd1b444a5821127ea831fc8018706148f2d9f47c478f502b069963a42a2c7","src/file/imp/unix.rs":"0fa63a8b831947fdc7307e889d129adef6f47b19965b963a5e25d70cb3106e62","src/file/imp/windows.rs":"fa4211087c36290064de9a41b5e533e4e8c24a10fb8f8908835a67e00555c06e","src/file/mod.rs":"f417e0e8637116e50de201581b1dfe8feb8dee30f71c5bb9dbcd95603094cb49","src/lib.rs":"6303e7470c680ad785f32eb717de2e512b88c2c5da0e1684e3704471fabd7398","src/spooled.rs":"de848218bb7c0733d9c46e337564137673c95f5a6cf9f6bb28baf218b2503247","src/util.rs":"63737b9180cb769c1fcac56f1fa928221ae41a8917872d3e878d0a915e877710","tests/namedtempfile.rs":"87dd6a8bba2fdd77418ec2b50b8aec5e26d05a2f780182b4e9ff464b3404d47c","tests/spooled.rs":"a97e96404dc5136421ac027b965070c0d5b44c93d06d456e12dc85f81755d064","tests/tempdir.rs":"f5a86f56df6bb60aa5dfa136ce75f8d0f29c2e87546dccfe1fb680d209be525e","tests/tempfile.rs":"9a2f8142151a6aa2fd047aa3749f9982ece4b080a3ace0d3c58d6bdb3f883c81"},"package":"cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/tempfile/Cargo.toml temporalio-1.3.0/vendor/tempfile/Cargo.toml --- temporalio-1.3.0/vendor/tempfile/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tempfile/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,9 +11,9 @@ [package] edition = "2018" -rust-version = "1.48" +rust-version = "1.63" name = "tempfile" -version = "3.6.0" +version = "3.8.0" authors = [ "Steven Allen ", "The Rust Project Developers", @@ -36,19 +36,16 @@ version = "1" [dependencies.fastrand] -version = "1.6.0" +version = "2.0.0" [dev-dependencies.doc-comment] version = "0.3" -[build-dependencies.autocfg] -version = "1" - [features] nightly = [] [target."cfg(any(unix, target_os = \"wasi\"))".dependencies.rustix] -version = "0.37.11" +version = "0.38" features = ["fs"] [target."cfg(target_os = \"redox\")".dependencies.redox_syscall] diff -Nru temporalio-1.3.0/vendor/tempfile/CHANGELOG.md temporalio-1.3.0/vendor/tempfile/CHANGELOG.md --- temporalio-1.3.0/vendor/tempfile/CHANGELOG.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tempfile/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,256 @@ +# Changelog + +## 3.8.0 + +- Added `with_prefix` and `with_prefix_in` to `TempDir` and `NamedTempFile` to make it easier to create temporary files/directories with nice prefixes. +- Misc cleanups. + +## 3.7.1 + +- Tempfile builds on haiku again. +- Under the hood, we've switched from the unlinkat/linkat syscalls to the regular unlink/link syscalls where possible. + +## 3.7.0 + +BREAKING: This release updates the MSRV to 1.63. This isn't an API-breaking change (so no major +release) but it's still a breaking change for some users. + +- Update fastrand from 1.6 to 2.0 +- Update rustix to 0.38 +- Updates the MSRV to 1.63. +- Provide AsFd/AsRawFd on wasi. + +## 3.6.0 + +- Update windows-sys to 0.48. +- Update rustix min version to 0.37.11 +- Forward some `NamedTempFile` and `SpooledTempFile` methods to the underlying `File` object for + better performance (especially vectorized writes, etc.). +- Implement `AsFd` and `AsHandle`. +- Misc documentation fixes and code cleanups. + +## 3.5.0 + +- Update rustix from 0.36 to 0.37.1. This makes wasi work on rust stable +- Update `windows-sys`, `redox_syscall` +- BREAKING: Remove the implementation of `Write for &NamedTempFile where &F: Write`. Unfortunately, this can cause compile issues in unrelated code (https://github.com/Stebalien/tempfile/issues/224). + +## 3.4.0 + +SECURITY: Prior `tempfile` releases depended on `remove_dir_all` version 0.5.0 which was vulnerable to a [TOCTOU race](https://github.com/XAMPPRocky/remove_dir_all/security/advisories/GHSA-mc8h-8q98-g5hr). This same race is present in rust versions prior to 1.58.1. + +Features: + +- Generalized temporary files: `NamedTempFile` can now abstract over different kinds of files (e.g., + unix domain sockets, pipes, etc.): + - Add `Builder::make` and `Builder::make_in` for generalized temp file + creation. + - Add `NamedTempFile::from_parts` to complement `NamedTempFile::into_parts`. + - Add generic parameter to `NamedTempFile` to support wrapping non-File types. + +Bug Fixes/Improvements: + +- Don't try to create a temporary file multiple times if the file path has been fully specified by + the user (no random characters). +- `NamedTempFile::persist_noclobber` is now always atomic on linux when `renameat_with` is + supported. Previously, it would first link the new path, then unlink the previous path. +- Fix compiler warnings on windows. + +Trivia: + +- Switch from `libc` to `rustix` on wasi/unix. This now makes direct syscalls instead of calling + through libc. +- Remove `remove_dir_all` dependency. The rust standard library has optimized their internal version + significantly. + - Switch to official windows-sys windows bindings. + +Breaking: + + - The minimum rust version is now `1.48.0`. + - Mark most functions as `must_use`. + - Uses direct syscalls on linux by default, instead of libc. + - The new type parameter in `NamedTempFile` may lead to type inference issues in some cases. + +## 3.3.0 + +Features: + +- Replace rand with fastrand for a significantly smaller dependency tree. Cryptographic randomness + isn't necessary for temporary file names, and isn't all that helpful either. +- Add limited WASI support. +- Add a function to extract the inner data from a `SpooledTempFile`. + +Bug Fixes: + +- Make it possible to persist unnamed temporary files on linux by removing the `O_EXCL` flag. +- Fix redox minimum crate version. + +## 3.2.0 + +Features: + +- Bump rand dependency to `0.8`. +- Bump cfg-if dependency to `1.0` + +Other than that, this release mostly includes small cleanups and simplifications. + +Breaking: The minimum rust version is now `1.40.0`. + +## 3.1.0 + +Features: + +- Bump rand dependency to `0.7`. + +Breaking: The minimum rust version is now `1.32.0`. + +## 3.0.9 + +Documentation: + +- Add an example for reopening a named temporary file. +- Flesh out the security documentation. + +Features: + +- Introduce an `append` option to the builder. +- Errors: + - No longer implement the soft-deprecated `description`. + - Implement `source` instead of `cause`. + +Breaking: The minimum rust version is now 1.30. + +## 3.0.8 + +This is a bugfix release. + +Fixes: + +- Export `PathPersistError`. +- Fix a bug where flushing a `SpooledTempFile` to disk could fail to write part + of the file in some rare, yet-to-reproduced cases. + +## 3.0.7 + +Breaking: + +- `Builder::prefix` and `Builder::suffix` now accept a generic `&AsRef`. + This could affect type inference. +- Temporary files (except unnamed temporary files on Windows and Linux >= 3.11) + now use absolute path names. This will break programs that create temporary + files relative to their current working directory when they don't have the + search permission (x) on some ancestor directory. This is only likely to + affect programs with strange chroot-less filesystem sandboxes. If you believe + you're affected by this issue, please comment on #40. + +Features: + +- Accept anything implementing `&AsRef` in the builder: &OsStr, &OsString, &Path, etc. + +Fixes: + +- Fix LFS support. +- Use absolute paths for named temporary files to guard against changes in the + current directory. +- Use absolute paths when creating unnamed temporary files on platforms that + can't create unlinked or auto-deleted temporary files. This fixes a very + unlikely race where the current directory could change while the temporary + file is being created. + +Misc: + +- Use modern stdlib features to avoid custom unsafe code. This reduces the + number of unsafe blocks from 12 to 4. + +## 3.0.6 + +- Don't hide temporary files on windows, fixing #66 and #69. + +## 3.0.5 + +Features: + +- Added a spooled temporary file implementation. This temporary file variant + starts out as an in-memory temporary file but "rolls-over" onto disk when it + grows over a specified size (#68). +- Errors are now annotated with paths to make debugging easier (#73). + +Misc: + +- The rand version has been bumped to 0.6 (#74). + +Bugs: + +- Tempfile compiles again on Redox (#75). + +## 3.0.4 + +- Now compiles on unsupported platforms. + +## 3.0.3 + +- update rand to 0.5 + +## 3.0.2 + +- Actually *delete* temporary files on non-Linux unix systems (thanks to +@oliverhenshaw for the fix and a test case). + +## 3.0.1 + +- Restore NamedTempFile::new_in + +## 3.0.0 + +- Adds temporary directory support (@KodrAus) +- Allow closing named temporary files without deleting them (@jasonwhite) + +## 2.2.0 + +- Redox Support + +## 2.1.6 + +- Remove build script and bump minimum rustc version to 1.9.0 + +## 2.1.5 + +- Don't build platform-specific dependencies on all platforms. +- Cleanup some documentation. + +## 2.1.4 + +- Fix crates.io tags. No interesting changes. + +## 2.1.3 + +Export `PersistError`. + +## 2.1.2 + +Add `Read`/`Write`/`Seek` impls on `&NamedTempFile`. This mirrors the +implementations on `&File`. One can currently just deref to a `&File` but these +implementations are more discoverable. + +## 2.1.1 + +Add LFS Support. + +## 2.1.0 + +- Implement `AsRef` for `NamedTempFile` allowing named temporary files to + be borrowed as `File`s. +- Add a method to convert a `NamedTempFile` to an unnamed temporary `File`. + +## 2.0.1 + +- Arm bugfix + +## 2.0.0 + +This release replaces `TempFile` with a `tempfile()` function that returns +`std::fs::File` objects. These are significantly more useful because most rust +libraries expect normal `File` objects. + +To continue supporting shared temporary files, this new version adds a +`reopen()` method to `NamedTempFile`. diff -Nru temporalio-1.3.0/vendor/tempfile/NEWS temporalio-1.3.0/vendor/tempfile/NEWS --- temporalio-1.3.0/vendor/tempfile/NEWS 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tempfile/NEWS 1970-01-01 00:00:00.000000000 +0000 @@ -1,260 +0,0 @@ -3.6.0 -===== - -- Update windows-sys to 0.48. -- Update rustix min version to 0.37.11 -- Forward some `NamedTempFile` and `SpooledTempFile` methods to the underlying `File` object for - better performance (especially vectorized writes, etc.). -- Implement `AsFd` and `AsHandle`. -- Misc documentation fixes and code cleanups. - -3.5.0 -===== - -- Update rustix from 0.36 to 0.37.1. This makes wasi work on rust stable -- Update `windows-sys`, `redox_syscall` -- BREAKING: Remove the implementation of `Write for &NamedTempFile where &F: Write`. Unfortunately, this can cause compile issues in unrelated code (https://github.com/Stebalien/tempfile/issues/224). - -3.4.0 -===== - -SECURITY: Prior `tempfile` releases depended on `remove_dir_all` version 0.5.0 which was vulnerable to a [TOCTOU race](https://github.com/XAMPPRocky/remove_dir_all/security/advisories/GHSA-mc8h-8q98-g5hr). This same race is present in rust versions prior to 1.58.1. - -Features: - -* Generalized temporary files: `NamedTempFile` can now abstract over different kinds of files (e.g., - unix domain sockets, pipes, etc.): - * Add `Builder::make` and `Builder::make_in` for generalized temp file - creation. - * Add `NamedTempFile::from_parts` to complement `NamedTempFile::into_parts`. - * Add generic parameter to `NamedTempFile` to support wrapping non-File types. - -Bug Fixes/Improvements: - -* Don't try to create a temporary file multiple times if the file path has been fully specified by - the user (no random characters). -* `NamedTempFile::persist_noclobber` is now always atomic on linux when `renameat_with` is - supported. Previously, it would first link the new path, then unlink the previous path. -* Fix compiler warnings on windows. - -Trivia: - -* Switch from `libc` to `rustix` on wasi/unix. This now makes direct syscalls instead of calling - through libc. -* Remove `remove_dir_all` dependency. The rust standard library has optimized their internal version - significantly. - * Switch to official windows-sys windows bindings. - -Breaking: - - * The minimum rust version is now `1.48.0`. - * Mark most functions as `must_use`. - * Uses direct syscalls on linux by default, instead of libc. - * The new type parameter in `NamedTempFile` may lead to type inference issues in some cases. - -3.3.0 -===== - -Features: - -* Replace rand with fastrand for a significantly smaller dependency tree. Cryptographic randomness - isn't necessary for temporary file names, and isn't all that helpful either. -* Add limited WASI support. -* Add a function to extract the inner data from a `SpooledTempFile`. - -Bug Fixes: - -* Make it possible to persist unnamed temporary files on linux by removing the `O_EXCL` flag. -* Fix redox minimum crate version. - -3.2.0 -===== - -Features: - -* Bump rand dependency to `0.8`. -* Bump cfg-if dependency to `1.0` - -Other than that, this release mostly includes small cleanups and simplifications. - -Breaking: The minimum rust version is now `1.40.0`. - -3.1.0 -===== - -Features: - -* Bump rand dependency to `0.7`. - -Breaking: The minimum rust version is now `1.32.0`. - -3.0.9 -===== - -Documentation: - -* Add an example for reopening a named temporary file. -* Flesh out the security documentation. - -Features: - -* Introduce an `append` option to the builder. -* Errors: - * No longer implement the soft-deprecated `description`. - * Implement `source` instead of `cause`. - -Breaking: The minimum rust version is now 1.30. - -3.0.8 -===== - -This is a bugfix release. - -Fixes: - -* Export `PathPersistError`. -* Fix a bug where flushing a `SpooledTempFile` to disk could fail to write part - of the file in some rare, yet-to-reproduced cases. - -3.0.7 -===== - -Breaking: - -* `Builder::prefix` and `Builder::suffix` now accept a generic `&AsRef`. - This could affect type inference. -* Temporary files (except unnamed temporary files on Windows and Linux >= 3.11) - now use absolute path names. This will break programs that create temporary - files relative to their current working directory when they don't have the - search permission (x) on some ancestor directory. This is only likely to - affect programs with strange chroot-less filesystem sandboxes. If you believe - you're affected by this issue, please comment on #40. - -Features: - -* Accept anything implementing `&AsRef` in the builder: &OsStr, &OsString, &Path, etc. - -Fixes: - -* Fix LFS support. -* Use absolute paths for named temporary files to guard against changes in the - current directory. -* Use absolute paths when creating unnamed temporary files on platforms that - can't create unlinked or auto-deleted temporary files. This fixes a very - unlikely race where the current directory could change while the temporary - file is being created. - -Misc: - -* Use modern stdlib features to avoid custom unsafe code. This reduces the - number of unsafe blocks from 12 to 4. - -3.0.6 -===== - -* Don't hide temporary files on windows, fixing #66 and #69. - -3.0.5 -===== - -Features: - -* Added a spooled temporary file implementation. This temporary file variant - starts out as an in-memory temporary file but "rolls-over" onto disk when it - grows over a specified size (#68). -* Errors are now annotated with paths to make debugging easier (#73). - -Misc: - -* The rand version has been bumped to 0.6 (#74). - -Bugs: - -* Tempfile compiles again on Redox (#75). - -3.0.4 -===== - -* Now compiles on unsupported platforms. - -3.0.3 -===== - -* update rand to 0.5 - -3.0.2 -===== - -* Actually *delete* temporary files on non-Linux unix systems (thanks to -@oliverhenshaw for the fix and a test case). - -3.0.1 -===== - -* Restore NamedTempFile::new_in - -3.0.0 -===== - -* Adds temporary directory support (@KodrAus) -* Allow closing named temporary files without deleting them (@jasonwhite) - -2.2.0 -===== - -* Redox Support - -2.1.6 -===== - -* Remove build script and bump minimum rustc version to 1.9.0 - -2.1.5 -===== - -* Don't build platform-specific dependencies on all platforms. -* Cleanup some documentation. - -2.1.4 -===== - -* Fix crates.io tags. No interesting changes. - -2.1.3 -===== - -Export `PersistError`. - -2.1.2 -===== - -Add `Read`/`Write`/`Seek` impls on `&NamedTempFile`. This mirrors the -implementations on `&File`. One can currently just deref to a `&File` but these -implementations are more discoverable. - -2.1.1 -===== - -Add LFS Support. - -2.1.0 -===== - -* Implement `AsRef` for `NamedTempFile` allowing named temporary files to - be borrowed as `File`s. -* Add a method to convert a `NamedTempFile` to an unnamed temporary `File`. - -2.0.1 -===== - -* Arm bugfix - -2.0.0 -===== - -This release replaces `TempFile` with a `tempfile()` function that returns -`std::fs::File` objects. These are significantly more useful because most rust -libraries expect normal `File` objects. - -To continue supporting shared temporary files, this new version adds a -`reopen()` method to `NamedTempFile`. diff -Nru temporalio-1.3.0/vendor/tempfile/README.md temporalio-1.3.0/vendor/tempfile/README.md --- temporalio-1.3.0/vendor/tempfile/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tempfile/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -14,7 +14,7 @@ Usage ----- -Minimum required Rust version: 1.48.0 +Minimum required Rust version: 1.63.0 Add this to your `Cargo.toml`: diff -Nru temporalio-1.3.0/vendor/tempfile/src/dir.rs temporalio-1.3.0/vendor/tempfile/src/dir.rs --- temporalio-1.3.0/vendor/tempfile/src/dir.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tempfile/src/dir.rs 2023-10-30 19:40:00.000000000 +0000 @@ -8,6 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +use std::ffi::OsStr; use std::fs::remove_dir_all; use std::mem; use std::path::{self, Path, PathBuf}; @@ -264,6 +265,65 @@ Builder::new().tempdir_in(dir) } + /// Attempts to make a temporary directory with the specified prefix inside of + /// `env::temp_dir()`. The directory and everything inside it will be automatically + /// deleted once the returned `TempDir` is destroyed. + /// + /// # Errors + /// + /// If the directory can not be created, `Err` is returned. + /// + /// # Examples + /// + /// ``` + /// use std::fs::{self, File}; + /// use std::io::Write; + /// use tempfile::TempDir; + /// + /// # use std::io; + /// # fn run() -> Result<(), io::Error> { + /// // Create a directory inside of the current directory + /// let tmp_dir = TempDir::with_prefix("foo-")?; + /// let tmp_name = tmp_dir.path().file_name().unwrap().to_str().unwrap(); + /// assert!(tmp_name.starts_with("foo-")); + /// # Ok(()) + /// # } + /// ``` + pub fn with_prefix>(prefix: S) -> io::Result { + Builder::new().prefix(&prefix).tempdir() + } + + /// Attempts to make a temporary directory with the specified prefix inside + /// the specified directory. The directory and everything inside it will be + /// automatically deleted once the returned `TempDir` is destroyed. + /// + /// # Errors + /// + /// If the directory can not be created, `Err` is returned. + /// + /// # Examples + /// + /// ``` + /// use std::fs::{self, File}; + /// use std::io::Write; + /// use tempfile::TempDir; + /// + /// # use std::io; + /// # fn run() -> Result<(), io::Error> { + /// // Create a directory inside of the current directory + /// let tmp_dir = TempDir::with_prefix_in("foo-", ".")?; + /// let tmp_name = tmp_dir.path().file_name().unwrap().to_str().unwrap(); + /// assert!(tmp_name.starts_with("foo-")); + /// # Ok(()) + /// # } + /// ``` + pub fn with_prefix_in, P: AsRef>( + prefix: S, + dir: P, + ) -> io::Result { + Builder::new().prefix(&prefix).tempdir_in(dir) + } + /// Accesses the [`Path`] to the temporary directory. /// /// [`Path`]: http://doc.rust-lang.org/std/path/struct.Path.html diff -Nru temporalio-1.3.0/vendor/tempfile/src/file/imp/unix.rs temporalio-1.3.0/vendor/tempfile/src/file/imp/unix.rs --- temporalio-1.3.0/vendor/tempfile/src/file/imp/unix.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tempfile/src/file/imp/unix.rs 2023-10-30 19:40:00.000000000 +0000 @@ -14,7 +14,10 @@ use std::path::Path; #[cfg(not(target_os = "redox"))] -use rustix::fs::{cwd, linkat, renameat, unlinkat, AtFlags}; +use { + rustix::fs::{rename, unlink}, + std::fs::hard_link, +}; pub fn create_named(path: &Path, open_options: &mut OpenOptions) -> io::Result { open_options.read(true).write(true).create_new(true); @@ -103,19 +106,19 @@ #[cfg(not(target_os = "redox"))] pub fn persist(old_path: &Path, new_path: &Path, overwrite: bool) -> io::Result<()> { if overwrite { - renameat(cwd(), old_path, cwd(), new_path)?; + rename(old_path, new_path)?; } else { // On Linux, use `renameat_with` to avoid overwriting an existing name, // if the kernel and the filesystem support it. #[cfg(any(target_os = "android", target_os = "linux"))] { - use rustix::fs::{renameat_with, RenameFlags}; + use rustix::fs::{renameat_with, RenameFlags, CWD}; use rustix::io::Errno; use std::sync::atomic::{AtomicBool, Ordering::Relaxed}; static NOSYS: AtomicBool = AtomicBool::new(false); if !NOSYS.load(Relaxed) { - match renameat_with(cwd(), old_path, cwd(), new_path, RenameFlags::NOREPLACE) { + match renameat_with(CWD, old_path, CWD, new_path, RenameFlags::NOREPLACE) { Ok(()) => return Ok(()), Err(Errno::NOSYS) => NOSYS.store(true, Relaxed), Err(Errno::INVAL) => {} @@ -124,12 +127,13 @@ } } - // Otherwise use `linkat` to create the new filesystem name, which - // will fail if the name already exists, and then `unlinkat` to remove + // Otherwise use `hard_link` to create the new filesystem name, which + // will fail if the name already exists, and then `unlink` to remove // the old name. - linkat(cwd(), old_path, cwd(), new_path, AtFlags::empty())?; + hard_link(old_path, new_path)?; + // Ignore unlink errors. Can we do better? - let _ = unlinkat(cwd(), old_path, AtFlags::empty()); + let _ = unlink(old_path); } Ok(()) } diff -Nru temporalio-1.3.0/vendor/tempfile/src/file/mod.rs temporalio-1.3.0/vendor/tempfile/src/file/mod.rs --- temporalio-1.3.0/vendor/tempfile/src/file/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tempfile/src/file/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,6 +6,12 @@ use std::io::{self, Read, Seek, SeekFrom, Write}; use std::mem; use std::ops::Deref; +#[cfg(unix)] +use std::os::unix::io::{AsFd, AsRawFd, BorrowedFd, RawFd}; +#[cfg(target_os = "wasi")] +use std::os::wasi::io::{AsFd, AsRawFd, BorrowedFd, RawFd}; +#[cfg(windows)] +use std::os::windows::io::{AsHandle, AsRawHandle, BorrowedHandle, RawHandle}; use std::path::{Path, PathBuf}; use crate::error::IoResultExt; @@ -602,12 +608,45 @@ /// Create a new named temporary file in the specified directory. /// + /// This is equivalent to: + /// + /// ```ignore + /// Builder::new().prefix(&prefix).tempfile() + /// ``` + /// /// See [`NamedTempFile::new()`] for details. /// /// [`NamedTempFile::new()`]: #method.new pub fn new_in>(dir: P) -> io::Result { Builder::new().tempfile_in(dir) } + + /// Create a new named temporary file with the specified filename prefix. + /// + /// See [`NamedTempFile::new()`] for details. + /// + /// [`NamedTempFile::new()`]: #method.new + pub fn with_prefix>(prefix: S) -> io::Result { + Builder::new().prefix(&prefix).tempfile() + } + /// Create a new named temporary file with the specified filename prefix, + /// in the specified directory. + /// + /// This is equivalent to: + /// + /// ```ignore + /// Builder::new().prefix(&prefix).tempfile_in(directory) + /// ``` + /// + /// See [`NamedTempFile::new()`] for details. + /// + /// [`NamedTempFile::new()`]: #method.new + pub fn with_prefix_in, P: AsRef>( + prefix: S, + dir: P, + ) -> io::Result { + Builder::new().prefix(&prefix).tempfile_in(dir) + } } impl NamedTempFile { @@ -1034,42 +1073,33 @@ } } -#[cfg(all(fd, unix))] -impl std::os::unix::io::AsFd for NamedTempFile { - fn as_fd(&self) -> std::os::unix::io::BorrowedFd<'_> { +#[cfg(any(unix, target_os = "wasi"))] +impl AsFd for NamedTempFile { + fn as_fd(&self) -> BorrowedFd<'_> { self.as_file().as_fd() } } -#[cfg(unix)] -impl std::os::unix::io::AsRawFd for NamedTempFile -where - F: std::os::unix::io::AsRawFd, -{ +#[cfg(any(unix, target_os = "wasi"))] +impl AsRawFd for NamedTempFile { #[inline] - fn as_raw_fd(&self) -> std::os::unix::io::RawFd { + fn as_raw_fd(&self) -> RawFd { self.as_file().as_raw_fd() } } -#[cfg(all(fd, windows))] -impl std::os::windows::io::AsHandle for NamedTempFile -where - F: std::os::windows::io::AsHandle, -{ +#[cfg(windows)] +impl AsHandle for NamedTempFile { #[inline] - fn as_handle(&self) -> std::os::windows::io::BorrowedHandle<'_> { + fn as_handle(&self) -> BorrowedHandle<'_> { self.as_file().as_handle() } } #[cfg(windows)] -impl std::os::windows::io::AsRawHandle for NamedTempFile -where - F: std::os::windows::io::AsRawHandle, -{ +impl AsRawHandle for NamedTempFile { #[inline] - fn as_raw_handle(&self) -> std::os::windows::io::RawHandle { + fn as_raw_handle(&self) -> RawHandle { self.as_file().as_raw_handle() } } diff -Nru temporalio-1.3.0/vendor/tempfile/tests/namedtempfile.rs temporalio-1.3.0/vendor/tempfile/tests/namedtempfile.rs --- temporalio-1.3.0/vendor/tempfile/tests/namedtempfile.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tempfile/tests/namedtempfile.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,6 +12,13 @@ } #[test] +fn test_prefix() { + let tmpfile = NamedTempFile::with_prefix("prefix").unwrap(); + let name = tmpfile.path().file_name().unwrap().to_str().unwrap(); + assert!(name.starts_with("prefix")); +} + +#[test] fn test_basic() { let mut tmpfile = NamedTempFile::new().unwrap(); write!(tmpfile, "abcde").unwrap(); diff -Nru temporalio-1.3.0/vendor/tempfile/tests/spooled.rs temporalio-1.3.0/vendor/tempfile/tests/spooled.rs --- temporalio-1.3.0/vendor/tempfile/tests/spooled.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tempfile/tests/spooled.rs 2023-10-30 19:40:00.000000000 +0000 @@ -10,7 +10,7 @@ let mut buf = Vec::new(); assert!(!t.is_rolled()); - assert_eq!(t.seek(SeekFrom::Current(0)).unwrap(), 0); + assert_eq!(t.stream_position().unwrap(), 0); assert_eq!(t.read_to_end(&mut buf).unwrap(), 0); assert_eq!(buf.as_slice(), b""); buf.clear(); @@ -24,7 +24,7 @@ assert_eq!(t.write(b"fghijklmno").unwrap(), 10); - assert_eq!(t.seek(SeekFrom::Current(0)).unwrap(), 15); + assert_eq!(t.stream_position().unwrap(), 15); assert!(t.is_rolled()); } @@ -32,13 +32,13 @@ fn test_explicit_rollover() { let mut t = SpooledTempFile::new(100); assert_eq!(t.write(b"abcdefghijklmnopqrstuvwxyz").unwrap(), 26); - assert_eq!(t.seek(SeekFrom::Current(0)).unwrap(), 26); + assert_eq!(t.stream_position().unwrap(), 26); assert!(!t.is_rolled()); // roll over explicitly assert!(t.roll().is_ok()); assert!(t.is_rolled()); - assert_eq!(t.seek(SeekFrom::Current(0)).unwrap(), 26); + assert_eq!(t.stream_position().unwrap(), 26); let mut buf = Vec::new(); assert_eq!(t.read_to_end(&mut buf).unwrap(), 0); @@ -48,7 +48,7 @@ assert_eq!(t.seek(SeekFrom::Start(0)).unwrap(), 0); assert_eq!(t.read_to_end(&mut buf).unwrap(), 26); assert_eq!(buf.as_slice(), b"abcdefghijklmnopqrstuvwxyz"); - assert_eq!(t.seek(SeekFrom::Current(0)).unwrap(), 26); + assert_eq!(t.stream_position().unwrap(), 26); } // called by test_seek_{buffer, file} @@ -56,7 +56,7 @@ fn test_seek(t: &mut SpooledTempFile) { assert_eq!(t.write(b"abcdefghijklmnopqrstuvwxyz").unwrap(), 26); - assert_eq!(t.seek(SeekFrom::Current(0)).unwrap(), 26); // tell() + assert_eq!(t.stream_position().unwrap(), 26); // tell() assert_eq!(t.seek(SeekFrom::Current(-1)).unwrap(), 25); assert_eq!(t.seek(SeekFrom::Current(1)).unwrap(), 26); assert_eq!(t.seek(SeekFrom::Current(1)).unwrap(), 27); @@ -110,7 +110,7 @@ buf.clear(); // now we're at the end again - assert_eq!(t.seek(SeekFrom::Current(0)).unwrap(), 26); // tell() + assert_eq!(t.stream_position().unwrap(), 26); // tell() assert_eq!(t.read_to_end(&mut buf).unwrap(), 0); assert_eq!(buf.as_slice(), b""); buf.clear(); @@ -122,7 +122,7 @@ assert_eq!(buf, *b"fghij"); // read again from current spot - assert_eq!(t.seek(SeekFrom::Current(0)).unwrap(), 10); // tell() + assert_eq!(t.stream_position().unwrap(), 10); // tell() assert!(t.read_exact(&mut buf).is_ok()); assert_eq!(buf, *b"klmno"); @@ -190,11 +190,11 @@ assert_eq!(t.write(b"abcdefghijklmno").unwrap(), 15); assert!(!t.is_rolled()); assert_eq!(t.seek(SeekFrom::End(-5)).unwrap(), 10); - assert_eq!(t.seek(SeekFrom::Current(0)).unwrap(), 10); // tell() + assert_eq!(t.stream_position().unwrap(), 10); // tell() assert!(!t.is_rolled()); assert_eq!(t.write(b"0123456789)!@#$%^&*(").unwrap(), 20); assert!(t.is_rolled()); - assert_eq!(t.seek(SeekFrom::Current(0)).unwrap(), 30); // tell() + assert_eq!(t.stream_position().unwrap(), 30); // tell() let mut buf = Vec::new(); assert_eq!(t.seek(SeekFrom::Start(0)).unwrap(), 0); assert_eq!(t.read_to_end(&mut buf).unwrap(), 30); @@ -247,11 +247,11 @@ assert!(t.set_len(10).is_ok()); // position should not have moved - assert_eq!(t.seek(SeekFrom::Current(0)).unwrap(), 26); // tell() + assert_eq!(t.stream_position().unwrap(), 26); // tell() assert_eq!(t.read_to_end(&mut buf).unwrap(), 0); assert_eq!(buf.as_slice(), b""); - assert_eq!(t.seek(SeekFrom::Current(0)).unwrap(), 26); // tell() + assert_eq!(t.stream_position().unwrap(), 26); // tell() buf.clear(); // read whole thing @@ -262,7 +262,7 @@ // set_len to expand beyond the end assert!(t.set_len(40).is_ok()); - assert_eq!(t.seek(SeekFrom::Current(0)).unwrap(), 10); // tell() + assert_eq!(t.stream_position().unwrap(), 10); // tell() assert_eq!(t.seek(SeekFrom::Start(0)).unwrap(), 0); assert_eq!(t.read_to_end(&mut buf).unwrap(), 40); assert_eq!( @@ -290,17 +290,17 @@ let mut t = spooled_tempfile(10); assert_eq!(t.write(b"abcde").unwrap(), 5); assert!(!t.is_rolled()); - assert_eq!(t.seek(SeekFrom::Current(0)).unwrap(), 5); // tell() + assert_eq!(t.stream_position().unwrap(), 5); // tell() assert_eq!(t.seek(SeekFrom::Start(0)).unwrap(), 0); assert_eq!(t.read_to_end(&mut buf).unwrap(), 5); assert_eq!(buf.as_slice(), b"abcde"); - assert_eq!(t.seek(SeekFrom::Current(0)).unwrap(), 5); // tell() + assert_eq!(t.stream_position().unwrap(), 5); // tell() buf.clear(); assert!(t.set_len(20).is_ok()); assert!(t.is_rolled()); - assert_eq!(t.seek(SeekFrom::Current(0)).unwrap(), 5); // tell() + assert_eq!(t.stream_position().unwrap(), 5); // tell() assert_eq!(t.seek(SeekFrom::Start(0)).unwrap(), 0); assert_eq!(t.read_to_end(&mut buf).unwrap(), 20); assert_eq!(buf.as_slice(), b"abcde\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"); diff -Nru temporalio-1.3.0/vendor/tempfile/tests/tempdir.rs temporalio-1.3.0/vendor/tempfile/tests/tempdir.rs --- temporalio-1.3.0/vendor/tempfile/tests/tempdir.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tempfile/tests/tempdir.rs 2023-10-30 19:40:00.000000000 +0000 @@ -18,32 +18,9 @@ use tempfile::{Builder, TempDir}; -macro_rules! t { - ($e:expr) => { - match $e { - Ok(n) => n, - Err(e) => panic!("error: {}", e), - } - }; -} - -trait PathExt { - fn exists(&self) -> bool; - fn is_dir(&self) -> bool; -} - -impl PathExt for Path { - fn exists(&self) -> bool { - fs::metadata(self).is_ok() - } - fn is_dir(&self) -> bool { - fs::metadata(self).map(|m| m.is_dir()).unwrap_or(false) - } -} - fn test_tempdir() { let path = { - let p = t!(Builder::new().prefix("foobar").tempdir_in(&Path::new("."))); + let p = Builder::new().prefix("foobar").tempdir_in(".").unwrap(); let p = p.path(); assert!(p.to_str().unwrap().contains("foobar")); p.to_path_buf() @@ -51,7 +28,12 @@ assert!(!path.exists()); } -#[test] +fn test_prefix() { + let tmpfile = TempDir::with_prefix_in("prefix", ".").unwrap(); + let name = tmpfile.path().file_name().unwrap().to_str().unwrap(); + assert!(name.starts_with("prefix")); +} + fn test_customnamed() { let tmpfile = Builder::new() .prefix("prefix") @@ -68,7 +50,7 @@ fn test_rm_tempdir() { let (tx, rx) = channel(); let f = move || { - let tmp = t!(TempDir::new()); + let tmp = TempDir::new().unwrap(); tx.send(tmp.path().to_path_buf()).unwrap(); panic!("panic to unwind past `tmp`"); }; @@ -76,7 +58,7 @@ let path = rx.recv().unwrap(); assert!(!path.exists()); - let tmp = t!(TempDir::new()); + let tmp = TempDir::new().unwrap(); let path = tmp.path().to_path_buf(); let f = move || { let _tmp = tmp; @@ -87,7 +69,7 @@ let path; { - let f = move || t!(TempDir::new()); + let f = move || TempDir::new().unwrap(); let tmp = thread::spawn(f).join().unwrap(); path = tmp.path().to_path_buf(); @@ -97,31 +79,31 @@ let path; { - let tmp = t!(TempDir::new()); + let tmp = TempDir::new().unwrap(); path = tmp.into_path(); } assert!(path.exists()); - t!(fs::remove_dir_all(&path)); + fs::remove_dir_all(&path).unwrap(); assert!(!path.exists()); } fn test_rm_tempdir_close() { let (tx, rx) = channel(); let f = move || { - let tmp = t!(TempDir::new()); + let tmp = TempDir::new().unwrap(); tx.send(tmp.path().to_path_buf()).unwrap(); - t!(tmp.close()); + tmp.close().unwrap(); panic!("panic when unwinding past `tmp`"); }; let _ = thread::spawn(f).join(); let path = rx.recv().unwrap(); assert!(!path.exists()); - let tmp = t!(TempDir::new()); + let tmp = TempDir::new().unwrap(); let path = tmp.path().to_path_buf(); let f = move || { let tmp = tmp; - t!(tmp.close()); + tmp.close().unwrap(); panic!("panic when unwinding past `tmp`"); }; let _ = thread::spawn(f).join(); @@ -129,96 +111,31 @@ let path; { - let f = move || t!(TempDir::new()); + let f = move || TempDir::new().unwrap(); let tmp = thread::spawn(f).join().unwrap(); path = tmp.path().to_path_buf(); assert!(path.exists()); - t!(tmp.close()); + tmp.close().unwrap(); } assert!(!path.exists()); let path; { - let tmp = t!(TempDir::new()); + let tmp = TempDir::new().unwrap(); path = tmp.into_path(); } assert!(path.exists()); - t!(fs::remove_dir_all(&path)); + fs::remove_dir_all(&path).unwrap(); assert!(!path.exists()); } -// Ideally these would be in std::os but then core would need -// to depend on std -fn recursive_mkdir_rel() { - let path = Path::new("frob"); - let cwd = env::current_dir().unwrap(); - println!( - "recursive_mkdir_rel: Making: {} in cwd {} [{}]", - path.display(), - cwd.display(), - path.exists() - ); - t!(fs::create_dir(&path)); - assert!(path.is_dir()); - t!(fs::create_dir_all(&path)); - assert!(path.is_dir()); -} - -fn recursive_mkdir_dot() { - let dot = Path::new("."); - t!(fs::create_dir_all(&dot)); - let dotdot = Path::new(".."); - t!(fs::create_dir_all(&dotdot)); -} - -fn recursive_mkdir_rel_2() { - let path = Path::new("./frob/baz"); - let cwd = env::current_dir().unwrap(); - println!( - "recursive_mkdir_rel_2: Making: {} in cwd {} [{}]", - path.display(), - cwd.display(), - path.exists() - ); - t!(fs::create_dir_all(&path)); - assert!(path.is_dir()); - assert!(path.parent().unwrap().is_dir()); - let path2 = Path::new("quux/blat"); - println!( - "recursive_mkdir_rel_2: Making: {} in cwd {}", - path2.display(), - cwd.display() - ); - t!(fs::create_dir("quux")); - t!(fs::create_dir_all(&path2)); - assert!(path2.is_dir()); - assert!(path2.parent().unwrap().is_dir()); -} - -// Ideally this would be in core, but needs TempFile -pub fn test_remove_dir_all_ok() { - let tmpdir = t!(TempDir::new()); - let tmpdir = tmpdir.path(); - let root = tmpdir.join("foo"); - - println!("making {}", root.display()); - t!(fs::create_dir(&root)); - t!(fs::create_dir(&root.join("foo"))); - t!(fs::create_dir(&root.join("foo").join("bar"))); - t!(fs::create_dir(&root.join("foo").join("bar").join("blat"))); - t!(fs::remove_dir_all(&root)); - assert!(!root.exists()); - assert!(!root.join("bar").exists()); - assert!(!root.join("bar").join("blat").exists()); -} - -pub fn dont_double_panic() { +fn dont_double_panic() { let r: Result<(), _> = thread::spawn(move || { let tmpdir = TempDir::new().unwrap(); // Remove the temporary directory so that TempDir sees // an error on drop - t!(fs::remove_dir(tmpdir.path())); + fs::remove_dir(tmpdir.path()).unwrap(); // Panic. If TempDir panics *again* due to the rmdir // error then the process will abort. panic!(); @@ -231,14 +148,14 @@ where F: FnOnce(), { - let tmpdir = t!(TempDir::new()); + let tmpdir = TempDir::new().unwrap(); assert!(env::set_current_dir(tmpdir.path()).is_ok()); f(); } -pub fn pass_as_asref_path() { - let tempdir = t!(TempDir::new()); +fn pass_as_asref_path() { + let tempdir = TempDir::new().unwrap(); takes_asref_path(&tempdir); fn takes_asref_path>(path: T) { @@ -250,12 +167,10 @@ #[test] fn main() { in_tmpdir(test_tempdir); + in_tmpdir(test_prefix); + in_tmpdir(test_customnamed); in_tmpdir(test_rm_tempdir); in_tmpdir(test_rm_tempdir_close); - in_tmpdir(recursive_mkdir_rel); - in_tmpdir(recursive_mkdir_dot); - in_tmpdir(recursive_mkdir_rel_2); - in_tmpdir(test_remove_dir_all_ok); in_tmpdir(dont_double_panic); in_tmpdir(pass_as_asref_path); } diff -Nru temporalio-1.3.0/vendor/thiserror/build.rs temporalio-1.3.0/vendor/thiserror/build.rs --- temporalio-1.3.0/vendor/thiserror/build.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/thiserror/build.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,27 +4,56 @@ use std::process::{Command, ExitStatus, Stdio}; use std::str; -// This code exercises the surface area that we expect of the Provider API. If -// the current toolchain is able to compile it, then thiserror is able to use -// providers for backtrace support. +// This code exercises the surface area that we expect of the Error generic +// member access API. If the current toolchain is able to compile it, then +// thiserror is able to provide backtrace support. const PROBE: &str = r#" - #![feature(provide_any)] + #![feature(error_generic_member_access)] - use std::any::{Demand, Provider}; + use std::error::{Error, Request}; + use std::fmt::{self, Debug, Display}; - fn _f<'a, P: Provider>(p: &'a P, demand: &mut Demand<'a>) { - p.provide(demand); + struct MyError(Thing); + struct Thing; + + impl Debug for MyError { + fn fmt(&self, _formatter: &mut fmt::Formatter) -> fmt::Result { + unimplemented!() + } + } + + impl Display for MyError { + fn fmt(&self, _formatter: &mut fmt::Formatter) -> fmt::Result { + unimplemented!() + } + } + + impl Error for MyError { + fn provide<'a>(&'a self, request: &mut Request<'a>) { + request.provide_ref(&self.0); + } } "#; fn main() { match compile_probe() { - Some(status) if status.success() => println!("cargo:rustc-cfg=provide_any"), + Some(status) if status.success() => println!("cargo:rustc-cfg=error_generic_member_access"), _ => {} } } fn compile_probe() -> Option { + if env::var_os("RUSTC_STAGE").is_some() { + // We are running inside rustc bootstrap. This is a highly non-standard + // environment with issues such as: + // + // https://github.com/rust-lang/cargo/issues/11138 + // https://github.com/rust-lang/rust/issues/114839 + // + // Let's just not use nightly features here. + return None; + } + let rustc = env::var_os("RUSTC")?; let out_dir = env::var_os("OUT_DIR")?; let probefile = Path::new(&out_dir).join("probe.rs"); diff -Nru temporalio-1.3.0/vendor/thiserror/.cargo-checksum.json temporalio-1.3.0/vendor/thiserror/.cargo-checksum.json --- temporalio-1.3.0/vendor/thiserror/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/thiserror/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"f8b505b5c6c5d3161a389c1aab1b98bc3f18d99fa72614afc13e36571aff03f1","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"106c5a937767d49503e1fc5eae1b924f57f15decd8583720a3c652483e348a64","build.rs":"8b8d9cbf84b9a2fd108b49ecb4bae327da688d80b818acda9ee17170c788e193","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/aserror.rs":"c93bd9191f26a7599043b397e26822564d9bafaa339a19861182a9909e8a3811","src/display.rs":"63c492bfa8b8e9180ad5abcbe63c1173b4ad490c47ec33cac9a338f96c8f8e42","src/lib.rs":"e82e2427665748649779ade5a886dc8ee27d5ee954fb5ad11b89dff4de786420","src/provide.rs":"b2f7a33f44f44a03e94f54cc4b79ba2dcc5fcf0fdf64b07cdd9588a6544c8d8e","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/test_backtrace.rs":"fd1f326bc23e6c1611a51bc43c1d5092b32ee18a1613abe20da0818e5729c0ed","tests/test_deprecated.rs":"7b80a10f090a3982da017556d3d71398abcead59afd8278c7b9d9b1f7b66c7b3","tests/test_display.rs":"f7d023365adbd47a24cb62cea02905503fd54705cbfdffdfdb3412dc210737a9","tests/test_error.rs":"d06dca3c38f22d7ce4e27dadd6c0f78e5cefe3a2ebbc5fe44abc9ddd5ee1985f","tests/test_expr.rs":"388402702a3be4ffcd0574d66733e8932bf7d5de37544a00ecb0e4f8d8246da4","tests/test_from.rs":"36bd22be7b048cd187a19076aeac1456040f20a0b677b01c6003998b63439ea1","tests/test_generics.rs":"4f33747e3f62550d5af94687679af230ef92fbb3247ae4b41df46792a040e4dc","tests/test_lints.rs":"c17d79d77edfcdd4b8f6dcdcd1c70ad065cfbc747e1a618ac6343315d0b59ea4","tests/test_option.rs":"3a82af1ad206444b9955e3f2fda508d70f887ad0b7f7986bafc17496f63b07ab","tests/test_path.rs":"ef5452c7e828a0179f5ace7e19f95b9762aa887caf10244adbfe36ded712c090","tests/test_source.rs":"f2f04f11bf8a709eddb1c68f113cda0c2be87e56800d6b9d991bedd545b4642f","tests/test_transparent.rs":"cd8d5be14d00d610a1782104bea6c013618501dab5c3625178ecfcf66e31f939","tests/ui/bad-field-attr.rs":"c5b567e3091969a01061843fb2d95c5e1aa3fa81edfeecdf416a84a6fba40aa8","tests/ui/bad-field-attr.stderr":"78f576d5ec66464a77f1cdf0f5bb7dcdf18f7f04f1165983a6239ec59d908ea3","tests/ui/concat-display.rs":"3995bd6b3bdd67df7bb16499775d89600c0dd20895633fe807396a64c117078d","tests/ui/concat-display.stderr":"256dfde61ee689ebe51588b135e2e030bdf95ba5adef1cb59f588c797bbdeef2","tests/ui/duplicate-enum-source.rs":"bfe28ce18042d446a76c7411aa233598211ce1157fdd3cb87bff3b3fa7c33131","tests/ui/duplicate-enum-source.stderr":"3d32fead420b27b4497be49080bc3b78f7f0ba339ead3de6c94e5dc20302c18f","tests/ui/duplicate-fmt.rs":"af53b66445bcce076a114376747f176b42c060a156563a41ccb638ae14c451fd","tests/ui/duplicate-fmt.stderr":"998bb121ce6f1595fd99529a7a1b06451b6bf476924337dce5524a83a7a5f1a1","tests/ui/duplicate-struct-source.rs":"f3d5f8e3d6fccfcdbb630db291353709583a920c6bf46f9f9de9966b67ea4c0f","tests/ui/duplicate-struct-source.stderr":"fb761d76668ac42357cf37b03c0abdbae5de0a828034990850291c9cb6ab766d","tests/ui/duplicate-transparent.rs":"41a9447e85f1a47027023442acde55c3d8610ec46d91b39bd43a42d7a004d747","tests/ui/duplicate-transparent.stderr":"4975abad43e973df158f18098d9bcb9dc39f8e75d3e733ed5d6620d1ee065c11","tests/ui/from-backtrace-backtrace.rs":"1fd51c5a1f7f6b6ee676d9fc798b6276ef2ce75def33d07f0e4b7bbde3291859","tests/ui/from-backtrace-backtrace.stderr":"f9774e9dad51374501ef4a55fa2dacece4d1c70e29ca18761394bdb80a9a74da","tests/ui/from-not-source.rs":"744a55aeffe11066830159ac023c33aaa5576e313b341fa24440ee13dfe3ac98","tests/ui/from-not-source.stderr":"525038e8b841707b927434cca4549168f73bd305faca17552a0d1fffa542ccc4","tests/ui/lifetime.rs":"e72e0391695e47fcd07edbf3819f114e468e2097086ec687781c7c8d6b4b7da7","tests/ui/lifetime.stderr":"d889a23f71324afe95dafc5f9d15337fbdbc9977cb8924f0cafe3a3becf4ced7","tests/ui/missing-fmt.rs":"bc9e2830e54c2474ff6c27a766ed3dee88d29e40f93f30e8d64d63233866c17d","tests/ui/missing-fmt.stderr":"9a20ccee9b660fe31a5b3199307b48580bb8305cb9ce33d97d3fc767a0cfc614","tests/ui/no-display.rs":"962245372272d23e9833311c15e73221b3c7da822a2ff90189613af56ffb5c2e","tests/ui/no-display.stderr":"d7bdecccb74d21677361fb7f89dc784dc859258afcf663fa1c48da6c172a61aa","tests/ui/source-enum-not-error.rs":"7c57c63b3ec37bc456738acea2e1038de5b0f32fe7e83984037d7ad1ed921737","tests/ui/source-enum-not-error.stderr":"feac587e2436fd7bed73e7265dceb31b495587f1a8eea5c5fefd9da66b912dac","tests/ui/source-struct-not-error.rs":"09fb7713637242dca9192585a6daeb8d732dc1c1d0fa522b74f1c98618e6d949","tests/ui/source-struct-not-error.stderr":"66fb5fa85d59f11d8b5f7ec99469a843c51943b0010e554bdf56376a0614a2ca","tests/ui/transparent-display.rs":"b3c59583eb64b0b5a246444456d03cf52d51bcdc08885023600dbb44fd87e5f2","tests/ui/transparent-display.stderr":"16d538914e0d92026bde4b4bec75660217da9ecc6b621d12d2eb81d33ed1d1da","tests/ui/transparent-enum-many.rs":"2a40a764fb4683bff57973eec61507a6c00f7d4d7a32da6e7bd0190c2e445434","tests/ui/transparent-enum-many.stderr":"f1d78c1d6d8edbef153420db4fb9ca3dc6076fa043b5b1bc0cd291daa417a3ea","tests/ui/transparent-enum-source.rs":"18f606a98ac0a53f08dc56f5f923b9cbe75d25ed34479c777b48dac305d5968c","tests/ui/transparent-enum-source.stderr":"1b2e0ac53951034575d43ec0396c4e2b3cfb272db2aef8d6baa13a7e1632cc84","tests/ui/transparent-struct-many.rs":"72c6b6c1a44c203d3bc68989b2f1ec092531ef75b745432824c3776c290326f6","tests/ui/transparent-struct-many.stderr":"7bd0536dbb54a0ce7d4a8e66ca7624a1b132d8a1d1e4fecca642ec77494ac01c","tests/ui/transparent-struct-source.rs":"863fa691ed7d27e8767da58d9ee11fd40d6642274b36338ca1074c07964ea2b3","tests/ui/transparent-struct-source.stderr":"267dab65929e67d32347fb467a00b43af931f8205d727d7671938580217fc70e","tests/ui/unexpected-field-fmt.rs":"29fba7b4d81c642ec8e47cfe053aa515acf9080a86d65e685363a48993becfe3","tests/ui/unexpected-field-fmt.stderr":"20731c4a08af04bed3ff513903adadd690b6bc532b15604557e7f25575a8338f","tests/ui/unexpected-struct-source.rs":"c6cbe882d622635c216feb8290b1bd536ce0ec4feee16bc087667a21b3641d5c","tests/ui/unexpected-struct-source.stderr":"7c8227513478f6cc09e8a28be337c8a0e758a06ca5978d774c91bd43c4a54043","tests/ui/union.rs":"331adff27cebd8b95b03b6742cc8247331fda1f961e1590ed39c8d39f50cf1d8","tests/ui/union.stderr":"5f67ad29753d6fb14bc03aef7d4a1f660ee7796e469c037efbf8b13456934ad3"},"package":"c16a64ba9387ef3fdae4f9c1a7f07a0997fce91985c0336f1ddc1822b3b37802"} \ No newline at end of file +{"files":{"Cargo.toml":"426e954049c684a86d819889248e16d5035fee3e6208c8561a6306f67829c37f","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"106c5a937767d49503e1fc5eae1b924f57f15decd8583720a3c652483e348a64","build.rs":"68e8862d9a6fa607647c01232662a3d9a44462aec390a6fe98beccd59fa58f7d","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/aserror.rs":"cf3c98abb2b9e06afa3c4aba0df14938417c3e330315863437561cbb3573888b","src/display.rs":"44edb82464d52b33604236445e7429b86273fcd921fbaafc72270f0e1d8876ff","src/lib.rs":"c42c4fed186c0d328fb2f8cec2dc72be925c54936db148b2700203319ff78a7c","src/provide.rs":"8007e22953bacfcc57bb7d12a03fbeb0acece5d2ec889cf55522a4e071d26df3","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/test_backtrace.rs":"a8f038490fb881463c0e8c36557617c47cf2d181f16c00525d4d139c7964fade","tests/test_deprecated.rs":"7b80a10f090a3982da017556d3d71398abcead59afd8278c7b9d9b1f7b66c7b3","tests/test_display.rs":"f7d023365adbd47a24cb62cea02905503fd54705cbfdffdfdb3412dc210737a9","tests/test_error.rs":"d06dca3c38f22d7ce4e27dadd6c0f78e5cefe3a2ebbc5fe44abc9ddd5ee1985f","tests/test_expr.rs":"388402702a3be4ffcd0574d66733e8932bf7d5de37544a00ecb0e4f8d8246da4","tests/test_from.rs":"36bd22be7b048cd187a19076aeac1456040f20a0b677b01c6003998b63439ea1","tests/test_generics.rs":"4f33747e3f62550d5af94687679af230ef92fbb3247ae4b41df46792a040e4dc","tests/test_lints.rs":"c17d79d77edfcdd4b8f6dcdcd1c70ad065cfbc747e1a618ac6343315d0b59ea4","tests/test_option.rs":"ac30d929c019d6c54d1c1792b09e43c18dc0e4123b82051ff9e5db5e63c15e43","tests/test_path.rs":"ef5452c7e828a0179f5ace7e19f95b9762aa887caf10244adbfe36ded712c090","tests/test_source.rs":"f2f04f11bf8a709eddb1c68f113cda0c2be87e56800d6b9d991bedd545b4642f","tests/test_transparent.rs":"cd8d5be14d00d610a1782104bea6c013618501dab5c3625178ecfcf66e31f939","tests/ui/bad-field-attr.rs":"c5b567e3091969a01061843fb2d95c5e1aa3fa81edfeecdf416a84a6fba40aa8","tests/ui/bad-field-attr.stderr":"78f576d5ec66464a77f1cdf0f5bb7dcdf18f7f04f1165983a6239ec59d908ea3","tests/ui/concat-display.rs":"3995bd6b3bdd67df7bb16499775d89600c0dd20895633fe807396a64c117078d","tests/ui/concat-display.stderr":"256dfde61ee689ebe51588b135e2e030bdf95ba5adef1cb59f588c797bbdeef2","tests/ui/duplicate-enum-source.rs":"bfe28ce18042d446a76c7411aa233598211ce1157fdd3cb87bff3b3fa7c33131","tests/ui/duplicate-enum-source.stderr":"3d32fead420b27b4497be49080bc3b78f7f0ba339ead3de6c94e5dc20302c18f","tests/ui/duplicate-fmt.rs":"af53b66445bcce076a114376747f176b42c060a156563a41ccb638ae14c451fd","tests/ui/duplicate-fmt.stderr":"998bb121ce6f1595fd99529a7a1b06451b6bf476924337dce5524a83a7a5f1a1","tests/ui/duplicate-struct-source.rs":"f3d5f8e3d6fccfcdbb630db291353709583a920c6bf46f9f9de9966b67ea4c0f","tests/ui/duplicate-struct-source.stderr":"fb761d76668ac42357cf37b03c0abdbae5de0a828034990850291c9cb6ab766d","tests/ui/duplicate-transparent.rs":"41a9447e85f1a47027023442acde55c3d8610ec46d91b39bd43a42d7a004d747","tests/ui/duplicate-transparent.stderr":"4975abad43e973df158f18098d9bcb9dc39f8e75d3e733ed5d6620d1ee065c11","tests/ui/from-backtrace-backtrace.rs":"1fd51c5a1f7f6b6ee676d9fc798b6276ef2ce75def33d07f0e4b7bbde3291859","tests/ui/from-backtrace-backtrace.stderr":"f9774e9dad51374501ef4a55fa2dacece4d1c70e29ca18761394bdb80a9a74da","tests/ui/from-not-source.rs":"744a55aeffe11066830159ac023c33aaa5576e313b341fa24440ee13dfe3ac98","tests/ui/from-not-source.stderr":"525038e8b841707b927434cca4549168f73bd305faca17552a0d1fffa542ccc4","tests/ui/lifetime.rs":"e72e0391695e47fcd07edbf3819f114e468e2097086ec687781c7c8d6b4b7da7","tests/ui/lifetime.stderr":"d889a23f71324afe95dafc5f9d15337fbdbc9977cb8924f0cafe3a3becf4ced7","tests/ui/missing-fmt.rs":"bc9e2830e54c2474ff6c27a766ed3dee88d29e40f93f30e8d64d63233866c17d","tests/ui/missing-fmt.stderr":"9a20ccee9b660fe31a5b3199307b48580bb8305cb9ce33d97d3fc767a0cfc614","tests/ui/no-display.rs":"962245372272d23e9833311c15e73221b3c7da822a2ff90189613af56ffb5c2e","tests/ui/no-display.stderr":"d7bdecccb74d21677361fb7f89dc784dc859258afcf663fa1c48da6c172a61aa","tests/ui/source-enum-not-error.rs":"7c57c63b3ec37bc456738acea2e1038de5b0f32fe7e83984037d7ad1ed921737","tests/ui/source-enum-not-error.stderr":"feac587e2436fd7bed73e7265dceb31b495587f1a8eea5c5fefd9da66b912dac","tests/ui/source-struct-not-error.rs":"09fb7713637242dca9192585a6daeb8d732dc1c1d0fa522b74f1c98618e6d949","tests/ui/source-struct-not-error.stderr":"66fb5fa85d59f11d8b5f7ec99469a843c51943b0010e554bdf56376a0614a2ca","tests/ui/transparent-display.rs":"b3c59583eb64b0b5a246444456d03cf52d51bcdc08885023600dbb44fd87e5f2","tests/ui/transparent-display.stderr":"16d538914e0d92026bde4b4bec75660217da9ecc6b621d12d2eb81d33ed1d1da","tests/ui/transparent-enum-many.rs":"2a40a764fb4683bff57973eec61507a6c00f7d4d7a32da6e7bd0190c2e445434","tests/ui/transparent-enum-many.stderr":"f1d78c1d6d8edbef153420db4fb9ca3dc6076fa043b5b1bc0cd291daa417a3ea","tests/ui/transparent-enum-source.rs":"18f606a98ac0a53f08dc56f5f923b9cbe75d25ed34479c777b48dac305d5968c","tests/ui/transparent-enum-source.stderr":"1b2e0ac53951034575d43ec0396c4e2b3cfb272db2aef8d6baa13a7e1632cc84","tests/ui/transparent-struct-many.rs":"72c6b6c1a44c203d3bc68989b2f1ec092531ef75b745432824c3776c290326f6","tests/ui/transparent-struct-many.stderr":"7bd0536dbb54a0ce7d4a8e66ca7624a1b132d8a1d1e4fecca642ec77494ac01c","tests/ui/transparent-struct-source.rs":"863fa691ed7d27e8767da58d9ee11fd40d6642274b36338ca1074c07964ea2b3","tests/ui/transparent-struct-source.stderr":"267dab65929e67d32347fb467a00b43af931f8205d727d7671938580217fc70e","tests/ui/unexpected-field-fmt.rs":"29fba7b4d81c642ec8e47cfe053aa515acf9080a86d65e685363a48993becfe3","tests/ui/unexpected-field-fmt.stderr":"20731c4a08af04bed3ff513903adadd690b6bc532b15604557e7f25575a8338f","tests/ui/unexpected-struct-source.rs":"c6cbe882d622635c216feb8290b1bd536ce0ec4feee16bc087667a21b3641d5c","tests/ui/unexpected-struct-source.stderr":"7c8227513478f6cc09e8a28be337c8a0e758a06ca5978d774c91bd43c4a54043","tests/ui/union.rs":"331adff27cebd8b95b03b6742cc8247331fda1f961e1590ed39c8d39f50cf1d8","tests/ui/union.stderr":"5f67ad29753d6fb14bc03aef7d4a1f660ee7796e469c037efbf8b13456934ad3"},"package":"97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/thiserror/Cargo.toml temporalio-1.3.0/vendor/thiserror/Cargo.toml --- temporalio-1.3.0/vendor/thiserror/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/thiserror/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,10 +10,10 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" +edition = "2021" rust-version = "1.56" name = "thiserror" -version = "1.0.41" +version = "1.0.47" authors = ["David Tolnay "] description = "derive(Error)" documentation = "https://docs.rs/thiserror" @@ -28,13 +28,14 @@ repository = "https://github.com/dtolnay/thiserror" [package.metadata.docs.rs] +rustdoc-args = ["--generate-link-to-definition"] targets = ["x86_64-unknown-linux-gnu"] [dependencies.thiserror-impl] -version = "=1.0.41" +version = "=1.0.47" [dev-dependencies.anyhow] -version = "1.0.71" +version = "1.0.73" [dev-dependencies.ref-cast] version = "1.0.18" diff -Nru temporalio-1.3.0/vendor/thiserror/src/aserror.rs temporalio-1.3.0/vendor/thiserror/src/aserror.rs --- temporalio-1.3.0/vendor/thiserror/src/aserror.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/thiserror/src/aserror.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,7 @@ use std::error::Error; use std::panic::UnwindSafe; +#[doc(hidden)] pub trait AsDynError<'a>: Sealed { fn as_dyn_error(&self) -> &(dyn Error + 'a); } @@ -40,6 +41,7 @@ } } +#[doc(hidden)] pub trait Sealed {} impl<'a, T: Error + 'a> Sealed for T {} impl<'a> Sealed for dyn Error + 'a {} diff -Nru temporalio-1.3.0/vendor/thiserror/src/display.rs temporalio-1.3.0/vendor/thiserror/src/display.rs --- temporalio-1.3.0/vendor/thiserror/src/display.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/thiserror/src/display.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,7 @@ use std::fmt::Display; use std::path::{self, Path, PathBuf}; +#[doc(hidden)] pub trait DisplayAsDisplay { fn as_display(&self) -> Self; } @@ -11,6 +12,7 @@ } } +#[doc(hidden)] pub trait PathAsDisplay { fn as_display(&self) -> path::Display<'_>; } diff -Nru temporalio-1.3.0/vendor/thiserror/src/lib.rs temporalio-1.3.0/vendor/thiserror/src/lib.rs --- temporalio-1.3.0/vendor/thiserror/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/thiserror/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -228,7 +228,7 @@ //! //! [`anyhow`]: https://github.com/dtolnay/anyhow -#![doc(html_root_url = "https://docs.rs/thiserror/1.0.41")] +#![doc(html_root_url = "https://docs.rs/thiserror/1.0.47")] #![allow( // Clippy bug: https://github.com/rust-lang/rust-clippy/issues/7421 clippy::doc_markdown, @@ -236,11 +236,11 @@ clippy::return_self_not_must_use, clippy::wildcard_imports, )] -#![cfg_attr(provide_any, feature(provide_any))] +#![cfg_attr(error_generic_member_access, feature(error_generic_member_access))] mod aserror; mod display; -#[cfg(provide_any)] +#[cfg(error_generic_member_access)] mod provide; pub use thiserror_impl::*; @@ -248,8 +248,11 @@ // Not public API. #[doc(hidden)] pub mod __private { + #[doc(hidden)] pub use crate::aserror::AsDynError; + #[doc(hidden)] pub use crate::display::{DisplayAsDisplay, PathAsDisplay}; - #[cfg(provide_any)] + #[cfg(error_generic_member_access)] + #[doc(hidden)] pub use crate::provide::ThiserrorProvide; } diff -Nru temporalio-1.3.0/vendor/thiserror/src/provide.rs temporalio-1.3.0/vendor/thiserror/src/provide.rs --- temporalio-1.3.0/vendor/thiserror/src/provide.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/thiserror/src/provide.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,15 +1,20 @@ -use std::any::{Demand, Provider}; +use std::error::{Error, Request}; +#[doc(hidden)] pub trait ThiserrorProvide: Sealed { - fn thiserror_provide<'a>(&'a self, demand: &mut Demand<'a>); + fn thiserror_provide<'a>(&'a self, request: &mut Request<'a>); } -impl ThiserrorProvide for T { +impl ThiserrorProvide for T +where + T: Error + ?Sized, +{ #[inline] - fn thiserror_provide<'a>(&'a self, demand: &mut Demand<'a>) { - self.provide(demand); + fn thiserror_provide<'a>(&'a self, request: &mut Request<'a>) { + self.provide(request); } } +#[doc(hidden)] pub trait Sealed {} -impl Sealed for T {} +impl Sealed for T {} diff -Nru temporalio-1.3.0/vendor/thiserror/tests/test_backtrace.rs temporalio-1.3.0/vendor/thiserror/tests/test_backtrace.rs --- temporalio-1.3.0/vendor/thiserror/tests/test_backtrace.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/thiserror/tests/test_backtrace.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,4 @@ -#![cfg_attr( - thiserror_nightly_testing, - feature(error_generic_member_access, provide_any) -)] +#![cfg_attr(thiserror_nightly_testing, feature(error_generic_member_access))] use thiserror::Error; @@ -19,9 +16,8 @@ #[cfg(thiserror_nightly_testing)] pub mod structs { use super::{Inner, InnerBacktrace}; - use std::any; use std::backtrace::Backtrace; - use std::error::Error; + use std::error::{self, Error}; use std::sync::Arc; use thiserror::Error; @@ -106,75 +102,56 @@ let error = PlainBacktrace { backtrace: Backtrace::capture(), }; - assert!(any::request_ref::(&error).is_some()); + assert!(error::request_ref::(&error).is_some()); let error = ExplicitBacktrace { backtrace: Backtrace::capture(), }; - assert!(any::request_ref::(&error).is_some()); + assert!(error::request_ref::(&error).is_some()); let error = OptBacktrace { backtrace: Some(Backtrace::capture()), }; - assert!(any::request_ref::(&error).is_some()); + assert!(error::request_ref::(&error).is_some()); let error = ArcBacktrace { backtrace: Arc::new(Backtrace::capture()), }; - assert!(any::request_ref::(&error).is_some()); + assert!(error::request_ref::(&error).is_some()); let error = BacktraceFrom::from(Inner); - assert!(any::request_ref::(&error).is_some()); + assert!(error::request_ref::(&error).is_some()); let error = CombinedBacktraceFrom::from(InnerBacktrace { backtrace: Backtrace::capture(), }); - assert!(any::request_ref::(&error).is_some()); + assert!(error::request_ref::(&error).is_some()); let error = OptBacktraceFrom::from(Inner); - assert!(any::request_ref::(&error).is_some()); + assert!(error::request_ref::(&error).is_some()); let error = ArcBacktraceFrom::from(Inner); - assert!(any::request_ref::(&error).is_some()); + assert!(error::request_ref::(&error).is_some()); let error = AnyhowBacktrace { source: anyhow::Error::msg("..."), }; - assert!(any::request_ref::(&error).is_some()); + assert!(error::request_ref::(&error).is_some()); let error = BoxDynErrorBacktrace { source: Box::new(PlainBacktrace { backtrace: Backtrace::capture(), }), }; - assert!(any::request_ref::(&error).is_some()); - } - - // https://github.com/dtolnay/thiserror/issues/185 -- std::error::Error and - // std::any::Provide both have a method called 'provide', so directly - // calling it from generated code could be ambiguous. - #[test] - fn test_provide_name_collision() { - use std::any::Provider; - - #[derive(Error, Debug)] - #[error("...")] - struct MyError { - #[source] - #[backtrace] - x: std::io::Error, - } - - let _: dyn Error; - let _: dyn Provider; + assert!(error::request_ref::(&error).is_some()); } } #[cfg(thiserror_nightly_testing)] pub mod enums { use super::{Inner, InnerBacktrace}; - use std::any; use std::backtrace::Backtrace; + use std::error; use std::sync::Arc; use thiserror::Error; @@ -259,36 +236,36 @@ let error = PlainBacktrace::Test { backtrace: Backtrace::capture(), }; - assert!(any::request_ref::(&error).is_some()); + assert!(error::request_ref::(&error).is_some()); let error = ExplicitBacktrace::Test { backtrace: Backtrace::capture(), }; - assert!(any::request_ref::(&error).is_some()); + assert!(error::request_ref::(&error).is_some()); let error = OptBacktrace::Test { backtrace: Some(Backtrace::capture()), }; - assert!(any::request_ref::(&error).is_some()); + assert!(error::request_ref::(&error).is_some()); let error = ArcBacktrace::Test { backtrace: Arc::new(Backtrace::capture()), }; - assert!(any::request_ref::(&error).is_some()); + assert!(error::request_ref::(&error).is_some()); let error = BacktraceFrom::from(Inner); - assert!(any::request_ref::(&error).is_some()); + assert!(error::request_ref::(&error).is_some()); let error = CombinedBacktraceFrom::from(InnerBacktrace { backtrace: Backtrace::capture(), }); - assert!(any::request_ref::(&error).is_some()); + assert!(error::request_ref::(&error).is_some()); let error = OptBacktraceFrom::from(Inner); - assert!(any::request_ref::(&error).is_some()); + assert!(error::request_ref::(&error).is_some()); let error = ArcBacktraceFrom::from(Inner); - assert!(any::request_ref::(&error).is_some()); + assert!(error::request_ref::(&error).is_some()); } } diff -Nru temporalio-1.3.0/vendor/thiserror/tests/test_option.rs temporalio-1.3.0/vendor/thiserror/tests/test_option.rs --- temporalio-1.3.0/vendor/thiserror/tests/test_option.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/thiserror/tests/test_option.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,4 @@ -#![cfg_attr( - thiserror_nightly_testing, - feature(error_generic_member_access, provide_any) -)] +#![cfg_attr(thiserror_nightly_testing, feature(error_generic_member_access))] #[cfg(thiserror_nightly_testing)] pub mod structs { diff -Nru temporalio-1.3.0/vendor/thiserror-impl/.cargo-checksum.json temporalio-1.3.0/vendor/thiserror-impl/.cargo-checksum.json --- temporalio-1.3.0/vendor/thiserror-impl/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/thiserror-impl/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"2224522a1ae233f4430a7391159543908dfb1fb998d56d9f5f47e228f10c70ef","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","src/ast.rs":"c7601e8394f5ee304365c520181f0dbeaa807ddaa71ce4a8618ea1a70f81b3b2","src/attr.rs":"30259cc7156ff7be71422cb85c0dc4fc07e7c90d7863cdec127dfd5901b43b60","src/expand.rs":"cb5ce6771c95eccd9c2137c02550a1d575c50607168d4a7d82edb5cd32d9b36b","src/fmt.rs":"d63d39120c18712596f9f2a1715821148c2becd4d8bad5bc1b307210a84dbe98","src/generics.rs":"2076cde22271be355a8131a77add4b93f83ab0af4317cd2df5471fffa4f95c66","src/lib.rs":"7d023310cd3db670554ce108a6afd94e1ae3c55c83661d4b9fcebdf1865b9e4b","src/prop.rs":"6709932aee8f9d217f40cd644629c0ecb2f46d333ae8a1398e8d745534f4e028","src/valid.rs":"ac95253944fd360d3578d0643a7baabb2cfa6bf9fbced7a6ce1f7b0529a3bb98"},"package":"d14928354b01c4d6a4f0e549069adef399a284e7995c7ccca94e8a07a5346c59"} \ No newline at end of file +{"files":{"Cargo.toml":"7adfcbfb61f6e08a1b05802640e4648a14cffdc6faa614f18f4ac57ec4bbfe7b","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","src/ast.rs":"c7601e8394f5ee304365c520181f0dbeaa807ddaa71ce4a8618ea1a70f81b3b2","src/attr.rs":"13404e2a5b32ac24a041b977787864d52f3d5253d685894f62fd88625a102561","src/expand.rs":"5515ef3efdd0b24e7191d1f96ff16911f4e2259148072974022295e4a93c03ea","src/fmt.rs":"d63d39120c18712596f9f2a1715821148c2becd4d8bad5bc1b307210a84dbe98","src/generics.rs":"2076cde22271be355a8131a77add4b93f83ab0af4317cd2df5471fffa4f95c66","src/lib.rs":"7d023310cd3db670554ce108a6afd94e1ae3c55c83661d4b9fcebdf1865b9e4b","src/prop.rs":"6709932aee8f9d217f40cd644629c0ecb2f46d333ae8a1398e8d745534f4e028","src/valid.rs":"ac95253944fd360d3578d0643a7baabb2cfa6bf9fbced7a6ce1f7b0529a3bb98"},"package":"6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/thiserror-impl/Cargo.toml temporalio-1.3.0/vendor/thiserror-impl/Cargo.toml --- temporalio-1.3.0/vendor/thiserror-impl/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/thiserror-impl/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,16 +10,17 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" +edition = "2021" rust-version = "1.56" name = "thiserror-impl" -version = "1.0.41" +version = "1.0.47" authors = ["David Tolnay "] description = "Implementation detail of the `thiserror` crate" license = "MIT OR Apache-2.0" repository = "https://github.com/dtolnay/thiserror" [package.metadata.docs.rs] +rustdoc-args = ["--generate-link-to-definition"] targets = ["x86_64-unknown-linux-gnu"] [lib] diff -Nru temporalio-1.3.0/vendor/thiserror-impl/src/attr.rs temporalio-1.3.0/vendor/thiserror-impl/src/attr.rs --- temporalio-1.3.0/vendor/thiserror-impl/src/attr.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/thiserror-impl/src/attr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,6 @@ use proc_macro2::{Delimiter, Group, Span, TokenStream, TokenTree}; use quote::{format_ident, quote, ToTokens}; use std::collections::BTreeSet as Set; -use std::iter::FromIterator; use syn::parse::ParseStream; use syn::{ braced, bracketed, parenthesized, token, Attribute, Error, Ident, Index, LitInt, LitStr, Meta, @@ -198,7 +197,7 @@ let fmt = &self.fmt; let args = &self.args; tokens.extend(quote! { - write!(__formatter, #fmt #args) + std::write!(__formatter, #fmt #args) }); } } diff -Nru temporalio-1.3.0/vendor/thiserror-impl/src/expand.rs temporalio-1.3.0/vendor/thiserror-impl/src/expand.rs --- temporalio-1.3.0/vendor/thiserror-impl/src/expand.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/thiserror-impl/src/expand.rs 2023-10-30 19:40:00.000000000 +0000 @@ -60,19 +60,19 @@ }); let provide_method = input.backtrace_field().map(|backtrace_field| { - let demand = quote!(demand); + let request = quote!(request); let backtrace = &backtrace_field.member; let body = if let Some(source_field) = input.source_field() { let source = &source_field.member; let source_provide = if type_is_option(source_field.ty) { quote_spanned! {source.span()=> if let std::option::Option::Some(source) = &self.#source { - source.thiserror_provide(#demand); + source.thiserror_provide(#request); } } } else { quote_spanned! {source.span()=> - self.#source.thiserror_provide(#demand); + self.#source.thiserror_provide(#request); } }; let self_provide = if source == backtrace { @@ -80,12 +80,12 @@ } else if type_is_option(backtrace_field.ty) { Some(quote! { if let std::option::Option::Some(backtrace) = &self.#backtrace { - #demand.provide_ref::(backtrace); + #request.provide_ref::(backtrace); } }) } else { Some(quote! { - #demand.provide_ref::(&self.#backtrace); + #request.provide_ref::(&self.#backtrace); }) }; quote! { @@ -96,16 +96,16 @@ } else if type_is_option(backtrace_field.ty) { quote! { if let std::option::Option::Some(backtrace) = &self.#backtrace { - #demand.provide_ref::(backtrace); + #request.provide_ref::(backtrace); } } } else { quote! { - #demand.provide_ref::(&self.#backtrace); + #request.provide_ref::(&self.#backtrace); } }; quote! { - fn provide<'_demand>(&'_demand self, #demand: &mut std::any::Demand<'_demand>) { + fn provide<'_request>(&'_request self, #request: &mut std::error::Request<'_request>) { #body } } @@ -246,7 +246,7 @@ }; let provide_method = if input.has_backtrace() { - let demand = quote!(demand); + let request = quote!(request); let arms = input.variants.iter().map(|variant| { let ident = &variant.ident; match (variant.backtrace_field(), variant.source_field()) { @@ -259,23 +259,23 @@ let source_provide = if type_is_option(source_field.ty) { quote_spanned! {source.span()=> if let std::option::Option::Some(source) = #varsource { - source.thiserror_provide(#demand); + source.thiserror_provide(#request); } } } else { quote_spanned! {source.span()=> - #varsource.thiserror_provide(#demand); + #varsource.thiserror_provide(#request); } }; let self_provide = if type_is_option(backtrace_field.ty) { quote! { if let std::option::Option::Some(backtrace) = backtrace { - #demand.provide_ref::(backtrace); + #request.provide_ref::(backtrace); } } } else { quote! { - #demand.provide_ref::(backtrace); + #request.provide_ref::(backtrace); } }; quote! { @@ -298,12 +298,12 @@ let source_provide = if type_is_option(source_field.ty) { quote_spanned! {backtrace.span()=> if let std::option::Option::Some(source) = #varsource { - source.thiserror_provide(#demand); + source.thiserror_provide(#request); } } } else { quote_spanned! {backtrace.span()=> - #varsource.thiserror_provide(#demand); + #varsource.thiserror_provide(#request); } }; quote! { @@ -318,12 +318,12 @@ let body = if type_is_option(backtrace_field.ty) { quote! { if let std::option::Option::Some(backtrace) = backtrace { - #demand.provide_ref::(backtrace); + #request.provide_ref::(backtrace); } } } else { quote! { - #demand.provide_ref::(backtrace); + #request.provide_ref::(backtrace); } }; quote! { @@ -338,7 +338,7 @@ } }); Some(quote! { - fn provide<'_demand>(&'_demand self, #demand: &mut std::any::Demand<'_demand>) { + fn provide<'_request>(&'_request self, #request: &mut std::error::Request<'_request>) { #[allow(deprecated)] match self { #(#arms)* diff -Nru temporalio-1.3.0/vendor/time/.cargo-checksum.json temporalio-1.3.0/vendor/time/.cargo-checksum.json --- temporalio-1.3.0/vendor/time/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/time/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"4d68dbe530567a00d4e64413236af2f3929a16e67723b062d4682d6fe4977b03","LICENSE-Apache":"b8929fea28678da67251fb2daf9438f67503814211051861612441806d8edb05","LICENSE-MIT":"04620bf27e4a643dd47bf27652320c205acdb776c1f9f24bb8c3bfaba10804c5","README.md":"fb2e88afee312b312fec5b146e98b381ac044897d6f286ffa54da1e739ff7217","src/date.rs":"a956ed336789ef65f4b5e7e2869f6b40b62ea120e00160f23c21c13b335cded6","src/date_time.rs":"0972109f16c3dafe92d80894e0ab7e8435aebb605e0ceb0758e374aa747e024e","src/duration.rs":"f3135c3a792192dee6109ea20c81545b11c4b8414248907fe2b91f94728fd2a0","src/error/component_range.rs":"26a1aa4ea2d0f9887efcbe9584d5aa14b1e5d37525a52dc9f18e1e282599625d","src/error/conversion_range.rs":"972abb765370070de01e2fc2e1bb1e80808a069e6213577d7beaca02e1d707c3","src/error/different_variant.rs":"107bef7b3addd7108b36a2da8389f611d4482f34a5b63429841141e05c8cb30c","src/error/format.rs":"d87846c2ac62dec421402ea21e5d2a8d73add6658df4ac914067a4b43cb0ef20","src/error/indeterminate_offset.rs":"1f52f9ea107847fa781399cfcc8046451d70155fb497486c80b2138f82782941","src/error/invalid_format_description.rs":"cf617348b55d9c3273060fa2d99bd4eda215452270025f2b6caef6ef9f387af5","src/error/invalid_variant.rs":"b653a3e6e902f06cb9f2e0366c4da84b92e8bdb03164c2f8cb15fe66415706e4","src/error/mod.rs":"15fb848b1919d9cfb50fb9091abfcea6a8c7db5a2fcd6cb8f32c4af5f1ea4464","src/error/parse.rs":"3bdc8201a14469d2cc7a12a295058569098f9cfc9bd1e8fc9f526ada8298e4f8","src/error/parse_from_description.rs":"990359eb5fcb64c1ee363b044147b7330a92a4cb7373dc2f17f6fd3bcc6411a0","src/error/try_from_parsed.rs":"8c227be52653a1d33af01a8024c0fc56f1f9803f08ef01487a7eaa5833adbb57","src/ext.rs":"f31cdcf38c23a0111524ae431420f299d4d4735d99fc9a873d3472a3699de7ef","src/format_description/borrowed_format_item.rs":"afab66e65a84895751d3557fc5b8a3a5e63f9c483a6a534aa4f86fd2a5145f0b","src/format_description/component.rs":"289469371588f24de6c7afdd40e7ce65f6b08c3e05434900eafdca7dde59ab07","src/format_description/mod.rs":"955a227e9bb13e3085a43457bf8028085db92c0266b6573ddf1e12df3b937c0f","src/format_description/modifier.rs":"5c6330b3557a156d2acfd4eb454783a41a6edf62c5046e2ca60dc060caf31451","src/format_description/owned_format_item.rs":"419f5354bf504562c9225dfe90b61eee9bc959211a86a327197b4f54283da775","src/format_description/parse/ast.rs":"8aae329466b0eefcce73ff2db199f50b60bae3e5e7467aaf6033a588a881bd3c","src/format_description/parse/format_item.rs":"4639e23fb86dbbef6d764e8279cc43dd5f6e09d8b14b277e6f6b9bce81f5c3ff","src/format_description/parse/lexer.rs":"c10105640a618e1e850eb6e4fd888c47d881b3f85bde691fdf204199a693e127","src/format_description/parse/mod.rs":"210cd68a37b5cbbc6a6e3b3d5161f03ad94b2902bb01899d0c02d0278f420c8c","src/format_description/well_known/iso8601.rs":"8313905039a637d4d132f8318a59c06246e7b61550b4e4bc7d129232ac022e43","src/format_description/well_known/iso8601/adt_hack.rs":"59a5182dc200a26654944a64a81488a55c7a387485f219371503a010c751e338","src/format_description/well_known/rfc2822.rs":"36c23394724ae12250d4193cab26887a6ff8f82ca441ea6b0d03c4f1c928b3dd","src/format_description/well_known/rfc3339.rs":"1a6318dffd3ebb6ac7cf96eae3d9b1eb44b1089cf4284fa6a7e935c6fcf1b43c","src/formatting/formattable.rs":"fe75a835d20f144faf8f1297d9b501e72fcce321c7dc1077805e4a2b2f9b9390","src/formatting/iso8601.rs":"3dc83bf234b60e80ab499bf3ec490b2772d69a02b452f93cbc8e843ebf340fc2","src/formatting/mod.rs":"b4f98455609968a28e6479077d01eec60e3331064dbcd453f29c6d5a768d9857","src/instant.rs":"f1724e49b173b16b08818bfd06133ce4f61da7df286ff61982113cc184efe1c0","src/lib.rs":"be86048ca1c4ab497384edd9507b41c5683d946b3149ff978277c1323cbc2889","src/macros.rs":"eb9e02a1f97bb8befab7bc27c937136817e4f65e0b3e040a81394ae938980558","src/month.rs":"a9fdc0bc4c8f668a69edb8e51ea2c0f48ac801ace0a7332abb6983282b2fba43","src/offset_date_time.rs":"288d7a34eecbbd9345e13804302bcb55df716fdef0fafe1d2d06e52c0d77829e","src/parsing/combinator/mod.rs":"b342fbd95dd986309d81e8910363920ba6db00958b459f6d97f57da3ae3e550d","src/parsing/combinator/rfc/iso8601.rs":"13289a0d58de273327830a3001167a8964edc5045486301efdf3ddc2e4079c32","src/parsing/combinator/rfc/mod.rs":"f30b75d248f5ae92c27646d504703f5489185afb76c998cc4375437b3d15c822","src/parsing/combinator/rfc/rfc2234.rs":"08e2813c6d40c0dae881875fe0417ae06886c73679256587e33186e46b3c3bae","src/parsing/combinator/rfc/rfc2822.rs":"2aff3a6a2778bc806031cff92ad2f43f0874620b5d484b5b39ee2d2507212f06","src/parsing/component.rs":"09008cf9d08c4b0c3cb051b986291a29e977a780bb1455f9c33e472db983e8da","src/parsing/iso8601.rs":"9e83677f35b634fac47aee9af6bc6075865ce0d1eab37c9ebae7365a10b3266a","src/parsing/mod.rs":"37082ac824c6c3f4900766a0a3140dc7aa46b3f85cb6098f11da7da333e421b0","src/parsing/parsable.rs":"d1b3c001f57c735af395553d35e76f9342a83da87b5a843d1eb015807a076db9","src/parsing/parsed.rs":"5cafd2220fe325817b8b65729274a0ca7c741f4579d99bc888cb1997436ef127","src/parsing/shim.rs":"46efc374bc3129e28936a850143fff8e42aafe10c69ebbb904195aaeca26adc9","src/primitive_date_time.rs":"ce557a9db6d7ed663ff78d62a60af5ee8a287f04f6fc979e81047c339d50495a","src/quickcheck.rs":"94640161a21319b75c9b31a6bbc6e34a4d573c20606b954db1bd12ddef366af8","src/rand.rs":"889c98938427a4885036673df8fcebd84c7cc20fb4b3ca82c447ff4b977c8a15","src/serde/iso8601.rs":"997bbf4fe4018f8fdc9335ac863b543fb24a58b2dee394615505a24311331516","src/serde/mod.rs":"42e172f3338181ebbf7bb8cf3966cc533c6aa9a55f1aabfa3f61f2d88142b692","src/serde/rfc2822.rs":"fe97aa1311037a362eb477fe8c6729b3b85ff2d0afab7148f10f64d109081f90","src/serde/rfc3339.rs":"9835c8b8fb24b53657769b81a71188fe4261e5869917779e1702b3a0aa854654","src/serde/timestamp.rs":"30971ad5d1fef11e396eee48d476b828ed4e99f6eac587383b864dd95c120fe4","src/serde/visitor.rs":"6a2a10cfe5afa59f7c8f02585c589514a9fbafdac538b2557a0571f00a0858b7","src/sys/local_offset_at/imp.rs":"4b6e57f02566364270ac9b7e1540290a5658a296f7e911f988264d103e420326","src/sys/local_offset_at/mod.rs":"95b042824b414b3021eda2bcf0821afc529bfd8d4cfcad0b893edb197e48461b","src/sys/local_offset_at/unix.rs":"339ab502e121c24c6ea617f444a58fb7e23cf5afd13c5f7a52eda6d69591d580","src/sys/local_offset_at/wasm_js.rs":"e49ef256c874d6b8d15ef264a66c0b837ac42cd0683e38f3f31af2c2e8fca459","src/sys/local_offset_at/windows.rs":"0836e20249421b1f32e77f0ce4be0d3db30be00478f4c56fda9ddbff0bbb0c5d","src/sys/mod.rs":"0a43797e55e986233a71f1cc4b3a21997da42bc15db7d912373296cd535e49bc","src/tests.rs":"38d1f794892e6ab3fece55839a8e4ab6d0d2c325323310eda32144eb7240bf59","src/time.rs":"197c53ef2b49f73c363eabe2332ffd4eaba18f91f2d17070e8d568069a977c64","src/utc_offset.rs":"ce39c34ec5419a1bf51f7b8401e38a4e0daab7e827fe2fd239fae8089a212c7e","src/util.rs":"1fff6c7d712a4d2665cca55db9c142185cc13afa20f925912cb85abbcc366938","src/weekday.rs":"86535abafce247db127547c3f879eb8dcae6a2e8702bb4b5817ac309b1f36e57"},"package":"ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd"} \ No newline at end of file +{"files":{"Cargo.toml":"a011e69d5ae4484afdc3df407f6fcfdc91461b412730302a3d4fb4f4f731fe3f","LICENSE-Apache":"b8929fea28678da67251fb2daf9438f67503814211051861612441806d8edb05","LICENSE-MIT":"04620bf27e4a643dd47bf27652320c205acdb776c1f9f24bb8c3bfaba10804c5","README.md":"91fdb919a41d2c1ee240a66d548adf1e1a40db95bcfe3adaf8c55f37c2afe1e9","src/date.rs":"5c0ae4a98530dd954c19b972df517b80bd6f35c73747e422b55ea0162d4c5fcf","src/date_time.rs":"37c97a93ca15be9b9bbd64b497429c430e91b6bcf51a50f571f79646b4348707","src/duration.rs":"469e62e0b545f45b99c37a7033c269474a932b52a2dc9399d62bf7877be1a8ce","src/error/component_range.rs":"26a1aa4ea2d0f9887efcbe9584d5aa14b1e5d37525a52dc9f18e1e282599625d","src/error/conversion_range.rs":"972abb765370070de01e2fc2e1bb1e80808a069e6213577d7beaca02e1d707c3","src/error/different_variant.rs":"107bef7b3addd7108b36a2da8389f611d4482f34a5b63429841141e05c8cb30c","src/error/format.rs":"d87846c2ac62dec421402ea21e5d2a8d73add6658df4ac914067a4b43cb0ef20","src/error/indeterminate_offset.rs":"1f52f9ea107847fa781399cfcc8046451d70155fb497486c80b2138f82782941","src/error/invalid_format_description.rs":"cf617348b55d9c3273060fa2d99bd4eda215452270025f2b6caef6ef9f387af5","src/error/invalid_variant.rs":"b653a3e6e902f06cb9f2e0366c4da84b92e8bdb03164c2f8cb15fe66415706e4","src/error/mod.rs":"15fb848b1919d9cfb50fb9091abfcea6a8c7db5a2fcd6cb8f32c4af5f1ea4464","src/error/parse.rs":"3bdc8201a14469d2cc7a12a295058569098f9cfc9bd1e8fc9f526ada8298e4f8","src/error/parse_from_description.rs":"990359eb5fcb64c1ee363b044147b7330a92a4cb7373dc2f17f6fd3bcc6411a0","src/error/try_from_parsed.rs":"8c227be52653a1d33af01a8024c0fc56f1f9803f08ef01487a7eaa5833adbb57","src/ext.rs":"f31cdcf38c23a0111524ae431420f299d4d4735d99fc9a873d3472a3699de7ef","src/format_description/borrowed_format_item.rs":"afab66e65a84895751d3557fc5b8a3a5e63f9c483a6a534aa4f86fd2a5145f0b","src/format_description/component.rs":"289469371588f24de6c7afdd40e7ce65f6b08c3e05434900eafdca7dde59ab07","src/format_description/mod.rs":"955a227e9bb13e3085a43457bf8028085db92c0266b6573ddf1e12df3b937c0f","src/format_description/modifier.rs":"5c6330b3557a156d2acfd4eb454783a41a6edf62c5046e2ca60dc060caf31451","src/format_description/owned_format_item.rs":"419f5354bf504562c9225dfe90b61eee9bc959211a86a327197b4f54283da775","src/format_description/parse/ast.rs":"c20fedf0314a2ede5e3ee66024534ca8a65a2b623959386872250e19d5d43b6e","src/format_description/parse/format_item.rs":"4639e23fb86dbbef6d764e8279cc43dd5f6e09d8b14b277e6f6b9bce81f5c3ff","src/format_description/parse/lexer.rs":"c10105640a618e1e850eb6e4fd888c47d881b3f85bde691fdf204199a693e127","src/format_description/parse/mod.rs":"210cd68a37b5cbbc6a6e3b3d5161f03ad94b2902bb01899d0c02d0278f420c8c","src/format_description/well_known/iso8601.rs":"8313905039a637d4d132f8318a59c06246e7b61550b4e4bc7d129232ac022e43","src/format_description/well_known/iso8601/adt_hack.rs":"59a5182dc200a26654944a64a81488a55c7a387485f219371503a010c751e338","src/format_description/well_known/rfc2822.rs":"36c23394724ae12250d4193cab26887a6ff8f82ca441ea6b0d03c4f1c928b3dd","src/format_description/well_known/rfc3339.rs":"1a6318dffd3ebb6ac7cf96eae3d9b1eb44b1089cf4284fa6a7e935c6fcf1b43c","src/formatting/formattable.rs":"fe75a835d20f144faf8f1297d9b501e72fcce321c7dc1077805e4a2b2f9b9390","src/formatting/iso8601.rs":"3dc83bf234b60e80ab499bf3ec490b2772d69a02b452f93cbc8e843ebf340fc2","src/formatting/mod.rs":"b4f98455609968a28e6479077d01eec60e3331064dbcd453f29c6d5a768d9857","src/instant.rs":"f1724e49b173b16b08818bfd06133ce4f61da7df286ff61982113cc184efe1c0","src/lib.rs":"be86048ca1c4ab497384edd9507b41c5683d946b3149ff978277c1323cbc2889","src/macros.rs":"eb9e02a1f97bb8befab7bc27c937136817e4f65e0b3e040a81394ae938980558","src/month.rs":"91b20ea12b1a36a9ddb828279572c6098b8504a048627088137963a612b572b8","src/offset_date_time.rs":"288d7a34eecbbd9345e13804302bcb55df716fdef0fafe1d2d06e52c0d77829e","src/parsing/combinator/mod.rs":"b342fbd95dd986309d81e8910363920ba6db00958b459f6d97f57da3ae3e550d","src/parsing/combinator/rfc/iso8601.rs":"13289a0d58de273327830a3001167a8964edc5045486301efdf3ddc2e4079c32","src/parsing/combinator/rfc/mod.rs":"f30b75d248f5ae92c27646d504703f5489185afb76c998cc4375437b3d15c822","src/parsing/combinator/rfc/rfc2234.rs":"08e2813c6d40c0dae881875fe0417ae06886c73679256587e33186e46b3c3bae","src/parsing/combinator/rfc/rfc2822.rs":"2aff3a6a2778bc806031cff92ad2f43f0874620b5d484b5b39ee2d2507212f06","src/parsing/component.rs":"09008cf9d08c4b0c3cb051b986291a29e977a780bb1455f9c33e472db983e8da","src/parsing/iso8601.rs":"8dd99317a6fcde7d85f8bf5c492675efde751731b687b0cde0d5653cb129743a","src/parsing/mod.rs":"37082ac824c6c3f4900766a0a3140dc7aa46b3f85cb6098f11da7da333e421b0","src/parsing/parsable.rs":"d1b3c001f57c735af395553d35e76f9342a83da87b5a843d1eb015807a076db9","src/parsing/parsed.rs":"5cafd2220fe325817b8b65729274a0ca7c741f4579d99bc888cb1997436ef127","src/parsing/shim.rs":"46efc374bc3129e28936a850143fff8e42aafe10c69ebbb904195aaeca26adc9","src/primitive_date_time.rs":"ce557a9db6d7ed663ff78d62a60af5ee8a287f04f6fc979e81047c339d50495a","src/quickcheck.rs":"94640161a21319b75c9b31a6bbc6e34a4d573c20606b954db1bd12ddef366af8","src/rand.rs":"889c98938427a4885036673df8fcebd84c7cc20fb4b3ca82c447ff4b977c8a15","src/serde/iso8601.rs":"997bbf4fe4018f8fdc9335ac863b543fb24a58b2dee394615505a24311331516","src/serde/mod.rs":"a575be28adaf89ff5b1476b367e2019ea09d68368f227d211bc6f33f192bc1e3","src/serde/rfc2822.rs":"fe97aa1311037a362eb477fe8c6729b3b85ff2d0afab7148f10f64d109081f90","src/serde/rfc3339.rs":"9835c8b8fb24b53657769b81a71188fe4261e5869917779e1702b3a0aa854654","src/serde/timestamp.rs":"30971ad5d1fef11e396eee48d476b828ed4e99f6eac587383b864dd95c120fe4","src/serde/visitor.rs":"c5293181f337ab09ae98ce4ef41eae558ae5e3b86f961e4a0c9c93cb034647ed","src/sys/local_offset_at/imp.rs":"4b6e57f02566364270ac9b7e1540290a5658a296f7e911f988264d103e420326","src/sys/local_offset_at/mod.rs":"95b042824b414b3021eda2bcf0821afc529bfd8d4cfcad0b893edb197e48461b","src/sys/local_offset_at/unix.rs":"339ab502e121c24c6ea617f444a58fb7e23cf5afd13c5f7a52eda6d69591d580","src/sys/local_offset_at/wasm_js.rs":"e49ef256c874d6b8d15ef264a66c0b837ac42cd0683e38f3f31af2c2e8fca459","src/sys/local_offset_at/windows.rs":"0836e20249421b1f32e77f0ce4be0d3db30be00478f4c56fda9ddbff0bbb0c5d","src/sys/mod.rs":"0a43797e55e986233a71f1cc4b3a21997da42bc15db7d912373296cd535e49bc","src/tests.rs":"38d1f794892e6ab3fece55839a8e4ab6d0d2c325323310eda32144eb7240bf59","src/time.rs":"197c53ef2b49f73c363eabe2332ffd4eaba18f91f2d17070e8d568069a977c64","src/utc_offset.rs":"ce39c34ec5419a1bf51f7b8401e38a4e0daab7e827fe2fd239fae8089a212c7e","src/util.rs":"1fff6c7d712a4d2665cca55db9c142185cc13afa20f925912cb85abbcc366938","src/weekday.rs":"0a9f79b6aef6bb085204216d0be1c7666426c589c3263b63384c4b74e8b54658"},"package":"59e399c068f43a5d116fedaf73b203fa4f9c519f17e2b34f63221d3792f81446"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/time/Cargo.toml temporalio-1.3.0/vendor/time/Cargo.toml --- temporalio-1.3.0/vendor/time/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/time/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ edition = "2021" rust-version = "1.65.0" name = "time" -version = "0.3.22" +version = "0.3.23" authors = [ "Jacob Pratt ", "Time contributors", @@ -84,7 +84,7 @@ version = "=0.1.1" [dependencies.time-macros] -version = "=0.2.9" +version = "=0.2.10" optional = true [dev-dependencies.quickcheck_macros] @@ -106,7 +106,7 @@ version = "1.0.126" [dev-dependencies.time-macros] -version = "=0.2.9" +version = "=0.2.10" [features] alloc = ["serde?/alloc"] diff -Nru temporalio-1.3.0/vendor/time/README.md temporalio-1.3.0/vendor/time/README.md --- temporalio-1.3.0/vendor/time/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/time/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -13,9 +13,18 @@ ## Minimum Rust version policy -The time crate is guaranteed to compile with any release of rustc from the past six months. -Optional feature flags that enable interoperability with third-party crates (e.g. rand) -follow the policy of that crate if stricter. +`time` is guaranteed to compile with the latest stable release of Rust in addition to the two prior +minor releases. For example, if the latest stable Rust release is 1.70, then `time` is guaranteed to +compile with Rust 1.68, 1.69, and 1.70. + +The minimum supported Rust version may be increased to one of the aforementioned versions if doing +so provides the end user a benefit. However, the minimum supported Rust version may also be bumped +to a version four minor releases prior to the most recent stable release if doing so improves code +quality or maintainability. + +For interoperability with third-party crates, it is guaranteed that there exists a version of that +crate that supports the minimum supported Rust version of `time`. This does not mean that the latest +version of the third-party crate supports the minimum supported Rust version of `time`. ## Contributing diff -Nru temporalio-1.3.0/vendor/time/src/date.rs temporalio-1.3.0/vendor/time/src/date.rs --- temporalio-1.3.0/vendor/time/src/date.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/time/src/date.rs 2023-10-30 19:40:00.000000000 +0000 @@ -529,6 +529,106 @@ } } + /// Calculates the first occurrence of a weekday that is strictly later than a given `Date`. + /// + /// # Panics + /// Panics if an overflow occurred. + /// + /// # Examples + /// ``` + /// # use time::Weekday; + /// # use time_macros::date; + /// assert_eq!( + /// date!(2023 - 06 - 28).next_occurrence(Weekday::Monday), + /// date!(2023 - 07 - 03) + /// ); + /// assert_eq!( + /// date!(2023 - 06 - 19).next_occurrence(Weekday::Monday), + /// date!(2023 - 06 - 26) + /// ); + /// ``` + pub const fn next_occurrence(self, weekday: Weekday) -> Self { + expect_opt!( + self.checked_next_occurrence(weekday), + "overflow calculating the next occurrence of a weekday" + ) + } + + /// Calculates the first occurrence of a weekday that is strictly earlier than a given `Date`. + /// + /// # Panics + /// Panics if an overflow occurred. + /// + /// # Examples + /// ``` + /// # use time::Weekday; + /// # use time_macros::date; + /// assert_eq!( + /// date!(2023 - 06 - 28).prev_occurrence(Weekday::Monday), + /// date!(2023 - 06 - 26) + /// ); + /// assert_eq!( + /// date!(2023 - 06 - 19).prev_occurrence(Weekday::Monday), + /// date!(2023 - 06 - 12) + /// ); + /// ``` + pub const fn prev_occurrence(self, weekday: Weekday) -> Self { + expect_opt!( + self.checked_prev_occurrence(weekday), + "overflow calculating the previous occurrence of a weekday" + ) + } + + /// Calculates the `n`th occurrence of a weekday that is strictly later than a given `Date`. + /// + /// # Panics + /// Panics if an overflow occurred or if `n == 0`. + /// + /// # Examples + /// ``` + /// # use time::Weekday; + /// # use time_macros::date; + /// assert_eq!( + /// date!(2023 - 06 - 25).nth_next_occurrence(Weekday::Monday, 5), + /// date!(2023 - 07 - 24) + /// ); + /// assert_eq!( + /// date!(2023 - 06 - 26).nth_next_occurrence(Weekday::Monday, 5), + /// date!(2023 - 07 - 31) + /// ); + /// ``` + pub const fn nth_next_occurrence(self, weekday: Weekday, n: u8) -> Self { + expect_opt!( + self.checked_nth_next_occurrence(weekday, n), + "overflow calculating the next occurrence of a weekday" + ) + } + + /// Calculates the `n`th occurrence of a weekday that is strictly earlier than a given `Date`. + /// + /// # Panics + /// Panics if an overflow occurred or if `n == 0`. + /// + /// # Examples + /// ``` + /// # use time::Weekday; + /// # use time_macros::date; + /// assert_eq!( + /// date!(2023 - 06 - 27).nth_prev_occurrence(Weekday::Monday, 3), + /// date!(2023 - 06 - 12) + /// ); + /// assert_eq!( + /// date!(2023 - 06 - 26).nth_prev_occurrence(Weekday::Monday, 3), + /// date!(2023 - 06 - 05) + /// ); + /// ``` + pub const fn nth_prev_occurrence(self, weekday: Weekday, n: u8) -> Self { + expect_opt!( + self.checked_nth_prev_occurrence(weekday, n), + "overflow calculating the previous occurrence of a weekday" + ) + } + /// Get the Julian day for the date. /// /// The algorithm to perform this conversion is derived from one provided by Peter Baum; it is @@ -640,6 +740,74 @@ } else { None } + } + + /// Calculates the first occurrence of a weekday that is strictly later than a given `Date`. + /// Returns `None` if an overflow occurred. + pub(crate) const fn checked_next_occurrence(self, weekday: Weekday) -> Option { + let day_diff = match weekday as i8 - self.weekday() as i8 { + 1 | -6 => 1, + 2 | -5 => 2, + 3 | -4 => 3, + 4 | -3 => 4, + 5 | -2 => 5, + 6 | -1 => 6, + val => { + debug_assert!(val == 0); + 7 + } + }; + + self.checked_add(Duration::days(day_diff)) + } + + /// Calculates the first occurrence of a weekday that is strictly earlier than a given `Date`. + /// Returns `None` if an overflow occurred. + pub(crate) const fn checked_prev_occurrence(self, weekday: Weekday) -> Option { + let day_diff = match weekday as i8 - self.weekday() as i8 { + 1 | -6 => 6, + 2 | -5 => 5, + 3 | -4 => 4, + 4 | -3 => 3, + 5 | -2 => 2, + 6 | -1 => 1, + val => { + debug_assert!(val == 0); + 7 + } + }; + + self.checked_sub(Duration::days(day_diff)) + } + + /// Calculates the `n`th occurrence of a weekday that is strictly later than a given `Date`. + /// Returns `None` if an overflow occurred or if `n == 0`. + pub(crate) const fn checked_nth_next_occurrence(self, weekday: Weekday, n: u8) -> Option { + if n == 0 { + return None; + } + + let next_occ = self.checked_next_occurrence(weekday); + if let Some(val) = next_occ { + val.checked_add(Duration::weeks(n as i64 - 1)) + } else { + None + } + } + + /// Calculates the `n`th occurrence of a weekday that is strictly earlier than a given `Date`. + /// Returns `None` if an overflow occurred or if `n == 0`. + pub(crate) const fn checked_nth_prev_occurrence(self, weekday: Weekday, n: u8) -> Option { + if n == 0 { + return None; + } + + let next_occ = self.checked_prev_occurrence(weekday); + if let Some(val) = next_occ { + val.checked_sub(Duration::weeks(n as i64 - 1)) + } else { + None + } } // endregion: checked arithmetic diff -Nru temporalio-1.3.0/vendor/time/src/date_time.rs temporalio-1.3.0/vendor/time/src/date_time.rs --- temporalio-1.3.0/vendor/time/src/date_time.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/time/src/date_time.rs 2023-10-30 19:40:00.000000000 +0000 @@ -822,7 +822,9 @@ } let (year, ordinal, time) = self.to_offset_raw(UtcOffset::UTC); - let Ok(date) = Date::from_ordinal_date(year, ordinal) else { return false }; + let Ok(date) = Date::from_ordinal_date(year, ordinal) else { + return false; + }; time.hour() == 23 && time.minute() == 59 diff -Nru temporalio-1.3.0/vendor/time/src/duration.rs temporalio-1.3.0/vendor/time/src/duration.rs --- temporalio-1.3.0/vendor/time/src/duration.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/time/src/duration.rs 2023-10-30 19:40:00.000000000 +0000 @@ -299,7 +299,10 @@ /// assert_eq!((-1).seconds().abs(), 1.seconds()); /// ``` pub const fn abs(self) -> Self { - Self::new_unchecked(self.seconds.saturating_abs(), self.nanoseconds.abs()) + match self.seconds.checked_abs() { + Some(seconds) => Self::new_unchecked(seconds, self.nanoseconds.abs()), + None => Self::MAX, + } } /// Convert the existing `Duration` to a `std::time::Duration` and its sign. This returns a diff -Nru temporalio-1.3.0/vendor/time/src/format_description/parse/ast.rs temporalio-1.3.0/vendor/time/src/format_description/parse/ast.rs --- temporalio-1.3.0/vendor/time/src/format_description/parse/ast.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/time/src/format_description/parse/ast.rs 2023-10-30 19:40:00.000000000 +0000 @@ -266,7 +266,9 @@ let mut modifiers = Vec::new(); let trailing_whitespace = loop { - let Some(whitespace) = tokens.next_if_whitespace() else { break None }; + let Some(whitespace) = tokens.next_if_whitespace() else { + break None; + }; // This is not necessary for proper parsing, but provides a much better error when a nested // description is used where it's not allowed. diff -Nru temporalio-1.3.0/vendor/time/src/month.rs temporalio-1.3.0/vendor/time/src/month.rs --- temporalio-1.3.0/vendor/time/src/month.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/time/src/month.rs 2023-10-30 19:40:00.000000000 +0000 @@ -97,6 +97,60 @@ December => January, } } + + /// Get n-th next month. + /// + /// ```rust + /// # use time::Month; + /// assert_eq!(Month::January.nth_next(4), Month::May); + /// assert_eq!(Month::July.nth_next(9), Month::April); + /// ``` + pub const fn nth_next(self, n: u8) -> Self { + match (self as u8 - 1 + n % 12) % 12 { + 0 => January, + 1 => February, + 2 => March, + 3 => April, + 4 => May, + 5 => June, + 6 => July, + 7 => August, + 8 => September, + 9 => October, + 10 => November, + val => { + debug_assert!(val == 11); + December + } + } + } + + /// Get n-th previous month. + /// + /// ```rust + /// # use time::Month; + /// assert_eq!(Month::January.nth_prev(4), Month::September); + /// assert_eq!(Month::July.nth_prev(9), Month::October); + /// ``` + pub const fn nth_prev(self, n: u8) -> Self { + match self as i8 - 1 - (n % 12) as i8 { + 1 | -11 => February, + 2 | -10 => March, + 3 | -9 => April, + 4 | -8 => May, + 5 | -7 => June, + 6 | -6 => July, + 7 | -5 => August, + 8 | -4 => September, + 9 | -3 => October, + 10 | -2 => November, + 11 | -1 => December, + val => { + debug_assert!(val == 0); + January + } + } + } } impl fmt::Display for Month { diff -Nru temporalio-1.3.0/vendor/time/src/parsing/iso8601.rs temporalio-1.3.0/vendor/time/src/parsing/iso8601.rs --- temporalio-1.3.0/vendor/time/src/parsing/iso8601.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/time/src/parsing/iso8601.rs 2023-10-30 19:40:00.000000000 +0000 @@ -271,17 +271,23 @@ }; } - let input = min(input) - .and_then(|parsed_item| { - parsed_item.consume_value(|min| { - parsed.set_offset_minute_signed(if sign == b'-' { + match min(input) { + Some(ParsedItem(new_input, min)) => { + input = new_input; + parsed + .set_offset_minute_signed(if sign == b'-' { -(min as i8) } else { min as _ }) - }) - }) - .ok_or(InvalidComponent("offset minute"))?; + .ok_or(InvalidComponent("offset minute"))?; + } + None => { + // Omitted offset minute is assumed to be zero. + parsed.set_offset_minute_signed(0); + } + } + // If `:` was present, the format has already been set to extended. As such, this call // will do nothing in that case. If there wasn't `:` but minutes were // present, we know it's the basic format. Do not use `?` on the call, as diff -Nru temporalio-1.3.0/vendor/time/src/serde/mod.rs temporalio-1.3.0/vendor/time/src/serde/mod.rs --- temporalio-1.3.0/vendor/time/src/serde/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/time/src/serde/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -404,10 +404,14 @@ #[cfg(feature = "parsing")] const UTC_OFFSET_FORMAT: &[FormatItem<'_>] = &[ FormatItem::Component(Component::OffsetHour(modifier::OffsetHour::default())), - FormatItem::Literal(b":"), - FormatItem::Component(Component::OffsetMinute(modifier::OffsetMinute::default())), - FormatItem::Literal(b":"), - FormatItem::Component(Component::OffsetSecond(modifier::OffsetSecond::default())), + FormatItem::Optional(&FormatItem::Compound(&[ + FormatItem::Literal(b":"), + FormatItem::Component(Component::OffsetMinute(modifier::OffsetMinute::default())), + FormatItem::Optional(&FormatItem::Compound(&[ + FormatItem::Literal(b":"), + FormatItem::Component(Component::OffsetSecond(modifier::OffsetSecond::default())), + ])), + ])), ]; impl Serialize for UtcOffset { diff -Nru temporalio-1.3.0/vendor/time/src/serde/visitor.rs temporalio-1.3.0/vendor/time/src/serde/visitor.rs --- temporalio-1.3.0/vendor/time/src/serde/visitor.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/time/src/serde/visitor.rs 2023-10-30 19:40:00.000000000 +0000 @@ -167,8 +167,15 @@ fn visit_seq>(self, mut seq: A) -> Result { let hours = item!(seq, "offset hours")?; - let minutes = item!(seq, "offset minutes")?; - let seconds = item!(seq, "offset seconds")?; + let mut minutes = 0; + let mut seconds = 0; + + if let Ok(Some(min)) = seq.next_element() { + minutes = min; + if let Ok(Some(sec)) = seq.next_element() { + seconds = sec; + } + }; UtcOffset::from_hms(hours, minutes, seconds).map_err(ComponentRange::into_de_error) } diff -Nru temporalio-1.3.0/vendor/time/src/weekday.rs temporalio-1.3.0/vendor/time/src/weekday.rs --- temporalio-1.3.0/vendor/time/src/weekday.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/time/src/weekday.rs 2023-10-30 19:40:00.000000000 +0000 @@ -88,6 +88,28 @@ } } + /// Get n-th previous day. + /// + /// ```rust + /// # use time::Weekday; + /// assert_eq!(Weekday::Monday.nth_prev(1), Weekday::Sunday); + /// assert_eq!(Weekday::Sunday.nth_prev(10), Weekday::Thursday); + /// ``` + pub const fn nth_prev(self, n: u8) -> Self { + match self.number_days_from_monday() as i8 - (n % 7) as i8 { + 1 | -6 => Tuesday, + 2 | -5 => Wednesday, + 3 | -4 => Thursday, + 4 | -3 => Friday, + 5 | -2 => Saturday, + 6 | -1 => Sunday, + val => { + debug_assert!(val == 0); + Monday + } + } + } + /// Get the one-indexed number of days from Monday. /// /// ```rust diff -Nru temporalio-1.3.0/vendor/tokio/build.rs temporalio-1.3.0/vendor/tokio/build.rs --- temporalio-1.3.0/vendor/tokio/build.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/build.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,192 +0,0 @@ -use autocfg::AutoCfg; - -const CONST_THREAD_LOCAL_PROBE: &str = r#" -{ - thread_local! { - static MY_PROBE: usize = const { 10 }; - } - - MY_PROBE.with(|val| *val) -} -"#; - -const CONST_MUTEX_NEW_PROBE: &str = r#" -{ - static MY_MUTEX: ::std::sync::Mutex = ::std::sync::Mutex::new(1); - *MY_MUTEX.lock().unwrap() -} -"#; - -const AS_FD_PROBE: &str = r#" -{ - #[allow(unused_imports)] - #[cfg(unix)] - use std::os::unix::prelude::AsFd as _; - #[allow(unused_imports)] - #[cfg(windows)] - use std::os::windows::prelude::AsSocket as _; - #[allow(unused_imports)] - #[cfg(target_os = "wasi")] - use std::os::wasi::prelude::AsFd as _; -} -"#; - -const TARGET_HAS_ATOMIC_PROBE: &str = r#" -{ - #[cfg(target_has_atomic = "ptr")] - let _ = (); -} -"#; - -const TARGET_ATOMIC_U64_PROBE: &str = r#" -{ - #[allow(unused_imports)] - use std::sync::atomic::AtomicU64 as _; -} -"#; - -fn main() { - let mut enable_const_thread_local = false; - let mut enable_target_has_atomic = false; - let mut enable_const_mutex_new = false; - let mut enable_as_fd = false; - let mut target_needs_atomic_u64_fallback = false; - - match AutoCfg::new() { - Ok(ac) => { - // These checks prefer to call only `probe_rustc_version` if that is - // enough to determine whether the feature is supported. This is - // because the `probe_expression` call involves a call to rustc, - // which the `probe_rustc_version` call avoids. - - // Const-initialized thread locals were stabilized in 1.59. - if ac.probe_rustc_version(1, 60) { - enable_const_thread_local = true; - } else if ac.probe_rustc_version(1, 59) { - // This compiler claims to be 1.59, but there are some nightly - // compilers that claim to be 1.59 without supporting the - // feature. Explicitly probe to check if code using them - // compiles. - // - // The oldest nightly that supports the feature is 2021-12-06. - if ac.probe_expression(CONST_THREAD_LOCAL_PROBE) { - enable_const_thread_local = true; - } - } - - // The `target_has_atomic` cfg was stabilized in 1.60. - if ac.probe_rustc_version(1, 61) { - enable_target_has_atomic = true; - } else if ac.probe_rustc_version(1, 60) { - // This compiler claims to be 1.60, but there are some nightly - // compilers that claim to be 1.60 without supporting the - // feature. Explicitly probe to check if code using them - // compiles. - // - // The oldest nightly that supports the feature is 2022-02-11. - if ac.probe_expression(TARGET_HAS_ATOMIC_PROBE) { - enable_target_has_atomic = true; - } - } - - // If we can't tell using `target_has_atomic`, tell if the target - // has `AtomicU64` by trying to use it. - if !enable_target_has_atomic && !ac.probe_expression(TARGET_ATOMIC_U64_PROBE) { - target_needs_atomic_u64_fallback = true; - } - - // The `Mutex::new` method was made const in 1.63. - if ac.probe_rustc_version(1, 64) { - enable_const_mutex_new = true; - } else if ac.probe_rustc_version(1, 63) { - // This compiler claims to be 1.63, but there are some nightly - // compilers that claim to be 1.63 without supporting the - // feature. Explicitly probe to check if code using them - // compiles. - // - // The oldest nightly that supports the feature is 2022-06-20. - if ac.probe_expression(CONST_MUTEX_NEW_PROBE) { - enable_const_mutex_new = true; - } - } - - // The `AsFd` family of traits were made stable in 1.63. - if ac.probe_rustc_version(1, 64) { - enable_as_fd = true; - } else if ac.probe_rustc_version(1, 63) { - // This compiler claims to be 1.63, but there are some nightly - // compilers that claim to be 1.63 without supporting the - // feature. Explicitly probe to check if code using them - // compiles. - // - // The oldest nightly that supports the feature is 2022-06-16. - if ac.probe_expression(AS_FD_PROBE) { - enable_as_fd = true; - } - } - } - - Err(e) => { - // If we couldn't detect the compiler version and features, just - // print a warning. This isn't a fatal error: we can still build - // Tokio, we just can't enable cfgs automatically. - println!( - "cargo:warning=tokio: failed to detect compiler features: {}", - e - ); - } - } - - if !enable_const_thread_local { - // To disable this feature on compilers that support it, you can - // explicitly pass this flag with the following environment variable: - // - // RUSTFLAGS="--cfg tokio_no_const_thread_local" - autocfg::emit("tokio_no_const_thread_local") - } - - if !enable_target_has_atomic { - // To disable this feature on compilers that support it, you can - // explicitly pass this flag with the following environment variable: - // - // RUSTFLAGS="--cfg tokio_no_target_has_atomic" - autocfg::emit("tokio_no_target_has_atomic") - } - - if !enable_const_mutex_new { - // To disable this feature on compilers that support it, you can - // explicitly pass this flag with the following environment variable: - // - // RUSTFLAGS="--cfg tokio_no_const_mutex_new" - autocfg::emit("tokio_no_const_mutex_new") - } - - if !enable_as_fd { - // To disable this feature on compilers that support it, you can - // explicitly pass this flag with the following environment variable: - // - // RUSTFLAGS="--cfg tokio_no_as_fd" - autocfg::emit("tokio_no_as_fd"); - } - - if target_needs_atomic_u64_fallback { - // To disable this feature on compilers that support it, you can - // explicitly pass this flag with the following environment variable: - // - // RUSTFLAGS="--cfg tokio_no_atomic_u64" - autocfg::emit("tokio_no_atomic_u64") - } - - let target = ::std::env::var("TARGET").unwrap_or_default(); - - // We emit cfgs instead of using `target_family = "wasm"` that requires Rust 1.54. - // Note that these cfgs are unavailable in `Cargo.toml`. - if target.starts_with("wasm") { - autocfg::emit("tokio_wasm"); - if target.contains("wasi") { - autocfg::emit("tokio_wasi"); - } else { - autocfg::emit("tokio_wasm_not_wasi"); - } - } -} diff -Nru temporalio-1.3.0/vendor/tokio/.cargo-checksum.json temporalio-1.3.0/vendor/tokio/.cargo-checksum.json --- temporalio-1.3.0/vendor/tokio/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"bc77dcdf89fcc44f69865ff2f76d259059c53a86748a3718f1d79448f58dad10","Cargo.toml":"4b9acdc35c6a29194af890d53794224c79b6cf4389749c8356d6958f45873686","LICENSE":"1a594f153f129c2de7b15f3262394bdca3dcc2da40058e3ea435c8473eb1f3a0","README.md":"c797f1898c291ce3af69f04ce51832b341341d6b46aabf77a9d4c26db4fe5f69","build.rs":"48941a3d0e097f960e6616bd5dd22d9959f03e415e48a6dbc9c271804411d58d","docs/reactor-refactor.md":"24d4f3ec6d8828bb96afe0084df9e7739bbdf1995283dbd2cd76740311485b75","external-types.toml":"d808de4bbff94d5ea56f1b1783497b0c6cd107534853aca8c79ee8404d8c2399","src/blocking.rs":"8e62b2cdc512fedbca4b4c4f983629af035afea4ee7e918bb1a3e9851c8e034e","src/doc/mod.rs":"f54f0d17974e68bd93035137a36b216dad05402cd4f3f64ea7e0008e7c309858","src/doc/os.rs":"727a5e3dfd3b57609f6054c32965d6825949d5e7a5c751f14b50dac3b7ca065b","src/fs/canonicalize.rs":"93c64b72abdca17877d6ab61d50a43765d6aef9e0a9f7aaf41b6b0b7d9a8a380","src/fs/copy.rs":"262180fadc66e5ac2bf1e8389628fdd039f14788e66a4f8b10e10633e7310f20","src/fs/create_dir.rs":"233cbab2579a787614aeee88845a57f1578e9c2e064a3456c799f61430e911ad","src/fs/create_dir_all.rs":"56081d541caadca0fc59e84d55e78e702fe9373679598016224ad0b072b189a7","src/fs/dir_builder.rs":"b5b21229c7bf15e2074afab1accfbc392f3c69e546c7b652cfdc8e90d5a4a301","src/fs/file.rs":"a18108174484261dfff5816f9be63517377e5c83c9d996887df04c01ac05f652","src/fs/file/tests.rs":"014b0bd871a58d42d8b97cf2d860f83693294f935c808f1406f4b26e5d09afa2","src/fs/hard_link.rs":"98cccbbb3719baee11c232e79723ab1cb3d6c8056bddb109c4990fe2c236c1fb","src/fs/metadata.rs":"782a1a5dbc2cd6c40e928579fbfcf39e5f1de28def78781590c0280acdf02960","src/fs/mocks.rs":"d3718127d1d0362253bc7c7ca4d6abd21548fe69296291d1ae12a97ccf7fc196","src/fs/mod.rs":"8743addab538366cbe90b43cb233c54e1be524c173b9e659fda4fe9fd78060b2","src/fs/open_options.rs":"cd8acd3deaa339f38cbe14b1537ca4b07b9830105d3b385d965585330c824304","src/fs/open_options/mock_open_options.rs":"60ebc4bea76d742ead8fc5b5f4079450eb2450ecfed5f83d7d89cfe148f4ca54","src/fs/read.rs":"055ae8b6ae96ebae2d05f8780e7592bb587a742506c6df8ee8b380fc7d2820ef","src/fs/read_dir.rs":"3d67be6f69299cffe1b6403a0cb182f76bc576ebd6ae8722a2e0ef47a8f912ad","src/fs/read_link.rs":"93c104a21253372fef7056ab82e6065b0a1a8fc9be8b7329dfd5a8dd07c618b0","src/fs/read_to_string.rs":"9e5b2d476a6084e32a92c5421a8abc9d4f335f4ec677beec4bf8bfa109d7d106","src/fs/remove_dir.rs":"96475771e9c52678768288d8df6814216e0801bebc848481597ad34e829a5854","src/fs/remove_dir_all.rs":"b85abd05c7ab64ee8dc6cf5663a11e713aa51b357759ef660ef3cae3365ccc42","src/fs/remove_file.rs":"1cdf8bf16b3a164c594dac8773b7d1f9ebb28de169343184d34d6aac3b3a7eaa","src/fs/rename.rs":"a97875e92626fa46e23fece7b8698c9c4cea2bae8f1be8726f30ae6fe80ae0c7","src/fs/set_permissions.rs":"8adccafa475dcfc1bc3989af73374d90683c1be4953ef812e5fd606f968d7b7a","src/fs/symlink.rs":"32cf3e906531d30ebe6d8be7ee3bfe049949759b566015b56d0851f51abcff50","src/fs/symlink_dir.rs":"66a6655f5306854a7b6ed3748598bbe737055da9635bded715a04c3abfacda7c","src/fs/symlink_file.rs":"ec5816344f8c0b79c4d84e0ef2a987d753c719afd3bbc0d0a739224477a9edd2","src/fs/symlink_metadata.rs":"f5ce1e05f137da995e3e0d9582bae0a5f7ef4251285c64e912b0eedbb068b395","src/fs/try_exists.rs":"c666196690c4d45991374b03b27f0838b33e98d0be2838638d4de4ff856894b7","src/fs/write.rs":"1ffb734d31748bd879ad398b0fe99bdec569782b42677022957db2cae95c4d2d","src/future/block_on.rs":"30bad79b005a1ba7f696bec5639a5886b1f653a152b8948ae5fcd287c05ab8db","src/future/maybe_done.rs":"9042619f2a907e81763ac6082c080faa28af5d571dd49e82b60f3f14d58598f3","src/future/mod.rs":"6f28857347c50cd6467f1ca7d1b1028b633de7d142c3f3ca710a8693d1e839f9","src/future/poll_fn.rs":"b3c0eaeb442991d3fe27f53f2c2849f5f40b0f974035036c26661bcdaffa09df","src/future/trace.rs":"c42712a8d372922eba7e05cd21382fe5df5eec02cbcc870062100b59ab99654f","src/future/try_join.rs":"0ea5a069b17a34bbc091acbd74b9d51794a55a85dfa63fe2404d5ee91a4f0038","src/fuzz.rs":"db998767c729f35320b1d489f43f4d7788e989c8d16c0793188a2868207d8e25","src/io/async_buf_read.rs":"b37caa8f6c974b3c97327c635218803e573c531d4197950840549aa794357c99","src/io/async_fd.rs":"3d08b8c1d6e2435331245f7ace0b79f0cd47c72ad9da1959f17af3c8297415a4","src/io/async_read.rs":"f52c8d2f4a283c0dc8d06dc974484749973125b0b691bc0c3d100972ac67cb92","src/io/async_seek.rs":"a9a0df389ff2be3d79208ec475fcfede46a86f6ea0b822b1a4ce8273ec714b0b","src/io/async_write.rs":"198ed6a475b6f093fd2ff15e618d816d7e33cb8bc28d2e2299533e5df0bd78d6","src/io/blocking.rs":"b94dcac1e0ca315b356e7a71e5d71696e79363b92480603e699051e390b62873","src/io/bsd/poll_aio.rs":"45e818a201c8dce93f612c7856ba4259724d2c9fcf341001eb9833f821f16f3f","src/io/interest.rs":"2bfb67ee66f3a802922b6ad34a60d635f2409df2d8d23e7c06af06dfa5866f3c","src/io/mod.rs":"b0ba3446cce66a7c51654e22e7386ce6242e4109f994c9af4cdae7890ff30b8e","src/io/poll_evented.rs":"67655d44018479bcc17626f01331739c1d2edabbd097da30c992cde6b54a9061","src/io/read_buf.rs":"14f82f701d5056d1d5581c70aec98f7c6d287899df45e4b2e82388e7c97cca57","src/io/ready.rs":"465fe520f7c876f675ed078e22aca482f4dd6dcfc50ebf40567ae29ec9fb0047","src/io/seek.rs":"e9e346fc926c3360601b80a8319a25fd0567dd6f77fab666694e9787deaef633","src/io/split.rs":"a8cde1b7b2dacccf31647183db475d34e15b000978f7d0207f34ced2506167c8","src/io/stderr.rs":"76cfb4eea6ba478ab158fa269c11ec56ac5ba91d2813417cf0b7a838a45599af","src/io/stdin.rs":"54b989a7a057fb784950fff882b331f7860326cf5adb1b66748df98bc93ab08e","src/io/stdio_common.rs":"f8c72bddf74e48af264676b36470636c16e227b46740c46d44f6b21b2a44bef8","src/io/stdout.rs":"ba7468285659fce3105fd3e02fc8f2ec63a83e01e3081520b6912534614756e9","src/io/util/async_buf_read_ext.rs":"010e722194c93d56dccc8794db9f73954ff58e87364599474c4d97398f4bdc99","src/io/util/async_read_ext.rs":"f70825f0be7ebecce5473c53c716cc57f1123e5818f7b917444c3892639a5e2c","src/io/util/async_seek_ext.rs":"0535ec6139be7ea68becafc0d374aaf9d996ce9cbe5dca0b8e70b133a661c1ea","src/io/util/async_write_ext.rs":"b8ef64cd0b8b57036297cc90f66aeab6d97ba20f33dda0cab9dd364b4509c123","src/io/util/buf_reader.rs":"670a58f404e5689daf1f2b3070b0b9e95fef96ad19f0e8487f294e8a2afe558d","src/io/util/buf_stream.rs":"2246fe71b707c15d7168c5da5ee158cec6e854d4fd11b685531c16a9c3cf2c6a","src/io/util/buf_writer.rs":"f9c3e018c9f9177fb6d910096503caee727bebd3c36f5f67dca2c4c55044408a","src/io/util/chain.rs":"5cd8df2cc7bbcd18ca2336a78507fa8009c0a9e595f81730a8c16cadb8f731a2","src/io/util/copy.rs":"f4c7d59736f9a6d8a1efdabf9685dce2ccc3053c5f9578d3b3aab4be58dd5c8b","src/io/util/copy_bidirectional.rs":"89a5fb3f77e9863c9496c02afc2613fce039f47a1b2322e6221dccda8323f80f","src/io/util/copy_buf.rs":"9d83771a6edcc6d0d32f066072e375634e21a13517968ec9b21a4edddbcc2605","src/io/util/empty.rs":"32cbcfa8bc033e7ae1cd62505a84125750d1abccd0c37b2a433c5eb80db0f0f6","src/io/util/fill_buf.rs":"223725d828071e923f25d2d49a0f6e470c411a6d9ba225700f2dd8d5793601bb","src/io/util/flush.rs":"fe3b4ff226e294843b8cbea9dc4e02d581582b78ddaafce137c96e290699c718","src/io/util/lines.rs":"1d9f9b99567111c911e72a4caa2abb19b277f2cdd0ca3268ac5ca6df5276259f","src/io/util/mem.rs":"5089e03d72b2873ab3f56cd86944e6bd29439c427219cb090610b5b4bf032fca","src/io/util/mod.rs":"6a9012d78fe2bed8240e7a628e9421cbef45433551522624065fdcbb329f3594","src/io/util/read.rs":"58988c3fbcf5ede633dc224d7df5a372495c4485757dec9bdbd825138bb7f5d4","src/io/util/read_buf.rs":"a87be2d115c09a6782ec8cadeafc92fb1fbe534580e71540087c3298a03bfca2","src/io/util/read_exact.rs":"4a8650fd7a885963a0fef2bec24c17046c5624e4dd7fe229ab3f33c4a92fc66c","src/io/util/read_int.rs":"49da230796335df584832cd7deb8370b4d1e0350d743046389a9d9ae17dbd94f","src/io/util/read_line.rs":"9cdb2d778b81bc50098a6851981ed9f541bd0c7896c0763b811971b5a598b7e8","src/io/util/read_to_end.rs":"1c061665818a4ca9632403aa95955bc435f4438c6d6317370ca728fb47acdbc5","src/io/util/read_to_string.rs":"fafb5463b013cc8f76def3a505dbebd179afc95bde0e2ca9388e428265788924","src/io/util/read_until.rs":"d9a932dfb5ef3d0d5e8faa72a2b3b9d1765c85599f3bc77741f69e7fe9c0d037","src/io/util/repeat.rs":"d4effcd81338831eb373cf2db972a99218b8379b91066940a732edcf4524c7c2","src/io/util/shutdown.rs":"971454342b4636fbd68e123d59d87017d81f72afb410c385846069b11def8efe","src/io/util/sink.rs":"0dcb794e48ca9b1c28e5f9f2051073ea0951a54c9c7dfc903ce9e5489d3d8cd7","src/io/util/split.rs":"03a59adccda29608886e38a1f484fbd4d6a6019180c4cfa851372d250796aa5a","src/io/util/take.rs":"ef080ce27d23cc23b9f99fe14ddd56349a3cb1442aba18f8405c30d20017b074","src/io/util/vec_with_initialized.rs":"f8673705967021b5a3cb819d672df89ec81eb5baabb48de7bb598d53352b62f8","src/io/util/write.rs":"20d14ee545ab1f67732915522e97808d1ddde13d151505c1289b596be519f7c8","src/io/util/write_all.rs":"906ff3fb24c6a979b104598f9a8229421bcaf2a4218c28069504b34a218241f6","src/io/util/write_all_buf.rs":"5911bf673ef89097938f4e2e38d9012865b28a0ce5ebb217ebe0e2507de6c1e3","src/io/util/write_buf.rs":"ab51d6174de24cbb729ce77dbaeea27e16059b8253e4830d8243ec5f08a08a8c","src/io/util/write_int.rs":"f321e69b0c7c01728b079e9fdeedb96c26475667e8b259d0c5f4a83d060990d1","src/io/util/write_vectored.rs":"7a335a9f796daa048fa9708dc44d32d2567b36461a6d88f07893eb31f304b69d","src/lib.rs":"65ca594d01af3324cfbd84dbc7e8714ee5d47d9ac1da2f41cc5159feea92b2c6","src/loom/mocked.rs":"f0322f61b997ed86bd5f729a55cd862d56ec7602af711772094fb4005c7268f8","src/loom/mod.rs":"b14b9333a7a21bd125a4ae82f01e5ea9c9ed2f78d7d1ad49a13d9b176f1fe8ab","src/loom/std/atomic_u16.rs":"5aba33a798e8a95129e3fd039e4412322e25880003ba782031df9faac3dc93e1","src/loom/std/atomic_u32.rs":"7fbaa448621371cbb9b8dd882701236b41bed599d69eeeb0a1e25b2a9a4645ad","src/loom/std/atomic_u64.rs":"2d98d1608058f3248d79b1e9c96118627fef6362ccfefa77047be2e5617d7571","src/loom/std/atomic_u64_as_mutex.rs":"1a6b9f8417e968a78dcddd8c7c320c447b9f27d5f84245cae86c3ef68425c749","src/loom/std/atomic_u64_native.rs":"559e6fd21e678b904f5a905f2756a4a8e32ca68a8c7a9b4344af86979373cfa0","src/loom/std/atomic_u64_static_const_new.rs":"a1c0e7d2ea28904ae76227baa7da5da33b68257f4c1a7a456f8d3171529bd934","src/loom/std/atomic_u64_static_once_cell.rs":"92a25654dd8232f6c02c8ec58d4f706030db442fb2a5ba07f1aec09149559725","src/loom/std/atomic_usize.rs":"698c0a65ea4d1ad05d49770cef2614cee643794be4b6208ee071a3e381201349","src/loom/std/barrier.rs":"1539e5773ad0ab1936e8a9a6cf5c20bc697915abde15b3e0898615194eb37fb0","src/loom/std/mod.rs":"7f15210848cba1e8f382508acf948da79499a14b69e0d8694312db8642b97d56","src/loom/std/mutex.rs":"0899bdc1302f1406aedf96ba8b1a890abf743188b442d242b1667d998952d17f","src/loom/std/parking_lot.rs":"e29739d7894c61a005ba29b0ea88dcf34ba24d9ea8fcf5f19b9e009d81095952","src/loom/std/unsafe_cell.rs":"05e2b4d8e78b0435650c6da6239ce8c53b4de2573e64ba098354b049f23429ec","src/macros/addr_of.rs":"cbd020a07ffba2b1c608856081499645cf606cb45444dc53d94457381a94bc33","src/macros/cfg.rs":"44dbd194ce13ae0afd3b77966021fc10b8740bce2b6b676c4768e52677f3da77","src/macros/join.rs":"076dbeed1cbbb292e39012d18c0d1c97848bce48c4609b23f327025989b34a8e","src/macros/loom.rs":"bee8a86b0b96697cc21e4b5e9f1a3403c1f9dbc8c4e591a2ea91f51c2469d3d0","src/macros/mod.rs":"913b1382779ceedbd13606e429f59b9c7ad929324f121452f47773c232c3303f","src/macros/pin.rs":"294e5644061e41801dcee5494b7334439e09af0b6219ce164090feb624864631","src/macros/ready.rs":"6efd4c866c4718c3a9a7b5564b435e2d13e9c1ae91fd98b1313d5e7c182942d6","src/macros/select.rs":"4d9588dd514cf9f25b8c3c76ab08ad141d8f7ed1acdd856c6418946edd08f055","src/macros/support.rs":"da976befe4ba4d29e96f0de24cafe6e1f7f97364274e240556a01f2af77314de","src/macros/thread_local.rs":"5e759658d18035af5aaf907237d399c05d967f94c71c7bb33f36f78ca768cf78","src/macros/trace.rs":"33befd4533a3b2b4b22e246033f2bea8930174a7da58adaa57dbf20931275bcd","src/macros/try_join.rs":"2233cb76a6ce35d020ebbb8a0b0d713f01c0b6fd20fd878442bcca688c97ed6a","src/net/addr.rs":"0ed3d72ef6679e3ad76c6830143713c611d357ca4ece88c3ee5ceb2787217224","src/net/lookup_host.rs":"c7a21d735225e316253d822f6b11a17107e6a8db004f947a54d8bc12ec782baf","src/net/mod.rs":"301307d5a5f8c783418646ef9f7712414226a73061a691b468e0e3ebb7eb4df9","src/net/tcp/listener.rs":"76dc043e1272d040a8a338ad23f3e27e27d7a47030a708bff538e0b21c1f8d59","src/net/tcp/mod.rs":"347182e4f0381896bf3b7ab578c4564f1730ae25a108076ec65b8e855683fbf6","src/net/tcp/socket.rs":"d8bc43dcd5f16baf8ed5d8b96addc6a8140d49c684fa99b6fa75d0ca5c402c4d","src/net/tcp/split.rs":"75d1f6c4afa23397164a30c4409a73c8d3df022c780aa4f91fabfa90549cc606","src/net/tcp/split_owned.rs":"0c5a9f48e7e49c257c25e138f74c0c5d3402edf447a860cbfc1a36439d997295","src/net/tcp/stream.rs":"2397ef910c6d04af277de6064ab70c20aa0abb7c131c3850bf9bbd354e33c066","src/net/udp.rs":"c2a5319f3e02eb515d1980083effba2545c25820e4bb6c5fba5fa328a3cd4ec7","src/net/unix/datagram/mod.rs":"fc48924e5d1e551405b0708a2d122473cdafeeee802a5722f64b4cf41a1c01da","src/net/unix/datagram/socket.rs":"5b736136422911db1f5aac2e541432850ec9f9f57bdc784f61f818868aaf75e2","src/net/unix/listener.rs":"e1c242e96856cf878e9cb5514f97cd8f5a65b284093a0cf47f94bf349f66d707","src/net/unix/mod.rs":"72008ca5352432de2203321244da5377afe5779ac15f5f6a577998c037e7e4ae","src/net/unix/pipe.rs":"0881edb516df3443f190d5dc84d6b40b31b517775cca1bf0393f2e473e15ea8f","src/net/unix/socketaddr.rs":"66bf18321a81baeb394a7094567632b113e44e12d2643109b6a97c89d919bf3a","src/net/unix/split.rs":"bd0388de8b6035b8cce2a34989ff56304697ed6864615ae13474f4e9c504faa0","src/net/unix/split_owned.rs":"5eccba5c1d589af4e5b52d17410c2290c289db5583676cf016de93ccabdace9e","src/net/unix/stream.rs":"bbb7e287385ac47817fd266393bf83bc4b28d83a689aef4e280bf5c3c321dac6","src/net/unix/ucred.rs":"567e59bdf47e6f607d3699a7880dc4ca2d5625559069cf3e8cb0d35f162a3718","src/net/windows/mod.rs":"a1525f35c1acb92b15bec788a625b76acb42f9424f392074db697102ce79760d","src/net/windows/named_pipe.rs":"d607bdada51daada04c863d39d16e2e66f63bc141cdb017e2457573aa34cc048","src/process/kill.rs":"2f98bd1bd28ab37bedc34ab7b737760407ab5315420538acbd18da31d2662d94","src/process/mod.rs":"60e77366338e19c2491e20ffd313322251ac859a31a9413cd11d34f72858525e","src/process/unix/mod.rs":"09112d79de5d25fc1d1a2c32435199ba480ce186d8516d5d1fc6bdb09b80f439","src/process/unix/orphan.rs":"d641d9dcf41b0ce26a3ccc38e2e8d3cd505c060a87a137fa761132e2290bd886","src/process/unix/reap.rs":"62868319849b8482d8d927dcd00cc8a74b9af61fd47494b39bd41fe2f4dcf0b6","src/process/windows.rs":"bf98b7c716c03c07b3341f124ceab93de45fd595af8fd061b1b0f3f4782e8d50","src/runtime/blocking/mod.rs":"3a1e04d2fc5590c7c0a19c85ecbd893108f9a81b197162378c525133c3bbc7aa","src/runtime/blocking/pool.rs":"b50454e68d2e60e5360c4aa5fe1f8289d21fbfa2f6e77b176931f9d370301af3","src/runtime/blocking/schedule.rs":"206f8a9972dfd2c1c18d29c8b8129a7d7165f5df898946015f6d4dc72c61a777","src/runtime/blocking/shutdown.rs":"6eaf2a1418b885bcc1ce3f257b99382de9c16f848ed53d9e00dc97389bb6b816","src/runtime/blocking/task.rs":"08571bce8a99dd6296ba7099c1f6da8c832d13a8c43db22044c683470147d7d4","src/runtime/builder.rs":"9b4af3c9a5bdcee3c0cd8e96d28588463712930d1ba22047a5738674e9fedf34","src/runtime/config.rs":"ffc5bac854fc94e429a53bbe73c494c39f1c6b99adbb55088571394a111df80f","src/runtime/context.rs":"b2c974ae63995a4b7f81f5f2fcad429487659fd7df462492f52f5fcef76afca6","src/runtime/context/blocking.rs":"82ec6b5c6b0ce7b18582cc931e9cdd6d5946366cd676c9e6bb0235e6e8471ed3","src/runtime/context/current.rs":"51023fb843227d82a4c8b7a093148a2b36306f398e2770026d5d1e0f296e08dd","src/runtime/context/runtime.rs":"df7b8deca59426ac39d6950b518172ff7a7ef306c1681187a4d3b1f22168984d","src/runtime/context/runtime_mt.rs":"911b95f39dbed005a02fde0394bd74c02e14e5b9f5c98bf49511f6c68ac5dac8","src/runtime/context/scoped.rs":"16bfa1da16baa831cc926c41df869b99bfbc6d96cf39a04aa4914a9e4b19a2f0","src/runtime/coop.rs":"911565ce644a15b3815772dbd8d996bb42175fa0497aa3b459868f556f3dbbb9","src/runtime/driver.rs":"00c9e7f1a33119612ab122cbd0ec12d4d4264fbbf03d69ea40ad44a530a305d0","src/runtime/dump.rs":"de53e25c28c362cc8bd4f321d23a7c5c8a3956ed3a2ffa4acd4d62f6397ab9fd","src/runtime/handle.rs":"629bac5f9c98a4b4016c4c183ab8a825cfcb8973102657ae7e7361a2fd1f5b52","src/runtime/io/metrics.rs":"e711c65da155ef73e567125c0c9db33b2f511982a0c0a6b4f3b37c2d87c791a6","src/runtime/io/mod.rs":"b412b1c499dc535809ba89dad92b2d0eac570620536803dc62c0f40569e52c51","src/runtime/io/registration.rs":"3b9ab9ca192e90d041008d7ff40be77fdae14d5029a047d8a949b9de05c49fbe","src/runtime/io/scheduled_io.rs":"39f12635cb1ea028bd82040982ecfc38d31daa106c9dce0a39d81b326c84e163","src/runtime/metrics/batch.rs":"2f4dbac94c8da8feb5b78c5b4b40c23d2c014567c571877b4d4540d2ce37fe05","src/runtime/metrics/histogram.rs":"1d85cc2e6e1ef02b2cc4f2c627d5405d603742b995dd3ff23909a3a2fbedc8bb","src/runtime/metrics/io.rs":"960f44573cd16e2ec43ed872f235ece09db9f4c87e217002ae0d180e20ce9838","src/runtime/metrics/mock.rs":"b91e1531419af9f8f99b0b796db4dc1760b2836f1a55f6cc2c80f690b611bfcb","src/runtime/metrics/mod.rs":"6c690fffe34bac1267eb3dc0ed93481874795d2fd2fe9f495859fab0866fb814","src/runtime/metrics/runtime.rs":"f34f9ba43e5c1959fef485f98afda44f4a0fcdd5c6ed282b7505de61928fbbfc","src/runtime/metrics/scheduler.rs":"997ba0339af84ef878881fdb6f35d8f6b39dc81e8f0b5cafce94476d50675c91","src/runtime/metrics/worker.rs":"e13ee455c2643f71b5a8c61a07023afc7341c1320fafcdd32c74dd553d81f3ad","src/runtime/mod.rs":"d7c76867cc1ddd517564a624f3ea1df64b29f72e553a7bdc2514f8670faea769","src/runtime/park.rs":"dda2acc53529d8169bb2c4fc08ecb8896bd675515b89eea6110d73fb5bc93b10","src/runtime/process.rs":"f40854b46e5851d7f5ee10f50d839aac933343c2178508f419c8e41dc60557db","src/runtime/runtime.rs":"3247dcc560c8471dbf5a79062ee9a58e08d20b0aaa8de27ebb64f2c9ac5752c9","src/runtime/scheduler/current_thread.rs":"b3bd715635b19320d3faaaccae233a00dfa822d29ca2893a1e5a9230619614e4","src/runtime/scheduler/defer.rs":"6124d19b90b56db1aa0688ac0e4af964a6882a51814b0065fc80d3cb6398e98c","src/runtime/scheduler/inject.rs":"fea0cf9dba0e72efaea4671a1693fa5bc68aef376d9773407855551951810426","src/runtime/scheduler/inject/metrics.rs":"26ee4f9d34c9d670eb75ee8d02a6e268952a1ef698ab3213d71873a97ea2c851","src/runtime/scheduler/inject/pop.rs":"335b42278217a3020ec1419d070132f8f5a0ce832c504dc7806c42821848be83","src/runtime/scheduler/inject/rt_multi_thread.rs":"de370e710a9c9010ac1c2b29ddc3d4ca7de9d538bd40a4329f5d64be5924d7d3","src/runtime/scheduler/inject/shared.rs":"7d5c67a41156e559a5c91d39f89ab1d3f5e217bad079e46f0065535ae186ac53","src/runtime/scheduler/inject/synced.rs":"99e5508570ba2cf8facfbfe5a54276876c5ff71d53522c0976c4a79c1b9f117b","src/runtime/scheduler/lock.rs":"2aa5a50067dcc79d66ca39d1e4982c28f55bdcec43ddd7bc91414de5f794019c","src/runtime/scheduler/mod.rs":"9dece4afaaf3412d55206f1f1d8b4558dee7645d0108486eb07397cc4b31c996","src/runtime/scheduler/multi_thread/counters.rs":"e5a6a1a1d01a50890dabbeb7998c7b64a954ed94bbb7cf9505ff917ed63633f6","src/runtime/scheduler/multi_thread/handle.rs":"c17a2644ee53990376ecd4276ace8fe90eb2cd446b9ac8115f1062af1c7662d4","src/runtime/scheduler/multi_thread/handle/metrics.rs":"d5858d459700380a372821c2a5f03255f96e58e2fdfe8367e6cf355fb29c7b72","src/runtime/scheduler/multi_thread/handle/taskdump.rs":"20768dab2f9683ecb10849fd3a4a2862a0f9942fba97d6ac29c8bf5ba7017c62","src/runtime/scheduler/multi_thread/idle.rs":"c2be2afa82ddbbe36eb6e231c8a01cd7c233d9c6e197d2feae32200098e974e9","src/runtime/scheduler/multi_thread/mod.rs":"2fae4c9f66b57d15f63c485ee6ebe724f1d41de126e641418ed6ec40c8fb3e0a","src/runtime/scheduler/multi_thread/overflow.rs":"c70ff49356fa6948f9dc53a19014a5dbf7f6bf52d4c00d9c2e20b0d23b7b3bf0","src/runtime/scheduler/multi_thread/park.rs":"86aa7fb6f52b16237e9465fe572ff61c7aa13e5fe9654ce52dab435e23df9781","src/runtime/scheduler/multi_thread/queue.rs":"1b7ace7cdf3ae20b80980aeab84ca4493d6ecd0247c808340a8b62fc3f7ee77f","src/runtime/scheduler/multi_thread/stats.rs":"3686e6b7fd6ba31c36f78d5e5ef58b81e19f6920c764184f9e4c5497125f8460","src/runtime/scheduler/multi_thread/trace.rs":"f8ac6b0db76c45057c0061908d5acd63eb1463c397984bfd9a80f4bbc2748f30","src/runtime/scheduler/multi_thread/trace_mock.rs":"3ce6a3d19b53b608cba34fda213e498691ed55ce4a542806f9080bd2dbdb054a","src/runtime/scheduler/multi_thread/worker.rs":"9c7e9f33f4a043f39ad3075105faddf86111e5233e6c09c4ce5f72a9c88e0814","src/runtime/scheduler/multi_thread/worker/metrics.rs":"14e15c7315e1e1a6829b67beda6a858570b70eb9ecf9f0f3d7530881ff7799ea","src/runtime/scheduler/multi_thread/worker/taskdump.rs":"ea2bd932ef0a3b999fd8a16e15f9e7dfe8c30f3589569b7f7ab334a63ad3bede","src/runtime/scheduler/multi_thread/worker/taskdump_mock.rs":"f8664a755109ddc87f7ab82c4815cb12eb37c0bee3a1808907ac10534b9867c4","src/runtime/signal/mod.rs":"1498f18f55e730270f8c92906857d856de5ae264d80a96699c8b8b2f9439b77f","src/runtime/task/abort.rs":"81004b45834ab44f1b673b31379d37c68c5ce8acb7d223ea58207f412745d3d5","src/runtime/task/core.rs":"77134284a7da7157c1f4bfc6b2d5d4569c3a7079cf24f15416a3185b0bcf0bc9","src/runtime/task/error.rs":"0367095439c51ce94f53b13aa64404e13e85b114f77cdcd7315d4cb3d4fb9344","src/runtime/task/harness.rs":"996330140acc964d5bf31398b994283d997a9dc5390a7c6983b0a38723d3f1f6","src/runtime/task/id.rs":"4cade5f2c02e5d3a0c516625aa8def2da110db3b83d13a6d9e26f2a1ad8b31c5","src/runtime/task/join.rs":"db92ae97f715e36bc77fb6d8d668479472f5454406aaf4c1191623e59a893989","src/runtime/task/list.rs":"ff04f5303e59913e651f36c6be1189cbb2955de6f1acc94815608a23a3579612","src/runtime/task/mod.rs":"b096464db86360785446c67e3a9da8d35169283f3bbd57f1d65c0ce872a5c7b5","src/runtime/task/raw.rs":"4c30fe4cb3c57361b0f28a4acd25877b1f6e6507076b5933ad91f098ab2d7f71","src/runtime/task/state.rs":"2a75a1af1e2e6bfbbb6e33c8421c0841d0680f1fbbf42d2b555d9d33ef9f0c8b","src/runtime/task/trace/mod.rs":"e0175011ea04df0ae64060f36d4a91b3222cdab4ec4aaa8220e3bfb6542d81fc","src/runtime/task/trace/symbol.rs":"bde671f445b351d388e5fcb80e8cb8be4424a4fac4b8ec3aee356eb86082b422","src/runtime/task/trace/tree.rs":"b8f9aa018147d539841e5716394086709fec6a8d0f95f6b2fc011ed131063dd6","src/runtime/task/waker.rs":"784f7f251df481b7b7390561a6601e4b8e7fc26a2fc4207873519462185ad5cb","src/runtime/tests/inject.rs":"97b68f6c22f6861b2a1649a8f919bae3310d6fddeae107aee4dcbf00de526cdc","src/runtime/tests/loom_blocking.rs":"fb4bf871ae59cd567ae4a2cb568d7cba31ad92579bea17c598d273a3a749f74a","src/runtime/tests/loom_current_thread_scheduler.rs":"9ec324867d9d123bf93c8f1c9feba8f9b57689122a1efa784adff425962b2d65","src/runtime/tests/loom_join_set.rs":"d6612a19c695907a8bb41b24df3b404cb521cae6f30226f2449dc32f18700b69","src/runtime/tests/loom_local.rs":"69cf7fa67da9e3efe3eee722791f811efb395dcf821780051e62842654de09e3","src/runtime/tests/loom_oneshot.rs":"cb0cb66e1014708a10a2236c2dbbac9441b6a6e36a49c419fa3a51af62b054ce","src/runtime/tests/loom_pool.rs":"7904461bb6affb1bb46f9ddbc11d1cd6a57e4d3c980a34f0ee6beb62c1ca496c","src/runtime/tests/loom_queue.rs":"5cbed693390bae17cc9c1b2e11c4cf183d88a746ab35802a85f4aebbd81befc7","src/runtime/tests/loom_shutdown_join.rs":"2f48626eb0a4135d480aa5bf72e514c4abf39aa17711c96d3829f93c03758557","src/runtime/tests/loom_yield.rs":"fac610e464660c196a35ce15a46c9ebf537d3f3475cfc633e58c76c25eb558fe","src/runtime/tests/mod.rs":"625205f9c1f42b3ca4329593cee7d266497620a611c5f7f65fbfddf7d8185f82","src/runtime/tests/queue.rs":"56ea2b3c8f3a1a01091c3e624259b03a57ab555e52ee77931ad9edaf5d6db329","src/runtime/tests/task.rs":"e98f94f976cee07f9722f82f11e9d9486e978310a5314367fcb9580564f613c8","src/runtime/tests/task_combinations.rs":"0ebf6682728fc5ede9374b6353a8fe5d0cb1d27e511f338e779607d8fcaebcf6","src/runtime/thread_id.rs":"ad85f1057b2c61838620f1323fa8a710e140bf448fb2aa1d9d1f87a7fad5f01d","src/runtime/time/entry.rs":"7f07396d64c008f1d3b9a7d496564a07bb976837c3e1f0b21ba02ddfb6306515","src/runtime/time/handle.rs":"1ecbebdc070477d61b782b2f4d3a5b9b5cc06dbe447188f23eef3257fd16ea8b","src/runtime/time/mod.rs":"28f78f2bfce3b7cd61a893b19b93a285d55f084299401816f3d9fec03d87de70","src/runtime/time/source.rs":"c03f9eb4d229a582826164031541f028e26b95c75fd02fabfde3668cc81b5e8a","src/runtime/time/tests/mod.rs":"5be4c9b935df11411670c4bb59e071a513f4488dfed78f48ef20371cecee1d07","src/runtime/time/wheel/level.rs":"974a230b26f6d4fc9f4046741f1e8ef90acd2d53132f135515bc37914afc276e","src/runtime/time/wheel/mod.rs":"1104133c6d50ea708c5733f7bf05b2ad1f027608a7495d18e649c9b97f31204c","src/signal/ctrl_c.rs":"3e1d98df851b9ea1418f607c260434e906ada4e3d6c14cdfa5c81a0c4d55cdd3","src/signal/mod.rs":"4da598cb028d5716628bcfc06c0fb0bb8fb8f0f0986c6a328a655e76979cd85d","src/signal/registry.rs":"c9e9d1df123c6069c2ad80824162a5de8c0163a9c63714d26ba2128538e34cfa","src/signal/reusable_box.rs":"3d3b710b1794d9f8f5463e9ca380ece60c426b58786a5cb5f40add627da01aeb","src/signal/unix.rs":"0504cf52a28e9e8e528fab0ccd4e9c3dc86fdcfb807ecc9506fb6adca186c531","src/signal/windows.rs":"826a2a16fc9ff37ecaf7eef88f09d8b5f57adb6095dc10b981a4c0bb67b70a2d","src/signal/windows/stub.rs":"a6d3b11aa3a7247f7a8365c3241857bcde48d8c390d569e6bc9529c9b1f8ecd1","src/signal/windows/sys.rs":"3e4882762ac424cb3b3caf71d5a69f571fbe14e6b298889ccb227c58b213c257","src/sync/barrier.rs":"45a8ca0fec02e6a6fa77cfeeb09e3a142f931d413c00962aa0d0036ff8ff37bb","src/sync/batch_semaphore.rs":"ddf48ea17d5f911a05c86ef45388cab848f710068d4ebd9139342f8ad83a7ac0","src/sync/broadcast.rs":"e2c2f003fe871b51dd3b827e9a1e685365163fa733bc62da7da2ad07b8fc9289","src/sync/mod.rs":"bd94e0b941f6c61623bf9ed6317c545c5a076d3431471f014f0448984c2bb82c","src/sync/mpsc/block.rs":"70a034a62ea88a95e970352a7a3e004c2755c75afa34d71f3653537389e6e2d6","src/sync/mpsc/bounded.rs":"fe08d3d153053f54c51c16f0cd67b74141c14b7d4e852cf2577a156e92b4707b","src/sync/mpsc/chan.rs":"1f5b7c5dfda94156b366cfb2b25262c85a0c77e31d415099653afecddcb59139","src/sync/mpsc/error.rs":"67db03385fa385cb459a830dae7e05c818c995d1f48e3bb8308f76f9f37bd7c7","src/sync/mpsc/list.rs":"2c99cec4d3d179f6e668b8de37e58525477be3f069a9a748f7f8ed2f8a40f817","src/sync/mpsc/mod.rs":"3699ff2b4c5315f0a1cde40a1d3a45bc312febe1cb612cd68c6176ed7590bf1f","src/sync/mpsc/unbounded.rs":"5cd0694dbd4a2f33d44756a382c02780e1951dae19d246fe1af3e026ad6da5ca","src/sync/mutex.rs":"c8dbfa89fbb2484fb4d15b814a52db5f4b00f54daf464194001aa733ec657a63","src/sync/notify.rs":"bde3d5cfe7d417687bc79bd971c07b97e916919f133c89d1e63fce5a6be83d0d","src/sync/once_cell.rs":"56e0722bd81143351e780646404d55da907bca866dc72bc3a0fbfcbd8b176754","src/sync/oneshot.rs":"2900d5d4ac81c3056c04b38ba7252eb4e98437943cba1bd6f06eafe78873cf93","src/sync/rwlock.rs":"a89b7a8ffed53c9f91d07a9dff966544567fd90da9219e9099d81393970edee0","src/sync/rwlock/owned_read_guard.rs":"135d81271f0028263ce99c3246cd335a08912b50a43f125b3e8f7739ca353cfb","src/sync/rwlock/owned_write_guard.rs":"ef56443fac210bc3d0c2b66beda8436154c2ab726f1dc208758b54b2b087762d","src/sync/rwlock/owned_write_guard_mapped.rs":"3038187dc3a791a89505621230d3edd8629287ec11490ff37f2c624b593c5325","src/sync/rwlock/read_guard.rs":"0f7e52adacad0fb1529a453eb14f8207a8caabd8f5fca4aeb2031a9e9b0981f1","src/sync/rwlock/write_guard.rs":"f3855cdd09940c86a9bd10b91d3ebb37b2219b60c727a3bed377404ef2483c35","src/sync/rwlock/write_guard_mapped.rs":"8c839c4ac4b73faa1c1fc697753e23fce113ba6e576d2abc022ddadb98a34af4","src/sync/semaphore.rs":"801c98bdcf3003964c3441702cec952b89e914475653f1d6a3901ad7e8c91941","src/sync/task/atomic_waker.rs":"41e9e05522254afbacec9895390d6f95498e413a61d8f654f9c421c808e7f83f","src/sync/task/mod.rs":"f5e38105c7f8a942c0e49b973bad0a8c2a1df81deea19f3c5228edc4896c1725","src/sync/tests/atomic_waker.rs":"34b1bfa8fa3b392b89bad36fc4a2a17e42d84c60635c6e7727b428cfb693feae","src/sync/tests/loom_atomic_waker.rs":"984b52699c47383b9b62e6c4ff93fd458bbe64cb4ca836463adbaf94d27c38ee","src/sync/tests/loom_broadcast.rs":"b2c6f138707fc389ee7d91109bc38093af9060b3465e68d3543cb652e0070406","src/sync/tests/loom_list.rs":"f0ce15a0f965fe558a21bca24863c712156eaeb10feb8ef91031a6d6e3cc5dba","src/sync/tests/loom_mpsc.rs":"4883352b9d75a81c878609613545ae14910eca4f2e7f3718053dfdb792aa0760","src/sync/tests/loom_notify.rs":"cd401c73084df551043b7d96b9f2c51e9c1929a9038eb899381bd4ecafe04ec8","src/sync/tests/loom_oneshot.rs":"c3596c15692b16e7cb8cd6957362adb3a98b3d7f16c4a4262f19a3a27f262b03","src/sync/tests/loom_rwlock.rs":"80ec00bdcac838806d4d9f711cb154e02f22913ba68711855c39ca92028d3e4e","src/sync/tests/loom_semaphore_batch.rs":"c6f69b8d5b2e6842287ed34638a9045095d9f94c86ba6bb84c1224bbe10026ff","src/sync/tests/loom_watch.rs":"d451c914e94c5a672abec3232e58aff6218581f0c0b1802434ddbe771b1be6a1","src/sync/tests/mod.rs":"1ef2026ac3dfbb70a437b8be441deca4b7b5e72638b71daf753b89808cd3c9ee","src/sync/tests/notify.rs":"cdbdc080eb9e653fbd56501a9897b9dcc6298ef81f7a88390976f9fb5deb034f","src/sync/tests/semaphore_batch.rs":"291d6c615058aa28a26ef17260cf5f27be286b20da9dba36ec95ca3a7d895ea9","src/sync/watch.rs":"abe32dffffc6105f806238b64fedcc40807a48fb19f35db2120286cad1568de4","src/task/blocking.rs":"d2ece044d7cbefd4a07aad1a5824231d4ccd35f9ef7197deaa80f0e5de5396d6","src/task/builder.rs":"6704158d8adb0e1a1a2b1b66548fb295c6c1e32b7387e6f3c9c6ebde9a0c084c","src/task/consume_budget.rs":"f1000b9628938a5964f70793506f51579849284a4acb10d5e9c70080c5caea47","src/task/join_set.rs":"e178485ba52bdeeaf0f9320e150637770db8313cbbfd442440dd61a98fb5c402","src/task/local.rs":"5753e6182a647547e3a80e3fcdc5a34433dce809ea9c4fe5d99a313054e30e3a","src/task/mod.rs":"68c4e77221655cc3cd208e20fd9f8b3035d5f6176e30a90c5ec67423f8ff8ec4","src/task/spawn.rs":"1b4546ba873255b9ba28b755e2349200cb299c253ed6539c9fe0045ce48b7f0a","src/task/task_local.rs":"a0597c6ae9c304709f8c770c184d40d0d3d609b674c8881e32fa890fe14dc734","src/task/unconstrained.rs":"8e75239ae694f296136fbacadb232ae0a255b0b2013e1eb0390bfbb82af36692","src/task/yield_now.rs":"ce1f9417f650142488a8c27856e995676c5e74b8965832966bedff6a99b8165c","src/time/clock.rs":"839139149402a4ab18f3144a36249f57d36536ca44a646de0bd6eba374a71ef9","src/time/error.rs":"de761055f6596528fa158eb2179aa662fb1510d93aaa2102f8de3192c6a6d1ae","src/time/instant.rs":"164ee00dabfa6bb9fe4c9854f937ee92ae454eeaaeaa7a447e09434ea95bf722","src/time/interval.rs":"3d9d49b644546f95ca3deb2ac7ed920368e597a84da564e0590b59ade2e857f0","src/time/mod.rs":"c790bbe9356ceb56fd20e762c9002906aa4eee1d1d297fa0c520130f72d3be3a","src/time/sleep.rs":"74fbbc406caa686ba100b4e399b6bccc8659ff2f20f1414bb40cf473a415c4a7","src/time/timeout.rs":"67f5396cad468dac3381b323734739914052a0f72c3df018eeab14a855f6c8d8","src/util/atomic_cell.rs":"6e156b730f69c698cece358ff5b206e8dd88083230fd49b2fc4a66a539b92553","src/util/bit.rs":"ad3117c9a8b1e312114a72e9b315c37137af61da51ea458832d46d2c1b88879b","src/util/error.rs":"de1a0d662e9359da3e19739125b1450f571abadf30e34f50f085b23d8da28d80","src/util/idle_notified_set.rs":"7c54b9cd9490a085e224047825bc6f79827ce32d39e16547ab624bd113a7f3d7","src/util/linked_list.rs":"688cbd8e8176460f9a342b0d2b3da039260f853495dec8db12e4bd6eb104761a","src/util/markers.rs":"fb9b674d9a48c97b411db8a3264fa2781026a0eafa74cf276cd47d8ad62cbf02","src/util/memchr.rs":"8cb5e0a0da9b7d94d29a994dd4e725e547ce31f87b5bf24a1a9b53b0ae65cc08","src/util/mod.rs":"2a3c39fbf7643e34344d5ab3a769a4b31c88eecb356c07297eeee163f4310ca7","src/util/once_cell.rs":"bafbbff82e595a0b8f41f3d5273dcfcacd282c51a24f14666105391a456c5db7","src/util/rand.rs":"c36ca3d9e971e857b132f29ce3ce0ca3fb7c82a4f413354e7acc91cb6e8ee285","src/util/rand/rt.rs":"9790a2b6d822edbffde723f38b75ded408dba6954d711f285bd17924322b246b","src/util/rand/rt_unstable.rs":"bdb69915fe12a9e0b8f2ab4d72466663b7a3e87e671343a0a623028690f4e452","src/util/rc_cell.rs":"362a7a7b776389688299628a4678378fa02f88fbc6ed7f9fe006054d9b62643a","src/util/slab.rs":"fd21a2927f658c3fa7bad377e964702c4a85b5d995f44b90740101c19d820b97","src/util/sync_wrapper.rs":"8f1ab76280171c33c0bafaec9c1cb1d48cfb0d19a1ab2b768cdf7d7e40f07d00","src/util/trace.rs":"3b4e7ed40a16f9806a40f56268ec5daa519565c899216ab08a64c2f152f85c84","src/util/try_lock.rs":"c4ee49e1751ee0a7df1a8cbd4f8d36ea1d7355e3ac584fdb8697a94cd7a7a8f8","src/util/wake.rs":"27046cb8116d4aef4b9296024d1a9b822121c0813b8390acca45878c9a13c85e","src/util/wake_list.rs":"c3443e695fd0b5c41c06d66cab96549064e9b645043559d01f82f365dcc4ff6a","tests/_require_full.rs":"869a93f914df3d1c941b5787ab52dc55440d8d9d78dcaa0354b8d2a1d30119c9","tests/async_send_sync.rs":"bbd4c385d982840e5afe4cc3d8de580d23afefc278ccb9e7195ea57ea89a31ea","tests/buffered.rs":"b953415c67c406677816332e66d46ed677fdd504119d9a1ac4b5df15acd168db","tests/dump.rs":"4eb9887bd06cf82dca679d6e27a37770f8a8bcf44c8f5b06cd3cbad835848788","tests/fs.rs":"da61358e4dfaa8bdf499fd453f68b26276ba50a721e79fd1e472b9eea889f58c","tests/fs_canonicalize_dir.rs":"c39e85391dc738db31ef5c7607956a97dc32cabdf09e5dc0bd4edd3a6e354aa3","tests/fs_copy.rs":"b28a67ea4722ed346eb4c035bb03c2785ed94c796191c1eafb29975bf1f66781","tests/fs_dir.rs":"e519be77200d54984f6088dfd1ab0e61c8284be54a4fd8c41060e1743533b4f4","tests/fs_file.rs":"61df8af26212e38ed0de9a8377a3b44a51871c52f9232ab2e130a12a70c7ee4c","tests/fs_link.rs":"ab0f68b65101b9e1d26216179d11bb637d968a81322e96721136881ec4796287","tests/fs_open_options.rs":"039a58348ca9d94dae8bc42e0e85f4c79f25f0ef07102e904564273ce2cd8ece","tests/fs_open_options_windows.rs":"1561afac0671988ee0bf4bb1a34dcc485e53fdeb11e75a87a6166a8f49a6a392","tests/fs_remove_dir_all.rs":"2b5294d43fa608a412d2d6a3c2d843fa1164524e680d86c6c216d62066da54e5","tests/fs_remove_file.rs":"da32874c72fa6b031176ffd4e8102faa19dbb9c92b3a43c1348fd9bb206ab801","tests/fs_rename.rs":"ec78709cae9e6d5afd7422b06303a192946845e8f5f78465eac8b3b7ddb8480e","tests/fs_symlink_dir_windows.rs":"5622869c393f27bd20ae44e7e38748a6d466844228c2c25038b9d1171c85b72b","tests/fs_symlink_file_windows.rs":"bee0d4b180d9edf7ff98a688e68b05e012ce78eff7d7af82c27c2ee63a5ebecf","tests/fs_try_exists.rs":"8ed69037a876312bc3d0a0ffe3e970349a3827369db5fe60d8123315f99fefae","tests/io_async_fd.rs":"ee05f0acc0b93f3f78abaf5221af2c031f5bd7e34878e780642ca637591f03ef","tests/io_async_read.rs":"a590efe9bb01986f067118640a3b55f6760186e554f8e8f2404231d4e96f61b9","tests/io_buf_reader.rs":"f5a322dea6fe9f40c18a085a865919c1bbfe8653203b37d1e18b77d259c6211d","tests/io_buf_writer.rs":"3bdabe9ac26f3189929ab3e8957150f5262d5b426fd3cb6c4761a45014b1c1fa","tests/io_chain.rs":"f5d3ddc9f6e8152ceb08b5dda2ca3168b174f1f67ff28a4c5983bcbad69d8af6","tests/io_copy.rs":"0683dee400710c1696a6634ecee64c39e7027344e66bfdd6b2a78de8ca913555","tests/io_copy_bidirectional.rs":"855f720881c624562897c7e8f9cc15ef11498ddd11dbd803f21fd587c84eb2bd","tests/io_driver.rs":"01b89cded4f482dfcaf5cf1715a493c932aa0c72eb0563950b4b5fcdadf86ce2","tests/io_driver_drop.rs":"d25d432740f5eef3f214fff6d30646ffa6a3dba77658c76c1fd2172f32a0169a","tests/io_fill_buf.rs":"82a83d0d4d5a60bc312f2d77722607a8bd28d465fdeec3fd072815cd0cb4ee70","tests/io_lines.rs":"f5b1599ffff44819e269519ff0a08635ea1c5d7c541293e63ee33d98f25f0e3b","tests/io_mem_stream.rs":"7b20d86c02c8a868cfa3aa4d228519090d156fdd9a8a19a3be263f264fc9d33c","tests/io_panic.rs":"48f3f842f55afefa04824cee79383639c9d9465c8a6641c9eb8850f1c47d3bc7","tests/io_poll_aio.rs":"165f80ebc81e8ccb4d335c9b9a89d960f097de9b17e92bc964effa3c76ce5f98","tests/io_read.rs":"4ce62e123e687f38efb09a14246be86018c4772b10d492f9e512c99bbb5f0818","tests/io_read_buf.rs":"6dc454751af0e9cccb44fdfb12b9f0311fa8afa482886aa56e3e15d49ae1e06c","tests/io_read_exact.rs":"b6387dbeb0baceb7a1f74a9a3a8b4a654894465368be27c3bbf4352b79fc4314","tests/io_read_line.rs":"8296624b4f5e162c79024f3beab2f561f4195a244cfd4c53e4d06282f56a31bf","tests/io_read_to_end.rs":"722e2922a40080d391a83b4903f47823779740090624a98ac30e9f164b20a3bb","tests/io_read_to_string.rs":"c9ebfee5cb262d822119c2881ea1cc0c73598b13c517c297663e35bb120a089d","tests/io_read_until.rs":"b6c0df9e4852766910ec68affcd92fbfbc280018b7f9c16cf5f4830f9b8389f0","tests/io_split.rs":"a3228f84142732d624e062bc933ac26267a10f71202123b3a9d5eebaba82eb96","tests/io_take.rs":"8790584a344102da70e669d07b9aa39b94d5d76fd87ded8a684971b06d5e7367","tests/io_util_empty.rs":"32dff601a78e46e12339bf1577463c7ce1070d71d78a2fb33318112a111dc120","tests/io_write.rs":"98668a8c8feae0f85714df1dfecfcd94fba4ba347bdc3d8aaa4ea8b175055c69","tests/io_write_all.rs":"e171af1ecab45a439b384c3bae7198959c3f5e2e998967dbd9296760b52951b7","tests/io_write_all_buf.rs":"2c037f07ac464eaa4e0b87e4e4968b28a0f2f1b1d1e218546c9d5dac7a75d145","tests/io_write_buf.rs":"331d3b54c7664386bb87585f39910d1fe31bfbdfa012a2dc2120e535dcdac329","tests/io_write_int.rs":"3f4b50345f7d7d558e71ac7f2a8c1c4b7b771dad09fe2e1fbf9a17d4fb93c001","tests/join_handle_panic.rs":"5f81436d1e7c18847392c744c25c14518c41f24558861584f5ff759b147ce4eb","tests/macros_join.rs":"d91b865047afe490c2db84112c2fce1c953e1bf26f80c82d9c8dd5b73769c693","tests/macros_pin.rs":"6162681c8b31c35ea6d88d09187b77e1fcc96ca56a1304b5cb39b4051f601f3d","tests/macros_rename_test.rs":"c478f11266527a166bd8f7ca3446db94c7e7a1bcfa0e74b6597b6087e5749436","tests/macros_select.rs":"20044ec9cb0d92c04bb08e0636ecad749b06dccc9e8ccd09905f88fe7dcfa63b","tests/macros_test.rs":"dd28c1f90676230285ed2aad7e760e43d7df38d18ebba3fc8c7c7957d309fd72","tests/macros_try_join.rs":"08d723892038e36c39291b112a4eb16e4c1d021522cdee569c1209e02f1f4b44","tests/net_bind_resource.rs":"3fb8060945e26c6b38d28115a984ed17ec89e8313568e88014d3bb3dbad60bb9","tests/net_lookup_host.rs":"a1ba4c6100584f3ec706810c9a4313875e8cd0bca13531bc7759d8ecdf0189fa","tests/net_named_pipe.rs":"dfb791caa5a4ed1bae0605da27ef599abd8cbe745c2fa95a31853bd46465b042","tests/net_panic.rs":"e7382fd76c8e1f9744e9f2e442ef259cc9cb801429998ec3b00126cd8739911e","tests/net_unix_pipe.rs":"6b6956dd7d584fa18309fc8c86a74f5270c9fc2faed2f5c3b722c11e93419abe","tests/no_rt.rs":"228964501f3a7b0eb3ff12adb29dbf6296006d05d04fd2f418fb1f1f015dfe54","tests/process_arg0.rs":"785d801cf281230e3208512820e7d71b4d8362b8cf33fc72235da370e10983a8","tests/process_issue_2174.rs":"66c56d8dfda4e1723928da713dddea8d15774d6730398effadf0ec28f4c6f1e1","tests/process_issue_42.rs":"26043f8246b00046137551f7a9f638652c70f527f10b4d91e4286643120ca41d","tests/process_kill_on_drop.rs":"9b4bf8a73769fb268ef3687141e8df6122814855d3bbc4e63295c66b0ee6cff7","tests/process_raw_handle.rs":"aaf0dc242ce69f1a8c614e04515c41584f7e213f84ebf23238521eb881e0a6de","tests/process_smoke.rs":"61cfdea779ea749df9a30d136543874e0f1b979b85931728c75a44b70c55658e","tests/rt_basic.rs":"6e40762f7b772f4aede9197b9e82261282ec3fc6e0b55bc473a535104f99669f","tests/rt_common.rs":"e9b582fc530284192e6edd79409b5e1b03caa4f057e5203332cb74a3b01f9cd6","tests/rt_handle.rs":"3df11420510cd2a7218e17a78f320a746e65d3f2bfd10292ecb1460fb82a49b1","tests/rt_handle_block_on.rs":"2afa6806468f070c5b38d47bf51dd51d25e75d3f9098cdc804a7c2ca533199fa","tests/rt_metrics.rs":"e2388929c1d80464372dcfb7e39ee9c23109f7eb920b9e87a5d244426f516d18","tests/rt_panic.rs":"d7f54f60d0305b344b2c30b940662cb75f9f000c2ecfed58c6e8b427e936e787","tests/rt_threaded.rs":"e10c56d73f6af20e70e340ca2132844d1772c8d6abfebf03b5ca611e57a03c80","tests/rt_time_start_paused.rs":"76549719f16e9cbdd9a84b9d97929ed7c8ca95b8d4d715608eb99f950cdda7a3","tests/signal_ctrl_c.rs":"9b53065781b37f3db5f7c67938239b0f3b0ebbc5938c14a5b730ad7ec07415d2","tests/signal_drop_recv.rs":"d1ec97213d9c6fd9fb25ea8c2b015c9e9ee1a62fe0853fc558bc8801e5a3a841","tests/signal_drop_rt.rs":"f968c1154262a4427b5aad2d9fb36d3b7d47084312d0b5527a8eb3d589381d8b","tests/signal_drop_signal.rs":"041940550863250f359630dc67ef133874d809ddaf0a6c1238cee1565a19efec","tests/signal_multi_rt.rs":"a1c50c25f4707fda7665da61b3317dd61fc32c63c61db2bbdb56065bd9c591ce","tests/signal_no_rt.rs":"55b9d96355e1c4177c047ea01b78a5514c34e1eb75e67d8d99b65605c2df206c","tests/signal_notify_both.rs":"bf0b9def20f530d146ee865305833d8e9bee07a0515e66573d7ff30e2c631123","tests/signal_panic.rs":"0b26845bbc7f388346e0fe3af98a2257dbfd0eb84168368994a0857e06a42398","tests/signal_twice.rs":"bce33093eed151955d13c334d6d8a5bc5ca67cf5b37c246e435a24c15bc166a0","tests/signal_usr1.rs":"86ad07594b09d35e71011d1e12a1fa2c477bfbc4a2a36df1421b6594a0930074","tests/support/io_vec.rs":"9b3001e120138ead4a63720019c669ff00f8455a74dea2fb231633b3b58c9b09","tests/support/leaked_buffers.rs":"85ddbce3ff6b0c5cc8cb30449dd37e5bfedc94f8357e741ec88ff04462bc60c3","tests/support/mpsc_stream.rs":"00d48122fa2ccbf1fe0b110ce3cf22590eda54b3ddec0134b1f9376eb1169645","tests/support/panic.rs":"7bcaf8ea2d249b5c1acb3c1b769cbe479834630dc71b3ce1114b8b46277f44da","tests/support/signal.rs":"83531afa2e8e71cfd90cd4e1fc821490ffa824f0f9f0c9c4a027c08fed6b8712","tests/sync_barrier.rs":"e6d44e5c2da6e055598513781bdee6a42261e3f7ff538c925e07a52866662bd0","tests/sync_broadcast.rs":"eae02f0ad50141c36590a01113be82de382592273a55584a545ffd1eeb431533","tests/sync_errors.rs":"40c3ff2413dae2efc7abca7e84eed5023f2919108a5ab96bee1bc46b98b42449","tests/sync_mpsc.rs":"754ae8ad77f38fae2478ac016239c4c9b6e64e68e4764ab721f6a513dcf17482","tests/sync_mpsc_weak.rs":"868efe2c82c8c3232c1686bad41101486bc74a552bc7dd0b32e1633f272526d0","tests/sync_mutex.rs":"4355a738f2868f09ba0b376a82dbf0e8ab9a83225bd21e80e16ea7c34392fae8","tests/sync_mutex_owned.rs":"38ee9abc16c71a9c9eee5b74a17bcda588e93cb17a60dfa9a4d7fa6e93c8700a","tests/sync_notify.rs":"f2b6077a47bba8fe285970fc3e11b46fb9be1024bd3ba5b152b9c199c2da905f","tests/sync_once_cell.rs":"dc68e3643ab6a95f37e12dad9e8eca757dd3f2448e74e5463686c9a7e8b981bd","tests/sync_oneshot.rs":"93cdd67891fe501c2b86c1f7f1814b6f0b3f16b2877778af2e36cac141ec99ce","tests/sync_panic.rs":"5d0b4515bde6bae58131ea3f7c792b1faec7284924161918acf4ceb768bf4917","tests/sync_rwlock.rs":"f06683b9a95f3f9f12be06afefabc7cb0de790d9d79b4a1d7f3f7967aef1bade","tests/sync_semaphore.rs":"ac9102c51d2bfedb7afabe5a751ea58895ba35816639ec977f82a26f3d9ae56d","tests/sync_semaphore_owned.rs":"98547cb4b4e33409b7cf30e9db0c30e06377e77463dd31d03d3d3fe35f9a662f","tests/sync_watch.rs":"6718eedd56bc3107b1c7bc01ea059197800a6cebe1a61e74bafb0c450d137e7a","tests/task_abort.rs":"dc10ad424d4be12a86722ca181c3e2d93cdc41ffb7f27c1615f1c93ac1b11e94","tests/task_blocking.rs":"307bf3c4764936712b456c271f15b9c527001fdebee58822e74744c8f3e951dd","tests/task_builder.rs":"784830b868e9fd7b0d9413cbd7719eea7606c62dffaaf59986ed3e7902e9a3e5","tests/task_id.rs":"118bde53222009e4277fe4747ffde18f5acb3db17db3036b4d793200fa8f2a18","tests/task_join_set.rs":"f5a5708d4ef3bbf291b1de41ff54c30f37d7479b6087089a6c3a463e841828e1","tests/task_local.rs":"60cf924729be40a7f281def7911f6f6969c349af3a8a10c22fa4c94dd60b7e86","tests/task_local_set.rs":"5ee1c2fb426b69ad682567d91110c6ba43f04ebc6665a03ba4fb84a21c6c7a70","tests/task_panic.rs":"f4867fdde7918312ee493d263ae809ae3903c8c73a7e0ca6b8f9951ad55ef23f","tests/task_yield_now.rs":"dbd0f342129b2d06edc0daee360731e5adcb2e3a19f8d658a2cb510490d7fa25","tests/tcp_accept.rs":"5d91dbca6d78e176d62a316bd40818efa37e73e6253d1c9c31d5620ddc3b33df","tests/tcp_connect.rs":"a592530fd995ae5d119ffbf16c488875c944518c2c7b8c6ba7356ccd9d9963b5","tests/tcp_echo.rs":"5263afeb2499f4ed80e05bb19a68c9c407b798686715d53595c10beac6229193","tests/tcp_into_split.rs":"78df4144ed605dc65d20737281e6de10c9d4b750cd51ca8d4b03ef4d5aaef7e7","tests/tcp_into_std.rs":"3dd28d2a7ccfaa1eb74e321b08c05e1ce5d015d3f05f22a95f949b3acc5280ba","tests/tcp_peek.rs":"fa7868cee7ab85e5fd657c8b8fa1d947f63cce0e328d40c36ce6e5e450a13bc8","tests/tcp_shutdown.rs":"ddcae943626b44b74739f66f409092b05d303154041580c1bab319e02ecbb051","tests/tcp_socket.rs":"0c42454cf4246557daaef5d56e396aa6066cd4cd91ebb1cbc84be740f371bc0a","tests/tcp_split.rs":"691d578e4ee527674a6b800246dd48b12f1145a478b5e07f12f91c4a00c3ad2e","tests/tcp_stream.rs":"417cda921374da15359d7097daa24e8d32df2417efab2cce58f0705979a95a29","tests/test_clock.rs":"d5c9bf7bb5d926e2b29b43e47b5bb051b0f761bfe44d5fef349ed442ea7b416f","tests/time_interval.rs":"5e36011d97bdd27aad7c9c3a3da59190197f290543f0bb91cde331ffa67047b5","tests/time_panic.rs":"86430db173ddedd858bc77abd8d2a1394fdc74dde01beca7ecaa95f1f4274af9","tests/time_pause.rs":"457913a8b3d801291a516db1a6a31ea83e54cc89628b08fa7e49f7ffc5df7836","tests/time_rt.rs":"1687c1635695791fdcc4b536fa7b69410c4e82675b693f486ad48909f8f55b67","tests/time_sleep.rs":"2c57177a7fdf108e9a88f6ba3c07230bdae6df745856d01a5da09a217d2032d9","tests/time_timeout.rs":"1c1b44da8e8483f5df2e85892f3e88b075674a956ce91ea7a637772b8e6ac8e7","tests/udp.rs":"af5c73e42205aa9c5ecfc32a0c9923b8d92bb9735b5b100f6654150569a0a835","tests/uds_cred.rs":"146c6e9bdbb82a268f178b03575f94a40db81ef67a740dd16ead5b9e4a447f1b","tests/uds_datagram.rs":"f8d886adc6c3947960991392cd8540a0b4a7f7b0110a24d10805237b385b49f0","tests/uds_split.rs":"79d54d6ce35e5d15138299091871ecbdb6492ae6863fe406021fd7359f1ed7fd","tests/uds_stream.rs":"287b7d5e297df3e326488d98f9645ebfcf8be0205ba6a8e5ddaadac58240e113","tests/unwindsafe.rs":"86b71da9e70b53df8be1b80188b38cea4693f96f2a3006c0143c03555a5ff12a"},"package":"532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da"} \ No newline at end of file +{"files":{"CHANGELOG.md":"208e9421c33fab4054df032f2867fac386261ed59f91c50bc9099996f2534765","Cargo.toml":"b6a2f2d96e73d8820acff6022d6420f516b95450a0cafd2cb7ff7f873c18d494","LICENSE":"1a594f153f129c2de7b15f3262394bdca3dcc2da40058e3ea435c8473eb1f3a0","README.md":"4ef0bc3b9a8381b0141f6e2dc7f56cb93b8dbfbf820ef1396e44df31c7c2fe38","docs/reactor-refactor.md":"24d4f3ec6d8828bb96afe0084df9e7739bbdf1995283dbd2cd76740311485b75","external-types.toml":"d808de4bbff94d5ea56f1b1783497b0c6cd107534853aca8c79ee8404d8c2399","src/blocking.rs":"8e62b2cdc512fedbca4b4c4f983629af035afea4ee7e918bb1a3e9851c8e034e","src/doc/mod.rs":"f54f0d17974e68bd93035137a36b216dad05402cd4f3f64ea7e0008e7c309858","src/doc/os.rs":"9de68b5ad2ba2783d76f7b92a572e238705ebeea0893a10f21c755ea884a58fa","src/fs/canonicalize.rs":"93c64b72abdca17877d6ab61d50a43765d6aef9e0a9f7aaf41b6b0b7d9a8a380","src/fs/copy.rs":"262180fadc66e5ac2bf1e8389628fdd039f14788e66a4f8b10e10633e7310f20","src/fs/create_dir.rs":"233cbab2579a787614aeee88845a57f1578e9c2e064a3456c799f61430e911ad","src/fs/create_dir_all.rs":"56081d541caadca0fc59e84d55e78e702fe9373679598016224ad0b072b189a7","src/fs/dir_builder.rs":"b5b21229c7bf15e2074afab1accfbc392f3c69e546c7b652cfdc8e90d5a4a301","src/fs/file.rs":"c31deebcea93c15ebf2e2a5606c52f1ba6a0ac57fe37b69b0984253b6f36b0f9","src/fs/file/tests.rs":"014b0bd871a58d42d8b97cf2d860f83693294f935c808f1406f4b26e5d09afa2","src/fs/hard_link.rs":"98cccbbb3719baee11c232e79723ab1cb3d6c8056bddb109c4990fe2c236c1fb","src/fs/metadata.rs":"782a1a5dbc2cd6c40e928579fbfcf39e5f1de28def78781590c0280acdf02960","src/fs/mocks.rs":"d3718127d1d0362253bc7c7ca4d6abd21548fe69296291d1ae12a97ccf7fc196","src/fs/mod.rs":"8743addab538366cbe90b43cb233c54e1be524c173b9e659fda4fe9fd78060b2","src/fs/open_options.rs":"cd8acd3deaa339f38cbe14b1537ca4b07b9830105d3b385d965585330c824304","src/fs/open_options/mock_open_options.rs":"60ebc4bea76d742ead8fc5b5f4079450eb2450ecfed5f83d7d89cfe148f4ca54","src/fs/read.rs":"055ae8b6ae96ebae2d05f8780e7592bb587a742506c6df8ee8b380fc7d2820ef","src/fs/read_dir.rs":"3d67be6f69299cffe1b6403a0cb182f76bc576ebd6ae8722a2e0ef47a8f912ad","src/fs/read_link.rs":"93c104a21253372fef7056ab82e6065b0a1a8fc9be8b7329dfd5a8dd07c618b0","src/fs/read_to_string.rs":"9e5b2d476a6084e32a92c5421a8abc9d4f335f4ec677beec4bf8bfa109d7d106","src/fs/remove_dir.rs":"96475771e9c52678768288d8df6814216e0801bebc848481597ad34e829a5854","src/fs/remove_dir_all.rs":"b85abd05c7ab64ee8dc6cf5663a11e713aa51b357759ef660ef3cae3365ccc42","src/fs/remove_file.rs":"1cdf8bf16b3a164c594dac8773b7d1f9ebb28de169343184d34d6aac3b3a7eaa","src/fs/rename.rs":"a97875e92626fa46e23fece7b8698c9c4cea2bae8f1be8726f30ae6fe80ae0c7","src/fs/set_permissions.rs":"8adccafa475dcfc1bc3989af73374d90683c1be4953ef812e5fd606f968d7b7a","src/fs/symlink.rs":"32cf3e906531d30ebe6d8be7ee3bfe049949759b566015b56d0851f51abcff50","src/fs/symlink_dir.rs":"66a6655f5306854a7b6ed3748598bbe737055da9635bded715a04c3abfacda7c","src/fs/symlink_file.rs":"ec5816344f8c0b79c4d84e0ef2a987d753c719afd3bbc0d0a739224477a9edd2","src/fs/symlink_metadata.rs":"f5ce1e05f137da995e3e0d9582bae0a5f7ef4251285c64e912b0eedbb068b395","src/fs/try_exists.rs":"c666196690c4d45991374b03b27f0838b33e98d0be2838638d4de4ff856894b7","src/fs/write.rs":"1ffb734d31748bd879ad398b0fe99bdec569782b42677022957db2cae95c4d2d","src/future/block_on.rs":"30bad79b005a1ba7f696bec5639a5886b1f653a152b8948ae5fcd287c05ab8db","src/future/maybe_done.rs":"9042619f2a907e81763ac6082c080faa28af5d571dd49e82b60f3f14d58598f3","src/future/mod.rs":"6f28857347c50cd6467f1ca7d1b1028b633de7d142c3f3ca710a8693d1e839f9","src/future/poll_fn.rs":"b3c0eaeb442991d3fe27f53f2c2849f5f40b0f974035036c26661bcdaffa09df","src/future/trace.rs":"c42712a8d372922eba7e05cd21382fe5df5eec02cbcc870062100b59ab99654f","src/future/try_join.rs":"0ea5a069b17a34bbc091acbd74b9d51794a55a85dfa63fe2404d5ee91a4f0038","src/fuzz.rs":"db998767c729f35320b1d489f43f4d7788e989c8d16c0793188a2868207d8e25","src/io/async_buf_read.rs":"b37caa8f6c974b3c97327c635218803e573c531d4197950840549aa794357c99","src/io/async_fd.rs":"b54c4ce53bedcbdefd6525069ebc69724e95a490e3c685ac445c42da19eba1bf","src/io/async_read.rs":"f52c8d2f4a283c0dc8d06dc974484749973125b0b691bc0c3d100972ac67cb92","src/io/async_seek.rs":"a9a0df389ff2be3d79208ec475fcfede46a86f6ea0b822b1a4ce8273ec714b0b","src/io/async_write.rs":"198ed6a475b6f093fd2ff15e618d816d7e33cb8bc28d2e2299533e5df0bd78d6","src/io/blocking.rs":"b94dcac1e0ca315b356e7a71e5d71696e79363b92480603e699051e390b62873","src/io/bsd/poll_aio.rs":"45e818a201c8dce93f612c7856ba4259724d2c9fcf341001eb9833f821f16f3f","src/io/interest.rs":"66b1d4cc325bce46888887b25f3bffb2cd398bb96f659edf7292b2f0f8ce167f","src/io/mod.rs":"d9b04c6badbd9317e6f02f182d7457de3429f70ca74306f6895de73828c37b2f","src/io/poll_evented.rs":"d3946956bf3795297e67fdfe783b4cc19e4a4310c23db2a8abbc12afa6123faa","src/io/read_buf.rs":"14f82f701d5056d1d5581c70aec98f7c6d287899df45e4b2e82388e7c97cca57","src/io/ready.rs":"85fc7a192552607acf6623e1f083b4e12447067bfa57fd667fb2c6e9fce7a4d8","src/io/seek.rs":"e9e346fc926c3360601b80a8319a25fd0567dd6f77fab666694e9787deaef633","src/io/split.rs":"5b1be9d1bfae72e483d02fc3b341ff13829c1fa67b9d7ec1481769aae91ed27c","src/io/stderr.rs":"6490414b47ea05a7dfd0001f864f9cd6dd236f70d8ae9acdac5d3590b2b04495","src/io/stdin.rs":"7c734283ca48e13db2bc4185c5f4ad811b497094598e3c0226a85f46ecbdd843","src/io/stdio_common.rs":"f8c72bddf74e48af264676b36470636c16e227b46740c46d44f6b21b2a44bef8","src/io/stdout.rs":"9121ce7c88e83659a1984dfce781e259d40fcd90b254f28dc03a452e7fe9cb92","src/io/util/async_buf_read_ext.rs":"010e722194c93d56dccc8794db9f73954ff58e87364599474c4d97398f4bdc99","src/io/util/async_read_ext.rs":"5c2a884c8793bb727de725298de87048545ae69c56378d8d6e196f1726583fd5","src/io/util/async_seek_ext.rs":"0535ec6139be7ea68becafc0d374aaf9d996ce9cbe5dca0b8e70b133a661c1ea","src/io/util/async_write_ext.rs":"b5ae408708110d8f45af4cd54e0182a36b28c57fa7f97e89787ef1df85ea85d3","src/io/util/buf_reader.rs":"670a58f404e5689daf1f2b3070b0b9e95fef96ad19f0e8487f294e8a2afe558d","src/io/util/buf_stream.rs":"2246fe71b707c15d7168c5da5ee158cec6e854d4fd11b685531c16a9c3cf2c6a","src/io/util/buf_writer.rs":"f9c3e018c9f9177fb6d910096503caee727bebd3c36f5f67dca2c4c55044408a","src/io/util/chain.rs":"5cd8df2cc7bbcd18ca2336a78507fa8009c0a9e595f81730a8c16cadb8f731a2","src/io/util/copy.rs":"f4c7d59736f9a6d8a1efdabf9685dce2ccc3053c5f9578d3b3aab4be58dd5c8b","src/io/util/copy_bidirectional.rs":"89a5fb3f77e9863c9496c02afc2613fce039f47a1b2322e6221dccda8323f80f","src/io/util/copy_buf.rs":"9d83771a6edcc6d0d32f066072e375634e21a13517968ec9b21a4edddbcc2605","src/io/util/empty.rs":"32cbcfa8bc033e7ae1cd62505a84125750d1abccd0c37b2a433c5eb80db0f0f6","src/io/util/fill_buf.rs":"223725d828071e923f25d2d49a0f6e470c411a6d9ba225700f2dd8d5793601bb","src/io/util/flush.rs":"fe3b4ff226e294843b8cbea9dc4e02d581582b78ddaafce137c96e290699c718","src/io/util/lines.rs":"1d9f9b99567111c911e72a4caa2abb19b277f2cdd0ca3268ac5ca6df5276259f","src/io/util/mem.rs":"5089e03d72b2873ab3f56cd86944e6bd29439c427219cb090610b5b4bf032fca","src/io/util/mod.rs":"6a9012d78fe2bed8240e7a628e9421cbef45433551522624065fdcbb329f3594","src/io/util/read.rs":"58988c3fbcf5ede633dc224d7df5a372495c4485757dec9bdbd825138bb7f5d4","src/io/util/read_buf.rs":"a87be2d115c09a6782ec8cadeafc92fb1fbe534580e71540087c3298a03bfca2","src/io/util/read_exact.rs":"4a8650fd7a885963a0fef2bec24c17046c5624e4dd7fe229ab3f33c4a92fc66c","src/io/util/read_int.rs":"49da230796335df584832cd7deb8370b4d1e0350d743046389a9d9ae17dbd94f","src/io/util/read_line.rs":"9cdb2d778b81bc50098a6851981ed9f541bd0c7896c0763b811971b5a598b7e8","src/io/util/read_to_end.rs":"1c061665818a4ca9632403aa95955bc435f4438c6d6317370ca728fb47acdbc5","src/io/util/read_to_string.rs":"fafb5463b013cc8f76def3a505dbebd179afc95bde0e2ca9388e428265788924","src/io/util/read_until.rs":"d9a932dfb5ef3d0d5e8faa72a2b3b9d1765c85599f3bc77741f69e7fe9c0d037","src/io/util/repeat.rs":"d4effcd81338831eb373cf2db972a99218b8379b91066940a732edcf4524c7c2","src/io/util/shutdown.rs":"971454342b4636fbd68e123d59d87017d81f72afb410c385846069b11def8efe","src/io/util/sink.rs":"0dcb794e48ca9b1c28e5f9f2051073ea0951a54c9c7dfc903ce9e5489d3d8cd7","src/io/util/split.rs":"03a59adccda29608886e38a1f484fbd4d6a6019180c4cfa851372d250796aa5a","src/io/util/take.rs":"ef080ce27d23cc23b9f99fe14ddd56349a3cb1442aba18f8405c30d20017b074","src/io/util/vec_with_initialized.rs":"f8673705967021b5a3cb819d672df89ec81eb5baabb48de7bb598d53352b62f8","src/io/util/write.rs":"20d14ee545ab1f67732915522e97808d1ddde13d151505c1289b596be519f7c8","src/io/util/write_all.rs":"906ff3fb24c6a979b104598f9a8229421bcaf2a4218c28069504b34a218241f6","src/io/util/write_all_buf.rs":"5911bf673ef89097938f4e2e38d9012865b28a0ce5ebb217ebe0e2507de6c1e3","src/io/util/write_buf.rs":"ab51d6174de24cbb729ce77dbaeea27e16059b8253e4830d8243ec5f08a08a8c","src/io/util/write_int.rs":"f321e69b0c7c01728b079e9fdeedb96c26475667e8b259d0c5f4a83d060990d1","src/io/util/write_vectored.rs":"7a335a9f796daa048fa9708dc44d32d2567b36461a6d88f07893eb31f304b69d","src/lib.rs":"28bbf0952b3de36f4e205c2fd1b687a5b9ddcbc08a7616fec18802a81fd1b698","src/loom/mocked.rs":"5b85e97fcee3be1b0443b5608c7fe909b040bac463c94b817ed6b42bfd8031c3","src/loom/mod.rs":"b14b9333a7a21bd125a4ae82f01e5ea9c9ed2f78d7d1ad49a13d9b176f1fe8ab","src/loom/std/atomic_u16.rs":"5aba33a798e8a95129e3fd039e4412322e25880003ba782031df9faac3dc93e1","src/loom/std/atomic_u32.rs":"7fbaa448621371cbb9b8dd882701236b41bed599d69eeeb0a1e25b2a9a4645ad","src/loom/std/atomic_u64.rs":"2d98d1608058f3248d79b1e9c96118627fef6362ccfefa77047be2e5617d7571","src/loom/std/atomic_u64_as_mutex.rs":"1a6b9f8417e968a78dcddd8c7c320c447b9f27d5f84245cae86c3ef68425c749","src/loom/std/atomic_u64_native.rs":"559e6fd21e678b904f5a905f2756a4a8e32ca68a8c7a9b4344af86979373cfa0","src/loom/std/atomic_u64_static_const_new.rs":"a1c0e7d2ea28904ae76227baa7da5da33b68257f4c1a7a456f8d3171529bd934","src/loom/std/atomic_u64_static_once_cell.rs":"92a25654dd8232f6c02c8ec58d4f706030db442fb2a5ba07f1aec09149559725","src/loom/std/atomic_usize.rs":"698c0a65ea4d1ad05d49770cef2614cee643794be4b6208ee071a3e381201349","src/loom/std/barrier.rs":"1539e5773ad0ab1936e8a9a6cf5c20bc697915abde15b3e0898615194eb37fb0","src/loom/std/mod.rs":"22da677018c512c613226a991115c35cef6b02da6ce43fb9ce0530f3eacf2117","src/loom/std/mutex.rs":"ce413b7819207a93d93984811476b4902e39ad172e8dd87fc3376c2398c7044e","src/loom/std/parking_lot.rs":"16b82f1580b4cf5949a9cb9ebfa2c11d98d91f97b2b2f7b6f90a213dd736985b","src/loom/std/unsafe_cell.rs":"789497164c351a563293d82edb82180576471b92ee3aec77de1a92a47423e390","src/macros/addr_of.rs":"cbd020a07ffba2b1c608856081499645cf606cb45444dc53d94457381a94bc33","src/macros/cfg.rs":"377b9afe24981c9b1f461d95619bd5ccb2560544c43515648d99576655cee078","src/macros/join.rs":"076dbeed1cbbb292e39012d18c0d1c97848bce48c4609b23f327025989b34a8e","src/macros/loom.rs":"bee8a86b0b96697cc21e4b5e9f1a3403c1f9dbc8c4e591a2ea91f51c2469d3d0","src/macros/mod.rs":"913b1382779ceedbd13606e429f59b9c7ad929324f121452f47773c232c3303f","src/macros/pin.rs":"294e5644061e41801dcee5494b7334439e09af0b6219ce164090feb624864631","src/macros/ready.rs":"6efd4c866c4718c3a9a7b5564b435e2d13e9c1ae91fd98b1313d5e7c182942d6","src/macros/select.rs":"4d9588dd514cf9f25b8c3c76ab08ad141d8f7ed1acdd856c6418946edd08f055","src/macros/support.rs":"da976befe4ba4d29e96f0de24cafe6e1f7f97364274e240556a01f2af77314de","src/macros/thread_local.rs":"c03b4bd975825f89feb0a138aaa5e3413ee8dbd6959a3d25ebdef8780126464c","src/macros/trace.rs":"33befd4533a3b2b4b22e246033f2bea8930174a7da58adaa57dbf20931275bcd","src/macros/try_join.rs":"2233cb76a6ce35d020ebbb8a0b0d713f01c0b6fd20fd878442bcca688c97ed6a","src/net/addr.rs":"0ed3d72ef6679e3ad76c6830143713c611d357ca4ece88c3ee5ceb2787217224","src/net/lookup_host.rs":"c7a21d735225e316253d822f6b11a17107e6a8db004f947a54d8bc12ec782baf","src/net/mod.rs":"301307d5a5f8c783418646ef9f7712414226a73061a691b468e0e3ebb7eb4df9","src/net/tcp/listener.rs":"8ad5e1193b3d306f5f9ce7a1ad02dd43aabbbe26f9c407338d49d23c35c3bde8","src/net/tcp/mod.rs":"347182e4f0381896bf3b7ab578c4564f1730ae25a108076ec65b8e855683fbf6","src/net/tcp/socket.rs":"fc3030f5ac54a0fca7feb2e97b27837c191500e8d7f8bbd68e18a05added25bd","src/net/tcp/split.rs":"75d1f6c4afa23397164a30c4409a73c8d3df022c780aa4f91fabfa90549cc606","src/net/tcp/split_owned.rs":"0c5a9f48e7e49c257c25e138f74c0c5d3402edf447a860cbfc1a36439d997295","src/net/tcp/stream.rs":"d1538abe1605e5471a2851a9b65d0eb0d997bc1f6279378244b52344bed392ab","src/net/udp.rs":"088244bde74e946856f41f28899708aa1977b31d4c682a2465e1ffb78e3b48a8","src/net/unix/datagram/mod.rs":"fc48924e5d1e551405b0708a2d122473cdafeeee802a5722f64b4cf41a1c01da","src/net/unix/datagram/socket.rs":"23bd655f5e0938d934714904b7221e4c1456d611cb76f7bf46ee9379f8b70295","src/net/unix/listener.rs":"af8488a7efea8f6fffc36d857631e7452125a5263bbffd3fbb9263c405ea898f","src/net/unix/mod.rs":"72008ca5352432de2203321244da5377afe5779ac15f5f6a577998c037e7e4ae","src/net/unix/pipe.rs":"203cab9ee396bc3452c879d24bca59b8628a6e76a1098770dd9043c90a46a31e","src/net/unix/socketaddr.rs":"66bf18321a81baeb394a7094567632b113e44e12d2643109b6a97c89d919bf3a","src/net/unix/split.rs":"bd0388de8b6035b8cce2a34989ff56304697ed6864615ae13474f4e9c504faa0","src/net/unix/split_owned.rs":"5eccba5c1d589af4e5b52d17410c2290c289db5583676cf016de93ccabdace9e","src/net/unix/stream.rs":"5fc4926d83ace17a11737a64c03997b0e737d26f1b0cc66dbbb037e438ac2740","src/net/unix/ucred.rs":"48cebf377e3e406366c6da9305197c53fba057de28bd93f5b534c1329d854eba","src/net/windows/mod.rs":"a1525f35c1acb92b15bec788a625b76acb42f9424f392074db697102ce79760d","src/net/windows/named_pipe.rs":"f59b2f22d373698d5859a8f20f2aff1190e6b77733844b7f5a50f9fd28b81093","src/process/kill.rs":"2f98bd1bd28ab37bedc34ab7b737760407ab5315420538acbd18da31d2662d94","src/process/mod.rs":"439048f3a0f48916ef59c3ff024dae69575c98aab710e9e61d5aabbadb9cc195","src/process/unix/mod.rs":"44d936079ea6ee09113e9948f5f4cedcf0351050ff54c4949922bfa53b3a7de3","src/process/unix/orphan.rs":"d641d9dcf41b0ce26a3ccc38e2e8d3cd505c060a87a137fa761132e2290bd886","src/process/unix/reap.rs":"62868319849b8482d8d927dcd00cc8a74b9af61fd47494b39bd41fe2f4dcf0b6","src/process/windows.rs":"7a47feef09bd00c701bacf6239dc146def081869d0ccaf4172220c9bcccb9bdc","src/runtime/blocking/mod.rs":"3a1e04d2fc5590c7c0a19c85ecbd893108f9a81b197162378c525133c3bbc7aa","src/runtime/blocking/pool.rs":"b61fe8afcd4deef0510e2ff84e6c874901d8f4c371bcceedccdc9261305d0d0b","src/runtime/blocking/schedule.rs":"8768ca9cdefc1b765f8915cdda096f7e5596e12c8181a5d90ba4a6b6cadd36bf","src/runtime/blocking/shutdown.rs":"6eaf2a1418b885bcc1ce3f257b99382de9c16f848ed53d9e00dc97389bb6b816","src/runtime/blocking/task.rs":"08571bce8a99dd6296ba7099c1f6da8c832d13a8c43db22044c683470147d7d4","src/runtime/builder.rs":"4a593b13bbdbe8205447d3087d1d629127c3dca38da0a4592045059cc0479b05","src/runtime/config.rs":"0184fae982b428993a92e1651f5c0918fd2f62a1113b67dabc444304e700d1ad","src/runtime/context.rs":"b2c974ae63995a4b7f81f5f2fcad429487659fd7df462492f52f5fcef76afca6","src/runtime/context/blocking.rs":"82ec6b5c6b0ce7b18582cc931e9cdd6d5946366cd676c9e6bb0235e6e8471ed3","src/runtime/context/current.rs":"51023fb843227d82a4c8b7a093148a2b36306f398e2770026d5d1e0f296e08dd","src/runtime/context/runtime.rs":"df7b8deca59426ac39d6950b518172ff7a7ef306c1681187a4d3b1f22168984d","src/runtime/context/runtime_mt.rs":"911b95f39dbed005a02fde0394bd74c02e14e5b9f5c98bf49511f6c68ac5dac8","src/runtime/context/scoped.rs":"16bfa1da16baa831cc926c41df869b99bfbc6d96cf39a04aa4914a9e4b19a2f0","src/runtime/coop.rs":"746b852952306f05a4da31243cff626b5c39b6ffdc4a6bc1c9a5a7c7fad5e103","src/runtime/driver.rs":"2e9640d81bb8adf0a471d58c321b5fd50586d9c986d52e4f454fc0cd85c71f3f","src/runtime/dump.rs":"de53e25c28c362cc8bd4f321d23a7c5c8a3956ed3a2ffa4acd4d62f6397ab9fd","src/runtime/handle.rs":"0cb8587946ddedf134734445ab789dd4554ee353bcdb4434f09d5fc98b23b23c","src/runtime/id.rs":"c43d92101ffcba10a4eb7a876910ee4944b1f921a89f7e44d5889776bdb2e19d","src/runtime/io/driver.rs":"5e63691a3ad633200b8aa13669fdcb38a413e3160ebb9b651754fef24c4fbe94","src/runtime/io/driver/signal.rs":"2e53479e68f48bf39c8cce92f0d12422bf4c68d931e741aae8daed854cd3f6ac","src/runtime/io/metrics.rs":"e711c65da155ef73e567125c0c9db33b2f511982a0c0a6b4f3b37c2d87c791a6","src/runtime/io/mod.rs":"270fead37871b8ee185e2e6e7adccb564bc8f2a0a02d693657afa76748e8ad1d","src/runtime/io/registration.rs":"7f9256af455e3d3a9b4db4cbb18ef14b3cb67740540af8df473931bd69db6411","src/runtime/io/registration_set.rs":"df44009a88c17b6a122ba6d2c8c5bde11af2222b3b8d0003a3d990990efcdde4","src/runtime/io/scheduled_io.rs":"30b171cdf036dbe93331d30c67b0a2b2358589625f061f660cda669cbffa38ba","src/runtime/metrics/batch.rs":"68fd84f0ccf135b10e2ef44c71c481129ca608005751c76deeae820d81534f2b","src/runtime/metrics/histogram.rs":"1d85cc2e6e1ef02b2cc4f2c627d5405d603742b995dd3ff23909a3a2fbedc8bb","src/runtime/metrics/io.rs":"960f44573cd16e2ec43ed872f235ece09db9f4c87e217002ae0d180e20ce9838","src/runtime/metrics/mock.rs":"d18d2ebbea8e4e191ab3ee77e2604a49e1597d1f6e858a2500bfa7e438176e76","src/runtime/metrics/mod.rs":"6c690fffe34bac1267eb3dc0ed93481874795d2fd2fe9f495859fab0866fb814","src/runtime/metrics/runtime.rs":"2123f97e744610fe30de8aaf3e308a22fe7d166f73749858eef59883cec3ce5d","src/runtime/metrics/scheduler.rs":"997ba0339af84ef878881fdb6f35d8f6b39dc81e8f0b5cafce94476d50675c91","src/runtime/metrics/worker.rs":"84725f923fa65825a74841f6b3df06e100a838da61942f1113814496f896cef4","src/runtime/mod.rs":"5509476a72103a3939fc9fb037b352644462ec246748bc35a265a30c2e7781d1","src/runtime/park.rs":"a01589e5a164a9719ed8613552c9bea805ca96761b79cfae2eb30f002b694cb1","src/runtime/process.rs":"f40854b46e5851d7f5ee10f50d839aac933343c2178508f419c8e41dc60557db","src/runtime/runtime.rs":"b312b5da72b47fd98dfb836e2417a1121c9c86021f8a3a697763da7cc6fddcde","src/runtime/scheduler/block_in_place.rs":"38b87ad398cae4e48bfd2afd9e2e9a0af1ee34c379c781d749d38cfe5fe8bd29","src/runtime/scheduler/current_thread/mod.rs":"b9669912fe5ead3a70c3f3892fb2435b5b6ec92b935f9a82e44fb522d95501c1","src/runtime/scheduler/defer.rs":"6124d19b90b56db1aa0688ac0e4af964a6882a51814b0065fc80d3cb6398e98c","src/runtime/scheduler/inject.rs":"fea0cf9dba0e72efaea4671a1693fa5bc68aef376d9773407855551951810426","src/runtime/scheduler/inject/metrics.rs":"26ee4f9d34c9d670eb75ee8d02a6e268952a1ef698ab3213d71873a97ea2c851","src/runtime/scheduler/inject/pop.rs":"335b42278217a3020ec1419d070132f8f5a0ce832c504dc7806c42821848be83","src/runtime/scheduler/inject/rt_multi_thread.rs":"d31776b467009c63f7797fd8caf3a2b1a78023e96e41d1f49d01bc4bda65cc26","src/runtime/scheduler/inject/shared.rs":"6fdc9c11674c2e83c37721ac0c30f0e7d23f8af8e4c4a4ec5f18e276b80e05b2","src/runtime/scheduler/inject/synced.rs":"b69a737bcba7cd27c660081c57c03b3672502e2c358beece0d4d8c9815e8af92","src/runtime/scheduler/lock.rs":"2aa5a50067dcc79d66ca39d1e4982c28f55bdcec43ddd7bc91414de5f794019c","src/runtime/scheduler/mod.rs":"a71998635e1c881e2e9871286de0522eb34fcf1ae0d9ae617827eb8593a2d810","src/runtime/scheduler/multi_thread/counters.rs":"e5a6a1a1d01a50890dabbeb7998c7b64a954ed94bbb7cf9505ff917ed63633f6","src/runtime/scheduler/multi_thread/handle.rs":"d10a984c2bd999c2d9ecd3e690052971cbc733cad4d77c808254decdf916f0ea","src/runtime/scheduler/multi_thread/handle/metrics.rs":"d5858d459700380a372821c2a5f03255f96e58e2fdfe8367e6cf355fb29c7b72","src/runtime/scheduler/multi_thread/handle/taskdump.rs":"20768dab2f9683ecb10849fd3a4a2862a0f9942fba97d6ac29c8bf5ba7017c62","src/runtime/scheduler/multi_thread/idle.rs":"c2be2afa82ddbbe36eb6e231c8a01cd7c233d9c6e197d2feae32200098e974e9","src/runtime/scheduler/multi_thread/mod.rs":"2fae4c9f66b57d15f63c485ee6ebe724f1d41de126e641418ed6ec40c8fb3e0a","src/runtime/scheduler/multi_thread/overflow.rs":"c70ff49356fa6948f9dc53a19014a5dbf7f6bf52d4c00d9c2e20b0d23b7b3bf0","src/runtime/scheduler/multi_thread/park.rs":"86aa7fb6f52b16237e9465fe572ff61c7aa13e5fe9654ce52dab435e23df9781","src/runtime/scheduler/multi_thread/queue.rs":"1b7ace7cdf3ae20b80980aeab84ca4493d6ecd0247c808340a8b62fc3f7ee77f","src/runtime/scheduler/multi_thread/stats.rs":"a423bc706b141d808764911ccb9079d0232e55126e5c7919672013b0ec32a5db","src/runtime/scheduler/multi_thread/trace.rs":"f8ac6b0db76c45057c0061908d5acd63eb1463c397984bfd9a80f4bbc2748f30","src/runtime/scheduler/multi_thread/trace_mock.rs":"3ce6a3d19b53b608cba34fda213e498691ed55ce4a542806f9080bd2dbdb054a","src/runtime/scheduler/multi_thread/worker.rs":"60565a05ff33fedbe468b666218cb341b405bd76ee51f5eb34ee580596fda221","src/runtime/scheduler/multi_thread/worker/metrics.rs":"14e15c7315e1e1a6829b67beda6a858570b70eb9ecf9f0f3d7530881ff7799ea","src/runtime/scheduler/multi_thread/worker/taskdump.rs":"ea2bd932ef0a3b999fd8a16e15f9e7dfe8c30f3589569b7f7ab334a63ad3bede","src/runtime/scheduler/multi_thread/worker/taskdump_mock.rs":"f8664a755109ddc87f7ab82c4815cb12eb37c0bee3a1808907ac10534b9867c4","src/runtime/scheduler/multi_thread_alt/counters.rs":"6d65b0741d5ab6afaaf7ebe31419fdbb953752bd83fac679f2ffa897ccedde86","src/runtime/scheduler/multi_thread_alt/handle.rs":"282c992c4c483c0f4f9145c0548b383010fb26261479e8d7c12813bc2766756f","src/runtime/scheduler/multi_thread_alt/handle/metrics.rs":"d5858d459700380a372821c2a5f03255f96e58e2fdfe8367e6cf355fb29c7b72","src/runtime/scheduler/multi_thread_alt/handle/taskdump.rs":"20768dab2f9683ecb10849fd3a4a2862a0f9942fba97d6ac29c8bf5ba7017c62","src/runtime/scheduler/multi_thread_alt/idle.rs":"23b34e1fe1540ba9d501f79ca590a4ddf99ff6683abb5155f4f1a435ed5360fb","src/runtime/scheduler/multi_thread_alt/mod.rs":"fabc12c49c4121da7914c6bfe301c70dc36a942149dc82187e29c75a0b8782e9","src/runtime/scheduler/multi_thread_alt/overflow.rs":"c70ff49356fa6948f9dc53a19014a5dbf7f6bf52d4c00d9c2e20b0d23b7b3bf0","src/runtime/scheduler/multi_thread_alt/park.rs":"86aa7fb6f52b16237e9465fe572ff61c7aa13e5fe9654ce52dab435e23df9781","src/runtime/scheduler/multi_thread_alt/queue.rs":"e15940695427b373976aa7cadeba2e2ce7296fdd136029e71b27b87cbf939532","src/runtime/scheduler/multi_thread_alt/stats.rs":"2764574e25b9276fe529ae41c24e1e56593262540771788294f38f26f1d3e633","src/runtime/scheduler/multi_thread_alt/trace.rs":"e54f7dcea7603c861e7afbfefe7441766f8fb3c0f5ed1bcfd76a3bf0b89ac692","src/runtime/scheduler/multi_thread_alt/trace_mock.rs":"3ce6a3d19b53b608cba34fda213e498691ed55ce4a542806f9080bd2dbdb054a","src/runtime/scheduler/multi_thread_alt/worker.rs":"9f3d64f57119d0a9d029df2c99013cb4e82b6953d74124e574d04b44a31fd4a8","src/runtime/scheduler/multi_thread_alt/worker/metrics.rs":"14e15c7315e1e1a6829b67beda6a858570b70eb9ecf9f0f3d7530881ff7799ea","src/runtime/scheduler/multi_thread_alt/worker/taskdump.rs":"9f1c93258038a3b32af9215ad7b1b54767b2d6dcb4ad503d90e5779225bcdf13","src/runtime/scheduler/multi_thread_alt/worker/taskdump_mock.rs":"f8664a755109ddc87f7ab82c4815cb12eb37c0bee3a1808907ac10534b9867c4","src/runtime/signal/mod.rs":"1498f18f55e730270f8c92906857d856de5ae264d80a96699c8b8b2f9439b77f","src/runtime/task/abort.rs":"81004b45834ab44f1b673b31379d37c68c5ce8acb7d223ea58207f412745d3d5","src/runtime/task/core.rs":"c44a12f3e67053241b8d02165970c63233bac08678fa24958544840247c69ba8","src/runtime/task/error.rs":"0367095439c51ce94f53b13aa64404e13e85b114f77cdcd7315d4cb3d4fb9344","src/runtime/task/harness.rs":"1e6ea44979d0bcf96226979f73e87967bfb3e46286cb21770809989719d047ec","src/runtime/task/id.rs":"4cade5f2c02e5d3a0c516625aa8def2da110db3b83d13a6d9e26f2a1ad8b31c5","src/runtime/task/join.rs":"db92ae97f715e36bc77fb6d8d668479472f5454406aaf4c1191623e59a893989","src/runtime/task/list.rs":"86f1aabae9b130dc41c2d5d52b5b61801539be6e3e09d52a06705af357e07cb1","src/runtime/task/mod.rs":"1b2b22445017154448acd77784e21715f90806db6c20d03a1be05852299d6c78","src/runtime/task/raw.rs":"4c30fe4cb3c57361b0f28a4acd25877b1f6e6507076b5933ad91f098ab2d7f71","src/runtime/task/state.rs":"2a75a1af1e2e6bfbbb6e33c8421c0841d0680f1fbbf42d2b555d9d33ef9f0c8b","src/runtime/task/trace/mod.rs":"2ccb5ea559bc0faefa0d1413b70f4cb48564ff6a313a327e8b0fec71d86bf8c9","src/runtime/task/trace/symbol.rs":"bde671f445b351d388e5fcb80e8cb8be4424a4fac4b8ec3aee356eb86082b422","src/runtime/task/trace/tree.rs":"b8f9aa018147d539841e5716394086709fec6a8d0f95f6b2fc011ed131063dd6","src/runtime/task/waker.rs":"39fbfa7c33406aac935d2ff8d022af6d3f9619ac7edae62d24b1ca97268e6499","src/runtime/tests/inject.rs":"97b68f6c22f6861b2a1649a8f919bae3310d6fddeae107aee4dcbf00de526cdc","src/runtime/tests/loom_blocking.rs":"fb4bf871ae59cd567ae4a2cb568d7cba31ad92579bea17c598d273a3a749f74a","src/runtime/tests/loom_current_thread.rs":"f9a8b7e0d0b829eaee01d155005800c7a907ec7f92acdbc0678e9149aa95ce1d","src/runtime/tests/loom_current_thread/yield_now.rs":"fac610e464660c196a35ce15a46c9ebf537d3f3475cfc633e58c76c25eb558fe","src/runtime/tests/loom_join_set.rs":"d6612a19c695907a8bb41b24df3b404cb521cae6f30226f2449dc32f18700b69","src/runtime/tests/loom_local.rs":"69cf7fa67da9e3efe3eee722791f811efb395dcf821780051e62842654de09e3","src/runtime/tests/loom_multi_thread.rs":"6e45d9197e3ab26270cfc4c8c48f1fa3a0d508e7d8d4c0cecb3663a83fbe80eb","src/runtime/tests/loom_multi_thread/queue.rs":"54ae93457aaa96dafa25c683b13b8133994ead7eaa135539468868c94a2e623c","src/runtime/tests/loom_multi_thread/shutdown.rs":"2f48626eb0a4135d480aa5bf72e514c4abf39aa17711c96d3829f93c03758557","src/runtime/tests/loom_multi_thread/yield_now.rs":"fac610e464660c196a35ce15a46c9ebf537d3f3475cfc633e58c76c25eb558fe","src/runtime/tests/loom_multi_thread_alt.rs":"8e06356844ef57004f0f9fa3ed4c596e6b173c01b9529022b252fd27bc3bc8a8","src/runtime/tests/loom_multi_thread_alt/queue.rs":"54ae93457aaa96dafa25c683b13b8133994ead7eaa135539468868c94a2e623c","src/runtime/tests/loom_multi_thread_alt/shutdown.rs":"2f48626eb0a4135d480aa5bf72e514c4abf39aa17711c96d3829f93c03758557","src/runtime/tests/loom_multi_thread_alt/yield_now.rs":"fac610e464660c196a35ce15a46c9ebf537d3f3475cfc633e58c76c25eb558fe","src/runtime/tests/loom_oneshot.rs":"cb0cb66e1014708a10a2236c2dbbac9441b6a6e36a49c419fa3a51af62b054ce","src/runtime/tests/mod.rs":"1d8d0b89fda125b00eaf782bc95fb1211d1d14b391b7089f08815ed8c41f7ebc","src/runtime/tests/queue.rs":"56ea2b3c8f3a1a01091c3e624259b03a57ab555e52ee77931ad9edaf5d6db329","src/runtime/tests/task.rs":"a9e7e18447eb1c43f0590580c2001c206eaa48e542502a04bc8dd4817de3962d","src/runtime/tests/task_combinations.rs":"0ebf6682728fc5ede9374b6353a8fe5d0cb1d27e511f338e779607d8fcaebcf6","src/runtime/thread_id.rs":"ad85f1057b2c61838620f1323fa8a710e140bf448fb2aa1d9d1f87a7fad5f01d","src/runtime/time/entry.rs":"7f07396d64c008f1d3b9a7d496564a07bb976837c3e1f0b21ba02ddfb6306515","src/runtime/time/handle.rs":"1ecbebdc070477d61b782b2f4d3a5b9b5cc06dbe447188f23eef3257fd16ea8b","src/runtime/time/mod.rs":"28f78f2bfce3b7cd61a893b19b93a285d55f084299401816f3d9fec03d87de70","src/runtime/time/source.rs":"c03f9eb4d229a582826164031541f028e26b95c75fd02fabfde3668cc81b5e8a","src/runtime/time/tests/mod.rs":"fd656b75bd4e7737b517b1e84949d84f5af72c8b52ee68777555c724bb1bf7cb","src/runtime/time/wheel/level.rs":"974a230b26f6d4fc9f4046741f1e8ef90acd2d53132f135515bc37914afc276e","src/runtime/time/wheel/mod.rs":"1104133c6d50ea708c5733f7bf05b2ad1f027608a7495d18e649c9b97f31204c","src/signal/ctrl_c.rs":"3e1d98df851b9ea1418f607c260434e906ada4e3d6c14cdfa5c81a0c4d55cdd3","src/signal/mod.rs":"4da598cb028d5716628bcfc06c0fb0bb8fb8f0f0986c6a328a655e76979cd85d","src/signal/registry.rs":"c9e9d1df123c6069c2ad80824162a5de8c0163a9c63714d26ba2128538e34cfa","src/signal/reusable_box.rs":"3d3b710b1794d9f8f5463e9ca380ece60c426b58786a5cb5f40add627da01aeb","src/signal/unix.rs":"0504cf52a28e9e8e528fab0ccd4e9c3dc86fdcfb807ecc9506fb6adca186c531","src/signal/windows.rs":"826a2a16fc9ff37ecaf7eef88f09d8b5f57adb6095dc10b981a4c0bb67b70a2d","src/signal/windows/stub.rs":"a6d3b11aa3a7247f7a8365c3241857bcde48d8c390d569e6bc9529c9b1f8ecd1","src/signal/windows/sys.rs":"3e4882762ac424cb3b3caf71d5a69f571fbe14e6b298889ccb227c58b213c257","src/sync/barrier.rs":"45a8ca0fec02e6a6fa77cfeeb09e3a142f931d413c00962aa0d0036ff8ff37bb","src/sync/batch_semaphore.rs":"19c84049d3aa94a0b9434fa2ddbe282b9084f53dd4ac6512ef291074fc498362","src/sync/broadcast.rs":"d0aec6eb038a6ecc15638a925d1d66b9147e9418c97032e5fcb7581c2e1caa7d","src/sync/mod.rs":"bd94e0b941f6c61623bf9ed6317c545c5a076d3431471f014f0448984c2bb82c","src/sync/mpsc/block.rs":"70a034a62ea88a95e970352a7a3e004c2755c75afa34d71f3653537389e6e2d6","src/sync/mpsc/bounded.rs":"fe08d3d153053f54c51c16f0cd67b74141c14b7d4e852cf2577a156e92b4707b","src/sync/mpsc/chan.rs":"c45f04b6aa6b89123f43b3d8bd08eb055542e4d966673d76a11850a0be6ae718","src/sync/mpsc/error.rs":"c11e21843f2cb734446a5b1cf3537b212481cc012f27e93b34848586919928d9","src/sync/mpsc/list.rs":"2c99cec4d3d179f6e668b8de37e58525477be3f069a9a748f7f8ed2f8a40f817","src/sync/mpsc/mod.rs":"3699ff2b4c5315f0a1cde40a1d3a45bc312febe1cb612cd68c6176ed7590bf1f","src/sync/mpsc/unbounded.rs":"5cd0694dbd4a2f33d44756a382c02780e1951dae19d246fe1af3e026ad6da5ca","src/sync/mutex.rs":"29e0dd08a9f23605a1f5a42fb8c75cc8b645bc0f81182be03e174f48a0853cdd","src/sync/notify.rs":"865f50de55b6e8ba9ea7b7eadd51e7962ef126f2d4f4967348a0361f074d3d50","src/sync/once_cell.rs":"ba8e1b63ab7a04052ccd5ff7f5e5f1f3381499fe274990f2a7e12af9ce6ef35f","src/sync/oneshot.rs":"2900d5d4ac81c3056c04b38ba7252eb4e98437943cba1bd6f06eafe78873cf93","src/sync/rwlock.rs":"efe15979ebd75cbbc9d6b12bf27d2a38678ae145a6fa1ed76bce48a65e002930","src/sync/rwlock/owned_read_guard.rs":"135d81271f0028263ce99c3246cd335a08912b50a43f125b3e8f7739ca353cfb","src/sync/rwlock/owned_write_guard.rs":"ef56443fac210bc3d0c2b66beda8436154c2ab726f1dc208758b54b2b087762d","src/sync/rwlock/owned_write_guard_mapped.rs":"3038187dc3a791a89505621230d3edd8629287ec11490ff37f2c624b593c5325","src/sync/rwlock/read_guard.rs":"0f7e52adacad0fb1529a453eb14f8207a8caabd8f5fca4aeb2031a9e9b0981f1","src/sync/rwlock/write_guard.rs":"f3855cdd09940c86a9bd10b91d3ebb37b2219b60c727a3bed377404ef2483c35","src/sync/rwlock/write_guard_mapped.rs":"8c839c4ac4b73faa1c1fc697753e23fce113ba6e576d2abc022ddadb98a34af4","src/sync/semaphore.rs":"d5d2c60a976a008e32a3c06bb42cc7cd50d7e35bcd39fb84f11fca6f0a3f7bf6","src/sync/task/atomic_waker.rs":"41e9e05522254afbacec9895390d6f95498e413a61d8f654f9c421c808e7f83f","src/sync/task/mod.rs":"f5e38105c7f8a942c0e49b973bad0a8c2a1df81deea19f3c5228edc4896c1725","src/sync/tests/atomic_waker.rs":"28dc6d373e83a846c4b6fdbca55949dfd901730428fbf002f78209e1f9f5125d","src/sync/tests/loom_atomic_waker.rs":"984b52699c47383b9b62e6c4ff93fd458bbe64cb4ca836463adbaf94d27c38ee","src/sync/tests/loom_broadcast.rs":"b2c6f138707fc389ee7d91109bc38093af9060b3465e68d3543cb652e0070406","src/sync/tests/loom_list.rs":"f0ce15a0f965fe558a21bca24863c712156eaeb10feb8ef91031a6d6e3cc5dba","src/sync/tests/loom_mpsc.rs":"4883352b9d75a81c878609613545ae14910eca4f2e7f3718053dfdb792aa0760","src/sync/tests/loom_notify.rs":"cd401c73084df551043b7d96b9f2c51e9c1929a9038eb899381bd4ecafe04ec8","src/sync/tests/loom_oneshot.rs":"c3596c15692b16e7cb8cd6957362adb3a98b3d7f16c4a4262f19a3a27f262b03","src/sync/tests/loom_rwlock.rs":"80ec00bdcac838806d4d9f711cb154e02f22913ba68711855c39ca92028d3e4e","src/sync/tests/loom_semaphore_batch.rs":"c6f69b8d5b2e6842287ed34638a9045095d9f94c86ba6bb84c1224bbe10026ff","src/sync/tests/loom_watch.rs":"d451c914e94c5a672abec3232e58aff6218581f0c0b1802434ddbe771b1be6a1","src/sync/tests/mod.rs":"1ef2026ac3dfbb70a437b8be441deca4b7b5e72638b71daf753b89808cd3c9ee","src/sync/tests/notify.rs":"23600377d3eb041c2dcb3702b63109475302b22827c30e90c1e8754a18f306cb","src/sync/tests/semaphore_batch.rs":"1f928cefc34b332d0b7c86a3b4d29d2b9ea37ba57dcf5eabc7bb62138f4a51e6","src/sync/watch.rs":"b327f57690f225ab30b9df59298aee07575f4ea3dd698c5e2d2cf599bf83d7a6","src/task/blocking.rs":"96ad214e99e2120a05c938f61c2bcfd0ac8bd20619dda12d93318d4f0ab7f41c","src/task/builder.rs":"6704158d8adb0e1a1a2b1b66548fb295c6c1e32b7387e6f3c9c6ebde9a0c084c","src/task/consume_budget.rs":"f1000b9628938a5964f70793506f51579849284a4acb10d5e9c70080c5caea47","src/task/join_set.rs":"e178485ba52bdeeaf0f9320e150637770db8313cbbfd442440dd61a98fb5c402","src/task/local.rs":"c7bd8b0a54c73124755645cf6b1a97f71c2ac6125787a2dcf6de7ed5e235fda9","src/task/mod.rs":"68c4e77221655cc3cd208e20fd9f8b3035d5f6176e30a90c5ec67423f8ff8ec4","src/task/spawn.rs":"1b4546ba873255b9ba28b755e2349200cb299c253ed6539c9fe0045ce48b7f0a","src/task/task_local.rs":"fda56b1515e5058ee423f32d39892f523e59a5b744a4adf8a1a1cca9108b6385","src/task/unconstrained.rs":"8e75239ae694f296136fbacadb232ae0a255b0b2013e1eb0390bfbb82af36692","src/task/yield_now.rs":"ce1f9417f650142488a8c27856e995676c5e74b8965832966bedff6a99b8165c","src/time/clock.rs":"839139149402a4ab18f3144a36249f57d36536ca44a646de0bd6eba374a71ef9","src/time/error.rs":"de761055f6596528fa158eb2179aa662fb1510d93aaa2102f8de3192c6a6d1ae","src/time/instant.rs":"164ee00dabfa6bb9fe4c9854f937ee92ae454eeaaeaa7a447e09434ea95bf722","src/time/interval.rs":"6bd0a45000fc88607b863ff563a36983daacb9f50c204033a6b3a1726909a64d","src/time/mod.rs":"c790bbe9356ceb56fd20e762c9002906aa4eee1d1d297fa0c520130f72d3be3a","src/time/sleep.rs":"97800884c5ae2ba330dc079912c19f93a67605311d85a7de134f6886120ae0f2","src/time/timeout.rs":"67f5396cad468dac3381b323734739914052a0f72c3df018eeab14a855f6c8d8","src/util/atomic_cell.rs":"6e156b730f69c698cece358ff5b206e8dd88083230fd49b2fc4a66a539b92553","src/util/bit.rs":"a5c16c671e58ac19a46621efa3cb02eac21fdebfbf97529fc0f2aa708250f738","src/util/cacheline.rs":"52d1db8c66768a4e08daa34600be17bfae3600cd8de0a90bf02c8411317a4954","src/util/error.rs":"de1a0d662e9359da3e19739125b1450f571abadf30e34f50f085b23d8da28d80","src/util/idle_notified_set.rs":"7c54b9cd9490a085e224047825bc6f79827ce32d39e16547ab624bd113a7f3d7","src/util/linked_list.rs":"5dde85250258107b2504d3064c8776626db5df1dd67cd3fe7b7997b0866f77c8","src/util/markers.rs":"fb9b674d9a48c97b411db8a3264fa2781026a0eafa74cf276cd47d8ad62cbf02","src/util/memchr.rs":"8cb5e0a0da9b7d94d29a994dd4e725e547ce31f87b5bf24a1a9b53b0ae65cc08","src/util/mod.rs":"9b659eef0a411f5ad5f75fae5a4122463450c99c036a46771f79744ad1cdfc76","src/util/once_cell.rs":"bafbbff82e595a0b8f41f3d5273dcfcacd282c51a24f14666105391a456c5db7","src/util/rand.rs":"c36ca3d9e971e857b132f29ce3ce0ca3fb7c82a4f413354e7acc91cb6e8ee285","src/util/rand/rt.rs":"9790a2b6d822edbffde723f38b75ded408dba6954d711f285bd17924322b246b","src/util/rand/rt_unstable.rs":"bdb69915fe12a9e0b8f2ab4d72466663b7a3e87e671343a0a623028690f4e452","src/util/rc_cell.rs":"362a7a7b776389688299628a4678378fa02f88fbc6ed7f9fe006054d9b62643a","src/util/sync_wrapper.rs":"8f1ab76280171c33c0bafaec9c1cb1d48cfb0d19a1ab2b768cdf7d7e40f07d00","src/util/trace.rs":"eb32f5d2e3d7b1d73bbc185dd22893ecd1cbbef61365abd22dbe19c3893a0c2a","src/util/try_lock.rs":"c4ee49e1751ee0a7df1a8cbd4f8d36ea1d7355e3ac584fdb8697a94cd7a7a8f8","src/util/wake.rs":"de004e6fe21d9d86d22b7e193229436c57cd2e62177782c495fe463798fff063","src/util/wake_list.rs":"c3443e695fd0b5c41c06d66cab96549064e9b645043559d01f82f365dcc4ff6a","tests/_require_full.rs":"1f58c8125018bd88b9f21647cee3d957b716bcce70f9144af1de58ee6712908f","tests/async_send_sync.rs":"69166867e7a32f5a6f44a4d7f69ae22063fa08f2d77a1ddcb760e0cb1006c014","tests/buffered.rs":"ad2fc9e69437dc8815888286e2ef457215e770b5da13b1e6123559bd18f7199c","tests/dump.rs":"4eb9887bd06cf82dca679d6e27a37770f8a8bcf44c8f5b06cd3cbad835848788","tests/fs.rs":"e2d21101b603216c65df87259cf604f3832b8ed4d39a81aa3a3e90972611a700","tests/fs_canonicalize_dir.rs":"f08d79322e814eeb09fc6548d1a7daf301322a5397b3283360daa31470e90e16","tests/fs_copy.rs":"c71fbf6780d3b484940a590992901127670a4a27ebfb75a0cb92d17ef9e6f860","tests/fs_dir.rs":"4f29f2979a869ed12498cd9c5a2869b02d94ccea8c1a845cf9587d6c7bd0476d","tests/fs_file.rs":"9807f142c169ca8982a2ac0264cb39743581c185500ec6a44c3639c02dd0fdb6","tests/fs_link.rs":"52da287ce88ac500b3e46b5a00549d56044c75b908a7771b63c29b2de2f95828","tests/fs_open_options.rs":"f13c92227bbf089850f018f8b3ed5b527c4ef32d5305dc1bd751122abb30ebf1","tests/fs_open_options_windows.rs":"eae02a644078164bab7bd1c1a5a2ebc85f90adb110c955eb4bf01a34e9321aac","tests/fs_remove_dir_all.rs":"463ada6fbd6455070eec5d84684d76dbe9a245c82698b6e2264674ea0343cc5e","tests/fs_remove_file.rs":"614e41551c81276b7f700ac3b6a31bdc426772c881033d822cfc3759a3468a93","tests/fs_rename.rs":"c5397d389b2aefef31e2f4bc5f7e4b4a2c9c1e3109945de9f93dffc98bf0ae00","tests/fs_symlink_dir_windows.rs":"bec061561203ccdce24a0f5754690fe4d38030036055a667f46b6f452a9d31ec","tests/fs_symlink_file_windows.rs":"02ba203872a6ddd20c8e65471d77d544d85d6dfb4fd572b3f7782d73be01aafe","tests/fs_try_exists.rs":"198e5b1d81c140307ddff8deee3a79ecec044d61b2225139da3c38b2fa1e1b9a","tests/io_async_fd.rs":"b1140d2c17edf580c9cb1309beb48ca0699a6681d66df94b75b0fa6efe5f9f79","tests/io_async_read.rs":"a590efe9bb01986f067118640a3b55f6760186e554f8e8f2404231d4e96f61b9","tests/io_buf_reader.rs":"f5a322dea6fe9f40c18a085a865919c1bbfe8653203b37d1e18b77d259c6211d","tests/io_buf_writer.rs":"3bdabe9ac26f3189929ab3e8957150f5262d5b426fd3cb6c4761a45014b1c1fa","tests/io_chain.rs":"f5d3ddc9f6e8152ceb08b5dda2ca3168b174f1f67ff28a4c5983bcbad69d8af6","tests/io_copy.rs":"0683dee400710c1696a6634ecee64c39e7027344e66bfdd6b2a78de8ca913555","tests/io_copy_bidirectional.rs":"3a207b2390ef8562b547cf2c897e1e89d4dc31a41f2b353a1356b20704bc42cf","tests/io_driver.rs":"887d25bbab98334fad891c8f8ff2cb7aec0f10d01e2993cdd0cbc4c6e406df88","tests/io_driver_drop.rs":"a0126f26fdc2693129f6941a897b5648bf9593123de355119d2e38683b15f1cc","tests/io_fill_buf.rs":"930ce8ab5562c2013f4a75cdf717e41a7f8f3cbad6bae7bde68f0cfa3f2fd80a","tests/io_lines.rs":"f5b1599ffff44819e269519ff0a08635ea1c5d7c541293e63ee33d98f25f0e3b","tests/io_mem_stream.rs":"7b20d86c02c8a868cfa3aa4d228519090d156fdd9a8a19a3be263f264fc9d33c","tests/io_panic.rs":"bbc26639d765041163caf7776c5c983b8852ddd8feb40883d6098b21c942e75b","tests/io_poll_aio.rs":"165f80ebc81e8ccb4d335c9b9a89d960f097de9b17e92bc964effa3c76ce5f98","tests/io_read.rs":"c0ed5738a4b2d9623b2e0a67cab0fb19bc50015f62ced524b5d9069c57e10f05","tests/io_read_buf.rs":"6dc454751af0e9cccb44fdfb12b9f0311fa8afa482886aa56e3e15d49ae1e06c","tests/io_read_exact.rs":"b6387dbeb0baceb7a1f74a9a3a8b4a654894465368be27c3bbf4352b79fc4314","tests/io_read_line.rs":"8296624b4f5e162c79024f3beab2f561f4195a244cfd4c53e4d06282f56a31bf","tests/io_read_to_end.rs":"722e2922a40080d391a83b4903f47823779740090624a98ac30e9f164b20a3bb","tests/io_read_to_string.rs":"c9ebfee5cb262d822119c2881ea1cc0c73598b13c517c297663e35bb120a089d","tests/io_read_until.rs":"b6c0df9e4852766910ec68affcd92fbfbc280018b7f9c16cf5f4830f9b8389f0","tests/io_split.rs":"fcd232f797503596b2f8a6b0c4fe6df146108456a670f7f101e4c4eeed52fffb","tests/io_take.rs":"06e91faae76440228df71383650f86752e7b749b193f1729071a7e8fc516e01b","tests/io_util_empty.rs":"32dff601a78e46e12339bf1577463c7ce1070d71d78a2fb33318112a111dc120","tests/io_write.rs":"98668a8c8feae0f85714df1dfecfcd94fba4ba347bdc3d8aaa4ea8b175055c69","tests/io_write_all.rs":"e171af1ecab45a439b384c3bae7198959c3f5e2e998967dbd9296760b52951b7","tests/io_write_all_buf.rs":"2c037f07ac464eaa4e0b87e4e4968b28a0f2f1b1d1e218546c9d5dac7a75d145","tests/io_write_buf.rs":"331d3b54c7664386bb87585f39910d1fe31bfbdfa012a2dc2120e535dcdac329","tests/io_write_int.rs":"3f4b50345f7d7d558e71ac7f2a8c1c4b7b771dad09fe2e1fbf9a17d4fb93c001","tests/join_handle_panic.rs":"a17a56a6283d229e64083cc433b4fb86b913f2cabd692177fdd7edc65baa7e42","tests/macros_join.rs":"4411683c1fe79419457e758650ce89ed76f28041a890cd05db9143034b63719c","tests/macros_pin.rs":"f8fe8ade470196dc09b061b0cdd71ef25e114a201d5eb500e0f8232b436012cb","tests/macros_rename_test.rs":"94715e8014bc4c67cebe830f3d800c4cb0937bc6245de4b5410e5729bb2c7f9a","tests/macros_select.rs":"7f5ad6e104c95a30b465aafae1211384c07228c61d15f64efb4cfe55111bbc22","tests/macros_test.rs":"7bdcb1fb36b09e0666c05c264e9dbf87eafb236db580c4ff0595d30bcaa68377","tests/macros_try_join.rs":"79a2e9c784e7249fb4bfe73c41d2efa88206fec36a8449e6fb7ecf95f50d8d4f","tests/net_bind_resource.rs":"ba0dcc301ee170fba82cbbfbf0172b665b9914c0004270d8a420d5cd948eda84","tests/net_lookup_host.rs":"69831a012b36346e25c3ffe0dee2dc31d0faeb294a9deadb46118c2561b617b2","tests/net_named_pipe.rs":"dfb791caa5a4ed1bae0605da27ef599abd8cbe745c2fa95a31853bd46465b042","tests/net_panic.rs":"9fabb8e012d92fbe23eef513c3e983b12a07f3c39d72dea06b35bc4902486916","tests/net_unix_pipe.rs":"6b6956dd7d584fa18309fc8c86a74f5270c9fc2faed2f5c3b722c11e93419abe","tests/no_rt.rs":"7ff583bbcd848d2721088dbfc45d0d70f978f8101275cc9bd220ac6d392f17d6","tests/process_arg0.rs":"785d801cf281230e3208512820e7d71b4d8362b8cf33fc72235da370e10983a8","tests/process_issue_2174.rs":"66c56d8dfda4e1723928da713dddea8d15774d6730398effadf0ec28f4c6f1e1","tests/process_issue_42.rs":"26043f8246b00046137551f7a9f638652c70f527f10b4d91e4286643120ca41d","tests/process_kill_on_drop.rs":"9b4bf8a73769fb268ef3687141e8df6122814855d3bbc4e63295c66b0ee6cff7","tests/process_raw_handle.rs":"aaf0dc242ce69f1a8c614e04515c41584f7e213f84ebf23238521eb881e0a6de","tests/process_smoke.rs":"4b55f2aa526b773be55e718abd54ab23851848c4cb28274af587d3bc8ab48f75","tests/rt_basic.rs":"2eb193a4a4555cb8aa636fa3437b4cdf12f64a888e20afe642b1b3872242ec3f","tests/rt_common.rs":"f3b03e4b987e742073646d21935f89c5f4ab05812e2b4569621dee1da8163662","tests/rt_handle.rs":"c9d021e651a1ffb3aefe9ce27f763b7f6be742b386c977d9fa0b6afe24749d78","tests/rt_handle_block_on.rs":"067205bfb6ce2c7b48301be4bc7d368c26b98ed1e0d17f58e64fa5c528205570","tests/rt_metrics.rs":"043c22f70d3754377c2c7d9b9377ed12b5bc2ab4daba5ec5d6ba2fcd1d95f66b","tests/rt_panic.rs":"3f757e55aba050e745347f1040b623d5b005bcc070d1e265cc4442589c7d3ed4","tests/rt_threaded.rs":"b2d166628893edda790bcae446f2466bfbd04d8dfba5262eb5eb01aa3b08d236","tests/rt_threaded_alt.rs":"eaf1fc504ad333c74ffde01475c1a087e1f566ec1bc840427ce09c83d1037a76","tests/rt_time_start_paused.rs":"76549719f16e9cbdd9a84b9d97929ed7c8ca95b8d4d715608eb99f950cdda7a3","tests/signal_ctrl_c.rs":"9b53065781b37f3db5f7c67938239b0f3b0ebbc5938c14a5b730ad7ec07415d2","tests/signal_drop_recv.rs":"d1ec97213d9c6fd9fb25ea8c2b015c9e9ee1a62fe0853fc558bc8801e5a3a841","tests/signal_drop_rt.rs":"f968c1154262a4427b5aad2d9fb36d3b7d47084312d0b5527a8eb3d589381d8b","tests/signal_drop_signal.rs":"041940550863250f359630dc67ef133874d809ddaf0a6c1238cee1565a19efec","tests/signal_multi_rt.rs":"a1c50c25f4707fda7665da61b3317dd61fc32c63c61db2bbdb56065bd9c591ce","tests/signal_no_rt.rs":"6978c2ca34a0244fd312d760ad416d961e7e27681e4bb936dfd583aefe6aaf1a","tests/signal_notify_both.rs":"bf0b9def20f530d146ee865305833d8e9bee07a0515e66573d7ff30e2c631123","tests/signal_panic.rs":"0b26845bbc7f388346e0fe3af98a2257dbfd0eb84168368994a0857e06a42398","tests/signal_twice.rs":"bce33093eed151955d13c334d6d8a5bc5ca67cf5b37c246e435a24c15bc166a0","tests/signal_usr1.rs":"86ad07594b09d35e71011d1e12a1fa2c477bfbc4a2a36df1421b6594a0930074","tests/support/io_vec.rs":"9b3001e120138ead4a63720019c669ff00f8455a74dea2fb231633b3b58c9b09","tests/support/leaked_buffers.rs":"85ddbce3ff6b0c5cc8cb30449dd37e5bfedc94f8357e741ec88ff04462bc60c3","tests/support/mpsc_stream.rs":"00d48122fa2ccbf1fe0b110ce3cf22590eda54b3ddec0134b1f9376eb1169645","tests/support/panic.rs":"7bcaf8ea2d249b5c1acb3c1b769cbe479834630dc71b3ce1114b8b46277f44da","tests/support/signal.rs":"83531afa2e8e71cfd90cd4e1fc821490ffa824f0f9f0c9c4a027c08fed6b8712","tests/sync_barrier.rs":"f166e526d12f840de404ef58a375e475dc7434292b2f23d557214749d0e6c372","tests/sync_broadcast.rs":"ce41987e3c5b7856684608528a2db19806073e41bf9a6a341f0a8c6ec4bbc4b8","tests/sync_errors.rs":"7a49ec77f4c967b3c76c946789f43c51e0a820a67e947ed42e30ef65ec9242e9","tests/sync_mpsc.rs":"b7306cbf9256570e63273bef7fd4e97658ea48c4580950078b54649470976ebd","tests/sync_mpsc_weak.rs":"5b8335b663cfccae9a08fcec4a3a73a890abd36d2f58adbd845d4745af4fafaa","tests/sync_mutex.rs":"432591e4893b4c64a58116463b6c16a2eb23fd42eee42af96d93b9d03728608a","tests/sync_mutex_owned.rs":"2664c35f66161825cf8e0ca863347735cf4d1252a208577e5084dc1935a18596","tests/sync_notify.rs":"9786acc38aecc651704b5e5b194c3a45a06a3ea032464145a5f17af2062399bf","tests/sync_once_cell.rs":"d4a792f554acbfcd66f2c794cda44f180a330d8bc488823af984196fe2c91d74","tests/sync_oneshot.rs":"6e3542ed15fc8e08bb422e0ad001cb422035c06305511b156e9645f2322abe4c","tests/sync_panic.rs":"6667fca8d892b2126e49ee86fea63ce8f90a2e7ce6e8326a46b522b682c61723","tests/sync_rwlock.rs":"47094f85a9d6db9d3011d09f8db014f692cdc3239449bbf2d54575c4923e8dc5","tests/sync_semaphore.rs":"63a61b02ac674cee92e963a2e92f058fdda22dd95f05a087136524042bb8bc8f","tests/sync_semaphore_owned.rs":"5688e32fb6f9d6ad95dc6859fb5c5682e4e75e59dab9d2f0c02b9360d455e4d2","tests/sync_watch.rs":"a4f8a7b445e5089ba915a973627b7348e03acda165cd7b4ce9b9d66cac7912d6","tests/task_abort.rs":"4347395642f407e22605c4421199b1ad7192be5963704f0c6822616aad9e07e8","tests/task_blocking.rs":"dca80f95e916f1cd619ae479a37bc891bfbcad36ac24088ed1d23802777b3e3a","tests/task_builder.rs":"784830b868e9fd7b0d9413cbd7719eea7606c62dffaaf59986ed3e7902e9a3e5","tests/task_id.rs":"98caa8b1874e3cf65d06bbbf2a0dde936c397aba25e5f4859ecc96a8774c446c","tests/task_join_set.rs":"060eed473a3f930a31f6bdec16b053944681b86fce005974cca4f0780a08a2ff","tests/task_local.rs":"fee94e54f2043dbbdcf36e6fe1787e7e2fcb814affbb9c370831a58281791755","tests/task_local_set.rs":"0b47d11e94daaef453b674b0bb04080fc8564edfe690985a5678b99dd235bf43","tests/task_panic.rs":"815ba77560f18f92e68db86688e82d5c6c3d8a83ee9caed2968eef0ea30c10de","tests/task_yield_now.rs":"dbd0f342129b2d06edc0daee360731e5adcb2e3a19f8d658a2cb510490d7fa25","tests/tcp_accept.rs":"e25e52fe4087638b05fc74e1be5311e015a723043d4de7b8e8867ae4bb999f9d","tests/tcp_connect.rs":"03abbf5cb0e163de534feeafb8498357231bfb3a38844e20a5e459d241dd204f","tests/tcp_echo.rs":"7dce84fa8c5ad0014846c3d0eaec1df8ad779fdfcc44441d068e32b408ba3716","tests/tcp_into_split.rs":"8248df254d9a7653c151eede9846994f1543ef902757ec2a196eaee1b0522936","tests/tcp_into_std.rs":"b2daa51b870dfb83c72958ed900ba863578e7d6c9339a591e97612a5f4d670b9","tests/tcp_peek.rs":"aeecf794f845e5396df9901780089289e285c10b65b9fd9a8ece669e808d535e","tests/tcp_shutdown.rs":"82eec393777a05f4a6ebe460e74d1dbab6b80d55b1289573932a891677c345f7","tests/tcp_socket.rs":"185f1a0121f5f22d9ccb5969fd36e64d12c563efd2d1964e2becbd73128677d9","tests/tcp_split.rs":"5210f66e120f90f6c5110b28859cb1582713885f2986ebf1600c6321095e85f0","tests/tcp_stream.rs":"08c0986f8ded0a517df2935eb6f76d31456ef699082d7dc140260bbc8f91c9d0","tests/test_clock.rs":"d5c9bf7bb5d926e2b29b43e47b5bb051b0f761bfe44d5fef349ed442ea7b416f","tests/time_interval.rs":"2f52d3e28bd1d8c93f25bfcd72ea259a14eed5e43a8e9d99c9e482d9939f445c","tests/time_panic.rs":"9c46cffc7c5fa7bd812422dc2a3574a7ff39350438e4a3382fcf7eea37d2fcc4","tests/time_pause.rs":"a5b155c5d2d6b6ca35bc1ad58c3982fd08740ac97da351b6094223002786dc2e","tests/time_rt.rs":"7467d08a4d681eba4d2207e8254e8f5cbf3755c0dbd40e9bea51e6838993b11e","tests/time_sleep.rs":"b006035ef12c7f25e32a65bdf5e3a3da7cee0b1e7a096f821252237e3f48119c","tests/time_timeout.rs":"31d4955a4009b24aa0a506335607b6aa0e6b21cbc533650739642c4334b888d9","tests/udp.rs":"153ab04ca9d14b63967fea25e46855959931aa786bb375f1c39bcb36cc9d8c66","tests/uds_cred.rs":"146c6e9bdbb82a268f178b03575f94a40db81ef67a740dd16ead5b9e4a447f1b","tests/uds_datagram.rs":"f8d886adc6c3947960991392cd8540a0b4a7f7b0110a24d10805237b385b49f0","tests/uds_split.rs":"79d54d6ce35e5d15138299091871ecbdb6492ae6863fe406021fd7359f1ed7fd","tests/uds_stream.rs":"287b7d5e297df3e326488d98f9645ebfcf8be0205ba6a8e5ddaadac58240e113","tests/unwindsafe.rs":"e833431d40708f39b8bf54b809b635d77d9895f46f3c42aa14d3e9108415279d"},"package":"17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/tokio/Cargo.toml temporalio-1.3.0/vendor/tokio/Cargo.toml --- temporalio-1.3.0/vendor/tokio/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -11,9 +11,9 @@ [package] edition = "2021" -rust-version = "1.56" +rust-version = "1.63" name = "tokio" -version = "1.29.1" +version = "1.32.0" authors = ["Tokio Contributors "] description = """ An event-driven, non-blocking I/O platform for writing asynchronous I/O @@ -71,7 +71,7 @@ optional = true [dependencies.pin-project-lite] -version = "0.2.7" +version = "0.2.11" [dependencies.tokio-macros] version = "~2.1.0" @@ -93,9 +93,6 @@ [dev-dependencies.tokio-test] version = "0.4.0" -[build-dependencies.autocfg] -version = "1.1" - [features] default = [] fs = [] @@ -162,28 +159,28 @@ ] time = [] -[target."cfg(all(any(target_arch = \"wasm32\", target_arch = \"wasm64\"), not(target_os = \"wasi\")))".dev-dependencies.wasm-bindgen-test] +[target."cfg(all(target_family = \"wasm\", not(target_os = \"wasi\")))".dev-dependencies.wasm-bindgen-test] version = "0.3.0" [target."cfg(loom)".dev-dependencies.loom] -version = "0.5.2" +version = "0.7" features = [ "futures", "checkpoint", ] -[target."cfg(not(all(any(target_arch = \"wasm32\", target_arch = \"wasm64\"), target_os = \"unknown\")))".dev-dependencies.rand] +[target."cfg(not(all(target_family = \"wasm\", target_os = \"unknown\")))".dev-dependencies.rand] version = "0.8.0" -[target."cfg(not(any(target_arch = \"wasm32\", target_arch = \"wasm64\")))".dependencies.socket2] -version = "0.4.9" +[target."cfg(not(target_family = \"wasm\"))".dependencies.socket2] +version = "0.5.3" features = ["all"] optional = true -[target."cfg(not(any(target_arch = \"wasm32\", target_arch = \"wasm64\")))".dev-dependencies.socket2] -version = "0.4.9" +[target."cfg(not(target_family = \"wasm\"))".dev-dependencies.socket2] +version = "0.5.3" -[target."cfg(not(any(target_arch = \"wasm32\", target_arch = \"wasm64\")))".dev-dependencies.tempfile] +[target."cfg(not(target_family = \"wasm\"))".dev-dependencies.tempfile] version = "3.1.0" [target."cfg(target_os = \"freebsd\")".dev-dependencies.mio-aio] diff -Nru temporalio-1.3.0/vendor/tokio/CHANGELOG.md temporalio-1.3.0/vendor/tokio/CHANGELOG.md --- temporalio-1.3.0/vendor/tokio/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,96 @@ +# 1.32.0 (August 16, 2023) + +### Fixed + +- sync: fix potential quadradic behavior in `broadcast::Receiver` ([#5925]) + +### Added + +- process: stabilize `Command::raw_arg` ([#5930]) +- io: enable awaiting error readiness ([#5781]) + +### Unstable + +- rt(alt): improve scalability of alt runtime as the number of cores grows ([#5935]) + +[#5925]: https://github.com/tokio-rs/tokio/pull/5925 +[#5930]: https://github.com/tokio-rs/tokio/pull/5930 +[#5781]: https://github.com/tokio-rs/tokio/pull/5781 +[#5935]: https://github.com/tokio-rs/tokio/pull/5935 + +# 1.31.0 (August 10, 2023) + +### Fixed + +* io: delegate `WriteHalf::poll_write_vectored` ([#5914]) + +### Unstable + +* rt(alt): fix memory leak in unstable next-gen scheduler prototype ([#5911]) +* rt: expose mean task poll time metric ([#5927]) + +[#5914]: https://github.com/tokio-rs/tokio/pull/5914 +[#5911]: https://github.com/tokio-rs/tokio/pull/5911 +[#5927]: https://github.com/tokio-rs/tokio/pull/5927 + +# 1.30.0 (August 9, 2023) + +This release bumps the MSRV of Tokio to 1.63. ([#5887]) + +### Changed + +- tokio: reduce LLVM code generation ([#5859]) +- io: support `--cfg mio_unsupported_force_poll_poll` flag ([#5881]) +- sync: make `const_new` methods always available ([#5885]) +- sync: avoid false sharing in mpsc channel ([#5829]) +- rt: pop at least one task from inject queue ([#5908]) + +### Added + +- sync: add `broadcast::Sender::new` ([#5824]) +- net: implement `UCred` for espidf ([#5868]) +- fs: add `File::options()` ([#5869]) +- time: implement extra reset variants for `Interval` ([#5878]) +- process: add `{ChildStd*}::into_owned_{fd, handle}` ([#5899]) + +### Removed + +- tokio: removed unused `tokio_*` cfgs ([#5890]) +- remove build script to speed up compilation ([#5887]) + +### Documented + +- sync: mention lagging in docs for `broadcast::send` ([#5820]) +- runtime: expand on sharing runtime docs ([#5858]) +- io: use vec in example for `AsyncReadExt::read_exact` ([#5863]) +- time: mark `Sleep` as `!Unpin` in docs ([#5916]) +- process: fix `raw_arg` not showing up in docs ([#5865]) + +### Unstable + +- rt: add runtime ID ([#5864]) +- rt: initial implementation of new threaded runtime ([#5823]) + +[#5820]: https://github.com/tokio-rs/tokio/pull/5820 +[#5823]: https://github.com/tokio-rs/tokio/pull/5823 +[#5824]: https://github.com/tokio-rs/tokio/pull/5824 +[#5829]: https://github.com/tokio-rs/tokio/pull/5829 +[#5858]: https://github.com/tokio-rs/tokio/pull/5858 +[#5859]: https://github.com/tokio-rs/tokio/pull/5859 +[#5863]: https://github.com/tokio-rs/tokio/pull/5863 +[#5864]: https://github.com/tokio-rs/tokio/pull/5864 +[#5865]: https://github.com/tokio-rs/tokio/pull/5865 +[#5868]: https://github.com/tokio-rs/tokio/pull/5868 +[#5869]: https://github.com/tokio-rs/tokio/pull/5869 +[#5878]: https://github.com/tokio-rs/tokio/pull/5878 +[#5881]: https://github.com/tokio-rs/tokio/pull/5881 +[#5885]: https://github.com/tokio-rs/tokio/pull/5885 +[#5887]: https://github.com/tokio-rs/tokio/pull/5887 +[#5890]: https://github.com/tokio-rs/tokio/pull/5890 +[#5899]: https://github.com/tokio-rs/tokio/pull/5899 +[#5908]: https://github.com/tokio-rs/tokio/pull/5908 +[#5916]: https://github.com/tokio-rs/tokio/pull/5916 + # 1.29.1 (June 29, 2023) ### Fixed diff -Nru temporalio-1.3.0/vendor/tokio/README.md temporalio-1.3.0/vendor/tokio/README.md --- temporalio-1.3.0/vendor/tokio/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -56,7 +56,7 @@ ```toml [dependencies] -tokio = { version = "1.29.1", features = ["full"] } +tokio = { version = "1.32.0", features = ["full"] } ``` Then, on your main.rs: @@ -187,12 +187,13 @@ Tokio will keep a rolling MSRV (minimum supported rust version) policy of **at least** 6 months. When increasing the MSRV, the new Rust version must have been -released at least six months ago. The current MSRV is 1.56.0. +released at least six months ago. The current MSRV is 1.63. Note that the MSRV is not increased automatically, and only as part of a minor release. The MSRV history for past minor releases can be found below: - * 1.27 to now - Rust 1.56 + * 1.30 to now - Rust 1.63 + * 1.27 to 1.29 - Rust 1.56 * 1.17 to 1.26 - Rust 1.49 * 1.15 to 1.16 - Rust 1.46 * 1.0 to 1.14 - Rust 1.45 @@ -215,7 +216,6 @@ released as a new patch release for each LTS minor version. Our current LTS releases are: - * `1.18.x` - LTS release until June 2023. (MSRV 1.49) * `1.20.x` - LTS release until September 2023. (MSRV 1.49) * `1.25.x` - LTS release until March 2024. (MSRV 1.49) @@ -230,6 +230,12 @@ tokio = { version = "~1.18", features = [...] } ``` +### Previous LTS releases + + * `1.8.x` - LTS release until February 2022. + * `1.14.x` - LTS release until June 2022. + * `1.18.x` - LTS release until June 2023. + ## License This project is licensed under the [MIT license]. diff -Nru temporalio-1.3.0/vendor/tokio/src/doc/os.rs temporalio-1.3.0/vendor/tokio/src/doc/os.rs --- temporalio-1.3.0/vendor/tokio/src/doc/os.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/doc/os.rs 2023-10-30 19:40:00.000000000 +0000 @@ -11,6 +11,9 @@ /// See [std::os::windows::io::RawHandle](https://doc.rust-lang.org/std/os/windows/io/type.RawHandle.html) pub type RawHandle = crate::doc::NotDefinedHere; + /// See [std::os::windows::io::OwnedHandle](https://doc.rust-lang.org/std/os/windows/io/struct.OwnedHandle.html) + pub type OwnedHandle = crate::doc::NotDefinedHere; + /// See [std::os::windows::io::AsRawHandle](https://doc.rust-lang.org/std/os/windows/io/trait.AsRawHandle.html) pub trait AsRawHandle { /// See [std::os::windows::io::AsRawHandle::as_raw_handle](https://doc.rust-lang.org/std/os/windows/io/trait.AsRawHandle.html#tymethod.as_raw_handle) diff -Nru temporalio-1.3.0/vendor/tokio/src/fs/file.rs temporalio-1.3.0/vendor/tokio/src/fs/file.rs --- temporalio-1.3.0/vendor/tokio/src/fs/file.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/fs/file.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,7 +3,7 @@ //! [`File`]: File use self::State::*; -use crate::fs::asyncify; +use crate::fs::{asyncify, OpenOptions}; use crate::io::blocking::Buf; use crate::io::{AsyncRead, AsyncSeek, AsyncWrite, ReadBuf}; use crate::sync::Mutex; @@ -124,8 +124,6 @@ /// /// See [`OpenOptions`] for more details. /// - /// [`OpenOptions`]: super::OpenOptions - /// /// # Errors /// /// This function will return an error if called from outside of the Tokio @@ -167,8 +165,6 @@ /// /// See [`OpenOptions`] for more details. /// - /// [`OpenOptions`]: super::OpenOptions - /// /// # Errors /// /// Results in an error if called from outside of the Tokio runtime or if @@ -199,6 +195,37 @@ Ok(File::from_std(std_file)) } + /// Returns a new [`OpenOptions`] object. + /// + /// This function returns a new `OpenOptions` object that you can use to + /// open or create a file with specific options if `open()` or `create()` + /// are not appropriate. + /// + /// It is equivalent to `OpenOptions::new()`, but allows you to write more + /// readable code. Instead of + /// `OpenOptions::new().append(true).open("example.log")`, + /// you can write `File::options().append(true).open("example.log")`. This + /// also avoids the need to import `OpenOptions`. + /// + /// See the [`OpenOptions::new`] function for more details. + /// + /// # Examples + /// + /// ```no_run + /// use tokio::fs::File; + /// use tokio::io::AsyncWriteExt; + /// + /// # async fn dox() -> std::io::Result<()> { + /// let mut f = File::options().append(true).open("example.log").await?; + /// f.write_all(b"new line\n").await?; + /// # Ok(()) + /// # } + /// ``` + #[must_use] + pub fn options() -> OpenOptions { + OpenOptions::new() + } + /// Converts a [`std::fs::File`][std] to a [`tokio::fs::File`][file]. /// /// [std]: std::fs::File @@ -731,7 +758,7 @@ } } -#[cfg(all(unix, not(tokio_no_as_fd)))] +#[cfg(unix)] impl std::os::unix::io::AsFd for File { fn as_fd(&self) -> std::os::unix::io::BorrowedFd<'_> { unsafe { @@ -748,9 +775,7 @@ } cfg_windows! { - use crate::os::windows::io::{AsRawHandle, FromRawHandle, RawHandle}; - #[cfg(not(tokio_no_as_fd))] - use crate::os::windows::io::{AsHandle, BorrowedHandle}; + use crate::os::windows::io::{AsRawHandle, FromRawHandle, RawHandle, AsHandle, BorrowedHandle}; impl AsRawHandle for File { fn as_raw_handle(&self) -> RawHandle { @@ -758,7 +783,6 @@ } } - #[cfg(not(tokio_no_as_fd))] impl AsHandle for File { fn as_handle(&self) -> BorrowedHandle<'_> { unsafe { diff -Nru temporalio-1.3.0/vendor/tokio/src/io/async_fd.rs temporalio-1.3.0/vendor/tokio/src/io/async_fd.rs --- temporalio-1.3.0/vendor/tokio/src/io/async_fd.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/io/async_fd.rs 2023-10-30 19:40:00.000000000 +0000 @@ -176,6 +176,8 @@ /// [`AsyncWrite`]: trait@crate::io::AsyncWrite pub struct AsyncFd { registration: Registration, + // The inner value is always present. the Option is required for `drop` and `into_inner`. + // In all other methods `unwrap` is valid, and will never panic. inner: Option, } @@ -271,13 +273,12 @@ } fn take_inner(&mut self) -> Option { - let fd = self.inner.as_ref().map(AsRawFd::as_raw_fd); + let inner = self.inner.take()?; + let fd = inner.as_raw_fd(); - if let Some(fd) = fd { - let _ = self.registration.deregister(&mut SourceFd(&fd)); - } + let _ = self.registration.deregister(&mut SourceFd(&fd)); - self.inner.take() + Some(inner) } /// Deregisters this file descriptor and returns ownership of the backing @@ -319,11 +320,10 @@ ) -> Poll>> { let event = ready!(self.registration.poll_read_ready(cx))?; - Ok(AsyncFdReadyGuard { + Poll::Ready(Ok(AsyncFdReadyGuard { async_fd: self, event: Some(event), - }) - .into() + })) } /// Polls for read readiness. @@ -357,11 +357,10 @@ ) -> Poll>> { let event = ready!(self.registration.poll_read_ready(cx))?; - Ok(AsyncFdReadyMutGuard { + Poll::Ready(Ok(AsyncFdReadyMutGuard { async_fd: self, event: Some(event), - }) - .into() + })) } /// Polls for write readiness. @@ -397,11 +396,10 @@ ) -> Poll>> { let event = ready!(self.registration.poll_write_ready(cx))?; - Ok(AsyncFdReadyGuard { + Poll::Ready(Ok(AsyncFdReadyGuard { async_fd: self, event: Some(event), - }) - .into() + })) } /// Polls for write readiness. @@ -435,11 +433,10 @@ ) -> Poll>> { let event = ready!(self.registration.poll_write_ready(cx))?; - Ok(AsyncFdReadyMutGuard { + Poll::Ready(Ok(AsyncFdReadyMutGuard { async_fd: self, event: Some(event), - }) - .into() + })) } /// Waits for any of the requested ready states, returning a @@ -797,7 +794,6 @@ } } -#[cfg(not(tokio_no_as_fd))] impl std::os::unix::io::AsFd for AsyncFd { fn as_fd(&self) -> std::os::unix::io::BorrowedFd<'_> { unsafe { std::os::unix::io::BorrowedFd::borrow_raw(self.as_raw_fd()) } @@ -1014,14 +1010,11 @@ ) -> Result, TryIoError> { let result = f(self.async_fd); - if let Err(e) = result.as_ref() { - if e.kind() == io::ErrorKind::WouldBlock { + match result { + Err(err) if err.kind() == io::ErrorKind::WouldBlock => { self.clear_ready(); + Err(TryIoError(())) } - } - - match result { - Err(err) if err.kind() == io::ErrorKind::WouldBlock => Err(TryIoError(())), result => Ok(result), } } @@ -1194,14 +1187,11 @@ ) -> Result, TryIoError> { let result = f(self.async_fd); - if let Err(e) = result.as_ref() { - if e.kind() == io::ErrorKind::WouldBlock { + match result { + Err(err) if err.kind() == io::ErrorKind::WouldBlock => { self.clear_ready(); + Err(TryIoError(())) } - } - - match result { - Err(err) if err.kind() == io::ErrorKind::WouldBlock => Err(TryIoError(())), result => Ok(result), } } diff -Nru temporalio-1.3.0/vendor/tokio/src/io/interest.rs temporalio-1.3.0/vendor/tokio/src/io/interest.rs --- temporalio-1.3.0/vendor/tokio/src/io/interest.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/io/interest.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,13 +5,28 @@ use std::fmt; use std::ops; +// These must be unique. +// same as mio +const READABLE: usize = 0b0001; +const WRITABLE: usize = 0b0010; +// The following are not available on all platforms. +#[cfg(target_os = "freebsd")] +const AIO: usize = 0b0100; +#[cfg(target_os = "freebsd")] +const LIO: usize = 0b1000; +#[cfg(any(target_os = "linux", target_os = "android"))] +const PRIORITY: usize = 0b0001_0000; +// error is available on all platforms, but behavior is platform-specific +// mio does not have this interest +const ERROR: usize = 0b0010_0000; + /// Readiness event interest. /// /// Specifies the readiness events the caller is interested in when awaiting on /// I/O resource readiness states. #[cfg_attr(docsrs, doc(cfg(feature = "net")))] #[derive(Clone, Copy, Eq, PartialEq)] -pub struct Interest(mio::Interest); +pub struct Interest(usize); impl Interest { // The non-FreeBSD definitions in this block are active only when @@ -19,35 +34,41 @@ cfg_aio! { /// Interest for POSIX AIO. #[cfg(target_os = "freebsd")] - pub const AIO: Interest = Interest(mio::Interest::AIO); + pub const AIO: Interest = Interest(AIO); /// Interest for POSIX AIO. #[cfg(not(target_os = "freebsd"))] - pub const AIO: Interest = Interest(mio::Interest::READABLE); + pub const AIO: Interest = Interest(READABLE); /// Interest for POSIX AIO lio_listio events. #[cfg(target_os = "freebsd")] - pub const LIO: Interest = Interest(mio::Interest::LIO); + pub const LIO: Interest = Interest(LIO); /// Interest for POSIX AIO lio_listio events. #[cfg(not(target_os = "freebsd"))] - pub const LIO: Interest = Interest(mio::Interest::READABLE); + pub const LIO: Interest = Interest(READABLE); } /// Interest in all readable events. /// /// Readable interest includes read-closed events. - pub const READABLE: Interest = Interest(mio::Interest::READABLE); + pub const READABLE: Interest = Interest(READABLE); /// Interest in all writable events. /// /// Writable interest includes write-closed events. - pub const WRITABLE: Interest = Interest(mio::Interest::WRITABLE); + pub const WRITABLE: Interest = Interest(WRITABLE); + + /// Interest in error events. + /// + /// Passes error interest to the underlying OS selector. + /// Behavior is platform-specific, read your platform's documentation. + pub const ERROR: Interest = Interest(ERROR); /// Returns a `Interest` set representing priority completion interests. #[cfg(any(target_os = "linux", target_os = "android"))] #[cfg_attr(docsrs, doc(cfg(any(target_os = "linux", target_os = "android"))))] - pub const PRIORITY: Interest = Interest(mio::Interest::PRIORITY); + pub const PRIORITY: Interest = Interest(PRIORITY); /// Returns true if the value includes readable interest. /// @@ -63,7 +84,7 @@ /// assert!(both.is_readable()); /// ``` pub const fn is_readable(self) -> bool { - self.0.is_readable() + self.0 & READABLE != 0 } /// Returns true if the value includes writable interest. @@ -80,7 +101,34 @@ /// assert!(both.is_writable()); /// ``` pub const fn is_writable(self) -> bool { - self.0.is_writable() + self.0 & WRITABLE != 0 + } + + /// Returns true if the value includes error interest. + /// + /// # Examples + /// + /// ``` + /// use tokio::io::Interest; + /// + /// assert!(Interest::ERROR.is_error()); + /// assert!(!Interest::WRITABLE.is_error()); + /// + /// let combined = Interest::READABLE | Interest::ERROR; + /// assert!(combined.is_error()); + /// ``` + pub const fn is_error(self) -> bool { + self.0 & ERROR != 0 + } + + #[cfg(target_os = "freebsd")] + const fn is_aio(self) -> bool { + self.0 & AIO != 0 + } + + #[cfg(target_os = "freebsd")] + const fn is_lio(self) -> bool { + self.0 & LIO != 0 } /// Returns true if the value includes priority interest. @@ -99,7 +147,7 @@ #[cfg(any(target_os = "linux", target_os = "android"))] #[cfg_attr(docsrs, doc(cfg(any(target_os = "linux", target_os = "android"))))] pub const fn is_priority(self) -> bool { - self.0.is_priority() + self.0 & PRIORITY != 0 } /// Add together two `Interest` values. @@ -116,12 +164,60 @@ /// assert!(BOTH.is_readable()); /// assert!(BOTH.is_writable()); pub const fn add(self, other: Interest) -> Interest { - Interest(self.0.add(other.0)) + Self(self.0 | other.0) } // This function must be crate-private to avoid exposing a `mio` dependency. - pub(crate) const fn to_mio(self) -> mio::Interest { - self.0 + pub(crate) fn to_mio(self) -> mio::Interest { + fn mio_add(wrapped: &mut Option, add: mio::Interest) { + match wrapped { + Some(inner) => *inner |= add, + None => *wrapped = Some(add), + } + } + + // mio does not allow and empty interest, so use None for empty + let mut mio = None; + + if self.is_readable() { + mio_add(&mut mio, mio::Interest::READABLE); + } + + if self.is_writable() { + mio_add(&mut mio, mio::Interest::WRITABLE); + } + + #[cfg(any(target_os = "linux", target_os = "android"))] + if self.is_priority() { + mio_add(&mut mio, mio::Interest::PRIORITY); + } + + #[cfg(target_os = "freebsd")] + if self.is_aio() { + mio_add(&mut mio, mio::Interest::AIO); + } + + #[cfg(target_os = "freebsd")] + if self.is_lio() { + mio_add(&mut mio, mio::Interest::LIO); + } + + if self.is_error() { + // There is no error interest in mio, because error events are always reported. + // But mio interests cannot be empty and an interest is needed just for the registeration. + // + // read readiness is filtered out in `Interest::mask` or `Ready::from_interest` if + // the read interest was not specified by the user. + mio_add(&mut mio, mio::Interest::READABLE); + } + + // the default `mio::Interest::READABLE` should never be used in practice. Either + // + // - at least one tokio interest with a mio counterpart was used + // - only the error tokio interest was specified + // + // in both cases, `mio` is Some already + mio.unwrap_or(mio::Interest::READABLE) } pub(crate) fn mask(self) -> Ready { @@ -130,6 +226,7 @@ Interest::WRITABLE => Ready::WRITABLE | Ready::WRITE_CLOSED, #[cfg(any(target_os = "linux", target_os = "android"))] Interest::PRIORITY => Ready::PRIORITY | Ready::READ_CLOSED, + Interest::ERROR => Ready::ERROR, _ => Ready::EMPTY, } } @@ -147,12 +244,67 @@ impl ops::BitOrAssign for Interest { #[inline] fn bitor_assign(&mut self, other: Self) { - self.0 = (*self | other).0; + *self = *self | other } } impl fmt::Debug for Interest { fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { - self.0.fmt(fmt) + let mut separator = false; + + if self.is_readable() { + if separator { + write!(fmt, " | ")?; + } + write!(fmt, "READABLE")?; + separator = true; + } + + if self.is_writable() { + if separator { + write!(fmt, " | ")?; + } + write!(fmt, "WRITABLE")?; + separator = true; + } + + #[cfg(any(target_os = "linux", target_os = "android"))] + if self.is_priority() { + if separator { + write!(fmt, " | ")?; + } + write!(fmt, "PRIORITY")?; + separator = true; + } + + #[cfg(target_os = "freebsd")] + if self.is_aio() { + if separator { + write!(fmt, " | ")?; + } + write!(fmt, "AIO")?; + separator = true; + } + + #[cfg(target_os = "freebsd")] + if self.is_lio() { + if separator { + write!(fmt, " | ")?; + } + write!(fmt, "LIO")?; + separator = true; + } + + if self.is_error() { + if separator { + write!(fmt, " | ")?; + } + write!(fmt, "ERROR")?; + separator = true; + } + + let _ = separator; + + Ok(()) } } diff -Nru temporalio-1.3.0/vendor/tokio/src/io/mod.rs temporalio-1.3.0/vendor/tokio/src/io/mod.rs --- temporalio-1.3.0/vendor/tokio/src/io/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/io/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -223,11 +223,11 @@ pub use ready::Ready; } - #[cfg_attr(tokio_wasi, allow(unused_imports))] + #[cfg_attr(target_os = "wasi", allow(unused_imports))] mod poll_evented; #[cfg(not(loom))] - #[cfg_attr(tokio_wasi, allow(unused_imports))] + #[cfg_attr(target_os = "wasi", allow(unused_imports))] pub(crate) use poll_evented::PollEvented; } diff -Nru temporalio-1.3.0/vendor/tokio/src/io/poll_evented.rs temporalio-1.3.0/vendor/tokio/src/io/poll_evented.rs --- temporalio-1.3.0/vendor/tokio/src/io/poll_evented.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/io/poll_evented.rs 2023-10-30 19:40:00.000000000 +0000 @@ -124,7 +124,7 @@ } /// Returns a reference to the registration. - #[cfg(any(feature = "net"))] + #[cfg(feature = "net")] pub(crate) fn registration(&self) -> &Registration { &self.registration } @@ -165,8 +165,10 @@ match self.io.as_ref().unwrap().read(b) { Ok(n) => { // if we read a partially full buffer, this is sufficient on unix to show - // that the socket buffer has been drained - if n > 0 && (!cfg!(windows) && n < len) { + // that the socket buffer has been drained. Unfortunately this assumption + // fails for level-triggered selectors (like on Windows or poll even for + // UNIX): https://github.com/tokio-rs/tokio/issues/5866 + if n > 0 && (!cfg!(windows) && !cfg!(mio_unsupported_force_poll_poll) && n < len) { self.registration.clear_readiness(evt); } @@ -196,8 +198,10 @@ match self.io.as_ref().unwrap().write(buf) { Ok(n) => { // if we write only part of our buffer, this is sufficient on unix to show - // that the socket buffer is full - if n > 0 && (!cfg!(windows) && n < buf.len()) { + // that the socket buffer is full. Unfortunately this assumption + // fails for level-triggered selectors (like on Windows or poll even for + // UNIX): https://github.com/tokio-rs/tokio/issues/5866 + if n > 0 && (!cfg!(windows) && !cfg!(mio_unsupported_force_poll_poll) && n < buf.len()) { self.registration.clear_readiness(evt); } diff -Nru temporalio-1.3.0/vendor/tokio/src/io/ready.rs temporalio-1.3.0/vendor/tokio/src/io/ready.rs --- temporalio-1.3.0/vendor/tokio/src/io/ready.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/io/ready.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,7 @@ #![cfg_attr(not(feature = "net"), allow(unreachable_pub))] +use crate::io::interest::Interest; + use std::fmt; use std::ops; @@ -9,6 +11,7 @@ const WRITE_CLOSED: usize = 0b0_1000; #[cfg(any(target_os = "linux", target_os = "android"))] const PRIORITY: usize = 0b1_0000; +const ERROR: usize = 0b10_0000; /// Describes the readiness state of an I/O resources. /// @@ -38,13 +41,17 @@ #[cfg_attr(docsrs, doc(cfg(any(target_os = "linux", target_os = "android"))))] pub const PRIORITY: Ready = Ready(PRIORITY); + /// Returns a `Ready` representing error readiness. + pub const ERROR: Ready = Ready(ERROR); + /// Returns a `Ready` representing readiness for all operations. #[cfg(any(target_os = "linux", target_os = "android"))] - pub const ALL: Ready = Ready(READABLE | WRITABLE | READ_CLOSED | WRITE_CLOSED | PRIORITY); + pub const ALL: Ready = + Ready(READABLE | WRITABLE | READ_CLOSED | WRITE_CLOSED | ERROR | PRIORITY); /// Returns a `Ready` representing readiness for all operations. #[cfg(not(any(target_os = "linux", target_os = "android")))] - pub const ALL: Ready = Ready(READABLE | WRITABLE | READ_CLOSED | WRITE_CLOSED); + pub const ALL: Ready = Ready(READABLE | WRITABLE | READ_CLOSED | WRITE_CLOSED | ERROR); // Must remain crate-private to avoid adding a public dependency on Mio. pub(crate) fn from_mio(event: &mio::event::Event) -> Ready { @@ -77,6 +84,10 @@ ready |= Ready::WRITE_CLOSED; } + if event.is_error() { + ready |= Ready::ERROR; + } + #[cfg(any(target_os = "linux", target_os = "android"))] { if event.is_priority() { @@ -180,6 +191,21 @@ self.contains(Ready::PRIORITY) } + /// Returns `true` if the value includes error `readiness`. + /// + /// # Examples + /// + /// ``` + /// use tokio::io::Ready; + /// + /// assert!(!Ready::EMPTY.is_error()); + /// assert!(!Ready::WRITABLE.is_error()); + /// assert!(Ready::ERROR.is_error()); + /// ``` + pub fn is_error(self) -> bool { + self.contains(Ready::ERROR) + } + /// Returns true if `self` is a superset of `other`. /// /// `other` may represent more than one readiness operations, in which case @@ -208,41 +234,39 @@ pub(crate) fn as_usize(self) -> usize { self.0 } -} - -cfg_io_readiness! { - use crate::io::Interest; - - impl Ready { - pub(crate) fn from_interest(interest: Interest) -> Ready { - let mut ready = Ready::EMPTY; - - if interest.is_readable() { - ready |= Ready::READABLE; - ready |= Ready::READ_CLOSED; - } - if interest.is_writable() { - ready |= Ready::WRITABLE; - ready |= Ready::WRITE_CLOSED; - } + pub(crate) fn from_interest(interest: Interest) -> Ready { + let mut ready = Ready::EMPTY; - #[cfg(any(target_os = "linux", target_os = "android"))] - if interest.is_priority() { - ready |= Ready::PRIORITY; - ready |= Ready::READ_CLOSED; - } + if interest.is_readable() { + ready |= Ready::READABLE; + ready |= Ready::READ_CLOSED; + } - ready + if interest.is_writable() { + ready |= Ready::WRITABLE; + ready |= Ready::WRITE_CLOSED; } - pub(crate) fn intersection(self, interest: Interest) -> Ready { - Ready(self.0 & Ready::from_interest(interest).0) + #[cfg(any(target_os = "linux", target_os = "android"))] + if interest.is_priority() { + ready |= Ready::PRIORITY; + ready |= Ready::READ_CLOSED; } - pub(crate) fn satisfies(self, interest: Interest) -> bool { - self.0 & Ready::from_interest(interest).0 != 0 + if interest.is_error() { + ready |= Ready::ERROR; } + + ready + } + + pub(crate) fn intersection(self, interest: Interest) -> Ready { + Ready(self.0 & Ready::from_interest(interest).0) + } + + pub(crate) fn satisfies(self, interest: Interest) -> bool { + self.0 & Ready::from_interest(interest).0 != 0 } } @@ -287,7 +311,8 @@ fmt.field("is_readable", &self.is_readable()) .field("is_writable", &self.is_writable()) .field("is_read_closed", &self.is_read_closed()) - .field("is_write_closed", &self.is_write_closed()); + .field("is_write_closed", &self.is_write_closed()) + .field("is_error", &self.is_error()); #[cfg(any(target_os = "linux", target_os = "android"))] fmt.field("is_priority", &self.is_priority()); diff -Nru temporalio-1.3.0/vendor/tokio/src/io/split.rs temporalio-1.3.0/vendor/tokio/src/io/split.rs --- temporalio-1.3.0/vendor/tokio/src/io/split.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/io/split.rs 2023-10-30 19:40:00.000000000 +0000 @@ -35,9 +35,12 @@ where T: AsyncRead + AsyncWrite, { + let is_write_vectored = stream.is_write_vectored(); + let inner = Arc::new(Inner { locked: AtomicBool::new(false), stream: UnsafeCell::new(stream), + is_write_vectored, }); let rd = ReadHalf { @@ -53,6 +56,7 @@ struct Inner { locked: AtomicBool, stream: UnsafeCell, + is_write_vectored: bool, } struct Guard<'a, T> { @@ -131,6 +135,19 @@ let mut inner = ready!(self.inner.poll_lock(cx)); inner.stream_pin().poll_shutdown(cx) } + + fn poll_write_vectored( + self: Pin<&mut Self>, + cx: &mut Context<'_>, + bufs: &[io::IoSlice<'_>], + ) -> Poll> { + let mut inner = ready!(self.inner.poll_lock(cx)); + inner.stream_pin().poll_write_vectored(cx, bufs) + } + + fn is_write_vectored(&self) -> bool { + self.inner.is_write_vectored + } } impl Inner { diff -Nru temporalio-1.3.0/vendor/tokio/src/io/stderr.rs temporalio-1.3.0/vendor/tokio/src/io/stderr.rs --- temporalio-1.3.0/vendor/tokio/src/io/stderr.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/io/stderr.rs 2023-10-30 19:40:00.000000000 +0000 @@ -75,9 +75,7 @@ #[cfg(unix)] mod sys { - #[cfg(not(tokio_no_as_fd))] - use std::os::unix::io::{AsFd, BorrowedFd}; - use std::os::unix::io::{AsRawFd, RawFd}; + use std::os::unix::io::{AsFd, AsRawFd, BorrowedFd, RawFd}; use super::Stderr; @@ -87,7 +85,6 @@ } } - #[cfg(not(tokio_no_as_fd))] impl AsFd for Stderr { fn as_fd(&self) -> BorrowedFd<'_> { unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } @@ -96,9 +93,7 @@ } cfg_windows! { - #[cfg(not(tokio_no_as_fd))] - use crate::os::windows::io::{AsHandle, BorrowedHandle}; - use crate::os::windows::io::{AsRawHandle, RawHandle}; + use crate::os::windows::io::{AsHandle, BorrowedHandle, AsRawHandle, RawHandle}; impl AsRawHandle for Stderr { fn as_raw_handle(&self) -> RawHandle { @@ -106,7 +101,6 @@ } } - #[cfg(not(tokio_no_as_fd))] impl AsHandle for Stderr { fn as_handle(&self) -> BorrowedHandle<'_> { unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } diff -Nru temporalio-1.3.0/vendor/tokio/src/io/stdin.rs temporalio-1.3.0/vendor/tokio/src/io/stdin.rs --- temporalio-1.3.0/vendor/tokio/src/io/stdin.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/io/stdin.rs 2023-10-30 19:40:00.000000000 +0000 @@ -50,9 +50,7 @@ #[cfg(unix)] mod sys { - #[cfg(not(tokio_no_as_fd))] - use std::os::unix::io::{AsFd, BorrowedFd}; - use std::os::unix::io::{AsRawFd, RawFd}; + use std::os::unix::io::{AsFd, AsRawFd, BorrowedFd, RawFd}; use super::Stdin; @@ -62,7 +60,6 @@ } } - #[cfg(not(tokio_no_as_fd))] impl AsFd for Stdin { fn as_fd(&self) -> BorrowedFd<'_> { unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } @@ -71,9 +68,7 @@ } cfg_windows! { - #[cfg(not(tokio_no_as_fd))] - use crate::os::windows::io::{AsHandle, BorrowedHandle}; - use crate::os::windows::io::{AsRawHandle, RawHandle}; + use crate::os::windows::io::{AsHandle, BorrowedHandle, AsRawHandle, RawHandle}; impl AsRawHandle for Stdin { fn as_raw_handle(&self) -> RawHandle { @@ -81,7 +76,6 @@ } } - #[cfg(not(tokio_no_as_fd))] impl AsHandle for Stdin { fn as_handle(&self) -> BorrowedHandle<'_> { unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } diff -Nru temporalio-1.3.0/vendor/tokio/src/io/stdout.rs temporalio-1.3.0/vendor/tokio/src/io/stdout.rs --- temporalio-1.3.0/vendor/tokio/src/io/stdout.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/io/stdout.rs 2023-10-30 19:40:00.000000000 +0000 @@ -74,9 +74,7 @@ #[cfg(unix)] mod sys { - #[cfg(not(tokio_no_as_fd))] - use std::os::unix::io::{AsFd, BorrowedFd}; - use std::os::unix::io::{AsRawFd, RawFd}; + use std::os::unix::io::{AsFd, AsRawFd, BorrowedFd, RawFd}; use super::Stdout; @@ -86,7 +84,6 @@ } } - #[cfg(not(tokio_no_as_fd))] impl AsFd for Stdout { fn as_fd(&self) -> BorrowedFd<'_> { unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } @@ -95,9 +92,7 @@ } cfg_windows! { - #[cfg(not(tokio_no_as_fd))] - use crate::os::windows::io::{AsHandle, BorrowedHandle}; - use crate::os::windows::io::{AsRawHandle, RawHandle}; + use crate::os::windows::io::{AsHandle, BorrowedHandle, AsRawHandle, RawHandle}; impl AsRawHandle for Stdout { fn as_raw_handle(&self) -> RawHandle { @@ -105,7 +100,6 @@ } } - #[cfg(not(tokio_no_as_fd))] impl AsHandle for Stdout { fn as_handle(&self) -> BorrowedHandle<'_> { unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } diff -Nru temporalio-1.3.0/vendor/tokio/src/io/util/async_read_ext.rs temporalio-1.3.0/vendor/tokio/src/io/util/async_read_ext.rs --- temporalio-1.3.0/vendor/tokio/src/io/util/async_read_ext.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/io/util/async_read_ext.rs 2023-10-30 19:40:00.000000000 +0000 @@ -27,7 +27,7 @@ ) => { $( $(#[$outer])* - fn $name<'a>(&'a mut self) -> $($fut)*<&'a mut Self> where Self: Unpin { + fn $name(&mut self) -> $($fut)*<&mut Self> where Self: Unpin { $($fut)*::new(self) } )* @@ -230,10 +230,13 @@ /// let mut buffer = BytesMut::with_capacity(10); /// /// assert!(buffer.is_empty()); + /// assert!(buffer.capacity() >= 10); /// - /// // read up to 10 bytes, note that the return value is not needed - /// // to access the data that was read as `buffer`'s internal - /// // cursor is updated. + /// // note that the return value is not needed to access the data + /// // that was read as `buffer`'s internal cursor is updated. + /// // + /// // this might read more than 10 bytes if the capacity of `buffer` + /// // is larger than 10. /// f.read_buf(&mut buffer).await?; /// /// println!("The bytes: {:?}", &buffer[..]); @@ -292,7 +295,8 @@ /// #[tokio::main] /// async fn main() -> io::Result<()> { /// let mut f = File::open("foo.txt").await?; - /// let mut buffer = [0; 10]; + /// let len = 10; + /// let mut buffer = vec![0; len]; /// /// // read exactly 10 bytes /// f.read_exact(&mut buffer).await?; diff -Nru temporalio-1.3.0/vendor/tokio/src/io/util/async_write_ext.rs temporalio-1.3.0/vendor/tokio/src/io/util/async_write_ext.rs --- temporalio-1.3.0/vendor/tokio/src/io/util/async_write_ext.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/io/util/async_write_ext.rs 2023-10-30 19:40:00.000000000 +0000 @@ -30,7 +30,7 @@ ) => { $( $(#[$outer])* - fn $name<'a>(&'a mut self, n: $ty) -> $($fut)*<&'a mut Self> where Self: Unpin { + fn $name(&mut self, n: $ty) -> $($fut)*<&mut Self> where Self: Unpin { $($fut)*::new(self, n) } )* diff -Nru temporalio-1.3.0/vendor/tokio/src/lib.rs temporalio-1.3.0/vendor/tokio/src/lib.rs --- temporalio-1.3.0/vendor/tokio/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -456,26 +456,9 @@ "Tokio requires the platform pointer width to be 32, 64, or 128 bits" } -// Ensure that our build script has correctly set cfg flags for wasm. -// -// Each condition is written all(a, not(b)). This should be read as -// "if a, then we must also have b". -#[cfg(any( - all(target_arch = "wasm32", not(tokio_wasm)), - all(target_arch = "wasm64", not(tokio_wasm)), - all(target_family = "wasm", not(tokio_wasm)), - all(target_os = "wasi", not(tokio_wasm)), - all(target_os = "wasi", not(tokio_wasi)), - all(target_os = "wasi", tokio_wasm_not_wasi), - all(tokio_wasm, not(any(target_arch = "wasm32", target_arch = "wasm64"))), - all(tokio_wasm_not_wasi, not(tokio_wasm)), - all(tokio_wasi, not(tokio_wasm)) -))] -compile_error!("Tokio's build script has incorrectly detected wasm."); - #[cfg(all( not(tokio_unstable), - tokio_wasm, + target_family = "wasm", any( feature = "fs", feature = "io-std", diff -Nru temporalio-1.3.0/vendor/tokio/src/loom/mocked.rs temporalio-1.3.0/vendor/tokio/src/loom/mocked.rs --- temporalio-1.3.0/vendor/tokio/src/loom/mocked.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/loom/mocked.rs 2023-10-30 19:40:00.000000000 +0000 @@ -15,6 +15,7 @@ } #[inline] + #[track_caller] pub(crate) fn lock(&self) -> MutexGuard<'_, T> { self.0.lock().unwrap() } diff -Nru temporalio-1.3.0/vendor/tokio/src/loom/std/mod.rs temporalio-1.3.0/vendor/tokio/src/loom/std/mod.rs --- temporalio-1.3.0/vendor/tokio/src/loom/std/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/loom/std/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,7 +6,7 @@ mod atomic_usize; mod barrier; mod mutex; -#[cfg(feature = "parking_lot")] +#[cfg(all(feature = "parking_lot", not(miri)))] mod parking_lot; mod unsafe_cell; @@ -56,17 +56,17 @@ // internal use. Note however that some are not _currently_ named by // consuming code. - #[cfg(feature = "parking_lot")] + #[cfg(all(feature = "parking_lot", not(miri)))] #[allow(unused_imports)] pub(crate) use crate::loom::std::parking_lot::{ Condvar, Mutex, MutexGuard, RwLock, RwLockReadGuard, WaitTimeoutResult, }; - #[cfg(not(feature = "parking_lot"))] + #[cfg(not(all(feature = "parking_lot", not(miri))))] #[allow(unused_imports)] pub(crate) use std::sync::{Condvar, MutexGuard, RwLock, RwLockReadGuard, WaitTimeoutResult}; - #[cfg(not(feature = "parking_lot"))] + #[cfg(not(all(feature = "parking_lot", not(miri))))] pub(crate) use crate::loom::std::mutex::Mutex; pub(crate) mod atomic { diff -Nru temporalio-1.3.0/vendor/tokio/src/loom/std/mutex.rs temporalio-1.3.0/vendor/tokio/src/loom/std/mutex.rs --- temporalio-1.3.0/vendor/tokio/src/loom/std/mutex.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/loom/std/mutex.rs 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,6 @@ } #[inline] - #[cfg(not(tokio_no_const_mutex_new))] pub(crate) const fn const_new(t: T) -> Mutex { Mutex(sync::Mutex::new(t)) } diff -Nru temporalio-1.3.0/vendor/tokio/src/loom/std/parking_lot.rs temporalio-1.3.0/vendor/tokio/src/loom/std/parking_lot.rs --- temporalio-1.3.0/vendor/tokio/src/loom/std/parking_lot.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/loom/std/parking_lot.rs 2023-10-30 19:40:00.000000000 +0000 @@ -52,8 +52,7 @@ } #[inline] - #[cfg(all(feature = "parking_lot", not(all(loom, test))))] - #[cfg_attr(docsrs, doc(cfg(all(feature = "parking_lot",))))] + #[cfg(not(all(loom, test)))] pub(crate) const fn const_new(t: T) -> Mutex { Mutex(PhantomData, parking_lot::const_mutex(t)) } diff -Nru temporalio-1.3.0/vendor/tokio/src/loom/std/unsafe_cell.rs temporalio-1.3.0/vendor/tokio/src/loom/std/unsafe_cell.rs --- temporalio-1.3.0/vendor/tokio/src/loom/std/unsafe_cell.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/loom/std/unsafe_cell.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,10 +6,12 @@ UnsafeCell(std::cell::UnsafeCell::new(data)) } + #[inline(always)] pub(crate) fn with(&self, f: impl FnOnce(*const T) -> R) -> R { f(self.0.get()) } + #[inline(always)] pub(crate) fn with_mut(&self, f: impl FnOnce(*mut T) -> R) -> R { f(self.0.get()) } diff -Nru temporalio-1.3.0/vendor/tokio/src/macros/cfg.rs temporalio-1.3.0/vendor/tokio/src/macros/cfg.rs --- temporalio-1.3.0/vendor/tokio/src/macros/cfg.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/macros/cfg.rs 2023-10-30 19:40:00.000000000 +0000 @@ -25,6 +25,18 @@ } } +/// Enables unstable Windows-specific code. +/// Use this macro instead of `cfg(windows)` to generate docs properly. +macro_rules! cfg_unstable_windows { + ($($item:item)*) => { + $( + #[cfg(all(any(all(doc, docsrs), windows), tokio_unstable))] + #[cfg_attr(docsrs, doc(cfg(all(windows, tokio_unstable))))] + $item + )* + } +} + /// Enables enter::block_on. macro_rules! cfg_block_on { ($($item:item)*) => { @@ -73,7 +85,7 @@ ($($item:item)*) => { $( #[cfg(feature = "fs")] - #[cfg(not(tokio_wasi))] + #[cfg(not(target_os = "wasi"))] #[cfg_attr(docsrs, doc(cfg(feature = "fs")))] $item )* @@ -264,7 +276,7 @@ #[cfg(feature = "process")] #[cfg_attr(docsrs, doc(cfg(feature = "process")))] #[cfg(not(loom))] - #[cfg(not(tokio_wasi))] + #[cfg(not(target_os = "wasi"))] $item )* } @@ -293,7 +305,7 @@ #[cfg(feature = "signal")] #[cfg_attr(docsrs, doc(cfg(feature = "signal")))] #[cfg(not(loom))] - #[cfg(not(tokio_wasi))] + #[cfg(not(target_os = "wasi"))] $item )* } @@ -360,7 +372,7 @@ macro_rules! cfg_rt_multi_thread { ($($item:item)*) => { $( - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] #[cfg_attr(docsrs, doc(cfg(feature = "rt-multi-thread")))] $item )* @@ -511,14 +523,7 @@ macro_rules! cfg_has_atomic_u64 { ($($item:item)*) => { $( - #[cfg_attr( - not(tokio_no_target_has_atomic), - cfg(all(target_has_atomic = "64", not(tokio_no_atomic_u64)) - ))] - #[cfg_attr( - tokio_no_target_has_atomic, - cfg(not(tokio_no_atomic_u64)) - )] + #[cfg(target_has_atomic = "64")] $item )* } @@ -527,14 +532,7 @@ macro_rules! cfg_not_has_atomic_u64 { ($($item:item)*) => { $( - #[cfg_attr( - not(tokio_no_target_has_atomic), - cfg(any(not(target_has_atomic = "64"), tokio_no_atomic_u64) - ))] - #[cfg_attr( - tokio_no_target_has_atomic, - cfg(tokio_no_atomic_u64) - )] + #[cfg(not(target_has_atomic = "64"))] $item )* } @@ -543,13 +541,7 @@ macro_rules! cfg_has_const_mutex_new { ($($item:item)*) => { $( - #[cfg(all( - not(all(loom, test)), - any( - feature = "parking_lot", - not(tokio_no_const_mutex_new) - ) - ))] + #[cfg(not(all(loom, test)))] $item )* } @@ -558,13 +550,7 @@ macro_rules! cfg_not_has_const_mutex_new { ($($item:item)*) => { $( - #[cfg(not(all( - not(all(loom, test)), - any( - feature = "parking_lot", - not(tokio_no_const_mutex_new) - ) - )))] + #[cfg(all(loom, test))] $item )* } @@ -573,7 +559,7 @@ macro_rules! cfg_not_wasi { ($($item:item)*) => { $( - #[cfg(not(tokio_wasi))] + #[cfg(not(target_os = "wasi"))] $item )* } @@ -582,7 +568,7 @@ macro_rules! cfg_is_wasm_not_wasi { ($($item:item)*) => { $( - #[cfg(tokio_wasm_not_wasi)] + #[cfg(all(target_family = "wasm", not(target_os = "wasi")))] $item )* } diff -Nru temporalio-1.3.0/vendor/tokio/src/macros/thread_local.rs temporalio-1.3.0/vendor/tokio/src/macros/thread_local.rs --- temporalio-1.3.0/vendor/tokio/src/macros/thread_local.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/macros/thread_local.rs 2023-10-30 19:40:00.000000000 +0000 @@ -10,23 +10,9 @@ ($($tts:tt)+) => { loom::thread_local!{ $($tts)+ } } } -#[cfg(not(tokio_no_const_thread_local))] #[cfg(not(all(loom, test)))] macro_rules! tokio_thread_local { ($($tts:tt)+) => { ::std::thread_local!{ $($tts)+ } } } - -#[cfg(tokio_no_const_thread_local)] -#[cfg(not(all(loom, test)))] -macro_rules! tokio_thread_local { - ($(#[$attrs:meta])* $vis:vis static $name:ident: $ty:ty = const { $expr:expr } $(;)?) => { - ::std::thread_local! { - $(#[$attrs])* - $vis static $name: $ty = $expr; - } - }; - - ($($tts:tt)+) => { ::std::thread_local!{ $($tts)+ } } -} diff -Nru temporalio-1.3.0/vendor/tokio/src/net/tcp/listener.rs temporalio-1.3.0/vendor/tokio/src/net/tcp/listener.rs --- temporalio-1.3.0/vendor/tokio/src/net/tcp/listener.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/net/tcp/listener.rs 2023-10-30 19:40:00.000000000 +0000 @@ -281,7 +281,7 @@ .map(|raw_socket| unsafe { std::net::TcpListener::from_raw_socket(raw_socket) }) } - #[cfg(tokio_wasi)] + #[cfg(target_os = "wasi")] { use std::os::wasi::io::{FromRawFd, IntoRawFd}; self.io @@ -407,7 +407,6 @@ } } - #[cfg(not(tokio_no_as_fd))] impl AsFd for TcpListener { fn as_fd(&self) -> BorrowedFd<'_> { unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } @@ -416,7 +415,7 @@ } cfg_unstable! { - #[cfg(tokio_wasi)] + #[cfg(target_os = "wasi")] mod sys { use super::TcpListener; use std::os::wasi::prelude::*; @@ -427,7 +426,6 @@ } } - #[cfg(not(tokio_no_as_fd))] impl AsFd for TcpListener { fn as_fd(&self) -> BorrowedFd<'_> { unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } @@ -437,9 +435,7 @@ } cfg_windows! { - use crate::os::windows::io::{AsRawSocket, RawSocket}; - #[cfg(not(tokio_no_as_fd))] - use crate::os::windows::io::{AsSocket, BorrowedSocket}; + use crate::os::windows::io::{AsRawSocket, RawSocket, AsSocket, BorrowedSocket}; impl AsRawSocket for TcpListener { fn as_raw_socket(&self) -> RawSocket { @@ -447,7 +443,6 @@ } } - #[cfg(not(tokio_no_as_fd))] impl AsSocket for TcpListener { fn as_socket(&self) -> BorrowedSocket<'_> { unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } diff -Nru temporalio-1.3.0/vendor/tokio/src/net/tcp/socket.rs temporalio-1.3.0/vendor/tokio/src/net/tcp/socket.rs --- temporalio-1.3.0/vendor/tokio/src/net/tcp/socket.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/net/tcp/socket.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,16 +4,12 @@ use std::io; use std::net::SocketAddr; -#[cfg(all(unix, not(tokio_no_as_fd)))] -use std::os::unix::io::{AsFd, BorrowedFd}; #[cfg(unix)] -use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; +use std::os::unix::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, RawFd}; use std::time::Duration; cfg_windows! { - use crate::os::windows::io::{AsRawSocket, FromRawSocket, IntoRawSocket, RawSocket}; - #[cfg(not(tokio_no_as_fd))] - use crate::os::windows::io::{AsSocket, BorrowedSocket}; + use crate::os::windows::io::{AsRawSocket, FromRawSocket, IntoRawSocket, RawSocket, AsSocket, BorrowedSocket}; } cfg_net! { @@ -457,7 +453,7 @@ /// Windows Server 2012+.](https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options) /// /// [`set_tos`]: Self::set_tos - // https://docs.rs/socket2/0.4.2/src/socket2/socket.rs.html#1178 + // https://docs.rs/socket2/0.5.3/src/socket2/socket.rs.html#1464 #[cfg(not(any( target_os = "fuchsia", target_os = "redox", @@ -484,7 +480,7 @@ /// /// **NOTE:** On Windows, `IP_TOS` is only supported on [Windows 8+ or /// Windows Server 2012+.](https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options) - // https://docs.rs/socket2/0.4.2/src/socket2/socket.rs.html#1178 + // https://docs.rs/socket2/0.5.3/src/socket2/socket.rs.html#1446 #[cfg(not(any( target_os = "fuchsia", target_os = "redox", @@ -523,7 +519,7 @@ /// works for some socket types, particularly `AF_INET` sockets. /// /// If `interface` is `None` or an empty string it removes the binding. - #[cfg(all(any(target_os = "android", target_os = "fuchsia", target_os = "linux")))] + #[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))] #[cfg_attr( docsrs, doc(cfg(all(any(target_os = "android", target_os = "fuchsia", target_os = "linux")))) @@ -788,7 +784,7 @@ } } -#[cfg(all(unix, not(tokio_no_as_fd)))] +#[cfg(unix)] impl AsFd for TcpSocket { fn as_fd(&self) -> BorrowedFd<'_> { unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } @@ -829,7 +825,6 @@ } } - #[cfg(not(tokio_no_as_fd))] impl AsSocket for TcpSocket { fn as_socket(&self) -> BorrowedSocket<'_> { unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } diff -Nru temporalio-1.3.0/vendor/tokio/src/net/tcp/stream.rs temporalio-1.3.0/vendor/tokio/src/net/tcp/stream.rs --- temporalio-1.3.0/vendor/tokio/src/net/tcp/stream.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/net/tcp/stream.rs 2023-10-30 19:40:00.000000000 +0000 @@ -258,7 +258,7 @@ .map(|raw_socket| unsafe { std::net::TcpStream::from_raw_socket(raw_socket) }) } - #[cfg(tokio_wasi)] + #[cfg(target_os = "wasi")] { use std::os::wasi::io::{FromRawFd, IntoRawFd}; self.io @@ -1378,7 +1378,6 @@ } } - #[cfg(not(tokio_no_as_fd))] impl AsFd for TcpStream { fn as_fd(&self) -> BorrowedFd<'_> { unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } @@ -1387,9 +1386,7 @@ } cfg_windows! { - use crate::os::windows::io::{AsRawSocket, RawSocket}; - #[cfg(not(tokio_no_as_fd))] - use crate::os::windows::io::{AsSocket, BorrowedSocket}; + use crate::os::windows::io::{AsRawSocket, RawSocket, AsSocket, BorrowedSocket}; impl AsRawSocket for TcpStream { fn as_raw_socket(&self) -> RawSocket { @@ -1397,7 +1394,6 @@ } } - #[cfg(not(tokio_no_as_fd))] impl AsSocket for TcpStream { fn as_socket(&self) -> BorrowedSocket<'_> { unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } @@ -1405,7 +1401,7 @@ } } -#[cfg(all(tokio_unstable, tokio_wasi))] +#[cfg(all(tokio_unstable, target_os = "wasi"))] mod sys { use super::TcpStream; use std::os::wasi::prelude::*; @@ -1416,7 +1412,6 @@ } } - #[cfg(not(tokio_no_as_fd))] impl AsFd for TcpStream { fn as_fd(&self) -> BorrowedFd<'_> { unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } diff -Nru temporalio-1.3.0/vendor/tokio/src/net/udp.rs temporalio-1.3.0/vendor/tokio/src/net/udp.rs --- temporalio-1.3.0/vendor/tokio/src/net/udp.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/net/udp.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1855,7 +1855,7 @@ /// Windows Server 2012+.](https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options) /// /// [`set_tos`]: Self::set_tos - // https://docs.rs/socket2/0.4.2/src/socket2/socket.rs.html#1178 + // https://docs.rs/socket2/0.5.3/src/socket2/socket.rs.html#1464 #[cfg(not(any( target_os = "fuchsia", target_os = "redox", @@ -1882,7 +1882,7 @@ /// /// **NOTE:** On Windows, `IP_TOS` is only supported on [Windows 8+ or /// Windows Server 2012+.](https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options) - // https://docs.rs/socket2/0.4.2/src/socket2/socket.rs.html#1178 + // https://docs.rs/socket2/0.5.3/src/socket2/socket.rs.html#1446 #[cfg(not(any( target_os = "fuchsia", target_os = "redox", @@ -1921,7 +1921,7 @@ /// works for some socket types, particularly `AF_INET` sockets. /// /// If `interface` is `None` or an empty string it removes the binding. - #[cfg(all(any(target_os = "android", target_os = "fuchsia", target_os = "linux")))] + #[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))] #[cfg_attr( docsrs, doc(cfg(all(any(target_os = "android", target_os = "fuchsia", target_os = "linux")))) @@ -2021,7 +2021,6 @@ } } - #[cfg(not(tokio_no_as_fd))] impl AsFd for UdpSocket { fn as_fd(&self) -> BorrowedFd<'_> { unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } @@ -2031,7 +2030,6 @@ cfg_windows! { use crate::os::windows::io::{AsRawSocket, RawSocket}; - #[cfg(not(tokio_no_as_fd))] use crate::os::windows::io::{AsSocket, BorrowedSocket}; impl AsRawSocket for UdpSocket { @@ -2040,7 +2038,6 @@ } } - #[cfg(not(tokio_no_as_fd))] impl AsSocket for UdpSocket { fn as_socket(&self) -> BorrowedSocket<'_> { unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } diff -Nru temporalio-1.3.0/vendor/tokio/src/net/unix/datagram/socket.rs temporalio-1.3.0/vendor/tokio/src/net/unix/datagram/socket.rs --- temporalio-1.3.0/vendor/tokio/src/net/unix/datagram/socket.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/net/unix/datagram/socket.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,9 +4,7 @@ use std::fmt; use std::io; use std::net::Shutdown; -#[cfg(not(tokio_no_as_fd))] -use std::os::unix::io::{AsFd, BorrowedFd}; -use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; +use std::os::unix::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, RawFd}; use std::os::unix::net; use std::path::Path; use std::task::{Context, Poll}; @@ -1578,7 +1576,6 @@ } } -#[cfg(not(tokio_no_as_fd))] impl AsFd for UnixDatagram { fn as_fd(&self) -> BorrowedFd<'_> { unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } diff -Nru temporalio-1.3.0/vendor/tokio/src/net/unix/listener.rs temporalio-1.3.0/vendor/tokio/src/net/unix/listener.rs --- temporalio-1.3.0/vendor/tokio/src/net/unix/listener.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/net/unix/listener.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,9 +3,7 @@ use std::fmt; use std::io; -#[cfg(not(tokio_no_as_fd))] -use std::os::unix::io::{AsFd, BorrowedFd}; -use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; +use std::os::unix::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, RawFd}; use std::os::unix::net; use std::path::Path; use std::task::{Context, Poll}; @@ -211,7 +209,6 @@ } } -#[cfg(not(tokio_no_as_fd))] impl AsFd for UnixListener { fn as_fd(&self) -> BorrowedFd<'_> { unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } diff -Nru temporalio-1.3.0/vendor/tokio/src/net/unix/pipe.rs temporalio-1.3.0/vendor/tokio/src/net/unix/pipe.rs --- temporalio-1.3.0/vendor/tokio/src/net/unix/pipe.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/net/unix/pipe.rs 2023-10-30 19:40:00.000000000 +0000 @@ -7,9 +7,7 @@ use std::fs::File; use std::io::{self, Read, Write}; use std::os::unix::fs::{FileTypeExt, OpenOptionsExt}; -#[cfg(not(tokio_no_as_fd))] -use std::os::unix::io::{AsFd, BorrowedFd}; -use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; +use std::os::unix::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, RawFd}; use std::path::Path; use std::pin::Pin; use std::task::{Context, Poll}; @@ -664,7 +662,6 @@ } } -#[cfg(not(tokio_no_as_fd))] impl AsFd for Sender { fn as_fd(&self) -> BorrowedFd<'_> { unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } @@ -1170,7 +1167,6 @@ } } -#[cfg(not(tokio_no_as_fd))] impl AsFd for Receiver { fn as_fd(&self) -> BorrowedFd<'_> { unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } diff -Nru temporalio-1.3.0/vendor/tokio/src/net/unix/stream.rs temporalio-1.3.0/vendor/tokio/src/net/unix/stream.rs --- temporalio-1.3.0/vendor/tokio/src/net/unix/stream.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/net/unix/stream.rs 2023-10-30 19:40:00.000000000 +0000 @@ -8,9 +8,7 @@ use std::fmt; use std::io::{self, Read, Write}; use std::net::Shutdown; -#[cfg(not(tokio_no_as_fd))] -use std::os::unix::io::{AsFd, BorrowedFd}; -use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; +use std::os::unix::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, RawFd}; use std::os::unix::net; use std::path::Path; use std::pin::Pin; @@ -1039,7 +1037,6 @@ } } -#[cfg(not(tokio_no_as_fd))] impl AsFd for UnixStream { fn as_fd(&self) -> BorrowedFd<'_> { unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } diff -Nru temporalio-1.3.0/vendor/tokio/src/net/unix/ucred.rs temporalio-1.3.0/vendor/tokio/src/net/unix/ucred.rs --- temporalio-1.3.0/vendor/tokio/src/net/unix/ucred.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/net/unix/ucred.rs 2023-10-30 19:40:00.000000000 +0000 @@ -39,7 +39,7 @@ ))] pub(crate) use self::impl_linux::get_peer_cred; -#[cfg(any(target_os = "netbsd"))] +#[cfg(target_os = "netbsd")] pub(crate) use self::impl_netbsd::get_peer_cred; #[cfg(any(target_os = "dragonfly", target_os = "freebsd"))] @@ -54,6 +54,9 @@ #[cfg(target_os = "aix")] pub(crate) use self::impl_aix::get_peer_cred; +#[cfg(target_os = "espidf")] +pub(crate) use self::impl_noproc::get_peer_cred; + #[cfg(any( target_os = "linux", target_os = "redox", @@ -111,7 +114,7 @@ } } -#[cfg(any(target_os = "netbsd"))] +#[cfg(target_os = "netbsd")] pub(crate) mod impl_netbsd { use crate::net::unix::{self, UnixStream}; @@ -291,3 +294,17 @@ } } } + +#[cfg(target_os = "espidf")] +pub(crate) mod impl_noproc { + use crate::net::unix::UnixStream; + use std::io; + + pub(crate) fn get_peer_cred(_sock: &UnixStream) -> io::Result { + Ok(super::UCred { + uid: 0, + gid: 0, + pid: None, + }) + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/net/windows/named_pipe.rs temporalio-1.3.0/vendor/tokio/src/net/windows/named_pipe.rs --- temporalio-1.3.0/vendor/tokio/src/net/windows/named_pipe.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/net/windows/named_pipe.rs 2023-10-30 19:40:00.000000000 +0000 @@ -10,9 +10,7 @@ use std::task::{Context, Poll}; use crate::io::{AsyncRead, AsyncWrite, Interest, PollEvented, ReadBuf, Ready}; -#[cfg(not(tokio_no_as_fd))] -use crate::os::windows::io::{AsHandle, BorrowedHandle}; -use crate::os::windows::io::{AsRawHandle, FromRawHandle, RawHandle}; +use crate::os::windows::io::{AsHandle, AsRawHandle, BorrowedHandle, FromRawHandle, RawHandle}; cfg_io_util! { use bytes::BufMut; @@ -930,7 +928,6 @@ } } -#[cfg(not(tokio_no_as_fd))] impl AsHandle for NamedPipeServer { fn as_handle(&self) -> BorrowedHandle<'_> { unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } @@ -1720,7 +1717,6 @@ } } -#[cfg(not(tokio_no_as_fd))] impl AsHandle for NamedPipeClient { fn as_handle(&self) -> BorrowedHandle<'_> { unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } diff -Nru temporalio-1.3.0/vendor/tokio/src/process/mod.rs temporalio-1.3.0/vendor/tokio/src/process/mod.rs --- temporalio-1.3.0/vendor/tokio/src/process/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/process/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -260,8 +260,6 @@ cfg_windows! { use crate::os::windows::io::{AsRawHandle, RawHandle}; - #[cfg(not(tokio_no_as_fd))] - use crate::os::windows::io::{AsHandle, BorrowedHandle}; } /// This structure mimics the API of [`std::process::Command`] found in the standard library, but @@ -400,20 +398,15 @@ self } - /// Append literal text to the command line without any quoting or escaping. - /// - /// This is useful for passing arguments to `cmd.exe /c`, which doesn't follow - /// `CommandLineToArgvW` escaping rules. - /// - /// **Note**: This is an [unstable API][unstable] but will be stabilised once - /// tokio's MSRV is sufficiently new. See [the documentation on - /// unstable features][unstable] for details about using unstable features. - #[cfg(windows)] - #[cfg(tokio_unstable)] - #[cfg_attr(docsrs, doc(cfg(all(windows, tokio_unstable))))] - pub fn raw_arg>(&mut self, text_to_append_as_is: S) -> &mut Command { - self.std.raw_arg(text_to_append_as_is); - self + cfg_windows! { + /// Append literal text to the command line without any quoting or escaping. + /// + /// This is useful for passing arguments to `cmd.exe /c`, which doesn't follow + /// `CommandLineToArgvW` escaping rules. + pub fn raw_arg>(&mut self, text_to_append_as_is: S) -> &mut Command { + self.std.raw_arg(text_to_append_as_is); + self + } } /// Inserts or updates an environment variable mapping. @@ -1448,92 +1441,100 @@ } #[cfg(unix)] +#[cfg_attr(docsrs, doc(cfg(unix)))] mod sys { - #[cfg(not(tokio_no_as_fd))] - use std::os::unix::io::{AsFd, BorrowedFd}; - use std::os::unix::io::{AsRawFd, RawFd}; + use std::{ + io, + os::unix::io::{AsFd, AsRawFd, BorrowedFd, OwnedFd, RawFd}, + }; use super::{ChildStderr, ChildStdin, ChildStdout}; - impl AsRawFd for ChildStdin { - fn as_raw_fd(&self) -> RawFd { - self.inner.as_raw_fd() - } - } - - #[cfg(not(tokio_no_as_fd))] - impl AsFd for ChildStdin { - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } - } - - impl AsRawFd for ChildStdout { - fn as_raw_fd(&self) -> RawFd { - self.inner.as_raw_fd() - } - } + macro_rules! impl_traits { + ($type:ty) => { + impl $type { + /// Convert into [`OwnedFd`]. + pub fn into_owned_fd(self) -> io::Result { + self.inner.into_owned_fd() + } + } - #[cfg(not(tokio_no_as_fd))] - impl AsFd for ChildStdout { - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } - } + impl AsRawFd for $type { + fn as_raw_fd(&self) -> RawFd { + self.inner.as_raw_fd() + } + } - impl AsRawFd for ChildStderr { - fn as_raw_fd(&self) -> RawFd { - self.inner.as_raw_fd() - } + impl AsFd for $type { + fn as_fd(&self) -> BorrowedFd<'_> { + unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } + } + } + }; } - #[cfg(not(tokio_no_as_fd))] - impl AsFd for ChildStderr { - fn as_fd(&self) -> BorrowedFd<'_> { - unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } - } - } -} + impl_traits!(ChildStdin); + impl_traits!(ChildStdout); + impl_traits!(ChildStderr); +} + +#[cfg(any(windows, docsrs))] +#[cfg_attr(docsrs, doc(cfg(windows)))] +mod windows { + use super::*; + use crate::os::windows::io::{AsHandle, AsRawHandle, BorrowedHandle, OwnedHandle, RawHandle}; + + #[cfg(not(docsrs))] + macro_rules! impl_traits { + ($type:ty) => { + impl $type { + /// Convert into [`OwnedHandle`]. + pub fn into_owned_handle(self) -> io::Result { + self.inner.into_owned_handle() + } + } -cfg_windows! { - impl AsRawHandle for ChildStdin { - fn as_raw_handle(&self) -> RawHandle { - self.inner.as_raw_handle() - } - } + impl AsRawHandle for $type { + fn as_raw_handle(&self) -> RawHandle { + self.inner.as_raw_handle() + } + } - #[cfg(not(tokio_no_as_fd))] - impl AsHandle for ChildStdin { - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } + impl AsHandle for $type { + fn as_handle(&self) -> BorrowedHandle<'_> { + unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } + } + } + }; } - impl AsRawHandle for ChildStdout { - fn as_raw_handle(&self) -> RawHandle { - self.inner.as_raw_handle() - } - } + #[cfg(docsrs)] + macro_rules! impl_traits { + ($type:ty) => { + impl $type { + /// Convert into [`OwnedHandle`]. + pub fn into_owned_handle(self) -> io::Result { + todo!("For doc generation only") + } + } - #[cfg(not(tokio_no_as_fd))] - impl AsHandle for ChildStdout { - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } - } + impl AsRawHandle for $type { + fn as_raw_handle(&self) -> RawHandle { + todo!("For doc generation only") + } + } - impl AsRawHandle for ChildStderr { - fn as_raw_handle(&self) -> RawHandle { - self.inner.as_raw_handle() - } + impl AsHandle for $type { + fn as_handle(&self) -> BorrowedHandle<'_> { + todo!("For doc generation only") + } + } + }; } - #[cfg(not(tokio_no_as_fd))] - impl AsHandle for ChildStderr { - fn as_handle(&self) -> BorrowedHandle<'_> { - unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) } - } - } + impl_traits!(ChildStdin); + impl_traits!(ChildStdout); + impl_traits!(ChildStderr); } #[cfg(all(test, not(loom)))] diff -Nru temporalio-1.3.0/vendor/tokio/src/process/unix/mod.rs temporalio-1.3.0/vendor/tokio/src/process/unix/mod.rs --- temporalio-1.3.0/vendor/tokio/src/process/unix/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/process/unix/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -39,9 +39,7 @@ use std::fs::File; use std::future::Future; use std::io; -#[cfg(not(tokio_no_as_fd))] -use std::os::unix::io::{AsFd, BorrowedFd}; -use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; +use std::os::unix::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd}; use std::pin::Pin; use std::process::{Child as StdChild, ExitStatus, Stdio}; use std::task::Context; @@ -196,14 +194,13 @@ } } -#[cfg(not(tokio_no_as_fd))] impl AsFd for Pipe { fn as_fd(&self) -> BorrowedFd<'_> { unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } } } -pub(crate) fn convert_to_stdio(io: ChildStdio) -> io::Result { +fn convert_to_blocking_file(io: ChildStdio) -> io::Result { let mut fd = io.inner.into_inner()?.fd; // Ensure that the fd to be inherited is set to *blocking* mode, as this @@ -212,7 +209,11 @@ // change it to nonblocking mode. set_nonblocking(&mut fd, false)?; - Ok(Stdio::from(fd)) + Ok(fd) +} + +pub(crate) fn convert_to_stdio(io: ChildStdio) -> io::Result { + convert_to_blocking_file(io).map(Stdio::from) } impl Source for Pipe { @@ -243,6 +244,12 @@ inner: PollEvented, } +impl ChildStdio { + pub(super) fn into_owned_fd(self) -> io::Result { + convert_to_blocking_file(self).map(OwnedFd::from) + } +} + impl fmt::Debug for ChildStdio { fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { self.inner.fmt(fmt) @@ -255,7 +262,6 @@ } } -#[cfg(not(tokio_no_as_fd))] impl AsFd for ChildStdio { fn as_fd(&self) -> BorrowedFd<'_> { unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } diff -Nru temporalio-1.3.0/vendor/tokio/src/process/windows.rs temporalio-1.3.0/vendor/tokio/src/process/windows.rs --- temporalio-1.3.0/vendor/tokio/src/process/windows.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/process/windows.rs 2023-10-30 19:40:00.000000000 +0000 @@ -24,7 +24,7 @@ use std::fs::File as StdFile; use std::future::Future; use std::io; -use std::os::windows::prelude::{AsRawHandle, IntoRawHandle, RawHandle}; +use std::os::windows::prelude::{AsRawHandle, IntoRawHandle, OwnedHandle, RawHandle}; use std::pin::Pin; use std::process::Stdio; use std::process::{Child as StdChild, Command as StdCommand, ExitStatus}; @@ -195,6 +195,12 @@ io: Blocking, } +impl ChildStdio { + pub(super) fn into_owned_handle(self) -> io::Result { + convert_to_file(self).map(OwnedHandle::from) + } +} + impl AsRawHandle for ChildStdio { fn as_raw_handle(&self) -> RawHandle { self.raw.as_raw_handle() @@ -240,13 +246,15 @@ Ok(ChildStdio { raw, io }) } -pub(crate) fn convert_to_stdio(child_stdio: ChildStdio) -> io::Result { +fn convert_to_file(child_stdio: ChildStdio) -> io::Result { let ChildStdio { raw, io } = child_stdio; drop(io); // Try to drop the Arc count here - Arc::try_unwrap(raw) - .or_else(|raw| duplicate_handle(&*raw)) - .map(Stdio::from) + Arc::try_unwrap(raw).or_else(|raw| duplicate_handle(&*raw)) +} + +pub(crate) fn convert_to_stdio(child_stdio: ChildStdio) -> io::Result { + convert_to_file(child_stdio).map(Stdio::from) } fn duplicate_handle(io: &T) -> io::Result { diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/blocking/pool.rs temporalio-1.3.0/vendor/tokio/src/runtime/blocking/pool.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/blocking/pool.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/blocking/pool.rs 2023-10-30 19:40:00.000000000 +0000 @@ -173,7 +173,7 @@ /// Tasks will be scheduled as non-mandatory, meaning they may not get executed /// in case of runtime shutdown. #[track_caller] -#[cfg_attr(tokio_wasi, allow(dead_code))] +#[cfg_attr(target_os = "wasi", allow(dead_code))] pub(crate) fn spawn_blocking(func: F) -> JoinHandle where F: FnOnce() -> R + Send + 'static, diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/blocking/schedule.rs temporalio-1.3.0/vendor/tokio/src/runtime/blocking/schedule.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/blocking/schedule.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/blocking/schedule.rs 2023-10-30 19:40:00.000000000 +0000 @@ -23,8 +23,10 @@ scheduler::Handle::CurrentThread(handle) => { handle.driver.clock.inhibit_auto_advance(); } - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] scheduler::Handle::MultiThread(_) => {} + #[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))] + scheduler::Handle::MultiThreadAlt(_) => {} } } BlockingSchedule { @@ -43,8 +45,10 @@ handle.driver.clock.allow_auto_advance(); handle.driver.unpark(); } - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] scheduler::Handle::MultiThread(_) => {} + #[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))] + scheduler::Handle::MultiThreadAlt(_) => {} } } None diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/builder.rs temporalio-1.3.0/vendor/tokio/src/runtime/builder.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/builder.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/builder.rs 2023-10-30 19:40:00.000000000 +0000 @@ -93,6 +93,8 @@ /// How many ticks before yielding to the driver for timer and I/O events? pub(super) event_interval: u32, + pub(super) local_queue_capacity: usize, + /// When true, the multi-threade scheduler LIFO slot should not be used. /// /// This option should only be exposed as unstable. @@ -197,8 +199,10 @@ #[derive(Clone, Copy)] pub(crate) enum Kind { CurrentThread, - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] MultiThread, + #[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))] + MultiThreadAlt, } impl Builder { @@ -230,6 +234,26 @@ // The number `61` is fairly arbitrary. I believe this value was copied from golang. Builder::new(Kind::MultiThread, 61) } + + cfg_unstable! { + /// Returns a new builder with the alternate multi thread scheduler + /// selected. + /// + /// The alternate multi threaded scheduler is an in-progress + /// candidate to replace the existing multi threaded scheduler. It + /// currently does not scale as well to 16+ processors. + /// + /// This runtime flavor is currently **not considered production + /// ready**. + /// + /// Configuration methods can be chained on the return value. + #[cfg(feature = "rt-multi-thread")] + #[cfg_attr(docsrs, doc(cfg(feature = "rt-multi-thread")))] + pub fn new_multi_thread_alt() -> Builder { + // The number `61` is fairly arbitrary. I believe this value was copied from golang. + Builder::new(Kind::MultiThreadAlt, 61) + } + } } /// Returns a new runtime builder initialized with default configuration @@ -275,6 +299,12 @@ global_queue_interval: None, event_interval, + #[cfg(not(loom))] + local_queue_capacity: 256, + + #[cfg(loom)] + local_queue_capacity: 4, + seed_generator: RngSeedGenerator::new(RngSeed::new()), #[cfg(tokio_unstable)] @@ -374,9 +404,17 @@ /// Specifies the limit for additional threads spawned by the Runtime. /// /// These threads are used for blocking operations like tasks spawned - /// through [`spawn_blocking`]. Unlike the [`worker_threads`], they are not - /// always active and will exit if left idle for too long. You can change - /// this timeout duration with [`thread_keep_alive`]. + /// through [`spawn_blocking`], this includes but is not limited to: + /// - [`fs`] operations + /// - dns resolution through [`ToSocketAddrs`] + /// - writing to [`Stdout`] or [`Stderr`] + /// - reading from [`Stdin`] + /// + /// Unlike the [`worker_threads`], they are not always active and will exit + /// if left idle for too long. You can change this timeout duration with [`thread_keep_alive`]. + /// + /// It's recommended to not set this limit too low in order to avoid hanging on operations + /// requiring [`spawn_blocking`]. /// /// The default value is 512. /// @@ -390,6 +428,11 @@ /// current `max_blocking_threads` does not include async worker threads in the count. /// /// [`spawn_blocking`]: fn@crate::task::spawn_blocking + /// [`fs`]: mod@crate::fs + /// [`ToSocketAddrs`]: trait@crate::net::ToSocketAddrs + /// [`Stdout`]: struct@crate::io::Stdout + /// [`Stdin`]: struct@crate::io::Stdin + /// [`Stderr`]: struct@crate::io::Stderr /// [`worker_threads`]: Self::worker_threads /// [`thread_keep_alive`]: Self::thread_keep_alive #[track_caller] @@ -654,8 +697,10 @@ pub fn build(&mut self) -> io::Result { match &self.kind { Kind::CurrentThread => self.build_current_thread_runtime(), - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] Kind::MultiThread => self.build_threaded_runtime(), + #[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))] + Kind::MultiThreadAlt => self.build_alt_threaded_runtime(), } } @@ -663,8 +708,10 @@ driver::Cfg { enable_pause_time: match self.kind { Kind::CurrentThread => true, - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] Kind::MultiThread => false, + #[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))] + Kind::MultiThreadAlt => false, }, enable_io: self.enable_io, enable_time: self.enable_time, @@ -1020,6 +1067,14 @@ } } + cfg_loom! { + pub(crate) fn local_queue_capacity(&mut self, value: usize) -> &mut Self { + assert!(value.is_power_of_two()); + self.local_queue_capacity = value; + self + } + } + fn build_current_thread_runtime(&mut self) -> io::Result { use crate::runtime::scheduler::{self, CurrentThread}; use crate::runtime::{runtime::Scheduler, Config}; @@ -1048,6 +1103,7 @@ after_unpark: self.after_unpark.clone(), global_queue_interval: self.global_queue_interval, event_interval: self.event_interval, + local_queue_capacity: self.local_queue_capacity, #[cfg(tokio_unstable)] unhandled_panic: self.unhandled_panic.clone(), disable_lifo_slot: self.disable_lifo_slot, @@ -1198,6 +1254,7 @@ after_unpark: self.after_unpark.clone(), global_queue_interval: self.global_queue_interval, event_interval: self.event_interval, + local_queue_capacity: self.local_queue_capacity, #[cfg(tokio_unstable)] unhandled_panic: self.unhandled_panic.clone(), disable_lifo_slot: self.disable_lifo_slot, @@ -1214,6 +1271,49 @@ Ok(Runtime::from_parts(Scheduler::MultiThread(scheduler), handle, blocking_pool)) } + + cfg_unstable! { + fn build_alt_threaded_runtime(&mut self) -> io::Result { + use crate::loom::sys::num_cpus; + use crate::runtime::{Config, runtime::Scheduler}; + use crate::runtime::scheduler::MultiThreadAlt; + + let core_threads = self.worker_threads.unwrap_or_else(num_cpus); + + let (driver, driver_handle) = driver::Driver::new(self.get_cfg())?; + + // Create the blocking pool + let blocking_pool = + blocking::create_blocking_pool(self, self.max_blocking_threads + core_threads); + let blocking_spawner = blocking_pool.spawner().clone(); + + // Generate a rng seed for this runtime. + let seed_generator_1 = self.seed_generator.next_generator(); + let seed_generator_2 = self.seed_generator.next_generator(); + + let (scheduler, handle) = MultiThreadAlt::new( + core_threads, + driver, + driver_handle, + blocking_spawner, + seed_generator_2, + Config { + before_park: self.before_park.clone(), + after_unpark: self.after_unpark.clone(), + global_queue_interval: self.global_queue_interval, + event_interval: self.event_interval, + local_queue_capacity: self.local_queue_capacity, + #[cfg(tokio_unstable)] + unhandled_panic: self.unhandled_panic.clone(), + disable_lifo_slot: self.disable_lifo_slot, + seed_generator: seed_generator_1, + metrics_poll_count_histogram: self.metrics_poll_count_histogram_builder(), + }, + ); + + Ok(Runtime::from_parts(Scheduler::MultiThreadAlt(scheduler), handle, blocking_pool)) + } + } } } diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/config.rs temporalio-1.3.0/vendor/tokio/src/runtime/config.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/config.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/config.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,7 @@ -#![cfg_attr(any(not(feature = "full"), tokio_wasm), allow(dead_code))] +#![cfg_attr( + any(not(all(tokio_unstable, feature = "full")), target_family = "wasm"), + allow(dead_code) +)] use crate::runtime::Callback; use crate::util::RngSeedGenerator; @@ -9,6 +12,9 @@ /// How many ticks before yielding to the driver for timer and I/O events? pub(crate) event_interval: u32, + /// How big to make each worker's local queue + pub(crate) local_queue_capacity: usize, + /// Callback for a worker parking itself pub(crate) before_park: Option, diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/coop.rs temporalio-1.3.0/vendor/tokio/src/runtime/coop.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/coop.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/coop.rs 2023-10-30 19:40:00.000000000 +0000 @@ -246,7 +246,7 @@ mod test { use super::*; - #[cfg(tokio_wasm_not_wasi)] + #[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as test; fn get() -> Budget { diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/driver.rs temporalio-1.3.0/vendor/tokio/src/runtime/driver.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/driver.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/driver.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,10 @@ // Eventually, this file will see significant refactoring / cleanup. For now, we // don't need to worry much about dead code with certain feature permutations. -#![cfg_attr(not(feature = "full"), allow(dead_code))] +#![cfg_attr( + any(not(all(tokio_unstable, feature = "full")), target_family = "wasm"), + allow(dead_code) +)] use crate::runtime::park::{ParkThread, UnparkThread}; @@ -58,6 +61,10 @@ )) } + pub(crate) fn is_enabled(&self) -> bool { + self.inner.is_enabled() + } + pub(crate) fn park(&mut self, handle: &Handle) { self.inner.park(handle) } @@ -154,6 +161,13 @@ } impl IoStack { + pub(crate) fn is_enabled(&self) -> bool { + match self { + IoStack::Enabled(..) => true, + IoStack::Disabled(..) => false, + } + } + pub(crate) fn park(&mut self, handle: &Handle) { match self { IoStack::Enabled(v) => v.park(handle), @@ -217,6 +231,11 @@ pub(crate) fn shutdown(&mut self, _handle: &Handle) { self.0.shutdown(); } + + /// This is not a "real" driver, so it is not considered enabled. + pub(crate) fn is_enabled(&self) -> bool { + false + } } } @@ -298,6 +317,13 @@ } impl TimeDriver { + pub(crate) fn is_enabled(&self) -> bool { + match self { + TimeDriver::Enabled { .. } => true, + TimeDriver::Disabled(inner) => inner.is_enabled(), + } + } + pub(crate) fn park(&mut self, handle: &Handle) { match self { TimeDriver::Enabled { driver, .. } => driver.park(handle), diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/handle.rs temporalio-1.3.0/vendor/tokio/src/runtime/handle.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/handle.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/handle.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,5 @@ +#[cfg(tokio_unstable)] +use crate::runtime; use crate::runtime::{context, scheduler, RuntimeFlavor}; /// Handle to the runtime. @@ -353,8 +355,42 @@ pub fn runtime_flavor(&self) -> RuntimeFlavor { match self.inner { scheduler::Handle::CurrentThread(_) => RuntimeFlavor::CurrentThread, - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] scheduler::Handle::MultiThread(_) => RuntimeFlavor::MultiThread, + #[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))] + scheduler::Handle::MultiThreadAlt(_) => RuntimeFlavor::MultiThreadAlt, + } + } + + cfg_unstable! { + /// Returns the [`Id`] of the current `Runtime`. + /// + /// # Examples + /// + /// ``` + /// use tokio::runtime::Handle; + /// + /// #[tokio::main(flavor = "current_thread")] + /// async fn main() { + /// println!("Current runtime id: {}", Handle::current().id()); + /// } + /// ``` + /// + /// **Note**: This is an [unstable API][unstable]. The public API of this type + /// may break in 1.x releases. See [the documentation on unstable + /// features][unstable] for details. + /// + /// [unstable]: crate#unstable-features + /// [`Id`]: struct@crate::runtime::Id + pub fn id(&self) -> runtime::Id { + let owned_id = match &self.inner { + scheduler::Handle::CurrentThread(handle) => handle.owned_id(), + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] + scheduler::Handle::MultiThread(handle) => handle.owned_id(), + #[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))] + scheduler::Handle::MultiThreadAlt(handle) => handle.owned_id(), + }; + owned_id.into() } } } @@ -493,7 +529,7 @@ pub async fn dump(&self) -> crate::runtime::Dump { match &self.inner { scheduler::Handle::CurrentThread(handle) => handle.dump(), - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] scheduler::Handle::MultiThread(handle) => { // perform the trace in a separate thread so that the // trace itself does not appear in the taskdump. @@ -503,6 +539,8 @@ handle.dump().await }).await }, + #[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))] + scheduler::Handle::MultiThreadAlt(_) => panic!("task dump not implemented for this runtime flavor"), } } } diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/id.rs temporalio-1.3.0/vendor/tokio/src/runtime/id.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/id.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/id.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,46 @@ +use std::fmt; +use std::num::NonZeroU64; + +/// An opaque ID that uniquely identifies a runtime relative to all other currently +/// running runtimes. +/// +/// # Notes +/// +/// - Runtime IDs are unique relative to other *currently running* runtimes. +/// When a runtime completes, the same ID may be used for another runtime. +/// - Runtime IDs are *not* sequential, and do not indicate the order in which +/// runtimes are started or any other data. +/// - The runtime ID of the currently running task can be obtained from the +/// Handle. +/// +/// # Examples +/// +/// ``` +/// use tokio::runtime::Handle; +/// +/// #[tokio::main(flavor = "multi_thread", worker_threads = 4)] +/// async fn main() { +/// println!("Current runtime id: {}", Handle::current().id()); +/// } +/// ``` +/// +/// **Note**: This is an [unstable API][unstable]. The public API of this type +/// may break in 1.x releases. See [the documentation on unstable +/// features][unstable] for details. +/// +/// [unstable]: crate#unstable-features +#[cfg_attr(not(tokio_unstable), allow(unreachable_pub))] +#[derive(Clone, Copy, Debug, Hash, Eq, PartialEq)] +pub struct Id(NonZeroU64); + +impl From for Id { + fn from(value: NonZeroU64) -> Self { + Id(value) + } +} + +impl fmt::Display for Id { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + self.0.fmt(f) + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/io/driver/signal.rs temporalio-1.3.0/vendor/tokio/src/runtime/io/driver/signal.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/io/driver/signal.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/io/driver/signal.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,22 @@ +use super::{Driver, Handle, TOKEN_SIGNAL}; + +use std::io; + +impl Handle { + pub(crate) fn register_signal_receiver( + &self, + receiver: &mut mio::net::UnixStream, + ) -> io::Result<()> { + self.registry + .register(receiver, TOKEN_SIGNAL, mio::Interest::READABLE)?; + Ok(()) + } +} + +impl Driver { + pub(crate) fn consume_signal_ready(&mut self) -> bool { + let ret = self.signal_ready; + self.signal_ready = false; + ret + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/io/driver.rs temporalio-1.3.0/vendor/tokio/src/runtime/io/driver.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/io/driver.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/io/driver.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,280 @@ +// Signal handling +cfg_signal_internal_and_unix! { + mod signal; +} + +use crate::io::interest::Interest; +use crate::io::ready::Ready; +use crate::loom::sync::Mutex; +use crate::runtime::driver; +use crate::runtime::io::registration_set; +use crate::runtime::io::{IoDriverMetrics, RegistrationSet, ScheduledIo}; + +use mio::event::Source; +use std::fmt; +use std::io; +use std::sync::Arc; +use std::time::Duration; + +/// I/O driver, backed by Mio. +pub(crate) struct Driver { + /// Tracks the number of times `turn` is called. It is safe for this to wrap + /// as it is mostly used to determine when to call `compact()`. + tick: u8, + + /// True when an event with the signal token is received + signal_ready: bool, + + /// Reuse the `mio::Events` value across calls to poll. + events: mio::Events, + + /// The system event queue. + poll: mio::Poll, +} + +/// A reference to an I/O driver. +pub(crate) struct Handle { + /// Registers I/O resources. + registry: mio::Registry, + + /// Tracks all registrations + registrations: RegistrationSet, + + /// State that should be synchronized + synced: Mutex, + + /// Used to wake up the reactor from a call to `turn`. + /// Not supported on Wasi due to lack of threading support. + #[cfg(not(target_os = "wasi"))] + waker: mio::Waker, + + pub(crate) metrics: IoDriverMetrics, +} + +#[derive(Debug)] +pub(crate) struct ReadyEvent { + pub(super) tick: u8, + pub(crate) ready: Ready, + pub(super) is_shutdown: bool, +} + +cfg_net_unix!( + impl ReadyEvent { + pub(crate) fn with_ready(&self, ready: Ready) -> Self { + Self { + ready, + tick: self.tick, + is_shutdown: self.is_shutdown, + } + } + } +); + +#[derive(Debug, Eq, PartialEq, Clone, Copy)] +pub(super) enum Direction { + Read, + Write, +} + +pub(super) enum Tick { + Set(u8), + Clear(u8), +} + +const TOKEN_WAKEUP: mio::Token = mio::Token(0); +const TOKEN_SIGNAL: mio::Token = mio::Token(1); + +fn _assert_kinds() { + fn _assert() {} + + _assert::(); +} + +// ===== impl Driver ===== + +impl Driver { + /// Creates a new event loop, returning any error that happened during the + /// creation. + pub(crate) fn new(nevents: usize) -> io::Result<(Driver, Handle)> { + let poll = mio::Poll::new()?; + #[cfg(not(target_os = "wasi"))] + let waker = mio::Waker::new(poll.registry(), TOKEN_WAKEUP)?; + let registry = poll.registry().try_clone()?; + + let driver = Driver { + tick: 0, + signal_ready: false, + events: mio::Events::with_capacity(nevents), + poll, + }; + + let (registrations, synced) = RegistrationSet::new(); + + let handle = Handle { + registry, + registrations, + synced: Mutex::new(synced), + #[cfg(not(target_os = "wasi"))] + waker, + metrics: IoDriverMetrics::default(), + }; + + Ok((driver, handle)) + } + + pub(crate) fn park(&mut self, rt_handle: &driver::Handle) { + let handle = rt_handle.io(); + self.turn(handle, None); + } + + pub(crate) fn park_timeout(&mut self, rt_handle: &driver::Handle, duration: Duration) { + let handle = rt_handle.io(); + self.turn(handle, Some(duration)); + } + + pub(crate) fn shutdown(&mut self, rt_handle: &driver::Handle) { + let handle = rt_handle.io(); + let ios = handle.registrations.shutdown(&mut handle.synced.lock()); + + // `shutdown()` must be called without holding the lock. + for io in ios { + io.shutdown(); + } + } + + fn turn(&mut self, handle: &Handle, max_wait: Option) { + debug_assert!(!handle.registrations.is_shutdown(&handle.synced.lock())); + + self.tick = self.tick.wrapping_add(1); + + handle.release_pending_registrations(); + + let events = &mut self.events; + + // Block waiting for an event to happen, peeling out how many events + // happened. + match self.poll.poll(events, max_wait) { + Ok(_) => {} + Err(ref e) if e.kind() == io::ErrorKind::Interrupted => {} + #[cfg(target_os = "wasi")] + Err(e) if e.kind() == io::ErrorKind::InvalidInput => { + // In case of wasm32_wasi this error happens, when trying to poll without subscriptions + // just return from the park, as there would be nothing, which wakes us up. + } + Err(e) => panic!("unexpected error when polling the I/O driver: {:?}", e), + } + + // Process all the events that came in, dispatching appropriately + let mut ready_count = 0; + for event in events.iter() { + let token = event.token(); + + if token == TOKEN_WAKEUP { + // Nothing to do, the event is used to unblock the I/O driver + } else if token == TOKEN_SIGNAL { + self.signal_ready = true; + } else { + let ready = Ready::from_mio(event); + // Use std::ptr::from_exposed_addr when stable + let ptr: *const ScheduledIo = token.0 as *const _; + + // Safety: we ensure that the pointers used as tokens are not freed + // until they are both deregistered from mio **and** we know the I/O + // driver is not concurrently polling. The I/O driver holds ownership of + // an `Arc` so we can safely cast this to a ref. + let io: &ScheduledIo = unsafe { &*ptr }; + + io.set_readiness(Tick::Set(self.tick), |curr| curr | ready); + io.wake(ready); + + ready_count += 1; + } + } + + handle.metrics.incr_ready_count_by(ready_count); + } +} + +impl fmt::Debug for Driver { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "Driver") + } +} + +impl Handle { + /// Forces a reactor blocked in a call to `turn` to wakeup, or otherwise + /// makes the next call to `turn` return immediately. + /// + /// This method is intended to be used in situations where a notification + /// needs to otherwise be sent to the main reactor. If the reactor is + /// currently blocked inside of `turn` then it will wake up and soon return + /// after this method has been called. If the reactor is not currently + /// blocked in `turn`, then the next call to `turn` will not block and + /// return immediately. + pub(crate) fn unpark(&self) { + #[cfg(not(target_os = "wasi"))] + self.waker.wake().expect("failed to wake I/O driver"); + } + + /// Registers an I/O resource with the reactor for a given `mio::Ready` state. + /// + /// The registration token is returned. + pub(super) fn add_source( + &self, + source: &mut impl mio::event::Source, + interest: Interest, + ) -> io::Result> { + let scheduled_io = self.registrations.allocate(&mut self.synced.lock())?; + let token = scheduled_io.token(); + + // TODO: if this returns an err, the `ScheduledIo` leaks... + self.registry.register(source, token, interest.to_mio())?; + + // TODO: move this logic to `RegistrationSet` and use a `CountedLinkedList` + self.metrics.incr_fd_count(); + + Ok(scheduled_io) + } + + /// Deregisters an I/O resource from the reactor. + pub(super) fn deregister_source( + &self, + registration: &Arc, + source: &mut impl Source, + ) -> io::Result<()> { + // Deregister the source with the OS poller **first** + self.registry.deregister(source)?; + + if self + .registrations + .deregister(&mut self.synced.lock(), registration) + { + self.unpark(); + } + + self.metrics.dec_fd_count(); + + Ok(()) + } + + fn release_pending_registrations(&self) { + if self.registrations.needs_release() { + self.registrations.release(&mut self.synced.lock()); + } + } +} + +impl fmt::Debug for Handle { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "Handle") + } +} + +impl Direction { + pub(super) fn mask(self) -> Ready { + match self { + Direction::Read => Ready::READABLE | Ready::READ_CLOSED, + Direction::Write => Ready::WRITABLE | Ready::WRITE_CLOSED, + } + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/io/mod.rs temporalio-1.3.0/vendor/tokio/src/runtime/io/mod.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/io/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/io/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,356 +1,16 @@ #![cfg_attr(not(all(feature = "rt", feature = "net")), allow(dead_code))] +mod driver; +use driver::{Direction, Tick}; +pub(crate) use driver::{Driver, Handle, ReadyEvent}; mod registration; pub(crate) use registration::Registration; +mod registration_set; +use registration_set::RegistrationSet; + mod scheduled_io; use scheduled_io::ScheduledIo; mod metrics; - -use crate::io::interest::Interest; -use crate::io::ready::Ready; -use crate::runtime::driver; -use crate::util::slab::{self, Slab}; -use crate::{loom::sync::RwLock, util::bit}; - use metrics::IoDriverMetrics; - -use std::fmt; -use std::io; -use std::time::Duration; - -/// I/O driver, backed by Mio. -pub(crate) struct Driver { - /// Tracks the number of times `turn` is called. It is safe for this to wrap - /// as it is mostly used to determine when to call `compact()`. - tick: u8, - - /// True when an event with the signal token is received - signal_ready: bool, - - /// Reuse the `mio::Events` value across calls to poll. - events: mio::Events, - - /// Primary slab handle containing the state for each resource registered - /// with this driver. - resources: Slab, - - /// The system event queue. - poll: mio::Poll, -} - -/// A reference to an I/O driver. -pub(crate) struct Handle { - /// Registers I/O resources. - registry: mio::Registry, - - /// Allocates `ScheduledIo` handles when creating new resources. - io_dispatch: RwLock, - - /// Used to wake up the reactor from a call to `turn`. - /// Not supported on Wasi due to lack of threading support. - #[cfg(not(tokio_wasi))] - waker: mio::Waker, - - pub(crate) metrics: IoDriverMetrics, -} - -#[derive(Debug)] -pub(crate) struct ReadyEvent { - tick: u8, - pub(crate) ready: Ready, - is_shutdown: bool, -} - -cfg_net_unix!( - impl ReadyEvent { - pub(crate) fn with_ready(&self, ready: Ready) -> Self { - Self { - ready, - tick: self.tick, - is_shutdown: self.is_shutdown, - } - } - } -); - -struct IoDispatcher { - allocator: slab::Allocator, - is_shutdown: bool, -} - -#[derive(Debug, Eq, PartialEq, Clone, Copy)] -enum Direction { - Read, - Write, -} - -enum Tick { - Set(u8), - Clear(u8), -} - -// TODO: Don't use a fake token. Instead, reserve a slot entry for the wakeup -// token. -const TOKEN_WAKEUP: mio::Token = mio::Token(1 << 31); -const TOKEN_SIGNAL: mio::Token = mio::Token(1 + (1 << 31)); - -const ADDRESS: bit::Pack = bit::Pack::least_significant(24); - -// Packs the generation value in the `readiness` field. -// -// The generation prevents a race condition where a slab slot is reused for a -// new socket while the I/O driver is about to apply a readiness event. The -// generation value is checked when setting new readiness. If the generation do -// not match, then the readiness event is discarded. -const GENERATION: bit::Pack = ADDRESS.then(7); - -fn _assert_kinds() { - fn _assert() {} - - _assert::(); -} - -// ===== impl Driver ===== - -impl Driver { - /// Creates a new event loop, returning any error that happened during the - /// creation. - pub(crate) fn new(nevents: usize) -> io::Result<(Driver, Handle)> { - let poll = mio::Poll::new()?; - #[cfg(not(tokio_wasi))] - let waker = mio::Waker::new(poll.registry(), TOKEN_WAKEUP)?; - let registry = poll.registry().try_clone()?; - - let slab = Slab::new(); - let allocator = slab.allocator(); - - let driver = Driver { - tick: 0, - signal_ready: false, - events: mio::Events::with_capacity(nevents), - poll, - resources: slab, - }; - - let handle = Handle { - registry, - io_dispatch: RwLock::new(IoDispatcher::new(allocator)), - #[cfg(not(tokio_wasi))] - waker, - metrics: IoDriverMetrics::default(), - }; - - Ok((driver, handle)) - } - - pub(crate) fn park(&mut self, rt_handle: &driver::Handle) { - let handle = rt_handle.io(); - self.turn(handle, None); - } - - pub(crate) fn park_timeout(&mut self, rt_handle: &driver::Handle, duration: Duration) { - let handle = rt_handle.io(); - self.turn(handle, Some(duration)); - } - - pub(crate) fn shutdown(&mut self, rt_handle: &driver::Handle) { - let handle = rt_handle.io(); - - if handle.shutdown() { - self.resources.for_each(|io| { - // If a task is waiting on the I/O resource, notify it that the - // runtime is being shutdown. And shutdown will clear all wakers. - io.shutdown(); - }); - } - } - - fn turn(&mut self, handle: &Handle, max_wait: Option) { - // How often to call `compact()` on the resource slab - const COMPACT_INTERVAL: u8 = 255; - - self.tick = self.tick.wrapping_add(1); - - if self.tick == COMPACT_INTERVAL { - self.resources.compact() - } - - let events = &mut self.events; - - // Block waiting for an event to happen, peeling out how many events - // happened. - match self.poll.poll(events, max_wait) { - Ok(_) => {} - Err(ref e) if e.kind() == io::ErrorKind::Interrupted => {} - #[cfg(tokio_wasi)] - Err(e) if e.kind() == io::ErrorKind::InvalidInput => { - // In case of wasm32_wasi this error happens, when trying to poll without subscriptions - // just return from the park, as there would be nothing, which wakes us up. - } - Err(e) => panic!("unexpected error when polling the I/O driver: {:?}", e), - } - - // Process all the events that came in, dispatching appropriately - let mut ready_count = 0; - for event in events.iter() { - let token = event.token(); - - if token == TOKEN_WAKEUP { - // Nothing to do, the event is used to unblock the I/O driver - } else if token == TOKEN_SIGNAL { - self.signal_ready = true; - } else { - Self::dispatch( - &mut self.resources, - self.tick, - token, - Ready::from_mio(event), - ); - ready_count += 1; - } - } - - handle.metrics.incr_ready_count_by(ready_count); - } - - fn dispatch(resources: &mut Slab, tick: u8, token: mio::Token, ready: Ready) { - let addr = slab::Address::from_usize(ADDRESS.unpack(token.0)); - - let io = match resources.get(addr) { - Some(io) => io, - None => return, - }; - - let res = io.set_readiness(Some(token.0), Tick::Set(tick), |curr| curr | ready); - - if res.is_err() { - // token no longer valid! - return; - } - - io.wake(ready); - } -} - -impl fmt::Debug for Driver { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "Driver") - } -} - -impl Handle { - /// Forces a reactor blocked in a call to `turn` to wakeup, or otherwise - /// makes the next call to `turn` return immediately. - /// - /// This method is intended to be used in situations where a notification - /// needs to otherwise be sent to the main reactor. If the reactor is - /// currently blocked inside of `turn` then it will wake up and soon return - /// after this method has been called. If the reactor is not currently - /// blocked in `turn`, then the next call to `turn` will not block and - /// return immediately. - pub(crate) fn unpark(&self) { - #[cfg(not(tokio_wasi))] - self.waker.wake().expect("failed to wake I/O driver"); - } - - /// Registers an I/O resource with the reactor for a given `mio::Ready` state. - /// - /// The registration token is returned. - pub(super) fn add_source( - &self, - source: &mut impl mio::event::Source, - interest: Interest, - ) -> io::Result> { - let (address, shared) = self.allocate()?; - - let token = GENERATION.pack(shared.generation(), ADDRESS.pack(address.as_usize(), 0)); - - self.registry - .register(source, mio::Token(token), interest.to_mio())?; - - self.metrics.incr_fd_count(); - - Ok(shared) - } - - /// Deregisters an I/O resource from the reactor. - pub(super) fn deregister_source(&self, source: &mut impl mio::event::Source) -> io::Result<()> { - self.registry.deregister(source)?; - - self.metrics.dec_fd_count(); - - Ok(()) - } - - /// shutdown the dispatcher. - fn shutdown(&self) -> bool { - let mut io = self.io_dispatch.write().unwrap(); - if io.is_shutdown { - return false; - } - io.is_shutdown = true; - true - } - - fn allocate(&self) -> io::Result<(slab::Address, slab::Ref)> { - let io = self.io_dispatch.read().unwrap(); - if io.is_shutdown { - return Err(io::Error::new( - io::ErrorKind::Other, - crate::util::error::RUNTIME_SHUTTING_DOWN_ERROR, - )); - } - io.allocator.allocate().ok_or_else(|| { - io::Error::new( - io::ErrorKind::Other, - "reactor at max registered I/O resources", - ) - }) - } -} - -impl fmt::Debug for Handle { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "Handle") - } -} - -// ===== impl IoDispatcher ===== - -impl IoDispatcher { - fn new(allocator: slab::Allocator) -> Self { - Self { - allocator, - is_shutdown: false, - } - } -} - -impl Direction { - pub(super) fn mask(self) -> Ready { - match self { - Direction::Read => Ready::READABLE | Ready::READ_CLOSED, - Direction::Write => Ready::WRITABLE | Ready::WRITE_CLOSED, - } - } -} - -// Signal handling -cfg_signal_internal_and_unix! { - impl Handle { - pub(crate) fn register_signal_receiver(&self, receiver: &mut mio::net::UnixStream) -> io::Result<()> { - self.registry.register(receiver, TOKEN_SIGNAL, mio::Interest::READABLE)?; - Ok(()) - } - } - - impl Driver { - pub(crate) fn consume_signal_ready(&mut self) -> bool { - let ret = self.signal_ready; - self.signal_ready = false; - ret - } - } -} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/io/registration.rs temporalio-1.3.0/vendor/tokio/src/runtime/io/registration.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/io/registration.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/io/registration.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,10 +3,10 @@ use crate::io::interest::Interest; use crate::runtime::io::{Direction, Handle, ReadyEvent, ScheduledIo}; use crate::runtime::scheduler; -use crate::util::slab; use mio::event::Source; use std::io; +use std::sync::Arc; use std::task::{Context, Poll}; cfg_io_driver! { @@ -45,10 +45,12 @@ #[derive(Debug)] pub(crate) struct Registration { /// Handle to the associated runtime. + /// + /// TODO: this can probably be moved into `ScheduledIo`. handle: scheduler::Handle, /// Reference to state stored by the driver. - shared: slab::Ref, + shared: Arc, } } @@ -95,7 +97,7 @@ /// /// `Err` is returned if an error is encountered. pub(crate) fn deregister(&mut self, io: &mut impl Source) -> io::Result<()> { - self.handle().deregister_source(io) + self.handle().deregister_source(&self.shared, io) } pub(crate) fn clear_readiness(&self, event: ReadyEvent) { @@ -116,7 +118,7 @@ // Uses the poll path, requiring the caller to ensure mutual exclusion for // correctness. Only the last task to call this function is notified. - #[cfg(not(tokio_wasi))] + #[cfg(not(target_os = "wasi"))] pub(crate) fn poll_read_io( &self, cx: &mut Context<'_>, @@ -199,6 +201,33 @@ } } + pub(crate) async fn readiness(&self, interest: Interest) -> io::Result { + let ev = self.shared.readiness(interest).await; + + if ev.is_shutdown { + return Err(gone()); + } + + Ok(ev) + } + + pub(crate) async fn async_io( + &self, + interest: Interest, + mut f: impl FnMut() -> io::Result, + ) -> io::Result { + loop { + let event = self.readiness(interest).await?; + + match f() { + Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => { + self.clear_readiness(event); + } + x => return x, + } + } + } + fn handle(&self) -> &Handle { self.handle.driver().io() } @@ -223,30 +252,3 @@ crate::util::error::RUNTIME_SHUTTING_DOWN_ERROR, ) } - -cfg_io_readiness! { - impl Registration { - pub(crate) async fn readiness(&self, interest: Interest) -> io::Result { - let ev = self.shared.readiness(interest).await; - - if ev.is_shutdown { - return Err(gone()) - } - - Ok(ev) - } - - pub(crate) async fn async_io(&self, interest: Interest, mut f: impl FnMut() -> io::Result) -> io::Result { - loop { - let event = self.readiness(interest).await?; - - match f() { - Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => { - self.clear_readiness(event); - } - x => return x, - } - } - } - } -} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/io/registration_set.rs temporalio-1.3.0/vendor/tokio/src/runtime/io/registration_set.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/io/registration_set.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/io/registration_set.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,134 @@ +use crate::loom::sync::atomic::AtomicUsize; +use crate::runtime::io::ScheduledIo; +use crate::util::linked_list::{self, LinkedList}; + +use std::io; +use std::ptr::NonNull; +use std::sync::atomic::Ordering::{Acquire, Release}; +use std::sync::Arc; + +pub(super) struct RegistrationSet { + num_pending_release: AtomicUsize, +} + +pub(super) struct Synced { + // True when the I/O driver shutdown. At this point, no more registrations + // should be added to the set. + is_shutdown: bool, + + // List of all registrations tracked by the set + registrations: LinkedList, ScheduledIo>, + + // Registrations that are pending drop. When a `Registration` is dropped, it + // stores its `ScheduledIo` in this list. The I/O driver is responsible for + // dropping it. This ensures the `ScheduledIo` is not freed while it can + // still be included in an I/O event. + pending_release: Vec>, +} + +impl RegistrationSet { + pub(super) fn new() -> (RegistrationSet, Synced) { + let set = RegistrationSet { + num_pending_release: AtomicUsize::new(0), + }; + + let synced = Synced { + is_shutdown: false, + registrations: LinkedList::new(), + pending_release: Vec::with_capacity(16), + }; + + (set, synced) + } + + pub(super) fn is_shutdown(&self, synced: &Synced) -> bool { + synced.is_shutdown + } + + /// Returns `true` if there are registrations that need to be released + pub(super) fn needs_release(&self) -> bool { + self.num_pending_release.load(Acquire) != 0 + } + + pub(super) fn allocate(&self, synced: &mut Synced) -> io::Result> { + if synced.is_shutdown { + return Err(io::Error::new( + io::ErrorKind::Other, + crate::util::error::RUNTIME_SHUTTING_DOWN_ERROR, + )); + } + + let ret = Arc::new(ScheduledIo::default()); + + // Push a ref into the list of all resources. + synced.registrations.push_front(ret.clone()); + + Ok(ret) + } + + // Returns `true` if the caller should unblock the I/O driver to purge + // registrations pending release. + pub(super) fn deregister(&self, synced: &mut Synced, registration: &Arc) -> bool { + // Kind of arbitrary, but buffering 16 `ScheduledIo`s doesn't seem like much + const NOTIFY_AFTER: usize = 16; + + synced.pending_release.push(registration.clone()); + + let len = synced.pending_release.len(); + self.num_pending_release.store(len, Release); + + len == NOTIFY_AFTER + } + + pub(super) fn shutdown(&self, synced: &mut Synced) -> Vec> { + if synced.is_shutdown { + return vec![]; + } + + synced.is_shutdown = true; + synced.pending_release.clear(); + + // Building a vec of all outstanding I/O handles could be expensive, but + // this is the shutdown operation. In theory, shutdowns should be + // "clean" with no outstanding I/O resources. Even if it is slow, we + // aren't optimizing for shutdown. + let mut ret = vec![]; + + while let Some(io) = synced.registrations.pop_back() { + ret.push(io); + } + + ret + } + + pub(super) fn release(&self, synced: &mut Synced) { + for io in synced.pending_release.drain(..) { + // safety: the registration is part of our list + let _ = unsafe { synced.registrations.remove(io.as_ref().into()) }; + } + + self.num_pending_release.store(0, Release); + } +} + +// Safety: `Arc` pins the inner data +unsafe impl linked_list::Link for Arc { + type Handle = Arc; + type Target = ScheduledIo; + + fn as_raw(handle: &Self::Handle) -> NonNull { + // safety: Arc::as_ptr never returns null + unsafe { NonNull::new_unchecked(Arc::as_ptr(handle) as *mut _) } + } + + unsafe fn from_raw(ptr: NonNull) -> Arc { + // safety: the linked list currently owns a ref count + unsafe { Arc::from_raw(ptr.as_ptr() as *const _) } + } + + unsafe fn pointers( + target: NonNull, + ) -> NonNull> { + NonNull::new_unchecked(target.as_ref().linked_list_pointers.get()) + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/io/scheduled_io.rs temporalio-1.3.0/vendor/tokio/src/runtime/io/scheduled_io.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/io/scheduled_io.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/io/scheduled_io.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,43 +1,122 @@ -use super::{ReadyEvent, Tick}; use crate::io::interest::Interest; use crate::io::ready::Ready; use crate::loom::sync::atomic::AtomicUsize; use crate::loom::sync::Mutex; +use crate::runtime::io::{Direction, ReadyEvent, Tick}; use crate::util::bit; -use crate::util::slab::Entry; +use crate::util::linked_list::{self, LinkedList}; use crate::util::WakeList; -use std::sync::atomic::Ordering::{AcqRel, Acquire, Release}; +use std::cell::UnsafeCell; +use std::future::Future; +use std::marker::PhantomPinned; +use std::pin::Pin; +use std::ptr::NonNull; +use std::sync::atomic::Ordering::{AcqRel, Acquire}; use std::task::{Context, Poll, Waker}; -use super::Direction; - -cfg_io_readiness! { - use crate::util::linked_list::{self, LinkedList}; - - use std::cell::UnsafeCell; - use std::future::Future; - use std::marker::PhantomPinned; - use std::pin::Pin; - use std::ptr::NonNull; -} - /// Stored in the I/O driver resource slab. #[derive(Debug)] +// # This struct should be cache padded to avoid false sharing. The cache padding rules are copied +// from crossbeam-utils/src/cache_padded.rs +// +// Starting from Intel's Sandy Bridge, spatial prefetcher is now pulling pairs of 64-byte cache +// lines at a time, so we have to align to 128 bytes rather than 64. +// +// Sources: +// - https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf +// - https://github.com/facebook/folly/blob/1b5288e6eea6df074758f877c849b6e73bbb9fbb/folly/lang/Align.h#L107 +// +// ARM's big.LITTLE architecture has asymmetric cores and "big" cores have 128-byte cache line size. +// +// Sources: +// - https://www.mono-project.com/news/2016/09/12/arm64-icache/ +// +// powerpc64 has 128-byte cache line size. +// +// Sources: +// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_ppc64x.go#L9 +#[cfg_attr( + any( + target_arch = "x86_64", + target_arch = "aarch64", + target_arch = "powerpc64", + ), + repr(align(128)) +)] +// arm, mips, mips64, riscv64, sparc, and hexagon have 32-byte cache line size. +// +// Sources: +// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_arm.go#L7 +// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_mips.go#L7 +// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_mipsle.go#L7 +// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_mips64x.go#L9 +// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_riscv64.go#L7 +// - https://github.com/torvalds/linux/blob/3516bd729358a2a9b090c1905bd2a3fa926e24c6/arch/sparc/include/asm/cache.h#L17 +// - https://github.com/torvalds/linux/blob/3516bd729358a2a9b090c1905bd2a3fa926e24c6/arch/hexagon/include/asm/cache.h#L12 +// +// riscv32 is assumed not to exceed the cache line size of riscv64. +#[cfg_attr( + any( + target_arch = "arm", + target_arch = "mips", + target_arch = "mips64", + target_arch = "riscv32", + target_arch = "riscv64", + target_arch = "sparc", + target_arch = "hexagon", + ), + repr(align(32)) +)] +// m68k has 16-byte cache line size. +// +// Sources: +// - https://github.com/torvalds/linux/blob/3516bd729358a2a9b090c1905bd2a3fa926e24c6/arch/m68k/include/asm/cache.h#L9 +#[cfg_attr(target_arch = "m68k", repr(align(16)))] +// s390x has 256-byte cache line size. +// +// Sources: +// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_s390x.go#L7 +// - https://github.com/torvalds/linux/blob/3516bd729358a2a9b090c1905bd2a3fa926e24c6/arch/s390/include/asm/cache.h#L13 +#[cfg_attr(target_arch = "s390x", repr(align(256)))] +// x86, wasm, and sparc64 have 64-byte cache line size. +// +// Sources: +// - https://github.com/golang/go/blob/dda2991c2ea0c5914714469c4defc2562a907230/src/internal/cpu/cpu_x86.go#L9 +// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_wasm.go#L7 +// - https://github.com/torvalds/linux/blob/3516bd729358a2a9b090c1905bd2a3fa926e24c6/arch/sparc/include/asm/cache.h#L19 +// +// All others are assumed to have 64-byte cache line size. +#[cfg_attr( + not(any( + target_arch = "x86_64", + target_arch = "aarch64", + target_arch = "powerpc64", + target_arch = "arm", + target_arch = "mips", + target_arch = "mips64", + target_arch = "riscv32", + target_arch = "riscv64", + target_arch = "sparc", + target_arch = "hexagon", + target_arch = "m68k", + target_arch = "s390x", + )), + repr(align(64)) +)] pub(crate) struct ScheduledIo { - /// Packs the resource's readiness with the resource's generation. + pub(super) linked_list_pointers: UnsafeCell>, + + /// Packs the resource's readiness and I/O driver latest tick. readiness: AtomicUsize, waiters: Mutex, } -cfg_io_readiness! { - type WaitList = LinkedList::Target>; -} +type WaitList = LinkedList::Target>; #[derive(Debug, Default)] struct Waiters { - #[cfg(feature = "net")] /// List of all current waiters. list: WaitList, @@ -48,83 +127,64 @@ writer: Option, } -cfg_io_readiness! { - #[derive(Debug)] - struct Waiter { - pointers: linked_list::Pointers, +#[derive(Debug)] +struct Waiter { + pointers: linked_list::Pointers, - /// The waker for this task. - waker: Option, + /// The waker for this task. + waker: Option, - /// The interest this waiter is waiting on. - interest: Interest, + /// The interest this waiter is waiting on. + interest: Interest, - is_ready: bool, + is_ready: bool, - /// Should never be `!Unpin`. - _p: PhantomPinned, - } + /// Should never be `!Unpin`. + _p: PhantomPinned, +} - generate_addr_of_methods! { - impl<> Waiter { - unsafe fn addr_of_pointers(self: NonNull) -> NonNull> { - &self.pointers - } +generate_addr_of_methods! { + impl<> Waiter { + unsafe fn addr_of_pointers(self: NonNull) -> NonNull> { + &self.pointers } } +} - /// Future returned by `readiness()`. - struct Readiness<'a> { - scheduled_io: &'a ScheduledIo, +/// Future returned by `readiness()`. +struct Readiness<'a> { + scheduled_io: &'a ScheduledIo, - state: State, + state: State, - /// Entry in the waiter `LinkedList`. - waiter: UnsafeCell, - } + /// Entry in the waiter `LinkedList`. + waiter: UnsafeCell, +} - enum State { - Init, - Waiting, - Done, - } +enum State { + Init, + Waiting, + Done, } // The `ScheduledIo::readiness` (`AtomicUsize`) is packed full of goodness. // -// | shutdown | generation | driver tick | readiness | -// |----------+------------+--------------+-----------| -// | 1 bit | 7 bits + 8 bits + 16 bits | +// | shutdown | driver tick | readiness | +// |----------+-------------+-----------| +// | 1 bit | 8 bits + 16 bits | const READINESS: bit::Pack = bit::Pack::least_significant(16); const TICK: bit::Pack = READINESS.then(8); -const GENERATION: bit::Pack = TICK.then(7); - -const SHUTDOWN: bit::Pack = GENERATION.then(1); - -#[test] -fn test_generations_assert_same() { - assert_eq!(super::GENERATION, GENERATION); -} +const SHUTDOWN: bit::Pack = TICK.then(1); // ===== impl ScheduledIo ===== -impl Entry for ScheduledIo { - fn reset(&self) { - let state = self.readiness.load(Acquire); - - let generation = GENERATION.unpack(state); - let next = GENERATION.pack_lossy(generation + 1, 0); - - self.readiness.store(next, Release); - } -} - impl Default for ScheduledIo { fn default() -> ScheduledIo { ScheduledIo { + linked_list_pointers: UnsafeCell::new(linked_list::Pointers::new()), readiness: AtomicUsize::new(0), waiters: Mutex::new(Default::default()), } @@ -132,8 +192,9 @@ } impl ScheduledIo { - pub(crate) fn generation(&self) -> usize { - GENERATION.unpack(self.readiness.load(Acquire)) + pub(crate) fn token(&self) -> mio::Token { + // use `expose_addr` when stable + mio::Token(self as *const _ as usize) } /// Invoked when the IO driver is shut down; forces this ScheduledIo into a @@ -148,61 +209,39 @@ /// the current value, returning the previous readiness value. /// /// # Arguments - /// - `token`: the token for this `ScheduledIo`. /// - `tick`: whether setting the tick or trying to clear readiness for a /// specific tick. /// - `f`: a closure returning a new readiness value given the previous /// readiness. - /// - /// # Returns - /// - /// If the given token's generation no longer matches the `ScheduledIo`'s - /// generation, then the corresponding IO resource has been removed and - /// replaced with a new resource. In that case, this method returns `Err`. - /// Otherwise, this returns the previous readiness. - pub(super) fn set_readiness( - &self, - token: Option, - tick: Tick, - f: impl Fn(Ready) -> Ready, - ) -> Result<(), ()> { + pub(super) fn set_readiness(&self, tick: Tick, f: impl Fn(Ready) -> Ready) { let mut current = self.readiness.load(Acquire); - loop { - let current_generation = GENERATION.unpack(current); - - if let Some(token) = token { - // Check that the generation for this access is still the - // current one. - if GENERATION.unpack(token) != current_generation { - return Err(()); - } - } + // The shutdown bit should not be set + debug_assert_eq!(0, SHUTDOWN.unpack(current)); - // Mask out the tick/generation bits so that the modifying - // function doesn't see them. + loop { + // Mask out the tick bits so that the modifying function doesn't see + // them. let current_readiness = Ready::from_usize(current); let new = f(current_readiness); - let packed = match tick { + let next = match tick { Tick::Set(t) => TICK.pack(t as usize, new.as_usize()), Tick::Clear(t) => { if TICK.unpack(current) as u8 != t { // Trying to clear readiness with an old event! - return Err(()); + return; } TICK.pack(t as usize, new.as_usize()) } }; - let next = GENERATION.pack(current_generation, packed); - match self .readiness .compare_exchange(current, next, AcqRel, Acquire) { - Ok(_) => return Ok(()), + Ok(_) => return, // we lost the race, retry! Err(actual) => current = actual, } @@ -238,7 +277,6 @@ } } - #[cfg(feature = "net")] 'outer: loop { let mut iter = waiters.list.drain_filter(|w| ready.satisfies(w.interest)); @@ -351,9 +389,7 @@ // This consumes the current readiness state **except** for closed // states. Closed states are excluded because they are final states. let mask_no_closed = event.ready - Ready::READ_CLOSED - Ready::WRITE_CLOSED; - - // result isn't important - let _ = self.set_readiness(None, Tick::Clear(event.tick), |curr| curr - mask_no_closed); + self.set_readiness(Tick::Clear(event.tick), |curr| curr - mask_no_closed); } pub(crate) fn clear_wakers(&self) { @@ -372,187 +408,193 @@ unsafe impl Send for ScheduledIo {} unsafe impl Sync for ScheduledIo {} -cfg_io_readiness! { - impl ScheduledIo { - /// An async version of `poll_readiness` which uses a linked list of wakers. - pub(crate) async fn readiness(&self, interest: Interest) -> ReadyEvent { - self.readiness_fut(interest).await - } - - // This is in a separate function so that the borrow checker doesn't think - // we are borrowing the `UnsafeCell` possibly over await boundaries. - // - // Go figure. - fn readiness_fut(&self, interest: Interest) -> Readiness<'_> { - Readiness { - scheduled_io: self, - state: State::Init, - waiter: UnsafeCell::new(Waiter { - pointers: linked_list::Pointers::new(), - waker: None, - is_ready: false, - interest, - _p: PhantomPinned, - }), - } - } +impl ScheduledIo { + /// An async version of `poll_readiness` which uses a linked list of wakers. + pub(crate) async fn readiness(&self, interest: Interest) -> ReadyEvent { + self.readiness_fut(interest).await } - unsafe impl linked_list::Link for Waiter { - type Handle = NonNull; - type Target = Waiter; - - fn as_raw(handle: &NonNull) -> NonNull { - *handle - } - - unsafe fn from_raw(ptr: NonNull) -> NonNull { - ptr - } - - unsafe fn pointers(target: NonNull) -> NonNull> { - Waiter::addr_of_pointers(target) + // This is in a separate function so that the borrow checker doesn't think + // we are borrowing the `UnsafeCell` possibly over await boundaries. + // + // Go figure. + fn readiness_fut(&self, interest: Interest) -> Readiness<'_> { + Readiness { + scheduled_io: self, + state: State::Init, + waiter: UnsafeCell::new(Waiter { + pointers: linked_list::Pointers::new(), + waker: None, + is_ready: false, + interest, + _p: PhantomPinned, + }), } } +} - // ===== impl Readiness ===== +unsafe impl linked_list::Link for Waiter { + type Handle = NonNull; + type Target = Waiter; - impl Future for Readiness<'_> { - type Output = ReadyEvent; + fn as_raw(handle: &NonNull) -> NonNull { + *handle + } - fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - use std::sync::atomic::Ordering::SeqCst; + unsafe fn from_raw(ptr: NonNull) -> NonNull { + ptr + } - let (scheduled_io, state, waiter) = unsafe { - let me = self.get_unchecked_mut(); - (&me.scheduled_io, &mut me.state, &me.waiter) - }; + unsafe fn pointers(target: NonNull) -> NonNull> { + Waiter::addr_of_pointers(target) + } +} - loop { - match *state { - State::Init => { - // Optimistically check existing readiness - let curr = scheduled_io.readiness.load(SeqCst); - let ready = Ready::from_usize(READINESS.unpack(curr)); - let is_shutdown = SHUTDOWN.unpack(curr) != 0; - - // Safety: `waiter.interest` never changes - let interest = unsafe { (*waiter.get()).interest }; - let ready = ready.intersection(interest); - - if !ready.is_empty() || is_shutdown { - // Currently ready! - let tick = TICK.unpack(curr) as u8; - *state = State::Done; - return Poll::Ready(ReadyEvent { tick, ready, is_shutdown }); - } +// ===== impl Readiness ===== - // Wasn't ready, take the lock (and check again while locked). - let mut waiters = scheduled_io.waiters.lock(); +impl Future for Readiness<'_> { + type Output = ReadyEvent; - let curr = scheduled_io.readiness.load(SeqCst); - let mut ready = Ready::from_usize(READINESS.unpack(curr)); - let is_shutdown = SHUTDOWN.unpack(curr) != 0; + fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + use std::sync::atomic::Ordering::SeqCst; - if is_shutdown { - ready = Ready::ALL; - } + let (scheduled_io, state, waiter) = unsafe { + let me = self.get_unchecked_mut(); + (&me.scheduled_io, &mut me.state, &me.waiter) + }; - let ready = ready.intersection(interest); + loop { + match *state { + State::Init => { + // Optimistically check existing readiness + let curr = scheduled_io.readiness.load(SeqCst); + let ready = Ready::from_usize(READINESS.unpack(curr)); + let is_shutdown = SHUTDOWN.unpack(curr) != 0; + + // Safety: `waiter.interest` never changes + let interest = unsafe { (*waiter.get()).interest }; + let ready = ready.intersection(interest); - if !ready.is_empty() || is_shutdown { - // Currently ready! - let tick = TICK.unpack(curr) as u8; - *state = State::Done; - return Poll::Ready(ReadyEvent { tick, ready, is_shutdown }); - } + if !ready.is_empty() || is_shutdown { + // Currently ready! + let tick = TICK.unpack(curr) as u8; + *state = State::Done; + return Poll::Ready(ReadyEvent { + tick, + ready, + is_shutdown, + }); + } - // Not ready even after locked, insert into list... + // Wasn't ready, take the lock (and check again while locked). + let mut waiters = scheduled_io.waiters.lock(); - // Safety: called while locked - unsafe { - (*waiter.get()).waker = Some(cx.waker().clone()); - } + let curr = scheduled_io.readiness.load(SeqCst); + let mut ready = Ready::from_usize(READINESS.unpack(curr)); + let is_shutdown = SHUTDOWN.unpack(curr) != 0; - // Insert the waiter into the linked list - // - // safety: pointers from `UnsafeCell` are never null. - waiters - .list - .push_front(unsafe { NonNull::new_unchecked(waiter.get()) }); - *state = State::Waiting; + if is_shutdown { + ready = Ready::ALL; } - State::Waiting => { - // Currently in the "Waiting" state, implying the caller has - // a waiter stored in the waiter list (guarded by - // `notify.waiters`). In order to access the waker fields, - // we must hold the lock. - - let waiters = scheduled_io.waiters.lock(); - - // Safety: called while locked - let w = unsafe { &mut *waiter.get() }; - - if w.is_ready { - // Our waker has been notified. - *state = State::Done; - } else { - // Update the waker, if necessary. - if !w.waker.as_ref().unwrap().will_wake(cx.waker()) { - w.waker = Some(cx.waker().clone()); - } - return Poll::Pending; - } + let ready = ready.intersection(interest); - // Explicit drop of the lock to indicate the scope that the - // lock is held. Because holding the lock is required to - // ensure safe access to fields not held within the lock, it - // is helpful to visualize the scope of the critical - // section. - drop(waiters); - } - State::Done => { - // Safety: State::Done means it is no longer shared - let w = unsafe { &mut *waiter.get() }; - - let curr = scheduled_io.readiness.load(Acquire); - let is_shutdown = SHUTDOWN.unpack(curr) != 0; - - // The returned tick might be newer than the event - // which notified our waker. This is ok because the future - // still didn't return `Poll::Ready`. + if !ready.is_empty() || is_shutdown { + // Currently ready! let tick = TICK.unpack(curr) as u8; - - // The readiness state could have been cleared in the meantime, - // but we allow the returned ready set to be empty. - let curr_ready = Ready::from_usize(READINESS.unpack(curr)); - let ready = curr_ready.intersection(w.interest); - + *state = State::Done; return Poll::Ready(ReadyEvent { tick, ready, is_shutdown, }); } + + // Not ready even after locked, insert into list... + + // Safety: called while locked + unsafe { + (*waiter.get()).waker = Some(cx.waker().clone()); + } + + // Insert the waiter into the linked list + // + // safety: pointers from `UnsafeCell` are never null. + waiters + .list + .push_front(unsafe { NonNull::new_unchecked(waiter.get()) }); + *state = State::Waiting; + } + State::Waiting => { + // Currently in the "Waiting" state, implying the caller has + // a waiter stored in the waiter list (guarded by + // `notify.waiters`). In order to access the waker fields, + // we must hold the lock. + + let waiters = scheduled_io.waiters.lock(); + + // Safety: called while locked + let w = unsafe { &mut *waiter.get() }; + + if w.is_ready { + // Our waker has been notified. + *state = State::Done; + } else { + // Update the waker, if necessary. + if !w.waker.as_ref().unwrap().will_wake(cx.waker()) { + w.waker = Some(cx.waker().clone()); + } + + return Poll::Pending; + } + + // Explicit drop of the lock to indicate the scope that the + // lock is held. Because holding the lock is required to + // ensure safe access to fields not held within the lock, it + // is helpful to visualize the scope of the critical + // section. + drop(waiters); + } + State::Done => { + // Safety: State::Done means it is no longer shared + let w = unsafe { &mut *waiter.get() }; + + let curr = scheduled_io.readiness.load(Acquire); + let is_shutdown = SHUTDOWN.unpack(curr) != 0; + + // The returned tick might be newer than the event + // which notified our waker. This is ok because the future + // still didn't return `Poll::Ready`. + let tick = TICK.unpack(curr) as u8; + + // The readiness state could have been cleared in the meantime, + // but we allow the returned ready set to be empty. + let curr_ready = Ready::from_usize(READINESS.unpack(curr)); + let ready = curr_ready.intersection(w.interest); + + return Poll::Ready(ReadyEvent { + tick, + ready, + is_shutdown, + }); } } } } +} - impl Drop for Readiness<'_> { - fn drop(&mut self) { - let mut waiters = self.scheduled_io.waiters.lock(); - - // Safety: `waiter` is only ever stored in `waiters` - unsafe { - waiters - .list - .remove(NonNull::new_unchecked(self.waiter.get())) - }; - } - } +impl Drop for Readiness<'_> { + fn drop(&mut self) { + let mut waiters = self.scheduled_io.waiters.lock(); - unsafe impl Send for Readiness<'_> {} - unsafe impl Sync for Readiness<'_> {} + // Safety: `waiter` is only ever stored in `waiters` + unsafe { + waiters + .list + .remove(NonNull::new_unchecked(self.waiter.get())) + }; + } } + +unsafe impl Send for Readiness<'_> {} +unsafe impl Sync for Readiness<'_> {} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/metrics/batch.rs temporalio-1.3.0/vendor/tokio/src/runtime/metrics/batch.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/metrics/batch.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/metrics/batch.rs 2023-10-30 19:40:00.000000000 +0000 @@ -73,7 +73,8 @@ } } - pub(crate) fn submit(&mut self, worker: &WorkerMetrics) { + pub(crate) fn submit(&mut self, worker: &WorkerMetrics, mean_poll_time: u64) { + worker.mean_poll_time.store(mean_poll_time, Relaxed); worker.park_count.store(self.park_count, Relaxed); worker.noop_count.store(self.noop_count, Relaxed); worker.steal_count.store(self.steal_count, Relaxed); diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/metrics/mock.rs temporalio-1.3.0/vendor/tokio/src/runtime/metrics/mock.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/metrics/mock.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/metrics/mock.rs 2023-10-30 19:40:00.000000000 +0000 @@ -37,7 +37,7 @@ Self {} } - pub(crate) fn submit(&mut self, _to: &WorkerMetrics) {} + pub(crate) fn submit(&mut self, _to: &WorkerMetrics, _mean_poll_time: u64) {} pub(crate) fn about_to_park(&mut self) {} pub(crate) fn inc_local_schedule_count(&mut self) {} pub(crate) fn start_processing_scheduled_tasks(&mut self) {} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/metrics/runtime.rs temporalio-1.3.0/vendor/tokio/src/runtime/metrics/runtime.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/metrics/runtime.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/metrics/runtime.rs 2023-10-30 19:40:00.000000000 +0000 @@ -769,6 +769,47 @@ .unwrap_or_default() } + /// Returns the mean duration of task polls, in nanoseconds. + /// + /// This is an exponentially weighted moving average. Currently, this metric + /// is only provided by the multi-threaded runtime. + /// + /// # Arguments + /// + /// `worker` is the index of the worker being queried. The given value must + /// be between 0 and `num_workers()`. The index uniquely identifies a single + /// worker and will continue to identify the worker throughout the lifetime + /// of the runtime instance. + /// + /// # Panics + /// + /// The method panics when `worker` represents an invalid worker, i.e. is + /// greater than or equal to `num_workers()`. + /// + /// # Examples + /// + /// ``` + /// use tokio::runtime::Handle; + /// + /// #[tokio::main] + /// async fn main() { + /// let metrics = Handle::current().metrics(); + /// + /// let n = metrics.worker_mean_poll_time(0); + /// println!("worker 0 has a mean poll time of {:?}", n); + /// } + /// ``` + #[track_caller] + pub fn worker_mean_poll_time(&self, worker: usize) -> Duration { + let nanos = self + .handle + .inner + .worker_metrics(worker) + .mean_poll_time + .load(Relaxed); + Duration::from_nanos(nanos) + } + /// Returns the number of tasks currently scheduled in the blocking /// thread pool, spawned using `spawn_blocking`. /// diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/metrics/worker.rs temporalio-1.3.0/vendor/tokio/src/runtime/metrics/worker.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/metrics/worker.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/metrics/worker.rs 2023-10-30 19:40:00.000000000 +0000 @@ -28,6 +28,9 @@ /// Number of tasks the worker polled. pub(crate) poll_count: AtomicU64, + /// EWMA task poll time, in nanoseconds. + pub(crate) mean_poll_time: AtomicU64, + /// Amount of time the worker spent doing work vs. parking. pub(crate) busy_duration_total: AtomicU64, @@ -62,6 +65,7 @@ steal_count: AtomicU64::new(0), steal_operations: AtomicU64::new(0), poll_count: AtomicU64::new(0), + mean_poll_time: AtomicU64::new(0), overflow_count: AtomicU64::new(0), busy_duration_total: AtomicU64::new(0), local_schedule_count: AtomicU64::new(0), diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/mod.rs temporalio-1.3.0/vendor/tokio/src/runtime/mod.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -175,7 +175,7 @@ // At the top due to macros #[cfg(test)] -#[cfg(not(tokio_wasm))] +#[cfg(not(target_family = "wasm"))] #[macro_use] mod tests; @@ -212,7 +212,7 @@ use config::Config; mod blocking; - #[cfg_attr(tokio_wasi, allow(unused_imports))] + #[cfg_attr(target_os = "wasi", allow(unused_imports))] pub(crate) use blocking::spawn_blocking; cfg_trace! { @@ -226,6 +226,10 @@ mod builder; pub use self::builder::Builder; cfg_unstable! { + mod id; + #[cfg_attr(not(tokio_unstable), allow(unreachable_pub))] + pub use id::Id; + pub use self::builder::UnhandledPanic; pub use crate::util::rand::RngSeed; } diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/park.rs temporalio-1.3.0/vendor/tokio/src/runtime/park.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/park.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/park.rs 2023-10-30 19:40:00.000000000 +0000 @@ -67,9 +67,9 @@ CURRENT_THREAD_PARK_COUNT.with(|count| count.fetch_add(1, SeqCst)); // Wasm doesn't have threads, so just sleep. - #[cfg(not(tokio_wasm))] + #[cfg(not(target_family = "wasm"))] self.inner.park_timeout(duration); - #[cfg(tokio_wasm)] + #[cfg(target_family = "wasm")] std::thread::sleep(duration); } @@ -222,7 +222,6 @@ use crate::loom::thread::AccessError; use std::future::Future; use std::marker::PhantomData; -use std::mem; use std::rc::Rc; use std::task::{RawWaker, RawWakerVTable, Waker}; @@ -317,16 +316,12 @@ } unsafe fn clone(raw: *const ()) -> RawWaker { - let unparker = Inner::from_raw(raw); - - // Increment the ref count - mem::forget(unparker.clone()); - - unparker_to_raw_waker(unparker) + Arc::increment_strong_count(raw as *const Inner); + unparker_to_raw_waker(Inner::from_raw(raw)) } unsafe fn drop_waker(raw: *const ()) { - let _ = Inner::from_raw(raw); + drop(Inner::from_raw(raw)); } unsafe fn wake(raw: *const ()) { @@ -335,11 +330,8 @@ } unsafe fn wake_by_ref(raw: *const ()) { - let unparker = Inner::from_raw(raw); - unparker.unpark(); - - // We don't actually own a reference to the unparker - mem::forget(unparker); + let raw = raw as *const Inner; + (*raw).unpark(); } #[cfg(loom)] diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/runtime.rs temporalio-1.3.0/vendor/tokio/src/runtime/runtime.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/runtime.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/runtime.rs 2023-10-30 19:40:00.000000000 +0000 @@ -9,6 +9,10 @@ cfg_rt_multi_thread! { use crate::runtime::Builder; use crate::runtime::scheduler::MultiThread; + + cfg_unstable! { + use crate::runtime::scheduler::MultiThreadAlt; + } } /// The Tokio runtime. @@ -25,7 +29,7 @@ /// # Shutdown /// /// Shutting down the runtime is done by dropping the value, or calling -/// [`Runtime::shutdown_background`] or [`Runtime::shutdown_timeout`]. +/// [`shutdown_background`] or [`shutdown_timeout`]. /// /// Tasks spawned through [`Runtime::spawn`] keep running until they yield. /// Then they are dropped. They are not *guaranteed* to run to completion, but @@ -38,11 +42,11 @@ /// stopped. This can take an indefinite amount of time. The `Drop` /// implementation waits forever for this. /// -/// `shutdown_background` and `shutdown_timeout` can be used if waiting forever -/// is undesired. When the timeout is reached, spawned work that did not stop -/// in time and threads running it are leaked. The work continues to run until -/// one of the stopping conditions is fulfilled, but the thread initiating the -/// shutdown is unblocked. +/// The [`shutdown_background`] and [`shutdown_timeout`] methods can be used if +/// waiting forever is undesired. When the timeout is reached, spawned work that +/// did not stop in time and threads running it are leaked. The work continues +/// to run until one of the stopping conditions is fulfilled, but the thread +/// initiating the shutdown is unblocked. /// /// Once the runtime has been dropped, any outstanding I/O resources bound to /// it will no longer function. Calling any method on them will result in an @@ -50,18 +54,43 @@ /// /// # Sharing /// -/// The Tokio runtime implements `Sync` and `Send` to allow you to wrap it -/// in a `Arc`. Most fn take `&self` to allow you to call them concurrently -/// across multiple threads. -/// -/// Calls to `shutdown` and `shutdown_timeout` require exclusive ownership of -/// the runtime type and this can be achieved via `Arc::try_unwrap` when only -/// one strong count reference is left over. +/// There are several ways to establish shared access to a Tokio runtime: +/// +/// * Using an [Arc]\. +/// * Using a [`Handle`]. +/// * Entering the runtime context. +/// +/// Using an [Arc]\ or [`Handle`] allows you to do various +/// things with the runtime such as spawning new tasks or entering the runtime +/// context. Both types can be cloned to create a new handle that allows access +/// to the same runtime. By passing clones into different tasks or threads, you +/// will be able to access the runtime from those tasks or threads. +/// +/// The difference between [Arc]\ and [`Handle`] is that +/// an [Arc]\ will prevent the runtime from shutting down, +/// whereas a [`Handle`] does not prevent that. This is because shutdown of the +/// runtime happens when the destructor of the `Runtime` object runs. +/// +/// Calls to [`shutdown_background`] and [`shutdown_timeout`] require exclusive +/// ownership of the `Runtime` type. When using an [Arc]\, +/// this can be achieved via [`Arc::try_unwrap`] when only one strong count +/// reference is left over. +/// +/// The runtime context is entered using the [`Runtime::enter`] or +/// [`Handle::enter`] methods, which use a thread-local variable to store the +/// current runtime. Whenever you are inside the runtime context, methods such +/// as [`tokio::spawn`] will use the runtime whose context you are inside. /// /// [timer]: crate::time /// [mod]: index.html /// [`new`]: method@Self::new /// [`Builder`]: struct@Builder +/// [`Handle`]: struct@Handle +/// [`tokio::spawn`]: crate::spawn +/// [`Arc::try_unwrap`]: std::sync::Arc::try_unwrap +/// [Arc]: std::sync::Arc +/// [`shutdown_background`]: method@Runtime::shutdown_background +/// [`shutdown_timeout`]: method@Runtime::shutdown_timeout #[derive(Debug)] pub struct Runtime { /// Task scheduler @@ -84,6 +113,9 @@ CurrentThread, /// The flavor that executes tasks across multiple threads. MultiThread, + /// The flavor that executes tasks across multiple threads. + #[cfg(tokio_unstable)] + MultiThreadAlt, } /// The runtime scheduler is either a multi-thread or a current-thread executor. @@ -93,8 +125,12 @@ CurrentThread(CurrentThread), /// Execute tasks across multiple threads. - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] MultiThread(MultiThread), + + /// Execute tasks across multiple threads. + #[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))] + MultiThreadAlt(MultiThreadAlt), } impl Runtime { @@ -309,8 +345,10 @@ match &self.scheduler { Scheduler::CurrentThread(exec) => exec.block_on(&self.handle.inner, future), - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] Scheduler::MultiThread(exec) => exec.block_on(&self.handle.inner, future), + #[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))] + Scheduler::MultiThreadAlt(exec) => exec.block_on(&self.handle.inner, future), } } @@ -425,11 +463,17 @@ let _guard = context::try_set_current(&self.handle.inner); current_thread.shutdown(&self.handle.inner); } - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] Scheduler::MultiThread(multi_thread) => { // The threaded scheduler drops its tasks on its worker threads, which is // already in the runtime's context. multi_thread.shutdown(&self.handle.inner); + } + #[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))] + Scheduler::MultiThreadAlt(multi_thread) => { + // The threaded scheduler drops its tasks on its worker threads, which is + // already in the runtime's context. + multi_thread.shutdown(&self.handle.inner); } } } diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/block_in_place.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/block_in_place.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/block_in_place.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/block_in_place.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,21 @@ +use crate::runtime::scheduler; + +#[track_caller] +pub(crate) fn block_in_place(f: F) -> R +where + F: FnOnce() -> R, +{ + #[cfg(tokio_unstable)] + { + use crate::runtime::{Handle, RuntimeFlavor::MultiThreadAlt}; + + match Handle::try_current().map(|h| h.runtime_flavor()) { + Ok(MultiThreadAlt) => { + return scheduler::multi_thread_alt::block_in_place(f); + } + _ => {} + } + } + + scheduler::multi_thread::block_in_place(f) +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/current_thread/mod.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/current_thread/mod.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/current_thread/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/current_thread/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,764 @@ +use crate::future::poll_fn; +use crate::loom::sync::atomic::AtomicBool; +use crate::loom::sync::Arc; +use crate::runtime::driver::{self, Driver}; +use crate::runtime::scheduler::{self, Defer, Inject}; +use crate::runtime::task::{self, JoinHandle, OwnedTasks, Schedule, Task}; +use crate::runtime::{blocking, context, Config, MetricsBatch, SchedulerMetrics, WorkerMetrics}; +use crate::sync::notify::Notify; +use crate::util::atomic_cell::AtomicCell; +use crate::util::{waker_ref, RngSeedGenerator, Wake, WakerRef}; + +use std::cell::RefCell; +use std::collections::VecDeque; +use std::fmt; +use std::future::Future; +use std::sync::atomic::Ordering::{AcqRel, Release}; +use std::task::Poll::{Pending, Ready}; +use std::task::Waker; +use std::time::Duration; + +/// Executes tasks on the current thread +pub(crate) struct CurrentThread { + /// Core scheduler data is acquired by a thread entering `block_on`. + core: AtomicCell, + + /// Notifier for waking up other threads to steal the + /// driver. + notify: Notify, +} + +/// Handle to the current thread scheduler +pub(crate) struct Handle { + /// Scheduler state shared across threads + shared: Shared, + + /// Resource driver handles + pub(crate) driver: driver::Handle, + + /// Blocking pool spawner + pub(crate) blocking_spawner: blocking::Spawner, + + /// Current random number generator seed + pub(crate) seed_generator: RngSeedGenerator, +} + +/// Data required for executing the scheduler. The struct is passed around to +/// a function that will perform the scheduling work and acts as a capability token. +struct Core { + /// Scheduler run queue + tasks: VecDeque, + + /// Current tick + tick: u32, + + /// Runtime driver + /// + /// The driver is removed before starting to park the thread + driver: Option, + + /// Metrics batch + metrics: MetricsBatch, + + /// How often to check the global queue + global_queue_interval: u32, + + /// True if a task panicked without being handled and the runtime is + /// configured to shutdown on unhandled panic. + unhandled_panic: bool, +} + +/// Scheduler state shared between threads. +struct Shared { + /// Remote run queue + inject: Inject>, + + /// Collection of all active tasks spawned onto this executor. + owned: OwnedTasks>, + + /// Indicates whether the blocked on thread was woken. + woken: AtomicBool, + + /// Scheduler configuration options + config: Config, + + /// Keeps track of various runtime metrics. + scheduler_metrics: SchedulerMetrics, + + /// This scheduler only has one worker. + worker_metrics: WorkerMetrics, +} + +/// Thread-local context. +/// +/// pub(crate) to store in `runtime::context`. +pub(crate) struct Context { + /// Scheduler handle + handle: Arc, + + /// Scheduler core, enabling the holder of `Context` to execute the + /// scheduler. + core: RefCell>>, + + /// Deferred tasks, usually ones that called `task::yield_now()`. + pub(crate) defer: Defer, +} + +type Notified = task::Notified>; + +/// Initial queue capacity. +const INITIAL_CAPACITY: usize = 64; + +/// Used if none is specified. This is a temporary constant and will be removed +/// as we unify tuning logic between the multi-thread and current-thread +/// schedulers. +const DEFAULT_GLOBAL_QUEUE_INTERVAL: u32 = 31; + +impl CurrentThread { + pub(crate) fn new( + driver: Driver, + driver_handle: driver::Handle, + blocking_spawner: blocking::Spawner, + seed_generator: RngSeedGenerator, + config: Config, + ) -> (CurrentThread, Arc) { + let worker_metrics = WorkerMetrics::from_config(&config); + + // Get the configured global queue interval, or use the default. + let global_queue_interval = config + .global_queue_interval + .unwrap_or(DEFAULT_GLOBAL_QUEUE_INTERVAL); + + let handle = Arc::new(Handle { + shared: Shared { + inject: Inject::new(), + owned: OwnedTasks::new(), + woken: AtomicBool::new(false), + config, + scheduler_metrics: SchedulerMetrics::new(), + worker_metrics, + }, + driver: driver_handle, + blocking_spawner, + seed_generator, + }); + + let core = AtomicCell::new(Some(Box::new(Core { + tasks: VecDeque::with_capacity(INITIAL_CAPACITY), + tick: 0, + driver: Some(driver), + metrics: MetricsBatch::new(&handle.shared.worker_metrics), + global_queue_interval, + unhandled_panic: false, + }))); + + let scheduler = CurrentThread { + core, + notify: Notify::new(), + }; + + (scheduler, handle) + } + + #[track_caller] + pub(crate) fn block_on(&self, handle: &scheduler::Handle, future: F) -> F::Output { + pin!(future); + + crate::runtime::context::enter_runtime(handle, false, |blocking| { + let handle = handle.as_current_thread(); + + // Attempt to steal the scheduler core and block_on the future if we can + // there, otherwise, lets select on a notification that the core is + // available or the future is complete. + loop { + if let Some(core) = self.take_core(handle) { + return core.block_on(future); + } else { + let notified = self.notify.notified(); + pin!(notified); + + if let Some(out) = blocking + .block_on(poll_fn(|cx| { + if notified.as_mut().poll(cx).is_ready() { + return Ready(None); + } + + if let Ready(out) = future.as_mut().poll(cx) { + return Ready(Some(out)); + } + + Pending + })) + .expect("Failed to `Enter::block_on`") + { + return out; + } + } + } + }) + } + + fn take_core(&self, handle: &Arc) -> Option> { + let core = self.core.take()?; + + Some(CoreGuard { + context: scheduler::Context::CurrentThread(Context { + handle: handle.clone(), + core: RefCell::new(Some(core)), + defer: Defer::new(), + }), + scheduler: self, + }) + } + + pub(crate) fn shutdown(&mut self, handle: &scheduler::Handle) { + let handle = handle.as_current_thread(); + + // Avoid a double panic if we are currently panicking and + // the lock may be poisoned. + + let core = match self.take_core(handle) { + Some(core) => core, + None if std::thread::panicking() => return, + None => panic!("Oh no! We never placed the Core back, this is a bug!"), + }; + + // Check that the thread-local is not being destroyed + let tls_available = context::with_current(|_| ()).is_ok(); + + if tls_available { + core.enter(|core, _context| { + let core = shutdown2(core, handle); + (core, ()) + }); + } else { + // Shutdown without setting the context. `tokio::spawn` calls will + // fail, but those will fail either way because the thread-local is + // not available anymore. + let context = core.context.expect_current_thread(); + let core = context.core.borrow_mut().take().unwrap(); + + let core = shutdown2(core, handle); + *context.core.borrow_mut() = Some(core); + } + } +} + +fn shutdown2(mut core: Box, handle: &Handle) -> Box { + // Drain the OwnedTasks collection. This call also closes the + // collection, ensuring that no tasks are ever pushed after this + // call returns. + handle.shared.owned.close_and_shutdown_all(); + + // Drain local queue + // We already shut down every task, so we just need to drop the task. + while let Some(task) = core.next_local_task(handle) { + drop(task); + } + + // Close the injection queue + handle.shared.inject.close(); + + // Drain remote queue + while let Some(task) = handle.shared.inject.pop() { + drop(task); + } + + assert!(handle.shared.owned.is_empty()); + + // Submit metrics + core.submit_metrics(handle); + + // Shutdown the resource drivers + if let Some(driver) = core.driver.as_mut() { + driver.shutdown(&handle.driver); + } + + core +} + +impl fmt::Debug for CurrentThread { + fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { + fmt.debug_struct("CurrentThread").finish() + } +} + +// ===== impl Core ===== + +impl Core { + /// Get and increment the current tick + fn tick(&mut self) { + self.tick = self.tick.wrapping_add(1); + } + + fn next_task(&mut self, handle: &Handle) -> Option { + if self.tick % self.global_queue_interval == 0 { + handle + .next_remote_task() + .or_else(|| self.next_local_task(handle)) + } else { + self.next_local_task(handle) + .or_else(|| handle.next_remote_task()) + } + } + + fn next_local_task(&mut self, handle: &Handle) -> Option { + let ret = self.tasks.pop_front(); + handle + .shared + .worker_metrics + .set_queue_depth(self.tasks.len()); + ret + } + + fn push_task(&mut self, handle: &Handle, task: Notified) { + self.tasks.push_back(task); + self.metrics.inc_local_schedule_count(); + handle + .shared + .worker_metrics + .set_queue_depth(self.tasks.len()); + } + + fn submit_metrics(&mut self, handle: &Handle) { + self.metrics.submit(&handle.shared.worker_metrics, 0); + } +} + +#[cfg(tokio_taskdump)] +fn wake_deferred_tasks_and_free(context: &Context) { + let wakers = context.defer.take_deferred(); + for waker in wakers { + waker.wake(); + } +} + +// ===== impl Context ===== + +impl Context { + /// Execute the closure with the given scheduler core stored in the + /// thread-local context. + fn run_task(&self, mut core: Box, f: impl FnOnce() -> R) -> (Box, R) { + core.metrics.start_poll(); + let mut ret = self.enter(core, || crate::runtime::coop::budget(f)); + ret.0.metrics.end_poll(); + ret + } + + /// Blocks the current thread until an event is received by the driver, + /// including I/O events, timer events, ... + fn park(&self, mut core: Box, handle: &Handle) -> Box { + let mut driver = core.driver.take().expect("driver missing"); + + if let Some(f) = &handle.shared.config.before_park { + // Incorrect lint, the closures are actually different types so `f` + // cannot be passed as an argument to `enter`. + #[allow(clippy::redundant_closure)] + let (c, _) = self.enter(core, || f()); + core = c; + } + + // This check will fail if `before_park` spawns a task for us to run + // instead of parking the thread + if core.tasks.is_empty() { + // Park until the thread is signaled + core.metrics.about_to_park(); + core.submit_metrics(handle); + + let (c, _) = self.enter(core, || { + driver.park(&handle.driver); + self.defer.wake(); + }); + + core = c; + } + + if let Some(f) = &handle.shared.config.after_unpark { + // Incorrect lint, the closures are actually different types so `f` + // cannot be passed as an argument to `enter`. + #[allow(clippy::redundant_closure)] + let (c, _) = self.enter(core, || f()); + core = c; + } + + core.driver = Some(driver); + core + } + + /// Checks the driver for new events without blocking the thread. + fn park_yield(&self, mut core: Box, handle: &Handle) -> Box { + let mut driver = core.driver.take().expect("driver missing"); + + core.submit_metrics(handle); + + let (mut core, _) = self.enter(core, || { + driver.park_timeout(&handle.driver, Duration::from_millis(0)); + self.defer.wake(); + }); + + core.driver = Some(driver); + core + } + + fn enter(&self, core: Box, f: impl FnOnce() -> R) -> (Box, R) { + // Store the scheduler core in the thread-local context + // + // A drop-guard is employed at a higher level. + *self.core.borrow_mut() = Some(core); + + // Execute the closure while tracking the execution budget + let ret = f(); + + // Take the scheduler core back + let core = self.core.borrow_mut().take().expect("core missing"); + (core, ret) + } + + pub(crate) fn defer(&self, waker: &Waker) { + self.defer.defer(waker); + } +} + +// ===== impl Handle ===== + +impl Handle { + /// Spawns a future onto the `CurrentThread` scheduler + pub(crate) fn spawn( + me: &Arc, + future: F, + id: crate::runtime::task::Id, + ) -> JoinHandle + where + F: crate::future::Future + Send + 'static, + F::Output: Send + 'static, + { + let (handle, notified) = me.shared.owned.bind(future, me.clone(), id); + + if let Some(notified) = notified { + me.schedule(notified); + } + + handle + } + + /// Capture a snapshot of this runtime's state. + #[cfg(all( + tokio_unstable, + tokio_taskdump, + target_os = "linux", + any(target_arch = "aarch64", target_arch = "x86", target_arch = "x86_64") + ))] + pub(crate) fn dump(&self) -> crate::runtime::Dump { + use crate::runtime::dump; + use task::trace::trace_current_thread; + + let mut traces = vec![]; + + // todo: how to make this work outside of a runtime context? + context::with_scheduler(|maybe_context| { + // drain the local queue + let context = if let Some(context) = maybe_context { + context.expect_current_thread() + } else { + return; + }; + let mut maybe_core = context.core.borrow_mut(); + let core = if let Some(core) = maybe_core.as_mut() { + core + } else { + return; + }; + let local = &mut core.tasks; + + if self.shared.inject.is_closed() { + return; + } + + traces = trace_current_thread(&self.shared.owned, local, &self.shared.inject) + .into_iter() + .map(dump::Task::new) + .collect(); + + // Avoid double borrow panic + drop(maybe_core); + + // Taking a taskdump could wakes every task, but we probably don't want + // the `yield_now` vector to be that large under normal circumstances. + // Therefore, we free its allocation. + wake_deferred_tasks_and_free(context); + }); + + dump::Dump::new(traces) + } + + fn next_remote_task(&self) -> Option { + self.shared.inject.pop() + } + + fn waker_ref(me: &Arc) -> WakerRef<'_> { + // Set woken to true when enter block_on, ensure outer future + // be polled for the first time when enter loop + me.shared.woken.store(true, Release); + waker_ref(me) + } + + // reset woken to false and return original value + pub(crate) fn reset_woken(&self) -> bool { + self.shared.woken.swap(false, AcqRel) + } +} + +cfg_metrics! { + impl Handle { + pub(crate) fn scheduler_metrics(&self) -> &SchedulerMetrics { + &self.shared.scheduler_metrics + } + + pub(crate) fn injection_queue_depth(&self) -> usize { + self.shared.inject.len() + } + + pub(crate) fn worker_metrics(&self, worker: usize) -> &WorkerMetrics { + assert_eq!(0, worker); + &self.shared.worker_metrics + } + + pub(crate) fn worker_local_queue_depth(&self, worker: usize) -> usize { + self.worker_metrics(worker).queue_depth() + } + + pub(crate) fn num_blocking_threads(&self) -> usize { + self.blocking_spawner.num_threads() + } + + pub(crate) fn num_idle_blocking_threads(&self) -> usize { + self.blocking_spawner.num_idle_threads() + } + + pub(crate) fn blocking_queue_depth(&self) -> usize { + self.blocking_spawner.queue_depth() + } + + pub(crate) fn active_tasks_count(&self) -> usize { + self.shared.owned.active_tasks_count() + } + } +} + +cfg_unstable! { + use std::num::NonZeroU64; + + impl Handle { + pub(crate) fn owned_id(&self) -> NonZeroU64 { + self.shared.owned.id + } + } +} + +impl fmt::Debug for Handle { + fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { + fmt.debug_struct("current_thread::Handle { ... }").finish() + } +} + +// ===== impl Shared ===== + +impl Schedule for Arc { + fn release(&self, task: &Task) -> Option> { + self.shared.owned.remove(task) + } + + fn schedule(&self, task: task::Notified) { + use scheduler::Context::CurrentThread; + + context::with_scheduler(|maybe_cx| match maybe_cx { + Some(CurrentThread(cx)) if Arc::ptr_eq(self, &cx.handle) => { + let mut core = cx.core.borrow_mut(); + + // If `None`, the runtime is shutting down, so there is no need + // to schedule the task. + if let Some(core) = core.as_mut() { + core.push_task(self, task); + } + } + _ => { + // Track that a task was scheduled from **outside** of the runtime. + self.shared.scheduler_metrics.inc_remote_schedule_count(); + + // Schedule the task + self.shared.inject.push(task); + self.driver.unpark(); + } + }); + } + + cfg_unstable! { + fn unhandled_panic(&self) { + use crate::runtime::UnhandledPanic; + + match self.shared.config.unhandled_panic { + UnhandledPanic::Ignore => { + // Do nothing + } + UnhandledPanic::ShutdownRuntime => { + use scheduler::Context::CurrentThread; + + // This hook is only called from within the runtime, so + // `context::with_scheduler` should match with `&self`, i.e. + // there is no opportunity for a nested scheduler to be + // called. + context::with_scheduler(|maybe_cx| match maybe_cx { + Some(CurrentThread(cx)) if Arc::ptr_eq(self, &cx.handle) => { + let mut core = cx.core.borrow_mut(); + + // If `None`, the runtime is shutting down, so there is no need to signal shutdown + if let Some(core) = core.as_mut() { + core.unhandled_panic = true; + self.shared.owned.close_and_shutdown_all(); + } + } + _ => unreachable!("runtime core not set in CURRENT thread-local"), + }) + } + } + } + } +} + +impl Wake for Handle { + fn wake(arc_self: Arc) { + Wake::wake_by_ref(&arc_self) + } + + /// Wake by reference + fn wake_by_ref(arc_self: &Arc) { + arc_self.shared.woken.store(true, Release); + arc_self.driver.unpark(); + } +} + +// ===== CoreGuard ===== + +/// Used to ensure we always place the `Core` value back into its slot in +/// `CurrentThread`, even if the future panics. +struct CoreGuard<'a> { + context: scheduler::Context, + scheduler: &'a CurrentThread, +} + +impl CoreGuard<'_> { + #[track_caller] + fn block_on(self, future: F) -> F::Output { + let ret = self.enter(|mut core, context| { + let waker = Handle::waker_ref(&context.handle); + let mut cx = std::task::Context::from_waker(&waker); + + pin!(future); + + core.metrics.start_processing_scheduled_tasks(); + + 'outer: loop { + let handle = &context.handle; + + if handle.reset_woken() { + let (c, res) = context.enter(core, || { + crate::runtime::coop::budget(|| future.as_mut().poll(&mut cx)) + }); + + core = c; + + if let Ready(v) = res { + return (core, Some(v)); + } + } + + for _ in 0..handle.shared.config.event_interval { + // Make sure we didn't hit an unhandled_panic + if core.unhandled_panic { + return (core, None); + } + + core.tick(); + + let entry = core.next_task(handle); + + let task = match entry { + Some(entry) => entry, + None => { + core.metrics.end_processing_scheduled_tasks(); + + core = if !context.defer.is_empty() { + context.park_yield(core, handle) + } else { + context.park(core, handle) + }; + + core.metrics.start_processing_scheduled_tasks(); + + // Try polling the `block_on` future next + continue 'outer; + } + }; + + let task = context.handle.shared.owned.assert_owner(task); + + let (c, _) = context.run_task(core, || { + task.run(); + }); + + core = c; + } + + core.metrics.end_processing_scheduled_tasks(); + + // Yield to the driver, this drives the timer and pulls any + // pending I/O events. + core = context.park_yield(core, handle); + + core.metrics.start_processing_scheduled_tasks(); + } + }); + + match ret { + Some(ret) => ret, + None => { + // `block_on` panicked. + panic!("a spawned task panicked and the runtime is configured to shut down on unhandled panic"); + } + } + } + + /// Enters the scheduler context. This sets the queue and other necessary + /// scheduler state in the thread-local. + fn enter(self, f: F) -> R + where + F: FnOnce(Box, &Context) -> (Box, R), + { + let context = self.context.expect_current_thread(); + + // Remove `core` from `context` to pass into the closure. + let core = context.core.borrow_mut().take().expect("core missing"); + + // Call the closure and place `core` back + let (core, ret) = context::set_scheduler(&self.context, || f(core, context)); + + *context.core.borrow_mut() = Some(core); + + ret + } +} + +impl Drop for CoreGuard<'_> { + fn drop(&mut self) { + let context = self.context.expect_current_thread(); + + if let Some(core) = context.core.borrow_mut().take() { + // Replace old scheduler back into the state to allow + // other threads to pick it up and drive it. + self.scheduler.core.set(core); + + // Wake up other possible threads that could steal the driver. + self.scheduler.notify.notify_one() + } + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/current_thread.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/current_thread.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/current_thread.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/current_thread.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,750 +0,0 @@ -use crate::future::poll_fn; -use crate::loom::sync::atomic::AtomicBool; -use crate::loom::sync::Arc; -use crate::runtime::driver::{self, Driver}; -use crate::runtime::scheduler::{self, Defer, Inject}; -use crate::runtime::task::{self, JoinHandle, OwnedTasks, Schedule, Task}; -use crate::runtime::{blocking, context, Config, MetricsBatch, SchedulerMetrics, WorkerMetrics}; -use crate::sync::notify::Notify; -use crate::util::atomic_cell::AtomicCell; -use crate::util::{waker_ref, RngSeedGenerator, Wake, WakerRef}; - -use std::cell::RefCell; -use std::collections::VecDeque; -use std::fmt; -use std::future::Future; -use std::sync::atomic::Ordering::{AcqRel, Release}; -use std::task::Poll::{Pending, Ready}; -use std::task::Waker; -use std::time::Duration; - -/// Executes tasks on the current thread -pub(crate) struct CurrentThread { - /// Core scheduler data is acquired by a thread entering `block_on`. - core: AtomicCell, - - /// Notifier for waking up other threads to steal the - /// driver. - notify: Notify, -} - -/// Handle to the current thread scheduler -pub(crate) struct Handle { - /// Scheduler state shared across threads - shared: Shared, - - /// Resource driver handles - pub(crate) driver: driver::Handle, - - /// Blocking pool spawner - pub(crate) blocking_spawner: blocking::Spawner, - - /// Current random number generator seed - pub(crate) seed_generator: RngSeedGenerator, -} - -/// Data required for executing the scheduler. The struct is passed around to -/// a function that will perform the scheduling work and acts as a capability token. -struct Core { - /// Scheduler run queue - tasks: VecDeque, - - /// Current tick - tick: u32, - - /// Runtime driver - /// - /// The driver is removed before starting to park the thread - driver: Option, - - /// Metrics batch - metrics: MetricsBatch, - - /// How often to check the global queue - global_queue_interval: u32, - - /// True if a task panicked without being handled and the runtime is - /// configured to shutdown on unhandled panic. - unhandled_panic: bool, -} - -/// Scheduler state shared between threads. -struct Shared { - /// Remote run queue - inject: Inject>, - - /// Collection of all active tasks spawned onto this executor. - owned: OwnedTasks>, - - /// Indicates whether the blocked on thread was woken. - woken: AtomicBool, - - /// Scheduler configuration options - config: Config, - - /// Keeps track of various runtime metrics. - scheduler_metrics: SchedulerMetrics, - - /// This scheduler only has one worker. - worker_metrics: WorkerMetrics, -} - -/// Thread-local context. -/// -/// pub(crate) to store in `runtime::context`. -pub(crate) struct Context { - /// Scheduler handle - handle: Arc, - - /// Scheduler core, enabling the holder of `Context` to execute the - /// scheduler. - core: RefCell>>, - - /// Deferred tasks, usually ones that called `task::yield_now()`. - pub(crate) defer: Defer, -} - -type Notified = task::Notified>; - -/// Initial queue capacity. -const INITIAL_CAPACITY: usize = 64; - -/// Used if none is specified. This is a temporary constant and will be removed -/// as we unify tuning logic between the multi-thread and current-thread -/// schedulers. -const DEFAULT_GLOBAL_QUEUE_INTERVAL: u32 = 31; - -impl CurrentThread { - pub(crate) fn new( - driver: Driver, - driver_handle: driver::Handle, - blocking_spawner: blocking::Spawner, - seed_generator: RngSeedGenerator, - config: Config, - ) -> (CurrentThread, Arc) { - let worker_metrics = WorkerMetrics::from_config(&config); - - // Get the configured global queue interval, or use the default. - let global_queue_interval = config - .global_queue_interval - .unwrap_or(DEFAULT_GLOBAL_QUEUE_INTERVAL); - - let handle = Arc::new(Handle { - shared: Shared { - inject: Inject::new(), - owned: OwnedTasks::new(), - woken: AtomicBool::new(false), - config, - scheduler_metrics: SchedulerMetrics::new(), - worker_metrics, - }, - driver: driver_handle, - blocking_spawner, - seed_generator, - }); - - let core = AtomicCell::new(Some(Box::new(Core { - tasks: VecDeque::with_capacity(INITIAL_CAPACITY), - tick: 0, - driver: Some(driver), - metrics: MetricsBatch::new(&handle.shared.worker_metrics), - global_queue_interval, - unhandled_panic: false, - }))); - - let scheduler = CurrentThread { - core, - notify: Notify::new(), - }; - - (scheduler, handle) - } - - #[track_caller] - pub(crate) fn block_on(&self, handle: &scheduler::Handle, future: F) -> F::Output { - pin!(future); - - crate::runtime::context::enter_runtime(handle, false, |blocking| { - let handle = handle.as_current_thread(); - - // Attempt to steal the scheduler core and block_on the future if we can - // there, otherwise, lets select on a notification that the core is - // available or the future is complete. - loop { - if let Some(core) = self.take_core(handle) { - return core.block_on(future); - } else { - let notified = self.notify.notified(); - pin!(notified); - - if let Some(out) = blocking - .block_on(poll_fn(|cx| { - if notified.as_mut().poll(cx).is_ready() { - return Ready(None); - } - - if let Ready(out) = future.as_mut().poll(cx) { - return Ready(Some(out)); - } - - Pending - })) - .expect("Failed to `Enter::block_on`") - { - return out; - } - } - } - }) - } - - fn take_core(&self, handle: &Arc) -> Option> { - let core = self.core.take()?; - - Some(CoreGuard { - context: scheduler::Context::CurrentThread(Context { - handle: handle.clone(), - core: RefCell::new(Some(core)), - defer: Defer::new(), - }), - scheduler: self, - }) - } - - pub(crate) fn shutdown(&mut self, handle: &scheduler::Handle) { - let handle = handle.as_current_thread(); - - // Avoid a double panic if we are currently panicking and - // the lock may be poisoned. - - let core = match self.take_core(handle) { - Some(core) => core, - None if std::thread::panicking() => return, - None => panic!("Oh no! We never placed the Core back, this is a bug!"), - }; - - // Check that the thread-local is not being destroyed - let tls_available = context::with_current(|_| ()).is_ok(); - - if tls_available { - core.enter(|core, _context| { - let core = shutdown2(core, handle); - (core, ()) - }); - } else { - // Shutdown without setting the context. `tokio::spawn` calls will - // fail, but those will fail either way because the thread-local is - // not available anymore. - let context = core.context.expect_current_thread(); - let core = context.core.borrow_mut().take().unwrap(); - - let core = shutdown2(core, handle); - *context.core.borrow_mut() = Some(core); - } - } -} - -fn shutdown2(mut core: Box, handle: &Handle) -> Box { - // Drain the OwnedTasks collection. This call also closes the - // collection, ensuring that no tasks are ever pushed after this - // call returns. - handle.shared.owned.close_and_shutdown_all(); - - // Drain local queue - // We already shut down every task, so we just need to drop the task. - while let Some(task) = core.next_local_task(handle) { - drop(task); - } - - // Close the injection queue - handle.shared.inject.close(); - - // Drain remote queue - while let Some(task) = handle.shared.inject.pop() { - drop(task); - } - - assert!(handle.shared.owned.is_empty()); - - // Submit metrics - core.submit_metrics(handle); - - // Shutdown the resource drivers - if let Some(driver) = core.driver.as_mut() { - driver.shutdown(&handle.driver); - } - - core -} - -impl fmt::Debug for CurrentThread { - fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { - fmt.debug_struct("CurrentThread").finish() - } -} - -// ===== impl Core ===== - -impl Core { - /// Get and increment the current tick - fn tick(&mut self) { - self.tick = self.tick.wrapping_add(1); - } - - fn next_task(&mut self, handle: &Handle) -> Option { - if self.tick % self.global_queue_interval == 0 { - handle - .next_remote_task() - .or_else(|| self.next_local_task(handle)) - } else { - self.next_local_task(handle) - .or_else(|| handle.next_remote_task()) - } - } - - fn next_local_task(&mut self, handle: &Handle) -> Option { - let ret = self.tasks.pop_front(); - handle - .shared - .worker_metrics - .set_queue_depth(self.tasks.len()); - ret - } - - fn push_task(&mut self, handle: &Handle, task: Notified) { - self.tasks.push_back(task); - self.metrics.inc_local_schedule_count(); - handle - .shared - .worker_metrics - .set_queue_depth(self.tasks.len()); - } - - fn submit_metrics(&mut self, handle: &Handle) { - self.metrics.submit(&handle.shared.worker_metrics); - } -} - -#[cfg(tokio_taskdump)] -fn wake_deferred_tasks_and_free(context: &Context) { - let wakers = context.defer.take_deferred(); - for waker in wakers { - waker.wake(); - } -} - -// ===== impl Context ===== - -impl Context { - /// Execute the closure with the given scheduler core stored in the - /// thread-local context. - fn run_task(&self, mut core: Box, f: impl FnOnce() -> R) -> (Box, R) { - core.metrics.start_poll(); - let mut ret = self.enter(core, || crate::runtime::coop::budget(f)); - ret.0.metrics.end_poll(); - ret - } - - /// Blocks the current thread until an event is received by the driver, - /// including I/O events, timer events, ... - fn park(&self, mut core: Box, handle: &Handle) -> Box { - let mut driver = core.driver.take().expect("driver missing"); - - if let Some(f) = &handle.shared.config.before_park { - // Incorrect lint, the closures are actually different types so `f` - // cannot be passed as an argument to `enter`. - #[allow(clippy::redundant_closure)] - let (c, _) = self.enter(core, || f()); - core = c; - } - - // This check will fail if `before_park` spawns a task for us to run - // instead of parking the thread - if core.tasks.is_empty() { - // Park until the thread is signaled - core.metrics.about_to_park(); - core.submit_metrics(handle); - - let (c, _) = self.enter(core, || { - driver.park(&handle.driver); - self.defer.wake(); - }); - - core = c; - } - - if let Some(f) = &handle.shared.config.after_unpark { - // Incorrect lint, the closures are actually different types so `f` - // cannot be passed as an argument to `enter`. - #[allow(clippy::redundant_closure)] - let (c, _) = self.enter(core, || f()); - core = c; - } - - core.driver = Some(driver); - core - } - - /// Checks the driver for new events without blocking the thread. - fn park_yield(&self, mut core: Box, handle: &Handle) -> Box { - let mut driver = core.driver.take().expect("driver missing"); - - core.submit_metrics(handle); - - let (mut core, _) = self.enter(core, || { - driver.park_timeout(&handle.driver, Duration::from_millis(0)); - self.defer.wake(); - }); - - core.driver = Some(driver); - core - } - - fn enter(&self, core: Box, f: impl FnOnce() -> R) -> (Box, R) { - // Store the scheduler core in the thread-local context - // - // A drop-guard is employed at a higher level. - *self.core.borrow_mut() = Some(core); - - // Execute the closure while tracking the execution budget - let ret = f(); - - // Take the scheduler core back - let core = self.core.borrow_mut().take().expect("core missing"); - (core, ret) - } - - pub(crate) fn defer(&self, waker: &Waker) { - self.defer.defer(waker); - } -} - -// ===== impl Handle ===== - -impl Handle { - /// Spawns a future onto the `CurrentThread` scheduler - pub(crate) fn spawn( - me: &Arc, - future: F, - id: crate::runtime::task::Id, - ) -> JoinHandle - where - F: crate::future::Future + Send + 'static, - F::Output: Send + 'static, - { - let (handle, notified) = me.shared.owned.bind(future, me.clone(), id); - - if let Some(notified) = notified { - me.schedule(notified); - } - - handle - } - - /// Capture a snapshot of this runtime's state. - #[cfg(all( - tokio_unstable, - tokio_taskdump, - target_os = "linux", - any(target_arch = "aarch64", target_arch = "x86", target_arch = "x86_64") - ))] - pub(crate) fn dump(&self) -> crate::runtime::Dump { - use crate::runtime::dump; - use task::trace::trace_current_thread; - - let mut traces = vec![]; - - // todo: how to make this work outside of a runtime context? - context::with_scheduler(|maybe_context| { - // drain the local queue - let context = if let Some(context) = maybe_context { - context.expect_current_thread() - } else { - return; - }; - let mut maybe_core = context.core.borrow_mut(); - let core = if let Some(core) = maybe_core.as_mut() { - core - } else { - return; - }; - let local = &mut core.tasks; - - if self.shared.inject.is_closed() { - return; - } - - traces = trace_current_thread(&self.shared.owned, local, &self.shared.inject) - .into_iter() - .map(dump::Task::new) - .collect(); - - // Avoid double borrow panic - drop(maybe_core); - - // Taking a taskdump could wakes every task, but we probably don't want - // the `yield_now` vector to be that large under normal circumstances. - // Therefore, we free its allocation. - wake_deferred_tasks_and_free(context); - }); - - dump::Dump::new(traces) - } - - fn next_remote_task(&self) -> Option { - self.shared.inject.pop() - } - - fn waker_ref(me: &Arc) -> WakerRef<'_> { - // Set woken to true when enter block_on, ensure outer future - // be polled for the first time when enter loop - me.shared.woken.store(true, Release); - waker_ref(me) - } - - // reset woken to false and return original value - pub(crate) fn reset_woken(&self) -> bool { - self.shared.woken.swap(false, AcqRel) - } -} - -cfg_metrics! { - impl Handle { - pub(crate) fn scheduler_metrics(&self) -> &SchedulerMetrics { - &self.shared.scheduler_metrics - } - - pub(crate) fn injection_queue_depth(&self) -> usize { - self.shared.inject.len() - } - - pub(crate) fn worker_metrics(&self, worker: usize) -> &WorkerMetrics { - assert_eq!(0, worker); - &self.shared.worker_metrics - } - - pub(crate) fn num_blocking_threads(&self) -> usize { - self.blocking_spawner.num_threads() - } - - pub(crate) fn num_idle_blocking_threads(&self) -> usize { - self.blocking_spawner.num_idle_threads() - } - - pub(crate) fn blocking_queue_depth(&self) -> usize { - self.blocking_spawner.queue_depth() - } - - pub(crate) fn active_tasks_count(&self) -> usize { - self.shared.owned.active_tasks_count() - } - } -} - -impl fmt::Debug for Handle { - fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { - fmt.debug_struct("current_thread::Handle { ... }").finish() - } -} - -// ===== impl Shared ===== - -impl Schedule for Arc { - fn release(&self, task: &Task) -> Option> { - self.shared.owned.remove(task) - } - - fn schedule(&self, task: task::Notified) { - use scheduler::Context::CurrentThread; - - context::with_scheduler(|maybe_cx| match maybe_cx { - Some(CurrentThread(cx)) if Arc::ptr_eq(self, &cx.handle) => { - let mut core = cx.core.borrow_mut(); - - // If `None`, the runtime is shutting down, so there is no need - // to schedule the task. - if let Some(core) = core.as_mut() { - core.push_task(self, task); - } - } - _ => { - // Track that a task was scheduled from **outside** of the runtime. - self.shared.scheduler_metrics.inc_remote_schedule_count(); - - // Schedule the task - self.shared.inject.push(task); - self.driver.unpark(); - } - }); - } - - cfg_unstable! { - fn unhandled_panic(&self) { - use crate::runtime::UnhandledPanic; - - match self.shared.config.unhandled_panic { - UnhandledPanic::Ignore => { - // Do nothing - } - UnhandledPanic::ShutdownRuntime => { - use scheduler::Context::CurrentThread; - - // This hook is only called from within the runtime, so - // `context::with_scheduler` should match with `&self`, i.e. - // there is no opportunity for a nested scheduler to be - // called. - context::with_scheduler(|maybe_cx| match maybe_cx { - Some(CurrentThread(cx)) if Arc::ptr_eq(self, &cx.handle) => { - let mut core = cx.core.borrow_mut(); - - // If `None`, the runtime is shutting down, so there is no need to signal shutdown - if let Some(core) = core.as_mut() { - core.unhandled_panic = true; - self.shared.owned.close_and_shutdown_all(); - } - } - _ => unreachable!("runtime core not set in CURRENT thread-local"), - }) - } - } - } - } -} - -impl Wake for Handle { - fn wake(arc_self: Arc) { - Wake::wake_by_ref(&arc_self) - } - - /// Wake by reference - fn wake_by_ref(arc_self: &Arc) { - arc_self.shared.woken.store(true, Release); - arc_self.driver.unpark(); - } -} - -// ===== CoreGuard ===== - -/// Used to ensure we always place the `Core` value back into its slot in -/// `CurrentThread`, even if the future panics. -struct CoreGuard<'a> { - context: scheduler::Context, - scheduler: &'a CurrentThread, -} - -impl CoreGuard<'_> { - #[track_caller] - fn block_on(self, future: F) -> F::Output { - let ret = self.enter(|mut core, context| { - let waker = Handle::waker_ref(&context.handle); - let mut cx = std::task::Context::from_waker(&waker); - - pin!(future); - - core.metrics.start_processing_scheduled_tasks(); - - 'outer: loop { - let handle = &context.handle; - - if handle.reset_woken() { - let (c, res) = context.enter(core, || { - crate::runtime::coop::budget(|| future.as_mut().poll(&mut cx)) - }); - - core = c; - - if let Ready(v) = res { - return (core, Some(v)); - } - } - - for _ in 0..handle.shared.config.event_interval { - // Make sure we didn't hit an unhandled_panic - if core.unhandled_panic { - return (core, None); - } - - core.tick(); - - let entry = core.next_task(handle); - - let task = match entry { - Some(entry) => entry, - None => { - core.metrics.end_processing_scheduled_tasks(); - - core = if !context.defer.is_empty() { - context.park_yield(core, handle) - } else { - context.park(core, handle) - }; - - core.metrics.start_processing_scheduled_tasks(); - - // Try polling the `block_on` future next - continue 'outer; - } - }; - - let task = context.handle.shared.owned.assert_owner(task); - - let (c, _) = context.run_task(core, || { - task.run(); - }); - - core = c; - } - - core.metrics.end_processing_scheduled_tasks(); - - // Yield to the driver, this drives the timer and pulls any - // pending I/O events. - core = context.park_yield(core, handle); - - core.metrics.start_processing_scheduled_tasks(); - } - }); - - match ret { - Some(ret) => ret, - None => { - // `block_on` panicked. - panic!("a spawned task panicked and the runtime is configured to shut down on unhandled panic"); - } - } - } - - /// Enters the scheduler context. This sets the queue and other necessary - /// scheduler state in the thread-local. - fn enter(self, f: F) -> R - where - F: FnOnce(Box, &Context) -> (Box, R), - { - let context = self.context.expect_current_thread(); - - // Remove `core` from `context` to pass into the closure. - let core = context.core.borrow_mut().take().expect("core missing"); - - // Call the closure and place `core` back - let (core, ret) = context::set_scheduler(&self.context, || f(core, context)); - - *context.core.borrow_mut() = Some(core); - - ret - } -} - -impl Drop for CoreGuard<'_> { - fn drop(&mut self) { - let context = self.context.expect_current_thread(); - - if let Some(core) = context.core.borrow_mut().take() { - // Replace old scheduler back into the state to allow - // other threads to pick it up and drive it. - self.scheduler.core.set(core); - - // Wake up other possible threads that could steal the driver. - self.scheduler.notify.notify_one() - } - } -} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/inject/rt_multi_thread.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/inject/rt_multi_thread.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/inject/rt_multi_thread.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/inject/rt_multi_thread.rs 2023-10-30 19:40:00.000000000 +0000 @@ -75,6 +75,21 @@ debug_assert!(unsafe { batch_tail.get_queue_next().is_none() }); let mut synced = shared.lock(); + + if synced.as_mut().is_closed { + drop(synced); + + let mut curr = Some(batch_head); + + while let Some(task) = curr { + curr = task.get_queue_next(); + + let _ = unsafe { task::Notified::::from_raw(task) }; + } + + return; + } + let synced = synced.as_mut(); if let Some(tail) = synced.tail { diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/inject/shared.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/inject/shared.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/inject/shared.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/inject/shared.rs 2023-10-30 19:40:00.000000000 +0000 @@ -38,7 +38,10 @@ } // Kind of annoying to have to include the cfg here - #[cfg(any(tokio_taskdump, all(feature = "rt-multi-thread", not(tokio_wasi))))] + #[cfg(any( + tokio_taskdump, + all(feature = "rt-multi-thread", not(target_os = "wasi")) + ))] pub(crate) fn is_closed(&self, synced: &Synced) -> bool { synced.is_closed } @@ -106,6 +109,8 @@ pub(crate) unsafe fn pop_n<'a>(&'a self, synced: &'a mut Synced, n: usize) -> Pop<'a, T> { use std::cmp; + debug_assert!(n > 0); + // safety: All updates to the len atomic are guarded by the mutex. As // such, a non-atomic load followed by a store is safe. let len = self.len.unsync_load(); diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/inject/synced.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/inject/synced.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/inject/synced.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/inject/synced.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,8 @@ +#![cfg_attr( + any(not(all(tokio_unstable, feature = "full")), target_family = "wasm"), + allow(dead_code) +)] + use crate::runtime::task; pub(crate) struct Synced { @@ -29,4 +34,8 @@ // safety: a `Notified` is pushed into the queue and now it is popped! Some(unsafe { task::Notified::from_raw(task) }) } + + pub(crate) fn is_empty(&self) -> bool { + self.head.is_none() + } } diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/mod.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/mod.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -10,11 +10,19 @@ } cfg_rt_multi_thread! { + mod block_in_place; + pub(crate) use block_in_place::block_in_place; + mod lock; use lock::Lock; pub(crate) mod multi_thread; pub(crate) use multi_thread::MultiThread; + + cfg_unstable! { + pub(crate) mod multi_thread_alt; + pub(crate) use multi_thread_alt::MultiThread as MultiThreadAlt; + } } use crate::runtime::driver; @@ -24,9 +32,12 @@ #[cfg(feature = "rt")] CurrentThread(Arc), - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] MultiThread(Arc), + #[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))] + MultiThreadAlt(Arc), + // TODO: This is to avoid triggering "dead code" warnings many other places // in the codebase. Remove this during a later cleanup #[cfg(not(feature = "rt"))] @@ -38,8 +49,11 @@ pub(super) enum Context { CurrentThread(current_thread::Context), - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] MultiThread(multi_thread::Context), + + #[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))] + MultiThreadAlt(multi_thread_alt::Context), } impl Handle { @@ -49,9 +63,12 @@ #[cfg(feature = "rt")] Handle::CurrentThread(ref h) => &h.driver, - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] Handle::MultiThread(ref h) => &h.driver, + #[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))] + Handle::MultiThreadAlt(ref h) => &h.driver, + #[cfg(not(feature = "rt"))] Handle::Disabled => unreachable!(), } @@ -67,6 +84,20 @@ use crate::util::RngSeedGenerator; use std::task::Waker; + macro_rules! match_flavor { + ($self:expr, $ty:ident($h:ident) => $e:expr) => { + match $self { + $ty::CurrentThread($h) => $e, + + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] + $ty::MultiThread($h) => $e, + + #[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))] + $ty::MultiThreadAlt($h) => $e, + } + } + } + impl Handle { #[track_caller] pub(crate) fn current() -> Handle { @@ -77,12 +108,7 @@ } pub(crate) fn blocking_spawner(&self) -> &blocking::Spawner { - match self { - Handle::CurrentThread(h) => &h.blocking_spawner, - - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] - Handle::MultiThread(h) => &h.blocking_spawner, - } + match_flavor!(self, Handle(h) => &h.blocking_spawner) } pub(crate) fn spawn(&self, future: F, id: Id) -> JoinHandle @@ -93,8 +119,11 @@ match self { Handle::CurrentThread(h) => current_thread::Handle::spawn(h, future, id), - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] Handle::MultiThread(h) => multi_thread::Handle::spawn(h, future, id), + + #[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))] + Handle::MultiThreadAlt(h) => multi_thread_alt::Handle::spawn(h, future, id), } } @@ -102,27 +131,36 @@ match *self { Handle::CurrentThread(_) => {}, - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] Handle::MultiThread(ref h) => h.shutdown(), + + #[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))] + Handle::MultiThreadAlt(ref h) => h.shutdown(), } } pub(crate) fn seed_generator(&self) -> &RngSeedGenerator { - match self { - Handle::CurrentThread(h) => &h.seed_generator, - - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] - Handle::MultiThread(h) => &h.seed_generator, - } + match_flavor!(self, Handle(h) => &h.seed_generator) } pub(crate) fn as_current_thread(&self) -> &Arc { match self { Handle::CurrentThread(handle) => handle, - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] _ => panic!("not a CurrentThread handle"), } } + + cfg_rt_multi_thread! { + cfg_unstable! { + pub(crate) fn expect_multi_thread_alt(&self) -> &Arc { + match self { + Handle::MultiThreadAlt(handle) => handle, + _ => panic!("not a `MultiThreadAlt` handle"), + } + } + } + } } cfg_metrics! { @@ -132,73 +170,43 @@ pub(crate) fn num_workers(&self) -> usize { match self { Handle::CurrentThread(_) => 1, - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] Handle::MultiThread(handle) => handle.num_workers(), + #[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))] + Handle::MultiThreadAlt(handle) => handle.num_workers(), } } pub(crate) fn num_blocking_threads(&self) -> usize { - match self { - Handle::CurrentThread(handle) => handle.num_blocking_threads(), - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] - Handle::MultiThread(handle) => handle.num_blocking_threads(), - } + match_flavor!(self, Handle(handle) => handle.num_blocking_threads()) } pub(crate) fn num_idle_blocking_threads(&self) -> usize { - match self { - Handle::CurrentThread(handle) => handle.num_idle_blocking_threads(), - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] - Handle::MultiThread(handle) => handle.num_idle_blocking_threads(), - } + match_flavor!(self, Handle(handle) => handle.num_idle_blocking_threads()) } pub(crate) fn active_tasks_count(&self) -> usize { - match self { - Handle::CurrentThread(handle) => handle.active_tasks_count(), - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] - Handle::MultiThread(handle) => handle.active_tasks_count(), - } + match_flavor!(self, Handle(handle) => handle.active_tasks_count()) } pub(crate) fn scheduler_metrics(&self) -> &SchedulerMetrics { - match self { - Handle::CurrentThread(handle) => handle.scheduler_metrics(), - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] - Handle::MultiThread(handle) => handle.scheduler_metrics(), - } + match_flavor!(self, Handle(handle) => handle.scheduler_metrics()) } pub(crate) fn worker_metrics(&self, worker: usize) -> &WorkerMetrics { - match self { - Handle::CurrentThread(handle) => handle.worker_metrics(worker), - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] - Handle::MultiThread(handle) => handle.worker_metrics(worker), - } + match_flavor!(self, Handle(handle) => handle.worker_metrics(worker)) } pub(crate) fn injection_queue_depth(&self) -> usize { - match self { - Handle::CurrentThread(handle) => handle.injection_queue_depth(), - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] - Handle::MultiThread(handle) => handle.injection_queue_depth(), - } + match_flavor!(self, Handle(handle) => handle.injection_queue_depth()) } pub(crate) fn worker_local_queue_depth(&self, worker: usize) -> usize { - match self { - Handle::CurrentThread(handle) => handle.worker_metrics(worker).queue_depth(), - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] - Handle::MultiThread(handle) => handle.worker_local_queue_depth(worker), - } + match_flavor!(self, Handle(handle) => handle.worker_local_queue_depth(worker)) } pub(crate) fn blocking_queue_depth(&self) -> usize { - match self { - Handle::CurrentThread(handle) => handle.blocking_queue_depth(), - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] - Handle::MultiThread(handle) => handle.blocking_queue_depth(), - } + match_flavor!(self, Handle(handle) => handle.blocking_queue_depth()) } } } @@ -208,17 +216,13 @@ pub(crate) fn expect_current_thread(&self) -> ¤t_thread::Context { match self { Context::CurrentThread(context) => context, - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] _ => panic!("expected `CurrentThread::Context`") } } pub(crate) fn defer(&self, waker: &Waker) { - match self { - Context::CurrentThread(context) => context.defer(waker), - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] - Context::MultiThread(context) => context.defer(waker), - } + match_flavor!(self, Context(context) => context.defer(waker)) } cfg_rt_multi_thread! { @@ -229,6 +233,16 @@ _ => panic!("expected `MultiThread::Context`") } } + + cfg_unstable! { + #[track_caller] + pub(crate) fn expect_multi_thread_alt(&self) -> &multi_thread_alt::Context { + match self { + Context::MultiThreadAlt(context) => context, + _ => panic!("expected `MultiThreadAlt::Context`") + } + } + } } } } diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread/handle.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread/handle.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread/handle.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread/handle.rs 2023-10-30 19:40:00.000000000 +0000 @@ -53,14 +53,22 @@ { let (handle, notified) = me.shared.owned.bind(future, me.clone(), id); - if let Some(notified) = notified { - me.schedule_task(notified, false); - } + me.schedule_option_task_without_yield(notified); handle } } +cfg_unstable! { + use std::num::NonZeroU64; + + impl Handle { + pub(crate) fn owned_id(&self) -> NonZeroU64 { + self.shared.owned.id + } + } +} + impl fmt::Debug for Handle { fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { fmt.debug_struct("multi_thread::Handle { ... }").finish() diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread/stats.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread/stats.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread/stats.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread/stats.rs 2023-10-30 19:40:00.000000000 +0000 @@ -74,7 +74,7 @@ } pub(crate) fn submit(&mut self, to: &WorkerMetrics) { - self.batch.submit(to); + self.batch.submit(to, self.task_poll_time_ewma as u64); } pub(crate) fn about_to_park(&mut self) { diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread/worker.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread/worker.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread/worker.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread/worker.rs 2023-10-30 19:40:00.000000000 +0000 @@ -158,7 +158,7 @@ idle: Idle, /// Collection of all active tasks spawned onto this executor. - pub(super) owned: OwnedTasks>, + pub(crate) owned: OwnedTasks>, /// Data synchronized by the scheduler mutex pub(super) synced: Mutex, @@ -787,6 +787,10 @@ cap, ); + // Take at least one task since the first task is returned directly + // and nto pushed onto the local queue. + let n = usize::max(1, n); + let mut synced = worker.handle.shared.synced.lock(); // safety: passing in the correct `inject::Synced`. let mut tasks = unsafe { worker.inject().pop_n(&mut synced.inject, n) }; @@ -1024,6 +1028,12 @@ }) } + pub(super) fn schedule_option_task_without_yield(&self, task: Option) { + if let Some(task) = task { + self.schedule_task(task, false); + } + } + fn schedule_local(&self, core: &mut Core, task: Notified, is_yield: bool) { core.stats.inc_local_schedule_count(); diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/counters.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/counters.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/counters.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/counters.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,166 @@ +#[cfg(tokio_internal_mt_counters)] +mod imp { + use std::sync::atomic::AtomicUsize; + use std::sync::atomic::Ordering::Relaxed; + + static NUM_MAINTENANCE: AtomicUsize = AtomicUsize::new(0); + static NUM_NOTIFY_LOCAL: AtomicUsize = AtomicUsize::new(0); + static NUM_NOTIFY_REMOTE: AtomicUsize = AtomicUsize::new(0); + static NUM_UNPARKS_LOCAL: AtomicUsize = AtomicUsize::new(0); + static NUM_UNPARKS_REMOTE: AtomicUsize = AtomicUsize::new(0); + static NUM_LIFO_SCHEDULES: AtomicUsize = AtomicUsize::new(0); + static NUM_LIFO_CAPPED: AtomicUsize = AtomicUsize::new(0); + static NUM_STEALS: AtomicUsize = AtomicUsize::new(0); + static NUM_OVERFLOW: AtomicUsize = AtomicUsize::new(0); + static NUM_PARK: AtomicUsize = AtomicUsize::new(0); + static NUM_POLLS: AtomicUsize = AtomicUsize::new(0); + static NUM_LIFO_POLLS: AtomicUsize = AtomicUsize::new(0); + static NUM_REMOTE_BATCH: AtomicUsize = AtomicUsize::new(0); + static NUM_GLOBAL_QUEUE_INTERVAL: AtomicUsize = AtomicUsize::new(0); + static NUM_NO_AVAIL_CORE: AtomicUsize = AtomicUsize::new(0); + static NUM_RELAY_SEARCH: AtomicUsize = AtomicUsize::new(0); + static NUM_SPIN_STALL: AtomicUsize = AtomicUsize::new(0); + static NUM_NO_LOCAL_WORK: AtomicUsize = AtomicUsize::new(0); + + impl Drop for super::Counters { + fn drop(&mut self) { + let notifies_local = NUM_NOTIFY_LOCAL.load(Relaxed); + let notifies_remote = NUM_NOTIFY_REMOTE.load(Relaxed); + let unparks_local = NUM_UNPARKS_LOCAL.load(Relaxed); + let unparks_remote = NUM_UNPARKS_REMOTE.load(Relaxed); + let maintenance = NUM_MAINTENANCE.load(Relaxed); + let lifo_scheds = NUM_LIFO_SCHEDULES.load(Relaxed); + let lifo_capped = NUM_LIFO_CAPPED.load(Relaxed); + let num_steals = NUM_STEALS.load(Relaxed); + let num_overflow = NUM_OVERFLOW.load(Relaxed); + let num_park = NUM_PARK.load(Relaxed); + let num_polls = NUM_POLLS.load(Relaxed); + let num_lifo_polls = NUM_LIFO_POLLS.load(Relaxed); + let num_remote_batch = NUM_REMOTE_BATCH.load(Relaxed); + let num_global_queue_interval = NUM_GLOBAL_QUEUE_INTERVAL.load(Relaxed); + let num_no_avail_core = NUM_NO_AVAIL_CORE.load(Relaxed); + let num_relay_search = NUM_RELAY_SEARCH.load(Relaxed); + let num_spin_stall = NUM_SPIN_STALL.load(Relaxed); + let num_no_local_work = NUM_NO_LOCAL_WORK.load(Relaxed); + + println!("---"); + println!("notifies (remote): {}", notifies_remote); + println!(" notifies (local): {}", notifies_local); + println!(" unparks (local): {}", unparks_local); + println!(" unparks (remote): {}", unparks_remote); + println!(" notify, no core: {}", num_no_avail_core); + println!(" maintenance: {}", maintenance); + println!(" LIFO schedules: {}", lifo_scheds); + println!(" LIFO capped: {}", lifo_capped); + println!(" steals: {}", num_steals); + println!(" queue overflows: {}", num_overflow); + println!(" parks: {}", num_park); + println!(" polls: {}", num_polls); + println!(" polls (LIFO): {}", num_lifo_polls); + println!("remote task batch: {}", num_remote_batch); + println!("global Q interval: {}", num_global_queue_interval); + println!(" relay search: {}", num_relay_search); + println!(" spin stall: {}", num_spin_stall); + println!(" no local work: {}", num_no_local_work); + } + } + + pub(crate) fn inc_num_inc_notify_local() { + NUM_NOTIFY_LOCAL.fetch_add(1, Relaxed); + } + + pub(crate) fn inc_num_notify_remote() { + NUM_NOTIFY_REMOTE.fetch_add(1, Relaxed); + } + + pub(crate) fn inc_num_unparks_local() { + NUM_UNPARKS_LOCAL.fetch_add(1, Relaxed); + } + + pub(crate) fn inc_num_unparks_remote() { + NUM_UNPARKS_REMOTE.fetch_add(1, Relaxed); + } + + pub(crate) fn inc_num_maintenance() { + NUM_MAINTENANCE.fetch_add(1, Relaxed); + } + + pub(crate) fn inc_lifo_schedules() { + NUM_LIFO_SCHEDULES.fetch_add(1, Relaxed); + } + + pub(crate) fn inc_lifo_capped() { + NUM_LIFO_CAPPED.fetch_add(1, Relaxed); + } + + pub(crate) fn inc_num_steals() { + NUM_STEALS.fetch_add(1, Relaxed); + } + + pub(crate) fn inc_num_overflows() { + NUM_OVERFLOW.fetch_add(1, Relaxed); + } + + pub(crate) fn inc_num_parks() { + NUM_PARK.fetch_add(1, Relaxed); + } + + pub(crate) fn inc_num_polls() { + NUM_POLLS.fetch_add(1, Relaxed); + } + + pub(crate) fn inc_num_lifo_polls() { + NUM_LIFO_POLLS.fetch_add(1, Relaxed); + } + + pub(crate) fn inc_num_remote_batch() { + NUM_REMOTE_BATCH.fetch_add(1, Relaxed); + } + + pub(crate) fn inc_global_queue_interval() { + NUM_GLOBAL_QUEUE_INTERVAL.fetch_add(1, Relaxed); + } + + pub(crate) fn inc_notify_no_core() { + NUM_NO_AVAIL_CORE.fetch_add(1, Relaxed); + } + + pub(crate) fn inc_num_relay_search() { + NUM_RELAY_SEARCH.fetch_add(1, Relaxed); + } + + pub(crate) fn inc_num_spin_stall() { + NUM_SPIN_STALL.fetch_add(1, Relaxed); + } + + pub(crate) fn inc_num_no_local_work() { + NUM_NO_LOCAL_WORK.fetch_add(1, Relaxed); + } +} + +#[cfg(not(tokio_internal_mt_counters))] +mod imp { + pub(crate) fn inc_num_inc_notify_local() {} + pub(crate) fn inc_num_notify_remote() {} + pub(crate) fn inc_num_unparks_local() {} + pub(crate) fn inc_num_unparks_remote() {} + pub(crate) fn inc_num_maintenance() {} + pub(crate) fn inc_lifo_schedules() {} + pub(crate) fn inc_lifo_capped() {} + pub(crate) fn inc_num_steals() {} + pub(crate) fn inc_num_overflows() {} + pub(crate) fn inc_num_parks() {} + pub(crate) fn inc_num_polls() {} + pub(crate) fn inc_num_lifo_polls() {} + pub(crate) fn inc_num_remote_batch() {} + pub(crate) fn inc_global_queue_interval() {} + pub(crate) fn inc_notify_no_core() {} + pub(crate) fn inc_num_relay_search() {} + pub(crate) fn inc_num_spin_stall() {} + pub(crate) fn inc_num_no_local_work() {} +} + +#[derive(Debug)] +pub(crate) struct Counters; + +pub(super) use imp::*; diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/handle/metrics.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/handle/metrics.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/handle/metrics.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/handle/metrics.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,41 @@ +use super::Handle; + +use crate::runtime::{SchedulerMetrics, WorkerMetrics}; + +impl Handle { + pub(crate) fn num_workers(&self) -> usize { + self.shared.worker_metrics.len() + } + + pub(crate) fn num_blocking_threads(&self) -> usize { + self.blocking_spawner.num_threads() + } + + pub(crate) fn num_idle_blocking_threads(&self) -> usize { + self.blocking_spawner.num_idle_threads() + } + + pub(crate) fn active_tasks_count(&self) -> usize { + self.shared.owned.active_tasks_count() + } + + pub(crate) fn scheduler_metrics(&self) -> &SchedulerMetrics { + &self.shared.scheduler_metrics + } + + pub(crate) fn worker_metrics(&self, worker: usize) -> &WorkerMetrics { + &self.shared.worker_metrics[worker] + } + + pub(crate) fn injection_queue_depth(&self) -> usize { + self.shared.injection_queue_depth() + } + + pub(crate) fn worker_local_queue_depth(&self, worker: usize) -> usize { + self.shared.worker_local_queue_depth(worker) + } + + pub(crate) fn blocking_queue_depth(&self) -> usize { + self.blocking_spawner.queue_depth() + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/handle/taskdump.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/handle/taskdump.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/handle/taskdump.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/handle/taskdump.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,26 @@ +use super::Handle; + +use crate::runtime::Dump; + +impl Handle { + pub(crate) async fn dump(&self) -> Dump { + let trace_status = &self.shared.trace_status; + + // If a dump is in progress, block. + trace_status.start_trace_request(&self).await; + + let result = loop { + if let Some(result) = trace_status.take_result() { + break result; + } else { + self.notify_all(); + trace_status.result_ready.notified().await; + } + }; + + // Allow other queued dumps to proceed. + trace_status.end_trace_request(&self).await; + + result + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/handle.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/handle.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/handle.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/handle.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,75 @@ +use crate::future::Future; +use crate::loom::sync::Arc; +use crate::runtime::scheduler::multi_thread_alt::worker; +use crate::runtime::{ + blocking, driver, + task::{self, JoinHandle}, +}; +use crate::util::RngSeedGenerator; + +use std::fmt; + +cfg_metrics! { + mod metrics; +} + +/// Handle to the multi thread scheduler +pub(crate) struct Handle { + /// Task spawner + pub(super) shared: worker::Shared, + + /// Resource driver handles + pub(crate) driver: driver::Handle, + + /// Blocking pool spawner + pub(crate) blocking_spawner: blocking::Spawner, + + /// Current random number generator seed + pub(crate) seed_generator: RngSeedGenerator, +} + +impl Handle { + /// Spawns a future onto the thread pool + pub(crate) fn spawn(me: &Arc, future: F, id: task::Id) -> JoinHandle + where + F: crate::future::Future + Send + 'static, + F::Output: Send + 'static, + { + Self::bind_new_task(me, future, id) + } + + pub(crate) fn shutdown(&self) { + self.shared.close(self); + self.driver.unpark(); + } + + pub(super) fn bind_new_task(me: &Arc, future: T, id: task::Id) -> JoinHandle + where + T: Future + Send + 'static, + T::Output: Send + 'static, + { + let (handle, notified) = me.shared.owned.bind(future, me.clone(), id); + + if let Some(notified) = notified { + me.shared.schedule_task(notified, false); + } + + handle + } +} + +cfg_unstable! { + use std::num::NonZeroU64; + + impl Handle { + pub(crate) fn owned_id(&self) -> NonZeroU64 { + self.shared.owned.id + } + } +} + +impl fmt::Debug for Handle { + fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { + fmt.debug_struct("multi_thread::Handle { ... }").finish() + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/idle.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/idle.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/idle.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/idle.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,423 @@ +//! Coordinates idling workers + +#![allow(dead_code)] + +use crate::loom::sync::atomic::{AtomicBool, AtomicUsize}; +use crate::loom::sync::MutexGuard; +use crate::runtime::scheduler::multi_thread_alt::{worker, Core, Handle, Shared}; + +use std::sync::atomic::Ordering::{AcqRel, Acquire, Release}; + +pub(super) struct Idle { + /// Number of searching cores + num_searching: AtomicUsize, + + /// Number of idle cores + num_idle: AtomicUsize, + + /// Map of idle cores + idle_map: IdleMap, + + /// Used to catch false-negatives when waking workers + needs_searching: AtomicBool, + + /// Total number of cores + num_cores: usize, +} + +pub(super) struct IdleMap { + chunks: Vec, +} + +pub(super) struct Snapshot { + chunks: Vec, +} + +/// Data synchronized by the scheduler mutex +pub(super) struct Synced { + /// Worker IDs that are currently sleeping + sleepers: Vec, + + /// Cores available for workers + available_cores: Vec>, +} + +impl Idle { + pub(super) fn new(cores: Vec>, num_workers: usize) -> (Idle, Synced) { + let idle = Idle { + num_searching: AtomicUsize::new(0), + num_idle: AtomicUsize::new(cores.len()), + idle_map: IdleMap::new(&cores), + needs_searching: AtomicBool::new(false), + num_cores: cores.len(), + }; + + let synced = Synced { + sleepers: Vec::with_capacity(num_workers), + available_cores: cores, + }; + + (idle, synced) + } + + pub(super) fn needs_searching(&self) -> bool { + self.needs_searching.load(Acquire) + } + + pub(super) fn num_idle(&self, synced: &Synced) -> usize { + #[cfg(not(loom))] + debug_assert_eq!(synced.available_cores.len(), self.num_idle.load(Acquire)); + synced.available_cores.len() + } + + pub(super) fn num_searching(&self) -> usize { + self.num_searching.load(Acquire) + } + + pub(super) fn snapshot(&self, snapshot: &mut Snapshot) { + snapshot.update(&self.idle_map) + } + + /// Try to acquire an available core + pub(super) fn try_acquire_available_core(&self, synced: &mut Synced) -> Option> { + let ret = synced.available_cores.pop(); + + if let Some(core) = &ret { + // Decrement the number of idle cores + let num_idle = self.num_idle.load(Acquire) - 1; + debug_assert_eq!(num_idle, synced.available_cores.len()); + self.num_idle.store(num_idle, Release); + + self.idle_map.unset(core.index); + debug_assert!(self.idle_map.matches(&synced.available_cores)); + } + + ret + } + + /// We need at least one searching worker + pub(super) fn notify_local(&self, shared: &Shared) { + if self.num_searching.load(Acquire) != 0 { + // There already is a searching worker. Note, that this could be a + // false positive. However, because this method is called **from** a + // worker, we know that there is at least one worker currently + // awake, so the scheduler won't deadlock. + return; + } + + if self.num_idle.load(Acquire) == 0 { + self.needs_searching.store(true, Release); + return; + } + + // There aren't any searching workers. Try to initialize one + if self + .num_searching + .compare_exchange(0, 1, AcqRel, Acquire) + .is_err() + { + // Failing the compare_exchange means another thread concurrently + // launched a searching worker. + return; + } + + super::counters::inc_num_unparks_local(); + + // Acquire the lock + let synced = shared.synced.lock(); + self.notify_synced(synced, shared); + } + + /// Notifies a single worker + pub(super) fn notify_remote(&self, synced: MutexGuard<'_, worker::Synced>, shared: &Shared) { + if synced.idle.sleepers.is_empty() { + self.needs_searching.store(true, Release); + return; + } + + // We need to establish a stronger barrier than with `notify_local` + self.num_searching.fetch_add(1, AcqRel); + + self.notify_synced(synced, shared); + } + + /// Notify a worker while synced + fn notify_synced(&self, mut synced: MutexGuard<'_, worker::Synced>, shared: &Shared) { + // Find a sleeping worker + if let Some(worker) = synced.idle.sleepers.pop() { + // Find an available core + if let Some(mut core) = self.try_acquire_available_core(&mut synced.idle) { + debug_assert!(!core.is_searching); + core.is_searching = true; + + // Assign the core to the worker + synced.assigned_cores[worker] = Some(core); + + // Drop the lock before notifying the condvar. + drop(synced); + + super::counters::inc_num_unparks_remote(); + + // Notify the worker + shared.condvars[worker].notify_one(); + return; + } else { + synced.idle.sleepers.push(worker); + } + } + + super::counters::inc_notify_no_core(); + + // Set the `needs_searching` flag, this happens *while* the lock is held. + self.needs_searching.store(true, Release); + self.num_searching.fetch_sub(1, Release); + + // Explicit mutex guard drop to show that holding the guard to this + // point is significant. `needs_searching` and `num_searching` must be + // updated in the critical section. + drop(synced); + } + + pub(super) fn notify_mult( + &self, + synced: &mut worker::Synced, + workers: &mut Vec, + num: usize, + ) { + debug_assert!(workers.is_empty()); + + for _ in 0..num { + if let Some(worker) = synced.idle.sleepers.pop() { + // TODO: can this be switched to use next_available_core? + if let Some(core) = synced.idle.available_cores.pop() { + debug_assert!(!core.is_searching); + + self.idle_map.unset(core.index); + + synced.assigned_cores[worker] = Some(core); + + workers.push(worker); + + continue; + } else { + synced.idle.sleepers.push(worker); + } + } + + break; + } + + if !workers.is_empty() { + debug_assert!(self.idle_map.matches(&synced.idle.available_cores)); + let num_idle = synced.idle.available_cores.len(); + self.num_idle.store(num_idle, Release); + } else { + #[cfg(not(loom))] + debug_assert_eq!( + synced.idle.available_cores.len(), + self.num_idle.load(Acquire) + ); + self.needs_searching.store(true, Release); + } + } + + pub(super) fn shutdown(&self, synced: &mut worker::Synced, shared: &Shared) { + // Wake every sleeping worker and assign a core to it. There may not be + // enough sleeping workers for all cores, but other workers will + // eventually find the cores and shut them down. + while !synced.idle.sleepers.is_empty() && !synced.idle.available_cores.is_empty() { + let worker = synced.idle.sleepers.pop().unwrap(); + let core = self.try_acquire_available_core(&mut synced.idle).unwrap(); + + synced.assigned_cores[worker] = Some(core); + shared.condvars[worker].notify_one(); + } + + debug_assert!(self.idle_map.matches(&synced.idle.available_cores)); + + // Wake up any other workers + while let Some(index) = synced.idle.sleepers.pop() { + shared.condvars[index].notify_one(); + } + } + + pub(super) fn shutdown_unassigned_cores(&self, handle: &Handle, shared: &Shared) { + // If there are any remaining cores, shut them down here. + // + // This code is a bit convoluted to avoid lock-reentry. + while let Some(core) = { + let mut synced = shared.synced.lock(); + self.try_acquire_available_core(&mut synced.idle) + } { + shared.shutdown_core(handle, core); + } + } + + /// The worker releases the given core, making it available to other workers + /// that are waiting. + pub(super) fn release_core(&self, synced: &mut worker::Synced, core: Box) { + // The core should not be searching at this point + debug_assert!(!core.is_searching); + + // Check that there are no pending tasks in the global queue + debug_assert!(synced.inject.is_empty()); + + let num_idle = synced.idle.available_cores.len(); + #[cfg(not(loom))] + debug_assert_eq!(num_idle, self.num_idle.load(Acquire)); + + self.idle_map.set(core.index); + + // Store the core in the list of available cores + synced.idle.available_cores.push(core); + + debug_assert!(self.idle_map.matches(&synced.idle.available_cores)); + + // Update `num_idle` + self.num_idle.store(num_idle + 1, Release); + } + + pub(super) fn transition_worker_to_parked(&self, synced: &mut worker::Synced, index: usize) { + // Store the worker index in the list of sleepers + synced.idle.sleepers.push(index); + + // The worker's assigned core slot should be empty + debug_assert!(synced.assigned_cores[index].is_none()); + } + + pub(super) fn try_transition_worker_to_searching(&self, core: &mut Core) { + debug_assert!(!core.is_searching); + + let num_searching = self.num_searching.load(Acquire); + let num_idle = self.num_idle.load(Acquire); + + if 2 * num_searching >= self.num_cores - num_idle { + return; + } + + self.transition_worker_to_searching(core); + } + + /// Needs to happen while synchronized in order to avoid races + pub(super) fn transition_worker_to_searching_if_needed( + &self, + _synced: &mut Synced, + core: &mut Core, + ) -> bool { + if self.needs_searching.load(Acquire) { + // Needs to be called while holding the lock + self.transition_worker_to_searching(core); + true + } else { + false + } + } + + pub(super) fn transition_worker_to_searching(&self, core: &mut Core) { + core.is_searching = true; + self.num_searching.fetch_add(1, AcqRel); + self.needs_searching.store(false, Release); + } + + /// A lightweight transition from searching -> running. + /// + /// Returns `true` if this is the final searching worker. The caller + /// **must** notify a new worker. + pub(super) fn transition_worker_from_searching(&self) -> bool { + let prev = self.num_searching.fetch_sub(1, AcqRel); + debug_assert!(prev > 0); + + prev == 1 + } +} + +const BITS: usize = usize::BITS as usize; +const BIT_MASK: usize = (usize::BITS - 1) as usize; + +impl IdleMap { + fn new(cores: &[Box]) -> IdleMap { + let ret = IdleMap::new_n(num_chunks(cores.len())); + ret.set_all(cores); + + ret + } + + fn new_n(n: usize) -> IdleMap { + let chunks = (0..n).map(|_| AtomicUsize::new(0)).collect(); + IdleMap { chunks } + } + + fn set(&self, index: usize) { + let (chunk, mask) = index_to_mask(index); + let prev = self.chunks[chunk].load(Acquire); + let next = prev | mask; + self.chunks[chunk].store(next, Release); + } + + fn set_all(&self, cores: &[Box]) { + for core in cores { + self.set(core.index); + } + } + + fn unset(&self, index: usize) { + let (chunk, mask) = index_to_mask(index); + let prev = self.chunks[chunk].load(Acquire); + let next = prev & !mask; + self.chunks[chunk].store(next, Release); + } + + fn matches(&self, idle_cores: &[Box]) -> bool { + let expect = IdleMap::new_n(self.chunks.len()); + expect.set_all(idle_cores); + + for (i, chunk) in expect.chunks.iter().enumerate() { + if chunk.load(Acquire) != self.chunks[i].load(Acquire) { + return false; + } + } + + true + } +} + +impl Snapshot { + pub(crate) fn new(idle: &Idle) -> Snapshot { + let chunks = vec![0; idle.idle_map.chunks.len()]; + let mut ret = Snapshot { chunks }; + ret.update(&idle.idle_map); + ret + } + + fn update(&mut self, idle_map: &IdleMap) { + for i in 0..self.chunks.len() { + self.chunks[i] = idle_map.chunks[i].load(Acquire); + } + } + + pub(super) fn is_idle(&self, index: usize) -> bool { + let (chunk, mask) = index_to_mask(index); + debug_assert!( + chunk < self.chunks.len(), + "index={}; chunks={}", + index, + self.chunks.len() + ); + self.chunks[chunk] & mask == mask + } +} + +fn num_chunks(max_cores: usize) -> usize { + (max_cores / BITS) + 1 +} + +fn index_to_mask(index: usize) -> (usize, usize) { + let mask = 1 << (index & BIT_MASK); + let chunk = index / BITS; + + (chunk, mask) +} + +fn num_active_workers(synced: &Synced) -> usize { + synced.available_cores.capacity() - synced.available_cores.len() +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/mod.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/mod.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,91 @@ +//! Multi-threaded runtime + +mod counters; +use counters::Counters; + +mod handle; +pub(crate) use handle::Handle; + +mod overflow; +pub(crate) use overflow::Overflow; + +mod idle; +use self::idle::Idle; + +mod stats; +pub(crate) use stats::Stats; + +pub(crate) mod queue; + +mod worker; +use worker::Core; +pub(crate) use worker::{Context, Shared}; + +// TODO: implement task dump +mod trace_mock; +use trace_mock::TraceStatus; + +pub(crate) use worker::block_in_place; + +use crate::runtime::{ + self, blocking, + driver::{self, Driver}, + scheduler, Config, +}; +use crate::util::RngSeedGenerator; + +use std::fmt; +use std::future::Future; + +/// Work-stealing based thread pool for executing futures. +pub(crate) struct MultiThread; + +// ===== impl MultiThread ===== + +impl MultiThread { + pub(crate) fn new( + size: usize, + driver: Driver, + driver_handle: driver::Handle, + blocking_spawner: blocking::Spawner, + seed_generator: RngSeedGenerator, + config: Config, + ) -> (MultiThread, runtime::Handle) { + let handle = worker::create( + size, + driver, + driver_handle, + blocking_spawner, + seed_generator, + config, + ); + + (MultiThread, handle) + } + + /// Blocks the current thread waiting for the future to complete. + /// + /// The future will execute on the current thread, but all spawned tasks + /// will be executed on the thread pool. + pub(crate) fn block_on(&self, handle: &scheduler::Handle, future: F) -> F::Output + where + F: Future, + { + crate::runtime::context::enter_runtime(handle, true, |blocking| { + blocking.block_on(future).expect("failed to park thread") + }) + } + + pub(crate) fn shutdown(&mut self, handle: &scheduler::Handle) { + match handle { + scheduler::Handle::MultiThreadAlt(handle) => handle.shutdown(), + _ => panic!("expected MultiThread scheduler"), + } + } +} + +impl fmt::Debug for MultiThread { + fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { + fmt.debug_struct("MultiThread").finish() + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/overflow.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/overflow.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/overflow.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/overflow.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,26 @@ +use crate::runtime::task; + +#[cfg(test)] +use std::cell::RefCell; + +pub(crate) trait Overflow { + fn push(&self, task: task::Notified); + + fn push_batch(&self, iter: I) + where + I: Iterator>; +} + +#[cfg(test)] +impl Overflow for RefCell>> { + fn push(&self, task: task::Notified) { + self.borrow_mut().push(task); + } + + fn push_batch(&self, iter: I) + where + I: Iterator>, + { + self.borrow_mut().extend(iter); + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/park.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/park.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/park.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/park.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,232 @@ +//! Parks the runtime. +//! +//! A combination of the various resource driver park handles. + +use crate::loom::sync::atomic::AtomicUsize; +use crate::loom::sync::{Arc, Condvar, Mutex}; +use crate::runtime::driver::{self, Driver}; +use crate::util::TryLock; + +use std::sync::atomic::Ordering::SeqCst; +use std::time::Duration; + +pub(crate) struct Parker { + inner: Arc, +} + +pub(crate) struct Unparker { + inner: Arc, +} + +struct Inner { + /// Avoids entering the park if possible + state: AtomicUsize, + + /// Used to coordinate access to the driver / condvar + mutex: Mutex<()>, + + /// Condvar to block on if the driver is unavailable. + condvar: Condvar, + + /// Resource (I/O, time, ...) driver + shared: Arc, +} + +const EMPTY: usize = 0; +const PARKED_CONDVAR: usize = 1; +const PARKED_DRIVER: usize = 2; +const NOTIFIED: usize = 3; + +/// Shared across multiple Parker handles +struct Shared { + /// Shared driver. Only one thread at a time can use this + driver: TryLock, +} + +impl Parker { + pub(crate) fn new(driver: Driver) -> Parker { + Parker { + inner: Arc::new(Inner { + state: AtomicUsize::new(EMPTY), + mutex: Mutex::new(()), + condvar: Condvar::new(), + shared: Arc::new(Shared { + driver: TryLock::new(driver), + }), + }), + } + } + + pub(crate) fn unpark(&self) -> Unparker { + Unparker { + inner: self.inner.clone(), + } + } + + pub(crate) fn park(&mut self, handle: &driver::Handle) { + self.inner.park(handle); + } + + pub(crate) fn park_timeout(&mut self, handle: &driver::Handle, duration: Duration) { + // Only parking with zero is supported... + assert_eq!(duration, Duration::from_millis(0)); + + if let Some(mut driver) = self.inner.shared.driver.try_lock() { + driver.park_timeout(handle, duration) + } + } + + pub(crate) fn shutdown(&mut self, handle: &driver::Handle) { + self.inner.shutdown(handle); + } +} + +impl Clone for Parker { + fn clone(&self) -> Parker { + Parker { + inner: Arc::new(Inner { + state: AtomicUsize::new(EMPTY), + mutex: Mutex::new(()), + condvar: Condvar::new(), + shared: self.inner.shared.clone(), + }), + } + } +} + +impl Unparker { + pub(crate) fn unpark(&self, driver: &driver::Handle) { + self.inner.unpark(driver); + } +} + +impl Inner { + /// Parks the current thread for at most `dur`. + fn park(&self, handle: &driver::Handle) { + // If we were previously notified then we consume this notification and + // return quickly. + if self + .state + .compare_exchange(NOTIFIED, EMPTY, SeqCst, SeqCst) + .is_ok() + { + return; + } + + if let Some(mut driver) = self.shared.driver.try_lock() { + self.park_driver(&mut driver, handle); + } else { + self.park_condvar(); + } + } + + fn park_condvar(&self) { + // Otherwise we need to coordinate going to sleep + let mut m = self.mutex.lock(); + + match self + .state + .compare_exchange(EMPTY, PARKED_CONDVAR, SeqCst, SeqCst) + { + Ok(_) => {} + Err(NOTIFIED) => { + // We must read here, even though we know it will be `NOTIFIED`. + // This is because `unpark` may have been called again since we read + // `NOTIFIED` in the `compare_exchange` above. We must perform an + // acquire operation that synchronizes with that `unpark` to observe + // any writes it made before the call to unpark. To do that we must + // read from the write it made to `state`. + let old = self.state.swap(EMPTY, SeqCst); + debug_assert_eq!(old, NOTIFIED, "park state changed unexpectedly"); + + return; + } + Err(actual) => panic!("inconsistent park state; actual = {}", actual), + } + + loop { + m = self.condvar.wait(m).unwrap(); + + if self + .state + .compare_exchange(NOTIFIED, EMPTY, SeqCst, SeqCst) + .is_ok() + { + // got a notification + return; + } + + // spurious wakeup, go back to sleep + } + } + + fn park_driver(&self, driver: &mut Driver, handle: &driver::Handle) { + match self + .state + .compare_exchange(EMPTY, PARKED_DRIVER, SeqCst, SeqCst) + { + Ok(_) => {} + Err(NOTIFIED) => { + // We must read here, even though we know it will be `NOTIFIED`. + // This is because `unpark` may have been called again since we read + // `NOTIFIED` in the `compare_exchange` above. We must perform an + // acquire operation that synchronizes with that `unpark` to observe + // any writes it made before the call to unpark. To do that we must + // read from the write it made to `state`. + let old = self.state.swap(EMPTY, SeqCst); + debug_assert_eq!(old, NOTIFIED, "park state changed unexpectedly"); + + return; + } + Err(actual) => panic!("inconsistent park state; actual = {}", actual), + } + + driver.park(handle); + + match self.state.swap(EMPTY, SeqCst) { + NOTIFIED => {} // got a notification, hurray! + PARKED_DRIVER => {} // no notification, alas + n => panic!("inconsistent park_timeout state: {}", n), + } + } + + fn unpark(&self, driver: &driver::Handle) { + // To ensure the unparked thread will observe any writes we made before + // this call, we must perform a release operation that `park` can + // synchronize with. To do that we must write `NOTIFIED` even if `state` + // is already `NOTIFIED`. That is why this must be a swap rather than a + // compare-and-swap that returns if it reads `NOTIFIED` on failure. + match self.state.swap(NOTIFIED, SeqCst) { + EMPTY => {} // no one was waiting + NOTIFIED => {} // already unparked + PARKED_CONDVAR => self.unpark_condvar(), + PARKED_DRIVER => driver.unpark(), + actual => panic!("inconsistent state in unpark; actual = {}", actual), + } + } + + fn unpark_condvar(&self) { + // There is a period between when the parked thread sets `state` to + // `PARKED` (or last checked `state` in the case of a spurious wake + // up) and when it actually waits on `cvar`. If we were to notify + // during this period it would be ignored and then when the parked + // thread went to sleep it would never wake up. Fortunately, it has + // `lock` locked at this stage so we can acquire `lock` to wait until + // it is ready to receive the notification. + // + // Releasing `lock` before the call to `notify_one` means that when the + // parked thread wakes it doesn't get woken only to have to wait for us + // to release `lock`. + drop(self.mutex.lock()); + + self.condvar.notify_one() + } + + fn shutdown(&self, handle: &driver::Handle) { + if let Some(mut driver) = self.shared.driver.try_lock() { + driver.shutdown(handle); + } + + self.condvar.notify_all(); + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/queue.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/queue.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/queue.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/queue.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,595 @@ +//! Run-queue structures to support a work-stealing scheduler + +use crate::loom::cell::UnsafeCell; +use crate::loom::sync::Arc; +use crate::runtime::scheduler::multi_thread_alt::{Overflow, Stats}; +use crate::runtime::task; + +use std::mem::{self, MaybeUninit}; +use std::ptr; +use std::sync::atomic::Ordering::{AcqRel, Acquire, Relaxed, Release}; + +// Use wider integers when possible to increase ABA resilience. +// +// See issue #5041: . +cfg_has_atomic_u64! { + type UnsignedShort = u32; + type UnsignedLong = u64; + type AtomicUnsignedShort = crate::loom::sync::atomic::AtomicU32; + type AtomicUnsignedLong = crate::loom::sync::atomic::AtomicU64; +} +cfg_not_has_atomic_u64! { + type UnsignedShort = u16; + type UnsignedLong = u32; + type AtomicUnsignedShort = crate::loom::sync::atomic::AtomicU16; + type AtomicUnsignedLong = crate::loom::sync::atomic::AtomicU32; +} + +/// Producer handle. May only be used from a single thread. +pub(crate) struct Local { + inner: Arc>, +} + +/// Consumer handle. May be used from many threads. +pub(crate) struct Steal(Arc>); + +#[repr(align(128))] +pub(crate) struct Inner { + /// Concurrently updated by many threads. + /// + /// Contains two `UnsignedShort` values. The LSB byte is the "real" head of + /// the queue. The `UnsignedShort` in the MSB is set by a stealer in process + /// of stealing values. It represents the first value being stolen in the + /// batch. The `UnsignedShort` indices are intentionally wider than strictly + /// required for buffer indexing in order to provide ABA mitigation and make + /// it possible to distinguish between full and empty buffers. + /// + /// When both `UnsignedShort` values are the same, there is no active + /// stealer. + /// + /// Tracking an in-progress stealer prevents a wrapping scenario. + head: AtomicUnsignedLong, + + /// Only updated by producer thread but read by many threads. + tail: AtomicUnsignedShort, + + /// Elements + buffer: Box<[UnsafeCell>>]>, + + mask: usize, +} + +unsafe impl Send for Inner {} +unsafe impl Sync for Inner {} + +/// Create a new local run-queue +pub(crate) fn local(capacity: usize) -> (Steal, Local) { + assert!(capacity <= 4096); + assert!(capacity >= 1); + + let mut buffer = Vec::with_capacity(capacity); + + for _ in 0..capacity { + buffer.push(UnsafeCell::new(MaybeUninit::uninit())); + } + + let inner = Arc::new(Inner { + head: AtomicUnsignedLong::new(0), + tail: AtomicUnsignedShort::new(0), + buffer: buffer.into_boxed_slice(), + mask: capacity - 1, + }); + + let local = Local { + inner: inner.clone(), + }; + + let remote = Steal(inner); + + (remote, local) +} + +impl Local { + /// How many tasks can be pushed into the queue + pub(crate) fn remaining_slots(&self) -> usize { + self.inner.remaining_slots() + } + + pub(crate) fn max_capacity(&self) -> usize { + self.inner.buffer.len() + } + + /// Returns `true` if there are no entries in the queue + pub(crate) fn is_empty(&self) -> bool { + self.inner.is_empty() + } + + pub(crate) fn can_steal(&self) -> bool { + self.remaining_slots() >= self.max_capacity() - self.max_capacity() / 2 + } + + /// Pushes a batch of tasks to the back of the queue. All tasks must fit in + /// the local queue. + /// + /// # Panics + /// + /// The method panics if there is not enough capacity to fit in the queue. + pub(crate) fn push_back(&mut self, tasks: impl ExactSizeIterator>) { + let len = tasks.len(); + assert!(len <= self.inner.buffer.len()); + + if len == 0 { + // Nothing to do + return; + } + + let head = self.inner.head.load(Acquire); + let (steal, real) = unpack(head); + + // safety: this is the **only** thread that updates this cell. + let mut tail = unsafe { self.inner.tail.unsync_load() }; + + if tail.wrapping_sub(steal) <= (self.inner.buffer.len() - len) as UnsignedShort { + // Yes, this if condition is structured a bit weird (first block + // does nothing, second returns an error). It is this way to match + // `push_back_or_overflow`. + } else { + panic!( + "not enough capacity; len={}; tail={}; steal={}; real={}", + len, tail, steal, real + ); + } + + for task in tasks { + let idx = tail as usize & self.inner.mask; + + self.inner.buffer[idx].with_mut(|ptr| { + // Write the task to the slot + // + // Safety: There is only one producer and the above `if` + // condition ensures we don't touch a cell if there is a + // value, thus no consumer. + unsafe { + ptr::write((*ptr).as_mut_ptr(), task); + } + }); + + tail = tail.wrapping_add(1); + } + + self.inner.tail.store(tail, Release); + } + + /// Pushes a task to the back of the local queue, if there is not enough + /// capacity in the queue, this triggers the overflow operation. + /// + /// When the queue overflows, half of the curent contents of the queue is + /// moved to the given Injection queue. This frees up capacity for more + /// tasks to be pushed into the local queue. + pub(crate) fn push_back_or_overflow>( + &mut self, + mut task: task::Notified, + overflow: &O, + stats: &mut Stats, + ) { + let tail = loop { + let head = self.inner.head.load(Acquire); + let (steal, real) = unpack(head); + + // safety: this is the **only** thread that updates this cell. + let tail = unsafe { self.inner.tail.unsync_load() }; + + if tail.wrapping_sub(steal) < self.inner.buffer.len() as UnsignedShort { + // There is capacity for the task + break tail; + } else if steal != real { + super::counters::inc_num_overflows(); + // Concurrently stealing, this will free up capacity, so only + // push the task onto the inject queue + overflow.push(task); + return; + } else { + super::counters::inc_num_overflows(); + // Push the current task and half of the queue into the + // inject queue. + match self.push_overflow(task, real, tail, overflow, stats) { + Ok(_) => return, + // Lost the race, try again + Err(v) => { + task = v; + } + } + } + }; + + self.push_back_finish(task, tail); + } + + // Second half of `push_back` + fn push_back_finish(&self, task: task::Notified, tail: UnsignedShort) { + // Map the position to a slot index. + let idx = tail as usize & self.inner.mask; + + self.inner.buffer[idx].with_mut(|ptr| { + // Write the task to the slot + // + // Safety: There is only one producer and the above `if` + // condition ensures we don't touch a cell if there is a + // value, thus no consumer. + unsafe { + ptr::write((*ptr).as_mut_ptr(), task); + } + }); + + // Make the task available. Synchronizes with a load in + // `steal_into2`. + self.inner.tail.store(tail.wrapping_add(1), Release); + } + + /// Moves a batch of tasks into the inject queue. + /// + /// This will temporarily make some of the tasks unavailable to stealers. + /// Once `push_overflow` is done, a notification is sent out, so if other + /// workers "missed" some of the tasks during a steal, they will get + /// another opportunity. + #[inline(never)] + fn push_overflow>( + &mut self, + task: task::Notified, + head: UnsignedShort, + tail: UnsignedShort, + overflow: &O, + stats: &mut Stats, + ) -> Result<(), task::Notified> { + // How many elements are we taking from the local queue. + // + // This is one less than the number of tasks pushed to the inject + // queue as we are also inserting the `task` argument. + let num_tasks_taken: UnsignedShort = (self.inner.buffer.len() / 2) as UnsignedShort; + + assert_eq!( + tail.wrapping_sub(head) as usize, + self.inner.buffer.len(), + "queue is not full; tail = {}; head = {}", + tail, + head + ); + + let prev = pack(head, head); + + // Claim a bunch of tasks + // + // We are claiming the tasks **before** reading them out of the buffer. + // This is safe because only the **current** thread is able to push new + // tasks. + // + // There isn't really any need for memory ordering... Relaxed would + // work. This is because all tasks are pushed into the queue from the + // current thread (or memory has been acquired if the local queue handle + // moved). + if self + .inner + .head + .compare_exchange( + prev, + pack( + head.wrapping_add(num_tasks_taken), + head.wrapping_add(num_tasks_taken), + ), + Release, + Relaxed, + ) + .is_err() + { + // We failed to claim the tasks, losing the race. Return out of + // this function and try the full `push` routine again. The queue + // may not be full anymore. + return Err(task); + } + + /// An iterator that takes elements out of the run queue. + struct BatchTaskIter<'a, T: 'static> { + buffer: &'a [UnsafeCell>>], + mask: usize, + head: UnsignedLong, + i: UnsignedLong, + num: UnsignedShort, + } + impl<'a, T: 'static> Iterator for BatchTaskIter<'a, T> { + type Item = task::Notified; + + #[inline] + fn next(&mut self) -> Option> { + if self.i == UnsignedLong::from(self.num) { + None + } else { + let i_idx = self.i.wrapping_add(self.head) as usize & self.mask; + let slot = &self.buffer[i_idx]; + + // safety: Our CAS from before has assumed exclusive ownership + // of the task pointers in this range. + let task = slot.with(|ptr| unsafe { ptr::read((*ptr).as_ptr()) }); + + self.i += 1; + Some(task) + } + } + } + + // safety: The CAS above ensures that no consumer will look at these + // values again, and we are the only producer. + let batch_iter = BatchTaskIter { + buffer: &self.inner.buffer, + mask: self.inner.mask, + head: head as UnsignedLong, + i: 0, + num: num_tasks_taken, + }; + overflow.push_batch(batch_iter.chain(std::iter::once(task))); + + // Add 1 to factor in the task currently being scheduled. + stats.incr_overflow_count(); + + Ok(()) + } + + /// Pops a task from the local queue. + pub(crate) fn pop(&mut self) -> Option> { + let mut head = self.inner.head.load(Acquire); + + let idx = loop { + let (steal, real) = unpack(head); + + // safety: this is the **only** thread that updates this cell. + let tail = unsafe { self.inner.tail.unsync_load() }; + + if real == tail { + // queue is empty + return None; + } + + let next_real = real.wrapping_add(1); + + // If `steal == real` there are no concurrent stealers. Both `steal` + // and `real` are updated. + let next = if steal == real { + pack(next_real, next_real) + } else { + assert_ne!(steal, next_real); + pack(steal, next_real) + }; + + // Attempt to claim a task. + let res = self + .inner + .head + .compare_exchange(head, next, AcqRel, Acquire); + + match res { + Ok(_) => break real as usize & self.inner.mask, + Err(actual) => head = actual, + } + }; + + Some(self.inner.buffer[idx].with(|ptr| unsafe { ptr::read(ptr).assume_init() })) + } +} + +impl Steal { + pub(crate) fn is_empty(&self) -> bool { + self.0.is_empty() + } + + /// Steals half the tasks from self and place them into `dst`. + pub(crate) fn steal_into( + &self, + dst: &mut Local, + dst_stats: &mut Stats, + ) -> Option> { + // Safety: the caller is the only thread that mutates `dst.tail` and + // holds a mutable reference. + let dst_tail = unsafe { dst.inner.tail.unsync_load() }; + + // To the caller, `dst` may **look** empty but still have values + // contained in the buffer. If another thread is concurrently stealing + // from `dst` there may not be enough capacity to steal. + let (steal, _) = unpack(dst.inner.head.load(Acquire)); + + if dst_tail.wrapping_sub(steal) > self.0.buffer.len() as UnsignedShort / 2 { + // we *could* try to steal less here, but for simplicity, we're just + // going to abort. + return None; + } + + // Steal the tasks into `dst`'s buffer. This does not yet expose the + // tasks in `dst`. + let mut n = self.steal_into2(dst, dst_tail); + + if n == 0 { + // No tasks were stolen + return None; + } + + super::counters::inc_num_steals(); + + dst_stats.incr_steal_count(n as u16); + dst_stats.incr_steal_operations(); + + // We are returning a task here + n -= 1; + + let ret_pos = dst_tail.wrapping_add(n); + let ret_idx = ret_pos as usize & dst.inner.mask; + + // safety: the value was written as part of `steal_into2` and not + // exposed to stealers, so no other thread can access it. + let ret = dst.inner.buffer[ret_idx].with(|ptr| unsafe { ptr::read((*ptr).as_ptr()) }); + + if n == 0 { + // The `dst` queue is empty, but a single task was stolen + return Some(ret); + } + + // Make the stolen items available to consumers + dst.inner.tail.store(dst_tail.wrapping_add(n), Release); + + Some(ret) + } + + // Steal tasks from `self`, placing them into `dst`. Returns the number of + // tasks that were stolen. + fn steal_into2(&self, dst: &mut Local, dst_tail: UnsignedShort) -> UnsignedShort { + let mut prev_packed = self.0.head.load(Acquire); + let mut next_packed; + + let n = loop { + let (src_head_steal, src_head_real) = unpack(prev_packed); + let src_tail = self.0.tail.load(Acquire); + + // If these two do not match, another thread is concurrently + // stealing from the queue. + if src_head_steal != src_head_real { + return 0; + } + + // Number of available tasks to steal + let n = src_tail.wrapping_sub(src_head_real); + let n = n - n / 2; + + if n == 0 { + // No tasks available to steal + return 0; + } + + // Update the real head index to acquire the tasks. + let steal_to = src_head_real.wrapping_add(n); + assert_ne!(src_head_steal, steal_to); + next_packed = pack(src_head_steal, steal_to); + + // Claim all those tasks. This is done by incrementing the "real" + // head but not the steal. By doing this, no other thread is able to + // steal from this queue until the current thread completes. + let res = self + .0 + .head + .compare_exchange(prev_packed, next_packed, AcqRel, Acquire); + + match res { + Ok(_) => break n, + Err(actual) => prev_packed = actual, + } + }; + + debug_assert!( + n <= (self.0.buffer.len() - self.0.buffer.len() / 2) as UnsignedShort, + "actual = {}", + n + ); + + let (first, _) = unpack(next_packed); + + // Take all the tasks + for i in 0..n { + // Compute the positions + let src_pos = first.wrapping_add(i); + let dst_pos = dst_tail.wrapping_add(i); + + // Map to slots + let src_idx = src_pos as usize & self.0.mask; + let dst_idx = dst_pos as usize & self.0.mask; + + // Read the task + // + // safety: We acquired the task with the atomic exchange above. + let task = self.0.buffer[src_idx].with(|ptr| unsafe { ptr::read((*ptr).as_ptr()) }); + + // Write the task to the new slot + // + // safety: `dst` queue is empty and we are the only producer to + // this queue. + dst.inner.buffer[dst_idx] + .with_mut(|ptr| unsafe { ptr::write((*ptr).as_mut_ptr(), task) }); + } + + let mut prev_packed = next_packed; + + // Update `src_head_steal` to match `src_head_real` signalling that the + // stealing routine is complete. + loop { + let head = unpack(prev_packed).1; + next_packed = pack(head, head); + + let res = self + .0 + .head + .compare_exchange(prev_packed, next_packed, AcqRel, Acquire); + + match res { + Ok(_) => return n, + Err(actual) => { + let (actual_steal, actual_real) = unpack(actual); + + assert_ne!(actual_steal, actual_real); + + prev_packed = actual; + } + } + } + } +} + +cfg_metrics! { + impl Steal { + pub(crate) fn len(&self) -> usize { + self.0.len() as _ + } + } +} + +impl Clone for Steal { + fn clone(&self) -> Steal { + Steal(self.0.clone()) + } +} + +impl Drop for Local { + fn drop(&mut self) { + if !std::thread::panicking() { + assert!(self.pop().is_none(), "queue not empty"); + } + } +} + +impl Inner { + fn remaining_slots(&self) -> usize { + let (steal, _) = unpack(self.head.load(Acquire)); + let tail = self.tail.load(Acquire); + + self.buffer.len() - (tail.wrapping_sub(steal) as usize) + } + + fn len(&self) -> UnsignedShort { + let (_, head) = unpack(self.head.load(Acquire)); + let tail = self.tail.load(Acquire); + + tail.wrapping_sub(head) + } + + fn is_empty(&self) -> bool { + self.len() == 0 + } +} + +/// Split the head value into the real head and the index a stealer is working +/// on. +fn unpack(n: UnsignedLong) -> (UnsignedShort, UnsignedShort) { + let real = n & UnsignedShort::MAX as UnsignedLong; + let steal = n >> (mem::size_of::() * 8); + + (steal as UnsignedShort, real as UnsignedShort) +} + +/// Join the two head values +fn pack(steal: UnsignedShort, real: UnsignedShort) -> UnsignedLong { + (real as UnsignedLong) | ((steal as UnsignedLong) << (mem::size_of::() * 8)) +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/stats.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/stats.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/stats.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/stats.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,171 @@ +use crate::runtime::{Config, MetricsBatch, WorkerMetrics}; + +use std::cmp; +use std::time::{Duration, Instant}; + +/// Per-worker statistics. This is used for both tuning the scheduler and +/// reporting runtime-level metrics/stats. +pub(crate) struct Stats { + /// The metrics batch used to report runtime-level metrics/stats to the + /// user. + batch: MetricsBatch, + + /// Exponentially-weighted moving average of time spent polling scheduled a + /// task. + /// + /// Tracked in nanoseconds, stored as a f64 since that is what we use with + /// the EWMA calculations + task_poll_time_ewma: f64, +} + +/// Transient state +pub(crate) struct Ephemeral { + /// Instant at which work last resumed (continued after park). + /// + /// This duplicates the value stored in `MetricsBatch`. We will unify + /// `Stats` and `MetricsBatch` when we stabilize metrics. + processing_scheduled_tasks_started_at: Instant, + + /// Number of tasks polled in the batch of scheduled tasks + tasks_polled_in_batch: usize, + + /// Used to ensure calls to start / stop batch are paired + #[cfg(debug_assertions)] + batch_started: bool, +} + +impl Ephemeral { + pub(crate) fn new() -> Ephemeral { + Ephemeral { + processing_scheduled_tasks_started_at: Instant::now(), + tasks_polled_in_batch: 0, + #[cfg(debug_assertions)] + batch_started: false, + } + } +} + +/// How to weigh each individual poll time, value is plucked from thin air. +const TASK_POLL_TIME_EWMA_ALPHA: f64 = 0.1; + +/// Ideally, we wouldn't go above this, value is plucked from thin air. +const TARGET_GLOBAL_QUEUE_INTERVAL: f64 = Duration::from_micros(200).as_nanos() as f64; + +/// Max value for the global queue interval. This is 2x the previous default +const MAX_TASKS_POLLED_PER_GLOBAL_QUEUE_INTERVAL: u32 = 127; + +/// This is the previous default +const TARGET_TASKS_POLLED_PER_GLOBAL_QUEUE_INTERVAL: u32 = 61; + +impl Stats { + pub(crate) const DEFAULT_GLOBAL_QUEUE_INTERVAL: u32 = + TARGET_TASKS_POLLED_PER_GLOBAL_QUEUE_INTERVAL; + + pub(crate) fn new(worker_metrics: &WorkerMetrics) -> Stats { + // Seed the value with what we hope to see. + let task_poll_time_ewma = + TARGET_GLOBAL_QUEUE_INTERVAL / TARGET_TASKS_POLLED_PER_GLOBAL_QUEUE_INTERVAL as f64; + + Stats { + batch: MetricsBatch::new(worker_metrics), + task_poll_time_ewma, + } + } + + pub(crate) fn tuned_global_queue_interval(&self, config: &Config) -> u32 { + // If an interval is explicitly set, don't tune. + if let Some(configured) = config.global_queue_interval { + return configured; + } + + // As of Rust 1.45, casts from f64 -> u32 are saturating, which is fine here. + let tasks_per_interval = (TARGET_GLOBAL_QUEUE_INTERVAL / self.task_poll_time_ewma) as u32; + + cmp::max( + // We don't want to return less than 2 as that would result in the + // global queue always getting checked first. + 2, + cmp::min( + MAX_TASKS_POLLED_PER_GLOBAL_QUEUE_INTERVAL, + tasks_per_interval, + ), + ) + } + + pub(crate) fn submit(&mut self, to: &WorkerMetrics) { + self.batch.submit(to, self.task_poll_time_ewma as u64); + } + + pub(crate) fn about_to_park(&mut self) { + self.batch.about_to_park(); + } + + pub(crate) fn inc_local_schedule_count(&mut self) { + self.batch.inc_local_schedule_count(); + } + + pub(crate) fn start_processing_scheduled_tasks(&mut self, ephemeral: &mut Ephemeral) { + self.batch.start_processing_scheduled_tasks(); + + #[cfg(debug_assertions)] + { + debug_assert!(!ephemeral.batch_started); + ephemeral.batch_started = true; + } + + ephemeral.processing_scheduled_tasks_started_at = Instant::now(); + ephemeral.tasks_polled_in_batch = 0; + } + + pub(crate) fn end_processing_scheduled_tasks(&mut self, ephemeral: &mut Ephemeral) { + self.batch.end_processing_scheduled_tasks(); + + #[cfg(debug_assertions)] + { + debug_assert!(ephemeral.batch_started); + ephemeral.batch_started = false; + } + + // Update the EWMA task poll time + if ephemeral.tasks_polled_in_batch > 0 { + let now = Instant::now(); + + // If we "overflow" this conversion, we have bigger problems than + // slightly off stats. + let elapsed = (now - ephemeral.processing_scheduled_tasks_started_at).as_nanos() as f64; + let num_polls = ephemeral.tasks_polled_in_batch as f64; + + // Calculate the mean poll duration for a single task in the batch + let mean_poll_duration = elapsed / num_polls; + + // Compute the alpha weighted by the number of tasks polled this batch. + let weighted_alpha = 1.0 - (1.0 - TASK_POLL_TIME_EWMA_ALPHA).powf(num_polls); + + // Now compute the new weighted average task poll time. + self.task_poll_time_ewma = weighted_alpha * mean_poll_duration + + (1.0 - weighted_alpha) * self.task_poll_time_ewma; + } + } + + pub(crate) fn start_poll(&mut self, ephemeral: &mut Ephemeral) { + self.batch.start_poll(); + + ephemeral.tasks_polled_in_batch += 1; + } + + pub(crate) fn end_poll(&mut self) { + self.batch.end_poll(); + } + + pub(crate) fn incr_steal_count(&mut self, by: u16) { + self.batch.incr_steal_count(by); + } + + pub(crate) fn incr_steal_operations(&mut self) { + self.batch.incr_steal_operations(); + } + + pub(crate) fn incr_overflow_count(&mut self) { + self.batch.incr_overflow_count(); + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/trace_mock.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/trace_mock.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/trace_mock.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/trace_mock.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,11 @@ +pub(super) struct TraceStatus {} + +impl TraceStatus { + pub(super) fn new(_: usize) -> Self { + Self {} + } + + pub(super) fn trace_requested(&self) -> bool { + false + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/trace.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/trace.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/trace.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/trace.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,61 @@ +use crate::loom::sync::atomic::{AtomicBool, Ordering}; +use crate::loom::sync::{Barrier, Mutex}; +use crate::runtime::dump::Dump; +use crate::runtime::scheduler::multi_thread_alt::Handle; +use crate::sync::notify::Notify; + +/// Tracing status of the worker. +pub(super) struct TraceStatus { + pub(super) trace_requested: AtomicBool, + pub(super) trace_start: Barrier, + pub(super) trace_end: Barrier, + pub(super) result_ready: Notify, + pub(super) trace_result: Mutex>, +} + +impl TraceStatus { + pub(super) fn new(remotes_len: usize) -> Self { + Self { + trace_requested: AtomicBool::new(false), + trace_start: Barrier::new(remotes_len), + trace_end: Barrier::new(remotes_len), + result_ready: Notify::new(), + trace_result: Mutex::new(None), + } + } + + pub(super) fn trace_requested(&self) -> bool { + self.trace_requested.load(Ordering::Relaxed) + } + + pub(super) async fn start_trace_request(&self, handle: &Handle) { + while self + .trace_requested + .compare_exchange(false, true, Ordering::Acquire, Ordering::Relaxed) + .is_err() + { + handle.notify_all(); + crate::task::yield_now().await; + } + } + + pub(super) fn stash_result(&self, dump: Dump) { + let _ = self.trace_result.lock().insert(dump); + self.result_ready.notify_one(); + } + + pub(super) fn take_result(&self) -> Option { + self.trace_result.lock().take() + } + + pub(super) async fn end_trace_request(&self, handle: &Handle) { + while self + .trace_requested + .compare_exchange(true, false, Ordering::Acquire, Ordering::Relaxed) + .is_err() + { + handle.notify_all(); + crate::task::yield_now().await; + } + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/worker/metrics.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/worker/metrics.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/worker/metrics.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/worker/metrics.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,11 @@ +use super::Shared; + +impl Shared { + pub(crate) fn injection_queue_depth(&self) -> usize { + self.inject.len() + } + + pub(crate) fn worker_local_queue_depth(&self, worker: usize) -> usize { + self.remotes[worker].steal.len() + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/worker/taskdump_mock.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/worker/taskdump_mock.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/worker/taskdump_mock.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/worker/taskdump_mock.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,7 @@ +use super::{Core, Handle}; + +impl Handle { + pub(super) fn trace_core(&self, core: Box) -> Box { + core + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/worker/taskdump.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/worker/taskdump.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/worker/taskdump.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/worker/taskdump.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,79 @@ +use super::{Core, Handle, Shared}; + +use crate::loom::sync::Arc; +use crate::runtime::scheduler::multi_thread_alt::Stats; +use crate::runtime::task::trace::trace_multi_thread; +use crate::runtime::{dump, WorkerMetrics}; + +use std::time::Duration; + +impl Handle { + pub(super) fn trace_core(&self, mut core: Box) -> Box { + core.is_traced = false; + + if core.is_shutdown { + return core; + } + + // wait for other workers, or timeout without tracing + let timeout = Duration::from_millis(250); // a _very_ generous timeout + let barrier = + if let Some(barrier) = self.shared.trace_status.trace_start.wait_timeout(timeout) { + barrier + } else { + // don't attempt to trace + return core; + }; + + if !barrier.is_leader() { + // wait for leader to finish tracing + self.shared.trace_status.trace_end.wait(); + return core; + } + + // trace + + let owned = &self.shared.owned; + let mut local = self.shared.steal_all(); + let synced = &self.shared.synced; + let injection = &self.shared.inject; + + // safety: `trace_multi_thread` is invoked with the same `synced` that `injection` + // was created with. + let traces = unsafe { trace_multi_thread(owned, &mut local, synced, injection) } + .into_iter() + .map(dump::Task::new) + .collect(); + + let result = dump::Dump::new(traces); + + // stash the result + self.shared.trace_status.stash_result(result); + + // allow other workers to proceed + self.shared.trace_status.trace_end.wait(); + + core + } +} + +impl Shared { + /// Steal all tasks from remotes into a single local queue. + pub(super) fn steal_all(&self) -> super::queue::Local> { + let (_steal, mut local) = super::queue::local(); + + let worker_metrics = WorkerMetrics::new(); + let mut stats = Stats::new(&worker_metrics); + + for remote in self.remotes.iter() { + let steal = &remote.steal; + while !steal.is_empty() { + if let Some(task) = steal.steal_into(&mut local, &mut stats) { + local.push_back([task].into_iter()); + } + } + } + + local + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/worker.rs temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/worker.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/worker.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/scheduler/multi_thread_alt/worker.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,1595 @@ +//! A scheduler is initialized with a fixed number of workers. Each worker is +//! driven by a thread. Each worker has a "core" which contains data such as the +//! run queue and other state. When `block_in_place` is called, the worker's +//! "core" is handed off to a new thread allowing the scheduler to continue to +//! make progress while the originating thread blocks. +//! +//! # Shutdown +//! +//! Shutting down the runtime involves the following steps: +//! +//! 1. The Shared::close method is called. This closes the inject queue and +//! OwnedTasks instance and wakes up all worker threads. +//! +//! 2. Each worker thread observes the close signal next time it runs +//! Core::maintenance by checking whether the inject queue is closed. +//! The Core::is_shutdown flag is set to true. +//! +//! 3. The worker thread calls `pre_shutdown` in parallel. Here, the worker +//! will keep removing tasks from OwnedTasks until it is empty. No new +//! tasks can be pushed to the OwnedTasks during or after this step as it +//! was closed in step 1. +//! +//! 5. The workers call Shared::shutdown to enter the single-threaded phase of +//! shutdown. These calls will push their core to Shared::shutdown_cores, +//! and the last thread to push its core will finish the shutdown procedure. +//! +//! 6. The local run queue of each core is emptied, then the inject queue is +//! emptied. +//! +//! At this point, shutdown has completed. It is not possible for any of the +//! collections to contain any tasks at this point, as each collection was +//! closed first, then emptied afterwards. +//! +//! ## Spawns during shutdown +//! +//! When spawning tasks during shutdown, there are two cases: +//! +//! * The spawner observes the OwnedTasks being open, and the inject queue is +//! closed. +//! * The spawner observes the OwnedTasks being closed and doesn't check the +//! inject queue. +//! +//! The first case can only happen if the OwnedTasks::bind call happens before +//! or during step 1 of shutdown. In this case, the runtime will clean up the +//! task in step 3 of shutdown. +//! +//! In the latter case, the task was not spawned and the task is immediately +//! cancelled by the spawner. +//! +//! The correctness of shutdown requires both the inject queue and OwnedTasks +//! collection to have a closed bit. With a close bit on only the inject queue, +//! spawning could run in to a situation where a task is successfully bound long +//! after the runtime has shut down. With a close bit on only the OwnedTasks, +//! the first spawning situation could result in the notification being pushed +//! to the inject queue after step 6 of shutdown, which would leave a task in +//! the inject queue indefinitely. This would be a ref-count cycle and a memory +//! leak. + +use crate::loom::sync::{Arc, Condvar, Mutex, MutexGuard}; +use crate::runtime; +use crate::runtime::context; +use crate::runtime::driver::Driver; +use crate::runtime::scheduler::multi_thread_alt::{ + idle, queue, stats, Counters, Handle, Idle, Overflow, Stats, TraceStatus, +}; +use crate::runtime::scheduler::{self, inject, Lock}; +use crate::runtime::task::OwnedTasks; +use crate::runtime::{blocking, coop, driver, task, Config, SchedulerMetrics, WorkerMetrics}; +use crate::util::atomic_cell::AtomicCell; +use crate::util::rand::{FastRand, RngSeedGenerator}; + +use std::cell::{Cell, RefCell}; +use std::cmp; +use std::task::Waker; +use std::time::Duration; + +cfg_metrics! { + mod metrics; +} + +mod taskdump_mock; + +/// A scheduler worker +/// +/// Data is stack-allocated and never migrates threads +pub(super) struct Worker { + /// Used to schedule bookkeeping tasks every so often. + tick: u32, + + /// True if the scheduler is being shutdown + pub(super) is_shutdown: bool, + + /// True if the scheduler is being traced + is_traced: bool, + + /// Counter used to track when to poll from the local queue vs. the + /// injection queue + num_seq_local_queue_polls: u32, + + /// How often to check the global queue + global_queue_interval: u32, + + /// Used to collect a list of workers to notify + workers_to_notify: Vec, + + /// Snapshot of idle core list. This helps speedup stealing + idle_snapshot: idle::Snapshot, + + stats: stats::Ephemeral, +} + +/// Core data +/// +/// Data is heap-allocated and migrates threads. +#[repr(align(128))] +pub(super) struct Core { + /// Index holding this core's remote/shared state. + pub(super) index: usize, + + lifo_slot: Option, + + /// The worker-local run queue. + run_queue: queue::Local>, + + /// True if the worker is currently searching for more work. Searching + /// involves attempting to steal from other workers. + pub(super) is_searching: bool, + + /// Per-worker runtime stats + stats: Stats, + + /// Fast random number generator. + rand: FastRand, +} + +/// State shared across all workers +pub(crate) struct Shared { + /// Per-core remote state. + remotes: Box<[Remote]>, + + /// Global task queue used for: + /// 1. Submit work to the scheduler while **not** currently on a worker thread. + /// 2. Submit work to the scheduler when a worker run queue is saturated + pub(super) inject: inject::Shared>, + + /// Coordinates idle workers + idle: Idle, + + /// Collection of all active tasks spawned onto this executor. + pub(super) owned: OwnedTasks>, + + /// Data synchronized by the scheduler mutex + pub(super) synced: Mutex, + + /// Power's Tokio's I/O, timers, etc... the responsibility of polling the + /// driver is shared across workers. + driver: AtomicCell, + + /// Condition variables used to unblock worker threads. Each worker thread + /// has its own condvar it waits on. + pub(super) condvars: Vec, + + /// The number of cores that have observed the trace signal. + pub(super) trace_status: TraceStatus, + + /// Scheduler configuration options + config: Config, + + /// Collects metrics from the runtime. + pub(super) scheduler_metrics: SchedulerMetrics, + + pub(super) worker_metrics: Box<[WorkerMetrics]>, + + /// Only held to trigger some code on drop. This is used to get internal + /// runtime metrics that can be useful when doing performance + /// investigations. This does nothing (empty struct, no drop impl) unless + /// the `tokio_internal_mt_counters` cfg flag is set. + _counters: Counters, +} + +/// Data synchronized by the scheduler mutex +pub(crate) struct Synced { + /// When worker is notified, it is assigned a core. The core is placed here + /// until the worker wakes up to take it. + pub(super) assigned_cores: Vec>>, + + /// Cores that have observed the shutdown signal + /// + /// The core is **not** placed back in the worker to avoid it from being + /// stolen by a thread that was spawned as part of `block_in_place`. + shutdown_cores: Vec>, + + /// The driver goes here when shutting down + shutdown_driver: Option>, + + /// Synchronized state for `Idle`. + pub(super) idle: idle::Synced, + + /// Synchronized state for `Inject`. + pub(crate) inject: inject::Synced, +} + +/// Used to communicate with a worker from other threads. +struct Remote { + /// When a task is scheduled from a worker, it is stored in this slot. The + /// worker will check this slot for a task **before** checking the run + /// queue. This effectively results in the **last** scheduled task to be run + /// next (LIFO). This is an optimization for improving locality which + /// benefits message passing patterns and helps to reduce latency. + // lifo_slot: Lifo, + + /// Steals tasks from this worker. + pub(super) steal: queue::Steal>, +} + +/// Thread-local context +pub(crate) struct Context { + // Current scheduler's handle + handle: Arc, + + /// Worker index + index: usize, + + /// True when the LIFO slot is enabled + lifo_enabled: Cell, + + /// Core data + core: RefCell>>, + + /// Used to pass cores to other threads when `block_in_place` is called + handoff_core: Arc>, + + /// Tasks to wake after resource drivers are polled. This is mostly to + /// handle yielded tasks. + pub(crate) defer: RefCell>, +} + +/// Running a task may consume the core. If the core is still available when +/// running the task completes, it is returned. Otherwise, the worker will need +/// to stop processing. +type RunResult = Result, ()>; +type NextTaskResult = Result<(Option, Box), ()>; + +/// A task handle +type Task = task::Task>; + +/// A notified task handle +type Notified = task::Notified>; + +/// Value picked out of thin-air. Running the LIFO slot a handful of times +/// seemms sufficient to benefit from locality. More than 3 times probably is +/// overweighing. The value can be tuned in the future with data that shows +/// improvements. +const MAX_LIFO_POLLS_PER_TICK: usize = 3; + +pub(super) fn create( + num_cores: usize, + driver: Driver, + driver_handle: driver::Handle, + blocking_spawner: blocking::Spawner, + seed_generator: RngSeedGenerator, + config: Config, +) -> runtime::Handle { + let mut num_workers = num_cores; + + // If the driver is enabled, we need an extra thread to handle polling the + // driver when all cores are busy. + if driver.is_enabled() { + num_workers += 1; + } + + let mut cores = Vec::with_capacity(num_cores); + let mut remotes = Vec::with_capacity(num_cores); + // Worker metrics are actually core based + let mut worker_metrics = Vec::with_capacity(num_cores); + + // Create the local queues + for i in 0..num_cores { + let (steal, run_queue) = queue::local(config.local_queue_capacity); + + let metrics = WorkerMetrics::from_config(&config); + let stats = Stats::new(&metrics); + + cores.push(Box::new(Core { + index: i, + lifo_slot: None, + run_queue, + is_searching: false, + stats, + rand: FastRand::from_seed(config.seed_generator.next_seed()), + })); + + remotes.push(Remote { + steal, + // lifo_slot: Lifo::new(), + }); + worker_metrics.push(metrics); + } + + // Allocate num-cores + 1 workers, so one worker can handle the I/O driver, + // if needed. + let (idle, idle_synced) = Idle::new(cores, num_workers); + let (inject, inject_synced) = inject::Shared::new(); + + let handle = Arc::new(Handle { + shared: Shared { + remotes: remotes.into_boxed_slice(), + inject, + idle, + owned: OwnedTasks::new(), + synced: Mutex::new(Synced { + assigned_cores: (0..num_workers).map(|_| None).collect(), + shutdown_cores: Vec::with_capacity(num_cores), + shutdown_driver: None, + idle: idle_synced, + inject: inject_synced, + }), + driver: AtomicCell::new(Some(Box::new(driver))), + condvars: (0..num_workers).map(|_| Condvar::new()).collect(), + trace_status: TraceStatus::new(num_cores), + config, + scheduler_metrics: SchedulerMetrics::new(), + worker_metrics: worker_metrics.into_boxed_slice(), + _counters: Counters, + }, + driver: driver_handle, + blocking_spawner, + seed_generator, + }); + + let rt_handle = runtime::Handle { + inner: scheduler::Handle::MultiThreadAlt(handle), + }; + + // Eagerly start worker threads + for index in 0..num_workers { + let handle = rt_handle.inner.expect_multi_thread_alt(); + let h2 = handle.clone(); + let handoff_core = Arc::new(AtomicCell::new(None)); + + handle + .blocking_spawner + .spawn_blocking(&rt_handle, move || run(index, h2, handoff_core, false)); + } + + rt_handle +} + +#[track_caller] +pub(crate) fn block_in_place(f: F) -> R +where + F: FnOnce() -> R, +{ + // Try to steal the worker core back + struct Reset(coop::Budget); + + impl Drop for Reset { + fn drop(&mut self) { + with_current(|maybe_cx| { + if let Some(cx) = maybe_cx { + let core = cx.handoff_core.take(); + let mut cx_core = cx.core.borrow_mut(); + assert!(cx_core.is_none()); + *cx_core = core; + + // Reset the task budget as we are re-entering the + // runtime. + coop::set(self.0); + } + }); + } + } + + let mut had_entered = false; + + let setup_result = with_current(|maybe_cx| { + match ( + crate::runtime::context::current_enter_context(), + maybe_cx.is_some(), + ) { + (context::EnterRuntime::Entered { .. }, true) => { + // We are on a thread pool runtime thread, so we just need to + // set up blocking. + had_entered = true; + } + ( + context::EnterRuntime::Entered { + allow_block_in_place, + }, + false, + ) => { + // We are on an executor, but _not_ on the thread pool. That is + // _only_ okay if we are in a thread pool runtime's block_on + // method: + if allow_block_in_place { + had_entered = true; + return Ok(()); + } else { + // This probably means we are on the current_thread runtime or in a + // LocalSet, where it is _not_ okay to block. + return Err( + "can call blocking only when running on the multi-threaded runtime", + ); + } + } + (context::EnterRuntime::NotEntered, true) => { + // This is a nested call to block_in_place (we already exited). + // All the necessary setup has already been done. + return Ok(()); + } + (context::EnterRuntime::NotEntered, false) => { + // We are outside of the tokio runtime, so blocking is fine. + // We can also skip all of the thread pool blocking setup steps. + return Ok(()); + } + } + + let cx = maybe_cx.expect("no .is_some() == false cases above should lead here"); + + // Get the worker core. If none is set, then blocking is fine! + let core = match cx.core.borrow_mut().take() { + Some(core) => core, + None => return Ok(()), + }; + + // In order to block, the core must be sent to another thread for + // execution. + // + // First, move the core back into the worker's shared core slot. + cx.handoff_core.set(core); + + // Next, clone the worker handle and send it to a new thread for + // processing. + // + // Once the blocking task is done executing, we will attempt to + // steal the core back. + let index = cx.index; + let handle = cx.handle.clone(); + let handoff_core = cx.handoff_core.clone(); + runtime::spawn_blocking(move || run(index, handle, handoff_core, true)); + Ok(()) + }); + + if let Err(panic_message) = setup_result { + panic!("{}", panic_message); + } + + if had_entered { + // Unset the current task's budget. Blocking sections are not + // constrained by task budgets. + let _reset = Reset(coop::stop()); + + crate::runtime::context::exit_runtime(f) + } else { + f() + } +} + +fn run( + index: usize, + handle: Arc, + handoff_core: Arc>, + blocking_in_place: bool, +) { + struct AbortOnPanic; + + impl Drop for AbortOnPanic { + fn drop(&mut self) { + if std::thread::panicking() { + eprintln!("worker thread panicking; aborting process"); + std::process::abort(); + } + } + } + + // Catching panics on worker threads in tests is quite tricky. Instead, when + // debug assertions are enabled, we just abort the process. + #[cfg(debug_assertions)] + let _abort_on_panic = AbortOnPanic; + + let num_workers = handle.shared.condvars.len(); + + let mut worker = Worker { + tick: 0, + num_seq_local_queue_polls: 0, + global_queue_interval: Stats::DEFAULT_GLOBAL_QUEUE_INTERVAL, + is_shutdown: false, + is_traced: false, + workers_to_notify: Vec::with_capacity(num_workers - 1), + idle_snapshot: idle::Snapshot::new(&handle.shared.idle), + stats: stats::Ephemeral::new(), + }; + + let sched_handle = scheduler::Handle::MultiThreadAlt(handle.clone()); + + crate::runtime::context::enter_runtime(&sched_handle, true, |_| { + // Set the worker context. + let cx = scheduler::Context::MultiThreadAlt(Context { + index, + lifo_enabled: Cell::new(!handle.shared.config.disable_lifo_slot), + handle, + core: RefCell::new(None), + handoff_core, + defer: RefCell::new(Vec::with_capacity(64)), + }); + + context::set_scheduler(&cx, || { + let cx = cx.expect_multi_thread_alt(); + + // Run the worker + let res = worker.run(&cx, blocking_in_place); + // `err` here signifies the core was lost, this is an expected end + // state for a worker. + debug_assert!(res.is_err()); + + // Check if there are any deferred tasks to notify. This can happen when + // the worker core is lost due to `block_in_place()` being called from + // within the task. + if !cx.defer.borrow().is_empty() { + worker.schedule_deferred_without_core(&cx, &mut cx.shared().synced.lock()); + } + }); + }); +} + +macro_rules! try_task { + ($e:expr) => {{ + let (task, core) = $e?; + if task.is_some() { + return Ok((task, core)); + } + core + }}; +} + +macro_rules! try_task_new_batch { + ($w:expr, $e:expr) => {{ + let (task, mut core) = $e?; + if task.is_some() { + core.stats.start_processing_scheduled_tasks(&mut $w.stats); + return Ok((task, core)); + } + core + }}; +} + +impl Worker { + fn run(&mut self, cx: &Context, blocking_in_place: bool) -> RunResult { + let (maybe_task, mut core) = { + if blocking_in_place { + if let Some(core) = cx.handoff_core.take() { + (None, core) + } else { + // Just shutdown + return Err(()); + } + } else { + let mut synced = cx.shared().synced.lock(); + + // First try to acquire an available core + if let Some(core) = self.try_acquire_available_core(cx, &mut synced) { + // Try to poll a task from the global queue + let maybe_task = cx.shared().next_remote_task_synced(&mut synced); + (maybe_task, core) + } else { + // block the thread to wait for a core to be assinged to us + self.wait_for_core(cx, synced)? + } + } + }; + + core.stats.start_processing_scheduled_tasks(&mut self.stats); + + if let Some(task) = maybe_task { + core = self.run_task(cx, core, task)?; + } + + while !self.is_shutdown { + let (maybe_task, c) = self.next_task(cx, core)?; + core = c; + + if let Some(task) = maybe_task { + core = self.run_task(cx, core, task)?; + } else { + // The only reason to get `None` from `next_task` is we have + // entered the shutdown phase. + assert!(self.is_shutdown); + break; + } + } + + cx.shared().shutdown_core(&cx.handle, core); + + // It is possible that tasks wake others during drop, so we need to + // clear the defer list. + self.shutdown_clear_defer(cx); + + Err(()) + } + + // Try to acquire an available core, but do not block the thread + fn try_acquire_available_core( + &mut self, + cx: &Context, + synced: &mut Synced, + ) -> Option> { + if let Some(mut core) = cx + .shared() + .idle + .try_acquire_available_core(&mut synced.idle) + { + self.reset_acquired_core(cx, synced, &mut core); + Some(core) + } else { + None + } + } + + // Block the current thread, waiting for an available core + fn wait_for_core( + &mut self, + cx: &Context, + mut synced: MutexGuard<'_, Synced>, + ) -> NextTaskResult { + if cx.shared().idle.needs_searching() { + if let Some(mut core) = self.try_acquire_available_core(cx, &mut synced) { + cx.shared().idle.transition_worker_to_searching(&mut core); + return Ok((None, core)); + } + } + + cx.shared() + .idle + .transition_worker_to_parked(&mut synced, cx.index); + + // Wait until a core is available, then exit the loop. + let mut core = loop { + if let Some(core) = synced.assigned_cores[cx.index].take() { + break core; + } + + // If shutting down, abort + if cx.shared().inject.is_closed(&synced.inject) { + self.shutdown_clear_defer(cx); + return Err(()); + } + + synced = cx.shared().condvars[cx.index].wait(synced).unwrap(); + }; + + self.reset_acquired_core(cx, &mut synced, &mut core); + + if self.is_shutdown { + // Currently shutting down, don't do any more work + return Ok((None, core)); + } + + let n = cmp::max(core.run_queue.remaining_slots() / 2, 1); + let maybe_task = self.next_remote_task_batch_synced(cx, &mut synced, &mut core, n); + + Ok((maybe_task, core)) + } + + /// Ensure core's state is set correctly for the worker to start using. + fn reset_acquired_core(&mut self, cx: &Context, synced: &mut Synced, core: &mut Core) { + self.global_queue_interval = core.stats.tuned_global_queue_interval(&cx.shared().config); + debug_assert!(self.global_queue_interval > 1); + + // Reset `lifo_enabled` here in case the core was previously stolen from + // a task that had the LIFO slot disabled. + self.reset_lifo_enabled(cx); + + // At this point, the local queue should be empty + #[cfg(not(loom))] + debug_assert!(core.run_queue.is_empty()); + + // Update shutdown state while locked + self.update_global_flags(cx, synced); + } + + /// Finds the next task to run, this could be from a queue or stealing. If + /// none are available, the thread sleeps and tries again. + fn next_task(&mut self, cx: &Context, mut core: Box) -> NextTaskResult { + self.assert_lifo_enabled_is_correct(cx); + + if self.is_traced { + core = cx.handle.trace_core(core); + } + + // Increment the tick + self.tick = self.tick.wrapping_add(1); + + // Runs maintenance every so often. When maintenance is run, the + // driver is checked, which may result in a task being found. + core = try_task!(self.maybe_maintenance(&cx, core)); + + // Check the LIFO slot, local run queue, and the injection queue for + // a notified task. + core = try_task!(self.next_notified_task(cx, core)); + + // We consumed all work in the queues and will start searching for work. + core.stats.end_processing_scheduled_tasks(&mut self.stats); + + super::counters::inc_num_no_local_work(); + + if !cx.defer.borrow().is_empty() { + // We are deferring tasks, so poll the resource driver and schedule + // the deferred tasks. + try_task_new_batch!(self, self.park_yield(cx, core)); + + panic!("what happened to the deferred tasks? 🤔"); + } + + while !self.is_shutdown { + // Search for more work, this involves trying to poll the resource + // driver, steal from other workers, and check the global queue + // again. + core = try_task_new_batch!(self, self.search_for_work(cx, core)); + + debug_assert!(cx.defer.borrow().is_empty()); + core = try_task_new_batch!(self, self.park(cx, core)); + } + + // Shutting down, drop any deferred tasks + self.shutdown_clear_defer(cx); + + Ok((None, core)) + } + + fn next_notified_task(&mut self, cx: &Context, mut core: Box) -> NextTaskResult { + self.num_seq_local_queue_polls += 1; + + if self.num_seq_local_queue_polls % self.global_queue_interval == 0 { + super::counters::inc_global_queue_interval(); + + self.num_seq_local_queue_polls = 0; + + // Update the global queue interval, if needed + self.tune_global_queue_interval(cx, &mut core); + + if let Some(task) = self.next_remote_task(cx) { + return Ok((Some(task), core)); + } + } + + if let Some(task) = core.next_local_task() { + return Ok((Some(task), core)); + } + + self.next_remote_task_batch(cx, core) + } + + fn next_remote_task(&self, cx: &Context) -> Option { + if cx.shared().inject.is_empty() { + return None; + } + + let mut synced = cx.shared().synced.lock(); + cx.shared().next_remote_task_synced(&mut synced) + } + + fn next_remote_task_batch(&self, cx: &Context, mut core: Box) -> NextTaskResult { + if cx.shared().inject.is_empty() { + return Ok((None, core)); + } + + // Other threads can only **remove** tasks from the current worker's + // `run_queue`. So, we can be confident that by the time we call + // `run_queue.push_back` below, there will be *at least* `cap` + // available slots in the queue. + let cap = usize::min( + core.run_queue.remaining_slots(), + usize::max(core.run_queue.max_capacity() / 2, 1), + ); + + let mut synced = cx.shared().synced.lock(); + let maybe_task = self.next_remote_task_batch_synced(cx, &mut synced, &mut core, cap); + Ok((maybe_task, core)) + } + + fn next_remote_task_batch_synced( + &self, + cx: &Context, + synced: &mut Synced, + core: &mut Core, + max: usize, + ) -> Option { + super::counters::inc_num_remote_batch(); + + // The worker is currently idle, pull a batch of work from the + // injection queue. We don't want to pull *all* the work so other + // workers can also get some. + let n = if core.is_searching { + cx.shared().inject.len() / cx.shared().idle.num_searching() + 1 + } else { + cx.shared().inject.len() / cx.shared().remotes.len() + 1 + }; + + let n = usize::min(n, max) + 1; + + // safety: passing in the correct `inject::Synced`. + let mut tasks = unsafe { cx.shared().inject.pop_n(&mut synced.inject, n) }; + + // Pop the first task to return immedietly + let ret = tasks.next(); + + // Push the rest of the on the run queue + core.run_queue.push_back(tasks); + + ret + } + + /// Function responsible for stealing tasks from another worker + /// + /// Note: Only if less than half the workers are searching for tasks to steal + /// a new worker will actually try to steal. The idea is to make sure not all + /// workers will be trying to steal at the same time. + fn search_for_work(&mut self, cx: &Context, mut core: Box) -> NextTaskResult { + #[cfg(not(loom))] + const ROUNDS: usize = 4; + + #[cfg(loom)] + const ROUNDS: usize = 1; + + debug_assert!(core.lifo_slot.is_none()); + #[cfg(not(loom))] + debug_assert!(core.run_queue.is_empty()); + + if !core.run_queue.can_steal() { + return Ok((None, core)); + } + + if !self.transition_to_searching(cx, &mut core) { + return Ok((None, core)); + } + + // core = try_task!(self, self.poll_driver(cx, core)); + + // Get a snapshot of which workers are idle + cx.shared().idle.snapshot(&mut self.idle_snapshot); + + let num = cx.shared().remotes.len(); + + for i in 0..ROUNDS { + // Start from a random worker + let start = core.rand.fastrand_n(num as u32) as usize; + + if let Some(task) = self.steal_one_round(cx, &mut core, start) { + return Ok((Some(task), core)); + } + + core = try_task!(self.next_remote_task_batch(cx, core)); + + if i > 0 { + super::counters::inc_num_spin_stall(); + std::thread::sleep(std::time::Duration::from_micros(i as u64)); + } + } + + Ok((None, core)) + } + + fn steal_one_round(&self, cx: &Context, core: &mut Core, start: usize) -> Option { + let num = cx.shared().remotes.len(); + + for i in 0..num { + let i = (start + i) % num; + + // Don't steal from ourself! We know we don't have work. + if i == core.index { + continue; + } + + // If the core is currently idle, then there is nothing to steal. + if self.idle_snapshot.is_idle(i) { + continue; + } + + let target = &cx.shared().remotes[i]; + + if let Some(task) = target + .steal + .steal_into(&mut core.run_queue, &mut core.stats) + { + return Some(task); + } + } + + None + } + + fn run_task(&mut self, cx: &Context, mut core: Box, task: Notified) -> RunResult { + let task = cx.shared().owned.assert_owner(task); + + // Make sure the worker is not in the **searching** state. This enables + // another idle worker to try to steal work. + if self.transition_from_searching(cx, &mut core) { + super::counters::inc_num_relay_search(); + cx.shared().notify_parked_local(); + } + + self.assert_lifo_enabled_is_correct(cx); + + // Measure the poll start time. Note that we may end up polling other + // tasks under this measurement. In this case, the tasks came from the + // LIFO slot and are considered part of the current task for scheduling + // purposes. These tasks inherent the "parent"'s limits. + core.stats.start_poll(&mut self.stats); + + // Make the core available to the runtime context + *cx.core.borrow_mut() = Some(core); + + // Run the task + coop::budget(|| { + super::counters::inc_num_polls(); + task.run(); + let mut lifo_polls = 0; + + // As long as there is budget remaining and a task exists in the + // `lifo_slot`, then keep running. + loop { + // Check if we still have the core. If not, the core was stolen + // by another worker. + let mut core = match cx.core.borrow_mut().take() { + Some(core) => core, + None => { + // In this case, we cannot call `reset_lifo_enabled()` + // because the core was stolen. The stealer will handle + // that at the top of `Context::run` + return Err(()); + } + }; + + // Check for a task in the LIFO slot + let task = match core.next_lifo_task() { + Some(task) => task, + None => { + self.reset_lifo_enabled(cx); + core.stats.end_poll(); + return Ok(core); + } + }; + + if !coop::has_budget_remaining() { + core.stats.end_poll(); + + // Not enough budget left to run the LIFO task, push it to + // the back of the queue and return. + core.run_queue + .push_back_or_overflow(task, cx.shared(), &mut core.stats); + // If we hit this point, the LIFO slot should be enabled. + // There is no need to reset it. + debug_assert!(cx.lifo_enabled.get()); + return Ok(core); + } + + // Track that we are about to run a task from the LIFO slot. + lifo_polls += 1; + super::counters::inc_lifo_schedules(); + + // Disable the LIFO slot if we reach our limit + // + // In ping-ping style workloads where task A notifies task B, + // which notifies task A again, continuously prioritizing the + // LIFO slot can cause starvation as these two tasks will + // repeatedly schedule the other. To mitigate this, we limit the + // number of times the LIFO slot is prioritized. + if lifo_polls >= MAX_LIFO_POLLS_PER_TICK { + cx.lifo_enabled.set(false); + super::counters::inc_lifo_capped(); + } + + // Run the LIFO task, then loop + *cx.core.borrow_mut() = Some(core); + let task = cx.shared().owned.assert_owner(task); + super::counters::inc_num_lifo_polls(); + task.run(); + } + }) + } + + fn schedule_deferred_with_core<'a>( + &mut self, + cx: &'a Context, + mut core: Box, + synced: impl FnOnce() -> MutexGuard<'a, Synced>, + ) -> NextTaskResult { + let mut defer = cx.defer.borrow_mut(); + + // Grab a task to run next + let task = defer.pop(); + + if task.is_none() { + return Ok((None, core)); + } + + if !defer.is_empty() { + let mut synced = synced(); + + // Number of tasks we want to try to spread across idle workers + let num_fanout = cmp::min(defer.len(), cx.shared().idle.num_idle(&synced.idle)); + + // Cap the number of threads woken up at one time. This is to limit + // the number of no-op wakes and reduce mutext contention. + // + // This number was picked after some basic benchmarks, but it can + // probably be tuned using the mean poll time value (slower task + // polls can leverage more woken workers). + let num_fanout = cmp::min(2, num_fanout); + + if num_fanout > 0 { + cx.shared() + .push_remote_task_batch_synced(&mut synced, defer.drain(..num_fanout)); + + cx.shared() + .idle + .notify_mult(&mut synced, &mut self.workers_to_notify, num_fanout); + } + + // Do not run the task while holding the lock... + drop(synced); + } + + // Notify any workers + for worker in self.workers_to_notify.drain(..) { + cx.shared().condvars[worker].notify_one() + } + + if !defer.is_empty() { + // Push the rest of the tasks on the local queue + for task in defer.drain(..) { + core.run_queue + .push_back_or_overflow(task, cx.shared(), &mut core.stats); + } + + cx.shared().notify_parked_local(); + } + + Ok((task, core)) + } + + fn schedule_deferred_without_core<'a>(&mut self, cx: &Context, synced: &mut Synced) { + let mut defer = cx.defer.borrow_mut(); + let num = defer.len(); + + if num > 0 { + // Push all tasks to the injection queue + cx.shared() + .push_remote_task_batch_synced(synced, defer.drain(..)); + + debug_assert!(self.workers_to_notify.is_empty()); + + // Notify workers + cx.shared() + .idle + .notify_mult(synced, &mut self.workers_to_notify, num); + + // Notify any workers + for worker in self.workers_to_notify.drain(..) { + cx.shared().condvars[worker].notify_one() + } + } + } + + fn maybe_maintenance(&mut self, cx: &Context, mut core: Box) -> NextTaskResult { + if self.tick % cx.shared().config.event_interval == 0 { + super::counters::inc_num_maintenance(); + + core.stats.end_processing_scheduled_tasks(&mut self.stats); + + // Run regularly scheduled maintenance + core = try_task_new_batch!(self, self.park_yield(cx, core)); + + core.stats.start_processing_scheduled_tasks(&mut self.stats); + } + + Ok((None, core)) + } + + fn flush_metrics(&self, cx: &Context, core: &mut Core) { + core.stats.submit(&cx.shared().worker_metrics[core.index]); + } + + fn update_global_flags(&mut self, cx: &Context, synced: &mut Synced) { + if !self.is_shutdown { + self.is_shutdown = cx.shared().inject.is_closed(&synced.inject); + } + + if !self.is_traced { + self.is_traced = cx.shared().trace_status.trace_requested(); + } + } + + fn park_yield(&mut self, cx: &Context, core: Box) -> NextTaskResult { + // Call `park` with a 0 timeout. This enables the I/O driver, timer, ... + // to run without actually putting the thread to sleep. + if let Some(mut driver) = cx.shared().driver.take() { + driver.park_timeout(&cx.handle.driver, Duration::from_millis(0)); + + cx.shared().driver.set(driver); + } + + // If there are more I/O events, schedule them. + let (maybe_task, mut core) = + self.schedule_deferred_with_core(cx, core, || cx.shared().synced.lock())?; + + self.flush_metrics(cx, &mut core); + self.update_global_flags(cx, &mut cx.shared().synced.lock()); + + Ok((maybe_task, core)) + } + + /* + fn poll_driver(&mut self, cx: &Context, core: Box) -> NextTaskResult { + // Call `park` with a 0 timeout. This enables the I/O driver, timer, ... + // to run without actually putting the thread to sleep. + if let Some(mut driver) = cx.shared().driver.take() { + driver.park_timeout(&cx.handle.driver, Duration::from_millis(0)); + + cx.shared().driver.set(driver); + + // If there are more I/O events, schedule them. + self.schedule_deferred_with_core(cx, core, || cx.shared().synced.lock()) + } else { + Ok((None, core)) + } + } + */ + + fn park(&mut self, cx: &Context, mut core: Box) -> NextTaskResult { + if let Some(f) = &cx.shared().config.before_park { + f(); + } + + if self.can_transition_to_parked(&mut core) { + debug_assert!(!self.is_shutdown); + debug_assert!(!self.is_traced); + + core = try_task!(self.do_park(cx, core)); + } + + if let Some(f) = &cx.shared().config.after_unpark { + f(); + } + + Ok((None, core)) + } + + fn do_park(&mut self, cx: &Context, mut core: Box) -> NextTaskResult { + let was_searching = core.is_searching; + + // Acquire the lock + let mut synced = cx.shared().synced.lock(); + + // The local queue should be empty at this point + #[cfg(not(loom))] + debug_assert!(core.run_queue.is_empty()); + + // Try one last time to get tasks + let n = cmp::max(core.run_queue.remaining_slots() / 2, 1); + if let Some(task) = self.next_remote_task_batch_synced(cx, &mut synced, &mut core, n) { + return Ok((Some(task), core)); + } + + if !was_searching { + if cx + .shared() + .idle + .transition_worker_to_searching_if_needed(&mut synced.idle, &mut core) + { + // Skip parking, go back to searching + return Ok((None, core)); + } + } + + super::counters::inc_num_parks(); + core.stats.about_to_park(); + // Flush metrics to the runtime metrics aggregator + self.flush_metrics(cx, &mut core); + + // If the runtime is shutdown, skip parking + self.update_global_flags(cx, &mut synced); + + if self.is_shutdown { + return Ok((None, core)); + } + + // Release the core + core.is_searching = false; + cx.shared().idle.release_core(&mut synced, core); + + drop(synced); + + if was_searching { + if cx.shared().idle.transition_worker_from_searching() { + // cx.shared().idle.snapshot(&mut self.idle_snapshot); + // We were the last searching worker, we need to do one last check + for i in 0..cx.shared().remotes.len() { + if !cx.shared().remotes[i].steal.is_empty() { + let mut synced = cx.shared().synced.lock(); + + // Try to get a core + if let Some(mut core) = self.try_acquire_available_core(cx, &mut synced) { + cx.shared().idle.transition_worker_to_searching(&mut core); + return Ok((None, core)); + } else { + // Fall back to the park routine + break; + } + } + } + } + } + + if let Some(mut driver) = cx.shared().take_driver() { + // Wait for driver events + driver.park(&cx.handle.driver); + + synced = cx.shared().synced.lock(); + + if cx.shared().inject.is_closed(&mut synced.inject) { + synced.shutdown_driver = Some(driver); + self.shutdown_clear_defer(cx); + cx.shared().shutdown_finalize(&cx.handle, &mut synced); + return Err(()); + } + + // Put the driver back + cx.shared().driver.set(driver); + + // Try to acquire an available core to schedule I/O events + if let Some(core) = self.try_acquire_available_core(cx, &mut synced) { + // This may result in a task being run + self.schedule_deferred_with_core(cx, core, move || synced) + } else { + // Schedule any deferred tasks + self.schedule_deferred_without_core(cx, &mut synced); + + // Wait for a core. + self.wait_for_core(cx, synced) + } + } else { + synced = cx.shared().synced.lock(); + + // Wait for a core to be assigned to us + self.wait_for_core(cx, synced) + } + } + + fn transition_to_searching(&self, cx: &Context, core: &mut Core) -> bool { + if !core.is_searching { + cx.shared().idle.try_transition_worker_to_searching(core); + } + + core.is_searching + } + + /// Returns `true` if another worker must be notified + fn transition_from_searching(&self, cx: &Context, core: &mut Core) -> bool { + if !core.is_searching { + return false; + } + + core.is_searching = false; + cx.shared().idle.transition_worker_from_searching() + } + + fn can_transition_to_parked(&self, core: &mut Core) -> bool { + !self.has_tasks(core) && !self.is_shutdown && !self.is_traced + } + + fn has_tasks(&self, core: &Core) -> bool { + core.lifo_slot.is_some() || !core.run_queue.is_empty() + } + + fn reset_lifo_enabled(&self, cx: &Context) { + cx.lifo_enabled + .set(!cx.handle.shared.config.disable_lifo_slot); + } + + fn assert_lifo_enabled_is_correct(&self, cx: &Context) { + debug_assert_eq!( + cx.lifo_enabled.get(), + !cx.handle.shared.config.disable_lifo_slot + ); + } + + fn tune_global_queue_interval(&mut self, cx: &Context, core: &mut Core) { + let next = core.stats.tuned_global_queue_interval(&cx.shared().config); + + debug_assert!(next > 1); + + // Smooth out jitter + if abs_diff(self.global_queue_interval, next) > 2 { + self.global_queue_interval = next; + } + } + + fn shutdown_clear_defer(&self, cx: &Context) { + let mut defer = cx.defer.borrow_mut(); + + for task in defer.drain(..) { + drop(task); + } + } +} + +impl Context { + pub(crate) fn defer(&self, waker: &Waker) { + // TODO: refactor defer across all runtimes + waker.wake_by_ref(); + } + + fn shared(&self) -> &Shared { + &self.handle.shared + } +} + +impl Core { + fn next_local_task(&mut self) -> Option { + self.next_lifo_task().or_else(|| self.run_queue.pop()) + } + + fn next_lifo_task(&mut self) -> Option { + self.lifo_slot.take() + } +} + +impl Shared { + fn next_remote_task_synced(&self, synced: &mut Synced) -> Option { + // safety: we only have access to a valid `Synced` in this file. + unsafe { self.inject.pop(&mut synced.inject) } + } + + pub(super) fn schedule_task(&self, task: Notified, is_yield: bool) { + use std::ptr; + + with_current(|maybe_cx| { + if let Some(cx) = maybe_cx { + // Make sure the task is part of the **current** scheduler. + if ptr::eq(self, &cx.handle.shared) { + // And the current thread still holds a core + if let Some(core) = cx.core.borrow_mut().as_mut() { + if is_yield { + cx.defer.borrow_mut().push(task); + } else { + self.schedule_local(cx, core, task); + } + } else { + // This can happen if either the core was stolen + // (`block_in_place`) or the notification happens from + // the driver. + cx.defer.borrow_mut().push(task); + } + return; + } + } + + // Otherwise, use the inject queue. + self.schedule_remote(task); + }) + } + + fn schedule_local(&self, cx: &Context, core: &mut Core, task: Notified) { + core.stats.inc_local_schedule_count(); + + if cx.lifo_enabled.get() { + // Push to the LIFO slot + let prev = std::mem::replace(&mut core.lifo_slot, Some(task)); + // let prev = cx.shared().remotes[core.index].lifo_slot.swap_local(task); + + if let Some(prev) = prev { + core.run_queue + .push_back_or_overflow(prev, self, &mut core.stats); + } else { + return; + } + } else { + core.run_queue + .push_back_or_overflow(task, self, &mut core.stats); + } + + self.notify_parked_local(); + } + + fn notify_parked_local(&self) { + super::counters::inc_num_inc_notify_local(); + self.idle.notify_local(self); + } + + fn schedule_remote(&self, task: Notified) { + super::counters::inc_num_notify_remote(); + self.scheduler_metrics.inc_remote_schedule_count(); + + let mut synced = self.synced.lock(); + // Push the task in the + self.push_remote_task(&mut synced, task); + + // Notify a worker. The mutex is passed in and will be released as part + // of the method call. + self.idle.notify_remote(synced, self); + } + + pub(super) fn close(&self, handle: &Handle) { + { + let mut synced = self.synced.lock(); + + if let Some(driver) = self.driver.take() { + synced.shutdown_driver = Some(driver); + } + + if !self.inject.close(&mut synced.inject) { + return; + } + + // Set the shutdown flag on all available cores + self.idle.shutdown(&mut synced, self); + } + + // Any unassigned cores need to be shutdown, but we have to first drop + // the lock + self.idle.shutdown_unassigned_cores(handle, self); + } + + fn push_remote_task(&self, synced: &mut Synced, task: Notified) { + // safety: passing in correct `idle::Synced` + unsafe { + self.inject.push(&mut synced.inject, task); + } + } + + fn push_remote_task_batch(&self, iter: I) + where + I: Iterator>>, + { + unsafe { + self.inject.push_batch(self, iter); + } + } + + fn push_remote_task_batch_synced(&self, synced: &mut Synced, iter: I) + where + I: Iterator>>, + { + unsafe { + self.inject.push_batch(&mut synced.inject, iter); + } + } + + fn take_driver(&self) -> Option> { + if !self.driver_enabled() { + return None; + } + + self.driver.take() + } + + fn driver_enabled(&self) -> bool { + self.condvars.len() > self.remotes.len() + } + + pub(super) fn shutdown_core(&self, handle: &Handle, mut core: Box) { + self.owned.close_and_shutdown_all(); + + core.stats.submit(&self.worker_metrics[core.index]); + + let mut synced = self.synced.lock(); + synced.shutdown_cores.push(core); + + self.shutdown_finalize(handle, &mut synced); + } + + pub(super) fn shutdown_finalize(&self, handle: &Handle, synced: &mut Synced) { + // Wait for all cores + if synced.shutdown_cores.len() != self.remotes.len() { + return; + } + + let driver = synced.shutdown_driver.take(); + + if self.driver_enabled() && driver.is_none() { + return; + } + + debug_assert!(self.owned.is_empty()); + + for mut core in synced.shutdown_cores.drain(..) { + // Drain tasks from the local queue + while core.next_local_task().is_some() {} + } + + // Shutdown the driver + if let Some(mut driver) = driver { + driver.shutdown(&handle.driver); + } + + // Drain the injection queue + // + // We already shut down every task, so we can simply drop the tasks. We + // cannot call `next_remote_task()` because we already hold the lock. + // + // safety: passing in correct `idle::Synced` + while let Some(task) = self.next_remote_task_synced(synced) { + drop(task); + } + } +} + +impl Overflow> for Shared { + fn push(&self, task: task::Notified>) { + self.push_remote_task(&mut self.synced.lock(), task); + } + + fn push_batch(&self, iter: I) + where + I: Iterator>>, + { + self.push_remote_task_batch(iter) + } +} + +impl<'a> Lock for &'a Shared { + type Handle = SyncedGuard<'a>; + + fn lock(self) -> Self::Handle { + SyncedGuard { + lock: self.synced.lock(), + } + } +} + +impl<'a> Lock for &'a Shared { + type Handle = SyncedGuard<'a>; + + fn lock(self) -> Self::Handle { + SyncedGuard { + lock: self.synced.lock(), + } + } +} + +impl task::Schedule for Arc { + fn release(&self, task: &Task) -> Option { + self.shared.owned.remove(task) + } + + fn schedule(&self, task: Notified) { + self.shared.schedule_task(task, false); + } + + fn yield_now(&self, task: Notified) { + self.shared.schedule_task(task, true); + } +} + +impl AsMut for Synced { + fn as_mut(&mut self) -> &mut Synced { + self + } +} + +pub(crate) struct SyncedGuard<'a> { + lock: crate::loom::sync::MutexGuard<'a, Synced>, +} + +impl<'a> AsMut for SyncedGuard<'a> { + fn as_mut(&mut self) -> &mut inject::Synced { + &mut self.lock.inject + } +} + +impl<'a> AsMut for SyncedGuard<'a> { + fn as_mut(&mut self) -> &mut Synced { + &mut self.lock + } +} + +#[track_caller] +fn with_current(f: impl FnOnce(Option<&Context>) -> R) -> R { + use scheduler::Context::MultiThreadAlt; + + context::with_scheduler(|ctx| match ctx { + Some(MultiThreadAlt(ctx)) => f(Some(ctx)), + _ => f(None), + }) +} + +// `u32::abs_diff` is not available on Tokio's MSRV. +fn abs_diff(a: u32, b: u32) -> u32 { + if a > b { + a - b + } else { + b - a + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/task/core.rs temporalio-1.3.0/vendor/tokio/src/runtime/task/core.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/task/core.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/task/core.rs 2023-10-30 19:40:00.000000000 +0000 @@ -17,6 +17,7 @@ use crate::runtime::task::{Id, Schedule}; use crate::util::linked_list; +use std::num::NonZeroU64; use std::pin::Pin; use std::ptr::NonNull; use std::task::{Context, Poll, Waker}; @@ -164,7 +165,7 @@ /// This integer contains the id of the OwnedTasks or LocalOwnedTasks that /// this task is stored in. If the task is not in any list, should be the - /// id of the list that it was previously in, or zero if it has never been + /// id of the list that it was previously in, or `None` if it has never been /// in any list. /// /// Once a task has been bound to a list, it can never be bound to another @@ -173,7 +174,7 @@ /// The id is not unset when removed from a list because we want to be able /// to read the id without synchronization, even if it is concurrently being /// removed from the list. - pub(super) owner_id: UnsafeCell, + pub(super) owner_id: UnsafeCell>, /// The tracing ID for this instrumented task. #[cfg(all(tokio_unstable, feature = "tracing"))] @@ -211,17 +212,32 @@ /// Allocates a new task cell, containing the header, trailer, and core /// structures. pub(super) fn new(future: T, scheduler: S, state: State, task_id: Id) -> Box> { + // Separated into a non-generic function to reduce LLVM codegen + fn new_header( + state: State, + vtable: &'static Vtable, + #[cfg(all(tokio_unstable, feature = "tracing"))] tracing_id: Option, + ) -> Header { + Header { + state, + queue_next: UnsafeCell::new(None), + vtable, + owner_id: UnsafeCell::new(None), + #[cfg(all(tokio_unstable, feature = "tracing"))] + tracing_id, + } + } + #[cfg(all(tokio_unstable, feature = "tracing"))] let tracing_id = future.id(); + let vtable = raw::vtable::(); let result = Box::new(Cell { - header: Header { + header: new_header( state, - queue_next: UnsafeCell::new(None), - vtable: raw::vtable::(), - owner_id: UnsafeCell::new(0), + vtable, #[cfg(all(tokio_unstable, feature = "tracing"))] tracing_id, - }, + ), core: Core { scheduler, stage: CoreStage { @@ -229,26 +245,33 @@ }, task_id, }, - trailer: Trailer { - waker: UnsafeCell::new(None), - owned: linked_list::Pointers::new(), - }, + trailer: Trailer::new(), }); #[cfg(debug_assertions)] { - let trailer_addr = (&result.trailer) as *const Trailer as usize; - let trailer_ptr = unsafe { Header::get_trailer(NonNull::from(&result.header)) }; - assert_eq!(trailer_addr, trailer_ptr.as_ptr() as usize); - - let scheduler_addr = (&result.core.scheduler) as *const S as usize; - let scheduler_ptr = - unsafe { Header::get_scheduler::(NonNull::from(&result.header)) }; - assert_eq!(scheduler_addr, scheduler_ptr.as_ptr() as usize); - - let id_addr = (&result.core.task_id) as *const Id as usize; - let id_ptr = unsafe { Header::get_id_ptr(NonNull::from(&result.header)) }; - assert_eq!(id_addr, id_ptr.as_ptr() as usize); + // Using a separate function for this code avoids instantiating it separately for every `T`. + unsafe fn check(header: &Header, trailer: &Trailer, scheduler: &S, task_id: &Id) { + let trailer_addr = trailer as *const Trailer as usize; + let trailer_ptr = unsafe { Header::get_trailer(NonNull::from(header)) }; + assert_eq!(trailer_addr, trailer_ptr.as_ptr() as usize); + + let scheduler_addr = scheduler as *const S as usize; + let scheduler_ptr = unsafe { Header::get_scheduler::(NonNull::from(header)) }; + assert_eq!(scheduler_addr, scheduler_ptr.as_ptr() as usize); + + let id_addr = task_id as *const Id as usize; + let id_ptr = unsafe { Header::get_id_ptr(NonNull::from(header)) }; + assert_eq!(id_addr, id_ptr.as_ptr() as usize); + } + unsafe { + check( + &result.header, + &result.trailer, + &result.core.scheduler, + &result.core.task_id, + ); + } } result @@ -372,13 +395,13 @@ } // safety: The caller must guarantee exclusive access to this field, and - // must ensure that the id is either 0 or the id of the OwnedTasks + // must ensure that the id is either `None` or the id of the OwnedTasks // containing this task. - pub(super) unsafe fn set_owner_id(&self, owner: u64) { - self.owner_id.with_mut(|ptr| *ptr = owner); + pub(super) unsafe fn set_owner_id(&self, owner: NonZeroU64) { + self.owner_id.with_mut(|ptr| *ptr = Some(owner)); } - pub(super) fn get_owner_id(&self) -> u64 { + pub(super) fn get_owner_id(&self) -> Option { // safety: If there are concurrent writes, then that write has violated // the safety requirements on `set_owner_id`. unsafe { self.owner_id.with(|ptr| *ptr) } @@ -442,6 +465,13 @@ } impl Trailer { + fn new() -> Self { + Trailer { + waker: UnsafeCell::new(None), + owned: linked_list::Pointers::new(), + } + } + pub(super) unsafe fn set_waker(&self, waker: Option) { self.waker.with_mut(|ptr| { *ptr = waker; diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/task/harness.rs temporalio-1.3.0/vendor/tokio/src/runtime/task/harness.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/task/harness.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/task/harness.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,8 +2,9 @@ use crate::runtime::task::core::{Cell, Core, Header, Trailer}; use crate::runtime::task::state::{Snapshot, State}; use crate::runtime::task::waker::waker_ref; -use crate::runtime::task::{JoinError, Notified, RawTask, Schedule, Task}; +use crate::runtime::task::{Id, JoinError, Notified, RawTask, Schedule, Task}; +use std::any::Any; use std::mem; use std::mem::ManuallyDrop; use std::panic; @@ -192,8 +193,17 @@ match self.state().transition_to_running() { TransitionToRunning::Success => { + // Separated to reduce LLVM codegen + fn transition_result_to_poll_future(result: TransitionToIdle) -> PollFuture { + match result { + TransitionToIdle::Ok => PollFuture::Done, + TransitionToIdle::OkNotified => PollFuture::Notified, + TransitionToIdle::OkDealloc => PollFuture::Dealloc, + TransitionToIdle::Cancelled => PollFuture::Complete, + } + } let header_ptr = self.header_ptr(); - let waker_ref = waker_ref::(&header_ptr); + let waker_ref = waker_ref::(&header_ptr); let cx = Context::from_waker(&waker_ref); let res = poll_future(self.core(), cx); @@ -202,17 +212,13 @@ return PollFuture::Complete; } - match self.state().transition_to_idle() { - TransitionToIdle::Ok => PollFuture::Done, - TransitionToIdle::OkNotified => PollFuture::Notified, - TransitionToIdle::OkDealloc => PollFuture::Dealloc, - TransitionToIdle::Cancelled => { - // The transition to idle failed because the task was - // cancelled during the poll. - cancel_task(self.core()); - PollFuture::Complete - } + let transition_res = self.state().transition_to_idle(); + if let TransitionToIdle::Cancelled = transition_res { + // The transition to idle failed because the task was + // cancelled during the poll. + cancel_task(self.core()); } + transition_result_to_poll_future(transition_res) } TransitionToRunning::Cancelled => { cancel_task(self.core()); @@ -447,13 +453,16 @@ core.drop_future_or_output(); })); + core.store_output(Err(panic_result_to_join_error(core.task_id, res))); +} + +fn panic_result_to_join_error( + task_id: Id, + res: Result<(), Box>, +) -> JoinError { match res { - Ok(()) => { - core.store_output(Err(JoinError::cancelled(core.task_id))); - } - Err(panic) => { - core.store_output(Err(JoinError::panic(core.task_id, panic))); - } + Ok(()) => JoinError::cancelled(task_id), + Err(panic) => JoinError::panic(task_id, panic), } } @@ -482,10 +491,7 @@ let output = match output { Ok(Poll::Pending) => return Poll::Pending, Ok(Poll::Ready(output)) => Ok(output), - Err(panic) => { - core.scheduler.unhandled_panic(); - Err(JoinError::panic(core.task_id, panic)) - } + Err(panic) => Err(panic_to_error(&core.scheduler, core.task_id, panic)), }; // Catch and ignore panics if the future panics on drop. @@ -499,3 +505,13 @@ Poll::Ready(()) } + +#[cold] +fn panic_to_error( + scheduler: &S, + task_id: Id, + panic: Box, +) -> JoinError { + scheduler.unhandled_panic(); + JoinError::panic(task_id, panic) +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/task/list.rs temporalio-1.3.0/vendor/tokio/src/runtime/task/list.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/task/list.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/task/list.rs 2023-10-30 19:40:00.000000000 +0000 @@ -13,10 +13,11 @@ use crate::util::linked_list::{CountedLinkedList, Link, LinkedList}; use std::marker::PhantomData; +use std::num::NonZeroU64; // The id from the module below is used to verify whether a given task is stored // in this OwnedTasks, or some other task. The counter starts at one so we can -// use zero for tasks not owned by any list. +// use `None` for tasks not owned by any list. // // The safety checks in this file can technically be violated if the counter is // overflown, but the checks are not supposed to ever fail unless there is a @@ -28,10 +29,10 @@ static NEXT_OWNED_TASKS_ID: AtomicU64 = AtomicU64::new(1); - fn get_next_id() -> u64 { + fn get_next_id() -> NonZeroU64 { loop { let id = NEXT_OWNED_TASKS_ID.fetch_add(1, Ordering::Relaxed); - if id != 0 { + if let Some(id) = NonZeroU64::new(id) { return id; } } @@ -43,11 +44,11 @@ static NEXT_OWNED_TASKS_ID: AtomicU32 = AtomicU32::new(1); - fn get_next_id() -> u64 { + fn get_next_id() -> NonZeroU64 { loop { let id = NEXT_OWNED_TASKS_ID.fetch_add(1, Ordering::Relaxed); - if id != 0 { - return u64::from(id); + if let Some(id) = NonZeroU64::new(u64::from(id)) { + return id; } } } @@ -55,7 +56,7 @@ pub(crate) struct OwnedTasks { inner: Mutex>, - id: u64, + pub(crate) id: NonZeroU64, } struct CountedOwnedTasksInner { list: CountedLinkedList, as Link>::Target>, @@ -63,7 +64,7 @@ } pub(crate) struct LocalOwnedTasks { inner: UnsafeCell>, - id: u64, + pub(crate) id: NonZeroU64, _not_send_or_sync: PhantomData<*const ()>, } struct OwnedTasksInner { @@ -96,7 +97,15 @@ T::Output: Send + 'static, { let (task, notified, join) = super::new_task(task, scheduler, id); + let notified = unsafe { self.bind_inner(task, notified) }; + (join, notified) + } + /// The part of `bind` that's the same for every type of future. + unsafe fn bind_inner(&self, task: Task, notified: Notified) -> Option> + where + S: Schedule, + { unsafe { // safety: We just created the task, so we have exclusive access // to the field. @@ -108,10 +117,10 @@ drop(lock); drop(notified); task.shutdown(); - (join, None) + None } else { lock.list.push_front(task); - (join, Some(notified)) + Some(notified) } } @@ -119,7 +128,7 @@ /// a LocalNotified, giving the thread permission to poll this task. #[inline] pub(crate) fn assert_owner(&self, task: Notified) -> LocalNotified { - assert_eq!(task.header().get_owner_id(), self.id); + debug_assert_eq!(task.header().get_owner_id(), Some(self.id)); // safety: All tasks bound to this OwnedTasks are Send, so it is safe // to poll it on this thread no matter what thread we are on. @@ -162,11 +171,9 @@ } pub(crate) fn remove(&self, task: &Task) -> Option> { - let task_id = task.header().get_owner_id(); - if task_id == 0 { - // The task is unowned. - return None; - } + // If the task's owner ID is `None` then it is not part of any list and + // doesn't need removing. + let task_id = task.header().get_owner_id()?; assert_eq!(task_id, self.id); @@ -249,11 +256,9 @@ } pub(crate) fn remove(&self, task: &Task) -> Option> { - let task_id = task.header().get_owner_id(); - if task_id == 0 { - // The task is unowned. - return None; - } + // If the task's owner ID is `None` then it is not part of any list and + // doesn't need removing. + let task_id = task.header().get_owner_id()?; assert_eq!(task_id, self.id); @@ -267,7 +272,7 @@ /// it to a LocalNotified, giving the thread permission to poll this task. #[inline] pub(crate) fn assert_owner(&self, task: Notified) -> LocalNotified { - assert_eq!(task.header().get_owner_id(), self.id); + assert_eq!(task.header().get_owner_id(), Some(self.id)); // safety: The task was bound to this LocalOwnedTasks, and the // LocalOwnedTasks is not Send or Sync, so we are on the right thread @@ -298,7 +303,7 @@ } } -#[cfg(all(test))] +#[cfg(test)] mod tests { use super::*; @@ -307,11 +312,9 @@ #[test] fn test_id_not_broken() { let mut last_id = get_next_id(); - assert_ne!(last_id, 0); for _ in 0..1000 { let next_id = get_next_id(); - assert_ne!(next_id, 0); assert!(last_id < next_id); last_id = next_id; } diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/task/mod.rs temporalio-1.3.0/vendor/tokio/src/runtime/task/mod.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/task/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/task/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -404,7 +404,7 @@ impl UnownedTask { // Used in test of the inject queue. #[cfg(test)] - #[cfg_attr(tokio_wasm, allow(dead_code))] + #[cfg_attr(target_family = "wasm", allow(dead_code))] pub(super) fn into_notified(self) -> Notified { Notified(self.into_task()) } diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/task/trace/mod.rs temporalio-1.3.0/vendor/tokio/src/runtime/task/trace/mod.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/task/trace/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/task/trace/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -184,8 +184,14 @@ if let Some(scheduler) = scheduler { match scheduler { scheduler::Context::CurrentThread(s) => s.defer.defer(cx.waker()), - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] scheduler::Context::MultiThread(s) => s.defer.defer(cx.waker()), + #[cfg(all( + tokio_unstable, + feature = "rt-multi-thread", + not(target_os = "wasi") + ))] + scheduler::Context::MultiThreadAlt(_) => unimplemented!(), } } }); diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/task/waker.rs temporalio-1.3.0/vendor/tokio/src/runtime/task/waker.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/task/waker.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/task/waker.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,3 @@ -use crate::future::Future; use crate::runtime::task::{Header, RawTask, Schedule}; use std::marker::PhantomData; @@ -14,9 +13,8 @@ /// Returns a `WakerRef` which avoids having to preemptively increase the /// refcount if there is no need to do so. -pub(super) fn waker_ref(header: &NonNull

) -> WakerRef<'_, S> +pub(super) fn waker_ref(header: &NonNull
) -> WakerRef<'_, S> where - T: Future, S: Schedule, { // `Waker::will_wake` uses the VTABLE pointer as part of the check. This diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_current_thread/yield_now.rs temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_current_thread/yield_now.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_current_thread/yield_now.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_current_thread/yield_now.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,37 @@ +use crate::runtime::park; +use crate::runtime::tests::loom_oneshot as oneshot; +use crate::runtime::{self, Runtime}; + +#[test] +fn yield_calls_park_before_scheduling_again() { + // Don't need to check all permutations + let mut loom = loom::model::Builder::default(); + loom.max_permutations = Some(1); + loom.check(|| { + let rt = mk_runtime(2); + let (tx, rx) = oneshot::channel::<()>(); + + rt.spawn(async { + let tid = loom::thread::current().id(); + let park_count = park::current_thread_park_count(); + + crate::task::yield_now().await; + + if tid == loom::thread::current().id() { + let new_park_count = park::current_thread_park_count(); + assert_eq!(park_count + 1, new_park_count); + } + + tx.send(()); + }); + + rx.recv(); + }); +} + +fn mk_runtime(num_threads: usize) -> Runtime { + runtime::Builder::new_multi_thread() + .worker_threads(num_threads) + .build() + .unwrap() +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_current_thread.rs temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_current_thread.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_current_thread.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_current_thread.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,144 @@ +mod yield_now; + +use crate::loom::sync::atomic::AtomicUsize; +use crate::loom::sync::Arc; +use crate::loom::thread; +use crate::runtime::{Builder, Runtime}; +use crate::sync::oneshot::{self, Receiver}; +use crate::task; +use std::future::Future; +use std::pin::Pin; +use std::sync::atomic::Ordering::{Acquire, Release}; +use std::task::{Context, Poll}; + +fn assert_at_most_num_polls(rt: Arc, at_most_polls: usize) { + let (tx, rx) = oneshot::channel(); + let num_polls = Arc::new(AtomicUsize::new(0)); + rt.spawn(async move { + for _ in 0..12 { + task::yield_now().await; + } + tx.send(()).unwrap(); + }); + + rt.block_on(async { + BlockedFuture { + rx, + num_polls: num_polls.clone(), + } + .await; + }); + + let polls = num_polls.load(Acquire); + assert!(polls <= at_most_polls); +} + +#[test] +fn block_on_num_polls() { + loom::model(|| { + // we expect at most 4 number of polls because there are three points at + // which we poll the future and an opportunity for a false-positive.. At + // any of these points it can be ready: + // + // - when we fail to steal the parker and we block on a notification + // that it is available. + // + // - when we steal the parker and we schedule the future + // + // - when the future is woken up and we have ran the max number of tasks + // for the current tick or there are no more tasks to run. + // + // - a thread is notified that the parker is available but a third + // thread acquires it before the notified thread can. + // + let at_most = 4; + + let rt1 = Arc::new(Builder::new_current_thread().build().unwrap()); + let rt2 = rt1.clone(); + let rt3 = rt1.clone(); + + let th1 = thread::spawn(move || assert_at_most_num_polls(rt1, at_most)); + let th2 = thread::spawn(move || assert_at_most_num_polls(rt2, at_most)); + let th3 = thread::spawn(move || assert_at_most_num_polls(rt3, at_most)); + + th1.join().unwrap(); + th2.join().unwrap(); + th3.join().unwrap(); + }); +} + +#[test] +fn assert_no_unnecessary_polls() { + loom::model(|| { + // // After we poll outer future, woken should reset to false + let rt = Builder::new_current_thread().build().unwrap(); + let (tx, rx) = oneshot::channel(); + let pending_cnt = Arc::new(AtomicUsize::new(0)); + + rt.spawn(async move { + for _ in 0..24 { + task::yield_now().await; + } + tx.send(()).unwrap(); + }); + + let pending_cnt_clone = pending_cnt.clone(); + rt.block_on(async move { + // use task::yield_now() to ensure woken set to true + // ResetFuture will be polled at most once + // Here comes two cases + // 1. recv no message from channel, ResetFuture will be polled + // but get Pending and we record ResetFuture.pending_cnt ++. + // Then when message arrive, ResetFuture returns Ready. So we + // expect ResetFuture.pending_cnt = 1 + // 2. recv message from channel, ResetFuture returns Ready immediately. + // We expect ResetFuture.pending_cnt = 0 + task::yield_now().await; + ResetFuture { + rx, + pending_cnt: pending_cnt_clone, + } + .await; + }); + + let pending_cnt = pending_cnt.load(Acquire); + assert!(pending_cnt <= 1); + }); +} + +struct BlockedFuture { + rx: Receiver<()>, + num_polls: Arc, +} + +impl Future for BlockedFuture { + type Output = (); + + fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + self.num_polls.fetch_add(1, Release); + + match Pin::new(&mut self.rx).poll(cx) { + Poll::Pending => Poll::Pending, + _ => Poll::Ready(()), + } + } +} + +struct ResetFuture { + rx: Receiver<()>, + pending_cnt: Arc, +} + +impl Future for ResetFuture { + type Output = (); + + fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + match Pin::new(&mut self.rx).poll(cx) { + Poll::Pending => { + self.pending_cnt.fetch_add(1, Release); + Poll::Pending + } + _ => Poll::Ready(()), + } + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_current_thread_scheduler.rs temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_current_thread_scheduler.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_current_thread_scheduler.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_current_thread_scheduler.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,142 +0,0 @@ -use crate::loom::sync::atomic::AtomicUsize; -use crate::loom::sync::Arc; -use crate::loom::thread; -use crate::runtime::{Builder, Runtime}; -use crate::sync::oneshot::{self, Receiver}; -use crate::task; -use std::future::Future; -use std::pin::Pin; -use std::sync::atomic::Ordering::{Acquire, Release}; -use std::task::{Context, Poll}; - -fn assert_at_most_num_polls(rt: Arc, at_most_polls: usize) { - let (tx, rx) = oneshot::channel(); - let num_polls = Arc::new(AtomicUsize::new(0)); - rt.spawn(async move { - for _ in 0..12 { - task::yield_now().await; - } - tx.send(()).unwrap(); - }); - - rt.block_on(async { - BlockedFuture { - rx, - num_polls: num_polls.clone(), - } - .await; - }); - - let polls = num_polls.load(Acquire); - assert!(polls <= at_most_polls); -} - -#[test] -fn block_on_num_polls() { - loom::model(|| { - // we expect at most 4 number of polls because there are three points at - // which we poll the future and an opportunity for a false-positive.. At - // any of these points it can be ready: - // - // - when we fail to steal the parker and we block on a notification - // that it is available. - // - // - when we steal the parker and we schedule the future - // - // - when the future is woken up and we have ran the max number of tasks - // for the current tick or there are no more tasks to run. - // - // - a thread is notified that the parker is available but a third - // thread acquires it before the notified thread can. - // - let at_most = 4; - - let rt1 = Arc::new(Builder::new_current_thread().build().unwrap()); - let rt2 = rt1.clone(); - let rt3 = rt1.clone(); - - let th1 = thread::spawn(move || assert_at_most_num_polls(rt1, at_most)); - let th2 = thread::spawn(move || assert_at_most_num_polls(rt2, at_most)); - let th3 = thread::spawn(move || assert_at_most_num_polls(rt3, at_most)); - - th1.join().unwrap(); - th2.join().unwrap(); - th3.join().unwrap(); - }); -} - -#[test] -fn assert_no_unnecessary_polls() { - loom::model(|| { - // // After we poll outer future, woken should reset to false - let rt = Builder::new_current_thread().build().unwrap(); - let (tx, rx) = oneshot::channel(); - let pending_cnt = Arc::new(AtomicUsize::new(0)); - - rt.spawn(async move { - for _ in 0..24 { - task::yield_now().await; - } - tx.send(()).unwrap(); - }); - - let pending_cnt_clone = pending_cnt.clone(); - rt.block_on(async move { - // use task::yield_now() to ensure woken set to true - // ResetFuture will be polled at most once - // Here comes two cases - // 1. recv no message from channel, ResetFuture will be polled - // but get Pending and we record ResetFuture.pending_cnt ++. - // Then when message arrive, ResetFuture returns Ready. So we - // expect ResetFuture.pending_cnt = 1 - // 2. recv message from channel, ResetFuture returns Ready immediately. - // We expect ResetFuture.pending_cnt = 0 - task::yield_now().await; - ResetFuture { - rx, - pending_cnt: pending_cnt_clone, - } - .await; - }); - - let pending_cnt = pending_cnt.load(Acquire); - assert!(pending_cnt <= 1); - }); -} - -struct BlockedFuture { - rx: Receiver<()>, - num_polls: Arc, -} - -impl Future for BlockedFuture { - type Output = (); - - fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - self.num_polls.fetch_add(1, Release); - - match Pin::new(&mut self.rx).poll(cx) { - Poll::Pending => Poll::Pending, - _ => Poll::Ready(()), - } - } -} - -struct ResetFuture { - rx: Receiver<()>, - pending_cnt: Arc, -} - -impl Future for ResetFuture { - type Output = (); - - fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - match Pin::new(&mut self.rx).poll(cx) { - Poll::Pending => { - self.pending_cnt.fetch_add(1, Release); - Poll::Pending - } - _ => Poll::Ready(()), - } - } -} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread/queue.rs temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread/queue.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread/queue.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread/queue.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,205 @@ +use crate::runtime::scheduler::multi_thread::{queue, Stats}; +use crate::runtime::tests::{unowned, NoopSchedule}; + +use loom::thread; +use std::cell::RefCell; + +fn new_stats() -> Stats { + Stats::new(&crate::runtime::WorkerMetrics::new()) +} + +#[test] +fn basic() { + loom::model(|| { + let (steal, mut local) = queue::local(); + let inject = RefCell::new(vec![]); + let mut stats = new_stats(); + + let th = thread::spawn(move || { + let mut stats = new_stats(); + let (_, mut local) = queue::local(); + let mut n = 0; + + for _ in 0..3 { + if steal.steal_into(&mut local, &mut stats).is_some() { + n += 1; + } + + while local.pop().is_some() { + n += 1; + } + } + + n + }); + + let mut n = 0; + + for _ in 0..2 { + for _ in 0..2 { + let (task, _) = unowned(async {}); + local.push_back_or_overflow(task, &inject, &mut stats); + } + + if local.pop().is_some() { + n += 1; + } + + // Push another task + let (task, _) = unowned(async {}); + local.push_back_or_overflow(task, &inject, &mut stats); + + while local.pop().is_some() { + n += 1; + } + } + + n += inject.borrow_mut().drain(..).count(); + + n += th.join().unwrap(); + + assert_eq!(6, n); + }); +} + +#[test] +fn steal_overflow() { + loom::model(|| { + let (steal, mut local) = queue::local(); + let inject = RefCell::new(vec![]); + let mut stats = new_stats(); + + let th = thread::spawn(move || { + let mut stats = new_stats(); + let (_, mut local) = queue::local(); + let mut n = 0; + + if steal.steal_into(&mut local, &mut stats).is_some() { + n += 1; + } + + while local.pop().is_some() { + n += 1; + } + + n + }); + + let mut n = 0; + + // push a task, pop a task + let (task, _) = unowned(async {}); + local.push_back_or_overflow(task, &inject, &mut stats); + + if local.pop().is_some() { + n += 1; + } + + for _ in 0..6 { + let (task, _) = unowned(async {}); + local.push_back_or_overflow(task, &inject, &mut stats); + } + + n += th.join().unwrap(); + + while local.pop().is_some() { + n += 1; + } + + n += inject.borrow_mut().drain(..).count(); + + assert_eq!(7, n); + }); +} + +#[test] +fn multi_stealer() { + const NUM_TASKS: usize = 5; + + fn steal_tasks(steal: queue::Steal) -> usize { + let mut stats = new_stats(); + let (_, mut local) = queue::local(); + + if steal.steal_into(&mut local, &mut stats).is_none() { + return 0; + } + + let mut n = 1; + + while local.pop().is_some() { + n += 1; + } + + n + } + + loom::model(|| { + let (steal, mut local) = queue::local(); + let inject = RefCell::new(vec![]); + let mut stats = new_stats(); + + // Push work + for _ in 0..NUM_TASKS { + let (task, _) = unowned(async {}); + local.push_back_or_overflow(task, &inject, &mut stats); + } + + let th1 = { + let steal = steal.clone(); + thread::spawn(move || steal_tasks(steal)) + }; + + let th2 = thread::spawn(move || steal_tasks(steal)); + + let mut n = 0; + + while local.pop().is_some() { + n += 1; + } + + n += inject.borrow_mut().drain(..).count(); + + n += th1.join().unwrap(); + n += th2.join().unwrap(); + + assert_eq!(n, NUM_TASKS); + }); +} + +#[test] +fn chained_steal() { + loom::model(|| { + let mut stats = new_stats(); + let (s1, mut l1) = queue::local(); + let (s2, mut l2) = queue::local(); + let inject = RefCell::new(vec![]); + + // Load up some tasks + for _ in 0..4 { + let (task, _) = unowned(async {}); + l1.push_back_or_overflow(task, &inject, &mut stats); + + let (task, _) = unowned(async {}); + l2.push_back_or_overflow(task, &inject, &mut stats); + } + + // Spawn a task to steal from **our** queue + let th = thread::spawn(move || { + let mut stats = new_stats(); + let (_, mut local) = queue::local(); + s1.steal_into(&mut local, &mut stats); + + while local.pop().is_some() {} + }); + + // Drain our tasks, then attempt to steal + while l1.pop().is_some() {} + + s2.steal_into(&mut l1, &mut stats); + + th.join().unwrap(); + + while l1.pop().is_some() {} + while l2.pop().is_some() {} + }); +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread/shutdown.rs temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread/shutdown.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread/shutdown.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread/shutdown.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,28 @@ +use crate::runtime::{Builder, Handle}; + +#[test] +fn join_handle_cancel_on_shutdown() { + let mut builder = loom::model::Builder::new(); + builder.preemption_bound = Some(2); + builder.check(|| { + use futures::future::FutureExt; + + let rt = Builder::new_multi_thread() + .worker_threads(2) + .build() + .unwrap(); + + let handle = rt.block_on(async move { Handle::current() }); + + let jh1 = handle.spawn(futures::future::pending::<()>()); + + drop(rt); + + let jh2 = handle.spawn(futures::future::pending::<()>()); + + let err1 = jh1.now_or_never().unwrap().unwrap_err(); + let err2 = jh2.now_or_never().unwrap().unwrap_err(); + assert!(err1.is_cancelled()); + assert!(err2.is_cancelled()); + }); +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread/yield_now.rs temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread/yield_now.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread/yield_now.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread/yield_now.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,37 @@ +use crate::runtime::park; +use crate::runtime::tests::loom_oneshot as oneshot; +use crate::runtime::{self, Runtime}; + +#[test] +fn yield_calls_park_before_scheduling_again() { + // Don't need to check all permutations + let mut loom = loom::model::Builder::default(); + loom.max_permutations = Some(1); + loom.check(|| { + let rt = mk_runtime(2); + let (tx, rx) = oneshot::channel::<()>(); + + rt.spawn(async { + let tid = loom::thread::current().id(); + let park_count = park::current_thread_park_count(); + + crate::task::yield_now().await; + + if tid == loom::thread::current().id() { + let new_park_count = park::current_thread_park_count(); + assert_eq!(park_count + 1, new_park_count); + } + + tx.send(()); + }); + + rx.recv(); + }); +} + +fn mk_runtime(num_threads: usize) -> Runtime { + runtime::Builder::new_multi_thread() + .worker_threads(num_threads) + .build() + .unwrap() +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread_alt/queue.rs temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread_alt/queue.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread_alt/queue.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread_alt/queue.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,205 @@ +use crate::runtime::scheduler::multi_thread::{queue, Stats}; +use crate::runtime::tests::{unowned, NoopSchedule}; + +use loom::thread; +use std::cell::RefCell; + +fn new_stats() -> Stats { + Stats::new(&crate::runtime::WorkerMetrics::new()) +} + +#[test] +fn basic() { + loom::model(|| { + let (steal, mut local) = queue::local(); + let inject = RefCell::new(vec![]); + let mut stats = new_stats(); + + let th = thread::spawn(move || { + let mut stats = new_stats(); + let (_, mut local) = queue::local(); + let mut n = 0; + + for _ in 0..3 { + if steal.steal_into(&mut local, &mut stats).is_some() { + n += 1; + } + + while local.pop().is_some() { + n += 1; + } + } + + n + }); + + let mut n = 0; + + for _ in 0..2 { + for _ in 0..2 { + let (task, _) = unowned(async {}); + local.push_back_or_overflow(task, &inject, &mut stats); + } + + if local.pop().is_some() { + n += 1; + } + + // Push another task + let (task, _) = unowned(async {}); + local.push_back_or_overflow(task, &inject, &mut stats); + + while local.pop().is_some() { + n += 1; + } + } + + n += inject.borrow_mut().drain(..).count(); + + n += th.join().unwrap(); + + assert_eq!(6, n); + }); +} + +#[test] +fn steal_overflow() { + loom::model(|| { + let (steal, mut local) = queue::local(); + let inject = RefCell::new(vec![]); + let mut stats = new_stats(); + + let th = thread::spawn(move || { + let mut stats = new_stats(); + let (_, mut local) = queue::local(); + let mut n = 0; + + if steal.steal_into(&mut local, &mut stats).is_some() { + n += 1; + } + + while local.pop().is_some() { + n += 1; + } + + n + }); + + let mut n = 0; + + // push a task, pop a task + let (task, _) = unowned(async {}); + local.push_back_or_overflow(task, &inject, &mut stats); + + if local.pop().is_some() { + n += 1; + } + + for _ in 0..6 { + let (task, _) = unowned(async {}); + local.push_back_or_overflow(task, &inject, &mut stats); + } + + n += th.join().unwrap(); + + while local.pop().is_some() { + n += 1; + } + + n += inject.borrow_mut().drain(..).count(); + + assert_eq!(7, n); + }); +} + +#[test] +fn multi_stealer() { + const NUM_TASKS: usize = 5; + + fn steal_tasks(steal: queue::Steal) -> usize { + let mut stats = new_stats(); + let (_, mut local) = queue::local(); + + if steal.steal_into(&mut local, &mut stats).is_none() { + return 0; + } + + let mut n = 1; + + while local.pop().is_some() { + n += 1; + } + + n + } + + loom::model(|| { + let (steal, mut local) = queue::local(); + let inject = RefCell::new(vec![]); + let mut stats = new_stats(); + + // Push work + for _ in 0..NUM_TASKS { + let (task, _) = unowned(async {}); + local.push_back_or_overflow(task, &inject, &mut stats); + } + + let th1 = { + let steal = steal.clone(); + thread::spawn(move || steal_tasks(steal)) + }; + + let th2 = thread::spawn(move || steal_tasks(steal)); + + let mut n = 0; + + while local.pop().is_some() { + n += 1; + } + + n += inject.borrow_mut().drain(..).count(); + + n += th1.join().unwrap(); + n += th2.join().unwrap(); + + assert_eq!(n, NUM_TASKS); + }); +} + +#[test] +fn chained_steal() { + loom::model(|| { + let mut stats = new_stats(); + let (s1, mut l1) = queue::local(); + let (s2, mut l2) = queue::local(); + let inject = RefCell::new(vec![]); + + // Load up some tasks + for _ in 0..4 { + let (task, _) = unowned(async {}); + l1.push_back_or_overflow(task, &inject, &mut stats); + + let (task, _) = unowned(async {}); + l2.push_back_or_overflow(task, &inject, &mut stats); + } + + // Spawn a task to steal from **our** queue + let th = thread::spawn(move || { + let mut stats = new_stats(); + let (_, mut local) = queue::local(); + s1.steal_into(&mut local, &mut stats); + + while local.pop().is_some() {} + }); + + // Drain our tasks, then attempt to steal + while l1.pop().is_some() {} + + s2.steal_into(&mut l1, &mut stats); + + th.join().unwrap(); + + while l1.pop().is_some() {} + while l2.pop().is_some() {} + }); +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread_alt/shutdown.rs temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread_alt/shutdown.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread_alt/shutdown.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread_alt/shutdown.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,28 @@ +use crate::runtime::{Builder, Handle}; + +#[test] +fn join_handle_cancel_on_shutdown() { + let mut builder = loom::model::Builder::new(); + builder.preemption_bound = Some(2); + builder.check(|| { + use futures::future::FutureExt; + + let rt = Builder::new_multi_thread() + .worker_threads(2) + .build() + .unwrap(); + + let handle = rt.block_on(async move { Handle::current() }); + + let jh1 = handle.spawn(futures::future::pending::<()>()); + + drop(rt); + + let jh2 = handle.spawn(futures::future::pending::<()>()); + + let err1 = jh1.now_or_never().unwrap().unwrap_err(); + let err2 = jh2.now_or_never().unwrap().unwrap_err(); + assert!(err1.is_cancelled()); + assert!(err2.is_cancelled()); + }); +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread_alt/yield_now.rs temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread_alt/yield_now.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread_alt/yield_now.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread_alt/yield_now.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,37 @@ +use crate::runtime::park; +use crate::runtime::tests::loom_oneshot as oneshot; +use crate::runtime::{self, Runtime}; + +#[test] +fn yield_calls_park_before_scheduling_again() { + // Don't need to check all permutations + let mut loom = loom::model::Builder::default(); + loom.max_permutations = Some(1); + loom.check(|| { + let rt = mk_runtime(2); + let (tx, rx) = oneshot::channel::<()>(); + + rt.spawn(async { + let tid = loom::thread::current().id(); + let park_count = park::current_thread_park_count(); + + crate::task::yield_now().await; + + if tid == loom::thread::current().id() { + let new_park_count = park::current_thread_park_count(); + assert_eq!(park_count + 1, new_park_count); + } + + tx.send(()); + }); + + rx.recv(); + }); +} + +fn mk_runtime(num_threads: usize) -> Runtime { + runtime::Builder::new_multi_thread() + .worker_threads(num_threads) + .build() + .unwrap() +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread_alt.rs temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread_alt.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread_alt.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread_alt.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,570 @@ +mod queue; +mod shutdown; +mod yield_now; + +/// Full runtime loom tests. These are heavy tests and take significant time to +/// run on CI. +/// +/// Use `LOOM_MAX_PREEMPTIONS=1` to do a "quick" run as a smoke test. +/// +/// In order to speed up the C +use crate::future::poll_fn; +use crate::runtime::tests::loom_oneshot as oneshot; +use crate::runtime::{self, Runtime}; +use crate::{spawn, task}; +use tokio_test::assert_ok; + +use loom::sync::atomic::{AtomicBool, AtomicUsize}; +use loom::sync::Arc; + +use pin_project_lite::pin_project; +use std::future::Future; +use std::pin::Pin; +use std::sync::atomic::Ordering::{Relaxed, SeqCst}; +use std::task::{Context, Poll}; + +mod atomic_take { + use loom::sync::atomic::AtomicBool; + use std::mem::MaybeUninit; + use std::sync::atomic::Ordering::SeqCst; + + pub(super) struct AtomicTake { + inner: MaybeUninit, + taken: AtomicBool, + } + + impl AtomicTake { + pub(super) fn new(value: T) -> Self { + Self { + inner: MaybeUninit::new(value), + taken: AtomicBool::new(false), + } + } + + pub(super) fn take(&self) -> Option { + // safety: Only one thread will see the boolean change from false + // to true, so that thread is able to take the value. + match self.taken.fetch_or(true, SeqCst) { + false => unsafe { Some(std::ptr::read(self.inner.as_ptr())) }, + true => None, + } + } + } + + impl Drop for AtomicTake { + fn drop(&mut self) { + drop(self.take()); + } + } +} + +#[derive(Clone)] +struct AtomicOneshot { + value: std::sync::Arc>>, +} +impl AtomicOneshot { + fn new(sender: oneshot::Sender) -> Self { + Self { + value: std::sync::Arc::new(atomic_take::AtomicTake::new(sender)), + } + } + + fn assert_send(&self, value: T) { + self.value.take().unwrap().send(value); + } +} + +/// Tests are divided into groups to make the runs faster on CI. +mod group_a { + use super::*; + + #[test] + fn racy_shutdown() { + loom::model(|| { + let pool = mk_pool(1); + + // here's the case we want to exercise: + // + // a worker that still has tasks in its local queue gets sent to the blocking pool (due to + // block_in_place). the blocking pool is shut down, so drops the worker. the worker's + // shutdown method never gets run. + // + // we do this by spawning two tasks on one worker, the first of which does block_in_place, + // and then immediately drop the pool. + + pool.spawn(track(async { + crate::task::block_in_place(|| {}); + })); + pool.spawn(track(async {})); + drop(pool); + }); + } + + #[test] + fn pool_multi_spawn() { + loom::model(|| { + let pool = mk_pool(2); + let c1 = Arc::new(AtomicUsize::new(0)); + + let (tx, rx) = oneshot::channel(); + let tx1 = AtomicOneshot::new(tx); + + // Spawn a task + let c2 = c1.clone(); + let tx2 = tx1.clone(); + pool.spawn(track(async move { + spawn(track(async move { + if 1 == c1.fetch_add(1, Relaxed) { + tx1.assert_send(()); + } + })); + })); + + // Spawn a second task + pool.spawn(track(async move { + spawn(track(async move { + if 1 == c2.fetch_add(1, Relaxed) { + tx2.assert_send(()); + } + })); + })); + + rx.recv(); + }); + } + + fn only_blocking_inner(first_pending: bool) { + loom::model(move || { + let pool = mk_pool(1); + let (block_tx, block_rx) = oneshot::channel(); + + pool.spawn(track(async move { + crate::task::block_in_place(move || { + block_tx.send(()); + }); + if first_pending { + task::yield_now().await + } + })); + + block_rx.recv(); + drop(pool); + }); + } + + #[test] + fn only_blocking_without_pending() { + only_blocking_inner(false) + } + + #[test] + fn only_blocking_with_pending() { + only_blocking_inner(true) + } +} + +mod group_b { + use super::*; + + fn blocking_and_regular_inner(first_pending: bool) { + const NUM: usize = 3; + loom::model(move || { + let pool = mk_pool(1); + let cnt = Arc::new(AtomicUsize::new(0)); + + let (block_tx, block_rx) = oneshot::channel(); + let (done_tx, done_rx) = oneshot::channel(); + let done_tx = AtomicOneshot::new(done_tx); + + pool.spawn(track(async move { + crate::task::block_in_place(move || { + block_tx.send(()); + }); + if first_pending { + task::yield_now().await + } + })); + + for _ in 0..NUM { + let cnt = cnt.clone(); + let done_tx = done_tx.clone(); + + pool.spawn(track(async move { + if NUM == cnt.fetch_add(1, Relaxed) + 1 { + done_tx.assert_send(()); + } + })); + } + + done_rx.recv(); + block_rx.recv(); + + drop(pool); + }); + } + + #[test] + #[ignore] // TODO: uncomment + fn blocking_and_regular_without_pending() { + blocking_and_regular_inner(false); + } + + #[test] + fn blocking_and_regular_with_pending() { + blocking_and_regular_inner(true); + } + + #[test] + fn join_output() { + loom::model(|| { + let rt = mk_pool(1); + + rt.block_on(async { + let t = crate::spawn(track(async { "hello" })); + + let out = assert_ok!(t.await); + assert_eq!("hello", out.into_inner()); + }); + }); + } + + #[test] + fn poll_drop_handle_then_drop() { + loom::model(|| { + let rt = mk_pool(1); + + rt.block_on(async move { + let mut t = crate::spawn(track(async { "hello" })); + + poll_fn(|cx| { + let _ = Pin::new(&mut t).poll(cx); + Poll::Ready(()) + }) + .await; + }); + }) + } + + #[test] + fn complete_block_on_under_load() { + loom::model(|| { + let pool = mk_pool(1); + + pool.block_on(async { + // Trigger a re-schedule + crate::spawn(track(async { + for _ in 0..2 { + task::yield_now().await; + } + })); + + gated2(true).await + }); + }); + } + + #[test] + fn shutdown_with_notification() { + use crate::sync::oneshot; + + loom::model(|| { + let rt = mk_pool(2); + let (done_tx, done_rx) = oneshot::channel::<()>(); + + rt.spawn(track(async move { + let (tx, rx) = oneshot::channel::<()>(); + + crate::spawn(async move { + crate::task::spawn_blocking(move || { + let _ = tx.send(()); + }); + + let _ = done_rx.await; + }); + + let _ = rx.await; + + let _ = done_tx.send(()); + })); + }); + } +} + +mod group_c { + use super::*; + + #[test] + fn pool_shutdown() { + loom::model(|| { + let pool = mk_pool(2); + + pool.spawn(track(async move { + gated2(true).await; + })); + + pool.spawn(track(async move { + gated2(false).await; + })); + + drop(pool); + }); + } + + #[test] + fn fill_local_queue() { + const NUM_SPAWNS: usize = 3; + loom::model(|| { + // using std versions here as it is just to control shutdown. + let cnt = std::sync::Arc::new(std::sync::atomic::AtomicUsize::new(0)); + let (tx, rx) = oneshot::channel(); + let tx = AtomicOneshot::new(tx); + + let pool = runtime::Builder::new_multi_thread_alt() + .worker_threads(2) + // Set the intervals to avoid tuning logic + .global_queue_interval(61) + .local_queue_capacity(1) + .build() + .unwrap(); + + for _ in 0..NUM_SPAWNS { + let cnt = cnt.clone(); + let tx = tx.clone(); + pool.spawn(track(async move { + if NUM_SPAWNS == 1 + cnt.fetch_add(1, Relaxed) { + tx.assert_send(()); + } + })); + } + + rx.recv(); + }); + } + + // This tests a very specific case that happened when a worker has no more + // available work to process because a peer is in the process of stealing + // (but does not finish stealing), and the worker happens to find more work + // from the injection queue *right* before parking. + #[test] + fn pool_concurrent_park_with_steal_with_inject() { + const DEPTH: usize = 4; + + let mut model = loom::model::Builder::new(); + model.expect_explicit_explore = true; + model.preemption_bound = Some(3); + + model.check(|| { + let pool = runtime::Builder::new_multi_thread_alt() + .worker_threads(2) + // Set the intervals to avoid tuning logic + .global_queue_interval(61) + .local_queue_capacity(DEPTH) + .build() + .unwrap(); + + // Use std types to avoid adding backtracking. + type Flag = std::sync::Arc; + let flag: Flag = Default::default(); + let flag1 = flag.clone(); + + let (tx1, rx1) = oneshot::channel(); + + async fn task(expect: isize, flag: Flag) { + if expect == flag.load(Relaxed) { + flag.store(expect + 1, Relaxed); + } else { + flag.store(-1, Relaxed); + loom::skip_branch(); + } + } + + pool.spawn(track(async move { + let flag = flag1; + // First 2 spawned task should be stolen + crate::spawn(task(1, flag.clone())); + crate::spawn(task(2, flag.clone())); + crate::spawn(async move { + task(0, flag.clone()).await; + tx1.send(()); + }); + + // One to fill the LIFO slot + crate::spawn(async move {}); + + loom::explore(); + })); + + rx1.recv(); + + if 1 == flag.load(Relaxed) { + loom::stop_exploring(); + + let (tx3, rx3) = oneshot::channel(); + pool.spawn(async move { + loom::skip_branch(); + tx3.send(()); + }); + + pool.spawn(async {}); + pool.spawn(async {}); + + loom::explore(); + + rx3.recv(); + } else { + loom::skip_branch(); + } + }); + } +} + +mod group_d { + use super::*; + + #[test] + fn pool_multi_notify() { + loom::model(|| { + let pool = mk_pool(2); + + let c1 = Arc::new(AtomicUsize::new(0)); + + let (done_tx, done_rx) = oneshot::channel(); + let done_tx1 = AtomicOneshot::new(done_tx); + let done_tx2 = done_tx1.clone(); + + // Spawn a task + let c2 = c1.clone(); + pool.spawn(track(async move { + multi_gated().await; + + if 1 == c1.fetch_add(1, Relaxed) { + done_tx1.assert_send(()); + } + })); + + // Spawn a second task + pool.spawn(track(async move { + multi_gated().await; + + if 1 == c2.fetch_add(1, Relaxed) { + done_tx2.assert_send(()); + } + })); + + done_rx.recv(); + }); + } +} + +fn mk_pool(num_threads: usize) -> Runtime { + runtime::Builder::new_multi_thread_alt() + .worker_threads(num_threads) + // Set the intervals to avoid tuning logic + .global_queue_interval(61) + .build() + .unwrap() +} + +fn gated2(thread: bool) -> impl Future { + use loom::thread; + use std::sync::Arc; + + let gate = Arc::new(AtomicBool::new(false)); + let mut fired = false; + + poll_fn(move |cx| { + if !fired { + let gate = gate.clone(); + let waker = cx.waker().clone(); + + if thread { + thread::spawn(move || { + gate.store(true, SeqCst); + waker.wake_by_ref(); + }); + } else { + spawn(track(async move { + gate.store(true, SeqCst); + waker.wake_by_ref(); + })); + } + + fired = true; + + return Poll::Pending; + } + + if gate.load(SeqCst) { + Poll::Ready("hello world") + } else { + Poll::Pending + } + }) +} + +async fn multi_gated() { + struct Gate { + waker: loom::future::AtomicWaker, + count: AtomicUsize, + } + + let gate = Arc::new(Gate { + waker: loom::future::AtomicWaker::new(), + count: AtomicUsize::new(0), + }); + + { + let gate = gate.clone(); + spawn(track(async move { + for i in 1..3 { + gate.count.store(i, SeqCst); + gate.waker.wake(); + } + })); + } + + poll_fn(move |cx| { + gate.waker.register_by_ref(cx.waker()); + if gate.count.load(SeqCst) < 2 { + Poll::Pending + } else { + Poll::Ready(()) + } + }) + .await; +} + +fn track(f: T) -> Track { + Track { + inner: f, + arc: Arc::new(()), + } +} + +pin_project! { + struct Track { + #[pin] + inner: T, + // Arc is used to hook into loom's leak tracking. + arc: Arc<()>, + } +} + +impl Track { + fn into_inner(self) -> T { + self.inner + } +} + +impl Future for Track { + type Output = Track; + + fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + let me = self.project(); + + Poll::Ready(Track { + inner: ready!(me.inner.poll(cx)), + arc: me.arc.clone(), + }) + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread.rs temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_multi_thread.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,462 @@ +mod queue; +mod shutdown; +mod yield_now; + +/// Full runtime loom tests. These are heavy tests and take significant time to +/// run on CI. +/// +/// Use `LOOM_MAX_PREEMPTIONS=1` to do a "quick" run as a smoke test. +/// +/// In order to speed up the C +use crate::future::poll_fn; +use crate::runtime::tests::loom_oneshot as oneshot; +use crate::runtime::{self, Runtime}; +use crate::{spawn, task}; +use tokio_test::assert_ok; + +use loom::sync::atomic::{AtomicBool, AtomicUsize}; +use loom::sync::Arc; + +use pin_project_lite::pin_project; +use std::future::Future; +use std::pin::Pin; +use std::sync::atomic::Ordering::{Relaxed, SeqCst}; +use std::task::{Context, Poll}; + +mod atomic_take { + use loom::sync::atomic::AtomicBool; + use std::mem::MaybeUninit; + use std::sync::atomic::Ordering::SeqCst; + + pub(super) struct AtomicTake { + inner: MaybeUninit, + taken: AtomicBool, + } + + impl AtomicTake { + pub(super) fn new(value: T) -> Self { + Self { + inner: MaybeUninit::new(value), + taken: AtomicBool::new(false), + } + } + + pub(super) fn take(&self) -> Option { + // safety: Only one thread will see the boolean change from false + // to true, so that thread is able to take the value. + match self.taken.fetch_or(true, SeqCst) { + false => unsafe { Some(std::ptr::read(self.inner.as_ptr())) }, + true => None, + } + } + } + + impl Drop for AtomicTake { + fn drop(&mut self) { + drop(self.take()); + } + } +} + +#[derive(Clone)] +struct AtomicOneshot { + value: std::sync::Arc>>, +} +impl AtomicOneshot { + fn new(sender: oneshot::Sender) -> Self { + Self { + value: std::sync::Arc::new(atomic_take::AtomicTake::new(sender)), + } + } + + fn assert_send(&self, value: T) { + self.value.take().unwrap().send(value); + } +} + +/// Tests are divided into groups to make the runs faster on CI. +mod group_a { + use super::*; + + #[test] + fn racy_shutdown() { + loom::model(|| { + let pool = mk_pool(1); + + // here's the case we want to exercise: + // + // a worker that still has tasks in its local queue gets sent to the blocking pool (due to + // block_in_place). the blocking pool is shut down, so drops the worker. the worker's + // shutdown method never gets run. + // + // we do this by spawning two tasks on one worker, the first of which does block_in_place, + // and then immediately drop the pool. + + pool.spawn(track(async { + crate::task::block_in_place(|| {}); + })); + pool.spawn(track(async {})); + drop(pool); + }); + } + + #[test] + fn pool_multi_spawn() { + loom::model(|| { + let pool = mk_pool(2); + let c1 = Arc::new(AtomicUsize::new(0)); + + let (tx, rx) = oneshot::channel(); + let tx1 = AtomicOneshot::new(tx); + + // Spawn a task + let c2 = c1.clone(); + let tx2 = tx1.clone(); + pool.spawn(track(async move { + spawn(track(async move { + if 1 == c1.fetch_add(1, Relaxed) { + tx1.assert_send(()); + } + })); + })); + + // Spawn a second task + pool.spawn(track(async move { + spawn(track(async move { + if 1 == c2.fetch_add(1, Relaxed) { + tx2.assert_send(()); + } + })); + })); + + rx.recv(); + }); + } + + fn only_blocking_inner(first_pending: bool) { + loom::model(move || { + let pool = mk_pool(1); + let (block_tx, block_rx) = oneshot::channel(); + + pool.spawn(track(async move { + crate::task::block_in_place(move || { + block_tx.send(()); + }); + if first_pending { + task::yield_now().await + } + })); + + block_rx.recv(); + drop(pool); + }); + } + + #[test] + fn only_blocking_without_pending() { + only_blocking_inner(false) + } + + #[test] + fn only_blocking_with_pending() { + only_blocking_inner(true) + } +} + +mod group_b { + use super::*; + + fn blocking_and_regular_inner(first_pending: bool) { + const NUM: usize = 3; + loom::model(move || { + let pool = mk_pool(1); + let cnt = Arc::new(AtomicUsize::new(0)); + + let (block_tx, block_rx) = oneshot::channel(); + let (done_tx, done_rx) = oneshot::channel(); + let done_tx = AtomicOneshot::new(done_tx); + + pool.spawn(track(async move { + crate::task::block_in_place(move || { + block_tx.send(()); + }); + if first_pending { + task::yield_now().await + } + })); + + for _ in 0..NUM { + let cnt = cnt.clone(); + let done_tx = done_tx.clone(); + + pool.spawn(track(async move { + if NUM == cnt.fetch_add(1, Relaxed) + 1 { + done_tx.assert_send(()); + } + })); + } + + done_rx.recv(); + block_rx.recv(); + + drop(pool); + }); + } + + #[test] + fn blocking_and_regular() { + blocking_and_regular_inner(false); + } + + #[test] + fn blocking_and_regular_with_pending() { + blocking_and_regular_inner(true); + } + + #[test] + fn join_output() { + loom::model(|| { + let rt = mk_pool(1); + + rt.block_on(async { + let t = crate::spawn(track(async { "hello" })); + + let out = assert_ok!(t.await); + assert_eq!("hello", out.into_inner()); + }); + }); + } + + #[test] + fn poll_drop_handle_then_drop() { + loom::model(|| { + let rt = mk_pool(1); + + rt.block_on(async move { + let mut t = crate::spawn(track(async { "hello" })); + + poll_fn(|cx| { + let _ = Pin::new(&mut t).poll(cx); + Poll::Ready(()) + }) + .await; + }); + }) + } + + #[test] + fn complete_block_on_under_load() { + loom::model(|| { + let pool = mk_pool(1); + + pool.block_on(async { + // Trigger a re-schedule + crate::spawn(track(async { + for _ in 0..2 { + task::yield_now().await; + } + })); + + gated2(true).await + }); + }); + } + + #[test] + fn shutdown_with_notification() { + use crate::sync::oneshot; + + loom::model(|| { + let rt = mk_pool(2); + let (done_tx, done_rx) = oneshot::channel::<()>(); + + rt.spawn(track(async move { + let (tx, rx) = oneshot::channel::<()>(); + + crate::spawn(async move { + crate::task::spawn_blocking(move || { + let _ = tx.send(()); + }); + + let _ = done_rx.await; + }); + + let _ = rx.await; + + let _ = done_tx.send(()); + })); + }); + } +} + +mod group_c { + use super::*; + + #[test] + fn pool_shutdown() { + loom::model(|| { + let pool = mk_pool(2); + + pool.spawn(track(async move { + gated2(true).await; + })); + + pool.spawn(track(async move { + gated2(false).await; + })); + + drop(pool); + }); + } +} + +mod group_d { + use super::*; + + #[test] + fn pool_multi_notify() { + loom::model(|| { + let pool = mk_pool(2); + + let c1 = Arc::new(AtomicUsize::new(0)); + + let (done_tx, done_rx) = oneshot::channel(); + let done_tx1 = AtomicOneshot::new(done_tx); + let done_tx2 = done_tx1.clone(); + + // Spawn a task + let c2 = c1.clone(); + pool.spawn(track(async move { + multi_gated().await; + + if 1 == c1.fetch_add(1, Relaxed) { + done_tx1.assert_send(()); + } + })); + + // Spawn a second task + pool.spawn(track(async move { + multi_gated().await; + + if 1 == c2.fetch_add(1, Relaxed) { + done_tx2.assert_send(()); + } + })); + + done_rx.recv(); + }); + } +} + +fn mk_pool(num_threads: usize) -> Runtime { + runtime::Builder::new_multi_thread() + .worker_threads(num_threads) + // Set the intervals to avoid tuning logic + .event_interval(2) + .build() + .unwrap() +} + +fn gated2(thread: bool) -> impl Future { + use loom::thread; + use std::sync::Arc; + + let gate = Arc::new(AtomicBool::new(false)); + let mut fired = false; + + poll_fn(move |cx| { + if !fired { + let gate = gate.clone(); + let waker = cx.waker().clone(); + + if thread { + thread::spawn(move || { + gate.store(true, SeqCst); + waker.wake_by_ref(); + }); + } else { + spawn(track(async move { + gate.store(true, SeqCst); + waker.wake_by_ref(); + })); + } + + fired = true; + + return Poll::Pending; + } + + if gate.load(SeqCst) { + Poll::Ready("hello world") + } else { + Poll::Pending + } + }) +} + +async fn multi_gated() { + struct Gate { + waker: loom::future::AtomicWaker, + count: AtomicUsize, + } + + let gate = Arc::new(Gate { + waker: loom::future::AtomicWaker::new(), + count: AtomicUsize::new(0), + }); + + { + let gate = gate.clone(); + spawn(track(async move { + for i in 1..3 { + gate.count.store(i, SeqCst); + gate.waker.wake(); + } + })); + } + + poll_fn(move |cx| { + gate.waker.register_by_ref(cx.waker()); + if gate.count.load(SeqCst) < 2 { + Poll::Pending + } else { + Poll::Ready(()) + } + }) + .await; +} + +fn track(f: T) -> Track { + Track { + inner: f, + arc: Arc::new(()), + } +} + +pin_project! { + struct Track { + #[pin] + inner: T, + // Arc is used to hook into loom's leak tracking. + arc: Arc<()>, + } +} + +impl Track { + fn into_inner(self) -> T { + self.inner + } +} + +impl Future for Track { + type Output = Track; + + fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + let me = self.project(); + + Poll::Ready(Track { + inner: ready!(me.inner.poll(cx)), + arc: me.arc.clone(), + }) + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_pool.rs temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_pool.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_pool.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_pool.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,458 +0,0 @@ -/// Full runtime loom tests. These are heavy tests and take significant time to -/// run on CI. -/// -/// Use `LOOM_MAX_PREEMPTIONS=1` to do a "quick" run as a smoke test. -/// -/// In order to speed up the C -use crate::future::poll_fn; -use crate::runtime::tests::loom_oneshot as oneshot; -use crate::runtime::{self, Runtime}; -use crate::{spawn, task}; -use tokio_test::assert_ok; - -use loom::sync::atomic::{AtomicBool, AtomicUsize}; -use loom::sync::Arc; - -use pin_project_lite::pin_project; -use std::future::Future; -use std::pin::Pin; -use std::sync::atomic::Ordering::{Relaxed, SeqCst}; -use std::task::{Context, Poll}; - -mod atomic_take { - use loom::sync::atomic::AtomicBool; - use std::mem::MaybeUninit; - use std::sync::atomic::Ordering::SeqCst; - - pub(super) struct AtomicTake { - inner: MaybeUninit, - taken: AtomicBool, - } - - impl AtomicTake { - pub(super) fn new(value: T) -> Self { - Self { - inner: MaybeUninit::new(value), - taken: AtomicBool::new(false), - } - } - - pub(super) fn take(&self) -> Option { - // safety: Only one thread will see the boolean change from false - // to true, so that thread is able to take the value. - match self.taken.fetch_or(true, SeqCst) { - false => unsafe { Some(std::ptr::read(self.inner.as_ptr())) }, - true => None, - } - } - } - - impl Drop for AtomicTake { - fn drop(&mut self) { - drop(self.take()); - } - } -} - -#[derive(Clone)] -struct AtomicOneshot { - value: std::sync::Arc>>, -} -impl AtomicOneshot { - fn new(sender: oneshot::Sender) -> Self { - Self { - value: std::sync::Arc::new(atomic_take::AtomicTake::new(sender)), - } - } - - fn assert_send(&self, value: T) { - self.value.take().unwrap().send(value); - } -} - -/// Tests are divided into groups to make the runs faster on CI. -mod group_a { - use super::*; - - #[test] - fn racy_shutdown() { - loom::model(|| { - let pool = mk_pool(1); - - // here's the case we want to exercise: - // - // a worker that still has tasks in its local queue gets sent to the blocking pool (due to - // block_in_place). the blocking pool is shut down, so drops the worker. the worker's - // shutdown method never gets run. - // - // we do this by spawning two tasks on one worker, the first of which does block_in_place, - // and then immediately drop the pool. - - pool.spawn(track(async { - crate::task::block_in_place(|| {}); - })); - pool.spawn(track(async {})); - drop(pool); - }); - } - - #[test] - fn pool_multi_spawn() { - loom::model(|| { - let pool = mk_pool(2); - let c1 = Arc::new(AtomicUsize::new(0)); - - let (tx, rx) = oneshot::channel(); - let tx1 = AtomicOneshot::new(tx); - - // Spawn a task - let c2 = c1.clone(); - let tx2 = tx1.clone(); - pool.spawn(track(async move { - spawn(track(async move { - if 1 == c1.fetch_add(1, Relaxed) { - tx1.assert_send(()); - } - })); - })); - - // Spawn a second task - pool.spawn(track(async move { - spawn(track(async move { - if 1 == c2.fetch_add(1, Relaxed) { - tx2.assert_send(()); - } - })); - })); - - rx.recv(); - }); - } - - fn only_blocking_inner(first_pending: bool) { - loom::model(move || { - let pool = mk_pool(1); - let (block_tx, block_rx) = oneshot::channel(); - - pool.spawn(track(async move { - crate::task::block_in_place(move || { - block_tx.send(()); - }); - if first_pending { - task::yield_now().await - } - })); - - block_rx.recv(); - drop(pool); - }); - } - - #[test] - fn only_blocking_without_pending() { - only_blocking_inner(false) - } - - #[test] - fn only_blocking_with_pending() { - only_blocking_inner(true) - } -} - -mod group_b { - use super::*; - - fn blocking_and_regular_inner(first_pending: bool) { - const NUM: usize = 3; - loom::model(move || { - let pool = mk_pool(1); - let cnt = Arc::new(AtomicUsize::new(0)); - - let (block_tx, block_rx) = oneshot::channel(); - let (done_tx, done_rx) = oneshot::channel(); - let done_tx = AtomicOneshot::new(done_tx); - - pool.spawn(track(async move { - crate::task::block_in_place(move || { - block_tx.send(()); - }); - if first_pending { - task::yield_now().await - } - })); - - for _ in 0..NUM { - let cnt = cnt.clone(); - let done_tx = done_tx.clone(); - - pool.spawn(track(async move { - if NUM == cnt.fetch_add(1, Relaxed) + 1 { - done_tx.assert_send(()); - } - })); - } - - done_rx.recv(); - block_rx.recv(); - - drop(pool); - }); - } - - #[test] - fn blocking_and_regular() { - blocking_and_regular_inner(false); - } - - #[test] - fn blocking_and_regular_with_pending() { - blocking_and_regular_inner(true); - } - - #[test] - fn join_output() { - loom::model(|| { - let rt = mk_pool(1); - - rt.block_on(async { - let t = crate::spawn(track(async { "hello" })); - - let out = assert_ok!(t.await); - assert_eq!("hello", out.into_inner()); - }); - }); - } - - #[test] - fn poll_drop_handle_then_drop() { - loom::model(|| { - let rt = mk_pool(1); - - rt.block_on(async move { - let mut t = crate::spawn(track(async { "hello" })); - - poll_fn(|cx| { - let _ = Pin::new(&mut t).poll(cx); - Poll::Ready(()) - }) - .await; - }); - }) - } - - #[test] - fn complete_block_on_under_load() { - loom::model(|| { - let pool = mk_pool(1); - - pool.block_on(async { - // Trigger a re-schedule - crate::spawn(track(async { - for _ in 0..2 { - task::yield_now().await; - } - })); - - gated2(true).await - }); - }); - } - - #[test] - fn shutdown_with_notification() { - use crate::sync::oneshot; - - loom::model(|| { - let rt = mk_pool(2); - let (done_tx, done_rx) = oneshot::channel::<()>(); - - rt.spawn(track(async move { - let (tx, rx) = oneshot::channel::<()>(); - - crate::spawn(async move { - crate::task::spawn_blocking(move || { - let _ = tx.send(()); - }); - - let _ = done_rx.await; - }); - - let _ = rx.await; - - let _ = done_tx.send(()); - })); - }); - } -} - -mod group_c { - use super::*; - - #[test] - fn pool_shutdown() { - loom::model(|| { - let pool = mk_pool(2); - - pool.spawn(track(async move { - gated2(true).await; - })); - - pool.spawn(track(async move { - gated2(false).await; - })); - - drop(pool); - }); - } -} - -mod group_d { - use super::*; - - #[test] - fn pool_multi_notify() { - loom::model(|| { - let pool = mk_pool(2); - - let c1 = Arc::new(AtomicUsize::new(0)); - - let (done_tx, done_rx) = oneshot::channel(); - let done_tx1 = AtomicOneshot::new(done_tx); - let done_tx2 = done_tx1.clone(); - - // Spawn a task - let c2 = c1.clone(); - pool.spawn(track(async move { - multi_gated().await; - - if 1 == c1.fetch_add(1, Relaxed) { - done_tx1.assert_send(()); - } - })); - - // Spawn a second task - pool.spawn(track(async move { - multi_gated().await; - - if 1 == c2.fetch_add(1, Relaxed) { - done_tx2.assert_send(()); - } - })); - - done_rx.recv(); - }); - } -} - -fn mk_pool(num_threads: usize) -> Runtime { - runtime::Builder::new_multi_thread() - .worker_threads(num_threads) - // Set the intervals to avoid tuning logic - .event_interval(2) - .build() - .unwrap() -} - -fn gated2(thread: bool) -> impl Future { - use loom::thread; - use std::sync::Arc; - - let gate = Arc::new(AtomicBool::new(false)); - let mut fired = false; - - poll_fn(move |cx| { - if !fired { - let gate = gate.clone(); - let waker = cx.waker().clone(); - - if thread { - thread::spawn(move || { - gate.store(true, SeqCst); - waker.wake_by_ref(); - }); - } else { - spawn(track(async move { - gate.store(true, SeqCst); - waker.wake_by_ref(); - })); - } - - fired = true; - - return Poll::Pending; - } - - if gate.load(SeqCst) { - Poll::Ready("hello world") - } else { - Poll::Pending - } - }) -} - -async fn multi_gated() { - struct Gate { - waker: loom::future::AtomicWaker, - count: AtomicUsize, - } - - let gate = Arc::new(Gate { - waker: loom::future::AtomicWaker::new(), - count: AtomicUsize::new(0), - }); - - { - let gate = gate.clone(); - spawn(track(async move { - for i in 1..3 { - gate.count.store(i, SeqCst); - gate.waker.wake(); - } - })); - } - - poll_fn(move |cx| { - if gate.count.load(SeqCst) < 2 { - gate.waker.register_by_ref(cx.waker()); - Poll::Pending - } else { - Poll::Ready(()) - } - }) - .await; -} - -fn track(f: T) -> Track { - Track { - inner: f, - arc: Arc::new(()), - } -} - -pin_project! { - struct Track { - #[pin] - inner: T, - // Arc is used to hook into loom's leak tracking. - arc: Arc<()>, - } -} - -impl Track { - fn into_inner(self) -> T { - self.inner - } -} - -impl Future for Track { - type Output = Track; - - fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - let me = self.project(); - - Poll::Ready(Track { - inner: ready!(me.inner.poll(cx)), - arc: me.arc.clone(), - }) - } -} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_queue.rs temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_queue.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_queue.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_queue.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,205 +0,0 @@ -use crate::runtime::scheduler::multi_thread::{queue, Stats}; -use crate::runtime::tests::NoopSchedule; - -use loom::thread; -use std::cell::RefCell; - -fn new_stats() -> Stats { - Stats::new(&crate::runtime::WorkerMetrics::new()) -} - -#[test] -fn basic() { - loom::model(|| { - let (steal, mut local) = queue::local(); - let inject = RefCell::new(vec![]); - let mut stats = new_stats(); - - let th = thread::spawn(move || { - let mut stats = new_stats(); - let (_, mut local) = queue::local(); - let mut n = 0; - - for _ in 0..3 { - if steal.steal_into(&mut local, &mut stats).is_some() { - n += 1; - } - - while local.pop().is_some() { - n += 1; - } - } - - n - }); - - let mut n = 0; - - for _ in 0..2 { - for _ in 0..2 { - let (task, _) = super::unowned(async {}); - local.push_back_or_overflow(task, &inject, &mut stats); - } - - if local.pop().is_some() { - n += 1; - } - - // Push another task - let (task, _) = super::unowned(async {}); - local.push_back_or_overflow(task, &inject, &mut stats); - - while local.pop().is_some() { - n += 1; - } - } - - n += inject.borrow_mut().drain(..).count(); - - n += th.join().unwrap(); - - assert_eq!(6, n); - }); -} - -#[test] -fn steal_overflow() { - loom::model(|| { - let (steal, mut local) = queue::local(); - let inject = RefCell::new(vec![]); - let mut stats = new_stats(); - - let th = thread::spawn(move || { - let mut stats = new_stats(); - let (_, mut local) = queue::local(); - let mut n = 0; - - if steal.steal_into(&mut local, &mut stats).is_some() { - n += 1; - } - - while local.pop().is_some() { - n += 1; - } - - n - }); - - let mut n = 0; - - // push a task, pop a task - let (task, _) = super::unowned(async {}); - local.push_back_or_overflow(task, &inject, &mut stats); - - if local.pop().is_some() { - n += 1; - } - - for _ in 0..6 { - let (task, _) = super::unowned(async {}); - local.push_back_or_overflow(task, &inject, &mut stats); - } - - n += th.join().unwrap(); - - while local.pop().is_some() { - n += 1; - } - - n += inject.borrow_mut().drain(..).count(); - - assert_eq!(7, n); - }); -} - -#[test] -fn multi_stealer() { - const NUM_TASKS: usize = 5; - - fn steal_tasks(steal: queue::Steal) -> usize { - let mut stats = new_stats(); - let (_, mut local) = queue::local(); - - if steal.steal_into(&mut local, &mut stats).is_none() { - return 0; - } - - let mut n = 1; - - while local.pop().is_some() { - n += 1; - } - - n - } - - loom::model(|| { - let (steal, mut local) = queue::local(); - let inject = RefCell::new(vec![]); - let mut stats = new_stats(); - - // Push work - for _ in 0..NUM_TASKS { - let (task, _) = super::unowned(async {}); - local.push_back_or_overflow(task, &inject, &mut stats); - } - - let th1 = { - let steal = steal.clone(); - thread::spawn(move || steal_tasks(steal)) - }; - - let th2 = thread::spawn(move || steal_tasks(steal)); - - let mut n = 0; - - while local.pop().is_some() { - n += 1; - } - - n += inject.borrow_mut().drain(..).count(); - - n += th1.join().unwrap(); - n += th2.join().unwrap(); - - assert_eq!(n, NUM_TASKS); - }); -} - -#[test] -fn chained_steal() { - loom::model(|| { - let mut stats = new_stats(); - let (s1, mut l1) = queue::local(); - let (s2, mut l2) = queue::local(); - let inject = RefCell::new(vec![]); - - // Load up some tasks - for _ in 0..4 { - let (task, _) = super::unowned(async {}); - l1.push_back_or_overflow(task, &inject, &mut stats); - - let (task, _) = super::unowned(async {}); - l2.push_back_or_overflow(task, &inject, &mut stats); - } - - // Spawn a task to steal from **our** queue - let th = thread::spawn(move || { - let mut stats = new_stats(); - let (_, mut local) = queue::local(); - s1.steal_into(&mut local, &mut stats); - - while local.pop().is_some() {} - }); - - // Drain our tasks, then attempt to steal - while l1.pop().is_some() {} - - s2.steal_into(&mut l1, &mut stats); - - th.join().unwrap(); - - while l1.pop().is_some() {} - while l2.pop().is_some() {} - }); -} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_shutdown_join.rs temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_shutdown_join.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_shutdown_join.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_shutdown_join.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -use crate::runtime::{Builder, Handle}; - -#[test] -fn join_handle_cancel_on_shutdown() { - let mut builder = loom::model::Builder::new(); - builder.preemption_bound = Some(2); - builder.check(|| { - use futures::future::FutureExt; - - let rt = Builder::new_multi_thread() - .worker_threads(2) - .build() - .unwrap(); - - let handle = rt.block_on(async move { Handle::current() }); - - let jh1 = handle.spawn(futures::future::pending::<()>()); - - drop(rt); - - let jh2 = handle.spawn(futures::future::pending::<()>()); - - let err1 = jh1.now_or_never().unwrap().unwrap_err(); - let err2 = jh2.now_or_never().unwrap().unwrap_err(); - assert!(err1.is_cancelled()); - assert!(err2.is_cancelled()); - }); -} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_yield.rs temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_yield.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_yield.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/tests/loom_yield.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -use crate::runtime::park; -use crate::runtime::tests::loom_oneshot as oneshot; -use crate::runtime::{self, Runtime}; - -#[test] -fn yield_calls_park_before_scheduling_again() { - // Don't need to check all permutations - let mut loom = loom::model::Builder::default(); - loom.max_permutations = Some(1); - loom.check(|| { - let rt = mk_runtime(2); - let (tx, rx) = oneshot::channel::<()>(); - - rt.spawn(async { - let tid = loom::thread::current().id(); - let park_count = park::current_thread_park_count(); - - crate::task::yield_now().await; - - if tid == loom::thread::current().id() { - let new_park_count = park::current_thread_park_count(); - assert_eq!(park_count + 1, new_park_count); - } - - tx.send(()); - }); - - rx.recv(); - }); -} - -fn mk_runtime(num_threads: usize) -> Runtime { - runtime::Builder::new_multi_thread() - .worker_threads(num_threads) - .build() - .unwrap() -} diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/tests/mod.rs temporalio-1.3.0/vendor/tokio/src/runtime/tests/mod.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/tests/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/tests/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -52,18 +52,16 @@ cfg_loom! { mod loom_blocking; - mod loom_current_thread_scheduler; + mod loom_current_thread; + mod loom_join_set; mod loom_local; + mod loom_multi_thread; + mod loom_multi_thread_alt; mod loom_oneshot; - mod loom_pool; - mod loom_queue; - mod loom_shutdown_join; - mod loom_join_set; - mod loom_yield; // Make sure debug assertions are enabled #[cfg(not(debug_assertions))] - compiler_error!("these tests require debug assertions to be enabled"); + compile_error!("these tests require debug assertions to be enabled"); } cfg_not_loom! { diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/tests/task.rs temporalio-1.3.0/vendor/tokio/src/runtime/tests/task.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/tests/task.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/tests/task.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,11 +1,10 @@ use crate::runtime::task::{self, unowned, Id, JoinHandle, OwnedTasks, Schedule, Task}; use crate::runtime::tests::NoopSchedule; -use crate::util::TryLock; use std::collections::VecDeque; use std::future::Future; use std::sync::atomic::{AtomicBool, Ordering}; -use std::sync::Arc; +use std::sync::{Arc, Mutex}; struct AssertDropHandle { is_dropped: Arc, @@ -243,7 +242,7 @@ let rt = Runtime(Arc::new(Inner { owned: OwnedTasks::new(), - core: TryLock::new(Core { + core: Mutex::new(Core { queue: VecDeque::new(), }), })); @@ -256,7 +255,7 @@ struct Runtime(Arc); struct Inner { - core: TryLock, + core: Mutex, owned: OwnedTasks, } @@ -264,7 +263,7 @@ queue: VecDeque>, } -static CURRENT: TryLock> = TryLock::new(None); +static CURRENT: Mutex> = Mutex::new(None); impl Runtime { fn spawn(&self, future: T) -> JoinHandle diff -Nru temporalio-1.3.0/vendor/tokio/src/runtime/time/tests/mod.rs temporalio-1.3.0/vendor/tokio/src/runtime/time/tests/mod.rs --- temporalio-1.3.0/vendor/tokio/src/runtime/time/tests/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/runtime/time/tests/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -#![cfg(not(tokio_wasi))] +#![cfg(not(target_os = "wasi"))] use std::{task::Context, time::Duration}; diff -Nru temporalio-1.3.0/vendor/tokio/src/sync/batch_semaphore.rs temporalio-1.3.0/vendor/tokio/src/sync/batch_semaphore.rs --- temporalio-1.3.0/vendor/tokio/src/sync/batch_semaphore.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/sync/batch_semaphore.rs 2023-10-30 19:40:00.000000000 +0000 @@ -178,14 +178,9 @@ /// Creates a new semaphore with the initial number of permits. /// /// Maximum number of permits on 32-bit platforms is `1<<29`. - /// - /// If the specified number of permits exceeds the maximum permit amount - /// Then the value will get clamped to the maximum number of permits. - #[cfg(all(feature = "parking_lot", not(all(loom, test))))] - pub(crate) const fn const_new(mut permits: usize) -> Self { - // NOTE: assertions and by extension panics are still being worked on: https://github.com/rust-lang/rust/issues/74925 - // currently we just clamp the permit count when it exceeds the max - permits &= Self::MAX_PERMITS; + #[cfg(not(all(loom, test)))] + pub(crate) const fn const_new(permits: usize) -> Self { + assert!(permits <= Self::MAX_PERMITS); Self { permits: AtomicUsize::new(permits << Self::PERMIT_SHIFT), @@ -195,6 +190,19 @@ }), #[cfg(all(tokio_unstable, feature = "tracing"))] resource_span: tracing::Span::none(), + } + } + + /// Creates a new closed semaphore with 0 permits. + pub(crate) fn new_closed() -> Self { + Self { + permits: AtomicUsize::new(Self::CLOSED), + waiters: Mutex::new(Waitlist { + queue: LinkedList::new(), + closed: true, + }), + #[cfg(all(tokio_unstable, feature = "tracing"))] + resource_span: tracing::Span::none(), } } diff -Nru temporalio-1.3.0/vendor/tokio/src/sync/broadcast.rs temporalio-1.3.0/vendor/tokio/src/sync/broadcast.rs --- temporalio-1.3.0/vendor/tokio/src/sync/broadcast.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/sync/broadcast.rs 2023-10-30 19:40:00.000000000 +0000 @@ -119,7 +119,7 @@ use crate::loom::cell::UnsafeCell; use crate::loom::sync::atomic::AtomicUsize; use crate::loom::sync::{Arc, Mutex, MutexGuard, RwLock, RwLockReadGuard}; -use crate::util::linked_list::{self, LinkedList}; +use crate::util::linked_list::{self, GuardedLinkedList, LinkedList}; use crate::util::WakeList; use std::fmt; @@ -366,6 +366,17 @@ _p: PhantomPinned, } +impl Waiter { + fn new() -> Self { + Self { + queued: false, + waker: None, + pointers: linked_list::Pointers::new(), + _p: PhantomPinned, + } + } +} + generate_addr_of_methods! { impl<> Waiter { unsafe fn addr_of_pointers(self: NonNull) -> NonNull> { @@ -444,42 +455,13 @@ /// This will panic if `capacity` is equal to `0` or larger /// than `usize::MAX / 2`. #[track_caller] -pub fn channel(mut capacity: usize) -> (Sender, Receiver) { - assert!(capacity > 0, "capacity is empty"); - assert!(capacity <= usize::MAX >> 1, "requested capacity too large"); - - // Round to a power of two - capacity = capacity.next_power_of_two(); - - let mut buffer = Vec::with_capacity(capacity); - - for i in 0..capacity { - buffer.push(RwLock::new(Slot { - rem: AtomicUsize::new(0), - pos: (i as u64).wrapping_sub(capacity as u64), - val: UnsafeCell::new(None), - })); - } - - let shared = Arc::new(Shared { - buffer: buffer.into_boxed_slice(), - mask: capacity - 1, - tail: Mutex::new(Tail { - pos: 0, - rx_cnt: 1, - closed: false, - waiters: LinkedList::new(), - }), - num_tx: AtomicUsize::new(1), - }); - +pub fn channel(capacity: usize) -> (Sender, Receiver) { + // SAFETY: In the line below we are creating one extra receiver, so there will be 1 in total. + let tx = unsafe { Sender::new_with_receiver_count(1, capacity) }; let rx = Receiver { - shared: shared.clone(), + shared: tx.shared.clone(), next: 0, }; - - let tx = Sender { shared }; - (tx, rx) } @@ -490,6 +472,65 @@ unsafe impl Sync for Receiver {} impl Sender { + /// Creates the sending-half of the [`broadcast`] channel. + /// + /// See documentation of [`broadcast::channel`] for errors when calling this function. + /// + /// [`broadcast`]: crate::sync::broadcast + /// [`broadcast::channel`]: crate::sync::broadcast + #[track_caller] + pub fn new(capacity: usize) -> Self { + // SAFETY: We don't create extra receivers, so there are 0. + unsafe { Self::new_with_receiver_count(0, capacity) } + } + + /// Creates the sending-half of the [`broadcast`](self) channel, and provide the receiver + /// count. + /// + /// See the documentation of [`broadcast::channel`](self::channel) for more errors when + /// calling this function. + /// + /// # Safety: + /// + /// The caller must ensure that the amount of receivers for this Sender is correct before + /// the channel functionalities are used, the count is zero by default, as this function + /// does not create any receivers by itself. + #[track_caller] + unsafe fn new_with_receiver_count(receiver_count: usize, mut capacity: usize) -> Self { + assert!(capacity > 0, "broadcast channel capacity cannot be zero"); + assert!( + capacity <= usize::MAX >> 1, + "broadcast channel capacity exceeded `usize::MAX / 2`" + ); + + // Round to a power of two + capacity = capacity.next_power_of_two(); + + let mut buffer = Vec::with_capacity(capacity); + + for i in 0..capacity { + buffer.push(RwLock::new(Slot { + rem: AtomicUsize::new(0), + pos: (i as u64).wrapping_sub(capacity as u64), + val: UnsafeCell::new(None), + })); + } + + let shared = Arc::new(Shared { + buffer: buffer.into_boxed_slice(), + mask: capacity - 1, + tail: Mutex::new(Tail { + pos: 0, + rx_cnt: receiver_count, + closed: false, + waiters: LinkedList::new(), + }), + num_tx: AtomicUsize::new(1), + }); + + Sender { shared } + } + /// Attempts to send a value to all active [`Receiver`] handles, returning /// it back if it could not be sent. /// @@ -501,7 +542,8 @@ /// /// On success, the number of subscribed [`Receiver`] handles is returned. /// This does not mean that this number of receivers will see the message as - /// a receiver may drop before receiving the message. + /// a receiver may drop or lag ([see lagging](self#lagging)) before receiving + /// the message. /// /// # Note /// @@ -786,12 +828,75 @@ Receiver { shared, next } } +/// List used in `Shared::notify_rx`. It wraps a guarded linked list +/// and gates the access to it on the `Shared.tail` mutex. It also empties +/// the list on drop. +struct WaitersList<'a, T> { + list: GuardedLinkedList::Target>, + is_empty: bool, + shared: &'a Shared, +} + +impl<'a, T> Drop for WaitersList<'a, T> { + fn drop(&mut self) { + // If the list is not empty, we unlink all waiters from it. + // We do not wake the waiters to avoid double panics. + if !self.is_empty { + let _lock_guard = self.shared.tail.lock(); + while self.list.pop_back().is_some() {} + } + } +} + +impl<'a, T> WaitersList<'a, T> { + fn new( + unguarded_list: LinkedList::Target>, + guard: Pin<&'a Waiter>, + shared: &'a Shared, + ) -> Self { + let guard_ptr = NonNull::from(guard.get_ref()); + let list = unguarded_list.into_guarded(guard_ptr); + WaitersList { + list, + is_empty: false, + shared, + } + } + + /// Removes the last element from the guarded list. Modifying this list + /// requires an exclusive access to the main list in `Notify`. + fn pop_back_locked(&mut self, _tail: &mut Tail) -> Option> { + let result = self.list.pop_back(); + if result.is_none() { + // Save information about emptiness to avoid waiting for lock + // in the destructor. + self.is_empty = true; + } + result + } +} + impl Shared { fn notify_rx<'a, 'b: 'a>(&'b self, mut tail: MutexGuard<'a, Tail>) { + // It is critical for `GuardedLinkedList` safety that the guard node is + // pinned in memory and is not dropped until the guarded list is dropped. + let guard = Waiter::new(); + pin!(guard); + + // We move all waiters to a secondary list. It uses a `GuardedLinkedList` + // underneath to allow every waiter to safely remove itself from it. + // + // * This list will be still guarded by the `waiters` lock. + // `NotifyWaitersList` wrapper makes sure we hold the lock to modify it. + // * This wrapper will empty the list on drop. It is critical for safety + // that we will not leave any list entry with a pointer to the local + // guard node after this function returns / panics. + let mut list = WaitersList::new(std::mem::take(&mut tail.waiters), guard.as_ref(), self); + let mut wakers = WakeList::new(); 'outer: loop { while wakers.can_push() { - match tail.waiters.pop_back() { + match list.pop_back_locked(&mut tail) { Some(mut waiter) => { // Safety: `tail` lock is still held. let waiter = unsafe { waiter.as_mut() }; @@ -1369,3 +1474,41 @@ } fn is_unpin() {} + +#[cfg(not(loom))] +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn receiver_count_on_sender_constructor() { + let sender = Sender::::new(16); + assert_eq!(sender.receiver_count(), 0); + + let rx_1 = sender.subscribe(); + assert_eq!(sender.receiver_count(), 1); + + let rx_2 = rx_1.resubscribe(); + assert_eq!(sender.receiver_count(), 2); + + let rx_3 = sender.subscribe(); + assert_eq!(sender.receiver_count(), 3); + + drop(rx_3); + drop(rx_1); + assert_eq!(sender.receiver_count(), 1); + + drop(rx_2); + assert_eq!(sender.receiver_count(), 0); + } + + #[cfg(not(loom))] + #[test] + fn receiver_count_on_channel_constructor() { + let (sender, rx) = channel::(16); + assert_eq!(sender.receiver_count(), 1); + + let _rx_2 = rx.resubscribe(); + assert_eq!(sender.receiver_count(), 2); + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/sync/mpsc/chan.rs temporalio-1.3.0/vendor/tokio/src/sync/mpsc/chan.rs --- temporalio-1.3.0/vendor/tokio/src/sync/mpsc/chan.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/sync/mpsc/chan.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,6 +6,7 @@ use crate::sync::mpsc::error::TryRecvError; use crate::sync::mpsc::{bounded, list, unbounded}; use crate::sync::notify::Notify; +use crate::util::cacheline::CachePadded; use std::fmt; use std::process; @@ -46,18 +47,18 @@ } pub(super) struct Chan { + /// Handle to the push half of the lock-free list. + tx: CachePadded>, + + /// Receiver waker. Notified when a value is pushed into the channel. + rx_waker: CachePadded, + /// Notifies all tasks listening for the receiver being dropped. notify_rx_closed: Notify, - /// Handle to the push half of the lock-free list. - tx: list::Tx, - /// Coordinates access to channel's capacity. semaphore: S, - /// Receiver waker. Notified when a value is pushed into the channel. - rx_waker: AtomicWaker, - /// Tracks the number of outstanding sender handles. /// /// When this drops to zero, the send half of the channel is closed. @@ -73,9 +74,9 @@ { fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { fmt.debug_struct("Chan") - .field("tx", &self.tx) + .field("tx", &*self.tx) .field("semaphore", &self.semaphore) - .field("rx_waker", &self.rx_waker) + .field("rx_waker", &*self.rx_waker) .field("tx_count", &self.tx_count) .field("rx_fields", &"...") .finish() @@ -108,9 +109,9 @@ let chan = Arc::new(Chan { notify_rx_closed: Notify::new(), - tx, + tx: CachePadded::new(tx), semaphore, - rx_waker: AtomicWaker::new(), + rx_waker: CachePadded::new(AtomicWaker::new()), tx_count: AtomicUsize::new(1), rx_fields: UnsafeCell::new(RxFields { list: rx, diff -Nru temporalio-1.3.0/vendor/tokio/src/sync/mpsc/error.rs temporalio-1.3.0/vendor/tokio/src/sync/mpsc/error.rs --- temporalio-1.3.0/vendor/tokio/src/sync/mpsc/error.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/sync/mpsc/error.rs 2023-10-30 19:40:00.000000000 +0000 @@ -19,7 +19,7 @@ } } -impl std::error::Error for SendError {} +impl Error for SendError {} // ===== TrySendError ===== diff -Nru temporalio-1.3.0/vendor/tokio/src/sync/mutex.rs temporalio-1.3.0/vendor/tokio/src/sync/mutex.rs --- temporalio-1.3.0/vendor/tokio/src/sync/mutex.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/sync/mutex.rs 2023-10-30 19:40:00.000000000 +0000 @@ -378,8 +378,7 @@ /// /// static LOCK: Mutex = Mutex::const_new(5); /// ``` - #[cfg(all(feature = "parking_lot", not(all(loom, test)),))] - #[cfg_attr(docsrs, doc(cfg(feature = "parking_lot")))] + #[cfg(not(all(loom, test)))] pub const fn const_new(t: T) -> Self where T: Sized, diff -Nru temporalio-1.3.0/vendor/tokio/src/sync/notify.rs temporalio-1.3.0/vendor/tokio/src/sync/notify.rs --- temporalio-1.3.0/vendor/tokio/src/sync/notify.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/sync/notify.rs 2023-10-30 19:40:00.000000000 +0000 @@ -443,8 +443,7 @@ /// /// static NOTIFY: Notify = Notify::const_new(); /// ``` - #[cfg(all(feature = "parking_lot", not(all(loom, test))))] - #[cfg_attr(docsrs, doc(cfg(feature = "parking_lot")))] + #[cfg(not(all(loom, test)))] pub const fn const_new() -> Notify { Notify { state: AtomicUsize::new(0), diff -Nru temporalio-1.3.0/vendor/tokio/src/sync/once_cell.rs temporalio-1.3.0/vendor/tokio/src/sync/once_cell.rs --- temporalio-1.3.0/vendor/tokio/src/sync/once_cell.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/sync/once_cell.rs 2023-10-30 19:40:00.000000000 +0000 @@ -114,12 +114,10 @@ impl From for OnceCell { fn from(value: T) -> Self { - let semaphore = Semaphore::new(0); - semaphore.close(); OnceCell { value_set: AtomicBool::new(true), value: UnsafeCell::new(MaybeUninit::new(value)), - semaphore, + semaphore: Semaphore::new_closed(), } } } @@ -139,6 +137,10 @@ /// If the `Option` is `None`, this is equivalent to `OnceCell::new`. /// /// [`OnceCell::new`]: crate::sync::OnceCell::new + // Once https://github.com/rust-lang/rust/issues/73255 lands + // and tokio MSRV is bumped to the rustc version with it stablised, + // we can made this function available in const context, + // by creating `Semaphore::const_new_closed`. pub fn new_with(value: Option) -> Self { if let Some(v) = value { OnceCell::from(v) @@ -171,8 +173,7 @@ /// assert_eq!(*result, 2); /// } /// ``` - #[cfg(all(feature = "parking_lot", not(all(loom, test))))] - #[cfg_attr(docsrs, doc(cfg(feature = "parking_lot")))] + #[cfg(not(all(loom, test)))] pub const fn const_new() -> Self { OnceCell { value_set: AtomicBool::new(false), diff -Nru temporalio-1.3.0/vendor/tokio/src/sync/rwlock.rs temporalio-1.3.0/vendor/tokio/src/sync/rwlock.rs --- temporalio-1.3.0/vendor/tokio/src/sync/rwlock.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/sync/rwlock.rs 2023-10-30 19:40:00.000000000 +0000 @@ -334,8 +334,7 @@ /// /// static LOCK: RwLock = RwLock::const_new(5); /// ``` - #[cfg(all(feature = "parking_lot", not(all(loom, test))))] - #[cfg_attr(docsrs, doc(cfg(feature = "parking_lot")))] + #[cfg(not(all(loom, test)))] pub const fn const_new(value: T) -> RwLock where T: Sized, @@ -359,13 +358,13 @@ /// /// static LOCK: RwLock = RwLock::const_with_max_readers(5, 1024); /// ``` - #[cfg(all(feature = "parking_lot", not(all(loom, test))))] - #[cfg_attr(docsrs, doc(cfg(feature = "parking_lot")))] - pub const fn const_with_max_readers(value: T, mut max_reads: u32) -> RwLock + #[cfg(not(all(loom, test)))] + pub const fn const_with_max_readers(value: T, max_reads: u32) -> RwLock where T: Sized, { - max_reads &= MAX_READS; + assert!(max_reads <= MAX_READS); + RwLock { mr: max_reads, c: UnsafeCell::new(value), diff -Nru temporalio-1.3.0/vendor/tokio/src/sync/semaphore.rs temporalio-1.3.0/vendor/tokio/src/sync/semaphore.rs --- temporalio-1.3.0/vendor/tokio/src/sync/semaphore.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/sync/semaphore.rs 2023-10-30 19:40:00.000000000 +0000 @@ -172,20 +172,22 @@ /// /// static SEM: Semaphore = Semaphore::const_new(10); /// ``` - /// - #[cfg(all(feature = "parking_lot", not(all(loom, test))))] - #[cfg_attr(docsrs, doc(cfg(feature = "parking_lot")))] + #[cfg(not(all(loom, test)))] pub const fn const_new(permits: usize) -> Self { - #[cfg(all(tokio_unstable, feature = "tracing"))] - return Self { + Self { ll_sem: ll::Semaphore::const_new(permits), + #[cfg(all(tokio_unstable, feature = "tracing"))] resource_span: tracing::Span::none(), - }; + } + } - #[cfg(any(not(tokio_unstable), not(feature = "tracing")))] - return Self { - ll_sem: ll::Semaphore::const_new(permits), - }; + /// Creates a new closed semaphore with 0 permits. + pub(crate) fn new_closed() -> Self { + Self { + ll_sem: ll::Semaphore::new_closed(), + #[cfg(all(tokio_unstable, feature = "tracing"))] + resource_span: tracing::Span::none(), + } } /// Returns the current number of available permits. diff -Nru temporalio-1.3.0/vendor/tokio/src/sync/tests/atomic_waker.rs temporalio-1.3.0/vendor/tokio/src/sync/tests/atomic_waker.rs --- temporalio-1.3.0/vendor/tokio/src/sync/tests/atomic_waker.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/sync/tests/atomic_waker.rs 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ impl AssertSend for Waker {} impl AssertSync for Waker {} -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as test; #[test] @@ -37,7 +37,7 @@ } #[test] -#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding +#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding fn atomic_waker_panic_safe() { use std::panic; use std::ptr; diff -Nru temporalio-1.3.0/vendor/tokio/src/sync/tests/notify.rs temporalio-1.3.0/vendor/tokio/src/sync/tests/notify.rs --- temporalio-1.3.0/vendor/tokio/src/sync/tests/notify.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/sync/tests/notify.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,9 @@ use crate::sync::Notify; use std::future::Future; -use std::mem::ManuallyDrop; use std::sync::Arc; use std::task::{Context, RawWaker, RawWakerVTable, Waker}; -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as test; #[test] @@ -12,16 +11,16 @@ const VTABLE: &RawWakerVTable = &RawWakerVTable::new(clone_w, wake, wake_by_ref, drop_w); unsafe fn clone_w(data: *const ()) -> RawWaker { - let arc = ManuallyDrop::new(Arc::::from_raw(data as *const Notify)); + let ptr = data as *const Notify; + Arc::::increment_strong_count(ptr); // Or some other arbitrary code that shouldn't be executed while the // Notify wait list is locked. - arc.notify_one(); - let _arc_clone: ManuallyDrop<_> = arc.clone(); + (*ptr).notify_one(); RawWaker::new(data, VTABLE) } unsafe fn drop_w(data: *const ()) { - let _ = Arc::::from_raw(data as *const Notify); + drop(Arc::::from_raw(data as *const Notify)); } unsafe fn wake(_data: *const ()) { @@ -102,7 +101,7 @@ } #[test] -#[cfg(not(tokio_wasm))] +#[cfg(not(target_family = "wasm"))] fn watch_test() { let rt = crate::runtime::Builder::new_current_thread() .build() diff -Nru temporalio-1.3.0/vendor/tokio/src/sync/tests/semaphore_batch.rs temporalio-1.3.0/vendor/tokio/src/sync/tests/semaphore_batch.rs --- temporalio-1.3.0/vendor/tokio/src/sync/tests/semaphore_batch.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/sync/tests/semaphore_batch.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,7 +3,7 @@ const MAX_PERMITS: usize = crate::sync::Semaphore::MAX_PERMITS; -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as test; #[test] @@ -177,7 +177,7 @@ #[test] #[should_panic] -#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding +#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding fn validates_max_permits() { Semaphore::new(MAX_PERMITS + 1); } diff -Nru temporalio-1.3.0/vendor/tokio/src/sync/watch.rs temporalio-1.3.0/vendor/tokio/src/sync/watch.rs --- temporalio-1.3.0/vendor/tokio/src/sync/watch.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/sync/watch.rs 2023-10-30 19:40:00.000000000 +0000 @@ -205,6 +205,7 @@ pub mod error { //! Watch error types. + use std::error::Error; use std::fmt; /// Error produced when sending a value fails. @@ -225,7 +226,7 @@ } } - impl std::error::Error for SendError {} + impl Error for SendError {} /// Error produced when receiving a change notification. #[derive(Debug, Clone)] @@ -239,7 +240,7 @@ } } - impl std::error::Error for RecvError {} + impl Error for RecvError {} } mod big_notify { diff -Nru temporalio-1.3.0/vendor/tokio/src/task/blocking.rs temporalio-1.3.0/vendor/tokio/src/task/blocking.rs --- temporalio-1.3.0/vendor/tokio/src/task/blocking.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/task/blocking.rs 2023-10-30 19:40:00.000000000 +0000 @@ -75,7 +75,7 @@ where F: FnOnce() -> R, { - crate::runtime::scheduler::multi_thread::block_in_place(f) + crate::runtime::scheduler::block_in_place(f) } } diff -Nru temporalio-1.3.0/vendor/tokio/src/task/local.rs temporalio-1.3.0/vendor/tokio/src/task/local.rs --- temporalio-1.3.0/vendor/tokio/src/task/local.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/task/local.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,8 @@ //! Runs `!Send` futures on the current thread. use crate::loom::cell::UnsafeCell; use crate::loom::sync::{Arc, Mutex}; +#[cfg(tokio_unstable)] +use crate::runtime; use crate::runtime::task::{self, JoinHandle, LocalOwnedTasks, Task}; use crate::runtime::{context, ThreadId}; use crate::sync::AtomicWaker; @@ -785,6 +787,30 @@ .unhandled_panic = behavior; self } + + /// Returns the [`Id`] of the current `LocalSet` runtime. + /// + /// # Examples + /// + /// ```rust + /// use tokio::task; + /// + /// #[tokio::main] + /// async fn main() { + /// let local_set = task::LocalSet::new(); + /// println!("Local set id: {}", local_set.id()); + /// } + /// ``` + /// + /// **Note**: This is an [unstable API][unstable]. The public API of this type + /// may break in 1.x releases. See [the documentation on unstable + /// features][unstable] for details. + /// + /// [unstable]: crate#unstable-features + /// [`Id`]: struct@crate::runtime::Id + pub fn id(&self) -> runtime::Id { + self.context.shared.local_state.owned.id.into() + } } } diff -Nru temporalio-1.3.0/vendor/tokio/src/task/task_local.rs temporalio-1.3.0/vendor/tokio/src/task/task_local.rs --- temporalio-1.3.0/vendor/tokio/src/task/task_local.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/task/task_local.rs 2023-10-30 19:40:00.000000000 +0000 @@ -48,7 +48,6 @@ } #[doc(hidden)] -#[cfg(not(tokio_no_const_thread_local))] #[macro_export] macro_rules! __task_local_inner { ($(#[$attr:meta])* $vis:vis $name:ident, $t:ty) => { @@ -59,22 +58,6 @@ } $crate::task::LocalKey { inner: __KEY } - }; - }; -} - -#[doc(hidden)] -#[cfg(tokio_no_const_thread_local)] -#[macro_export] -macro_rules! __task_local_inner { - ($(#[$attr:meta])* $vis:vis $name:ident, $t:ty) => { - $(#[$attr])* - $vis static $name: $crate::task::LocalKey<$t> = { - std::thread_local! { - static __KEY: std::cell::RefCell> = std::cell::RefCell::new(None); - } - - $crate::task::LocalKey { inner: __KEY } }; }; } diff -Nru temporalio-1.3.0/vendor/tokio/src/time/interval.rs temporalio-1.3.0/vendor/tokio/src/time/interval.rs --- temporalio-1.3.0/vendor/tokio/src/time/interval.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/time/interval.rs 2023-10-30 19:40:00.000000000 +0000 @@ -495,6 +495,8 @@ /// /// This method ignores [`MissedTickBehavior`] strategy. /// + /// This is equivalent to calling `reset_at(Instant::now() + period)`. + /// /// # Examples /// /// ``` @@ -521,6 +523,107 @@ self.delay.as_mut().reset(Instant::now() + self.period); } + /// Resets the interval immediately. + /// + /// This method ignores [`MissedTickBehavior`] strategy. + /// + /// This is equivalent to calling `reset_at(Instant::now())`. + /// + /// # Examples + /// + /// ``` + /// use tokio::time; + /// + /// use std::time::Duration; + /// + /// #[tokio::main] + /// async fn main() { + /// let mut interval = time::interval(Duration::from_millis(100)); + /// + /// interval.tick().await; + /// + /// time::sleep(Duration::from_millis(50)).await; + /// interval.reset_immediately(); + /// + /// interval.tick().await; + /// interval.tick().await; + /// + /// // approximately 150ms have elapsed. + /// } + /// ``` + pub fn reset_immediately(&mut self) { + self.delay.as_mut().reset(Instant::now()); + } + + /// Resets the interval after the specified [`std::time::Duration`]. + /// + /// This method ignores [`MissedTickBehavior`] strategy. + /// + /// This is equivalent to calling `reset_at(Instant::now() + after)`. + /// + /// # Examples + /// + /// ``` + /// use tokio::time; + /// + /// use std::time::Duration; + /// + /// #[tokio::main] + /// async fn main() { + /// let mut interval = time::interval(Duration::from_millis(100)); + /// interval.tick().await; + /// + /// time::sleep(Duration::from_millis(50)).await; + /// + /// let after = Duration::from_millis(20); + /// interval.reset_after(after); + /// + /// interval.tick().await; + /// interval.tick().await; + /// + /// // approximately 170ms have elapsed. + /// } + /// ``` + pub fn reset_after(&mut self, after: Duration) { + self.delay.as_mut().reset(Instant::now() + after); + } + + /// Resets the interval to a [`crate::time::Instant`] deadline. + /// + /// Sets the next tick to expire at the given instant. If the instant is in + /// the past, then the [`MissedTickBehavior`] strategy will be used to + /// catch up. If the instant is in the future, then the next tick will + /// complete at the given instant, even if that means that it will sleep for + /// longer than the duration of this [`Interval`]. If the [`Interval`] had + /// any missed ticks before calling this method, then those are discarded. + /// + /// # Examples + /// + /// ``` + /// use tokio::time::{self, Instant}; + /// + /// use std::time::Duration; + /// + /// #[tokio::main] + /// async fn main() { + /// let mut interval = time::interval(Duration::from_millis(100)); + /// interval.tick().await; + /// + /// time::sleep(Duration::from_millis(50)).await; + /// + /// let deadline = Instant::now() + Duration::from_millis(30); + /// interval.reset_at(deadline); + /// + /// interval.tick().await; + /// interval.tick().await; + /// + /// // approximately 180ms have elapsed. + /// } + /// ``` + pub fn reset_at(&mut self, deadline: Instant) { + self.delay.as_mut().reset(deadline); + } + /// Returns the [`MissedTickBehavior`] strategy currently being used. pub fn missed_tick_behavior(&self) -> MissedTickBehavior { self.missed_tick_behavior diff -Nru temporalio-1.3.0/vendor/tokio/src/time/sleep.rs temporalio-1.3.0/vendor/tokio/src/time/sleep.rs --- temporalio-1.3.0/vendor/tokio/src/time/sleep.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/time/sleep.rs 2023-10-30 19:40:00.000000000 +0000 @@ -220,6 +220,7 @@ /// [`select!`]: ../macro.select.html /// [`tokio::pin!`]: ../macro.pin.html // Alias for old name in 0.2 + #[project(!Unpin)] #[cfg_attr(docsrs, doc(alias = "Delay"))] #[derive(Debug)] #[must_use = "futures do nothing unless you `.await` or poll them"] diff -Nru temporalio-1.3.0/vendor/tokio/src/util/bit.rs temporalio-1.3.0/vendor/tokio/src/util/bit.rs --- temporalio-1.3.0/vendor/tokio/src/util/bit.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/util/bit.rs 2023-10-30 19:40:00.000000000 +0000 @@ -37,14 +37,6 @@ (base & !self.mask) | (value << self.shift) } - /// Packs the value with `base`, losing any bits of `value` that fit. - /// - /// If `value` is larger than the max value that can be represented by the - /// allotted width, the most significant bits are truncated. - pub(crate) fn pack_lossy(&self, value: usize, base: usize) -> usize { - self.pack(value & self.max_value(), base) - } - pub(crate) fn unpack(&self, src: usize) -> usize { unpack(src, self.mask, self.shift) } diff -Nru temporalio-1.3.0/vendor/tokio/src/util/cacheline.rs temporalio-1.3.0/vendor/tokio/src/util/cacheline.rs --- temporalio-1.3.0/vendor/tokio/src/util/cacheline.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/util/cacheline.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,95 @@ +#![cfg_attr(not(feature = "sync"), allow(dead_code, unreachable_pub))] +use std::ops::{Deref, DerefMut}; + +/// Pads and aligns a value to the length of a cache line. +#[derive(Clone, Copy, Default, Hash, PartialEq, Eq)] +// Starting from Intel's Sandy Bridge, spatial prefetcher is now pulling pairs of 64-byte cache +// lines at a time, so we have to align to 128 bytes rather than 64. +// +// Sources: +// - https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf +// - https://github.com/facebook/folly/blob/1b5288e6eea6df074758f877c849b6e73bbb9fbb/folly/lang/Align.h#L107 +// +// ARM's big.LITTLE architecture has asymmetric cores and "big" cores have 128-byte cache line size. +// +// Sources: +// - https://www.mono-project.com/news/2016/09/12/arm64-icache/ +// +// powerpc64 has 128-byte cache line size. +// +// Sources: +// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_ppc64x.go#L9 +#[cfg_attr( + any( + target_arch = "x86_64", + target_arch = "aarch64", + target_arch = "powerpc64", + ), + repr(align(128)) +)] +// arm, mips, mips64, and riscv64 have 32-byte cache line size. +// +// Sources: +// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_arm.go#L7 +// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_mips.go#L7 +// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_mipsle.go#L7 +// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_mips64x.go#L9 +// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_riscv64.go#L7 +#[cfg_attr( + any( + target_arch = "arm", + target_arch = "mips", + target_arch = "mips64", + target_arch = "riscv64", + ), + repr(align(32)) +)] +// s390x has 256-byte cache line size. +// +// Sources: +// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_s390x.go#L7 +#[cfg_attr(target_arch = "s390x", repr(align(256)))] +// x86 and wasm have 64-byte cache line size. +// +// Sources: +// - https://github.com/golang/go/blob/dda2991c2ea0c5914714469c4defc2562a907230/src/internal/cpu/cpu_x86.go#L9 +// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_wasm.go#L7 +// +// All others are assumed to have 64-byte cache line size. +#[cfg_attr( + not(any( + target_arch = "x86_64", + target_arch = "aarch64", + target_arch = "powerpc64", + target_arch = "arm", + target_arch = "mips", + target_arch = "mips64", + target_arch = "riscv64", + target_arch = "s390x", + )), + repr(align(64)) +)] +pub(crate) struct CachePadded { + value: T, +} + +impl CachePadded { + /// Pads and aligns a value to the length of a cache line. + pub(crate) fn new(value: T) -> CachePadded { + CachePadded:: { value } + } +} + +impl Deref for CachePadded { + type Target = T; + + fn deref(&self) -> &T { + &self.value + } +} + +impl DerefMut for CachePadded { + fn deref_mut(&mut self) -> &mut T { + &mut self.value + } +} diff -Nru temporalio-1.3.0/vendor/tokio/src/util/linked_list.rs temporalio-1.3.0/vendor/tokio/src/util/linked_list.rs --- temporalio-1.3.0/vendor/tokio/src/util/linked_list.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/util/linked_list.rs 2023-10-30 19:40:00.000000000 +0000 @@ -297,7 +297,7 @@ // ===== impl DrainFilter ===== -cfg_io_readiness! { +cfg_io_driver_impl! { pub(crate) struct DrainFilter<'a, T: Link, F> { list: &'a mut LinkedList, filter: F, @@ -307,7 +307,7 @@ impl LinkedList { pub(crate) fn drain_filter(&mut self, filter: F) -> DrainFilter<'_, T, F> where - F: FnMut(&mut T::Target) -> bool, + F: FnMut(&T::Target) -> bool, { let curr = self.head; DrainFilter { @@ -321,7 +321,7 @@ impl<'a, T, F> Iterator for DrainFilter<'a, T, F> where T: Link, - F: FnMut(&mut T::Target) -> bool, + F: FnMut(&T::Target) -> bool, { type Item = T::Handle; diff -Nru temporalio-1.3.0/vendor/tokio/src/util/mod.rs temporalio-1.3.0/vendor/tokio/src/util/mod.rs --- temporalio-1.3.0/vendor/tokio/src/util/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/util/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,17 +1,11 @@ cfg_io_driver! { pub(crate) mod bit; - pub(crate) mod slab; } #[cfg(feature = "rt")] pub(crate) mod atomic_cell; -#[cfg(any( - feature = "rt", - feature = "signal", - feature = "process", - tokio_no_const_mutex_new, -))] +#[cfg(any(feature = "rt", feature = "signal", feature = "process"))] pub(crate) mod once_cell; #[cfg(any( @@ -81,3 +75,5 @@ pub(crate) mod memchr; pub(crate) mod markers; + +pub(crate) mod cacheline; diff -Nru temporalio-1.3.0/vendor/tokio/src/util/slab.rs temporalio-1.3.0/vendor/tokio/src/util/slab.rs --- temporalio-1.3.0/vendor/tokio/src/util/slab.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/util/slab.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,854 +0,0 @@ -#![cfg_attr(not(feature = "rt"), allow(dead_code))] - -use crate::loom::cell::UnsafeCell; -use crate::loom::sync::atomic::{AtomicBool, AtomicUsize}; -use crate::loom::sync::{Arc, Mutex}; -use crate::util::bit; -use std::fmt; -use std::mem; -use std::ops; -use std::ptr; -use std::sync::atomic::Ordering::Relaxed; - -/// Amortized allocation for homogeneous data types. -/// -/// The slab pre-allocates chunks of memory to store values. It uses a similar -/// growing strategy as `Vec`. When new capacity is needed, the slab grows by -/// 2x. -/// -/// # Pages -/// -/// Unlike `Vec`, growing does not require moving existing elements. Instead of -/// being a continuous chunk of memory for all elements, `Slab` is an array of -/// arrays. The top-level array is an array of pages. Each page is 2x bigger -/// than the previous one. When the slab grows, a new page is allocated. -/// -/// Pages are lazily initialized. -/// -/// # Allocating -/// -/// When allocating an object, first previously used slots are reused. If no -/// previously used slot is available, a new slot is initialized in an existing -/// page. If all pages are full, then a new page is allocated. -/// -/// When an allocated object is released, it is pushed into it's page's free -/// list. Allocating scans all pages for a free slot. -/// -/// # Indexing -/// -/// The slab is able to index values using an address. Even when the indexed -/// object has been released, it is still safe to index. This is a key ability -/// for using the slab with the I/O driver. Addresses are registered with the -/// OS's selector and I/O resources can be released without synchronizing with -/// the OS. -/// -/// # Compaction -/// -/// `Slab::compact` will release pages that have been allocated but are no -/// longer used. This is done by scanning the pages and finding pages with no -/// allocated objects. These pages are then freed. -/// -/// # Synchronization -/// -/// The `Slab` structure is able to provide (mostly) unsynchronized reads to -/// values stored in the slab. Insertions and removals are synchronized. Reading -/// objects via `Ref` is fully unsynchronized. Indexing objects uses amortized -/// synchronization. -/// -pub(crate) struct Slab { - /// Array of pages. Each page is synchronized. - pages: [Arc>; NUM_PAGES], - - /// Caches the array pointer & number of initialized slots. - cached: [CachedPage; NUM_PAGES], -} - -/// Allocate values in the associated slab. -pub(crate) struct Allocator { - /// Pages in the slab. The first page has a capacity of 16 elements. Each - /// following page has double the capacity of the previous page. - /// - /// Each returned `Ref` holds a reference count to this `Arc`. - pages: [Arc>; NUM_PAGES], -} - -/// References a slot in the slab. Indexing a slot using an `Address` is memory -/// safe even if the slot has been released or the page has been deallocated. -/// However, it is not guaranteed that the slot has not been reused and is now -/// represents a different value. -/// -/// The I/O driver uses a counter to track the slot's generation. Once accessing -/// the slot, the generations are compared. If they match, the value matches the -/// address. -#[derive(Debug, Copy, Clone, PartialEq, Eq)] -pub(crate) struct Address(usize); - -/// An entry in the slab. -pub(crate) trait Entry: Default { - /// Resets the entry's value and track the generation. - fn reset(&self); -} - -/// A reference to a value stored in the slab. -pub(crate) struct Ref { - value: *const Value, -} - -/// Maximum number of pages a slab can contain. -const NUM_PAGES: usize = 19; - -/// Minimum number of slots a page can contain. -const PAGE_INITIAL_SIZE: usize = 32; -const PAGE_INDEX_SHIFT: u32 = PAGE_INITIAL_SIZE.trailing_zeros() + 1; - -/// A page in the slab. -struct Page { - /// Slots. - slots: Mutex>, - - // Number of slots currently being used. This is not guaranteed to be up to - // date and should only be used as a hint. - used: AtomicUsize, - - // Set to `true` when the page has been allocated. - allocated: AtomicBool, - - // The number of slots the page can hold. - len: usize, - - // Length of all previous pages combined. - prev_len: usize, -} - -struct CachedPage { - /// Pointer to the page's slots. - slots: *const Slot, - - /// Number of initialized slots. - init: usize, -} - -/// Page state. -struct Slots { - /// Slots. - slots: Vec>, - - head: usize, - - /// Number of slots currently in use. - used: usize, -} - -unsafe impl Sync for Page {} -unsafe impl Send for Page {} -unsafe impl Sync for CachedPage {} -unsafe impl Send for CachedPage {} -unsafe impl Sync for Ref {} -unsafe impl Send for Ref {} - -/// A slot in the slab. Contains slot-specific metadata. -/// -/// `#[repr(C)]` guarantees that the struct starts w/ `value`. We use pointer -/// math to map a value pointer to an index in the page. -#[repr(C)] -struct Slot { - /// Pointed to by `Ref`. - value: UnsafeCell>, - - /// Next entry in the free list. - next: u32, - - /// Makes miri happy by making mutable references not take exclusive access. - /// - /// Could probably also be fixed by replacing `slots` with a raw-pointer - /// based equivalent. - _pin: std::marker::PhantomPinned, -} - -/// Value paired with a reference to the page. -struct Value { - /// Value stored in the value. - value: T, - - /// Pointer to the page containing the slot. - /// - /// A raw pointer is used as this creates a ref cycle. - page: *const Page, -} - -impl Slab { - /// Create a new, empty, slab. - pub(crate) fn new() -> Slab { - // Initializing arrays is a bit annoying. Instead of manually writing - // out an array and every single entry, `Default::default()` is used to - // initialize the array, then the array is iterated and each value is - // initialized. - let mut slab = Slab { - pages: Default::default(), - cached: Default::default(), - }; - - let mut len = PAGE_INITIAL_SIZE; - let mut prev_len: usize = 0; - - for page in &mut slab.pages { - let page = Arc::get_mut(page).unwrap(); - page.len = len; - page.prev_len = prev_len; - len *= 2; - prev_len += page.len; - - // Ensure we don't exceed the max address space. - debug_assert!( - page.len - 1 + page.prev_len < (1 << 24), - "max = {:b}", - page.len - 1 + page.prev_len - ); - } - - slab - } - - /// Returns a new `Allocator`. - /// - /// The `Allocator` supports concurrent allocation of objects. - pub(crate) fn allocator(&self) -> Allocator { - Allocator { - pages: self.pages.clone(), - } - } - - /// Returns a reference to the value stored at the given address. - /// - /// `&mut self` is used as the call may update internal cached state. - pub(crate) fn get(&mut self, addr: Address) -> Option<&T> { - let page_idx = addr.page(); - let slot_idx = self.pages[page_idx].slot(addr); - - // If the address references a slot that was last seen as uninitialized, - // the `CachedPage` is updated. This requires acquiring the page lock - // and updating the slot pointer and initialized offset. - if self.cached[page_idx].init <= slot_idx { - self.cached[page_idx].refresh(&self.pages[page_idx]); - } - - // If the address **still** references an uninitialized slot, then the - // address is invalid and `None` is returned. - if self.cached[page_idx].init <= slot_idx { - return None; - } - - // Get a reference to the value. The lifetime of the returned reference - // is bound to `&self`. The only way to invalidate the underlying memory - // is to call `compact()`. The lifetimes prevent calling `compact()` - // while references to values are outstanding. - // - // The referenced data is never mutated. Only `&self` references are - // used and the data is `Sync`. - Some(self.cached[page_idx].get(slot_idx)) - } - - /// Calls the given function with a reference to each slot in the slab. The - /// slot may not be in-use. - /// - /// This is used by the I/O driver during the shutdown process to notify - /// each pending task. - pub(crate) fn for_each(&mut self, mut f: impl FnMut(&T)) { - for page_idx in 0..self.pages.len() { - // It is required to avoid holding the lock when calling the - // provided function. The function may attempt to acquire the lock - // itself. If we hold the lock here while calling `f`, a deadlock - // situation is possible. - // - // Instead of iterating the slots directly in `page`, which would - // require holding the lock, the cache is updated and the slots are - // iterated from the cache. - self.cached[page_idx].refresh(&self.pages[page_idx]); - - for slot_idx in 0..self.cached[page_idx].init { - f(self.cached[page_idx].get(slot_idx)); - } - } - } - - // Release memory back to the allocator. - // - // If pages are empty, the underlying memory is released back to the - // allocator. - pub(crate) fn compact(&mut self) { - // Iterate each page except the very first one. The very first page is - // never freed. - for (idx, page) in self.pages.iter().enumerate().skip(1) { - if page.used.load(Relaxed) != 0 || !page.allocated.load(Relaxed) { - // If the page has slots in use or the memory has not been - // allocated then it cannot be compacted. - continue; - } - - let mut slots = match page.slots.try_lock() { - Some(slots) => slots, - // If the lock cannot be acquired due to being held by another - // thread, don't try to compact the page. - _ => continue, - }; - - if slots.used > 0 || slots.slots.capacity() == 0 { - // The page is in use or it has not yet been allocated. Either - // way, there is no more work to do. - continue; - } - - page.allocated.store(false, Relaxed); - - // Remove the slots vector from the page. This is done so that the - // freeing process is done outside of the lock's critical section. - let vec = mem::take(&mut slots.slots); - slots.head = 0; - - // Drop the lock so we can drop the vector outside the lock below. - drop(slots); - - debug_assert!( - self.cached[idx].slots.is_null() || self.cached[idx].slots == vec.as_ptr(), - "cached = {:?}; actual = {:?}", - self.cached[idx].slots, - vec.as_ptr(), - ); - - // Clear cache - self.cached[idx].slots = ptr::null(); - self.cached[idx].init = 0; - - drop(vec); - } - } -} - -impl fmt::Debug for Slab { - fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { - debug(fmt, "Slab", &self.pages[..]) - } -} - -impl Allocator { - /// Allocate a new entry and return a handle to the entry. - /// - /// Scans pages from smallest to biggest, stopping when a slot is found. - /// Pages are allocated if necessary. - /// - /// Returns `None` if the slab is full. - pub(crate) fn allocate(&self) -> Option<(Address, Ref)> { - // Find the first available slot. - for page in &self.pages[..] { - if let Some((addr, val)) = Page::allocate(page) { - return Some((addr, val)); - } - } - - None - } -} - -impl fmt::Debug for Allocator { - fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { - debug(fmt, "slab::Allocator", &self.pages[..]) - } -} - -impl ops::Deref for Ref { - type Target = T; - - fn deref(&self) -> &T { - // Safety: `&mut` is never handed out to the underlying value. The page - // is not freed until all `Ref` values are dropped. - unsafe { &(*self.value).value } - } -} - -impl Drop for Ref { - fn drop(&mut self) { - // Safety: `&mut` is never handed out to the underlying value. The page - // is not freed until all `Ref` values are dropped. - let _ = unsafe { (*self.value).release() }; - } -} - -impl fmt::Debug for Ref { - fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { - (**self).fmt(fmt) - } -} - -impl Page { - // Allocates an object, returns the ref and address. - // - // `self: &Arc>` is avoided here as this would not work with the - // loom `Arc`. - fn allocate(me: &Arc>) -> Option<(Address, Ref)> { - // Before acquiring the lock, use the `used` hint. - if me.used.load(Relaxed) == me.len { - return None; - } - - // Allocating objects requires synchronization - let mut locked = me.slots.lock(); - - if locked.head < locked.slots.len() { - // Re-use an already initialized slot. - // - // Help out the borrow checker - let locked = &mut *locked; - - // Get the index of the slot at the head of the free stack. This is - // the slot that will be reused. - let idx = locked.head; - let slot = &locked.slots[idx]; - - // Update the free stack head to point to the next slot. - locked.head = slot.next as usize; - - // Increment the number of used slots - locked.used += 1; - me.used.store(locked.used, Relaxed); - - // Reset the slot - slot.value.with(|ptr| unsafe { (*ptr).value.reset() }); - - // Return a reference to the slot - Some((me.addr(idx), locked.gen_ref(idx, me))) - } else if me.len == locked.slots.len() { - // The page is full - None - } else { - // No initialized slots are available, but the page has more - // capacity. Initialize a new slot. - let idx = locked.slots.len(); - - if idx == 0 { - // The page has not yet been allocated. Allocate the storage for - // all page slots. - locked.slots.reserve_exact(me.len); - } - - // Initialize a new slot - locked.slots.push(Slot { - value: UnsafeCell::new(Value { - value: Default::default(), - page: Arc::as_ptr(me), - }), - next: 0, - _pin: std::marker::PhantomPinned, - }); - - // Increment the head to indicate the free stack is empty - locked.head += 1; - - // Increment the number of used slots - locked.used += 1; - me.used.store(locked.used, Relaxed); - me.allocated.store(true, Relaxed); - - debug_assert_eq!(locked.slots.len(), locked.head); - - Some((me.addr(idx), locked.gen_ref(idx, me))) - } - } -} - -impl Page { - /// Returns the slot index within the current page referenced by the given - /// address. - fn slot(&self, addr: Address) -> usize { - addr.0 - self.prev_len - } - - /// Returns the address for the given slot. - fn addr(&self, slot: usize) -> Address { - Address(slot + self.prev_len) - } -} - -impl Default for Page { - fn default() -> Page { - Page { - used: AtomicUsize::new(0), - allocated: AtomicBool::new(false), - slots: Mutex::new(Slots { - slots: Vec::new(), - head: 0, - used: 0, - }), - len: 0, - prev_len: 0, - } - } -} - -impl Page { - /// Release a slot into the page's free list. - fn release(&self, value: *const Value) { - let mut locked = self.slots.lock(); - - let idx = locked.index_for(value); - locked.slots[idx].next = locked.head as u32; - locked.head = idx; - locked.used -= 1; - - self.used.store(locked.used, Relaxed); - } -} - -impl CachedPage { - /// Refreshes the cache. - fn refresh(&mut self, page: &Page) { - let slots = page.slots.lock(); - - if !slots.slots.is_empty() { - self.slots = slots.slots.as_ptr(); - self.init = slots.slots.len(); - } - } - - /// Gets a value by index. - fn get(&self, idx: usize) -> &T { - assert!(idx < self.init); - - // Safety: Pages are allocated concurrently, but are only ever - // **deallocated** by `Slab`. `Slab` will always have a more - // conservative view on the state of the slot array. Once `CachedPage` - // sees a slot pointer and initialized offset, it will remain valid - // until `compact()` is called. The `compact()` function also updates - // `CachedPage`. - unsafe { - let slot = self.slots.add(idx); - let value = slot as *const Value; - - &(*value).value - } - } -} - -impl Default for CachedPage { - fn default() -> CachedPage { - CachedPage { - slots: ptr::null(), - init: 0, - } - } -} - -impl Slots { - /// Maps a slot pointer to an offset within the current page. - /// - /// The pointer math removes the `usize` index from the `Ref` struct, - /// shrinking the struct to a single pointer size. The contents of the - /// function is safe, the resulting `usize` is bounds checked before being - /// used. - /// - /// # Panics - /// - /// panics if the provided slot pointer is not contained by the page. - fn index_for(&self, slot: *const Value) -> usize { - use std::mem; - - assert_ne!(self.slots.capacity(), 0, "page is unallocated"); - - let base = self.slots.as_ptr() as usize; - let slot = slot as usize; - let width = mem::size_of::>(); - - assert!(slot >= base, "unexpected pointer"); - - let idx = (slot - base) / width; - assert!(idx < self.slots.len()); - - idx - } - - /// Generates a `Ref` for the slot at the given index. This involves bumping the page's ref count. - fn gen_ref(&self, idx: usize, page: &Arc>) -> Ref { - assert!(idx < self.slots.len()); - mem::forget(page.clone()); - - let vec_ptr = self.slots.as_ptr(); - let slot: *const Slot = unsafe { vec_ptr.add(idx) }; - let value: *const Value = slot as *const Value; - - Ref { value } - } -} - -impl Value { - /// Releases the slot, returning the `Arc>` logically owned by the ref. - fn release(&self) -> Arc> { - // Safety: called by `Ref`, which owns an `Arc>` instance. - let page = unsafe { Arc::from_raw(self.page) }; - page.release(self as *const _); - page - } -} - -impl Address { - fn page(self) -> usize { - // Since every page is twice as large as the previous page, and all page - // sizes are powers of two, we can determine the page index that - // contains a given address by shifting the address down by the smallest - // page size and looking at how many twos places necessary to represent - // that number, telling us what power of two page size it fits inside - // of. We can determine the number of twos places by counting the number - // of leading zeros (unused twos places) in the number's binary - // representation, and subtracting that count from the total number of - // bits in a word. - let slot_shifted = (self.0 + PAGE_INITIAL_SIZE) >> PAGE_INDEX_SHIFT; - (bit::pointer_width() - slot_shifted.leading_zeros()) as usize - } - - pub(crate) const fn as_usize(self) -> usize { - self.0 - } - - pub(crate) fn from_usize(src: usize) -> Address { - Address(src) - } -} - -fn debug(fmt: &mut fmt::Formatter<'_>, name: &str, pages: &[Arc>]) -> fmt::Result { - let mut capacity = 0; - let mut len = 0; - - for page in pages { - if page.allocated.load(Relaxed) { - capacity += page.len; - len += page.used.load(Relaxed); - } - } - - fmt.debug_struct(name) - .field("len", &len) - .field("capacity", &capacity) - .finish() -} - -#[cfg(all(test, not(loom)))] -mod test { - use super::*; - use std::sync::atomic::AtomicUsize; - use std::sync::atomic::Ordering::SeqCst; - - struct Foo { - cnt: AtomicUsize, - id: AtomicUsize, - } - - impl Default for Foo { - fn default() -> Foo { - Foo { - cnt: AtomicUsize::new(0), - id: AtomicUsize::new(0), - } - } - } - - impl Entry for Foo { - fn reset(&self) { - self.cnt.fetch_add(1, SeqCst); - } - } - - #[test] - fn insert_remove() { - let mut slab = Slab::::new(); - let alloc = slab.allocator(); - - let (addr1, foo1) = alloc.allocate().unwrap(); - foo1.id.store(1, SeqCst); - assert_eq!(0, foo1.cnt.load(SeqCst)); - - let (addr2, foo2) = alloc.allocate().unwrap(); - foo2.id.store(2, SeqCst); - assert_eq!(0, foo2.cnt.load(SeqCst)); - - assert_eq!(1, slab.get(addr1).unwrap().id.load(SeqCst)); - assert_eq!(2, slab.get(addr2).unwrap().id.load(SeqCst)); - - drop(foo1); - - assert_eq!(1, slab.get(addr1).unwrap().id.load(SeqCst)); - - let (addr3, foo3) = alloc.allocate().unwrap(); - assert_eq!(addr3, addr1); - assert_eq!(1, foo3.cnt.load(SeqCst)); - foo3.id.store(3, SeqCst); - assert_eq!(3, slab.get(addr3).unwrap().id.load(SeqCst)); - - drop(foo2); - drop(foo3); - - slab.compact(); - - // The first page is never released - assert!(slab.get(addr1).is_some()); - assert!(slab.get(addr2).is_some()); - assert!(slab.get(addr3).is_some()); - } - - #[test] - fn insert_many() { - const MANY: usize = normal_or_miri(10_000, 50); - - let mut slab = Slab::::new(); - let alloc = slab.allocator(); - let mut entries = vec![]; - - for i in 0..MANY { - let (addr, val) = alloc.allocate().unwrap(); - val.id.store(i, SeqCst); - entries.push((addr, val)); - } - - for (i, (addr, v)) in entries.iter().enumerate() { - assert_eq!(i, v.id.load(SeqCst)); - assert_eq!(i, slab.get(*addr).unwrap().id.load(SeqCst)); - } - - entries.clear(); - - for i in 0..MANY { - let (addr, val) = alloc.allocate().unwrap(); - val.id.store(MANY - i, SeqCst); - entries.push((addr, val)); - } - - for (i, (addr, v)) in entries.iter().enumerate() { - assert_eq!(MANY - i, v.id.load(SeqCst)); - assert_eq!(MANY - i, slab.get(*addr).unwrap().id.load(SeqCst)); - } - } - - #[test] - fn insert_drop_reverse() { - let mut slab = Slab::::new(); - let alloc = slab.allocator(); - let mut entries = vec![]; - - for i in 0..normal_or_miri(10_000, 100) { - let (addr, val) = alloc.allocate().unwrap(); - val.id.store(i, SeqCst); - entries.push((addr, val)); - } - - for _ in 0..10 { - // Drop 1000 in reverse - for _ in 0..normal_or_miri(1_000, 10) { - entries.pop(); - } - - // Check remaining - for (i, (addr, v)) in entries.iter().enumerate() { - assert_eq!(i, v.id.load(SeqCst)); - assert_eq!(i, slab.get(*addr).unwrap().id.load(SeqCst)); - } - } - } - - #[test] - fn no_compaction_if_page_still_in_use() { - let mut slab = Slab::::new(); - let alloc = slab.allocator(); - let mut entries1 = vec![]; - let mut entries2 = vec![]; - - for i in 0..normal_or_miri(10_000, 100) { - let (addr, val) = alloc.allocate().unwrap(); - val.id.store(i, SeqCst); - - if i % 2 == 0 { - entries1.push((addr, val, i)); - } else { - entries2.push(val); - } - } - - drop(entries2); - - for (addr, _, i) in &entries1 { - assert_eq!(*i, slab.get(*addr).unwrap().id.load(SeqCst)); - } - } - - const fn normal_or_miri(normal: usize, miri: usize) -> usize { - if cfg!(miri) { - miri - } else { - normal - } - } - - #[test] - fn compact_all() { - let mut slab = Slab::::new(); - let alloc = slab.allocator(); - let mut entries = vec![]; - - for _ in 0..2 { - entries.clear(); - - for i in 0..normal_or_miri(10_000, 100) { - let (addr, val) = alloc.allocate().unwrap(); - val.id.store(i, SeqCst); - - entries.push((addr, val)); - } - - let mut addrs = vec![]; - - for (addr, _) in entries.drain(..) { - addrs.push(addr); - } - - slab.compact(); - - // The first page is never freed - for addr in &addrs[PAGE_INITIAL_SIZE..] { - assert!(slab.get(*addr).is_none()); - } - } - } - - #[test] - fn issue_3014() { - let mut slab = Slab::::new(); - let alloc = slab.allocator(); - let mut entries = vec![]; - - for _ in 0..normal_or_miri(5, 2) { - entries.clear(); - - // Allocate a few pages + 1 - for i in 0..(32 + 64 + 128 + 1) { - let (addr, val) = alloc.allocate().unwrap(); - val.id.store(i, SeqCst); - - entries.push((addr, val, i)); - } - - for (addr, val, i) in &entries { - assert_eq!(*i, val.id.load(SeqCst)); - assert_eq!(*i, slab.get(*addr).unwrap().id.load(SeqCst)); - } - - // Release the last entry - entries.pop(); - - // Compact - slab.compact(); - - // Check all the addresses - - for (addr, val, i) in &entries { - assert_eq!(*i, val.id.load(SeqCst)); - assert_eq!(*i, slab.get(*addr).unwrap().id.load(SeqCst)); - } - } - } -} diff -Nru temporalio-1.3.0/vendor/tokio/src/util/trace.rs temporalio-1.3.0/vendor/tokio/src/util/trace.rs --- temporalio-1.3.0/vendor/tokio/src/util/trace.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/util/trace.rs 2023-10-30 19:40:00.000000000 +0000 @@ -11,18 +11,22 @@ #[inline] #[track_caller] pub(crate) fn task(task: F, kind: &'static str, name: Option<&str>, id: u64) -> Instrumented { + #[track_caller] + fn get_span(kind: &'static str, name: Option<&str>, id: u64) -> tracing::Span { + let location = std::panic::Location::caller(); + tracing::trace_span!( + target: "tokio::task", + "runtime.spawn", + %kind, + task.name = %name.unwrap_or_default(), + task.id = id, + loc.file = location.file(), + loc.line = location.line(), + loc.col = location.column(), + ) + } use tracing::instrument::Instrument; - let location = std::panic::Location::caller(); - let span = tracing::trace_span!( - target: "tokio::task", - "runtime.spawn", - %kind, - task.name = %name.unwrap_or_default(), - task.id = id, - loc.file = location.file(), - loc.line = location.line(), - loc.col = location.column(), - ); + let span = get_span(kind, name, id); task.instrument(span) } diff -Nru temporalio-1.3.0/vendor/tokio/src/util/wake.rs temporalio-1.3.0/vendor/tokio/src/util/wake.rs --- temporalio-1.3.0/vendor/tokio/src/util/wake.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/src/util/wake.rs 2023-10-30 19:40:00.000000000 +0000 @@ -50,16 +50,8 @@ ) } -unsafe fn inc_ref_count(data: *const ()) { - // Retain Arc, but don't touch refcount by wrapping in ManuallyDrop - let arc = ManuallyDrop::new(Arc::::from_raw(data as *const T)); - - // Now increase refcount, but don't drop new refcount either - let _arc_clone: ManuallyDrop<_> = arc.clone(); -} - unsafe fn clone_arc_raw(data: *const ()) -> RawWaker { - inc_ref_count::(data); + Arc::::increment_strong_count(data as *const T); RawWaker::new(data, waker_vtable::()) } diff -Nru temporalio-1.3.0/vendor/tokio/tests/async_send_sync.rs temporalio-1.3.0/vendor/tokio/tests/async_send_sync.rs --- temporalio-1.3.0/vendor/tokio/tests/async_send_sync.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/async_send_sync.rs 2023-10-30 19:40:00.000000000 +0000 @@ -130,7 +130,7 @@ macro_rules! cfg_not_wasi { ($($item:item)*) => { $( - #[cfg(not(tokio_wasi))] + #[cfg(not(target_os = "wasi"))] $item )* } diff -Nru temporalio-1.3.0/vendor/tokio/tests/buffered.rs temporalio-1.3.0/vendor/tokio/tests/buffered.rs --- temporalio-1.3.0/vendor/tokio/tests/buffered.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/buffered.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support bind() +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support bind() use tokio::net::TcpListener; use tokio_test::assert_ok; diff -Nru temporalio-1.3.0/vendor/tokio/tests/fs_canonicalize_dir.rs temporalio-1.3.0/vendor/tokio/tests/fs_canonicalize_dir.rs --- temporalio-1.3.0/vendor/tokio/tests/fs_canonicalize_dir.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/fs_canonicalize_dir.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations +#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations use tokio::fs; diff -Nru temporalio-1.3.0/vendor/tokio/tests/fs_copy.rs temporalio-1.3.0/vendor/tokio/tests/fs_copy.rs --- temporalio-1.3.0/vendor/tokio/tests/fs_copy.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/fs_copy.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations +#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations use tempfile::tempdir; use tokio::fs; diff -Nru temporalio-1.3.0/vendor/tokio/tests/fs_dir.rs temporalio-1.3.0/vendor/tokio/tests/fs_dir.rs --- temporalio-1.3.0/vendor/tokio/tests/fs_dir.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/fs_dir.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations +#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations use tokio::fs; use tokio_test::{assert_err, assert_ok}; diff -Nru temporalio-1.3.0/vendor/tokio/tests/fs_file.rs temporalio-1.3.0/vendor/tokio/tests/fs_file.rs --- temporalio-1.3.0/vendor/tokio/tests/fs_file.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/fs_file.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations +#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations use std::io::prelude::*; use tempfile::NamedTempFile; diff -Nru temporalio-1.3.0/vendor/tokio/tests/fs_link.rs temporalio-1.3.0/vendor/tokio/tests/fs_link.rs --- temporalio-1.3.0/vendor/tokio/tests/fs_link.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/fs_link.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations +#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations use tokio::fs; diff -Nru temporalio-1.3.0/vendor/tokio/tests/fs_open_options.rs temporalio-1.3.0/vendor/tokio/tests/fs_open_options.rs --- temporalio-1.3.0/vendor/tokio/tests/fs_open_options.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/fs_open_options.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations +#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations use std::io::Write; use tempfile::NamedTempFile; diff -Nru temporalio-1.3.0/vendor/tokio/tests/fs_open_options_windows.rs temporalio-1.3.0/vendor/tokio/tests/fs_open_options_windows.rs --- temporalio-1.3.0/vendor/tokio/tests/fs_open_options_windows.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/fs_open_options_windows.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations +#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations #![cfg(windows)] use tokio::fs::OpenOptions; diff -Nru temporalio-1.3.0/vendor/tokio/tests/fs_remove_dir_all.rs temporalio-1.3.0/vendor/tokio/tests/fs_remove_dir_all.rs --- temporalio-1.3.0/vendor/tokio/tests/fs_remove_dir_all.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/fs_remove_dir_all.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations +#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations use tempfile::tempdir; use tokio::fs; diff -Nru temporalio-1.3.0/vendor/tokio/tests/fs_remove_file.rs temporalio-1.3.0/vendor/tokio/tests/fs_remove_file.rs --- temporalio-1.3.0/vendor/tokio/tests/fs_remove_file.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/fs_remove_file.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations +#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations use tempfile::tempdir; use tokio::fs; diff -Nru temporalio-1.3.0/vendor/tokio/tests/fs_rename.rs temporalio-1.3.0/vendor/tokio/tests/fs_rename.rs --- temporalio-1.3.0/vendor/tokio/tests/fs_rename.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/fs_rename.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations +#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations use tempfile::tempdir; use tokio::fs; diff -Nru temporalio-1.3.0/vendor/tokio/tests/fs.rs temporalio-1.3.0/vendor/tokio/tests/fs.rs --- temporalio-1.3.0/vendor/tokio/tests/fs.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/fs.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support file operations +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support file operations use tokio::fs; use tokio_test::assert_ok; diff -Nru temporalio-1.3.0/vendor/tokio/tests/fs_symlink_dir_windows.rs temporalio-1.3.0/vendor/tokio/tests/fs_symlink_dir_windows.rs --- temporalio-1.3.0/vendor/tokio/tests/fs_symlink_dir_windows.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/fs_symlink_dir_windows.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations +#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations #![cfg(windows)] use tempfile::tempdir; diff -Nru temporalio-1.3.0/vendor/tokio/tests/fs_symlink_file_windows.rs temporalio-1.3.0/vendor/tokio/tests/fs_symlink_file_windows.rs --- temporalio-1.3.0/vendor/tokio/tests/fs_symlink_file_windows.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/fs_symlink_file_windows.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations +#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations #![cfg(windows)] use tempfile::tempdir; diff -Nru temporalio-1.3.0/vendor/tokio/tests/fs_try_exists.rs temporalio-1.3.0/vendor/tokio/tests/fs_try_exists.rs --- temporalio-1.3.0/vendor/tokio/tests/fs_try_exists.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/fs_try_exists.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations +#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations use tempfile::tempdir; use tokio::fs; diff -Nru temporalio-1.3.0/vendor/tokio/tests/io_async_fd.rs temporalio-1.3.0/vendor/tokio/tests/io_async_fd.rs --- temporalio-1.3.0/vendor/tokio/tests/io_async_fd.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/io_async_fd.rs 2023-10-30 19:40:00.000000000 +0000 @@ -685,3 +685,128 @@ guard.clear_ready_matching(Ready::WRITABLE); assert_eq!(guard.ready(), Ready::EMPTY); } + +#[tokio::test] +#[cfg(target_os = "linux")] +async fn await_error_readiness_timestamping() { + use std::net::{Ipv4Addr, SocketAddr}; + + use tokio::io::{Interest, Ready}; + + let address_a = SocketAddr::from((Ipv4Addr::LOCALHOST, 0)); + let address_b = SocketAddr::from((Ipv4Addr::LOCALHOST, 0)); + + let socket = std::net::UdpSocket::bind(address_a).unwrap(); + + socket.set_nonblocking(true).unwrap(); + + // configure send timestamps + configure_timestamping_socket(&socket).unwrap(); + + socket.connect(address_b).unwrap(); + + let fd = AsyncFd::new(socket).unwrap(); + + tokio::select! { + _ = fd.ready(Interest::ERROR) => panic!(), + _ = tokio::time::sleep(Duration::from_millis(10)) => {} + } + + let buf = b"hello there"; + fd.get_ref().send(buf).unwrap(); + + // the send timestamp should now be in the error queue + let guard = fd.ready(Interest::ERROR).await.unwrap(); + assert_eq!(guard.ready(), Ready::ERROR); +} + +#[cfg(target_os = "linux")] +fn configure_timestamping_socket(udp_socket: &std::net::UdpSocket) -> std::io::Result { + // enable software timestamping, and specifically software send timestamping + let options = libc::SOF_TIMESTAMPING_SOFTWARE | libc::SOF_TIMESTAMPING_TX_SOFTWARE; + + let res = unsafe { + libc::setsockopt( + udp_socket.as_raw_fd(), + libc::SOL_SOCKET, + libc::SO_TIMESTAMP, + &options as *const _ as *const libc::c_void, + std::mem::size_of_val(&options) as libc::socklen_t, + ) + }; + + if res == -1 { + Err(std::io::Error::last_os_error()) + } else { + Ok(res) + } +} + +#[tokio::test] +#[cfg(target_os = "linux")] +async fn await_error_readiness_invalid_address() { + use std::net::{Ipv4Addr, SocketAddr}; + use tokio::io::{Interest, Ready}; + + let socket_addr = SocketAddr::from((Ipv4Addr::LOCALHOST, 0)); + let socket = std::net::UdpSocket::bind(socket_addr).unwrap(); + let socket_fd = socket.as_raw_fd(); + + // Enable IP_RECVERR option to receive error messages + // https://man7.org/linux/man-pages/man7/ip.7.html has some extra information + let recv_err: libc::c_int = 1; + unsafe { + let res = libc::setsockopt( + socket.as_raw_fd(), + libc::SOL_IP, + libc::IP_RECVERR, + &recv_err as *const _ as *const libc::c_void, + std::mem::size_of_val(&recv_err) as libc::socklen_t, + ); + if res == -1 { + panic!("{:?}", std::io::Error::last_os_error()); + } + } + + // Spawn a separate thread for sending messages + tokio::spawn(async move { + // Set the destination address. This address is invalid in this context. the OS will notice + // that nobody is listening on port this port. Normally this is ignored (UDP is "fire and forget"), + // but because IP_RECVERR is enabled, the error will actually be reported to the sending socket + let mut dest_addr = + unsafe { std::mem::MaybeUninit::::zeroed().assume_init() }; + dest_addr.sin_family = libc::AF_INET as _; + // based on https://en.wikipedia.org/wiki/Ephemeral_port, we should pick a port number + // below 1024 to guarantee that other tests don't select this port by accident when they + // use port 0 to select an ephemeral port. + dest_addr.sin_port = 512u16.to_be(); // Destination port + + // Prepare the message data + let message = "Hello, Socket!"; + + // Prepare the message structure for sendmsg + let mut iov = libc::iovec { + iov_base: message.as_ptr() as *mut libc::c_void, + iov_len: message.len(), + }; + + // Prepare the destination address for the sendmsg call + let dest_sockaddr: *const libc::sockaddr = &dest_addr as *const _ as *const libc::sockaddr; + let dest_addrlen: libc::socklen_t = std::mem::size_of_val(&dest_addr) as libc::socklen_t; + + let mut msg: libc::msghdr = unsafe { std::mem::MaybeUninit::zeroed().assume_init() }; + msg.msg_name = dest_sockaddr as *mut libc::c_void; + msg.msg_namelen = dest_addrlen; + msg.msg_iov = &mut iov; + msg.msg_iovlen = 1; + + if unsafe { libc::sendmsg(socket_fd, &msg, 0) } == -1 { + Err(std::io::Error::last_os_error()).unwrap() + } + }); + + let fd = AsyncFd::new(socket).unwrap(); + + let guard = fd.ready(Interest::ERROR).await.unwrap(); + assert_eq!(guard.ready(), Ready::ERROR); +} diff -Nru temporalio-1.3.0/vendor/tokio/tests/io_copy_bidirectional.rs temporalio-1.3.0/vendor/tokio/tests/io_copy_bidirectional.rs --- temporalio-1.3.0/vendor/tokio/tests/io_copy_bidirectional.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/io_copy_bidirectional.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support bind() +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support bind() use std::time::Duration; use tokio::io::{self, copy_bidirectional, AsyncReadExt, AsyncWriteExt}; diff -Nru temporalio-1.3.0/vendor/tokio/tests/io_driver_drop.rs temporalio-1.3.0/vendor/tokio/tests/io_driver_drop.rs --- temporalio-1.3.0/vendor/tokio/tests/io_driver_drop.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/io_driver_drop.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support bind +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support bind use tokio::net::TcpListener; use tokio::runtime; diff -Nru temporalio-1.3.0/vendor/tokio/tests/io_driver.rs temporalio-1.3.0/vendor/tokio/tests/io_driver.rs --- temporalio-1.3.0/vendor/tokio/tests/io_driver.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/io_driver.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ #![warn(rust_2018_idioms)] // Wasi does not support panic recovery or threading -#![cfg(all(feature = "full", not(tokio_wasi)))] +#![cfg(all(feature = "full", not(target_os = "wasi")))] use tokio::net::TcpListener; use tokio::runtime; diff -Nru temporalio-1.3.0/vendor/tokio/tests/io_fill_buf.rs temporalio-1.3.0/vendor/tokio/tests/io_fill_buf.rs --- temporalio-1.3.0/vendor/tokio/tests/io_fill_buf.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/io_fill_buf.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support file operations +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support file operations use tempfile::NamedTempFile; use tokio::fs::File; diff -Nru temporalio-1.3.0/vendor/tokio/tests/io_panic.rs temporalio-1.3.0/vendor/tokio/tests/io_panic.rs --- temporalio-1.3.0/vendor/tokio/tests/io_panic.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/io_panic.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support panic recovery +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support panic recovery use std::task::{Context, Poll}; use std::{error::Error, pin::Pin}; diff -Nru temporalio-1.3.0/vendor/tokio/tests/io_read.rs temporalio-1.3.0/vendor/tokio/tests/io_read.rs --- temporalio-1.3.0/vendor/tokio/tests/io_read.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/io_read.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support panic recovery +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support panic recovery use tokio::io::{AsyncRead, AsyncReadExt, ReadBuf}; use tokio_test::assert_ok; diff -Nru temporalio-1.3.0/vendor/tokio/tests/io_split.rs temporalio-1.3.0/vendor/tokio/tests/io_split.rs --- temporalio-1.3.0/vendor/tokio/tests/io_split.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/io_split.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,9 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support panic recovery +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support panic recovery -use tokio::io::{split, AsyncRead, AsyncWrite, ReadBuf, ReadHalf, WriteHalf}; +use tokio::io::{ + split, AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt, ReadBuf, ReadHalf, WriteHalf, +}; use std::io; use std::pin::Pin; @@ -36,6 +38,18 @@ fn poll_shutdown(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll> { Poll::Ready(Ok(())) } + + fn poll_write_vectored( + self: Pin<&mut Self>, + _cx: &mut Context<'_>, + _bufs: &[io::IoSlice<'_>], + ) -> Poll> { + Poll::Ready(Ok(2)) + } + + fn is_write_vectored(&self) -> bool { + true + } } #[test] @@ -77,3 +91,26 @@ let (r, _) = split(RW); r.unsplit(w); } + +#[test] +fn method_delegation() { + let (mut r, mut w) = split(RW); + let mut buf = [0; 1]; + + tokio_test::block_on(async move { + assert_eq!(1, r.read(&mut buf).await.unwrap()); + assert_eq!(b'z', buf[0]); + + assert_eq!(1, w.write(&[b'x']).await.unwrap()); + assert_eq!( + 2, + w.write_vectored(&[io::IoSlice::new(&[b'x'])]) + .await + .unwrap() + ); + assert!(w.is_write_vectored()); + + assert!(w.flush().await.is_ok()); + assert!(w.shutdown().await.is_ok()); + }); +} diff -Nru temporalio-1.3.0/vendor/tokio/tests/io_take.rs temporalio-1.3.0/vendor/tokio/tests/io_take.rs --- temporalio-1.3.0/vendor/tokio/tests/io_take.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/io_take.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support panic recovery +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support panic recovery use std::pin::Pin; use std::task::{Context, Poll}; diff -Nru temporalio-1.3.0/vendor/tokio/tests/join_handle_panic.rs temporalio-1.3.0/vendor/tokio/tests/join_handle_panic.rs --- temporalio-1.3.0/vendor/tokio/tests/join_handle_panic.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/join_handle_panic.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support panic recovery +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support panic recovery struct PanicsOnDrop; diff -Nru temporalio-1.3.0/vendor/tokio/tests/macros_join.rs temporalio-1.3.0/vendor/tokio/tests/macros_join.rs --- temporalio-1.3.0/vendor/tokio/tests/macros_join.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/macros_join.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,13 +2,13 @@ #![allow(clippy::disallowed_names)] use std::sync::Arc; -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] #[cfg(target_pointer_width = "64")] use wasm_bindgen_test::wasm_bindgen_test as test; -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as maybe_tokio_test; -#[cfg(not(tokio_wasm_not_wasi))] +#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))] use tokio::test as maybe_tokio_test; use tokio::sync::{oneshot, Semaphore}; diff -Nru temporalio-1.3.0/vendor/tokio/tests/macros_pin.rs temporalio-1.3.0/vendor/tokio/tests/macros_pin.rs --- temporalio-1.3.0/vendor/tokio/tests/macros_pin.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/macros_pin.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,9 @@ #![cfg(feature = "macros")] -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as maybe_tokio_test; -#[cfg(not(tokio_wasm_not_wasi))] +#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))] use tokio::test as maybe_tokio_test; async fn one() {} diff -Nru temporalio-1.3.0/vendor/tokio/tests/macros_rename_test.rs temporalio-1.3.0/vendor/tokio/tests/macros_rename_test.rs --- temporalio-1.3.0/vendor/tokio/tests/macros_rename_test.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/macros_rename_test.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threading +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threading #[allow(unused_imports)] use std as tokio; diff -Nru temporalio-1.3.0/vendor/tokio/tests/macros_select.rs temporalio-1.3.0/vendor/tokio/tests/macros_select.rs --- temporalio-1.3.0/vendor/tokio/tests/macros_select.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/macros_select.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,10 @@ #![cfg(feature = "macros")] #![allow(clippy::disallowed_names)] -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as maybe_tokio_test; -#[cfg(not(tokio_wasm_not_wasi))] +#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))] use tokio::test as maybe_tokio_test; use tokio::sync::oneshot; @@ -633,7 +633,7 @@ } #[test] - #[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] + #[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] fn deterministic_select_multi_thread() { let seed = b"bytes used to generate seed"; let rt1 = tokio::runtime::Builder::new_multi_thread() diff -Nru temporalio-1.3.0/vendor/tokio/tests/macros_test.rs temporalio-1.3.0/vendor/tokio/tests/macros_test.rs --- temporalio-1.3.0/vendor/tokio/tests/macros_test.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/macros_test.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threading +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threading use tokio::test; diff -Nru temporalio-1.3.0/vendor/tokio/tests/macros_try_join.rs temporalio-1.3.0/vendor/tokio/tests/macros_try_join.rs --- temporalio-1.3.0/vendor/tokio/tests/macros_try_join.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/macros_try_join.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,10 +6,10 @@ use tokio::sync::{oneshot, Semaphore}; use tokio_test::{assert_pending, assert_ready, task}; -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as maybe_tokio_test; -#[cfg(not(tokio_wasm_not_wasi))] +#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))] use tokio::test as maybe_tokio_test; #[maybe_tokio_test] diff -Nru temporalio-1.3.0/vendor/tokio/tests/net_bind_resource.rs temporalio-1.3.0/vendor/tokio/tests/net_bind_resource.rs --- temporalio-1.3.0/vendor/tokio/tests/net_bind_resource.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/net_bind_resource.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support panic recovery or bind +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support panic recovery or bind use tokio::net::TcpListener; diff -Nru temporalio-1.3.0/vendor/tokio/tests/net_lookup_host.rs temporalio-1.3.0/vendor/tokio/tests/net_lookup_host.rs --- temporalio-1.3.0/vendor/tokio/tests/net_lookup_host.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/net_lookup_host.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support direct socket operations +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support direct socket operations use tokio::net; use tokio_test::assert_ok; diff -Nru temporalio-1.3.0/vendor/tokio/tests/net_panic.rs temporalio-1.3.0/vendor/tokio/tests/net_panic.rs --- temporalio-1.3.0/vendor/tokio/tests/net_panic.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/net_panic.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] +#![cfg(all(feature = "full", not(target_os = "wasi")))] use std::error::Error; use tokio::net::{TcpListener, TcpStream}; diff -Nru temporalio-1.3.0/vendor/tokio/tests/no_rt.rs temporalio-1.3.0/vendor/tokio/tests/no_rt.rs --- temporalio-1.3.0/vendor/tokio/tests/no_rt.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/no_rt.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support panic recovery +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support panic recovery use tokio::net::TcpStream; use tokio::sync::oneshot; diff -Nru temporalio-1.3.0/vendor/tokio/tests/process_smoke.rs temporalio-1.3.0/vendor/tokio/tests/process_smoke.rs --- temporalio-1.3.0/vendor/tokio/tests/process_smoke.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/process_smoke.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi cannot run system commands +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi cannot run system commands use tokio::process::Command; use tokio_test::assert_ok; diff -Nru temporalio-1.3.0/vendor/tokio/tests/_require_full.rs temporalio-1.3.0/vendor/tokio/tests/_require_full.rs --- temporalio-1.3.0/vendor/tokio/tests/_require_full.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/_require_full.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -#[cfg(not(any(feature = "full", tokio_wasm)))] +#[cfg(not(any(feature = "full", target_family = "wasm")))] compile_error!("run main Tokio tests with `--features full`"); // CI sets `--cfg tokio_no_parking_lot` when trying to run tests with diff -Nru temporalio-1.3.0/vendor/tokio/tests/rt_basic.rs temporalio-1.3.0/vendor/tokio/tests/rt_basic.rs --- temporalio-1.3.0/vendor/tokio/tests/rt_basic.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/rt_basic.rs 2023-10-30 19:40:00.000000000 +0000 @@ -178,7 +178,7 @@ } #[test] -#[cfg_attr(tokio_wasi, ignore = "Wasi does not support panic recovery")] +#[cfg_attr(target_os = "wasi", ignore = "Wasi does not support panic recovery")] #[should_panic(expected = "boom")] fn wake_in_drop_after_panic() { let (tx, rx) = oneshot::channel::<()>(); @@ -239,7 +239,7 @@ } } -#[cfg_attr(tokio_wasi, ignore = "WASI: std::thread::spawn not supported")] +#[cfg_attr(target_os = "wasi", ignore = "WASI: std::thread::spawn not supported")] #[test] fn spawn_remote() { let rt = rt(); @@ -276,7 +276,7 @@ } #[test] -#[cfg_attr(tokio_wasi, ignore = "Wasi does not support panic recovery")] +#[cfg_attr(target_os = "wasi", ignore = "Wasi does not support panic recovery")] #[should_panic( expected = "A Tokio 1.x context was found, but timers are disabled. Call `enable_time` on the runtime builder to enable timers." )] @@ -315,7 +315,7 @@ } #[test] - #[cfg_attr(tokio_wasi, ignore = "Wasi does not support panic recovery")] + #[cfg_attr(target_os = "wasi", ignore = "Wasi does not support panic recovery")] fn spawns_do_nothing() { use std::sync::Arc; @@ -344,7 +344,7 @@ } #[test] - #[cfg_attr(tokio_wasi, ignore = "Wasi does not support panic recovery")] + #[cfg_attr(target_os = "wasi", ignore = "Wasi does not support panic recovery")] fn shutdown_all_concurrent_block_on() { const N: usize = 2; use std::sync::{mpsc, Arc}; diff -Nru temporalio-1.3.0/vendor/tokio/tests/rt_common.rs temporalio-1.3.0/vendor/tokio/tests/rt_common.rs --- temporalio-1.3.0/vendor/tokio/tests/rt_common.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/rt_common.rs 2023-10-30 19:40:00.000000000 +0000 @@ -21,7 +21,7 @@ } } - #[cfg(not(tokio_wasi))] // Wasi doesn't support threads + #[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads mod threaded_scheduler_4_threads { $($t)* @@ -37,7 +37,7 @@ } } - #[cfg(not(tokio_wasi))] // Wasi doesn't support threads + #[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads mod threaded_scheduler_1_thread { $($t)* @@ -52,6 +52,40 @@ .into() } } + + #[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads + #[cfg(tokio_unstable)] + mod alt_threaded_scheduler_4_threads { + $($t)* + + const NUM_WORKERS: usize = 4; + + fn rt() -> Arc { + tokio::runtime::Builder::new_multi_thread() + .worker_threads(4) + .enable_all() + .build() + .unwrap() + .into() + } + } + + #[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads + #[cfg(tokio_unstable)] + mod alt_threaded_scheduler_1_thread { + $($t)* + + const NUM_WORKERS: usize = 1; + + fn rt() -> Arc { + tokio::runtime::Builder::new_multi_thread() + .worker_threads(1) + .enable_all() + .build() + .unwrap() + .into() + } + } } } @@ -810,7 +844,7 @@ assert_err!(rx.try_recv()); } - #[cfg_attr(tokio_wasi, ignore = "Wasi does not support threads or panic recovery")] + #[cfg_attr(target_os = "wasi", ignore = "Wasi does not support threads or panic recovery")] #[test] fn panic_in_task() { let rt = rt(); @@ -839,7 +873,7 @@ #[test] #[should_panic] - #[cfg_attr(tokio_wasi, ignore = "Wasi does not support panic recovery")] + #[cfg_attr(target_os = "wasi", ignore = "Wasi does not support panic recovery")] fn panic_in_block_on() { let rt = rt(); rt.block_on(async { panic!() }); @@ -916,10 +950,6 @@ #[test] fn wake_while_rt_is_dropping() { use tokio::sync::Barrier; - use core::sync::atomic::{AtomicBool, Ordering}; - - let drop_triggered = Arc::new(AtomicBool::new(false)); - let set_drop_triggered = drop_triggered.clone(); struct OnDrop(F); @@ -931,56 +961,39 @@ let (tx1, rx1) = oneshot::channel(); let (tx2, rx2) = oneshot::channel(); - let (tx3, rx3) = oneshot::channel(); - let barrier = Arc::new(Barrier::new(4)); + let barrier = Arc::new(Barrier::new(3)); let barrier1 = barrier.clone(); let barrier2 = barrier.clone(); - let barrier3 = barrier.clone(); let rt = rt(); rt.spawn(async move { + let mut tx2 = Some(tx2); + let _d = OnDrop(move || { + let _ = tx2.take().unwrap().send(()); + }); + // Ensure a waker gets stored in oneshot 1. let _ = tokio::join!(rx1, barrier1.wait()); - tx3.send(()).unwrap(); }); rt.spawn(async move { - let h1 = tokio::runtime::Handle::current(); - // When this task is dropped, we'll be "closing remotes". - // We spawn a new task that owns the `tx1`, to move its Drop - // out of here. - // - // Importantly, the oneshot 1 has a waker already stored, so - // the eventual drop here will try to re-schedule again. - let mut opt_tx1 = Some(tx1); + let mut tx1 = Some(tx1); let _d = OnDrop(move || { - let tx1 = opt_tx1.take().unwrap(); - h1.spawn(async move { - tx1.send(()).unwrap(); - }); - // Just a sanity check that this entire thing actually happened - set_drop_triggered.store(true, Ordering::Relaxed); + let _ = tx1.take().unwrap().send(()); }); - let _ = tokio::join!(rx2, barrier2.wait()); - }); - rt.spawn(async move { - let _ = tokio::join!(rx3, barrier3.wait()); - // We'll never get here, but once task 3 drops, this will - // force task 2 to re-schedule since it's waiting on oneshot 2. - tx2.send(()).unwrap(); + // Ensure a waker gets stored in oneshot 2. + let _ = tokio::join!(rx2, barrier2.wait()); }); // Wait until every oneshot channel has been polled. rt.block_on(barrier.wait()); - // Drop the rt + // Drop the rt. Regardless of which task is dropped first, its destructor will wake the + // other task. drop(rt); - - // Make sure that the spawn actually happened - assert!(drop_triggered.load(Ordering::Relaxed)); } #[cfg(not(target_os="wasi"))] // Wasi doesn't support UDP or bind() @@ -1069,7 +1082,7 @@ // See https://github.com/rust-lang/rust/issues/74875 #[test] #[cfg(not(windows))] - #[cfg_attr(tokio_wasi, ignore = "Wasi does not support threads")] + #[cfg_attr(target_os = "wasi", ignore = "Wasi does not support threads")] fn runtime_in_thread_local() { use std::cell::RefCell; use std::thread; @@ -1114,7 +1127,7 @@ tx.send(()).unwrap(); } - #[cfg(not(tokio_wasi))] // Wasi does not support bind + #[cfg(not(target_os = "wasi"))] // Wasi does not support bind #[test] fn local_set_block_on_socket() { let rt = rt(); @@ -1136,7 +1149,7 @@ }); } - #[cfg(not(tokio_wasi))] // Wasi does not support bind + #[cfg(not(target_os = "wasi"))] // Wasi does not support bind #[test] fn local_set_client_server_block_on() { let rt = rt(); @@ -1150,7 +1163,7 @@ assert_err!(rx.try_recv()); } - #[cfg(not(tokio_wasi))] // Wasi does not support bind + #[cfg(not(target_os = "wasi"))] // Wasi does not support bind async fn client_server_local(tx: mpsc::Sender<()>) { let server = assert_ok!(TcpListener::bind("127.0.0.1:0").await); diff -Nru temporalio-1.3.0/vendor/tokio/tests/rt_handle_block_on.rs temporalio-1.3.0/vendor/tokio/tests/rt_handle_block_on.rs --- temporalio-1.3.0/vendor/tokio/tests/rt_handle_block_on.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/rt_handle_block_on.rs 2023-10-30 19:40:00.000000000 +0000 @@ -10,10 +10,10 @@ use std::time::Duration; use tokio::runtime::{Handle, Runtime}; use tokio::sync::mpsc; -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] use tokio::{net, time}; -#[cfg(not(tokio_wasi))] // Wasi doesn't support threads +#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads macro_rules! multi_threaded_rt_test { ($($t:tt)*) => { mod threaded_scheduler_4_threads_only { @@ -46,7 +46,7 @@ } } -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] macro_rules! rt_test { ($($t:tt)*) => { mod current_thread_scheduler { @@ -126,7 +126,7 @@ }) } -#[cfg(not(tokio_wasi))] // Wasi doesn't support file operations or bind +#[cfg(not(target_os = "wasi"))] // Wasi doesn't support file operations or bind rt_test! { use tokio::fs; // ==== spawn blocking futures ====== @@ -419,7 +419,7 @@ } } -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] multi_threaded_rt_test! { #[cfg(unix)] #[test] @@ -482,7 +482,7 @@ // ==== utils ====== /// Create a new multi threaded runtime -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] fn new_multi_thread(n: usize) -> Runtime { tokio::runtime::Builder::new_multi_thread() .worker_threads(n) @@ -513,7 +513,7 @@ f(); } - #[cfg(not(tokio_wasi))] + #[cfg(not(target_os = "wasi"))] { let rt = new_multi_thread(1); let _enter = rt.enter(); @@ -523,7 +523,7 @@ f(); } - #[cfg(not(tokio_wasi))] + #[cfg(not(target_os = "wasi"))] { let rt = new_multi_thread(4); let _enter = rt.enter(); diff -Nru temporalio-1.3.0/vendor/tokio/tests/rt_handle.rs temporalio-1.3.0/vendor/tokio/tests/rt_handle.rs --- temporalio-1.3.0/vendor/tokio/tests/rt_handle.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/rt_handle.rs 2023-10-30 19:40:00.000000000 +0000 @@ -42,7 +42,7 @@ } #[test] -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] fn interleave_then_enter() { let _ = std::panic::catch_unwind(|| { let rt1 = rt(); @@ -60,6 +60,29 @@ let _enter = rt3.enter(); } +#[cfg(tokio_unstable)] +mod unstable { + use super::*; + + #[test] + fn runtime_id_is_same() { + let rt = rt(); + + let handle1 = rt.handle(); + let handle2 = rt.handle(); + + assert_eq!(handle1.id(), handle2.id()); + } + + #[test] + fn runtime_ids_different() { + let rt1 = rt(); + let rt2 = rt(); + + assert_ne!(rt1.handle().id(), rt2.handle().id()); + } +} + fn rt() -> Runtime { tokio::runtime::Builder::new_current_thread() .build() diff -Nru temporalio-1.3.0/vendor/tokio/tests/rt_metrics.rs temporalio-1.3.0/vendor/tokio/tests/rt_metrics.rs --- temporalio-1.3.0/vendor/tokio/tests/rt_metrics.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/rt_metrics.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", tokio_unstable, not(tokio_wasi)))] +#![cfg(all(feature = "full", tokio_unstable, not(target_os = "wasi")))] use std::future::Future; use std::sync::{Arc, Mutex}; @@ -215,18 +215,25 @@ } #[test] -fn worker_poll_count() { +fn worker_poll_count_and_time() { const N: u64 = 5; + async fn task() { + // Sync sleep + std::thread::sleep(std::time::Duration::from_micros(10)); + } + let rt = current_thread(); let metrics = rt.metrics(); rt.block_on(async { for _ in 0..N { - tokio::spawn(async {}).await.unwrap(); + tokio::spawn(task()).await.unwrap(); } }); drop(rt); assert_eq!(N, metrics.worker_poll_count(0)); + // Not currently supported for current-thread runtime + assert_eq!(Duration::default(), metrics.worker_mean_poll_time(0)); // Does not populate the histogram assert!(!metrics.poll_count_histogram_enabled()); @@ -238,7 +245,7 @@ let metrics = rt.metrics(); rt.block_on(async { for _ in 0..N { - tokio::spawn(async {}).await.unwrap(); + tokio::spawn(task()).await.unwrap(); } }); drop(rt); @@ -249,6 +256,12 @@ assert_eq!(N, n); + let n: Duration = (0..metrics.num_workers()) + .map(|i| metrics.worker_mean_poll_time(i)) + .sum(); + + assert!(n > Duration::default()); + // Does not populate the histogram assert!(!metrics.poll_count_histogram_enabled()); for n in 0..metrics.num_workers() { diff -Nru temporalio-1.3.0/vendor/tokio/tests/rt_panic.rs temporalio-1.3.0/vendor/tokio/tests/rt_panic.rs --- temporalio-1.3.0/vendor/tokio/tests/rt_panic.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/rt_panic.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ #![warn(rust_2018_idioms)] #![cfg(feature = "full")] -#![cfg(not(tokio_wasi))] // Wasi doesn't support panic recovery +#![cfg(not(target_os = "wasi"))] // Wasi doesn't support panic recovery use futures::future; use std::error::Error; diff -Nru temporalio-1.3.0/vendor/tokio/tests/rt_threaded_alt.rs temporalio-1.3.0/vendor/tokio/tests/rt_threaded_alt.rs --- temporalio-1.3.0/vendor/tokio/tests/rt_threaded_alt.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/rt_threaded_alt.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,717 @@ +#![warn(rust_2018_idioms)] +#![cfg(all(feature = "full", not(target_os = "wasi")))] +#![cfg(tokio_unstable)] + +use tokio::io::{AsyncReadExt, AsyncWriteExt}; +use tokio::net::{TcpListener, TcpStream}; +use tokio::runtime; +use tokio::sync::oneshot; +use tokio_test::{assert_err, assert_ok}; + +use futures::future::poll_fn; +use std::future::Future; +use std::pin::Pin; +use std::sync::atomic::AtomicUsize; +use std::sync::atomic::Ordering::Relaxed; +use std::sync::{mpsc, Arc, Mutex}; +use std::task::{Context, Poll, Waker}; + +macro_rules! cfg_metrics { + ($($t:tt)*) => { + #[cfg(tokio_unstable)] + { + $( $t )* + } + } +} + +#[test] +fn single_thread() { + // No panic when starting a runtime w/ a single thread + let _ = runtime::Builder::new_multi_thread_alt() + .enable_all() + .worker_threads(1) + .build() + .unwrap(); +} + +#[test] +fn many_oneshot_futures() { + // used for notifying the main thread + const NUM: usize = 1_000; + + for _ in 0..5 { + let (tx, rx) = mpsc::channel(); + + let rt = rt(); + let cnt = Arc::new(AtomicUsize::new(0)); + + for _ in 0..NUM { + let cnt = cnt.clone(); + let tx = tx.clone(); + + rt.spawn(async move { + let num = cnt.fetch_add(1, Relaxed) + 1; + + if num == NUM { + tx.send(()).unwrap(); + } + }); + } + + rx.recv().unwrap(); + + // Wait for the pool to shutdown + drop(rt); + } +} + +#[test] +fn spawn_two() { + let rt = rt(); + + let out = rt.block_on(async { + let (tx, rx) = oneshot::channel(); + + tokio::spawn(async move { + tokio::spawn(async move { + tx.send("ZOMG").unwrap(); + }); + }); + + assert_ok!(rx.await) + }); + + assert_eq!(out, "ZOMG"); + + cfg_metrics! { + let metrics = rt.metrics(); + drop(rt); + assert_eq!(1, metrics.remote_schedule_count()); + + let mut local = 0; + for i in 0..metrics.num_workers() { + local += metrics.worker_local_schedule_count(i); + } + + assert_eq!(1, local); + } +} + +#[test] +fn many_multishot_futures() { + const CHAIN: usize = 200; + const CYCLES: usize = 5; + const TRACKS: usize = 50; + + for _ in 0..50 { + let rt = rt(); + let mut start_txs = Vec::with_capacity(TRACKS); + let mut final_rxs = Vec::with_capacity(TRACKS); + + for _ in 0..TRACKS { + let (start_tx, mut chain_rx) = tokio::sync::mpsc::channel(10); + + for _ in 0..CHAIN { + let (next_tx, next_rx) = tokio::sync::mpsc::channel(10); + + // Forward all the messages + rt.spawn(async move { + while let Some(v) = chain_rx.recv().await { + next_tx.send(v).await.unwrap(); + } + }); + + chain_rx = next_rx; + } + + // This final task cycles if needed + let (final_tx, final_rx) = tokio::sync::mpsc::channel(10); + let cycle_tx = start_tx.clone(); + let mut rem = CYCLES; + + rt.spawn(async move { + for _ in 0..CYCLES { + let msg = chain_rx.recv().await.unwrap(); + + rem -= 1; + + if rem == 0 { + final_tx.send(msg).await.unwrap(); + } else { + cycle_tx.send(msg).await.unwrap(); + } + } + }); + + start_txs.push(start_tx); + final_rxs.push(final_rx); + } + + { + rt.block_on(async move { + for start_tx in start_txs { + start_tx.send("ping").await.unwrap(); + } + + for mut final_rx in final_rxs { + final_rx.recv().await.unwrap(); + } + }); + } + } +} + +#[test] +fn lifo_slot_budget() { + async fn my_fn() { + spawn_another(); + } + + fn spawn_another() { + tokio::spawn(my_fn()); + } + + let rt = runtime::Builder::new_multi_thread_alt() + .enable_all() + .worker_threads(1) + .build() + .unwrap(); + + let (send, recv) = oneshot::channel(); + + rt.spawn(async move { + tokio::spawn(my_fn()); + let _ = send.send(()); + }); + + let _ = rt.block_on(recv); +} + +#[test] +fn spawn_shutdown() { + let rt = rt(); + let (tx, rx) = mpsc::channel(); + + rt.block_on(async { + tokio::spawn(client_server(tx.clone())); + }); + + // Use spawner + rt.spawn(client_server(tx)); + + assert_ok!(rx.recv()); + assert_ok!(rx.recv()); + + drop(rt); + assert_err!(rx.try_recv()); +} + +async fn client_server(tx: mpsc::Sender<()>) { + let server = assert_ok!(TcpListener::bind("127.0.0.1:0").await); + + // Get the assigned address + let addr = assert_ok!(server.local_addr()); + + // Spawn the server + tokio::spawn(async move { + // Accept a socket + let (mut socket, _) = server.accept().await.unwrap(); + + // Write some data + socket.write_all(b"hello").await.unwrap(); + }); + + let mut client = TcpStream::connect(&addr).await.unwrap(); + + let mut buf = vec![]; + client.read_to_end(&mut buf).await.unwrap(); + + assert_eq!(buf, b"hello"); + tx.send(()).unwrap(); +} + +#[test] +fn drop_threadpool_drops_futures() { + for _ in 0..1_000 { + let num_inc = Arc::new(AtomicUsize::new(0)); + let num_dec = Arc::new(AtomicUsize::new(0)); + let num_drop = Arc::new(AtomicUsize::new(0)); + + struct Never(Arc); + + impl Future for Never { + type Output = (); + + fn poll(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<()> { + Poll::Pending + } + } + + impl Drop for Never { + fn drop(&mut self) { + self.0.fetch_add(1, Relaxed); + } + } + + let a = num_inc.clone(); + let b = num_dec.clone(); + + let rt = runtime::Builder::new_multi_thread_alt() + .enable_all() + .on_thread_start(move || { + a.fetch_add(1, Relaxed); + }) + .on_thread_stop(move || { + b.fetch_add(1, Relaxed); + }) + .build() + .unwrap(); + + rt.spawn(Never(num_drop.clone())); + + // Wait for the pool to shutdown + drop(rt); + + // Assert that only a single thread was spawned. + let a = num_inc.load(Relaxed); + assert!(a >= 1); + + // Assert that all threads shutdown + let b = num_dec.load(Relaxed); + assert_eq!(a, b); + + // Assert that the future was dropped + let c = num_drop.load(Relaxed); + assert_eq!(c, 1); + } +} + +#[test] +fn start_stop_callbacks_called() { + use std::sync::atomic::{AtomicUsize, Ordering}; + + let after_start = Arc::new(AtomicUsize::new(0)); + let before_stop = Arc::new(AtomicUsize::new(0)); + + let after_inner = after_start.clone(); + let before_inner = before_stop.clone(); + let rt = tokio::runtime::Builder::new_multi_thread_alt() + .enable_all() + .on_thread_start(move || { + after_inner.clone().fetch_add(1, Ordering::Relaxed); + }) + .on_thread_stop(move || { + before_inner.clone().fetch_add(1, Ordering::Relaxed); + }) + .build() + .unwrap(); + + let (tx, rx) = oneshot::channel(); + + rt.spawn(async move { + assert_ok!(tx.send(())); + }); + + assert_ok!(rt.block_on(rx)); + + drop(rt); + + assert!(after_start.load(Ordering::Relaxed) > 0); + assert!(before_stop.load(Ordering::Relaxed) > 0); +} + +#[test] +fn blocking_task() { + // used for notifying the main thread + const NUM: usize = 1_000; + + for _ in 0..10 { + let (tx, rx) = mpsc::channel(); + + let rt = rt(); + let cnt = Arc::new(AtomicUsize::new(0)); + + // there are four workers in the pool + // so, if we run 4 blocking tasks, we know that handoff must have happened + let block = Arc::new(std::sync::Barrier::new(5)); + for _ in 0..4 { + let block = block.clone(); + rt.spawn(async move { + tokio::task::block_in_place(move || { + block.wait(); + block.wait(); + }) + }); + } + block.wait(); + + for _ in 0..NUM { + let cnt = cnt.clone(); + let tx = tx.clone(); + + rt.spawn(async move { + let num = cnt.fetch_add(1, Relaxed) + 1; + + if num == NUM { + tx.send(()).unwrap(); + } + }); + } + + rx.recv().unwrap(); + + // Wait for the pool to shutdown + block.wait(); + } +} + +#[test] +fn multi_threadpool() { + use tokio::sync::oneshot; + + let rt1 = rt(); + let rt2 = rt(); + + let (tx, rx) = oneshot::channel(); + let (done_tx, done_rx) = mpsc::channel(); + + rt2.spawn(async move { + rx.await.unwrap(); + done_tx.send(()).unwrap(); + }); + + rt1.spawn(async move { + tx.send(()).unwrap(); + }); + + done_rx.recv().unwrap(); +} + +// When `block_in_place` returns, it attempts to reclaim the yielded runtime +// worker. In this case, the remainder of the task is on the runtime worker and +// must take part in the cooperative task budgeting system. +// +// The test ensures that, when this happens, attempting to consume from a +// channel yields occasionally even if there are values ready to receive. +#[test] +fn coop_and_block_in_place() { + let rt = tokio::runtime::Builder::new_multi_thread_alt() + // Setting max threads to 1 prevents another thread from claiming the + // runtime worker yielded as part of `block_in_place` and guarantees the + // same thread will reclaim the worker at the end of the + // `block_in_place` call. + .max_blocking_threads(1) + .build() + .unwrap(); + + rt.block_on(async move { + let (tx, mut rx) = tokio::sync::mpsc::channel(1024); + + // Fill the channel + for _ in 0..1024 { + tx.send(()).await.unwrap(); + } + + drop(tx); + + tokio::spawn(async move { + // Block in place without doing anything + tokio::task::block_in_place(|| {}); + + // Receive all the values, this should trigger a `Pending` as the + // coop limit will be reached. + poll_fn(|cx| { + while let Poll::Ready(v) = { + tokio::pin! { + let fut = rx.recv(); + } + + Pin::new(&mut fut).poll(cx) + } { + if v.is_none() { + panic!("did not yield"); + } + } + + Poll::Ready(()) + }) + .await + }) + .await + .unwrap(); + }); +} + +#[test] +fn yield_after_block_in_place() { + let rt = tokio::runtime::Builder::new_multi_thread_alt() + .worker_threads(1) + .build() + .unwrap(); + + rt.block_on(async { + tokio::spawn(async move { + // Block in place then enter a new runtime + tokio::task::block_in_place(|| { + let rt = tokio::runtime::Builder::new_current_thread() + .build() + .unwrap(); + + rt.block_on(async {}); + }); + + // Yield, then complete + tokio::task::yield_now().await; + }) + .await + .unwrap() + }); +} + +// Testing this does not panic +#[test] +fn max_blocking_threads() { + let _rt = tokio::runtime::Builder::new_multi_thread_alt() + .max_blocking_threads(1) + .build() + .unwrap(); +} + +#[test] +#[should_panic] +fn max_blocking_threads_set_to_zero() { + let _rt = tokio::runtime::Builder::new_multi_thread_alt() + .max_blocking_threads(0) + .build() + .unwrap(); +} + +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn hang_on_shutdown() { + let (sync_tx, sync_rx) = std::sync::mpsc::channel::<()>(); + tokio::spawn(async move { + tokio::task::block_in_place(|| sync_rx.recv().ok()); + }); + + tokio::spawn(async { + tokio::time::sleep(std::time::Duration::from_secs(2)).await; + drop(sync_tx); + }); + tokio::time::sleep(std::time::Duration::from_secs(1)).await; +} + +/// Demonstrates tokio-rs/tokio#3869 +#[test] +fn wake_during_shutdown() { + struct Shared { + waker: Option, + } + + struct MyFuture { + shared: Arc>, + put_waker: bool, + } + + impl MyFuture { + fn new() -> (Self, Self) { + let shared = Arc::new(Mutex::new(Shared { waker: None })); + let f1 = MyFuture { + shared: shared.clone(), + put_waker: true, + }; + let f2 = MyFuture { + shared, + put_waker: false, + }; + (f1, f2) + } + } + + impl Future for MyFuture { + type Output = (); + + fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<()> { + let me = Pin::into_inner(self); + let mut lock = me.shared.lock().unwrap(); + if me.put_waker { + lock.waker = Some(cx.waker().clone()); + } + Poll::Pending + } + } + + impl Drop for MyFuture { + fn drop(&mut self) { + let mut lock = self.shared.lock().unwrap(); + if !self.put_waker { + lock.waker.take().unwrap().wake(); + } + drop(lock); + } + } + + let rt = tokio::runtime::Builder::new_multi_thread_alt() + .worker_threads(1) + .enable_all() + .build() + .unwrap(); + + let (f1, f2) = MyFuture::new(); + + rt.spawn(f1); + rt.spawn(f2); + + rt.block_on(async { tokio::time::sleep(tokio::time::Duration::from_millis(20)).await }); +} + +#[should_panic] +#[tokio::test] +async fn test_block_in_place1() { + tokio::task::block_in_place(|| {}); +} + +#[tokio::test(flavor = "multi_thread")] +async fn test_block_in_place2() { + tokio::task::block_in_place(|| {}); +} + +#[should_panic] +#[tokio::main(flavor = "current_thread")] +#[test] +async fn test_block_in_place3() { + tokio::task::block_in_place(|| {}); +} + +#[tokio::main] +#[test] +async fn test_block_in_place4() { + tokio::task::block_in_place(|| {}); +} + +// Testing the tuning logic is tricky as it is inherently timing based, and more +// of a heuristic than an exact behavior. This test checks that the interval +// changes over time based on load factors. There are no assertions, completion +// is sufficient. If there is a regression, this test will hang. In theory, we +// could add limits, but that would be likely to fail on CI. +#[test] +#[cfg(not(tokio_no_tuning_tests))] +fn test_tuning() { + use std::sync::atomic::AtomicBool; + use std::time::Duration; + + let rt = runtime::Builder::new_multi_thread_alt() + .worker_threads(1) + .build() + .unwrap(); + + fn iter(flag: Arc, counter: Arc, stall: bool) { + if flag.load(Relaxed) { + if stall { + std::thread::sleep(Duration::from_micros(5)); + } + + counter.fetch_add(1, Relaxed); + tokio::spawn(async move { iter(flag, counter, stall) }); + } + } + + let flag = Arc::new(AtomicBool::new(true)); + let counter = Arc::new(AtomicUsize::new(61)); + let interval = Arc::new(AtomicUsize::new(61)); + + { + let flag = flag.clone(); + let counter = counter.clone(); + rt.spawn(async move { iter(flag, counter, true) }); + } + + // Now, hammer the injection queue until the interval drops. + let mut n = 0; + loop { + let curr = interval.load(Relaxed); + + if curr <= 8 { + n += 1; + } else { + n = 0; + } + + // Make sure we get a few good rounds. Jitter in the tuning could result + // in one "good" value without being representative of reaching a good + // state. + if n == 3 { + break; + } + + if Arc::strong_count(&interval) < 5_000 { + let counter = counter.clone(); + let interval = interval.clone(); + + rt.spawn(async move { + let prev = counter.swap(0, Relaxed); + interval.store(prev, Relaxed); + }); + + std::thread::yield_now(); + } + } + + flag.store(false, Relaxed); + + let w = Arc::downgrade(&interval); + drop(interval); + + while w.strong_count() > 0 { + std::thread::sleep(Duration::from_micros(500)); + } + + // Now, run it again with a faster task + let flag = Arc::new(AtomicBool::new(true)); + // Set it high, we know it shouldn't ever really be this high + let counter = Arc::new(AtomicUsize::new(10_000)); + let interval = Arc::new(AtomicUsize::new(10_000)); + + { + let flag = flag.clone(); + let counter = counter.clone(); + rt.spawn(async move { iter(flag, counter, false) }); + } + + // Now, hammer the injection queue until the interval reaches the expected range. + let mut n = 0; + loop { + let curr = interval.load(Relaxed); + + if curr <= 1_000 && curr > 32 { + n += 1; + } else { + n = 0; + } + + if n == 3 { + break; + } + + if Arc::strong_count(&interval) <= 5_000 { + let counter = counter.clone(); + let interval = interval.clone(); + + rt.spawn(async move { + let prev = counter.swap(0, Relaxed); + interval.store(prev, Relaxed); + }); + } + + std::thread::yield_now(); + } + + flag.store(false, Relaxed); +} + +fn rt() -> runtime::Runtime { + runtime::Builder::new_multi_thread_alt() + .enable_all() + .build() + .unwrap() +} diff -Nru temporalio-1.3.0/vendor/tokio/tests/rt_threaded.rs temporalio-1.3.0/vendor/tokio/tests/rt_threaded.rs --- temporalio-1.3.0/vendor/tokio/tests/rt_threaded.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/rt_threaded.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] +#![cfg(all(feature = "full", not(target_os = "wasi")))] use tokio::io::{AsyncReadExt, AsyncWriteExt}; use tokio::net::{TcpListener, TcpStream}; @@ -762,4 +762,22 @@ .unwrap(); }) } + + #[test] + fn runtime_id_is_same() { + let rt = rt(); + + let handle1 = rt.handle(); + let handle2 = rt.handle(); + + assert_eq!(handle1.id(), handle2.id()); + } + + #[test] + fn runtime_ids_different() { + let rt1 = rt(); + let rt2 = rt(); + + assert_ne!(rt1.handle().id(), rt2.handle().id()); + } } diff -Nru temporalio-1.3.0/vendor/tokio/tests/signal_no_rt.rs temporalio-1.3.0/vendor/tokio/tests/signal_no_rt.rs --- temporalio-1.3.0/vendor/tokio/tests/signal_no_rt.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/signal_no_rt.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,7 +4,7 @@ use tokio::signal::unix::{signal, SignalKind}; -#[cfg_attr(tokio_wasi, ignore = "Wasi does not support panic recovery")] +#[cfg_attr(target_os = "wasi", ignore = "Wasi does not support panic recovery")] #[test] #[should_panic] fn no_runtime_panics_creating_signals() { diff -Nru temporalio-1.3.0/vendor/tokio/tests/sync_barrier.rs temporalio-1.3.0/vendor/tokio/tests/sync_barrier.rs --- temporalio-1.3.0/vendor/tokio/tests/sync_barrier.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/sync_barrier.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,7 @@ #![warn(rust_2018_idioms)] #![cfg(feature = "sync")] -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as test; use tokio::sync::Barrier; diff -Nru temporalio-1.3.0/vendor/tokio/tests/sync_broadcast.rs temporalio-1.3.0/vendor/tokio/tests/sync_broadcast.rs --- temporalio-1.3.0/vendor/tokio/tests/sync_broadcast.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/sync_broadcast.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,7 @@ #![warn(rust_2018_idioms)] #![cfg(feature = "sync")] -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as test; use tokio::sync::broadcast; @@ -276,14 +276,14 @@ #[test] #[should_panic] -#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding +#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding fn zero_capacity() { broadcast::channel::<()>(0); } #[test] #[should_panic] -#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding +#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding fn capacity_too_big() { use std::usize; @@ -292,7 +292,7 @@ #[test] #[cfg(panic = "unwind")] -#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding +#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding fn panic_in_clone() { use std::panic::{self, AssertUnwindSafe}; @@ -563,7 +563,7 @@ } #[test] -#[cfg(not(tokio_wasm_not_wasi))] +#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))] fn sender_len_random() { use rand::Rng; diff -Nru temporalio-1.3.0/vendor/tokio/tests/sync_errors.rs temporalio-1.3.0/vendor/tokio/tests/sync_errors.rs --- temporalio-1.3.0/vendor/tokio/tests/sync_errors.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/sync_errors.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,7 @@ #![warn(rust_2018_idioms)] #![cfg(feature = "sync")] -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as test; fn is_error() {} diff -Nru temporalio-1.3.0/vendor/tokio/tests/sync_mpsc.rs temporalio-1.3.0/vendor/tokio/tests/sync_mpsc.rs --- temporalio-1.3.0/vendor/tokio/tests/sync_mpsc.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/sync_mpsc.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,20 +2,21 @@ #![warn(rust_2018_idioms)] #![cfg(feature = "sync")] -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as test; -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as maybe_tokio_test; +#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))] +use tokio::test as maybe_tokio_test; + use std::fmt; use std::sync::Arc; use tokio::sync::mpsc; use tokio::sync::mpsc::error::{TryRecvError, TrySendError}; -#[cfg(not(tokio_wasm_not_wasi))] -use tokio::test as maybe_tokio_test; use tokio_test::*; -#[cfg(not(tokio_wasm))] +#[cfg(not(target_family = "wasm"))] mod support { pub(crate) mod mpsc_stream; } @@ -87,7 +88,7 @@ } #[tokio::test] -#[cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threads +#[cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threads async fn send_recv_stream_with_buffer() { use tokio_stream::StreamExt; @@ -154,7 +155,7 @@ #[test] #[should_panic] -#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding +#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding fn buffer_gteq_one() { mpsc::channel::(0); } @@ -191,7 +192,7 @@ } #[tokio::test] -#[cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threads +#[cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threads async fn send_recv_stream_unbounded() { use tokio_stream::StreamExt; @@ -452,7 +453,7 @@ } #[test] -#[cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threads +#[cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threads fn blocking_recv() { let (tx, mut rx) = mpsc::channel::(1); @@ -470,14 +471,14 @@ #[tokio::test] #[should_panic] -#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding +#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding async fn blocking_recv_async() { let (_tx, mut rx) = mpsc::channel::<()>(1); let _ = rx.blocking_recv(); } #[test] -#[cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threads +#[cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threads fn blocking_send() { let (tx, mut rx) = mpsc::channel::(1); @@ -495,7 +496,7 @@ #[tokio::test] #[should_panic] -#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding +#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding async fn blocking_send_async() { let (tx, _rx) = mpsc::channel::<()>(1); let _ = tx.blocking_send(()); @@ -648,7 +649,7 @@ #[test] #[should_panic = "there is no reactor running, must be called from the context of a Tokio 1.x runtime"] -#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding +#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding fn recv_timeout_panic() { use futures::future::FutureExt; use tokio::time::Duration; diff -Nru temporalio-1.3.0/vendor/tokio/tests/sync_mpsc_weak.rs temporalio-1.3.0/vendor/tokio/tests/sync_mpsc_weak.rs --- temporalio-1.3.0/vendor/tokio/tests/sync_mpsc_weak.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/sync_mpsc_weak.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,7 @@ #![warn(rust_2018_idioms)] #![cfg(feature = "sync")] -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as test; use std::sync::atomic::AtomicUsize; diff -Nru temporalio-1.3.0/vendor/tokio/tests/sync_mutex_owned.rs temporalio-1.3.0/vendor/tokio/tests/sync_mutex_owned.rs --- temporalio-1.3.0/vendor/tokio/tests/sync_mutex_owned.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/sync_mutex_owned.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,12 +1,12 @@ #![warn(rust_2018_idioms)] #![cfg(feature = "sync")] -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as test; -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as maybe_tokio_test; -#[cfg(not(tokio_wasm_not_wasi))] +#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))] use tokio::test as maybe_tokio_test; use tokio::sync::Mutex; diff -Nru temporalio-1.3.0/vendor/tokio/tests/sync_mutex.rs temporalio-1.3.0/vendor/tokio/tests/sync_mutex.rs --- temporalio-1.3.0/vendor/tokio/tests/sync_mutex.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/sync_mutex.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,12 +1,12 @@ #![warn(rust_2018_idioms)] #![cfg(feature = "sync")] -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as test; -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as maybe_tokio_test; -#[cfg(not(tokio_wasm_not_wasi))] +#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))] use tokio::test as maybe_tokio_test; use tokio::sync::Mutex; diff -Nru temporalio-1.3.0/vendor/tokio/tests/sync_notify.rs temporalio-1.3.0/vendor/tokio/tests/sync_notify.rs --- temporalio-1.3.0/vendor/tokio/tests/sync_notify.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/sync_notify.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,7 @@ #![warn(rust_2018_idioms)] #![cfg(feature = "sync")] -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as test; use tokio::sync::Notify; diff -Nru temporalio-1.3.0/vendor/tokio/tests/sync_once_cell.rs temporalio-1.3.0/vendor/tokio/tests/sync_once_cell.rs --- temporalio-1.3.0/vendor/tokio/tests/sync_once_cell.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/sync_once_cell.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,7 +4,11 @@ use std::mem; use std::ops::Drop; use std::sync::atomic::{AtomicU32, Ordering}; +use std::time::Duration; +use tokio::runtime; use tokio::sync::OnceCell; +use tokio::sync::SetError; +use tokio::time; #[test] fn drop_cell() { @@ -102,184 +106,170 @@ assert_eq!(*cell.get().unwrap(), 2); } -#[cfg(feature = "parking_lot")] -mod parking_lot { - use super::*; - - use tokio::runtime; - use tokio::sync::SetError; - use tokio::time; +async fn func1() -> u32 { + 5 +} - use std::time::Duration; +async fn func2() -> u32 { + time::sleep(Duration::from_millis(1)).await; + 10 +} - async fn func1() -> u32 { - 5 - } +async fn func_err() -> Result { + Err(()) +} - async fn func2() -> u32 { - time::sleep(Duration::from_millis(1)).await; - 10 - } +async fn func_ok() -> Result { + Ok(10) +} - async fn func_err() -> Result { - Err(()) - } +async fn func_panic() -> u32 { + time::sleep(Duration::from_millis(1)).await; + panic!(); +} - async fn func_ok() -> Result { - Ok(10) - } +async fn sleep_and_set() -> u32 { + // Simulate sleep by pausing time and waiting for another thread to + // resume clock when calling `set`, then finding the cell being initialized + // by this call + time::sleep(Duration::from_millis(2)).await; + 5 +} - async fn func_panic() -> u32 { - time::sleep(Duration::from_millis(1)).await; - panic!(); - } +async fn advance_time_and_set(cell: &'static OnceCell, v: u32) -> Result<(), SetError> { + time::advance(Duration::from_millis(1)).await; + cell.set(v) +} - async fn sleep_and_set() -> u32 { - // Simulate sleep by pausing time and waiting for another thread to - // resume clock when calling `set`, then finding the cell being initialized - // by this call - time::sleep(Duration::from_millis(2)).await; - 5 - } +#[test] +fn get_or_init() { + let rt = runtime::Builder::new_current_thread() + .enable_time() + .start_paused(true) + .build() + .unwrap(); + + static ONCE: OnceCell = OnceCell::const_new(); + + rt.block_on(async { + let handle1 = rt.spawn(async { ONCE.get_or_init(func1).await }); + let handle2 = rt.spawn(async { ONCE.get_or_init(func2).await }); - async fn advance_time_and_set( - cell: &'static OnceCell, - v: u32, - ) -> Result<(), SetError> { time::advance(Duration::from_millis(1)).await; - cell.set(v) - } + time::resume(); - #[test] - fn get_or_init() { - let rt = runtime::Builder::new_current_thread() - .enable_time() - .start_paused(true) - .build() - .unwrap(); - - static ONCE: OnceCell = OnceCell::const_new(); - - rt.block_on(async { - let handle1 = rt.spawn(async { ONCE.get_or_init(func1).await }); - let handle2 = rt.spawn(async { ONCE.get_or_init(func2).await }); - - time::advance(Duration::from_millis(1)).await; - time::resume(); - - let result1 = handle1.await.unwrap(); - let result2 = handle2.await.unwrap(); - - assert_eq!(*result1, 5); - assert_eq!(*result2, 5); - }); - } + let result1 = handle1.await.unwrap(); + let result2 = handle2.await.unwrap(); - #[test] - fn get_or_init_panic() { - let rt = runtime::Builder::new_current_thread() - .enable_time() - .build() - .unwrap(); + assert_eq!(*result1, 5); + assert_eq!(*result2, 5); + }); +} - static ONCE: OnceCell = OnceCell::const_new(); +#[test] +fn get_or_init_panic() { + let rt = runtime::Builder::new_current_thread() + .enable_time() + .build() + .unwrap(); - rt.block_on(async { - time::pause(); + static ONCE: OnceCell = OnceCell::const_new(); - let handle1 = rt.spawn(async { ONCE.get_or_init(func1).await }); - let handle2 = rt.spawn(async { ONCE.get_or_init(func_panic).await }); + rt.block_on(async { + time::pause(); - time::advance(Duration::from_millis(1)).await; + let handle1 = rt.spawn(async { ONCE.get_or_init(func1).await }); + let handle2 = rt.spawn(async { ONCE.get_or_init(func_panic).await }); - let result1 = handle1.await.unwrap(); - let result2 = handle2.await.unwrap(); + time::advance(Duration::from_millis(1)).await; - assert_eq!(*result1, 5); - assert_eq!(*result2, 5); - }); - } + let result1 = handle1.await.unwrap(); + let result2 = handle2.await.unwrap(); - #[test] - fn set_and_get() { - let rt = runtime::Builder::new_current_thread() - .enable_time() - .build() - .unwrap(); - - static ONCE: OnceCell = OnceCell::const_new(); - - rt.block_on(async { - let _ = rt.spawn(async { ONCE.set(5) }).await; - let value = ONCE.get().unwrap(); - assert_eq!(*value, 5); - }); - } + assert_eq!(*result1, 5); + assert_eq!(*result2, 5); + }); +} - #[test] - fn get_uninit() { - static ONCE: OnceCell = OnceCell::const_new(); - let uninit = ONCE.get(); - assert!(uninit.is_none()); - } +#[test] +fn set_and_get() { + let rt = runtime::Builder::new_current_thread() + .enable_time() + .build() + .unwrap(); + + static ONCE: OnceCell = OnceCell::const_new(); + + rt.block_on(async { + let _ = rt.spawn(async { ONCE.set(5) }).await; + let value = ONCE.get().unwrap(); + assert_eq!(*value, 5); + }); +} - #[test] - fn set_twice() { - static ONCE: OnceCell = OnceCell::const_new(); - - let first = ONCE.set(5); - assert_eq!(first, Ok(())); - let second = ONCE.set(6); - assert!(second.err().unwrap().is_already_init_err()); - } +#[test] +fn get_uninit() { + static ONCE: OnceCell = OnceCell::const_new(); + let uninit = ONCE.get(); + assert!(uninit.is_none()); +} + +#[test] +fn set_twice() { + static ONCE: OnceCell = OnceCell::const_new(); + + let first = ONCE.set(5); + assert_eq!(first, Ok(())); + let second = ONCE.set(6); + assert!(second.err().unwrap().is_already_init_err()); +} - #[test] - fn set_while_initializing() { - let rt = runtime::Builder::new_current_thread() - .enable_time() - .build() - .unwrap(); +#[test] +fn set_while_initializing() { + let rt = runtime::Builder::new_current_thread() + .enable_time() + .build() + .unwrap(); - static ONCE: OnceCell = OnceCell::const_new(); + static ONCE: OnceCell = OnceCell::const_new(); - rt.block_on(async { - time::pause(); + rt.block_on(async { + time::pause(); - let handle1 = rt.spawn(async { ONCE.get_or_init(sleep_and_set).await }); - let handle2 = rt.spawn(async { advance_time_and_set(&ONCE, 10).await }); + let handle1 = rt.spawn(async { ONCE.get_or_init(sleep_and_set).await }); + let handle2 = rt.spawn(async { advance_time_and_set(&ONCE, 10).await }); - time::advance(Duration::from_millis(2)).await; + time::advance(Duration::from_millis(2)).await; - let result1 = handle1.await.unwrap(); - let result2 = handle2.await.unwrap(); + let result1 = handle1.await.unwrap(); + let result2 = handle2.await.unwrap(); - assert_eq!(*result1, 5); - assert!(result2.err().unwrap().is_initializing_err()); - }); - } + assert_eq!(*result1, 5); + assert!(result2.err().unwrap().is_initializing_err()); + }); +} - #[test] - fn get_or_try_init() { - let rt = runtime::Builder::new_current_thread() - .enable_time() - .start_paused(true) - .build() - .unwrap(); - - static ONCE: OnceCell = OnceCell::const_new(); - - rt.block_on(async { - let handle1 = rt.spawn(async { ONCE.get_or_try_init(func_err).await }); - let handle2 = rt.spawn(async { ONCE.get_or_try_init(func_ok).await }); - - time::advance(Duration::from_millis(1)).await; - time::resume(); - - let result1 = handle1.await.unwrap(); - assert!(result1.is_err()); - - let result2 = handle2.await.unwrap(); - assert_eq!(*result2.unwrap(), 10); - }); - } +#[test] +fn get_or_try_init() { + let rt = runtime::Builder::new_current_thread() + .enable_time() + .start_paused(true) + .build() + .unwrap(); + + static ONCE: OnceCell = OnceCell::const_new(); + + rt.block_on(async { + let handle1 = rt.spawn(async { ONCE.get_or_try_init(func_err).await }); + let handle2 = rt.spawn(async { ONCE.get_or_try_init(func_ok).await }); + + time::advance(Duration::from_millis(1)).await; + time::resume(); + + let result1 = handle1.await.unwrap(); + assert!(result1.is_err()); + + let result2 = handle2.await.unwrap(); + assert_eq!(*result2.unwrap(), 10); + }); } diff -Nru temporalio-1.3.0/vendor/tokio/tests/sync_oneshot.rs temporalio-1.3.0/vendor/tokio/tests/sync_oneshot.rs --- temporalio-1.3.0/vendor/tokio/tests/sync_oneshot.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/sync_oneshot.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,12 +1,12 @@ #![warn(rust_2018_idioms)] #![cfg(feature = "sync")] -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as test; -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as maybe_tokio_test; -#[cfg(not(tokio_wasm_not_wasi))] +#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))] use tokio::test as maybe_tokio_test; use tokio::sync::oneshot; @@ -179,7 +179,7 @@ #[test] #[should_panic] -#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding +#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding fn close_try_recv_poll() { let (_tx, rx) = oneshot::channel::(); let mut rx = task::spawn(rx); diff -Nru temporalio-1.3.0/vendor/tokio/tests/sync_panic.rs temporalio-1.3.0/vendor/tokio/tests/sync_panic.rs --- temporalio-1.3.0/vendor/tokio/tests/sync_panic.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/sync_panic.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] +#![cfg(all(feature = "full", not(target_os = "wasi")))] use std::{error::Error, sync::Arc}; use tokio::{ diff -Nru temporalio-1.3.0/vendor/tokio/tests/sync_rwlock.rs temporalio-1.3.0/vendor/tokio/tests/sync_rwlock.rs --- temporalio-1.3.0/vendor/tokio/tests/sync_rwlock.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/sync_rwlock.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,12 +1,12 @@ #![warn(rust_2018_idioms)] #![cfg(feature = "sync")] -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as test; -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as maybe_tokio_test; -#[cfg(not(tokio_wasm_not_wasi))] +#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))] use tokio::test as maybe_tokio_test; use std::task::Poll; @@ -172,7 +172,7 @@ } // A single RwLock is contested by tasks in multiple threads -#[cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threads +#[cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threads #[tokio::test(flavor = "multi_thread", worker_threads = 8)] async fn multithreaded() { use futures::stream::{self, StreamExt}; diff -Nru temporalio-1.3.0/vendor/tokio/tests/sync_semaphore_owned.rs temporalio-1.3.0/vendor/tokio/tests/sync_semaphore_owned.rs --- temporalio-1.3.0/vendor/tokio/tests/sync_semaphore_owned.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/sync_semaphore_owned.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ #![cfg(feature = "sync")] -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as test; use std::sync::Arc; @@ -104,7 +104,7 @@ } #[test] -#[cfg(not(tokio_wasm))] // No stack unwinding on wasm targets +#[cfg(not(target_family = "wasm"))] // No stack unwinding on wasm targets #[should_panic] fn merge_unrelated_permits() { let sem1 = Arc::new(Semaphore::new(3)); diff -Nru temporalio-1.3.0/vendor/tokio/tests/sync_semaphore.rs temporalio-1.3.0/vendor/tokio/tests/sync_semaphore.rs --- temporalio-1.3.0/vendor/tokio/tests/sync_semaphore.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/sync_semaphore.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ #![cfg(feature = "sync")] -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as test; use std::sync::Arc; @@ -78,7 +78,7 @@ } #[test] -#[cfg(not(tokio_wasm))] // No stack unwinding on wasm targets +#[cfg(not(target_family = "wasm"))] // No stack unwinding on wasm targets #[should_panic] fn merge_unrelated_permits() { let sem1 = Arc::new(Semaphore::new(3)); @@ -118,7 +118,7 @@ assert_eq!(s.available_permits(), tokio::sync::Semaphore::MAX_PERMITS); } -#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding +#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding #[test] #[should_panic] fn add_more_than_max_amount_permits1() { @@ -126,7 +126,7 @@ s.add_permits(tokio::sync::Semaphore::MAX_PERMITS); } -#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding +#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding #[test] #[should_panic] fn add_more_than_max_amount_permits2() { @@ -135,7 +135,7 @@ s.add_permits(1); } -#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding +#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding #[test] #[should_panic] fn panic_when_exceeds_maxpermits() { diff -Nru temporalio-1.3.0/vendor/tokio/tests/sync_watch.rs temporalio-1.3.0/vendor/tokio/tests/sync_watch.rs --- temporalio-1.3.0/vendor/tokio/tests/sync_watch.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/sync_watch.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,7 +2,7 @@ #![warn(rust_2018_idioms)] #![cfg(feature = "sync")] -#[cfg(tokio_wasm_not_wasi)] +#[cfg(all(target_family = "wasm", not(target_os = "wasi")))] use wasm_bindgen_test::wasm_bindgen_test as test; use tokio::sync::watch; @@ -214,7 +214,7 @@ #[test] #[cfg(panic = "unwind")] -#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding +#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding fn send_modify_panic() { let (tx, mut rx) = watch::channel("one"); diff -Nru temporalio-1.3.0/vendor/tokio/tests/task_abort.rs temporalio-1.3.0/vendor/tokio/tests/task_abort.rs --- temporalio-1.3.0/vendor/tokio/tests/task_abort.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/task_abort.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support panic recovery +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support panic recovery use std::sync::Arc; use std::thread::sleep; diff -Nru temporalio-1.3.0/vendor/tokio/tests/task_blocking.rs temporalio-1.3.0/vendor/tokio/tests/task_blocking.rs --- temporalio-1.3.0/vendor/tokio/tests/task_blocking.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/task_blocking.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threads +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threads use tokio::{runtime, task, time}; use tokio_test::assert_ok; diff -Nru temporalio-1.3.0/vendor/tokio/tests/task_id.rs temporalio-1.3.0/vendor/tokio/tests/task_id.rs --- temporalio-1.3.0/vendor/tokio/tests/task_id.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/task_id.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,21 +2,21 @@ #![allow(clippy::declare_interior_mutable_const)] #![cfg(all(feature = "full", tokio_unstable))] -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] use std::error::Error; use std::future::Future; use std::pin::Pin; use std::task::{Context, Poll}; -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] use tokio::runtime::{Builder, Runtime}; use tokio::sync::oneshot; use tokio::task::{self, Id, LocalSet}; -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] mod support { pub mod panic; } -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] use support::panic::test_panic; #[tokio::test(flavor = "current_thread")] @@ -26,7 +26,7 @@ .unwrap(); } -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] #[tokio::test(flavor = "current_thread")] async fn task_id_spawn_blocking() { task::spawn_blocking(|| println!("task id: {}", task::id())) @@ -43,7 +43,7 @@ assert_ne!(id1.unwrap(), id2.unwrap()); } -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] #[tokio::test(flavor = "multi_thread")] async fn task_id_collision_multi_thread() { let handle1 = tokio::spawn(async { task::id() }); @@ -64,7 +64,7 @@ handle.await.unwrap(); } -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] #[tokio::test(flavor = "multi_thread")] async fn task_ids_match_multi_thread() { let (tx, rx) = oneshot::channel(); @@ -76,7 +76,7 @@ handle.await.unwrap(); } -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] #[tokio::test(flavor = "multi_thread")] async fn task_id_future_destructor_completion() { struct MyFuture { @@ -104,7 +104,7 @@ assert_eq!(rx.await.unwrap(), id); } -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] #[tokio::test(flavor = "multi_thread")] async fn task_id_future_destructor_abort() { struct MyFuture { @@ -210,7 +210,7 @@ assert_eq!(None, task::try_id()); } -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] #[test] fn task_try_id_inside_block_on() { let rt = Runtime::new().unwrap(); @@ -253,7 +253,7 @@ .await; } -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] #[tokio::test(flavor = "multi_thread")] async fn task_id_block_in_place_block_on_spawn() { task::spawn(async { @@ -273,7 +273,7 @@ .unwrap(); } -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] #[test] fn task_id_outside_task_panic_caller() -> Result<(), Box> { let panic_location_file = test_panic(|| { @@ -286,7 +286,7 @@ Ok(()) } -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] #[test] fn task_id_inside_block_on_panic_caller() -> Result<(), Box> { let panic_location_file = test_panic(|| { diff -Nru temporalio-1.3.0/vendor/tokio/tests/task_join_set.rs temporalio-1.3.0/vendor/tokio/tests/task_join_set.rs --- temporalio-1.3.0/vendor/tokio/tests/task_join_set.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/task_join_set.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,7 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full"))] +#![cfg(feature = "full")] +use futures::future::FutureExt; use tokio::sync::oneshot; use tokio::task::JoinSet; use tokio::time::Duration; @@ -184,52 +185,45 @@ assert_eq!(set.len(), 0); } -#[cfg(feature = "parking_lot")] -mod parking_lot { - use super::*; - - use futures::future::FutureExt; - - // This ensures that `join_next` works correctly when the coop budget is - // exhausted. - #[tokio::test(flavor = "current_thread")] - async fn join_set_coop() { - // Large enough to trigger coop. - const TASK_NUM: u32 = 1000; - - static SEM: tokio::sync::Semaphore = tokio::sync::Semaphore::const_new(0); - - let mut set = JoinSet::new(); - - for _ in 0..TASK_NUM { - set.spawn(async { - SEM.add_permits(1); - }); - } +// This ensures that `join_next` works correctly when the coop budget is +// exhausted. +#[tokio::test(flavor = "current_thread")] +async fn join_set_coop() { + // Large enough to trigger coop. + const TASK_NUM: u32 = 1000; - // Wait for all tasks to complete. - // - // Since this is a `current_thread` runtime, there's no race condition - // between the last permit being added and the task completing. - let _ = SEM.acquire_many(TASK_NUM).await.unwrap(); - - let mut count = 0; - let mut coop_count = 0; - loop { - match set.join_next().now_or_never() { - Some(Some(Ok(()))) => {} - Some(Some(Err(err))) => panic!("failed: {}", err), - None => { - coop_count += 1; - tokio::task::yield_now().await; - continue; - } - Some(None) => break, - } + static SEM: tokio::sync::Semaphore = tokio::sync::Semaphore::const_new(0); + + let mut set = JoinSet::new(); + + for _ in 0..TASK_NUM { + set.spawn(async { + SEM.add_permits(1); + }); + } + + // Wait for all tasks to complete. + // + // Since this is a `current_thread` runtime, there's no race condition + // between the last permit being added and the task completing. + let _ = SEM.acquire_many(TASK_NUM).await.unwrap(); - count += 1; + let mut count = 0; + let mut coop_count = 0; + loop { + match set.join_next().now_or_never() { + Some(Some(Ok(()))) => {} + Some(Some(Err(err))) => panic!("failed: {}", err), + None => { + coop_count += 1; + tokio::task::yield_now().await; + continue; + } + Some(None) => break, } - assert!(coop_count >= 1); - assert_eq!(count, TASK_NUM); + + count += 1; } + assert!(coop_count >= 1); + assert_eq!(count, TASK_NUM); } diff -Nru temporalio-1.3.0/vendor/tokio/tests/task_local.rs temporalio-1.3.0/vendor/tokio/tests/task_local.rs --- temporalio-1.3.0/vendor/tokio/tests/task_local.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/task_local.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threads +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threads #![allow(clippy::declare_interior_mutable_const)] use std::future::Future; use std::pin::Pin; diff -Nru temporalio-1.3.0/vendor/tokio/tests/task_local_set.rs temporalio-1.3.0/vendor/tokio/tests/task_local_set.rs --- temporalio-1.3.0/vendor/tokio/tests/task_local_set.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/task_local_set.rs 2023-10-30 19:40:00.000000000 +0000 @@ -11,13 +11,13 @@ use tokio::task::{self, LocalSet}; use tokio::time; -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] use std::cell::Cell; use std::sync::atomic::AtomicBool; -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] use std::sync::atomic::AtomicUsize; use std::sync::atomic::Ordering; -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] use std::sync::atomic::Ordering::SeqCst; use std::time::Duration; @@ -30,7 +30,7 @@ .await; } -#[cfg(not(tokio_wasi))] // Wasi doesn't support threads +#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads #[tokio::test(flavor = "multi_thread")] async fn local_threadpool() { thread_local! { @@ -51,7 +51,7 @@ .await; } -#[cfg(not(tokio_wasi))] // Wasi doesn't support threads +#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads #[tokio::test(flavor = "multi_thread")] async fn localset_future_threadpool() { thread_local! { @@ -67,7 +67,7 @@ local.await; } -#[cfg(not(tokio_wasi))] // Wasi doesn't support threads +#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads #[tokio::test(flavor = "multi_thread")] async fn localset_future_timers() { static RAN1: AtomicBool = AtomicBool::new(false); @@ -112,7 +112,7 @@ assert!(RAN3.load(Ordering::SeqCst)); } -#[cfg(not(tokio_wasi))] // Wasi doesn't support threads +#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads #[tokio::test(flavor = "multi_thread")] async fn local_threadpool_timer() { // This test ensures that runtime services like the timer are properly @@ -151,7 +151,7 @@ }); } -#[cfg(not(tokio_wasi))] // Wasi doesn't support panic recovery +#[cfg(not(target_os = "wasi"))] // Wasi doesn't support panic recovery #[test] // This will panic, since the thread that calls `block_on` cannot use // in-place blocking inside of `block_on`. @@ -178,7 +178,7 @@ }); } -#[cfg(not(tokio_wasi))] // Wasi doesn't support threads +#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads #[tokio::test(flavor = "multi_thread")] async fn local_threadpool_blocking_run() { thread_local! { @@ -207,7 +207,7 @@ .await; } -#[cfg(not(tokio_wasi))] // Wasi doesn't support threads +#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads #[tokio::test(flavor = "multi_thread")] async fn all_spawns_are_local() { use futures::future; @@ -234,7 +234,7 @@ .await; } -#[cfg(not(tokio_wasi))] // Wasi doesn't support threads +#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads #[tokio::test(flavor = "multi_thread")] async fn nested_spawn_is_local() { thread_local! { @@ -270,7 +270,7 @@ .await; } -#[cfg(not(tokio_wasi))] // Wasi doesn't support threads +#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads #[test] fn join_local_future_elsewhere() { thread_local! { @@ -307,7 +307,7 @@ } // Tests for -#[cfg(not(tokio_wasi))] // Wasi doesn't support threads +#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads #[tokio::test(flavor = "multi_thread")] async fn localset_in_thread_local() { thread_local! { @@ -398,7 +398,10 @@ thread.join().expect("test thread should not panic!") } -#[cfg_attr(tokio_wasi, ignore = "`unwrap()` in `with_timeout()` panics on Wasi")] +#[cfg_attr( + target_os = "wasi", + ignore = "`unwrap()` in `with_timeout()` panics on Wasi" +)] #[test] fn drop_cancels_remote_tasks() { // This test reproduces issue #1885. @@ -422,7 +425,7 @@ } #[cfg_attr( - tokio_wasi, + target_os = "wasi", ignore = "FIXME: `task::spawn_local().await.unwrap()` panics on Wasi" )] #[test] @@ -446,7 +449,7 @@ }); } -#[cfg(not(tokio_wasi))] // Wasi doesn't support panic recovery +#[cfg(not(target_os = "wasi"))] // Wasi doesn't support panic recovery #[test] fn local_tasks_are_polled_after_tick() { // This test depends on timing, so we run it up to five times. @@ -463,7 +466,7 @@ local_tasks_are_polled_after_tick_inner(); } -#[cfg(not(tokio_wasi))] // Wasi doesn't support panic recovery +#[cfg(not(target_os = "wasi"))] // Wasi doesn't support panic recovery #[tokio::main(flavor = "current_thread")] async fn local_tasks_are_polled_after_tick_inner() { // Reproduces issues #1899 and #1900 diff -Nru temporalio-1.3.0/vendor/tokio/tests/task_panic.rs temporalio-1.3.0/vendor/tokio/tests/task_panic.rs --- temporalio-1.3.0/vendor/tokio/tests/task_panic.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/task_panic.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ #![warn(rust_2018_idioms)] #![allow(clippy::declare_interior_mutable_const)] -#![cfg(all(feature = "full", not(tokio_wasi)))] +#![cfg(all(feature = "full", not(target_os = "wasi")))] use futures::future; use std::error::Error; diff -Nru temporalio-1.3.0/vendor/tokio/tests/tcp_accept.rs temporalio-1.3.0/vendor/tokio/tests/tcp_accept.rs --- temporalio-1.3.0/vendor/tokio/tests/tcp_accept.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/tcp_accept.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support bind +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind use tokio::net::{TcpListener, TcpStream}; use tokio::sync::{mpsc, oneshot}; diff -Nru temporalio-1.3.0/vendor/tokio/tests/tcp_connect.rs temporalio-1.3.0/vendor/tokio/tests/tcp_connect.rs --- temporalio-1.3.0/vendor/tokio/tests/tcp_connect.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/tcp_connect.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support bind +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind use tokio::net::{TcpListener, TcpStream}; use tokio::sync::oneshot; @@ -35,7 +35,6 @@ } #[tokio::test] -#[cfg(not(tokio_no_ipv6))] async fn connect_v6() { let srv = assert_ok!(TcpListener::bind("[::1]:0").await); let addr = assert_ok!(srv.local_addr()); diff -Nru temporalio-1.3.0/vendor/tokio/tests/tcp_echo.rs temporalio-1.3.0/vendor/tokio/tests/tcp_echo.rs --- temporalio-1.3.0/vendor/tokio/tests/tcp_echo.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/tcp_echo.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support bind +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind use tokio::io::{self, AsyncReadExt, AsyncWriteExt}; use tokio::net::{TcpListener, TcpStream}; diff -Nru temporalio-1.3.0/vendor/tokio/tests/tcp_into_split.rs temporalio-1.3.0/vendor/tokio/tests/tcp_into_split.rs --- temporalio-1.3.0/vendor/tokio/tests/tcp_into_split.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/tcp_into_split.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support bind +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind use std::io::{Error, ErrorKind, Result}; use std::io::{Read, Write}; diff -Nru temporalio-1.3.0/vendor/tokio/tests/tcp_into_std.rs temporalio-1.3.0/vendor/tokio/tests/tcp_into_std.rs --- temporalio-1.3.0/vendor/tokio/tests/tcp_into_std.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/tcp_into_std.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support bind +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind use std::io::Read; use std::io::Result; diff -Nru temporalio-1.3.0/vendor/tokio/tests/tcp_peek.rs temporalio-1.3.0/vendor/tokio/tests/tcp_peek.rs --- temporalio-1.3.0/vendor/tokio/tests/tcp_peek.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/tcp_peek.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support bind +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind use tokio::io::AsyncReadExt; use tokio::net::TcpStream; diff -Nru temporalio-1.3.0/vendor/tokio/tests/tcp_shutdown.rs temporalio-1.3.0/vendor/tokio/tests/tcp_shutdown.rs --- temporalio-1.3.0/vendor/tokio/tests/tcp_shutdown.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/tcp_shutdown.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support bind +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind use tokio::io::{self, AsyncReadExt, AsyncWriteExt}; use tokio::net::{TcpListener, TcpStream}; diff -Nru temporalio-1.3.0/vendor/tokio/tests/tcp_socket.rs temporalio-1.3.0/vendor/tokio/tests/tcp_socket.rs --- temporalio-1.3.0/vendor/tokio/tests/tcp_socket.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/tcp_socket.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support bind +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind use std::time::Duration; use tokio::net::TcpSocket; @@ -24,7 +24,6 @@ } #[tokio::test] -#[cfg(not(tokio_no_ipv6))] async fn basic_usage_v6() { // Create server let addr = assert_ok!("[::1]:0".parse()); diff -Nru temporalio-1.3.0/vendor/tokio/tests/tcp_split.rs temporalio-1.3.0/vendor/tokio/tests/tcp_split.rs --- temporalio-1.3.0/vendor/tokio/tests/tcp_split.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/tcp_split.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support bind +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind use std::io::Result; use std::io::{Read, Write}; diff -Nru temporalio-1.3.0/vendor/tokio/tests/tcp_stream.rs temporalio-1.3.0/vendor/tokio/tests/tcp_stream.rs --- temporalio-1.3.0/vendor/tokio/tests/tcp_stream.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/tcp_stream.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support bind +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind use tokio::io::{AsyncReadExt, AsyncWriteExt, Interest}; use tokio::net::{TcpListener, TcpStream}; diff -Nru temporalio-1.3.0/vendor/tokio/tests/time_interval.rs temporalio-1.3.0/vendor/tokio/tests/time_interval.rs --- temporalio-1.3.0/vendor/tokio/tests/time_interval.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/time_interval.rs 2023-10-30 19:40:00.000000000 +0000 @@ -204,6 +204,154 @@ check_interval_poll!(i, start, 1001); } +#[tokio::test(start_paused = true)] +async fn reset_immediatelly() { + let start = Instant::now(); + + // This is necessary because the timer is only so granular, and in order for + // all our ticks to resolve, the time needs to be 1ms ahead of what we + // expect, so that the runtime will see that it is time to resolve the timer + time::advance(ms(1)).await; + + let mut i = task::spawn(time::interval_at(start, ms(300))); + + check_interval_poll!(i, start, 0); + + time::advance(ms(100)).await; + check_interval_poll!(i, start); + + time::advance(ms(200)).await; + check_interval_poll!(i, start, 300); + + time::advance(ms(100)).await; + check_interval_poll!(i, start); + + i.reset_immediately(); + + // We add one because when using `reset` method, `Interval` adds the + // `period` from `Instant::now()`, which will always be off by one + check_interval_poll!(i, start, 401); + + time::advance(ms(100)).await; + check_interval_poll!(i, start); + + time::advance(ms(200)).await; + check_interval_poll!(i, start, 701); +} + +#[tokio::test(start_paused = true)] +async fn reset_after() { + let start = Instant::now(); + + // This is necessary because the timer is only so granular, and in order for + // all our ticks to resolve, the time needs to be 1ms ahead of what we + // expect, so that the runtime will see that it is time to resolve the timer + time::advance(ms(1)).await; + + let mut i = task::spawn(time::interval_at(start, ms(300))); + + check_interval_poll!(i, start, 0); + + time::advance(ms(100)).await; + check_interval_poll!(i, start); + + time::advance(ms(200)).await; + check_interval_poll!(i, start, 300); + + time::advance(ms(100)).await; + check_interval_poll!(i, start); + + i.reset_after(Duration::from_millis(20)); + + // We add one because when using `reset` method, `Interval` adds the + // `period` from `Instant::now()`, which will always be off by one + time::advance(ms(20)).await; + check_interval_poll!(i, start, 421); + + time::advance(ms(100)).await; + check_interval_poll!(i, start); + + time::advance(ms(200)).await; + check_interval_poll!(i, start, 721); +} + +#[tokio::test(start_paused = true)] +async fn reset_at() { + let start = Instant::now(); + + // This is necessary because the timer is only so granular, and in order for + // all our ticks to resolve, the time needs to be 1ms ahead of what we + // expect, so that the runtime will see that it is time to resolve the timer + time::advance(ms(1)).await; + + let mut i = task::spawn(time::interval_at(start, ms(300))); + + check_interval_poll!(i, start, 0); + + time::advance(ms(100)).await; + check_interval_poll!(i, start); + + time::advance(ms(200)).await; + check_interval_poll!(i, start, 300); + + time::advance(ms(100)).await; + check_interval_poll!(i, start); + + i.reset_at(Instant::now() + Duration::from_millis(40)); + + // We add one because when using `reset` method, `Interval` adds the + // `period` from `Instant::now()`, which will always be off by one + time::advance(ms(40)).await; + check_interval_poll!(i, start, 441); + + time::advance(ms(100)).await; + check_interval_poll!(i, start); + + time::advance(ms(200)).await; + check_interval_poll!(i, start, 741); +} + +#[tokio::test(start_paused = true)] +async fn reset_at_bigger_than_interval() { + let start = Instant::now(); + + // This is necessary because the timer is only so granular, and in order for + // all our ticks to resolve, the time needs to be 1ms ahead of what we + // expect, so that the runtime will see that it is time to resolve the timer + time::advance(ms(1)).await; + + let mut i = task::spawn(time::interval_at(start, ms(300))); + + check_interval_poll!(i, start, 0); + + time::advance(ms(100)).await; + check_interval_poll!(i, start); + + time::advance(ms(200)).await; + check_interval_poll!(i, start, 300); + + time::advance(ms(100)).await; + check_interval_poll!(i, start); + + i.reset_at(Instant::now() + Duration::from_millis(1000)); + + // Validate the interval does not tick until 1000ms have passed + time::advance(ms(300)).await; + check_interval_poll!(i, start); + time::advance(ms(300)).await; + check_interval_poll!(i, start); + time::advance(ms(300)).await; + check_interval_poll!(i, start); + + // We add one because when using `reset` method, `Interval` adds the + // `period` from `Instant::now()`, which will always be off by one + time::advance(ms(100)).await; + check_interval_poll!(i, start, 1401); + + time::advance(ms(300)).await; + check_interval_poll!(i, start, 1701); +} + fn poll_next(interval: &mut task::Spawn) -> Poll { interval.enter(|cx, mut interval| interval.poll_tick(cx)) } diff -Nru temporalio-1.3.0/vendor/tokio/tests/time_panic.rs temporalio-1.3.0/vendor/tokio/tests/time_panic.rs --- temporalio-1.3.0/vendor/tokio/tests/time_panic.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/time_panic.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support panic recovery +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support panic recovery use futures::future; use std::error::Error; diff -Nru temporalio-1.3.0/vendor/tokio/tests/time_pause.rs temporalio-1.3.0/vendor/tokio/tests/time_pause.rs --- temporalio-1.3.0/vendor/tokio/tests/time_pause.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/time_pause.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,7 +6,7 @@ use tokio::time::{self, Duration, Instant, Sleep}; use tokio_test::{assert_elapsed, assert_pending, assert_ready, assert_ready_eq, task}; -#[cfg(not(tokio_wasi))] +#[cfg(not(target_os = "wasi"))] use tokio_test::assert_err; use std::{ @@ -29,14 +29,14 @@ t.await.unwrap(); } -#[cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threads +#[cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threads #[tokio::test(flavor = "multi_thread", worker_threads = 1)] #[should_panic] async fn pause_time_in_main_threads() { tokio::time::pause(); } -#[cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threads +#[cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threads #[tokio::test(flavor = "multi_thread", worker_threads = 1)] async fn pause_time_in_spawn_threads() { let t = tokio::spawn(async { diff -Nru temporalio-1.3.0/vendor/tokio/tests/time_rt.rs temporalio-1.3.0/vendor/tokio/tests/time_rt.rs --- temporalio-1.3.0/vendor/tokio/tests/time_rt.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/time_rt.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,7 +5,7 @@ use std::sync::mpsc; -#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))] // Wasi doesn't support threads +#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))] // Wasi doesn't support threads #[test] fn timer_with_threaded_runtime() { use tokio::runtime::Runtime; diff -Nru temporalio-1.3.0/vendor/tokio/tests/time_sleep.rs temporalio-1.3.0/vendor/tokio/tests/time_sleep.rs --- temporalio-1.3.0/vendor/tokio/tests/time_sleep.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/time_sleep.rs 2023-10-30 19:40:00.000000000 +0000 @@ -168,7 +168,7 @@ assert_ready!(sleep.poll()); } -#[cfg(not(tokio_wasi))] // Wasi doesn't support panic recovery +#[cfg(not(target_os = "wasi"))] // Wasi doesn't support panic recovery #[test] #[should_panic] fn creating_sleep_outside_of_context() { diff -Nru temporalio-1.3.0/vendor/tokio/tests/time_timeout.rs temporalio-1.3.0/vendor/tokio/tests/time_timeout.rs --- temporalio-1.3.0/vendor/tokio/tests/time_timeout.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/time_timeout.rs 2023-10-30 19:40:00.000000000 +0000 @@ -17,7 +17,7 @@ assert_ready_ok!(fut.poll()); } -#[cfg_attr(tokio_wasi, ignore = "FIXME: `fut.poll()` panics on Wasi")] +#[cfg_attr(target_os = "wasi", ignore = "FIXME: `fut.poll()` panics on Wasi")] #[tokio::test] async fn completed_future_past_deadline() { // Wrap it with a deadline diff -Nru temporalio-1.3.0/vendor/tokio/tests/udp.rs temporalio-1.3.0/vendor/tokio/tests/udp.rs --- temporalio-1.3.0/vendor/tokio/tests/udp.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/udp.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support bind or UDP +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support bind or UDP use futures::future::poll_fn; use std::io; diff -Nru temporalio-1.3.0/vendor/tokio/tests/unwindsafe.rs temporalio-1.3.0/vendor/tokio/tests/unwindsafe.rs --- temporalio-1.3.0/vendor/tokio/tests/unwindsafe.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio/tests/unwindsafe.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ #![warn(rust_2018_idioms)] -#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support panic recovery +#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support panic recovery use std::panic::{RefUnwindSafe, UnwindSafe}; diff -Nru temporalio-1.3.0/vendor/tokio-rustls-0.23.4/.cargo-checksum.json temporalio-1.3.0/vendor/tokio-rustls-0.23.4/.cargo-checksum.json --- temporalio-1.3.0/vendor/tokio-rustls-0.23.4/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio-rustls-0.23.4/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -{"files":{"Cargo.toml":"253b21886ab842cb4dfc544cb60c858098731b11ab9b7ebfbee932c0720dbe8e","LICENSE-APACHE":"cc117d90b498b32b11a886f279b359da16a73c3b01efbb2f5cc004b20262334e","LICENSE-MIT":"e20fa2b8e0a2565f24a792b94b4bf4b6c2b9d36f781d8a9516e218a036e6677a","README.md":"09c50ae18cbfb631dd61c948a01c528c4ef16ebef9b47e4577cb4e3419b8db7b","src/client.rs":"2ed77ed6a36c37c681839544f7d7510261205da7ec91c88a85d2ed098a556589","src/common/handshake.rs":"351bd22a331d280b196fe22229a8a3d492b2d598bfc9650c22110ec413498d41","src/common/mod.rs":"d007e3bf2f60831e90be24445505148312683bea848d45e32a2bd7d1e5bebfa7","src/common/test_stream.rs":"c6b68cff6966f835705ae53df06df42991d3753a7143950a95226c77ac36bfc2","src/lib.rs":"9e0dbe7218d89229442d6ac88c8e26cedccf51cc52f559c23521ec83437329cb","src/server.rs":"2d4ef0249fe3693d115a9ebb976532db26b4cc25f1e2aafcbd4267060a714b24","tests/badssl.rs":"80efb4aefabaa869a54d2ba75777d087bb6860f0d02161ab0e6da4175296acf1","tests/early-data.rs":"c382b3ac4a625956bfc9a4d2387d98f34402a4add3efc06b65512199f95889a4","tests/end.cert":"7fe1fc3b62f0b8b9e8544897d1f4caf2873a92f9f4776c79eded074b9c9efbcb","tests/end.chain":"7d5dea00b3d5f16eb0e8c0d40aba1a3f835cbc9d5d55ae5129f8203bcff2a020","tests/end.rsa":"4ad4bb56749c408c20eba2365a9b4abd953011b05e42ace8244ba83995421088","tests/test.rs":"d59fda8f0c92e8e9bd0e4b09dd6957db23274c9562384127b8b76b3bfb4256c9","tests/utils.rs":"9f6884269a12aa10cb733c3c17b1247e98872e9d4e06ae929ad7e66b74122581"},"package":"c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/tokio-rustls-0.23.4/Cargo.toml temporalio-1.3.0/vendor/tokio-rustls-0.23.4/Cargo.toml --- temporalio-1.3.0/vendor/tokio-rustls-0.23.4/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio-rustls-0.23.4/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -# 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 = "tokio-rustls" -version = "0.23.4" -authors = ["quininer kel "] -description = "Asynchronous TLS/SSL streams for Tokio using Rustls." -homepage = "https://github.com/tokio-rs/tls" -documentation = "https://docs.rs/tokio-rustls" -readme = "README.md" -categories = [ - "asynchronous", - "cryptography", - "network-programming", -] -license = "MIT/Apache-2.0" -repository = "https://github.com/tokio-rs/tls" - -[dependencies.rustls] -version = "0.20" -default-features = false - -[dependencies.tokio] -version = "1.0" - -[dependencies.webpki] -version = "0.22" - -[dev-dependencies.futures-util] -version = "0.3.1" - -[dev-dependencies.lazy_static] -version = "1" - -[dev-dependencies.rustls-pemfile] -version = "0.2.1" - -[dev-dependencies.tokio] -version = "1.0" -features = ["full"] - -[dev-dependencies.webpki-roots] -version = "0.22" - -[features] -dangerous_configuration = ["rustls/dangerous_configuration"] -default = [ - "logging", - "tls12", -] -early-data = [] -logging = ["rustls/logging"] -tls12 = ["rustls/tls12"] diff -Nru temporalio-1.3.0/vendor/tokio-rustls-0.23.4/LICENSE-APACHE temporalio-1.3.0/vendor/tokio-rustls-0.23.4/LICENSE-APACHE --- temporalio-1.3.0/vendor/tokio-rustls-0.23.4/LICENSE-APACHE 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio-rustls-0.23.4/LICENSE-APACHE 1970-01-01 00:00:00.000000000 +0000 @@ -1,201 +0,0 @@ - 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 quininer kel - -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 -Nru temporalio-1.3.0/vendor/tokio-rustls-0.23.4/LICENSE-MIT temporalio-1.3.0/vendor/tokio-rustls-0.23.4/LICENSE-MIT --- temporalio-1.3.0/vendor/tokio-rustls-0.23.4/LICENSE-MIT 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio-rustls-0.23.4/LICENSE-MIT 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -Copyright (c) 2017 quininer kel - -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 -Nru temporalio-1.3.0/vendor/tokio-rustls-0.23.4/README.md temporalio-1.3.0/vendor/tokio-rustls-0.23.4/README.md --- temporalio-1.3.0/vendor/tokio-rustls-0.23.4/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio-rustls-0.23.4/README.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,65 +0,0 @@ -# tokio-rustls -[![github actions](https://github.com/tokio-rs/tls/workflows/Rust/badge.svg)](https://github.com/tokio-rs/tls/actions) -[![crates](https://img.shields.io/crates/v/tokio-rustls.svg)](https://crates.io/crates/tokio-rustls) -[![license](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/tokio-rs/tls/blob/master/tokio-rustls/LICENSE-MIT) -[![license](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/tokio-rs/tls/blob/master/tokio-rustls/LICENSE-APACHE) -[![docs.rs](https://docs.rs/tokio-rustls/badge.svg)](https://docs.rs/tokio-rustls/) - -Asynchronous TLS/SSL streams for [Tokio](https://tokio.rs/) using -[Rustls](https://github.com/ctz/rustls). - -### Basic Structure of a Client - -```rust -use webpki::DNSNameRef; -use tokio_rustls::{ TlsConnector, rustls::ClientConfig }; - -// ... - -let mut config = ClientConfig::new(); -config.root_store.add_server_trust_anchors(&webpki_roots::TLS_SERVER_ROOTS); -let config = TlsConnector::from(Arc::new(config)); -let dnsname = DNSNameRef::try_from_ascii_str("www.rust-lang.org").unwrap(); - -let stream = TcpStream::connect(&addr).await?; -let mut stream = config.connect(dnsname, stream).await?; - -// ... -``` - -### Client Example Program - -See [examples/client](examples/client/src/main.rs). You can run it with: - -```sh -cd examples/client -cargo run -- hsts.badssl.com -``` - -### Server Example Program - -See [examples/server](examples/server/src/main.rs). You can run it with: - -```sh -cd examples/server -cargo run -- 127.0.0.1:8000 --cert mycert.der --key mykey.der -``` - -### License & Origin - -This project is 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. - -This started as a fork of [tokio-tls](https://github.com/tokio-rs/tokio-tls). - -### Contribution - -Unless you explicitly state otherwise, any contribution intentionally submitted -for inclusion in tokio-rustls by you, as defined in the Apache-2.0 license, shall be -dual licensed as above, without any additional terms or conditions. diff -Nru temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/client.rs temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/client.rs --- temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/client.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/client.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,244 +0,0 @@ -use super::*; -use crate::common::IoSession; -#[cfg(unix)] -use std::os::unix::io::{AsRawFd, RawFd}; -#[cfg(windows)] -use std::os::windows::io::{AsRawSocket, RawSocket}; - -/// A wrapper around an underlying raw stream which implements the TLS or SSL -/// protocol. -#[derive(Debug)] -pub struct TlsStream { - pub(crate) io: IO, - pub(crate) session: ClientConnection, - pub(crate) state: TlsState, - - #[cfg(feature = "early-data")] - pub(crate) early_waker: Option, -} - -impl TlsStream { - #[inline] - pub fn get_ref(&self) -> (&IO, &ClientConnection) { - (&self.io, &self.session) - } - - #[inline] - pub fn get_mut(&mut self) -> (&mut IO, &mut ClientConnection) { - (&mut self.io, &mut self.session) - } - - #[inline] - pub fn into_inner(self) -> (IO, ClientConnection) { - (self.io, self.session) - } -} - -#[cfg(unix)] -impl AsRawFd for TlsStream -where - S: AsRawFd, -{ - fn as_raw_fd(&self) -> RawFd { - self.get_ref().0.as_raw_fd() - } -} - -#[cfg(windows)] -impl AsRawSocket for TlsStream -where - S: AsRawSocket, -{ - fn as_raw_socket(&self) -> RawSocket { - self.get_ref().0.as_raw_socket() - } -} - -impl IoSession for TlsStream { - type Io = IO; - type Session = ClientConnection; - - #[inline] - fn skip_handshake(&self) -> bool { - self.state.is_early_data() - } - - #[inline] - fn get_mut(&mut self) -> (&mut TlsState, &mut Self::Io, &mut Self::Session) { - (&mut self.state, &mut self.io, &mut self.session) - } - - #[inline] - fn into_io(self) -> Self::Io { - self.io - } -} - -impl AsyncRead for TlsStream -where - IO: AsyncRead + AsyncWrite + Unpin, -{ - fn poll_read( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - buf: &mut ReadBuf<'_>, - ) -> Poll> { - match self.state { - #[cfg(feature = "early-data")] - TlsState::EarlyData(..) => { - let this = self.get_mut(); - - // In the EarlyData state, we have not really established a Tls connection. - // Before writing data through `AsyncWrite` and completing the tls handshake, - // we ignore read readiness and return to pending. - // - // In order to avoid event loss, - // we need to register a waker and wake it up after tls is connected. - if this - .early_waker - .as_ref() - .filter(|waker| cx.waker().will_wake(waker)) - .is_none() - { - this.early_waker = Some(cx.waker().clone()); - } - - Poll::Pending - } - TlsState::Stream | TlsState::WriteShutdown => { - let this = self.get_mut(); - let mut stream = - Stream::new(&mut this.io, &mut this.session).set_eof(!this.state.readable()); - let prev = buf.remaining(); - - match stream.as_mut_pin().poll_read(cx, buf) { - Poll::Ready(Ok(())) => { - if prev == buf.remaining() || stream.eof { - this.state.shutdown_read(); - } - - Poll::Ready(Ok(())) - } - Poll::Ready(Err(err)) if err.kind() == io::ErrorKind::ConnectionAborted => { - this.state.shutdown_read(); - Poll::Ready(Err(err)) - } - output => output, - } - } - TlsState::ReadShutdown | TlsState::FullyShutdown => Poll::Ready(Ok(())), - } - } -} - -impl AsyncWrite for TlsStream -where - IO: AsyncRead + AsyncWrite + Unpin, -{ - /// Note: that it does not guarantee the final data to be sent. - /// To be cautious, you must manually call `flush`. - fn poll_write( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - buf: &[u8], - ) -> Poll> { - let this = self.get_mut(); - let mut stream = - Stream::new(&mut this.io, &mut this.session).set_eof(!this.state.readable()); - - #[allow(clippy::match_single_binding)] - match this.state { - #[cfg(feature = "early-data")] - TlsState::EarlyData(ref mut pos, ref mut data) => { - use std::io::Write; - - // write early data - if let Some(mut early_data) = stream.session.early_data() { - let len = match early_data.write(buf) { - Ok(n) => n, - Err(err) => return Poll::Ready(Err(err)), - }; - if len != 0 { - data.extend_from_slice(&buf[..len]); - return Poll::Ready(Ok(len)); - } - } - - // complete handshake - while stream.session.is_handshaking() { - ready!(stream.handshake(cx))?; - } - - // write early data (fallback) - if !stream.session.is_early_data_accepted() { - while *pos < data.len() { - let len = ready!(stream.as_mut_pin().poll_write(cx, &data[*pos..]))?; - *pos += len; - } - } - - // end - this.state = TlsState::Stream; - - if let Some(waker) = this.early_waker.take() { - waker.wake(); - } - - stream.as_mut_pin().poll_write(cx, buf) - } - _ => stream.as_mut_pin().poll_write(cx, buf), - } - } - - fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - let this = self.get_mut(); - let mut stream = - Stream::new(&mut this.io, &mut this.session).set_eof(!this.state.readable()); - - #[cfg(feature = "early-data")] - { - if let TlsState::EarlyData(ref mut pos, ref mut data) = this.state { - // complete handshake - while stream.session.is_handshaking() { - ready!(stream.handshake(cx))?; - } - - // write early data (fallback) - if !stream.session.is_early_data_accepted() { - while *pos < data.len() { - let len = ready!(stream.as_mut_pin().poll_write(cx, &data[*pos..]))?; - *pos += len; - } - } - - this.state = TlsState::Stream; - - if let Some(waker) = this.early_waker.take() { - waker.wake(); - } - } - } - - stream.as_mut_pin().poll_flush(cx) - } - - fn poll_shutdown(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - #[cfg(feature = "early-data")] - { - // complete handshake - if matches!(self.state, TlsState::EarlyData(..)) { - ready!(self.as_mut().poll_flush(cx))?; - } - } - - if self.state.writeable() { - self.session.send_close_notify(); - self.state.shutdown_write(); - } - - let this = self.get_mut(); - let mut stream = - Stream::new(&mut this.io, &mut this.session).set_eof(!this.state.readable()); - stream.as_mut_pin().poll_shutdown(cx) - } -} diff -Nru temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/common/handshake.rs temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/common/handshake.rs --- temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/common/handshake.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/common/handshake.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,70 +0,0 @@ -use crate::common::{Stream, TlsState}; -use rustls::{ConnectionCommon, SideData}; -use std::future::Future; -use std::ops::{Deref, DerefMut}; -use std::pin::Pin; -use std::task::{Context, Poll}; -use std::{io, mem}; -use tokio::io::{AsyncRead, AsyncWrite}; - -pub(crate) trait IoSession { - type Io; - type Session; - - fn skip_handshake(&self) -> bool; - fn get_mut(&mut self) -> (&mut TlsState, &mut Self::Io, &mut Self::Session); - fn into_io(self) -> Self::Io; -} - -pub(crate) enum MidHandshake { - Handshaking(IS), - End, - Error { io: IS::Io, error: io::Error }, -} - -impl Future for MidHandshake -where - IS: IoSession + Unpin, - IS::Io: AsyncRead + AsyncWrite + Unpin, - IS::Session: DerefMut + Deref> + Unpin, - SD: SideData, -{ - type Output = Result; - - fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - let this = self.get_mut(); - - let mut stream = match mem::replace(this, MidHandshake::End) { - MidHandshake::Handshaking(stream) => stream, - // Starting the handshake returned an error; fail the future immediately. - MidHandshake::Error { io, error } => return Poll::Ready(Err((error, io))), - _ => panic!("unexpected polling after handshake"), - }; - - if !stream.skip_handshake() { - let (state, io, session) = stream.get_mut(); - let mut tls_stream = Stream::new(io, session).set_eof(!state.readable()); - - macro_rules! try_poll { - ( $e:expr ) => { - match $e { - Poll::Ready(Ok(_)) => (), - Poll::Ready(Err(err)) => return Poll::Ready(Err((err, stream.into_io()))), - Poll::Pending => { - *this = MidHandshake::Handshaking(stream); - return Poll::Pending; - } - } - }; - } - - while tls_stream.session.is_handshaking() { - try_poll!(tls_stream.handshake(cx)); - } - - try_poll!(Pin::new(&mut tls_stream).poll_flush(cx)); - } - - Poll::Ready(Ok(stream)) - } -} diff -Nru temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/common/mod.rs temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/common/mod.rs --- temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/common/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/common/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,363 +0,0 @@ -mod handshake; - -pub(crate) use handshake::{IoSession, MidHandshake}; -use rustls::{ConnectionCommon, SideData}; -use std::io::{self, IoSlice, Read, Write}; -use std::ops::{Deref, DerefMut}; -use std::pin::Pin; -use std::task::{Context, Poll}; -use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; - -#[derive(Debug)] -pub enum TlsState { - #[cfg(feature = "early-data")] - EarlyData(usize, Vec), - Stream, - ReadShutdown, - WriteShutdown, - FullyShutdown, -} - -impl TlsState { - #[inline] - pub fn shutdown_read(&mut self) { - match *self { - TlsState::WriteShutdown | TlsState::FullyShutdown => *self = TlsState::FullyShutdown, - _ => *self = TlsState::ReadShutdown, - } - } - - #[inline] - pub fn shutdown_write(&mut self) { - match *self { - TlsState::ReadShutdown | TlsState::FullyShutdown => *self = TlsState::FullyShutdown, - _ => *self = TlsState::WriteShutdown, - } - } - - #[inline] - pub fn writeable(&self) -> bool { - !matches!(*self, TlsState::WriteShutdown | TlsState::FullyShutdown) - } - - #[inline] - pub fn readable(&self) -> bool { - !matches!(*self, TlsState::ReadShutdown | TlsState::FullyShutdown) - } - - #[inline] - #[cfg(feature = "early-data")] - pub fn is_early_data(&self) -> bool { - matches!(self, TlsState::EarlyData(..)) - } - - #[inline] - #[cfg(not(feature = "early-data"))] - pub const fn is_early_data(&self) -> bool { - false - } -} - -pub struct Stream<'a, IO, C> { - pub io: &'a mut IO, - pub session: &'a mut C, - pub eof: bool, -} - -impl<'a, IO: AsyncRead + AsyncWrite + Unpin, C, SD> Stream<'a, IO, C> -where - C: DerefMut + Deref>, - SD: SideData, -{ - pub fn new(io: &'a mut IO, session: &'a mut C) -> Self { - Stream { - io, - session, - // The state so far is only used to detect EOF, so either Stream - // or EarlyData state should both be all right. - eof: false, - } - } - - pub fn set_eof(mut self, eof: bool) -> Self { - self.eof = eof; - self - } - - pub fn as_mut_pin(&mut self) -> Pin<&mut Self> { - Pin::new(self) - } - - pub fn read_io(&mut self, cx: &mut Context) -> Poll> { - let mut reader = SyncReadAdapter { io: self.io, cx }; - - let n = match self.session.read_tls(&mut reader) { - Ok(n) => n, - Err(ref err) if err.kind() == io::ErrorKind::WouldBlock => return Poll::Pending, - Err(err) => return Poll::Ready(Err(err)), - }; - - let stats = self.session.process_new_packets().map_err(|err| { - // In case we have an alert to send describing this error, - // try a last-gasp write -- but don't predate the primary - // error. - let _ = self.write_io(cx); - - io::Error::new(io::ErrorKind::InvalidData, err) - })?; - - if stats.peer_has_closed() && self.session.is_handshaking() { - return Poll::Ready(Err(io::Error::new( - io::ErrorKind::UnexpectedEof, - "tls handshake alert", - ))); - } - - Poll::Ready(Ok(n)) - } - - pub fn write_io(&mut self, cx: &mut Context) -> Poll> { - struct Writer<'a, 'b, T> { - io: &'a mut T, - cx: &'a mut Context<'b>, - } - - impl<'a, 'b, T: Unpin> Writer<'a, 'b, T> { - #[inline] - fn poll_with( - &mut self, - f: impl FnOnce(Pin<&mut T>, &mut Context<'_>) -> Poll>, - ) -> io::Result { - match f(Pin::new(self.io), self.cx) { - Poll::Ready(result) => result, - Poll::Pending => Err(io::ErrorKind::WouldBlock.into()), - } - } - } - - impl<'a, 'b, T: AsyncWrite + Unpin> Write for Writer<'a, 'b, T> { - #[inline] - fn write(&mut self, buf: &[u8]) -> io::Result { - self.poll_with(|io, cx| io.poll_write(cx, buf)) - } - - #[inline] - fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result { - self.poll_with(|io, cx| io.poll_write_vectored(cx, bufs)) - } - - fn flush(&mut self) -> io::Result<()> { - self.poll_with(|io, cx| io.poll_flush(cx)) - } - } - - let mut writer = Writer { io: self.io, cx }; - - match self.session.write_tls(&mut writer) { - Err(ref err) if err.kind() == io::ErrorKind::WouldBlock => Poll::Pending, - result => Poll::Ready(result), - } - } - - pub fn handshake(&mut self, cx: &mut Context) -> Poll> { - let mut wrlen = 0; - let mut rdlen = 0; - - loop { - let mut write_would_block = false; - let mut read_would_block = false; - let mut need_flush = false; - - while self.session.wants_write() { - match self.write_io(cx) { - Poll::Ready(Ok(n)) => { - wrlen += n; - need_flush = true; - } - Poll::Pending => { - write_would_block = true; - break; - } - Poll::Ready(Err(err)) => return Poll::Ready(Err(err)), - } - } - - if need_flush { - match Pin::new(&mut self.io).poll_flush(cx) { - Poll::Ready(Ok(())) => (), - Poll::Ready(Err(err)) => return Poll::Ready(Err(err)), - Poll::Pending => write_would_block = true, - } - } - - while !self.eof && self.session.wants_read() { - match self.read_io(cx) { - Poll::Ready(Ok(0)) => self.eof = true, - Poll::Ready(Ok(n)) => rdlen += n, - Poll::Pending => { - read_would_block = true; - break; - } - Poll::Ready(Err(err)) => return Poll::Ready(Err(err)), - } - } - - return match (self.eof, self.session.is_handshaking()) { - (true, true) => { - let err = io::Error::new(io::ErrorKind::UnexpectedEof, "tls handshake eof"); - Poll::Ready(Err(err)) - } - (_, false) => Poll::Ready(Ok((rdlen, wrlen))), - (_, true) if write_would_block || read_would_block => { - if rdlen != 0 || wrlen != 0 { - Poll::Ready(Ok((rdlen, wrlen))) - } else { - Poll::Pending - } - } - (..) => continue, - }; - } - } -} - -impl<'a, IO: AsyncRead + AsyncWrite + Unpin, C, SD> AsyncRead for Stream<'a, IO, C> -where - C: DerefMut + Deref>, - SD: SideData, -{ - fn poll_read( - mut self: Pin<&mut Self>, - cx: &mut Context<'_>, - buf: &mut ReadBuf<'_>, - ) -> Poll> { - let mut io_pending = false; - - // read a packet - while !self.eof && self.session.wants_read() { - match self.read_io(cx) { - Poll::Ready(Ok(0)) => { - break; - } - Poll::Ready(Ok(_)) => (), - Poll::Pending => { - io_pending = true; - break; - } - Poll::Ready(Err(err)) => return Poll::Ready(Err(err)), - } - } - - match self.session.reader().read(buf.initialize_unfilled()) { - // If Rustls returns `Ok(0)` (while `buf` is non-empty), the peer closed the - // connection with a `CloseNotify` message and no more data will be forthcoming. - // - // Rustls yielded more data: advance the buffer, then see if more data is coming. - // - // We don't need to modify `self.eof` here, because it is only a temporary mark. - // rustls will only return 0 if is has received `CloseNotify`, - // in which case no additional processing is required. - Ok(n) => { - buf.advance(n); - Poll::Ready(Ok(())) - } - - // Rustls doesn't have more data to yield, but it believes the connection is open. - Err(ref err) if err.kind() == io::ErrorKind::WouldBlock => { - if !io_pending { - // If `wants_read()` is satisfied, rustls will not return `WouldBlock`. - // but if it does, we can try again. - // - // If the rustls state is abnormal, it may cause a cyclic wakeup. - // but tokio's cooperative budget will prevent infinite wakeup. - cx.waker().wake_by_ref(); - } - - Poll::Pending - } - - Err(err) => Poll::Ready(Err(err)), - } - } -} - -impl<'a, IO: AsyncRead + AsyncWrite + Unpin, C, SD> AsyncWrite for Stream<'a, IO, C> -where - C: DerefMut + Deref>, - SD: SideData, -{ - fn poll_write( - mut self: Pin<&mut Self>, - cx: &mut Context, - buf: &[u8], - ) -> Poll> { - let mut pos = 0; - - while pos != buf.len() { - let mut would_block = false; - - match self.session.writer().write(&buf[pos..]) { - Ok(n) => pos += n, - Err(err) => return Poll::Ready(Err(err)), - }; - - while self.session.wants_write() { - match self.write_io(cx) { - Poll::Ready(Ok(0)) | Poll::Pending => { - would_block = true; - break; - } - Poll::Ready(Ok(_)) => (), - Poll::Ready(Err(err)) => return Poll::Ready(Err(err)), - } - } - - return match (pos, would_block) { - (0, true) => Poll::Pending, - (n, true) => Poll::Ready(Ok(n)), - (_, false) => continue, - }; - } - - Poll::Ready(Ok(pos)) - } - - fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll> { - self.session.writer().flush()?; - while self.session.wants_write() { - ready!(self.write_io(cx))?; - } - Pin::new(&mut self.io).poll_flush(cx) - } - - fn poll_shutdown(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - while self.session.wants_write() { - ready!(self.write_io(cx))?; - } - Pin::new(&mut self.io).poll_shutdown(cx) - } -} - -/// An adapter that implements a [`Read`] interface for [`AsyncRead`] types and an -/// associated [`Context`]. -/// -/// Turns `Poll::Pending` into `WouldBlock`. -pub struct SyncReadAdapter<'a, 'b, T> { - pub io: &'a mut T, - pub cx: &'a mut Context<'b>, -} - -impl<'a, 'b, T: AsyncRead + Unpin> Read for SyncReadAdapter<'a, 'b, T> { - #[inline] - fn read(&mut self, buf: &mut [u8]) -> io::Result { - let mut buf = ReadBuf::new(buf); - match Pin::new(&mut self.io).poll_read(self.cx, &mut buf) { - Poll::Ready(Ok(())) => Ok(buf.filled().len()), - Poll::Ready(Err(err)) => Err(err), - Poll::Pending => Err(io::ErrorKind::WouldBlock.into()), - } - } -} - -#[cfg(test)] -mod test_stream; diff -Nru temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/common/test_stream.rs temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/common/test_stream.rs --- temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/common/test_stream.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/common/test_stream.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,315 +0,0 @@ -use super::Stream; -use futures_util::future::poll_fn; -use futures_util::task::noop_waker_ref; -use rustls::{ClientConnection, Connection, ServerConnection}; -use std::io::{self, Cursor, Read, Write}; -use std::pin::Pin; -use std::task::{Context, Poll}; -use tokio::io::{AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt, ReadBuf}; - -struct Good<'a>(&'a mut Connection); - -impl<'a> AsyncRead for Good<'a> { - fn poll_read( - mut self: Pin<&mut Self>, - _cx: &mut Context<'_>, - buf: &mut ReadBuf<'_>, - ) -> Poll> { - let mut buf2 = buf.initialize_unfilled(); - - Poll::Ready(match self.0.write_tls(buf2.by_ref()) { - Ok(n) => { - buf.advance(n); - Ok(()) - } - Err(err) => Err(err), - }) - } -} - -impl<'a> AsyncWrite for Good<'a> { - fn poll_write( - mut self: Pin<&mut Self>, - _cx: &mut Context<'_>, - mut buf: &[u8], - ) -> Poll> { - let len = self.0.read_tls(buf.by_ref())?; - self.0 - .process_new_packets() - .map_err(|err| io::Error::new(io::ErrorKind::InvalidData, err))?; - Poll::Ready(Ok(len)) - } - - fn poll_flush(mut self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll> { - self.0 - .process_new_packets() - .map_err(|err| io::Error::new(io::ErrorKind::InvalidData, err))?; - Poll::Ready(Ok(())) - } - - fn poll_shutdown(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - self.0.send_close_notify(); - dbg!("sent close notify"); - self.poll_flush(cx) - } -} - -struct Pending; - -impl AsyncRead for Pending { - fn poll_read( - self: Pin<&mut Self>, - _cx: &mut Context<'_>, - _: &mut ReadBuf<'_>, - ) -> Poll> { - Poll::Pending - } -} - -impl AsyncWrite for Pending { - fn poll_write( - self: Pin<&mut Self>, - _cx: &mut Context<'_>, - _buf: &[u8], - ) -> Poll> { - Poll::Pending - } - - fn poll_flush(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll> { - Poll::Ready(Ok(())) - } - - fn poll_shutdown(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll> { - Poll::Ready(Ok(())) - } -} - -struct Expected(Cursor>); - -impl AsyncRead for Expected { - fn poll_read( - self: Pin<&mut Self>, - _cx: &mut Context<'_>, - buf: &mut ReadBuf<'_>, - ) -> Poll> { - let this = self.get_mut(); - let n = std::io::Read::read(&mut this.0, buf.initialize_unfilled())?; - buf.advance(n); - - Poll::Ready(Ok(())) - } -} - -impl AsyncWrite for Expected { - fn poll_write( - self: Pin<&mut Self>, - _cx: &mut Context<'_>, - buf: &[u8], - ) -> Poll> { - Poll::Ready(Ok(buf.len())) - } - - fn poll_flush(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll> { - Poll::Ready(Ok(())) - } - - fn poll_shutdown(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll> { - Poll::Ready(Ok(())) - } -} - -#[tokio::test] -async fn stream_good() -> io::Result<()> { - const FILE: &[u8] = include_bytes!("../../README.md"); - - let (server, mut client) = make_pair(); - let mut server = Connection::from(server); - poll_fn(|cx| do_handshake(&mut client, &mut server, cx)).await?; - - io::copy(&mut Cursor::new(FILE), &mut server.writer())?; - server.send_close_notify(); - - let mut server = Connection::from(server); - - { - let mut good = Good(&mut server); - let mut stream = Stream::new(&mut good, &mut client); - - let mut buf = Vec::new(); - dbg!(stream.read_to_end(&mut buf).await)?; - assert_eq!(buf, FILE); - - dbg!(stream.write_all(b"Hello World!").await)?; - stream.session.send_close_notify(); - - dbg!(stream.shutdown().await)?; - } - - let mut buf = String::new(); - dbg!(server.process_new_packets()).map_err(|e| io::Error::new(io::ErrorKind::Other, e))?; - dbg!(server.reader().read_to_string(&mut buf))?; - assert_eq!(buf, "Hello World!"); - - Ok(()) as io::Result<()> -} - -#[tokio::test] -async fn stream_bad() -> io::Result<()> { - let (server, mut client) = make_pair(); - let mut server = Connection::from(server); - poll_fn(|cx| do_handshake(&mut client, &mut server, cx)).await?; - client.set_buffer_limit(Some(1024)); - - let mut bad = Pending; - let mut stream = Stream::new(&mut bad, &mut client); - assert_eq!( - poll_fn(|cx| stream.as_mut_pin().poll_write(cx, &[0x42; 8])).await?, - 8 - ); - assert_eq!( - poll_fn(|cx| stream.as_mut_pin().poll_write(cx, &[0x42; 8])).await?, - 8 - ); - let r = poll_fn(|cx| stream.as_mut_pin().poll_write(cx, &[0x00; 1024])).await?; // fill buffer - assert!(r < 1024); - - let mut cx = Context::from_waker(noop_waker_ref()); - let ret = stream.as_mut_pin().poll_write(&mut cx, &[0x01]); - assert!(ret.is_pending()); - - Ok(()) as io::Result<()> -} - -#[tokio::test] -async fn stream_handshake() -> io::Result<()> { - let (server, mut client) = make_pair(); - let mut server = Connection::from(server); - - { - let mut good = Good(&mut server); - let mut stream = Stream::new(&mut good, &mut client); - let (r, w) = poll_fn(|cx| stream.handshake(cx)).await?; - - assert!(r > 0); - assert!(w > 0); - - poll_fn(|cx| stream.handshake(cx)).await?; // finish server handshake - } - - assert!(!server.is_handshaking()); - assert!(!client.is_handshaking()); - - Ok(()) as io::Result<()> -} - -#[tokio::test] -async fn stream_buffered_handshake() -> io::Result<()> { - use tokio::io::BufWriter; - - let (server, mut client) = make_pair(); - let mut server = Connection::from(server); - - { - let mut good = BufWriter::new(Good(&mut server)); - let mut stream = Stream::new(&mut good, &mut client); - let (r, w) = poll_fn(|cx| stream.handshake(cx)).await?; - - assert!(r > 0); - assert!(w > 0); - - poll_fn(|cx| stream.handshake(cx)).await?; // finish server handshake - } - - assert!(!server.is_handshaking()); - assert!(!client.is_handshaking()); - - Ok(()) as io::Result<()> -} - -#[tokio::test] -async fn stream_handshake_eof() -> io::Result<()> { - let (_, mut client) = make_pair(); - - let mut bad = Expected(Cursor::new(Vec::new())); - let mut stream = Stream::new(&mut bad, &mut client); - - let mut cx = Context::from_waker(noop_waker_ref()); - let r = stream.handshake(&mut cx); - assert_eq!( - r.map_err(|err| err.kind()), - Poll::Ready(Err(io::ErrorKind::UnexpectedEof)) - ); - - Ok(()) as io::Result<()> -} - -// see https://github.com/tokio-rs/tls/issues/77 -#[tokio::test] -async fn stream_handshake_regression_issues_77() -> io::Result<()> { - let (_, mut client) = make_pair(); - - let mut bad = Expected(Cursor::new(b"\x15\x03\x01\x00\x02\x02\x00".to_vec())); - let mut stream = Stream::new(&mut bad, &mut client); - - let mut cx = Context::from_waker(noop_waker_ref()); - let r = stream.handshake(&mut cx); - assert_eq!( - r.map_err(|err| err.kind()), - Poll::Ready(Err(io::ErrorKind::UnexpectedEof)) - ); - - Ok(()) as io::Result<()> -} - -#[tokio::test] -async fn stream_eof() -> io::Result<()> { - let (server, mut client) = make_pair(); - let mut server = Connection::from(server); - poll_fn(|cx| do_handshake(&mut client, &mut server, cx)).await?; - - let mut bad = Expected(Cursor::new(Vec::new())); - let mut stream = Stream::new(&mut bad, &mut client); - - let mut buf = Vec::new(); - let result = stream.read_to_end(&mut buf).await; - assert_eq!( - result.err().map(|e| e.kind()), - Some(io::ErrorKind::UnexpectedEof) - ); - - Ok(()) as io::Result<()> -} - -fn make_pair() -> (ServerConnection, ClientConnection) { - use std::convert::TryFrom; - - let (sconfig, cconfig) = utils::make_configs(); - let server = ServerConnection::new(sconfig).unwrap(); - - let domain = rustls::ServerName::try_from("localhost").unwrap(); - let client = ClientConnection::new(cconfig, domain).unwrap(); - - (server, client) -} - -fn do_handshake( - client: &mut ClientConnection, - server: &mut Connection, - cx: &mut Context<'_>, -) -> Poll> { - let mut good = Good(server); - let mut stream = Stream::new(&mut good, client); - - while stream.session.is_handshaking() { - ready!(stream.handshake(cx))?; - } - - while stream.session.wants_write() { - ready!(stream.write_io(cx))?; - } - - Poll::Ready(Ok(())) -} - -// Share `utils` module with integration tests -include!("../../tests/utils.rs"); diff -Nru temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/lib.rs temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/lib.rs --- temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,508 +0,0 @@ -//! Asynchronous TLS/SSL streams for Tokio using [Rustls](https://github.com/ctz/rustls). -//! -//! # Why do I need to call `poll_flush`? -//! -//! Most TLS implementations will have an internal buffer to improve throughput, -//! and rustls is no exception. -//! -//! When we write data to `TlsStream`, we always write rustls buffer first, -//! then take out rustls encrypted data packet, and write it to data channel (like TcpStream). -//! When data channel is pending, some data may remain in rustls buffer. -//! -//! `tokio-rustls` To keep it simple and correct, [TlsStream] will behave like `BufWriter`. -//! For `TlsStream`, this means that data written by `poll_write` is not guaranteed to be written to `TcpStream`. -//! You must call `poll_flush` to ensure that it is written to `TcpStream`. -//! -//! You should call `poll_flush` at the appropriate time, -//! such as when a period of `poll_write` write is complete and there is no more data to write. -//! -//! ## Why don't we write during `poll_read`? -//! -//! We did this in the early days of `tokio-rustls`, but it caused some bugs. -//! We can solve these bugs through some solutions, but this will cause performance degradation (reverse false wakeup). -//! -//! And reverse write will also prevent us implement full duplex in the future. -//! -//! see -//! -//! ## Why can't we handle it like `native-tls`? -//! -//! When data channel returns to pending, `native-tls` will falsely report the number of bytes it consumes. -//! This means that if data written by `poll_write` is not actually written to data channel, it will not return `Ready`. -//! Thus avoiding the call of `poll_flush`. -//! -//! but which does not conform to convention of `AsyncWrite` trait. -//! This means that if you give inconsistent data in two `poll_write`, it may cause unexpected behavior. -//! -//! see - -macro_rules! ready { - ( $e:expr ) => { - match $e { - std::task::Poll::Ready(t) => t, - std::task::Poll::Pending => return std::task::Poll::Pending, - } - }; -} - -pub mod client; -mod common; -pub mod server; - -use common::{MidHandshake, Stream, TlsState}; -use rustls::{ClientConfig, ClientConnection, CommonState, ServerConfig, ServerConnection}; -use std::future::Future; -use std::io; -#[cfg(unix)] -use std::os::unix::io::{AsRawFd, RawFd}; -#[cfg(windows)] -use std::os::windows::io::{AsRawSocket, RawSocket}; -use std::pin::Pin; -use std::sync::Arc; -use std::task::{Context, Poll}; -use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; - -pub use rustls; -pub use webpki; - -/// A wrapper around a `rustls::ClientConfig`, providing an async `connect` method. -#[derive(Clone)] -pub struct TlsConnector { - inner: Arc, - #[cfg(feature = "early-data")] - early_data: bool, -} - -/// A wrapper around a `rustls::ServerConfig`, providing an async `accept` method. -#[derive(Clone)] -pub struct TlsAcceptor { - inner: Arc, -} - -impl From> for TlsConnector { - fn from(inner: Arc) -> TlsConnector { - TlsConnector { - inner, - #[cfg(feature = "early-data")] - early_data: false, - } - } -} - -impl From> for TlsAcceptor { - fn from(inner: Arc) -> TlsAcceptor { - TlsAcceptor { inner } - } -} - -impl TlsConnector { - /// Enable 0-RTT. - /// - /// If you want to use 0-RTT, - /// You must also set `ClientConfig.enable_early_data` to `true`. - #[cfg(feature = "early-data")] - pub fn early_data(mut self, flag: bool) -> TlsConnector { - self.early_data = flag; - self - } - - #[inline] - pub fn connect(&self, domain: rustls::ServerName, stream: IO) -> Connect - where - IO: AsyncRead + AsyncWrite + Unpin, - { - self.connect_with(domain, stream, |_| ()) - } - - pub fn connect_with(&self, domain: rustls::ServerName, stream: IO, f: F) -> Connect - where - IO: AsyncRead + AsyncWrite + Unpin, - F: FnOnce(&mut ClientConnection), - { - let mut session = match ClientConnection::new(self.inner.clone(), domain) { - Ok(session) => session, - Err(error) => { - return Connect(MidHandshake::Error { - io: stream, - // TODO(eliza): should this really return an `io::Error`? - // Probably not... - error: io::Error::new(io::ErrorKind::Other, error), - }); - } - }; - f(&mut session); - - Connect(MidHandshake::Handshaking(client::TlsStream { - io: stream, - - #[cfg(not(feature = "early-data"))] - state: TlsState::Stream, - - #[cfg(feature = "early-data")] - state: if self.early_data && session.early_data().is_some() { - TlsState::EarlyData(0, Vec::new()) - } else { - TlsState::Stream - }, - - #[cfg(feature = "early-data")] - early_waker: None, - - session, - })) - } -} - -impl TlsAcceptor { - #[inline] - pub fn accept(&self, stream: IO) -> Accept - where - IO: AsyncRead + AsyncWrite + Unpin, - { - self.accept_with(stream, |_| ()) - } - - pub fn accept_with(&self, stream: IO, f: F) -> Accept - where - IO: AsyncRead + AsyncWrite + Unpin, - F: FnOnce(&mut ServerConnection), - { - let mut session = match ServerConnection::new(self.inner.clone()) { - Ok(session) => session, - Err(error) => { - return Accept(MidHandshake::Error { - io: stream, - // TODO(eliza): should this really return an `io::Error`? - // Probably not... - error: io::Error::new(io::ErrorKind::Other, error), - }); - } - }; - f(&mut session); - - Accept(MidHandshake::Handshaking(server::TlsStream { - session, - io: stream, - state: TlsState::Stream, - })) - } -} - -pub struct LazyConfigAcceptor { - acceptor: rustls::server::Acceptor, - io: Option, -} - -impl LazyConfigAcceptor -where - IO: AsyncRead + AsyncWrite + Unpin, -{ - #[inline] - pub fn new(acceptor: rustls::server::Acceptor, io: IO) -> Self { - Self { - acceptor, - io: Some(io), - } - } -} - -impl Future for LazyConfigAcceptor -where - IO: AsyncRead + AsyncWrite + Unpin, -{ - type Output = Result, io::Error>; - - fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - let this = self.get_mut(); - loop { - let io = match this.io.as_mut() { - Some(io) => io, - None => { - return Poll::Ready(Err(io::Error::new( - io::ErrorKind::Other, - "acceptor cannot be polled after acceptance", - ))) - } - }; - - let mut reader = common::SyncReadAdapter { io, cx }; - match this.acceptor.read_tls(&mut reader) { - Ok(0) => return Err(io::ErrorKind::UnexpectedEof.into()).into(), - Ok(_) => {} - Err(e) if e.kind() == io::ErrorKind::WouldBlock => return Poll::Pending, - Err(e) => return Err(e).into(), - } - - match this.acceptor.accept() { - Ok(Some(accepted)) => { - let io = this.io.take().unwrap(); - return Poll::Ready(Ok(StartHandshake { accepted, io })); - } - Ok(None) => continue, - Err(err) => { - return Poll::Ready(Err(io::Error::new(io::ErrorKind::InvalidInput, err))) - } - } - } - } -} - -pub struct StartHandshake { - accepted: rustls::server::Accepted, - io: IO, -} - -impl StartHandshake -where - IO: AsyncRead + AsyncWrite + Unpin, -{ - pub fn client_hello(&self) -> rustls::server::ClientHello<'_> { - self.accepted.client_hello() - } - - pub fn into_stream(self, config: Arc) -> Accept { - self.into_stream_with(config, |_| ()) - } - - pub fn into_stream_with(self, config: Arc, f: F) -> Accept - where - F: FnOnce(&mut ServerConnection), - { - let mut conn = match self.accepted.into_connection(config) { - Ok(conn) => conn, - Err(error) => { - return Accept(MidHandshake::Error { - io: self.io, - // TODO(eliza): should this really return an `io::Error`? - // Probably not... - error: io::Error::new(io::ErrorKind::Other, error), - }); - } - }; - f(&mut conn); - - Accept(MidHandshake::Handshaking(server::TlsStream { - session: conn, - io: self.io, - state: TlsState::Stream, - })) - } -} - -/// Future returned from `TlsConnector::connect` which will resolve -/// once the connection handshake has finished. -pub struct Connect(MidHandshake>); - -/// Future returned from `TlsAcceptor::accept` which will resolve -/// once the accept handshake has finished. -pub struct Accept(MidHandshake>); - -/// Like [Connect], but returns `IO` on failure. -pub struct FallibleConnect(MidHandshake>); - -/// Like [Accept], but returns `IO` on failure. -pub struct FallibleAccept(MidHandshake>); - -impl Connect { - #[inline] - pub fn into_fallible(self) -> FallibleConnect { - FallibleConnect(self.0) - } - - pub fn get_ref(&self) -> Option<&IO> { - match &self.0 { - MidHandshake::Handshaking(sess) => Some(sess.get_ref().0), - MidHandshake::Error { io, .. } => Some(io), - MidHandshake::End => None, - } - } - - pub fn get_mut(&mut self) -> Option<&mut IO> { - match &mut self.0 { - MidHandshake::Handshaking(sess) => Some(sess.get_mut().0), - MidHandshake::Error { io, .. } => Some(io), - MidHandshake::End => None, - } - } -} - -impl Accept { - #[inline] - pub fn into_fallible(self) -> FallibleAccept { - FallibleAccept(self.0) - } - - pub fn get_ref(&self) -> Option<&IO> { - match &self.0 { - MidHandshake::Handshaking(sess) => Some(sess.get_ref().0), - MidHandshake::Error { io, .. } => Some(io), - MidHandshake::End => None, - } - } - - pub fn get_mut(&mut self) -> Option<&mut IO> { - match &mut self.0 { - MidHandshake::Handshaking(sess) => Some(sess.get_mut().0), - MidHandshake::Error { io, .. } => Some(io), - MidHandshake::End => None, - } - } -} - -impl Future for Connect { - type Output = io::Result>; - - #[inline] - fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - Pin::new(&mut self.0).poll(cx).map_err(|(err, _)| err) - } -} - -impl Future for Accept { - type Output = io::Result>; - - #[inline] - fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - Pin::new(&mut self.0).poll(cx).map_err(|(err, _)| err) - } -} - -impl Future for FallibleConnect { - type Output = Result, (io::Error, IO)>; - - #[inline] - fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - Pin::new(&mut self.0).poll(cx) - } -} - -impl Future for FallibleAccept { - type Output = Result, (io::Error, IO)>; - - #[inline] - fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - Pin::new(&mut self.0).poll(cx) - } -} - -/// Unified TLS stream type -/// -/// This abstracts over the inner `client::TlsStream` and `server::TlsStream`, so you can use -/// a single type to keep both client- and server-initiated TLS-encrypted connections. -#[derive(Debug)] -pub enum TlsStream { - Client(client::TlsStream), - Server(server::TlsStream), -} - -impl TlsStream { - pub fn get_ref(&self) -> (&T, &CommonState) { - use TlsStream::*; - match self { - Client(io) => { - let (io, session) = io.get_ref(); - (io, &*session) - } - Server(io) => { - let (io, session) = io.get_ref(); - (io, &*session) - } - } - } - - pub fn get_mut(&mut self) -> (&mut T, &mut CommonState) { - use TlsStream::*; - match self { - Client(io) => { - let (io, session) = io.get_mut(); - (io, &mut *session) - } - Server(io) => { - let (io, session) = io.get_mut(); - (io, &mut *session) - } - } - } -} - -impl From> for TlsStream { - fn from(s: client::TlsStream) -> Self { - Self::Client(s) - } -} - -impl From> for TlsStream { - fn from(s: server::TlsStream) -> Self { - Self::Server(s) - } -} - -#[cfg(unix)] -impl AsRawFd for TlsStream -where - S: AsRawFd, -{ - fn as_raw_fd(&self) -> RawFd { - self.get_ref().0.as_raw_fd() - } -} - -#[cfg(windows)] -impl AsRawSocket for TlsStream -where - S: AsRawSocket, -{ - fn as_raw_socket(&self) -> RawSocket { - self.get_ref().0.as_raw_socket() - } -} - -impl AsyncRead for TlsStream -where - T: AsyncRead + AsyncWrite + Unpin, -{ - #[inline] - fn poll_read( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - buf: &mut ReadBuf<'_>, - ) -> Poll> { - match self.get_mut() { - TlsStream::Client(x) => Pin::new(x).poll_read(cx, buf), - TlsStream::Server(x) => Pin::new(x).poll_read(cx, buf), - } - } -} - -impl AsyncWrite for TlsStream -where - T: AsyncRead + AsyncWrite + Unpin, -{ - #[inline] - fn poll_write( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - buf: &[u8], - ) -> Poll> { - match self.get_mut() { - TlsStream::Client(x) => Pin::new(x).poll_write(cx, buf), - TlsStream::Server(x) => Pin::new(x).poll_write(cx, buf), - } - } - - #[inline] - fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - match self.get_mut() { - TlsStream::Client(x) => Pin::new(x).poll_flush(cx), - TlsStream::Server(x) => Pin::new(x).poll_flush(cx), - } - } - - #[inline] - fn poll_shutdown(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - match self.get_mut() { - TlsStream::Client(x) => Pin::new(x).poll_shutdown(cx), - TlsStream::Server(x) => Pin::new(x).poll_shutdown(cx), - } - } -} diff -Nru temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/server.rs temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/server.rs --- temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/server.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio-rustls-0.23.4/src/server.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,149 +0,0 @@ -#[cfg(unix)] -use std::os::unix::io::{AsRawFd, RawFd}; -#[cfg(windows)] -use std::os::windows::io::{AsRawSocket, RawSocket}; - -use super::*; -use crate::common::IoSession; - -/// A wrapper around an underlying raw stream which implements the TLS or SSL -/// protocol. -#[derive(Debug)] -pub struct TlsStream { - pub(crate) io: IO, - pub(crate) session: ServerConnection, - pub(crate) state: TlsState, -} - -impl TlsStream { - #[inline] - pub fn get_ref(&self) -> (&IO, &ServerConnection) { - (&self.io, &self.session) - } - - #[inline] - pub fn get_mut(&mut self) -> (&mut IO, &mut ServerConnection) { - (&mut self.io, &mut self.session) - } - - #[inline] - pub fn into_inner(self) -> (IO, ServerConnection) { - (self.io, self.session) - } -} - -impl IoSession for TlsStream { - type Io = IO; - type Session = ServerConnection; - - #[inline] - fn skip_handshake(&self) -> bool { - false - } - - #[inline] - fn get_mut(&mut self) -> (&mut TlsState, &mut Self::Io, &mut Self::Session) { - (&mut self.state, &mut self.io, &mut self.session) - } - - #[inline] - fn into_io(self) -> Self::Io { - self.io - } -} - -impl AsyncRead for TlsStream -where - IO: AsyncRead + AsyncWrite + Unpin, -{ - fn poll_read( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - buf: &mut ReadBuf<'_>, - ) -> Poll> { - let this = self.get_mut(); - let mut stream = - Stream::new(&mut this.io, &mut this.session).set_eof(!this.state.readable()); - - match &this.state { - TlsState::Stream | TlsState::WriteShutdown => { - let prev = buf.remaining(); - - match stream.as_mut_pin().poll_read(cx, buf) { - Poll::Ready(Ok(())) => { - if prev == buf.remaining() || stream.eof { - this.state.shutdown_read(); - } - - Poll::Ready(Ok(())) - } - Poll::Ready(Err(err)) if err.kind() == io::ErrorKind::UnexpectedEof => { - this.state.shutdown_read(); - Poll::Ready(Err(err)) - } - output => output, - } - } - TlsState::ReadShutdown | TlsState::FullyShutdown => Poll::Ready(Ok(())), - #[cfg(feature = "early-data")] - s => unreachable!("server TLS can not hit this state: {:?}", s), - } - } -} - -impl AsyncWrite for TlsStream -where - IO: AsyncRead + AsyncWrite + Unpin, -{ - /// Note: that it does not guarantee the final data to be sent. - /// To be cautious, you must manually call `flush`. - fn poll_write( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - buf: &[u8], - ) -> Poll> { - let this = self.get_mut(); - let mut stream = - Stream::new(&mut this.io, &mut this.session).set_eof(!this.state.readable()); - stream.as_mut_pin().poll_write(cx, buf) - } - - fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - let this = self.get_mut(); - let mut stream = - Stream::new(&mut this.io, &mut this.session).set_eof(!this.state.readable()); - stream.as_mut_pin().poll_flush(cx) - } - - fn poll_shutdown(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - if self.state.writeable() { - self.session.send_close_notify(); - self.state.shutdown_write(); - } - - let this = self.get_mut(); - let mut stream = - Stream::new(&mut this.io, &mut this.session).set_eof(!this.state.readable()); - stream.as_mut_pin().poll_shutdown(cx) - } -} - -#[cfg(unix)] -impl AsRawFd for TlsStream -where - IO: AsRawFd, -{ - fn as_raw_fd(&self) -> RawFd { - self.get_ref().0.as_raw_fd() - } -} - -#[cfg(windows)] -impl AsRawSocket for TlsStream -where - IO: AsRawSocket, -{ - fn as_raw_socket(&self) -> RawSocket { - self.get_ref().0.as_raw_socket() - } -} diff -Nru temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/badssl.rs temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/badssl.rs --- temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/badssl.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/badssl.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ -use std::convert::TryFrom; -use std::io; -use std::net::ToSocketAddrs; -use std::sync::Arc; -use tokio::io::{AsyncReadExt, AsyncWriteExt}; -use tokio::net::TcpStream; -use tokio_rustls::{ - client::TlsStream, - rustls::{self, ClientConfig, OwnedTrustAnchor}, - TlsConnector, -}; - -async fn get( - config: Arc, - domain: &str, - port: u16, -) -> io::Result<(TlsStream, String)> { - let connector = TlsConnector::from(config); - let input = format!("GET / HTTP/1.0\r\nHost: {}\r\n\r\n", domain); - - let addr = (domain, port).to_socket_addrs()?.next().unwrap(); - let domain = rustls::ServerName::try_from(domain).unwrap(); - let mut buf = Vec::new(); - - let stream = TcpStream::connect(&addr).await?; - let mut stream = connector.connect(domain, stream).await?; - stream.write_all(input.as_bytes()).await?; - stream.flush().await?; - stream.read_to_end(&mut buf).await?; - - Ok((stream, String::from_utf8(buf).unwrap())) -} - -#[tokio::test] -async fn test_tls12() -> io::Result<()> { - let mut root_store = rustls::RootCertStore::empty(); - root_store.add_server_trust_anchors(webpki_roots::TLS_SERVER_ROOTS.0.iter().map(|ta| { - OwnedTrustAnchor::from_subject_spki_name_constraints( - ta.subject, - ta.spki, - ta.name_constraints, - ) - })); - let config = rustls::ClientConfig::builder() - .with_safe_default_cipher_suites() - .with_safe_default_kx_groups() - .with_protocol_versions(&[&rustls::version::TLS12]) - .unwrap() - .with_root_certificates(root_store) - .with_no_client_auth(); - - let config = Arc::new(config); - let domain = "tls-v1-2.badssl.com"; - - let (_, output) = get(config.clone(), domain, 1012).await?; - assert!( - output.contains("tls-v1-2.badssl.com"), - "failed badssl test, output: {}", - output - ); - - Ok(()) -} - -#[ignore] -#[should_panic] -#[test] -fn test_tls13() { - unimplemented!("todo https://github.com/chromium/badssl.com/pull/373"); -} - -#[tokio::test] -async fn test_modern() -> io::Result<()> { - let mut root_store = rustls::RootCertStore::empty(); - root_store.add_server_trust_anchors(webpki_roots::TLS_SERVER_ROOTS.0.iter().map(|ta| { - OwnedTrustAnchor::from_subject_spki_name_constraints( - ta.subject, - ta.spki, - ta.name_constraints, - ) - })); - let config = rustls::ClientConfig::builder() - .with_safe_defaults() - .with_root_certificates(root_store) - .with_no_client_auth(); - let config = Arc::new(config); - let domain = "mozilla-modern.badssl.com"; - - let (_, output) = get(config.clone(), domain, 443).await?; - assert!( - output.contains("mozilla-modern.badssl.com"), - "failed badssl test, output: {}", - output - ); - - Ok(()) -} diff -Nru temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/early-data.rs temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/early-data.rs --- temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/early-data.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/early-data.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,161 +0,0 @@ -#![cfg(feature = "early-data")] - -use futures_util::{future, future::Future, ready}; -use rustls::RootCertStore; -use std::convert::TryFrom; -use std::io::{self, BufRead, BufReader, Cursor}; -use std::net::SocketAddr; -use std::pin::Pin; -use std::process::{Child, Command, Stdio}; -use std::sync::Arc; -use std::task::{Context, Poll}; -use std::time::Duration; -use tokio::io::{split, AsyncRead, AsyncWriteExt, ReadBuf}; -use tokio::net::TcpStream; -use tokio::sync::oneshot; -use tokio::time::sleep; -use tokio_rustls::{ - client::TlsStream, - rustls::{self, ClientConfig, OwnedTrustAnchor}, - TlsConnector, -}; - -struct Read1(T); - -impl Future for Read1 { - type Output = io::Result<()>; - - fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - let mut buf = [0]; - let mut buf = ReadBuf::new(&mut buf); - - ready!(Pin::new(&mut self.0).poll_read(cx, &mut buf))?; - - if buf.filled().is_empty() { - Poll::Ready(Ok(())) - } else { - Poll::Pending - } - } -} - -async fn send( - config: Arc, - addr: SocketAddr, - data: &[u8], -) -> io::Result> { - let connector = TlsConnector::from(config).early_data(true); - let stream = TcpStream::connect(&addr).await?; - let domain = rustls::ServerName::try_from("testserver.com").unwrap(); - - let stream = connector.connect(domain, stream).await?; - let (mut rd, mut wd) = split(stream); - let (notify, wait) = oneshot::channel(); - - let j = tokio::spawn(async move { - // read to eof - // - // see https://www.mail-archive.com/openssl-users@openssl.org/msg84451.html - let mut read_task = Read1(&mut rd); - let mut notify = Some(notify); - - // read once, then write - // - // this is a regression test, see https://github.com/tokio-rs/tls/issues/54 - future::poll_fn(|cx| { - let ret = Pin::new(&mut read_task).poll(cx)?; - assert_eq!(ret, Poll::Pending); - - notify.take().unwrap().send(()).unwrap(); - - Poll::Ready(Ok(())) as Poll> - }) - .await?; - - match read_task.await { - Ok(()) => (), - Err(ref err) if err.kind() == io::ErrorKind::UnexpectedEof => (), - Err(err) => return Err(err.into()), - } - - Ok(rd) as io::Result<_> - }); - - wait.await.unwrap(); - - wd.write_all(data).await?; - wd.flush().await?; - wd.shutdown().await?; - - let rd: tokio::io::ReadHalf<_> = j.await??; - - Ok(rd.unsplit(wd)) -} - -struct DropKill(Child); - -impl Drop for DropKill { - fn drop(&mut self) { - self.0.kill().unwrap(); - } -} - -#[tokio::test] -async fn test_0rtt() -> io::Result<()> { - let mut handle = Command::new("openssl") - .arg("s_server") - .arg("-early_data") - .arg("-tls1_3") - .args(&["-cert", "./tests/end.cert"]) - .args(&["-key", "./tests/end.rsa"]) - .args(&["-port", "12354"]) - .stdin(Stdio::piped()) - .stdout(Stdio::piped()) - .spawn() - .map(DropKill)?; - - // wait openssl server - sleep(Duration::from_secs(1)).await; - - let mut chain = BufReader::new(Cursor::new(include_str!("end.chain"))); - let certs = rustls_pemfile::certs(&mut chain).unwrap(); - let trust_anchors = certs - .iter() - .map(|cert| { - let ta = webpki::TrustAnchor::try_from_cert_der(&cert[..]).unwrap(); - OwnedTrustAnchor::from_subject_spki_name_constraints( - ta.subject, - ta.spki, - ta.name_constraints, - ) - }) - .collect::>(); - let mut root_store = RootCertStore::empty(); - root_store.add_server_trust_anchors(trust_anchors.into_iter()); - let mut config = rustls::ClientConfig::builder() - .with_safe_default_cipher_suites() - .with_safe_default_kx_groups() - .with_protocol_versions(&[&rustls::version::TLS13]) - .unwrap() - .with_root_certificates(root_store) - .with_no_client_auth(); - config.enable_early_data = true; - let config = Arc::new(config); - let addr = SocketAddr::from(([127, 0, 0, 1], 12354)); - - let io = send(config.clone(), addr, b"hello").await?; - assert!(!io.get_ref().1.is_early_data_accepted()); - - let io = send(config, addr, b"world!").await?; - assert!(io.get_ref().1.is_early_data_accepted()); - - let stdout = handle.0.stdout.as_mut().unwrap(); - let mut lines = BufReader::new(stdout).lines(); - - let has_msg1 = lines.by_ref().any(|line| line.unwrap().contains("hello")); - let has_msg2 = lines.by_ref().any(|line| line.unwrap().contains("world!")); - - assert!(has_msg1 && has_msg2); - - Ok(()) -} diff -Nru temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/end.cert temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/end.cert --- temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/end.cert 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/end.cert 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEADCCAmigAwIBAgICAcgwDQYJKoZIhvcNAQELBQAwLDEqMCgGA1UEAwwhcG9u -eXRvd24gUlNBIGxldmVsIDIgaW50ZXJtZWRpYXRlMB4XDTE2MTIxMDE3NDIzM1oX -DTIyMDYwMjE3NDIzM1owGTEXMBUGA1UEAwwOdGVzdHNlcnZlci5jb20wggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1YDz66+7VD4DL1+/sVHMQ+BbDRgmD -OQlX++mfW8D3QNQm/qDBEbu7T7qqdc9GKDar4WIzBN8SBkzM1EjMGwNnZPV/Tfz0 -qUAR1L/7Zzf1GaFZvWXgksyUpfwvmprH3Iy/dpkETwtPthpTPNlui3hZnm/5kkjR -RWg9HmID4O04Ld6SK313v2ZgrPZbkKvbqlqhUnYWjL3blKVGbpXIsuZzEU9Ph+gH -tPcEhZpFsM6eLe+2TVscIrycMEOTXqAAmO6zZ9sQWtfllu3CElm904H6+jA/9Leg -al72pMmkYr8wWniqDDuijXuCPlVx5EDFFyxBmW18UeDEQaKV3kNfelaTAgMBAAGj -gb4wgbswDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBsAwHQYDVR0OBBYEFIYhJkVy -AAKT6cY/ruH1Eu+NNxteMEIGA1UdIwQ7MDmAFNwuPy4Do//Sm5CZDrocHWTrNr96 -oR6kHDAaMRgwFgYDVQQDDA9wb255dG93biBSU0EgQ0GCAXswOwYDVR0RBDQwMoIO -dGVzdHNlcnZlci5jb22CFXNlY29uZC50ZXN0c2VydmVyLmNvbYIJbG9jYWxob3N0 -MA0GCSqGSIb3DQEBCwUAA4IBgQCWV76jfQDZKtfmj45fTwZzoe/PxjWPRbAvSEnt -LRHrPhqQfpMLqpun8uu/w86mHiR/AmiAySMu3zivW6wfGzlRWLi/zCyO6r9LGsgH -bNk5CF642cdZFvn1SiSm1oGXQrolIpcyXu88nUpt74RnY4ETCC1dRQKqxsYufe5T -DOmTm3ChinNW4QRG3yvW6DVuyxVAgZvofyKJOsM3GO6oogIM41aBqZ3UTwmIwp6D -oISdiATslFOzYzjnyXNR8DG8OOkv1ehWuyb8x+hQCZAuogQOWYtCSd6k3kKgd0EM -4CWbt1XDV9ZJwBf2uxZeKuCu/KIy9auNtijAwPsUv9qxuzko018zhl3lWm5p2Sqw -O7fFshU3A6df8hMw7ST6/tgFY7geT88U4iJhfWMwr/CZSRSVMXhTyJgbLIXxKYZj -Ym5v4NAIQP6hI4HixzQaYgrhW6YX6myk+emMjQLRJHT8uHvmT7fuxMJVWWgsCkr1 -C75pRQEagykN/Uzr5e6Tm8sVu88= ------END CERTIFICATE----- diff -Nru temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/end.chain temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/end.chain --- temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/end.chain 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/end.chain 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIGnzCCAoegAwIBAgIBezANBgkqhkiG9w0BAQsFADAaMRgwFgYDVQQDDA9wb255 -dG93biBSU0EgQ0EwHhcNMTYxMjEwMTc0MjMzWhcNMjYxMjA4MTc0MjMzWjAsMSow -KAYDVQQDDCFwb255dG93biBSU0EgbGV2ZWwgMiBpbnRlcm1lZGlhdGUwggGiMA0G -CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDnfb7vaJbaHEyVTflswWhmHqx5W0NO -KyKbDp2zXEJwDO+NDJq6i1HGnFd/vO4LyjJBU1wUsKtE+m55cfRmUHVuZ2w4n/VF -p7Z7n+SNuvJNcrzDxyKVy4GIZ39zQePnniqtLqXh6eI8Ow6jiMgVxC/wbWcVLKv6 -4RM+2fLjJAC9b27QfjhOlMKVeMOEvPrrpjLSauaHAktQPhuzIAwzxM0+KnvDkWWy -NVqAV/lq6fSO/9vJRhM4E2nxo6yqi7qTdxVxMmKsNn7L6HvjQgx+FXziAUs55Qd9 -cP7etCmPmoefkcgdbxDOIKH8D+DvfacZwngqcnr/q96Ff4uJ13d2OzR1mWVSZ2hE -JQt/BbZBANciqu9OZf3dj6uOOXgFF705ak0GfLtpZpc29M+fVnknXPDSiKFqjzOO -KL+SRGyuNc9ZYjBKkXPJ1OToAs6JSvgDxfOfX0thuo2rslqfpj2qCFugsRIRAqvb -eyFwg+BPM/P/EfauXlAcQtBF04fOi7xN2okCAwEAAaNeMFwwHQYDVR0OBBYEFNwu -Py4Do//Sm5CZDrocHWTrNr96MCAGA1UdJQEB/wQWMBQGCCsGAQUFBwMBBggrBgEF -BQcDAjAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIB/jANBgkqhkiG9w0BAQsFAAOC -BAEAMHZpBqDIUAVFZNw4XbuimXQ4K8q4uePrLGHLb4F/gHbr8kYrU4H+cy4l+xXf -2dlEBdZoqjSF7uXzQg5Fd8Ff3ZgutXd1xeUJnxo0VdpKIhqeaTPqhffC2X6FQQH5 -KrN7NVWQSnUhPNpBFELpmdpY1lHigFW7nytYj0C6VJ4QsbqhfW+n/t+Zgqtfh/Od -ZbclzxFwMM55zRA2HP6IwXS2+d61Jk/RpDHTzhWdjGH4906zGNNMa7slHpCTA9Ju -TrtjEAGt2PBSievBJOHZW80KVAoEX2n9B3ZABaz+uX0VVZG0D2FwhPpUeA57YiXu -qiktZR4Ankph3LabXp4IlAX16qpYsEW8TWE/HLreeqoM0WDoI6rF9qnTpV2KWqBf -ziMYkfSkT7hQ2bWc493lW+QwSxCsuBsDwlrCwAl6jFSf1+jEQx98/8n9rDNyD9dL -PvECmtF30WY98nwZ9/kO2DufQrd0mwSHcIT0pAwl5fimpkwTjj+TTbytO3M4jK5L -tuIzsViQ95BmJQ3XuLdkQ/Ug8rpECYRX5fQX1qXkkvl920ohpKqKyEji1OmfmJ0Z -tZChaEcu3Mp3U+gD4az2ogmle3i/Phz8ZEPFo4/21G5Qd72z0lBgaQIeyyCk5MHt -Yg0vA7X0/w4bz+OJv5tf7zJsPCYSprr+c/7YUJk9Fqu6+g9ZAavI99xFKdGhz4Og -w0trnKNCxYc6+NPopTDbXuY+fo4DK7C0CSae5sKs7013Ne6w4KvgfLKpvlemkGfg -ZA3+1FMXVfFIEH7Cw9cx6F02Sr3k1VrU68oM3wH5nvTUkELOf8nRMlzliQjVCpKB -yFSe9dzRVSFEbMDxChiEulGgNUHj/6wwpg0ZmCwPRHutppT3jkfEqizN5iHb69GH -k6kol6knJofkaL656Q3Oc9o0ZrMlFh1RwmOvAk5fVK0/CV88/phROz2Wdmy5Bz4a -t0vzqFWA54y6+9EEVoOk9SU0CYfpGtpX4URjLK1EUG/l+RR3366Uee6TPrtEZ9cg -56VQMxhSaRNAvJ6DfiSuscSCNJzwuXaMXSZydGYnnP9Tb9p6c1uy1sXdluZkBIcK -CgC+gdDMSNlDn9ghc4xZGkuA8bjzfAYuRuGKmfTt8uuklkjw2b9w3SHjC4/Cmd2W -cFRnzfg2oL6e78hNg2ZGgsLzvb6Lu6/5IhXCO7RitzYf2+HLBbc+YLFsnG3qeGe1 -28yGnXOQd97Cr4+IzFucVy/33gMQkesNUSDFJSq1gE/hGrMgTTMQJ7yC3PRqg0kG -tpqTyKNdM0g1adxlR1qfDPvpUBApkgBbySnMyWEr5+tBuoHUtH2m49oV9YD4odMJ -yJjlGxituO/YNN6O8oANlraG1Q== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIJBzCCBO+gAwIBAgIJAN7WS1mRS9A+MA0GCSqGSIb3DQEBCwUAMBoxGDAWBgNV -BAMMD3Bvbnl0b3duIFJTQSBDQTAeFw0xNjEyMTAxNzQyMzNaFw0yNjEyMDgxNzQy -MzNaMBoxGDAWBgNVBAMMD3Bvbnl0b3duIFJTQSBDQTCCBCIwDQYJKoZIhvcNAQEB -BQADggQPADCCBAoCggQBAMNEzJ7aNdD2JSk9+NF9Hh2za9OQnt1d/7j6DtE3ieoT -ms8mMSXzoImXZayZ9Glx3yx/RhEb2vmINyb0vRUM4I/GH+XHdOBcs9kaJNv/Mpw4 -Ggd4e1LUqV1pzNrhYwRrTQTKyaDiDX2WEBNfQaaYnHltmSmsfyt3Klj+IMc6CyqV -q8SOQ6Go414Vn++Jj7p3E6owdwuvSvO8ERLobiA6vYB+qrS7E48c4zRIAFIO4uwt -g4TiCJLLWc1fRSoqGGX7KS+LzQF8Pq67IOHVna4e9peSe6nQnm0LQZAmaosYHvF4 -AX0Bj6TLv9PXCAGtB7Pciev5Br0tRZEdVyYfmwiVKUWcp77TghV3W+VaJVhPh5LN -X91ktvpeYek3uglqv2ZHtSG2S1KkBtTkbMOD+a2BEUfq0c0+BIsj6jdvt4cvIfet -4gUOxCvYMBs4/dmNT1zoe/kJ0lf8YXYLsXwVWdIW3jEE8QdkLtLI9XfyU9OKLZuD -mmoAf7ezvv/T3nKLFqhcwUFGgGtCIX+oWC16XSbDPBcKDBwNZn8C49b7BLdxqAg3 -msfxwhYzSs9F1MXt/h2dh7FVmkCSxtgNDX3NJn5/yT6USws2y0AS5vXVP9hRf0NV -KfKn9XlmHCxnZExwm68uZkUUYHB05jSWFojbfWE+Mf9djUeQ4FuwusztZdbyQ4yS -mMtBXO0I6SQBmjCoOa1ySW3DTuw/eKCfq+PoxqWD434bYA9nUa+pE27MP7GLyjCS -6+ED3MACizSF0YxkcC9pWUo4L5FKp+DxnNbtzMIILnsDZTVHOvKUy/gjTyTWm/+7 -2t98l7vBE8gn3Aux0V5WFe2uZIZ07wIi/OThoBO8mpt9Bm5cJTG07JStKEXX/UH1 -nL7cDZ2V5qbf4hJdDy4qixxxIZtmf//1BRlVQ9iYTOsMoy+36DXWbc3vSmjRefW1 -YENt4zxOPe4LUq2Z+LXq1OgVQrHrVevux0vieys7Rr2gA1sH8FaaNwTr7Q8dq+Av -Evk+iOUH4FuYorU1HuGHPkAkvLWosVwlB+VhfEai0V6+PmttmaOnCJNHfFTu5wCu -B9CFJ1tdzTzAbrLwgtWmO70KV7CfZPHO7lMWhSvplU0i5T9WytxP91IoFtXwRSO8 -+Ghyu0ynB3HywCH2dez89Vy903P6PEU0qTnYWRz6D/wi5+yHHNrm9CilWurs/Qex -kyB7lLD7Cb1JJc8QIFTqT6vj+cids3xd245hUdpFyZTX99YbF6IkiB2zGi5wvUmP -f1GPvkTLb7eF7bne9OClEjEqvc0hVJ2abO2WXkqxlQFEYZHNofm+y6bnby/BZZJo -beaSFcLOCe2Z8iZvVnzfHBCeLyWE89gc94z784S3LEsCAwEAAaNQME4wHQYDVR0O -BBYEFNz2wEPCQbx9OdRCNE4eALwHJfIgMB8GA1UdIwQYMBaAFNz2wEPCQbx9OdRC -NE4eALwHJfIgMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggQBACbm2YX7 -sBG0Aslj36gmVlCTTluNg2tuK2isHbK3YhNwujrH/o/o2OV7UeUkZkPwE4g4/SjC -OwDWYniRNyDKBOeD9Q0XxR5z5IZQO+pRVvXF8DXO6kygWCOJM9XheKxp9Uke0aDg -m8F02NslKLUdy7piGlLSz1sgdjiE3izIwFZRpZY7sMozNWWvSAmzprbkE78LghIm -VEydQzIQlr5soWqc65uFLNbEA6QBPoFc6dDW+mnzXf8nrZUM03CACxAsuq/YkjRp -OHgwgfdNRdlu4YhZtuQNak4BUvDmigTGxDC+aMJw0ldL1bLtqLG6BvQbyLNPOOfo -5S8lGh4y06gb//052xHaqtCh5Ax5sHUE5By6wKHAKbuJy26qyKfaRoc3Jigs4Fd5 -3CuoDWHbyXfkgKiU+sc+1mvCxQKFRJ2fpGEFP8iEcLvdUae7ZkRM4Kb0vST+QhQV -fDaFkM3Bwqtui5YaZ6cHHQVyXQdujCmfesoZXKil2yduQ3KWgePjewzRV+aDWMzk -qKaF+TRANSqWbBU6JTwwQ4veKQThU3ir7nS2ovdPbhNS/FnWoKodj6eaqXfdYuBh -XOXLewIF568MJsLOuBubeAO2a9LOlhnv6eLGp2P4M7vwEdN/LRRQtwBBmqq8C3h+ -ewrJP12B/ag0bJDi9vCgPhYtDEpjpfsnxZEIqVZwshJ/MqXykFp2kYk62ylyfDWq -veI/aHwpzT2k+4CI/XmPWXl9NlI50HPdpcwCBDy8xVHwb/x7stNgQdIhaj9tzmKa -S+eqitclc8Iqrbd523H//QDzm8yiqRZUdveNa9gioTMErR0ujCpK8tO8mVZcVfNX -i1/Vsar5++nXcPhxKsd1t8XV2dk3gUZIfMgzLLzs+KSiFg+bT3c7LkCd+I3w30Iv -fh9cxFBAyYO9giwxaCfJgoz7OYqaHOOtASF85UV7gK9ELT7/z+RAcS/UfY1xbd54 -hIi1vRZj8lfkAYNtnYlud44joi1BvW/GZGFCiJ13SSvfHNs9v/5xguyCSgyCc0qx -ZkN/fzj/5wFQbxSl3MPn/JrsvlH6wvJht1SA50uVdUvJ5e5V8EgLYfMqlJNNpTHP -wZcHF+Dw126oyu2KhUxD126Gusxp+tV6I0EEZnVwwduFQWq9xm/gT+qohpveeylf -Q2XGz56DF2udJJnSFGSqzQOl9XopNC/4ecBMwIzqdFSpaWgK3VNAcigyDajgoE4v -ZuiVDEiLhLowZvi1V8GOWzcka7R2BQBjhOLWByQGDcm8cOMS7w8oCSQCaYmJyHvE -tTHq7fX6/sXv0AJqM3ysSdU01IVBNahnr5WEkmQMaFF0DGvRfqkVdKcChwrKv7r2 -DLxargy39i2aQGg= ------END CERTIFICATE----- diff -Nru temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/end.rsa temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/end.rsa --- temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/end.rsa 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/end.rsa 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEogIBAAKCAQEAtWA8+uvu1Q+Ay9fv7FRzEPgWw0YJgzkJV/vpn1vA90DUJv6g -wRG7u0+6qnXPRig2q+FiMwTfEgZMzNRIzBsDZ2T1f0389KlAEdS/+2c39RmhWb1l -4JLMlKX8L5qax9yMv3aZBE8LT7YaUzzZbot4WZ5v+ZJI0UVoPR5iA+DtOC3ekit9 -d79mYKz2W5Cr26paoVJ2Foy925SlRm6VyLLmcxFPT4foB7T3BIWaRbDOni3vtk1b -HCK8nDBDk16gAJjus2fbEFrX5ZbtwhJZvdOB+vowP/S3oGpe9qTJpGK/MFp4qgw7 -oo17gj5VceRAxRcsQZltfFHgxEGild5DX3pWkwIDAQABAoIBAFDTazlSbGML/pRY -TTWeyIw2UkaA7npIr45C13BJfitw+1nJPK/tDCDDveZ6i3yzLPHZhV5A/HtWzWC1 -9R7nptOrnO83PNN2nPOVQFxzOe+ClXGdQkoagQp5EXHRTspj0WD9I+FUrDDAcOjJ -BAgMJPyi6zlnZAXGDVa3NGyQDoZqwU2k36L4rEsJIkG0NVurZhpiCexNkkf32495 -TOINQ0iKdfJ4iZoEYQ9G+x4NiuAJRCHuIcH76SNfT+Uv3wX0ut5EFPtflnvtdgcp -QVcoKwYdO0+mgO5xqWlBcsujSvgBdiNAGnAxKHWiEaacuIJi4+yYovyEebP6QI2X -Zg/U2wkCgYEA794dE5CPXLOmv6nioVC/ubOESk7vjSlEka/XFbKr4EY794YEqrB1 -8TUqg09Bn3396AS1e6P2shr3bxos5ybhOxDGSLnJ+aC0tRFjd1BPKnA80vZM7ggt -5cjmdD5Zp0tIQTIAAYU5bONQOwj0ej4PE7lny26eLa5vfvCwlrD+rM0CgYEAwZMN -W/5PA2A+EM08IaHic8my0dCunrNLF890ouZnDG99SbgMGvvEsGIcCP1sai702hNh -VgGDxCz6/HUy+4O4YNFVtjY7uGEpfIEcEI7CsLQRP2ggWEFxThZtnEtO8PbM3J/i -qcS6njHdE+0XuCjgZwGgva5xH2pkWFzw/AIpEN8CgYB2HOo2axWc8T2n3TCifI+c -EqCOsqXU3cBM+MgxgASQcCUxMkX0AuZguuxPMmS+85xmdoMi+c8NTqgOhlYcEJIR -sqXgw9OH3zF8g6513w7Md+4Ld4rUHyTypGWOUfF1pmVS7RsBpKdtTdWA7FzuIMbt -0HsiujqbheyTFlPuMAOH9QKBgBWS1gJSrWuq5j/pH7J/4EUXTZ6kq1F0mgHlVRJy -qzlvk38LzA2V0a32wTkfRV3wLcnALzDuqkjK2o4YYb42R+5CZlMQaEd8TKtbmE0g -HAKljuaKLFCpun8BcOXiXsHsP5i3GQPisQnAdOsrmWEk7R2NyORa9LCToutWMGVl -uD3xAoGAA183Vldm+m4KPsKS17t8MbwBryDXvowGzruh/Z+PGA0spr+ke4XxwT1y -kMMP1+5flzmjlAf4+W8LehKuVqvQoMlPn5UVHmSxQ7cGx/O/o6Gbn8Q25/6UT+sM -B1Y0rlLoKG62pnkeXp1O4I57gnClatWRg5qw11a8V8e3jvDKIYM= ------END RSA PRIVATE KEY----- diff -Nru temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/test.rs temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/test.rs --- temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/test.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/test.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,225 +0,0 @@ -use futures_util::future::TryFutureExt; -use lazy_static::lazy_static; -use rustls::{ClientConfig, OwnedTrustAnchor}; -use rustls_pemfile::{certs, rsa_private_keys}; -use std::convert::TryFrom; -use std::io::{BufReader, Cursor, ErrorKind}; -use std::net::SocketAddr; -use std::sync::mpsc::channel; -use std::sync::Arc; -use std::time::Duration; -use std::{io, thread}; -use tokio::io::{copy, split, AsyncReadExt, AsyncWriteExt}; -use tokio::net::{TcpListener, TcpStream}; -use tokio::{runtime, time}; -use tokio_rustls::{LazyConfigAcceptor, TlsAcceptor, TlsConnector}; - -const CERT: &str = include_str!("end.cert"); -const CHAIN: &[u8] = include_bytes!("end.chain"); -const RSA: &str = include_str!("end.rsa"); - -lazy_static! { - static ref TEST_SERVER: (SocketAddr, &'static str, &'static [u8]) = { - let cert = certs(&mut BufReader::new(Cursor::new(CERT))) - .unwrap() - .drain(..) - .map(rustls::Certificate) - .collect(); - let mut keys = rsa_private_keys(&mut BufReader::new(Cursor::new(RSA))).unwrap(); - let mut keys = keys.drain(..).map(rustls::PrivateKey); - - let config = rustls::ServerConfig::builder() - .with_safe_defaults() - .with_no_client_auth() - .with_single_cert(cert, keys.next().unwrap()) - .unwrap(); - let acceptor = TlsAcceptor::from(Arc::new(config)); - - let (send, recv) = channel(); - - thread::spawn(move || { - let runtime = runtime::Builder::new_current_thread() - .enable_io() - .build() - .unwrap(); - let runtime = Arc::new(runtime); - let runtime2 = runtime.clone(); - - let done = async move { - let addr = SocketAddr::from(([127, 0, 0, 1], 0)); - let listener = TcpListener::bind(&addr).await?; - - send.send(listener.local_addr()?).unwrap(); - - loop { - let (stream, _) = listener.accept().await?; - - let acceptor = acceptor.clone(); - let fut = async move { - let stream = acceptor.accept(stream).await?; - - let (mut reader, mut writer) = split(stream); - copy(&mut reader, &mut writer).await?; - - Ok(()) as io::Result<()> - } - .unwrap_or_else(|err| eprintln!("server: {:?}", err)); - - runtime2.spawn(fut); - } - } - .unwrap_or_else(|err: io::Error| eprintln!("server: {:?}", err)); - - runtime.block_on(done); - }); - - let addr = recv.recv().unwrap(); - (addr, "testserver.com", CHAIN) - }; -} - -fn start_server() -> &'static (SocketAddr, &'static str, &'static [u8]) { - &*TEST_SERVER -} - -async fn start_client(addr: SocketAddr, domain: &str, config: Arc) -> io::Result<()> { - const FILE: &[u8] = include_bytes!("../README.md"); - - let domain = rustls::ServerName::try_from(domain).unwrap(); - let config = TlsConnector::from(config); - let mut buf = vec![0; FILE.len()]; - - let stream = TcpStream::connect(&addr).await?; - let mut stream = config.connect(domain, stream).await?; - stream.write_all(FILE).await?; - stream.flush().await?; - stream.read_exact(&mut buf).await?; - - assert_eq!(buf, FILE); - - Ok(()) -} - -#[tokio::test] -async fn pass() -> io::Result<()> { - let (addr, domain, chain) = start_server(); - - // TODO: not sure how to resolve this right now but since - // TcpStream::bind now returns a future it creates a race - // condition until its ready sometimes. - use std::time::*; - tokio::time::sleep(Duration::from_secs(1)).await; - - let chain = certs(&mut std::io::Cursor::new(*chain)).unwrap(); - let trust_anchors = chain - .iter() - .map(|cert| { - let ta = webpki::TrustAnchor::try_from_cert_der(&cert[..]).unwrap(); - OwnedTrustAnchor::from_subject_spki_name_constraints( - ta.subject, - ta.spki, - ta.name_constraints, - ) - }) - .collect::>(); - let mut root_store = rustls::RootCertStore::empty(); - root_store.add_server_trust_anchors(trust_anchors.into_iter()); - let config = rustls::ClientConfig::builder() - .with_safe_defaults() - .with_root_certificates(root_store) - .with_no_client_auth(); - let config = Arc::new(config); - - start_client(*addr, domain, config).await?; - - Ok(()) -} - -#[tokio::test] -async fn fail() -> io::Result<()> { - let (addr, domain, chain) = start_server(); - - let chain = certs(&mut std::io::Cursor::new(*chain)).unwrap(); - let trust_anchors = chain - .iter() - .map(|cert| { - let ta = webpki::TrustAnchor::try_from_cert_der(&cert[..]).unwrap(); - OwnedTrustAnchor::from_subject_spki_name_constraints( - ta.subject, - ta.spki, - ta.name_constraints, - ) - }) - .collect::>(); - let mut root_store = rustls::RootCertStore::empty(); - root_store.add_server_trust_anchors(trust_anchors.into_iter()); - let config = rustls::ClientConfig::builder() - .with_safe_defaults() - .with_root_certificates(root_store) - .with_no_client_auth(); - let config = Arc::new(config); - - assert_ne!(domain, &"google.com"); - let ret = start_client(*addr, "google.com", config).await; - assert!(ret.is_err()); - - Ok(()) -} - -#[tokio::test] -async fn test_lazy_config_acceptor() -> io::Result<()> { - let (sconfig, cconfig) = utils::make_configs(); - use std::convert::TryFrom; - - let (cstream, sstream) = tokio::io::duplex(1200); - let domain = rustls::ServerName::try_from("localhost").unwrap(); - tokio::spawn(async move { - let connector = crate::TlsConnector::from(cconfig); - let mut client = connector.connect(domain, cstream).await.unwrap(); - client.write_all(b"hello, world!").await.unwrap(); - - let mut buf = Vec::new(); - client.read_to_end(&mut buf).await.unwrap(); - }); - - let acceptor = LazyConfigAcceptor::new(rustls::server::Acceptor::new().unwrap(), sstream); - let start = acceptor.await.unwrap(); - let ch = start.client_hello(); - - assert_eq!(ch.server_name(), Some("localhost")); - assert_eq!( - ch.alpn() - .map(|protos| protos.collect::>()) - .unwrap_or(Vec::new()), - Vec::<&[u8]>::new() - ); - - let mut stream = start.into_stream(sconfig).await.unwrap(); - let mut buf = [0; 13]; - stream.read_exact(&mut buf).await.unwrap(); - assert_eq!(&buf[..], b"hello, world!"); - - stream.write_all(b"bye").await.unwrap(); - Ok(()) -} - -// This test is a follow-up from https://github.com/tokio-rs/tls/issues/85 -#[tokio::test] -async fn lazy_config_acceptor_eof() { - let buf = Cursor::new(Vec::new()); - let acceptor = LazyConfigAcceptor::new(rustls::server::Acceptor::new().unwrap(), buf); - - let accept_result = match time::timeout(Duration::from_secs(3), acceptor).await { - Ok(res) => res, - Err(_elapsed) => panic!("timeout"), - }; - - match accept_result { - Ok(_) => panic!("accepted a connection from zero bytes of data"), - Err(e) if e.kind() == ErrorKind::UnexpectedEof => {} - Err(e) => panic!("unexpected error: {:?}", e), - } -} - -// Include `utils` module -include!("utils.rs"); diff -Nru temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/utils.rs temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/utils.rs --- temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/utils.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tokio-rustls-0.23.4/tests/utils.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -mod utils { - use std::io::{BufReader, Cursor}; - use std::sync::Arc; - - use rustls::{ClientConfig, OwnedTrustAnchor, PrivateKey, RootCertStore, ServerConfig}; - use rustls_pemfile::{certs, rsa_private_keys}; - - #[allow(dead_code)] - pub fn make_configs() -> (Arc, Arc) { - const CERT: &str = include_str!("end.cert"); - const CHAIN: &str = include_str!("end.chain"); - const RSA: &str = include_str!("end.rsa"); - - let cert = certs(&mut BufReader::new(Cursor::new(CERT))) - .unwrap() - .drain(..) - .map(rustls::Certificate) - .collect(); - let mut keys = rsa_private_keys(&mut BufReader::new(Cursor::new(RSA))).unwrap(); - let mut keys = keys.drain(..).map(PrivateKey); - let sconfig = ServerConfig::builder() - .with_safe_defaults() - .with_no_client_auth() - .with_single_cert(cert, keys.next().unwrap()) - .unwrap(); - - let mut client_root_cert_store = RootCertStore::empty(); - let mut chain = BufReader::new(Cursor::new(CHAIN)); - let certs = certs(&mut chain).unwrap(); - let trust_anchors = certs - .iter() - .map(|cert| { - let ta = webpki::TrustAnchor::try_from_cert_der(&cert[..]).unwrap(); - OwnedTrustAnchor::from_subject_spki_name_constraints( - ta.subject, - ta.spki, - ta.name_constraints, - ) - }) - .collect::>(); - client_root_cert_store.add_server_trust_anchors(trust_anchors.into_iter()); - let cconfig = ClientConfig::builder() - .with_safe_defaults() - .with_root_certificates(client_root_cert_store) - .with_no_client_auth(); - - (Arc::new(sconfig), Arc::new(cconfig)) - } -} diff -Nru temporalio-1.3.0/vendor/tonic/benches/decode.rs temporalio-1.3.0/vendor/tonic/benches/decode.rs --- temporalio-1.3.0/vendor/tonic/benches/decode.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/benches/decode.rs 2023-10-30 19:40:00.000000000 +0000 @@ -22,7 +22,7 @@ b.iter(|| { rt.block_on(async { let decoder = MockDecoder::new($message_size); - let mut stream = Streaming::new_request(decoder, body.clone(), None); + let mut stream = Streaming::new_request(decoder, body.clone(), None, None); let mut count = 0; while let Some(msg) = stream.message().await.unwrap() { diff -Nru temporalio-1.3.0/vendor/tonic/benches-disabled/benchmarks/compiled_protos/helloworld.rs temporalio-1.3.0/vendor/tonic/benches-disabled/benchmarks/compiled_protos/helloworld.rs --- temporalio-1.3.0/vendor/tonic/benches-disabled/benchmarks/compiled_protos/helloworld.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/benches-disabled/benchmarks/compiled_protos/helloworld.rs 2023-10-30 19:40:00.000000000 +0000 @@ -22,7 +22,7 @@ #[doc = r" Attempt to create a new client by connecting to a given endpoint."] pub async fn connect(dst: D) -> Result where - D: std::convert::TryInto, + D: TryInto, D::Error: Into, { let conn = tonic::transport::Endpoint::new(dst)?.connect().await?; @@ -139,7 +139,7 @@ &mut self, request: tonic::Request, ) -> Self::Future { - let inner = self.0.clone(); + let inner = Arc::clone(&self.0); let fut = async move { inner.say_hello(request).await }; Box::pin(fut) } diff -Nru temporalio-1.3.0/vendor/tonic/.cargo-checksum.json temporalio-1.3.0/vendor/tonic/.cargo-checksum.json --- temporalio-1.3.0/vendor/tonic/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"bb15c69a3b73e402a57e35b3bff9fda24b9b86fb44cc1b2a7395e13f5fac0cd6","LICENSE":"4f38e3a425725eb447213c75c0d8ae9f0d1f2ebc4f3183e2106aaf07c23f4b20","benches-disabled/README.md":"e96b49b53ab1d02f426b837f0c98bf1b8722bc2115ae001b7e7b647c2ee7c52e","benches-disabled/bench_main.rs":"8f82376de4f916d17d8738036c964fa6cca240ccaf1262edfb4f526c2d2c25d6","benches-disabled/benchmarks/compiled_protos/diverse_types.rs":"2109a6f689b0d726ef3a6be377eda63a5fe4f17647f5579ba8162fba77535670","benches-disabled/benchmarks/compiled_protos/helloworld.rs":"96abc1fe9082948247004f3361c8690e61fc7074562364942bb6537836b44593","benches-disabled/benchmarks/compiled_protos/mod.rs":"1857aea8b5495e0f7554401dcc4701c477814d4b169bab1f03fe91582f6322ea","benches-disabled/benchmarks/mod.rs":"3f14e7149d164310462a6aeb9c053335b48d5627978f22ff374bb5dbc8e1867c","benches-disabled/benchmarks/request_response.rs":"8adff001d461cbd0d1661875850f592b65bd8d0f635f72f456c872cbcc56fc7a","benches-disabled/benchmarks/request_response_diverse_types.rs":"2cea67f00c29ad34ba8feeefa15686190764ffb7002f1c169acb6f8be752e896","benches-disabled/benchmarks/utils.rs":"9928d8815834336d9c32f6f9508ba57222c1c938d4115d62a0bd9958037421c1","benches-disabled/proto/diverse_types/diverse_types.proto":"273b80dfe1c6b3215cb808c9173a4d4aab9ef8361708f7f354533386dd8852d5","benches-disabled/proto/helloworld/helloworld.proto":"1b5052c8c38afc5e6d122a26f59f9c93a71470f1354f888c07f73e53dec011ee","benches/decode.rs":"48b7c6b244231a3c77a77d57ca721c5bdb76dee6d36e4b8ae95b051d78b97229","src/body.rs":"5709108054569bff75c5a37f718f89e3b77b6e9074f26e8eecb0cec39905670b","src/client/grpc.rs":"11d11e5a52fae8f0c88e2a96a53408651c5eeb68fb6f23997ccd418bf52ab6e6","src/client/mod.rs":"0b43aae7cea7b218d5195da89368fa160d409eb06d620ce12a48951968430353","src/client/service.rs":"04b8d55d03592c426b4eb10e7521b30d8438983dfdd63c01326f7582fe73df58","src/codec/buffer.rs":"64aa0db180ca5e4b8107767eb2dc7f72a9e420d73af9149de25b531d0ee24ab6","src/codec/compression.rs":"e3661c0170990b84c80d581c86e9fea15392dea1ec98518652eef665b58d029e","src/codec/decode.rs":"a6e80a01518ccea28eb00a151bf72bbe74c3051d83efa7d96cf460f28936b95f","src/codec/encode.rs":"ffd0b1642b702093c9aaca9662575a1c60e6898328f78b37e6206b2b81b19d4e","src/codec/mod.rs":"09cdf7a565f3999d65c0b5a114dad6893bf9f4c0f38221d9620b2984cc9e95e1","src/codec/prost.rs":"bc13d7f85f9c0a41819c6efc719d1497774bd0f2004e5e54c0b2b35a4ca98c89","src/codegen.rs":"1e55b6384b7376423fb9aca17be560d75ae7d2c2d8a66051191b9fb6d3842df4","src/extensions.rs":"cba642955ce0180a2ae5c0be5885b2ab305781914ad23a14a8e3d01a757f6959","src/lib.rs":"6212dc35341d3a1b102135a67bcadd2da5f36fc41d57d145a96682b85a7d65cf","src/macros.rs":"9f43c77e85e3d41707ffc654bd909e34c57108274403a8e44bfcf72ef1068648","src/metadata/encoding.rs":"67bd7b9ac083d33b3b70759b664ff7d315b0eb5a63e49a78fbddfd32620a34b9","src/metadata/key.rs":"8c06f18aa6ee7a8905193ffd0bb5b8b9aa3110d2dc31838562dce8ad29677474","src/metadata/map.rs":"e3d19d25c17aab298c3d17939bbb44b20bd9c7fb08adc4d990cd8d0a9a1ceef4","src/metadata/mod.rs":"880494bd1e4d6f6e08285a2aa652ae125b1534491361cc6584aac9e50877fe2f","src/metadata/value.rs":"943ea15e64c6ebfa5f2d0c96840a22be7e822c17e17e238ae921a85bccb8f143","src/request.rs":"8154ed88df542d0f3f46f062d0969f7bfb3a9989d7691a7431e7b4d467532801","src/response.rs":"dcef92d5f93e61a7d2acf1ae4f30dd09af98b9952fcc9358ccdfe73361cd99a9","src/server/grpc.rs":"c8bb8d48577484f78a4dc4a69b9c63a8d9205d744fd7bd1f801281a0139cc7a9","src/server/mod.rs":"93611db086a368345532777ffd87de7a8d6bd4a9782987469fa69bd1acb76013","src/server/service.rs":"68f49bbe8476f7fd1b6abef3e4af90345eae6a2d69b1897f7d30026f3f8e6f86","src/service/interceptor.rs":"64d24e3f70f75693accf4168019ba80f77789e8be1fa0b7d7446879de7427314","src/service/mod.rs":"b59ed230083eda71c914b43937c4193bc654db71eaae452e458efcc9c5e06fde","src/status.rs":"00627f5f01f9c3373f738b746cb8a1ecf35dd63488013b29c3f47af84ac990ed","src/transport/channel/endpoint.rs":"e40a6cbadbec94c1c47dc35a850ca0daf06aace2b24965bbcceda1ef36243729","src/transport/channel/mod.rs":"7f299c44db7013ef6f35d32480ac473a619fd0f0787b87fb00fd950d80bdcb7a","src/transport/channel/tls.rs":"1129a8027813746b7c4ebd52f96d166310c93ea98e6108de27bd04483f642351","src/transport/error.rs":"8ebb508bd1973a7af5736513fa11c933f4691198de9d9c2112ad2b6db1f29d80","src/transport/mod.rs":"98f1a871a282a4c5e5910df88661cdc4a2863df8507acd3ebd46228fac95d884","src/transport/server/conn.rs":"cc929ed4c7b72bb52b9aaaa732f5460c1dbc3fb213e74aac9fdc36dfeb1ffd0a","src/transport/server/incoming.rs":"538155eab460482d1d4016a5f57b57660982ed1b453627fdd9af795906f868e8","src/transport/server/mod.rs":"579762affa9641f984d026db6a5c14187632815e5556c94f1d574d3223cddf1f","src/transport/server/recover_error.rs":"b54719640e2158a42f4f80e4a0c18d341b946b63fdd40ce986ef8d993812cda1","src/transport/server/tls.rs":"02c7a08ca675faa783bcead9fbddbbb16a5e7d16ff5cac4faab4fdb07f3ed45a","src/transport/server/unix.rs":"6f27dc6bf362036551c6ccfa7f97a4948938f2360fbbc81e1a0541522c88a6af","src/transport/service/add_origin.rs":"cafcfbf49ac5e59d7eee18bb7a8d6e12f4d530bac9867763efa7906564a20209","src/transport/service/connection.rs":"67fac11c0519fd2edc381407bf2352a07956f541d8a2bf41669f61e596df3743","src/transport/service/connector.rs":"9a9d9b3654b444b43e483fa03298cccbe1841c88a2a59b96ab1e37818914a2e2","src/transport/service/discover.rs":"ac8d4d226e208b6fb93789a78be195dc6fa98430dece63549cf177df0ae31d39","src/transport/service/executor.rs":"d0b330b36c08517b780b42b5f30682396d1c0026b1b5f8d32c326a389860abde","src/transport/service/grpc_timeout.rs":"26bdabfa51cac7b76ca9f9cbe72c6b137fde55f9d1381b68df2b899e6f1450a5","src/transport/service/io.rs":"f4f75da2a396a54c1ab95a2cb51c7c2e0f10ae2580c90b86ae230a6a625950ce","src/transport/service/mod.rs":"4d53d1c0ffd4e5ea95c67db45297817e7f73579c92b9e2fe176749c00da74b5c","src/transport/service/reconnect.rs":"b2cb554372be7a7b0ba4c641cfc13f564e47dc26eb83d7fef7b421ae5721f6ac","src/transport/service/router.rs":"ef953b1ed40fdf6e32bad304cc4a8f0154031abfbf0dbcb81a0fe0eef816b204","src/transport/service/tls.rs":"5a70983a54a48be06899f4e85ddbb8699907f973fa6c80c1c37271bad5a7d2ba","src/transport/service/user_agent.rs":"9273ca8396175578c41909ac1f8cf3b68c94bc68bacdefc459421106e70f3238","src/transport/tls.rs":"9d2610b84e8cb4c148e271a8d5bf832d86a996e0cb23ed89b7fc8675781062c1","src/util.rs":"1fea02c56fc1d55186e5ec7eea5679453f9ac44f60cc38008a66fadb37ee84ce"},"package":"8f219fad3b929bef19b1f86fbc0358d35daed8f2cac972037ac0dc10bbb8d5fb"} \ No newline at end of file +{"files":{"Cargo.toml":"7d820d8b1734bdbbf19f4e2246f02100faec2f6871da8a564974e7b4d7305bd2","LICENSE":"4f38e3a425725eb447213c75c0d8ae9f0d1f2ebc4f3183e2106aaf07c23f4b20","benches-disabled/README.md":"e96b49b53ab1d02f426b837f0c98bf1b8722bc2115ae001b7e7b647c2ee7c52e","benches-disabled/bench_main.rs":"8f82376de4f916d17d8738036c964fa6cca240ccaf1262edfb4f526c2d2c25d6","benches-disabled/benchmarks/compiled_protos/diverse_types.rs":"2109a6f689b0d726ef3a6be377eda63a5fe4f17647f5579ba8162fba77535670","benches-disabled/benchmarks/compiled_protos/helloworld.rs":"b2a907786f10cffe8bd45b1866918a623e6b9b53ee5218c6b359ae23c14b249b","benches-disabled/benchmarks/compiled_protos/mod.rs":"1857aea8b5495e0f7554401dcc4701c477814d4b169bab1f03fe91582f6322ea","benches-disabled/benchmarks/mod.rs":"3f14e7149d164310462a6aeb9c053335b48d5627978f22ff374bb5dbc8e1867c","benches-disabled/benchmarks/request_response.rs":"8adff001d461cbd0d1661875850f592b65bd8d0f635f72f456c872cbcc56fc7a","benches-disabled/benchmarks/request_response_diverse_types.rs":"2cea67f00c29ad34ba8feeefa15686190764ffb7002f1c169acb6f8be752e896","benches-disabled/benchmarks/utils.rs":"9928d8815834336d9c32f6f9508ba57222c1c938d4115d62a0bd9958037421c1","benches-disabled/proto/diverse_types/diverse_types.proto":"273b80dfe1c6b3215cb808c9173a4d4aab9ef8361708f7f354533386dd8852d5","benches-disabled/proto/helloworld/helloworld.proto":"1b5052c8c38afc5e6d122a26f59f9c93a71470f1354f888c07f73e53dec011ee","benches/decode.rs":"b7bdf715f0d9b1cbf388e472034df79196dbf90859ce1f992a1eb04950f3ae6a","src/body.rs":"07258aa861ecc8bfc7a6a1d4216d8eb500b3df444fded66e609b4ee201993bd3","src/client/grpc.rs":"807be5faf1f811f80fdf486d19e73aa851518ec266065805ff4243d896d03746","src/client/mod.rs":"0b43aae7cea7b218d5195da89368fa160d409eb06d620ce12a48951968430353","src/client/service.rs":"04b8d55d03592c426b4eb10e7521b30d8438983dfdd63c01326f7582fe73df58","src/codec/buffer.rs":"64aa0db180ca5e4b8107767eb2dc7f72a9e420d73af9149de25b531d0ee24ab6","src/codec/compression.rs":"e3661c0170990b84c80d581c86e9fea15392dea1ec98518652eef665b58d029e","src/codec/decode.rs":"6cdf91f12b1ab4efd43c71a6cffaec7e6bf8a9d0dd46db592de11c973b6610c5","src/codec/encode.rs":"dc495a540d989676ee7de479c0b3d6cbc20a6189d6a6eaf727cc38c458ea50ad","src/codec/mod.rs":"f451fc3db459fabf7ec1b006e1337d3773672480e946d1c11342684df800d0b6","src/codec/prost.rs":"bb0cfcba9a08ba0f05128fc2e6cfbbe8e934cc2e95196dea77d02e51df002261","src/codegen.rs":"1cdba80e2a17739534770c6a460280095288bf0d3f0a14a1d95f1e62811e5d6e","src/extensions.rs":"1091c1b1e90d5bc14e21774c65e6f790f9894d797b3eb6407ee80990cadc3a95","src/lib.rs":"85d16f0e76b3b3e47e71fa3ebd89f2ecd0daa065d5f8610561caee66a11233cc","src/macros.rs":"9f43c77e85e3d41707ffc654bd909e34c57108274403a8e44bfcf72ef1068648","src/metadata/encoding.rs":"7d36b24fb7ea4dbab819e8b4b884fd560925811121824a627ea7ecec6dbaf233","src/metadata/key.rs":"f0269498b0ef457ab010cf5d5864023b83d3b488dd652aad83f114ec6e828727","src/metadata/map.rs":"889f4a2533a0f130b3473be39ec4ce2158d4aaea7af6fcdae481e466a8682fe6","src/metadata/mod.rs":"880494bd1e4d6f6e08285a2aa652ae125b1534491361cc6584aac9e50877fe2f","src/metadata/value.rs":"6cefe63962df53af311e855448af26f6b91ff7ca7decb41c33dbbbf4cc419beb","src/request.rs":"b20929c51a553963adfdbbace9ef2935242aced87cd6e98e81832a7eb3cc276c","src/response.rs":"3ba51789093ae175f7703d309fc679dfef53b1cec31e25acd086a710f9d2cb97","src/server/grpc.rs":"5e89013da406d0d1626fe192186135cf4dc89282e9f83968af982d038f649fcb","src/server/mod.rs":"93611db086a368345532777ffd87de7a8d6bd4a9782987469fa69bd1acb76013","src/server/service.rs":"68f49bbe8476f7fd1b6abef3e4af90345eae6a2d69b1897f7d30026f3f8e6f86","src/service/interceptor.rs":"bb1028f477b0b6829ede4b64acef2d8a1397ae75092785ff31f7090812852783","src/service/mod.rs":"b59ed230083eda71c914b43937c4193bc654db71eaae452e458efcc9c5e06fde","src/status.rs":"39174eff517b24432052bd2c4cdb65b55c87ed5bec4c028d8046687b4b938b78","src/transport/channel/endpoint.rs":"6d0818453767fb41d083c965b86b50d7683a7b855d36a31ba9a4d11f46538c1c","src/transport/channel/mod.rs":"7f299c44db7013ef6f35d32480ac473a619fd0f0787b87fb00fd950d80bdcb7a","src/transport/channel/tls.rs":"640e9a965cbd0fddfd6a8e6f94eee77393a54dc706dcea3ec4ede416e5cd77ab","src/transport/error.rs":"4c961c4b31d33d9d7d08d89e5c1d61d912286c52849c882174d3a284e71fc694","src/transport/mod.rs":"cd1c429946700dfcd0f4b72f3101b7ff083d7ecde4ad7e7b3f689802e411959e","src/transport/server/conn.rs":"3b46346fca7bf6de3e8ff254688dc35f943a42d41f1ab08656ce8eda86b03942","src/transport/server/incoming.rs":"7709643cea420c885e93d1fd1eb67f7cf7cab9d94265487d3b42f03242df9527","src/transport/server/mod.rs":"579762affa9641f984d026db6a5c14187632815e5556c94f1d574d3223cddf1f","src/transport/server/recover_error.rs":"b54719640e2158a42f4f80e4a0c18d341b946b63fdd40ce986ef8d993812cda1","src/transport/server/tls.rs":"ce4ed37b019184f11f3c76544e539489b646c278c4d94f0a48f654f82206d237","src/transport/server/unix.rs":"6f27dc6bf362036551c6ccfa7f97a4948938f2360fbbc81e1a0541522c88a6af","src/transport/service/add_origin.rs":"cafcfbf49ac5e59d7eee18bb7a8d6e12f4d530bac9867763efa7906564a20209","src/transport/service/connection.rs":"67fac11c0519fd2edc381407bf2352a07956f541d8a2bf41669f61e596df3743","src/transport/service/connector.rs":"067d56a0a8e9927bbd5f672e2a1ccc1d071cc487b2e75da77e5b2032979efcf5","src/transport/service/discover.rs":"e41ba812575747ffd584c068ee8ff430ff889d8f26b6d4ef8493a0d77f122e68","src/transport/service/executor.rs":"d0b330b36c08517b780b42b5f30682396d1c0026b1b5f8d32c326a389860abde","src/transport/service/grpc_timeout.rs":"26bdabfa51cac7b76ca9f9cbe72c6b137fde55f9d1381b68df2b899e6f1450a5","src/transport/service/io.rs":"e66fec3a6b134ca409e9230b933c58d55d5cc35b5263a8d5c562c20fa3ffbcd3","src/transport/service/mod.rs":"4d53d1c0ffd4e5ea95c67db45297817e7f73579c92b9e2fe176749c00da74b5c","src/transport/service/reconnect.rs":"b2cb554372be7a7b0ba4c641cfc13f564e47dc26eb83d7fef7b421ae5721f6ac","src/transport/service/router.rs":"54ce2741ced3ed9fede8c81c6c13990ebb6589042429418047339212647a33bb","src/transport/service/tls.rs":"a88eba0f20197d52525ffa26e0a97148354a947aee5a5a669a2f04ac845d0e98","src/transport/service/user_agent.rs":"9273ca8396175578c41909ac1f8cf3b68c94bc68bacdefc459421106e70f3238","src/transport/tls.rs":"9d2610b84e8cb4c148e271a8d5bf832d86a996e0cb23ed89b7fc8675781062c1","src/util.rs":"0145f073b7af94deb951cff3621928998edb3fd4fe826cf70d90fe69e13cb655"},"package":"3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/tonic/Cargo.toml temporalio-1.3.0/vendor/tonic/Cargo.toml --- temporalio-1.3.0/vendor/tonic/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,15 +10,15 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" +edition = "2021" name = "tonic" -version = "0.8.3" +version = "0.9.2" authors = ["Lucio Franco "] description = """ A gRPC over HTTP/2 implementation focused on high performance, interoperability, and flexibility. """ homepage = "https://github.com/hyperium/tonic" -documentation = "https://docs.rs/tonic/0.8.2/tonic/" +documentation = "https://docs.rs/tonic/0.9.2" readme = "README.md" keywords = [ "rpc", @@ -48,18 +48,19 @@ [dependencies.async-stream] version = "0.3" +optional = true [dependencies.async-trait] version = "0.1.13" optional = true [dependencies.axum] -version = "0.6" +version = "0.6.9" optional = true default_features = false [dependencies.base64] -version = "0.13" +version = "0.21" [dependencies.bytes] version = "1.0" @@ -101,14 +102,11 @@ [dependencies.pin-project] version = "1.0.11" -[dependencies.prost-derive] -version = "0.11" -optional = true - -[dependencies.prost1] +[dependencies.prost] version = "0.11" +features = ["std"] optional = true -package = "prost" +default-features = false [dependencies.rustls-native-certs] version = "0.6.1" @@ -120,20 +118,20 @@ [dependencies.tokio] version = "1.0.1" -features = ["net"] +features = [ + "net", + "time", + "macros", +] optional = true [dependencies.tokio-rustls] -version = "0.23.1" +version = "0.24.0" optional = true [dependencies.tokio-stream] version = "0.1" -[dependencies.tokio-util] -version = "0.7" -features = ["codec"] - [dependencies.tower] version = "0.4.7" features = [ @@ -158,12 +156,8 @@ [dependencies.tracing] version = "0.1" -[dependencies.tracing-futures] -version = "0.2" -optional = true - [dependencies.webpki-roots] -version = "0.22.1" +version = "0.23.0" optional = true [dev-dependencies.bencher] @@ -194,41 +188,36 @@ [features] channel = [ - "h2", - "hyper", - "tokio", - "tower", - "tracing-futures", - "tokio/macros", - "tokio/time", - "hyper-timeout", + "dep:h2", + "dep:hyper", + "dep:tokio", + "dep:tower", + "dep:hyper-timeout", ] -codegen = ["async-trait"] +codegen = ["dep:async-trait"] default = [ "transport", "codegen", "prost", ] -gzip = ["flate2"] -prost = [ - "prost1", - "prost-derive", -] +gzip = ["dep:flate2"] +prost = ["dep:prost"] tls = [ - "rustls-pemfile", + "dep:rustls-pemfile", "transport", - "tokio-rustls", + "dep:tokio-rustls", + "dep:async-stream", ] tls-roots = [ "tls-roots-common", - "rustls-native-certs", + "dep:rustls-native-certs", ] tls-roots-common = ["tls"] tls-webpki-roots = [ "tls-roots-common", - "webpki-roots", + "dep:webpki-roots", ] transport = [ - "axum", + "dep:axum", "channel", ] diff -Nru temporalio-1.3.0/vendor/tonic/src/body.rs temporalio-1.3.0/vendor/tonic/src/body.rs --- temporalio-1.3.0/vendor/tonic/src/body.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/body.rs 2023-10-30 19:40:00.000000000 +0000 @@ -14,8 +14,6 @@ body.map_err(crate::Status::map_error).boxed_unsync() } -// this also exists in `crate::codegen` but we need it here since `codegen` has -// `#[cfg(feature = "codegen")]`. /// Create an empty `BoxBody` pub fn empty_body() -> BoxBody { http_body::Empty::new() diff -Nru temporalio-1.3.0/vendor/tonic/src/client/grpc.rs temporalio-1.3.0/vendor/tonic/src/client/grpc.rs --- temporalio-1.3.0/vendor/tonic/src/client/grpc.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/client/grpc.rs 2023-10-30 19:40:00.000000000 +0000 @@ -39,6 +39,10 @@ accept_compression_encodings: EnabledCompressionEncodings, /// The compression encoding that will be applied to requests. send_compression_encodings: Option, + /// Limits the maximum size of a decoded message. + max_decoding_message_size: Option, + /// Limits the maximum size of an encoded message. + max_encoding_message_size: Option, } impl Grpc { @@ -58,6 +62,8 @@ origin, send_compression_encodings: None, accept_compression_encodings: EnabledCompressionEncodings::default(), + max_decoding_message_size: None, + max_encoding_message_size: None, }, } } @@ -124,6 +130,66 @@ self } + /// Limits the maximum size of a decoded message. + /// + /// # Example + /// + /// The most common way of using this is through a client generated by tonic-build: + /// + /// ```rust + /// use tonic::transport::Channel; + /// # struct TestClient(T); + /// # impl TestClient { + /// # fn new(channel: T) -> Self { Self(channel) } + /// # fn max_decoding_message_size(self, _: usize) -> Self { self } + /// # } + /// + /// # async { + /// let channel = Channel::builder("127.0.0.1:3000".parse().unwrap()) + /// .connect() + /// .await + /// .unwrap(); + /// + /// // Set the limit to 2MB, Defaults to 4MB. + /// let limit = 2 * 1024 * 1024; + /// let client = TestClient::new(channel).max_decoding_message_size(limit); + /// # }; + /// ``` + pub fn max_decoding_message_size(mut self, limit: usize) -> Self { + self.config.max_decoding_message_size = Some(limit); + self + } + + /// Limits the maximum size of an ecoded message. + /// + /// # Example + /// + /// The most common way of using this is through a client generated by tonic-build: + /// + /// ```rust + /// use tonic::transport::Channel; + /// # struct TestClient(T); + /// # impl TestClient { + /// # fn new(channel: T) -> Self { Self(channel) } + /// # fn max_encoding_message_size(self, _: usize) -> Self { self } + /// # } + /// + /// # async { + /// let channel = Channel::builder("127.0.0.1:3000".parse().unwrap()) + /// .connect() + /// .await + /// .unwrap(); + /// + /// // Set the limit to 2MB, Defaults to 4MB. + /// let limit = 2 * 1024 * 1024; + /// let client = TestClient::new(channel).max_encoding_message_size(limit); + /// # }; + /// ``` + pub fn max_encoding_message_size(mut self, limit: usize) -> Self { + self.config.max_encoding_message_size = Some(limit); + self + } + /// Check if the inner [`GrpcService`] is able to accept a new request. /// /// This will call [`GrpcService::poll_ready`] until it returns ready or @@ -228,7 +294,14 @@ M2: Send + Sync + 'static, { let request = request - .map(|s| encode_client(codec.encoder(), s, self.config.send_compression_encodings)) + .map(|s| { + encode_client( + codec.encoder(), + s, + self.config.send_compression_encodings, + self.config.max_encoding_message_size, + ) + }) .map(BoxBody::new); let request = self.config.prepare_request(request, path); @@ -278,7 +351,13 @@ let response = response.map(|body| { if expect_additional_trailers { - Streaming::new_response(decoder, body, status_code, encoding) + Streaming::new_response( + decoder, + body, + status_code, + encoding, + self.config.max_decoding_message_size, + ) } else { Streaming::new_empty(decoder, body) } @@ -291,9 +370,9 @@ impl GrpcConfig { fn prepare_request( &self, - request: Request>, + request: Request, path: PathAndQuery, - ) -> http::Request> { + ) -> http::Request { let scheme = self.origin.scheme().cloned(); let authority = self.origin.authority().cloned(); @@ -350,6 +429,8 @@ origin: self.config.origin.clone(), send_compression_encodings: self.config.send_compression_encodings, accept_compression_encodings: self.config.accept_compression_encodings, + max_encoding_message_size: self.config.max_encoding_message_size, + max_decoding_message_size: self.config.max_decoding_message_size, }, } } @@ -373,6 +454,16 @@ &self.config.accept_compression_encodings, ); + f.field( + "max_decoding_message_size", + &self.config.max_decoding_message_size, + ); + + f.field( + "max_encoding_message_size", + &self.config.max_encoding_message_size, + ); + f.finish() } } diff -Nru temporalio-1.3.0/vendor/tonic/src/codec/decode.rs temporalio-1.3.0/vendor/tonic/src/codec/decode.rs --- temporalio-1.3.0/vendor/tonic/src/codec/decode.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/codec/decode.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ use super::compression::{decompress, CompressionEncoding}; -use super::{DecodeBuf, Decoder, HEADER_SIZE}; +use super::{DecodeBuf, Decoder, DEFAULT_MAX_RECV_MESSAGE_SIZE, HEADER_SIZE}; use crate::{body::BoxBody, metadata::MetadataMap, Code, Status}; use bytes::{Buf, BufMut, BytesMut}; use futures_core::Stream; @@ -32,6 +32,7 @@ trailers: Option, decompress_buf: BytesMut, encoding: Option, + max_message_size: Option, } impl Unpin for Streaming {} @@ -46,7 +47,7 @@ Error, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Eq)] enum Direction { Request, Response(StatusCode), @@ -59,13 +60,20 @@ body: B, status_code: StatusCode, encoding: Option, + max_message_size: Option, ) -> Self where B: Body + Send + 'static, B::Error: Into, D: Decoder + Send + 'static, { - Self::new(decoder, body, Direction::Response(status_code), encoding) + Self::new( + decoder, + body, + Direction::Response(status_code), + encoding, + max_message_size, + ) } pub(crate) fn new_empty(decoder: D, body: B) -> Self @@ -74,17 +82,28 @@ B::Error: Into, D: Decoder + Send + 'static, { - Self::new(decoder, body, Direction::EmptyResponse, None) + Self::new(decoder, body, Direction::EmptyResponse, None, None) } #[doc(hidden)] - pub fn new_request(decoder: D, body: B, encoding: Option) -> Self + pub fn new_request( + decoder: D, + body: B, + encoding: Option, + max_message_size: Option, + ) -> Self where B: Body + Send + 'static, B::Error: Into, D: Decoder + Send + 'static, { - Self::new(decoder, body, Direction::Request, encoding) + Self::new( + decoder, + body, + Direction::Request, + encoding, + max_message_size, + ) } fn new( @@ -92,6 +111,7 @@ body: B, direction: Direction, encoding: Option, + max_message_size: Option, ) -> Self where B: Body + Send + 'static, @@ -111,6 +131,7 @@ trailers: None, decompress_buf: BytesMut::new(), encoding, + max_message_size, }, } } @@ -151,7 +172,21 @@ return Err(Status::new(Code::Internal, message)); } }; + let len = self.buf.get_u32() as usize; + let limit = self + .max_message_size + .unwrap_or(DEFAULT_MAX_RECV_MESSAGE_SIZE); + if len > limit { + return Err(Status::new( + Code::OutOfRange, + format!( + "Error, message length too large: found {} bytes, the limit is: {} bytes", + len, limit + ), + )); + } + self.buf.reserve(len); self.state = State::ReadBody { @@ -199,6 +234,10 @@ let chunk = match ready!(Pin::new(&mut self.body).poll_data(cx)) { Some(Ok(d)) => Some(d), Some(Err(e)) => { + if self.direction == Direction::Request && e.code() == Code::Cancelled { + return Poll::Ready(Ok(None)); + } + let _ = std::mem::replace(&mut self.state, State::Error); let err: crate::Error = e.into(); debug!("decoder inner stream error: {:?}", err); diff -Nru temporalio-1.3.0/vendor/tonic/src/codec/encode.rs temporalio-1.3.0/vendor/tonic/src/codec/encode.rs --- temporalio-1.3.0/vendor/tonic/src/codec/encode.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/codec/encode.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,5 @@ use super::compression::{compress, CompressionEncoding, SingleMessageCompressionOverride}; -use super::{EncodeBuf, Encoder, HEADER_SIZE}; +use super::{EncodeBuf, Encoder, DEFAULT_MAX_SEND_MESSAGE_SIZE, HEADER_SIZE}; use crate::{Code, Status}; use bytes::{BufMut, Bytes, BytesMut}; use futures_core::{Stream, TryStream}; @@ -19,12 +19,20 @@ source: U, compression_encoding: Option, compression_override: SingleMessageCompressionOverride, + max_message_size: Option, ) -> EncodeBody>> where T: Encoder, U: Stream>, { - let stream = encode(encoder, source, compression_encoding, compression_override).into_stream(); + let stream = encode( + encoder, + source, + compression_encoding, + compression_override, + max_message_size, + ) + .into_stream(); EncodeBody::new_server(stream) } @@ -33,6 +41,7 @@ encoder: T, source: U, compression_encoding: Option, + max_message_size: Option, ) -> EncodeBody>> where T: Encoder, @@ -43,6 +52,7 @@ source.map(Ok), compression_encoding, SingleMessageCompressionOverride::default(), + max_message_size, ) .into_stream(); EncodeBody::new_client(stream) @@ -53,6 +63,7 @@ source: U, compression_encoding: Option, compression_override: SingleMessageCompressionOverride, + max_message_size: Option, ) -> impl TryStream where T: Encoder, @@ -81,6 +92,7 @@ &mut buf, &mut uncompression_buf, compression_encoding, + max_message_size, item, ) }) @@ -91,6 +103,7 @@ buf: &mut BytesMut, uncompression_buf: &mut BytesMut, compression_encoding: Option, + max_message_size: Option, item: T::Item, ) -> Result where @@ -119,14 +132,26 @@ } // now that we know length, we can write the header - finish_encoding(compression_encoding, buf) + finish_encoding(compression_encoding, max_message_size, buf) } fn finish_encoding( compression_encoding: Option, + max_message_size: Option, buf: &mut BytesMut, ) -> Result { let len = buf.len() - HEADER_SIZE; + let limit = max_message_size.unwrap_or(DEFAULT_MAX_SEND_MESSAGE_SIZE); + if len > limit { + return Err(Status::new( + Code::OutOfRange, + format!( + "Error, message length too large: found {} bytes, the limit is: {} bytes", + len, limit + ), + )); + } + if len > std::u32::MAX as usize { return Err(Status::resource_exhausted(format!( "Cannot return body with more than 4GB of data but got {len} bytes" diff -Nru temporalio-1.3.0/vendor/tonic/src/codec/mod.rs temporalio-1.3.0/vendor/tonic/src/codec/mod.rs --- temporalio-1.3.0/vendor/tonic/src/codec/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/codec/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -29,6 +29,10 @@ // data length std::mem::size_of::(); +// The default maximum uncompressed size in bytes for a message. Defaults to 4MB. +const DEFAULT_MAX_RECV_MESSAGE_SIZE: usize = 4 * 1024 * 1024; +const DEFAULT_MAX_SEND_MESSAGE_SIZE: usize = usize::MAX; + /// Trait that knows how to encode and decode gRPC messages. pub trait Codec { /// The encodable message. diff -Nru temporalio-1.3.0/vendor/tonic/src/codec/prost.rs temporalio-1.3.0/vendor/tonic/src/codec/prost.rs --- temporalio-1.3.0/vendor/tonic/src/codec/prost.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/codec/prost.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,7 @@ use super::{Codec, DecodeBuf, Decoder, Encoder}; use crate::codec::EncodeBuf; use crate::{Code, Status}; -use prost1::Message; +use prost::Message; use std::marker::PhantomData; /// A [`Codec`] that implements `application/grpc+proto` via the prost library.. @@ -69,7 +69,7 @@ } } -fn from_decode_error(error: prost1::DecodeError) -> crate::Status { +fn from_decode_error(error: prost::DecodeError) -> crate::Status { // Map Protobuf parse errors to an INTERNAL status code, as per // https://github.com/grpc/grpc/blob/master/doc/statuscodes.md Status::new(Code::Internal, error.to_string()) @@ -81,11 +81,13 @@ use crate::codec::{ encode_server, DecodeBuf, Decoder, EncodeBuf, Encoder, Streaming, HEADER_SIZE, }; - use crate::Status; + use crate::{Code, Status}; use bytes::{Buf, BufMut, BytesMut}; use http_body::Body; const LEN: usize = 10000; + // The maximum uncompressed size in bytes for a message. Set to 2MB. + const MAX_MESSAGE_SIZE: usize = 2 * 1024 * 1024; #[tokio::test] async fn decode() { @@ -103,7 +105,7 @@ let body = body::MockBody::new(&buf[..], 10005, 0); - let mut stream = Streaming::new_request(decoder, body, None); + let mut stream = Streaming::new_request(decoder, body, None, None); let mut i = 0usize; while let Some(output_msg) = stream.message().await.unwrap() { @@ -114,6 +116,39 @@ } #[tokio::test] + async fn decode_max_message_size_exceeded() { + let decoder = MockDecoder::default(); + + let msg = vec![0u8; MAX_MESSAGE_SIZE + 1]; + + let mut buf = BytesMut::new(); + + buf.reserve(msg.len() + HEADER_SIZE); + buf.put_u8(0); + buf.put_u32(msg.len() as u32); + + buf.put(&msg[..]); + + let body = body::MockBody::new(&buf[..], MAX_MESSAGE_SIZE + HEADER_SIZE + 1, 0); + + let mut stream = Streaming::new_request(decoder, body, None, Some(MAX_MESSAGE_SIZE)); + + let actual = stream.message().await.unwrap_err(); + + let expected = Status::new( + Code::OutOfRange, + format!( + "Error, message length too large: found {} bytes, the limit is: {} bytes", + msg.len(), + MAX_MESSAGE_SIZE + ), + ); + + assert_eq!(actual.code(), expected.code()); + assert_eq!(actual.message(), expected.message()); + } + + #[tokio::test] async fn encode() { let encoder = MockEncoder::default(); @@ -127,6 +162,7 @@ source, None, SingleMessageCompressionOverride::default(), + None, ); futures_util::pin_mut!(body); @@ -136,6 +172,38 @@ } } + #[tokio::test] + async fn encode_max_message_size_exceeded() { + let encoder = MockEncoder::default(); + + let msg = vec![0u8; MAX_MESSAGE_SIZE + 1]; + + let messages = std::iter::once(Ok::<_, Status>(msg)); + let source = futures_util::stream::iter(messages); + + let body = encode_server( + encoder, + source, + None, + SingleMessageCompressionOverride::default(), + Some(MAX_MESSAGE_SIZE), + ); + + futures_util::pin_mut!(body); + + assert!(body.data().await.is_none()); + assert_eq!( + body.trailers() + .await + .expect("no error polling trailers") + .expect("some trailers") + .get("grpc-status") + .expect("grpc-status header"), + "11" + ); + assert!(body.is_end_stream()); + } + // skip on windows because CI stumbles over our 4GB allocation #[cfg(not(target_family = "windows"))] #[tokio::test] @@ -152,6 +220,7 @@ source, None, SingleMessageCompressionOverride::default(), + Some(usize::MAX), ); futures_util::pin_mut!(body); diff -Nru temporalio-1.3.0/vendor/tonic/src/codegen.rs temporalio-1.3.0/vendor/tonic/src/codegen.rs --- temporalio-1.3.0/vendor/tonic/src/codegen.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/codegen.rs 2023-10-30 19:40:00.000000000 +0000 @@ -11,20 +11,14 @@ pub use tower_service::Service; pub type StdError = Box; pub use crate::codec::{CompressionEncoding, EnabledCompressionEncodings}; +pub use crate::extensions::GrpcMethod; pub use crate::service::interceptor::InterceptedService; pub use bytes::Bytes; +pub use http; pub use http_body::Body; pub type BoxFuture = self::Pin> + Send + 'static>>; pub type BoxStream = self::Pin> + Send + 'static>>; -pub mod http { - pub use http::*; -} - -pub fn empty_body() -> crate::body::BoxBody { - http_body::Empty::new() - .map_err(|err| match err {}) - .boxed_unsync() -} +pub use crate::body::empty_body; diff -Nru temporalio-1.3.0/vendor/tonic/src/extensions.rs temporalio-1.3.0/vendor/tonic/src/extensions.rs --- temporalio-1.3.0/vendor/tonic/src/extensions.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/extensions.rs 2023-10-30 19:40:00.000000000 +0000 @@ -71,3 +71,27 @@ f.debug_struct("Extensions").finish() } } + +/// A gRPC Method info extension. +#[derive(Debug)] +pub struct GrpcMethod { + service: &'static str, + method: &'static str, +} + +impl GrpcMethod { + /// Create a new `GrpcMethod` extension. + #[doc(hidden)] + pub fn new(service: &'static str, method: &'static str) -> Self { + Self { service, method } + } + + /// gRPC service name + pub fn service(&self) -> &str { + self.service + } + /// gRPC method name + pub fn method(&self) -> &str { + self.method + } +} diff -Nru temporalio-1.3.0/vendor/tonic/src/lib.rs temporalio-1.3.0/vendor/tonic/src/lib.rs --- temporalio-1.3.0/vendor/tonic/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -53,6 +53,14 @@ //! to build even more feature rich clients and servers. This module also provides the ability to //! enable TLS using [`rustls`], via the `tls` feature flag. //! +//! # Code generated client/server configuration +//! +//! ## Max Message Size +//! +//! Currently, both servers and clients can be configured to set the max message encoding and +//! decoding size. This will ensure that an incoming gRPC message will not exahust the systems +//! memory. By default, the decoding message limit is `4MB` and the encoding limit is `usize::MAX`. +//! //! [gRPC]: https://grpc.io //! [`tonic`]: https://github.com/hyperium/tonic //! [`tokio`]: https://docs.rs/tokio @@ -81,7 +89,7 @@ #![doc( html_logo_url = "https://raw.githubusercontent.com/tokio-rs/website/master/public/img/icons/tonic.svg" )] -#![doc(html_root_url = "https://docs.rs/tonic/0.8.3")] +#![doc(html_root_url = "https://docs.rs/tonic/0.9.2")] #![doc(issue_tracker_base_url = "https://github.com/hyperium/tonic/issues/")] #![doc(test(no_crate_inject, attr(deny(rust_2018_idioms))))] #![cfg_attr(docsrs, feature(doc_cfg))] @@ -111,7 +119,7 @@ #[doc(inline)] pub use codec::Streaming; -pub use extensions::Extensions; +pub use extensions::{Extensions, GrpcMethod}; pub use request::{IntoRequest, IntoStreamingRequest, Request}; pub use response::Response; pub use status::{Code, Status}; diff -Nru temporalio-1.3.0/vendor/tonic/src/metadata/encoding.rs temporalio-1.3.0/vendor/tonic/src/metadata/encoding.rs --- temporalio-1.3.0/vendor/tonic/src/metadata/encoding.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/metadata/encoding.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,3 +1,4 @@ +use base64::Engine as _; use bytes::Bytes; use http::header::HeaderValue; use std::error::Error; @@ -127,7 +128,7 @@ } fn from_bytes(value: &[u8]) -> Result { - let encoded_value: String = base64::encode_config(value, base64::STANDARD_NO_PAD); + let encoded_value: String = crate::util::base64::STANDARD_NO_PAD.encode(value); HeaderValue::from_maybe_shared(Bytes::from(encoded_value)) .map_err(|_| InvalidMetadataValueBytes::new()) } @@ -137,7 +138,7 @@ } fn from_static(value: &'static str) -> HeaderValue { - if base64::decode(value).is_err() { + if crate::util::base64::STANDARD.decode(value).is_err() { panic!("Invalid base64 passed to from_static: {}", value); } unsafe { @@ -148,13 +149,14 @@ } fn decode(value: &[u8]) -> Result { - base64::decode(value) + crate::util::base64::STANDARD + .decode(value) .map(|bytes_vec| bytes_vec.into()) .map_err(|_| InvalidMetadataValueBytes::new()) } fn equals(a: &HeaderValue, b: &[u8]) -> bool { - if let Ok(decoded) = base64::decode(a.as_bytes()) { + if let Ok(decoded) = crate::util::base64::STANDARD.decode(a.as_bytes()) { decoded == b } else { a.as_bytes() == b diff -Nru temporalio-1.3.0/vendor/tonic/src/metadata/key.rs temporalio-1.3.0/vendor/tonic/src/metadata/key.rs --- temporalio-1.3.0/vendor/tonic/src/metadata/key.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/metadata/key.rs 2023-10-30 19:40:00.000000000 +0000 @@ -42,7 +42,7 @@ match HeaderName::from_bytes(src) { Ok(name) => { if !VE::is_valid_key(name.as_str()) { - panic!("invalid metadata key") + return Err(InvalidMetadataKey::new()); } Ok(MetadataKey { @@ -247,7 +247,7 @@ /// ``` #[inline] fn eq(&self, other: &MetadataKey) -> bool { - (*other).inner == *self + other.inner == *self } } @@ -282,3 +282,30 @@ } impl Error for InvalidMetadataKey {} + +#[cfg(test)] +mod tests { + use super::{AsciiMetadataKey, BinaryMetadataKey}; + + #[test] + fn test_from_bytes_binary() { + assert!(BinaryMetadataKey::from_bytes(b"").is_err()); + assert!(BinaryMetadataKey::from_bytes(b"\xFF").is_err()); + assert!(BinaryMetadataKey::from_bytes(b"abc").is_err()); + assert_eq!( + BinaryMetadataKey::from_bytes(b"abc-bin").unwrap().as_str(), + "abc-bin" + ); + } + + #[test] + fn test_from_bytes_ascii() { + assert!(AsciiMetadataKey::from_bytes(b"").is_err()); + assert!(AsciiMetadataKey::from_bytes(b"\xFF").is_err()); + assert_eq!( + AsciiMetadataKey::from_bytes(b"abc").unwrap().as_str(), + "abc" + ); + assert!(AsciiMetadataKey::from_bytes(b"abc-bin").is_err()); + } +} diff -Nru temporalio-1.3.0/vendor/tonic/src/metadata/map.rs temporalio-1.3.0/vendor/tonic/src/metadata/map.rs --- temporalio-1.3.0/vendor/tonic/src/metadata/map.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/metadata/map.rs 2023-10-30 19:40:00.000000000 +0000 @@ -958,7 +958,7 @@ /// use `insert_bin`. /// /// This method panics when the given key is a string and it cannot be - /// converted to a MetadataKey. + /// converted to a `MetadataKey`. /// /// If the map did not previously have this key present, then `None` is /// returned. @@ -1008,7 +1008,7 @@ /// Like insert, but for Binary keys (for example "trace-proto-bin"). /// /// This method panics when the given key is a string and it cannot be - /// converted to a MetadataKey. + /// converted to a `MetadataKey`. /// /// # Examples /// @@ -1050,7 +1050,7 @@ /// use `append_bin`. /// /// This method panics when the given key is a string and it cannot be - /// converted to a MetadataKey. + /// converted to a `MetadataKey`. /// /// If the map did not previously have this key present, then `false` is /// returned. @@ -1099,7 +1099,7 @@ /// Like append, but for binary keys (for example "trace-proto-bin"). /// /// This method panics when the given key is a string and it cannot be - /// converted to a MetadataKey. + /// converted to a `MetadataKey`. /// /// # Examples /// @@ -1362,7 +1362,7 @@ match self.inner { Some(ref mut inner) => inner .next() - .map(&MetadataValue::unchecked_from_header_value_ref), + .map(MetadataValue::unchecked_from_header_value_ref), None => None, } } @@ -1383,7 +1383,7 @@ match self.inner { Some(ref mut inner) => inner .next_back() - .map(&MetadataValue::unchecked_from_header_value_ref), + .map(MetadataValue::unchecked_from_header_value_ref), None => None, } } @@ -1400,7 +1400,7 @@ fn next(&mut self) -> Option { self.inner .next() - .map(&MetadataValue::unchecked_from_mut_header_value_ref) + .map(MetadataValue::unchecked_from_mut_header_value_ref) } } @@ -1411,7 +1411,7 @@ fn next_back(&mut self) -> Option { self.inner .next_back() - .map(&MetadataValue::unchecked_from_mut_header_value_ref) + .map(MetadataValue::unchecked_from_mut_header_value_ref) } } @@ -1992,7 +1992,7 @@ fn into_iter(self) -> ValueIter<'a, VE> { ValueIter { - inner: (&self.inner).as_ref().map(|inner| inner.into_iter()), + inner: self.inner.as_ref().map(|inner| inner.into_iter()), phantom: PhantomData, } } @@ -2037,7 +2037,7 @@ ) -> Option> { map.headers .insert(self.inner, val.inner) - .map(&MetadataValue::unchecked_from_header_value) + .map(MetadataValue::unchecked_from_header_value) } #[doc(hidden)] @@ -2059,7 +2059,7 @@ ) -> Option> { map.headers .insert(&self.inner, val.inner) - .map(&MetadataValue::unchecked_from_header_value) + .map(MetadataValue::unchecked_from_header_value) } #[doc(hidden)] #[inline] @@ -2083,7 +2083,7 @@ map.headers .insert(key.inner, val.inner) - .map(&MetadataValue::unchecked_from_header_value) + .map(MetadataValue::unchecked_from_header_value) } #[doc(hidden)] #[inline] @@ -2141,7 +2141,7 @@ fn get(self, map: &MetadataMap) -> Option<&MetadataValue> { map.headers .get(self.inner) - .map(&MetadataValue::unchecked_from_header_value_ref) + .map(MetadataValue::unchecked_from_header_value_ref) } #[doc(hidden)] @@ -2149,7 +2149,7 @@ fn get_mut(self, map: &mut MetadataMap) -> Option<&mut MetadataValue> { map.headers .get_mut(self.inner) - .map(&MetadataValue::unchecked_from_mut_header_value_ref) + .map(MetadataValue::unchecked_from_mut_header_value_ref) } #[doc(hidden)] @@ -2172,7 +2172,7 @@ fn remove(self, map: &mut MetadataMap) -> Option> { map.headers .remove(self.inner) - .map(&MetadataValue::unchecked_from_header_value) + .map(MetadataValue::unchecked_from_header_value) } } @@ -2184,7 +2184,7 @@ fn get(self, map: &MetadataMap) -> Option<&MetadataValue> { map.headers .get(&self.inner) - .map(&MetadataValue::unchecked_from_header_value_ref) + .map(MetadataValue::unchecked_from_header_value_ref) } #[doc(hidden)] @@ -2192,7 +2192,7 @@ fn get_mut(self, map: &mut MetadataMap) -> Option<&mut MetadataValue> { map.headers .get_mut(&self.inner) - .map(&MetadataValue::unchecked_from_mut_header_value_ref) + .map(MetadataValue::unchecked_from_mut_header_value_ref) } #[doc(hidden)] @@ -2215,7 +2215,7 @@ fn remove(self, map: &mut MetadataMap) -> Option> { map.headers .remove(&self.inner) - .map(&MetadataValue::unchecked_from_header_value) + .map(MetadataValue::unchecked_from_header_value) } } @@ -2230,7 +2230,7 @@ } map.headers .get(self) - .map(&MetadataValue::unchecked_from_header_value_ref) + .map(MetadataValue::unchecked_from_header_value_ref) } #[doc(hidden)] @@ -2241,7 +2241,7 @@ } map.headers .get_mut(self) - .map(&MetadataValue::unchecked_from_mut_header_value_ref) + .map(MetadataValue::unchecked_from_mut_header_value_ref) } #[doc(hidden)] @@ -2277,7 +2277,7 @@ } map.headers .remove(self) - .map(&MetadataValue::unchecked_from_header_value) + .map(MetadataValue::unchecked_from_header_value) } } @@ -2292,7 +2292,7 @@ } map.headers .get(self.as_str()) - .map(&MetadataValue::unchecked_from_header_value_ref) + .map(MetadataValue::unchecked_from_header_value_ref) } #[doc(hidden)] @@ -2303,7 +2303,7 @@ } map.headers .get_mut(self.as_str()) - .map(&MetadataValue::unchecked_from_mut_header_value_ref) + .map(MetadataValue::unchecked_from_mut_header_value_ref) } #[doc(hidden)] @@ -2338,7 +2338,7 @@ } map.headers .remove(self.as_str()) - .map(&MetadataValue::unchecked_from_header_value) + .map(MetadataValue::unchecked_from_header_value) } } @@ -2353,7 +2353,7 @@ } map.headers .get(self.as_str()) - .map(&MetadataValue::unchecked_from_header_value_ref) + .map(MetadataValue::unchecked_from_header_value_ref) } #[doc(hidden)] @@ -2364,7 +2364,7 @@ } map.headers .get_mut(self.as_str()) - .map(&MetadataValue::unchecked_from_mut_header_value_ref) + .map(MetadataValue::unchecked_from_mut_header_value_ref) } #[doc(hidden)] @@ -2399,7 +2399,7 @@ } map.headers .remove(self.as_str()) - .map(&MetadataValue::unchecked_from_header_value) + .map(MetadataValue::unchecked_from_header_value) } } @@ -2520,7 +2520,7 @@ let mut found_x_word = false; for key_and_value in map.iter() { - if let KeyAndValueRef::Ascii(ref key, ref _value) = key_and_value { + if let KeyAndValueRef::Ascii(key, _value) = key_and_value { if key.as_str() == "x-word" { found_x_word = true; } else { @@ -2540,7 +2540,7 @@ let mut found_x_word_bin = false; for key_and_value in map.iter() { - if let KeyAndValueRef::Binary(ref key, ref _value) = key_and_value { + if let KeyAndValueRef::Binary(key, _value) = key_and_value { if key.as_str() == "x-word-bin" { found_x_word_bin = true; } else { @@ -2561,7 +2561,7 @@ let mut found_x_word = false; for key_and_value in map.iter_mut() { - if let KeyAndMutValueRef::Ascii(ref key, ref _value) = key_and_value { + if let KeyAndMutValueRef::Ascii(key, _value) = key_and_value { if key.as_str() == "x-word" { found_x_word = true; } else { @@ -2581,7 +2581,7 @@ let mut found_x_word_bin = false; for key_and_value in map.iter_mut() { - if let KeyAndMutValueRef::Binary(ref key, ref _value) = key_and_value { + if let KeyAndMutValueRef::Binary(key, _value) = key_and_value { if key.as_str() == "x-word-bin" { found_x_word_bin = true; } else { diff -Nru temporalio-1.3.0/vendor/tonic/src/metadata/value.rs temporalio-1.3.0/vendor/tonic/src/metadata/value.rs --- temporalio-1.3.0/vendor/tonic/src/metadata/value.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/metadata/value.rs 2023-10-30 19:40:00.000000000 +0000 @@ -7,7 +7,6 @@ use bytes::Bytes; use http::header::HeaderValue; -use std::convert::TryFrom; use std::error::Error; use std::hash::{Hash, Hasher}; use std::marker::PhantomData; @@ -125,7 +124,7 @@ } /// Convert a `Bytes` directly into a `MetadataValue` without validating. - /// For MetadataValue the provided parameter must be base64 + /// For `MetadataValue` the provided parameter must be base64 /// encoded without padding bytes at the end. /// /// # Safety @@ -286,7 +285,6 @@ /// /// ``` /// # use tonic::metadata::*; -/// # use std::convert::TryFrom; /// let val = AsciiMetadataValue::try_from(b"hello\xfa").unwrap(); /// assert_eq!(val, &b"hello\xfa"[..]); /// ``` @@ -295,7 +293,6 @@ /// /// ``` /// # use tonic::metadata::*; -/// # use std::convert::TryFrom; /// let val = AsciiMetadataValue::try_from(b"\n"); /// assert!(val.is_err()); /// ``` @@ -324,7 +321,6 @@ /// /// ``` /// # use tonic::metadata::*; -/// # use std::convert::TryFrom; /// let val = AsciiMetadataValue::try_from(b"hello\xfa").unwrap(); /// assert_eq!(val, &b"hello\xfa"[..]); /// ``` @@ -333,7 +329,6 @@ /// /// ``` /// # use tonic::metadata::*; -/// # use std::convert::TryFrom; /// let val = AsciiMetadataValue::try_from(b"\n"); /// assert!(val.is_err()); /// ``` @@ -464,7 +459,7 @@ src.parse() } - /// Converts a MetadataKey into a MetadataValue. + /// Converts a MetadataKey into a `MetadataValue`. /// /// Since every valid MetadataKey is a valid MetadataValue this is done /// infallibly. @@ -473,7 +468,6 @@ /// /// ``` /// # use tonic::metadata::*; - /// # use std::convert::TryFrom; /// let val = AsciiMetadataValue::from_key::("accept".parse().unwrap()); /// assert_eq!(val, AsciiMetadataValue::try_from(b"accept").unwrap()); /// ``` @@ -484,9 +478,9 @@ /// Returns the length of `self`, in bytes. /// - /// This method is not available for MetadataValue because that + /// This method is not available for `MetadataValue` because that /// cannot be implemented in constant time, which most people would probably - /// expect. To get the length of MetadataValue, convert it to a + /// expect. To get the length of `MetadataValue`, convert it to a /// Bytes value and measure its length. /// /// # Examples diff -Nru temporalio-1.3.0/vendor/tonic/src/request.rs temporalio-1.3.0/vendor/tonic/src/request.rs --- temporalio-1.3.0/vendor/tonic/src/request.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/request.rs 2023-10-30 19:40:00.000000000 +0000 @@ -203,6 +203,40 @@ } } + /// Get the local address of this connection. + /// + /// This will return `None` if the `IO` type used + /// does not implement `Connected` or when using a unix domain socket. + /// This currently only works on the server side. + pub fn local_addr(&self) -> Option { + #[cfg(feature = "transport")] + { + #[cfg(feature = "tls")] + { + self.extensions() + .get::() + .and_then(|i| i.local_addr()) + .or_else(|| { + self.extensions() + .get::>() + .and_then(|i| i.get_ref().local_addr()) + }) + } + + #[cfg(not(feature = "tls"))] + { + self.extensions() + .get::() + .and_then(|i| i.local_addr()) + } + } + + #[cfg(not(feature = "transport"))] + { + None + } + } + /// Get the remote address of this connection. /// /// This will return `None` if the `IO` type used diff -Nru temporalio-1.3.0/vendor/tonic/src/response.rs temporalio-1.3.0/vendor/tonic/src/response.rs --- temporalio-1.3.0/vendor/tonic/src/response.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/response.rs 2023-10-30 19:40:00.000000000 +0000 @@ -54,11 +54,13 @@ self.message } - pub(crate) fn into_parts(self) -> (MetadataMap, T, Extensions) { + /// Consumes `self` returning the parts of the response. + pub fn into_parts(self) -> (MetadataMap, T, Extensions) { (self.metadata, self.message, self.extensions) } - pub(crate) fn from_parts(metadata: MetadataMap, message: T, extensions: Extensions) -> Self { + /// Create a new gRPC response from metadata, message and extensions. + pub fn from_parts(metadata: MetadataMap, message: T, extensions: Extensions) -> Self { Self { metadata, message, diff -Nru temporalio-1.3.0/vendor/tonic/src/server/grpc.rs temporalio-1.3.0/vendor/tonic/src/server/grpc.rs --- temporalio-1.3.0/vendor/tonic/src/server/grpc.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/server/grpc.rs 2023-10-30 19:40:00.000000000 +0000 @@ -36,6 +36,10 @@ accept_compression_encodings: EnabledCompressionEncodings, /// Which compression encodings might the server use for responses. send_compression_encodings: EnabledCompressionEncodings, + /// Limits the maximum size of a decoded message. + max_decoding_message_size: Option, + /// Limits the maximum size of an encoded message. + max_encoding_message_size: Option, } impl Grpc @@ -48,6 +52,8 @@ codec, accept_compression_encodings: EnabledCompressionEncodings::default(), send_compression_encodings: EnabledCompressionEncodings::default(), + max_decoding_message_size: None, + max_encoding_message_size: None, } } @@ -114,6 +120,66 @@ self } + /// Limits the maximum size of a decoded message. + /// + /// # Example + /// + /// The most common way of using this is through a server generated by tonic-build: + /// + /// ```rust + /// # struct Svc; + /// # struct ExampleServer(T); + /// # impl ExampleServer { + /// # fn new(svc: T) -> Self { Self(svc) } + /// # fn max_decoding_message_size(self, _: usize) -> Self { self } + /// # } + /// # #[tonic::async_trait] + /// # trait Example {} + /// + /// #[tonic::async_trait] + /// impl Example for Svc { + /// // ... + /// } + /// + /// // Set the limit to 2MB, Defaults to 4MB. + /// let limit = 2 * 1024 * 1024; + /// let service = ExampleServer::new(Svc).max_decoding_message_size(limit); + /// ``` + pub fn max_decoding_message_size(mut self, limit: usize) -> Self { + self.max_decoding_message_size = Some(limit); + self + } + + /// Limits the maximum size of a encoded message. + /// + /// # Example + /// + /// The most common way of using this is through a server generated by tonic-build: + /// + /// ```rust + /// # struct Svc; + /// # struct ExampleServer(T); + /// # impl ExampleServer { + /// # fn new(svc: T) -> Self { Self(svc) } + /// # fn max_encoding_message_size(self, _: usize) -> Self { self } + /// # } + /// # #[tonic::async_trait] + /// # trait Example {} + /// + /// #[tonic::async_trait] + /// impl Example for Svc { + /// // ... + /// } + /// + /// // Set the limit to 2MB, Defaults to 4MB. + /// let limit = 2 * 1024 * 1024; + /// let service = ExampleServer::new(Svc).max_encoding_message_size(limit); + /// ``` + pub fn max_encoding_message_size(mut self, limit: usize) -> Self { + self.max_encoding_message_size = Some(limit); + self + } + #[doc(hidden)] pub fn apply_compression_config( self, @@ -134,6 +200,24 @@ this } + #[doc(hidden)] + pub fn apply_max_message_size_config( + self, + max_decoding_message_size: Option, + max_encoding_message_size: Option, + ) -> Self { + let mut this = self; + + if let Some(limit) = max_decoding_message_size { + this = this.max_decoding_message_size(limit); + } + if let Some(limit) = max_encoding_message_size { + this = this.max_encoding_message_size(limit); + } + + this + } + /// Handle a single unary gRPC request. pub async fn unary( &mut self, @@ -158,6 +242,7 @@ Err(status), accept_encoding, SingleMessageCompressionOverride::default(), + self.max_encoding_message_size, ); } }; @@ -169,7 +254,12 @@ let compression_override = compression_override_from_response(&response); - self.map_response(response, accept_encoding, compression_override) + self.map_response( + response, + accept_encoding, + compression_override, + self.max_encoding_message_size, + ) } /// Handle a server side streaming request. @@ -196,6 +286,7 @@ Err(status), accept_encoding, SingleMessageCompressionOverride::default(), + self.max_encoding_message_size, ); } }; @@ -208,6 +299,7 @@ // disabling compression of individual stream items must be done on // the items themselves SingleMessageCompressionOverride::default(), + self.max_encoding_message_size, ) } @@ -236,7 +328,12 @@ let compression_override = compression_override_from_response(&response); - self.map_response(response, accept_encoding, compression_override) + self.map_response( + response, + accept_encoding, + compression_override, + self.max_encoding_message_size, + ) } /// Handle a bi-directional streaming gRPC request. @@ -264,6 +361,7 @@ response, accept_encoding, SingleMessageCompressionOverride::default(), + self.max_encoding_message_size, ) } @@ -279,8 +377,12 @@ let (parts, body) = request.into_parts(); - let stream = - Streaming::new_request(self.codec.decoder(), body, request_compression_encoding); + let stream = Streaming::new_request( + self.codec.decoder(), + body, + request_compression_encoding, + self.max_decoding_message_size, + ); futures_util::pin_mut!(stream); @@ -308,8 +410,14 @@ { let encoding = self.request_encoding_if_supported(&request)?; - let request = - request.map(|body| Streaming::new_request(self.codec.decoder(), body, encoding)); + let request = request.map(|body| { + Streaming::new_request( + self.codec.decoder(), + body, + encoding, + self.max_decoding_message_size, + ) + }); Ok(Request::from_http(request)) } @@ -319,6 +427,7 @@ response: Result, Status>, accept_encoding: Option, compression_override: SingleMessageCompressionOverride, + max_message_size: Option, ) -> http::Response where B: TryStream + Send + 'static, @@ -349,6 +458,7 @@ body.into_stream(), accept_encoding, compression_override, + max_message_size, ); http::Response::from_parts(parts, BoxBody::new(body)) diff -Nru temporalio-1.3.0/vendor/tonic/src/service/interceptor.rs temporalio-1.3.0/vendor/tonic/src/service/interceptor.rs --- temporalio-1.3.0/vendor/tonic/src/service/interceptor.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/service/interceptor.rs 2023-10-30 19:40:00.000000000 +0000 @@ -189,10 +189,9 @@ } // required to use `InterceptedService` with `Router` -#[cfg(feature = "transport")] -impl crate::transport::NamedService for InterceptedService +impl crate::server::NamedService for InterceptedService where - S: crate::transport::NamedService, + S: crate::server::NamedService, { const NAME: &'static str = S::NAME; } @@ -349,7 +348,7 @@ Ok::<_, hyper::Error>(hyper::Response::new(hyper::Body::empty())) }); - let svc = InterceptedService::new(svc, |request: crate::Request<()>| Ok(request)); + let svc = InterceptedService::new(svc, Ok); let request = http::Request::builder() .method(http::Method::OPTIONS) diff -Nru temporalio-1.3.0/vendor/tonic/src/status.rs temporalio-1.3.0/vendor/tonic/src/status.rs --- temporalio-1.3.0/vendor/tonic/src/status.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/status.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,6 @@ use crate::body::BoxBody; use crate::metadata::MetadataMap; +use base64::Engine as _; use bytes::Bytes; use http::header::{HeaderMap, HeaderValue}; use percent_encoding::{percent_decode, percent_encode, AsciiSet, CONTROLS}; @@ -324,7 +325,14 @@ }) } - pub(crate) fn try_from_error( + /// Create a `Status` from various types of `Error`. + /// + /// Returns the error if a status could not be created. + /// + /// # Downcast stability + /// This function does not provide any stability guarantees around how it will downcast errors into + /// status codes. + pub fn try_from_error( err: Box, ) -> Result> { let err = match err.downcast::() { @@ -353,8 +361,17 @@ // FIXME: bubble this into `transport` and expose generic http2 reasons. #[cfg(feature = "transport")] fn from_h2_error(err: Box) -> Status { + let code = Self::code_from_h2(&err); + + let mut status = Self::new(code, format!("h2 protocol error: {}", err)); + status.source = Some(Arc::new(*err)); + status + } + + #[cfg(feature = "transport")] + fn code_from_h2(err: &h2::Error) -> Code { // See https://github.com/grpc/grpc/blob/3977c30/doc/PROTOCOL-HTTP2.md#errors - let code = match err.reason() { + match err.reason() { Some(h2::Reason::NO_ERROR) | Some(h2::Reason::PROTOCOL_ERROR) | Some(h2::Reason::INTERNAL_ERROR) @@ -368,11 +385,7 @@ Some(h2::Reason::INADEQUATE_SECURITY) => Code::PermissionDenied, _ => Code::Unknown, - }; - - let mut status = Self::new(code, format!("h2 protocol error: {}", err)); - status.source = Some(Arc::new(*err)); - status + } } #[cfg(feature = "transport")] @@ -408,6 +421,14 @@ if err.is_timeout() || err.is_connect() { return Some(Status::unavailable(err.to_string())); } + + if let Some(h2_err) = err.source().and_then(|e| e.downcast_ref::()) { + let code = Status::code_from_h2(h2_err); + let status = Self::new(code, format!("h2 protocol error: {}", err)); + + return Some(status); + } + None } @@ -435,7 +456,8 @@ let details = header_map .get(GRPC_STATUS_DETAILS_HEADER) .map(|h| { - base64::decode(h.as_bytes()) + crate::util::base64::STANDARD + .decode(h.as_bytes()) .expect("Invalid status header, expected base64 encoded value") }) .map(Bytes::from) @@ -499,7 +521,8 @@ Ok(header_map) } - pub(crate) fn add_header(&self, header_map: &mut HeaderMap) -> Result<(), Self> { + /// Add headers from this `Status` into `header_map`. + pub fn add_header(&self, header_map: &mut HeaderMap) -> Result<(), Self> { header_map.extend(self.metadata.clone().into_sanitized_headers()); header_map.insert(GRPC_STATUS_HEADER_CODE, self.code.to_header_value()); @@ -516,7 +539,7 @@ } if !self.details.is_empty() { - let details = base64::encode_config(&self.details[..], base64::STANDARD_NO_PAD); + let details = crate::util::base64::STANDARD_NO_PAD.encode(&self.details[..]); header_map.insert( GRPC_STATUS_DETAILS_HEADER, @@ -553,6 +576,12 @@ } } + /// Add a source error to this status. + pub fn set_source(&mut self, source: Arc) -> &mut Status { + self.source = Some(source); + self + } + #[allow(clippy::wrong_self_convention)] /// Build an `http::Response` from the given `Status`. pub fn to_http(self) -> http::Response { @@ -971,7 +1000,7 @@ let header_map = status.to_header_map().unwrap(); - let b64_details = base64::encode_config(DETAILS, base64::STANDARD_NO_PAD); + let b64_details = crate::util::base64::STANDARD_NO_PAD.encode(DETAILS); assert_eq!(header_map[super::GRPC_STATUS_DETAILS_HEADER], b64_details); diff -Nru temporalio-1.3.0/vendor/tonic/src/transport/channel/endpoint.rs temporalio-1.3.0/vendor/tonic/src/transport/channel/endpoint.rs --- temporalio-1.3.0/vendor/tonic/src/transport/channel/endpoint.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/transport/channel/endpoint.rs 2023-10-30 19:40:00.000000000 +0000 @@ -7,14 +7,7 @@ use crate::transport::{service::SharedExec, Error, Executor}; use bytes::Bytes; use http::{uri::Uri, HeaderValue}; -use std::{ - convert::{TryFrom, TryInto}, - fmt, - future::Future, - pin::Pin, - str::FromStr, - time::Duration, -}; +use std::{fmt, future::Future, pin::Pin, str::FromStr, time::Duration}; use tower::make::MakeConnection; // use crate::transport::E diff -Nru temporalio-1.3.0/vendor/tonic/src/transport/channel/tls.rs temporalio-1.3.0/vendor/tonic/src/transport/channel/tls.rs --- temporalio-1.3.0/vendor/tonic/src/transport/channel/tls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/transport/channel/tls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -7,8 +7,6 @@ use std::fmt; /// Configures TLS settings for endpoints. -#[cfg(feature = "tls")] -#[cfg_attr(docsrs, doc(cfg(feature = "tls")))] #[derive(Clone, Default)] pub struct ClientTlsConfig { domain: Option, @@ -16,7 +14,6 @@ identity: Option, } -#[cfg(feature = "tls")] impl fmt::Debug for ClientTlsConfig { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_struct("ClientTlsConfig") @@ -27,7 +24,6 @@ } } -#[cfg(feature = "tls")] impl ClientTlsConfig { /// Creates a new `ClientTlsConfig` using Rustls. pub fn new() -> Self { diff -Nru temporalio-1.3.0/vendor/tonic/src/transport/error.rs temporalio-1.3.0/vendor/tonic/src/transport/error.rs --- temporalio-1.3.0/vendor/tonic/src/transport/error.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/transport/error.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,8 +1,3 @@ -// TODO: remove this when we use errors throughout, -// there are some that are only used under the TLS feature -// these probably should be scoped to a `TLSError` enum. -#![allow(dead_code)] - use std::{error::Error as StdError, fmt}; type Source = Box; diff -Nru temporalio-1.3.0/vendor/tonic/src/transport/mod.rs temporalio-1.3.0/vendor/tonic/src/transport/mod.rs --- temporalio-1.3.0/vendor/tonic/src/transport/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/transport/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -63,7 +63,7 @@ //! # unimplemented!() //! # } //! # } -//! # impl tonic::transport::NamedService for Svc { +//! # impl tonic::server::NamedService for Svc { //! # const NAME: &'static str = "some_svc"; //! # } //! # let my_svc = Svc; @@ -99,10 +99,12 @@ pub use self::channel::{Channel, Endpoint}; pub use self::error::Error; #[doc(inline)] -pub use self::server::{NamedService, Server}; +pub use self::server::Server; #[doc(inline)] pub use self::service::grpc_timeout::TimeoutExpired; pub use self::tls::Certificate; +#[doc(inline)] +pub use crate::server::NamedService; pub use hyper::{Body, Uri}; pub(crate) use self::service::executor::Executor; diff -Nru temporalio-1.3.0/vendor/tonic/src/transport/server/conn.rs temporalio-1.3.0/vendor/tonic/src/transport/server/conn.rs --- temporalio-1.3.0/vendor/tonic/src/transport/server/conn.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/transport/server/conn.rs 2023-10-30 19:40:00.000000000 +0000 @@ -68,10 +68,16 @@ /// [ext]: crate::Request::extensions #[derive(Debug, Clone)] pub struct TcpConnectInfo { + local_addr: Option, remote_addr: Option, } impl TcpConnectInfo { + /// Return the local address the IO resource is connected. + pub fn local_addr(&self) -> Option { + self.local_addr + } + /// Return the remote address the IO resource is connected too. pub fn remote_addr(&self) -> Option { self.remote_addr @@ -83,6 +89,7 @@ fn connect_info(&self) -> Self::ConnectInfo { TcpConnectInfo { + local_addr: Some(self.local_addr()), remote_addr: Some(self.remote_addr()), } } @@ -93,6 +100,7 @@ fn connect_info(&self) -> Self::ConnectInfo { TcpConnectInfo { + local_addr: self.local_addr().ok(), remote_addr: self.peer_addr().ok(), } } diff -Nru temporalio-1.3.0/vendor/tonic/src/transport/server/incoming.rs temporalio-1.3.0/vendor/tonic/src/transport/server/incoming.rs --- temporalio-1.3.0/vendor/tonic/src/transport/server/incoming.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/transport/server/incoming.rs 2023-10-30 19:40:00.000000000 +0000 @@ -142,7 +142,7 @@ /// ```no_run /// # use tower_service::Service; /// # use http::{request::Request, response::Response}; - /// # use tonic::{body::BoxBody, transport::{Body, NamedService, Server, server::TcpIncoming}}; + /// # use tonic::{body::BoxBody, server::NamedService, transport::{Body, Server, server::TcpIncoming}}; /// # use core::convert::Infallible; /// # use std::error::Error; /// # fn main() { } // Cannot have type parameters, hence instead define: diff -Nru temporalio-1.3.0/vendor/tonic/src/transport/server/tls.rs temporalio-1.3.0/vendor/tonic/src/transport/server/tls.rs --- temporalio-1.3.0/vendor/tonic/src/transport/server/tls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/transport/server/tls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,28 +5,26 @@ use std::fmt; /// Configures TLS settings for servers. -#[cfg(feature = "tls")] -#[cfg_attr(docsrs, doc(cfg(feature = "tls")))] #[derive(Clone, Default)] pub struct ServerTlsConfig { identity: Option, client_ca_root: Option, + client_auth_optional: bool, } -#[cfg(feature = "tls")] impl fmt::Debug for ServerTlsConfig { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_struct("ServerTlsConfig").finish() } } -#[cfg(feature = "tls")] impl ServerTlsConfig { /// Creates a new `ServerTlsConfig`. pub fn new() -> Self { ServerTlsConfig { identity: None, client_ca_root: None, + client_auth_optional: false, } } @@ -46,7 +44,24 @@ } } + /// Sets whether client certificate verification is optional. + /// + /// This option has effect only if CA certificate is set. + /// + /// # Default + /// By default, this option is set to `false`. + pub fn client_auth_optional(self, optional: bool) -> Self { + ServerTlsConfig { + client_auth_optional: optional, + ..self + } + } + pub(crate) fn tls_acceptor(&self) -> Result { - TlsAcceptor::new(self.identity.clone().unwrap(), self.client_ca_root.clone()) + TlsAcceptor::new( + self.identity.clone().unwrap(), + self.client_ca_root.clone(), + self.client_auth_optional, + ) } } diff -Nru temporalio-1.3.0/vendor/tonic/src/transport/service/connector.rs temporalio-1.3.0/vendor/tonic/src/transport/service/connector.rs --- temporalio-1.3.0/vendor/tonic/src/transport/service/connector.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/transport/service/connector.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,8 +3,6 @@ #[cfg(feature = "tls")] use super::tls::TlsConnector; use http::Uri; -#[cfg(feature = "tls-roots-common")] -use std::convert::TryInto; use std::fmt; use std::task::{Context, Poll}; use tower::make::MakeConnection; diff -Nru temporalio-1.3.0/vendor/tonic/src/transport/service/discover.rs temporalio-1.3.0/vendor/tonic/src/transport/service/discover.rs --- temporalio-1.3.0/vendor/tonic/src/transport/service/discover.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/transport/service/discover.rs 2023-10-30 19:40:00.000000000 +0000 @@ -36,6 +36,7 @@ let mut http = hyper::client::connect::HttpConnector::new(); http.set_nodelay(endpoint.tcp_nodelay); http.set_keepalive(endpoint.tcp_keepalive); + http.set_connect_timeout(endpoint.connect_timeout); http.enforce_http(false); #[cfg(feature = "tls")] let connector = service::connector(http, endpoint.tls.clone()); diff -Nru temporalio-1.3.0/vendor/tonic/src/transport/service/io.rs temporalio-1.3.0/vendor/tonic/src/transport/service/io.rs --- temporalio-1.3.0/vendor/tonic/src/transport/service/io.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/transport/service/io.rs 2023-10-30 19:40:00.000000000 +0000 @@ -70,7 +70,7 @@ pub(crate) enum ServerIo { Io(IO), #[cfg(feature = "tls")] - TlsIo(TlsStream), + TlsIo(Box>), } use tower::util::Either; @@ -89,7 +89,7 @@ #[cfg(feature = "tls")] pub(in crate::transport) fn new_tls_io(io: TlsStream) -> Self { - Self::TlsIo(io) + Self::TlsIo(Box::new(io)) } #[cfg(feature = "tls")] diff -Nru temporalio-1.3.0/vendor/tonic/src/transport/service/router.rs temporalio-1.3.0/vendor/tonic/src/transport/service/router.rs --- temporalio-1.3.0/vendor/tonic/src/transport/service/router.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/transport/service/router.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,6 @@ use crate::{ body::{boxed, BoxBody}, - transport::NamedService, + server::NamedService, }; use http::{Request, Response}; use hyper::Body; diff -Nru temporalio-1.3.0/vendor/tonic/src/transport/service/tls.rs temporalio-1.3.0/vendor/tonic/src/transport/service/tls.rs --- temporalio-1.3.0/vendor/tonic/src/transport/service/tls.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/transport/service/tls.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,27 +5,20 @@ }; #[cfg(feature = "tls-roots")] use rustls_native_certs; -#[cfg(feature = "tls")] -use std::convert::TryInto; use std::{fmt, sync::Arc}; use tokio::io::{AsyncRead, AsyncWrite}; -#[cfg(feature = "tls")] use tokio_rustls::{ rustls::{ClientConfig, RootCertStore, ServerConfig, ServerName}, TlsAcceptor as RustlsAcceptor, TlsConnector as RustlsConnector, }; /// h2 alpn in plain format for rustls. -#[cfg(feature = "tls")] const ALPN_H2: &str = "h2"; #[derive(Debug)] enum TlsError { - #[allow(dead_code)] H2NotNegotiated, - #[cfg(feature = "tls")] CertificateParseError, - #[cfg(feature = "tls")] PrivateKeyParseError, } @@ -36,7 +29,6 @@ } impl TlsConnector { - #[cfg(feature = "tls")] pub(crate) fn new( ca_cert: Option, identity: Option, @@ -123,20 +115,28 @@ } impl TlsAcceptor { - #[cfg(feature = "tls")] pub(crate) fn new( identity: Identity, client_ca_root: Option, + client_auth_optional: bool, ) -> Result { let builder = ServerConfig::builder().with_safe_defaults(); - let builder = match client_ca_root { - None => builder.with_no_client_auth(), - Some(cert) => { + let builder = match (client_ca_root, client_auth_optional) { + (None, _) => builder.with_no_client_auth(), + (Some(cert), true) => { + use tokio_rustls::rustls::server::AllowAnyAnonymousOrAuthenticatedClient; + let mut roots = RootCertStore::empty(); + rustls_keys::add_certs_from_pem(std::io::Cursor::new(&cert.pem[..]), &mut roots)?; + builder.with_client_cert_verifier( + AllowAnyAnonymousOrAuthenticatedClient::new(roots).boxed(), + ) + } + (Some(cert), false) => { use tokio_rustls::rustls::server::AllowAnyAuthenticatedClient; let mut roots = RootCertStore::empty(); rustls_keys::add_certs_from_pem(std::io::Cursor::new(&cert.pem[..]), &mut roots)?; - builder.with_client_cert_verifier(AllowAnyAuthenticatedClient::new(roots)) + builder.with_client_cert_verifier(AllowAnyAuthenticatedClient::new(roots).boxed()) } }; @@ -179,7 +179,6 @@ impl std::error::Error for TlsError {} -#[cfg(feature = "tls")] mod rustls_keys { use std::io::Cursor; @@ -188,21 +187,15 @@ use crate::transport::service::tls::TlsError; use crate::transport::Identity; - fn load_rustls_private_key( + pub(super) fn load_rustls_private_key( mut cursor: std::io::Cursor<&[u8]>, ) -> Result { - // First attempt to load the private key assuming it is PKCS8-encoded - if let Ok(mut keys) = rustls_pemfile::pkcs8_private_keys(&mut cursor) { - if let Some(key) = keys.pop() { - return Ok(PrivateKey(key)); - } - } - - // If it not, try loading the private key as an RSA key - cursor.set_position(0); - if let Ok(mut keys) = rustls_pemfile::rsa_private_keys(&mut cursor) { - if let Some(key) = keys.pop() { - return Ok(PrivateKey(key)); + while let Ok(Some(item)) = rustls_pemfile::read_one(&mut cursor) { + match item { + rustls_pemfile::Item::RSAKey(key) + | rustls_pemfile::Item::PKCS8Key(key) + | rustls_pemfile::Item::ECKey(key) => return Ok(PrivateKey(key)), + _ => continue, } } @@ -245,3 +238,78 @@ } } } + +#[cfg(test)] +mod tests { + use std::io::Cursor; + + // generated by: openssl ecparam -keygen -name 'prime256v1' + const SIMPLE_EC_KEY: &str = r#"-----BEGIN EC PARAMETERS----- +BggqhkjOPQMBBw== +-----END EC PARAMETERS----- +-----BEGIN EC PRIVATE KEY----- +MHcCAQEEICIDyh40kMVWGDAYr1gXnMfeMeO3zXYigOaWrg5SNB+zoAoGCCqGSM49 +AwEHoUQDQgAEacJyVg299dkPTzUaMbOmACUfF67yp+ZrDhXVjn/5WxBAgjcmFBHg +Tw8dfwpMzaJPXX5lWYzP276fcmbRO25CXw== +-----END EC PRIVATE KEY-----"#; + + // generated by: openssl genpkey -algorithm rsa + const SIMPLE_PKCS8_KEY: &str = r#"-----BEGIN PRIVATE KEY----- +MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKHkX1YIvqOIAllD +5fKcIxu2kYjIxxAAQrOBRTloGZUKdPFQY1RANB4t/LEaI5/NJ6NK4915pTn35QAQ +zHJl+X4rNFMgVt+o/nY40PgrQxyyv5A0/URp+iS8Yn3GKt3q6p4zguiO9uNXhiiD +b+VKIFRDm4bHR2yM7pNJ0kMdoattAgMBAAECgYAMpw6UaMaNfVnBpD7agT11MwWY +zShRpdOQt++zFuG49kJBgejhcssf+LQhG0vhd2U7q+S3MISrTSaGpMl1v2aKR/nV +G7X4Bb6X8vrVSMrfze2loT0aNri9jKDZkD/muy6+9JkhRa03NOdhDdseokmcqF3L +xsU4BUOOFYb23ycoeQJBANOGxbZu/3BqsPJMQmXWo1CXuaviZ83lTczPtrz9mJVl +Zs/KmGnJ8I2Azu/dlYXsHRvbIbqA93l1M3GnsWl5IxsCQQDD7hKvOY6qzUNyj+R4 +vul/3xaqjiTj59f3jN7Fh6+9AY+WfvEkWfyUUAXY74z43wBgtORfMXnZnjFO96tJ +sswXAkBDYDtb19E/cox4MTg5DfwpMJrwmAYufCqi4Uq4uiI++/SanVKc57jaqbvA +hZkZ9lJzTAJbULcDFgTT3/FPwkkfAkEAqbSDMIzdGuox2n/x9/f8jcpweogmQdUl +xgCZUGSnfkFk2ojXW5Ip6Viqx+0toL6fOCRWjnFvRmPz958kGPCqPwJBAID4y7XV +peOO6Yadu0YbSmFNluRebia6410p5jR21LhG1ty2h22xVhlBWjOC+TyDuKwhmiYT +ed50S3LR1PWt4zE= +-----END PRIVATE KEY-----"#; + + // generated by: openssl genrsa + const SIMPLE_RSA_KEY: &str = r#"-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEAoEILGds1/RGBHT7jM4R+EL24sQ6Bsn14GgTHc7WoZ7lainEH +H/n+DtHCYUXYyJnN5AMIi3pkigCP1hdXXBQga3zs3lXoi/mAMkT6vjuqQ7Xg5/95 +ABx5Ztyy25mZNaXm77glyAzSscKHxWYooXVJYG4C3SGuBJJ1zVjxen6Rkzse5Lpr +yZOUUeqeV3M6KbJ/dkR37HFQVwmlctQukFnb4kozFBQDDnkXi9jT/PH00g6JpW3z +YMzdMq2RMadJ0dzYv62OtdtqmQpVz0dRu/yODV4DkhrWwgPRj2uY4DnYthzILESB +x41gxHj+jqo6NW+C+0fr6uh2CXtD0p+ZVANtBQIDAQABAoIBAE7IaOCrLV1dr5WL +BvKancbpHdSdBxGSMOrJkqvFkCZ9ro8EhbYolcb/Q4nCZpInWlpPS3IWFzroj811 +6BJyKoXtAh1DKnE1lNohowrGFiv3S7uBkiCF3wC8Wokud20yQ9dxNdGkzCdrNIfM +cwj8ubfYHTxMhFnnDlaG9R98/V/dFy0FLxL37eMP/heMbcwKKm9P/G2FqvuCn8a4 +FoPbAfvaR64IGCybjoiTjUD7xMHIV4Gr5K07br2TzG2zVlFTacoqXyGBbVVy+ibt +QMh0sn+rMkAy+cFse+yCYZeAFa4FzwGz43sdFviU7uvLG7yXpvZ+uDACFzxlxUVg +v57r1cECgYEA1MMJEe6IunDUyuzRaFNTfQX16QcAv/xLN/1TtVB3HUX5p2bIZKDr +XEl0NCVOrCoz5RsYqbtGmp8B4Yxl3DeX+WeWeD9/f2ZTVGWyBx1N6dZ5hRsyfzG/ +xVBUqYxkChjXQ20cNtf8u7JKdnVjOJen9M92nXhFRTwgH83Id4gPp70CgYEAwNN8 +lvVJnd05ekyf1qIKOSyKiSGnGa5288PpqsjYMZisXy12y4n8cK2pX5Z5PICHeJVu +K99WdTtO7Q4ghCXRB1jR5pTd4/3/3089SQyDnWz9jlA3pGWcSLDTB1dBJXpMQ6yG +cR2dX5hPDNIdKsc+9Bl/OF5PScvGVUYv4SLF6ukCgYAVhh2WyNDgO6XrWYXdzgA2 +N7Im/uReh8F8So57W0aRmZCmFMnVFEp7LZsp41RQKnzRgqo+EYoU/l0MWk27t4wS +WR5pz9KwKsPnV9poydgl/eKRSq0THQ9PgM7v0BoWw2iTk6g1DCivPFw4G6wL/5uo +MozHZXFsjaaaUREktokO6QKBgC3Dg7RILtqaoIOYH+9OseJz4cU+CWyc7XpZKuHv +nO/YbkCAh8syyojrjmEzUz66umwx+t3KubhFBSxZx/nVB9EYkWiKOEdeBxY2tjLa +F3qLXXojK7GGtBrEbLE3UizU47jD/3xlLO59NXWzgFygwR4p1vnH2EWJaV7fs4lZ +OWPRAoGAL0nX0vZ0N9qPETiQan1uHjKYuuFiSP+cwRXVSUYIQM9qDRlKG9zjugwO +az+B6uiR4TrgbwG+faCQwcGk9B8QbcoIb8IigwrWe3XpVaEtcsqFORX0r+tJNDoY +I0O2DOQVPKSK2N5AZzXY4IkybWTV4Yxc7rdXEO3dOOpHGKbpwFQ= +-----END RSA PRIVATE KEY-----"#; + + #[test] + fn test_parse_ec_key() { + for (n, key) in [SIMPLE_EC_KEY, SIMPLE_PKCS8_KEY, SIMPLE_RSA_KEY] + .iter() + .enumerate() + { + let c = Cursor::new(key.as_bytes()); + let key = super::rustls_keys::load_rustls_private_key(c); + + assert!(key.is_ok(), "at the {}-th case", n); + } + } +} diff -Nru temporalio-1.3.0/vendor/tonic/src/util.rs temporalio-1.3.0/vendor/tonic/src/util.rs --- temporalio-1.3.0/vendor/tonic/src/util.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic/src/util.rs 2023-10-30 19:40:00.000000000 +0000 @@ -11,3 +11,27 @@ Some(#[pin] T), None, } + +pub(crate) mod base64 { + use base64::{ + alphabet, + engine::{ + general_purpose::{GeneralPurpose, GeneralPurposeConfig}, + DecodePaddingMode, + }, + }; + + pub(crate) const STANDARD: GeneralPurpose = GeneralPurpose::new( + &alphabet::STANDARD, + GeneralPurposeConfig::new() + .with_encode_padding(true) + .with_decode_padding_mode(DecodePaddingMode::Indifferent), + ); + + pub(crate) const STANDARD_NO_PAD: GeneralPurpose = GeneralPurpose::new( + &alphabet::STANDARD, + GeneralPurposeConfig::new() + .with_encode_padding(false) + .with_decode_padding_mode(DecodePaddingMode::Indifferent), + ); +} diff -Nru temporalio-1.3.0/vendor/tonic-build/.cargo-checksum.json temporalio-1.3.0/vendor/tonic-build/.cargo-checksum.json --- temporalio-1.3.0/vendor/tonic-build/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic-build/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"a88265ae0bb8cf6ad6f18df73390bd3f89e7c81dea0f38c1e01acb26f6b48322","LICENSE":"4f38e3a425725eb447213c75c0d8ae9f0d1f2ebc4f3183e2106aaf07c23f4b20","README.md":"2e22fdf16304c74ddd10f988a0b2f651471b25ff7c8bc78664bbd4d0f1ea3e82","src/client.rs":"8a8f7293fa7761b16ed6242075b277223a2c10bcd5cf6d9da47442a32d6eea2f","src/code_gen.rs":"4bad4abc6675d1d05464d1b3c2c929269c5893ef3dc297b72d05c59fd55052bf","src/lib.rs":"f7e1c2783b43c39278aafeb8947effc4f5d037eb8a59d65548de80fbde7eaa38","src/manual.rs":"1684b149516126acd7d585c314866487e3d337ae07e6053cd0dd0eeefa73b3e0","src/prost.rs":"c57bf8124d37466fe9b1070b3bff6c973914bee1a1a7bd4122da989b953640df","src/server.rs":"fc40ba49b69c6f8abc1e67303718d590bbea67cb899b73b7d6cd2665eb172e11"},"package":"5bf5e9b9c0f7e0a7c027dcfaba7b2c60816c7049171f679d99ee2ff65d0de8c4"} \ No newline at end of file +{"files":{"Cargo.toml":"a4d90a5e76c17a284170817fd2e1a9199a73bfea742bfdf1b902c59e5a4360d4","LICENSE":"4f38e3a425725eb447213c75c0d8ae9f0d1f2ebc4f3183e2106aaf07c23f4b20","README.md":"2e22fdf16304c74ddd10f988a0b2f651471b25ff7c8bc78664bbd4d0f1ea3e82","src/client.rs":"4dd615d216a589d5564599b5d10d98c70489fd60b01426ed08c0538b4a467e84","src/code_gen.rs":"4bad4abc6675d1d05464d1b3c2c929269c5893ef3dc297b72d05c59fd55052bf","src/lib.rs":"ce403161bbeb18052debb40a35008a1c9b6f1962c7f9b61b91a302c3cc3eb19d","src/manual.rs":"1684b149516126acd7d585c314866487e3d337ae07e6053cd0dd0eeefa73b3e0","src/prost.rs":"149ae8a09c4e1c60e03eb05ce153770f9199de75430aee912fcc586bdc93933e","src/server.rs":"504a54a384aad8281d2c9a945abb7aad550b3e0fc516ddd84fd555fc01945302"},"package":"a6fdaae4c2c638bb70fe42803a26fbd6fc6ac8c72f5c59f67ecc2a2dcabf4b07"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/tonic-build/Cargo.toml temporalio-1.3.0/vendor/tonic-build/Cargo.toml --- temporalio-1.3.0/vendor/tonic-build/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic-build/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,15 +10,15 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" +edition = "2021" name = "tonic-build" -version = "0.8.4" +version = "0.9.2" authors = ["Lucio Franco "] description = """ Codegen module of `tonic` gRPC implementation. """ homepage = "https://github.com/hyperium/tonic" -documentation = "https://docs.rs/tonic-build/0.8.4/tonic_build/" +documentation = "https://docs.rs/tonic-build/0.9.2" readme = "README.md" keywords = [ "rpc", @@ -44,7 +44,7 @@ version = "1.0" [dependencies.prost-build] -version = "0.11.2" +version = "0.11.9" optional = true [dependencies.quote] diff -Nru temporalio-1.3.0/vendor/tonic-build/src/client.rs temporalio-1.3.0/vendor/tonic-build/src/client.rs --- temporalio-1.3.0/vendor/tonic-build/src/client.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic-build/src/client.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,10 @@ use std::collections::HashSet; use super::{Attributes, Method, Service}; -use crate::{generate_doc_comments, naive_snake_case}; +use crate::{ + format_method_name, format_method_path, format_service_name, generate_doc_comments, + naive_snake_case, +}; use proc_macro2::TokenStream; use quote::{format_ident, quote}; @@ -51,21 +54,16 @@ let connect = generate_connect(&service_ident, build_transport); let package = if emit_package { service.package() } else { "" }; - let path = format!( - "{}{}{}", - package, - if package.is_empty() { "" } else { "." }, - service.identifier() - ); + let service_name = format_service_name(service, emit_package); - let service_doc = if disable_comments.contains(&path) { + let service_doc = if disable_comments.contains(&service_name) { TokenStream::new() } else { generate_doc_comments(service.comment()) }; let mod_attributes = attributes.for_mod(package); - let struct_attributes = attributes.for_struct(&path); + let struct_attributes = attributes.for_struct(&service_name); quote! { /// Generated client implementations. @@ -137,6 +135,24 @@ self } + /// Limits the maximum size of a decoded message. + /// + /// Default: `4MB` + #[must_use] + pub fn max_decoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_decoding_message_size(limit); + self + } + + /// Limits the maximum size of an encoded message. + /// + /// Default: `usize::MAX` + #[must_use] + pub fn max_encoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_encoding_message_size(limit); + self + } + #methods } } @@ -150,7 +166,7 @@ /// Attempt to create a new client by connecting to a given endpoint. pub async fn connect(dst: D) -> Result where - D: std::convert::TryInto, + D: TryInto, D::Error: Into, { let conn = tonic::transport::Endpoint::new(dst)?.connect().await?; @@ -179,36 +195,41 @@ disable_comments: &HashSet, ) -> TokenStream { let mut stream = TokenStream::new(); - let package = if emit_package { service.package() } else { "" }; for method in service.methods() { - let path = format!( - "/{}{}{}/{}", - package, - if package.is_empty() { "" } else { "." }, - service.identifier(), - method.identifier() - ); - - if !disable_comments.contains(&format!( - "{}{}{}.{}", - package, - if package.is_empty() { "" } else { "." }, - service.identifier(), - method.identifier() - )) { + if !disable_comments.contains(&format_method_name(service, method, emit_package)) { stream.extend(generate_doc_comments(method.comment())); } let method = match (method.client_streaming(), method.server_streaming()) { - (false, false) => generate_unary(method, proto_path, compile_well_known_types, path), - (false, true) => { - generate_server_streaming(method, proto_path, compile_well_known_types, path) - } - (true, false) => { - generate_client_streaming(method, proto_path, compile_well_known_types, path) - } - (true, true) => generate_streaming(method, proto_path, compile_well_known_types, path), + (false, false) => generate_unary( + service, + method, + emit_package, + proto_path, + compile_well_known_types, + ), + (false, true) => generate_server_streaming( + service, + method, + emit_package, + proto_path, + compile_well_known_types, + ), + (true, false) => generate_client_streaming( + service, + method, + emit_package, + proto_path, + compile_well_known_types, + ), + (true, true) => generate_streaming( + service, + method, + emit_package, + proto_path, + compile_well_known_types, + ), }; stream.extend(method); @@ -217,105 +238,126 @@ stream } -fn generate_unary( - method: &T, +fn generate_unary( + service: &T, + method: &T::Method, + emit_package: bool, proto_path: &str, compile_well_known_types: bool, - path: String, ) -> TokenStream { let codec_name = syn::parse_str::(method.codec_path()).unwrap(); let ident = format_ident!("{}", method.name()); let (request, response) = method.request_response_name(proto_path, compile_well_known_types); + let service_name = format_service_name(service, emit_package); + let path = format_method_path(service, method, emit_package); + let method_name = method.identifier(); quote! { pub async fn #ident( &mut self, request: impl tonic::IntoRequest<#request>, - ) -> Result, tonic::Status> { + ) -> std::result::Result, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new(tonic::Code::Unknown, format!("Service was not ready: {}", e.into())) })?; let codec = #codec_name::default(); let path = http::uri::PathAndQuery::from_static(#path); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut().insert(GrpcMethod::new(#service_name, #method_name)); + self.inner.unary(req, path, codec).await } } } -fn generate_server_streaming( - method: &T, +fn generate_server_streaming( + service: &T, + method: &T::Method, + emit_package: bool, proto_path: &str, compile_well_known_types: bool, - path: String, ) -> TokenStream { let codec_name = syn::parse_str::(method.codec_path()).unwrap(); let ident = format_ident!("{}", method.name()); - let (request, response) = method.request_response_name(proto_path, compile_well_known_types); + let service_name = format_service_name(service, emit_package); + let path = format_method_path(service, method, emit_package); + let method_name = method.identifier(); quote! { pub async fn #ident( &mut self, request: impl tonic::IntoRequest<#request>, - ) -> Result>, tonic::Status> { + ) -> std::result::Result>, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new(tonic::Code::Unknown, format!("Service was not ready: {}", e.into())) })?; let codec = #codec_name::default(); let path = http::uri::PathAndQuery::from_static(#path); - self.inner.server_streaming(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut().insert(GrpcMethod::new(#service_name, #method_name)); + self.inner.server_streaming(req, path, codec).await } } } -fn generate_client_streaming( - method: &T, +fn generate_client_streaming( + service: &T, + method: &T::Method, + emit_package: bool, proto_path: &str, compile_well_known_types: bool, - path: String, ) -> TokenStream { let codec_name = syn::parse_str::(method.codec_path()).unwrap(); let ident = format_ident!("{}", method.name()); - let (request, response) = method.request_response_name(proto_path, compile_well_known_types); + let service_name = format_service_name(service, emit_package); + let path = format_method_path(service, method, emit_package); + let method_name = method.identifier(); quote! { pub async fn #ident( &mut self, request: impl tonic::IntoStreamingRequest - ) -> Result, tonic::Status> { + ) -> std::result::Result, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new(tonic::Code::Unknown, format!("Service was not ready: {}", e.into())) })?; let codec = #codec_name::default(); let path = http::uri::PathAndQuery::from_static(#path); - self.inner.client_streaming(request.into_streaming_request(), path, codec).await + let mut req = request.into_streaming_request(); + req.extensions_mut().insert(GrpcMethod::new(#service_name, #method_name)); + self.inner.client_streaming(req, path, codec).await } } } -fn generate_streaming( - method: &T, +fn generate_streaming( + service: &T, + method: &T::Method, + emit_package: bool, proto_path: &str, compile_well_known_types: bool, - path: String, ) -> TokenStream { let codec_name = syn::parse_str::(method.codec_path()).unwrap(); let ident = format_ident!("{}", method.name()); - let (request, response) = method.request_response_name(proto_path, compile_well_known_types); + let service_name = format_service_name(service, emit_package); + let path = format_method_path(service, method, emit_package); + let method_name = method.identifier(); quote! { pub async fn #ident( &mut self, request: impl tonic::IntoStreamingRequest - ) -> Result>, tonic::Status> { + ) -> std::result::Result>, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new(tonic::Code::Unknown, format!("Service was not ready: {}", e.into())) })?; let codec = #codec_name::default(); let path = http::uri::PathAndQuery::from_static(#path); - self.inner.streaming(request.into_streaming_request(), path, codec).await + let mut req = request.into_streaming_request(); + req.extensions_mut().insert(GrpcMethod::new(#service_name,#method_name)); + self.inner.streaming(req, path, codec).await } } } diff -Nru temporalio-1.3.0/vendor/tonic-build/src/lib.rs temporalio-1.3.0/vendor/tonic-build/src/lib.rs --- temporalio-1.3.0/vendor/tonic-build/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic-build/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -70,7 +70,7 @@ html_logo_url = "https://raw.githubusercontent.com/tokio-rs/website/master/public/img/icons/tonic.svg" )] #![deny(rustdoc::broken_intra_doc_links)] -#![doc(html_root_url = "https://docs.rs/tonic-build/0.8.4")] +#![doc(html_root_url = "https://docs.rs/tonic-build/0.9.2")] #![doc(issue_tracker_base_url = "https://github.com/hyperium/tonic/issues/")] #![doc(test(no_crate_inject, attr(deny(rust_2018_idioms))))] #![cfg_attr(docsrs, feature(doc_cfg))] @@ -197,6 +197,32 @@ } } +fn format_service_name(service: &T, emit_package: bool) -> String { + let package = if emit_package { service.package() } else { "" }; + format!( + "{}{}{}", + package, + if package.is_empty() { "" } else { "." }, + service.identifier(), + ) +} + +fn format_method_path(service: &T, method: &T::Method, emit_package: bool) -> String { + format!( + "/{}/{}", + format_service_name(service, emit_package), + method.identifier() + ) +} + +fn format_method_name(service: &T, method: &T::Method, emit_package: bool) -> String { + format!( + "{}.{}", + format_service_name(service, emit_package), + method.identifier() + ) +} + // Generates attributes given a list of (`pattern`, `attribute`) pairs. If `pattern` matches `name`, `attribute` will be included. fn generate_attributes<'a>( name: &str, @@ -218,7 +244,7 @@ fn generate_doc_comment>(comment: S) -> TokenStream { let comment = comment.as_ref(); - let comment = if !comment.starts_with(" ") { + let comment = if !comment.starts_with(' ') { format!(" {}", comment) } else { comment.to_string() diff -Nru temporalio-1.3.0/vendor/tonic-build/src/prost.rs temporalio-1.3.0/vendor/tonic-build/src/prost.rs --- temporalio-1.3.0/vendor/tonic-build/src/prost.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic-build/src/prost.rs 2023-10-30 19:40:00.000000000 +0000 @@ -20,10 +20,14 @@ build_server: true, build_transport: true, file_descriptor_set_path: None, + skip_protoc_run: false, out_dir: None, extern_path: Vec::new(), field_attributes: Vec::new(), + message_attributes: Vec::new(), + enum_attributes: Vec::new(), type_attributes: Vec::new(), + boxed: Vec::new(), server_attributes: Attributes::default(), client_attributes: Attributes::default(), proto_path: "super".to_string(), @@ -222,9 +226,13 @@ pub(crate) build_server: bool, pub(crate) build_transport: bool, pub(crate) file_descriptor_set_path: Option, + pub(crate) skip_protoc_run: bool, pub(crate) extern_path: Vec<(String, String)>, pub(crate) field_attributes: Vec<(String, String)>, pub(crate) type_attributes: Vec<(String, String)>, + pub(crate) message_attributes: Vec<(String, String)>, + pub(crate) enum_attributes: Vec<(String, String)>, + pub(crate) boxed: Vec, pub(crate) server_attributes: Attributes, pub(crate) client_attributes: Attributes, pub(crate) proto_path: String, @@ -267,6 +275,14 @@ self } + /// In combination with with file_descriptor_set_path, this can be used to provide a file + /// descriptor set as an input file, rather than having prost-build generate the file by + /// calling protoc. + pub fn skip_protoc_run(mut self) -> Self { + self.skip_protoc_run = true; + self + } + /// Set the output directory to generate code to. /// /// Defaults to the `OUT_DIR` environment variable. @@ -306,6 +322,36 @@ self } + /// Add additional attribute to matched messages. + /// + /// Passed directly to `prost_build::Config.message_attribute`. + pub fn message_attribute, A: AsRef>( + mut self, + path: P, + attribute: A, + ) -> Self { + self.message_attributes + .push((path.as_ref().to_string(), attribute.as_ref().to_string())); + self + } + + /// Add additional attribute to matched enums. + /// + /// Passed directly to `prost_build::Config.enum_attribute`. + pub fn enum_attribute, A: AsRef>(mut self, path: P, attribute: A) -> Self { + self.enum_attributes + .push((path.as_ref().to_string(), attribute.as_ref().to_string())); + self + } + + /// Add additional boxed fields. + /// + /// Passed directly to `prost_build::Config.boxed`. + pub fn boxed>(mut self, path: P) -> Self { + self.boxed.push(path.as_ref().to_string()); + self + } + /// Add additional attribute to matched server `mod`s. Matches on the package name. pub fn server_mod_attribute, A: AsRef>( mut self, @@ -438,6 +484,9 @@ if let Some(path) = self.file_descriptor_set_path.as_ref() { config.file_descriptor_set_path(path); } + if self.skip_protoc_run { + config.skip_protoc_run(); + } for (proto_path, rust_path) in self.extern_path.iter() { config.extern_path(proto_path, rust_path); } @@ -447,6 +496,15 @@ for (prost_path, attr) in self.type_attributes.iter() { config.type_attribute(prost_path, attr); } + for (prost_path, attr) in self.message_attributes.iter() { + config.message_attribute(prost_path, attr); + } + for (prost_path, attr) in self.enum_attributes.iter() { + config.enum_attribute(prost_path, attr); + } + for prost_path in self.boxed.iter() { + config.boxed(prost_path); + } if self.compile_well_known_types { config.compile_well_known_types(); } diff -Nru temporalio-1.3.0/vendor/tonic-build/src/server.rs temporalio-1.3.0/vendor/tonic-build/src/server.rs --- temporalio-1.3.0/vendor/tonic-build/src/server.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tonic-build/src/server.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,7 +1,10 @@ use std::collections::HashSet; use super::{Attributes, Method, Service}; -use crate::{generate_doc_comment, generate_doc_comments, naive_snake_case}; +use crate::{ + format_method_name, format_method_path, format_service_name, generate_doc_comment, + generate_doc_comments, naive_snake_case, +}; use proc_macro2::{Span, TokenStream}; use quote::quote; use syn::{Ident, Lit, LitStr}; @@ -36,7 +39,7 @@ attributes: &Attributes, disable_comments: &HashSet, ) -> TokenStream { - let methods = generate_methods(service, proto_path, compile_well_known_types); + let methods = generate_methods(service, emit_package, proto_path, compile_well_known_types); let server_service = quote::format_ident!("{}Server", service.name()); let server_trait = quote::format_ident!("{}", service.name()); @@ -51,22 +54,17 @@ ); let package = if emit_package { service.package() } else { "" }; // Transport based implementations - let path = format!( - "{}{}{}", - package, - if package.is_empty() { "" } else { "." }, - service.identifier() - ); + let service_name = format_service_name(service, emit_package); - let service_doc = if disable_comments.contains(&path) { + let service_doc = if disable_comments.contains(&service_name) { TokenStream::new() } else { generate_doc_comments(service.comment()) }; - let named = generate_named(&server_service, &server_trait, &path); + let named = generate_named(&server_service, &server_trait, &service_name); let mod_attributes = attributes.for_mod(package); - let struct_attributes = attributes.for_struct(&path); + let struct_attributes = attributes.for_struct(&service_name); let configure_compression_methods = quote! { /// Enable decompressing requests with the given encoding. @@ -84,6 +82,26 @@ } }; + let configure_max_message_size_methods = quote! { + /// Limits the maximum size of a decoded message. + /// + /// Default: `4MB` + #[must_use] + pub fn max_decoding_message_size(mut self, limit: usize) -> Self { + self.max_decoding_message_size = Some(limit); + self + } + + /// Limits the maximum size of an encoded message. + /// + /// Default: `usize::MAX` + #[must_use] + pub fn max_encoding_message_size(mut self, limit: usize) -> Self { + self.max_encoding_message_size = Some(limit); + self + } + }; + quote! { /// Generated server implementations. #(#mod_attributes)* @@ -106,6 +124,8 @@ inner: _Inner, accept_compression_encodings: EnabledCompressionEncodings, send_compression_encodings: EnabledCompressionEncodings, + max_decoding_message_size: Option, + max_encoding_message_size: Option, } struct _Inner(Arc); @@ -121,6 +141,8 @@ inner, accept_compression_encodings: Default::default(), send_compression_encodings: Default::default(), + max_decoding_message_size: None, + max_encoding_message_size: None, } } @@ -132,6 +154,8 @@ } #configure_compression_methods + + #configure_max_message_size_methods } impl tonic::codegen::Service> for #server_service @@ -144,7 +168,7 @@ type Error = std::convert::Infallible; type Future = BoxFuture; - fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll> { + fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll> { Poll::Ready(Ok(())) } @@ -173,13 +197,15 @@ inner, accept_compression_encodings: self.accept_compression_encodings, send_compression_encodings: self.send_compression_encodings, + max_decoding_message_size: self.max_decoding_message_size, + max_encoding_message_size: self.max_encoding_message_size, } } } impl Clone for _Inner { fn clone(&self) -> Self { - Self(self.0.clone()) + Self(Arc::clone(&self.0)) } } @@ -209,7 +235,7 @@ compile_well_known_types, disable_comments, ); - let trait_doc = generate_doc_comment(&format!( + let trait_doc = generate_doc_comment(format!( " Generated trait containing gRPC methods that should be implemented for use with {}Server.", service.name() )); @@ -232,70 +258,64 @@ ) -> TokenStream { let mut stream = TokenStream::new(); - let package = if emit_package { service.package() } else { "" }; for method in service.methods() { let name = quote::format_ident!("{}", method.name()); let (req_message, res_message) = method.request_response_name(proto_path, compile_well_known_types); - let method_doc = if disable_comments.contains(&format!( - "{}{}{}.{}", - package, - if package.is_empty() { "" } else { "." }, - service.identifier(), - method.identifier() - )) { - TokenStream::new() - } else { - generate_doc_comments(method.comment()) - }; + let method_doc = + if disable_comments.contains(&format_method_name(service, method, emit_package)) { + TokenStream::new() + } else { + generate_doc_comments(method.comment()) + }; let method = match (method.client_streaming(), method.server_streaming()) { (false, false) => { quote! { #method_doc async fn #name(&self, request: tonic::Request<#req_message>) - -> Result, tonic::Status>; + -> std::result::Result, tonic::Status>; } } (true, false) => { quote! { #method_doc async fn #name(&self, request: tonic::Request>) - -> Result, tonic::Status>; + -> std::result::Result, tonic::Status>; } } (false, true) => { let stream = quote::format_ident!("{}Stream", method.identifier()); - let stream_doc = generate_doc_comment(&format!( + let stream_doc = generate_doc_comment(format!( " Server streaming response type for the {} method.", method.identifier() )); quote! { #stream_doc - type #stream: futures_core::Stream> + Send + 'static; + type #stream: futures_core::Stream> + Send + 'static; #method_doc async fn #name(&self, request: tonic::Request<#req_message>) - -> Result, tonic::Status>; + -> std::result::Result, tonic::Status>; } } (true, true) => { let stream = quote::format_ident!("{}Stream", method.identifier()); - let stream_doc = generate_doc_comment(&format!( + let stream_doc = generate_doc_comment(format!( " Server streaming response type for the {} method.", method.identifier() )); quote! { #stream_doc - type #stream: futures_core::Stream> + Send + 'static; + type #stream: futures_core::Stream> + Send + 'static; #method_doc async fn #name(&self, request: tonic::Request>) - -> Result, tonic::Status>; + -> std::result::Result, tonic::Status>; } } }; @@ -322,23 +342,14 @@ fn generate_methods( service: &T, + emit_package: bool, proto_path: &str, compile_well_known_types: bool, ) -> TokenStream { let mut stream = TokenStream::new(); for method in service.methods() { - let path = format!( - "/{}{}{}/{}", - service.package(), - if service.package().is_empty() { - "" - } else { - "." - }, - service.identifier(), - method.identifier() - ); + let path = format_method_path(service, method, emit_package); let method_path = Lit::Str(LitStr::new(&path, Span::call_site())); let ident = quote::format_ident!("{}", method.name()); let server_trait = quote::format_ident!("{}", service.name()); @@ -409,7 +420,7 @@ type Future = BoxFuture, tonic::Status>; fn call(&mut self, request: tonic::Request<#request>) -> Self::Future { - let inner = self.0.clone(); + let inner = Arc::clone(&self.0); let fut = async move { (*inner).#method_ident(request).await }; @@ -419,6 +430,8 @@ let accept_compression_encodings = self.accept_compression_encodings; let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; let inner = self.inner.clone(); let fut = async move { let inner = inner.0; @@ -426,7 +439,8 @@ let codec = #codec_name::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config(accept_compression_encodings, send_compression_encodings); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.unary(method, req).await; Ok(res) @@ -461,7 +475,7 @@ type Future = BoxFuture, tonic::Status>; fn call(&mut self, request: tonic::Request<#request>) -> Self::Future { - let inner = self.0.clone(); + let inner = Arc::clone(&self.0); let fut = async move { (*inner).#method_ident(request).await }; @@ -471,6 +485,8 @@ let accept_compression_encodings = self.accept_compression_encodings; let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; let inner = self.inner.clone(); let fut = async move { let inner = inner.0; @@ -478,7 +494,8 @@ let codec = #codec_name::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config(accept_compression_encodings, send_compression_encodings); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.server_streaming(method, req).await; Ok(res) @@ -510,7 +527,7 @@ type Future = BoxFuture, tonic::Status>; fn call(&mut self, request: tonic::Request>) -> Self::Future { - let inner = self.0.clone(); + let inner = Arc::clone(&self.0); let fut = async move { (*inner).#method_ident(request).await @@ -521,6 +538,8 @@ let accept_compression_encodings = self.accept_compression_encodings; let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; let inner = self.inner.clone(); let fut = async move { let inner = inner.0; @@ -528,7 +547,8 @@ let codec = #codec_name::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config(accept_compression_encodings, send_compression_encodings); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.client_streaming(method, req).await; Ok(res) @@ -564,7 +584,7 @@ type Future = BoxFuture, tonic::Status>; fn call(&mut self, request: tonic::Request>) -> Self::Future { - let inner = self.0.clone(); + let inner = Arc::clone(&self.0); let fut = async move { (*inner).#method_ident(request).await }; @@ -574,6 +594,8 @@ let accept_compression_encodings = self.accept_compression_encodings; let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; let inner = self.inner.clone(); let fut = async move { let inner = inner.0; @@ -581,7 +603,8 @@ let codec = #codec_name::default(); let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config(accept_compression_encodings, send_compression_encodings); + .apply_compression_config(accept_compression_encodings, send_compression_encodings) + .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size); let res = grpc.streaming(method, req).await; Ok(res) diff -Nru temporalio-1.3.0/vendor/tracing-opentelemetry/benches/trace.rs temporalio-1.3.0/vendor/tracing-opentelemetry/benches/trace.rs --- temporalio-1.3.0/vendor/tracing-opentelemetry/benches/trace.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tracing-opentelemetry/benches/trace.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,126 +0,0 @@ -use criterion::{criterion_group, criterion_main, Criterion}; -use opentelemetry::{ - sdk::trace::{Tracer, TracerProvider}, - trace::{SpanBuilder, Tracer as _, TracerProvider as _}, - Context, -}; -use std::time::SystemTime; -use tracing::trace_span; -use tracing_subscriber::prelude::*; - -fn many_children(c: &mut Criterion) { - let mut group = c.benchmark_group("otel_many_children"); - - group.bench_function("spec_baseline", |b| { - let provider = TracerProvider::default(); - let tracer = provider.tracer("bench"); - b.iter(|| { - fn dummy(tracer: &Tracer, cx: &Context) { - for _ in 0..99 { - tracer.start_with_context("child", cx); - } - } - - tracer.in_span("parent", |cx| dummy(&tracer, &cx)); - }); - }); - - { - let _subscriber = tracing_subscriber::registry() - .with(RegistryAccessLayer) - .set_default(); - group.bench_function("no_data_baseline", |b| b.iter(tracing_harness)); - } - - { - let _subscriber = tracing_subscriber::registry() - .with(OtelDataLayer) - .set_default(); - group.bench_function("data_only_baseline", |b| b.iter(tracing_harness)); - } - - { - let provider = TracerProvider::default(); - let tracer = provider.tracer("bench"); - let otel_layer = tracing_opentelemetry::layer() - .with_tracer(tracer) - .with_tracked_inactivity(false); - let _subscriber = tracing_subscriber::registry() - .with(otel_layer) - .set_default(); - - group.bench_function("full", |b| b.iter(tracing_harness)); - } -} - -struct NoDataSpan; -struct RegistryAccessLayer; - -impl tracing_subscriber::Layer for RegistryAccessLayer -where - S: tracing_core::Subscriber + for<'span> tracing_subscriber::registry::LookupSpan<'span>, -{ - fn on_new_span( - &self, - _attrs: &tracing_core::span::Attributes<'_>, - id: &tracing::span::Id, - ctx: tracing_subscriber::layer::Context<'_, S>, - ) { - let span = ctx.span(id).expect("Span not found, this is a bug"); - let mut extensions = span.extensions_mut(); - extensions.insert(NoDataSpan); - } - - fn on_close(&self, id: tracing::span::Id, ctx: tracing_subscriber::layer::Context<'_, S>) { - let span = ctx.span(&id).expect("Span not found, this is a bug"); - let mut extensions = span.extensions_mut(); - - extensions.remove::(); - } -} - -struct OtelDataLayer; - -impl tracing_subscriber::Layer for OtelDataLayer -where - S: tracing_core::Subscriber + for<'span> tracing_subscriber::registry::LookupSpan<'span>, -{ - fn on_new_span( - &self, - attrs: &tracing_core::span::Attributes<'_>, - id: &tracing::span::Id, - ctx: tracing_subscriber::layer::Context<'_, S>, - ) { - let span = ctx.span(id).expect("Span not found, this is a bug"); - let mut extensions = span.extensions_mut(); - extensions.insert( - SpanBuilder::from_name(attrs.metadata().name()).with_start_time(SystemTime::now()), - ); - } - - fn on_close(&self, id: tracing::span::Id, ctx: tracing_subscriber::layer::Context<'_, S>) { - let span = ctx.span(&id).expect("Span not found, this is a bug"); - let mut extensions = span.extensions_mut(); - - if let Some(builder) = extensions.remove::() { - builder.with_end_time(SystemTime::now()); - } - } -} - -fn tracing_harness() { - fn dummy() { - for _ in 0..99 { - let child = trace_span!("child"); - let _enter = child.enter(); - } - } - - let parent = trace_span!("parent"); - let _enter = parent.enter(); - - dummy(); -} - -criterion_group!(benches, many_children); -criterion_main!(benches); diff -Nru temporalio-1.3.0/vendor/tracing-opentelemetry/.cargo-checksum.json temporalio-1.3.0/vendor/tracing-opentelemetry/.cargo-checksum.json --- temporalio-1.3.0/vendor/tracing-opentelemetry/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tracing-opentelemetry/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -{"files":{"CHANGELOG.md":"c1e40382ebeed78e3235a66cbf7f7aedc82edbb35039a1ce39dd3f74ff049165","Cargo.toml":"84f1156414129815381991da4d5d1b32d191dd4987533cef87c1389a0dec97df","LICENSE":"898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1","README.md":"243abf7886e6f322960eb17a828ff74cb0c0de5cf419e25384ab11ea3e139799","benches/trace.rs":"0d50a8b2f8b75578ccea205151bb87ba4b299185a5933bcbca220bd19f3ba0d5","src/layer.rs":"771b72dcba1db8e34f6d28cc5edbb60ad07955b16e6be42131050ad837bb3ba3","src/lib.rs":"a397e84869176718569adb515ebc0ce5e0c11d94d7629145f04188dfe1e4e2b0","src/metrics.rs":"ffbd9eff1ecc181f9d966c8f252b5a4b19fc6460899d5b313101a50adc0d76b8","src/span_ext.rs":"5448dafe7ab4776ae8900b805f6654de5b752ec6841894f651fd79cd9885d7ea","src/tracer.rs":"2676d704d0aa2ab3552d4d54b19dbb200060953474b91c272d9cc2dab6e22a82","tests/metrics_publishing.rs":"adddb63fe2ddf026462a7c96379aae0a1ef386d61fd32306ef1ae667946a9e29","tests/trace_state_propagation.rs":"a4d28bd254c8fc6a1bdf2be9dccea3f54153c5b81059d4010d744966f28b2ef6","trace.png":"a9cac3b434069075e9369abfe862c4f0c41d6bdcf7ff94b641eae72393028a40"},"package":"21ebb87a95ea13271332df069020513ab70bdb5637ca42d6e492dc3bbbad48de"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/tracing-opentelemetry/Cargo.toml temporalio-1.3.0/vendor/tracing-opentelemetry/Cargo.toml --- temporalio-1.3.0/vendor/tracing-opentelemetry/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tracing-opentelemetry/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 @@ -1,116 +0,0 @@ -# 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.0" -name = "tracing-opentelemetry" -version = "0.18.0" -authors = [ - "Julian Tescher ", - "Tokio Contributors ", -] -description = "OpenTelemetry integration for tracing" -homepage = "https://github.com/tokio-rs/tracing/tree/master/tracing-opentelemetry" -readme = "README.md" -keywords = [ - "tracing", - "opentelemetry", - "jaeger", - "zipkin", - "async", -] -categories = [ - "development-tools::debugging", - "development-tools::profiling", - "asynchronous", -] -license = "MIT" -repository = "https://github.com/tokio-rs/tracing" - -[package.metadata.docs.rs] -all-features = true -rustdoc-args = [ - "--cfg", - "docsrs", -] - -[lib] -bench = false - -[[bench]] -name = "trace" -harness = false - -[dependencies.async-trait] -version = "0.1.56" -optional = true - -[dependencies.once_cell] -version = "1.13.0" - -[dependencies.opentelemetry] -version = "0.18.0" -features = ["trace"] -default-features = false - -[dependencies.thiserror] -version = "1.0.31" -optional = true - -[dependencies.tracing] -version = "0.1.35" -features = ["std"] -default-features = false - -[dependencies.tracing-core] -version = "0.1.28" - -[dependencies.tracing-log] -version = "0.1.3" -optional = true -default-features = false - -[dependencies.tracing-subscriber] -version = "0.3.0" -features = [ - "registry", - "std", -] -default-features = false - -[dev-dependencies.async-trait] -version = "0.1.56" - -[dev-dependencies.criterion] -version = "0.3.6" -default-features = false - -[dev-dependencies.futures-util] -version = "0.3" -default-features = false - -[dev-dependencies.opentelemetry-jaeger] -version = "0.17.0" - -[dev-dependencies.tokio] -version = "1" -features = ["full"] - -[dev-dependencies.tokio-stream] -version = "0.1" - -[features] -default = [ - "tracing-log", - "metrics", -] -metrics = ["opentelemetry/metrics"] diff -Nru temporalio-1.3.0/vendor/tracing-opentelemetry/CHANGELOG.md temporalio-1.3.0/vendor/tracing-opentelemetry/CHANGELOG.md --- temporalio-1.3.0/vendor/tracing-opentelemetry/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tracing-opentelemetry/CHANGELOG.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,310 +0,0 @@ -# 0.18.0 (September 18, 2022) - -### Breaking Changes - -- Upgrade to `v0.18.0` of `opentelemetry` ([#2303]) - For list of breaking changes in OpenTelemetry, see the - [v0.18.0 changelog](https://github.com/open-telemetry/opentelemetry-rust/blob/main/opentelemetry/CHANGELOG.md#v0180). - -### Fixed - -- `on_event` respects event's explicit parent ([#2296]) - -Thanks to @wprzytula for contributing to this release! - -[#2303]: https://github.com/tokio-rs/tracing/pull/2303 -[#2296]: https://github.com/tokio-rs/tracing/pull/2296 - -# 0.17.4 (July 1, 2022) - -This release adds optional support for recording `std::error::Error`s using -[OpenTelemetry's semantic conventions for exceptions][exn-semconv]. - -### Added - -- `Layer::with_exception_fields` to enable emitting `exception.message` and - `exception.backtrace` semantic-convention fields when an `Error` is recorded - as a span or event field ([#2135]) -- `Layer::with_exception_field_propagation` to enable setting `exception.message` and - `exception.backtrace` semantic-convention fields on the current span when an - event with an `Error` field is recorded ([#2135]) - -Thanks to @lilymara-onesignal for contributing to this release! - -[thread-semconv]: https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/exceptions/ -[#2135]: https://github.com/tokio-rs/tracing/pull/2135 - -# 0.17.3 (June 7, 2022) - -This release adds support for emitting thread names and IDs to OpenTelemetry, as -well as recording `std::error::Error` values in a structured manner with their -source chain included. Additionally, this release fixes issues related to event -and span source code locations. - -### Added - -- `Layer::with_threads` to enable recording thread names/IDs according to - [OpenTelemetry semantic conventions][thread-semconv] ([#2134]) -- `Error::source` chain when recording `std::error::Error` values ([#2122]) -- `Layer::with_location` method (replaces `Layer::with_event_location`) - ([#2124]) - -### Changed - -- `std::error::Error` values are now recorded using `fmt::Display` rather than - `fmt::Debug` ([#2122]) - -### Fixed - -- Fixed event source code locations overwriting the parent span's source - location ([#2099]) -- Fixed `Layer::with_event_location` not controlling whether locations are - emitted for spans as well as events ([#2124]) - -### Deprecated - -- `Layer::with_event_location`: renamed to `Layer::with_location`, as it now - controls both span and event locations ([#2124]) - -Thanks to new contributors @lilymara-onesignal, @hubertbudzynski, and @DevinCarr -for contributing to this release! - -[thread-semconv]: https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/span-general/#source-code-attributes -[#2134]: https://github.com/tokio-rs/tracing/pull/2134 -[#2122]: https://github.com/tokio-rs/tracing/pull/2122 -[#2124]: https://github.com/tokio-rs/tracing/pull/2124 -[#2099]: https://github.com/tokio-rs/tracing/pull/2099 - -# 0.17.2 (February 21, 2022) - -This release fixes [an issue][#1944] introduced in v0.17.1 where -`tracing-opentelemetry` could not be compiled with `default-features = false`. - -### Fixed - -- Compilation failure with `tracing-log` feature disabled ([#1949]) - -[#1949]: https://github.com/tokio-rs/tracing/pull/1917 -[#1944]: https://github.com/tokio-rs/tracing/issues/1944 - -# 0.17.1 (February 11, 2022) (YANKED) - -### Added - -- `OpenTelemetryLayer` can now add detailed location information to - forwarded events (defaults to on) ([#1911]) -- `OpenTelemetryLayer::with_event_location` to control whether source locations - are recorded ([#1911]) -### Changed - -- Avoid unnecessary allocations to improve performance when recording events - ([#1917]) - -Thanks to @djc for contributing to this release! - -[#1917]: https://github.com/tokio-rs/tracing/pull/1917 -[#1911]: https://github.com/tokio-rs/tracing/pull/1911 - -# 0.17.0 (February 3, 2022) - -### Breaking Changes - -- Upgrade to `v0.17.0` of `opentelemetry` (#1853) - For list of breaking changes in OpenTelemetry, see the - [v0.17.0 changelog](https://github.com/open-telemetry/opentelemetry-rust/blob/main/opentelemetry/CHANGELOG.md#v0170). - -# 0.16.1 (October 23, 2021) - -### Breaking Changes - -- Upgrade to `v0.3.0` of `tracing-subscriber` ([#1677]) - For list of breaking changes in `tracing-subscriber`, see the - [v0.3.0 changelog]. - -### Added - -- `OpenTelemetrySpanExt::add_link` method for adding a link between a `tracing` - span and a provided OpenTelemetry `Context` ([#1516]) - -Thanks to @LehMaxence for contributing to this release! - -[v0.3.0 changelog]: https://github.com/tokio-rs/tracing/releases/tag/tracing-subscriber-0.3.0 -[#1516]: https://github.com/tokio-rs/tracing/pull/1516 -[#1677]: https://github.com/tokio-rs/tracing/pull/1677 - -# 0.15.0 (August 7, 2021) - -### Breaking Changes - -- Upgrade to `v0.17.1` of `opentelemetry` (#1497) - For list of breaking changes in OpenTelemetry, see the - [v0.17.1 changelog](https://github.com/open-telemetry/opentelemetry-rust/blob/main/opentelemetry/CHANGELOG.md#v0160). - -# 0.14.0 (July 9, 2021) - -### Breaking Changes - -- Upgrade to `v0.15.0` of `opentelemetry` ([#1441]) - For list of breaking changes in OpenTelemetry, see the - [v0.14.0 changelog](https://github.com/open-telemetry/opentelemetry-rust/blob/main/opentelemetry/CHANGELOG.md#v0140). - -### Added - -- Spans now include Opentelemetry `code.namespace`, `code.filepath`, and - `code.lineno` attributes ([#1411]) - -### Changed - -- Improve performance by pre-allocating attribute `Vec`s ([#1327]) - -Thanks to @Drevoed, @lilymara-onesignal, and @Folyd for contributing -to this release! - -[#1441]: https://github.com/tokio-rs/tracing/pull/1441 -[#1411]: https://github.com/tokio-rs/tracing/pull/1411 -[#1327]: https://github.com/tokio-rs/tracing/pull/1327 - -# 0.13.0 (May 15, 2021) - -### Breaking Changes - -- Upgrade to `v0.14.0` of `opentelemetry` (#1394) - For list of breaking changes in OpenTelemetry, see the - [v0.14.0 changelog](https://github.com/open-telemetry/opentelemetry-rust/blob/main/opentelemetry/CHANGELOG.md#v0140). - -# 0.12.0 (March 31, 2021) - -### Breaking Changes - -- Upgrade to `v0.13.0` of `opentelemetry` (#1322) - For list of breaking changes in OpenTelemetry, see the - [v0.13.0 changelog](https://github.com/open-telemetry/opentelemetry-rust/blob/main/opentelemetry/CHANGELOG.md#v0130). - -### Changed - -- Improve performance when tracked inactivity is disabled (#1315) - -# 0.11.0 (January 25, 2021) - -### Breaking Changes - -- Upgrade to `v0.12.0` of `opentelemetry` (#1200) - For list of breaking changes in OpenTelemetry, see the - [v0.12.0 changelog](https://github.com/open-telemetry/opentelemetry-rust/blob/main/opentelemetry/CHANGELOG.md#v0120). - -# 0.10.0 (December 30, 2020) - -### Breaking Changes - -- Upgrade to `v0.11.0` of `opentelemetry` (#1161) - For list of breaking changes in OpenTelemetry, see the - [v0.11.0 changelog](https://github.com/open-telemetry/opentelemetry-rust/blob/master/opentelemetry/CHANGELOG.md#v0110). -- Update `OpenTelemetrySpanExt::set_parent` to take a context by value as it is - now stored and propagated. (#1161) -- Rename `PreSampledTracer::sampled_span_context` to - `PreSampledTracer::sampled_context` as it now returns a full otel context. (#1161) - -# 0.9.0 (November 13, 2020) - -### Added - -- Track busy/idle timings as attributes via `with_tracked_inactivity` (#1096) - -### Breaking Changes - -- Upgrade to `v0.10.0` of `opentelemetry` (#1049) - For list of breaking changes in OpenTelemetry, see the - [v0.10.0 changelog](https://github.com/open-telemetry/opentelemetry-rust/blob/master/opentelemetry/CHANGELOG.md#v0100). - -# 0.8.0 (October 13, 2020) - -### Added - -- Implement additional record types (bool, i64, u64) (#1007) - -### Breaking changes - -- Add `PreSampledTracer` interface, removes need to specify sampler (#962) - -### Fixed - -- Connect external traces (#956) -- Assign default ids if missing (#1027) - -# 0.7.0 (August 14, 2020) - -### Breaking Changes - -- Upgrade to `v0.8.0` of `opentelemetry` (#932) - For list of breaking changes in OpenTelemetry, see the - [v0.8.0 changelog](https://github.com/open-telemetry/opentelemetry-rust/blob/master/CHANGELOG.md#v080). - -# 0.6.0 (August 4, 2020) - -### Breaking Changes - -- Upgrade to `v0.7.0` of `opentelemetry` (#867) - For list of breaking changes in OpenTelemetry, see the - [v0.7.0 changelog](https://github.com/open-telemetry/opentelemetry-rust/blob/master/CHANGELOG.md#v070). - -# 0.5.0 (June 2, 2020) - -### Added - -- Support `tracing-log` special values (#735) -- Support `Span::follows_from` creating otel span links (#723) -- Dynamic otel span names via `otel.name` field (#732) - -### Breaking Changes - -- Upgrade to `v0.6.0` of `opentelemetry` (#745) - -### Fixed - -- Filter out invalid parent contexts when building span contexts (#743) - -# 0.4.0 (May 12, 2020) - -### Added - -- `tracing_opentelemetry::layer()` method to construct a default layer. -- `OpenTelemetryLayer::with_sampler` method to configure the opentelemetry - sampling behavior. -- `OpenTelemetryLayer::new` method to configure both the tracer and sampler. - -### Breaking Changes - -- `OpenTelemetrySpanExt::set_parent` now accepts a reference to an extracted - parent `Context` instead of a `SpanContext` to match propagators. -- `OpenTelemetrySpanExt::context` now returns a `Context` instead of a - `SpanContext` to match propagators. -- `OpenTelemetryLayer::with_tracer` now takes `&self` as a parameter -- Upgrade to `v0.5.0` of `opentelemetry`. - -### Fixed - -- Fixes bug where child spans were always marked as sampled - -# 0.3.1 (April 19, 2020) - -### Added - -- Change span status code to unknown on error event - -# 0.3.0 (April 5, 2020) - -### Added - -- Span extension for injecting and extracting `opentelemetry` span contexts - into `tracing` spans - -### Removed - -- Disabled the `metrics` feature of the opentelemetry as it is unused. - -# 0.2.0 (February 7, 2020) - -### Changed - -- Update `tracing-subscriber` to 0.2.0 stable -- Update to `opentelemetry` 0.2.0 diff -Nru temporalio-1.3.0/vendor/tracing-opentelemetry/LICENSE temporalio-1.3.0/vendor/tracing-opentelemetry/LICENSE --- temporalio-1.3.0/vendor/tracing-opentelemetry/LICENSE 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tracing-opentelemetry/LICENSE 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -Copyright (c) 2019 Tokio Contributors - -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 -Nru temporalio-1.3.0/vendor/tracing-opentelemetry/README.md temporalio-1.3.0/vendor/tracing-opentelemetry/README.md --- temporalio-1.3.0/vendor/tracing-opentelemetry/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tracing-opentelemetry/README.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,132 +0,0 @@ -![Tracing — Structured, application-level diagnostics][splash] - -[splash]: https://raw.githubusercontent.com/tokio-rs/tracing/master/assets/splash.svg - -# Tracing OpenTelemetry - -Utilities for adding [OpenTelemetry] interoperability to [`tracing`]. - -[![Crates.io][crates-badge]][crates-url] -[![Documentation][docs-badge]][docs-url] -[![Documentation (master)][docs-master-badge]][docs-master-url] -[![MIT licensed][mit-badge]][mit-url] -[![Build Status][actions-badge]][actions-url] -[![Discord chat][discord-badge]][discord-url] -![maintenance status][maint-badge] - -[Documentation][docs-url] | [Chat][discord-url] - -[crates-badge]: https://img.shields.io/crates/v/tracing-opentelemetry.svg -[crates-url]: https://crates.io/crates/tracing-opentelemetry/0.18.0 -[docs-badge]: https://docs.rs/tracing-opentelemetry/badge.svg -[docs-url]: https://docs.rs/tracing-opentelemetry/0.18.0/tracing_opentelemetry -[docs-master-badge]: https://img.shields.io/badge/docs-master-blue -[docs-master-url]: https://tracing-rs.netlify.com/tracing_opentelemetry -[mit-badge]: https://img.shields.io/badge/license-MIT-blue.svg -[mit-url]: LICENSE -[actions-badge]: https://github.com/tokio-rs/tracing/workflows/CI/badge.svg -[actions-url]:https://github.com/tokio-rs/tracing/actions?query=workflow%3ACI -[discord-badge]: https://img.shields.io/discord/500028886025895936?logo=discord&label=discord&logoColor=white -[discord-url]: https://discord.gg/EeF3cQw -[maint-badge]: https://img.shields.io/badge/maintenance-actively--developed-brightgreen.svg - -## Overview - -[`tracing`] is a framework for instrumenting Rust programs to collect -structured, event-based diagnostic information. This crate provides a -subscriber that connects spans from multiple systems into a trace and -emits them to [OpenTelemetry]-compatible distributed tracing systems -for processing and visualization. - -The crate provides the following types: - -* [`OpenTelemetryLayer`] adds OpenTelemetry context to all `tracing` [span]s. -* [`OpenTelemetrySpanExt`] allows OpenTelemetry parent trace information to be - injected and extracted from a `tracing` [span]. - -[`OpenTelemetryLayer`]: https://docs.rs/tracing-opentelemetry/latest/tracing_opentelemetry/struct.OpenTelemetryLayer.html -[`OpenTelemetrySpanExt`]: https://docs.rs/tracing-opentelemetry/latest/tracing_opentelemetry/trait.OpenTelemetrySpanExt.html -[span]: https://docs.rs/tracing/latest/tracing/span/index.html -[`tracing`]: https://crates.io/crates/tracing -[OpenTelemetry]: https://opentelemetry.io/ - -*Compiler support: [requires `rustc` 1.56+][msrv]* - -[msrv]: #supported-rust-versions - -## Examples - -### Basic Usage - -```rust -use opentelemetry::sdk::export::trace::stdout; -use tracing::{error, span}; -use tracing_subscriber::layer::SubscriberExt; -use tracing_subscriber::Registry; - -fn main() { - // Install a new OpenTelemetry trace pipeline - let tracer = stdout::new_pipeline().install_simple(); - - // Create a tracing layer with the configured tracer - let telemetry = tracing_opentelemetry::layer().with_tracer(tracer); - - // Use the tracing subscriber `Registry`, or any other subscriber - // that impls `LookupSpan` - let subscriber = Registry::default().with(telemetry); - - // Trace executed code - tracing::subscriber::with_default(subscriber, || { - // Spans will be sent to the configured OpenTelemetry exporter - let root = span!(tracing::Level::TRACE, "app_start", work_units = 2); - let _enter = root.enter(); - - error!("This event will be logged in the root span."); - }); -} -``` - -### Visualization example - -```console -# Run a supported collector like jaeger in the background -$ docker run -d -p6831:6831/udp -p6832:6832/udp -p16686:16686 jaegertracing/all-in-one:latest - -# Run example to produce spans (from parent examples directory) -$ cargo run --example opentelemetry - -# View spans (see the image below) -$ firefox http://localhost:16686/ -``` - -![Jaeger UI](trace.png) - -## Feature Flags - - - `metrics`: Enables the [`MetricsSubscriber`] type, a [subscriber] that - exports OpenTelemetry metrics from specifically-named events. This enables - the `metrics` feature flag on the `opentelemetry` crate. - -## Supported Rust Versions - -Tracing Opentelemetry is built against the latest stable release. The minimum -supported version is 1.56. The current Tracing version is not guaranteed to -build on Rust versions earlier than the minimum supported version. - -Tracing follows the same compiler support policies as the rest of the Tokio -project. The current stable Rust compiler and the three most recent minor -versions before it will always be supported. For example, if the current stable -compiler version is 1.45, the minimum supported version will not be increased -past 1.42, three minor versions prior. Increasing the minimum supported compiler -version is not considered a semver breaking change as long as doing so complies -with this policy. - -## License - -This project is licensed under the [MIT license](LICENSE). - -### Contribution - -Unless you explicitly state otherwise, any contribution intentionally submitted -for inclusion in Tracing by you, shall be licensed as MIT, without any additional -terms or conditions. diff -Nru temporalio-1.3.0/vendor/tracing-opentelemetry/src/layer.rs temporalio-1.3.0/vendor/tracing-opentelemetry/src/layer.rs --- temporalio-1.3.0/vendor/tracing-opentelemetry/src/layer.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tracing-opentelemetry/src/layer.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,1405 +0,0 @@ -use crate::{OtelData, PreSampledTracer}; -use once_cell::unsync; -use opentelemetry::{ - trace::{self as otel, noop, OrderMap, TraceContextExt}, - Context as OtelContext, Key, KeyValue, StringValue, Value, -}; -use std::any::TypeId; -use std::fmt; -use std::marker; -use std::thread; -use std::time::{Instant, SystemTime}; -use tracing_core::span::{self, Attributes, Id, Record}; -use tracing_core::{field, Event, Subscriber}; -#[cfg(feature = "tracing-log")] -use tracing_log::NormalizeEvent; -use tracing_subscriber::layer::Context; -use tracing_subscriber::registry::LookupSpan; -use tracing_subscriber::Layer; - -const SPAN_NAME_FIELD: &str = "otel.name"; -const SPAN_KIND_FIELD: &str = "otel.kind"; -const SPAN_STATUS_CODE_FIELD: &str = "otel.status_code"; -const SPAN_STATUS_MESSAGE_FIELD: &str = "otel.status_message"; - -const FIELD_EXCEPTION_MESSAGE: &str = "exception.message"; -const FIELD_EXCEPTION_STACKTRACE: &str = "exception.stacktrace"; - -/// An [OpenTelemetry] propagation layer for use in a project that uses -/// [tracing]. -/// -/// [OpenTelemetry]: https://opentelemetry.io -/// [tracing]: https://github.com/tokio-rs/tracing -pub struct OpenTelemetryLayer { - tracer: T, - location: bool, - tracked_inactivity: bool, - with_threads: bool, - exception_config: ExceptionFieldConfig, - get_context: WithContext, - _registry: marker::PhantomData, -} - -impl Default for OpenTelemetryLayer -where - S: Subscriber + for<'span> LookupSpan<'span>, -{ - fn default() -> Self { - OpenTelemetryLayer::new(noop::NoopTracer::new()) - } -} - -/// Construct a layer to track spans via [OpenTelemetry]. -/// -/// [OpenTelemetry]: https://opentelemetry.io -/// -/// # Examples -/// -/// ```rust,no_run -/// use tracing_subscriber::layer::SubscriberExt; -/// use tracing_subscriber::Registry; -/// -/// // Use the tracing subscriber `Registry`, or any other subscriber -/// // that impls `LookupSpan` -/// let subscriber = Registry::default().with(tracing_opentelemetry::layer()); -/// # drop(subscriber); -/// ``` -pub fn layer() -> OpenTelemetryLayer -where - S: Subscriber + for<'span> LookupSpan<'span>, -{ - OpenTelemetryLayer::default() -} - -// this function "remembers" the types of the subscriber so that we -// can downcast to something aware of them without knowing those -// types at the callsite. -// -// See https://github.com/tokio-rs/tracing/blob/4dad420ee1d4607bad79270c1520673fa6266a3d/tracing-error/src/layer.rs -pub(crate) struct WithContext( - fn(&tracing::Dispatch, &span::Id, f: &mut dyn FnMut(&mut OtelData, &dyn PreSampledTracer)), -); - -impl WithContext { - // This function allows a function to be called in the context of the - // "remembered" subscriber. - pub(crate) fn with_context<'a>( - &self, - dispatch: &'a tracing::Dispatch, - id: &span::Id, - mut f: impl FnMut(&mut OtelData, &dyn PreSampledTracer), - ) { - (self.0)(dispatch, id, &mut f) - } -} - -fn str_to_span_kind(s: &str) -> Option { - match s { - s if s.eq_ignore_ascii_case("server") => Some(otel::SpanKind::Server), - s if s.eq_ignore_ascii_case("client") => Some(otel::SpanKind::Client), - s if s.eq_ignore_ascii_case("producer") => Some(otel::SpanKind::Producer), - s if s.eq_ignore_ascii_case("consumer") => Some(otel::SpanKind::Consumer), - s if s.eq_ignore_ascii_case("internal") => Some(otel::SpanKind::Internal), - _ => None, - } -} - -fn str_to_status(s: &str) -> otel::Status { - match s { - s if s.eq_ignore_ascii_case("ok") => otel::Status::Ok, - s if s.eq_ignore_ascii_case("error") => otel::Status::error(""), - _ => otel::Status::Unset, - } -} - -struct SpanEventVisitor<'a, 'b> { - event_builder: &'a mut otel::Event, - span_builder: Option<&'b mut otel::SpanBuilder>, - exception_config: ExceptionFieldConfig, -} - -impl<'a, 'b> field::Visit for SpanEventVisitor<'a, 'b> { - /// Record events on the underlying OpenTelemetry [`Span`] from `bool` values. - /// - /// [`Span`]: opentelemetry::trace::Span - fn record_bool(&mut self, field: &field::Field, value: bool) { - match field.name() { - "message" => self.event_builder.name = value.to_string().into(), - // Skip fields that are actually log metadata that have already been handled - #[cfg(feature = "tracing-log")] - name if name.starts_with("log.") => (), - name => { - self.event_builder - .attributes - .push(KeyValue::new(name, value)); - } - } - } - - /// Record events on the underlying OpenTelemetry [`Span`] from `f64` values. - /// - /// [`Span`]: opentelemetry::trace::Span - fn record_f64(&mut self, field: &field::Field, value: f64) { - match field.name() { - "message" => self.event_builder.name = value.to_string().into(), - // Skip fields that are actually log metadata that have already been handled - #[cfg(feature = "tracing-log")] - name if name.starts_with("log.") => (), - name => { - self.event_builder - .attributes - .push(KeyValue::new(name, value)); - } - } - } - - /// Record events on the underlying OpenTelemetry [`Span`] from `i64` values. - /// - /// [`Span`]: opentelemetry::trace::Span - fn record_i64(&mut self, field: &field::Field, value: i64) { - match field.name() { - "message" => self.event_builder.name = value.to_string().into(), - // Skip fields that are actually log metadata that have already been handled - #[cfg(feature = "tracing-log")] - name if name.starts_with("log.") => (), - name => { - self.event_builder - .attributes - .push(KeyValue::new(name, value)); - } - } - } - - /// Record events on the underlying OpenTelemetry [`Span`] from `&str` values. - /// - /// [`Span`]: opentelemetry::trace::Span - fn record_str(&mut self, field: &field::Field, value: &str) { - match field.name() { - "message" => self.event_builder.name = value.to_string().into(), - // Skip fields that are actually log metadata that have already been handled - #[cfg(feature = "tracing-log")] - name if name.starts_with("log.") => (), - name => { - self.event_builder - .attributes - .push(KeyValue::new(name, value.to_string())); - } - } - } - - /// Record events on the underlying OpenTelemetry [`Span`] from values that - /// implement Debug. - /// - /// [`Span`]: opentelemetry::trace::Span - fn record_debug(&mut self, field: &field::Field, value: &dyn fmt::Debug) { - match field.name() { - "message" => self.event_builder.name = format!("{:?}", value).into(), - // Skip fields that are actually log metadata that have already been handled - #[cfg(feature = "tracing-log")] - name if name.starts_with("log.") => (), - name => { - self.event_builder - .attributes - .push(KeyValue::new(name, format!("{:?}", value))); - } - } - } - - /// Set attributes on the underlying OpenTelemetry [`Span`] using a [`std::error::Error`]'s - /// [`std::fmt::Display`] implementation. Also adds the `source` chain as an extra field - /// - /// [`Span`]: opentelemetry::trace::Span - fn record_error( - &mut self, - field: &tracing_core::Field, - value: &(dyn std::error::Error + 'static), - ) { - let mut chain = Vec::new(); - let mut next_err = value.source(); - - while let Some(err) = next_err { - chain.push(StringValue::from(err.to_string())); - next_err = err.source(); - } - - let error_msg = value.to_string(); - - if self.exception_config.record { - self.event_builder - .attributes - .push(Key::new(FIELD_EXCEPTION_MESSAGE).string(error_msg.clone())); - - // NOTE: This is actually not the stacktrace of the exception. This is - // the "source chain". It represents the heirarchy of errors from the - // app level to the lowest level such as IO. It does not represent all - // of the callsites in the code that led to the error happening. - // `std::error::Error::backtrace` is a nightly-only API and cannot be - // used here until the feature is stabilized. - self.event_builder - .attributes - .push(Key::new(FIELD_EXCEPTION_STACKTRACE).array(chain.clone())); - } - - if self.exception_config.propagate { - if let Some(span) = &mut self.span_builder { - if let Some(attrs) = span.attributes.as_mut() { - attrs.insert(Key::new(FIELD_EXCEPTION_MESSAGE), error_msg.clone().into()); - - // NOTE: This is actually not the stacktrace of the exception. This is - // the "source chain". It represents the heirarchy of errors from the - // app level to the lowest level such as IO. It does not represent all - // of the callsites in the code that led to the error happening. - // `std::error::Error::backtrace` is a nightly-only API and cannot be - // used here until the feature is stabilized. - attrs.insert( - Key::new(FIELD_EXCEPTION_STACKTRACE), - Value::Array(chain.clone().into()), - ); - } - } - } - - self.event_builder - .attributes - .push(Key::new(field.name()).string(error_msg)); - self.event_builder - .attributes - .push(Key::new(format!("{}.chain", field.name())).array(chain)); - } -} - -/// Control over opentelemetry conventional exception fields -#[derive(Clone, Copy)] -struct ExceptionFieldConfig { - /// If an error value is recorded on an event/span, should the otel fields - /// be added - record: bool, - - /// If an error value is recorded on an event, should the otel fields be - /// added to the corresponding span - propagate: bool, -} - -struct SpanAttributeVisitor<'a> { - span_builder: &'a mut otel::SpanBuilder, - exception_config: ExceptionFieldConfig, -} - -impl<'a> SpanAttributeVisitor<'a> { - fn record(&mut self, attribute: KeyValue) { - debug_assert!(self.span_builder.attributes.is_some()); - if let Some(v) = self.span_builder.attributes.as_mut() { - v.insert(attribute.key, attribute.value); - } - } -} - -impl<'a> field::Visit for SpanAttributeVisitor<'a> { - /// Set attributes on the underlying OpenTelemetry [`Span`] from `bool` values. - /// - /// [`Span`]: opentelemetry::trace::Span - fn record_bool(&mut self, field: &field::Field, value: bool) { - self.record(KeyValue::new(field.name(), value)); - } - - /// Set attributes on the underlying OpenTelemetry [`Span`] from `f64` values. - /// - /// [`Span`]: opentelemetry::trace::Span - fn record_f64(&mut self, field: &field::Field, value: f64) { - self.record(KeyValue::new(field.name(), value)); - } - - /// Set attributes on the underlying OpenTelemetry [`Span`] from `i64` values. - /// - /// [`Span`]: opentelemetry::trace::Span - fn record_i64(&mut self, field: &field::Field, value: i64) { - self.record(KeyValue::new(field.name(), value)); - } - - /// Set attributes on the underlying OpenTelemetry [`Span`] from `&str` values. - /// - /// [`Span`]: opentelemetry::trace::Span - fn record_str(&mut self, field: &field::Field, value: &str) { - match field.name() { - SPAN_NAME_FIELD => self.span_builder.name = value.to_string().into(), - SPAN_KIND_FIELD => self.span_builder.span_kind = str_to_span_kind(value), - SPAN_STATUS_CODE_FIELD => self.span_builder.status = str_to_status(value), - SPAN_STATUS_MESSAGE_FIELD => { - self.span_builder.status = otel::Status::error(value.to_string()) - } - _ => self.record(KeyValue::new(field.name(), value.to_string())), - } - } - - /// Set attributes on the underlying OpenTelemetry [`Span`] from values that - /// implement Debug. - /// - /// [`Span`]: opentelemetry::trace::Span - fn record_debug(&mut self, field: &field::Field, value: &dyn fmt::Debug) { - match field.name() { - SPAN_NAME_FIELD => self.span_builder.name = format!("{:?}", value).into(), - SPAN_KIND_FIELD => { - self.span_builder.span_kind = str_to_span_kind(&format!("{:?}", value)) - } - SPAN_STATUS_CODE_FIELD => { - self.span_builder.status = str_to_status(&format!("{:?}", value)) - } - SPAN_STATUS_MESSAGE_FIELD => { - self.span_builder.status = otel::Status::error(format!("{:?}", value)) - } - _ => self.record(Key::new(field.name()).string(format!("{:?}", value))), - } - } - - /// Set attributes on the underlying OpenTelemetry [`Span`] using a [`std::error::Error`]'s - /// [`std::fmt::Display`] implementation. Also adds the `source` chain as an extra field - /// - /// [`Span`]: opentelemetry::trace::Span - fn record_error( - &mut self, - field: &tracing_core::Field, - value: &(dyn std::error::Error + 'static), - ) { - let mut chain = Vec::new(); - let mut next_err = value.source(); - - while let Some(err) = next_err { - chain.push(StringValue::from(err.to_string())); - next_err = err.source(); - } - - let error_msg = value.to_string(); - - if self.exception_config.record { - self.record(Key::new(FIELD_EXCEPTION_MESSAGE).string(error_msg.clone())); - - // NOTE: This is actually not the stacktrace of the exception. This is - // the "source chain". It represents the heirarchy of errors from the - // app level to the lowest level such as IO. It does not represent all - // of the callsites in the code that led to the error happening. - // `std::error::Error::backtrace` is a nightly-only API and cannot be - // used here until the feature is stabilized. - self.record(Key::new(FIELD_EXCEPTION_STACKTRACE).array(chain.clone())); - } - - self.record(Key::new(field.name()).string(error_msg)); - self.record(Key::new(format!("{}.chain", field.name())).array(chain)); - } -} - -impl OpenTelemetryLayer -where - S: Subscriber + for<'span> LookupSpan<'span>, - T: otel::Tracer + PreSampledTracer + 'static, -{ - /// Set the [`Tracer`] that this layer will use to produce and track - /// OpenTelemetry [`Span`]s. - /// - /// [`Tracer`]: opentelemetry::trace::Tracer - /// [`Span`]: opentelemetry::trace::Span - /// - /// # Examples - /// - /// ```no_run - /// use tracing_opentelemetry::OpenTelemetryLayer; - /// use tracing_subscriber::layer::SubscriberExt; - /// use tracing_subscriber::Registry; - /// - /// // Create a jaeger exporter pipeline for a `trace_demo` service. - /// let tracer = opentelemetry_jaeger::new_agent_pipeline() - /// .with_service_name("trace_demo") - /// .install_simple() - /// .expect("Error initializing Jaeger exporter"); - /// - /// // Create a layer with the configured tracer - /// let otel_layer = OpenTelemetryLayer::new(tracer); - /// - /// // Use the tracing subscriber `Registry`, or any other subscriber - /// // that impls `LookupSpan` - /// let subscriber = Registry::default().with(otel_layer); - /// # drop(subscriber); - /// ``` - pub fn new(tracer: T) -> Self { - OpenTelemetryLayer { - tracer, - location: true, - tracked_inactivity: true, - with_threads: true, - exception_config: ExceptionFieldConfig { - record: false, - propagate: false, - }, - get_context: WithContext(Self::get_context), - _registry: marker::PhantomData, - } - } - - /// Set the [`Tracer`] that this layer will use to produce and track - /// OpenTelemetry [`Span`]s. - /// - /// [`Tracer`]: opentelemetry::trace::Tracer - /// [`Span`]: opentelemetry::trace::Span - /// - /// # Examples - /// - /// ```no_run - /// use tracing_subscriber::layer::SubscriberExt; - /// use tracing_subscriber::Registry; - /// - /// // Create a jaeger exporter pipeline for a `trace_demo` service. - /// let tracer = opentelemetry_jaeger::new_agent_pipeline() - /// .with_service_name("trace_demo") - /// .install_simple() - /// .expect("Error initializing Jaeger exporter"); - /// - /// // Create a layer with the configured tracer - /// let otel_layer = tracing_opentelemetry::layer().with_tracer(tracer); - /// - /// // Use the tracing subscriber `Registry`, or any other subscriber - /// // that impls `LookupSpan` - /// let subscriber = Registry::default().with(otel_layer); - /// # drop(subscriber); - /// ``` - pub fn with_tracer(self, tracer: Tracer) -> OpenTelemetryLayer - where - Tracer: otel::Tracer + PreSampledTracer + 'static, - { - OpenTelemetryLayer { - tracer, - location: self.location, - tracked_inactivity: self.tracked_inactivity, - with_threads: self.with_threads, - exception_config: self.exception_config, - get_context: WithContext(OpenTelemetryLayer::::get_context), - _registry: self._registry, - } - } - - /// Sets whether or not span and event metadata should include OpenTelemetry - /// exception fields such as `exception.message` and `exception.backtrace` - /// when an `Error` value is recorded. If multiple error values are recorded - /// on the same span/event, only the most recently recorded error value will - /// show up under these fields. - /// - /// These attributes follow the [OpenTelemetry semantic conventions for - /// exceptions][conv]. - /// - /// By default, these attributes are not recorded. - /// - /// [conv]: https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/exceptions/ - pub fn with_exception_fields(self, exception_fields: bool) -> Self { - Self { - exception_config: ExceptionFieldConfig { - record: exception_fields, - ..self.exception_config - }, - ..self - } - } - - /// Sets whether or not reporting an `Error` value on an event will - /// propagate the OpenTelemetry exception fields such as `exception.message` - /// and `exception.backtrace` to the corresponding span. You do not need to - /// enable `with_exception_fields` in order to enable this. If multiple - /// error values are recorded on the same span/event, only the most recently - /// recorded error value will show up under these fields. - /// - /// These attributes follow the [OpenTelemetry semantic conventions for - /// exceptions][conv]. - /// - /// By default, these attributes are not propagated to the span. - /// - /// [conv]: https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/exceptions/ - pub fn with_exception_field_propagation(self, exception_field_propagation: bool) -> Self { - Self { - exception_config: ExceptionFieldConfig { - propagate: exception_field_propagation, - ..self.exception_config - }, - ..self - } - } - - /// Sets whether or not span and event metadata should include OpenTelemetry - /// attributes with location information, such as the file, module and line number. - /// - /// These attributes follow the [OpenTelemetry semantic conventions for - /// source locations][conv]. - /// - /// By default, locations are enabled. - /// - /// [conv]: https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/span-general/#source-code-attributes - pub fn with_location(self, location: bool) -> Self { - Self { location, ..self } - } - - /// Sets whether or not span and event metadata should include OpenTelemetry - /// attributes with location information, such as the file, module and line number. - /// - /// These attributes follow the [OpenTelemetry semantic conventions for - /// source locations][conv]. - /// - /// By default, locations are enabled. - /// - /// [conv]: https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/span-general/#source-code-attributes - #[deprecated( - since = "0.17.3", - note = "renamed to `OpenTelemetrySubscriber::with_location`" - )] - pub fn with_event_location(self, event_location: bool) -> Self { - Self { - location: event_location, - ..self - } - } - - /// Sets whether or not spans metadata should include the _busy time_ - /// (total time for which it was entered), and _idle time_ (total time - /// the span existed but was not entered). - pub fn with_tracked_inactivity(self, tracked_inactivity: bool) -> Self { - Self { - tracked_inactivity, - ..self - } - } - - /// Sets whether or not spans record additional attributes for the thread - /// name and thread ID of the thread they were created on, following the - /// [OpenTelemetry semantic conventions for threads][conv]. - /// - /// By default, thread attributes are enabled. - /// - /// [conv]: https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/span-general/#general-thread-attributes - pub fn with_threads(self, threads: bool) -> Self { - Self { - with_threads: threads, - ..self - } - } - - /// Retrieve the parent OpenTelemetry [`Context`] from the current tracing - /// [`span`] through the [`Registry`]. This [`Context`] links spans to their - /// parent for proper hierarchical visualization. - /// - /// [`Context`]: opentelemetry::Context - /// [`span`]: tracing::Span - /// [`Registry`]: tracing_subscriber::Registry - fn parent_context(&self, attrs: &Attributes<'_>, ctx: &Context<'_, S>) -> OtelContext { - // If a span is specified, it _should_ exist in the underlying `Registry`. - if let Some(parent) = attrs.parent() { - let span = ctx.span(parent).expect("Span not found, this is a bug"); - let mut extensions = span.extensions_mut(); - extensions - .get_mut::() - .map(|builder| self.tracer.sampled_context(builder)) - .unwrap_or_default() - // Else if the span is inferred from context, look up any available current span. - } else if attrs.is_contextual() { - ctx.lookup_current() - .and_then(|span| { - let mut extensions = span.extensions_mut(); - extensions - .get_mut::() - .map(|builder| self.tracer.sampled_context(builder)) - }) - .unwrap_or_else(OtelContext::current) - // Explicit root spans should have no parent context. - } else { - OtelContext::new() - } - } - - fn get_context( - dispatch: &tracing::Dispatch, - id: &span::Id, - f: &mut dyn FnMut(&mut OtelData, &dyn PreSampledTracer), - ) { - let subscriber = dispatch - .downcast_ref::() - .expect("subscriber should downcast to expected type; this is a bug!"); - let span = subscriber - .span(id) - .expect("registry should have a span for the current ID"); - let layer = dispatch - .downcast_ref::>() - .expect("layer should downcast to expected type; this is a bug!"); - - let mut extensions = span.extensions_mut(); - if let Some(builder) = extensions.get_mut::() { - f(builder, &layer.tracer); - } - } - - fn extra_span_attrs(&self) -> usize { - let mut extra_attrs = 0; - if self.location { - extra_attrs += 3; - } - if self.with_threads { - extra_attrs += 2; - } - extra_attrs - } -} - -thread_local! { - static THREAD_ID: unsync::Lazy = unsync::Lazy::new(|| { - // OpenTelemetry's semantic conventions require the thread ID to be - // recorded as an integer, but `std::thread::ThreadId` does not expose - // the integer value on stable, so we have to convert it to a `usize` by - // parsing it. Since this requires allocating a `String`, store it in a - // thread local so we only have to do this once. - // TODO(eliza): once `std::thread::ThreadId::as_u64` is stabilized - // (https://github.com/rust-lang/rust/issues/67939), just use that. - thread_id_integer(thread::current().id()) - }); -} - -impl Layer for OpenTelemetryLayer -where - S: Subscriber + for<'span> LookupSpan<'span>, - T: otel::Tracer + PreSampledTracer + 'static, -{ - /// Creates an [OpenTelemetry `Span`] for the corresponding [tracing `Span`]. - /// - /// [OpenTelemetry `Span`]: opentelemetry::trace::Span - /// [tracing `Span`]: tracing::Span - fn on_new_span(&self, attrs: &Attributes<'_>, id: &span::Id, ctx: Context<'_, S>) { - let span = ctx.span(id).expect("Span not found, this is a bug"); - let mut extensions = span.extensions_mut(); - - if self.tracked_inactivity && extensions.get_mut::().is_none() { - extensions.insert(Timings::new()); - } - - let parent_cx = self.parent_context(attrs, &ctx); - let mut builder = self - .tracer - .span_builder(attrs.metadata().name()) - .with_start_time(SystemTime::now()) - // Eagerly assign span id so children have stable parent id - .with_span_id(self.tracer.new_span_id()); - - // Record new trace id if there is no active parent span - if !parent_cx.has_active_span() { - builder.trace_id = Some(self.tracer.new_trace_id()); - } - - let builder_attrs = builder.attributes.get_or_insert(OrderMap::with_capacity( - attrs.fields().len() + self.extra_span_attrs(), - )); - - if self.location { - let meta = attrs.metadata(); - - if let Some(filename) = meta.file() { - builder_attrs.insert("code.filepath".into(), filename.into()); - } - - if let Some(module) = meta.module_path() { - builder_attrs.insert("code.namespace".into(), module.into()); - } - - if let Some(line) = meta.line() { - builder_attrs.insert("code.lineno".into(), (line as i64).into()); - } - } - - if self.with_threads { - THREAD_ID.with(|id| builder_attrs.insert("thread.id".into(), (**id as i64).into())); - if let Some(name) = std::thread::current().name() { - // TODO(eliza): it's a bummer that we have to allocate here, but - // we can't easily get the string as a `static`. it would be - // nice if `opentelemetry` could also take `Arc`s as - // `String` values... - builder_attrs.insert("thread.name".into(), name.to_owned().into()); - } - } - - attrs.record(&mut SpanAttributeVisitor { - span_builder: &mut builder, - exception_config: self.exception_config, - }); - extensions.insert(OtelData { builder, parent_cx }); - } - - fn on_enter(&self, id: &span::Id, ctx: Context<'_, S>) { - if !self.tracked_inactivity { - return; - } - - let span = ctx.span(id).expect("Span not found, this is a bug"); - let mut extensions = span.extensions_mut(); - - if let Some(timings) = extensions.get_mut::() { - let now = Instant::now(); - timings.idle += (now - timings.last).as_nanos() as i64; - timings.last = now; - } - } - - fn on_exit(&self, id: &span::Id, ctx: Context<'_, S>) { - if !self.tracked_inactivity { - return; - } - - let span = ctx.span(id).expect("Span not found, this is a bug"); - let mut extensions = span.extensions_mut(); - - if let Some(timings) = extensions.get_mut::() { - let now = Instant::now(); - timings.busy += (now - timings.last).as_nanos() as i64; - timings.last = now; - } - } - - /// Record OpenTelemetry [`attributes`] for the given values. - /// - /// [`attributes`]: opentelemetry::trace::SpanBuilder::attributes - fn on_record(&self, id: &Id, values: &Record<'_>, ctx: Context<'_, S>) { - let span = ctx.span(id).expect("Span not found, this is a bug"); - let mut extensions = span.extensions_mut(); - if let Some(data) = extensions.get_mut::() { - values.record(&mut SpanAttributeVisitor { - span_builder: &mut data.builder, - exception_config: self.exception_config, - }); - } - } - - fn on_follows_from(&self, id: &Id, follows: &Id, ctx: Context) { - let span = ctx.span(id).expect("Span not found, this is a bug"); - let mut extensions = span.extensions_mut(); - let data = extensions - .get_mut::() - .expect("Missing otel data span extensions"); - - let follows_span = ctx - .span(follows) - .expect("Span to follow not found, this is a bug"); - let mut follows_extensions = follows_span.extensions_mut(); - let follows_data = follows_extensions - .get_mut::() - .expect("Missing otel data span extensions"); - - let follows_context = self - .tracer - .sampled_context(follows_data) - .span() - .span_context() - .clone(); - let follows_link = otel::Link::new(follows_context, Vec::new()); - if let Some(ref mut links) = data.builder.links { - links.push(follows_link); - } else { - data.builder.links = Some(vec![follows_link]); - } - } - - /// Records OpenTelemetry [`Event`] data on event. - /// - /// Note: an [`ERROR`]-level event will also set the OpenTelemetry span status code to - /// [`Error`], signaling that an error has occurred. - /// - /// [`Event`]: opentelemetry::trace::Event - /// [`ERROR`]: tracing::Level::ERROR - /// [`Error`]: opentelemetry::trace::StatusCode::Error - fn on_event(&self, event: &Event<'_>, ctx: Context<'_, S>) { - // Ignore events that have no explicit parent set *and* are not in the context of a span - if let Some(span) = ctx.event_span(event) { - // Performing read operations before getting a write lock to avoid a deadlock - // See https://github.com/tokio-rs/tracing/issues/763 - #[cfg(feature = "tracing-log")] - let normalized_meta = event.normalized_metadata(); - #[cfg(feature = "tracing-log")] - let meta = normalized_meta.as_ref().unwrap_or_else(|| event.metadata()); - #[cfg(not(feature = "tracing-log"))] - let meta = event.metadata(); - - let target = Key::new("target"); - - #[cfg(feature = "tracing-log")] - let target = if normalized_meta.is_some() { - target.string(meta.target().to_owned()) - } else { - target.string(event.metadata().target()) - }; - - #[cfg(not(feature = "tracing-log"))] - let target = target.string(meta.target()); - - let mut extensions = span.extensions_mut(); - let span_builder = extensions - .get_mut::() - .map(|data| &mut data.builder); - - let mut otel_event = otel::Event::new( - String::new(), - SystemTime::now(), - vec![Key::new("level").string(meta.level().as_str()), target], - 0, - ); - event.record(&mut SpanEventVisitor { - event_builder: &mut otel_event, - span_builder, - exception_config: self.exception_config, - }); - - if let Some(OtelData { builder, .. }) = extensions.get_mut::() { - if builder.status == otel::Status::Unset - && *meta.level() == tracing_core::Level::ERROR - { - builder.status = otel::Status::error("") - } - - if self.location { - #[cfg(not(feature = "tracing-log"))] - let normalized_meta: Option> = None; - let (file, module) = match &normalized_meta { - Some(meta) => ( - meta.file().map(|s| Value::from(s.to_owned())), - meta.module_path().map(|s| Value::from(s.to_owned())), - ), - None => ( - event.metadata().file().map(Value::from), - event.metadata().module_path().map(Value::from), - ), - }; - - if let Some(file) = file { - otel_event - .attributes - .push(KeyValue::new("code.filepath", file)); - } - if let Some(module) = module { - otel_event - .attributes - .push(KeyValue::new("code.namespace", module)); - } - if let Some(line) = meta.line() { - otel_event - .attributes - .push(KeyValue::new("code.lineno", line as i64)); - } - } - - if let Some(ref mut events) = builder.events { - events.push(otel_event); - } else { - builder.events = Some(vec![otel_event]); - } - } - }; - } - - /// Exports an OpenTelemetry [`Span`] on close. - /// - /// [`Span`]: opentelemetry::trace::Span - fn on_close(&self, id: span::Id, ctx: Context<'_, S>) { - let span = ctx.span(&id).expect("Span not found, this is a bug"); - let mut extensions = span.extensions_mut(); - - if let Some(OtelData { - mut builder, - parent_cx, - }) = extensions.remove::() - { - if self.tracked_inactivity { - // Append busy/idle timings when enabled. - if let Some(timings) = extensions.get_mut::() { - let busy_ns = Key::new("busy_ns"); - let idle_ns = Key::new("idle_ns"); - - let attributes = builder - .attributes - .get_or_insert_with(|| OrderMap::with_capacity(2)); - attributes.insert(busy_ns, timings.busy.into()); - attributes.insert(idle_ns, timings.idle.into()); - } - } - - // Assign end time, build and start span, drop span to export - builder - .with_end_time(SystemTime::now()) - .start_with_context(&self.tracer, &parent_cx); - } - } - - // SAFETY: this is safe because the `WithContext` function pointer is valid - // for the lifetime of `&self`. - unsafe fn downcast_raw(&self, id: TypeId) -> Option<*const ()> { - match id { - id if id == TypeId::of::() => Some(self as *const _ as *const ()), - id if id == TypeId::of::() => { - Some(&self.get_context as *const _ as *const ()) - } - _ => None, - } - } -} - -struct Timings { - idle: i64, - busy: i64, - last: Instant, -} - -impl Timings { - fn new() -> Self { - Self { - idle: 0, - busy: 0, - last: Instant::now(), - } - } -} - -fn thread_id_integer(id: thread::ThreadId) -> u64 { - let thread_id = format!("{:?}", id); - thread_id - .trim_start_matches("ThreadId(") - .trim_end_matches(')') - .parse::() - .expect("thread ID should parse as an integer") -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::OtelData; - use opentelemetry::{ - trace::{noop, TraceFlags}, - StringValue, - }; - use std::{ - borrow::Cow, - collections::HashMap, - error::Error, - fmt::Display, - sync::{Arc, Mutex}, - thread, - time::SystemTime, - }; - use tracing_subscriber::prelude::*; - - #[derive(Debug, Clone)] - struct TestTracer(Arc>>); - impl otel::Tracer for TestTracer { - type Span = noop::NoopSpan; - fn start_with_context(&self, _name: T, _context: &OtelContext) -> Self::Span - where - T: Into>, - { - noop::NoopSpan::new() - } - fn span_builder(&self, name: T) -> otel::SpanBuilder - where - T: Into>, - { - otel::SpanBuilder::from_name(name) - } - fn build_with_context( - &self, - builder: otel::SpanBuilder, - parent_cx: &OtelContext, - ) -> Self::Span { - *self.0.lock().unwrap() = Some(OtelData { - builder, - parent_cx: parent_cx.clone(), - }); - noop::NoopSpan::new() - } - } - - impl PreSampledTracer for TestTracer { - fn sampled_context(&self, _builder: &mut crate::OtelData) -> OtelContext { - OtelContext::new() - } - fn new_trace_id(&self) -> otel::TraceId { - otel::TraceId::INVALID - } - fn new_span_id(&self) -> otel::SpanId { - otel::SpanId::INVALID - } - } - - impl TestTracer { - fn with_data(&self, f: impl FnOnce(&OtelData) -> T) -> T { - let lock = self.0.lock().unwrap(); - let data = lock.as_ref().expect("no span data has been recorded yet"); - f(data) - } - } - - #[derive(Debug, Clone)] - struct TestSpan(otel::SpanContext); - impl otel::Span for TestSpan { - fn add_event_with_timestamp>>( - &mut self, - _: T, - _: SystemTime, - _: Vec, - ) { - } - fn span_context(&self) -> &otel::SpanContext { - &self.0 - } - fn is_recording(&self) -> bool { - false - } - fn set_attribute(&mut self, _attribute: KeyValue) {} - fn set_status(&mut self, _status: otel::Status) {} - fn update_name>>(&mut self, _new_name: T) {} - fn end_with_timestamp(&mut self, _timestamp: SystemTime) {} - } - - #[derive(Debug)] - struct TestDynError { - msg: &'static str, - source: Option>, - } - impl Display for TestDynError { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "{}", self.msg) - } - } - impl Error for TestDynError { - fn source(&self) -> Option<&(dyn Error + 'static)> { - match &self.source { - Some(source) => Some(source), - None => None, - } - } - } - impl TestDynError { - fn new(msg: &'static str) -> Self { - Self { msg, source: None } - } - fn with_parent(self, parent_msg: &'static str) -> Self { - Self { - msg: parent_msg, - source: Some(Box::new(self)), - } - } - } - - #[test] - fn dynamic_span_names() { - let dynamic_name = "GET http://example.com".to_string(); - let tracer = TestTracer(Arc::new(Mutex::new(None))); - let subscriber = tracing_subscriber::registry().with(layer().with_tracer(tracer.clone())); - - tracing::subscriber::with_default(subscriber, || { - tracing::debug_span!("static_name", otel.name = dynamic_name.as_str()); - }); - - let recorded_name = tracer - .0 - .lock() - .unwrap() - .as_ref() - .map(|b| b.builder.name.clone()); - assert_eq!(recorded_name, Some(dynamic_name.into())) - } - - #[test] - fn span_kind() { - let tracer = TestTracer(Arc::new(Mutex::new(None))); - let subscriber = tracing_subscriber::registry().with(layer().with_tracer(tracer.clone())); - - tracing::subscriber::with_default(subscriber, || { - tracing::debug_span!("request", otel.kind = "server"); - }); - - let recorded_kind = tracer.with_data(|data| data.builder.span_kind.clone()); - assert_eq!(recorded_kind, Some(otel::SpanKind::Server)) - } - - #[test] - fn span_status_code() { - let tracer = TestTracer(Arc::new(Mutex::new(None))); - let subscriber = tracing_subscriber::registry().with(layer().with_tracer(tracer.clone())); - - tracing::subscriber::with_default(subscriber, || { - tracing::debug_span!("request", otel.status_code = ?otel::Status::Ok); - }); - let recorded_status = tracer - .0 - .lock() - .unwrap() - .as_ref() - .unwrap() - .builder - .status - .clone(); - - assert_eq!(recorded_status, otel::Status::Ok) - } - - #[test] - fn span_status_message() { - let tracer = TestTracer(Arc::new(Mutex::new(None))); - let subscriber = tracing_subscriber::registry().with(layer().with_tracer(tracer.clone())); - - let message = "message"; - - tracing::subscriber::with_default(subscriber, || { - tracing::debug_span!("request", otel.status_message = message); - }); - - let recorded_status_message = tracer - .0 - .lock() - .unwrap() - .as_ref() - .unwrap() - .builder - .status - .clone(); - - assert_eq!(recorded_status_message, otel::Status::error(message)) - } - - #[test] - fn trace_id_from_existing_context() { - let tracer = TestTracer(Arc::new(Mutex::new(None))); - let subscriber = tracing_subscriber::registry().with(layer().with_tracer(tracer.clone())); - let trace_id = otel::TraceId::from(42u128.to_be_bytes()); - let existing_cx = OtelContext::current_with_span(TestSpan(otel::SpanContext::new( - trace_id, - otel::SpanId::from(1u64.to_be_bytes()), - TraceFlags::default(), - false, - Default::default(), - ))); - let _g = existing_cx.attach(); - - tracing::subscriber::with_default(subscriber, || { - tracing::debug_span!("request", otel.kind = "server"); - }); - - let recorded_trace_id = - tracer.with_data(|data| data.parent_cx.span().span_context().trace_id()); - assert_eq!(recorded_trace_id, trace_id) - } - - #[test] - fn includes_timings() { - let tracer = TestTracer(Arc::new(Mutex::new(None))); - let subscriber = tracing_subscriber::registry().with( - layer() - .with_tracer(tracer.clone()) - .with_tracked_inactivity(true), - ); - - tracing::subscriber::with_default(subscriber, || { - tracing::debug_span!("request"); - }); - - let attributes = tracer.with_data(|data| data.builder.attributes.as_ref().unwrap().clone()); - let keys = attributes - .iter() - .map(|(key, _)| key.as_str()) - .collect::>(); - assert!(keys.contains(&"idle_ns")); - assert!(keys.contains(&"busy_ns")); - } - - #[test] - fn records_error_fields() { - let tracer = TestTracer(Arc::new(Mutex::new(None))); - let subscriber = tracing_subscriber::registry().with( - layer() - .with_tracer(tracer.clone()) - .with_exception_fields(true), - ); - - let err = TestDynError::new("base error") - .with_parent("intermediate error") - .with_parent("user error"); - - tracing::subscriber::with_default(subscriber, || { - tracing::debug_span!( - "request", - error = &err as &(dyn std::error::Error + 'static) - ); - }); - - let attributes = tracer - .0 - .lock() - .unwrap() - .as_ref() - .unwrap() - .builder - .attributes - .as_ref() - .unwrap() - .clone(); - - let key_values = attributes - .into_iter() - .map(|(key, value)| (key.as_str().to_owned(), value)) - .collect::>(); - - assert_eq!(key_values["error"].as_str(), "user error"); - assert_eq!( - key_values["error.chain"], - Value::Array( - vec![ - StringValue::from("intermediate error"), - StringValue::from("base error") - ] - .into() - ) - ); - - assert_eq!(key_values[FIELD_EXCEPTION_MESSAGE].as_str(), "user error"); - assert_eq!( - key_values[FIELD_EXCEPTION_STACKTRACE], - Value::Array( - vec![ - StringValue::from("intermediate error"), - StringValue::from("base error") - ] - .into() - ) - ); - } - - #[test] - fn includes_span_location() { - let tracer = TestTracer(Arc::new(Mutex::new(None))); - let subscriber = tracing_subscriber::registry() - .with(layer().with_tracer(tracer.clone()).with_location(true)); - - tracing::subscriber::with_default(subscriber, || { - tracing::debug_span!("request"); - }); - - let attributes = tracer.with_data(|data| data.builder.attributes.as_ref().unwrap().clone()); - let keys = attributes - .iter() - .map(|(key, _)| key.as_str()) - .collect::>(); - assert!(keys.contains(&"code.filepath")); - assert!(keys.contains(&"code.namespace")); - assert!(keys.contains(&"code.lineno")); - } - - #[test] - fn excludes_span_location() { - let tracer = TestTracer(Arc::new(Mutex::new(None))); - let subscriber = tracing_subscriber::registry() - .with(layer().with_tracer(tracer.clone()).with_location(false)); - - tracing::subscriber::with_default(subscriber, || { - tracing::debug_span!("request"); - }); - - let attributes = tracer.with_data(|data| data.builder.attributes.as_ref().unwrap().clone()); - let keys = attributes - .iter() - .map(|(key, _)| key.as_str()) - .collect::>(); - assert!(!keys.contains(&"code.filepath")); - assert!(!keys.contains(&"code.namespace")); - assert!(!keys.contains(&"code.lineno")); - } - - #[test] - fn includes_thread() { - let thread = thread::current(); - let expected_name = thread - .name() - .map(|name| Value::String(name.to_owned().into())); - let expected_id = Value::I64(thread_id_integer(thread.id()) as i64); - - let tracer = TestTracer(Arc::new(Mutex::new(None))); - let subscriber = tracing_subscriber::registry() - .with(layer().with_tracer(tracer.clone()).with_threads(true)); - - tracing::subscriber::with_default(subscriber, || { - tracing::debug_span!("request"); - }); - - let attributes = tracer - .with_data(|data| data.builder.attributes.as_ref().unwrap().clone()) - .drain(..) - .map(|(key, value)| (key.as_str().to_string(), value)) - .collect::>(); - assert_eq!(attributes.get("thread.name"), expected_name.as_ref()); - assert_eq!(attributes.get("thread.id"), Some(&expected_id)); - } - - #[test] - fn excludes_thread() { - let tracer = TestTracer(Arc::new(Mutex::new(None))); - let subscriber = tracing_subscriber::registry() - .with(layer().with_tracer(tracer.clone()).with_threads(false)); - - tracing::subscriber::with_default(subscriber, || { - tracing::debug_span!("request"); - }); - - let attributes = tracer.with_data(|data| data.builder.attributes.as_ref().unwrap().clone()); - let keys = attributes - .iter() - .map(|(key, _)| key.as_str()) - .collect::>(); - assert!(!keys.contains(&"thread.name")); - assert!(!keys.contains(&"thread.id")); - } - - #[test] - fn propagates_error_fields_from_event_to_span() { - let tracer = TestTracer(Arc::new(Mutex::new(None))); - let subscriber = tracing_subscriber::registry().with( - layer() - .with_tracer(tracer.clone()) - .with_exception_field_propagation(true), - ); - - let err = TestDynError::new("base error") - .with_parent("intermediate error") - .with_parent("user error"); - - tracing::subscriber::with_default(subscriber, || { - let _guard = tracing::debug_span!("request",).entered(); - - tracing::error!( - error = &err as &(dyn std::error::Error + 'static), - "request error!" - ) - }); - - let attributes = tracer - .0 - .lock() - .unwrap() - .as_ref() - .unwrap() - .builder - .attributes - .as_ref() - .unwrap() - .clone(); - - let key_values = attributes - .into_iter() - .map(|(key, value)| (key.as_str().to_owned(), value)) - .collect::>(); - - assert_eq!(key_values[FIELD_EXCEPTION_MESSAGE].as_str(), "user error"); - assert_eq!( - key_values[FIELD_EXCEPTION_STACKTRACE], - Value::Array( - vec![ - StringValue::from("intermediate error"), - StringValue::from("base error") - ] - .into() - ) - ); - } -} diff -Nru temporalio-1.3.0/vendor/tracing-opentelemetry/src/lib.rs temporalio-1.3.0/vendor/tracing-opentelemetry/src/lib.rs --- temporalio-1.3.0/vendor/tracing-opentelemetry/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tracing-opentelemetry/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,146 +0,0 @@ -//! # Tracing OpenTelemetry -//! -//! [`tracing`] is a framework for instrumenting Rust programs to collect -//! structured, event-based diagnostic information. This crate provides a layer -//! that connects spans from multiple systems into a trace and emits them to -//! [OpenTelemetry]-compatible distributed tracing systems for processing and -//! visualization. -//! -//! [OpenTelemetry]: https://opentelemetry.io -//! [`tracing`]: https://github.com/tokio-rs/tracing -//! -//! *Compiler support: [requires `rustc` 1.56+][msrv]* -//! -//! [msrv]: #supported-rust-versions -//! -//! ### Special Fields -//! -//! Fields with an `otel.` prefix are reserved for this crate and have specific -//! meaning. They are treated as ordinary fields by other layers. The current -//! special fields are: -//! -//! * `otel.name`: Override the span name sent to OpenTelemetry exporters. -//! Setting this field is useful if you want to display non-static information -//! in your span name. -//! * `otel.kind`: Set the span kind to one of the supported OpenTelemetry [span kinds]. -//! * `otel.status_code`: Set the span status code to one of the supported OpenTelemetry [span status codes]. -//! * `otel.status_message`: Set the span status message. -//! -//! [span kinds]: opentelemetry::trace::SpanKind -//! [span status codes]: opentelemetry::trace::StatusCode -//! -//! ### Semantic Conventions -//! -//! OpenTelemetry defines conventional names for attributes of common -//! operations. These names can be assigned directly as fields, e.g. -//! `trace_span!("request", "otel.kind" = %SpanKind::Client, "http.url" = ..)`, and they -//! will be passed through to your configured OpenTelemetry exporter. You can -//! find the full list of the operations and their expected field names in the -//! [semantic conventions] spec. -//! -//! [semantic conventions]: https://github.com/open-telemetry/opentelemetry-specification/tree/master/specification/trace/semantic_conventions -//! -//! ### Stability Status -//! -//! The OpenTelemetry specification is currently in beta so some breaking -//! changes may still occur on the path to 1.0. You can follow the changes via -//! the [spec repository] to track progress toward stabilization. -//! -//! [spec repository]: https://github.com/open-telemetry/opentelemetry-specification -//! -//! ## Examples -//! -//! ``` -//! use opentelemetry::sdk::export::trace::stdout; -//! use tracing::{error, span}; -//! use tracing_subscriber::layer::SubscriberExt; -//! use tracing_subscriber::Registry; -//! -//! // Create a new OpenTelemetry pipeline -//! let tracer = stdout::new_pipeline().install_simple(); -//! -//! // Create a tracing layer with the configured tracer -//! let telemetry = tracing_opentelemetry::layer().with_tracer(tracer); -//! -//! // Use the tracing subscriber `Registry`, or any other subscriber -//! // that impls `LookupSpan` -//! let subscriber = Registry::default().with(telemetry); -//! -//! // Trace executed code -//! tracing::subscriber::with_default(subscriber, || { -//! // Spans will be sent to the configured OpenTelemetry exporter -//! let root = span!(tracing::Level::TRACE, "app_start", work_units = 2); -//! let _enter = root.enter(); -//! -//! error!("This event will be logged in the root span."); -//! }); -//! ``` -//! -//! ## Feature Flags -//! -//! - `metrics`: Enables the [`MetricsSubscriber`] type, a [subscriber] that -//! exports OpenTelemetry metrics from specifically-named events. This enables -//! the `metrics` feature flag on the `opentelemetry` crate. *Enabled by -//! default*. -//! -//! ## Supported Rust Versions -//! -//! Tracing is built against the latest stable release. The minimum supported -//! version is 1.56. The current Tracing version is not guaranteed to build on -//! Rust versions earlier than the minimum supported version. -//! -//! Tracing follows the same compiler support policies as the rest of the Tokio -//! project. The current stable Rust compiler and the three most recent minor -//! versions before it will always be supported. For example, if the current -//! stable compiler version is 1.45, the minimum supported version will not be -//! increased past 1.42, three minor versions prior. Increasing the minimum -//! supported compiler version is not considered a semver breaking change as -//! long as doing so complies with this policy. -//! -//! [subscriber]: tracing_subscriber::subscribe -#![deny(unreachable_pub)] -#![cfg_attr(test, deny(warnings))] -#![doc(html_root_url = "https://docs.rs/tracing-opentelemetry/0.18.0")] -#![doc( - html_logo_url = "https://raw.githubusercontent.com/tokio-rs/tracing/master/assets/logo-type.png", - issue_tracker_base_url = "https://github.com/tokio-rs/tracing/issues/" -)] -#![cfg_attr( - docsrs, - // Allows displaying cfgs/feature flags in the documentation. - feature(doc_cfg, doc_auto_cfg), - // Allows adding traits to RustDoc's list of "notable traits" - feature(doc_notable_trait), - // Fail the docs build if any intra-docs links are broken - deny(rustdoc::broken_intra_doc_links), -)] - -/// Implementation of the trace::Subscriber trait; publishes OpenTelemetry metrics. -#[cfg(feature = "metrics")] -mod metrics; - -/// Implementation of the trace::Layer as a source of OpenTelemetry data. -mod layer; -/// Span extension which enables OpenTelemetry context management. -mod span_ext; -/// Protocols for OpenTelemetry Tracers that are compatible with Tracing -mod tracer; - -pub use layer::{layer, OpenTelemetryLayer}; - -#[cfg(feature = "metrics")] -pub use metrics::MetricsLayer; -pub use span_ext::OpenTelemetrySpanExt; -pub use tracer::PreSampledTracer; - -/// Per-span OpenTelemetry data tracked by this crate. -/// -/// Useful for implementing [PreSampledTracer] in alternate otel SDKs. -#[derive(Debug, Clone)] -pub struct OtelData { - /// The parent otel `Context` for the current tracing span. - pub parent_cx: opentelemetry::Context, - - /// The otel span data recorded during the current tracing span. - pub builder: opentelemetry::trace::SpanBuilder, -} diff -Nru temporalio-1.3.0/vendor/tracing-opentelemetry/src/metrics.rs temporalio-1.3.0/vendor/tracing-opentelemetry/src/metrics.rs --- temporalio-1.3.0/vendor/tracing-opentelemetry/src/metrics.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tracing-opentelemetry/src/metrics.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,367 +0,0 @@ -use std::{collections::HashMap, fmt, sync::RwLock}; -use tracing::{field::Visit, Subscriber}; -use tracing_core::Field; - -use opentelemetry::{ - metrics::{Counter, Histogram, Meter, MeterProvider, UpDownCounter}, - sdk::metrics::controllers::BasicController, - Context as OtelContext, -}; -use tracing_subscriber::{layer::Context, registry::LookupSpan, Layer}; - -const CARGO_PKG_VERSION: &str = env!("CARGO_PKG_VERSION"); -const INSTRUMENTATION_LIBRARY_NAME: &str = "tracing/tracing-opentelemetry"; - -const METRIC_PREFIX_MONOTONIC_COUNTER: &str = "monotonic_counter."; -const METRIC_PREFIX_COUNTER: &str = "counter."; -const METRIC_PREFIX_HISTOGRAM: &str = "histogram."; -const I64_MAX: u64 = i64::MAX as u64; - -#[derive(Default)] -pub(crate) struct Instruments { - u64_counter: MetricsMap>, - f64_counter: MetricsMap>, - i64_up_down_counter: MetricsMap>, - f64_up_down_counter: MetricsMap>, - u64_histogram: MetricsMap>, - i64_histogram: MetricsMap>, - f64_histogram: MetricsMap>, -} - -type MetricsMap = RwLock>; - -#[derive(Copy, Clone, Debug)] -pub(crate) enum InstrumentType { - CounterU64(u64), - CounterF64(f64), - UpDownCounterI64(i64), - UpDownCounterF64(f64), - HistogramU64(u64), - HistogramI64(i64), - HistogramF64(f64), -} - -impl Instruments { - pub(crate) fn update_metric( - &self, - cx: &OtelContext, - meter: &Meter, - instrument_type: InstrumentType, - metric_name: &'static str, - ) { - fn update_or_insert( - map: &MetricsMap, - name: &'static str, - insert: impl FnOnce() -> T, - update: impl FnOnce(&T), - ) { - { - let lock = map.read().unwrap(); - if let Some(metric) = lock.get(name) { - update(metric); - return; - } - } - - // that metric did not already exist, so we have to acquire a write lock to - // create it. - let mut lock = map.write().unwrap(); - // handle the case where the entry was created while we were waiting to - // acquire the write lock - let metric = lock.entry(name).or_insert_with(insert); - update(metric) - } - - match instrument_type { - InstrumentType::CounterU64(value) => { - update_or_insert( - &self.u64_counter, - metric_name, - || meter.u64_counter(metric_name).init(), - |ctr| ctr.add(cx, value, &[]), - ); - } - InstrumentType::CounterF64(value) => { - update_or_insert( - &self.f64_counter, - metric_name, - || meter.f64_counter(metric_name).init(), - |ctr| ctr.add(cx, value, &[]), - ); - } - InstrumentType::UpDownCounterI64(value) => { - update_or_insert( - &self.i64_up_down_counter, - metric_name, - || meter.i64_up_down_counter(metric_name).init(), - |ctr| ctr.add(cx, value, &[]), - ); - } - InstrumentType::UpDownCounterF64(value) => { - update_or_insert( - &self.f64_up_down_counter, - metric_name, - || meter.f64_up_down_counter(metric_name).init(), - |ctr| ctr.add(cx, value, &[]), - ); - } - InstrumentType::HistogramU64(value) => { - update_or_insert( - &self.u64_histogram, - metric_name, - || meter.u64_histogram(metric_name).init(), - |rec| rec.record(cx, value, &[]), - ); - } - InstrumentType::HistogramI64(value) => { - update_or_insert( - &self.i64_histogram, - metric_name, - || meter.i64_histogram(metric_name).init(), - |rec| rec.record(cx, value, &[]), - ); - } - InstrumentType::HistogramF64(value) => { - update_or_insert( - &self.f64_histogram, - metric_name, - || meter.f64_histogram(metric_name).init(), - |rec| rec.record(cx, value, &[]), - ); - } - }; - } -} - -pub(crate) struct MetricVisitor<'a> { - pub(crate) instruments: &'a Instruments, - pub(crate) meter: &'a Meter, -} - -impl<'a> Visit for MetricVisitor<'a> { - fn record_debug(&mut self, _field: &Field, _value: &dyn fmt::Debug) { - // Do nothing - } - - fn record_u64(&mut self, field: &Field, value: u64) { - let cx = OtelContext::current(); - if let Some(metric_name) = field.name().strip_prefix(METRIC_PREFIX_MONOTONIC_COUNTER) { - self.instruments.update_metric( - &cx, - self.meter, - InstrumentType::CounterU64(value), - metric_name, - ); - } else if let Some(metric_name) = field.name().strip_prefix(METRIC_PREFIX_COUNTER) { - if value <= I64_MAX { - self.instruments.update_metric( - &cx, - self.meter, - InstrumentType::UpDownCounterI64(value as i64), - metric_name, - ); - } else { - eprintln!( - "[tracing-opentelemetry]: Received Counter metric, but \ - provided u64: {} is greater than i64::MAX. Ignoring \ - this metric.", - value - ); - } - } else if let Some(metric_name) = field.name().strip_prefix(METRIC_PREFIX_HISTOGRAM) { - self.instruments.update_metric( - &cx, - self.meter, - InstrumentType::HistogramU64(value), - metric_name, - ); - } - } - - fn record_f64(&mut self, field: &Field, value: f64) { - let cx = OtelContext::current(); - if let Some(metric_name) = field.name().strip_prefix(METRIC_PREFIX_MONOTONIC_COUNTER) { - self.instruments.update_metric( - &cx, - self.meter, - InstrumentType::CounterF64(value), - metric_name, - ); - } else if let Some(metric_name) = field.name().strip_prefix(METRIC_PREFIX_COUNTER) { - self.instruments.update_metric( - &cx, - self.meter, - InstrumentType::UpDownCounterF64(value), - metric_name, - ); - } else if let Some(metric_name) = field.name().strip_prefix(METRIC_PREFIX_HISTOGRAM) { - self.instruments.update_metric( - &cx, - self.meter, - InstrumentType::HistogramF64(value), - metric_name, - ); - } - } - - fn record_i64(&mut self, field: &Field, value: i64) { - let cx = OtelContext::current(); - if let Some(metric_name) = field.name().strip_prefix(METRIC_PREFIX_MONOTONIC_COUNTER) { - self.instruments.update_metric( - &cx, - self.meter, - InstrumentType::CounterU64(value as u64), - metric_name, - ); - } else if let Some(metric_name) = field.name().strip_prefix(METRIC_PREFIX_COUNTER) { - self.instruments.update_metric( - &cx, - self.meter, - InstrumentType::UpDownCounterI64(value), - metric_name, - ); - } else if let Some(metric_name) = field.name().strip_prefix(METRIC_PREFIX_HISTOGRAM) { - self.instruments.update_metric( - &cx, - self.meter, - InstrumentType::HistogramI64(value), - metric_name, - ); - } - } -} - -/// A layer that publishes metrics via the OpenTelemetry SDK. -/// -/// # Usage -/// -/// No configuration is needed for this Layer, as it's only responsible for -/// pushing data out to the `opentelemetry` family of crates. For example, when -/// using `opentelemetry-otlp`, that crate will provide its own set of -/// configuration options for setting up the duration metrics will be collected -/// before exporting to the OpenTelemetry Collector, aggregation of data points, -/// etc. -/// -/// ```no_run -/// use tracing_opentelemetry::MetricsLayer; -/// use tracing_subscriber::layer::SubscriberExt; -/// use tracing_subscriber::Registry; -/// # use opentelemetry::sdk::metrics::controllers::BasicController; -/// -/// // Constructing a BasicController is out-of-scope for the docs here, but there -/// // are examples in the opentelemetry repository. See: -/// // https://github.com/open-telemetry/opentelemetry-rust/blob/d4b9befea04bcc7fc19319a6ebf5b5070131c486/examples/basic-otlp/src/main.rs#L35-L52 -/// # let controller: BasicController = unimplemented!(); -/// -/// let opentelemetry_metrics = MetricsLayer::new(controller); -/// let subscriber = Registry::default().with(opentelemetry_metrics); -/// tracing::subscriber::set_global_default(subscriber).unwrap(); -/// ``` -/// -/// To publish a new metric, add a key-value pair to your `tracing::Event` that -/// contains following prefixes: -/// - `monotonic_counter.` (non-negative numbers): Used when the counter should -/// only ever increase -/// - `counter.`: Used when the counter can go up or down -/// - `value.`: Used for discrete data points (i.e., summing them does not make -/// semantic sense) -/// -/// Examples: -/// ``` -/// # use tracing::info; -/// info!(monotonic_counter.foo = 1); -/// info!(monotonic_counter.bar = 1.1); -/// -/// info!(counter.baz = 1); -/// info!(counter.baz = -1); -/// info!(counter.xyz = 1.1); -/// -/// info!(value.qux = 1); -/// info!(value.abc = -1); -/// info!(value.def = 1.1); -/// ``` -/// -/// # Mixing data types -/// -/// ## Floating-point numbers -/// -/// Do not mix floating point and non-floating point numbers for the same -/// metric. If a floating point number will be used for a given metric, be sure -/// to cast any other usages of that metric to a floating point number. -/// -/// Do this: -/// ``` -/// # use tracing::info; -/// info!(monotonic_counter.foo = 1_f64); -/// info!(monotonic_counter.foo = 1.1); -/// ``` -/// -/// This is because all data published for a given metric name must be the same -/// numeric type. -/// -/// ## Integers -/// -/// Positive and negative integers can be mixed freely. The instrumentation -/// provided by `tracing` assumes that all integers are `i64` unless explicitly -/// cast to something else. In the case that an integer *is* cast to `u64`, this -/// subscriber will handle the conversion internally. -/// -/// For example: -/// ``` -/// # use tracing::info; -/// // The subscriber receives an i64 -/// info!(counter.baz = 1); -/// -/// // The subscriber receives an i64 -/// info!(counter.baz = -1); -/// -/// // The subscriber receives a u64, but casts it to i64 internally -/// info!(counter.baz = 1_u64); -/// -/// // The subscriber receives a u64, but cannot cast it to i64 because of -/// // overflow. An error is printed to stderr, and the metric is dropped. -/// info!(counter.baz = (i64::MAX as u64) + 1) -/// ``` -/// -/// # Implementation Details -/// -/// `MetricsLayer` holds a set of maps, with each map corresponding to a -/// type of metric supported by OpenTelemetry. These maps are populated lazily. -/// The first time that a metric is emitted by the instrumentation, a `Metric` -/// instance will be created and added to the corresponding map. This means that -/// any time a metric is emitted by the instrumentation, one map lookup has to -/// be performed. -/// -/// In the future, this can be improved by associating each `Metric` instance to -/// its callsite, eliminating the need for any maps. -/// -#[cfg_attr(docsrs, doc(cfg(feature = "metrics")))] -pub struct MetricsLayer { - meter: Meter, - instruments: Instruments, -} - -impl MetricsLayer { - /// Create a new instance of MetricsLayer. - pub fn new(controller: BasicController) -> Self { - let meter = - controller.versioned_meter(INSTRUMENTATION_LIBRARY_NAME, Some(CARGO_PKG_VERSION), None); - MetricsLayer { - meter, - instruments: Default::default(), - } - } -} - -impl Layer for MetricsLayer -where - S: Subscriber + for<'span> LookupSpan<'span>, -{ - fn on_event(&self, event: &tracing::Event<'_>, _ctx: Context<'_, S>) { - let mut metric_visitor = MetricVisitor { - instruments: &self.instruments, - meter: &self.meter, - }; - event.record(&mut metric_visitor); - } -} diff -Nru temporalio-1.3.0/vendor/tracing-opentelemetry/src/span_ext.rs temporalio-1.3.0/vendor/tracing-opentelemetry/src/span_ext.rs --- temporalio-1.3.0/vendor/tracing-opentelemetry/src/span_ext.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tracing-opentelemetry/src/span_ext.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,170 +0,0 @@ -use crate::layer::WithContext; -use opentelemetry::{trace::SpanContext, Context, KeyValue}; - -/// Utility functions to allow tracing [`Span`]s to accept and return -/// [OpenTelemetry] [`Context`]s. -/// -/// [`Span`]: tracing::Span -/// [OpenTelemetry]: https://opentelemetry.io -/// [`Context`]: opentelemetry::Context -pub trait OpenTelemetrySpanExt { - /// Associates `self` with a given OpenTelemetry trace, using the provided - /// parent [`Context`]. - /// - /// [`Context`]: opentelemetry::Context - /// - /// # Examples - /// - /// ```rust - /// use opentelemetry::{propagation::TextMapPropagator, trace::TraceContextExt}; - /// use opentelemetry::sdk::propagation::TraceContextPropagator; - /// use tracing_opentelemetry::OpenTelemetrySpanExt; - /// use std::collections::HashMap; - /// use tracing::Span; - /// - /// // Example carrier, could be a framework header map that impls otel's `Extractor`. - /// let mut carrier = HashMap::new(); - /// - /// // Propagator can be swapped with b3 propagator, jaeger propagator, etc. - /// let propagator = TraceContextPropagator::new(); - /// - /// // Extract otel parent context via the chosen propagator - /// let parent_context = propagator.extract(&carrier); - /// - /// // Generate a tracing span as usual - /// let app_root = tracing::span!(tracing::Level::INFO, "app_start"); - /// - /// // Assign parent trace from external context - /// app_root.set_parent(parent_context.clone()); - /// - /// // Or if the current span has been created elsewhere: - /// Span::current().set_parent(parent_context); - /// ``` - fn set_parent(&self, cx: Context); - - /// Associates `self` with a given OpenTelemetry trace, using the provided - /// followed span [`SpanContext`]. - /// - /// [`SpanContext`]: opentelemetry::trace::SpanContext - /// - /// # Examples - /// - /// ```rust - /// use opentelemetry::{propagation::TextMapPropagator, trace::TraceContextExt}; - /// use opentelemetry::sdk::propagation::TraceContextPropagator; - /// use tracing_opentelemetry::OpenTelemetrySpanExt; - /// use std::collections::HashMap; - /// use tracing::Span; - /// - /// // Example carrier, could be a framework header map that impls otel's `Extractor`. - /// let mut carrier = HashMap::new(); - /// - /// // Propagator can be swapped with b3 propagator, jaeger propagator, etc. - /// let propagator = TraceContextPropagator::new(); - /// - /// // Extract otel context of linked span via the chosen propagator - /// let linked_span_otel_context = propagator.extract(&carrier); - /// - /// // Extract the linked span context from the otel context - /// let linked_span_context = linked_span_otel_context.span().span_context().clone(); - /// - /// // Generate a tracing span as usual - /// let app_root = tracing::span!(tracing::Level::INFO, "app_start"); - /// - /// // Assign linked trace from external context - /// app_root.add_link(linked_span_context); - /// - /// // Or if the current span has been created elsewhere: - /// let linked_span_context = linked_span_otel_context.span().span_context().clone(); - /// Span::current().add_link(linked_span_context); - /// ``` - fn add_link(&self, cx: SpanContext); - - /// Associates `self` with a given OpenTelemetry trace, using the provided - /// followed span [`SpanContext`] and attributes. - /// - /// [`SpanContext`]: opentelemetry::trace::SpanContext - fn add_link_with_attributes(&self, cx: SpanContext, attributes: Vec); - - /// Extracts an OpenTelemetry [`Context`] from `self`. - /// - /// [`Context`]: opentelemetry::Context - /// - /// # Examples - /// - /// ```rust - /// use opentelemetry::Context; - /// use tracing_opentelemetry::OpenTelemetrySpanExt; - /// use tracing::Span; - /// - /// fn make_request(cx: Context) { - /// // perform external request after injecting context - /// // e.g. if the request's headers impl `opentelemetry::propagation::Injector` - /// // then `propagator.inject_context(cx, request.headers_mut())` - /// } - /// - /// // Generate a tracing span as usual - /// let app_root = tracing::span!(tracing::Level::INFO, "app_start"); - /// - /// // To include tracing context in client requests from _this_ app, - /// // extract the current OpenTelemetry context. - /// make_request(app_root.context()); - /// - /// // Or if the current span has been created elsewhere: - /// make_request(Span::current().context()) - /// ``` - fn context(&self) -> Context; -} - -impl OpenTelemetrySpanExt for tracing::Span { - fn set_parent(&self, cx: Context) { - let mut cx = Some(cx); - self.with_subscriber(move |(id, subscriber)| { - if let Some(get_context) = subscriber.downcast_ref::() { - get_context.with_context(subscriber, id, move |data, _tracer| { - if let Some(cx) = cx.take() { - data.parent_cx = cx; - } - }); - } - }); - } - - fn add_link(&self, cx: SpanContext) { - self.add_link_with_attributes(cx, Vec::new()) - } - - fn add_link_with_attributes(&self, cx: SpanContext, attributes: Vec) { - if cx.is_valid() { - let mut cx = Some(cx); - let mut att = Some(attributes); - self.with_subscriber(move |(id, subscriber)| { - if let Some(get_context) = subscriber.downcast_ref::() { - get_context.with_context(subscriber, id, move |data, _tracer| { - if let Some(cx) = cx.take() { - let attr = att.take().unwrap_or_default(); - let follows_link = opentelemetry::trace::Link::new(cx, attr); - data.builder - .links - .get_or_insert_with(|| Vec::with_capacity(1)) - .push(follows_link); - } - }); - } - }); - } - } - - fn context(&self) -> Context { - let mut cx = None; - self.with_subscriber(|(id, subscriber)| { - if let Some(get_context) = subscriber.downcast_ref::() { - get_context.with_context(subscriber, id, |builder, tracer| { - cx = Some(tracer.sampled_context(builder)); - }) - } - }); - - cx.unwrap_or_default() - } -} diff -Nru temporalio-1.3.0/vendor/tracing-opentelemetry/src/tracer.rs temporalio-1.3.0/vendor/tracing-opentelemetry/src/tracer.rs --- temporalio-1.3.0/vendor/tracing-opentelemetry/src/tracer.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tracing-opentelemetry/src/tracer.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,234 +0,0 @@ -use opentelemetry::sdk::trace::{Tracer, TracerProvider}; -use opentelemetry::trace::OrderMap; -use opentelemetry::{ - trace as otel, - trace::{ - noop, SamplingDecision, SamplingResult, SpanBuilder, SpanContext, SpanId, SpanKind, - TraceContextExt, TraceFlags, TraceId, TraceState, - }, - Context as OtelContext, -}; - -/// An interface for authors of OpenTelemetry SDKs to build pre-sampled tracers. -/// -/// The OpenTelemetry spec does not allow trace ids to be updated after a span -/// has been created. In order to associate extracted parent trace ids with -/// existing `tracing` spans, `tracing-opentelemetry` builds up otel span data -/// using a [`SpanBuilder`] instead, and creates / exports full otel spans only -/// when the associated `tracing` span is closed. However, in order to properly -/// inject otel [`Context`] information to downstream requests, the sampling -/// state must now be known _before_ the otel span has been created. -/// -/// The logic for coming to a sampling decision and creating an injectable span -/// context from a [`SpanBuilder`] is encapsulated in the -/// [`PreSampledTracer::sampled_context`] method and has been implemented -/// for the standard OpenTelemetry SDK, but this trait may be implemented by -/// authors of alternate OpenTelemetry SDK implementations if they wish to have -/// `tracing` compatibility. -/// -/// See the [`OpenTelemetrySpanExt::set_parent`] and -/// [`OpenTelemetrySpanExt::context`] methods for example usage. -/// -/// [`Tracer`]: opentelemetry::trace::Tracer -/// [`SpanBuilder`]: opentelemetry::trace::SpanBuilder -/// [`PreSampledTracer::sampled_span_context`]: crate::PreSampledTracer::sampled_span_context -/// [`OpenTelemetrySpanExt::set_parent`]: crate::OpenTelemetrySpanExt::set_parent -/// [`OpenTelemetrySpanExt::context`]: crate::OpenTelemetrySpanExt::context -/// [`Context`]: opentelemetry::Context -pub trait PreSampledTracer { - /// Produce an otel context containing an active and pre-sampled span for - /// the given span builder data. - /// - /// The sampling decision, span context information, and parent context - /// values must match the values recorded when the tracing span is closed. - fn sampled_context(&self, data: &mut crate::OtelData) -> OtelContext; - - /// Generate a new trace id. - fn new_trace_id(&self) -> otel::TraceId; - - /// Generate a new span id. - fn new_span_id(&self) -> otel::SpanId; -} - -impl PreSampledTracer for noop::NoopTracer { - fn sampled_context(&self, data: &mut crate::OtelData) -> OtelContext { - data.parent_cx.clone() - } - - fn new_trace_id(&self) -> otel::TraceId { - otel::TraceId::INVALID - } - - fn new_span_id(&self) -> otel::SpanId { - otel::SpanId::INVALID - } -} - -impl PreSampledTracer for Tracer { - fn sampled_context(&self, data: &mut crate::OtelData) -> OtelContext { - // Ensure tracing pipeline is still installed. - if self.provider().is_none() { - return OtelContext::new(); - } - let provider = self.provider().unwrap(); - let parent_cx = &data.parent_cx; - let builder = &mut data.builder; - - // Gather trace state - let (trace_id, parent_trace_flags) = current_trace_state(builder, parent_cx, &provider); - - // Sample or defer to existing sampling decisions - let (flags, trace_state) = if let Some(result) = &builder.sampling_result { - process_sampling_result(result, parent_trace_flags) - } else { - builder.sampling_result = Some(provider.config().sampler.should_sample( - Some(parent_cx), - trace_id, - &builder.name, - builder.span_kind.as_ref().unwrap_or(&SpanKind::Internal), - builder.attributes.as_ref().unwrap_or(&OrderMap::default()), - builder.links.as_deref().unwrap_or(&[]), - self.instrumentation_library(), - )); - - process_sampling_result( - builder.sampling_result.as_ref().unwrap(), - parent_trace_flags, - ) - } - .unwrap_or_default(); - - let span_id = builder.span_id.unwrap_or(SpanId::INVALID); - let span_context = SpanContext::new(trace_id, span_id, flags, false, trace_state); - parent_cx.with_remote_span_context(span_context) - } - - fn new_trace_id(&self) -> otel::TraceId { - self.provider() - .map(|provider| provider.config().id_generator.new_trace_id()) - .unwrap_or(otel::TraceId::INVALID) - } - - fn new_span_id(&self) -> otel::SpanId { - self.provider() - .map(|provider| provider.config().id_generator.new_span_id()) - .unwrap_or(otel::SpanId::INVALID) - } -} - -fn current_trace_state( - builder: &SpanBuilder, - parent_cx: &OtelContext, - provider: &TracerProvider, -) -> (TraceId, TraceFlags) { - if parent_cx.has_active_span() { - let span = parent_cx.span(); - let sc = span.span_context(); - (sc.trace_id(), sc.trace_flags()) - } else { - ( - builder - .trace_id - .unwrap_or_else(|| provider.config().id_generator.new_trace_id()), - Default::default(), - ) - } -} - -fn process_sampling_result( - sampling_result: &SamplingResult, - trace_flags: TraceFlags, -) -> Option<(TraceFlags, TraceState)> { - match sampling_result { - SamplingResult { - decision: SamplingDecision::Drop, - .. - } => None, - SamplingResult { - decision: SamplingDecision::RecordOnly, - trace_state, - .. - } => Some((trace_flags & !TraceFlags::SAMPLED, trace_state.clone())), - SamplingResult { - decision: SamplingDecision::RecordAndSample, - trace_state, - .. - } => Some((trace_flags | TraceFlags::SAMPLED, trace_state.clone())), - } -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::OtelData; - use opentelemetry::sdk::trace::{config, Sampler, TracerProvider}; - use opentelemetry::trace::{SpanBuilder, SpanId, TracerProvider as _}; - - #[test] - fn assigns_default_trace_id_if_missing() { - let provider = TracerProvider::default(); - let tracer = provider.tracer("test"); - let mut builder = SpanBuilder::from_name("empty".to_string()); - builder.span_id = Some(SpanId::from(1u64.to_be_bytes())); - builder.trace_id = None; - let parent_cx = OtelContext::new(); - let cx = tracer.sampled_context(&mut OtelData { builder, parent_cx }); - let span = cx.span(); - let span_context = span.span_context(); - - assert!(span_context.is_valid()); - } - - #[rustfmt::skip] - fn sampler_data() -> Vec<(&'static str, Sampler, OtelContext, Option, bool)> { - vec![ - // No parent samples - ("empty_parent_cx_always_on", Sampler::AlwaysOn, OtelContext::new(), None, true), - ("empty_parent_cx_always_off", Sampler::AlwaysOff, OtelContext::new(), None, false), - - // Remote parent samples - ("remote_parent_cx_always_on", Sampler::AlwaysOn, OtelContext::new().with_remote_span_context(span_context(TraceFlags::SAMPLED, true)), None, true), - ("remote_parent_cx_always_off", Sampler::AlwaysOff, OtelContext::new().with_remote_span_context(span_context(TraceFlags::SAMPLED, true)), None, false), - ("sampled_remote_parent_cx_parent_based", Sampler::ParentBased(Box::new(Sampler::AlwaysOff)), OtelContext::new().with_remote_span_context(span_context(TraceFlags::SAMPLED, true)), None, true), - ("unsampled_remote_parent_cx_parent_based", Sampler::ParentBased(Box::new(Sampler::AlwaysOn)), OtelContext::new().with_remote_span_context(span_context(TraceFlags::default(), true)), None, false), - - // Existing sampling result defers - ("previous_drop_result_always_on", Sampler::AlwaysOn, OtelContext::new(), Some(SamplingResult { decision: SamplingDecision::Drop, attributes: vec![], trace_state: Default::default() }), false), - ("previous_record_and_sample_result_always_off", Sampler::AlwaysOff, OtelContext::new(), Some(SamplingResult { decision: SamplingDecision::RecordAndSample, attributes: vec![], trace_state: Default::default() }), true), - - // Existing local parent, defers - ("previous_drop_result_always_on", Sampler::AlwaysOn, OtelContext::new(), Some(SamplingResult { decision: SamplingDecision::Drop, attributes: vec![], trace_state: Default::default() }), false), - ("previous_record_and_sample_result_always_off", Sampler::AlwaysOff, OtelContext::new(), Some(SamplingResult { decision: SamplingDecision::RecordAndSample, attributes: vec![], trace_state: Default::default() }), true), - ] - } - - #[test] - fn sampled_context() { - for (name, sampler, parent_cx, previous_sampling_result, is_sampled) in sampler_data() { - let provider = TracerProvider::builder() - .with_config(config().with_sampler(sampler)) - .build(); - let tracer = provider.tracer("test"); - let mut builder = SpanBuilder::from_name("parent".to_string()); - builder.sampling_result = previous_sampling_result; - let sampled = tracer.sampled_context(&mut OtelData { builder, parent_cx }); - - assert_eq!( - sampled.span().span_context().is_sampled(), - is_sampled, - "{}", - name - ) - } - } - - fn span_context(trace_flags: TraceFlags, is_remote: bool) -> SpanContext { - SpanContext::new( - TraceId::from(1u128.to_be_bytes()), - SpanId::from(1u64.to_be_bytes()), - trace_flags, - is_remote, - Default::default(), - ) - } -} diff -Nru temporalio-1.3.0/vendor/tracing-opentelemetry/tests/metrics_publishing.rs temporalio-1.3.0/vendor/tracing-opentelemetry/tests/metrics_publishing.rs --- temporalio-1.3.0/vendor/tracing-opentelemetry/tests/metrics_publishing.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tracing-opentelemetry/tests/metrics_publishing.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,282 +0,0 @@ -use opentelemetry::{ - metrics::MetricsError, - sdk::{ - export::metrics::{ - aggregation::{self, Histogram, Sum, TemporalitySelector}, - InstrumentationLibraryReader, - }, - metrics::{ - aggregators::{HistogramAggregator, SumAggregator}, - controllers::BasicController, - processors, - sdk_api::{Descriptor, InstrumentKind, Number, NumberKind}, - selectors, - }, - }, - Context, -}; -use std::cmp::Ordering; -use tracing::Subscriber; -use tracing_opentelemetry::MetricsLayer; -use tracing_subscriber::prelude::*; - -const CARGO_PKG_VERSION: &str = env!("CARGO_PKG_VERSION"); -const INSTRUMENTATION_LIBRARY_NAME: &str = "tracing/tracing-opentelemetry"; - -#[tokio::test] -async fn u64_counter_is_exported() { - let (subscriber, exporter) = init_subscriber( - "hello_world".to_string(), - InstrumentKind::Counter, - NumberKind::U64, - Number::from(1_u64), - ); - - tracing::subscriber::with_default(subscriber, || { - tracing::info!(monotonic_counter.hello_world = 1_u64); - }); - - exporter.export().unwrap(); -} - -#[tokio::test] -async fn u64_counter_is_exported_i64_at_instrumentation_point() { - let (subscriber, exporter) = init_subscriber( - "hello_world2".to_string(), - InstrumentKind::Counter, - NumberKind::U64, - Number::from(1_u64), - ); - - tracing::subscriber::with_default(subscriber, || { - tracing::info!(monotonic_counter.hello_world2 = 1_i64); - }); - - exporter.export().unwrap(); -} - -#[tokio::test] -async fn f64_counter_is_exported() { - let (subscriber, exporter) = init_subscriber( - "float_hello_world".to_string(), - InstrumentKind::Counter, - NumberKind::F64, - Number::from(1.000000123_f64), - ); - - tracing::subscriber::with_default(subscriber, || { - tracing::info!(monotonic_counter.float_hello_world = 1.000000123_f64); - }); - - exporter.export().unwrap(); -} - -#[tokio::test] -async fn i64_up_down_counter_is_exported() { - let (subscriber, exporter) = init_subscriber( - "pebcak".to_string(), - InstrumentKind::UpDownCounter, - NumberKind::I64, - Number::from(-5_i64), - ); - - tracing::subscriber::with_default(subscriber, || { - tracing::info!(counter.pebcak = -5_i64); - }); - - exporter.export().unwrap(); -} - -#[tokio::test] -async fn i64_up_down_counter_is_exported_u64_at_instrumentation_point() { - let (subscriber, exporter) = init_subscriber( - "pebcak2".to_string(), - InstrumentKind::UpDownCounter, - NumberKind::I64, - Number::from(5_i64), - ); - - tracing::subscriber::with_default(subscriber, || { - tracing::info!(counter.pebcak2 = 5_u64); - }); - - exporter.export().unwrap(); -} - -#[tokio::test] -async fn f64_up_down_counter_is_exported() { - let (subscriber, exporter) = init_subscriber( - "pebcak_blah".to_string(), - InstrumentKind::UpDownCounter, - NumberKind::F64, - Number::from(99.123_f64), - ); - - tracing::subscriber::with_default(subscriber, || { - tracing::info!(counter.pebcak_blah = 99.123_f64); - }); - - exporter.export().unwrap(); -} - -#[tokio::test] -async fn u64_histogram_is_exported() { - let (subscriber, exporter) = init_subscriber( - "abcdefg".to_string(), - InstrumentKind::Histogram, - NumberKind::U64, - Number::from(9_u64), - ); - - tracing::subscriber::with_default(subscriber, || { - tracing::info!(value.abcdefg = 9_u64); - }); - - exporter.export().unwrap(); -} - -#[tokio::test] -async fn i64_histogram_is_exported() { - let (subscriber, exporter) = init_subscriber( - "abcdefg_auenatsou".to_string(), - InstrumentKind::Histogram, - NumberKind::I64, - Number::from(-19_i64), - ); - - tracing::subscriber::with_default(subscriber, || { - tracing::info!(value.abcdefg_auenatsou = -19_i64); - }); - - exporter.export().unwrap(); -} - -#[tokio::test] -async fn f64_histogram_is_exported() { - let (subscriber, exporter) = init_subscriber( - "abcdefg_racecar".to_string(), - InstrumentKind::Histogram, - NumberKind::F64, - Number::from(777.0012_f64), - ); - - tracing::subscriber::with_default(subscriber, || { - tracing::info!(value.abcdefg_racecar = 777.0012_f64); - }); - - exporter.export().unwrap(); -} - -fn init_subscriber( - expected_metric_name: String, - expected_instrument_kind: InstrumentKind, - expected_number_kind: NumberKind, - expected_value: Number, -) -> (impl Subscriber + 'static, TestExporter) { - let controller = opentelemetry::sdk::metrics::controllers::basic(processors::factory( - selectors::simple::histogram(vec![-10.0, 100.0]), - aggregation::cumulative_temporality_selector(), - )) - .build(); - - let exporter = TestExporter { - expected_metric_name, - expected_instrument_kind, - expected_number_kind, - expected_value, - controller: controller.clone(), - }; - - ( - tracing_subscriber::registry().with(MetricsLayer::new(controller)), - exporter, - ) -} - -#[derive(Clone, Debug)] -struct TestExporter { - expected_metric_name: String, - expected_instrument_kind: InstrumentKind, - expected_number_kind: NumberKind, - expected_value: Number, - controller: BasicController, -} - -impl TestExporter { - fn export(&self) -> Result<(), MetricsError> { - self.controller.collect(&Context::current())?; - self.controller.try_for_each(&mut |library, reader| { - reader.try_for_each(self, &mut |record| { - assert_eq!(self.expected_metric_name, record.descriptor().name()); - assert_eq!( - self.expected_instrument_kind, - *record.descriptor().instrument_kind() - ); - assert_eq!( - self.expected_number_kind, - *record.descriptor().number_kind() - ); - match self.expected_instrument_kind { - InstrumentKind::Counter | InstrumentKind::UpDownCounter => { - let number = record - .aggregator() - .unwrap() - .as_any() - .downcast_ref::() - .unwrap() - .sum() - .unwrap(); - - assert_eq!( - Ordering::Equal, - number - .partial_cmp(&NumberKind::U64, &self.expected_value) - .unwrap() - ); - } - InstrumentKind::Histogram => { - let histogram = record - .aggregator() - .unwrap() - .as_any() - .downcast_ref::() - .unwrap() - .histogram() - .unwrap(); - - let counts = histogram.counts(); - if dbg!(self.expected_value.to_i64(&self.expected_number_kind)) > 100 { - assert_eq!(counts, &[0.0, 0.0, 1.0]); - } else if self.expected_value.to_i64(&self.expected_number_kind) > 0 { - assert_eq!(counts, &[0.0, 1.0, 0.0]); - } else { - assert_eq!(counts, &[1.0, 0.0, 0.0]); - } - } - _ => panic!( - "InstrumentKind {:?} not currently supported!", - self.expected_instrument_kind - ), - }; - - // The following are the same regardless of the individual metric. - assert_eq!(INSTRUMENTATION_LIBRARY_NAME, library.name); - assert_eq!(CARGO_PKG_VERSION, library.version.as_ref().unwrap()); - - Ok(()) - }) - }) - } -} - -impl TemporalitySelector for TestExporter { - fn temporality_for( - &self, - _descriptor: &Descriptor, - _kind: &aggregation::AggregationKind, - ) -> aggregation::Temporality { - // I don't think the value here makes a difference since - // we are just testing a single metric. - aggregation::Temporality::Cumulative - } -} diff -Nru temporalio-1.3.0/vendor/tracing-opentelemetry/tests/trace_state_propagation.rs temporalio-1.3.0/vendor/tracing-opentelemetry/tests/trace_state_propagation.rs --- temporalio-1.3.0/vendor/tracing-opentelemetry/tests/trace_state_propagation.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/tracing-opentelemetry/tests/trace_state_propagation.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,171 +0,0 @@ -use futures_util::future::BoxFuture; -use opentelemetry::{ - propagation::TextMapPropagator, - sdk::{ - export::trace::{ExportResult, SpanData, SpanExporter}, - propagation::{BaggagePropagator, TextMapCompositePropagator, TraceContextPropagator}, - trace::{Tracer, TracerProvider}, - }, - trace::{SpanContext, TraceContextExt, Tracer as _, TracerProvider as _}, - Context, -}; -use std::collections::{HashMap, HashSet}; -use std::sync::{Arc, Mutex}; -use tracing::Subscriber; -use tracing_opentelemetry::{layer, OpenTelemetrySpanExt}; -use tracing_subscriber::prelude::*; - -#[test] -fn trace_with_active_otel_context() { - let (cx, subscriber, exporter, provider) = build_sampled_context(); - let attached = cx.attach(); - - tracing::subscriber::with_default(subscriber, || { - tracing::debug_span!("child"); - }); - - drop(attached); // end implicit parent - drop(provider); // flush all spans - - let spans = exporter.0.lock().unwrap(); - assert_eq!(spans.len(), 2); - assert_shared_attrs_eq(&spans[0].span_context, &spans[1].span_context); -} - -#[test] -fn trace_with_assigned_otel_context() { - let (cx, subscriber, exporter, provider) = build_sampled_context(); - - tracing::subscriber::with_default(subscriber, || { - let child = tracing::debug_span!("child"); - child.set_parent(cx); - }); - - drop(provider); // flush all spans - let spans = exporter.0.lock().unwrap(); - assert_eq!(spans.len(), 2); - assert_shared_attrs_eq(&spans[0].span_context, &spans[1].span_context); -} - -#[test] -fn trace_root_with_children() { - let (_tracer, provider, exporter, subscriber) = test_tracer(); - - tracing::subscriber::with_default(subscriber, || { - // Propagate trace information through tracing parent -> child - let root = tracing::debug_span!("root"); - root.in_scope(|| tracing::debug_span!("child")); - }); - - drop(provider); // flush all spans - let spans = exporter.0.lock().unwrap(); - assert_eq!(spans.len(), 2); - assert_shared_attrs_eq(&spans[0].span_context, &spans[1].span_context); -} - -#[test] -fn inject_context_into_outgoing_requests() { - let (_tracer, _provider, _exporter, subscriber) = test_tracer(); - let propagator = test_propagator(); - let carrier = test_carrier(); - let cx = propagator.extract(&carrier); - let mut outgoing_req_carrier = HashMap::new(); - - tracing::subscriber::with_default(subscriber, || { - let root = tracing::debug_span!("root"); - root.set_parent(cx); - let _g = root.enter(); - let child = tracing::debug_span!("child"); - propagator.inject_context(&child.context(), &mut outgoing_req_carrier); - }); - - // Ensure all values that should be passed between services are preserved - assert_carrier_attrs_eq(&carrier, &outgoing_req_carrier); -} - -fn assert_shared_attrs_eq(sc_a: &SpanContext, sc_b: &SpanContext) { - assert_eq!(sc_a.trace_id(), sc_b.trace_id()); - assert_eq!(sc_a.trace_state(), sc_b.trace_state()); -} - -fn assert_carrier_attrs_eq( - carrier_a: &HashMap, - carrier_b: &HashMap, -) { - // Match baggage unordered - assert_eq!( - carrier_a - .get("baggage") - .map(|b| b.split_terminator(',').collect::>()), - carrier_b - .get("baggage") - .map(|b| b.split_terminator(',').collect()) - ); - // match trace parent values, except span id - assert_eq!( - carrier_a.get("traceparent").unwrap()[0..36], - carrier_b.get("traceparent").unwrap()[0..36], - ); - // match tracestate values - assert_eq!(carrier_a.get("tracestate"), carrier_b.get("tracestate")); -} - -fn test_tracer() -> (Tracer, TracerProvider, TestExporter, impl Subscriber) { - let exporter = TestExporter::default(); - let provider = TracerProvider::builder() - .with_simple_exporter(exporter.clone()) - .build(); - let tracer = provider.tracer("test"); - let subscriber = tracing_subscriber::registry().with(layer().with_tracer(tracer.clone())); - - (tracer, provider, exporter, subscriber) -} - -fn test_propagator() -> TextMapCompositePropagator { - let baggage_propagator = BaggagePropagator::new(); - let trace_context_propagator = TraceContextPropagator::new(); - - TextMapCompositePropagator::new(vec![ - Box::new(baggage_propagator), - Box::new(trace_context_propagator), - ]) -} - -fn test_carrier() -> HashMap { - let mut carrier = HashMap::new(); - carrier.insert( - "baggage".to_string(), - "key2=value2,key1=value1;property1;property2,key3=value3;propertyKey=propertyValue" - .to_string(), - ); - carrier.insert("tracestate".to_string(), "test1=test2".to_string()); - carrier.insert( - "traceparent".to_string(), - "00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01".to_string(), - ); - - carrier -} - -fn build_sampled_context() -> (Context, impl Subscriber, TestExporter, TracerProvider) { - let (tracer, provider, exporter, subscriber) = test_tracer(); - let span = tracer.start("sampled"); - let cx = Context::current_with_span(span); - - (cx, subscriber, exporter, provider) -} - -#[derive(Clone, Default, Debug)] -struct TestExporter(Arc>>); - -impl SpanExporter for TestExporter { - fn export(&mut self, mut batch: Vec) -> BoxFuture<'static, ExportResult> { - let spans = self.0.clone(); - Box::pin(async move { - if let Ok(mut inner) = spans.lock() { - inner.append(&mut batch); - } - Ok(()) - }) - } -} Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/tracing-opentelemetry/trace.png and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/tracing-opentelemetry/trace.png differ diff -Nru temporalio-1.3.0/vendor/typetag/.cargo-checksum.json temporalio-1.3.0/vendor/typetag/.cargo-checksum.json --- temporalio-1.3.0/vendor/typetag/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/typetag/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.lock":"160771866c6b45def6abaa534cfc31137f5e777d1d91e007a25a2624614e3e40","Cargo.toml":"49419bd915a35fb4727edaab3ba00412daa216e726081942d5470398bbd87100","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"a8737914cf0766b89545e66883444046c278fa0bc128383dbf8ff4797c66c21a","examples/web_event.rs":"ab2fdd1891cb9f2642470b2bd312a8258089c963406ac4f9253bc357a1980c5e","src/adjacently.rs":"d42974c7f957423c73a47f9b218bdcea843754810bf53da20c7b6d27bbce825f","src/content.rs":"2b2c67366964fd5dd0d94c8f529e0317e704925df9196653279df8444b15b4c7","src/de.rs":"f24f433403b4442ff172ed95da8fd5edeeba9080459bd90a414e3a59f6979774","src/externally.rs":"2858e645627064a7d105e9b1e444eec159c5a1fa832bf5c7cb4ca1854a678d1b","src/internally.rs":"691be08e48d85211d4aaf781815044c3e7d05e615339c78e6e0da80cec37dab1","src/lib.rs":"5ed13b9fecb03b8999dcf382e1fe941d3abb8f469c7fe620a9fbfa044d38b2bf","src/ser.rs":"a76e6f6d2ac6fc5b56e7c24e3151f363d9eabdbe4742a3550d0f2f11e2615ea4","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/test.rs":"175cd621cd5b41bc0ff30cd3a3e2dc625f06e75b0942000aac3cc6977b0a82ca","tests/ui/associated-const.rs":"b968e7c3193d96be5bf25de28071db8673e3980b14c00e2e8d7921e69f40a252","tests/ui/associated-const.stderr":"70d601246ae2590c4b1b207ff19b1cd880bf9c605653d29b12a9d287214a30e8","tests/ui/associated-type.rs":"77cbd23b076ab8e07ac35b9119e9ad1c5a5ae5177c4899cfa12c30d9f09ea150","tests/ui/associated-type.stderr":"7df769aad0c194b2aeedd44a9087f982f986cb621c4a1919c2997a8d8b39652e","tests/ui/deserialize-generic.rs":"4cb727c0a2fcc6d1437bd0f7802d1e61aed64a4d7698e97fe6523bf712b8b572","tests/ui/deserialize-generic.stderr":"6466844b777cda357f5befe2f61d9cabb2bf52cdd43f272ea95d66a6496d2280","tests/ui/inherent-impl.rs":"176d37b132d5c15c6a9441a8d46fffaa9ec3bcc80a29eb81614d5ea5718952dd","tests/ui/inherent-impl.stderr":"3a856c0e36f6d3c6d913645e7219fb1d415cd941fbe9b24beea611f680afaa0e","tests/ui/not-trait-or-impl.rs":"d591ce67e93655b58f7155d1b62045d08e2f66c9dfd99d9ea596e16763628eee","tests/ui/not-trait-or-impl.stderr":"918a64beb49f25468353cf415e03e9da03894a951f39dbcf2344dade9b3d72d6","tests/ui/unnamed.rs":"a62aa444b085de01c43061a6a5319371389e4f7d8c38503e1e03d6e1ca77b35f","tests/ui/unnamed.stderr":"fd509c2658f3ec4e0776a3fda5f84d68af575bc229b3893439228ddd864d1d6c"},"package":"092e9b66a97c5f12e64f2d9c08c27d80342ff1ecde1d92288f939f55f5f1bcb3"} \ No newline at end of file +{"files":{"Cargo.lock":"80cfd83f61ca13e32b081f3e7fad0c66e7f3efa113b7d7704b5b6494c38f72e2","Cargo.toml":"31bdabb36b5f3b313ea05cfe475cd4123278faf12a6905e23486b3d24e254021","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"a8737914cf0766b89545e66883444046c278fa0bc128383dbf8ff4797c66c21a","examples/web_event.rs":"ab2fdd1891cb9f2642470b2bd312a8258089c963406ac4f9253bc357a1980c5e","src/adjacently.rs":"af4ae25e9a21d0fbdb8c32359e236c2b9510a5634df4933bf9f6612697bc2c8f","src/content.rs":"2b2c67366964fd5dd0d94c8f529e0317e704925df9196653279df8444b15b4c7","src/de.rs":"f24f433403b4442ff172ed95da8fd5edeeba9080459bd90a414e3a59f6979774","src/externally.rs":"2858e645627064a7d105e9b1e444eec159c5a1fa832bf5c7cb4ca1854a678d1b","src/internally.rs":"4288e7e8d13849514e9e68e4774068b96b4a3cf3b05a26bda40cd0b2207d9850","src/lib.rs":"55b92aaebea5a9767b79d3f5129caf0c50e31965e71be7746262494fd886427c","src/ser.rs":"a76e6f6d2ac6fc5b56e7c24e3151f363d9eabdbe4742a3550d0f2f11e2615ea4","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/test.rs":"18e0fa7835fdcb8e46193b3bd7a424181cf6790fec48b1fe07781c97c6050252","tests/ui/associated-const.rs":"b968e7c3193d96be5bf25de28071db8673e3980b14c00e2e8d7921e69f40a252","tests/ui/associated-const.stderr":"70d601246ae2590c4b1b207ff19b1cd880bf9c605653d29b12a9d287214a30e8","tests/ui/associated-type.rs":"77cbd23b076ab8e07ac35b9119e9ad1c5a5ae5177c4899cfa12c30d9f09ea150","tests/ui/associated-type.stderr":"7df769aad0c194b2aeedd44a9087f982f986cb621c4a1919c2997a8d8b39652e","tests/ui/deserialize-generic.rs":"4cb727c0a2fcc6d1437bd0f7802d1e61aed64a4d7698e97fe6523bf712b8b572","tests/ui/deserialize-generic.stderr":"6466844b777cda357f5befe2f61d9cabb2bf52cdd43f272ea95d66a6496d2280","tests/ui/inherent-impl.rs":"176d37b132d5c15c6a9441a8d46fffaa9ec3bcc80a29eb81614d5ea5718952dd","tests/ui/inherent-impl.stderr":"3a856c0e36f6d3c6d913645e7219fb1d415cd941fbe9b24beea611f680afaa0e","tests/ui/not-trait-or-impl.rs":"d591ce67e93655b58f7155d1b62045d08e2f66c9dfd99d9ea596e16763628eee","tests/ui/not-trait-or-impl.stderr":"918a64beb49f25468353cf415e03e9da03894a951f39dbcf2344dade9b3d72d6","tests/ui/unnamed.rs":"a62aa444b085de01c43061a6a5319371389e4f7d8c38503e1e03d6e1ca77b35f","tests/ui/unnamed.stderr":"fd509c2658f3ec4e0776a3fda5f84d68af575bc229b3893439228ddd864d1d6c"},"package":"80960fd143d4c96275c0e60b08f14b81fbb468e79bc0ef8fbda69fb0afafae43"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/typetag/Cargo.lock temporalio-1.3.0/vendor/typetag/Cargo.lock --- temporalio-1.3.0/vendor/typetag/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/typetag/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -19,9 +19,9 @@ [[package]] name = "basic-toml" -version = "0.1.0" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a72cac83e42560384ff91957b3a739eba64fb0db58049f42884ceb3abb57378" +checksum = "7bfc506e7a2370ec239e1d072507b2a80c833083699d3c6fa176fbb4de8448c6" dependencies = [ "serde", ] @@ -40,30 +40,30 @@ [[package]] name = "critical-section" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6548a0ad5d2549e111e1f6a11a6c2e2d00ce6a3dafe22948d67c2b443f775e52" +checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" [[package]] name = "dissimilar" -version = "1.0.0" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fcc2394c863a166acc0e45119fb9503283d44975409f4d5c773207d382596c2" +checksum = "86e3bdc80eee6e16b2b6b0f87fbc98c04bee3455e35174c0de1a125d0688c632" [[package]] name = "erased-serde" -version = "0.3.27" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f94c0e13118e7d7533271f754a168ae8400e6a1cc043f2bfd53cc7290f1a1de3" +checksum = "fc978899517288e3ebbd1a3bfc1d9537dbb87eeab149e53ea490e63bcdff561a" dependencies = [ "serde", ] [[package]] name = "glob" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "hash32" @@ -90,15 +90,15 @@ [[package]] name = "inventory" -version = "0.3.8" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c38a87a1e0e2752433cd4b26019a469112a25fb43b30f5ee9b3b898925c5a0f9" +checksum = "a53088c87cf71c9d4f3372a2cb9eea1e7b8a0b1bf8b7f7d23fe5b76dbb07e63b" [[package]] name = "itoa" -version = "1.0.0" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f3e61cf687687b30c9e6ddf0fc36cf15f035e66d491e6da968fa49ffa9a378" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "lock_api" @@ -118,9 +118,9 @@ [[package]] name = "postcard" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfa512cd0d087cc9f99ad30a1bf64795b67871edbead083ffc3a4dfafa59aa00" +checksum = "c9ee729232311d3cd113749948b689627618133b1c5012b77342c1950b25eaeb" dependencies = [ "cobs", "heapless", @@ -129,18 +129,18 @@ [[package]] name = "proc-macro2" -version = "1.0.61" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "363a6f739a0c0addeaf6ed75150b95743aa18643a3c6f40409ed7b6db3a6911f" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.28" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -156,42 +156,42 @@ [[package]] name = "rustversion" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc31bd9b61a32c31f9650d18add92aa83a49ba979c143eefd27fe7177b05bd5f" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.0" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "semver" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" [[package]] name = "serde" -version = "1.0.166" +version = "1.0.183" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d01b7404f9d441d3ad40e6a636a7782c377d2abdbe4fa2440e2edcc2f4f10db8" +checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.166" +version = "1.0.183" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd83d6dde2b6b2d466e14d9d1acce8816dedee94f735eac6395808b3483c6d6" +checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816" dependencies = [ "proc-macro2", "quote", @@ -200,9 +200,9 @@ [[package]] name = "serde_json" -version = "1.0.100" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f1e14e89be7aa4c4b78bdbdc9eb5bf8517829a600ae8eaa39a6e1d960b5185c" +checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" dependencies = [ "itoa", "ryu", @@ -226,9 +226,9 @@ [[package]] name = "syn" -version = "2.0.21" +version = "2.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1182caafaab7018eaea9b404afa8184c0baf42a04d5e10ae4f4843c2029c8aab" +checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" dependencies = [ "proc-macro2", "quote", @@ -237,18 +237,18 @@ [[package]] name = "termcolor" -version = "1.0.4" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" dependencies = [ - "wincolor", + "winapi-util", ] [[package]] name = "trybuild" -version = "1.0.81" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04366e99ff743345622cd00af2af01d711dc2d1ef59250d7347698d21b546729" +checksum = "6df60d81823ed9c520ee897489573da4b1d79ffbe006b8134f46de1a1aa03555" dependencies = [ "basic-toml", "dissimilar", @@ -262,7 +262,7 @@ [[package]] name = "typetag" -version = "0.2.9" +version = "0.2.13" dependencies = [ "erased-serde", "inventory", @@ -277,9 +277,9 @@ [[package]] name = "typetag-impl" -version = "0.2.9" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae02a82d555be0636f3157d90b6e0ccc6eda4cbc2af123187682143ce3035f1" +checksum = "bfc13d450dc4a695200da3074dacf43d449b968baee95e341920e47f61a3b40f" dependencies = [ "proc-macro2", "quote", @@ -288,15 +288,15 @@ [[package]] name = "unicode-ident" -version = "1.0.0" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "winapi" -version = "0.3.0" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3ad91d846a4a5342c1fb7008d26124ee6cf94a3953751618577295373b32117" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" dependencies = [ "winapi-i686-pc-windows-gnu", "winapi-x86_64-pc-windows-gnu", @@ -304,21 +304,21 @@ [[package]] name = "winapi-i686-pc-windows-gnu" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a16a8e2ebfc883e2b1771c6482b1fb3c6831eab289ba391619a2d93a7356220f" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca29cb03c8ceaf20f8224a18a530938305e9872b1478ea24ff44b4f503a1d1d" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] -name = "wincolor" -version = "1.0.0" +name = "winapi-util" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9dc3aa9dcda98b5a16150c54619c1ead22e3d3a5d458778ae914be760aa981a" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" dependencies = [ "winapi", ] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff -Nru temporalio-1.3.0/vendor/typetag/Cargo.toml temporalio-1.3.0/vendor/typetag/Cargo.toml --- temporalio-1.3.0/vendor/typetag/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/typetag/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,10 +10,10 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" +edition = "2021" rust-version = "1.62" name = "typetag" -version = "0.2.9" +version = "0.2.13" authors = ["David Tolnay "] description = "Serde serializable and deserializable trait objects" documentation = "https://docs.rs/typetag" @@ -30,6 +30,7 @@ repository = "https://github.com/dtolnay/typetag" [package.metadata.docs.rs] +rustdoc-args = ["--generate-link-to-definition"] targets = ["x86_64-unknown-linux-gnu"] [lib] @@ -41,7 +42,7 @@ default-features = false [dependencies.inventory] -version = "0.3.8" +version = "0.3.10" [dependencies.once_cell] version = "1.18" @@ -57,7 +58,7 @@ default-features = false [dependencies.typetag-impl] -version = "=0.2.9" +version = "=0.2.13" [dev-dependencies.postcard] version = "1.0.4" diff -Nru temporalio-1.3.0/vendor/typetag/src/adjacently.rs temporalio-1.3.0/vendor/typetag/src/adjacently.rs --- temporalio-1.3.0/vendor/typetag/src/adjacently.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/typetag/src/adjacently.rs 2023-10-30 19:40:00.000000000 +0000 @@ -31,9 +31,10 @@ pub fn deserialize<'de, D, T>( deserializer: D, trait_object: &'static str, - fields: &'static [&'static str], + field_names: &'static [&'static str; 2], // [tag, content] default_variant: Option<&'static str>, registry: &'static Registry, + deny_unknown_fields: bool, ) -> Result, D::Error> where D: Deserializer<'de>, @@ -41,20 +42,20 @@ { let visitor = TaggedVisitor { trait_object, - tag: fields[0], - content: fields[1], + field_names, default_variant, registry, + deny_unknown_fields, }; - deserializer.deserialize_struct(trait_object, fields, visitor) + deserializer.deserialize_struct(trait_object, field_names, visitor) } struct TaggedVisitor { trait_object: &'static str, - tag: &'static str, - content: &'static str, + field_names: &'static [&'static str; 2], // [tag, content] default_variant: Option<&'static str>, registry: &'static Registry, + deny_unknown_fields: bool, } impl<'de, T: ?Sized> Visitor<'de> for TaggedVisitor { @@ -74,8 +75,8 @@ }; let field_seed = TagContentOtherFieldVisitor { - tag: self.tag, - content: self.content, + field_names: self.field_names, + deny_unknown_fields: self.deny_unknown_fields, }; let next_relevant_key = |map: &mut A| { @@ -92,6 +93,8 @@ Ok(None) }; + let [tag_field_name, content_field_name] = *self.field_names; + // Visit the first relevant key. let ret = match next_relevant_key(&mut map)? { // First key is the tag. @@ -102,7 +105,7 @@ match next_relevant_key(&mut map)? { // Second key is a duplicate of the tag. Some(TagOrContentField::Tag) => { - return Err(de::Error::duplicate_field(self.tag)); + return Err(de::Error::duplicate_field(tag_field_name)); } // Second key is the content. Some(TagOrContentField::Content) => { @@ -133,7 +136,7 @@ } // Second key is a duplicate of the content. Some(TagOrContentField::Content) => { - return Err(de::Error::duplicate_field(self.content)); + return Err(de::Error::duplicate_field(content_field_name)); } // There is no second key. None => { @@ -144,7 +147,7 @@ fn_apply.deserialize(content)? } else { // No variant is specified and there is no default variant. - return Err(de::Error::missing_field(self.tag)); + return Err(de::Error::missing_field(tag_field_name)); } } } @@ -152,17 +155,17 @@ // There is no first key. None => { let missing_field = if self.default_variant.is_none() { - self.tag + tag_field_name } else { - self.content + content_field_name }; return Err(de::Error::missing_field(missing_field)); } }; match next_relevant_key(&mut map)? { - Some(TagOrContentField::Tag) => Err(de::Error::duplicate_field(self.tag)), - Some(TagOrContentField::Content) => Err(de::Error::duplicate_field(self.content)), + Some(TagOrContentField::Tag) => Err(de::Error::duplicate_field(tag_field_name)), + Some(TagOrContentField::Content) => Err(de::Error::duplicate_field(content_field_name)), None => Ok(ret), } } @@ -204,8 +207,8 @@ #[derive(Copy, Clone)] struct TagContentOtherFieldVisitor { - tag: &'static str, - content: &'static str, + field_names: &'static [&'static str; 2], // [tag, content] + deny_unknown_fields: bool, } impl<'de> DeserializeSeed<'de> for TagContentOtherFieldVisitor { @@ -223,21 +226,33 @@ type Value = TagContentOtherField; fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - write!( - formatter, - "{:?}, {:?}, or other ignored fields", - self.tag, self.content - ) + let [tag_field_name, content_field_name] = *self.field_names; + if self.deny_unknown_fields { + write!( + formatter, + "{:?} or {:?}", + tag_field_name, content_field_name, + ) + } else { + write!( + formatter, + "{:?}, {:?}, or other ignored fields", + tag_field_name, content_field_name, + ) + } } fn visit_str(self, field: &str) -> Result where E: de::Error, { - if field == self.tag { + let [tag_field_name, content_field_name] = *self.field_names; + if field == tag_field_name { Ok(TagContentOtherField::Tag) - } else if field == self.content { + } else if field == content_field_name { Ok(TagContentOtherField::Content) + } else if self.deny_unknown_fields { + Err(E::unknown_field(field, self.field_names)) } else { Ok(TagContentOtherField::Other) } diff -Nru temporalio-1.3.0/vendor/typetag/src/internally.rs temporalio-1.3.0/vendor/typetag/src/internally.rs --- temporalio-1.3.0/vendor/typetag/src/internally.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/typetag/src/internally.rs 2023-10-30 19:40:00.000000000 +0000 @@ -356,7 +356,7 @@ { match self.map.next_key_seed(DefaultKey)? { None => visitor.visit_none(), - Some(_) => visitor.visit_some(MapValueAsDeserializer { map: self.map }), + Some(()) => visitor.visit_some(MapValueAsDeserializer { map: self.map }), } } diff -Nru temporalio-1.3.0/vendor/typetag/src/lib.rs temporalio-1.3.0/vendor/typetag/src/lib.rs --- temporalio-1.3.0/vendor/typetag/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/typetag/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -297,7 +297,7 @@ //! [`erased-serde`]: https://github.com/dtolnay/erased-serde #![no_std] -#![doc(html_root_url = "https://docs.rs/typetag/0.2.9")] +#![doc(html_root_url = "https://docs.rs/typetag/0.2.13")] #![allow( clippy::missing_errors_doc, clippy::module_name_repetitions, @@ -337,37 +337,62 @@ // Not public API. Used by generated code. #[doc(hidden)] pub mod __private { + #[doc(hidden)] pub extern crate erased_serde; + #[doc(hidden)] pub extern crate inventory; + #[doc(hidden)] pub extern crate once_cell; + #[doc(hidden)] pub extern crate serde; + #[doc(hidden)] pub mod externally { + #[doc(hidden)] pub use crate::externally::*; } + #[doc(hidden)] pub mod internally { + #[doc(hidden)] pub use crate::internally::*; } + #[doc(hidden)] pub mod adjacently { + #[doc(hidden)] pub use crate::adjacently::*; } - pub use alloc::boxed::Box; - pub use alloc::collections::btree_map::{self, BTreeMap}; - pub use alloc::vec::Vec; + #[doc(hidden)] + pub use alloc::collections::btree_map; + #[doc(hidden)] pub use core::option::Option; + #[doc(hidden)] pub use core::result::Result; + #[doc(hidden)] + pub type Box = alloc::boxed::Box; + #[doc(hidden)] + pub type BTreeMap = alloc::collections::BTreeMap; + #[doc(hidden)] + pub type BTreeMapEntry<'a, K, V> = alloc::collections::btree_map::Entry<'a, K, V>; + #[doc(hidden)] + pub type Vec = alloc::vec::Vec; + + #[doc(hidden)] pub type DeserializeFn = fn(&mut dyn erased_serde::Deserializer) -> erased_serde::Result>; + #[doc(hidden)] pub struct Registry { + #[doc(hidden)] pub map: BTreeMap<&'static str, Option>>, + #[doc(hidden)] pub names: Vec<&'static str>, } + #[doc(hidden)] pub trait Strictest { type Object: ?Sized; } diff -Nru temporalio-1.3.0/vendor/typetag/tests/test.rs temporalio-1.3.0/vendor/typetag/tests/test.rs --- temporalio-1.3.0/vendor/typetag/tests/test.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/typetag/tests/test.rs 2023-10-30 19:40:00.000000000 +0000 @@ -160,6 +160,10 @@ let json = r#"{"type":"B","content":{"b":11}}"#; let trait_object: Box = serde_json::from_str(json).unwrap(); trait_object.assert_b_is_11(); + + let json = r#"{"type":"B","content":{"b":11},"unknown":null}"#; + let trait_object: Box = serde_json::from_str(json).unwrap(); + trait_object.assert_b_is_11(); } #[test] @@ -356,6 +360,32 @@ } } +mod adjacent_deny_unknown { + use super::{A, B}; + + #[typetag::serde(tag = "type", content = "content", deny_unknown_fields)] + trait Trait {} + + #[typetag::serde] + impl Trait for A {} + + #[typetag::serde] + impl Trait for B {} + + #[test] + fn test_json_deserialize_deny_unknown() { + let json = r#"{"type":"B","content":{"b":11},"unknown":null}"#; + match serde_json::from_str::>(json) { + Ok(_) => panic!("unexpectedly deserialized successfully despite unknown field"), + Err(err) => { + let expected = + "unknown field `unknown`, expected `type` or `content` at line 1 column 40"; + assert_eq!(err.to_string(), expected); + } + } + } +} + mod marker_traits { use serde::de::DeserializeOwned; use serde::Serialize; diff -Nru temporalio-1.3.0/vendor/typetag-impl/.cargo-checksum.json temporalio-1.3.0/vendor/typetag-impl/.cargo-checksum.json --- temporalio-1.3.0/vendor/typetag-impl/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/typetag-impl/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"14442cb457a5a7def40138699c7d371b77d24dc4300c66849689ce9f8e27ad3e","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"841b80605a5d8b28f51b21fe941727465667b8513e3d00dca974bfda55644de5","src/lib.rs":"905494cd1371927ded762f8cef1991787c1774c68e134afed46977a7d9b661f8","src/parse.rs":"d6d4643ae5816377131e66afae43ebd520da9b92773f2f049a7ec5ad6b1fb936","src/tagged_impl.rs":"0411585138b0badf855ce083d755cea2c845e84e924bb09033664069b07eb99a","src/tagged_trait.rs":"98839414cb6ffce1d2fd05bdeb8c430f85d20bef7321b90382f4750990fc31ea"},"package":"8ae02a82d555be0636f3157d90b6e0ccc6eda4cbc2af123187682143ce3035f1"} \ No newline at end of file +{"files":{"Cargo.toml":"2a5e2d896028db4b2c8aa4b0e17b6d7dc583abe1388e85daee6f9157d440c066","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"841b80605a5d8b28f51b21fe941727465667b8513e3d00dca974bfda55644de5","src/lib.rs":"905494cd1371927ded762f8cef1991787c1774c68e134afed46977a7d9b661f8","src/parse.rs":"1a8c43f158e1e6286e287f5c5857387f8068a23b2b769228273aaf2e223b92c1","src/tagged_impl.rs":"0411585138b0badf855ce083d755cea2c845e84e924bb09033664069b07eb99a","src/tagged_trait.rs":"411216b15d1d5b359dc651996236e867b705dd0759f6f68b732d565eb105efff"},"package":"bfc13d450dc4a695200da3074dacf43d449b968baee95e341920e47f61a3b40f"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/typetag-impl/Cargo.toml temporalio-1.3.0/vendor/typetag-impl/Cargo.toml --- temporalio-1.3.0/vendor/typetag-impl/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/typetag-impl/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,9 +10,9 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" +edition = "2021" name = "typetag-impl" -version = "0.2.9" +version = "0.2.13" authors = ["David Tolnay "] description = "Implementation detail of the typetag crate" documentation = "https://docs.rs/typetag" @@ -21,6 +21,7 @@ repository = "https://github.com/dtolnay/typetag" [package.metadata.docs.rs] +rustdoc-args = ["--generate-link-to-definition"] targets = ["x86_64-unknown-linux-gnu"] [lib] diff -Nru temporalio-1.3.0/vendor/typetag-impl/src/parse.rs temporalio-1.3.0/vendor/typetag-impl/src/parse.rs --- temporalio-1.3.0/vendor/typetag-impl/src/parse.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/typetag-impl/src/parse.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,6 +6,7 @@ syn::custom_keyword!(tag); syn::custom_keyword!(content); syn::custom_keyword!(default_variant); + syn::custom_keyword!(deny_unknown_fields); syn::custom_keyword!(name); } @@ -19,6 +20,7 @@ tag: LitStr, content: LitStr, default_variant: Option, + deny_unknown_fields: bool, }, } @@ -96,6 +98,7 @@ // #[typetag::serde(tag = "type")] // #[typetag::serde(tag = "type", default_variant = "default")] // #[typetag::serde(tag = "type", content = "content")] +// #[typetag::serde(tag = "type", content = "content", deny_unknown_fields)] // #[typetag::serde(tag = "type", content = "content", default_variant = "default")] impl Parse for TraitArgs { fn parse(input: ParseStream) -> Result { @@ -124,22 +127,31 @@ if !input.is_empty() { input.parse::()?; } - if input.is_empty() { - return Ok(TraitArgs::Adjacent { - tag, - content, - default_variant: None, - }); + + let mut default_variant = None; + let mut deny_unknown_fields = false; + while !input.is_empty() { + let lookahead = input.lookahead1(); + if default_variant.is_none() && lookahead.peek(kw::default_variant) { + input.parse::()?; + input.parse::()?; + default_variant = Some(input.parse()?); + } else if !deny_unknown_fields && lookahead.peek(kw::deny_unknown_fields) { + input.parse::()?; + deny_unknown_fields = true; + } else { + return Err(lookahead.error()); + } + if !input.is_empty() { + input.parse::()?; + } } - input.parse::()?; - input.parse::()?; - let default_variant: LitStr = input.parse()?; - input.parse::>()?; Ok(TraitArgs::Adjacent { tag, content, - default_variant: Some(default_variant), + default_variant, + deny_unknown_fields, }) } else if lookahead.peek(kw::default_variant) { input.parse::()?; diff -Nru temporalio-1.3.0/vendor/typetag-impl/src/tagged_trait.rs temporalio-1.3.0/vendor/typetag-impl/src/tagged_trait.rs --- temporalio-1.3.0/vendor/typetag-impl/src/tagged_trait.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/typetag-impl/src/tagged_trait.rs 2023-10-30 19:40:00.000000000 +0000 @@ -22,7 +22,8 @@ tag, content, default_variant, - } => adjacently_tagged(tag, content, default_variant, &input), + deny_unknown_fields, + } => adjacently_tagged(tag, content, default_variant, deny_unknown_fields, &input), }; let object = &input.ident; @@ -232,6 +233,7 @@ tag: LitStr, content: LitStr, default_variant: Option, + deny_unknown_fields: bool, input: &ItemTrait, ) -> (TokenStream, TokenStream) { let object = &input.ident; @@ -250,7 +252,14 @@ let deserialize_impl = quote! { #static_registry - typetag::__private::adjacently::deserialize(deserializer, #object_name, &[#tag, #content], #default_variant_literal, registry) + typetag::__private::adjacently::deserialize( + deserializer, + #object_name, + &[#tag, #content], + #default_variant_literal, + registry, + #deny_unknown_fields, + ) }; (serialize_impl, deserialize_impl) diff -Nru temporalio-1.3.0/vendor/unicode-ident/.cargo-checksum.json temporalio-1.3.0/vendor/unicode-ident/.cargo-checksum.json --- temporalio-1.3.0/vendor/unicode-ident/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/unicode-ident/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"0b9fcd68f63640f5b34849da88288bd434148d9b635f34623af4705cf6a418d1","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","LICENSE-UNICODE":"68f5b9f5ea36881a0942ba02f558e9e1faf76cc09cb165ad801744c61b738844","README.md":"4e3b8b33ce66d038b932b0824e9c5f459893c2004ce68065fb8b68c98692d298","benches/xid.rs":"a61f61ecc7d5124c759cdeb55ab74470ab69f2f3ca37613da65f16e0e5e33487","src/lib.rs":"308db2da8f1d62ea717a70c61d444c6a31a3384319def3eba8ad882dfaf4d752","src/tables.rs":"b4609d6c2e2ba44fba8cdbcec271325ff196afba8001dee805be95424219f01b","tests/compare.rs":"89c4dc4f745064a9f734667b1d960596a10b8cb019a8ed1c5b9512678a866ad5","tests/fst/mod.rs":"69a3aaf59acd8bca962ecc6234be56be8c0934ab79b253162f10eb881523901f","tests/fst/xid_continue.fst":"0624500413ac318fee8424eecdad70397f911e3beae52231bfca295bb1bb9e04","tests/fst/xid_start.fst":"cc36f4f1149a4004ea7e2075cfb54756328b571946fda526be508cf5ed53dbdb","tests/roaring/mod.rs":"784f65a48477fab7549620c7843c7ad6da533f69a18abca1172f6acb95045e53","tests/static_size.rs":"8d9aff4d6e4e846aa18dc47b527753f7768fbc7d552d2d66450c4debe6c4466c","tests/tables/mod.rs":"e6949172d10fc4b2431ce7546269bfd4f9146454c8c3e31faf5e5d80c16a8ab6","tests/tables/tables.rs":"5194ac98137a3b61322213f2f8e8b83ff925ffcdd79e93a2ec414ef944dc63a3","tests/trie/mod.rs":"d4acbb716bcbaf80660039797f45e138ed8bbd66749fa3b19b1a971574679cc9","tests/trie/trie.rs":"dbd7de5fe601159643a4c6febed06793f812e8d71010b0ec78f2557353a976b2"},"package":"22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73"} \ No newline at end of file +{"files":{"Cargo.toml":"5110725cf18a82fdad338f5cf3f3f75c04355b57afab6efaa9068eb2ba883ced","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","LICENSE-UNICODE":"68f5b9f5ea36881a0942ba02f558e9e1faf76cc09cb165ad801744c61b738844","README.md":"4e3b8b33ce66d038b932b0824e9c5f459893c2004ce68065fb8b68c98692d298","benches/xid.rs":"a61f61ecc7d5124c759cdeb55ab74470ab69f2f3ca37613da65f16e0e5e33487","src/lib.rs":"e04331ab9a0f586541685c9728d4c6380babf00137a5b763fc8cc55109fe6ea2","src/tables.rs":"b4609d6c2e2ba44fba8cdbcec271325ff196afba8001dee805be95424219f01b","tests/compare.rs":"89c4dc4f745064a9f734667b1d960596a10b8cb019a8ed1c5b9512678a866ad5","tests/fst/mod.rs":"69a3aaf59acd8bca962ecc6234be56be8c0934ab79b253162f10eb881523901f","tests/fst/xid_continue.fst":"0624500413ac318fee8424eecdad70397f911e3beae52231bfca295bb1bb9e04","tests/fst/xid_start.fst":"cc36f4f1149a4004ea7e2075cfb54756328b571946fda526be508cf5ed53dbdb","tests/roaring/mod.rs":"784f65a48477fab7549620c7843c7ad6da533f69a18abca1172f6acb95045e53","tests/static_size.rs":"8d9aff4d6e4e846aa18dc47b527753f7768fbc7d552d2d66450c4debe6c4466c","tests/tables/mod.rs":"e6949172d10fc4b2431ce7546269bfd4f9146454c8c3e31faf5e5d80c16a8ab6","tests/tables/tables.rs":"5194ac98137a3b61322213f2f8e8b83ff925ffcdd79e93a2ec414ef944dc63a3","tests/trie/mod.rs":"d4acbb716bcbaf80660039797f45e138ed8bbd66749fa3b19b1a971574679cc9","tests/trie/trie.rs":"dbd7de5fe601159643a4c6febed06793f812e8d71010b0ec78f2557353a976b2"},"package":"301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/unicode-ident/Cargo.toml temporalio-1.3.0/vendor/unicode-ident/Cargo.toml --- temporalio-1.3.0/vendor/unicode-ident/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/unicode-ident/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ edition = "2018" rust-version = "1.31" name = "unicode-ident" -version = "1.0.10" +version = "1.0.11" authors = ["David Tolnay "] description = "Determine whether characters have the XID_Start or XID_Continue properties according to Unicode Standard Annex #31" documentation = "https://docs.rs/unicode-ident" @@ -31,6 +31,7 @@ repository = "https://github.com/dtolnay/unicode-ident" [package.metadata.docs.rs] +rustdoc-args = ["--generate-link-to-definition"] targets = ["x86_64-unknown-linux-gnu"] [lib] diff -Nru temporalio-1.3.0/vendor/unicode-ident/src/lib.rs temporalio-1.3.0/vendor/unicode-ident/src/lib.rs --- temporalio-1.3.0/vendor/unicode-ident/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/unicode-ident/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -242,7 +242,7 @@ //! this data structure is straight-line code with no need for branching. #![no_std] -#![doc(html_root_url = "https://docs.rs/unicode-ident/1.0.10")] +#![doc(html_root_url = "https://docs.rs/unicode-ident/1.0.11")] #![allow(clippy::doc_markdown, clippy::must_use_candidate)] #[rustfmt::skip] diff -Nru temporalio-1.3.0/vendor/untrusted/.cargo-checksum.json temporalio-1.3.0/vendor/untrusted/.cargo-checksum.json --- temporalio-1.3.0/vendor/untrusted/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/untrusted/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"59bb105a246b4729fc4bd17a4c3d6a86baa93ff912d29832afeb1bbc4668ea82","LICENSE.txt":"7abd9b6960dcf7d4d0a48606a5b71bfe37d472db68d70637f3a58a56785f1621","README.md":"8ec7954c78b7bceecc1757f2af855045969c3197ad306c9a5d3a6e0c43a8a9cd","rustfmt.toml":"35224a8b085bf87a77b0c6ab0c58f5deae37d1bddfbf59df98f9155a796ab3a7","src/untrusted.rs":"0be77ed2066283297671ec1f9e7c0003a37364d40f9853d2cb1a0139edd0de1a","tests/tests.rs":"7ea1550681e427fa6bf88ba41b13ebd810afd46c50fca85b297cd4e6d9a02157"},"package":"a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"} \ No newline at end of file +{"files":{"Cargo.toml":"25efda62e6e0a7e3cf463ff88bd9d9321befb22de7660cd63b2a0a195d70aed6","LICENSE.txt":"7abd9b6960dcf7d4d0a48606a5b71bfe37d472db68d70637f3a58a56785f1621","README.md":"8ec7954c78b7bceecc1757f2af855045969c3197ad306c9a5d3a6e0c43a8a9cd","deny.toml":"3a34becaf845de9c7dbafc56c6b5778d56d36097ec8283d09192841b409e8f27","mk/cargo.sh":"766c00df2767ac0998000e9b55d076b6dbbeb05ecf4c4d9b317df8551fae1bbe","mk/install-build-tools.sh":"90ec3cce41b1660b5103a37803e537ff167bae17badaca2d89f492116555919d","mk/llvm-snapshot.gpg.key":"88c1936349db1b7798b92cb62fe7d69e0b676b7900f4cb120c1c8ad5ac6b93d6","mk/runner":"471602c60f4243f87ebf952f8e69c07dfa29d8c69f2ef3885a4c61a2d6bf3b33","rustfmt.toml":"0dd6766a2c7a732a0535c8a51d0d84d27cec54c648b132a561ca66c601fc6312","src/input.rs":"aaa007b7051f03b32f6c71fa8164780435e637bb2242df7792942b699d2d9cbd","src/lib.rs":"860cdbec448f82196aa2242ad52945dfc60f29fcfbc28d244877fca0c0331fcc","src/no_panic.rs":"bf39e1314721d8350a09aa19628b64a2393b3b489906f1591a722bd47f4351e6","src/reader.rs":"3826d4de44a970ed42e3f7dead6f4b51b60ccf02c03b9ac7140c80a9e57b104d","tests/tests.rs":"cefcc4543e3d49e1af0e6e6efebebbdfb61cad131d0ea2d69c14ed11f398cca5"},"package":"8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/untrusted/Cargo.toml temporalio-1.3.0/vendor/untrusted/Cargo.toml --- temporalio-1.3.0/vendor/untrusted/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/untrusted/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,7 @@ [package] edition = "2018" name = "untrusted" -version = "0.7.1" +version = "0.9.0" authors = ["Brian Smith "] description = "Safe, fast, zero-panic, zero-crashing, zero-allocation parsing of untrusted inputs in Rust." documentation = "https://briansmith.org/rustdoc/untrusted/" @@ -26,4 +26,3 @@ [lib] name = "untrusted" -path = "src/untrusted.rs" diff -Nru temporalio-1.3.0/vendor/untrusted/deny.toml temporalio-1.3.0/vendor/untrusted/deny.toml --- temporalio-1.3.0/vendor/untrusted/deny.toml 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/untrusted/deny.toml 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,20 @@ +[advisories] +unmaintained = "deny" +yanked = "deny" +notice = "deny" + +[licenses] +allow = [ + "ISC", +] +confidence-threshold = 1.0 + +[bans] +# We don't maintain a fixed Cargo.lock so enforcing +# `multiple-versions = "deny"` is impractical. +multiple-versions = "allow" +wildcards = "deny" + +[sources] +unknown-registry = "deny" +unknown-git = "deny" diff -Nru temporalio-1.3.0/vendor/untrusted/mk/cargo.sh temporalio-1.3.0/vendor/untrusted/mk/cargo.sh --- temporalio-1.3.0/vendor/untrusted/mk/cargo.sh 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/untrusted/mk/cargo.sh 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,153 @@ +#!/usr/bin/env bash +# +# Copyright 2020 Brian Smith. +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +set -eux -o pipefail +IFS=$'\n\t' + +rustflags_self_contained="-Clink-self-contained=yes -Clinker=rust-lld" +qemu_aarch64="qemu-aarch64 -L /usr/aarch64-linux-gnu" +qemu_arm="qemu-arm -L /usr/arm-linux-gnueabihf" + +# Avoid putting the Android tools in `$PATH` because there are tools in this +# directory like `clang` that would conflict with the same-named tools that may +# be needed to compile the build script, or to compile for other targets. +if [ -n "${ANDROID_SDK_ROOT-}" ]; then + android_tools=$ANDROID_SDK_ROOT/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin +fi + +for arg in $*; do + case $arg in + --target=*) + target=${arg#*=} + ;; + *) + ;; + esac +done + +# See comments in install-build-tools.sh. +llvm_version=10 +if [ -n "${RING_COVERAGE-}" ]; then + llvm_version=11 +fi + +case $target in + aarch64-linux-android) + export CC_aarch64_linux_android=$android_tools/aarch64-linux-android21-clang + export AR_aarch64_linux_android=$android_tools/aarch64-linux-android-ar + export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=$android_tools/aarch64-linux-android21-clang + ;; + aarch64-unknown-linux-gnu) + export CC_aarch64_unknown_linux_gnu=clang-$llvm_version + export AR_aarch64_unknown_linux_gnu=llvm-ar-$llvm_version + export CFLAGS_aarch64_unknown_linux_gnu="--sysroot=/usr/aarch64-linux-gnu" + export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc + export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER="$qemu_aarch64" + ;; + aarch64-unknown-linux-musl) + export CC_aarch64_unknown_linux_musl=clang-$llvm_version + export AR_aarch64_unknown_linux_musl=llvm-ar-$llvm_version + export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="$rustflags_self_contained" + export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUNNER="$qemu_aarch64" + ;; + arm-unknown-linux-gnueabihf) + export CC_arm_unknown_linux_gnueabihf=arm-linux-gnueabihf-gcc + export AR_arm_unknown_linux_gnueabihf=arm-linux-gnueabihf-gcc-ar + export CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc + export CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_RUNNER="$qemu_arm" + ;; + armv7-linux-androideabi) + export CC_armv7_linux_androideabi=$android_tools/armv7a-linux-androideabi18-clang + export AR_armv7_linux_androideabi=$android_tools/arm-linux-androideabi-ar + export CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=$android_tools/armv7a-linux-androideabi18-clang + ;; + armv7-unknown-linux-musleabihf) + export CC_armv7_unknown_linux_musleabihf=clang-$llvm_version + export AR_armv7_unknown_linux_musleabihf=llvm-ar-$llvm_version + export CARGO_TARGET_ARMV7_UNKNOWN_LINUX_MUSLEABIHF_RUSTFLAGS="$rustflags_self_contained" + export CARGO_TARGET_ARMV7_UNKNOWN_LINUX_MUSLEABIHF_RUNNER="$qemu_arm" + ;; + i686-unknown-linux-gnu) + export CC_i686_unknown_linux_gnu=clang-$llvm_version + export AR_i686_unknown_linux_gnu=llvm-ar-$llvm_version + export CARGO_TARGET_I686_UNKNOWN_LINUX_GNU_LINKER=clang-$llvm_version + ;; + i686-unknown-linux-musl) + export CC_i686_unknown_linux_musl=clang-$llvm_version + export AR_i686_unknown_linux_musl=llvm-ar-$llvm_version + export CARGO_TARGET_I686_UNKNOWN_LINUX_MUSL_RUSTFLAGS="$rustflags_self_contained" + ;; + x86_64-unknown-linux-musl) + export CC_x86_64_unknown_linux_musl=clang-$llvm_version + export AR_x86_64_unknown_linux_musl=llvm-ar-$llvm_version + # XXX: Work around https://github.com/rust-lang/rust/issues/79555. + if [ -n "${RING_COVERAGE-}" ]; then + export CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER=clang-$llvm_version + else + export CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="$rustflags_self_contained" + fi + ;; + wasm32-unknown-unknown) + # The first two are only needed for when the "wasm_c" feature is enabled. + export CC_wasm32_unknown_unknown=clang-$llvm_version + export AR_wasm32_unknown_unknown=llvm-ar-$llvm_version + export CARGO_TARGET_WASM32_UNKNOWN_UNKNOWN_RUNNER=wasm-bindgen-test-runner + ;; + *) + ;; +esac + +if [ -n "${RING_COVERAGE-}" ]; then + # XXX: Collides between release and debug. + coverage_dir=$PWD/target/$target/debug/coverage + mkdir -p "$coverage_dir" + rm -f "$coverage_dir/*.profraw" + + export RING_BUILD_EXECUTABLE_LIST="$coverage_dir/executables" + truncate --size=0 "$RING_BUILD_EXECUTABLE_LIST" + + # This doesn't work when profiling under QEMU. Instead mk/runner does + # something similar but different. + # export LLVM_PROFILE_FILE="$coverage_dir/%m.profraw" + + # ${target} with hyphens replaced by underscores, lowercase and uppercase. + target_lower=${target//-/_} + target_upper=${target_lower^^} + + cflags_var=CFLAGS_${target_lower} + declare -x "${cflags_var}=-fprofile-instr-generate -fcoverage-mapping ${!cflags_var-}" + + runner_var=CARGO_TARGET_${target_upper}_RUNNER + declare -x "${runner_var}=mk/runner ${!runner_var-}" + + rustflags_var=CARGO_TARGET_${target_upper}_RUSTFLAGS + declare -x "${rustflags_var}=-Zinstrument-coverage ${!rustflags_var-}" +fi + +cargo "$@" + +if [ -n "${RING_COVERAGE-}" ]; then + while read executable; do + basename=$(basename "$executable") + llvm-profdata-$llvm_version merge -sparse ""$coverage_dir"/$basename.profraw" -o "$coverage_dir"/$basename.profdata + mkdir -p "$coverage_dir"/reports + llvm-cov-$llvm_version export \ + --instr-profile "$coverage_dir"/$basename.profdata \ + --format lcov \ + "$executable" \ + > "$coverage_dir"/reports/coverage-$basename.txt + done < "$RING_BUILD_EXECUTABLE_LIST" +fi diff -Nru temporalio-1.3.0/vendor/untrusted/mk/install-build-tools.sh temporalio-1.3.0/vendor/untrusted/mk/install-build-tools.sh --- temporalio-1.3.0/vendor/untrusted/mk/install-build-tools.sh 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/untrusted/mk/install-build-tools.sh 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,95 @@ +#!/usr/bin/env bash +# +# Copyright 2020 Brian Smith. +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +set -eux -o pipefail +IFS=$'\n\t' + +target=$1 +features=${2-} + +function install_packages { + sudo apt-get -yq --no-install-suggests --no-install-recommends install "$@" +} + +use_clang= +case $target in +--target*android*) + mkdir -p "${ANDROID_SDK_ROOT}/licenses" + android_license_file="${ANDROID_SDK_ROOT}/licenses/android-sdk-license" + accept_android_license=24333f8a63b6825ea9c5514f83c2829b004d1fee + grep --quiet --no-messages "$accept_android_license" "$android_license_file" \ + || echo $accept_android_license >> "$android_license_file" + sudo "${ANDROID_SDK_ROOT}/tools/bin/sdkmanager" ndk-bundle + ;; +esac + +case $target in +--target=aarch64-unknown-linux-gnu) + # Clang is needed for code coverage. + use_clang=1 + install_packages \ + qemu-user \ + gcc-aarch64-linux-gnu \ + libc6-dev-arm64-cross + ;; +--target=aarch64-unknown-linux-musl|--target=armv7-unknown-linux-musleabihf) + use_clang=1 + install_packages \ + qemu-user + ;; +--target=arm-unknown-linux-gnueabihf) + install_packages \ + qemu-user \ + gcc-arm-linux-gnueabihf \ + libc6-dev-armhf-cross + ;; +--target=i686-unknown-linux-gnu) + use_clang=1 + install_packages \ + gcc-multilib \ + libc6-dev-i386 + ;; +--target=i686-unknown-linux-musl|--target=x86_64-unknown-linux-musl) + use_clang=1 + ;; +--target=wasm32-unknown-unknown) + # The version of wasm-bindgen-cli must match the wasm-bindgen version. + wasm_bindgen_version=$(cargo metadata --format-version 1 | jq -r '.packages | map(select( .name == "wasm-bindgen")) | map(.version) | .[0]') + cargo install wasm-bindgen-cli --vers "$wasm_bindgen_version" --bin wasm-bindgen-test-runner + case ${features-} in + *wasm32_c*) + use_clang=1 + ;; + *) + ;; + esac + ;; +--target=*) + ;; +esac + +if [ -n "$use_clang" ]; then + llvm_version=10 + if [ -n "${RING_COVERAGE-}" ]; then + # https://github.com/rust-lang/rust/pull/79365 upgraded the coverage file + # format to one that only LLVM 11+ can use + llvm_version=11 + sudo apt-key add mk/llvm-snapshot.gpg.key + sudo add-apt-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-$llvm_version main" + sudo apt-get update + fi + install_packages clang-$llvm_version llvm-$llvm_version +fi diff -Nru temporalio-1.3.0/vendor/untrusted/mk/llvm-snapshot.gpg.key temporalio-1.3.0/vendor/untrusted/mk/llvm-snapshot.gpg.key --- temporalio-1.3.0/vendor/untrusted/mk/llvm-snapshot.gpg.key 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/untrusted/mk/llvm-snapshot.gpg.key 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,54 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.12 (GNU/Linux) +Comment: See https://apt.llvm.org/. +Comment: Fingerprint: 6084 F3CF 814B 57C1 CF12 EFD5 15CF 4D18 AF4F 7421 + +mQINBFE9lCwBEADi0WUAApM/mgHJRU8lVkkw0CHsZNpqaQDNaHefD6Rw3S4LxNmM +EZaOTkhP200XZM8lVdbfUW9xSjA3oPldc1HG26NjbqqCmWpdo2fb+r7VmU2dq3NM +R18ZlKixiLDE6OUfaXWKamZsXb6ITTYmgTO6orQWYrnW6ckYHSeaAkW0wkDAryl2 +B5v8aoFnQ1rFiVEMo4NGzw4UX+MelF7rxaaregmKVTPiqCOSPJ1McC1dHFN533FY +Wh/RVLKWo6npu+owtwYFQW+zyQhKzSIMvNujFRzhIxzxR9Gn87MoLAyfgKEzrbbT +DhqqNXTxS4UMUKCQaO93TzetX/EBrRpJj+vP640yio80h4Dr5pAd7+LnKwgpTDk1 +G88bBXJAcPZnTSKu9I2c6KY4iRNbvRz4i+ZdwwZtdW4nSdl2792L7Sl7Nc44uLL/ +ZqkKDXEBF6lsX5XpABwyK89S/SbHOytXv9o4puv+65Ac5/UShspQTMSKGZgvDauU +cs8kE1U9dPOqVNCYq9Nfwinkf6RxV1k1+gwtclxQuY7UpKXP0hNAXjAiA5KS5Crq +7aaJg9q2F4bub0mNU6n7UI6vXguF2n4SEtzPRk6RP+4TiT3bZUsmr+1ktogyOJCc +Ha8G5VdL+NBIYQthOcieYCBnTeIH7D3Sp6FYQTYtVbKFzmMK+36ERreL/wARAQAB +tD1TeWx2ZXN0cmUgTGVkcnUgLSBEZWJpYW4gTExWTSBwYWNrYWdlcyA8c3lsdmVz +dHJlQGRlYmlhbi5vcmc+iQI4BBMBAgAiBQJRPZQsAhsDBgsJCAcDAgYVCAIJCgsE +FgIDAQIeAQIXgAAKCRAVz00Yr090Ibx+EADArS/hvkDF8juWMXxh17CgR0WZlHCC +9CTBWkg5a0bNN/3bb97cPQt/vIKWjQtkQpav6/5JTVCSx2riL4FHYhH0iuo4iAPR +udC7Cvg8g7bSPrKO6tenQZNvQm+tUmBHgFiMBJi92AjZ/Qn1Shg7p9ITivFxpLyX +wpmnF1OKyI2Kof2rm4BFwfSWuf8Fvh7kDMRLHv+MlnK/7j/BNpKdozXxLcwoFBmn +l0WjpAH3OFF7Pvm1LJdf1DjWKH0Dc3sc6zxtmBR/KHHg6kK4BGQNnFKujcP7TVdv +gMYv84kun14pnwjZcqOtN3UJtcx22880DOQzinoMs3Q4w4o05oIF+sSgHViFpc3W +R0v+RllnH05vKZo+LDzc83DQVrdwliV12eHxrMQ8UYg88zCbF/cHHnlzZWAJgftg +hB08v1BKPgYRUzwJ6VdVqXYcZWEaUJmQAPuAALyZESw94hSo28FAn0/gzEc5uOYx +K+xG/lFwgAGYNb3uGM5m0P6LVTfdg6vDwwOeTNIExVk3KVFXeSQef2ZMkhwA7wya +KJptkb62wBHFE+o9TUdtMCY6qONxMMdwioRE5BYNwAsS1PnRD2+jtlI0DzvKHt7B +MWd8hnoUKhMeZ9TNmo+8CpsAtXZcBho0zPGz/R8NlJhAWpdAZ1CmcPo83EW86Yq7 +BxQUKnNHcwj2ebkCDQRRPZQsARAA4jxYmbTHwmMjqSizlMJYNuGOpIidEdx9zQ5g +zOr431/VfWq4S+VhMDhs15j9lyml0y4ok215VRFwrAREDg6UPMr7ajLmBQGau0Fc +bvZJ90l4NjXp5p0NEE/qOb9UEHT7EGkEhaZ1ekkWFTWCgsy7rRXfZLxB6sk7pzLC +DshyW3zjIakWAnpQ5j5obiDy708pReAuGB94NSyb1HoW/xGsGgvvCw4r0w3xPStw +F1PhmScE6NTBIfLliea3pl8vhKPlCh54Hk7I8QGjo1ETlRP4Qll1ZxHJ8u25f/ta +RES2Aw8Hi7j0EVcZ6MT9JWTI83yUcnUlZPZS2HyeWcUj+8nUC8W4N8An+aNps9l/ +21inIl2TbGo3Yn1JQLnA1YCoGwC34g8QZTJhElEQBN0X29ayWW6OdFx8MDvllbBV +ymmKq2lK1U55mQTfDli7S3vfGz9Gp/oQwZ8bQpOeUkc5hbZszYwP4RX+68xDPfn+ +M9udl+qW9wu+LyePbW6HX90LmkhNkkY2ZzUPRPDHZANU5btaPXc2H7edX4y4maQa +xenqD0lGh9LGz/mps4HEZtCI5CY8o0uCMF3lT0XfXhuLksr7Pxv57yue8LLTItOJ +d9Hmzp9G97SRYYeqU+8lyNXtU2PdrLLq7QHkzrsloG78lCpQcalHGACJzrlUWVP/ +fN3Ht3kAEQEAAYkCHwQYAQIACQUCUT2ULAIbDAAKCRAVz00Yr090IbhWEADbr50X +OEXMIMGRLe+YMjeMX9NG4jxs0jZaWHc/WrGR+CCSUb9r6aPXeLo+45949uEfdSsB +pbaEdNWxF5Vr1CSjuO5siIlgDjmT655voXo67xVpEN4HhMrxugDJfCa6z97P0+ML +PdDxim57uNqkam9XIq9hKQaurxMAECDPmlEXI4QT3eu5qw5/knMzDMZj4Vi6hovL +wvvAeLHO/jsyfIdNmhBGU2RWCEZ9uo/MeerPHtRPfg74g+9PPfP6nyHD2Wes6yGd +oVQwtPNAQD6Cj7EaA2xdZYLJ7/jW6yiPu98FFWP74FN2dlyEA2uVziLsfBrgpS4l +tVOlrO2YzkkqUGrybzbLpj6eeHx+Cd7wcjI8CalsqtL6cG8cUEjtWQUHyTbQWAgG +5VPEgIAVhJ6RTZ26i/G+4J8neKyRs4vz+57UGwY6zI4AB1ZcWGEE3Bf+CDEDgmnP +LSwbnHefK9IljT9XU98PelSryUO/5UPw7leE0akXKB4DtekToO226px1VnGp3Bov +1GBGvpHvL2WizEwdk+nfk8LtrLzej+9FtIcq3uIrYnsac47Pf7p0otcFeTJTjSq3 +krCaoG4Hx0zGQG2ZFpHrSrZTVy6lxvIdfi0beMgY6h78p6M9eYZHQHc02DjFkQXN +bXb5c6gCHESH5PXwPU4jQEE7Ib9J6sbk7ZT2Mw== +=j+4q +-----END PGP PUBLIC KEY BLOCK----- diff -Nru temporalio-1.3.0/vendor/untrusted/mk/runner temporalio-1.3.0/vendor/untrusted/mk/runner --- temporalio-1.3.0/vendor/untrusted/mk/runner 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/untrusted/mk/runner 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,21 @@ +#!/bin/bash +set -eux -o pipefail +IFS=$'\n\t' + +for arg in $*; do + # There can be some arguments prefixed in front of the executable, e.g. + # when qemu-user is used. There can be arguments after the executable, + # e.g. `cargo test` arguments like `TESTNAME`. + if [[ $arg = */deps/* ]]; then + executable=$arg + break + fi +done + +export LLVM_PROFILE_FILE=$(dirname "$RING_BUILD_EXECUTABLE_LIST")/$(basename "$executable").profraw + +if [ -n "$RING_BUILD_EXECUTABLE_LIST" ]; then + echo "$executable" >> "$RING_BUILD_EXECUTABLE_LIST" +fi + +$* diff -Nru temporalio-1.3.0/vendor/untrusted/rustfmt.toml temporalio-1.3.0/vendor/untrusted/rustfmt.toml --- temporalio-1.3.0/vendor/untrusted/rustfmt.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/untrusted/rustfmt.toml 2023-10-30 19:40:00.000000000 +0000 @@ -1,13 +1,5 @@ edition = "2018" -fn_args_density = "Compressed" -fn_single_line = true -match_arm_blocks = false -match_block_trailing_comma = true max_width = 100 -merge_imports = true newline_style = "Unix" reorder_imports = true -trailing_comma = "Vertical" use_field_init_shorthand = true -use_try_shorthand = true -wrap_comments = true diff -Nru temporalio-1.3.0/vendor/untrusted/src/input.rs temporalio-1.3.0/vendor/untrusted/src/input.rs --- temporalio-1.3.0/vendor/untrusted/src/input.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/untrusted/src/input.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,101 @@ +// Copyright 2015-2021 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +use crate::{no_panic, Reader}; + +/// A wrapper around `&'a [u8]` that helps in writing panic-free code. +/// +/// No methods of `Input` will ever panic. +/// +/// Intentionally avoids implementing `PartialEq` and `Eq` to avoid implicit +/// non-constant-time comparisons. +#[derive(Clone, Copy)] +pub struct Input<'a> { + value: no_panic::Slice<'a>, +} + +/// The value is intentionally omitted from the output to avoid leaking +/// secrets. +impl core::fmt::Debug for Input<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + f.debug_struct("Input").finish() + } +} + +impl<'a> Input<'a> { + /// Construct a new `Input` for the given input `bytes`. + pub const fn from(bytes: &'a [u8]) -> Self { + // This limit is important for avoiding integer overflow. In particular, + // `Reader` assumes that an `i + 1 > i` if `input.value.get(i)` does + // not return `None`. According to the Rust language reference, the + // maximum object size is `core::isize::MAX`, and in practice it is + // impossible to create an object of size `core::usize::MAX` or larger. + Self { + value: no_panic::Slice::new(bytes), + } + } + + /// Returns `true` if the input is empty and false otherwise. + #[inline] + pub fn is_empty(&self) -> bool { + self.value.is_empty() + } + + /// Returns the length of the `Input`. + #[inline] + pub fn len(&self) -> usize { + self.value.len() + } + + /// Calls `read` with the given input as a `Reader`, ensuring that `read` + /// consumed the entire input. If `read` does not consume the entire input, + /// `incomplete_read` is returned. + pub fn read_all(&self, incomplete_read: E, read: F) -> Result + where + F: FnOnce(&mut Reader<'a>) -> Result, + { + let mut input = Reader::new(*self); + let result = read(&mut input)?; + if input.at_end() { + Ok(result) + } else { + Err(incomplete_read) + } + } + + /// Access the input as a slice so it can be processed by functions that + /// are not written using the Input/Reader framework. + #[inline] + pub fn as_slice_less_safe(&self) -> &'a [u8] { + self.value.as_slice_less_safe() + } + + pub(super) fn into_value(self) -> no_panic::Slice<'a> { + self.value + } +} + +impl<'a> From<&'a [u8]> for Input<'a> { + #[inline] + fn from(value: &'a [u8]) -> Self { + no_panic::Slice::new(value).into() + } +} + +impl<'a> From> for Input<'a> { + #[inline] + fn from(value: no_panic::Slice<'a>) -> Self { + Self { value } + } +} diff -Nru temporalio-1.3.0/vendor/untrusted/src/lib.rs temporalio-1.3.0/vendor/untrusted/src/lib.rs --- temporalio-1.3.0/vendor/untrusted/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/untrusted/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,121 @@ +// Copyright 2015-2021 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +//! untrusted.rs: Safe, fast, zero-panic, zero-crashing, zero-allocation +//! parsing of untrusted inputs in Rust. +//! +//! git clone https://github.com/briansmith/untrusted +//! +//! untrusted.rs goes beyond Rust's normal safety guarantees by also +//! guaranteeing that parsing will be panic-free, as long as +//! `untrusted::Input::as_slice_less_safe()` is not used. It avoids copying +//! data and heap allocation and strives to prevent common pitfalls such as +//! accidentally parsing input bytes multiple times. In order to meet these +//! goals, untrusted.rs is limited in functionality such that it works best for +//! input languages with a small fixed amount of lookahead such as ASN.1, TLS, +//! TCP/IP, and many other networking, IPC, and related protocols. Languages +//! that require more lookahead and/or backtracking require some significant +//! contortions to parse using this framework. It would not be realistic to use +//! it for parsing programming language code, for example. +//! +//! The overall pattern for using untrusted.rs is: +//! +//! 1. Write a recursive-descent-style parser for the input language, where the +//! input data is given as a `&mut untrusted::Reader` parameter to each +//! function. Each function should have a return type of `Result` for +//! some value type `V` and some error type `E`, either or both of which may +//! be `()`. Functions for parsing the lowest-level language constructs +//! should be defined. Those lowest-level functions will parse their inputs +//! using `::read_byte()`, `Reader::peek()`, and similar functions. +//! Higher-level language constructs are then parsed by calling the +//! lower-level functions in sequence. +//! +//! 2. Wrap the top-most functions of your recursive-descent parser in +//! functions that take their input data as an `untrusted::Input`. The +//! wrapper functions should call the `Input`'s `read_all` (or a variant +//! thereof) method. The wrapper functions are the only ones that should be +//! exposed outside the parser's module. +//! +//! 3. After receiving the input data to parse, wrap it in an `untrusted::Input` +//! using `untrusted::Input::from()` as early as possible. Pass the +//! `untrusted::Input` to the wrapper functions when they need to be parsed. +//! +//! In general parsers built using `untrusted::Reader` do not need to explicitly +//! check for end-of-input unless they are parsing optional constructs, because +//! `Reader::read_byte()` will return `Err(EndOfInput)` on end-of-input. +//! Similarly, parsers using `untrusted::Reader` generally don't need to check +//! for extra junk at the end of the input as long as the parser's API uses the +//! pattern described above, as `read_all` and its variants automatically check +//! for trailing junk. `Reader::skip_to_end()` must be used when any remaining +//! unread input should be ignored without triggering an error. +//! +//! untrusted.rs works best when all processing of the input data is done +//! through the `untrusted::Input` and `untrusted::Reader` types. In +//! particular, avoid trying to parse input data using functions that take +//! byte slices. However, when you need to access a part of the input data as +//! a slice to use a function that isn't written using untrusted.rs, +//! `Input::as_slice_less_safe()` can be used. +//! +//! It is recommend to use `use untrusted;` and then `untrusted::Input`, +//! `untrusted::Reader`, etc., instead of using `use untrusted::*`. Qualifying +//! the names with `untrusted` helps remind the reader of the code that it is +//! dealing with *untrusted* input. +//! +//! # Examples +//! +//! [*ring*](https://github.com/briansmith/ring)'s parser for the subset of +//! ASN.1 DER it needs to understand, +//! [`ring::der`](https://github.com/briansmith/ring/blob/main/src/io/der.rs), +//! is built on top of untrusted.rs. *ring* also uses untrusted.rs to parse ECC +//! public keys, RSA PKCS#1 1.5 padding, and for all other parsing it does. +//! +//! All of [webpki](https://github.com/briansmith/webpki)'s parsing of X.509 +//! certificates (also ASN.1 DER) is done using untrusted.rs. + +#![doc(html_root_url = "https://briansmith.org/rustdoc/")] +#![no_std] + +mod input; +mod no_panic; +mod reader; + +pub use { + input::Input, + reader::{EndOfInput, Reader}, +}; + +/// Calls `read` with the given input as a `Reader`, ensuring that `read` +/// consumed the entire input. When `input` is `None`, `read` will be +/// called with `None`. +pub fn read_all_optional<'a, F, R, E>( + input: Option>, + incomplete_read: E, + read: F, +) -> Result +where + F: FnOnce(Option<&mut Reader<'a>>) -> Result, +{ + match input { + Some(input) => { + let mut input = Reader::new(input); + let result = read(Some(&mut input))?; + if input.at_end() { + Ok(result) + } else { + Err(incomplete_read) + } + } + None => read(None), + } +} diff -Nru temporalio-1.3.0/vendor/untrusted/src/no_panic.rs temporalio-1.3.0/vendor/untrusted/src/no_panic.rs --- temporalio-1.3.0/vendor/untrusted/src/no_panic.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/untrusted/src/no_panic.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,40 @@ +/// A wrapper around a slice that exposes no functions that can panic. +/// +/// Intentionally avoids implementing `Debug`, `Eq`, and `PartialEq` to avoid +/// creating a side channel that would leak information about the value. +#[derive(Clone, Copy)] +pub struct Slice<'a> { + bytes: &'a [u8], +} + +impl<'a> Slice<'a> { + #[inline] + pub const fn new(bytes: &'a [u8]) -> Self { + Self { bytes } + } + + #[inline] + pub fn get(&self, i: usize) -> Option<&u8> { + self.bytes.get(i) + } + + #[inline] + pub fn subslice(&self, r: core::ops::Range) -> Option { + self.bytes.get(r).map(|bytes| Self { bytes }) + } + + #[inline] + pub fn is_empty(&self) -> bool { + self.bytes.is_empty() + } + + #[inline] + pub fn len(&self) -> usize { + self.bytes.len() + } + + #[inline] + pub fn as_slice_less_safe(&self) -> &'a [u8] { + self.bytes + } +} diff -Nru temporalio-1.3.0/vendor/untrusted/src/reader.rs temporalio-1.3.0/vendor/untrusted/src/reader.rs --- temporalio-1.3.0/vendor/untrusted/src/reader.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/untrusted/src/reader.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,140 @@ +// Copyright 2015-2021 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +use crate::{no_panic, Input}; + +/// A read-only, forward-only cursor into the data in an `Input`. +/// +/// Using `Reader` to parse input helps to ensure that no byte of the input +/// will be accidentally processed more than once. Using `Reader` in +/// conjunction with `read_all` and `read_all_optional` helps ensure that no +/// byte of the input is accidentally left unprocessed. The methods of `Reader` +/// never panic, so `Reader` also assists the writing of panic-free code. +/// +/// Intentionally avoids implementing `PartialEq` and `Eq` to avoid implicit +/// non-constant-time comparisons. +pub struct Reader<'a> { + input: no_panic::Slice<'a>, + i: usize, +} + +/// Avoids writing the value or position to avoid creating a side channel, +/// though `Reader` can't avoid leaking the position via timing. +impl core::fmt::Debug for Reader<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + f.debug_struct("Reader").finish() + } +} + +impl<'a> Reader<'a> { + /// Construct a new Reader for the given input. Use `read_all` or + /// `read_all_optional` instead of `Reader::new` whenever possible. + #[inline] + pub fn new(input: Input<'a>) -> Self { + Self { + input: input.into_value(), + i: 0, + } + } + + /// Returns `true` if the reader is at the end of the input, and `false` + /// otherwise. + #[inline] + pub fn at_end(&self) -> bool { + self.i == self.input.len() + } + + /// Returns `true` if there is at least one more byte in the input and that + /// byte is equal to `b`, and false otherwise. + #[inline] + pub fn peek(&self, b: u8) -> bool { + match self.input.get(self.i) { + Some(actual_b) => b == *actual_b, + None => false, + } + } + + /// Reads the next input byte. + /// + /// Returns `Ok(b)` where `b` is the next input byte, or `Err(EndOfInput)` + /// if the `Reader` is at the end of the input. + #[inline] + pub fn read_byte(&mut self) -> Result { + match self.input.get(self.i) { + Some(b) => { + self.i += 1; // safe from overflow; see Input::from(). + Ok(*b) + } + None => Err(EndOfInput), + } + } + + /// Skips `num_bytes` of the input, returning the skipped input as an + /// `Input`. + /// + /// Returns `Ok(i)` if there are at least `num_bytes` of input remaining, + /// and `Err(EndOfInput)` otherwise. + #[inline] + pub fn read_bytes(&mut self, num_bytes: usize) -> Result, EndOfInput> { + let new_i = self.i.checked_add(num_bytes).ok_or(EndOfInput)?; + let ret = self + .input + .subslice(self.i..new_i) + .map(From::from) + .ok_or(EndOfInput)?; + self.i = new_i; + Ok(ret) + } + + /// Skips the reader to the end of the input, returning the skipped input + /// as an `Input`. + #[inline] + pub fn read_bytes_to_end(&mut self) -> Input<'a> { + let to_skip = self.input.len() - self.i; + self.read_bytes(to_skip).unwrap() + } + + /// Calls `read()` with the given input as a `Reader`. On success, returns a + /// pair `(bytes_read, r)` where `bytes_read` is what `read()` consumed and + /// `r` is `read()`'s return value. + pub fn read_partial(&mut self, read: F) -> Result<(Input<'a>, R), E> + where + F: FnOnce(&mut Reader<'a>) -> Result, + { + let start = self.i; + let r = read(self)?; + let bytes_read = self.input.subslice(start..self.i).unwrap().into(); + Ok((bytes_read, r)) + } + + /// Skips `num_bytes` of the input. + /// + /// Returns `Ok(i)` if there are at least `num_bytes` of input remaining, + /// and `Err(EndOfInput)` otherwise. + #[inline] + pub fn skip(&mut self, num_bytes: usize) -> Result<(), EndOfInput> { + self.read_bytes(num_bytes).map(|_| ()) + } + + /// Skips the reader to the end of the input. + #[inline] + pub fn skip_to_end(&mut self) { + let _ = self.read_bytes_to_end(); + } +} + +/// The error type used to indicate the end of the input was reached before the +/// operation could be completed. +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub struct EndOfInput; diff -Nru temporalio-1.3.0/vendor/untrusted/src/untrusted.rs temporalio-1.3.0/vendor/untrusted/src/untrusted.rs --- temporalio-1.3.0/vendor/untrusted/src/untrusted.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/untrusted/src/untrusted.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,374 +0,0 @@ -// Copyright 2015-2016 Brian Smith. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -//! untrusted.rs: Safe, fast, zero-panic, zero-crashing, zero-allocation -//! parsing of untrusted inputs in Rust. -//! -//! git clone https://github.com/briansmith/untrusted -//! -//! untrusted.rs goes beyond Rust's normal safety guarantees by also -//! guaranteeing that parsing will be panic-free, as long as -//! `untrusted::Input::as_slice_less_safe()` is not used. It avoids copying -//! data and heap allocation and strives to prevent common pitfalls such as -//! accidentally parsing input bytes multiple times. In order to meet these -//! goals, untrusted.rs is limited in functionality such that it works best for -//! input languages with a small fixed amount of lookahead such as ASN.1, TLS, -//! TCP/IP, and many other networking, IPC, and related protocols. Languages -//! that require more lookahead and/or backtracking require some significant -//! contortions to parse using this framework. It would not be realistic to use -//! it for parsing programming language code, for example. -//! -//! The overall pattern for using untrusted.rs is: -//! -//! 1. Write a recursive-descent-style parser for the input language, where the -//! input data is given as a `&mut untrusted::Reader` parameter to each -//! function. Each function should have a return type of `Result` for -//! some value type `V` and some error type `E`, either or both of which may -//! be `()`. Functions for parsing the lowest-level language constructs -//! should be defined. Those lowest-level functions will parse their inputs -//! using `::read_byte()`, `Reader::peek()`, and similar functions. -//! Higher-level language constructs are then parsed by calling the -//! lower-level functions in sequence. -//! -//! 2. Wrap the top-most functions of your recursive-descent parser in -//! functions that take their input data as an `untrusted::Input`. The -//! wrapper functions should call the `Input`'s `read_all` (or a variant -//! thereof) method. The wrapper functions are the only ones that should be -//! exposed outside the parser's module. -//! -//! 3. After receiving the input data to parse, wrap it in an `untrusted::Input` -//! using `untrusted::Input::from()` as early as possible. Pass the -//! `untrusted::Input` to the wrapper functions when they need to be parsed. -//! -//! In general parsers built using `untrusted::Reader` do not need to explicitly -//! check for end-of-input unless they are parsing optional constructs, because -//! `Reader::read_byte()` will return `Err(EndOfInput)` on end-of-input. -//! Similarly, parsers using `untrusted::Reader` generally don't need to check -//! for extra junk at the end of the input as long as the parser's API uses the -//! pattern described above, as `read_all` and its variants automatically check -//! for trailing junk. `Reader::skip_to_end()` must be used when any remaining -//! unread input should be ignored without triggering an error. -//! -//! untrusted.rs works best when all processing of the input data is done -//! through the `untrusted::Input` and `untrusted::Reader` types. In -//! particular, avoid trying to parse input data using functions that take -//! byte slices. However, when you need to access a part of the input data as -//! a slice to use a function that isn't written using untrusted.rs, -//! `Input::as_slice_less_safe()` can be used. -//! -//! It is recommend to use `use untrusted;` and then `untrusted::Input`, -//! `untrusted::Reader`, etc., instead of using `use untrusted::*`. Qualifying -//! the names with `untrusted` helps remind the reader of the code that it is -//! dealing with *untrusted* input. -//! -//! # Examples -//! -//! [*ring*](https://github.com/briansmith/ring)'s parser for the subset of -//! ASN.1 DER it needs to understand, -//! [`ring::der`](https://github.com/briansmith/ring/blob/master/src/der.rs), -//! is built on top of untrusted.rs. *ring* also uses untrusted.rs to parse ECC -//! public keys, RSA PKCS#1 1.5 padding, and for all other parsing it does. -//! -//! All of [webpki](https://github.com/briansmith/webpki)'s parsing of X.509 -//! certificates (also ASN.1 DER) is done using untrusted.rs. - -#![doc(html_root_url = "https://briansmith.org/rustdoc/")] -// `#[derive(...)]` uses `#[allow(unused_qualifications)]` internally. -#![deny(unused_qualifications)] -#![forbid( - anonymous_parameters, - box_pointers, - missing_docs, - trivial_casts, - trivial_numeric_casts, - unsafe_code, - unstable_features, - unused_extern_crates, - unused_import_braces, - unused_results, - variant_size_differences, - warnings -)] -#![no_std] - -/// A wrapper around `&'a [u8]` that helps in writing panic-free code. -/// -/// No methods of `Input` will ever panic. -#[derive(Clone, Copy, Debug, Eq)] -pub struct Input<'a> { - value: no_panic::Slice<'a>, -} - -impl<'a> Input<'a> { - /// Construct a new `Input` for the given input `bytes`. - pub const fn from(bytes: &'a [u8]) -> Self { - // This limit is important for avoiding integer overflow. In particular, - // `Reader` assumes that an `i + 1 > i` if `input.value.get(i)` does - // not return `None`. According to the Rust language reference, the - // maximum object size is `core::isize::MAX`, and in practice it is - // impossible to create an object of size `core::usize::MAX` or larger. - Self { - value: no_panic::Slice::new(bytes), - } - } - - /// Returns `true` if the input is empty and false otherwise. - #[inline] - pub fn is_empty(&self) -> bool { self.value.is_empty() } - - /// Returns the length of the `Input`. - #[inline] - pub fn len(&self) -> usize { self.value.len() } - - /// Calls `read` with the given input as a `Reader`, ensuring that `read` - /// consumed the entire input. If `read` does not consume the entire input, - /// `incomplete_read` is returned. - pub fn read_all(&self, incomplete_read: E, read: F) -> Result - where - F: FnOnce(&mut Reader<'a>) -> Result, - { - let mut input = Reader::new(*self); - let result = read(&mut input)?; - if input.at_end() { - Ok(result) - } else { - Err(incomplete_read) - } - } - - /// Access the input as a slice so it can be processed by functions that - /// are not written using the Input/Reader framework. - #[inline] - pub fn as_slice_less_safe(&self) -> &'a [u8] { self.value.as_slice_less_safe() } -} - -impl<'a> From<&'a [u8]> for Input<'a> { - #[inline] - fn from(value: &'a [u8]) -> Self { Self { value: no_panic::Slice::new(value)} } -} - -// #[derive(PartialEq)] would result in lifetime bounds that are -// unnecessarily restrictive; see -// https://github.com/rust-lang/rust/issues/26925. -impl PartialEq> for Input<'_> { - #[inline] - fn eq(&self, other: &Input) -> bool { - self.as_slice_less_safe() == other.as_slice_less_safe() - } -} - -impl PartialEq<[u8]> for Input<'_> { - #[inline] - fn eq(&self, other: &[u8]) -> bool { self.as_slice_less_safe() == other } -} - -impl PartialEq> for [u8] { - #[inline] - fn eq(&self, other: &Input) -> bool { other.as_slice_less_safe() == self } -} - -/// Calls `read` with the given input as a `Reader`, ensuring that `read` -/// consumed the entire input. When `input` is `None`, `read` will be -/// called with `None`. -pub fn read_all_optional<'a, F, R, E>( - input: Option>, incomplete_read: E, read: F, -) -> Result -where - F: FnOnce(Option<&mut Reader<'a>>) -> Result, -{ - match input { - Some(input) => { - let mut input = Reader::new(input); - let result = read(Some(&mut input))?; - if input.at_end() { - Ok(result) - } else { - Err(incomplete_read) - } - }, - None => read(None), - } -} - -/// A read-only, forward-only* cursor into the data in an `Input`. -/// -/// Using `Reader` to parse input helps to ensure that no byte of the input -/// will be accidentally processed more than once. Using `Reader` in -/// conjunction with `read_all` and `read_all_optional` helps ensure that no -/// byte of the input is accidentally left unprocessed. The methods of `Reader` -/// never panic, so `Reader` also assists the writing of panic-free code. -/// -/// \* `Reader` is not strictly forward-only because of the method -/// `get_input_between_marks`, which is provided mainly to support calculating -/// digests over parsed data. -#[derive(Debug)] -pub struct Reader<'a> { - input: no_panic::Slice<'a>, - i: usize, -} - -/// An index into the already-parsed input of a `Reader`. -pub struct Mark { - i: usize, -} - -impl<'a> Reader<'a> { - /// Construct a new Reader for the given input. Use `read_all` or - /// `read_all_optional` instead of `Reader::new` whenever possible. - #[inline] - pub fn new(input: Input<'a>) -> Self { - Self { - input: input.value, - i: 0, - } - } - - /// Returns `true` if the reader is at the end of the input, and `false` - /// otherwise. - #[inline] - pub fn at_end(&self) -> bool { self.i == self.input.len() } - - /// Returns an `Input` for already-parsed input that has had its boundaries - /// marked using `mark`. - #[inline] - pub fn get_input_between_marks( - &self, mark1: Mark, mark2: Mark, - ) -> Result, EndOfInput> { - self.input - .subslice(mark1.i..mark2.i) - .map(|subslice| Input { value: subslice }) - .ok_or(EndOfInput) - } - - /// Return the current position of the `Reader` for future use in a call - /// to `get_input_between_marks`. - #[inline] - pub fn mark(&self) -> Mark { Mark { i: self.i } } - - /// Returns `true` if there is at least one more byte in the input and that - /// byte is equal to `b`, and false otherwise. - #[inline] - pub fn peek(&self, b: u8) -> bool { - match self.input.get(self.i) { - Some(actual_b) => b == *actual_b, - None => false, - } - } - - /// Reads the next input byte. - /// - /// Returns `Ok(b)` where `b` is the next input byte, or `Err(EndOfInput)` - /// if the `Reader` is at the end of the input. - #[inline] - pub fn read_byte(&mut self) -> Result { - match self.input.get(self.i) { - Some(b) => { - self.i += 1; // safe from overflow; see Input::from(). - Ok(*b) - }, - None => Err(EndOfInput), - } - } - - /// Skips `num_bytes` of the input, returning the skipped input as an - /// `Input`. - /// - /// Returns `Ok(i)` if there are at least `num_bytes` of input remaining, - /// and `Err(EndOfInput)` otherwise. - #[inline] - pub fn read_bytes(&mut self, num_bytes: usize) -> Result, EndOfInput> { - let new_i = self.i.checked_add(num_bytes).ok_or(EndOfInput)?; - let ret = self - .input - .subslice(self.i..new_i) - .map(|subslice| Input { value: subslice }) - .ok_or(EndOfInput)?; - self.i = new_i; - Ok(ret) - } - - /// Skips the reader to the end of the input, returning the skipped input - /// as an `Input`. - #[inline] - pub fn read_bytes_to_end(&mut self) -> Input<'a> { - let to_skip = self.input.len() - self.i; - self.read_bytes(to_skip).unwrap() - } - - /// Calls `read()` with the given input as a `Reader`. On success, returns a - /// pair `(bytes_read, r)` where `bytes_read` is what `read()` consumed and - /// `r` is `read()`'s return value. - pub fn read_partial(&mut self, read: F) -> Result<(Input<'a>, R), E> - where - F: FnOnce(&mut Reader<'a>) -> Result, - { - let start = self.i; - let r = read(self)?; - let bytes_read = Input { - value: self.input.subslice(start..self.i).unwrap() - }; - Ok((bytes_read, r)) - } - - /// Skips `num_bytes` of the input. - /// - /// Returns `Ok(i)` if there are at least `num_bytes` of input remaining, - /// and `Err(EndOfInput)` otherwise. - #[inline] - pub fn skip(&mut self, num_bytes: usize) -> Result<(), EndOfInput> { - self.read_bytes(num_bytes).map(|_| ()) - } - - /// Skips the reader to the end of the input. - #[inline] - pub fn skip_to_end(&mut self) -> () { let _ = self.read_bytes_to_end(); } -} - -/// The error type used to indicate the end of the input was reached before the -/// operation could be completed. -#[derive(Clone, Copy, Debug, Eq, PartialEq)] -pub struct EndOfInput; - -mod no_panic { - use core; - - /// A wrapper around a slice that exposes no functions that can panic. - #[derive(Clone, Copy, Debug, Eq, PartialEq)] - pub struct Slice<'a> { - bytes: &'a [u8], - } - - impl<'a> Slice<'a> { - #[inline] - pub const fn new(bytes: &'a [u8]) -> Self { Self { bytes } } - - #[inline] - pub fn get(&self, i: usize) -> Option<&u8> { self.bytes.get(i) } - - #[inline] - pub fn subslice(&self, r: core::ops::Range) -> Option { - self.bytes.get(r).map(|bytes| Self { bytes }) - } - - #[inline] - pub fn is_empty(&self) -> bool { self.bytes.is_empty() } - - #[inline] - pub fn len(&self) -> usize { self.bytes.len() } - - #[inline] - pub fn as_slice_less_safe(&self) -> &'a [u8] { self.bytes } - } - -} // mod no_panic diff -Nru temporalio-1.3.0/vendor/untrusted/tests/tests.rs temporalio-1.3.0/vendor/untrusted/tests/tests.rs --- temporalio-1.3.0/vendor/untrusted/tests/tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/untrusted/tests/tests.rs 2023-10-30 19:40:00.000000000 +0000 @@ -13,7 +13,40 @@ // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #[test] -fn test_input_from() { let _ = untrusted::Input::from(b"foo"); } +fn test_debug() { + const INPUTS: &[&[u8]] = &[b"", b"foo"]; + for input in INPUTS { + let input = untrusted::Input::from(input); + assert_eq!(format!("{:?}", &input), "Input"); + input + .read_all(untrusted::EndOfInput, |r| { + assert_eq!(format!("{:?}", r), "Reader"); + r.skip_to_end(); + assert_eq!(format!("{:?}", r), "Reader"); + Ok(()) + }) + .unwrap(); + } +} + +#[test] +fn test_input_clone_and_copy() { + const INPUTS: &[&[u8]] = &[b"", b"a", b"foo"]; + for input in INPUTS { + let input = untrusted::Input::from(input); + let copy = input; + assert_eq!(input.as_slice_less_safe(), copy.as_slice_less_safe()); + assert_eq!( + input.as_slice_less_safe(), + input.clone().as_slice_less_safe() + ); + } +} + +#[test] +fn test_input_from() { + let _ = untrusted::Input::from(b"foo"); +} #[test] fn test_input_is_empty() { @@ -65,7 +98,7 @@ let input = untrusted::Input::from(&[]); let r = input.read_all(untrusted::EndOfInput, |input| { let r = input.read_bytes(1); - assert_eq!(r, Err(untrusted::EndOfInput)); + assert_eq!(r.unwrap_err(), untrusted::EndOfInput); Ok(input.read_bytes_to_end()) }); let _ = r; // "Use" r. The value of `r` is undefined here. @@ -76,7 +109,10 @@ // Assume that a pointer can address any point in the address space, and // infer that this implies that a byte slice will never be // `core::usize::MAX` bytes long. - assert_eq!(core::mem::size_of::<*const u8>(), core::mem::size_of::()); + assert_eq!( + core::mem::size_of::<*const u8>(), + core::mem::size_of::() + ); } #[test] @@ -95,4 +131,4 @@ fn test_from_slice() { let slice: &[u8] = &[0u8]; let _x: untrusted::Input = slice.into(); -} \ No newline at end of file +} diff -Nru temporalio-1.3.0/vendor/urlencoding/benches/bench.rs temporalio-1.3.0/vendor/urlencoding/benches/bench.rs --- temporalio-1.3.0/vendor/urlencoding/benches/bench.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/urlencoding/benches/bench.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,65 @@ +#![feature(test)] +extern crate test; + +use urlencoding::*; +use test::Bencher; + +#[bench] +fn bench_enc_nop_short(b: &mut Bencher) { + b.iter(|| { + encode("hello") + }) +} +#[bench] +fn bench_enc_nop_long(b: &mut Bencher) { + b.iter(|| { + encode("Lorem-ipsum-dolor-sit-amet-consectetur-adipisicing-elit-sed-do-eiusmod-tempor-incididunt-ut-labore-et-dolore-magna-aliqua.Ut-enim-ad-minim-veniam-quis-nostrud\ + -exercitation-ullamco-laboris-nisi-ut-aliquip-ex-ea-commodo-consequat.Duis-aute-irure-dolor-in-reprehenderit-in-voluptate-velit-esse-cillum-dolore-eu-fugiat-nulla\ + -pariatur.Excepteur-sint-occaecat-cupidatat-non-proident-sunt-in-culpa-qui-officia-deserunt-mollit-anim-id-est-laborum.") + }) +} + +#[bench] +fn bench_dec_nop_short(b: &mut Bencher) { + b.iter(|| { + decode("hello") + }) +} +#[bench] +fn bench_dec_nop_long(b: &mut Bencher) { + b.iter(|| { + decode("Lorem-ipsum-dolor-sit-amet-consectetur-adipisicing-elit-sed-do-eiusmod-tempor-incididunt-ut-labore-et-dolore-magna-aliqua.Ut-enim-ad-minim-veniam-quis-nostrud\ + -exercitation-ullamco-laboris-nisi-ut-aliquip-ex-ea-commodo-consequat.Duis-aute-irure-dolor-in-reprehenderit-in-voluptate-velit-esse-cillum-dolore-eu-fugiat-nulla\ + -pariatur.Excepteur-sint-occaecat-cupidatat-non-proident-sunt-in-culpa-qui-officia-deserunt-mollit-anim-id-est-laborum.") + }) +} + +#[bench] +fn bench_enc_chg_short(b: &mut Bencher) { + b.iter(|| { + encode("he!!o") + }) +} +#[bench] +fn bench_enc_chg_long(b: &mut Bencher) { + b.iter(|| { + encode("Lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.Ut enim ad minim veniam quis nostrud\ + exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla\ + pariatur. Excepteur sint occaecat cupidatat non proident sunt in culpa qui officia deserunt mollit anim id est laborum.") + }) +} + +#[bench] +fn bench_dec_chg_short(b: &mut Bencher) { + b.iter(|| { + decode("he%26%26o") + }) +} +#[bench] +fn bench_dec_chg_long(b: &mut Bencher) { + b.iter(|| { + decode("Lorem%20ipsum%20dolor%20sit%20amet%20consectetur%20adipisicing%20elit%20sed%20do%20eiusmod%20tempor%20incididunt%20ut%20labore%20et%20dolore%20magna%20aliqua.Ut%20enim%20ad%20minim%20veniam%20quis%20nostrud\ + %20exercitation%20ullamco%20laboris%20nisi%20ut%20aliquip%20ex%20ea%20commodo%20consequat.Duis%20aute%20irure%20dolor%20in%20reprehenderit%20in%20voluptate%20velit%20esse%20cillum%20dolore%20eu%20fugiat%20nulla\ + %20pariatur.Excepteur%20sint%20occaecat%20cupidatat%20non%20proident%20sunt%20in%20culpa%20qui%20officia%20deserunt%20mollit%20anim%20id%20est%20laborum.") + }) +} diff -Nru temporalio-1.3.0/vendor/urlencoding/.cargo-checksum.json temporalio-1.3.0/vendor/urlencoding/.cargo-checksum.json --- temporalio-1.3.0/vendor/urlencoding/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/urlencoding/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +{"files":{"Cargo.toml":"7336fe00c121d144202b7e1787fbed8fed38898b160b94bba3e82ab90d31e2a9","LICENSE":"5a952e4a62a3022a7f39e9f0eb8d0638addd3efffb3f4092890923668152296e","README.md":"aef1306cb06344947dfb4e5e0d980303f31500fe95c7526c8bd3247f9cfcc78f","benches/bench.rs":"20a525b93dbe07cec14c29ded08af5df5b73655d5a244d42271a4547a59f90ab","src/dec.rs":"27f7a50d426fd295e88e440358e084bb1b2d54283c6cbbbc99ddce7383bb37a5","src/enc.rs":"50242a4f6b63deb98e016b6a6ebc122f519c4bead7c2c36ccce24d2268541ec8","src/lib.rs":"8be9baf406ede16922deb1947601a6e5405579521fa74fea41d1d3095dfe13de"},"package":"daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/urlencoding/Cargo.toml temporalio-1.3.0/vendor/urlencoding/Cargo.toml --- temporalio-1.3.0/vendor/urlencoding/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/urlencoding/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,41 @@ +# 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 = "urlencoding" +version = "2.1.3" +authors = [ + "Kornel ", + "Bertram Truong ", +] +description = "A Rust library for doing URL percentage encoding." +homepage = "https://lib.rs/urlencoding" +readme = "README.md" +keywords = [ + "url", + "percent", + "escape", + "urlencode", + "urldecode", +] +categories = [ + "encoding", + "web-programming", +] +license = "MIT" +repository = "https://github.com/kornelski/rust_urlencoding" + +[package.metadata.docs.rs] +targets = ["x86_64-unknown-linux-gnu"] + +[badges.maintenance] +status = "looking-for-maintainer" diff -Nru temporalio-1.3.0/vendor/urlencoding/LICENSE temporalio-1.3.0/vendor/urlencoding/LICENSE --- temporalio-1.3.0/vendor/urlencoding/LICENSE 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/urlencoding/LICENSE 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,20 @@ +© 2016 Bertram Truong +© 2021 Kornel LesiÅ„ski + +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 -Nru temporalio-1.3.0/vendor/urlencoding/README.md temporalio-1.3.0/vendor/urlencoding/README.md --- temporalio-1.3.0/vendor/urlencoding/README.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/urlencoding/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,44 @@ +# urlencoding + +[![Latest Version](https://img.shields.io/crates/v/urlencoding.svg)](https://lib.rs/crates/urlencoding) + +A tiny Rust library for doing URL percentage encoding and decoding. It percent-encodes everything except alphanumerics and `-`, `_`, `.`, `~`. + +When decoding `+` is not treated as a space. Error recovery from incomplete percent-escapes follows the [WHATWG URL standard](https://url.spec.whatwg.org/). + +## Usage + +To encode a string, do the following: + +```rust +use urlencoding::encode; + +let encoded = encode("This string will be URL encoded."); +println!("{}", encoded); +// This%20string%20will%20be%20URL%20encoded. +``` + +To decode a string, it's only slightly different: + +```rust +use urlencoding::decode; + +let decoded = decode("%F0%9F%91%BE%20Exterminate%21")?; +println!("{}", decoded); +// 👾 Exterminate! +``` + +To decode allowing arbitrary bytes and invalid UTF-8: + +```rust +use urlencoding::decode_binary; + +let binary = decode_binary(b"%F1%F2%F3%C0%C1%C2"); +let decoded = String::from_utf8_lossy(&binary); +``` + +This library returns [`Cow`](https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html) to avoid allocating when decoding/encoding is not needed. Call `.into_owned()` on the `Cow` to get a `Vec` or `String`. + +## License + +This project is licensed under the MIT license. For more information see the `LICENSE` file. diff -Nru temporalio-1.3.0/vendor/urlencoding/src/dec.rs temporalio-1.3.0/vendor/urlencoding/src/dec.rs --- temporalio-1.3.0/vendor/urlencoding/src/dec.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/urlencoding/src/dec.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,109 @@ +use std::borrow::Cow; +use std::string::FromUtf8Error; + +#[inline] +pub(crate) fn from_hex_digit(digit: u8) -> Option { + match digit { + b'0'..=b'9' => Some(digit - b'0'), + b'A'..=b'F' => Some(digit - b'A' + 10), + b'a'..=b'f' => Some(digit - b'a' + 10), + _ => None, + } +} + +/// Decode percent-encoded string assuming UTF-8 encoding. +/// +/// If you need a `String`, call `.into_owned()` (not `.to_owned()`). +/// +/// Unencoded `+` is preserved literally, and _not_ changed to a space. +pub fn decode(data: &str) -> Result, FromUtf8Error> { + match decode_binary(data.as_bytes()) { + Cow::Borrowed(_) => Ok(Cow::Borrowed(data)), + Cow::Owned(s) => Ok(Cow::Owned(String::from_utf8(s)?)), + } +} + +/// Decode percent-encoded string as binary data, in any encoding. +/// +/// Unencoded `+` is preserved literally, and _not_ changed to a space. +pub fn decode_binary(data: &[u8]) -> Cow<[u8]> { + let offset = data.iter().take_while(|&&c| c != b'%').count(); + if offset >= data.len() { + return Cow::Borrowed(data) + } + + let mut decoded: Vec = Vec::with_capacity(data.len()); + let mut out = NeverRealloc(&mut decoded); + + let (ascii, mut data) = data.split_at(offset); + out.extend_from_slice(ascii); + + loop { + let mut parts = data.splitn(2, |&c| c == b'%'); + // first the decoded non-% part + let non_escaped_part = parts.next().unwrap(); + let rest = parts.next(); + if rest.is_none() && out.0.is_empty() { + // if empty there were no '%' in the string + return data.into(); + } + out.extend_from_slice(non_escaped_part); + + // then decode one %xx + match rest { + Some(rest) => match rest.get(0..2) { + Some(&[first, second]) => match from_hex_digit(first) { + Some(first_val) => match from_hex_digit(second) { + Some(second_val) => { + out.push((first_val << 4) | second_val); + data = &rest[2..]; + }, + None => { + out.extend_from_slice(&[b'%', first]); + data = &rest[1..]; + }, + }, + None => { + out.push(b'%'); + data = rest; + }, + }, + _ => { + // too short + out.push(b'%'); + out.extend_from_slice(rest); + break; + }, + }, + None => break, + } + } + Cow::Owned(decoded) +} + + +struct NeverRealloc<'a, T>(pub &'a mut Vec); + +impl NeverRealloc<'_, T> { + #[inline] + pub fn push(&mut self, val: T) { + // these branches only exist to remove redundant reallocation code + // (the capacity is always sufficient) + if self.0.len() != self.0.capacity() { + self.0.push(val); + } + } + #[inline] + pub fn extend_from_slice(&mut self, val: &[T]) where T: Clone { + if self.0.capacity() - self.0.len() >= val.len() { + self.0.extend_from_slice(val); + } + } +} + +#[test] +fn dec_borrows() { + assert!(matches!(decode("hello"), Ok(Cow::Borrowed("hello")))); + assert!(matches!(decode("hello%20"), Ok(Cow::Owned(s)) if s == "hello ")); + assert!(matches!(decode("%20hello"), Ok(Cow::Owned(s)) if s == " hello")); +} diff -Nru temporalio-1.3.0/vendor/urlencoding/src/enc.rs temporalio-1.3.0/vendor/urlencoding/src/enc.rs --- temporalio-1.3.0/vendor/urlencoding/src/enc.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/urlencoding/src/enc.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,139 @@ +use std::borrow::Cow; +use std::fmt; +use std::io; +use std::str; + +/// Wrapper type that implements `Display`. Encodes on the fly, without allocating. +/// Percent-encodes every byte except alphanumerics and `-`, `_`, `.`, `~`. Assumes UTF-8 encoding. +/// +/// ```rust +/// use urlencoding::Encoded; +/// format!("{}", Encoded("hello!")); +/// ``` +#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash, Ord, PartialOrd)] +#[repr(transparent)] +pub struct Encoded(pub Str); + +impl> Encoded { + /// Long way of writing `Encoded(data)` + /// + /// Takes any string-like type or a slice of bytes, either owned or borrowed. + #[inline(always)] + pub fn new(string: Str) -> Self { + Self(string) + } + + #[inline(always)] + pub fn to_str(&self) -> Cow { + encode_binary(self.0.as_ref()) + } + + /// Perform urlencoding to a string + #[inline] + #[allow(clippy::inherent_to_string_shadow_display)] + pub fn to_string(&self) -> String { + self.to_str().into_owned() + } + + /// Perform urlencoding into a writer + #[inline] + pub fn write(&self, writer: &mut W) -> io::Result<()> { + encode_into(self.0.as_ref(), false, |s| writer.write_all(s.as_bytes()))?; + Ok(()) + } + + /// Perform urlencoding into a string + #[inline] + pub fn append_to(&self, string: &mut String) { + append_string(self.0.as_ref(), string, false); + } +} + +impl<'a> Encoded<&'a str> { + /// Same as new, but hints a more specific type, so you can avoid errors about `AsRef<[u8]>` not implemented + /// on references-to-references. + #[inline(always)] + pub fn str(string: &'a str) -> Self { + Self(string) + } +} + +impl> fmt::Display for Encoded { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + encode_into(self.0.as_ref(), false, |s| f.write_str(s))?; + Ok(()) + } +} + +/// Percent-encodes every byte except alphanumerics and `-`, `_`, `.`, `~`. Assumes UTF-8 encoding. +/// +/// Call `.into_owned()` if you need a `String` +#[inline(always)] +pub fn encode(data: &str) -> Cow { + encode_binary(data.as_bytes()) +} + +/// Percent-encodes every byte except alphanumerics and `-`, `_`, `.`, `~`. +#[inline] +pub fn encode_binary(data: &[u8]) -> Cow { + // add maybe extra capacity, but try not to exceed allocator's bucket size + let mut escaped = String::with_capacity(data.len() | 15); + let unmodified = append_string(data, &mut escaped, true); + if unmodified { + return Cow::Borrowed(unsafe { + // encode_into has checked it's ASCII + str::from_utf8_unchecked(data) + }); + } + Cow::Owned(escaped) +} + +fn append_string(data: &[u8], escaped: &mut String, may_skip: bool) -> bool { + encode_into(data, may_skip, |s| { + escaped.push_str(s); + Ok::<_, std::convert::Infallible>(()) + }).unwrap() +} + +fn encode_into(mut data: &[u8], may_skip_write: bool, mut push_str: impl FnMut(&str) -> Result<(), E>) -> Result { + let mut pushed = false; + loop { + // Fast path to skip over safe chars at the beginning of the remaining string + let ascii_len = data.iter() + .take_while(|&&c| matches!(c, b'0'..=b'9' | b'A'..=b'Z' | b'a'..=b'z' | b'-' | b'.' | b'_' | b'~')).count(); + + let (safe, rest) = if ascii_len >= data.len() { + if !pushed && may_skip_write { + return Ok(true); + } + (data, &[][..]) // redundatnt to optimize out a panic in split_at + } else { + data.split_at(ascii_len) + }; + pushed = true; + if !safe.is_empty() { + push_str(unsafe { str::from_utf8_unchecked(safe) })?; + } + if rest.is_empty() { + break; + } + + match rest.split_first() { + Some((byte, rest)) => { + let enc = &[b'%', to_hex_digit(byte >> 4), to_hex_digit(byte & 15)]; + push_str(unsafe { str::from_utf8_unchecked(enc) })?; + data = rest; + } + None => break, + }; + } + Ok(false) +} + +#[inline] +fn to_hex_digit(digit: u8) -> u8 { + match digit { + 0..=9 => b'0' + digit, + 10..=255 => b'A' - 10 + digit, + } +} diff -Nru temporalio-1.3.0/vendor/urlencoding/src/lib.rs temporalio-1.3.0/vendor/urlencoding/src/lib.rs --- temporalio-1.3.0/vendor/urlencoding/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/urlencoding/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,133 @@ +//! To encode a string, do the following: +//! +//! ```rust +//! use urlencoding::encode; +//! +//! let encoded = encode("This string will be URL encoded."); +//! println!("{}", encoded); +//! // This%20string%20will%20be%20URL%20encoded. +//! ``` +//! +//! To decode a string, it's only slightly different: +//! +//! ```rust +//! use urlencoding::decode; +//! +//! let decoded = decode("%F0%9F%91%BE%20Exterminate%21").expect("UTF-8"); +//! println!("{}", decoded); +//! // 👾 Exterminate! +//! ``` +//! +//! To decode allowing arbitrary bytes and invalid UTF-8: +//! +//! ```rust +//! use urlencoding::decode_binary; +//! +//! let binary = decode_binary(b"%F1%F2%F3%C0%C1%C2"); +//! let decoded = String::from_utf8_lossy(&binary); +//! ``` +//! +//! This library returns [`Cow`](https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html) to avoid allocating when decoding/encoding is not needed. Call `.into_owned()` on the `Cow` to get a `Vec` or `String`. + +mod enc; +pub use enc::encode; +pub use enc::encode_binary; +pub use enc::Encoded; + +mod dec; +pub use dec::decode; +pub use dec::decode_binary; + +#[cfg(test)] +mod tests { + use super::*; + use crate::dec::from_hex_digit; + + #[test] + fn it_encodes_successfully() { + let expected = "this%20that"; + assert_eq!(expected, encode("this that")); + } + + #[test] + fn it_encodes_successfully_emoji() { + let emoji_string = "👾 Exterminate!"; + let expected = "%F0%9F%91%BE%20Exterminate%21"; + assert_eq!(expected, encode(emoji_string)); + } + + #[test] + fn it_decodes_successfully() { + let expected = String::from("this that"); + let encoded = "this%20that"; + assert_eq!(expected, decode(encoded).unwrap()); + } + + #[test] + fn it_decodes_successfully_emoji() { + let expected = String::from("👾 Exterminate!"); + let encoded = "%F0%9F%91%BE%20Exterminate%21"; + assert_eq!(expected, decode(encoded).unwrap()); + } + + #[test] + fn it_decodes_unsuccessfully_emoji() { + let bad_encoded_string = "👾 Exterminate!"; + + assert_eq!(bad_encoded_string, decode(bad_encoded_string).unwrap()); + } + + + #[test] + fn misc() { + assert_eq!(3, from_hex_digit(b'3').unwrap()); + assert_eq!(10, from_hex_digit(b'a').unwrap()); + assert_eq!(15, from_hex_digit(b'F').unwrap()); + assert_eq!(None, from_hex_digit(b'G')); + assert_eq!(None, from_hex_digit(9)); + + assert_eq!("pureascii", encode("pureascii")); + assert_eq!("pureascii", decode("pureascii").unwrap()); + assert_eq!("", encode("")); + assert_eq!("", decode("").unwrap()); + assert_eq!("%26a%25b%21c.d%3Fe", encode("&a%b!c.d?e")); + assert_eq!("%00", encode("\0")); + assert_eq!("%00x", encode("\0x")); + assert_eq!("x%00", encode("x\0")); + assert_eq!("x%00x", encode("x\0x")); + assert_eq!("aa%00%00bb", encode("aa\0\0bb")); + assert_eq!("\0", decode("\0").unwrap()); + assert!(decode("%F0%0F%91%BE%20Hello%21").is_err()); + assert_eq!("this that", decode("this%20that").unwrap()); + assert_eq!("this that%", decode("this%20that%").unwrap()); + assert_eq!("this that%2", decode("this%20that%2").unwrap()); + assert_eq!("this that%%", decode("this%20that%%").unwrap()); + assert_eq!("this that%2%", decode("this%20that%2%").unwrap()); + assert_eq!("this%2that", decode("this%2that").unwrap()); + assert_eq!("this%%2that", decode("this%%2that").unwrap()); + assert_eq!("this%2x&that", decode("this%2x%26that").unwrap()); + // assert_eq!("this%2&that", decode("this%2%26that").unwrap()); + } + + #[test] + fn lazy_writer() { + let mut s = "he".to_string(); + Encoded("llo").append_to(&mut s); + assert_eq!("hello", s); + + assert_eq!("hello", Encoded("hello").to_string()); + assert_eq!("hello", format!("{}", Encoded("hello"))); + assert_eq!("hello", Encoded("hello").to_str()); + assert!(matches!(Encoded("hello").to_str(), std::borrow::Cow::Borrowed(_))); + } + + #[test] + fn whatwg_examples() { + assert_eq!(*decode_binary(b"%25%s%1G"), b"%%s%1G"[..]); + assert_eq!(*decode_binary("‽%25%2E".as_bytes()), b"\xE2\x80\xBD\x25\x2E"[..]); + assert_eq!(encode("≡"), "%E2%89%A1"); + assert_eq!(encode("‽"), "%E2%80%BD"); + assert_eq!(encode("Say what‽"), "Say%20what%E2%80%BD"); + } + +} diff -Nru temporalio-1.3.0/vendor/uuid/.cargo-checksum.json temporalio-1.3.0/vendor/uuid/.cargo-checksum.json --- temporalio-1.3.0/vendor/uuid/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/uuid/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CODE_OF_CONDUCT.md":"b360d72c37ca9eee599c13d4f7f4b95707c6414634e67befc6a63c1d430d299c","CONTRIBUTING.md":"be72ea4c22c397964f6f44b10562c4ad485dc1cc24b3dcca951e49907439d9ac","COPYRIGHT":"b4b2c0de2a05de3372d5c828128413ce82bb7dba2272487b7729f09cc3d3519d","Cargo.lock":"78a27ca451134a94db6e99f459afcd28f5d51a8294b4523404d510423363800d","Cargo.toml":"f108fdbe6afd7eb86f9fb1775c47952868ba4016dc0b7768f426d86a38747f78","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"436bc5a105d8e57dcd8778730f3754f7bf39c14d2f530e4cde4bd2d17a83ec3d","README.md":"397e96b209aea3cc23262a69f13d2194200afd12d71d555719ddfe348265e16a","SECURITY.md":"64b91c6b5c428c9623d99a825c7e513965de3695bfa0105a348deaa8c678d767","benches/format_str.rs":"f1320973392ce1cd0f0988747c6b4253d3b4ce34cf742dd558efad86f88a81e5","benches/parse_str.rs":"4e9e2f881c609ccdce502a6490e6b5f06cd8954e44f8a1b98d6c0e22f53a15d5","benches/v4.rs":"f59d7180882e12cb09761d941d7bece9690a97f7f29181e2692b38012b6363d7","examples/random_uuid.rs":"9f2282adaa253c803ca58b1ce1c50eb61aaf904a47aec10b777963a6f5ecf9ff","examples/sortable_uuid.rs":"bff06efa3bf3ced72dd4b27d470417bba4887f5110d79cda52688329aa922cea","examples/uuid_macro.rs":"75178c9756da545f94e31f9d322e9a97d8f76a08326f26f2d014088cb42e4ebf","examples/windows_guid.rs":"2e2a21779aec9772a7f0c9ec475b5dc44835640cb104352134986e809f0f7f59","src/builder.rs":"3b3626a94686e8d9a6ffaf2ecfcc3a8710ca93af93f73fba892286744364e919","src/error.rs":"621799694111aab9d6e570290f4d1b341fe6be58d2b3425fa7891ada7575cab7","src/external.rs":"0f85a2ab77744b692c7a87cda1a92663678994c777fdfb036aa4a2a1fd1b7419","src/external/arbitrary_support.rs":"7e7fbcc4b8af5878b71858a1f5fa31e85d84fc2fd159614f8d450ba1fe06ac28","src/external/borsh_support.rs":"8ce22418e304ee6aab4b6f30ddaaffa6f8f4b6146e1435e8623718a87cccb3b3","src/external/serde_support.rs":"1263176b9916bf61fe3ab32140c22e2e757ea29ffff6f5459b1b720acbe2ed9d","src/external/slog_support.rs":"53c6251e424bdc9b6ba35defb4c723d4d34d44053badbf98e1c7c3e7c83fbb5e","src/fmt.rs":"d66a735d72a4c94629dbd18327e7b9c31aa26c0f0017ed67787b3291413f4f8f","src/lib.rs":"36307d3822a07955531b5d0578a906e4a579fdcdea12d51f4a8666294abb5b27","src/macros.rs":"faa4e32837d38107a62402f2119726e007d4acde9abc2177686b25dec2b68039","src/md5.rs":"227a753edc428499108e6f25074bbeb6a80d55f52e18c717a1d88831ae77066a","src/parser.rs":"06c4bfdd6b74db9469a516f7015d328b1f1bd2750f609423c47e308bf98e8706","src/rng.rs":"b9f69610560aa5b5d9b2eaa16fb2239515bd163da126cf5c392e5fb9b0296c3e","src/sha1.rs":"e1a9657e11f1ed1ede33c0655f9c2641059b7c24f17be4ac425c930cc216e019","src/timestamp.rs":"69966d6bf19820a0513cfd75b0163804842e8444a43b64665166a7366498f448","src/v1.rs":"d56d323df879d6526fa3cd5ff329b8ea1a306cd880474ad4b2e017659b7662ec","src/v3.rs":"b7d605c4d2f56a9e57bfe779ef2488fa612c7cb28568f68252093f48ac2edef4","src/v4.rs":"4f06567460871348df0ff2825e9faad9d950a9337e409cb2b568c86118addb97","src/v5.rs":"64e3feb673c8411954f930188e756803b90b57d13ec36652cd2c669e81654333","src/v6.rs":"9f7e41470629c4f011625896421bfcc4e6eedc85e0959af0808a5ac34381ab84","src/v7.rs":"e46924c0c9c9b1ac6746180d78cd3531920fbd8379f1629abdcec7914bae36c8","src/v8.rs":"8705405fef52e4706c7cf99f7ed231dde733b7cd08ced79be9e29c949be2280f","tests/macros.rs":"5dc3b4a3f0fdcedb47f680f0534d4074bab3a4b26257d8a4f89e9eaad3e6bca7","tests/ui/compile_fail/invalid_parse.rs":"eb81a6a1be99bcce58afa15e2cacab3e7d64f628d3eb31897d2a13feffb2032f","tests/ui/compile_fail/invalid_parse.stderr":"a0d2f080cf64a965028b2044f775d4f75fc541f560ec75baf783231590cd429e","tests/ui/compile_pass/renamed.rs":"f2bd73151e605035051d3aaf572133861457e6d199d0ff7ede748fc6c0f44c7b","tests/ui/compile_pass/valid.rs":"a0cfeeae38dc78151ecc21ad801e56d61993a7e393e0943a6b06f2811e004135"},"package":"d023da39d1fde5a8a3fe1f3e01ca9632ada0a63e9797de55a879d6e2236277be"} \ No newline at end of file +{"files":{"CODE_OF_CONDUCT.md":"b360d72c37ca9eee599c13d4f7f4b95707c6414634e67befc6a63c1d430d299c","CONTRIBUTING.md":"be72ea4c22c397964f6f44b10562c4ad485dc1cc24b3dcca951e49907439d9ac","COPYRIGHT":"b4b2c0de2a05de3372d5c828128413ce82bb7dba2272487b7729f09cc3d3519d","Cargo.lock":"a7c3dd7428600ba86c28d4a6888f766b236ebef0bbe7dd52c2eca9f15a96ccb5","Cargo.toml":"562655f2569e03da35fabd2a79c6f65339a3416ddb8918e060598c79e545b93c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"436bc5a105d8e57dcd8778730f3754f7bf39c14d2f530e4cde4bd2d17a83ec3d","README.md":"1f4d9b619fab32f9ebefc9ae2372f21f5be4d802bdbfda1c5ecc72134d618730","SECURITY.md":"64b91c6b5c428c9623d99a825c7e513965de3695bfa0105a348deaa8c678d767","benches/format_str.rs":"f1320973392ce1cd0f0988747c6b4253d3b4ce34cf742dd558efad86f88a81e5","benches/parse_str.rs":"4e9e2f881c609ccdce502a6490e6b5f06cd8954e44f8a1b98d6c0e22f53a15d5","benches/v4.rs":"f59d7180882e12cb09761d941d7bece9690a97f7f29181e2692b38012b6363d7","examples/random_uuid.rs":"11c4cb0c9b04bb5512a5b34be50ae6a3cbe25d4a1052443f9b6a55484e0962e5","examples/sortable_uuid.rs":"290cfb07320ff8c966df30cbd505b62b491d43c0290e9db606d2850bf916da1c","examples/uuid_macro.rs":"75178c9756da545f94e31f9d322e9a97d8f76a08326f26f2d014088cb42e4ebf","examples/windows_guid.rs":"2e2a21779aec9772a7f0c9ec475b5dc44835640cb104352134986e809f0f7f59","src/builder.rs":"3207748200742242e54a0c4028d0a3549f03757acc52d9b552e8c991b8bc5a02","src/error.rs":"621799694111aab9d6e570290f4d1b341fe6be58d2b3425fa7891ada7575cab7","src/external.rs":"0f85a2ab77744b692c7a87cda1a92663678994c777fdfb036aa4a2a1fd1b7419","src/external/arbitrary_support.rs":"7e7fbcc4b8af5878b71858a1f5fa31e85d84fc2fd159614f8d450ba1fe06ac28","src/external/borsh_support.rs":"8ce22418e304ee6aab4b6f30ddaaffa6f8f4b6146e1435e8623718a87cccb3b3","src/external/serde_support.rs":"1263176b9916bf61fe3ab32140c22e2e757ea29ffff6f5459b1b720acbe2ed9d","src/external/slog_support.rs":"53c6251e424bdc9b6ba35defb4c723d4d34d44053badbf98e1c7c3e7c83fbb5e","src/fmt.rs":"d66a735d72a4c94629dbd18327e7b9c31aa26c0f0017ed67787b3291413f4f8f","src/lib.rs":"d77c1180d75c240447ba53308ac6b3ac8ce9d13092fa3d4147d95dbeceb57a17","src/macros.rs":"e80c03a203da5d0ef5172a7c7aae1510af8c2b6830fda2dc82292a75dce60dc3","src/md5.rs":"227a753edc428499108e6f25074bbeb6a80d55f52e18c717a1d88831ae77066a","src/parser.rs":"06c4bfdd6b74db9469a516f7015d328b1f1bd2750f609423c47e308bf98e8706","src/rng.rs":"b9f69610560aa5b5d9b2eaa16fb2239515bd163da126cf5c392e5fb9b0296c3e","src/sha1.rs":"e1a9657e11f1ed1ede33c0655f9c2641059b7c24f17be4ac425c930cc216e019","src/timestamp.rs":"69966d6bf19820a0513cfd75b0163804842e8444a43b64665166a7366498f448","src/v1.rs":"d56d323df879d6526fa3cd5ff329b8ea1a306cd880474ad4b2e017659b7662ec","src/v3.rs":"b7d605c4d2f56a9e57bfe779ef2488fa612c7cb28568f68252093f48ac2edef4","src/v4.rs":"4f06567460871348df0ff2825e9faad9d950a9337e409cb2b568c86118addb97","src/v5.rs":"64e3feb673c8411954f930188e756803b90b57d13ec36652cd2c669e81654333","src/v6.rs":"9f7e41470629c4f011625896421bfcc4e6eedc85e0959af0808a5ac34381ab84","src/v7.rs":"e46924c0c9c9b1ac6746180d78cd3531920fbd8379f1629abdcec7914bae36c8","src/v8.rs":"8705405fef52e4706c7cf99f7ed231dde733b7cd08ced79be9e29c949be2280f","tests/macros.rs":"5dc3b4a3f0fdcedb47f680f0534d4074bab3a4b26257d8a4f89e9eaad3e6bca7","tests/ui/compile_fail/invalid_parse.rs":"eb81a6a1be99bcce58afa15e2cacab3e7d64f628d3eb31897d2a13feffb2032f","tests/ui/compile_fail/invalid_parse.stderr":"a0d2f080cf64a965028b2044f775d4f75fc541f560ec75baf783231590cd429e","tests/ui/compile_pass/hygiene.rs":"4cab37cb46a3e7b97ee1ca35d6e76f137f5a2d4e6159e33f16f469ad8e285e83","tests/ui/compile_pass/renamed.rs":"f2bd73151e605035051d3aaf572133861457e6d199d0ff7ede748fc6c0f44c7b","tests/ui/compile_pass/valid.rs":"a0cfeeae38dc78151ecc21ad801e56d61993a7e393e0943a6b06f2811e004135"},"package":"79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/uuid/Cargo.lock temporalio-1.3.0/vendor/uuid/Cargo.lock --- temporalio-1.3.0/vendor/uuid/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/uuid/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -27,9 +27,9 @@ [[package]] name = "basic-toml" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c0de75129aa8d0cceaf750b89013f0e08804d6ec61416da787b35ad0d7cddf1" +checksum = "7bfc506e7a2370ec239e1d072507b2a80c833083699d3c6fa176fbb4de8448c6" dependencies = [ "serde", ] @@ -185,9 +185,9 @@ [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "js-sys" @@ -242,18 +242,18 @@ [[package]] name = "proc-macro2" -version = "1.0.63" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.28" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "5fe8a65d69dd0808184ebb5f836ab526bb259db23c657efa38711b1072ee47f0" dependencies = [ "proc-macro2", ] @@ -290,15 +290,15 @@ [[package]] name = "rustversion" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "scoped-tls" @@ -308,26 +308,26 @@ [[package]] name = "serde" -version = "1.0.164" +version = "1.0.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9" [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.26", ] [[package]] name = "serde_json" -version = "1.0.99" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3" +checksum = "d03b412469450d4404fe8499a268edd7f8b79fecb074b0d812ad64ca21f4031b" dependencies = [ "itoa", "ryu", @@ -336,9 +336,9 @@ [[package]] name = "serde_test" -version = "1.0.164" +version = "1.0.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "797c38160e2546a56e1e3439496439597e938669673ffd8af02a12f070da648f" +checksum = "b6480a2f4e1449ec9757ea143362ad5cea79bc7f1cb7711c06e1c5d03b6b5a3a" dependencies = [ "serde", ] @@ -368,9 +368,9 @@ [[package]] name = "syn" -version = "2.0.22" +version = "2.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efbeae7acf4eabd6bcdcbd11c92f45231ddda7539edc7806bd1a04a03b24616" +checksum = "45c3457aacde3c65315de5031ec191ce46604304d2446e803d71ade03308d970" dependencies = [ "proc-macro2", "quote", @@ -397,9 +397,9 @@ [[package]] name = "trybuild" -version = "1.0.80" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501dbdbb99861e4ab6b60eb6a7493956a9defb644fd034bc4a5ef27c693c8a3a" +checksum = "04366e99ff743345622cd00af2af01d711dc2d1ef59250d7347698d21b546729" dependencies = [ "basic-toml", "glob", @@ -418,13 +418,13 @@ [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "uuid" -version = "1.4.0" +version = "1.4.1" dependencies = [ "arbitrary", "atomic", @@ -450,13 +450,13 @@ [[package]] name = "uuid-macro-internal" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8614dda80b9075fbca36bc31b58d1447715b1236af98dee21db521c47a0cc2c0" +checksum = "f7e1ba1f333bd65ce3c9f27de592fcbc256dafe3af2717f56d7c87761fbaccf4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.26", ] [[package]] @@ -492,7 +492,7 @@ "once_cell", "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.26", "wasm-bindgen-shared", ] @@ -526,7 +526,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.26", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -613,9 +613,9 @@ [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", diff -Nru temporalio-1.3.0/vendor/uuid/Cargo.toml temporalio-1.3.0/vendor/uuid/Cargo.toml --- temporalio-1.3.0/vendor/uuid/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/uuid/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2018" name = "uuid" -version = "1.4.0" +version = "1.4.1" authors = [ "Ashley Mannix", "Christopher Armstrong", @@ -120,7 +120,7 @@ optional = true [dependencies.uuid-macro-internal] -version = "1.4.0" +version = "1.4.1" optional = true package = "uuid-macro-internal" diff -Nru temporalio-1.3.0/vendor/uuid/examples/random_uuid.rs temporalio-1.3.0/vendor/uuid/examples/random_uuid.rs --- temporalio-1.3.0/vendor/uuid/examples/random_uuid.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/uuid/examples/random_uuid.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,14 +2,16 @@ //! //! If you enable the `v4` feature you can generate random UUIDs. -#[test] #[cfg(feature = "v4")] -fn generate_random_uuid() { +fn main() { use uuid::Uuid; let uuid = Uuid::new_v4(); assert_eq!(Some(uuid::Version::Random), uuid.get_version()); + + println!("{}", uuid); } +#[cfg(not(feature = "v4"))] fn main() {} diff -Nru temporalio-1.3.0/vendor/uuid/examples/sortable_uuid.rs temporalio-1.3.0/vendor/uuid/examples/sortable_uuid.rs --- temporalio-1.3.0/vendor/uuid/examples/sortable_uuid.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/uuid/examples/sortable_uuid.rs 2023-10-30 19:40:00.000000000 +0000 @@ -2,14 +2,16 @@ //! //! If you enable the `v7` feature you can generate sortable UUIDs. -#[test] -#[cfg(feature = "v7")] -fn generate_sortable_uuid() { +#[cfg(all(uuid_unstable, feature = "v7"))] +fn main() { use uuid::Uuid; let uuid = Uuid::now_v7(); assert_eq!(Some(uuid::Version::SortRand), uuid.get_version()); + + println!("{}", uuid); } +#[cfg(not(all(uuid_unstable, feature = "v7")))] fn main() {} diff -Nru temporalio-1.3.0/vendor/uuid/README.md temporalio-1.3.0/vendor/uuid/README.md --- temporalio-1.3.0/vendor/uuid/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/uuid/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -29,7 +29,7 @@ ```toml [dependencies.uuid] -version = "1.4.0" +version = "1.4.1" features = [ "v4", # Lets you generate random UUIDs "fast-rng", # Use a faster (but still sufficiently random) RNG @@ -66,7 +66,7 @@ If you'd like to parse UUIDs _really_ fast, check out the [`uuid-simd`](https://github.com/nugine/uuid-simd) library. -For more details on using `uuid`, [see the library documentation](https://docs.rs/uuid/1.4.0/uuid). +For more details on using `uuid`, [see the library documentation](https://docs.rs/uuid/1.4.1/uuid). ## Minimum Supported Rust Version (MSRV) @@ -75,7 +75,7 @@ ## References -* [`uuid` library docs](https://docs.rs/uuid/1.4.0/uuid). +* [`uuid` library docs](https://docs.rs/uuid/1.4.1/uuid). * [Wikipedia: Universally Unique Identifier](http://en.wikipedia.org/wiki/Universally_unique_identifier). * [RFC4122: A Universally Unique IDentifier (UUID) URN Namespace](http://tools.ietf.org/html/rfc4122). diff -Nru temporalio-1.3.0/vendor/uuid/src/builder.rs temporalio-1.3.0/vendor/uuid/src/builder.rs --- temporalio-1.3.0/vendor/uuid/src/builder.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/uuid/src/builder.rs 2023-10-30 19:40:00.000000000 +0000 @@ -412,6 +412,7 @@ /// # Ok(()) /// # } /// ``` + #[inline] pub const fn from_bytes(bytes: Bytes) -> Uuid { Uuid(bytes) } @@ -480,6 +481,7 @@ /// # Ok(()) /// # } /// ``` + #[inline] pub fn from_bytes_ref(bytes: &Bytes) -> &Uuid { // SAFETY: `Bytes` and `Uuid` have the same ABI unsafe { &*(bytes as *const Bytes as *const Uuid) } diff -Nru temporalio-1.3.0/vendor/uuid/src/lib.rs temporalio-1.3.0/vendor/uuid/src/lib.rs --- temporalio-1.3.0/vendor/uuid/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/uuid/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -39,7 +39,7 @@ //! //! ```toml //! [dependencies.uuid] -//! version = "1.4.0" +//! version = "1.4.1" //! features = [ //! "v4", # Lets you generate random UUIDs //! "fast-rng", # Use a faster (but still sufficiently random) RNG @@ -140,7 +140,7 @@ //! //! ```toml //! [dependencies.uuid] -//! version = "1.4.0" +//! version = "1.4.1" //! features = [ //! "v4", //! "v7", @@ -155,7 +155,7 @@ //! //! ```toml //! [dependencies.uuid] -//! version = "1.4.0" +//! version = "1.4.1" //! default-features = false //! ``` //! @@ -213,7 +213,7 @@ #![doc( html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png", html_favicon_url = "https://www.rust-lang.org/favicon.ico", - html_root_url = "https://docs.rs/uuid/1.4.0" + html_root_url = "https://docs.rs/uuid/1.4.1" )] #[cfg(any(feature = "std", test))] @@ -273,6 +273,11 @@ #[cfg(feature = "macro-diagnostics")] pub extern crate uuid_macro_internal; +#[doc(hidden)] +pub mod __macro_support { + pub use crate::std::result::Result::{Err, Ok}; +} + use crate::std::convert; pub use crate::{builder::Builder, error::Error}; @@ -778,6 +783,7 @@ /// &bytes1 as *const [u8; 16] as *const u8, /// )); /// ``` + #[inline] pub const fn as_bytes(&self) -> &Bytes { &self.0 } @@ -797,6 +803,7 @@ /// let uuid = Uuid::from_bytes(bytes); /// assert_eq!(bytes, uuid.into_bytes()); /// ``` + #[inline] pub const fn into_bytes(self) -> Bytes { self.0 } diff -Nru temporalio-1.3.0/vendor/uuid/src/macros.rs temporalio-1.3.0/vendor/uuid/src/macros.rs --- temporalio-1.3.0/vendor/uuid/src/macros.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/uuid/src/macros.rs 2023-10-30 19:40:00.000000000 +0000 @@ -15,8 +15,8 @@ macro_rules! uuid { ($uuid:literal) => {{ const OUTPUT: $crate::Uuid = match $crate::Uuid::try_parse($uuid) { - Ok(u) => u, - Err(_) => { + $crate::__macro_support::Ok(u) => u, + $crate::__macro_support::Err(_) => { // here triggers const_err // const_panic requires 1.57 #[allow(unconditional_panic)] diff -Nru temporalio-1.3.0/vendor/uuid/tests/ui/compile_pass/hygiene.rs temporalio-1.3.0/vendor/uuid/tests/ui/compile_pass/hygiene.rs --- temporalio-1.3.0/vendor/uuid/tests/ui/compile_pass/hygiene.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/uuid/tests/ui/compile_pass/hygiene.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,7 @@ +use uuid::{uuid, Uuid}; + +fn Ok() {} + +const _: Uuid = uuid!("00000000-0000-0000-0000-000000000000"); + +fn main() {} diff -Nru temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/.cargo-checksum.json temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/.cargo-checksum.json --- temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -{"files":{"CODE_OF_CONDUCT.md":"a13aaaf393818bd91207c618724d3fb74944ca5161201822a84af951bcf655ef","CONTRIBUTING.md":"2c908a3e263dc35dfed131c02ff907cd72fafb2c2096e4ba9b1e0cbb7a1b76df","Cargo.toml":"946b521f577983feb92abbad62bd85932fe4fe26b7a61dcaba4030d242667885","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-Apache-2.0_WITH_LLVM-exception":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","ORG_CODE_OF_CONDUCT.md":"a62b69bf86e605ee1bcbb2f0a12ba79e4cebb6983a7b6491949750aecc4f2178","README.md":"c021f687a5a61d9c308581401e7aa4454585a30c418abdd02e3a1ef71daa035f","SECURITY.md":"4d75afb09dd28eb5982e3a1f768ee398d90204669ceef3240a16b31dcf04148a","src/error.rs":"270ec14e103130ac5981997ddfa616851cb596fecd48ea7212a7a59dcb110c7f","src/lib.rs":"ce2e7ee6a6e4d5900f3835568b168afc70870d601b2bb94f1a6b9ddd2f046c3a","src/lib_generated.rs":"f92f8c522904454c5909843bc2db4c34af48ca2eae8634cc77dc51d89fa5eae2"},"package":"fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/Cargo.toml temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/Cargo.toml --- temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -# 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 believe there's an error in this file please file an -# issue against the rust-lang/cargo repository. If you're -# editing this file be aware that the upstream Cargo.toml -# will likely look very different (and much more reasonable) - -[package] -edition = "2018" -name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" -authors = ["The Cranelift Project Developers"] -description = "Experimental WASI API bindings for Rust" -documentation = "https://docs.rs/wasi" -readme = "README.md" -keywords = ["webassembly", "wasm"] -categories = ["no-std", "wasm"] -license = "Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT" -repository = "https://github.com/bytecodealliance/wasi" -[dependencies.compiler_builtins] -version = "0.1" -optional = true - -[dependencies.core] -version = "1.0" -optional = true -package = "rustc-std-workspace-core" - -[dependencies.rustc-std-workspace-alloc] -version = "1.0" -optional = true - -[features] -default = ["std"] -rustc-dep-of-std = ["compiler_builtins", "core", "rustc-std-workspace-alloc"] -std = [] -[badges.maintenance] -status = "experimental" diff -Nru temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/CODE_OF_CONDUCT.md temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/CODE_OF_CONDUCT.md --- temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/CODE_OF_CONDUCT.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/CODE_OF_CONDUCT.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -# Contributor Covenant Code of Conduct - -*Note*: this Code of Conduct pertains to individuals' behavior. Please also see the [Organizational Code of Conduct][OCoC]. - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers 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, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the Bytecode Alliance CoC team at [report@bytecodealliance.org](mailto:report@bytecodealliance.org). The CoC team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The CoC team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the Bytecode Alliance's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] - -[OCoC]: ORG_CODE_OF_CONDUCT.md -[homepage]: https://www.contributor-covenant.org -[version]: https://www.contributor-covenant.org/version/1/4/ diff -Nru temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/CONTRIBUTING.md temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/CONTRIBUTING.md --- temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/CONTRIBUTING.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/CONTRIBUTING.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -# Contributing to wasi-core - -wasi-core follows the same development style as Cranelift, so checkout -[Cranelift's CONTRIBUTING.md]. Of course, for wasi-core-specific issues, please -use the [wasi-core issue tracker]. - -[Cranelift's CONTRIBUTING.md]: https://github.com/CraneStation/cranelift/blob/master/CONTRIBUTING.md -[wasi-core issue tracker]: https://github.com/CraneStation/wasi-core/issues/new diff -Nru temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-APACHE temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-APACHE --- temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-APACHE 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-APACHE 1970-01-01 00:00:00.000000000 +0000 @@ -1,201 +0,0 @@ - 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 -Nru temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-Apache-2.0_WITH_LLVM-exception temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-Apache-2.0_WITH_LLVM-exception --- temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-Apache-2.0_WITH_LLVM-exception 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-Apache-2.0_WITH_LLVM-exception 1970-01-01 00:00:00.000000000 +0000 @@ -1,220 +0,0 @@ - - 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. - - ---- LLVM Exceptions to the Apache 2.0 License ---- - -As an exception, if, as a result of your compiling your source code, portions -of this Software are embedded into an Object form of such source code, you -may redistribute such embedded portions in such Object form without complying -with the conditions of Sections 4(a), 4(b) and 4(d) of the License. - -In addition, if you combine or link compiled forms of this Software with -software that is licensed under the GPLv2 ("Combined Software") and if a -court of competent jurisdiction determines that the patent provision (Section -3), the indemnity provision (Section 9) or other Section of the License -conflicts with the conditions of the GPLv2, you may retroactively and -prospectively choose to deem waived or otherwise exclude such Section(s) of -the License, but only in their entirety and only with respect to the Combined -Software. - diff -Nru temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-MIT temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-MIT --- temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-MIT 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-MIT 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -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 -Nru temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/ORG_CODE_OF_CONDUCT.md temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/ORG_CODE_OF_CONDUCT.md --- temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/ORG_CODE_OF_CONDUCT.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/ORG_CODE_OF_CONDUCT.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,143 +0,0 @@ -# Bytecode Alliance Organizational Code of Conduct (OCoC) - -*Note*: this Code of Conduct pertains to organizations' behavior. Please also see the [Individual Code of Conduct](CODE_OF_CONDUCT.md). - -## Preamble - -The Bytecode Alliance (BA) welcomes involvement from organizations, -including commercial organizations. This document is an -*organizational* code of conduct, intended particularly to provide -guidance to commercial organizations. It is distinct from the -[Individual Code of Conduct (ICoC)](CODE_OF_CONDUCT.md), and does not -replace the ICoC. This OCoC applies to any group of people acting in -concert as a BA member or as a participant in BA activities, whether -or not that group is formally incorporated in some jurisdiction. - -The code of conduct described below is not a set of rigid rules, and -we did not write it to encompass every conceivable scenario that might -arise. For example, it is theoretically possible there would be times -when asserting patents is in the best interest of the BA community as -a whole. In such instances, consult with the BA, strive for -consensus, and interpret these rules with an intent that is generous -to the community the BA serves. - -While we may revise these guidelines from time to time based on -real-world experience, overall they are based on a simple principle: - -*Bytecode Alliance members should observe the distinction between - public community functions and private functions — especially - commercial ones — and should ensure that the latter support, or at - least do not harm, the former.* - -## Guidelines - - * **Do not cause confusion about Wasm standards or interoperability.** - - Having an interoperable WebAssembly core is a high priority for - the BA, and members should strive to preserve that core. It is fine - to develop additional non-standard features or APIs, but they - should always be clearly distinguished from the core interoperable - Wasm. - - Treat the WebAssembly name and any BA-associated names with - respect, and follow BA trademark and branding guidelines. If you - distribute a customized version of software originally produced by - the BA, or if you build a product or service using BA-derived - software, use names that clearly distinguish your work from the - original. (You should still provide proper attribution to the - original, of course, wherever such attribution would normally be - given.) - - Further, do not use the WebAssembly name or BA-associated names in - other public namespaces in ways that could cause confusion, e.g., - in company names, names of commercial service offerings, domain - names, publicly-visible social media accounts or online service - accounts, etc. It may sometimes be reasonable, however, to - register such a name in a new namespace and then immediately donate - control of that account to the BA, because that would help the project - maintain its identity. - - For further guidance, see the BA Trademark and Branding Policy - [TODO: create policy, then insert link]. - - * **Do not restrict contributors.** If your company requires - employees or contractors to sign non-compete agreements, those - agreements must not prevent people from participating in the BA or - contributing to related projects. - - This does not mean that all non-compete agreements are incompatible - with this code of conduct. For example, a company may restrict an - employee's ability to solicit the company's customers. However, an - agreement must not block any form of technical or social - participation in BA activities, including but not limited to the - implementation of particular features. - - The accumulation of experience and expertise in individual persons, - who are ultimately free to direct their energy and attention as - they decide, is one of the most important drivers of progress in - open source projects. A company that limits this freedom may hinder - the success of the BA's efforts. - - * **Do not use patents as offensive weapons.** If any BA participant - prevents the adoption or development of BA technologies by - asserting its patents, that undermines the purpose of the - coalition. The collaboration fostered by the BA cannot include - members who act to undermine its work. - - * **Practice responsible disclosure** for security vulnerabilities. - Use designated, non-public reporting channels to disclose technical - vulnerabilities, and give the project a reasonable period to - respond, remediate, and patch. [TODO: optionally include the - security vulnerability reporting URL here.] - - Vulnerability reporters may patch their company's own offerings, as - long as that patching does not significantly delay the reporting of - the vulnerability. Vulnerability information should never be used - for unilateral commercial advantage. Vendors may legitimately - compete on the speed and reliability with which they deploy - security fixes, but withholding vulnerability information damages - everyone in the long run by risking harm to the BA project's - reputation and to the security of all users. - - * **Respect the letter and spirit of open source practice.** While - there is not space to list here all possible aspects of standard - open source practice, some examples will help show what we mean: - - * Abide by all applicable open source license terms. Do not engage - in copyright violation or misattribution of any kind. - - * Do not claim others' ideas or designs as your own. - - * When others engage in publicly visible work (e.g., an upcoming - demo that is coordinated in a public issue tracker), do not - unilaterally announce early releases or early demonstrations of - that work ahead of their schedule in order to secure private - advantage (such as marketplace advantage) for yourself. - - The BA reserves the right to determine what constitutes good open - source practices and to take action as it deems appropriate to - encourage, and if necessary enforce, such practices. - -## Enforcement - -Instances of organizational behavior in violation of the OCoC may -be reported by contacting the Bytecode Alliance CoC team at -[report@bytecodealliance.org](mailto:report@bytecodealliance.org). The -CoC team will review and investigate all complaints, and will respond -in a way that it deems appropriate to the circumstances. The CoC team -is obligated to maintain confidentiality with regard to the reporter of -an incident. Further details of specific enforcement policies may be -posted separately. - -When the BA deems an organization in violation of this OCoC, the BA -will, at its sole discretion, determine what action to take. The BA -will decide what type, degree, and duration of corrective action is -needed, if any, before a violating organization can be considered for -membership (if it was not already a member) or can have its membership -reinstated (if it was a member and the BA canceled its membership due -to the violation). - -In practice, the BA's first approach will be to start a conversation, -with punitive enforcement used only as a last resort. Violations -often turn out to be unintentional and swiftly correctable with all -parties acting in good faith. diff -Nru temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/README.md temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/README.md --- temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/README.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,94 +0,0 @@ - - -This crate contains API bindings for [WASI](https://github.com/WebAssembly/WASI) -system calls in Rust, and currently reflects the `wasi_snapshot_preview1` -module. This crate is quite low-level and provides conceptually a "system call" -interface. In most settings, it's better to use the Rust standard library, which -has WASI support. - -The `wasi` crate is also entirely procedurally generated from the `*.witx` files -describing the WASI apis. While some conveniences are provided the bindings here -are intentionally low-level! - -# Usage - -First you can depend on this crate via `Cargo.toml`: - -```toml -[dependencies] -wasi = "0.8.0" -``` - -Next you can use the APIs in the root of the module like so: - -```rust -fn main() { - let stdout = 1; - let message = "Hello, World!\n"; - let data = [wasi::Ciovec { - buf: message.as_ptr(), - buf_len: message.len(), - }]; - wasi::fd_write(stdout, &data).unwrap(); -} -``` - -Next you can use a tool like [`cargo -wasi`](https://github.com/bytecodealliance/cargo-wasi) to compile and run your -project: - -To compile Rust projects to wasm using WASI, use the `wasm32-wasi` target, -like this: - -``` -$ cargo wasi run - Compiling wasi v0.8.0+wasi-snapshot-preview1 - Compiling wut v0.1.0 (/code) - Finished dev [unoptimized + debuginfo] target(s) in 0.34s - Running `/.cargo/bin/cargo-wasi target/wasm32-wasi/debug/wut.wasm` - Running `target/wasm32-wasi/debug/wut.wasm` -Hello, World! -``` - -# Development - -The bulk of the `wasi` crate is generated by the `witx-bindgen` tool, which lives at -`crates/witx-bindgen` and is part of the cargo workspace. - -The `src/lib_generated.rs` file can be re-generated with the following -command: - -``` -cargo run -p witx-bindgen -- crates/witx-bindgen/WASI/phases/snapshot/witx/wasi_snapshot_preview1.witx > src/lib_generated.rs -``` - -Note that this uses the WASI standard repository as a submodule. If you do not -have this submodule present in your source tree, run: -``` -git submodule update --init -``` - -# License - -This project is licensed under the Apache 2.0 license with the LLVM exception. -See [LICENSE](LICENSE) for more details. - -### Contribution - -Unless you explicitly state otherwise, any contribution intentionally submitted -for inclusion in this project by you, as defined in the Apache-2.0 license, -shall be licensed as above, without any additional terms or conditions. diff -Nru temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/SECURITY.md temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/SECURITY.md --- temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/SECURITY.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/SECURITY.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,29 +0,0 @@ -# Security Policy - -Building secure foundations for software development is at the core of what we do in the Bytecode Alliance. Contributions of external security researchers are a vital part of that. - -## Scope - -If you believe you've found a security issue in any website, service, or software owned or operated by the Bytecode Alliance, we encourage you to notify us. - -## How to Submit a Report - -To submit a vulnerability report to the Bytecode Alliance, please contact us at [security@bytecodealliance.org](mailto:security@bytecodealliance.org). Your submission will be reviewed and validated by a member of our security team. - -## Safe Harbor - -The Bytecode Alliance supports safe harbor for security researchers who: - -* Make a good faith effort to avoid privacy violations, destruction of data, and interruption or degradation of our services. -* Only interact with accounts you own or with explicit permission of the account holder. If you do encounter Personally Identifiable Information (PII) contact us immediately, do not proceed with access, and immediately purge any local information. -* Provide us with a reasonable amount of time to resolve vulnerabilities prior to any disclosure to the public or a third-party. - -We will consider activities conducted consistent with this policy to constitute "authorized" conduct and will not pursue civil action or initiate a complaint to law enforcement. We will help to the extent we can if legal action is initiated by a third party against you. - -Please submit a report to us before engaging in conduct that may be inconsistent with or unaddressed by this policy. - -## Preferences - -* Please provide detailed reports with reproducible steps and a clearly defined impact. -* Submit one vulnerability per report. -* Social engineering (e.g. phishing, vishing, smishing) is prohibited. diff -Nru temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/error.rs temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/error.rs --- temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/error.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/error.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -use super::Errno; -use core::fmt; -use core::num::NonZeroU16; - -/// A raw error returned by wasi APIs, internally containing a 16-bit error -/// code. -#[derive(Copy, Clone, PartialEq, Eq, Ord, PartialOrd)] -pub struct Error { - code: NonZeroU16, -} - -impl Error { - /// Constructs a new error from a raw error code, returning `None` if the - /// error code is zero (which means success). - pub fn from_raw_error(error: Errno) -> Option { - Some(Error { - code: NonZeroU16::new(error)?, - }) - } - - /// Returns the raw error code that this error represents. - pub fn raw_error(&self) -> u16 { - self.code.get() - } -} - -impl fmt::Display for Error { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!( - f, - "{} (error {})", - super::errno_name(self.code.get()), - self.code - )?; - Ok(()) - } -} - -impl fmt::Debug for Error { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("Error") - .field("code", &self.code) - .field("name", &super::errno_name(self.code.get())) - .field("message", &super::errno_docs(self.code.get())) - .finish() - } -} - -#[cfg(feature = "std")] -extern crate std; -#[cfg(feature = "std")] -impl std::error::Error for Error {} diff -Nru temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/lib_generated.rs temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/lib_generated.rs --- temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/lib_generated.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/lib_generated.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,1940 +0,0 @@ -// This file is automatically generated, DO NOT EDIT -// -// To regenerate this file run the `crates/witx-bindgen` command - -use core::mem::MaybeUninit; - -pub use crate::error::Error; -pub type Result = core::result::Result; -pub type Size = usize; -pub type Filesize = u64; -pub type Timestamp = u64; -pub type Clockid = u32; -/// The clock measuring real time. Time value zero corresponds with -/// 1970-01-01T00:00:00Z. -pub const CLOCKID_REALTIME: Clockid = 0; -/// The store-wide monotonic clock, which is defined as a clock measuring -/// real time, whose value cannot be adjusted and which cannot have negative -/// clock jumps. The epoch of this clock is undefined. The absolute time -/// value of this clock therefore has no meaning. -pub const CLOCKID_MONOTONIC: Clockid = 1; -/// The CPU-time clock associated with the current process. -pub const CLOCKID_PROCESS_CPUTIME_ID: Clockid = 2; -/// The CPU-time clock associated with the current thread. -pub const CLOCKID_THREAD_CPUTIME_ID: Clockid = 3; -pub type Errno = u16; -/// No error occurred. System call completed successfully. -pub const ERRNO_SUCCESS: Errno = 0; -/// Argument list too long. -pub const ERRNO_2BIG: Errno = 1; -/// Permission denied. -pub const ERRNO_ACCES: Errno = 2; -/// Address in use. -pub const ERRNO_ADDRINUSE: Errno = 3; -/// Address not available. -pub const ERRNO_ADDRNOTAVAIL: Errno = 4; -/// Address family not supported. -pub const ERRNO_AFNOSUPPORT: Errno = 5; -/// Resource unavailable, or operation would block. -pub const ERRNO_AGAIN: Errno = 6; -/// Connection already in progress. -pub const ERRNO_ALREADY: Errno = 7; -/// Bad file descriptor. -pub const ERRNO_BADF: Errno = 8; -/// Bad message. -pub const ERRNO_BADMSG: Errno = 9; -/// Device or resource busy. -pub const ERRNO_BUSY: Errno = 10; -/// Operation canceled. -pub const ERRNO_CANCELED: Errno = 11; -/// No child processes. -pub const ERRNO_CHILD: Errno = 12; -/// Connection aborted. -pub const ERRNO_CONNABORTED: Errno = 13; -/// Connection refused. -pub const ERRNO_CONNREFUSED: Errno = 14; -/// Connection reset. -pub const ERRNO_CONNRESET: Errno = 15; -/// Resource deadlock would occur. -pub const ERRNO_DEADLK: Errno = 16; -/// Destination address required. -pub const ERRNO_DESTADDRREQ: Errno = 17; -/// Mathematics argument out of domain of function. -pub const ERRNO_DOM: Errno = 18; -/// Reserved. -pub const ERRNO_DQUOT: Errno = 19; -/// File exists. -pub const ERRNO_EXIST: Errno = 20; -/// Bad address. -pub const ERRNO_FAULT: Errno = 21; -/// File too large. -pub const ERRNO_FBIG: Errno = 22; -/// Host is unreachable. -pub const ERRNO_HOSTUNREACH: Errno = 23; -/// Identifier removed. -pub const ERRNO_IDRM: Errno = 24; -/// Illegal byte sequence. -pub const ERRNO_ILSEQ: Errno = 25; -/// Operation in progress. -pub const ERRNO_INPROGRESS: Errno = 26; -/// Interrupted function. -pub const ERRNO_INTR: Errno = 27; -/// Invalid argument. -pub const ERRNO_INVAL: Errno = 28; -/// I/O error. -pub const ERRNO_IO: Errno = 29; -/// Socket is connected. -pub const ERRNO_ISCONN: Errno = 30; -/// Is a directory. -pub const ERRNO_ISDIR: Errno = 31; -/// Too many levels of symbolic links. -pub const ERRNO_LOOP: Errno = 32; -/// File descriptor value too large. -pub const ERRNO_MFILE: Errno = 33; -/// Too many links. -pub const ERRNO_MLINK: Errno = 34; -/// Message too large. -pub const ERRNO_MSGSIZE: Errno = 35; -/// Reserved. -pub const ERRNO_MULTIHOP: Errno = 36; -/// Filename too long. -pub const ERRNO_NAMETOOLONG: Errno = 37; -/// Network is down. -pub const ERRNO_NETDOWN: Errno = 38; -/// Connection aborted by network. -pub const ERRNO_NETRESET: Errno = 39; -/// Network unreachable. -pub const ERRNO_NETUNREACH: Errno = 40; -/// Too many files open in system. -pub const ERRNO_NFILE: Errno = 41; -/// No buffer space available. -pub const ERRNO_NOBUFS: Errno = 42; -/// No such device. -pub const ERRNO_NODEV: Errno = 43; -/// No such file or directory. -pub const ERRNO_NOENT: Errno = 44; -/// Executable file format error. -pub const ERRNO_NOEXEC: Errno = 45; -/// No locks available. -pub const ERRNO_NOLCK: Errno = 46; -/// Reserved. -pub const ERRNO_NOLINK: Errno = 47; -/// Not enough space. -pub const ERRNO_NOMEM: Errno = 48; -/// No message of the desired type. -pub const ERRNO_NOMSG: Errno = 49; -/// Protocol not available. -pub const ERRNO_NOPROTOOPT: Errno = 50; -/// No space left on device. -pub const ERRNO_NOSPC: Errno = 51; -/// Function not supported. -pub const ERRNO_NOSYS: Errno = 52; -/// The socket is not connected. -pub const ERRNO_NOTCONN: Errno = 53; -/// Not a directory or a symbolic link to a directory. -pub const ERRNO_NOTDIR: Errno = 54; -/// Directory not empty. -pub const ERRNO_NOTEMPTY: Errno = 55; -/// State not recoverable. -pub const ERRNO_NOTRECOVERABLE: Errno = 56; -/// Not a socket. -pub const ERRNO_NOTSOCK: Errno = 57; -/// Not supported, or operation not supported on socket. -pub const ERRNO_NOTSUP: Errno = 58; -/// Inappropriate I/O control operation. -pub const ERRNO_NOTTY: Errno = 59; -/// No such device or address. -pub const ERRNO_NXIO: Errno = 60; -/// Value too large to be stored in data type. -pub const ERRNO_OVERFLOW: Errno = 61; -/// Previous owner died. -pub const ERRNO_OWNERDEAD: Errno = 62; -/// Operation not permitted. -pub const ERRNO_PERM: Errno = 63; -/// Broken pipe. -pub const ERRNO_PIPE: Errno = 64; -/// Protocol error. -pub const ERRNO_PROTO: Errno = 65; -/// Protocol not supported. -pub const ERRNO_PROTONOSUPPORT: Errno = 66; -/// Protocol wrong type for socket. -pub const ERRNO_PROTOTYPE: Errno = 67; -/// Result too large. -pub const ERRNO_RANGE: Errno = 68; -/// Read-only file system. -pub const ERRNO_ROFS: Errno = 69; -/// Invalid seek. -pub const ERRNO_SPIPE: Errno = 70; -/// No such process. -pub const ERRNO_SRCH: Errno = 71; -/// Reserved. -pub const ERRNO_STALE: Errno = 72; -/// Connection timed out. -pub const ERRNO_TIMEDOUT: Errno = 73; -/// Text file busy. -pub const ERRNO_TXTBSY: Errno = 74; -/// Cross-device link. -pub const ERRNO_XDEV: Errno = 75; -/// Extension: Capabilities insufficient. -pub const ERRNO_NOTCAPABLE: Errno = 76; -pub fn errno_name(code: u16) -> &'static str { - match code { - ERRNO_SUCCESS => "SUCCESS", - ERRNO_2BIG => "2BIG", - ERRNO_ACCES => "ACCES", - ERRNO_ADDRINUSE => "ADDRINUSE", - ERRNO_ADDRNOTAVAIL => "ADDRNOTAVAIL", - ERRNO_AFNOSUPPORT => "AFNOSUPPORT", - ERRNO_AGAIN => "AGAIN", - ERRNO_ALREADY => "ALREADY", - ERRNO_BADF => "BADF", - ERRNO_BADMSG => "BADMSG", - ERRNO_BUSY => "BUSY", - ERRNO_CANCELED => "CANCELED", - ERRNO_CHILD => "CHILD", - ERRNO_CONNABORTED => "CONNABORTED", - ERRNO_CONNREFUSED => "CONNREFUSED", - ERRNO_CONNRESET => "CONNRESET", - ERRNO_DEADLK => "DEADLK", - ERRNO_DESTADDRREQ => "DESTADDRREQ", - ERRNO_DOM => "DOM", - ERRNO_DQUOT => "DQUOT", - ERRNO_EXIST => "EXIST", - ERRNO_FAULT => "FAULT", - ERRNO_FBIG => "FBIG", - ERRNO_HOSTUNREACH => "HOSTUNREACH", - ERRNO_IDRM => "IDRM", - ERRNO_ILSEQ => "ILSEQ", - ERRNO_INPROGRESS => "INPROGRESS", - ERRNO_INTR => "INTR", - ERRNO_INVAL => "INVAL", - ERRNO_IO => "IO", - ERRNO_ISCONN => "ISCONN", - ERRNO_ISDIR => "ISDIR", - ERRNO_LOOP => "LOOP", - ERRNO_MFILE => "MFILE", - ERRNO_MLINK => "MLINK", - ERRNO_MSGSIZE => "MSGSIZE", - ERRNO_MULTIHOP => "MULTIHOP", - ERRNO_NAMETOOLONG => "NAMETOOLONG", - ERRNO_NETDOWN => "NETDOWN", - ERRNO_NETRESET => "NETRESET", - ERRNO_NETUNREACH => "NETUNREACH", - ERRNO_NFILE => "NFILE", - ERRNO_NOBUFS => "NOBUFS", - ERRNO_NODEV => "NODEV", - ERRNO_NOENT => "NOENT", - ERRNO_NOEXEC => "NOEXEC", - ERRNO_NOLCK => "NOLCK", - ERRNO_NOLINK => "NOLINK", - ERRNO_NOMEM => "NOMEM", - ERRNO_NOMSG => "NOMSG", - ERRNO_NOPROTOOPT => "NOPROTOOPT", - ERRNO_NOSPC => "NOSPC", - ERRNO_NOSYS => "NOSYS", - ERRNO_NOTCONN => "NOTCONN", - ERRNO_NOTDIR => "NOTDIR", - ERRNO_NOTEMPTY => "NOTEMPTY", - ERRNO_NOTRECOVERABLE => "NOTRECOVERABLE", - ERRNO_NOTSOCK => "NOTSOCK", - ERRNO_NOTSUP => "NOTSUP", - ERRNO_NOTTY => "NOTTY", - ERRNO_NXIO => "NXIO", - ERRNO_OVERFLOW => "OVERFLOW", - ERRNO_OWNERDEAD => "OWNERDEAD", - ERRNO_PERM => "PERM", - ERRNO_PIPE => "PIPE", - ERRNO_PROTO => "PROTO", - ERRNO_PROTONOSUPPORT => "PROTONOSUPPORT", - ERRNO_PROTOTYPE => "PROTOTYPE", - ERRNO_RANGE => "RANGE", - ERRNO_ROFS => "ROFS", - ERRNO_SPIPE => "SPIPE", - ERRNO_SRCH => "SRCH", - ERRNO_STALE => "STALE", - ERRNO_TIMEDOUT => "TIMEDOUT", - ERRNO_TXTBSY => "TXTBSY", - ERRNO_XDEV => "XDEV", - ERRNO_NOTCAPABLE => "NOTCAPABLE", - _ => "Unknown error.", - } -} -pub fn errno_docs(code: u16) -> &'static str { - match code { - ERRNO_SUCCESS => "No error occurred. System call completed successfully.", - ERRNO_2BIG => "Argument list too long.", - ERRNO_ACCES => "Permission denied.", - ERRNO_ADDRINUSE => "Address in use.", - ERRNO_ADDRNOTAVAIL => "Address not available.", - ERRNO_AFNOSUPPORT => "Address family not supported.", - ERRNO_AGAIN => "Resource unavailable, or operation would block.", - ERRNO_ALREADY => "Connection already in progress.", - ERRNO_BADF => "Bad file descriptor.", - ERRNO_BADMSG => "Bad message.", - ERRNO_BUSY => "Device or resource busy.", - ERRNO_CANCELED => "Operation canceled.", - ERRNO_CHILD => "No child processes.", - ERRNO_CONNABORTED => "Connection aborted.", - ERRNO_CONNREFUSED => "Connection refused.", - ERRNO_CONNRESET => "Connection reset.", - ERRNO_DEADLK => "Resource deadlock would occur.", - ERRNO_DESTADDRREQ => "Destination address required.", - ERRNO_DOM => "Mathematics argument out of domain of function.", - ERRNO_DQUOT => "Reserved.", - ERRNO_EXIST => "File exists.", - ERRNO_FAULT => "Bad address.", - ERRNO_FBIG => "File too large.", - ERRNO_HOSTUNREACH => "Host is unreachable.", - ERRNO_IDRM => "Identifier removed.", - ERRNO_ILSEQ => "Illegal byte sequence.", - ERRNO_INPROGRESS => "Operation in progress.", - ERRNO_INTR => "Interrupted function.", - ERRNO_INVAL => "Invalid argument.", - ERRNO_IO => "I/O error.", - ERRNO_ISCONN => "Socket is connected.", - ERRNO_ISDIR => "Is a directory.", - ERRNO_LOOP => "Too many levels of symbolic links.", - ERRNO_MFILE => "File descriptor value too large.", - ERRNO_MLINK => "Too many links.", - ERRNO_MSGSIZE => "Message too large.", - ERRNO_MULTIHOP => "Reserved.", - ERRNO_NAMETOOLONG => "Filename too long.", - ERRNO_NETDOWN => "Network is down.", - ERRNO_NETRESET => "Connection aborted by network.", - ERRNO_NETUNREACH => "Network unreachable.", - ERRNO_NFILE => "Too many files open in system.", - ERRNO_NOBUFS => "No buffer space available.", - ERRNO_NODEV => "No such device.", - ERRNO_NOENT => "No such file or directory.", - ERRNO_NOEXEC => "Executable file format error.", - ERRNO_NOLCK => "No locks available.", - ERRNO_NOLINK => "Reserved.", - ERRNO_NOMEM => "Not enough space.", - ERRNO_NOMSG => "No message of the desired type.", - ERRNO_NOPROTOOPT => "Protocol not available.", - ERRNO_NOSPC => "No space left on device.", - ERRNO_NOSYS => "Function not supported.", - ERRNO_NOTCONN => "The socket is not connected.", - ERRNO_NOTDIR => "Not a directory or a symbolic link to a directory.", - ERRNO_NOTEMPTY => "Directory not empty.", - ERRNO_NOTRECOVERABLE => "State not recoverable.", - ERRNO_NOTSOCK => "Not a socket.", - ERRNO_NOTSUP => "Not supported, or operation not supported on socket.", - ERRNO_NOTTY => "Inappropriate I/O control operation.", - ERRNO_NXIO => "No such device or address.", - ERRNO_OVERFLOW => "Value too large to be stored in data type.", - ERRNO_OWNERDEAD => "Previous owner died.", - ERRNO_PERM => "Operation not permitted.", - ERRNO_PIPE => "Broken pipe.", - ERRNO_PROTO => "Protocol error.", - ERRNO_PROTONOSUPPORT => "Protocol not supported.", - ERRNO_PROTOTYPE => "Protocol wrong type for socket.", - ERRNO_RANGE => "Result too large.", - ERRNO_ROFS => "Read-only file system.", - ERRNO_SPIPE => "Invalid seek.", - ERRNO_SRCH => "No such process.", - ERRNO_STALE => "Reserved.", - ERRNO_TIMEDOUT => "Connection timed out.", - ERRNO_TXTBSY => "Text file busy.", - ERRNO_XDEV => "Cross-device link.", - ERRNO_NOTCAPABLE => "Extension: Capabilities insufficient.", - _ => "Unknown error.", - } -} -pub type Rights = u64; -/// The right to invoke `fd_datasync`. -/// If `path_open` is set, includes the right to invoke -/// `path_open` with `fdflags::dsync`. -pub const RIGHTS_FD_DATASYNC: Rights = 0x1; -/// The right to invoke `fd_read` and `sock_recv`. -/// If `rights::fd_seek` is set, includes the right to invoke `fd_pread`. -pub const RIGHTS_FD_READ: Rights = 0x2; -/// The right to invoke `fd_seek`. This flag implies `rights::fd_tell`. -pub const RIGHTS_FD_SEEK: Rights = 0x4; -/// The right to invoke `fd_fdstat_set_flags`. -pub const RIGHTS_FD_FDSTAT_SET_FLAGS: Rights = 0x8; -/// The right to invoke `fd_sync`. -/// If `path_open` is set, includes the right to invoke -/// `path_open` with `fdflags::rsync` and `fdflags::dsync`. -pub const RIGHTS_FD_SYNC: Rights = 0x10; -/// The right to invoke `fd_seek` in such a way that the file offset -/// remains unaltered (i.e., `whence::cur` with offset zero), or to -/// invoke `fd_tell`. -pub const RIGHTS_FD_TELL: Rights = 0x20; -/// The right to invoke `fd_write` and `sock_send`. -/// If `rights::fd_seek` is set, includes the right to invoke `fd_pwrite`. -pub const RIGHTS_FD_WRITE: Rights = 0x40; -/// The right to invoke `fd_advise`. -pub const RIGHTS_FD_ADVISE: Rights = 0x80; -/// The right to invoke `fd_allocate`. -pub const RIGHTS_FD_ALLOCATE: Rights = 0x100; -/// The right to invoke `path_create_directory`. -pub const RIGHTS_PATH_CREATE_DIRECTORY: Rights = 0x200; -/// If `path_open` is set, the right to invoke `path_open` with `oflags::creat`. -pub const RIGHTS_PATH_CREATE_FILE: Rights = 0x400; -/// The right to invoke `path_link` with the file descriptor as the -/// source directory. -pub const RIGHTS_PATH_LINK_SOURCE: Rights = 0x800; -/// The right to invoke `path_link` with the file descriptor as the -/// target directory. -pub const RIGHTS_PATH_LINK_TARGET: Rights = 0x1000; -/// The right to invoke `path_open`. -pub const RIGHTS_PATH_OPEN: Rights = 0x2000; -/// The right to invoke `fd_readdir`. -pub const RIGHTS_FD_READDIR: Rights = 0x4000; -/// The right to invoke `path_readlink`. -pub const RIGHTS_PATH_READLINK: Rights = 0x8000; -/// The right to invoke `path_rename` with the file descriptor as the source directory. -pub const RIGHTS_PATH_RENAME_SOURCE: Rights = 0x10000; -/// The right to invoke `path_rename` with the file descriptor as the target directory. -pub const RIGHTS_PATH_RENAME_TARGET: Rights = 0x20000; -/// The right to invoke `path_filestat_get`. -pub const RIGHTS_PATH_FILESTAT_GET: Rights = 0x40000; -/// The right to change a file's size (there is no `path_filestat_set_size`). -/// If `path_open` is set, includes the right to invoke `path_open` with `oflags::trunc`. -pub const RIGHTS_PATH_FILESTAT_SET_SIZE: Rights = 0x80000; -/// The right to invoke `path_filestat_set_times`. -pub const RIGHTS_PATH_FILESTAT_SET_TIMES: Rights = 0x100000; -/// The right to invoke `fd_filestat_get`. -pub const RIGHTS_FD_FILESTAT_GET: Rights = 0x200000; -/// The right to invoke `fd_filestat_set_size`. -pub const RIGHTS_FD_FILESTAT_SET_SIZE: Rights = 0x400000; -/// The right to invoke `fd_filestat_set_times`. -pub const RIGHTS_FD_FILESTAT_SET_TIMES: Rights = 0x800000; -/// The right to invoke `path_symlink`. -pub const RIGHTS_PATH_SYMLINK: Rights = 0x1000000; -/// The right to invoke `path_remove_directory`. -pub const RIGHTS_PATH_REMOVE_DIRECTORY: Rights = 0x2000000; -/// The right to invoke `path_unlink_file`. -pub const RIGHTS_PATH_UNLINK_FILE: Rights = 0x4000000; -/// If `rights::fd_read` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype::fd_read`. -/// If `rights::fd_write` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype::fd_write`. -pub const RIGHTS_POLL_FD_READWRITE: Rights = 0x8000000; -/// The right to invoke `sock_shutdown`. -pub const RIGHTS_SOCK_SHUTDOWN: Rights = 0x10000000; -pub type Fd = u32; -#[repr(C)] -#[derive(Copy, Clone, Debug)] -pub struct Iovec { - /// The address of the buffer to be filled. - pub buf: *mut u8, - /// The length of the buffer to be filled. - pub buf_len: Size, -} -#[repr(C)] -#[derive(Copy, Clone, Debug)] -pub struct Ciovec { - /// The address of the buffer to be written. - pub buf: *const u8, - /// The length of the buffer to be written. - pub buf_len: Size, -} -pub type IovecArray<'a> = &'a [Iovec]; -pub type CiovecArray<'a> = &'a [Ciovec]; -pub type Filedelta = i64; -pub type Whence = u8; -/// Seek relative to start-of-file. -pub const WHENCE_SET: Whence = 0; -/// Seek relative to current position. -pub const WHENCE_CUR: Whence = 1; -/// Seek relative to end-of-file. -pub const WHENCE_END: Whence = 2; -pub type Dircookie = u64; -pub type Dirnamlen = u32; -pub type Inode = u64; -pub type Filetype = u8; -/// The type of the file descriptor or file is unknown or is different from any of the other types specified. -pub const FILETYPE_UNKNOWN: Filetype = 0; -/// The file descriptor or file refers to a block device inode. -pub const FILETYPE_BLOCK_DEVICE: Filetype = 1; -/// The file descriptor or file refers to a character device inode. -pub const FILETYPE_CHARACTER_DEVICE: Filetype = 2; -/// The file descriptor or file refers to a directory inode. -pub const FILETYPE_DIRECTORY: Filetype = 3; -/// The file descriptor or file refers to a regular file inode. -pub const FILETYPE_REGULAR_FILE: Filetype = 4; -/// The file descriptor or file refers to a datagram socket. -pub const FILETYPE_SOCKET_DGRAM: Filetype = 5; -/// The file descriptor or file refers to a byte-stream socket. -pub const FILETYPE_SOCKET_STREAM: Filetype = 6; -/// The file refers to a symbolic link inode. -pub const FILETYPE_SYMBOLIC_LINK: Filetype = 7; -#[repr(C)] -#[derive(Copy, Clone, Debug)] -pub struct Dirent { - /// The offset of the next directory entry stored in this directory. - pub d_next: Dircookie, - /// The serial number of the file referred to by this directory entry. - pub d_ino: Inode, - /// The length of the name of the directory entry. - pub d_namlen: Dirnamlen, - /// The type of the file referred to by this directory entry. - pub d_type: Filetype, -} -pub type Advice = u8; -/// The application has no advice to give on its behavior with respect to the specified data. -pub const ADVICE_NORMAL: Advice = 0; -/// The application expects to access the specified data sequentially from lower offsets to higher offsets. -pub const ADVICE_SEQUENTIAL: Advice = 1; -/// The application expects to access the specified data in a random order. -pub const ADVICE_RANDOM: Advice = 2; -/// The application expects to access the specified data in the near future. -pub const ADVICE_WILLNEED: Advice = 3; -/// The application expects that it will not access the specified data in the near future. -pub const ADVICE_DONTNEED: Advice = 4; -/// The application expects to access the specified data once and then not reuse it thereafter. -pub const ADVICE_NOREUSE: Advice = 5; -pub type Fdflags = u16; -/// Append mode: Data written to the file is always appended to the file's end. -pub const FDFLAGS_APPEND: Fdflags = 0x1; -/// Write according to synchronized I/O data integrity completion. Only the data stored in the file is synchronized. -pub const FDFLAGS_DSYNC: Fdflags = 0x2; -/// Non-blocking mode. -pub const FDFLAGS_NONBLOCK: Fdflags = 0x4; -/// Synchronized read I/O operations. -pub const FDFLAGS_RSYNC: Fdflags = 0x8; -/// Write according to synchronized I/O file integrity completion. In -/// addition to synchronizing the data stored in the file, the implementation -/// may also synchronously update the file's metadata. -pub const FDFLAGS_SYNC: Fdflags = 0x10; -#[repr(C)] -#[derive(Copy, Clone, Debug)] -pub struct Fdstat { - /// File type. - pub fs_filetype: Filetype, - /// File descriptor flags. - pub fs_flags: Fdflags, - /// Rights that apply to this file descriptor. - pub fs_rights_base: Rights, - /// Maximum set of rights that may be installed on new file descriptors that - /// are created through this file descriptor, e.g., through `path_open`. - pub fs_rights_inheriting: Rights, -} -pub type Device = u64; -pub type Fstflags = u16; -/// Adjust the last data access timestamp to the value stored in `filestat::atim`. -pub const FSTFLAGS_ATIM: Fstflags = 0x1; -/// Adjust the last data access timestamp to the time of clock `clockid::realtime`. -pub const FSTFLAGS_ATIM_NOW: Fstflags = 0x2; -/// Adjust the last data modification timestamp to the value stored in `filestat::mtim`. -pub const FSTFLAGS_MTIM: Fstflags = 0x4; -/// Adjust the last data modification timestamp to the time of clock `clockid::realtime`. -pub const FSTFLAGS_MTIM_NOW: Fstflags = 0x8; -pub type Lookupflags = u32; -/// As long as the resolved path corresponds to a symbolic link, it is expanded. -pub const LOOKUPFLAGS_SYMLINK_FOLLOW: Lookupflags = 0x1; -pub type Oflags = u16; -/// Create file if it does not exist. -pub const OFLAGS_CREAT: Oflags = 0x1; -/// Fail if not a directory. -pub const OFLAGS_DIRECTORY: Oflags = 0x2; -/// Fail if file already exists. -pub const OFLAGS_EXCL: Oflags = 0x4; -/// Truncate file to size 0. -pub const OFLAGS_TRUNC: Oflags = 0x8; -pub type Linkcount = u64; -#[repr(C)] -#[derive(Copy, Clone, Debug)] -pub struct Filestat { - /// Device ID of device containing the file. - pub dev: Device, - /// File serial number. - pub ino: Inode, - /// File type. - pub filetype: Filetype, - /// Number of hard links to the file. - pub nlink: Linkcount, - /// For regular files, the file size in bytes. For symbolic links, the length in bytes of the pathname contained in the symbolic link. - pub size: Filesize, - /// Last data access timestamp. - pub atim: Timestamp, - /// Last data modification timestamp. - pub mtim: Timestamp, - /// Last file status change timestamp. - pub ctim: Timestamp, -} -pub type Userdata = u64; -pub type Eventtype = u8; -/// The time value of clock `subscription_clock::id` has -/// reached timestamp `subscription_clock::timeout`. -pub const EVENTTYPE_CLOCK: Eventtype = 0; -/// File descriptor `subscription_fd_readwrite::file_descriptor` has data -/// available for reading. This event always triggers for regular files. -pub const EVENTTYPE_FD_READ: Eventtype = 1; -/// File descriptor `subscription_fd_readwrite::file_descriptor` has capacity -/// available for writing. This event always triggers for regular files. -pub const EVENTTYPE_FD_WRITE: Eventtype = 2; -pub type Eventrwflags = u16; -/// The peer of this socket has closed or disconnected. -pub const EVENTRWFLAGS_FD_READWRITE_HANGUP: Eventrwflags = 0x1; -#[repr(C)] -#[derive(Copy, Clone, Debug)] -pub struct EventFdReadwrite { - /// The number of bytes available for reading or writing. - pub nbytes: Filesize, - /// The state of the file descriptor. - pub flags: Eventrwflags, -} -#[repr(C)] -#[derive(Copy, Clone, Debug)] -pub struct Event { - /// User-provided value that got attached to `subscription::userdata`. - pub userdata: Userdata, - /// If non-zero, an error that occurred while processing the subscription request. - pub error: Errno, - /// The type of event that occured - pub r#type: Eventtype, - /// The contents of the event, if it is an `eventtype::fd_read` or - /// `eventtype::fd_write`. `eventtype::clock` events ignore this field. - pub fd_readwrite: EventFdReadwrite, -} -pub type Subclockflags = u16; -/// If set, treat the timestamp provided in -/// `subscription_clock::timeout` as an absolute timestamp of clock -/// `subscription_clock::id`. If clear, treat the timestamp -/// provided in `subscription_clock::timeout` relative to the -/// current time value of clock `subscription_clock::id`. -pub const SUBCLOCKFLAGS_SUBSCRIPTION_CLOCK_ABSTIME: Subclockflags = 0x1; -#[repr(C)] -#[derive(Copy, Clone, Debug)] -pub struct SubscriptionClock { - /// The clock against which to compare the timestamp. - pub id: Clockid, - /// The absolute or relative timestamp. - pub timeout: Timestamp, - /// The amount of time that the implementation may wait additionally - /// to coalesce with other events. - pub precision: Timestamp, - /// Flags specifying whether the timeout is absolute or relative - pub flags: Subclockflags, -} -#[repr(C)] -#[derive(Copy, Clone, Debug)] -pub struct SubscriptionFdReadwrite { - /// The file descriptor on which to wait for it to become ready for reading or writing. - pub file_descriptor: Fd, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union SubscriptionUU { - pub clock: SubscriptionClock, - pub fd_read: SubscriptionFdReadwrite, - pub fd_write: SubscriptionFdReadwrite, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct SubscriptionU { - pub tag: Eventtype, - pub u: SubscriptionUU, -} - -#[repr(C)] -#[derive(Copy, Clone)] -pub struct Subscription { - /// User-provided value that is attached to the subscription in the - /// implementation and returned through `event::userdata`. - pub userdata: Userdata, - /// The type of the event to which to subscribe, and its contents - pub u: SubscriptionU, -} -pub type Exitcode = u32; -pub type Signal = u8; -/// No signal. Note that POSIX has special semantics for `kill(pid, 0)`, -/// so this value is reserved. -pub const SIGNAL_NONE: Signal = 0; -/// Hangup. -/// Action: Terminates the process. -pub const SIGNAL_HUP: Signal = 1; -/// Terminate interrupt signal. -/// Action: Terminates the process. -pub const SIGNAL_INT: Signal = 2; -/// Terminal quit signal. -/// Action: Terminates the process. -pub const SIGNAL_QUIT: Signal = 3; -/// Illegal instruction. -/// Action: Terminates the process. -pub const SIGNAL_ILL: Signal = 4; -/// Trace/breakpoint trap. -/// Action: Terminates the process. -pub const SIGNAL_TRAP: Signal = 5; -/// Process abort signal. -/// Action: Terminates the process. -pub const SIGNAL_ABRT: Signal = 6; -/// Access to an undefined portion of a memory object. -/// Action: Terminates the process. -pub const SIGNAL_BUS: Signal = 7; -/// Erroneous arithmetic operation. -/// Action: Terminates the process. -pub const SIGNAL_FPE: Signal = 8; -/// Kill. -/// Action: Terminates the process. -pub const SIGNAL_KILL: Signal = 9; -/// User-defined signal 1. -/// Action: Terminates the process. -pub const SIGNAL_USR1: Signal = 10; -/// Invalid memory reference. -/// Action: Terminates the process. -pub const SIGNAL_SEGV: Signal = 11; -/// User-defined signal 2. -/// Action: Terminates the process. -pub const SIGNAL_USR2: Signal = 12; -/// Write on a pipe with no one to read it. -/// Action: Ignored. -pub const SIGNAL_PIPE: Signal = 13; -/// Alarm clock. -/// Action: Terminates the process. -pub const SIGNAL_ALRM: Signal = 14; -/// Termination signal. -/// Action: Terminates the process. -pub const SIGNAL_TERM: Signal = 15; -/// Child process terminated, stopped, or continued. -/// Action: Ignored. -pub const SIGNAL_CHLD: Signal = 16; -/// Continue executing, if stopped. -/// Action: Continues executing, if stopped. -pub const SIGNAL_CONT: Signal = 17; -/// Stop executing. -/// Action: Stops executing. -pub const SIGNAL_STOP: Signal = 18; -/// Terminal stop signal. -/// Action: Stops executing. -pub const SIGNAL_TSTP: Signal = 19; -/// Background process attempting read. -/// Action: Stops executing. -pub const SIGNAL_TTIN: Signal = 20; -/// Background process attempting write. -/// Action: Stops executing. -pub const SIGNAL_TTOU: Signal = 21; -/// High bandwidth data is available at a socket. -/// Action: Ignored. -pub const SIGNAL_URG: Signal = 22; -/// CPU time limit exceeded. -/// Action: Terminates the process. -pub const SIGNAL_XCPU: Signal = 23; -/// File size limit exceeded. -/// Action: Terminates the process. -pub const SIGNAL_XFSZ: Signal = 24; -/// Virtual timer expired. -/// Action: Terminates the process. -pub const SIGNAL_VTALRM: Signal = 25; -/// Profiling timer expired. -/// Action: Terminates the process. -pub const SIGNAL_PROF: Signal = 26; -/// Window changed. -/// Action: Ignored. -pub const SIGNAL_WINCH: Signal = 27; -/// I/O possible. -/// Action: Terminates the process. -pub const SIGNAL_POLL: Signal = 28; -/// Power failure. -/// Action: Terminates the process. -pub const SIGNAL_PWR: Signal = 29; -/// Bad system call. -/// Action: Terminates the process. -pub const SIGNAL_SYS: Signal = 30; -pub type Riflags = u16; -/// Returns the message without removing it from the socket's receive queue. -pub const RIFLAGS_RECV_PEEK: Riflags = 0x1; -/// On byte-stream sockets, block until the full amount of data can be returned. -pub const RIFLAGS_RECV_WAITALL: Riflags = 0x2; -pub type Roflags = u16; -/// Returned by `sock_recv`: Message data has been truncated. -pub const ROFLAGS_RECV_DATA_TRUNCATED: Roflags = 0x1; -pub type Siflags = u16; -pub type Sdflags = u8; -/// Disables further receive operations. -pub const SDFLAGS_RD: Sdflags = 0x1; -/// Disables further send operations. -pub const SDFLAGS_WR: Sdflags = 0x2; -pub type Preopentype = u8; -/// A pre-opened directory. -pub const PREOPENTYPE_DIR: Preopentype = 0; -#[repr(C)] -#[derive(Copy, Clone, Debug)] -pub struct PrestatDir { - /// The length of the directory name for use with `fd_prestat_dir_name`. - pub pr_name_len: Size, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union PrestatU { - pub dir: PrestatDir, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct Prestat { - pub tag: Preopentype, - pub u: PrestatU, -} - -/// Read command-line argument data. -/// The size of the array should match that returned by `args_sizes_get` -pub unsafe fn args_get(argv: *mut *mut u8, argv_buf: *mut u8) -> Result<()> { - let rc = wasi_snapshot_preview1::args_get(argv, argv_buf); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Return command-line argument data sizes. -/// -/// ## Return -/// -/// * `argc` - The number of arguments. -/// * `argv_buf_size` - The size of the argument string data. -pub unsafe fn args_sizes_get() -> Result<(Size, Size)> { - let mut argc = MaybeUninit::uninit(); - let mut argv_buf_size = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::args_sizes_get(argc.as_mut_ptr(), argv_buf_size.as_mut_ptr()); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok((argc.assume_init(), argv_buf_size.assume_init())) - } -} - -/// Read environment variable data. -/// The sizes of the buffers should match that returned by `environ_sizes_get`. -pub unsafe fn environ_get(environ: *mut *mut u8, environ_buf: *mut u8) -> Result<()> { - let rc = wasi_snapshot_preview1::environ_get(environ, environ_buf); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Return environment variable data sizes. -/// -/// ## Return -/// -/// * `environc` - The number of environment variable arguments. -/// * `environ_buf_size` - The size of the environment variable data. -pub unsafe fn environ_sizes_get() -> Result<(Size, Size)> { - let mut environc = MaybeUninit::uninit(); - let mut environ_buf_size = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::environ_sizes_get( - environc.as_mut_ptr(), - environ_buf_size.as_mut_ptr(), - ); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok((environc.assume_init(), environ_buf_size.assume_init())) - } -} - -/// Return the resolution of a clock. -/// Implementations are required to provide a non-zero value for supported clocks. For unsupported clocks, -/// return `errno::inval`. -/// Note: This is similar to `clock_getres` in POSIX. -/// -/// ## Parameters -/// -/// * `id` - The clock for which to return the resolution. -/// -/// ## Return -/// -/// * `resolution` - The resolution of the clock. -pub unsafe fn clock_res_get(id: Clockid) -> Result { - let mut resolution = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::clock_res_get(id, resolution.as_mut_ptr()); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(resolution.assume_init()) - } -} - -/// Return the time value of a clock. -/// Note: This is similar to `clock_gettime` in POSIX. -/// -/// ## Parameters -/// -/// * `id` - The clock for which to return the time. -/// * `precision` - The maximum lag (exclusive) that the returned time value may have, compared to its actual value. -/// -/// ## Return -/// -/// * `time` - The time value of the clock. -pub unsafe fn clock_time_get(id: Clockid, precision: Timestamp) -> Result { - let mut time = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::clock_time_get(id, precision, time.as_mut_ptr()); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(time.assume_init()) - } -} - -/// Provide file advisory information on a file descriptor. -/// Note: This is similar to `posix_fadvise` in POSIX. -/// -/// ## Parameters -/// -/// * `offset` - The offset within the file to which the advisory applies. -/// * `len` - The length of the region to which the advisory applies. -/// * `advice` - The advice. -pub unsafe fn fd_advise(fd: Fd, offset: Filesize, len: Filesize, advice: Advice) -> Result<()> { - let rc = wasi_snapshot_preview1::fd_advise(fd, offset, len, advice); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Force the allocation of space in a file. -/// Note: This is similar to `posix_fallocate` in POSIX. -/// -/// ## Parameters -/// -/// * `offset` - The offset at which to start the allocation. -/// * `len` - The length of the area that is allocated. -pub unsafe fn fd_allocate(fd: Fd, offset: Filesize, len: Filesize) -> Result<()> { - let rc = wasi_snapshot_preview1::fd_allocate(fd, offset, len); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Close a file descriptor. -/// Note: This is similar to `close` in POSIX. -pub unsafe fn fd_close(fd: Fd) -> Result<()> { - let rc = wasi_snapshot_preview1::fd_close(fd); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Synchronize the data of a file to disk. -/// Note: This is similar to `fdatasync` in POSIX. -pub unsafe fn fd_datasync(fd: Fd) -> Result<()> { - let rc = wasi_snapshot_preview1::fd_datasync(fd); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Get the attributes of a file descriptor. -/// Note: This returns similar flags to `fsync(fd, F_GETFL)` in POSIX, as well as additional fields. -/// -/// ## Return -/// -/// * `stat` - The buffer where the file descriptor's attributes are stored. -pub unsafe fn fd_fdstat_get(fd: Fd) -> Result { - let mut stat = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::fd_fdstat_get(fd, stat.as_mut_ptr()); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(stat.assume_init()) - } -} - -/// Adjust the flags associated with a file descriptor. -/// Note: This is similar to `fcntl(fd, F_SETFL, flags)` in POSIX. -/// -/// ## Parameters -/// -/// * `flags` - The desired values of the file descriptor flags. -pub unsafe fn fd_fdstat_set_flags(fd: Fd, flags: Fdflags) -> Result<()> { - let rc = wasi_snapshot_preview1::fd_fdstat_set_flags(fd, flags); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Adjust the rights associated with a file descriptor. -/// This can only be used to remove rights, and returns `errno::notcapable` if called in a way that would attempt to add rights -/// -/// ## Parameters -/// -/// * `fs_rights_base` - The desired rights of the file descriptor. -pub unsafe fn fd_fdstat_set_rights( - fd: Fd, - fs_rights_base: Rights, - fs_rights_inheriting: Rights, -) -> Result<()> { - let rc = wasi_snapshot_preview1::fd_fdstat_set_rights(fd, fs_rights_base, fs_rights_inheriting); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Return the attributes of an open file. -/// -/// ## Return -/// -/// * `buf` - The buffer where the file's attributes are stored. -pub unsafe fn fd_filestat_get(fd: Fd) -> Result { - let mut buf = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::fd_filestat_get(fd, buf.as_mut_ptr()); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(buf.assume_init()) - } -} - -/// Adjust the size of an open file. If this increases the file's size, the extra bytes are filled with zeros. -/// Note: This is similar to `ftruncate` in POSIX. -/// -/// ## Parameters -/// -/// * `size` - The desired file size. -pub unsafe fn fd_filestat_set_size(fd: Fd, size: Filesize) -> Result<()> { - let rc = wasi_snapshot_preview1::fd_filestat_set_size(fd, size); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Adjust the timestamps of an open file or directory. -/// Note: This is similar to `futimens` in POSIX. -/// -/// ## Parameters -/// -/// * `atim` - The desired values of the data access timestamp. -/// * `mtim` - The desired values of the data modification timestamp. -/// * `fst_flags` - A bitmask indicating which timestamps to adjust. -pub unsafe fn fd_filestat_set_times( - fd: Fd, - atim: Timestamp, - mtim: Timestamp, - fst_flags: Fstflags, -) -> Result<()> { - let rc = wasi_snapshot_preview1::fd_filestat_set_times(fd, atim, mtim, fst_flags); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Read from a file descriptor, without using and updating the file descriptor's offset. -/// Note: This is similar to `preadv` in POSIX. -/// -/// ## Parameters -/// -/// * `iovs` - List of scatter/gather vectors in which to store data. -/// * `offset` - The offset within the file at which to read. -/// -/// ## Return -/// -/// * `nread` - The number of bytes read. -pub unsafe fn fd_pread(fd: Fd, iovs: IovecArray<'_>, offset: Filesize) -> Result { - let mut nread = MaybeUninit::uninit(); - let rc = - wasi_snapshot_preview1::fd_pread(fd, iovs.as_ptr(), iovs.len(), offset, nread.as_mut_ptr()); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(nread.assume_init()) - } -} - -/// Return a description of the given preopened file descriptor. -/// -/// ## Return -/// -/// * `buf` - The buffer where the description is stored. -pub unsafe fn fd_prestat_get(fd: Fd) -> Result { - let mut buf = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::fd_prestat_get(fd, buf.as_mut_ptr()); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(buf.assume_init()) - } -} - -/// Return a description of the given preopened file descriptor. -/// -/// ## Parameters -/// -/// * `path` - A buffer into which to write the preopened directory name. -pub unsafe fn fd_prestat_dir_name(fd: Fd, path: *mut u8, path_len: Size) -> Result<()> { - let rc = wasi_snapshot_preview1::fd_prestat_dir_name(fd, path, path_len); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Write to a file descriptor, without using and updating the file descriptor's offset. -/// Note: This is similar to `pwritev` in POSIX. -/// -/// ## Parameters -/// -/// * `iovs` - List of scatter/gather vectors from which to retrieve data. -/// * `offset` - The offset within the file at which to write. -/// -/// ## Return -/// -/// * `nwritten` - The number of bytes written. -pub unsafe fn fd_pwrite(fd: Fd, iovs: CiovecArray<'_>, offset: Filesize) -> Result { - let mut nwritten = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::fd_pwrite( - fd, - iovs.as_ptr(), - iovs.len(), - offset, - nwritten.as_mut_ptr(), - ); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(nwritten.assume_init()) - } -} - -/// Read from a file descriptor. -/// Note: This is similar to `readv` in POSIX. -/// -/// ## Parameters -/// -/// * `iovs` - List of scatter/gather vectors to which to store data. -/// -/// ## Return -/// -/// * `nread` - The number of bytes read. -pub unsafe fn fd_read(fd: Fd, iovs: IovecArray<'_>) -> Result { - let mut nread = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::fd_read(fd, iovs.as_ptr(), iovs.len(), nread.as_mut_ptr()); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(nread.assume_init()) - } -} - -/// Read directory entries from a directory. -/// When successful, the contents of the output buffer consist of a sequence of -/// directory entries. Each directory entry consists of a `dirent` object, -/// followed by `dirent::d_namlen` bytes holding the name of the directory -/// entry. -/// This function fills the output buffer as much as possible, potentially -/// truncating the last directory entry. This allows the caller to grow its -/// read buffer size in case it's too small to fit a single large directory -/// entry, or skip the oversized directory entry. -/// -/// ## Parameters -/// -/// * `buf` - The buffer where directory entries are stored -/// * `cookie` - The location within the directory to start reading -/// -/// ## Return -/// -/// * `bufused` - The number of bytes stored in the read buffer. If less than the size of the read buffer, the end of the directory has been reached. -pub unsafe fn fd_readdir(fd: Fd, buf: *mut u8, buf_len: Size, cookie: Dircookie) -> Result { - let mut bufused = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::fd_readdir(fd, buf, buf_len, cookie, bufused.as_mut_ptr()); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(bufused.assume_init()) - } -} - -/// Atomically replace a file descriptor by renumbering another file descriptor. -/// Due to the strong focus on thread safety, this environment does not provide -/// a mechanism to duplicate or renumber a file descriptor to an arbitrary -/// number, like `dup2()`. This would be prone to race conditions, as an actual -/// file descriptor with the same number could be allocated by a different -/// thread at the same time. -/// This function provides a way to atomically renumber file descriptors, which -/// would disappear if `dup2()` were to be removed entirely. -/// -/// ## Parameters -/// -/// * `to` - The file descriptor to overwrite. -pub unsafe fn fd_renumber(fd: Fd, to: Fd) -> Result<()> { - let rc = wasi_snapshot_preview1::fd_renumber(fd, to); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Move the offset of a file descriptor. -/// Note: This is similar to `lseek` in POSIX. -/// -/// ## Parameters -/// -/// * `offset` - The number of bytes to move. -/// * `whence` - The base from which the offset is relative. -/// -/// ## Return -/// -/// * `newoffset` - The new offset of the file descriptor, relative to the start of the file. -pub unsafe fn fd_seek(fd: Fd, offset: Filedelta, whence: Whence) -> Result { - let mut newoffset = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::fd_seek(fd, offset, whence, newoffset.as_mut_ptr()); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(newoffset.assume_init()) - } -} - -/// Synchronize the data and metadata of a file to disk. -/// Note: This is similar to `fsync` in POSIX. -pub unsafe fn fd_sync(fd: Fd) -> Result<()> { - let rc = wasi_snapshot_preview1::fd_sync(fd); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Return the current offset of a file descriptor. -/// Note: This is similar to `lseek(fd, 0, SEEK_CUR)` in POSIX. -/// -/// ## Return -/// -/// * `offset` - The current offset of the file descriptor, relative to the start of the file. -pub unsafe fn fd_tell(fd: Fd) -> Result { - let mut offset = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::fd_tell(fd, offset.as_mut_ptr()); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(offset.assume_init()) - } -} - -/// Write to a file descriptor. -/// Note: This is similar to `writev` in POSIX. -/// -/// ## Parameters -/// -/// * `iovs` - List of scatter/gather vectors from which to retrieve data. -/// -/// ## Return -/// -/// * `nwritten` - The number of bytes written. -pub unsafe fn fd_write(fd: Fd, iovs: CiovecArray<'_>) -> Result { - let mut nwritten = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::fd_write(fd, iovs.as_ptr(), iovs.len(), nwritten.as_mut_ptr()); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(nwritten.assume_init()) - } -} - -/// Create a directory. -/// Note: This is similar to `mkdirat` in POSIX. -/// -/// ## Parameters -/// -/// * `path` - The path at which to create the directory. -pub unsafe fn path_create_directory(fd: Fd, path: &str) -> Result<()> { - let rc = wasi_snapshot_preview1::path_create_directory(fd, path.as_ptr(), path.len()); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Return the attributes of a file or directory. -/// Note: This is similar to `stat` in POSIX. -/// -/// ## Parameters -/// -/// * `flags` - Flags determining the method of how the path is resolved. -/// * `path` - The path of the file or directory to inspect. -/// -/// ## Return -/// -/// * `buf` - The buffer where the file's attributes are stored. -pub unsafe fn path_filestat_get(fd: Fd, flags: Lookupflags, path: &str) -> Result { - let mut buf = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::path_filestat_get( - fd, - flags, - path.as_ptr(), - path.len(), - buf.as_mut_ptr(), - ); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(buf.assume_init()) - } -} - -/// Adjust the timestamps of a file or directory. -/// Note: This is similar to `utimensat` in POSIX. -/// -/// ## Parameters -/// -/// * `flags` - Flags determining the method of how the path is resolved. -/// * `path` - The path of the file or directory to operate on. -/// * `atim` - The desired values of the data access timestamp. -/// * `mtim` - The desired values of the data modification timestamp. -/// * `fst_flags` - A bitmask indicating which timestamps to adjust. -pub unsafe fn path_filestat_set_times( - fd: Fd, - flags: Lookupflags, - path: &str, - atim: Timestamp, - mtim: Timestamp, - fst_flags: Fstflags, -) -> Result<()> { - let rc = wasi_snapshot_preview1::path_filestat_set_times( - fd, - flags, - path.as_ptr(), - path.len(), - atim, - mtim, - fst_flags, - ); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Create a hard link. -/// Note: This is similar to `linkat` in POSIX. -/// -/// ## Parameters -/// -/// * `old_flags` - Flags determining the method of how the path is resolved. -/// * `old_path` - The source path from which to link. -/// * `new_fd` - The working directory at which the resolution of the new path starts. -/// * `new_path` - The destination path at which to create the hard link. -pub unsafe fn path_link( - old_fd: Fd, - old_flags: Lookupflags, - old_path: &str, - new_fd: Fd, - new_path: &str, -) -> Result<()> { - let rc = wasi_snapshot_preview1::path_link( - old_fd, - old_flags, - old_path.as_ptr(), - old_path.len(), - new_fd, - new_path.as_ptr(), - new_path.len(), - ); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Open a file or directory. -/// The returned file descriptor is not guaranteed to be the lowest-numbered -/// file descriptor not currently open; it is randomized to prevent -/// applications from depending on making assumptions about indexes, since this -/// is error-prone in multi-threaded contexts. The returned file descriptor is -/// guaranteed to be less than 2**31. -/// Note: This is similar to `openat` in POSIX. -/// -/// ## Parameters -/// -/// * `dirflags` - Flags determining the method of how the path is resolved. -/// * `path` - The relative path of the file or directory to open, relative to the -/// `path_open::fd` directory. -/// * `oflags` - The method by which to open the file. -/// * `fs_rights_base` - The initial rights of the newly created file descriptor. The -/// implementation is allowed to return a file descriptor with fewer rights -/// than specified, if and only if those rights do not apply to the type of -/// file being opened. -/// The *base* rights are rights that will apply to operations using the file -/// descriptor itself, while the *inheriting* rights are rights that apply to -/// file descriptors derived from it. -/// -/// ## Return -/// -/// * `opened_fd` - The file descriptor of the file that has been opened. -pub unsafe fn path_open( - fd: Fd, - dirflags: Lookupflags, - path: &str, - oflags: Oflags, - fs_rights_base: Rights, - fs_rights_inheriting: Rights, - fdflags: Fdflags, -) -> Result { - let mut opened_fd = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::path_open( - fd, - dirflags, - path.as_ptr(), - path.len(), - oflags, - fs_rights_base, - fs_rights_inheriting, - fdflags, - opened_fd.as_mut_ptr(), - ); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(opened_fd.assume_init()) - } -} - -/// Read the contents of a symbolic link. -/// Note: This is similar to `readlinkat` in POSIX. -/// -/// ## Parameters -/// -/// * `path` - The path of the symbolic link from which to read. -/// * `buf` - The buffer to which to write the contents of the symbolic link. -/// -/// ## Return -/// -/// * `bufused` - The number of bytes placed in the buffer. -pub unsafe fn path_readlink(fd: Fd, path: &str, buf: *mut u8, buf_len: Size) -> Result { - let mut bufused = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::path_readlink( - fd, - path.as_ptr(), - path.len(), - buf, - buf_len, - bufused.as_mut_ptr(), - ); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(bufused.assume_init()) - } -} - -/// Remove a directory. -/// Return `errno::notempty` if the directory is not empty. -/// Note: This is similar to `unlinkat(fd, path, AT_REMOVEDIR)` in POSIX. -/// -/// ## Parameters -/// -/// * `path` - The path to a directory to remove. -pub unsafe fn path_remove_directory(fd: Fd, path: &str) -> Result<()> { - let rc = wasi_snapshot_preview1::path_remove_directory(fd, path.as_ptr(), path.len()); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Rename a file or directory. -/// Note: This is similar to `renameat` in POSIX. -/// -/// ## Parameters -/// -/// * `old_path` - The source path of the file or directory to rename. -/// * `new_fd` - The working directory at which the resolution of the new path starts. -/// * `new_path` - The destination path to which to rename the file or directory. -pub unsafe fn path_rename(fd: Fd, old_path: &str, new_fd: Fd, new_path: &str) -> Result<()> { - let rc = wasi_snapshot_preview1::path_rename( - fd, - old_path.as_ptr(), - old_path.len(), - new_fd, - new_path.as_ptr(), - new_path.len(), - ); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Create a symbolic link. -/// Note: This is similar to `symlinkat` in POSIX. -/// -/// ## Parameters -/// -/// * `old_path` - The contents of the symbolic link. -/// * `new_path` - The destination path at which to create the symbolic link. -pub unsafe fn path_symlink(old_path: &str, fd: Fd, new_path: &str) -> Result<()> { - let rc = wasi_snapshot_preview1::path_symlink( - old_path.as_ptr(), - old_path.len(), - fd, - new_path.as_ptr(), - new_path.len(), - ); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Unlink a file. -/// Return `errno::isdir` if the path refers to a directory. -/// Note: This is similar to `unlinkat(fd, path, 0)` in POSIX. -/// -/// ## Parameters -/// -/// * `path` - The path to a file to unlink. -pub unsafe fn path_unlink_file(fd: Fd, path: &str) -> Result<()> { - let rc = wasi_snapshot_preview1::path_unlink_file(fd, path.as_ptr(), path.len()); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Concurrently poll for the occurrence of a set of events. -/// -/// ## Parameters -/// -/// * `r#in` - The events to which to subscribe. -/// * `out` - The events that have occurred. -/// * `nsubscriptions` - Both the number of subscriptions and events. -/// -/// ## Return -/// -/// * `nevents` - The number of events stored. -pub unsafe fn poll_oneoff( - r#in: *const Subscription, - out: *mut Event, - nsubscriptions: Size, -) -> Result { - let mut nevents = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::poll_oneoff(r#in, out, nsubscriptions, nevents.as_mut_ptr()); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(nevents.assume_init()) - } -} - -/// Terminate the process normally. An exit code of 0 indicates successful -/// termination of the program. The meanings of other values is dependent on -/// the environment. -/// -/// ## Parameters -/// -/// * `rval` - The exit code returned by the process. -pub unsafe fn proc_exit(rval: Exitcode) { - wasi_snapshot_preview1::proc_exit(rval); -} - -/// Send a signal to the process of the calling thread. -/// Note: This is similar to `raise` in POSIX. -/// -/// ## Parameters -/// -/// * `sig` - The signal condition to trigger. -pub unsafe fn proc_raise(sig: Signal) -> Result<()> { - let rc = wasi_snapshot_preview1::proc_raise(sig); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Temporarily yield execution of the calling thread. -/// Note: This is similar to `sched_yield` in POSIX. -pub unsafe fn sched_yield() -> Result<()> { - let rc = wasi_snapshot_preview1::sched_yield(); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Write high-quality random data into a buffer. -/// This function blocks when the implementation is unable to immediately -/// provide sufficient high-quality random data. -/// This function may execute slowly, so when large mounts of random data are -/// required, it's advisable to use this function to seed a pseudo-random -/// number generator, rather than to provide the random data directly. -/// -/// ## Parameters -/// -/// * `buf` - The buffer to fill with random data. -pub unsafe fn random_get(buf: *mut u8, buf_len: Size) -> Result<()> { - let rc = wasi_snapshot_preview1::random_get(buf, buf_len); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -/// Receive a message from a socket. -/// Note: This is similar to `recv` in POSIX, though it also supports reading -/// the data into multiple buffers in the manner of `readv`. -/// -/// ## Parameters -/// -/// * `ri_data` - List of scatter/gather vectors to which to store data. -/// * `ri_flags` - Message flags. -/// -/// ## Return -/// -/// * `ro_datalen` - Number of bytes stored in ri_data. -/// * `ro_flags` - Message flags. -pub unsafe fn sock_recv( - fd: Fd, - ri_data: IovecArray<'_>, - ri_flags: Riflags, -) -> Result<(Size, Roflags)> { - let mut ro_datalen = MaybeUninit::uninit(); - let mut ro_flags = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::sock_recv( - fd, - ri_data.as_ptr(), - ri_data.len(), - ri_flags, - ro_datalen.as_mut_ptr(), - ro_flags.as_mut_ptr(), - ); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok((ro_datalen.assume_init(), ro_flags.assume_init())) - } -} - -/// Send a message on a socket. -/// Note: This is similar to `send` in POSIX, though it also supports writing -/// the data from multiple buffers in the manner of `writev`. -/// -/// ## Parameters -/// -/// * `si_data` - List of scatter/gather vectors to which to retrieve data -/// * `si_flags` - Message flags. -/// -/// ## Return -/// -/// * `so_datalen` - Number of bytes transmitted. -pub unsafe fn sock_send(fd: Fd, si_data: CiovecArray<'_>, si_flags: Siflags) -> Result { - let mut so_datalen = MaybeUninit::uninit(); - let rc = wasi_snapshot_preview1::sock_send( - fd, - si_data.as_ptr(), - si_data.len(), - si_flags, - so_datalen.as_mut_ptr(), - ); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(so_datalen.assume_init()) - } -} - -/// Shut down socket send and receive channels. -/// Note: This is similar to `shutdown` in POSIX. -/// -/// ## Parameters -/// -/// * `how` - Which channels on the socket to shut down. -pub unsafe fn sock_shutdown(fd: Fd, how: Sdflags) -> Result<()> { - let rc = wasi_snapshot_preview1::sock_shutdown(fd, how); - if let Some(err) = Error::from_raw_error(rc) { - Err(err) - } else { - Ok(()) - } -} - -pub mod wasi_snapshot_preview1 { - use super::*; - #[link(wasm_import_module = "wasi_snapshot_preview1")] - extern "C" { - /// Read command-line argument data. - /// The size of the array should match that returned by `args_sizes_get` - pub fn args_get(argv: *mut *mut u8, argv_buf: *mut u8) -> Errno; - /// Return command-line argument data sizes. - pub fn args_sizes_get(argc: *mut Size, argv_buf_size: *mut Size) -> Errno; - /// Read environment variable data. - /// The sizes of the buffers should match that returned by `environ_sizes_get`. - pub fn environ_get(environ: *mut *mut u8, environ_buf: *mut u8) -> Errno; - /// Return environment variable data sizes. - pub fn environ_sizes_get(environc: *mut Size, environ_buf_size: *mut Size) -> Errno; - /// Return the resolution of a clock. - /// Implementations are required to provide a non-zero value for supported clocks. For unsupported clocks, - /// return `errno::inval`. - /// Note: This is similar to `clock_getres` in POSIX. - pub fn clock_res_get(id: Clockid, resolution: *mut Timestamp) -> Errno; - /// Return the time value of a clock. - /// Note: This is similar to `clock_gettime` in POSIX. - pub fn clock_time_get(id: Clockid, precision: Timestamp, time: *mut Timestamp) -> Errno; - /// Provide file advisory information on a file descriptor. - /// Note: This is similar to `posix_fadvise` in POSIX. - pub fn fd_advise(fd: Fd, offset: Filesize, len: Filesize, advice: Advice) -> Errno; - /// Force the allocation of space in a file. - /// Note: This is similar to `posix_fallocate` in POSIX. - pub fn fd_allocate(fd: Fd, offset: Filesize, len: Filesize) -> Errno; - /// Close a file descriptor. - /// Note: This is similar to `close` in POSIX. - pub fn fd_close(fd: Fd) -> Errno; - /// Synchronize the data of a file to disk. - /// Note: This is similar to `fdatasync` in POSIX. - pub fn fd_datasync(fd: Fd) -> Errno; - /// Get the attributes of a file descriptor. - /// Note: This returns similar flags to `fsync(fd, F_GETFL)` in POSIX, as well as additional fields. - pub fn fd_fdstat_get(fd: Fd, stat: *mut Fdstat) -> Errno; - /// Adjust the flags associated with a file descriptor. - /// Note: This is similar to `fcntl(fd, F_SETFL, flags)` in POSIX. - pub fn fd_fdstat_set_flags(fd: Fd, flags: Fdflags) -> Errno; - /// Adjust the rights associated with a file descriptor. - /// This can only be used to remove rights, and returns `errno::notcapable` if called in a way that would attempt to add rights - pub fn fd_fdstat_set_rights( - fd: Fd, - fs_rights_base: Rights, - fs_rights_inheriting: Rights, - ) -> Errno; - /// Return the attributes of an open file. - pub fn fd_filestat_get(fd: Fd, buf: *mut Filestat) -> Errno; - /// Adjust the size of an open file. If this increases the file's size, the extra bytes are filled with zeros. - /// Note: This is similar to `ftruncate` in POSIX. - pub fn fd_filestat_set_size(fd: Fd, size: Filesize) -> Errno; - /// Adjust the timestamps of an open file or directory. - /// Note: This is similar to `futimens` in POSIX. - pub fn fd_filestat_set_times( - fd: Fd, - atim: Timestamp, - mtim: Timestamp, - fst_flags: Fstflags, - ) -> Errno; - /// Read from a file descriptor, without using and updating the file descriptor's offset. - /// Note: This is similar to `preadv` in POSIX. - pub fn fd_pread( - fd: Fd, - iovs_ptr: *const Iovec, - iovs_len: usize, - offset: Filesize, - nread: *mut Size, - ) -> Errno; - /// Return a description of the given preopened file descriptor. - pub fn fd_prestat_get(fd: Fd, buf: *mut Prestat) -> Errno; - /// Return a description of the given preopened file descriptor. - pub fn fd_prestat_dir_name(fd: Fd, path: *mut u8, path_len: Size) -> Errno; - /// Write to a file descriptor, without using and updating the file descriptor's offset. - /// Note: This is similar to `pwritev` in POSIX. - pub fn fd_pwrite( - fd: Fd, - iovs_ptr: *const Ciovec, - iovs_len: usize, - offset: Filesize, - nwritten: *mut Size, - ) -> Errno; - /// Read from a file descriptor. - /// Note: This is similar to `readv` in POSIX. - pub fn fd_read(fd: Fd, iovs_ptr: *const Iovec, iovs_len: usize, nread: *mut Size) -> Errno; - /// Read directory entries from a directory. - /// When successful, the contents of the output buffer consist of a sequence of - /// directory entries. Each directory entry consists of a `dirent` object, - /// followed by `dirent::d_namlen` bytes holding the name of the directory - /// entry. - /// This function fills the output buffer as much as possible, potentially - /// truncating the last directory entry. This allows the caller to grow its - /// read buffer size in case it's too small to fit a single large directory - /// entry, or skip the oversized directory entry. - pub fn fd_readdir( - fd: Fd, - buf: *mut u8, - buf_len: Size, - cookie: Dircookie, - bufused: *mut Size, - ) -> Errno; - /// Atomically replace a file descriptor by renumbering another file descriptor. - /// Due to the strong focus on thread safety, this environment does not provide - /// a mechanism to duplicate or renumber a file descriptor to an arbitrary - /// number, like `dup2()`. This would be prone to race conditions, as an actual - /// file descriptor with the same number could be allocated by a different - /// thread at the same time. - /// This function provides a way to atomically renumber file descriptors, which - /// would disappear if `dup2()` were to be removed entirely. - pub fn fd_renumber(fd: Fd, to: Fd) -> Errno; - /// Move the offset of a file descriptor. - /// Note: This is similar to `lseek` in POSIX. - pub fn fd_seek( - fd: Fd, - offset: Filedelta, - whence: Whence, - newoffset: *mut Filesize, - ) -> Errno; - /// Synchronize the data and metadata of a file to disk. - /// Note: This is similar to `fsync` in POSIX. - pub fn fd_sync(fd: Fd) -> Errno; - /// Return the current offset of a file descriptor. - /// Note: This is similar to `lseek(fd, 0, SEEK_CUR)` in POSIX. - pub fn fd_tell(fd: Fd, offset: *mut Filesize) -> Errno; - /// Write to a file descriptor. - /// Note: This is similar to `writev` in POSIX. - pub fn fd_write( - fd: Fd, - iovs_ptr: *const Ciovec, - iovs_len: usize, - nwritten: *mut Size, - ) -> Errno; - /// Create a directory. - /// Note: This is similar to `mkdirat` in POSIX. - pub fn path_create_directory(fd: Fd, path_ptr: *const u8, path_len: usize) -> Errno; - /// Return the attributes of a file or directory. - /// Note: This is similar to `stat` in POSIX. - pub fn path_filestat_get( - fd: Fd, - flags: Lookupflags, - path_ptr: *const u8, - path_len: usize, - buf: *mut Filestat, - ) -> Errno; - /// Adjust the timestamps of a file or directory. - /// Note: This is similar to `utimensat` in POSIX. - pub fn path_filestat_set_times( - fd: Fd, - flags: Lookupflags, - path_ptr: *const u8, - path_len: usize, - atim: Timestamp, - mtim: Timestamp, - fst_flags: Fstflags, - ) -> Errno; - /// Create a hard link. - /// Note: This is similar to `linkat` in POSIX. - pub fn path_link( - old_fd: Fd, - old_flags: Lookupflags, - old_path_ptr: *const u8, - old_path_len: usize, - new_fd: Fd, - new_path_ptr: *const u8, - new_path_len: usize, - ) -> Errno; - /// Open a file or directory. - /// The returned file descriptor is not guaranteed to be the lowest-numbered - /// file descriptor not currently open; it is randomized to prevent - /// applications from depending on making assumptions about indexes, since this - /// is error-prone in multi-threaded contexts. The returned file descriptor is - /// guaranteed to be less than 2**31. - /// Note: This is similar to `openat` in POSIX. - pub fn path_open( - fd: Fd, - dirflags: Lookupflags, - path_ptr: *const u8, - path_len: usize, - oflags: Oflags, - fs_rights_base: Rights, - fs_rights_inheriting: Rights, - fdflags: Fdflags, - opened_fd: *mut Fd, - ) -> Errno; - /// Read the contents of a symbolic link. - /// Note: This is similar to `readlinkat` in POSIX. - pub fn path_readlink( - fd: Fd, - path_ptr: *const u8, - path_len: usize, - buf: *mut u8, - buf_len: Size, - bufused: *mut Size, - ) -> Errno; - /// Remove a directory. - /// Return `errno::notempty` if the directory is not empty. - /// Note: This is similar to `unlinkat(fd, path, AT_REMOVEDIR)` in POSIX. - pub fn path_remove_directory(fd: Fd, path_ptr: *const u8, path_len: usize) -> Errno; - /// Rename a file or directory. - /// Note: This is similar to `renameat` in POSIX. - pub fn path_rename( - fd: Fd, - old_path_ptr: *const u8, - old_path_len: usize, - new_fd: Fd, - new_path_ptr: *const u8, - new_path_len: usize, - ) -> Errno; - /// Create a symbolic link. - /// Note: This is similar to `symlinkat` in POSIX. - pub fn path_symlink( - old_path_ptr: *const u8, - old_path_len: usize, - fd: Fd, - new_path_ptr: *const u8, - new_path_len: usize, - ) -> Errno; - /// Unlink a file. - /// Return `errno::isdir` if the path refers to a directory. - /// Note: This is similar to `unlinkat(fd, path, 0)` in POSIX. - pub fn path_unlink_file(fd: Fd, path_ptr: *const u8, path_len: usize) -> Errno; - /// Concurrently poll for the occurrence of a set of events. - pub fn poll_oneoff( - r#in: *const Subscription, - out: *mut Event, - nsubscriptions: Size, - nevents: *mut Size, - ) -> Errno; - /// Terminate the process normally. An exit code of 0 indicates successful - /// termination of the program. The meanings of other values is dependent on - /// the environment. - pub fn proc_exit(rval: Exitcode) -> !; - /// Send a signal to the process of the calling thread. - /// Note: This is similar to `raise` in POSIX. - pub fn proc_raise(sig: Signal) -> Errno; - /// Temporarily yield execution of the calling thread. - /// Note: This is similar to `sched_yield` in POSIX. - pub fn sched_yield() -> Errno; - /// Write high-quality random data into a buffer. - /// This function blocks when the implementation is unable to immediately - /// provide sufficient high-quality random data. - /// This function may execute slowly, so when large mounts of random data are - /// required, it's advisable to use this function to seed a pseudo-random - /// number generator, rather than to provide the random data directly. - pub fn random_get(buf: *mut u8, buf_len: Size) -> Errno; - /// Receive a message from a socket. - /// Note: This is similar to `recv` in POSIX, though it also supports reading - /// the data into multiple buffers in the manner of `readv`. - pub fn sock_recv( - fd: Fd, - ri_data_ptr: *const Iovec, - ri_data_len: usize, - ri_flags: Riflags, - ro_datalen: *mut Size, - ro_flags: *mut Roflags, - ) -> Errno; - /// Send a message on a socket. - /// Note: This is similar to `send` in POSIX, though it also supports writing - /// the data from multiple buffers in the manner of `writev`. - pub fn sock_send( - fd: Fd, - si_data_ptr: *const Ciovec, - si_data_len: usize, - si_flags: Siflags, - so_datalen: *mut Size, - ) -> Errno; - /// Shut down socket send and receive channels. - /// Note: This is similar to `shutdown` in POSIX. - pub fn sock_shutdown(fd: Fd, how: Sdflags) -> Errno; - } -} diff -Nru temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/lib.rs temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/lib.rs --- temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -//! Raw API bindings to the WebAssembly System Interface (WASI) -//! -//! This crate provides Rust API bindings to WASI APIs. All WASI APIs are -//! exported from this crate and provided with the appropriate type signatures. -//! This crate is entirely procedurally generated from the `*.witx` files that -//! describe the WASI API. -//! -//! # WASI API Version -//! -//! The WASI API is evolving over time. It is both gaining new features as well -//! as tweaking the ABI of existing features. As a result it's important to -//! understand what version of this crate you're using and how it relates to -//! the WASI version of the spec. -//! -//! The WASI specification is organized into phases where there is a snapshot -//! at any one point in time describing the current state of the specification. -//! This crate implements a particular snapshot. You can find the snapshot -//! version implemented in this crate in the build metadata of the crate -//! version number. For example something like `0.9.0+wasi-snapshot-preview1` -//! means that this crate's own personal version is 0.9.0 and it implements the -//! `wasi-snapshot-preview1` snapshot. A major release of this crate (i.e. -//! bumping the "0.9.0") is expected whenever the generated code changes -//! or a new WASI snapshot is used. -//! -//! # Crate Features -//! -//! This crate supports one feature, `std`, which implements the standard -//! `Error` trait for the exported [`Error`] type in this crate. This is -//! enabled by default but can be disabled to make the library `no_std` -//! compatible. - -#![no_std] - -mod error; -mod lib_generated; -pub use lib_generated::*; - -/// Special `Dircookie` value indicating the start of a directory. -pub const DIRCOOKIE_START: Dircookie = 0; - -/// The "standard input" descriptor number. -pub const FD_STDIN: Fd = 0; - -/// The "standard output" descriptor number. -pub const FD_STDOUT: Fd = 1; - -/// The "standard error" descriptor number. -pub const FD_STDERR: Fd = 2; diff -Nru temporalio-1.3.0/vendor/wasm-streams/.cargo-checksum.json temporalio-1.3.0/vendor/wasm-streams/.cargo-checksum.json --- temporalio-1.3.0/vendor/wasm-streams/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasm-streams/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"4ac04e7af3e1d8601f65748313dd21979e7bd6d37fe30b516c9102c1aa30a0a5","CONTRIBUTING.md":"340b300999190f958f6e6bfe3772ff16182ef17b4e33ae8a8b509987fee949d0","Cargo.lock":"83bf1e32796f9718fcf27551812c3d4c28198b909b0bf728950d206c60acd3e2","Cargo.toml":"9a217aa411023f1c1f0c992e5e2f760af25bcfc8ab4f5eeee72c7cf23ded33ff","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"96ac1ba5ac3f25463f0b00ade304295e3bf6717aa15df836fc29ed1ebf9eb6b9","examples/fetch_as_stream.rs":"7224bf765d6ef40bc83b74683dbd501d33e01fba31cfc98d3c8e8605ed4ae661","src/lib.rs":"9f30232d62cdcec3877159f36e8c3279c85951e4f84b8f8f0bcd7631d0010101","src/queuing_strategy/mod.rs":"e195b58197e7170536e83ea0b3aeb75232df7d6f4e46e1acb9e9c77450aca3bc","src/readable/byob_reader.rs":"67beb2e16adb99c51138e53ccd785e324a63aac2baad072788f5e716f84d66a1","src/readable/default_reader.rs":"7cc3563ddc9b1bdbe48c66e7d8553d09e4670587693343534bf35b7c57ff5530","src/readable/into_async_read.rs":"46a056efdeb6d82edb144025d17c5f6e983fa19e44afeb49bf5ccb0682c8240e","src/readable/into_stream.rs":"bb7c7aa104d0c2b3671fb7e69308f63c069ce087679e7a55baae6b5d66d658c3","src/readable/into_underlying_byte_source.rs":"144c344a382ab9ef55954d30c3503f416cf0f45fed16407c00ab0247cdcea874","src/readable/into_underlying_source.rs":"009f0c27d3902d6c220cecc5f0419d2ae96860310f432e9e539e102480f5316c","src/readable/mod.rs":"f6297aad3d8de3dfd63868c656170bee4b35a6b36e57488b247e8f85157196d4","src/readable/pipe_options.rs":"1134d010a85027539565d07ce7378098efdeb294f1ca99722820b53824f4c6d7","src/readable/sys.rs":"da84bdf54d0283782ecb3388ef85e71f6544e4fa0678eeb0c4a968b262b8715a","src/transform/mod.rs":"498ba4a8d195904e6c6ebdcf7f24a0edf4756b8d8c3e2b50ab903ceeee6bff27","src/transform/sys.rs":"323fc3014768afa5e83fd1032f984f2a07bdfa1db061a4c0fcb7fb8a777b7b93","src/util.rs":"1270a7ee5e5527e0b9b84bcbaa06c71dc1bd8533b0f290a6dbc51db5c2db204b","src/writable/default_writer.rs":"40f8b4cfa5c1ebb53971e49783a3ac5ab66943e03755956200c8f6b2d844af95","src/writable/into_async_write.rs":"f2ad60ef9a850543a7c3e5c5b14d561f7ac76664e0426f173a30af78333018d4","src/writable/into_sink.rs":"e0941ffdca92ac3f7ac7bed48401dc841df684bab03ed611ba6bcc8b31b15dc6","src/writable/into_underlying_sink.rs":"335f153c83e5775fee197440cd6c331e0e73f24da57ec93d8a1a018d4df9ae61","src/writable/mod.rs":"0aa21862810468d14d9c0b991a9af26e40957bb88f738fc8db39b1d32c36a772","src/writable/sys.rs":"3d92c2d77764f003c418721b688e66c08269cd48c10ba175b86cc5ef282157bf","tests/js/mod.rs":"bbffbbddcec746a37ab7617a9a398a8916009354c362c7fa1905e8cc0d727150","tests/js/readable_stream.js":"1cd234809d2babc614c5bc6ad085a424e1eeca01d8665097c4ac409ac976711f","tests/js/readable_stream.rs":"a52d0fb306c2d7a98d8148d5dd46ff5bc3c9c28392dad289dc873e48ee177936","tests/js/transform_stream.js":"48dbc3b2f94865165f95ff61e0cacb78b09fc6cc9b2ca70a86b5ea7f7dc384e1","tests/js/transform_stream.rs":"ef6cfccccda452ce0dab03cba4fc4e4491f15d992706797d02e16fcacc952fcf","tests/js/writable_stream.js":"1eca123bc7450db9c831a8c628eb667858e10182c045aa686c47fabc013ee383","tests/js/writable_stream.rs":"0531e9c35e5f2dba4926bfda2d5219f8a14151465850684b2aa2e73024642315","tests/tests/mod.rs":"2b83cd537161812dabf09b1975241ae6832c2bfb605c04df0be7f3be128a02d1","tests/tests/pipe.rs":"51cfc4df7fc23a82418ce8025ffc4755139820ce0ea63cbbaee15b9123f99cc3","tests/tests/readable_byte_stream.rs":"3838cf709725e8ebb8f7d25e17a68384a1e292ce55273809bad8d34d540eb733","tests/tests/readable_stream.rs":"dd809541b7a78ac41d22f85a6ab9772dfb5cf6cf3962feef74751cee644c26b9","tests/tests/transform_stream.rs":"7275b9972ed283edd123c7c7207e3eec1de78abd2b1c91516e7f9be244a5ca74","tests/tests/writable_stream.rs":"83defa6d9e423afd17300e0d4305b97983ee7152f4c3cd03eb44d605654e555f","tests/unit.rs":"d7a6c60a38128c77438afba898077028420c9a58a7166a9f5caa96f08bfd602b","tests/util/byte_channel.rs":"530fc861a13d30d7b520e9b8e300724b1c4b5f6e378eec95ee00035ed9b318d0","tests/util/drop_observer.rs":"be193bd2b279276e6ad429c5559b0e786ac0c10cf1696b4db7ecbde34192a349","tests/util/mod.rs":"3563f2e28a7ac38e41d8a5a919262e433ebd8e3bcd457367cf3b1c71561ec6a4","tests/util/simple_channel.rs":"895b138fb0cdc9d00ee2594d0fe8352cc50c721f6355611d33b807ac0a09e4b3","tests/web.rs":"b54b7ea80f60a2183c8913ba9289941df769c8a2e006fe08f6c430dcffe6b472","webdriver.json":"22b7266ae70421317fda65d595149f1c294f2e72ae5bb99165e1be139f83222a"},"package":"6bbae3363c08332cadccd13b67db371814cd214c2524020932f0804b8cf7c078"} \ No newline at end of file +{"files":{"CHANGELOG.md":"017a46c810c51a475d183436a513a37a04dc4a5a5594f1342311e13aa7665b5c","CONTRIBUTING.md":"340b300999190f958f6e6bfe3772ff16182ef17b4e33ae8a8b509987fee949d0","Cargo.lock":"da65579c97be020acee70bb0ba0a99b22bc1c7c259b235723cc4a4ab86bda751","Cargo.toml":"0e7d2d3a327741b3f70c11ba7969391ec818c21db32c787b9265d3646fa40269","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"96ac1ba5ac3f25463f0b00ade304295e3bf6717aa15df836fc29ed1ebf9eb6b9","examples/fetch_as_stream.rs":"7224bf765d6ef40bc83b74683dbd501d33e01fba31cfc98d3c8e8605ed4ae661","src/lib.rs":"9f30232d62cdcec3877159f36e8c3279c85951e4f84b8f8f0bcd7631d0010101","src/queuing_strategy/mod.rs":"e195b58197e7170536e83ea0b3aeb75232df7d6f4e46e1acb9e9c77450aca3bc","src/readable/byob_reader.rs":"5ad5dc17a75ff6a08011ba47e0040fe95a71152c2eb3a3da91cde5c3d5451049","src/readable/default_reader.rs":"8546f985915b942db3b5ed89ed617d14e3be9cd9a570e97b1b9d841c8ca99fce","src/readable/into_async_read.rs":"03fa1db1ae31e0010f63200685f1e99483d433647f258cc7885e52073980caec","src/readable/into_stream.rs":"ec8048b5067963b9494d643a6a4e611edd2161b96705367786b60c905e3c1885","src/readable/into_underlying_byte_source.rs":"f76a62c9a40bc8e94bf73a665ade3c5d6c27678f90179a4a85c7bbc359073758","src/readable/into_underlying_source.rs":"009f0c27d3902d6c220cecc5f0419d2ae96860310f432e9e539e102480f5316c","src/readable/mod.rs":"f6297aad3d8de3dfd63868c656170bee4b35a6b36e57488b247e8f85157196d4","src/readable/pipe_options.rs":"1134d010a85027539565d07ce7378098efdeb294f1ca99722820b53824f4c6d7","src/readable/sys.rs":"da84bdf54d0283782ecb3388ef85e71f6544e4fa0678eeb0c4a968b262b8715a","src/transform/mod.rs":"498ba4a8d195904e6c6ebdcf7f24a0edf4756b8d8c3e2b50ab903ceeee6bff27","src/transform/sys.rs":"323fc3014768afa5e83fd1032f984f2a07bdfa1db061a4c0fcb7fb8a777b7b93","src/util.rs":"1270a7ee5e5527e0b9b84bcbaa06c71dc1bd8533b0f290a6dbc51db5c2db204b","src/writable/default_writer.rs":"40f8b4cfa5c1ebb53971e49783a3ac5ab66943e03755956200c8f6b2d844af95","src/writable/into_async_write.rs":"f2ad60ef9a850543a7c3e5c5b14d561f7ac76664e0426f173a30af78333018d4","src/writable/into_sink.rs":"e0941ffdca92ac3f7ac7bed48401dc841df684bab03ed611ba6bcc8b31b15dc6","src/writable/into_underlying_sink.rs":"335f153c83e5775fee197440cd6c331e0e73f24da57ec93d8a1a018d4df9ae61","src/writable/mod.rs":"0aa21862810468d14d9c0b991a9af26e40957bb88f738fc8db39b1d32c36a772","src/writable/sys.rs":"3d92c2d77764f003c418721b688e66c08269cd48c10ba175b86cc5ef282157bf","tests/js/mod.rs":"bbffbbddcec746a37ab7617a9a398a8916009354c362c7fa1905e8cc0d727150","tests/js/readable_stream.js":"697c6abd63ba1cfb44422a1a0aea0f6cb0fb997403e041bd3c73e49dc92122b5","tests/js/readable_stream.rs":"e3c6e2bdeda177deb3e315f240c44c4ea48aed8da14413cb7407546306aea26b","tests/js/transform_stream.js":"48dbc3b2f94865165f95ff61e0cacb78b09fc6cc9b2ca70a86b5ea7f7dc384e1","tests/js/transform_stream.rs":"ef6cfccccda452ce0dab03cba4fc4e4491f15d992706797d02e16fcacc952fcf","tests/js/writable_stream.js":"1eca123bc7450db9c831a8c628eb667858e10182c045aa686c47fabc013ee383","tests/js/writable_stream.rs":"0531e9c35e5f2dba4926bfda2d5219f8a14151465850684b2aa2e73024642315","tests/tests/mod.rs":"2b83cd537161812dabf09b1975241ae6832c2bfb605c04df0be7f3be128a02d1","tests/tests/pipe.rs":"51cfc4df7fc23a82418ce8025ffc4755139820ce0ea63cbbaee15b9123f99cc3","tests/tests/readable_byte_stream.rs":"62ada0b4aead0f2a2823a6d44a38cd1b432372eb73c1f2436cf807415375fe0d","tests/tests/readable_stream.rs":"96efaa6c9851fdf038fc5223ce614018bb1f29f3f939e13cc64ab586c78d4199","tests/tests/transform_stream.rs":"7275b9972ed283edd123c7c7207e3eec1de78abd2b1c91516e7f9be244a5ca74","tests/tests/writable_stream.rs":"83defa6d9e423afd17300e0d4305b97983ee7152f4c3cd03eb44d605654e555f","tests/unit.rs":"d7a6c60a38128c77438afba898077028420c9a58a7166a9f5caa96f08bfd602b","tests/util/byte_channel.rs":"530fc861a13d30d7b520e9b8e300724b1c4b5f6e378eec95ee00035ed9b318d0","tests/util/drop_observer.rs":"be193bd2b279276e6ad429c5559b0e786ac0c10cf1696b4db7ecbde34192a349","tests/util/mod.rs":"3563f2e28a7ac38e41d8a5a919262e433ebd8e3bcd457367cf3b1c71561ec6a4","tests/util/simple_channel.rs":"895b138fb0cdc9d00ee2594d0fe8352cc50c721f6355611d33b807ac0a09e4b3","tests/web.rs":"b54b7ea80f60a2183c8913ba9289941df769c8a2e006fe08f6c430dcffe6b472","webdriver.json":"22b7266ae70421317fda65d595149f1c294f2e72ae5bb99165e1be139f83222a"},"package":"b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/wasm-streams/Cargo.lock temporalio-1.3.0/vendor/wasm-streams/Cargo.lock --- temporalio-1.3.0/vendor/wasm-streams/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasm-streams/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -311,7 +311,7 @@ [[package]] name = "wasm-streams" -version = "0.2.3" +version = "0.3.0" dependencies = [ "futures-util", "js-sys", diff -Nru temporalio-1.3.0/vendor/wasm-streams/Cargo.toml temporalio-1.3.0/vendor/wasm-streams/Cargo.toml --- temporalio-1.3.0/vendor/wasm-streams/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasm-streams/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2021" name = "wasm-streams" -version = "0.2.3" +version = "0.3.0" authors = ["Mattias Buelens "] exclude = [".github/"] description = """ diff -Nru temporalio-1.3.0/vendor/wasm-streams/CHANGELOG.md temporalio-1.3.0/vendor/wasm-streams/CHANGELOG.md --- temporalio-1.3.0/vendor/wasm-streams/CHANGELOG.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasm-streams/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,5 +1,13 @@ # Changelog +## v0.3.0 (2022-10-16) + +* Added support for web workers, by removing usage of [JavaScript snippets](https://rustwasm.github.io/docs/wasm-bindgen/reference/js-snippets.html). ([#13](https://github.com/MattiasBuelens/wasm-streams/issues/13), [#14](https://github.com/MattiasBuelens/wasm-streams/pull/14)) +* âš  **Breaking change:** This removes a workaround for [Chromium bug #1187774](https://crbug.com/1187774) that was previously needed for `ReadableStream::from_async_read`. This bug was fixed upstream in March 2021 with Chrome 91. ([#14](https://github.com/MattiasBuelens/wasm-streams/pull/14)) +* Updated documentation of `ReadableStream(Default|BYOB)Reader::release_lock()` around the expected behavior when there are pending read requests. + See the corresponding [Streams specification change](https://github.com/whatwg/streams/commit/d5f92d9f17306d31ba6b27424d23d58e89bf64a5) for details. + ([#15](https://github.com/MattiasBuelens/wasm-streams/pull/15)) + ## v0.2.3 (2022-05-18) * Replaced `futures` dependency with `futures-util` to improve compilation times ([#11](https://github.com/MattiasBuelens/wasm-streams/pull/11), [#12](https://github.com/MattiasBuelens/wasm-streams/pull/12)) diff -Nru temporalio-1.3.0/vendor/wasm-streams/src/readable/byob_reader.rs temporalio-1.3.0/vendor/wasm-streams/src/readable/byob_reader.rs --- temporalio-1.3.0/vendor/wasm-streams/src/readable/byob_reader.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasm-streams/src/readable/byob_reader.rs 2023-10-30 19:40:00.000000000 +0000 @@ -14,9 +14,6 @@ /// This is returned by the [`get_byob_reader`](ReadableStream::get_byob_reader) method. /// /// When the reader is dropped, it automatically [releases its lock](https://streams.spec.whatwg.org/#release-a-lock). -/// If the reader still has a pending read request at this point (i.e. if a future returned -/// by [`read`](Self::read) is not yet ready), then this will **panic**. You must either `await` -/// all `read` futures, or [`cancel`](Self::cancel) the stream to discard any pending `read` futures. #[derive(Debug)] pub struct ReadableStreamBYOBReader<'stream> { raw: sys::ReadableStreamBYOBReader, @@ -146,9 +143,14 @@ /// [Releases](https://streams.spec.whatwg.org/#release-a-lock) this reader's lock on the /// corresponding stream. /// - /// **Panics** if the reader still has a pending read request, i.e. if a future returned - /// by [`read`](Self::read) is not yet ready. For a non-panicking variant, - /// use [`try_release_lock`](Self::try_release_lock). + /// [As of January 2022](https://github.com/whatwg/streams/commit/d5f92d9f17306d31ba6b27424d23d58e89bf64a5), + /// the Streams standard allows the lock to be released even when there are still pending read + /// requests. Such requests will automatically become rejected, and this function will always + /// succeed. + /// + /// However, if the Streams implementation is not yet up-to-date with this change, then + /// releasing the lock while there are pending read requests will **panic**. For a non-panicking + /// variant, use [`try_release_lock`](Self::try_release_lock). #[inline] pub fn release_lock(mut self) { self.release_lock_mut() @@ -163,8 +165,13 @@ /// Try to [release](https://streams.spec.whatwg.org/#release-a-lock) this reader's lock on the /// corresponding stream. /// - /// The lock cannot be released while the reader still has a pending read request, i.e. - /// if a future returned by [`read`](Self::read) is not yet ready. Attempting to do so will + /// [As of January 2022](https://github.com/whatwg/streams/commit/d5f92d9f17306d31ba6b27424d23d58e89bf64a5), + /// the Streams standard allows the lock to be released even when there are still pending read + /// requests. Such requests will automatically become rejected, and this function will always + /// return `Ok(())`. + /// + /// However, if the Streams implementation is not yet up-to-date with this change, then + /// the lock cannot be released while there are pending read requests. Attempting to do so will /// return an error and leave the reader locked to the stream. #[inline] pub fn try_release_lock(self) -> Result<(), (js_sys::Error, Self)> { diff -Nru temporalio-1.3.0/vendor/wasm-streams/src/readable/default_reader.rs temporalio-1.3.0/vendor/wasm-streams/src/readable/default_reader.rs --- temporalio-1.3.0/vendor/wasm-streams/src/readable/default_reader.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasm-streams/src/readable/default_reader.rs 2023-10-30 19:40:00.000000000 +0000 @@ -13,9 +13,6 @@ /// This is returned by the [`get_reader`](ReadableStream::get_reader) method. /// /// When the reader is dropped, it automatically [releases its lock](https://streams.spec.whatwg.org/#release-a-lock). -/// If the reader still has a pending read request at this point (i.e. if a future returned -/// by [`read`](Self::read) is not yet ready), then this will **panic**. You must either `await` -/// all `read` futures, or [`cancel`](Self::cancel) the stream to discard any pending `read` futures. #[derive(Debug)] pub struct ReadableStreamDefaultReader<'stream> { raw: sys::ReadableStreamDefaultReader, @@ -80,9 +77,14 @@ /// [Releases](https://streams.spec.whatwg.org/#release-a-lock) this reader's lock on the /// corresponding stream. /// - /// **Panics** if the reader still has a pending read request, i.e. if a future returned - /// by [`read`](Self::read) is not yet ready. For a non-panicking variant, - /// use [`try_release_lock`](Self::try_release_lock). + /// [As of January 2022](https://github.com/whatwg/streams/commit/d5f92d9f17306d31ba6b27424d23d58e89bf64a5), + /// the Streams standard allows the lock to be released even when there are still pending read + /// requests. Such requests will automatically become rejected, and this function will always + /// succeed. + /// + /// However, if the Streams implementation is not yet up-to-date with this change, then + /// releasing the lock while there are pending read requests will **panic**. For a non-panicking + /// variant, use [`try_release_lock`](Self::try_release_lock). #[inline] pub fn release_lock(mut self) { self.release_lock_mut() @@ -97,8 +99,13 @@ /// Try to [release](https://streams.spec.whatwg.org/#release-a-lock) this reader's lock on the /// corresponding stream. /// - /// The lock cannot be released while the reader still has a pending read request, i.e. - /// if a future returned by [`read`](Self::read) is not yet ready. Attempting to do so will + /// [As of January 2022](https://github.com/whatwg/streams/commit/d5f92d9f17306d31ba6b27424d23d58e89bf64a5), + /// the Streams standard allows the lock to be released even when there are still pending read + /// requests. Such requests will automatically become rejected, and this function will always + /// return `Ok(())`. + /// + /// However, if the Streams implementation is not yet up-to-date with this change, then + /// the lock cannot be released while there are pending read requests. Attempting to do so will /// return an error and leave the reader locked to the stream. #[inline] pub fn try_release_lock(self) -> Result<(), (js_sys::Error, Self)> { diff -Nru temporalio-1.3.0/vendor/wasm-streams/src/readable/into_async_read.rs temporalio-1.3.0/vendor/wasm-streams/src/readable/into_async_read.rs --- temporalio-1.3.0/vendor/wasm-streams/src/readable/into_async_read.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasm-streams/src/readable/into_async_read.rs 2023-10-30 19:40:00.000000000 +0000 @@ -20,13 +20,6 @@ /// When this `AsyncRead` is dropped, it also drops its reader which in turn /// [releases its lock](https://streams.spec.whatwg.org/#release-a-lock). /// -/// When used through [`ReadableStream::into_async_read`](super::ReadableStream::into_async_read), -/// the stream is automatically cancelled before dropping the reader, discarding any pending read requests. -/// When used through [`ReadableStreamBYOBReader::into_async_read`](super::ReadableStreamBYOBReader::into_async_read), -/// it is up to the user to either manually [cancel](Self::cancel) the stream, -/// or to ensure that there are no pending read requests when dropped. -/// See the documentation on [`ReadableStreamBYOBReader`] for more details on the drop behavior. -/// /// [`AsyncRead`]: https://docs.rs/futures/0.3.18/futures/io/trait.AsyncRead.html #[must_use = "readers do nothing unless polled"] #[derive(Debug)] diff -Nru temporalio-1.3.0/vendor/wasm-streams/src/readable/into_stream.rs temporalio-1.3.0/vendor/wasm-streams/src/readable/into_stream.rs --- temporalio-1.3.0/vendor/wasm-streams/src/readable/into_stream.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasm-streams/src/readable/into_stream.rs 2023-10-30 19:40:00.000000000 +0000 @@ -16,13 +16,6 @@ /// When this `Stream` is dropped, it also drops its reader which in turn /// [releases its lock](https://streams.spec.whatwg.org/#release-a-lock). /// -/// When used through [`ReadableStream::into_stream`](super::ReadableStream::into_stream), -/// the stream is automatically cancelled before dropping the reader, discarding any pending read requests. -/// When used through [`ReadableStreamDefaultReader::into_stream`](super::ReadableStreamDefaultReader::into_stream), -/// it is up to the user to either manually [cancel](Self::cancel) the stream, -/// or to ensure that there are no pending read requests when dropped. -/// See the documentation on [`ReadableStreamDefaultReader`] for more details on the drop behavior. -/// /// [`Stream`]: https://docs.rs/futures/0.3.18/futures/stream/trait.Stream.html #[must_use = "streams do nothing unless polled"] #[derive(Debug)] diff -Nru temporalio-1.3.0/vendor/wasm-streams/src/readable/into_underlying_byte_source.rs temporalio-1.3.0/vendor/wasm-streams/src/readable/into_underlying_byte_source.rs --- temporalio-1.3.0/vendor/wasm-streams/src/readable/into_underlying_byte_source.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasm-streams/src/readable/into_underlying_byte_source.rs 2023-10-30 19:40:00.000000000 +0000 @@ -31,24 +31,12 @@ } } -#[wasm_bindgen(inline_js = "export function bytes_literal() { return \"bytes\"; }")] -extern "C" { - fn bytes_literal() -> JsValue; -} - #[allow(clippy::await_holding_refcell_ref)] #[wasm_bindgen] impl IntoUnderlyingByteSource { - // Chromium has a bug where it only recognizes `new ReadableStream({ type: "bytes" })`, - // not `new ReadableStream({ type: "by" + "tes" })` or any other non-literal string - // that equals "bytes". Therefore, we cannot return a Rust `String` here, since - // that needs to be converted to a JavaScript string at runtime. - // Instead, we call a function that returns the desired string literal as a `JsValue` - // and pass that value around. It looks silly, but it works. - // See https://crbug.com/1187774 #[wasm_bindgen(getter, js_name = type)] - pub fn type_(&self) -> JsValue { - bytes_literal() + pub fn type_(&self) -> String { + "bytes".into() } #[wasm_bindgen(getter, js_name = autoAllocateChunkSize)] diff -Nru temporalio-1.3.0/vendor/wasm-streams/tests/js/readable_stream.js temporalio-1.3.0/vendor/wasm-streams/tests/js/readable_stream.js --- temporalio-1.3.0/vendor/wasm-streams/tests/js/readable_stream.js 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasm-streams/tests/js/readable_stream.js 2023-10-30 19:40:00.000000000 +0000 @@ -45,4 +45,20 @@ } } }); -} \ No newline at end of file +} + +/** + * Tests whether `reader.releaseLock()` is allowed while there are pending read requests. + * + * See: https://github.com/whatwg/streams/commit/d5f92d9f17306d31ba6b27424d23d58e89bf64a5 + */ +export function supports_release_lock_with_pending_read() { + try { + const reader = new ReadableStream().getReader(); + reader.read().then(() => {}, () => {}); + reader.releaseLock(); + return true; + } catch { + return false; + } +} diff -Nru temporalio-1.3.0/vendor/wasm-streams/tests/js/readable_stream.rs temporalio-1.3.0/vendor/wasm-streams/tests/js/readable_stream.rs --- temporalio-1.3.0/vendor/wasm-streams/tests/js/readable_stream.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasm-streams/tests/js/readable_stream.rs 2023-10-30 19:40:00.000000000 +0000 @@ -8,4 +8,5 @@ pub fn new_noop_readable_byte_stream() -> sys::ReadableStream; pub fn new_readable_stream_from_array(chunks: Box<[JsValue]>) -> sys::ReadableStream; pub fn new_readable_byte_stream_from_array(chunks: Box<[JsValue]>) -> sys::ReadableStream; + pub fn supports_release_lock_with_pending_read() -> bool; } diff -Nru temporalio-1.3.0/vendor/wasm-streams/tests/tests/readable_byte_stream.rs temporalio-1.3.0/vendor/wasm-streams/tests/tests/readable_byte_stream.rs --- temporalio-1.3.0/vendor/wasm-streams/tests/tests/readable_byte_stream.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasm-streams/tests/tests/readable_byte_stream.rs 2023-10-30 19:40:00.000000000 +0000 @@ -204,7 +204,34 @@ assert!(!readable.is_locked()); } -async fn test_readable_byte_stream_abort_read(mut readable: ReadableStream) { +async fn test_readable_byte_stream_abort_read(readable: ReadableStream) { + if supports_release_lock_with_pending_read() { + test_readable_byte_stream_abort_read_new(readable).await; + } else { + test_readable_byte_stream_abort_read_old(readable).await; + } +} + +async fn test_readable_byte_stream_abort_read_new(mut readable: ReadableStream) { + let mut reader = readable.get_byob_reader(); + + // Start reading + // Since the stream will never produce a chunk, this read will remain pending forever + let mut dst = [0u8; 3]; + let mut fut = reader.read(&mut dst).boxed_local(); + // We need to poll the future at least once to start the read + let poll_result = poll!(&mut fut); + assert!(matches!(poll_result, Poll::Pending)); + // Drop the future, to regain control over the reader + drop(fut); + + // Releasing the lock should work even while there are pending reads + reader + .try_release_lock() + .expect("releasing the reader should work even while there are pending reads"); +} + +async fn test_readable_byte_stream_abort_read_old(mut readable: ReadableStream) { let mut reader = readable.get_byob_reader(); // Start reading diff -Nru temporalio-1.3.0/vendor/wasm-streams/tests/tests/readable_stream.rs temporalio-1.3.0/vendor/wasm-streams/tests/tests/readable_stream.rs --- temporalio-1.3.0/vendor/wasm-streams/tests/tests/readable_stream.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/wasm-streams/tests/tests/readable_stream.rs 2023-10-30 19:40:00.000000000 +0000 @@ -123,6 +123,34 @@ #[wasm_bindgen_test] async fn test_readable_stream_abort_read() { + if supports_release_lock_with_pending_read() { + test_readable_stream_abort_read_new().await; + } else { + test_readable_stream_abort_read_old().await; + } +} + +async fn test_readable_stream_abort_read_new() { + let stream = pending(); + let mut readable = ReadableStream::from_stream(stream); + let mut reader = readable.get_reader(); + + // Start reading + // Since the stream will never produce a chunk, this read will remain pending forever + let mut fut = reader.read().boxed_local(); + // We need to poll the future at least once to start the read + let poll_result = poll!(&mut fut); + assert!(matches!(poll_result, Poll::Pending)); + // Drop the future, to regain control over the reader + drop(fut); + + // Releasing the lock should work even while there are pending reads + reader + .try_release_lock() + .expect("releasing the reader should work even while there are pending reads"); +} + +async fn test_readable_stream_abort_read_old() { let stream = pending(); let (stream, observer) = observe_drop(stream); let mut readable = ReadableStream::from_stream(stream); diff -Nru temporalio-1.3.0/vendor/webpki/.cargo-checksum.json temporalio-1.3.0/vendor/webpki/.cargo-checksum.json --- temporalio-1.3.0/vendor/webpki/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -{"files":{"Cargo.toml":"37d525c41dd34ab97ca0eed5932bb72d22da0dac060257b304828bf9ee22eb31","LICENSE":"5b698ca13897be3afdb7174256fa1574f8c6892b8bea1a66dd6469d3fe27885a","README.md":"87d46581bccb893db159eb6d646ff6ed2bb00404a0b1aad0a8695c3f304dfdf7","src/calendar.rs":"3a6055dae96bb6ac870bb3a56afe4a4c0f4daed92543621dd3b9229857d7873e","src/cert.rs":"a288924d6e7bfc0ad9cd8f10d8506cb45ba4af4f3ac08d0ecc9aba6ee35f9294","src/data/README.md":"d11d9e6adfe7c9e84d9c5956e5257eb656640f817aab391d3eef4878a73aeb20","src/data/alg-ecdsa-p256.der":"431ab0da5859f972141d7a6b17bfff1006ec2465878890eecacf4764748f999a","src/data/alg-ecdsa-p384.der":"a6307e2efeff1b4db45622b626b9a0f2b6395be5dd4024a899c057e512a0207e","src/data/alg-ecdsa-sha256.der":"8748ad98184c8f81b5db874ef1b7d3599afe05e2f92dac215a77f45e9b0699bc","src/data/alg-ecdsa-sha384.der":"5f6e0dc69f6930ca890ebcafaf7677254640b931439cd5bcad7688b1a06aaf92","src/data/alg-ed25519.der":"0b6d661fe75a1ce7a832d515b39b504032f1a6cbb67a5113fa74d635d038f4d9","src/data/alg-rsa-encryption.der":"7bc023427767a2f2e156f8ae030d06d19f862e326b952116649b423c3ff7110e","src/data/alg-rsa-pkcs1-sha256.der":"c0d1c5108d05adfdf58c73697af5c4e644d1a09fb2e4a76361c048eb0ec7a219","src/data/alg-rsa-pkcs1-sha384.der":"d3e50513620bac7e02f5c1821c569cf4fc2ca5a891fd1103e36574c77e6a888a","src/data/alg-rsa-pkcs1-sha512.der":"3705399877ad5d5bb559e5b5ed3cd80b352166511c2fd2b8f8959e1176ed72f8","src/data/alg-rsa-pss-sha256.der":"6eeb65499d8c64c3ef3e74305f2daaca0d947e7fca735ad072b5581392d73068","src/data/alg-rsa-pss-sha384.der":"b6e27adae679feb8f49925f4457da316657a6b7a55a1bfd164c66eec59d7d090","src/data/alg-rsa-pss-sha512.der":"60cea04c0dcb23c248eb644fe036d1b6b883004f73c68785895c885c8fa5d688","src/der.rs":"3cbb15c8503fc7597a543ea1f2d167a7a375cf3c8fbf8404088e123092c76e4a","src/end_entity.rs":"2226163c0d25c55e86b4f878892aafd3b84bf3b434dfde6868b1a690b2664d44","src/error.rs":"b89604b4105ed35c8b30dd9ccfce54d8b24b698e696a6876bab77bf1a5bc4ae5","src/lib.rs":"c1d9e99a81d4225349c3a058881a3384e20c8666eaa13484e26f98153d0fa931","src/name.rs":"765b83112277f6bca6f6a46d55ea8beeb2c8cc32c2f44b03a40b665582e5aba8","src/name/dns_name.rs":"066b586b31ff238ad4cf2426278fd3fdad5bfc937b29c482e70504aa8bc763b9","src/name/ip_address.rs":"7a2b1c618d5a58addd1255cf836794478e24fcd8c0e0536f4da61823f466b270","src/name/verify.rs":"68803da93be7e2e7b3be26a6bec5b17bb060ccda86f8f8c27a20a3869947ef6a","src/signed_data.rs":"19f397b3ec287abc5ee1e6946416b188844fedb056869a01c46487065c364d09","src/time.rs":"1534f96f964acaf7dcaf6fee974f216241d39a52ff28779b264b79f1f949b072","src/trust_anchor.rs":"10920d313c4cc3ffa4eaea745b53c87d126e0e4b4888a9bde935b2820cd1d77c","src/verify_cert.rs":"2db22fbb39711c0a92d02beff0a7e4c880019df1d0f90cdaf929366b73584691","tests/dns_name_tests.rs":"5c9387ab7d6da0d616411afe4db72b2a797f00c1c663712fc2fb140d2738ee50","tests/ed25519/ca.der":"57c4b8e513e17954a5e0e4e11a63937c52507d1ffd36436e2b76e9b789ff1a2b","tests/ed25519/ee.der":"f32db7607b3c15ca3203d1c93064a47c5977288c5b2faa6ca2b11bf22b02911a","tests/integration.rs":"fd79e2e8a2637ddaf153c8532d394705b72d50490d26bbcc0779c9fc27c6a31c","tests/misc/serial_neg.der":"88497f01602f3154246ae28c4d5aef10f1d87ebb76626f4ae0b7f95ba7968799","tests/misc/serial_zero.der":"c3846bf24b9e93ca64274c0ec67c1ecc5e024ffcacd2d74019350e81fe546ae4","tests/netflix/ca.der":"eb04cf5eb1f39afa762f2bb120f296cba520c1b97db1589565b81cb9a17b7244","tests/netflix/ee.der":"d58b0dcbd15594693041633bbc788af700df3f8f243a1e09afe8cc585010322c","tests/netflix/inter.der":"564dbc6a76550fd2d4f4bac6448a1157b33cbd8e0b3fd76d72107540964a85b5","third-party/chromium/LICENSE":"845022e0c1db1abb41a6ba4cd3c4b674ec290f3359d9d3c78ae558d4c0ed9308","third-party/chromium/data/verify_signed_data/README":"ca567fd754630fc28d0c8d1c84e0ef4e3f24169d82a913ed5f2e93b6531b36b0","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-spki-params-null.pem":"6ac6f5033fa11fd1a7c6a4df5f7ee790e3e572dac0a43c1f85d767ddc5683c21","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-unused-bits-signature.pem":"da3d8e9b8dddff9581c9218be447538e01cf84d629dab8b310a4c48e59689110","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-ecdh-key.pem":"0ace58a75dcb69766e8ca5ef1e2ef936f4b54d2e3430db5bd1fa99745799af77","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-ecmqv-key.pem":"2b5f1f423e3483d6747d9c1bbf5ccb27db830cbb24635fa235da9ee7ffa007f6","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-rsa-algorithm.pem":"45cd7e8bcc1e98498e6bdf16c57dcf3067525e3767113ed1ce1e2fb9d0d01ce0","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-wrong-signature-format.pem":"cb3bfe67be334ce01968aa760138f02324105524516438d8610cbd2fe2360425","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512.pem":"111a3dc873ba1a8dd1a9c931b82ce34f0039a08ff919e2cdd528501e58270ad9","third-party/chromium/data/verify_signed_data/ecdsa-secp384r1-sha256-corrupted-data.pem":"143d020b5588b2af8fbe18e65589057c732982b6885d4bf9dc5dd14edf142768","third-party/chromium/data/verify_signed_data/ecdsa-secp384r1-sha256.pem":"96a6d3c113baa699e0187b0819cce1426523765f41d2287bd7f0902445d55878","third-party/chromium/data/verify_signed_data/ecdsa-using-rsa-key.pem":"ce2c52394c03f95f3a121b18185d99069f3a108f9dd3bc7c66426afecf3a1b47","third-party/chromium/data/verify_signed_data/ours/make-pss.py":"d479969c331b4de04f58b1ff618942c718b582836d75db19cc062dcd4a7f68a8","third-party/chromium/data/verify_signed_data/ours/priv.pem":"0516362bfad16242368004f46677589ecc37ff85152a3a7d3e665102e60bbb0b","third-party/chromium/data/verify_signed_data/ours/pub.pem":"5844c42bdef22e6d81621ebff836623241fbfca893a00ea3c6b8de4e0c05e7b5","third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha256-salt32-corrupted-data.pem":"8b5c942f19ae52eee1847515d4dd4970809768a7fcbcad691113e08ba90c6787","third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha256-salt32.pem":"3e68c625cfa80c7dd1aee27e0336892249e00b5f3604d5141e317f4416cef728","third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha384-salt48-corrupted-data.pem":"f624bc417b404cf6ebafd82cff02a611b3975af1217eca0aa88d37e0e8824b5a","third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha384-salt48.pem":"3673206911aa4bd8b4da9e951e37bbe6258f718d5521dc01da21936a9c92d172","third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha512-salt64-corrupted-data.pem":"bdcbfdc14c1d6adf01a86b8e7803be9a76dceb788fbf029ac2f67e482c277483","third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha512-salt64.pem":"1a817548b4dc518a09eba5365787dc49fe30d643b21d24bf905284f6d2713ae8","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-bad-key-der-length.pem":"d1b50934145834a4a7dedaf0a95ec557279721a2e7b91bd14fb2ba64393e8d32","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-bad-key-der-null.pem":"0c983dbd426b12b939e78c2149da2089250bac97af4b883aaae9bd27b01b761a","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-key-params-absent.pem":"8f85c6ed8b3d8414b11c2881ac2945d59aab762671c847614a26d824110589c8","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-using-pss-key-no-params.pem":"773165ba6b867a71f88373a34b9dba676677ff5268b1ebd7e42f80ba323115de","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-wrong-algorithm.pem":"bf0ca6fe4176e3ec0198d60d37def6b836a74bfd96efd2122fb1d1703320d9e3","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1.pem":"f2a649b1d73ce1de006a1f2f11650e5ddb90ccf7de73bb19a57c157af34316a2","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-key-encoded-ber.pem":"df9b7c8cc7087a834dc2dd20431ceebf92aaf0e0c635ef367f116c39ca0e7a5b","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-spki-non-null-params.pem":"1534fe211f08e732c202e65e674bef2606b3b638add7300b6f7df8417e5404dc","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-using-ecdsa-algorithm.pem":"766d5e41e89bd69ef0cc804ef0de8bb7dc2cb99dca0b9b411a92b338ca5ea16e","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-using-id-ea-rsa.pem":"5457122a67150f0418d81fe2210cd6f4feedd59af243ef0ab196f808817f9446","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256.pem":"34238a932aae2aa81968830f95f1669183286a29e0d9a04000d224b2e4285c62","third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20-using-pss-key-no-params.pem":"57c4b6652b6fc13f0f32265997a9fcb51fb873726fb97e1fc29d26593dfcd4c2","third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20-using-pss-key-with-null-params.pem":"67ee8e6f97d7f65f1af0ed4a53cbeb500e5cc156d44490efab0330f8af7ed7a2","third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20.pem":"94966ed94d5a59bbd47a06b33b716dd555a71b51bfc237d0ff45c3363cf21218","third-party/chromium/data/verify_signed_data/rsa-pss-sha1-wrong-salt.pem":"5583063ebca55b61a3f5f09d186dd250f8e8a29ce0beb7783f80ff5f77e1d9bb","third-party/chromium/data/verify_signed_data/rsa-pss-sha256-mgf1-sha512-salt33.pem":"7cb052b2cb306518397e227e53da76cc781a700b732b275e491cda9bd5844cd7","third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10-using-pss-key-with-params.pem":"4fd718a3ea88df68dfb384f7dc48c110dadca642f6265c997945fe2231fda422","third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10-using-pss-key-with-wrong-params.pem":"346695e766c3003c4d62a9a73016f8cab064b71bbde543cae904e4625dfa8b3b","third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10.pem":"1c3ee38f92a74a85a5a5563211431c0ec0f240ebbc803fbc19272b0469ac016b","third-party/chromium/data/verify_signed_data/rsa-using-ec-key.pem":"6ef47d55e423c0e4e942388cd09aab942dc33f0bc522249118a9857470c5dce2","third-party/chromium/data/verify_signed_data/rsa2048-pkcs1-sha512.pem":"4428f1b0ab076129bf728ae690b3b4469f9746f2e310911d89c2bba2942cd87d"},"package":"f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/webpki/Cargo.toml temporalio-1.3.0/vendor/webpki/Cargo.toml --- temporalio-1.3.0/vendor/webpki/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ -# 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 believe there's an error in this file please file an -# issue against the rust-lang/cargo repository. If you're -# editing this file be aware that the upstream Cargo.toml -# will likely look very different (and much more reasonable) - -[package] -edition = "2018" -name = "webpki" -version = "0.22.0" -authors = ["Brian Smith "] -include = ["Cargo.toml", "LICENSE", "README.md", "src/calendar.rs", "src/cert.rs", "src/der.rs", "src/end_entity.rs", "src/error.rs", "src/name.rs", "src/name/dns_name.rs", "src/name/ip_address.rs", "src/name/verify.rs", "src/signed_data.rs", "src/time.rs", "src/trust_anchor.rs", "src/verify_cert.rs", "src/lib.rs", "src/data/**/*", "tests/dns_name_tests.rs", "tests/integration.rs", "tests/misc/serial_neg.der", "tests/misc/serial_zero.der", "tests/netflix/ca.der", "tests/netflix/ee.der", "tests/netflix/inter.der", "tests/ed25519/ca.der", "tests/ed25519/ee.der", "third-party/chromium/**/*"] -description = "Web PKI X.509 Certificate Verification." -documentation = "https://briansmith.org/rustdoc/webpki/" -readme = "README.md" -categories = ["cryptography", "no-std"] -license-file = "LICENSE" -repository = "https://github.com/briansmith/webpki" -[package.metadata.docs.rs] -all-features = true -[profile.bench] -opt-level = 3 -lto = true -codegen-units = 1 -debug = false -debug-assertions = false -rpath = false - -[profile.release] -opt-level = 3 -lto = true -codegen-units = 1 -debug = false -debug-assertions = false -rpath = false - -[lib] -name = "webpki" -[dependencies.ring] -version = "0.16.19" -default-features = false - -[dependencies.untrusted] -version = "0.7.1" -[dev-dependencies.base64] -version = "0.9.1" - -[features] -alloc = ["ring/alloc"] -std = ["alloc"] diff -Nru temporalio-1.3.0/vendor/webpki/LICENSE temporalio-1.3.0/vendor/webpki/LICENSE --- temporalio-1.3.0/vendor/webpki/LICENSE 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/LICENSE 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -Except as otherwise noted, this project is licensed under the following -(ISC-style) terms: - -Copyright 2015 Brian Smith. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -The files under third-party/chromium are licensed as described in -third-party/chromium/LICENSE. diff -Nru temporalio-1.3.0/vendor/webpki/README.md temporalio-1.3.0/vendor/webpki/README.md --- temporalio-1.3.0/vendor/webpki/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/README.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,78 +0,0 @@ -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - - -What is webpki? -================== - -webpki is a library that validates Web PKI (TLS/SSL) certificates. webpki -is designed to provide a **full** implementation of the client side of the -**Web PKI** to a diverse range of applications and devices, -including embedded (IoT) applications, mobile apps, desktop applications, and -server infrastructure. webpki is intended to not only be the best -implementation of the Web PKI, but to also *precisely define* what the Web PKI -is. - -webpki is written in [Rust](https://www.rust-lang.org/) and uses -[*ring*](https://github.com/briansmith/ring) for signature verification. - -webpki is strongly influenced by -[mozilla::pkix](https://github.com/briansmith/mozillapkix). You can read a -little about the ideas underlying both mozilla::pkix and webpki in -[insanity::pkix: A New Certificate Path Building & Validation -Library](https://briansmith.org/insanity-pkix). - -The Rust compiler statically guarantees there are no buffer overflows, -uses-after-free, double-frees, data races, etc. in webpki. webpki takes -advantage of Rust's borrow checker to ensure that its **zero-copy parsing** -strategy is safe and efficient. webpki *never* allocates memory on the heap, -and it maintains a tight bound on the amount of stack memory it uses. webpki -avoids all superfluous PKIX features in order to keep its object code size -small. Further reducing the code size of webpki is an important goal. - -This release is the very first prototype. Lots of improvements are planned, -including: - -* An extensive automated test suite. -* Key pinning. -* Certificate Transparency support. -* Short-lived certificate, OCSP stapling, and CRLSet support. -* Customization of the supported algorithms, key sizes, and elliptic curves - allowed during a validation. -* A C language wrapper interface to allow using webpki in non-Rust - applications. -* A specification of precisely what the Web PKI is. - - - -Demo -==== - -See https://github.com/ctz/rustls#example-code for an example of using -webpki. - - - -License -======= - -See [LICENSE](LICENSE). This project happily accepts pull requests without any -formal copyright/contributor license agreement. Pull requests must explicitly -indicate who owns the copyright to the code being contributed and that the code -is being licensed under the same terms as the existing webpki code. - - - -Bug Reporting -============= - -Please report bugs either as pull requests or as issues in [the issue -tracker](https://github.com/briansmith/webpki/issues). webpki has a -**full disclosure** vulnerability policy. **Please do NOT attempt to report -any security vulnerability in this code privately to anybody.** diff -Nru temporalio-1.3.0/vendor/webpki/src/calendar.rs temporalio-1.3.0/vendor/webpki/src/calendar.rs --- temporalio-1.3.0/vendor/webpki/src/calendar.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/calendar.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,162 +0,0 @@ -// Copyright 2015-2016 Brian Smith. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -use super::{time::Time, Error}; - -pub fn time_from_ymdhms_utc( - year: u64, - month: u64, - day_of_month: u64, - hours: u64, - minutes: u64, - seconds: u64, -) -> Result { - let days_before_year_since_unix_epoch = days_before_year_since_unix_epoch(year)?; - - const JAN: u64 = 31; - let feb = days_in_feb(year); - const MAR: u64 = 31; - const APR: u64 = 30; - const MAY: u64 = 31; - const JUN: u64 = 30; - const JUL: u64 = 31; - const AUG: u64 = 31; - const SEP: u64 = 30; - const OCT: u64 = 31; - const NOV: u64 = 30; - let days_before_month_in_year = match month { - 1 => 0, - 2 => JAN, - 3 => JAN + feb, - 4 => JAN + feb + MAR, - 5 => JAN + feb + MAR + APR, - 6 => JAN + feb + MAR + APR + MAY, - 7 => JAN + feb + MAR + APR + MAY + JUN, - 8 => JAN + feb + MAR + APR + MAY + JUN + JUL, - 9 => JAN + feb + MAR + APR + MAY + JUN + JUL + AUG, - 10 => JAN + feb + MAR + APR + MAY + JUN + JUL + AUG + SEP, - 11 => JAN + feb + MAR + APR + MAY + JUN + JUL + AUG + SEP + OCT, - 12 => JAN + feb + MAR + APR + MAY + JUN + JUL + AUG + SEP + OCT + NOV, - _ => unreachable!(), // `read_two_digits` already bounds-checked it. - }; - - let days_before = - days_before_year_since_unix_epoch + days_before_month_in_year + day_of_month - 1; - - let seconds_since_unix_epoch = - (days_before * 24 * 60 * 60) + (hours * 60 * 60) + (minutes * 60) + seconds; - - Ok(Time::from_seconds_since_unix_epoch( - seconds_since_unix_epoch, - )) -} - -fn days_before_year_since_unix_epoch(year: u64) -> Result { - // We don't support dates before January 1, 1970 because that is the - // Unix epoch. It is likely that other software won't deal well with - // certificates that have dates before the epoch. - if year < 1970 { - return Err(Error::BadDerTime); - } - let days_before_year_ad = days_before_year_ad(year); - debug_assert!(days_before_year_ad >= DAYS_BEFORE_UNIX_EPOCH_AD); - Ok(days_before_year_ad - DAYS_BEFORE_UNIX_EPOCH_AD) -} - -fn days_before_year_ad(year: u64) -> u64 { - ((year - 1) * 365) - + ((year - 1) / 4) // leap years are every 4 years, - - ((year - 1) / 100) // except years divisible by 100, - + ((year - 1) / 400) // except years divisible by 400. -} - -pub fn days_in_month(year: u64, month: u64) -> u64 { - match month { - 1 | 3 | 5 | 7 | 8 | 10 | 12 => 31, - 4 | 6 | 9 | 11 => 30, - 2 => days_in_feb(year), - _ => unreachable!(), // `read_two_digits` already bounds-checked it. - } -} - -fn days_in_feb(year: u64) -> u64 { - if (year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0)) { - 29 - } else { - 28 - } -} - -#[allow(clippy::unreadable_literal)] // TODO: Make this clear. -const DAYS_BEFORE_UNIX_EPOCH_AD: u64 = 719162; - -#[cfg(test)] -mod tests { - #[test] - fn test_days_before_unix_epoch() { - use super::{days_before_year_ad, DAYS_BEFORE_UNIX_EPOCH_AD}; - assert_eq!(DAYS_BEFORE_UNIX_EPOCH_AD, days_before_year_ad(1970)); - } - - #[test] - fn test_days_in_month() { - use super::days_in_month; - assert_eq!(days_in_month(2017, 1), 31); - assert_eq!(days_in_month(2017, 2), 28); - assert_eq!(days_in_month(2017, 3), 31); - assert_eq!(days_in_month(2017, 4), 30); - assert_eq!(days_in_month(2017, 5), 31); - assert_eq!(days_in_month(2017, 6), 30); - assert_eq!(days_in_month(2017, 7), 31); - assert_eq!(days_in_month(2017, 8), 31); - assert_eq!(days_in_month(2017, 9), 30); - assert_eq!(days_in_month(2017, 10), 31); - assert_eq!(days_in_month(2017, 11), 30); - assert_eq!(days_in_month(2017, 12), 31); - - // leap cases - assert_eq!(days_in_month(2000, 2), 29); - assert_eq!(days_in_month(2004, 2), 29); - assert_eq!(days_in_month(2016, 2), 29); - assert_eq!(days_in_month(2100, 2), 28); - } - - #[allow(clippy::unreadable_literal)] // TODO: Make this clear. - #[test] - fn test_time_from_ymdhms_utc() { - use super::{time_from_ymdhms_utc, Time}; - - // year boundary - assert_eq!( - Time::from_seconds_since_unix_epoch(1483228799), - time_from_ymdhms_utc(2016, 12, 31, 23, 59, 59).unwrap() - ); - assert_eq!( - Time::from_seconds_since_unix_epoch(1483228800), - time_from_ymdhms_utc(2017, 1, 1, 0, 0, 0).unwrap() - ); - - // not a leap year - assert_eq!( - Time::from_seconds_since_unix_epoch(1492449162), - time_from_ymdhms_utc(2017, 4, 17, 17, 12, 42).unwrap() - ); - - // leap year, post-feb - assert_eq!( - Time::from_seconds_since_unix_epoch(1460913162), - time_from_ymdhms_utc(2016, 4, 17, 17, 12, 42).unwrap() - ); - } -} diff -Nru temporalio-1.3.0/vendor/webpki/src/cert.rs temporalio-1.3.0/vendor/webpki/src/cert.rs --- temporalio-1.3.0/vendor/webpki/src/cert.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/cert.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,226 +0,0 @@ -// Copyright 2015 Brian Smith. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -use crate::{der, signed_data, Error}; - -pub enum EndEntityOrCa<'a> { - EndEntity, - Ca(&'a Cert<'a>), -} - -pub struct Cert<'a> { - pub ee_or_ca: EndEntityOrCa<'a>, - - pub signed_data: signed_data::SignedData<'a>, - pub issuer: untrusted::Input<'a>, - pub validity: untrusted::Input<'a>, - pub subject: untrusted::Input<'a>, - pub spki: der::Value<'a>, - - pub basic_constraints: Option>, - pub eku: Option>, - pub name_constraints: Option>, - pub subject_alt_name: Option>, -} - -pub fn parse_cert<'a>( - cert_der: untrusted::Input<'a>, - ee_or_ca: EndEntityOrCa<'a>, -) -> Result, Error> { - parse_cert_internal(cert_der, ee_or_ca, certificate_serial_number) -} - -/// Used by `parse_cert` for regular certificates (end-entity and intermediate) -/// and by `cert_der_as_trust_anchor` for trust anchors encoded as -/// certificates. -pub(crate) fn parse_cert_internal<'a>( - cert_der: untrusted::Input<'a>, - ee_or_ca: EndEntityOrCa<'a>, - serial_number: fn(input: &mut untrusted::Reader<'_>) -> Result<(), Error>, -) -> Result, Error> { - let (tbs, signed_data) = cert_der.read_all(Error::BadDer, |cert_der| { - der::nested( - cert_der, - der::Tag::Sequence, - Error::BadDer, - signed_data::parse_signed_data, - ) - })?; - - tbs.read_all(Error::BadDer, |tbs| { - version3(tbs)?; - serial_number(tbs)?; - - let signature = der::expect_tag_and_get_value(tbs, der::Tag::Sequence)?; - // TODO: In mozilla::pkix, the comparison is done based on the - // normalized value (ignoring whether or not there is an optional NULL - // parameter for RSA-based algorithms), so this may be too strict. - if signature != signed_data.algorithm { - return Err(Error::SignatureAlgorithmMismatch); - } - - let issuer = der::expect_tag_and_get_value(tbs, der::Tag::Sequence)?; - let validity = der::expect_tag_and_get_value(tbs, der::Tag::Sequence)?; - let subject = der::expect_tag_and_get_value(tbs, der::Tag::Sequence)?; - let spki = der::expect_tag(tbs, der::Tag::Sequence)?; - - // In theory there could be fields [1] issuerUniqueID and [2] - // subjectUniqueID, but in practice there never are, and to keep the - // code small and simple we don't accept any certificates that do - // contain them. - - let mut cert = Cert { - ee_or_ca, - - signed_data, - issuer, - validity, - subject, - spki, - - basic_constraints: None, - eku: None, - name_constraints: None, - subject_alt_name: None, - }; - - // mozilla::pkix allows the extensions to be omitted. However, since - // the subjectAltName extension is mandatory, the extensions are - // mandatory too, and we enforce that. Also, mozilla::pkix includes - // special logic for handling critical Netscape Cert Type extensions. - // That has been intentionally omitted. - - der::nested( - tbs, - der::Tag::ContextSpecificConstructed3, - Error::MissingOrMalformedExtensions, - |tagged| { - der::nested_of_mut( - tagged, - der::Tag::Sequence, - der::Tag::Sequence, - Error::BadDer, - |extension| { - let extn_id = der::expect_tag_and_get_value(extension, der::Tag::OID)?; - let critical = der::optional_boolean(extension)?; - let extn_value = - der::expect_tag_and_get_value(extension, der::Tag::OctetString)?; - match remember_extension(&mut cert, extn_id, extn_value)? { - Understood::No if critical => Err(Error::UnsupportedCriticalExtension), - _ => Ok(()), - } - }, - ) - }, - )?; - - Ok(cert) - }) -} - -// mozilla::pkix supports v1, v2, v3, and v4, including both the implicit -// (correct) and explicit (incorrect) encoding of v1. We allow only v3. -fn version3(input: &mut untrusted::Reader) -> Result<(), Error> { - der::nested( - input, - der::Tag::ContextSpecificConstructed0, - Error::UnsupportedCertVersion, - |input| { - let version = der::small_nonnegative_integer(input)?; - if version != 2 { - // v3 - return Err(Error::UnsupportedCertVersion); - } - Ok(()) - }, - ) -} - -pub fn certificate_serial_number(input: &mut untrusted::Reader) -> Result<(), Error> { - // https://tools.ietf.org/html/rfc5280#section-4.1.2.2: - // * Conforming CAs MUST NOT use serialNumber values longer than 20 octets." - // * "The serial number MUST be a positive integer [...]" - - let value = der::positive_integer(input)?; - if value.big_endian_without_leading_zero().len() > 20 { - return Err(Error::BadDer); - } - Ok(()) -} - -enum Understood { - Yes, - No, -} - -fn remember_extension<'a>( - cert: &mut Cert<'a>, - extn_id: untrusted::Input, - value: untrusted::Input<'a>, -) -> Result { - // We don't do anything with certificate policies so we can safely ignore - // all policy-related stuff. We assume that the policy-related extensions - // are not marked critical. - - // id-ce 2.5.29 - static ID_CE: [u8; 2] = oid![2, 5, 29]; - - if extn_id.len() != ID_CE.len() + 1 || !extn_id.as_slice_less_safe().starts_with(&ID_CE) { - return Ok(Understood::No); - } - - let out = match *extn_id.as_slice_less_safe().last().unwrap() { - // id-ce-keyUsage 2.5.29.15. We ignore the KeyUsage extension. For CA - // certificates, BasicConstraints.cA makes KeyUsage redundant. Firefox - // and other common browsers do not check KeyUsage for end-entities, - // though it would be kind of nice to ensure that a KeyUsage without - // the keyEncipherment bit could not be used for RSA key exchange. - 15 => { - return Ok(Understood::Yes); - } - - // id-ce-subjectAltName 2.5.29.17 - 17 => &mut cert.subject_alt_name, - - // id-ce-basicConstraints 2.5.29.19 - 19 => &mut cert.basic_constraints, - - // id-ce-nameConstraints 2.5.29.30 - 30 => &mut cert.name_constraints, - - // id-ce-extKeyUsage 2.5.29.37 - 37 => &mut cert.eku, - - _ => { - return Ok(Understood::No); - } - }; - - match *out { - Some(..) => { - // The certificate contains more than one instance of this - // extension. - return Err(Error::ExtensionValueInvalid); - } - None => { - // All the extensions that we care about are wrapped in a SEQUENCE. - let sequence_value = value.read_all(Error::BadDer, |value| { - der::expect_tag_and_get_value(value, der::Tag::Sequence) - })?; - *out = Some(sequence_value); - } - } - - Ok(Understood::Yes) -} diff -Nru temporalio-1.3.0/vendor/webpki/src/data/alg-ecdsa-p256.der temporalio-1.3.0/vendor/webpki/src/data/alg-ecdsa-p256.der --- temporalio-1.3.0/vendor/webpki/src/data/alg-ecdsa-p256.der 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/data/alg-ecdsa-p256.der 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -*†HÎ=*†HÎ= \ No newline at end of file Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/webpki/src/data/alg-ecdsa-p384.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/webpki/src/data/alg-ecdsa-p384.der differ diff -Nru temporalio-1.3.0/vendor/webpki/src/data/alg-ecdsa-sha256.der temporalio-1.3.0/vendor/webpki/src/data/alg-ecdsa-sha256.der --- temporalio-1.3.0/vendor/webpki/src/data/alg-ecdsa-sha256.der 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/data/alg-ecdsa-sha256.der 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -*†HÎ= \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/webpki/src/data/alg-ecdsa-sha384.der temporalio-1.3.0/vendor/webpki/src/data/alg-ecdsa-sha384.der --- temporalio-1.3.0/vendor/webpki/src/data/alg-ecdsa-sha384.der 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/data/alg-ecdsa-sha384.der 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -*†HÎ= \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/webpki/src/data/alg-ed25519.der temporalio-1.3.0/vendor/webpki/src/data/alg-ed25519.der --- temporalio-1.3.0/vendor/webpki/src/data/alg-ed25519.der 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/data/alg-ed25519.der 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -+ep \ No newline at end of file Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/webpki/src/data/alg-rsa-encryption.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/webpki/src/data/alg-rsa-encryption.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/webpki/src/data/alg-rsa-pkcs1-sha256.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/webpki/src/data/alg-rsa-pkcs1-sha256.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/webpki/src/data/alg-rsa-pkcs1-sha384.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/webpki/src/data/alg-rsa-pkcs1-sha384.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/webpki/src/data/alg-rsa-pkcs1-sha512.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/webpki/src/data/alg-rsa-pkcs1-sha512.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/webpki/src/data/alg-rsa-pss-sha256.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/webpki/src/data/alg-rsa-pss-sha256.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/webpki/src/data/alg-rsa-pss-sha384.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/webpki/src/data/alg-rsa-pss-sha384.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/webpki/src/data/alg-rsa-pss-sha512.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/webpki/src/data/alg-rsa-pss-sha512.der differ diff -Nru temporalio-1.3.0/vendor/webpki/src/data/README.md temporalio-1.3.0/vendor/webpki/src/data/README.md --- temporalio-1.3.0/vendor/webpki/src/data/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/data/README.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -These files contain the binary DER encoding of the *values* of some -ASN.1 [`AlgorithmIdentifier`]s, without the outer `SEQUENCE` tag or the outer -length component. - -These files were encoded with the help of [der-ascii]. They can be decoded -using: - -```sh -go get github.com/google/der-ascii/cmd/der2ascii -der2ascii -i -o .ascii -``` - -New or modified der-ascii files can be encoded using: - -```sh -go get github.com/google/der-ascii/cmd/ascii2der -ascii2der i .ascii -o -``` - -[`AlgorithmIdentifier`]: https://tools.ietf.org/html/rfc5280#section-4.1.1.2] -[der-ascii]: https://github.com/google/der-ascii diff -Nru temporalio-1.3.0/vendor/webpki/src/der.rs temporalio-1.3.0/vendor/webpki/src/der.rs --- temporalio-1.3.0/vendor/webpki/src/der.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/der.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,173 +0,0 @@ -// Copyright 2015 Brian Smith. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -use crate::{calendar, time, Error}; -pub use ring::io::{ - der::{nested, Tag, CONSTRUCTED}, - Positive, -}; - -#[inline(always)] -pub fn expect_tag_and_get_value<'a>( - input: &mut untrusted::Reader<'a>, - tag: Tag, -) -> Result, Error> { - ring::io::der::expect_tag_and_get_value(input, tag).map_err(|_| Error::BadDer) -} - -pub struct Value<'a> { - value: untrusted::Input<'a>, -} - -impl<'a> Value<'a> { - pub fn value(&self) -> untrusted::Input<'a> { - self.value - } -} - -pub fn expect_tag<'a>(input: &mut untrusted::Reader<'a>, tag: Tag) -> Result, Error> { - let (actual_tag, value) = read_tag_and_get_value(input)?; - if usize::from(tag) != usize::from(actual_tag) { - return Err(Error::BadDer); - } - - Ok(Value { value }) -} - -#[inline(always)] -pub fn read_tag_and_get_value<'a>( - input: &mut untrusted::Reader<'a>, -) -> Result<(u8, untrusted::Input<'a>), Error> { - ring::io::der::read_tag_and_get_value(input).map_err(|_| Error::BadDer) -} - -// TODO: investigate taking decoder as a reference to reduce generated code -// size. -pub fn nested_of_mut<'a, E>( - input: &mut untrusted::Reader<'a>, - outer_tag: Tag, - inner_tag: Tag, - error: E, - mut decoder: impl FnMut(&mut untrusted::Reader<'a>) -> Result<(), E>, -) -> Result<(), E> -where - E: Copy, -{ - nested(input, outer_tag, error, |outer| { - loop { - nested(outer, inner_tag, error, |inner| decoder(inner))?; - if outer.at_end() { - break; - } - } - Ok(()) - }) -} - -pub fn bit_string_with_no_unused_bits<'a>( - input: &mut untrusted::Reader<'a>, -) -> Result, Error> { - nested(input, Tag::BitString, Error::BadDer, |value| { - let unused_bits_at_end = value.read_byte().map_err(|_| Error::BadDer)?; - if unused_bits_at_end != 0 { - return Err(Error::BadDer); - } - Ok(value.read_bytes_to_end()) - }) -} - -// Like mozilla::pkix, we accept the nonconformant explicit encoding of -// the default value (false) for compatibility with real-world certificates. -pub fn optional_boolean(input: &mut untrusted::Reader) -> Result { - if !input.peek(Tag::Boolean.into()) { - return Ok(false); - } - nested(input, Tag::Boolean, Error::BadDer, |input| { - match input.read_byte() { - Ok(0xff) => Ok(true), - Ok(0x00) => Ok(false), - _ => Err(Error::BadDer), - } - }) -} - -pub fn positive_integer<'a>(input: &'a mut untrusted::Reader) -> Result, Error> { - ring::io::der::positive_integer(input).map_err(|_| Error::BadDer) -} - -pub fn small_nonnegative_integer(input: &mut untrusted::Reader) -> Result { - ring::io::der::small_nonnegative_integer(input).map_err(|_| Error::BadDer) -} - -pub fn time_choice(input: &mut untrusted::Reader) -> Result { - let is_utc_time = input.peek(Tag::UTCTime.into()); - let expected_tag = if is_utc_time { - Tag::UTCTime - } else { - Tag::GeneralizedTime - }; - - fn read_digit(inner: &mut untrusted::Reader) -> Result { - const DIGIT: core::ops::RangeInclusive = b'0'..=b'9'; - let b = inner.read_byte().map_err(|_| Error::BadDerTime)?; - if DIGIT.contains(&b) { - return Ok(u64::from(b - DIGIT.start())); - } - Err(Error::BadDerTime) - } - - fn read_two_digits(inner: &mut untrusted::Reader, min: u64, max: u64) -> Result { - let hi = read_digit(inner)?; - let lo = read_digit(inner)?; - let value = (hi * 10) + lo; - if value < min || value > max { - return Err(Error::BadDerTime); - } - Ok(value) - } - - nested(input, expected_tag, Error::BadDer, |value| { - let (year_hi, year_lo) = if is_utc_time { - let lo = read_two_digits(value, 0, 99)?; - let hi = if lo >= 50 { 19 } else { 20 }; - (hi, lo) - } else { - let hi = read_two_digits(value, 0, 99)?; - let lo = read_two_digits(value, 0, 99)?; - (hi, lo) - }; - - let year = (year_hi * 100) + year_lo; - let month = read_two_digits(value, 1, 12)?; - let days_in_month = calendar::days_in_month(year, month); - let day_of_month = read_two_digits(value, 1, days_in_month)?; - let hours = read_two_digits(value, 0, 23)?; - let minutes = read_two_digits(value, 0, 59)?; - let seconds = read_two_digits(value, 0, 59)?; - - let time_zone = value.read_byte().map_err(|_| Error::BadDerTime)?; - if time_zone != b'Z' { - return Err(Error::BadDerTime); - } - - calendar::time_from_ymdhms_utc(year, month, day_of_month, hours, minutes, seconds) - }) -} - -macro_rules! oid { - ( $first:expr, $second:expr, $( $tail:expr ),* ) => - ( - [(40 * $first) + $second, $( $tail ),*] - ) -} diff -Nru temporalio-1.3.0/vendor/webpki/src/end_entity.rs temporalio-1.3.0/vendor/webpki/src/end_entity.rs --- temporalio-1.3.0/vendor/webpki/src/end_entity.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/end_entity.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,206 +0,0 @@ -// Copyright 2015-2021 Brian Smith. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -use crate::{ - cert, name, signed_data, verify_cert, DnsNameRef, Error, SignatureAlgorithm, Time, - TlsClientTrustAnchors, TlsServerTrustAnchors, -}; - -#[cfg(feature = "alloc")] -use alloc::vec::Vec; - -/// An end-entity certificate. -/// -/// Server certificate processing in a TLS connection consists of several -/// steps. All of these steps are necessary: -/// -/// * `EndEntityCert.verify_is_valid_tls_server_cert`: Verify that the server's -/// certificate is currently valid *for use by a TLS server*. -/// * `EndEntityCert.verify_is_valid_for_dns_name`: Verify that the server's -/// certificate is valid for the host that is being connected to. -/// * `EndEntityCert.verify_signature`: Verify that the signature of server's -/// `ServerKeyExchange` message is valid for the server's certificate. -/// -/// Client certificate processing in a TLS connection consists of analogous -/// steps. All of these steps are necessary: -/// -/// * `EndEntityCert.verify_is_valid_tls_client_cert`: Verify that the client's -/// certificate is currently valid *for use by a TLS client*. -/// * `EndEntityCert.verify_is_valid_for_dns_name` or -/// `EndEntityCert.verify_is_valid_for_at_least_one_dns_name`: Verify that the -/// client's certificate is valid for the identity or identities used to -/// identify the client. (Currently client authentication only works when the -/// client is identified by one or more DNS hostnames.) -/// * `EndEntityCert.verify_signature`: Verify that the client's signature in -/// its `CertificateVerify` message is valid using the public key from the -/// client's certificate. -/// -/// Although it would be less error-prone to combine all these steps into a -/// single function call, some significant optimizations are possible if the -/// three steps are processed separately (in parallel). It does not matter much -/// which order the steps are done in, but **all of these steps must completed -/// before application data is sent and before received application data is -/// processed**. `EndEntityCert::from` is an inexpensive operation and is -/// deterministic, so if these tasks are done in multiple threads, it is -/// probably best to just call `EndEntityCert::from` multiple times (before each -/// operation) for the same DER-encoded ASN.1 certificate bytes. -pub struct EndEntityCert<'a> { - inner: cert::Cert<'a>, -} - -impl<'a> core::convert::TryFrom<&'a [u8]> for EndEntityCert<'a> { - type Error = Error; - - /// Parse the ASN.1 DER-encoded X.509 encoding of the certificate - /// `cert_der`. - fn try_from(cert_der: &'a [u8]) -> Result { - Ok(Self { - inner: cert::parse_cert( - untrusted::Input::from(cert_der), - cert::EndEntityOrCa::EndEntity, - )?, - }) - } -} - -impl<'a> EndEntityCert<'a> { - pub(super) fn inner(&self) -> &cert::Cert { - &self.inner - } - - /// Verifies that the end-entity certificate is valid for use by a TLS - /// server. - /// - /// `supported_sig_algs` is the list of signature algorithms that are - /// trusted for use in certificate signatures; the end-entity certificate's - /// public key is not validated against this list. `trust_anchors` is the - /// list of root CAs to trust. `intermediate_certs` is the sequence of - /// intermediate certificates that the server sent in the TLS handshake. - /// `time` is the time for which the validation is effective (usually the - /// current time). - pub fn verify_is_valid_tls_server_cert( - &self, - supported_sig_algs: &[&SignatureAlgorithm], - &TlsServerTrustAnchors(trust_anchors): &TlsServerTrustAnchors, - intermediate_certs: &[&[u8]], - time: Time, - ) -> Result<(), Error> { - verify_cert::build_chain( - verify_cert::EKU_SERVER_AUTH, - supported_sig_algs, - trust_anchors, - intermediate_certs, - &self.inner, - time, - 0, - ) - } - - /// Verifies that the end-entity certificate is valid for use by a TLS - /// client. - /// - /// If the certificate is not valid for any of the given names then this - /// fails with `Error::CertNotValidForName`. - /// - /// `supported_sig_algs` is the list of signature algorithms that are - /// trusted for use in certificate signatures; the end-entity certificate's - /// public key is not validated against this list. `trust_anchors` is the - /// list of root CAs to trust. `intermediate_certs` is the sequence of - /// intermediate certificates that the client sent in the TLS handshake. - /// `cert` is the purported end-entity certificate of the client. `time` is - /// the time for which the validation is effective (usually the current - /// time). - pub fn verify_is_valid_tls_client_cert( - &self, - supported_sig_algs: &[&SignatureAlgorithm], - &TlsClientTrustAnchors(trust_anchors): &TlsClientTrustAnchors, - intermediate_certs: &[&[u8]], - time: Time, - ) -> Result<(), Error> { - verify_cert::build_chain( - verify_cert::EKU_CLIENT_AUTH, - supported_sig_algs, - trust_anchors, - intermediate_certs, - &self.inner, - time, - 0, - ) - } - - /// Verifies that the certificate is valid for the given DNS host name. - pub fn verify_is_valid_for_dns_name(&self, dns_name: DnsNameRef) -> Result<(), Error> { - name::verify_cert_dns_name(&self, dns_name) - } - - /// Verifies that the certificate is valid for at least one of the given DNS - /// host names. - /// - /// If the certificate is not valid for any of the given names then this - /// fails with `Error::CertNotValidForName`. Otherwise the DNS names for - /// which the certificate is valid are returned. - /// - /// Requires the `alloc` default feature; i.e. this isn't available in - /// `#![no_std]` configurations. - #[cfg(feature = "alloc")] - pub fn verify_is_valid_for_at_least_one_dns_name<'names, Names>( - &self, - dns_names: Names, - ) -> Result>, Error> - where - Names: Iterator>, - { - let result: Vec> = dns_names - .filter(|n| self.verify_is_valid_for_dns_name(*n).is_ok()) - .collect(); - if result.is_empty() { - return Err(Error::CertNotValidForName); - } - Ok(result) - } - - /// Verifies the signature `signature` of message `msg` using the - /// certificate's public key. - /// - /// `signature_alg` is the algorithm to use to - /// verify the signature; the certificate's public key is verified to be - /// compatible with this algorithm. - /// - /// For TLS 1.2, `signature` corresponds to TLS's - /// `DigitallySigned.signature` and `signature_alg` corresponds to TLS's - /// `DigitallySigned.algorithm` of TLS type `SignatureAndHashAlgorithm`. In - /// TLS 1.2 a single `SignatureAndHashAlgorithm` may map to multiple - /// `SignatureAlgorithm`s. For example, a TLS 1.2 - /// `ignatureAndHashAlgorithm` of (ECDSA, SHA-256) may map to any or all - /// of {`ECDSA_P256_SHA256`, `ECDSA_P384_SHA256`}, depending on how the TLS - /// implementation is configured. - /// - /// For current TLS 1.3 drafts, `signature_alg` corresponds to TLS's - /// `algorithm` fields of type `SignatureScheme`. There is (currently) a - /// one-to-one correspondence between TLS 1.3's `SignatureScheme` and - /// `SignatureAlgorithm`. - pub fn verify_signature( - &self, - signature_alg: &SignatureAlgorithm, - msg: &[u8], - signature: &[u8], - ) -> Result<(), Error> { - signed_data::verify_signature( - signature_alg, - self.inner.spki.value(), - untrusted::Input::from(msg), - untrusted::Input::from(signature), - ) - } -} diff -Nru temporalio-1.3.0/vendor/webpki/src/error.rs temporalio-1.3.0/vendor/webpki/src/error.rs --- temporalio-1.3.0/vendor/webpki/src/error.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/error.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,108 +0,0 @@ -// Copyright 2015 Brian Smith. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -use core::fmt; - -/// An error that occurs during certificate validation or name validation. -#[derive(Clone, Copy, Debug, PartialEq)] -pub enum Error { - /// The encoding of some ASN.1 DER-encoded item is invalid. - BadDer, - - /// The encoding of an ASN.1 DER-encoded time is invalid. - BadDerTime, - - /// A CA certificate is being used as an end-entity certificate. - CaUsedAsEndEntity, - - /// The certificate is expired; i.e. the time it is being validated for is - /// later than the certificate's notAfter time. - CertExpired, - - /// The certificate is not valid for the name it is being validated for. - CertNotValidForName, - - /// The certificate is not valid yet; i.e. the time it is being validated - /// for is earlier than the certificate's notBefore time. - CertNotValidYet, - - /// An end-entity certificate is being used as a CA certificate. - EndEntityUsedAsCa, - - /// An X.509 extension is invalid. - ExtensionValueInvalid, - - /// The certificate validity period (notBefore, notAfter) is invalid; e.g. - /// the notAfter time is earlier than the notBefore time. - InvalidCertValidity, - - /// The signature is invalid for the given public key. - InvalidSignatureForPublicKey, - - /// The certificate violates one or more name constraints. - NameConstraintViolation, - - /// The certificate violates one or more path length constraints. - PathLenConstraintViolated, - - /// The algorithm in the TBSCertificate "signature" field of a certificate - /// does not match the algorithm in the signature of the certificate. - SignatureAlgorithmMismatch, - - /// The certificate is not valid for the Extended Key Usage for which it is - /// being validated. - RequiredEkuNotFound, - - /// A valid issuer for the certificate could not be found. - UnknownIssuer, - - /// The certificate is not a v3 X.509 certificate. - /// - /// This error may be also reported if the certificate version field - /// is malformed. - UnsupportedCertVersion, - - /// The certificate extensions are missing or malformed. - /// - /// In particular, webpki requires the DNS name(s) be in the subjectAltName - /// extension as required by the CA/Browser Forum Baseline Requirements - /// and as recommended by RFC6125. - MissingOrMalformedExtensions, - - /// The certificate contains an unsupported critical extension. - UnsupportedCriticalExtension, - - /// The signature's algorithm does not match the algorithm of the public - /// key it is being validated for. This may be because the public key - /// algorithm's OID isn't recognized (e.g. DSA), or the public key - /// algorithm's parameters don't match the supported parameters for that - /// algorithm (e.g. ECC keys for unsupported curves), or the public key - /// algorithm and the signature algorithm simply don't match (e.g. - /// verifying an RSA signature with an ECC public key). - UnsupportedSignatureAlgorithmForPublicKey, - - /// The signature algorithm for a signature is not in the set of supported - /// signature algorithms given. - UnsupportedSignatureAlgorithm, -} - -impl fmt::Display for Error { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "{:?}", self) - } -} - -/// Requires the `std` feature. -#[cfg(feature = "std")] -impl ::std::error::Error for Error {} diff -Nru temporalio-1.3.0/vendor/webpki/src/lib.rs temporalio-1.3.0/vendor/webpki/src/lib.rs --- temporalio-1.3.0/vendor/webpki/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ -// Copyright 2015 Brian Smith. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -//! webpki: Web PKI X.509 Certificate Validation. -//! -//! See `EndEntityCert`'s documentation for a description of the certificate -//! processing steps necessary for a TLS connection. -//! -//! # Features -//! -//! | Feature | Description | -//! | ------- | ----------- | -//! | `alloc` | Enable features that require use of the heap. Currently all RSA signature algorithms require this feature. | -//! | `std` | Enable features that require libstd. Implies `alloc`. | - -#![doc(html_root_url = "https://briansmith.org/rustdoc/")] -#![cfg_attr(not(feature = "std"), no_std)] -#![allow( - clippy::doc_markdown, - clippy::if_not_else, - clippy::inline_always, - clippy::items_after_statements, - clippy::missing_errors_doc, - clippy::module_name_repetitions, - clippy::single_match, - clippy::single_match_else -)] -#![deny(clippy::as_conversions)] - -#[cfg(any(test, feature = "alloc"))] -#[cfg_attr(test, macro_use)] -extern crate alloc; - -#[macro_use] -mod der; - -mod calendar; -mod cert; -mod end_entity; -mod error; -mod name; -mod signed_data; -mod time; -mod trust_anchor; - -mod verify_cert; - -pub use { - end_entity::EndEntityCert, - error::Error, - name::{DnsNameRef, InvalidDnsNameError}, - signed_data::{ - SignatureAlgorithm, ECDSA_P256_SHA256, ECDSA_P256_SHA384, ECDSA_P384_SHA256, - ECDSA_P384_SHA384, ED25519, - }, - time::Time, - trust_anchor::{TlsClientTrustAnchors, TlsServerTrustAnchors, TrustAnchor}, -}; - -#[cfg(feature = "alloc")] -pub use { - name::DnsName, - signed_data::{ - RSA_PKCS1_2048_8192_SHA256, RSA_PKCS1_2048_8192_SHA384, RSA_PKCS1_2048_8192_SHA512, - RSA_PKCS1_3072_8192_SHA384, RSA_PSS_2048_8192_SHA256_LEGACY_KEY, - RSA_PSS_2048_8192_SHA384_LEGACY_KEY, RSA_PSS_2048_8192_SHA512_LEGACY_KEY, - }, -}; - -#[cfg(feature = "alloc")] -#[allow(unknown_lints, clippy::upper_case_acronyms)] -#[deprecated(note = "Use DnsName")] -pub type DNSName = DnsName; - -#[deprecated(note = "use DnsNameRef")] -#[allow(unknown_lints, clippy::upper_case_acronyms)] -pub type DNSNameRef<'a> = DnsNameRef<'a>; - -#[deprecated(note = "use TlsServerTrustAnchors")] -#[allow(unknown_lints, clippy::upper_case_acronyms)] -pub type TLSServerTrustAnchors<'a> = TlsServerTrustAnchors<'a>; - -#[deprecated(note = "use TlsClientTrustAnchors")] -#[allow(unknown_lints, clippy::upper_case_acronyms)] -pub type TLSClientTrustAnchors<'a> = TlsClientTrustAnchors<'a>; diff -Nru temporalio-1.3.0/vendor/webpki/src/name/dns_name.rs temporalio-1.3.0/vendor/webpki/src/name/dns_name.rs --- temporalio-1.3.0/vendor/webpki/src/name/dns_name.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/name/dns_name.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,796 +0,0 @@ -// Copyright 2015-2020 Brian Smith. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -#[cfg(feature = "alloc")] -use alloc::string::String; - -/// A DNS Name suitable for use in the TLS Server Name Indication (SNI) -/// extension and/or for use as the reference hostname for which to verify a -/// certificate. -/// -/// A `DnsName` is guaranteed to be syntactically valid. The validity rules are -/// specified in [RFC 5280 Section 7.2], except that underscores are also -/// allowed. -/// -/// `DnsName` stores a copy of the input it was constructed from in a `String` -/// and so it is only available when the `std` default feature is enabled. -/// -/// `Eq`, `PartialEq`, etc. are not implemented because name comparison -/// frequently should be done case-insensitively and/or with other caveats that -/// depend on the specific circumstances in which the comparison is done. -/// -/// [RFC 5280 Section 7.2]: https://tools.ietf.org/html/rfc5280#section-7.2 -/// -/// Requires the `alloc` feature. -#[cfg(feature = "alloc")] -#[derive(Clone, Debug, Eq, PartialEq, Hash)] -pub struct DnsName(String); - -/// Requires the `alloc` feature. -#[cfg(feature = "alloc")] -impl DnsName { - /// Returns a `DnsNameRef` that refers to this `DnsName`. - pub fn as_ref(&self) -> DnsNameRef { - DnsNameRef(self.0.as_bytes()) - } -} - -/// Requires the `alloc` feature. -#[cfg(feature = "alloc")] -impl AsRef for DnsName { - fn as_ref(&self) -> &str { - self.0.as_ref() - } -} - -/// Requires the `alloc` feature. -// Deprecated -#[cfg(feature = "alloc")] -impl From> for DnsName { - fn from(dns_name: DnsNameRef) -> Self { - dns_name.to_owned() - } -} - -/// A reference to a DNS Name suitable for use in the TLS Server Name Indication -/// (SNI) extension and/or for use as the reference hostname for which to verify -/// a certificate. -/// -/// A `DnsNameRef` is guaranteed to be syntactically valid. The validity rules -/// are specified in [RFC 5280 Section 7.2], except that underscores are also -/// allowed. -/// -/// `Eq`, `PartialEq`, etc. are not implemented because name comparison -/// frequently should be done case-insensitively and/or with other caveats that -/// depend on the specific circumstances in which the comparison is done. -/// -/// [RFC 5280 Section 7.2]: https://tools.ietf.org/html/rfc5280#section-7.2 -#[derive(Clone, Copy)] -pub struct DnsNameRef<'a>(&'a [u8]); - -impl AsRef<[u8]> for DnsNameRef<'_> { - #[inline] - fn as_ref(&self) -> &[u8] { - self.0 - } -} - -/// An error indicating that a `DnsNameRef` could not built because the input -/// is not a syntactically-valid DNS Name. -#[derive(Clone, Copy, Debug, Eq, PartialEq)] -pub struct InvalidDnsNameError; - -impl core::fmt::Display for InvalidDnsNameError { - fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { - write!(f, "{:?}", self) - } -} - -/// Requires the `std` feature. -#[cfg(feature = "std")] -impl ::std::error::Error for InvalidDnsNameError {} - -impl<'a> DnsNameRef<'a> { - /// Constructs a `DnsNameRef` from the given input if the input is a - /// syntactically-valid DNS name. - pub fn try_from_ascii(dns_name: &'a [u8]) -> Result { - if !is_valid_reference_dns_id(untrusted::Input::from(dns_name)) { - return Err(InvalidDnsNameError); - } - - Ok(Self(dns_name)) - } - - /// Constructs a `DnsNameRef` from the given input if the input is a - /// syntactically-valid DNS name. - pub fn try_from_ascii_str(dns_name: &'a str) -> Result { - Self::try_from_ascii(dns_name.as_bytes()) - } - - /// Constructs a `DnsName` from this `DnsNameRef` - /// - /// Requires the `alloc` feature. - #[cfg(feature = "alloc")] - pub fn to_owned(&self) -> DnsName { - // DnsNameRef is already guaranteed to be valid ASCII, which is a - // subset of UTF-8. - let s: &str = self.clone().into(); - DnsName(s.to_ascii_lowercase()) - } -} - -/// Requires the `alloc` feature. -#[cfg(feature = "alloc")] -impl core::fmt::Debug for DnsNameRef<'_> { - fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> { - let lowercase = self.clone().to_owned(); - f.debug_tuple("DnsNameRef").field(&lowercase.0).finish() - } -} - -impl<'a> From> for &'a str { - fn from(DnsNameRef(d): DnsNameRef<'a>) -> Self { - // The unwrap won't fail because DnsNameRefs are guaranteed to be ASCII - // and ASCII is a subset of UTF-8. - core::str::from_utf8(d).unwrap() - } -} - -pub(super) fn presented_id_matches_reference_id( - presented_dns_id: untrusted::Input, - reference_dns_id: untrusted::Input, -) -> Option { - presented_id_matches_reference_id_internal( - presented_dns_id, - IdRole::Reference, - reference_dns_id, - ) -} - -pub(super) fn presented_id_matches_constraint( - presented_dns_id: untrusted::Input, - reference_dns_id: untrusted::Input, -) -> Option { - presented_id_matches_reference_id_internal( - presented_dns_id, - IdRole::NameConstraint, - reference_dns_id, - ) -} - -// We do not distinguish between a syntactically-invalid presented_dns_id and -// one that is syntactically valid but does not match reference_dns_id; in both -// cases, the result is false. -// -// We assume that both presented_dns_id and reference_dns_id are encoded in -// such a way that US-ASCII (7-bit) characters are encoded in one byte and no -// encoding of a non-US-ASCII character contains a code point in the range -// 0-127. For example, UTF-8 is OK but UTF-16 is not. -// -// RFC6125 says that a wildcard label may be of the form *., where -// and/or may be empty. However, NSS requires to be empty, and we -// follow NSS's stricter policy by accepting wildcards only of the form -// *., where may be empty. -// -// An relative presented DNS ID matches both an absolute reference ID and a -// relative reference ID. Absolute presented DNS IDs are not supported: -// -// Presented ID Reference ID Result -// ------------------------------------- -// example.com example.com Match -// example.com. example.com Mismatch -// example.com example.com. Match -// example.com. example.com. Mismatch -// -// There are more subtleties documented inline in the code. -// -// Name constraints /////////////////////////////////////////////////////////// -// -// This is all RFC 5280 has to say about dNSName constraints: -// -// DNS name restrictions are expressed as host.example.com. Any DNS -// name that can be constructed by simply adding zero or more labels to -// the left-hand side of the name satisfies the name constraint. For -// example, www.host.example.com would satisfy the constraint but -// host1.example.com would not. -// -// This lack of specificity has lead to a lot of uncertainty regarding -// subdomain matching. In particular, the following questions have been -// raised and answered: -// -// Q: Does a presented identifier equal (case insensitive) to the name -// constraint match the constraint? For example, does the presented -// ID "host.example.com" match a "host.example.com" constraint? -// A: Yes. RFC5280 says "by simply adding zero or more labels" and this -// is the case of adding zero labels. -// -// Q: When the name constraint does not start with ".", do subdomain -// presented identifiers match it? For example, does the presented -// ID "www.host.example.com" match a "host.example.com" constraint? -// A: Yes. RFC5280 says "by simply adding zero or more labels" and this -// is the case of adding more than zero labels. The example is the -// one from RFC 5280. -// -// Q: When the name constraint does not start with ".", does a -// non-subdomain prefix match it? For example, does "bigfoo.bar.com" -// match "foo.bar.com"? [4] -// A: No. We interpret RFC 5280's language of "adding zero or more labels" -// to mean that whole labels must be prefixed. -// -// (Note that the above three scenarios are the same as the RFC 6265 -// domain matching rules [0].) -// -// Q: Is a name constraint that starts with "." valid, and if so, what -// semantics does it have? For example, does a presented ID of -// "www.example.com" match a constraint of ".example.com"? Does a -// presented ID of "example.com" match a constraint of ".example.com"? -// A: This implementation, NSS[1], and SChannel[2] all support a -// leading ".", but OpenSSL[3] does not yet. Amongst the -// implementations that support it, a leading "." is legal and means -// the same thing as when the "." is omitted, EXCEPT that a -// presented identifier equal (case insensitive) to the name -// constraint is not matched; i.e. presented dNSName identifiers -// must be subdomains. Some CAs in Mozilla's CA program (e.g. HARICA) -// have name constraints with the leading "." in their root -// certificates. The name constraints imposed on DCISS by Mozilla also -// have the it, so supporting this is a requirement for backward -// compatibility, even if it is not yet standardized. So, for example, a -// presented ID of "www.example.com" matches a constraint of -// ".example.com" but a presented ID of "example.com" does not. -// -// Q: Is there a way to prevent subdomain matches? -// A: Yes. -// -// Some people have proposed that dNSName constraints that do not -// start with a "." should be restricted to exact (case insensitive) -// matches. However, such a change of semantics from what RFC5280 -// specifies would be a non-backward-compatible change in the case of -// permittedSubtrees constraints, and it would be a security issue for -// excludedSubtrees constraints. -// -// However, it can be done with a combination of permittedSubtrees and -// excludedSubtrees, e.g. "example.com" in permittedSubtrees and -// ".example.com" in excludedSubtrees. -// -// Q: Are name constraints allowed to be specified as absolute names? -// For example, does a presented ID of "example.com" match a name -// constraint of "example.com." and vice versa. -// A: Absolute names are not supported as presented IDs or name -// constraints. Only reference IDs may be absolute. -// -// Q: Is "" a valid dNSName constraint? If so, what does it mean? -// A: Yes. Any valid presented dNSName can be formed "by simply adding zero -// or more labels to the left-hand side" of "". In particular, an -// excludedSubtrees dNSName constraint of "" forbids all dNSNames. -// -// Q: Is "." a valid dNSName constraint? If so, what does it mean? -// A: No, because absolute names are not allowed (see above). -// -// [0] RFC 6265 (Cookies) Domain Matching rules: -// http://tools.ietf.org/html/rfc6265#section-5.1.3 -// [1] NSS source code: -// https://mxr.mozilla.org/nss/source/lib/certdb/genname.c?rev=2a7348f013cb#1209 -// [2] Description of SChannel's behavior from Microsoft: -// http://www.imc.org/ietf-pkix/mail-archive/msg04668.html -// [3] Proposal to add such support to OpenSSL: -// http://www.mail-archive.com/openssl-dev%40openssl.org/msg36204.html -// https://rt.openssl.org/Ticket/Display.html?id=3562 -// [4] Feedback on the lack of clarify in the definition that never got -// incorporated into the spec: -// https://www.ietf.org/mail-archive/web/pkix/current/msg21192.html -fn presented_id_matches_reference_id_internal( - presented_dns_id: untrusted::Input, - reference_dns_id_role: IdRole, - reference_dns_id: untrusted::Input, -) -> Option { - if !is_valid_dns_id(presented_dns_id, IdRole::Presented, AllowWildcards::Yes) { - return None; - } - - if !is_valid_dns_id(reference_dns_id, reference_dns_id_role, AllowWildcards::No) { - return None; - } - - let mut presented = untrusted::Reader::new(presented_dns_id); - let mut reference = untrusted::Reader::new(reference_dns_id); - - match reference_dns_id_role { - IdRole::Reference => (), - - IdRole::NameConstraint if presented_dns_id.len() > reference_dns_id.len() => { - if reference_dns_id.is_empty() { - // An empty constraint matches everything. - return Some(true); - } - - // If the reference ID starts with a dot then skip the prefix of - // the presented ID and start the comparison at the position of - // that dot. Examples: - // - // Matches Doesn't Match - // ----------------------------------------------------------- - // original presented ID: www.example.com badexample.com - // skipped: www ba - // presented ID w/o prefix: .example.com dexample.com - // reference ID: .example.com .example.com - // - // If the reference ID does not start with a dot then we skip - // the prefix of the presented ID but also verify that the - // prefix ends with a dot. Examples: - // - // Matches Doesn't Match - // ----------------------------------------------------------- - // original presented ID: www.example.com badexample.com - // skipped: www ba - // must be '.': . d - // presented ID w/o prefix: example.com example.com - // reference ID: example.com example.com - // - if reference.peek(b'.') { - if presented - .skip(presented_dns_id.len() - reference_dns_id.len()) - .is_err() - { - unreachable!(); - } - } else { - if presented - .skip(presented_dns_id.len() - reference_dns_id.len() - 1) - .is_err() - { - unreachable!(); - } - if presented.read_byte() != Ok(b'.') { - return Some(false); - } - } - } - - IdRole::NameConstraint => (), - - IdRole::Presented => unreachable!(), - } - - // Only allow wildcard labels that consist only of '*'. - if presented.peek(b'*') { - if presented.skip(1).is_err() { - unreachable!(); - } - - loop { - if reference.read_byte().is_err() { - return Some(false); - } - if reference.peek(b'.') { - break; - } - } - } - - loop { - let presented_byte = match (presented.read_byte(), reference.read_byte()) { - (Ok(p), Ok(r)) if ascii_lower(p) == ascii_lower(r) => p, - _ => { - return Some(false); - } - }; - - if presented.at_end() { - // Don't allow presented IDs to be absolute. - if presented_byte == b'.' { - return None; - } - break; - } - } - - // Allow a relative presented DNS ID to match an absolute reference DNS ID, - // unless we're matching a name constraint. - if !reference.at_end() { - if reference_dns_id_role != IdRole::NameConstraint { - match reference.read_byte() { - Ok(b'.') => (), - _ => { - return Some(false); - } - }; - } - if !reference.at_end() { - return Some(false); - } - } - - assert!(presented.at_end()); - assert!(reference.at_end()); - - Some(true) -} - -#[inline] -fn ascii_lower(b: u8) -> u8 { - match b { - b'A'..=b'Z' => b + b'a' - b'A', - _ => b, - } -} - -#[derive(Clone, Copy, PartialEq)] -enum AllowWildcards { - No, - Yes, -} - -#[derive(Clone, Copy, PartialEq)] -enum IdRole { - Reference, - Presented, - NameConstraint, -} - -fn is_valid_reference_dns_id(hostname: untrusted::Input) -> bool { - is_valid_dns_id(hostname, IdRole::Reference, AllowWildcards::No) -} - -// https://tools.ietf.org/html/rfc5280#section-4.2.1.6: -// -// When the subjectAltName extension contains a domain name system -// label, the domain name MUST be stored in the dNSName (an IA5String). -// The name MUST be in the "preferred name syntax", as specified by -// Section 3.5 of [RFC1034] and as modified by Section 2.1 of -// [RFC1123]. -// -// https://bugzilla.mozilla.org/show_bug.cgi?id=1136616: As an exception to the -// requirement above, underscores are also allowed in names for compatibility. -fn is_valid_dns_id( - hostname: untrusted::Input, - id_role: IdRole, - allow_wildcards: AllowWildcards, -) -> bool { - // https://blogs.msdn.microsoft.com/oldnewthing/20120412-00/?p=7873/ - if hostname.len() > 253 { - return false; - } - - let mut input = untrusted::Reader::new(hostname); - - if id_role == IdRole::NameConstraint && input.at_end() { - return true; - } - - let mut dot_count = 0; - let mut label_length = 0; - let mut label_is_all_numeric = false; - let mut label_ends_with_hyphen = false; - - // Only presented IDs are allowed to have wildcard labels. And, like - // Chromium, be stricter than RFC 6125 requires by insisting that a - // wildcard label consist only of '*'. - let is_wildcard = allow_wildcards == AllowWildcards::Yes && input.peek(b'*'); - let mut is_first_byte = !is_wildcard; - if is_wildcard { - if input.read_byte() != Ok(b'*') || input.read_byte() != Ok(b'.') { - return false; - } - dot_count += 1; - } - - loop { - const MAX_LABEL_LENGTH: usize = 63; - - match input.read_byte() { - Ok(b'-') => { - if label_length == 0 { - return false; // Labels must not start with a hyphen. - } - label_is_all_numeric = false; - label_ends_with_hyphen = true; - label_length += 1; - if label_length > MAX_LABEL_LENGTH { - return false; - } - } - - Ok(b'0'..=b'9') => { - if label_length == 0 { - label_is_all_numeric = true; - } - label_ends_with_hyphen = false; - label_length += 1; - if label_length > MAX_LABEL_LENGTH { - return false; - } - } - - Ok(b'a'..=b'z') | Ok(b'A'..=b'Z') | Ok(b'_') => { - label_is_all_numeric = false; - label_ends_with_hyphen = false; - label_length += 1; - if label_length > MAX_LABEL_LENGTH { - return false; - } - } - - Ok(b'.') => { - dot_count += 1; - if label_length == 0 && (id_role != IdRole::NameConstraint || !is_first_byte) { - return false; - } - if label_ends_with_hyphen { - return false; // Labels must not end with a hyphen. - } - label_length = 0; - } - - _ => { - return false; - } - } - is_first_byte = false; - - if input.at_end() { - break; - } - } - - // Only reference IDs, not presented IDs or name constraints, may be - // absolute. - if label_length == 0 && id_role != IdRole::Reference { - return false; - } - - if label_ends_with_hyphen { - return false; // Labels must not end with a hyphen. - } - - if label_is_all_numeric { - return false; // Last label must not be all numeric. - } - - if is_wildcard { - // If the DNS ID ends with a dot, the last dot signifies an absolute ID. - let label_count = if label_length == 0 { - dot_count - } else { - dot_count + 1 - }; - - // Like NSS, require at least two labels to follow the wildcard label. - // TODO: Allow the TrustDomain to control this on a per-eTLD+1 basis, - // similar to Chromium. Even then, it might be better to still enforce - // that there are at least two labels after the wildcard. - if label_count < 3 { - return false; - } - } - - true -} - -#[cfg(test)] -mod tests { - use super::*; - - const PRESENTED_MATCHES_REFERENCE: &[(&[u8], &[u8], Option)] = &[ - (b"", b"a", None), - (b"a", b"a", Some(true)), - (b"b", b"a", Some(false)), - (b"*.b.a", b"c.b.a", Some(true)), - (b"*.b.a", b"b.a", Some(false)), - (b"*.b.a", b"b.a.", Some(false)), - // Wildcard not in leftmost label - (b"d.c.b.a", b"d.c.b.a", Some(true)), - (b"d.*.b.a", b"d.c.b.a", None), - (b"d.c*.b.a", b"d.c.b.a", None), - (b"d.c*.b.a", b"d.cc.b.a", None), - // case sensitivity - ( - b"abcdefghijklmnopqrstuvwxyz", - b"ABCDEFGHIJKLMNOPQRSTUVWXYZ", - Some(true), - ), - ( - b"ABCDEFGHIJKLMNOPQRSTUVWXYZ", - b"abcdefghijklmnopqrstuvwxyz", - Some(true), - ), - (b"aBc", b"Abc", Some(true)), - // digits - (b"a1", b"a1", Some(true)), - // A trailing dot indicates an absolute name, and absolute names can match - // relative names, and vice-versa. - (b"example", b"example", Some(true)), - (b"example.", b"example.", None), - (b"example", b"example.", Some(true)), - (b"example.", b"example", None), - (b"example.com", b"example.com", Some(true)), - (b"example.com.", b"example.com.", None), - (b"example.com", b"example.com.", Some(true)), - (b"example.com.", b"example.com", None), - (b"example.com..", b"example.com.", None), - (b"example.com..", b"example.com", None), - (b"example.com...", b"example.com.", None), - // xn-- IDN prefix - (b"x*.b.a", b"xa.b.a", None), - (b"x*.b.a", b"xna.b.a", None), - (b"x*.b.a", b"xn-a.b.a", None), - (b"x*.b.a", b"xn--a.b.a", None), - (b"xn*.b.a", b"xn--a.b.a", None), - (b"xn-*.b.a", b"xn--a.b.a", None), - (b"xn--*.b.a", b"xn--a.b.a", None), - (b"xn*.b.a", b"xn--a.b.a", None), - (b"xn-*.b.a", b"xn--a.b.a", None), - (b"xn--*.b.a", b"xn--a.b.a", None), - (b"xn---*.b.a", b"xn--a.b.a", None), - // "*" cannot expand to nothing. - (b"c*.b.a", b"c.b.a", None), - // -------------------------------------------------------------------------- - // The rest of these are test cases adapted from Chromium's - // x509_certificate_unittest.cc. The parameter order is the opposite in - // Chromium's tests. Also, they some tests were modified to fit into this - // framework or due to intentional differences between mozilla::pkix and - // Chromium. - (b"foo.com", b"foo.com", Some(true)), - (b"f", b"f", Some(true)), - (b"i", b"h", Some(false)), - (b"*.foo.com", b"bar.foo.com", Some(true)), - (b"*.test.fr", b"www.test.fr", Some(true)), - (b"*.test.FR", b"wwW.tESt.fr", Some(true)), - (b".uk", b"f.uk", None), - (b"?.bar.foo.com", b"w.bar.foo.com", None), - (b"(www|ftp).foo.com", b"www.foo.com", None), // regex! - (b"www.foo.com\0", b"www.foo.com", None), - (b"www.foo.com\0*.foo.com", b"www.foo.com", None), - (b"ww.house.example", b"www.house.example", Some(false)), - (b"www.test.org", b"test.org", Some(false)), - (b"*.test.org", b"test.org", Some(false)), - (b"*.org", b"test.org", None), - // '*' must be the only character in the wildcard label - (b"w*.bar.foo.com", b"w.bar.foo.com", None), - (b"ww*ww.bar.foo.com", b"www.bar.foo.com", None), - (b"ww*ww.bar.foo.com", b"wwww.bar.foo.com", None), - (b"w*w.bar.foo.com", b"wwww.bar.foo.com", None), - (b"w*w.bar.foo.c0m", b"wwww.bar.foo.com", None), - (b"wa*.bar.foo.com", b"WALLY.bar.foo.com", None), - (b"*Ly.bar.foo.com", b"wally.bar.foo.com", None), - // Chromium does URL decoding of the reference ID, but we don't, and we also - // require that the reference ID is valid, so we can't test these two. - // (b"www.foo.com", b"ww%57.foo.com", Some(true)), - // (b"www&.foo.com", b"www%26.foo.com", Some(true)), - (b"*.test.de", b"www.test.co.jp", Some(false)), - (b"*.jp", b"www.test.co.jp", None), - (b"www.test.co.uk", b"www.test.co.jp", Some(false)), - (b"www.*.co.jp", b"www.test.co.jp", None), - (b"www.bar.foo.com", b"www.bar.foo.com", Some(true)), - (b"*.foo.com", b"www.bar.foo.com", Some(false)), - (b"*.*.foo.com", b"www.bar.foo.com", None), - // Our matcher requires the reference ID to be a valid DNS name, so we cannot - // test this case. - // (b"*.*.bar.foo.com", b"*..bar.foo.com", Some(false)), - (b"www.bath.org", b"www.bath.org", Some(true)), - // Our matcher requires the reference ID to be a valid DNS name, so we cannot - // test these cases. - // DNS_ID_MISMATCH("www.bath.org", ""), - // (b"www.bath.org", b"20.30.40.50", Some(false)), - // (b"www.bath.org", b"66.77.88.99", Some(false)), - - // IDN tests - ( - b"xn--poema-9qae5a.com.br", - b"xn--poema-9qae5a.com.br", - Some(true), - ), - ( - b"*.xn--poema-9qae5a.com.br", - b"www.xn--poema-9qae5a.com.br", - Some(true), - ), - ( - b"*.xn--poema-9qae5a.com.br", - b"xn--poema-9qae5a.com.br", - Some(false), - ), - (b"xn--poema-*.com.br", b"xn--poema-9qae5a.com.br", None), - (b"xn--*-9qae5a.com.br", b"xn--poema-9qae5a.com.br", None), - (b"*--poema-9qae5a.com.br", b"xn--poema-9qae5a.com.br", None), - // The following are adapted from the examples quoted from - // http://tools.ietf.org/html/rfc6125#section-6.4.3 - // (e.g., *.example.com would match foo.example.com but - // not bar.foo.example.com or example.com). - (b"*.example.com", b"foo.example.com", Some(true)), - (b"*.example.com", b"bar.foo.example.com", Some(false)), - (b"*.example.com", b"example.com", Some(false)), - (b"baz*.example.net", b"baz1.example.net", None), - (b"*baz.example.net", b"foobaz.example.net", None), - (b"b*z.example.net", b"buzz.example.net", None), - // Wildcards should not be valid for public registry controlled domains, - // and unknown/unrecognized domains, at least three domain components must - // be present. For mozilla::pkix and NSS, there must always be at least two - // labels after the wildcard label. - (b"*.test.example", b"www.test.example", Some(true)), - (b"*.example.co.uk", b"test.example.co.uk", Some(true)), - (b"*.example", b"test.example", None), - // The result is different than Chromium, because Chromium takes into account - // the additional knowledge it has that "co.uk" is a TLD. mozilla::pkix does - // not know that. - (b"*.co.uk", b"example.co.uk", Some(true)), - (b"*.com", b"foo.com", None), - (b"*.us", b"foo.us", None), - (b"*", b"foo", None), - // IDN variants of wildcards and registry controlled domains. - ( - b"*.xn--poema-9qae5a.com.br", - b"www.xn--poema-9qae5a.com.br", - Some(true), - ), - ( - b"*.example.xn--mgbaam7a8h", - b"test.example.xn--mgbaam7a8h", - Some(true), - ), - // RFC6126 allows this, and NSS accepts it, but Chromium disallows it. - // TODO: File bug against Chromium. - (b"*.com.br", b"xn--poema-9qae5a.com.br", Some(true)), - (b"*.xn--mgbaam7a8h", b"example.xn--mgbaam7a8h", None), - // Wildcards should be permissible for 'private' registry-controlled - // domains. (In mozilla::pkix, we do not know if it is a private registry- - // controlled domain or not.) - (b"*.appspot.com", b"www.appspot.com", Some(true)), - (b"*.s3.amazonaws.com", b"foo.s3.amazonaws.com", Some(true)), - // Multiple wildcards are not valid. - (b"*.*.com", b"foo.example.com", None), - (b"*.bar.*.com", b"foo.bar.example.com", None), - // Absolute vs relative DNS name tests. Although not explicitly specified - // in RFC 6125, absolute reference names (those ending in a .) should - // match either absolute or relative presented names. - // TODO: File errata against RFC 6125 about this. - (b"foo.com.", b"foo.com", None), - (b"foo.com", b"foo.com.", Some(true)), - (b"foo.com.", b"foo.com.", None), - (b"f.", b"f", None), - (b"f", b"f.", Some(true)), - (b"f.", b"f.", None), - (b"*.bar.foo.com.", b"www-3.bar.foo.com", None), - (b"*.bar.foo.com", b"www-3.bar.foo.com.", Some(true)), - (b"*.bar.foo.com.", b"www-3.bar.foo.com.", None), - // We require the reference ID to be a valid DNS name, so we cannot test this - // case. - // (b".", b".", Some(false)), - (b"*.com.", b"example.com", None), - (b"*.com", b"example.com.", None), - (b"*.com.", b"example.com.", None), - (b"*.", b"foo.", None), - (b"*.", b"foo", None), - // The result is different than Chromium because we don't know that co.uk is - // a TLD. - (b"*.co.uk.", b"foo.co.uk", None), - (b"*.co.uk.", b"foo.co.uk.", None), - ]; - - #[test] - fn presented_matches_reference_test() { - for &(presented, reference, expected_result) in PRESENTED_MATCHES_REFERENCE { - let actual_result = presented_id_matches_reference_id( - untrusted::Input::from(presented), - untrusted::Input::from(reference), - ); - assert_eq!( - actual_result, - expected_result, - "presented_dns_id_matches_reference_dns_id(\"{:?}\", IDRole::ReferenceID, \"{:?}\")", - presented, - reference - ); - } - } -} diff -Nru temporalio-1.3.0/vendor/webpki/src/name/ip_address.rs temporalio-1.3.0/vendor/webpki/src/name/ip_address.rs --- temporalio-1.3.0/vendor/webpki/src/name/ip_address.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/name/ip_address.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,64 +0,0 @@ -// Copyright 2015-2020 Brian Smith. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -use crate::Error; - -// https://tools.ietf.org/html/rfc5280#section-4.2.1.10 says: -// -// For IPv4 addresses, the iPAddress field of GeneralName MUST contain -// eight (8) octets, encoded in the style of RFC 4632 (CIDR) to represent -// an address range [RFC4632]. For IPv6 addresses, the iPAddress field -// MUST contain 32 octets similarly encoded. For example, a name -// constraint for "class C" subnet 192.0.2.0 is represented as the -// octets C0 00 02 00 FF FF FF 00, representing the CIDR notation -// 192.0.2.0/24 (mask 255.255.255.0). -pub(super) fn presented_id_matches_constraint( - name: untrusted::Input, - constraint: untrusted::Input, -) -> Result { - if name.len() != 4 && name.len() != 16 { - return Err(Error::BadDer); - } - if constraint.len() != 8 && constraint.len() != 32 { - return Err(Error::BadDer); - } - - // an IPv4 address never matches an IPv6 constraint, and vice versa. - if name.len() * 2 != constraint.len() { - return Ok(false); - } - - let (constraint_address, constraint_mask) = constraint.read_all(Error::BadDer, |value| { - let address = value.read_bytes(constraint.len() / 2).unwrap(); - let mask = value.read_bytes(constraint.len() / 2).unwrap(); - Ok((address, mask)) - })?; - - let mut name = untrusted::Reader::new(name); - let mut constraint_address = untrusted::Reader::new(constraint_address); - let mut constraint_mask = untrusted::Reader::new(constraint_mask); - loop { - let name_byte = name.read_byte().unwrap(); - let constraint_address_byte = constraint_address.read_byte().unwrap(); - let constraint_mask_byte = constraint_mask.read_byte().unwrap(); - if ((name_byte ^ constraint_address_byte) & constraint_mask_byte) != 0 { - return Ok(false); - } - if name.at_end() { - break; - } - } - - Ok(true) -} diff -Nru temporalio-1.3.0/vendor/webpki/src/name/verify.rs temporalio-1.3.0/vendor/webpki/src/name/verify.rs --- temporalio-1.3.0/vendor/webpki/src/name/verify.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/name/verify.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,328 +0,0 @@ -// Copyright 2015 Brian Smith. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -use super::{ - dns_name::{self, DnsNameRef}, - ip_address, -}; -use crate::{ - cert::{Cert, EndEntityOrCa}, - der, Error, -}; - -pub fn verify_cert_dns_name( - cert: &crate::EndEntityCert, - dns_name: DnsNameRef, -) -> Result<(), Error> { - let cert = cert.inner(); - let dns_name = untrusted::Input::from(dns_name.as_ref().as_ref()); - iterate_names( - cert.subject, - cert.subject_alt_name, - Err(Error::CertNotValidForName), - &|name| { - match name { - GeneralName::DnsName(presented_id) => { - match dns_name::presented_id_matches_reference_id(presented_id, dns_name) { - Some(true) => { - return NameIteration::Stop(Ok(())); - } - Some(false) => (), - None => { - return NameIteration::Stop(Err(Error::BadDer)); - } - } - } - _ => (), - } - NameIteration::KeepGoing - }, - ) -} - -// https://tools.ietf.org/html/rfc5280#section-4.2.1.10 -pub fn check_name_constraints( - input: Option<&mut untrusted::Reader>, - subordinate_certs: &Cert, -) -> Result<(), Error> { - let input = match input { - Some(input) => input, - None => { - return Ok(()); - } - }; - - fn parse_subtrees<'b>( - inner: &mut untrusted::Reader<'b>, - subtrees_tag: der::Tag, - ) -> Result>, Error> { - if !inner.peek(subtrees_tag.into()) { - return Ok(None); - } - let subtrees = der::nested(inner, subtrees_tag, Error::BadDer, |tagged| { - der::expect_tag_and_get_value(tagged, der::Tag::Sequence) - })?; - Ok(Some(subtrees)) - } - - let permitted_subtrees = parse_subtrees(input, der::Tag::ContextSpecificConstructed0)?; - let excluded_subtrees = parse_subtrees(input, der::Tag::ContextSpecificConstructed1)?; - - let mut child = subordinate_certs; - loop { - iterate_names(child.subject, child.subject_alt_name, Ok(()), &|name| { - check_presented_id_conforms_to_constraints(name, permitted_subtrees, excluded_subtrees) - })?; - - child = match child.ee_or_ca { - EndEntityOrCa::Ca(child_cert) => child_cert, - EndEntityOrCa::EndEntity => { - break; - } - }; - } - - Ok(()) -} - -fn check_presented_id_conforms_to_constraints( - name: GeneralName, - permitted_subtrees: Option, - excluded_subtrees: Option, -) -> NameIteration { - match check_presented_id_conforms_to_constraints_in_subtree( - name, - Subtrees::PermittedSubtrees, - permitted_subtrees, - ) { - stop @ NameIteration::Stop(..) => { - return stop; - } - NameIteration::KeepGoing => (), - }; - - check_presented_id_conforms_to_constraints_in_subtree( - name, - Subtrees::ExcludedSubtrees, - excluded_subtrees, - ) -} - -#[derive(Clone, Copy)] -enum Subtrees { - PermittedSubtrees, - ExcludedSubtrees, -} - -fn check_presented_id_conforms_to_constraints_in_subtree( - name: GeneralName, - subtrees: Subtrees, - constraints: Option, -) -> NameIteration { - let mut constraints = match constraints { - Some(constraints) => untrusted::Reader::new(constraints), - None => { - return NameIteration::KeepGoing; - } - }; - - let mut has_permitted_subtrees_match = false; - let mut has_permitted_subtrees_mismatch = false; - - loop { - // http://tools.ietf.org/html/rfc5280#section-4.2.1.10: "Within this - // profile, the minimum and maximum fields are not used with any name - // forms, thus, the minimum MUST be zero, and maximum MUST be absent." - // - // Since the default value isn't allowed to be encoded according to the - // DER encoding rules for DEFAULT, this is equivalent to saying that - // neither minimum or maximum must be encoded. - fn general_subtree<'b>( - input: &mut untrusted::Reader<'b>, - ) -> Result, Error> { - let general_subtree = der::expect_tag_and_get_value(input, der::Tag::Sequence)?; - general_subtree.read_all(Error::BadDer, |subtree| general_name(subtree)) - } - - let base = match general_subtree(&mut constraints) { - Ok(base) => base, - Err(err) => { - return NameIteration::Stop(Err(err)); - } - }; - - let matches = match (name, base) { - (GeneralName::DnsName(name), GeneralName::DnsName(base)) => { - dns_name::presented_id_matches_constraint(name, base).ok_or(Error::BadDer) - } - - (GeneralName::DirectoryName(name), GeneralName::DirectoryName(base)) => Ok( - presented_directory_name_matches_constraint(name, base, subtrees), - ), - - (GeneralName::IpAddress(name), GeneralName::IpAddress(base)) => { - ip_address::presented_id_matches_constraint(name, base) - } - - // RFC 4280 says "If a name constraints extension that is marked as - // critical imposes constraints on a particular name form, and an - // instance of that name form appears in the subject field or - // subjectAltName extension of a subsequent certificate, then the - // application MUST either process the constraint or reject the - // certificate." Later, the CABForum agreed to support non-critical - // constraints, so it is important to reject the cert without - // considering whether the name constraint it critical. - (GeneralName::Unsupported(name_tag), GeneralName::Unsupported(base_tag)) - if name_tag == base_tag => - { - Err(Error::NameConstraintViolation) - } - - _ => Ok(false), - }; - - match (subtrees, matches) { - (Subtrees::PermittedSubtrees, Ok(true)) => { - has_permitted_subtrees_match = true; - } - - (Subtrees::PermittedSubtrees, Ok(false)) => { - has_permitted_subtrees_mismatch = true; - } - - (Subtrees::ExcludedSubtrees, Ok(true)) => { - return NameIteration::Stop(Err(Error::NameConstraintViolation)); - } - - (Subtrees::ExcludedSubtrees, Ok(false)) => (), - - (_, Err(err)) => { - return NameIteration::Stop(Err(err)); - } - } - - if constraints.at_end() { - break; - } - } - - if has_permitted_subtrees_mismatch && !has_permitted_subtrees_match { - // If there was any entry of the given type in permittedSubtrees, then - // it required that at least one of them must match. Since none of them - // did, we have a failure. - NameIteration::Stop(Err(Error::NameConstraintViolation)) - } else { - NameIteration::KeepGoing - } -} - -// TODO: document this. -fn presented_directory_name_matches_constraint( - name: untrusted::Input, - constraint: untrusted::Input, - subtrees: Subtrees, -) -> bool { - match subtrees { - Subtrees::PermittedSubtrees => name == constraint, - Subtrees::ExcludedSubtrees => true, - } -} - -#[derive(Clone, Copy)] -enum NameIteration { - KeepGoing, - Stop(Result<(), Error>), -} - -fn iterate_names( - subject: untrusted::Input, - subject_alt_name: Option, - result_if_never_stopped_early: Result<(), Error>, - f: &dyn Fn(GeneralName) -> NameIteration, -) -> Result<(), Error> { - match subject_alt_name { - Some(subject_alt_name) => { - let mut subject_alt_name = untrusted::Reader::new(subject_alt_name); - // https://bugzilla.mozilla.org/show_bug.cgi?id=1143085: An empty - // subjectAltName is not legal, but some certificates have an empty - // subjectAltName. Since we don't support CN-IDs, the certificate - // will be rejected either way, but checking `at_end` before - // attempting to parse the first entry allows us to return a better - // error code. - while !subject_alt_name.at_end() { - let name = general_name(&mut subject_alt_name)?; - match f(name) { - NameIteration::Stop(result) => { - return result; - } - NameIteration::KeepGoing => (), - } - } - } - None => (), - } - - match f(GeneralName::DirectoryName(subject)) { - NameIteration::Stop(result) => result, - NameIteration::KeepGoing => result_if_never_stopped_early, - } -} - -// It is *not* valid to derive `Eq`, `PartialEq, etc. for this type. In -// particular, for the types of `GeneralName`s that we don't understand, we -// don't even store the value. Also, the meaning of a `GeneralName` in a name -// constraint is different than the meaning of the identically-represented -// `GeneralName` in other contexts. -#[derive(Clone, Copy)] -enum GeneralName<'a> { - DnsName(untrusted::Input<'a>), - DirectoryName(untrusted::Input<'a>), - IpAddress(untrusted::Input<'a>), - - // The value is the `tag & ~(der::CONTEXT_SPECIFIC | der::CONSTRUCTED)` so - // that the name constraint checking matches tags regardless of whether - // those bits are set. - Unsupported(u8), -} - -fn general_name<'a>(input: &mut untrusted::Reader<'a>) -> Result, Error> { - use ring::io::der::{CONSTRUCTED, CONTEXT_SPECIFIC}; - #[allow(clippy::identity_op)] - const OTHER_NAME_TAG: u8 = CONTEXT_SPECIFIC | CONSTRUCTED | 0; - const RFC822_NAME_TAG: u8 = CONTEXT_SPECIFIC | 1; - const DNS_NAME_TAG: u8 = CONTEXT_SPECIFIC | 2; - const X400_ADDRESS_TAG: u8 = CONTEXT_SPECIFIC | CONSTRUCTED | 3; - const DIRECTORY_NAME_TAG: u8 = CONTEXT_SPECIFIC | CONSTRUCTED | 4; - const EDI_PARTY_NAME_TAG: u8 = CONTEXT_SPECIFIC | CONSTRUCTED | 5; - const UNIFORM_RESOURCE_IDENTIFIER_TAG: u8 = CONTEXT_SPECIFIC | 6; - const IP_ADDRESS_TAG: u8 = CONTEXT_SPECIFIC | 7; - const REGISTERED_ID_TAG: u8 = CONTEXT_SPECIFIC | 8; - - let (tag, value) = der::read_tag_and_get_value(input)?; - let name = match tag { - DNS_NAME_TAG => GeneralName::DnsName(value), - DIRECTORY_NAME_TAG => GeneralName::DirectoryName(value), - IP_ADDRESS_TAG => GeneralName::IpAddress(value), - - OTHER_NAME_TAG - | RFC822_NAME_TAG - | X400_ADDRESS_TAG - | EDI_PARTY_NAME_TAG - | UNIFORM_RESOURCE_IDENTIFIER_TAG - | REGISTERED_ID_TAG => GeneralName::Unsupported(tag & !(CONTEXT_SPECIFIC | CONSTRUCTED)), - - _ => return Err(Error::BadDer), - }; - Ok(name) -} diff -Nru temporalio-1.3.0/vendor/webpki/src/name.rs temporalio-1.3.0/vendor/webpki/src/name.rs --- temporalio-1.3.0/vendor/webpki/src/name.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/name.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -// Copyright 2015-2020 Brian Smith. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -mod dns_name; -pub use dns_name::{DnsNameRef, InvalidDnsNameError}; - -/// Requires the `alloc` feature. -#[cfg(feature = "alloc")] -pub use dns_name::DnsName; - -mod ip_address; - -mod verify; -pub(super) use verify::{check_name_constraints, verify_cert_dns_name}; diff -Nru temporalio-1.3.0/vendor/webpki/src/signed_data.rs temporalio-1.3.0/vendor/webpki/src/signed_data.rs --- temporalio-1.3.0/vendor/webpki/src/signed_data.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/signed_data.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,788 +0,0 @@ -// Copyright 2015 Brian Smith. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -use crate::{der, Error}; -use ring::signature; - -/// X.509 certificates and related items that are signed are almost always -/// encoded in the format "tbs||signatureAlgorithm||signature". This structure -/// captures this pattern. -pub struct SignedData<'a> { - /// The signed data. This would be `tbsCertificate` in the case of an X.509 - /// certificate, `tbsResponseData` in the case of an OCSP response, and the - /// data nested in the `digitally-signed` construct for TLS 1.2 signed - /// data. - data: untrusted::Input<'a>, - - /// The value of the `AlgorithmIdentifier`. This would be - /// `signatureAlgorithm` in the case of an X.509 certificate or OCSP - /// response. This would have to be synthesized in the case of TLS 1.2 - /// signed data, since TLS does not identify algorithms by ASN.1 OIDs. - pub(crate) algorithm: untrusted::Input<'a>, - - /// The value of the signature. This would be `signature` in an X.509 - /// certificate or OCSP response. This would be the value of - /// `DigitallySigned.signature` for TLS 1.2 signed data. - signature: untrusted::Input<'a>, -} - -/// Parses the concatenation of "tbs||signatureAlgorithm||signature" that -/// is common in the X.509 certificate and OCSP response syntaxes. -/// -/// X.509 Certificates (RFC 5280) look like this: -/// -/// ```ASN.1 -/// Certificate (SEQUENCE) { -/// tbsCertificate TBSCertificate, -/// signatureAlgorithm AlgorithmIdentifier, -/// signatureValue BIT STRING -/// } -/// -/// OCSP responses (RFC 6960) look like this: -/// ```ASN.1 -/// BasicOCSPResponse { -/// tbsResponseData ResponseData, -/// signatureAlgorithm AlgorithmIdentifier, -/// signature BIT STRING, -/// certs [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL -/// } -/// ``` -/// -/// Note that this function does NOT parse the outermost `SEQUENCE` or the -/// `certs` value. -/// -/// The return value's first component is the contents of -/// `tbsCertificate`/`tbsResponseData`; the second component is a `SignedData` -/// structure that can be passed to `verify_signed_data`. -pub(crate) fn parse_signed_data<'a>( - der: &mut untrusted::Reader<'a>, -) -> Result<(untrusted::Input<'a>, SignedData<'a>), Error> { - let (data, tbs) = - der.read_partial(|input| der::expect_tag_and_get_value(input, der::Tag::Sequence))?; - let algorithm = der::expect_tag_and_get_value(der, der::Tag::Sequence)?; - let signature = der::bit_string_with_no_unused_bits(der)?; - - Ok(( - tbs, - SignedData { - data, - algorithm, - signature, - }, - )) -} - -/// Verify `signed_data` using the public key in the DER-encoded -/// SubjectPublicKeyInfo `spki` using one of the algorithms in -/// `supported_algorithms`. -/// -/// The algorithm is chosen based on the algorithm information encoded in the -/// algorithm identifiers in `public_key` and `signed_data.algorithm`. The -/// ordering of the algorithms in `supported_algorithms` does not really matter, -/// but generally more common algorithms should go first, as it is scanned -/// linearly for matches. -pub(crate) fn verify_signed_data( - supported_algorithms: &[&SignatureAlgorithm], - spki_value: untrusted::Input, - signed_data: &SignedData, -) -> Result<(), Error> { - // We need to verify the signature in `signed_data` using the public key - // in `public_key`. In order to know which *ring* signature verification - // algorithm to use, we need to know the public key algorithm (ECDSA, - // RSA PKCS#1, etc.), the curve (if applicable), and the digest algorithm. - // `signed_data` identifies only the public key algorithm and the digest - // algorithm, and `public_key` identifies only the public key algorithm and - // the curve (if any). Thus, we have to combine information from both - // inputs to figure out which `ring::signature::VerificationAlgorithm` to - // use to verify the signature. - // - // This is all further complicated by the fact that we don't have any - // implicit knowledge about any algorithms or identifiers, since all of - // that information is encoded in `supported_algorithms.` In particular, we - // avoid hard-coding any of that information so that (link-time) dead code - // elimination will work effectively in eliminating code for unused - // algorithms. - - // Parse the signature. - // - let mut found_signature_alg_match = false; - for supported_alg in supported_algorithms.iter().filter(|alg| { - alg.signature_alg_id - .matches_algorithm_id_value(signed_data.algorithm) - }) { - match verify_signature( - supported_alg, - spki_value, - signed_data.data, - signed_data.signature, - ) { - Err(Error::UnsupportedSignatureAlgorithmForPublicKey) => { - found_signature_alg_match = true; - continue; - } - result => { - return result; - } - } - } - - if found_signature_alg_match { - Err(Error::UnsupportedSignatureAlgorithmForPublicKey) - } else { - Err(Error::UnsupportedSignatureAlgorithm) - } -} - -pub(crate) fn verify_signature( - signature_alg: &SignatureAlgorithm, - spki_value: untrusted::Input, - msg: untrusted::Input, - signature: untrusted::Input, -) -> Result<(), Error> { - let spki = parse_spki_value(spki_value)?; - if !signature_alg - .public_key_alg_id - .matches_algorithm_id_value(spki.algorithm_id_value) - { - return Err(Error::UnsupportedSignatureAlgorithmForPublicKey); - } - signature::UnparsedPublicKey::new( - signature_alg.verification_alg, - spki.key_value.as_slice_less_safe(), - ) - .verify(msg.as_slice_less_safe(), signature.as_slice_less_safe()) - .map_err(|_| Error::InvalidSignatureForPublicKey) -} - -struct SubjectPublicKeyInfo<'a> { - algorithm_id_value: untrusted::Input<'a>, - key_value: untrusted::Input<'a>, -} - -// Parse the public key into an algorithm OID, an optional curve OID, and the -// key value. The caller needs to check whether these match the -// `PublicKeyAlgorithm` for the `SignatureAlgorithm` that is matched when -// parsing the signature. -fn parse_spki_value(input: untrusted::Input) -> Result { - input.read_all(Error::BadDer, |input| { - let algorithm_id_value = der::expect_tag_and_get_value(input, der::Tag::Sequence)?; - let key_value = der::bit_string_with_no_unused_bits(input)?; - Ok(SubjectPublicKeyInfo { - algorithm_id_value, - key_value, - }) - }) -} - -/// A signature algorithm. -pub struct SignatureAlgorithm { - public_key_alg_id: AlgorithmIdentifier, - signature_alg_id: AlgorithmIdentifier, - verification_alg: &'static dyn signature::VerificationAlgorithm, -} - -/// ECDSA signatures using the P-256 curve and SHA-256. -pub static ECDSA_P256_SHA256: SignatureAlgorithm = SignatureAlgorithm { - public_key_alg_id: ECDSA_P256, - signature_alg_id: ECDSA_SHA256, - verification_alg: &signature::ECDSA_P256_SHA256_ASN1, -}; - -/// ECDSA signatures using the P-256 curve and SHA-384. Deprecated. -pub static ECDSA_P256_SHA384: SignatureAlgorithm = SignatureAlgorithm { - public_key_alg_id: ECDSA_P256, - signature_alg_id: ECDSA_SHA384, - verification_alg: &signature::ECDSA_P256_SHA384_ASN1, -}; - -/// ECDSA signatures using the P-384 curve and SHA-256. Deprecated. -pub static ECDSA_P384_SHA256: SignatureAlgorithm = SignatureAlgorithm { - public_key_alg_id: ECDSA_P384, - signature_alg_id: ECDSA_SHA256, - verification_alg: &signature::ECDSA_P384_SHA256_ASN1, -}; - -/// ECDSA signatures using the P-384 curve and SHA-384. -pub static ECDSA_P384_SHA384: SignatureAlgorithm = SignatureAlgorithm { - public_key_alg_id: ECDSA_P384, - signature_alg_id: ECDSA_SHA384, - verification_alg: &signature::ECDSA_P384_SHA384_ASN1, -}; - -/// RSA PKCS#1 1.5 signatures using SHA-256 for keys of 2048-8192 bits. -/// -/// Requires the `alloc` feature. -#[cfg(feature = "alloc")] -pub static RSA_PKCS1_2048_8192_SHA256: SignatureAlgorithm = SignatureAlgorithm { - public_key_alg_id: RSA_ENCRYPTION, - signature_alg_id: RSA_PKCS1_SHA256, - verification_alg: &signature::RSA_PKCS1_2048_8192_SHA256, -}; - -/// RSA PKCS#1 1.5 signatures using SHA-384 for keys of 2048-8192 bits. -/// -/// Requires the `alloc` feature. -#[cfg(feature = "alloc")] -pub static RSA_PKCS1_2048_8192_SHA384: SignatureAlgorithm = SignatureAlgorithm { - public_key_alg_id: RSA_ENCRYPTION, - signature_alg_id: RSA_PKCS1_SHA384, - verification_alg: &signature::RSA_PKCS1_2048_8192_SHA384, -}; - -/// RSA PKCS#1 1.5 signatures using SHA-512 for keys of 2048-8192 bits. -/// -/// Requires the `alloc` feature. -#[cfg(feature = "alloc")] -pub static RSA_PKCS1_2048_8192_SHA512: SignatureAlgorithm = SignatureAlgorithm { - public_key_alg_id: RSA_ENCRYPTION, - signature_alg_id: RSA_PKCS1_SHA512, - verification_alg: &signature::RSA_PKCS1_2048_8192_SHA512, -}; - -/// RSA PKCS#1 1.5 signatures using SHA-384 for keys of 3072-8192 bits. -/// -/// Requires the `alloc` feature. -#[cfg(feature = "alloc")] -pub static RSA_PKCS1_3072_8192_SHA384: SignatureAlgorithm = SignatureAlgorithm { - public_key_alg_id: RSA_ENCRYPTION, - signature_alg_id: RSA_PKCS1_SHA384, - verification_alg: &signature::RSA_PKCS1_3072_8192_SHA384, -}; - -/// RSA PSS signatures using SHA-256 for keys of 2048-8192 bits and of -/// type rsaEncryption; see [RFC 4055 Section 1.2]. -/// -/// [RFC 4055 Section 1.2]: https://tools.ietf.org/html/rfc4055#section-1.2 -/// -/// Requires the `alloc` feature. -#[cfg(feature = "alloc")] -pub static RSA_PSS_2048_8192_SHA256_LEGACY_KEY: SignatureAlgorithm = SignatureAlgorithm { - public_key_alg_id: RSA_ENCRYPTION, - signature_alg_id: RSA_PSS_SHA256, - verification_alg: &signature::RSA_PSS_2048_8192_SHA256, -}; - -/// RSA PSS signatures using SHA-384 for keys of 2048-8192 bits and of -/// type rsaEncryption; see [RFC 4055 Section 1.2]. -/// -/// [RFC 4055 Section 1.2]: https://tools.ietf.org/html/rfc4055#section-1.2 -/// -/// Requires the `alloc` feature. -#[cfg(feature = "alloc")] -pub static RSA_PSS_2048_8192_SHA384_LEGACY_KEY: SignatureAlgorithm = SignatureAlgorithm { - public_key_alg_id: RSA_ENCRYPTION, - signature_alg_id: RSA_PSS_SHA384, - verification_alg: &signature::RSA_PSS_2048_8192_SHA384, -}; - -/// RSA PSS signatures using SHA-512 for keys of 2048-8192 bits and of -/// type rsaEncryption; see [RFC 4055 Section 1.2]. -/// -/// [RFC 4055 Section 1.2]: https://tools.ietf.org/html/rfc4055#section-1.2 -/// -/// Requires the `alloc` feature. -#[cfg(feature = "alloc")] -pub static RSA_PSS_2048_8192_SHA512_LEGACY_KEY: SignatureAlgorithm = SignatureAlgorithm { - public_key_alg_id: RSA_ENCRYPTION, - signature_alg_id: RSA_PSS_SHA512, - verification_alg: &signature::RSA_PSS_2048_8192_SHA512, -}; - -/// ED25519 signatures according to RFC 8410 -pub static ED25519: SignatureAlgorithm = SignatureAlgorithm { - public_key_alg_id: ED_25519, - signature_alg_id: ED_25519, - verification_alg: &signature::ED25519, -}; - -struct AlgorithmIdentifier { - asn1_id_value: untrusted::Input<'static>, -} - -impl AlgorithmIdentifier { - fn matches_algorithm_id_value(&self, encoded: untrusted::Input) -> bool { - encoded == self.asn1_id_value - } -} - -// See src/data/README.md. - -const ECDSA_P256: AlgorithmIdentifier = AlgorithmIdentifier { - asn1_id_value: untrusted::Input::from(include_bytes!("data/alg-ecdsa-p256.der")), -}; - -const ECDSA_P384: AlgorithmIdentifier = AlgorithmIdentifier { - asn1_id_value: untrusted::Input::from(include_bytes!("data/alg-ecdsa-p384.der")), -}; - -const ECDSA_SHA256: AlgorithmIdentifier = AlgorithmIdentifier { - asn1_id_value: untrusted::Input::from(include_bytes!("data/alg-ecdsa-sha256.der")), -}; - -const ECDSA_SHA384: AlgorithmIdentifier = AlgorithmIdentifier { - asn1_id_value: untrusted::Input::from(include_bytes!("data/alg-ecdsa-sha384.der")), -}; - -#[cfg(feature = "alloc")] -const RSA_ENCRYPTION: AlgorithmIdentifier = AlgorithmIdentifier { - asn1_id_value: untrusted::Input::from(include_bytes!("data/alg-rsa-encryption.der")), -}; - -#[cfg(feature = "alloc")] -const RSA_PKCS1_SHA256: AlgorithmIdentifier = AlgorithmIdentifier { - asn1_id_value: untrusted::Input::from(include_bytes!("data/alg-rsa-pkcs1-sha256.der")), -}; - -#[cfg(feature = "alloc")] -const RSA_PKCS1_SHA384: AlgorithmIdentifier = AlgorithmIdentifier { - asn1_id_value: untrusted::Input::from(include_bytes!("data/alg-rsa-pkcs1-sha384.der")), -}; - -#[cfg(feature = "alloc")] -const RSA_PKCS1_SHA512: AlgorithmIdentifier = AlgorithmIdentifier { - asn1_id_value: untrusted::Input::from(include_bytes!("data/alg-rsa-pkcs1-sha512.der")), -}; - -#[cfg(feature = "alloc")] -const RSA_PSS_SHA256: AlgorithmIdentifier = AlgorithmIdentifier { - asn1_id_value: untrusted::Input::from(include_bytes!("data/alg-rsa-pss-sha256.der")), -}; - -#[cfg(feature = "alloc")] -const RSA_PSS_SHA384: AlgorithmIdentifier = AlgorithmIdentifier { - asn1_id_value: untrusted::Input::from(include_bytes!("data/alg-rsa-pss-sha384.der")), -}; - -#[cfg(feature = "alloc")] -const RSA_PSS_SHA512: AlgorithmIdentifier = AlgorithmIdentifier { - asn1_id_value: untrusted::Input::from(include_bytes!("data/alg-rsa-pss-sha512.der")), -}; - -const ED_25519: AlgorithmIdentifier = AlgorithmIdentifier { - asn1_id_value: untrusted::Input::from(include_bytes!("data/alg-ed25519.der")), -}; - -#[cfg(test)] -mod tests { - use crate::{der, signed_data, Error}; - use alloc::{string::String, vec::Vec}; - - macro_rules! test_file_bytes { - ( $file_name:expr ) => { - include_bytes!(concat!( - "../third-party/chromium/data/verify_signed_data/", - $file_name - )) - }; - } - - // TODO: The expected results need to be modified for SHA-1 deprecation. - - macro_rules! test_verify_signed_data { - ($fn_name:ident, $file_name:expr, $expected_result:expr) => { - #[test] - fn $fn_name() { - test_verify_signed_data(test_file_bytes!($file_name), $expected_result); - } - }; - } - - fn test_verify_signed_data(file_contents: &[u8], expected_result: Result<(), Error>) { - let tsd = parse_test_signed_data(file_contents); - let spki_value = untrusted::Input::from(&tsd.spki); - let spki_value = spki_value - .read_all(Error::BadDer, |input| { - der::expect_tag_and_get_value(input, der::Tag::Sequence) - }) - .unwrap(); - - // we can't use `parse_signed_data` because it requires `data` - // to be an ASN.1 SEQUENCE, and that isn't the case with - // Chromium's test data. TODO: The test data set should be - // expanded with SEQUENCE-wrapped data so that we can actually - // test `parse_signed_data`. - - let algorithm = untrusted::Input::from(&tsd.algorithm); - let algorithm = algorithm - .read_all(Error::BadDer, |input| { - der::expect_tag_and_get_value(input, der::Tag::Sequence) - }) - .unwrap(); - - let signature = untrusted::Input::from(&tsd.signature); - let signature = signature - .read_all(Error::BadDer, |input| { - der::bit_string_with_no_unused_bits(input) - }) - .unwrap(); - - let signed_data = signed_data::SignedData { - data: untrusted::Input::from(&tsd.data), - algorithm, - signature, - }; - - assert_eq!( - expected_result, - signed_data::verify_signed_data( - SUPPORTED_ALGORITHMS_IN_TESTS, - spki_value, - &signed_data - ) - ); - } - - // XXX: This is testing code that isn't even in this module. - macro_rules! test_verify_signed_data_signature_outer { - ($fn_name:ident, $file_name:expr, $expected_result:expr) => { - #[test] - fn $fn_name() { - test_verify_signed_data_signature_outer( - test_file_bytes!($file_name), - $expected_result, - ); - } - }; - } - - fn test_verify_signed_data_signature_outer(file_contents: &[u8], expected_error: Error) { - let tsd = parse_test_signed_data(file_contents); - let signature = untrusted::Input::from(&tsd.signature); - assert_eq!( - Err(expected_error), - signature.read_all(Error::BadDer, |input| { - der::bit_string_with_no_unused_bits(input) - }) - ); - } - - // XXX: This is testing code that is not even in this module. - macro_rules! test_parse_spki_bad_outer { - ($fn_name:ident, $file_name:expr, $error:expr) => { - #[test] - fn $fn_name() { - test_parse_spki_bad_outer(test_file_bytes!($file_name), $error) - } - }; - } - - fn test_parse_spki_bad_outer(file_contents: &[u8], expected_error: Error) { - let tsd = parse_test_signed_data(file_contents); - let spki = untrusted::Input::from(&tsd.spki); - assert_eq!( - Err(expected_error), - spki.read_all(Error::BadDer, |input| { - der::expect_tag_and_get_value(input, der::Tag::Sequence) - }) - ); - } - - const UNSUPPORTED_SIGNATURE_ALGORITHM_FOR_RSA_KEY: Error = if cfg!(feature = "alloc") { - Error::UnsupportedSignatureAlgorithmForPublicKey - } else { - Error::UnsupportedSignatureAlgorithm - }; - - const INVALID_SIGNATURE_FOR_RSA_KEY: Error = if cfg!(feature = "alloc") { - Error::InvalidSignatureForPublicKey - } else { - Error::UnsupportedSignatureAlgorithm - }; - - const OK_IF_RSA_AVAILABLE: Result<(), Error> = if cfg!(feature = "alloc") { - Ok(()) - } else { - Err(Error::UnsupportedSignatureAlgorithm) - }; - - // XXX: Some of the BadDER tests should have better error codes, maybe? - - // XXX: We should have a variant of this test with a SHA-256 digest that gives - // `Error::UnsupportedSignatureAlgorithmForPublicKey`. - test_verify_signed_data!( - test_ecdsa_prime256v1_sha512_spki_params_null, - "ecdsa-prime256v1-sha512-spki-params-null.pem", - Err(Error::UnsupportedSignatureAlgorithm) - ); - test_verify_signed_data_signature_outer!( - test_ecdsa_prime256v1_sha512_unused_bits_signature, - "ecdsa-prime256v1-sha512-unused-bits-signature.pem", - Error::BadDer - ); - // XXX: We should have a variant of this test with a SHA-256 digest that gives - // `Error::UnsupportedSignatureAlgorithmForPublicKey`. - test_verify_signed_data!( - test_ecdsa_prime256v1_sha512_using_ecdh_key, - "ecdsa-prime256v1-sha512-using-ecdh-key.pem", - Err(Error::UnsupportedSignatureAlgorithm) - ); - // XXX: We should have a variant of this test with a SHA-256 digest that gives - // `Error::UnsupportedSignatureAlgorithmForPublicKey`. - test_verify_signed_data!( - test_ecdsa_prime256v1_sha512_using_ecmqv_key, - "ecdsa-prime256v1-sha512-using-ecmqv-key.pem", - Err(Error::UnsupportedSignatureAlgorithm) - ); - test_verify_signed_data!( - test_ecdsa_prime256v1_sha512_using_rsa_algorithm, - "ecdsa-prime256v1-sha512-using-rsa-algorithm.pem", - Err(UNSUPPORTED_SIGNATURE_ALGORITHM_FOR_RSA_KEY) - ); - // XXX: We should have a variant of this test with a SHA-256 digest that gives - // `Error::InvalidSignatureForPublicKey`. - test_verify_signed_data!( - test_ecdsa_prime256v1_sha512_wrong_signature_format, - "ecdsa-prime256v1-sha512-wrong-signature-format.pem", - Err(Error::UnsupportedSignatureAlgorithm) - ); - // Differs from Chromium because we don't support P-256 with SHA-512. - test_verify_signed_data!( - test_ecdsa_prime256v1_sha512, - "ecdsa-prime256v1-sha512.pem", - Err(Error::UnsupportedSignatureAlgorithm) - ); - test_verify_signed_data!( - test_ecdsa_secp384r1_sha256_corrupted_data, - "ecdsa-secp384r1-sha256-corrupted-data.pem", - Err(Error::InvalidSignatureForPublicKey) - ); - test_verify_signed_data!( - test_ecdsa_secp384r1_sha256, - "ecdsa-secp384r1-sha256.pem", - Ok(()) - ); - test_verify_signed_data!( - test_ecdsa_using_rsa_key, - "ecdsa-using-rsa-key.pem", - Err(Error::UnsupportedSignatureAlgorithmForPublicKey) - ); - - test_parse_spki_bad_outer!( - test_rsa_pkcs1_sha1_bad_key_der_length, - "rsa-pkcs1-sha1-bad-key-der-length.pem", - Error::BadDer - ); - test_parse_spki_bad_outer!( - test_rsa_pkcs1_sha1_bad_key_der_null, - "rsa-pkcs1-sha1-bad-key-der-null.pem", - Error::BadDer - ); - test_verify_signed_data!( - test_rsa_pkcs1_sha1_key_params_absent, - "rsa-pkcs1-sha1-key-params-absent.pem", - Err(Error::UnsupportedSignatureAlgorithm) - ); - test_verify_signed_data!( - test_rsa_pkcs1_sha1_using_pss_key_no_params, - "rsa-pkcs1-sha1-using-pss-key-no-params.pem", - Err(Error::UnsupportedSignatureAlgorithm) - ); - test_verify_signed_data!( - test_rsa_pkcs1_sha1_wrong_algorithm, - "rsa-pkcs1-sha1-wrong-algorithm.pem", - Err(INVALID_SIGNATURE_FOR_RSA_KEY) - ); - test_verify_signed_data!( - test_rsa_pkcs1_sha1, - "rsa-pkcs1-sha1.pem", - Err(Error::UnsupportedSignatureAlgorithm) - ); - // XXX: RSA PKCS#1 with SHA-1 is a supported algorithm, but we only accept - // 2048-8192 bit keys, and this test file is using a 1024 bit key. Thus, - // our results differ from Chromium's. TODO: this means we need a 2048+ bit - // version of this test. - test_verify_signed_data!( - test_rsa_pkcs1_sha256, - "rsa-pkcs1-sha256.pem", - Err(INVALID_SIGNATURE_FOR_RSA_KEY) - ); - test_parse_spki_bad_outer!( - test_rsa_pkcs1_sha256_key_encoded_ber, - "rsa-pkcs1-sha256-key-encoded-ber.pem", - Error::BadDer - ); - test_verify_signed_data!( - test_rsa_pkcs1_sha256_spki_non_null_params, - "rsa-pkcs1-sha256-spki-non-null-params.pem", - Err(UNSUPPORTED_SIGNATURE_ALGORITHM_FOR_RSA_KEY) - ); - test_verify_signed_data!( - test_rsa_pkcs1_sha256_using_ecdsa_algorithm, - "rsa-pkcs1-sha256-using-ecdsa-algorithm.pem", - Err(Error::UnsupportedSignatureAlgorithmForPublicKey) - ); - test_verify_signed_data!( - test_rsa_pkcs1_sha256_using_id_ea_rsa, - "rsa-pkcs1-sha256-using-id-ea-rsa.pem", - Err(UNSUPPORTED_SIGNATURE_ALGORITHM_FOR_RSA_KEY) - ); - - // Chromium's PSS test are for parameter combinations we don't support. - test_verify_signed_data!( - test_rsa_pss_sha1_salt20_using_pss_key_no_params, - "rsa-pss-sha1-salt20-using-pss-key-no-params.pem", - Err(Error::UnsupportedSignatureAlgorithm) - ); - test_verify_signed_data!( - test_rsa_pss_sha1_salt20_using_pss_key_with_null_params, - "rsa-pss-sha1-salt20-using-pss-key-with-null-params.pem", - Err(Error::UnsupportedSignatureAlgorithm) - ); - test_verify_signed_data!( - test_rsa_pss_sha1_salt20, - "rsa-pss-sha1-salt20.pem", - Err(Error::UnsupportedSignatureAlgorithm) - ); - test_verify_signed_data!( - test_rsa_pss_sha1_wrong_salt, - "rsa-pss-sha1-wrong-salt.pem", - Err(Error::UnsupportedSignatureAlgorithm) - ); - test_verify_signed_data!( - test_rsa_pss_sha256_mgf1_sha512_salt33, - "rsa-pss-sha256-mgf1-sha512-salt33.pem", - Err(Error::UnsupportedSignatureAlgorithm) - ); - test_verify_signed_data!( - test_rsa_pss_sha256_salt10_using_pss_key_with_params, - "rsa-pss-sha256-salt10-using-pss-key-with-params.pem", - Err(Error::UnsupportedSignatureAlgorithm) - ); - test_verify_signed_data!( - test_rsa_pss_sha256_salt10_using_pss_key_with_wrong_params, - "rsa-pss-sha256-salt10-using-pss-key-with-wrong-params.pem", - Err(Error::UnsupportedSignatureAlgorithm) - ); - test_verify_signed_data!( - test_rsa_pss_sha256_salt10, - "rsa-pss-sha256-salt10.pem", - Err(Error::UnsupportedSignatureAlgorithm) - ); - - // Our PSS tests that should work. - test_verify_signed_data!( - test_rsa_pss_sha256_salt32, - "ours/rsa-pss-sha256-salt32.pem", - OK_IF_RSA_AVAILABLE - ); - test_verify_signed_data!( - test_rsa_pss_sha384_salt48, - "ours/rsa-pss-sha384-salt48.pem", - OK_IF_RSA_AVAILABLE - ); - test_verify_signed_data!( - test_rsa_pss_sha512_salt64, - "ours/rsa-pss-sha512-salt64.pem", - OK_IF_RSA_AVAILABLE - ); - test_verify_signed_data!( - test_rsa_pss_sha256_salt32_corrupted_data, - "ours/rsa-pss-sha256-salt32-corrupted-data.pem", - Err(INVALID_SIGNATURE_FOR_RSA_KEY) - ); - test_verify_signed_data!( - test_rsa_pss_sha384_salt48_corrupted_data, - "ours/rsa-pss-sha384-salt48-corrupted-data.pem", - Err(INVALID_SIGNATURE_FOR_RSA_KEY) - ); - test_verify_signed_data!( - test_rsa_pss_sha512_salt64_corrupted_data, - "ours/rsa-pss-sha512-salt64-corrupted-data.pem", - Err(INVALID_SIGNATURE_FOR_RSA_KEY) - ); - - test_verify_signed_data!( - test_rsa_using_ec_key, - "rsa-using-ec-key.pem", - Err(UNSUPPORTED_SIGNATURE_ALGORITHM_FOR_RSA_KEY) - ); - test_verify_signed_data!( - test_rsa2048_pkcs1_sha512, - "rsa2048-pkcs1-sha512.pem", - OK_IF_RSA_AVAILABLE - ); - - struct TestSignedData { - spki: Vec, - data: Vec, - algorithm: Vec, - signature: Vec, - } - - fn parse_test_signed_data(file_contents: &[u8]) -> TestSignedData { - let mut lines = core::str::from_utf8(file_contents).unwrap().lines(); - let spki = read_pem_section(&mut lines, "PUBLIC KEY"); - let algorithm = read_pem_section(&mut lines, "ALGORITHM"); - let data = read_pem_section(&mut lines, "DATA"); - let signature = read_pem_section(&mut lines, "SIGNATURE"); - - TestSignedData { - spki, - data, - algorithm, - signature, - } - } - - use alloc::str::Lines; - - fn read_pem_section(lines: &mut Lines, section_name: &str) -> Vec { - // Skip comments and header - let begin_section = format!("-----BEGIN {}-----", section_name); - loop { - let line = lines.next().unwrap(); - if line == begin_section { - break; - } - } - - let mut base64 = String::new(); - - let end_section = format!("-----END {}-----", section_name); - loop { - let line = lines.next().unwrap(); - if line == end_section { - break; - } - base64.push_str(&line); - } - - base64::decode(&base64).unwrap() - } - - static SUPPORTED_ALGORITHMS_IN_TESTS: &[&signed_data::SignatureAlgorithm] = &[ - // Reasonable algorithms. - &signed_data::ECDSA_P256_SHA256, - &signed_data::ECDSA_P384_SHA384, - &signed_data::ED25519, - #[cfg(feature = "alloc")] - &signed_data::RSA_PKCS1_2048_8192_SHA256, - #[cfg(feature = "alloc")] - &signed_data::RSA_PKCS1_2048_8192_SHA384, - #[cfg(feature = "alloc")] - &signed_data::RSA_PKCS1_2048_8192_SHA512, - #[cfg(feature = "alloc")] - &signed_data::RSA_PKCS1_3072_8192_SHA384, - #[cfg(feature = "alloc")] - &signed_data::RSA_PSS_2048_8192_SHA256_LEGACY_KEY, - #[cfg(feature = "alloc")] - &signed_data::RSA_PSS_2048_8192_SHA384_LEGACY_KEY, - #[cfg(feature = "alloc")] - &signed_data::RSA_PSS_2048_8192_SHA512_LEGACY_KEY, - // Algorithms deprecated because they are annoying (P-521) or because - // they are nonsensical combinations. - &signed_data::ECDSA_P256_SHA384, // Truncates digest. - &signed_data::ECDSA_P384_SHA256, // Digest is unnecessarily short. - ]; -} diff -Nru temporalio-1.3.0/vendor/webpki/src/time.rs temporalio-1.3.0/vendor/webpki/src/time.rs --- temporalio-1.3.0/vendor/webpki/src/time.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/time.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,65 +0,0 @@ -// Copyright 2015-2016 Brian Smith. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -//! Conversions into the library's time type. - -/// The time type. -/// -/// Internally this is merely a UNIX timestamp: a count of non-leap -/// seconds since the start of 1970. This type exists to assist -/// unit-of-measure correctness. -#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)] -pub struct Time(u64); - -impl Time { - /// Create a `webpki::Time` from a unix timestamp. - /// - /// It is usually better to use the less error-prone - /// `webpki::Time::try_from(time: std::time::SystemTime)` instead when - /// `std::time::SystemTime` is available (when `#![no_std]` isn't being - /// used). - #[allow(clippy::must_use_candidate)] - pub fn from_seconds_since_unix_epoch(secs: u64) -> Self { - Self(secs) - } -} - -#[cfg(feature = "std")] -impl core::convert::TryFrom for Time { - type Error = std::time::SystemTimeError; - - /// Create a `webpki::Time` from a `std::time::SystemTime`. - /// - /// # Example: - /// - /// Construct a `webpki::Time` from the current system time: - /// - /// ``` - /// # extern crate ring; - /// # extern crate webpki; - /// # - /// #![cfg(feature = "std")] - /// use std::{convert::TryFrom, time::{SystemTime, SystemTimeError}}; - /// - /// # fn foo() -> Result<(), SystemTimeError> { - /// let time = webpki::Time::try_from(SystemTime::now())?; - /// # Ok(()) - /// # } - /// ``` - fn try_from(value: std::time::SystemTime) -> Result { - value - .duration_since(std::time::UNIX_EPOCH) - .map(|d| Self::from_seconds_since_unix_epoch(d.as_secs())) - } -} diff -Nru temporalio-1.3.0/vendor/webpki/src/trust_anchor.rs temporalio-1.3.0/vendor/webpki/src/trust_anchor.rs --- temporalio-1.3.0/vendor/webpki/src/trust_anchor.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/trust_anchor.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,119 +0,0 @@ -use crate::cert::{certificate_serial_number, Cert}; -use crate::{ - cert::{parse_cert_internal, EndEntityOrCa}, - der, Error, -}; - -/// A trust anchor (a.k.a. root CA). -/// -/// Traditionally, certificate verification libraries have represented trust -/// anchors as full X.509 root certificates. However, those certificates -/// contain a lot more data than is needed for verifying certificates. The -/// `TrustAnchor` representation allows an application to store just the -/// essential elements of trust anchors. The `webpki::trust_anchor_util` module -/// provides functions for converting X.509 certificates to to the minimized -/// `TrustAnchor` representation, either at runtime or in a build script. -#[derive(Debug)] -pub struct TrustAnchor<'a> { - /// The value of the `subject` field of the trust anchor. - pub subject: &'a [u8], - - /// The value of the `subjectPublicKeyInfo` field of the trust anchor. - pub spki: &'a [u8], - - /// The value of a DER-encoded NameConstraints, containing name - /// constraints to apply to the trust anchor, if any. - pub name_constraints: Option<&'a [u8]>, -} - -/// Trust anchors which may be used for authenticating servers. -#[derive(Debug)] -pub struct TlsServerTrustAnchors<'a>(pub &'a [TrustAnchor<'a>]); - -/// Trust anchors which may be used for authenticating clients. -#[derive(Debug)] -pub struct TlsClientTrustAnchors<'a>(pub &'a [TrustAnchor<'a>]); - -impl<'a> TrustAnchor<'a> { - /// Interprets the given DER-encoded certificate as a `TrustAnchor`. The - /// certificate is not validated. In particular, there is no check that the - /// certificate is self-signed or even that the certificate has the cA basic - /// constraint. - pub fn try_from_cert_der(cert_der: &'a [u8]) -> Result { - let cert_der = untrusted::Input::from(cert_der); - - // XXX: `EndEntityOrCA::EndEntity` is used instead of `EndEntityOrCA::CA` - // because we don't have a reference to a child cert, which is needed for - // `EndEntityOrCA::CA`. For this purpose, it doesn't matter. - // - // v1 certificates will result in `Error::BadDER` because `parse_cert` will - // expect a version field that isn't there. In that case, try to parse the - // certificate using a special parser for v1 certificates. Notably, that - // parser doesn't allow extensions, so there's no need to worry about - // embedded name constraints in a v1 certificate. - match parse_cert_internal( - cert_der, - EndEntityOrCa::EndEntity, - possibly_invalid_certificate_serial_number, - ) { - Ok(cert) => Ok(Self::from(cert)), - Err(Error::UnsupportedCertVersion) => parse_cert_v1(cert_der).or(Err(Error::BadDer)), - Err(err) => Err(err), - } - } -} - -fn possibly_invalid_certificate_serial_number(input: &mut untrusted::Reader) -> Result<(), Error> { - // https://tools.ietf.org/html/rfc5280#section-4.1.2.2: - // * Conforming CAs MUST NOT use serialNumber values longer than 20 octets." - // * "The serial number MUST be a positive integer [...]" - // - // However, we don't enforce these constraints on trust anchors, as there - // are widely-deployed trust anchors that violate these constraints. - skip(input, der::Tag::Integer) -} - -impl<'a> From> for TrustAnchor<'a> { - fn from(cert: Cert<'a>) -> Self { - Self { - subject: cert.subject.as_slice_less_safe(), - spki: cert.spki.value().as_slice_less_safe(), - name_constraints: cert.name_constraints.map(|nc| nc.as_slice_less_safe()), - } - } -} - -/// Parses a v1 certificate directly into a TrustAnchor. -fn parse_cert_v1(cert_der: untrusted::Input) -> Result { - // X.509 Certificate: https://tools.ietf.org/html/rfc5280#section-4.1. - cert_der.read_all(Error::BadDer, |cert_der| { - der::nested(cert_der, der::Tag::Sequence, Error::BadDer, |cert_der| { - let anchor = der::nested(cert_der, der::Tag::Sequence, Error::BadDer, |tbs| { - // The version number field does not appear in v1 certificates. - certificate_serial_number(tbs)?; - - skip(tbs, der::Tag::Sequence)?; // signature. - skip(tbs, der::Tag::Sequence)?; // issuer. - skip(tbs, der::Tag::Sequence)?; // validity. - let subject = der::expect_tag_and_get_value(tbs, der::Tag::Sequence)?; - let spki = der::expect_tag_and_get_value(tbs, der::Tag::Sequence)?; - - Ok(TrustAnchor { - subject: subject.as_slice_less_safe(), - spki: spki.as_slice_less_safe(), - name_constraints: None, - }) - }); - - // read and discard signatureAlgorithm + signature - skip(cert_der, der::Tag::Sequence)?; - skip(cert_der, der::Tag::BitString)?; - - anchor - }) - }) -} - -fn skip(input: &mut untrusted::Reader, tag: der::Tag) -> Result<(), Error> { - der::expect_tag_and_get_value(input, tag).map(|_| ()) -} diff -Nru temporalio-1.3.0/vendor/webpki/src/verify_cert.rs temporalio-1.3.0/vendor/webpki/src/verify_cert.rs --- temporalio-1.3.0/vendor/webpki/src/verify_cert.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/src/verify_cert.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,352 +0,0 @@ -// Copyright 2015 Brian Smith. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -use crate::{ - cert::{self, Cert, EndEntityOrCa}, - der, name, signed_data, time, Error, SignatureAlgorithm, TrustAnchor, -}; - -pub fn build_chain( - required_eku_if_present: KeyPurposeId, - supported_sig_algs: &[&SignatureAlgorithm], - trust_anchors: &[TrustAnchor], - intermediate_certs: &[&[u8]], - cert: &Cert, - time: time::Time, - sub_ca_count: usize, -) -> Result<(), Error> { - let used_as_ca = used_as_ca(&cert.ee_or_ca); - - check_issuer_independent_properties( - cert, - time, - used_as_ca, - sub_ca_count, - required_eku_if_present, - )?; - - // TODO: HPKP checks. - - match used_as_ca { - UsedAsCa::Yes => { - const MAX_SUB_CA_COUNT: usize = 6; - - if sub_ca_count >= MAX_SUB_CA_COUNT { - return Err(Error::UnknownIssuer); - } - } - UsedAsCa::No => { - assert_eq!(0, sub_ca_count); - } - } - - // TODO: revocation. - - match loop_while_non_fatal_error(trust_anchors, |trust_anchor: &TrustAnchor| { - let trust_anchor_subject = untrusted::Input::from(trust_anchor.subject); - if cert.issuer != trust_anchor_subject { - return Err(Error::UnknownIssuer); - } - - let name_constraints = trust_anchor.name_constraints.map(untrusted::Input::from); - - untrusted::read_all_optional(name_constraints, Error::BadDer, |value| { - name::check_name_constraints(value, &cert) - })?; - - let trust_anchor_spki = untrusted::Input::from(trust_anchor.spki); - - // TODO: check_distrust(trust_anchor_subject, trust_anchor_spki)?; - - check_signatures(supported_sig_algs, cert, trust_anchor_spki)?; - - Ok(()) - }) { - Ok(()) => { - return Ok(()); - } - Err(..) => { - // If the error is not fatal, then keep going. - } - } - - loop_while_non_fatal_error(intermediate_certs, |cert_der| { - let potential_issuer = - cert::parse_cert(untrusted::Input::from(*cert_der), EndEntityOrCa::Ca(&cert))?; - - if potential_issuer.subject != cert.issuer { - return Err(Error::UnknownIssuer); - } - - // Prevent loops; see RFC 4158 section 5.2. - let mut prev = cert; - loop { - if potential_issuer.spki.value() == prev.spki.value() - && potential_issuer.subject == prev.subject - { - return Err(Error::UnknownIssuer); - } - match &prev.ee_or_ca { - EndEntityOrCa::EndEntity => { - break; - } - EndEntityOrCa::Ca(child_cert) => { - prev = child_cert; - } - } - } - - untrusted::read_all_optional(potential_issuer.name_constraints, Error::BadDer, |value| { - name::check_name_constraints(value, &cert) - })?; - - let next_sub_ca_count = match used_as_ca { - UsedAsCa::No => sub_ca_count, - UsedAsCa::Yes => sub_ca_count + 1, - }; - - build_chain( - required_eku_if_present, - supported_sig_algs, - trust_anchors, - intermediate_certs, - &potential_issuer, - time, - next_sub_ca_count, - ) - }) -} - -fn check_signatures( - supported_sig_algs: &[&SignatureAlgorithm], - cert_chain: &Cert, - trust_anchor_key: untrusted::Input, -) -> Result<(), Error> { - let mut spki_value = trust_anchor_key; - let mut cert = cert_chain; - loop { - signed_data::verify_signed_data(supported_sig_algs, spki_value, &cert.signed_data)?; - - // TODO: check revocation - - match &cert.ee_or_ca { - EndEntityOrCa::Ca(child_cert) => { - spki_value = cert.spki.value(); - cert = child_cert; - } - EndEntityOrCa::EndEntity => { - break; - } - } - } - - Ok(()) -} - -fn check_issuer_independent_properties( - cert: &Cert, - time: time::Time, - used_as_ca: UsedAsCa, - sub_ca_count: usize, - required_eku_if_present: KeyPurposeId, -) -> Result<(), Error> { - // TODO: check_distrust(trust_anchor_subject, trust_anchor_spki)?; - // TODO: Check signature algorithm like mozilla::pkix. - // TODO: Check SPKI like mozilla::pkix. - // TODO: check for active distrust like mozilla::pkix. - - // See the comment in `remember_extension` for why we don't check the - // KeyUsage extension. - - cert.validity - .read_all(Error::BadDer, |value| check_validity(value, time))?; - untrusted::read_all_optional(cert.basic_constraints, Error::BadDer, |value| { - check_basic_constraints(value, used_as_ca, sub_ca_count) - })?; - untrusted::read_all_optional(cert.eku, Error::BadDer, |value| { - check_eku(value, required_eku_if_present) - })?; - - Ok(()) -} - -// https://tools.ietf.org/html/rfc5280#section-4.1.2.5 -fn check_validity(input: &mut untrusted::Reader, time: time::Time) -> Result<(), Error> { - let not_before = der::time_choice(input)?; - let not_after = der::time_choice(input)?; - - if not_before > not_after { - return Err(Error::InvalidCertValidity); - } - if time < not_before { - return Err(Error::CertNotValidYet); - } - if time > not_after { - return Err(Error::CertExpired); - } - - // TODO: mozilla::pkix allows the TrustDomain to check not_before and - // not_after, to enforce things like a maximum validity period. We should - // do something similar. - - Ok(()) -} - -#[derive(Clone, Copy)] -enum UsedAsCa { - Yes, - No, -} - -fn used_as_ca(ee_or_ca: &EndEntityOrCa) -> UsedAsCa { - match ee_or_ca { - EndEntityOrCa::EndEntity => UsedAsCa::No, - EndEntityOrCa::Ca(..) => UsedAsCa::Yes, - } -} - -// https://tools.ietf.org/html/rfc5280#section-4.2.1.9 -fn check_basic_constraints( - input: Option<&mut untrusted::Reader>, - used_as_ca: UsedAsCa, - sub_ca_count: usize, -) -> Result<(), Error> { - let (is_ca, path_len_constraint) = match input { - Some(input) => { - let is_ca = der::optional_boolean(input)?; - - // https://bugzilla.mozilla.org/show_bug.cgi?id=985025: RFC 5280 - // says that a certificate must not have pathLenConstraint unless - // it is a CA certificate, but some real-world end-entity - // certificates have pathLenConstraint. - let path_len_constraint = if !input.at_end() { - let value = der::small_nonnegative_integer(input)?; - Some(usize::from(value)) - } else { - None - }; - - (is_ca, path_len_constraint) - } - None => (false, None), - }; - - match (used_as_ca, is_ca, path_len_constraint) { - (UsedAsCa::No, true, _) => Err(Error::CaUsedAsEndEntity), - (UsedAsCa::Yes, false, _) => Err(Error::EndEntityUsedAsCa), - (UsedAsCa::Yes, true, Some(len)) if sub_ca_count > len => { - Err(Error::PathLenConstraintViolated) - } - _ => Ok(()), - } -} - -#[derive(Clone, Copy)] -pub struct KeyPurposeId { - oid_value: untrusted::Input<'static>, -} - -// id-pkix OBJECT IDENTIFIER ::= { 1 3 6 1 5 5 7 } -// id-kp OBJECT IDENTIFIER ::= { id-pkix 3 } - -// id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 } -#[allow(clippy::identity_op)] // TODO: Make this clearer -pub static EKU_SERVER_AUTH: KeyPurposeId = KeyPurposeId { - oid_value: untrusted::Input::from(&[(40 * 1) + 3, 6, 1, 5, 5, 7, 3, 1]), -}; - -// id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 } -#[allow(clippy::identity_op)] // TODO: Make this clearer -pub static EKU_CLIENT_AUTH: KeyPurposeId = KeyPurposeId { - oid_value: untrusted::Input::from(&[(40 * 1) + 3, 6, 1, 5, 5, 7, 3, 2]), -}; - -// id-kp-OCSPSigning OBJECT IDENTIFIER ::= { id-kp 9 } -#[allow(clippy::identity_op)] // TODO: Make this clearer -pub static EKU_OCSP_SIGNING: KeyPurposeId = KeyPurposeId { - oid_value: untrusted::Input::from(&[(40 * 1) + 3, 6, 1, 5, 5, 7, 3, 9]), -}; - -// https://tools.ietf.org/html/rfc5280#section-4.2.1.12 -// -// Notable Differences from RFC 5280: -// -// * We follow the convention established by Microsoft's implementation and -// mozilla::pkix of treating the EKU extension in a CA certificate as a -// restriction on the allowable EKUs for certificates issued by that CA. RFC -// 5280 doesn't prescribe any meaning to the EKU extension when a certificate -// is being used as a CA certificate. -// -// * We do not recognize anyExtendedKeyUsage. NSS and mozilla::pkix do not -// recognize it either. -// -// * We treat id-Netscape-stepUp as being equivalent to id-kp-serverAuth in CA -// certificates (only). Comodo has issued certificates that require this -// behavior that don't expire until June 2020. See https://bugzilla.mozilla.org/show_bug.cgi?id=982292. -fn check_eku( - input: Option<&mut untrusted::Reader>, - required_eku_if_present: KeyPurposeId, -) -> Result<(), Error> { - match input { - Some(input) => { - loop { - let value = der::expect_tag_and_get_value(input, der::Tag::OID)?; - if value == required_eku_if_present.oid_value { - input.skip_to_end(); - break; - } - if input.at_end() { - return Err(Error::RequiredEkuNotFound); - } - } - Ok(()) - } - None => { - // http://tools.ietf.org/html/rfc6960#section-4.2.2.2: - // "OCSP signing delegation SHALL be designated by the inclusion of - // id-kp-OCSPSigning in an extended key usage certificate extension - // included in the OCSP response signer's certificate." - // - // A missing EKU extension generally means "any EKU", but it is - // important that id-kp-OCSPSigning is explicit so that a normal - // end-entity certificate isn't able to sign trusted OCSP responses - // for itself or for other certificates issued by its issuing CA. - if required_eku_if_present.oid_value == EKU_OCSP_SIGNING.oid_value { - return Err(Error::RequiredEkuNotFound); - } - - Ok(()) - } - } -} - -fn loop_while_non_fatal_error( - values: V, - f: impl Fn(V::Item) -> Result<(), Error>, -) -> Result<(), Error> -where - V: IntoIterator, -{ - for v in values { - match f(v) { - Ok(()) => { - return Ok(()); - } - Err(..) => { - // If the error is not fatal, then keep going. - } - } - } - Err(Error::UnknownIssuer) -} diff -Nru temporalio-1.3.0/vendor/webpki/tests/dns_name_tests.rs temporalio-1.3.0/vendor/webpki/tests/dns_name_tests.rs --- temporalio-1.3.0/vendor/webpki/tests/dns_name_tests.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/tests/dns_name_tests.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,408 +0,0 @@ -// Copyright 2014-2017 Brian Smith. - -// (name, is_valid) -static DNS_NAME_VALIDITY: &[(&[u8], bool)] = &[ - (b"a", true), - (b"a.b", true), - (b"a.b.c", true), - (b"a.b.c.d", true), - - // Hyphens, one component. - (b"-", false), - (b"-a", false), - (b"a-", false), - (b"a-b", true), - - // Hyphens, last component. - (b"a.-", false), - (b"a.-a", false), - (b"a.a-", false), - (b"a.a-b", true), - - // Hyphens, not last component. - (b"-.a", false), - (b"-a.a", false), - (b"a-.a", false), - (b"a-b.a", true), - - // Underscores, one component. - (b"_", true), // TODO: Perhaps this should be rejected for '_' being sole character?. - (b"_a", true), // TODO: Perhaps this should be rejected for '_' being 1st? - (b"a_", true), - (b"a_b", true), - - // Underscores, last component. - (b"a._", true), // TODO: Perhaps this should be rejected for '_' being sole character?. - (b"a._a", true), // TODO: Perhaps this should be rejected for '_' being 1st? - (b"a.a_", true), - (b"a.a_b", true), - - // Underscores, not last component. - (b"_.a", true), // TODO: Perhaps this should be rejected for '_' being sole character?. - (b"_a.a", true), - (b"a_.a", true), - (b"a_b.a", true), - - // empty labels - (b"", false), - (b".", false), - (b"a", true), - (b".a", false), - (b".a.b", false), - (b"..a", false), - (b"a..b", false), - (b"a...b", false), - (b"a..b.c", false), - (b"a.b..c", false), - (b".a.b.c.", false), - - // absolute names - (b"a.", true), - (b"a.b.", true), - (b"a.b.c.", true), - - // absolute names with empty label at end - (b"a..", false), - (b"a.b..", false), - (b"a.b.c..", false), - (b"a...", false), - - // Punycode - (b"xn--", false), - (b"xn--.", false), - (b"xn--.a", false), - (b"a.xn--", false), - (b"a.xn--.", false), - (b"a.xn--.b", false), - (b"a.xn--.b", false), - (b"a.xn--\0.b", false), - (b"a.xn--a.b", true), - (b"xn--a", true), - (b"a.xn--a", true), - (b"a.xn--a.a", true), - (b"\xc4\x95.com", false), // UTF-8 Ä• - (b"xn--jea.com", true), // punycode Ä• - (b"xn--\xc4\x95.com", false), // UTF-8 Ä•, malformed punycode + UTF-8 mashup - - // Surprising punycode - (b"xn--google.com", true), // 䕮䕵䕶䕱.com - (b"xn--citibank.com", true), // å²å²Šå²Šå²…岉岎.com - (b"xn--cnn.com", true), // ä¾.com - (b"a.xn--cnn", true), // a.ä¾ - (b"a.xn--cnn.com", true), // a.ä¾.com - - (b"1.2.3.4", false), // IPv4 address - (b"1::2", false), // IPV6 address - - // whitespace not allowed anywhere. - (b" ", false), - (b" a", false), - (b"a ", false), - (b"a b", false), - (b"a.b 1", false), - (b"a\t", false), - - // Nulls not allowed - (b"\0", false), - (b"a\0", false), - (b"example.org\0.example.com", false), // Hi Moxie! - (b"\0a", false), - (b"xn--\0", false), - - // Allowed character set - (b"a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z", true), - (b"A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z", true), - (b"0.1.2.3.4.5.6.7.8.9.a", true), // "a" needed to avoid numeric last label - (b"a-b", true), // hyphen (a label cannot start or end with a hyphen) - - // An invalid character in various positions - (b"!", false), - (b"!a", false), - (b"a!", false), - (b"a!b", false), - (b"a.!", false), - (b"a.a!", false), - (b"a.!a", false), - (b"a.a!a", false), - (b"a.!a.a", false), - (b"a.a!.a", false), - (b"a.a!a.a", false), - - // Various other invalid characters - (b"a!", false), - (b"a@", false), - (b"a#", false), - (b"a$", false), - (b"a%", false), - (b"a^", false), - (b"a&", false), - (b"a*", false), - (b"a(", false), - (b"a)", false), - - // last label can't be fully numeric - (b"1", false), - (b"a.1", false), - - // other labels can be fully numeric - (b"1.a", true), - (b"1.2.a", true), - (b"1.2.3.a", true), - - // last label can be *partly* numeric - (b"1a", true), - (b"1.1a", true), - (b"1-1", true), - (b"a.1-1", true), - (b"a.1-a", true), - - // labels cannot start with a hyphen - (b"-", false), - (b"-1", false), - - // labels cannot end with a hyphen - (b"1-", false), - (b"1-.a", false), - (b"a-", false), - (b"a-.a", false), - (b"a.1-.a", false), - (b"a.a-.a", false), - - // labels can contain a hyphen in the middle - (b"a-b", true), - (b"1-2", true), - (b"a.a-1", true), - - // multiple consecutive hyphens allowed - (b"a--1", true), - (b"1---a", true), - (b"a-----------------b", true), - - // Wildcard specifications are not valid reference names. - (b"*.a", false), - (b"a*", false), - (b"a*.", false), - (b"a*.a", false), - (b"a*.a.", false), - (b"*.a.b", false), - (b"*.a.b.", false), - (b"a*.b.c", false), - (b"*.a.b.c", false), - (b"a*.b.c.d", false), - - // Multiple wildcards. - (b"a**.b.c", false), - (b"a*b*.c.d", false), - (b"a*.b*.c", false), - - // Wildcards not in the first label. - (b"a.*", false), - (b"a.*.b", false), - (b"a.b.*", false), - (b"a.b*.c", false), - (b"*.b*.c", false), - (b".*.a.b", false), - (b".a*.b.c", false), - - // Wildcards not at the end of the first label. - (b"*a.b.c", false), - (b"a*b.c.d", false), - - // Wildcards and IDNA prefix. - (b"x*.a.b", false), - (b"xn*.a.b", false), - (b"xn-*.a.b", false), - (b"xn--*.a.b", false), - (b"xn--w*.a.b", false), - - // Redacted labels from RFC6962bis draft 4 - // https://tools.ietf.org/html/draft-ietf-trans-rfc6962-bis-04#section-3.2.2 - (b"(PRIVATE).foo", false), - - // maximum label length is 63 characters - (b"123456789012345678901234567890123456789012345678901234567890abc", true), - (b"123456789012345678901234567890123456789012345678901234567890abcd", false), - - // maximum total length is 253 characters - (b"12345678901234567890123456789012345678901234567890.12345678901234567890123456789012345678901234567890.12345678901234567890123456789012345678901234567890.12345678901234567890123456789012345678901234567890.123456789012345678901234567890123456789012345678a", - true), - (b"12345678901234567890123456789012345678901234567890.12345678901234567890123456789012345678901234567890.12345678901234567890123456789012345678901234567890.12345678901234567890123456789012345678901234567890.1234567890123456789012345678901234567890123456789a", - false), -]; - -// (IP address, is valid DNS name). The comments here refer to the validity of -// the string as an IP address, not as a DNS name validity. -static IP_ADDRESS_DNS_VALIDITY: &[(&[u8], bool)] = &[ - (b"", false), - (b"1", false), - (b"1.2", false), - (b"1.2.3", false), - (b"1.2.3.4", false), - (b"1.2.3.4.5", false), - (b"1.2.3.4a", true), // a DNS name! - (b"a.2.3.4", false), // not even a DNS name! - (b"1::2", false), // IPv6 address - // Whitespace not allowed - (b" 1.2.3.4", false), - (b"1.2.3.4 ", false), - (b"1 .2.3.4", false), - (b"\n1.2.3.4", false), - (b"1.2.3.4\n", false), - // Nulls not allowed - (b"\0", false), - (b"\01.2.3.4", false), - (b"1.2.3.4\0", false), - (b"1.2.3.4\0.5", false), - // Range - (b"0.0.0.0", false), - (b"255.255.255.255", false), - (b"256.0.0.0", false), - (b"0.256.0.0", false), - (b"0.0.256.0", false), - (b"0.0.0.256", false), - (b"999.0.0.0", false), - (b"9999999999999999999.0.0.0", false), - // All digits allowed - (b"0.1.2.3", false), - (b"4.5.6.7", false), - (b"8.9.0.1", false), - // Leading zeros not allowed - (b"01.2.3.4", false), - (b"001.2.3.4", false), - (b"00000000001.2.3.4", false), - (b"010.2.3.4", false), - (b"1.02.3.4", false), - (b"1.2.03.4", false), - (b"1.2.3.04", false), - // Empty components - (b".2.3.4", false), - (b"1..3.4", false), - (b"1.2..4", false), - (b"1.2.3.", false), - // Too many components - (b"1.2.3.4.5", false), - (b"1.2.3.4.5.6", false), - (b"0.1.2.3.4", false), - (b"1.2.3.4.0", false), - // Leading/trailing dot - (b".1.2.3.4", false), - (b"1.2.3.4.", false), - // Other common forms of IPv4 address - // http://en.wikipedia.org/wiki/IPv4#Address_representations - (b"192.0.2.235", false), // dotted decimal (control value) - (b"0xC0.0x00.0x02.0xEB", true), // dotted hex - actually a DNS name! - (b"0301.0000.0002.0353", false), // dotted octal - (b"0xC00002EB", true), // non-dotted hex, actually a DNS name! - (b"3221226219", false), // non-dotted decimal - (b"030000001353", false), // non-dotted octal - (b"192.0.0002.0xEB", true), // mixed, actually a DNS name! - (b"1234", false), - (b"1234:5678", false), - (b"1234:5678:9abc", false), - (b"1234:5678:9abc:def0", false), - (b"1234:5678:9abc:def0:1234:", false), - (b"1234:5678:9abc:def0:1234:5678:", false), - (b"1234:5678:9abc:def0:1234:5678:9abc:", false), - (b"1234:5678:9abc:def0:1234:5678:9abc:def0", false), - (b"1234:5678:9abc:def0:1234:5678:9abc:def0:", false), - (b":1234:5678:9abc:def0:1234:5678:9abc:def0", false), - (b"1234:5678:9abc:def0:1234:5678:9abc:def0:0000", false), - // Valid contractions - (b"::1", false), - (b"::1234", false), - (b"1234::", false), - (b"1234::5678", false), - (b"1234:5678::abcd", false), - (b"1234:5678:9abc:def0:1234:5678:9abc::", false), - // Contraction in full IPv6 addresses not allowed - (b"::1234:5678:9abc:def0:1234:5678:9abc:def0", false), // start - (b"1234:5678:9abc:def0:1234:5678:9abc:def0::", false), // end - (b"1234:5678::9abc:def0:1234:5678:9abc:def0", false), // interior - // Multiple contractions not allowed - (b"::1::", false), - (b"::1::2", false), - (b"1::2::", false), - // Colon madness! - (b":", false), - (b"::", false), - (b":::", false), - (b"::::", false), - (b":::1", false), - (b"::::1", false), - (b"1:::2", false), - (b"1::::2", false), - (b"1:2:::", false), - (b"1:2::::", false), - (b"::1234:", false), - (b":1234::", false), - (b"01234::", false), // too many digits, even if zero - (b"12345678::", false), // too many digits or missing colon - // uppercase - (b"ABCD:EFAB::", false), - // miXeD CAse - (b"aBcd:eFAb::", false), - // IPv4-style - (b"::2.3.4.5", false), - (b"1234::2.3.4.5", false), - (b"::abcd:2.3.4.5", false), - (b"1234:5678:9abc:def0:1234:5678:252.253.254.255", false), - (b"1234:5678:9abc:def0:1234::252.253.254.255", false), - (b"1234::252.253.254", false), - (b"::252.253.254", false), - (b"::252.253.254.300", false), - (b"1234::252.253.254.255:", false), - (b"1234::252.253.254.255:5678", false), - // Contractions that don't contract - (b"::1234:5678:9abc:def0:1234:5678:9abc:def0", false), - (b"1234:5678:9abc:def0:1234:5678:9abc:def0::", false), - (b"1234:5678:9abc:def0::1234:5678:9abc:def0", false), - (b"1234:5678:9abc:def0:1234:5678::252.253.254.255", false), - // With and without leading zeros - (b"::123", false), - (b"::0123", false), - (b"::012", false), - (b"::0012", false), - (b"::01", false), - (b"::001", false), - (b"::0001", false), - (b"::0", false), - (b"::00", false), - (b"::000", false), - (b"::0000", false), - (b"::01234", false), - (b"::00123", false), - (b"::000123", false), - // Trailing zero - (b"::12340", false), - // Whitespace - (b" 1234:5678:9abc:def0:1234:5678:9abc:def0", false), - (b"\t1234:5678:9abc:def0:1234:5678:9abc:def0", false), - (b"\t1234:5678:9abc:def0:1234:5678:9abc:def0\n", false), - (b"1234 :5678:9abc:def0:1234:5678:9abc:def0", false), - (b"1234: 5678:9abc:def0:1234:5678:9abc:def0", false), - (b":: 2.3.4.5", false), - (b"1234::252.253.254.255 ", false), - (b"1234::252.253.254.255\n", false), - (b"1234::252.253. 254.255", false), - // Nulls - (b"\0", false), - (b"::1\0:2", false), - (b"::1\0", false), - (b"::1.2.3.4\0", false), - (b"::1.2\02.3.4", false), -]; - -#[test] -fn dns_name_ref_try_from_ascii_test() { - for &(s, is_valid) in DNS_NAME_VALIDITY - .iter() - .chain(IP_ADDRESS_DNS_VALIDITY.iter()) - { - assert_eq!( - webpki::DnsNameRef::try_from_ascii(s).is_ok(), - is_valid, - "DnsNameRef::try_from_ascii_str failed for \"{:?}\"", - s - ); - } -} Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/webpki/tests/ed25519/ca.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/webpki/tests/ed25519/ca.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/webpki/tests/ed25519/ee.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/webpki/tests/ed25519/ee.der differ diff -Nru temporalio-1.3.0/vendor/webpki/tests/integration.rs temporalio-1.3.0/vendor/webpki/tests/integration.rs --- temporalio-1.3.0/vendor/webpki/tests/integration.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/tests/integration.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -// Copyright 2016 Joseph Birr-Pixton. -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -use core::convert::TryFrom; -extern crate webpki; - -static ALL_SIGALGS: &[&webpki::SignatureAlgorithm] = &[ - &webpki::ECDSA_P256_SHA256, - &webpki::ECDSA_P256_SHA384, - &webpki::ECDSA_P384_SHA256, - &webpki::ECDSA_P384_SHA384, - &webpki::ED25519, - #[cfg(feature = "alloc")] - &webpki::RSA_PKCS1_2048_8192_SHA256, - #[cfg(feature = "alloc")] - &webpki::RSA_PKCS1_2048_8192_SHA384, - #[cfg(feature = "alloc")] - &webpki::RSA_PKCS1_2048_8192_SHA512, - #[cfg(feature = "alloc")] - &webpki::RSA_PKCS1_3072_8192_SHA384, -]; - -/* Checks we can verify netflix's cert chain. This is notable - * because they're rooted at a Verisign v1 root. */ -#[cfg(feature = "alloc")] -#[test] -pub fn netflix() { - let ee: &[u8] = include_bytes!("netflix/ee.der"); - let inter = include_bytes!("netflix/inter.der"); - let ca = include_bytes!("netflix/ca.der"); - - let anchors = vec![webpki::TrustAnchor::try_from_cert_der(ca).unwrap()]; - let anchors = webpki::TlsServerTrustAnchors(&anchors); - - #[allow(clippy::unreadable_literal)] // TODO: Make this clear. - let time = webpki::Time::from_seconds_since_unix_epoch(1492441716); - - let cert = webpki::EndEntityCert::try_from(ee).unwrap(); - assert_eq!( - Ok(()), - cert.verify_is_valid_tls_server_cert(ALL_SIGALGS, &anchors, &[inter], time) - ); -} - -#[test] -pub fn ed25519() { - let ee: &[u8] = include_bytes!("ed25519/ee.der"); - let ca = include_bytes!("ed25519/ca.der"); - - let anchors = vec![webpki::TrustAnchor::try_from_cert_der(ca).unwrap()]; - let anchors = webpki::TlsServerTrustAnchors(&anchors); - - #[allow(clippy::unreadable_literal)] // TODO: Make this clear. - let time = webpki::Time::from_seconds_since_unix_epoch(1547363522); - - let cert = webpki::EndEntityCert::try_from(ee).unwrap(); - assert_eq!( - Ok(()), - cert.verify_is_valid_tls_server_cert(ALL_SIGALGS, &anchors, &[], time) - ); -} - -#[test] -fn read_root_with_zero_serial() { - let ca = include_bytes!("misc/serial_zero.der"); - let _ = - webpki::TrustAnchor::try_from_cert_der(ca).expect("godaddy cert should parse as anchor"); -} - -#[test] -fn read_root_with_neg_serial() { - let ca = include_bytes!("misc/serial_neg.der"); - let _ = webpki::TrustAnchor::try_from_cert_der(ca).expect("idcat cert should parse as anchor"); -} - -#[cfg(feature = "std")] -#[test] -fn time_constructor() { - let _ = webpki::Time::try_from(std::time::SystemTime::now()).unwrap(); -} Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/webpki/tests/misc/serial_neg.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/webpki/tests/misc/serial_neg.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/webpki/tests/misc/serial_zero.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/webpki/tests/misc/serial_zero.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/webpki/tests/netflix/ca.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/webpki/tests/netflix/ca.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/webpki/tests/netflix/ee.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/webpki/tests/netflix/ee.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/webpki/tests/netflix/inter.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/webpki/tests/netflix/inter.der differ diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -The key, message, and signature come from: -http://csrc.nist.gov/groups/STM/cavp/documents/dss/186-3ecdsatestvectors.zip (SigVer.rsp) - -The algorithm DER was synthesized to match, and the signature (provided as an r -and s tuple) was encoded into a Ecdsa-Sig-Value and then a BIT STRING. - -It uses ECDSA verification, using curve prime256v1 and SHA-512 - - - ------BEGIN PUBLIC KEY----- -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnLDPaTA9r8dh1ORoe07PA55tNKuWSvgIENjVWKS -o1vctUSM6F4iSCobuCKGWLHnvoxf7eHnil9rSFG25lfoceA== ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=2 l= 89 cons: SEQUENCE - 2:d=1 hl=2 l= 19 cons: SEQUENCE - 4:d=2 hl=2 l= 7 prim: OBJECT :id-ecPublicKey - 13:d=2 hl=2 l= 8 prim: OBJECT :prime256v1 - 23:d=1 hl=2 l= 66 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MAoGCCqGSM49BAME ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 10 cons: SEQUENCE - 2:d=1 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA512 - - - ------BEGIN DATA----- -bikyFTMBpO72gOZCiSmtrpiMEI1mijH/VdBImUfXX/gaRr+J6E1kAfAjvm6HaI+814TXhcqEZzV -SSstS0ARSyEBApHnnzDMJNkQdk7vnIqlDKm4dsRK1yUA7ECcssTR/1hnUY/ep0iOtdv3gbYpog1 -APuEMjWr/5jiQb37VTjD4= ------END DATA----- - - - ------BEGIN SIGNATURE----- -A0cAMEQCIEufkeQoUocmGh0ckjz2Gc1SwXXP5/G+YKUljGEDSLo9AiAoxF+QHXHEGymGOOwNaoX -X/LDDO7/sWpyBCEa2OSiahA== ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=2 l= 71 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-spki-params-null.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-spki-params-null.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-spki-params-null.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-spki-params-null.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -This is the same test as ecdsa-prime256v1-sha512.pem except the public key's -algorithm has been tampered with. The parameters for ecPublicKey should be a -namedCurve, but here they have been replaced by NULL. - - - ------BEGIN PUBLIC KEY----- -MFEwCwYHKoZIzj0CAQUAA0IABJywz2kwPa/HYdTkaHtOzwOebTSrlkr4CBDY1VikqNb3LVEjOhe -IkgqG7gihlix576MX+3h54pfa0hRtuZX6HHg= ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=2 l= 81 cons: SEQUENCE - 2:d=1 hl=2 l= 11 cons: SEQUENCE - 4:d=2 hl=2 l= 7 prim: OBJECT :id-ecPublicKey - 13:d=2 hl=2 l= 0 prim: NULL - 15:d=1 hl=2 l= 66 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MAoGCCqGSM49BAME ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 10 cons: SEQUENCE - 2:d=1 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA512 - - - ------BEGIN DATA----- -bikyFTMBpO72gOZCiSmtrpiMEI1mijH/VdBImUfXX/gaRr+J6E1kAfAjvm6HaI+814TXhcqEZzV -SSstS0ARSyEBApHnnzDMJNkQdk7vnIqlDKm4dsRK1yUA7ECcssTR/1hnUY/ep0iOtdv3gbYpog1 -APuEMjWr/5jiQb37VTjD4= ------END DATA----- - - - ------BEGIN SIGNATURE----- -A0cAMEQCIEufkeQoUocmGh0ckjz2Gc1SwXXP5/G+YKUljGEDSLo9AiAoxF+QHXHEGymGOOwNaoX -X/LDDO7/sWpyBCEa2OSiahA== ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=2 l= 71 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-unused-bits-signature.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-unused-bits-signature.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-unused-bits-signature.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-unused-bits-signature.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,53 +0,0 @@ -This is the same test as ecdsa-prime256v1-sha512.pem, however the SIGNATURE has -been changed to a (valid) BIT STRING containing two unused bits. - -Note that the last two bits of the original signature were 0, so the -DER-encoded bytes portion of the mutated BIT STRING remains the same. All that -changes is the octet at the start which indicates the number of unused bits. - -In other words SIGNATURE changes from: - 03 47 00 30 ... 84 -To: - 03 47 02 30 ... 84 - - - ------BEGIN PUBLIC KEY----- -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnLDPaTA9r8dh1ORoe07PA55tNKuWSvgIENjVWKS -o1vctUSM6F4iSCobuCKGWLHnvoxf7eHnil9rSFG25lfoceA== ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=2 l= 89 cons: SEQUENCE - 2:d=1 hl=2 l= 19 cons: SEQUENCE - 4:d=2 hl=2 l= 7 prim: OBJECT :id-ecPublicKey - 13:d=2 hl=2 l= 8 prim: OBJECT :prime256v1 - 23:d=1 hl=2 l= 66 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MAoGCCqGSM49BAME ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 10 cons: SEQUENCE - 2:d=1 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA512 - - - ------BEGIN DATA----- -bikyFTMBpO72gOZCiSmtrpiMEI1mijH/VdBImUfXX/gaRr+J6E1kAfAjvm6HaI+814TXhcqEZzV -SSstS0ARSyEBApHnnzDMJNkQdk7vnIqlDKm4dsRK1yUA7ECcssTR/1hnUY/ep0iOtdv3gbYpog1 -APuEMjWr/5jiQb37VTjD4= ------END DATA----- - - - ------BEGIN SIGNATURE----- -A0cCMEQCIEufkeQoUocmGh0ckjz2Gc1SwXXP5/G+YKUljGEDSLo9AiAoxF+QHXHEGymGOOwNaoX -X/LDDO7/sWpyBCEa2OSiahA== ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=2 l= 71 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-ecdh-key.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-ecdh-key.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-ecdh-key.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-ecdh-key.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -This uses the same test data as ecdsa-prime256v1-sha512.pem, HOWEVER the -algorithm OID for the public key has been changed from id-ecPublicKey -(1.2.840.10045.2.1) to id-ecDH (1.3.132.1.12) - -This test should fail because the public key's algorithm does not match that of -the signature algorithm. - - - ------BEGIN PUBLIC KEY----- -MFcwEQYFK4EEAQwGCCqGSM49AwEHA0IABJywz2kwPa/HYdTkaHtOzwOebTSrlkr4CBDY1VikqNb -3LVEjOheIkgqG7gihlix576MX+3h54pfa0hRtuZX6HHg= ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=2 l= 87 cons: SEQUENCE - 2:d=1 hl=2 l= 17 cons: SEQUENCE - 4:d=2 hl=2 l= 5 prim: OBJECT :1.3.132.1.12 - 11:d=2 hl=2 l= 8 prim: OBJECT :prime256v1 - 21:d=1 hl=2 l= 66 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MAoGCCqGSM49BAME ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 10 cons: SEQUENCE - 2:d=1 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA512 - - - ------BEGIN DATA----- -bikyFTMBpO72gOZCiSmtrpiMEI1mijH/VdBImUfXX/gaRr+J6E1kAfAjvm6HaI+814TXhcqEZzV -SSstS0ARSyEBApHnnzDMJNkQdk7vnIqlDKm4dsRK1yUA7ECcssTR/1hnUY/ep0iOtdv3gbYpog1 -APuEMjWr/5jiQb37VTjD4= ------END DATA----- - - - ------BEGIN SIGNATURE----- -A0cAMEQCIEufkeQoUocmGh0ckjz2Gc1SwXXP5/G+YKUljGEDSLo9AiAoxF+QHXHEGymGOOwNaoX -X/LDDO7/sWpyBCEa2OSiahA== ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=2 l= 71 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-ecmqv-key.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-ecmqv-key.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-ecmqv-key.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-ecmqv-key.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -This uses the same test data as ecdsa-prime256v1-sha512.pem, HOWEVER the -algorithm OID for the public key has been changed from id-ecPublicKey -(1.2.840.10045.2.1) to id-ecMQV (1.3.132.1.13) - -This test should fail because the public key's algorithm does not match that of -the signature algorithm. - - - ------BEGIN PUBLIC KEY----- -MFcwEQYFK4EEAQ0GCCqGSM49AwEHA0IABJywz2kwPa/HYdTkaHtOzwOebTSrlkr4CBDY1VikqNb -3LVEjOheIkgqG7gihlix576MX+3h54pfa0hRtuZX6HHg= ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=2 l= 87 cons: SEQUENCE - 2:d=1 hl=2 l= 17 cons: SEQUENCE - 4:d=2 hl=2 l= 5 prim: OBJECT :1.3.132.1.13 - 11:d=2 hl=2 l= 8 prim: OBJECT :prime256v1 - 21:d=1 hl=2 l= 66 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MAoGCCqGSM49BAME ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 10 cons: SEQUENCE - 2:d=1 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA512 - - - ------BEGIN DATA----- -bikyFTMBpO72gOZCiSmtrpiMEI1mijH/VdBImUfXX/gaRr+J6E1kAfAjvm6HaI+814TXhcqEZzV -SSstS0ARSyEBApHnnzDMJNkQdk7vnIqlDKm4dsRK1yUA7ECcssTR/1hnUY/ep0iOtdv3gbYpog1 -APuEMjWr/5jiQb37VTjD4= ------END DATA----- - - - ------BEGIN SIGNATURE----- -A0cAMEQCIEufkeQoUocmGh0ckjz2Gc1SwXXP5/G+YKUljGEDSLo9AiAoxF+QHXHEGymGOOwNaoX -X/LDDO7/sWpyBCEa2OSiahA== ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=2 l= 71 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-rsa-algorithm.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-rsa-algorithm.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-rsa-algorithm.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-rsa-algorithm.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -This test specified a valid ECDSA signature and EC key (the same as ecdsa-prime256v1-sha512.pem) - -The problem however is the signature algorithm is indicated as being RSA PKCS#1 v1.5. - -Signature verification consequently should fail. - - - ------BEGIN PUBLIC KEY----- -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnLDPaTA9r8dh1ORoe07PA55tNKuWSvgIENjVWKS -o1vctUSM6F4iSCobuCKGWLHnvoxf7eHnil9rSFG25lfoceA== ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=2 l= 89 cons: SEQUENCE - 2:d=1 hl=2 l= 19 cons: SEQUENCE - 4:d=2 hl=2 l= 7 prim: OBJECT :id-ecPublicKey - 13:d=2 hl=2 l= 8 prim: OBJECT :prime256v1 - 23:d=1 hl=2 l= 66 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MA0GCSqGSIb3DQEBDQUA ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 13 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :sha512WithRSAEncryption - 13:d=1 hl=2 l= 0 prim: NULL - - - ------BEGIN DATA----- -bikyFTMBpO72gOZCiSmtrpiMEI1mijH/VdBImUfXX/gaRr+J6E1kAfAjvm6HaI+814TXhcqEZzV -SSstS0ARSyEBApHnnzDMJNkQdk7vnIqlDKm4dsRK1yUA7ECcssTR/1hnUY/ep0iOtdv3gbYpog1 -APuEMjWr/5jiQb37VTjD4= ------END DATA----- - - - ------BEGIN SIGNATURE----- -A0cAMEQCIEufkeQoUocmGh0ckjz2Gc1SwXXP5/G+YKUljGEDSLo9AiAoxF+QHXHEGymGOOwNaoX -X/LDDO7/sWpyBCEa2OSiahA== ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=2 l= 71 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-wrong-signature-format.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-wrong-signature-format.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-wrong-signature-format.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-wrong-signature-format.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ -This is the same as ecdsa-prime256v1-sha512.pem, except the signature is wrong. - -Rather than encoding the signature into a DER-encoded Ecdsa-Sig-Value, it is a -concatenation of the r and s values. This is the format that WebCrypto uses for -ECDSA signature, but not what is used for digital signatures. - - - ------BEGIN PUBLIC KEY----- -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnLDPaTA9r8dh1ORoe07PA55tNKuWSvgIENjVWKS -o1vctUSM6F4iSCobuCKGWLHnvoxf7eHnil9rSFG25lfoceA== ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=2 l= 89 cons: SEQUENCE - 2:d=1 hl=2 l= 19 cons: SEQUENCE - 4:d=2 hl=2 l= 7 prim: OBJECT :id-ecPublicKey - 13:d=2 hl=2 l= 8 prim: OBJECT :prime256v1 - 23:d=1 hl=2 l= 66 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MAoGCCqGSM49BAME ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 10 cons: SEQUENCE - 2:d=1 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA512 - - - ------BEGIN DATA----- -bikyFTMBpO72gOZCiSmtrpiMEI1mijH/VdBImUfXX/gaRr+J6E1kAfAjvm6HaI+814TXhcqEZzV -SSstS0ARSyEBApHnnzDMJNkQdk7vnIqlDKm4dsRK1yUA7ECcssTR/1hnUY/ep0iOtdv3gbYpog1 -APuEMjWr/5jiQb37VTjD4= ------END DATA----- - - - ------BEGIN SIGNATURE----- -A0EAS5+R5ChShyYaHRySPPYZzVLBdc/n8b5gpSWMYQNIuj0oxF+QHXHEGymGOOwNaoXX/LDDO7/ -sWpyBCEa2OSiahA== ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=2 l= 65 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-secp384r1-sha256-corrupted-data.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-secp384r1-sha256-corrupted-data.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-secp384r1-sha256-corrupted-data.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-secp384r1-sha256-corrupted-data.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,53 +0,0 @@ -This is the same test as ecdsa-secp384r1-sha256.pem, except the DATA section -has been corrupted. The third byte has been set to 0. - -This signature should NOT verify successfully. - - - ------BEGIN PUBLIC KEY----- -MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEXFhBi+WKXuxeK9yCbC9jqEchwjCNsQ4RXAsJ07oHZ+Q -qz55cNIY5BAhcQ0QYY5jv9BimGL9SuhUuOSuS3Pn9rrsIFGcFsihy4kDr8rq5+7RbN8bV057gW5 -emYjLtvDsQ ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=2 l= 118 cons: SEQUENCE - 2:d=1 hl=2 l= 16 cons: SEQUENCE - 4:d=2 hl=2 l= 7 prim: OBJECT :id-ecPublicKey - 13:d=2 hl=2 l= 5 prim: OBJECT :secp384r1 - 20:d=1 hl=2 l= 98 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MAoGCCqGSM49BAMC ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 10 cons: SEQUENCE - 2:d=1 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 - - - ------BEGIN DATA----- -MIIA6KADAgECAgkAtUVxft6/Vc0wCgYIKoZIzj0EAwIwbzELMAkGA1UEBhMCQVUxEzARBgNVBAg -MClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEMMAoGA1UEAw -wDYWhhMRowGAYJKoZIhvcNAQkBFgtzdXBAZm9vLmNvbTAeFw0xNTA3MDIwMDM4MTRaFw0xNjA3M -DEwMDM4MTRaMG8xCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ -bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxDDAKBgNVBAMMA2FoYTEaMBgGCSqGSIb3DQEJARYLc3V -wQGZvby5jb20wdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARcWEGL5Ype7F4r3IJsL2OoRyHCMI2xDh -FcCwnTugdn5CrPnlw0hjkECFxDRBhjmO/0GKYYv1K6FS45K5Lc+f2uuwgUZwWyKHLiQOvyurn7t -Fs3xtXTnuBbl6ZiMu28OxCjUDBOMB0GA1UdDgQWBBR6nDgtPalG2JvSlWzdGRCi/Cu7NjAfBgNV -HSMEGDAWgBR6nDgtPalG2JvSlWzdGRCi/Cu7NjAMBgNVHRMEBTADAQH/ ------END DATA----- - - - ------BEGIN SIGNATURE----- -A2kAMGYCMQCDwMSZVJZ8qThiNTV7VX57m8fdNnNS6cXIjRYoh4SozlYWmWGh87nhmJJCeD16jVM -CMQDkroAY8oNi8RxLUor+LozhhVgu24tu6lcp4MP8H3Zy8bBea5HerAd1AqJp3Ox7KDU= ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=2 l= 105 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-secp384r1-sha256.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-secp384r1-sha256.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-secp384r1-sha256.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-secp384r1-sha256.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,84 +0,0 @@ -This test data was produced by creating a self-signed EC cert using OpenSSL, -and then extracting the relevant fields. - -It uses ECDSA with curve secp384r1 an SHA-256. - -(1) Generate self-signed certificate - - openssl ecparam -out ec_key.pem -name secp384r1 -genkey - openssl req -new -key ec_key.pem -x509 -nodes -days 365 -out cert.pem - -(2) Extract public key - - openssl x509 -in cert.pem -pubkey -noout > pubkey.pem - cat pubkey.pem - -(3) Extract signed data (tbsCertificate) - - openssl asn1parse -in cert.pem -out tbs -noout -strparse 4 - base64 tbs - -(4) Extract signature algorithm - - # Find the offset of the signature algorithm near the end (496 in this case) - openssl asn1parse -in cert.pem - - openssl asn1parse -in cert.pem -out alg -noout -strparse 496 - base64 alg - -(5) Extract the signature - - # Find the final offset of BIT STRING (508 in this case) - openssl asn1parse -in cert.pem - - openssl asn1parse -in cert.pem -out sig -noout -strparse 508 - base64 sig - - - ------BEGIN PUBLIC KEY----- -MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEXFhBi+WKXuxeK9yCbC9jqEchwjCNsQ4RXAsJ07oHZ+Q -qz55cNIY5BAhcQ0QYY5jv9BimGL9SuhUuOSuS3Pn9rrsIFGcFsihy4kDr8rq5+7RbN8bV057gW5 -emYjLtvDsQ ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=2 l= 118 cons: SEQUENCE - 2:d=1 hl=2 l= 16 cons: SEQUENCE - 4:d=2 hl=2 l= 7 prim: OBJECT :id-ecPublicKey - 13:d=2 hl=2 l= 5 prim: OBJECT :secp384r1 - 20:d=1 hl=2 l= 98 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MAoGCCqGSM49BAMC ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 10 cons: SEQUENCE - 2:d=1 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 - - - ------BEGIN DATA----- -MIIB6KADAgECAgkAtUVxft6/Vc0wCgYIKoZIzj0EAwIwbzELMAkGA1UEBhMCQVUxEzARBgNVBAg -MClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEMMAoGA1UEAw -wDYWhhMRowGAYJKoZIhvcNAQkBFgtzdXBAZm9vLmNvbTAeFw0xNTA3MDIwMDM4MTRaFw0xNjA3M -DEwMDM4MTRaMG8xCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ -bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxDDAKBgNVBAMMA2FoYTEaMBgGCSqGSIb3DQEJARYLc3V -wQGZvby5jb20wdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARcWEGL5Ype7F4r3IJsL2OoRyHCMI2xDh -FcCwnTugdn5CrPnlw0hjkECFxDRBhjmO/0GKYYv1K6FS45K5Lc+f2uuwgUZwWyKHLiQOvyurn7t -Fs3xtXTnuBbl6ZiMu28OxCjUDBOMB0GA1UdDgQWBBR6nDgtPalG2JvSlWzdGRCi/Cu7NjAfBgNV -HSMEGDAWgBR6nDgtPalG2JvSlWzdGRCi/Cu7NjAMBgNVHRMEBTADAQH/ ------END DATA----- - - - ------BEGIN SIGNATURE----- -A2kAMGYCMQCDwMSZVJZ8qThiNTV7VX57m8fdNnNS6cXIjRYoh4SozlYWmWGh87nhmJJCeD16jVM -CMQDkroAY8oNi8RxLUor+LozhhVgu24tu6lcp4MP8H3Zy8bBea5HerAd1AqJp3Ox7KDU= ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=2 l= 105 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-using-rsa-key.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-using-rsa-key.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-using-rsa-key.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ecdsa-using-rsa-key.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ -This test specifies an ECDSA signature algorithm (and a valid ecdsa signature), -HOWEVER it provides an RSA key. Verification should fail. - - - ------BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClbkoOcBAXWJpRh9x+qEHRVvLsDjatUqRN/rH -mH3rZkdjFEFb/7bFitMDyg6EqiKOU3/Umq3KRy7MHzqv84LHf1c2VCAltWyuLbfXWce9jd8CSHL -I8Jwpw4lmOb/idGfEFrMLT8Ms18pKA4Thrb2TE7yLh4fINDOjP+yJJvZohNwIDAQAB ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=3 l= 159 cons: SEQUENCE - 3:d=1 hl=2 l= 13 cons: SEQUENCE - 5:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 16:d=2 hl=2 l= 0 prim: NULL - 18:d=1 hl=3 l= 141 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MAoGCCqGSM49BAMC ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 10 cons: SEQUENCE - 2:d=1 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 - - - ------BEGIN DATA----- -MIIB6KADAgECAgkAtUVxft6/Vc0wCgYIKoZIzj0EAwIwbzELMAkGA1UEBhMCQVUxEzARBgNVBAg -MClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEMMAoGA1UEAw -wDYWhhMRowGAYJKoZIhvcNAQkBFgtzdXBAZm9vLmNvbTAeFw0xNTA3MDIwMDM4MTRaFw0xNjA3M -DEwMDM4MTRaMG8xCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ -bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxDDAKBgNVBAMMA2FoYTEaMBgGCSqGSIb3DQEJARYLc3V -wQGZvby5jb20wdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARcWEGL5Ype7F4r3IJsL2OoRyHCMI2xDh -FcCwnTugdn5CrPnlw0hjkECFxDRBhjmO/0GKYYv1K6FS45K5Lc+f2uuwgUZwWyKHLiQOvyurn7t -Fs3xtXTnuBbl6ZiMu28OxCjUDBOMB0GA1UdDgQWBBR6nDgtPalG2JvSlWzdGRCi/Cu7NjAfBgNV -HSMEGDAWgBR6nDgtPalG2JvSlWzdGRCi/Cu7NjAMBgNVHRMEBTADAQH/ ------END DATA----- - - - ------BEGIN SIGNATURE----- -A2kAMGYCMQCDwMSZVJZ8qThiNTV7VX57m8fdNnNS6cXIjRYoh4SozlYWmWGh87nhmJJCeD16jVM -CMQDkroAY8oNi8RxLUor+LozhhVgu24tu6lcp4MP8H3Zy8bBea5HerAd1AqJp3Ox7KDU= ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=2 l= 105 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/make-pss.py temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/make-pss.py --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/make-pss.py 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/make-pss.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -# Copyright 2016 Joseph Birr-Pixton. -# -# Permission to use, copy, modify, and/or distribute this software for any -# purpose with or without fee is hereby granted, provided that the above -# copyright notice and this permission notice appear in all copies. -# -# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES -# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR -# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -import subprocess -import glob -import hashlib -import os - -TOP = '../../../../../' - -def dump(bin, type): - return '-----BEGIN %s-----\n%s-----END %s-----\n' % \ - (type, bin.encode('base64'), type) - -def gen(outfile, paramfile, hashfn): - param = open(paramfile).read() - - rand = os.urandom(64) - hash = getattr(hashlib, hashfn)(rand).digest() - - proc = subprocess.Popen(['openssl', 'pkeyutl', - '-inkey', 'priv.pem', - '-sign', - '-pkeyopt', 'rsa_padding_mode:pss', - '-pkeyopt', 'rsa_pss_saltlen:-1', - '-pkeyopt', 'digest:%s' % hashfn - ], - stdout = subprocess.PIPE, - stdin = subprocess.PIPE) - - sig, _ = proc.communicate(hash) - - with open(outfile, 'w') as f: - print >>f, dump(open('pub.der').read(), 'PUBLIC KEY') - print >>f, dump(param, 'ALGORITHM') - print >>f, dump(rand, 'DATA') - - assert len(sig) == 256 # only works with 2048-bit keys - # turn it into a DER bitstring - print >>f, dump('\x03\x82\x01\x01\x00' + sig, 'SIGNATURE') - -if __name__ == '__main__': - subprocess.check_call('openssl genrsa -out priv.pem 2048', shell = True) - subprocess.check_call('openssl rsa -pubout -out pub.pem -in priv.pem', shell = True) - subprocess.check_call('openssl asn1parse -inform pem -in pub.pem -out pub.der', shell = True) - gen('rsa-pss-sha256-salt32.pem', TOP + 'src/data/alg-pss-sha256.der', 'sha256') - gen('rsa-pss-sha384-salt48.pem', TOP + 'src/data/alg-pss-sha384.der', 'sha384') - gen('rsa-pss-sha512-salt64.pem', TOP + 'src/data/alg-pss-sha512.der', 'sha512') diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/priv.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/priv.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/priv.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/priv.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEAtVDcg1BMqPneiNBL5+mjEB5mxjJzgkmClZR5z1jNht+As6+M -lgflni0bB8LjhWbIt+dZ6Bt4cSHOnAOnkMDOFwtrxJE6Eg1GQ2ux9nDVNvrQkoOL -znXrxMh/af0pcSo8kItDmkqbV/fi3Q7agpbcWc/4wTZOfO6lns4nb5s08oaUv3uF -5Wc0sktNr6he6R3zSQ6YK5KZFzQdnEtGc4gwHWXZ9xt4JeANht3m4RNpMY89qZsZ -xmqoewYHuXQUAfl7W0DC3hoxOoLwSqL2bt2zMMeR8WAo51YY0cJnzAEETcnWIM6e -alb5Osj3iSEknxRTley47SsODQ0maUUWj8wEjwIDAQABAoIBAFBAVQmt7fBQgAWQ -JDimeWz198k7pVKCVND94Zg7luReYmmlhpUVM7V6A1/BC9EMuERlmq6YEgwIyZjW -KUFxhQZAINfk64334CSRMzh/om9uPgjLPoMIQG1dzL9NtR0Ic7wKV8afxPf/mKL9 -Iwvv1+HMoi5qafzz58xNNLk6OgopdZ6H2aX0QtHy/jkMfpE3od7W6Xc+lSVUO7HG -zmN3pHaM5K5n59cX9jpg/K+a0loceY5vmqUfXyh6IP6h1XyAb2NTpU04klDEFEnU -tyaYtxL4ZMZzefoeVXVbCl7qeOE7KGIz7gcvsqL7T8dkK+uYf6mLENeyUvkCKiTG -QAqon0kCgYEA6pLLAYpRo9JbLYlYNt9iTFwIU+R8RcxzZrltm7OUqztmaVq4pOek -cPw/2sCMvqeEWuGhv+bbeIsDUWADU9NFkWySlVRKEFKGb3ECv3A07yfP2K22exOZ -/SglNZKB/ycvpOMcNKnJD5folRrh0actdVG8vOf/sN+887vE77u0f6sCgYEAxeC0 -/6831k/EWYzQf+OfeLqx4ABgkgqxvMXO3YCp44+DD4l8TVWfP4Ahfj5p0zCbXIv3 -5OcxdVwjNljZw4Y5vDNwcDK7vKwp9ne+H9xJB7Yedfr7oyJbqIvJ1nd6jmXoL7GA -dX9xSxJ1CucD7RAY99MS77y8xm0sTbFoI6SvOq0CgYEApeQihXhYvE6sBMw5ArWA -QxhjG1FfQc2RX3iLt62M2nwrtR5frt/TP8RlNEMwRjUaOVuQlLKjS+Cj/Ay2zbWA -YZQzJkByEJEMWgvGMbUc+nVhXI+dmfUG1i5qAjUWkmgYHbgv3l6kvs5jwe88/JQK -ZgnkPISmI2RXsNd+MzzALfkCgYB/56HXa/ERzHnE0KqtH/si1LrJajUB8Xu14761 -msc12rwCvQHmEyRerXn42msZIeAq0CaqhW6Ix8fTB1erdQW4yx8wxvpnGHn/YKM6 -gO+L1oKWDGe/qSPKLKGIya4kgWa1/Wxlhr06o3GYXH9DKxaYio1A/aSgNk1e4v/H -mlnR+QKBgQDd2cdhBTXIo5FZSONip5GG2Ku9m60qGSyPTCqxLNWBfYE/fu0aFCUU -GemqA2ygxFnyCG1Af0SDWwQFH8W7BJ6H1geJVcwVKLrZokKOul8kdwXCxz1J2XGe -gskT4Dsd9K8TSU3J09XVKhC5SrF0vDjdXOE6rtFSqa/bs7B2JcfNwQ== ------END RSA PRIVATE KEY----- diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/pub.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/pub.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/pub.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/pub.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ ------BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtVDcg1BMqPneiNBL5+mj -EB5mxjJzgkmClZR5z1jNht+As6+Mlgflni0bB8LjhWbIt+dZ6Bt4cSHOnAOnkMDO -FwtrxJE6Eg1GQ2ux9nDVNvrQkoOLznXrxMh/af0pcSo8kItDmkqbV/fi3Q7agpbc -Wc/4wTZOfO6lns4nb5s08oaUv3uF5Wc0sktNr6he6R3zSQ6YK5KZFzQdnEtGc4gw -HWXZ9xt4JeANht3m4RNpMY89qZsZxmqoewYHuXQUAfl7W0DC3hoxOoLwSqL2bt2z -MMeR8WAo51YY0cJnzAEETcnWIM6ealb5Osj3iSEknxRTley47SsODQ0maUUWj8wE -jwIDAQAB ------END PUBLIC KEY----- diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha256-salt32-corrupted-data.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha256-salt32-corrupted-data.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha256-salt32-corrupted-data.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha256-salt32-corrupted-data.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -This has had DATA corrupted, so the signature is not valid. - - - ------BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtVDcg1BMqPneiNBL5+mjEB5mxjJzgkm -ClZR5z1jNht+As6+Mlgflni0bB8LjhWbIt+dZ6Bt4cSHOnAOnkMDOFwtrxJE6Eg1GQ2ux9nDVNv -rQkoOLznXrxMh/af0pcSo8kItDmkqbV/fi3Q7agpbcWc/4wTZOfO6lns4nb5s08oaUv3uF5Wc0s -ktNr6he6R3zSQ6YK5KZFzQdnEtGc4gwHWXZ9xt4JeANht3m4RNpMY89qZsZxmqoewYHuXQUAfl7 -W0DC3hoxOoLwSqL2bt2zMMeR8WAo51YY0cJnzAEETcnWIM6ealb5Osj3iSEknxRTley47SsODQ0 -maUUWj8wEjwIDAQAB ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=4 l= 290 cons: SEQUENCE - 4:d=1 hl=2 l= 13 cons: SEQUENCE - 6:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 17:d=2 hl=2 l= 0 prim: NULL - 19:d=1 hl=4 l= 271 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWU -DBAIBBQCiAwIBIA== ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 65 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :rsassaPss - 13:d=1 hl=2 l= 52 cons: SEQUENCE - 15:d=2 hl=2 l= 15 cons: cont [ 0 ] - 17:d=3 hl=2 l= 13 cons: SEQUENCE - 19:d=4 hl=2 l= 9 prim: OBJECT :sha256 - 30:d=4 hl=2 l= 0 prim: NULL - 32:d=2 hl=2 l= 28 cons: cont [ 1 ] - 34:d=3 hl=2 l= 26 cons: SEQUENCE - 36:d=4 hl=2 l= 9 prim: OBJECT :mgf1 - 47:d=4 hl=2 l= 13 cons: SEQUENCE - 49:d=5 hl=2 l= 9 prim: OBJECT :sha256 - 60:d=5 hl=2 l= 0 prim: NULL - 62:d=2 hl=2 l= 3 cons: cont [ 2 ] - 64:d=3 hl=2 l= 1 prim: INTEGER :20 - - - ------BEGIN DATA----- -K6BCjy4hCNAZBmRT+wS4h5wDg7pO67oHFabDt5cXNp8X6sLNH2vjICLtO2niPwZ/Yk2ySxC8MgO -/+U9sdSXxqA== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4IBAQCZqlXJhviFKOKHe1ssbm0ThtAnAbcuP3ACBZyfpBjfYlxAgltNzBnmEtxjsbZQPMXHDHy -Y+fdEXwK2vboCz7BzIRXcrcJGzjsBc2zPeNZlmhaadIoa5d8jy3kxnT+f3YVjKGZBqwDaqE5Kie -jhV0laTK+cNGFXo9a3ylICok+s4jVN2Y7qE+ImgyANbZyn1d6W6VnFf4GVvin2hFwTCcZnKA6Db -NYnArbbNmHmMB2S+1Kw9dAklnzZmwWgNSRirtTpUHTBIWYq3B0hPL8IzwKk89/iKDaY2fpV/Wnt -oL2mgM7oa/7+oQWa27BGYftYZmDpIQtNbUeO4VBnaeqGgA5f ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=4 l= 257 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha256-salt32.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha256-salt32.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha256-salt32.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha256-salt32.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ - - - - ------BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtVDcg1BMqPneiNBL5+mjEB5mxjJzgkm -ClZR5z1jNht+As6+Mlgflni0bB8LjhWbIt+dZ6Bt4cSHOnAOnkMDOFwtrxJE6Eg1GQ2ux9nDVNv -rQkoOLznXrxMh/af0pcSo8kItDmkqbV/fi3Q7agpbcWc/4wTZOfO6lns4nb5s08oaUv3uF5Wc0s -ktNr6he6R3zSQ6YK5KZFzQdnEtGc4gwHWXZ9xt4JeANht3m4RNpMY89qZsZxmqoewYHuXQUAfl7 -W0DC3hoxOoLwSqL2bt2zMMeR8WAo51YY0cJnzAEETcnWIM6ealb5Osj3iSEknxRTley47SsODQ0 -maUUWj8wEjwIDAQAB ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=4 l= 290 cons: SEQUENCE - 4:d=1 hl=2 l= 13 cons: SEQUENCE - 6:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 17:d=2 hl=2 l= 0 prim: NULL - 19:d=1 hl=4 l= 271 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWU -DBAIBBQCiAwIBIA== ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 65 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :rsassaPss - 13:d=1 hl=2 l= 52 cons: SEQUENCE - 15:d=2 hl=2 l= 15 cons: cont [ 0 ] - 17:d=3 hl=2 l= 13 cons: SEQUENCE - 19:d=4 hl=2 l= 9 prim: OBJECT :sha256 - 30:d=4 hl=2 l= 0 prim: NULL - 32:d=2 hl=2 l= 28 cons: cont [ 1 ] - 34:d=3 hl=2 l= 26 cons: SEQUENCE - 36:d=4 hl=2 l= 9 prim: OBJECT :mgf1 - 47:d=4 hl=2 l= 13 cons: SEQUENCE - 49:d=5 hl=2 l= 9 prim: OBJECT :sha256 - 60:d=5 hl=2 l= 0 prim: NULL - 62:d=2 hl=2 l= 3 cons: cont [ 2 ] - 64:d=3 hl=2 l= 1 prim: INTEGER :20 - - - ------BEGIN DATA----- -K5BCjy4hCNAZBmRT+wS4h5wDg7pO67oHFabDt5cXNp8X6sLNH2vjICLtO2niPwZ/Yk2ySxC8MgO -/+U9sdSXxqA== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4IBAQCZqlXJhviFKOKHe1ssbm0ThtAnAbcuP3ACBZyfpBjfYlxAgltNzBnmEtxjsbZQPMXHDHy -Y+fdEXwK2vboCz7BzIRXcrcJGzjsBc2zPeNZlmhaadIoa5d8jy3kxnT+f3YVjKGZBqwDaqE5Kie -jhV0laTK+cNGFXo9a3ylICok+s4jVN2Y7qE+ImgyANbZyn1d6W6VnFf4GVvin2hFwTCcZnKA6Db -NYnArbbNmHmMB2S+1Kw9dAklnzZmwWgNSRirtTpUHTBIWYq3B0hPL8IzwKk89/iKDaY2fpV/Wnt -oL2mgM7oa/7+oQWa27BGYftYZmDpIQtNbUeO4VBnaeqGgA5f ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=4 l= 257 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha384-salt48-corrupted-data.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha384-salt48-corrupted-data.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha384-salt48-corrupted-data.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha384-salt48-corrupted-data.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -This has had DATA corrupted, so the signature is not valid. - - - ------BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtVDcg1BMqPneiNBL5+mjEB5mxjJzgkm -ClZR5z1jNht+As6+Mlgflni0bB8LjhWbIt+dZ6Bt4cSHOnAOnkMDOFwtrxJE6Eg1GQ2ux9nDVNv -rQkoOLznXrxMh/af0pcSo8kItDmkqbV/fi3Q7agpbcWc/4wTZOfO6lns4nb5s08oaUv3uF5Wc0s -ktNr6he6R3zSQ6YK5KZFzQdnEtGc4gwHWXZ9xt4JeANht3m4RNpMY89qZsZxmqoewYHuXQUAfl7 -W0DC3hoxOoLwSqL2bt2zMMeR8WAo51YY0cJnzAEETcnWIM6ealb5Osj3iSEknxRTley47SsODQ0 -maUUWj8wEjwIDAQAB ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=4 l= 290 cons: SEQUENCE - 4:d=1 hl=2 l= 13 cons: SEQUENCE - 6:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 17:d=2 hl=2 l= 0 prim: NULL - 19:d=1 hl=4 l= 271 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAICBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWU -DBAICBQCiAwIBMA== ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 65 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :rsassaPss - 13:d=1 hl=2 l= 52 cons: SEQUENCE - 15:d=2 hl=2 l= 15 cons: cont [ 0 ] - 17:d=3 hl=2 l= 13 cons: SEQUENCE - 19:d=4 hl=2 l= 9 prim: OBJECT :sha384 - 30:d=4 hl=2 l= 0 prim: NULL - 32:d=2 hl=2 l= 28 cons: cont [ 1 ] - 34:d=3 hl=2 l= 26 cons: SEQUENCE - 36:d=4 hl=2 l= 9 prim: OBJECT :mgf1 - 47:d=4 hl=2 l= 13 cons: SEQUENCE - 49:d=5 hl=2 l= 9 prim: OBJECT :sha384 - 60:d=5 hl=2 l= 0 prim: NULL - 62:d=2 hl=2 l= 3 cons: cont [ 2 ] - 64:d=3 hl=2 l= 1 prim: INTEGER :30 - - - ------BEGIN DATA----- -TDrlz5dKOqfOQhirwHj00bsVlf+0WEe2qMe9l6SVr9SHB4Eow26r+aU7+pGZFp774O041xIeU2g -ZHYzNWBjGZQ== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4IBAQBvlL4AuwL3hEobMolBzR/0gzuJ9u4ATWEPO5uTiBtdJ5Nx9O6gFCrtZMwfEU9q4bzazKV -yWRSpn23GZjlmNYhFCNlfY3l6IlhxGEVz/YeOglrBR8hFbA17835jTmcCR09G6SZ7Wwm8NV7riw -woW15A1N2axuaAAcCxf9T48uehAmXrfApJygl2PWeKzzATUAuGzLLmQ0hNGVvUraxCJfiehtnMl -kWUiSZgjvmXKv6N2JtN8dHMHVEzPTBou4a25ozQIRAIGFvZYcDm5DW4CNJqFM1mTv2BEeOCW5hw -Bt60xm8kXOX4OGwgEyB/aHttWHPdAiFUoODo5j4MtcvajuWt ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=4 l= 257 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha384-salt48.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha384-salt48.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha384-salt48.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha384-salt48.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ - - - - ------BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtVDcg1BMqPneiNBL5+mjEB5mxjJzgkm -ClZR5z1jNht+As6+Mlgflni0bB8LjhWbIt+dZ6Bt4cSHOnAOnkMDOFwtrxJE6Eg1GQ2ux9nDVNv -rQkoOLznXrxMh/af0pcSo8kItDmkqbV/fi3Q7agpbcWc/4wTZOfO6lns4nb5s08oaUv3uF5Wc0s -ktNr6he6R3zSQ6YK5KZFzQdnEtGc4gwHWXZ9xt4JeANht3m4RNpMY89qZsZxmqoewYHuXQUAfl7 -W0DC3hoxOoLwSqL2bt2zMMeR8WAo51YY0cJnzAEETcnWIM6ealb5Osj3iSEknxRTley47SsODQ0 -maUUWj8wEjwIDAQAB ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=4 l= 290 cons: SEQUENCE - 4:d=1 hl=2 l= 13 cons: SEQUENCE - 6:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 17:d=2 hl=2 l= 0 prim: NULL - 19:d=1 hl=4 l= 271 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAICBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWU -DBAICBQCiAwIBMA== ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 65 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :rsassaPss - 13:d=1 hl=2 l= 52 cons: SEQUENCE - 15:d=2 hl=2 l= 15 cons: cont [ 0 ] - 17:d=3 hl=2 l= 13 cons: SEQUENCE - 19:d=4 hl=2 l= 9 prim: OBJECT :sha384 - 30:d=4 hl=2 l= 0 prim: NULL - 32:d=2 hl=2 l= 28 cons: cont [ 1 ] - 34:d=3 hl=2 l= 26 cons: SEQUENCE - 36:d=4 hl=2 l= 9 prim: OBJECT :mgf1 - 47:d=4 hl=2 l= 13 cons: SEQUENCE - 49:d=5 hl=2 l= 9 prim: OBJECT :sha384 - 60:d=5 hl=2 l= 0 prim: NULL - 62:d=2 hl=2 l= 3 cons: cont [ 2 ] - 64:d=3 hl=2 l= 1 prim: INTEGER :30 - - - ------BEGIN DATA----- -TDRlz5dKOqfOQhirwHj00bsVlf+0WEe2qMe9l6SVr9SHB4Eow26r+aU7+pGZFp774O041xIeU2g -ZHYzNWBjGZQ== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4IBAQBvlL4AuwL3hEobMolBzR/0gzuJ9u4ATWEPO5uTiBtdJ5Nx9O6gFCrtZMwfEU9q4bzazKV -yWRSpn23GZjlmNYhFCNlfY3l6IlhxGEVz/YeOglrBR8hFbA17835jTmcCR09G6SZ7Wwm8NV7riw -woW15A1N2axuaAAcCxf9T48uehAmXrfApJygl2PWeKzzATUAuGzLLmQ0hNGVvUraxCJfiehtnMl -kWUiSZgjvmXKv6N2JtN8dHMHVEzPTBou4a25ozQIRAIGFvZYcDm5DW4CNJqFM1mTv2BEeOCW5hw -Bt60xm8kXOX4OGwgEyB/aHttWHPdAiFUoODo5j4MtcvajuWt ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=4 l= 257 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha512-salt64-corrupted-data.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha512-salt64-corrupted-data.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha512-salt64-corrupted-data.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha512-salt64-corrupted-data.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -This has had DATA corrupted, so the signature is not valid. - - - ------BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtVDcg1BMqPneiNBL5+mjEB5mxjJzgkm -ClZR5z1jNht+As6+Mlgflni0bB8LjhWbIt+dZ6Bt4cSHOnAOnkMDOFwtrxJE6Eg1GQ2ux9nDVNv -rQkoOLznXrxMh/af0pcSo8kItDmkqbV/fi3Q7agpbcWc/4wTZOfO6lns4nb5s08oaUv3uF5Wc0s -ktNr6he6R3zSQ6YK5KZFzQdnEtGc4gwHWXZ9xt4JeANht3m4RNpMY89qZsZxmqoewYHuXQUAfl7 -W0DC3hoxOoLwSqL2bt2zMMeR8WAo51YY0cJnzAEETcnWIM6ealb5Osj3iSEknxRTley47SsODQ0 -maUUWj8wEjwIDAQAB ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=4 l= 290 cons: SEQUENCE - 4:d=1 hl=2 l= 13 cons: SEQUENCE - 6:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 17:d=2 hl=2 l= 0 prim: NULL - 19:d=1 hl=4 l= 271 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIDBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWU -DBAIDBQCiAwIBQA== ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 65 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :rsassaPss - 13:d=1 hl=2 l= 52 cons: SEQUENCE - 15:d=2 hl=2 l= 15 cons: cont [ 0 ] - 17:d=3 hl=2 l= 13 cons: SEQUENCE - 19:d=4 hl=2 l= 9 prim: OBJECT :sha512 - 30:d=4 hl=2 l= 0 prim: NULL - 32:d=2 hl=2 l= 28 cons: cont [ 1 ] - 34:d=3 hl=2 l= 26 cons: SEQUENCE - 36:d=4 hl=2 l= 9 prim: OBJECT :mgf1 - 47:d=4 hl=2 l= 13 cons: SEQUENCE - 49:d=5 hl=2 l= 9 prim: OBJECT :sha512 - 60:d=5 hl=2 l= 0 prim: NULL - 62:d=2 hl=2 l= 3 cons: cont [ 2 ] - 64:d=3 hl=2 l= 1 prim: INTEGER :40 - - - ------BEGIN DATA----- -BENGYY+GrDsvawb08kP/OZ0iWbG5yBlJpCIJ1YLPfTCjEouvBzwAkWpUEsI3zk0N8+xcMyJ3qOi -pIsX4YnFfPw== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4IBAQBPA1K787NaEycdAHDfil1/F2imI9PcVD5ZuloBz9Qj1q4ZfdZ9PMagunDBVRQoBr1VDhI -6VkDfyQvhKebIbSsfk/qJoNZGCZtsKhXcGm5ZI2+fUbbMW7EwlKle8SqXCHRAIICND/qwundcqp -kLNHOqOK8GRUYHnJcMmQbMCBUx9aw3IRu2LRp6FtBwA16stpSat/NlX+aH79f1B/uoFpDVzG7Kw -oqmAuv81vOVQSCNTn4MrCyxmJTLqbk6frXN7nRF+SQOPksUwXXYgpzGyFhrwgUHwkc3skNx/jOT -fpWnvjOUVbi80Sa9i7EIOcmt4IP4a3BRPWT/MTYDDPADIgVf ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=4 l= 257 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha512-salt64.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha512-salt64.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha512-salt64.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha512-salt64.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ - - - - ------BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtVDcg1BMqPneiNBL5+mjEB5mxjJzgkm -ClZR5z1jNht+As6+Mlgflni0bB8LjhWbIt+dZ6Bt4cSHOnAOnkMDOFwtrxJE6Eg1GQ2ux9nDVNv -rQkoOLznXrxMh/af0pcSo8kItDmkqbV/fi3Q7agpbcWc/4wTZOfO6lns4nb5s08oaUv3uF5Wc0s -ktNr6he6R3zSQ6YK5KZFzQdnEtGc4gwHWXZ9xt4JeANht3m4RNpMY89qZsZxmqoewYHuXQUAfl7 -W0DC3hoxOoLwSqL2bt2zMMeR8WAo51YY0cJnzAEETcnWIM6ealb5Osj3iSEknxRTley47SsODQ0 -maUUWj8wEjwIDAQAB ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=4 l= 290 cons: SEQUENCE - 4:d=1 hl=2 l= 13 cons: SEQUENCE - 6:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 17:d=2 hl=2 l= 0 prim: NULL - 19:d=1 hl=4 l= 271 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIDBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWU -DBAIDBQCiAwIBQA== ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 65 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :rsassaPss - 13:d=1 hl=2 l= 52 cons: SEQUENCE - 15:d=2 hl=2 l= 15 cons: cont [ 0 ] - 17:d=3 hl=2 l= 13 cons: SEQUENCE - 19:d=4 hl=2 l= 9 prim: OBJECT :sha512 - 30:d=4 hl=2 l= 0 prim: NULL - 32:d=2 hl=2 l= 28 cons: cont [ 1 ] - 34:d=3 hl=2 l= 26 cons: SEQUENCE - 36:d=4 hl=2 l= 9 prim: OBJECT :mgf1 - 47:d=4 hl=2 l= 13 cons: SEQUENCE - 49:d=5 hl=2 l= 9 prim: OBJECT :sha512 - 60:d=5 hl=2 l= 0 prim: NULL - 62:d=2 hl=2 l= 3 cons: cont [ 2 ] - 64:d=3 hl=2 l= 1 prim: INTEGER :40 - - - ------BEGIN DATA----- -BEnGYY+GrDsvawb08kP/OZ0iWbG5yBlJpCIJ1YLPfTCjEouvBzwAkWpUEsI3zk0N8+xcMyJ3qOi -pIsX4YnFfPw== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4IBAQBPA1K787NaEycdAHDfil1/F2imI9PcVD5ZuloBz9Qj1q4ZfdZ9PMagunDBVRQoBr1VDhI -6VkDfyQvhKebIbSsfk/qJoNZGCZtsKhXcGm5ZI2+fUbbMW7EwlKle8SqXCHRAIICND/qwundcqp -kLNHOqOK8GRUYHnJcMmQbMCBUx9aw3IRu2LRp6FtBwA16stpSat/NlX+aH79f1B/uoFpDVzG7Kw -oqmAuv81vOVQSCNTn4MrCyxmJTLqbk6frXN7nRF+SQOPksUwXXYgpzGyFhrwgUHwkc3skNx/jOT -fpWnvjOUVbi80Sa9i7EIOcmt4IP4a3BRPWT/MTYDDPADIgVf ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=4 l= 257 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/README temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/README --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/README 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/README 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -This directory contains test data for testing net::VerifySignedData(). - -When adding or changing test data, run the script - $ python annotate_test_data.py - -This script will apply a uniform formatting. For instance it will add a -comment showing what the parsed ASN.1 looks like, and reformat the base64 to -have consistent line breaks. - -The general format for the test files is as follows: - - - - - -----BEGIN PUBLIC KEY----- - - -----END PUBLIC KEY----- - - -----BEGIN ALGORITHM----- - - -----END ALGORITHM----- - - -----BEGIN DATA----- - - -----END DATA----- - - -----BEGIN SIGNATURE----- - - -----END SIGNATURE----- - - -Comments for a PEM block should be placed immediately below that block. -The script will also insert a comment after the block describing its parsed -ASN.1 structure (your extra comments need to be above the script-generated -comments or they will be stripped). diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa2048-pkcs1-sha512.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa2048-pkcs1-sha512.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa2048-pkcs1-sha512.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa2048-pkcs1-sha512.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ -This test data was produced by creating a self-signed RSA cert using OpenSSL, -and then extracting the relevant fields. - -It uses RSA PKCS#1 v1.5 with SHA-512 and a 2048-bit key. - -(1) Generate self-signed certificate - - openssl genrsa -out rsa_key.pem 2048 - openssl req -new -key rsa_key.pem -x509 -nodes -days 365 -sha512 -out cert.pem - -(2) Extract public key - - openssl x509 -in cert.pem -pubkey -noout > pubkey.pem - cat pubkey.pem - -(3) Extract signed data (tbsCertificate) - - openssl asn1parse -in cert.pem -out tbs -noout -strparse 4 - base64 tbs - -(4) Extract signature algorithm - - # Find the offset of the signature algorithm near the end (589 in this case) - openssl asn1parse -in cert.pem - - openssl asn1parse -in cert.pem -out alg -noout -strparse 589 - base64 alg - -(5) Extract the signature - - # Find the final offset of BIT STRING (506 in this case) - openssl asn1parse -in cert.pem - - openssl asn1parse -in cert.pem -out sig -noout -strparse 506 - base64 sig - - - ------BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzcu2shJRrXFAwMkf30y2AY1zIg9VF/h -egYcejzdR2AzUb8vU2TXld2i8pp44l+DrvtqmzS7G+yxx3uOx+zsoqBaUT0c9HfkbE+IRmcLkQF -vYpSpm6Eu8OS14CSmEtiR91Et8LR0+bd0Gn3pgmb+epFJBaBPeDSiI/smqKCs7yP04+tS4Q4r47 -G04LhSp4/hmqH32b4Gcm9nsihHV9FfPfVdxDQUEJp3AgyBPwhPZEAyhoQS73TjjxXHqJRSz37Sl -ueMVPuNncqbT4nAMKz25J1CtRlQh21uZzfY2QRP3m6rAZquQUos1febC6A7qmhQljWKKmXtfVY+ -fAamstdHrWwIDAQAB ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=4 l= 290 cons: SEQUENCE - 4:d=1 hl=2 l= 13 cons: SEQUENCE - 6:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 17:d=2 hl=2 l= 0 prim: NULL - 19:d=1 hl=4 l= 271 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MA0GCSqGSIb3DQEBDQUA ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 13 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :sha512WithRSAEncryption - 13:d=1 hl=2 l= 0 prim: NULL - - - ------BEGIN DATA----- -MIICRaADAgECAgkA7jWRLkwHvHswDQYJKoZIhvcNAQENBQAwRTELMAkGA1UEBhMCQVUxEzARBgN -VBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0xNT -A3MjgwMjIyMzFaFw0xNjA3MjcwMjIyMzFaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lL -VN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB -AQUAA4IBDwAwggEKAoIBAQDNy7ayElGtcUDAyR/fTLYBjXMiD1UX+F6Bhx6PN1HYDNRvy9TZNeV -3aLymnjiX4Ou+2qbNLsb7LHHe47H7OyioFpRPRz0d+RsT4hGZwuRAW9ilKmboS7w5LXgJKYS2JH -3US3wtHT5t3QafemCZv56kUkFoE94NKIj+yaooKzvI/Tj61LhDivjsbTguFKnj+GaoffZvgZyb2 -eyKEdX0V899V3ENBQQmncCDIE/CE9kQDKGhBLvdOOPFceolFLPftKW54xU+42dyptPicAwrPbkn -UK1GVCHbW5nN9jZBE/ebqsBmq5BSizV95sLoDuqaFCWNYoqZe19Vj58Bqay10etbAgMBAAGjUDB -OMB0GA1UdDgQWBBRsCPajkEscZM6SpLbNTa/7dY5azzAfBgNVHSMEGDAWgBRsCPajkEscZM6SpL -bNTa/7dY5azzAMBgNVHRMEBTADAQH/ ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4IBAQAhKSNq+X/CfzhtNsMo6MJpTBjJBV5fhHerIZr6e3ozCTBCR29vYsVnJ4/6i5lL1pNeOhM -ldthnuSlMzTS1Zme1OqRWB3U8QmwCFwhDxW/i4fdT8kxDAmELNp4z0GcXbe27V895PE0R/m8P47 -B6xbra+SQlEMW12K1EndUqrO6vgLbobV14mveWdgc0KIOnDKgsTHV8NTV1w3qtp1ujfvizYfBZu -yyMOA1yZPDpREZtClro7lufwDQ7+LgSdtNLMDAMzapfIjAEPVNVLmJzMgzaHqMsZM8gP8vWAdfc -R4mCmWXVotrM6d1rjJGdRADAONYCC4/+d1IMkVGoVfpaej6I ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=4 l= 257 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-bad-key-der-length.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-bad-key-der-length.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-bad-key-der-length.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-bad-key-der-length.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ -Same test as rsa-pkcs1-sha1.pem except the length of the first SEQUENCE has -been increased by 2 (which makes it invalid). - - - ------BEGIN PUBLIC KEY----- -MIOfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClbkoOcBAXWJpRh9x+qEHRVvLsDjatUqRN/rH -mH3rZkdjFEFb/7bFitMDyg6EqiKOU3/Umq3KRy7MHzqv84LHf1c2VCAltWyuLbfXWce9jd8CSHL -I8Jwpw4lmOb/idGfEFrMLT8Ms18pKA4Thrb2TE7yLh4fINDOjP+yJJvZohNwIDAQAB ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] -Error in encoding - - - ------BEGIN ALGORITHM----- -MA0GCSqGSIb3DQEBBQUA ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 13 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :sha1WithRSAEncryption - 13:d=1 hl=2 l= 0 prim: NULL - - - ------BEGIN DATA----- -zch9oiPXht87ReC7vHITJtHuKvgGzDFUdcxvDZxm4bYjcdRc4jkuGskoRMMQEC8Vag2NUsH0xAu -jqmUJV4bLdpdXplY7qVj+0LzJhOi1F6PV9RWyO4pB50qoZ2k/kN+wYabobfqu5kRywA5fIJRXKc -vr538Gznjgj0CY+6QfnWGTwDF+i2DUtghKy0LSnjgIo7w3LYXjMRcPy/fMctC3HClmSLOk0Q9BY -pXQgHqmJcqydE/Z6o/SI8QlNwKYKL0WvgJUbxMP0uM7k20mduCK7RtzMYt1CgFn0A== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBAGvDoGZWhCkwokfjDVhktNgZI2unxollhirX28TiSvKOhrtTHwM1i+X7dHd8YIb4UMrviT8 -Nb8wtDJHsATaTtOoAuAzUmqxOy1+JEa/lOa2kqPOCPR0T5HLRSQVHxlnHYX89JAh9228rcglhZ/ -wJfKsY6aRY/LY0zc6O41iUxITX ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-bad-key-der-null.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-bad-key-der-null.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-bad-key-der-null.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-bad-key-der-null.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -Same test as rsa-pkcs1-sha1.pem except an extra NULL (0x05, 0x00) has been -appended to the SPKI. - -The DER can still be parsed, however it should fail due to the unconsumed data -at the end. - - - ------BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClbkoOcBAXWJpRh9x+qEHRVvLsDjatUqRN/rH -mH3rZkdjFEFb/7bFitMDyg6EqiKOU3/Umq3KRy7MHzqv84LHf1c2VCAltWyuLbfXWce9jd8CSHL -I8Jwpw4lmOb/idGfEFrMLT8Ms18pKA4Thrb2TE7yLh4fINDOjP+yJJvZohNwIDAQABBQA= ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=3 l= 159 cons: SEQUENCE - 3:d=1 hl=2 l= 13 cons: SEQUENCE - 5:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 16:d=2 hl=2 l= 0 prim: NULL - 18:d=1 hl=3 l= 141 prim: BIT STRING - 162:d=0 hl=2 l= 0 prim: NULL - - - ------BEGIN ALGORITHM----- -MA0GCSqGSIb3DQEBBQUA ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 13 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :sha1WithRSAEncryption - 13:d=1 hl=2 l= 0 prim: NULL - - - ------BEGIN DATA----- -zch9oiPXht87ReC7vHITJtHuKvgGzDFUdcxvDZxm4bYjcdRc4jkuGskoRMMQEC8Vag2NUsH0xAu -jqmUJV4bLdpdXplY7qVj+0LzJhOi1F6PV9RWyO4pB50qoZ2k/kN+wYabobfqu5kRywA5fIJRXKc -vr538Gznjgj0CY+6QfnWGTwDF+i2DUtghKy0LSnjgIo7w3LYXjMRcPy/fMctC3HClmSLOk0Q9BY -pXQgHqmJcqydE/Z6o/SI8QlNwKYKL0WvgJUbxMP0uM7k20mduCK7RtzMYt1CgFn0A== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBAGvDoGZWhCkwokfjDVhktNgZI2unxollhirX28TiSvKOhrtTHwM1i+X7dHd8YIb4UMrviT8 -Nb8wtDJHsATaTtOoAuAzUmqxOy1+JEa/lOa2kqPOCPR0T5HLRSQVHxlnHYX89JAh9228rcglhZ/ -wJfKsY6aRY/LY0zc6O41iUxITX ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-key-params-absent.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-key-params-absent.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-key-params-absent.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-key-params-absent.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -Same test as rsa-pkcs1-sha1.pem, except the SPKI has been modified so the -algorithm parameters are absent rather than NULL. - -This should fail because RFC 3279 says the parameters MUST be NULL. - - - ------BEGIN PUBLIC KEY----- -MIGdMAsGCSqGSIb3DQEBAQOBjQAwgYkCgYEApW5KDnAQF1iaUYfcfqhB0Vby7A42rVKkTf6x5h9 -62ZHYxRBW/+2xYrTA8oOhKoijlN/1JqtykcuzB86r/OCx39XNlQgJbVsri2311nHvY3fAkhyyPC -cKcOJZjm/4nRnxBazC0/DLNfKSgOE4a29kxO8i4eHyDQzoz/siSb2aITcCAwEAAQ== ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=3 l= 157 cons: SEQUENCE - 3:d=1 hl=2 l= 11 cons: SEQUENCE - 5:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 16:d=1 hl=3 l= 141 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MA0GCSqGSIb3DQEBBQUA ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 13 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :sha1WithRSAEncryption - 13:d=1 hl=2 l= 0 prim: NULL - - - ------BEGIN DATA----- -zch9oiPXht87ReC7vHITJtHuKvgGzDFUdcxvDZxm4bYjcdRc4jkuGskoRMMQEC8Vag2NUsH0xAu -jqmUJV4bLdpdXplY7qVj+0LzJhOi1F6PV9RWyO4pB50qoZ2k/kN+wYabobfqu5kRywA5fIJRXKc -vr538Gznjgj0CY+6QfnWGTwDF+i2DUtghKy0LSnjgIo7w3LYXjMRcPy/fMctC3HClmSLOk0Q9BY -pXQgHqmJcqydE/Z6o/SI8QlNwKYKL0WvgJUbxMP0uM7k20mduCK7RtzMYt1CgFn0A== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBAGvDoGZWhCkwokfjDVhktNgZI2unxollhirX28TiSvKOhrtTHwM1i+X7dHd8YIb4UMrviT8 -Nb8wtDJHsATaTtOoAuAzUmqxOy1+JEa/lOa2kqPOCPR0T5HLRSQVHxlnHYX89JAh9228rcglhZ/ -wJfKsY6aRY/LY0zc6O41iUxITX ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,53 +0,0 @@ -The key, message, and signature come from Example 1 of: -ftp://ftp.rsa.com/pub/rsalabs/tmp/pkcs1v15sign-vectors.txt - -(The algorithm DER was synthesized to match, and the signature enclosed in a BIT STRING). - -It uses an RSA key with modulus length of 1024 bits, PKCS#1 v1.5 padding, and -SHA-1 as the digest. - - - ------BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClbkoOcBAXWJpRh9x+qEHRVvLsDjatUqRN/rH -mH3rZkdjFEFb/7bFitMDyg6EqiKOU3/Umq3KRy7MHzqv84LHf1c2VCAltWyuLbfXWce9jd8CSHL -I8Jwpw4lmOb/idGfEFrMLT8Ms18pKA4Thrb2TE7yLh4fINDOjP+yJJvZohNwIDAQAB ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=3 l= 159 cons: SEQUENCE - 3:d=1 hl=2 l= 13 cons: SEQUENCE - 5:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 16:d=2 hl=2 l= 0 prim: NULL - 18:d=1 hl=3 l= 141 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MA0GCSqGSIb3DQEBBQUA ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 13 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :sha1WithRSAEncryption - 13:d=1 hl=2 l= 0 prim: NULL - - - ------BEGIN DATA----- -zch9oiPXht87ReC7vHITJtHuKvgGzDFUdcxvDZxm4bYjcdRc4jkuGskoRMMQEC8Vag2NUsH0xAu -jqmUJV4bLdpdXplY7qVj+0LzJhOi1F6PV9RWyO4pB50qoZ2k/kN+wYabobfqu5kRywA5fIJRXKc -vr538Gznjgj0CY+6QfnWGTwDF+i2DUtghKy0LSnjgIo7w3LYXjMRcPy/fMctC3HClmSLOk0Q9BY -pXQgHqmJcqydE/Z6o/SI8QlNwKYKL0WvgJUbxMP0uM7k20mduCK7RtzMYt1CgFn0A== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBAGvDoGZWhCkwokfjDVhktNgZI2unxollhirX28TiSvKOhrtTHwM1i+X7dHd8YIb4UMrviT8 -Nb8wtDJHsATaTtOoAuAzUmqxOy1+JEa/lOa2kqPOCPR0T5HLRSQVHxlnHYX89JAh9228rcglhZ/ -wJfKsY6aRY/LY0zc6O41iUxITX ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-using-pss-key-no-params.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-using-pss-key-no-params.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-using-pss-key-no-params.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-using-pss-key-no-params.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ -This is the same test as rsa-pkcs1-sha1.pem, except the SPKI has been modified -so that the key algorithm is rsaPss (1.2.840.113549.1.1.10) with absent -parameters. - -Subsequently this should fail, as a PSS key should not be used with a signature -algorithm for PKCS#1 v1.5. - - - ------BEGIN PUBLIC KEY----- -MIGdMAsGCSqGSIb3DQEBCgOBjQAwgYkCgYEApW5KDnAQF1iaUYfcfqhB0Vby7A42rVKkTf6x5h9 -62ZHYxRBW/+2xYrTA8oOhKoijlN/1JqtykcuzB86r/OCx39XNlQgJbVsri2311nHvY3fAkhyyPC -cKcOJZjm/4nRnxBazC0/DLNfKSgOE4a29kxO8i4eHyDQzoz/siSb2aITcCAwEAAQ== ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=3 l= 157 cons: SEQUENCE - 3:d=1 hl=2 l= 11 cons: SEQUENCE - 5:d=2 hl=2 l= 9 prim: OBJECT :rsassaPss - 16:d=1 hl=3 l= 141 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MA0GCSqGSIb3DQEBBQUA ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 13 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :sha1WithRSAEncryption - 13:d=1 hl=2 l= 0 prim: NULL - - - ------BEGIN DATA----- -zch9oiPXht87ReC7vHITJtHuKvgGzDFUdcxvDZxm4bYjcdRc4jkuGskoRMMQEC8Vag2NUsH0xAu -jqmUJV4bLdpdXplY7qVj+0LzJhOi1F6PV9RWyO4pB50qoZ2k/kN+wYabobfqu5kRywA5fIJRXKc -vr538Gznjgj0CY+6QfnWGTwDF+i2DUtghKy0LSnjgIo7w3LYXjMRcPy/fMctC3HClmSLOk0Q9BY -pXQgHqmJcqydE/Z6o/SI8QlNwKYKL0WvgJUbxMP0uM7k20mduCK7RtzMYt1CgFn0A== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBAGvDoGZWhCkwokfjDVhktNgZI2unxollhirX28TiSvKOhrtTHwM1i+X7dHd8YIb4UMrviT8 -Nb8wtDJHsATaTtOoAuAzUmqxOy1+JEa/lOa2kqPOCPR0T5HLRSQVHxlnHYX89JAh9228rcglhZ/ -wJfKsY6aRY/LY0zc6O41iUxITX ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-wrong-algorithm.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-wrong-algorithm.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-wrong-algorithm.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-wrong-algorithm.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -This is the same as rsa-pkcs1-sha1.pem, however the ALGORITHM has been change -to have SHA256 instead of SHA1. Using this algorithm verification should fail. - - - ------BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClbkoOcBAXWJpRh9x+qEHRVvLsDjatUqRN/rH -mH3rZkdjFEFb/7bFitMDyg6EqiKOU3/Umq3KRy7MHzqv84LHf1c2VCAltWyuLbfXWce9jd8CSHL -I8Jwpw4lmOb/idGfEFrMLT8Ms18pKA4Thrb2TE7yLh4fINDOjP+yJJvZohNwIDAQAB ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=3 l= 159 cons: SEQUENCE - 3:d=1 hl=2 l= 13 cons: SEQUENCE - 5:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 16:d=2 hl=2 l= 0 prim: NULL - 18:d=1 hl=3 l= 141 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MA0GCSqGSIb3DQEBCwUA ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 13 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :sha256WithRSAEncryption - 13:d=1 hl=2 l= 0 prim: NULL - - - ------BEGIN DATA----- -zch9oiPXht87ReC7vHITJtHuKvgGzDFUdcxvDZxm4bYjcdRc4jkuGskoRMMQEC8Vag2NUsH0xAu -jqmUJV4bLdpdXplY7qVj+0LzJhOi1F6PV9RWyO4pB50qoZ2k/kN+wYabobfqu5kRywA5fIJRXKc -vr538Gznjgj0CY+6QfnWGTwDF+i2DUtghKy0LSnjgIo7w3LYXjMRcPy/fMctC3HClmSLOk0Q9BY -pXQgHqmJcqydE/Z6o/SI8QlNwKYKL0WvgJUbxMP0uM7k20mduCK7RtzMYt1CgFn0A== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBAGvDoGZWhCkwokfjDVhktNgZI2unxollhirX28TiSvKOhrtTHwM1i+X7dHd8YIb4UMrviT8 -Nb8wtDJHsATaTtOoAuAzUmqxOy1+JEa/lOa2kqPOCPR0T5HLRSQVHxlnHYX89JAh9228rcglhZ/ -wJfKsY6aRY/LY0zc6O41iUxITX ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-key-encoded-ber.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-key-encoded-ber.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-key-encoded-ber.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-key-encoded-ber.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -This is the same test as rsa-pkcs1-sha256.pem except the SPKI has been encoded -using a non-minimal length for the outtermost SEQUENCE. - -Under DER, the tag-length-value encodings should be minimal and hence this should fail. - -Specifically the SPKI start was changed from: - 30 81 9f -To: - 30 82 00 9f - -(the length of 0x9F is being expressed using 2 bytes instead of 1) - - - ------BEGIN PUBLIC KEY----- -MIIAnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAqkfgdjI9YqzadSZ2Ns0CEEUD8+8m7OplIx0 -94X+QD8mooNrunwT04asbLIINGL4qiI/+9IVSvyV3Kj9c4EeQIbANGoJ8AI3wf6MOBB/txxGFed -qqcTffKVMQvtZdoYFbZ/MQkvyRsoyvunb/pWcN4sSaF9kY1bXSeP3J99fBIYUCAwEAAQ== ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=4 l= 159 cons: SEQUENCE - 4:d=1 hl=2 l= 13 cons: SEQUENCE - 6:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 17:d=2 hl=2 l= 0 prim: NULL - 19:d=1 hl=3 l= 141 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MA0GCSqGSIb3DQEBCwUA ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 13 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :sha256WithRSAEncryption - 13:d=1 hl=2 l= 0 prim: NULL - - - ------BEGIN DATA----- -MIIB46ADAgECAgkA3l4tFOVii0UwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQVUxEzARBgN -VBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEPMA0GA1 -UEAwwGTXkga2V5MB4XDTE1MDcwMjE3MDYzOVoXDTE2MDcwMTE3MDYzOVowVjELMAkGA1UEBhMCQ -VUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0 -ZDEPMA0GA1UEAwwGTXkga2V5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqR+B2Mj1irNp -1JnY2zQIQRQPz7ybs6mUjHT3hf5APyaig2u6fBPThqxssgg0YviqIj/70hVK/JXcqP1zgR5AhsA -0agnwAjfB/ow4EH+3HEYV52qpxN98pUxC+1l2hgVtn8xCS/JGyjK+6dv+lZw3ixJoX2RjVtdJ4/ -cn318EhhQIDAQABo1AwTjAdBgNVHQ4EFgQUzQBVKTEknyLndWd2HTsBdTKvyikwHwYDVR0jBBgw -FoAUzQBVKTEknyLndWd2HTsBdTKvyikwDAYDVR0TBAUwAwEB/w== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBADrHSmFSJw/Gv7hs5PNzpaJwAri/sitarIZfzN/SjR+n8L8yeTEoiDb1+BkxlFvXvPHTaOK -oO3WlslNNOxh1W5/JkYYGOUkCcyIjnln6qS560imcr3VNjomT/M8M2Iss+rJiKau1TRuaP7H8i6 -+Gqf3saGdr8/LnvFAdNQvkalQt ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,86 +0,0 @@ -This test data was produced by creating a self-signed EC cert using OpenSSL, -and then extracting the relevant fields. - -It uses RSA PKCS#1 v1.5 with SHA-256 and a 1024-bit key. - -(1) Generate self-signed certificate - - openssl genrsa -out rsa_key.pem 1024 - openssl req -new -key rsa_key.pem -x509 -nodes -days 365 -out cert.pem - -(2) Extract public key - - openssl x509 -in cert.pem -pubkey -noout > pubkey.pem - cat pubkey.pem - -(3) Extract signed data (tbsCertificate) - - openssl asn1parse -in cert.pem -out tbs -noout -strparse 4 - base64 tbs - -(4) Extract signature algorithm - - # Find the offset of the signature algorithm near the end (491 in this case) - openssl asn1parse -in cert.pem - - openssl asn1parse -in cert.pem -out alg -noout -strparse 491 - base64 alg - -(5) Extract the signature - - # Find the final offset of BIT STRING (506 in this case) - openssl asn1parse -in cert.pem - - openssl asn1parse -in cert.pem -out sig -noout -strparse 506 - base64 sig - - - ------BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqR+B2Mj1irNp1JnY2zQIQRQPz7ybs6mUjHT3 -hf5APyaig2u6fBPThqxssgg0YviqIj/70hVK/JXcqP1zgR5AhsA0agnwAjfB/ow4EH+3HEYV52q -pxN98pUxC+1l2hgVtn8xCS/JGyjK+6dv+lZw3ixJoX2RjVtdJ4/cn318EhhQIDAQAB ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=3 l= 159 cons: SEQUENCE - 3:d=1 hl=2 l= 13 cons: SEQUENCE - 5:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 16:d=2 hl=2 l= 0 prim: NULL - 18:d=1 hl=3 l= 141 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MA0GCSqGSIb3DQEBCwUA ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 13 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :sha256WithRSAEncryption - 13:d=1 hl=2 l= 0 prim: NULL - - - ------BEGIN DATA----- -MIIB46ADAgECAgkA3l4tFOVii0UwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQVUxEzARBgN -VBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEPMA0GA1 -UEAwwGTXkga2V5MB4XDTE1MDcwMjE3MDYzOVoXDTE2MDcwMTE3MDYzOVowVjELMAkGA1UEBhMCQ -VUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0 -ZDEPMA0GA1UEAwwGTXkga2V5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqR+B2Mj1irNp -1JnY2zQIQRQPz7ybs6mUjHT3hf5APyaig2u6fBPThqxssgg0YviqIj/70hVK/JXcqP1zgR5AhsA -0agnwAjfB/ow4EH+3HEYV52qpxN98pUxC+1l2hgVtn8xCS/JGyjK+6dv+lZw3ixJoX2RjVtdJ4/ -cn318EhhQIDAQABo1AwTjAdBgNVHQ4EFgQUzQBVKTEknyLndWd2HTsBdTKvyikwHwYDVR0jBBgw -FoAUzQBVKTEknyLndWd2HTsBdTKvyikwDAYDVR0TBAUwAwEB/w== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBADrHSmFSJw/Gv7hs5PNzpaJwAri/sitarIZfzN/SjR+n8L8yeTEoiDb1+BkxlFvXvPHTaOK -oO3WlslNNOxh1W5/JkYYGOUkCcyIjnln6qS560imcr3VNjomT/M8M2Iss+rJiKau1TRuaP7H8i6 -+Gqf3saGdr8/LnvFAdNQvkalQt ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-spki-non-null-params.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-spki-non-null-params.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-spki-non-null-params.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-spki-non-null-params.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -This is the same test as rsa-pkcs1-sha256.pem except the SPKI has been tampered -with. The parameters have been changed from NULL to an INTEGER. - -This was done by changing: - - 05 00 (NULL) -To: - 02 00 (INTEGER) - - - ------BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQIAA4GNADCBiQKBgQCqR+B2Mj1irNp1JnY2zQIQRQPz7ybs6mUjHT3 -hf5APyaig2u6fBPThqxssgg0YviqIj/70hVK/JXcqP1zgR5AhsA0agnwAjfB/ow4EH+3HEYV52q -pxN98pUxC+1l2hgVtn8xCS/JGyjK+6dv+lZw3ixJoX2RjVtdJ4/cn318EhhQIDAQAB ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=3 l= 159 cons: SEQUENCE - 3:d=1 hl=2 l= 13 cons: SEQUENCE - 5:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 16:d=2 hl=2 l= 0 prim: INTEGER :00 - 18:d=1 hl=3 l= 141 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MA0GCSqGSIb3DQEBCwUA ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 13 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :sha256WithRSAEncryption - 13:d=1 hl=2 l= 0 prim: NULL - - - ------BEGIN DATA----- -MIIB46ADAgECAgkA3l4tFOVii0UwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQVUxEzARBgN -VBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEPMA0GA1 -UEAwwGTXkga2V5MB4XDTE1MDcwMjE3MDYzOVoXDTE2MDcwMTE3MDYzOVowVjELMAkGA1UEBhMCQ -VUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0 -ZDEPMA0GA1UEAwwGTXkga2V5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqR+B2Mj1irNp -1JnY2zQIQRQPz7ybs6mUjHT3hf5APyaig2u6fBPThqxssgg0YviqIj/70hVK/JXcqP1zgR5AhsA -0agnwAjfB/ow4EH+3HEYV52qpxN98pUxC+1l2hgVtn8xCS/JGyjK+6dv+lZw3ixJoX2RjVtdJ4/ -cn318EhhQIDAQABo1AwTjAdBgNVHQ4EFgQUzQBVKTEknyLndWd2HTsBdTKvyikwHwYDVR0jBBgw -FoAUzQBVKTEknyLndWd2HTsBdTKvyikwDAYDVR0TBAUwAwEB/w== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBADrHSmFSJw/Gv7hs5PNzpaJwAri/sitarIZfzN/SjR+n8L8yeTEoiDb1+BkxlFvXvPHTaOK -oO3WlslNNOxh1W5/JkYYGOUkCcyIjnln6qS560imcr3VNjomT/M8M2Iss+rJiKau1TRuaP7H8i6 -+Gqf3saGdr8/LnvFAdNQvkalQt ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-using-ecdsa-algorithm.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-using-ecdsa-algorithm.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-using-ecdsa-algorithm.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-using-ecdsa-algorithm.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -This test specified a valid RSA PKCS#1 v.1.5 signature and RSA key (the same as rsa-pkcs1-sha256.pem). - -The problem however is the signature algorithm is indicated as being ECDSA. - -Signature verification consequently should fail. - - - ------BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqR+B2Mj1irNp1JnY2zQIQRQPz7ybs6mUjHT3 -hf5APyaig2u6fBPThqxssgg0YviqIj/70hVK/JXcqP1zgR5AhsA0agnwAjfB/ow4EH+3HEYV52q -pxN98pUxC+1l2hgVtn8xCS/JGyjK+6dv+lZw3ixJoX2RjVtdJ4/cn318EhhQIDAQAB ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=3 l= 159 cons: SEQUENCE - 3:d=1 hl=2 l= 13 cons: SEQUENCE - 5:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 16:d=2 hl=2 l= 0 prim: NULL - 18:d=1 hl=3 l= 141 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MAoGCCqGSM49BAMC ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 10 cons: SEQUENCE - 2:d=1 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 - - - ------BEGIN DATA----- -MIIB46ADAgECAgkA3l4tFOVii0UwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQVUxEzARBgN -VBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEPMA0GA1 -UEAwwGTXkga2V5MB4XDTE1MDcwMjE3MDYzOVoXDTE2MDcwMTE3MDYzOVowVjELMAkGA1UEBhMCQ -VUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0 -ZDEPMA0GA1UEAwwGTXkga2V5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqR+B2Mj1irNp -1JnY2zQIQRQPz7ybs6mUjHT3hf5APyaig2u6fBPThqxssgg0YviqIj/70hVK/JXcqP1zgR5AhsA -0agnwAjfB/ow4EH+3HEYV52qpxN98pUxC+1l2hgVtn8xCS/JGyjK+6dv+lZw3ixJoX2RjVtdJ4/ -cn318EhhQIDAQABo1AwTjAdBgNVHQ4EFgQUzQBVKTEknyLndWd2HTsBdTKvyikwHwYDVR0jBBgw -FoAUzQBVKTEknyLndWd2HTsBdTKvyikwDAYDVR0TBAUwAwEB/w== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBADrHSmFSJw/Gv7hs5PNzpaJwAri/sitarIZfzN/SjR+n8L8yeTEoiDb1+BkxlFvXvPHTaOK -oO3WlslNNOxh1W5/JkYYGOUkCcyIjnln6qS560imcr3VNjomT/M8M2Iss+rJiKau1TRuaP7H8i6 -+Gqf3saGdr8/LnvFAdNQvkalQt ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-using-id-ea-rsa.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-using-id-ea-rsa.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-using-id-ea-rsa.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-using-id-ea-rsa.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,54 +0,0 @@ -This is the same test as rsa-pkcs1-sha256.pem except the SPKI has been tampered -with. Rather than using an rsaEncryption OID for the key's algorithm, it uses -id-ea-rsa (2.5.8.1.1). - - - ------BEGIN PUBLIC KEY----- -MIGaMAgGBFUIAQEFAAOBjQAwgYkCgYEAqkfgdjI9YqzadSZ2Ns0CEEUD8+8m7OplIx094X+QD8m -ooNrunwT04asbLIINGL4qiI/+9IVSvyV3Kj9c4EeQIbANGoJ8AI3wf6MOBB/txxGFedqqcTffKV -MQvtZdoYFbZ/MQkvyRsoyvunb/pWcN4sSaF9kY1bXSeP3J99fBIYUCAwEAAQ== ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=3 l= 154 cons: SEQUENCE - 3:d=1 hl=2 l= 8 cons: SEQUENCE - 5:d=2 hl=2 l= 4 prim: OBJECT :rsa - 11:d=2 hl=2 l= 0 prim: NULL - 13:d=1 hl=3 l= 141 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MA0GCSqGSIb3DQEBCwUA ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 13 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :sha256WithRSAEncryption - 13:d=1 hl=2 l= 0 prim: NULL - - - ------BEGIN DATA----- -MIIB46ADAgECAgkA3l4tFOVii0UwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQVUxEzARBgN -VBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEPMA0GA1 -UEAwwGTXkga2V5MB4XDTE1MDcwMjE3MDYzOVoXDTE2MDcwMTE3MDYzOVowVjELMAkGA1UEBhMCQ -VUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0 -ZDEPMA0GA1UEAwwGTXkga2V5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqR+B2Mj1irNp -1JnY2zQIQRQPz7ybs6mUjHT3hf5APyaig2u6fBPThqxssgg0YviqIj/70hVK/JXcqP1zgR5AhsA -0agnwAjfB/ow4EH+3HEYV52qpxN98pUxC+1l2hgVtn8xCS/JGyjK+6dv+lZw3ixJoX2RjVtdJ4/ -cn318EhhQIDAQABo1AwTjAdBgNVHQ4EFgQUzQBVKTEknyLndWd2HTsBdTKvyikwHwYDVR0jBBgw -FoAUzQBVKTEknyLndWd2HTsBdTKvyikwDAYDVR0TBAUwAwEB/w== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBADrHSmFSJw/Gv7hs5PNzpaJwAri/sitarIZfzN/SjR+n8L8yeTEoiDb1+BkxlFvXvPHTaOK -oO3WlslNNOxh1W5/JkYYGOUkCcyIjnln6qS560imcr3VNjomT/M8M2Iss+rJiKau1TRuaP7H8i6 -+Gqf3saGdr8/LnvFAdNQvkalQt ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,53 +0,0 @@ -The key, message, and signature come from Example 1.1 of: -ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1-vec.zip (pss-vect.txt) - -(The algorithm DER was synthesized to match, and the signature enclosed in a BIT STRING). - -It uses an RSA key with modulus length of 1024 bits, PSS padding, -SHA-1 as the digest, MGF1 with SHA-1, and salt length of 20. - - - ------BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClbkoOcBAXWJpRh9x+qEHRVvLsDjatUqRN/rH -mH3rZkdjFEFb/7bFitMDyg6EqiKOU3/Umq3KRy7MHzqv84LHf1c2VCAltWyuLbfXWce9jd8CSHL -I8Jwpw4lmOb/idGfEFrMLT8Ms18pKA4Thrb2TE7yLh4fINDOjP+yJJvZohNwIDAQAB ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=3 l= 159 cons: SEQUENCE - 3:d=1 hl=2 l= 13 cons: SEQUENCE - 5:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 16:d=2 hl=2 l= 0 prim: NULL - 18:d=1 hl=3 l= 141 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MA0GCSqGSIb3DQEBCjAA ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 13 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :rsassaPss - 13:d=1 hl=2 l= 0 cons: SEQUENCE - - - ------BEGIN DATA----- -zch9oiPXht87ReC7vHITJtHuKvgGzDFUdcxvDZxm4bYjcdRc4jkuGskoRMMQEC8Vag2NUsH0xAu -jqmUJV4bLdpdXplY7qVj+0LzJhOi1F6PV9RWyO4pB50qoZ2k/kN+wYabobfqu5kRywA5fIJRXKc -vr538Gznjgj0CY+6QfnWGTwDF+i2DUtghKy0LSnjgIo7w3LYXjMRcPy/fMctC3HClmSLOk0Q9BY -pXQgHqmJcqydE/Z6o/SI8QlNwKYKL0WvgJUbxMP0uM7k20mduCK7RtzMYt1CgFn0A== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBAJB0MI+1mOlwGyKUOI5S+XH6rCtgpRRa8YXfUoe17SiH5Xzn/UTchjTkB8jg5DYLwibz7CJ -/nZ5UY46NMfUFEhXfbrucL5V5qndZijj5FLW5wb2DxOL584Kg0Ko1Qv/uZZhKYBvGnrKN6yfcoS -yCwtTD9mzVAPH/K5lNik4wy7M8 ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20-using-pss-key-no-params.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20-using-pss-key-no-params.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20-using-pss-key-no-params.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20-using-pss-key-no-params.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -This is the same test as rsa-pss-sha1-salt20.pem, except the public key's -algorithm identifier has been changed from rsaEncryption (1.2.840.113549.1.1.1) -to rsaPss (1.2.840.113549.1.1.10). - - - ------BEGIN PUBLIC KEY----- -MIGdMAsGCSqGSIb3DQEBCgOBjQAwgYkCgYEApW5KDnAQF1iaUYfcfqhB0Vby7A42rVKkTf6x5h9 -62ZHYxRBW/+2xYrTA8oOhKoijlN/1JqtykcuzB86r/OCx39XNlQgJbVsri2311nHvY3fAkhyyPC -cKcOJZjm/4nRnxBazC0/DLNfKSgOE4a29kxO8i4eHyDQzoz/siSb2aITcCAwEAAQ== ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=3 l= 157 cons: SEQUENCE - 3:d=1 hl=2 l= 11 cons: SEQUENCE - 5:d=2 hl=2 l= 9 prim: OBJECT :rsassaPss - 16:d=1 hl=3 l= 141 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MA0GCSqGSIb3DQEBCjAA ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 13 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :rsassaPss - 13:d=1 hl=2 l= 0 cons: SEQUENCE - - - ------BEGIN DATA----- -zch9oiPXht87ReC7vHITJtHuKvgGzDFUdcxvDZxm4bYjcdRc4jkuGskoRMMQEC8Vag2NUsH0xAu -jqmUJV4bLdpdXplY7qVj+0LzJhOi1F6PV9RWyO4pB50qoZ2k/kN+wYabobfqu5kRywA5fIJRXKc -vr538Gznjgj0CY+6QfnWGTwDF+i2DUtghKy0LSnjgIo7w3LYXjMRcPy/fMctC3HClmSLOk0Q9BY -pXQgHqmJcqydE/Z6o/SI8QlNwKYKL0WvgJUbxMP0uM7k20mduCK7RtzMYt1CgFn0A== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBAJB0MI+1mOlwGyKUOI5S+XH6rCtgpRRa8YXfUoe17SiH5Xzn/UTchjTkB8jg5DYLwibz7CJ -/nZ5UY46NMfUFEhXfbrucL5V5qndZijj5FLW5wb2DxOL584Kg0Ko1Qv/uZZhKYBvGnrKN6yfcoS -yCwtTD9mzVAPH/K5lNik4wy7M8 ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20-using-pss-key-with-null-params.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20-using-pss-key-with-null-params.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20-using-pss-key-with-null-params.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20-using-pss-key-with-null-params.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -This is the same test as rsa-pss-sha1-salt20.pem, except the public key's -algorithm identifier has been changed from rsaEncryption (1.2.840.113549.1.1.1) -to rsaPss (1.2.840.113549.1.1.10). Note that the PSS parameters have been -encoded as NULL which is incorrect. - - - ------BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBCgUAA4GNADCBiQKBgQClbkoOcBAXWJpRh9x+qEHRVvLsDjatUqRN/rH -mH3rZkdjFEFb/7bFitMDyg6EqiKOU3/Umq3KRy7MHzqv84LHf1c2VCAltWyuLbfXWce9jd8CSHL -I8Jwpw4lmOb/idGfEFrMLT8Ms18pKA4Thrb2TE7yLh4fINDOjP+yJJvZohNwIDAQAB ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=3 l= 159 cons: SEQUENCE - 3:d=1 hl=2 l= 13 cons: SEQUENCE - 5:d=2 hl=2 l= 9 prim: OBJECT :rsassaPss - 16:d=2 hl=2 l= 0 prim: NULL - 18:d=1 hl=3 l= 141 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MA0GCSqGSIb3DQEBCjAA ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 13 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :rsassaPss - 13:d=1 hl=2 l= 0 cons: SEQUENCE - - - ------BEGIN DATA----- -zch9oiPXht87ReC7vHITJtHuKvgGzDFUdcxvDZxm4bYjcdRc4jkuGskoRMMQEC8Vag2NUsH0xAu -jqmUJV4bLdpdXplY7qVj+0LzJhOi1F6PV9RWyO4pB50qoZ2k/kN+wYabobfqu5kRywA5fIJRXKc -vr538Gznjgj0CY+6QfnWGTwDF+i2DUtghKy0LSnjgIo7w3LYXjMRcPy/fMctC3HClmSLOk0Q9BY -pXQgHqmJcqydE/Z6o/SI8QlNwKYKL0WvgJUbxMP0uM7k20mduCK7RtzMYt1CgFn0A== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBAJB0MI+1mOlwGyKUOI5S+XH6rCtgpRRa8YXfUoe17SiH5Xzn/UTchjTkB8jg5DYLwibz7CJ -/nZ5UY46NMfUFEhXfbrucL5V5qndZijj5FLW5wb2DxOL584Kg0Ko1Qv/uZZhKYBvGnrKN6yfcoS -yCwtTD9mzVAPH/K5lNik4wy7M8 ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha1-wrong-salt.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha1-wrong-salt.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha1-wrong-salt.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha1-wrong-salt.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ -Same as rsa-pss-sha1-wrong-salt.pem except the ALGORITHM has been changed to -have a salt of 23. When verified using this algorithm it will fail, however if -the default salt of 20 were used it would succeed. - - - ------BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClbkoOcBAXWJpRh9x+qEHRVvLsDjatUqRN/rH -mH3rZkdjFEFb/7bFitMDyg6EqiKOU3/Umq3KRy7MHzqv84LHf1c2VCAltWyuLbfXWce9jd8CSHL -I8Jwpw4lmOb/idGfEFrMLT8Ms18pKA4Thrb2TE7yLh4fINDOjP+yJJvZohNwIDAQAB ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=3 l= 159 cons: SEQUENCE - 3:d=1 hl=2 l= 13 cons: SEQUENCE - 5:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 16:d=2 hl=2 l= 0 prim: NULL - 18:d=1 hl=3 l= 141 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MBIGCSqGSIb3DQEBCjAFogMCARc= ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 18 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :rsassaPss - 13:d=1 hl=2 l= 5 cons: SEQUENCE - 15:d=2 hl=2 l= 3 cons: cont [ 2 ] - 17:d=3 hl=2 l= 1 prim: INTEGER :17 - - - ------BEGIN DATA----- -zch9oiPXht87ReC7vHITJtHuKvgGzDFUdcxvDZxm4bYjcdRc4jkuGskoRMMQEC8Vag2NUsH0xAu -jqmUJV4bLdpdXplY7qVj+0LzJhOi1F6PV9RWyO4pB50qoZ2k/kN+wYabobfqu5kRywA5fIJRXKc -vr538Gznjgj0CY+6QfnWGTwDF+i2DUtghKy0LSnjgIo7w3LYXjMRcPy/fMctC3HClmSLOk0Q9BY -pXQgHqmJcqydE/Z6o/SI8QlNwKYKL0WvgJUbxMP0uM7k20mduCK7RtzMYt1CgFn0A== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBAJB0MI+1mOlwGyKUOI5S+XH6rCtgpRRa8YXfUoe17SiH5Xzn/UTchjTkB8jg5DYLwibz7CJ -/nZ5UY46NMfUFEhXfbrucL5V5qndZijj5FLW5wb2DxOL584Kg0Ko1Qv/uZZhKYBvGnrKN6yfcoS -yCwtTD9mzVAPH/K5lNik4wy7M8 ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha256-mgf1-sha512-salt33.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha256-mgf1-sha512-salt33.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha256-mgf1-sha512-salt33.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha256-mgf1-sha512-salt33.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -This test exercises using a different hash function parameter to the mask gen -function (SHA-256 for the hash, but SHA-512 for the MGF1 hash). - -This test data was constructed manually by calling signing functions from -OpenSSL code. - -It constructs an RSASSA-PSS signature using: - * Key with modulus 1024 bit - * Salt length 33 bytes - * Digest function of SHA-256 - * Mask gen function of MGF1 with SHA-512 - - - ------BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClbkoOcBAXWJpRh9x+qEHRVvLsDjatUqRN/rH -mH3rZkdjFEFb/7bFitMDyg6EqiKOU3/Umq3KRy7MHzqv84LHf1c2VCAltWyuLbfXWce9jd8CSHL -I8Jwpw4lmOb/idGfEFrMLT8Ms18pKA4Thrb2TE7yLh4fINDOjP+yJJvZohNwIDAQAB ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=3 l= 159 cons: SEQUENCE - 3:d=1 hl=2 l= 13 cons: SEQUENCE - 5:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 16:d=2 hl=2 l= 0 prim: NULL - 18:d=1 hl=3 l= 141 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWU -DBAIDBQCiAwIBIQ== ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 65 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :rsassaPss - 13:d=1 hl=2 l= 52 cons: SEQUENCE - 15:d=2 hl=2 l= 15 cons: cont [ 0 ] - 17:d=3 hl=2 l= 13 cons: SEQUENCE - 19:d=4 hl=2 l= 9 prim: OBJECT :sha256 - 30:d=4 hl=2 l= 0 prim: NULL - 32:d=2 hl=2 l= 28 cons: cont [ 1 ] - 34:d=3 hl=2 l= 26 cons: SEQUENCE - 36:d=4 hl=2 l= 9 prim: OBJECT :mgf1 - 47:d=4 hl=2 l= 13 cons: SEQUENCE - 49:d=5 hl=2 l= 9 prim: OBJECT :sha512 - 60:d=5 hl=2 l= 0 prim: NULL - 62:d=2 hl=2 l= 3 cons: cont [ 2 ] - 64:d=3 hl=2 l= 1 prim: INTEGER :21 - - - ------BEGIN DATA----- -VGVzdCBtZXNzYWdlIHRvIGJlIHNpZ25lZC4uLg== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBAFob0HSC5uuTqKu4J/lj+5bDa+Hhij4H3klWnvt6Yc+wwPza7/UC4lgGGyvZqD32RUEdt7v -Z14qqYNk53b5aj4C2gBMvLzV7Pay4mmQM4DSWa5JHMxTILqE3DDqihrbMcBw2q3XAsLcjeqLWQ9 -yp8tfnV21h98qsCLtErrxZWHRr ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,65 +0,0 @@ -The key, message, and signature come from: -http://csrc.nist.gov/groups/STM/cavp/documents/dss/186-2rsatestvectors.zip (SigVerPSS_186-3.rsp) - -(The algorithm DER was synthesized to match, and the signature wrapped in a BIT STRING). - -It uses an RSA key with modulus length of 1024 bits, PSS padding, -SHA-256 as the digest, MGF1 with SHA-256, and salt length of 10. - - - ------BEGIN PUBLIC KEY----- -MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQC+SZtefwbIP6ApPjFGXI62tYr5ILrlKntbm/6 -3qnLbEmQRLrP9Qx0xoqflCUFWaSlJSg6JHtVhORi0tRsNH7l3g7Jqz30POEz7NfTSgk9d04BiOi -a/GAtjlhxhnc2yDK5AbyL24nbICjcllJDP63LBpxqE8YRtMwh3uj4xAeycewIBEQ== ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=3 l= 157 cons: SEQUENCE - 3:d=1 hl=2 l= 13 cons: SEQUENCE - 5:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption - 16:d=2 hl=2 l= 0 prim: NULL - 18:d=1 hl=3 l= 139 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWU -DBAIBBQCiAwIBCg== ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 65 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :rsassaPss - 13:d=1 hl=2 l= 52 cons: SEQUENCE - 15:d=2 hl=2 l= 15 cons: cont [ 0 ] - 17:d=3 hl=2 l= 13 cons: SEQUENCE - 19:d=4 hl=2 l= 9 prim: OBJECT :sha256 - 30:d=4 hl=2 l= 0 prim: NULL - 32:d=2 hl=2 l= 28 cons: cont [ 1 ] - 34:d=3 hl=2 l= 26 cons: SEQUENCE - 36:d=4 hl=2 l= 9 prim: OBJECT :mgf1 - 47:d=4 hl=2 l= 13 cons: SEQUENCE - 49:d=5 hl=2 l= 9 prim: OBJECT :sha256 - 60:d=5 hl=2 l= 0 prim: NULL - 62:d=2 hl=2 l= 3 cons: cont [ 2 ] - 64:d=3 hl=2 l= 1 prim: INTEGER :0A - - - ------BEGIN DATA----- -x/UnD8pyX5vRn1GajXzKPMXAeQJAKfO65RD5sCFA/iOJCOT2wY8HqJxofIaEZpsfHbK6+SUaPIK -frMtJMIThbsnijViGgHSl1iIWZ91uUo0W/iyfPbTPr2xNzoyEOa84zqqqnOLsrnvI9KWlXjv5bf -nNV1xPnLMnlRuM3+QIcWg= ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBABHhafL9QLB2Qbl2iiqxmWX7bCfxD88DI/zG0S608cBrMw3aoepQRAevop3p6+A3T+nR59D -/vV/Bzzo0RuQUVBXSqyT3ibNGTFxDola7wdaSz38EgB2sW7QBpKA6t9VyioYMGeGk3Hl8pULIID -zsLmAesMUfVn8u2gIrC5693u76 ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10-using-pss-key-with-params.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10-using-pss-key-with-params.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10-using-pss-key-with-params.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10-using-pss-key-with-params.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ -This is the same test as rsa-pss-sha256-salt10.pem except instead of specifying -the SPKI using rsaEncryption it is specified using rsaPss along with -parameters that match those of the signature algorithm. - - - ------BEGIN PUBLIC KEY----- -MIHRMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZ -IAWUDBAIBBQCiAwIBCgOBiwAwgYcCgYEAvkmbXn8GyD+gKT4xRlyOtrWK+SC65Sp7W5v+t6py2x -JkES6z/UMdMaKn5QlBVmkpSUoOiR7VYTkYtLUbDR+5d4Oyas99DzhM+zX00oJPXdOAYjomvxgLY -5YcYZ3NsgyuQG8i9uJ2yAo3JZSQz+tywacahPGEbTMId7o+MQHsnHsCARE= ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=3 l= 209 cons: SEQUENCE - 3:d=1 hl=2 l= 65 cons: SEQUENCE - 5:d=2 hl=2 l= 9 prim: OBJECT :rsassaPss - 16:d=2 hl=2 l= 52 cons: SEQUENCE - 18:d=3 hl=2 l= 15 cons: cont [ 0 ] - 20:d=4 hl=2 l= 13 cons: SEQUENCE - 22:d=5 hl=2 l= 9 prim: OBJECT :sha256 - 33:d=5 hl=2 l= 0 prim: NULL - 35:d=3 hl=2 l= 28 cons: cont [ 1 ] - 37:d=4 hl=2 l= 26 cons: SEQUENCE - 39:d=5 hl=2 l= 9 prim: OBJECT :mgf1 - 50:d=5 hl=2 l= 13 cons: SEQUENCE - 52:d=6 hl=2 l= 9 prim: OBJECT :sha256 - 63:d=6 hl=2 l= 0 prim: NULL - 65:d=3 hl=2 l= 3 cons: cont [ 2 ] - 67:d=4 hl=2 l= 1 prim: INTEGER :0A - 70:d=1 hl=3 l= 139 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWU -DBAIBBQCiAwIBCg== ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 65 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :rsassaPss - 13:d=1 hl=2 l= 52 cons: SEQUENCE - 15:d=2 hl=2 l= 15 cons: cont [ 0 ] - 17:d=3 hl=2 l= 13 cons: SEQUENCE - 19:d=4 hl=2 l= 9 prim: OBJECT :sha256 - 30:d=4 hl=2 l= 0 prim: NULL - 32:d=2 hl=2 l= 28 cons: cont [ 1 ] - 34:d=3 hl=2 l= 26 cons: SEQUENCE - 36:d=4 hl=2 l= 9 prim: OBJECT :mgf1 - 47:d=4 hl=2 l= 13 cons: SEQUENCE - 49:d=5 hl=2 l= 9 prim: OBJECT :sha256 - 60:d=5 hl=2 l= 0 prim: NULL - 62:d=2 hl=2 l= 3 cons: cont [ 2 ] - 64:d=3 hl=2 l= 1 prim: INTEGER :0A - - - ------BEGIN DATA----- -x/UnD8pyX5vRn1GajXzKPMXAeQJAKfO65RD5sCFA/iOJCOT2wY8HqJxofIaEZpsfHbK6+SUaPIK -frMtJMIThbsnijViGgHSl1iIWZ91uUo0W/iyfPbTPr2xNzoyEOa84zqqqnOLsrnvI9KWlXjv5bf -nNV1xPnLMnlRuM3+QIcWg= ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBABHhafL9QLB2Qbl2iiqxmWX7bCfxD88DI/zG0S608cBrMw3aoepQRAevop3p6+A3T+nR59D -/vV/Bzzo0RuQUVBXSqyT3ibNGTFxDola7wdaSz38EgB2sW7QBpKA6t9VyioYMGeGk3Hl8pULIID -zsLmAesMUfVn8u2gIrC5693u76 ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10-using-pss-key-with-wrong-params.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10-using-pss-key-with-wrong-params.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10-using-pss-key-with-wrong-params.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10-using-pss-key-with-wrong-params.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ -This is the same test as rsa-pss-sha256-salt10-using-pss-key-with-params.pem -except the hash in the PSS key's parameters has been changed from SHA-256 to -SHA-384. - - - ------BEGIN PUBLIC KEY----- -MIHRMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAICBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZ -IAWUDBAIBBQCiAwIBCgOBiwAwgYcCgYEAvkmbXn8GyD+gKT4xRlyOtrWK+SC65Sp7W5v+t6py2x -JkES6z/UMdMaKn5QlBVmkpSUoOiR7VYTkYtLUbDR+5d4Oyas99DzhM+zX00oJPXdOAYjomvxgLY -5YcYZ3NsgyuQG8i9uJ2yAo3JZSQz+tywacahPGEbTMId7o+MQHsnHsCARE= ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=3 l= 209 cons: SEQUENCE - 3:d=1 hl=2 l= 65 cons: SEQUENCE - 5:d=2 hl=2 l= 9 prim: OBJECT :rsassaPss - 16:d=2 hl=2 l= 52 cons: SEQUENCE - 18:d=3 hl=2 l= 15 cons: cont [ 0 ] - 20:d=4 hl=2 l= 13 cons: SEQUENCE - 22:d=5 hl=2 l= 9 prim: OBJECT :sha384 - 33:d=5 hl=2 l= 0 prim: NULL - 35:d=3 hl=2 l= 28 cons: cont [ 1 ] - 37:d=4 hl=2 l= 26 cons: SEQUENCE - 39:d=5 hl=2 l= 9 prim: OBJECT :mgf1 - 50:d=5 hl=2 l= 13 cons: SEQUENCE - 52:d=6 hl=2 l= 9 prim: OBJECT :sha256 - 63:d=6 hl=2 l= 0 prim: NULL - 65:d=3 hl=2 l= 3 cons: cont [ 2 ] - 67:d=4 hl=2 l= 1 prim: INTEGER :0A - 70:d=1 hl=3 l= 139 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWU -DBAIBBQCiAwIBCg== ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 65 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :rsassaPss - 13:d=1 hl=2 l= 52 cons: SEQUENCE - 15:d=2 hl=2 l= 15 cons: cont [ 0 ] - 17:d=3 hl=2 l= 13 cons: SEQUENCE - 19:d=4 hl=2 l= 9 prim: OBJECT :sha256 - 30:d=4 hl=2 l= 0 prim: NULL - 32:d=2 hl=2 l= 28 cons: cont [ 1 ] - 34:d=3 hl=2 l= 26 cons: SEQUENCE - 36:d=4 hl=2 l= 9 prim: OBJECT :mgf1 - 47:d=4 hl=2 l= 13 cons: SEQUENCE - 49:d=5 hl=2 l= 9 prim: OBJECT :sha256 - 60:d=5 hl=2 l= 0 prim: NULL - 62:d=2 hl=2 l= 3 cons: cont [ 2 ] - 64:d=3 hl=2 l= 1 prim: INTEGER :0A - - - ------BEGIN DATA----- -x/UnD8pyX5vRn1GajXzKPMXAeQJAKfO65RD5sCFA/iOJCOT2wY8HqJxofIaEZpsfHbK6+SUaPIK -frMtJMIThbsnijViGgHSl1iIWZ91uUo0W/iyfPbTPr2xNzoyEOa84zqqqnOLsrnvI9KWlXjv5bf -nNV1xPnLMnlRuM3+QIcWg= ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBABHhafL9QLB2Qbl2iiqxmWX7bCfxD88DI/zG0S608cBrMw3aoepQRAevop3p6+A3T+nR59D -/vV/Bzzo0RuQUVBXSqyT3ibNGTFxDola7wdaSz38EgB2sW7QBpKA6t9VyioYMGeGk3Hl8pULIID -zsLmAesMUfVn8u2gIrC5693u76 ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-using-ec-key.pem temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-using-ec-key.pem --- temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-using-ec-key.pem 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/data/verify_signed_data/rsa-using-ec-key.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -This test specifies an RSA PKCS#1 v1.5 signature algorithm (and a valid RSA -signature), HOWEVER it provides an EC key. Verification should fail. - - - ------BEGIN PUBLIC KEY----- -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnLDPaTA9r8dh1ORoe07PA55tNKuWSvgIENjVWKS -o1vctUSM6F4iSCobuCKGWLHnvoxf7eHnil9rSFG25lfoceA== ------END PUBLIC KEY----- - -$ openssl asn1parse -i < [PUBLIC KEY] - 0:d=0 hl=2 l= 89 cons: SEQUENCE - 2:d=1 hl=2 l= 19 cons: SEQUENCE - 4:d=2 hl=2 l= 7 prim: OBJECT :id-ecPublicKey - 13:d=2 hl=2 l= 8 prim: OBJECT :prime256v1 - 23:d=1 hl=2 l= 66 prim: BIT STRING - - - ------BEGIN ALGORITHM----- -MA0GCSqGSIb3DQEBCwUA ------END ALGORITHM----- - -$ openssl asn1parse -i < [ALGORITHM] - 0:d=0 hl=2 l= 13 cons: SEQUENCE - 2:d=1 hl=2 l= 9 prim: OBJECT :sha256WithRSAEncryption - 13:d=1 hl=2 l= 0 prim: NULL - - - ------BEGIN DATA----- -MIIB46ADAgECAgkA3l4tFOVii0UwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQVUxEzARBgN -VBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEPMA0GA1 -UEAwwGTXkga2V5MB4XDTE1MDcwMjE3MDYzOVoXDTE2MDcwMTE3MDYzOVowVjELMAkGA1UEBhMCQ -VUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0 -ZDEPMA0GA1UEAwwGTXkga2V5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqR+B2Mj1irNp -1JnY2zQIQRQPz7ybs6mUjHT3hf5APyaig2u6fBPThqxssgg0YviqIj/70hVK/JXcqP1zgR5AhsA -0agnwAjfB/ow4EH+3HEYV52qpxN98pUxC+1l2hgVtn8xCS/JGyjK+6dv+lZw3ixJoX2RjVtdJ4/ -cn318EhhQIDAQABo1AwTjAdBgNVHQ4EFgQUzQBVKTEknyLndWd2HTsBdTKvyikwHwYDVR0jBBgw -FoAUzQBVKTEknyLndWd2HTsBdTKvyikwDAYDVR0TBAUwAwEB/w== ------END DATA----- - - - ------BEGIN SIGNATURE----- -A4GBADrHSmFSJw/Gv7hs5PNzpaJwAri/sitarIZfzN/SjR+n8L8yeTEoiDb1+BkxlFvXvPHTaOK -oO3WlslNNOxh1W5/JkYYGOUkCcyIjnln6qS560imcr3VNjomT/M8M2Iss+rJiKau1TRuaP7H8i6 -+Gqf3saGdr8/LnvFAdNQvkalQt ------END SIGNATURE----- - -$ openssl asn1parse -i < [SIGNATURE] - 0:d=0 hl=3 l= 129 prim: BIT STRING diff -Nru temporalio-1.3.0/vendor/webpki/third-party/chromium/LICENSE temporalio-1.3.0/vendor/webpki/third-party/chromium/LICENSE --- temporalio-1.3.0/vendor/webpki/third-party/chromium/LICENSE 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki/third-party/chromium/LICENSE 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff -Nru temporalio-1.3.0/vendor/webpki-roots/build.py temporalio-1.3.0/vendor/webpki-roots/build.py --- temporalio-1.3.0/vendor/webpki-roots/build.py 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki-roots/build.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,193 +0,0 @@ -# -*- coding: utf-8 -*- -import base64 -import binascii -import codecs -import subprocess -import sys -import urllib.request -import urllib.parse -import urllib.error - -import extra_constraints - -HEADER = """//! -//! This library is automatically generated from the Mozilla certificate -//! store via mkcert.org. Don't edit it. -//! -//! The generation is done deterministically so you can verify it -//! yourself by inspecting and re-running the generation process. -//! - -#![forbid(unsafe_code, - unstable_features)] -#![deny(trivial_casts, - trivial_numeric_casts, - unused_import_braces, - unused_extern_crates, - unused_qualifications)] -""" - -CERT = """ - %(comment)s - %(code)s,""" - -excluded_cas = [ - # See https://bugzilla.mozilla.org/show_bug.cgi?id=1266574. - "Buypass Class 2 CA 1", - - # https://blog.mozilla.org/security/2015/04/02/distrusting-new-cnnic-certificates/ - # https://security.googleblog.com/2015/03/maintaining-digital-certificate-security.html - "China Internet Network Information Center", - "CNNIC", - - # See https://bugzilla.mozilla.org/show_bug.cgi?id=1283326. - "RSA Security 2048 v3", - - # https://bugzilla.mozilla.org/show_bug.cgi?id=1272158 - "Root CA Generalitat Valenciana", - - # See https://wiki.mozilla.org/CA:WoSign_Issues. - "StartCom", - "WoSign", - - # See https://cabforum.org/pipermail/public/2016-September/008475.html. - # Both the ASCII and non-ASCII names are required. - "TÃœRKTRUST", - "TURKTRUST", -] - - -def fetch_bundle(): - proc = subprocess.Popen(['curl', - 'https://mkcert.org/generate/all/except/' + - "+".join([urllib.parse.quote(x) for x in excluded_cas])], - stdout = subprocess.PIPE) - stdout, _ = proc.communicate() - return stdout.decode('utf-8') - - -def split_bundle(bundle): - cert = '' - for line in bundle.splitlines(): - if line.strip() != '': - cert += line + '\n' - if '-----END CERTIFICATE-----' in line: - yield cert - cert = '' - - -def calc_spki_hash(cert): - """ - Use openssl to sha256 hash the public key in the certificate. - """ - proc = subprocess.Popen( - ['openssl', 'x509', '-noout', '-sha256', '-fingerprint'], - stdin = subprocess.PIPE, - stdout = subprocess.PIPE) - stdout, _ = proc.communicate(cert.encode('utf-8')) - stdout = stdout.decode('utf-8') - assert proc.returncode == 0 - assert stdout.startswith('SHA256 Fingerprint=') - hash = stdout.replace('SHA256 Fingerprint=', '').replace(':', '') - hash = hash.strip() - assert len(hash) == 64 - return hash.lower() - - -def extract_header_spki_hash(cert): - """ - Extract the sha256 hash of the public key in the header, for - cross-checking. - """ - line = [ll for ll in cert.splitlines() if ll.startswith('# SHA256 Fingerprint: ')][0] - return line.replace('# SHA256 Fingerprint: ', '').replace(':', '').lower() - - -def unwrap_pem(cert): - start = '-----BEGIN CERTIFICATE-----\n' - end = '-----END CERTIFICATE-----\n' - body = cert[cert.index(start)+len(start):cert.rindex(end)] - return base64.b64decode(body) - - -def extract(msg, name): - lines = msg.splitlines() - value = [ll for ll in lines if ll.startswith(name + ': ')][0] - return value[len(name) + 2:].strip() - - -def convert_cert(cert_der): - proc = subprocess.Popen( - ['target/debug/process_cert'], - stdin = subprocess.PIPE, - stdout = subprocess.PIPE) - stdout, _ = proc.communicate(cert_der) - stdout = stdout.decode('utf-8') - assert proc.returncode == 0 - return dict( - subject = extract(stdout, 'Subject'), - spki = extract(stdout, 'SPKI'), - name_constraints = extract(stdout, 'Name-Constraints')) - - -def commentify(cert): - lines = cert.splitlines() - lines = [ll[2:] if ll.startswith('# ') else ll for ll in lines] - return '/*\n * ' + ('\n * '.join(lines)) + '\n */' - - -def convert_bytes(hex): - bb = binascii.a2b_hex(hex) - encoded, _ = codecs.escape_encode(bb) - return encoded.decode('utf-8').replace('"', '\\"') - - -def print_root(cert, data): - subject = convert_bytes(data['subject']) - spki = convert_bytes(data['spki']) - nc = data['name_constraints'] - nc = ('Some(b"{}")'.format(convert_bytes(nc))) if nc != 'None' else nc - - print(""" {} - webpki::TrustAnchor {{ - subject: b"{}", - spki: b"{}", - name_constraints: {} - }}, -""".format(commentify(cert), subject, spki, nc)) - - -if __name__ == '__main__': - if sys.platform == "win32": - import os, msvcrt - msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) - - bundle = fetch_bundle() - open('fetched.pem', 'w').write(bundle) - - certs = {} - - for cert in split_bundle(bundle): - our_hash = calc_spki_hash(cert) - their_hash = extract_header_spki_hash(cert) - assert our_hash == their_hash - - cert_der = unwrap_pem(cert) - data = convert_cert(cert_der) - - imposed_nc = extra_constraints.get_imposed_name_constraints(data['subject']) - if imposed_nc: - data['name_constraints'] = binascii.b2a_hex(imposed_nc) - - assert our_hash not in certs, 'duplicate cert' - certs[our_hash] = (cert, data) - - print(HEADER) - print("""pub static TLS_SERVER_ROOTS: webpki::TlsServerTrustAnchors = webpki::TlsServerTrustAnchors(&[""") - - # emit in sorted hash order for deterministic builds - for hash in sorted(certs): - cert, data = certs[hash] - print_root(cert, data) - - print(']);') diff -Nru temporalio-1.3.0/vendor/webpki-roots/.cargo-checksum.json temporalio-1.3.0/vendor/webpki-roots/.cargo-checksum.json --- temporalio-1.3.0/vendor/webpki-roots/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki-roots/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.lock":"623892228cdd71d4da1b5a74ba8a124abe548708b501ee02c8b7c42be8a38e12","Cargo.toml":"b8475e7a3127ce0a8135908f84b565553a0e0f8d8bc99fb3b6acae7e146fb359","LICENSE":"6a70a4bf6b010016d59a64b8ae4ad8dc7f5ef16f1fb453cc2ecd771c5a341131","README.md":"d30be16e79a59f0a94829c4f30bf59145b90a325fc552df91d84825d300d709c","build.py":"9831853e13a36d50531365ba61dc028e840afe715982d4c3aa19e3fa4d2a2af9","extra_constraints.py":"548e858b160ecaa28429878fdf12fea8f429dd19e02cc412caae21a42dc74511","src/bin/process_cert.rs":"f25719257ef6322fc236d05f424eace041194a6f4cdc10b733b09960bb76d68f","src/lib.rs":"c84e976961100fe3cf72a9963ce5c719db6a7c4e89089b1f4fb71adc4bc2e974"},"package":"b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87"} \ No newline at end of file +{"files":{"Cargo.toml":"4f9bb4cedfa3f160bc595a92a739ca884e12dce85b9dae2361a65e793ee14fc4","LICENSE":"6a70a4bf6b010016d59a64b8ae4ad8dc7f5ef16f1fb453cc2ecd771c5a341131","README.md":"b2bd4bf53fa461355c140c5ff9e9ee641606930b3155c182c12f934b376de679","src/lib.rs":"f01d9dd15f18d05aedecf80b55015246a9a21fc35a2b46e7de34dc850555b666","tests/codegen.rs":"d5b73d20b651649b6c7175c303b915bec883b9c0c78deae2a2c98dfd286c89f8","tests/data/tubitak/inter.der":"bf32da954571659aaf715c13ee703e3643dfcbaeee2d82110ca68eb57cb67ce0","tests/data/tubitak/root.der":"46edc3689046d53a453fb3104ab80dcaec658b2660ea1629dd7e867990648716","tests/data/tubitak/subj.der":"8f0d491077ddc360e7416620af2cf4a8a4010e5b6f5a6d0f557f4f2499a38029","tests/verify.rs":"3fba7abf126c33b622ee6e4208b9395995a42e528aad6475f717b956662ec298"},"package":"14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/webpki-roots/Cargo.lock temporalio-1.3.0/vendor/webpki-roots/Cargo.lock --- temporalio-1.3.0/vendor/webpki-roots/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki-roots/Cargo.lock 1970-01-01 00:00:00.000000000 +0000 @@ -1,222 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "bumpalo" -version = "3.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" - -[[package]] -name = "cc" -version = "1.0.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "js-sys" -version = "0.3.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.126" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" - -[[package]] -name = "log" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "once_cell" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" - -[[package]] -name = "proc-macro2" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "ring" -version = "0.16.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin", - "untrusted", - "web-sys", - "winapi", -] - -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - -[[package]] -name = "syn" -version = "1.0.98" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "unicode-ident" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c" - -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - -[[package]] -name = "wasm-bindgen" -version = "0.2.81" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.81" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a" -dependencies = [ - "bumpalo", - "lazy_static", - "log", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.81" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.81" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.81" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be" - -[[package]] -name = "web-sys" -version = "0.3.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fed94beee57daf8dd7d51f2b15dc2bcde92d7a72304cdf662a4371008b71b90" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "webpki-roots" -version = "0.22.6" -dependencies = [ - "webpki", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff -Nru temporalio-1.3.0/vendor/webpki-roots/Cargo.toml temporalio-1.3.0/vendor/webpki-roots/Cargo.toml --- temporalio-1.3.0/vendor/webpki-roots/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki-roots/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,13 +12,33 @@ [package] edition = "2018" name = "webpki-roots" -version = "0.22.6" -authors = ["Joseph Birr-Pixton "] +version = "0.25.2" description = "Mozilla's CA root certificates for use with webpki" homepage = "https://github.com/rustls/webpki-roots" readme = "README.md" license = "MPL-2.0" repository = "https://github.com/rustls/webpki-roots" -[dependencies.webpki] -version = "0.22.0" +[dev-dependencies.percent-encoding] +version = "2.3" + +[dev-dependencies.reqwest] +version = "0.11" +features = ["rustls-tls-native-roots"] + +[dev-dependencies.ring] +version = "0.16.20" + +[dev-dependencies.rustls-pemfile] +version = "1" + +[dev-dependencies.tokio] +version = "1" +features = [ + "macros", + "rt-multi-thread", +] + +[dev-dependencies.webpki] +version = "0.101.2" +package = "rustls-webpki" diff -Nru temporalio-1.3.0/vendor/webpki-roots/extra_constraints.py temporalio-1.3.0/vendor/webpki-roots/extra_constraints.py --- temporalio-1.3.0/vendor/webpki-roots/extra_constraints.py 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki-roots/extra_constraints.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,78 +0,0 @@ -# -*- coding: utf-8 -*- -import binascii - -# Agence Nationale de la Securite des Systemes d'Information (ANSSI) -ANSSI_SUBJECT_DN = ( - b"\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02" b"FR" - b"\x31\x0F\x30\x0D\x06\x03\x55\x04\x08\x13\x06" b"France" - b"\x31\x0E\x30\x0C\x06\x03\x55\x04\x07\x13\x05" b"Paris" - b"\x31\x10\x30\x0E\x06\x03\x55\x04\x0A\x13\x07" b"PM/SGDN" - b"\x31\x0E\x30\x0C\x06\x03\x55\x04\x0B\x13\x05" b"DCSSI" - b"\x31\x0E\x30\x0C\x06\x03\x55\x04\x03\x13\x05" b"IGC/A" - b"\x31\x23\x30\x21\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x09\x01" - b"\x16\x14" b"igca@sgdn.pm.gouv.fr" - ) - -ANSSI_NAME_CONSTRAINTS = ( - b"\xa0\x5f" - b"\x30\x5D\xA0\x5B" - b"\x30\x05\x82\x03" b".fr" - b"\x30\x05\x82\x03" b".gp" - b"\x30\x05\x82\x03" b".gf" - b"\x30\x05\x82\x03" b".mq" - b"\x30\x05\x82\x03" b".re" - b"\x30\x05\x82\x03" b".yt" - b"\x30\x05\x82\x03" b".pm" - b"\x30\x05\x82\x03" b".bl" - b"\x30\x05\x82\x03" b".mf" - b"\x30\x05\x82\x03" b".wf" - b"\x30\x05\x82\x03" b".pf" - b"\x30\x05\x82\x03" b".nc" - b"\x30\x05\x82\x03" b".tf" - ) - -# TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 -TUBITAK1_SUBJECT_DN = ( - b"\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02" b"TR" - b"\x31\x18\x30\x16\x06\x03\x55\x04\x07\x13\x0f" b"Gebze - Kocaeli" - b"\x31\x42\x30\x40\x06\x03\x55\x04\x0a\x13\x39" b"Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK" - b"\x31\x2d\x30\x2b\x06\x03\x55\x04\x0b\x13\x24" b"Kamu Sertifikasyon Merkezi - Kamu SM" - b"\x31\x36\x30\x34\x06\x03\x55\x04\x03\x13\x2d" b"TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" - ) - -TUBITAK1_NAME_CONSTRAINTS = ( - b"\xa0\x67" - b"\x30\x65\xa0\x63" - b"\x30\x09\x82\x07" b".gov.tr" - b"\x30\x09\x82\x07" b".k12.tr" - b"\x30\x09\x82\x07" b".pol.tr" - b"\x30\x09\x82\x07" b".mil.tr" - b"\x30\x09\x82\x07" b".tsk.tr" - b"\x30\x09\x82\x07" b".kep.tr" - b"\x30\x09\x82\x07" b".bel.tr" - b"\x30\x09\x82\x07" b".edu.tr" - b"\x30\x09\x82\x07" b".org.tr" - ) - -name_constraints = { - TUBITAK1_SUBJECT_DN: TUBITAK1_NAME_CONSTRAINTS, - ANSSI_SUBJECT_DN: ANSSI_NAME_CONSTRAINTS -} - - -def get_imposed_name_constraints(subject): - """ - For the given certificate subject name, return a - name constraints encoding which will be applied - to that certificate. Return None to apply - no constraints. - - Data returned by this function is sourced from: - - https://hg.mozilla.org/projects/nss/file/tip/lib/certdb/genname.c - - Such that webpki-roots implements the same policy in this - respect as the Mozilla root program. - """ - - return name_constraints.get(binascii.a2b_hex(subject), None) diff -Nru temporalio-1.3.0/vendor/webpki-roots/README.md temporalio-1.3.0/vendor/webpki-roots/README.md --- temporalio-1.3.0/vendor/webpki-roots/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki-roots/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -14,8 +14,7 @@ is therefore a derived work. # Regenerating sources -You will need python3 and curl. - -Run `build.py` which will output a new version of `src/lib.rs`. You can now -compare and audit. The code is generated in deterministic order so changes +Sources are generated in an integration test, in `tests/codegen.rs`. The test +will fail if the sources are out of date relative to upstream, and update +`src/lib.rs` if so. The code is generated in deterministic order so changes to the source should only result from upstream changes. diff -Nru temporalio-1.3.0/vendor/webpki-roots/src/bin/process_cert.rs temporalio-1.3.0/vendor/webpki-roots/src/bin/process_cert.rs --- temporalio-1.3.0/vendor/webpki-roots/src/bin/process_cert.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki-roots/src/bin/process_cert.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -extern crate webpki; -use std::io; -use std::io::Read; - -fn dumphex(label: &str, bytes: &[u8]) { - print!("{}: ", label); - for b in bytes { - print!("{:02x}", b); - } - println!(""); -} - -fn main() { - let mut der = Vec::new(); - io::stdin().read_to_end(&mut der) - .expect("cannot read stdin"); - - let ta = webpki::TrustAnchor::try_from_cert_der(&der) - .expect("cannot parse certificate"); - - dumphex("Subject", ta.subject); - dumphex("SPKI", ta.spki); - if ta.name_constraints.is_none() { - println!("Name-Constraints: None"); - } else { - dumphex("Name-Constraints", ta.name_constraints.unwrap()); - } -} diff -Nru temporalio-1.3.0/vendor/webpki-roots/src/lib.rs temporalio-1.3.0/vendor/webpki-roots/src/lib.rs --- temporalio-1.3.0/vendor/webpki-roots/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki-roots/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -6,15 +6,23 @@ //! yourself by inspecting and re-running the generation process. //! -#![forbid(unsafe_code, - unstable_features)] -#![deny(trivial_casts, - trivial_numeric_casts, - unused_import_braces, - unused_extern_crates, - unused_qualifications)] +#![forbid(unsafe_code, unstable_features)] +#![deny( + trivial_casts, + trivial_numeric_casts, + unused_import_braces, + unused_extern_crates, + unused_qualifications +)] + +/// A trust anchor (sometimes called a root) for validating X.509 certificates +pub struct TrustAnchor<'a> { + pub subject: &'a [u8], + pub spki: &'a [u8], + pub name_constraints: Option<&'a [u8]>, +} -pub static TLS_SERVER_ROOTS: webpki::TlsServerTrustAnchors = webpki::TlsServerTrustAnchors(&[ +pub const TLS_SERVER_ROOTS: &[TrustAnchor] = &[ /* * Issuer: CN=DigiCert TLS ECC P384 Root G5 O=DigiCert, Inc. * Subject: CN=DigiCert TLS ECC P384 Root G5 O=DigiCert, Inc. @@ -38,7 +46,7 @@ * DXZDjC5Ty3zfDBeWUA== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x170\x15\x06\x03U\x04\n\x13\x0eDigiCert, Inc.1&0$\x06\x03U\x04\x03\x13\x1dDigiCert TLS ECC P384 Root G5", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\xc1D\xa1\xcf\x11\x97P\x9a\xde#\x825\x07\xcd\xd0\xcb\x18\x9d\xd2\xf1\x7fw5O;\xdd\x94rR\xed\xc2;\xf8\xec\xfa{kX \xec\x99\xae\xc9\xfch\xb3u\xb9\xdb\t\xec\xc8\x13\xf5N\xc6\n\x1df0L\xbb\x1fG\n\xcc ", name_constraints: None @@ -106,7 +114,7 @@ * nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x140\x12\x06\x03U\x04\n\x0c\x0bAffirmTrust1\x1f0\x1d\x06\x03U\x04\x03\x0c\x16AffirmTrust Commercial", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xf6\x1bOg\x07+\xa1\x15\xf5\x06\"\xcb\x1f\x01\xb2\xe3sE\x06DI,\xbbI%\x14\xd6\xce\xc3\xb7\xab,O\xc6A2\x94W\xfa\x12\xa7[\x0e\xe2\x8f\x1f\x1e\x86\x19\xa7\xaa\xb5-\xb9_\r\x8a\xc2\xaf\x855y2-\xbb\x1cb7\xf2\xb1[J=\xca\xcdq_\xe9B\xbe\x94\xe8\xc8\xde\xf9\"Hd\xc6\xe5\xab\xc6+m\xad\x05\xf0\xfa\xd5\x0b\xcf\x9a\xe5\xf0P\xa4\x8b;G\xa5#[zz\xf83?\xb8\xef\x99\x97\xe3 \xc1\xd6(\x89\xcf\x94\xfb\xb9E\xed\xe3@\x17\x11\xd4t\xf0\x0b1\xe2+&j\x9bLW\xae\xac >\xbaEz\x05\xf3\xbd\x9bi\x15\xae}N c\xc45v:\x07\x02\xc97\xfd\xc7G\xee\xe8\xf1v\x1ds\x15\xf2\x97\xa4\xb5\xc8zy\xd9B\xaa+\x7f\\\xfe\xce&O\xa3f\x815\xafD\xbaT\x1e\x1c02e\x9d\xe6<\x93^PNz\xe3:\xd4n\xcc\x1a\xfb\xf9\xd27\xae$*\xabW\x03\"(\rIu\x7f\xb7(\xdau\xbf\x8e\xe3\xdc\x0ey1\x02\x03\x01\x00\x01", name_constraints: None @@ -156,7 +164,7 @@ * jLMi6Et8Vcad+qMUu2WFbm5PEn4KPJ2V * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02ES1B0@\x06\x03U\x04\x03\x0c9Autoridad de Certificacion Firmaprofesional CIF A62634068", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xca\x96k\x8e\xea\xf8\xfb\xf1\xa25\xe0\x7fL\xda\xe0\xc3R\xd7}\xb6\x10\xc8\x02^\xb3C*\xc4Oj\xb2\xca\x1c](\x9ax\x11\x1aiYW\xaf\xb5 B\xe4\x8b\x0f\xe6\xdf[\xa6\x03\x92/\xf5\x11\xe4b\xd72q8\xd9\x04\x0cq\xab=Q~\x0f\x07\xdfc\x05\\\xe9\xbf\x94o\xc1)\x82\xc0\xb4\xdaQ\xb0\xc1<\xbb\xad7J\\\xca\xf1K6\x0e$\xab\xbf\xc3\x84w\xfd\xa8P\xf4\xb1\xe7\xc6/\xd2-Y\x8dz\nN\x96iR\x02\xaa6\x98\xec\xfc\xfa\x14\x83\x0c7\x1f\xc9\x927\x7f\xd7\x81-\xe5\xc4\xb9\xe0>4\xfeg\xf4>f\xd1\xd3\xf4@\xcf^b4\x0fp\x06> \x18Z\xce\xf7r\x1b%l\x93t\x14\x93\xa3s\xb1\x0e\xaa\x87\x10#Y_ \x05\x19G\xedh\x8e\x92\x12\xca]\xfc\xd6+\xb2\x92< \xcf\xe1_\xaf \xbe\xa0v\x7fv\xe5\xec\x1a\x86a3>\xe7{\xb4?\xa0\x0f\x8e\xa2\xb9jo\xb9\x87&oAl\x88\xa6P\xfdjc\x0b\xf5\x93\x16\x1b\x19\x8f\xb2\xed\x9b\x9b\xc9\x90\xf5\x01\x0c\xdf\x19=\x0f>8#\xc9/\x8f\x0c\xd1\x02\xfe\x1bU\xd6N\xd0\x8d<\xafO\xa4\xf3\xfe\xaf*\xd3\x05\x9dy\x08\xa1\xcbW1\xb4\x9c\xc8\x90\xb2g\xf4\x18\x16\x93:\xfcG\xd8\xd1x\x961\x1f\xba+\x0c_]\x99\xadc\x89Z$ v\xd8\xdf\xfd\xabN\xa6\"\xaa\x9d^\xe6\'\x8a}h)\xa3\xe7\x8a\xb8\xda\x11\xbb\x17-\x99\x9d\x13$F\xf7\xc5\xe2\xd8\x9f\x8e\x7f\xc7\x8ftmZ\xb2\xe8r\xf5\xac\xee$\x10\xad/\x14\xda\xff-\x9aFqG\xbeB\xdf\xbb\x01\xdb\xf4\x7f\xd3(\x8f1Y[\xd3\xc9\x02\xa6\xb4R\xcan\x97\xfbC\xc5\x08&o\x8a\xf4\xbb\xfd\x9f(\xaa\r\xd5E\xf3\x13:\x1d\xd8\xc0x\x8fAg<\x1e\x94d\xae{\x0b\xc5\xe8\xd9\x01\x889\x1a\x97\x86dA\xd5;\x87\x0cn\xfa\x0f\xc6\xbdH\x14\xbf9M\xd4\x9eA\xb6\x8f\x96\x1dc\x96\x93\xd9\x95\x06x1h\x9e7\x06;\x80\x89Ea9#\xc7\x1bD\xa3\x15\xe5\x1c\xf8\x920\xbb\x02\x03\x01\x00\x01", name_constraints: None @@ -189,7 +197,7 @@ * gfM0agPnIjhQW+0ZT0MW * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02DE1\x150\x13\x06\x03U\x04\n\x13\x0cD-Trust GmbH1\"0 \x06\x03U\x04\x03\x13\x19D-TRUST EV Root CA 1 2020", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\xf1\x0b\xdd\x86C \x19\xdf\x97\x85\xe8\"J\x9b\xcf\x9d\x98\xbf\xb4\x05&\xc9\xcb\xe3\xa6\xd2\x8f\xc5\x9ex{1\x89\xa9\x89\xad\'\x93L\x08\x08\x8c\x1e\xa2#\x1c\xd4j\xad\"\xba\x99\x01.me\xcb\xbe$fU$K@D\xb1\x1b\xd7\xe1\xc2\x85\xc0\xde\x10?=\xed\xb8\xfc\xf1\xf1#S\xdc\xbfe\x97o\xd9\xf9@q\x8d}\xbd\x95\xd4\xce\xbe\xa0^\'#\xde\xfd\xa6\xd0&\x0e\x00)\xeb\xa5\xd2$9jG\xab\x00\xd4\xa1\xb3\xa9%\xfe\r?\xa7\x1d\xba\xd3Q\xc1\x0b\xa4\xda\xac8\xefUP$\x05eF\x934O-\x8d\xad\xc6\xd4!\x19\xd2\x8e\xca\x05aq\x07sG\xe5\x8a\x19\x12\xbd\x04M\xceN\x9c\xa5H\xac\xbb&\xf7\x02\x03\x01\x00\x01", name_constraints: None @@ -300,7 +308,7 @@ * WXzhriKi4gp6D/piq1JM4fHfyr6DDUI= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\x0b\x13\nemSign PKI1\x140\x12\x06\x03U\x04\n\x13\x0beMudhra Inc1\x1c0\x1a\x06\x03U\x04\x03\x13\x13emSign Root CA - C1", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xcf\xeb\xa9\xb9\xf1\x99\x05\xcc\xd8(!J\xf3s4Q\x84V\x10\xf5\xa0O,\x12\xe3\xfa\x13\x9a\'\xd0\xcf\xf9y\x1at_\x1dy9\xfc[\xf8p\x8e\xe0\x92R\xf7\xe4%\xf9T\x83\xd9\x1d\xd3\xc8Z\x85?^\xc7\xb6\x07\xee>\xc0\xce\x9a\xaf\xacVB*9%p\xd6\xbf\xb5{6\xad\xac\xf6s\xdc\xcd\xd7\x1d\x8a\x83\xa5\xfb+\x90\x157k\x1c&G\xdc;)V\x93j\xb3\xc1j:\x9d=\xf5\xc1\x978X\x05\x8b\x1c\x11\xe3\xe4\xb4\xb8]\x85\x1d\x83\xfex_\x0bEh\x18H\xa5Fs4;\xfe\x0f\xc8v\xbb\xc7\x18\xf3\x05\xd1\x86\xf3\x85\xed\xe7\xb9\xd92\xadU\x88\xce\xa6\xb6\x91\xb0O\xac~\x15#\x96\xf6?\xf0 4\x16\xde\n\xc6\xc4\x04Ey\x7f\xa7\xfd\xbe\xd2\xa9\xa5\xaf\x9c\xc5#*\xf7\x84\xf0\x9e\xe8_\xec\xe5\'D\xf5(\xa6?{\xde\xe0*\xf0\xc8\xafS/\x9e\xca\x05\x01\x93\x1e\x8ff\x1c9\xa7M\xfaZ\xb6s\x04%f\xebw\x7f\xe7Y\xc6J\x99%\x14T\xeb&\xc7\xf3\x7f\x19\xd50p\x8f\xaf\xb0F*\xff\xad\xeb)\xed\xd7\x9f\xaa\x04\x87\xa3\xd4\xf9\x89\xa54_\xdbC\x91\x826\xd9f<\xb1\xb8\xb9\x82\xfd\x9c:>\x10\xc8;\xef\x06efz\x9b\x19\x18=\xffqQ<0._\xbe=ws\xb2]\x06l\xc3#V\x9a+\x85&\x92\x1c\xa7\x02\xb3\xe4?\r\xaf\x08y\x82\xb86=\xea\x9c\xd35\xb3\xbci\xca\xf5\xcc\x9d\xe8\xfdd\x8d\x17\x803n^J]\x99\xc9\x1e\x87\xb4\x9d\x1a\xc0\xd5n\x135#^\xdf\x9b_=\xef\xd6\xf7v\xc2\xea>\xbbx\r\x1cBgk\x04\xd8\xf8\xd6\xdao\x8b\xf2D\xa0\x01\xab\x02\x01\x03", name_constraints: None @@ -375,7 +383,7 @@ * R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02IE1\x120\x10\x06\x03U\x04\n\x13\tBaltimore1\x130\x11\x06\x03U\x04\x0b\x13\nCyberTrust1\"0 \x06\x03U\x04\x03\x13\x19Baltimore CyberTrust Root", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xa3\x04\xbb\"\xab\x98=W\xe8&r\x9a\xb5y\xd4)\xe2\xe1\xe8\x95\x80\xb1\xb0\xe3[\x8e+)\x9ad\xdf\xa1]\xed\xb0\t\x05m\xdb(.\xceb\xa2b\xfe\xb4\x88\xda\x12\xeb8\xeb!\x9d\xc0A+\x01R{\x88w\xd3\x1c\x8f\xc7\xba\xb9\x88\xb5j\t\xe7s\xe8\x11@\xa7\xd1\xcc\xcab\x8d-\xe5\x8f\x0b\xa6P\xd2\xa8P\xc3(\xea\xf5\xab%\x87\x8a\x9a\x96\x1c\xa9g\xb8?\x0c\xd5\xf7\xf9R\x13/\xc2\x1b\xd5pp\xf0\x8f\xc0\x12\xca\x06\xcb\x9a\xe1\xd9\xca3zw\xd6\xf8\xec\xb9\xf1hDBH\x13\xd2\xc0\xc2\xa4\xae^`\xfe\xb6\xa6\x05\xfc\xb4\xdd\x07Y\x02\xd4Y\x18\x98c\xf5\xa5c\xe0\x90\x0c}]\xb2\x06z\xf3\x85\xea\xeb\xd4\x03\xae^\x84>_\xff\x15\xedi\xbc\xf996ru\xcfwRM\xf3\xc9\x90,\xb9=\xe5\xc9#S?\x1f$\x98!\\\x07\x99)\xbd\xc6:\xec\xe7n\x86:k\x97tc3\xbdh\x181\xf0x\x8dv\xbf\xfc\x9e\x8e]*\x86\xa7M\x90\xdc\'\x1a9\x02\x03\x01\x00\x01", name_constraints: None @@ -406,7 +414,7 @@ * GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02GB1\x1b0\x19\x06\x03U\x04\x08\x13\x12Greater Manchester1\x100\x0e\x06\x03U\x04\x07\x13\x07Salford1\x1a0\x18\x06\x03U\x04\n\x13\x11COMODO CA Limited1+0)\x06\x03U\x04\x03\x13\"COMODO ECC Certification Authority", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\x03G{/u\xc9\x82\x15\x85\xfbu\xe4\x91\x16\xd4\xabb\x99\xf5>R\x0b\x06\xceA\x00\x7f\x97\xe1\n$<\x1d\x01\x04\xee=\xd2\x8d\t\x97\x0c\xe0u\xe4\xfa\xfbw\x8a*\xf5\x03`K6\x8b\x16#\x16\xad\tq\xf4J\xf4(P\xb4\xfe\x88\x1cn?l//\tY[\xa5[\x0b3\x99\xe2\xc3=\x89\xf9j,\xef\xb2\xd3\x06\xe9", name_constraints: None @@ -435,7 +443,7 @@ * xwy8p2Fp8fc74SrL+SvzZpA3 * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1$0\"\x06\x03U\x04\x0b\x13\x1bGlobalSign ECC Root CA - R51\x130\x11\x06\x03U\x04\n\x13\nGlobalSign1\x130\x11\x06\x03U\x04\x03\x13\nGlobalSign", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04GE\x0e\x96\xfb}]\xbf\xe99\xd1!\xf8\x9f\x0b\xb6\xd5{\x1e\x92:HY\x1c\xf0b1-\xc0z(\xfe\x1a\xa7\\\xb3\xb6\xcc\x97\xe7E\xd4X\xfa\xd1wmC\xa2\xc0\x87e4\n\x1fz\xdd\xeb<3\xa1\xc5\x9dM\xa4oA\x958\x7f\xc9\x1e\x84\xeb\xd1\x9eI\x92\x87\x94\x87\x0c:\x85Jf\x9f\x9dY\x93M\x97a\x06\x86J", name_constraints: None @@ -462,7 +470,7 @@ * YyRIHN8wfdVoOw== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x0f0\r\x06\x03U\x04\n\x13\x06Amazon1\x190\x17\x06\x03U\x04\x03\x13\x10Amazon Root CA 3", spki: b"0\x13\x06\x07*\x86H\xce=\x02\x01\x06\x08*\x86H\xce=\x03\x01\x07\x03B\x00\x04)\x97\xa7\xc6A\x7f\xc0\r\x9b\xe8\x01\x1bV\xc6\xf2R\xa5\xba-\xb2\x12\xe8\xd2.\xd7\xfa\xc9\xc5\xd8\xaam\x1fs\x81;;\x98k9|3\xa5\xc5N\x86\x8e\x80\x17hbEW}DX\x1d\xb37\xe5g\x08\xebf\xde", name_constraints: None @@ -515,7 +523,7 @@ * 4SVhM7JZG+Ju1zdXtg2pEto= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02BM1\x190\x17\x06\x03U\x04\n\x13\x10QuoVadis Limited1\x1b0\x19\x06\x03U\x04\x03\x13\x12QuoVadis Root CA 3", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xccWB\x16T\x9c\xe6\x98\xd3\xd3M\xee\xfe\xed\xc7\x9fC9Je\xb3\xe8\x16\x884\xdb\rY\x91t\xcf\x92\xb8\x04@\xad\x02K1\xab\xbc\x8d\x91h\xd8 \x0e\x1a\x01\xe2\x1a{N\x17]\xe2\x8a\xb7?\x99\x1a\xcd\xeba\xab\xc2e\xa6\x1f\xb7\xb7\xbd\xb7\x8f\xfc\xfdp\x8f\x0b\xa0g\xbe\x01\xa2Y\xcfq\xe6\x0f)v\xff\xb1VyE+\x1f\x9ezT\xe8\xa3)5h\xa4\x01O\x0f\xa4.7\xef\x1b\xbf\xe3\x8f\x10\xa8r\xabXW\xe7T\x86\xc8\xc9\xf3[\xda,\xda]\x8en<\xa3>\xda\xfb\x82\xe5\xdd\xf2\\\xb2\x053o\x8a6\xce\xd0\x13N\xff\xbfJ\x0c4L\xa6\xc3!\xbdP\x04U\xeb\xb1\xbb\x9d\xfbE\x1ed\x15\xdeU\x01\x8c\x02v\xb5\xcb\xa1?Bi\xbc/\xbdhC\x16V\x89*7a\x91\xfd\xa6\xaeN\xc0\xcb\x14e\x947K\x92\x06\xef\x04\xd0\xc8\x9c\x88\xdb\x0b{\x81\xaf\xb1=*\xc4e:x\xb6\xee\xdc\x80\xb1\xd2\xd3\x99\x9c:\xeekZk\xb3\x8d\xb7\xd5\xce\x9c\xc2\xbe\xa5K/\x16\xb1\x9eh;\x06o\xae}\x9f\xf8\xde\xec\xcc)\xa7\x98\xa3%C/\xef\xf1_&\xe1\x88M\xf8^n\xd7\xd9\x14n\x193i\xa7;\x84\x89\x93\xc4SU\x13\xa1Qx@\xf8\xb8\xc9\xa2\xee{\xbaRB\x83\x9e\x14\xed\x05RZYV\xa7\x97\xfc\x9d?\n)\xd8\xdcO\x91\x0e\x13\xbc\xde\x95\xa4\xdf\x8b\x99\xbe\xac\x9b3\x88\xef\xb5\x81\xaf\x1b\xc6\"S\xc8\xf6\xc7\xee\x97\x14\xb0\xc5|xR\xc8\xf0\xcenw`\x84\xa6\xe9*v \xedX\x01\x170\x93\xe9\x1a\x8b\xe0sc\xd9j\x92\x94IN\xb4\xadJ\x85\xc4\xa3\"0\xfc\t\xedh\"s\xa6\x88\x0cU!X\xc5\xe1:\x9f*\xdd\xca\xe1\x90\xe0\xd9s\xabl\x80\xb8\xe8\x0bd\x93\xa0\x9c\x8c\x19\xff\xb3\xd2\x0c\xec\x91&\x87\x8a\xb3\xa2\xe1p\x8f,\n\xe5\xcdmhQ\xeb\xda?\x05\x7f\x8b2\xe6\x13\\k\xfe_@\xe2\"\xc8\xb4\xb4dO\xd6\xba}H>\xa8i\x0c\xd7\xbb\x86q\xc9s\xb8?;\x9d%K\xda\xff@\xeb\x02\x03\x01\x00\x01", name_constraints: None @@ -561,7 +569,7 @@ * 4PsJYGw= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x0f0\r\x06\x03U\x04\n\x13\x06Amazon1\x190\x17\x06\x03U\x04\x03\x13\x10Amazon Root CA 2", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xad\x96\x9f-\x9cJLJ\x81yQ\x99\xec\x8a\xcbk`Q\x13\xbcMm\x06\xfc\xb0\x08\x8d\xdd\x19\x10j\xc7&\x0c5\xd8\xc0o \x84\xe9\x94\xb1\x9b\x85\x03\xc3[\xdbJ\xe8\xc8\xf8\x90v\xd9[O\xe3L\xe8\x066M\xcc\x9a\xac=\x0c\x90+\x92\xd4\x06\x19`\xac7Dy\x85\x81\x82\xadZ7\xe0\r\xcc\x9d\xa6LRv\xeaC\x9d\xb7\x04\xd1P\xf6U\xe0\xd5\xd2\xa6I\x85\xe97\xe9\xca~\xae\\\x95MH\x9a?\xae Zm\x88\x95\xd94\xb8R\x1aC\x90\xb0\xbfl\x05\xb9\xb6x\xb7\xea\xd0\xe4:<\x12Sb\xffJ\xf2{\xbe5\x05\xa9\x124\xe3\xf3dtb,=\x00IZ(\xfe2D\xbb\x87\xdde\'\x02q;\xdaJ\xf7\x1f\xda\xcd\xf7!U\x90O\x0f\xec\xae\x82\xe1\x9fk\xd9E\xd3\xbb\xf0_\x87\xed<,9\x86\xda?\xde\xecrU\xeby\xa3\xad\xdb\xdd|\xb0\xba\x1c\xce\xfc\xdeO5v\xcf\x0f\xf8x\x1fj6QF\'a[\xe9\x9e\xcf\xf0\xa2U}|%\x8ao/\xb4\xc5\xcf\x84.+\xfd\rQ\x10l\xfb_\x1b\xbc\x1b~\xc5\xae;\x98\x011\x92\xff\x0bW\xf4\x9a\xb2\xb9W\xe9\xab\xef\rv\xd1\xf0\xee\xf4\xce\x86\xa7\xe0n\xe9\xb4i\xa1\xdfi\xf63\xc6i.\x97\x13\x9e\xa5\x87\xb0W\x10\x817\xc9S\xb3\xbb\x7f\xf6\x92\xd1\x9c\xd0\x18\xf4\x92n\xda\x83O\xa6c\x99L\xa5\xfb^\xef!dz _ld\x85\x15\xcb7\xe9b\x0c\x0b*\x16\xdc\x01.2\xda>K\xf5\x9e:\xf6\x17@\x94\xef\x9e\x91\x08\x86\xfa\xbec\xa8Z3\xec\xcbtC\x95\xf9liR6\xc7)o\xfcU\x03\\\x1f\xfb\x9f\xbdG\xeb\xe7IG\x95\x0bN\x89\"\tI\xe0\xf5a\x1e\xf1\xbf.\x8arn\x80Y\xffW:\xf9u2\xa3N_\xec\xed(b\xd9Ms\xf2\xcc\x81\x17`\xed\xcd\xeb\xdc\xdb\xa7\xca\xc5~\x02\xbd\xf2T\x08T\xfd\xb4-\t,\x17TJ\x98\xd1T\xe1Qg\x08\xd2\xedn~o?\xd2-\x81Y)f\xcb\x909\x95\x11\x1et\'\xfe\xdd\xeb\xaf\x02\x03\x01\x00\x01", name_constraints: None @@ -592,7 +600,7 @@ * h5Mmm7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x0e0\x0c\x06\x03U\x04\x08\x0c\x05Texas1\x100\x0e\x06\x03U\x04\x07\x0c\x07Houston1\x180\x16\x06\x03U\x04\n\x0c\x0fSSL Corporation1402\x06\x03U\x04\x03\x0c+SSL.com EV Root Certification Authority ECC", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\xaa\x12G\x90\x98\x1b\xfb\xef\xc3@\x07\x83 N\xf10\x82\xa2\x06\xd1\xf2\x92\x86a\xf2\xf6!h\xca\x00\xc4\xc7\xeaC\x00T\x86\xdc\xfd\x1f\xdf\x00\xb8Ab\\\xdcp\x162\xde\x1f\x99\xd4\xcc\xc5\x07\xc8\x08\x1fa\x16\x07Q=}\\\x07S\xe358\x8c\xdf\xcd\x9f\xd9.\rJ\xb6\x19.ZpZ\x06\xed\xbe\xf0\xa1\xb0\xca\xd0\t)", name_constraints: None @@ -639,7 +647,7 @@ * rBPuUBQemMc= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02FI1\x1a0\x18\x06\x03U\x04\n\x0c\x11Telia Finland Oyj1\x190\x17\x06\x03U\x04\x03\x0c\x10Telia Root CA v2", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xb2\xd0?\x07\xbc\xe2{\xd0k\x99\xf8\xe2wi\xe7\xce\x9d\xa4\x03\xbc\x82m\xa1\xfe\x81e\x1fL\'\xac\x8e\x00\xba\x16{\xeb0j\x00\xc0\xb3th~\xb2\xaf\xc7\xd5b\xb3z?P\xca\x8c6D$c\xd26\xe9\x0c\x85\xf6Cv\xd5L\xa1`rg\xe2(3\xa5\xcb1\xb8:\"#4\xb8}\xbdV\"@\x9d\xea\xf4{\x03\xadh\xfc\xb2\x81O\x98\xd0t\xea\x8d\xe5}\xcdc\xc3\xa3\xf6\xde\x92\xc2X\x19\xe0\x96\xbb\xc5\xc4\xa9=\xa5t\x96\xfe\xaf\xf9\x89\xaa\xbd\x95\x17T\xd8xD\xf1\x0cw\x15\x92\xe0\x98B\xa7\xa4\xd6\xaa \x92\xcd\xc1\xa0\xb3\x96\xb2:\x84B\x8d}\xd5\x95\xe4\xd6\xdb\xe9b\xc4X\xb3y\xc5\x8c\xd353\x83\x9fu\xa1R\'a8\xf1Y=\x8eP\xe0\xbdy<\xe7l\x96\xfe^\xd9\x02e\xb4\x8e\\\xd0\x114\xdf]\xbfR\xa7\x81\x00\xc3\x7f\x99E\x99\x15\xd5\x17\xc8\nS\xecc\xf3\x99}\xcci\x12\x86\xc2\x17\xf0\x01\x9e\xbf\x84\xbc\xd1R\xcb\x1b\x92f\xce\xa4S\xe5\xa1\xbf\xc4\xdb\t\xd6\xe6\x89V+\xc8\xe3|\xde\xe3\xff\x89\xe55n(\xe8l\x0b#Q\xa9%\x05\xebH\xf8\xdd\xb1\xca\xfal\x08Q\xef\xb7\x18lD\xca&\xe1s\xc6\x89\x06\x81\xe5\x8a\xac\xb0\xe2)\xc6\xb9$\xb3kD\x11\xf4\xa5C\xc2LC\xe5p6\x8c\xb63Wz\x95.\x82\xa0\xf4\\\x10\xb3a\x83\xf6\x02\x05\x86.|-l\xdc\x03Fn5\x93\xd5z\x95/\xde \xd8[~\x94\x90\x04j\xbaY=\x04\x05u\x9d7\xa2\x0e.=\xeb\xc1\xa4R\x83\xfe\xd0k\xd4f\x8e\xdc\xc6\xe9\x12N\x1d*W\xaa\x10\xbc|^\x82}\xa6\xa6\xc9\xf2-\xb9\xf5\x17\'\xad\xd1\x0e\x89T+\x95\xfa\xc0\xad\x1d\x98\x14x3B\x86\n\xa9s\xb5\xfbt\r\xb7\x1b0\x19\xc4Z\x0e\x1c\'\xb7\xda\x18\xd0\xff\x8a\xc8\x05\xba\xf1\xaa\x1c\xa27\xb7\xe6H\xa4F,\x94\xea\xa8vbG\x8b\x10S\x07HWl\xe2\x92M\xb6\xae\x05\xcb\xdc\xc1J^\x8f\xac=\x19N\xc2\xed`u+\xdb\xc1\xcaB\xd5\x02\x03\x01\x00\x01", name_constraints: None @@ -686,7 +694,7 @@ * TdJ0MN1kURXbg4NR16/9M51NZg== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02JP1%0#\x06\x03U\x04\n\x13\x1cSECOM Trust Systems CO.,LTD.1\'0%\x06\x03U\x04\x03\x13\x1eSecurity Communication RootCA3", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xe3\xc9rI\xf70\xde\t|\xa9@\x81X\xd3\xb4:\xdd\xbaa\x0f\x93Pni<5\xc2\xee[s\x90\x1bgL!\xec_5\xbb9>+\n`\xef\xbbm+\x86\xfbq\xa2\xc8\xac\xe4V\x94\xf9\xc9\xaf\xb1r\xd4 \xact\xd2\xb8\x15\xadQ\xfe\x85t\xa1\xb9\x10\xfe\x05\x80\xf9R\x93\xb3@=u\x10\xac\xc0\x96\xb7\xa7~v\xbc\xe3\x1bR\x19\xce\x11\x1f\x0b\x044\xf5\xd8\xf5iP\xe1\xe0/&=~\\#\xb5yp\xde\xfa\xe0\xd1\xa5\xd6\x0cAq{\xf7\xea\x8c\x1c\x88\xc7\xec\x8b\xf5\xd1/U\x96F|Z;X;\xfb\xba\xd8-\xb5%\xdazN\xcfD\xae!\xa6\x9e\x98\xca n|\xbb\x88\x85[\xfb\xc0\x10b\xbb\xf2\xf9\'G\xef\xd1\x899C\xc4\xdf\xde\xe1A\xbfTs \x97-l\xda\xf3\xd4\x07\xa3\xe6\xb9\xd8o\xae\xfc\x8c\x19.\xd3gg+\x95\xdbX\\\xb5j\x02\xf3\xb8\x83^\xb4k\xbeA~W\tuDPU\xcdZ\x11a!\na\xc2\xa9\x88\xfd\x13\xbc-\x89/\xcda\xe0\x95\xbe\xca\xb5{\xe1{4g\x0b\x1f\xb6\x0c\xc7|\x1e\x19S\xca\xa7\xb1J\x15 V\x14p=+\x82,\x0f\x9d\x15\x1dG\x80G\xffx\x99\x0e1\xafo>\x8f\xed\x86i\x1e{\x18\x88\x14\xb2\xc2\xfc\x823.\x9cK-\xfbp;q\xaa+{&\'\xf3\x1a\xc2\xdc\xfb\x17\xb8\xa1\xea\xcb\xa0\xb4\xae\xd3\x94~z\xd0\xab\xc3\xec8-\x11.\x88\xbf\xd4?\xad\x12;B\xac\x8f\x02n}\xcc\xd1_a\xbe\xa1\xbc:jH\xea&U\"\x16]_\r\xff\'3\x9f\x18\x03t\x8a[R GkEM\"w\x8cU\'\xf0\xaf\x1e\x8c\xc9\x83\"T\xb7\x9a\xd0O\xd9\xce\xfc\xd9.\x1c\x96(\xb1\x02\xd3\x03\xbd%R\x1c4fO#\xab\xf4w\x82\x96\x1d\xd1W0\x08\x11\x05\xfdW\xd1\xd9\xc7\x02\x03\x01\x00\x01", name_constraints: None @@ -735,7 +743,7 @@ * QyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02ES1\x140\x12\x06\x03U\x04\n\x0c\x0bIZENPE S.A.1\x130\x11\x06\x03U\x04\x03\x0c\nIzenpe.com", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xc9\xd3z\xca\x0f\x1e\xac\xa7\x86\xe8\x16ej\xb1\xc2\x1bE2q\x95\xd9\xfe\x10[\xcc\xaf\xe7\xa5y\x01\x8f\x89\xc3\xca\xf2Uq\xf7w\xbew\x94\xf3r\xa4,D\xd8\x9e\x92\x9b\x14:\xa1\xe7$\x90\n\nV\x8e\xc5\xd8&\x94\xe1\xd9H\xe1->\xda\nr\xdd\xa3\x99\x15\xda\x81\xa2\x87\xf4{n&w\x89X\xad\xd6\xeb\x0c\xb2Azsnm\xdbzxA\xe9\x08\x88\x12~\x87.f\x11clT\xfb<\x9dr\xc0\xbc.\xff\xc2\xb7\xdd\rv\xe3:\xd7\xf7\xb4h\xbe\xa2\xf5\xe3\x81n\xc1Fo]\x8d\xe0M\xc6TU\x89\x1a31\n\xb1W\xb9\xa3\x8a\x98\xc3\xec;4\xc5\x95Ai~u\xc2< \xc5a\xbaQG\xa0 \x90\x93\xa1\x90K\xf3N|\x85ET\x9a\xd1\x05&A\xb0\xb5M\x1d3\xbe\xc4\x03\xc8%|\xc1p\xdb;\xf4\t-T\'H\xac/\xe1\xc4\xac>\xc8\xcb\x92LS97#\xec\xd3\x01\xf9\xe0\tDMMd\xc0\xe1\rZ\x87\"\xbc\xad\x1b\xa3\xfe&\xb5\x15\xf3\xa7\xfc\x84\x19\xe9\xec\xa1\x88\xb4Di\x84\x83\xf3\x89\xd1t\x06\xa9\xcc\x0b\xd6\xc2\xde\'\x85P&\xca\x17\xb8\xc9z\x87V,\x1a\x01\x1el\xbe\x13\xad\x10\xac\xb5$\xf58\x91\xa1\xd6K\xda\xf1\xbb\xd2\xdeG\xb5\xf1\xbc\x81\xf6Yk\xcf\x19S\xe9\x8d\x15\xcbJ\xcb\xa9oD\xe5\x1bA\xcf\xe1\x86\xa7\xca\xd0j\x9f\xbcL\x8d\x063Z\xa2\x85\xe5\x905\xa0b\\\x16N\xf0\xe3\xa2\xfa\x03\x1a\xb4,q\xb3X,\xde{\x0b\xdb\x1a\x0f\xeb\xde!\x1f\x06w\x06\x03\xb0\xc9\xef\x99\xfc\xc0\xb9O\x0b\x86(\xfe\xd2\xb9\xea\xe3\xda\xa5\xc3Gi\x12\xe0\xdb\xf0\xf6\x19\x8b\xed{p\xd7\x02\xd6\xed\x87\x18(,\x04$Lw\xe4H\x8a\x1a\xc6;\x9a\xd4\x0f\xca\xfau\xd2\x01@Z\x8dy\xbf\x8b\xcfK\xcf\xaa\x16\xc1\x95\xe4\xadL\x8a>\x17\x91\xd4\xb1b\xe5\x82\xe5\x80\x04\xa4\x03~\x8d\xbf\xda\x7f\xa2\x0f\x97O\x0c\xd3\r\xfb\xd7\xd1\xe5r~\x1c\xc8w\xff[\x9a\x0f\xb7\xae\x05F\xe5\xf1\xa8\x16\xecG\xa4\x17\x02\x03\x01\x00\x01", name_constraints: None @@ -782,7 +790,7 @@ * 5hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1 0\x1e\x06\x03U\x04\x0b\x13\x17GlobalSign Root CA - R61\x130\x11\x06\x03U\x04\n\x13\nGlobalSign1\x130\x11\x06\x03U\x04\x03\x13\nGlobalSign", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\x95\x07\xe8s\xcaf\xf9\xec\x14\xca{<\xf7\r\x08\xf1\xb4E\x0b,\x82\xb4H\xc6\xeb[<\xae\x83\xb8A\x923\x14\xa4o\x7f\xe9*\xcc\xc6\xb0\x88k\xc5\xb6\x89\xd1\xc6\xb2\xff\x14\xceQ\x14!\xecJ\xdd\x1bZ\xc6\xd6\x87\xeeM:\x15\x06\xeddf\x0b\x92\x80\xcaD\xdes\x94N\xf3\xa7\x89\x7fOxc\x08\xc8\x12PmBf/M\xb9y(MR\x1a\x8a\x1a\x80\xb7\x19\x81\x0e~\xc4\x8a\xbcdL!\x1cCh\xd7=<\x8a\xc5\xb2f\xd5\x90\x9a\xb71\x06\xc5\xbe\xe2m2\x06\xa6\x1e\xf9\xb9\xeb\xaa\xa3\xb8\xbf\xbe\x82cP\xd0\xf0\x18\x89\xdf\xe4\x0fy\xf5\xea\xa2\x1f*\xd2p.{\xe7\xbc\x93\xbbmS\xe2H|\x8c\x10\x078\xfff\xb2wa~\xe0\xea\x8c<\xaa\xb4\xa4\xf6\xf3\x95J\x12\x07m\xfd\x8c\xb2\x89\xcf\xd0\xa0aw\xc8Xt\xb0\xd4#:\xf7]:\xca\xa2\xdb\x9d\t\xde]D-\x90\xf1\x81\xcdW\x92\xfa~\xbcP\x04c4\xdfk\x93\x18\xbek6\xb29\xe4\xac$6\xb7\xf0\xef\xb6\x1c\x13W\x93\xb6\xde\xb2\xf8\xe2\x85\xb7s\xa2\xb85\xaaE\xf2\xe0\x9d6\xa1oT\x8a\xf1rVn.\x88\xc5QBD\x15\x94\xee\xa3\xc58\x96\x9bNNZ\x0bG\xf3\x066Iw0\xbcq7\xe5\xa6\xec!\x08u\xfc\xe6a\x16?w\xd5\xd9\x91\x97\x84\nl\xd4\x02Mt\xc0\x14\xed\xfd9\xfb\x83\xf2^\x14\xa1\x04\xb0\x0b\xe9\xfe\xee\x8f\xe1n\x0b\xb2\x08\xb3af\tj\xb1\x06:e\x96Y\xc0\xf05\xfd\xc9\xda(\x8d\x1a\x11\x87p\x81\n\xa8\x9au\x1d\x9e:\x86\x05\x00\x9e\xdb\x80\xd6%\xf9\xdc\x05\x9e\'YLv9[\xea\xf9\xa5\xa1\xd8\x83\x0f\xd1\xff\xdf0\x11\xf9\x85\xcf3H\xf5\xcamd\x14,zXO\xd3K\x08I\xc5\x95d\x1ac\x0ey=\xf5\xb3\x8c\xcaX\xad\x9cBEyn\x0e\x87\x19\\T\xb1e\xb6\xbf\x8c\x9b\xdc\x13\xe9\ro\xb8.\xdcgn\xc9\x8b\x11\xb5\x84\x14\x8a\x00\x19p\x83y\x91\x97\x91\xd4\x1a\'\xbf7\x1e2\x07\xd8\x14c<(L\xaf\x02\x03\x01\x00\x01", name_constraints: None @@ -820,7 +828,7 @@ * mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x100\x0e\x06\x03U\x04\x08\x13\x07Arizona1\x130\x11\x06\x03U\x04\x07\x13\nScottsdale1%0#\x06\x03U\x04\n\x13\x1cStarfield Technologies, Inc.1200\x06\x03U\x04\x03\x13)Starfield Root Certificate Authority - G2", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xbd\xed\xc1\x03\xfc\xf6\x8f\xfc\x02\xb1o[\x9fH\xd9\x9dy\xe2\xa2\xb7\x03aV\x18\xc3G\xb6\xd7\xca=5.\x89C\xf7\xa1i\x9b\xde\x8a\x1a\xfd\x13 \x9c\xb4Iw2)V\xfd\xb9\xec\x8c\xdd\"\xfar\xdc\'a\x97\xee\xf6Z\x84\xecn\x19\xb9\x89,\xdc\x84[\xd5t\xfbk_\xc5\x89\xa5\x10R\x89FU\xf4\xb8u\x1c\xe6\x7f\xe4T\xaeK\xf8UrW\x02\x19\xf8\x17qY\xeb\x1e(\x07t\xc5\x9dH\xbel\xb4\xf4\xa4\xb0\xf3d7y\x92\xc0\xecF^\x7f\xe1mSLb\xaf\xcd\x1f\x0bc\xbb:\x9d\xfb\xfcy\x00\x98at\xcf&\x82@c\xf3\xb2rj\x19\r\x99\xca\xd4\x0eu\xcc7\xfb\x8b\x89\xc1Y\xf1b\x7f_\xb3_e0\xf8\xa7\xb7MvZ\x1ev^4\xc0\xe8\x96V\x99\x8a\xb3\xf0\x7f\xa4\xcd\xbd\xdc21|\x91\xcf\xe0_\x11\xf8k\xaaI\\\xd1\x99\x94\xd1\xa2\xe3c[\tv\xb5Vb\xe1Kt\x1d\x96\xd4&\xd4\x08\x04Y\xd0\x98\x0e\x0e\xe6\xde\xfc\xc3\xec\x1f\x90\xf1\x02\x03\x01\x00\x01", name_constraints: None @@ -868,7 +876,7 @@ * d9qDRIueVSjAi1jTkD5OGwDxFa2DK5o= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02TN1705\x06\x03U\x04\n\x0c.Agence Nationale de Certification Electronique1\x190\x17\x06\x03U\x04\x03\x0c\x10TunTrust Root CA", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xc3\xcd\xd3\xfc\xbd\x04S\xdd\x0c :\xd5\x88.\x05KA\xf5\x83\x82~\xf7Y\x9f\x9e\x9ec\xe8s\xda\xf6\x06\xa9O\x1f\xb4\xf9\x0b\x1f9\x8c\x9a \xd0~\x06\xd4\xec4\xd9\x86\xbcu[\x87\x88\xf0\xd2\xd9\xd4\xa3\n\xb2l\x1b\xebI,>\xac]\xd8\x94\x03\xa0\xec4\xe50\xc45}\xfb&M\x1bn0T\xd8\xf5\x80E\x9c9\xad\x9c\xc9%\x04M\x9a\x90>N@n\x8ak\xcd)g\xc6\xcc-\xe0t\xe8\x05W\nHP\xfazC\xda~\xec[\x9a\x0ebv\xfe\xea\x9d\x1d\x85r\xec\x11\xbb5\xe8\x1f\'\xbf\xc1\xa1\xc7\xbbH\x16\xddV\xd7\xccN\xa0\xe1\xb9\xac\xdb\xd5\x83\x19\x1a\x85\xd1\x94\x97\xd7\xca\xa3e\x0b\xf38\xf9\x02\xae\xdd\xf6g\xcf\xc9?\xf5\x8a,G\x1a\x99o\x05\r\xfd\xd0\x1d\x821\xfc)\xcc\x00X\x97\x91L\x80\x00\x1c3\x85\x96/\xcbA\xc2\x8b\x10\x84\xc3\t$\x89\x1f\xb5\x0f\xd9\xd9wG\x18\x92\x94`\\\xc7\x99\x03<\xfe\xf7\x95\xa7}P\xa1\x80\xc2\xa9\x83\xadX\x96U!\xdb\x86Y\xd4\xaf\xc6\xbc\xdd\x81n\x07\xdb`b\xfe\xec\x10n\xdah\x01\xf4\x83\x1b\xa9>\xa2[#\xd7d\xc6\xdf\xdc\xa2}\xd8K\xba\x82\xd2Q\xf8f\xbf\x06F\xe4y*&6y\x8f\x1fN\x99\x1d\xb2\x8f\x0c\x0e\x1c\xff\xc9]\xc0\xfd\x90\x10\xa6\xb17\xf3\xcd:$n\xb4\x85\x90\xbf\x80\xb9\x0c\x8c\xd5\x9b\xd6\xc8\xf1V?\x1a\x80\x89z\xa9\xe2\x1b2Q,>\xf2\xdf{\xf6]z)\x19\x8e\xe5\xc8\xbd6q\x8b]L\xc2\x1d?\xadX\xa2\xcf=pM\xa6P\x98%\xdc#\xf9\xb8XA\x08q\xbfO\xb8\x84\xa0\x8f\x00T\x15\xfc\x91mX\xa7\x96;\xebK\x96\'\xcdk\xa2\xa1\x86\xac\r|T\xe6fLf_\x90\xbe!\x9a\x02F-\xe4\x83\xc2\x80\xb9\xcfK>\xe8\x7f<\x01\xec\x8f^\xcd\x7f\xd2(B\x01\x95\x8a\xe2\x97=\x10!}\xf6\x9d\x1c\xc54\xa1\xec,\x0e\nR,\x12Up$=\xcb\xc2\x145C]\'N\xbe\xc0\xbd\xaa|\x96\xe7\xfc\x9ea\xadD\xd3\x00\x97\x02\x03\x01\x00\x01", name_constraints: None @@ -917,7 +925,7 @@ * mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x0e0\x0c\x06\x03U\x04\x08\x0c\x05Texas1\x100\x0e\x06\x03U\x04\x07\x0c\x07Houston1\x180\x16\x06\x03U\x04\n\x0c\x0fSSL Corporation1705\x06\x03U\x04\x03\x0c.SSL.com EV Root Certification Authority RSA R2", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\x8f6e@\xe1\xd6M\xc0\xd7\xb4\xe9F\xdak\xea3G\xcdL\xf9}}\xbe\xbd-=\xf0\xdbx\xe1\x86\xa5\xd9\xba\tWh\xedW>\xa0\xd0\x08A\x83\xe7(A$\x1f\xe3r\x15\xd0\x01\x1a\xfb^p#\xb2\xcb\x9f9\xe3\xcf\xc5N\xc6\x92m&\xc6{\xbb\xb3\xda\'\x9d\n\x86\xe9\x817\x05\xfe\xf0qq\xec\xc3\x1c\xe9c\xa2\x17\x14\x9d\xef\x1bg\xd3\x85U\x02\x02\xd6I\xc9\xccZ\xe1\xb1\xf7o2\x9f\xc9\xd4;\x88A\xa8\x9c\xbd\xcb\xab\xdbm{\t\x1f\xa2Lr\x90\xda+\x08\xfc\xcf\x07\xa2\xa3\x05&\x11i\x97\xea\x85\xb7\x0f\x96\x0bK\xc8@\xe1P\xba.\x8a\xcb\xf7\x0f\x9a\"\xe7\x7f\x9a7\x13\xcd\xf2M\x13k!\xd1\xc0\xcc\"\xf2\xa1F\xf6Di\x9c\xcaa5\x07\x00o\xd6a\x08\x11\xea\xba\xb8\xf6\xe9\xb3`\xe5M\xb9\xec\x9f\x14f\xc9WX\xdb\xcd\x87i\xf8\x8a\x86\x12\x03G\xbff\x13v\xacw}4$\x85\x83\xcd\xd7\xaa\x9c\x90\x1a\x9f!,\x7fx\xb7d\xb8\xd8\xe8\xa6\xf4x\xb3U\xcb\x84\xd22\xc4x\xae\xa3\x8fa\xdd\xce\x08S\xad\xec\x88\xfc\x15\xe4\x9a\r\xe6\x9f\x1aw\xceL\x8f\xb8\x14\x15=b\x9c\x868\x06\x00f\x12\xe4YvZS\xc0\x02\x98\xa2\x10+hD{\x8ey\xce3Jv\xaa[\x81\x16\x1b\xb5\x8a\xd8\xd0\x00{^b\xb4\t\xd6\x86c\x0e\xa6\x05\x95I\xba(\x8b\x88\x93\xb24\x1c\xd8\xa4Un\xb7\x1c\xd0\xde\x99U;#\xf4\"\xe0\xf9)f&\xec Pw\xdbJ\x0b\x8f\xbe\xe5\x02`pA^\xd4\xaeP9\"\x14&\xcb\xb2;stUG\x07y\x819\xa80\x13D\xe5\x04\x8a\xae\x96\x13%B\x0f\xb9S\xc4\x9b\xfc\xcd\xe4\x1c\xde<\xfa\xab\xd6\x06J\x1fg\xa6\x980\x1c\xdd,\xdb\xdc\x18\x95Wf\xc6\xff\\\x8bV\xf5w\x02\x03\x01\x00\x01", name_constraints: None @@ -963,7 +971,7 @@ * 8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x120\x10\x06\x03U\x04\n\x13\tIdenTrust1*0(\x06\x03U\x04\x03\x13!IdenTrust Public Sector Root CA 1", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xb6\"\x94\xfc\xa4H\xaf\xe8Gk\n\xfb\'v\xe4\xf2?\x8a;zJ,1*\x8c\x8d\xb0\xa9\xc31k\xa8wv\x84&\xb6\xac\x81B\r\x08\xebUX\xbbz\xf8\xbce}\xf2\xa0m\x8b\xa8G\xe9bv\x1e\x11\xee\x08\x14\xd1\xb2D\x16\xf4\xea\xd0\xfa\x1e/^\xdb\xcbsA\xae\xbc\x00\xb0J+@\xb2\xac\xe1;K\xc2-\x9d\xe4\xa1\x9b\xec\x1a:\x1e\xf0\x08\xb3\xd0\xe4$5\x07\x9f\x9c\xb4\xc9Rm\xdb\x07\xca\x8f\xb5[\xf0\x83\xf3O\xc7-\xa5\xc8\xad\xcb\x95 \xa41(WXZ\xe4\x8d\x1b\x9a\xab\x9e\r\x0c\xf2\n39\"9\n\x97.\xf3Sw\xb9DE\xfd\x84\xcb6 \x81Y-\x9aomHHa\xcaL\xdfS\xd1\xafR\xbcD\x9f\xab/k\x83r\xefu\x80\xda\x063\x1b]\xc8\xdac\xc6M\xcd\xacf1\xcd\xd1\xde>\x87\x106\xe1\xb9\xa4z\xef`P\xb2\xcb\xca\xa6V\xe07\xaf\xab4\x139%\xe89f\xe4\x98z\xaa\x12\x98\x9cYf\x86>\xad\xf1\xb0\xca>\x06\x0f{\xf0\x11K7\xa0Dm{\xcb\xa8\x8cq\xf4\xd5\xb5\x916\xcc\xf0\x15\xc6+\xdeQ\x17\xb1\x97LP=\xb1\x95Y|\x05}-!\xd5\x00\xbf\x01g\xa2^{\xa6\\\xf2\xf7\"\xf1\x90\r\x93\xdb\xaaDQf\xcc}v\x03\xebj\xa8*8\x19\x97v\rk\x8aa\xf9\xbc\xf6\xeev\xfdp+\xdd)<\xf8\n\x1e[B\x1c\x8bV/U\x1b\x1c\xa1.\xb5\xc7\x16\xe6\xf8\xaa<\x92\x8ei\xb6\x01\xc1\xb5\x86\x9d\x89\x0f\x0b8\x94T\xe8\xea\xdc\x9e=%\xbcS&\xed\xd5\xab9\xaa\xc5@LT\xab\xb2\xb4\xd9\xd9\xf8\xd7r\xdb\x1c\xbcm\xbde_\xef\x885*f/\xee\xf6\xb3e\xf03\x8d|\x98AiF\x0fC\x1ci\xfa\x9b\xb5\xd0aj\xcd\xcaK\xd9L\x90F\xab\x15Y\xa1GT).\x83(_\x1c\xc2\xa2\xabr\x17\x00\x06\x8eE\xec\x8b\xe23=\x7f\xda\x19D\xe4br\xc3\xdf\"\xc6\xf2V\xd4\xdd_\x95r\xedm_\xf7H\x03[\xfd\xc5*\xa0\xf6s#\x84\x10\x1b\x01\xe7\x02\x03\x01\x00\x01", name_constraints: None @@ -992,7 +1000,7 @@ * GJTO * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02CN1\x1c0\x1a\x06\x03U\x04\n\x13\x13iTrusChina Co.,Ltd.1\x1a0\x18\x06\x03U\x04\x03\x13\x11vTrus ECC Root CA", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04ePJ\xae\x8cy\x96J\xaa\x1c\x08\xc3\xa3\xa2\xcd\xfeYVAw\xfd&\x94B\xbb\x1d\xcd\x08\xdbs\xb2[u\xf3\xcf\x9cN\x82\xf4\xbf\xf8a&\x85l\xd6\x85[rp\xd2\xfd\xdbb\xb4\xdfS\x8b\xbd\xb1DXbB\t\xc7\xfa\x7f[\x10\xe7\xfe@\xfd\xc0\xd8\xc3+2\xe7p\xa6\xb7\xa6 U\x1d{\x80]K\x8fgL\xf1\x10", name_constraints: None @@ -1022,7 +1030,7 @@ * sycX * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x150\x13\x06\x03U\x04\n\x13\x0cDigiCert Inc1\x190\x17\x06\x03U\x04\x0b\x13\x10www.digicert.com1 0\x1e\x06\x03U\x04\x03\x13\x17DigiCert Global Root G3", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\xdd\xa7\xd9\xbb\x8a\xb8\x0b\xfb\x0b\x7f!\xd2\xf0\xbe\xbes\xf33]\x1a\xbc4\xea\xde\xc6\x9b\xbc\xd0\x95\xf6\xf0\xcc\xd0\x0b\xbaa[QF~\x9e-\x9f\xee\x8ec\x0c\x17\xec\x07p\xf5\xcf\x84.@\x83\x9c\xe8?Am;\xad\xd3\xa4\x14Y6x\x9d\x03C\xee\x10\x13lr\xde\xae\x88\xa7\xa1k\xb5C\xceg\xdc#\xff\x03\x1c\xa3\xe2>", name_constraints: None @@ -1053,7 +1061,7 @@ * gA0z5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x0e0\x0c\x06\x03U\x04\x08\x0c\x05Texas1\x100\x0e\x06\x03U\x04\x07\x0c\x07Houston1\x180\x16\x06\x03U\x04\n\x0c\x0fSSL Corporation110/\x06\x03U\x04\x03\x0c(SSL.com Root Certification Authority ECC", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04En\xa9P\xc4\xa6#6\x9e_(\x8d\x17\xcb\x96\"d?\xdcz\x8e\x1d\xcc\x08\xb3\xa2q$\xba\x8eI\xb9\x04\x1bG\x96X\xab-\x95\xc8\xed\x9e\x085\xc8\'\xeb\x89\x8cSX\xebb\x8a\xfe\xf0[\x0fk1RcA;\x89\xcd\xec\xec\xb6\x8d\x19\xd34\x07\xdc\xbb\xc6\x06\x7f\xc2E\x95\xec\xcb\x7f\xa8#\xe0\t\xe9\x81\xfa\xf3G\xd3", name_constraints: None @@ -1081,7 +1089,7 @@ * p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh4rsUecrNIdSUtUlD * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\"0 \x06\x03U\x04\n\x13\x19Google Trust Services LLC1\x140\x12\x06\x03U\x04\x03\x13\x0bGTS Root R4", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\xf3ts\xa7h\x8b`\xaeC\xb85\xc5\x810{KI\x9d\xfb\xc1a\xce\xe6\xdeF\xbdk\xd5a\x185\xae@\xdds\xf7\x89\x910Z\xeb<\xee\x85|\xa2@v;\xa9\xc6\xb8G\xd8*\xe7\x92\x91js\xe9\xb1r9\x9f)\x9f\xa2\x98\xd3_^X\x86e\x0f\xa1\x84e\x06\xd1\xdc\x8b\xc9\xc7s\xc8\x8cj/\xe5\xc4\xab\xd1\x1d\x8a", name_constraints: None @@ -1109,7 +1117,7 @@ * ZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV11RZt+cRLInUue4X * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\"0 \x06\x03U\x04\n\x13\x19Google Trust Services LLC1\x140\x12\x06\x03U\x04\x03\x13\x0bGTS Root R3", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\x1fO3\x873)\x8a\xa1\x84\xde\xcb\xc7!XA\x89\xeaV\x9d+K\x85\xc6\x1dL\'\xbc\x7f&Qro\xe2\x9f\xd6\xa3\xca\xccE\x14F\x8b\xad\xef~\x86\x8c\xec\xb1~/\xff\xa9q\x9d\x18\x84E\x04AUn+\xea&\x7f\xbb\x90\x01\xe3K\x19\xba\xe4T\x96E\t\xb1\xd5l\x91D\xad\x84\x13\x8e\x9a\x8c\r\x80\x0c2\xf6\xe0\'", name_constraints: None @@ -1139,7 +1147,7 @@ * iudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x1e0\x1c\x06\x03U\x04\n\x13\x15Microsoft Corporation1604\x06\x03U\x04\x03\x13-Microsoft ECC Root Certificate Authority 2017", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\xd4\xbc=\x02BuA\x13#\xcd\x80\x04\x86\x02Q/j\xa8\x81b\x0be\xcc\xf6\xca\x9d\x1eoJfQ\xa2\x03\xd9\x9d\x91\xfa\xb6\x16\xb1\x8cn\xde|\xcd\xdby\xa6/\xce\xbb\xceq/\xe5\xa5\xab(\xecc\x04f\x99\xf8\xfa\xf2\x93\x10\x05\xe1\x81(B\xe3\xc6h\xf4\xe6\x1b\x84`J\x89\xaf\xedy\x0f;\xce\xf1\xf6D\xf5\x01x\xc0", name_constraints: None @@ -1185,7 +1193,7 @@ * ovfepEWFJqgejF0pW8hL2JpqA15w8oVPbEtoL8pU9ozaMv7Da4M/OMZ+ * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x170\x15\x06\x03U\x04\n\x13\x0eDigiCert, Inc.1%0#\x06\x03U\x04\x03\x13\x1cDigiCert TLS RSA4096 Root G5", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xb3\xd0\xf4\xc9y\x11\x9d\xfd\xfcf\x81\xe7\xcc\xd5\xe4\xbc\xec\x81>j5\x8e.\xb7\xe7\xde\xaf\xf9\x07M\xcf0\x9d\xea\t\x0b\x99\xbdlW\xda\x18J\xb8x\xac:9\xa8\xa6H\xac.r\xe5\xbd\xeb\xf1\x1a\xcd\xe7\xa4\x03\xa9?\x11\xb4\xd8/\x89\x16\xfb\x94\x01=\xbb/\xf8\x13\x05\xa1x\x1c\x8e(\xe0E\xe0\x83\xf4Y\x1b\x95\xb3\xae~\x03E\xe5\xbe\xc2B\xfe\xee\xf2<\xb6\x85\x13\x982\x9d\x16\xa8)\xc2\x0b\x1c8\xdc\x9f1w\\\xbf\'\xa3\xfc\'\xac\xb7+\xbdt\x9b\x17-\xf2\x81\xda]\xb0\xe1#\x17>\x88J\x12#\xd0\xea\xcf\x9d\xde\x03\x17\xb1BJ\xa0\x16L\xa4m\x93\xe9?:\xee:|\x9dX\x9d\xf4N\x8f\xfc;#\xc8m\xb8\xe2\x05\xda\xcc\xeb\xec\xc31\xf4\xd7\xa7)T\x80\xcfD[Lo0\x9e\xf3\xcc\xdd\x1f\x94C\x9dM\x7fpp\r\xd4:\xd17\xf0l\x9d\x9b\xc0\x14\x93X\xef\xcdA8u\xbc\x13\x03\x95|\x7f\xe3\\\xe9\xd5\r\xd5\xe2|\x10b\xaak\xf0=v\xf3?\xa3\xe8\xb0\xc1\xfd\xef\xaaWM\xac\x86\xa7\x18\xb4)\xc1,\x0e\xbfd\xbe)\x8c\xd8\x02-\xcd\\/\xf2\x7f\xef\x15\xf4\x0c\x15\xac\n\xb0\xf1\xd3\rOjMw\x97\x01\xa0\xf1f\xb7\xb7\xce\xef\xce\xec\xec\xa5u\xca\xac\xe3\xe1c\xf7\xb8\xa1\x04\xc8\xbc{?]-\x16\"V\xedHI\xfe\xa7/y0%\x9b\xbak-?\x9d;\xc4\x17\xe7\x1d.\xfb\xf2\xcf\xa6\xfc\xe3\x14,\x96\x98!\x8c\xb4\x91\xe9\x19`\x83\xf20+\x06sP\xd5\x98;\x06\xe9\xc7\x8a\x0c`\x8c(\xf8R\x9bn\xe1\xf6M\xbb\x06$\x9b\xd7+&?\xfd*/q\xf5\xd6$\xbe\x7f1\x9e\x0fm\xe8\x8fOM\xa3?\xff5\xea\xdfI^A\x8f\x86\xf9\xf1wyK\x1b\xb4\xa3^/\xfbF\x02\xd0f\x13^^\x85O\xce\xd8p\x88{\xce\x01\xb5\x96\x97\xd7\xcd}\xfd\x82\xf8\xc2$\xc1\xca\x019O\x8d\xa2\xc1\x14@\x1f\x9cf\xd5\x0c\tF\xd6\xf2\xd0\xd1HvV:C\xcb\xb6\n\x119\xba\x8c\x13l\x06\xb5\x9e\xcf\xeb\x02\x03\x01\x00\x01", name_constraints: None @@ -1224,7 +1232,7 @@ * HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02HU1\x110\x0f\x06\x03U\x04\x07\x0c\x08Budapest1\x160\x14\x06\x03U\x04\n\x0c\rMicrosec Ltd.1\'0%\x06\x03U\x04\x03\x0c\x1eMicrosec e-Szigno Root CA 20091\x1f0\x1d\x06\t*\x86H\x86\xf7\r\x01\t\x01\x16\x10info@e-szigno.hu", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xe9\xf8\x8f\xf3c\xad\xda\x86\xd8\xa7\xe0B\xfb\xcf\x91\xde\xa6&\xf8\x99\xa5cp\xad\x9b\xae\xca3@}m\x96n\xa1\x0eD\xee\xe1\x13\x9d\x94BR\x9a\xbdu\x85t,\xa8\x0e\x1d\x93\xb6\x18\xb7\x8c,\xa8\xcf\xfb\\q\xb9\xda\xec\xfe\xe8~\x8f\xe4/\x1d\xb2\xa8u\x87\xd8\xb7\xa1\xe5;\xcf\x99JF\xd0\x83\x19}\xc0\xa1\x12\x1c\x95mJ\xf4\xd8\xc7\xa5M3.\x859@u~\x14|\x80\x12\x98P\xc7Ag\xb8\xa0\x80aT\xa6lN\x1f\xe0\x9d\x0e\x07\xe9\xc9\xba3\xe7\xfe\xc0U(,\x02\x80\xa7\x19\xf5\x9e\xdcUS\x03\x97{\x07H\xff\x99\xfb7\x8a$\xc4Y\xccP\x10c\x8e\xaa\xa9\x1a\xb0\x84\x1a\x86\xf9_\xbb\xb1Pn\xa4\xd1\n\xcc\xd5q~\x1f\xa7\x1b|\xf5Sn\"_\xcb+\xe6\xd4|]\xae\xd6\xc2\xc6L\xe5\x05\x01\xd9\xedW\xfc\xc1#y\xfc\xfa\xc8$\x83\x95\xf3\xb5jQ\x01\xd0w\xd6\xe9\x12\xa1\xf9\x1a\x83\xfb\x82\x1b\xb9\xb0\x97\xf4v\x063CI\xa0\xff\x0b\xb5\xfa\xb5\x02\x03\x01\x00\x01", name_constraints: None @@ -1261,7 +1269,7 @@ * +o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x150\x13\x06\x03U\x04\n\x13\x0cDigiCert Inc1\x190\x17\x06\x03U\x04\x0b\x13\x10www.digicert.com1$0\"\x06\x03U\x04\x03\x13\x1bDigiCert Assured ID Root CA", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xad\x0e\x15\xce\xe4C\x80\\\xb1\x87\xf3\xb7`\xf9q\x12\xa5\xae\xdc&\x94\x88\xaa\xf4\xce\xf5 9(X`\x0c\xf8\x80\xda\xa9\x15\x952a<\xb5\xb1(\x84\x8a\x8a\xdc\x9f\n\x0c\x83\x17z\x8f\x90\xac\x8a\xe7yS\\1\x84*\xf6\x0f\x9826v\xcc\xde\xdd<\xa8\xa2\xefj\xfb!\xf2Ra\xdf\x9f \xd7\x1f\xe2\xb1\xd9\xfe\x18d\xd2\x12[_\xf9X\x185\xbcG\xcd\xa16\xf9k\x7f\xd4\xb08>\xc1\x1b\xc3\x8c3\xd9\xd8/\x18\xfe(\x0f\xb3\xa7\x83\xd6\xc3nD\xc0a5\x96\x16\xfeY\x9c\x8bvm\xd7\xf1\xa2K\r+\xff\x0br\xda\x9e`\xd0\x8e\x905\xc6xU\x87 \xa1\xcf\xe5m\n\xc8I|1\x983l\"\xe9\x87\xd02Z\xa2\xba\x13\x82\x11\xed9\x17\x9d\x99:r\xa1\xe6\xfa\xa4\xd9\xd5\x171u\xae\x85}\"\xae?\x01F\x86\xf6(y\xc8\xb1\xda\xe4W\x17\xc4~\x1c\x0e\xb0\xb4\x92\xa6V\xb3\xbd\xb2\x97\xed\xaa\xa7\xf0\xb7\xc5\xa8?\x95\x16\xd0\xff\xa1\x96\xeb\x08_\x18wO\x02\x03\x01\x00\x01", name_constraints: None @@ -1291,7 +1299,7 @@ * nxS2PFOiTAZpffpskcYqSUXm7LcT4Tps * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02GR1705\x06\x03U\x04\n\x0c.Hellenic Academic and Research Institutions CA1$0\"\x06\x03U\x04\x03\x0c\x1bHARICA TLS ECC Root CA 2021", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x048\x08\xfe\xb1\xa0\x96\xd2z\xac\xafI:\xd0\xc0\xe0\xc3;(\xaa\xf1rme\x00G\x88\x84\xfc\x9a&k\xaaK\xbal\x04\n\x88^\x17\xf2U\x87\xfc0\xb04\xe24XW\x1a\x84S\xe90\xd9\xa9\xf2\x96t\xc3Q\x1fXI1\xcc\x98N`\x11\x87u\xd3r\x94\x90O\x9b\x10%*\xa8x-\xbe\x90AX\x90\x15r\xa7\xa1\xb7", name_constraints: None @@ -1328,7 +1336,7 @@ * iN66zB+Afko= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02IN1\x130\x11\x06\x03U\x04\x0b\x13\nemSign PKI1%0#\x06\x03U\x04\n\x13\x1ceMudhra Technologies Limited1\x1c0\x1a\x06\x03U\x04\x03\x13\x13emSign Root CA - G1", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\x93K\xbb\xe9f\x8a\xee\x9d[\xd54\x93\xd0\x1b\x1e\xc3\xe7\x9e\xb8d3\x7fcxh\xb4\xcd.qu\xd7\x9b \xc6M)\xbc\xb6h`\x8a\xf7!\x9aV5Z\xf3v\xbd\xd8\xcd\x9a\xff\x93VK\xa5Y\x06\xa1\x934)\xdd\x164uN\xf2\x81\xb4\xc7\x96N\xad\x19\x15RJ\xfe5\xe7\xa2\xb7\xc2b\xe2\xab\xa48L\xb595o\xea\x03i\xfa:Th\x85m\xd6\xf2/CU\x1e\x91\r\x0e\xd8\xd5j\xa4\x96\xd1\x13<,xP\xe8:\x92\xd2\x17V\xe55\x1a@\x1c>\x8d,\xed9\xdfB\xe0\x83At\xdf\xa3\xcd\xc2\x86`Hh\xe3i\x0bT\x00\x8b\xe4vi!\ryN4\x08^\x14\xc2\xcc\xb1\xb7\xad\xd7|p\x8a\xc7\x85\x02\x03\x01\x00\x01", name_constraints: None @@ -1365,7 +1373,7 @@ * f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1 0\x1e\x06\x03U\x04\n\x13\x17SecureTrust Corporation1\x190\x17\x06\x03U\x04\x03\x13\x10Secure Global CA", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xaf5.\xd8\xaclUi\x06q\xe5\x13h$\xb3O\xd8\xcc!G\xf8\xf1`8\x89\x89\x03\xe9\xbd\xea^FS\t\xdc\\\xf5Z\xe8\xf7E*\x02\xeb1a\xd7)3L\xce\xc7|\n7~\x0f\xba2\x98\xe1\x1d\x97\xaf\x8f\xc7\xdc\xc98\x96\xf3\xdb\x1a\xfcQ\xedh\xc6\xd0n\xa4|$\xd1\xaeB\xc8\x96Pc.\xe0\xfeu\xfe\x98\xa7_I.\x95\xe393d\x8e\x1e\xa4_\x90\xd2g<\xb2\xd9\xfeA\xb9U\xa7\t\x8er\x05\x1e\x8b\xddD\x85\x82B\xd0I\xc0\x1d`\xf0\xd1\x17,\x95\xeb\xf6\xa5\xc1\x92\xa3\xc5\xc2\xa7\x08`\r`\x04\x10\x96y\x9e\x164\xe6\xa9\xb6\xfa%E9\xc8\x1ee\xf9\x93\xf5\xaa\xf1R\xdc\x99\x98=\xa5\x86\x1a\x0c53\xfaK\xa5\x04\x06\x15\x1c1\x80\xef\xaa\x18k\xc2{\xd7\xda\xce\xf93 \xd5\xf5\xbdj3-\x81\x04\xfb\xb0\\\xd4\x9c\xa3\xe2\\\x1d\xe3\xa9Bu^{\xd4w\xef9T\xba\xc9\n\x18\x1b\x12\x99I/\x88K\xfdPb\xd1s\xe7\x8fzC\x02\x03\x01\x00\x01", name_constraints: None @@ -1402,7 +1410,7 @@ * CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x150\x13\x06\x03U\x04\n\x13\x0cDigiCert Inc1\x190\x17\x06\x03U\x04\x0b\x13\x10www.digicert.com1 0\x1e\x06\x03U\x04\x03\x13\x17DigiCert Global Root CA", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xe2;\xe1\x11r\xde\xa8\xa4\xd3\xa3W\xaaP\xa2\x8f\x0bw\x90\xc9\xa2\xa5\xee\x12\xce\x96[\x01\t \xcc\x01\x93\xa7N0\xb7S\xf7C\xc4i\x00W\x9d\xe2\x8d\"\xdd\x87\x06@\x00\x81\t\xce\xce\x1b\x83\xbf\xdf\xcd;qF\xe2\xd6f\xc7\x05\xb3v\'\x16\x8f{\x9e\x1e\x95}\xee\xb7H\xa3\x08\xda\xd6\xafz\x0c9\x06e\x7fJ]\x1f\xbc\x17\xf8\xab\xbe\xee(\xd7t\x7fzx\x99Y\x85hn\\#2K\xbfN\xc0\xe8Zm\xe3p\xbfw\x10\xbf\xfc\x01\xf6\x85\xd9\xa8D\x10X2\xa9u\x18\xd5\xd1\xa2\xbeG\xe2\'j\xf4\x9a3\xf8I\x08`\x8b\xd4_\xb4:\x84\xbf\xa1\xaaJL}>\xcfO_lv^\xa0K7\x91\x9e\xdc\"\xe6m\xce\x14\x1a\x8ej\xcb\xfe\xcd\xb3\x14d\x17\xc7[)\x9e2\xbf\xf2\xee\xfa\xd3\x0bB\xd4\xab\xb7A2\xda\x0c\xd4\xef\xf8\x81\xd5\xbb\x8dX?\xb5\x1b\xe8I(\xa2p\xda1\x04\xdd\xf7\xb2\x16\xf2L\nN\x07\xa8\xedJ=^\xb5\x7f\xa3\x90\xc3\xaf\'\x02\x03\x01\x00\x01", name_constraints: None @@ -1442,7 +1450,7 @@ * VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x160\x14\x06\x03U\x04\n\x13\rEntrust, Inc.1(0&\x06\x03U\x04\x0b\x13\x1fSee www.entrust.net/legal-terms1907\x06\x03U\x04\x0b\x130(c) 2009 Entrust, Inc. - for authorized use only1200\x06\x03U\x04\x03\x13)Entrust Root Certification Authority - G2", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xba\x84\xb6r\xdb\x9e\x0ck\xe2\x99\xe90\x01\xa7v\xea2\xb8\x95A\x1a\xc9\xdaaNXr\xcf\xfe\xf6\x82y\xbfsa\x06\n\xa5\'\xd8\xb3_\xd3EN\x1cr\xd6N2\xf2r\x8a\x0f\xf7\x83\x19\xd0j\x80\x80\x00E\x1e\xb0\xc7\xe7\x9a\xbf\x12W\'\x1c\xa3h/\n\x87\xbdjk\x0e^e\xf3\x1cw\xd5\xd4\x85\x8dp!\xb4\xb32\xe7\x8b\xa2\xd5\x869\x02\xb1\xb8\xd2G\xce\xe4\xc9I\xc4;\xa7\xde\xfbT}W\xbe\xf0\xe8n\xc2y\xb2:\x0bU\xe2P\x98\x162\x13\\/xV\xc1\xc2\x94\xb3\xf2Z\xe4\'\x9a\x9f$\xd7\xc6\xec\xd0\x9b%\x82\xe3\xcc\xc2\xc4E\xc5\x8c\x97z\x06k*\x11\x9f\xa9\nnH;o\xdb\xd4\x11\x19B\xf7\x8f\x07\xbf\xf5S_\x9c>\xf4\x17,\xe6i\xacN2Lbw\xea\xb7\xe8\xe5\xbb4\xbc\x19\x8b\xae\x9cQ\xe7\xb7~\xb5S\xb13\"\xe5m\xcfp<\x1a\xfa\xe2\x9bg\xb6\x83\xf4\x8d\xa5\xafbLM\xe0X\xacd4\x12\x03\xf8\xb6\x8d\x94c$\xa4q\x02\x03\x01\x00\x01", name_constraints: None @@ -1474,7 +1482,7 @@ * TUwJCA3sS61kFyjndc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02GR1\x0f0\r\x06\x03U\x04\x07\x13\x06Athens1D0B\x06\x03U\x04\n\x13;Hellenic Academic and Research Institutions Cert. Authority1D0B\x06\x03U\x04\x03\x13;Hellenic Academic and Research Institutions ECC RootCA 2015", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\x92\xa0A\xe8K\x82\x84\\\xe2\xf81\x11\x99\x86dN\t%/\x9dA/\n\xae5Ot\x95\xb2Qdk\x8dk\xe6?p\x95\xf0\x05DG\xa6r8Pv\x95\x02Z\x8e\xae(\x9e\xf9-N\x99\xef,HoL%)\xe8\xd1q[\xdf\x1d\xc1u7\xb4\xd7\xfa{zB\x9cj\nVZ|i\x0b\xaa\x80\t$l~\xc1F", name_constraints: None @@ -1512,7 +1520,7 @@ * 4uJEvlz36hz1 * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x100\x0e\x06\x03U\x04\x08\x13\x07Arizona1\x130\x11\x06\x03U\x04\x07\x13\nScottsdale1\x1a0\x18\x06\x03U\x04\n\x13\x11GoDaddy.com, Inc.110/\x06\x03U\x04\x03\x13(Go Daddy Root Certificate Authority - G2", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xbfqb\x08\xf1\xfaY4\xf7\x1b\xc9\x18\xa3\xf7\x80IX\xe9\"\x83\x13\xa6\xc5 C\x01;\x84\xf1\xe6\x85I\x9f\'\xea\xf6\x84\x1bN\xa0\xb4\xdbp\x98\xc72\x01\xb1\x05>\x07N\xee\xf4\xfaO/Y0\"\xe7\xab\x19Vk\xe2\x80\x07\xfc\xf3\x16u\x809Q{\xe5\xf95\xb6tN\xa9\x8d\x82\x13\xe4\xb6?\xa9\x03\x83\xfa\xa2\xbe\x8a\x15j\x7f\xde\x0b\xc3\xb6\x19\x14\x05\xca\xea\xc3\xa8\x04\x94;F|2\r\xf3\x00f\"\xc8\x8dim6\x8c\x11\x18\xb7\xd3\xb2\x1c`\xb48\xfa\x02\x8c\xce\xd3\xddF\x07\xde\n>\xeb]|\xc8|\xfb\xb0+S\xa4\x92biQ%\x05a\x1aD\x81\x8c,\xa9C\x96#\xdf\xac:\x81\x9a\x0e)\xc5\x1c\xa9\xe9]\x1e\xb6\x9e\x9e0\n9\xce\xf1\x88\x80\xfbK]\xcc2\xec\x85bC%4\x02V\'\x01\x91\xb4;p*?n\xb1\xe8\x9c\x88\x01}\x9f\xd4\xf9\xdbSm`\x9d\xbf,\xe7X\xab\xb8_F\xfc\xce\xc4\x1b\x03<\t\xebI1\\iF\xb3\xe0G\x02\x03\x01\x00\x01", name_constraints: None @@ -1553,10 +1561,10 @@ * lo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02TR1\x180\x16\x06\x03U\x04\x07\x13\x0fGebze - Kocaeli1B0@\x06\x03U\x04\n\x139Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK1-0+\x06\x03U\x04\x0b\x13$Kamu Sertifikasyon Merkezi - Kamu SM1604\x06\x03U\x04\x03\x13-TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xafu03\xaa\xbbk\xd3\x99,\x127\x84\xd9\x8d{\x97\x80\xd3n\xe7\xff\x9bP\x95>\x90\x95VB\xd7\x19|&\x84\x8d\x92\xfa\x01\x1d:\x0f\xe2d8\xb7\x8c\xbc\xe8\x88\xf9\x8b$\xab.\xa3\xf57\xe4@\x8e\x18%y\x83u\x1f;\xffl\xa8\xc5\xc6V\xf8\xb4\xed\x8aD\xa3\xablL\xfc\x1d\xd0\xdc\xefh\xbd\xcf\xe4\xaa\xce\xf0U\xf7\xa24\xd4\x83k7|\x1c\xc2\xfe\xb5\x03\xecW\xce\xbc\xb4\xb5\xc5\xed\x00\x0fS7*M\xf4O\x0c\x83\xfb\x86\xcf\xcb\xfe\x8cN\xbd\x87\xf9\xa7\x8b!W\x9cz\xdf\x03g\x89,\x9d\x97a\xa7\x10\xb8U\x90\x7f\x0e-\'8t\xdf\xe7\xfd\xdaN\x12\xe3M\x15\"\x02\xc8\xe0\xe0\xfc\x0f\xad\x8a\xd7\xc9TP\xcc;\x0f\xca\x16\x80\x84\xd0QV\xc3\x8eV\x7f\x89\"3/\xe6\x85\n\xbd\xa5\xa8\x1b6\xde\xd3\xdc,m;\xc7\x13\xbdY#,\xe6\xe5\xa4\xf7\xd8\x0b\xed\xea\x90@D\xa8\x95\xbb\x93\xd5\xd0\x804\xb6Fx\x0e\x1f\x00\x93F\xe1\xee\xe9\xf9\xecO\x17\x02\x03\x01\x00\x01", - name_constraints: Some(b"\xa0g0e\xa0c0\t\x82\x07.gov.tr0\t\x82\x07.k12.tr0\t\x82\x07.pol.tr0\t\x82\x07.mil.tr0\t\x82\x07.tsk.tr0\t\x82\x07.kep.tr0\t\x82\x07.bel.tr0\t\x82\x07.edu.tr0\t\x82\x07.org.tr") + name_constraints: Some(b"\xa0\x070\x05\x82\x03.tr") }, /* @@ -1593,7 +1601,7 @@ * Johw1+qRzT65ysCQblrGXnRl11z+o+I= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02DE1\x150\x13\x06\x03U\x04\n\x0c\x0cD-Trust GmbH1\'0%\x06\x03U\x04\x03\x0c\x1eD-TRUST Root Class 3 CA 2 2009", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xd3\xb2J\xcfzG\xefu\x9b#\xfa:/\xd6PE\x895:\xc6k\xdb\xfe\xdb\x00h\xa8\xe0\x03\x11\x1d7P\x08\x9fMJh\x945\xb3S\xd1\x94c\xa7 V\xaf\xdeQx\xec*=\xf3HHP>\n\xdfFU\x8b\'m\xc3\x10M\r\x91RC\xd8\x87\xe0]N6\xb5!\xca_9@\x04_[~\xcc\xa3\xc6+\xa9@\x1e\xd96\x84\xd6H\xf3\x92\x1e4F $\xc1\xa4Q\x8eJ\x1a\xefP?i]\x19\x7fE\xc3\xc7\x01\x8fQ\xc9#\xe8r\xae\xb4\xbcV\t\x7f\x12\xcb\x1c\xb1\xaf)\x90\n\xc9U\xcc\x0f\xd3\xb4\x1a\xedG5ZJ\xed\x9cs\x04!\xd0\xaa\xbd\x0c\x13\xb5\x00\xca&l\xc4k\x0c\x94Z\x95\x94\xdaP\x9a\xf1\xff\xa5+f1\xa4\xc98\xa0\xdf\x1d\x1f\xb8\t.\xf3\xa7\xe8gR\xab\x95\x1f\xe0F>\xd8\xa4\xc3\xcaZ\xc51\x80\xe8H\x9a\x9f\x94i\xfe\x19\xdd\xd8s|\x81\xca\x96\xde\x8e\xed\xb32\x05e\x844\xe6\xe6\xfdW\x10\xb5_v\xbf/\xb0\x10\r\xc5\x02\x03\x01\x00\x01", name_constraints: None @@ -1639,7 +1647,7 @@ * vouXsXgxT7PntgMTzlSdriVZzH81Xwj3QEUxeCp6 * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02BE1\x190\x17\x06\x03U\x04\n\x13\x10GlobalSign nv-sa1\x1c0\x1a\x06\x03U\x04\x03\x13\x13GlobalSign Root R46", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xac\xact2\xe8\xb3e\xe5\xba\xedC&\x1d\xa6\x89\rE\xba)\x88\xb2\xa4\x1dc\xdd\xd3\xc1,\tW\x899\xa1U\xe9g4w\x0cn\xe4U\x1dR%\xd2\x13k^\xe1\x1d\xa9\xb7}\x892_\r\x9e\x9f,zc`@\x1f\xa6\xb0\xb6x\x8f\x99T\x96\x08X\xae\xe4\x06\xbcb\x05\x02\x16\xbf\xaf\xa8#\x03\xb6\x94\x0f\xbcnl\xc2\xcb\xd5\xa6\xbb\x0c\xe9\xf6\xc1\x02\xfb!\xdef\xdd\x17\xabtB\xef\xf0t/%\xf4\xeakU[\x90\xdb\x9d\xdf^\x87\n@\xfb\xad\x19k\xfb\xf7\xca`\x88\xde\xda\xc1\x8f\xd6\xae\xd5\x7f\xd4<\x83\xee\xd7\x16L\x83E3k\'\xd0\x86\xd0\x1c-k\xf3\xab}\xf1\x85\xa9\xf5(\xd2\xad\xef\xf3\x84K\x1c\x87\xfc\x13\xa3:r\xa2Z\x11+\xd6\'q\'\xed\x81-mf\x81\x92\x87\xb4\x1bXz\xcc?\n\xfaFOMx\\\xf8+H\xe3\x04\x84\xcb]\xf6\xb4j\xb3e\xfcB\x9eQ&# \xcb=\x14\xf9\x81\xede\x16\x00O\x1ad\x97f\x08\xcf\x8c{\xe3+\xc0\x9d\xf9\x14\xf2\x1b\xf1Vj\x16\xbf,\x85\x85\xcdx8\x9a\xebBj\x024\x18\x83\x17N\x94V\xf8\xb6\x82\xb5\xf3\x96\xdd=\xf3\xbe\x7f w>{\x19#k,\xd4rsCW}\xe0\xf8\xd7iO\x176\x04\xf9\xc0\x90`7E\xde\xe6\x0c\xd8t\x8d\xae\x9c\xa2mt]B\xbe\x06\xf5\xd9dn\x02\x10\xac\x89\xb0L;\x07M@~$\xc5\x8a\x98\x82y\x8e\xa4\xa7\x82 \x8d#\xfa\'q\xc9\xdf\xc6At\xa0M\xf6\x91\x16\xdcF\x8c_)c1Yq\x0c\xd8o\xc2\xb62}\xfb\xe6]S\xa6~\x15\xfc\xbbu|]\xec\xf8\xf6\x17\x1c\xec\xc7k\x19\xcb\xf3{\xf0+\x07\xa5\xd9lyTvl\x9d\x1c\xa6n\x0e\xe9y\x0c\xa8#j\xa3\xdf\x1b01\x9f\xb1T{\xfej\xcbf\xaa\xdce\xd0\xa2\x9eJ\x9a\x07!k\x81\x8f\xdb\xc4Y\xfa\xde\"\xc0\x04\x9c\xe3\xaa[6\x93\xe8=\xbdz\xa1\x9d\x0bv\xb1\x0b\xc7\x9d\xfd\xcf\x98\xa8\x06\xc2\xf8*\xa3\xa1\x83\xa0\xb7%r\xa5\x02\xe3\x02\x03\x01\x00\x01", name_constraints: None @@ -1670,7 +1678,7 @@ * RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\x08\x13\nNew Jersey1\x140\x12\x06\x03U\x04\x07\x13\x0bJersey City1\x1e0\x1c\x06\x03U\x04\n\x13\x15The USERTRUST Network1.0,\x06\x03U\x04\x03\x13%USERTrust ECC Certification Authority", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\x1a\xacTZ\xa9\xf9h#\xe7z\xd5$oS\xc6Z\xd8K\xab\xc6\xd5\xb6\xd1\xe6sq\xae\xdd\x9c\xd6\x0ca\xfd\xdb\xa0\x89\x03\xb8\x05\x14\xecW\xce\xee]?\xe2!\xb3\xce\xf7\xd4\x8ay\xe0\xa3\x83~-\x97\xd0a\xc4\xf1\x99\xdc%\x91c\xab\x7f0\xa3\xb4p\xe2\xc7\xa13\x9c\xf3\xbf.\\S\xb1_\xb3}2\x7f\x8a4\xe3yy", name_constraints: None @@ -1706,7 +1714,7 @@ * SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02JP1%0#\x06\x03U\x04\n\x13\x1cSECOM Trust Systems CO.,LTD.1\'0%\x06\x03U\x04\x0b\x13\x1eSecurity Communication RootCA2", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xd0\x159R\xb1R\xb3\xba\xc5Y\x82\xc4]R\xae:Ce\x80K\xc7\xf2\x96\xbc\xdb6\x97\xd6\xa6d\x8c\xa8^\xf0\xe3\n\x1c\xf7\xdf\x97=K\xae\xf6]\xec!\xb5A\xab\xcd\xb9~v\x9f\xbe\xf9>64\xa0;\xc1\xf61\x11Et\x93=W\x80\xc5\xf9\x89\x99\xca\xe5\xabj\xd4\xb5\xdaA\x90\x10\xc1\xd6\xd6B\x89\xc2\xbf\xf48\x12\x95LT\x05\xf76\xe4E\x83{\x14e\xd6\xdc\x0cM\xd1\xde~\x0c\xab;\xc4\x15\xbe:V\xa6ZoviR\xa9z\xb9\xc8\xebj\x9a]R\xd0-\nk5\x16\t\x10\x84\xd0j\xca:\x06\x007G\xe4~WO?\x8b\xebg\xb8\x88\xaa\xc5\xbeSU\xb2\x91\xc4}\xb9\xb0\x85\x19\x06x.\xdba\x1a\xfa\x85\xf5J\x91\xa1\xe7\x16\xd5\x8e\xa29\xdf\x94\xb8p\x1f(?\x8b\xfc@^c\x83<\x83*\x1a\x99k\xcf\xdeYj;\xfco\x16\xd7\x1f\xfdJ\x10\xebN\x82\x16:\xac\'\x0cS\xf1\xad\xd5$\xb0k\x03P\xc1-<\x16\xddD4\'\x1au\xfb\x02\x03\x01\x00\x01", name_constraints: None @@ -1755,7 +1763,7 @@ * NVOFBkpdn627G190 * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02GB1\x1b0\x19\x06\x03U\x04\x08\x13\x12Greater Manchester1\x100\x0e\x06\x03U\x04\x07\x13\x07Salford1\x1a0\x18\x06\x03U\x04\n\x13\x11COMODO CA Limited1+0)\x06\x03U\x04\x03\x13\"COMODO RSA Certification Authority", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\x91\xe8T\x92\xd2\nV\xb1\xac\r$\xdd\xc5\xcfDgt\x99+7\xa3}#p\x00q\xbcS\xdf\xc4\xfa*\x12\x8fK\x7f\x10V\xbd\x9fpr\xb7a\x7f\xc9K\x0f\x17\xa7=\xe3\xb0\x04a\xee\xff\x11\x97\xc7\xf4\x86>\n\xfa>\\\xf9\x93\xe64z\xd9\x14k\xe7\x9c\xb3\x85\xa0\x82zv\xafq\x90\xd7\xec\xfd\r\xfa\x9cl\xfa\xdf\xb0\x82\xf4\x14~\xf9\xbe\xc4\xa6/O\x7f\x99\x7f\xb5\xfcgCr\xbd\x0c\x00\xd6\x89\xebk,\xd3\xed\x8f\x98\x1c\x14\xab~\xe5\xe3n\xfc\xd8\xa8\xe4\x92$\xdaCkb\xb8U\xfd\xea\xc1\xbcl\xb6\x8b\xf3\x0e\x8d\x9a\xe4\x9bli\x99\xf8xH0E\xd5\xad\xe1\r\x99\xfa\x95\x17\xda|3WA<\x8dQ\xed\x0b\xb6\\\xaf,c\x1a\xdfW\xc8?\xbc\xe9]\xc4\x9b\xafE\x99\xe2\xa3Z$\xb4\xba\xa9V=\xcfo\xaa\xffIX\xbe\xf0\xa8\xff\xf4\xb8\xad\xe97\xfb\xba\xb8\xf4\x0b:\xf9\xe8CB\x1e\x89\xd8\x84\xcb\x13\xf1\xd9\xbb\xe1\x89`\xb8\x8c(V\xac\x14\x1d\x9c\n\xe7q\xeb\xcf\x0e\xdd=\xa9\x96\xa1H\xbd<\xf7\xaf\xb5\r\"L\xc0\x11\x81\xecV;\xf6\xd3\xa2\xe2[\xb7\xb2\x04\"R\x95\x80\x93i\xe8\x8eLe\xf1\x91\x03-pt\x02\xea\x8bg\x15)iR\x02\xbb\xd7\xdfPjUF\xbf\xa0\xa3(a\x7fp\xd0\xc3\xa2\xaa,!\xaaG\xce(\x9c\x06Ev\xbf\x82\x18\'\xb4\xd5\xae\xb4\xcbP\xe6k\xf4L\x86q0\xe9\xa6\xdf\x16\x86\xe0\xd8\xff@\xdd\xfb\xd0B\x88\x7f\xa33:.\\\x1eA\x11\x81c\xce\x18qk+\xec\xa6\x8a\xb71\\:jG\xe0\xc3yY\xd6 \x1a\xaf\xf2j\x98\xaar\xbcWJ\xd2K\x9d\xbb\x10\xfc\xb0LA\xe5\xed\x1d=^(\x9d\x9c\xcc\xbf\xb3Q\xda\xa7G\xe5\x84S\x02\x03\x01\x00\x01", name_constraints: None @@ -1802,7 +1810,7 @@ * gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+ * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x150\x13\x06\x03U\x04\n\x13\x0cDigiCert Inc1\x190\x17\x06\x03U\x04\x0b\x13\x10www.digicert.com1!0\x1f\x06\x03U\x04\x03\x13\x18DigiCert Trusted Root G4", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xbf\xe6\x90sh\xde\xbb\xe4]J<0\"0i3\xec\xc2\xa7%.\xc9!=\xf2\x8a\xd8Y\xc2\xe1)\xa7=X\xabv\x9a\xcd\xae{\x1b\x84\r\xc40\x1f\xf3\x1b\xa48\x16\xebV\xc6\x97m\x1d\xab\xb2y\xf2\xca\x11\xd2\xe4_\xd6\x05\x10\x91p\xabU\x82A2\xd7\xdb\x04s*n\x91\x01|!L\xd4\xbc\xae\x1b\x03u]xf\xd9:1D\x9a3@\xbf\x08\xd7ZI\xa4\xc2\xe6\xa9\xa0g\xdd\xa4\'\xbc\xa1O9\xb5\x11X\x17\xf7$\\F\x8fd\xf7\xc1i\x88v\x98v=Y]Bv\x87\x89\x97izH\xf0\xe0\xa2\x12\x1bf\x9at\xca\xdeK\x1e\xe7\x0ec\xae\xe6\xd4\xef\x92\x92:\x9e=\xdc\x00\xe4E%\x89\xb6\x9aD\x19+~\xc0\x94\xb4\xd2am\xeb3\xd9\xc5\xdfK\x04\x00\xcc}\x1c\x95\xc3\x8f\xf7!\xb2\xb2\x11\xb7\xbb\x7f\xf2\xd5\x8cp,A`\xaa\xb1c\x18D\x95\x1avb~\xf6\x80\xb0\xfb\xe8d\xa63\xd1\x89\x07\xe1\xbd\xb7\xe6C\xa4\x18\xb8\xa6w\x01\xe1\x0f\x94\x0c!\x1d\xb2T)%\x89l\xe5\x0eRQGt\xbe&\xac\xb6Au\xdez\xac_\x8d?\xc9\xbc\xd3A\x11\x12[\xe5\x10P\xeb1\xc5\xcar\x16\"\t\xdf|Lu?c\xec!_\xc4 Qko\xb1\xab\x86\x8bO\xc2\xd6E_\x9d \xfc\xa1\x1e\xc5\xc0\x8f\xa2\xb1~\n&\x99\xf5\xe4i/\x98\x1d-\xf5\xd9\xa9\xb2\x1d\xe5\x1b\x02\x03\x01\x00\x01", name_constraints: None @@ -1833,7 +1841,7 @@ * v+c= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02ES1\x110\x0f\x06\x03U\x04\n\x0c\x08FNMT-RCM1\x0e0\x0c\x06\x03U\x04\x0b\x0c\x05Ceres1\x180\x16\x06\x03U\x04a\x0c\x0fVATES-Q2826004J1,0*\x06\x03U\x04\x03\x0c#AC RAIZ FNMT-RCM SERVIDORES SEGUROS", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\xf6\xbaWS\xc8\xca\xab\xdf6JR!\xe4\x97\xd2\x83g\x9e\xf0eQ\xd0^\x87\xc7G\xb1Y\xf2WG\x9b\x00\x02\x93D\x17i\xdbB\xc7\xb1\xb2:\x18\x0e\xb4]\x8c\xb3f]\xa14\xf96,I\xdb\xf3F\xfc\xb3DiD\x13f\xfd\xd7\xc5\xfd\xaf6M\xce\x03M\x07q\xcf\xafj\x05\xd2\xa2CZ\nRo\x01\x03N\x8e\x8b", name_constraints: None @@ -1865,7 +1873,7 @@ * Sw== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x110\x0f\x06\x03U\x04\x08\x13\x08Illinois1\x100\x0e\x06\x03U\x04\x07\x13\x07Chicago1!0\x1f\x06\x03U\x04\n\x13\x18Trustwave Holdings, Inc.1:08\x06\x03U\x04\x03\x131Trustwave Global ECC P384 Certification Authority", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04k\xda\ru5\x081G\x05\xaeE\x99U\xf1\x11\x13.J\xf8\x101#\xa3~\x83\xd3\x7f(\x08:&\x1a:\xcf\x97\x82\x1f\x80\xb7\'\t\x8f\xd1\x8e0\xc4\n\x9b\x0e\xacX\x04\xab\xf76}\x94#\xa4\x9b\n\x8a\x8b\xab\xeb\xfd9%f\xf1^\xfe\x8c\xae\x8dAy\x9d\t`\xce(\xa9\xd3\x8am\xf3\xd6E\xd4\xf2\x98\x848e\xa0", name_constraints: None @@ -1913,7 +1921,7 @@ * LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02IT1\x0e0\x0c\x06\x03U\x04\x07\x0c\x05Milan1#0!\x06\x03U\x04\n\x0c\x1aActalis S.p.A./033585209671\'0%\x06\x03U\x04\x03\x0c\x1eActalis Authentication Root CA", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xa7\xc6\xc4\xa5)\xa4,\xef\xe5\x18\xc5\xb0P\xa3oQ;\x9f\nZ\xc9\xc2H8\n\xc2\x1c\xa0\x18\x7f\x91\xb5\x87\xb9@?\xdd\x1dh\x1f\x08\x83\xd5-\x1e\x88\xa0\xf8\x8fV\x8fm\x99\x02\x92\x90\x16\xd5_\x08l\x89\xd7\xe1\xac\xbc \xc2\xb1\xe0\x83Q\x8aiM\x00\x96Zo/\xc0D~\xa3\x0e\xe4\x91\xcdX\xee\xdc\xfb\xc7\x1eEG\xdd\'\xb9\x08\x01\x9f\xa6!\x1d\xf5A-/L\xfd(\xad\xe0\x8a\xad\"\xb4Ve\x8e\x86T\x8f\x93C)\xde9Fx\xa30#\xba\xcd\xf0}\x13W\xc0]\xd2\x83kHL\xc4\xab\x9f\x80Z[:\xbd\xc9\xa7\"?\x80\'3[\x0e\xb7\x8a\x0c]\x077\x08\xcbl\xd2zG\"D5\xc5\xcc\xcc.\x8e\xdd*\xed\xb7}f\r_aQ\"U\x1b\xe3F\xe3\xe3=\xd05b\x9a\xdb\xaf\x14\xc8[\xa1\xcc\x89\x1b\xe10&\xfc\xa0\x9b\x1f\x81\xa7G\x1f\x04\xeb\xa39\x92\x06\x9f\x99\xd3\xbf\xd3\xeaOP\x9c\x19\xfe\x96\x87\x1e\xa8:v$O\x81!\xc5\xe3\x0f\x02\xf8\x93\x94G \xbb\xfe\xd4\x0e\xd3h\xb9\xdd\xc4z\x84\x82\xe3STy\xdd\xdb\x9c\xd2\xf2\x07\x9b.\xb6\xbc>\xed\x85m\xef%\x11\xf2\x97\x1aBa\xf7J\x97\xe8\x8b\xb1\x10\x07\xfae\x81\xb2\xa29\xcf\xf7<\xff\x18\xfb\xc6\xf1Z\x8bY\xe2\x02\xac{\x92\xd0N\x14OYE\xf6\x0c^(_\xb0\xe8?E\xcf\xcf\xaf\x9bo\xfb\x84\xd3wZ\x95o\xac\x94\x84\x9e\xee\xbc\xc0J\x8fJ\x93\xf8D!\xe21EaPN\x10\xd8\xe35|L\x19\xb4\xde\x05\xbf\xa3\x06\x9f\xc8\xb5\xcd\xe4\x1f\xd7\x17\x06\rz\x95tU\rh\x1a\xfc\x10\x1bbd\x9dm\xe0\x95\xa0\xc3\x94\x07W\r\x14\xe6\xbd\x05\xfb\xb8\x9f\xe6\xdf\x8b\xe2\xc6\xe7~\x96\xf6S\xc5\x804P(X\xf0\x12Pq\x170\xba\xe6xc\xbc\xf4\xb2\xad\x9b+\xb2\xfe\xe19\x8c^\xba\x0b \x94\xde{\x83\xb8\xff\xe3V\x8d\xb7\x11\xe9;\x8c\xf2\xb1\xc1]\x9d\xa4\x0bL+\xd9\xb2\x18\xf5\xb5\x9fK\x02\x03\x01\x00\x01", name_constraints: None @@ -1952,13 +1960,42 @@ * sSi6 * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x100\x0e\x06\x03U\x04\x08\x13\x07Arizona1\x130\x11\x06\x03U\x04\x07\x13\nScottsdale1%0#\x06\x03U\x04\n\x13\x1cStarfield Technologies, Inc.1;09\x06\x03U\x04\x03\x132Starfield Services Root Certificate Authority - G2", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xd5\x0c:\xc4*\xf9N\xe2\xf5\xbe\x19\x97_\x8e\x88S\xb1\x1f?\xcb\xcf\x9f \x13m):\xc8\x0f}<\xf7kv8c\xd96`\xa8\x9b^\\\x00\x80\xb2/Y\x7f\xf6\x87\xf9%C\x86\xe7i\x1bR\x9a\x90\xe1q\xe3\xd8-\rNo\xf6\xc8I\xd9\xb6\xf3\x1aV\xae+\xb6t\x14\xeb\xcf\xfb&\xe3\x1a\xba\x1d\x96.j;X\x94\x89GV\xff%\xa0\x93pS\x83\xda\x84t\x14\xc3g\x9e\x04h:\xdf\x8e@Z\x1dJN\xcfC\x91;\xe7V\xd6\x00p\xcbR\xee{}\xae:\xe7\xbc1\xf9E\xf6\xc2`\xcf\x13Y\x02+\x80\xcc4G\xdf\xb9\xde\x90em\x02\xcf,\x91\xa6\xa6\xe7\xde\x85\x18I|fN\xa3:m\xa9\xb5\xee4.\xba\r\x03\xb83\xdfG\xeb\xb1k\x8d%\xd9\x9b\xce\x81\xd1EF2\x96p\x87\xde\x02\x0eIC\x85\xb6ls\xbbd\xeaaA\xac\xc9\xd4T\xdf\x87/\xc7\"\xb2&\xcc\x9fYTh\x9f\xfc\xbe*/\xc4U\x1cu@`\x17\x85\x02U9\x8b\x7f\x05\x02\x03\x01\x00\x01", name_constraints: None }, /* + * Issuer: CN=BJCA Global Root CA2 O=BEIJING CERTIFICATE AUTHORITY + * Subject: CN=BJCA Global Root CA2 O=BEIJING CERTIFICATE AUTHORITY + * Label: "BJCA Global Root CA2" + * Serial: 58605626836079930195615843123109055211 + * MD5 Fingerprint: 5e:0a:f6:47:5f:a6:14:e8:11:01:95:3f:4d:01:eb:3c + * SHA1 Fingerprint: f4:27:86:eb:6e:b8:6d:88:31:67:02:fb:ba:66:a4:53:00:aa:7a:a6 + * SHA256 Fingerprint: 57:4d:f6:93:1e:27:80:39:66:7b:72:0a:fd:c1:60:0f:c2:7e:b6:6d:d3:09:29:79:fb:73:85:64:87:21:28:82 + * -----BEGIN CERTIFICATE----- + * MIICJTCCAaugAwIBAgIQLBcIfWQqwP6FGFkGz7RK6zAKBggqhkjOPQQDAzBUMQsw + * CQYDVQQGEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJ + * VFkxHTAbBgNVBAMMFEJKQ0EgR2xvYmFsIFJvb3QgQ0EyMB4XDTE5MTIxOTAzMTgy + * MVoXDTQ0MTIxMjAzMTgyMVowVDELMAkGA1UEBhMCQ04xJjAkBgNVBAoMHUJFSUpJ + * TkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRCSkNBIEdsb2JhbCBS + * b290IENBMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABJ3LgJGNU2e1uVCxA/jlSR9B + * IgmwUVJY1is0j8USRhTFiy8shP8sbqjV8QnjAyEUxEM9fMEsxEtqSs3ph+B99iK+ + * +kpRuDCK/eHeGBIK9ke35xe/J4rUQUyWPGCWwf0VHKNCMEAwHQYDVR0OBBYEFNJK + * sVF/BvDRgh9Obl+rg/xI1LCRMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD + * AgEGMAoGCCqGSM49BAMDA2gAMGUCMBq8W9f+qdJUDkpd0m2xQNz0Q9XSSpkZElaA + * 94M04TVOSG0ED1cxMDAtsaqdAzjbBgIxAMvMh1PLet8gUXOQwKhbYdDFUDn9hf7B + * 43j4ptZLvZuHjw/l1lOWqzzIQNph91Oj9w== + * -----END CERTIFICATE----- + */ + TrustAnchor { + subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02CN1&0$\x06\x03U\x04\n\x0c\x1dBEIJING CERTIFICATE AUTHORITY1\x1d0\x1b\x06\x03U\x04\x03\x0c\x14BJCA Global Root CA2", + spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\x9d\xcb\x80\x91\x8dSg\xb5\xb9P\xb1\x03\xf8\xe5I\x1fA\"\t\xb0QRX\xd6+4\x8f\xc5\x12F\x14\xc5\x8b/,\x84\xff,n\xa8\xd5\xf1\t\xe3\x03!\x14\xc4C=|\xc1,\xc4KjJ\xcd\xe9\x87\xe0}\xf6\"\xbe\xfaJQ\xb80\x8a\xfd\xe1\xde\x18\x12\n\xf6G\xb7\xe7\x17\xbf\'\x8a\xd4AL\x96<`\x96\xc1\xfd\x15\x1c", + name_constraints: None + }, + + /* * Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 * Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 * Label: "Autoridad de Certificacion Firmaprofesional CIF A62634068" @@ -2002,7 +2039,7 @@ * GbqEZycPvEJdvSRUDewdcAZfpLz6IHxV * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02ES1B0@\x06\x03U\x04\x03\x0c9Autoridad de Certificacion Firmaprofesional CIF A62634068", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xca\x96k\x8e\xea\xf8\xfb\xf1\xa25\xe0\x7fL\xda\xe0\xc3R\xd7}\xb6\x10\xc8\x02^\xb3C*\xc4Oj\xb2\xca\x1c](\x9ax\x11\x1aiYW\xaf\xb5 B\xe4\x8b\x0f\xe6\xdf[\xa6\x03\x92/\xf5\x11\xe4b\xd72q8\xd9\x04\x0cq\xab=Q~\x0f\x07\xdfc\x05\\\xe9\xbf\x94o\xc1)\x82\xc0\xb4\xdaQ\xb0\xc1<\xbb\xad7J\\\xca\xf1K6\x0e$\xab\xbf\xc3\x84w\xfd\xa8P\xf4\xb1\xe7\xc6/\xd2-Y\x8dz\nN\x96iR\x02\xaa6\x98\xec\xfc\xfa\x14\x83\x0c7\x1f\xc9\x927\x7f\xd7\x81-\xe5\xc4\xb9\xe0>4\xfeg\xf4>f\xd1\xd3\xf4@\xcf^b4\x0fp\x06> \x18Z\xce\xf7r\x1b%l\x93t\x14\x93\xa3s\xb1\x0e\xaa\x87\x10#Y_ \x05\x19G\xedh\x8e\x92\x12\xca]\xfc\xd6+\xb2\x92< \xcf\xe1_\xaf \xbe\xa0v\x7fv\xe5\xec\x1a\x86a3>\xe7{\xb4?\xa0\x0f\x8e\xa2\xb9jo\xb9\x87&oAl\x88\xa6P\xfdjc\x0b\xf5\x93\x16\x1b\x19\x8f\xb2\xed\x9b\x9b\xc9\x90\xf5\x01\x0c\xdf\x19=\x0f>8#\xc9/\x8f\x0c\xd1\x02\xfe\x1bU\xd6N\xd0\x8d<\xafO\xa4\xf3\xfe\xaf*\xd3\x05\x9dy\x08\xa1\xcbW1\xb4\x9c\xc8\x90\xb2g\xf4\x18\x16\x93:\xfcG\xd8\xd1x\x961\x1f\xba+\x0c_]\x99\xadc\x89Z$ v\xd8\xdf\xfd\xabN\xa6\"\xaa\x9d^\xe6\'\x8a}h)\xa3\xe7\x8a\xb8\xda\x11\xbb\x17-\x99\x9d\x13$F\xf7\xc5\xe2\xd8\x9f\x8e\x7f\xc7\x8ftmZ\xb2\xe8r\xf5\xac\xee$\x10\xad/\x14\xda\xff-\x9aFqG\xbeB\xdf\xbb\x01\xdb\xf4\x7f\xd3(\x8f1Y[\xd3\xc9\x02\xa6\xb4R\xcan\x97\xfbC\xc5\x08&o\x8a\xf4\xbb\xfd\x9f(\xaa\r\xd5E\xf3\x13:\x1d\xd8\xc0x\x8fAg<\x1e\x94d\xae{\x0b\xc5\xe8\xd9\x01\x889\x1a\x97\x86dA\xd5;\x87\x0cn\xfa\x0f\xc6\xbdH\x14\xbf9M\xd4\x9eA\xb6\x8f\x96\x1dc\x96\x93\xd9\x95\x06x1h\x9e7\x06;\x80\x89Ea9#\xc7\x1bD\xa3\x15\xe5\x1c\xf8\x920\xbb\x02\x03\x01\x00\x01", name_constraints: None @@ -2048,7 +2085,7 @@ * KwbQBM0= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02TW1\x120\x10\x06\x03U\x04\n\x13\tTAIWAN-CA1\x100\x0e\x06\x03U\x04\x0b\x13\x07Root CA1\x1c0\x1a\x06\x03U\x04\x03\x13\x13TWCA Global Root CA", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xb0\x05\xdb\xc8\xeb\x8c\xc4n\x8a!\xef\x8eM\x9cq\n\x1fRp\xedm\x82\x9c\x97\xc5\xd7LNEI\xcb@B\xb5\x124l\x19\xc2t\xa41_\x85\x02\x97\xecC3\nS\xd2\x9c\x8c\x8e\xb7\xb8y\xdb+\xd5j\xf2\x8ef\xc4\xee+\x01\x07\x92\xd4\xb3\xd0\x02\xdfP\xf6U\xaff\x0e\xcb\xe0G`/+295R:(\x83\xf8{\x16\xc6\x18\xb8b\xd6G%\x91\xce\xf0\x19\x12M\xadc\xf5\xd3?u_)\xf0\xa10\x1c*\xa0\x98\xa6\x15\xbd\xee\xfd\x196\xf0\xe2\x91C\x8f\xfa\xca\xd6\x10\'IL\xef\xdd\xc1\xf1\x85p\x9b\xca\xea\xa8ZC\xfcm\x86os\xe97E\xa9\xf06\xc7\xcc\x88u\x1e\xbbl\x06\xff\x9bk>\x17\xeca\xaaq|\xc6\x1d\xa2\xf7I\xe9\x15\xb5<\xd6\xa1a\xf5\x11\xf7\x05o\x1d\xfd\x11\xbe\xd00\x07\xc2)\xb0\tN&\xdc\xe3\xa2\xa8\x91j\x1f\xc2\x91E\x88\\\xe5\x98\xb8q\xa5\x15\x19\xc9|u\x11\xccptO-\x9b\x1d\x91D\xfdV(\xa0\xfe\xbb\x86j\xc8\xfa\\\x0bX\xdc\xc6Kv\xc8\xab\"\xd9s\x0f\xa5\xf4Z\x02\x89?O\x9e\"\x82\xee\xa2tS*=S\'i\x1dl\x8e2,d\x00&ca6N\xa3F\xb7?}\xb3-\xacm\x90\xa2\x95\xa2\xce\xcf\xda\x82\xe7\x074\x19\x96\xe9\xb8!\xaa)~\xa68\xbe\x8e)J!fy\x1f\xb3\xc3\xb5\tg\xde\xd6\xd4\x07F\xf3*\xda\xe6\"7`\xcb\x81\xb6\x0f\xa0\x0f\xe9\xc8\x95\x7f\xbfU\x91\x05z\xcf=\x15\xc0o\xde\t\x94\x01\x83\xd74\x1b\xcc@\xa5\xf0\xb8\x9bg\xd5\x98\x91;\xa7\x84x\x95&\xa4Z\x08\xf8+t\xb4\x00\x04<\xdf\xb8\x14\x8e\xe8\xdf\xa9\x8dlg\x923\x1d\xc0\xb7\xd2\xec\x92\xc8\xbe\t\xbf,)\x05o\x02k\x9e\xef\xbc\xbf*\xbc[\xc0P\x8fApq\x87\xb2M\xb7\x04\xa9\x84\xa32\xaf\xae\xeek\x17\x8b\xb2\xb1\xfel\xe1\x90\x8c\x88\xa8\x97H\xce\xc8M\xcb\xf3\x06\xcf_j\nB\xb1\x1e\x1ew/\x8e\xa0\xe6\x92\x0e\x06\xfc\x05\"\xd2&\xe11Q}2\xdc\x0f\x02\x03\x01\x00\x01", name_constraints: None @@ -2097,7 +2134,7 @@ * mpv0 * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02HK1\x120\x10\x06\x03U\x04\x08\x13\tHong Kong1\x120\x10\x06\x03U\x04\x07\x13\tHong Kong1\x160\x14\x06\x03U\x04\n\x13\rHongkong Post1 0\x1e\x06\x03U\x04\x03\x13\x17Hongkong Post Root CA 3", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xb3\x88\xd7\xea\xce\x0f N\xbe\xe6\xd6\x03m\xeeY\xfc\xc2W\xdf)h\xa1\x83\x0e>h\xc7hX\x9c\x1c`K\x89C\x0c\xb9\xd4\x15\xb2\xee\xc1Nu\xe9\xb5\xa7\xef\xe5\xe95\x99\xe4\xcc\x1c\xe7K_\x8d30 3S\xd9\xa6\xbb\xd5>\x13\x8e\xe9\x1f\x87I\xadP-P\xca\x18\xbe\x01X\xa2\x13p\x96\xbb\x89\x88V\x80\\\xf8\xbd,<\xe1LW\x88\xbb\xd3\xb9\x95\xef\xcb\xc7\xf6\xda1t(\xa6\xe6T\x89\xf5A1\xca\xe5&\x1a\xcd\x82\xe0p\xda;)\xbb\xd5\x03\xf5\x99\xbaU\xf5d\xd1`\x0e\xb3\x89I\xb8\x8a/\x05\xd2\x84E(|\x8fhP\x12x\xfc\x0b\xb5S\xcb\xc2\x98\x1c\x84\xa3\x9e\xb0\xbe#\xa4\xda\xdc\xc8+\x1e\xdanE\x1e\x89\x98\xda\xf9\x00.\x06\xe9\x0c;p\xd5P%\x88\x99\xcb\xcds`\xf7\xd5\xff5g\xc5\xa1\xbc^\xab\xcdJ\xb8E\xeb\xc8h\x1e\r\r\x14F\x12\xe3\xd2db\x8aB\x98\xbc\xb4\xc6\x08\x08\xf8\xfd\xa8Ld\x9cv\x01\xbd/\xa9l3\x0f\xd8?(\xb8+\xe4i;\xffr%\xb16\x86[\xc7\x7fk\x8bU\x1bJ\xc5 a=\xae\xcbP\xe1\x08:\xbe\xb0\x8fcAS0\x08Y<\x98\x1dw\xbac\x91z\xca\x10P`\xbf\xf0\xd7\xbc\x95\x87\x8f\x97\xc5\xfe\x97j\x01\x94\xa3|[\x85\x1d*9:\xd0T\xa1\xd19q\x9d\xfd!\xf9\xb5{\xf0\xe2\xe0\x02\x8fn\x96$%,\xa0\x1e,\xa8\xc4\x89\xa7\xef\xed\x99\x06/\xb6\nLO\xdb\xa2\xcc7\x1a\xafG\x85-\x8a_\xc444L\x00\xfd\x18\x93g\x13\xd17\xe6H\xb4\x8b\x06\xc5W{\x19\x86\ny\xcb\x00\xc9R\xafB\xff7\x8f\xe1\xa3\x1ez=P\xabc\x06\xe7\x15\xb5?\xb6E7\x947\xb1~\xf2H\xc3\x7f\xc5u\xfe\x97\x8dE\x8f\x1a\xa7\x1ar(\x1a@\x0f\x02\x03\x01\x00\x01", name_constraints: None @@ -2134,7 +2171,7 @@ * 03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02PL1\"0 \x06\x03U\x04\n\x13\x19Unizeto Technologies S.A.1\'0%\x06\x03U\x04\x0b\x13\x1eCertum Certification Authority1\"0 \x06\x03U\x04\x03\x13\x19Certum Trusted Network CA", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xe3\xfb}\xa3r\xba\xc2\xf0\xc9\x14\x87\xf5k\x01N\xe1n@\x07\xbam\']\x7f\xf7[-\xb3Z\xc7Q_\xab\xa42\xa6a\x87\xb6n\x0f\x86\xd20\x02\x97\xf8\xd7iW\xa1\x189]jdy\xc6\x01Y\xac<1J8|\xd2\x04\xd2K(\xe8 _;\x07\xa2\xccMs\xdb\xf3\xaeO\xc7V\xd5Z\xa7\x96\x89\xfa\xf3\xabh\xd4#\x86Y\'\xcf\t\'\xbc\xacnr\x83\x1c0r\xdf\xe0\xa2\xe9\xd2\xe1tu\x19\xbd*\x9e{\x15T\x04\x1b\xd7C9\xadU(\xc5\xe2\x1a\xbb\xf4\xc0\xe4\xae8I3\xccv\x85\x9f9E\xd2\xa4\x9e\xf2\x12\x8cQ\xf8|\xe4-\x7f\xf5\xac_\xeb\x16\x9f\xb1-\xd1\xba\xcc\x91BwL%\xc9\x908o\xdb\xf0\xcc\xfb\x8e\x1e\x97Y>\xd5`N\xe6\x05(\xedIy\x13K\xbaH\xdb/\xf9r\xd39\xca\xfe\x1f\xd84r\xf5\xb4@\xcf1\x01\xc3\xec\xde\x11-\x17]\x1f\xb8P\xd1^\x19\xa7i\xde\x073(\xcaP\x95\xf9\xa7T\xcbT\x86PE\xa9\xf9I\x02\x03\x01\x00\x01", name_constraints: None @@ -2181,7 +2218,7 @@ * 5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02CN100.\x06\x03U\x04\n\x0c\'China Financial Certification Authority1\x150\x13\x06\x03U\x04\x03\x0c\x0cCFCA EV ROOT", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xd7]k\xcd\x10?\x1f\x05Y\xd5\x05M7\xb1\x0e\xec\x98+\x8e\x15\x1d\xfa\x93K\x17\x82!q\x10R\xd7Qdp\x16\xc2UiM\x8e\x15m\x9f\xbf\x0c\x1b\xc2\xe0\xa3g\xd6\x0c\xac\xcf\"\xae\xafwT*KL\x8aSRz\xc3\xee.\xde\xb3q%\xc1\xe9]=\xee\xa1/\xa3\xf7*<\xc9#\x1dj\xab\x1d\xa1\xa7\xf1\xf3\xec\xa0\xd5D\xcf\x15\xcfr/\x1dc\x97\xe8\x99\xf9\xfd\x93\xa4T\x80LR\xd4R\xab.I\xdf\x90\xcd\xb8_\xbe?\xde\xa1\xcaM \xd4%\xe8\x84)S\xb7\xb1\x88\x1f\xff\xfa\xda\x90\x9f\n\xa9-A?\xb1\xf1\x18)\xee\x16Y,4I\x1a\xa8\x06\xd7\xa8\x88\xd2\x03rz2\xe2\xeahMn,\x96e{\xcaY\xfa\xf2\xe2\xdd\xee0,\xfb\xccF\xac\xc4c\xebo\x7f6+4s\x12\x94\x7f\xdf\xcc&\x9e\xf1r]PeY\x8fi\xb3\x87^2o\xc3\x18\x8a\xb5\x95\x8f\xb0z7\xdeZE;\xc76\xe1\xefg\xd19\xd3\x97[sb\x19H-\x87\x1c\x06\xfbt\x98 Is\xf0\x05\xd2\x1b\xb1\xa0\xa3\xb7\x1bp\xd3\x88i\xb9Z\xd68\xf4b\xdc%\x8bx\xbf\xf8\xe8~\xb8\\\xc9\x95O_\xa7-\xb9 k\xcfk\xdd\xf5\r\xf4\x82\xb7\xf4\xb2f.\x10(\xf6\x97Z{\x96\x16\x8f\x01\x19-ln\x7f9X\x06d\x83\x01\x83\x83\xc3M\x92\xdd2\xc6\x87\xa47\xe9\x16\xce\xaa-h\xaf\n\x81e:p\xc1\x9b\xadMmT\xca*-K\x85\x1b\xb3\x80\xe6pE\rk^5\xf0\x7f;\xb8\x9c\xe4\x04p\x89\x12%\x93\xda\n\x99\"`jc`Nv\x06\x98N\xbd\x83\xad\x1dX\x8a%\x85\xd2\xc7e\x1e-\x8e\xc6\xdf\xb6\xc6\xe1\x7f\x8a\x04!\x15)t\xf0>\x9c\x90\x9d\x0c.\xf1\x8a>Z\xaa\x0c\t\x1e\xc7\xd5<\xa3\xed\x97\xc3\x1e4\xfa8\xf9\x08\x0e\xe3\xc0]+\x83\xd1Vj\xc9\xb6\xa8TS.x2g=\x82\x7ft\xd0\xfb\xe1\xb6\x05`\xb9p\xdb\x8e\x0b\xf9\x13Xoq`\x10R\x10\xb9\xc1A\t\xefr\x1fg1x\xff\x96\x05\x8d\x02\x03\x01\x00\x01", name_constraints: None @@ -2227,7 +2264,7 @@ * 7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x120\x10\x06\x03U\x04\n\x13\tIdenTrust1\'0%\x06\x03U\x04\x03\x13\x1eIdenTrust Commercial Root CA 1", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xa7P\x19\xde?\x99=\xd43F\xf1oQa\x82\xb2\xa9O\x8fg\x89]\x84\xd9S\xdd\x0c(\xd9\xd7\xf0\xff\xae\x95Cr\x99\xf9\xb5]|\x8a\xc1B\xe11Pt\xd1\x81\r|\xcd\x9b!\xabC\xe2\xac\xad^\x86n\xf3\t\x8a\x1fZ2\xbd\xa2\xeb\x94\xf9\xe8\\\n\xec\xff\x98\xd2\xafq\xb3\xb4S\x9fN\x87\xef\x92\xbc\xbd\xecO20\x88K\x17^W\xc4S\xc2\xf6\x02\x97\x8d\xd9b+\xbf$\x1fb\x8d\xdf\xc3\xb8)KIx<\x93`\x88\"\xfc\x99\xda6\xc8\xc2\xa2\xd4,T\x00g5ns\xbf\x02X\xf0\xa4\xdd\xe5\xb0\xa2&z\xca\xe06\xa5\x19\x16\xf5\xfd\xb7\xef\xae?@\xf5mZ\x04\xfd\xce4\xca$\xdct#\x1b]3\x13\x12]\xc4\x01%\xf60\xdd\x02]\x9f\xe0\xd5G\xbd\xb4\xeb\x1b\xa1\xbbII\xd8\x9f[\x02\xf3\x8a\xe4$\x90\xe4bOO\xc1\xaf\x8b\x0et\x17\xa8\xd1r\x88jz\x01I\xcc\xb4Fy\xc6\x17\xb1\xda\x98\x1e\x07Y\xfau!\x85e\xdd\x90V\xce\xfb\xab\xa5`\x9d\xc4\x9d\xf9R\xb0\x8b\xbd\x87\xf9\x8f+#\n#v;\xf73\xe1\xc9\x00\xf3i\xf9K\xa2\xe0N\xbc~\x939\x84\x07\xf7Dp~\xfe\x07Z\xe5\xb1\xac\xd1\x18\xcc\xf25\xe5II\x08\xcaV\xc9=\xfb\x0f\x18}\x8b;\xc1\x13\xc2M\x8f\xc9O\x0e7\xe9\x1f\xa1\x0ej\xdfb.\xcb5\x06Qy,\xc8%8\xf4\xfaK\xa7\x89\\\x9c\xd2\xe3\r9\x86Jt|\xd5Y\x87\xc2?N\x0c\\R\xf4=\xf7R\x82\xf1\xea\xa3\xac\xfdI4\x1a(\xf3A\x88:\x13\xee\xe8\xde\xff\x99\x1d_\xba\xcb\xe8\x1e\xf2\xb9P`\xc01\xd3s\xe5\xef\xbe\xa0\xed3\x0bt\xbe \xc4gl\xf0\x08\x03zU\x80\x7fFN\x96\xa7\xf4\x1e>\xe1\xf6\xd8\t\xe13d+c\xd72^\x9f\xf9\xc0{\x0fxo\x97\xbc\x93\x9a\xf9\x9c\x12\x90xz\x80\x87\x15\xd7rt\x9cUtx\xb1\xba\xe1np\x04\xbaO\xa0\xbah\xc3{\xff1\xf0s==\x94*\xb1\x0bA\x0e\xa0\xfeM\x88eky3\xb4\xd7\x02\x03\x01\x00\x01", name_constraints: None @@ -2275,7 +2312,7 @@ * Qc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02CH1\x150\x13\x06\x03U\x04\n\x13\x0cSwissSign AG1\x1f0\x1d\x06\x03U\x04\x03\x13\x16SwissSign Gold CA - G2", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xaf\xe4\xee~\x8b$\x0e\x12n\xa9P-\x16D;\x92\x92\\\xca\xb8]\x84\x92B\x13*\xbceW\x82@>W$\xcdP\x8b%*\xb7o\xfc\xef\xa2\xd0\xc0\x1f\x02$J\x13\x96\x8f#\x13\xe6(X\x00\xa3G\xc7\x06\xa7\x84#+\xbb\xbd\x96+\x7fU\xcc\x8b\xc1W\x1f\x0ebe\x0f\xdd=V\x8as\xda\xae~m\xba\x81\x1c~B\x8c 5\xd9CM\x84\xfa\x84\xdbR,\xf3\x0e\'w\x0bk\xbf\x11/rx\x9f.\xd8>\xe6\x187Z*r\xf9\xdab\x90\x92\x95\xca\x1f\x9c\xe9\xb3<+\xcb\xf3\x01\x13\xbfZ\xcf\xc1\xb5\n`\xbd\xdd\xb5\x99dS\xb8\xa0\x96\xb3o\xe2&w\x91\x8c\xe0b\x10\x02\x9f4\x0f\xa4\xd5\x923Q\xde\xbe\x8d\xba\x84z`)u\xe7~\xa7bX\xaf%4\xa5A\xc7=\xbc\rP\xca\x03\x03\x0f\x08Z\x1f\x95sxb\xbf\xafr\x14i\x0e\xa5\xe5\x03\x0ex\x8e&(B\xf0\x07\x0bb \x10g9F\xfa\xa9\x03\xcc\x048zf\xef \x83\xb5\x8cJV\x8e\x91\x00\xfc\x8e\\\x82\xde\x88\xa0\xc3\xe2hn}\x8d\xef<\xdde\xf4]\xacQ\xef$\x80\xae\xaaV\x97o\xf9\xad}\xdaa?\x98w<\xa5\x91\xb6\x1c\x8c&\xdae\xa2\tm\xc1\xe2T\xe3\xb9\xcaLL\x80\x8fw{`\x9a\x1e\xdf\xb6\xf2H\x1e\x0e\xbaNTm\x98\xe0\xe1\xa2\x1a\xa2wP\xcf\xc4c\x92\xecG\x19\x9d\xeb\xe6k\xce\xc1\x02\x03\x01\x00\x01", name_constraints: None @@ -2321,7 +2358,7 @@ * QRBdJ3NghVdJIgc= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02RO1\x140\x12\x06\x03U\x04\n\x13\x0bCERTSIGN SA1\x1c0\x1a\x06\x03U\x04\x0b\x13\x13certSIGN ROOT CA G2", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xc0\xc5u\x19\x91}Dtt\x87\xfe\x0e;\x96\xdc\xd8\x01\x16\xcc\xeec\x91\xe7\x0bo\xce;\ni\x1a|\xc2\xe3\xaf\x82\x8e\x86\xd7^\x8fW\xeb\xd3!Y\xfd97B0\xbeP\xea\xb6\x0f\xa9\x88\xd8.-i!\xe7\xd17\x18N}\x91\xd5\x16_k[\x00\xc29C\r6\x85R\xb9Se\x0f\x1dB\xe5\x8f\xcf\x05\xd3\xee\xdc\x0c\x1a\xd9\xb8\x8bx\"g\xe4i\xb0h\xc5<\xe4lZF\xe7\xcd\xc7\xfa\xef\xc4\xecK\xbdj\xa4\xac\xfd\xcc(Q\xef\x92\xb4)\xab\xab5\x9aL\xe4\xc4\x08\xc6&\xcc\xf8i\x9f\xe4\x9c\xf0)\xd3\\\xf9\xc6\x16%\x9e#\xc3 \xc1=\x0f?8@\xb0\xfe\x82D8\xaaZ\x1a\x8akcX8\xb4\x15\xd3\xb6\x11i{\x1eT\xee\x8c\x1a\"\xacr\x97?#Y\x9b\xc9\"\x84\xc1\x07O\xcc\x7f\xe2W\xca\x12p\xbb\xa6e\xf3iuc\xbd\x95\xfb\x1b\x97\xcd\xe4\xa8\xaf\xf6\xd1N\xa8\xd9\x8aq$\xcd6=\xbc\x96\xc4\xf1l\xa9\xae\xe5\xcf\rn(\r\xb0\x0e\xb5\xcaQ{x\x14\xc3 /\x7f\xfb\x14U\xe1\x11\x99\xfd\xd5\n\xa1\x9e\x02\xe3b_\xeb5K,\xb8r\xe8>=O\xac,\xbb.\x86\xe2\xa3v\x8f\xe5\x93*\xcf\xa5\xab\xc8\\\x8dK\x06\xff\x12F\xacx\xcb\x14\x075\xe0\xa9\xdf\x8b\xe9\xaf\x15O\x16\x89[\xbd\xf6\x8d\xc6Y\xae\x88\x85\x0e\xc1\x89\xeb\x1fg\xc5E\x8e\xffm76+xf\x83\x91Q+=\xffQwvb\xa1\xecg>>\x81\x83\xe0V\xa9P\x1f\x1fz\x99\xabc\xbf\x84\x17w\xf1\r;\xdf\xf7\x9ca\xb35\x98\x8a:\xb2\xec<\x1a7?~\x8f\x92\xcf\xd9\x12\x14d\xda\x10\x02\x15A\xffO\xc4\xeb\x1c\xa3\xc9\xfa\x99\xf7F\xe9\xe1\x18\xd9\xb1\xb82-\xcb\x14\x0cP\xd8\x83e\x83\xee\xb9\\\xcf\xcb\x05ZL\xfa\x19\x97k\xd6]\x13\xd3\xc2\\T\xbc2s\xa0x\xf5\xf1m\x1e\xcb\x9f\xa5\xa6\x9f\"\xdc\xd1Q\x9e\x82yd`)\x13>\xa3\xfdOrj\xab\xe2\xd4\xe5\xb8$U,DK\x8a\x88D\x9c\xca\x84\xd3*;\x02\x03\x01\x00\x01", name_constraints: None @@ -2350,7 +2387,7 @@ * /q4AaOeMSQ+2b1tbFfLn * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1)0\'\x06\x03U\x04\n\x13 Internet Security Research Group1\x150\x13\x06\x03U\x04\x03\x13\x0cISRG Root X2", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\xcd\x9b\xd5\x9f\x80\x83\n\xec\tJ\xf3\x16J>\\\xcfw\xac\xdeg\x05\r\x1d\x07\xb6\xdc\x16\xfbZ\x8b\x14\xdb\xe2q`\xc4\xbaE\x95\x11\x89\x8e\xea\x06\xdf\xf7*\x16\x1c\xa4\xb9\xc5\xc52\xe0\x03\xe0\x1e\x82\x188\x8b\xd7E\xd8\njn\xe6\x00w\xfb\x02Q}\"\xd8\nn\x9a[w\xdf\xf0\xfaA\xec9\xdcu\xcah\x07\x0c\x1f\xea", name_constraints: None @@ -2380,7 +2417,7 @@ * nvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02PL1!0\x1f\x06\x03U\x04\n\x13\x18Asseco Data Systems S.A.1\'0%\x06\x03U\x04\x0b\x13\x1eCertum Certification Authority1\x190\x17\x06\x03U\x04\x03\x13\x10Certum EC-384 CA", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\xc4(\x8e\xab\x18[j\xbend7c\xe4\xcd\xec\xab:\xf7\xcc\xa1\xb8\x0e\x82I\xd7\x86)\x9f\xa1\x94\xf2\xe3`x\x98\x81x\x06M\xf2\xec\x9a\x0eW`\x83\x9f\xb4\xe6\x17/\x1a\xb3]\x02[\x89#<\xc2\x11\x05*\xa7\x88\x13\x18\xf3P\x84\xd7\xbd4,\'\x89U\xff\xceL\xe7\xdf\xa6\x1f(\xc4\xf0T\xc3\xb9|\xb7S\xad\xeb\xc2", name_constraints: None @@ -2417,7 +2454,7 @@ * Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02CH1\x100\x0e\x06\x03U\x04\n\x13\x07WISeKey1\"0 \x06\x03U\x04\x0b\x13\x19OISTE Foundation Endorsed1(0&\x06\x03U\x04\x03\x13\x1fOISTE WISeKey Global Root GB CA", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xd8\x17\xb7\x1cJ$*\xd6\x97\xb1\xca\xe2\x1e\xfb}8\xef\x98\xf5\xb29\x98N\'\xb8\x11]{\xd2%\x94\x88\x82\x15&j\x1b1\xbb\xa8[!!+\xd8\x0fN\x9fZ\xf1\xb1Z\xe4y\xd62#+\xe1S\xcc\x99E\\{O\xad\xbc\xbf\x87J\x0bK\x97Z\xa8\xf6H\xec}{\r\xcd!\x06\xdf\x9e\x15\xfdA\x8aH\xb7 \xf4\xa1z\x1bW\xd4]P\xff\xbag\xd8#\x99\x1f\xc8?\xe3\xde\xffo[w\xb1kn\xb8\xc9d\xf7\xe1\xcaAF\x0e)q\xd0\xb9#\xfc\xc9\x81_N\xf7o\xdf\xbf\x84\xadsd\xbb\xb7B\x8ei\xf6\xd4v\x1d~\x9d\xa7\xb8W\x8aQgr\xd7\xd4\xa8\xb8\x95T@s\x03\xf6\xea\xf4\xeb\xfe(Bw?\x9d#\x1b\xb2\xb6=\x80\x14\x07L.O\xf7\xd5\n\x16\r\xbdfC7~#Cy\xc3@\x86\xf5L)\xda\x8e\x9a\xad\r\xa5\x04\x87\x88\x1e\x85\xe3\xe9S\xd5\x9b\xc8\x8b\x03cx\xeb\xe0\x19Jn\xbb/k3dX\x93\xadi\xbf\x8f\x1b\xef\x82H\xc7\x02\x03\x01\x00\x01", name_constraints: None @@ -2456,7 +2493,7 @@ * XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02HU1\x110\x0f\x06\x03U\x04\x07\x0c\x08Budapest1\x150\x13\x06\x03U\x04\n\x0c\x0cNetLock Kft.1705\x06\x03U\x04\x0b\x0c.Tan\xc3\xbas\xc3\xadtv\xc3\xa1nykiad\xc3\xb3k (Certification Services)1503\x06\x03U\x04\x03\x0c,NetLock Arany (Class Gold) F\xc5\x91tan\xc3\xbas\xc3\xadtv\xc3\xa1ny", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xc4$^s\xbeKm\x14\xc3\xa1\xf4\xe3\x97\x90n\xd20E\x1e<\xeeg\xd9d\xe0\x1a\x8a\x7f\xca0\xca\x83\xe3 \xc1\xe3\xf4:\xd3\x94_\x1a|[m\xbf0O\x84\'\xf6\x9f\x1fI\xbc\xc6\x99\n\x90\xf2\x0f\xf5\x7fC\x847cQ\x8bz\xa5p\xfczX\xcd\x8e\x9b\xed\xc3Fl\x84p]\xda\xf3\x01\x90#\xfcN0\xa9~\xe1\'c\xe7\xedd<\xa0\xb8\xc93c\xfe\x16\x90\xff\xb0\xb8\xfd\xd7\xa8\xc0\xc0\x94C\x0b\xb6\xd5Y\xa6\x9eV\xd0$\x1fpy\xaf\xdb9T\reu\xd9\x15A\x94\x01\xaf^\xec\xf6\x8d\xf1\xff\xadd\xfe \x9a\xd7\\\xeb\xfe\xa6\x1f\x08d\xa3\x8bvU\xad\x1e;(`.\x87%\xe8\xaa\xaf\x1f\xc6dF \xb7p\x7f<\xdeH\xdb\x96S\xb79w\xe4\x1a\xe2\xc7\x16\x84v\x97[/\xbb\x19\x15\x85\xf8i\x85\xf5\x99\xa7\xa9\xf24\xa7\xa9\xb6\xa6\x03\xfco\x86=T|v\x04\x9bk\xf9@]\x004\xc7.\x99u\x9d\xe5\x88\x03\xaaM\xf8\x03\xd2Bv\xc0\x1b\x02\x03\x00\xa8\x8b", name_constraints: None @@ -2496,7 +2533,7 @@ * fF6adulZkMV8gzURZVE= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x140\x12\x06\x03U\x04\n\x13\x0bEntrust.net1@0>\x06\x03U\x04\x0b\x147www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)1%0#\x06\x03U\x04\x0b\x13\x1c(c) 1999 Entrust.net Limited1301\x06\x03U\x04\x03\x13*Entrust.net Certification Authority (2048)", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xadMK\xa9\x12\x86\xb2\xea\xa3 \x07\x15\x16d*+K\xd1\xbf\x0bJM\x8e\xed\x80v\xa5g\xb7x@\xc0sB\xc8h\xc0\xdbS+\xdd^\xb8v\x985\x93\x8b\x1a\x9d|\x13:\x0e\x1f[\xb7\x1e\xcf\xe5$\x14\x1e\xb1\x81\xa9\x8d}\xb8\xcckK\x03\xf1\x02\x0c\xdc\xab\xa5@$\x00\x7ft\x94\xa1\x9d\x08)\xb3\x88\x0b\xf5\x87w\x9dU\xcd\xe4\xc3~\xd7jd\xab\x85\x14\x86\x95[\x972Po=\xc8\xbaf\x0c\xe3\xfc\xbd\xb8I\xc1v\x89I\x19\xfd\xc0\xa8\xbd\x89\xa3g/\xc6\x9f\xbcq\x19`\xb8-\xe9,\xc9\x90vf{\x94\xe2\xafx\xd6eS]<\xd6\x9c\xb2\xcf)\x03\xf9/\xa4P\xb2\xd4H\xce\x052U\x8a\xfd\xb2dL\x0e\xe4\x98\x07u\xdb\x7f\xdf\xb9\x08U`\x850)\xf9{H\xa4i\x86\xe35?\x1e\x86]zz\x15\xbd\xef\x00\x8e\x15\"T\x17\x00\x90&\x93\xbc\x0eIh\x91\xbf\xf8G\xd3\x9d\x95B\xc1\x0eM\xdfo&\xcf\xc3\x18!bfCp\xd6\xd5\xc0\x07\xe1\x02\x03\x01\x00\x01", name_constraints: None @@ -2542,7 +2579,7 @@ * KeC2uAloGRwYQw== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x140\x12\x06\x03U\x04\n\x0c\x0bAffirmTrust1\x1c0\x1a\x06\x03U\x04\x03\x0c\x13AffirmTrust Premium", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xc4\x12\xdf\xa9_\xfeA\xdd\xdd\xf5\x9f\x8a\xe3\xf6\xac\xe1Q\xa7\xd1\"\xc4\n\xa78Hl\xb3\xf9\xff}\xab\x86W\xe3\xba\xd6\x85xw\xbaC\xeaH\x7f\xf6\xd8\xbe#m\x1e\xbf\xd16lX\\\xf1\xee\xa4\x19T\x1a\xf5\x03\xd2v\xe6\xe1\x8c\xbd<\xb3\xd3HK\xe2\xc8\xf8\x7f\x92\xa8vF\x9cBe>\xa4\x1e\xc1\x07\x03ZF-\xb8\x97\xf3\xb7\xd5\xb2U!\xef\xba\xdcL\x00\x97\xfb\x14\x95\'3\xbf\xe8CGF\xd2\x08\x99\x16`;\x9a~\xd2\xe6\xed8\xea\xec\x01\x1e\x10\xe5\x0b\x03\xc9\x9aB\x00l\xc5\x94~a\xc4\x8a\xdf\x7f\x82\x1a\x0bY\xc4Y2w\xb3\xbc`iV9\xfd\xb4\x06{,\xd6d6\xd9\xbdH\xed\x84\x1f~\xa5\"\x8f*\xb8B\xf4\x82\xb7\xd4S\x90xN-\x1a\xfd\x81oD\xd7;\x01t\x96B\xe0\x00\xe2.k\xea\xc5\xeer\xac\xbb\xbf\xfe\xea\xaa\xa8\xf8\xdc\xf6\xb2y\x8a\xb6g\x02\x03\x01\x00\x01", name_constraints: None @@ -2584,7 +2621,7 @@ * 0vdXcDazv/wor3ElhVsT/h5/WrQ8 * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x160\x14\x06\x03U\x04\n\x13\rEntrust, Inc.1907\x06\x03U\x04\x0b\x130www.entrust.net/CPS is incorporated by reference1\x1f0\x1d\x06\x03U\x04\x0b\x13\x16(c) 2006 Entrust, Inc.1-0+\x06\x03U\x04\x03\x13$Entrust Root Certification Authority", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xb6\x95\xb6CB\xfa\xc6m*oH\xdf\x94L9W\x05\xee\xc3y\x11Ah6\xed\xec\xfe\x9a\x01\x8f\xa18(\xfc\xf7\x10Ff.M\x1e\x1a\xb1\x1aN\xc6\xd1\xc0\x95\x88\xb0\xc9\xff1\x8b3\x03\xdb\xb7\x83{> \x84^\xed\xb2V(\xa7\xf8\xe0\xb9@q7\xc5\xcbG\x0e\x97*h\xc0\"\x95b\x15\xdbG\xd9\xf5\xd0+\xff\x82K\xc9\xad>\xdeL\xdb\x90\x80P?\t\x8a\x84\x00\xec0\n=\x18\xcd\xfb\xfd*Y\x9a#\x95\x17,E\x9e\x1fnCym\x0c\\\x98\xfeH\xa7\xc5#G\\^\xfdn\xe7\x1e\xb4\xf6hE\xd1\x86\x83[\xa2\x8a\x8d\xb1\xe3)\x80\xfe%q\x88\xad\xbe\xbc\x8f\xacR\x96K\xaaQ\x8d\xe4\x131\x19\xe8NM\x9f\xdb\xac\xb3j\xd5\xbc9Tq\xcazz\x7f\x90\xdd}\x1d\x80\xd9\x81\xbbY&\xc2\x11\xfe\xe6\x93\xe2\xf7\x80\xe4e\xfb47\x0e)\x80pM\xaf8\x86.\x9e\x7fW\xaf\x9e\x17\xae\xeb\x1c\xcb(!_\xb6\x1c\xd8\xe7\xa2\x04\"\xf9\xd3\xda\xd8\xcb\x02\x03\x01\x00\x01", name_constraints: None @@ -2622,7 +2659,7 @@ * +OkuE6N36B9K * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x150\x13\x06\x03U\x04\n\x13\x0cDigiCert Inc1\x190\x17\x06\x03U\x04\x0b\x13\x10www.digicert.com1+0)\x06\x03U\x04\x03\x13\"DigiCert High Assurance EV Root CA", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xc6\xcc\xe5s\xe6\xfb\xd4\xbb\xe5--2\xa6\xdf\xe5\x81?\xc9\xcd%I\xb6q*\xc3\xd5\x944g\xa2\n\x1c\xb0_i\xa6@\xb1\xc4\xb7\xb2\x8f\xd0\x98\xa4\xa9AY:\xd3\xdc\x94\xd6<\xdbt8\xa4J\xccM%\x82\xf7J\xa5S\x128\xee\xf3Imq\x91~c\xb6\xab\xa6_\xc3\xa4\x84\xf8ObQ\xbe\xf8\xc5\xec\xdb8\x92\xe3\x06\xe5\x08\x91\x0c\xc4(AU\xfb\xcbZ\x89\x15~q\xe85\xbfMr\t=\xbe:8P[w1\x1b\x8d\xb3\xc7$E\x9a\xa7\xacm\x00\x14Z\x04\xb7\xba\x13\xebQ\n\x98AA\"Nea\x87\x81AP\xa6y\\\x89\xde\x19JW\xd5.\xe6]\x1cS,~\x98\xcd\x1a\x06\x16\xa4hs\xd04\x04\x13\\\xa1q\xd3Z|U\xdb^d\xe17\x870V\x04\xe5\x11\xb4)\x80\x12\xf1y9\x88\xa2\x02\x11|\'f\xb7\x88\xb7x\xf2\xca\n\xa88\xab\nd\xc2\xbff]\x95\x84\xc1\xa1%\x1e\x87]\x1aP\x0b \x12\xccA\xbbn\x0bQ8\xb8K\xcb\x02\x03\x01\x00\x01", name_constraints: None @@ -2668,13 +2705,60 @@ * OV+KmalBWQewLK8= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x120\x10\x06\x03U\x04\n\x13\tCertainly1\x1a0\x18\x06\x03U\x04\x03\x13\x11Certainly Root R1", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xd06\xd4\x1f\xea\xdd\xab\xe4\xd1\xb6\xe6\xfb\"\xc0\xdd\x13\rj{\"\x13\x1c\x97+\x1c\x1f\x18Lq\xaa5\x8c\xad\xf8n\xe8;J\xd9\xe5\x94\x02\xd6\x89\x84\x13\xaam\xc8O3\xccP\x967\x923\xdc_\x88\xe7\x9fT\xd9H\xf0\x98C\xd6f\xfd\x9f\x178C\xc5\x01Q\x0b\xd7\xe3#\x0f\x14][\x14\xe7K\xbe\xdd\xf4\xc8\xda\x037\xd1\xd69\xa1!Q0\x83\xb0m\xd70N\x96[\x91\xf0p$\xab\xbfE\x81dC\r\xbd!:/<\xe9\x9e\r\xcb \xb5B\'\xcc\xdao\x9b\xeed0\x909\xcd\x93e\x81!1\xb5#P37\"\xe38\xed\xf810\xccE\xfeb\xf9\xd1]2yB\x87\xdfj\xccV\x19@M\xce\xaa\xbb\xf9\xb5vI\x94\xf1\'\xf8\x91\xa5\x83\xe5\x06\xb3c\x0e\x80\xdc\xe0\x12U\x80\xa6;f\xb49\x87-\xc8\xf0\xd0\xd1\x14\xe9\xe4\rM\x0e\xf6]Wr\xc5;\x1cGV\x9d\xe2\xd5\xfb\x81a\x8c\xccM\x80\x904[\xb7\xd7\x14u\xdc\xd8\x04H\x9f\xc0\xc1(\x88\xb4\xe9\x1c\xca\xa7\xb1\xf1V\xb7{ILY\xe5 \x15\xa8\x84\x02)\xfa8\x94i\x9aI\x06\x8f\xcd\x1fy\x14\x17\x12\x0c\x83z\xde\x1f\xb1\x97\xee\xf9\x97x(\xa4\xc8D\x92\xe9}&\x05\xa6Xr\x9by\x13\xd8\x11_\xae\xc58b4h\xb2\x860\x8e\xf8\x90a\x9e2l\xf5\x076\xcd\xa2Ln\xec\x8a6\xed\xf2\xe6\x99\x15Dp\xc3|\xbc\x9c9\xc0\xb4\xe1k\xf7\x83%#W\xd9\x12\x80\xe5I\xf0u\x0f\xef\x8d\xeb\x1c\x9bT(\xb4!<\xfc|\n\xff\xef{ku\xff\x8b\x1d\xa0\x19\x05\xab\xfa\xf8+\x81B\xe88\xba\xbb\xfb\xaa\xfd=\xe0\xf3\xca\xdfN\x97\x97)\xed\xf3\x18V\xe9\xa5\x96\xac\xbd\xc3\x90\x98\xb2\xe0\xf9\xa2\xd4\xa6GC|m\xcf\x02\x03\x01\x00\x01", + name_constraints: None + }, + + /* * Issuer: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com * Subject: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com * Label: "DigiCert Assured ID Root G2" @@ -2705,7 +2789,7 @@ * IhNzbM8m9Yop5w== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x150\x13\x06\x03U\x04\n\x13\x0cDigiCert Inc1\x190\x17\x06\x03U\x04\x0b\x13\x10www.digicert.com1$0\"\x06\x03U\x04\x03\x13\x1bDigiCert Assured ID Root G2", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xd9\xe7(/R?6rI\x88\x934\xf3\xf8j\x1e1T\x80\x9f\xadTA\xb5G\xdf\x96\xa8\xd4\xaf\x80-\xb9\n\xcfu\xfd\x89\xa5}$\xfa\xe3\"\x0c+\xbc\x95\x17\x0b3\xbf\x19MA\x06\x90\x00\xbd\x0cM\x10\xfe\x07\xb5\xe7\x1cn\"U1e\x97\xbd\xd3\x17\xd2\x1eb\xf3\xdb\xealP\x8c?\x84\x0c\x96\xcf\xb7\xcb\x03\xe0\xcam\xa1\x14L\x1b\x89\xdd\xed\x00\xb0R|\xaf\x91l\xb18\x13\xd1\xe9\x12\x08\xc0\x00\xb0\x1c+\x11\xdawp6\x9b\xae\xcey\x87\xdc\x82p\xe6\ttpUi\xaf\xa3h\x9f\xbf\xdd\xb6y\xb3\xf2\x9dp)U\xf4\xab\xff\x95a\xf3\xc9@o\x1d\xd1\xbe\x93\xbb\xd3\x88*\xbb\x9d\xbfrZVq;?\xd4\xf3\xd1\n\xfe(\xef\xa3\xee\xd9\x99\xaf\x03\xd3\x8f`\xb7\xf2\x92\xa1\xb1\xbd\x89\x89\x1f0\xcd\xc3\xa6.b3\xae\x16\x02wDZ\xe7\x81\n<\xa7D.y\xb8?\x04\xbc\\\xa0\x87\xe1\x1b\xafQ\x8e\xcd\xec,\xfa\xf8\xfem\xf0:|\xaa\x8b\xe4g\x951\x8d\x02\x03\x01\x00\x01", name_constraints: None @@ -2735,13 +2819,59 @@ * 6pZjamVFkpUBtA== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x150\x13\x06\x03U\x04\n\x13\x0cDigiCert Inc1\x190\x17\x06\x03U\x04\x0b\x13\x10www.digicert.com1$0\"\x06\x03U\x04\x03\x13\x1bDigiCert Assured ID Root G3", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\x19\xe7\xbc\xacDe\xed\xcd\xb8?X\xfb\x8d\xb1W\xa9D-\x05\x15\xf2\xef\x0b\xff\x10t\x9f\xb5bR_f~\x1f\xe5\xdc\x1bEy\x0b\xcc\xc6S\n\x9d\x8d]\x02\xd9\xa9Y\xde\x02Z\xf6\x95*\x0e\x8d8J\x8aI\xc6\xbc\xc6\x038\x07_U\xda~\tn\xe2\x7f^\xd0E \x0fYv\x10\xd6\xa0$\xf0-\xde6\xf2l)9", name_constraints: None }, /* + * Issuer: CN=Atos TrustedRoot Root CA RSA TLS 2021 O=Atos + * Subject: CN=Atos TrustedRoot Root CA RSA TLS 2021 O=Atos + * Label: "Atos TrustedRoot Root CA RSA TLS 2021" + * Serial: 111436099570196163832749341232207667876 + * MD5 Fingerprint: d4:d3:46:b8:9a:c0:9c:76:5d:9e:3a:c3:b9:99:31:d2 + * SHA1 Fingerprint: 18:52:3b:0d:06:37:e4:d6:3a:df:23:e4:98:fb:5b:16:fb:86:74:48 + * SHA256 Fingerprint: 81:a9:08:8e:a5:9f:b3:64:c5:48:a6:f8:55:59:09:9b:6f:04:05:ef:bf:18:e5:32:4e:c9:f4:57:ba:00:11:2f + * -----BEGIN CERTIFICATE----- + * MIIFZDCCA0ygAwIBAgIQU9XP5hmTC/srBRLYwiqipDANBgkqhkiG9w0BAQwFADBM + * MS4wLAYDVQQDDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgUlNBIFRMUyAyMDIx + * MQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0yMTA0MjIwOTIxMTBaFw00 + * MTA0MTcwOTIxMDlaMEwxLjAsBgNVBAMMJUF0b3MgVHJ1c3RlZFJvb3QgUm9vdCBD + * QSBSU0EgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRFMIICIjAN + * BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtoAOxHm9BYx9sKOdTSJNy/BBl01Z + * 4NH+VoyX8te9j2y3I49f1cTYQcvyAh5x5en2XssIKl4w8i1mx4QbZFc4nXUtVsYv + * Ye+W/CBGvevUez8/fEc4BKkbqlLfEzfTFRVOvV98r61jx3ncCHvVoOX3W3WsgFWZ + * kmGbzSoXfduP9LVq6hdKZChmFSlsAvFr1bqjM9xaZ6cF4r9lthawEO3NUDPJcFDs + * GY6wx/J0W2tExn2WuZgIWWbeKQGb9Cpt0xU6kGpn8bRrZtkh68rZYnxGEFzedUln + * nkL5/nWpo63/dgpnQOPF943HhZpZnmKaau1Fh5hnstVKPNe0OwANwI8f4UDErmwh + * 3El+fsqyjW22v5MvoVw+j8rtgI5Y4dtXz4U2OLJxpAmMkokIiEjxQGMYsluMWuPD + * 0xeqqxmjLBvk1cbiZnrXghmmOxYsL3GHX0WelXOTwkKBIROW1527k2gV+p2kHYzy + * geBYBr3JtuP2iV2J+axEoctr+hbxx1A9JNr3w+SH1VbxT5Aw+kUJWdo0zuATHAR8 + * ANSbhqRAvNncTFd+rrcztl524WWLZt+NyteYr842mIycg5kDcPOvdO3GDjbnvezB + * c6eUWsuSZIKmAMFwoW4sKeFYV+xafJlrJaSQOoD0IJ2azsct+bJLKZWD6TWNp0lI + * pw9MGZHQ9b8Q4HECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU + * dEmZ0f+0emhFdcN+tNzMzjkz2ggwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB + * DAUAA4ICAQAjQ1MkYlxt/T7Cz1UAbMVWiLkO3TriJQ2VSpfKgInuKs1l+NsW4AmS + * 4BjHeJi78+xCUvuppILXTdiK/ORO/auQxDh1MoSf/7OwKwIzNsAQkG8dnK/haZPs + * o0UvFJ/1TCplQ3IM98P4lYsU84UgYt1UU90s3BiVaU+DR3BAM1h3Egyi61IxHkzJ + * qM7F78PRreBrAwA0JrRUITWXAdxfG/F851X6LWh3e9NpzNMOa7pNdkTWwhWaJuyw + * xfW70Xp0wmzNxbVe9kzmWy2B27O3Opee7c9GslA9hGCZcbUztVdF5kJHdWoOsAgM + * rr3e97sPWD2PAzHoPYJQyi9eDF20l74gNAf0xBLh7tew2VktafcxBPTy+av5EzH4 + * AXcOPUIjJsyacmdRIXrMPIWo6iFqO9taPKU0nprALN+AnCng33eU0aKAQv9qTFsR + * 0PXNor6uzFFcw9VUewyu1rkGd4Di7wcaaMxZUa1+XGdrudviB0JbuAEFWDlN5LuY + * o7Ey7Nmj1m+UI/87tyll5gfp77YZ6ufCOB0yiJA8EytuzO+rdwY0d4RPcuSBhPm5 + * dDTedk+SKlOxJTnbPP/lPqYO5Wue/9vsL3SD3460s6neFE3/MaNFcyT6lSnMEpcE + * oji2jbDwN/zIIX8/syQbPYtuzE2wFg2WHYMfRsCbvUOZ58SWLs5fyQ== + * -----END CERTIFICATE----- + */ + TrustAnchor { + subject: b"1.0,\x06\x03U\x04\x03\x0c%Atos TrustedRoot Root CA RSA TLS 20211\r0\x0b\x06\x03U\x04\n\x0c\x04Atos1\x0b0\t\x06\x03U\x04\x06\x13\x02DE", + spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xb6\x80\x0e\xc4y\xbd\x05\x8c}\xb0\xa3\x9dM\"M\xcb\xf0A\x97MY\xe0\xd1\xfeV\x8c\x97\xf2\xd7\xbd\x8fl\xb7#\x8f_\xd5\xc4\xd8A\xcb\xf2\x02\x1eq\xe5\xe9\xf6^\xcb\x08*^0\xf2-f\xc7\x84\x1bdW8\x9du-V\xc6/a\xef\x96\xfc F\xbd\xeb\xd4{??|G8\x04\xa9\x1b\xaaR\xdf\x137\xd3\x15\x15N\xbd_|\xaf\xadc\xc7y\xdc\x08{\xd5\xa0\xe5\xf7[u\xac\x80U\x99\x92a\x9b\xcd*\x17}\xdb\x8f\xf4\xb5j\xea\x17Jd(f\x15)l\x02\xf1k\xd5\xba\xa33\xdcZg\xa7\x05\xe2\xbfe\xb6\x16\xb0\x10\xed\xcdP3\xc9pP\xec\x19\x8e\xb0\xc7\xf2t[kD\xc6}\x96\xb9\x98\x08Yf\xde)\x01\x9b\xf4*m\xd3\x15:\x90jg\xf1\xb4kf\xd9!\xeb\xca\xd9b|F\x10\\\xdeuIg\x9eB\xf9\xfeu\xa9\xa3\xad\xffv\ng@\xe3\xc5\xf7\x8d\xc7\x85\x9aY\x9eb\x9aj\xedE\x87\x98g\xb2\xd5J<\xd7\xb4;\x00\r\xc0\x8f\x1f\xe1@\xc4\xael!\xdcI~~\xca\xb2\x8dm\xb6\xbf\x93/\xa1\\>\x8f\xca\xed\x80\x8eX\xe1\xdbW\xcf\x8568\xb2q\xa4\t\x8c\x92\x89\x08\x88H\xf1@c\x18\xb2[\x8cZ\xe3\xc3\xd3\x17\xaa\xab\x19\xa3,\x1b\xe4\xd5\xc6\xe2fz\xd7\x82\x19\xa6;\x16,/q\x87_E\x9e\x95s\x93\xc2B\x81!\x13\x96\xd7\x9d\xbb\x93h\x15\xfa\x9d\xa4\x1d\x8c\xf2\x81\xe0X\x06\xbd\xc9\xb6\xe3\xf6\x89]\x89\xf9\xacD\xa1\xcbk\xfa\x16\xf1\xc7P=$\xda\xf7\xc3\xe4\x87\xd5V\xf1O\x900\xfaE\tY\xda4\xce\xe0\x13\x1c\x04|\x00\xd4\x9b\x86\xa4@\xbc\xd9\xdcLW~\xae\xb73\xb6^v\xe1e\x8bf\xdf\x8d\xca\xd7\x98\xaf\xce6\x98\x8c\x9c\x83\x99\x03p\xf3\xaft\xed\xc6\x0e6\xe7\xbd\xec\xc1s\xa7\x94Z\xcb\x92d\x82\xa6\x00\xc1p\xa1n,)\xe1XW\xecZ|\x99k%\xa4\x90:\x80\xf4 \x9d\x9a\xce\xc7-\xf9\xb2K)\x95\x83\xe95\x8d\xa7IH\xa7\x0fL\x19\x91\xd0\xf5\xbf\x10\xe0q\x02\x03\x01\x00\x01", + name_constraints: None + }, + + /* * Issuer: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed * Subject: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed * Label: "OISTE WISeKey Global Root GC CA" @@ -2765,7 +2895,7 @@ * Mgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02CH1\x100\x0e\x06\x03U\x04\n\x13\x07WISeKey1\"0 \x06\x03U\x04\x0b\x13\x19OISTE Foundation Endorsed1(0&\x06\x03U\x04\x03\x13\x1fOISTE WISeKey Global Root GC CA", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04L\xe9P\xc0\xc6\x0fr\x18\xbc\xd8\xf1\xba\xb3\x89\xe2yJ\xa3\x16\xa7kT$\xdbQ\xff\xea\xf4\t$\xc3\x0b\"\x9f\xcbj\'\x82\x81\r\xd2\xc0\xaf1\xe4t\x82n\xca%\xd9\x8cu\x9d\xf1\xdb\xd0\x9a\xa2K!~\x16\xa7c\x90\xd29\xd4\xb1\x87x_\x18\x96\x0fP\x1b57\x0fj\xc6\xdc\xd9\x13M\xa4\x8e\x907\xe6\xbd[1\x91", name_constraints: None @@ -2814,7 +2944,7 @@ * Ic2wBlX7Jz9TkHCpBB5XJ7k= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x0e0\x0c\x06\x03U\x04\x08\x0c\x05Texas1\x100\x0e\x06\x03U\x04\x07\x0c\x07Houston1\x180\x16\x06\x03U\x04\n\x0c\x0fSSL Corporation110/\x06\x03U\x04\x03\x0c(SSL.com Root Certification Authority RSA", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xf9\x0f\xdd\xa3+}\xcb\xd0*\xfe\xecg\x85\xa6\xe7.\x1b\xbaw\xe1\xe3\xf5\xaf\xa4\xec\xfaJ]\x91\xc4WGk\x18wkv\xf2\xfd\x93\xe4=\x0f\xc2\x16\x9e\x0bf\xc3V\x94\x9e\x17\x83\x85\xceV\xef\xf2\x16\xfd\x00b\xf5\"\tT\xe8e\x17NA\xb9\xe0OF\x97\xaa\x1b\xc8\xb8nb^i\xb1_\xdb*\x02~\xfcl\xca\xf3A\xd8\xed\xd0\xe8\xfc?aH\xed\xb0\x03\x14\x1d\x10\x0eK\x19\xe0\xbbN\xec\x86e\xff6\xf3^g\x02\x0b\x9d\x86Ua\xfdz8\xed\xfe\xe2\x19\x00\xb7o\xa1Pbut<\xa0\xfa\xc8%\x92\xb4nz\"\xc7\xf8\x1e\xa1\xe3\xb2\xdd\x911\xab+\x1d\x04\xff\xa5J\x047\xe9\x85\xa43+\xfd\xe2\xd6U4|\x19\xa4Jh\xc7\xb2\xa8\xd3\xb7\xca\xa1\x93\x88\xeb\xc1\x97\xbc\x8c\xf9\x1d\xd9\"\x84$t\xc7\x04=j\xa9)\x93\xcc\xeb\xb8[\xe1\xfe_%\xaa4X\xc8\xc1#T\x9d\x1b\x98\x11\xc38\x9c~=\x86l\xa5\x0f@\x86|\x02\xf4\\\x02O(\xcb\xaeq\x9f\x0f:\xc83\xfe\x11%5\xea\xfc\xba\xc5`=\xd9|\x18\xd5\xb2\xa9\xd3ux\x03r\"\xca:\xc3\x1f\xef,\xe5.\xa9\xfa\x9e,\xb6QF\xfd\xaf\x03\xd6\xea`h\xea\x85\x166k\x85\xe9\x1e\xc0\xb3\xdd\xc4$\xdc\x80*\x81Am\x94>\xc8\xe0\xc9\x81A\x00\x9e^\xbf\x7f\xc5\x08\x98\xa2\x18,B@\xb3\xf9o8\'KN\x80\xf4=\x81G\xe0\x88|\xea\x1c\xce\xb5u\\Q.\x1c+\x7f\x1ar(\xe7\x00\xb5\xd1t\xc6\xd7\xe4\x9f\xad\x07\x93\xb6S55\xfc7\xe4\xc3\xf6]\x16\xbe!s\xde\x92\n\xf8\xa0cj\xbc\x96\x92j>\xf8\xbceU\x9b\xde\xf5\r\x89&\x04\xfc%\x1a\xa6%i\xcb\xc2m\xca|\xe2Y_\x97\xac\xeb\xef.\xc8\xbc\xd7\x1bY<+\xcc\xf2\x19\xc8\x93k\'c\x19\xcf\xfc\xe9&\xf8\xcaq\x9b\x7f\x93\xfe4g\x84N\x99\xeb\xfc\xb3x\t3p\xbaf\xa6v\xed\x1bs\xeb\x1a\xa5\r\xc4\"\x13 \x94V\nN,lN\xb1\xfd\xcf\x9c\t\xba\xa23\xed\x87\x02\x03\x01\x00\x01", name_constraints: None @@ -2862,7 +2992,7 @@ * 8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02BM1\x190\x17\x06\x03U\x04\n\x13\x10QuoVadis Limited1\x1b0\x19\x06\x03U\x04\x03\x13\x12QuoVadis Root CA 2", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\x9a\x18\xcaK\x94\r\x00-\xaf\x03)\x8a\xf0\x0f\x81\xc8\xaeL\x19\x85\x1d\x08\x9f\xab)D\x85\xf3/\x81\xad2\x1e\x90F\xbf\xa3\x86&\x1a\x1e\xfe~\x1c\x18:\\\x9c`\x17*:t\x8330}aT\x11\xcb\xed\xab\xe0\xe6\xd2\xa2~\xf5ko\x18\xb7\n\x0b-\xfd\xe9>\xef\n\xc6\xb3\x10\xe9\xdc\xc2F\x17\xf8]\xfd\xa4\xda\xff\x9eIZ\x9c\xe63\xe6$\x96\xf7?\xba[+\x1cz5\xc2\xd6g\xfe\xabfP\x8bm(`+\xef\xd7`\xc3\xc7\x93\xbc\x8d6\x91\xf3\x7f\xf8\xdb\x11\x13\xc4\x9cwv\xc1\xae\xb7\x02j\x81z\xa9E\x83\xe2\x05\xe6\xb9V\xc1\x947\x8fHqc\"\xec\x17e\x07\x95\x8aK\xdf\x8f\xc6Z\n\xe5\xb0\xe3_^k\x11\xab\x0c\xf9\x85\xebD\xe9\xf8\x04s\xf2\xe9\xfe\\\x98\x8c\xf5s\xafk\xb4~\xcd\xd4\\\x02+L9\xe1\xb2\x95\x95-B\x87\xd7\xd5\xb3\x90C\xb7l\x13\xf1\xde\xdd\xf6\xc4\xf8\x89?\xd1u\xf5\x92\xc3\x91\xd5\x8a\x88\xd0\x90\xec\xdcm\xde\x89\xc2eq\x96\x8b\r\x03\xfd\x9c\xbf[\x16\xac\x92\xdb\xea\xfey|\xad\xeb\xaf\xf7\x16\xcb\xdb\xcd%+\xe5\x1f\xfb\x9a\x9f\xe2Q\xcc:S\x0cH\xe6\x0e\xbd\xc9\xb4v\x06R\xe6\x11\x13\x85rc\x03\x04\xe0\x046+ \x19\x02\xe8t\xa7\x1f\xb6\xc9Vf\xf0u%\xdcg\xc1\x0ea`\x88\xb3>\xd1\xa8\xfc\xa3\xda\x1d\xb0\xd1\xb1#T\xdfDvm\xedA\xd8\xc1\xb2\"\xb6S\x1c\xdf5\x1d\xdc\xa1w*1\xe4-\xf5\xe5\xe5\xdb\xc8\xe0\xff\xe5\x80\xd7\x0bc\xa0\xff3\xa1\x0f\xba,\x15\x15\xea\x97\xb3\xd2\xa2\xb5\xbe\xf2\x8c\x96\x1e\x1a\x8f\x1dl\xa4a7\xb9\x86s3\xd7\x97\x96\x9e#}\x82\xa4L\x81\xe2\xa1\xd1\xbag_\x95\x07\xa3\'\x11\xee\x16\x10{\xbcEJL\xb2\x04\xd2\xab\xef\xd5\xfd\x0cQ\xcePj\x081\xf9\x91\xda\x0c\x8fd\\\x03\xc3:\x8b ?n\x8dg=:\xd6\xfe}[\x88\xc9^\xfb\xcca\xdc\x8b3w\xd3D25\tb\x04\x92\x16\x10\xd8\x9e\'G\xfb;!\xe3\xf8\xeb\x1d[\x02\x03\x01\x00\x01", name_constraints: None @@ -2892,45 +3022,13 @@ * +JbNR6iC8hZVdyR+EhCVBCyj * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02IN1\x130\x11\x06\x03U\x04\x0b\x13\nemSign PKI1%0#\x06\x03U\x04\n\x13\x1ceMudhra Technologies Limited1 0\x1e\x06\x03U\x04\x03\x13\x17emSign ECC Root CA - G3", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04#\xa5\x0c\xb8-\x12\xf5(\xf3\xb1\xb2\xdd\xe2\x02\x12\x80\x9e9_IM\x9f\xc9%4Yt\xec\xbb\x06\x1c\xe7\xc0r\xaf\xe8\xae/\xe1AT\x87\x14\xa8J\xb2\xe8|\x82\xe6[j\xb5\xdc\xb3u\xce\x8b\x06\xd0\x86#\xbfF\xd5\x8e\x0f?\x04\xf4\xd7\x1c\x92~\xf6\xa5c\xc2\xf5_\x8e.O\xa1\x18\x19\x02+2\n\x82d}\x16\x93\xd1", name_constraints: None }, /* - * Issuer: CN=E-Tugra Global Root CA ECC v3 O=E-Tugra EBG A.S. OU=E-Tugra Trust Center - * Subject: CN=E-Tugra Global Root CA ECC v3 O=E-Tugra EBG A.S. OU=E-Tugra Trust Center - * Label: "E-Tugra Global Root CA ECC v3" - * Serial: 218504919822255052842371958738296604628416471745 - * MD5 Fingerprint: 46:bc:81:bb:f1:b5:1e:f7:4b:96:bc:14:e2:e7:27:64 - * SHA1 Fingerprint: 8a:2f:af:57:53:b1:b0:e6:a1:04:ec:5b:6a:69:71:6d:f6:1c:e2:84 - * SHA256 Fingerprint: 87:3f:46:85:fa:7f:56:36:25:25:2e:6d:36:bc:d7:f1:6f:c2:49:51:f2:64:e4:7e:1b:95:4f:49:08:cd:ca:13 - * -----BEGIN CERTIFICATE----- - * MIICpTCCAiqgAwIBAgIUJkYZdzHhT28oNt45UYbm1JeIIsEwCgYIKoZIzj0EAwMw - * gYAxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHEwZBbmthcmExGTAXBgNVBAoTEEUtVHVn - * cmEgRUJHIEEuUy4xHTAbBgNVBAsTFEUtVHVncmEgVHJ1c3QgQ2VudGVyMSYwJAYD - * VQQDEx1FLVR1Z3JhIEdsb2JhbCBSb290IENBIEVDQyB2MzAeFw0yMDAzMTgwOTQ2 - * NThaFw00NTAzMTIwOTQ2NThaMIGAMQswCQYDVQQGEwJUUjEPMA0GA1UEBxMGQW5r - * YXJhMRkwFwYDVQQKExBFLVR1Z3JhIEVCRyBBLlMuMR0wGwYDVQQLExRFLVR1Z3Jh - * IFRydXN0IENlbnRlcjEmMCQGA1UEAxMdRS1UdWdyYSBHbG9iYWwgUm9vdCBDQSBF - * Q0MgdjMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASOmCm/xxAeJ9urA8woLNheSBkQ - * KczLWYHMjLiSF4mDKpL2w6QdTGLVn9agRtwcvHbB40fQWxPa56WzZkjnIZpKT4YK - * fWzqTTKACrJ6CZtpS5iB4i7sAnCWH/31Rs7K3IKjYzBhMA8GA1UdEwEB/wQFMAMB - * Af8wHwYDVR0jBBgwFoAU/4Ixcj75xGZsrTie0bBRiKWQzPUwHQYDVR0OBBYEFP+C - * MXI++cRmbK04ntGwUYilkMz1MA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNp - * ADBmAjEA5gVYaWHlLcoNy/EZCL3W/VGSGn5jVASQkZo1kTmZ+gepZpO6yGjUij/6 - * 7W4WAie3AjEA3VoXK3YdZUKWpqxdinlW2Iob35reX8dQj7FbcQwm32pAAOwzkSFx - * vmjkI6TZraE3 - * -----END CERTIFICATE----- - */ - webpki::TrustAnchor { - subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02TR1\x0f0\r\x06\x03U\x04\x07\x13\x06Ankara1\x190\x17\x06\x03U\x04\n\x13\x10E-Tugra EBG A.S.1\x1d0\x1b\x06\x03U\x04\x0b\x13\x14E-Tugra Trust Center1&0$\x06\x03U\x04\x03\x13\x1dE-Tugra Global Root CA ECC v3", - spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\x8e\x98)\xbf\xc7\x10\x1e\'\xdb\xab\x03\xcc(,\xd8^H\x19\x10)\xcc\xcbY\x81\xcc\x8c\xb8\x92\x17\x89\x83*\x92\xf6\xc3\xa4\x1dLb\xd5\x9f\xd6\xa0F\xdc\x1c\xbcv\xc1\xe3G\xd0[\x13\xda\xe7\xa5\xb3fH\xe7!\x9aJO\x86\n}l\xeaM2\x80\n\xb2z\t\x9biK\x98\x81\xe2.\xec\x02p\x96\x1f\xfd\xf5F\xce\xca\xdc\x82", - name_constraints: None - }, - - /* * Issuer: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited * Subject: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited * Label: "QuoVadis Root CA 3 G3" @@ -2970,7 +3068,7 @@ * ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0 * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02BM1\x190\x17\x06\x03U\x04\n\x13\x10QuoVadis Limited1\x1e0\x1c\x06\x03U\x04\x03\x13\x15QuoVadis Root CA 3 G3", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xb3\xcb\x0e\x10g\x8e\xea\x14\x97\xa72*\nV6\x7fhL\xc7\xb3o:#\x14\x91\xff\x19\x7f\xa5\xca\xac\xee\xb3v\x9dz\xe9\x8b\x1b\xabk1\xdb\xfa\x0bSL\xaf\xc5\xa5\x1ay<\x8aL\xff\xac\xdf%\xdeN\xd9\x822\x0bD\xde\xca\xdb\x8c\xac\xa3n\x16\x83;\xa6dK2\x89\xfb\x16\x168~\xebC\xe2\xd3tJ\xc2b\ns\n\xddI\xb3W\xd2\xb0\n\x85\x9dq<\xde\xa3\xcb\xc02\xf3\x019 C\x1b5\xd1S\xb3\xb1\xee\xc5\x93i\x82>\x16\xb5(F\xa1\xde\xea\x89\t\xedC\xb8\x05F\x8a\x86\xf5YG\xbe\x1bo\x01!\x10\xb9\xfd\xa9\xd2(\xca\x109\t\xca\x136\xcf\x9c\xad\xad@ty+\x02?4\xff\xfa i}\xd3\xeea\xf5\xba\xb3\xe70\xd07#\x86raE)HYhow\xa6.\x81\xbe\x07Mo\xaf\xce\xc4E\x13\x91\x14p\x06\x8f\x1f\x9f\xf8\x87i\xb1\x0e\xef\xc3\x89\x19\xeb\xea\x1ca\xfczl\x8a\xdc\xd6\x03\x0b\x9e&\xba\x12\xdd\xd4T9\xab&\xa33\xeau\x81\xda-\xcd\x0fO\xe4\x03\xd1\xef\x15\x97\x1bk\x90\xc5\x02\x90\x93f\x02!\xb1G\xde\x8b\x9aJ\x80\xb9U\x8f\xb5\xa2/\xc0\xd63g\xda~\xc4\xa7\xb4\x04D\xebG\xfb\xe6X\xb9\xf7\x0c\xf0{+\xb1\xc0p)\xc3@b-;Hi\xdc#\x88l`\x7f\x90O\x95\xf7\xf6-\xad\x019\x07\x04\xfau\x80}\xbfIP\xed\xef\xc9\xc4|\x1c\xeb\x80~\xdb\xb6\xd0\xdd\x13\xfe\xc9\xd3\x9c\xd7\xb2\x97\xa9\x02\x03\x01\x00\x01", name_constraints: None @@ -3018,7 +3116,7 @@ * 9XXeifdy * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02KR1&0$\x06\x03U\x04\n\x0c\x1dNAVER BUSINESS PLATFORM Corp.1200\x06\x03U\x04\x03\x0c)NAVER Global Root Certification Authority", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xb6\xd4\xf1\x93\\\xb5@\x89\n\xab\r\x90[Pc\xae\x90\x94t\x17Er\xd6{eZ)K\xa7V\xa0K\xb8/Bu\xe9\xd9{$Z1e\xab\x17\x17\xd13:\xd9\x11\xdc@6\x87\xdf\xc7j\xe9&^Y\x8aw\xe3\xe8H\x9c1\x16\xfa>\x91\xb1\xca\xc9\xa3\xe2\x9f\xce!S\xa3\x0260\xcbR\x02\xe5\xda2]\xc3\xc5\xe6\xf9\xee\x11\xc7\x8b\xc9D\x1e\x84\x93\x18J\xb4\x9f\xe5\x12di\xd0&\x85b\x01\xb6\xc9\x02\x1d\xbe\x83Q\xbb\\\xda\xf8\xad\x15j\x99\xf7\x92T\xf74[\xe9\xbf\xea)\x81\x12\xd4S\x91\x96\xb3\x91Z\xdd\xfe\x90s(\xfb0F\xb5\xca\x08\x07\xc7qr\xc9f\xd34\x97\xf6\x8c\xf4\x18J\xe1\xd0=ZE\xb6i\xa7)\xfb#\xce\x88\xd8\x12\x9c\x00H\xa8\xa6\x0f\xb3;\x92\x8dq\x0et\xc5\x8b\xc8L\xf9\xf4\x9b\x8e\xb8\x9c\xfc]\x1a\x83.+\xcb\xb5\xf3D\x9d:\xa7\x17a\x96\xa2q\xd3p\x96\x15M\xb7Ls\xee\x19\\\xc5[>A\xfe\xacu`;\x1bc\xce\x00\xdd\xda\x08\x90b\xb4\xe5-\xeeH\xa7k\x17\x99T\xbe\x87J\xe3\xa9^\x04L\xeb\x10mT\xd6\xef\xf1\xe8\xf2b\x16\xcb\x80k\xed=\xed\xf5\x1f0\xa5\xaeK\xc9\x13\xed\x8a\x01\x01\xc9\xb8QX\xc0f:\xb1fK\xc4\xd51\x02b\xe9t\x84\x0c\xdbMF-\x02\x03\x01\x00\x01", name_constraints: None @@ -3064,7 +3162,7 @@ * sBxXVsFy6K2ir40zSbofitzmdHxghm+Hl3s= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02CN1\x1c0\x1a\x06\x03U\x04\n\x13\x13iTrusChina Co.,Ltd.1\x160\x14\x06\x03U\x04\x03\x13\rvTrus Root CA", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xbdU|a\xd3\xb8\x1d\x04b\x05\xa0\xael\xb7p\xb4A\xeaK\x03^\x10?\x90Z\x1c\x8b;\xb0f\x8blH\xa6\x1c\"\xba\xd5@\x92\xee3\xb2#Y\xc9\x8e\xbcX\xda\x8b\x9e\xd0\x19\xf2/Y\xc6\x8ccZ\xba\x9f\xa3\x0b\xb0\xb3\x9a\\\xba\x11\xb8\x12\xe9\x0c\xbb\xcfnl\x80\x87)\x14\x03,\x8d$\x9a\xc8d\x83\xb5j\xac\x13,3\xf1\x9f\xdc,a<\x1a?pU\x9b\xad\x00R\x7f\xcf\x04\xb9\xfe6\xfa\x9c\xc0\x16\xaeb\xfe\x96LC~U\x14\xbe\x1a\xb3\xd2m\xc2\xafvf\x95k*\xb0\x94w\x85^\x04\x0fb\x1dcu\xf7k\xe7\xcb[\x9ap\xec>g\x05\xf0\xfe\x07\x08\x80\xcf(\xdb\x05\xc6\x14\'/\x86}\xf0\'\xde\xff\xe6~3H\xe7\x0b\x1eX\xd1\'+S\x0eWJe\xd7\xfb\xa2\x80`\xfcL\xbc5S\x01j\x97r\x82\xaf\xf1\x1dp\xe8\x9c\xf5\xef^\xc2l\xc7G~Z\x94\x85&M;\xba\xebL\xe8\xb0\t\xc2e\xc2\x9d\x9d\t\x9bN\xb5\x97\x05\xac\xf5\x06\xa0\xf76\x05~\xf4\x90\xb2k\xc4\xb4\xf9d\xea\xe9\x1a\n\xc8\r\xa8\xed\'\xc9\xd4\xe7\xb3\xb9\xab\x82\"\x90\'=*\xe8|\x90\xef\xbcO\xfd\xe2\n$\xa7\xdee$\xa4]\xea\xc0v0\xd3wP\xf8\r\x04\x9b\x946\x01s\xca\x06X\xa6\xd3;\xdc\xfa\x04F\x13U\x8a\xc9DG\xb8Q9\x1a.\xe84\xe2y\xcbYJ\n\x7f\xbc\xa6\xef\x1f\x03gjY+%b\x93\xd9S\x19f<\'b)\x86M\xa4k\xee\xff\xd4N\xba\xd5\xb4\xe2\x8eHZ\x00\x19\t\xf1\x05\xd9\xce\x91\xb1\xf7\xeb\xe99O\xf6o\x04C\x9aU\xf5>\x05\x14\xbd\xbf\xb3Y\xb4\xd8\x8e3\x84\xa3\x90R\xaa\xb3\x02\x95`\xf9\x0cLh\xf9\xee\xd5\x17\r\xf8qW\xb5%\xe4)\xeee]\xaf\xd1\xee<\x17\x0bZC\xc5\xa5\x86\xea$\x9e\xe2\x05\x07\xdc4B\x12\x91\xd69t\xaeLA\x82\xdb\xf2\xa6H\xd1\xb3\x9b\xf33\xaa\xf3\xa6\xc0\xc5N\xf5\xf4\x9dvc\xe6\x02\xc6\"K\xc1\x95?Pd,T\xe5\xb6\xf0<)\xcfW\x02\x03\x01\x00\x01", name_constraints: None @@ -3110,7 +3208,7 @@ * nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02BM1\x190\x17\x06\x03U\x04\n\x13\x10QuoVadis Limited1\x1e0\x1c\x06\x03U\x04\x03\x13\x15QuoVadis Root CA 1 G3", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xa0\xbeP\x10\x8e\xe9\xf2l@\xb4\x04\x9c\x85\xb91\xca\xdc-\xe4\x11\xa9\x04<\x1bU\xc1\xe7X0\x1d$\xb4\xc3\xef\x85\xde\x8c,\xe1\xc1=\xdf\x82\xe6O\xadG\x87l\xec[I\xc1J\xd5\xbb\x8f\xec\x87\xac\x7f\x82\x9a\x86\xec=\x03\x99R\x01\xd25\x9e\xac\xda\xf0S\xc9f<\xd4\xac\x02\x01\xda$\xd3;\xa8\x02F\xaf\xa4\x1c\xe3\xf8sXv\xb7\xf6\x0e\x90\r\xb5\xf0\xcf\xcc\xfa\xf9\xc6L\xe5\xc3\x860\n\x8d\x17~5\xeb\xc5\xdf\xbb\x0e\x9c\xc0\x8d\x87\xe3\x888\x85g\xfa>\xc7\xab\xe0\x13\x9c\x05\x18\x98\xcf\x93\xf5\xb1\x92\xb4\xfc#\xd3\xcf\xd5\xc4\'I\xe0\x9e<\x9b\x08\xa3\x8b]*!\xe0\xfc9\xaaS\xda}~\xcf\x1a\tS\xbc]\x05\x04\xcf\xa1J\x8f\x8bv\x82\r\xa1\xf8\xd2\xc7\x14w[\x906\x07\x81\x9b>\x06\xfaR^c\xc5\xa6\x00\xfe\xa5\xe9R\x1bR\xb5\x929r\x03\tb\xbd\xb0`\x16n\xa6\xdd%\xc2\x03f\xdd\xf3\x04\xd1@\xe2N\x8b\x86\xf4o\xe5\x83\xa0\'\x84^\x04\xc1\xf5\x90\xbd0=\xc4\xef\xa8i\xbc8\x9b\xa4\xa4\x96\xd1b\xdai\xc0\x01\x96\xae\xcb\xc4Q4\xea\x0c\xaa\xff!\x8eY\x8fJ\\\xe4a\x9a\xa7\xd2\xe9*x\x8dQ=:\x15\xee\xa2Y\x8e\xa9\\\xde\xc5\xf9\x90\"\xe5\x88Eq\xdd\x91\x99lz\x9f==\x98|^\xf6\xbe\x16h\xa0^\xae\x0b#\xfcZ\x0f\xaa\"v-\xc9\xa1\x10\x1d\xe4\xd3D#\x90\x88\x9f\xc6*\xe6\xd7\xf5\x9a\xb3X\x1e/0\x89\x08\x1bT\xa2\xb5\x98#\xec\x08w\x1c\x95]a\xd1\xcb\x89\x9c_\xa2J\x91\x9a\xef!\xaaI\x16\x08\xa8\xbda(1\xc9t\xad\x85\xf6\xd9\xc5\xb1\x8b\xd1\xe5\x102M_\x8b :\xc8\xd0\x13\x9d\xad\xee\xe4E{\x89U\xf7\x8a\x1fbR\x84\x12\xb3\xc2@\x97\xe3\x8a\x1fG\x91\xa6tZ\xd2\xf8\xb1c(\x10\xb8\xb3\t\xb8Vw@\xa2&\x98y\xc6\xfe\xdf%\xee>\xe5\xa0\x7f\xd4a\x0fQK\xeb7\xf5\xb5\x19\xf8Ih\xb0\xde\xd7\xb9v8\x1da\x9e\xa4\xfe\x826\xa5\xe5JV\xe4E\xe1\xf9\xfd\xb4\x16\xfat\xda\x9c\x9b59/\xfa\xb0 P\x06lz\xd0\x80\xb2\xa6\xf9\xaf\xecG\x19\x8fP8\x07\xdc\xa2\x879X\xf8\xba\xd5\xa9\xf9Hg0\x96\xee\x94x^o\x89\xa3Q\xc00\x86f\xa1Ef\xbaT\xeb\xa3\xc3\x91\xf9H\xdc\xff\xd1\xe80-}-tp5\xd7\x88$\xf7\x9e\xc4Yn\xbbs\x87\x17\xf22F(\xb8C\xfa\xb7\x1d\xaa\xca\xb4\xf2\x9f$\x0e-K\xf7q\\^i\xff\xea\x95\x02\xcb8\x8a\xaeP8o\xdb\xfb-b\x1b\xc5\xc7\x1eT\xe1w\xe0g\xc8\x0f\x9c\x87#\xd6?@ \x7f \x80\xc4\x80L>;$&\x8e\x04\xael\x9a\xc8\xaa\r\x02\x03\x01\x00\x01", name_constraints: None }, /* + * Issuer: CN=SSL.com TLS RSA Root CA 2022 O=SSL Corporation + * Subject: CN=SSL.com TLS RSA Root CA 2022 O=SSL Corporation + * Label: "SSL.com TLS RSA Root CA 2022" + * Serial: 148535279242832292258835760425842727825 + * MD5 Fingerprint: d8:4e:c6:59:30:d8:fe:a0:d6:7a:5a:2c:2c:69:78:da + * SHA1 Fingerprint: ec:2c:83:40:72:af:26:95:10:ff:0e:f2:03:ee:31:70:f6:78:9d:ca + * SHA256 Fingerprint: 8f:af:7d:2e:2c:b4:70:9b:b8:e0:b3:36:66:bf:75:a5:dd:45:b5:de:48:0f:8e:a8:d4:bf:e6:be:bc:17:f2:ed + * -----BEGIN CERTIFICATE----- + * MIIFiTCCA3GgAwIBAgIQb77arXO9CEDii02+1PdbkTANBgkqhkiG9w0BAQsFADBO + * MQswCQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQD + * DBxTU0wuY29tIFRMUyBSU0EgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzQyMloX + * DTQ2MDgxOTE2MzQyMVowTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jw + * b3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgUlNBIFJvb3QgQ0EgMjAyMjCC + * AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANCkCXJPQIgSYT41I57u9nTP + * L3tYPc48DRAokC+X94xI2KDYJbFMsBFMF3NQ0CJKY7uB0ylu1bUJPiYYf7ISf5OY + * t6/wNr/y7hienDtSxUcZXXTzZGbVXcdotL8bHAajvI9AI7YexoS9UcQbOcGV0ins + * S657Lb85/bRi3pZ7QcacoOAGcvvwB5cJOYF0r/c0WRFXCsJbwST0MXMwgsadugL3 + * PnxEX4MN8/HdIGkWCVDi1FW24IBydm5MR7d1VVm0U3TZlMZBrViKMWYPHqIbKUBO + * L9975hYsLfy/7PO0+r4Y9ptJ1O4Fbtk085zx7AGL0SDGD6C1vBdOSHtRwvzpXGk3 + * R2azaPgVKPC506QVzFpPulJwoxJF3ca6TvvC0PeoUidtbnm1jPx7jMEWTO6Af77w + * dr5BUxIzrlo4QqvXDz5BjXYHMtWrifZOZ9mxQnUjbvPNQrL8VfVThxc7wDNY8VLS + * +YCk8OjwO4s4zKTGkH8PnP2L0aPP2oOnaclQNtVcBdIKQXTbYxE3waWglksejBYS + * d66UNHsef8JmAOSqg+qKkK3ONkRN0VHpvB/zagX9wHQfJRlAUW7qglFA35u5CCoG + * AtUjHBPW6dvbxrB6y3snm/vg1UYk7RBLY0ulBY+6uB0rpvqR4pJSvezrZ5dtmi2f + * gTIFZzL7SAg/2SW4BCUvAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j + * BBgwFoAU+y437uOEeicuzRk1sTN8/9REQrkwHQYDVR0OBBYEFPsuN+7jhHonLs0Z + * NbEzfP/UREK5MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAjYlt + * hEUY8U+zoO9opMAdrDC8Z2awms22qyIZZtM7QbUQnRC6cm4pJCAcAZli05bg4vsM + * QtfhWsSWTVTNj8pDU/0quOr4ZcoBwq1gaAafORpR2eCNJvkLTqVTJXojpBzOCBvf + * R4iyrT7gJ4eLSYwfqUdYe5byiB0YrrPRpgqU+tvT5TgKa3kSM/tKWTcWQA673vWJ + * DPFs0/dRa1419dvAJuoSc06pkZCmF8NsLzjUo3KUQyxi4U5cMj29TH0ZR6LDSeeW + * P4+a0zvkEdiLA9z2tmBVGKaBUfPhqBVq6+AL8BQx1rmMRTqoENjwuSfr98t67wVy + * lrXEj5ZzxOhWc5y8aVFjvO9nHEMaX3cZHxj4HCUp+UmZKbaSPaKDN7EgkaibMOlq + * bLQjk2UEqxHzDh1TJElTHaE/nUiSEeJ9DU/1172iWD54nR4fK/4huxoTtrEoZP2w + * AgDHbICivRZQIA9ygV/MlP+7mea6kMvq+cYMwq7FGc4zoWtcu358NFcXrfA/rs3q + * r5nsLFR+jM4uElZI7xc7P0peYNLcdDa8pUNjyw9bowJWCZ4kLOGGgYz+qxcs+sji + * Mho6/4UIyYOf8kpIEFR3N+2ivEC+5BB09+Rbu7nzifmPQdjH5FCQNYA+HLhNkNPU + * 98OwoX6EyneSMSy4kLGCenROmxMmtNVQZlR4rmA= + * -----END CERTIFICATE----- + */ + TrustAnchor { + subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x180\x16\x06\x03U\x04\n\x0c\x0fSSL Corporation1%0#\x06\x03U\x04\x03\x0c\x1cSSL.com TLS RSA Root CA 2022", + spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xd0\xa4\trO@\x88\x12a>5#\x9e\xee\xf6t\xcf/{X=\xce<\r\x10(\x90/\x97\xf7\x8cH\xd8\xa0\xd8%\xb1L\xb0\x11L\x17sP\xd0\"Jc\xbb\x81\xd3)n\xd5\xb5\t>&\x18\x7f\xb2\x12\x7f\x93\x98\xb7\xaf\xf06\xbf\xf2\xee\x18\x9e\x9c;R\xc5G\x19]t\xf3df\xd5]\xc7h\xb4\xbf\x1b\x1c\x06\xa3\xbc\x8f@#\xb6\x1e\xc6\x84\xbdQ\xc4\x1b9\xc1\x95\xd2)\xecK\xae{-\xbf9\xfd\xb4b\xde\x96{A\xc6\x9c\xa0\xe0\x06r\xfb\xf0\x07\x97\t9\x81t\xaf\xf74Y\x11W\n\xc2[\xc1$\xf41s0\x82\xc6\x9d\xba\x02\xf7>|D_\x83\r\xf3\xf1\xdd i\x16\tP\xe2\xd4U\xb6\xe0\x80rvnLG\xb7uUY\xb4St\xd9\x94\xc6A\xadX\x8a1f\x0f\x1e\xa2\x1b)@N/\xdf{\xe6\x16,-\xfc\xbf\xec\xf3\xb4\xfa\xbe\x18\xf6\x9bI\xd4\xee\x05n\xd94\xf3\x9c\xf1\xec\x01\x8b\xd1 \xc6\x0f\xa0\xb5\xbc\x17NH{Q\xc2\xfc\xe9\\i7Gf\xb3h\xf8\x15(\xf0\xb9\xd3\xa4\x15\xccZO\xbaRp\xa3\x12E\xdd\xc6\xbaN\xfb\xc2\xd0\xf7\xa8R\'mny\xb5\x8c\xfc{\x8c\xc1\x16L\xee\x80\x7f\xbe\xf0v\xbeAS\x123\xaeZ8B\xab\xd7\x0f>A\x8dv\x072\xd5\xab\x89\xf6Ng\xd9\xb1Bu#n\xf3\xcdB\xb2\xfcU\xf5S\x87\x17;\xc03X\xf1R\xd2\xf9\x80\xa4\xf0\xe8\xf0;\x8b8\xcc\xa4\xc6\x90\x7f\x0f\x9c\xfd\x8b\xd1\xa3\xcf\xda\x83\xa7i\xc9P6\xd5\\\x05\xd2\nAt\xdbc\x117\xc1\xa5\xa0\x96K\x1e\x8c\x16\x12w\xae\x944{\x1e\x7f\xc2f\x00\xe4\xaa\x83\xea\x8a\x90\xad\xce6DM\xd1Q\xe9\xbc\x1f\xf3j\x05\xfd\xc0t\x1f%\x19@Qn\xea\x82Q@\xdf\x9b\xb9\x08*\x06\x02\xd5#\x1c\x13\xd6\xe9\xdb\xdb\xc6\xb0z\xcb{\'\x9b\xfb\xe0\xd5F$\xed\x10KcK\xa5\x05\x8f\xba\xb8\x1d+\xa6\xfa\x91\xe2\x92R\xbd\xec\xebg\x97m\x9a-\x9f\x812\x05g2\xfbH\x08?\xd9%\xb8\x04%/\x02\x03\x01\x00\x01", + name_constraints: None + }, + + /* * Issuer: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited * Subject: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited * Label: "QuoVadis Root CA 2 G3" @@ -3237,7 +3382,7 @@ * WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02BM1\x190\x17\x06\x03U\x04\n\x13\x10QuoVadis Limited1\x1e0\x1c\x06\x03U\x04\x03\x13\x15QuoVadis Root CA 2 G3", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xa1\xae%\xb2\x01\x18\xdcW\x88?F\xeb\xf9\xaf\xe2\xeb#q\xe2\x9a\xd1af!_\xaa\xaf\'Q\xe5n\x1b\x16\xd4-}P\xb0Sw\xbdx:`\xe2d\x02\x9b|\x86\x9b\xd6\x1a\x8e\xad\xff\x1f\x15\x7f\xd5\x95\x1e\x12\xcb\xe6\x14\x84\x04\xc1\xdf6\xb3\x16\x9f\x8a\xe3\xc9\xdb\x984\xce\xd83\x17(F\xfc\xa7\xc9\xf0\xd2\xb4\xd5M\trI\xf9\xf2\x87\xe3\xa9\xda}\xa1}k\xb2:%\xa9mRD\xac\xf8\xben\xfb\xdc\xa6s\x91\x90a\xa6\x03\x14 \xf2\xe7\x87\xa3\x88\xad\xad\xa0\x8c\xff\xa6\x0b%R%\xe7\x16\x01\xd5\xcb\xb85\x81\x0c\xa3;\xf0\xe1\xe1\xfcZ]\xce\x80qm\xf8I\xab>;\xba\xb8\xd7\x80\x01\xfb\xa5\xeb[\xb3\xc5^`*1\xa0\xaf7\xe8 :\x9f\xa82,\x0c\xcc\t\x1d\xd3\x9e\x8e]\xbcL\x98\xee\xc5\x1ah{\xecS\xa6\xe9\x145\xa3\xdf\xcd\x80\x9f\x0cH\xfb\x1c\xf4\xf1\xbfJ\xb8\xfa\xd5\x8cqJ\xc7\x1f\xad\xfeA\x9a\xb3\x83]\xf2\x84V\xef\xa5WC\xce)\xad\x8c\xabU\xbf\xc4\xfb[\x01\xdd#!\xa1X\x00\x8e\xc3\xd0j\x13\xed\x13\xe3\x12+\x80\xdcg\xe6\x95\xb2\xcd\x1e\"n*\xf8A\xd4\xf2\xca\x14\x07\x8d\x8aU\x12\xc6i\xf5\xb8\x86h/S^\xb0\xd2\xaa!\xc1\x98\xe60\xe3gU\xc7\x9bn\xac\x19\xa8U\xa6E\x06\xd0#:\xdb\xebe]*\x11\x11\xf0;O\xcam\xf44\xc4q\xe4\xff\x00Z\xf6\\\xae#`\x85s\xf1\xe4\x10\xb1%\xae\xd5\x92\xbb\x13\xc1\x0c\xe09\xda\xb49W\xb5\xab5\xaar!;\x835\xe71\xdfz!n\xb82\x08}\x1d2\x91\x15Jbr\xcf\xe3w\xa1\xbc\xd5\x11\x1bv\x01g\x08\xe0A\x0b\xc3\xeb\x15n\xf8\xa4\x19\xd9\xa2\xab\xaf\xe2\'RV+\x02\x8a,\x14$\xf9\xbfB\x02\xbf&\xc8\xc6\x8f\xe0n8}S-\xe5\xed\x98\xb3\x95ch\x7f\xf95\xf4\xdf\x88\xc5`5\x92\xc0|i\x1ca\x95\x16\xd0\xeb\xde\x0b\xaf>\x04\x10EeXP8\xafH\xf2Y\xb6\x16\xf2<\r\x90\x02\xc6p.\x01\xad<\x15\xd7\x02\x03\x01\x00\x01", name_constraints: None @@ -3275,7 +3420,7 @@ * BSeOE6Fuwg== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02DE1+0)\x06\x03U\x04\n\x0c\"T-Systems Enterprise Services GmbH1\x1f0\x1d\x06\x03U\x04\x0b\x0c\x16T-Systems Trust Center1%0#\x06\x03U\x04\x03\x0c\x1cT-TeleSec GlobalRoot Class 2", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xaa_\xda\x1b_\xe8s\x91\xe5\xda\\\xf4\xa2\xe6G\xe5\xf3hU`\x05\x1d\x02\xa4\xb3\x9bY\xf3\x1e\x8a\xaf4\xad\xfc\r\xc2\xd9H\x19\xeei\x8f\xc9 \xfc!\xaa\x07\x19\xed\xb0\\\xace\xc7_\xed\x02|{|-\x1b\xd6\xba\xb9\x80\xc2\x18\x82\x16\x84\xfaf\xb0\x08\xc6T#\x81\xe4\xcd\xb9I?\xf6On7H(8\x0f\xc5\xbe\xe7hp\xfd9\x97M\xd2\xc7\x98\x91P\xaa\xc4D\xb3#}9G\xe9Rb\xd6\x12\x93^\xb71\x96B\x05\xfbv\xa7\x1e\xa3\xf5\xc2\xfc\xe9z\xc5l\xa9qO\xea\xcbx\xbc`\xaf\xc7\xde\xf4\xd9\xcb\xbe~3\xa5n\x94\x83\xf04\xfa!\xab\xea\x8er\xa0?\xa4\xde0[\xef\x86Mj\x95[CD\xa8\x10\x15\x1c\xe5\x01W\xc5\x98\xf1\xe6\x06(\x91\xaa \xc5\xb7S&QC\xb2\x0b\x11\x95X\xe1\xc0\x0fv\xd9\xc0\x8d|\x81\xf3rp\x9eo\xfe\x1a\x8e\xd9_5\xc6\xb2o4|\xbeHO\xe2Z9\xd7\xd8\x9dx\x9e\x9f\x86>\x03^\x19\x8bD\xa2\xd5\xc7\x02\x03\x01\x00\x01", name_constraints: None @@ -3305,7 +3450,7 @@ * DDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7 * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x110\x0f\x06\x03U\x04\x08\x13\x08Illinois1\x100\x0e\x06\x03U\x04\x07\x13\x07Chicago1!0\x1f\x06\x03U\x04\n\x13\x18Trustwave Holdings, Inc.1:08\x06\x03U\x04\x03\x131Trustwave Global ECC P256 Certification Authority", spki: b"0\x13\x06\x07*\x86H\xce=\x02\x01\x06\x08*\x86H\xce=\x03\x01\x07\x03B\x00\x04~\xfbl\xe6#\xe3s2\x08\xca`\xe6S\x9c\xbat\x8d\x18\xb0x\x90R\x80\xdd8\xc0J\x1d\xd1\xa8\xcc\x93\xa4\x97\x068\xca\r\x15b\xc6\x8e\x01*e\x9d\xaa\xdf4\x91.\x81\xc1\xe43\x921\xc4\xfd\t:\xa6?\xad", name_constraints: None @@ -3351,7 +3496,7 @@ * emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1)0\'\x06\x03U\x04\n\x13 Internet Security Research Group1\x150\x13\x06\x03U\x04\x03\x13\x0cISRG Root X1", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xad\xe8$s\xf4\x147\xf3\x9b\x9e+W(\x1c\x87\xbe\xdc\xb7\xdf8\x90\x8cn<\xe6W\xa0x\xf7u\xc2\xa2\xfe\xf5jn\xf6\x00O(\xdb\xdeh\x86lD\x93\xb6\xb1c\xfd\x14\x12k\xbf\x1f\xd2\xea1\x9b!~\xd13<\xbaH\xf5\xddy\xdf\xb3\xb8\xff\x12\xf1!\x9aK\xc1\x8a\x86qiJffl\x8f~Y>\xdd&\xf5$\xc9\x11\xa7Z\xa3L@\x1fF\xa1\x99\xb5\xa7:Qn\x86;\x9e}r\xa7\x12\x05xY\xed>Qx\x15\x0b\x03\x8f\x8d\xd0/\x05\xb2>{J\x1cKs\x05\x12\xfc\xc6\xea\xe0P\x13|C\x93t\xb3\xcat\xe7\x8e\x1f\x01\x08\xd00\xd4[q6\xb4\x07\xba\xc100\\H\xb7\x82;\x98\xa6}`\x8a\xa2\xa3)\x82\xcc\xba\xbd\x83\x04\x1b\xa2\x83\x03A\xa1\xd6\x05\xf1\x1b\xc2\xb6\xf0\xa8|\x86;F\xa8H*\x88\xdcv\x9av\xbf\x1fj\xa5=\x19\x8f\xeb8\xf3d\xde\xc8+\r\n(\xff\xf7\xdb\xe2\x15B\xd4\"\xd0\']\xe1y\xfe\x18\xe7p\x88\xadN\xe6\xd9\x8b:\xc6\xdd\'Qn\xff\xbcd\xf53CO\x02\x03\x01\x00\x01", name_constraints: None @@ -3400,7 +3545,7 @@ * yeC2nOnOcXHebD8WpHk= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x110\x0f\x06\x03U\x04\x08\x0c\x08Illinois1\x100\x0e\x06\x03U\x04\x07\x0c\x07Chicago1!0\x1f\x06\x03U\x04\n\x0c\x18Trustwave Holdings, Inc.110/\x06\x03U\x04\x03\x0c(Trustwave Global Certification Authority", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xb9]Q(K<7\x92\xd1\x82\xce\xbd\x1d\xbd\xcd\xdd\xb8\xab\xcf\n>\xe1]\xe5\xdc\xaa\t\xb9W\x02>\xe6ca\xdf\xf2\x0f\x82c\xae\xa3\xf7\xacs\xd1|\xe7\xb3\x0b\xaf\x08\x00\tY\x7f\xcd)*\x88\x93\x87\x17\x18\x80\xed\x88\xb2\xb4\xb6\x10\x1f-\xd6_U\xa2\x13]\xd1\xc6\xeb\x06V\x89\x88\xfe\xac2\x9d\xfd\\\xc3\x05\xc7n\xee\x86\x89\xba\x88\x03\x9dr!\x86\x90\xae\x8f\x03\xa5\xdc\x9f\x88(\xcb\xa3\x92I\x0f\xec\xd0\x0f\xe2mDO\x80j\xb2\xd4\xe7\xa0\nS\x01\xba\x8e\x97\x91vn\xbc\xfc\xd5k6\xe6@\x88\xd6{/_\x05\xe8,m\x11\xf3\xe7\xb2\xbe\x92DL\xd2\x97\xa4\xfe\xd2r\x81C\x07\x9c\xe9\x11>\xf5\x8b\x1aY}\x1fhX\xdd\x04\x00,\x96\xf3C\xb3~\x98\x19t\xd9\x9cs\xd9\x18\xbeA\xc74y\xd9\xf4b\xc2C\xb9\xb3\'\xb0\"\xcb\xf9=R\xc70G\xb3\xc9>\xb8j\xe2\xe7\xe8\x81p^B\x8bO&\xa5\xfe:\xc2 n\xbb\xf8\x16\x8e\xcd\x0c\xa9\xb4\x1blv\x10\xe1XyF>T\xce\x80\xa8W\t7)\x1b\x99\x13\x8f\x0c\xc8\xd6,\x1c\xfb\x05\xe8\x08\x95=eF\xdc\xee\xcdi\xe2M\x8f\x87(N4\x0b>\xcf\x14\xd9\xbb\xdd\xb6P\x9a\xadw\xd4\x19\xd6\xda\x1a\x88\xc8N\x1b\'u\xd8\xb2\x08\xf1\xae\x830\xb9\x11\x0e\xcd\x87\xf0\x84\x8d\x15r|\xa1\xef\xcc\xf2\x88a\xba\xf4i\xbb\x0c\x8c\x0buW\x04\xb8N*\x14.=\x0f\x1c\x1e2\xa6b6\xeef\xe2\"\xb8\x05@c\x10\"\xf33\x1dtr\x8a,\xf59)\xa0\xd3\xe7\x1b\x80\x84-\xc5=\xe3M\xb1\xfd\x1ao\xbae\x07;X\xecBE&\xfb\xd8\xda%r\xc4\xf6\x00\xb1\"y\xbd\xe3|YbJ\x9c\x05o=\xce\xe6\xd6Gc\x99\xc6$or\x12\xc8\xac\x7f\x90\xb4\x0b\x91p\xe8\xb7\xe6\x16\x10q\x17\xce\xde\x06OHA}5J\xa3\x89\xf2\xc9K{A\x11mg\xb7\x08\x98L\xe5\x11\x19\xaeB\x80\xdc\xfb\x90\x05\xd4\xf8P\xca\xbe\xe4\xad\xc7\xc2\x94\xd7\x16\x9d\xe6\x17\x8f\xaf6\xfb\x02\x03\x01\x00\x01", name_constraints: None @@ -3446,7 +3591,7 @@ * Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02NO1\x1d0\x1b\x06\x03U\x04\n\x0c\x14Buypass AS-9831633271 0\x1e\x06\x03U\x04\x03\x0c\x17Buypass Class 2 Root CA", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xd7\xc7^\xf7\xc1\x07\xd4w\xfbC!\xf4\xf4\xf5i\xe4\xee2\x01\xdb\xa3\x86\x1f\xe4Y\r\xba\xe7u\x83R\xeb\xea\x1ca\x15H\xbb\x1d\x07\xca\x8c\xae\xb0\xdc\x96\x9d\xea\xc3`\x92\x86\x82(s\x9cV\x06\xffKd\xf0\x0c*7I\xb5\xe5\xcf\x0c|\xee\xf1J\xbbs0e\xf3\xd5/\x83\xb6~\xe3\xe7\xf5\x9e\xab`\xf9\xd3\xf1\x9d\x92t\x8a\xe4\x1c\x96\xac[\x80\xe9\xb5\xf41\x87\xa3Q\xfc\xc7~\xa1o\x8eSw\xd4\x97\xc1U3\x92>\x18/u\xd4\xad\x86I\xcb\x95\xafT\x06l\xd8\x06\x13\x8d[\xff\xe1&\x19Y\xc0$\xba\x81qy\x90DPh$\x94_\xb8\xb3\x11\xf1)Aa\xa3A\xcb#6\xd5\xc1\xf12P\x10N\x7f\xf4\x86\x93\xec\x84\xd3\x8e\xbcK\xbf\\\x01N\x07=\xdc\x14\x8a\x94\n\xa4\xeas\xfb\x0bQ\xe8\x13\x07\x18\xfa\x0e\xf1+\xd1T\x15}<\xe1\xf7\xb4\x19Bgb^w\xe0\xa2U\xec\xb6\xd9i\x17\xd5:\xafD\xedJ\xc5\x9e\xe4z\'|\xe5u\xd7\xaa\xcb%\xe7\xdfk\n\xdb\x0fM\x93N\xa8\xa0\xcd{.\xf2Y\x01j\xb7\r\xb8\x07\x81~\x8b8\x1b8\xe6\nW\x99=\xee!\xe8\xa3\xf5\x0c\x16\xdd\x8b\xec4\x8e\x9c*\x1c\x00\x15\x17\x8dh\x83\xd2p\x9f\x18\x08\xcd\x11h\xd5\xc9kR\xcd\xc4F\x8f\xdc\xb5\xf3\xd8Ws\x1e\xe9\x949\x04\xbf\xd3\xde8\xde\xb4S\xeci\x1c\xa2~\xc4\x8f\xe4\x1bp\xad\xf2\xa2\xf9\xfb\xf7\x16dfi\x9fIQ\xa2\xe2\x15\x18g\x06J\x7f\xd5l\xb5M\xb33\xe0a\xeb]\xbe\xe9\x98\x0f2\xd7\x1dK<.Z\x01R\x91\t\xf2\xdf\xea\x8d\xd8\x06@c\xaa\x11\xe4\xfe\xc37\x9e\x14R?\xf4\xe2\xcc\xf2a\x93\xd1\xfdgk\xd7R\xae\xbfh\xab@C\xa0W5Sx\xf0S\xf8aB\x07d\xc6\xd7o\x9bL8\rc\xacb\xaf6\x8b\xa2s\n\r\xf5!\xbdt\xaaM\xear\x03I\xdb\xc7_\x1dbc\xc7\xfd\xdd\x91\xec3\xee\xf5m\xb4n0h\xde\xc8\xd6&\xb0u^{\xb4\x07 \x98\xa1v2\xb8MlO\x02\x03\x01\x00\x01", name_constraints: None @@ -3493,7 +3638,7 @@ * qfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02AT1#0!\x06\x03U\x04\n\x13\x1ae-commerce monitoring GmbH1\x190\x17\x06\x03U\x04\x03\x13\x10GLOBALTRUST 2020", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xae.V\xad\x1b\x1c\xef\xf6\x95\x8f\xa0w\x1b+\xd3c\x8f\x84ME\xa2\x0f\x9f[E\xabY{Q4\xf9\xec\x8b\x8ax\xc5\xddk\xaf\xbd\xc4\xdf\x93E\x1e\xbf\x918\x0b\xae\x0e\x16\xe7As\xf8\xdb\xbb\xd1\xb8Q\xe0\xcb\x83;s8nw\x8a\x0fYc&\xcd\xa7*\xceT\xfb\xb8\xe2\xc0|G\xce`|?\xb2s\xf2\xc0\x19\xb6\x8a\x92\x875\r\x90(\xa2\xe4\x15\x04c>\xba\xaf\xee|^\xcc\xa6\x8bP\xb28\xf7Ac\xca\xce\xffi\x8fh\x0e\x956\xe5\xcc\xb9\x8c\t\xcaK\xdd1\x90\x96\xc8\xcc\x1f\xfdV\x964\xdb\x8e\x1c\xea,\xbe\x85.c\xdd\xaa\xa9\x95\xd3\xfd)\x95\x13\xf0\xc8\x98\x93\xd9-\x16G\x90\x11\x83\xa2:\"\xa2(W\xa2\xeb\xfe\xc0\x8c(\xa0\xa6}\xe7*B;\x82\x80c\xa5c\x1f\x19\xcc|\xb2f\xa8\xc2\xd3m7o\xe2~\x06Q\xd9E\x84\x1f\x12\xce$Rd\x85\x0bH\x80N\x87\xb1\"\"0\xaa\xeb\xae\xbe\xe0\x02\xe0@\xe8\xb0B\x80\x03Q\xaa\xb4~\xaaD\xd7Ca\xf3\xa2k\x16\x89I\xa4\xa3\xa4+\x8a\x02\xc4x\xf4h\x8a\xc1\xe4z6\xb1o\x1b\x96\x1bwI\x8d\xd4\xc9\x06r\x8f\xcfS\xe3\xdc\x17\x85 J\xdc\x98\'\xd3\x91&+G\x1ei\x07\xaf\xde\xa2\xe4\xe4\xd4k\x0b\xb3^|\xd4$\x80G)i;n\xe8\xac\xfd@\xeb\xd8\xedqq+\xf2\xe8X\x1d\xebA\x97\"\xc5\x1f\xd49\xd0\'\x8f\x87\xe3\x18\xf4\xe0\xa9F\r\xf5t:\x82.\xd0n,\x91\xa31\\;F\xea{\x04\x10V^\x80\x1d\xf5\xa5e\xe8\x82\xfc\xe2\x07\x8cbE\xf5 \xdeFp\x86\xa1\xbc\x93\xd3\x1et\xa6l\xb0,\xf7\x03\x0c\x88\x0c\xcb\xd4rS\x86\xbc`F\xf3\x98j\xc2\xf1\xbfC\xf9p w\xca7AyURc\x8d[\x12\x9f\xc5h\xc4\x88\x9d\xac\xf20\xab\xb7\xa31\x97g\xad\x8f\x17\x0fl\xc7s\xed$\x94k\xc8\x83\x9a\xd0\x9a7I\x04\xab\xb1\x16\xc8lII-\xab\xa1\xd0\x8c\x92\xf2AJy!%\xdbc\xd7\xb6\x9c\xa7~Bi\xfb:c\x02\x03\x01\x00\x01", name_constraints: None @@ -3552,7 +3697,7 @@ * pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7 * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x120\x10\x06\x03U\x04\x03\x0c\tACCVRAIZ11\x100\x0e\x06\x03U\x04\x0b\x0c\x07PKIACCV1\r0\x0b\x06\x03U\x04\n\x0c\x04ACCV1\x0b0\t\x06\x03U\x04\x06\x13\x02ES", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\x9b\xa9\xab\xbfaJ\x97\xaf/\x97f\x9at_\xd0\xd9\x96\xfd\xcf\xe2\xe4f\xef\x1f\x1fG3\xc2D\xa3\xdf\x9a\xde\x1f\xb5T\xdd\x15|i5\x11o\xbb\xc8\x0c\x8ej\x18\x1e\xd8\x8f\xd9\x16\xbc\x10H6\\\xf0c\xb3\x90Z\\$7\xd7\xa3\xd6\xcb\tq\xb9\xf1\x01r\x84\xb0}\xdbM\x80\xcd\xfc\xd3o\xc9\xf8\xda\xb6\x0e\x82\xd2E\x85\xa8\x1bh\xa8=\xe8\xf4Dl\xbd\xa1\xc2\xcb\x03\xbe\x8c>\x13\x00\x84\xdfJH\xc0\xe3\"\n\xe8\xe97\xa7\x18L\xb1\t\r#V\x7f\x04M\xd9\x17\x84\x18\xa5\xc8\xda@\x94s\xeb\xce\x0eW<\x03\x81:\x9d\n\xa1WCi\xacWmy\x90x\xe5\xb5\xb4;\xd8\xbcL\x8d(\xa1\xa7\xa3\xa7\xba\x02N%\xd1*\xae\xed\xae\x03\"\xb8k \x0f0(T\x95\x7f\xe0\xee\xce\nf\x9d\xd1@-n\"\xaf\x9d\x1a\xc1\x05\x19\xd2o\xc0\xf2\x9f\xf8{\xb3\x02B\xfbP\xa9\x1d-\x93\x0f#\xab\xc6\xc1\x0f\x92\xff\xd0\xa2\x15\xf5S\tq\x1c\xffE\x13\x84\xe6&^\xf8\xe0\x88\x1c\n\xfc\x16\xb6\xa8s\x06\xb8\xf0c\x84\x02\xa0\xc6Z\xec\xe7t\xdfp\xae\xa3\x83%\xea\xd6\xc7\x97\x87\x93\xa7\xc6\x8a\x8a3\x97`7\x10>\x97>n)\x15\xd6\xa1\x0f\xd1\x88,\x12\x9fo\xaa\xa4\xc6B\xebA\xa2\xe3\x95C\xd3\x01\x85m\x8e\xbb;\xf3#6\xc7\xfe;\xe0\xa1%\x07H\xab\xc9\x89t\xff\x08\x8f\x80\xbf\xc0\x96e\xf3\xee\xecKh\xbd\x9d\x88\xc31\xb3@\xf1\xe8\xcf\xf68\xbb\x9c\xe4\xd1\x7f\xd4\xe5X\x9b|\xfa\xd4\xf3\x0e\x9bu\x91\xe4\xbaR.\x19~\xd1\xf5\xcdZ\x19\xfc\xba\x06\xf6\xfbR\xa8K\x99\x04\xdd\xf8\xf9\xb4\x8bP\xa3Nb\x89\xf0\x87$\xfa\x83B\xc1\x87\xfa\xd5-)*Zqzdj\xd7\'`c\r\xdb\xceI\xf5\x8d\x1f\x90\x892\x17\xf8sC\xb8\xd2Z\x93\x86a\xd6\xe1u\n\xeayfv\x88Oq\xeb\x04%\xd6\nZz\x93\xe5\xb9K\x17@\x0f\xb1\xb6\xb9\xf5\xdeO\xdc\xe0\xb3\xac;\x11p`\x84JCn\x99 \xc0)q\n\xc0e\x02\x03\x01\x00\x01", name_constraints: None @@ -3598,7 +3743,7 @@ * UB+K+wb1whnw0A== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02CN1\x110\x0f\x06\x03U\x04\n\x0c\x08UniTrust1\x1b0\x19\x06\x03U\x04\x03\x0c\x12UCA Global G2 Root", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xc5\xe6+o|\xef&\x05\'\xa3\x81$\xdao\xcb\x01\xf9\x99\x9a\xa92\xc2\"\x87aA\x91;\xcb\xc3h\x1b\x06\xc5L\xa9+\xc1g\x17\"\x1d+\xed\xf9)\x89\x93\xa2x\xbd\x92k\xa0\xa3\r\xa2~\xca\x93\xb3\xa6\xd1\x8c5\xd5u\xf9\x17\xf6\xcfE\xc5\xe5z\xecw\x93\xa0\x8f#\xae\x0e\x1a\x03\x7f\xbe\xd4\xd0\xed.{\xabF#[\xff,\xe6Tz\x94\xc0*\x15\xf0\xc9\x8d\xb0z;$\xe1\xd7h\xe21<\x063F\xb6T\x11\xa6\xa5/\"T*X\r\x01\x02\xf1\xfa\x15Qgl\xc0\xfa\xd7\xb6\x1b\x7f\xd1V\x88/\x1a:\x8d;\xbb\x82\x11\xe0G\x00\xd0R\x87\xab\xfb\x86~\x0f$k@\x9d4g\xbc\x8d\xc7-\x86oy>\x8e\xa9<\x17K\x7f\xb0\x99\xe3\xb0q`\xdc\x0b\xf5d\xc3\xceC\xbcmq\xb9\xd2\xde\'[\x8a\xe8\xd8\xc6\xae\xe1Y}\xcf(-5\xb8\x95V\x1a\xf1\xb2XK\xb7\x127\xc8|\xb3\xedK\x80\xe1\x8d\xfa2#\xb6o\xb7H\x95\x08\xb1DN\x85\x8c:\x02T /\xdf\xbfWO;:\x90!\xd7\xc1&5T \xec\xc7?G\xec\xefZ\xbfKz\xc1\xad;\x17P\\b\xd8\x0fKJ\xdc+\xfan\xbcs\x92\xcd\xec\xc7P\xe8A\x96\xd7\xa9~m\xd8\xe9\x1d\x8f\x8a\xb5\xb9X\x92\xbaJ\x92+\x0cV\xfd\x80\xeb\x08\xf0^)n\x1b\x1c\x0c\xaf\x8f\x93\x89\xad\xdb\xbd\xa3\x9e!\xca\x89\x19\xec\xdf\xb5\xc3\x1a\xeb\x16\xfex6L\xd6n\xd0>\x17\x1c\x90\x17k&\xba\xfbz/\xbf\x11\x1c\x18\x0e-s\x03\x8f\xa0\xe55\xa0Z\xe2Lu\x1dq\xe198Sx@\xcc\x83\x93\xd7\n\x9e\x9d[\x8f\x8a\xe4\xe5\xe0H\xe4H\xb2G\xcdN*u*{\xf2\"\xf6\xc9\xbe\t\x91\x96Wz\x88\x88\xac\xeep\xac\xf9\xdc)\xe3\x0c\x1c;\x12ND\xd6\xa7N\xb0&\xc8\xf3\xd9\x1a\x97\x91h\xea\xef\x8dF\x06\xd2VEX\x9a<\x0c\x0f\x83\xb8\x05%\xc39\xcf;\xa44\x89\xb7y\x12/G\xc5\xe7\xa9\x97i\xfc\xa6wg\xb5\xdf{\xf1ze\x15\xe4aVe\x02\x03\x01\x00\x01", name_constraints: None @@ -3648,7 +3793,7 @@ * vm9qp/UsQu0yrbYhnr68 * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02GR1\x0f0\r\x06\x03U\x04\x07\x13\x06Athens1D0B\x06\x03U\x04\n\x13;Hellenic Academic and Research Institutions Cert. Authority1@0>\x06\x03U\x04\x03\x137Hellenic Academic and Research Institutions RootCA 2015", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xc2\xf8\xa9?\x1b\x89\xfc<<\x04]=\x906\xb0\x91:y\xdf\xac\xaf\xe7\xa1\x88k1\xaf\xf0\x8b\xd0\x183\xb8\xdbEj4\xf4\x02\x80$(\n\x02\x15\x95^v*\r\x99:\x14[\xf6\xcb\xcbS\xbc\x13M\x01\x887\x94%\x1bB\xbc\"\xd8\x8e\xa3\x96^:\xd92\xdb>\xe8\xf0\x10e\xedt\xe1/\xa7|\xaf\'4\xbb)}\x9b\xb6\xcf\t\xc8\xe5\xd3\n\xfc\x88eet\n\xdcs\x1c\\\xcd@\xb1\x1c\xd4\xb6\x84\x8cLP\xcfh\x8e\xa8Y\xae\xc2\'N\x82\xa25\xdd\x14\xf4\x1f\xff\xb2w\xd5\x87/\xaan}$\'\xe7\xc6\xcb&\xe6\xe5\xfeg\x07c\xd8E\r\xdd:Ye9Xz\x92\x99r=\x9c\x84^\x88!\xb8\xd5\xf4,\xfc\xd9pROx\xb8\xbd<+\x8b\x95\x98\xf5\xb3\xd1h\xcf \x14~L\\_\xe7\x8b\xe5\xf55\x81\x197\xd7\x11\x08\xb7f\xbe\xd3J\xce\x83W\x00:\xc3\x81\xf8\x17\xcb\x926]\xd1\xa3\xd8u\x1b\xe1\x8b\'\xeazHA\xfdE\x19\x06\xad\'\x99N\xc1pG\xdd\xb5\x9f\x81S\x12\xe5\xb1\x8cH]1C\x17\xe3\x8c\xc6zc\x96K)0N\x84Nb\x19^<\xce\x97\x90\xa5\x7f\x01\xeb\x9d\xe0\xf8\x8b\x89\xdd%\x98=\x92\xb6~\xef\xd9\xf1QQ}-&\xc8iYa\xe0\xacj\xb8*6\x11\x04zP\xbd2\x84\xbe/\xdcr\xd5\xd7\x1d\x16G\xe4Gf ?\xf4\x96\xc5\xaf\x8e\x01z\xa5\x0fzd\xf5\r\x18\x87\xd9\xae\x88\xd5\xfa\x84\xc1:\xc0i(-\xf2\rhQ\xaa\xe3\xa5w\xc6\xa4\x90\x0e\xa17\x8b1#G\xc1\t\x08\xebn\xf7x\x9b\xd7\x82\xfc\x84 \x99I\x19\xb6\x12F\xb1\xfbEU\x16\xa9\xa3e\xac\x9c\x07\x0f\xeak\xdc\x1f.\x06r\xec\x86\x88\x12\xe4-\xdb_\x05/\xe4\xf0\x03\xd3&3\xe7\x80\xc2\xcdB\xa1\x174\x0b\x02\x03\x01\x00\x01", name_constraints: None @@ -3684,7 +3829,7 @@ * LvWpCz/UXeHPhJ/iGcJfitYgHuNztw== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02PL1(0&\x06\x03U\x04\n\x0c\x1fKrajowa Izba Rozliczeniowa S.A.1\x180\x16\x06\x03U\x04\x03\x0c\x0fSZAFIR ROOT CA2", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xb7\xbc>P\xa8K\xcd@\xb5\xcea\xe7\x96\xca\xb4\xa1\xda\x0c\"\xb0\xfa\xb5{v\x00w\x8c\x0b\xcf}\xa8\x86\xcc&Q\xe4 =\x85\x0c\xd6X\xe3\xe7\xf4*\x18\x9d\xda\xd1\xae&\xee\xebS\xdc\xf4\x90\xd6\x13J\x0c\x90<\xc3\xf4\xda\xd2\x8e\r\x92:\xdc\xb1\xb1\xff8\xde\xc3\xba-_\x80\xb9\x02\xbdJ\x9d\x1b\x0f\xb4\xc3\xc2\xc1g\x03\xdd\xdc\x1b\x9c=\xb3\xb0\xde\x00\x1e\xa84G\xbb\x9a\xeb\xfe\x0b\x14\xbd6\x84\xda\r \xbf\xfa[\xcb\xa9\x16 \xad9`\xee/u\xb6\xe7\x97\x9c\xf9>\xfd~MoM/\xef\x88\rj\xfa\xdd\xf1=n \xa5\xa0\x12\xb4Mp\xb9\xce\xd7r;\x89\x93\xa7\x80\x84\x1c\'IrI\xb5\xff;\x95\x9e\xc1\xcc\xc8\x01\xec\xe8\x0e\x8a\n\x96\xe7\xb3\xa6\x87\xe5\xd6\xf9\x05+\r\x97@p<\xba\xacuZ\x9c\xd5M\x9d\x02\n\xd2K\x9bfKF\x07\x17e\xad\x9fl\x88\x00\xdc\"\x89\xe0\xe1d\xd4g\xbc1ya<\xbb\xcaA\xcd\\j\x00\xc8<8\x8eX\xaf\x02\x03\x01\x00\x01", name_constraints: None @@ -3711,60 +3856,38 @@ * bmF0774BxL4YSFlhgjICICadVGNA3jdgUM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1$0\"\x06\x03U\x04\x0b\x13\x1bGlobalSign ECC Root CA - R41\x130\x11\x06\x03U\x04\n\x13\nGlobalSign1\x130\x11\x06\x03U\x04\x03\x13\nGlobalSign", spki: b"0\x13\x06\x07*\x86H\xce=\x02\x01\x06\x08*\x86H\xce=\x03\x01\x07\x03B\x00\x04\xb8\xc6y\xd3\x8fl%\x0e\x9f.9\x19\x1c\x03\xa4\xae\x9a\xe59\x07\t\x16\xcac\xb1\xb9\x86\xf8\x8aW\xc1W\xceB\xfas\xa1\xf7eB\xff\x1e\xc1\x00\xb2ns\x0e\xff\xc7!\xe5\x18\xa4\xaa\xd9q?\xa8\xd4\xb9\xce\x8c\x1d", name_constraints: None }, /* - * Issuer: CN=E-Tugra Certification Authority O=E-TuÄŸra EBG BiliÅŸim Teknolojileri ve Hizmetleri A.Åž. OU=E-Tugra Sertifikasyon Merkezi - * Subject: CN=E-Tugra Certification Authority O=E-TuÄŸra EBG BiliÅŸim Teknolojileri ve Hizmetleri A.Åž. OU=E-Tugra Sertifikasyon Merkezi - * Label: "E-Tugra Certification Authority" - * Serial: 7667447206703254355 - * MD5 Fingerprint: b8:a1:03:63:b0:bd:21:71:70:8a:6f:13:3a:bb:79:49 - * SHA1 Fingerprint: 51:c6:e7:08:49:06:6e:f3:92:d4:5c:a0:0d:6d:a3:62:8f:c3:52:39 - * SHA256 Fingerprint: b0:bf:d5:2b:b0:d7:d9:bd:92:bf:5d:4d:c1:3d:a2:55:c0:2c:54:2f:37:83:65:ea:89:39:11:f5:5e:55:f2:3c - * -----BEGIN CERTIFICATE----- - * MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNV - * BAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBC - * aWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNV - * BAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQDDB9FLVR1 - * Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMwNTEyMDk0OFoXDTIz - * MDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+ - * BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhp - * em1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN - * ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 - * MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4vU/kwVRHoViVF56C/UY - * B4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vdhQd2h8y/L5VMzH2nPbxH - * D5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5KCKpbknSF - * Q9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEo - * q1+gElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3D - * k14opz8n8Y4e0ypQBaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcH - * fC425lAcP9tDJMW/hkd5s3kc91r0E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsut - * dEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gzrt48Ue7LE3wBf4QOXVGUnhMM - * ti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAqjqFGOjGY5RH8 - * zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn - * rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUX - * U8u3Zg5mTPj5dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6 - * Jyr+zE7S6E5UMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5 - * XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAF - * Nzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAKkEh47U6YA5n+KGCR - * HTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jOXKqY - * GwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c - * 77NCR807VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3 - * +GbHeJAAFS6LrVE1Uweoa2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WK - * vJUawSg5TB9D0pH0clmKuVb8P7Sd2nCcdlqMQ1DujjByTd//SffGqWfZbawCEeI6 - * FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEVKV0jq9BgoRJP3vQXzTLl - * yb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gTDx4JnW2P - * AJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpD - * y4Q08ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8d - * NL/+I5c30jn6PQ0GC7TbO6Orb1wdtn7os4I07QZcJA== - * -----END CERTIFICATE----- - */ - webpki::TrustAnchor { - subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02TR1\x0f0\r\x06\x03U\x04\x07\x0c\x06Ankara1@0>\x06\x03U\x04\n\x0c7E-Tu\xc4\x9fra EBG Bili\xc5\x9fim Teknolojileri ve Hizmetleri A.\xc5\x9e.1&0$\x06\x03U\x04\x0b\x0c\x1dE-Tugra Sertifikasyon Merkezi1(0&\x06\x03U\x04\x03\x0c\x1fE-Tugra Certification Authority", - spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xe2\xf5?\x93\x05Q\x1e\x85bT^z\x0b\xf5\x18\x07\x83\xae~\xaf|\xf7\xd4\x8ak\xa5cC9\xb9K\xf7\xc3\xc6d\x89=\x94.T\x80R99\x07KK\xdd\x85\x07v\x87\xcc\xbf/\x95L\xcc}\xa7=\xbcG\x0f\x98p\xf8\x8c\x85\x1et\x8e\x92m\x1b@\xd1\x99\r\xbbun\xc8\xa9k\x9a\xc0\x841\xaf\xcaC\xcb\xeb+4\xe8\x8f\x97k\x01\x9b\xd5\x0eJ\x08\xaa[\x92t\x85C\xd3\x80\xae\xa1\x88[\xae\xb3\xea^\xcb\x16\x9awD\xc8\xa1\xf6Th\xce\xde\x8f\x97+\xba[@\x02\x0cd\x17\xc0\xb5\x93\xcd\xe1\xf1\x13f\xce\x0cy\xef\xd1\x91(\xab_\xa0\x12R0s\x19\x8e\x8f\xe1\x8c\x07\xa2\xc3\xbbJ\xf0\xea\x1f\x15\xa8\xee%\xcc\xa4F\xf8\x1b\"\xef\xb3\x0eC\xba,$\xb8\xc5,\\\xd4\x1c\xf8]d\xbd\xc3\x93^(\xa7?\'\xf1\x8e\x1e\xd3*P\x05\xa3U\xd9\xcb\xe79S\xc0\x98\x9e\x8cTb\x8b&\xb0\xf7}\x8d|\xe4\xc6\x9efBU\x82G\xe7\xb2X\x8df\xf7\x07|.6\xe6P\x1c?\xdbC$\xc5\xbf\x86Gy\xb3y\x1c\xf7Z\xf4\x13\xecl\xf8?\xe2Y\x1f\x95\xeeB>\xb9\xad\xa82\x85I\x97F\xfeK1\x8fZ\xcb\xadtG\x1f\xe9\x91\xb7\xdf(\x04\"\xa0\xd4\x0f]\xe2yO\xeal\x85\x86\xbd\xa8\xa6\xce\xe4\xfa\xc3\xe1\xb3\xae\xdeuI\xfe\x8f\xa7\xe2\x89\xc5g\xd7\x9dF\x13N1v;$\xb3\x9e\x11e\x86\xab\x7f\xef\x1d\xd4\xf8\xbc\xe7\xacZ\\\xb7ZG\\U\xceU\xb4\"q[[\x0b\xf0\xcf\xdc\xa0ad\xea\xa9\xd7h\nc\xa7\xe0\r?\xa0\xaf\xd3\xaa\xd2~\xefQ\xa0\xe6Q+U\x92\x15\x17S\xcb\xb7f\x0efL\xf8\xf9uL\x90\xe7\x12p\xc7E\x02\x03\x01\x00\x01", + * Issuer: CN=Atos TrustedRoot Root CA ECC TLS 2021 O=Atos + * Subject: CN=Atos TrustedRoot Root CA ECC TLS 2021 O=Atos + * Label: "Atos TrustedRoot Root CA ECC TLS 2021" + * Serial: 81873346711060652204712539181482831616 + * MD5 Fingerprint: 16:9f:ad:f1:70:ad:79:d6:ed:29:b4:d1:c5:79:70:a8 + * SHA1 Fingerprint: 9e:bc:75:10:42:b3:02:f3:81:f4:f7:30:62:d4:8f:c3:a7:51:b2:dd + * SHA256 Fingerprint: b2:fa:e5:3e:14:cc:d7:ab:92:12:06:47:01:ae:27:9c:1d:89:88:fa:cb:77:5f:a8:a0:08:91:4e:66:39:88:a8 + * -----BEGIN CERTIFICATE----- + * MIICFTCCAZugAwIBAgIQPZg7pmY9kGP3fiZXOATvADAKBggqhkjOPQQDAzBMMS4w + * LAYDVQQDDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgRUNDIFRMUyAyMDIxMQ0w + * CwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0yMTA0MjIwOTI2MjNaFw00MTA0 + * MTcwOTI2MjJaMEwxLjAsBgNVBAMMJUF0b3MgVHJ1c3RlZFJvb3QgUm9vdCBDQSBF + * Q0MgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRFMHYwEAYHKoZI + * zj0CAQYFK4EEACIDYgAEloZYKDcKZ9Cg3iQZGeHkBQcfl+3oZIK59sRxUM6KDP/X + * tXa7oWyTbIOiaG6l2b4siJVBzV3dscqDY4PMwL502eCdpO5KTlbgmClBk1IQ1SQ4 + * AjJn8ZQSb+/Xxd4u/RmAo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR2 + * KCXWfeBmmnoJsmo7jjPXNtNPojAOBgNVHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwMD + * aAAwZQIwW5kp85wxtolrbNa9d+F851F+uDrNozZffPc8dz7kUK2o59JZDCaOMDtu + * CCrCp1rIAjEAmeMM56PDr9NJLkaCI2ZdyQAUEv049OGYa3cpetskz2VAv9LcjBHo + * 9H1/IISpQuQo + * -----END CERTIFICATE----- + */ + TrustAnchor { + subject: b"1.0,\x06\x03U\x04\x03\x0c%Atos TrustedRoot Root CA ECC TLS 20211\r0\x0b\x06\x03U\x04\n\x0c\x04Atos1\x0b0\t\x06\x03U\x04\x06\x13\x02DE", + spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\x96\x86X(7\ng\xd0\xa0\xde$\x19\x19\xe1\xe4\x05\x07\x1f\x97\xed\xe8d\x82\xb9\xf6\xc4qP\xce\x8a\x0c\xff\xd7\xb5v\xbb\xa1l\x93l\x83\xa2hn\xa5\xd9\xbe,\x88\x95A\xcd]\xdd\xb1\xca\x83c\x83\xcc\xc0\xbet\xd9\xe0\x9d\xa4\xeeJNV\xe0\x98)A\x93R\x10\xd5$8\x022g\xf1\x94\x12o\xef\xd7\xc5\xde.\xfd\x19\x80", name_constraints: None }, @@ -3790,7 +3913,7 @@ * BtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x120\x10\x06\x03U\x04\n\x13\tCertainly1\x1a0\x18\x06\x03U\x04\x03\x13\x11Certainly Root E1", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\xdeo\xf8\x7f\x1c\xdf\xed\xf9G\x87\x86\xb1\xa4\xc0\x8a\xf8\x82\x97\x80\xea\x8f\xc8J^*}\x88h\xa7\x01b\x14\x91$z\\\x9e\xa3\x17}\x8a\x86!4\x18P\x1b\x10\xde\xd07K&\xc7\x19`\x80\xe94\xbd`\x196@\xd6)\x87\t<\x91z\xf6\xbc\x13#\xddYN\x04^\xcf\xc8\x02\x1c\x18S\xc11\xd8\xda \xe9D\x8d\xe4v", name_constraints: None @@ -3839,7 +3962,7 @@ * DrW5viSP * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02PL1\"0 \x06\x03U\x04\n\x13\x19Unizeto Technologies S.A.1\'0%\x06\x03U\x04\x0b\x13\x1eCertum Certification Authority1$0\"\x06\x03U\x04\x03\x13\x1bCertum Trusted Network CA 2", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xbd\xf9x\xf8\xe6\xd5\x80\x0cd\x9d\x86\x1b\x96dg?\":\x1eu\x01}\xef\xfb\\g\x8c\xc9\xcc\\k\xa9\x91\xe6\xb9B\xe5 K\x9b\xda\x9b{\xb9\x99]\xd9\x9b\x80K\xd7\x84@+\'\xd3\xe8\xba0\xbb>\t\x1a\xa7I\x95\xef+@$\xc2\x97\xc7\xa7\xee\x9b%\xef\xa8\n\x00\x97\x85Z\xaa\x9d\xdc)\xc9\xe25\x07\xebpMJ\xd6\xc1\xb3V\xb8\xa1A8\x9b\xd1\xfb1\x7f\x8f\xe0_\xe1\xb1?\x0f\x8e\x16I`\xd7\x06\x8d\x18\xf9\xaa&\x10\xab*\xd3\xd0\xd1g\x8d\x1bF\xbeG0\xd5.r\xd1\xc5c\xda\xe7cyD~Kc$\x89\x86.4?)LR\x8b*\xa7\xc0\xe2\x91(\x89\xb9\xc0[\xf9\x1d\xd9\xe7\'\xad\xff\x9a\x02\x97\xc1\xc6P\x92\x9b\x02,\xbd\xa9\xb94Y\n\xbf\x84J\xff\xdf\xfe\xb3\x9f\xeb\xd9\x9e\xe0\x98#\xec\xa6kw\x16*\xdb\xcc\xad;\x1c\xa4\x87\xdcFs^\x19bhEW\xe4\x90\x82B\xbbB\xd6\xf0a\xe0\xc1\xa3=f\xa3]\xf4\x18\xee\x88\xc9\x8d\x17E)\x992u\x021\xee)&\xc8k\x02\xe6\xb5bE\x7f7\x15Z#h\x89\xd4>\xdeN\'\xb0\xf0@\x0c\xbcM\x17\xcbM\xa2\xb3\x1e\xd0\x06Z\xdd\xf6\x93\xcfWu\x99\xf5\xfa\x86\x1agx\xb3\xbf\x96\xfe4\xdc\xbd\xe7RV\xe5\xb3\xe5u{\xd7A\x91\x05\xdc]i\xe3\x95\rC\xb9\xfc\x83\x969\x95{l\x80ZO\x13r\xc6\xd7})zD\xbaR\xa4*\xd5AF\t \xfe\"\xa0\xb6[0\x8d\xbc\x89\x0c\xd5\xd7p\xf8\x87R\xfd\xda\xef\xacQ.\x07\xb3N\xfe\xd0\t\xdap\xef\x98\xfaV\xe6m\xdb\xb5WK\xdc\xe5,%\x15\xc8\x9e.xN\xf8\xda\x9c\x9e\x86,\xcaW\xf3\x1a\xe5\xc8\x92\x8b\x1a\x82\x96z\xc3\xbcP\x12i\xd8\x0eZF\x8b:\xeb&\xfa#\xc9\xb6\xb0\x81\xbeB\x00\xa4\xf8\xd6\xfe0.\xc7\xd2F\xf6\xe5\x8eu\xfd\xf2\xcc\xb9\xd0\x87[\xcc\x06\x10`\xbb\x835\xb7^g\xdeG\xec\x99H\xf1\xa4\xa1\x15\xfe\xad\x8cb\x8e9UO9\x16\xb9\xb1c\x9d\xff\xb7\x02\x03\x01\x00\x01", name_constraints: None @@ -3868,7 +3991,7 @@ * 0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\x0b\x13\nemSign PKI1\x140\x12\x06\x03U\x04\n\x13\x0beMudhra Inc1 0\x1e\x06\x03U\x04\x03\x13\x17emSign ECC Root CA - C3", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\xfd\xa5a\xae{&\x10\x1d\xe9\xb7\"0\xae\x06\xf4\x81\xb3\xb1Bq\x959\xbc\xd3R\xe3\xaf\xaf\xf9\xf2\x975\x926F\x0e\x87\x95\x8d\xb99Z\xe9\xbb\xdf\xd0\xfe\xc8\x07A<\xbbUo\x83\xa3j\xfbb\xb0\x81\x89\x02p}H\xc5J\xe3\xe9\"T\"M\x93\xbbB\x0c\xafw\x9c#\xa6}\xd7a\x11\xcee\xc7\xf8\x7f\xfe\xf5\xf2\xa9", name_constraints: None @@ -3896,7 +4019,7 @@ * flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x140\x12\x06\x03U\x04\n\x0c\x0bAffirmTrust1 0\x1e\x06\x03U\x04\x03\x0c\x17AffirmTrust Premium ECC", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\r0^\x1b\x15\x9d\x03\xd0\xa1y5\xb7:<\x92z\xca\x15\x1c\xcdb\xf3\x9c&\\\x07=\xe5T\xfa\xa3\xd6\xcc\x12\xea\xf4\x14_\xe8\x8e\x19\xab/.H\xe6\xac\x18Cx\xac\xd07\xc3\xbd\xb2\xcd,\xe6G\xe2\x1a\xe6c\xb8=./x\xc4O\xdb\xf4\x0f\xa4hLUrk\x95\x1dN\x18B\x95x\xcc7<\x91\xe2\x9be+)", name_constraints: None @@ -3944,7 +4067,7 @@ * tGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02CH1\x150\x13\x06\x03U\x04\n\x13\x0cSwissSign AG1!0\x1f\x06\x03U\x04\x03\x13\x18SwissSign Silver CA - G2", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xc4\xf1\x87\x7f\xd3x1\xf78\xc9\xf8\xc3\x99C\xbc\xc7\xf7\xbc7\xe7Nq\xbaK\x8f\xa5s\x1d\\n\x98\xae\x03W\xae87C/\x17=\x1f\xc8\xceh\x10\xc1x\xae\x19\x03+\x10\xfa,y\x83\xf6\xe8\xb9h\xb9U\xf2\x04D\xa79\xf9\xfc\x04\x8b\x1e\xf1\xa2M\'\xf9a{\xba\xb7\xe5\xa2\x13\xb6\xeba>\xd0l\xd1\xe6\xfb\xfa^\xed\x1d\xb4\x9e\xa05[\xa1\x92\xcb\xf0I\x92\xfe\x85\n\x05>\xe6\xd9\x0b\xe2O\xbb\xdc\x957\xfc\x91\xe925\"\xd1\x1f:N\'\x85\x9d\xb0\x15\x942\xdaa\rGM`B\xae\x92G\xe8\x83ZPX\xe9\x8a\x8b\xb9]\xa1\xdc\xdd\x99J\x1f6g\xbbH\xe4\x83\xb67\xebH:\xaf\x0fg\x8f\x17\x07\xe8\x04\xca\xefj1\x87\xd4\xc0\xb6\xf9\x94q{gd\xb8\xb6\x91JB{e.0j\x0c\xf5\x90\xee\x95\xe6\xf2\xcd\x82\xec\xd9\xa1J\xec\xf6\xb2K\xe5E\x85\xe6mx\x93\x04.\x9c\x82m6\xa9\xc41d\x1f\x86\x83\x0b*\xf45\nx\xc9U\xcfA\xb0G\xe90\x9f\x99\xbea\xa8\x06\x84\xb9(z_8\xd9\x1b\xa98\xb0\x83\x7fs\xc1\xc3;H*\x82\x0f!\x9b\xb8\xcc\xa85\xc3\x84\x1b\x83\xb3>\xbe\xa4\x95i\x01:\x89\x00x\x04\xd9\xc9\xf4\x99\x19\xabV~[\x8b\x869\x15\x91\xa4\x10,\t2\x80`\xb3\x93\xc0*\xb6\x18\x0b\x9d~\x8dI\xf2\x10J\x7f\xf9\xd5F/\x19\x92\xa3\x99\xa7&\xac\xbb\x8c<\xe6\x0e\xbcG\x07\xdcsQ\xf1pd/\x08\xf9\xb4G\x1d0lD\xea)7\x85\x92hf\xbc\x838\xfe{9.\xd3P\xf0\x1f\xfb^`\xb6\xa9\xa6\xfa\'A\xf1\x9b\x18r\xf2\xf5\x84tJ\xc9g\xc4T\xaeHd\xdf\x8c\xd1n\xb0\x1d\xe1\x07\x8f\x08\x1e\x99\x9cq\xe9L\xd8\xa5\xf7G\x12\x1ft\xd1Q\x9e\x86\xf3\xc2\xa2#@\x0bs\xdbK\xa6\xe7s\x06\x8c\xc1\xa0\xe9\xc1Y\xacF\xfa\xe6/\xf8\xcfq\x9cFm\xb9\xc4\x15\x8d8y\x03EH\xef\xc4]\xd7\x08\xee\x879\"\x86\xb2\r\x0fXC\xf7q\xa9H.\xfd\xea\xd6\x1f\x02\x03\x01\x00\x01", name_constraints: None @@ -3974,7 +4097,7 @@ * +efcMQ== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02HU1\x110\x0f\x06\x03U\x04\x07\x0c\x08Budapest1\x160\x14\x06\x03U\x04\n\x0c\rMicrosec Ltd.1\x170\x15\x06\x03U\x04a\x0c\x0eVATHU-235844971\x1e0\x1c\x06\x03U\x04\x03\x0c\x15e-Szigno Root CA 2017", spki: b"0\x13\x06\x07*\x86H\xce=\x02\x01\x06\x08*\x86H\xce=\x03\x01\x07\x03B\x00\x04\x96\xdc=\x8a\xd8\xb0{o\xc6\'\xbeD\x90\xb1\xb3V\x15{\x8eC$}\x1a\x84Y\xeech\xb2\xc6^\x87\xd0\x15H\x1e\xa8\x90\xad\xbdS\xa2\xda\xde:\x90\xa6`_h2\xb5\x86A\xdf\x87[,{\xc5\xfe|z\xda", name_constraints: None @@ -4010,7 +4133,7 @@ * QSdJQO7e5iNEOdyhIta6A/I= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02JP1+0)\x06\x03U\x04\n\x13\"Japan Certification Services, Inc.1\x1c0\x1a\x06\x03U\x04\x03\x13\x13SecureSign RootCA11", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xfdw\xaa\xa5\x1c\x90\x05;\xcbL\x9b3\x8bZ\x14E\xa4\xe7\x90\x16\xd1\xdfW\xd2!\x10\xa4\x17\xfd\xdf\xac\xd6\x1f\xa7\xe4\xdb|\xf7\xec\xdf\xb8\x03\xda\x94X\xfd]r|\x8c?_\x01gt\x15\x96\xe3\x02<\x87\xdb\xae\xcb\x01\x8e\xc2\xf3f\xc6\x85E\xf4\x02\xc6:\xb5b\xb2\xaf\xfa\x9c\xbf\xa4\xe6\xd4\x800\x98\xf3\r\xb6\x93\x8f\xa9\xd4\xd86\xf2\xb0\xfc\x8a\xca,\xa1\x153\x951\xda\xc0\x1b\xf2\xeeb\x99\x86c?\xbf\xdd\x93*\x83\xa8v\xb9\x13\x1f\xb7\xceNB\x85\x8f\"\xe7.\x1a\xf2\x95\t\xb2\x05\xb5DNw\xa1 \xbd\xa9\xf2N\n}P\xad\xf5\x05\rEOFq\xfd(>S\xfb\x04\xd8-\xd7e\x1dJ\x1b\xfa\xcf;\xb01\x9a5n\xc8\x8b\x06\xd3\x00\x91\xf2\x94\x08eL\xb14\x06\x00z\x89\xe2\xf0\xc7\x03Y\xcf\xd5\xd6\xe8\xa72\xb3\xe6\x98@\x86\xc5\xcd\'\x12\x8b\xcc{\xce\xb7\x11+@n\x94\x80\tm\xb6\xb3owo5\x08P\xfb\x02\x87\xc5>\x89\x02\x03\x01\x00\x01", name_constraints: None @@ -4046,7 +4169,7 @@ * YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02TW1\x120\x10\x06\x03U\x04\n\x0c\tTAIWAN-CA1\x100\x0e\x06\x03U\x04\x0b\x0c\x07Root CA1*0(\x06\x03U\x04\x03\x0c!TWCA Root Certification Authority", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xb0~r\xb8\xa4\x03\x94\xe6\xa7\xde\t8\x91J\x11@\x87\xa7|Yd\x14{\xb5\x11\x10\xdd\xfe\xbf\xd5\xc0\xbbV\xe2\x85%\xf45r\x0f\xf8S\xd0A\xe1D\x01\xc2\xb4\x1c\xc31B\x16G\x853\"v\xb2\no\x0f\xe5%PO\x85\x86\xbe\xbf\x98.\x10g\x1e\xbe\x11\x05\x86\x05\x90\xc4Y\xd0|x\x10\xb0\x80\\\xb7\xe1\xc7+u\xcb|\x9f\xae\xb5\xd1\x9d#7c\xa7\xdcB\xa2-\x92\x04\x1bP\xc1{\xb8>\x1b\xc9V\x04\x8b/R\x9b\xad\xa9V\xe9\xc1\xff\xad\xa9X\x870\xb6\x81\xf7\x97E\xfc\x19W;+o\xe4G\xf4\x99E\xfe\x1d\xf1\xf8\x97\xa3\x88\x1d7\x1c\\\x8f\xe0v%\x9aP\xf8\xa0T\xffD\x90v#\xd22\xc6\xc3\xab\x06\xbf\xfc\xfb\xbf\xf3\xad}\x92b\x02[)\xd35\xa3\x93\x9aCd`]\xb2\xfa2\xff;\x04\xafM@j\xf9\xc7\xe3\xef#\xfdk\xcb\xe5\x0f\x8b8\r\xee\n\xfc\xfe\x0f\x98\x9f01\xddlRe\xf9\x8b\x81\xbe\"\xe1\x1cX\x03\xba\x91\x1b\x89\x07\x02\x03\x01\x00\x01", name_constraints: None @@ -4093,7 +4216,7 @@ * MTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02CN1200\x06\x03U\x04\n\x0c)GUANG DONG CERTIFICATE AUTHORITY CO.,LTD.1\x1f0\x1d\x06\x03U\x04\x03\x0c\x16GDCA TrustAUTH R5 ROOT", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xd9\xa3\x16\xf0\xc8ttw\x9b\xef3\r;\x06~U\xfc\xb5`\x8fv\x86\x12B}Vf>\x88\x82\xedrc\x0e\x9e\x8b\xdd4,\x02QQ\xc3\x19\xfdYT\x84\xc9\xf1k\xb3L\xb0\xe9\xe8F]8\xc6\xa2\xa7.\x11W\xba\x82\x15\xa2\x9c\x8fm\xb0\x99J\n\xf2\xeb\x89pcNy\xc4\xb7[\xbd\xa2]\xb1\xf2A\x02+\xad\xa9:\xa3\xecy\n\xec_:\xe3\xfd\xef\x80<\xad4\x9b\x1a\xab\x88&{V\xa2\x82\x86\x1f\xeb5\x89\x83\x7f_\xae)N=\xb6n\xec\xae\xc1\xf0\'\x9b\xae\xe3\xf4\xec\xef\xae\x7f\xf7\x86=rz\xeb\xa5\xfbYN\xa7\xeb\x95\x8c\"9y\xe1-\x08\x8f\xcc\xbc\x91\xb8A\xf7\x14\xc1#\xa9\xc3\xad\x9aED\xb3\xb2\xd7,\xcd\xc6)\xe2P\x10\xae\\\xcb\x82\x8e\x17\x186}\x97\xe6\x88\x9a\xb0M4\t\xf4,\xb9Zf*\xb0\x17\x9b\x9e\x1ev\x9dJf1A\xdf?\xfb\xc5\x06\xef\x1b\xb6~\x1aF6\xf7dc;\xe39\x18#\xe7gu\x14\xd5uW\x927\xbd\xbej\x1b&P\xf26&\x06\x90\xc5p\x01dmvf\xe1\x91\xdbn\x07\xc0a\x80.\xb2./\x8cp\xa7\xd1;<\xb3\x91\xe4n\xb6\xc4;p\xf2l\x92\x97\t\xcdG}\x18\xc0\xf3\xbb\x9e\x0f\xd6\x8b\xae\x07\xb6Z\x0f\xce\x0b\x0cG\xa7\xe5>\xb8\xbd}\xc7\x9b5\xa0a\x97:Au\x17\xcc+\x96w*\x92!\x1e\xd9\x95v gh\xcf\r\xbd\xdf\xd6\x1f\tj\x9a\xe2\xccsq\xa4/}\x12\x80\xb7S0F^KT\x99\x0fg\xc9\xa5\xc8\xf2 \xc1\x82\xec\x9d\x11\xdf\xc2\x02\xfb\x1a;\xd1\xed \x9a\xefed\x92\x10\r*\xe2\xdep\xf1\x18g\x82\x8ca\xde\xb8\xbc\xd1/\x9c\xfb\x0f\xd0+\xed\x1bv\xb9\xe49U\xf8\xf8\xa1\x1d\xb8\xaa\x80\x00L\x82\xe7\xb2\x7f\t\xb8\xbc0\xa0/\r\xf5R\x9e\x8e\xf7\x92\xb3\n\x00\x1d\x00T\x97\x06\xe0\xb1\x07\xd9\xc7\x0f\\e}\x7fl\xf6\x1e\x8fb\xad\xa5c\xdb\t\xa7\x1f\"BA\x1eo\x99\x8a>\xd7\xf9?@zy\xb0\xa5\x01\x92\xd2\x9d=\x08\x15\xa5\x10\x01-\xb32v\xa8\x95\r\xb3z\x9a\xfb\x07\x10x\x11o\xe1\x8f\xc7\xba\x0f%\x1at*\xe5\x1c\x98A\x99\xdf!\x87\xe8\x95\x06j\n\xb3jGve\xf6:\xcf\x8fb\x17\x19{\n(\xcd\x1a\xd2\x83\x1e!\xc7,\xbf\xbe\xffah\xb7g\x1b\xbbxM\x8d\xceg\xe5\xe4\xc1\x8e\xb7#f\xe2\x9d\x90u4\x98\xa96+\x8a\x9a\x94\xb9\x9d\xec\xcc\x8a\xb1\xf8%\x89\\Z\xb6/\x8c\x1fmy$\xa7Rh\xc3\x845\xe2f\x8dc\x0e%M\xd5\x19\xb2\xe6y7\xa7\"\x9dT1\x02\x03\x01\x00\x01", name_constraints: None }, /* + * Issuer: CN=SSL.com TLS ECC Root CA 2022 O=SSL Corporation + * Subject: CN=SSL.com TLS ECC Root CA 2022 O=SSL Corporation + * Label: "SSL.com TLS ECC Root CA 2022" + * Serial: 26605119622390491762507526719404364228 + * MD5 Fingerprint: 99:d7:5c:f1:51:36:cc:e9:ce:d9:19:2e:77:71:56:c5 + * SHA1 Fingerprint: 9f:5f:d9:1a:54:6d:f5:0c:71:f0:ee:7a:bd:17:49:98:84:73:e2:39 + * SHA256 Fingerprint: c3:2f:fd:9f:46:f9:36:d1:6c:36:73:99:09:59:43:4b:9a:d6:0a:af:bb:9e:7c:f3:36:54:f1:44:cc:1b:a1:43 + * -----BEGIN CERTIFICATE----- + * MIICOjCCAcCgAwIBAgIQFAP1q/s3ixdAW+JDsqXRxDAKBggqhkjOPQQDAzBOMQsw + * CQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxT + * U0wuY29tIFRMUyBFQ0MgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzM0OFoXDTQ2 + * MDgxOTE2MzM0N1owTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jwb3Jh + * dGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgRUNDIFJvb3QgQ0EgMjAyMjB2MBAG + * ByqGSM49AgEGBSuBBAAiA2IABEUpNXP6wrgjzhR9qLFNoFs27iosU8NgCTWyJGYm + * acCzldZdkkAZDsalE3D07xJRKF3nzL35PIXBz5SQySvOkkJYWWf9lCcQZIxPBLFN + * SeR7T5v15wj4A4j3p8OSSxlUgaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSME + * GDAWgBSJjy+j6CugFFR781a4Jl9nOAuc0DAdBgNVHQ4EFgQUiY8vo+groBRUe/NW + * uCZfZzgLnNAwDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2gAMGUCMFXjIlbp + * 15IkWE8elDIPDAI2wv2sdDJO4fscgIijzPvX6yv/N33w7deedWo1dlJF4AIxAMeN + * b0Igj762TVntd00pxCAgRWSGOlDGxK0tk/UYfXLtqc/ErFc2KAhl3zx5Zn6g6g== + * -----END CERTIFICATE----- + */ + TrustAnchor { + subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x180\x16\x06\x03U\x04\n\x0c\x0fSSL Corporation1%0#\x06\x03U\x04\x03\x0c\x1cSSL.com TLS ECC Root CA 2022", + spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04E)5s\xfa\xc2\xb8#\xce\x14}\xa8\xb1M\xa0[6\xee*,S\xc3`\t5\xb2$f&i\xc0\xb3\x95\xd6]\x92@\x19\x0e\xc6\xa5\x13p\xf4\xef\x12Q(]\xe7\xcc\xbd\xf9<\x85\xc1\xcf\x94\x90\xc9+\xce\x92BXYg\xfd\x94\'\x10d\x8cO\x04\xb1MI\xe4{O\x9b\xf5\xe7\x08\xf8\x03\x88\xf7\xa7\xc3\x92K\x19T\x81", + name_constraints: None + }, + + /* * Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority * Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority * Label: "Go Daddy Class 2 CA" @@ -4180,7 +4332,7 @@ * ReYNnyicsbkqWletNw+vHX/bvZ8= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1!0\x1f\x06\x03U\x04\n\x13\x18The Go Daddy Group, Inc.110/\x06\x03U\x04\x0b\x13(Go Daddy Class 2 Certification Authority", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\r\x000\x82\x01\x08\x02\x82\x01\x01\x00\xde\x9d\xd7\xeaW\x18I\xa1[\xeb\xd7_H\x86\xea\xbe\xdd\xff\xe4\xefg\x1c\xf4eh\xb3Wq\xa0^w\xbb\xed\x9bI\xe9p\x80=V\x18c\x08o\xda\xf2\xcc\xd0?\x7f\x02T\"T\x10\xd8\xb2\x81\xd4\xc0u=K\x7f\xc7w\xc3>x\xab\x1a\x03\xb5 k/j+\xb1\xc5\x88~\xc4\xbb\x1e\xb0\xc1\xd8E\'o\xaa7X\xf7\x87&\xd7\xd8-\xf6\xa9\x17\xb7\x1fr6N\xa6\x17?e\x98\x92\xdb*n]\xa2\xfe\x88\xe0\x0b\xde\x7f\xe5\x8d\x15\xe1\xeb\xcb:\xd5\xe2\x12\xa2\x13-\xd8\x8e\xaf_\x12=\xa0\x08\x05\x08\xb6\\\xa5e8\x04E\x99\x1e\xa3``t\xc5A\xa5rb\x1bb\xc5\x1fo_\x1aB\xbe\x02Qe\xa8\xae#\x18j\xfcx\x03\xa9M\x7f\x80\xc3\xfa\xabZ\xfc\xa1@\xa4\xca\x19\x16\xfe\xb2\xc8\xef^s\r\xeew\xbd\x9a\xf6y\x98\xbc\xb1\x07g\xa2\x15\r\xdd\xa0X\xc6D{\n>b(_\xbaA\x07SX\xcf\x11~8t\xc5\xf8\xff\xb5i\x90\x8f\x84t\xea\x97\x1b\xaf\x02\x01\x03", name_constraints: None @@ -4228,13 +4380,42 @@ * RA+GsCyRxj3qrg+E * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x1e0\x1c\x06\x03U\x04\n\x13\x15Microsoft Corporation1604\x06\x03U\x04\x03\x13-Microsoft RSA Root Certificate Authority 2017", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xca[\xbe\x943\x8c)\x95\x91\x16\n\x95\xbdGb\xc1\x89\xf3\x996\xdfF\x90\xc9\xa5\xedxjoG\x91h\xf8\'gP3\x1d\xa1\xa6\xfb\xe0\xe5C\xa3\x84\x02W\x01]\x9cH@\x82S\x10\xbc\xbf\xc7;h\x90\xb6\x82-\xe5\xf4e\xd0\xccm\x19\xcc\x95\xf9{\xacJ\x94\xad\x0e\xdeKC\x1d\x87\x07\x92\x13\x90\x80\x83d59\x04\xfc\xe5\xe9l\xb3\xb6\x1fP\x948eP\\\x17F\xb9\xb6\x85\xb5\x1c\xb5\x17\xe8\xd6E\x9d\xd8\xb2&\xb0\xca\xc4pJ\xae`\xa4\xdd\xb3\xd9\xec\xfc;\xd5Wr\xbc?\xc8\xc9\xb2\xdeKk\xf8#l\x03\xc0\x05\xbd\x95\xc7\xcds;f\x80d\xe3\x1a\xac.\xf9G\x05\xf2\x06\xb6\x9bs\xf5x3[\xc7\xa1\xfb\'*\xa1\xb4\x9a\x91\x8c\x91\xd3:\x82>v@\xb4\xcdRaQp(?\xc5\xc5Z\xf2\xc9\x8cI\xbb\x14[M\xc8\xffgML\x12\x96\xad\xf5\xfex\xa8\x97\x87\xd7\xfd^ \x80\xdc\xa1K\"\xfb\xd4\x89\xad\xba\xceG\x97GU{\x8fE\xc8g(\x84\x95\x1ch0\xef\xefI\xe05{d\xe7\x98\xb0\x94\xdaM\x85;>U\xc4(\xafW\xf3\x9e\x13\xdbF\'\x9f\x1e\xa2^D\x83\xa4\xa5\xca\xd5\x13\xb3K?\xc4\xe3\xc2\xe6\x86a\xa4R0\xb9z Oo\x0f8S\xcb3\x0c\x13+\x8f\xd6\x9a\xbd*\xc8-\xb1\x1c}KQ\xcaG\xd1H\'r]\x87\xeb\xd5E\xe6He\x9d\xafR\x90\xba[\xa2\x18eW\x12\x9fh\xb9\xd4\x15k\x94\xc4i\"\x98\xf43\xe0\xed\xf9Q\x8eAP\xc94Ov\x90\xac\xfc8\xc1\xd8\xe1{\xb9\xe3\xe3\x94\xe1Fi\xcb\x0e\nPk\x13\xba\xac\x0f7Z\xb7\x12\xb5\x90\x81\x1eV\xaeW\"\x86\xd9\xc9\xd2\xd1\xd7Q\xe3\xab;\xc6U\xfd\x1e\x0e\xd3t\n\xd1\xda\xaa\xeai\xb8\x97(\x8fH\xc4\x07\xf8RC:\xf4\xcaU5,\xb0\xa6j\xc0\x9c\xf9\xf2\x81\xe1\x12j\xc0E\xd9g\xb3\xce\xff#\xa2\x89\nT\xd4\x14\xb9*\xa8\xd7\xec\xf9\xab\xcd%X2y\x8f\x90[\x989\xc4\x08\x06\xc1\xac\x7f\x0e=\x00\xa5\x02\x03\x01\x00\x01", name_constraints: None }, /* + * Issuer: CN=Sectigo Public Server Authentication Root E46 O=Sectigo Limited + * Subject: CN=Sectigo Public Server Authentication Root E46 O=Sectigo Limited + * Label: "Sectigo Public Server Authentication Root E46" + * Serial: 88989738453351742415770396670917916916 + * MD5 Fingerprint: 28:23:f8:b2:98:5c:37:16:3b:3e:46:13:4e:b0:b3:01 + * SHA1 Fingerprint: ec:8a:39:6c:40:f0:2e:bc:42:75:d4:9f:ab:1c:1a:5b:67:be:d2:9a + * SHA256 Fingerprint: c9:0f:26:f0:fb:1b:40:18:b2:22:27:51:9b:5c:a2:b5:3e:2c:a5:b3:be:5c:f1:8e:fe:1b:ef:47:38:0c:53:83 + * -----BEGIN CERTIFICATE----- + * MIICOjCCAcGgAwIBAgIQQvLM2htpN0RfFf51KBC49DAKBggqhkjOPQQDAzBfMQsw + * CQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1T + * ZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwHhcN + * MjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5WjBfMQswCQYDVQQGEwJHQjEYMBYG + * A1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBT + * ZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA + * IgNiAAR2+pmpbiDt+dd34wc7qNs9Xzjoq1WmVk/WSOrsfy2qw7LFeeyZYX8QeccC + * WvkEN/U0NSt3zn8gj1KjAIns1aeibVvjS5KToID1AZTc8GgHHs3u/iVStSBDHBv+ + * 6xnOQ6OjQjBAMB0GA1UdDgQWBBTRItpMWfFLXyY4qp3W7usNw/upYTAOBgNVHQ8B + * Af8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNnADBkAjAn7qRa + * qCG76UeXlImldCBteU/IvZNeWBj7LRoAasm4PdCkT0RHlAFWovgzJQxC36oCMB3q + * 4S6ILuH5px0CMk7yn2xVdOOurvulGu7t0vzCAxHrRVxgED1cf5kDW21USAGKcw== + * -----END CERTIFICATE----- + */ + TrustAnchor { + subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02GB1\x180\x16\x06\x03U\x04\n\x13\x0fSectigo Limited1604\x06\x03U\x04\x03\x13-Sectigo Public Server Authentication Root E46", + spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04v\xfa\x99\xa9n \xed\xf9\xd7w\xe3\x07;\xa8\xdb=_8\xe8\xabU\xa6VO\xd6H\xea\xec\x7f-\xaa\xc3\xb2\xc5y\xec\x99a\x7f\x10y\xc7\x02Z\xf9\x047\xf545+w\xce\x7f \x8fR\xa3\x00\x89\xec\xd5\xa7\xa2m[\xe3K\x92\x93\xa0\x80\xf5\x01\x94\xdc\xf0h\x07\x1e\xcd\xee\xfe%R\xb5 C\x1c\x1b\xfe\xeb\x19\xceC\xa3", + name_constraints: None + }, + + /* * Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com * Subject: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com * Label: "DigiCert Global Root G2" @@ -4265,7 +4446,7 @@ * MrY= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x150\x13\x06\x03U\x04\n\x13\x0cDigiCert Inc1\x190\x17\x06\x03U\x04\x0b\x13\x10www.digicert.com1 0\x1e\x06\x03U\x04\x03\x13\x17DigiCert Global Root G2", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xbb7\xcd4\xdc{k\xc9\xb2h\x90\xadJu\xffF\xba!\n\x08\x8d\xf5\x19T\xc9\xfb\x88\xdb\xf3\xae\xf2:\x89\x91\xc9\xcb&Y\rs\xde\xb0\xc8\xe9&\x0e\x83\x15\xc6\xef[\x8b\xd2\x04`\xcaI\xa6(\xf6i;\xf6\xcb\xc8(\x91\xe5\x9d\x8aaW7\xact\x14\xdct\xe0:\xeer/.\x9c\xfb\xd0\xbb\xbf\xf5=\x00\xe1\x063\xe8\x82+\xaeS\xa6:\x16s\x8c\xddA\x0e :\xc0\xb4\xa7\xa1\xe9\xb2O\x90.2`\xe9W\xcb\xb9\x04\x92hh\xe58&`u\xb2\x9fw\xff\x91\x14\xef\xae I\xfc\xad@\x15H\xd1\x021a\x19^\xb8\x97\xef\xadw\xb7d\x9az\xbf_\xc1\x13\xef\x9bb\xfb\rl\xe0Ti\x16\xa9\x03\xdan\xe9\x83\x93qv\xc6i\x85\x82\x17\x02\x03\x01\x00\x01", name_constraints: None @@ -4329,7 +4510,7 @@ * +RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02BE1\x190\x17\x06\x03U\x04\n\x13\x10GlobalSign nv-sa1\x1c0\x1a\x06\x03U\x04\x03\x13\x13GlobalSign Root E46", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\x9c\x0e\xb1\xcf\xb7\xe8\x9eRwu4\xfa\xa5F\xa7\xad2\x192\xb4\x07\xa9\'\xca\x94\xbb\x0c\xd2\n\x10\xc7\xda\x89\xb0\x97\x0cp\x13\t\x01\x8e\xd8\xeaG\xea\xbe\xb2\x80+\xcd\xfc(\r\xdb\xac\xbc\xa4\x867\xedp\x08\x00u\xea\x93\x0b{.R\x9c#h#\x06C\xec\x92/S\x84\xdb\xfbG\x14\x07\xe8_\x94g]\xc9z\x81< ", name_constraints: None @@ -4369,7 +4550,7 @@ * O+7ETPTsJ3xCwnR8gooJybQDJbw= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x1e0\x1c\x06\x03U\x04\x0b\x13\x15www.xrampsecurity.com1$0\"\x06\x03U\x04\n\x13\x1bXRamp Security Services Inc1-0+\x06\x03U\x04\x03\x13$XRamp Global Certification Authority", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\x98$\x1e\xbd\x15\xb4\xba\xdf\xc7\x8c\xa5\'\xb68\x0bi\xf3\xb6N\xa8,.!\x1d\\D\xdf!]~#t\xfe^~\xb4J\xb7\xa6\xad\x1f\xae\xe0\x06\x16\xe2\x9b[\xd9gtk]\x80\x8f)\x9d\x86\x1b\xd9\x9c\r\x98mv\x10(X\xe4e\xb0\x7fJ\x98y\x9f\xe0\xc31~\x80+\xb5\x8c\xc0@;\x11\x86\xd0\xcb\xa2\x866`\xa4\xd50\x82m\xd9n\xd0\x0f\x12\x043\x97_OaZ\xf0\xe4\xf9\x91\xab\xe7\x1d;\xbc\xe8\xcf\xf4k-4|\xe2Ha\x1c\x8e\xf3aD\xcco\xa0J\xa9\x94\xb0M\xda\xe7\xa94zr8\xa8A\xcc<\x94\x11}\xeb\xc8\xa6\x8c\xb7\x86\xcb\xca3;\xd9=7\x8b\xfbz>\x86,\xe7s\xd7\nW\xacd\x9b\x19\xeb\xf4\x0f\x04\x08\x8a\xac\x03\x17\x19d\xf4Z%\"\x8d4,\xb2\xf6h\x1d\x12m\xd3\x8a\x1e\x14\xda\xc4\x8f\xa6\xe2#\x85\xd5z\r\xbdj\xe0\xe9\xec\xec\x17\xbbB\x1bg\xaa%\xedE\x83!\xfc\xc1\xc9|\xd5b>\xfa\xf2\xc5-\xd3\xfd\xd4e\x02\x03\x01\x00\x01", name_constraints: None @@ -4415,7 +4596,7 @@ * fjKaiJUINlK73nZfdklJrX+9ZSCyycErdhh2n1ax * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02CN1\x110\x0f\x06\x03U\x04\n\x0c\x08UniTrust1%0#\x06\x03U\x04\x03\x0c\x1cUCA Extended Validation Root", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xa9\t\x07(\x13\x02\xb0\x99\xe0d\xaa\x1eC\x16zs\xb1\x91\xa0u>\xa8\xfa\xe38\x00z\xec\x89j \x0f\x8b\xc5\xb0\x9b3\x03Z\x86\xc6X\x86\xd5\xc1\x85\xbbO\xc6\x9c@M\xca\xbe\xeei\x96\xb8\xad\x810\x9a|\x92\x05\xeb\x05+\x9aH\xd0\xb8v>\x96\xc8 \xbb\xd2\xb0\xf1\x8f\xd8\xacEF\xff\xaag`\xb4w~j\x1f<\x1aRz\x04=\x07<\x85\r\x84\xd0\x1fv\n\xf7j\x14\xdfr\xe34|WNV\x01>y\xf1\xaa);l\xfa\xf8\x8fmM\xc85\xdf\xae\xeb\xdc$\xeeyE\xa7\x85\xb6\x05\x88\xde\x88]%|\x97dg\t\xd9\xbfZ\x15\x05\x86\xf3\t\x1e\xecX23\x11\xf3wd\xb0v\x1f\xe4\x105\x17\x1b\xf2\x0e\xb1l\xa4*\xa3s\xfc\t\x1f\x1e2\x19S\x11\xe7\xd9\xb3,.v.\xa1\xa3\xde~j\x88\t\xe8\xf2\x07\x8a\xf8\xb2\xcd\x10\xe7\xe2s@\x93\xbb\x08\xd1?\xe1\xfc\x0b\x94\xb3%\xef|\xa6\xd7\xd1\xaf\x9f\xff\x96\x9a\xf5\x91{\x98\x0bw\xd4~\xe8\x07\xd2b\xb5\x959\xe3\xf3\xf1m\x0f\x0ee\x84\x8acT\xc5\x80\xb6\xe0\x9eK}G&\xa7\x01\x08]\xd1\x88\x9e\xd7\xc32D\xfa\x82J\nhT\x7f8S\x03\xcc\xa4\x003dQY\x0b\xa3\x82\x91z^\xec\x16\xc2\xf3*\xe6b\xda*\xdbYb\x10%J*\x81\x0bG\x07C\x06p\x87\xd2\xfa\x93\x11)zHM\xeb\x94\xc7pM\xafg\xd5Q\xb1\x80 \x01\x01\xb4z\x08\xa6\x90\x7fN\xe0\xef\x07A\x87\xafj\xa5^\x8b\xfb\xcfP\xb2\x9aT\xaf\xc3\x89\xbaX-\xf50\x98\xb16r9~I\x04\xfd)\xa7Ly\xe4\x05W\xdb\x94\xb9\x16S\x8dF\xb3\x1d\x95aWV\x7f\xaf\xf0\x16[aXo6P\x11\x0b\xd8\xac+\x95\x16\x1a\x0e\x1f\x08\xcd64e\x10bf\xd5\x80_\x14 _-\x0c\xa0x\nh\xd6,\xd7\xe9o+\xd2J\x05\x93\xfc\x9eokg\xff\x88\xf1N\xa5iJR7\x05\xea\xc6\x16\x8d\xd2\xc4\x99\xd1\x82+;\xba5u\xf7QQX\xf3\xc8\x07\xdd\xe4\xb4\x03\x7f\x02\x03\x01\x00\x01", name_constraints: None @@ -4466,7 +4647,7 @@ * 3kAP+HwV96LOPNdeE4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02FR1\x120\x10\x06\x03U\x04\n\x0c\tDhimyotis1\x1c0\x1a\x06\x03U\x04\x0b\x0c\x130002 481463081000361\x190\x17\x06\x03U\x04\x03\x0c\x10Certigna Root CA", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xcd\x189e\x1aY\xb1\xead\x16\x0e\x8c\x94$\x95|\x83\xd3\xc59&\xdc\x0c\xef\x16W\x8d\xd7\xd8\xac\xa3B\x7f\x82\xca\xed\xcd[\xdb\x0e\xb7-\xedE\x08\x17\xb2\xd9\xb3\xcb\xd6\x17Rr(\xdb\x8eN\x9e\x8a\xb6\x0b\xf9\x9e\x84\x9aMv\xde\")\\\xd2\xb3\xd2\x06>09\xa9t\xa3\x92V\x1c\xa1oL\n m\x9f#z\xb4\xc6\xda,\xe4\x1d,\xdc\xb3(\xd0\x13\xf2LN\x02I\xa1T@\x9e\xe6\xe5\x05\xa0-\x84\xc8\xff\x98l\xd0\xeb\x8a\x1a\x84\x08\x1e\xb7h#\xee#\xd5p\xcemQi\x10\xee\xa1z\xc2\xd1\"1\xc2\x82\x85\xd2\xf2UvP|%z\xc9\x84\\\x0b\xac\xddBN+\xe7\x82\xa2$\x89\xcb\x90\xb2\xd0\xee#\xbafL\xbbb\xa4\xf9SZd{|\x98\xfa\xa3H\x9e\x0f\x95\xae\xa7\x18\xf4j\xec.\x03E\xaf\xf0t\xf8*\xcdz]\xd1\xbeD&2)\xf1\xf1\xf5l\xcc~\x02!\x0b\x9fo\xa4?\xbe\x9dS\xe2\xcf}\xa9,|X\x1a\x97\xe1=77\x18f(\xd2@\xc5Q\x8a\x8c\xc3-\xceS\x88$Xd0\x16\xc5\xaa\xe0\xd6\n\xa6@\xdfx\xf6\xf5\x04|i\x13\x84\xbc\xd1\xd1\xa7\x06\xcf\x01\xf7h\xc0\xa8W\xbb:a\xad\x04\x8c\x93\xe3\xad\xfc\xf0\xdbDmY\xdcIY\xae\xac\x9a\x9960A{v3\"\x87\xa3\xc2\x92\x86n\xf9p\xee\xae\x87\x87\x95\x1b\xc4z\xbd1\xf3\xd4\xd2\xe5\x99\xff\xbeH\xecu\xf5x\x16\x1d\xa6p\xc1\x7f<\x1b\xa1\x92\xfb\xcf\xc8<\xd6\xc5\x93\n\x8f\xf5U:v\x95\xceY\x98\x8a\t\x95w2\x9a\x83\xba,\x04:\x97\xbd\xd4/\xbe\xd7l\x9b\xa2\xca}m&\xc9U\xd5\xcf\xc3yR\x08\t\x99\x07$-d%k\xa6!i\x9bj\xddtMk\x97zA\xbd\xab\x17\xf9\x90\x17H\x8f6\xf9-\xd5\xc5\xdb\xee\xaa\x85EA\xfa\xcd:E\xb1h\xe66L\x9b\x90W\xec#\xb9\x87\x08\xc2\xc4\t\xf1\x97\x86*(M\xe2t\xc0\xda\xc4\x8c\xdb\xdf\xe2\xa1\x17Y\xce$Yt1\xda\x7f\xfd0m\xd9\xdc\xe1j\xe1\xfc_\x02\x03\x01\x00\x01", name_constraints: None @@ -4506,7 +4687,7 @@ * smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02GB1\x1b0\x19\x06\x03U\x04\x08\x0c\x12Greater Manchester1\x100\x0e\x06\x03U\x04\x07\x0c\x07Salford1\x1a0\x18\x06\x03U\x04\n\x0c\x11Comodo CA Limited1!0\x1f\x06\x03U\x04\x03\x0c\x18AAA Certificate Services", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xbe@\x9d\xf4n\xe1\xeav\x87\x1cMED\x8e\xbeF\xc8\x83\x06\x9d\xc1*\xfe\x18\x1f\x8e\xe4\x02\xfa\xf3\xab]P\x8a\x161\x0b\x9a\x06\xd0\xc5p\"\xcdI-Tc\xcc\xb6nhF\x0bS\xea\xcbL$\xc0\xbcrN\xea\xf1\x15\xae\xf4T\x9a\x12\n\xc3z\xb23`\xe2\xda\x89U\xf3\"X\xf3\xde\xdc\xcf\xef\x83\x86\xa2\x8c\x94O\x9fh\xf2\x98\x90F\x84\'\xc7v\xbf\xe3\xcc5,\x8b^\x07de\x82\xc0H\xb0\xa8\x91\xf9a\x9fv P\xa8\x91\xc7f\xb5\xebxb\x03V\xf0\x8a\x1a\x13\xea1\xa3\x1e\xa0\x99\xfd8\xf6\xf6\'2Xo\x07\xf5k\xb8\xfb\x14+\xaf\xb7\xaa\xcc\xd6c_s\x8c\xda\x05\x99\xa88\xa8\xcb\x17x6Q\xac\xe9\x9e\xf4x:\x8d\xcf\x0f\xd9B\xe2\x98\x0c\xab/\x9f\x0e\x01\xde\xef\x9f\x99I\xf1-\xdf\xactM\x1b\x98\xb5G\xc5\xe5)\xd1\xf9\x90\x18\xc7b\x9c\xbe\x83\xc7&{>\x8a%\xc7\xc0\xdd\x9d\xe65h\x10 \x9d\x8f\xd8\xde\xd2\xc3\x84\x9c\r^\xe8/\xc9\x02\x03\x01\x00\x01", name_constraints: None @@ -4552,7 +4733,7 @@ * bP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3gm3c * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\"0 \x06\x03U\x04\n\x13\x19Google Trust Services LLC1\x140\x12\x06\x03U\x04\x03\x13\x0bGTS Root R1", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xb6\x11\x02\x8b\x1e\xe3\xa1w\x9b;\xdc\xbf\x94>\xb7\x95\xa7@<\xa1\xfd\x82\xf9}2\x06\x82q\xf6\xf6\x8c\x7f\xfb\xe8\xdb\xbcj.\x97\x97\xa3\x8cK\xf9+\xf6\xb1\xf9\xce\x84\x1d\xb1\xf9\xc5\x97\xde\xef\xb9\xf2\xa3\xe9\xbc\x12\x89^\xa7\xaaR\xab\xf8#\'\xcb\xa4\xb1\x9cc\xdb\xd7\x99~\xf0\n^\xebh\xa6\xf4\xc6ZG\rM\x103\xe3N\xb1\x13\xa3\xc8\x18lK\xec\xfc\t\x90\xdf\x9dd)%#\x07\xa1\xb4\xd2=.`\xe0\xcf\xd2\t\x87\xbb\xcdH\xf0M\xc2\xc2z\x88\x8a\xbb\xba\xcfY\x19\xd6\xaf\x8f\xb0\x07\xb0\x9e1\xf1\x82\xc1\xc0\xdf.\xa6ml\x19\x0e\xb5\xd8~&\x1aE\x03=\xb0y\xa4\x94(\xad\x0f\x7f&\xe5\xa8\x08\xfe\x96\xe8\xd6\xdf\x91\"\x12\xe6\xbe\xfa\xd82\xfc\x10c\x14Qr\xde]\xd6\x16\x93\xbd)h3\xef:f\xec\x07\x8a&\xdf\x13\xd7Wex\'\xde^I\x14\x00\xa2\x00\x7f\x9a\xa8!\xb6\xa9\xb1\x95\xb0\xa5\xb9\r\x16\x11\xda\xc7lH<@\xe0~\rZ\xcdV<\xd1\x97\x05\xb9\xcbK\xed9K\x9c\xc4?\xd2U\x13n$\xb0\xd6q\xfa\xf4\xc1\xba\xcc\xed\x1b\xf5\xfe\x81A\xd8\x00\x98=:\xc8\xaez\x987\x18\x05\x95\x02\x03\x01\x00\x01", name_constraints: None @@ -4600,7 +4781,7 @@ * 63ZTGI0RmLo= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02GR1705\x06\x03U\x04\n\x0c.Hellenic Academic and Research Institutions CA1$0\"\x06\x03U\x04\x03\x0c\x1bHARICA TLS RSA Root CA 2021", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\x8b\xc2\xe7\xafe\x9b\x05g\x96\xc9\r$\xb9\xd0\x0ed\xfc\xce\xe2$\x18,\x84\x7fwQ\xcb\x04\x116\xb8^\xediq\xa7\x9e\xe4%\t\x97g\xc1G\xc2\xcf\x91\x166b=8\x04\xe1Q\x82\xff\xac\xd2\xb4i\xdd.\xec\x11\xa3E\xeekk;L\xbf\x8c\x8d\xa4\x1e\x9d\x11\xb9\xe98\xf9z\x0e\x0c\x98\xe2#\x1d\xd1Nc\xd4\xe7\xb8AD\xfbk\xafk\xda\x1f\xd3\xc5\x91\x88[\xa4\x89\x92\xd1\x81\xe6\x8c9X\xa0\xd6iC\xa9\xad\x98RXn\xdb\n\xfbk\xcfh\xfa\xe3\xa4^:Es\x98\x07\xea_\x02r\xde\x0c\xa5\xb3\x9f\xae\xa9\x1d\xb7\x1d\xb3\xfc\x8aY\xe7nre\xad\xf50\x94#\x07\xf3\x82\x16K5\x98\x9cS\xbb/\xca\xe4Z\xd9\xc7\x8d\x1d\xfc\x98\x99\xfb,\xa4\x82k\xf0*\x1f\x8e\x0b_q\\\\\xaeB{)\x89\x81\xcb\x03\xa3\x99\xca\x88\x9e\x0b@\tA3\xdb\xe6Xz\xfd\xae\x99p\xc0Z\x0f\xd6\x13\x86q/vi\xfc\x90\xdd\xdb-n\xd1\xf2\x9b\xf5\x1ak\x9eo\x15\x8cz\xf0K(\xa0\"8\x80$l6\xa4;\xf20\x91\xf3x\x13\xcf\xc1?5\xab\xf1\x1d\x11#\xb5C\"\x9e\x01\x92\xb7\x18\x02\xe5\x11\xd1\x82\xdb\x15\x00\xcca7\xc1*|\x9a\xe1\xd0\xba\xb3PF\xee\x82\xac\x9d1\xf8\xfb#\xe2\x03\x00Hp\xa3\t&y\x15S`\xf38\\\xad8\xea\x81\x00c\x14\xb93^\xdd\x0b\xdb\xa0E\x07\x1a3\t\xf8M\xb4\xa7\x02\xa6i\xf4\xc2Y\x05\x88e\x85V\xaeK\xcb\xe0\xde<}-\x1a\xc8\xe9\xfb\x1f\xa3aJ\xd6*\x13\xadwL\x1a\x18\x9b\x91\x0fX\xd8\x06T\xc5\x97\xf8\xaa? \x8a\xa6\x85\xa6w\xf6\xa6\xfc\x1c\xe2\xeen\x943*\x83P\x84\n\xe5O\x86\xf8PEx\x00\x81\xeb[h\xe3&\x8d\xcc{\\Q\xf4\x14,@\xbe\x1a`\x1dzra\x1d\x1fc-\x88\xaa\xce\xa2E\x90\x08\xfck\xbe\xb3P*Z\xfd\xa8H\x18F\xd6\x90@\x92\x90\n\x84^h1\xf8\xeb\xed\r\xd3\x1d\xc6}\x99\x18UV\'e.\x8dE\xc5$\xec\xce\xe3\x02\x03\x01\x00\x01", name_constraints: None @@ -4651,7 +4832,7 @@ * n/PIjhs4ViFqUZPTkcpG2om3PVODLAgfi49T3f+sHw== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x160\x14\x06\x03U\x04\n\x13\rEntrust, Inc.1(0&\x06\x03U\x04\x0b\x13\x1fSee www.entrust.net/legal-terms1907\x06\x03U\x04\x0b\x130(c) 2015 Entrust, Inc. - for authorized use only1200\x06\x03U\x04\x03\x13)Entrust Root Certification Authority - G4", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xb1\xec,B\xee\xe2\xd10\xff\xa5\x92G\xe2-\xc3\xbad\x97m\xca\xf7\r\xb5Y\xc1\xb3\xcb\xa8h\x19\xd8\xaf\x84m0p]~\xf3.\xd2S\x99\xe1\xfe\x1f^\xd9H\xaf]\x13\x8d\xdb\xffc3M\xd3\x00\x02\xbc\xc4\xf8\xd1\x06\x08\x94yX\x8a\x15\xde)\xb3\xfd\xfd\xc4O\xe8\xaa\xe2\xa0;y\xcd\xbfkC2\xdd\xd9t\x10\xb9\xf7\xf4h\xd4\xbb\xd0\x87\xd5\xaaK\x8a*o*\x04\xb5\xb2\xa6\xc7\xa0z\xe6H\xab\xd2\xd1Y\xcc\xd6~#\xe6\x97l\xf0B\xe5\xdcQK\x15A\xedIJ\xc9\xde\x10\x97\xd6v\xc1\xef\xa5\xb56\x14\x975\xd8x\"5R\xefC\xbd\xdb\'\xdbaV\x824\xdc\xcb\x88`\x0c\x0bZ\xe5,\x01\xc6T\xaf\xd7\xaa\xc1\x10{\xd2\x05Z\xb8@\x9e\x86\xa7\xc3\x90\x86\x02VR\tz\x9c\xd2\'\x82SJeRj\xf5<\xe7\xa8\xf2\x9c\xaf\x8b\xbd\xd3\x0e\xd4\xd4^n\x87\x9ej=E\x1d\xd1]\x1b\xf4\xe9\n\xac`\x99\xfb\x89\xb4\xff\x98,\xcf|\x1d\xe9\x02\xaa\x04\x9a\x1e\xb8\xdc\x88n%\xb3lf\xf7<\x90\xf3W\xc1\xb3/\xf5m\xf2\xfb\xca\xa1\xf8)\x9dF\x8b\xb3j\xf6\xe6g\x07\xbe,g\n*\x1fZ\xb2>W\xc4\xd3!!ceR\x91\x1b\xb1\x99\x8ey~\xe6\xeb\x8d\x00\xd9Z\xaa\xeas\xe8\xa4\x82\x02G\x96\xfe[\x8eTa\xa3\xeb/K0\xb0\x8b#ur|!<\xc8\xf6\xf1t\xd4\x1c{\xa3\x05U\xee\xbbM;2\xbe\x9awf\x9e\xaci\x90\"\x07\x1fa:\x96\xbe\xe5\x9aO\xcc\x05<(Y\xd3\xc1\x0cT\xa8Ya\xbd\xc8rL\xe8\xdc\x9f\x87\x7f\xbd\x9cH6^\x95\xa3\x0e\xb98$U\xfcuf\xeb\x02\xe3\x084)J\xc6\xe3+/3\xa0\xda\xa3\x86\xa5\x12\x97\xfd\x80+\xda\x14B\xe3\x92\xbd>\xf2]^gt.\x1c\x88G)4_\xe22\xa8\x9c%7\x8c\xba\x98\x00\x97\x8bI\x96\x1e\xfd%\x8a\xac\xdc\xda\xd8]tnf\xb0\xffD\xdf\xa1\x18\xc6\xbeH/7\x94x\xf8\x95J?\x7f\x13^]Y\xfdt\x86CcsI\x02\x03\x01\x00\x01", name_constraints: None @@ -4696,7 +4877,7 @@ * SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x140\x12\x06\x03U\x04\n\x0c\x0bTeliaSonera1\x1f0\x1d\x06\x03U\x04\x03\x0c\x16TeliaSonera Root CA v1", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xc2\xbe\xeb\'\xf0!\xa3\xf3i&U~\x9d\xc5U\x16\x91\\\xfd\xef!\xbfS\x80z-\xd2\x91\x8cc1\xf0\xec$\xf0\xc3\xa5\xd2r|\x10m\xf47\xb7\xe5\xe6|y\xea\x8c\xb5\x82\x8b\xaeH\xb6\xac\x00\xdceu\xec*M_\xc1\x87\xf5 e+\x81\xa8G>\x89#\x950\x16\x90\x7f\xe8W\x07H\xe7\x19\xae\xbfEg\xb17\x1b\x06*\xfe\xde\xf9\xac}\x83\xfb^\xba\xe4\x8f\x97g\xbeK\x8e\x8dd\x07W8Ui46=\x13H\xefO\xe2\xd3f\x1e\xa4\xcf\x1a\xb7^63\xd4\xb4\x06\xbd\x18\x01\xfdw\x84P\x00E\xf5\x8c]\xe8#\xbc~\xfe5\xe1\xedP{\xa90\x8d\x19\xd3\t\x8ehg]\xbf<\x97\x18S\xbb)b\xc5\xca^r\xc1\xc7\x96\xd4\xdb-\xa0\xb4\x1fi\x03\xec\xea\xe2P\xf1\x0c<\xf0\xac\xf3S-\xf0\x1c\xf5\xedl99s\x80\x16\xc8R\xb0#\xcd\xe0>\xdc\xddM=\x98\xa8a\xde:\x1e\xd2\xf8^\x03\xe0\xc1\xc9\x1c\x8c\xd3\x8dM\xd3\x956\xb37_cc\x9b3\x14\xf0-&kS|\x89\x8c2\xc2n\xec=!\x009\xc9\xa1h\xe2P\x83.\xb0:+\xf36\xa0\xac/\xe4oa\xc2Q\t9>\x8bS\xb9\xbbg\xda\xdcS\xb9vY6\x9dC\xe5 \xe0=2`\x85\"Q\xb7\xc73\xbb\xdd\x15/\xa4x\xa6\x07{\x81F6\x04\x86\xddy5\xc7\x95,;\xb0\xa3\x175\xe5s\x1f\xb4\\Y\xef\xda\xea\x10e{z\xd0\x7f\x9f\xb3\xb4*7;p\x8b\x9b[\xb9+\xb7\xec\xb2Q\x12\x97S)Z\xd4\xf0\x12\x10\xdcO\x02\xbb\x12\x92/b\xd4?iC|\r\xd6\xfcXu\x01\x88\x9dX\x16K\xde\xba\x90\xffG\x01\x89\x06j\xf6_\xb2\x90j\xb3\x02\xa6\x02\x88\xbf\xb3G~*\xd9\xd5\xfahx5M\x02\x03\x01\x00\x01", name_constraints: None @@ -4742,7 +4923,7 @@ * L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02SK1\x130\x11\x06\x03U\x04\x07\x13\nBratislava1\x130\x11\x06\x03U\x04\n\x13\nDisig a.s.1\x190\x17\x06\x03U\x04\x03\x13\x10CA Disig Root R2", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xa2\xa3\xc4\x00\t\xd6\x85]-m\x14\xf6\xc2\xc3s\x9e5\xc2qU~\x81\xfb\xabFP\xe0\xc1|Ix\xe6\xabyX<\xda\xff|\x1c\x9f\xd8\x97\x02x>kA\x04\xe9A\xbd\xbe\x03,E\xf6/d\xd4\xab]\xa3G=d\x9b\xe9h\x9a\xc6\xcc\x1b?\xba\xbe\xb2\x8b4\x02.\x98U\x19\xfc\x8co\xaa_\xdaL\xceM\x03!\xa3\xd8\xd24\x93V\x96\xcbL\x0c\x00\x16<_\x1a\xcd\xc8\xc7l\xa6\xad\xd31\xa7\xbc\xe8\xe5\xe1f\xd6\xd2\xfb\x03\xb4Ae\xc9\x10\xae\x0e\x05c\xc6\x80ji0\xfd\xd2\xee\x90\xef\r\'\xdf\x9f\x95s\xf4\xe1%\xdal\x16\xdeA84\xea\x8b\xfc\xd1\xe8\x04\x14a-A~\xac\xc7wN\xcbQT\xfb^\x92\x18\x1b\x04Zh\xc6\xc9\xc4\xfa\xb7\x13\xa0\x98\xb7\x11+\xb7\xd6W\xcc|\x9e\x17\xd1\xcb%\xfe\x86N$.V\x0cxM\x9e\x01\x12\xa6+\xa7\x01en|b\x1d\x84\x84\xdf\xea\xc0k\xb5\xa5*\x95\x83\xc3S\x11\x0cs\x1d\x0b\xb2F\x90\xd1B:\xce@n\x95\xad\xff\xc6\x94\xadn\x97\x84\x8e}o\x9e\x8a\x80\rIms\xe2{\x92\x1e\xc3\xf3\xc1\xf3\xeb.\x05o\xd9\x1b\xcf7v\x04\xc8\xb4Z\xe4\x17\xa7\xcb\xddv\x1f\xd0\x19v\xe8,\x05\xb3\xd6\x9c4\xd8\x96\xdca\x87\x91\x05\xe4D\x083\xc1\xda\xb9\x08e\xd4\xae\xb26\r\xeb\xba8\xba\x0c\xe5\x9b\x9e\xeb\x8df\xdd\x99\xcf\xd6\x89A\xf6\x04\x92\x8a))mk:\x1c\xe7u}\x02q\x0e\xf3\xc0\xe7\xbd\xcb\x19\xdd\x9d`\xb2\xc2f`\xb6\xb1\x04\xee\xc9\xe6\x86\xb9\x9af@\xa8\xe7\x11\xed\x81E\x03\x8b\xf6gY\xe8\xc1\x06\x11\xbd\xdd\xcf\x80\x02Oe@x\\GP\xc8\x9b\xe6\x1f\x81{\xe4D\xa8[\x85\x9a\xe2\xdeZ\xd5\xc7\xf9:DfK\xe42T|\xe4l\x9c\xb3\x0e=\x17\xa2\xb24\x12\xd6~\xb2\xa8I\xbb\xd1z(@\xbe\xa2\x16\x1f\xdf\xe47\x1f\x11s\xfb\x90\neC\xa2\r|\xf8\x06\x01U3}\xb0\r\xb8\xf4\xf5\xae\xa5BW|6\x11\x8c{^\xc4\x03\x9d\x8cy\x9d\x02\x03\x01\x00\x01", name_constraints: None @@ -4770,7 +4951,7 @@ * 1KyLa2tJElMzrdfkviT8tQp21KW8EA== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x0f0\r\x06\x03U\x04\n\x13\x06Amazon1\x190\x17\x06\x03U\x04\x03\x13\x10Amazon Root CA 4", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\xd2\xab\x8a7O\xa3S\r\xfe\xc1\x8a{K\xa8{FKc\xb0b\xf6-\x1b\xdb\x08q!\xd2\x00\xe8c\xbd\x9a\'\xfb\xf09n]\xea=\xa5\xc9\x81\xaa\xa3[ \x98E]\x16\xdb\xfd\xe8\x10m\xe3\x9c\xe0\xe3\xbd_\x84b\xf3pd3\xa0\xcb$/p\xba\x88\xa1*\xa0u\xf8\x81\xaeb\x06\xc4\x81\xdb9n)\xb0\x1e\xfa.\\", name_constraints: None @@ -4807,7 +4988,7 @@ * WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02FR1\x120\x10\x06\x03U\x04\n\x0c\tDhimyotis1\x110\x0f\x06\x03U\x04\x03\x0c\x08Certigna", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xc8h\xf1\xc9\xd6\xd6\xb34u&\x82\x1e\xec\xb4\xbe\xea\\\xe1&\xed\x11Ga\xe1\xa2|\x16x@!\xe4`\x9eZ\xc8c\xe1\xc4\xb1\x96\x92\xff\x18mi#\xe1+b\xf7\xdd\xe26/\x91\x07\xb9H\xcf\x0e\xecy\xb6,\xe74Kp\x08%\xa3<\x87\x1b\x19\xf2\x81\x07\x0f8\x90\x19\xd3\x11\xfe\x86\xb4\xf2\xd1^\x1e\x1e\x96\xcd\x80l\xce;1\x93\xb6\xf2\xa0\xd0\xa9\x95\x12}\xa5\x9a\xcck\xc8\x84V\x8a3\xa9\xe7\"\x15S\x16\xf0\xcc\x17\xecW_\xe9\xa2\n\x98\t\xde\xe3_\x9co\xdcH\xe3\x85\x0b\x15Z\xa6\xba\x9f\xacH\xe3\t\xb2\xf7\xf42\xde^4\xbe\x1cx]B[\xce\x0e\"\x8fM\x90\xd7}2\x18\xb3\x0b,j\xbf\x8e?\x14\x11\x89 \x0ew\x14\xb5=\x94\x08\x87\xf7%\x1e\xd5\xb2`\x00\xeco*(%n*>\x18c\x17%?>D \x16\xf6&\xc8%\xae\x05J\xb4\xe7c,\xf3\x8c\x16S~\\\xfb\x11\x1a\x08\xc1Fb\x9f\"\xb8\xf1\xc2\x8di\xdc\xfa:X\x06\xdf\x02\x03\x01\x00\x01", name_constraints: None @@ -4840,7 +5021,7 @@ * dWNbFJWcHwHP2NVypw87 * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02DE1\x150\x13\x06\x03U\x04\n\x13\x0cD-Trust GmbH1\"0 \x06\x03U\x04\x03\x13\x19D-TRUST BR Root CA 1 2020", spki: b"0\x10\x06\x07*\x86H\xce=\x02\x01\x06\x05+\x81\x04\x00\"\x03b\x00\x04\xc6\xcb\xc7(\xd1\xfb\x84\xf5\x9a\xefB\x14 \xe1Cknu\xad\xfc+\x03\x84\xd4v\x93%\xd7Y;Aek\x1e\xe64*\xbbt\xf6\x12\xce\xe8m\xe7\xab\xe4\xf8q\xb0\x19\'\xa9\t\x0c\xa6\x95\xbfK\x8c\x0c\xfaU\x98;\xd8\xe8\"\xa1Kq8y\xac\x97\x92i\xb3\x89~\xea!h\x06\x98\x14\x96\x87\xd2a6\xbcm\'V\x9eW\xee\xc0\xc0V\xfd2\xcf\xa4\xd9\x8e\xc2#\xd7\x8d\xa8\xf3\xd8%\xac\x97\xe4p8\xf4\xb6:\xb4\x9d;\x97&C\xa3\xa1\xbcIYrL#0\x87\x01X\xf6N\xbe\x1chVf\xaf\xcdA]\xc8\xb3M*UF\xab\x1f\xda\x1e\xe2@=\xdb\xcd}\xb9\x92\x80\x9c7\xdd\x0c\x96d\x9d\xdc\"\xf7d\x8b\xdfa\xde\x15\x94R\x15\xa0}R\xc9K\xa8!\xc9\xc6\xb1\xed\xcb\xc3\x95`\xd1\x0f\xf0\xabp\xf8\xdf\xcbM~\xec\xd6\xfa\xab\xd9\xbd\x7fT\xf2\xa5\xe9y\xfa\xd9\xd6v$(s\x02\x03\x01\x00\x01", name_constraints: None @@ -4953,7 +5134,7 @@ * jjxDah2nGN59PRbxYvnKkKj9 * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\x08\x13\nNew Jersey1\x140\x12\x06\x03U\x04\x07\x13\x0bJersey City1\x1e0\x1c\x06\x03U\x04\n\x13\x15The USERTRUST Network1.0,\x06\x03U\x04\x03\x13%USERTrust RSA Certification Authority", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\x80\x12e\x176\x0e\xc3\xdb\x08\xb3\xd0\xacW\rv\xed\xcd\'\xd3L\xadP\x83a\xe2\xaa M\t-d\t\xdc\xce\x89\x9f\xcc=\xa9\xec\xf6\xcf\xc1\xdc\xf1\xd3\xb1\xd6{7(\x11+G\xda9\xc6\xbc:\x19\xb4_\xa6\xbd}\x9d\xa3cB\xb6v\xf2\xa9;+\x91\xf8\xe2o\xd0\xec\x16 \x90\t>\xe2\xe8t\xc9\x18\xb4\x91\xd4bd\xdb\x7f\xa3\x06\xf1\x88\x18j\x90\"<\xbc\xfe\x13\xf0\x87\x14{\xf6\xe4\x1f\x8e\xd4\xe4Q\xc6\x11gF\x08Q\xcb\x86\x14T?\xbc3\xfe~l\x9c\xff\x16\x9d\x18\xbdQ\x8e5\xa6\xa7f\xc8rg\xdb!f\xb1\xd4\x9bx\x03\xc0P:\xe8\xcc\xf0\xdc\xbc\x9eL\xfe\xaf\x05\x965\x1fWZ\xb7\xff\xce\xf9=\xb7,\xb6\xf6T\xdd\xc8\xe7\x12:M\xaeL\x8a\xb7\\\x9a\xb4\xb7 =\xca\x7f\"4\xae~;hf\x01D\xe7\x01NFS\x9b3`\xf7\x94\xbeS7\x90sC\xf32\xc3S\xef\xdb\xaa\xfetNi\xc7k\x8c`\x93\xde\xc4\xc7\x0c\xdf\xe12\xae\xcc\x93;Qx\x95g\x8b\xee=V\xfe\x0c\xd0i\x0f\x1b\x0f\xf3%&k3m\xf7nG\xfasC\xe5~\x0e\xa5f\xb1)|2\x84cU\x89\xc4\r\xc1\x93T0\x19\x13\xac\xd3}7\xa7\xeb]:l5\\\xdbA\xd7\x12\xda\xa9I\x0b\xdf\xd8\x80\x8a\t\x93b\x8e\xb5f\xcf%\x88\xcd\x84\xb8\xb1?\xa49\x0f\xd9\x02\x9e\xeb\x12L\x95|\xf3k\x05\xa9^\x16\x83\xcc\xb8g\xe2\xe8\x13\x9d\xcc[\x82\xd3L\xb3\xed[\xff\xde\xe5s\xac#;-\x00\xbf5Ut\tI\xd8IX\x1a\x7f\x926\xe6Q\x92\x0e\xf3&}\x1cM\x17\xbc\xc9\xecC&\xd0\xbfA_@\xa9DD\xf4\x99\xe7W\x87\x9eP\x1fWT\xa8>\xfdtc/\xb1Pe\t\xe6XB.C\x1aL\xb4\xf0%GY\xfa\x04\x1e\x93\xd4&FJP\x81\xb2\xde\xbex\xb7\xfcg\x15\xe1\xc9W\x84\x1e\x0fc\xd6\xe9b\xba\xd6_U.\xea\\\xc6(\x08\x04%9\xb8\x0e+\xa9\xf2L\x97\x1c\x07?\rR\xf5\xed\xef/\x82\x0f\x02\x03\x01\x00\x01", name_constraints: None @@ -4988,7 +5169,7 @@ * 9u6wWk5JRFRYX0KD * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02RO1\x110\x0f\x06\x03U\x04\n\x13\x08certSIGN1\x190\x17\x06\x03U\x04\x0b\x13\x10certSIGN ROOT CA", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xb73\xb9~\xc8%J\x8e\xb5\xdb\xb4(\x1b\xaaW\x90\xe8\xd1\"\xd3d\xba\xd3\x93\xe8\xd4\xac\x86a@j`WhT\x84M\xbcjT\x02\x05\xff\xdf\x9b\x9a*\xae]\x07\x8fJ\xc3(\x7f\xef\xfb+\xfay\xf1\xc7\xad\xf0\x10S$\x90\x8bf\xc9\xa8\x88\xab\xafZ\xa3\x00\xe9\xbe\xbaF\xee[s{,\x17\x82\x81^b,\xa1\x02e\xb3\xbd\xc5+\x00~\xc4\xfc\x033W\r\xed\xe2\xfa\xce]E\xd68\xcd5\xb6\xb2\xc1\xd0\x9c\x81J\xaa\xe4\xb2\x01\\\x1d\x8f_\x99\xc4\xb1\xad\xdb\x88!\xeb\x90\x08\x82\x80\xf30\xa3C\xe6\x90\x82\xaeU(I\xed[\xd7\xa9\x108\x0e\xfe\x8fL[\x9bF\xeaA\xf5\xb0\x08t\xc3\xd0\x883\xb6|\xd7t\xdf\xdc\x84\xd1C\x0eu9\xa1%@(\xeax\xcb\x0e,.9\x9d\x8c\x8bn\x16\x1c/&\x82\x10\xe2\xe3e\x94\n\x04\xc0^\xf7][\xf8\x10\xe2\xd0\xbazK\xfb\xde7\x00\x00\x1a[(\xe3\xd2\x9cs>2\x87\x98\xa1\xc9Q/\xd7\xde\xac3\xb3O\x02\x03\x01\x00\x01", name_constraints: None @@ -5035,7 +5216,7 @@ * uu8wd+RU4riEmViAqhOLUTpPSPaLtrM= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02ES1\x110\x0f\x06\x03U\x04\n\x0c\x08FNMT-RCM1\x190\x17\x06\x03U\x04\x0b\x0c\x10AC RAIZ FNMT-RCM", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xbaq\x80zL\x86n\x7f\xc8\x13m\xc0\xc6}\x1c\x00\x97\x8f,\x0c#\xbb\x10\x9a@\xa9\x1a\xb7\x87\x88\xf8\x9bVj\xfb\xe6{\x8e\x8b\x92\x8e\xa7%]Y\x11\xdb6.\xb7Q\x17\x1f\xa9\x08\x1f\x04\x17$X\xaa7J\x18\xdf\xe59\xd4W\xfd\xd7\xc1,\x91\x01\x91\xe2\"\xd4\x03\xc0X\xfcwG\xec\x8f>tC\xba\xac4\x8dM8vg\x8e\xb0\xc8o03Xq\\\xb4\xf5kn\xd4\x01P\xb8\x13~lJ\xa3I\xd1 \x19\xee\xbc\xc0)\x18e\xa7\xde\xfe\xef\xdd\n\x90!\xe7\x1ag\x92B\x10\x98_O0\xbc>\x1cE\xb4\x10\xd7h@\x14\xc0@\xfa\xe7w\x17z\xe6\x0b\x8fe[<\xd9\x9aR\xdb\xb5\xbd\x9eF\xcf=\xeb\x91\x05\x02\xc0\x96\xb2vLM\x10\x96;\x92\xfa\x9c\x7f\x0f\x99\xdf\xbe#5E\x1e\x02\\\xfe\xb5\xa8\x9b\x99%\xda^\xf3\"\xc39\xf5\xe4*.\xd3\xc6\x1f\xc4l\xaa\xc5\x1cj\x01\x05J/\xd2\xc5\xc1\xa84&]f\xa5\xd2\x02!\xf9\x18\xb7\x06\xf5N\x99o\xa8\xabLQ\xe8\xcfP\x18\xc5w\xc89\t,I\x922\x99\xa8\xbb\x17\x17y\xb0Z\xc5\xe6\xa3\xc4YeG5\x83^\xa9\xe85\x0b\x99\xbb\xe4\xcd \xc6\x9bJ\x069\xb5h\xfc\"\xba\xeeU\x8c+N\xea\xf3\xb1\xe3\xfc\xb6\x99\x9a\xd5B\xfaqM\x08\xcf\x87\x1ejq}\xf9\xd3\xb4\xe9\xa5q\x81{\xc2NG\x96\xa5\xf6v\x85\xa3(\x8f\xe9\x80n\x81S\xa5m_\xb8H\xf9\xc2\xf96\xa6.I\xff\xb8\x96\xc2\x8c\x07\xb3\x9b\x88X\xfc\xeb\x1b\x1c\xde-p\xe2\x97\x920\xa1\x89\xe3\xbcU\xa8\'\xd6K\xed\x90\xad\x8b\xfac%Y-\xa85\xdd\xca\x973\xbc\xe5\xcd\xc7\x9d\xd1\xec\xef^\x0eJ\x90\x06&c\xad\xb9\xd95-\x07\xbave,\xacW\x8f}\xf4\x07\x94\xd7\x81\x02\x96]\xa3\x07I\xd5z\xd0W\xf9\x1b\xe7SFu\xaa\xb0yB\xcbhq\x08\xe9`\xbd9i\xce\xf4\xaf\xc3V@\xc7\xadR\xa2\t\xe4o\x86G\x8a\x1f\xeb(\']\x83 \xaf\x04\xc9lV\x9a\x8bF\xf5\x02\x03\x01\x00\x01", name_constraints: None @@ -5071,7 +5252,7 @@ * HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02BE1\x190\x17\x06\x03U\x04\n\x13\x10GlobalSign nv-sa1\x100\x0e\x06\x03U\x04\x0b\x13\x07Root CA1\x1b0\x19\x06\x03U\x04\x03\x13\x12GlobalSign Root CA", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xda\x0e\xe6\x99\x8d\xce\xa3\xe3O\x8a~\xfb\xf1\x8b\x83%k\xeaH\x1f\xf1*\xb0\xb9\x95\x11\x04\xbd\xf0c\xd1\xe2gf\xcf\x1c\xdd\xcf\x1bH+\xee\x8d\x89\x8e\x9a\xaf)\x80e\xab\xe9\xc7-\x12\xcb\xab\x1cLp\x07\xa1=\n0\xcd\x15\x8dO\xf8\xdd\xd4\x8cP\x15\x1c\xefP\xee\xc4.\xf7\xfc\xe9R\xf2\x91}\xe0m\xd550\x8e^Cs\xf2A\xe9\xd5j\xe3\xb2\x89:V98o\x06<\x88i[*M\xc5\xa7T\xb8l\x89\xcc\x9b\xf9<\xca\xe5\xfd\x89\xf5\x12<\x92x\x96\xd6\xdctn\x93Da\xd1\x8d\xc7F\xb2u\x0e\x86\xe8\x19\x8a\xd5ml\xd5x\x16\x95\xa2\xe9\xc8\n8\xeb\xf2$\x13OsT\x93\x13\x85:\x1b\xbc\x1e4\xb5\x8b\x05\x8c\xb9w\x8b\xb1\xdb\x1f \x91\xab\tSn\x90\xce{7t\xb9pG\x91\"Qc\x16y\xae\xb1\xaeA&\x08\xc8\x19+\xd1F\xaaH\xd6d*\xd7\x834\xff,*\xc1l\x19CJ\x07\x85\xe7\xd3|\xf6!h\xef\xea\xf2R\x9f\x7f\x93\x90\xcf\x02\x03\x01\x00\x01", name_constraints: None @@ -5117,7 +5298,7 @@ * 4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02NO1\x1d0\x1b\x06\x03U\x04\n\x0c\x14Buypass AS-9831633271 0\x1e\x06\x03U\x04\x03\x0c\x17Buypass Class 3 Root CA", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xa5\xda\n\x95\x16P\xe3\x95\xf2^\x9dv1\x062z\x9b\xf1\x10v\xb8\x00\x9a\xb5R6\xcd$G\xb0\x9f\x18d\xbc\x9a\xf6\xfa\xd5y\xd8\x90bL\"/\xde8=\xd6\xe0\xa8\xe9\x1c,\xdbx\x11\xe9\x8ehQ\x15r\xc7\xf33\x87\xe4\xa0]\x0b\\\xe0W\x07*0\xf5\xcd\xc47w(M\x18\x91\xe6\xbf\xd5R\xfdq-p>\xe7\xc6\xc4\x8a\xe3\xf0(\x0b\xf4v\x98\xa1\x8b\x87U\xb2:\x13\xfc\xb7>\'7\x8e\"\xe3\xa8O*\xef`\xbb=\xb79\xc3\x0e\x01G\x99]\x12O\xdbC\xfaW\xa1\xed\xf9\x9d\xbe\x11G&[\x13\x98\xab]\x16\x8a\xb07\x1cW\x9dE\xff\x88\x966\xbf\xbb\xca\x07{o\x87c\xd7\xd02j\xd6]l\x0c\xf1\xb3n9\xe2k1.9\x00\'\x14\xde8\xc0\xec\x19f\x86\x12\xe8\x9dr\x16\x13dR\xc7\xa97\x1c\xfd\x820\xed\x84\x18\x1d\xf4\xae\\\xffp\x13\x00\xeb\xb1\xf53zK\xd6U\xf8\x05\x8dKi\xb0\xf5\xb3(6\\\x14\xc4QsMk\x0b\xf14\x07\xdb\x179\xd7\xdc({k\xf5\x9f\xf3.\xc1O\x17*\x10\xf3\xcc\xca\xe8\xeb\xfdk\xab.\x9a\x9f-\x82n\x04\xd4R\x01\x93-=\x86\xfc~\xfc\xdf\xefB\x1d\xa6k\xef\xb9 \xc6\xf7\xbd\xa0\xa7\x95\xfd\xa7\xe6\x89$\xd8\xcc\x8c4l\xe2#/\xd9\x12\x1a!\xb9U\x91o\x0b\x91y\x19\x0c\xad@\x88\x0bp\xe2z\xd2\x0e\xd8hH\xbb\x82\x139\x10X\xe9\xd8*\x07\xc6\x12\xdbX\xdb\xd2;U\x10G\x05\x15gb~\x18c\xa6F?\t\x0eT2^\xbf\rbz\'\xef\x80\xe8\xdb\xd9K\x06Z7Z%\xd0\x08\x12w\xd4o\tP\x97=\xc8\x1d\xc3\xdf\x8cE0V\xc6\xd3d\xabf\xf3\xc0^\x96\x9c\xc3\xc4\xef\xc3|k\x8b:y\x7f\xb3I\xcf=\xe2\x89\x9f\xa00K\x85\xb9\x9c\x94$y\x8f}k\xa9Eh\x0f+\xd0\xf1\xda\x1c\xcbi\xb8\xcaIbm\xc8\xd0cb\xdd`\x0fX\xaa\x8f\xa1\xbc\x05\xa5f\xa2\xcf\x1bv\xb2\x84d\xb1L9R\xc00\xba\xf0\x8cK\x02\xb0\xb6\xb7\x02\x03\x01\x00\x01", name_constraints: None @@ -5157,62 +5338,13 @@ * KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1 * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02DE1\x150\x13\x06\x03U\x04\n\x0c\x0cD-Trust GmbH1*0(\x06\x03U\x04\x03\x0c!D-TRUST Root Class 3 CA 2 EV 2009", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\x99\xf1\x844p\xba/\xb70\xa0\x8e\xbd|\x04\xcf\xbeb\xbc\x99\xfd\x82\x97\xd2z\ng\x968\t\xf6\x10N\x95\"s\x99\x8d\xda\x15-\xe7\x05\xfc\x19s\"\xb7\x8e\x98\x00\xbc<=\xac\xa1l\xfb\xd6y%K\xad\xf0\xccd\xda\x88>)\xb8\x0f\t\xd34\xdd3\xf5b\xd1\xe1\xcd\x19\xe9\xee\x18OLX\xae\xe2\x1e\xd6\x0c[\x15Z\xd8:\xb8\xc4\x18d\x1e\xe33\xb2\xb5\x89wN\x0c\xbf\xd9\x94k\x13\x97o\x12\xa3\xfe\x99\xa9\x04\xcc\x15\xec`h6\xed\x08{\xb7\xf5\xbf\x93\xedf1\x83\x8c\xc6q4\x87N\x17\xea\xaf\x8b\x91\x8d\x1cVA\xae\"7^7\xf2\x1d\xd9\xd1-\r/iQ\xa7\xbef\xa6\x8a:*\xbd\xc7\x1a\xb1\xe1\x14\xf0\xbe:\x1d\xb9\xcf[\xb1j\xfe\xb4\xb1F \xa2\xfb\x1e;p\xef\x93\x98}\x8cs\x96\xf2\xc5\xef\x85p\xad)&\xfc\x1e\x04>\x1c\xa0\xd8\x0f\xcbR\x83b|\xee\x8bS\x95\x90\xa9W\xa2\xeaa\x05\xd8\xf9M\xc4\'\xfan\xad\xed\xf9\xd7Q\xf7k\xa5\x02\x03\x01\x00\x01", name_constraints: None }, /* - * Issuer: CN=E-Tugra Global Root CA RSA v3 O=E-Tugra EBG A.S. OU=E-Tugra Trust Center - * Subject: CN=E-Tugra Global Root CA RSA v3 O=E-Tugra EBG A.S. OU=E-Tugra Trust Center - * Label: "E-Tugra Global Root CA RSA v3" - * Serial: 75951268308633135324246244059508261641472512052 - * MD5 Fingerprint: 22:be:10:f6:c2:f8:03:88:73:5f:33:29:47:28:47:a4 - * SHA1 Fingerprint: e9:a8:5d:22:14:52:1c:5b:aa:0a:b4:be:24:6a:23:8a:c9:ba:e2:a9 - * SHA256 Fingerprint: ef:66:b0:b1:0a:3c:db:9f:2e:36:48:c7:6b:d2:af:18:ea:d2:bf:e6:f1:17:65:5e:28:c4:06:0d:a1:a3:f4:c2 - * -----BEGIN CERTIFICATE----- - * MIIF8zCCA9ugAwIBAgIUDU3FzRYilZYIfrgLfxUGNPt5EDQwDQYJKoZIhvcNAQEL - * BQAwgYAxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHEwZBbmthcmExGTAXBgNVBAoTEEUt - * VHVncmEgRUJHIEEuUy4xHTAbBgNVBAsTFEUtVHVncmEgVHJ1c3QgQ2VudGVyMSYw - * JAYDVQQDEx1FLVR1Z3JhIEdsb2JhbCBSb290IENBIFJTQSB2MzAeFw0yMDAzMTgw - * OTA3MTdaFw00NTAzMTIwOTA3MTdaMIGAMQswCQYDVQQGEwJUUjEPMA0GA1UEBxMG - * QW5rYXJhMRkwFwYDVQQKExBFLVR1Z3JhIEVCRyBBLlMuMR0wGwYDVQQLExRFLVR1 - * Z3JhIFRydXN0IENlbnRlcjEmMCQGA1UEAxMdRS1UdWdyYSBHbG9iYWwgUm9vdCBD - * QSBSU0EgdjMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCiZvCJt3J7 - * 7gnJY9LTQ91ew6aEOErxjYG7FL1H6EAX8z3DeEVypi6Q3po61CBxyryfHUuXCscx - * uj7X/iWpKo429NEvx7epXTPcMHD4QGxLsqYxYdE0PD0xesevxKenhOGXpOhL9hd8 - * 7jwH7eKKV9y2+/hDJVDqJ4GohryPUkqWOmAalrv9c/SF/YP9f4RtNGx/ardLAQO/ - * rWm31zLZ9Vdq6YaCPqVmMbMWPcLzJmAy01IesGykNz709a/r4d+ABs8qQedmCeFL - * l+d3vSFtKbZnwy1+7dZ5ZdHPOrbRsV5WYVB6Ws5OUDGAA5hH5+QYfERaxqSzO8bG - * wzrwbMOLyKSRBfP12baqBqG3q+Sx6iEUXIOk/P+2UNOMEiaZdnDpwA+mdPy70Bt4 - * znKS4iicvObpCdg604nmvi533wEKb5b25Y08TVJ2Glbhc34XrD2tbKNSEhhw5oBO - * M/J+JjKsBY04pOZ2PJ8QaQ5tndLBeSBrW88zjdGUdjXnXVXHt6woq0bM5zshtQoK - * 5EpZ3IE1S0SVEgpnpaH/WwAH0sDM+T/8nzPyAPiMbIedBi3x7+PmBvrFZhNb/FAH - * nnGGstpvdDDPk1Po3CLW3iAfYY2jLqN4MpBs3KwytQXk9TwzDdbgh3cXTJ2w2Amo - * DVf3RIXwyAS+XF1a4xeOVGNpf0l0ZAWMowIDAQABo2MwYTAPBgNVHRMBAf8EBTAD - * AQH/MB8GA1UdIwQYMBaAFLK0ruYt9ybVqnUtdkvAG1Mh0EjvMB0GA1UdDgQWBBSy - * tK7mLfcm1ap1LXZLwBtTIdBI7zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEL - * BQADggIBAImocn+M684uGMQQgC0QDP/7FM0E4BQ8Tpr7nym/Ip5XuYJzEmMmtcyQ - * 6dIqKe6cLcwsmb5FJ+Sxce3kOJUxQfJ9emN438o2Fi+CiJ+8EUdPdk3ILY7r3y18 - * Tjvarvbj2l0Upq7ohUSdBm6O++96SmotKygY/r+QLHUWnw/qln0F7psTpURs+APQ - * 3SPh/QMSEgj0GDSz4DcLdxEBSL9htLX4GdnLTeqjjO/98Aa1bZL0SmFQhO3sSdPk - * vmjmLuMxC1QLGpLWgti2omU8ZgT5Vdps+9u1FGZNlIM7zR6mK7L+d0CGq+ffCsn9 - * 9t2HVhjYsCxVYJb6CH5SkPVLpi6HfMsg2wY+oF0Dd32iPBMbKaITVaA9FCKvb7jQ - * mhty3QUBjYZgv6Rn7rWlDdF/5horYmbDB7rnoEgcOMPpRfunf/ztAmgayncSd6YA - * VSgU7NbHEqIbZULpkejLPoeJVF3Zr52XnGnnCv8PWniLYypMfUeUP95L6VPQMPHF - * 9p5J3zugkaOj/s1YzOrfr28oO6Bpm4/srK4rVJ2bBLFHIK+WEj5jlB0E5y67hscM - * moi/dkfv97ALl2bSRM9gUgfh1SxKOidhd8rXj+eHDjD/DLsE4mHDosiXYY60MGo8 - * bcIHX0pzLz/5FooBZu+6kcpSV3uu1OYP3Qt6f4ueJiDPO++BcYNZ - * -----END CERTIFICATE----- - */ - webpki::TrustAnchor { - subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02TR1\x0f0\r\x06\x03U\x04\x07\x13\x06Ankara1\x190\x17\x06\x03U\x04\n\x13\x10E-Tugra EBG A.S.1\x1d0\x1b\x06\x03U\x04\x0b\x13\x14E-Tugra Trust Center1&0$\x06\x03U\x04\x03\x13\x1dE-Tugra Global Root CA RSA v3", - spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xa2f\xf0\x89\xb7r{\xee\t\xc9c\xd2\xd3C\xdd^\xc3\xa6\x848J\xf1\x8d\x81\xbb\x14\xbdG\xe8@\x17\xf3=\xc3xEr\xa6.\x90\xde\x9a:\xd4 q\xca\xbc\x9f\x1dK\x97\n\xc71\xba>\xd7\xfe%\xa9*\x8e6\xf4\xd1/\xc7\xb7\xa9]3\xdc0p\xf8@lK\xb2\xa61a\xd14<=1z\xc7\xaf\xc4\xa7\xa7\x84\xe1\x97\xa4\xe8K\xf6\x17|\xee<\x07\xed\xe2\x8aW\xdc\xb6\xfb\xf8C%P\xea\'\x81\xa8\x86\xbc\x8fRJ\x96:`\x1a\x96\xbb\xfds\xf4\x85\xfd\x83\xfd\x7f\x84m4l\x7fj\xb7K\x01\x03\xbf\xadi\xb7\xd72\xd9\xf5Wj\xe9\x86\x82>\xa5f1\xb3\x16=\xc2\xf3&`2\xd3R\x1e\xb0l\xa47>\xf4\xf5\xaf\xeb\xe1\xdf\x80\x06\xcf*A\xe7f\t\xe1K\x97\xe7w\xbd!m)\xb6g\xc3-~\xed\xd6ye\xd1\xcf:\xb6\xd1\xb1^VaPzZ\xceNP1\x80\x03\x98G\xe7\xe4\x18|DZ\xc6\xa4\xb3;\xc6\xc6\xc3:\xf0l\xc3\x8b\xc8\xa4\x91\x05\xf3\xf5\xd9\xb6\xaa\x06\xa1\xb7\xab\xe4\xb1\xea!\x14\\\x83\xa4\xfc\xff\xb6P\xd3\x8c\x12&\x99vp\xe9\xc0\x0f\xa6t\xfc\xbb\xd0\x1bx\xcer\x92\xe2(\x9c\xbc\xe6\xe9\t\xd8:\xd3\x89\xe6\xbe.w\xdf\x01\no\x96\xf6\xe5\x8dL\"\xbb\xda\x1f*\xddRFd9\xf3B\xce\xd9\x9e\x0c\xb3\xb0w\x97d\x9c\xc0\xf4\xa3.\x1f\x95\x07\xb0\x17\xdf0\xdb\x00\x18\x96L\xa1\x81K\xdd\x04mS\xa3=\xfc\x07\xac\xd4\xc57\x82\xeb\xe4\x95\x08\x19(\x82\xd2B:\xa3\xd8S\xecy\x89`H`\xc8r\x92P\xdc\x03\x8f\x83?\xb2BWZ\xdbj\xe9\x11\x97\xdd\x85(\xbc0L\xab\xe3\xc2\xb1EDG\x1f\xe0\x8a\x16\x07\x96\xd2!\x0fS\xc0\xed\xa9~\xd4N\xec\x9b\t\xec\xafB\xac0\xd6\xbf\xd1\x10E\xe0\xa6\x16\xb2\xa5\xc5\xd3Os\x943q\x02\xa1j\xa3\xd63\x97O!c\x1e[\x8f\xd9\xc1^Eqw\x0f\x81]_!\x9a\xad\x83\xcc\xfa^\xd6\x8d#_\x1b=A\xaf ufZJ\xf6\x9f\xfb\xab\x18\xf7q\xc0\xb6\x1d1\xec; \xeb\xcb\xe2\xb8\xf5\xae\x92\xb2\xf7\xe1\x84K\xf2\xa2\xf2\x93\x9a\"\x9e\xd3\x14o6T\xbd\x1f^Y\x15\xb9s\xa8\xc1|o{b\xe9\x16lGZe\xf3\x0e\x11\x9bF\xd9\xfdm\xdc\xd6\x9c\xc0\xb4}\xa5\xb0\xdd?Vo\xa1\xf9\xf6\xe4\x12H\xfd\x06\x7f\x12W\xb6\xa9#O[\x03\xc3\xe0q*#\xb7\xf7\xb0\xb1;\xbc\x98\xbd\xd6\x98\xa8\x0ck\xf6\x8e\x12g\xa6\xf2\xb2X\xe4\x02\t\x13<\xa9\xbb\x10\xb4\xd20E\xf1\xec\xf7\x00\x11\xdfe\xf8\xdc+CU\xbf\x16\x97\xc4\x0f\xd5,a\x84\xaar\x86\xfe\xe6:~\xc2?}\xee\xfc/\x14>\xe6\x85\xddPo\xb7I\xed\x02\x03\x01\x00\x01", name_constraints: None @@ -5289,7 +5421,7 @@ * 3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02US1 0\x1e\x06\x03U\x04\n\x13\x17SecureTrust Corporation1\x170\x15\x06\x03U\x04\x03\x13\x0eSecureTrust CA", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xab\xa4\x81\xe5\x95\xcd\xf5\xf6\x14\x8e\xc2O\xca\xd4\xe2x\x95X\x9cA\xe1\r\x99@$\x179\x913f\xe9\xbe\xe1\x83\xafb\\\x89\xd1\xfc$[a\xb3\xe0\x11\x11A\x1c\x1dn\xf0\xb8\xbb\xf8\xde\xa7\x81\xba\xa6H\xc6\x9f\x1d\xbd\xbe\x8e\xa9A>\xb8\x94\xed)\x1a\xd4\x8e\xd2\x03\x1d\x03\xefm\rg\x1cW\xd7\x06\xad\xca\xc8\xf5\xfe\x0e\xaff%H\x04\x96\x0b]\xa3\xba\x16\xc3\x08O\xd1F\xf8\x14\\\xf2\xc8^\x01\x99m\xfd\x88\xcc\x86\xa8\xc1o1BlR>h\xcb\xf3\x194\xdf\xbb\x87\x18V\x80&\xc4\xd0\xdc\xc0o\xdf\xde\xa0\xc2\x91\x16\xa0d\x11KD\xbc\x1e\xf6\xe7\xfac\xdef\xacv\xa4q\xa3\xec6\x94hzw\xa4\xb1\xe7\x0e/\x81z\xe2\xb5r\x86\xef\xa2k\x8b\xf0\x0f\xdb\xd3Y?\xbar\xbcD$\x9c\xe3s\xb3\xf7\xafW/B&\x9d\xa9t\xba\x00R\xf2K\xcdS|G\x0b6\x85\x0ef\xa9\x08\x97\x164W\xc1f\xf7\x80\xe3\xedpT\xc7\x93\xe0.(\x15Y\x87\xba\xbb\x02\x03\x01\x00\x01", name_constraints: None @@ -5325,44 +5457,56 @@ * KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x1e0\x1c\x06\x03U\x04\x03\x0c\x15Atos TrustedRoot 20111\r0\x0b\x06\x03U\x04\n\x0c\x04Atos1\x0b0\t\x06\x03U\x04\x06\x13\x02DE", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\x95\x85;\x97o*;.;\xcf\xa6\xf3)5\xbe\xcf\x18\xac>\xaa\xd9\xf8M\xa0>\x1aG\xb9\xbc\x9a\xdf\xf2\xfe\xcc>G\xe8z\x96\xc2$\x8e5\xf4\xa9\x0c\xfc\x82\xfdm\xc1rb\'\xbd\xeak\xeb\xe7\x8a\xccT>\x90P\xcf\x80\xd4\x95\xfb\xe8\xb5\x82\xd4\x14\xc5\xb6\xa9U%W\xdb\xb1P\xf6\xb0`dYzi\xcf\x03\xb7o\r\xbe\xca>otr\xea\xaa0*sb\xbeI\x91a\xc8\x11\xfe\x0e\x03*\xf7j \xdc\x02\x15\r^\x15j\xfc\xe3\x82\xc1\xb5\xc5\x9dd\tl\xa3Y\x98\x07\'\xc7\x1b\x96+atqlC\xf1\xf75\x89\x10\xe0\x9e\xecU\xa17\"\xa2\x87\x04\x05,G}\xb4\x1c\xb9b)f(\xca\xb7\xe1\x93\xf5\xa4\x94\x03\x99\xb9p\x85\xb5\xe6H\xea\x8dP\xfc\xd9\xde\xcco\x07\x0e\xdd\x0br\x9d\x800\x16\x07\x95?(\x0e\xfd\xc5uOS\xd6t\x9a\xb4$.\x8e\x02\x91\xcfv\xc5\x9b\x1eUt\x9cx!\xb1\xf0-\xf1\x0b\x9f\xc2\xd5\x96\x18\x1f\xf0T\"z\x8c\x07\x02\x03\x01\x00\x01", name_constraints: None }, /* - * Issuer: CN=Hongkong Post Root CA 1 O=Hongkong Post - * Subject: CN=Hongkong Post Root CA 1 O=Hongkong Post - * Label: "Hongkong Post Root CA 1" - * Serial: 1000 - * MD5 Fingerprint: a8:0d:6f:39:78:b9:43:6d:77:42:6d:98:5a:cc:23:ca - * SHA1 Fingerprint: d6:da:a8:20:8d:09:d2:15:4d:24:b5:2f:cb:34:6e:b2:58:b2:8a:58 - * SHA256 Fingerprint: f9:e6:7d:33:6c:51:00:2a:c0:54:c6:32:02:2d:66:dd:a2:e7:e3:ff:f1:0a:d0:61:ed:31:d8:bb:b4:10:cf:b2 - * -----BEGIN CERTIFICATE----- - * MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsx - * FjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3Qg - * Um9vdCBDQSAxMB4XDTAzMDUxNTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkG - * A1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdr - * b25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC - * AQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1ApzQ - * jVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEn - * PzlTCeqrauh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjh - * ZY4bXSNmO7ilMlHIhqqhqZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9 - * nnV0ttgCXjqQesBCNnLsak3c78QA3xMYV18meMjWCnl3v/evt3a5pQuEF10Q6m/h - * q5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNVHRMBAf8ECDAGAQH/AgED - * MA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7ih9legYsC - * mEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI3 - * 7piol7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clB - * oiMBdDhViw+5LmeiIAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJs - * EhTkYY2sEJCehFC78JZvRZ+K88psT/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpO - * fMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilTc4afU9hDDl3WY4JxHYB0yvbi - * AmvZWg== - * -----END CERTIFICATE----- - */ - webpki::TrustAnchor { - subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02HK1\x160\x14\x06\x03U\x04\n\x13\rHongkong Post1 0\x1e\x06\x03U\x04\x03\x13\x17Hongkong Post Root CA 1", - spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xac\xff8\xb6\xe9f\x02I\xe3\xa2\xb4\xe1\x90\xf9@\x8fy\xf9\xe2\xbdy\xfe\x02\xbd\xee$\x92\x1d\"\xf6\xda\x85ri\xfe\xd7?\t\xd4\xdd\x91\xb5\x02\x9c\xd0\x8dZ\xe1U\xc3P\x86\xb9)&\xc2\xe3\xd9\xa0\xf1i\x03( \x80E\"-V\xa7;T\x95V\"Y\x1f(\xdf\x1f =m\xa26\xbe#\xa0\xb1n\xb5\xb1\'?9S\t\xea\xabj\xe8t\xb2\xc2e\\\x8e\xbf|\xc3x\x84\xcd\x9e\x16\xfc\xf5.O *\x08\x9fw\xf3\xc5\x1e\xc4\x9aRf\x1eH^\xe3\x10\x06\x8f\"\x98\xe1e\x8e\x1b]#f;\xb8\xa52Q\xc8\x86\xaa\xa1\xa9\x9e\x7fv\x94\xc2\xa6l\xb7A\xf0\xd5\xc8\x068\xe6\xd4\x0c\xe2\xf3;LmP\x8c\xc4\x83\'\xc1\x13\x84Y=\x9eut\xb6\xd8\x02^:\x90z\xc0B6r\xecjM\xdc\xef\xc4\x00\xdf\x13\x18W_&x\xc8\xd6\nyw\xbf\xf7\xaf\xb7v\xb9\xa5\x0b\x84\x17]\x10\xeao\xe1\xab\x95\x11_m<\xa3\\M\x83[\xf2\xb3\x19\x8a\x80\x8b\x0b\x87\x02\x03\x01\x00\x01", + * Issuer: CN=BJCA Global Root CA1 O=BEIJING CERTIFICATE AUTHORITY + * Subject: CN=BJCA Global Root CA1 O=BEIJING CERTIFICATE AUTHORITY + * Label: "BJCA Global Root CA1" + * Serial: 113562791157148395269083148143378328608 + * MD5 Fingerprint: 42:32:99:76:43:33:36:24:35:07:82:9b:28:f9:d0:90 + * SHA1 Fingerprint: d5:ec:8d:7b:4c:ba:79:f4:e7:e8:cb:9d:6b:ae:77:83:10:03:21:6a + * SHA256 Fingerprint: f3:89:6f:88:fe:7c:0a:88:27:66:a7:fa:6a:d2:74:9f:b5:7a:7f:3e:98:fb:76:9c:1f:a7:b0:9c:2c:44:d5:ae + * -----BEGIN CERTIFICATE----- + * MIIFdDCCA1ygAwIBAgIQVW9l47TZkGobCdFsPsBsIDANBgkqhkiG9w0BAQsFADBU + * MQswCQYDVQQGEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRI + * T1JJVFkxHTAbBgNVBAMMFEJKQ0EgR2xvYmFsIFJvb3QgQ0ExMB4XDTE5MTIxOTAz + * MTYxN1oXDTQ0MTIxMjAzMTYxN1owVDELMAkGA1UEBhMCQ04xJjAkBgNVBAoMHUJF + * SUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRCSkNBIEdsb2Jh + * bCBSb290IENBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPFmCL3Z + * xRVhy4QEQaVpN3cdwbB7+sN3SJATcmTRuHyQNZ0YeYjjlwE8R4HyDqKYDZ4/N+AZ + * spDyRhySsTphzvq3Rp4Dhtczbu33RYx2N95ulpH3134rhxfVizXuhJFyV9xgw8O5 + * 58dnJCNPYwpj9mZ9S1WnP3hkSWkSl+BMDdMJoDIwOvqfwPKcxRIqLhy1BDPapDgR + * at7GGPZHOiJBhyL8xIkoVNiMpTAK+BcWyqw3/XmnkRd4OJmtWO2y3syJfQOcs4ll + * 5+M7sSKGjwZteAf9kRJ/sGsciQ35uMt0WwfCyPQ10WRjeulumijWML3mG90Vr4Tq + * nMfK9Q7q8l0ph49pczm+LiRvRSGsxdRpJQaDrXpIhRMsDQa4bHlW/KNnMoH1V6XK + * V0Jp6VwkYe/iMBhORJhVb3rCk9gZtt58R4oRTklH2yiUAguUSiz5EtBP6DF+bHq/ + * pj+bOT0CFqMYs2esWz8sgytnOYFcuX6U1WTdno9uruh8W7TXakdI136z1C2OVnZO + * z2nxbkRs1CTqjSShGL+9V/6pmTW12xB3uD1IutbB5/EjPtffhZ0nPNRAvQoMvfXn + * jSXWgXSHRtQpdaJCbPdzied9v3pKH9MiyRVVz99vfFXQpIsHETdfg6YmV6YBW37+ + * WGgHqel62bno/1Afq8K0wM7o6v0PvY1NuLxxAgMBAAGjQjBAMB0GA1UdDgQWBBTF + * 7+3M2I0hxkjk49cULqcWk+WYATAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE + * AwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAUoKsITQfI/Ki2Pm4rzc2IInRNwPWaZ+4 + * YRC6ojGYWUfo0Q0lHhVBDOAqVdVXUsv45Mdpox1NcQJeXyFFYEhcCY5JEMEE3Kli + * awLwQ8hOnThJdMkycFRtwUf8jrQ2ntScvd0g1lPJGKm1Vrl2i5VnZu69mP6u775u + * +2D2/VnGKhs/I0qUJDAnyIm860Qkmss9vk/Ves6OF8tiwdneHg56/0OGNFK8YT88 + * X7vZdrRTvJez/opMEi4r89fO4aL/3Xtw+zuhTaRjAv04l5U/BXCga99igUOLtFkN + * SoxUnMW7gZ/NfaXvCyUeOiDbHPwfmGcCCtRzRBPbUYQaVQNW4AB+dAb/OMRyHdOo + * P2gxXdMJxy6MW2Pg6Nwe0uxhHvLe5e/2mXZgLR6UcnHGCyoyx5JO1UbXHfmpGQrI + * +pXObSOYqgs4rZpWDW+N8TEAiMEXnM0ZNjX+VVOg4DwzX5Ze4jLp3zO7Bkqp2IRz + * znfSxqxx4VyjHQy7Ct9f4qNx2No3WqB4K/TUfet27fJhcKVlmtOJNBir+3I+17Q9 + * eVzYH6Eze9mCUAyTF6ps3MKCuwJXNq+YJyo5UOGwifUll35HaBC07HPKs5fRJNz2 + * YqAo07WjuGS3iGJCz51TzZm+ZGiPTx4SSPfSKcOYKMryMguTjClPPGAyzQWWYezy + * r/6zcCwupvI= + * -----END CERTIFICATE----- + */ + TrustAnchor { + subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02CN1&0$\x06\x03U\x04\n\x0c\x1dBEIJING CERTIFICATE AUTHORITY1\x1d0\x1b\x06\x03U\x04\x03\x0c\x14BJCA Global Root CA1", + spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xf1f\x08\xbd\xd9\xc5\x15a\xcb\x84\x04A\xa5i7w\x1d\xc1\xb0{\xfa\xc3wH\x90\x13rd\xd1\xb8|\x905\x9d\x18y\x88\xe3\x97\x01\xd7\xdf\x85\x9d\'<\xd4@\xbd\n\x0c\xbd\xf5\xe7\x8d%\xd6\x81t\x87F\xd4)u\xa2Bl\xf7s\x89\xe7}\xbfzJ\x1f\xd3\"\xc9\x15U\xcf\xdfo|U\xd0\xa4\x8b\x07\x117_\x83\xa6&W\xa6\x01[~\xfeXh\x07\xa9\xe9z\xd9\xb9\xe8\xffP\x1f\xab\xc2\xb4\xc0\xce\xe8\xea\xfd\x0f\xbd\x8dM\xb8\xbcq\x02\x03\x01\x00\x01", name_constraints: None }, @@ -5409,7 +5553,7 @@ * tt7VMVgWglvquxl1AnMaykgaIZOQCo6ThKd9OyMYkomgjaw= * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x120\x10\x06\x03U\x04\x05\x13\tG632875101\x0b0\t\x06\x03U\x04\x06\x13\x02ES1\'0%\x06\x03U\x04\n\x13\x1eANF Autoridad de Certificacion1\x140\x12\x06\x03U\x04\x0b\x13\x0bANF CA Raiz1\"0 \x06\x03U\x04\x03\x13\x19ANF Secure Server Root CA", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x02\x0f\x000\x82\x02\n\x02\x82\x02\x01\x00\xdb\xebk+\xe6dT\x95\x82\x90\xa3r\xa4\x19\x01\x9d\x9c\x0b\x81_sI\xba\xa7\xac\xf3\x04N{\x96\x0b\xec\x11\xe0[\xa6\x1c\xce\x1b\xd2\r\x83\x1c+\xb8\x9e\x1d~E2`\x0f\x07\xe9wX~\x9fj\xc8aN\xb6&\xc1L\x8d\xffL\xef4\xb2\x1fe\xd8\xb9x\xf5\xad\xa9q\xb9\xefOX\x1d\xa5\xdet \x97\xa1\xedhL\xde\x92\x17K\xbc\xab\xffe\x9a\x9e\xfbG\xd9Wr\xf3\t\xa1\xaevD\x13n\x9c-D9\xbc\xf9\xc7;\xa4X=A\xbd\xb4\xc2I\xa3\xc8\r\xd2\x97/\x07eR\x00\xa7n\xc8\xafh\xec\xf4\x14\x96\xb6W\x1fV\xc39\x9f+m\xe4\xf3>\xf65d\xda\x0c\x1c\xa1\x84K/KK\xe2,$\x9dm\x93@\xeb\xb5#\x8e2\xcaoE\xd3\xa8\x89{\x1e\xcf\x1e\xfa[C\x8b\xcd\xcd\xa8\x0fj\xca\x0c^\xb9\x9eG\x8f\xf0\xd9\xb6\n\x0bXe\x173\xb9#\xe4w\x19}\xcbJ.\x92{O/\x10w\xb1\x8d/h\x9cb\xcc\xe0P\xf8\xec\x91\xa7TLW\t\xd5vc\xc5\xe8e\x1e\xeemj\xcf\t\x9d\xfa|O\xad`\x08\xfdV\x99\x0f\x15,{\xa9\x80\xab\x8ca\x8fJ\x07vB\xde=\xf4\xdd\xb2$3[\xb8\xb5\xa3D\xc9\xac\x7fw<\x1d#\xec\x82\xa9\xa6\xe2\xc8\x06L\x02\xfe\xac\\\x99\x99\x0b/\x10\x8a\xa6\xf4\x7f\xd5\x87t\rYIE\xf6\xf0q\\9)\xd6\xbfJ#\x8b\xf5_\x01c\xd2\x87s(\xb5K\n\xf5\xf8\xab\x82,~s%2\x1d\x0bc\n\x17\x81\x00\xff\xb6v^\xe7\xb4\xb1@\xca!\xbb\xd5\x80Q\xe5HRg,\xd2a\x89\x07\r\x0f\xceBw\xc0Ds\x9cDP\xa0\xdb\x10\n-\x95\x1c\x81\xaf\xe4\x1c\xe5\x14\x1e\xf16A\x01\x02/}s\xa7\xdeB\xccL\xe9\x89\rV\xf7\x9f\x91\xd4\x03\xc6l\xc9\x8f\xdb\xd8\x1c\xe0@\x98]f\x99\x98\x80n-\xff\x01\xc5\xce\xcbF\x1f\xac\x02\xc6C\xe6\xae\xa2\x84<\xc5N\x1e=m\xc9\x14L\xe3.A\xbb\xca9\xbf6<*\x19\xaaA\x87N\xa5\xceK2y\xdd\x90I\x7f\x02\x03\x01\x00\x01", name_constraints: None @@ -5447,7 +5591,7 @@ * TpPDpFQUWw== * -----END CERTIFICATE----- */ - webpki::TrustAnchor { + TrustAnchor { subject: b"1\x0b0\t\x06\x03U\x04\x06\x13\x02DE1+0)\x06\x03U\x04\n\x0c\"T-Systems Enterprise Services GmbH1\x1f0\x1d\x06\x03U\x04\x0b\x0c\x16T-Systems Trust Center1%0#\x06\x03U\x04\x03\x0c\x1cT-TeleSec GlobalRoot Class 3", spki: b"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xbdu\x93\xf0b\"o$\xae\xe0zv\xac}\xbd\xd9$\xd5\xb8\xb7\xfc\xcd\xf0B\xe0\xebx\x88V^\x9b\x9aT\x1dM\x0c\x8a\xf6\xd3\xcfp\xf4R\xb5\xd8\x93\x04\xe3F\x86qAJ+\xf0*,U\x03\xd6H\xc3\xe098\xed\xf2\\\x08\x1e\x14*7\x0b\x88<\xca\xb0\xf4\xc8\xc2\xa1\xae\xbc\xc1\xbe)gU\xe2\xfc\xadY\\\xfe\xbdW,\xb0\x90\x8d\xc2\xed7\xb6|\x99\x88\xb5\xd5\x03\x9a=\x15\r=:\xa8\xa8E\xf0\x95N%Y\x1d\xcd\x98i\xbb\xd3\xcc2\xc9\x8d\xef\x81\xfe\xad}\x89\xbb\xba`\x13\xcae\x95g\xa0\xf3\x19\xf6\x03V\xd4j\xd3\'\xe2\xa1\xad\x83\xf0J\x12\"w\x1c\x05s\xe2\x19qB\xc0\xecuF\x9a\x90X\xe0j\x8e+\xa5F0\x04\x8e\x19\xb2\x17\xe3\xbe\xa9\xba\x7fV\xf1$\x03\xd7\xb2!(v\x0e60Ly\xd5A\x9a\x9a\xa8\xb85\xba\x0c:\xf2D\x1b \x88\xf7\xc5%\xd7=\xc6\xe3>C\xdd\x87\xfe\xc4\xea\xf5S>Le\xff;J\xcbxZk\x17_\r\xc7\xc3ON\x9a*\xa2\xedWM\"\xe2F\x9a?\x0f\x914$}U\xe3\x8c\x957\xd3\x1a\xf0\t+,\xd2\xc9\x8d\xb4\r\x00\xabg)(\xd8\x01\xf5\x19\x04\xb6\x1d\xbev\xfer\\\xc4\x85\xca\xd2\x80A\xdf\x05\xa8\xa3\xd5\x84\x90O\x0b\xf3\xe0?\x9b\x19\xd27\x89?\xf2{R\x1c\x8c\xf6\xe1\xf7<\x07\x97\x8c\x0e\xa2Y\x81\x0c\xb2\x90=\xd3\xe3YF\xed\x0f\xa9\xa7\xde\x80kZ\xaa\x07\xb6\x19\xcb\xbcW\xf3\x97!z\x0c\xb1+t>\xeb\xda\xa7g-L\xc4\x98\x9e6\tvff\xfc\x1a?\xeaHT\x1c\xbe0\xbd\x80P\xbf|\xb5\xce\x00\xf6\x0ca\xd9\xe7$\x03\xe0\xe3\x01\x81\x0e\xbd\xd8\x854\x88\xbd\xb26\xa8{\\\x08\xe5D\x80\x8co\xf8/\xd5!\xca\x1d\x1c\xd0\xfb\xc4\xb5\x87\xd1:N\xc7v\xb55H\xb5\x02\x03\x01\x00\x01", name_constraints: None }, -]); +]; diff -Nru temporalio-1.3.0/vendor/webpki-roots/tests/codegen.rs temporalio-1.3.0/vendor/webpki-roots/tests/codegen.rs --- temporalio-1.3.0/vendor/webpki-roots/tests/codegen.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki-roots/tests/codegen.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,248 @@ +use std::ascii::escape_default; +use std::collections::HashMap; +use std::fmt::Write; +use std::fs; +use std::io::Cursor; + +use ring::digest; + +#[tokio::test] +async fn generated_code_is_fresh() { + // Fetch the list of certificates as a PEM file from mkcert.org + + let mut except = String::with_capacity(128); + for (i, ca) in EXCLUDED_CAS.iter().enumerate() { + if i > 0 { + except.push('+'); + } + + except + .write_fmt(format_args!( + "{}", + percent_encoding::percent_encode(ca.as_bytes(), percent_encoding::NON_ALPHANUMERIC,) + )) + .unwrap(); + } + + let url = format!("https://mkcert.org/generate/all/except/{except}"); + eprintln!("fetching {url}..."); + let body = reqwest::get(&url).await.unwrap().text().await.unwrap(); + fs::write("fetched.pem", &body).unwrap(); + + // Split file contents into a Vec> where each inner Vec represents one certificate + + let mut certs = Vec::with_capacity(64); + let mut current = Vec::with_capacity(16); + for ln in body.lines() { + if !ln.is_empty() { + current.push(ln); + continue; + } else if current.is_empty() { + continue; + } + + certs.push(current); + current = Vec::with_capacity(16); + } + + certs.push(current); + + // Parse each certificate and check fingerprints + + let mut hashed = HashMap::, (Vec<&str>, Vec)>::default(); + for cert in certs { + let start = cert + .iter() + .position(|&ln| ln == "-----BEGIN CERTIFICATE-----") + .unwrap(); + + // Parse PEM to get the DER. + let pem = cert[start..].join("\n"); + let mut reader = Cursor::new(pem.as_bytes()); + let der = match rustls_pemfile::read_one(&mut reader).unwrap().unwrap() { + rustls_pemfile::Item::X509Certificate(der) => der, + _ => unreachable!(), + }; + + // Check if our hash matches the one in the file. + let their_fingerprint = cert + .iter() + .find_map(|&ln| ln.strip_prefix("# SHA256 Fingerprint: ")) + .unwrap(); + let hash = digest::digest(&digest::SHA256, &der); + assert!( + !hashed.contains_key(hash.as_ref()), + "duplicate hash: {:#?}", + &cert + ); + + let our_fingerprint = hash + .as_ref() + .iter() + .map(|b| format!("{:02x}", b)) + .collect::(); + assert_eq!( + their_fingerprint.replace(':', ""), + our_fingerprint, + "{:#?}", + &cert + ); + + hashed.insert(hash.as_ref().to_vec(), (cert, der)); + } + + // For the given certificate subject name, store a name constraints encoding + // which will be applied to that certificate. This data is sourced from + // https://hg.mozilla.org/projects/nss/file/tip/lib/certdb/genname.c such that + // webpki-roots implements the same policy in this respect as the Mozilla root program. + let mut imposed_constraints = HashMap::, Vec>::default(); + imposed_constraints.insert( + concat(TUBITAK1_SUBJECT_DN), + TUBITAK1_NAME_CONSTRAINTS.to_vec(), + ); + + // Generate the trust anchors, sorted by fingerprint + + let mut hashes = hashed.into_iter().collect::>(); + hashes.sort_by(|a, b| a.0.cmp(&b.0)); + + let (mut subject, mut spki, mut name_constraints) = + (String::new(), String::new(), String::new()); + let mut code = String::with_capacity(256 * 1_024); + code.push_str(HEADER); + code.push_str("pub const TLS_SERVER_ROOTS: &[TrustAnchor] = &[\n"); + for (_, (lines, der)) in hashes { + let ta = webpki::TrustAnchor::try_from_cert_der(&der).unwrap(); + subject.clear(); + for &b in ta.subject { + write!(&mut subject, "{}", escape_default(b)).unwrap(); + } + + spki.clear(); + for &b in ta.spki { + write!(&mut spki, "{}", escape_default(b)).unwrap(); + } + + name_constraints.clear(); + let nc = imposed_constraints + .get(ta.subject) + .map(|nc| nc.as_slice()) + .or(ta.name_constraints); + if let Some(nc) = nc { + for &b in nc { + write!(&mut name_constraints, "{}", escape_default(b)).unwrap(); + } + } + + // Write comment with source + + code.push_str(" /*\n"); + for &ln in lines.iter() { + code.push_str(" * "); + match ln.strip_prefix("# ") { + Some(ln) => code.push_str(ln), + None => code.push_str(ln), + } + code.push('\n'); + } + code.push_str(" */\n"); + + // Write the code + + code.push_str(" TrustAnchor {\n"); + code.write_fmt(format_args!(" subject: b\"{subject}\",\n")) + .unwrap(); + code.write_fmt(format_args!(" spki: b\"{spki}\",\n")) + .unwrap(); + match name_constraints.is_empty() { + false => code + .write_fmt(format_args!( + " name_constraints: Some(b\"{name_constraints}\")\n" + )) + .unwrap(), + true => code.push_str(" name_constraints: None\n"), + } + code.push_str(" },\n\n"); + } + + code.push_str("];\n"); + + // Check that the generated code matches the checked-in code + + let old = fs::read_to_string("src/lib.rs").unwrap(); + if old != code { + fs::write("src/lib.rs", code).unwrap(); + panic!("generated code changed"); + } +} + +fn concat(parts: &[&[u8]]) -> Vec { + let mut v = Vec::with_capacity(128); + for &b in parts { + v.extend(b); + } + v +} + +// TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 +const TUBITAK1_SUBJECT_DN: &[&[u8]] = &[ + b"\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02", + b"TR", + b"\x31\x18\x30\x16\x06\x03\x55\x04\x07\x13\x0f", + b"Gebze - Kocaeli", + b"\x31\x42\x30\x40\x06\x03\x55\x04\x0a\x13\x39", + b"Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK", + b"\x31\x2d\x30\x2b\x06\x03\x55\x04\x0b\x13\x24", + b"Kamu Sertifikasyon Merkezi - Kamu SM", + b"\x31\x36\x30\x34\x06\x03\x55\x04\x03\x13\x2d", + b"TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1", +]; + +const TUBITAK1_NAME_CONSTRAINTS: &[u8] = + &[0xA0, 0x07, 0x30, 0x05, 0x82, 0x03, 0x2E, 0x74, 0x72]; + +const EXCLUDED_CAS: &[&str] = &[ + // See https://bugzilla.mozilla.org/show_bug.cgi?id=1266574. + "Buypass Class 2 CA 1", + // https://blog.mozilla.org/security/2015/04/02/distrusting-new-cnnic-certificates/ + // https://security.googleblog.com/2015/03/maintaining-digital-certificate-security.html + "China Internet Network Information Center", + "CNNIC", + // See https://bugzilla.mozilla.org/show_bug.cgi?id=1283326. + "RSA Security 2048 v3", + // https://bugzilla.mozilla.org/show_bug.cgi?id=1272158 + "Root CA Generalitat Valenciana", + // See https://wiki.mozilla.org/CA:WoSign_Issues. + "StartCom", + "WoSign", + // See https://cabforum.org/pipermail/public/2016-September/008475.html. + // Both the ASCII and non-ASCII names are required. + "TÃœRKTRUST", + "TURKTRUST", +]; + +const HEADER: &str = r#"//! +//! This library is automatically generated from the Mozilla certificate +//! store via mkcert.org. Don't edit it. +//! +//! The generation is done deterministically so you can verify it +//! yourself by inspecting and re-running the generation process. +//! + +#![forbid(unsafe_code, unstable_features)] +#![deny( + trivial_casts, + trivial_numeric_casts, + unused_import_braces, + unused_extern_crates, + unused_qualifications +)] + +/// A trust anchor (sometimes called a root) for validating X.509 certificates +pub struct TrustAnchor<'a> { + pub subject: &'a [u8], + pub spki: &'a [u8], + pub name_constraints: Option<&'a [u8]>, +} + +"#; Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/webpki-roots/tests/data/tubitak/inter.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/webpki-roots/tests/data/tubitak/inter.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/webpki-roots/tests/data/tubitak/root.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/webpki-roots/tests/data/tubitak/root.der differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/webpki-roots/tests/data/tubitak/subj.der and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/webpki-roots/tests/data/tubitak/subj.der differ diff -Nru temporalio-1.3.0/vendor/webpki-roots/tests/verify.rs temporalio-1.3.0/vendor/webpki-roots/tests/verify.rs --- temporalio-1.3.0/vendor/webpki-roots/tests/verify.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/webpki-roots/tests/verify.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,49 @@ +use std::convert::TryFrom; + +use webpki::{EndEntityCert, KeyUsage, SubjectNameRef, Time}; +use webpki_roots::TLS_SERVER_ROOTS; + +#[test] +fn tubitak_name_constraint_works() { + let root = include_bytes!("data/tubitak/root.der"); + let inter = include_bytes!("data/tubitak/inter.der"); + let subj = include_bytes!("data/tubitak/subj.der"); + + let roots = TLS_SERVER_ROOTS + .iter() + .map(|ta| webpki::TrustAnchor { + subject: ta.subject, + spki: ta.spki, + name_constraints: ta.name_constraints, + }) + .collect::>(); + + let now = Time::from_seconds_since_unix_epoch(1493668479); + let cert = EndEntityCert::try_from(&subj[..]).unwrap(); + cert.verify_for_usage( + ALL_ALGORITHMS, + &roots, + &[&inter[..], &root[..]], + now, + KeyUsage::server_auth(), + &[], + ) + .unwrap(); + + let subject = SubjectNameRef::try_from_ascii_str("testssl.kamusm.gov.tr").unwrap(); + cert.verify_is_valid_for_subject_name(subject).unwrap(); +} + +static ALL_ALGORITHMS: &[&webpki::SignatureAlgorithm] = &[ + &webpki::ECDSA_P256_SHA256, + &webpki::ECDSA_P256_SHA384, + &webpki::ECDSA_P384_SHA256, + &webpki::ECDSA_P384_SHA384, + &webpki::RSA_PKCS1_2048_8192_SHA256, + &webpki::RSA_PKCS1_2048_8192_SHA384, + &webpki::RSA_PKCS1_2048_8192_SHA512, + &webpki::RSA_PKCS1_3072_8192_SHA384, + &webpki::RSA_PSS_2048_8192_SHA256_LEGACY_KEY, + &webpki::RSA_PSS_2048_8192_SHA384_LEGACY_KEY, + &webpki::RSA_PSS_2048_8192_SHA512_LEGACY_KEY, +]; diff -Nru temporalio-1.3.0/vendor/windows_aarch64_gnullvm/.cargo-checksum.json temporalio-1.3.0/vendor/windows_aarch64_gnullvm/.cargo-checksum.json --- temporalio-1.3.0/vendor/windows_aarch64_gnullvm/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/windows_aarch64_gnullvm/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"0f4554c989829db601f9fe5007fabd8d70c92aa8960fc14eb22b305bf0dd5ece","build.rs":"63fb190082cf5ca1a64158013408353c9a4b9b88ac4a0181f8ffc7d81a846202","lib/libwindows.0.48.0.a":"797027299602cf3464e41165c512d49a81d4d716787dc17b2b3aefbbb4b4b1d5","license-apache-2.0":"c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b","license-mit":"c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383","src/lib.rs":"bdf6c7cf1fc01f69cc1d4e52948d1f246fdd310e6323d5dd1efd23f1daf382ef"},"package":"91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"} \ No newline at end of file +{"files":{"Cargo.toml":"00179999ef14d8b04c6e0f7e73f73bf7f2399c506131aa949bbb0bb94827b7d2","build.rs":"63fb190082cf5ca1a64158013408353c9a4b9b88ac4a0181f8ffc7d81a846202","lib/libwindows.0.48.5.a":"fdc7fa0ef085541b215d2507976a897b43b47c2c696f12110fe6d3d5900fae3d","license-apache-2.0":"c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b","license-mit":"c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383","src/lib.rs":"bdf6c7cf1fc01f69cc1d4e52948d1f246fdd310e6323d5dd1efd23f1daf382ef"},"package":"2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/windows_aarch64_gnullvm/Cargo.toml temporalio-1.3.0/vendor/windows_aarch64_gnullvm/Cargo.toml --- temporalio-1.3.0/vendor/windows_aarch64_gnullvm/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/windows_aarch64_gnullvm/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2018" name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" authors = ["Microsoft"] description = "Import lib for Windows" license = "MIT OR Apache-2.0" diff -Nru temporalio-1.3.0/vendor/windows_aarch64_msvc/.cargo-checksum.json temporalio-1.3.0/vendor/windows_aarch64_msvc/.cargo-checksum.json --- temporalio-1.3.0/vendor/windows_aarch64_msvc/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/windows_aarch64_msvc/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"42357abfcda52fbbf803244245e487aca4afa82097f0674ae0084869f36726d7","build.rs":"cb87ced2a369513d4593ceec97e176dd38335501ada9f960cb72c454979335a2","lib/windows.0.48.0.lib":"87ad4ac428540cf012a164a2c7e369591bb3fd57439f88d94dadcff86318da07","license-apache-2.0":"c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b","license-mit":"c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383","src/lib.rs":"bdf6c7cf1fc01f69cc1d4e52948d1f246fdd310e6323d5dd1efd23f1daf382ef"},"package":"b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"} \ No newline at end of file +{"files":{"Cargo.toml":"8b36b4927aaaf3cbec161986a224296a51294bb955534fe57e27009c4687dee8","build.rs":"cb87ced2a369513d4593ceec97e176dd38335501ada9f960cb72c454979335a2","lib/windows.0.48.5.lib":"1ffc48ce9284b9b7f44ded02a9b1946b0d1ebc60b0955fdcf9a241acd3280dbc","license-apache-2.0":"c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b","license-mit":"c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383","src/lib.rs":"bdf6c7cf1fc01f69cc1d4e52948d1f246fdd310e6323d5dd1efd23f1daf382ef"},"package":"dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/windows_aarch64_msvc/Cargo.toml temporalio-1.3.0/vendor/windows_aarch64_msvc/Cargo.toml --- temporalio-1.3.0/vendor/windows_aarch64_msvc/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/windows_aarch64_msvc/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2018" name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" authors = ["Microsoft"] description = "Import lib for Windows" license = "MIT OR Apache-2.0" Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/windows_aarch64_msvc/lib/windows.0.48.0.lib and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/windows_aarch64_msvc/lib/windows.0.48.0.lib differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/windows_aarch64_msvc/lib/windows.0.48.5.lib and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/windows_aarch64_msvc/lib/windows.0.48.5.lib differ diff -Nru temporalio-1.3.0/vendor/windows_i686_gnu/.cargo-checksum.json temporalio-1.3.0/vendor/windows_i686_gnu/.cargo-checksum.json --- temporalio-1.3.0/vendor/windows_i686_gnu/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/windows_i686_gnu/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"d0cc4c717e32611dddbe0373338aaa9ad12e24ea08900a39a56ae7e9f62695d0","build.rs":"000703af30e0803750ab7d9a087728f109f058144368e8f53532ddcae317ab73","lib/libwindows.0.48.0.a":"8f99f13fbd31ff4515215029eebff61a5586ee635c8813831acc6fd8da04739c","license-apache-2.0":"c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b","license-mit":"c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383","src/lib.rs":"bdf6c7cf1fc01f69cc1d4e52948d1f246fdd310e6323d5dd1efd23f1daf382ef"},"package":"622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"} \ No newline at end of file +{"files":{"Cargo.toml":"1c0389f891c27af0e3cb34c38e4308b0177012ae188c99729dcff69116e6f6a6","build.rs":"000703af30e0803750ab7d9a087728f109f058144368e8f53532ddcae317ab73","lib/libwindows.0.48.5.a":"e99309212458a472fb569b8ab1b9f928f7d38581679b7b9b5ce711570a98569c","license-apache-2.0":"c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b","license-mit":"c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383","src/lib.rs":"bdf6c7cf1fc01f69cc1d4e52948d1f246fdd310e6323d5dd1efd23f1daf382ef"},"package":"a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/windows_i686_gnu/Cargo.toml temporalio-1.3.0/vendor/windows_i686_gnu/Cargo.toml --- temporalio-1.3.0/vendor/windows_i686_gnu/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/windows_i686_gnu/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2018" name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" authors = ["Microsoft"] description = "Import lib for Windows" license = "MIT OR Apache-2.0" diff -Nru temporalio-1.3.0/vendor/windows_i686_msvc/.cargo-checksum.json temporalio-1.3.0/vendor/windows_i686_msvc/.cargo-checksum.json --- temporalio-1.3.0/vendor/windows_i686_msvc/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/windows_i686_msvc/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"46b1f5fcd7fa89ad84e7d92be9a950a7a3aca469a72abcd5d9c7031a227ce857","build.rs":"d5df812ba7add22771644473db37d7de40c1e7479a30f81ae3ccb0d7be3fabe4","lib/windows.0.48.0.lib":"e25d9555e58a3c1ff175fc52dddfce660fede9690549d035ad2508f631dd902d","license-apache-2.0":"c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b","license-mit":"c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383","src/lib.rs":"bdf6c7cf1fc01f69cc1d4e52948d1f246fdd310e6323d5dd1efd23f1daf382ef"},"package":"4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"} \ No newline at end of file +{"files":{"Cargo.toml":"a35fd9001d4be05bb3b661df76986deb4e7f81a41bda59d81b415ddfd4f795a2","build.rs":"d5df812ba7add22771644473db37d7de40c1e7479a30f81ae3ccb0d7be3fabe4","lib/windows.0.48.5.lib":"9658e397a48978851c853361112c43f5f806901b0f35e1d102f5db3a5f2de6ac","license-apache-2.0":"c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b","license-mit":"c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383","src/lib.rs":"bdf6c7cf1fc01f69cc1d4e52948d1f246fdd310e6323d5dd1efd23f1daf382ef"},"package":"8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/windows_i686_msvc/Cargo.toml temporalio-1.3.0/vendor/windows_i686_msvc/Cargo.toml --- temporalio-1.3.0/vendor/windows_i686_msvc/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/windows_i686_msvc/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2018" name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" authors = ["Microsoft"] description = "Import lib for Windows" license = "MIT OR Apache-2.0" Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/windows_i686_msvc/lib/windows.0.48.0.lib and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/windows_i686_msvc/lib/windows.0.48.0.lib differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/windows_i686_msvc/lib/windows.0.48.5.lib and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/windows_i686_msvc/lib/windows.0.48.5.lib differ diff -Nru temporalio-1.3.0/vendor/windows-targets/.cargo-checksum.json temporalio-1.3.0/vendor/windows-targets/.cargo-checksum.json --- temporalio-1.3.0/vendor/windows-targets/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/windows-targets/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"ae6b25ddc76294176f40250dc7898eead97109cccb6148ef45db241b8a228d93","license-apache-2.0":"c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b","license-mit":"c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383","readme.md":"d7f63008ad2da1394fe98d19abf19796af3c55ab05ac6db15a6979eea7eef53a","src/lib.rs":"707460ba7de1eca46fe199ba8d1bb535061b3b54a2b3a987a7dac42dcc0bb06a"},"package":"05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"} \ No newline at end of file +{"files":{"Cargo.toml":"93ac4dab0542eb56e36fd608b4b53bf6424aa1301aa2ba4b4619f038bb65f839","license-apache-2.0":"c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b","license-mit":"c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383","readme.md":"5f91803108fe0a6bfe9471d9905d73cfd0e7f37434c1cc32b1e25eaf74732920","src/lib.rs":"65a8e0da62f25129b8d142c8275f89398a1aa9b7590626886ec85015464e05c3"},"package":"9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/windows-targets/Cargo.toml temporalio-1.3.0/vendor/windows-targets/Cargo.toml --- temporalio-1.3.0/vendor/windows-targets/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/windows-targets/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2018" name = "windows-targets" -version = "0.48.1" +version = "0.48.5" authors = ["Microsoft"] description = "Import libs for Windows" readme = "readme.md" @@ -20,22 +20,22 @@ repository = "https://github.com/microsoft/windows-rs" [target.aarch64-pc-windows-gnullvm.dependencies.windows_aarch64_gnullvm] -version = "0.48.0" +version = "0.48.5" [target."cfg(all(target_arch = \"aarch64\", target_env = \"msvc\", not(windows_raw_dylib)))".dependencies.windows_aarch64_msvc] -version = "0.48.0" +version = "0.48.5" [target."cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(windows_raw_dylib)))".dependencies.windows_i686_gnu] -version = "0.48.0" +version = "0.48.5" [target."cfg(all(target_arch = \"x86\", target_env = \"msvc\", not(windows_raw_dylib)))".dependencies.windows_i686_msvc] -version = "0.48.0" +version = "0.48.5" [target."cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))".dependencies.windows_x86_64_gnu] -version = "0.48.0" +version = "0.48.5" [target."cfg(all(target_arch = \"x86_64\", target_env = \"msvc\", not(windows_raw_dylib)))".dependencies.windows_x86_64_msvc] -version = "0.48.0" +version = "0.48.5" [target.x86_64-pc-windows-gnullvm.dependencies.windows_x86_64_gnullvm] -version = "0.48.0" +version = "0.48.5" diff -Nru temporalio-1.3.0/vendor/windows-targets/readme.md temporalio-1.3.0/vendor/windows-targets/readme.md --- temporalio-1.3.0/vendor/windows-targets/readme.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/windows-targets/readme.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,16 +1,16 @@ ## Rust for Windows -The [windows](https://crates.io/crates/windows) and [windows-sys](https://crates.io/crates/windows-sys) crates let you call any Windows API past, present, and future using code generated on the fly directly from the [metadata describing the API](https://github.com/microsoft/windows-rs/tree/master/crates/libs/metadata/default) and right into your Rust package where you can call them as if they were just another Rust module. The Rust language projection follows in the tradition established by [C++/WinRT](https://github.com/microsoft/cppwinrt) of building language projections for Windows using standard languages and compilers, providing a natural and idiomatic way for Rust developers to call Windows APIs. +The [windows](https://crates.io/crates/windows) and [windows-sys](https://crates.io/crates/windows-sys) crates let you call any Windows API past, present, and future using code generated on the fly directly from the [metadata describing the API](https://github.com/microsoft/windows-rs/tree/master/crates/libs/bindgen/default) and right into your Rust package where you can call them as if they were just another Rust module. The Rust language projection follows in the tradition established by [C++/WinRT](https://github.com/microsoft/cppwinrt) of building language projections for Windows using standard languages and compilers, providing a natural and idiomatic way for Rust developers to call Windows APIs. * [Getting started](https://kennykerr.ca/rust-getting-started/) -* [Samples](https://github.com/microsoft/windows-rs/tree/0.48.0/crates/samples) +* [Samples](https://github.com/microsoft/windows-rs/tree/0.51.1/crates/samples) * [Releases](https://github.com/microsoft/windows-rs/releases) Start by adding the following to your Cargo.toml file: ```toml [dependencies.windows] -version = "0.48" +version = "0.51" features = [ "Data_Xml_Dom", "Win32_Foundation", @@ -38,9 +38,9 @@ unsafe { let event = CreateEventW(None, true, false, None)?; - SetEvent(event).ok()?; - WaitForSingleObject(event, 0).ok()?; - CloseHandle(event).ok()?; + SetEvent(event)?; + WaitForSingleObject(event, 0); + CloseHandle(event)?; MessageBoxA(None, s!("Ansi"), s!("Caption"), MB_OK); MessageBoxW(None, w!("Wide"), w!("Caption"), MB_OK); diff -Nru temporalio-1.3.0/vendor/windows-targets/src/lib.rs temporalio-1.3.0/vendor/windows-targets/src/lib.rs --- temporalio-1.3.0/vendor/windows-targets/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/windows-targets/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -34,7 +34,7 @@ #[macro_export] macro_rules! link { ($library:literal $abi:literal $($link_name:literal)? $(#[$doc:meta])? fn $($function:tt)*) => ( - #[link(name = "windows.0.48.0")] + #[link(name = "windows.0.48.5")] extern $abi { $(#[$doc])? $(#[link_name=$link_name])? diff -Nru temporalio-1.3.0/vendor/windows_x86_64_gnu/.cargo-checksum.json temporalio-1.3.0/vendor/windows_x86_64_gnu/.cargo-checksum.json --- temporalio-1.3.0/vendor/windows_x86_64_gnu/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/windows_x86_64_gnu/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"e48d0a7df997c52563fd852aa31c24a46094b1b1a631a034f3f0b685917e8af5","build.rs":"d1d816121af1bba70471e982bf98fa9cd2d8cf695d15d2837f592458410ff597","lib/libwindows.0.48.0.a":"0865df8dbc2e2b3ba0f8e6989f80841aa38cae17daba7edce853f86811fb6ba0","license-apache-2.0":"c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b","license-mit":"c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383","src/lib.rs":"bdf6c7cf1fc01f69cc1d4e52948d1f246fdd310e6323d5dd1efd23f1daf382ef"},"package":"ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"} \ No newline at end of file +{"files":{"Cargo.toml":"07d82446d9957667a6a137de519e94544a19302391b4e33de6e6d26cab981d77","build.rs":"d1d816121af1bba70471e982bf98fa9cd2d8cf695d15d2837f592458410ff597","lib/libwindows.0.48.5.a":"7fd6c3f76f684bd6fda675b9fe190e0719e99d757c45fdf4a36c11105cd9c9b3","license-apache-2.0":"c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b","license-mit":"c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383","src/lib.rs":"bdf6c7cf1fc01f69cc1d4e52948d1f246fdd310e6323d5dd1efd23f1daf382ef"},"package":"53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/windows_x86_64_gnu/Cargo.toml temporalio-1.3.0/vendor/windows_x86_64_gnu/Cargo.toml --- temporalio-1.3.0/vendor/windows_x86_64_gnu/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/windows_x86_64_gnu/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2018" name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" authors = ["Microsoft"] description = "Import lib for Windows" license = "MIT OR Apache-2.0" diff -Nru temporalio-1.3.0/vendor/windows_x86_64_gnullvm/.cargo-checksum.json temporalio-1.3.0/vendor/windows_x86_64_gnullvm/.cargo-checksum.json --- temporalio-1.3.0/vendor/windows_x86_64_gnullvm/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/windows_x86_64_gnullvm/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"653b87f3d4d347e60a887abb8db880e636ce7f5f5ef354ad53f7d3157013f15a","build.rs":"f909646de7a03d6998bf644e9aea2b732c3f0705e24b296f78ff323d4bf74137","lib/libwindows.0.48.0.a":"68027e5e298147bd4219a49bdf6b37c0ad242612e16ed4f19542fa4a29bafcba","license-apache-2.0":"c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b","license-mit":"c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383","src/lib.rs":"bdf6c7cf1fc01f69cc1d4e52948d1f246fdd310e6323d5dd1efd23f1daf382ef"},"package":"7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"} \ No newline at end of file +{"files":{"Cargo.toml":"9197179a8767a782571f4764ab4413940020a4a155de0c4378c9681dc0891333","build.rs":"f909646de7a03d6998bf644e9aea2b732c3f0705e24b296f78ff323d4bf74137","lib/libwindows.0.48.5.a":"13d4ca44fe2ed53a42d3b697818344ba631daeea9c59b834d1495c72f5fee741","license-apache-2.0":"c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b","license-mit":"c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383","src/lib.rs":"bdf6c7cf1fc01f69cc1d4e52948d1f246fdd310e6323d5dd1efd23f1daf382ef"},"package":"0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/windows_x86_64_gnullvm/Cargo.toml temporalio-1.3.0/vendor/windows_x86_64_gnullvm/Cargo.toml --- temporalio-1.3.0/vendor/windows_x86_64_gnullvm/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/windows_x86_64_gnullvm/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2018" name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" authors = ["Microsoft"] description = "Import lib for Windows" license = "MIT OR Apache-2.0" diff -Nru temporalio-1.3.0/vendor/windows_x86_64_msvc/.cargo-checksum.json temporalio-1.3.0/vendor/windows_x86_64_msvc/.cargo-checksum.json --- temporalio-1.3.0/vendor/windows_x86_64_msvc/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/windows_x86_64_msvc/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"55de7fa66831e59ad955f4312f91d4a6ebb11951ad08900871d93efe8d27bb57","build.rs":"c801bf00de0978fd5252930993878c0b0eed65336c82c89289efaf9a9ad5ac22","lib/windows.0.48.0.lib":"34e853bb5d9404c934e3ecba22dce0487ffecc0728ed1779ab5d224ad01740c0","license-apache-2.0":"c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b","license-mit":"c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383","src/lib.rs":"bdf6c7cf1fc01f69cc1d4e52948d1f246fdd310e6323d5dd1efd23f1daf382ef"},"package":"1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"} \ No newline at end of file +{"files":{"Cargo.toml":"31fc0613dd41a20ea6963ace966c06a11afe06cc62465a7eb2e706667f6d6d02","build.rs":"c801bf00de0978fd5252930993878c0b0eed65336c82c89289efaf9a9ad5ac22","lib/windows.0.48.5.lib":"6ebeba999507cb792a7220b6fe751324d05564fc8e867d5804496c6e733a4468","license-apache-2.0":"c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b","license-mit":"c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383","src/lib.rs":"bdf6c7cf1fc01f69cc1d4e52948d1f246fdd310e6323d5dd1efd23f1daf382ef"},"package":"ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/windows_x86_64_msvc/Cargo.toml temporalio-1.3.0/vendor/windows_x86_64_msvc/Cargo.toml --- temporalio-1.3.0/vendor/windows_x86_64_msvc/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/windows_x86_64_msvc/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -12,7 +12,7 @@ [package] edition = "2018" name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" authors = ["Microsoft"] description = "Import lib for Windows" license = "MIT OR Apache-2.0" Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/windows_x86_64_msvc/lib/windows.0.48.0.lib and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/windows_x86_64_msvc/lib/windows.0.48.0.lib differ Binary files /tmp/tmpb708itth/KfH_u6rXm4/temporalio-1.3.0/vendor/windows_x86_64_msvc/lib/windows.0.48.5.lib and /tmp/tmpb708itth/jmDrC3c1J8/temporalio-1.3.0/vendor/windows_x86_64_msvc/lib/windows.0.48.5.lib differ diff -Nru temporalio-1.3.0/vendor/winreg/appveyor.yml temporalio-1.3.0/vendor/winreg/appveyor.yml --- temporalio-1.3.0/vendor/winreg/appveyor.yml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/appveyor.yml 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -version: 0.10.{build} -pull_requests: - do_not_increment_build_number: true - -branches: - except: - - github-actions - -os: Visual Studio 2015 - -environment: - matrix: - - TARGET: x86_64-pc-windows-msvc - CHANNEL: 1.31.1 - - TARGET: x86_64-pc-windows-gnu - CHANNEL: stable - - TARGET: x86_64-pc-windows-msvc - CHANNEL: stable - - TARGET: i686-pc-windows-gnu - CHANNEL: stable - - TARGET: i686-pc-windows-msvc - CHANNEL: stable - -install: - - curl -sSf -o rustup-init.exe https://win.rustup.rs - - rustup-init.exe --profile=minimal --component rustfmt,clippy --default-host %TARGET% --default-toolchain %CHANNEL% -y - - set PATH=%PATH%;C:\Users\appveyor\.cargo\bin - - rustc -Vv - - cargo -V - -build: false - -test_script: - - if not "%CHANNEL%"=="1.31.1" cargo fmt --all -- --check - - if not "%CHANNEL%"=="1.31.1" cargo clippy --all-features --all-targets - - cargo test --release --no-default-features - - cargo test --release --all-features diff -Nru temporalio-1.3.0/vendor/winreg/build.rs temporalio-1.3.0/vendor/winreg/build.rs --- temporalio-1.3.0/vendor/winreg/build.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/build.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -fn main() { - if std::env::var("CARGO_CFG_WINDOWS").is_err() { - eprintln!("error: winreg is only supported on Windows platforms"); - eprintln!( - "help: if your application is multi-platform, use \ - `[target.'cfg(windows)'.dependencies] winreg = \"...\"`" - ); - eprintln!("help: if your application is only supported on Windows, use `--target x86_64-pc-windows-gnu` or some other windows platform"); - std::process::exit(1); - } -} diff -Nru temporalio-1.3.0/vendor/winreg/.cargo-checksum.json temporalio-1.3.0/vendor/winreg/.cargo-checksum.json --- temporalio-1.3.0/vendor/winreg/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.lock":"818308f83f82333925a5c79a33070576296820a9ca6f619b3be3b89918916f22","Cargo.toml":"7462003029eaddf0220e48731744d83b9e91b40a71c33ee13543b65995c4fb52","LICENSE":"ea021d8c6383c84d19c15ce90d3b1602cf448fdcc0bf3772c98e43c7bf1bf1d1","README.md":"37ad193ded0a105eecea15743a76249c6ec735b82a06b78312052648564eccb5","appveyor.yml":"92f6bab3b9609448c48983d6c418fb9061dbd851a9d804ccd923f7e34ab742f1","build.rs":"3d34e0c23f6c21e6da11fb0fc3aff792b8f30f3ecfbb6b4f536d0a70394e13e7","examples/basic_usage.rs":"e7dd3af233d3aca6a92676eab2ac55414af1477d4214e7c1c2cdbdf583c83fa1","examples/enum.rs":"9be94d7dde12fc49a3fbe5c7810a6a9ad28eaac9319271e1cabda121301e08f3","examples/installed_apps.rs":"595709b6453b1efb5c613e69795d6f6576d45762867de1ee7247f2c3e988edbb","examples/load_app_key.rs":"16275c44efa22519101c199903c53e0cdca5ad4ebdcb39939c5a285de2fa006c","examples/map_key_serialization.rs":"82b102a36c91f99e8eeb2d1cfde13131f087457de1c84db3af31097fdb4541b0","examples/serialization.rs":"7f5c0e7e50872c9655cf4e54b4efb54a8bc19113dc645279496b8e3d20109295","examples/transactions.rs":"8094aa5dcecedae3acef58ece3ed264a44e908c12cfd4a65ff8c90254dbc7225","src/decoder/mod.rs":"75318907ca32ff0aa3af9bf63be9d728a76d7a75f7d1fdb88bcb3a9df4abeb01","src/decoder/serialization_serde.rs":"3f7cc4249dbff8255ed40cd4a3b4416779ddbad4bd476032094259a8668d0cd2","src/encoder/mod.rs":"a5331802cbe374e0c511aa1335fa32d7bbb3aa972cb136df3fc585b3f3855cf5","src/encoder/serialization_serde.rs":"d63037eb017fd2ece03ed4a140baf2a75516a3ef0315bf10a3eb16d5455880d6","src/enums.rs":"d69acf7106672a1cf2b43091faa12de98d5cf400872e1fcbe6e1891ba5d185ae","src/lib.rs":"130872ae9e213c8705592f3e1eac3245029f93e2c22c8f2337e3ecea25152d49","src/transaction.rs":"adaeecac01dc5886b90ab4ef03889ddd136ce26206dfa8f8da7410f0db80a742","src/types.rs":"d0c3ebc2aaab2f0fac426e60701acefa435c91812540d52dba1532664a0301ee","tests/reg_key.rs":"8a59b554230545e15a3affa82fb6d9061b45ac15e777df6cc383b725b8f4ad93"},"package":"80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d"} \ No newline at end of file +{"files":{"CHANGELOG.md":"96d5f241bda79f4dcceaa1828b961d0eba869d57faa9e80f46bed8548acceaf8","Cargo.lock":"0bc73667b2910f7c5c42d14b6aeb56830856c3e4c0e9eefcd97c1a57391f04ac","Cargo.toml":"5100bc41a57c8968cc4697e9d3ce04de7a749dc77dc8497903947ba390b38228","LICENSE":"ea021d8c6383c84d19c15ce90d3b1602cf448fdcc0bf3772c98e43c7bf1bf1d1","README.md":"b30ee20f2b5c307133e8b964cba207af663b473b0e882de2c3084f543864debb","clippy.toml":"444ea54130c23cdd2b5a5d4976c00e63175cfd67501d14888158a1ea841b48d4","examples/basic_usage.rs":"524968c4eafcd1c329818492a7708953263bcdc022d76a370424695272562a7f","examples/enum.rs":"0927718ef3d4997da0bb40e39044f01c3efbd3d1658b47986e9af8f9f0698ef8","examples/installed_apps.rs":"2f944d3a06f3a910b3378730bc04b816860733ce55ce08610fa2ae7ee5ea54c0","examples/load_app_key.rs":"a9e9c95b97c6523f27b7174f8ab230ad64f88e6eb89f60b428307c362ec4acfc","examples/map_key_serialization.rs":"64983800d8666ef4e5d784c8a515bf247ae21ff9627efd834c13c4c2d92234c8","examples/serialization.rs":"15c16d6b0418a5c029ce2b41703bca63477491f0e4fb972c6ce5cd67285ef035","examples/transactions.rs":"6b5bf2b16185b94682487447181fb70b57c6be23046267499b3c4e4eb30731fe","src/common.rs":"5878a99b20484c3de860671bbcdfebdc2c266ec0d45f726075b0c77fd1219e92","src/decoder/mod.rs":"7a17263f413b3ec39c00967657755d4003cffe57c45310ba06c0a951ca6a0bdb","src/decoder/serialization_serde.rs":"a77845467f390b9f65f990f1d86b4e5242d0cf54ddd899bc232c1b792fffac00","src/encoder/mod.rs":"41ff2c4afe89cc46c5d2ae780626926ca3f44977f38aaa0dc2a0810308dcf556","src/encoder/serialization_serde.rs":"be74282d83584d03a750cf9b5bb07eb5f8fc84ce619c57a712e5faa9134edee3","src/enums.rs":"78269b198cfb21f0458b03d2cef02a7f6335f344411bdfc581e26a3a0fcafa62","src/lib.rs":"44c05e6014bade7bd4b9abd9df12697cd1c886b59d42f8f1f0af2980b2add6f4","src/reg_key.rs":"180a11a2ec5f0194dfebb8e3163302fae6bc6869f1b0afa310864daa8745c7a6","src/reg_key_metadata.rs":"75a9a3d69870378efaeb6cc01168672f2863f98ed7f2f4660819f4f849093ad3","src/reg_value.rs":"f33a704267675b939a4a3ef9585253afe85511ca5b664376b1a878b3599a5fc1","src/transaction.rs":"ccb46f266f95755aebeb7b8706cc0698873be1b6985a17cdb007276fbbecee62","src/types.rs":"bd4beb58a94612b4213536e17eff831ffb048a2b07f43df1f9f77bb90c96e956","tests/common/mod.rs":"efa9db665303b7159fe6534cbe922020af98b76d63269781ed7616ca6ed98817","tests/reg_key.rs":"4d709e406b3f2cde4ea789b84542e105ecc023df2950f3a4af5c8a1f94006f51","tests/serialization.rs":"f61c4008df585d964db9478e8f9503a628c17eea1d94ced3430c6fe322bce8a5"},"package":"524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/winreg/Cargo.lock temporalio-1.3.0/vendor/winreg/Cargo.lock --- temporalio-1.3.0/vendor/winreg/Cargo.lock 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/Cargo.lock 2023-10-30 19:40:00.000000000 +0000 @@ -1,18 +1,28 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] [[package]] name = "autocfg" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" +checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78" +dependencies = [ + "autocfg 1.1.0", +] [[package]] name = "autocfg" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "bitflags" @@ -21,21 +31,41 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] +name = "bumpalo" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + +[[package]] name = "cfg-if" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] name = "chrono" -version = "0.4.19" +version = "0.4.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" dependencies = [ - "libc", + "iana-time-zone", + "js-sys", "num-integer", "num-traits", "time", + "wasm-bindgen", "winapi", ] @@ -49,50 +79,167 @@ ] [[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "cxx" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" +dependencies = [ + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" +dependencies = [ + "cc", + "codespan-reporting", + "once_cell", + "proc-macro2", + "quote", + "scratch", + "syn 2.0.12", +] + +[[package]] +name = "cxxbridge-flags" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.12", +] + +[[package]] name = "fuchsia-cprng" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] +name = "iana-time-zone" +version = "0.1.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c17cc76786e99f8d2f055c11159e7f0091c42474dcc3189fbab96072e873e6d" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +dependencies = [ + "cxx", + "cxx-build", +] + +[[package]] +name = "js-sys" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +dependencies = [ + "wasm-bindgen", +] + +[[package]] name = "libc" -version = "0.2.101" +version = "0.2.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" + +[[package]] +name = "link-cplusplus" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" +dependencies = [ + "cc", +] + +[[package]] +name = "log" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb00336871be5ed2c8ed44b60ae9959dc5b9f08539422ed43f09e34ecaeba21" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if 1.0.0", +] [[package]] name = "num-integer" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "num-traits", ] [[package]] name = "num-traits" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", ] [[package]] +name = "once_cell" +version = "1.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" + +[[package]] name = "proc-macro2" -version = "1.0.29" +version = "1.0.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f5105d4fdaab20335ca9565e106a5d9b82b6219b5ba735731124ac6711d23d" +checksum = "e472a104799c74b514a57226160104aa483546de37e839ec50e3c2e41dd87534" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] name = "quote" -version = "1.0.9" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" dependencies = [ "proc-macro2", ] @@ -126,7 +273,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" dependencies = [ - "autocfg 0.1.7", + "autocfg 0.1.8", "libc", "rand_chacha", "rand_core 0.4.2", @@ -145,7 +292,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" dependencies = [ - "autocfg 0.1.7", + "autocfg 0.1.8", "rand_core 0.3.1", ] @@ -213,7 +360,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" dependencies = [ - "autocfg 0.1.7", + "autocfg 0.1.8", "rand_core 0.4.2", ] @@ -251,31 +398,57 @@ ] [[package]] +name = "scratch" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" + +[[package]] name = "serde" -version = "1.0.130" +version = "1.0.156" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913" +checksum = "314b5b092c0ade17c00142951e50ced110ec27cea304b1037c6969246c2469a4" + +[[package]] +name = "serde_bytes" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294" +dependencies = [ + "serde", +] [[package]] name = "serde_derive" -version = "1.0.130" +version = "1.0.156" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b" +checksum = "d7e29c4601e36bcec74a223228dce795f4cd3616341a4af93520ca1a837c087d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "syn" -version = "1.0.76" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6f107db402c2c2055242dbf4d2af0e69197202e9faacbef9571bbe47f5a1b84" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79d9531f94112cfc3e4c8f5f02cb2b58f72c97b7efd85f70203cc6d8efda5927" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] @@ -284,7 +457,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dc4738f2e68ed2855de5ac9cdbe05c9216773ecde4739b2f095002ab03a13ef" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "libc", "rand 0.6.5", "redox_syscall", @@ -293,10 +466,19 @@ ] [[package]] +name = "termcolor" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +dependencies = [ + "winapi-util", +] + +[[package]] name = "time" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" dependencies = [ "libc", "wasi", @@ -304,10 +486,16 @@ ] [[package]] -name = "unicode-xid" -version = "0.2.2" +name = "unicode-ident" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" + +[[package]] +name = "unicode-width" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" [[package]] name = "wasi" @@ -316,6 +504,60 @@ checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" [[package]] +name = "wasm-bindgen" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" + +[[package]] name = "winapi" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -332,19 +574,162 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] +name = "windows" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdacb41e6a96a052c6cb63a144f24900236121c6f63f4f8219fef5977ecb0c25" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.0", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" dependencies = [ + "cfg-if 1.0.0", "chrono", "rand 0.3.23", "serde", + "serde_bytes", "serde_derive", "tempfile", - "winapi", + "windows-sys", ] diff -Nru temporalio-1.3.0/vendor/winreg/Cargo.toml temporalio-1.3.0/vendor/winreg/Cargo.toml --- temporalio-1.3.0/vendor/winreg/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -3,27 +3,38 @@ # 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 +# to registry (e.g., crates.io) dependencies. # -# If you believe there's an error in this file please file an -# issue against the rust-lang/cargo repository. If you're -# editing this file be aware that the upstream Cargo.toml -# will likely look very different (and much more reasonable) +# 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 = "winreg" -version = "0.10.1" +version = "0.50.0" authors = ["Igor Shaula "] description = "Rust bindings to MS Windows Registry API" documentation = "https://docs.rs/winreg" readme = "README.md" -keywords = ["Windows", "WinSDK", "Registry"] -categories = ["api-bindings", "os::windows-apis"] +keywords = [ + "Windows", + "WinSDK", + "Registry", +] +categories = [ + "api-bindings", + "os::windows-apis", +] license = "MIT" repository = "https://github.com/gentoo90/winreg-rs" + [package.metadata.docs.rs] all-features = true -targets = ["x86_64-pc-windows-msvc", "i686-pc-windows-msvc"] +targets = [ + "x86_64-pc-windows-msvc", + "i686-pc-windows-msvc", +] [[example]] name = "basic_usage" @@ -50,6 +61,10 @@ [[example]] name = "installed_apps" required-features = ["serialization-serde"] + +[dependencies.cfg-if] +version = "1.0" + [dependencies.chrono] version = "0.4.6" optional = true @@ -58,12 +73,23 @@ version = "1" optional = true -[dependencies.winapi] -version = "0.3.9" -features = ["impl-default", "impl-debug", "minwindef", "minwinbase", "timezoneapi", "winerror", "winnt", "winreg", "handleapi"] +[dependencies.windows-sys] +version = "0.48.0" +features = [ + "Win32_Foundation", + "Win32_System_Time", + "Win32_System_Registry", + "Win32_Security", + "Win32_Storage_FileSystem", + "Win32_System_Diagnostics_Debug", +] + [dev-dependencies.rand] version = "0.3" +[dev-dependencies.serde_bytes] +version = "0.11" + [dev-dependencies.serde_derive] version = "1" @@ -71,5 +97,8 @@ version = "~3.0" [features] -serialization-serde = ["transactions", "serde"] -transactions = ["winapi/ktmw32"] +serialization-serde = [ + "transactions", + "serde", +] +transactions = [] diff -Nru temporalio-1.3.0/vendor/winreg/CHANGELOG.md temporalio-1.3.0/vendor/winreg/CHANGELOG.md --- temporalio-1.3.0/vendor/winreg/CHANGELOG.md 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/CHANGELOG.md 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,115 @@ +# Changelog + +## 0.50.0 + +* Breaking change: [`winapi-rs`](https://crates.io/crates/winapi) is not maintained any more, so migrate to Microsofts [`windows-sys`](https://crates.io/crates/windows-sys) as a backend ([#48](https://github.com/gentoo90/winreg-rs/pull/48), [#51](https://github.com/gentoo90/winreg-rs/pull/51)) +* Breaking change: Increase minimum supported Rust version to `1.46` since `windows-sys` doesn't compile with older versions +* Replace deprecated methods from `chrono` ([#48](https://github.com/gentoo90/winreg-rs/pull/48)) + +## 0.11.0 + +* Migrate to the 2018 edition of Rust +* Move the code from `lib.rs` to separate files +* Use [`cfg-if`](https://crates.io/crates/cfg-if) instead of `build.rs` to fail build on non-windows systems +* Reimplement deserialization logic, implement [de]serialization for byte arrays ([#49](https://github.com/gentoo90/winreg-rs/issues/49)) +* Fix some typos and `clippy` warnings + +## 0.10.1 + +* Bump the minimal required version of `winapi` to `0.3.9` (required for `load_app_key`) +* Reexport `REG_PROCESS_APPKEY` and use it in the `load_app_key` example + +## 0.10.0 + +* Add `RegKey::load_app_key()` and `RegKey::load_app_key_with_flags()` ([#30](https://github.com/gentoo90/winreg-rs/issues/30)) +* Update dev dependency `rand` to `0.8` +* Add Github actions +* Fix some clippy warnings + +## 0.9.0 + +* Breaking change: `OsStr` and `OsString` registry values are not `NULL`-terminated any more ([#34](https://github.com/gentoo90/winreg-rs/issues/34), [#42](https://github.com/gentoo90/winreg-rs/issues/42)) +* Refactoring: use macros for `ToRegValue` impls and tests for string values +* Fix `bare_trait_objects` warning in the doctests +* Add `impl ToRegValue for OsString` +* Add conversion between `REG_MULTI_SZ` and vectors of strings ([#16](https://github.com/gentoo90/winreg-rs/issues/16)) +* Fix: set minimal `winapi` version to 0.3.7 (earlier versions don't have `impl-default` and `impl-debug` features which we use) +* Appveyor now checks the crate against `rust-1.31.1` too + +## 0.8.0 + +* Implement serialization of `char` and maps +* Implement `std::fmt::Display` for `RegValue` +* Make `RegKey::{predef,raw_handle,enum_keys,enum_values}` functions `const` +* Give a better error message when compiling on platforms other than Windows ([#38](https://github.com/gentoo90/winreg-rs/pull/38)) +* Tests are moved from `src/lib.rs` to `tests/reg_key.rs` + +## 0.7.0 + +* Breaking change: remove deprecated `Error::description` ([#28](https://github.com/gentoo90/winreg-rs/pull/28)) +* Optimize `Iterator::nth()` for the `Enum*` iterators ([#29](https://github.com/gentoo90/winreg-rs/pull/29)) + +## 0.6.2 + +* Add `RegKey::delete_subkey_with_flags()` ([#27](https://github.com/gentoo90/winreg-rs/pull/27)) + +## 0.6.1 + +* Add `last_write_time` field to `RegKeyMetadata` (returned by `RegKey::query_info()`) ([#25](https://github.com/gentoo90/winreg-rs/pull/25)). +* Add `get_last_write_time_system()` and `get_last_write_time_chrono()` (under `chrono` feature) methods to `RegKeyMetadata`. + +## 0.6.0 + +* Breaking change: `create_subkey`, `create_subkey_with_flags`, `create_subkey_transacted` and +`create_subkey_transacted_with_flags` now return a tuple which contains the subkey and its disposition +which can be `REG_CREATED_NEW_KEY` or `REG_OPENED_EXISTING_KEY` ([#21](https://github.com/gentoo90/winreg-rs/issues/21)). +* Examples fixed to not use `unwrap` according to [Rust API guidelines](https://rust-lang-nursery.github.io/api-guidelines/documentation.html#examples-use--not-try-not-unwrap-c-question-mark). + +## 0.5.1 + +* Reexport `HKEY` ([#15](https://github.com/gentoo90/winreg-rs/issues/15)). +* Add `raw_handle` method ([#18](https://github.com/gentoo90/winreg-rs/pull/18)). + +## 0.5.0 + +* Breaking change: `open_subkey` now opens a key with readonly permissions. +Use `create_subkey` or `open_subkey_with_flags` to open with read-write permissions. +* Breaking change: features `transactions` and `serialization-serde` are now disabled by default. +* Breaking change: serialization now uses `serde` instead of `rustc-serialize`. +* `winapi` updated to `0.3`. +* Documentation fixes ([#14](https://github.com/gentoo90/winreg-rs/pull/14)) + +## 0.4.0 + +* Make transactions and serialization otional features +* Update dependencies + minor fixes ([#12](https://github.com/gentoo90/winreg-rs/pull/12)) + +## 0.3.5 + +* Implement `FromRegValue` for `OsString` and `ToRegValue` for `OsStr` ([#8](https://github.com/gentoo90/winreg-rs/issues/8)) +* Minor fixes + +## 0.3.4 + +* Add `copy_tree` method to `RegKey` +* Now checked with [rust-clippy](https://github.com/Manishearth/rust-clippy) + * no more `unwrap`s + * replaced `to_string` with `to_owned` +* Fix: reading strings longer than 2048 characters ([#6](https://github.com/gentoo90/winreg-rs/pull/6)) + +## 0.3.3 + +* Fix: now able to read values longer than 2048 bytes ([#3](https://github.com/gentoo90/winreg-rs/pull/3)) + +## 0.3.2 + +* Fix: `FromRegValue` trait now requires `Sized` (fixes build with rust 1.4) + +## 0.3.1 + +* Fix: bump `winapi` version to fix build + +## 0.3.0 + +* Add transactions support and make serialization transacted +* Breaking change: use `std::io::{Error,Result}` instead of own `RegError` and `RegResult` diff -Nru temporalio-1.3.0/vendor/winreg/clippy.toml temporalio-1.3.0/vendor/winreg/clippy.toml --- temporalio-1.3.0/vendor/winreg/clippy.toml 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/clippy.toml 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1 @@ +msrv = "1.46" diff -Nru temporalio-1.3.0/vendor/winreg/examples/basic_usage.rs temporalio-1.3.0/vendor/winreg/examples/basic_usage.rs --- temporalio-1.3.0/vendor/winreg/examples/basic_usage.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/examples/basic_usage.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,8 @@ -// Copyright 2015, Igor Shaula +// Copyright 2023, Igor Shaula // Licensed under the MIT License . This file // may not be copied, modified, or distributed // except according to those terms. -extern crate winreg; use std::io; use std::path::Path; use winreg::enums::*; @@ -20,7 +19,7 @@ println!("info = {:?}", info); let mt = info.get_last_write_time_system(); println!( - "last_write_time as winapi::um::minwinbase::SYSTEMTIME = {}-{:02}-{:02} {:02}:{:02}:{:02}", + "last_write_time as windows_sys::Win32::Foundation::SYSTEMTIME = {}-{:02}-{:02} {:02}:{:02}:{:02}", mt.wYear, mt.wMonth, mt.wDay, mt.wHour, mt.wMinute, mt.wSecond ); println!( diff -Nru temporalio-1.3.0/vendor/winreg/examples/enum.rs temporalio-1.3.0/vendor/winreg/examples/enum.rs --- temporalio-1.3.0/vendor/winreg/examples/enum.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/examples/enum.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,8 @@ -// Copyright 2015, Igor Shaula +// Copyright 2023, Igor Shaula // Licensed under the MIT License . This file // may not be copied, modified, or distributed // except according to those terms. -extern crate winreg; use std::io; use winreg::enums::*; use winreg::RegKey; diff -Nru temporalio-1.3.0/vendor/winreg/examples/installed_apps.rs temporalio-1.3.0/vendor/winreg/examples/installed_apps.rs --- temporalio-1.3.0/vendor/winreg/examples/installed_apps.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/examples/installed_apps.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,11 +1,9 @@ -// Copyright 2017, Igor Shaula +// Copyright 2023, Igor Shaula // Licensed under the MIT License . This file // may not be copied, modified, or distributed // except according to those terms. -#[macro_use] -extern crate serde_derive; -extern crate winreg; +use serde_derive::{Deserialize, Serialize}; use std::collections::HashMap; use std::fmt; use winreg::enums::*; diff -Nru temporalio-1.3.0/vendor/winreg/examples/load_app_key.rs temporalio-1.3.0/vendor/winreg/examples/load_app_key.rs --- temporalio-1.3.0/vendor/winreg/examples/load_app_key.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/examples/load_app_key.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,8 @@ -// Copyright 2021, Igor Shaula +// Copyright 2023, Igor Shaula // Licensed under the MIT License . This file // may not be copied, modified, or distributed // except according to those terms. -extern crate winreg; use std::io; use winreg::enums::*; use winreg::RegKey; diff -Nru temporalio-1.3.0/vendor/winreg/examples/map_key_serialization.rs temporalio-1.3.0/vendor/winreg/examples/map_key_serialization.rs --- temporalio-1.3.0/vendor/winreg/examples/map_key_serialization.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/examples/map_key_serialization.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,11 +1,9 @@ -// Copyright 2020, Igor Shaula +// Copyright 2023, Igor Shaula // Licensed under the MIT License . This file // may not be copied, modified, or distributed // except according to those terms. -#[macro_use] -extern crate serde_derive; -extern crate winreg; +use serde_derive::{Deserialize, Serialize}; use std::collections::HashMap; use std::error::Error; use winreg::enums::*; diff -Nru temporalio-1.3.0/vendor/winreg/examples/serialization.rs temporalio-1.3.0/vendor/winreg/examples/serialization.rs --- temporalio-1.3.0/vendor/winreg/examples/serialization.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/examples/serialization.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,11 +1,9 @@ -// Copyright 2015, Igor Shaula +// Copyright 2023, Igor Shaula // Licensed under the MIT License . This file // may not be copied, modified, or distributed // except according to those terms. -#[macro_use] -extern crate serde_derive; -extern crate winreg; +use serde_derive::{Deserialize, Serialize}; use std::collections::HashMap; use std::error::Error; use winreg::enums::*; @@ -39,6 +37,8 @@ t_struct: Rectangle, t_map: HashMap, t_string: String, + #[serde(with = "serde_bytes")] + t_bytes: Vec, #[serde(rename = "")] // empty name becomes the (Default) value in the registry t_char: char, t_i8: i8, @@ -73,6 +73,7 @@ }, t_map: map, t_string: "test 123!".to_owned(), + t_bytes: vec![0xDE, 0xAD, 0xBE, 0xEF], t_char: 'a', t_i8: -123, t_i16: -2049, diff -Nru temporalio-1.3.0/vendor/winreg/examples/transactions.rs temporalio-1.3.0/vendor/winreg/examples/transactions.rs --- temporalio-1.3.0/vendor/winreg/examples/transactions.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/examples/transactions.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,9 +1,8 @@ -// Copyright 2015, Igor Shaula +// Copyright 2023, Igor Shaula // Licensed under the MIT License . This file // may not be copied, modified, or distributed // except according to those terms. -extern crate winreg; use std::io; use winreg::enums::*; use winreg::transaction::Transaction; diff -Nru temporalio-1.3.0/vendor/winreg/README.md temporalio-1.3.0/vendor/winreg/README.md --- temporalio-1.3.0/vendor/winreg/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,11 +1,11 @@ winreg -[![Winreg on Appveyor][appveyor-image]][appveyor] +[![Github Actions][actions-image]][actions] [![Winreg on crates.io][cratesio-image]][cratesio] [![Winreg on docs.rs][docsrs-image]][docsrs] ====== -[appveyor-image]: https://ci.appveyor.com/api/projects/status/f3lwrt67ghrf5omd?svg=true -[appveyor]: https://ci.appveyor.com/project/gentoo90/winreg-rs +[actions-image]: https://github.com/gentoo90/winreg-rs/actions/workflows/ci.yaml/badge.svg +[actions]: https://github.com/gentoo90/winreg-rs/actions [cratesio-image]: https://img.shields.io/crates/v/winreg.svg [cratesio]: https://crates.io/crates/winreg [docsrs-image]: https://docs.rs/winreg/badge.svg @@ -36,11 +36,10 @@ ```toml # Cargo.toml [dependencies] -winreg = "0.10" +winreg = "0.50" ``` ```rust -extern crate winreg; use std::io; use std::path::Path; use winreg::enums::*; @@ -57,7 +56,7 @@ println!("info = {:?}", info); let mt = info.get_last_write_time_system(); println!( - "last_write_time as winapi::um::minwinbase::SYSTEMTIME = {}-{:02}-{:02} {:02}:{:02}:{:02}", + "last_write_time as windows_sys::Win32::Foundation::SYSTEMTIME = {}-{:02}-{:02} {:02}:{:02}:{:02}", mt.wYear, mt.wMonth, mt.wDay, mt.wHour, mt.wMinute, mt.wSecond ); @@ -111,7 +110,6 @@ ### Iterators ```rust -extern crate winreg; use std::io; use winreg::RegKey; use winreg::enums::*; @@ -140,11 +138,10 @@ ```toml # Cargo.toml [dependencies] -winreg = { version = "0.10", features = ["transactions"] } +winreg = { version = "0.50", features = ["transactions"] } ``` ```rust -extern crate winreg; use std::io; use winreg::RegKey; use winreg::enums::*; @@ -182,15 +179,13 @@ ```toml # Cargo.toml [dependencies] -winreg = { version = "0.10", features = ["serialization-serde"] } +winreg = { version = "0.50", features = ["serialization-serde"] } serde = "1" serde_derive = "1" ``` ```rust -#[macro_use] -extern crate serde_derive; -extern crate winreg; +use serde_derive::{Deserialize, Serialize}; use std::collections::HashMap; use std::error::Error; use winreg::enums::*; @@ -277,105 +272,3 @@ Ok(()) } ``` - -## Changelog - -### 0.10.1 - -* Bump minimal required version of `winapi` to `0.3.9` (required for `load_app_key`) -* Reexport `REG_PROCESS_APPKEY` and use it in the `load_app_key` example - -### 0.10.0 - -* Add `RegKey::load_app_key()` and `RegKey::load_app_key_with_flags()` ([#30](https://github.com/gentoo90/winreg-rs/issues/30)) -* Update dev dependency `rand` to `0.8` -* Add Github actions -* Fix some clippy warnings - -### 0.9.0 - -* Breaking change: `OsStr` and `OsString` registry values are not `NULL`-terminated any more ([#34](https://github.com/gentoo90/winreg-rs/issues/34), [#42](https://github.com/gentoo90/winreg-rs/issues/42)) -* Refactoring: use macros for `ToRegValue` impls and tests for string values -* Fix `bare_trait_objects` warning in the doctests -* Add `impl ToRegValue for OsString` -* Add conversion between `REG_MULTI_SZ` and vectors of strings ([#16](https://github.com/gentoo90/winreg-rs/issues/16)) -* Fix: set minimal `winapi` version to 0.3.7 (earlier versions don't have `impl-default` and `impl-debug` features which we use) -* Appveyor now checks the crate against `rust-1.31.1` too - -### 0.8.0 - -* Implement serialization of `char` and maps -* Implement `std::fmt::Display` for `RegValue` -* Make `RegKey::{predef,raw_handle,enum_keys,enum_values}` functions `const` -* Give a better error message when compiling on platforms other than Windows ([#38](https://github.com/gentoo90/winreg-rs/pull/38)) -* Tests are moved from `src/lib.rs` to `tests/reg_key.rs` - -### 0.7.0 - -* Breaking change: remove deprecated `Error::description` ([#28](https://github.com/gentoo90/winreg-rs/pull/28)) -* Optimize `Iterator::nth()` for the `Enum*` iterators ([#29](https://github.com/gentoo90/winreg-rs/pull/29)) - -### 0.6.2 - -* Add `RegKey::delete_subkey_with_flags()` ([#27](https://github.com/gentoo90/winreg-rs/pull/27)) - -### 0.6.1 - -* Add `last_write_time` field to `RegKeyMetadata` (returned by `RegKey::query_info()`) ([#25](https://github.com/gentoo90/winreg-rs/pull/25)). -* Add `get_last_write_time_system()` and `get_last_write_time_chrono()` (under `chrono` feature) methods to `RegKeyMetadata`. - -### 0.6.0 - -* Breaking change: `create_subkey`, `create_subkey_with_flags`, `create_subkey_transacted` and -`create_subkey_transacted_with_flags` now return a tuple which contains the subkey and its disposition -which can be `REG_CREATED_NEW_KEY` or `REG_OPENED_EXISTING_KEY` ([#21](https://github.com/gentoo90/winreg-rs/issues/21)). -* Examples fixed to not use `unwrap` according to [Rust API guidelines](https://rust-lang-nursery.github.io/api-guidelines/documentation.html#examples-use--not-try-not-unwrap-c-question-mark). - -### 0.5.1 - -* Reexport `HKEY` ([#15](https://github.com/gentoo90/winreg-rs/issues/15)). -* Add `raw_handle` method ([#18](https://github.com/gentoo90/winreg-rs/pull/18)). - -### 0.5.0 - -* Breaking change: `open_subkey` now opens a key with readonly permissions. -Use `create_subkey` or `open_subkey_with_flags` to open with read-write permissins. -* Breaking change: features `transactions` and `serialization-serde` are now disabled by default. -* Breaking change: serialization now uses `serde` instead of `rustc-serialize`. -* `winapi` updated to `0.3`. -* Documentation fixes ([#14](https://github.com/gentoo90/winreg-rs/pull/14)) - -### 0.4.0 - -* Make transactions and serialization otional features -* Update dependensies + minor fixes ([#12](https://github.com/gentoo90/winreg-rs/pull/12)) - -### 0.3.5 - -* Implement `FromRegValue` for `OsString` and `ToRegValue` for `OsStr` ([#8](https://github.com/gentoo90/winreg-rs/issues/8)) -* Minor fixes - -### 0.3.4 - -* Add `copy_tree` method to `RegKey` -* Now checked with [rust-clippy](https://github.com/Manishearth/rust-clippy) - * no more `unwrap`s - * replaced `to_string` with `to_owned` -* Fix: reading strings longer than 2048 characters ([#6](https://github.com/gentoo90/winreg-rs/pull/6)) - -### 0.3.3 - -* Fix: now able to read values longer than 2048 bytes ([#3](https://github.com/gentoo90/winreg-rs/pull/3)) - -### 0.3.2 - -* Fix: `FromRegValue` trait now requires `Sized` (fixes build with rust 1.4) - -### 0.3.1 - -* Fix: bump `winapi` version to fix build - -### 0.3.0 - -* Add transactions support and make serialization transacted -* Breaking change: use `std::io::{Error,Result}` instead of own `RegError` and `RegResult` diff -Nru temporalio-1.3.0/vendor/winreg/src/common.rs temporalio-1.3.0/vendor/winreg/src/common.rs --- temporalio-1.3.0/vendor/winreg/src/common.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/src/common.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,26 @@ +// Copyright 2023, Igor Shaula +// Licensed under the MIT License . This file +// may not be copied, modified, or distributed +// except according to those terms. +#![macro_use] +use std::ffi::OsStr; +use std::os::windows::ffi::OsStrExt; +use std::slice; + +macro_rules! werr { + ($e:expr) => { + Err(io::Error::from_raw_os_error($e as i32)) + }; +} + +pub(crate) fn to_utf16>(s: P) -> Vec { + s.as_ref() + .encode_wide() + .chain(Some(0).into_iter()) + .collect() +} + +pub(crate) fn v16_to_v8(v: &[u16]) -> Vec { + unsafe { slice::from_raw_parts(v.as_ptr() as *const u8, v.len() * 2).to_vec() } +} diff -Nru temporalio-1.3.0/vendor/winreg/src/decoder/mod.rs temporalio-1.3.0/vendor/winreg/src/decoder/mod.rs --- temporalio-1.3.0/vendor/winreg/src/decoder/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/src/decoder/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,27 +1,19 @@ -// Copyright 2017, Igor Shaula +// Copyright 2023, Igor Shaula // Licensed under the MIT License . This file // may not be copied, modified, or distributed // except according to those terms. -use super::enums::*; -use super::RegKey; +use crate::enums::*; +use crate::reg_key::RegKey; +use crate::reg_value::RegValue; +use crate::types::FromRegValue; use std::error::Error; use std::fmt; use std::io; -use winapi::shared::minwindef::DWORD; - -macro_rules! read_value { - ($s:ident) => { - match mem::replace(&mut $s.f_name, None) { - Some(ref s) => $s.key.get_value(s).map_err(DecoderError::IoError), - None => Err(DecoderError::NoFieldName), - } - }; -} macro_rules! parse_string { ($s:ident) => {{ - let s: String = read_value!($s)?; + let s: String = $s.read_value()?; s.parse() .map_err(|e| DecoderError::ParseError(format!("{:?}", e))) }}; @@ -61,27 +53,24 @@ pub type DecodeResult = Result; -#[derive(Debug)] -enum DecoderReadingState { - WaitingForKey, - WaitingForValue, -} - -#[derive(Debug)] -enum DecoderEnumerationState { - EnumeratingKeys(DWORD), - EnumeratingValues(DWORD), +#[derive(Debug, Clone)] +enum DecoderCursor { + Start, + Key(u32), + KeyName(u32, String), + KeyVal(u32, String), + Field(u32), + FieldName(u32, String), + FieldVal(u32, String), } #[derive(Debug)] pub struct Decoder { key: RegKey, - f_name: Option, - reading_state: DecoderReadingState, - enumeration_state: DecoderEnumerationState, + cursor: DecoderCursor, } -const DECODER_SAM: DWORD = KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS; +const DECODER_SAM: u32 = KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS; impl Decoder { pub fn from_key(key: &RegKey) -> DecodeResult { @@ -93,9 +82,35 @@ fn new(key: RegKey) -> Decoder { Decoder { key, - f_name: None, - reading_state: DecoderReadingState::WaitingForKey, - enumeration_state: DecoderEnumerationState::EnumeratingKeys(0), + cursor: DecoderCursor::Start, + } + } + + fn read_value(&mut self) -> Result { + use self::DecoderCursor::*; + let cursor = self.cursor.clone(); + match cursor { + FieldVal(index, name) => { + self.cursor = DecoderCursor::Field(index + 1); + self.key.get_value(name).map_err(DecoderError::IoError) + } + _ => Err(DecoderError::DeserializerError("Not a value".to_owned())), + } + } + + fn read_bytes(&mut self) -> Result, DecoderError> { + use self::DecoderCursor::*; + let cursor = self.cursor.clone(); + match cursor { + FieldVal(index, name) => { + self.cursor = DecoderCursor::Field(index + 1); + let RegValue { bytes, .. } = self + .key + .get_raw_value(name) + .map_err(DecoderError::IoError)?; + Ok(bytes) + } + _ => Err(DecoderError::DeserializerError("Not a value".to_owned())), } } } diff -Nru temporalio-1.3.0/vendor/winreg/src/decoder/serialization_serde.rs temporalio-1.3.0/vendor/winreg/src/decoder/serialization_serde.rs --- temporalio-1.3.0/vendor/winreg/src/decoder/serialization_serde.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/src/decoder/serialization_serde.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,15 +1,12 @@ -// Copyright 2017, Igor Shaula +// Copyright 2023, Igor Shaula // Licensed under the MIT License . This file // may not be copied, modified, or distributed // except according to those terms. -use super::super::FromRegValue; -use super::{ - DecodeResult, Decoder, DecoderEnumerationState, DecoderError, DecoderReadingState, DECODER_SAM, -}; +use super::{DecodeResult, Decoder, DecoderCursor, DecoderError, DECODER_SAM}; +use crate::types::FromRegValue; use serde::de::*; use std::fmt; -use std::mem; impl Error for DecoderError { fn custom(msg: T) -> Self { @@ -23,24 +20,26 @@ where V: Visitor<'de>, { - use self::DecoderEnumerationState::*; - match self.enumeration_state { - EnumeratingKeys(..) => no_impl!("deserialize_any for keys"), - EnumeratingValues(..) => { - let s = self.f_name.as_ref().ok_or(DecoderError::NoFieldName)?; - let v = self.key.get_raw_value(s)?; - use RegType::*; + use super::DecoderCursor::*; + let cursor = self.cursor.clone(); + match cursor { + Start => self.deserialize_map(visitor), + KeyName(..) | FieldName(..) => self.deserialize_string(visitor), + FieldVal(index, name) => { + use crate::enums::RegType::*; + let v = self.key.get_raw_value(name)?; + self.cursor = Field(index + 1); match v.vtype { REG_SZ | REG_EXPAND_SZ | REG_MULTI_SZ => { visitor.visit_string(String::from_reg_value(&v)?) } REG_DWORD => visitor.visit_u32(u32::from_reg_value(&v)?), REG_QWORD => visitor.visit_u64(u64::from_reg_value(&v)?), - _ => Err(DecoderError::DecodeNotImplemented( - "value type deserialization not implemented".to_owned(), - )), + REG_BINARY => visitor.visit_byte_buf(v.bytes), + _ => no_impl!("value type deserialization not implemented"), } } + _ => no_impl!("deserialize_any"), } } @@ -48,7 +47,7 @@ where V: Visitor<'de>, { - visitor.visit_bool(read_value!(self).map(|v: u32| v > 0)?) + visitor.visit_bool(self.read_value().map(|v: u32| v > 0)?) } fn deserialize_u8(self, visitor: V) -> DecodeResult @@ -69,14 +68,14 @@ where V: Visitor<'de>, { - visitor.visit_u32(read_value!(self)?) + visitor.visit_u32(self.read_value()?) } fn deserialize_u64(self, visitor: V) -> DecodeResult where V: Visitor<'de>, { - visitor.visit_u64(read_value!(self)?) + visitor.visit_u64(self.read_value()?) } fn deserialize_i8(self, visitor: V) -> DecodeResult @@ -139,13 +138,19 @@ where V: Visitor<'de>, { - use self::DecoderReadingState::*; - match self.reading_state { - WaitingForKey => { - let s = self.f_name.as_ref().ok_or(DecoderError::NoFieldName)?; - visitor.visit_string(s.clone()) + use super::DecoderCursor::*; + let cursor = self.cursor.clone(); + match cursor { + KeyName(index, name) => { + self.cursor = DecoderCursor::KeyVal(index, name.clone()); + visitor.visit_string(name) } - WaitingForValue => visitor.visit_string(read_value!(self)?), + FieldName(index, name) => { + self.cursor = DecoderCursor::FieldVal(index, name.clone()); + visitor.visit_string(name) + } + FieldVal(..) => visitor.visit_string(self.read_value()?), + _ => Err(DecoderError::NoFieldName), } } @@ -156,11 +161,11 @@ no_impl!("deserialize_bytes") } - fn deserialize_byte_buf(self, _visitor: V) -> DecodeResult + fn deserialize_byte_buf(self, visitor: V) -> DecodeResult where V: Visitor<'de>, { - no_impl!("deserialize_byte_buf") + visitor.visit_byte_buf(self.read_bytes()?) } fn deserialize_option(self, visitor: V) -> DecodeResult @@ -168,8 +173,13 @@ V: Visitor<'de>, { let v = { - let s = self.f_name.as_ref().ok_or(DecoderError::NoFieldName)?; - self.key.get_raw_value(s) + use super::DecoderCursor::*; + match self.cursor { + FieldVal(_, ref name) => { + self.key.get_raw_value(name).map_err(DecoderError::IoError) + } + _ => Err(DecoderError::DeserializerError("Nothing found".to_owned())), + } }; match v { Ok(..) => visitor.visit_some(&mut *self), @@ -274,37 +284,39 @@ } } -impl<'de, 'a> MapAccess<'de> for Decoder { +impl<'de> MapAccess<'de> for Decoder { type Error = DecoderError; fn next_key_seed(&mut self, seed: K) -> Result, Self::Error> where K: DeserializeSeed<'de>, { - self.reading_state = DecoderReadingState::WaitingForKey; - use self::DecoderEnumerationState::*; - match self.enumeration_state { - EnumeratingKeys(index) => match self.key.enum_key(index) { + use super::DecoderCursor::*; + match self.cursor { + Start => { + self.cursor = Key(0); + self.next_key_seed(seed) + } + Key(index) => match self.key.enum_key(index) { Some(res) => { - self.f_name = Some(res?); - self.enumeration_state = EnumeratingKeys(index + 1); + self.cursor = KeyName(index, res?); seed.deserialize(&mut *self).map(Some) } None => { - self.enumeration_state = EnumeratingValues(0); + self.cursor = Field(0); self.next_key_seed(seed) } }, - EnumeratingValues(index) => { + Field(index) => { let next_value = self.key.enum_value(index); match next_value { Some(res) => { - self.f_name = Some(res?.0); - self.enumeration_state = EnumeratingValues(index + 1); + self.cursor = FieldName(index, res?.0); seed.deserialize(&mut *self).map(Some) } None => Ok(None), } } + _ => no_impl!("Wrong cursor state (key)"), } } @@ -312,20 +324,18 @@ where V: DeserializeSeed<'de>, { - self.reading_state = DecoderReadingState::WaitingForValue; - use self::DecoderEnumerationState::*; - match self.enumeration_state { - EnumeratingKeys(..) => { - let f_name = self.f_name.as_ref().ok_or(DecoderError::NoFieldName)?; - match self.key.open_subkey_with_flags(f_name, DECODER_SAM) { - Ok(subkey) => { - let mut nested = Decoder::new(subkey); - seed.deserialize(&mut nested) - } - Err(err) => Err(DecoderError::IoError(err)), + use super::DecoderCursor::*; + match self.cursor { + KeyVal(index, ref name) => match self.key.open_subkey_with_flags(name, DECODER_SAM) { + Ok(subkey) => { + let mut nested = Decoder::new(subkey); + self.cursor = Key(index + 1); + seed.deserialize(&mut nested) } - } - EnumeratingValues(..) => seed.deserialize(&mut *self), + Err(err) => Err(DecoderError::IoError(err)), + }, + FieldVal(..) => seed.deserialize(&mut *self), + _ => no_impl!("Wrong cursor state (field)"), } } } diff -Nru temporalio-1.3.0/vendor/winreg/src/encoder/mod.rs temporalio-1.3.0/vendor/winreg/src/encoder/mod.rs --- temporalio-1.3.0/vendor/winreg/src/encoder/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/src/encoder/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,16 +1,15 @@ -// Copyright 2017, Igor Shaula +// Copyright 2023, Igor Shaula // Licensed under the MIT License . This file // may not be copied, modified, or distributed // except according to those terms. use self::EncoderState::*; -use super::enums::*; -use super::transaction::Transaction; -use super::RegKey; +use crate::enums::*; +use crate::reg_key::RegKey; +use crate::transaction::Transaction; use std::error::Error; use std::fmt; use std::io; -use winapi::shared::minwindef::DWORD; macro_rules! emit_value { ($s:ident, $v:ident) => { @@ -71,7 +70,7 @@ state: EncoderState, } -const ENCODER_SAM: DWORD = KEY_CREATE_SUB_KEY | KEY_SET_VALUE; +const ENCODER_SAM: u32 = KEY_CREATE_SUB_KEY | KEY_SET_VALUE; impl Encoder { pub fn from_key(key: &RegKey) -> EncodeResult { diff -Nru temporalio-1.3.0/vendor/winreg/src/encoder/serialization_serde.rs temporalio-1.3.0/vendor/winreg/src/encoder/serialization_serde.rs --- temporalio-1.3.0/vendor/winreg/src/encoder/serialization_serde.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/src/encoder/serialization_serde.rs 2023-10-30 19:40:00.000000000 +0000 @@ -5,6 +5,8 @@ // except according to those terms. use super::EncoderState::*; use super::{EncodeResult, Encoder, EncoderError, ENCODER_SAM}; +use crate::enums::RegType; +use crate::RegValue; use serde::ser::*; use std::fmt; use std::mem; @@ -84,8 +86,22 @@ emit_value!(self, value) } - fn serialize_bytes(self, _value: &[u8]) -> EncodeResult { - no_impl!("serialize_bytes") + fn serialize_bytes(self, value: &[u8]) -> EncodeResult { + match mem::replace(&mut self.state, Start) { + NextKey(ref s) => { + let vec = Vec::from(value); + self.keys[self.keys.len() - 1] + .set_raw_value( + s, + &RegValue { + bytes: vec, + vtype: RegType::REG_BINARY, + }, + ) + .map_err(EncoderError::IoError) + } + Start => Err(EncoderError::NoFieldName), + } } fn serialize_none(self) -> EncodeResult { @@ -170,7 +186,7 @@ NextKey(ref s) => { // nested structure match self.keys[self.keys.len() - 1].create_subkey_transacted_with_flags( - &s, + s, &self.tr, ENCODER_SAM, ) { @@ -190,9 +206,9 @@ fn serialize_struct( self, _name: &'static str, - _len: usize, + len: usize, ) -> EncodeResult { - self.serialize_map(Some(_len)) + self.serialize_map(Some(len)) } fn serialize_struct_variant( diff -Nru temporalio-1.3.0/vendor/winreg/src/enums.rs temporalio-1.3.0/vendor/winreg/src/enums.rs --- temporalio-1.3.0/vendor/winreg/src/enums.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/src/enums.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,20 +1,16 @@ -// Copyright 2015, Igor Shaula +// Copyright 2023, Igor Shaula // Licensed under the MIT License . This file // may not be copied, modified, or distributed // except according to those terms. //! `use winreg::enums::*;` to import all needed enumerations and constants -use super::winapi; -pub use winapi::um::winnt::{ - KEY_ALL_ACCESS, KEY_CREATE_LINK, KEY_CREATE_SUB_KEY, KEY_ENUMERATE_SUB_KEYS, KEY_EXECUTE, - KEY_NOTIFY, KEY_QUERY_VALUE, KEY_READ, KEY_SET_VALUE, KEY_WOW64_32KEY, KEY_WOW64_64KEY, - KEY_WOW64_RES, KEY_WRITE, -}; -pub use winapi::um::winreg::{ +pub use windows_sys::Win32::System::Registry::{ HKEY_CLASSES_ROOT, HKEY_CURRENT_CONFIG, HKEY_CURRENT_USER, HKEY_CURRENT_USER_LOCAL_SETTINGS, HKEY_DYN_DATA, HKEY_LOCAL_MACHINE, HKEY_PERFORMANCE_DATA, HKEY_PERFORMANCE_NLSTEXT, - HKEY_PERFORMANCE_TEXT, HKEY_USERS, REG_PROCESS_APPKEY, + HKEY_PERFORMANCE_TEXT, HKEY_USERS, KEY_ALL_ACCESS, KEY_CREATE_LINK, KEY_CREATE_SUB_KEY, + KEY_ENUMERATE_SUB_KEYS, KEY_EXECUTE, KEY_NOTIFY, KEY_QUERY_VALUE, KEY_READ, KEY_SET_VALUE, + KEY_WOW64_32KEY, KEY_WOW64_64KEY, KEY_WOW64_RES, KEY_WRITE, REG_PROCESS_APPKEY, }; macro_rules! winapi_enum{ @@ -23,7 +19,7 @@ #[allow(non_camel_case_types)] #[derive(Debug,Clone,PartialEq)] pub enum $t { - $( $v = winapi::um::winnt::$v as isize ),* + $( $v = windows_sys::Win32::System::Registry::$v as isize ),* } ) } diff -Nru temporalio-1.3.0/vendor/winreg/src/lib.rs temporalio-1.3.0/vendor/winreg/src/lib.rs --- temporalio-1.3.0/vendor/winreg/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -// Copyright 2015, Igor Shaula +// Copyright 2023, Igor Shaula // Licensed under the MIT License . This file // may not be copied, modified, or distributed @@ -13,11 +13,10 @@ //!```toml,ignore //!# Cargo.toml //![dependencies] -//!winreg = "0.10" +//!winreg = "0.50" //!``` //! //!```no_run -//!extern crate winreg; //!use std::io; //!use std::path::Path; //!use winreg::enums::*; @@ -34,7 +33,7 @@ //! println!("info = {:?}", info); //! let mt = info.get_last_write_time_system(); //! println!( -//! "last_write_time as winapi::um::minwinbase::SYSTEMTIME = {}-{:02}-{:02} {:02}:{:02}:{:02}", +//! "last_write_time as windows_sys::Win32::Foundation::SYSTEMTIME = {}-{:02}-{:02} {:02}:{:02}:{:02}", //! mt.wYear, mt.wMonth, mt.wDay, mt.wHour, mt.wMinute, mt.wSecond //! ); //! @@ -88,7 +87,6 @@ //!### Iterators //! //!```no_run -//!extern crate winreg; //!use std::io; //!use winreg::RegKey; //!use winreg::enums::*; @@ -112,1032 +110,25 @@ //!} //!``` //! -#[cfg(feature = "chrono")] -extern crate chrono; -#[cfg(feature = "serialization-serde")] -extern crate serde; -extern crate winapi; -use enums::*; -use std::default::Default; -use std::ffi::OsStr; -use std::fmt; -use std::io; -use std::mem::transmute; -use std::os::windows::ffi::OsStrExt; -use std::ptr; -use std::slice; -#[cfg(feature = "transactions")] -use transaction::Transaction; -use types::{FromRegValue, ToRegValue}; -pub use winapi::shared::minwindef::HKEY; -use winapi::shared::minwindef::{BYTE, DWORD, FILETIME, LPBYTE}; -use winapi::shared::winerror; -use winapi::um::minwinbase::SYSTEMTIME; -use winapi::um::timezoneapi::FileTimeToSystemTime; -use winapi::um::winnt::{self, WCHAR}; -use winapi::um::winreg as winapi_reg; - -macro_rules! werr { - ($e:expr) => { - Err(io::Error::from_raw_os_error($e as i32)) - }; -} - -#[cfg(feature = "serialization-serde")] -mod decoder; -#[cfg(feature = "serialization-serde")] -mod encoder; -pub mod enums; -#[cfg(feature = "transactions")] -pub mod transaction; -pub mod types; - -/// Metadata returned by `RegKey::query_info` -#[derive(Debug, Default)] -pub struct RegKeyMetadata { - // pub Class: winapi::LPWSTR, - // pub ClassLen: DWORD, - pub sub_keys: DWORD, - pub max_sub_key_len: DWORD, - pub max_class_len: DWORD, - pub values: DWORD, - pub max_value_name_len: DWORD, - pub max_value_len: DWORD, - // pub SecurityDescriptor: DWORD, - pub last_write_time: FILETIME, -} - -impl RegKeyMetadata { - /// Returns `last_write_time` field as `winapi::um::minwinbase::SYSTEMTIME` - pub fn get_last_write_time_system(&self) -> SYSTEMTIME { - let mut st: SYSTEMTIME = unsafe { ::std::mem::zeroed() }; - unsafe { - FileTimeToSystemTime(&self.last_write_time, &mut st); - } - st - } - - /// Returns `last_write_time` field as `chrono::NaiveDateTime`. - /// Part of `chrono` feature. - #[cfg(feature = "chrono")] - pub fn get_last_write_time_chrono(&self) -> chrono::NaiveDateTime { - let st = self.get_last_write_time_system(); - - chrono::NaiveDate::from_ymd(st.wYear.into(), st.wMonth.into(), st.wDay.into()).and_hms( - st.wHour.into(), - st.wMinute.into(), - st.wSecond.into(), - ) - } -} - -/// Raw registry value -#[derive(PartialEq)] -pub struct RegValue { - pub bytes: Vec, - pub vtype: RegType, -} - -macro_rules! format_reg_value { - ($e:expr => $t:ident) => { - match $t::from_reg_value($e) { - Ok(val) => format!("{:?}", val), - Err(_) => return Err(fmt::Error), - } - }; -} - -impl fmt::Display for RegValue { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let f_val = match self.vtype { - REG_SZ | REG_EXPAND_SZ | REG_MULTI_SZ => format_reg_value!(self => String), - REG_DWORD => format_reg_value!(self => u32), - REG_QWORD => format_reg_value!(self => u64), - _ => format!("{:?}", self.bytes), //TODO: implement more types - }; - write!(f, "{}", f_val) - } -} - -impl fmt::Debug for RegValue { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "RegValue({:?}: {})", self.vtype, self) - } -} - -/// Handle of opened registry key -#[derive(Debug)] -pub struct RegKey { - hkey: HKEY, -} - -unsafe impl Send for RegKey {} - -impl RegKey { - /// Open one of predefined keys: - /// - /// * `HKEY_CLASSES_ROOT` - /// * `HKEY_CURRENT_USER` - /// * `HKEY_LOCAL_MACHINE` - /// * `HKEY_USERS` - /// * `HKEY_PERFORMANCE_DATA` - /// * `HKEY_PERFORMANCE_TEXT` - /// * `HKEY_PERFORMANCE_NLSTEXT` - /// * `HKEY_CURRENT_CONFIG` - /// * `HKEY_DYN_DATA` - /// * `HKEY_CURRENT_USER_LOCAL_SETTINGS` - /// - /// # Examples - /// - /// ```no_run - /// # use winreg::RegKey; - /// # use winreg::enums::*; - /// let hklm = RegKey::predef(HKEY_LOCAL_MACHINE); - /// ``` - pub const fn predef(hkey: HKEY) -> RegKey { - RegKey { hkey } - } - - /// Load a registry hive from a file as an application hive. - /// If `lock` is set to `true`, then the hive cannot be loaded again until - /// it's unloaded (i.e. all keys from it go out of scope). - /// - /// # Examples - /// - /// ```no_run - /// # use std::error::Error; - /// # use winreg::RegKey; - /// # use winreg::enums::*; - /// # fn main() -> Result<(), Box> { - /// let handle = RegKey::load_app_key("C:\\myhive.dat", false)?; - /// # Ok(()) - /// # } - /// ``` - pub fn load_app_key>(filename: N, lock: bool) -> io::Result { - let options = if lock { - winapi_reg::REG_PROCESS_APPKEY - } else { - 0 - }; - RegKey::load_app_key_with_flags(filename, enums::KEY_ALL_ACCESS, options) - } - - /// Load a registry hive from a file as an application hive with desired - /// permissions and options. If `options` is set to `REG_PROCESS_APPKEY`, - /// then the hive cannot be loaded again until it's unloaded (i.e. all keys - /// from it go out of scope). - /// # Examples - /// - /// ```no_run - /// # use std::error::Error; - /// # use winreg::RegKey; - /// # use winreg::enums::*; - /// # fn main() -> Result<(), Box> { - /// let handle = RegKey::load_app_key_with_flags("C:\\myhive.dat", KEY_READ, 0)?; - /// # Ok(()) - /// # } - /// ``` - pub fn load_app_key_with_flags>( - filename: N, - perms: winapi_reg::REGSAM, - options: DWORD, - ) -> io::Result { - let c_filename = to_utf16(filename); - let mut new_hkey: HKEY = ptr::null_mut(); - match unsafe { - winapi_reg::RegLoadAppKeyW(c_filename.as_ptr(), &mut new_hkey, perms, options, 0) - as DWORD - } { - 0 => Ok(RegKey { hkey: new_hkey }), - err => werr!(err), - } - } - - /// Return inner winapi HKEY of a key: - /// - /// # Examples - /// - /// ```no_run - /// # use std::error::Error; - /// # use winreg::RegKey; - /// # use winreg::enums::*; - /// # fn main() -> Result<(), Box> { - /// let hklm = RegKey::predef(HKEY_LOCAL_MACHINE); - /// let soft = hklm.open_subkey("SOFTWARE")?; - /// let handle = soft.raw_handle(); - /// # Ok(()) - /// # } - /// ``` - pub const fn raw_handle(&self) -> HKEY { - self.hkey - } - - /// Open subkey with `KEY_READ` permissions. - /// Will open another handle to itself if `path` is an empty string. - /// To open with different permissions use `open_subkey_with_flags`. - /// You can also use `create_subkey` to open with `KEY_ALL_ACCESS` permissions. - /// - /// # Examples - /// - /// ```no_run - /// # use std::error::Error; - /// # use winreg::RegKey; - /// # use winreg::enums::*; - /// # fn main() -> Result<(), Box> { - /// let soft = RegKey::predef(HKEY_CURRENT_USER) - /// .open_subkey("Software")?; - /// # Ok(()) - /// # } - /// ``` - pub fn open_subkey>(&self, path: P) -> io::Result { - self.open_subkey_with_flags(path, enums::KEY_READ) - } - - /// Open subkey with desired permissions. - /// Will open another handle to itself if `path` is an empty string. - /// - /// # Examples - /// - /// ```no_run - /// # use std::error::Error; - /// # use winreg::RegKey; - /// # use winreg::enums::*; - /// # fn main() -> Result<(), Box> { - /// let hklm = RegKey::predef(HKEY_LOCAL_MACHINE); - /// hklm.open_subkey_with_flags("SOFTWARE\\Microsoft", KEY_READ)?; - /// # Ok(()) - /// # } - /// ``` - pub fn open_subkey_with_flags>( - &self, - path: P, - perms: winapi_reg::REGSAM, - ) -> io::Result { - let c_path = to_utf16(path); - let mut new_hkey: HKEY = ptr::null_mut(); - match unsafe { - winapi_reg::RegOpenKeyExW(self.hkey, c_path.as_ptr(), 0, perms, &mut new_hkey) as DWORD - } { - 0 => Ok(RegKey { hkey: new_hkey }), - err => werr!(err), - } - } - - /// Part of `transactions` feature. - #[cfg(feature = "transactions")] - pub fn open_subkey_transacted>( - &self, - path: P, - t: &Transaction, - ) -> io::Result { - self.open_subkey_transacted_with_flags(path, t, winnt::KEY_READ) - } - - /// Part of `transactions` feature. - #[cfg(feature = "transactions")] - pub fn open_subkey_transacted_with_flags>( - &self, - path: P, - t: &Transaction, - perms: winapi_reg::REGSAM, - ) -> io::Result { - let c_path = to_utf16(path); - let mut new_hkey: HKEY = ptr::null_mut(); - match unsafe { - winapi_reg::RegOpenKeyTransactedW( - self.hkey, - c_path.as_ptr(), - 0, - perms, - &mut new_hkey, - t.handle, - ptr::null_mut(), - ) as DWORD - } { - 0 => Ok(RegKey { hkey: new_hkey }), - err => werr!(err), - } - } - - /// Create subkey (and all missing parent keys) - /// and open it with `KEY_ALL_ACCESS` permissions. - /// Will just open key if it already exists. - /// If succeeds returns a tuple with the created subkey and its disposition, - /// which can be `REG_CREATED_NEW_KEY` or `REG_OPENED_EXISTING_KEY`. - /// Will open another handle to itself if `path` is an empty string. - /// To create with different permissions use `create_subkey_with_flags`. - /// - /// # Examples - /// - /// ```no_run - /// # use std::error::Error; - /// # use winreg::RegKey; - /// use winreg::enums::*; - /// # fn main() -> Result<(), Box> { - /// let hkcu = RegKey::predef(HKEY_CURRENT_USER); - /// let (settings, disp) = hkcu.create_subkey("Software\\MyProduct\\Settings")?; - /// - /// match disp { - /// REG_CREATED_NEW_KEY => println!("A new key has been created"), - /// REG_OPENED_EXISTING_KEY => println!("An existing key has been opened") - /// } - /// # Ok(()) - /// # } - /// ``` - pub fn create_subkey>(&self, path: P) -> io::Result<(RegKey, RegDisposition)> { - self.create_subkey_with_flags(path, enums::KEY_ALL_ACCESS) - } - - pub fn create_subkey_with_flags>( - &self, - path: P, - perms: winapi_reg::REGSAM, - ) -> io::Result<(RegKey, RegDisposition)> { - let c_path = to_utf16(path); - let mut new_hkey: HKEY = ptr::null_mut(); - let mut disp_buf: DWORD = 0; - match unsafe { - winapi_reg::RegCreateKeyExW( - self.hkey, - c_path.as_ptr(), - 0, - ptr::null_mut(), - winnt::REG_OPTION_NON_VOLATILE, - perms, - ptr::null_mut(), - &mut new_hkey, - &mut disp_buf, - ) - } { - 0 => { - let disp: RegDisposition = unsafe { transmute(disp_buf as u8) }; - Ok((RegKey { hkey: new_hkey }, disp)) - } - err => werr!(err), - } - } - - /// Part of `transactions` feature. - #[cfg(feature = "transactions")] - pub fn create_subkey_transacted>( - &self, - path: P, - t: &Transaction, - ) -> io::Result<(RegKey, RegDisposition)> { - self.create_subkey_transacted_with_flags(path, t, winnt::KEY_ALL_ACCESS) - } - - /// Part of `transactions` feature. - #[cfg(feature = "transactions")] - pub fn create_subkey_transacted_with_flags>( - &self, - path: P, - t: &Transaction, - perms: winapi_reg::REGSAM, - ) -> io::Result<(RegKey, RegDisposition)> { - let c_path = to_utf16(path); - let mut new_hkey: HKEY = ptr::null_mut(); - let mut disp_buf: DWORD = 0; - match unsafe { - winapi_reg::RegCreateKeyTransactedW( - self.hkey, - c_path.as_ptr(), - 0, - ptr::null_mut(), - winnt::REG_OPTION_NON_VOLATILE, - perms, - ptr::null_mut(), - &mut new_hkey, - &mut disp_buf, - t.handle, - ptr::null_mut(), - ) as DWORD - } { - 0 => { - let disp: RegDisposition = unsafe { transmute(disp_buf as u8) }; - Ok((RegKey { hkey: new_hkey }, disp)) - } - err => werr!(err), - } - } - - /// Copy all the values and subkeys from `path` to `dest` key. - /// WIll copy the content of `self` if `path` is an empty string. - /// - /// # Examples - /// - /// ```no_run - /// # use std::error::Error; - /// # use winreg::RegKey; - /// # use winreg::enums::*; - /// # fn main() -> Result<(), Box> { - /// let hkcu = RegKey::predef(HKEY_CURRENT_USER); - /// let src = hkcu.open_subkey_with_flags("Software\\MyProduct", KEY_READ)?; - /// let (dst, dst_disp) = hkcu.create_subkey("Software\\MyProduct\\Section2")?; - /// src.copy_tree("Section1", &dst)?; - /// # Ok(()) - /// # } - /// ``` - pub fn copy_tree>(&self, path: P, dest: &RegKey) -> io::Result<()> { - let c_path = to_utf16(path); - match unsafe { winapi_reg::RegCopyTreeW(self.hkey, c_path.as_ptr(), dest.hkey) } { - 0 => Ok(()), - err => werr!(err), - } - } - - pub fn query_info(&self) -> io::Result { - let mut info: RegKeyMetadata = Default::default(); - match unsafe { - winapi_reg::RegQueryInfoKeyW( - self.hkey, - ptr::null_mut(), // Class: winapi::LPWSTR, - ptr::null_mut(), // ClassLen: DWORD, - ptr::null_mut(), // Reserved - &mut info.sub_keys, - &mut info.max_sub_key_len, - &mut info.max_class_len, - &mut info.values, - &mut info.max_value_name_len, - &mut info.max_value_len, - ptr::null_mut(), // lpcbSecurityDescriptor: winapi::LPDWORD, - &mut info.last_write_time, - ) as DWORD - } { - 0 => Ok(info), - err => werr!(err), - } - } - - /// Return an iterator over subkeys names. - /// - /// # Examples - /// - /// ```no_run - /// # use winreg::RegKey; - /// # use winreg::enums::*; - /// println!("File extensions, registered in this system:"); - /// for i in RegKey::predef(HKEY_CLASSES_ROOT) - /// .enum_keys().map(|x| x.unwrap()) - /// .filter(|x| x.starts_with(".")) - /// { - /// println!("{}", i); - /// } - /// ``` - pub const fn enum_keys(&self) -> EnumKeys { - EnumKeys { - key: self, - index: 0, - } - } - - /// Return an iterator over values. - /// - /// # Examples - /// - /// ```no_run - /// # use std::error::Error; - /// # use winreg::RegKey; - /// # use winreg::enums::*; - /// # fn main() -> Result<(), Box> { - /// let system = RegKey::predef(HKEY_LOCAL_MACHINE) - /// .open_subkey_with_flags("HARDWARE\\DESCRIPTION\\System", KEY_READ)?; - /// for (name, value) in system.enum_values().map(|x| x.unwrap()) { - /// println!("{} = {:?}", name, value); - /// } - /// # Ok(()) - /// # } - /// ``` - pub const fn enum_values(&self) -> EnumValues { - EnumValues { - key: self, - index: 0, - } +cfg_if::cfg_if! { + if #[cfg(not(windows))] { + compile_error!("OS not supported. if your application is multi-platform, use `[target.'cfg(windows)'.dependencies] winreg = \"...\"`"); + } else { + pub use crate::reg_key::{EnumKeys, EnumValues, RegKey, HKEY}; + pub use crate::reg_key_metadata::RegKeyMetadata; + pub use crate::reg_value::RegValue; + + mod common; + #[cfg(feature = "serialization-serde")] + mod decoder; + #[cfg(feature = "serialization-serde")] + mod encoder; + pub mod enums; + pub mod reg_key; + pub mod reg_key_metadata; + pub mod reg_value; + #[cfg(feature = "transactions")] + pub mod transaction; + pub mod types; } - - /// Delete key. Key names are not case sensitive. - /// Cannot delete if it has subkeys. - /// Use `delete_subkey_all` for that. - /// - /// # Examples - /// - /// ```no_run - /// # use std::error::Error; - /// # use winreg::RegKey; - /// # use winreg::enums::*; - /// # fn main() -> Result<(), Box> { - /// RegKey::predef(HKEY_CURRENT_USER) - /// .delete_subkey(r"Software\MyProduct\History")?; - /// # Ok(()) - /// # } - /// ``` - pub fn delete_subkey>(&self, path: P) -> io::Result<()> { - self.delete_subkey_with_flags(path, 0) - } - - /// Delete key from the desired platform-specific view of the registry. - /// Key names are not case sensitive. - /// - /// # Examples - /// ```no_run - /// # use std::error::Error; - /// # use winreg::RegKey; - /// # use winreg::enums::*; - /// # fn main() -> Result<(), Box> { - /// // delete the key from the 32-bit registry view - /// RegKey::predef(HKEY_LOCAL_MACHINE) - /// .delete_subkey_with_flags(r"Software\MyProduct\History", KEY_WOW64_32KEY)?; - /// # Ok(()) - /// # } - /// ``` - pub fn delete_subkey_with_flags>( - &self, - path: P, - perms: winapi_reg::REGSAM, - ) -> io::Result<()> { - let c_path = to_utf16(path); - match unsafe { - winapi_reg::RegDeleteKeyExW( - self.hkey, - c_path.as_ptr(), // This parameter cannot be NULL. - perms, - 0, - ) - } { - 0 => Ok(()), - err => werr!(err), - } - } - - /// Part of `transactions` feature. - #[cfg(feature = "transactions")] - pub fn delete_subkey_transacted>( - &self, - path: P, - t: &Transaction, - ) -> io::Result<()> { - self.delete_subkey_transacted_with_flags(path, t, 0) - } - - /// Part of `transactions` feature. - #[cfg(feature = "transactions")] - pub fn delete_subkey_transacted_with_flags>( - &self, - path: P, - t: &Transaction, - perms: winapi_reg::REGSAM, - ) -> io::Result<()> { - let c_path = to_utf16(path); - match unsafe { - winapi_reg::RegDeleteKeyTransactedW( - self.hkey, - c_path.as_ptr(), // This parameter cannot be NULL. - perms, - 0, - t.handle, - ptr::null_mut(), - ) - } { - 0 => Ok(()), - err => werr!(err), - } - } - - /// Recursively delete subkey with all its subkeys and values. - /// If `path` is an empty string, the subkeys and values of this key are deleted. - /// - /// # Examples - /// - /// ```no_run - /// # use std::error::Error; - /// # use winreg::RegKey; - /// # use winreg::enums::*; - /// # fn main() -> Result<(), Box> { - /// RegKey::predef(HKEY_CURRENT_USER) - /// .delete_subkey_all("Software\\MyProduct")?; - /// # Ok(()) - /// # } - /// ``` - pub fn delete_subkey_all>(&self, path: P) -> io::Result<()> { - let c_path; - let path_ptr = if path.as_ref().is_empty() { - ptr::null() - } else { - c_path = to_utf16(path); - c_path.as_ptr() - }; - match unsafe { - winapi_reg::RegDeleteTreeW( - self.hkey, - path_ptr, //If this parameter is NULL, the subkeys and values of this key are deleted. - ) as DWORD - } { - 0 => Ok(()), - err => werr!(err), - } - } - - /// Get a value from registry and seamlessly convert it to the specified rust type - /// with `FromRegValue` implemented (currently `String`, `u32` and `u64`). - /// Will get the `Default` value if `name` is an empty string. - /// - /// # Examples - /// - /// ```no_run - /// # use std::error::Error; - /// # use winreg::RegKey; - /// # use winreg::enums::*; - /// # fn main() -> Result<(), Box> { - /// let hkcu = RegKey::predef(HKEY_CURRENT_USER); - /// let settings = hkcu.open_subkey("Software\\MyProduct\\Settings")?; - /// let server: String = settings.get_value("server")?; - /// let port: u32 = settings.get_value("port")?; - /// # Ok(()) - /// # } - /// ``` - pub fn get_value>(&self, name: N) -> io::Result { - match self.get_raw_value(name) { - Ok(ref val) => FromRegValue::from_reg_value(val), - Err(err) => Err(err), - } - } - - /// Get raw bytes from registry value. - /// Will get the `Default` value if `name` is an empty string. - /// - /// # Examples - /// - /// ```no_run - /// # use std::error::Error; - /// # use winreg::RegKey; - /// # use winreg::enums::*; - /// # fn main() -> Result<(), Box> { - /// let hkcu = RegKey::predef(HKEY_CURRENT_USER); - /// let settings = hkcu.open_subkey("Software\\MyProduct\\Settings")?; - /// let data = settings.get_raw_value("data")?; - /// println!("Bytes: {:?}", data.bytes); - /// # Ok(()) - /// # } - /// ``` - pub fn get_raw_value>(&self, name: N) -> io::Result { - let c_name = to_utf16(name); - let mut buf_len: DWORD = 2048; - let mut buf_type: DWORD = 0; - let mut buf: Vec = Vec::with_capacity(buf_len as usize); - loop { - match unsafe { - winapi_reg::RegQueryValueExW( - self.hkey, - c_name.as_ptr() as *const u16, - ptr::null_mut(), - &mut buf_type, - buf.as_mut_ptr() as LPBYTE, - &mut buf_len, - ) as DWORD - } { - 0 => { - unsafe { - buf.set_len(buf_len as usize); - } - // minimal check before transmute to RegType - if buf_type > winnt::REG_QWORD { - return werr!(winerror::ERROR_BAD_FILE_TYPE); - } - let t: RegType = unsafe { transmute(buf_type as u8) }; - return Ok(RegValue { - bytes: buf, - vtype: t, - }); - } - winerror::ERROR_MORE_DATA => { - buf.reserve(buf_len as usize); - } - err => return werr!(err), - } - } - } - - /// Seamlessly convert a value from a rust type and write it to the registry value - /// with `ToRegValue` trait implemented (currently `String`, `&str`, `u32` and `u64`). - /// Will set the `Default` value if `name` is an empty string. - /// - /// # Examples - /// - /// ```no_run - /// # use std::error::Error; - /// # use winreg::RegKey; - /// # use winreg::enums::*; - /// # fn main() -> Result<(), Box> { - /// let hkcu = RegKey::predef(HKEY_CURRENT_USER); - /// let (settings, disp) = hkcu.create_subkey("Software\\MyProduct\\Settings")?; - /// settings.set_value("server", &"www.example.com")?; - /// settings.set_value("port", &8080u32)?; - /// # Ok(()) - /// # } - /// ``` - pub fn set_value>(&self, name: N, value: &T) -> io::Result<()> { - self.set_raw_value(name, &value.to_reg_value()) - } - - /// Write raw bytes from `RegValue` struct to a registry value. - /// Will set the `Default` value if `name` is an empty string. - /// - /// # Examples - /// - /// ```no_run - /// # use std::error::Error; - /// use winreg::{RegKey, RegValue}; - /// use winreg::enums::*; - /// # fn main() -> Result<(), Box> { - /// let hkcu = RegKey::predef(HKEY_CURRENT_USER); - /// let settings = hkcu.open_subkey("Software\\MyProduct\\Settings")?; - /// let bytes: Vec = vec![1, 2, 3, 5, 8, 13, 21, 34, 55, 89]; - /// let data = RegValue{ vtype: REG_BINARY, bytes: bytes}; - /// settings.set_raw_value("data", &data)?; - /// println!("Bytes: {:?}", data.bytes); - /// # Ok(()) - /// # } - /// ``` - pub fn set_raw_value>(&self, name: N, value: &RegValue) -> io::Result<()> { - let c_name = to_utf16(name); - let t = value.vtype.clone() as DWORD; - match unsafe { - winapi_reg::RegSetValueExW( - self.hkey, - c_name.as_ptr(), - 0, - t, - value.bytes.as_ptr() as *const BYTE, - value.bytes.len() as u32, - ) as DWORD - } { - 0 => Ok(()), - err => werr!(err), - } - } - - /// Delete specified value from registry. - /// Will delete the `Default` value if `name` is an empty string. - /// - /// # Examples - /// - /// ```no_run - /// # use std::error::Error; - /// # use winreg::RegKey; - /// # use winreg::enums::*; - /// # fn main() -> Result<(), Box> { - /// let hkcu = RegKey::predef(HKEY_CURRENT_USER); - /// let settings = hkcu.open_subkey("Software\\MyProduct\\Settings")?; - /// settings.delete_value("data")?; - /// # Ok(()) - /// # } - /// ``` - pub fn delete_value>(&self, name: N) -> io::Result<()> { - let c_name = to_utf16(name); - match unsafe { winapi_reg::RegDeleteValueW(self.hkey, c_name.as_ptr()) as DWORD } { - 0 => Ok(()), - err => werr!(err), - } - } - - /// Save `Encodable` type to a registry key. - /// Part of `serialization-serde` feature. - /// - /// # Examples - /// - /// ```no_run - /// # use std::error::Error; - /// #[macro_use] - /// extern crate serde_derive; - /// extern crate winreg; - /// use winreg::RegKey; - /// use winreg::enums::*; - /// - /// #[derive(Serialize)] - /// struct Rectangle{ - /// x: u32, - /// y: u32, - /// w: u32, - /// h: u32, - /// } - /// - /// #[derive(Serialize)] - /// struct Settings{ - /// current_dir: String, - /// window_pos: Rectangle, - /// show_in_tray: bool, - /// } - /// - /// # fn main() -> Result<(), Box> { - /// let s: Settings = Settings{ - /// current_dir: "C:\\".to_owned(), - /// window_pos: Rectangle{ x:200, y: 100, w: 800, h: 500 }, - /// show_in_tray: false, - /// }; - /// let s_key = RegKey::predef(HKEY_CURRENT_USER) - /// .open_subkey("Software\\MyProduct\\Settings")?; - /// s_key.encode(&s)?; - /// # Ok(()) - /// # } - /// ``` - #[cfg(feature = "serialization-serde")] - pub fn encode(&self, value: &T) -> encoder::EncodeResult<()> { - let mut encoder = encoder::Encoder::from_key(self)?; - value.serialize(&mut encoder)?; - encoder.commit() - } - - /// Load `Decodable` type from a registry key. - /// Part of `serialization-serde` feature. - /// - /// # Examples - /// - /// ```no_run - /// # use std::error::Error; - /// #[macro_use] - /// extern crate serde_derive; - /// extern crate winreg; - /// use winreg::RegKey; - /// use winreg::enums::*; - /// - /// #[derive(Deserialize)] - /// struct Rectangle{ - /// x: u32, - /// y: u32, - /// w: u32, - /// h: u32, - /// } - /// - /// #[derive(Deserialize)] - /// struct Settings{ - /// current_dir: String, - /// window_pos: Rectangle, - /// show_in_tray: bool, - /// } - /// - /// # fn main() -> Result<(), Box> { - /// let s_key = RegKey::predef(HKEY_CURRENT_USER) - /// .open_subkey("Software\\MyProduct\\Settings")?; - /// let s: Settings = s_key.decode()?; - /// # Ok(()) - /// # } - /// ``` - #[cfg(feature = "serialization-serde")] - pub fn decode<'de, T: serde::Deserialize<'de>>(&self) -> decoder::DecodeResult { - let mut decoder = decoder::Decoder::from_key(self)?; - T::deserialize(&mut decoder) - } - - fn close_(&mut self) -> io::Result<()> { - // don't try to close predefined keys - if self.hkey >= enums::HKEY_CLASSES_ROOT { - return Ok(()); - }; - match unsafe { winapi_reg::RegCloseKey(self.hkey) as DWORD } { - 0 => Ok(()), - err => werr!(err), - } - } - - fn enum_key(&self, index: DWORD) -> Option> { - let mut name_len = 2048; - #[allow(clippy::unnecessary_cast)] - let mut name = [0 as WCHAR; 2048]; - match unsafe { - winapi_reg::RegEnumKeyExW( - self.hkey, - index, - name.as_mut_ptr(), - &mut name_len, - ptr::null_mut(), // reserved - ptr::null_mut(), // lpClass: LPWSTR, - ptr::null_mut(), // lpcClass: LPDWORD, - ptr::null_mut(), // lpftLastWriteTime: PFILETIME, - ) as DWORD - } { - 0 => match String::from_utf16(&name[..name_len as usize]) { - Ok(s) => Some(Ok(s)), - Err(_) => Some(werr!(winerror::ERROR_INVALID_BLOCK)), - }, - winerror::ERROR_NO_MORE_ITEMS => None, - err => Some(werr!(err)), - } - } - - fn enum_value(&self, index: DWORD) -> Option> { - let mut name_len = 2048; - #[allow(clippy::unnecessary_cast)] - let mut name = [0 as WCHAR; 2048]; - - let mut buf_len: DWORD = 2048; - let mut buf_type: DWORD = 0; - let mut buf: Vec = Vec::with_capacity(buf_len as usize); - loop { - match unsafe { - winapi_reg::RegEnumValueW( - self.hkey, - index, - name.as_mut_ptr(), - &mut name_len, - ptr::null_mut(), // reserved - &mut buf_type, - buf.as_mut_ptr() as LPBYTE, - &mut buf_len, - ) as DWORD - } { - 0 => { - let name = match String::from_utf16(&name[..name_len as usize]) { - Ok(s) => s, - Err(_) => return Some(werr!(winerror::ERROR_INVALID_DATA)), - }; - unsafe { - buf.set_len(buf_len as usize); - } - // minimal check before transmute to RegType - if buf_type > winnt::REG_QWORD { - return Some(werr!(winerror::ERROR_BAD_FILE_TYPE)); - } - let t: RegType = unsafe { transmute(buf_type as u8) }; - let value = RegValue { - bytes: buf, - vtype: t, - }; - return Some(Ok((name, value))); - } - winerror::ERROR_MORE_DATA => { - name_len += 1; //for NULL char - buf.reserve(buf_len as usize); - } - winerror::ERROR_NO_MORE_ITEMS => return None, - err => return Some(werr!(err)), - } - } - } -} - -impl Drop for RegKey { - fn drop(&mut self) { - self.close_().unwrap_or(()); - } -} - -/// Iterator over subkeys names -pub struct EnumKeys<'key> { - key: &'key RegKey, - index: DWORD, -} - -impl<'key> Iterator for EnumKeys<'key> { - type Item = io::Result; - - fn next(&mut self) -> Option> { - match self.key.enum_key(self.index) { - v @ Some(_) => { - self.index += 1; - v - } - e @ None => e, - } - } - - fn nth(&mut self, n: usize) -> Option { - self.index += n as DWORD; - self.next() - } -} - -/// Iterator over values -pub struct EnumValues<'key> { - key: &'key RegKey, - index: DWORD, -} - -impl<'key> Iterator for EnumValues<'key> { - type Item = io::Result<(String, RegValue)>; - - fn next(&mut self) -> Option> { - match self.key.enum_value(self.index) { - v @ Some(_) => { - self.index += 1; - v - } - e @ None => e, - } - } - - fn nth(&mut self, n: usize) -> Option { - self.index += n as DWORD; - self.next() - } -} - -fn to_utf16>(s: P) -> Vec { - s.as_ref() - .encode_wide() - .chain(Some(0).into_iter()) - .collect() -} - -fn v16_to_v8(v: &[u16]) -> Vec { - unsafe { slice::from_raw_parts(v.as_ptr() as *const u8, v.len() * 2).to_vec() } } diff -Nru temporalio-1.3.0/vendor/winreg/src/reg_key_metadata.rs temporalio-1.3.0/vendor/winreg/src/reg_key_metadata.rs --- temporalio-1.3.0/vendor/winreg/src/reg_key_metadata.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/src/reg_key_metadata.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,76 @@ +// Copyright 2023, Igor Shaula +// Licensed under the MIT License . This file +// may not be copied, modified, or distributed +// except according to those terms. +use std::fmt; +use std::ops::Deref; +use windows_sys::Win32::Foundation::FILETIME; +use windows_sys::Win32::Foundation::SYSTEMTIME; +use windows_sys::Win32::System::Time::FileTimeToSystemTime; + +pub struct FileTime(pub(crate) FILETIME); + +impl Default for FileTime { + fn default() -> Self { + Self(FILETIME { + dwLowDateTime: 0, + dwHighDateTime: 0, + }) + } +} + +impl fmt::Debug for FileTime { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("FILETIME") + .field("dwLowDateTime", &self.dwLowDateTime) + .field("dwHighDateTime", &self.dwHighDateTime) + .finish() + } +} + +impl Deref for FileTime { + type Target = FILETIME; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +/// Metadata returned by `RegKey::query_info` +#[derive(Debug, Default)] +pub struct RegKeyMetadata { + // pub Class: winapi::LPWSTR, + // pub ClassLen: u32, + pub sub_keys: u32, + pub max_sub_key_len: u32, + pub max_class_len: u32, + pub values: u32, + pub max_value_name_len: u32, + pub max_value_len: u32, + // pub SecurityDescriptor: u32, + pub last_write_time: FileTime, +} + +impl RegKeyMetadata { + /// Returns `last_write_time` field as `windows_sys::Win32::Foundation::SYSTEMTIME` + pub fn get_last_write_time_system(&self) -> SYSTEMTIME { + let mut st: SYSTEMTIME = unsafe { ::std::mem::zeroed() }; + unsafe { + FileTimeToSystemTime(&self.last_write_time.0, &mut st); + } + st + } + + /// Returns `last_write_time` field as `chrono::NaiveDateTime`. + /// Part of `chrono` feature. + #[cfg(feature = "chrono")] + pub fn get_last_write_time_chrono(&self) -> chrono::NaiveDateTime { + let st = self.get_last_write_time_system(); + + chrono::NaiveDate::from_ymd_opt(st.wYear.into(), st.wMonth.into(), st.wDay.into()) + .expect("out-of-range date, invalid month and/or day") + .and_hms_opt(st.wHour.into(), st.wMinute.into(), st.wSecond.into()) + .expect("invalid hour, minute and/or second") + } +} diff -Nru temporalio-1.3.0/vendor/winreg/src/reg_key.rs temporalio-1.3.0/vendor/winreg/src/reg_key.rs --- temporalio-1.3.0/vendor/winreg/src/reg_key.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/src/reg_key.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,923 @@ +// Copyright 2023, Igor Shaula +// Licensed under the MIT License . This file +// may not be copied, modified, or distributed +// except according to those terms. +use crate::common::*; +use crate::enums::{self, *}; +use crate::reg_key_metadata::RegKeyMetadata; +use crate::reg_value::RegValue; +#[cfg(feature = "transactions")] +use crate::transaction::Transaction; +use crate::types::{FromRegValue, ToRegValue}; +use std::default::Default; +use std::ffi::OsStr; +use std::io; +use std::mem::transmute; +use std::ptr; +use windows_sys::Win32::Foundation; +use windows_sys::Win32::System::Registry; +pub use windows_sys::Win32::System::Registry::HKEY; + +/// Handle of opened registry key +#[derive(Debug)] +pub struct RegKey { + hkey: HKEY, +} + +unsafe impl Send for RegKey {} + +impl RegKey { + /// Open one of predefined keys: + /// + /// * `HKEY_CLASSES_ROOT` + /// * `HKEY_CURRENT_USER` + /// * `HKEY_LOCAL_MACHINE` + /// * `HKEY_USERS` + /// * `HKEY_PERFORMANCE_DATA` + /// * `HKEY_PERFORMANCE_TEXT` + /// * `HKEY_PERFORMANCE_NLSTEXT` + /// * `HKEY_CURRENT_CONFIG` + /// * `HKEY_DYN_DATA` + /// * `HKEY_CURRENT_USER_LOCAL_SETTINGS` + /// + /// # Examples + /// + /// ```no_run + /// # use winreg::RegKey; + /// # use winreg::enums::*; + /// let hklm = RegKey::predef(HKEY_LOCAL_MACHINE); + /// ``` + pub const fn predef(hkey: HKEY) -> RegKey { + RegKey { hkey } + } + + /// Load a registry hive from a file as an application hive. + /// If `lock` is set to `true`, then the hive cannot be loaded again until + /// it's unloaded (i.e. all keys from it go out of scope). + /// + /// # Examples + /// + /// ```no_run + /// # use std::error::Error; + /// # use winreg::RegKey; + /// # use winreg::enums::*; + /// # fn main() -> Result<(), Box> { + /// let handle = RegKey::load_app_key("C:\\myhive.dat", false)?; + /// # Ok(()) + /// # } + /// ``` + pub fn load_app_key>(filename: N, lock: bool) -> io::Result { + let options = if lock { + Registry::REG_PROCESS_APPKEY + } else { + 0 + }; + RegKey::load_app_key_with_flags(filename, enums::KEY_ALL_ACCESS, options) + } + + /// Load a registry hive from a file as an application hive with desired + /// permissions and options. If `options` is set to `REG_PROCESS_APPKEY`, + /// then the hive cannot be loaded again until it's unloaded (i.e. all keys + /// from it go out of scope). + /// # Examples + /// + /// ```no_run + /// # use std::error::Error; + /// # use winreg::RegKey; + /// # use winreg::enums::*; + /// # fn main() -> Result<(), Box> { + /// let handle = RegKey::load_app_key_with_flags("C:\\myhive.dat", KEY_READ, 0)?; + /// # Ok(()) + /// # } + /// ``` + pub fn load_app_key_with_flags>( + filename: N, + perms: Registry::REG_SAM_FLAGS, + options: u32, + ) -> io::Result { + let c_filename = to_utf16(filename); + let mut new_hkey: HKEY = 0; + match unsafe { + Registry::RegLoadAppKeyW(c_filename.as_ptr(), &mut new_hkey, perms, options, 0) + } { + 0 => Ok(RegKey { hkey: new_hkey }), + err => werr!(err), + } + } + + /// Return inner winapi HKEY of a key: + /// + /// # Examples + /// + /// ```no_run + /// # use std::error::Error; + /// # use winreg::RegKey; + /// # use winreg::enums::*; + /// # fn main() -> Result<(), Box> { + /// let hklm = RegKey::predef(HKEY_LOCAL_MACHINE); + /// let soft = hklm.open_subkey("SOFTWARE")?; + /// let handle = soft.raw_handle(); + /// # Ok(()) + /// # } + /// ``` + pub const fn raw_handle(&self) -> HKEY { + self.hkey + } + + /// Open subkey with `KEY_READ` permissions. + /// Will open another handle to itself if `path` is an empty string. + /// To open with different permissions use `open_subkey_with_flags`. + /// You can also use `create_subkey` to open with `KEY_ALL_ACCESS` permissions. + /// + /// # Examples + /// + /// ```no_run + /// # use std::error::Error; + /// # use winreg::RegKey; + /// # use winreg::enums::*; + /// # fn main() -> Result<(), Box> { + /// let soft = RegKey::predef(HKEY_CURRENT_USER) + /// .open_subkey("Software")?; + /// # Ok(()) + /// # } + /// ``` + pub fn open_subkey>(&self, path: P) -> io::Result { + self.open_subkey_with_flags(path, enums::KEY_READ) + } + + /// Open subkey with desired permissions. + /// Will open another handle to itself if `path` is an empty string. + /// + /// # Examples + /// + /// ```no_run + /// # use std::error::Error; + /// # use winreg::RegKey; + /// # use winreg::enums::*; + /// # fn main() -> Result<(), Box> { + /// let hklm = RegKey::predef(HKEY_LOCAL_MACHINE); + /// hklm.open_subkey_with_flags("SOFTWARE\\Microsoft", KEY_READ)?; + /// # Ok(()) + /// # } + /// ``` + pub fn open_subkey_with_flags>( + &self, + path: P, + perms: Registry::REG_SAM_FLAGS, + ) -> io::Result { + let c_path = to_utf16(path); + let mut new_hkey: HKEY = 0; + match unsafe { + Registry::RegOpenKeyExW(self.hkey, c_path.as_ptr(), 0, perms, &mut new_hkey) + } { + 0 => Ok(RegKey { hkey: new_hkey }), + err => werr!(err), + } + } + + /// Part of `transactions` feature. + #[cfg(feature = "transactions")] + pub fn open_subkey_transacted>( + &self, + path: P, + t: &Transaction, + ) -> io::Result { + self.open_subkey_transacted_with_flags(path, t, Registry::KEY_READ) + } + + /// Part of `transactions` feature. + #[cfg(feature = "transactions")] + pub fn open_subkey_transacted_with_flags>( + &self, + path: P, + t: &Transaction, + perms: Registry::REG_SAM_FLAGS, + ) -> io::Result { + let c_path = to_utf16(path); + let mut new_hkey: HKEY = 0; + match unsafe { + Registry::RegOpenKeyTransactedW( + self.hkey, + c_path.as_ptr(), + 0, + perms, + &mut new_hkey, + t.handle, + ptr::null_mut(), + ) + } { + 0 => Ok(RegKey { hkey: new_hkey }), + err => werr!(err), + } + } + + /// Create subkey (and all missing parent keys) + /// and open it with `KEY_ALL_ACCESS` permissions. + /// Will just open key if it already exists. + /// If succeeds returns a tuple with the created subkey and its disposition, + /// which can be `REG_CREATED_NEW_KEY` or `REG_OPENED_EXISTING_KEY`. + /// Will open another handle to itself if `path` is an empty string. + /// To create with different permissions use `create_subkey_with_flags`. + /// + /// # Examples + /// + /// ```no_run + /// # use std::error::Error; + /// # use winreg::RegKey; + /// use winreg::enums::*; + /// # fn main() -> Result<(), Box> { + /// let hkcu = RegKey::predef(HKEY_CURRENT_USER); + /// let (settings, disp) = hkcu.create_subkey("Software\\MyProduct\\Settings")?; + /// + /// match disp { + /// REG_CREATED_NEW_KEY => println!("A new key has been created"), + /// REG_OPENED_EXISTING_KEY => println!("An existing key has been opened") + /// } + /// # Ok(()) + /// # } + /// ``` + pub fn create_subkey>(&self, path: P) -> io::Result<(RegKey, RegDisposition)> { + self.create_subkey_with_flags(path, enums::KEY_ALL_ACCESS) + } + + pub fn create_subkey_with_flags>( + &self, + path: P, + perms: Registry::REG_SAM_FLAGS, + ) -> io::Result<(RegKey, RegDisposition)> { + let c_path = to_utf16(path); + let mut new_hkey: HKEY = 0; + let mut disp_buf: u32 = 0; + match unsafe { + Registry::RegCreateKeyExW( + self.hkey, + c_path.as_ptr(), + 0, + ptr::null_mut(), + Registry::REG_OPTION_NON_VOLATILE, + perms, + ptr::null_mut(), + &mut new_hkey, + &mut disp_buf, + ) + } { + 0 => { + let disp: RegDisposition = unsafe { transmute(disp_buf as u8) }; + Ok((RegKey { hkey: new_hkey }, disp)) + } + err => werr!(err), + } + } + + /// Part of `transactions` feature. + #[cfg(feature = "transactions")] + pub fn create_subkey_transacted>( + &self, + path: P, + t: &Transaction, + ) -> io::Result<(RegKey, RegDisposition)> { + self.create_subkey_transacted_with_flags(path, t, Registry::KEY_ALL_ACCESS) + } + + /// Part of `transactions` feature. + #[cfg(feature = "transactions")] + pub fn create_subkey_transacted_with_flags>( + &self, + path: P, + t: &Transaction, + perms: Registry::REG_SAM_FLAGS, + ) -> io::Result<(RegKey, RegDisposition)> { + let c_path = to_utf16(path); + let mut new_hkey: HKEY = 0; + let mut disp_buf: u32 = 0; + match unsafe { + Registry::RegCreateKeyTransactedW( + self.hkey, + c_path.as_ptr(), + 0, + ptr::null_mut(), + Registry::REG_OPTION_NON_VOLATILE, + perms, + ptr::null_mut(), + &mut new_hkey, + &mut disp_buf, + t.handle, + ptr::null_mut(), + ) + } { + 0 => { + let disp: RegDisposition = unsafe { transmute(disp_buf as u8) }; + Ok((RegKey { hkey: new_hkey }, disp)) + } + err => werr!(err), + } + } + + /// Copy all the values and subkeys from `path` to `dest` key. + /// Will copy the content of `self` if `path` is an empty string. + /// + /// # Examples + /// + /// ```no_run + /// # use std::error::Error; + /// # use winreg::RegKey; + /// # use winreg::enums::*; + /// # fn main() -> Result<(), Box> { + /// let hkcu = RegKey::predef(HKEY_CURRENT_USER); + /// let src = hkcu.open_subkey_with_flags("Software\\MyProduct", KEY_READ)?; + /// let (dst, dst_disp) = hkcu.create_subkey("Software\\MyProduct\\Section2")?; + /// src.copy_tree("Section1", &dst)?; + /// # Ok(()) + /// # } + /// ``` + pub fn copy_tree>(&self, path: P, dest: &RegKey) -> io::Result<()> { + let c_path = to_utf16(path); + match unsafe { Registry::RegCopyTreeW(self.hkey, c_path.as_ptr(), dest.hkey) } { + 0 => Ok(()), + err => werr!(err), + } + } + + pub fn query_info(&self) -> io::Result { + let mut info: RegKeyMetadata = RegKeyMetadata::default(); + match unsafe { + Registry::RegQueryInfoKeyW( + self.hkey, + ptr::null_mut(), // Class: winapi::LPWSTR, + ptr::null_mut(), // ClassLen: u32, + ptr::null_mut(), // Reserved + &mut info.sub_keys, + &mut info.max_sub_key_len, + &mut info.max_class_len, + &mut info.values, + &mut info.max_value_name_len, + &mut info.max_value_len, + ptr::null_mut(), // lpcbSecurityDescriptor: winapi::LPDWORD, + &mut info.last_write_time.0, + ) + } { + 0 => Ok(info), + err => werr!(err), + } + } + + /// Return an iterator over subkeys names. + /// + /// # Examples + /// + /// ```no_run + /// # use winreg::RegKey; + /// # use winreg::enums::*; + /// println!("File extensions, registered in this system:"); + /// for i in RegKey::predef(HKEY_CLASSES_ROOT) + /// .enum_keys().map(|x| x.unwrap()) + /// .filter(|x| x.starts_with(".")) + /// { + /// println!("{}", i); + /// } + /// ``` + pub const fn enum_keys(&self) -> EnumKeys { + EnumKeys { + key: self, + index: 0, + } + } + + /// Return an iterator over values. + /// + /// # Examples + /// + /// ```no_run + /// # use std::error::Error; + /// # use winreg::RegKey; + /// # use winreg::enums::*; + /// # fn main() -> Result<(), Box> { + /// let system = RegKey::predef(HKEY_LOCAL_MACHINE) + /// .open_subkey_with_flags("HARDWARE\\DESCRIPTION\\System", KEY_READ)?; + /// for (name, value) in system.enum_values().map(|x| x.unwrap()) { + /// println!("{} = {:?}", name, value); + /// } + /// # Ok(()) + /// # } + /// ``` + pub const fn enum_values(&self) -> EnumValues { + EnumValues { + key: self, + index: 0, + } + } + + /// Delete key. Key names are not case sensitive. + /// Cannot delete if it has subkeys. + /// Use `delete_subkey_all` for that. + /// + /// # Examples + /// + /// ```no_run + /// # use std::error::Error; + /// # use winreg::RegKey; + /// # use winreg::enums::*; + /// # fn main() -> Result<(), Box> { + /// RegKey::predef(HKEY_CURRENT_USER) + /// .delete_subkey(r"Software\MyProduct\History")?; + /// # Ok(()) + /// # } + /// ``` + pub fn delete_subkey>(&self, path: P) -> io::Result<()> { + self.delete_subkey_with_flags(path, 0) + } + + /// Delete key from the desired platform-specific view of the registry. + /// Key names are not case sensitive. + /// + /// # Examples + /// ```no_run + /// # use std::error::Error; + /// # use winreg::RegKey; + /// # use winreg::enums::*; + /// # fn main() -> Result<(), Box> { + /// // delete the key from the 32-bit registry view + /// RegKey::predef(HKEY_LOCAL_MACHINE) + /// .delete_subkey_with_flags(r"Software\MyProduct\History", KEY_WOW64_32KEY)?; + /// # Ok(()) + /// # } + /// ``` + pub fn delete_subkey_with_flags>( + &self, + path: P, + perms: Registry::REG_SAM_FLAGS, + ) -> io::Result<()> { + let c_path = to_utf16(path); + match unsafe { + Registry::RegDeleteKeyExW( + self.hkey, + c_path.as_ptr(), // This parameter cannot be NULL. + perms, + 0, + ) + } { + 0 => Ok(()), + err => werr!(err), + } + } + + /// Part of `transactions` feature. + #[cfg(feature = "transactions")] + pub fn delete_subkey_transacted>( + &self, + path: P, + t: &Transaction, + ) -> io::Result<()> { + self.delete_subkey_transacted_with_flags(path, t, 0) + } + + /// Part of `transactions` feature. + #[cfg(feature = "transactions")] + pub fn delete_subkey_transacted_with_flags>( + &self, + path: P, + t: &Transaction, + perms: Registry::REG_SAM_FLAGS, + ) -> io::Result<()> { + let c_path = to_utf16(path); + match unsafe { + Registry::RegDeleteKeyTransactedW( + self.hkey, + c_path.as_ptr(), // This parameter cannot be NULL. + perms, + 0, + t.handle, + ptr::null_mut(), + ) + } { + 0 => Ok(()), + err => werr!(err), + } + } + + /// Recursively delete subkey with all its subkeys and values. + /// If `path` is an empty string, the subkeys and values of this key are deleted. + /// + /// # Examples + /// + /// ```no_run + /// # use std::error::Error; + /// # use winreg::RegKey; + /// # use winreg::enums::*; + /// # fn main() -> Result<(), Box> { + /// RegKey::predef(HKEY_CURRENT_USER) + /// .delete_subkey_all("Software\\MyProduct")?; + /// # Ok(()) + /// # } + /// ``` + pub fn delete_subkey_all>(&self, path: P) -> io::Result<()> { + let c_path; + let path_ptr = if path.as_ref().is_empty() { + ptr::null() + } else { + c_path = to_utf16(path); + c_path.as_ptr() + }; + match unsafe { + Registry::RegDeleteTreeW( + self.hkey, + path_ptr, //If this parameter is NULL, the subkeys and values of this key are deleted. + ) + } { + 0 => Ok(()), + err => werr!(err), + } + } + + /// Get a value from registry and seamlessly convert it to the specified rust type + /// with `FromRegValue` implemented (currently `String`, `u32` and `u64`). + /// Will get the `Default` value if `name` is an empty string. + /// + /// # Examples + /// + /// ```no_run + /// # use std::error::Error; + /// # use winreg::RegKey; + /// # use winreg::enums::*; + /// # fn main() -> Result<(), Box> { + /// let hkcu = RegKey::predef(HKEY_CURRENT_USER); + /// let settings = hkcu.open_subkey("Software\\MyProduct\\Settings")?; + /// let server: String = settings.get_value("server")?; + /// let port: u32 = settings.get_value("port")?; + /// # Ok(()) + /// # } + /// ``` + pub fn get_value>(&self, name: N) -> io::Result { + match self.get_raw_value(name) { + Ok(ref val) => FromRegValue::from_reg_value(val), + Err(err) => Err(err), + } + } + + /// Get raw bytes from registry value. + /// Will get the `Default` value if `name` is an empty string. + /// + /// # Examples + /// + /// ```no_run + /// # use std::error::Error; + /// # use winreg::RegKey; + /// # use winreg::enums::*; + /// # fn main() -> Result<(), Box> { + /// let hkcu = RegKey::predef(HKEY_CURRENT_USER); + /// let settings = hkcu.open_subkey("Software\\MyProduct\\Settings")?; + /// let data = settings.get_raw_value("data")?; + /// println!("Bytes: {:?}", data.bytes); + /// # Ok(()) + /// # } + /// ``` + pub fn get_raw_value>(&self, name: N) -> io::Result { + let c_name = to_utf16(name); + let mut buf_len: u32 = 2048; + let mut buf_type: u32 = 0; + let mut buf: Vec = Vec::with_capacity(buf_len as usize); + loop { + match unsafe { + Registry::RegQueryValueExW( + self.hkey, + c_name.as_ptr() as *const u16, + ptr::null_mut(), + &mut buf_type, + buf.as_mut_ptr() as *mut u8, + &mut buf_len, + ) + } { + 0 => { + unsafe { + buf.set_len(buf_len as usize); + } + // minimal check before transmute to RegType + if buf_type > Registry::REG_QWORD { + return werr!(Foundation::ERROR_BAD_FILE_TYPE); + } + let t: RegType = unsafe { transmute(buf_type as u8) }; + return Ok(RegValue { + bytes: buf, + vtype: t, + }); + } + Foundation::ERROR_MORE_DATA => { + buf.reserve(buf_len as usize); + } + err => return werr!(err), + } + } + } + + /// Seamlessly convert a value from a rust type and write it to the registry value + /// with `ToRegValue` trait implemented (currently `String`, `&str`, `u32` and `u64`). + /// Will set the `Default` value if `name` is an empty string. + /// + /// # Examples + /// + /// ```no_run + /// # use std::error::Error; + /// # use winreg::RegKey; + /// # use winreg::enums::*; + /// # fn main() -> Result<(), Box> { + /// let hkcu = RegKey::predef(HKEY_CURRENT_USER); + /// let (settings, disp) = hkcu.create_subkey("Software\\MyProduct\\Settings")?; + /// settings.set_value("server", &"www.example.com")?; + /// settings.set_value("port", &8080u32)?; + /// # Ok(()) + /// # } + /// ``` + pub fn set_value>(&self, name: N, value: &T) -> io::Result<()> { + self.set_raw_value(name, &value.to_reg_value()) + } + + /// Write raw bytes from `RegValue` struct to a registry value. + /// Will set the `Default` value if `name` is an empty string. + /// + /// # Examples + /// + /// ```no_run + /// # use std::error::Error; + /// use winreg::{RegKey, RegValue}; + /// use winreg::enums::*; + /// # fn main() -> Result<(), Box> { + /// let hkcu = RegKey::predef(HKEY_CURRENT_USER); + /// let settings = hkcu.open_subkey("Software\\MyProduct\\Settings")?; + /// let bytes: Vec = vec![1, 2, 3, 5, 8, 13, 21, 34, 55, 89]; + /// let data = RegValue{ vtype: REG_BINARY, bytes: bytes}; + /// settings.set_raw_value("data", &data)?; + /// println!("Bytes: {:?}", data.bytes); + /// # Ok(()) + /// # } + /// ``` + pub fn set_raw_value>(&self, name: N, value: &RegValue) -> io::Result<()> { + let c_name = to_utf16(name); + let t = value.vtype.clone() as u32; + match unsafe { + Registry::RegSetValueExW( + self.hkey, + c_name.as_ptr(), + 0, + t, + value.bytes.as_ptr() as *const u8, + value.bytes.len() as u32, + ) + } { + 0 => Ok(()), + err => werr!(err), + } + } + + /// Delete specified value from registry. + /// Will delete the `Default` value if `name` is an empty string. + /// + /// # Examples + /// + /// ```no_run + /// # use std::error::Error; + /// # use winreg::RegKey; + /// # use winreg::enums::*; + /// # fn main() -> Result<(), Box> { + /// let hkcu = RegKey::predef(HKEY_CURRENT_USER); + /// let settings = hkcu.open_subkey("Software\\MyProduct\\Settings")?; + /// settings.delete_value("data")?; + /// # Ok(()) + /// # } + /// ``` + pub fn delete_value>(&self, name: N) -> io::Result<()> { + let c_name = to_utf16(name); + match unsafe { Registry::RegDeleteValueW(self.hkey, c_name.as_ptr()) } { + 0 => Ok(()), + err => werr!(err), + } + } + + /// Save `Encodable` type to a registry key. + /// Part of `serialization-serde` feature. + /// + /// # Examples + /// + /// ```no_run + /// # use std::error::Error; + /// use serde_derive::Serialize; + /// use winreg::RegKey; + /// use winreg::enums::*; + /// + /// #[derive(Serialize)] + /// struct Rectangle{ + /// x: u32, + /// y: u32, + /// w: u32, + /// h: u32, + /// } + /// + /// #[derive(Serialize)] + /// struct Settings{ + /// current_dir: String, + /// window_pos: Rectangle, + /// show_in_tray: bool, + /// } + /// + /// # fn main() -> Result<(), Box> { + /// let s: Settings = Settings{ + /// current_dir: "C:\\".to_owned(), + /// window_pos: Rectangle{ x:200, y: 100, w: 800, h: 500 }, + /// show_in_tray: false, + /// }; + /// let s_key = RegKey::predef(HKEY_CURRENT_USER) + /// .open_subkey("Software\\MyProduct\\Settings")?; + /// s_key.encode(&s)?; + /// # Ok(()) + /// # } + /// ``` + #[cfg(feature = "serialization-serde")] + pub fn encode(&self, value: &T) -> crate::encoder::EncodeResult<()> { + let mut encoder = crate::encoder::Encoder::from_key(self)?; + value.serialize(&mut encoder)?; + encoder.commit() + } + + /// Load `Decodable` type from a registry key. + /// Part of `serialization-serde` feature. + /// + /// # Examples + /// + /// ```no_run + /// # use std::error::Error; + /// use serde_derive::Deserialize; + /// use winreg::RegKey; + /// use winreg::enums::*; + /// + /// #[derive(Deserialize)] + /// struct Rectangle{ + /// x: u32, + /// y: u32, + /// w: u32, + /// h: u32, + /// } + /// + /// #[derive(Deserialize)] + /// struct Settings{ + /// current_dir: String, + /// window_pos: Rectangle, + /// show_in_tray: bool, + /// } + /// + /// # fn main() -> Result<(), Box> { + /// let s_key = RegKey::predef(HKEY_CURRENT_USER) + /// .open_subkey("Software\\MyProduct\\Settings")?; + /// let s: Settings = s_key.decode()?; + /// # Ok(()) + /// # } + /// ``` + #[cfg(feature = "serialization-serde")] + pub fn decode<'de, T: serde::Deserialize<'de>>(&self) -> crate::decoder::DecodeResult { + let mut decoder = crate::decoder::Decoder::from_key(self)?; + T::deserialize(&mut decoder) + } + + fn close_(&mut self) -> io::Result<()> { + // don't try to close predefined keys + // The root hkey overflows with windows-sys, where HKEY is an alias for isize. + // Cast to u32 to keep comparisons intact. + if self.hkey as usize >= enums::HKEY_CLASSES_ROOT as usize { + return Ok(()); + }; + match unsafe { Registry::RegCloseKey(self.hkey) } { + 0 => Ok(()), + err => werr!(err), + } + } + + pub(crate) fn enum_key(&self, index: u32) -> Option> { + let mut name_len = 2048; + #[allow(clippy::unnecessary_cast)] + let mut name = [0 as u16; 2048]; + match unsafe { + Registry::RegEnumKeyExW( + self.hkey, + index, + name.as_mut_ptr(), + &mut name_len, + ptr::null_mut(), // reserved + ptr::null_mut(), // lpClass: LPWSTR, + ptr::null_mut(), // lpcClass: LPDWORD, + ptr::null_mut(), // lpftLastWriteTime: PFILETIME, + ) + } { + 0 => match String::from_utf16(&name[..name_len as usize]) { + Ok(s) => Some(Ok(s)), + Err(_) => Some(werr!(Foundation::ERROR_INVALID_BLOCK)), + }, + Foundation::ERROR_NO_MORE_ITEMS => None, + err => Some(werr!(err)), + } + } + + pub(crate) fn enum_value(&self, index: u32) -> Option> { + let mut name_len = 2048; + #[allow(clippy::unnecessary_cast)] + let mut name = [0 as u16; 2048]; + + let mut buf_len: u32 = 2048; + let mut buf_type: u32 = 0; + let mut buf: Vec = Vec::with_capacity(buf_len as usize); + loop { + match unsafe { + Registry::RegEnumValueW( + self.hkey, + index, + name.as_mut_ptr(), + &mut name_len, + ptr::null_mut(), // reserved + &mut buf_type, + buf.as_mut_ptr() as *mut u8, + &mut buf_len, + ) + } { + 0 => { + let name = match String::from_utf16(&name[..name_len as usize]) { + Ok(s) => s, + Err(_) => return Some(werr!(Foundation::ERROR_INVALID_DATA)), + }; + unsafe { + buf.set_len(buf_len as usize); + } + // minimal check before transmute to RegType + if buf_type > Registry::REG_QWORD { + return Some(werr!(Foundation::ERROR_BAD_FILE_TYPE)); + } + let t: RegType = unsafe { transmute(buf_type as u8) }; + let value = RegValue { + bytes: buf, + vtype: t, + }; + return Some(Ok((name, value))); + } + Foundation::ERROR_MORE_DATA => { + name_len += 1; //for NULL char + buf.reserve(buf_len as usize); + } + Foundation::ERROR_NO_MORE_ITEMS => return None, + err => return Some(werr!(err)), + } + } + } +} + +impl Drop for RegKey { + fn drop(&mut self) { + self.close_().unwrap_or(()); + } +} + +/// Iterator over subkeys names +pub struct EnumKeys<'key> { + key: &'key RegKey, + index: u32, +} + +impl<'key> Iterator for EnumKeys<'key> { + type Item = io::Result; + + fn next(&mut self) -> Option> { + match self.key.enum_key(self.index) { + v @ Some(_) => { + self.index += 1; + v + } + e @ None => e, + } + } + + fn nth(&mut self, n: usize) -> Option { + self.index += n as u32; + self.next() + } +} + +/// Iterator over values +pub struct EnumValues<'key> { + key: &'key RegKey, + index: u32, +} + +impl<'key> Iterator for EnumValues<'key> { + type Item = io::Result<(String, RegValue)>; + + fn next(&mut self) -> Option> { + match self.key.enum_value(self.index) { + v @ Some(_) => { + self.index += 1; + v + } + e @ None => e, + } + } + + fn nth(&mut self, n: usize) -> Option { + self.index += n as u32; + self.next() + } +} diff -Nru temporalio-1.3.0/vendor/winreg/src/reg_value.rs temporalio-1.3.0/vendor/winreg/src/reg_value.rs --- temporalio-1.3.0/vendor/winreg/src/reg_value.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/src/reg_value.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,42 @@ +// Copyright 2023, Igor Shaula +// Licensed under the MIT License . This file +// may not be copied, modified, or distributed +// except according to those terms. +use crate::enums::*; +use crate::types::FromRegValue; +use std::fmt; + +/// Raw registry value +#[derive(PartialEq)] +pub struct RegValue { + pub bytes: Vec, + pub vtype: RegType, +} + +macro_rules! format_reg_value { + ($e:expr => $t:ident) => { + match $t::from_reg_value($e) { + Ok(val) => format!("{:?}", val), + Err(_) => return Err(fmt::Error), + } + }; +} + +impl fmt::Display for RegValue { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let f_val = match self.vtype { + REG_SZ | REG_EXPAND_SZ | REG_MULTI_SZ => format_reg_value!(self => String), + REG_DWORD => format_reg_value!(self => u32), + REG_QWORD => format_reg_value!(self => u64), + _ => format!("{:?}", self.bytes), //TODO: implement more types + }; + write!(f, "{}", f_val) + } +} + +impl fmt::Debug for RegValue { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "RegValue({:?}: {})", self.vtype, self) + } +} diff -Nru temporalio-1.3.0/vendor/winreg/src/transaction.rs temporalio-1.3.0/vendor/winreg/src/transaction.rs --- temporalio-1.3.0/vendor/winreg/src/transaction.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/src/transaction.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,4 +1,4 @@ -// Copyright 2015, Igor Shaula +// Copyright 2023, Igor Shaula // Licensed under the MIT License . This file // may not be copied, modified, or distributed @@ -8,7 +8,6 @@ //! Part of `transactions` feature. //! //!```no_run -//!extern crate winreg; //!use std::io; //!use winreg::RegKey; //!use winreg::enums::*; @@ -41,20 +40,19 @@ #![cfg(feature = "transactions")] use std::io; use std::ptr; -use winapi::um::handleapi; -use winapi::um::ktmw32; -use winapi::um::winnt; +use windows_sys::Win32::Foundation; +use windows_sys::Win32::Storage::FileSystem; #[derive(Debug)] pub struct Transaction { - pub handle: winnt::HANDLE, + pub handle: Foundation::HANDLE, } impl Transaction { //TODO: add arguments pub fn new() -> io::Result { unsafe { - let handle = ktmw32::CreateTransaction( + let handle = FileSystem::CreateTransaction( ptr::null_mut(), ptr::null_mut(), 0, @@ -63,7 +61,7 @@ 0, ptr::null_mut(), ); - if handle == handleapi::INVALID_HANDLE_VALUE { + if handle == Foundation::INVALID_HANDLE_VALUE { return Err(io::Error::last_os_error()); }; Ok(Transaction { handle }) @@ -72,7 +70,7 @@ pub fn commit(&self) -> io::Result<()> { unsafe { - match ktmw32::CommitTransaction(self.handle) { + match FileSystem::CommitTransaction(self.handle) { 0 => Err(io::Error::last_os_error()), _ => Ok(()), } @@ -81,7 +79,7 @@ pub fn rollback(&self) -> io::Result<()> { unsafe { - match ktmw32::RollbackTransaction(self.handle) { + match FileSystem::RollbackTransaction(self.handle) { 0 => Err(io::Error::last_os_error()), _ => Ok(()), } @@ -90,7 +88,7 @@ fn close_(&mut self) -> io::Result<()> { unsafe { - match handleapi::CloseHandle(self.handle) { + match Foundation::CloseHandle(self.handle) { 0 => Err(io::Error::last_os_error()), _ => Ok(()), } diff -Nru temporalio-1.3.0/vendor/winreg/src/types.rs temporalio-1.3.0/vendor/winreg/src/types.rs --- temporalio-1.3.0/vendor/winreg/src/types.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/src/types.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,18 +1,18 @@ -// Copyright 2015, Igor Shaula +// Copyright 2023, Igor Shaula // Licensed under the MIT License . This file // may not be copied, modified, or distributed // except according to those terms. //! Traits for loading/saving Registry values -use super::enums::*; -use super::winapi::shared::winerror; -use super::RegValue; -use super::{to_utf16, v16_to_v8}; +use crate::common::*; +use crate::enums::*; +use crate::RegValue; use std::ffi::{OsStr, OsString}; use std::io; use std::os::windows::ffi::OsStringExt; use std::slice; +use windows_sys::Win32::Foundation; /// A trait for types that can be loaded from registry values. /// @@ -39,11 +39,11 @@ s.pop(); } if val.vtype == REG_MULTI_SZ { - return Ok(s.replace("\u{0}", "\n")); + return Ok(s.replace('\u{0}', "\n")); } Ok(s) } - _ => werr!(winerror::ERROR_BAD_FILE_TYPE), + _ => werr!(Foundation::ERROR_BAD_FILE_TYPE), } } } @@ -62,7 +62,7 @@ let v: Vec = s.split('\u{0}').map(|x| x.to_owned()).collect(); Ok(v) } - _ => werr!(winerror::ERROR_BAD_FILE_TYPE), + _ => werr!(Foundation::ERROR_BAD_FILE_TYPE), } } } @@ -81,7 +81,7 @@ let s = OsString::from_wide(words); Ok(s) } - _ => werr!(winerror::ERROR_BAD_FILE_TYPE), + _ => werr!(Foundation::ERROR_BAD_FILE_TYPE), } } } @@ -98,11 +98,11 @@ } let v: Vec = words .split(|ch| *ch == 0u16) - .map(|x| OsString::from_wide(x)) + .map(OsString::from_wide) .collect(); Ok(v) } - _ => werr!(winerror::ERROR_BAD_FILE_TYPE), + _ => werr!(Foundation::ERROR_BAD_FILE_TYPE), } } } @@ -112,7 +112,7 @@ match val.vtype { #[allow(clippy::cast_ptr_alignment)] REG_DWORD => Ok(unsafe { *(val.bytes.as_ptr() as *const u32) }), - _ => werr!(winerror::ERROR_BAD_FILE_TYPE), + _ => werr!(Foundation::ERROR_BAD_FILE_TYPE), } } } @@ -122,7 +122,7 @@ match val.vtype { #[allow(clippy::cast_ptr_alignment)] REG_QWORD => Ok(unsafe { *(val.bytes.as_ptr() as *const u64) }), - _ => werr!(winerror::ERROR_BAD_FILE_TYPE), + _ => werr!(Foundation::ERROR_BAD_FILE_TYPE), } } } diff -Nru temporalio-1.3.0/vendor/winreg/tests/common/mod.rs temporalio-1.3.0/vendor/winreg/tests/common/mod.rs --- temporalio-1.3.0/vendor/winreg/tests/common/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/tests/common/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,18 @@ +// Copyright 2023, Igor Shaula +// Licensed under the MIT License . This file +// may not be copied, modified, or distributed +// except according to those terms. +#![macro_use] + +macro_rules! with_key { + ($k:ident, $path:expr => $b:block) => {{ + let mut path = "Software\\WinRegRsTest".to_owned(); + path.push_str($path); + let ($k, _disp) = winreg::RegKey::predef(winreg::enums::HKEY_CURRENT_USER) + .create_subkey(&path).unwrap(); + $b + winreg::RegKey::predef(winreg::enums::HKEY_CURRENT_USER) + .delete_subkey_all(path).unwrap(); + }} +} diff -Nru temporalio-1.3.0/vendor/winreg/tests/reg_key.rs temporalio-1.3.0/vendor/winreg/tests/reg_key.rs --- temporalio-1.3.0/vendor/winreg/tests/reg_key.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/tests/reg_key.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,19 +1,19 @@ -extern crate rand; -extern crate tempfile; -extern crate winapi; -extern crate winreg; -#[cfg(feature = "serialization-serde")] -#[macro_use] -extern crate serde_derive; -use self::rand::Rng; +// Copyright 2023, Igor Shaula +// Licensed under the MIT License . This file +// may not be copied, modified, or distributed +// except according to those terms. +use rand::Rng; use std::collections::HashMap; use std::ffi::{OsStr, OsString}; use tempfile::tempdir; -use winapi::shared::winerror; +use windows_sys::Win32::Foundation; use winreg::enums::*; use winreg::types::FromRegValue; use winreg::{RegKey, RegValue}; +mod common; + #[test] fn test_raw_handle() { let hklm = RegKey::predef(HKEY_LOCAL_MACHINE); @@ -34,7 +34,7 @@ let key_err = RegKey::load_app_key_with_flags(&file_path, KEY_READ, 0).unwrap_err(); assert_eq!( key_err.raw_os_error(), - Some(winerror::ERROR_SHARING_VIOLATION as i32) + Some(Foundation::ERROR_SHARING_VIOLATION as i32) ); } let val2: String = { @@ -73,19 +73,7 @@ assert_eq!(disp, REG_CREATED_NEW_KEY); let (_subkey2, disp2) = hkcu.create_subkey(path).unwrap(); assert_eq!(disp2, REG_OPENED_EXISTING_KEY); - hkcu.delete_subkey_all(&path).unwrap(); -} - -macro_rules! with_key { - ($k:ident, $path:expr => $b:block) => {{ - let mut path = "Software\\WinRegRsTest".to_owned(); - path.push_str($path); - let ($k, _disp) = RegKey::predef(HKEY_CURRENT_USER) - .create_subkey(&path).unwrap(); - $b - RegKey::predef(HKEY_CURRENT_USER) - .delete_subkey_all(path).unwrap(); - }} + hkcu.delete_subkey_all(path).unwrap(); } #[test] @@ -284,81 +272,3 @@ } }); } - -#[cfg(feature = "serialization-serde")] -#[test] -fn test_serialization() { - #[derive(Debug, PartialEq, Serialize, Deserialize)] - struct Rectangle { - x: u32, - y: u32, - w: u32, - h: u32, - } - - #[derive(Debug, PartialEq, Serialize, Deserialize)] - struct Test { - t_bool: bool, - t_u8: u8, - t_u16: u16, - t_u32: u32, - t_u64: u64, - t_usize: usize, - t_struct: Rectangle, - t_string: String, - t_map: HashMap>, - t_i8: i8, - t_i16: i16, - t_i32: i32, - t_i64: i64, - t_isize: isize, - t_f64: f64, - t_f32: f32, - t_char: char, - } - - let mut k1 = HashMap::new(); - k1.insert("val1".to_owned(), 32); - k1.insert("val2".to_owned(), 64); - k1.insert("val3".to_owned(), 128); - - let mut k2 = HashMap::new(); - k2.insert("val1".to_owned(), 256); - k2.insert("val2".to_owned(), 512); - k2.insert("val3".to_owned(), 1024); - - let mut map = HashMap::new(); - map.insert("key1".to_owned(), k1); - map.insert("key2".to_owned(), k2); - - let v1 = Test { - t_bool: false, - t_u8: 127, - t_u16: 32768, - t_u32: 123_456_789, - t_u64: 123_456_789_101_112, - t_usize: 1_234_567_891, - t_struct: Rectangle { - x: 55, - y: 77, - w: 500, - h: 300, - }, - t_map: map, - t_string: "Test123 \n$%^&|+-*/\\()".to_owned(), - t_i8: -123, - t_i16: -2049, - t_i32: 20100, - t_i64: -12_345_678_910, - t_isize: -1_234_567_890, - t_f64: -0.01, - t_f32: 3.15, - t_char: 'a', - }; - - with_key!(key, "Serialization" => { - key.encode(&v1).unwrap(); - let v2: Test = key.decode().unwrap(); - assert_eq!(v1, v2); - }); -} diff -Nru temporalio-1.3.0/vendor/winreg/tests/serialization.rs temporalio-1.3.0/vendor/winreg/tests/serialization.rs --- temporalio-1.3.0/vendor/winreg/tests/serialization.rs 1970-01-01 00:00:00.000000000 +0000 +++ temporalio-1.3.0/vendor/winreg/tests/serialization.rs 2023-10-30 19:40:00.000000000 +0000 @@ -0,0 +1,134 @@ +// Copyright 2023, Igor Shaula +// Licensed under the MIT License . This file +// may not be copied, modified, or distributed +// except according to those terms. +#![cfg(feature = "serialization-serde")] +use serde_derive::{Deserialize, Serialize}; +use std::collections::HashMap; + +mod common; + +#[derive(Debug, Serialize, Deserialize, PartialEq)] +struct Coords { + x: u32, + y: u32, +} + +#[derive(Debug, Serialize, Deserialize, PartialEq)] +struct Size { + w: u32, + h: u32, +} + +#[derive(Debug, Serialize, Deserialize, PartialEq)] +struct Rectangle { + coords: Coords, + size: Size, +} + +#[derive(Debug, PartialEq, Serialize, Deserialize)] +struct AllFields { + t_bool: bool, + t_u8: u8, + t_u16: u16, + t_u32: u32, + t_u64: u64, + t_usize: usize, + t_struct: Rectangle, + t_string: String, + t_map: HashMap>, + t_i8: i8, + t_i16: i16, + t_i32: i32, + t_i64: i64, + t_isize: isize, + t_f64: f64, + t_f32: f32, + t_char: char, + #[serde(with = "serde_bytes")] + t_bytes: Vec, +} + +impl AllFields { + pub fn test_val() -> Self { + let mut k1 = HashMap::new(); + k1.insert("val1".to_owned(), 32); + k1.insert("val2".to_owned(), 64); + k1.insert("val3".to_owned(), 128); + + let mut k2 = HashMap::new(); + k2.insert("val1".to_owned(), 256); + k2.insert("val2".to_owned(), 512); + k2.insert("val3".to_owned(), 1024); + + let mut map = HashMap::new(); + map.insert("key1".to_owned(), k1); + map.insert("key2".to_owned(), k2); + + AllFields { + t_bool: false, + t_u8: 127, + t_u16: 32768, + t_u32: 123_456_789, + t_u64: 123_456_789_101_112, + t_usize: 1_234_567_891, + t_struct: Rectangle { + coords: Coords { x: 55, y: 77 }, + size: Size { w: 500, h: 300 }, + }, + t_map: map, + t_string: "Test123 \n$%^&|+-*/\\()".to_owned(), + t_i8: -123, + t_i16: -2049, + t_i32: 20100, + t_i64: -12_345_678_910, + t_isize: -1_234_567_890, + t_f64: -0.01, + t_f32: 3.15, + t_char: 'a', + t_bytes: vec![0xDE, 0xAD, 0xBE, 0xEF], + } + } +} + +#[derive(Debug, PartialEq, Serialize, Deserialize)] +struct SomeFields { + t_usize: usize, + t_struct: Rectangle, + t_string: String, + t_u32: Option, + t_none: Option, +} + +impl PartialEq for SomeFields { + fn eq(&self, other: &AllFields) -> bool { + *self.t_string == other.t_string + && self.t_usize == other.t_usize + && self.t_struct == other.t_struct + && self.t_u32 == Some(other.t_u32) + && self.t_none.is_none() + } +} + +#[test] +fn test_serialization_some() { + let v1 = AllFields::test_val(); + + with_key!(key, "SerializationSome" => { + key.encode(&v1).unwrap(); + let v2: SomeFields = key.decode().unwrap(); + assert_eq!(v2, v1); + }); +} + +#[test] +fn test_serialization_all() { + let v1 = AllFields::test_val(); + + with_key!(key, "SerializationAll" => { + key.encode(&v1).unwrap(); + let v2: AllFields = key.decode().unwrap(); + assert_eq!(v2, v1); + }); +} diff -Nru temporalio-1.3.0/vendor/xattr/.cargo-checksum.json temporalio-1.3.0/vendor/xattr/.cargo-checksum.json --- temporalio-1.3.0/vendor/xattr/.cargo-checksum.json 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/xattr/.cargo-checksum.json 2023-10-30 19:40:00.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"1ae7bc15ba446183c3eb5a8a368c02be8cd82dcb56e4f3026c86331f36a3e398","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"8b427f5bc501764575e52ba4f9d95673cf8f6d80a86d0d06599852e1a9a20a36","README.md":"f0e781fef97ed5c8bafeeec00cdeb9c7ed68a0bf7bfe3d44d60b92c9c591b32b","src/error.rs":"a212b93e6538a5e6d2abfb1803bc4fbf25220285fe700abd785e0f67cc8eaf09","src/lib.rs":"7b26c557c6bd4866394a5c06911e4ec66d924fb64a8ead43452a527768c88e51","src/sys/bsd.rs":"14f159b84cc0a48c89fbdaa5eee6a4fe0893812ca10ad0f48d59b87f9ac8e47a","src/sys/linux_macos/linux.rs":"688c65425e23446e036ecfe38116f7a2ac7298b164346cbc63f719b431148aa6","src/sys/linux_macos/macos.rs":"18c88ce4e105b7f95c5a2dc968cd0acf046d2956f0c5f5b5a671fa8ddf462ad8","src/sys/linux_macos/mod.rs":"25e6b8908b20ad3449deff196a93719e3741ae7f7341c047b77e01e240d74acb","src/sys/mod.rs":"20d97a0f285e1dda8044daa6b608133cbd2be81307be0075ffdf6d7973e3b21b","src/sys/unsupported.rs":"cb0d5eea04ed27e9205457eeba2db895ac3e44b55763021017c55347a2621047","src/util.rs":"896ef84ce36c43d756e8bc5fd92e7315059fcb04e029db9b6c0408ac13d37751","tests/main.rs":"4e337fc85831629e5e9a9aabbda850beca4de435b89a3cf89b34f23231f7ee86"},"package":"6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc"} \ No newline at end of file +{"files":{"Cargo.toml":"1b9832aa9fdfb820a744225c2c3b498f275afb14b6123caf4f04eff3dae8c3f6","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"8b427f5bc501764575e52ba4f9d95673cf8f6d80a86d0d06599852e1a9a20a36","README.md":"a207638e1dbbd93ad245c0cdcb15a904aa043dfe65adce5a111c791abbbf2165","src/error.rs":"4e8b8e248aac111b056bed44692be0397daf9c34a39829309e58dbf12e0dc7a6","src/lib.rs":"137183bbcf214aa58e7e5b55398549eb71761554290adf822f63e33a9bab6f2d","src/sys/bsd.rs":"aad3d0bfcea2a9714dcaa4bbd15538e7e57eb02de1a7390995a5401607340f1d","src/sys/linux_macos/linux.rs":"6d66255d478f6816f5c82f56d99439440bbba1ac183350095455dd1f4fe48d09","src/sys/linux_macos/macos.rs":"b6653df670a7e5c457c6e788da1b673e6486d577c7b88bbcfb3f743cd0d4af9d","src/sys/linux_macos/mod.rs":"7b1f27fc470dcc0b94ed54e1650c852112b3289f063c0061dbeabea729bcfa8d","src/sys/mod.rs":"97e3fe57adfcc100fe1e63b531c028781a5efdda5c2ef9e674c784df76e50a48","src/sys/unsupported.rs":"53f9b76d760dac52972e848a5b6f17478432d0f9c59acb1016f16dd3285491f7","src/util.rs":"1fec8e2335749540de9d39e822d73e9ea76f22180e153d7bf5ad81365a63d9d4","tests/main.rs":"39dd3f3200afee5d81bab486905f078fa8b321e280e00dae834fe7ebc549c58c"},"package":"f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985"} \ No newline at end of file diff -Nru temporalio-1.3.0/vendor/xattr/Cargo.toml temporalio-1.3.0/vendor/xattr/Cargo.toml --- temporalio-1.3.0/vendor/xattr/Cargo.toml 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/xattr/Cargo.toml 2023-10-30 19:40:00.000000000 +0000 @@ -10,11 +10,13 @@ # See Cargo.toml.orig for the original contents. [package] +edition = "2021" name = "xattr" -version = "0.2.3" +version = "1.0.1" authors = ["Steven Allen "] description = "unix extended filesystem attributes" documentation = "https://docs.rs/xattr" +readme = "README.md" keywords = [ "xattr", "filesystem", @@ -24,7 +26,7 @@ repository = "https://github.com/Stebalien/xattr" [dependencies.libc] -version = "0.2" +version = "0.2.147" [dev-dependencies.tempfile] version = "3" diff -Nru temporalio-1.3.0/vendor/xattr/README.md temporalio-1.3.0/vendor/xattr/README.md --- temporalio-1.3.0/vendor/xattr/README.md 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/xattr/README.md 2023-10-30 19:40:00.000000000 +0000 @@ -1,20 +1,17 @@ xattr ===== -[![Build Status](https://travis-ci.org/Stebalien/xattr.svg?branch=master)](https://travis-ci.org/Stebalien/xattr) -[![Build Status](https://api.cirrus-ci.com/github/Stebalien/xattr.svg)](https://cirrus-ci.com/github/Stebalien/xattr) - A small library for setting, getting, and listing extended attributes. Supported Platforms: Android, Linux, MacOS, FreeBSD, and NetBSD. -API Documentation: https://stebalien.github.com/xattr/xattr/ +API Documentation: https://docs.rs/xattr/latest/xattr/ Unsupported Platforms -------------------------- -This library includes no-op support for unsupported platforms. That is, it will -build on *all* platforms but always fail on unsupported platforms. +This library includes no-op support for unsupported Unix platforms. That is, it will +build on *all* Unix platforms but always fail on unsupported Unix platforms. 1. You can turn this off by disabling the default `unsupported` feature. If you do so, this library will fail to compile on unsupported platforms. diff -Nru temporalio-1.3.0/vendor/xattr/src/error.rs temporalio-1.3.0/vendor/xattr/src/error.rs --- temporalio-1.3.0/vendor/xattr/src/error.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/xattr/src/error.rs 2023-10-30 19:40:00.000000000 +0000 @@ -4,7 +4,7 @@ /// The error type returned on unsupported platforms. /// /// On unsupported platforms, all operations will fail with an `io::Error` with -/// a kind `io::ErrorKind::Other` and an `UnsupportedPlatformError` error as the inner error. +/// a kind `io::ErrorKind::Unsupported` and an `UnsupportedPlatformError` error as the inner error. /// While you *could* check the inner error, it's probably simpler just to check /// `xattr::SUPPORTED_PLATFORM`. /// diff -Nru temporalio-1.3.0/vendor/xattr/src/lib.rs temporalio-1.3.0/vendor/xattr/src/lib.rs --- temporalio-1.3.0/vendor/xattr/src/lib.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/xattr/src/lib.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,10 +1,11 @@ +#![allow(clippy::comparison_chain)] //! A pure-Rust library to manage extended attributes. //! //! It provides support for manipulating extended attributes //! (`xattrs`) on modern Unix filesystems. See the `attr(5)` //! manpage for more details. //! -//! An extension trait [`FileExt`](::FileExt) is provided to directly work with +//! An extension trait [`FileExt`] is provided to directly work with //! standard `File` objects and file descriptors. //! //! NOTE: In case of a symlink as path argument, all methods @@ -25,8 +26,6 @@ //! } //! ``` -extern crate libc; - mod error; mod sys; mod util; diff -Nru temporalio-1.3.0/vendor/xattr/src/sys/bsd.rs temporalio-1.3.0/vendor/xattr/src/sys/bsd.rs --- temporalio-1.3.0/vendor/xattr/src/sys/bsd.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/xattr/src/sys/bsd.rs 2023-10-30 19:40:00.000000000 +0000 @@ -7,8 +7,15 @@ use std::os::unix::io::RawFd; use std::path::Path; -use libc::{c_char, c_int, c_void, size_t, ssize_t, EPERM}; -use util::{allocate_loop, path_to_c}; +use libc::{c_int, c_void, size_t, EPERM}; + +use libc::{ + extattr_delete_fd, extattr_delete_link, extattr_get_fd, extattr_get_link, extattr_list_fd, + extattr_list_link, extattr_set_fd, extattr_set_link, EXTATTR_NAMESPACE_SYSTEM, + EXTATTR_NAMESPACE_USER, +}; + +use crate::util::{allocate_loop, path_to_c}; const EXTATTR_NAMESPACE_USER_STRING: &'static str = "user"; const EXTATTR_NAMESPACE_SYSTEM_STRING: &'static str = "system"; @@ -17,58 +24,6 @@ EXTATTR_NAMESPACE_USER_STRING, EXTATTR_NAMESPACE_SYSTEM_STRING, ]; -const EXTATTR_NAMESPACE_USER: c_int = 1; -const EXTATTR_NAMESPACE_SYSTEM: c_int = 2; - -extern "C" { - pub fn extattr_list_fd( - fd: c_int, - attrnamespace: c_int, - data: *mut c_void, - nbytes: size_t, - ) -> ssize_t; - pub fn extattr_get_fd( - fd: c_int, - attrnamespace: c_int, - attrname: *const c_char, - data: *mut c_void, - nbytes: size_t, - ) -> ssize_t; - pub fn extattr_delete_fd(fd: c_int, attrname: c_int, attrname: *const c_char) -> c_int; - pub fn extattr_set_fd( - fd: c_int, - attrname: c_int, - attrname: *const c_char, - data: *const c_void, - nbytes: size_t, - ) -> ssize_t; - - pub fn extattr_list_link( - path: *const c_char, - attrnamespace: c_int, - data: *mut c_void, - nbytes: size_t, - ) -> ssize_t; - pub fn extattr_get_link( - path: *const c_char, - attrnamespace: c_int, - attrname: *const c_char, - data: *mut c_void, - nbytes: size_t, - ) -> ssize_t; - pub fn extattr_delete_link( - path: *const c_char, - attrname: c_int, - attrname: *const c_char, - ) -> c_int; - pub fn extattr_set_link( - path: *const c_char, - attrname: c_int, - attrname: *const c_char, - data: *const c_void, - nbytes: size_t, - ) -> ssize_t; -} /// An iterator over a set of extended attributes names. pub struct XAttrs { @@ -141,6 +96,8 @@ } } +// This could use libc::extattr_string_to_namespace, but it's awkward because +// that requires nul-terminated strings, which Rust's std is loathe to provide. fn name_to_ns(name: &OsStr) -> io::Result<(c_int, CString)> { let mut groups = name.as_bytes().splitn(2, |&b| b == b'.').take(2); let nsname = match groups.next() { diff -Nru temporalio-1.3.0/vendor/xattr/src/sys/linux_macos/linux.rs temporalio-1.3.0/vendor/xattr/src/sys/linux_macos/linux.rs --- temporalio-1.3.0/vendor/xattr/src/sys/linux_macos/linux.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/xattr/src/sys/linux_macos/linux.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,35 +1,14 @@ -use libc::{c_char, c_int, c_void, size_t, ssize_t}; - -extern "C" { - pub fn flistxattr(fd: c_int, buf: *mut c_char, size: size_t) -> ssize_t; - pub fn fgetxattr(fd: c_int, name: *const c_char, value: *mut c_void, size: size_t) -> ssize_t; - pub fn fremovexattr(fd: c_int, name: *const c_char) -> c_int; - - pub fn llistxattr(path: *const c_char, buf: *mut c_char, size: size_t) -> ssize_t; - pub fn lgetxattr( - path: *const c_char, - name: *const c_char, - value: *mut c_void, - size: size_t, - ) -> ssize_t; - pub fn lremovexattr(path: *const c_char, name: *const c_char) -> c_int; -} +use libc::{c_char, c_int, c_void, size_t}; +pub use libc::{fgetxattr, flistxattr, fremovexattr, lgetxattr, llistxattr, + lremovexattr}; pub unsafe fn fsetxattr( fd: c_int, name: *const c_char, value: *const c_void, size: size_t, -) -> ssize_t { - extern "C" { - fn fsetxattr( - fd: c_int, - name: *const c_char, - value: *const c_void, - size: size_t, - flags: c_int, - ) -> ssize_t; - } +) -> c_int { + use libc::fsetxattr; fsetxattr(fd, name, value, size, 0) } @@ -38,15 +17,7 @@ name: *const c_char, value: *const c_void, size: size_t, -) -> ssize_t { - extern "C" { - fn lsetxattr( - path: *const c_char, - name: *const c_char, - value: *const c_void, - size: size_t, - flags: c_int, - ) -> ssize_t; - } +) -> c_int { + use libc::lsetxattr; lsetxattr(path, name, value, size, 0) } diff -Nru temporalio-1.3.0/vendor/xattr/src/sys/linux_macos/macos.rs temporalio-1.3.0/vendor/xattr/src/sys/linux_macos/macos.rs --- temporalio-1.3.0/vendor/xattr/src/sys/linux_macos/macos.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/xattr/src/sys/linux_macos/macos.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,12 +1,10 @@ -use libc::{c_char, c_int, c_void, size_t, ssize_t, uint32_t}; +use libc::{c_char, c_int, c_void, size_t, ssize_t}; const XATTR_NOFOLLOW: c_int = 0x0001; #[inline(always)] pub unsafe fn fremovexattr(fd: c_int, name: *const c_char) -> c_int { - extern "C" { - fn fremovexattr(fd: c_int, name: *const c_char, options: c_int) -> c_int; - } + use libc::fremovexattr; fremovexattr(fd, name, 0) } @@ -16,17 +14,8 @@ name: *const c_char, value: *const c_void, size: size_t, -) -> ssize_t { - extern "C" { - fn fsetxattr( - fd: c_int, - name: *const c_char, - value: *const c_void, - size: size_t, - position: uint32_t, - options: c_int, - ) -> ssize_t; - } +) -> c_int { + use libc::fsetxattr; fsetxattr(fd, name, value, size, 0, 0) } @@ -37,32 +26,19 @@ value: *mut c_void, size: size_t, ) -> ssize_t { - extern "C" { - fn fgetxattr( - fd: c_int, - name: *const c_char, - value: *mut c_void, - size: size_t, - position: uint32_t, - options: c_int, - ) -> ssize_t; - } + use libc::fgetxattr; fgetxattr(fd, name, value, size, 0, 0) } #[inline(always)] pub unsafe fn flistxattr(fd: c_int, buf: *mut c_char, size: size_t) -> ssize_t { - extern "C" { - fn flistxattr(fd: c_int, buf: *mut c_char, size: size_t, options: c_int) -> ssize_t; - } + use libc::flistxattr; flistxattr(fd, buf, size, 0) } #[inline(always)] pub unsafe fn lremovexattr(path: *const c_char, name: *const c_char) -> c_int { - extern "C" { - fn removexattr(path: *const c_char, name: *const c_char, options: c_int) -> c_int; - } + use libc::removexattr; removexattr(path, name, XATTR_NOFOLLOW) } @@ -72,17 +48,8 @@ name: *const c_char, value: *const c_void, size: size_t, -) -> ssize_t { - extern "C" { - fn setxattr( - path: *const c_char, - name: *const c_char, - value: *const c_void, - size: size_t, - position: uint32_t, - options: c_int, - ) -> ssize_t; - } +) -> c_int { + use libc::setxattr; setxattr(path, name, value, size, 0, XATTR_NOFOLLOW) } @@ -93,28 +60,12 @@ value: *mut c_void, size: size_t, ) -> ssize_t { - extern "C" { - fn getxattr( - path: *const c_char, - name: *const c_char, - value: *mut c_void, - size: size_t, - position: uint32_t, - options: c_int, - ) -> ssize_t; - } + use libc::getxattr; getxattr(path, name, value, size, 0, XATTR_NOFOLLOW) } #[inline(always)] pub unsafe fn llistxattr(path: *const c_char, buf: *mut c_char, size: size_t) -> ssize_t { - extern "C" { - fn listxattr( - path: *const c_char, - buf: *mut c_char, - size: size_t, - options: c_int, - ) -> ssize_t; - } + use libc::listxattr; listxattr(path, buf, size, XATTR_NOFOLLOW) } diff -Nru temporalio-1.3.0/vendor/xattr/src/sys/linux_macos/mod.rs temporalio-1.3.0/vendor/xattr/src/sys/linux_macos/mod.rs --- temporalio-1.3.0/vendor/xattr/src/sys/linux_macos/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/xattr/src/sys/linux_macos/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -19,7 +19,7 @@ use libc::{c_char, c_void, size_t}; -use util::{allocate_loop, name_to_c, path_to_c}; +use crate::util::{allocate_loop, name_to_c, path_to_c}; /// An iterator over a set of extended attributes names. pub struct XAttrs { diff -Nru temporalio-1.3.0/vendor/xattr/src/sys/mod.rs temporalio-1.3.0/vendor/xattr/src/sys/mod.rs --- temporalio-1.3.0/vendor/xattr/src/sys/mod.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/xattr/src/sys/mod.rs 2023-10-30 19:40:00.000000000 +0000 @@ -9,6 +9,7 @@ pub use self::$module::*; #[cfg(any($(target_os = $platform),*))] + #[allow(deprecated)] // other platforms still use ENOATTR pub const ENOATTR: ::libc::c_int = ::libc::ENOATTR; )* diff -Nru temporalio-1.3.0/vendor/xattr/src/sys/unsupported.rs temporalio-1.3.0/vendor/xattr/src/sys/unsupported.rs --- temporalio-1.3.0/vendor/xattr/src/sys/unsupported.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/xattr/src/sys/unsupported.rs 2023-10-30 19:40:00.000000000 +0000 @@ -3,7 +3,7 @@ use std::os::unix::io::RawFd; use std::path::Path; -use UnsupportedPlatformError; +use crate::UnsupportedPlatformError; /// An iterator over a set of extended attributes names. #[derive(Clone, Debug)] @@ -22,56 +22,56 @@ pub fn get_fd(_: RawFd, _: &OsStr) -> io::Result> { Err(io::Error::new( - io::ErrorKind::Other, + io::ErrorKind::Unsupported, UnsupportedPlatformError, )) } pub fn set_fd(_: RawFd, _: &OsStr, _: &[u8]) -> io::Result<()> { Err(io::Error::new( - io::ErrorKind::Other, + io::ErrorKind::Unsupported, UnsupportedPlatformError, )) } pub fn remove_fd(_: RawFd, _: &OsStr) -> io::Result<()> { Err(io::Error::new( - io::ErrorKind::Other, + io::ErrorKind::Unsupported, UnsupportedPlatformError, )) } pub fn list_fd(_: RawFd) -> io::Result { Err(io::Error::new( - io::ErrorKind::Other, + io::ErrorKind::Unsupported, UnsupportedPlatformError, )) } pub fn get_path(_: &Path, _: &OsStr) -> io::Result> { Err(io::Error::new( - io::ErrorKind::Other, + io::ErrorKind::Unsupported, UnsupportedPlatformError, )) } pub fn set_path(_: &Path, _: &OsStr, _: &[u8]) -> io::Result<()> { Err(io::Error::new( - io::ErrorKind::Other, + io::ErrorKind::Unsupported, UnsupportedPlatformError, )) } pub fn remove_path(_: &Path, _: &OsStr) -> io::Result<()> { Err(io::Error::new( - io::ErrorKind::Other, + io::ErrorKind::Unsupported, UnsupportedPlatformError, )) } pub fn list_path(_: &Path) -> io::Result { Err(io::Error::new( - io::ErrorKind::Other, + io::ErrorKind::Unsupported, UnsupportedPlatformError, )) } diff -Nru temporalio-1.3.0/vendor/xattr/src/util.rs temporalio-1.3.0/vendor/xattr/src/util.rs --- temporalio-1.3.0/vendor/xattr/src/util.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/xattr/src/util.rs 2023-10-30 19:40:00.000000000 +0000 @@ -10,7 +10,7 @@ // Need to use this one as libc only defines this on supported platforms. Given // that we want to at least compile on unsupported platforms, we define this in // our platform-specific modules. -use sys::ENOATTR; +use crate::sys::ENOATTR; #[allow(dead_code)] pub fn name_to_c(name: &OsStr) -> io::Result { diff -Nru temporalio-1.3.0/vendor/xattr/tests/main.rs temporalio-1.3.0/vendor/xattr/tests/main.rs --- temporalio-1.3.0/vendor/xattr/tests/main.rs 2023-09-06 08:58:21.000000000 +0000 +++ temporalio-1.3.0/vendor/xattr/tests/main.rs 2023-10-30 19:40:00.000000000 +0000 @@ -1,6 +1,3 @@ -extern crate tempfile; -extern crate xattr; - use std::collections::BTreeSet; use std::ffi::OsStr; use xattr::FileExt; @@ -98,14 +95,16 @@ OsStr::new("user.test1"), OsStr::new("user.test2"), OsStr::new("user.test3"), - ].iter() - .cloned() - .collect(); + ] + .iter() + .cloned() + .collect(); for it in &items { tmp.set_xattr(it, b"value").unwrap(); } - for it in tmp.list_xattr() + for it in tmp + .list_xattr() .unwrap() .filter(|x| x.as_bytes().starts_with(&*b"user.")) {
-

wasi

- -A
Bytecode Alliance project - -

- WASI API Bindings for Rust -

- -

- Crates.io version - Download - docs.rs docs -

-